From c14a6a6a0d0cab37f666795b57f362f257d2983d Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Fri, 8 Nov 2024 01:23:11 +0100 Subject: [PATCH 001/279] GO-4459 Add initial API service scaffolding --- api/apiservice.go | 99 +++++++++++++++++++++++++++++++++++++++ api/handlers.go | 91 +++++++++++++++++++++++++++++++++++ api/middleware.go | 48 +++++++++++++++++++ core/anytype/bootstrap.go | 4 +- go.mod | 7 +++ go.sum | 2 +- 6 files changed, 249 insertions(+), 2 deletions(-) create mode 100644 api/apiservice.go create mode 100644 api/handlers.go create mode 100644 api/middleware.go diff --git a/api/apiservice.go b/api/apiservice.go new file mode 100644 index 000000000..d145ff3c5 --- /dev/null +++ b/api/apiservice.go @@ -0,0 +1,99 @@ +package api + +import ( + "context" + "fmt" + "net/http" + "time" + + "github.com/anyproto/any-sync/app" + "github.com/gin-gonic/gin" +) + +const CName = "api" + +type Service interface { + app.ComponentRunnable +} + +type service struct { + router *gin.Engine + server *http.Server +} + +// TODO: User represents an authenticated user with permissions +type User struct { + ID string + Permissions string // "read-only" or "read-write" +} + +func New() Service { + return &service{} +} + +func (s *service) Init(a *app.App) error { + gin.SetMode(gin.ReleaseMode) + s.router = gin.New() + + // Unprotected routes + auth := s.router.Group("/v1/auth") + { + auth.POST("/displayCode", authDisplayCodeHandler) + auth.GET("/token", authTokenHandler) + } + + // Read-only routes + readOnly := s.router.Group("/v1") + readOnly.Use(AuthMiddleware()) + readOnly.Use(PermissionMiddleware("read-only")) + { + readOnly.GET("/spaces", getSpacesHandler) + readOnly.GET("/spaces/:space_id/members", getSpaceMembersHandler) + readOnly.GET("/spaces/:space_id/objects", getSpaceObjectsHandler) + readOnly.GET("/spaces/:space_id/objects/:object_id", getObjectHandler) + readOnly.GET("/spaces/:space_id/objectTypes", getObjectTypesHandler) + readOnly.GET("/spaces/:space_id/objectTypes/:typeId/templates", getObjectTypeTemplatesHandler) + readOnly.GET("/objects", getObjectsHandler) + } + + // Read-write routes + readWrite := s.router.Group("/v1") + readWrite.Use(AuthMiddleware()) + readWrite.Use(PermissionMiddleware("read-write")) + { + readWrite.POST("/spaces", createSpaceHandler) + readWrite.POST("/spaces/:space_id/objects/:object_id", createObjectHandler) + readWrite.PUT("/spaces/:space_id/objects/:object_id", updateObjectHandler) + } + return nil +} + +func (s *service) Name() string { + return CName +} + +func (s *service) Run(ctx context.Context) error { + s.server = &http.Server{ + Addr: ":31009", + Handler: s.router, + } + + // Start the HTTP server + go func() { + if err := s.server.ListenAndServe(); err != nil && err != http.ErrServerClosed { + fmt.Printf("failed to start HTTP server: %v\n", err) + } + }() + + return nil +} + +func (s *service) Close(ctx context.Context) error { + // Gracefully shut down the server + ctx, cancel := context.WithTimeout(ctx, 5*time.Second) + defer cancel() + if err := s.server.Shutdown(ctx); err != nil { + return fmt.Errorf("server shutdown failed: %w", err) + } + return nil +} diff --git a/api/handlers.go b/api/handlers.go new file mode 100644 index 000000000..c1cc95b08 --- /dev/null +++ b/api/handlers.go @@ -0,0 +1,91 @@ +package api + +import ( + "fmt" + "net/http" + + "github.com/gin-gonic/gin" +) + +// /v1/auth/displayCode [POST] +func authDisplayCodeHandler(c *gin.Context) { + // TODO: Implement the logic for opening a modal window with a code + c.JSON(http.StatusOK, gin.H{"message": "Display code modal opened successfully."}) +} + +// /v1/auth/token [GET] +func authTokenHandler(c *gin.Context) { + // TODO: Implement logic to retrieve an authentication token using a code + c.JSON(http.StatusOK, gin.H{"message": "Authentication token retrieved successfully."}) +} + +// /v1/spaces [GET] +func getSpacesHandler(c *gin.Context) { + // TODO: Implement logic to retrieve a list of spaces + c.JSON(http.StatusOK, gin.H{"message": "List of spaces retrieved successfully."}) +} + +// /v1/spaces [POST] +func createSpaceHandler(c *gin.Context) { + // TODO: Implement logic to create a new space + c.JSON(http.StatusOK, gin.H{"message": "Space created successfully."}) +} + +// /v1/spaces/:space_id/members [GET] +func getSpaceMembersHandler(c *gin.Context) { + spaceID := c.Param("space_id") + // TODO: Implement logic to retrieve members of a space + c.JSON(http.StatusOK, gin.H{"message": fmt.Sprintf("Members of space %s retrieved successfully.", spaceID)}) +} + +// /v1/spaces/:space_id/objects [GET] +func getSpaceObjectsHandler(c *gin.Context) { + spaceID := c.Param("space_id") + // TODO: Implement logic to retrieve objects in a space + c.JSON(http.StatusOK, gin.H{"message": fmt.Sprintf("Objects in space %s retrieved successfully.", spaceID)}) +} + +// /v1/spaces/:space_id/objects/:object_id [GET] +func getObjectHandler(c *gin.Context) { + spaceID := c.Param("space_id") + objectID := c.Param("object_id") + // TODO: Implement logic to retrieve a specific object + c.JSON(http.StatusOK, gin.H{"message": fmt.Sprintf("Object %s in space %s retrieved successfully.", objectID, spaceID)}) +} + +// /v1/spaces/:space_id/objects/:object_id [POST] +func createObjectHandler(c *gin.Context) { + spaceID := c.Param("space_id") + objectID := c.Param("object_id") + // TODO: Implement logic to create a new object + c.JSON(http.StatusOK, gin.H{"message": fmt.Sprintf("Object %s in space %s created successfully.", objectID, spaceID)}) +} + +// /v1/spaces/:space_id/objects/:object_id [PUT] +func updateObjectHandler(c *gin.Context) { + spaceID := c.Param("space_id") + objectID := c.Param("object_id") + // TODO: Implement logic to update an existing object + c.JSON(http.StatusOK, gin.H{"message": fmt.Sprintf("Object %s in space %s updated successfully.", objectID, spaceID)}) +} + +// /v1/spaces/:space_id/objectTypes [GET] +func getObjectTypesHandler(c *gin.Context) { + spaceID := c.Param("space_id") + // TODO: Implement logic to retrieve object types in a space + c.JSON(http.StatusOK, gin.H{"message": fmt.Sprintf("Object types in space %s retrieved successfully.", spaceID)}) +} + +// /v1/spaces/:space_id/objectTypes/:typeId/templates [GET] +func getObjectTypeTemplatesHandler(c *gin.Context) { + spaceID := c.Param("space_id") + typeID := c.Param("typeId") + // TODO: Implement logic to retrieve templates for an object type + c.JSON(http.StatusOK, gin.H{"message": fmt.Sprintf("Templates for object type %s in space %s retrieved successfully.", typeID, spaceID)}) +} + +// /v1/objects [GET] +func getObjectsHandler(c *gin.Context) { + // TODO: Implement logic to search and retrieve objects across all spaces + c.JSON(http.StatusOK, gin.H{"message": "Objects retrieved successfully."}) +} diff --git a/api/middleware.go b/api/middleware.go new file mode 100644 index 000000000..9b88bfc58 --- /dev/null +++ b/api/middleware.go @@ -0,0 +1,48 @@ +package api + +import ( + "net/http" + + "github.com/gin-gonic/gin" +) + +// Middleware to authenticate requests and add user info to context +func AuthMiddleware() gin.HandlerFunc { + return func(c *gin.Context) { + token := c.GetHeader("Authorization") + if token == "" { + c.AbortWithStatusJSON(http.StatusUnauthorized, gin.H{"error": "Unauthorized"}) + return + } + + // TODO: Validate the token and retrieve user information; this is mock example + user := &User{ + ID: "user123", + Permissions: "read-only", // or "read-only" + } + + // Add the user to the context + c.Set("user", user) + c.Next() + } +} + +// Middleware to check permissions +func PermissionMiddleware(requiredPermission string) gin.HandlerFunc { + return func(c *gin.Context) { + user, exists := c.Get("user") + if !exists { + c.AbortWithStatusJSON(http.StatusUnauthorized, gin.H{"error": "Unauthorized"}) + return + } + + u := user.(*User) + if requiredPermission == "read-write" && u.Permissions != "read-write" { + c.AbortWithStatusJSON(http.StatusForbidden, gin.H{"error": "Forbidden: write access required"}) + return + } + + // For read-only access, both "read-only" and "read-write" permissions are acceptable + c.Next() + } +} diff --git a/core/anytype/bootstrap.go b/core/anytype/bootstrap.go index 815de9897..9a98a4df1 100644 --- a/core/anytype/bootstrap.go +++ b/core/anytype/bootstrap.go @@ -31,6 +31,7 @@ import ( "github.com/anyproto/any-sync/nameservice/nameserviceclient" "github.com/anyproto/any-sync/paymentservice/paymentserviceclient" + "github.com/anyproto/anytype-heart/api" "github.com/anyproto/anytype-heart/core/acl" "github.com/anyproto/anytype-heart/core/anytype/account" "github.com/anyproto/anytype-heart/core/anytype/config" @@ -314,7 +315,8 @@ func Bootstrap(a *app.App, components ...app.Component) { Register(payments.New()). Register(paymentscache.New()). Register(peerstatus.New()). - Register(lastused.New()) + Register(lastused.New()). + Register(api.New()) } func MiddlewareVersion() string { diff --git a/go.mod b/go.mod index b37eef3c5..acae47705 100644 --- a/go.mod +++ b/go.mod @@ -29,6 +29,7 @@ require ( github.com/dsoprea/go-exif/v3 v3.0.1 github.com/dsoprea/go-jpeg-image-structure/v2 v2.0.0-20210512043942-b434301c6836 github.com/ethereum/go-ethereum v1.13.15 + github.com/gin-gonic/gin v1.6.3 github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8 github.com/go-chi/chi/v5 v5.0.13 github.com/go-shiori/go-readability v0.0.0-20220215145315-dd6828d2f09b @@ -167,10 +168,14 @@ require ( github.com/flopp/go-findfont v0.1.0 // indirect github.com/fogleman/gg v1.3.0 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect + github.com/gin-contrib/sse v0.1.0 // indirect github.com/go-errors/errors v1.4.2 // indirect github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.3.0 // indirect + github.com/go-playground/locales v0.13.0 // indirect + github.com/go-playground/universal-translator v0.17.0 // indirect + github.com/go-playground/validator/v10 v10.2.0 // indirect github.com/go-shiori/dom v0.0.0-20210627111528-4e4722cd0d65 // indirect github.com/go-task/slim-sprig/v3 v3.0.0 // indirect github.com/go-xmlfmt/xmlfmt v0.0.0-20191208150333-d5b6f63a941b // indirect @@ -209,6 +214,7 @@ require ( github.com/jinzhu/copier v0.3.5 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/cpuid/v2 v2.2.8 // indirect + github.com/leodido/go-urn v1.2.0 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect @@ -260,6 +266,7 @@ require ( github.com/tklauser/numcpus v0.6.1 // indirect github.com/tyler-smith/go-bip39 v1.1.0 // indirect github.com/uber/jaeger-lib v2.4.1+incompatible // indirect + github.com/ugorji/go/codec v1.1.7 // indirect github.com/whyrusleeping/chunker v0.0.0-20181014151217-fe64bd25879f // indirect github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f // indirect github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect diff --git a/go.sum b/go.sum index 00dc39c05..597df0bbb 100644 --- a/go.sum +++ b/go.sum @@ -371,6 +371,7 @@ github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= +github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q= github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= @@ -1395,7 +1396,6 @@ github.com/uber/jaeger-client-go v2.30.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMW github.com/uber/jaeger-lib v2.4.1+incompatible h1:td4jdvLcExb4cBISKIpHuGoVXh+dVKhn2Um6rjCsSsg= github.com/uber/jaeger-lib v2.4.1+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= -github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/ugorji/go/codec v1.1.7 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs= From 6923257979c000538aaf0e63d7318b2c841c5b81 Mon Sep 17 00:00:00 2001 From: AnastasiaShemyakinskaya Date: Mon, 11 Nov 2024 17:12:52 +0100 Subject: [PATCH 002/279] GO-4406: add original creation date Signed-off-by: AnastasiaShemyakinskaya --- core/block/object/objectcreator/installer.go | 3 +++ core/block/object/objectcreator/object_type.go | 3 +++ core/block/object/objectcreator/relation.go | 3 +++ core/block/object/objectcreator/relation_option.go | 3 +++ 4 files changed, 12 insertions(+) diff --git a/core/block/object/objectcreator/installer.go b/core/block/object/objectcreator/installer.go index 1fa2156b4..0619eaf3a 100644 --- a/core/block/object/objectcreator/installer.go +++ b/core/block/object/objectcreator/installer.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "strings" + "time" "github.com/anyproto/any-sync/commonspace/object/tree/treestorage" "github.com/gogo/protobuf/types" @@ -196,6 +197,7 @@ func (s *service) reinstallBundledObjects(ctx context.Context, sourceSpace clien st.SetDetailAndBundledRelation(bundle.RelationKeyIsUninstalled, pbtypes.Bool(false)) st.SetDetailAndBundledRelation(bundle.RelationKeyIsDeleted, pbtypes.Bool(false)) st.SetDetailAndBundledRelation(bundle.RelationKeyIsArchived, pbtypes.Bool(false)) + st.SetOriginalCreatedTimestamp(time.Now().Unix()) typeKey = domain.TypeKey(st.UniqueKeyInternal()) ids = append(ids, id) @@ -237,6 +239,7 @@ func (s *service) prepareDetailsForInstallingObject( details.Fields[bundle.RelationKeySpaceId.String()] = pbtypes.String(spaceID) details.Fields[bundle.RelationKeySourceObject.String()] = pbtypes.String(sourceId) details.Fields[bundle.RelationKeyIsReadonly.String()] = pbtypes.Bool(false) + details.Fields[bundle.RelationKeyCreatedDate.String()] = pbtypes.Int64(time.Now().Unix()) if isNewSpace { lastused.SetLastUsedDateForInitialObjectType(sourceId, details) diff --git a/core/block/object/objectcreator/object_type.go b/core/block/object/objectcreator/object_type.go index 23df89b7e..f93767d96 100644 --- a/core/block/object/objectcreator/object_type.go +++ b/core/block/object/objectcreator/object_type.go @@ -43,6 +43,9 @@ func (s *service) createObjectType(ctx context.Context, space clientspace.Space, createState := state.NewDocWithUniqueKey("", nil, uniqueKey).(*state.State) createState.SetDetails(object) + if createDate := pbtypes.GetInt64(details, bundle.RelationKeyCreatedDate.String()); createDate != 0 { + createState.SetOriginalCreatedTimestamp(createDate) + } id, newDetails, err = s.CreateSmartBlockFromStateInSpace(ctx, space, []domain.TypeKey{bundle.TypeKeyObjectType}, createState) if err != nil { return "", nil, fmt.Errorf("create smartblock from state: %w", err) diff --git a/core/block/object/objectcreator/relation.go b/core/block/object/objectcreator/relation.go index be2ad63b3..b74ebe7bd 100644 --- a/core/block/object/objectcreator/relation.go +++ b/core/block/object/objectcreator/relation.go @@ -58,5 +58,8 @@ func (s *service) createRelation(ctx context.Context, space clientspace.Space, d createState := state.NewDocWithUniqueKey("", nil, uniqueKey).(*state.State) createState.SetDetails(object) + if createDate := pbtypes.GetInt64(details, bundle.RelationKeyCreatedDate.String()); createDate != 0 { + createState.SetOriginalCreatedTimestamp(createDate) + } return s.CreateSmartBlockFromStateInSpace(ctx, space, []domain.TypeKey{bundle.TypeKeyRelation}, createState) } diff --git a/core/block/object/objectcreator/relation_option.go b/core/block/object/objectcreator/relation_option.go index b799edf4d..169a8d415 100644 --- a/core/block/object/objectcreator/relation_option.go +++ b/core/block/object/objectcreator/relation_option.go @@ -40,6 +40,9 @@ func (s *service) createRelationOption(ctx context.Context, space clientspace.Sp createState := state.NewDocWithUniqueKey("", nil, uniqueKey).(*state.State) createState.SetDetails(object) + if createDate := pbtypes.GetInt64(details, bundle.RelationKeyCreatedDate.String()); createDate != 0 { + createState.SetOriginalCreatedTimestamp(createDate) + } return s.CreateSmartBlockFromStateInSpace(ctx, space, []domain.TypeKey{bundle.TypeKeyRelationOption}, createState) } From 68517354af897d5bd04050d3f900da75e47fa740 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Sat, 16 Nov 2024 22:25:37 +0100 Subject: [PATCH 003/279] GO-4459 Move api to cmd and add auth + spaces handler --- api/apiservice.go | 99 ---------------- api/handlers.go | 91 --------------- cmd/api/handlers.go | 206 +++++++++++++++++++++++++++++++++ cmd/api/helper.go | 64 ++++++++++ cmd/api/main.go | 113 ++++++++++++++++++ {api => cmd/api}/middleware.go | 4 +- cmd/grpcserver/grpc.go | 6 + core/anytype/bootstrap.go | 4 +- 8 files changed, 392 insertions(+), 195 deletions(-) delete mode 100644 api/apiservice.go delete mode 100644 api/handlers.go create mode 100644 cmd/api/handlers.go create mode 100644 cmd/api/helper.go create mode 100644 cmd/api/main.go rename {api => cmd/api}/middleware.go (88%) diff --git a/api/apiservice.go b/api/apiservice.go deleted file mode 100644 index d145ff3c5..000000000 --- a/api/apiservice.go +++ /dev/null @@ -1,99 +0,0 @@ -package api - -import ( - "context" - "fmt" - "net/http" - "time" - - "github.com/anyproto/any-sync/app" - "github.com/gin-gonic/gin" -) - -const CName = "api" - -type Service interface { - app.ComponentRunnable -} - -type service struct { - router *gin.Engine - server *http.Server -} - -// TODO: User represents an authenticated user with permissions -type User struct { - ID string - Permissions string // "read-only" or "read-write" -} - -func New() Service { - return &service{} -} - -func (s *service) Init(a *app.App) error { - gin.SetMode(gin.ReleaseMode) - s.router = gin.New() - - // Unprotected routes - auth := s.router.Group("/v1/auth") - { - auth.POST("/displayCode", authDisplayCodeHandler) - auth.GET("/token", authTokenHandler) - } - - // Read-only routes - readOnly := s.router.Group("/v1") - readOnly.Use(AuthMiddleware()) - readOnly.Use(PermissionMiddleware("read-only")) - { - readOnly.GET("/spaces", getSpacesHandler) - readOnly.GET("/spaces/:space_id/members", getSpaceMembersHandler) - readOnly.GET("/spaces/:space_id/objects", getSpaceObjectsHandler) - readOnly.GET("/spaces/:space_id/objects/:object_id", getObjectHandler) - readOnly.GET("/spaces/:space_id/objectTypes", getObjectTypesHandler) - readOnly.GET("/spaces/:space_id/objectTypes/:typeId/templates", getObjectTypeTemplatesHandler) - readOnly.GET("/objects", getObjectsHandler) - } - - // Read-write routes - readWrite := s.router.Group("/v1") - readWrite.Use(AuthMiddleware()) - readWrite.Use(PermissionMiddleware("read-write")) - { - readWrite.POST("/spaces", createSpaceHandler) - readWrite.POST("/spaces/:space_id/objects/:object_id", createObjectHandler) - readWrite.PUT("/spaces/:space_id/objects/:object_id", updateObjectHandler) - } - return nil -} - -func (s *service) Name() string { - return CName -} - -func (s *service) Run(ctx context.Context) error { - s.server = &http.Server{ - Addr: ":31009", - Handler: s.router, - } - - // Start the HTTP server - go func() { - if err := s.server.ListenAndServe(); err != nil && err != http.ErrServerClosed { - fmt.Printf("failed to start HTTP server: %v\n", err) - } - }() - - return nil -} - -func (s *service) Close(ctx context.Context) error { - // Gracefully shut down the server - ctx, cancel := context.WithTimeout(ctx, 5*time.Second) - defer cancel() - if err := s.server.Shutdown(ctx); err != nil { - return fmt.Errorf("server shutdown failed: %w", err) - } - return nil -} diff --git a/api/handlers.go b/api/handlers.go deleted file mode 100644 index c1cc95b08..000000000 --- a/api/handlers.go +++ /dev/null @@ -1,91 +0,0 @@ -package api - -import ( - "fmt" - "net/http" - - "github.com/gin-gonic/gin" -) - -// /v1/auth/displayCode [POST] -func authDisplayCodeHandler(c *gin.Context) { - // TODO: Implement the logic for opening a modal window with a code - c.JSON(http.StatusOK, gin.H{"message": "Display code modal opened successfully."}) -} - -// /v1/auth/token [GET] -func authTokenHandler(c *gin.Context) { - // TODO: Implement logic to retrieve an authentication token using a code - c.JSON(http.StatusOK, gin.H{"message": "Authentication token retrieved successfully."}) -} - -// /v1/spaces [GET] -func getSpacesHandler(c *gin.Context) { - // TODO: Implement logic to retrieve a list of spaces - c.JSON(http.StatusOK, gin.H{"message": "List of spaces retrieved successfully."}) -} - -// /v1/spaces [POST] -func createSpaceHandler(c *gin.Context) { - // TODO: Implement logic to create a new space - c.JSON(http.StatusOK, gin.H{"message": "Space created successfully."}) -} - -// /v1/spaces/:space_id/members [GET] -func getSpaceMembersHandler(c *gin.Context) { - spaceID := c.Param("space_id") - // TODO: Implement logic to retrieve members of a space - c.JSON(http.StatusOK, gin.H{"message": fmt.Sprintf("Members of space %s retrieved successfully.", spaceID)}) -} - -// /v1/spaces/:space_id/objects [GET] -func getSpaceObjectsHandler(c *gin.Context) { - spaceID := c.Param("space_id") - // TODO: Implement logic to retrieve objects in a space - c.JSON(http.StatusOK, gin.H{"message": fmt.Sprintf("Objects in space %s retrieved successfully.", spaceID)}) -} - -// /v1/spaces/:space_id/objects/:object_id [GET] -func getObjectHandler(c *gin.Context) { - spaceID := c.Param("space_id") - objectID := c.Param("object_id") - // TODO: Implement logic to retrieve a specific object - c.JSON(http.StatusOK, gin.H{"message": fmt.Sprintf("Object %s in space %s retrieved successfully.", objectID, spaceID)}) -} - -// /v1/spaces/:space_id/objects/:object_id [POST] -func createObjectHandler(c *gin.Context) { - spaceID := c.Param("space_id") - objectID := c.Param("object_id") - // TODO: Implement logic to create a new object - c.JSON(http.StatusOK, gin.H{"message": fmt.Sprintf("Object %s in space %s created successfully.", objectID, spaceID)}) -} - -// /v1/spaces/:space_id/objects/:object_id [PUT] -func updateObjectHandler(c *gin.Context) { - spaceID := c.Param("space_id") - objectID := c.Param("object_id") - // TODO: Implement logic to update an existing object - c.JSON(http.StatusOK, gin.H{"message": fmt.Sprintf("Object %s in space %s updated successfully.", objectID, spaceID)}) -} - -// /v1/spaces/:space_id/objectTypes [GET] -func getObjectTypesHandler(c *gin.Context) { - spaceID := c.Param("space_id") - // TODO: Implement logic to retrieve object types in a space - c.JSON(http.StatusOK, gin.H{"message": fmt.Sprintf("Object types in space %s retrieved successfully.", spaceID)}) -} - -// /v1/spaces/:space_id/objectTypes/:typeId/templates [GET] -func getObjectTypeTemplatesHandler(c *gin.Context) { - spaceID := c.Param("space_id") - typeID := c.Param("typeId") - // TODO: Implement logic to retrieve templates for an object type - c.JSON(http.StatusOK, gin.H{"message": fmt.Sprintf("Templates for object type %s in space %s retrieved successfully.", typeID, spaceID)}) -} - -// /v1/objects [GET] -func getObjectsHandler(c *gin.Context) { - // TODO: Implement logic to search and retrieve objects across all spaces - c.JSON(http.StatusOK, gin.H{"message": "Objects retrieved successfully."}) -} diff --git a/cmd/api/handlers.go b/cmd/api/handlers.go new file mode 100644 index 000000000..69025afb6 --- /dev/null +++ b/cmd/api/handlers.go @@ -0,0 +1,206 @@ +package api + +import ( + "context" + "math/rand" + "net/http" + + "github.com/gin-gonic/gin" + "github.com/gogo/protobuf/types" + + "github.com/anyproto/anytype-heart/pb" + "github.com/anyproto/anytype-heart/pkg/lib/bundle" + "github.com/anyproto/anytype-heart/pkg/lib/pb/model" + "github.com/anyproto/anytype-heart/util/pbtypes" +) + +type NameRequest struct { + Name string `json:"name"` +} + +// /v1/auth/displayCode [POST] +func (a *ApiServer) authDisplayCodeHandler(c *gin.Context) { + // Call AccountLocalLinkNewChallenge to display code modal + ctx := context.Background() + resp := a.mw.AccountLocalLinkNewChallenge(ctx, &pb.RpcAccountLocalLinkNewChallengeRequest{"api-test"}) + + if resp.Error.Code != pb.RpcAccountLocalLinkNewChallengeResponseError_NULL { + c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to generate a new challenge."}) + } + + c.JSON(http.StatusOK, gin.H{"challengeId": resp.ChallengeId}) +} + +// /v1/auth/token [GET] +func (a *ApiServer) authTokenHandler(c *gin.Context) { + // Call AccountLocalLinkSolveChallenge to retrieve session token and app key + resp := a.mw.AccountLocalLinkSolveChallenge(context.Background(), &pb.RpcAccountLocalLinkSolveChallengeRequest{ + ChallengeId: c.Query("challengeId"), + Answer: c.Query("code"), + }) + + if resp.Error.Code != pb.RpcAccountLocalLinkSolveChallengeResponseError_NULL { + c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to authenticate user."}) + return + } + + c.JSON(http.StatusOK, gin.H{ + "sessionToken": resp.SessionToken, + "appKey": resp.AppKey, + }) +} + +// /v1/spaces [GET] +func (a *ApiServer) getSpacesHandler(c *gin.Context) { + // Call ObjectSearch for all objects of type spaceView + resp := a.mw.ObjectSearch(context.Background(), &pb.RpcObjectSearchRequest{ + SpaceId: a.accountInfo.TechSpaceId, + Filters: []*model.BlockContentDataviewFilter{ + { + RelationKey: bundle.RelationKeyLayout.String(), + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.Int64(int64(model.ObjectType_spaceView)), + }, + { + RelationKey: bundle.RelationKeySpaceLocalStatus.String(), + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.Int64(int64(model.SpaceStatus_Ok)), + }, + }, + Keys: []string{"id", "spaceId", "name", "description", "snippet", "iconEmoji", "iconImage", "iconOption", "relationFormat", "type", "layout", "isHidden", "isArchived", "isReadonly", "isDeleted", "isFavorite", "done", "fileExt", "fileMimeType", "sizeInBytes", "restrictions", "defaultTemplateId", "createdDate", "spaceDashboardId", "spaceAccountStatus", "spaceLocalStatus", "spaceAccessType", "readersLimit", "writersLimit", "targetSpaceId", "creator", "chatId", "identity", "participantPermissions", "participantStatus", "globalName"}, + }) + if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { + c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to retrieve list of spaces."}) + return + } + c.JSON(http.StatusOK, gin.H{"spaces": resp.Records}) +} + +// /v1/spaces [POST] +func (a *ApiServer) createSpaceHandler(c *gin.Context) { + // Create new workspace with a random icon and import default usecase + nameRequest := NameRequest{} + if err := c.BindJSON(&nameRequest); err != nil { + c.JSON(http.StatusBadRequest, gin.H{"message": "Invalid JSON"}) + return + } + name := nameRequest.Name + iconOption := rand.Intn(13) + + resp := a.mw.WorkspaceCreate(context.Background(), &pb.RpcWorkspaceCreateRequest{ + Details: &types.Struct{ + Fields: map[string]*types.Value{ + "iconOption": {Kind: &types.Value_NumberValue{NumberValue: float64(iconOption)}}, + "name": {Kind: &types.Value_StringValue{StringValue: name}}, + "spaceDashboardId": {Kind: &types.Value_StringValue{ + StringValue: "lastOpened", + }}, + }, + }, + UseCase: 1, + WithChat: true, + }) + + if resp.Error.Code != pb.RpcWorkspaceCreateResponseError_NULL { + c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to create a new space."}) + return + } + + c.JSON(http.StatusOK, gin.H{"spaceId": resp.SpaceId, "name": name, "iconOption": iconOption}) +} + +// /v1/spaces/:space_id/members [GET] +func (a *ApiServer) getSpaceMembersHandler(c *gin.Context) { + // Call ObjectSearch for all objects of type participant + spaceId := c.Param("space_id") + + resp := a.mw.ObjectSearch(context.Background(), &pb.RpcObjectSearchRequest{ + SpaceId: spaceId, + Filters: []*model.BlockContentDataviewFilter{ + { + RelationKey: bundle.RelationKeyLayout.String(), + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.Int64(int64(model.ObjectType_participant)), + }, + }, + }) + + if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { + c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to retrieve list of members."}) + return + } + + // Convert the response to a list of members with their details: type, identity, name, role + members := []gin.H{} + for _, record := range resp.Records { + identity := record.Fields["identity"].GetStringValue() + name := record.Fields["name"].GetStringValue() + role := record.Fields["participantPermissions"].GetNumberValue() + typeName, err := a.resolveTypeToName(spaceId, record.Fields["type"].GetStringValue()) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to resolve type to name."}) + return + } + + members = append(members, gin.H{ + "type": typeName, + "identity": identity, + "name": name, + "role": model.ParticipantPermissions_name[int32(role)], + }) + } + + c.JSON(http.StatusOK, gin.H{"members": members}) +} + +// /v1/spaces/:space_id/objects [GET] +func (a *ApiServer) getSpaceObjectsHandler(c *gin.Context) { + spaceID := c.Param("space_id") + // TODO: Implement logic to retrieve objects in a space + c.JSON(http.StatusNotImplemented, gin.H{"message": "Not implemented yet", "space_id": spaceID}) +} + +// /v1/spaces/:space_id/objects/:object_id [GET] +func (a *ApiServer) getObjectHandler(c *gin.Context) { + spaceID := c.Param("space_id") + objectID := c.Param("object_id") + // TODO: Implement logic to retrieve a specific object + c.JSON(http.StatusNotImplemented, gin.H{"message": "Not implemented yet", "space_id": spaceID, "object_id": objectID}) +} + +// /v1/spaces/:space_id/objects/:object_id [POST] +func (a *ApiServer) createObjectHandler(c *gin.Context) { + spaceID := c.Param("space_id") + objectID := c.Param("object_id") + // TODO: Implement logic to create a new object + c.JSON(http.StatusNotImplemented, gin.H{"message": "Not implemented yet", "space_id": spaceID, "object_id": objectID}) +} + +// /v1/spaces/:space_id/objects/:object_id [PUT] +func (a *ApiServer) updateObjectHandler(c *gin.Context) { + spaceID := c.Param("space_id") + objectID := c.Param("object_id") + // TODO: Implement logic to update an existing object + c.JSON(http.StatusNotImplemented, gin.H{"message": "Not implemented yet", "space_id": spaceID, "object_id": objectID}) +} + +// /v1/spaces/:space_id/objectTypes [GET] +func (a *ApiServer) getObjectTypesHandler(c *gin.Context) { + spaceID := c.Param("space_id") + // TODO: Implement logic to retrieve object types in a space + c.JSON(http.StatusNotImplemented, gin.H{"message": "Not implemented yet", "space_id": spaceID}) +} + +// /v1/spaces/:space_id/objectTypes/:typeId/templates [GET] +func (a *ApiServer) getObjectTypeTemplatesHandler(c *gin.Context) { + spaceID := c.Param("space_id") + typeID := c.Param("typeId") + // TODO: Implement logic to retrieve templates for an object type + c.JSON(http.StatusNotImplemented, gin.H{"message": "Not implemented yet", "space_id": spaceID, "typeId": typeID}) +} + +// /v1/objects [GET] +func (a *ApiServer) getObjectsHandler(c *gin.Context) { + // TODO: Implement logic to search and retrieve objects across all spaces + c.JSON(http.StatusNotImplemented, gin.H{"message": "Not implemented yet"}) +} diff --git a/cmd/api/helper.go b/cmd/api/helper.go new file mode 100644 index 000000000..c167e231d --- /dev/null +++ b/cmd/api/helper.go @@ -0,0 +1,64 @@ +package api + +import ( + "context" + + "github.com/anyproto/anytype-heart/pb" + "github.com/anyproto/anytype-heart/pkg/lib/bundle" + "github.com/anyproto/anytype-heart/pkg/lib/pb/model" + "github.com/anyproto/anytype-heart/util/pbtypes" +) + +// func (a *ApiServer) setInitialParameters(ctx context.Context) { +// resp := a.mw.InitialSetParameters(ctx, &pb.RpcInitialSetParametersRequest{ +// DoNotSaveLogs: false, +// DoNotSendLogs: false, +// DoNotSendTelemetry: false, +// LogLevel: "", +// Platform: "", +// Version: "0.0.1", +// Workdir: "", +// }) +// +// if resp.Error.Code != pb.RpcInitialSetParametersResponseError_NULL { +// fmt.Printf("failed to set initial parameters: %v\n", resp.Error.Description) +// return +// } +// } +// +// func (a *ApiServer) getAccountInfo(ctx context.Context, accountId string) { +// resp := a.mw.AccountSelect(ctx, &pb.RpcAccountSelectRequest{ +// Id: accountId, +// }) +// +// if resp.Error.Code != pb.RpcAccountSelectResponseError_NULL { +// fmt.Printf("failed to get account info: %v\n", resp.Error.Description) +// return +// } +// +// a.accountInfo = resp.Account.Info +// } + +func (a *ApiServer) resolveTypeToName(spaceId string, typeId string) (string, *pb.RpcObjectSearchResponseError) { + // Call ObjectSearch for object of specified type and return the name + resp := a.mw.ObjectSearch(context.Background(), &pb.RpcObjectSearchRequest{ + SpaceId: spaceId, + Filters: []*model.BlockContentDataviewFilter{ + { + RelationKey: bundle.RelationKeyId.String(), + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.String(typeId), + }, + }, + }) + + if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { + return "", resp.Error + } + + if len(resp.Records) == 0 { + return "", &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_BAD_INPUT, Description: "Type not found"} + } + + return resp.Records[0].Fields["name"].GetStringValue(), nil +} diff --git a/cmd/api/main.go b/cmd/api/main.go new file mode 100644 index 000000000..ded5ae600 --- /dev/null +++ b/cmd/api/main.go @@ -0,0 +1,113 @@ +package api + +import ( + "context" + "fmt" + "net/http" + "time" + + "github.com/gin-gonic/gin" + + "github.com/anyproto/anytype-heart/pb/service" + "github.com/anyproto/anytype-heart/pkg/lib/pb/model" +) + +const ( + httpPort = ":31009" + serverShutdownTime = 5 * time.Second +) + +type ApiServer struct { + mw service.ClientCommandsServer + router *gin.Engine + server *http.Server + accountInfo model.AccountInfo +} + +// TODO: User represents an authenticated user with permissions +type User struct { + ID string + Permissions string // "read-only" or "read-write" +} + +func newApiServer(mw service.ClientCommandsServer) *ApiServer { + a := &ApiServer{ + mw: mw, + router: gin.New(), + accountInfo: model.AccountInfo{ + TechSpaceId: "bafyreidken4zbd7p2ai6h4bgowudxbhzop4f4fewctm77f43qn5mzhsrje.2lcu0r85yg10d", + }, + } + + a.server = &http.Server{ + Addr: httpPort, + Handler: a.router, + } + + return a +} + +func RunApiServer(ctx context.Context, mw service.ClientCommandsServer) { + a := newApiServer(mw) + // a.setInitialParameters(ctx) + // a.getAccountInfo(ctx, "AAHTtt8wuQEnaYBNZ1Cyfcvs6DqPqxgn8VXDVk4avsUkMuha") + + // Unprotected routes + auth := a.router.Group("/v1/auth") + { + auth.POST("/displayCode", a.authDisplayCodeHandler) + auth.GET("/token", a.authTokenHandler) + } + + // Read-only routes + readOnly := a.router.Group("/v1") + // readOnly.Use(a.AuthMiddleware()) + // readOnly.Use(a.PermissionMiddleware("read-only")) + { + readOnly.GET("/spaces", a.getSpacesHandler) + readOnly.GET("/spaces/:space_id/members", a.getSpaceMembersHandler) + readOnly.GET("/spaces/:space_id/objects", a.getSpaceObjectsHandler) + readOnly.GET("/spaces/:space_id/objects/:object_id", a.getObjectHandler) + readOnly.GET("/spaces/:space_id/objectTypes", a.getObjectTypesHandler) + readOnly.GET("/spaces/:space_id/objectTypes/:typeId/templates", a.getObjectTypeTemplatesHandler) + readOnly.GET("/objects", a.getObjectsHandler) + } + + // Read-write routes + readWrite := a.router.Group("/v1") + // readWrite.Use(a.AuthMiddleware()) + // readWrite.Use(a.PermissionMiddleware("read-write")) + { + readWrite.POST("/spaces", a.createSpaceHandler) + readWrite.POST("/spaces/:space_id/objects/:object_id", a.createObjectHandler) + readWrite.PUT("/spaces/:space_id/objects/:object_id", a.updateObjectHandler) + } + + // Start the HTTP server + go func() { + if err := a.server.ListenAndServe(); err != nil && err != http.ErrServerClosed { + fmt.Printf("failed to start HTTP server: %v\n", err) + } + }() + + // Wait for the context to be done and then shut down the server + <-ctx.Done() + + // Create a new context with a timeout to shut down the server + shutdownCtx, cancel := context.WithTimeout(context.Background(), serverShutdownTime) + defer cancel() + if err := a.server.Shutdown(shutdownCtx); err != nil { + fmt.Println("server shutdown failed: %w", err) + } +} + +// func newClient(port string) (service.ClientCommandsClient, error) { +// ctx, cancel := context.WithTimeout(context.Background(), 1*time.Second) +// defer cancel() +// conn, err := grpc.DialContext(ctx, ":"+port, grpc.WithBlock(), grpc.WithTransportCredentials(insecure.NewCredentials())) +// if err != nil { +// return nil, err +// } +// +// return service.NewClientCommandsClient(conn), nil +// } diff --git a/api/middleware.go b/cmd/api/middleware.go similarity index 88% rename from api/middleware.go rename to cmd/api/middleware.go index 9b88bfc58..9bd81c726 100644 --- a/api/middleware.go +++ b/cmd/api/middleware.go @@ -7,7 +7,7 @@ import ( ) // Middleware to authenticate requests and add user info to context -func AuthMiddleware() gin.HandlerFunc { +func (a *ApiServer) AuthMiddleware() gin.HandlerFunc { return func(c *gin.Context) { token := c.GetHeader("Authorization") if token == "" { @@ -28,7 +28,7 @@ func AuthMiddleware() gin.HandlerFunc { } // Middleware to check permissions -func PermissionMiddleware(requiredPermission string) gin.HandlerFunc { +func (a *ApiServer) PermissionMiddleware(requiredPermission string) gin.HandlerFunc { return func(c *gin.Context) { user, exists := c.Get("user") if !exists { diff --git a/cmd/grpcserver/grpc.go b/cmd/grpcserver/grpc.go index 8802d6f40..0bc6412c8 100644 --- a/cmd/grpcserver/grpc.go +++ b/cmd/grpcserver/grpc.go @@ -28,6 +28,7 @@ import ( jaegercfg "github.com/uber/jaeger-client-go/config" "google.golang.org/grpc" + "github.com/anyproto/anytype-heart/cmd/api" "github.com/anyproto/anytype-heart/core" "github.com/anyproto/anytype-heart/core/event" "github.com/anyproto/anytype-heart/metrics" @@ -227,6 +228,11 @@ func main() { // do not change this, js client relies on this msg to ensure that server is up and parse address fmt.Println(grpcWebStartedMessagePrefix + webaddr) + // run rest api server + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + go api.RunApiServer(ctx, mw) + for { sig := <-signalChan if shouldSaveStack(sig) { diff --git a/core/anytype/bootstrap.go b/core/anytype/bootstrap.go index 9a98a4df1..815de9897 100644 --- a/core/anytype/bootstrap.go +++ b/core/anytype/bootstrap.go @@ -31,7 +31,6 @@ import ( "github.com/anyproto/any-sync/nameservice/nameserviceclient" "github.com/anyproto/any-sync/paymentservice/paymentserviceclient" - "github.com/anyproto/anytype-heart/api" "github.com/anyproto/anytype-heart/core/acl" "github.com/anyproto/anytype-heart/core/anytype/account" "github.com/anyproto/anytype-heart/core/anytype/config" @@ -315,8 +314,7 @@ func Bootstrap(a *app.App, components ...app.Component) { Register(payments.New()). Register(paymentscache.New()). Register(peerstatus.New()). - Register(lastused.New()). - Register(api.New()) + Register(lastused.New()) } func MiddlewareVersion() string { From 3a24c496f07b1d0ce00887fc837b31ad569c342e Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Sat, 16 Nov 2024 22:27:55 +0100 Subject: [PATCH 004/279] GO-4459 Add demo API client for endpoint testing --- cmd/api/demo/api_demo.go | 109 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 cmd/api/demo/api_demo.go diff --git a/cmd/api/demo/api_demo.go b/cmd/api/demo/api_demo.go new file mode 100644 index 000000000..3752e0a64 --- /dev/null +++ b/cmd/api/demo/api_demo.go @@ -0,0 +1,109 @@ +package main + +import ( + "bytes" + "encoding/json" + "fmt" + "io" + "net/http" + "net/url" + "strings" + + "github.com/anyproto/anytype-heart/pkg/lib/logging" +) + +const ( + baseURL = "http://localhost:31009/v1" + testSpaceId = "bafyreifymx5ucm3fdc7vupfg7wakdo5qelni3jvlmawlnvjcppurn2b3di.2lcu0r85yg10d" // dev (entry space) + testObjectId = "bafyreidhtlbbspxecab6xf4pi5zyxcmvwy6lqzursbjouq5fxovh6y3xwu" // "Work Faster with Templates" + testTypeId = "bafyreifuklfpndjtlekqcjzuaerjtv2mckhn2w6txeumt5kqbthd7qxhui" // Space Member +) + +var log = logging.Logger("rest-api") + +// ReplacePlaceholders replaces placeholders in the endpoint with actual values from parameters. +func ReplacePlaceholders(endpoint string, parameters map[string]interface{}) string { + for key, value := range parameters { + placeholder := fmt.Sprintf("{%s}", key) + endpoint = strings.ReplaceAll(endpoint, placeholder, fmt.Sprintf("%v", value)) + } + + // Parse the base URL + endpoint + u, err := url.Parse(baseURL + endpoint) + if err != nil { + log.Errorf("Failed to parse URL: %v\n", err) + return "" + } + + return u.String() +} + +func main() { + endpoints := []struct { + method string + endpoint string + parameters map[string]interface{} + body map[string]interface{} + }{ + // auth + {"POST", "/auth/displayCode", nil, nil}, + {"GET", "/auth/token?challengeId={challengeId}&code={code}", map[string]interface{}{"challengeId": "6738dfc5cda913aad90e8c2a", "code": "2931"}, nil}, + + // spaces + {"POST", "/spaces", nil, map[string]interface{}{"name": "New Space"}}, + {"GET", "/spaces?limit={limit}&offset={offset}", map[string]interface{}{"limit": 100, "offset": 0}, nil}, + {"GET", "/spaces/{space_id}/members", map[string]interface{}{"space_id": testSpaceId}, nil}, + + // space_objects + {"GET", "/spaces/{space_id}/objects", map[string]interface{}{"space_id": testSpaceId, "limit": 100, "offset": 0}, nil}, + {"GET", "/spaces/{space_id}/objects/{object_id}", map[string]interface{}{"space_id": testSpaceId, "object_id": testObjectId}, nil}, + {"POST", "/spaces/{space_id}/objects", map[string]interface{}{"space_id": testSpaceId}, map[string]interface{}{"name": "New Object"}}, + {"PUT", "/spaces/{space_id}/objects/{object_id}", map[string]interface{}{"space_id": testSpaceId, "object_id": testObjectId}, map[string]interface{}{"name": "Updated Object"}}, + + // types_and_templates + {"GET", "/spaces/{space_id}/objectTypes?limit={limit}&offset={offset}", map[string]interface{}{"space_id": testSpaceId, "limit": 100, "offset": 0}, nil}, + {"GET", "/spaces/{space_id}/objectTypes/{type_id}/templates", map[string]interface{}{"space_id": testSpaceId, "type_id": testTypeId}, nil}, + + // search + {"GET", "/objects?search={search}&object_type={object_type}&limit={limit}&offset={offset}", map[string]interface{}{"search": "term", "object_type": "note", "limit": 100, "offset": 0}, nil}, + } + + for _, ep := range endpoints { + finalURL := ReplacePlaceholders(ep.endpoint, ep.parameters) + + var req *http.Request + var err error + + if ep.body != nil { + body, _ := json.Marshal(ep.body) + req, err = http.NewRequest(ep.method, finalURL, bytes.NewBuffer(body)) + req.Header.Set("Content-Type", "application/json") + } else { + req, err = http.NewRequest(ep.method, finalURL, nil) + } + + if err != nil { + log.Errorf("Failed to create request for %s: %v\n", ep.endpoint, err) + continue + } + + // Execute the HTTP request + client := &http.Client{} + resp, err := client.Do(req) + if err != nil { + log.Errorf("Failed to make request to %s: %v\n", ep.endpoint, err) + continue + } + defer resp.Body.Close() + + // Read the response + body, err := io.ReadAll(resp.Body) + if err != nil { + log.Errorf("Failed to read response body for %s: %v\n", ep.endpoint, err) + continue + } + + // Log the response + log.Infof("Endpoint: %s, Status Code: %d, Body: %s\n", finalURL, resp.StatusCode, string(body)) + } +} From 91d7d5b524bc204be91abc2efe59ee4806ae97a9 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Sat, 16 Nov 2024 23:20:41 +0100 Subject: [PATCH 005/279] GO-4459 Fix lint --- cmd/api/demo/api_demo.go | 9 ++++++++- cmd/api/handlers.go | 13 +++++++++---- cmd/api/main.go | 5 +++-- 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/cmd/api/demo/api_demo.go b/cmd/api/demo/api_demo.go index 3752e0a64..3a5931fc1 100644 --- a/cmd/api/demo/api_demo.go +++ b/cmd/api/demo/api_demo.go @@ -75,8 +75,15 @@ func main() { var err error if ep.body != nil { - body, _ := json.Marshal(ep.body) + body, err := json.Marshal(ep.body) + if err != nil { + log.Errorf("Failed to marshal body for %s: %v\n", ep.endpoint, err) + continue + } req, err = http.NewRequest(ep.method, finalURL, bytes.NewBuffer(body)) + if err != nil { + log.Errorf("Failed to create request for %s: %v\n", ep.endpoint, err) + } req.Header.Set("Content-Type", "application/json") } else { req, err = http.NewRequest(ep.method, finalURL, nil) diff --git a/cmd/api/handlers.go b/cmd/api/handlers.go index 69025afb6..d81aae50e 100644 --- a/cmd/api/handlers.go +++ b/cmd/api/handlers.go @@ -2,7 +2,8 @@ package api import ( "context" - "math/rand" + "crypto/rand" + "math/big" "net/http" "github.com/gin-gonic/gin" @@ -22,7 +23,7 @@ type NameRequest struct { func (a *ApiServer) authDisplayCodeHandler(c *gin.Context) { // Call AccountLocalLinkNewChallenge to display code modal ctx := context.Background() - resp := a.mw.AccountLocalLinkNewChallenge(ctx, &pb.RpcAccountLocalLinkNewChallengeRequest{"api-test"}) + resp := a.mw.AccountLocalLinkNewChallenge(ctx, &pb.RpcAccountLocalLinkNewChallengeRequest{AppName: "api-test"}) if resp.Error.Code != pb.RpcAccountLocalLinkNewChallengeResponseError_NULL { c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to generate a new challenge."}) @@ -85,12 +86,16 @@ func (a *ApiServer) createSpaceHandler(c *gin.Context) { return } name := nameRequest.Name - iconOption := rand.Intn(13) + iconOption, err := rand.Int(rand.Reader, big.NewInt(13)) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to generate random icon."}) + return + } resp := a.mw.WorkspaceCreate(context.Background(), &pb.RpcWorkspaceCreateRequest{ Details: &types.Struct{ Fields: map[string]*types.Value{ - "iconOption": {Kind: &types.Value_NumberValue{NumberValue: float64(iconOption)}}, + "iconOption": {Kind: &types.Value_NumberValue{NumberValue: float64(iconOption.Int64())}}, "name": {Kind: &types.Value_StringValue{StringValue: name}}, "spaceDashboardId": {Kind: &types.Value_StringValue{ StringValue: "lastOpened", diff --git a/cmd/api/main.go b/cmd/api/main.go index ded5ae600..f40fb7d5e 100644 --- a/cmd/api/main.go +++ b/cmd/api/main.go @@ -40,8 +40,9 @@ func newApiServer(mw service.ClientCommandsServer) *ApiServer { } a.server = &http.Server{ - Addr: httpPort, - Handler: a.router, + Addr: httpPort, + Handler: a.router, + ReadHeaderTimeout: 5 * time.Second, } return a From 89a17673a7e9c3bfc2ed5c46b63a51444ff91e66 Mon Sep 17 00:00:00 2001 From: AnastasiaShemyakinskaya Date: Mon, 18 Nov 2024 20:18:31 +0100 Subject: [PATCH 006/279] GO-4406: fix for relation options Signed-off-by: AnastasiaShemyakinskaya --- core/block/object/objectcreator/relation_option.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/core/block/object/objectcreator/relation_option.go b/core/block/object/objectcreator/relation_option.go index 169a8d415..e4a3c6737 100644 --- a/core/block/object/objectcreator/relation_option.go +++ b/core/block/object/objectcreator/relation_option.go @@ -49,7 +49,12 @@ func (s *service) createRelationOption(ctx context.Context, space clientspace.Sp func getUniqueKeyOrGenerate(sbType coresb.SmartBlockType, details *types.Struct) (domain.UniqueKey, error) { uniqueKey := pbtypes.GetString(details, bundle.RelationKeyUniqueKey.String()) if uniqueKey == "" { - return domain.NewUniqueKey(sbType, bson.NewObjectId().Hex()) + newUniqueKey, err := domain.NewUniqueKey(sbType, bson.NewObjectId().Hex()) + if err != nil { + return nil, err + } + details.Fields[bundle.RelationKeyUniqueKey.String()] = pbtypes.String(newUniqueKey.Marshal()) + return newUniqueKey, err } return domain.UnmarshalUniqueKey(uniqueKey) } From 4e974594b81afbd1e22b3f92bb92c97ae2bed14a Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Wed, 20 Nov 2024 10:59:59 +0100 Subject: [PATCH 007/279] GO-4459 Add schemas --- cmd/api/schemas.go | 92 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 cmd/api/schemas.go diff --git a/cmd/api/schemas.go b/cmd/api/schemas.go new file mode 100644 index 000000000..36840c0c9 --- /dev/null +++ b/cmd/api/schemas.go @@ -0,0 +1,92 @@ +package api + +type Space struct { + Type string `json:"type" example:"space"` + ID string `json:"id"` + HomeObjectID string `json:"home_object_id" example:"bafyreie4qcl3wczb4cw5hrfyycikhjyh6oljdis3ewqrk5boaav3sbwqya"` + ArchiveObjectID string `json:"archive_object_id" example:"bafyreialsgoyflf3etjm3parzurivyaukzivwortf32b4twnlwpwocsrri"` + ProfileObjectID string `json:"profile_object_id" example:"bafyreiaxhwreshjqwndpwtdsu4mtihaqhhmlygqnyqpfyfwlqfq3rm3gw4"` + MarketplaceWorkspaceID string `json:"marketplace_workspace_id" example:"_anytype_marketplace"` + DeviceID string `json:"device_id" example:"12D3KooWGZMJ4kQVyQVXaj7gJPZr3RZ2nvd9M2Eq2pprEoPih9WF"` + AccountSpaceID string `json:"account_space_id" example:"bafyreihpd2knon5wbljhtfeg3fcqtg3i2pomhhnigui6lrjmzcjzep7gcy.23me69r569oi1"` + WidgetsID string `json:"widgets_id" example:"bafyreialj7pceh53mifm5dixlho47ke4qjmsn2uh4wsjf7xq2pnlo5xfva"` + SpaceViewID string `json:"space_view_id" example:"bafyreigzv3vq7qwlrsin6njoduq727ssnhwd6bgyfj6nm4hv3pxoc2rxhy"` + TechSpaceID string `json:"tech_space_id" example:"bafyreif4xuwncrjl6jajt4zrrfnylpki476nv2w64yf42ovt7gia7oypii.23me69r569oi1"` + Timezone string `json:"timezone" example:""` + NetworkID string `json:"network_id" example:"N83gJpVd9MuNRZAuJLZ7LiMntTThhPc6DtzWWVjb1M3PouVU"` +} + +type SpaceMember struct { + Type string `json:"type" example:"space_member"` + ID string `json:"id"` + Name string `json:"name" example:""` + Role string `json:"role" enum:"editor,viewer,owner"` +} + +type Object struct { + Type string `json:"type" example:"object"` + ID string `json:"id"` + ObjectType string `json:"object_type" example:"note"` + RootID string `json:"root_id"` + Blocks []Block `json:"blocks"` + Details []Detail `json:"details"` + RelationLinksList []RelationLink `json:"relation_links_list"` +} + +type Block struct { + ID string `json:"id"` + ChildrenIDs []string `json:"children_ids"` + BackgroundColor string `json:"background_color"` + Align string `json:"align"` + VerticalAlign string `json:"verticalalign"` + Layout Layout `json:"layout"` + Text Text `json:"text"` + File File `json:"file"` +} + +type Layout struct { + Style string `json:"style"` +} + +type Text struct { + Text string `json:"text"` + Style string `json:"style"` + Checked bool `json:"checked"` + Color string `json:"color"` + IconEmoji string `json:"iconemoji"` + IconImage string `json:"iconimage"` +} + +type File struct { + Hash string `json:"hash"` + Name string `json:"name"` + Type string `json:"type"` + Mime string `json:"mime"` + Size int `json:"size"` + AddedAt int `json:"addedat"` + TargetObjectID string `json:"targetobjectid"` + State int `json:"state"` + Style int `json:"style"` +} + +type Detail struct { + ID string `json:"id"` + Details map[string]interface{} `json:"details"` +} + +type RelationLink struct { + Key string `json:"key"` + Format string `json:"format"` +} + +type ObjectType struct { + Type string `json:"type" example:"object_type"` + ID string `json:"id"` + Name string `json:"name"` +} + +type ObjectTemplate struct { + Type string `json:"type" example:"object_template"` + ID string `json:"id"` + Name string `json:"name"` +} From 66ae28ebc7cc0d80af577e620f4368d8814cdb30 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Wed, 20 Nov 2024 14:50:16 +0100 Subject: [PATCH 008/279] GO-4459 Fetch AccountInfo internally and enhance space/member response structures --- cmd/api/handlers.go | 54 ++++++++++++++++++++++++++++++++---------- cmd/api/helper.go | 39 +++++++----------------------- cmd/api/main.go | 31 ++++++++---------------- cmd/api/middleware.go | 16 +++++++++++++ cmd/api/schemas.go | 1 + cmd/grpcserver/grpc.go | 3 ++- core/core.go | 13 ++++++++++ 7 files changed, 91 insertions(+), 66 deletions(-) diff --git a/cmd/api/handlers.go b/cmd/api/handlers.go index d81aae50e..d528ca7d7 100644 --- a/cmd/api/handlers.go +++ b/cmd/api/handlers.go @@ -68,13 +68,42 @@ func (a *ApiServer) getSpacesHandler(c *gin.Context) { Value: pbtypes.Int64(int64(model.SpaceStatus_Ok)), }, }, - Keys: []string{"id", "spaceId", "name", "description", "snippet", "iconEmoji", "iconImage", "iconOption", "relationFormat", "type", "layout", "isHidden", "isArchived", "isReadonly", "isDeleted", "isFavorite", "done", "fileExt", "fileMimeType", "sizeInBytes", "restrictions", "defaultTemplateId", "createdDate", "spaceDashboardId", "spaceAccountStatus", "spaceLocalStatus", "spaceAccessType", "readersLimit", "writersLimit", "targetSpaceId", "creator", "chatId", "identity", "participantPermissions", "participantStatus", "globalName"}, }) if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to retrieve list of spaces."}) return } - c.JSON(http.StatusOK, gin.H{"spaces": resp.Records}) + + // Convert the response to a list of spaces with their details: type, id, homeObjectID, archiveObjectID, profileObjectID, marketplaceWorkspaceID, deviceID, accountSpaceID, widgetsID, spaceViewID, techSpaceID, timezone, networkID + spaces := make([]Space, 0, len(resp.Records)) + for _, record := range resp.Records { + typeName, err := a.resolveTypeToName(record.Fields["targetSpaceId"].GetStringValue(), "ot-space") + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to resolve type to name."}) + return + } + + // TODO: Populate missing fields + space := Space{ + Type: typeName, + ID: record.Fields["id"].GetStringValue(), + Name: record.Fields["name"].GetStringValue(), + HomeObjectID: record.Fields["spaceDashboardId"].GetStringValue(), + // ArchiveObjectID: record.Fields["archive_object_id"].GetStringValue(), + // ProfileObjectID: record.Fields["profile_object_id"].GetStringValue(), + // MarketplaceWorkspaceID: record.Fields["marketplace_workspace_id"].GetStringValue(), + // DeviceID: record.Fields["device_id"].GetStringValue(), + // AccountSpaceID: record.Fields["account_space_id"].GetStringValue(), + // WidgetsID: record.Fields["widgets_id"].GetStringValue(), + // SpaceViewID: record.Fields["space_view_id"].GetStringValue(), + TechSpaceID: a.accountInfo.TechSpaceId, + // Timezone: record.Fields["timezone"].GetStringValue(), + // NetworkID: record.Fields["network_id"].GetStringValue(), + } + spaces = append(spaces, space) + } + + c.JSON(http.StatusOK, gin.H{"spaces": spaces}) } // /v1/spaces [POST] @@ -135,24 +164,23 @@ func (a *ApiServer) getSpaceMembersHandler(c *gin.Context) { return } - // Convert the response to a list of members with their details: type, identity, name, role - members := []gin.H{} + // Convert the response to a slice of SpaceMember structs with their details: type, identity, name, role + members := make([]SpaceMember, 0, len(resp.Records)) for _, record := range resp.Records { - identity := record.Fields["identity"].GetStringValue() - name := record.Fields["name"].GetStringValue() - role := record.Fields["participantPermissions"].GetNumberValue() typeName, err := a.resolveTypeToName(spaceId, record.Fields["type"].GetStringValue()) if err != nil { c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to resolve type to name."}) return } - members = append(members, gin.H{ - "type": typeName, - "identity": identity, - "name": name, - "role": model.ParticipantPermissions_name[int32(role)], - }) + member := SpaceMember{ + Type: typeName, + ID: record.Fields["identity"].GetStringValue(), + Name: record.Fields["name"].GetStringValue(), + Role: model.ParticipantPermissions_name[int32(record.Fields["participantPermissions"].GetNumberValue())], + } + + members = append(members, member) } c.JSON(http.StatusOK, gin.H{"members": members}) diff --git a/cmd/api/helper.go b/cmd/api/helper.go index c167e231d..8da3d5eb4 100644 --- a/cmd/api/helper.go +++ b/cmd/api/helper.go @@ -2,6 +2,7 @@ package api import ( "context" + "strings" "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/pkg/lib/bundle" @@ -9,43 +10,19 @@ import ( "github.com/anyproto/anytype-heart/util/pbtypes" ) -// func (a *ApiServer) setInitialParameters(ctx context.Context) { -// resp := a.mw.InitialSetParameters(ctx, &pb.RpcInitialSetParametersRequest{ -// DoNotSaveLogs: false, -// DoNotSendLogs: false, -// DoNotSendTelemetry: false, -// LogLevel: "", -// Platform: "", -// Version: "0.0.1", -// Workdir: "", -// }) -// -// if resp.Error.Code != pb.RpcInitialSetParametersResponseError_NULL { -// fmt.Printf("failed to set initial parameters: %v\n", resp.Error.Description) -// return -// } -// } -// -// func (a *ApiServer) getAccountInfo(ctx context.Context, accountId string) { -// resp := a.mw.AccountSelect(ctx, &pb.RpcAccountSelectRequest{ -// Id: accountId, -// }) -// -// if resp.Error.Code != pb.RpcAccountSelectResponseError_NULL { -// fmt.Printf("failed to get account info: %v\n", resp.Error.Description) -// return -// } -// -// a.accountInfo = resp.Account.Info -// } - func (a *ApiServer) resolveTypeToName(spaceId string, typeId string) (string, *pb.RpcObjectSearchResponseError) { + // Can't look up preinstalled types based on relation key, therefore need to use unique key + relKey := bundle.RelationKeyId.String() + if strings.Contains(typeId, "ot-") { + relKey = bundle.RelationKeyUniqueKey.String() + } + // Call ObjectSearch for object of specified type and return the name resp := a.mw.ObjectSearch(context.Background(), &pb.RpcObjectSearchRequest{ SpaceId: spaceId, Filters: []*model.BlockContentDataviewFilter{ { - RelationKey: bundle.RelationKeyId.String(), + RelationKey: relKey, Condition: model.BlockContentDataviewFilter_Equal, Value: pbtypes.String(typeId), }, diff --git a/cmd/api/main.go b/cmd/api/main.go index f40fb7d5e..fd57c5b19 100644 --- a/cmd/api/main.go +++ b/cmd/api/main.go @@ -8,6 +8,7 @@ import ( "github.com/gin-gonic/gin" + "github.com/anyproto/anytype-heart/core" "github.com/anyproto/anytype-heart/pb/service" "github.com/anyproto/anytype-heart/pkg/lib/pb/model" ) @@ -19,6 +20,7 @@ const ( type ApiServer struct { mw service.ClientCommandsServer + mwInternal core.MiddlewareInternal router *gin.Engine server *http.Server accountInfo model.AccountInfo @@ -30,13 +32,12 @@ type User struct { Permissions string // "read-only" or "read-write" } -func newApiServer(mw service.ClientCommandsServer) *ApiServer { +func newApiServer(mw service.ClientCommandsServer, mwInternal core.MiddlewareInternal) *ApiServer { a := &ApiServer{ - mw: mw, - router: gin.New(), - accountInfo: model.AccountInfo{ - TechSpaceId: "bafyreidken4zbd7p2ai6h4bgowudxbhzop4f4fewctm77f43qn5mzhsrje.2lcu0r85yg10d", - }, + mw: mw, + mwInternal: mwInternal, + router: gin.New(), + accountInfo: model.AccountInfo{}, } a.server = &http.Server{ @@ -48,10 +49,9 @@ func newApiServer(mw service.ClientCommandsServer) *ApiServer { return a } -func RunApiServer(ctx context.Context, mw service.ClientCommandsServer) { - a := newApiServer(mw) - // a.setInitialParameters(ctx) - // a.getAccountInfo(ctx, "AAHTtt8wuQEnaYBNZ1Cyfcvs6DqPqxgn8VXDVk4avsUkMuha") +func RunApiServer(ctx context.Context, mw service.ClientCommandsServer, mwInternal core.MiddlewareInternal) { + a := newApiServer(mw, mwInternal) + a.router.Use(a.EnsureAccountInfoMiddleware()) // Unprotected routes auth := a.router.Group("/v1/auth") @@ -101,14 +101,3 @@ func RunApiServer(ctx context.Context, mw service.ClientCommandsServer) { fmt.Println("server shutdown failed: %w", err) } } - -// func newClient(port string) (service.ClientCommandsClient, error) { -// ctx, cancel := context.WithTimeout(context.Background(), 1*time.Second) -// defer cancel() -// conn, err := grpc.DialContext(ctx, ":"+port, grpc.WithBlock(), grpc.WithTransportCredentials(insecure.NewCredentials())) -// if err != nil { -// return nil, err -// } -// -// return service.NewClientCommandsClient(conn), nil -// } diff --git a/cmd/api/middleware.go b/cmd/api/middleware.go index 9bd81c726..cc7110514 100644 --- a/cmd/api/middleware.go +++ b/cmd/api/middleware.go @@ -1,11 +1,27 @@ package api import ( + "context" "net/http" "github.com/gin-gonic/gin" ) +// Middleware to ensure account info is filled before each request +func (a *ApiServer) EnsureAccountInfoMiddleware() gin.HandlerFunc { + return func(c *gin.Context) { + if a.accountInfo.TechSpaceId == "" { + accountInfo, err := a.mwInternal.GetAccountInfo(context.Background()) + if err != nil { + c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"error": "Failed to get account info"}) + return + } + a.accountInfo = *accountInfo + } + c.Next() + } +} + // Middleware to authenticate requests and add user info to context func (a *ApiServer) AuthMiddleware() gin.HandlerFunc { return func(c *gin.Context) { diff --git a/cmd/api/schemas.go b/cmd/api/schemas.go index 36840c0c9..01babb22d 100644 --- a/cmd/api/schemas.go +++ b/cmd/api/schemas.go @@ -3,6 +3,7 @@ package api type Space struct { Type string `json:"type" example:"space"` ID string `json:"id"` + Name string `json:"name" example:"Space Name"` HomeObjectID string `json:"home_object_id" example:"bafyreie4qcl3wczb4cw5hrfyycikhjyh6oljdis3ewqrk5boaav3sbwqya"` ArchiveObjectID string `json:"archive_object_id" example:"bafyreialsgoyflf3etjm3parzurivyaukzivwortf32b4twnlwpwocsrri"` ProfileObjectID string `json:"profile_object_id" example:"bafyreiaxhwreshjqwndpwtdsu4mtihaqhhmlygqnyqpfyfwlqfq3rm3gw4"` diff --git a/cmd/grpcserver/grpc.go b/cmd/grpcserver/grpc.go index 0bc6412c8..0ef4c2194 100644 --- a/cmd/grpcserver/grpc.go +++ b/cmd/grpcserver/grpc.go @@ -229,9 +229,10 @@ func main() { fmt.Println(grpcWebStartedMessagePrefix + webaddr) // run rest api server + var mwInternal core.MiddlewareInternal = mw ctx, cancel := context.WithCancel(context.Background()) defer cancel() - go api.RunApiServer(ctx, mw) + go api.RunApiServer(ctx, mw, mwInternal) for { sig := <-signalChan diff --git a/core/core.go b/core/core.go index 86cef1cb8..5713d9aaa 100644 --- a/core/core.go +++ b/core/core.go @@ -7,6 +7,7 @@ import ( "github.com/anyproto/any-sync/app" + "github.com/anyproto/anytype-heart/core/anytype/account" "github.com/anyproto/anytype-heart/core/application" "github.com/anyproto/anytype-heart/core/block" "github.com/anyproto/anytype-heart/core/block/collection" @@ -14,6 +15,7 @@ import ( "github.com/anyproto/anytype-heart/core/wallet" "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/pkg/lib/logging" + "github.com/anyproto/anytype-heart/pkg/lib/pb/model" utildebug "github.com/anyproto/anytype-heart/util/debug" ) @@ -23,6 +25,10 @@ var ( ErrNotLoggedIn = errors.New("not logged in") ) +type MiddlewareInternal interface { + GetAccountInfo(ctx context.Context) (*model.AccountInfo, error) +} + type Middleware struct { applicationService *application.Service } @@ -92,6 +98,13 @@ func (mw *Middleware) GetApp() *app.App { return mw.applicationService.GetApp() } +func (mw *Middleware) GetAccountInfo(ctx context.Context) (*model.AccountInfo, error) { + if a := mw.GetApp(); a != nil { + return a.MustComponent(account.CName).(account.Service).GetInfo(ctx) + } + return nil, ErrNotLoggedIn +} + func (mw *Middleware) SetEventSender(sender event.Sender) { mw.applicationService.SetEventSender(sender) } From 6d9742fae985388e01239806ddde6e967e83b3f1 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Wed, 20 Nov 2024 15:38:56 +0100 Subject: [PATCH 009/279] =?UTF-8?q?GO-4459=C2=A0Add=20swagger=20codegen=20?= =?UTF-8?q?for=20API=20docs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/api/docs/docs.go | 1007 +++++++++++++++++++++++++++++++++++++ cmd/api/docs/swagger.json | 983 ++++++++++++++++++++++++++++++++++++ cmd/api/docs/swagger.yaml | 657 ++++++++++++++++++++++++ cmd/api/handlers.go | 140 +++++- cmd/api/main.go | 28 +- cmd/api/schemas.go | 24 + go.mod | 29 +- go.sum | 57 +++ 8 files changed, 2903 insertions(+), 22 deletions(-) create mode 100644 cmd/api/docs/docs.go create mode 100644 cmd/api/docs/swagger.json create mode 100644 cmd/api/docs/swagger.yaml diff --git a/cmd/api/docs/docs.go b/cmd/api/docs/docs.go new file mode 100644 index 000000000..611ff14c7 --- /dev/null +++ b/cmd/api/docs/docs.go @@ -0,0 +1,1007 @@ +// Package docs Code generated by swaggo/swag. DO NOT EDIT +package docs + +import "github.com/swaggo/swag" + +const docTemplate = `{ + "schemes": {{ marshal .Schemes }}, + "swagger": "2.0", + "info": { + "description": "{{escape .Description}}", + "title": "{{.Title}}", + "termsOfService": "https://anytype.io/terms_of_use", + "contact": { + "name": "Anytype Support", + "url": "https://anytype.io/contact", + "email": "support@anytype.io" + }, + "license": { + "name": "Apache 2.0", + "url": "http://www.apache.org/licenses/LICENSE-2.0.html" + }, + "version": "{{.Version}}" + }, + "host": "{{.Host}}", + "basePath": "{{.BasePath}}", + "paths": { + "/auth/displayCode": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "auth" + ], + "summary": "Open a modal window with a code in Anytype Desktop app", + "responses": { + "200": { + "description": "Success", + "schema": { + "type": "string" + } + }, + "502": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/api.ServerError" + } + } + } + } + }, + "/auth/token": { + "get": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "auth" + ], + "summary": "Retrieve an authentication token using a code", + "parameters": [ + { + "type": "string", + "description": "The code retrieved from Anytype Desktop app", + "name": "code", + "in": "query", + "required": true + } + ], + "responses": { + "200": { + "description": "Access and refresh tokens", + "schema": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + }, + "400": { + "description": "Invalid input", + "schema": { + "$ref": "#/definitions/api.ValidationError" + } + }, + "502": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/api.ServerError" + } + } + } + } + }, + "/objects": { + "get": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "search" + ], + "summary": "Search and retrieve objects across all the spaces", + "parameters": [ + { + "type": "string", + "description": "The search term to filter objects by name", + "name": "search", + "in": "query" + }, + { + "type": "string", + "description": "Specify object type for search", + "name": "object_type", + "in": "query" + }, + { + "type": "integer", + "description": "The number of items to skip before starting to collect the result set", + "name": "offset", + "in": "query" + }, + { + "type": "integer", + "default": 100, + "description": "The number of items to return", + "name": "limit", + "in": "query" + } + ], + "responses": { + "200": { + "description": "Total objects and object list", + "schema": { + "type": "object", + "additionalProperties": true + } + }, + "403": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/api.UnauthorizedError" + } + }, + "502": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/api.ServerError" + } + } + } + } + }, + "/spaces": { + "get": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "spaces" + ], + "summary": "Retrieve a list of spaces", + "parameters": [ + { + "type": "integer", + "description": "The number of items to skip before starting to collect the result set", + "name": "offset", + "in": "query" + }, + { + "type": "integer", + "default": 100, + "description": "The number of items to return", + "name": "limit", + "in": "query" + } + ], + "responses": { + "200": { + "description": "List of spaces", + "schema": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "$ref": "#/definitions/api.Space" + } + } + } + }, + "403": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/api.UnauthorizedError" + } + }, + "502": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/api.ServerError" + } + } + } + }, + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "spaces" + ], + "summary": "Create a new Space", + "parameters": [ + { + "description": "Space Name", + "name": "name", + "in": "body", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Space created successfully", + "schema": { + "$ref": "#/definitions/api.Space" + } + }, + "403": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/api.UnauthorizedError" + } + }, + "502": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/api.ServerError" + } + } + } + } + }, + "/spaces/{space_id}/members": { + "get": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "spaces" + ], + "summary": "Retrieve a list of members for the specified Space", + "parameters": [ + { + "type": "string", + "description": "The ID of the space", + "name": "space_id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "List of members", + "schema": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "$ref": "#/definitions/api.SpaceMember" + } + } + } + }, + "403": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/api.UnauthorizedError" + } + }, + "404": { + "description": "Resource not found", + "schema": { + "$ref": "#/definitions/api.NotFoundError" + } + }, + "502": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/api.ServerError" + } + } + } + } + }, + "/spaces/{space_id}/objectTypes": { + "get": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "types_and_templates" + ], + "summary": "Retrieve object types in a specific space", + "parameters": [ + { + "type": "string", + "description": "The ID of the space", + "name": "space_id", + "in": "path", + "required": true + }, + { + "type": "integer", + "description": "The number of items to skip before starting to collect the result set", + "name": "offset", + "in": "query" + }, + { + "type": "integer", + "default": 100, + "description": "The number of items to return", + "name": "limit", + "in": "query" + } + ], + "responses": { + "200": { + "description": "Total and object types", + "schema": { + "type": "object", + "additionalProperties": true + } + }, + "403": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/api.UnauthorizedError" + } + }, + "404": { + "description": "Resource not found", + "schema": { + "$ref": "#/definitions/api.NotFoundError" + } + }, + "502": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/api.ServerError" + } + } + } + } + }, + "/spaces/{space_id}/objectTypes/{typeId}/templates": { + "get": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "types_and_templates" + ], + "summary": "Retrieve a list of templates for a specific object type in a space", + "parameters": [ + { + "type": "string", + "description": "The ID of the space", + "name": "space_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "The ID of the object type", + "name": "typeId", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "List of templates", + "schema": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "$ref": "#/definitions/api.ObjectTemplate" + } + } + } + }, + "403": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/api.UnauthorizedError" + } + }, + "404": { + "description": "Resource not found", + "schema": { + "$ref": "#/definitions/api.NotFoundError" + } + }, + "502": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/api.ServerError" + } + } + } + } + }, + "/spaces/{space_id}/objects": { + "get": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "space_objects" + ], + "summary": "Retrieve objects in a specific space", + "parameters": [ + { + "type": "string", + "description": "The ID of the space", + "name": "space_id", + "in": "path", + "required": true + }, + { + "type": "integer", + "description": "The number of items to skip before starting to collect the result set", + "name": "offset", + "in": "query" + }, + { + "type": "integer", + "default": 100, + "description": "The number of items to return", + "name": "limit", + "in": "query" + } + ], + "responses": { + "200": { + "description": "Total objects and object list", + "schema": { + "type": "object", + "additionalProperties": true + } + }, + "403": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/api.UnauthorizedError" + } + }, + "404": { + "description": "Resource not found", + "schema": { + "$ref": "#/definitions/api.NotFoundError" + } + }, + "502": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/api.ServerError" + } + } + } + }, + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "space_objects" + ], + "summary": "Create a new object in a specific space", + "parameters": [ + { + "type": "string", + "description": "The ID of the space", + "name": "space_id", + "in": "path", + "required": true + }, + { + "description": "Object details (e.g., name)", + "name": "object", + "in": "body", + "required": true, + "schema": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + ], + "responses": { + "200": { + "description": "The created object", + "schema": { + "$ref": "#/definitions/api.Object" + } + }, + "403": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/api.UnauthorizedError" + } + }, + "502": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/api.ServerError" + } + } + } + } + }, + "/spaces/{space_id}/objects/{object_id}": { + "get": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "space_objects" + ], + "summary": "Retrieve a specific object in a space", + "parameters": [ + { + "type": "string", + "description": "The ID of the space", + "name": "space_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "The ID of the object", + "name": "object_id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "The requested object", + "schema": { + "$ref": "#/definitions/api.Object" + } + }, + "403": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/api.UnauthorizedError" + } + }, + "404": { + "description": "Resource not found", + "schema": { + "$ref": "#/definitions/api.NotFoundError" + } + }, + "502": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/api.ServerError" + } + } + } + }, + "put": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "space_objects" + ], + "summary": "Update an existing object in a specific space", + "parameters": [ + { + "type": "string", + "description": "The ID of the space", + "name": "space_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "The ID of the object", + "name": "object_id", + "in": "path", + "required": true + }, + { + "description": "The updated object details", + "name": "object", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/api.Object" + } + } + ], + "responses": { + "200": { + "description": "The updated object", + "schema": { + "$ref": "#/definitions/api.Object" + } + }, + "403": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/api.UnauthorizedError" + } + }, + "404": { + "description": "Resource not found", + "schema": { + "$ref": "#/definitions/api.NotFoundError" + } + }, + "502": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/api.ServerError" + } + } + } + } + } + }, + "definitions": { + "api.Block": { + "type": "object", + "properties": { + "align": { + "type": "string" + }, + "background_color": { + "type": "string" + }, + "children_ids": { + "type": "array", + "items": { + "type": "string" + } + }, + "file": { + "$ref": "#/definitions/api.File" + }, + "id": { + "type": "string" + }, + "layout": { + "$ref": "#/definitions/api.Layout" + }, + "text": { + "$ref": "#/definitions/api.Text" + }, + "verticalalign": { + "type": "string" + } + } + }, + "api.Detail": { + "type": "object", + "properties": { + "details": { + "type": "object", + "additionalProperties": true + }, + "id": { + "type": "string" + } + } + }, + "api.File": { + "type": "object", + "properties": { + "addedat": { + "type": "integer" + }, + "hash": { + "type": "string" + }, + "mime": { + "type": "string" + }, + "name": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "state": { + "type": "integer" + }, + "style": { + "type": "integer" + }, + "targetobjectid": { + "type": "string" + }, + "type": { + "type": "string" + } + } + }, + "api.Layout": { + "type": "object", + "properties": { + "style": { + "type": "string" + } + } + }, + "api.NotFoundError": { + "type": "object", + "properties": { + "error": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + } + } + }, + "api.Object": { + "type": "object", + "properties": { + "blocks": { + "type": "array", + "items": { + "$ref": "#/definitions/api.Block" + } + }, + "details": { + "type": "array", + "items": { + "$ref": "#/definitions/api.Detail" + } + }, + "id": { + "type": "string" + }, + "object_type": { + "type": "string", + "example": "note" + }, + "relation_links_list": { + "type": "array", + "items": { + "$ref": "#/definitions/api.RelationLink" + } + }, + "root_id": { + "type": "string" + }, + "type": { + "type": "string", + "example": "object" + } + } + }, + "api.ObjectTemplate": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "type": { + "type": "string", + "example": "object_template" + } + } + }, + "api.RelationLink": { + "type": "object", + "properties": { + "format": { + "type": "string" + }, + "key": { + "type": "string" + } + } + }, + "api.ServerError": { + "type": "object", + "properties": { + "error": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + } + } + }, + "api.Space": { + "type": "object", + "properties": { + "account_space_id": { + "type": "string", + "example": "bafyreihpd2knon5wbljhtfeg3fcqtg3i2pomhhnigui6lrjmzcjzep7gcy.23me69r569oi1" + }, + "archive_object_id": { + "type": "string", + "example": "bafyreialsgoyflf3etjm3parzurivyaukzivwortf32b4twnlwpwocsrri" + }, + "device_id": { + "type": "string", + "example": "12D3KooWGZMJ4kQVyQVXaj7gJPZr3RZ2nvd9M2Eq2pprEoPih9WF" + }, + "home_object_id": { + "type": "string", + "example": "bafyreie4qcl3wczb4cw5hrfyycikhjyh6oljdis3ewqrk5boaav3sbwqya" + }, + "id": { + "type": "string" + }, + "marketplace_workspace_id": { + "type": "string", + "example": "_anytype_marketplace" + }, + "name": { + "type": "string", + "example": "Space Name" + }, + "network_id": { + "type": "string", + "example": "N83gJpVd9MuNRZAuJLZ7LiMntTThhPc6DtzWWVjb1M3PouVU" + }, + "profile_object_id": { + "type": "string", + "example": "bafyreiaxhwreshjqwndpwtdsu4mtihaqhhmlygqnyqpfyfwlqfq3rm3gw4" + }, + "space_view_id": { + "type": "string", + "example": "bafyreigzv3vq7qwlrsin6njoduq727ssnhwd6bgyfj6nm4hv3pxoc2rxhy" + }, + "tech_space_id": { + "type": "string", + "example": "bafyreif4xuwncrjl6jajt4zrrfnylpki476nv2w64yf42ovt7gia7oypii.23me69r569oi1" + }, + "timezone": { + "type": "string", + "example": "" + }, + "type": { + "type": "string", + "example": "space" + }, + "widgets_id": { + "type": "string", + "example": "bafyreialj7pceh53mifm5dixlho47ke4qjmsn2uh4wsjf7xq2pnlo5xfva" + } + } + }, + "api.SpaceMember": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string", + "example": "" + }, + "role": { + "type": "string" + }, + "type": { + "type": "string", + "example": "space_member" + } + } + }, + "api.Text": { + "type": "object", + "properties": { + "checked": { + "type": "boolean" + }, + "color": { + "type": "string" + }, + "iconemoji": { + "type": "string" + }, + "iconimage": { + "type": "string" + }, + "style": { + "type": "string" + }, + "text": { + "type": "string" + } + } + }, + "api.UnauthorizedError": { + "type": "object", + "properties": { + "error": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + } + } + }, + "api.ValidationError": { + "type": "object", + "properties": { + "error": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + } + } + } + }, + "securityDefinitions": { + "BasicAuth": { + "type": "basic" + } + }, + "externalDocs": { + "description": "OpenAPI", + "url": "https://swagger.io/resources/open-api/" + } +}` + +// SwaggerInfo holds exported Swagger Info so clients can modify it +var SwaggerInfo = &swag.Spec{ + Version: "1.0", + Host: "localhost:31009", + BasePath: "/v1", + Schemes: []string{}, + Title: "Anytype API", + Description: "This API allows interaction with Anytype resources such as spaces, objects, and object types.", + InfoInstanceName: "swagger", + SwaggerTemplate: docTemplate, + LeftDelim: "{{", + RightDelim: "}}", +} + +func init() { + swag.Register(SwaggerInfo.InstanceName(), SwaggerInfo) +} diff --git a/cmd/api/docs/swagger.json b/cmd/api/docs/swagger.json new file mode 100644 index 000000000..e57cb5ecd --- /dev/null +++ b/cmd/api/docs/swagger.json @@ -0,0 +1,983 @@ +{ + "swagger": "2.0", + "info": { + "description": "This API allows interaction with Anytype resources such as spaces, objects, and object types.", + "title": "Anytype API", + "termsOfService": "https://anytype.io/terms_of_use", + "contact": { + "name": "Anytype Support", + "url": "https://anytype.io/contact", + "email": "support@anytype.io" + }, + "license": { + "name": "Apache 2.0", + "url": "http://www.apache.org/licenses/LICENSE-2.0.html" + }, + "version": "1.0" + }, + "host": "localhost:31009", + "basePath": "/v1", + "paths": { + "/auth/displayCode": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "auth" + ], + "summary": "Open a modal window with a code in Anytype Desktop app", + "responses": { + "200": { + "description": "Success", + "schema": { + "type": "string" + } + }, + "502": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/api.ServerError" + } + } + } + } + }, + "/auth/token": { + "get": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "auth" + ], + "summary": "Retrieve an authentication token using a code", + "parameters": [ + { + "type": "string", + "description": "The code retrieved from Anytype Desktop app", + "name": "code", + "in": "query", + "required": true + } + ], + "responses": { + "200": { + "description": "Access and refresh tokens", + "schema": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + }, + "400": { + "description": "Invalid input", + "schema": { + "$ref": "#/definitions/api.ValidationError" + } + }, + "502": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/api.ServerError" + } + } + } + } + }, + "/objects": { + "get": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "search" + ], + "summary": "Search and retrieve objects across all the spaces", + "parameters": [ + { + "type": "string", + "description": "The search term to filter objects by name", + "name": "search", + "in": "query" + }, + { + "type": "string", + "description": "Specify object type for search", + "name": "object_type", + "in": "query" + }, + { + "type": "integer", + "description": "The number of items to skip before starting to collect the result set", + "name": "offset", + "in": "query" + }, + { + "type": "integer", + "default": 100, + "description": "The number of items to return", + "name": "limit", + "in": "query" + } + ], + "responses": { + "200": { + "description": "Total objects and object list", + "schema": { + "type": "object", + "additionalProperties": true + } + }, + "403": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/api.UnauthorizedError" + } + }, + "502": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/api.ServerError" + } + } + } + } + }, + "/spaces": { + "get": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "spaces" + ], + "summary": "Retrieve a list of spaces", + "parameters": [ + { + "type": "integer", + "description": "The number of items to skip before starting to collect the result set", + "name": "offset", + "in": "query" + }, + { + "type": "integer", + "default": 100, + "description": "The number of items to return", + "name": "limit", + "in": "query" + } + ], + "responses": { + "200": { + "description": "List of spaces", + "schema": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "$ref": "#/definitions/api.Space" + } + } + } + }, + "403": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/api.UnauthorizedError" + } + }, + "502": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/api.ServerError" + } + } + } + }, + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "spaces" + ], + "summary": "Create a new Space", + "parameters": [ + { + "description": "Space Name", + "name": "name", + "in": "body", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Space created successfully", + "schema": { + "$ref": "#/definitions/api.Space" + } + }, + "403": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/api.UnauthorizedError" + } + }, + "502": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/api.ServerError" + } + } + } + } + }, + "/spaces/{space_id}/members": { + "get": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "spaces" + ], + "summary": "Retrieve a list of members for the specified Space", + "parameters": [ + { + "type": "string", + "description": "The ID of the space", + "name": "space_id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "List of members", + "schema": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "$ref": "#/definitions/api.SpaceMember" + } + } + } + }, + "403": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/api.UnauthorizedError" + } + }, + "404": { + "description": "Resource not found", + "schema": { + "$ref": "#/definitions/api.NotFoundError" + } + }, + "502": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/api.ServerError" + } + } + } + } + }, + "/spaces/{space_id}/objectTypes": { + "get": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "types_and_templates" + ], + "summary": "Retrieve object types in a specific space", + "parameters": [ + { + "type": "string", + "description": "The ID of the space", + "name": "space_id", + "in": "path", + "required": true + }, + { + "type": "integer", + "description": "The number of items to skip before starting to collect the result set", + "name": "offset", + "in": "query" + }, + { + "type": "integer", + "default": 100, + "description": "The number of items to return", + "name": "limit", + "in": "query" + } + ], + "responses": { + "200": { + "description": "Total and object types", + "schema": { + "type": "object", + "additionalProperties": true + } + }, + "403": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/api.UnauthorizedError" + } + }, + "404": { + "description": "Resource not found", + "schema": { + "$ref": "#/definitions/api.NotFoundError" + } + }, + "502": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/api.ServerError" + } + } + } + } + }, + "/spaces/{space_id}/objectTypes/{typeId}/templates": { + "get": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "types_and_templates" + ], + "summary": "Retrieve a list of templates for a specific object type in a space", + "parameters": [ + { + "type": "string", + "description": "The ID of the space", + "name": "space_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "The ID of the object type", + "name": "typeId", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "List of templates", + "schema": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "$ref": "#/definitions/api.ObjectTemplate" + } + } + } + }, + "403": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/api.UnauthorizedError" + } + }, + "404": { + "description": "Resource not found", + "schema": { + "$ref": "#/definitions/api.NotFoundError" + } + }, + "502": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/api.ServerError" + } + } + } + } + }, + "/spaces/{space_id}/objects": { + "get": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "space_objects" + ], + "summary": "Retrieve objects in a specific space", + "parameters": [ + { + "type": "string", + "description": "The ID of the space", + "name": "space_id", + "in": "path", + "required": true + }, + { + "type": "integer", + "description": "The number of items to skip before starting to collect the result set", + "name": "offset", + "in": "query" + }, + { + "type": "integer", + "default": 100, + "description": "The number of items to return", + "name": "limit", + "in": "query" + } + ], + "responses": { + "200": { + "description": "Total objects and object list", + "schema": { + "type": "object", + "additionalProperties": true + } + }, + "403": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/api.UnauthorizedError" + } + }, + "404": { + "description": "Resource not found", + "schema": { + "$ref": "#/definitions/api.NotFoundError" + } + }, + "502": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/api.ServerError" + } + } + } + }, + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "space_objects" + ], + "summary": "Create a new object in a specific space", + "parameters": [ + { + "type": "string", + "description": "The ID of the space", + "name": "space_id", + "in": "path", + "required": true + }, + { + "description": "Object details (e.g., name)", + "name": "object", + "in": "body", + "required": true, + "schema": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + ], + "responses": { + "200": { + "description": "The created object", + "schema": { + "$ref": "#/definitions/api.Object" + } + }, + "403": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/api.UnauthorizedError" + } + }, + "502": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/api.ServerError" + } + } + } + } + }, + "/spaces/{space_id}/objects/{object_id}": { + "get": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "space_objects" + ], + "summary": "Retrieve a specific object in a space", + "parameters": [ + { + "type": "string", + "description": "The ID of the space", + "name": "space_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "The ID of the object", + "name": "object_id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "The requested object", + "schema": { + "$ref": "#/definitions/api.Object" + } + }, + "403": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/api.UnauthorizedError" + } + }, + "404": { + "description": "Resource not found", + "schema": { + "$ref": "#/definitions/api.NotFoundError" + } + }, + "502": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/api.ServerError" + } + } + } + }, + "put": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "space_objects" + ], + "summary": "Update an existing object in a specific space", + "parameters": [ + { + "type": "string", + "description": "The ID of the space", + "name": "space_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "The ID of the object", + "name": "object_id", + "in": "path", + "required": true + }, + { + "description": "The updated object details", + "name": "object", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/api.Object" + } + } + ], + "responses": { + "200": { + "description": "The updated object", + "schema": { + "$ref": "#/definitions/api.Object" + } + }, + "403": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/api.UnauthorizedError" + } + }, + "404": { + "description": "Resource not found", + "schema": { + "$ref": "#/definitions/api.NotFoundError" + } + }, + "502": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/api.ServerError" + } + } + } + } + } + }, + "definitions": { + "api.Block": { + "type": "object", + "properties": { + "align": { + "type": "string" + }, + "background_color": { + "type": "string" + }, + "children_ids": { + "type": "array", + "items": { + "type": "string" + } + }, + "file": { + "$ref": "#/definitions/api.File" + }, + "id": { + "type": "string" + }, + "layout": { + "$ref": "#/definitions/api.Layout" + }, + "text": { + "$ref": "#/definitions/api.Text" + }, + "verticalalign": { + "type": "string" + } + } + }, + "api.Detail": { + "type": "object", + "properties": { + "details": { + "type": "object", + "additionalProperties": true + }, + "id": { + "type": "string" + } + } + }, + "api.File": { + "type": "object", + "properties": { + "addedat": { + "type": "integer" + }, + "hash": { + "type": "string" + }, + "mime": { + "type": "string" + }, + "name": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "state": { + "type": "integer" + }, + "style": { + "type": "integer" + }, + "targetobjectid": { + "type": "string" + }, + "type": { + "type": "string" + } + } + }, + "api.Layout": { + "type": "object", + "properties": { + "style": { + "type": "string" + } + } + }, + "api.NotFoundError": { + "type": "object", + "properties": { + "error": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + } + } + }, + "api.Object": { + "type": "object", + "properties": { + "blocks": { + "type": "array", + "items": { + "$ref": "#/definitions/api.Block" + } + }, + "details": { + "type": "array", + "items": { + "$ref": "#/definitions/api.Detail" + } + }, + "id": { + "type": "string" + }, + "object_type": { + "type": "string", + "example": "note" + }, + "relation_links_list": { + "type": "array", + "items": { + "$ref": "#/definitions/api.RelationLink" + } + }, + "root_id": { + "type": "string" + }, + "type": { + "type": "string", + "example": "object" + } + } + }, + "api.ObjectTemplate": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "type": { + "type": "string", + "example": "object_template" + } + } + }, + "api.RelationLink": { + "type": "object", + "properties": { + "format": { + "type": "string" + }, + "key": { + "type": "string" + } + } + }, + "api.ServerError": { + "type": "object", + "properties": { + "error": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + } + } + }, + "api.Space": { + "type": "object", + "properties": { + "account_space_id": { + "type": "string", + "example": "bafyreihpd2knon5wbljhtfeg3fcqtg3i2pomhhnigui6lrjmzcjzep7gcy.23me69r569oi1" + }, + "archive_object_id": { + "type": "string", + "example": "bafyreialsgoyflf3etjm3parzurivyaukzivwortf32b4twnlwpwocsrri" + }, + "device_id": { + "type": "string", + "example": "12D3KooWGZMJ4kQVyQVXaj7gJPZr3RZ2nvd9M2Eq2pprEoPih9WF" + }, + "home_object_id": { + "type": "string", + "example": "bafyreie4qcl3wczb4cw5hrfyycikhjyh6oljdis3ewqrk5boaav3sbwqya" + }, + "id": { + "type": "string" + }, + "marketplace_workspace_id": { + "type": "string", + "example": "_anytype_marketplace" + }, + "name": { + "type": "string", + "example": "Space Name" + }, + "network_id": { + "type": "string", + "example": "N83gJpVd9MuNRZAuJLZ7LiMntTThhPc6DtzWWVjb1M3PouVU" + }, + "profile_object_id": { + "type": "string", + "example": "bafyreiaxhwreshjqwndpwtdsu4mtihaqhhmlygqnyqpfyfwlqfq3rm3gw4" + }, + "space_view_id": { + "type": "string", + "example": "bafyreigzv3vq7qwlrsin6njoduq727ssnhwd6bgyfj6nm4hv3pxoc2rxhy" + }, + "tech_space_id": { + "type": "string", + "example": "bafyreif4xuwncrjl6jajt4zrrfnylpki476nv2w64yf42ovt7gia7oypii.23me69r569oi1" + }, + "timezone": { + "type": "string", + "example": "" + }, + "type": { + "type": "string", + "example": "space" + }, + "widgets_id": { + "type": "string", + "example": "bafyreialj7pceh53mifm5dixlho47ke4qjmsn2uh4wsjf7xq2pnlo5xfva" + } + } + }, + "api.SpaceMember": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string", + "example": "" + }, + "role": { + "type": "string" + }, + "type": { + "type": "string", + "example": "space_member" + } + } + }, + "api.Text": { + "type": "object", + "properties": { + "checked": { + "type": "boolean" + }, + "color": { + "type": "string" + }, + "iconemoji": { + "type": "string" + }, + "iconimage": { + "type": "string" + }, + "style": { + "type": "string" + }, + "text": { + "type": "string" + } + } + }, + "api.UnauthorizedError": { + "type": "object", + "properties": { + "error": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + } + } + }, + "api.ValidationError": { + "type": "object", + "properties": { + "error": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + } + } + } + }, + "securityDefinitions": { + "BasicAuth": { + "type": "basic" + } + }, + "externalDocs": { + "description": "OpenAPI", + "url": "https://swagger.io/resources/open-api/" + } +} \ No newline at end of file diff --git a/cmd/api/docs/swagger.yaml b/cmd/api/docs/swagger.yaml new file mode 100644 index 000000000..b8de9a23b --- /dev/null +++ b/cmd/api/docs/swagger.yaml @@ -0,0 +1,657 @@ +basePath: /v1 +definitions: + api.Block: + properties: + align: + type: string + background_color: + type: string + children_ids: + items: + type: string + type: array + file: + $ref: '#/definitions/api.File' + id: + type: string + layout: + $ref: '#/definitions/api.Layout' + text: + $ref: '#/definitions/api.Text' + verticalalign: + type: string + type: object + api.Detail: + properties: + details: + additionalProperties: true + type: object + id: + type: string + type: object + api.File: + properties: + addedat: + type: integer + hash: + type: string + mime: + type: string + name: + type: string + size: + type: integer + state: + type: integer + style: + type: integer + targetobjectid: + type: string + type: + type: string + type: object + api.Layout: + properties: + style: + type: string + type: object + api.NotFoundError: + properties: + error: + properties: + message: + type: string + type: object + type: object + api.Object: + properties: + blocks: + items: + $ref: '#/definitions/api.Block' + type: array + details: + items: + $ref: '#/definitions/api.Detail' + type: array + id: + type: string + object_type: + example: note + type: string + relation_links_list: + items: + $ref: '#/definitions/api.RelationLink' + type: array + root_id: + type: string + type: + example: object + type: string + type: object + api.ObjectTemplate: + properties: + id: + type: string + name: + type: string + type: + example: object_template + type: string + type: object + api.RelationLink: + properties: + format: + type: string + key: + type: string + type: object + api.ServerError: + properties: + error: + properties: + message: + type: string + type: object + type: object + api.Space: + properties: + account_space_id: + example: bafyreihpd2knon5wbljhtfeg3fcqtg3i2pomhhnigui6lrjmzcjzep7gcy.23me69r569oi1 + type: string + archive_object_id: + example: bafyreialsgoyflf3etjm3parzurivyaukzivwortf32b4twnlwpwocsrri + type: string + device_id: + example: 12D3KooWGZMJ4kQVyQVXaj7gJPZr3RZ2nvd9M2Eq2pprEoPih9WF + type: string + home_object_id: + example: bafyreie4qcl3wczb4cw5hrfyycikhjyh6oljdis3ewqrk5boaav3sbwqya + type: string + id: + type: string + marketplace_workspace_id: + example: _anytype_marketplace + type: string + name: + example: Space Name + type: string + network_id: + example: N83gJpVd9MuNRZAuJLZ7LiMntTThhPc6DtzWWVjb1M3PouVU + type: string + profile_object_id: + example: bafyreiaxhwreshjqwndpwtdsu4mtihaqhhmlygqnyqpfyfwlqfq3rm3gw4 + type: string + space_view_id: + example: bafyreigzv3vq7qwlrsin6njoduq727ssnhwd6bgyfj6nm4hv3pxoc2rxhy + type: string + tech_space_id: + example: bafyreif4xuwncrjl6jajt4zrrfnylpki476nv2w64yf42ovt7gia7oypii.23me69r569oi1 + type: string + timezone: + example: "" + type: string + type: + example: space + type: string + widgets_id: + example: bafyreialj7pceh53mifm5dixlho47ke4qjmsn2uh4wsjf7xq2pnlo5xfva + type: string + type: object + api.SpaceMember: + properties: + id: + type: string + name: + example: "" + type: string + role: + type: string + type: + example: space_member + type: string + type: object + api.Text: + properties: + checked: + type: boolean + color: + type: string + iconemoji: + type: string + iconimage: + type: string + style: + type: string + text: + type: string + type: object + api.UnauthorizedError: + properties: + error: + properties: + message: + type: string + type: object + type: object + api.ValidationError: + properties: + error: + properties: + message: + type: string + type: object + type: object +externalDocs: + description: OpenAPI + url: https://swagger.io/resources/open-api/ +host: localhost:31009 +info: + contact: + email: support@anytype.io + name: Anytype Support + url: https://anytype.io/contact + description: This API allows interaction with Anytype resources such as spaces, + objects, and object types. + license: + name: Apache 2.0 + url: http://www.apache.org/licenses/LICENSE-2.0.html + termsOfService: https://anytype.io/terms_of_use + title: Anytype API + version: "1.0" +paths: + /auth/displayCode: + post: + consumes: + - application/json + produces: + - application/json + responses: + "200": + description: Success + schema: + type: string + "502": + description: Internal server error + schema: + $ref: '#/definitions/api.ServerError' + summary: Open a modal window with a code in Anytype Desktop app + tags: + - auth + /auth/token: + get: + consumes: + - application/json + parameters: + - description: The code retrieved from Anytype Desktop app + in: query + name: code + required: true + type: string + produces: + - application/json + responses: + "200": + description: Access and refresh tokens + schema: + additionalProperties: + type: string + type: object + "400": + description: Invalid input + schema: + $ref: '#/definitions/api.ValidationError' + "502": + description: Internal server error + schema: + $ref: '#/definitions/api.ServerError' + summary: Retrieve an authentication token using a code + tags: + - auth + /objects: + get: + consumes: + - application/json + parameters: + - description: The search term to filter objects by name + in: query + name: search + type: string + - description: Specify object type for search + in: query + name: object_type + type: string + - description: The number of items to skip before starting to collect the result + set + in: query + name: offset + type: integer + - default: 100 + description: The number of items to return + in: query + name: limit + type: integer + produces: + - application/json + responses: + "200": + description: Total objects and object list + schema: + additionalProperties: true + type: object + "403": + description: Unauthorized + schema: + $ref: '#/definitions/api.UnauthorizedError' + "502": + description: Internal server error + schema: + $ref: '#/definitions/api.ServerError' + summary: Search and retrieve objects across all the spaces + tags: + - search + /spaces: + get: + consumes: + - application/json + parameters: + - description: The number of items to skip before starting to collect the result + set + in: query + name: offset + type: integer + - default: 100 + description: The number of items to return + in: query + name: limit + type: integer + produces: + - application/json + responses: + "200": + description: List of spaces + schema: + additionalProperties: + items: + $ref: '#/definitions/api.Space' + type: array + type: object + "403": + description: Unauthorized + schema: + $ref: '#/definitions/api.UnauthorizedError' + "502": + description: Internal server error + schema: + $ref: '#/definitions/api.ServerError' + summary: Retrieve a list of spaces + tags: + - spaces + post: + consumes: + - application/json + parameters: + - description: Space Name + in: body + name: name + required: true + schema: + type: string + produces: + - application/json + responses: + "200": + description: Space created successfully + schema: + $ref: '#/definitions/api.Space' + "403": + description: Unauthorized + schema: + $ref: '#/definitions/api.UnauthorizedError' + "502": + description: Internal server error + schema: + $ref: '#/definitions/api.ServerError' + summary: Create a new Space + tags: + - spaces + /spaces/{space_id}/members: + get: + consumes: + - application/json + parameters: + - description: The ID of the space + in: path + name: space_id + required: true + type: string + produces: + - application/json + responses: + "200": + description: List of members + schema: + additionalProperties: + items: + $ref: '#/definitions/api.SpaceMember' + type: array + type: object + "403": + description: Unauthorized + schema: + $ref: '#/definitions/api.UnauthorizedError' + "404": + description: Resource not found + schema: + $ref: '#/definitions/api.NotFoundError' + "502": + description: Internal server error + schema: + $ref: '#/definitions/api.ServerError' + summary: Retrieve a list of members for the specified Space + tags: + - spaces + /spaces/{space_id}/objectTypes: + get: + consumes: + - application/json + parameters: + - description: The ID of the space + in: path + name: space_id + required: true + type: string + - description: The number of items to skip before starting to collect the result + set + in: query + name: offset + type: integer + - default: 100 + description: The number of items to return + in: query + name: limit + type: integer + produces: + - application/json + responses: + "200": + description: Total and object types + schema: + additionalProperties: true + type: object + "403": + description: Unauthorized + schema: + $ref: '#/definitions/api.UnauthorizedError' + "404": + description: Resource not found + schema: + $ref: '#/definitions/api.NotFoundError' + "502": + description: Internal server error + schema: + $ref: '#/definitions/api.ServerError' + summary: Retrieve object types in a specific space + tags: + - types_and_templates + /spaces/{space_id}/objectTypes/{typeId}/templates: + get: + consumes: + - application/json + parameters: + - description: The ID of the space + in: path + name: space_id + required: true + type: string + - description: The ID of the object type + in: path + name: typeId + required: true + type: string + produces: + - application/json + responses: + "200": + description: List of templates + schema: + additionalProperties: + items: + $ref: '#/definitions/api.ObjectTemplate' + type: array + type: object + "403": + description: Unauthorized + schema: + $ref: '#/definitions/api.UnauthorizedError' + "404": + description: Resource not found + schema: + $ref: '#/definitions/api.NotFoundError' + "502": + description: Internal server error + schema: + $ref: '#/definitions/api.ServerError' + summary: Retrieve a list of templates for a specific object type in a space + tags: + - types_and_templates + /spaces/{space_id}/objects: + get: + consumes: + - application/json + parameters: + - description: The ID of the space + in: path + name: space_id + required: true + type: string + - description: The number of items to skip before starting to collect the result + set + in: query + name: offset + type: integer + - default: 100 + description: The number of items to return + in: query + name: limit + type: integer + produces: + - application/json + responses: + "200": + description: Total objects and object list + schema: + additionalProperties: true + type: object + "403": + description: Unauthorized + schema: + $ref: '#/definitions/api.UnauthorizedError' + "404": + description: Resource not found + schema: + $ref: '#/definitions/api.NotFoundError' + "502": + description: Internal server error + schema: + $ref: '#/definitions/api.ServerError' + summary: Retrieve objects in a specific space + tags: + - space_objects + post: + consumes: + - application/json + parameters: + - description: The ID of the space + in: path + name: space_id + required: true + type: string + - description: Object details (e.g., name) + in: body + name: object + required: true + schema: + additionalProperties: + type: string + type: object + produces: + - application/json + responses: + "200": + description: The created object + schema: + $ref: '#/definitions/api.Object' + "403": + description: Unauthorized + schema: + $ref: '#/definitions/api.UnauthorizedError' + "502": + description: Internal server error + schema: + $ref: '#/definitions/api.ServerError' + summary: Create a new object in a specific space + tags: + - space_objects + /spaces/{space_id}/objects/{object_id}: + get: + consumes: + - application/json + parameters: + - description: The ID of the space + in: path + name: space_id + required: true + type: string + - description: The ID of the object + in: path + name: object_id + required: true + type: string + produces: + - application/json + responses: + "200": + description: The requested object + schema: + $ref: '#/definitions/api.Object' + "403": + description: Unauthorized + schema: + $ref: '#/definitions/api.UnauthorizedError' + "404": + description: Resource not found + schema: + $ref: '#/definitions/api.NotFoundError' + "502": + description: Internal server error + schema: + $ref: '#/definitions/api.ServerError' + summary: Retrieve a specific object in a space + tags: + - space_objects + put: + consumes: + - application/json + parameters: + - description: The ID of the space + in: path + name: space_id + required: true + type: string + - description: The ID of the object + in: path + name: object_id + required: true + type: string + - description: The updated object details + in: body + name: object + required: true + schema: + $ref: '#/definitions/api.Object' + produces: + - application/json + responses: + "200": + description: The updated object + schema: + $ref: '#/definitions/api.Object' + "403": + description: Unauthorized + schema: + $ref: '#/definitions/api.UnauthorizedError' + "404": + description: Resource not found + schema: + $ref: '#/definitions/api.NotFoundError' + "502": + description: Internal server error + schema: + $ref: '#/definitions/api.ServerError' + summary: Update an existing object in a specific space + tags: + - space_objects +securityDefinitions: + BasicAuth: + type: basic +swagger: "2.0" diff --git a/cmd/api/handlers.go b/cmd/api/handlers.go index d528ca7d7..59f616002 100644 --- a/cmd/api/handlers.go +++ b/cmd/api/handlers.go @@ -19,7 +19,13 @@ type NameRequest struct { Name string `json:"name"` } -// /v1/auth/displayCode [POST] +// @Summary Open a modal window with a code in Anytype Desktop app +// @Tags auth +// @Accept json +// @Produce json +// @Success 200 {string} string "Success" +// @Failure 502 {object} ServerError "Internal server error" +// @Router /auth/displayCode [post] func (a *ApiServer) authDisplayCodeHandler(c *gin.Context) { // Call AccountLocalLinkNewChallenge to display code modal ctx := context.Background() @@ -32,7 +38,15 @@ func (a *ApiServer) authDisplayCodeHandler(c *gin.Context) { c.JSON(http.StatusOK, gin.H{"challengeId": resp.ChallengeId}) } -// /v1/auth/token [GET] +// @Summary Retrieve an authentication token using a code +// @Tags auth +// @Accept json +// @Produce json +// @Param code query string true "The code retrieved from Anytype Desktop app" +// @Success 200 {object} map[string]string "Access and refresh tokens" +// @Failure 400 {object} ValidationError "Invalid input" +// @Failure 502 {object} ServerError "Internal server error" +// @Router /auth/token [get] func (a *ApiServer) authTokenHandler(c *gin.Context) { // Call AccountLocalLinkSolveChallenge to retrieve session token and app key resp := a.mw.AccountLocalLinkSolveChallenge(context.Background(), &pb.RpcAccountLocalLinkSolveChallengeRequest{ @@ -51,7 +65,16 @@ func (a *ApiServer) authTokenHandler(c *gin.Context) { }) } -// /v1/spaces [GET] +// @Summary Retrieve a list of spaces +// @Tags spaces +// @Accept json +// @Produce json +// @Param offset query int false "The number of items to skip before starting to collect the result set" +// @Param limit query int false "The number of items to return" default(100) +// @Success 200 {object} map[string][]Space "List of spaces" +// @Failure 403 {object} UnauthorizedError "Unauthorized" +// @Failure 502 {object} ServerError "Internal server error" +// @Router /spaces [get] func (a *ApiServer) getSpacesHandler(c *gin.Context) { // Call ObjectSearch for all objects of type spaceView resp := a.mw.ObjectSearch(context.Background(), &pb.RpcObjectSearchRequest{ @@ -106,7 +129,15 @@ func (a *ApiServer) getSpacesHandler(c *gin.Context) { c.JSON(http.StatusOK, gin.H{"spaces": spaces}) } -// /v1/spaces [POST] +// @Summary Create a new Space +// @Tags spaces +// @Accept json +// @Produce json +// @Param name body string true "Space Name" +// @Success 200 {object} Space "Space created successfully" +// @Failure 403 {object} UnauthorizedError "Unauthorized" +// @Failure 502 {object} ServerError "Internal server error" +// @Router /spaces [post] func (a *ApiServer) createSpaceHandler(c *gin.Context) { // Create new workspace with a random icon and import default usecase nameRequest := NameRequest{} @@ -143,7 +174,16 @@ func (a *ApiServer) createSpaceHandler(c *gin.Context) { c.JSON(http.StatusOK, gin.H{"spaceId": resp.SpaceId, "name": name, "iconOption": iconOption}) } -// /v1/spaces/:space_id/members [GET] +// @Summary Retrieve a list of members for the specified Space +// @Tags spaces +// @Accept json +// @Produce json +// @Param space_id path string true "The ID of the space" +// @Success 200 {object} map[string][]SpaceMember "List of members" +// @Failure 403 {object} UnauthorizedError "Unauthorized" +// @Failure 404 {object} NotFoundError "Resource not found" +// @Failure 502 {object} ServerError "Internal server error" +// @Router /spaces/{space_id}/members [get] func (a *ApiServer) getSpaceMembersHandler(c *gin.Context) { // Call ObjectSearch for all objects of type participant spaceId := c.Param("space_id") @@ -186,14 +226,35 @@ func (a *ApiServer) getSpaceMembersHandler(c *gin.Context) { c.JSON(http.StatusOK, gin.H{"members": members}) } -// /v1/spaces/:space_id/objects [GET] +// @Summary Retrieve objects in a specific space +// @Tags space_objects +// @Accept json +// @Produce json +// @Param space_id path string true "The ID of the space" +// @Param offset query int false "The number of items to skip before starting to collect the result set" +// @Param limit query int false "The number of items to return" default(100) +// @Success 200 {object} map[string]interface{} "Total objects and object list" +// @Failure 403 {object} UnauthorizedError "Unauthorized" +// @Failure 404 {object} NotFoundError "Resource not found" +// @Failure 502 {object} ServerError "Internal server error" +// @Router /spaces/{space_id}/objects [get] func (a *ApiServer) getSpaceObjectsHandler(c *gin.Context) { spaceID := c.Param("space_id") // TODO: Implement logic to retrieve objects in a space c.JSON(http.StatusNotImplemented, gin.H{"message": "Not implemented yet", "space_id": spaceID}) } -// /v1/spaces/:space_id/objects/:object_id [GET] +// @Summary Retrieve a specific object in a space +// @Tags space_objects +// @Accept json +// @Produce json +// @Param space_id path string true "The ID of the space" +// @Param object_id path string true "The ID of the object" +// @Success 200 {object} Object "The requested object" +// @Failure 403 {object} UnauthorizedError "Unauthorized" +// @Failure 404 {object} NotFoundError "Resource not found" +// @Failure 502 {object} ServerError "Internal server error" +// @Router /spaces/{space_id}/objects/{object_id} [get] func (a *ApiServer) getObjectHandler(c *gin.Context) { spaceID := c.Param("space_id") objectID := c.Param("object_id") @@ -201,15 +262,34 @@ func (a *ApiServer) getObjectHandler(c *gin.Context) { c.JSON(http.StatusNotImplemented, gin.H{"message": "Not implemented yet", "space_id": spaceID, "object_id": objectID}) } -// /v1/spaces/:space_id/objects/:object_id [POST] +// @Summary Create a new object in a specific space +// @Tags space_objects +// @Accept json +// @Produce json +// @Param space_id path string true "The ID of the space" +// @Param object body map[string]string true "Object details (e.g., name)" +// @Success 200 {object} Object "The created object" +// @Failure 403 {object} UnauthorizedError "Unauthorized" +// @Failure 502 {object} ServerError "Internal server error" +// @Router /spaces/{space_id}/objects [post] func (a *ApiServer) createObjectHandler(c *gin.Context) { spaceID := c.Param("space_id") - objectID := c.Param("object_id") // TODO: Implement logic to create a new object - c.JSON(http.StatusNotImplemented, gin.H{"message": "Not implemented yet", "space_id": spaceID, "object_id": objectID}) + c.JSON(http.StatusNotImplemented, gin.H{"message": "Not implemented yet", "space_id": spaceID}) } -// /v1/spaces/:space_id/objects/:object_id [PUT] +// @Summary Update an existing object in a specific space +// @Tags space_objects +// @Accept json +// @Produce json +// @Param space_id path string true "The ID of the space" +// @Param object_id path string true "The ID of the object" +// @Param object body Object true "The updated object details" +// @Success 200 {object} Object "The updated object" +// @Failure 403 {object} UnauthorizedError "Unauthorized" +// @Failure 404 {object} NotFoundError "Resource not found" +// @Failure 502 {object} ServerError "Internal server error" +// @Router /spaces/{space_id}/objects/{object_id} [put] func (a *ApiServer) updateObjectHandler(c *gin.Context) { spaceID := c.Param("space_id") objectID := c.Param("object_id") @@ -217,14 +297,35 @@ func (a *ApiServer) updateObjectHandler(c *gin.Context) { c.JSON(http.StatusNotImplemented, gin.H{"message": "Not implemented yet", "space_id": spaceID, "object_id": objectID}) } -// /v1/spaces/:space_id/objectTypes [GET] +// @Summary Retrieve object types in a specific space +// @Tags types_and_templates +// @Accept json +// @Produce json +// @Param space_id path string true "The ID of the space" +// @Param offset query int false "The number of items to skip before starting to collect the result set" +// @Param limit query int false "The number of items to return" default(100) +// @Success 200 {object} map[string]interface{} "Total and object types" +// @Failure 403 {object} UnauthorizedError "Unauthorized" +// @Failure 404 {object} NotFoundError "Resource not found" +// @Failure 502 {object} ServerError "Internal server error" +// @Router /spaces/{space_id}/objectTypes [get] func (a *ApiServer) getObjectTypesHandler(c *gin.Context) { spaceID := c.Param("space_id") // TODO: Implement logic to retrieve object types in a space c.JSON(http.StatusNotImplemented, gin.H{"message": "Not implemented yet", "space_id": spaceID}) } -// /v1/spaces/:space_id/objectTypes/:typeId/templates [GET] +// @Summary Retrieve a list of templates for a specific object type in a space +// @Tags types_and_templates +// @Accept json +// @Produce json +// @Param space_id path string true "The ID of the space" +// @Param typeId path string true "The ID of the object type" +// @Success 200 {object} map[string][]ObjectTemplate "List of templates" +// @Failure 403 {object} UnauthorizedError "Unauthorized" +// @Failure 404 {object} NotFoundError "Resource not found" +// @Failure 502 {object} ServerError "Internal server error" +// @Router /spaces/{space_id}/objectTypes/{typeId}/templates [get] func (a *ApiServer) getObjectTypeTemplatesHandler(c *gin.Context) { spaceID := c.Param("space_id") typeID := c.Param("typeId") @@ -232,7 +333,18 @@ func (a *ApiServer) getObjectTypeTemplatesHandler(c *gin.Context) { c.JSON(http.StatusNotImplemented, gin.H{"message": "Not implemented yet", "space_id": spaceID, "typeId": typeID}) } -// /v1/objects [GET] +// @Summary Search and retrieve objects across all the spaces +// @Tags search +// @Accept json +// @Produce json +// @Param search query string false "The search term to filter objects by name" +// @Param object_type query string false "Specify object type for search" +// @Param offset query int false "The number of items to skip before starting to collect the result set" +// @Param limit query int false "The number of items to return" default(100) +// @Success 200 {object} map[string]interface{} "Total objects and object list" +// @Failure 403 {object} UnauthorizedError "Unauthorized" +// @Failure 502 {object} ServerError "Internal server error" +// @Router /objects [get] func (a *ApiServer) getObjectsHandler(c *gin.Context) { // TODO: Implement logic to search and retrieve objects across all spaces c.JSON(http.StatusNotImplemented, gin.H{"message": "Not implemented yet"}) diff --git a/cmd/api/main.go b/cmd/api/main.go index fd57c5b19..1bf299a69 100644 --- a/cmd/api/main.go +++ b/cmd/api/main.go @@ -6,11 +6,13 @@ import ( "net/http" "time" - "github.com/gin-gonic/gin" - + _ "github.com/anyproto/anytype-heart/cmd/api/docs" "github.com/anyproto/anytype-heart/core" "github.com/anyproto/anytype-heart/pb/service" "github.com/anyproto/anytype-heart/pkg/lib/pb/model" + "github.com/gin-gonic/gin" + swaggerFiles "github.com/swaggo/files" + ginSwagger "github.com/swaggo/gin-swagger" ) const ( @@ -49,10 +51,32 @@ func newApiServer(mw service.ClientCommandsServer, mwInternal core.MiddlewareInt return a } +// @title Anytype API +// @version 1.0 +// @description This API allows interaction with Anytype resources such as spaces, objects, and object types. +// @termsOfService https://anytype.io/terms_of_use + +// @contact.name Anytype Support +// @contact.url https://anytype.io/contact +// @contact.email support@anytype.io + +// @license.name Apache 2.0 +// @license.url http://www.apache.org/licenses/LICENSE-2.0.html + +// @host localhost:31009 +// @BasePath /v1 + +// @securityDefinitions.basic BasicAuth + +// @externalDocs.description OpenAPI +// @externalDocs.url https://swagger.io/resources/open-api/ func RunApiServer(ctx context.Context, mw service.ClientCommandsServer, mwInternal core.MiddlewareInternal) { a := newApiServer(mw, mwInternal) a.router.Use(a.EnsureAccountInfoMiddleware()) + // Swagger route + a.router.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) + // Unprotected routes auth := a.router.Group("/v1/auth") { diff --git a/cmd/api/schemas.go b/cmd/api/schemas.go index 01babb22d..37072b263 100644 --- a/cmd/api/schemas.go +++ b/cmd/api/schemas.go @@ -91,3 +91,27 @@ type ObjectTemplate struct { ID string `json:"id"` Name string `json:"name"` } + +type ServerError struct { + Error struct { + Message string `json:"message"` + } `json:"error"` +} + +type ValidationError struct { + Error struct { + Message string `json:"message"` + } `json:"error"` +} + +type UnauthorizedError struct { + Error struct { + Message string `json:"message"` + } `json:"error"` +} + +type NotFoundError struct { + Error struct { + Message string `json:"message"` + } `json:"error"` +} diff --git a/go.mod b/go.mod index 783fb4fde..3d2c7d40e 100644 --- a/go.mod +++ b/go.mod @@ -27,7 +27,7 @@ require ( github.com/dsoprea/go-exif/v3 v3.0.1 github.com/dsoprea/go-jpeg-image-structure/v2 v2.0.0-20221012074422-4f3f7e934102 github.com/ethereum/go-ethereum v1.13.15 - github.com/gin-gonic/gin v1.6.3 + github.com/gin-gonic/gin v1.9.0 github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8 github.com/go-chi/chi/v5 v5.1.0 github.com/go-shiori/go-readability v0.0.0-20241012063810-92284fa8a71f @@ -117,9 +117,12 @@ require ( require ( filippo.io/edwards25519 v1.1.0 // indirect github.com/HdrHistogram/hdrhistogram-go v1.1.2 // indirect + github.com/KyleBanks/depth v1.2.1 // indirect github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/semver v1.5.0 // indirect github.com/Masterminds/sprig v2.22.0+incompatible // indirect + github.com/PuerkitoBio/purell v1.1.1 // indirect + github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b // indirect github.com/alexbrainman/goissue34681 v0.0.0-20191006012335-3fc7a47baff5 // indirect github.com/andybalholm/cascadia v1.3.2 // indirect @@ -131,9 +134,11 @@ require ( github.com/btcsuite/btcd/btcec/v2 v2.2.0 // indirect github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 // indirect github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce // indirect + github.com/bytedance/sonic v1.8.0 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cespare/xxhash v1.1.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 // indirect github.com/chigopher/pathlib v0.19.1 // indirect github.com/crackcomm/go-gitignore v0.0.0-20241020182519-7843d2ba8fdf // indirect github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect @@ -155,13 +160,18 @@ require ( github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.3.0 // indirect - github.com/go-playground/locales v0.13.0 // indirect - github.com/go-playground/universal-translator v0.17.0 // indirect - github.com/go-playground/validator/v10 v10.2.0 // indirect + github.com/go-openapi/jsonpointer v0.19.5 // indirect + github.com/go-openapi/jsonreference v0.19.6 // indirect + github.com/go-openapi/spec v0.20.4 // indirect + github.com/go-openapi/swag v0.19.15 // indirect + github.com/go-playground/locales v0.14.1 // indirect + github.com/go-playground/universal-translator v0.18.1 // indirect + github.com/go-playground/validator/v10 v10.11.2 // indirect github.com/go-shiori/dom v0.0.0-20230515143342-73569d674e1c // indirect github.com/go-task/slim-sprig/v3 v3.0.0 // indirect github.com/go-xmlfmt/xmlfmt v0.0.0-20191208150333-d5b6f63a941b // indirect github.com/gobwas/glob v0.2.3 // indirect + github.com/goccy/go-json v0.10.2 // indirect github.com/gogo/googleapis v1.3.1 // indirect github.com/gogs/chardet v0.0.0-20211120154057-b7413eaefb8f // indirect github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect @@ -193,11 +203,13 @@ require ( github.com/jbenet/go-temp-err-catcher v0.1.0 // indirect github.com/jbenet/goprocess v0.1.4 // indirect github.com/jinzhu/copier v0.3.5 // indirect + github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/cpuid/v2 v2.2.8 // indirect - github.com/leodido/go-urn v1.2.0 // indirect + github.com/leodido/go-urn v1.2.1 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect + github.com/mailru/easyjson v0.7.6 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/miekg/dns v1.1.62 // indirect @@ -241,12 +253,16 @@ require ( github.com/spf13/viper v1.15.0 // indirect github.com/stretchr/objx v0.5.2 // indirect github.com/subosito/gotenv v1.4.2 // indirect + github.com/swaggo/files v1.0.1 // indirect + github.com/swaggo/gin-swagger v1.6.0 // indirect + github.com/swaggo/swag v1.16.4 // indirect github.com/tetratelabs/wazero v1.8.1 // indirect github.com/tklauser/go-sysconf v0.3.12 // indirect github.com/tklauser/numcpus v0.6.1 // indirect + github.com/twitchyliquid64/golang-asm v0.15.1 // indirect github.com/tyler-smith/go-bip39 v1.1.0 // indirect github.com/uber/jaeger-lib v2.4.1+incompatible // indirect - github.com/ugorji/go/codec v1.1.7 // indirect + github.com/ugorji/go/codec v1.2.9 // indirect github.com/whyrusleeping/chunker v0.0.0-20181014151217-fe64bd25879f // indirect github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f // indirect github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect @@ -256,6 +272,7 @@ require ( go.opentelemetry.io/otel v1.32.0 // indirect go.opentelemetry.io/otel/metric v1.32.0 // indirect go.opentelemetry.io/otel/trace v1.32.0 // indirect + golang.org/x/arch v0.0.0-20210923205945-b76863e36670 // indirect golang.org/x/crypto v0.29.0 // indirect golang.org/x/mod v0.22.0 // indirect golang.org/x/sync v0.9.0 // indirect diff --git a/go.sum b/go.sum index 3d86eec18..3eac2d6b9 100644 --- a/go.sum +++ b/go.sum @@ -43,6 +43,8 @@ github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym github.com/HdrHistogram/hdrhistogram-go v1.1.2 h1:5IcZpTvzydCQeHzK4Ef/D5rrSqwxob0t8PQPMybUNFM= github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= +github.com/KyleBanks/depth v1.2.1 h1:5h8fQADFrWtarTdtDudMmGsC7GPbOAu6RVB3ffsVFHc= +github.com/KyleBanks/depth v1.2.1/go.mod h1:jzSb9d0L43HxTQfT+oSA1EEp2q+ne2uh6XgeJcm8brE= github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= @@ -54,6 +56,10 @@ github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAE github.com/PuerkitoBio/goquery v1.8.1/go.mod h1:Q8ICL1kNUJ2sXGoAhPGUdYDJvgQgHzJsnnd3H7Ho5jQ= github.com/PuerkitoBio/goquery v1.10.0 h1:6fiXdLuUvYs2OJSvNRqlNPoBm6YABE226xrbavY5Wv4= github.com/PuerkitoBio/goquery v1.10.0/go.mod h1:TjZZl68Q3eGHNBA8CWaxAN7rOU1EbDz3CWuolcO5Yu4= +github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= +github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M= +github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= github.com/VividCortex/ewma v1.2.0 h1:f58SaIzcDXrSy3kWaHNvuJgJ3Nmz59Zji6XoJR/q1ow= @@ -147,6 +153,9 @@ github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVa github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= +github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM= +github.com/bytedance/sonic v1.8.0 h1:ea0Xadu+sHlu7x5O3gKhRpQ1IKiMrSiHttPF0ybECuA= +github.com/bytedance/sonic v1.8.0/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= @@ -164,6 +173,9 @@ github.com/cheggaaa/mb v1.0.3 h1:03ksWum+6kHclB+kjwKMaBtgl5gtNYUwNpxsHQciKe8= github.com/cheggaaa/mb v1.0.3/go.mod h1:NUl0GBtFLlfg2o6iZwxzcG7Lslc2wV/ADTFbLXtVPE4= github.com/cheggaaa/mb/v3 v3.0.2 h1:jd1Xx0zzihZlXL6HmnRXVCI1BHuXz/kY+VzX9WbvNDU= github.com/cheggaaa/mb/v3 v3.0.2/go.mod h1:zCt2QeYukhd/g0bIdNqF+b/kKz1hnLFNDkP49qN5kqI= +github.com/chenzhuoyu/base64x v0.0.0-20211019084208-fb5309c8db06/go.mod h1:DH46F32mSOjUmXrMHnKwZdA8wcEefY7UVqBKYGjpdQY= +github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 h1:qSGYFH7+jGhDF8vLC+iwCD4WpbV1EBDSzWkJODFLams= +github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311/go.mod h1:b583jCggY9gE99b6G5LEC39OIiVsWj+R97kbl5odCEk= github.com/chigopher/pathlib v0.19.1 h1:RoLlUJc0CqBGwq239cilyhxPNLXTK+HXoASGyGznx5A= github.com/chigopher/pathlib v0.19.1/go.mod h1:tzC1dZLW8o33UQpWkNkhvPwL5n4yyFRFm/jL1YGWFvY= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= @@ -278,6 +290,8 @@ github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.6.3 h1:ahKqKTFpO5KTPHxWZjEdPScmYaGtLo8Y4DMHoEsnp14= github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= +github.com/gin-gonic/gin v1.9.0 h1:OjyFBKICoexlu99ctXNR2gg+c5pKrKMuyjgARg9qeY8= +github.com/gin-gonic/gin v1.9.0/go.mod h1:W1Me9+hsUSyj3CePGrd1/QrKJMSJ1Tu/0hFEH89961k= github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8 h1:DujepqpGd1hyOd7aW59XpK7Qymp8iy83xq74fLr21is= github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= github.com/go-chi/chi/v5 v5.1.0 h1:acVI1TYaD+hhedDJ3r54HyA6sExp3HfXq7QWEEY/xMw= @@ -305,14 +319,31 @@ github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= +github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY= +github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonreference v0.19.6 h1:UBIxjkht+AWIgYzCDSv2GN+E/togfwXUJFRTWhl2Jjs= +github.com/go-openapi/jsonreference v0.19.6/go.mod h1:diGHMEHg2IqXZGKxqyvWdfWU/aim5Dprw5bqpKkTvns= +github.com/go-openapi/spec v0.20.4 h1:O8hJrt0UMnhHcluhIdUgCLRWyM2x7QkBXRvOs7m+O1M= +github.com/go-openapi/spec v0.20.4/go.mod h1:faYFR1CvsJZ0mNsmsphTMSoRrNV3TEDoAM7FOEWeq8I= +github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/swag v0.19.15 h1:D2NRCBzS9/pEY3gP9Nl8aDqGUcPFrwG2p+CNFrLyrCM= +github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q= github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= +github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= +github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD876Lmtgy7VtROAbHHXk8no= github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= +github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= +github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= github.com/go-playground/validator/v10 v10.2.0 h1:KgJ0snyC2R9VXYN2rneOtQcw5aHQB1Vv0sFl1UcHBOY= github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= +github.com/go-playground/validator/v10 v10.11.2 h1:q3SHpufmypg+erIExEKUmsgmhDTyhcJ38oeKGACXohU= +github.com/go-playground/validator/v10 v10.11.2/go.mod h1:NieE624vt4SCTJtD87arVLvdmjPAeV8BQlHtMnw9D7s= github.com/go-shiori/dom v0.0.0-20230515143342-73569d674e1c h1:wpkoddUomPfHiOziHZixGO5ZBS73cKqVzZipfrLmO1w= github.com/go-shiori/dom v0.0.0-20230515143342-73569d674e1c/go.mod h1:oVDCh3qjJMLVUSILBRwrm+Bc6RNXGZYtoh9xdvf1ffM= github.com/go-shiori/go-readability v0.0.0-20241012063810-92284fa8a71f h1:cypj7SJh+47G9J3VCPdMzT3uWcXWAWDJA54ErTfOigI= @@ -334,6 +365,8 @@ github.com/gobwas/ws v1.0.2 h1:CoAavW/wd/kulfZmSIBt6p24n4j7tHgNVCjsfHVNUbo= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= github.com/goccy/go-graphviz v0.2.9 h1:4yD2MIMpxNt+sOEARDh5jTE2S/jeAKi92w72B83mWGg= github.com/goccy/go-graphviz v0.2.9/go.mod h1:hssjl/qbvUXGmloY81BwXt2nqoApKo7DFgDj5dLJGb8= +github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= +github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/googleapis v0.0.0-20180223154316-0cd9801be74a/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= @@ -576,6 +609,8 @@ github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= @@ -603,6 +638,7 @@ github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYs github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc= github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0= +github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.2.8 h1:+StwCXwm9PdpiEkPyzBXIy+M9KUb4ODm0Zarf1kS5BM= github.com/klauspost/cpuid/v2 v2.2.8/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -625,6 +661,8 @@ github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0 github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= +github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= +github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= github.com/libp2p/go-libp2p v0.37.0 h1:8K3mcZgwTldydMCNOiNi/ZJrOB9BY+GlI3UxYzxBi9A= @@ -652,6 +690,10 @@ github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2 github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.7.6 h1:8yTIVnZgCoiM1TgqoeTl+LfU5Jg6/xL3QhGQnimLYnA= +github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/matishsiao/goInfo v0.0.0-20240924010139-10388a85396f h1:XDrsC/9hdgiU9ecceSmYsS2E3fBtFiYc34dAMFgegnM= github.com/matishsiao/goInfo v0.0.0-20240924010139-10388a85396f/go.mod h1:aEt7p9Rvh67BYApmZwNDPpgircTO2kgdmDUoF/1QmwA= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= @@ -971,6 +1013,12 @@ github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsT github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8= github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= +github.com/swaggo/files v1.0.1 h1:J1bVJ4XHZNq0I46UU90611i9/YzdrF7x92oX1ig5IdE= +github.com/swaggo/files v1.0.1/go.mod h1:0qXmMNH6sXNf+73t65aKeB+ApmgxdnkQzVTAj2uaMUg= +github.com/swaggo/gin-swagger v1.6.0 h1:y8sxvQ3E20/RCyrXeFfg60r6H0Z+SwpTjMYsMm+zy8M= +github.com/swaggo/gin-swagger v1.6.0/go.mod h1:BG00cCEy294xtVpyIAHG6+e2Qzj/xKlRdOqDkvq0uzo= +github.com/swaggo/swag v1.16.4 h1:clWJtd9LStiG3VeijiCfOVODP6VpHtKdQy9ELFG3s1A= +github.com/swaggo/swag v1.16.4/go.mod h1:VBsHJRsDvfYvqoiMKnsdwhNV9LEMHgEDZcyVYX0sxPg= github.com/tetratelabs/wazero v1.8.1 h1:NrcgVbWfkWvVc4UtT4LRLDf91PsOzDzefMdwhLfA550= github.com/tetratelabs/wazero v1.8.1/go.mod h1:yAI0XTsMBhREkM/YDAK/zNou3GoiAce1P6+rp/wQhjs= github.com/tj/assert v0.0.0-20190920132354-ee03d75cd160 h1:NSWpaDaurcAJY7PkL8Xt0PhZE7qpvbZl5ljd8r6U0bI= @@ -980,6 +1028,8 @@ github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0h github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= +github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2nyfOP8= github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U= github.com/uber/jaeger-client-go v2.30.0+incompatible h1:D6wyKGCecFaSRUpo8lCVbaOOb6ThwMmTEbhRwtKR97o= @@ -989,6 +1039,8 @@ github.com/uber/jaeger-lib v2.4.1+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6 github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v1.1.7 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= +github.com/ugorji/go/codec v1.2.9 h1:rmenucSohSTiyL09Y+l2OCk+FrMxGMzho2+tjr5ticU= +github.com/ugorji/go/codec v1.2.9/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.10/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= @@ -1075,6 +1127,8 @@ go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +golang.org/x/arch v0.0.0-20210923205945-b76863e36670 h1:18EFjUmQOcUvxNYSkA6jO9VAiXCnxFY6NyDX0bHDmkU= +golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -1186,6 +1240,7 @@ golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= golang.org/x/net v0.0.0-20210423184538-5f58ad60dda6/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210916014120-12bc252f5db8/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= @@ -1279,6 +1334,7 @@ golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210426080607-c94f62235c83/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1538,6 +1594,7 @@ gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= From e16e5d29608c27896957a1de7ccea1488df37582 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Wed, 20 Nov 2024 15:55:35 +0100 Subject: [PATCH 010/279] GO-4459 Fix lint imports and fmt --- cmd/api/handlers.go | 250 ++++++++++++++++++++++---------------------- cmd/api/main.go | 7 +- 2 files changed, 129 insertions(+), 128 deletions(-) diff --git a/cmd/api/handlers.go b/cmd/api/handlers.go index 59f616002..75328cbaa 100644 --- a/cmd/api/handlers.go +++ b/cmd/api/handlers.go @@ -19,13 +19,13 @@ type NameRequest struct { Name string `json:"name"` } -// @Summary Open a modal window with a code in Anytype Desktop app -// @Tags auth -// @Accept json -// @Produce json -// @Success 200 {string} string "Success" -// @Failure 502 {object} ServerError "Internal server error" -// @Router /auth/displayCode [post] +// @Summary Open a modal window with a code in Anytype Desktop app +// @Tags auth +// @Accept json +// @Produce json +// @Success 200 {string} string "Success" +// @Failure 502 {object} ServerError "Internal server error" +// @Router /auth/displayCode [post] func (a *ApiServer) authDisplayCodeHandler(c *gin.Context) { // Call AccountLocalLinkNewChallenge to display code modal ctx := context.Background() @@ -38,15 +38,15 @@ func (a *ApiServer) authDisplayCodeHandler(c *gin.Context) { c.JSON(http.StatusOK, gin.H{"challengeId": resp.ChallengeId}) } -// @Summary Retrieve an authentication token using a code -// @Tags auth -// @Accept json -// @Produce json -// @Param code query string true "The code retrieved from Anytype Desktop app" -// @Success 200 {object} map[string]string "Access and refresh tokens" -// @Failure 400 {object} ValidationError "Invalid input" -// @Failure 502 {object} ServerError "Internal server error" -// @Router /auth/token [get] +// @Summary Retrieve an authentication token using a code +// @Tags auth +// @Accept json +// @Produce json +// @Param code query string true "The code retrieved from Anytype Desktop app" +// @Success 200 {object} map[string]string "Access and refresh tokens" +// @Failure 400 {object} ValidationError "Invalid input" +// @Failure 502 {object} ServerError "Internal server error" +// @Router /auth/token [get] func (a *ApiServer) authTokenHandler(c *gin.Context) { // Call AccountLocalLinkSolveChallenge to retrieve session token and app key resp := a.mw.AccountLocalLinkSolveChallenge(context.Background(), &pb.RpcAccountLocalLinkSolveChallengeRequest{ @@ -65,16 +65,16 @@ func (a *ApiServer) authTokenHandler(c *gin.Context) { }) } -// @Summary Retrieve a list of spaces -// @Tags spaces -// @Accept json -// @Produce json -// @Param offset query int false "The number of items to skip before starting to collect the result set" -// @Param limit query int false "The number of items to return" default(100) -// @Success 200 {object} map[string][]Space "List of spaces" -// @Failure 403 {object} UnauthorizedError "Unauthorized" -// @Failure 502 {object} ServerError "Internal server error" -// @Router /spaces [get] +// @Summary Retrieve a list of spaces +// @Tags spaces +// @Accept json +// @Produce json +// @Param offset query int false "The number of items to skip before starting to collect the result set" +// @Param limit query int false "The number of items to return" default(100) +// @Success 200 {object} map[string][]Space "List of spaces" +// @Failure 403 {object} UnauthorizedError "Unauthorized" +// @Failure 502 {object} ServerError "Internal server error" +// @Router /spaces [get] func (a *ApiServer) getSpacesHandler(c *gin.Context) { // Call ObjectSearch for all objects of type spaceView resp := a.mw.ObjectSearch(context.Background(), &pb.RpcObjectSearchRequest{ @@ -129,15 +129,15 @@ func (a *ApiServer) getSpacesHandler(c *gin.Context) { c.JSON(http.StatusOK, gin.H{"spaces": spaces}) } -// @Summary Create a new Space -// @Tags spaces -// @Accept json -// @Produce json -// @Param name body string true "Space Name" -// @Success 200 {object} Space "Space created successfully" -// @Failure 403 {object} UnauthorizedError "Unauthorized" -// @Failure 502 {object} ServerError "Internal server error" -// @Router /spaces [post] +// @Summary Create a new Space +// @Tags spaces +// @Accept json +// @Produce json +// @Param name body string true "Space Name" +// @Success 200 {object} Space "Space created successfully" +// @Failure 403 {object} UnauthorizedError "Unauthorized" +// @Failure 502 {object} ServerError "Internal server error" +// @Router /spaces [post] func (a *ApiServer) createSpaceHandler(c *gin.Context) { // Create new workspace with a random icon and import default usecase nameRequest := NameRequest{} @@ -174,16 +174,16 @@ func (a *ApiServer) createSpaceHandler(c *gin.Context) { c.JSON(http.StatusOK, gin.H{"spaceId": resp.SpaceId, "name": name, "iconOption": iconOption}) } -// @Summary Retrieve a list of members for the specified Space -// @Tags spaces -// @Accept json -// @Produce json -// @Param space_id path string true "The ID of the space" -// @Success 200 {object} map[string][]SpaceMember "List of members" -// @Failure 403 {object} UnauthorizedError "Unauthorized" -// @Failure 404 {object} NotFoundError "Resource not found" -// @Failure 502 {object} ServerError "Internal server error" -// @Router /spaces/{space_id}/members [get] +// @Summary Retrieve a list of members for the specified Space +// @Tags spaces +// @Accept json +// @Produce json +// @Param space_id path string true "The ID of the space" +// @Success 200 {object} map[string][]SpaceMember "List of members" +// @Failure 403 {object} UnauthorizedError "Unauthorized" +// @Failure 404 {object} NotFoundError "Resource not found" +// @Failure 502 {object} ServerError "Internal server error" +// @Router /spaces/{space_id}/members [get] func (a *ApiServer) getSpaceMembersHandler(c *gin.Context) { // Call ObjectSearch for all objects of type participant spaceId := c.Param("space_id") @@ -226,35 +226,35 @@ func (a *ApiServer) getSpaceMembersHandler(c *gin.Context) { c.JSON(http.StatusOK, gin.H{"members": members}) } -// @Summary Retrieve objects in a specific space -// @Tags space_objects -// @Accept json -// @Produce json -// @Param space_id path string true "The ID of the space" -// @Param offset query int false "The number of items to skip before starting to collect the result set" -// @Param limit query int false "The number of items to return" default(100) -// @Success 200 {object} map[string]interface{} "Total objects and object list" -// @Failure 403 {object} UnauthorizedError "Unauthorized" -// @Failure 404 {object} NotFoundError "Resource not found" -// @Failure 502 {object} ServerError "Internal server error" -// @Router /spaces/{space_id}/objects [get] +// @Summary Retrieve objects in a specific space +// @Tags space_objects +// @Accept json +// @Produce json +// @Param space_id path string true "The ID of the space" +// @Param offset query int false "The number of items to skip before starting to collect the result set" +// @Param limit query int false "The number of items to return" default(100) +// @Success 200 {object} map[string]interface{} "Total objects and object list" +// @Failure 403 {object} UnauthorizedError "Unauthorized" +// @Failure 404 {object} NotFoundError "Resource not found" +// @Failure 502 {object} ServerError "Internal server error" +// @Router /spaces/{space_id}/objects [get] func (a *ApiServer) getSpaceObjectsHandler(c *gin.Context) { spaceID := c.Param("space_id") // TODO: Implement logic to retrieve objects in a space c.JSON(http.StatusNotImplemented, gin.H{"message": "Not implemented yet", "space_id": spaceID}) } -// @Summary Retrieve a specific object in a space -// @Tags space_objects -// @Accept json -// @Produce json -// @Param space_id path string true "The ID of the space" -// @Param object_id path string true "The ID of the object" -// @Success 200 {object} Object "The requested object" -// @Failure 403 {object} UnauthorizedError "Unauthorized" -// @Failure 404 {object} NotFoundError "Resource not found" -// @Failure 502 {object} ServerError "Internal server error" -// @Router /spaces/{space_id}/objects/{object_id} [get] +// @Summary Retrieve a specific object in a space +// @Tags space_objects +// @Accept json +// @Produce json +// @Param space_id path string true "The ID of the space" +// @Param object_id path string true "The ID of the object" +// @Success 200 {object} Object "The requested object" +// @Failure 403 {object} UnauthorizedError "Unauthorized" +// @Failure 404 {object} NotFoundError "Resource not found" +// @Failure 502 {object} ServerError "Internal server error" +// @Router /spaces/{space_id}/objects/{object_id} [get] func (a *ApiServer) getObjectHandler(c *gin.Context) { spaceID := c.Param("space_id") objectID := c.Param("object_id") @@ -262,34 +262,34 @@ func (a *ApiServer) getObjectHandler(c *gin.Context) { c.JSON(http.StatusNotImplemented, gin.H{"message": "Not implemented yet", "space_id": spaceID, "object_id": objectID}) } -// @Summary Create a new object in a specific space -// @Tags space_objects -// @Accept json -// @Produce json -// @Param space_id path string true "The ID of the space" -// @Param object body map[string]string true "Object details (e.g., name)" -// @Success 200 {object} Object "The created object" -// @Failure 403 {object} UnauthorizedError "Unauthorized" -// @Failure 502 {object} ServerError "Internal server error" -// @Router /spaces/{space_id}/objects [post] +// @Summary Create a new object in a specific space +// @Tags space_objects +// @Accept json +// @Produce json +// @Param space_id path string true "The ID of the space" +// @Param object body map[string]string true "Object details (e.g., name)" +// @Success 200 {object} Object "The created object" +// @Failure 403 {object} UnauthorizedError "Unauthorized" +// @Failure 502 {object} ServerError "Internal server error" +// @Router /spaces/{space_id}/objects [post] func (a *ApiServer) createObjectHandler(c *gin.Context) { spaceID := c.Param("space_id") // TODO: Implement logic to create a new object c.JSON(http.StatusNotImplemented, gin.H{"message": "Not implemented yet", "space_id": spaceID}) } -// @Summary Update an existing object in a specific space -// @Tags space_objects -// @Accept json -// @Produce json -// @Param space_id path string true "The ID of the space" -// @Param object_id path string true "The ID of the object" -// @Param object body Object true "The updated object details" -// @Success 200 {object} Object "The updated object" -// @Failure 403 {object} UnauthorizedError "Unauthorized" -// @Failure 404 {object} NotFoundError "Resource not found" -// @Failure 502 {object} ServerError "Internal server error" -// @Router /spaces/{space_id}/objects/{object_id} [put] +// @Summary Update an existing object in a specific space +// @Tags space_objects +// @Accept json +// @Produce json +// @Param space_id path string true "The ID of the space" +// @Param object_id path string true "The ID of the object" +// @Param object body Object true "The updated object details" +// @Success 200 {object} Object "The updated object" +// @Failure 403 {object} UnauthorizedError "Unauthorized" +// @Failure 404 {object} NotFoundError "Resource not found" +// @Failure 502 {object} ServerError "Internal server error" +// @Router /spaces/{space_id}/objects/{object_id} [put] func (a *ApiServer) updateObjectHandler(c *gin.Context) { spaceID := c.Param("space_id") objectID := c.Param("object_id") @@ -297,35 +297,35 @@ func (a *ApiServer) updateObjectHandler(c *gin.Context) { c.JSON(http.StatusNotImplemented, gin.H{"message": "Not implemented yet", "space_id": spaceID, "object_id": objectID}) } -// @Summary Retrieve object types in a specific space -// @Tags types_and_templates -// @Accept json -// @Produce json -// @Param space_id path string true "The ID of the space" -// @Param offset query int false "The number of items to skip before starting to collect the result set" -// @Param limit query int false "The number of items to return" default(100) -// @Success 200 {object} map[string]interface{} "Total and object types" -// @Failure 403 {object} UnauthorizedError "Unauthorized" -// @Failure 404 {object} NotFoundError "Resource not found" -// @Failure 502 {object} ServerError "Internal server error" -// @Router /spaces/{space_id}/objectTypes [get] +// @Summary Retrieve object types in a specific space +// @Tags types_and_templates +// @Accept json +// @Produce json +// @Param space_id path string true "The ID of the space" +// @Param offset query int false "The number of items to skip before starting to collect the result set" +// @Param limit query int false "The number of items to return" default(100) +// @Success 200 {object} map[string]interface{} "Total and object types" +// @Failure 403 {object} UnauthorizedError "Unauthorized" +// @Failure 404 {object} NotFoundError "Resource not found" +// @Failure 502 {object} ServerError "Internal server error" +// @Router /spaces/{space_id}/objectTypes [get] func (a *ApiServer) getObjectTypesHandler(c *gin.Context) { spaceID := c.Param("space_id") // TODO: Implement logic to retrieve object types in a space c.JSON(http.StatusNotImplemented, gin.H{"message": "Not implemented yet", "space_id": spaceID}) } -// @Summary Retrieve a list of templates for a specific object type in a space -// @Tags types_and_templates -// @Accept json -// @Produce json -// @Param space_id path string true "The ID of the space" -// @Param typeId path string true "The ID of the object type" -// @Success 200 {object} map[string][]ObjectTemplate "List of templates" -// @Failure 403 {object} UnauthorizedError "Unauthorized" -// @Failure 404 {object} NotFoundError "Resource not found" -// @Failure 502 {object} ServerError "Internal server error" -// @Router /spaces/{space_id}/objectTypes/{typeId}/templates [get] +// @Summary Retrieve a list of templates for a specific object type in a space +// @Tags types_and_templates +// @Accept json +// @Produce json +// @Param space_id path string true "The ID of the space" +// @Param typeId path string true "The ID of the object type" +// @Success 200 {object} map[string][]ObjectTemplate "List of templates" +// @Failure 403 {object} UnauthorizedError "Unauthorized" +// @Failure 404 {object} NotFoundError "Resource not found" +// @Failure 502 {object} ServerError "Internal server error" +// @Router /spaces/{space_id}/objectTypes/{typeId}/templates [get] func (a *ApiServer) getObjectTypeTemplatesHandler(c *gin.Context) { spaceID := c.Param("space_id") typeID := c.Param("typeId") @@ -333,18 +333,18 @@ func (a *ApiServer) getObjectTypeTemplatesHandler(c *gin.Context) { c.JSON(http.StatusNotImplemented, gin.H{"message": "Not implemented yet", "space_id": spaceID, "typeId": typeID}) } -// @Summary Search and retrieve objects across all the spaces -// @Tags search -// @Accept json -// @Produce json -// @Param search query string false "The search term to filter objects by name" -// @Param object_type query string false "Specify object type for search" -// @Param offset query int false "The number of items to skip before starting to collect the result set" -// @Param limit query int false "The number of items to return" default(100) -// @Success 200 {object} map[string]interface{} "Total objects and object list" -// @Failure 403 {object} UnauthorizedError "Unauthorized" -// @Failure 502 {object} ServerError "Internal server error" -// @Router /objects [get] +// @Summary Search and retrieve objects across all the spaces +// @Tags search +// @Accept json +// @Produce json +// @Param search query string false "The search term to filter objects by name" +// @Param object_type query string false "Specify object type for search" +// @Param offset query int false "The number of items to skip before starting to collect the result set" +// @Param limit query int false "The number of items to return" default(100) +// @Success 200 {object} map[string]interface{} "Total objects and object list" +// @Failure 403 {object} UnauthorizedError "Unauthorized" +// @Failure 502 {object} ServerError "Internal server error" +// @Router /objects [get] func (a *ApiServer) getObjectsHandler(c *gin.Context) { // TODO: Implement logic to search and retrieve objects across all spaces c.JSON(http.StatusNotImplemented, gin.H{"message": "Not implemented yet"}) diff --git a/cmd/api/main.go b/cmd/api/main.go index 1bf299a69..5070d238d 100644 --- a/cmd/api/main.go +++ b/cmd/api/main.go @@ -6,13 +6,14 @@ import ( "net/http" "time" + "github.com/gin-gonic/gin" + swaggerFiles "github.com/swaggo/files" + ginSwagger "github.com/swaggo/gin-swagger" + _ "github.com/anyproto/anytype-heart/cmd/api/docs" "github.com/anyproto/anytype-heart/core" "github.com/anyproto/anytype-heart/pb/service" "github.com/anyproto/anytype-heart/pkg/lib/pb/model" - "github.com/gin-gonic/gin" - swaggerFiles "github.com/swaggo/files" - ginSwagger "github.com/swaggo/gin-swagger" ) const ( From 8db96dee1fbc4ea2300e7c0b7f475a124b5e3de6 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Wed, 20 Nov 2024 16:05:24 +0100 Subject: [PATCH 011/279] GO-4459 Fix godoc consistency --- cmd/api/handlers.go | 275 ++++++++++++++++++++++++-------------------- 1 file changed, 150 insertions(+), 125 deletions(-) diff --git a/cmd/api/handlers.go b/cmd/api/handlers.go index 75328cbaa..597a1d970 100644 --- a/cmd/api/handlers.go +++ b/cmd/api/handlers.go @@ -19,13 +19,15 @@ type NameRequest struct { Name string `json:"name"` } -// @Summary Open a modal window with a code in Anytype Desktop app -// @Tags auth -// @Accept json -// @Produce json -// @Success 200 {string} string "Success" -// @Failure 502 {object} ServerError "Internal server error" -// @Router /auth/displayCode [post] +// authdisplayCodeHandler generates a new challenge and returns the challenge ID +// +// @Summary Open a modal window with a code in Anytype Desktop app +// @Tags auth +// @Accept json +// @Produce json +// @Success 200 {string} string "Success" +// @Failure 502 {object} ServerError "Internal server error" +// @Router /auth/displayCode [post] func (a *ApiServer) authDisplayCodeHandler(c *gin.Context) { // Call AccountLocalLinkNewChallenge to display code modal ctx := context.Background() @@ -38,15 +40,18 @@ func (a *ApiServer) authDisplayCodeHandler(c *gin.Context) { c.JSON(http.StatusOK, gin.H{"challengeId": resp.ChallengeId}) } -// @Summary Retrieve an authentication token using a code -// @Tags auth -// @Accept json -// @Produce json -// @Param code query string true "The code retrieved from Anytype Desktop app" -// @Success 200 {object} map[string]string "Access and refresh tokens" -// @Failure 400 {object} ValidationError "Invalid input" -// @Failure 502 {object} ServerError "Internal server error" -// @Router /auth/token [get] +// authTokenHandler retrieves an authentication token using a code and challenge ID +// +// @Summary Retrieve an authentication token using a code +// @Tags auth +// @Accept json +// @Produce json +// @Param code query string true "The code retrieved from Anytype Desktop app" +// @ParamchallengeId query string true "The challenge ID" +// @Success 200 {object} map[string]string "Access and refresh tokens" +// @Failure 400 {object} ValidationError "Invalid input" +// @Failure 502 {object} ServerError "Internal server error" +// @Router /auth/token [get] func (a *ApiServer) authTokenHandler(c *gin.Context) { // Call AccountLocalLinkSolveChallenge to retrieve session token and app key resp := a.mw.AccountLocalLinkSolveChallenge(context.Background(), &pb.RpcAccountLocalLinkSolveChallengeRequest{ @@ -65,16 +70,18 @@ func (a *ApiServer) authTokenHandler(c *gin.Context) { }) } -// @Summary Retrieve a list of spaces -// @Tags spaces -// @Accept json -// @Produce json -// @Param offset query int false "The number of items to skip before starting to collect the result set" -// @Param limit query int false "The number of items to return" default(100) -// @Success 200 {object} map[string][]Space "List of spaces" -// @Failure 403 {object} UnauthorizedError "Unauthorized" -// @Failure 502 {object} ServerError "Internal server error" -// @Router /spaces [get] +// getSpacesHandler retrieves a list of spaces +// +// @Summary Retrieve a list of spaces +// @Tags spaces +// @Accept json +// @Produce json +// @Param offset query int false "The number of items to skip before starting to collect the result set" +// @Param limit query int false "The number of items to return" default(100) +// @Success 200 {object} map[string][]Space "List of spaces" +// @Failure 403 {object} UnauthorizedError "Unauthorized" +// @Failure 502 {object} ServerError "Internal server error" +// @Router /spaces [get] func (a *ApiServer) getSpacesHandler(c *gin.Context) { // Call ObjectSearch for all objects of type spaceView resp := a.mw.ObjectSearch(context.Background(), &pb.RpcObjectSearchRequest{ @@ -129,15 +136,17 @@ func (a *ApiServer) getSpacesHandler(c *gin.Context) { c.JSON(http.StatusOK, gin.H{"spaces": spaces}) } -// @Summary Create a new Space -// @Tags spaces -// @Accept json -// @Produce json -// @Param name body string true "Space Name" -// @Success 200 {object} Space "Space created successfully" -// @Failure 403 {object} UnauthorizedError "Unauthorized" -// @Failure 502 {object} ServerError "Internal server error" -// @Router /spaces [post] +// createSpaceHandler creates a new space +// +// @Summary Create a new Space +// @Tags spaces +// @Accept json +// @Produce json +// @Param name body string true "Space Name" +// @Success 200 {object} Space "Space created successfully" +// @Failure 403 {object} UnauthorizedError "Unauthorized" +// @Failure 502 {object} ServerError "Internal server error" +// @Router /spaces [post] func (a *ApiServer) createSpaceHandler(c *gin.Context) { // Create new workspace with a random icon and import default usecase nameRequest := NameRequest{} @@ -174,16 +183,18 @@ func (a *ApiServer) createSpaceHandler(c *gin.Context) { c.JSON(http.StatusOK, gin.H{"spaceId": resp.SpaceId, "name": name, "iconOption": iconOption}) } -// @Summary Retrieve a list of members for the specified Space -// @Tags spaces -// @Accept json -// @Produce json -// @Param space_id path string true "The ID of the space" -// @Success 200 {object} map[string][]SpaceMember "List of members" -// @Failure 403 {object} UnauthorizedError "Unauthorized" -// @Failure 404 {object} NotFoundError "Resource not found" -// @Failure 502 {object} ServerError "Internal server error" -// @Router /spaces/{space_id}/members [get] +// getSpaceMembersHandler retrieves a list of members for the specified space +// +// @Summary Retrieve a list of members for the specified Space +// @Tags spaces +// @Accept json +// @Produce json +// @Param space_id path string true "The ID of the space" +// @Success 200 {object} map[string][]SpaceMember "List of members" +// @Failure 403 {object} UnauthorizedError "Unauthorized" +// @Failure 404 {object} NotFoundError "Resource not found" +// @Failure 502 {object} ServerError "Internal server error" +// @Router /spaces/{space_id}/members [get] func (a *ApiServer) getSpaceMembersHandler(c *gin.Context) { // Call ObjectSearch for all objects of type participant spaceId := c.Param("space_id") @@ -226,35 +237,39 @@ func (a *ApiServer) getSpaceMembersHandler(c *gin.Context) { c.JSON(http.StatusOK, gin.H{"members": members}) } -// @Summary Retrieve objects in a specific space -// @Tags space_objects -// @Accept json -// @Produce json -// @Param space_id path string true "The ID of the space" -// @Param offset query int false "The number of items to skip before starting to collect the result set" -// @Param limit query int false "The number of items to return" default(100) -// @Success 200 {object} map[string]interface{} "Total objects and object list" -// @Failure 403 {object} UnauthorizedError "Unauthorized" -// @Failure 404 {object} NotFoundError "Resource not found" -// @Failure 502 {object} ServerError "Internal server error" -// @Router /spaces/{space_id}/objects [get] +// getSpaceHandler retrieves objects in a specific space +// +// @Summary Retrieve objects in a specific space +// @Tags space_objects +// @Accept json +// @Produce json +// @Param space_id path string true "The ID of the space" +// @Param offset query int false "The number of items to skip before starting to collect the result set" +// @Param limit query int false "The number of items to return" default(100) +// @Success 200 {object} map[string]interface{} "Total objects and object list" +// @Failure 403 {object} UnauthorizedError "Unauthorized" +// @Failure 404 {object} NotFoundError "Resource not found" +// @Failure 502 {object} ServerError "Internal server error" +// @Router /spaces/{space_id}/objects [get] func (a *ApiServer) getSpaceObjectsHandler(c *gin.Context) { spaceID := c.Param("space_id") // TODO: Implement logic to retrieve objects in a space c.JSON(http.StatusNotImplemented, gin.H{"message": "Not implemented yet", "space_id": spaceID}) } -// @Summary Retrieve a specific object in a space -// @Tags space_objects -// @Accept json -// @Produce json -// @Param space_id path string true "The ID of the space" -// @Param object_id path string true "The ID of the object" -// @Success 200 {object} Object "The requested object" -// @Failure 403 {object} UnauthorizedError "Unauthorized" -// @Failure 404 {object} NotFoundError "Resource not found" -// @Failure 502 {object} ServerError "Internal server error" -// @Router /spaces/{space_id}/objects/{object_id} [get] +// getObjectHandler retrieves a specific object in a space +// +// @Summary Retrieve a specific object in a space +// @Tags space_objects +// @Accept json +// @Produce json +// @Param space_id path string true "The ID of the space" +// @Param object_id path string true "The ID of the object" +// @Success 200 {object} Object "The requested object" +// @Failure 403 {object} UnauthorizedError "Unauthorized" +// @Failure 404 {object} NotFoundError "Resource not found" +// @Failure 502 {object} ServerError "Internal server error" +// @Router /spaces/{space_id}/objects/{object_id} [get] func (a *ApiServer) getObjectHandler(c *gin.Context) { spaceID := c.Param("space_id") objectID := c.Param("object_id") @@ -262,34 +277,38 @@ func (a *ApiServer) getObjectHandler(c *gin.Context) { c.JSON(http.StatusNotImplemented, gin.H{"message": "Not implemented yet", "space_id": spaceID, "object_id": objectID}) } -// @Summary Create a new object in a specific space -// @Tags space_objects -// @Accept json -// @Produce json -// @Param space_id path string true "The ID of the space" -// @Param object body map[string]string true "Object details (e.g., name)" -// @Success 200 {object} Object "The created object" -// @Failure 403 {object} UnauthorizedError "Unauthorized" -// @Failure 502 {object} ServerError "Internal server error" -// @Router /spaces/{space_id}/objects [post] +// createObjectHandler creates a new object in a specific space +// +// @Summary Create a new object in a specific space +// @Tags space_objects +// @Accept json +// @Produce json +// @Param space_id path string true "The ID of the space" +// @Param object body map[string]string true "Object details (e.g., name)" +// @Success 200 {object} Object "The created object" +// @Failure 403 {object} UnauthorizedError "Unauthorized" +// @Failure 502 {object} ServerError "Internal server error" +// @Router /spaces/{space_id}/objects [post] func (a *ApiServer) createObjectHandler(c *gin.Context) { spaceID := c.Param("space_id") // TODO: Implement logic to create a new object c.JSON(http.StatusNotImplemented, gin.H{"message": "Not implemented yet", "space_id": spaceID}) } -// @Summary Update an existing object in a specific space -// @Tags space_objects -// @Accept json -// @Produce json -// @Param space_id path string true "The ID of the space" -// @Param object_id path string true "The ID of the object" -// @Param object body Object true "The updated object details" -// @Success 200 {object} Object "The updated object" -// @Failure 403 {object} UnauthorizedError "Unauthorized" -// @Failure 404 {object} NotFoundError "Resource not found" -// @Failure 502 {object} ServerError "Internal server error" -// @Router /spaces/{space_id}/objects/{object_id} [put] +// updateObjectHandler updates an existing object in a specific space +// +// @Summary Update an existing object in a specific space +// @Tags space_objects +// @Accept json +// @Produce json +// @Param space_id path string true "The ID of the space" +// @Param object_id path string true "The ID of the object" +// @Param object body Object true "The updated object details" +// @Success 200 {object} Object "The updated object" +// @Failure 403 {object} UnauthorizedError "Unauthorized" +// @Failure 404 {object} NotFoundError "Resource not found" +// @Failure 502 {object} ServerError "Internal server error" +// @Router /spaces/{space_id}/objects/{object_id} [put] func (a *ApiServer) updateObjectHandler(c *gin.Context) { spaceID := c.Param("space_id") objectID := c.Param("object_id") @@ -297,35 +316,39 @@ func (a *ApiServer) updateObjectHandler(c *gin.Context) { c.JSON(http.StatusNotImplemented, gin.H{"message": "Not implemented yet", "space_id": spaceID, "object_id": objectID}) } -// @Summary Retrieve object types in a specific space -// @Tags types_and_templates -// @Accept json -// @Produce json -// @Param space_id path string true "The ID of the space" -// @Param offset query int false "The number of items to skip before starting to collect the result set" -// @Param limit query int false "The number of items to return" default(100) -// @Success 200 {object} map[string]interface{} "Total and object types" -// @Failure 403 {object} UnauthorizedError "Unauthorized" -// @Failure 404 {object} NotFoundError "Resource not found" -// @Failure 502 {object} ServerError "Internal server error" -// @Router /spaces/{space_id}/objectTypes [get] +// getObjectTypesHandler retrieves object types in a specific space +// +// @Summary Retrieve object types in a specific space +// @Tags types_and_templates +// @Accept json +// @Produce json +// @Param space_id path string true "The ID of the space" +// @Param offset query int false "The number of items to skip before starting to collect the result set" +// @Param limit query int false "The number of items to return" default(100) +// @Success 200 {object} map[string]interface{} "Total and object types" +// @Failure 403 {object} UnauthorizedError "Unauthorized" +// @Failure 404 {object} NotFoundError "Resource not found" +// @Failure 502 {object} ServerError "Internal server error" +// @Router /spaces/{space_id}/objectTypes [get] func (a *ApiServer) getObjectTypesHandler(c *gin.Context) { spaceID := c.Param("space_id") // TODO: Implement logic to retrieve object types in a space c.JSON(http.StatusNotImplemented, gin.H{"message": "Not implemented yet", "space_id": spaceID}) } -// @Summary Retrieve a list of templates for a specific object type in a space -// @Tags types_and_templates -// @Accept json -// @Produce json -// @Param space_id path string true "The ID of the space" -// @Param typeId path string true "The ID of the object type" -// @Success 200 {object} map[string][]ObjectTemplate "List of templates" -// @Failure 403 {object} UnauthorizedError "Unauthorized" -// @Failure 404 {object} NotFoundError "Resource not found" -// @Failure 502 {object} ServerError "Internal server error" -// @Router /spaces/{space_id}/objectTypes/{typeId}/templates [get] +// getObjectTypeTemplatesHandler retrieves a list of templates for a specific object type in a space +// +// @Summary Retrieve a list of templates for a specific object type in a space +// @Tags types_and_templates +// @Accept json +// @Produce json +// @Param space_id path string true "The ID of the space" +// @Param typeId path string true "The ID of the object type" +// @Success 200 {object} map[string][]ObjectTemplate "List of templates" +// @Failure 403 {object} UnauthorizedError "Unauthorized" +// @Failure 404 {object} NotFoundError "Resource not found" +// @Failure 502 {object} ServerError "Internal server error" +// @Router /spaces/{space_id}/objectTypes/{typeId}/templates [get] func (a *ApiServer) getObjectTypeTemplatesHandler(c *gin.Context) { spaceID := c.Param("space_id") typeID := c.Param("typeId") @@ -333,18 +356,20 @@ func (a *ApiServer) getObjectTypeTemplatesHandler(c *gin.Context) { c.JSON(http.StatusNotImplemented, gin.H{"message": "Not implemented yet", "space_id": spaceID, "typeId": typeID}) } -// @Summary Search and retrieve objects across all the spaces -// @Tags search -// @Accept json -// @Produce json -// @Param search query string false "The search term to filter objects by name" -// @Param object_type query string false "Specify object type for search" -// @Param offset query int false "The number of items to skip before starting to collect the result set" -// @Param limit query int false "The number of items to return" default(100) -// @Success 200 {object} map[string]interface{} "Total objects and object list" -// @Failure 403 {object} UnauthorizedError "Unauthorized" -// @Failure 502 {object} ServerError "Internal server error" -// @Router /objects [get] +// getObjectsHandler searches and retrieves objects across all the spaces +// +// @Summary Search and retrieve objects across all the spaces +// @Tags search +// @Accept json +// @Produce json +// @Param search query string false "The search term to filter objects by name" +// @Param object_type query string false "Specify object type for search" +// @Param offset query int false "The number of items to skip before starting to collect the result set" +// @Param limit query int false "The number of items to return" default(100) +// @Success 200 {object} map[string]interface{} "Total objects and object list" +// @Failure 403 {object} UnauthorizedError "Unauthorized" +// @Failure 502 {object} ServerError "Internal server error" +// @Router /objects [get] func (a *ApiServer) getObjectsHandler(c *gin.Context) { // TODO: Implement logic to search and retrieve objects across all spaces c.JSON(http.StatusNotImplemented, gin.H{"message": "Not implemented yet"}) From f59989bb6a166ae378f949fe7bc71aa94000592e Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Wed, 20 Nov 2024 19:02:53 +0100 Subject: [PATCH 012/279] GO-4459 Add object search handler --- cmd/api/handlers.go | 82 +++++++++++++++++++++++++++++++++++++++++++-- cmd/api/schemas.go | 15 +++++---- 2 files changed, 87 insertions(+), 10 deletions(-) diff --git a/cmd/api/handlers.go b/cmd/api/handlers.go index 597a1d970..78ad0360e 100644 --- a/cmd/api/handlers.go +++ b/cmd/api/handlers.go @@ -116,7 +116,7 @@ func (a *ApiServer) getSpacesHandler(c *gin.Context) { // TODO: Populate missing fields space := Space{ Type: typeName, - ID: record.Fields["id"].GetStringValue(), + ID: record.Fields["targetSpaceId"].GetStringValue(), Name: record.Fields["name"].GetStringValue(), HomeObjectID: record.Fields["spaceDashboardId"].GetStringValue(), // ArchiveObjectID: record.Fields["archive_object_id"].GetStringValue(), @@ -371,6 +371,82 @@ func (a *ApiServer) getObjectTypeTemplatesHandler(c *gin.Context) { // @Failure 502 {object} ServerError "Internal server error" // @Router /objects [get] func (a *ApiServer) getObjectsHandler(c *gin.Context) { - // TODO: Implement logic to search and retrieve objects across all spaces - c.JSON(http.StatusNotImplemented, gin.H{"message": "Not implemented yet"}) + searchTerm := c.Query("search") + objectType := c.Query("object_type") + // TODO implement offset and limit + // offset := c.DefaultQuery("offset", "0") + // limit := c.DefaultQuery("limit", "100") + + // First, call ObjectSearch for all objects of type spaceView + resp := a.mw.ObjectSearch(context.Background(), &pb.RpcObjectSearchRequest{ + SpaceId: a.accountInfo.TechSpaceId, + Filters: []*model.BlockContentDataviewFilter{ + { + RelationKey: bundle.RelationKeyLayout.String(), + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.Int64(int64(model.ObjectType_spaceView)), + }, + { + RelationKey: bundle.RelationKeySpaceLocalStatus.String(), + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.Int64(int64(model.SpaceStatus_Ok)), + }, + }, + }) + if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { + c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to retrieve list of spaces."}) + return + } + + // Then, get objects from each space that match the search parameters + searchResults := make([]Object, 0) + for _, spaceRecord := range resp.Records { + objectSearchResponse := a.mw.ObjectSearch(context.Background(), &pb.RpcObjectSearchRequest{ + SpaceId: spaceRecord.Fields["targetSpaceId"].GetStringValue(), + Filters: []*model.BlockContentDataviewFilter{ + { + RelationKey: bundle.RelationKeyLayout.String(), + Condition: model.BlockContentDataviewFilter_In, + Value: pbtypes.IntList([]int{ + int(model.ObjectType_basic), + int(model.ObjectType_note), + int(model.ObjectType_bookmark), + int(model.ObjectType_set), + int(model.ObjectType_collection), + }...), + }, + { + RelationKey: bundle.RelationKeyIsHidden.String(), + Condition: model.BlockContentDataviewFilter_NotEqual, + Value: pbtypes.String("true"), + }, + { + RelationKey: bundle.RelationKeyName.String(), + Condition: model.BlockContentDataviewFilter_Like, + Value: pbtypes.String(searchTerm), + }, + { + RelationKey: bundle.RelationKeyType.String(), + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.String(objectType), + }, + }, + }) + + for _, record := range objectSearchResponse.Records { + searchResults = append(searchResults, Object{ + Type: model.ObjectTypeLayout_name[int32(record.Fields["layout"].GetNumberValue())], + ID: record.Fields["id"].GetStringValue(), + Name: record.Fields["name"].GetStringValue(), + IconEmoji: record.Fields["iconEmoji"].GetStringValue(), + ObjectType: record.Fields["type"].GetStringValue(), + // TODO populate other fields + // RootID: record.Fields["rootId"].GetStringValue(), + // Blocks: []Block{}, + // Details: []Detail{}, + }) + } + } + + c.JSON(http.StatusOK, gin.H{"objects": searchResults}) } diff --git a/cmd/api/schemas.go b/cmd/api/schemas.go index 37072b263..e68504c25 100644 --- a/cmd/api/schemas.go +++ b/cmd/api/schemas.go @@ -25,13 +25,14 @@ type SpaceMember struct { } type Object struct { - Type string `json:"type" example:"object"` - ID string `json:"id"` - ObjectType string `json:"object_type" example:"note"` - RootID string `json:"root_id"` - Blocks []Block `json:"blocks"` - Details []Detail `json:"details"` - RelationLinksList []RelationLink `json:"relation_links_list"` + Type string `json:"type" example:"object"` + ID string `json:"id" example:"bafyreie6n5l5nkbjal37su54cha4coy7qzuhrnajluzv5qd5jvtsrxkequ"` + Name string `json:"name" example:"Object Name"` + IconEmoji string `json:"iconEmoji"` + ObjectType string `json:"object_type" example:"note"` + RootID string `json:"root_id"` + Blocks []Block `json:"blocks"` + Details []Detail `json:"details"` } type Block struct { From cf08f2af5081261b4e5efaf9e169d7a797ef2006 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Wed, 20 Nov 2024 19:31:46 +0100 Subject: [PATCH 013/279] GO-4459 Add space_object handlers --- cmd/api/handlers.go | 76 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 72 insertions(+), 4 deletions(-) diff --git a/cmd/api/handlers.go b/cmd/api/handlers.go index 78ad0360e..6adf1d2e0 100644 --- a/cmd/api/handlers.go +++ b/cmd/api/handlers.go @@ -253,8 +253,50 @@ func (a *ApiServer) getSpaceMembersHandler(c *gin.Context) { // @Router /spaces/{space_id}/objects [get] func (a *ApiServer) getSpaceObjectsHandler(c *gin.Context) { spaceID := c.Param("space_id") - // TODO: Implement logic to retrieve objects in a space - c.JSON(http.StatusNotImplemented, gin.H{"message": "Not implemented yet", "space_id": spaceID}) + // TODO implement offset and limit + // offset, _ := strconv.Atoi(c.DefaultQuery("offset", "0")) + // limit, _ := strconv.Atoi(c.DefaultQuery("limit", "100")) + + resp := a.mw.ObjectSearch(context.Background(), &pb.RpcObjectSearchRequest{ + SpaceId: spaceID, + Filters: []*model.BlockContentDataviewFilter{ + { + RelationKey: bundle.RelationKeyLayout.String(), + Condition: model.BlockContentDataviewFilter_In, + Value: pbtypes.IntList([]int{ + int(model.ObjectType_basic), + int(model.ObjectType_note), + int(model.ObjectType_bookmark), + int(model.ObjectType_set), + int(model.ObjectType_collection), + }...), + }, + }, + }) + + if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { + c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to retrieve list of objects."}) + return + } + + // Convert the response to a list of objects with their details: type, id, name, iconEmoji, objectType, rootID, blocks, details + objects := make([]Object, 0, len(resp.Records)) + for _, record := range resp.Records { + object := Object{ + Type: model.ObjectTypeLayout_name[int32(record.Fields["layout"].GetNumberValue())], + ID: record.Fields["id"].GetStringValue(), + Name: record.Fields["name"].GetStringValue(), + IconEmoji: record.Fields["iconEmoji"].GetStringValue(), + ObjectType: record.Fields["type"].GetStringValue(), + RootID: record.Fields["rootId"].GetStringValue(), + Blocks: []Block{}, + Details: []Detail{}, + } + + objects = append(objects, object) + } + + c.JSON(http.StatusOK, gin.H{"objects": objects}) } // getObjectHandler retrieves a specific object in a space @@ -273,8 +315,34 @@ func (a *ApiServer) getSpaceObjectsHandler(c *gin.Context) { func (a *ApiServer) getObjectHandler(c *gin.Context) { spaceID := c.Param("space_id") objectID := c.Param("object_id") - // TODO: Implement logic to retrieve a specific object - c.JSON(http.StatusNotImplemented, gin.H{"message": "Not implemented yet", "space_id": spaceID, "object_id": objectID}) + + resp := a.mw.ObjectOpen(context.Background(), &pb.RpcObjectOpenRequest{ + SpaceId: spaceID, + ObjectId: objectID, + }) + + if resp.Error.Code != pb.RpcObjectOpenResponseError_NULL { + if resp.Error.Code == pb.RpcObjectOpenResponseError_NOT_FOUND { + c.JSON(http.StatusNotFound, gin.H{"message": "Object not found", "space_id": spaceID, "object_id": objectID}) + return + } + c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to retrieve object."}) + return + } + + // Convert the response to an Object struct with its details: type, id, name, iconEmoji, objectType, rootID, blocks, details + object := Object{ + Type: "object", + ID: objectID, + Name: resp.ObjectView.Details[0].Details.Fields["name"].GetStringValue(), + IconEmoji: resp.ObjectView.Details[0].Details.Fields["iconEmoji"].GetStringValue(), + ObjectType: resp.ObjectView.Details[0].Details.Fields["type"].GetStringValue(), + RootID: resp.ObjectView.RootId, + Blocks: []Block{}, + Details: []Detail{}, + } + + c.JSON(http.StatusOK, gin.H{"object": object}) } // createObjectHandler creates a new object in a specific space From 74fb364905445496fb0ab12af320c787354d435c Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Wed, 20 Nov 2024 19:52:19 +0100 Subject: [PATCH 014/279] GO-4459 Cleanup handlers, middleware and docs --- cmd/api/handlers.go | 66 ++++++++++++++++++++++++------------------- cmd/api/main.go | 35 +++++++++++------------ cmd/api/middleware.go | 8 +++--- 3 files changed, 57 insertions(+), 52 deletions(-) diff --git a/cmd/api/handlers.go b/cmd/api/handlers.go index 6adf1d2e0..e9963f765 100644 --- a/cmd/api/handlers.go +++ b/cmd/api/handlers.go @@ -47,7 +47,7 @@ func (a *ApiServer) authDisplayCodeHandler(c *gin.Context) { // @Accept json // @Produce json // @Param code query string true "The code retrieved from Anytype Desktop app" -// @ParamchallengeId query string true "The challenge ID" +// @ParamchallengeId query string true "The challenge ID" // @Success 200 {object} map[string]string "Access and refresh tokens" // @Failure 400 {object} ValidationError "Invalid input" // @Failure 502 {object} ServerError "Internal server error" @@ -104,31 +104,40 @@ func (a *ApiServer) getSpacesHandler(c *gin.Context) { return } - // Convert the response to a list of spaces with their details: type, id, homeObjectID, archiveObjectID, profileObjectID, marketplaceWorkspaceID, deviceID, accountSpaceID, widgetsID, spaceViewID, techSpaceID, timezone, networkID spaces := make([]Space, 0, len(resp.Records)) for _, record := range resp.Records { - typeName, err := a.resolveTypeToName(record.Fields["targetSpaceId"].GetStringValue(), "ot-space") + spaceId := record.Fields["targetSpaceId"].GetStringValue() + workspaceResponse := a.mw.WorkspaceOpen(context.Background(), &pb.RpcWorkspaceOpenRequest{ + SpaceId: spaceId, + WithChat: true, + }) + + if workspaceResponse.Error.Code != pb.RpcWorkspaceOpenResponseError_NULL { + c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to open workspace."}) + return + } + + typeName, err := a.resolveTypeToName(spaceId, "ot-space") if err != nil { c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to resolve type to name."}) return } - // TODO: Populate missing fields space := Space{ - Type: typeName, - ID: record.Fields["targetSpaceId"].GetStringValue(), - Name: record.Fields["name"].GetStringValue(), - HomeObjectID: record.Fields["spaceDashboardId"].GetStringValue(), - // ArchiveObjectID: record.Fields["archive_object_id"].GetStringValue(), - // ProfileObjectID: record.Fields["profile_object_id"].GetStringValue(), - // MarketplaceWorkspaceID: record.Fields["marketplace_workspace_id"].GetStringValue(), - // DeviceID: record.Fields["device_id"].GetStringValue(), - // AccountSpaceID: record.Fields["account_space_id"].GetStringValue(), - // WidgetsID: record.Fields["widgets_id"].GetStringValue(), - // SpaceViewID: record.Fields["space_view_id"].GetStringValue(), - TechSpaceID: a.accountInfo.TechSpaceId, - // Timezone: record.Fields["timezone"].GetStringValue(), - // NetworkID: record.Fields["network_id"].GetStringValue(), + Type: typeName, + ID: spaceId, + Name: record.Fields["name"].GetStringValue(), + HomeObjectID: record.Fields["spaceDashboardId"].GetStringValue(), + ArchiveObjectID: workspaceResponse.Info.ArchiveObjectId, + ProfileObjectID: workspaceResponse.Info.ProfileObjectId, + MarketplaceWorkspaceID: workspaceResponse.Info.MarketplaceWorkspaceId, + DeviceID: workspaceResponse.Info.DeviceId, + AccountSpaceID: workspaceResponse.Info.AccountSpaceId, + WidgetsID: workspaceResponse.Info.WidgetsId, + SpaceViewID: workspaceResponse.Info.SpaceViewId, + TechSpaceID: a.accountInfo.TechSpaceId, + Timezone: workspaceResponse.Info.TimeZone, + NetworkID: workspaceResponse.Info.NetworkId, } spaces = append(spaces, space) } @@ -215,7 +224,6 @@ func (a *ApiServer) getSpaceMembersHandler(c *gin.Context) { return } - // Convert the response to a slice of SpaceMember structs with their details: type, identity, name, role members := make([]SpaceMember, 0, len(resp.Records)) for _, record := range resp.Records { typeName, err := a.resolveTypeToName(spaceId, record.Fields["type"].GetStringValue()) @@ -253,7 +261,7 @@ func (a *ApiServer) getSpaceMembersHandler(c *gin.Context) { // @Router /spaces/{space_id}/objects [get] func (a *ApiServer) getSpaceObjectsHandler(c *gin.Context) { spaceID := c.Param("space_id") - // TODO implement offset and limit + // TODO: implement offset and limit // offset, _ := strconv.Atoi(c.DefaultQuery("offset", "0")) // limit, _ := strconv.Atoi(c.DefaultQuery("limit", "100")) @@ -279,7 +287,6 @@ func (a *ApiServer) getSpaceObjectsHandler(c *gin.Context) { return } - // Convert the response to a list of objects with their details: type, id, name, iconEmoji, objectType, rootID, blocks, details objects := make([]Object, 0, len(resp.Records)) for _, record := range resp.Records { object := Object{ @@ -289,8 +296,9 @@ func (a *ApiServer) getSpaceObjectsHandler(c *gin.Context) { IconEmoji: record.Fields["iconEmoji"].GetStringValue(), ObjectType: record.Fields["type"].GetStringValue(), RootID: record.Fields["rootId"].GetStringValue(), - Blocks: []Block{}, - Details: []Detail{}, + // TODO: populate other fields + Blocks: []Block{}, + Details: []Detail{}, } objects = append(objects, object) @@ -330,7 +338,6 @@ func (a *ApiServer) getObjectHandler(c *gin.Context) { return } - // Convert the response to an Object struct with its details: type, id, name, iconEmoji, objectType, rootID, blocks, details object := Object{ Type: "object", ID: objectID, @@ -338,8 +345,9 @@ func (a *ApiServer) getObjectHandler(c *gin.Context) { IconEmoji: resp.ObjectView.Details[0].Details.Fields["iconEmoji"].GetStringValue(), ObjectType: resp.ObjectView.Details[0].Details.Fields["type"].GetStringValue(), RootID: resp.ObjectView.RootId, - Blocks: []Block{}, - Details: []Detail{}, + // TODO: populate other fields + Blocks: []Block{}, + Details: []Detail{}, } c.JSON(http.StatusOK, gin.H{"object": object}) @@ -441,7 +449,7 @@ func (a *ApiServer) getObjectTypeTemplatesHandler(c *gin.Context) { func (a *ApiServer) getObjectsHandler(c *gin.Context) { searchTerm := c.Query("search") objectType := c.Query("object_type") - // TODO implement offset and limit + // TODO: implement offset and limit // offset := c.DefaultQuery("offset", "0") // limit := c.DefaultQuery("limit", "100") @@ -508,10 +516,10 @@ func (a *ApiServer) getObjectsHandler(c *gin.Context) { Name: record.Fields["name"].GetStringValue(), IconEmoji: record.Fields["iconEmoji"].GetStringValue(), ObjectType: record.Fields["type"].GetStringValue(), - // TODO populate other fields + // TODO: populate other fields // RootID: record.Fields["rootId"].GetStringValue(), // Blocks: []Block{}, - // Details: []Detail{}, + // Details: []Detail{}, }) } } diff --git a/cmd/api/main.go b/cmd/api/main.go index 5070d238d..c6e59dadd 100644 --- a/cmd/api/main.go +++ b/cmd/api/main.go @@ -52,28 +52,25 @@ func newApiServer(mw service.ClientCommandsServer, mwInternal core.MiddlewareInt return a } -// @title Anytype API -// @version 1.0 -// @description This API allows interaction with Anytype resources such as spaces, objects, and object types. -// @termsOfService https://anytype.io/terms_of_use - -// @contact.name Anytype Support -// @contact.url https://anytype.io/contact -// @contact.email support@anytype.io - -// @license.name Apache 2.0 -// @license.url http://www.apache.org/licenses/LICENSE-2.0.html - -// @host localhost:31009 -// @BasePath /v1 - +// RunApiServer starts the HTTP server and registers the API routes. +// +// @title Anytype API +// @version 1.0 +// @description This API allows interaction with Anytype resources such as spaces, objects, and object types. +// @termsOfService https://anytype.io/terms_of_use +// @contact.name Anytype Support +// @contact.url https://anytype.io/contact +// @contact.email support@anytype.io +// @license.name Any Source Available License 1.0 +// @license.url https://github.com/anyproto/anytype-ts/blob/main/LICENSE.md +// @host localhost:31009 +// @BasePath /v1 // @securityDefinitions.basic BasicAuth - -// @externalDocs.description OpenAPI -// @externalDocs.url https://swagger.io/resources/open-api/ +// @externalDocs.description OpenAPI +// @externalDocs.url https://swagger.io/resources/open-api/ func RunApiServer(ctx context.Context, mw service.ClientCommandsServer, mwInternal core.MiddlewareInternal) { a := newApiServer(mw, mwInternal) - a.router.Use(a.EnsureAccountInfoMiddleware()) + a.router.Use(a.AccountInfoMiddleware()) // Swagger route a.router.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) diff --git a/cmd/api/middleware.go b/cmd/api/middleware.go index cc7110514..683b3401f 100644 --- a/cmd/api/middleware.go +++ b/cmd/api/middleware.go @@ -7,8 +7,8 @@ import ( "github.com/gin-gonic/gin" ) -// Middleware to ensure account info is filled before each request -func (a *ApiServer) EnsureAccountInfoMiddleware() gin.HandlerFunc { +// AccountInfoMiddleware retrieves the account information from the middleware service +func (a *ApiServer) AccountInfoMiddleware() gin.HandlerFunc { return func(c *gin.Context) { if a.accountInfo.TechSpaceId == "" { accountInfo, err := a.mwInternal.GetAccountInfo(context.Background()) @@ -22,7 +22,7 @@ func (a *ApiServer) EnsureAccountInfoMiddleware() gin.HandlerFunc { } } -// Middleware to authenticate requests and add user info to context +// TODO: AuthMiddleware to ensure the user is authenticated func (a *ApiServer) AuthMiddleware() gin.HandlerFunc { return func(c *gin.Context) { token := c.GetHeader("Authorization") @@ -43,7 +43,7 @@ func (a *ApiServer) AuthMiddleware() gin.HandlerFunc { } } -// Middleware to check permissions +// TODO: PermissionMiddleware to ensure the user has the required permissions func (a *ApiServer) PermissionMiddleware(requiredPermission string) gin.HandlerFunc { return func(c *gin.Context) { user, exists := c.Get("user") From c7e3214a5eab664c3b5d5584efff5b13433af50b Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Wed, 20 Nov 2024 19:53:57 +0100 Subject: [PATCH 015/279] GO-4459 Update demo --- cmd/api/demo/api_demo.go | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/cmd/api/demo/api_demo.go b/cmd/api/demo/api_demo.go index 3a5931fc1..171717616 100644 --- a/cmd/api/demo/api_demo.go +++ b/cmd/api/demo/api_demo.go @@ -16,7 +16,7 @@ const ( baseURL = "http://localhost:31009/v1" testSpaceId = "bafyreifymx5ucm3fdc7vupfg7wakdo5qelni3jvlmawlnvjcppurn2b3di.2lcu0r85yg10d" // dev (entry space) testObjectId = "bafyreidhtlbbspxecab6xf4pi5zyxcmvwy6lqzursbjouq5fxovh6y3xwu" // "Work Faster with Templates" - testTypeId = "bafyreifuklfpndjtlekqcjzuaerjtv2mckhn2w6txeumt5kqbthd7qxhui" // Space Member + testTypeId = "bafyreie3djy4mcldt3hgeet6bnjay2iajdyi2fvx556n6wcxii7brlni3i" // Page (in dev space) ) var log = logging.Logger("rest-api") @@ -46,11 +46,11 @@ func main() { body map[string]interface{} }{ // auth - {"POST", "/auth/displayCode", nil, nil}, - {"GET", "/auth/token?challengeId={challengeId}&code={code}", map[string]interface{}{"challengeId": "6738dfc5cda913aad90e8c2a", "code": "2931"}, nil}, + // {"POST", "/auth/displayCode", nil, nil}, + // {"GET", "/auth/token?challengeId={challengeId}&code={code}", map[string]interface{}{"challengeId": "6738dfc5cda913aad90e8c2a", "code": "2931"}, nil}, // spaces - {"POST", "/spaces", nil, map[string]interface{}{"name": "New Space"}}, + // {"POST", "/spaces", nil, map[string]interface{}{"name": "New Space"}}, {"GET", "/spaces?limit={limit}&offset={offset}", map[string]interface{}{"limit": 100, "offset": 0}, nil}, {"GET", "/spaces/{space_id}/members", map[string]interface{}{"space_id": testSpaceId}, nil}, @@ -65,7 +65,7 @@ func main() { {"GET", "/spaces/{space_id}/objectTypes/{type_id}/templates", map[string]interface{}{"space_id": testSpaceId, "type_id": testTypeId}, nil}, // search - {"GET", "/objects?search={search}&object_type={object_type}&limit={limit}&offset={offset}", map[string]interface{}{"search": "term", "object_type": "note", "limit": 100, "offset": 0}, nil}, + {"GET", "/objects?search={search}&object_type={object_type}&limit={limit}&offset={offset}", map[string]interface{}{"search": "writing", "object_type": testTypeId, "limit": 100, "offset": 0}, nil}, } for _, ep := range endpoints { @@ -111,6 +111,14 @@ func main() { } // Log the response - log.Infof("Endpoint: %s, Status Code: %d, Body: %s\n", finalURL, resp.StatusCode, string(body)) + var prettyJSON bytes.Buffer + err = json.Indent(&prettyJSON, body, "", " ") + if err != nil { + log.Errorf("Failed to pretty print response body for %s: %v\n", ep.endpoint, err) + log.Infof("%s\n", string(body)) + continue + } + + log.Infof("Endpoint: %s, Status Code: %d, Body: %s\n", finalURL, resp.StatusCode, prettyJSON.String()) } } From 81e12b4b86a579f4decc43b1b349c0b2634aa5c3 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Thu, 21 Nov 2024 01:28:30 +0100 Subject: [PATCH 016/279] GO-4459 Add types_and_templates handler --- cmd/api/handlers.go | 103 ++++++++++++++++++++++++++++++++++++++++++-- cmd/api/schemas.go | 14 +++--- 2 files changed, 107 insertions(+), 10 deletions(-) diff --git a/cmd/api/handlers.go b/cmd/api/handlers.go index e9963f765..ebecc1dce 100644 --- a/cmd/api/handlers.go +++ b/cmd/api/handlers.go @@ -408,8 +408,39 @@ func (a *ApiServer) updateObjectHandler(c *gin.Context) { // @Router /spaces/{space_id}/objectTypes [get] func (a *ApiServer) getObjectTypesHandler(c *gin.Context) { spaceID := c.Param("space_id") - // TODO: Implement logic to retrieve object types in a space - c.JSON(http.StatusNotImplemented, gin.H{"message": "Not implemented yet", "space_id": spaceID}) + + resp := a.mw.ObjectSearch(context.Background(), &pb.RpcObjectSearchRequest{ + SpaceId: spaceID, + Filters: []*model.BlockContentDataviewFilter{ + { + RelationKey: bundle.RelationKeyLayout.String(), + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.Int64(int64(model.ObjectType_objectType)), + }, + { + RelationKey: bundle.RelationKeyIsHidden.String(), + Condition: model.BlockContentDataviewFilter_NotEqual, + Value: pbtypes.String("true"), + }, + }, + }) + + if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { + c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to retrieve object types."}) + return + } + + objectTypes := make([]ObjectType, 0, len(resp.Records)) + for _, record := range resp.Records { + objectTypes = append(objectTypes, ObjectType{ + Type: "object_type", + ID: record.Fields["id"].GetStringValue(), + Name: record.Fields["name"].GetStringValue(), + IconEmoji: record.Fields["iconEmoji"].GetStringValue(), + }) + } + + c.JSON(http.StatusOK, gin.H{"objectTypes": objectTypes}) } // getObjectTypeTemplatesHandler retrieves a list of templates for a specific object type in a space @@ -428,8 +459,72 @@ func (a *ApiServer) getObjectTypesHandler(c *gin.Context) { func (a *ApiServer) getObjectTypeTemplatesHandler(c *gin.Context) { spaceID := c.Param("space_id") typeID := c.Param("typeId") - // TODO: Implement logic to retrieve templates for an object type - c.JSON(http.StatusNotImplemented, gin.H{"message": "Not implemented yet", "space_id": spaceID, "typeId": typeID}) + + // First, determine the type Id of "ot-template" in the space + templateTypeIdResp := a.mw.ObjectSearch(context.Background(), &pb.RpcObjectSearchRequest{ + SpaceId: spaceID, + Filters: []*model.BlockContentDataviewFilter{ + { + RelationKey: bundle.RelationKeyUniqueKey.String(), + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.String("ot-template"), + }, + }, + }) + + if templateTypeIdResp.Error.Code != pb.RpcObjectSearchResponseError_NULL { + c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to retrieve template type."}) + return + } + + templateTypeID := templateTypeIdResp.Records[0].Fields["id"].GetStringValue() + + // Then, search all objects of the template type and filter by the target object type + templateObjectsResp := a.mw.ObjectSearch(context.Background(), &pb.RpcObjectSearchRequest{ + SpaceId: spaceID, + Filters: []*model.BlockContentDataviewFilter{ + { + RelationKey: bundle.RelationKeyType.String(), + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.String(templateTypeID), + }, + }, + }) + + if templateObjectsResp.Error.Code != pb.RpcObjectSearchResponseError_NULL { + c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to retrieve template objects."}) + return + } + + templateIds := make([]string, 0) + for _, record := range templateObjectsResp.Records { + if record.Fields["targetObjectType"].GetStringValue() == typeID { + templateIds = append(templateIds, record.Fields["id"].GetStringValue()) + } + } + + // Finally, open each template and populate the response + templates := make([]ObjectTemplate, 0, len(templateIds)) + for _, templateId := range templateIds { + templateResp := a.mw.ObjectOpen(context.Background(), &pb.RpcObjectOpenRequest{ + SpaceId: spaceID, + ObjectId: templateId, + }) + + if templateResp.Error.Code != pb.RpcObjectOpenResponseError_NULL { + c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to retrieve template."}) + return + } + + templates = append(templates, ObjectTemplate{ + Type: "object_template", + ID: templateId, + Name: templateResp.ObjectView.Details[0].Details.Fields["name"].GetStringValue(), + IconEmoji: templateResp.ObjectView.Details[0].Details.Fields["iconEmoji"].GetStringValue(), + }) + } + + c.JSON(http.StatusOK, gin.H{"templates": templates}) } // getObjectsHandler searches and retrieves objects across all the spaces diff --git a/cmd/api/schemas.go b/cmd/api/schemas.go index e68504c25..42ecfa69d 100644 --- a/cmd/api/schemas.go +++ b/cmd/api/schemas.go @@ -82,15 +82,17 @@ type RelationLink struct { } type ObjectType struct { - Type string `json:"type" example:"object_type"` - ID string `json:"id"` - Name string `json:"name"` + Type string `json:"type" example:"object_type"` + ID string `json:"id"` + Name string `json:"name"` + IconEmoji string `json:"iconEmoji"` } type ObjectTemplate struct { - Type string `json:"type" example:"object_template"` - ID string `json:"id"` - Name string `json:"name"` + Type string `json:"type" example:"object_template"` + ID string `json:"id"` + Name string `json:"name"` + IconEmoji string `json:"iconEmoji"` } type ServerError struct { From 60dbf1e040bd8706494a493bf575e5e65500c989 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Thu, 21 Nov 2024 04:26:17 +0100 Subject: [PATCH 017/279] GO-4459 Add SpaceID to object schema and adjust search filters --- cmd/api/handlers.go | 92 ++++++++++++++++++++++++++++++--------------- cmd/api/schemas.go | 1 + 2 files changed, 63 insertions(+), 30 deletions(-) diff --git a/cmd/api/handlers.go b/cmd/api/handlers.go index ebecc1dce..a9d2b066a 100644 --- a/cmd/api/handlers.go +++ b/cmd/api/handlers.go @@ -295,6 +295,7 @@ func (a *ApiServer) getSpaceObjectsHandler(c *gin.Context) { Name: record.Fields["name"].GetStringValue(), IconEmoji: record.Fields["iconEmoji"].GetStringValue(), ObjectType: record.Fields["type"].GetStringValue(), + SpaceID: spaceID, RootID: record.Fields["rootId"].GetStringValue(), // TODO: populate other fields Blocks: []Block{}, @@ -570,51 +571,82 @@ func (a *ApiServer) getObjectsHandler(c *gin.Context) { } // Then, get objects from each space that match the search parameters + var filters = []*model.BlockContentDataviewFilter{ + { + RelationKey: bundle.RelationKeyLayout.String(), + Condition: model.BlockContentDataviewFilter_In, + Value: pbtypes.IntList([]int{ + int(model.ObjectType_basic), + int(model.ObjectType_note), + int(model.ObjectType_bookmark), + int(model.ObjectType_set), + int(model.ObjectType_collection), + int(model.ObjectType_participant), + }...), + }, + { + RelationKey: bundle.RelationKeyIsHidden.String(), + Condition: model.BlockContentDataviewFilter_NotEqual, + Value: pbtypes.String("true"), + }, + { + RelationKey: bundle.RelationKeyName.String(), + Condition: model.BlockContentDataviewFilter_Like, + Value: pbtypes.String(searchTerm), + }, + } + + if searchTerm != "" { + filters = append(filters, &model.BlockContentDataviewFilter{ + RelationKey: bundle.RelationKeyName.String(), + Condition: model.BlockContentDataviewFilter_Like, + Value: pbtypes.String(searchTerm), + }) + } + + if objectType != "" { + filters = append(filters, &model.BlockContentDataviewFilter{ + RelationKey: bundle.RelationKeyType.String(), + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.String(objectType), + }) + } + searchResults := make([]Object, 0) for _, spaceRecord := range resp.Records { objectSearchResponse := a.mw.ObjectSearch(context.Background(), &pb.RpcObjectSearchRequest{ SpaceId: spaceRecord.Fields["targetSpaceId"].GetStringValue(), - Filters: []*model.BlockContentDataviewFilter{ - { - RelationKey: bundle.RelationKeyLayout.String(), - Condition: model.BlockContentDataviewFilter_In, - Value: pbtypes.IntList([]int{ - int(model.ObjectType_basic), - int(model.ObjectType_note), - int(model.ObjectType_bookmark), - int(model.ObjectType_set), - int(model.ObjectType_collection), - }...), - }, - { - RelationKey: bundle.RelationKeyIsHidden.String(), - Condition: model.BlockContentDataviewFilter_NotEqual, - Value: pbtypes.String("true"), - }, - { - RelationKey: bundle.RelationKeyName.String(), - Condition: model.BlockContentDataviewFilter_Like, - Value: pbtypes.String(searchTerm), - }, - { - RelationKey: bundle.RelationKeyType.String(), - Condition: model.BlockContentDataviewFilter_Equal, - Value: pbtypes.String(objectType), - }, - }, + Filters: filters, + Sorts: []*model.BlockContentDataviewSort{{ + RelationKey: bundle.RelationKeyLastModifiedDate.String(), + Type: model.BlockContentDataviewSort_Desc, + }}, }) for _, record := range objectSearchResponse.Records { + objectTypeName, err := a.resolveTypeToName(spaceRecord.Fields["targetSpaceId"].GetStringValue(), record.Fields["type"].GetStringValue()) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to resolve type to name."}) + return + } + searchResults = append(searchResults, Object{ Type: model.ObjectTypeLayout_name[int32(record.Fields["layout"].GetNumberValue())], ID: record.Fields["id"].GetStringValue(), Name: record.Fields["name"].GetStringValue(), IconEmoji: record.Fields["iconEmoji"].GetStringValue(), - ObjectType: record.Fields["type"].GetStringValue(), + ObjectType: objectTypeName, // TODO: populate other fields // RootID: record.Fields["rootId"].GetStringValue(), // Blocks: []Block{}, - // Details: []Detail{}, + Details: []Detail{ + { + ID: "lastModifiedDate", + Details: map[string]interface{}{ + "lastModifiedDate": record.Fields["lastModifiedDate"].GetNumberValue(), + }, + }, + }, }) } } diff --git a/cmd/api/schemas.go b/cmd/api/schemas.go index 42ecfa69d..2c8e7fd27 100644 --- a/cmd/api/schemas.go +++ b/cmd/api/schemas.go @@ -30,6 +30,7 @@ type Object struct { Name string `json:"name" example:"Object Name"` IconEmoji string `json:"iconEmoji"` ObjectType string `json:"object_type" example:"note"` + SpaceID string `json:"space_id"` RootID string `json:"root_id"` Blocks []Block `json:"blocks"` Details []Detail `json:"details"` From c70e25ce3942b3159f76533aaa34ac4a8abeebc1 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Thu, 21 Nov 2024 23:46:12 +0100 Subject: [PATCH 018/279] GO-4459 Use nmh to retrieve gateway port --- cmd/api/main.go | 2 + cmd/api/middleware.go | 15 +++ cmd/api/nmh.go | 291 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 308 insertions(+) create mode 100644 cmd/api/nmh.go diff --git a/cmd/api/main.go b/cmd/api/main.go index c6e59dadd..57d338939 100644 --- a/cmd/api/main.go +++ b/cmd/api/main.go @@ -27,6 +27,7 @@ type ApiServer struct { router *gin.Engine server *http.Server accountInfo model.AccountInfo + ports map[string][]string } // TODO: User represents an authenticated user with permissions @@ -71,6 +72,7 @@ func newApiServer(mw service.ClientCommandsServer, mwInternal core.MiddlewareInt func RunApiServer(ctx context.Context, mw service.ClientCommandsServer, mwInternal core.MiddlewareInternal) { a := newApiServer(mw, mwInternal) a.router.Use(a.AccountInfoMiddleware()) + a.router.Use(a.PortsMiddleware()) // Swagger route a.router.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) diff --git a/cmd/api/middleware.go b/cmd/api/middleware.go index 683b3401f..22dc533ba 100644 --- a/cmd/api/middleware.go +++ b/cmd/api/middleware.go @@ -22,6 +22,21 @@ func (a *ApiServer) AccountInfoMiddleware() gin.HandlerFunc { } } +// PortsMiddleware retrieves the open ports from the middleware service +func (a *ApiServer) PortsMiddleware() gin.HandlerFunc { + return func(c *gin.Context) { + if len(a.ports) == 0 { + ports, err := getPorts() + if err != nil { + c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"error": "Failed to get open ports"}) + return + } + a.ports = ports + } + c.Next() + } +} + // TODO: AuthMiddleware to ensure the user is authenticated func (a *ApiServer) AuthMiddleware() gin.HandlerFunc { return func(c *gin.Context) { diff --git a/cmd/api/nmh.go b/cmd/api/nmh.go new file mode 100644 index 000000000..8c38f39ba --- /dev/null +++ b/cmd/api/nmh.go @@ -0,0 +1,291 @@ +package api + +import ( + "bytes" + "context" + "errors" + "fmt" + "io/ioutil" + "log" + "net/http" + "os" + "os/exec" + "runtime" + "strings" + "time" +) + +var ( + // Trace logs general information messages. + Trace *log.Logger + // Error logs error messages. + Error *log.Logger +) + +// splits stdout into an array of lines, removing empty lines +func splitStdOutLines(stdout string) []string { + lines := strings.Split(stdout, "\n") + filteredLines := make([]string, 0) + for _, line := range lines { + if len(line) > 0 { + filteredLines = append(filteredLines, line) + } + } + return filteredLines +} + +// splits stdout into an array of tokens, replacing tabs with spaces +func splitStdOutTokens(line string) []string { + return strings.Fields(strings.ReplaceAll(line, "\t", " ")) +} + +// executes a command and returns the stdout as string +func execCommand(command string) (string, error) { + if runtime.GOOS == "windows" { + return execCommandWin(command) + } + stdout, err := exec.Command("bash", "-c", command).Output() + return string(stdout), err +} + +func execCommandWin(command string) (string, error) { + // Splitting the command into the executable and the arguments + // For Windows, commands are executed through cmd /C + cmd := exec.Command("cmd", "/C", command) + stdout, err := cmd.Output() + return string(stdout), err +} + +// checks if a string is contained in an array of strings +func contains(s []string, e string) bool { + for _, a := range s { + if a == e { + return true + } + } + return false +} + +// Windows: returns a list of open ports for all instances of anytypeHelper.exe found using cli utilities tasklist, netstat and findstr +func getOpenPortsWindows() (map[string][]string, error) { + appName := "anytypeHelper.exe" + stdout, err := execCommand(`tasklist`) + if err != nil { + return nil, err + } + + lines := splitStdOutLines(stdout) + pids := map[string]bool{} + for _, line := range lines { + if !strings.Contains(line, appName) { + continue + } + tokens := splitStdOutTokens(line) + pids[tokens[1]] = true + } + + if len(pids) == 0 { + return nil, errors.New("application not running") + } + + result := map[string][]string{} + for pid := range pids { + stdout, err := execCommand(`netstat -ano`) + if err != nil { + return nil, err + } + + lines := splitStdOutLines(stdout) + ports := map[string]bool{} + for _, line := range lines { + if !strings.Contains(line, pid) || !strings.Contains(line, "LISTENING") { + continue + } + tokens := splitStdOutTokens(line) + port := strings.Split(tokens[1], ":")[1] + ports[port] = true + } + + portsSlice := []string{} + for port := range ports { + portsSlice = append(portsSlice, port) + } + + result[pid] = portsSlice + } + + return result, nil +} + +func isFileGateway(port string) (bool, error) { + client := &http.Client{} + ctx, cancel := context.WithTimeout(context.Background(), time.Second*5) + defer cancel() + req, err := http.NewRequestWithContext(ctx, "GET", "http://127.0.0.1:"+port+"/file", nil) + if err != nil { + return false, err + } + // disable follow redirect + client.CheckRedirect = func(req *http.Request, via []*http.Request) error { + return http.ErrUseLastResponse + } + + resp, err := client.Do(req) + if err != nil { + return false, err + } + + bu := bytes.NewBuffer(nil) + if err := resp.Request.Write(bu); err != nil { + return false, err + } + if _, err := ioutil.ReadAll(bu); err != nil { + return false, err + } + + defer resp.Body.Close() + // should return 301 redirect Location: /file/ + if resp.StatusCode == 301 { + return true, err + } + return false, err +} + +func isGrpcWebServer(port string) (bool, error) { + client := &http.Client{} + ctx, cancel := context.WithTimeout(context.Background(), time.Second*5) + defer cancel() + var data = strings.NewReader(`AAAAAAIQFA==`) + req, err := http.NewRequestWithContext(ctx, "POST", "http://127.0.0.1:"+port+"/anytype.ClientCommands/AppGetVersion", data) + if err != nil { + return false, err + + } + req.Header.Set("Content-Type", "application/grpc-web-text") + req.Header.Set("X-Grpc-Web", "1") + resp, err := client.Do(req) + if err != nil { + return false, err + } + defer resp.Body.Close() + + // should has Content-Type: application/grpc-web-text + if resp.Header.Get("Content-Type") == "application/grpc-web-text" { + return true, nil + } + + return false, fmt.Errorf("unexpected content type: %s", resp.Header.Get("Content-Type")) +} + +// MacOS and Linux: returns a list of all open ports for all instances of anytype found using cli utilities lsof and grep +func getOpenPortsUnix() (map[string][]string, error) { + // execute the command + appName := "anytype" + // appName := "grpcserve" + stdout, err := execCommand(`lsof -i -P -n | grep LISTEN | grep "` + appName + `"`) + Trace.Print(`lsof -i -P -n | grep LISTEN | grep "` + appName + `"`) + if err != nil { + Trace.Print(err) + return nil, err + } + // initialize the result map + result := make(map[string][]string) + // split the output into lines + lines := splitStdOutLines(stdout) + for _, line := range lines { + + // normalize whitespace and split into tokens + tokens := splitStdOutTokens(line) + pid := tokens[1] + port := strings.Split(tokens[8], ":")[1] + + // add the port to the result map + if _, ok := result[pid]; !ok { + result[pid] = []string{} + } + + if !contains(result[pid], port) { + result[pid] = append(result[pid], port) + } + } + + if len(result) == 0 { + return nil, errors.New("application not running") + } + + return result, nil +} + +// Windows, MacOS and Linux: returns a list of all open ports for all instances of anytype found using cli utilities +func getOpenPorts() (map[string][]string, error) { + // Get Platform + platform := runtime.GOOS + var ( + ports map[string][]string + err error + ) + //nolint:nestif + if platform == "windows" { + ports, err = getOpenPortsWindows() + if err != nil { + return nil, err + } + } else if platform == "darwin" { + ports, err = getOpenPortsUnix() + if err != nil { + return nil, err + } + } else if platform == "linux" { + ports, err = getOpenPortsUnix() + if err != nil { + return nil, err + } + } else { + return nil, errors.New("unsupported platform") + } + totalPids := len(ports) + for pid, pidports := range ports { + var gatewayPort, grpcWebPort string + var errs []error + for _, port := range pidports { + var ( + errDetectGateway, errDetectGrpcWeb error + serviceDetected bool + ) + if gatewayPort == "" { + if serviceDetected, errDetectGateway = isFileGateway(port); serviceDetected { + gatewayPort = port + } + } + // in case we already detected grpcweb port skip this + if !serviceDetected && grpcWebPort == "" { + if serviceDetected, errDetectGrpcWeb = isGrpcWebServer(port); serviceDetected { + grpcWebPort = port + } + } + if !serviceDetected { + // means port failed to detect either gateway or grpcweb + errs = append(errs, fmt.Errorf("port: %s; gateway: %w; grpcweb: %w", port, errDetectGateway, errDetectGrpcWeb)) + } + } + if gatewayPort != "" && grpcWebPort != "" { + ports[pid] = []string{grpcWebPort, gatewayPort} + } else { + Trace.Printf("can't detect ports. pid: %s; grpc: '%s'; gateway: '%s'; error: %v;", pid, grpcWebPort, gatewayPort, errs) + delete(ports, pid) + } + } + if len(ports) > 0 { + Trace.Printf("found ports: %v", ports) + } else { + Trace.Printf("ports no able to detect for %d pids", totalPids) + } + return ports, nil +} + +func getPorts() (map[string][]string, error) { + Trace = log.New(os.Stdout, "TRACE: ", log.Ldate|log.Ltime|log.Lshortfile) + Error = log.New(os.Stderr, "ERROR: ", log.Ldate|log.Ltime|log.Lshortfile) + + return getOpenPorts() +} From f366aac385a9675e84c530ec67775fe5ddef4dfe Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Fri, 22 Nov 2024 00:22:27 +0100 Subject: [PATCH 019/279] GO-4459 Extend handlers and helpers with image and date logic --- cmd/api/handlers.go | 40 +++++++++++++++++---- cmd/api/helper.go | 88 +++++++++++++++++++++++++++++++++++++++++++++ cmd/api/schemas.go | 10 +++--- 3 files changed, 127 insertions(+), 11 deletions(-) diff --git a/cmd/api/handlers.go b/cmd/api/handlers.go index a9d2b066a..a6a62e63b 100644 --- a/cmd/api/handlers.go +++ b/cmd/api/handlers.go @@ -123,10 +123,28 @@ func (a *ApiServer) getSpacesHandler(c *gin.Context) { return } + // TODO cleanup image logic + // Convert space image or option to base64 string + var iconBase64 string + iconImageId := record.Fields["iconImage"].GetStringValue() + if iconImageId != "" { + b64, err2 := a.imageToBase64(a.getGatewayURL(iconImageId)) + if err2 != nil { + c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to convert image to base64."}) + return + } + iconBase64 = b64 + } else { + iconOption := record.Fields["iconOption"].GetNumberValue() + // TODO figure out size + iconBase64 = a.spaceSvg(int(iconOption), 100, string([]rune(record.Fields["name"].GetStringValue())[0])) + } + space := Space{ Type: typeName, ID: spaceId, Name: record.Fields["name"].GetStringValue(), + Icon: iconBase64, HomeObjectID: record.Fields["spaceDashboardId"].GetStringValue(), ArchiveObjectID: workspaceResponse.Info.ArchiveObjectId, ProfileObjectID: workspaceResponse.Info.ProfileObjectId, @@ -233,10 +251,11 @@ func (a *ApiServer) getSpaceMembersHandler(c *gin.Context) { } member := SpaceMember{ - Type: typeName, - ID: record.Fields["identity"].GetStringValue(), - Name: record.Fields["name"].GetStringValue(), - Role: model.ParticipantPermissions_name[int32(record.Fields["participantPermissions"].GetNumberValue())], + Type: typeName, + ID: record.Fields["id"].GetStringValue(), + Name: record.Fields["name"].GetStringValue(), + Identity: record.Fields["identity"].GetStringValue(), + Role: model.ParticipantPermissions_name[int32(record.Fields["participantPermissions"].GetNumberValue())], } members = append(members, member) @@ -296,10 +315,17 @@ func (a *ApiServer) getSpaceObjectsHandler(c *gin.Context) { IconEmoji: record.Fields["iconEmoji"].GetStringValue(), ObjectType: record.Fields["type"].GetStringValue(), SpaceID: spaceID, - RootID: record.Fields["rootId"].GetStringValue(), // TODO: populate other fields - Blocks: []Block{}, - Details: []Detail{}, + // RootID: record.Fields["rootId"].GetStringValue(), + // Blocks: []Block{}, + Details: []Detail{ + { + ID: "lastModifiedDate", + Details: map[string]interface{}{ + "lastModifiedDate": record.Fields["lastModifiedDate"].GetNumberValue(), + }, + }, + }, } objects = append(objects, object) diff --git a/cmd/api/helper.go b/cmd/api/helper.go index 8da3d5eb4..e770b0788 100644 --- a/cmd/api/helper.go +++ b/cmd/api/helper.go @@ -2,6 +2,11 @@ package api import ( "context" + "encoding/base64" + "fmt" + "io" + "net/http" + "os" "strings" "github.com/anyproto/anytype-heart/pb" @@ -10,6 +15,89 @@ import ( "github.com/anyproto/anytype-heart/util/pbtypes" ) +type IconSpace struct { + Text string + Bg map[string]string + List []string +} + +var iconSpace = IconSpace{ + Text: "#fff", + Bg: map[string]string{ + "grey": "#949494", + "yellow": "#ecd91b", + "orange": "#ffb522", + "red": "#f55522", + "pink": "#e51ca0", + "purple": "#ab50cc", + "blue": "#3e58eb", + "ice": "#2aa7ee", + "teal": "#0fc8ba", + "lime": "#5dd400", + }, + List: []string{"grey", "yellow", "orange", "red", "pink", "purple", "blue", "ice", "teal", "lime"}, +} + +func (a *ApiServer) spaceSvg(option int, size int, iconName string) string { + if option < 1 || option > len(iconSpace.List) { + return "" + } + bgColor := iconSpace.Bg[iconSpace.List[option-1]] + + fontWeight := func(size int) string { + if size > 50 { + return "bold" + } + return "normal" + } + + fontSize := func(size int) int { + return size / 2 + } + + text := fmt.Sprintf(`%s`, + iconSpace.Text, fontWeight(size), fontSize(size), iconName) + + svg := fmt.Sprintf(` + + + %s + `, size, size, size, size, size, size, bgColor, text) + + return "data:image/svg+xml;base64," + base64.StdEncoding.EncodeToString([]byte(svg)) +} + +func validateURL(url string) string { + if !strings.HasPrefix(url, "http://") && !strings.HasPrefix(url, "https://") { + return "" + } + return url +} + +func (a *ApiServer) imageToBase64(imagePath string) (string, error) { + resp, err := http.Get(validateURL(imagePath)) + if err != nil { + return "", err + } + defer resp.Body.Close() + + fileBytes, err := io.ReadAll(resp.Body) + if err != nil { + return "", err + } + encoded := base64.StdEncoding.EncodeToString(fileBytes) + return encoded, nil +} + +// Determine gateway port based on the current process ID +func (a *ApiServer) getGatewayURL(icon string) string { + pid := fmt.Sprintf("%d", os.Getpid()) + if ports, ok := a.ports[pid]; ok && len(ports) > 1 { + return fmt.Sprintf("http://127.0.0.1:%s/image/%s?width=100", ports[1], icon) + } + return "" +} + func (a *ApiServer) resolveTypeToName(spaceId string, typeId string) (string, *pb.RpcObjectSearchResponseError) { // Can't look up preinstalled types based on relation key, therefore need to use unique key relKey := bundle.RelationKeyId.String() diff --git a/cmd/api/schemas.go b/cmd/api/schemas.go index 2c8e7fd27..dae8692a6 100644 --- a/cmd/api/schemas.go +++ b/cmd/api/schemas.go @@ -4,6 +4,7 @@ type Space struct { Type string `json:"type" example:"space"` ID string `json:"id"` Name string `json:"name" example:"Space Name"` + Icon string `json:"icon"` HomeObjectID string `json:"home_object_id" example:"bafyreie4qcl3wczb4cw5hrfyycikhjyh6oljdis3ewqrk5boaav3sbwqya"` ArchiveObjectID string `json:"archive_object_id" example:"bafyreialsgoyflf3etjm3parzurivyaukzivwortf32b4twnlwpwocsrri"` ProfileObjectID string `json:"profile_object_id" example:"bafyreiaxhwreshjqwndpwtdsu4mtihaqhhmlygqnyqpfyfwlqfq3rm3gw4"` @@ -18,10 +19,11 @@ type Space struct { } type SpaceMember struct { - Type string `json:"type" example:"space_member"` - ID string `json:"id"` - Name string `json:"name" example:""` - Role string `json:"role" enum:"editor,viewer,owner"` + Type string `json:"type" example:"space_member"` + ID string `json:"id"` + Name string `json:"name" example:""` + Identity string `json:"identity" example:""` + Role string `json:"role" enum:"editor,viewer,owner"` } type Object struct { From a8660c5209cc088a2764de2f135103a179c2265d Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Fri, 22 Nov 2024 00:22:53 +0100 Subject: [PATCH 020/279] GO-4459 Update docs --- cmd/api/docs/docs.go | 44 +++++++++++++++++++++------------------ cmd/api/docs/swagger.json | 44 +++++++++++++++++++++------------------ cmd/api/docs/swagger.yaml | 30 ++++++++++++++------------ 3 files changed, 65 insertions(+), 53 deletions(-) diff --git a/cmd/api/docs/docs.go b/cmd/api/docs/docs.go index 611ff14c7..676eb42c2 100644 --- a/cmd/api/docs/docs.go +++ b/cmd/api/docs/docs.go @@ -16,8 +16,8 @@ const docTemplate = `{ "email": "support@anytype.io" }, "license": { - "name": "Apache 2.0", - "url": "http://www.apache.org/licenses/LICENSE-2.0.html" + "name": "Any Source Available License 1.0", + "url": "https://github.com/anyproto/anytype-ts/blob/main/LICENSE.md" }, "version": "{{.Version}}" }, @@ -787,22 +787,27 @@ const docTemplate = `{ "$ref": "#/definitions/api.Detail" } }, - "id": { + "iconEmoji": { "type": "string" }, + "id": { + "type": "string", + "example": "bafyreie6n5l5nkbjal37su54cha4coy7qzuhrnajluzv5qd5jvtsrxkequ" + }, + "name": { + "type": "string", + "example": "Object Name" + }, "object_type": { "type": "string", "example": "note" }, - "relation_links_list": { - "type": "array", - "items": { - "$ref": "#/definitions/api.RelationLink" - } - }, "root_id": { "type": "string" }, + "space_id": { + "type": "string" + }, "type": { "type": "string", "example": "object" @@ -812,6 +817,9 @@ const docTemplate = `{ "api.ObjectTemplate": { "type": "object", "properties": { + "iconEmoji": { + "type": "string" + }, "id": { "type": "string" }, @@ -824,17 +832,6 @@ const docTemplate = `{ } } }, - "api.RelationLink": { - "type": "object", - "properties": { - "format": { - "type": "string" - }, - "key": { - "type": "string" - } - } - }, "api.ServerError": { "type": "object", "properties": { @@ -867,6 +864,9 @@ const docTemplate = `{ "type": "string", "example": "bafyreie4qcl3wczb4cw5hrfyycikhjyh6oljdis3ewqrk5boaav3sbwqya" }, + "icon": { + "type": "string" + }, "id": { "type": "string" }, @@ -914,6 +914,10 @@ const docTemplate = `{ "id": { "type": "string" }, + "identity": { + "type": "string", + "example": "" + }, "name": { "type": "string", "example": "" diff --git a/cmd/api/docs/swagger.json b/cmd/api/docs/swagger.json index e57cb5ecd..5dcaef8f2 100644 --- a/cmd/api/docs/swagger.json +++ b/cmd/api/docs/swagger.json @@ -10,8 +10,8 @@ "email": "support@anytype.io" }, "license": { - "name": "Apache 2.0", - "url": "http://www.apache.org/licenses/LICENSE-2.0.html" + "name": "Any Source Available License 1.0", + "url": "https://github.com/anyproto/anytype-ts/blob/main/LICENSE.md" }, "version": "1.0" }, @@ -781,22 +781,27 @@ "$ref": "#/definitions/api.Detail" } }, - "id": { + "iconEmoji": { "type": "string" }, + "id": { + "type": "string", + "example": "bafyreie6n5l5nkbjal37su54cha4coy7qzuhrnajluzv5qd5jvtsrxkequ" + }, + "name": { + "type": "string", + "example": "Object Name" + }, "object_type": { "type": "string", "example": "note" }, - "relation_links_list": { - "type": "array", - "items": { - "$ref": "#/definitions/api.RelationLink" - } - }, "root_id": { "type": "string" }, + "space_id": { + "type": "string" + }, "type": { "type": "string", "example": "object" @@ -806,6 +811,9 @@ "api.ObjectTemplate": { "type": "object", "properties": { + "iconEmoji": { + "type": "string" + }, "id": { "type": "string" }, @@ -818,17 +826,6 @@ } } }, - "api.RelationLink": { - "type": "object", - "properties": { - "format": { - "type": "string" - }, - "key": { - "type": "string" - } - } - }, "api.ServerError": { "type": "object", "properties": { @@ -861,6 +858,9 @@ "type": "string", "example": "bafyreie4qcl3wczb4cw5hrfyycikhjyh6oljdis3ewqrk5boaav3sbwqya" }, + "icon": { + "type": "string" + }, "id": { "type": "string" }, @@ -908,6 +908,10 @@ "id": { "type": "string" }, + "identity": { + "type": "string", + "example": "" + }, "name": { "type": "string", "example": "" diff --git a/cmd/api/docs/swagger.yaml b/cmd/api/docs/swagger.yaml index b8de9a23b..6fdaf15c4 100644 --- a/cmd/api/docs/swagger.yaml +++ b/cmd/api/docs/swagger.yaml @@ -73,23 +73,29 @@ definitions: items: $ref: '#/definitions/api.Detail' type: array + iconEmoji: + type: string id: + example: bafyreie6n5l5nkbjal37su54cha4coy7qzuhrnajluzv5qd5jvtsrxkequ + type: string + name: + example: Object Name type: string object_type: example: note type: string - relation_links_list: - items: - $ref: '#/definitions/api.RelationLink' - type: array root_id: type: string + space_id: + type: string type: example: object type: string type: object api.ObjectTemplate: properties: + iconEmoji: + type: string id: type: string name: @@ -98,13 +104,6 @@ definitions: example: object_template type: string type: object - api.RelationLink: - properties: - format: - type: string - key: - type: string - type: object api.ServerError: properties: error: @@ -127,6 +126,8 @@ definitions: home_object_id: example: bafyreie4qcl3wczb4cw5hrfyycikhjyh6oljdis3ewqrk5boaav3sbwqya type: string + icon: + type: string id: type: string marketplace_workspace_id: @@ -161,6 +162,9 @@ definitions: properties: id: type: string + identity: + example: "" + type: string name: example: "" type: string @@ -213,8 +217,8 @@ info: description: This API allows interaction with Anytype resources such as spaces, objects, and object types. license: - name: Apache 2.0 - url: http://www.apache.org/licenses/LICENSE-2.0.html + name: Any Source Available License 1.0 + url: https://github.com/anyproto/anytype-ts/blob/main/LICENSE.md termsOfService: https://anytype.io/terms_of_use title: Anytype API version: "1.0" From 2f666fd3688c198b696fca61313c5e329bb74d87 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Sat, 23 Nov 2024 14:04:35 +0100 Subject: [PATCH 021/279] GO-4459 Retrieve accountInfo internally through app, remove nmh --- cmd/api/helper.go | 7 +- cmd/api/main.go | 25 ++-- cmd/api/middleware.go | 34 +++-- cmd/api/nmh.go | 291 ------------------------------------------ core/core.go | 1 + 5 files changed, 30 insertions(+), 328 deletions(-) delete mode 100644 cmd/api/nmh.go diff --git a/cmd/api/helper.go b/cmd/api/helper.go index e770b0788..a7db660bc 100644 --- a/cmd/api/helper.go +++ b/cmd/api/helper.go @@ -6,7 +6,6 @@ import ( "fmt" "io" "net/http" - "os" "strings" "github.com/anyproto/anytype-heart/pb" @@ -91,11 +90,7 @@ func (a *ApiServer) imageToBase64(imagePath string) (string, error) { // Determine gateway port based on the current process ID func (a *ApiServer) getGatewayURL(icon string) string { - pid := fmt.Sprintf("%d", os.Getpid()) - if ports, ok := a.ports[pid]; ok && len(ports) > 1 { - return fmt.Sprintf("http://127.0.0.1:%s/image/%s?width=100", ports[1], icon) - } - return "" + return fmt.Sprintf("%s/image/%s?width=100", a.accountInfo.GatewayUrl, icon) } func (a *ApiServer) resolveTypeToName(spaceId string, typeId string) (string, *pb.RpcObjectSearchResponseError) { diff --git a/cmd/api/main.go b/cmd/api/main.go index 57d338939..db847eeb7 100644 --- a/cmd/api/main.go +++ b/cmd/api/main.go @@ -6,6 +6,7 @@ import ( "net/http" "time" + "github.com/anyproto/any-sync/app" "github.com/gin-gonic/gin" swaggerFiles "github.com/swaggo/files" ginSwagger "github.com/swaggo/gin-swagger" @@ -22,12 +23,14 @@ const ( ) type ApiServer struct { - mw service.ClientCommandsServer - mwInternal core.MiddlewareInternal - router *gin.Engine - server *http.Server - accountInfo model.AccountInfo - ports map[string][]string + mw service.ClientCommandsServer + mwInternal core.MiddlewareInternal + router *gin.Engine + server *http.Server + + // init after app start + app *app.App + accountInfo *model.AccountInfo } // TODO: User represents an authenticated user with permissions @@ -38,10 +41,9 @@ type User struct { func newApiServer(mw service.ClientCommandsServer, mwInternal core.MiddlewareInternal) *ApiServer { a := &ApiServer{ - mw: mw, - mwInternal: mwInternal, - router: gin.New(), - accountInfo: model.AccountInfo{}, + mw: mw, + mwInternal: mwInternal, + router: gin.New(), } a.server = &http.Server{ @@ -71,8 +73,7 @@ func newApiServer(mw service.ClientCommandsServer, mwInternal core.MiddlewareInt // @externalDocs.url https://swagger.io/resources/open-api/ func RunApiServer(ctx context.Context, mw service.ClientCommandsServer, mwInternal core.MiddlewareInternal) { a := newApiServer(mw, mwInternal) - a.router.Use(a.AccountInfoMiddleware()) - a.router.Use(a.PortsMiddleware()) + a.router.Use(a.initAccountInfo()) // Swagger route a.router.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) diff --git a/cmd/api/middleware.go b/cmd/api/middleware.go index 22dc533ba..23f1b320f 100644 --- a/cmd/api/middleware.go +++ b/cmd/api/middleware.go @@ -2,38 +2,34 @@ package api import ( "context" + "fmt" "net/http" "github.com/gin-gonic/gin" + + "github.com/anyproto/anytype-heart/core/anytype/account" ) -// AccountInfoMiddleware retrieves the account information from the middleware service -func (a *ApiServer) AccountInfoMiddleware() gin.HandlerFunc { +// initAccountInfo retrieves the account information from the account service +func (a *ApiServer) initAccountInfo() gin.HandlerFunc { return func(c *gin.Context) { - if a.accountInfo.TechSpaceId == "" { - accountInfo, err := a.mwInternal.GetAccountInfo(context.Background()) - if err != nil { - c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"error": "Failed to get account info"}) + if a.app == nil && a.accountInfo == nil { + app := a.mwInternal.GetApp() + if app == nil { + c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"error": "failed to get app instance"}) return } - a.accountInfo = *accountInfo - } - c.Next() - } -} -// PortsMiddleware retrieves the open ports from the middleware service -func (a *ApiServer) PortsMiddleware() gin.HandlerFunc { - return func(c *gin.Context) { - if len(a.ports) == 0 { - ports, err := getPorts() + accInfo, err := app.Component(account.CName).(account.Service).GetInfo(context.Background()) if err != nil { - c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"error": "Failed to get open ports"}) + c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"error": fmt.Sprintf("failed to get account info: %v", err)}) return } - a.ports = ports + + a.app = app + a.accountInfo = accInfo + c.Next() } - c.Next() } } diff --git a/cmd/api/nmh.go b/cmd/api/nmh.go deleted file mode 100644 index 8c38f39ba..000000000 --- a/cmd/api/nmh.go +++ /dev/null @@ -1,291 +0,0 @@ -package api - -import ( - "bytes" - "context" - "errors" - "fmt" - "io/ioutil" - "log" - "net/http" - "os" - "os/exec" - "runtime" - "strings" - "time" -) - -var ( - // Trace logs general information messages. - Trace *log.Logger - // Error logs error messages. - Error *log.Logger -) - -// splits stdout into an array of lines, removing empty lines -func splitStdOutLines(stdout string) []string { - lines := strings.Split(stdout, "\n") - filteredLines := make([]string, 0) - for _, line := range lines { - if len(line) > 0 { - filteredLines = append(filteredLines, line) - } - } - return filteredLines -} - -// splits stdout into an array of tokens, replacing tabs with spaces -func splitStdOutTokens(line string) []string { - return strings.Fields(strings.ReplaceAll(line, "\t", " ")) -} - -// executes a command and returns the stdout as string -func execCommand(command string) (string, error) { - if runtime.GOOS == "windows" { - return execCommandWin(command) - } - stdout, err := exec.Command("bash", "-c", command).Output() - return string(stdout), err -} - -func execCommandWin(command string) (string, error) { - // Splitting the command into the executable and the arguments - // For Windows, commands are executed through cmd /C - cmd := exec.Command("cmd", "/C", command) - stdout, err := cmd.Output() - return string(stdout), err -} - -// checks if a string is contained in an array of strings -func contains(s []string, e string) bool { - for _, a := range s { - if a == e { - return true - } - } - return false -} - -// Windows: returns a list of open ports for all instances of anytypeHelper.exe found using cli utilities tasklist, netstat and findstr -func getOpenPortsWindows() (map[string][]string, error) { - appName := "anytypeHelper.exe" - stdout, err := execCommand(`tasklist`) - if err != nil { - return nil, err - } - - lines := splitStdOutLines(stdout) - pids := map[string]bool{} - for _, line := range lines { - if !strings.Contains(line, appName) { - continue - } - tokens := splitStdOutTokens(line) - pids[tokens[1]] = true - } - - if len(pids) == 0 { - return nil, errors.New("application not running") - } - - result := map[string][]string{} - for pid := range pids { - stdout, err := execCommand(`netstat -ano`) - if err != nil { - return nil, err - } - - lines := splitStdOutLines(stdout) - ports := map[string]bool{} - for _, line := range lines { - if !strings.Contains(line, pid) || !strings.Contains(line, "LISTENING") { - continue - } - tokens := splitStdOutTokens(line) - port := strings.Split(tokens[1], ":")[1] - ports[port] = true - } - - portsSlice := []string{} - for port := range ports { - portsSlice = append(portsSlice, port) - } - - result[pid] = portsSlice - } - - return result, nil -} - -func isFileGateway(port string) (bool, error) { - client := &http.Client{} - ctx, cancel := context.WithTimeout(context.Background(), time.Second*5) - defer cancel() - req, err := http.NewRequestWithContext(ctx, "GET", "http://127.0.0.1:"+port+"/file", nil) - if err != nil { - return false, err - } - // disable follow redirect - client.CheckRedirect = func(req *http.Request, via []*http.Request) error { - return http.ErrUseLastResponse - } - - resp, err := client.Do(req) - if err != nil { - return false, err - } - - bu := bytes.NewBuffer(nil) - if err := resp.Request.Write(bu); err != nil { - return false, err - } - if _, err := ioutil.ReadAll(bu); err != nil { - return false, err - } - - defer resp.Body.Close() - // should return 301 redirect Location: /file/ - if resp.StatusCode == 301 { - return true, err - } - return false, err -} - -func isGrpcWebServer(port string) (bool, error) { - client := &http.Client{} - ctx, cancel := context.WithTimeout(context.Background(), time.Second*5) - defer cancel() - var data = strings.NewReader(`AAAAAAIQFA==`) - req, err := http.NewRequestWithContext(ctx, "POST", "http://127.0.0.1:"+port+"/anytype.ClientCommands/AppGetVersion", data) - if err != nil { - return false, err - - } - req.Header.Set("Content-Type", "application/grpc-web-text") - req.Header.Set("X-Grpc-Web", "1") - resp, err := client.Do(req) - if err != nil { - return false, err - } - defer resp.Body.Close() - - // should has Content-Type: application/grpc-web-text - if resp.Header.Get("Content-Type") == "application/grpc-web-text" { - return true, nil - } - - return false, fmt.Errorf("unexpected content type: %s", resp.Header.Get("Content-Type")) -} - -// MacOS and Linux: returns a list of all open ports for all instances of anytype found using cli utilities lsof and grep -func getOpenPortsUnix() (map[string][]string, error) { - // execute the command - appName := "anytype" - // appName := "grpcserve" - stdout, err := execCommand(`lsof -i -P -n | grep LISTEN | grep "` + appName + `"`) - Trace.Print(`lsof -i -P -n | grep LISTEN | grep "` + appName + `"`) - if err != nil { - Trace.Print(err) - return nil, err - } - // initialize the result map - result := make(map[string][]string) - // split the output into lines - lines := splitStdOutLines(stdout) - for _, line := range lines { - - // normalize whitespace and split into tokens - tokens := splitStdOutTokens(line) - pid := tokens[1] - port := strings.Split(tokens[8], ":")[1] - - // add the port to the result map - if _, ok := result[pid]; !ok { - result[pid] = []string{} - } - - if !contains(result[pid], port) { - result[pid] = append(result[pid], port) - } - } - - if len(result) == 0 { - return nil, errors.New("application not running") - } - - return result, nil -} - -// Windows, MacOS and Linux: returns a list of all open ports for all instances of anytype found using cli utilities -func getOpenPorts() (map[string][]string, error) { - // Get Platform - platform := runtime.GOOS - var ( - ports map[string][]string - err error - ) - //nolint:nestif - if platform == "windows" { - ports, err = getOpenPortsWindows() - if err != nil { - return nil, err - } - } else if platform == "darwin" { - ports, err = getOpenPortsUnix() - if err != nil { - return nil, err - } - } else if platform == "linux" { - ports, err = getOpenPortsUnix() - if err != nil { - return nil, err - } - } else { - return nil, errors.New("unsupported platform") - } - totalPids := len(ports) - for pid, pidports := range ports { - var gatewayPort, grpcWebPort string - var errs []error - for _, port := range pidports { - var ( - errDetectGateway, errDetectGrpcWeb error - serviceDetected bool - ) - if gatewayPort == "" { - if serviceDetected, errDetectGateway = isFileGateway(port); serviceDetected { - gatewayPort = port - } - } - // in case we already detected grpcweb port skip this - if !serviceDetected && grpcWebPort == "" { - if serviceDetected, errDetectGrpcWeb = isGrpcWebServer(port); serviceDetected { - grpcWebPort = port - } - } - if !serviceDetected { - // means port failed to detect either gateway or grpcweb - errs = append(errs, fmt.Errorf("port: %s; gateway: %w; grpcweb: %w", port, errDetectGateway, errDetectGrpcWeb)) - } - } - if gatewayPort != "" && grpcWebPort != "" { - ports[pid] = []string{grpcWebPort, gatewayPort} - } else { - Trace.Printf("can't detect ports. pid: %s; grpc: '%s'; gateway: '%s'; error: %v;", pid, grpcWebPort, gatewayPort, errs) - delete(ports, pid) - } - } - if len(ports) > 0 { - Trace.Printf("found ports: %v", ports) - } else { - Trace.Printf("ports no able to detect for %d pids", totalPids) - } - return ports, nil -} - -func getPorts() (map[string][]string, error) { - Trace = log.New(os.Stdout, "TRACE: ", log.Ldate|log.Ltime|log.Lshortfile) - Error = log.New(os.Stderr, "ERROR: ", log.Ldate|log.Ltime|log.Lshortfile) - - return getOpenPorts() -} diff --git a/core/core.go b/core/core.go index 5713d9aaa..595c1d5ba 100644 --- a/core/core.go +++ b/core/core.go @@ -26,6 +26,7 @@ var ( ) type MiddlewareInternal interface { + GetApp() *app.App GetAccountInfo(ctx context.Context) (*model.AccountInfo, error) } From 7ba6df706523c5b14cbecbf5f38e31f116e760cc Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Sat, 23 Nov 2024 15:25:10 +0100 Subject: [PATCH 022/279] GO-4459 Add create object handler --- cmd/api/demo/api_demo.go | 24 +++++++++++------- cmd/api/handlers.go | 53 ++++++++++++++++++++++++++++++++++++++-- cmd/api/main.go | 2 +- 3 files changed, 67 insertions(+), 12 deletions(-) diff --git a/cmd/api/demo/api_demo.go b/cmd/api/demo/api_demo.go index 171717616..340628f43 100644 --- a/cmd/api/demo/api_demo.go +++ b/cmd/api/demo/api_demo.go @@ -51,21 +51,21 @@ func main() { // spaces // {"POST", "/spaces", nil, map[string]interface{}{"name": "New Space"}}, - {"GET", "/spaces?limit={limit}&offset={offset}", map[string]interface{}{"limit": 100, "offset": 0}, nil}, - {"GET", "/spaces/{space_id}/members", map[string]interface{}{"space_id": testSpaceId}, nil}, + // {"GET", "/spaces?limit={limit}&offset={offset}", map[string]interface{}{"limit": 100, "offset": 0}, nil}, + // {"GET", "/spaces/{space_id}/members", map[string]interface{}{"space_id": testSpaceId}, nil}, // space_objects - {"GET", "/spaces/{space_id}/objects", map[string]interface{}{"space_id": testSpaceId, "limit": 100, "offset": 0}, nil}, - {"GET", "/spaces/{space_id}/objects/{object_id}", map[string]interface{}{"space_id": testSpaceId, "object_id": testObjectId}, nil}, - {"POST", "/spaces/{space_id}/objects", map[string]interface{}{"space_id": testSpaceId}, map[string]interface{}{"name": "New Object"}}, - {"PUT", "/spaces/{space_id}/objects/{object_id}", map[string]interface{}{"space_id": testSpaceId, "object_id": testObjectId}, map[string]interface{}{"name": "Updated Object"}}, + // {"GET", "/spaces/{space_id}/objects", map[string]interface{}{"space_id": testSpaceId, "limit": 100, "offset": 0}, nil}, + // {"GET", "/spaces/{space_id}/objects/{object_id}", map[string]interface{}{"space_id": testSpaceId, "object_id": testObjectId}, nil}, + // {"POST", "/spaces/{space_id}/objects", map[string]interface{}{"space_id": testSpaceId}, map[string]interface{}{"details": map[string]interface{}{"name": "New Object from demo", "iconEmoji": "💥"}, "template_id": "", "object_type_unique_key": "ot-page", "with_chat": false}}, + // {"PUT", "/spaces/{space_id}/objects/{object_id}", map[string]interface{}{"space_id": testSpaceId, "object_id": testObjectId}, map[string]interface{}{"name": "Updated Object"}}, // types_and_templates - {"GET", "/spaces/{space_id}/objectTypes?limit={limit}&offset={offset}", map[string]interface{}{"space_id": testSpaceId, "limit": 100, "offset": 0}, nil}, - {"GET", "/spaces/{space_id}/objectTypes/{type_id}/templates", map[string]interface{}{"space_id": testSpaceId, "type_id": testTypeId}, nil}, + // {"GET", "/spaces/{space_id}/objectTypes?limit={limit}&offset={offset}", map[string]interface{}{"space_id": testSpaceId, "limit": 100, "offset": 0}, nil}, + // {"GET", "/spaces/{space_id}/objectTypes/{type_id}/templates", map[string]interface{}{"space_id": testSpaceId, "type_id": testTypeId}, nil}, // search - {"GET", "/objects?search={search}&object_type={object_type}&limit={limit}&offset={offset}", map[string]interface{}{"search": "writing", "object_type": testTypeId, "limit": 100, "offset": 0}, nil}, + // {"GET", "/objects?search={search}&object_type={object_type}&limit={limit}&offset={offset}", map[string]interface{}{"search": "writing", "object_type": testTypeId, "limit": 100, "offset": 0}, nil}, } for _, ep := range endpoints { @@ -103,6 +103,12 @@ func main() { } defer resp.Body.Close() + // Check the status code + if resp.StatusCode != http.StatusOK { + log.Errorf("Request to %s returned status code %d\n", ep.endpoint, resp.StatusCode) + continue + } + // Read the response body, err := io.ReadAll(resp.Body) if err != nil { diff --git a/cmd/api/handlers.go b/cmd/api/handlers.go index a6a62e63b..50c3fe302 100644 --- a/cmd/api/handlers.go +++ b/cmd/api/handlers.go @@ -19,6 +19,13 @@ type NameRequest struct { Name string `json:"name"` } +type CreateObjectRequest struct { + Details map[string]interface{} `json:"details"` + TemplateID string `json:"template_id"` + ObjectTypeUniqueKey string `json:"object_type_unique_key"` + WithChat bool `json:"with_chat"` +} + // authdisplayCodeHandler generates a new challenge and returns the challenge ID // // @Summary Open a modal window with a code in Anytype Desktop app @@ -394,8 +401,49 @@ func (a *ApiServer) getObjectHandler(c *gin.Context) { // @Router /spaces/{space_id}/objects [post] func (a *ApiServer) createObjectHandler(c *gin.Context) { spaceID := c.Param("space_id") - // TODO: Implement logic to create a new object - c.JSON(http.StatusNotImplemented, gin.H{"message": "Not implemented yet", "space_id": spaceID}) + + request := CreateObjectRequest{} + if err := c.BindJSON(&request); err != nil { + c.JSON(http.StatusBadRequest, gin.H{"message": "Invalid JSON"}) + return + } + + resp := a.mw.ObjectCreate(context.Background(), &pb.RpcObjectCreateRequest{ + Details: &types.Struct{ + Fields: map[string]*types.Value{ + "name": {Kind: &types.Value_StringValue{StringValue: request.Details["name"].(string)}}, + "iconEmoji": {Kind: &types.Value_StringValue{StringValue: request.Details["iconEmoji"].(string)}}, + }, + }, + // TODO figure out internal flags + InternalFlags: []*model.InternalFlag{ + {Value: model.InternalFlagValue(2)}, + }, + TemplateId: request.TemplateID, + SpaceId: spaceID, + ObjectTypeUniqueKey: request.ObjectTypeUniqueKey, + WithChat: request.WithChat, + }) + + if resp.Error.Code != pb.RpcObjectCreateResponseError_NULL { + c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to create a new object."}) + return + } + + object := Object{ + Type: "object", + ID: resp.ObjectId, + Name: resp.Details.Fields["name"].GetStringValue(), + IconEmoji: resp.Details.Fields["iconEmoji"].GetStringValue(), + ObjectType: request.ObjectTypeUniqueKey, + SpaceID: resp.Details.Fields["spaceId"].GetStringValue(), + // TODO populate other fields + // RootID: resp.RootId, + // Blocks: []Block{}, + // Details: []Detail{}, + } + + c.JSON(http.StatusOK, gin.H{"object": object}) } // updateObjectHandler updates an existing object in a specific space @@ -462,6 +510,7 @@ func (a *ApiServer) getObjectTypesHandler(c *gin.Context) { objectTypes = append(objectTypes, ObjectType{ Type: "object_type", ID: record.Fields["id"].GetStringValue(), + UniqueKey: record.Fields["uniqueKey"].GetStringValue(), Name: record.Fields["name"].GetStringValue(), IconEmoji: record.Fields["iconEmoji"].GetStringValue(), }) diff --git a/cmd/api/main.go b/cmd/api/main.go index db847eeb7..ffe6b121c 100644 --- a/cmd/api/main.go +++ b/cmd/api/main.go @@ -105,7 +105,7 @@ func RunApiServer(ctx context.Context, mw service.ClientCommandsServer, mwIntern // readWrite.Use(a.PermissionMiddleware("read-write")) { readWrite.POST("/spaces", a.createSpaceHandler) - readWrite.POST("/spaces/:space_id/objects/:object_id", a.createObjectHandler) + readWrite.POST("/spaces/:space_id/objects/", a.createObjectHandler) readWrite.PUT("/spaces/:space_id/objects/:object_id", a.updateObjectHandler) } From 625f3fb4202e4f7ed3967ab63ce559d06743779f Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Sat, 23 Nov 2024 15:27:56 +0100 Subject: [PATCH 023/279] GO-4459 Don't resolve typename for unambiguous requests --- cmd/api/handlers.go | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/cmd/api/handlers.go b/cmd/api/handlers.go index 50c3fe302..1025e71dc 100644 --- a/cmd/api/handlers.go +++ b/cmd/api/handlers.go @@ -124,12 +124,6 @@ func (a *ApiServer) getSpacesHandler(c *gin.Context) { return } - typeName, err := a.resolveTypeToName(spaceId, "ot-space") - if err != nil { - c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to resolve type to name."}) - return - } - // TODO cleanup image logic // Convert space image or option to base64 string var iconBase64 string @@ -148,7 +142,7 @@ func (a *ApiServer) getSpacesHandler(c *gin.Context) { } space := Space{ - Type: typeName, + Type: "space", ID: spaceId, Name: record.Fields["name"].GetStringValue(), Icon: iconBase64, @@ -251,14 +245,8 @@ func (a *ApiServer) getSpaceMembersHandler(c *gin.Context) { members := make([]SpaceMember, 0, len(resp.Records)) for _, record := range resp.Records { - typeName, err := a.resolveTypeToName(spaceId, record.Fields["type"].GetStringValue()) - if err != nil { - c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to resolve type to name."}) - return - } - member := SpaceMember{ - Type: typeName, + Type: "space_member", ID: record.Fields["id"].GetStringValue(), Name: record.Fields["name"].GetStringValue(), Identity: record.Fields["identity"].GetStringValue(), From 2ff6f9dc4f6682291d6b5f45b40d1e2a8fb3c97c Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Sat, 23 Nov 2024 15:45:17 +0100 Subject: [PATCH 024/279] GO-4459 Update schemas, structs and docs --- cmd/api/docs/docs.go | 45 +++++++++++++++++++++++++++++++++------ cmd/api/docs/swagger.json | 45 +++++++++++++++++++++++++++++++++------ cmd/api/docs/swagger.yaml | 33 ++++++++++++++++++++++------ cmd/api/handlers.go | 37 ++++++++++++++++---------------- cmd/api/schemas.go | 1 + 5 files changed, 125 insertions(+), 36 deletions(-) diff --git a/cmd/api/docs/docs.go b/cmd/api/docs/docs.go index 676eb42c2..222fefe64 100644 --- a/cmd/api/docs/docs.go +++ b/cmd/api/docs/docs.go @@ -139,10 +139,15 @@ const docTemplate = `{ ], "responses": { "200": { - "description": "Total objects and object list", + "description": "List of objects", "schema": { "type": "object", - "additionalProperties": true + "additionalProperties": { + "type": "array", + "items": { + "$ref": "#/definitions/api.Object" + } + } } }, "403": { @@ -349,10 +354,12 @@ const docTemplate = `{ ], "responses": { "200": { - "description": "Total and object types", + "description": "List of object types", "schema": { "type": "object", - "additionalProperties": true + "additionalProperties": { + "$ref": "#/definitions/api.ObjectType" + } } }, "403": { @@ -474,10 +481,15 @@ const docTemplate = `{ ], "responses": { "200": { - "description": "Total objects and object list", + "description": "List of objects", "schema": { "type": "object", - "additionalProperties": true + "additionalProperties": { + "type": "array", + "items": { + "$ref": "#/definitions/api.Object" + } + } } }, "403": { @@ -832,6 +844,27 @@ const docTemplate = `{ } } }, + "api.ObjectType": { + "type": "object", + "properties": { + "iconEmoji": { + "type": "string" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "type": { + "type": "string", + "example": "object_type" + }, + "unique_key": { + "type": "string" + } + } + }, "api.ServerError": { "type": "object", "properties": { diff --git a/cmd/api/docs/swagger.json b/cmd/api/docs/swagger.json index 5dcaef8f2..a55d3a9a0 100644 --- a/cmd/api/docs/swagger.json +++ b/cmd/api/docs/swagger.json @@ -133,10 +133,15 @@ ], "responses": { "200": { - "description": "Total objects and object list", + "description": "List of objects", "schema": { "type": "object", - "additionalProperties": true + "additionalProperties": { + "type": "array", + "items": { + "$ref": "#/definitions/api.Object" + } + } } }, "403": { @@ -343,10 +348,12 @@ ], "responses": { "200": { - "description": "Total and object types", + "description": "List of object types", "schema": { "type": "object", - "additionalProperties": true + "additionalProperties": { + "$ref": "#/definitions/api.ObjectType" + } } }, "403": { @@ -468,10 +475,15 @@ ], "responses": { "200": { - "description": "Total objects and object list", + "description": "List of objects", "schema": { "type": "object", - "additionalProperties": true + "additionalProperties": { + "type": "array", + "items": { + "$ref": "#/definitions/api.Object" + } + } } }, "403": { @@ -826,6 +838,27 @@ } } }, + "api.ObjectType": { + "type": "object", + "properties": { + "iconEmoji": { + "type": "string" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "type": { + "type": "string", + "example": "object_type" + }, + "unique_key": { + "type": "string" + } + } + }, "api.ServerError": { "type": "object", "properties": { diff --git a/cmd/api/docs/swagger.yaml b/cmd/api/docs/swagger.yaml index 6fdaf15c4..9e55883cf 100644 --- a/cmd/api/docs/swagger.yaml +++ b/cmd/api/docs/swagger.yaml @@ -104,6 +104,20 @@ definitions: example: object_template type: string type: object + api.ObjectType: + properties: + iconEmoji: + type: string + id: + type: string + name: + type: string + type: + example: object_type + type: string + unique_key: + type: string + type: object api.ServerError: properties: error: @@ -298,9 +312,12 @@ paths: - application/json responses: "200": - description: Total objects and object list + description: List of objects schema: - additionalProperties: true + additionalProperties: + items: + $ref: '#/definitions/api.Object' + type: array type: object "403": description: Unauthorized @@ -438,9 +455,10 @@ paths: - application/json responses: "200": - description: Total and object types + description: List of object types schema: - additionalProperties: true + additionalProperties: + $ref: '#/definitions/api.ObjectType' type: object "403": description: Unauthorized @@ -522,9 +540,12 @@ paths: - application/json responses: "200": - description: Total objects and object list + description: List of objects schema: - additionalProperties: true + additionalProperties: + items: + $ref: '#/definitions/api.Object' + type: array type: object "403": description: Unauthorized diff --git a/cmd/api/handlers.go b/cmd/api/handlers.go index 1025e71dc..bbe01dae2 100644 --- a/cmd/api/handlers.go +++ b/cmd/api/handlers.go @@ -15,15 +15,16 @@ import ( "github.com/anyproto/anytype-heart/util/pbtypes" ) -type NameRequest struct { +type CreateSpaceRequest struct { Name string `json:"name"` } type CreateObjectRequest struct { - Details map[string]interface{} `json:"details"` - TemplateID string `json:"template_id"` - ObjectTypeUniqueKey string `json:"object_type_unique_key"` - WithChat bool `json:"with_chat"` + Name string `json:"name"` + IconEmoji string `json:"iconEmoji"` + TemplateID string `json:"template_id"` + ObjectTypeUniqueKey string `json:"object_type_unique_key"` + WithChat bool `json:"with_chat"` } // authdisplayCodeHandler generates a new challenge and returns the challenge ID @@ -54,7 +55,7 @@ func (a *ApiServer) authDisplayCodeHandler(c *gin.Context) { // @Accept json // @Produce json // @Param code query string true "The code retrieved from Anytype Desktop app" -// @ParamchallengeId query string true "The challenge ID" +// @ParamchallengeId query string true "The challenge ID" // @Success 200 {object} map[string]string "Access and refresh tokens" // @Failure 400 {object} ValidationError "Invalid input" // @Failure 502 {object} ServerError "Internal server error" @@ -177,7 +178,7 @@ func (a *ApiServer) getSpacesHandler(c *gin.Context) { // @Router /spaces [post] func (a *ApiServer) createSpaceHandler(c *gin.Context) { // Create new workspace with a random icon and import default usecase - nameRequest := NameRequest{} + nameRequest := CreateSpaceRequest{} if err := c.BindJSON(&nameRequest); err != nil { c.JSON(http.StatusBadRequest, gin.H{"message": "Invalid JSON"}) return @@ -268,7 +269,7 @@ func (a *ApiServer) getSpaceMembersHandler(c *gin.Context) { // @Param space_id path string true "The ID of the space" // @Param offset query int false "The number of items to skip before starting to collect the result set" // @Param limit query int false "The number of items to return" default(100) -// @Success 200 {object} map[string]interface{} "Total objects and object list" +// @Success 200 {object} map[string][]Object "List of objects" // @Failure 403 {object} UnauthorizedError "Unauthorized" // @Failure 404 {object} NotFoundError "Resource not found" // @Failure 502 {object} ServerError "Internal server error" @@ -399,8 +400,8 @@ func (a *ApiServer) createObjectHandler(c *gin.Context) { resp := a.mw.ObjectCreate(context.Background(), &pb.RpcObjectCreateRequest{ Details: &types.Struct{ Fields: map[string]*types.Value{ - "name": {Kind: &types.Value_StringValue{StringValue: request.Details["name"].(string)}}, - "iconEmoji": {Kind: &types.Value_StringValue{StringValue: request.Details["iconEmoji"].(string)}}, + "name": {Kind: &types.Value_StringValue{StringValue: request.Name}}, + "iconEmoji": {Kind: &types.Value_StringValue{StringValue: request.IconEmoji}}, }, }, // TODO figure out internal flags @@ -464,7 +465,7 @@ func (a *ApiServer) updateObjectHandler(c *gin.Context) { // @Param space_id path string true "The ID of the space" // @Param offset query int false "The number of items to skip before starting to collect the result set" // @Param limit query int false "The number of items to return" default(100) -// @Success 200 {object} map[string]interface{} "Total and object types" +// @Success 200 {object} map[string]ObjectType "List of object types" // @Failure 403 {object} UnauthorizedError "Unauthorized" // @Failure 404 {object} NotFoundError "Resource not found" // @Failure 502 {object} ServerError "Internal server error" @@ -597,13 +598,13 @@ func (a *ApiServer) getObjectTypeTemplatesHandler(c *gin.Context) { // @Tags search // @Accept json // @Produce json -// @Param search query string false "The search term to filter objects by name" -// @Param object_type query string false "Specify object type for search" -// @Param offset query int false "The number of items to skip before starting to collect the result set" -// @Param limit query int false "The number of items to return" default(100) -// @Success 200 {object} map[string]interface{} "Total objects and object list" -// @Failure 403 {object} UnauthorizedError "Unauthorized" -// @Failure 502 {object} ServerError "Internal server error" +// @Param search query string false "The search term to filter objects by name" +// @Param object_type query string false "Specify object type for search" +// @Param offset query int false "The number of items to skip before starting to collect the result set" +// @Param limit query int false "The number of items to return" default(100) +// @Success 200 {object} map[string][]Object "List of objects" +// @Failure 403 {object} UnauthorizedError "Unauthorized" +// @Failure 502 {object} ServerError "Internal server error" // @Router /objects [get] func (a *ApiServer) getObjectsHandler(c *gin.Context) { searchTerm := c.Query("search") diff --git a/cmd/api/schemas.go b/cmd/api/schemas.go index dae8692a6..743d5e7bd 100644 --- a/cmd/api/schemas.go +++ b/cmd/api/schemas.go @@ -87,6 +87,7 @@ type RelationLink struct { type ObjectType struct { Type string `json:"type" example:"object_type"` ID string `json:"id"` + UniqueKey string `json:"unique_key"` Name string `json:"name"` IconEmoji string `json:"iconEmoji"` } From 7bbd063f66acd24178b559fcc6f86618121b5e4d Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Sat, 23 Nov 2024 15:47:55 +0100 Subject: [PATCH 025/279] GO-4459 Fix request body --- cmd/api/demo/api_demo.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/api/demo/api_demo.go b/cmd/api/demo/api_demo.go index 340628f43..39593993d 100644 --- a/cmd/api/demo/api_demo.go +++ b/cmd/api/demo/api_demo.go @@ -57,7 +57,7 @@ func main() { // space_objects // {"GET", "/spaces/{space_id}/objects", map[string]interface{}{"space_id": testSpaceId, "limit": 100, "offset": 0}, nil}, // {"GET", "/spaces/{space_id}/objects/{object_id}", map[string]interface{}{"space_id": testSpaceId, "object_id": testObjectId}, nil}, - // {"POST", "/spaces/{space_id}/objects", map[string]interface{}{"space_id": testSpaceId}, map[string]interface{}{"details": map[string]interface{}{"name": "New Object from demo", "iconEmoji": "💥"}, "template_id": "", "object_type_unique_key": "ot-page", "with_chat": false}}, + {"POST", "/spaces/{space_id}/objects", map[string]interface{}{"space_id": testSpaceId}, map[string]interface{}{"name": "New Object from demo", "iconEmoji": "💥", "template_id": "", "object_type_unique_key": "ot-page", "with_chat": false}}, // {"PUT", "/spaces/{space_id}/objects/{object_id}", map[string]interface{}{"space_id": testSpaceId, "object_id": testObjectId}, map[string]interface{}{"name": "Updated Object"}}, // types_and_templates From e1a40e48e7cb9edcfa7e278b5bd5a1923e411752 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Sat, 23 Nov 2024 17:22:56 +0100 Subject: [PATCH 026/279] GO-4459 Standardize schema format to snake_case --- cmd/api/demo/api_demo.go | 2 +- cmd/api/docs/docs.go | 36 +++++++++++++++++++++--------------- cmd/api/docs/swagger.json | 36 +++++++++++++++++++++--------------- cmd/api/docs/swagger.yaml | 24 +++++++++++++++--------- cmd/api/handlers.go | 2 +- cmd/api/schemas.go | 24 ++++++++++++------------ 6 files changed, 71 insertions(+), 53 deletions(-) diff --git a/cmd/api/demo/api_demo.go b/cmd/api/demo/api_demo.go index 39593993d..5f5ee2a65 100644 --- a/cmd/api/demo/api_demo.go +++ b/cmd/api/demo/api_demo.go @@ -57,7 +57,7 @@ func main() { // space_objects // {"GET", "/spaces/{space_id}/objects", map[string]interface{}{"space_id": testSpaceId, "limit": 100, "offset": 0}, nil}, // {"GET", "/spaces/{space_id}/objects/{object_id}", map[string]interface{}{"space_id": testSpaceId, "object_id": testObjectId}, nil}, - {"POST", "/spaces/{space_id}/objects", map[string]interface{}{"space_id": testSpaceId}, map[string]interface{}{"name": "New Object from demo", "iconEmoji": "💥", "template_id": "", "object_type_unique_key": "ot-page", "with_chat": false}}, + {"POST", "/spaces/{space_id}/objects", map[string]interface{}{"space_id": testSpaceId}, map[string]interface{}{"name": "New Object from demo", "icon_emoji": "💥", "template_id": "", "object_type_unique_key": "ot-page", "with_chat": false}}, // {"PUT", "/spaces/{space_id}/objects/{object_id}", map[string]interface{}{"space_id": testSpaceId, "object_id": testObjectId}, map[string]interface{}{"name": "Updated Object"}}, // types_and_templates diff --git a/cmd/api/docs/docs.go b/cmd/api/docs/docs.go index 222fefe64..bfb0951c8 100644 --- a/cmd/api/docs/docs.go +++ b/cmd/api/docs/docs.go @@ -714,7 +714,7 @@ const docTemplate = `{ "text": { "$ref": "#/definitions/api.Text" }, - "verticalalign": { + "vertical_align": { "type": "string" } } @@ -734,7 +734,7 @@ const docTemplate = `{ "api.File": { "type": "object", "properties": { - "addedat": { + "added_at": { "type": "integer" }, "hash": { @@ -755,7 +755,7 @@ const docTemplate = `{ "style": { "type": "integer" }, - "targetobjectid": { + "target_object_id": { "type": "string" }, "type": { @@ -799,8 +799,9 @@ const docTemplate = `{ "$ref": "#/definitions/api.Detail" } }, - "iconEmoji": { - "type": "string" + "icon_emoji": { + "type": "string", + "example": "ðŸ“" }, "id": { "type": "string", @@ -829,14 +830,16 @@ const docTemplate = `{ "api.ObjectTemplate": { "type": "object", "properties": { - "iconEmoji": { - "type": "string" + "icon_emoji": { + "type": "string", + "example": "ðŸ“" }, "id": { "type": "string" }, "name": { - "type": "string" + "type": "string", + "example": "Object Template Name" }, "type": { "type": "string", @@ -847,14 +850,16 @@ const docTemplate = `{ "api.ObjectType": { "type": "object", "properties": { - "iconEmoji": { - "type": "string" + "icon_emoji": { + "type": "string", + "example": "ðŸ“" }, "id": { "type": "string" }, "name": { - "type": "string" + "type": "string", + "example": "Object Type Name" }, "type": { "type": "string", @@ -898,7 +903,8 @@ const docTemplate = `{ "example": "bafyreie4qcl3wczb4cw5hrfyycikhjyh6oljdis3ewqrk5boaav3sbwqya" }, "icon": { - "type": "string" + "type": "string", + "example": "data:image/png;base64, \u003cbase64-encoded-image\u003e" }, "id": { "type": "string" @@ -953,7 +959,7 @@ const docTemplate = `{ }, "name": { "type": "string", - "example": "" + "example": "Space Member Name" }, "role": { "type": "string" @@ -973,10 +979,10 @@ const docTemplate = `{ "color": { "type": "string" }, - "iconemoji": { + "icon_emoji": { "type": "string" }, - "iconimage": { + "icon_image": { "type": "string" }, "style": { diff --git a/cmd/api/docs/swagger.json b/cmd/api/docs/swagger.json index a55d3a9a0..4807f85a2 100644 --- a/cmd/api/docs/swagger.json +++ b/cmd/api/docs/swagger.json @@ -708,7 +708,7 @@ "text": { "$ref": "#/definitions/api.Text" }, - "verticalalign": { + "vertical_align": { "type": "string" } } @@ -728,7 +728,7 @@ "api.File": { "type": "object", "properties": { - "addedat": { + "added_at": { "type": "integer" }, "hash": { @@ -749,7 +749,7 @@ "style": { "type": "integer" }, - "targetobjectid": { + "target_object_id": { "type": "string" }, "type": { @@ -793,8 +793,9 @@ "$ref": "#/definitions/api.Detail" } }, - "iconEmoji": { - "type": "string" + "icon_emoji": { + "type": "string", + "example": "ðŸ“" }, "id": { "type": "string", @@ -823,14 +824,16 @@ "api.ObjectTemplate": { "type": "object", "properties": { - "iconEmoji": { - "type": "string" + "icon_emoji": { + "type": "string", + "example": "ðŸ“" }, "id": { "type": "string" }, "name": { - "type": "string" + "type": "string", + "example": "Object Template Name" }, "type": { "type": "string", @@ -841,14 +844,16 @@ "api.ObjectType": { "type": "object", "properties": { - "iconEmoji": { - "type": "string" + "icon_emoji": { + "type": "string", + "example": "ðŸ“" }, "id": { "type": "string" }, "name": { - "type": "string" + "type": "string", + "example": "Object Type Name" }, "type": { "type": "string", @@ -892,7 +897,8 @@ "example": "bafyreie4qcl3wczb4cw5hrfyycikhjyh6oljdis3ewqrk5boaav3sbwqya" }, "icon": { - "type": "string" + "type": "string", + "example": "data:image/png;base64, \u003cbase64-encoded-image\u003e" }, "id": { "type": "string" @@ -947,7 +953,7 @@ }, "name": { "type": "string", - "example": "" + "example": "Space Member Name" }, "role": { "type": "string" @@ -967,10 +973,10 @@ "color": { "type": "string" }, - "iconemoji": { + "icon_emoji": { "type": "string" }, - "iconimage": { + "icon_image": { "type": "string" }, "style": { diff --git a/cmd/api/docs/swagger.yaml b/cmd/api/docs/swagger.yaml index 9e55883cf..2a9dd3800 100644 --- a/cmd/api/docs/swagger.yaml +++ b/cmd/api/docs/swagger.yaml @@ -18,7 +18,7 @@ definitions: $ref: '#/definitions/api.Layout' text: $ref: '#/definitions/api.Text' - verticalalign: + vertical_align: type: string type: object api.Detail: @@ -31,7 +31,7 @@ definitions: type: object api.File: properties: - addedat: + added_at: type: integer hash: type: string @@ -45,7 +45,7 @@ definitions: type: integer style: type: integer - targetobjectid: + target_object_id: type: string type: type: string @@ -73,7 +73,8 @@ definitions: items: $ref: '#/definitions/api.Detail' type: array - iconEmoji: + icon_emoji: + example: "\U0001F4DD" type: string id: example: bafyreie6n5l5nkbjal37su54cha4coy7qzuhrnajluzv5qd5jvtsrxkequ @@ -94,11 +95,13 @@ definitions: type: object api.ObjectTemplate: properties: - iconEmoji: + icon_emoji: + example: "\U0001F4DD" type: string id: type: string name: + example: Object Template Name type: string type: example: object_template @@ -106,11 +109,13 @@ definitions: type: object api.ObjectType: properties: - iconEmoji: + icon_emoji: + example: "\U0001F4DD" type: string id: type: string name: + example: Object Type Name type: string type: example: object_type @@ -141,6 +146,7 @@ definitions: example: bafyreie4qcl3wczb4cw5hrfyycikhjyh6oljdis3ewqrk5boaav3sbwqya type: string icon: + example: data:image/png;base64, type: string id: type: string @@ -180,7 +186,7 @@ definitions: example: "" type: string name: - example: "" + example: Space Member Name type: string role: type: string @@ -194,9 +200,9 @@ definitions: type: boolean color: type: string - iconemoji: + icon_emoji: type: string - iconimage: + icon_image: type: string style: type: string diff --git a/cmd/api/handlers.go b/cmd/api/handlers.go index bbe01dae2..31c708fca 100644 --- a/cmd/api/handlers.go +++ b/cmd/api/handlers.go @@ -21,7 +21,7 @@ type CreateSpaceRequest struct { type CreateObjectRequest struct { Name string `json:"name"` - IconEmoji string `json:"iconEmoji"` + IconEmoji string `json:"icon_emoji"` TemplateID string `json:"template_id"` ObjectTypeUniqueKey string `json:"object_type_unique_key"` WithChat bool `json:"with_chat"` diff --git a/cmd/api/schemas.go b/cmd/api/schemas.go index 743d5e7bd..33d4db2b9 100644 --- a/cmd/api/schemas.go +++ b/cmd/api/schemas.go @@ -4,7 +4,7 @@ type Space struct { Type string `json:"type" example:"space"` ID string `json:"id"` Name string `json:"name" example:"Space Name"` - Icon string `json:"icon"` + Icon string `json:"icon" example:"data:image/png;base64, "` HomeObjectID string `json:"home_object_id" example:"bafyreie4qcl3wczb4cw5hrfyycikhjyh6oljdis3ewqrk5boaav3sbwqya"` ArchiveObjectID string `json:"archive_object_id" example:"bafyreialsgoyflf3etjm3parzurivyaukzivwortf32b4twnlwpwocsrri"` ProfileObjectID string `json:"profile_object_id" example:"bafyreiaxhwreshjqwndpwtdsu4mtihaqhhmlygqnyqpfyfwlqfq3rm3gw4"` @@ -21,7 +21,7 @@ type Space struct { type SpaceMember struct { Type string `json:"type" example:"space_member"` ID string `json:"id"` - Name string `json:"name" example:""` + Name string `json:"name" example:"Space Member Name"` Identity string `json:"identity" example:""` Role string `json:"role" enum:"editor,viewer,owner"` } @@ -30,7 +30,7 @@ type Object struct { Type string `json:"type" example:"object"` ID string `json:"id" example:"bafyreie6n5l5nkbjal37su54cha4coy7qzuhrnajluzv5qd5jvtsrxkequ"` Name string `json:"name" example:"Object Name"` - IconEmoji string `json:"iconEmoji"` + IconEmoji string `json:"icon_emoji" example:"ðŸ“"` ObjectType string `json:"object_type" example:"note"` SpaceID string `json:"space_id"` RootID string `json:"root_id"` @@ -43,7 +43,7 @@ type Block struct { ChildrenIDs []string `json:"children_ids"` BackgroundColor string `json:"background_color"` Align string `json:"align"` - VerticalAlign string `json:"verticalalign"` + VerticalAlign string `json:"vertical_align"` Layout Layout `json:"layout"` Text Text `json:"text"` File File `json:"file"` @@ -58,8 +58,8 @@ type Text struct { Style string `json:"style"` Checked bool `json:"checked"` Color string `json:"color"` - IconEmoji string `json:"iconemoji"` - IconImage string `json:"iconimage"` + IconEmoji string `json:"icon_emoji"` + IconImage string `json:"icon_image"` } type File struct { @@ -68,8 +68,8 @@ type File struct { Type string `json:"type"` Mime string `json:"mime"` Size int `json:"size"` - AddedAt int `json:"addedat"` - TargetObjectID string `json:"targetobjectid"` + AddedAt int `json:"added_at"` + TargetObjectID string `json:"target_object_id"` State int `json:"state"` Style int `json:"style"` } @@ -88,15 +88,15 @@ type ObjectType struct { Type string `json:"type" example:"object_type"` ID string `json:"id"` UniqueKey string `json:"unique_key"` - Name string `json:"name"` - IconEmoji string `json:"iconEmoji"` + Name string `json:"name" example:"Object Type Name"` + IconEmoji string `json:"icon_emoji" example:"ðŸ“"` } type ObjectTemplate struct { Type string `json:"type" example:"object_template"` ID string `json:"id"` - Name string `json:"name"` - IconEmoji string `json:"iconEmoji"` + Name string `json:"name" example:"Object Template Name"` + IconEmoji string `json:"icon_emoji" example:"ðŸ“"` } type ServerError struct { From 431af5ef0dc49407abe1be408a314f3c0ed3e922 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Sun, 24 Nov 2024 12:57:56 +0100 Subject: [PATCH 027/279] GO-4459 Resolve type names, fix bool filters, sort asc by name --- cmd/api/handlers.go | 39 +++++++++++++++++++++++++++++++++++---- 1 file changed, 35 insertions(+), 4 deletions(-) diff --git a/cmd/api/handlers.go b/cmd/api/handlers.go index 31c708fca..683202a9e 100644 --- a/cmd/api/handlers.go +++ b/cmd/api/handlers.go @@ -106,6 +106,12 @@ func (a *ApiServer) getSpacesHandler(c *gin.Context) { Value: pbtypes.Int64(int64(model.SpaceStatus_Ok)), }, }, + Sorts: []*model.BlockContentDataviewSort{ + { + RelationKey: "name", + Type: model.BlockContentDataviewSort_Asc, + }, + }, }) if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to retrieve list of spaces."}) @@ -237,6 +243,12 @@ func (a *ApiServer) getSpaceMembersHandler(c *gin.Context) { Value: pbtypes.Int64(int64(model.ObjectType_participant)), }, }, + Sorts: []*model.BlockContentDataviewSort{ + { + RelationKey: "name", + Type: model.BlockContentDataviewSort_Asc, + }, + }, }) if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { @@ -304,12 +316,19 @@ func (a *ApiServer) getSpaceObjectsHandler(c *gin.Context) { objects := make([]Object, 0, len(resp.Records)) for _, record := range resp.Records { + objectTypeName, err := a.resolveTypeToName(spaceID, record.Fields["type"].GetStringValue()) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to resolve object type name."}) + return + } + object := Object{ + // TODO fix type inconsistency Type: model.ObjectTypeLayout_name[int32(record.Fields["layout"].GetNumberValue())], ID: record.Fields["id"].GetStringValue(), Name: record.Fields["name"].GetStringValue(), IconEmoji: record.Fields["iconEmoji"].GetStringValue(), - ObjectType: record.Fields["type"].GetStringValue(), + ObjectType: objectTypeName, SpaceID: spaceID, // TODO: populate other fields // RootID: record.Fields["rootId"].GetStringValue(), @@ -361,12 +380,18 @@ func (a *ApiServer) getObjectHandler(c *gin.Context) { return } + objectTypeName, err := a.resolveTypeToName(spaceID, resp.ObjectView.Details[0].Details.Fields["type"].GetStringValue()) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to resolve object type name."}) + return + } + object := Object{ Type: "object", ID: objectID, Name: resp.ObjectView.Details[0].Details.Fields["name"].GetStringValue(), IconEmoji: resp.ObjectView.Details[0].Details.Fields["iconEmoji"].GetStringValue(), - ObjectType: resp.ObjectView.Details[0].Details.Fields["type"].GetStringValue(), + ObjectType: objectTypeName, RootID: resp.ObjectView.RootId, // TODO: populate other fields Blocks: []Block{}, @@ -484,7 +509,13 @@ func (a *ApiServer) getObjectTypesHandler(c *gin.Context) { { RelationKey: bundle.RelationKeyIsHidden.String(), Condition: model.BlockContentDataviewFilter_NotEqual, - Value: pbtypes.String("true"), + Value: pbtypes.Bool(true), + }, + }, + Sorts: []*model.BlockContentDataviewSort{ + { + RelationKey: "name", + Type: model.BlockContentDataviewSort_Asc, }, }, }) @@ -651,7 +682,7 @@ func (a *ApiServer) getObjectsHandler(c *gin.Context) { { RelationKey: bundle.RelationKeyIsHidden.String(), Condition: model.BlockContentDataviewFilter_NotEqual, - Value: pbtypes.String("true"), + Value: pbtypes.Bool(true), }, { RelationKey: bundle.RelationKeyName.String(), From 48fc236a29792f64710fb9912d4cfa5754d96517 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Sun, 24 Nov 2024 12:59:16 +0100 Subject: [PATCH 028/279] GO-4459 Add more examples to docs --- cmd/api/docs/docs.go | 33 ++++++++++++++++++++------------- cmd/api/docs/swagger.json | 33 ++++++++++++++++++++------------- cmd/api/docs/swagger.yaml | 19 +++++++++++++------ cmd/api/schemas.go | 26 +++++++++++++------------- 4 files changed, 66 insertions(+), 45 deletions(-) diff --git a/cmd/api/docs/docs.go b/cmd/api/docs/docs.go index bfb0951c8..20942d7d4 100644 --- a/cmd/api/docs/docs.go +++ b/cmd/api/docs/docs.go @@ -801,7 +801,7 @@ const docTemplate = `{ }, "icon_emoji": { "type": "string", - "example": "ðŸ“" + "example": "📄" }, "id": { "type": "string", @@ -813,13 +813,14 @@ const docTemplate = `{ }, "object_type": { "type": "string", - "example": "note" + "example": "Page" }, "root_id": { "type": "string" }, "space_id": { - "type": "string" + "type": "string", + "example": "bafyreigyfkt6rbv24sbv5aq2hko3bhmv5xxlf22b4bypdu6j7hnphm3psq.23me69r569oi1" }, "type": { "type": "string", @@ -832,10 +833,11 @@ const docTemplate = `{ "properties": { "icon_emoji": { "type": "string", - "example": "ðŸ“" + "example": "📄" }, "id": { - "type": "string" + "type": "string", + "example": "bafyreictrp3obmnf6dwejy5o4p7bderaaia4bdg2psxbfzf44yya5uutge" }, "name": { "type": "string", @@ -852,21 +854,23 @@ const docTemplate = `{ "properties": { "icon_emoji": { "type": "string", - "example": "ðŸ“" + "example": "📄" }, "id": { - "type": "string" + "type": "string", + "example": "bafyreigyb6l5szohs32ts26ku2j42yd65e6hqy2u3gtzgdwqv6hzftsetu" }, "name": { "type": "string", - "example": "Object Type Name" + "example": "Page" }, "type": { "type": "string", "example": "object_type" }, "unique_key": { - "type": "string" + "type": "string", + "example": "ot-page" } } }, @@ -907,7 +911,8 @@ const docTemplate = `{ "example": "data:image/png;base64, \u003cbase64-encoded-image\u003e" }, "id": { - "type": "string" + "type": "string", + "example": "bafyreigyfkt6rbv24sbv5aq2hko3bhmv5xxlf22b4bypdu6j7hnphm3psq.23me69r569oi1" }, "marketplace_workspace_id": { "type": "string", @@ -951,18 +956,20 @@ const docTemplate = `{ "type": "object", "properties": { "id": { - "type": "string" + "type": "string", + "example": "_participant_bafyreigyfkt6rbv24sbv5aq2hko1bhmv5xxlf22b4bypdu6j7hnphm3psq_23me69r569oi1_AAjEaEwPF4nkEh9AWkqEnzcQ8HziBB4ETjiTpvRCQvWnSMDZ" }, "identity": { "type": "string", - "example": "" + "example": "AAjEaEwPF4nkEh7AWkqEnzcQ8HziGB4ETjiTpvRCQvWnSMDZ" }, "name": { "type": "string", "example": "Space Member Name" }, "role": { - "type": "string" + "type": "string", + "example": "editor" }, "type": { "type": "string", diff --git a/cmd/api/docs/swagger.json b/cmd/api/docs/swagger.json index 4807f85a2..deda809e3 100644 --- a/cmd/api/docs/swagger.json +++ b/cmd/api/docs/swagger.json @@ -795,7 +795,7 @@ }, "icon_emoji": { "type": "string", - "example": "ðŸ“" + "example": "📄" }, "id": { "type": "string", @@ -807,13 +807,14 @@ }, "object_type": { "type": "string", - "example": "note" + "example": "Page" }, "root_id": { "type": "string" }, "space_id": { - "type": "string" + "type": "string", + "example": "bafyreigyfkt6rbv24sbv5aq2hko3bhmv5xxlf22b4bypdu6j7hnphm3psq.23me69r569oi1" }, "type": { "type": "string", @@ -826,10 +827,11 @@ "properties": { "icon_emoji": { "type": "string", - "example": "ðŸ“" + "example": "📄" }, "id": { - "type": "string" + "type": "string", + "example": "bafyreictrp3obmnf6dwejy5o4p7bderaaia4bdg2psxbfzf44yya5uutge" }, "name": { "type": "string", @@ -846,21 +848,23 @@ "properties": { "icon_emoji": { "type": "string", - "example": "ðŸ“" + "example": "📄" }, "id": { - "type": "string" + "type": "string", + "example": "bafyreigyb6l5szohs32ts26ku2j42yd65e6hqy2u3gtzgdwqv6hzftsetu" }, "name": { "type": "string", - "example": "Object Type Name" + "example": "Page" }, "type": { "type": "string", "example": "object_type" }, "unique_key": { - "type": "string" + "type": "string", + "example": "ot-page" } } }, @@ -901,7 +905,8 @@ "example": "data:image/png;base64, \u003cbase64-encoded-image\u003e" }, "id": { - "type": "string" + "type": "string", + "example": "bafyreigyfkt6rbv24sbv5aq2hko3bhmv5xxlf22b4bypdu6j7hnphm3psq.23me69r569oi1" }, "marketplace_workspace_id": { "type": "string", @@ -945,18 +950,20 @@ "type": "object", "properties": { "id": { - "type": "string" + "type": "string", + "example": "_participant_bafyreigyfkt6rbv24sbv5aq2hko1bhmv5xxlf22b4bypdu6j7hnphm3psq_23me69r569oi1_AAjEaEwPF4nkEh9AWkqEnzcQ8HziBB4ETjiTpvRCQvWnSMDZ" }, "identity": { "type": "string", - "example": "" + "example": "AAjEaEwPF4nkEh7AWkqEnzcQ8HziGB4ETjiTpvRCQvWnSMDZ" }, "name": { "type": "string", "example": "Space Member Name" }, "role": { - "type": "string" + "type": "string", + "example": "editor" }, "type": { "type": "string", diff --git a/cmd/api/docs/swagger.yaml b/cmd/api/docs/swagger.yaml index 2a9dd3800..6fa7877f8 100644 --- a/cmd/api/docs/swagger.yaml +++ b/cmd/api/docs/swagger.yaml @@ -74,7 +74,7 @@ definitions: $ref: '#/definitions/api.Detail' type: array icon_emoji: - example: "\U0001F4DD" + example: "\U0001F4C4" type: string id: example: bafyreie6n5l5nkbjal37su54cha4coy7qzuhrnajluzv5qd5jvtsrxkequ @@ -83,11 +83,12 @@ definitions: example: Object Name type: string object_type: - example: note + example: Page type: string root_id: type: string space_id: + example: bafyreigyfkt6rbv24sbv5aq2hko3bhmv5xxlf22b4bypdu6j7hnphm3psq.23me69r569oi1 type: string type: example: object @@ -96,9 +97,10 @@ definitions: api.ObjectTemplate: properties: icon_emoji: - example: "\U0001F4DD" + example: "\U0001F4C4" type: string id: + example: bafyreictrp3obmnf6dwejy5o4p7bderaaia4bdg2psxbfzf44yya5uutge type: string name: example: Object Template Name @@ -110,17 +112,19 @@ definitions: api.ObjectType: properties: icon_emoji: - example: "\U0001F4DD" + example: "\U0001F4C4" type: string id: + example: bafyreigyb6l5szohs32ts26ku2j42yd65e6hqy2u3gtzgdwqv6hzftsetu type: string name: - example: Object Type Name + example: Page type: string type: example: object_type type: string unique_key: + example: ot-page type: string type: object api.ServerError: @@ -149,6 +153,7 @@ definitions: example: data:image/png;base64, type: string id: + example: bafyreigyfkt6rbv24sbv5aq2hko3bhmv5xxlf22b4bypdu6j7hnphm3psq.23me69r569oi1 type: string marketplace_workspace_id: example: _anytype_marketplace @@ -181,14 +186,16 @@ definitions: api.SpaceMember: properties: id: + example: _participant_bafyreigyfkt6rbv24sbv5aq2hko1bhmv5xxlf22b4bypdu6j7hnphm3psq_23me69r569oi1_AAjEaEwPF4nkEh9AWkqEnzcQ8HziBB4ETjiTpvRCQvWnSMDZ type: string identity: - example: "" + example: AAjEaEwPF4nkEh7AWkqEnzcQ8HziGB4ETjiTpvRCQvWnSMDZ type: string name: example: Space Member Name type: string role: + example: editor type: string type: example: space_member diff --git a/cmd/api/schemas.go b/cmd/api/schemas.go index 33d4db2b9..925a7f2dc 100644 --- a/cmd/api/schemas.go +++ b/cmd/api/schemas.go @@ -2,7 +2,7 @@ package api type Space struct { Type string `json:"type" example:"space"` - ID string `json:"id"` + ID string `json:"id" example:"bafyreigyfkt6rbv24sbv5aq2hko3bhmv5xxlf22b4bypdu6j7hnphm3psq.23me69r569oi1"` Name string `json:"name" example:"Space Name"` Icon string `json:"icon" example:"data:image/png;base64, "` HomeObjectID string `json:"home_object_id" example:"bafyreie4qcl3wczb4cw5hrfyycikhjyh6oljdis3ewqrk5boaav3sbwqya"` @@ -20,19 +20,19 @@ type Space struct { type SpaceMember struct { Type string `json:"type" example:"space_member"` - ID string `json:"id"` + ID string `json:"id" example:"_participant_bafyreigyfkt6rbv24sbv5aq2hko1bhmv5xxlf22b4bypdu6j7hnphm3psq_23me69r569oi1_AAjEaEwPF4nkEh9AWkqEnzcQ8HziBB4ETjiTpvRCQvWnSMDZ"` Name string `json:"name" example:"Space Member Name"` - Identity string `json:"identity" example:""` - Role string `json:"role" enum:"editor,viewer,owner"` + Identity string `json:"identity" example:"AAjEaEwPF4nkEh7AWkqEnzcQ8HziGB4ETjiTpvRCQvWnSMDZ"` + Role string `json:"role" enum:"editor,viewer,owner" example:"editor"` } type Object struct { Type string `json:"type" example:"object"` ID string `json:"id" example:"bafyreie6n5l5nkbjal37su54cha4coy7qzuhrnajluzv5qd5jvtsrxkequ"` Name string `json:"name" example:"Object Name"` - IconEmoji string `json:"icon_emoji" example:"ðŸ“"` - ObjectType string `json:"object_type" example:"note"` - SpaceID string `json:"space_id"` + IconEmoji string `json:"icon_emoji" example:"📄"` + ObjectType string `json:"object_type" example:"Page"` + SpaceID string `json:"space_id" example:"bafyreigyfkt6rbv24sbv5aq2hko3bhmv5xxlf22b4bypdu6j7hnphm3psq.23me69r569oi1"` RootID string `json:"root_id"` Blocks []Block `json:"blocks"` Details []Detail `json:"details"` @@ -86,17 +86,17 @@ type RelationLink struct { type ObjectType struct { Type string `json:"type" example:"object_type"` - ID string `json:"id"` - UniqueKey string `json:"unique_key"` - Name string `json:"name" example:"Object Type Name"` - IconEmoji string `json:"icon_emoji" example:"ðŸ“"` + ID string `json:"id" example:"bafyreigyb6l5szohs32ts26ku2j42yd65e6hqy2u3gtzgdwqv6hzftsetu"` + UniqueKey string `json:"unique_key" example:"ot-page"` + Name string `json:"name" example:"Page"` + IconEmoji string `json:"icon_emoji" example:"📄"` } type ObjectTemplate struct { Type string `json:"type" example:"object_template"` - ID string `json:"id"` + ID string `json:"id" example:"bafyreictrp3obmnf6dwejy5o4p7bderaaia4bdg2psxbfzf44yya5uutge"` Name string `json:"name" example:"Object Template Name"` - IconEmoji string `json:"icon_emoji" example:"ðŸ“"` + IconEmoji string `json:"icon_emoji" example:"📄"` } type ServerError struct { From 36e594f05e36105b64ec2ce4bf7e0d55a9474404 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Sun, 24 Nov 2024 14:22:58 +0100 Subject: [PATCH 029/279] GO-4459 Return icon and global name for members --- cmd/api/handlers.go | 31 +++++++++++++++++++++++++------ cmd/api/schemas.go | 12 +++++++----- 2 files changed, 32 insertions(+), 11 deletions(-) diff --git a/cmd/api/handlers.go b/cmd/api/handlers.go index 683202a9e..ed3b13a61 100644 --- a/cmd/api/handlers.go +++ b/cmd/api/handlers.go @@ -145,7 +145,12 @@ func (a *ApiServer) getSpacesHandler(c *gin.Context) { } else { iconOption := record.Fields["iconOption"].GetNumberValue() // TODO figure out size - iconBase64 = a.spaceSvg(int(iconOption), 100, string([]rune(record.Fields["name"].GetStringValue())[0])) + // Prevent index out of range error for space with empty name + if len(record.Fields["name"].GetStringValue()) > 0 { + iconBase64 = a.spaceSvg(int(iconOption), 100, string([]rune(record.Fields["name"].GetStringValue())[0])) + } else { + iconBase64 = a.spaceSvg(int(iconOption), 100, "") + } } space := Space{ @@ -258,12 +263,26 @@ func (a *ApiServer) getSpaceMembersHandler(c *gin.Context) { members := make([]SpaceMember, 0, len(resp.Records)) for _, record := range resp.Records { + // Convert iconImage to base64 string + iconImageId := record.Fields["iconImage"].GetStringValue() + iconBase64 := "" + if iconImageId != "" { + b64, err2 := a.imageToBase64(a.getGatewayURL(iconImageId)) + if err2 != nil { + c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to convert image to base64."}) + return + } + iconBase64 = b64 + } + member := SpaceMember{ - Type: "space_member", - ID: record.Fields["id"].GetStringValue(), - Name: record.Fields["name"].GetStringValue(), - Identity: record.Fields["identity"].GetStringValue(), - Role: model.ParticipantPermissions_name[int32(record.Fields["participantPermissions"].GetNumberValue())], + Type: "space_member", + ID: record.Fields["id"].GetStringValue(), + Name: record.Fields["name"].GetStringValue(), + Icon: iconBase64, + Identity: record.Fields["identity"].GetStringValue(), + GlobalName: record.Fields["globalName"].GetStringValue(), + Role: model.ParticipantPermissions_name[int32(record.Fields["participantPermissions"].GetNumberValue())], } members = append(members, member) diff --git a/cmd/api/schemas.go b/cmd/api/schemas.go index 925a7f2dc..bae16a96c 100644 --- a/cmd/api/schemas.go +++ b/cmd/api/schemas.go @@ -19,11 +19,13 @@ type Space struct { } type SpaceMember struct { - Type string `json:"type" example:"space_member"` - ID string `json:"id" example:"_participant_bafyreigyfkt6rbv24sbv5aq2hko1bhmv5xxlf22b4bypdu6j7hnphm3psq_23me69r569oi1_AAjEaEwPF4nkEh9AWkqEnzcQ8HziBB4ETjiTpvRCQvWnSMDZ"` - Name string `json:"name" example:"Space Member Name"` - Identity string `json:"identity" example:"AAjEaEwPF4nkEh7AWkqEnzcQ8HziGB4ETjiTpvRCQvWnSMDZ"` - Role string `json:"role" enum:"editor,viewer,owner" example:"editor"` + Type string `json:"type" example:"space_member"` + ID string `json:"id" example:"_participant_bafyreigyfkt6rbv24sbv5aq2hko1bhmv5xxlf22b4bypdu6j7hnphm3psq_23me69r569oi1_AAjEaEwPF4nkEh9AWkqEnzcQ8HziBB4ETjiTpvRCQvWnSMDZ"` + Name string `json:"name" example:"John Doe"` + Icon string `json:"icon" example:"data:image/png;base64, "` + Identity string `json:"identity" example:"AAjEaEwPF4nkEh7AWkqEnzcQ8HziGB4ETjiTpvRCQvWnSMDZ"` + GlobalName string `json:"global_name" example:"john.any"` + Role string `json:"role" enum:"Reader,Writer,Owner,NoPermission" example:"Owner"` } type Object struct { From 1c4b724edc236006547ff5ed63b1529ef638d8a8 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Sun, 24 Nov 2024 17:37:53 +0100 Subject: [PATCH 030/279] GO-4459 Rename 'ID' to 'Id' --- cmd/api/docs/docs.go | 21 +++++- cmd/api/docs/swagger.json | 21 +++++- cmd/api/docs/swagger.yaml | 17 ++++- cmd/api/handlers.go | 148 +++++++++++++++++++------------------- cmd/api/schemas.go | 42 +++++------ 5 files changed, 146 insertions(+), 103 deletions(-) diff --git a/cmd/api/docs/docs.go b/cmd/api/docs/docs.go index 20942d7d4..028200fdf 100644 --- a/cmd/api/docs/docs.go +++ b/cmd/api/docs/docs.go @@ -71,6 +71,13 @@ const docTemplate = `{ "name": "code", "in": "query", "required": true + }, + { + "type": "string", + "description": "The challenge ID", + "name": "challengeId", + "in": "query", + "required": true } ], "responses": { @@ -333,7 +340,7 @@ const docTemplate = `{ "parameters": [ { "type": "string", - "description": "The ID of the space", + "description": "The Id of the space", "name": "space_id", "in": "path", "required": true @@ -955,6 +962,14 @@ const docTemplate = `{ "api.SpaceMember": { "type": "object", "properties": { + "global_name": { + "type": "string", + "example": "john.any" + }, + "icon": { + "type": "string", + "example": "data:image/png;base64, \u003cbase64-encoded-image\u003e" + }, "id": { "type": "string", "example": "_participant_bafyreigyfkt6rbv24sbv5aq2hko1bhmv5xxlf22b4bypdu6j7hnphm3psq_23me69r569oi1_AAjEaEwPF4nkEh9AWkqEnzcQ8HziBB4ETjiTpvRCQvWnSMDZ" @@ -965,11 +980,11 @@ const docTemplate = `{ }, "name": { "type": "string", - "example": "Space Member Name" + "example": "John Doe" }, "role": { "type": "string", - "example": "editor" + "example": "Owner" }, "type": { "type": "string", diff --git a/cmd/api/docs/swagger.json b/cmd/api/docs/swagger.json index deda809e3..f9ec01e0b 100644 --- a/cmd/api/docs/swagger.json +++ b/cmd/api/docs/swagger.json @@ -65,6 +65,13 @@ "name": "code", "in": "query", "required": true + }, + { + "type": "string", + "description": "The challenge ID", + "name": "challengeId", + "in": "query", + "required": true } ], "responses": { @@ -327,7 +334,7 @@ "parameters": [ { "type": "string", - "description": "The ID of the space", + "description": "The Id of the space", "name": "space_id", "in": "path", "required": true @@ -949,6 +956,14 @@ "api.SpaceMember": { "type": "object", "properties": { + "global_name": { + "type": "string", + "example": "john.any" + }, + "icon": { + "type": "string", + "example": "data:image/png;base64, \u003cbase64-encoded-image\u003e" + }, "id": { "type": "string", "example": "_participant_bafyreigyfkt6rbv24sbv5aq2hko1bhmv5xxlf22b4bypdu6j7hnphm3psq_23me69r569oi1_AAjEaEwPF4nkEh9AWkqEnzcQ8HziBB4ETjiTpvRCQvWnSMDZ" @@ -959,11 +974,11 @@ }, "name": { "type": "string", - "example": "Space Member Name" + "example": "John Doe" }, "role": { "type": "string", - "example": "editor" + "example": "Owner" }, "type": { "type": "string", diff --git a/cmd/api/docs/swagger.yaml b/cmd/api/docs/swagger.yaml index 6fa7877f8..636a6a2c3 100644 --- a/cmd/api/docs/swagger.yaml +++ b/cmd/api/docs/swagger.yaml @@ -185,6 +185,12 @@ definitions: type: object api.SpaceMember: properties: + global_name: + example: john.any + type: string + icon: + example: data:image/png;base64, + type: string id: example: _participant_bafyreigyfkt6rbv24sbv5aq2hko1bhmv5xxlf22b4bypdu6j7hnphm3psq_23me69r569oi1_AAjEaEwPF4nkEh9AWkqEnzcQ8HziBB4ETjiTpvRCQvWnSMDZ type: string @@ -192,10 +198,10 @@ definitions: example: AAjEaEwPF4nkEh7AWkqEnzcQ8HziGB4ETjiTpvRCQvWnSMDZ type: string name: - example: Space Member Name + example: John Doe type: string role: - example: editor + example: Owner type: string type: example: space_member @@ -278,6 +284,11 @@ paths: name: code required: true type: string + - description: The challenge ID + in: query + name: challengeId + required: true + type: string produces: - application/json responses: @@ -449,7 +460,7 @@ paths: consumes: - application/json parameters: - - description: The ID of the space + - description: The Id of the space in: path name: space_id required: true diff --git a/cmd/api/handlers.go b/cmd/api/handlers.go index ed3b13a61..4ef1ee77a 100644 --- a/cmd/api/handlers.go +++ b/cmd/api/handlers.go @@ -22,12 +22,12 @@ type CreateSpaceRequest struct { type CreateObjectRequest struct { Name string `json:"name"` IconEmoji string `json:"icon_emoji"` - TemplateID string `json:"template_id"` + TemplateId string `json:"template_id"` ObjectTypeUniqueKey string `json:"object_type_unique_key"` WithChat bool `json:"with_chat"` } -// authdisplayCodeHandler generates a new challenge and returns the challenge ID +// authdisplayCodeHandler generates a new challenge and returns the challenge Id // // @Summary Open a modal window with a code in Anytype Desktop app // @Tags auth @@ -50,16 +50,16 @@ func (a *ApiServer) authDisplayCodeHandler(c *gin.Context) { // authTokenHandler retrieves an authentication token using a code and challenge ID // -// @Summary Retrieve an authentication token using a code -// @Tags auth -// @Accept json -// @Produce json -// @Param code query string true "The code retrieved from Anytype Desktop app" -// @ParamchallengeId query string true "The challenge ID" -// @Success 200 {object} map[string]string "Access and refresh tokens" -// @Failure 400 {object} ValidationError "Invalid input" -// @Failure 502 {object} ServerError "Internal server error" -// @Router /auth/token [get] +// @Summary Retrieve an authentication token using a code +// @Tags auth +// @Accept json +// @Produce json +// @Param code query string true "The code retrieved from Anytype Desktop app" +// @Param challengeId query string true "The challenge ID" +// @Success 200 {object} map[string]string "Access and refresh tokens" +// @Failure 400 {object} ValidationError "Invalid input" +// @Failure 502 {object} ServerError "Internal server error" +// @Router /auth/token [get] func (a *ApiServer) authTokenHandler(c *gin.Context) { // Call AccountLocalLinkSolveChallenge to retrieve session token and app key resp := a.mw.AccountLocalLinkSolveChallenge(context.Background(), &pb.RpcAccountLocalLinkSolveChallengeRequest{ @@ -155,20 +155,20 @@ func (a *ApiServer) getSpacesHandler(c *gin.Context) { space := Space{ Type: "space", - ID: spaceId, + Id: spaceId, Name: record.Fields["name"].GetStringValue(), Icon: iconBase64, - HomeObjectID: record.Fields["spaceDashboardId"].GetStringValue(), - ArchiveObjectID: workspaceResponse.Info.ArchiveObjectId, - ProfileObjectID: workspaceResponse.Info.ProfileObjectId, - MarketplaceWorkspaceID: workspaceResponse.Info.MarketplaceWorkspaceId, - DeviceID: workspaceResponse.Info.DeviceId, - AccountSpaceID: workspaceResponse.Info.AccountSpaceId, - WidgetsID: workspaceResponse.Info.WidgetsId, - SpaceViewID: workspaceResponse.Info.SpaceViewId, - TechSpaceID: a.accountInfo.TechSpaceId, + HomeObjectId: record.Fields["spaceDashboardId"].GetStringValue(), + ArchiveObjectId: workspaceResponse.Info.ArchiveObjectId, + ProfileObjectId: workspaceResponse.Info.ProfileObjectId, + MarketplaceWorkspaceId: workspaceResponse.Info.MarketplaceWorkspaceId, + DeviceId: workspaceResponse.Info.DeviceId, + AccountSpaceId: workspaceResponse.Info.AccountSpaceId, + WidgetsId: workspaceResponse.Info.WidgetsId, + SpaceViewId: workspaceResponse.Info.SpaceViewId, + TechSpaceId: a.accountInfo.TechSpaceId, Timezone: workspaceResponse.Info.TimeZone, - NetworkID: workspaceResponse.Info.NetworkId, + NetworkId: workspaceResponse.Info.NetworkId, } spaces = append(spaces, space) } @@ -277,7 +277,7 @@ func (a *ApiServer) getSpaceMembersHandler(c *gin.Context) { member := SpaceMember{ Type: "space_member", - ID: record.Fields["id"].GetStringValue(), + Id: record.Fields["id"].GetStringValue(), Name: record.Fields["name"].GetStringValue(), Icon: iconBase64, Identity: record.Fields["identity"].GetStringValue(), @@ -297,22 +297,22 @@ func (a *ApiServer) getSpaceMembersHandler(c *gin.Context) { // @Tags space_objects // @Accept json // @Produce json -// @Param space_id path string true "The ID of the space" -// @Param offset query int false "The number of items to skip before starting to collect the result set" -// @Param limit query int false "The number of items to return" default(100) -// @Success 200 {object} map[string][]Object "List of objects" -// @Failure 403 {object} UnauthorizedError "Unauthorized" -// @Failure 404 {object} NotFoundError "Resource not found" -// @Failure 502 {object} ServerError "Internal server error" +// @Param space_id path string true "The ID of the space" +// @Param offset query int false "The number of items to skip before starting to collect the result set" +// @Param limit query int false "The number of items to return" default(100) +// @Success 200 {object} map[string][]Object "List of objects" +// @Failure 403 {object} UnauthorizedError "Unauthorized" +// @Failure 404 {object} NotFoundError "Resource not found" +// @Failure 502 {object} ServerError "Internal server error" // @Router /spaces/{space_id}/objects [get] func (a *ApiServer) getSpaceObjectsHandler(c *gin.Context) { - spaceID := c.Param("space_id") + spaceId := c.Param("space_id") // TODO: implement offset and limit // offset, _ := strconv.Atoi(c.DefaultQuery("offset", "0")) // limit, _ := strconv.Atoi(c.DefaultQuery("limit", "100")) resp := a.mw.ObjectSearch(context.Background(), &pb.RpcObjectSearchRequest{ - SpaceId: spaceID, + SpaceId: spaceId, Filters: []*model.BlockContentDataviewFilter{ { RelationKey: bundle.RelationKeyLayout.String(), @@ -335,7 +335,7 @@ func (a *ApiServer) getSpaceObjectsHandler(c *gin.Context) { objects := make([]Object, 0, len(resp.Records)) for _, record := range resp.Records { - objectTypeName, err := a.resolveTypeToName(spaceID, record.Fields["type"].GetStringValue()) + objectTypeName, err := a.resolveTypeToName(spaceId, record.Fields["type"].GetStringValue()) if err != nil { c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to resolve object type name."}) return @@ -344,17 +344,17 @@ func (a *ApiServer) getSpaceObjectsHandler(c *gin.Context) { object := Object{ // TODO fix type inconsistency Type: model.ObjectTypeLayout_name[int32(record.Fields["layout"].GetNumberValue())], - ID: record.Fields["id"].GetStringValue(), + Id: record.Fields["id"].GetStringValue(), Name: record.Fields["name"].GetStringValue(), IconEmoji: record.Fields["iconEmoji"].GetStringValue(), ObjectType: objectTypeName, - SpaceID: spaceID, + SpaceId: spaceId, // TODO: populate other fields - // RootID: record.Fields["rootId"].GetStringValue(), + // RootId: record.Fields["rootId"].GetStringValue(), // Blocks: []Block{}, Details: []Detail{ { - ID: "lastModifiedDate", + Id: "lastModifiedDate", Details: map[string]interface{}{ "lastModifiedDate": record.Fields["lastModifiedDate"].GetNumberValue(), }, @@ -382,24 +382,24 @@ func (a *ApiServer) getSpaceObjectsHandler(c *gin.Context) { // @Failure 502 {object} ServerError "Internal server error" // @Router /spaces/{space_id}/objects/{object_id} [get] func (a *ApiServer) getObjectHandler(c *gin.Context) { - spaceID := c.Param("space_id") - objectID := c.Param("object_id") + spaceId := c.Param("space_id") + objectId := c.Param("object_id") resp := a.mw.ObjectOpen(context.Background(), &pb.RpcObjectOpenRequest{ - SpaceId: spaceID, - ObjectId: objectID, + SpaceId: spaceId, + ObjectId: objectId, }) if resp.Error.Code != pb.RpcObjectOpenResponseError_NULL { if resp.Error.Code == pb.RpcObjectOpenResponseError_NOT_FOUND { - c.JSON(http.StatusNotFound, gin.H{"message": "Object not found", "space_id": spaceID, "object_id": objectID}) + c.JSON(http.StatusNotFound, gin.H{"message": "Object not found", "space_id": spaceId, "object_id": objectId}) return } c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to retrieve object."}) return } - objectTypeName, err := a.resolveTypeToName(spaceID, resp.ObjectView.Details[0].Details.Fields["type"].GetStringValue()) + objectTypeName, err := a.resolveTypeToName(spaceId, resp.ObjectView.Details[0].Details.Fields["type"].GetStringValue()) if err != nil { c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to resolve object type name."}) return @@ -407,11 +407,11 @@ func (a *ApiServer) getObjectHandler(c *gin.Context) { object := Object{ Type: "object", - ID: objectID, + Id: objectId, Name: resp.ObjectView.Details[0].Details.Fields["name"].GetStringValue(), IconEmoji: resp.ObjectView.Details[0].Details.Fields["iconEmoji"].GetStringValue(), ObjectType: objectTypeName, - RootID: resp.ObjectView.RootId, + RootId: resp.ObjectView.RootId, // TODO: populate other fields Blocks: []Block{}, Details: []Detail{}, @@ -433,7 +433,7 @@ func (a *ApiServer) getObjectHandler(c *gin.Context) { // @Failure 502 {object} ServerError "Internal server error" // @Router /spaces/{space_id}/objects [post] func (a *ApiServer) createObjectHandler(c *gin.Context) { - spaceID := c.Param("space_id") + spaceId := c.Param("space_id") request := CreateObjectRequest{} if err := c.BindJSON(&request); err != nil { @@ -452,8 +452,8 @@ func (a *ApiServer) createObjectHandler(c *gin.Context) { InternalFlags: []*model.InternalFlag{ {Value: model.InternalFlagValue(2)}, }, - TemplateId: request.TemplateID, - SpaceId: spaceID, + TemplateId: request.TemplateId, + SpaceId: spaceId, ObjectTypeUniqueKey: request.ObjectTypeUniqueKey, WithChat: request.WithChat, }) @@ -465,13 +465,13 @@ func (a *ApiServer) createObjectHandler(c *gin.Context) { object := Object{ Type: "object", - ID: resp.ObjectId, + Id: resp.ObjectId, Name: resp.Details.Fields["name"].GetStringValue(), IconEmoji: resp.Details.Fields["iconEmoji"].GetStringValue(), ObjectType: request.ObjectTypeUniqueKey, - SpaceID: resp.Details.Fields["spaceId"].GetStringValue(), + SpaceId: resp.Details.Fields["spaceId"].GetStringValue(), // TODO populate other fields - // RootID: resp.RootId, + // RootId: resp.RootId, // Blocks: []Block{}, // Details: []Detail{}, } @@ -494,10 +494,10 @@ func (a *ApiServer) createObjectHandler(c *gin.Context) { // @Failure 502 {object} ServerError "Internal server error" // @Router /spaces/{space_id}/objects/{object_id} [put] func (a *ApiServer) updateObjectHandler(c *gin.Context) { - spaceID := c.Param("space_id") - objectID := c.Param("object_id") + spaceId := c.Param("space_id") + objectId := c.Param("object_id") // TODO: Implement logic to update an existing object - c.JSON(http.StatusNotImplemented, gin.H{"message": "Not implemented yet", "space_id": spaceID, "object_id": objectID}) + c.JSON(http.StatusNotImplemented, gin.H{"message": "Not implemented yet", "space_id": spaceId, "object_id": objectId}) } // getObjectTypesHandler retrieves object types in a specific space @@ -506,7 +506,7 @@ func (a *ApiServer) updateObjectHandler(c *gin.Context) { // @Tags types_and_templates // @Accept json // @Produce json -// @Param space_id path string true "The ID of the space" +// @Param space_id path string true "The Id of the space" // @Param offset query int false "The number of items to skip before starting to collect the result set" // @Param limit query int false "The number of items to return" default(100) // @Success 200 {object} map[string]ObjectType "List of object types" @@ -515,10 +515,10 @@ func (a *ApiServer) updateObjectHandler(c *gin.Context) { // @Failure 502 {object} ServerError "Internal server error" // @Router /spaces/{space_id}/objectTypes [get] func (a *ApiServer) getObjectTypesHandler(c *gin.Context) { - spaceID := c.Param("space_id") + spaceId := c.Param("space_id") resp := a.mw.ObjectSearch(context.Background(), &pb.RpcObjectSearchRequest{ - SpaceId: spaceID, + SpaceId: spaceId, Filters: []*model.BlockContentDataviewFilter{ { RelationKey: bundle.RelationKeyLayout.String(), @@ -548,7 +548,7 @@ func (a *ApiServer) getObjectTypesHandler(c *gin.Context) { for _, record := range resp.Records { objectTypes = append(objectTypes, ObjectType{ Type: "object_type", - ID: record.Fields["id"].GetStringValue(), + Id: record.Fields["id"].GetStringValue(), UniqueKey: record.Fields["uniqueKey"].GetStringValue(), Name: record.Fields["name"].GetStringValue(), IconEmoji: record.Fields["iconEmoji"].GetStringValue(), @@ -572,12 +572,12 @@ func (a *ApiServer) getObjectTypesHandler(c *gin.Context) { // @Failure 502 {object} ServerError "Internal server error" // @Router /spaces/{space_id}/objectTypes/{typeId}/templates [get] func (a *ApiServer) getObjectTypeTemplatesHandler(c *gin.Context) { - spaceID := c.Param("space_id") - typeID := c.Param("typeId") + spaceId := c.Param("space_id") + typeId := c.Param("typeId") // First, determine the type Id of "ot-template" in the space templateTypeIdResp := a.mw.ObjectSearch(context.Background(), &pb.RpcObjectSearchRequest{ - SpaceId: spaceID, + SpaceId: spaceId, Filters: []*model.BlockContentDataviewFilter{ { RelationKey: bundle.RelationKeyUniqueKey.String(), @@ -592,16 +592,16 @@ func (a *ApiServer) getObjectTypeTemplatesHandler(c *gin.Context) { return } - templateTypeID := templateTypeIdResp.Records[0].Fields["id"].GetStringValue() + templateTypeId := templateTypeIdResp.Records[0].Fields["id"].GetStringValue() // Then, search all objects of the template type and filter by the target object type templateObjectsResp := a.mw.ObjectSearch(context.Background(), &pb.RpcObjectSearchRequest{ - SpaceId: spaceID, + SpaceId: spaceId, Filters: []*model.BlockContentDataviewFilter{ { RelationKey: bundle.RelationKeyType.String(), Condition: model.BlockContentDataviewFilter_Equal, - Value: pbtypes.String(templateTypeID), + Value: pbtypes.String(templateTypeId), }, }, }) @@ -613,7 +613,7 @@ func (a *ApiServer) getObjectTypeTemplatesHandler(c *gin.Context) { templateIds := make([]string, 0) for _, record := range templateObjectsResp.Records { - if record.Fields["targetObjectType"].GetStringValue() == typeID { + if record.Fields["targetObjectType"].GetStringValue() == typeId { templateIds = append(templateIds, record.Fields["id"].GetStringValue()) } } @@ -622,7 +622,7 @@ func (a *ApiServer) getObjectTypeTemplatesHandler(c *gin.Context) { templates := make([]ObjectTemplate, 0, len(templateIds)) for _, templateId := range templateIds { templateResp := a.mw.ObjectOpen(context.Background(), &pb.RpcObjectOpenRequest{ - SpaceId: spaceID, + SpaceId: spaceId, ObjectId: templateId, }) @@ -633,7 +633,7 @@ func (a *ApiServer) getObjectTypeTemplatesHandler(c *gin.Context) { templates = append(templates, ObjectTemplate{ Type: "object_template", - ID: templateId, + Id: templateId, Name: templateResp.ObjectView.Details[0].Details.Fields["name"].GetStringValue(), IconEmoji: templateResp.ObjectView.Details[0].Details.Fields["iconEmoji"].GetStringValue(), }) @@ -728,8 +728,9 @@ func (a *ApiServer) getObjectsHandler(c *gin.Context) { searchResults := make([]Object, 0) for _, spaceRecord := range resp.Records { + spaceId := spaceRecord.Fields["targetSpaceId"].GetStringValue() objectSearchResponse := a.mw.ObjectSearch(context.Background(), &pb.RpcObjectSearchRequest{ - SpaceId: spaceRecord.Fields["targetSpaceId"].GetStringValue(), + SpaceId: spaceId, Filters: filters, Sorts: []*model.BlockContentDataviewSort{{ RelationKey: bundle.RelationKeyLastModifiedDate.String(), @@ -738,7 +739,7 @@ func (a *ApiServer) getObjectsHandler(c *gin.Context) { }) for _, record := range objectSearchResponse.Records { - objectTypeName, err := a.resolveTypeToName(spaceRecord.Fields["targetSpaceId"].GetStringValue(), record.Fields["type"].GetStringValue()) + objectTypeName, err := a.resolveTypeToName(spaceId, record.Fields["type"].GetStringValue()) if err != nil { c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to resolve type to name."}) return @@ -746,16 +747,17 @@ func (a *ApiServer) getObjectsHandler(c *gin.Context) { searchResults = append(searchResults, Object{ Type: model.ObjectTypeLayout_name[int32(record.Fields["layout"].GetNumberValue())], - ID: record.Fields["id"].GetStringValue(), + Id: record.Fields["id"].GetStringValue(), Name: record.Fields["name"].GetStringValue(), IconEmoji: record.Fields["iconEmoji"].GetStringValue(), ObjectType: objectTypeName, + SpaceId: spaceId, // TODO: populate other fields - // RootID: record.Fields["rootId"].GetStringValue(), + // RootId: record.Fields["rootId"].GetStringValue(), // Blocks: []Block{}, Details: []Detail{ { - ID: "lastModifiedDate", + Id: "lastModifiedDate", Details: map[string]interface{}{ "lastModifiedDate": record.Fields["lastModifiedDate"].GetNumberValue(), }, diff --git a/cmd/api/schemas.go b/cmd/api/schemas.go index bae16a96c..816a171ba 100644 --- a/cmd/api/schemas.go +++ b/cmd/api/schemas.go @@ -2,25 +2,25 @@ package api type Space struct { Type string `json:"type" example:"space"` - ID string `json:"id" example:"bafyreigyfkt6rbv24sbv5aq2hko3bhmv5xxlf22b4bypdu6j7hnphm3psq.23me69r569oi1"` + Id string `json:"id" example:"bafyreigyfkt6rbv24sbv5aq2hko3bhmv5xxlf22b4bypdu6j7hnphm3psq.23me69r569oi1"` Name string `json:"name" example:"Space Name"` Icon string `json:"icon" example:"data:image/png;base64, "` - HomeObjectID string `json:"home_object_id" example:"bafyreie4qcl3wczb4cw5hrfyycikhjyh6oljdis3ewqrk5boaav3sbwqya"` - ArchiveObjectID string `json:"archive_object_id" example:"bafyreialsgoyflf3etjm3parzurivyaukzivwortf32b4twnlwpwocsrri"` - ProfileObjectID string `json:"profile_object_id" example:"bafyreiaxhwreshjqwndpwtdsu4mtihaqhhmlygqnyqpfyfwlqfq3rm3gw4"` - MarketplaceWorkspaceID string `json:"marketplace_workspace_id" example:"_anytype_marketplace"` - DeviceID string `json:"device_id" example:"12D3KooWGZMJ4kQVyQVXaj7gJPZr3RZ2nvd9M2Eq2pprEoPih9WF"` - AccountSpaceID string `json:"account_space_id" example:"bafyreihpd2knon5wbljhtfeg3fcqtg3i2pomhhnigui6lrjmzcjzep7gcy.23me69r569oi1"` - WidgetsID string `json:"widgets_id" example:"bafyreialj7pceh53mifm5dixlho47ke4qjmsn2uh4wsjf7xq2pnlo5xfva"` - SpaceViewID string `json:"space_view_id" example:"bafyreigzv3vq7qwlrsin6njoduq727ssnhwd6bgyfj6nm4hv3pxoc2rxhy"` - TechSpaceID string `json:"tech_space_id" example:"bafyreif4xuwncrjl6jajt4zrrfnylpki476nv2w64yf42ovt7gia7oypii.23me69r569oi1"` + HomeObjectId string `json:"home_object_id" example:"bafyreie4qcl3wczb4cw5hrfyycikhjyh6oljdis3ewqrk5boaav3sbwqya"` + ArchiveObjectId string `json:"archive_object_id" example:"bafyreialsgoyflf3etjm3parzurivyaukzivwortf32b4twnlwpwocsrri"` + ProfileObjectId string `json:"profile_object_id" example:"bafyreiaxhwreshjqwndpwtdsu4mtihaqhhmlygqnyqpfyfwlqfq3rm3gw4"` + MarketplaceWorkspaceId string `json:"marketplace_workspace_id" example:"_anytype_marketplace"` + DeviceId string `json:"device_id" example:"12D3KooWGZMJ4kQVyQVXaj7gJPZr3RZ2nvd9M2Eq2pprEoPih9WF"` + AccountSpaceId string `json:"account_space_id" example:"bafyreihpd2knon5wbljhtfeg3fcqtg3i2pomhhnigui6lrjmzcjzep7gcy.23me69r569oi1"` + WidgetsId string `json:"widgets_id" example:"bafyreialj7pceh53mifm5dixlho47ke4qjmsn2uh4wsjf7xq2pnlo5xfva"` + SpaceViewId string `json:"space_view_id" example:"bafyreigzv3vq7qwlrsin6njoduq727ssnhwd6bgyfj6nm4hv3pxoc2rxhy"` + TechSpaceId string `json:"tech_space_id" example:"bafyreif4xuwncrjl6jajt4zrrfnylpki476nv2w64yf42ovt7gia7oypii.23me69r569oi1"` Timezone string `json:"timezone" example:""` - NetworkID string `json:"network_id" example:"N83gJpVd9MuNRZAuJLZ7LiMntTThhPc6DtzWWVjb1M3PouVU"` + NetworkId string `json:"network_id" example:"N83gJpVd9MuNRZAuJLZ7LiMntTThhPc6DtzWWVjb1M3PouVU"` } type SpaceMember struct { Type string `json:"type" example:"space_member"` - ID string `json:"id" example:"_participant_bafyreigyfkt6rbv24sbv5aq2hko1bhmv5xxlf22b4bypdu6j7hnphm3psq_23me69r569oi1_AAjEaEwPF4nkEh9AWkqEnzcQ8HziBB4ETjiTpvRCQvWnSMDZ"` + Id string `json:"id" example:"_participant_bafyreigyfkt6rbv24sbv5aq2hko1bhmv5xxlf22b4bypdu6j7hnphm3psq_23me69r569oi1_AAjEaEwPF4nkEh9AWkqEnzcQ8HziBB4ETjiTpvRCQvWnSMDZ"` Name string `json:"name" example:"John Doe"` Icon string `json:"icon" example:"data:image/png;base64, "` Identity string `json:"identity" example:"AAjEaEwPF4nkEh7AWkqEnzcQ8HziGB4ETjiTpvRCQvWnSMDZ"` @@ -30,19 +30,19 @@ type SpaceMember struct { type Object struct { Type string `json:"type" example:"object"` - ID string `json:"id" example:"bafyreie6n5l5nkbjal37su54cha4coy7qzuhrnajluzv5qd5jvtsrxkequ"` + Id string `json:"id" example:"bafyreie6n5l5nkbjal37su54cha4coy7qzuhrnajluzv5qd5jvtsrxkequ"` Name string `json:"name" example:"Object Name"` IconEmoji string `json:"icon_emoji" example:"📄"` ObjectType string `json:"object_type" example:"Page"` - SpaceID string `json:"space_id" example:"bafyreigyfkt6rbv24sbv5aq2hko3bhmv5xxlf22b4bypdu6j7hnphm3psq.23me69r569oi1"` - RootID string `json:"root_id"` + SpaceId string `json:"space_id" example:"bafyreigyfkt6rbv24sbv5aq2hko3bhmv5xxlf22b4bypdu6j7hnphm3psq.23me69r569oi1"` + RootId string `json:"root_id"` Blocks []Block `json:"blocks"` Details []Detail `json:"details"` } type Block struct { - ID string `json:"id"` - ChildrenIDs []string `json:"children_ids"` + Id string `json:"id"` + ChildrenIds []string `json:"children_ids"` BackgroundColor string `json:"background_color"` Align string `json:"align"` VerticalAlign string `json:"vertical_align"` @@ -71,13 +71,13 @@ type File struct { Mime string `json:"mime"` Size int `json:"size"` AddedAt int `json:"added_at"` - TargetObjectID string `json:"target_object_id"` + TargetObjectId string `json:"target_object_id"` State int `json:"state"` Style int `json:"style"` } type Detail struct { - ID string `json:"id"` + Id string `json:"id"` Details map[string]interface{} `json:"details"` } @@ -88,7 +88,7 @@ type RelationLink struct { type ObjectType struct { Type string `json:"type" example:"object_type"` - ID string `json:"id" example:"bafyreigyb6l5szohs32ts26ku2j42yd65e6hqy2u3gtzgdwqv6hzftsetu"` + Id string `json:"id" example:"bafyreigyb6l5szohs32ts26ku2j42yd65e6hqy2u3gtzgdwqv6hzftsetu"` UniqueKey string `json:"unique_key" example:"ot-page"` Name string `json:"name" example:"Page"` IconEmoji string `json:"icon_emoji" example:"📄"` @@ -96,7 +96,7 @@ type ObjectType struct { type ObjectTemplate struct { Type string `json:"type" example:"object_template"` - ID string `json:"id" example:"bafyreictrp3obmnf6dwejy5o4p7bderaaia4bdg2psxbfzf44yya5uutge"` + Id string `json:"id" example:"bafyreictrp3obmnf6dwejy5o4p7bderaaia4bdg2psxbfzf44yya5uutge"` Name string `json:"name" example:"Object Template Name"` IconEmoji string `json:"icon_emoji" example:"📄"` } From a66cdf723e8171ddef5528b5d6e030f5585a1a7c Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Wed, 27 Nov 2024 15:18:46 +0100 Subject: [PATCH 031/279] GO-4459 Enhance logging and image fetching, update handlers --- cmd/api/demo/api_demo.go | 2 +- cmd/api/handlers.go | 8 +++----- cmd/api/helper.go | 8 ++++++-- cmd/api/main.go | 1 + 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/cmd/api/demo/api_demo.go b/cmd/api/demo/api_demo.go index 5f5ee2a65..a60f73e87 100644 --- a/cmd/api/demo/api_demo.go +++ b/cmd/api/demo/api_demo.go @@ -98,7 +98,7 @@ func main() { client := &http.Client{} resp, err := client.Do(req) if err != nil { - log.Errorf("Failed to make request to %s: %v\n", ep.endpoint, err) + log.Errorf("Failed to make request to %s: %v\n", finalURL, err.Error()) continue } defer resp.Body.Close() diff --git a/cmd/api/handlers.go b/cmd/api/handlers.go index 4ef1ee77a..ae0d18aa7 100644 --- a/cmd/api/handlers.go +++ b/cmd/api/handlers.go @@ -448,10 +448,6 @@ func (a *ApiServer) createObjectHandler(c *gin.Context) { "iconEmoji": {Kind: &types.Value_StringValue{StringValue: request.IconEmoji}}, }, }, - // TODO figure out internal flags - InternalFlags: []*model.InternalFlag{ - {Value: model.InternalFlagValue(2)}, - }, TemplateId: request.TemplateId, SpaceId: spaceId, ObjectTypeUniqueKey: request.ObjectTypeUniqueKey, @@ -506,7 +502,7 @@ func (a *ApiServer) updateObjectHandler(c *gin.Context) { // @Tags types_and_templates // @Accept json // @Produce json -// @Param space_id path string true "The Id of the space" +// @Param space_id path string true "The ID of the space" // @Param offset query int false "The number of items to skip before starting to collect the result set" // @Param limit query int false "The number of items to return" default(100) // @Success 200 {object} map[string]ObjectType "List of object types" @@ -691,6 +687,8 @@ func (a *ApiServer) getObjectsHandler(c *gin.Context) { Condition: model.BlockContentDataviewFilter_In, Value: pbtypes.IntList([]int{ int(model.ObjectType_basic), + int(model.ObjectType_profile), + int(model.ObjectType_todo), int(model.ObjectType_note), int(model.ObjectType_bookmark), int(model.ObjectType_set), diff --git a/cmd/api/helper.go b/cmd/api/helper.go index a7db660bc..a91ebfef7 100644 --- a/cmd/api/helper.go +++ b/cmd/api/helper.go @@ -74,9 +74,13 @@ func validateURL(url string) string { } func (a *ApiServer) imageToBase64(imagePath string) (string, error) { - resp, err := http.Get(validateURL(imagePath)) + client := &http.Client{ + Timeout: httpTimeout, + } + resp, err := client.Get(validateURL(imagePath)) if err != nil { - return "", err + // don't return error if image is not found + return "", nil } defer resp.Body.Close() diff --git a/cmd/api/main.go b/cmd/api/main.go index ffe6b121c..449e15ca2 100644 --- a/cmd/api/main.go +++ b/cmd/api/main.go @@ -19,6 +19,7 @@ import ( const ( httpPort = ":31009" + httpTimeout = 1 * time.Second serverShutdownTime = 5 * time.Second ) From 012e82d04c063b2cb470028e0255c58b68d7d73f Mon Sep 17 00:00:00 2001 From: AnastasiaShemyakinskaya Date: Wed, 27 Nov 2024 16:04:19 +0100 Subject: [PATCH 032/279] GO-4406: fix comments Signed-off-by: AnastasiaShemyakinskaya --- core/block/editor/state/state.go | 2 +- core/block/object/objectcreator/creator.go | 6 ++++++ core/block/object/objectcreator/object_type.go | 4 +--- core/block/object/objectcreator/relation.go | 4 +--- core/block/object/objectcreator/relation_option.go | 4 +--- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/core/block/editor/state/state.go b/core/block/editor/state/state.go index 4e04fdfea..3cd247d65 100644 --- a/core/block/editor/state/state.go +++ b/core/block/editor/state/state.go @@ -133,7 +133,7 @@ type State struct { groupId string noObjectType bool - originalCreatedTimestamp int64 // pass here from snapshots when importing objects + originalCreatedTimestamp int64 // pass here from snapshots when importing objects or used for derived objects such as relations, types and etc } func (s *State) MigrationVersion() uint32 { diff --git a/core/block/object/objectcreator/creator.go b/core/block/object/objectcreator/creator.go index 765442306..44f400457 100644 --- a/core/block/object/objectcreator/creator.go +++ b/core/block/object/objectcreator/creator.go @@ -210,3 +210,9 @@ func buildDateObject(space clientspace.Space, details *types.Struct) (string, *t details, err = detailsGetter.DetailsFromId() return id, details, err } + +func setOriginalCreatedTimestamp(state *state.State, details *types.Struct) { + if createDate := pbtypes.GetInt64(details, bundle.RelationKeyCreatedDate.String()); createDate != 0 { + state.SetOriginalCreatedTimestamp(createDate) + } +} diff --git a/core/block/object/objectcreator/object_type.go b/core/block/object/objectcreator/object_type.go index f93767d96..30e6af2bc 100644 --- a/core/block/object/objectcreator/object_type.go +++ b/core/block/object/objectcreator/object_type.go @@ -43,9 +43,7 @@ func (s *service) createObjectType(ctx context.Context, space clientspace.Space, createState := state.NewDocWithUniqueKey("", nil, uniqueKey).(*state.State) createState.SetDetails(object) - if createDate := pbtypes.GetInt64(details, bundle.RelationKeyCreatedDate.String()); createDate != 0 { - createState.SetOriginalCreatedTimestamp(createDate) - } + setOriginalCreatedTimestamp(createState, details) id, newDetails, err = s.CreateSmartBlockFromStateInSpace(ctx, space, []domain.TypeKey{bundle.TypeKeyObjectType}, createState) if err != nil { return "", nil, fmt.Errorf("create smartblock from state: %w", err) diff --git a/core/block/object/objectcreator/relation.go b/core/block/object/objectcreator/relation.go index b74ebe7bd..d1936e0c5 100644 --- a/core/block/object/objectcreator/relation.go +++ b/core/block/object/objectcreator/relation.go @@ -58,8 +58,6 @@ func (s *service) createRelation(ctx context.Context, space clientspace.Space, d createState := state.NewDocWithUniqueKey("", nil, uniqueKey).(*state.State) createState.SetDetails(object) - if createDate := pbtypes.GetInt64(details, bundle.RelationKeyCreatedDate.String()); createDate != 0 { - createState.SetOriginalCreatedTimestamp(createDate) - } + setOriginalCreatedTimestamp(createState, details) return s.CreateSmartBlockFromStateInSpace(ctx, space, []domain.TypeKey{bundle.TypeKeyRelation}, createState) } diff --git a/core/block/object/objectcreator/relation_option.go b/core/block/object/objectcreator/relation_option.go index e4a3c6737..6f312a990 100644 --- a/core/block/object/objectcreator/relation_option.go +++ b/core/block/object/objectcreator/relation_option.go @@ -40,9 +40,7 @@ func (s *service) createRelationOption(ctx context.Context, space clientspace.Sp createState := state.NewDocWithUniqueKey("", nil, uniqueKey).(*state.State) createState.SetDetails(object) - if createDate := pbtypes.GetInt64(details, bundle.RelationKeyCreatedDate.String()); createDate != 0 { - createState.SetOriginalCreatedTimestamp(createDate) - } + setOriginalCreatedTimestamp(createState, details) return s.CreateSmartBlockFromStateInSpace(ctx, space, []domain.TypeKey{bundle.TypeKeyRelationOption}, createState) } From e9dc778e45be2ad5f909e6362c4ab17e02ce6207 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Wed, 27 Nov 2024 23:33:25 +0100 Subject: [PATCH 033/279] GO-4459 Add chat endpoints and message schemas --- cmd/api/demo/api_demo.go | 15 +- cmd/api/docs/docs.go | 367 +++++++++++++++++++++++++++++++++++++- cmd/api/docs/swagger.json | 367 +++++++++++++++++++++++++++++++++++++- cmd/api/docs/swagger.yaml | 244 ++++++++++++++++++++++++- cmd/api/handlers.go | 210 +++++++++++++++++++--- cmd/api/helper.go | 57 +++++- cmd/api/main.go | 13 +- cmd/api/schemas.go | 33 ++++ 8 files changed, 1270 insertions(+), 36 deletions(-) diff --git a/cmd/api/demo/api_demo.go b/cmd/api/demo/api_demo.go index a60f73e87..f413f82e8 100644 --- a/cmd/api/demo/api_demo.go +++ b/cmd/api/demo/api_demo.go @@ -17,6 +17,8 @@ const ( testSpaceId = "bafyreifymx5ucm3fdc7vupfg7wakdo5qelni3jvlmawlnvjcppurn2b3di.2lcu0r85yg10d" // dev (entry space) testObjectId = "bafyreidhtlbbspxecab6xf4pi5zyxcmvwy6lqzursbjouq5fxovh6y3xwu" // "Work Faster with Templates" testTypeId = "bafyreie3djy4mcldt3hgeet6bnjay2iajdyi2fvx556n6wcxii7brlni3i" // Page (in dev space) + // chatSpaceId = "bafyreigryvrmerbtfswwz5kav2uq5dlvx3hl45kxn4nflg7lz46lneqs7m.2nvj2qik6ctdy" // Anytype Wiki space + chatSpaceId = "bafyreiexhpzaf7uxzheubh7cjeusqukjnxfvvhh4at6bygljwvto2dttnm.2lcu0r85yg10d" // chat space ) var log = logging.Logger("rest-api") @@ -57,7 +59,7 @@ func main() { // space_objects // {"GET", "/spaces/{space_id}/objects", map[string]interface{}{"space_id": testSpaceId, "limit": 100, "offset": 0}, nil}, // {"GET", "/spaces/{space_id}/objects/{object_id}", map[string]interface{}{"space_id": testSpaceId, "object_id": testObjectId}, nil}, - {"POST", "/spaces/{space_id}/objects", map[string]interface{}{"space_id": testSpaceId}, map[string]interface{}{"name": "New Object from demo", "icon_emoji": "💥", "template_id": "", "object_type_unique_key": "ot-page", "with_chat": false}}, + // {"POST", "/spaces/{space_id}/objects", map[string]interface{}{"space_id": testSpaceId}, map[string]interface{}{"name": "New Object from demo", "icon_emoji": "💥", "template_id": "", "object_type_unique_key": "ot-page", "with_chat": false}}, // {"PUT", "/spaces/{space_id}/objects/{object_id}", map[string]interface{}{"space_id": testSpaceId, "object_id": testObjectId}, map[string]interface{}{"name": "Updated Object"}}, // types_and_templates @@ -66,6 +68,10 @@ func main() { // search // {"GET", "/objects?search={search}&object_type={object_type}&limit={limit}&offset={offset}", map[string]interface{}{"search": "writing", "object_type": testTypeId, "limit": 100, "offset": 0}, nil}, + + // chat + // {"GET", "/spaces/{space_id}/chat/messages?limit={limit}&offset={offset}", map[string]interface{}{"space_id": chatSpaceId, "limit": 100, "offset": 0}, nil}, + // {"POST", "/spaces/{space_id}/chat/messages", map[string]interface{}{"space_id": chatSpaceId}, map[string]interface{}{"text": "new message from demo"}}, } for _, ep := range endpoints { @@ -105,7 +111,12 @@ func main() { // Check the status code if resp.StatusCode != http.StatusOK { - log.Errorf("Request to %s returned status code %d\n", ep.endpoint, resp.StatusCode) + body, err := io.ReadAll(resp.Body) + if err != nil { + log.Errorf("Failes to read response body for request to %s with code %d.", finalURL, resp.StatusCode) + continue + } + log.Errorf("Request to %s returned status code %d: %v\n", finalURL, resp.StatusCode, string(body)) continue } diff --git a/cmd/api/docs/docs.go b/cmd/api/docs/docs.go index 028200fdf..cd5d79547 100644 --- a/cmd/api/docs/docs.go +++ b/cmd/api/docs/docs.go @@ -340,7 +340,7 @@ const docTemplate = `{ "parameters": [ { "type": "string", - "description": "The Id of the space", + "description": "The ID of the space", "name": "space_id", "in": "path", "required": true @@ -691,9 +691,273 @@ const docTemplate = `{ } } } + }, + "/v1/spaces/{space_id}/chat/messages": { + "get": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "chat" + ], + "summary": "Retrieve last chat messages", + "parameters": [ + { + "type": "string", + "description": "The ID of the space", + "name": "space_id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "List of chat messages", + "schema": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "$ref": "#/definitions/api.ChatMessage" + } + } + } + }, + "502": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/api.ServerError" + } + } + } + }, + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "chat" + ], + "summary": "Add a new chat message", + "parameters": [ + { + "type": "string", + "description": "The ID of the space", + "name": "space_id", + "in": "path", + "required": true + }, + { + "description": "Chat message", + "name": "message", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/api.ChatMessage" + } + } + ], + "responses": { + "201": { + "description": "Created chat message", + "schema": { + "$ref": "#/definitions/api.ChatMessage" + } + }, + "400": { + "description": "Invalid input", + "schema": { + "$ref": "#/definitions/api.ValidationError" + } + }, + "502": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/api.ServerError" + } + } + } + } + }, + "/v1/spaces/{space_id}/chat/messages/{message_id}": { + "get": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "chat" + ], + "summary": "Retrieve a specific chat message", + "parameters": [ + { + "type": "string", + "description": "The ID of the space", + "name": "space_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Message ID", + "name": "message_id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "Chat message", + "schema": { + "$ref": "#/definitions/api.ChatMessage" + } + }, + "404": { + "description": "Message not found", + "schema": { + "$ref": "#/definitions/api.NotFoundError" + } + }, + "502": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/api.ServerError" + } + } + } + }, + "put": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "chat" + ], + "summary": "Update an existing chat message", + "parameters": [ + { + "type": "string", + "description": "The ID of the space", + "name": "space_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Message ID", + "name": "message_id", + "in": "path", + "required": true + }, + { + "description": "Chat message", + "name": "message", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/api.ChatMessage" + } + } + ], + "responses": { + "200": { + "description": "Updated chat message", + "schema": { + "$ref": "#/definitions/api.ChatMessage" + } + }, + "400": { + "description": "Invalid input", + "schema": { + "$ref": "#/definitions/api.ValidationError" + } + }, + "404": { + "description": "Message not found", + "schema": { + "$ref": "#/definitions/api.NotFoundError" + } + }, + "502": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/api.ServerError" + } + } + } + }, + "delete": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "chat" + ], + "summary": "Delete a chat message", + "parameters": [ + { + "type": "string", + "description": "The ID of the space", + "name": "space_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Message ID", + "name": "message_id", + "in": "path", + "required": true + } + ], + "responses": { + "204": { + "description": "Message deleted successfully" + }, + "404": { + "description": "Message not found", + "schema": { + "$ref": "#/definitions/api.NotFoundError" + } + }, + "502": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/api.ServerError" + } + } + } + } } }, "definitions": { + "api.Attachment": { + "type": "object", + "properties": { + "target": { + "description": "Identifier for the attachment object", + "type": "string" + }, + "type": { + "description": "Type of attachment", + "type": "string" + } + } + }, "api.Block": { "type": "object", "properties": { @@ -726,6 +990,59 @@ const docTemplate = `{ } } }, + "api.ChatMessage": { + "type": "object", + "properties": { + "attachments": { + "description": "Attachments slice", + "type": "array", + "items": { + "$ref": "#/definitions/api.Attachment" + } + }, + "chat_message": { + "type": "string" + }, + "created_at": { + "type": "integer" + }, + "creator": { + "description": "Identifier for the message creator", + "type": "string" + }, + "id": { + "description": "Unique message identifier", + "type": "string" + }, + "message": { + "description": "Message content", + "allOf": [ + { + "$ref": "#/definitions/api.MessageContent" + } + ] + }, + "modified_at": { + "type": "integer" + }, + "order_id": { + "description": "Used for subscriptions", + "type": "string" + }, + "reactions": { + "description": "Reactions to the message", + "allOf": [ + { + "$ref": "#/definitions/api.Reactions" + } + ] + }, + "reply_to_message_id": { + "description": "Identifier for the message being replied to", + "type": "string" + } + } + }, "api.Detail": { "type": "object", "properties": { @@ -770,6 +1087,18 @@ const docTemplate = `{ } } }, + "api.IdentityList": { + "type": "object", + "properties": { + "ids": { + "description": "List of user IDs", + "type": "array", + "items": { + "type": "string" + } + } + } + }, "api.Layout": { "type": "object", "properties": { @@ -778,6 +1107,26 @@ const docTemplate = `{ } } }, + "api.MessageContent": { + "type": "object", + "properties": { + "marks": { + "description": "List of marks applied to the text", + "type": "array", + "items": { + "type": "string" + } + }, + "style": { + "description": "The style/type of the message part", + "type": "string" + }, + "text": { + "description": "The text content of the message part", + "type": "string" + } + } + }, "api.NotFoundError": { "type": "object", "properties": { @@ -881,6 +1230,18 @@ const docTemplate = `{ } } }, + "api.Reactions": { + "type": "object", + "properties": { + "reactions": { + "description": "Map of emoji to list of user IDs", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/api.IdentityList" + } + } + } + }, "api.ServerError": { "type": "object", "properties": { @@ -956,6 +1317,10 @@ const docTemplate = `{ "widgets_id": { "type": "string", "example": "bafyreialj7pceh53mifm5dixlho47ke4qjmsn2uh4wsjf7xq2pnlo5xfva" + }, + "workspace_object_id": { + "type": "string", + "example": "bafyreiapey2g6e6za4zfxvlgwdy4hbbfu676gmwrhnqvjbxvrchr7elr3y" } } }, diff --git a/cmd/api/docs/swagger.json b/cmd/api/docs/swagger.json index f9ec01e0b..fb0a5f041 100644 --- a/cmd/api/docs/swagger.json +++ b/cmd/api/docs/swagger.json @@ -334,7 +334,7 @@ "parameters": [ { "type": "string", - "description": "The Id of the space", + "description": "The ID of the space", "name": "space_id", "in": "path", "required": true @@ -685,9 +685,273 @@ } } } + }, + "/v1/spaces/{space_id}/chat/messages": { + "get": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "chat" + ], + "summary": "Retrieve last chat messages", + "parameters": [ + { + "type": "string", + "description": "The ID of the space", + "name": "space_id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "List of chat messages", + "schema": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "$ref": "#/definitions/api.ChatMessage" + } + } + } + }, + "502": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/api.ServerError" + } + } + } + }, + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "chat" + ], + "summary": "Add a new chat message", + "parameters": [ + { + "type": "string", + "description": "The ID of the space", + "name": "space_id", + "in": "path", + "required": true + }, + { + "description": "Chat message", + "name": "message", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/api.ChatMessage" + } + } + ], + "responses": { + "201": { + "description": "Created chat message", + "schema": { + "$ref": "#/definitions/api.ChatMessage" + } + }, + "400": { + "description": "Invalid input", + "schema": { + "$ref": "#/definitions/api.ValidationError" + } + }, + "502": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/api.ServerError" + } + } + } + } + }, + "/v1/spaces/{space_id}/chat/messages/{message_id}": { + "get": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "chat" + ], + "summary": "Retrieve a specific chat message", + "parameters": [ + { + "type": "string", + "description": "The ID of the space", + "name": "space_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Message ID", + "name": "message_id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "Chat message", + "schema": { + "$ref": "#/definitions/api.ChatMessage" + } + }, + "404": { + "description": "Message not found", + "schema": { + "$ref": "#/definitions/api.NotFoundError" + } + }, + "502": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/api.ServerError" + } + } + } + }, + "put": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "chat" + ], + "summary": "Update an existing chat message", + "parameters": [ + { + "type": "string", + "description": "The ID of the space", + "name": "space_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Message ID", + "name": "message_id", + "in": "path", + "required": true + }, + { + "description": "Chat message", + "name": "message", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/api.ChatMessage" + } + } + ], + "responses": { + "200": { + "description": "Updated chat message", + "schema": { + "$ref": "#/definitions/api.ChatMessage" + } + }, + "400": { + "description": "Invalid input", + "schema": { + "$ref": "#/definitions/api.ValidationError" + } + }, + "404": { + "description": "Message not found", + "schema": { + "$ref": "#/definitions/api.NotFoundError" + } + }, + "502": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/api.ServerError" + } + } + } + }, + "delete": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "chat" + ], + "summary": "Delete a chat message", + "parameters": [ + { + "type": "string", + "description": "The ID of the space", + "name": "space_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Message ID", + "name": "message_id", + "in": "path", + "required": true + } + ], + "responses": { + "204": { + "description": "Message deleted successfully" + }, + "404": { + "description": "Message not found", + "schema": { + "$ref": "#/definitions/api.NotFoundError" + } + }, + "502": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/api.ServerError" + } + } + } + } } }, "definitions": { + "api.Attachment": { + "type": "object", + "properties": { + "target": { + "description": "Identifier for the attachment object", + "type": "string" + }, + "type": { + "description": "Type of attachment", + "type": "string" + } + } + }, "api.Block": { "type": "object", "properties": { @@ -720,6 +984,59 @@ } } }, + "api.ChatMessage": { + "type": "object", + "properties": { + "attachments": { + "description": "Attachments slice", + "type": "array", + "items": { + "$ref": "#/definitions/api.Attachment" + } + }, + "chat_message": { + "type": "string" + }, + "created_at": { + "type": "integer" + }, + "creator": { + "description": "Identifier for the message creator", + "type": "string" + }, + "id": { + "description": "Unique message identifier", + "type": "string" + }, + "message": { + "description": "Message content", + "allOf": [ + { + "$ref": "#/definitions/api.MessageContent" + } + ] + }, + "modified_at": { + "type": "integer" + }, + "order_id": { + "description": "Used for subscriptions", + "type": "string" + }, + "reactions": { + "description": "Reactions to the message", + "allOf": [ + { + "$ref": "#/definitions/api.Reactions" + } + ] + }, + "reply_to_message_id": { + "description": "Identifier for the message being replied to", + "type": "string" + } + } + }, "api.Detail": { "type": "object", "properties": { @@ -764,6 +1081,18 @@ } } }, + "api.IdentityList": { + "type": "object", + "properties": { + "ids": { + "description": "List of user IDs", + "type": "array", + "items": { + "type": "string" + } + } + } + }, "api.Layout": { "type": "object", "properties": { @@ -772,6 +1101,26 @@ } } }, + "api.MessageContent": { + "type": "object", + "properties": { + "marks": { + "description": "List of marks applied to the text", + "type": "array", + "items": { + "type": "string" + } + }, + "style": { + "description": "The style/type of the message part", + "type": "string" + }, + "text": { + "description": "The text content of the message part", + "type": "string" + } + } + }, "api.NotFoundError": { "type": "object", "properties": { @@ -875,6 +1224,18 @@ } } }, + "api.Reactions": { + "type": "object", + "properties": { + "reactions": { + "description": "Map of emoji to list of user IDs", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/api.IdentityList" + } + } + } + }, "api.ServerError": { "type": "object", "properties": { @@ -950,6 +1311,10 @@ "widgets_id": { "type": "string", "example": "bafyreialj7pceh53mifm5dixlho47ke4qjmsn2uh4wsjf7xq2pnlo5xfva" + }, + "workspace_object_id": { + "type": "string", + "example": "bafyreiapey2g6e6za4zfxvlgwdy4hbbfu676gmwrhnqvjbxvrchr7elr3y" } } }, diff --git a/cmd/api/docs/swagger.yaml b/cmd/api/docs/swagger.yaml index 636a6a2c3..44f40e8ee 100644 --- a/cmd/api/docs/swagger.yaml +++ b/cmd/api/docs/swagger.yaml @@ -1,5 +1,14 @@ basePath: /v1 definitions: + api.Attachment: + properties: + target: + description: Identifier for the attachment object + type: string + type: + description: Type of attachment + type: string + type: object api.Block: properties: align: @@ -21,6 +30,40 @@ definitions: vertical_align: type: string type: object + api.ChatMessage: + properties: + attachments: + description: Attachments slice + items: + $ref: '#/definitions/api.Attachment' + type: array + chat_message: + type: string + created_at: + type: integer + creator: + description: Identifier for the message creator + type: string + id: + description: Unique message identifier + type: string + message: + allOf: + - $ref: '#/definitions/api.MessageContent' + description: Message content + modified_at: + type: integer + order_id: + description: Used for subscriptions + type: string + reactions: + allOf: + - $ref: '#/definitions/api.Reactions' + description: Reactions to the message + reply_to_message_id: + description: Identifier for the message being replied to + type: string + type: object api.Detail: properties: details: @@ -50,11 +93,33 @@ definitions: type: type: string type: object + api.IdentityList: + properties: + ids: + description: List of user IDs + items: + type: string + type: array + type: object api.Layout: properties: style: type: string type: object + api.MessageContent: + properties: + marks: + description: List of marks applied to the text + items: + type: string + type: array + style: + description: The style/type of the message part + type: string + text: + description: The text content of the message part + type: string + type: object api.NotFoundError: properties: error: @@ -127,6 +192,14 @@ definitions: example: ot-page type: string type: object + api.Reactions: + properties: + reactions: + additionalProperties: + $ref: '#/definitions/api.IdentityList' + description: Map of emoji to list of user IDs + type: object + type: object api.ServerError: properties: error: @@ -182,6 +255,9 @@ definitions: widgets_id: example: bafyreialj7pceh53mifm5dixlho47ke4qjmsn2uh4wsjf7xq2pnlo5xfva type: string + workspace_object_id: + example: bafyreiapey2g6e6za4zfxvlgwdy4hbbfu676gmwrhnqvjbxvrchr7elr3y + type: string type: object api.SpaceMember: properties: @@ -460,7 +536,7 @@ paths: consumes: - application/json parameters: - - description: The Id of the space + - description: The ID of the space in: path name: space_id required: true @@ -700,6 +776,172 @@ paths: summary: Update an existing object in a specific space tags: - space_objects + /v1/spaces/{space_id}/chat/messages: + get: + consumes: + - application/json + parameters: + - description: The ID of the space + in: path + name: space_id + required: true + type: string + produces: + - application/json + responses: + "200": + description: List of chat messages + schema: + additionalProperties: + items: + $ref: '#/definitions/api.ChatMessage' + type: array + type: object + "502": + description: Internal server error + schema: + $ref: '#/definitions/api.ServerError' + summary: Retrieve last chat messages + tags: + - chat + post: + consumes: + - application/json + parameters: + - description: The ID of the space + in: path + name: space_id + required: true + type: string + - description: Chat message + in: body + name: message + required: true + schema: + $ref: '#/definitions/api.ChatMessage' + produces: + - application/json + responses: + "201": + description: Created chat message + schema: + $ref: '#/definitions/api.ChatMessage' + "400": + description: Invalid input + schema: + $ref: '#/definitions/api.ValidationError' + "502": + description: Internal server error + schema: + $ref: '#/definitions/api.ServerError' + summary: Add a new chat message + tags: + - chat + /v1/spaces/{space_id}/chat/messages/{message_id}: + delete: + consumes: + - application/json + parameters: + - description: The ID of the space + in: path + name: space_id + required: true + type: string + - description: Message ID + in: path + name: message_id + required: true + type: string + produces: + - application/json + responses: + "204": + description: Message deleted successfully + "404": + description: Message not found + schema: + $ref: '#/definitions/api.NotFoundError' + "502": + description: Internal server error + schema: + $ref: '#/definitions/api.ServerError' + summary: Delete a chat message + tags: + - chat + get: + consumes: + - application/json + parameters: + - description: The ID of the space + in: path + name: space_id + required: true + type: string + - description: Message ID + in: path + name: message_id + required: true + type: string + produces: + - application/json + responses: + "200": + description: Chat message + schema: + $ref: '#/definitions/api.ChatMessage' + "404": + description: Message not found + schema: + $ref: '#/definitions/api.NotFoundError' + "502": + description: Internal server error + schema: + $ref: '#/definitions/api.ServerError' + summary: Retrieve a specific chat message + tags: + - chat + put: + consumes: + - application/json + parameters: + - description: The ID of the space + in: path + name: space_id + required: true + type: string + - description: Message ID + in: path + name: message_id + required: true + type: string + - description: Chat message + in: body + name: message + required: true + schema: + $ref: '#/definitions/api.ChatMessage' + produces: + - application/json + responses: + "200": + description: Updated chat message + schema: + $ref: '#/definitions/api.ChatMessage' + "400": + description: Invalid input + schema: + $ref: '#/definitions/api.ValidationError' + "404": + description: Message not found + schema: + $ref: '#/definitions/api.NotFoundError' + "502": + description: Internal server error + schema: + $ref: '#/definitions/api.ServerError' + summary: Update an existing chat message + tags: + - chat securityDefinitions: BasicAuth: type: basic diff --git a/cmd/api/handlers.go b/cmd/api/handlers.go index ae0d18aa7..837d1c0f6 100644 --- a/cmd/api/handlers.go +++ b/cmd/api/handlers.go @@ -5,6 +5,7 @@ import ( "crypto/rand" "math/big" "net/http" + "time" "github.com/gin-gonic/gin" "github.com/gogo/protobuf/types" @@ -15,6 +16,11 @@ import ( "github.com/anyproto/anytype-heart/util/pbtypes" ) +const ( + httpTimeout = 1 * time.Second + paginationLimit = 100 +) + type CreateSpaceRequest struct { Name string `json:"name"` } @@ -27,6 +33,11 @@ type CreateObjectRequest struct { WithChat bool `json:"with_chat"` } +type AddMessageRequest struct { + Text string `json:"text"` + Style string `json:"style"` +} + // authdisplayCodeHandler generates a new challenge and returns the challenge Id // // @Summary Open a modal window with a code in Anytype Desktop app @@ -121,15 +132,7 @@ func (a *ApiServer) getSpacesHandler(c *gin.Context) { spaces := make([]Space, 0, len(resp.Records)) for _, record := range resp.Records { spaceId := record.Fields["targetSpaceId"].GetStringValue() - workspaceResponse := a.mw.WorkspaceOpen(context.Background(), &pb.RpcWorkspaceOpenRequest{ - SpaceId: spaceId, - WithChat: true, - }) - - if workspaceResponse.Error.Code != pb.RpcWorkspaceOpenResponseError_NULL { - c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to open workspace."}) - return - } + workspace := a.getWorkspaceInfo(c, spaceId) // TODO cleanup image logic // Convert space image or option to base64 string @@ -153,24 +156,9 @@ func (a *ApiServer) getSpacesHandler(c *gin.Context) { } } - space := Space{ - Type: "space", - Id: spaceId, - Name: record.Fields["name"].GetStringValue(), - Icon: iconBase64, - HomeObjectId: record.Fields["spaceDashboardId"].GetStringValue(), - ArchiveObjectId: workspaceResponse.Info.ArchiveObjectId, - ProfileObjectId: workspaceResponse.Info.ProfileObjectId, - MarketplaceWorkspaceId: workspaceResponse.Info.MarketplaceWorkspaceId, - DeviceId: workspaceResponse.Info.DeviceId, - AccountSpaceId: workspaceResponse.Info.AccountSpaceId, - WidgetsId: workspaceResponse.Info.WidgetsId, - SpaceViewId: workspaceResponse.Info.SpaceViewId, - TechSpaceId: a.accountInfo.TechSpaceId, - Timezone: workspaceResponse.Info.TimeZone, - NetworkId: workspaceResponse.Info.NetworkId, - } - spaces = append(spaces, space) + workspace.Name = record.Fields["name"].GetStringValue() + workspace.Icon = iconBase64 + spaces = append(spaces, workspace) } c.JSON(http.StatusOK, gin.H{"spaces": spaces}) @@ -767,3 +755,171 @@ func (a *ApiServer) getObjectsHandler(c *gin.Context) { c.JSON(http.StatusOK, gin.H{"objects": searchResults}) } + +// getChatMessagesHandler retrieves last chat messages +// +// @Summary Retrieve last chat messages +// @Tags chat +// @Accept json +// @Produce json +// @Param space_id path string true "The ID of the space" +// @Success 200 {object} map[string][]ChatMessage "List of chat messages" +// @Failure 502 {object} ServerError "Internal server error" +// @Router /v1/spaces/{space_id}/chat/messages [get] +func (a *ApiServer) getChatMessagesHandler(c *gin.Context) { + spaceId := c.Param("space_id") + chatId := a.getChatIdForSpace(c, spaceId) + + lastMessages := a.mw.ChatSubscribeLastMessages(context.Background(), &pb.RpcChatSubscribeLastMessagesRequest{ + ChatObjectId: chatId, + Limit: paginationLimit, + }) + + if lastMessages.Error.Code != pb.RpcChatSubscribeLastMessagesResponseError_NULL { + c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to retrieve last messages."}) + } + + messages := make([]ChatMessage, 0, len(lastMessages.Messages)) + for _, message := range lastMessages.Messages { + + attachments := make([]Attachment, 0, len(message.Attachments)) + for _, attachment := range message.Attachments { + target := attachment.Target + if attachment.Type != model.ChatMessageAttachment_LINK { + target = a.getGatewayURL(attachment.Target) + } + attachments = append(attachments, Attachment{ + Target: target, + Type: model.ChatMessageAttachmentAttachmentType_name[int32(attachment.Type)], + }) + } + + messages = append(messages, ChatMessage{ + Type: "chat_message", + Id: message.Id, + Creator: message.Creator, + CreatedAt: message.CreatedAt, + ReplyToMessageId: message.ReplyToMessageId, + Message: MessageContent{ + Text: message.Message.Text, + // TODO: params + // Style: nil, + // Marks: nil, + }, + Attachments: attachments, + Reactions: Reactions{ + ReactionsMap: func() map[string]IdentityList { + reactionsMap := make(map[string]IdentityList) + for emoji, ids := range message.Reactions.Reactions { + reactionsMap[emoji] = IdentityList{Ids: ids.Ids} + } + return reactionsMap + }(), + }, + }) + } + + c.JSON(http.StatusOK, gin.H{"messages": messages}) +} + +// getChatMessageHandler retrieves a specific chat message by message_id +// +// @Summary Retrieve a specific chat message +// @Tags chat +// @Accept json +// @Produce json +// @Param space_id path string true "The ID of the space" +// @Param message_id path string true "Message ID" +// @Success 200 {object} ChatMessage "Chat message" +// @Failure 404 {object} NotFoundError "Message not found" +// @Failure 502 {object} ServerError "Internal server error" +// @Router /v1/spaces/{space_id}/chat/messages/{message_id} [get] +func (a *ApiServer) getChatMessageHandler(c *gin.Context) { + // TODO: Implement logic to retrieve a specific chat message by message_id + + c.JSON(http.StatusNotImplemented, gin.H{"message": "Not implemented yet"}) +} + +// addChatMessageHandler adds a new chat message to chat +// +// @Summary Add a new chat message +// @Tags chat +// @Accept json +// @Produce json +// @Param space_id path string true "The ID of the space" +// @Param message body ChatMessage true "Chat message" +// @Success 201 {object} ChatMessage "Created chat message" +// @Failure 400 {object} ValidationError "Invalid input" +// @Failure 502 {object} ServerError "Internal server error" +// @Router /v1/spaces/{space_id}/chat/messages [post] +func (a *ApiServer) addChatMessageHandler(c *gin.Context) { + spaceId := c.Param("space_id") + + request := AddMessageRequest{} + if err := c.BindJSON(&request); err != nil { + c.JSON(http.StatusBadRequest, gin.H{"message": "Invalid JSON"}) + return + } + + chatId := a.getChatIdForSpace(c, spaceId) + resp := a.mw.ChatAddMessage(context.Background(), &pb.RpcChatAddMessageRequest{ + ChatObjectId: chatId, + Message: &model.ChatMessage{ + Id: "", + OrderId: "", + Creator: "", + CreatedAt: 0, + ModifiedAt: 0, + ReplyToMessageId: "", + Message: &model.ChatMessageMessageContent{ + Text: request.Text, + // TODO: param + // Style: request.Style, + }, + }, + }) + + if resp.Error.Code != pb.RpcChatAddMessageResponseError_NULL { + c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to create message."}) + } + + c.JSON(http.StatusOK, gin.H{"messageId": resp.MessageId}) +} + +// updateChatMessageHandler updates an existing chat message by message_id +// +// @Summary Update an existing chat message +// @Tags chat +// @Accept json +// @Produce json +// @Param space_id path string true "The ID of the space" +// @Param message_id path string true "Message ID" +// @Param message body ChatMessage true "Chat message" +// @Success 200 {object} ChatMessage "Updated chat message" +// @Failure 400 {object} ValidationError "Invalid input" +// @Failure 404 {object} NotFoundError "Message not found" +// @Failure 502 {object} ServerError "Internal server error" +// @Router /v1/spaces/{space_id}/chat/messages/{message_id} [put] +func (a *ApiServer) updateChatMessageHandler(c *gin.Context) { + // TODO: Implement logic to update an existing chat message by message_id + + c.JSON(http.StatusNotImplemented, gin.H{"message": "Not implemented yet"}) +} + +// deleteChatMessageHandler deletes a chat message by message_id +// +// @Summary Delete a chat message +// @Tags chat +// @Accept json +// @Produce json +// @Param space_id path string true "The ID of the space" +// @Param message_id path string true "Message ID" +// @Success 204 "Message deleted successfully" +// @Failure 404 {object} NotFoundError "Message not found" +// @Failure 502 {object} ServerError "Internal server error" +// @Router /v1/spaces/{space_id}/chat/messages/{message_id} [delete] +func (a *ApiServer) deleteChatMessageHandler(c *gin.Context) { + // TODO: Implement logic to delete a chat message by message_id + + c.JSON(http.StatusNotImplemented, gin.H{"message": "Not implemented yet"}) +} diff --git a/cmd/api/helper.go b/cmd/api/helper.go index a91ebfef7..171f71d54 100644 --- a/cmd/api/helper.go +++ b/cmd/api/helper.go @@ -8,6 +8,8 @@ import ( "net/http" "strings" + "github.com/gin-gonic/gin" + "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/pkg/lib/bundle" "github.com/anyproto/anytype-heart/pkg/lib/pb/model" @@ -92,9 +94,8 @@ func (a *ApiServer) imageToBase64(imagePath string) (string, error) { return encoded, nil } -// Determine gateway port based on the current process ID -func (a *ApiServer) getGatewayURL(icon string) string { - return fmt.Sprintf("%s/image/%s?width=100", a.accountInfo.GatewayUrl, icon) +func (a *ApiServer) getGatewayURL(objectId string) string { + return fmt.Sprintf("%s/image/%s", a.accountInfo.GatewayUrl, objectId) } func (a *ApiServer) resolveTypeToName(spaceId string, typeId string) (string, *pb.RpcObjectSearchResponseError) { @@ -126,3 +127,53 @@ func (a *ApiServer) resolveTypeToName(spaceId string, typeId string) (string, *p return resp.Records[0].Fields["name"].GetStringValue(), nil } + +func (a *ApiServer) getChatIdForSpace(c *gin.Context, spaceId string) string { + workspace := a.getWorkspaceInfo(c, spaceId) + + resp := a.mw.ObjectOpen(context.Background(), &pb.RpcObjectOpenRequest{ + SpaceId: spaceId, + ObjectId: workspace.WorkspaceObjectId, + }) + + if resp.Error.Code != pb.RpcObjectOpenResponseError_NULL { + c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to open workspace object."}) + return "" + } + + if !resp.ObjectView.Details[0].Details.Fields["hasChat"].GetBoolValue() { + c.JSON(http.StatusNotFound, gin.H{"message": "Chat not found"}) + return "" + } + + return resp.ObjectView.Details[0].Details.Fields["chatId"].GetStringValue() +} + +func (a *ApiServer) getWorkspaceInfo(c *gin.Context, spaceId string) Space { + workspaceResponse := a.mw.WorkspaceOpen(context.Background(), &pb.RpcWorkspaceOpenRequest{ + SpaceId: spaceId, + WithChat: true, + }) + + if workspaceResponse.Error.Code != pb.RpcWorkspaceOpenResponseError_NULL { + c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to open workspace."}) + return Space{} + } + + return Space{ + Type: "space", + Id: spaceId, + HomeObjectId: workspaceResponse.Info.HomeObjectId, + ArchiveObjectId: workspaceResponse.Info.ArchiveObjectId, + ProfileObjectId: workspaceResponse.Info.ProfileObjectId, + MarketplaceWorkspaceId: workspaceResponse.Info.MarketplaceWorkspaceId, + WorkspaceObjectId: workspaceResponse.Info.WorkspaceObjectId, + DeviceId: workspaceResponse.Info.DeviceId, + AccountSpaceId: workspaceResponse.Info.AccountSpaceId, + WidgetsId: workspaceResponse.Info.WidgetsId, + SpaceViewId: workspaceResponse.Info.SpaceViewId, + TechSpaceId: workspaceResponse.Info.TechSpaceId, + Timezone: workspaceResponse.Info.TimeZone, + NetworkId: workspaceResponse.Info.NetworkId, + } +} diff --git a/cmd/api/main.go b/cmd/api/main.go index 449e15ca2..f780ee13b 100644 --- a/cmd/api/main.go +++ b/cmd/api/main.go @@ -19,7 +19,6 @@ import ( const ( httpPort = ":31009" - httpTimeout = 1 * time.Second serverShutdownTime = 5 * time.Second ) @@ -110,6 +109,18 @@ func RunApiServer(ctx context.Context, mw service.ClientCommandsServer, mwIntern readWrite.PUT("/spaces/:space_id/objects/:object_id", a.updateObjectHandler) } + // Chat routes + chat := a.router.Group("/v1/spaces/:space_id/chat") + // chat.Use(a.AuthMiddleware()) + // chat.Use(a.PermissionMiddleware("read-write")) + { + chat.GET("/messages", a.getChatMessagesHandler) + chat.GET("/messages/:message_id", a.getChatMessageHandler) + chat.POST("/messages", a.addChatMessageHandler) + chat.PUT("/messages/:message_id", a.updateChatMessageHandler) + chat.DELETE("/messages/:message_id", a.deleteChatMessageHandler) + } + // Start the HTTP server go func() { if err := a.server.ListenAndServe(); err != nil && err != http.ErrServerClosed { diff --git a/cmd/api/schemas.go b/cmd/api/schemas.go index 816a171ba..e83a6cbe5 100644 --- a/cmd/api/schemas.go +++ b/cmd/api/schemas.go @@ -9,6 +9,7 @@ type Space struct { ArchiveObjectId string `json:"archive_object_id" example:"bafyreialsgoyflf3etjm3parzurivyaukzivwortf32b4twnlwpwocsrri"` ProfileObjectId string `json:"profile_object_id" example:"bafyreiaxhwreshjqwndpwtdsu4mtihaqhhmlygqnyqpfyfwlqfq3rm3gw4"` MarketplaceWorkspaceId string `json:"marketplace_workspace_id" example:"_anytype_marketplace"` + WorkspaceObjectId string `json:"workspace_object_id" example:"bafyreiapey2g6e6za4zfxvlgwdy4hbbfu676gmwrhnqvjbxvrchr7elr3y"` DeviceId string `json:"device_id" example:"12D3KooWGZMJ4kQVyQVXaj7gJPZr3RZ2nvd9M2Eq2pprEoPih9WF"` AccountSpaceId string `json:"account_space_id" example:"bafyreihpd2knon5wbljhtfeg3fcqtg3i2pomhhnigui6lrjmzcjzep7gcy.23me69r569oi1"` WidgetsId string `json:"widgets_id" example:"bafyreialj7pceh53mifm5dixlho47ke4qjmsn2uh4wsjf7xq2pnlo5xfva"` @@ -101,6 +102,38 @@ type ObjectTemplate struct { IconEmoji string `json:"icon_emoji" example:"📄"` } +type ChatMessage struct { + Type string `json:"chat_message"` + Id string `json:"id"` // Unique message identifier + OrderId string `json:"order_id"` // Used for subscriptions + Creator string `json:"creator"` // Identifier for the message creator + CreatedAt int64 `json:"created_at"` + ModifiedAt int64 `json:"modified_at"` + ReplyToMessageId string `json:"reply_to_message_id"` // Identifier for the message being replied to + Message MessageContent `json:"message"` // Message content + Attachments []Attachment `json:"attachments"` // Attachments slice + Reactions Reactions `json:"reactions"` // Reactions to the message +} + +type MessageContent struct { + Text string `json:"text"` // The text content of the message part + Style string `json:"style"` // The style/type of the message part + Marks []string `json:"marks"` // List of marks applied to the text +} + +type Attachment struct { + Target string `json:"target"` // Identifier for the attachment object + Type string `json:"type"` // Type of attachment +} + +type Reactions struct { + ReactionsMap map[string]IdentityList `json:"reactions"` // Map of emoji to list of user IDs +} + +type IdentityList struct { + Ids []string `json:"ids"` // List of user IDs +} + type ServerError struct { Error struct { Message string `json:"message"` From ba984b8d91700888f82ca48632855b57a1e17649 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Thu, 28 Nov 2024 13:50:00 +0100 Subject: [PATCH 034/279] GO-4459 Rework media responses, fix filter, introduce limits --- cmd/api/handlers.go | 68 +++++++++++++++++++++------------------------ cmd/api/helper.go | 8 ++++-- 2 files changed, 38 insertions(+), 38 deletions(-) diff --git a/cmd/api/handlers.go b/cmd/api/handlers.go index 837d1c0f6..8d5b130f1 100644 --- a/cmd/api/handlers.go +++ b/cmd/api/handlers.go @@ -5,6 +5,8 @@ import ( "crypto/rand" "math/big" "net/http" + "sort" + "strconv" "time" "github.com/gin-gonic/gin" @@ -116,6 +118,11 @@ func (a *ApiServer) getSpacesHandler(c *gin.Context) { Condition: model.BlockContentDataviewFilter_Equal, Value: pbtypes.Int64(int64(model.SpaceStatus_Ok)), }, + { + RelationKey: bundle.RelationKeySpaceRemoteStatus.String(), + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.Int64(int64(model.SpaceStatus_Ok)), + }, }, Sorts: []*model.BlockContentDataviewSort{ { @@ -133,31 +140,14 @@ func (a *ApiServer) getSpacesHandler(c *gin.Context) { for _, record := range resp.Records { spaceId := record.Fields["targetSpaceId"].GetStringValue() workspace := a.getWorkspaceInfo(c, spaceId) + workspace.Name = record.Fields["name"].GetStringValue() - // TODO cleanup image logic - // Convert space image or option to base64 string - var iconBase64 string + // Set space icon to gateway URL iconImageId := record.Fields["iconImage"].GetStringValue() if iconImageId != "" { - b64, err2 := a.imageToBase64(a.getGatewayURL(iconImageId)) - if err2 != nil { - c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to convert image to base64."}) - return - } - iconBase64 = b64 - } else { - iconOption := record.Fields["iconOption"].GetNumberValue() - // TODO figure out size - // Prevent index out of range error for space with empty name - if len(record.Fields["name"].GetStringValue()) > 0 { - iconBase64 = a.spaceSvg(int(iconOption), 100, string([]rune(record.Fields["name"].GetStringValue())[0])) - } else { - iconBase64 = a.spaceSvg(int(iconOption), 100, "") - } + workspace.Icon = a.getGatewayURLForMedia(iconImageId, true) } - workspace.Name = record.Fields["name"].GetStringValue() - workspace.Icon = iconBase64 spaces = append(spaces, workspace) } @@ -251,35 +241,28 @@ func (a *ApiServer) getSpaceMembersHandler(c *gin.Context) { members := make([]SpaceMember, 0, len(resp.Records)) for _, record := range resp.Records { - // Convert iconImage to base64 string - iconImageId := record.Fields["iconImage"].GetStringValue() - iconBase64 := "" - if iconImageId != "" { - b64, err2 := a.imageToBase64(a.getGatewayURL(iconImageId)) - if err2 != nil { - c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to convert image to base64."}) - return - } - iconBase64 = b64 - } - member := SpaceMember{ Type: "space_member", Id: record.Fields["id"].GetStringValue(), Name: record.Fields["name"].GetStringValue(), - Icon: iconBase64, Identity: record.Fields["identity"].GetStringValue(), GlobalName: record.Fields["globalName"].GetStringValue(), Role: model.ParticipantPermissions_name[int32(record.Fields["participantPermissions"].GetNumberValue())], } + // Set member icon to gateway URL + iconImageId := record.Fields["iconImage"].GetStringValue() + if iconImageId != "" { + member.Icon = a.getGatewayURLForMedia(iconImageId, true) + } + members = append(members, member) } c.JSON(http.StatusOK, gin.H{"members": members}) } -// getSpaceHandler retrieves objects in a specific space +// getSpaceObjectsHandler retrieves objects in a specific space // // @Summary Retrieve objects in a specific space // @Tags space_objects @@ -645,7 +628,12 @@ func (a *ApiServer) getObjectsHandler(c *gin.Context) { objectType := c.Query("object_type") // TODO: implement offset and limit // offset := c.DefaultQuery("offset", "0") - // limit := c.DefaultQuery("limit", "100") + l := c.DefaultQuery("limit", "100") + limit, err := strconv.Atoi(l) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to parse limit."}) + return + } // First, call ObjectSearch for all objects of type spaceView resp := a.mw.ObjectSearch(context.Background(), &pb.RpcObjectSearchRequest{ @@ -753,6 +741,14 @@ func (a *ApiServer) getObjectsHandler(c *gin.Context) { } } + // Sort search results by lastModifiedDate and return the first `limit` results + sort.Slice(searchResults, func(i, j int) bool { + return searchResults[i].Details[0].Details["lastModifiedDate"].(float64) > searchResults[j].Details[0].Details["lastModifiedDate"].(float64) + }) + if len(searchResults) > limit { + searchResults = searchResults[:limit] + } + c.JSON(http.StatusOK, gin.H{"objects": searchResults}) } @@ -786,7 +782,7 @@ func (a *ApiServer) getChatMessagesHandler(c *gin.Context) { for _, attachment := range message.Attachments { target := attachment.Target if attachment.Type != model.ChatMessageAttachment_LINK { - target = a.getGatewayURL(attachment.Target) + target = a.getGatewayURLForMedia(attachment.Target, false) } attachments = append(attachments, Attachment{ Target: target, diff --git a/cmd/api/helper.go b/cmd/api/helper.go index 171f71d54..795406fb5 100644 --- a/cmd/api/helper.go +++ b/cmd/api/helper.go @@ -94,8 +94,12 @@ func (a *ApiServer) imageToBase64(imagePath string) (string, error) { return encoded, nil } -func (a *ApiServer) getGatewayURL(objectId string) string { - return fmt.Sprintf("%s/image/%s", a.accountInfo.GatewayUrl, objectId) +func (a *ApiServer) getGatewayURLForMedia(objectId string, isIcon bool) string { + widthParam := "" + if isIcon { + widthParam = "?width=100" + } + return fmt.Sprintf("%s/image/%s%s", a.accountInfo.GatewayUrl, objectId, widthParam) } func (a *ApiServer) resolveTypeToName(spaceId string, typeId string) (string, *pb.RpcObjectSearchResponseError) { From e5fd45bba5947c561713935351a73612cbb86e23 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Thu, 28 Nov 2024 15:18:50 +0100 Subject: [PATCH 035/279] GO-4459 Investigate object search performance --- cmd/api/handlers.go | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/cmd/api/handlers.go b/cmd/api/handlers.go index 8d5b130f1..e9786598d 100644 --- a/cmd/api/handlers.go +++ b/cmd/api/handlers.go @@ -5,7 +5,6 @@ import ( "crypto/rand" "math/big" "net/http" - "sort" "strconv" "time" @@ -677,14 +676,10 @@ func (a *ApiServer) getObjectsHandler(c *gin.Context) { Condition: model.BlockContentDataviewFilter_NotEqual, Value: pbtypes.Bool(true), }, - { - RelationKey: bundle.RelationKeyName.String(), - Condition: model.BlockContentDataviewFilter_Like, - Value: pbtypes.String(searchTerm), - }, } if searchTerm != "" { + // TODO also include snippet for notes filters = append(filters, &model.BlockContentDataviewFilter{ RelationKey: bundle.RelationKeyName.String(), Condition: model.BlockContentDataviewFilter_Like, @@ -710,8 +705,10 @@ func (a *ApiServer) getObjectsHandler(c *gin.Context) { RelationKey: bundle.RelationKeyLastModifiedDate.String(), Type: model.BlockContentDataviewSort_Desc, }}, + Keys: []string{"id", "name", "type", "layout", "iconEmoji", "lastModifiedDate"}, + Limit: 25, + // FullText: searchTerm, }) - for _, record := range objectSearchResponse.Records { objectTypeName, err := a.resolveTypeToName(spaceId, record.Fields["type"].GetStringValue()) if err != nil { @@ -741,10 +738,6 @@ func (a *ApiServer) getObjectsHandler(c *gin.Context) { } } - // Sort search results by lastModifiedDate and return the first `limit` results - sort.Slice(searchResults, func(i, j int) bool { - return searchResults[i].Details[0].Details["lastModifiedDate"].(float64) > searchResults[j].Details[0].Details["lastModifiedDate"].(float64) - }) if len(searchResults) > limit { searchResults = searchResults[:limit] } From ad821cf8679e61946f9f8f462ff9462160230536 Mon Sep 17 00:00:00 2001 From: kirillston Date: Fri, 29 Nov 2024 17:55:29 +0100 Subject: [PATCH 036/279] GO-4455 Tidy LinkPreview call --- core/linkpreview.go | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) diff --git a/core/linkpreview.go b/core/linkpreview.go index f9b045ed0..450da53f9 100644 --- a/core/linkpreview.go +++ b/core/linkpreview.go @@ -3,7 +3,6 @@ package core import ( "context" "fmt" - "strings" "time" "github.com/anyproto/anytype-heart/pb" @@ -12,7 +11,7 @@ import ( ) func (mw *Middleware) LinkPreview(cctx context.Context, req *pb.RpcLinkPreviewRequest) *pb.RpcLinkPreviewResponse { - ctx, cancel := context.WithTimeout(context.Background(), time.Second*5) + ctx, cancel := context.WithTimeout(cctx, time.Second*5) defer cancel() u, err := uri.NormalizeAndParseURI(req.Url) @@ -25,24 +24,12 @@ func (mw *Middleware) LinkPreview(cctx context.Context, req *pb.RpcLinkPreviewRe } } - if mw.applicationService.GetApp() == nil { - return &pb.RpcLinkPreviewResponse{ - Error: &pb.RpcLinkPreviewResponseError{ - Code: pb.RpcLinkPreviewResponseError_UNKNOWN_ERROR, - }, - } - } - lp := mw.applicationService.GetApp().MustComponent(linkpreview.CName).(linkpreview.LinkPreview) - data, _, _, err := lp.Fetch(ctx, u.String()) + data, _, _, err := getService[linkpreview.LinkPreview](mw).Fetch(ctx, u.String()) if err != nil { - // trim the actual url from the error - errTrimmed := strings.Replace(err.Error(), u.String(), "", -1) - errTrimmed = strings.Replace(errTrimmed, u.Hostname(), "", -1) // in case of dns errors - return &pb.RpcLinkPreviewResponse{ Error: &pb.RpcLinkPreviewResponseError{ Code: pb.RpcLinkPreviewResponseError_UNKNOWN_ERROR, - Description: errTrimmed, + Description: getErrorDescription(err), }, } } From cf7ad1fd51af871a3f58ed2c86b989b00806f56f Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Fri, 29 Nov 2024 19:29:03 +0100 Subject: [PATCH 037/279] GO-4459 Only return active space members --- cmd/api/handlers.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/cmd/api/handlers.go b/cmd/api/handlers.go index e9786598d..075d9e6c2 100644 --- a/cmd/api/handlers.go +++ b/cmd/api/handlers.go @@ -224,6 +224,11 @@ func (a *ApiServer) getSpaceMembersHandler(c *gin.Context) { Condition: model.BlockContentDataviewFilter_Equal, Value: pbtypes.Int64(int64(model.ObjectType_participant)), }, + { + RelationKey: bundle.RelationKeyParticipantStatus.String(), + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.Int64(int64(model.ParticipantStatus_Active)), + }, }, Sorts: []*model.BlockContentDataviewSort{ { From 9ffb2d510f81177c045c80ddf95154a58463eef4 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Sun, 1 Dec 2024 15:54:51 +0100 Subject: [PATCH 038/279] GO-4459 Remove unused func and clean up handlers --- cmd/api/demo/api_demo.go | 13 ++++--- cmd/api/handlers.go | 23 +++++++++--- cmd/api/helper.go | 80 ---------------------------------------- 3 files changed, 25 insertions(+), 91 deletions(-) diff --git a/cmd/api/demo/api_demo.go b/cmd/api/demo/api_demo.go index f413f82e8..603a948d4 100644 --- a/cmd/api/demo/api_demo.go +++ b/cmd/api/demo/api_demo.go @@ -13,10 +13,11 @@ import ( ) const ( - baseURL = "http://localhost:31009/v1" - testSpaceId = "bafyreifymx5ucm3fdc7vupfg7wakdo5qelni3jvlmawlnvjcppurn2b3di.2lcu0r85yg10d" // dev (entry space) - testObjectId = "bafyreidhtlbbspxecab6xf4pi5zyxcmvwy6lqzursbjouq5fxovh6y3xwu" // "Work Faster with Templates" - testTypeId = "bafyreie3djy4mcldt3hgeet6bnjay2iajdyi2fvx556n6wcxii7brlni3i" // Page (in dev space) + baseURL = "http://localhost:31009/v1" + // testSpaceId = "bafyreifymx5ucm3fdc7vupfg7wakdo5qelni3jvlmawlnvjcppurn2b3di.2lcu0r85yg10d" // dev (entry space) + // testSpaceId = "bafyreiakofsfkgb7psju346cir2hit5hinhywaybi6vhp7hx4jw7hkngje.scoxzd7vu6rz" // HPI + // testObjectId = "bafyreidhtlbbspxecab6xf4pi5zyxcmvwy6lqzursbjouq5fxovh6y3xwu" // "Work Faster with Templates" + // testTypeId = "bafyreie3djy4mcldt3hgeet6bnjay2iajdyi2fvx556n6wcxii7brlni3i" // Page (in dev space) // chatSpaceId = "bafyreigryvrmerbtfswwz5kav2uq5dlvx3hl45kxn4nflg7lz46lneqs7m.2nvj2qik6ctdy" // Anytype Wiki space chatSpaceId = "bafyreiexhpzaf7uxzheubh7cjeusqukjnxfvvhh4at6bygljwvto2dttnm.2lcu0r85yg10d" // chat space ) @@ -54,7 +55,7 @@ func main() { // spaces // {"POST", "/spaces", nil, map[string]interface{}{"name": "New Space"}}, // {"GET", "/spaces?limit={limit}&offset={offset}", map[string]interface{}{"limit": 100, "offset": 0}, nil}, - // {"GET", "/spaces/{space_id}/members", map[string]interface{}{"space_id": testSpaceId}, nil}, + // {"GET", "/spaces/{space_id}/members", map[string]interface{}{"space_id": testSpaceId}, nil}, // space_objects // {"GET", "/spaces/{space_id}/objects", map[string]interface{}{"space_id": testSpaceId, "limit": 100, "offset": 0}, nil}, @@ -70,7 +71,7 @@ func main() { // {"GET", "/objects?search={search}&object_type={object_type}&limit={limit}&offset={offset}", map[string]interface{}{"search": "writing", "object_type": testTypeId, "limit": 100, "offset": 0}, nil}, // chat - // {"GET", "/spaces/{space_id}/chat/messages?limit={limit}&offset={offset}", map[string]interface{}{"space_id": chatSpaceId, "limit": 100, "offset": 0}, nil}, + {"GET", "/spaces/{space_id}/chat/messages?limit={limit}&offset={offset}", map[string]interface{}{"space_id": chatSpaceId, "limit": 100, "offset": 0}, nil}, // {"POST", "/spaces/{space_id}/chat/messages", map[string]interface{}{"space_id": chatSpaceId}, map[string]interface{}{"text": "new message from demo"}}, } diff --git a/cmd/api/handlers.go b/cmd/api/handlers.go index 075d9e6c2..2e39c1868 100644 --- a/cmd/api/handlers.go +++ b/cmd/api/handlers.go @@ -6,7 +6,6 @@ import ( "math/big" "net/http" "strconv" - "time" "github.com/gin-gonic/gin" "github.com/gogo/protobuf/types" @@ -18,7 +17,6 @@ import ( ) const ( - httpTimeout = 1 * time.Second paginationLimit = 100 ) @@ -188,7 +186,7 @@ func (a *ApiServer) createSpaceHandler(c *gin.Context) { }}, }, }, - UseCase: 1, + UseCase: pb.RpcObjectImportUseCaseRequest_GET_STARTED, WithChat: true, }) @@ -284,7 +282,12 @@ func (a *ApiServer) getSpaceObjectsHandler(c *gin.Context) { spaceId := c.Param("space_id") // TODO: implement offset and limit // offset, _ := strconv.Atoi(c.DefaultQuery("offset", "0")) - // limit, _ := strconv.Atoi(c.DefaultQuery("limit", "100")) + l := c.DefaultQuery("limit", "100") + limit, err := strconv.Atoi(l) + if err != nil { + c.JSON(http.StatusBadRequest, gin.H{"message": "Invalid limit value"}) + return + } resp := a.mw.ObjectSearch(context.Background(), &pb.RpcObjectSearchRequest{ SpaceId: spaceId, @@ -301,6 +304,12 @@ func (a *ApiServer) getSpaceObjectsHandler(c *gin.Context) { }...), }, }, + Sorts: []*model.BlockContentDataviewSort{{ + RelationKey: bundle.RelationKeyLastModifiedDate.String(), + Type: model.BlockContentDataviewSort_Desc, + }}, + Keys: []string{"id", "name", "type", "layout", "iconEmoji", "lastModifiedDate"}, + Limit: int32(limit), }) if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { @@ -340,6 +349,10 @@ func (a *ApiServer) getSpaceObjectsHandler(c *gin.Context) { objects = append(objects, object) } + if len(objects) > limit { + objects = objects[:limit] + } + c.JSON(http.StatusOK, gin.H{"objects": objects}) } @@ -813,7 +826,7 @@ func (a *ApiServer) getChatMessagesHandler(c *gin.Context) { }) } - c.JSON(http.StatusOK, gin.H{"messages": messages}) + c.JSON(http.StatusOK, gin.H{"chatId": chatId, "messages": messages}) } // getChatMessageHandler retrieves a specific chat message by message_id diff --git a/cmd/api/helper.go b/cmd/api/helper.go index 795406fb5..4f1402b0f 100644 --- a/cmd/api/helper.go +++ b/cmd/api/helper.go @@ -2,9 +2,7 @@ package api import ( "context" - "encoding/base64" "fmt" - "io" "net/http" "strings" @@ -16,84 +14,6 @@ import ( "github.com/anyproto/anytype-heart/util/pbtypes" ) -type IconSpace struct { - Text string - Bg map[string]string - List []string -} - -var iconSpace = IconSpace{ - Text: "#fff", - Bg: map[string]string{ - "grey": "#949494", - "yellow": "#ecd91b", - "orange": "#ffb522", - "red": "#f55522", - "pink": "#e51ca0", - "purple": "#ab50cc", - "blue": "#3e58eb", - "ice": "#2aa7ee", - "teal": "#0fc8ba", - "lime": "#5dd400", - }, - List: []string{"grey", "yellow", "orange", "red", "pink", "purple", "blue", "ice", "teal", "lime"}, -} - -func (a *ApiServer) spaceSvg(option int, size int, iconName string) string { - if option < 1 || option > len(iconSpace.List) { - return "" - } - bgColor := iconSpace.Bg[iconSpace.List[option-1]] - - fontWeight := func(size int) string { - if size > 50 { - return "bold" - } - return "normal" - } - - fontSize := func(size int) int { - return size / 2 - } - - text := fmt.Sprintf(`%s`, - iconSpace.Text, fontWeight(size), fontSize(size), iconName) - - svg := fmt.Sprintf(` - - - %s - `, size, size, size, size, size, size, bgColor, text) - - return "data:image/svg+xml;base64," + base64.StdEncoding.EncodeToString([]byte(svg)) -} - -func validateURL(url string) string { - if !strings.HasPrefix(url, "http://") && !strings.HasPrefix(url, "https://") { - return "" - } - return url -} - -func (a *ApiServer) imageToBase64(imagePath string) (string, error) { - client := &http.Client{ - Timeout: httpTimeout, - } - resp, err := client.Get(validateURL(imagePath)) - if err != nil { - // don't return error if image is not found - return "", nil - } - defer resp.Body.Close() - - fileBytes, err := io.ReadAll(resp.Body) - if err != nil { - return "", err - } - encoded := base64.StdEncoding.EncodeToString(fileBytes) - return encoded, nil -} - func (a *ApiServer) getGatewayURLForMedia(objectId string, isIcon bool) string { widthParam := "" if isIcon { From c54e66ebc0e4a665dd06358250d6ddead5cee870 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Mon, 2 Dec 2024 20:07:06 +0100 Subject: [PATCH 039/279] GO-4459 Fix the sort after lastModifiedDate for object search --- cmd/api/handlers.go | 35 ++++++++++++++++++++++++----------- cmd/api/main.go | 2 +- 2 files changed, 25 insertions(+), 12 deletions(-) diff --git a/cmd/api/handlers.go b/cmd/api/handlers.go index 2e39c1868..b8c281651 100644 --- a/cmd/api/handlers.go +++ b/cmd/api/handlers.go @@ -17,7 +17,9 @@ import ( ) const ( - paginationLimit = 100 + paginationLimit = "100" + paginationLimitPerSpace = 10 + paginationLimitPerChat = 100 ) type CreateSpaceRequest struct { @@ -264,7 +266,7 @@ func (a *ApiServer) getSpaceMembersHandler(c *gin.Context) { c.JSON(http.StatusOK, gin.H{"members": members}) } -// getSpaceObjectsHandler retrieves objects in a specific space +// getObjectsForSpaceHandler retrieves objects in a specific space // // @Summary Retrieve objects in a specific space // @Tags space_objects @@ -278,11 +280,11 @@ func (a *ApiServer) getSpaceMembersHandler(c *gin.Context) { // @Failure 404 {object} NotFoundError "Resource not found" // @Failure 502 {object} ServerError "Internal server error" // @Router /spaces/{space_id}/objects [get] -func (a *ApiServer) getSpaceObjectsHandler(c *gin.Context) { +func (a *ApiServer) getObjectsForSpaceHandler(c *gin.Context) { spaceId := c.Param("space_id") // TODO: implement offset and limit // offset, _ := strconv.Atoi(c.DefaultQuery("offset", "0")) - l := c.DefaultQuery("limit", "100") + l := c.DefaultQuery("limit", paginationLimit) limit, err := strconv.Atoi(l) if err != nil { c.JSON(http.StatusBadRequest, gin.H{"message": "Invalid limit value"}) @@ -305,8 +307,11 @@ func (a *ApiServer) getSpaceObjectsHandler(c *gin.Context) { }, }, Sorts: []*model.BlockContentDataviewSort{{ - RelationKey: bundle.RelationKeyLastModifiedDate.String(), - Type: model.BlockContentDataviewSort_Desc, + RelationKey: bundle.RelationKeyLastModifiedDate.String(), + Type: model.BlockContentDataviewSort_Desc, + Format: model.RelationFormat_longtext, + IncludeTime: true, + EmptyPlacement: model.BlockContentDataviewSort_NotSpecified, }}, Keys: []string{"id", "name", "type", "layout", "iconEmoji", "lastModifiedDate"}, Limit: int32(limit), @@ -645,7 +650,7 @@ func (a *ApiServer) getObjectsHandler(c *gin.Context) { objectType := c.Query("object_type") // TODO: implement offset and limit // offset := c.DefaultQuery("offset", "0") - l := c.DefaultQuery("limit", "100") + l := c.DefaultQuery("limit", paginationLimit) limit, err := strconv.Atoi(l) if err != nil { c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to parse limit."}) @@ -666,6 +671,11 @@ func (a *ApiServer) getObjectsHandler(c *gin.Context) { Condition: model.BlockContentDataviewFilter_Equal, Value: pbtypes.Int64(int64(model.SpaceStatus_Ok)), }, + { + RelationKey: bundle.RelationKeySpaceRemoteStatus.String(), + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.Int64(int64(model.SpaceStatus_Ok)), + }, }, }) if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { @@ -720,11 +730,14 @@ func (a *ApiServer) getObjectsHandler(c *gin.Context) { SpaceId: spaceId, Filters: filters, Sorts: []*model.BlockContentDataviewSort{{ - RelationKey: bundle.RelationKeyLastModifiedDate.String(), - Type: model.BlockContentDataviewSort_Desc, + RelationKey: bundle.RelationKeyLastModifiedDate.String(), + Type: model.BlockContentDataviewSort_Desc, + Format: model.RelationFormat_longtext, + IncludeTime: true, + EmptyPlacement: model.BlockContentDataviewSort_NotSpecified, }}, Keys: []string{"id", "name", "type", "layout", "iconEmoji", "lastModifiedDate"}, - Limit: 25, + Limit: paginationLimitPerSpace, // FullText: searchTerm, }) for _, record := range objectSearchResponse.Records { @@ -779,7 +792,7 @@ func (a *ApiServer) getChatMessagesHandler(c *gin.Context) { lastMessages := a.mw.ChatSubscribeLastMessages(context.Background(), &pb.RpcChatSubscribeLastMessagesRequest{ ChatObjectId: chatId, - Limit: paginationLimit, + Limit: paginationLimitPerChat, }) if lastMessages.Error.Code != pb.RpcChatSubscribeLastMessagesResponseError_NULL { diff --git a/cmd/api/main.go b/cmd/api/main.go index f780ee13b..aa4622e09 100644 --- a/cmd/api/main.go +++ b/cmd/api/main.go @@ -92,7 +92,7 @@ func RunApiServer(ctx context.Context, mw service.ClientCommandsServer, mwIntern { readOnly.GET("/spaces", a.getSpacesHandler) readOnly.GET("/spaces/:space_id/members", a.getSpaceMembersHandler) - readOnly.GET("/spaces/:space_id/objects", a.getSpaceObjectsHandler) + readOnly.GET("/spaces/:space_id/objects", a.getObjectsForSpaceHandler) readOnly.GET("/spaces/:space_id/objects/:object_id", a.getObjectHandler) readOnly.GET("/spaces/:space_id/objectTypes", a.getObjectTypesHandler) readOnly.GET("/spaces/:space_id/objectTypes/:typeId/templates", a.getObjectTypeTemplatesHandler) From 1fce139e26553efb3f1ecce9c136d8abceb881fd Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Mon, 2 Dec 2024 20:41:59 +0100 Subject: [PATCH 040/279] GO-4459 Re-sort elements for consistency in across-spaces search --- cmd/api/handlers.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/cmd/api/handlers.go b/cmd/api/handlers.go index b8c281651..7ebeb01a2 100644 --- a/cmd/api/handlers.go +++ b/cmd/api/handlers.go @@ -5,6 +5,7 @@ import ( "crypto/rand" "math/big" "net/http" + "sort" "strconv" "github.com/gin-gonic/gin" @@ -769,6 +770,11 @@ func (a *ApiServer) getObjectsHandler(c *gin.Context) { } } + // sort after lastModifiedDate to achieve descending sort order across all spaces + sort.Slice(searchResults, func(i, j int) bool { + return searchResults[i].Details[0].Details["lastModifiedDate"].(float64) > searchResults[j].Details[0].Details["lastModifiedDate"].(float64) + }) + if len(searchResults) > limit { searchResults = searchResults[:limit] } From 807426c615d8d5aabd692c2d0eb3fde99bc0776d Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Sun, 8 Dec 2024 16:42:53 +0100 Subject: [PATCH 041/279] GO-4459 Add offset based pagination --- cmd/api/docs/docs.go | 13 +++++++ cmd/api/docs/swagger.json | 13 +++++++ cmd/api/docs/swagger.yaml | 10 +++++ cmd/api/handlers.go | 79 ++++++++++++++++++++++----------------- cmd/api/main.go | 26 +++++++++---- go.mod | 22 ++++++----- go.sum | 49 ++++++++++++++---------- 7 files changed, 141 insertions(+), 71 deletions(-) diff --git a/cmd/api/docs/docs.go b/cmd/api/docs/docs.go index cd5d79547..8dfd1f0fc 100644 --- a/cmd/api/docs/docs.go +++ b/cmd/api/docs/docs.go @@ -289,6 +289,19 @@ const docTemplate = `{ "name": "space_id", "in": "path", "required": true + }, + { + "type": "integer", + "description": "The number of items to skip before starting to collect the result set", + "name": "offset", + "in": "query" + }, + { + "type": "integer", + "default": 100, + "description": "The number of items to return", + "name": "limit", + "in": "query" } ], "responses": { diff --git a/cmd/api/docs/swagger.json b/cmd/api/docs/swagger.json index fb0a5f041..13435cd56 100644 --- a/cmd/api/docs/swagger.json +++ b/cmd/api/docs/swagger.json @@ -283,6 +283,19 @@ "name": "space_id", "in": "path", "required": true + }, + { + "type": "integer", + "description": "The number of items to skip before starting to collect the result set", + "name": "offset", + "in": "query" + }, + { + "type": "integer", + "default": 100, + "description": "The number of items to return", + "name": "limit", + "in": "query" } ], "responses": { diff --git a/cmd/api/docs/swagger.yaml b/cmd/api/docs/swagger.yaml index 44f40e8ee..a8706efde 100644 --- a/cmd/api/docs/swagger.yaml +++ b/cmd/api/docs/swagger.yaml @@ -505,6 +505,16 @@ paths: name: space_id required: true type: string + - description: The number of items to skip before starting to collect the result + set + in: query + name: offset + type: integer + - default: 100 + description: The number of items to return + in: query + name: limit + type: integer produces: - application/json responses: diff --git a/cmd/api/handlers.go b/cmd/api/handlers.go index 7ebeb01a2..6c9b01b3c 100644 --- a/cmd/api/handlers.go +++ b/cmd/api/handlers.go @@ -6,7 +6,6 @@ import ( "math/big" "net/http" "sort" - "strconv" "github.com/gin-gonic/gin" "github.com/gogo/protobuf/types" @@ -17,12 +16,6 @@ import ( "github.com/anyproto/anytype-heart/util/pbtypes" ) -const ( - paginationLimit = "100" - paginationLimitPerSpace = 10 - paginationLimitPerChat = 100 -) - type CreateSpaceRequest struct { Name string `json:"name"` } @@ -104,7 +97,10 @@ func (a *ApiServer) authTokenHandler(c *gin.Context) { // @Failure 502 {object} ServerError "Internal server error" // @Router /spaces [get] func (a *ApiServer) getSpacesHandler(c *gin.Context) { - // Call ObjectSearch for all objects of type spaceView + offset := c.GetInt("offset") + limit := c.GetInt("limit") + + // Call ObjectSearch for all objects of type spaceView with pagination resp := a.mw.ObjectSearch(context.Background(), &pb.RpcObjectSearchRequest{ SpaceId: a.accountInfo.TechSpaceId, Filters: []*model.BlockContentDataviewFilter{ @@ -130,7 +126,10 @@ func (a *ApiServer) getSpacesHandler(c *gin.Context) { Type: model.BlockContentDataviewSort_Asc, }, }, + Offset: int32(offset), + Limit: int32(limit), }) + if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to retrieve list of spaces."}) return @@ -166,7 +165,6 @@ func (a *ApiServer) getSpacesHandler(c *gin.Context) { // @Failure 502 {object} ServerError "Internal server error" // @Router /spaces [post] func (a *ApiServer) createSpaceHandler(c *gin.Context) { - // Create new workspace with a random icon and import default usecase nameRequest := CreateSpaceRequest{} if err := c.BindJSON(&nameRequest); err != nil { c.JSON(http.StatusBadRequest, gin.H{"message": "Invalid JSON"}) @@ -179,6 +177,7 @@ func (a *ApiServer) createSpaceHandler(c *gin.Context) { return } + // Create new workspace with a random icon and import default use case resp := a.mw.WorkspaceCreate(context.Background(), &pb.RpcWorkspaceCreateRequest{ Details: &types.Struct{ Fields: map[string]*types.Value{ @@ -208,15 +207,19 @@ func (a *ApiServer) createSpaceHandler(c *gin.Context) { // @Accept json // @Produce json // @Param space_id path string true "The ID of the space" +// @Param offset query int false "The number of items to skip before starting to collect the result set" +// @Param limit query int false "The number of items to return" default(100) // @Success 200 {object} map[string][]SpaceMember "List of members" // @Failure 403 {object} UnauthorizedError "Unauthorized" // @Failure 404 {object} NotFoundError "Resource not found" // @Failure 502 {object} ServerError "Internal server error" // @Router /spaces/{space_id}/members [get] func (a *ApiServer) getSpaceMembersHandler(c *gin.Context) { - // Call ObjectSearch for all objects of type participant spaceId := c.Param("space_id") + offset := c.GetInt("offset") + limit := c.GetInt("limit") + // Call ObjectSearch for all objects of type participant resp := a.mw.ObjectSearch(context.Background(), &pb.RpcObjectSearchRequest{ SpaceId: spaceId, Filters: []*model.BlockContentDataviewFilter{ @@ -237,6 +240,8 @@ func (a *ApiServer) getSpaceMembersHandler(c *gin.Context) { Type: model.BlockContentDataviewSort_Asc, }, }, + Offset: int32(offset), + Limit: int32(limit), }) if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { @@ -283,14 +288,8 @@ func (a *ApiServer) getSpaceMembersHandler(c *gin.Context) { // @Router /spaces/{space_id}/objects [get] func (a *ApiServer) getObjectsForSpaceHandler(c *gin.Context) { spaceId := c.Param("space_id") - // TODO: implement offset and limit - // offset, _ := strconv.Atoi(c.DefaultQuery("offset", "0")) - l := c.DefaultQuery("limit", paginationLimit) - limit, err := strconv.Atoi(l) - if err != nil { - c.JSON(http.StatusBadRequest, gin.H{"message": "Invalid limit value"}) - return - } + offset := c.GetInt("offset") + limit := c.GetInt("limit") resp := a.mw.ObjectSearch(context.Background(), &pb.RpcObjectSearchRequest{ SpaceId: spaceId, @@ -314,8 +313,9 @@ func (a *ApiServer) getObjectsForSpaceHandler(c *gin.Context) { IncludeTime: true, EmptyPlacement: model.BlockContentDataviewSort_NotSpecified, }}, - Keys: []string{"id", "name", "type", "layout", "iconEmoji", "lastModifiedDate"}, - Limit: int32(limit), + Keys: []string{"id", "name", "type", "layout", "iconEmoji", "lastModifiedDate"}, + Offset: int32(offset), + Limit: int32(limit), }) if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { @@ -506,6 +506,8 @@ func (a *ApiServer) updateObjectHandler(c *gin.Context) { // @Router /spaces/{space_id}/objectTypes [get] func (a *ApiServer) getObjectTypesHandler(c *gin.Context) { spaceId := c.Param("space_id") + offset := c.GetInt("offset") + limit := c.GetInt("limit") resp := a.mw.ObjectSearch(context.Background(), &pb.RpcObjectSearchRequest{ SpaceId: spaceId, @@ -527,6 +529,8 @@ func (a *ApiServer) getObjectTypesHandler(c *gin.Context) { Type: model.BlockContentDataviewSort_Asc, }, }, + Offset: int32(offset), + Limit: int32(limit), }) if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { @@ -556,6 +560,8 @@ func (a *ApiServer) getObjectTypesHandler(c *gin.Context) { // @Produce json // @Param space_id path string true "The ID of the space" // @Param typeId path string true "The ID of the object type" +// @Param offset query int false "The number of items to skip before starting to collect the result set" +// @Param limit query int false "The number of items to return" default(100) // @Success 200 {object} map[string][]ObjectTemplate "List of templates" // @Failure 403 {object} UnauthorizedError "Unauthorized" // @Failure 404 {object} NotFoundError "Resource not found" @@ -564,6 +570,8 @@ func (a *ApiServer) getObjectTypesHandler(c *gin.Context) { func (a *ApiServer) getObjectTypeTemplatesHandler(c *gin.Context) { spaceId := c.Param("space_id") typeId := c.Param("typeId") + offset := c.GetInt("offset") + limit := c.GetInt("limit") // First, determine the type Id of "ot-template" in the space templateTypeIdResp := a.mw.ObjectSearch(context.Background(), &pb.RpcObjectSearchRequest{ @@ -594,6 +602,8 @@ func (a *ApiServer) getObjectTypeTemplatesHandler(c *gin.Context) { Value: pbtypes.String(templateTypeId), }, }, + Offset: int32(offset), + Limit: int32(limit), }) if templateObjectsResp.Error.Code != pb.RpcObjectSearchResponseError_NULL { @@ -649,14 +659,8 @@ func (a *ApiServer) getObjectTypeTemplatesHandler(c *gin.Context) { func (a *ApiServer) getObjectsHandler(c *gin.Context) { searchTerm := c.Query("search") objectType := c.Query("object_type") - // TODO: implement offset and limit - // offset := c.DefaultQuery("offset", "0") - l := c.DefaultQuery("limit", paginationLimit) - limit, err := strconv.Atoi(l) - if err != nil { - c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to parse limit."}) - return - } + offset := c.GetInt("offset") + limit := c.GetInt("limit") // First, call ObjectSearch for all objects of type spaceView resp := a.mw.ObjectSearch(context.Background(), &pb.RpcObjectSearchRequest{ @@ -679,6 +683,7 @@ func (a *ApiServer) getObjectsHandler(c *gin.Context) { }, }, }) + if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to retrieve list of spaces."}) return @@ -737,8 +742,11 @@ func (a *ApiServer) getObjectsHandler(c *gin.Context) { IncludeTime: true, EmptyPlacement: model.BlockContentDataviewSort_NotSpecified, }}, - Keys: []string{"id", "name", "type", "layout", "iconEmoji", "lastModifiedDate"}, - Limit: paginationLimitPerSpace, + Keys: []string{"id", "name", "type", "layout", "iconEmoji", "lastModifiedDate"}, + Offset: int32(offset), + Limit: int32(limit), + // TODO split limit between spaces + // Limit: paginationLimitPerSpace, // FullText: searchTerm, }) for _, record := range objectSearchResponse.Records { @@ -775,10 +783,6 @@ func (a *ApiServer) getObjectsHandler(c *gin.Context) { return searchResults[i].Details[0].Details["lastModifiedDate"].(float64) > searchResults[j].Details[0].Details["lastModifiedDate"].(float64) }) - if len(searchResults) > limit { - searchResults = searchResults[:limit] - } - c.JSON(http.StatusOK, gin.H{"objects": searchResults}) } @@ -789,16 +793,21 @@ func (a *ApiServer) getObjectsHandler(c *gin.Context) { // @Accept json // @Produce json // @Param space_id path string true "The ID of the space" +// @Param offset query int false "The number of items to skip before starting to collect the result set" +// @Param limit query int false "The number of items to return" default(100) // @Success 200 {object} map[string][]ChatMessage "List of chat messages" // @Failure 502 {object} ServerError "Internal server error" // @Router /v1/spaces/{space_id}/chat/messages [get] func (a *ApiServer) getChatMessagesHandler(c *gin.Context) { spaceId := c.Param("space_id") chatId := a.getChatIdForSpace(c, spaceId) + // TODO: implement offset + // offset := c.GetInt("offset") + limit := c.GetInt("limit") lastMessages := a.mw.ChatSubscribeLastMessages(context.Background(), &pb.RpcChatSubscribeLastMessagesRequest{ ChatObjectId: chatId, - Limit: paginationLimitPerChat, + Limit: int32(limit), }) if lastMessages.Error.Code != pb.RpcChatSubscribeLastMessagesResponseError_NULL { diff --git a/cmd/api/main.go b/cmd/api/main.go index aa4622e09..f36081873 100644 --- a/cmd/api/main.go +++ b/cmd/api/main.go @@ -11,6 +11,8 @@ import ( swaggerFiles "github.com/swaggo/files" ginSwagger "github.com/swaggo/gin-swagger" + "github.com/webstradev/gin-pagination/v2/pkg/pagination" + _ "github.com/anyproto/anytype-heart/cmd/api/docs" "github.com/anyproto/anytype-heart/core" "github.com/anyproto/anytype-heart/pb/service" @@ -75,6 +77,16 @@ func RunApiServer(ctx context.Context, mw service.ClientCommandsServer, mwIntern a := newApiServer(mw, mwInternal) a.router.Use(a.initAccountInfo()) + // Initialize pagination middleware + paginator := pagination.New( + pagination.WithPageText("offset"), + pagination.WithSizeText("limit"), + pagination.WithDefaultPage(0), + pagination.WithDefaultPageSize(100), + pagination.WithMinPageSize(1), + pagination.WithMaxPageSize(1000), + ) + // Swagger route a.router.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) @@ -90,13 +102,13 @@ func RunApiServer(ctx context.Context, mw service.ClientCommandsServer, mwIntern // readOnly.Use(a.AuthMiddleware()) // readOnly.Use(a.PermissionMiddleware("read-only")) { - readOnly.GET("/spaces", a.getSpacesHandler) - readOnly.GET("/spaces/:space_id/members", a.getSpaceMembersHandler) - readOnly.GET("/spaces/:space_id/objects", a.getObjectsForSpaceHandler) + readOnly.GET("/spaces", paginator, a.getSpacesHandler) + readOnly.GET("/spaces/:space_id/members", paginator, a.getSpaceMembersHandler) + readOnly.GET("/spaces/:space_id/objects", paginator, a.getObjectsForSpaceHandler) readOnly.GET("/spaces/:space_id/objects/:object_id", a.getObjectHandler) - readOnly.GET("/spaces/:space_id/objectTypes", a.getObjectTypesHandler) - readOnly.GET("/spaces/:space_id/objectTypes/:typeId/templates", a.getObjectTypeTemplatesHandler) - readOnly.GET("/objects", a.getObjectsHandler) + readOnly.GET("/spaces/:space_id/objectTypes", paginator, a.getObjectTypesHandler) + readOnly.GET("/spaces/:space_id/objectTypes/:typeId/templates", paginator, a.getObjectTypeTemplatesHandler) + readOnly.GET("/objects", paginator, a.getObjectsHandler) } // Read-write routes @@ -114,7 +126,7 @@ func RunApiServer(ctx context.Context, mw service.ClientCommandsServer, mwIntern // chat.Use(a.AuthMiddleware()) // chat.Use(a.PermissionMiddleware("read-write")) { - chat.GET("/messages", a.getChatMessagesHandler) + chat.GET("/messages", paginator, a.getChatMessagesHandler) chat.GET("/messages/:message_id", a.getChatMessageHandler) chat.POST("/messages", a.addChatMessageHandler) chat.PUT("/messages/:message_id", a.updateChatMessageHandler) diff --git a/go.mod b/go.mod index 7df76eb7e..2ff4e802d 100644 --- a/go.mod +++ b/go.mod @@ -27,7 +27,7 @@ require ( github.com/dsoprea/go-exif/v3 v3.0.1 github.com/dsoprea/go-jpeg-image-structure/v2 v2.0.0-20221012074422-4f3f7e934102 github.com/ethereum/go-ethereum v1.13.15 - github.com/gin-gonic/gin v1.9.0 + github.com/gin-gonic/gin v1.10.0 github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8 github.com/go-chi/chi/v5 v5.1.0 github.com/go-shiori/go-readability v0.0.0-20241012063810-92284fa8a71f @@ -95,6 +95,7 @@ require ( github.com/uber/jaeger-client-go v2.30.0+incompatible github.com/valyala/fastjson v1.6.4 github.com/vektra/mockery/v2 v2.47.0 + github.com/webstradev/gin-pagination/v2 v2.0.2 github.com/xeipuuv/gojsonschema v1.2.0 github.com/yuin/goldmark v1.7.8 github.com/zeebo/blake3 v0.2.4 @@ -137,12 +138,14 @@ require ( github.com/btcsuite/btcd/btcec/v2 v2.2.0 // indirect github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 // indirect github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce // indirect - github.com/bytedance/sonic v1.8.0 // indirect + github.com/bytedance/sonic v1.12.3 // indirect + github.com/bytedance/sonic/loader v0.2.0 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cespare/xxhash v1.1.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 // indirect github.com/chigopher/pathlib v0.19.1 // indirect + github.com/cloudwego/base64x v0.1.4 // indirect + github.com/cloudwego/iasm v0.2.0 // indirect github.com/crackcomm/go-gitignore v0.0.0-20241020182519-7843d2ba8fdf // indirect github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect @@ -158,6 +161,7 @@ require ( github.com/flopp/go-findfont v0.1.0 // indirect github.com/fogleman/gg v1.3.0 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect + github.com/gabriel-vasile/mimetype v1.4.6 // indirect github.com/gin-contrib/sse v0.1.0 // indirect github.com/go-errors/errors v1.4.2 // indirect github.com/go-logr/logr v1.4.2 // indirect @@ -169,12 +173,12 @@ require ( github.com/go-openapi/swag v0.19.15 // indirect github.com/go-playground/locales v0.14.1 // indirect github.com/go-playground/universal-translator v0.18.1 // indirect - github.com/go-playground/validator/v10 v10.11.2 // indirect + github.com/go-playground/validator/v10 v10.22.1 // indirect github.com/go-shiori/dom v0.0.0-20230515143342-73569d674e1c // indirect github.com/go-task/slim-sprig/v3 v3.0.0 // indirect github.com/go-xmlfmt/xmlfmt v0.0.0-20191208150333-d5b6f63a941b // indirect github.com/gobwas/glob v0.2.3 // indirect - github.com/goccy/go-json v0.10.2 // indirect + github.com/goccy/go-json v0.10.3 // indirect github.com/gogo/googleapis v1.3.1 // indirect github.com/gogs/chardet v0.0.0-20211120154057-b7413eaefb8f // indirect github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect @@ -209,7 +213,7 @@ require ( github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/cpuid/v2 v2.2.8 // indirect - github.com/leodido/go-urn v1.2.1 // indirect + github.com/leodido/go-urn v1.4.0 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect github.com/mailru/easyjson v0.7.6 // indirect @@ -232,7 +236,7 @@ require ( github.com/mwitkow/go-proto-validators v0.3.2 // indirect github.com/ncruces/go-strftime v0.1.9 // indirect github.com/onsi/ginkgo/v2 v2.20.2 // indirect - github.com/pelletier/go-toml/v2 v2.0.6 // indirect + github.com/pelletier/go-toml/v2 v2.2.3 // indirect github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/polydawn/refmt v0.89.0 // indirect @@ -262,7 +266,7 @@ require ( github.com/twitchyliquid64/golang-asm v0.15.1 // indirect github.com/tyler-smith/go-bip39 v1.1.0 // indirect github.com/uber/jaeger-lib v2.4.1+incompatible // indirect - github.com/ugorji/go/codec v1.2.9 // indirect + github.com/ugorji/go/codec v1.2.12 // indirect github.com/whyrusleeping/chunker v0.0.0-20181014151217-fe64bd25879f // indirect github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f // indirect github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect @@ -272,7 +276,7 @@ require ( go.opentelemetry.io/otel v1.32.0 // indirect go.opentelemetry.io/otel/metric v1.32.0 // indirect go.opentelemetry.io/otel/trace v1.32.0 // indirect - golang.org/x/arch v0.0.0-20210923205945-b76863e36670 // indirect + golang.org/x/arch v0.11.0 // indirect golang.org/x/crypto v0.29.0 // indirect golang.org/x/mod v0.22.0 // indirect golang.org/x/sync v0.9.0 // indirect diff --git a/go.sum b/go.sum index 779008d97..336358393 100644 --- a/go.sum +++ b/go.sum @@ -153,9 +153,11 @@ github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVa github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= -github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM= -github.com/bytedance/sonic v1.8.0 h1:ea0Xadu+sHlu7x5O3gKhRpQ1IKiMrSiHttPF0ybECuA= -github.com/bytedance/sonic v1.8.0/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U= +github.com/bytedance/sonic v1.12.3 h1:W2MGa7RCU1QTeYRTPE3+88mVC0yXmsRQRChiyVocVjU= +github.com/bytedance/sonic v1.12.3/go.mod h1:B8Gt/XvtZ3Fqj+iSKMypzymZxw/FVwgIGKzMzT9r/rk= +github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= +github.com/bytedance/sonic/loader v0.2.0 h1:zNprn+lsIP06C/IqCHs3gPQIvnvpKbbxyXQP1iU4kWM= +github.com/bytedance/sonic/loader v0.2.0/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= @@ -173,9 +175,6 @@ github.com/cheggaaa/mb v1.0.3 h1:03ksWum+6kHclB+kjwKMaBtgl5gtNYUwNpxsHQciKe8= github.com/cheggaaa/mb v1.0.3/go.mod h1:NUl0GBtFLlfg2o6iZwxzcG7Lslc2wV/ADTFbLXtVPE4= github.com/cheggaaa/mb/v3 v3.0.2 h1:jd1Xx0zzihZlXL6HmnRXVCI1BHuXz/kY+VzX9WbvNDU= github.com/cheggaaa/mb/v3 v3.0.2/go.mod h1:zCt2QeYukhd/g0bIdNqF+b/kKz1hnLFNDkP49qN5kqI= -github.com/chenzhuoyu/base64x v0.0.0-20211019084208-fb5309c8db06/go.mod h1:DH46F32mSOjUmXrMHnKwZdA8wcEefY7UVqBKYGjpdQY= -github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 h1:qSGYFH7+jGhDF8vLC+iwCD4WpbV1EBDSzWkJODFLams= -github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311/go.mod h1:b583jCggY9gE99b6G5LEC39OIiVsWj+R97kbl5odCEk= github.com/chigopher/pathlib v0.19.1 h1:RoLlUJc0CqBGwq239cilyhxPNLXTK+HXoASGyGznx5A= github.com/chigopher/pathlib v0.19.1/go.mod h1:tzC1dZLW8o33UQpWkNkhvPwL5n4yyFRFm/jL1YGWFvY= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= @@ -183,6 +182,10 @@ github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5P github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cloudwego/base64x v0.1.4 h1:jwCgWpFanWmN8xoIUHa2rtzmkd5J2plF/dnLS6Xd/0Y= +github.com/cloudwego/base64x v0.1.4/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w= +github.com/cloudwego/iasm v0.2.0 h1:1KNIy1I1H9hNNFEEH3DVnI4UujN+1zjpuk6gwHLTssg= +github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= @@ -285,14 +288,16 @@ github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7z github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= +github.com/gabriel-vasile/mimetype v1.4.6 h1:3+PzJTKLkvgjeTbts6msPJt4DixhT4YtFNf1gtGe3zc= +github.com/gabriel-vasile/mimetype v1.4.6/go.mod h1:JX1qVKqZd40hUPpAfiNTe0Sne7hdfKSbOqqmkq8GCXc= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/gzip v0.0.6 h1:NjcunTcGAj5CO1gn4N8jHOSIeRFHIbn51z6K+xaN4d4= github.com/gin-contrib/gzip v0.0.6/go.mod h1:QOJlmV2xmayAjkNS2Y8NQsMneuRShOU/kjovCXNuzzk= github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= -github.com/gin-gonic/gin v1.9.0 h1:OjyFBKICoexlu99ctXNR2gg+c5pKrKMuyjgARg9qeY8= -github.com/gin-gonic/gin v1.9.0/go.mod h1:W1Me9+hsUSyj3CePGrd1/QrKJMSJ1Tu/0hFEH89961k= +github.com/gin-gonic/gin v1.10.0 h1:nTuyha1TYqgedzytsKYqna+DfLos46nTv2ygFy86HFU= +github.com/gin-gonic/gin v1.10.0/go.mod h1:4PMNQiOhvDRa013RKVbsiNwoyezlm2rm0uX/T7kzp5Y= github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8 h1:DujepqpGd1hyOd7aW59XpK7Qymp8iy83xq74fLr21is= github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= github.com/go-chi/chi/v5 v5.1.0 h1:acVI1TYaD+hhedDJ3r54HyA6sExp3HfXq7QWEEY/xMw= @@ -340,8 +345,8 @@ github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+ github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= -github.com/go-playground/validator/v10 v10.11.2 h1:q3SHpufmypg+erIExEKUmsgmhDTyhcJ38oeKGACXohU= -github.com/go-playground/validator/v10 v10.11.2/go.mod h1:NieE624vt4SCTJtD87arVLvdmjPAeV8BQlHtMnw9D7s= +github.com/go-playground/validator/v10 v10.22.1 h1:40JcKH+bBNGFczGuoBYgX4I6m/i27HYW8P9FDk5PbgA= +github.com/go-playground/validator/v10 v10.22.1/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM= github.com/go-shiori/dom v0.0.0-20230515143342-73569d674e1c h1:wpkoddUomPfHiOziHZixGO5ZBS73cKqVzZipfrLmO1w= github.com/go-shiori/dom v0.0.0-20230515143342-73569d674e1c/go.mod h1:oVDCh3qjJMLVUSILBRwrm+Bc6RNXGZYtoh9xdvf1ffM= github.com/go-shiori/go-readability v0.0.0-20241012063810-92284fa8a71f h1:cypj7SJh+47G9J3VCPdMzT3uWcXWAWDJA54ErTfOigI= @@ -363,8 +368,8 @@ github.com/gobwas/ws v1.0.2 h1:CoAavW/wd/kulfZmSIBt6p24n4j7tHgNVCjsfHVNUbo= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= github.com/goccy/go-graphviz v0.2.9 h1:4yD2MIMpxNt+sOEARDh5jTE2S/jeAKi92w72B83mWGg= github.com/goccy/go-graphviz v0.2.9/go.mod h1:hssjl/qbvUXGmloY81BwXt2nqoApKo7DFgDj5dLJGb8= -github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= -github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/goccy/go-json v0.10.3 h1:KZ5WoDbxAIgm2HNbYckL0se1fHD6rz5j4ywS6ebzDqA= +github.com/goccy/go-json v0.10.3/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/googleapis v0.0.0-20180223154316-0cd9801be74a/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= @@ -639,6 +644,7 @@ github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90 github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.2.8 h1:+StwCXwm9PdpiEkPyzBXIy+M9KUb4ODm0Zarf1kS5BM= github.com/klauspost/cpuid/v2 v2.2.8/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= +github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/koron/go-ssdp v0.0.4 h1:1IDwrghSKYM7yLf7XCzbByg2sJ/JcNOZRXS2jczTwz0= @@ -658,8 +664,8 @@ github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= -github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= -github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= +github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= +github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= github.com/libp2p/go-libp2p v0.37.0 h1:8K3mcZgwTldydMCNOiNi/ZJrOB9BY+GlI3UxYzxBi9A= @@ -823,8 +829,8 @@ github.com/otiai10/opengraph/v2 v2.1.0/go.mod h1:gHYa6c2GENKqbB7O6Mkqpq2Ma0Nti31 github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= -github.com/pelletier/go-toml/v2 v2.0.6 h1:nrzqCb7j9cDFj2coyLNLaZuJTLjWjlaz6nvTvIwycIU= -github.com/pelletier/go-toml/v2 v2.0.6/go.mod h1:eumQOmlWiOPt5WriQQqoM5y18pDHwha2N+QD+EUNTek= +github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M= +github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7 h1:Dx7Ovyv/SFnMFw3fD4oEoeorXc6saIiQ23LrGLth0Gw= github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= @@ -1036,8 +1042,8 @@ github.com/uber/jaeger-lib v2.4.1+incompatible h1:td4jdvLcExb4cBISKIpHuGoVXh+dVK github.com/uber/jaeger-lib v2.4.1+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= -github.com/ugorji/go/codec v1.2.9 h1:rmenucSohSTiyL09Y+l2OCk+FrMxGMzho2+tjr5ticU= -github.com/ugorji/go/codec v1.2.9/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= +github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65EE= +github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.10/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= @@ -1049,6 +1055,8 @@ github.com/warpfork/go-testmark v0.12.1 h1:rMgCpJfwy1sJ50x0M0NgyphxYYPMOODIJHhsX github.com/warpfork/go-testmark v0.12.1/go.mod h1:kHwy7wfvGSPh1rQJYKayD4AbtNaeyZdcGi9tNJTaa5Y= github.com/warpfork/go-wish v0.0.0-20220906213052-39a1cc7a02d0 h1:GDDkbFiaK8jsSDJfjId/PEGEShv6ugrt4kYsC5UIDaQ= github.com/warpfork/go-wish v0.0.0-20220906213052-39a1cc7a02d0/go.mod h1:x6AKhvSSexNrVSrViXSHUEbICjmGXhtgABaHIySUSGw= +github.com/webstradev/gin-pagination/v2 v2.0.2 h1:CCbmxdvW3lJR5UJM972jlLgi6R0aU/fMyuj5CfULqz8= +github.com/webstradev/gin-pagination/v2 v2.0.2/go.mod h1:C/1SBe8wng4aKNt3+vWVaQJwi+blntO3JT/uy0LqJjE= github.com/whyrusleeping/chunker v0.0.0-20181014151217-fe64bd25879f h1:jQa4QT2UP9WYv2nzyawpKMOCl+Z/jW7djv2/J50lj9E= github.com/whyrusleeping/chunker v0.0.0-20181014151217-fe64bd25879f/go.mod h1:p9UJB6dDgdPgMJZs7UjUOdulKyRr9fqkS+6JKAInPy8= github.com/wlynxg/anet v0.0.5 h1:J3VJGi1gvo0JwZ/P1/Yc/8p63SoW98B5dHkYDmpgvvU= @@ -1124,8 +1132,8 @@ go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -golang.org/x/arch v0.0.0-20210923205945-b76863e36670 h1:18EFjUmQOcUvxNYSkA6jO9VAiXCnxFY6NyDX0bHDmkU= -golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= +golang.org/x/arch v0.11.0 h1:KXV8WWKCXm6tRpLirl2szsO5j/oOODwZf4hATmGVNs4= +golang.org/x/arch v0.11.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys= golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -1632,6 +1640,7 @@ modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= nhooyr.io/websocket v1.8.7 h1:usjR2uOr/zjjkVMy0lW+PPohFok7PCow5sDjLgX4P4g= nhooyr.io/websocket v1.8.7/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= +nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= From 1a62a1834a50b47be2efa8b968df9ef27c2e6ba6 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Thu, 12 Dec 2024 01:06:02 +0100 Subject: [PATCH 042/279] GO-4459 Fix icon and pagination related issues --- cmd/api/demo/api_demo.go | 6 +++--- cmd/api/docs/docs.go | 26 ++++++++++++++++++++++++++ cmd/api/docs/swagger.json | 26 ++++++++++++++++++++++++++ cmd/api/docs/swagger.yaml | 20 ++++++++++++++++++++ cmd/api/handlers.go | 36 +++++++++++++++++++----------------- cmd/api/helper.go | 17 +++++++++++++++++ 6 files changed, 111 insertions(+), 20 deletions(-) diff --git a/cmd/api/demo/api_demo.go b/cmd/api/demo/api_demo.go index 603a948d4..9dfda9e41 100644 --- a/cmd/api/demo/api_demo.go +++ b/cmd/api/demo/api_demo.go @@ -55,17 +55,17 @@ func main() { // spaces // {"POST", "/spaces", nil, map[string]interface{}{"name": "New Space"}}, // {"GET", "/spaces?limit={limit}&offset={offset}", map[string]interface{}{"limit": 100, "offset": 0}, nil}, - // {"GET", "/spaces/{space_id}/members", map[string]interface{}{"space_id": testSpaceId}, nil}, + // {"GET", "/spaces/{space_id}/members?limit={limit}&offset={offset}", map[string]interface{}{"space_id": testSpaceId}, nil}, // space_objects - // {"GET", "/spaces/{space_id}/objects", map[string]interface{}{"space_id": testSpaceId, "limit": 100, "offset": 0}, nil}, + // {"GET", "/spaces/{space_id}/objects?limit={limit}&offset={offset}", map[string]interface{}{"space_id": testSpaceId, "limit": 100, "offset": 0}, nil}, // {"GET", "/spaces/{space_id}/objects/{object_id}", map[string]interface{}{"space_id": testSpaceId, "object_id": testObjectId}, nil}, // {"POST", "/spaces/{space_id}/objects", map[string]interface{}{"space_id": testSpaceId}, map[string]interface{}{"name": "New Object from demo", "icon_emoji": "💥", "template_id": "", "object_type_unique_key": "ot-page", "with_chat": false}}, // {"PUT", "/spaces/{space_id}/objects/{object_id}", map[string]interface{}{"space_id": testSpaceId, "object_id": testObjectId}, map[string]interface{}{"name": "Updated Object"}}, // types_and_templates // {"GET", "/spaces/{space_id}/objectTypes?limit={limit}&offset={offset}", map[string]interface{}{"space_id": testSpaceId, "limit": 100, "offset": 0}, nil}, - // {"GET", "/spaces/{space_id}/objectTypes/{type_id}/templates", map[string]interface{}{"space_id": testSpaceId, "type_id": testTypeId}, nil}, + // {"GET", "/spaces/{space_id}/objectTypes/{type_id}/templates?limit={limit}&offset={offset}", map[string]interface{}{"space_id": testSpaceId, "type_id": testTypeId}, nil}, // search // {"GET", "/objects?search={search}&object_type={object_type}&limit={limit}&offset={offset}", map[string]interface{}{"search": "writing", "object_type": testTypeId, "limit": 100, "offset": 0}, nil}, diff --git a/cmd/api/docs/docs.go b/cmd/api/docs/docs.go index 8dfd1f0fc..f60232516 100644 --- a/cmd/api/docs/docs.go +++ b/cmd/api/docs/docs.go @@ -429,6 +429,19 @@ const docTemplate = `{ "name": "typeId", "in": "path", "required": true + }, + { + "type": "integer", + "description": "The number of items to skip before starting to collect the result set", + "name": "offset", + "in": "query" + }, + { + "type": "integer", + "default": 100, + "description": "The number of items to return", + "name": "limit", + "in": "query" } ], "responses": { @@ -724,6 +737,19 @@ const docTemplate = `{ "name": "space_id", "in": "path", "required": true + }, + { + "type": "integer", + "description": "The number of items to skip before starting to collect the result set", + "name": "offset", + "in": "query" + }, + { + "type": "integer", + "default": 100, + "description": "The number of items to return", + "name": "limit", + "in": "query" } ], "responses": { diff --git a/cmd/api/docs/swagger.json b/cmd/api/docs/swagger.json index 13435cd56..a120e643f 100644 --- a/cmd/api/docs/swagger.json +++ b/cmd/api/docs/swagger.json @@ -423,6 +423,19 @@ "name": "typeId", "in": "path", "required": true + }, + { + "type": "integer", + "description": "The number of items to skip before starting to collect the result set", + "name": "offset", + "in": "query" + }, + { + "type": "integer", + "default": 100, + "description": "The number of items to return", + "name": "limit", + "in": "query" } ], "responses": { @@ -718,6 +731,19 @@ "name": "space_id", "in": "path", "required": true + }, + { + "type": "integer", + "description": "The number of items to skip before starting to collect the result set", + "name": "offset", + "in": "query" + }, + { + "type": "integer", + "default": 100, + "description": "The number of items to return", + "name": "limit", + "in": "query" } ], "responses": { diff --git a/cmd/api/docs/swagger.yaml b/cmd/api/docs/swagger.yaml index a8706efde..d12c6e3b2 100644 --- a/cmd/api/docs/swagger.yaml +++ b/cmd/api/docs/swagger.yaml @@ -600,6 +600,16 @@ paths: name: typeId required: true type: string + - description: The number of items to skip before starting to collect the result + set + in: query + name: offset + type: integer + - default: 100 + description: The number of items to return + in: query + name: limit + type: integer produces: - application/json responses: @@ -796,6 +806,16 @@ paths: name: space_id required: true type: string + - description: The number of items to skip before starting to collect the result + set + in: query + name: offset + type: integer + - default: 100 + description: The number of items to return + in: query + name: limit + type: integer produces: - application/json responses: diff --git a/cmd/api/handlers.go b/cmd/api/handlers.go index 6c9b01b3c..ef4ca5192 100644 --- a/cmd/api/handlers.go +++ b/cmd/api/handlers.go @@ -33,7 +33,7 @@ type AddMessageRequest struct { Style string `json:"style"` } -// authdisplayCodeHandler generates a new challenge and returns the challenge Id +// authDisplayCodeHandler generates a new challenge and returns the challenge ID // // @Summary Open a modal window with a code in Anytype Desktop app // @Tags auth @@ -137,8 +137,7 @@ func (a *ApiServer) getSpacesHandler(c *gin.Context) { spaces := make([]Space, 0, len(resp.Records)) for _, record := range resp.Records { - spaceId := record.Fields["targetSpaceId"].GetStringValue() - workspace := a.getWorkspaceInfo(c, spaceId) + workspace := a.getWorkspaceInfo(c, record.Fields["targetSpaceId"].GetStringValue()) workspace.Name = record.Fields["name"].GetStringValue() // Set space icon to gateway URL @@ -251,21 +250,18 @@ func (a *ApiServer) getSpaceMembersHandler(c *gin.Context) { members := make([]SpaceMember, 0, len(resp.Records)) for _, record := range resp.Records { + icon := a.getIconFromEmojiOrImage(c, record.Fields["iconEmoji"].GetStringValue(), record.Fields["iconImage"].GetStringValue()) + member := SpaceMember{ Type: "space_member", Id: record.Fields["id"].GetStringValue(), Name: record.Fields["name"].GetStringValue(), + Icon: icon, Identity: record.Fields["identity"].GetStringValue(), GlobalName: record.Fields["globalName"].GetStringValue(), Role: model.ParticipantPermissions_name[int32(record.Fields["participantPermissions"].GetNumberValue())], } - // Set member icon to gateway URL - iconImageId := record.Fields["iconImage"].GetStringValue() - if iconImageId != "" { - member.Icon = a.getGatewayURLForMedia(iconImageId, true) - } - members = append(members, member) } @@ -299,10 +295,13 @@ func (a *ApiServer) getObjectsForSpaceHandler(c *gin.Context) { Condition: model.BlockContentDataviewFilter_In, Value: pbtypes.IntList([]int{ int(model.ObjectType_basic), + int(model.ObjectType_profile), + int(model.ObjectType_todo), int(model.ObjectType_note), int(model.ObjectType_bookmark), int(model.ObjectType_set), int(model.ObjectType_collection), + int(model.ObjectType_participant), }...), }, }, @@ -313,7 +312,7 @@ func (a *ApiServer) getObjectsForSpaceHandler(c *gin.Context) { IncludeTime: true, EmptyPlacement: model.BlockContentDataviewSort_NotSpecified, }}, - Keys: []string{"id", "name", "type", "layout", "iconEmoji", "lastModifiedDate"}, + Keys: []string{"id", "name", "type", "layout", "iconEmoji", "iconImage", "lastModifiedDate"}, Offset: int32(offset), Limit: int32(limit), }) @@ -325,6 +324,7 @@ func (a *ApiServer) getObjectsForSpaceHandler(c *gin.Context) { objects := make([]Object, 0, len(resp.Records)) for _, record := range resp.Records { + icon := a.getIconFromEmojiOrImage(c, record.Fields["iconEmoji"].GetStringValue(), record.Fields["iconImage"].GetStringValue()) objectTypeName, err := a.resolveTypeToName(spaceId, record.Fields["type"].GetStringValue()) if err != nil { c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to resolve object type name."}) @@ -336,7 +336,7 @@ func (a *ApiServer) getObjectsForSpaceHandler(c *gin.Context) { Type: model.ObjectTypeLayout_name[int32(record.Fields["layout"].GetNumberValue())], Id: record.Fields["id"].GetStringValue(), Name: record.Fields["name"].GetStringValue(), - IconEmoji: record.Fields["iconEmoji"].GetStringValue(), + IconEmoji: icon, ObjectType: objectTypeName, SpaceId: spaceId, // TODO: populate other fields @@ -355,10 +355,6 @@ func (a *ApiServer) getObjectsForSpaceHandler(c *gin.Context) { objects = append(objects, object) } - if len(objects) > limit { - objects = objects[:limit] - } - c.JSON(http.StatusOK, gin.H{"objects": objects}) } @@ -742,7 +738,7 @@ func (a *ApiServer) getObjectsHandler(c *gin.Context) { IncludeTime: true, EmptyPlacement: model.BlockContentDataviewSort_NotSpecified, }}, - Keys: []string{"id", "name", "type", "layout", "iconEmoji", "lastModifiedDate"}, + Keys: []string{"id", "name", "type", "layout", "iconEmoji", "iconImage", "lastModifiedDate"}, Offset: int32(offset), Limit: int32(limit), // TODO split limit between spaces @@ -750,6 +746,7 @@ func (a *ApiServer) getObjectsHandler(c *gin.Context) { // FullText: searchTerm, }) for _, record := range objectSearchResponse.Records { + icon := a.getIconFromEmojiOrImage(c, record.Fields["iconEmoji"].GetStringValue(), record.Fields["iconImage"].GetStringValue()) objectTypeName, err := a.resolveTypeToName(spaceId, record.Fields["type"].GetStringValue()) if err != nil { c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to resolve type to name."}) @@ -760,7 +757,7 @@ func (a *ApiServer) getObjectsHandler(c *gin.Context) { Type: model.ObjectTypeLayout_name[int32(record.Fields["layout"].GetNumberValue())], Id: record.Fields["id"].GetStringValue(), Name: record.Fields["name"].GetStringValue(), - IconEmoji: record.Fields["iconEmoji"].GetStringValue(), + IconEmoji: icon, ObjectType: objectTypeName, SpaceId: spaceId, // TODO: populate other fields @@ -783,6 +780,11 @@ func (a *ApiServer) getObjectsHandler(c *gin.Context) { return searchResults[i].Details[0].Details["lastModifiedDate"].(float64) > searchResults[j].Details[0].Details["lastModifiedDate"].(float64) }) + // TODO: solve global pagination vs per space pagination + if len(searchResults) > limit { + searchResults = searchResults[:limit] + } + c.JSON(http.StatusOK, gin.H{"objects": searchResults}) } diff --git a/cmd/api/helper.go b/cmd/api/helper.go index 4f1402b0f..1b8a7e79d 100644 --- a/cmd/api/helper.go +++ b/cmd/api/helper.go @@ -14,6 +14,7 @@ import ( "github.com/anyproto/anytype-heart/util/pbtypes" ) +// getGatewayURLForMedia returns the URL of file gateway for the media object with the given ID func (a *ApiServer) getGatewayURLForMedia(objectId string, isIcon bool) string { widthParam := "" if isIcon { @@ -22,6 +23,7 @@ func (a *ApiServer) getGatewayURLForMedia(objectId string, isIcon bool) string { return fmt.Sprintf("%s/image/%s%s", a.accountInfo.GatewayUrl, objectId, widthParam) } +// resolveTypeToName resolves the type ID to the name of the type, e.g. "ot-page" to "Page" or "bafyreigyb6l5szohs32ts26ku2j42yd65e6hqy2u3gtzgdwqv6hzftsetu" to "Custom Type" func (a *ApiServer) resolveTypeToName(spaceId string, typeId string) (string, *pb.RpcObjectSearchResponseError) { // Can't look up preinstalled types based on relation key, therefore need to use unique key relKey := bundle.RelationKeyId.String() @@ -52,6 +54,7 @@ func (a *ApiServer) resolveTypeToName(spaceId string, typeId string) (string, *p return resp.Records[0].Fields["name"].GetStringValue(), nil } +// getChatIdForSpace returns the chat ID for the space with the given ID func (a *ApiServer) getChatIdForSpace(c *gin.Context, spaceId string) string { workspace := a.getWorkspaceInfo(c, spaceId) @@ -73,6 +76,7 @@ func (a *ApiServer) getChatIdForSpace(c *gin.Context, spaceId string) string { return resp.ObjectView.Details[0].Details.Fields["chatId"].GetStringValue() } +// getWorkspaceInfo returns the workspace info for the space with the given ID func (a *ApiServer) getWorkspaceInfo(c *gin.Context, spaceId string) Space { workspaceResponse := a.mw.WorkspaceOpen(context.Background(), &pb.RpcWorkspaceOpenRequest{ SpaceId: spaceId, @@ -101,3 +105,16 @@ func (a *ApiServer) getWorkspaceInfo(c *gin.Context, spaceId string) Space { NetworkId: workspaceResponse.Info.NetworkId, } } + +// getIconFromEmojiOrImage returns the icon to use for the object, which can be either an emoji or an image url +func (a *ApiServer) getIconFromEmojiOrImage(c *gin.Context, iconEmoji string, iconImage string) string { + if iconEmoji != "" { + return iconEmoji + } + + if iconImage != "" { + return a.getGatewayURLForMedia(iconImage, true) + } + + return "" +} From 017dc75193bec60ea7fe4f16dd985ef0018f1e8d Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Thu, 12 Dec 2024 01:48:59 +0100 Subject: [PATCH 043/279] GO-4459 Use ObjectShow instead of ObjectOpen --- cmd/api/handlers.go | 12 ++++++------ cmd/api/helper.go | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/cmd/api/handlers.go b/cmd/api/handlers.go index ef4ca5192..839e41499 100644 --- a/cmd/api/handlers.go +++ b/cmd/api/handlers.go @@ -375,13 +375,13 @@ func (a *ApiServer) getObjectHandler(c *gin.Context) { spaceId := c.Param("space_id") objectId := c.Param("object_id") - resp := a.mw.ObjectOpen(context.Background(), &pb.RpcObjectOpenRequest{ + resp := a.mw.ObjectShow(context.Background(), &pb.RpcObjectShowRequest{ SpaceId: spaceId, ObjectId: objectId, }) - if resp.Error.Code != pb.RpcObjectOpenResponseError_NULL { - if resp.Error.Code == pb.RpcObjectOpenResponseError_NOT_FOUND { + if resp.Error.Code != pb.RpcObjectShowResponseError_NULL { + if resp.Error.Code == pb.RpcObjectShowResponseError_NOT_FOUND { c.JSON(http.StatusNotFound, gin.H{"message": "Object not found", "space_id": spaceId, "object_id": objectId}) return } @@ -569,7 +569,7 @@ func (a *ApiServer) getObjectTypeTemplatesHandler(c *gin.Context) { offset := c.GetInt("offset") limit := c.GetInt("limit") - // First, determine the type Id of "ot-template" in the space + // First, determine the type ID of "ot-template" in the space templateTypeIdResp := a.mw.ObjectSearch(context.Background(), &pb.RpcObjectSearchRequest{ SpaceId: spaceId, Filters: []*model.BlockContentDataviewFilter{ @@ -617,12 +617,12 @@ func (a *ApiServer) getObjectTypeTemplatesHandler(c *gin.Context) { // Finally, open each template and populate the response templates := make([]ObjectTemplate, 0, len(templateIds)) for _, templateId := range templateIds { - templateResp := a.mw.ObjectOpen(context.Background(), &pb.RpcObjectOpenRequest{ + templateResp := a.mw.ObjectShow(context.Background(), &pb.RpcObjectShowRequest{ SpaceId: spaceId, ObjectId: templateId, }) - if templateResp.Error.Code != pb.RpcObjectOpenResponseError_NULL { + if templateResp.Error.Code != pb.RpcObjectShowResponseError_NULL { c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to retrieve template."}) return } diff --git a/cmd/api/helper.go b/cmd/api/helper.go index 1b8a7e79d..0633ae148 100644 --- a/cmd/api/helper.go +++ b/cmd/api/helper.go @@ -58,12 +58,12 @@ func (a *ApiServer) resolveTypeToName(spaceId string, typeId string) (string, *p func (a *ApiServer) getChatIdForSpace(c *gin.Context, spaceId string) string { workspace := a.getWorkspaceInfo(c, spaceId) - resp := a.mw.ObjectOpen(context.Background(), &pb.RpcObjectOpenRequest{ + resp := a.mw.ObjectShow(context.Background(), &pb.RpcObjectShowRequest{ SpaceId: spaceId, ObjectId: workspace.WorkspaceObjectId, }) - if resp.Error.Code != pb.RpcObjectOpenResponseError_NULL { + if resp.Error.Code != pb.RpcObjectShowResponseError_NULL { c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to open workspace object."}) return "" } From 71c2589441fda43e4ca1602a846a5228dd6447aa Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Thu, 12 Dec 2024 02:00:33 +0100 Subject: [PATCH 044/279] GO-4459 Return 404 on empty results --- cmd/api/docs/docs.go | 6 +++++ cmd/api/docs/swagger.json | 6 +++++ cmd/api/docs/swagger.yaml | 4 +++ cmd/api/handlers.go | 56 +++++++++++++++++++++++++++++++++++---- 4 files changed, 67 insertions(+), 5 deletions(-) diff --git a/cmd/api/docs/docs.go b/cmd/api/docs/docs.go index f60232516..0a1227126 100644 --- a/cmd/api/docs/docs.go +++ b/cmd/api/docs/docs.go @@ -218,6 +218,12 @@ const docTemplate = `{ "$ref": "#/definitions/api.UnauthorizedError" } }, + "404": { + "description": "Resource not found", + "schema": { + "$ref": "#/definitions/api.NotFoundError" + } + }, "502": { "description": "Internal server error", "schema": { diff --git a/cmd/api/docs/swagger.json b/cmd/api/docs/swagger.json index a120e643f..75e6f0acd 100644 --- a/cmd/api/docs/swagger.json +++ b/cmd/api/docs/swagger.json @@ -212,6 +212,12 @@ "$ref": "#/definitions/api.UnauthorizedError" } }, + "404": { + "description": "Resource not found", + "schema": { + "$ref": "#/definitions/api.NotFoundError" + } + }, "502": { "description": "Internal server error", "schema": { diff --git a/cmd/api/docs/swagger.yaml b/cmd/api/docs/swagger.yaml index d12c6e3b2..4f1b4b95f 100644 --- a/cmd/api/docs/swagger.yaml +++ b/cmd/api/docs/swagger.yaml @@ -460,6 +460,10 @@ paths: description: Unauthorized schema: $ref: '#/definitions/api.UnauthorizedError' + "404": + description: Resource not found + schema: + $ref: '#/definitions/api.NotFoundError' "502": description: Internal server error schema: diff --git a/cmd/api/handlers.go b/cmd/api/handlers.go index 839e41499..cc1afa23f 100644 --- a/cmd/api/handlers.go +++ b/cmd/api/handlers.go @@ -94,6 +94,7 @@ func (a *ApiServer) authTokenHandler(c *gin.Context) { // @Param limit query int false "The number of items to return" default(100) // @Success 200 {object} map[string][]Space "List of spaces" // @Failure 403 {object} UnauthorizedError "Unauthorized" +// @Failure 404 {object} NotFoundError "Resource not found" // @Failure 502 {object} ServerError "Internal server error" // @Router /spaces [get] func (a *ApiServer) getSpacesHandler(c *gin.Context) { @@ -135,6 +136,11 @@ func (a *ApiServer) getSpacesHandler(c *gin.Context) { return } + if len(resp.Records) == 0 { + c.JSON(http.StatusNotFound, gin.H{"message": "No spaces found."}) + return + } + spaces := make([]Space, 0, len(resp.Records)) for _, record := range resp.Records { workspace := a.getWorkspaceInfo(c, record.Fields["targetSpaceId"].GetStringValue()) @@ -248,6 +254,11 @@ func (a *ApiServer) getSpaceMembersHandler(c *gin.Context) { return } + if len(resp.Records) == 0 { + c.JSON(http.StatusNotFound, gin.H{"message": "No members found."}) + return + } + members := make([]SpaceMember, 0, len(resp.Records)) for _, record := range resp.Records { icon := a.getIconFromEmojiOrImage(c, record.Fields["iconEmoji"].GetStringValue(), record.Fields["iconImage"].GetStringValue()) @@ -322,6 +333,11 @@ func (a *ApiServer) getObjectsForSpaceHandler(c *gin.Context) { return } + if len(resp.Records) == 0 { + c.JSON(http.StatusNotFound, gin.H{"message": "No objects found."}) + return + } + objects := make([]Object, 0, len(resp.Records)) for _, record := range resp.Records { icon := a.getIconFromEmojiOrImage(c, record.Fields["iconEmoji"].GetStringValue(), record.Fields["iconImage"].GetStringValue()) @@ -534,6 +550,11 @@ func (a *ApiServer) getObjectTypesHandler(c *gin.Context) { return } + if len(resp.Records) == 0 { + c.JSON(http.StatusNotFound, gin.H{"message": "No object types found."}) + return + } + objectTypes := make([]ObjectType, 0, len(resp.Records)) for _, record := range resp.Records { objectTypes = append(objectTypes, ObjectType{ @@ -586,6 +607,11 @@ func (a *ApiServer) getObjectTypeTemplatesHandler(c *gin.Context) { return } + if len(templateTypeIdResp.Records) == 0 { + c.JSON(http.StatusNotFound, gin.H{"message": "Template type not found."}) + return + } + templateTypeId := templateTypeIdResp.Records[0].Fields["id"].GetStringValue() // Then, search all objects of the template type and filter by the target object type @@ -607,6 +633,11 @@ func (a *ApiServer) getObjectTypeTemplatesHandler(c *gin.Context) { return } + if len(templateObjectsResp.Records) == 0 { + c.JSON(http.StatusNotFound, gin.H{"message": "No templates found."}) + return + } + templateIds := make([]string, 0) for _, record := range templateObjectsResp.Records { if record.Fields["targetObjectType"].GetStringValue() == typeId { @@ -659,7 +690,7 @@ func (a *ApiServer) getObjectsHandler(c *gin.Context) { limit := c.GetInt("limit") // First, call ObjectSearch for all objects of type spaceView - resp := a.mw.ObjectSearch(context.Background(), &pb.RpcObjectSearchRequest{ + spaceResp := a.mw.ObjectSearch(context.Background(), &pb.RpcObjectSearchRequest{ SpaceId: a.accountInfo.TechSpaceId, Filters: []*model.BlockContentDataviewFilter{ { @@ -680,11 +711,16 @@ func (a *ApiServer) getObjectsHandler(c *gin.Context) { }, }) - if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { + if spaceResp.Error.Code != pb.RpcObjectSearchResponseError_NULL { c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to retrieve list of spaces."}) return } + if len(spaceResp.Records) == 0 { + c.JSON(http.StatusNotFound, gin.H{"message": "No spaces found."}) + return + } + // Then, get objects from each space that match the search parameters var filters = []*model.BlockContentDataviewFilter{ { @@ -726,9 +762,9 @@ func (a *ApiServer) getObjectsHandler(c *gin.Context) { } searchResults := make([]Object, 0) - for _, spaceRecord := range resp.Records { + for _, spaceRecord := range spaceResp.Records { spaceId := spaceRecord.Fields["targetSpaceId"].GetStringValue() - objectSearchResponse := a.mw.ObjectSearch(context.Background(), &pb.RpcObjectSearchRequest{ + objectResp := a.mw.ObjectSearch(context.Background(), &pb.RpcObjectSearchRequest{ SpaceId: spaceId, Filters: filters, Sorts: []*model.BlockContentDataviewSort{{ @@ -745,7 +781,17 @@ func (a *ApiServer) getObjectsHandler(c *gin.Context) { // Limit: paginationLimitPerSpace, // FullText: searchTerm, }) - for _, record := range objectSearchResponse.Records { + + if objectResp.Error.Code != pb.RpcObjectSearchResponseError_NULL { + c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to retrieve list of objects."}) + return + } + + if len(objectResp.Records) == 0 { + continue + } + + for _, record := range objectResp.Records { icon := a.getIconFromEmojiOrImage(c, record.Fields["iconEmoji"].GetStringValue(), record.Fields["iconImage"].GetStringValue()) objectTypeName, err := a.resolveTypeToName(spaceId, record.Fields["type"].GetStringValue()) if err != nil { From 3c8160e480856e2ab61d2bd60c3bfcd5e5900e6b Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Thu, 12 Dec 2024 02:05:08 +0100 Subject: [PATCH 045/279] GO-4459 Always fetch accountInfo to fix inconsistencies after logout --- cmd/api/main.go | 2 -- cmd/api/middleware.go | 30 ++++++++++++++---------------- 2 files changed, 14 insertions(+), 18 deletions(-) diff --git a/cmd/api/main.go b/cmd/api/main.go index f36081873..381064c91 100644 --- a/cmd/api/main.go +++ b/cmd/api/main.go @@ -6,7 +6,6 @@ import ( "net/http" "time" - "github.com/anyproto/any-sync/app" "github.com/gin-gonic/gin" swaggerFiles "github.com/swaggo/files" ginSwagger "github.com/swaggo/gin-swagger" @@ -31,7 +30,6 @@ type ApiServer struct { server *http.Server // init after app start - app *app.App accountInfo *model.AccountInfo } diff --git a/cmd/api/middleware.go b/cmd/api/middleware.go index 23f1b320f..b4fa0aa7f 100644 --- a/cmd/api/middleware.go +++ b/cmd/api/middleware.go @@ -13,23 +13,21 @@ import ( // initAccountInfo retrieves the account information from the account service func (a *ApiServer) initAccountInfo() gin.HandlerFunc { return func(c *gin.Context) { - if a.app == nil && a.accountInfo == nil { - app := a.mwInternal.GetApp() - if app == nil { - c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"error": "failed to get app instance"}) - return - } - - accInfo, err := app.Component(account.CName).(account.Service).GetInfo(context.Background()) - if err != nil { - c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"error": fmt.Sprintf("failed to get account info: %v", err)}) - return - } - - a.app = app - a.accountInfo = accInfo - c.Next() + // TODO: consider not fetching account info on every request; currently used to avoid inconsistencies on logout/login + app := a.mwInternal.GetApp() + if app == nil { + c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"error": "failed to get app instance"}) + return } + + accInfo, err := app.Component(account.CName).(account.Service).GetInfo(context.Background()) + if err != nil { + c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"error": fmt.Sprintf("failed to get account info: %v", err)}) + return + } + + a.accountInfo = accInfo + c.Next() } } From 770c11498dfbdf828db4125d41cac6c2f01d53f9 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Thu, 12 Dec 2024 02:50:45 +0100 Subject: [PATCH 046/279] GO-4459 Standardize error handling in helper functions --- cmd/api/handlers.go | 52 +++++++++++++++++++++++++++------------------ cmd/api/helper.go | 34 ++++++++++++++--------------- 2 files changed, 47 insertions(+), 39 deletions(-) diff --git a/cmd/api/handlers.go b/cmd/api/handlers.go index cc1afa23f..7ae6b97d1 100644 --- a/cmd/api/handlers.go +++ b/cmd/api/handlers.go @@ -143,15 +143,15 @@ func (a *ApiServer) getSpacesHandler(c *gin.Context) { spaces := make([]Space, 0, len(resp.Records)) for _, record := range resp.Records { - workspace := a.getWorkspaceInfo(c, record.Fields["targetSpaceId"].GetStringValue()) - workspace.Name = record.Fields["name"].GetStringValue() - - // Set space icon to gateway URL - iconImageId := record.Fields["iconImage"].GetStringValue() - if iconImageId != "" { - workspace.Icon = a.getGatewayURLForMedia(iconImageId, true) + workspace, statusCode, errorMessage := a.getWorkspaceInfo(record.Fields["targetSpaceId"].GetStringValue()) + if statusCode != http.StatusOK { + c.JSON(statusCode, gin.H{"message": errorMessage}) + return } + workspace.Name = record.Fields["name"].GetStringValue() + workspace.Icon = a.getIconFromEmojiOrImage(record.Fields["iconEmoji"].GetStringValue(), record.Fields["iconImage"].GetStringValue()) + spaces = append(spaces, workspace) } @@ -261,7 +261,7 @@ func (a *ApiServer) getSpaceMembersHandler(c *gin.Context) { members := make([]SpaceMember, 0, len(resp.Records)) for _, record := range resp.Records { - icon := a.getIconFromEmojiOrImage(c, record.Fields["iconEmoji"].GetStringValue(), record.Fields["iconImage"].GetStringValue()) + icon := a.getIconFromEmojiOrImage(record.Fields["iconEmoji"].GetStringValue(), record.Fields["iconImage"].GetStringValue()) member := SpaceMember{ Type: "space_member", @@ -340,10 +340,10 @@ func (a *ApiServer) getObjectsForSpaceHandler(c *gin.Context) { objects := make([]Object, 0, len(resp.Records)) for _, record := range resp.Records { - icon := a.getIconFromEmojiOrImage(c, record.Fields["iconEmoji"].GetStringValue(), record.Fields["iconImage"].GetStringValue()) - objectTypeName, err := a.resolveTypeToName(spaceId, record.Fields["type"].GetStringValue()) - if err != nil { - c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to resolve object type name."}) + icon := a.getIconFromEmojiOrImage(record.Fields["iconEmoji"].GetStringValue(), record.Fields["iconImage"].GetStringValue()) + objectTypeName, statusCode, errorMessage := a.resolveTypeToName(spaceId, record.Fields["type"].GetStringValue()) + if statusCode != http.StatusOK { + c.JSON(statusCode, gin.H{"message": errorMessage}) return } @@ -405,9 +405,9 @@ func (a *ApiServer) getObjectHandler(c *gin.Context) { return } - objectTypeName, err := a.resolveTypeToName(spaceId, resp.ObjectView.Details[0].Details.Fields["type"].GetStringValue()) - if err != nil { - c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to resolve object type name."}) + objectTypeName, statusCode, errorMessage := a.resolveTypeToName(spaceId, resp.ObjectView.Details[0].Details.Fields["type"].GetStringValue()) + if statusCode != http.StatusOK { + c.JSON(statusCode, gin.H{"message": errorMessage}) return } @@ -792,10 +792,10 @@ func (a *ApiServer) getObjectsHandler(c *gin.Context) { } for _, record := range objectResp.Records { - icon := a.getIconFromEmojiOrImage(c, record.Fields["iconEmoji"].GetStringValue(), record.Fields["iconImage"].GetStringValue()) - objectTypeName, err := a.resolveTypeToName(spaceId, record.Fields["type"].GetStringValue()) - if err != nil { - c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to resolve type to name."}) + icon := a.getIconFromEmojiOrImage(record.Fields["iconEmoji"].GetStringValue(), record.Fields["iconImage"].GetStringValue()) + objectTypeName, statusCode, errorMessage := a.resolveTypeToName(spaceId, record.Fields["type"].GetStringValue()) + if statusCode != http.StatusOK { + c.JSON(statusCode, gin.H{"message": errorMessage}) return } @@ -848,11 +848,16 @@ func (a *ApiServer) getObjectsHandler(c *gin.Context) { // @Router /v1/spaces/{space_id}/chat/messages [get] func (a *ApiServer) getChatMessagesHandler(c *gin.Context) { spaceId := c.Param("space_id") - chatId := a.getChatIdForSpace(c, spaceId) // TODO: implement offset // offset := c.GetInt("offset") limit := c.GetInt("limit") + chatId, statusCode, errorMessage := a.getChatIdForSpace(spaceId) + if statusCode != http.StatusOK { + c.JSON(statusCode, gin.H{"message": errorMessage}) + return + } + lastMessages := a.mw.ChatSubscribeLastMessages(context.Background(), &pb.RpcChatSubscribeLastMessagesRequest{ ChatObjectId: chatId, Limit: int32(limit), @@ -944,7 +949,12 @@ func (a *ApiServer) addChatMessageHandler(c *gin.Context) { return } - chatId := a.getChatIdForSpace(c, spaceId) + chatId, statusCode, errorMessage := a.getChatIdForSpace(spaceId) + if statusCode != http.StatusOK { + c.JSON(statusCode, gin.H{"message": errorMessage}) + return + } + resp := a.mw.ChatAddMessage(context.Background(), &pb.RpcChatAddMessageRequest{ ChatObjectId: chatId, Message: &model.ChatMessage{ diff --git a/cmd/api/helper.go b/cmd/api/helper.go index 0633ae148..7bdbd0127 100644 --- a/cmd/api/helper.go +++ b/cmd/api/helper.go @@ -6,8 +6,6 @@ import ( "net/http" "strings" - "github.com/gin-gonic/gin" - "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/pkg/lib/bundle" "github.com/anyproto/anytype-heart/pkg/lib/pb/model" @@ -24,7 +22,7 @@ func (a *ApiServer) getGatewayURLForMedia(objectId string, isIcon bool) string { } // resolveTypeToName resolves the type ID to the name of the type, e.g. "ot-page" to "Page" or "bafyreigyb6l5szohs32ts26ku2j42yd65e6hqy2u3gtzgdwqv6hzftsetu" to "Custom Type" -func (a *ApiServer) resolveTypeToName(spaceId string, typeId string) (string, *pb.RpcObjectSearchResponseError) { +func (a *ApiServer) resolveTypeToName(spaceId string, typeId string) (typeName string, statusCode int, errorMessage string) { // Can't look up preinstalled types based on relation key, therefore need to use unique key relKey := bundle.RelationKeyId.String() if strings.Contains(typeId, "ot-") { @@ -44,19 +42,22 @@ func (a *ApiServer) resolveTypeToName(spaceId string, typeId string) (string, *p }) if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { - return "", resp.Error + return "", http.StatusInternalServerError, "Failed to search for type." } if len(resp.Records) == 0 { - return "", &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_BAD_INPUT, Description: "Type not found"} + return "", http.StatusNotFound, "Type not found." } - return resp.Records[0].Fields["name"].GetStringValue(), nil + return resp.Records[0].Fields["name"].GetStringValue(), http.StatusOK, "" } // getChatIdForSpace returns the chat ID for the space with the given ID -func (a *ApiServer) getChatIdForSpace(c *gin.Context, spaceId string) string { - workspace := a.getWorkspaceInfo(c, spaceId) +func (a *ApiServer) getChatIdForSpace(spaceId string) (chatId string, statusCode int, errorMessage string) { + workspace, statusCode, errorMessage := a.getWorkspaceInfo(spaceId) + if statusCode != http.StatusOK { + return "", statusCode, errorMessage + } resp := a.mw.ObjectShow(context.Background(), &pb.RpcObjectShowRequest{ SpaceId: spaceId, @@ -64,28 +65,25 @@ func (a *ApiServer) getChatIdForSpace(c *gin.Context, spaceId string) string { }) if resp.Error.Code != pb.RpcObjectShowResponseError_NULL { - c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to open workspace object."}) - return "" + return "", http.StatusInternalServerError, "Failed to open workspace object." } if !resp.ObjectView.Details[0].Details.Fields["hasChat"].GetBoolValue() { - c.JSON(http.StatusNotFound, gin.H{"message": "Chat not found"}) - return "" + return "", http.StatusNotFound, "Chat not found." } - return resp.ObjectView.Details[0].Details.Fields["chatId"].GetStringValue() + return resp.ObjectView.Details[0].Details.Fields["chatId"].GetStringValue(), http.StatusOK, "" } // getWorkspaceInfo returns the workspace info for the space with the given ID -func (a *ApiServer) getWorkspaceInfo(c *gin.Context, spaceId string) Space { +func (a *ApiServer) getWorkspaceInfo(spaceId string) (space Space, statusCode int, errorMessage string) { workspaceResponse := a.mw.WorkspaceOpen(context.Background(), &pb.RpcWorkspaceOpenRequest{ SpaceId: spaceId, WithChat: true, }) if workspaceResponse.Error.Code != pb.RpcWorkspaceOpenResponseError_NULL { - c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to open workspace."}) - return Space{} + return Space{}, http.StatusInternalServerError, "Failed to open workspace." } return Space{ @@ -103,11 +101,11 @@ func (a *ApiServer) getWorkspaceInfo(c *gin.Context, spaceId string) Space { TechSpaceId: workspaceResponse.Info.TechSpaceId, Timezone: workspaceResponse.Info.TimeZone, NetworkId: workspaceResponse.Info.NetworkId, - } + }, http.StatusOK, "" } // getIconFromEmojiOrImage returns the icon to use for the object, which can be either an emoji or an image url -func (a *ApiServer) getIconFromEmojiOrImage(c *gin.Context, iconEmoji string, iconImage string) string { +func (a *ApiServer) getIconFromEmojiOrImage(iconEmoji string, iconImage string) string { if iconEmoji != "" { return iconEmoji } From 0a0aadda138bc146dc34271b179ad4157418e195 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Thu, 12 Dec 2024 21:24:01 +0100 Subject: [PATCH 047/279] GO-4459 Rename IconEmoji to Icon --- cmd/api/docs/docs.go | 11 ++++------- cmd/api/docs/swagger.json | 11 ++++------- cmd/api/docs/swagger.yaml | 10 ++++------ cmd/api/handlers.go | 22 +++++++++++----------- cmd/api/schemas.go | 28 +++++++++++----------------- 5 files changed, 34 insertions(+), 48 deletions(-) diff --git a/cmd/api/docs/docs.go b/cmd/api/docs/docs.go index 0a1227126..6dc42526c 100644 --- a/cmd/api/docs/docs.go +++ b/cmd/api/docs/docs.go @@ -1200,7 +1200,7 @@ const docTemplate = `{ "$ref": "#/definitions/api.Detail" } }, - "icon_emoji": { + "icon": { "type": "string", "example": "📄" }, @@ -1232,7 +1232,7 @@ const docTemplate = `{ "api.ObjectTemplate": { "type": "object", "properties": { - "icon_emoji": { + "icon": { "type": "string", "example": "📄" }, @@ -1253,7 +1253,7 @@ const docTemplate = `{ "api.ObjectType": { "type": "object", "properties": { - "icon_emoji": { + "icon": { "type": "string", "example": "📄" }, @@ -1411,10 +1411,7 @@ const docTemplate = `{ "color": { "type": "string" }, - "icon_emoji": { - "type": "string" - }, - "icon_image": { + "icon": { "type": "string" }, "style": { diff --git a/cmd/api/docs/swagger.json b/cmd/api/docs/swagger.json index 75e6f0acd..8b5f4a627 100644 --- a/cmd/api/docs/swagger.json +++ b/cmd/api/docs/swagger.json @@ -1194,7 +1194,7 @@ "$ref": "#/definitions/api.Detail" } }, - "icon_emoji": { + "icon": { "type": "string", "example": "📄" }, @@ -1226,7 +1226,7 @@ "api.ObjectTemplate": { "type": "object", "properties": { - "icon_emoji": { + "icon": { "type": "string", "example": "📄" }, @@ -1247,7 +1247,7 @@ "api.ObjectType": { "type": "object", "properties": { - "icon_emoji": { + "icon": { "type": "string", "example": "📄" }, @@ -1405,10 +1405,7 @@ "color": { "type": "string" }, - "icon_emoji": { - "type": "string" - }, - "icon_image": { + "icon": { "type": "string" }, "style": { diff --git a/cmd/api/docs/swagger.yaml b/cmd/api/docs/swagger.yaml index 4f1b4b95f..846e14d69 100644 --- a/cmd/api/docs/swagger.yaml +++ b/cmd/api/docs/swagger.yaml @@ -138,7 +138,7 @@ definitions: items: $ref: '#/definitions/api.Detail' type: array - icon_emoji: + icon: example: "\U0001F4C4" type: string id: @@ -161,7 +161,7 @@ definitions: type: object api.ObjectTemplate: properties: - icon_emoji: + icon: example: "\U0001F4C4" type: string id: @@ -176,7 +176,7 @@ definitions: type: object api.ObjectType: properties: - icon_emoji: + icon: example: "\U0001F4C4" type: string id: @@ -289,9 +289,7 @@ definitions: type: boolean color: type: string - icon_emoji: - type: string - icon_image: + icon: type: string style: type: string diff --git a/cmd/api/handlers.go b/cmd/api/handlers.go index 7ae6b97d1..7e4821444 100644 --- a/cmd/api/handlers.go +++ b/cmd/api/handlers.go @@ -22,7 +22,7 @@ type CreateSpaceRequest struct { type CreateObjectRequest struct { Name string `json:"name"` - IconEmoji string `json:"icon_emoji"` + Icon string `json:"icon"` TemplateId string `json:"template_id"` ObjectTypeUniqueKey string `json:"object_type_unique_key"` WithChat bool `json:"with_chat"` @@ -352,7 +352,7 @@ func (a *ApiServer) getObjectsForSpaceHandler(c *gin.Context) { Type: model.ObjectTypeLayout_name[int32(record.Fields["layout"].GetNumberValue())], Id: record.Fields["id"].GetStringValue(), Name: record.Fields["name"].GetStringValue(), - IconEmoji: icon, + Icon: icon, ObjectType: objectTypeName, SpaceId: spaceId, // TODO: populate other fields @@ -415,7 +415,7 @@ func (a *ApiServer) getObjectHandler(c *gin.Context) { Type: "object", Id: objectId, Name: resp.ObjectView.Details[0].Details.Fields["name"].GetStringValue(), - IconEmoji: resp.ObjectView.Details[0].Details.Fields["iconEmoji"].GetStringValue(), + Icon: resp.ObjectView.Details[0].Details.Fields["iconEmoji"].GetStringValue(), ObjectType: objectTypeName, RootId: resp.ObjectView.RootId, // TODO: populate other fields @@ -451,7 +451,7 @@ func (a *ApiServer) createObjectHandler(c *gin.Context) { Details: &types.Struct{ Fields: map[string]*types.Value{ "name": {Kind: &types.Value_StringValue{StringValue: request.Name}}, - "iconEmoji": {Kind: &types.Value_StringValue{StringValue: request.IconEmoji}}, + "iconEmoji": {Kind: &types.Value_StringValue{StringValue: request.Icon}}, }, }, TemplateId: request.TemplateId, @@ -469,7 +469,7 @@ func (a *ApiServer) createObjectHandler(c *gin.Context) { Type: "object", Id: resp.ObjectId, Name: resp.Details.Fields["name"].GetStringValue(), - IconEmoji: resp.Details.Fields["iconEmoji"].GetStringValue(), + Icon: resp.Details.Fields["iconEmoji"].GetStringValue(), ObjectType: request.ObjectTypeUniqueKey, SpaceId: resp.Details.Fields["spaceId"].GetStringValue(), // TODO populate other fields @@ -562,7 +562,7 @@ func (a *ApiServer) getObjectTypesHandler(c *gin.Context) { Id: record.Fields["id"].GetStringValue(), UniqueKey: record.Fields["uniqueKey"].GetStringValue(), Name: record.Fields["name"].GetStringValue(), - IconEmoji: record.Fields["iconEmoji"].GetStringValue(), + Icon: record.Fields["iconEmoji"].GetStringValue(), }) } @@ -659,10 +659,10 @@ func (a *ApiServer) getObjectTypeTemplatesHandler(c *gin.Context) { } templates = append(templates, ObjectTemplate{ - Type: "object_template", - Id: templateId, - Name: templateResp.ObjectView.Details[0].Details.Fields["name"].GetStringValue(), - IconEmoji: templateResp.ObjectView.Details[0].Details.Fields["iconEmoji"].GetStringValue(), + Type: "object_template", + Id: templateId, + Name: templateResp.ObjectView.Details[0].Details.Fields["name"].GetStringValue(), + Icon: templateResp.ObjectView.Details[0].Details.Fields["iconEmoji"].GetStringValue(), }) } @@ -803,7 +803,7 @@ func (a *ApiServer) getObjectsHandler(c *gin.Context) { Type: model.ObjectTypeLayout_name[int32(record.Fields["layout"].GetNumberValue())], Id: record.Fields["id"].GetStringValue(), Name: record.Fields["name"].GetStringValue(), - IconEmoji: icon, + Icon: icon, ObjectType: objectTypeName, SpaceId: spaceId, // TODO: populate other fields diff --git a/cmd/api/schemas.go b/cmd/api/schemas.go index e83a6cbe5..9ad0af17f 100644 --- a/cmd/api/schemas.go +++ b/cmd/api/schemas.go @@ -33,7 +33,7 @@ type Object struct { Type string `json:"type" example:"object"` Id string `json:"id" example:"bafyreie6n5l5nkbjal37su54cha4coy7qzuhrnajluzv5qd5jvtsrxkequ"` Name string `json:"name" example:"Object Name"` - IconEmoji string `json:"icon_emoji" example:"📄"` + Icon string `json:"icon" example:"📄"` ObjectType string `json:"object_type" example:"Page"` SpaceId string `json:"space_id" example:"bafyreigyfkt6rbv24sbv5aq2hko3bhmv5xxlf22b4bypdu6j7hnphm3psq.23me69r569oi1"` RootId string `json:"root_id"` @@ -57,12 +57,11 @@ type Layout struct { } type Text struct { - Text string `json:"text"` - Style string `json:"style"` - Checked bool `json:"checked"` - Color string `json:"color"` - IconEmoji string `json:"icon_emoji"` - IconImage string `json:"icon_image"` + Text string `json:"text"` + Style string `json:"style"` + Checked bool `json:"checked"` + Color string `json:"color"` + Icon string `json:"icon"` } type File struct { @@ -82,24 +81,19 @@ type Detail struct { Details map[string]interface{} `json:"details"` } -type RelationLink struct { - Key string `json:"key"` - Format string `json:"format"` -} - type ObjectType struct { Type string `json:"type" example:"object_type"` Id string `json:"id" example:"bafyreigyb6l5szohs32ts26ku2j42yd65e6hqy2u3gtzgdwqv6hzftsetu"` UniqueKey string `json:"unique_key" example:"ot-page"` Name string `json:"name" example:"Page"` - IconEmoji string `json:"icon_emoji" example:"📄"` + Icon string `json:"icon" example:"📄"` } type ObjectTemplate struct { - Type string `json:"type" example:"object_template"` - Id string `json:"id" example:"bafyreictrp3obmnf6dwejy5o4p7bderaaia4bdg2psxbfzf44yya5uutge"` - Name string `json:"name" example:"Object Template Name"` - IconEmoji string `json:"icon_emoji" example:"📄"` + Type string `json:"type" example:"object_template"` + Id string `json:"id" example:"bafyreictrp3obmnf6dwejy5o4p7bderaaia4bdg2psxbfzf44yya5uutge"` + Name string `json:"name" example:"Object Template Name"` + Icon string `json:"icon" example:"📄"` } type ChatMessage struct { From 45207287046ef7a4fdb5a4482901d53412f9d78e Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Fri, 13 Dec 2024 11:01:27 +0100 Subject: [PATCH 048/279] GO-4146 WIP spacestorage initial --- core/block/object/idresolver/resolver.go | 9 +- core/block/source/service.go | 4 +- core/indexer/indexer.go | 2 +- core/indexer/spaceindexer.go | 23 +- go.mod | 4 +- go.sum | 5 + pkg/lib/localstore/objectstore/service.go | 7 + pkg/lib/localstore/objectstore/space.go | 13 + .../storage/anystorage/clientstorage.go | 20 ++ .../storage/anystorage/storageservice.go | 292 ++++++++++++++++++ space/spacecore/storage/storage.go | 5 - 11 files changed, 356 insertions(+), 28 deletions(-) create mode 100644 space/spacecore/storage/anystorage/clientstorage.go create mode 100644 space/spacecore/storage/anystorage/storageservice.go diff --git a/core/block/object/idresolver/resolver.go b/core/block/object/idresolver/resolver.go index 544b455c3..ec007155e 100644 --- a/core/block/object/idresolver/resolver.go +++ b/core/block/object/idresolver/resolver.go @@ -4,9 +4,8 @@ import ( "sync" "github.com/anyproto/any-sync/app" - "github.com/anyproto/any-sync/commonspace/spacestorage" - "github.com/anyproto/anytype-heart/space/spacecore/storage" + "github.com/anyproto/anytype-heart/pkg/lib/localstore/objectstore" ) const CName = "block.object.resolver" @@ -21,12 +20,12 @@ func New() Resolver { } type resolver struct { - storage storage.ClientStorage + objectStore objectstore.ObjectStore sync.Mutex } func (r *resolver) Init(a *app.App) (err error) { - r.storage = a.MustComponent(spacestorage.CName).(storage.ClientStorage) + r.objectStore = a.MustComponent(objectstore.CName).(objectstore.ObjectStore) return } @@ -35,5 +34,5 @@ func (r *resolver) Name() (name string) { } func (r *resolver) ResolveSpaceID(objectID string) (string, error) { - return r.storage.GetSpaceID(objectID) + return r.objectStore.GetSpaceId(objectID) } diff --git a/core/block/source/service.go b/core/block/source/service.go index ae58ffc74..acce56c5e 100644 --- a/core/block/source/service.go +++ b/core/block/source/service.go @@ -125,7 +125,7 @@ func (s *service) NewSource(ctx context.Context, space Space, id string, buildOp if err != nil { return nil, err } - err = s.storageService.BindSpaceID(src.SpaceID(), src.Id()) + err = s.objectStore.BindSpaceId(src.SpaceID(), src.Id()) if err != nil { return nil, fmt.Errorf("store space id for object: %w", err) } @@ -241,7 +241,7 @@ func (s *service) RegisterStaticSource(src Source) error { s.mu.Lock() defer s.mu.Unlock() s.staticIds[src.Id()] = src - err := s.storageService.BindSpaceID(src.SpaceID(), src.Id()) + err := s.objectStore.BindSpaceId(src.SpaceID(), src.Id()) if err != nil { return fmt.Errorf("store space id for object: %w", err) } diff --git a/core/indexer/indexer.go b/core/indexer/indexer.go index 66dc98797..08a36d791 100644 --- a/core/indexer/indexer.go +++ b/core/indexer/indexer.go @@ -140,7 +140,7 @@ func (i *indexer) Index(info smartblock.DocInfo, options ...smartblock.IndexOpti i.lock.Lock() spaceInd, ok := i.spaceIndexers[info.Space.Id()] if !ok { - spaceInd = newSpaceIndexer(i.runCtx, i.store.SpaceIndex(info.Space.Id()), i.store, i.storageService) + spaceInd = newSpaceIndexer(i.runCtx, i.store.SpaceIndex(info.Space.Id()), i.store) i.spaceIndexers[info.Space.Id()] = spaceInd } i.lock.Unlock() diff --git a/core/indexer/spaceindexer.go b/core/indexer/spaceindexer.go index 69f1ad99f..0de7554e5 100644 --- a/core/indexer/spaceindexer.go +++ b/core/indexer/spaceindexer.go @@ -15,24 +15,21 @@ import ( "github.com/anyproto/anytype-heart/metrics" "github.com/anyproto/anytype-heart/pkg/lib/localstore/objectstore" "github.com/anyproto/anytype-heart/pkg/lib/localstore/objectstore/spaceindex" - "github.com/anyproto/anytype-heart/space/spacecore/storage" ) type spaceIndexer struct { - runCtx context.Context - spaceIndex spaceindex.Store - objectStore objectstore.ObjectStore - storageService storage.ClientStorage - batcher *mb.MB[indexTask] + runCtx context.Context + spaceIndex spaceindex.Store + objectStore objectstore.ObjectStore + batcher *mb.MB[indexTask] } -func newSpaceIndexer(runCtx context.Context, spaceIndex spaceindex.Store, objectStore objectstore.ObjectStore, storageService storage.ClientStorage) *spaceIndexer { +func newSpaceIndexer(runCtx context.Context, spaceIndex spaceindex.Store, objectStore objectstore.ObjectStore) *spaceIndexer { ind := &spaceIndexer{ - runCtx: runCtx, - spaceIndex: spaceIndex, - objectStore: objectStore, - storageService: storageService, - batcher: mb.New[indexTask](100), + runCtx: runCtx, + spaceIndex: spaceIndex, + objectStore: objectStore, + batcher: mb.New[indexTask](100), } go ind.indexBatchLoop() return ind @@ -125,7 +122,7 @@ func (i *spaceIndexer) index(ctx context.Context, info smartblock.DocInfo, optio for _, o := range options { o(opts) } - err := i.storageService.BindSpaceID(info.Space.Id(), info.Id) + err := i.objectStore.BindSpaceId(info.Space.Id(), info.Id) if err != nil { log.Error("failed to bind space id", zap.Error(err), zap.String("id", info.Id)) return err diff --git a/go.mod b/go.mod index 81b077a81..ba70da3f5 100644 --- a/go.mod +++ b/go.mod @@ -7,8 +7,8 @@ require ( github.com/PuerkitoBio/goquery v1.10.0 github.com/VividCortex/ewma v1.2.0 github.com/adrium/goheif v0.0.0-20230113233934-ca402e77a786 - github.com/anyproto/any-store v0.1.3 - github.com/anyproto/any-sync v0.5.22 + github.com/anyproto/any-store v0.1.4-0.20241211133419-d0c2df992842 + github.com/anyproto/any-sync v0.5.18-0.20241211215636-c4d03e0630a6 github.com/anyproto/go-chash v0.1.0 github.com/anyproto/go-naturaldate/v2 v2.0.2-0.20230524105841-9829cfd13438 github.com/anyproto/go-slip10 v1.0.0 diff --git a/go.sum b/go.sum index 8ed45ef63..b43081c56 100644 --- a/go.sum +++ b/go.sum @@ -78,6 +78,11 @@ github.com/andybalholm/cascadia v1.3.2 h1:3Xi6Dw5lHF15JtdcmAHD3i1+T8plmv7BQ/nsVi github.com/andybalholm/cascadia v1.3.2/go.mod h1:7gtRlve5FxPPgIgX36uWBX58OdBsSS6lUvCFb+h7KvU= github.com/anyproto/any-store v0.1.3 h1:onWLP8tuWiUvYOyV3DoRODscTxAiGEjwQPm+NMxeq3M= github.com/anyproto/any-store v0.1.3/go.mod h1:6/0OUKgSMWF/vYGoGYzQOl2CII5OdiuXbQlGDXYcNYc= +github.com/anyproto/any-store v0.1.4-0.20241211133419-d0c2df992842/go.mod h1:6/0OUKgSMWF/vYGoGYzQOl2CII5OdiuXbQlGDXYcNYc= +github.com/anyproto/any-sync v0.5.18-0.20241211182813-65dbccbc127f h1:oN2wQvROq9pSKHQgeZTKhfZEDqiEZqyF+Ke9N7banXw= +github.com/anyproto/any-sync v0.5.18-0.20241211182813-65dbccbc127f/go.mod h1:PaX1E0ryKt9TtKkVRBmst4k15PSuWVFbL079N2Z957U= +github.com/anyproto/any-sync v0.5.18-0.20241211215636-c4d03e0630a6 h1:rF97YcmaU6jjSsq+0k6qsmLlU1KNC5d8A03K/Hz0gww= +github.com/anyproto/any-sync v0.5.18-0.20241211215636-c4d03e0630a6/go.mod h1:PaX1E0ryKt9TtKkVRBmst4k15PSuWVFbL079N2Z957U= github.com/anyproto/any-sync v0.5.22 h1:mfAVfmcP8o/9ZIGS59YECiVCi9UZI9u3W0hK+vH7/z8= github.com/anyproto/any-sync v0.5.22/go.mod h1:ANfWnDHP9t4RHelUhX99YmaDvmzcaeIwR9grkKIkfeM= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580 h1:Ba80IlCCxkZ9H1GF+7vFu/TSpPvbpDCxXJ5ogc4euYc= diff --git a/pkg/lib/localstore/objectstore/service.go b/pkg/lib/localstore/objectstore/service.go index d8f9b0bda..62697e292 100644 --- a/pkg/lib/localstore/objectstore/service.go +++ b/pkg/lib/localstore/objectstore/service.go @@ -52,6 +52,7 @@ type ObjectStore interface { GetCrdtDb(spaceId string) anystore.DB SpaceNameGetter + SpaceIdBinder CrossSpace } @@ -97,6 +98,7 @@ type dsObjectStore struct { virtualSpaces anystore.Collection system anystore.Collection fulltextQueue anystore.Collection + bindId anystore.Collection arenaPool *anyenc.ArenaPool @@ -220,6 +222,10 @@ func (s *dsObjectStore) openDatabase(ctx context.Context, path string) error { if err != nil { return errors.Join(store.Close(), fmt.Errorf("open virtualSpaces collection: %w", err)) } + bindId, err := store.Collection(ctx, "bindId") + if err != nil { + return errors.Join(store.Close(), fmt.Errorf("open bindId collection: %w", err)) + } s.anyStore = store s.anyStoreLockRemove = lockRemove @@ -228,6 +234,7 @@ func (s *dsObjectStore) openDatabase(ctx context.Context, path string) error { s.system = system s.indexerChecksums = indexerChecksums s.virtualSpaces = virtualSpaces + s.bindId = bindId return nil } diff --git a/pkg/lib/localstore/objectstore/space.go b/pkg/lib/localstore/objectstore/space.go index f48cecdc2..f996bb005 100644 --- a/pkg/lib/localstore/objectstore/space.go +++ b/pkg/lib/localstore/objectstore/space.go @@ -11,6 +11,11 @@ type SpaceNameGetter interface { GetSpaceName(spaceId string) string } +type SpaceIdBinder interface { + BindSpaceId(spaceId, objectId string) error + GetSpaceId(objectId string) (spaceId string, err error) +} + func (d *dsObjectStore) GetSpaceName(spaceId string) string { records, err := d.SpaceIndex(d.techSpaceId).Query(database.Query{ Filters: []*model.BlockContentDataviewFilter{ @@ -35,3 +40,11 @@ func (d *dsObjectStore) GetSpaceName(spaceId string) string { } return spaceName } + +func (d *dsObjectStore) BindSpaceId(spaceId, objectId string) error { + panic("implement me") +} + +func (d *dsObjectStore) GetSpaceId(objectId string) (spaceId string, err error) { + panic("implement me") +} diff --git a/space/spacecore/storage/anystorage/clientstorage.go b/space/spacecore/storage/anystorage/clientstorage.go new file mode 100644 index 000000000..0e246fdfe --- /dev/null +++ b/space/spacecore/storage/anystorage/clientstorage.go @@ -0,0 +1,20 @@ +package anystorage + +import ( + "context" + + "github.com/anyproto/any-sync/commonspace/spacestorage" +) + +// TODO: add mark space created etc +// add tree root + +type clientStorage struct { + spacestorage.SpaceStorage + cont *storageContainer +} + +func (r *clientStorage) Close(ctx context.Context) (err error) { + defer r.cont.Release() + return r.SpaceStorage.Close(ctx) +} diff --git a/space/spacecore/storage/anystorage/storageservice.go b/space/spacecore/storage/anystorage/storageservice.go new file mode 100644 index 000000000..8a8d7790a --- /dev/null +++ b/space/spacecore/storage/anystorage/storageservice.go @@ -0,0 +1,292 @@ +package anystorage + +import ( + "context" + "errors" + "fmt" + "os" + "path" + "strings" + "sync" + "time" + + anystore "github.com/anyproto/any-store" + "github.com/anyproto/any-sync/commonspace/spacestorage" + "go.uber.org/zap" + "golang.org/x/sys/unix" + + "github.com/anyproto/any-sync/app" + "github.com/anyproto/any-sync/app/logger" + "github.com/anyproto/any-sync/app/ocache" +) + +var log = logger.NewNamed(spacestorage.CName) + +var ( + ErrClosed = errors.New("space storage closed") + ErrDeleted = errors.New("space storage deleted") +) + +type optKey int + +const ( + createKeyVal optKey = 0 + doKeyVal optKey = 1 +) + +type doFunc func() error + +type storageContainer struct { + db anystore.DB + mx sync.Mutex + path string + handlers int + isClosing bool + onClose func(path string) error + closeCh chan struct{} +} + +func newStorageContainer(db anystore.DB, path string) *storageContainer { + return &storageContainer{ + db: db, + closeCh: make(chan struct{}), + } +} + +func (s *storageContainer) Close() (err error) { + return fmt.Errorf("should not be called directly") +} + +func (s *storageContainer) Acquire() (anystore.DB, error) { + s.mx.Lock() + if s.isClosing { + ch := s.closeCh + s.mx.Unlock() + <-ch + return nil, ErrClosed + } + s.handlers++ + s.mx.Unlock() + return s.db, nil +} + +func (s *storageContainer) Release() { + s.mx.Lock() + defer s.mx.Unlock() + s.handlers++ +} + +func (s *storageContainer) TryClose(objectTTL time.Duration) (res bool, err error) { + s.mx.Lock() + if s.handlers > 0 { + s.mx.Unlock() + return false, nil + } + s.isClosing = true + s.closeCh = make(chan struct{}) + ch := s.closeCh + onClose := s.onClose + db := s.db + s.mx.Unlock() + if db != nil { + if err := db.Close(); err != nil { + log.Warn("failed to close db", zap.Error(err)) + } + } + if onClose != nil { + err := onClose(s.path) + if err != nil { + log.Warn("failed to close db", zap.Error(err)) + } + } + close(ch) + return true, nil +} + +type storageService struct { + rootPath string + cache ocache.OCache +} + +func (s *storageService) AllSpaceIds() (ids []string, err error) { + var files []string + fileInfo, err := os.ReadDir(s.rootPath) + if err != nil { + return files, fmt.Errorf("can't read datadir '%v': %v", s.rootPath, err) + } + for _, file := range fileInfo { + if !strings.HasPrefix(file.Name(), ".") { + files = append(files, file.Name()) + } + } + return files, nil +} + +func (s *storageService) Run(ctx context.Context) (err error) { + return nil +} + +func (s *storageService) openDb(ctx context.Context, id string) (db anystore.DB, err error) { + dbPath := path.Join(s.rootPath, id) + if _, err := os.Stat(dbPath); err != nil { + return nil, err + } + return anystore.Open(ctx, dbPath, nil) +} + +func (s *storageService) createDb(ctx context.Context, id string) (db anystore.DB, err error) { + dbPath := path.Join(s.rootPath, id) + if _, err := os.Stat(dbPath); err != nil { + err := os.MkdirAll(dbPath, 0755) + if err != nil { + return + } + } + return anystore.Open(ctx, dbPath, nil) +} + +func (s *storageService) Close(ctx context.Context) (err error) { + return unix.Rmdir(s.rootPath) +} + +func (s *storageService) Init(a *app.App) (err error) { + s.cache = ocache.New(s.loadFunc, + ocache.WithLogger(log.Sugar()), + ocache.WithGCPeriod(time.Minute), + ocache.WithTTL(60*time.Second)) + return nil +} + +func (s *storageService) Name() (name string) { + return spacestorage.CName +} + +func (s *storageService) loadFunc(ctx context.Context, id string) (value ocache.Object, err error) { + if fn, ok := ctx.Value(doKeyVal).(doFunc); ok { + err := fn() + if err != nil { + return nil, err + } + // continue to open + } else if ctx.Value(createKeyVal) != nil { + if s.SpaceExists(id) { + return nil, spacestorage.ErrSpaceStorageExists + } + db, err := s.createDb(ctx, id) + if err != nil { + return nil, err + } + cont := &storageContainer{ + path: path.Join(s.rootPath, id), + db: db, + } + return cont, nil + } + db, err := s.openDb(ctx, id) + if err != nil { + return nil, err + } + return newStorageContainer(db, path.Join(s.rootPath, id)), nil +} + +func (s *storageService) get(ctx context.Context, id string) (container *storageContainer, err error) { + cont, err := s.cache.Get(ctx, id) + if err != nil { + return nil, err + } + return cont.(*storageContainer), nil +} + +func (s *storageService) WaitSpaceStorage(ctx context.Context, id string) (spacestorage.SpaceStorage, error) { + cont, err := s.get(ctx, id) + if err != nil { + return nil, err + } + db, err := cont.Acquire() + if err != nil { + return nil, err + } + st, err := spacestorage.New(ctx, id, db) + if err != nil { + return nil, err + } + return &clientStorage{ + SpaceStorage: st, + cont: cont, + }, nil +} + +func (s *storageService) SpaceExists(id string) bool { + if id == "" { + return false + } + dbPath := path.Join(s.rootPath, id) + if _, err := os.Stat(dbPath); err != nil { + return false + } + return true +} + +func (s *storageService) CreateSpaceStorage(ctx context.Context, payload spacestorage.SpaceStorageCreatePayload) (spacestorage.SpaceStorage, error) { + ctx = context.WithValue(ctx, createKeyVal, true) + cont, err := s.get(ctx, payload.SpaceHeaderWithId.Id) + if err != nil { + return nil, err + } + db, err := cont.Acquire() + if err != nil { + return nil, err + } + st, err := spacestorage.Create(ctx, db, payload) + if err != nil { + return nil, err + } + return &clientStorage{ + SpaceStorage: st, + cont: cont, + }, nil +} + +func (s *storageService) TryLockAndDo(ctx context.Context, spaceId string, do func() error) (err error) { + ctx = context.WithValue(ctx, doKeyVal, do) + _, err = s.get(ctx, spaceId) + return err +} + +func (s *storageService) DeleteSpaceStorage(ctx context.Context, spaceId string) error { + dbPath := path.Join(s.rootPath, spaceId) + del := func(path string) error { + if _, err := os.Stat(path); err != nil { + if os.IsNotExist(err) { + return nil + } + return fmt.Errorf("can't delete datadir '%s': %w", path, err) + } + return os.RemoveAll(path) + } + ctx = context.WithValue(ctx, doKeyVal, func() error { + err := del(dbPath) + if err != nil { + return err + } + return ErrDeleted + }) + cont, err := s.get(ctx, spaceId) + if err != nil { + if errors.Is(err, ErrDeleted) { + return nil + } + return err + } + _, err = cont.Acquire() + if err != nil { + return s.DeleteSpaceStorage(ctx, spaceId) + } + cont.mx.Lock() + cont.onClose = del + ch := cont.closeCh + cont.mx.Unlock() + cont.Release() + <-ch + return nil +} diff --git a/space/spacecore/storage/storage.go b/space/spacecore/storage/storage.go index e93d3d15f..145dee74d 100644 --- a/space/spacecore/storage/storage.go +++ b/space/spacecore/storage/storage.go @@ -22,12 +22,7 @@ type ClientStorage interface { spacestorage.SpaceStorageProvider app.ComponentRunnable AllSpaceIds() (ids []string, err error) - GetSpaceID(objectID string) (spaceID string, err error) - BindSpaceID(spaceID, objectID string) (err error) DeleteSpaceStorage(ctx context.Context, spaceId string) error - MarkSpaceCreated(id string) (err error) - UnmarkSpaceCreated(id string) (err error) - IsSpaceCreated(id string) (created bool) } // storageService is a proxy for the actual storage implementation From 194b13b888fc2625630351c28270b9f32eb257b2 Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Fri, 13 Dec 2024 11:23:25 +0100 Subject: [PATCH 049/279] GO-4709 WIP add differ --- core/block/source/store.go | 23 ++++++++++++++++++++++- go.mod | 2 +- go.sum | 2 ++ 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/core/block/source/store.go b/core/block/source/store.go index cfbed7130..06001f4b0 100644 --- a/core/block/source/store.go +++ b/core/block/source/store.go @@ -12,6 +12,7 @@ import ( "github.com/anyproto/any-sync/commonspace/object/tree/synctree" "github.com/anyproto/any-sync/commonspace/object/tree/synctree/updatelistener" "github.com/anyproto/any-sync/commonspace/object/tree/treechangeproto" + "github.com/anyproto/any-sync/commonspace/objecttreebuilder" "github.com/gogo/protobuf/proto" "github.com/golang/snappy" @@ -50,6 +51,7 @@ type store struct { store *storestate.StoreState onUpdateHook func() onPushChange PushChangeHook + diffManager *objecttree.DiffManager } func (s *store) GetFileKeysSnapshot() []*pb.ChangeFileKeys { @@ -60,6 +62,22 @@ func (s *store) SetPushChangeHook(onPushChange PushChangeHook) { s.onPushChange = onPushChange } +func (s *store) createDiffManager(ctx context.Context, treeHeads, initHeads []string) (err error) { + buildTree := func(heads []string) (objecttree.ReadableObjectTree, error) { + return s.space.TreeBuilder().BuildHistoryTree(ctx, s.Id(), objecttreebuilder.HistoryTreeOpts{ + Heads: heads, + Include: true, + }) + } + onRemove := func(removed []string) { + for _, rem := range removed { + fmt.Println("[x]: removed", rem) + } + } + s.diffManager, err = objecttree.NewDiffManager(initHeads, treeHeads, buildTree, onRemove) + return +} + func (s *store) ReadDoc(ctx context.Context, receiver ChangeReceiver, empty bool) (doc state.Doc, err error) { s.receiver = receiver setter, ok := s.ObjectTree.(synctree.ListenerSetter) @@ -89,7 +107,10 @@ func (s *store) PushChange(params PushChangeParams) (id string, err error) { func (s *store) ReadStoreDoc(ctx context.Context, storeState *storestate.StoreState, onUpdateHook func()) (err error) { s.onUpdateHook = onUpdateHook s.store = storeState - + err = s.createDiffManager(ctx, s.source.Tree().Heads(), nil) + if err != nil { + return err + } tx, err := s.store.NewTx(ctx) if err != nil { return diff --git a/go.mod b/go.mod index 81b077a81..e9ede1109 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( github.com/VividCortex/ewma v1.2.0 github.com/adrium/goheif v0.0.0-20230113233934-ca402e77a786 github.com/anyproto/any-store v0.1.3 - github.com/anyproto/any-sync v0.5.22 + github.com/anyproto/any-sync v0.5.23-0.20241212224117-403aaea873eb github.com/anyproto/go-chash v0.1.0 github.com/anyproto/go-naturaldate/v2 v2.0.2-0.20230524105841-9829cfd13438 github.com/anyproto/go-slip10 v1.0.0 diff --git a/go.sum b/go.sum index 8ed45ef63..ff4bff30d 100644 --- a/go.sum +++ b/go.sum @@ -80,6 +80,8 @@ github.com/anyproto/any-store v0.1.3 h1:onWLP8tuWiUvYOyV3DoRODscTxAiGEjwQPm+NMxe github.com/anyproto/any-store v0.1.3/go.mod h1:6/0OUKgSMWF/vYGoGYzQOl2CII5OdiuXbQlGDXYcNYc= github.com/anyproto/any-sync v0.5.22 h1:mfAVfmcP8o/9ZIGS59YECiVCi9UZI9u3W0hK+vH7/z8= github.com/anyproto/any-sync v0.5.22/go.mod h1:ANfWnDHP9t4RHelUhX99YmaDvmzcaeIwR9grkKIkfeM= +github.com/anyproto/any-sync v0.5.23-0.20241212224117-403aaea873eb h1:/LL/f5pcRaiTUONrD9Un3GMgha87EP2ivU9KnOqjjiQ= +github.com/anyproto/any-sync v0.5.23-0.20241212224117-403aaea873eb/go.mod h1:ANfWnDHP9t4RHelUhX99YmaDvmzcaeIwR9grkKIkfeM= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580 h1:Ba80IlCCxkZ9H1GF+7vFu/TSpPvbpDCxXJ5ogc4euYc= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580/go.mod h1:T/uWAYxrXdaXw64ihI++9RMbKTCpKd/yE9+saARew7k= github.com/anyproto/go-chash v0.1.0 h1:I9meTPjXFRfXZHRJzjOHC/XF7Q5vzysKkiT/grsogXY= From 9755a78250cb31ab1e4f9aaa2636adb7bd37d4aa Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Fri, 13 Dec 2024 11:40:10 +0100 Subject: [PATCH 050/279] GO-4709 Mark seen heads --- core/block/editor/chatobject/chatobject.go | 5 +++++ core/block/source/store.go | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/core/block/editor/chatobject/chatobject.go b/core/block/editor/chatobject/chatobject.go index 74c05083e..56f29cda2 100644 --- a/core/block/editor/chatobject/chatobject.go +++ b/core/block/editor/chatobject/chatobject.go @@ -39,6 +39,7 @@ type StoreObject interface { ToggleMessageReaction(ctx context.Context, messageId string, emoji string) error DeleteMessage(ctx context.Context, messageId string) error SubscribeLastMessages(ctx context.Context, limit int) ([]*model.ChatMessage, int, error) + MarkSeenHeads(heads []string) Unsubscribe() error } @@ -112,6 +113,10 @@ func (s *storeObject) onUpdate() { s.subscription.flush() } +func (s *storeObject) MarkSeenHeads(heads []string) { + s.storeSource.MarkSeenHeads(heads) +} + func (s *storeObject) GetMessagesByIds(ctx context.Context, messageIds []string) ([]*model.ChatMessage, error) { coll, err := s.store.Collection(ctx, collectionName) if err != nil { diff --git a/core/block/source/store.go b/core/block/source/store.go index 06001f4b0..40652148f 100644 --- a/core/block/source/store.go +++ b/core/block/source/store.go @@ -33,6 +33,7 @@ type Store interface { ReadStoreDoc(ctx context.Context, stateStore *storestate.StoreState, onUpdateHook func()) (err error) PushStoreChange(ctx context.Context, params PushStoreChangeParams) (changeId string, err error) SetPushChangeHook(onPushChange PushChangeHook) + MarkSeenHeads(heads []string) } type PushStoreChangeParams struct { @@ -195,12 +196,17 @@ func (s *store) update(ctx context.Context, tree objecttree.ObjectTree) error { return errors.Join(tx.Rollback(), err) } err = tx.Commit() + s.diffManager.Update(tree) if err == nil { s.onUpdateHook() } return err } +func (s *store) MarkSeenHeads(heads []string) { + s.diffManager.Remove(heads) +} + func (s *store) Update(tree objecttree.ObjectTree) error { err := s.update(context.Background(), tree) if err != nil { From 29bb18dc9768ff7e7045a8f7657e2857640175b8 Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Fri, 13 Dec 2024 17:41:23 +0100 Subject: [PATCH 051/279] GO-4709 Update any-sync change differ --- core/block/source/store.go | 8 ++++++++ go.mod | 2 +- go.sum | 4 ++-- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/core/block/source/store.go b/core/block/source/store.go index 40652148f..eaf2a3666 100644 --- a/core/block/source/store.go +++ b/core/block/source/store.go @@ -180,6 +180,14 @@ func (s *store) PushStoreChange(ctx context.Context, params PushStoreChangeParam if err == nil { s.onUpdateHook() } + ch, err := s.ObjectTree.GetChange(changeId) + if err != nil { + return "", err + } + s.diffManager.Add(&objecttree.Change{ + Id: changeId, + PreviousIds: ch.PreviousIds, + }) return changeId, err } diff --git a/go.mod b/go.mod index e9ede1109..275c86795 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( github.com/VividCortex/ewma v1.2.0 github.com/adrium/goheif v0.0.0-20230113233934-ca402e77a786 github.com/anyproto/any-store v0.1.3 - github.com/anyproto/any-sync v0.5.23-0.20241212224117-403aaea873eb + github.com/anyproto/any-sync v0.5.23-0.20241213162756-0c6778cffa67 github.com/anyproto/go-chash v0.1.0 github.com/anyproto/go-naturaldate/v2 v2.0.2-0.20230524105841-9829cfd13438 github.com/anyproto/go-slip10 v1.0.0 diff --git a/go.sum b/go.sum index ff4bff30d..9a301ca9d 100644 --- a/go.sum +++ b/go.sum @@ -78,10 +78,10 @@ github.com/andybalholm/cascadia v1.3.2 h1:3Xi6Dw5lHF15JtdcmAHD3i1+T8plmv7BQ/nsVi github.com/andybalholm/cascadia v1.3.2/go.mod h1:7gtRlve5FxPPgIgX36uWBX58OdBsSS6lUvCFb+h7KvU= github.com/anyproto/any-store v0.1.3 h1:onWLP8tuWiUvYOyV3DoRODscTxAiGEjwQPm+NMxeq3M= github.com/anyproto/any-store v0.1.3/go.mod h1:6/0OUKgSMWF/vYGoGYzQOl2CII5OdiuXbQlGDXYcNYc= -github.com/anyproto/any-sync v0.5.22 h1:mfAVfmcP8o/9ZIGS59YECiVCi9UZI9u3W0hK+vH7/z8= -github.com/anyproto/any-sync v0.5.22/go.mod h1:ANfWnDHP9t4RHelUhX99YmaDvmzcaeIwR9grkKIkfeM= github.com/anyproto/any-sync v0.5.23-0.20241212224117-403aaea873eb h1:/LL/f5pcRaiTUONrD9Un3GMgha87EP2ivU9KnOqjjiQ= github.com/anyproto/any-sync v0.5.23-0.20241212224117-403aaea873eb/go.mod h1:ANfWnDHP9t4RHelUhX99YmaDvmzcaeIwR9grkKIkfeM= +github.com/anyproto/any-sync v0.5.23-0.20241213162756-0c6778cffa67 h1:Rlyqx5JqgYtMkA7HJ9l1KWmqiW0gySnJJpd1hLczBvk= +github.com/anyproto/any-sync v0.5.23-0.20241213162756-0c6778cffa67/go.mod h1:ANfWnDHP9t4RHelUhX99YmaDvmzcaeIwR9grkKIkfeM= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580 h1:Ba80IlCCxkZ9H1GF+7vFu/TSpPvbpDCxXJ5ogc4euYc= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580/go.mod h1:T/uWAYxrXdaXw64ihI++9RMbKTCpKd/yE9+saARew7k= github.com/anyproto/go-chash v0.1.0 h1:I9meTPjXFRfXZHRJzjOHC/XF7Q5vzysKkiT/grsogXY= From 2d8126ca9060d614b9c653a54a395b887ad2639e Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Mon, 16 Dec 2024 20:56:30 +0100 Subject: [PATCH 052/279] GO-4709 Update any-sync --- go.mod | 4 ++-- go.sum | 10 ++++------ 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/go.mod b/go.mod index 275c86795..08c92c2e6 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( github.com/VividCortex/ewma v1.2.0 github.com/adrium/goheif v0.0.0-20230113233934-ca402e77a786 github.com/anyproto/any-store v0.1.3 - github.com/anyproto/any-sync v0.5.23-0.20241213162756-0c6778cffa67 + github.com/anyproto/any-sync v0.5.24-alpha.2 github.com/anyproto/go-chash v0.1.0 github.com/anyproto/go-naturaldate/v2 v2.0.2-0.20230524105841-9829cfd13438 github.com/anyproto/go-slip10 v1.0.0 @@ -246,7 +246,7 @@ require ( go.opentelemetry.io/otel v1.32.0 // indirect go.opentelemetry.io/otel/metric v1.32.0 // indirect go.opentelemetry.io/otel/trace v1.32.0 // indirect - golang.org/x/crypto v0.30.0 // indirect + golang.org/x/crypto v0.31.0 // indirect golang.org/x/mod v0.22.0 // indirect golang.org/x/sync v0.10.0 // indirect golang.org/x/sys v0.28.0 // indirect diff --git a/go.sum b/go.sum index 9a301ca9d..c84379483 100644 --- a/go.sum +++ b/go.sum @@ -78,10 +78,8 @@ github.com/andybalholm/cascadia v1.3.2 h1:3Xi6Dw5lHF15JtdcmAHD3i1+T8plmv7BQ/nsVi github.com/andybalholm/cascadia v1.3.2/go.mod h1:7gtRlve5FxPPgIgX36uWBX58OdBsSS6lUvCFb+h7KvU= github.com/anyproto/any-store v0.1.3 h1:onWLP8tuWiUvYOyV3DoRODscTxAiGEjwQPm+NMxeq3M= github.com/anyproto/any-store v0.1.3/go.mod h1:6/0OUKgSMWF/vYGoGYzQOl2CII5OdiuXbQlGDXYcNYc= -github.com/anyproto/any-sync v0.5.23-0.20241212224117-403aaea873eb h1:/LL/f5pcRaiTUONrD9Un3GMgha87EP2ivU9KnOqjjiQ= -github.com/anyproto/any-sync v0.5.23-0.20241212224117-403aaea873eb/go.mod h1:ANfWnDHP9t4RHelUhX99YmaDvmzcaeIwR9grkKIkfeM= -github.com/anyproto/any-sync v0.5.23-0.20241213162756-0c6778cffa67 h1:Rlyqx5JqgYtMkA7HJ9l1KWmqiW0gySnJJpd1hLczBvk= -github.com/anyproto/any-sync v0.5.23-0.20241213162756-0c6778cffa67/go.mod h1:ANfWnDHP9t4RHelUhX99YmaDvmzcaeIwR9grkKIkfeM= +github.com/anyproto/any-sync v0.5.24-alpha.2 h1:ieV6amTbNIcsDb2Q9BRNAACt5FBsBt0TDIN1Q/OqKS0= +github.com/anyproto/any-sync v0.5.24-alpha.2/go.mod h1:CdvcjCbNteXFGR/EMn02qTf3Mt6YPm9LWs+y1h9w980= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580 h1:Ba80IlCCxkZ9H1GF+7vFu/TSpPvbpDCxXJ5ogc4euYc= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580/go.mod h1:T/uWAYxrXdaXw64ihI++9RMbKTCpKd/yE9+saARew7k= github.com/anyproto/go-chash v0.1.0 h1:I9meTPjXFRfXZHRJzjOHC/XF7Q5vzysKkiT/grsogXY= @@ -1093,8 +1091,8 @@ golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= -golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= -golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= From 101ea2a288b72769713782c7631d2aab54bc5455 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Wed, 18 Dec 2024 14:12:12 +0100 Subject: [PATCH 053/279] GO-4459 Add initial handler tests using mocked middleware interfaces --- .mockery.yaml | 6 + cmd/api/handlers_test.go | 121 + cmd/api/main.go | 2 +- core/mock_core/mock_MiddlewareInternal.go | 145 + .../mock_service/mock_ClientCommandsServer.go | 13254 ++++++++++++++++ 5 files changed, 13527 insertions(+), 1 deletion(-) create mode 100644 cmd/api/handlers_test.go create mode 100644 core/mock_core/mock_MiddlewareInternal.go create mode 100644 pb/service/mock_service/mock_ClientCommandsServer.go diff --git a/.mockery.yaml b/.mockery.yaml index d40638613..2ee80d161 100644 --- a/.mockery.yaml +++ b/.mockery.yaml @@ -222,3 +222,9 @@ packages: github.com/anyproto/anytype-heart/core/kanban: interfaces: Service: + github.com/anyproto/anytype-heart/pb/service: + interfaces: + ClientCommandsServer: + github.com/anyproto/anytype-heart/core: + interfaces: + MiddlewareInternal: \ No newline at end of file diff --git a/cmd/api/handlers_test.go b/cmd/api/handlers_test.go new file mode 100644 index 000000000..6271e5a43 --- /dev/null +++ b/cmd/api/handlers_test.go @@ -0,0 +1,121 @@ +package api + +import ( + "net/http" + "net/http/httptest" + "testing" + + "github.com/gin-gonic/gin" + + "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" + + "github.com/anyproto/anytype-heart/core/mock_core" + "github.com/anyproto/anytype-heart/pb" + "github.com/anyproto/anytype-heart/pb/service/mock_service" +) + +type fixture struct { + *ApiServer + mwMock *mock_service.MockClientCommandsServer + mwInternalMock *mock_core.MockMiddlewareInternal + router *gin.Engine +} + +func newFixture(t *testing.T) *fixture { + mw := mock_service.NewMockClientCommandsServer(t) + mwInternal := mock_core.NewMockMiddlewareInternal(t) + apiServer := &ApiServer{mw: mw, mwInternal: mwInternal, router: gin.Default()} + + apiServer.router.POST("/auth/displayCode", apiServer.authDisplayCodeHandler) + apiServer.router.GET("/auth/token", apiServer.authTokenHandler) + + return &fixture{ + ApiServer: apiServer, + mwMock: mw, + mwInternalMock: mwInternal, + router: apiServer.router, + } +} + +func TestApiServer_AuthDisplayCodeHandler(t *testing.T) { + t.Run("successful challenge creation", func(t *testing.T) { + fx := newFixture(t) + + fx.mwMock.On("AccountLocalLinkNewChallenge", mock.Anything, &pb.RpcAccountLocalLinkNewChallengeRequest{AppName: "api-test"}). + Return(&pb.RpcAccountLocalLinkNewChallengeResponse{ + ChallengeId: "mocked-challenge-id", + Error: &pb.RpcAccountLocalLinkNewChallengeResponseError{Code: pb.RpcAccountLocalLinkNewChallengeResponseError_NULL}, + }).Once() + + req, _ := http.NewRequest("POST", "/auth/displayCode", nil) + w := httptest.NewRecorder() + fx.router.ServeHTTP(w, req) + + require.Equal(t, http.StatusOK, w.Code) + require.Contains(t, w.Body.String(), "mocked-challenge-id") + }) + + t.Run("failed challenge creation", func(t *testing.T) { + fx := newFixture(t) + + // Mock middleware behavior + fx.mwMock.On("AccountLocalLinkNewChallenge", mock.Anything, &pb.RpcAccountLocalLinkNewChallengeRequest{AppName: "api-test"}). + Return(&pb.RpcAccountLocalLinkNewChallengeResponse{ + Error: &pb.RpcAccountLocalLinkNewChallengeResponseError{Code: pb.RpcAccountLocalLinkNewChallengeResponseError_UNKNOWN_ERROR}, + }).Once() + + req, _ := http.NewRequest("POST", "/auth/displayCode", nil) + w := httptest.NewRecorder() + fx.router.ServeHTTP(w, req) + + require.Equal(t, http.StatusInternalServerError, w.Code) + }) +} + +func TestApiServer_AuthTokenHandler(t *testing.T) { + t.Run("successful token retrieval", func(t *testing.T) { + fx := newFixture(t) + challengeId := "mocked-challenge-id" + code := "mocked-code" + + // Mock middleware behavior + fx.mwMock.On("AccountLocalLinkSolveChallenge", mock.Anything, &pb.RpcAccountLocalLinkSolveChallengeRequest{ + ChallengeId: challengeId, + Answer: code, + }). + Return(&pb.RpcAccountLocalLinkSolveChallengeResponse{ + SessionToken: "mocked-session-token", + AppKey: "mocked-app-key", + Error: &pb.RpcAccountLocalLinkSolveChallengeResponseError{Code: pb.RpcAccountLocalLinkSolveChallengeResponseError_NULL}, + }).Once() + + req, _ := http.NewRequest("GET", "/auth/token?challengeId="+challengeId+"&code="+code, nil) + w := httptest.NewRecorder() + fx.router.ServeHTTP(w, req) + + require.Equal(t, http.StatusOK, w.Code) + require.Contains(t, w.Body.String(), "mocked-session-token") + require.Contains(t, w.Body.String(), "mocked-app-key") + }) + + t.Run("failed token retrieval", func(t *testing.T) { + fx := newFixture(t) + challengeId := "mocked-challenge-id" + code := "mocked-code" + + fx.mwMock.On("AccountLocalLinkSolveChallenge", mock.Anything, &pb.RpcAccountLocalLinkSolveChallengeRequest{ + ChallengeId: challengeId, + Answer: code, + }). + Return(&pb.RpcAccountLocalLinkSolveChallengeResponse{ + Error: &pb.RpcAccountLocalLinkSolveChallengeResponseError{Code: pb.RpcAccountLocalLinkSolveChallengeResponseError_UNKNOWN_ERROR}, + }).Once() + + req, _ := http.NewRequest("GET", "/auth/token?challengeId="+challengeId+"&code="+code, nil) + w := httptest.NewRecorder() + fx.router.ServeHTTP(w, req) + + require.Equal(t, http.StatusInternalServerError, w.Code) + }) +} diff --git a/cmd/api/main.go b/cmd/api/main.go index 381064c91..9c60fba22 100644 --- a/cmd/api/main.go +++ b/cmd/api/main.go @@ -43,7 +43,7 @@ func newApiServer(mw service.ClientCommandsServer, mwInternal core.MiddlewareInt a := &ApiServer{ mw: mw, mwInternal: mwInternal, - router: gin.New(), + router: gin.Default(), } a.server = &http.Server{ diff --git a/core/mock_core/mock_MiddlewareInternal.go b/core/mock_core/mock_MiddlewareInternal.go new file mode 100644 index 000000000..d55bfa317 --- /dev/null +++ b/core/mock_core/mock_MiddlewareInternal.go @@ -0,0 +1,145 @@ +// Code generated by mockery. DO NOT EDIT. + +package mock_core + +import ( + context "context" + + app "github.com/anyproto/any-sync/app" + + mock "github.com/stretchr/testify/mock" + + model "github.com/anyproto/anytype-heart/pkg/lib/pb/model" +) + +// MockMiddlewareInternal is an autogenerated mock type for the MiddlewareInternal type +type MockMiddlewareInternal struct { + mock.Mock +} + +type MockMiddlewareInternal_Expecter struct { + mock *mock.Mock +} + +func (_m *MockMiddlewareInternal) EXPECT() *MockMiddlewareInternal_Expecter { + return &MockMiddlewareInternal_Expecter{mock: &_m.Mock} +} + +// GetAccountInfo provides a mock function with given fields: ctx +func (_m *MockMiddlewareInternal) GetAccountInfo(ctx context.Context) (*model.AccountInfo, error) { + ret := _m.Called(ctx) + + if len(ret) == 0 { + panic("no return value specified for GetAccountInfo") + } + + var r0 *model.AccountInfo + var r1 error + if rf, ok := ret.Get(0).(func(context.Context) (*model.AccountInfo, error)); ok { + return rf(ctx) + } + if rf, ok := ret.Get(0).(func(context.Context) *model.AccountInfo); ok { + r0 = rf(ctx) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*model.AccountInfo) + } + } + + if rf, ok := ret.Get(1).(func(context.Context) error); ok { + r1 = rf(ctx) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// MockMiddlewareInternal_GetAccountInfo_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetAccountInfo' +type MockMiddlewareInternal_GetAccountInfo_Call struct { + *mock.Call +} + +// GetAccountInfo is a helper method to define mock.On call +// - ctx context.Context +func (_e *MockMiddlewareInternal_Expecter) GetAccountInfo(ctx interface{}) *MockMiddlewareInternal_GetAccountInfo_Call { + return &MockMiddlewareInternal_GetAccountInfo_Call{Call: _e.mock.On("GetAccountInfo", ctx)} +} + +func (_c *MockMiddlewareInternal_GetAccountInfo_Call) Run(run func(ctx context.Context)) *MockMiddlewareInternal_GetAccountInfo_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context)) + }) + return _c +} + +func (_c *MockMiddlewareInternal_GetAccountInfo_Call) Return(_a0 *model.AccountInfo, _a1 error) *MockMiddlewareInternal_GetAccountInfo_Call { + _c.Call.Return(_a0, _a1) + return _c +} + +func (_c *MockMiddlewareInternal_GetAccountInfo_Call) RunAndReturn(run func(context.Context) (*model.AccountInfo, error)) *MockMiddlewareInternal_GetAccountInfo_Call { + _c.Call.Return(run) + return _c +} + +// GetApp provides a mock function with given fields: +func (_m *MockMiddlewareInternal) GetApp() *app.App { + ret := _m.Called() + + if len(ret) == 0 { + panic("no return value specified for GetApp") + } + + var r0 *app.App + if rf, ok := ret.Get(0).(func() *app.App); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*app.App) + } + } + + return r0 +} + +// MockMiddlewareInternal_GetApp_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetApp' +type MockMiddlewareInternal_GetApp_Call struct { + *mock.Call +} + +// GetApp is a helper method to define mock.On call +func (_e *MockMiddlewareInternal_Expecter) GetApp() *MockMiddlewareInternal_GetApp_Call { + return &MockMiddlewareInternal_GetApp_Call{Call: _e.mock.On("GetApp")} +} + +func (_c *MockMiddlewareInternal_GetApp_Call) Run(run func()) *MockMiddlewareInternal_GetApp_Call { + _c.Call.Run(func(args mock.Arguments) { + run() + }) + return _c +} + +func (_c *MockMiddlewareInternal_GetApp_Call) Return(_a0 *app.App) *MockMiddlewareInternal_GetApp_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockMiddlewareInternal_GetApp_Call) RunAndReturn(run func() *app.App) *MockMiddlewareInternal_GetApp_Call { + _c.Call.Return(run) + return _c +} + +// NewMockMiddlewareInternal creates a new instance of MockMiddlewareInternal. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func NewMockMiddlewareInternal(t interface { + mock.TestingT + Cleanup(func()) +}) *MockMiddlewareInternal { + mock := &MockMiddlewareInternal{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/pb/service/mock_service/mock_ClientCommandsServer.go b/pb/service/mock_service/mock_ClientCommandsServer.go new file mode 100644 index 000000000..e6ce72bf3 --- /dev/null +++ b/pb/service/mock_service/mock_ClientCommandsServer.go @@ -0,0 +1,13254 @@ +// Code generated by mockery. DO NOT EDIT. + +package mock_service + +import ( + context "context" + + pb "github.com/anyproto/anytype-heart/pb" + mock "github.com/stretchr/testify/mock" + + service "github.com/anyproto/anytype-heart/pb/service" +) + +// MockClientCommandsServer is an autogenerated mock type for the ClientCommandsServer type +type MockClientCommandsServer struct { + mock.Mock +} + +type MockClientCommandsServer_Expecter struct { + mock *mock.Mock +} + +func (_m *MockClientCommandsServer) EXPECT() *MockClientCommandsServer_Expecter { + return &MockClientCommandsServer_Expecter{mock: &_m.Mock} +} + +// AccountChangeNetworkConfigAndRestart provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) AccountChangeNetworkConfigAndRestart(_a0 context.Context, _a1 *pb.RpcAccountChangeNetworkConfigAndRestartRequest) *pb.RpcAccountChangeNetworkConfigAndRestartResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for AccountChangeNetworkConfigAndRestart") + } + + var r0 *pb.RpcAccountChangeNetworkConfigAndRestartResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcAccountChangeNetworkConfigAndRestartRequest) *pb.RpcAccountChangeNetworkConfigAndRestartResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcAccountChangeNetworkConfigAndRestartResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_AccountChangeNetworkConfigAndRestart_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'AccountChangeNetworkConfigAndRestart' +type MockClientCommandsServer_AccountChangeNetworkConfigAndRestart_Call struct { + *mock.Call +} + +// AccountChangeNetworkConfigAndRestart is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcAccountChangeNetworkConfigAndRestartRequest +func (_e *MockClientCommandsServer_Expecter) AccountChangeNetworkConfigAndRestart(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_AccountChangeNetworkConfigAndRestart_Call { + return &MockClientCommandsServer_AccountChangeNetworkConfigAndRestart_Call{Call: _e.mock.On("AccountChangeNetworkConfigAndRestart", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_AccountChangeNetworkConfigAndRestart_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcAccountChangeNetworkConfigAndRestartRequest)) *MockClientCommandsServer_AccountChangeNetworkConfigAndRestart_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcAccountChangeNetworkConfigAndRestartRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_AccountChangeNetworkConfigAndRestart_Call) Return(_a0 *pb.RpcAccountChangeNetworkConfigAndRestartResponse) *MockClientCommandsServer_AccountChangeNetworkConfigAndRestart_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_AccountChangeNetworkConfigAndRestart_Call) RunAndReturn(run func(context.Context, *pb.RpcAccountChangeNetworkConfigAndRestartRequest) *pb.RpcAccountChangeNetworkConfigAndRestartResponse) *MockClientCommandsServer_AccountChangeNetworkConfigAndRestart_Call { + _c.Call.Return(run) + return _c +} + +// AccountConfigUpdate provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) AccountConfigUpdate(_a0 context.Context, _a1 *pb.RpcAccountConfigUpdateRequest) *pb.RpcAccountConfigUpdateResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for AccountConfigUpdate") + } + + var r0 *pb.RpcAccountConfigUpdateResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcAccountConfigUpdateRequest) *pb.RpcAccountConfigUpdateResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcAccountConfigUpdateResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_AccountConfigUpdate_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'AccountConfigUpdate' +type MockClientCommandsServer_AccountConfigUpdate_Call struct { + *mock.Call +} + +// AccountConfigUpdate is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcAccountConfigUpdateRequest +func (_e *MockClientCommandsServer_Expecter) AccountConfigUpdate(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_AccountConfigUpdate_Call { + return &MockClientCommandsServer_AccountConfigUpdate_Call{Call: _e.mock.On("AccountConfigUpdate", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_AccountConfigUpdate_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcAccountConfigUpdateRequest)) *MockClientCommandsServer_AccountConfigUpdate_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcAccountConfigUpdateRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_AccountConfigUpdate_Call) Return(_a0 *pb.RpcAccountConfigUpdateResponse) *MockClientCommandsServer_AccountConfigUpdate_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_AccountConfigUpdate_Call) RunAndReturn(run func(context.Context, *pb.RpcAccountConfigUpdateRequest) *pb.RpcAccountConfigUpdateResponse) *MockClientCommandsServer_AccountConfigUpdate_Call { + _c.Call.Return(run) + return _c +} + +// AccountCreate provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) AccountCreate(_a0 context.Context, _a1 *pb.RpcAccountCreateRequest) *pb.RpcAccountCreateResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for AccountCreate") + } + + var r0 *pb.RpcAccountCreateResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcAccountCreateRequest) *pb.RpcAccountCreateResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcAccountCreateResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_AccountCreate_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'AccountCreate' +type MockClientCommandsServer_AccountCreate_Call struct { + *mock.Call +} + +// AccountCreate is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcAccountCreateRequest +func (_e *MockClientCommandsServer_Expecter) AccountCreate(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_AccountCreate_Call { + return &MockClientCommandsServer_AccountCreate_Call{Call: _e.mock.On("AccountCreate", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_AccountCreate_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcAccountCreateRequest)) *MockClientCommandsServer_AccountCreate_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcAccountCreateRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_AccountCreate_Call) Return(_a0 *pb.RpcAccountCreateResponse) *MockClientCommandsServer_AccountCreate_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_AccountCreate_Call) RunAndReturn(run func(context.Context, *pb.RpcAccountCreateRequest) *pb.RpcAccountCreateResponse) *MockClientCommandsServer_AccountCreate_Call { + _c.Call.Return(run) + return _c +} + +// AccountDelete provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) AccountDelete(_a0 context.Context, _a1 *pb.RpcAccountDeleteRequest) *pb.RpcAccountDeleteResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for AccountDelete") + } + + var r0 *pb.RpcAccountDeleteResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcAccountDeleteRequest) *pb.RpcAccountDeleteResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcAccountDeleteResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_AccountDelete_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'AccountDelete' +type MockClientCommandsServer_AccountDelete_Call struct { + *mock.Call +} + +// AccountDelete is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcAccountDeleteRequest +func (_e *MockClientCommandsServer_Expecter) AccountDelete(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_AccountDelete_Call { + return &MockClientCommandsServer_AccountDelete_Call{Call: _e.mock.On("AccountDelete", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_AccountDelete_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcAccountDeleteRequest)) *MockClientCommandsServer_AccountDelete_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcAccountDeleteRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_AccountDelete_Call) Return(_a0 *pb.RpcAccountDeleteResponse) *MockClientCommandsServer_AccountDelete_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_AccountDelete_Call) RunAndReturn(run func(context.Context, *pb.RpcAccountDeleteRequest) *pb.RpcAccountDeleteResponse) *MockClientCommandsServer_AccountDelete_Call { + _c.Call.Return(run) + return _c +} + +// AccountEnableLocalNetworkSync provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) AccountEnableLocalNetworkSync(_a0 context.Context, _a1 *pb.RpcAccountEnableLocalNetworkSyncRequest) *pb.RpcAccountEnableLocalNetworkSyncResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for AccountEnableLocalNetworkSync") + } + + var r0 *pb.RpcAccountEnableLocalNetworkSyncResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcAccountEnableLocalNetworkSyncRequest) *pb.RpcAccountEnableLocalNetworkSyncResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcAccountEnableLocalNetworkSyncResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_AccountEnableLocalNetworkSync_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'AccountEnableLocalNetworkSync' +type MockClientCommandsServer_AccountEnableLocalNetworkSync_Call struct { + *mock.Call +} + +// AccountEnableLocalNetworkSync is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcAccountEnableLocalNetworkSyncRequest +func (_e *MockClientCommandsServer_Expecter) AccountEnableLocalNetworkSync(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_AccountEnableLocalNetworkSync_Call { + return &MockClientCommandsServer_AccountEnableLocalNetworkSync_Call{Call: _e.mock.On("AccountEnableLocalNetworkSync", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_AccountEnableLocalNetworkSync_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcAccountEnableLocalNetworkSyncRequest)) *MockClientCommandsServer_AccountEnableLocalNetworkSync_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcAccountEnableLocalNetworkSyncRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_AccountEnableLocalNetworkSync_Call) Return(_a0 *pb.RpcAccountEnableLocalNetworkSyncResponse) *MockClientCommandsServer_AccountEnableLocalNetworkSync_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_AccountEnableLocalNetworkSync_Call) RunAndReturn(run func(context.Context, *pb.RpcAccountEnableLocalNetworkSyncRequest) *pb.RpcAccountEnableLocalNetworkSyncResponse) *MockClientCommandsServer_AccountEnableLocalNetworkSync_Call { + _c.Call.Return(run) + return _c +} + +// AccountLocalLinkNewChallenge provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) AccountLocalLinkNewChallenge(_a0 context.Context, _a1 *pb.RpcAccountLocalLinkNewChallengeRequest) *pb.RpcAccountLocalLinkNewChallengeResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for AccountLocalLinkNewChallenge") + } + + var r0 *pb.RpcAccountLocalLinkNewChallengeResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcAccountLocalLinkNewChallengeRequest) *pb.RpcAccountLocalLinkNewChallengeResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcAccountLocalLinkNewChallengeResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_AccountLocalLinkNewChallenge_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'AccountLocalLinkNewChallenge' +type MockClientCommandsServer_AccountLocalLinkNewChallenge_Call struct { + *mock.Call +} + +// AccountLocalLinkNewChallenge is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcAccountLocalLinkNewChallengeRequest +func (_e *MockClientCommandsServer_Expecter) AccountLocalLinkNewChallenge(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_AccountLocalLinkNewChallenge_Call { + return &MockClientCommandsServer_AccountLocalLinkNewChallenge_Call{Call: _e.mock.On("AccountLocalLinkNewChallenge", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_AccountLocalLinkNewChallenge_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcAccountLocalLinkNewChallengeRequest)) *MockClientCommandsServer_AccountLocalLinkNewChallenge_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcAccountLocalLinkNewChallengeRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_AccountLocalLinkNewChallenge_Call) Return(_a0 *pb.RpcAccountLocalLinkNewChallengeResponse) *MockClientCommandsServer_AccountLocalLinkNewChallenge_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_AccountLocalLinkNewChallenge_Call) RunAndReturn(run func(context.Context, *pb.RpcAccountLocalLinkNewChallengeRequest) *pb.RpcAccountLocalLinkNewChallengeResponse) *MockClientCommandsServer_AccountLocalLinkNewChallenge_Call { + _c.Call.Return(run) + return _c +} + +// AccountLocalLinkSolveChallenge provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) AccountLocalLinkSolveChallenge(_a0 context.Context, _a1 *pb.RpcAccountLocalLinkSolveChallengeRequest) *pb.RpcAccountLocalLinkSolveChallengeResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for AccountLocalLinkSolveChallenge") + } + + var r0 *pb.RpcAccountLocalLinkSolveChallengeResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcAccountLocalLinkSolveChallengeRequest) *pb.RpcAccountLocalLinkSolveChallengeResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcAccountLocalLinkSolveChallengeResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_AccountLocalLinkSolveChallenge_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'AccountLocalLinkSolveChallenge' +type MockClientCommandsServer_AccountLocalLinkSolveChallenge_Call struct { + *mock.Call +} + +// AccountLocalLinkSolveChallenge is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcAccountLocalLinkSolveChallengeRequest +func (_e *MockClientCommandsServer_Expecter) AccountLocalLinkSolveChallenge(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_AccountLocalLinkSolveChallenge_Call { + return &MockClientCommandsServer_AccountLocalLinkSolveChallenge_Call{Call: _e.mock.On("AccountLocalLinkSolveChallenge", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_AccountLocalLinkSolveChallenge_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcAccountLocalLinkSolveChallengeRequest)) *MockClientCommandsServer_AccountLocalLinkSolveChallenge_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcAccountLocalLinkSolveChallengeRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_AccountLocalLinkSolveChallenge_Call) Return(_a0 *pb.RpcAccountLocalLinkSolveChallengeResponse) *MockClientCommandsServer_AccountLocalLinkSolveChallenge_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_AccountLocalLinkSolveChallenge_Call) RunAndReturn(run func(context.Context, *pb.RpcAccountLocalLinkSolveChallengeRequest) *pb.RpcAccountLocalLinkSolveChallengeResponse) *MockClientCommandsServer_AccountLocalLinkSolveChallenge_Call { + _c.Call.Return(run) + return _c +} + +// AccountMove provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) AccountMove(_a0 context.Context, _a1 *pb.RpcAccountMoveRequest) *pb.RpcAccountMoveResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for AccountMove") + } + + var r0 *pb.RpcAccountMoveResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcAccountMoveRequest) *pb.RpcAccountMoveResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcAccountMoveResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_AccountMove_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'AccountMove' +type MockClientCommandsServer_AccountMove_Call struct { + *mock.Call +} + +// AccountMove is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcAccountMoveRequest +func (_e *MockClientCommandsServer_Expecter) AccountMove(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_AccountMove_Call { + return &MockClientCommandsServer_AccountMove_Call{Call: _e.mock.On("AccountMove", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_AccountMove_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcAccountMoveRequest)) *MockClientCommandsServer_AccountMove_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcAccountMoveRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_AccountMove_Call) Return(_a0 *pb.RpcAccountMoveResponse) *MockClientCommandsServer_AccountMove_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_AccountMove_Call) RunAndReturn(run func(context.Context, *pb.RpcAccountMoveRequest) *pb.RpcAccountMoveResponse) *MockClientCommandsServer_AccountMove_Call { + _c.Call.Return(run) + return _c +} + +// AccountRecover provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) AccountRecover(_a0 context.Context, _a1 *pb.RpcAccountRecoverRequest) *pb.RpcAccountRecoverResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for AccountRecover") + } + + var r0 *pb.RpcAccountRecoverResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcAccountRecoverRequest) *pb.RpcAccountRecoverResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcAccountRecoverResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_AccountRecover_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'AccountRecover' +type MockClientCommandsServer_AccountRecover_Call struct { + *mock.Call +} + +// AccountRecover is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcAccountRecoverRequest +func (_e *MockClientCommandsServer_Expecter) AccountRecover(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_AccountRecover_Call { + return &MockClientCommandsServer_AccountRecover_Call{Call: _e.mock.On("AccountRecover", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_AccountRecover_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcAccountRecoverRequest)) *MockClientCommandsServer_AccountRecover_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcAccountRecoverRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_AccountRecover_Call) Return(_a0 *pb.RpcAccountRecoverResponse) *MockClientCommandsServer_AccountRecover_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_AccountRecover_Call) RunAndReturn(run func(context.Context, *pb.RpcAccountRecoverRequest) *pb.RpcAccountRecoverResponse) *MockClientCommandsServer_AccountRecover_Call { + _c.Call.Return(run) + return _c +} + +// AccountRecoverFromLegacyExport provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) AccountRecoverFromLegacyExport(_a0 context.Context, _a1 *pb.RpcAccountRecoverFromLegacyExportRequest) *pb.RpcAccountRecoverFromLegacyExportResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for AccountRecoverFromLegacyExport") + } + + var r0 *pb.RpcAccountRecoverFromLegacyExportResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcAccountRecoverFromLegacyExportRequest) *pb.RpcAccountRecoverFromLegacyExportResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcAccountRecoverFromLegacyExportResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_AccountRecoverFromLegacyExport_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'AccountRecoverFromLegacyExport' +type MockClientCommandsServer_AccountRecoverFromLegacyExport_Call struct { + *mock.Call +} + +// AccountRecoverFromLegacyExport is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcAccountRecoverFromLegacyExportRequest +func (_e *MockClientCommandsServer_Expecter) AccountRecoverFromLegacyExport(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_AccountRecoverFromLegacyExport_Call { + return &MockClientCommandsServer_AccountRecoverFromLegacyExport_Call{Call: _e.mock.On("AccountRecoverFromLegacyExport", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_AccountRecoverFromLegacyExport_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcAccountRecoverFromLegacyExportRequest)) *MockClientCommandsServer_AccountRecoverFromLegacyExport_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcAccountRecoverFromLegacyExportRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_AccountRecoverFromLegacyExport_Call) Return(_a0 *pb.RpcAccountRecoverFromLegacyExportResponse) *MockClientCommandsServer_AccountRecoverFromLegacyExport_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_AccountRecoverFromLegacyExport_Call) RunAndReturn(run func(context.Context, *pb.RpcAccountRecoverFromLegacyExportRequest) *pb.RpcAccountRecoverFromLegacyExportResponse) *MockClientCommandsServer_AccountRecoverFromLegacyExport_Call { + _c.Call.Return(run) + return _c +} + +// AccountRevertDeletion provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) AccountRevertDeletion(_a0 context.Context, _a1 *pb.RpcAccountRevertDeletionRequest) *pb.RpcAccountRevertDeletionResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for AccountRevertDeletion") + } + + var r0 *pb.RpcAccountRevertDeletionResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcAccountRevertDeletionRequest) *pb.RpcAccountRevertDeletionResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcAccountRevertDeletionResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_AccountRevertDeletion_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'AccountRevertDeletion' +type MockClientCommandsServer_AccountRevertDeletion_Call struct { + *mock.Call +} + +// AccountRevertDeletion is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcAccountRevertDeletionRequest +func (_e *MockClientCommandsServer_Expecter) AccountRevertDeletion(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_AccountRevertDeletion_Call { + return &MockClientCommandsServer_AccountRevertDeletion_Call{Call: _e.mock.On("AccountRevertDeletion", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_AccountRevertDeletion_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcAccountRevertDeletionRequest)) *MockClientCommandsServer_AccountRevertDeletion_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcAccountRevertDeletionRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_AccountRevertDeletion_Call) Return(_a0 *pb.RpcAccountRevertDeletionResponse) *MockClientCommandsServer_AccountRevertDeletion_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_AccountRevertDeletion_Call) RunAndReturn(run func(context.Context, *pb.RpcAccountRevertDeletionRequest) *pb.RpcAccountRevertDeletionResponse) *MockClientCommandsServer_AccountRevertDeletion_Call { + _c.Call.Return(run) + return _c +} + +// AccountSelect provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) AccountSelect(_a0 context.Context, _a1 *pb.RpcAccountSelectRequest) *pb.RpcAccountSelectResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for AccountSelect") + } + + var r0 *pb.RpcAccountSelectResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcAccountSelectRequest) *pb.RpcAccountSelectResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcAccountSelectResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_AccountSelect_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'AccountSelect' +type MockClientCommandsServer_AccountSelect_Call struct { + *mock.Call +} + +// AccountSelect is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcAccountSelectRequest +func (_e *MockClientCommandsServer_Expecter) AccountSelect(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_AccountSelect_Call { + return &MockClientCommandsServer_AccountSelect_Call{Call: _e.mock.On("AccountSelect", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_AccountSelect_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcAccountSelectRequest)) *MockClientCommandsServer_AccountSelect_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcAccountSelectRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_AccountSelect_Call) Return(_a0 *pb.RpcAccountSelectResponse) *MockClientCommandsServer_AccountSelect_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_AccountSelect_Call) RunAndReturn(run func(context.Context, *pb.RpcAccountSelectRequest) *pb.RpcAccountSelectResponse) *MockClientCommandsServer_AccountSelect_Call { + _c.Call.Return(run) + return _c +} + +// AccountStop provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) AccountStop(_a0 context.Context, _a1 *pb.RpcAccountStopRequest) *pb.RpcAccountStopResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for AccountStop") + } + + var r0 *pb.RpcAccountStopResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcAccountStopRequest) *pb.RpcAccountStopResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcAccountStopResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_AccountStop_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'AccountStop' +type MockClientCommandsServer_AccountStop_Call struct { + *mock.Call +} + +// AccountStop is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcAccountStopRequest +func (_e *MockClientCommandsServer_Expecter) AccountStop(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_AccountStop_Call { + return &MockClientCommandsServer_AccountStop_Call{Call: _e.mock.On("AccountStop", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_AccountStop_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcAccountStopRequest)) *MockClientCommandsServer_AccountStop_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcAccountStopRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_AccountStop_Call) Return(_a0 *pb.RpcAccountStopResponse) *MockClientCommandsServer_AccountStop_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_AccountStop_Call) RunAndReturn(run func(context.Context, *pb.RpcAccountStopRequest) *pb.RpcAccountStopResponse) *MockClientCommandsServer_AccountStop_Call { + _c.Call.Return(run) + return _c +} + +// AppGetVersion provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) AppGetVersion(_a0 context.Context, _a1 *pb.RpcAppGetVersionRequest) *pb.RpcAppGetVersionResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for AppGetVersion") + } + + var r0 *pb.RpcAppGetVersionResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcAppGetVersionRequest) *pb.RpcAppGetVersionResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcAppGetVersionResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_AppGetVersion_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'AppGetVersion' +type MockClientCommandsServer_AppGetVersion_Call struct { + *mock.Call +} + +// AppGetVersion is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcAppGetVersionRequest +func (_e *MockClientCommandsServer_Expecter) AppGetVersion(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_AppGetVersion_Call { + return &MockClientCommandsServer_AppGetVersion_Call{Call: _e.mock.On("AppGetVersion", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_AppGetVersion_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcAppGetVersionRequest)) *MockClientCommandsServer_AppGetVersion_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcAppGetVersionRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_AppGetVersion_Call) Return(_a0 *pb.RpcAppGetVersionResponse) *MockClientCommandsServer_AppGetVersion_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_AppGetVersion_Call) RunAndReturn(run func(context.Context, *pb.RpcAppGetVersionRequest) *pb.RpcAppGetVersionResponse) *MockClientCommandsServer_AppGetVersion_Call { + _c.Call.Return(run) + return _c +} + +// AppSetDeviceState provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) AppSetDeviceState(_a0 context.Context, _a1 *pb.RpcAppSetDeviceStateRequest) *pb.RpcAppSetDeviceStateResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for AppSetDeviceState") + } + + var r0 *pb.RpcAppSetDeviceStateResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcAppSetDeviceStateRequest) *pb.RpcAppSetDeviceStateResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcAppSetDeviceStateResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_AppSetDeviceState_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'AppSetDeviceState' +type MockClientCommandsServer_AppSetDeviceState_Call struct { + *mock.Call +} + +// AppSetDeviceState is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcAppSetDeviceStateRequest +func (_e *MockClientCommandsServer_Expecter) AppSetDeviceState(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_AppSetDeviceState_Call { + return &MockClientCommandsServer_AppSetDeviceState_Call{Call: _e.mock.On("AppSetDeviceState", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_AppSetDeviceState_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcAppSetDeviceStateRequest)) *MockClientCommandsServer_AppSetDeviceState_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcAppSetDeviceStateRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_AppSetDeviceState_Call) Return(_a0 *pb.RpcAppSetDeviceStateResponse) *MockClientCommandsServer_AppSetDeviceState_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_AppSetDeviceState_Call) RunAndReturn(run func(context.Context, *pb.RpcAppSetDeviceStateRequest) *pb.RpcAppSetDeviceStateResponse) *MockClientCommandsServer_AppSetDeviceState_Call { + _c.Call.Return(run) + return _c +} + +// AppShutdown provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) AppShutdown(_a0 context.Context, _a1 *pb.RpcAppShutdownRequest) *pb.RpcAppShutdownResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for AppShutdown") + } + + var r0 *pb.RpcAppShutdownResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcAppShutdownRequest) *pb.RpcAppShutdownResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcAppShutdownResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_AppShutdown_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'AppShutdown' +type MockClientCommandsServer_AppShutdown_Call struct { + *mock.Call +} + +// AppShutdown is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcAppShutdownRequest +func (_e *MockClientCommandsServer_Expecter) AppShutdown(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_AppShutdown_Call { + return &MockClientCommandsServer_AppShutdown_Call{Call: _e.mock.On("AppShutdown", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_AppShutdown_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcAppShutdownRequest)) *MockClientCommandsServer_AppShutdown_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcAppShutdownRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_AppShutdown_Call) Return(_a0 *pb.RpcAppShutdownResponse) *MockClientCommandsServer_AppShutdown_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_AppShutdown_Call) RunAndReturn(run func(context.Context, *pb.RpcAppShutdownRequest) *pb.RpcAppShutdownResponse) *MockClientCommandsServer_AppShutdown_Call { + _c.Call.Return(run) + return _c +} + +// BlockBookmarkCreateAndFetch provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockBookmarkCreateAndFetch(_a0 context.Context, _a1 *pb.RpcBlockBookmarkCreateAndFetchRequest) *pb.RpcBlockBookmarkCreateAndFetchResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockBookmarkCreateAndFetch") + } + + var r0 *pb.RpcBlockBookmarkCreateAndFetchResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockBookmarkCreateAndFetchRequest) *pb.RpcBlockBookmarkCreateAndFetchResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockBookmarkCreateAndFetchResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockBookmarkCreateAndFetch_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockBookmarkCreateAndFetch' +type MockClientCommandsServer_BlockBookmarkCreateAndFetch_Call struct { + *mock.Call +} + +// BlockBookmarkCreateAndFetch is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockBookmarkCreateAndFetchRequest +func (_e *MockClientCommandsServer_Expecter) BlockBookmarkCreateAndFetch(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockBookmarkCreateAndFetch_Call { + return &MockClientCommandsServer_BlockBookmarkCreateAndFetch_Call{Call: _e.mock.On("BlockBookmarkCreateAndFetch", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockBookmarkCreateAndFetch_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockBookmarkCreateAndFetchRequest)) *MockClientCommandsServer_BlockBookmarkCreateAndFetch_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockBookmarkCreateAndFetchRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockBookmarkCreateAndFetch_Call) Return(_a0 *pb.RpcBlockBookmarkCreateAndFetchResponse) *MockClientCommandsServer_BlockBookmarkCreateAndFetch_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockBookmarkCreateAndFetch_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockBookmarkCreateAndFetchRequest) *pb.RpcBlockBookmarkCreateAndFetchResponse) *MockClientCommandsServer_BlockBookmarkCreateAndFetch_Call { + _c.Call.Return(run) + return _c +} + +// BlockBookmarkFetch provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockBookmarkFetch(_a0 context.Context, _a1 *pb.RpcBlockBookmarkFetchRequest) *pb.RpcBlockBookmarkFetchResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockBookmarkFetch") + } + + var r0 *pb.RpcBlockBookmarkFetchResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockBookmarkFetchRequest) *pb.RpcBlockBookmarkFetchResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockBookmarkFetchResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockBookmarkFetch_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockBookmarkFetch' +type MockClientCommandsServer_BlockBookmarkFetch_Call struct { + *mock.Call +} + +// BlockBookmarkFetch is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockBookmarkFetchRequest +func (_e *MockClientCommandsServer_Expecter) BlockBookmarkFetch(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockBookmarkFetch_Call { + return &MockClientCommandsServer_BlockBookmarkFetch_Call{Call: _e.mock.On("BlockBookmarkFetch", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockBookmarkFetch_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockBookmarkFetchRequest)) *MockClientCommandsServer_BlockBookmarkFetch_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockBookmarkFetchRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockBookmarkFetch_Call) Return(_a0 *pb.RpcBlockBookmarkFetchResponse) *MockClientCommandsServer_BlockBookmarkFetch_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockBookmarkFetch_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockBookmarkFetchRequest) *pb.RpcBlockBookmarkFetchResponse) *MockClientCommandsServer_BlockBookmarkFetch_Call { + _c.Call.Return(run) + return _c +} + +// BlockCopy provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockCopy(_a0 context.Context, _a1 *pb.RpcBlockCopyRequest) *pb.RpcBlockCopyResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockCopy") + } + + var r0 *pb.RpcBlockCopyResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockCopyRequest) *pb.RpcBlockCopyResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockCopyResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockCopy_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockCopy' +type MockClientCommandsServer_BlockCopy_Call struct { + *mock.Call +} + +// BlockCopy is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockCopyRequest +func (_e *MockClientCommandsServer_Expecter) BlockCopy(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockCopy_Call { + return &MockClientCommandsServer_BlockCopy_Call{Call: _e.mock.On("BlockCopy", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockCopy_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockCopyRequest)) *MockClientCommandsServer_BlockCopy_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockCopyRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockCopy_Call) Return(_a0 *pb.RpcBlockCopyResponse) *MockClientCommandsServer_BlockCopy_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockCopy_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockCopyRequest) *pb.RpcBlockCopyResponse) *MockClientCommandsServer_BlockCopy_Call { + _c.Call.Return(run) + return _c +} + +// BlockCreate provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockCreate(_a0 context.Context, _a1 *pb.RpcBlockCreateRequest) *pb.RpcBlockCreateResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockCreate") + } + + var r0 *pb.RpcBlockCreateResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockCreateRequest) *pb.RpcBlockCreateResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockCreateResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockCreate_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockCreate' +type MockClientCommandsServer_BlockCreate_Call struct { + *mock.Call +} + +// BlockCreate is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockCreateRequest +func (_e *MockClientCommandsServer_Expecter) BlockCreate(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockCreate_Call { + return &MockClientCommandsServer_BlockCreate_Call{Call: _e.mock.On("BlockCreate", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockCreate_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockCreateRequest)) *MockClientCommandsServer_BlockCreate_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockCreateRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockCreate_Call) Return(_a0 *pb.RpcBlockCreateResponse) *MockClientCommandsServer_BlockCreate_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockCreate_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockCreateRequest) *pb.RpcBlockCreateResponse) *MockClientCommandsServer_BlockCreate_Call { + _c.Call.Return(run) + return _c +} + +// BlockCreateWidget provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockCreateWidget(_a0 context.Context, _a1 *pb.RpcBlockCreateWidgetRequest) *pb.RpcBlockCreateWidgetResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockCreateWidget") + } + + var r0 *pb.RpcBlockCreateWidgetResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockCreateWidgetRequest) *pb.RpcBlockCreateWidgetResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockCreateWidgetResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockCreateWidget_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockCreateWidget' +type MockClientCommandsServer_BlockCreateWidget_Call struct { + *mock.Call +} + +// BlockCreateWidget is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockCreateWidgetRequest +func (_e *MockClientCommandsServer_Expecter) BlockCreateWidget(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockCreateWidget_Call { + return &MockClientCommandsServer_BlockCreateWidget_Call{Call: _e.mock.On("BlockCreateWidget", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockCreateWidget_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockCreateWidgetRequest)) *MockClientCommandsServer_BlockCreateWidget_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockCreateWidgetRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockCreateWidget_Call) Return(_a0 *pb.RpcBlockCreateWidgetResponse) *MockClientCommandsServer_BlockCreateWidget_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockCreateWidget_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockCreateWidgetRequest) *pb.RpcBlockCreateWidgetResponse) *MockClientCommandsServer_BlockCreateWidget_Call { + _c.Call.Return(run) + return _c +} + +// BlockCut provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockCut(_a0 context.Context, _a1 *pb.RpcBlockCutRequest) *pb.RpcBlockCutResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockCut") + } + + var r0 *pb.RpcBlockCutResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockCutRequest) *pb.RpcBlockCutResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockCutResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockCut_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockCut' +type MockClientCommandsServer_BlockCut_Call struct { + *mock.Call +} + +// BlockCut is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockCutRequest +func (_e *MockClientCommandsServer_Expecter) BlockCut(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockCut_Call { + return &MockClientCommandsServer_BlockCut_Call{Call: _e.mock.On("BlockCut", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockCut_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockCutRequest)) *MockClientCommandsServer_BlockCut_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockCutRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockCut_Call) Return(_a0 *pb.RpcBlockCutResponse) *MockClientCommandsServer_BlockCut_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockCut_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockCutRequest) *pb.RpcBlockCutResponse) *MockClientCommandsServer_BlockCut_Call { + _c.Call.Return(run) + return _c +} + +// BlockDataviewCreateFromExistingObject provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockDataviewCreateFromExistingObject(_a0 context.Context, _a1 *pb.RpcBlockDataviewCreateFromExistingObjectRequest) *pb.RpcBlockDataviewCreateFromExistingObjectResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockDataviewCreateFromExistingObject") + } + + var r0 *pb.RpcBlockDataviewCreateFromExistingObjectResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockDataviewCreateFromExistingObjectRequest) *pb.RpcBlockDataviewCreateFromExistingObjectResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockDataviewCreateFromExistingObjectResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockDataviewCreateFromExistingObject_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockDataviewCreateFromExistingObject' +type MockClientCommandsServer_BlockDataviewCreateFromExistingObject_Call struct { + *mock.Call +} + +// BlockDataviewCreateFromExistingObject is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockDataviewCreateFromExistingObjectRequest +func (_e *MockClientCommandsServer_Expecter) BlockDataviewCreateFromExistingObject(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockDataviewCreateFromExistingObject_Call { + return &MockClientCommandsServer_BlockDataviewCreateFromExistingObject_Call{Call: _e.mock.On("BlockDataviewCreateFromExistingObject", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockDataviewCreateFromExistingObject_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockDataviewCreateFromExistingObjectRequest)) *MockClientCommandsServer_BlockDataviewCreateFromExistingObject_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockDataviewCreateFromExistingObjectRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockDataviewCreateFromExistingObject_Call) Return(_a0 *pb.RpcBlockDataviewCreateFromExistingObjectResponse) *MockClientCommandsServer_BlockDataviewCreateFromExistingObject_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockDataviewCreateFromExistingObject_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockDataviewCreateFromExistingObjectRequest) *pb.RpcBlockDataviewCreateFromExistingObjectResponse) *MockClientCommandsServer_BlockDataviewCreateFromExistingObject_Call { + _c.Call.Return(run) + return _c +} + +// BlockDataviewFilterAdd provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockDataviewFilterAdd(_a0 context.Context, _a1 *pb.RpcBlockDataviewFilterAddRequest) *pb.RpcBlockDataviewFilterAddResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockDataviewFilterAdd") + } + + var r0 *pb.RpcBlockDataviewFilterAddResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockDataviewFilterAddRequest) *pb.RpcBlockDataviewFilterAddResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockDataviewFilterAddResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockDataviewFilterAdd_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockDataviewFilterAdd' +type MockClientCommandsServer_BlockDataviewFilterAdd_Call struct { + *mock.Call +} + +// BlockDataviewFilterAdd is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockDataviewFilterAddRequest +func (_e *MockClientCommandsServer_Expecter) BlockDataviewFilterAdd(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockDataviewFilterAdd_Call { + return &MockClientCommandsServer_BlockDataviewFilterAdd_Call{Call: _e.mock.On("BlockDataviewFilterAdd", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockDataviewFilterAdd_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockDataviewFilterAddRequest)) *MockClientCommandsServer_BlockDataviewFilterAdd_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockDataviewFilterAddRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockDataviewFilterAdd_Call) Return(_a0 *pb.RpcBlockDataviewFilterAddResponse) *MockClientCommandsServer_BlockDataviewFilterAdd_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockDataviewFilterAdd_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockDataviewFilterAddRequest) *pb.RpcBlockDataviewFilterAddResponse) *MockClientCommandsServer_BlockDataviewFilterAdd_Call { + _c.Call.Return(run) + return _c +} + +// BlockDataviewFilterRemove provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockDataviewFilterRemove(_a0 context.Context, _a1 *pb.RpcBlockDataviewFilterRemoveRequest) *pb.RpcBlockDataviewFilterRemoveResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockDataviewFilterRemove") + } + + var r0 *pb.RpcBlockDataviewFilterRemoveResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockDataviewFilterRemoveRequest) *pb.RpcBlockDataviewFilterRemoveResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockDataviewFilterRemoveResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockDataviewFilterRemove_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockDataviewFilterRemove' +type MockClientCommandsServer_BlockDataviewFilterRemove_Call struct { + *mock.Call +} + +// BlockDataviewFilterRemove is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockDataviewFilterRemoveRequest +func (_e *MockClientCommandsServer_Expecter) BlockDataviewFilterRemove(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockDataviewFilterRemove_Call { + return &MockClientCommandsServer_BlockDataviewFilterRemove_Call{Call: _e.mock.On("BlockDataviewFilterRemove", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockDataviewFilterRemove_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockDataviewFilterRemoveRequest)) *MockClientCommandsServer_BlockDataviewFilterRemove_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockDataviewFilterRemoveRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockDataviewFilterRemove_Call) Return(_a0 *pb.RpcBlockDataviewFilterRemoveResponse) *MockClientCommandsServer_BlockDataviewFilterRemove_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockDataviewFilterRemove_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockDataviewFilterRemoveRequest) *pb.RpcBlockDataviewFilterRemoveResponse) *MockClientCommandsServer_BlockDataviewFilterRemove_Call { + _c.Call.Return(run) + return _c +} + +// BlockDataviewFilterReplace provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockDataviewFilterReplace(_a0 context.Context, _a1 *pb.RpcBlockDataviewFilterReplaceRequest) *pb.RpcBlockDataviewFilterReplaceResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockDataviewFilterReplace") + } + + var r0 *pb.RpcBlockDataviewFilterReplaceResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockDataviewFilterReplaceRequest) *pb.RpcBlockDataviewFilterReplaceResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockDataviewFilterReplaceResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockDataviewFilterReplace_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockDataviewFilterReplace' +type MockClientCommandsServer_BlockDataviewFilterReplace_Call struct { + *mock.Call +} + +// BlockDataviewFilterReplace is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockDataviewFilterReplaceRequest +func (_e *MockClientCommandsServer_Expecter) BlockDataviewFilterReplace(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockDataviewFilterReplace_Call { + return &MockClientCommandsServer_BlockDataviewFilterReplace_Call{Call: _e.mock.On("BlockDataviewFilterReplace", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockDataviewFilterReplace_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockDataviewFilterReplaceRequest)) *MockClientCommandsServer_BlockDataviewFilterReplace_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockDataviewFilterReplaceRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockDataviewFilterReplace_Call) Return(_a0 *pb.RpcBlockDataviewFilterReplaceResponse) *MockClientCommandsServer_BlockDataviewFilterReplace_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockDataviewFilterReplace_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockDataviewFilterReplaceRequest) *pb.RpcBlockDataviewFilterReplaceResponse) *MockClientCommandsServer_BlockDataviewFilterReplace_Call { + _c.Call.Return(run) + return _c +} + +// BlockDataviewFilterSort provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockDataviewFilterSort(_a0 context.Context, _a1 *pb.RpcBlockDataviewFilterSortRequest) *pb.RpcBlockDataviewFilterSortResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockDataviewFilterSort") + } + + var r0 *pb.RpcBlockDataviewFilterSortResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockDataviewFilterSortRequest) *pb.RpcBlockDataviewFilterSortResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockDataviewFilterSortResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockDataviewFilterSort_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockDataviewFilterSort' +type MockClientCommandsServer_BlockDataviewFilterSort_Call struct { + *mock.Call +} + +// BlockDataviewFilterSort is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockDataviewFilterSortRequest +func (_e *MockClientCommandsServer_Expecter) BlockDataviewFilterSort(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockDataviewFilterSort_Call { + return &MockClientCommandsServer_BlockDataviewFilterSort_Call{Call: _e.mock.On("BlockDataviewFilterSort", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockDataviewFilterSort_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockDataviewFilterSortRequest)) *MockClientCommandsServer_BlockDataviewFilterSort_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockDataviewFilterSortRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockDataviewFilterSort_Call) Return(_a0 *pb.RpcBlockDataviewFilterSortResponse) *MockClientCommandsServer_BlockDataviewFilterSort_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockDataviewFilterSort_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockDataviewFilterSortRequest) *pb.RpcBlockDataviewFilterSortResponse) *MockClientCommandsServer_BlockDataviewFilterSort_Call { + _c.Call.Return(run) + return _c +} + +// BlockDataviewGroupOrderUpdate provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockDataviewGroupOrderUpdate(_a0 context.Context, _a1 *pb.RpcBlockDataviewGroupOrderUpdateRequest) *pb.RpcBlockDataviewGroupOrderUpdateResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockDataviewGroupOrderUpdate") + } + + var r0 *pb.RpcBlockDataviewGroupOrderUpdateResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockDataviewGroupOrderUpdateRequest) *pb.RpcBlockDataviewGroupOrderUpdateResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockDataviewGroupOrderUpdateResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockDataviewGroupOrderUpdate_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockDataviewGroupOrderUpdate' +type MockClientCommandsServer_BlockDataviewGroupOrderUpdate_Call struct { + *mock.Call +} + +// BlockDataviewGroupOrderUpdate is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockDataviewGroupOrderUpdateRequest +func (_e *MockClientCommandsServer_Expecter) BlockDataviewGroupOrderUpdate(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockDataviewGroupOrderUpdate_Call { + return &MockClientCommandsServer_BlockDataviewGroupOrderUpdate_Call{Call: _e.mock.On("BlockDataviewGroupOrderUpdate", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockDataviewGroupOrderUpdate_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockDataviewGroupOrderUpdateRequest)) *MockClientCommandsServer_BlockDataviewGroupOrderUpdate_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockDataviewGroupOrderUpdateRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockDataviewGroupOrderUpdate_Call) Return(_a0 *pb.RpcBlockDataviewGroupOrderUpdateResponse) *MockClientCommandsServer_BlockDataviewGroupOrderUpdate_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockDataviewGroupOrderUpdate_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockDataviewGroupOrderUpdateRequest) *pb.RpcBlockDataviewGroupOrderUpdateResponse) *MockClientCommandsServer_BlockDataviewGroupOrderUpdate_Call { + _c.Call.Return(run) + return _c +} + +// BlockDataviewObjectOrderMove provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockDataviewObjectOrderMove(_a0 context.Context, _a1 *pb.RpcBlockDataviewObjectOrderMoveRequest) *pb.RpcBlockDataviewObjectOrderMoveResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockDataviewObjectOrderMove") + } + + var r0 *pb.RpcBlockDataviewObjectOrderMoveResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockDataviewObjectOrderMoveRequest) *pb.RpcBlockDataviewObjectOrderMoveResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockDataviewObjectOrderMoveResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockDataviewObjectOrderMove_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockDataviewObjectOrderMove' +type MockClientCommandsServer_BlockDataviewObjectOrderMove_Call struct { + *mock.Call +} + +// BlockDataviewObjectOrderMove is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockDataviewObjectOrderMoveRequest +func (_e *MockClientCommandsServer_Expecter) BlockDataviewObjectOrderMove(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockDataviewObjectOrderMove_Call { + return &MockClientCommandsServer_BlockDataviewObjectOrderMove_Call{Call: _e.mock.On("BlockDataviewObjectOrderMove", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockDataviewObjectOrderMove_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockDataviewObjectOrderMoveRequest)) *MockClientCommandsServer_BlockDataviewObjectOrderMove_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockDataviewObjectOrderMoveRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockDataviewObjectOrderMove_Call) Return(_a0 *pb.RpcBlockDataviewObjectOrderMoveResponse) *MockClientCommandsServer_BlockDataviewObjectOrderMove_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockDataviewObjectOrderMove_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockDataviewObjectOrderMoveRequest) *pb.RpcBlockDataviewObjectOrderMoveResponse) *MockClientCommandsServer_BlockDataviewObjectOrderMove_Call { + _c.Call.Return(run) + return _c +} + +// BlockDataviewObjectOrderUpdate provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockDataviewObjectOrderUpdate(_a0 context.Context, _a1 *pb.RpcBlockDataviewObjectOrderUpdateRequest) *pb.RpcBlockDataviewObjectOrderUpdateResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockDataviewObjectOrderUpdate") + } + + var r0 *pb.RpcBlockDataviewObjectOrderUpdateResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockDataviewObjectOrderUpdateRequest) *pb.RpcBlockDataviewObjectOrderUpdateResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockDataviewObjectOrderUpdateResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockDataviewObjectOrderUpdate_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockDataviewObjectOrderUpdate' +type MockClientCommandsServer_BlockDataviewObjectOrderUpdate_Call struct { + *mock.Call +} + +// BlockDataviewObjectOrderUpdate is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockDataviewObjectOrderUpdateRequest +func (_e *MockClientCommandsServer_Expecter) BlockDataviewObjectOrderUpdate(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockDataviewObjectOrderUpdate_Call { + return &MockClientCommandsServer_BlockDataviewObjectOrderUpdate_Call{Call: _e.mock.On("BlockDataviewObjectOrderUpdate", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockDataviewObjectOrderUpdate_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockDataviewObjectOrderUpdateRequest)) *MockClientCommandsServer_BlockDataviewObjectOrderUpdate_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockDataviewObjectOrderUpdateRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockDataviewObjectOrderUpdate_Call) Return(_a0 *pb.RpcBlockDataviewObjectOrderUpdateResponse) *MockClientCommandsServer_BlockDataviewObjectOrderUpdate_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockDataviewObjectOrderUpdate_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockDataviewObjectOrderUpdateRequest) *pb.RpcBlockDataviewObjectOrderUpdateResponse) *MockClientCommandsServer_BlockDataviewObjectOrderUpdate_Call { + _c.Call.Return(run) + return _c +} + +// BlockDataviewRelationAdd provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockDataviewRelationAdd(_a0 context.Context, _a1 *pb.RpcBlockDataviewRelationAddRequest) *pb.RpcBlockDataviewRelationAddResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockDataviewRelationAdd") + } + + var r0 *pb.RpcBlockDataviewRelationAddResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockDataviewRelationAddRequest) *pb.RpcBlockDataviewRelationAddResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockDataviewRelationAddResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockDataviewRelationAdd_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockDataviewRelationAdd' +type MockClientCommandsServer_BlockDataviewRelationAdd_Call struct { + *mock.Call +} + +// BlockDataviewRelationAdd is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockDataviewRelationAddRequest +func (_e *MockClientCommandsServer_Expecter) BlockDataviewRelationAdd(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockDataviewRelationAdd_Call { + return &MockClientCommandsServer_BlockDataviewRelationAdd_Call{Call: _e.mock.On("BlockDataviewRelationAdd", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockDataviewRelationAdd_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockDataviewRelationAddRequest)) *MockClientCommandsServer_BlockDataviewRelationAdd_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockDataviewRelationAddRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockDataviewRelationAdd_Call) Return(_a0 *pb.RpcBlockDataviewRelationAddResponse) *MockClientCommandsServer_BlockDataviewRelationAdd_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockDataviewRelationAdd_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockDataviewRelationAddRequest) *pb.RpcBlockDataviewRelationAddResponse) *MockClientCommandsServer_BlockDataviewRelationAdd_Call { + _c.Call.Return(run) + return _c +} + +// BlockDataviewRelationDelete provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockDataviewRelationDelete(_a0 context.Context, _a1 *pb.RpcBlockDataviewRelationDeleteRequest) *pb.RpcBlockDataviewRelationDeleteResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockDataviewRelationDelete") + } + + var r0 *pb.RpcBlockDataviewRelationDeleteResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockDataviewRelationDeleteRequest) *pb.RpcBlockDataviewRelationDeleteResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockDataviewRelationDeleteResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockDataviewRelationDelete_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockDataviewRelationDelete' +type MockClientCommandsServer_BlockDataviewRelationDelete_Call struct { + *mock.Call +} + +// BlockDataviewRelationDelete is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockDataviewRelationDeleteRequest +func (_e *MockClientCommandsServer_Expecter) BlockDataviewRelationDelete(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockDataviewRelationDelete_Call { + return &MockClientCommandsServer_BlockDataviewRelationDelete_Call{Call: _e.mock.On("BlockDataviewRelationDelete", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockDataviewRelationDelete_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockDataviewRelationDeleteRequest)) *MockClientCommandsServer_BlockDataviewRelationDelete_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockDataviewRelationDeleteRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockDataviewRelationDelete_Call) Return(_a0 *pb.RpcBlockDataviewRelationDeleteResponse) *MockClientCommandsServer_BlockDataviewRelationDelete_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockDataviewRelationDelete_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockDataviewRelationDeleteRequest) *pb.RpcBlockDataviewRelationDeleteResponse) *MockClientCommandsServer_BlockDataviewRelationDelete_Call { + _c.Call.Return(run) + return _c +} + +// BlockDataviewSetSource provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockDataviewSetSource(_a0 context.Context, _a1 *pb.RpcBlockDataviewSetSourceRequest) *pb.RpcBlockDataviewSetSourceResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockDataviewSetSource") + } + + var r0 *pb.RpcBlockDataviewSetSourceResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockDataviewSetSourceRequest) *pb.RpcBlockDataviewSetSourceResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockDataviewSetSourceResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockDataviewSetSource_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockDataviewSetSource' +type MockClientCommandsServer_BlockDataviewSetSource_Call struct { + *mock.Call +} + +// BlockDataviewSetSource is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockDataviewSetSourceRequest +func (_e *MockClientCommandsServer_Expecter) BlockDataviewSetSource(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockDataviewSetSource_Call { + return &MockClientCommandsServer_BlockDataviewSetSource_Call{Call: _e.mock.On("BlockDataviewSetSource", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockDataviewSetSource_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockDataviewSetSourceRequest)) *MockClientCommandsServer_BlockDataviewSetSource_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockDataviewSetSourceRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockDataviewSetSource_Call) Return(_a0 *pb.RpcBlockDataviewSetSourceResponse) *MockClientCommandsServer_BlockDataviewSetSource_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockDataviewSetSource_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockDataviewSetSourceRequest) *pb.RpcBlockDataviewSetSourceResponse) *MockClientCommandsServer_BlockDataviewSetSource_Call { + _c.Call.Return(run) + return _c +} + +// BlockDataviewSortAdd provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockDataviewSortAdd(_a0 context.Context, _a1 *pb.RpcBlockDataviewSortAddRequest) *pb.RpcBlockDataviewSortAddResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockDataviewSortAdd") + } + + var r0 *pb.RpcBlockDataviewSortAddResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockDataviewSortAddRequest) *pb.RpcBlockDataviewSortAddResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockDataviewSortAddResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockDataviewSortAdd_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockDataviewSortAdd' +type MockClientCommandsServer_BlockDataviewSortAdd_Call struct { + *mock.Call +} + +// BlockDataviewSortAdd is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockDataviewSortAddRequest +func (_e *MockClientCommandsServer_Expecter) BlockDataviewSortAdd(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockDataviewSortAdd_Call { + return &MockClientCommandsServer_BlockDataviewSortAdd_Call{Call: _e.mock.On("BlockDataviewSortAdd", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockDataviewSortAdd_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockDataviewSortAddRequest)) *MockClientCommandsServer_BlockDataviewSortAdd_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockDataviewSortAddRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockDataviewSortAdd_Call) Return(_a0 *pb.RpcBlockDataviewSortAddResponse) *MockClientCommandsServer_BlockDataviewSortAdd_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockDataviewSortAdd_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockDataviewSortAddRequest) *pb.RpcBlockDataviewSortAddResponse) *MockClientCommandsServer_BlockDataviewSortAdd_Call { + _c.Call.Return(run) + return _c +} + +// BlockDataviewSortRemove provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockDataviewSortRemove(_a0 context.Context, _a1 *pb.RpcBlockDataviewSortRemoveRequest) *pb.RpcBlockDataviewSortRemoveResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockDataviewSortRemove") + } + + var r0 *pb.RpcBlockDataviewSortRemoveResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockDataviewSortRemoveRequest) *pb.RpcBlockDataviewSortRemoveResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockDataviewSortRemoveResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockDataviewSortRemove_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockDataviewSortRemove' +type MockClientCommandsServer_BlockDataviewSortRemove_Call struct { + *mock.Call +} + +// BlockDataviewSortRemove is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockDataviewSortRemoveRequest +func (_e *MockClientCommandsServer_Expecter) BlockDataviewSortRemove(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockDataviewSortRemove_Call { + return &MockClientCommandsServer_BlockDataviewSortRemove_Call{Call: _e.mock.On("BlockDataviewSortRemove", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockDataviewSortRemove_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockDataviewSortRemoveRequest)) *MockClientCommandsServer_BlockDataviewSortRemove_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockDataviewSortRemoveRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockDataviewSortRemove_Call) Return(_a0 *pb.RpcBlockDataviewSortRemoveResponse) *MockClientCommandsServer_BlockDataviewSortRemove_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockDataviewSortRemove_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockDataviewSortRemoveRequest) *pb.RpcBlockDataviewSortRemoveResponse) *MockClientCommandsServer_BlockDataviewSortRemove_Call { + _c.Call.Return(run) + return _c +} + +// BlockDataviewSortReplace provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockDataviewSortReplace(_a0 context.Context, _a1 *pb.RpcBlockDataviewSortReplaceRequest) *pb.RpcBlockDataviewSortReplaceResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockDataviewSortReplace") + } + + var r0 *pb.RpcBlockDataviewSortReplaceResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockDataviewSortReplaceRequest) *pb.RpcBlockDataviewSortReplaceResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockDataviewSortReplaceResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockDataviewSortReplace_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockDataviewSortReplace' +type MockClientCommandsServer_BlockDataviewSortReplace_Call struct { + *mock.Call +} + +// BlockDataviewSortReplace is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockDataviewSortReplaceRequest +func (_e *MockClientCommandsServer_Expecter) BlockDataviewSortReplace(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockDataviewSortReplace_Call { + return &MockClientCommandsServer_BlockDataviewSortReplace_Call{Call: _e.mock.On("BlockDataviewSortReplace", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockDataviewSortReplace_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockDataviewSortReplaceRequest)) *MockClientCommandsServer_BlockDataviewSortReplace_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockDataviewSortReplaceRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockDataviewSortReplace_Call) Return(_a0 *pb.RpcBlockDataviewSortReplaceResponse) *MockClientCommandsServer_BlockDataviewSortReplace_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockDataviewSortReplace_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockDataviewSortReplaceRequest) *pb.RpcBlockDataviewSortReplaceResponse) *MockClientCommandsServer_BlockDataviewSortReplace_Call { + _c.Call.Return(run) + return _c +} + +// BlockDataviewSortSort provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockDataviewSortSort(_a0 context.Context, _a1 *pb.RpcBlockDataviewSortSSortRequest) *pb.RpcBlockDataviewSortSSortResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockDataviewSortSort") + } + + var r0 *pb.RpcBlockDataviewSortSSortResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockDataviewSortSSortRequest) *pb.RpcBlockDataviewSortSSortResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockDataviewSortSSortResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockDataviewSortSort_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockDataviewSortSort' +type MockClientCommandsServer_BlockDataviewSortSort_Call struct { + *mock.Call +} + +// BlockDataviewSortSort is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockDataviewSortSSortRequest +func (_e *MockClientCommandsServer_Expecter) BlockDataviewSortSort(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockDataviewSortSort_Call { + return &MockClientCommandsServer_BlockDataviewSortSort_Call{Call: _e.mock.On("BlockDataviewSortSort", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockDataviewSortSort_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockDataviewSortSSortRequest)) *MockClientCommandsServer_BlockDataviewSortSort_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockDataviewSortSSortRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockDataviewSortSort_Call) Return(_a0 *pb.RpcBlockDataviewSortSSortResponse) *MockClientCommandsServer_BlockDataviewSortSort_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockDataviewSortSort_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockDataviewSortSSortRequest) *pb.RpcBlockDataviewSortSSortResponse) *MockClientCommandsServer_BlockDataviewSortSort_Call { + _c.Call.Return(run) + return _c +} + +// BlockDataviewViewCreate provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockDataviewViewCreate(_a0 context.Context, _a1 *pb.RpcBlockDataviewViewCreateRequest) *pb.RpcBlockDataviewViewCreateResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockDataviewViewCreate") + } + + var r0 *pb.RpcBlockDataviewViewCreateResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockDataviewViewCreateRequest) *pb.RpcBlockDataviewViewCreateResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockDataviewViewCreateResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockDataviewViewCreate_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockDataviewViewCreate' +type MockClientCommandsServer_BlockDataviewViewCreate_Call struct { + *mock.Call +} + +// BlockDataviewViewCreate is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockDataviewViewCreateRequest +func (_e *MockClientCommandsServer_Expecter) BlockDataviewViewCreate(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockDataviewViewCreate_Call { + return &MockClientCommandsServer_BlockDataviewViewCreate_Call{Call: _e.mock.On("BlockDataviewViewCreate", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockDataviewViewCreate_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockDataviewViewCreateRequest)) *MockClientCommandsServer_BlockDataviewViewCreate_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockDataviewViewCreateRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockDataviewViewCreate_Call) Return(_a0 *pb.RpcBlockDataviewViewCreateResponse) *MockClientCommandsServer_BlockDataviewViewCreate_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockDataviewViewCreate_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockDataviewViewCreateRequest) *pb.RpcBlockDataviewViewCreateResponse) *MockClientCommandsServer_BlockDataviewViewCreate_Call { + _c.Call.Return(run) + return _c +} + +// BlockDataviewViewDelete provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockDataviewViewDelete(_a0 context.Context, _a1 *pb.RpcBlockDataviewViewDeleteRequest) *pb.RpcBlockDataviewViewDeleteResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockDataviewViewDelete") + } + + var r0 *pb.RpcBlockDataviewViewDeleteResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockDataviewViewDeleteRequest) *pb.RpcBlockDataviewViewDeleteResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockDataviewViewDeleteResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockDataviewViewDelete_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockDataviewViewDelete' +type MockClientCommandsServer_BlockDataviewViewDelete_Call struct { + *mock.Call +} + +// BlockDataviewViewDelete is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockDataviewViewDeleteRequest +func (_e *MockClientCommandsServer_Expecter) BlockDataviewViewDelete(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockDataviewViewDelete_Call { + return &MockClientCommandsServer_BlockDataviewViewDelete_Call{Call: _e.mock.On("BlockDataviewViewDelete", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockDataviewViewDelete_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockDataviewViewDeleteRequest)) *MockClientCommandsServer_BlockDataviewViewDelete_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockDataviewViewDeleteRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockDataviewViewDelete_Call) Return(_a0 *pb.RpcBlockDataviewViewDeleteResponse) *MockClientCommandsServer_BlockDataviewViewDelete_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockDataviewViewDelete_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockDataviewViewDeleteRequest) *pb.RpcBlockDataviewViewDeleteResponse) *MockClientCommandsServer_BlockDataviewViewDelete_Call { + _c.Call.Return(run) + return _c +} + +// BlockDataviewViewRelationAdd provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockDataviewViewRelationAdd(_a0 context.Context, _a1 *pb.RpcBlockDataviewViewRelationAddRequest) *pb.RpcBlockDataviewViewRelationAddResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockDataviewViewRelationAdd") + } + + var r0 *pb.RpcBlockDataviewViewRelationAddResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockDataviewViewRelationAddRequest) *pb.RpcBlockDataviewViewRelationAddResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockDataviewViewRelationAddResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockDataviewViewRelationAdd_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockDataviewViewRelationAdd' +type MockClientCommandsServer_BlockDataviewViewRelationAdd_Call struct { + *mock.Call +} + +// BlockDataviewViewRelationAdd is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockDataviewViewRelationAddRequest +func (_e *MockClientCommandsServer_Expecter) BlockDataviewViewRelationAdd(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockDataviewViewRelationAdd_Call { + return &MockClientCommandsServer_BlockDataviewViewRelationAdd_Call{Call: _e.mock.On("BlockDataviewViewRelationAdd", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockDataviewViewRelationAdd_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockDataviewViewRelationAddRequest)) *MockClientCommandsServer_BlockDataviewViewRelationAdd_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockDataviewViewRelationAddRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockDataviewViewRelationAdd_Call) Return(_a0 *pb.RpcBlockDataviewViewRelationAddResponse) *MockClientCommandsServer_BlockDataviewViewRelationAdd_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockDataviewViewRelationAdd_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockDataviewViewRelationAddRequest) *pb.RpcBlockDataviewViewRelationAddResponse) *MockClientCommandsServer_BlockDataviewViewRelationAdd_Call { + _c.Call.Return(run) + return _c +} + +// BlockDataviewViewRelationRemove provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockDataviewViewRelationRemove(_a0 context.Context, _a1 *pb.RpcBlockDataviewViewRelationRemoveRequest) *pb.RpcBlockDataviewViewRelationRemoveResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockDataviewViewRelationRemove") + } + + var r0 *pb.RpcBlockDataviewViewRelationRemoveResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockDataviewViewRelationRemoveRequest) *pb.RpcBlockDataviewViewRelationRemoveResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockDataviewViewRelationRemoveResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockDataviewViewRelationRemove_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockDataviewViewRelationRemove' +type MockClientCommandsServer_BlockDataviewViewRelationRemove_Call struct { + *mock.Call +} + +// BlockDataviewViewRelationRemove is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockDataviewViewRelationRemoveRequest +func (_e *MockClientCommandsServer_Expecter) BlockDataviewViewRelationRemove(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockDataviewViewRelationRemove_Call { + return &MockClientCommandsServer_BlockDataviewViewRelationRemove_Call{Call: _e.mock.On("BlockDataviewViewRelationRemove", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockDataviewViewRelationRemove_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockDataviewViewRelationRemoveRequest)) *MockClientCommandsServer_BlockDataviewViewRelationRemove_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockDataviewViewRelationRemoveRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockDataviewViewRelationRemove_Call) Return(_a0 *pb.RpcBlockDataviewViewRelationRemoveResponse) *MockClientCommandsServer_BlockDataviewViewRelationRemove_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockDataviewViewRelationRemove_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockDataviewViewRelationRemoveRequest) *pb.RpcBlockDataviewViewRelationRemoveResponse) *MockClientCommandsServer_BlockDataviewViewRelationRemove_Call { + _c.Call.Return(run) + return _c +} + +// BlockDataviewViewRelationReplace provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockDataviewViewRelationReplace(_a0 context.Context, _a1 *pb.RpcBlockDataviewViewRelationReplaceRequest) *pb.RpcBlockDataviewViewRelationReplaceResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockDataviewViewRelationReplace") + } + + var r0 *pb.RpcBlockDataviewViewRelationReplaceResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockDataviewViewRelationReplaceRequest) *pb.RpcBlockDataviewViewRelationReplaceResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockDataviewViewRelationReplaceResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockDataviewViewRelationReplace_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockDataviewViewRelationReplace' +type MockClientCommandsServer_BlockDataviewViewRelationReplace_Call struct { + *mock.Call +} + +// BlockDataviewViewRelationReplace is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockDataviewViewRelationReplaceRequest +func (_e *MockClientCommandsServer_Expecter) BlockDataviewViewRelationReplace(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockDataviewViewRelationReplace_Call { + return &MockClientCommandsServer_BlockDataviewViewRelationReplace_Call{Call: _e.mock.On("BlockDataviewViewRelationReplace", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockDataviewViewRelationReplace_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockDataviewViewRelationReplaceRequest)) *MockClientCommandsServer_BlockDataviewViewRelationReplace_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockDataviewViewRelationReplaceRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockDataviewViewRelationReplace_Call) Return(_a0 *pb.RpcBlockDataviewViewRelationReplaceResponse) *MockClientCommandsServer_BlockDataviewViewRelationReplace_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockDataviewViewRelationReplace_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockDataviewViewRelationReplaceRequest) *pb.RpcBlockDataviewViewRelationReplaceResponse) *MockClientCommandsServer_BlockDataviewViewRelationReplace_Call { + _c.Call.Return(run) + return _c +} + +// BlockDataviewViewRelationSort provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockDataviewViewRelationSort(_a0 context.Context, _a1 *pb.RpcBlockDataviewViewRelationSortRequest) *pb.RpcBlockDataviewViewRelationSortResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockDataviewViewRelationSort") + } + + var r0 *pb.RpcBlockDataviewViewRelationSortResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockDataviewViewRelationSortRequest) *pb.RpcBlockDataviewViewRelationSortResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockDataviewViewRelationSortResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockDataviewViewRelationSort_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockDataviewViewRelationSort' +type MockClientCommandsServer_BlockDataviewViewRelationSort_Call struct { + *mock.Call +} + +// BlockDataviewViewRelationSort is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockDataviewViewRelationSortRequest +func (_e *MockClientCommandsServer_Expecter) BlockDataviewViewRelationSort(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockDataviewViewRelationSort_Call { + return &MockClientCommandsServer_BlockDataviewViewRelationSort_Call{Call: _e.mock.On("BlockDataviewViewRelationSort", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockDataviewViewRelationSort_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockDataviewViewRelationSortRequest)) *MockClientCommandsServer_BlockDataviewViewRelationSort_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockDataviewViewRelationSortRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockDataviewViewRelationSort_Call) Return(_a0 *pb.RpcBlockDataviewViewRelationSortResponse) *MockClientCommandsServer_BlockDataviewViewRelationSort_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockDataviewViewRelationSort_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockDataviewViewRelationSortRequest) *pb.RpcBlockDataviewViewRelationSortResponse) *MockClientCommandsServer_BlockDataviewViewRelationSort_Call { + _c.Call.Return(run) + return _c +} + +// BlockDataviewViewSetActive provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockDataviewViewSetActive(_a0 context.Context, _a1 *pb.RpcBlockDataviewViewSetActiveRequest) *pb.RpcBlockDataviewViewSetActiveResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockDataviewViewSetActive") + } + + var r0 *pb.RpcBlockDataviewViewSetActiveResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockDataviewViewSetActiveRequest) *pb.RpcBlockDataviewViewSetActiveResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockDataviewViewSetActiveResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockDataviewViewSetActive_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockDataviewViewSetActive' +type MockClientCommandsServer_BlockDataviewViewSetActive_Call struct { + *mock.Call +} + +// BlockDataviewViewSetActive is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockDataviewViewSetActiveRequest +func (_e *MockClientCommandsServer_Expecter) BlockDataviewViewSetActive(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockDataviewViewSetActive_Call { + return &MockClientCommandsServer_BlockDataviewViewSetActive_Call{Call: _e.mock.On("BlockDataviewViewSetActive", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockDataviewViewSetActive_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockDataviewViewSetActiveRequest)) *MockClientCommandsServer_BlockDataviewViewSetActive_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockDataviewViewSetActiveRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockDataviewViewSetActive_Call) Return(_a0 *pb.RpcBlockDataviewViewSetActiveResponse) *MockClientCommandsServer_BlockDataviewViewSetActive_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockDataviewViewSetActive_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockDataviewViewSetActiveRequest) *pb.RpcBlockDataviewViewSetActiveResponse) *MockClientCommandsServer_BlockDataviewViewSetActive_Call { + _c.Call.Return(run) + return _c +} + +// BlockDataviewViewSetPosition provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockDataviewViewSetPosition(_a0 context.Context, _a1 *pb.RpcBlockDataviewViewSetPositionRequest) *pb.RpcBlockDataviewViewSetPositionResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockDataviewViewSetPosition") + } + + var r0 *pb.RpcBlockDataviewViewSetPositionResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockDataviewViewSetPositionRequest) *pb.RpcBlockDataviewViewSetPositionResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockDataviewViewSetPositionResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockDataviewViewSetPosition_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockDataviewViewSetPosition' +type MockClientCommandsServer_BlockDataviewViewSetPosition_Call struct { + *mock.Call +} + +// BlockDataviewViewSetPosition is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockDataviewViewSetPositionRequest +func (_e *MockClientCommandsServer_Expecter) BlockDataviewViewSetPosition(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockDataviewViewSetPosition_Call { + return &MockClientCommandsServer_BlockDataviewViewSetPosition_Call{Call: _e.mock.On("BlockDataviewViewSetPosition", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockDataviewViewSetPosition_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockDataviewViewSetPositionRequest)) *MockClientCommandsServer_BlockDataviewViewSetPosition_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockDataviewViewSetPositionRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockDataviewViewSetPosition_Call) Return(_a0 *pb.RpcBlockDataviewViewSetPositionResponse) *MockClientCommandsServer_BlockDataviewViewSetPosition_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockDataviewViewSetPosition_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockDataviewViewSetPositionRequest) *pb.RpcBlockDataviewViewSetPositionResponse) *MockClientCommandsServer_BlockDataviewViewSetPosition_Call { + _c.Call.Return(run) + return _c +} + +// BlockDataviewViewUpdate provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockDataviewViewUpdate(_a0 context.Context, _a1 *pb.RpcBlockDataviewViewUpdateRequest) *pb.RpcBlockDataviewViewUpdateResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockDataviewViewUpdate") + } + + var r0 *pb.RpcBlockDataviewViewUpdateResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockDataviewViewUpdateRequest) *pb.RpcBlockDataviewViewUpdateResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockDataviewViewUpdateResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockDataviewViewUpdate_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockDataviewViewUpdate' +type MockClientCommandsServer_BlockDataviewViewUpdate_Call struct { + *mock.Call +} + +// BlockDataviewViewUpdate is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockDataviewViewUpdateRequest +func (_e *MockClientCommandsServer_Expecter) BlockDataviewViewUpdate(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockDataviewViewUpdate_Call { + return &MockClientCommandsServer_BlockDataviewViewUpdate_Call{Call: _e.mock.On("BlockDataviewViewUpdate", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockDataviewViewUpdate_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockDataviewViewUpdateRequest)) *MockClientCommandsServer_BlockDataviewViewUpdate_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockDataviewViewUpdateRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockDataviewViewUpdate_Call) Return(_a0 *pb.RpcBlockDataviewViewUpdateResponse) *MockClientCommandsServer_BlockDataviewViewUpdate_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockDataviewViewUpdate_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockDataviewViewUpdateRequest) *pb.RpcBlockDataviewViewUpdateResponse) *MockClientCommandsServer_BlockDataviewViewUpdate_Call { + _c.Call.Return(run) + return _c +} + +// BlockDivListSetStyle provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockDivListSetStyle(_a0 context.Context, _a1 *pb.RpcBlockDivListSetStyleRequest) *pb.RpcBlockDivListSetStyleResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockDivListSetStyle") + } + + var r0 *pb.RpcBlockDivListSetStyleResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockDivListSetStyleRequest) *pb.RpcBlockDivListSetStyleResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockDivListSetStyleResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockDivListSetStyle_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockDivListSetStyle' +type MockClientCommandsServer_BlockDivListSetStyle_Call struct { + *mock.Call +} + +// BlockDivListSetStyle is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockDivListSetStyleRequest +func (_e *MockClientCommandsServer_Expecter) BlockDivListSetStyle(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockDivListSetStyle_Call { + return &MockClientCommandsServer_BlockDivListSetStyle_Call{Call: _e.mock.On("BlockDivListSetStyle", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockDivListSetStyle_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockDivListSetStyleRequest)) *MockClientCommandsServer_BlockDivListSetStyle_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockDivListSetStyleRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockDivListSetStyle_Call) Return(_a0 *pb.RpcBlockDivListSetStyleResponse) *MockClientCommandsServer_BlockDivListSetStyle_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockDivListSetStyle_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockDivListSetStyleRequest) *pb.RpcBlockDivListSetStyleResponse) *MockClientCommandsServer_BlockDivListSetStyle_Call { + _c.Call.Return(run) + return _c +} + +// BlockExport provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockExport(_a0 context.Context, _a1 *pb.RpcBlockExportRequest) *pb.RpcBlockExportResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockExport") + } + + var r0 *pb.RpcBlockExportResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockExportRequest) *pb.RpcBlockExportResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockExportResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockExport_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockExport' +type MockClientCommandsServer_BlockExport_Call struct { + *mock.Call +} + +// BlockExport is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockExportRequest +func (_e *MockClientCommandsServer_Expecter) BlockExport(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockExport_Call { + return &MockClientCommandsServer_BlockExport_Call{Call: _e.mock.On("BlockExport", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockExport_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockExportRequest)) *MockClientCommandsServer_BlockExport_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockExportRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockExport_Call) Return(_a0 *pb.RpcBlockExportResponse) *MockClientCommandsServer_BlockExport_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockExport_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockExportRequest) *pb.RpcBlockExportResponse) *MockClientCommandsServer_BlockExport_Call { + _c.Call.Return(run) + return _c +} + +// BlockFileCreateAndUpload provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockFileCreateAndUpload(_a0 context.Context, _a1 *pb.RpcBlockFileCreateAndUploadRequest) *pb.RpcBlockFileCreateAndUploadResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockFileCreateAndUpload") + } + + var r0 *pb.RpcBlockFileCreateAndUploadResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockFileCreateAndUploadRequest) *pb.RpcBlockFileCreateAndUploadResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockFileCreateAndUploadResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockFileCreateAndUpload_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockFileCreateAndUpload' +type MockClientCommandsServer_BlockFileCreateAndUpload_Call struct { + *mock.Call +} + +// BlockFileCreateAndUpload is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockFileCreateAndUploadRequest +func (_e *MockClientCommandsServer_Expecter) BlockFileCreateAndUpload(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockFileCreateAndUpload_Call { + return &MockClientCommandsServer_BlockFileCreateAndUpload_Call{Call: _e.mock.On("BlockFileCreateAndUpload", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockFileCreateAndUpload_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockFileCreateAndUploadRequest)) *MockClientCommandsServer_BlockFileCreateAndUpload_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockFileCreateAndUploadRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockFileCreateAndUpload_Call) Return(_a0 *pb.RpcBlockFileCreateAndUploadResponse) *MockClientCommandsServer_BlockFileCreateAndUpload_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockFileCreateAndUpload_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockFileCreateAndUploadRequest) *pb.RpcBlockFileCreateAndUploadResponse) *MockClientCommandsServer_BlockFileCreateAndUpload_Call { + _c.Call.Return(run) + return _c +} + +// BlockFileListSetStyle provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockFileListSetStyle(_a0 context.Context, _a1 *pb.RpcBlockFileListSetStyleRequest) *pb.RpcBlockFileListSetStyleResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockFileListSetStyle") + } + + var r0 *pb.RpcBlockFileListSetStyleResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockFileListSetStyleRequest) *pb.RpcBlockFileListSetStyleResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockFileListSetStyleResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockFileListSetStyle_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockFileListSetStyle' +type MockClientCommandsServer_BlockFileListSetStyle_Call struct { + *mock.Call +} + +// BlockFileListSetStyle is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockFileListSetStyleRequest +func (_e *MockClientCommandsServer_Expecter) BlockFileListSetStyle(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockFileListSetStyle_Call { + return &MockClientCommandsServer_BlockFileListSetStyle_Call{Call: _e.mock.On("BlockFileListSetStyle", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockFileListSetStyle_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockFileListSetStyleRequest)) *MockClientCommandsServer_BlockFileListSetStyle_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockFileListSetStyleRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockFileListSetStyle_Call) Return(_a0 *pb.RpcBlockFileListSetStyleResponse) *MockClientCommandsServer_BlockFileListSetStyle_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockFileListSetStyle_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockFileListSetStyleRequest) *pb.RpcBlockFileListSetStyleResponse) *MockClientCommandsServer_BlockFileListSetStyle_Call { + _c.Call.Return(run) + return _c +} + +// BlockFileSetName provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockFileSetName(_a0 context.Context, _a1 *pb.RpcBlockFileSetNameRequest) *pb.RpcBlockFileSetNameResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockFileSetName") + } + + var r0 *pb.RpcBlockFileSetNameResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockFileSetNameRequest) *pb.RpcBlockFileSetNameResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockFileSetNameResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockFileSetName_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockFileSetName' +type MockClientCommandsServer_BlockFileSetName_Call struct { + *mock.Call +} + +// BlockFileSetName is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockFileSetNameRequest +func (_e *MockClientCommandsServer_Expecter) BlockFileSetName(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockFileSetName_Call { + return &MockClientCommandsServer_BlockFileSetName_Call{Call: _e.mock.On("BlockFileSetName", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockFileSetName_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockFileSetNameRequest)) *MockClientCommandsServer_BlockFileSetName_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockFileSetNameRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockFileSetName_Call) Return(_a0 *pb.RpcBlockFileSetNameResponse) *MockClientCommandsServer_BlockFileSetName_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockFileSetName_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockFileSetNameRequest) *pb.RpcBlockFileSetNameResponse) *MockClientCommandsServer_BlockFileSetName_Call { + _c.Call.Return(run) + return _c +} + +// BlockFileSetTargetObjectId provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockFileSetTargetObjectId(_a0 context.Context, _a1 *pb.RpcBlockFileSetTargetObjectIdRequest) *pb.RpcBlockFileSetTargetObjectIdResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockFileSetTargetObjectId") + } + + var r0 *pb.RpcBlockFileSetTargetObjectIdResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockFileSetTargetObjectIdRequest) *pb.RpcBlockFileSetTargetObjectIdResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockFileSetTargetObjectIdResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockFileSetTargetObjectId_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockFileSetTargetObjectId' +type MockClientCommandsServer_BlockFileSetTargetObjectId_Call struct { + *mock.Call +} + +// BlockFileSetTargetObjectId is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockFileSetTargetObjectIdRequest +func (_e *MockClientCommandsServer_Expecter) BlockFileSetTargetObjectId(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockFileSetTargetObjectId_Call { + return &MockClientCommandsServer_BlockFileSetTargetObjectId_Call{Call: _e.mock.On("BlockFileSetTargetObjectId", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockFileSetTargetObjectId_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockFileSetTargetObjectIdRequest)) *MockClientCommandsServer_BlockFileSetTargetObjectId_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockFileSetTargetObjectIdRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockFileSetTargetObjectId_Call) Return(_a0 *pb.RpcBlockFileSetTargetObjectIdResponse) *MockClientCommandsServer_BlockFileSetTargetObjectId_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockFileSetTargetObjectId_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockFileSetTargetObjectIdRequest) *pb.RpcBlockFileSetTargetObjectIdResponse) *MockClientCommandsServer_BlockFileSetTargetObjectId_Call { + _c.Call.Return(run) + return _c +} + +// BlockImageSetName provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockImageSetName(_a0 context.Context, _a1 *pb.RpcBlockImageSetNameRequest) *pb.RpcBlockImageSetNameResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockImageSetName") + } + + var r0 *pb.RpcBlockImageSetNameResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockImageSetNameRequest) *pb.RpcBlockImageSetNameResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockImageSetNameResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockImageSetName_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockImageSetName' +type MockClientCommandsServer_BlockImageSetName_Call struct { + *mock.Call +} + +// BlockImageSetName is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockImageSetNameRequest +func (_e *MockClientCommandsServer_Expecter) BlockImageSetName(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockImageSetName_Call { + return &MockClientCommandsServer_BlockImageSetName_Call{Call: _e.mock.On("BlockImageSetName", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockImageSetName_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockImageSetNameRequest)) *MockClientCommandsServer_BlockImageSetName_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockImageSetNameRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockImageSetName_Call) Return(_a0 *pb.RpcBlockImageSetNameResponse) *MockClientCommandsServer_BlockImageSetName_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockImageSetName_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockImageSetNameRequest) *pb.RpcBlockImageSetNameResponse) *MockClientCommandsServer_BlockImageSetName_Call { + _c.Call.Return(run) + return _c +} + +// BlockLatexSetText provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockLatexSetText(_a0 context.Context, _a1 *pb.RpcBlockLatexSetTextRequest) *pb.RpcBlockLatexSetTextResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockLatexSetText") + } + + var r0 *pb.RpcBlockLatexSetTextResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockLatexSetTextRequest) *pb.RpcBlockLatexSetTextResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockLatexSetTextResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockLatexSetText_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockLatexSetText' +type MockClientCommandsServer_BlockLatexSetText_Call struct { + *mock.Call +} + +// BlockLatexSetText is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockLatexSetTextRequest +func (_e *MockClientCommandsServer_Expecter) BlockLatexSetText(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockLatexSetText_Call { + return &MockClientCommandsServer_BlockLatexSetText_Call{Call: _e.mock.On("BlockLatexSetText", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockLatexSetText_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockLatexSetTextRequest)) *MockClientCommandsServer_BlockLatexSetText_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockLatexSetTextRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockLatexSetText_Call) Return(_a0 *pb.RpcBlockLatexSetTextResponse) *MockClientCommandsServer_BlockLatexSetText_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockLatexSetText_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockLatexSetTextRequest) *pb.RpcBlockLatexSetTextResponse) *MockClientCommandsServer_BlockLatexSetText_Call { + _c.Call.Return(run) + return _c +} + +// BlockLinkCreateWithObject provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockLinkCreateWithObject(_a0 context.Context, _a1 *pb.RpcBlockLinkCreateWithObjectRequest) *pb.RpcBlockLinkCreateWithObjectResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockLinkCreateWithObject") + } + + var r0 *pb.RpcBlockLinkCreateWithObjectResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockLinkCreateWithObjectRequest) *pb.RpcBlockLinkCreateWithObjectResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockLinkCreateWithObjectResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockLinkCreateWithObject_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockLinkCreateWithObject' +type MockClientCommandsServer_BlockLinkCreateWithObject_Call struct { + *mock.Call +} + +// BlockLinkCreateWithObject is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockLinkCreateWithObjectRequest +func (_e *MockClientCommandsServer_Expecter) BlockLinkCreateWithObject(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockLinkCreateWithObject_Call { + return &MockClientCommandsServer_BlockLinkCreateWithObject_Call{Call: _e.mock.On("BlockLinkCreateWithObject", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockLinkCreateWithObject_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockLinkCreateWithObjectRequest)) *MockClientCommandsServer_BlockLinkCreateWithObject_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockLinkCreateWithObjectRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockLinkCreateWithObject_Call) Return(_a0 *pb.RpcBlockLinkCreateWithObjectResponse) *MockClientCommandsServer_BlockLinkCreateWithObject_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockLinkCreateWithObject_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockLinkCreateWithObjectRequest) *pb.RpcBlockLinkCreateWithObjectResponse) *MockClientCommandsServer_BlockLinkCreateWithObject_Call { + _c.Call.Return(run) + return _c +} + +// BlockLinkListSetAppearance provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockLinkListSetAppearance(_a0 context.Context, _a1 *pb.RpcBlockLinkListSetAppearanceRequest) *pb.RpcBlockLinkListSetAppearanceResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockLinkListSetAppearance") + } + + var r0 *pb.RpcBlockLinkListSetAppearanceResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockLinkListSetAppearanceRequest) *pb.RpcBlockLinkListSetAppearanceResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockLinkListSetAppearanceResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockLinkListSetAppearance_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockLinkListSetAppearance' +type MockClientCommandsServer_BlockLinkListSetAppearance_Call struct { + *mock.Call +} + +// BlockLinkListSetAppearance is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockLinkListSetAppearanceRequest +func (_e *MockClientCommandsServer_Expecter) BlockLinkListSetAppearance(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockLinkListSetAppearance_Call { + return &MockClientCommandsServer_BlockLinkListSetAppearance_Call{Call: _e.mock.On("BlockLinkListSetAppearance", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockLinkListSetAppearance_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockLinkListSetAppearanceRequest)) *MockClientCommandsServer_BlockLinkListSetAppearance_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockLinkListSetAppearanceRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockLinkListSetAppearance_Call) Return(_a0 *pb.RpcBlockLinkListSetAppearanceResponse) *MockClientCommandsServer_BlockLinkListSetAppearance_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockLinkListSetAppearance_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockLinkListSetAppearanceRequest) *pb.RpcBlockLinkListSetAppearanceResponse) *MockClientCommandsServer_BlockLinkListSetAppearance_Call { + _c.Call.Return(run) + return _c +} + +// BlockListConvertToObjects provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockListConvertToObjects(_a0 context.Context, _a1 *pb.RpcBlockListConvertToObjectsRequest) *pb.RpcBlockListConvertToObjectsResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockListConvertToObjects") + } + + var r0 *pb.RpcBlockListConvertToObjectsResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockListConvertToObjectsRequest) *pb.RpcBlockListConvertToObjectsResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockListConvertToObjectsResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockListConvertToObjects_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockListConvertToObjects' +type MockClientCommandsServer_BlockListConvertToObjects_Call struct { + *mock.Call +} + +// BlockListConvertToObjects is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockListConvertToObjectsRequest +func (_e *MockClientCommandsServer_Expecter) BlockListConvertToObjects(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockListConvertToObjects_Call { + return &MockClientCommandsServer_BlockListConvertToObjects_Call{Call: _e.mock.On("BlockListConvertToObjects", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockListConvertToObjects_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockListConvertToObjectsRequest)) *MockClientCommandsServer_BlockListConvertToObjects_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockListConvertToObjectsRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockListConvertToObjects_Call) Return(_a0 *pb.RpcBlockListConvertToObjectsResponse) *MockClientCommandsServer_BlockListConvertToObjects_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockListConvertToObjects_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockListConvertToObjectsRequest) *pb.RpcBlockListConvertToObjectsResponse) *MockClientCommandsServer_BlockListConvertToObjects_Call { + _c.Call.Return(run) + return _c +} + +// BlockListDelete provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockListDelete(_a0 context.Context, _a1 *pb.RpcBlockListDeleteRequest) *pb.RpcBlockListDeleteResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockListDelete") + } + + var r0 *pb.RpcBlockListDeleteResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockListDeleteRequest) *pb.RpcBlockListDeleteResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockListDeleteResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockListDelete_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockListDelete' +type MockClientCommandsServer_BlockListDelete_Call struct { + *mock.Call +} + +// BlockListDelete is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockListDeleteRequest +func (_e *MockClientCommandsServer_Expecter) BlockListDelete(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockListDelete_Call { + return &MockClientCommandsServer_BlockListDelete_Call{Call: _e.mock.On("BlockListDelete", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockListDelete_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockListDeleteRequest)) *MockClientCommandsServer_BlockListDelete_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockListDeleteRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockListDelete_Call) Return(_a0 *pb.RpcBlockListDeleteResponse) *MockClientCommandsServer_BlockListDelete_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockListDelete_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockListDeleteRequest) *pb.RpcBlockListDeleteResponse) *MockClientCommandsServer_BlockListDelete_Call { + _c.Call.Return(run) + return _c +} + +// BlockListDuplicate provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockListDuplicate(_a0 context.Context, _a1 *pb.RpcBlockListDuplicateRequest) *pb.RpcBlockListDuplicateResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockListDuplicate") + } + + var r0 *pb.RpcBlockListDuplicateResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockListDuplicateRequest) *pb.RpcBlockListDuplicateResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockListDuplicateResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockListDuplicate_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockListDuplicate' +type MockClientCommandsServer_BlockListDuplicate_Call struct { + *mock.Call +} + +// BlockListDuplicate is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockListDuplicateRequest +func (_e *MockClientCommandsServer_Expecter) BlockListDuplicate(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockListDuplicate_Call { + return &MockClientCommandsServer_BlockListDuplicate_Call{Call: _e.mock.On("BlockListDuplicate", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockListDuplicate_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockListDuplicateRequest)) *MockClientCommandsServer_BlockListDuplicate_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockListDuplicateRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockListDuplicate_Call) Return(_a0 *pb.RpcBlockListDuplicateResponse) *MockClientCommandsServer_BlockListDuplicate_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockListDuplicate_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockListDuplicateRequest) *pb.RpcBlockListDuplicateResponse) *MockClientCommandsServer_BlockListDuplicate_Call { + _c.Call.Return(run) + return _c +} + +// BlockListMoveToExistingObject provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockListMoveToExistingObject(_a0 context.Context, _a1 *pb.RpcBlockListMoveToExistingObjectRequest) *pb.RpcBlockListMoveToExistingObjectResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockListMoveToExistingObject") + } + + var r0 *pb.RpcBlockListMoveToExistingObjectResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockListMoveToExistingObjectRequest) *pb.RpcBlockListMoveToExistingObjectResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockListMoveToExistingObjectResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockListMoveToExistingObject_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockListMoveToExistingObject' +type MockClientCommandsServer_BlockListMoveToExistingObject_Call struct { + *mock.Call +} + +// BlockListMoveToExistingObject is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockListMoveToExistingObjectRequest +func (_e *MockClientCommandsServer_Expecter) BlockListMoveToExistingObject(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockListMoveToExistingObject_Call { + return &MockClientCommandsServer_BlockListMoveToExistingObject_Call{Call: _e.mock.On("BlockListMoveToExistingObject", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockListMoveToExistingObject_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockListMoveToExistingObjectRequest)) *MockClientCommandsServer_BlockListMoveToExistingObject_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockListMoveToExistingObjectRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockListMoveToExistingObject_Call) Return(_a0 *pb.RpcBlockListMoveToExistingObjectResponse) *MockClientCommandsServer_BlockListMoveToExistingObject_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockListMoveToExistingObject_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockListMoveToExistingObjectRequest) *pb.RpcBlockListMoveToExistingObjectResponse) *MockClientCommandsServer_BlockListMoveToExistingObject_Call { + _c.Call.Return(run) + return _c +} + +// BlockListMoveToNewObject provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockListMoveToNewObject(_a0 context.Context, _a1 *pb.RpcBlockListMoveToNewObjectRequest) *pb.RpcBlockListMoveToNewObjectResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockListMoveToNewObject") + } + + var r0 *pb.RpcBlockListMoveToNewObjectResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockListMoveToNewObjectRequest) *pb.RpcBlockListMoveToNewObjectResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockListMoveToNewObjectResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockListMoveToNewObject_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockListMoveToNewObject' +type MockClientCommandsServer_BlockListMoveToNewObject_Call struct { + *mock.Call +} + +// BlockListMoveToNewObject is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockListMoveToNewObjectRequest +func (_e *MockClientCommandsServer_Expecter) BlockListMoveToNewObject(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockListMoveToNewObject_Call { + return &MockClientCommandsServer_BlockListMoveToNewObject_Call{Call: _e.mock.On("BlockListMoveToNewObject", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockListMoveToNewObject_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockListMoveToNewObjectRequest)) *MockClientCommandsServer_BlockListMoveToNewObject_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockListMoveToNewObjectRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockListMoveToNewObject_Call) Return(_a0 *pb.RpcBlockListMoveToNewObjectResponse) *MockClientCommandsServer_BlockListMoveToNewObject_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockListMoveToNewObject_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockListMoveToNewObjectRequest) *pb.RpcBlockListMoveToNewObjectResponse) *MockClientCommandsServer_BlockListMoveToNewObject_Call { + _c.Call.Return(run) + return _c +} + +// BlockListSetAlign provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockListSetAlign(_a0 context.Context, _a1 *pb.RpcBlockListSetAlignRequest) *pb.RpcBlockListSetAlignResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockListSetAlign") + } + + var r0 *pb.RpcBlockListSetAlignResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockListSetAlignRequest) *pb.RpcBlockListSetAlignResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockListSetAlignResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockListSetAlign_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockListSetAlign' +type MockClientCommandsServer_BlockListSetAlign_Call struct { + *mock.Call +} + +// BlockListSetAlign is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockListSetAlignRequest +func (_e *MockClientCommandsServer_Expecter) BlockListSetAlign(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockListSetAlign_Call { + return &MockClientCommandsServer_BlockListSetAlign_Call{Call: _e.mock.On("BlockListSetAlign", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockListSetAlign_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockListSetAlignRequest)) *MockClientCommandsServer_BlockListSetAlign_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockListSetAlignRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockListSetAlign_Call) Return(_a0 *pb.RpcBlockListSetAlignResponse) *MockClientCommandsServer_BlockListSetAlign_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockListSetAlign_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockListSetAlignRequest) *pb.RpcBlockListSetAlignResponse) *MockClientCommandsServer_BlockListSetAlign_Call { + _c.Call.Return(run) + return _c +} + +// BlockListSetBackgroundColor provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockListSetBackgroundColor(_a0 context.Context, _a1 *pb.RpcBlockListSetBackgroundColorRequest) *pb.RpcBlockListSetBackgroundColorResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockListSetBackgroundColor") + } + + var r0 *pb.RpcBlockListSetBackgroundColorResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockListSetBackgroundColorRequest) *pb.RpcBlockListSetBackgroundColorResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockListSetBackgroundColorResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockListSetBackgroundColor_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockListSetBackgroundColor' +type MockClientCommandsServer_BlockListSetBackgroundColor_Call struct { + *mock.Call +} + +// BlockListSetBackgroundColor is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockListSetBackgroundColorRequest +func (_e *MockClientCommandsServer_Expecter) BlockListSetBackgroundColor(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockListSetBackgroundColor_Call { + return &MockClientCommandsServer_BlockListSetBackgroundColor_Call{Call: _e.mock.On("BlockListSetBackgroundColor", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockListSetBackgroundColor_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockListSetBackgroundColorRequest)) *MockClientCommandsServer_BlockListSetBackgroundColor_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockListSetBackgroundColorRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockListSetBackgroundColor_Call) Return(_a0 *pb.RpcBlockListSetBackgroundColorResponse) *MockClientCommandsServer_BlockListSetBackgroundColor_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockListSetBackgroundColor_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockListSetBackgroundColorRequest) *pb.RpcBlockListSetBackgroundColorResponse) *MockClientCommandsServer_BlockListSetBackgroundColor_Call { + _c.Call.Return(run) + return _c +} + +// BlockListSetFields provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockListSetFields(_a0 context.Context, _a1 *pb.RpcBlockListSetFieldsRequest) *pb.RpcBlockListSetFieldsResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockListSetFields") + } + + var r0 *pb.RpcBlockListSetFieldsResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockListSetFieldsRequest) *pb.RpcBlockListSetFieldsResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockListSetFieldsResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockListSetFields_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockListSetFields' +type MockClientCommandsServer_BlockListSetFields_Call struct { + *mock.Call +} + +// BlockListSetFields is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockListSetFieldsRequest +func (_e *MockClientCommandsServer_Expecter) BlockListSetFields(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockListSetFields_Call { + return &MockClientCommandsServer_BlockListSetFields_Call{Call: _e.mock.On("BlockListSetFields", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockListSetFields_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockListSetFieldsRequest)) *MockClientCommandsServer_BlockListSetFields_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockListSetFieldsRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockListSetFields_Call) Return(_a0 *pb.RpcBlockListSetFieldsResponse) *MockClientCommandsServer_BlockListSetFields_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockListSetFields_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockListSetFieldsRequest) *pb.RpcBlockListSetFieldsResponse) *MockClientCommandsServer_BlockListSetFields_Call { + _c.Call.Return(run) + return _c +} + +// BlockListSetVerticalAlign provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockListSetVerticalAlign(_a0 context.Context, _a1 *pb.RpcBlockListSetVerticalAlignRequest) *pb.RpcBlockListSetVerticalAlignResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockListSetVerticalAlign") + } + + var r0 *pb.RpcBlockListSetVerticalAlignResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockListSetVerticalAlignRequest) *pb.RpcBlockListSetVerticalAlignResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockListSetVerticalAlignResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockListSetVerticalAlign_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockListSetVerticalAlign' +type MockClientCommandsServer_BlockListSetVerticalAlign_Call struct { + *mock.Call +} + +// BlockListSetVerticalAlign is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockListSetVerticalAlignRequest +func (_e *MockClientCommandsServer_Expecter) BlockListSetVerticalAlign(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockListSetVerticalAlign_Call { + return &MockClientCommandsServer_BlockListSetVerticalAlign_Call{Call: _e.mock.On("BlockListSetVerticalAlign", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockListSetVerticalAlign_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockListSetVerticalAlignRequest)) *MockClientCommandsServer_BlockListSetVerticalAlign_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockListSetVerticalAlignRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockListSetVerticalAlign_Call) Return(_a0 *pb.RpcBlockListSetVerticalAlignResponse) *MockClientCommandsServer_BlockListSetVerticalAlign_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockListSetVerticalAlign_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockListSetVerticalAlignRequest) *pb.RpcBlockListSetVerticalAlignResponse) *MockClientCommandsServer_BlockListSetVerticalAlign_Call { + _c.Call.Return(run) + return _c +} + +// BlockListTurnInto provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockListTurnInto(_a0 context.Context, _a1 *pb.RpcBlockListTurnIntoRequest) *pb.RpcBlockListTurnIntoResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockListTurnInto") + } + + var r0 *pb.RpcBlockListTurnIntoResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockListTurnIntoRequest) *pb.RpcBlockListTurnIntoResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockListTurnIntoResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockListTurnInto_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockListTurnInto' +type MockClientCommandsServer_BlockListTurnInto_Call struct { + *mock.Call +} + +// BlockListTurnInto is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockListTurnIntoRequest +func (_e *MockClientCommandsServer_Expecter) BlockListTurnInto(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockListTurnInto_Call { + return &MockClientCommandsServer_BlockListTurnInto_Call{Call: _e.mock.On("BlockListTurnInto", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockListTurnInto_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockListTurnIntoRequest)) *MockClientCommandsServer_BlockListTurnInto_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockListTurnIntoRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockListTurnInto_Call) Return(_a0 *pb.RpcBlockListTurnIntoResponse) *MockClientCommandsServer_BlockListTurnInto_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockListTurnInto_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockListTurnIntoRequest) *pb.RpcBlockListTurnIntoResponse) *MockClientCommandsServer_BlockListTurnInto_Call { + _c.Call.Return(run) + return _c +} + +// BlockMerge provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockMerge(_a0 context.Context, _a1 *pb.RpcBlockMergeRequest) *pb.RpcBlockMergeResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockMerge") + } + + var r0 *pb.RpcBlockMergeResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockMergeRequest) *pb.RpcBlockMergeResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockMergeResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockMerge_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockMerge' +type MockClientCommandsServer_BlockMerge_Call struct { + *mock.Call +} + +// BlockMerge is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockMergeRequest +func (_e *MockClientCommandsServer_Expecter) BlockMerge(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockMerge_Call { + return &MockClientCommandsServer_BlockMerge_Call{Call: _e.mock.On("BlockMerge", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockMerge_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockMergeRequest)) *MockClientCommandsServer_BlockMerge_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockMergeRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockMerge_Call) Return(_a0 *pb.RpcBlockMergeResponse) *MockClientCommandsServer_BlockMerge_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockMerge_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockMergeRequest) *pb.RpcBlockMergeResponse) *MockClientCommandsServer_BlockMerge_Call { + _c.Call.Return(run) + return _c +} + +// BlockPaste provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockPaste(_a0 context.Context, _a1 *pb.RpcBlockPasteRequest) *pb.RpcBlockPasteResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockPaste") + } + + var r0 *pb.RpcBlockPasteResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockPasteRequest) *pb.RpcBlockPasteResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockPasteResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockPaste_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockPaste' +type MockClientCommandsServer_BlockPaste_Call struct { + *mock.Call +} + +// BlockPaste is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockPasteRequest +func (_e *MockClientCommandsServer_Expecter) BlockPaste(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockPaste_Call { + return &MockClientCommandsServer_BlockPaste_Call{Call: _e.mock.On("BlockPaste", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockPaste_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockPasteRequest)) *MockClientCommandsServer_BlockPaste_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockPasteRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockPaste_Call) Return(_a0 *pb.RpcBlockPasteResponse) *MockClientCommandsServer_BlockPaste_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockPaste_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockPasteRequest) *pb.RpcBlockPasteResponse) *MockClientCommandsServer_BlockPaste_Call { + _c.Call.Return(run) + return _c +} + +// BlockPreview provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockPreview(_a0 context.Context, _a1 *pb.RpcBlockPreviewRequest) *pb.RpcBlockPreviewResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockPreview") + } + + var r0 *pb.RpcBlockPreviewResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockPreviewRequest) *pb.RpcBlockPreviewResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockPreviewResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockPreview_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockPreview' +type MockClientCommandsServer_BlockPreview_Call struct { + *mock.Call +} + +// BlockPreview is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockPreviewRequest +func (_e *MockClientCommandsServer_Expecter) BlockPreview(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockPreview_Call { + return &MockClientCommandsServer_BlockPreview_Call{Call: _e.mock.On("BlockPreview", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockPreview_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockPreviewRequest)) *MockClientCommandsServer_BlockPreview_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockPreviewRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockPreview_Call) Return(_a0 *pb.RpcBlockPreviewResponse) *MockClientCommandsServer_BlockPreview_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockPreview_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockPreviewRequest) *pb.RpcBlockPreviewResponse) *MockClientCommandsServer_BlockPreview_Call { + _c.Call.Return(run) + return _c +} + +// BlockRelationAdd provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockRelationAdd(_a0 context.Context, _a1 *pb.RpcBlockRelationAddRequest) *pb.RpcBlockRelationAddResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockRelationAdd") + } + + var r0 *pb.RpcBlockRelationAddResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockRelationAddRequest) *pb.RpcBlockRelationAddResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockRelationAddResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockRelationAdd_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockRelationAdd' +type MockClientCommandsServer_BlockRelationAdd_Call struct { + *mock.Call +} + +// BlockRelationAdd is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockRelationAddRequest +func (_e *MockClientCommandsServer_Expecter) BlockRelationAdd(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockRelationAdd_Call { + return &MockClientCommandsServer_BlockRelationAdd_Call{Call: _e.mock.On("BlockRelationAdd", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockRelationAdd_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockRelationAddRequest)) *MockClientCommandsServer_BlockRelationAdd_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockRelationAddRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockRelationAdd_Call) Return(_a0 *pb.RpcBlockRelationAddResponse) *MockClientCommandsServer_BlockRelationAdd_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockRelationAdd_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockRelationAddRequest) *pb.RpcBlockRelationAddResponse) *MockClientCommandsServer_BlockRelationAdd_Call { + _c.Call.Return(run) + return _c +} + +// BlockRelationSetKey provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockRelationSetKey(_a0 context.Context, _a1 *pb.RpcBlockRelationSetKeyRequest) *pb.RpcBlockRelationSetKeyResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockRelationSetKey") + } + + var r0 *pb.RpcBlockRelationSetKeyResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockRelationSetKeyRequest) *pb.RpcBlockRelationSetKeyResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockRelationSetKeyResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockRelationSetKey_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockRelationSetKey' +type MockClientCommandsServer_BlockRelationSetKey_Call struct { + *mock.Call +} + +// BlockRelationSetKey is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockRelationSetKeyRequest +func (_e *MockClientCommandsServer_Expecter) BlockRelationSetKey(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockRelationSetKey_Call { + return &MockClientCommandsServer_BlockRelationSetKey_Call{Call: _e.mock.On("BlockRelationSetKey", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockRelationSetKey_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockRelationSetKeyRequest)) *MockClientCommandsServer_BlockRelationSetKey_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockRelationSetKeyRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockRelationSetKey_Call) Return(_a0 *pb.RpcBlockRelationSetKeyResponse) *MockClientCommandsServer_BlockRelationSetKey_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockRelationSetKey_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockRelationSetKeyRequest) *pb.RpcBlockRelationSetKeyResponse) *MockClientCommandsServer_BlockRelationSetKey_Call { + _c.Call.Return(run) + return _c +} + +// BlockReplace provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockReplace(_a0 context.Context, _a1 *pb.RpcBlockReplaceRequest) *pb.RpcBlockReplaceResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockReplace") + } + + var r0 *pb.RpcBlockReplaceResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockReplaceRequest) *pb.RpcBlockReplaceResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockReplaceResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockReplace_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockReplace' +type MockClientCommandsServer_BlockReplace_Call struct { + *mock.Call +} + +// BlockReplace is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockReplaceRequest +func (_e *MockClientCommandsServer_Expecter) BlockReplace(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockReplace_Call { + return &MockClientCommandsServer_BlockReplace_Call{Call: _e.mock.On("BlockReplace", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockReplace_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockReplaceRequest)) *MockClientCommandsServer_BlockReplace_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockReplaceRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockReplace_Call) Return(_a0 *pb.RpcBlockReplaceResponse) *MockClientCommandsServer_BlockReplace_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockReplace_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockReplaceRequest) *pb.RpcBlockReplaceResponse) *MockClientCommandsServer_BlockReplace_Call { + _c.Call.Return(run) + return _c +} + +// BlockSetCarriage provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockSetCarriage(_a0 context.Context, _a1 *pb.RpcBlockSetCarriageRequest) *pb.RpcBlockSetCarriageResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockSetCarriage") + } + + var r0 *pb.RpcBlockSetCarriageResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockSetCarriageRequest) *pb.RpcBlockSetCarriageResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockSetCarriageResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockSetCarriage_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockSetCarriage' +type MockClientCommandsServer_BlockSetCarriage_Call struct { + *mock.Call +} + +// BlockSetCarriage is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockSetCarriageRequest +func (_e *MockClientCommandsServer_Expecter) BlockSetCarriage(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockSetCarriage_Call { + return &MockClientCommandsServer_BlockSetCarriage_Call{Call: _e.mock.On("BlockSetCarriage", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockSetCarriage_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockSetCarriageRequest)) *MockClientCommandsServer_BlockSetCarriage_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockSetCarriageRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockSetCarriage_Call) Return(_a0 *pb.RpcBlockSetCarriageResponse) *MockClientCommandsServer_BlockSetCarriage_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockSetCarriage_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockSetCarriageRequest) *pb.RpcBlockSetCarriageResponse) *MockClientCommandsServer_BlockSetCarriage_Call { + _c.Call.Return(run) + return _c +} + +// BlockSetFields provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockSetFields(_a0 context.Context, _a1 *pb.RpcBlockSetFieldsRequest) *pb.RpcBlockSetFieldsResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockSetFields") + } + + var r0 *pb.RpcBlockSetFieldsResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockSetFieldsRequest) *pb.RpcBlockSetFieldsResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockSetFieldsResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockSetFields_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockSetFields' +type MockClientCommandsServer_BlockSetFields_Call struct { + *mock.Call +} + +// BlockSetFields is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockSetFieldsRequest +func (_e *MockClientCommandsServer_Expecter) BlockSetFields(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockSetFields_Call { + return &MockClientCommandsServer_BlockSetFields_Call{Call: _e.mock.On("BlockSetFields", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockSetFields_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockSetFieldsRequest)) *MockClientCommandsServer_BlockSetFields_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockSetFieldsRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockSetFields_Call) Return(_a0 *pb.RpcBlockSetFieldsResponse) *MockClientCommandsServer_BlockSetFields_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockSetFields_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockSetFieldsRequest) *pb.RpcBlockSetFieldsResponse) *MockClientCommandsServer_BlockSetFields_Call { + _c.Call.Return(run) + return _c +} + +// BlockSplit provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockSplit(_a0 context.Context, _a1 *pb.RpcBlockSplitRequest) *pb.RpcBlockSplitResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockSplit") + } + + var r0 *pb.RpcBlockSplitResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockSplitRequest) *pb.RpcBlockSplitResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockSplitResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockSplit_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockSplit' +type MockClientCommandsServer_BlockSplit_Call struct { + *mock.Call +} + +// BlockSplit is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockSplitRequest +func (_e *MockClientCommandsServer_Expecter) BlockSplit(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockSplit_Call { + return &MockClientCommandsServer_BlockSplit_Call{Call: _e.mock.On("BlockSplit", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockSplit_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockSplitRequest)) *MockClientCommandsServer_BlockSplit_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockSplitRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockSplit_Call) Return(_a0 *pb.RpcBlockSplitResponse) *MockClientCommandsServer_BlockSplit_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockSplit_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockSplitRequest) *pb.RpcBlockSplitResponse) *MockClientCommandsServer_BlockSplit_Call { + _c.Call.Return(run) + return _c +} + +// BlockTableColumnCreate provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockTableColumnCreate(_a0 context.Context, _a1 *pb.RpcBlockTableColumnCreateRequest) *pb.RpcBlockTableColumnCreateResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockTableColumnCreate") + } + + var r0 *pb.RpcBlockTableColumnCreateResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockTableColumnCreateRequest) *pb.RpcBlockTableColumnCreateResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockTableColumnCreateResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockTableColumnCreate_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockTableColumnCreate' +type MockClientCommandsServer_BlockTableColumnCreate_Call struct { + *mock.Call +} + +// BlockTableColumnCreate is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockTableColumnCreateRequest +func (_e *MockClientCommandsServer_Expecter) BlockTableColumnCreate(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockTableColumnCreate_Call { + return &MockClientCommandsServer_BlockTableColumnCreate_Call{Call: _e.mock.On("BlockTableColumnCreate", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockTableColumnCreate_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockTableColumnCreateRequest)) *MockClientCommandsServer_BlockTableColumnCreate_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockTableColumnCreateRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockTableColumnCreate_Call) Return(_a0 *pb.RpcBlockTableColumnCreateResponse) *MockClientCommandsServer_BlockTableColumnCreate_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockTableColumnCreate_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockTableColumnCreateRequest) *pb.RpcBlockTableColumnCreateResponse) *MockClientCommandsServer_BlockTableColumnCreate_Call { + _c.Call.Return(run) + return _c +} + +// BlockTableColumnDelete provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockTableColumnDelete(_a0 context.Context, _a1 *pb.RpcBlockTableColumnDeleteRequest) *pb.RpcBlockTableColumnDeleteResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockTableColumnDelete") + } + + var r0 *pb.RpcBlockTableColumnDeleteResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockTableColumnDeleteRequest) *pb.RpcBlockTableColumnDeleteResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockTableColumnDeleteResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockTableColumnDelete_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockTableColumnDelete' +type MockClientCommandsServer_BlockTableColumnDelete_Call struct { + *mock.Call +} + +// BlockTableColumnDelete is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockTableColumnDeleteRequest +func (_e *MockClientCommandsServer_Expecter) BlockTableColumnDelete(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockTableColumnDelete_Call { + return &MockClientCommandsServer_BlockTableColumnDelete_Call{Call: _e.mock.On("BlockTableColumnDelete", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockTableColumnDelete_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockTableColumnDeleteRequest)) *MockClientCommandsServer_BlockTableColumnDelete_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockTableColumnDeleteRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockTableColumnDelete_Call) Return(_a0 *pb.RpcBlockTableColumnDeleteResponse) *MockClientCommandsServer_BlockTableColumnDelete_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockTableColumnDelete_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockTableColumnDeleteRequest) *pb.RpcBlockTableColumnDeleteResponse) *MockClientCommandsServer_BlockTableColumnDelete_Call { + _c.Call.Return(run) + return _c +} + +// BlockTableColumnDuplicate provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockTableColumnDuplicate(_a0 context.Context, _a1 *pb.RpcBlockTableColumnDuplicateRequest) *pb.RpcBlockTableColumnDuplicateResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockTableColumnDuplicate") + } + + var r0 *pb.RpcBlockTableColumnDuplicateResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockTableColumnDuplicateRequest) *pb.RpcBlockTableColumnDuplicateResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockTableColumnDuplicateResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockTableColumnDuplicate_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockTableColumnDuplicate' +type MockClientCommandsServer_BlockTableColumnDuplicate_Call struct { + *mock.Call +} + +// BlockTableColumnDuplicate is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockTableColumnDuplicateRequest +func (_e *MockClientCommandsServer_Expecter) BlockTableColumnDuplicate(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockTableColumnDuplicate_Call { + return &MockClientCommandsServer_BlockTableColumnDuplicate_Call{Call: _e.mock.On("BlockTableColumnDuplicate", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockTableColumnDuplicate_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockTableColumnDuplicateRequest)) *MockClientCommandsServer_BlockTableColumnDuplicate_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockTableColumnDuplicateRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockTableColumnDuplicate_Call) Return(_a0 *pb.RpcBlockTableColumnDuplicateResponse) *MockClientCommandsServer_BlockTableColumnDuplicate_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockTableColumnDuplicate_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockTableColumnDuplicateRequest) *pb.RpcBlockTableColumnDuplicateResponse) *MockClientCommandsServer_BlockTableColumnDuplicate_Call { + _c.Call.Return(run) + return _c +} + +// BlockTableColumnListFill provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockTableColumnListFill(_a0 context.Context, _a1 *pb.RpcBlockTableColumnListFillRequest) *pb.RpcBlockTableColumnListFillResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockTableColumnListFill") + } + + var r0 *pb.RpcBlockTableColumnListFillResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockTableColumnListFillRequest) *pb.RpcBlockTableColumnListFillResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockTableColumnListFillResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockTableColumnListFill_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockTableColumnListFill' +type MockClientCommandsServer_BlockTableColumnListFill_Call struct { + *mock.Call +} + +// BlockTableColumnListFill is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockTableColumnListFillRequest +func (_e *MockClientCommandsServer_Expecter) BlockTableColumnListFill(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockTableColumnListFill_Call { + return &MockClientCommandsServer_BlockTableColumnListFill_Call{Call: _e.mock.On("BlockTableColumnListFill", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockTableColumnListFill_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockTableColumnListFillRequest)) *MockClientCommandsServer_BlockTableColumnListFill_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockTableColumnListFillRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockTableColumnListFill_Call) Return(_a0 *pb.RpcBlockTableColumnListFillResponse) *MockClientCommandsServer_BlockTableColumnListFill_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockTableColumnListFill_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockTableColumnListFillRequest) *pb.RpcBlockTableColumnListFillResponse) *MockClientCommandsServer_BlockTableColumnListFill_Call { + _c.Call.Return(run) + return _c +} + +// BlockTableColumnMove provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockTableColumnMove(_a0 context.Context, _a1 *pb.RpcBlockTableColumnMoveRequest) *pb.RpcBlockTableColumnMoveResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockTableColumnMove") + } + + var r0 *pb.RpcBlockTableColumnMoveResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockTableColumnMoveRequest) *pb.RpcBlockTableColumnMoveResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockTableColumnMoveResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockTableColumnMove_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockTableColumnMove' +type MockClientCommandsServer_BlockTableColumnMove_Call struct { + *mock.Call +} + +// BlockTableColumnMove is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockTableColumnMoveRequest +func (_e *MockClientCommandsServer_Expecter) BlockTableColumnMove(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockTableColumnMove_Call { + return &MockClientCommandsServer_BlockTableColumnMove_Call{Call: _e.mock.On("BlockTableColumnMove", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockTableColumnMove_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockTableColumnMoveRequest)) *MockClientCommandsServer_BlockTableColumnMove_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockTableColumnMoveRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockTableColumnMove_Call) Return(_a0 *pb.RpcBlockTableColumnMoveResponse) *MockClientCommandsServer_BlockTableColumnMove_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockTableColumnMove_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockTableColumnMoveRequest) *pb.RpcBlockTableColumnMoveResponse) *MockClientCommandsServer_BlockTableColumnMove_Call { + _c.Call.Return(run) + return _c +} + +// BlockTableCreate provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockTableCreate(_a0 context.Context, _a1 *pb.RpcBlockTableCreateRequest) *pb.RpcBlockTableCreateResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockTableCreate") + } + + var r0 *pb.RpcBlockTableCreateResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockTableCreateRequest) *pb.RpcBlockTableCreateResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockTableCreateResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockTableCreate_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockTableCreate' +type MockClientCommandsServer_BlockTableCreate_Call struct { + *mock.Call +} + +// BlockTableCreate is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockTableCreateRequest +func (_e *MockClientCommandsServer_Expecter) BlockTableCreate(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockTableCreate_Call { + return &MockClientCommandsServer_BlockTableCreate_Call{Call: _e.mock.On("BlockTableCreate", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockTableCreate_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockTableCreateRequest)) *MockClientCommandsServer_BlockTableCreate_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockTableCreateRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockTableCreate_Call) Return(_a0 *pb.RpcBlockTableCreateResponse) *MockClientCommandsServer_BlockTableCreate_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockTableCreate_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockTableCreateRequest) *pb.RpcBlockTableCreateResponse) *MockClientCommandsServer_BlockTableCreate_Call { + _c.Call.Return(run) + return _c +} + +// BlockTableExpand provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockTableExpand(_a0 context.Context, _a1 *pb.RpcBlockTableExpandRequest) *pb.RpcBlockTableExpandResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockTableExpand") + } + + var r0 *pb.RpcBlockTableExpandResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockTableExpandRequest) *pb.RpcBlockTableExpandResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockTableExpandResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockTableExpand_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockTableExpand' +type MockClientCommandsServer_BlockTableExpand_Call struct { + *mock.Call +} + +// BlockTableExpand is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockTableExpandRequest +func (_e *MockClientCommandsServer_Expecter) BlockTableExpand(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockTableExpand_Call { + return &MockClientCommandsServer_BlockTableExpand_Call{Call: _e.mock.On("BlockTableExpand", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockTableExpand_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockTableExpandRequest)) *MockClientCommandsServer_BlockTableExpand_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockTableExpandRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockTableExpand_Call) Return(_a0 *pb.RpcBlockTableExpandResponse) *MockClientCommandsServer_BlockTableExpand_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockTableExpand_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockTableExpandRequest) *pb.RpcBlockTableExpandResponse) *MockClientCommandsServer_BlockTableExpand_Call { + _c.Call.Return(run) + return _c +} + +// BlockTableRowCreate provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockTableRowCreate(_a0 context.Context, _a1 *pb.RpcBlockTableRowCreateRequest) *pb.RpcBlockTableRowCreateResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockTableRowCreate") + } + + var r0 *pb.RpcBlockTableRowCreateResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockTableRowCreateRequest) *pb.RpcBlockTableRowCreateResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockTableRowCreateResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockTableRowCreate_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockTableRowCreate' +type MockClientCommandsServer_BlockTableRowCreate_Call struct { + *mock.Call +} + +// BlockTableRowCreate is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockTableRowCreateRequest +func (_e *MockClientCommandsServer_Expecter) BlockTableRowCreate(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockTableRowCreate_Call { + return &MockClientCommandsServer_BlockTableRowCreate_Call{Call: _e.mock.On("BlockTableRowCreate", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockTableRowCreate_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockTableRowCreateRequest)) *MockClientCommandsServer_BlockTableRowCreate_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockTableRowCreateRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockTableRowCreate_Call) Return(_a0 *pb.RpcBlockTableRowCreateResponse) *MockClientCommandsServer_BlockTableRowCreate_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockTableRowCreate_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockTableRowCreateRequest) *pb.RpcBlockTableRowCreateResponse) *MockClientCommandsServer_BlockTableRowCreate_Call { + _c.Call.Return(run) + return _c +} + +// BlockTableRowDelete provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockTableRowDelete(_a0 context.Context, _a1 *pb.RpcBlockTableRowDeleteRequest) *pb.RpcBlockTableRowDeleteResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockTableRowDelete") + } + + var r0 *pb.RpcBlockTableRowDeleteResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockTableRowDeleteRequest) *pb.RpcBlockTableRowDeleteResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockTableRowDeleteResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockTableRowDelete_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockTableRowDelete' +type MockClientCommandsServer_BlockTableRowDelete_Call struct { + *mock.Call +} + +// BlockTableRowDelete is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockTableRowDeleteRequest +func (_e *MockClientCommandsServer_Expecter) BlockTableRowDelete(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockTableRowDelete_Call { + return &MockClientCommandsServer_BlockTableRowDelete_Call{Call: _e.mock.On("BlockTableRowDelete", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockTableRowDelete_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockTableRowDeleteRequest)) *MockClientCommandsServer_BlockTableRowDelete_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockTableRowDeleteRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockTableRowDelete_Call) Return(_a0 *pb.RpcBlockTableRowDeleteResponse) *MockClientCommandsServer_BlockTableRowDelete_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockTableRowDelete_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockTableRowDeleteRequest) *pb.RpcBlockTableRowDeleteResponse) *MockClientCommandsServer_BlockTableRowDelete_Call { + _c.Call.Return(run) + return _c +} + +// BlockTableRowDuplicate provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockTableRowDuplicate(_a0 context.Context, _a1 *pb.RpcBlockTableRowDuplicateRequest) *pb.RpcBlockTableRowDuplicateResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockTableRowDuplicate") + } + + var r0 *pb.RpcBlockTableRowDuplicateResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockTableRowDuplicateRequest) *pb.RpcBlockTableRowDuplicateResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockTableRowDuplicateResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockTableRowDuplicate_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockTableRowDuplicate' +type MockClientCommandsServer_BlockTableRowDuplicate_Call struct { + *mock.Call +} + +// BlockTableRowDuplicate is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockTableRowDuplicateRequest +func (_e *MockClientCommandsServer_Expecter) BlockTableRowDuplicate(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockTableRowDuplicate_Call { + return &MockClientCommandsServer_BlockTableRowDuplicate_Call{Call: _e.mock.On("BlockTableRowDuplicate", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockTableRowDuplicate_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockTableRowDuplicateRequest)) *MockClientCommandsServer_BlockTableRowDuplicate_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockTableRowDuplicateRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockTableRowDuplicate_Call) Return(_a0 *pb.RpcBlockTableRowDuplicateResponse) *MockClientCommandsServer_BlockTableRowDuplicate_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockTableRowDuplicate_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockTableRowDuplicateRequest) *pb.RpcBlockTableRowDuplicateResponse) *MockClientCommandsServer_BlockTableRowDuplicate_Call { + _c.Call.Return(run) + return _c +} + +// BlockTableRowListClean provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockTableRowListClean(_a0 context.Context, _a1 *pb.RpcBlockTableRowListCleanRequest) *pb.RpcBlockTableRowListCleanResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockTableRowListClean") + } + + var r0 *pb.RpcBlockTableRowListCleanResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockTableRowListCleanRequest) *pb.RpcBlockTableRowListCleanResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockTableRowListCleanResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockTableRowListClean_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockTableRowListClean' +type MockClientCommandsServer_BlockTableRowListClean_Call struct { + *mock.Call +} + +// BlockTableRowListClean is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockTableRowListCleanRequest +func (_e *MockClientCommandsServer_Expecter) BlockTableRowListClean(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockTableRowListClean_Call { + return &MockClientCommandsServer_BlockTableRowListClean_Call{Call: _e.mock.On("BlockTableRowListClean", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockTableRowListClean_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockTableRowListCleanRequest)) *MockClientCommandsServer_BlockTableRowListClean_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockTableRowListCleanRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockTableRowListClean_Call) Return(_a0 *pb.RpcBlockTableRowListCleanResponse) *MockClientCommandsServer_BlockTableRowListClean_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockTableRowListClean_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockTableRowListCleanRequest) *pb.RpcBlockTableRowListCleanResponse) *MockClientCommandsServer_BlockTableRowListClean_Call { + _c.Call.Return(run) + return _c +} + +// BlockTableRowListFill provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockTableRowListFill(_a0 context.Context, _a1 *pb.RpcBlockTableRowListFillRequest) *pb.RpcBlockTableRowListFillResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockTableRowListFill") + } + + var r0 *pb.RpcBlockTableRowListFillResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockTableRowListFillRequest) *pb.RpcBlockTableRowListFillResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockTableRowListFillResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockTableRowListFill_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockTableRowListFill' +type MockClientCommandsServer_BlockTableRowListFill_Call struct { + *mock.Call +} + +// BlockTableRowListFill is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockTableRowListFillRequest +func (_e *MockClientCommandsServer_Expecter) BlockTableRowListFill(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockTableRowListFill_Call { + return &MockClientCommandsServer_BlockTableRowListFill_Call{Call: _e.mock.On("BlockTableRowListFill", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockTableRowListFill_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockTableRowListFillRequest)) *MockClientCommandsServer_BlockTableRowListFill_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockTableRowListFillRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockTableRowListFill_Call) Return(_a0 *pb.RpcBlockTableRowListFillResponse) *MockClientCommandsServer_BlockTableRowListFill_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockTableRowListFill_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockTableRowListFillRequest) *pb.RpcBlockTableRowListFillResponse) *MockClientCommandsServer_BlockTableRowListFill_Call { + _c.Call.Return(run) + return _c +} + +// BlockTableRowSetHeader provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockTableRowSetHeader(_a0 context.Context, _a1 *pb.RpcBlockTableRowSetHeaderRequest) *pb.RpcBlockTableRowSetHeaderResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockTableRowSetHeader") + } + + var r0 *pb.RpcBlockTableRowSetHeaderResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockTableRowSetHeaderRequest) *pb.RpcBlockTableRowSetHeaderResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockTableRowSetHeaderResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockTableRowSetHeader_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockTableRowSetHeader' +type MockClientCommandsServer_BlockTableRowSetHeader_Call struct { + *mock.Call +} + +// BlockTableRowSetHeader is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockTableRowSetHeaderRequest +func (_e *MockClientCommandsServer_Expecter) BlockTableRowSetHeader(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockTableRowSetHeader_Call { + return &MockClientCommandsServer_BlockTableRowSetHeader_Call{Call: _e.mock.On("BlockTableRowSetHeader", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockTableRowSetHeader_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockTableRowSetHeaderRequest)) *MockClientCommandsServer_BlockTableRowSetHeader_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockTableRowSetHeaderRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockTableRowSetHeader_Call) Return(_a0 *pb.RpcBlockTableRowSetHeaderResponse) *MockClientCommandsServer_BlockTableRowSetHeader_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockTableRowSetHeader_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockTableRowSetHeaderRequest) *pb.RpcBlockTableRowSetHeaderResponse) *MockClientCommandsServer_BlockTableRowSetHeader_Call { + _c.Call.Return(run) + return _c +} + +// BlockTableSort provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockTableSort(_a0 context.Context, _a1 *pb.RpcBlockTableSortRequest) *pb.RpcBlockTableSortResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockTableSort") + } + + var r0 *pb.RpcBlockTableSortResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockTableSortRequest) *pb.RpcBlockTableSortResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockTableSortResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockTableSort_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockTableSort' +type MockClientCommandsServer_BlockTableSort_Call struct { + *mock.Call +} + +// BlockTableSort is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockTableSortRequest +func (_e *MockClientCommandsServer_Expecter) BlockTableSort(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockTableSort_Call { + return &MockClientCommandsServer_BlockTableSort_Call{Call: _e.mock.On("BlockTableSort", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockTableSort_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockTableSortRequest)) *MockClientCommandsServer_BlockTableSort_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockTableSortRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockTableSort_Call) Return(_a0 *pb.RpcBlockTableSortResponse) *MockClientCommandsServer_BlockTableSort_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockTableSort_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockTableSortRequest) *pb.RpcBlockTableSortResponse) *MockClientCommandsServer_BlockTableSort_Call { + _c.Call.Return(run) + return _c +} + +// BlockTextListClearContent provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockTextListClearContent(_a0 context.Context, _a1 *pb.RpcBlockTextListClearContentRequest) *pb.RpcBlockTextListClearContentResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockTextListClearContent") + } + + var r0 *pb.RpcBlockTextListClearContentResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockTextListClearContentRequest) *pb.RpcBlockTextListClearContentResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockTextListClearContentResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockTextListClearContent_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockTextListClearContent' +type MockClientCommandsServer_BlockTextListClearContent_Call struct { + *mock.Call +} + +// BlockTextListClearContent is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockTextListClearContentRequest +func (_e *MockClientCommandsServer_Expecter) BlockTextListClearContent(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockTextListClearContent_Call { + return &MockClientCommandsServer_BlockTextListClearContent_Call{Call: _e.mock.On("BlockTextListClearContent", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockTextListClearContent_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockTextListClearContentRequest)) *MockClientCommandsServer_BlockTextListClearContent_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockTextListClearContentRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockTextListClearContent_Call) Return(_a0 *pb.RpcBlockTextListClearContentResponse) *MockClientCommandsServer_BlockTextListClearContent_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockTextListClearContent_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockTextListClearContentRequest) *pb.RpcBlockTextListClearContentResponse) *MockClientCommandsServer_BlockTextListClearContent_Call { + _c.Call.Return(run) + return _c +} + +// BlockTextListClearStyle provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockTextListClearStyle(_a0 context.Context, _a1 *pb.RpcBlockTextListClearStyleRequest) *pb.RpcBlockTextListClearStyleResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockTextListClearStyle") + } + + var r0 *pb.RpcBlockTextListClearStyleResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockTextListClearStyleRequest) *pb.RpcBlockTextListClearStyleResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockTextListClearStyleResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockTextListClearStyle_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockTextListClearStyle' +type MockClientCommandsServer_BlockTextListClearStyle_Call struct { + *mock.Call +} + +// BlockTextListClearStyle is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockTextListClearStyleRequest +func (_e *MockClientCommandsServer_Expecter) BlockTextListClearStyle(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockTextListClearStyle_Call { + return &MockClientCommandsServer_BlockTextListClearStyle_Call{Call: _e.mock.On("BlockTextListClearStyle", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockTextListClearStyle_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockTextListClearStyleRequest)) *MockClientCommandsServer_BlockTextListClearStyle_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockTextListClearStyleRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockTextListClearStyle_Call) Return(_a0 *pb.RpcBlockTextListClearStyleResponse) *MockClientCommandsServer_BlockTextListClearStyle_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockTextListClearStyle_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockTextListClearStyleRequest) *pb.RpcBlockTextListClearStyleResponse) *MockClientCommandsServer_BlockTextListClearStyle_Call { + _c.Call.Return(run) + return _c +} + +// BlockTextListSetColor provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockTextListSetColor(_a0 context.Context, _a1 *pb.RpcBlockTextListSetColorRequest) *pb.RpcBlockTextListSetColorResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockTextListSetColor") + } + + var r0 *pb.RpcBlockTextListSetColorResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockTextListSetColorRequest) *pb.RpcBlockTextListSetColorResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockTextListSetColorResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockTextListSetColor_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockTextListSetColor' +type MockClientCommandsServer_BlockTextListSetColor_Call struct { + *mock.Call +} + +// BlockTextListSetColor is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockTextListSetColorRequest +func (_e *MockClientCommandsServer_Expecter) BlockTextListSetColor(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockTextListSetColor_Call { + return &MockClientCommandsServer_BlockTextListSetColor_Call{Call: _e.mock.On("BlockTextListSetColor", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockTextListSetColor_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockTextListSetColorRequest)) *MockClientCommandsServer_BlockTextListSetColor_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockTextListSetColorRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockTextListSetColor_Call) Return(_a0 *pb.RpcBlockTextListSetColorResponse) *MockClientCommandsServer_BlockTextListSetColor_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockTextListSetColor_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockTextListSetColorRequest) *pb.RpcBlockTextListSetColorResponse) *MockClientCommandsServer_BlockTextListSetColor_Call { + _c.Call.Return(run) + return _c +} + +// BlockTextListSetMark provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockTextListSetMark(_a0 context.Context, _a1 *pb.RpcBlockTextListSetMarkRequest) *pb.RpcBlockTextListSetMarkResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockTextListSetMark") + } + + var r0 *pb.RpcBlockTextListSetMarkResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockTextListSetMarkRequest) *pb.RpcBlockTextListSetMarkResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockTextListSetMarkResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockTextListSetMark_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockTextListSetMark' +type MockClientCommandsServer_BlockTextListSetMark_Call struct { + *mock.Call +} + +// BlockTextListSetMark is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockTextListSetMarkRequest +func (_e *MockClientCommandsServer_Expecter) BlockTextListSetMark(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockTextListSetMark_Call { + return &MockClientCommandsServer_BlockTextListSetMark_Call{Call: _e.mock.On("BlockTextListSetMark", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockTextListSetMark_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockTextListSetMarkRequest)) *MockClientCommandsServer_BlockTextListSetMark_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockTextListSetMarkRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockTextListSetMark_Call) Return(_a0 *pb.RpcBlockTextListSetMarkResponse) *MockClientCommandsServer_BlockTextListSetMark_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockTextListSetMark_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockTextListSetMarkRequest) *pb.RpcBlockTextListSetMarkResponse) *MockClientCommandsServer_BlockTextListSetMark_Call { + _c.Call.Return(run) + return _c +} + +// BlockTextListSetStyle provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockTextListSetStyle(_a0 context.Context, _a1 *pb.RpcBlockTextListSetStyleRequest) *pb.RpcBlockTextListSetStyleResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockTextListSetStyle") + } + + var r0 *pb.RpcBlockTextListSetStyleResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockTextListSetStyleRequest) *pb.RpcBlockTextListSetStyleResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockTextListSetStyleResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockTextListSetStyle_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockTextListSetStyle' +type MockClientCommandsServer_BlockTextListSetStyle_Call struct { + *mock.Call +} + +// BlockTextListSetStyle is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockTextListSetStyleRequest +func (_e *MockClientCommandsServer_Expecter) BlockTextListSetStyle(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockTextListSetStyle_Call { + return &MockClientCommandsServer_BlockTextListSetStyle_Call{Call: _e.mock.On("BlockTextListSetStyle", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockTextListSetStyle_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockTextListSetStyleRequest)) *MockClientCommandsServer_BlockTextListSetStyle_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockTextListSetStyleRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockTextListSetStyle_Call) Return(_a0 *pb.RpcBlockTextListSetStyleResponse) *MockClientCommandsServer_BlockTextListSetStyle_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockTextListSetStyle_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockTextListSetStyleRequest) *pb.RpcBlockTextListSetStyleResponse) *MockClientCommandsServer_BlockTextListSetStyle_Call { + _c.Call.Return(run) + return _c +} + +// BlockTextSetChecked provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockTextSetChecked(_a0 context.Context, _a1 *pb.RpcBlockTextSetCheckedRequest) *pb.RpcBlockTextSetCheckedResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockTextSetChecked") + } + + var r0 *pb.RpcBlockTextSetCheckedResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockTextSetCheckedRequest) *pb.RpcBlockTextSetCheckedResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockTextSetCheckedResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockTextSetChecked_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockTextSetChecked' +type MockClientCommandsServer_BlockTextSetChecked_Call struct { + *mock.Call +} + +// BlockTextSetChecked is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockTextSetCheckedRequest +func (_e *MockClientCommandsServer_Expecter) BlockTextSetChecked(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockTextSetChecked_Call { + return &MockClientCommandsServer_BlockTextSetChecked_Call{Call: _e.mock.On("BlockTextSetChecked", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockTextSetChecked_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockTextSetCheckedRequest)) *MockClientCommandsServer_BlockTextSetChecked_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockTextSetCheckedRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockTextSetChecked_Call) Return(_a0 *pb.RpcBlockTextSetCheckedResponse) *MockClientCommandsServer_BlockTextSetChecked_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockTextSetChecked_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockTextSetCheckedRequest) *pb.RpcBlockTextSetCheckedResponse) *MockClientCommandsServer_BlockTextSetChecked_Call { + _c.Call.Return(run) + return _c +} + +// BlockTextSetColor provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockTextSetColor(_a0 context.Context, _a1 *pb.RpcBlockTextSetColorRequest) *pb.RpcBlockTextSetColorResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockTextSetColor") + } + + var r0 *pb.RpcBlockTextSetColorResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockTextSetColorRequest) *pb.RpcBlockTextSetColorResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockTextSetColorResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockTextSetColor_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockTextSetColor' +type MockClientCommandsServer_BlockTextSetColor_Call struct { + *mock.Call +} + +// BlockTextSetColor is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockTextSetColorRequest +func (_e *MockClientCommandsServer_Expecter) BlockTextSetColor(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockTextSetColor_Call { + return &MockClientCommandsServer_BlockTextSetColor_Call{Call: _e.mock.On("BlockTextSetColor", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockTextSetColor_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockTextSetColorRequest)) *MockClientCommandsServer_BlockTextSetColor_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockTextSetColorRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockTextSetColor_Call) Return(_a0 *pb.RpcBlockTextSetColorResponse) *MockClientCommandsServer_BlockTextSetColor_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockTextSetColor_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockTextSetColorRequest) *pb.RpcBlockTextSetColorResponse) *MockClientCommandsServer_BlockTextSetColor_Call { + _c.Call.Return(run) + return _c +} + +// BlockTextSetIcon provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockTextSetIcon(_a0 context.Context, _a1 *pb.RpcBlockTextSetIconRequest) *pb.RpcBlockTextSetIconResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockTextSetIcon") + } + + var r0 *pb.RpcBlockTextSetIconResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockTextSetIconRequest) *pb.RpcBlockTextSetIconResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockTextSetIconResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockTextSetIcon_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockTextSetIcon' +type MockClientCommandsServer_BlockTextSetIcon_Call struct { + *mock.Call +} + +// BlockTextSetIcon is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockTextSetIconRequest +func (_e *MockClientCommandsServer_Expecter) BlockTextSetIcon(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockTextSetIcon_Call { + return &MockClientCommandsServer_BlockTextSetIcon_Call{Call: _e.mock.On("BlockTextSetIcon", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockTextSetIcon_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockTextSetIconRequest)) *MockClientCommandsServer_BlockTextSetIcon_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockTextSetIconRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockTextSetIcon_Call) Return(_a0 *pb.RpcBlockTextSetIconResponse) *MockClientCommandsServer_BlockTextSetIcon_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockTextSetIcon_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockTextSetIconRequest) *pb.RpcBlockTextSetIconResponse) *MockClientCommandsServer_BlockTextSetIcon_Call { + _c.Call.Return(run) + return _c +} + +// BlockTextSetStyle provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockTextSetStyle(_a0 context.Context, _a1 *pb.RpcBlockTextSetStyleRequest) *pb.RpcBlockTextSetStyleResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockTextSetStyle") + } + + var r0 *pb.RpcBlockTextSetStyleResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockTextSetStyleRequest) *pb.RpcBlockTextSetStyleResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockTextSetStyleResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockTextSetStyle_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockTextSetStyle' +type MockClientCommandsServer_BlockTextSetStyle_Call struct { + *mock.Call +} + +// BlockTextSetStyle is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockTextSetStyleRequest +func (_e *MockClientCommandsServer_Expecter) BlockTextSetStyle(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockTextSetStyle_Call { + return &MockClientCommandsServer_BlockTextSetStyle_Call{Call: _e.mock.On("BlockTextSetStyle", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockTextSetStyle_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockTextSetStyleRequest)) *MockClientCommandsServer_BlockTextSetStyle_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockTextSetStyleRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockTextSetStyle_Call) Return(_a0 *pb.RpcBlockTextSetStyleResponse) *MockClientCommandsServer_BlockTextSetStyle_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockTextSetStyle_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockTextSetStyleRequest) *pb.RpcBlockTextSetStyleResponse) *MockClientCommandsServer_BlockTextSetStyle_Call { + _c.Call.Return(run) + return _c +} + +// BlockTextSetText provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockTextSetText(_a0 context.Context, _a1 *pb.RpcBlockTextSetTextRequest) *pb.RpcBlockTextSetTextResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockTextSetText") + } + + var r0 *pb.RpcBlockTextSetTextResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockTextSetTextRequest) *pb.RpcBlockTextSetTextResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockTextSetTextResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockTextSetText_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockTextSetText' +type MockClientCommandsServer_BlockTextSetText_Call struct { + *mock.Call +} + +// BlockTextSetText is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockTextSetTextRequest +func (_e *MockClientCommandsServer_Expecter) BlockTextSetText(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockTextSetText_Call { + return &MockClientCommandsServer_BlockTextSetText_Call{Call: _e.mock.On("BlockTextSetText", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockTextSetText_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockTextSetTextRequest)) *MockClientCommandsServer_BlockTextSetText_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockTextSetTextRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockTextSetText_Call) Return(_a0 *pb.RpcBlockTextSetTextResponse) *MockClientCommandsServer_BlockTextSetText_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockTextSetText_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockTextSetTextRequest) *pb.RpcBlockTextSetTextResponse) *MockClientCommandsServer_BlockTextSetText_Call { + _c.Call.Return(run) + return _c +} + +// BlockUpload provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockUpload(_a0 context.Context, _a1 *pb.RpcBlockUploadRequest) *pb.RpcBlockUploadResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockUpload") + } + + var r0 *pb.RpcBlockUploadResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockUploadRequest) *pb.RpcBlockUploadResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockUploadResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockUpload_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockUpload' +type MockClientCommandsServer_BlockUpload_Call struct { + *mock.Call +} + +// BlockUpload is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockUploadRequest +func (_e *MockClientCommandsServer_Expecter) BlockUpload(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockUpload_Call { + return &MockClientCommandsServer_BlockUpload_Call{Call: _e.mock.On("BlockUpload", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockUpload_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockUploadRequest)) *MockClientCommandsServer_BlockUpload_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockUploadRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockUpload_Call) Return(_a0 *pb.RpcBlockUploadResponse) *MockClientCommandsServer_BlockUpload_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockUpload_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockUploadRequest) *pb.RpcBlockUploadResponse) *MockClientCommandsServer_BlockUpload_Call { + _c.Call.Return(run) + return _c +} + +// BlockVideoSetName provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockVideoSetName(_a0 context.Context, _a1 *pb.RpcBlockVideoSetNameRequest) *pb.RpcBlockVideoSetNameResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockVideoSetName") + } + + var r0 *pb.RpcBlockVideoSetNameResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockVideoSetNameRequest) *pb.RpcBlockVideoSetNameResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockVideoSetNameResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockVideoSetName_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockVideoSetName' +type MockClientCommandsServer_BlockVideoSetName_Call struct { + *mock.Call +} + +// BlockVideoSetName is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockVideoSetNameRequest +func (_e *MockClientCommandsServer_Expecter) BlockVideoSetName(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockVideoSetName_Call { + return &MockClientCommandsServer_BlockVideoSetName_Call{Call: _e.mock.On("BlockVideoSetName", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockVideoSetName_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockVideoSetNameRequest)) *MockClientCommandsServer_BlockVideoSetName_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockVideoSetNameRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockVideoSetName_Call) Return(_a0 *pb.RpcBlockVideoSetNameResponse) *MockClientCommandsServer_BlockVideoSetName_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockVideoSetName_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockVideoSetNameRequest) *pb.RpcBlockVideoSetNameResponse) *MockClientCommandsServer_BlockVideoSetName_Call { + _c.Call.Return(run) + return _c +} + +// BlockWidgetSetLayout provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockWidgetSetLayout(_a0 context.Context, _a1 *pb.RpcBlockWidgetSetLayoutRequest) *pb.RpcBlockWidgetSetLayoutResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockWidgetSetLayout") + } + + var r0 *pb.RpcBlockWidgetSetLayoutResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockWidgetSetLayoutRequest) *pb.RpcBlockWidgetSetLayoutResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockWidgetSetLayoutResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockWidgetSetLayout_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockWidgetSetLayout' +type MockClientCommandsServer_BlockWidgetSetLayout_Call struct { + *mock.Call +} + +// BlockWidgetSetLayout is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockWidgetSetLayoutRequest +func (_e *MockClientCommandsServer_Expecter) BlockWidgetSetLayout(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockWidgetSetLayout_Call { + return &MockClientCommandsServer_BlockWidgetSetLayout_Call{Call: _e.mock.On("BlockWidgetSetLayout", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockWidgetSetLayout_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockWidgetSetLayoutRequest)) *MockClientCommandsServer_BlockWidgetSetLayout_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockWidgetSetLayoutRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockWidgetSetLayout_Call) Return(_a0 *pb.RpcBlockWidgetSetLayoutResponse) *MockClientCommandsServer_BlockWidgetSetLayout_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockWidgetSetLayout_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockWidgetSetLayoutRequest) *pb.RpcBlockWidgetSetLayoutResponse) *MockClientCommandsServer_BlockWidgetSetLayout_Call { + _c.Call.Return(run) + return _c +} + +// BlockWidgetSetLimit provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockWidgetSetLimit(_a0 context.Context, _a1 *pb.RpcBlockWidgetSetLimitRequest) *pb.RpcBlockWidgetSetLimitResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockWidgetSetLimit") + } + + var r0 *pb.RpcBlockWidgetSetLimitResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockWidgetSetLimitRequest) *pb.RpcBlockWidgetSetLimitResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockWidgetSetLimitResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockWidgetSetLimit_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockWidgetSetLimit' +type MockClientCommandsServer_BlockWidgetSetLimit_Call struct { + *mock.Call +} + +// BlockWidgetSetLimit is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockWidgetSetLimitRequest +func (_e *MockClientCommandsServer_Expecter) BlockWidgetSetLimit(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockWidgetSetLimit_Call { + return &MockClientCommandsServer_BlockWidgetSetLimit_Call{Call: _e.mock.On("BlockWidgetSetLimit", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockWidgetSetLimit_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockWidgetSetLimitRequest)) *MockClientCommandsServer_BlockWidgetSetLimit_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockWidgetSetLimitRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockWidgetSetLimit_Call) Return(_a0 *pb.RpcBlockWidgetSetLimitResponse) *MockClientCommandsServer_BlockWidgetSetLimit_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockWidgetSetLimit_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockWidgetSetLimitRequest) *pb.RpcBlockWidgetSetLimitResponse) *MockClientCommandsServer_BlockWidgetSetLimit_Call { + _c.Call.Return(run) + return _c +} + +// BlockWidgetSetTargetId provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockWidgetSetTargetId(_a0 context.Context, _a1 *pb.RpcBlockWidgetSetTargetIdRequest) *pb.RpcBlockWidgetSetTargetIdResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockWidgetSetTargetId") + } + + var r0 *pb.RpcBlockWidgetSetTargetIdResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockWidgetSetTargetIdRequest) *pb.RpcBlockWidgetSetTargetIdResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockWidgetSetTargetIdResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockWidgetSetTargetId_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockWidgetSetTargetId' +type MockClientCommandsServer_BlockWidgetSetTargetId_Call struct { + *mock.Call +} + +// BlockWidgetSetTargetId is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockWidgetSetTargetIdRequest +func (_e *MockClientCommandsServer_Expecter) BlockWidgetSetTargetId(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockWidgetSetTargetId_Call { + return &MockClientCommandsServer_BlockWidgetSetTargetId_Call{Call: _e.mock.On("BlockWidgetSetTargetId", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockWidgetSetTargetId_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockWidgetSetTargetIdRequest)) *MockClientCommandsServer_BlockWidgetSetTargetId_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockWidgetSetTargetIdRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockWidgetSetTargetId_Call) Return(_a0 *pb.RpcBlockWidgetSetTargetIdResponse) *MockClientCommandsServer_BlockWidgetSetTargetId_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockWidgetSetTargetId_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockWidgetSetTargetIdRequest) *pb.RpcBlockWidgetSetTargetIdResponse) *MockClientCommandsServer_BlockWidgetSetTargetId_Call { + _c.Call.Return(run) + return _c +} + +// BlockWidgetSetViewId provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BlockWidgetSetViewId(_a0 context.Context, _a1 *pb.RpcBlockWidgetSetViewIdRequest) *pb.RpcBlockWidgetSetViewIdResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BlockWidgetSetViewId") + } + + var r0 *pb.RpcBlockWidgetSetViewIdResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBlockWidgetSetViewIdRequest) *pb.RpcBlockWidgetSetViewIdResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBlockWidgetSetViewIdResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BlockWidgetSetViewId_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BlockWidgetSetViewId' +type MockClientCommandsServer_BlockWidgetSetViewId_Call struct { + *mock.Call +} + +// BlockWidgetSetViewId is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBlockWidgetSetViewIdRequest +func (_e *MockClientCommandsServer_Expecter) BlockWidgetSetViewId(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BlockWidgetSetViewId_Call { + return &MockClientCommandsServer_BlockWidgetSetViewId_Call{Call: _e.mock.On("BlockWidgetSetViewId", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BlockWidgetSetViewId_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBlockWidgetSetViewIdRequest)) *MockClientCommandsServer_BlockWidgetSetViewId_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBlockWidgetSetViewIdRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BlockWidgetSetViewId_Call) Return(_a0 *pb.RpcBlockWidgetSetViewIdResponse) *MockClientCommandsServer_BlockWidgetSetViewId_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BlockWidgetSetViewId_Call) RunAndReturn(run func(context.Context, *pb.RpcBlockWidgetSetViewIdRequest) *pb.RpcBlockWidgetSetViewIdResponse) *MockClientCommandsServer_BlockWidgetSetViewId_Call { + _c.Call.Return(run) + return _c +} + +// BroadcastPayloadEvent provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) BroadcastPayloadEvent(_a0 context.Context, _a1 *pb.RpcBroadcastPayloadEventRequest) *pb.RpcBroadcastPayloadEventResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for BroadcastPayloadEvent") + } + + var r0 *pb.RpcBroadcastPayloadEventResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcBroadcastPayloadEventRequest) *pb.RpcBroadcastPayloadEventResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcBroadcastPayloadEventResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_BroadcastPayloadEvent_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BroadcastPayloadEvent' +type MockClientCommandsServer_BroadcastPayloadEvent_Call struct { + *mock.Call +} + +// BroadcastPayloadEvent is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcBroadcastPayloadEventRequest +func (_e *MockClientCommandsServer_Expecter) BroadcastPayloadEvent(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_BroadcastPayloadEvent_Call { + return &MockClientCommandsServer_BroadcastPayloadEvent_Call{Call: _e.mock.On("BroadcastPayloadEvent", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_BroadcastPayloadEvent_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcBroadcastPayloadEventRequest)) *MockClientCommandsServer_BroadcastPayloadEvent_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcBroadcastPayloadEventRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_BroadcastPayloadEvent_Call) Return(_a0 *pb.RpcBroadcastPayloadEventResponse) *MockClientCommandsServer_BroadcastPayloadEvent_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_BroadcastPayloadEvent_Call) RunAndReturn(run func(context.Context, *pb.RpcBroadcastPayloadEventRequest) *pb.RpcBroadcastPayloadEventResponse) *MockClientCommandsServer_BroadcastPayloadEvent_Call { + _c.Call.Return(run) + return _c +} + +// ChatAddMessage provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ChatAddMessage(_a0 context.Context, _a1 *pb.RpcChatAddMessageRequest) *pb.RpcChatAddMessageResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ChatAddMessage") + } + + var r0 *pb.RpcChatAddMessageResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcChatAddMessageRequest) *pb.RpcChatAddMessageResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcChatAddMessageResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ChatAddMessage_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ChatAddMessage' +type MockClientCommandsServer_ChatAddMessage_Call struct { + *mock.Call +} + +// ChatAddMessage is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcChatAddMessageRequest +func (_e *MockClientCommandsServer_Expecter) ChatAddMessage(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ChatAddMessage_Call { + return &MockClientCommandsServer_ChatAddMessage_Call{Call: _e.mock.On("ChatAddMessage", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ChatAddMessage_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcChatAddMessageRequest)) *MockClientCommandsServer_ChatAddMessage_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcChatAddMessageRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ChatAddMessage_Call) Return(_a0 *pb.RpcChatAddMessageResponse) *MockClientCommandsServer_ChatAddMessage_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ChatAddMessage_Call) RunAndReturn(run func(context.Context, *pb.RpcChatAddMessageRequest) *pb.RpcChatAddMessageResponse) *MockClientCommandsServer_ChatAddMessage_Call { + _c.Call.Return(run) + return _c +} + +// ChatDeleteMessage provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ChatDeleteMessage(_a0 context.Context, _a1 *pb.RpcChatDeleteMessageRequest) *pb.RpcChatDeleteMessageResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ChatDeleteMessage") + } + + var r0 *pb.RpcChatDeleteMessageResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcChatDeleteMessageRequest) *pb.RpcChatDeleteMessageResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcChatDeleteMessageResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ChatDeleteMessage_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ChatDeleteMessage' +type MockClientCommandsServer_ChatDeleteMessage_Call struct { + *mock.Call +} + +// ChatDeleteMessage is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcChatDeleteMessageRequest +func (_e *MockClientCommandsServer_Expecter) ChatDeleteMessage(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ChatDeleteMessage_Call { + return &MockClientCommandsServer_ChatDeleteMessage_Call{Call: _e.mock.On("ChatDeleteMessage", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ChatDeleteMessage_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcChatDeleteMessageRequest)) *MockClientCommandsServer_ChatDeleteMessage_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcChatDeleteMessageRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ChatDeleteMessage_Call) Return(_a0 *pb.RpcChatDeleteMessageResponse) *MockClientCommandsServer_ChatDeleteMessage_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ChatDeleteMessage_Call) RunAndReturn(run func(context.Context, *pb.RpcChatDeleteMessageRequest) *pb.RpcChatDeleteMessageResponse) *MockClientCommandsServer_ChatDeleteMessage_Call { + _c.Call.Return(run) + return _c +} + +// ChatEditMessageContent provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ChatEditMessageContent(_a0 context.Context, _a1 *pb.RpcChatEditMessageContentRequest) *pb.RpcChatEditMessageContentResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ChatEditMessageContent") + } + + var r0 *pb.RpcChatEditMessageContentResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcChatEditMessageContentRequest) *pb.RpcChatEditMessageContentResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcChatEditMessageContentResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ChatEditMessageContent_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ChatEditMessageContent' +type MockClientCommandsServer_ChatEditMessageContent_Call struct { + *mock.Call +} + +// ChatEditMessageContent is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcChatEditMessageContentRequest +func (_e *MockClientCommandsServer_Expecter) ChatEditMessageContent(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ChatEditMessageContent_Call { + return &MockClientCommandsServer_ChatEditMessageContent_Call{Call: _e.mock.On("ChatEditMessageContent", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ChatEditMessageContent_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcChatEditMessageContentRequest)) *MockClientCommandsServer_ChatEditMessageContent_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcChatEditMessageContentRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ChatEditMessageContent_Call) Return(_a0 *pb.RpcChatEditMessageContentResponse) *MockClientCommandsServer_ChatEditMessageContent_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ChatEditMessageContent_Call) RunAndReturn(run func(context.Context, *pb.RpcChatEditMessageContentRequest) *pb.RpcChatEditMessageContentResponse) *MockClientCommandsServer_ChatEditMessageContent_Call { + _c.Call.Return(run) + return _c +} + +// ChatGetMessages provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ChatGetMessages(_a0 context.Context, _a1 *pb.RpcChatGetMessagesRequest) *pb.RpcChatGetMessagesResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ChatGetMessages") + } + + var r0 *pb.RpcChatGetMessagesResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcChatGetMessagesRequest) *pb.RpcChatGetMessagesResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcChatGetMessagesResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ChatGetMessages_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ChatGetMessages' +type MockClientCommandsServer_ChatGetMessages_Call struct { + *mock.Call +} + +// ChatGetMessages is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcChatGetMessagesRequest +func (_e *MockClientCommandsServer_Expecter) ChatGetMessages(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ChatGetMessages_Call { + return &MockClientCommandsServer_ChatGetMessages_Call{Call: _e.mock.On("ChatGetMessages", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ChatGetMessages_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcChatGetMessagesRequest)) *MockClientCommandsServer_ChatGetMessages_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcChatGetMessagesRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ChatGetMessages_Call) Return(_a0 *pb.RpcChatGetMessagesResponse) *MockClientCommandsServer_ChatGetMessages_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ChatGetMessages_Call) RunAndReturn(run func(context.Context, *pb.RpcChatGetMessagesRequest) *pb.RpcChatGetMessagesResponse) *MockClientCommandsServer_ChatGetMessages_Call { + _c.Call.Return(run) + return _c +} + +// ChatGetMessagesByIds provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ChatGetMessagesByIds(_a0 context.Context, _a1 *pb.RpcChatGetMessagesByIdsRequest) *pb.RpcChatGetMessagesByIdsResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ChatGetMessagesByIds") + } + + var r0 *pb.RpcChatGetMessagesByIdsResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcChatGetMessagesByIdsRequest) *pb.RpcChatGetMessagesByIdsResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcChatGetMessagesByIdsResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ChatGetMessagesByIds_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ChatGetMessagesByIds' +type MockClientCommandsServer_ChatGetMessagesByIds_Call struct { + *mock.Call +} + +// ChatGetMessagesByIds is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcChatGetMessagesByIdsRequest +func (_e *MockClientCommandsServer_Expecter) ChatGetMessagesByIds(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ChatGetMessagesByIds_Call { + return &MockClientCommandsServer_ChatGetMessagesByIds_Call{Call: _e.mock.On("ChatGetMessagesByIds", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ChatGetMessagesByIds_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcChatGetMessagesByIdsRequest)) *MockClientCommandsServer_ChatGetMessagesByIds_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcChatGetMessagesByIdsRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ChatGetMessagesByIds_Call) Return(_a0 *pb.RpcChatGetMessagesByIdsResponse) *MockClientCommandsServer_ChatGetMessagesByIds_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ChatGetMessagesByIds_Call) RunAndReturn(run func(context.Context, *pb.RpcChatGetMessagesByIdsRequest) *pb.RpcChatGetMessagesByIdsResponse) *MockClientCommandsServer_ChatGetMessagesByIds_Call { + _c.Call.Return(run) + return _c +} + +// ChatSubscribeLastMessages provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ChatSubscribeLastMessages(_a0 context.Context, _a1 *pb.RpcChatSubscribeLastMessagesRequest) *pb.RpcChatSubscribeLastMessagesResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ChatSubscribeLastMessages") + } + + var r0 *pb.RpcChatSubscribeLastMessagesResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcChatSubscribeLastMessagesRequest) *pb.RpcChatSubscribeLastMessagesResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcChatSubscribeLastMessagesResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ChatSubscribeLastMessages_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ChatSubscribeLastMessages' +type MockClientCommandsServer_ChatSubscribeLastMessages_Call struct { + *mock.Call +} + +// ChatSubscribeLastMessages is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcChatSubscribeLastMessagesRequest +func (_e *MockClientCommandsServer_Expecter) ChatSubscribeLastMessages(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ChatSubscribeLastMessages_Call { + return &MockClientCommandsServer_ChatSubscribeLastMessages_Call{Call: _e.mock.On("ChatSubscribeLastMessages", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ChatSubscribeLastMessages_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcChatSubscribeLastMessagesRequest)) *MockClientCommandsServer_ChatSubscribeLastMessages_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcChatSubscribeLastMessagesRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ChatSubscribeLastMessages_Call) Return(_a0 *pb.RpcChatSubscribeLastMessagesResponse) *MockClientCommandsServer_ChatSubscribeLastMessages_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ChatSubscribeLastMessages_Call) RunAndReturn(run func(context.Context, *pb.RpcChatSubscribeLastMessagesRequest) *pb.RpcChatSubscribeLastMessagesResponse) *MockClientCommandsServer_ChatSubscribeLastMessages_Call { + _c.Call.Return(run) + return _c +} + +// ChatToggleMessageReaction provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ChatToggleMessageReaction(_a0 context.Context, _a1 *pb.RpcChatToggleMessageReactionRequest) *pb.RpcChatToggleMessageReactionResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ChatToggleMessageReaction") + } + + var r0 *pb.RpcChatToggleMessageReactionResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcChatToggleMessageReactionRequest) *pb.RpcChatToggleMessageReactionResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcChatToggleMessageReactionResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ChatToggleMessageReaction_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ChatToggleMessageReaction' +type MockClientCommandsServer_ChatToggleMessageReaction_Call struct { + *mock.Call +} + +// ChatToggleMessageReaction is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcChatToggleMessageReactionRequest +func (_e *MockClientCommandsServer_Expecter) ChatToggleMessageReaction(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ChatToggleMessageReaction_Call { + return &MockClientCommandsServer_ChatToggleMessageReaction_Call{Call: _e.mock.On("ChatToggleMessageReaction", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ChatToggleMessageReaction_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcChatToggleMessageReactionRequest)) *MockClientCommandsServer_ChatToggleMessageReaction_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcChatToggleMessageReactionRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ChatToggleMessageReaction_Call) Return(_a0 *pb.RpcChatToggleMessageReactionResponse) *MockClientCommandsServer_ChatToggleMessageReaction_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ChatToggleMessageReaction_Call) RunAndReturn(run func(context.Context, *pb.RpcChatToggleMessageReactionRequest) *pb.RpcChatToggleMessageReactionResponse) *MockClientCommandsServer_ChatToggleMessageReaction_Call { + _c.Call.Return(run) + return _c +} + +// ChatUnsubscribe provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ChatUnsubscribe(_a0 context.Context, _a1 *pb.RpcChatUnsubscribeRequest) *pb.RpcChatUnsubscribeResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ChatUnsubscribe") + } + + var r0 *pb.RpcChatUnsubscribeResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcChatUnsubscribeRequest) *pb.RpcChatUnsubscribeResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcChatUnsubscribeResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ChatUnsubscribe_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ChatUnsubscribe' +type MockClientCommandsServer_ChatUnsubscribe_Call struct { + *mock.Call +} + +// ChatUnsubscribe is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcChatUnsubscribeRequest +func (_e *MockClientCommandsServer_Expecter) ChatUnsubscribe(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ChatUnsubscribe_Call { + return &MockClientCommandsServer_ChatUnsubscribe_Call{Call: _e.mock.On("ChatUnsubscribe", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ChatUnsubscribe_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcChatUnsubscribeRequest)) *MockClientCommandsServer_ChatUnsubscribe_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcChatUnsubscribeRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ChatUnsubscribe_Call) Return(_a0 *pb.RpcChatUnsubscribeResponse) *MockClientCommandsServer_ChatUnsubscribe_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ChatUnsubscribe_Call) RunAndReturn(run func(context.Context, *pb.RpcChatUnsubscribeRequest) *pb.RpcChatUnsubscribeResponse) *MockClientCommandsServer_ChatUnsubscribe_Call { + _c.Call.Return(run) + return _c +} + +// DebugAccountSelectTrace provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) DebugAccountSelectTrace(_a0 context.Context, _a1 *pb.RpcDebugAccountSelectTraceRequest) *pb.RpcDebugAccountSelectTraceResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for DebugAccountSelectTrace") + } + + var r0 *pb.RpcDebugAccountSelectTraceResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcDebugAccountSelectTraceRequest) *pb.RpcDebugAccountSelectTraceResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcDebugAccountSelectTraceResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_DebugAccountSelectTrace_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'DebugAccountSelectTrace' +type MockClientCommandsServer_DebugAccountSelectTrace_Call struct { + *mock.Call +} + +// DebugAccountSelectTrace is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcDebugAccountSelectTraceRequest +func (_e *MockClientCommandsServer_Expecter) DebugAccountSelectTrace(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_DebugAccountSelectTrace_Call { + return &MockClientCommandsServer_DebugAccountSelectTrace_Call{Call: _e.mock.On("DebugAccountSelectTrace", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_DebugAccountSelectTrace_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcDebugAccountSelectTraceRequest)) *MockClientCommandsServer_DebugAccountSelectTrace_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcDebugAccountSelectTraceRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_DebugAccountSelectTrace_Call) Return(_a0 *pb.RpcDebugAccountSelectTraceResponse) *MockClientCommandsServer_DebugAccountSelectTrace_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_DebugAccountSelectTrace_Call) RunAndReturn(run func(context.Context, *pb.RpcDebugAccountSelectTraceRequest) *pb.RpcDebugAccountSelectTraceResponse) *MockClientCommandsServer_DebugAccountSelectTrace_Call { + _c.Call.Return(run) + return _c +} + +// DebugAnystoreObjectChanges provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) DebugAnystoreObjectChanges(_a0 context.Context, _a1 *pb.RpcDebugAnystoreObjectChangesRequest) *pb.RpcDebugAnystoreObjectChangesResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for DebugAnystoreObjectChanges") + } + + var r0 *pb.RpcDebugAnystoreObjectChangesResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcDebugAnystoreObjectChangesRequest) *pb.RpcDebugAnystoreObjectChangesResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcDebugAnystoreObjectChangesResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_DebugAnystoreObjectChanges_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'DebugAnystoreObjectChanges' +type MockClientCommandsServer_DebugAnystoreObjectChanges_Call struct { + *mock.Call +} + +// DebugAnystoreObjectChanges is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcDebugAnystoreObjectChangesRequest +func (_e *MockClientCommandsServer_Expecter) DebugAnystoreObjectChanges(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_DebugAnystoreObjectChanges_Call { + return &MockClientCommandsServer_DebugAnystoreObjectChanges_Call{Call: _e.mock.On("DebugAnystoreObjectChanges", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_DebugAnystoreObjectChanges_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcDebugAnystoreObjectChangesRequest)) *MockClientCommandsServer_DebugAnystoreObjectChanges_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcDebugAnystoreObjectChangesRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_DebugAnystoreObjectChanges_Call) Return(_a0 *pb.RpcDebugAnystoreObjectChangesResponse) *MockClientCommandsServer_DebugAnystoreObjectChanges_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_DebugAnystoreObjectChanges_Call) RunAndReturn(run func(context.Context, *pb.RpcDebugAnystoreObjectChangesRequest) *pb.RpcDebugAnystoreObjectChangesResponse) *MockClientCommandsServer_DebugAnystoreObjectChanges_Call { + _c.Call.Return(run) + return _c +} + +// DebugExportLocalstore provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) DebugExportLocalstore(_a0 context.Context, _a1 *pb.RpcDebugExportLocalstoreRequest) *pb.RpcDebugExportLocalstoreResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for DebugExportLocalstore") + } + + var r0 *pb.RpcDebugExportLocalstoreResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcDebugExportLocalstoreRequest) *pb.RpcDebugExportLocalstoreResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcDebugExportLocalstoreResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_DebugExportLocalstore_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'DebugExportLocalstore' +type MockClientCommandsServer_DebugExportLocalstore_Call struct { + *mock.Call +} + +// DebugExportLocalstore is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcDebugExportLocalstoreRequest +func (_e *MockClientCommandsServer_Expecter) DebugExportLocalstore(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_DebugExportLocalstore_Call { + return &MockClientCommandsServer_DebugExportLocalstore_Call{Call: _e.mock.On("DebugExportLocalstore", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_DebugExportLocalstore_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcDebugExportLocalstoreRequest)) *MockClientCommandsServer_DebugExportLocalstore_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcDebugExportLocalstoreRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_DebugExportLocalstore_Call) Return(_a0 *pb.RpcDebugExportLocalstoreResponse) *MockClientCommandsServer_DebugExportLocalstore_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_DebugExportLocalstore_Call) RunAndReturn(run func(context.Context, *pb.RpcDebugExportLocalstoreRequest) *pb.RpcDebugExportLocalstoreResponse) *MockClientCommandsServer_DebugExportLocalstore_Call { + _c.Call.Return(run) + return _c +} + +// DebugExportLog provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) DebugExportLog(_a0 context.Context, _a1 *pb.RpcDebugExportLogRequest) *pb.RpcDebugExportLogResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for DebugExportLog") + } + + var r0 *pb.RpcDebugExportLogResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcDebugExportLogRequest) *pb.RpcDebugExportLogResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcDebugExportLogResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_DebugExportLog_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'DebugExportLog' +type MockClientCommandsServer_DebugExportLog_Call struct { + *mock.Call +} + +// DebugExportLog is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcDebugExportLogRequest +func (_e *MockClientCommandsServer_Expecter) DebugExportLog(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_DebugExportLog_Call { + return &MockClientCommandsServer_DebugExportLog_Call{Call: _e.mock.On("DebugExportLog", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_DebugExportLog_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcDebugExportLogRequest)) *MockClientCommandsServer_DebugExportLog_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcDebugExportLogRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_DebugExportLog_Call) Return(_a0 *pb.RpcDebugExportLogResponse) *MockClientCommandsServer_DebugExportLog_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_DebugExportLog_Call) RunAndReturn(run func(context.Context, *pb.RpcDebugExportLogRequest) *pb.RpcDebugExportLogResponse) *MockClientCommandsServer_DebugExportLog_Call { + _c.Call.Return(run) + return _c +} + +// DebugNetCheck provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) DebugNetCheck(_a0 context.Context, _a1 *pb.RpcDebugNetCheckRequest) *pb.RpcDebugNetCheckResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for DebugNetCheck") + } + + var r0 *pb.RpcDebugNetCheckResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcDebugNetCheckRequest) *pb.RpcDebugNetCheckResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcDebugNetCheckResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_DebugNetCheck_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'DebugNetCheck' +type MockClientCommandsServer_DebugNetCheck_Call struct { + *mock.Call +} + +// DebugNetCheck is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcDebugNetCheckRequest +func (_e *MockClientCommandsServer_Expecter) DebugNetCheck(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_DebugNetCheck_Call { + return &MockClientCommandsServer_DebugNetCheck_Call{Call: _e.mock.On("DebugNetCheck", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_DebugNetCheck_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcDebugNetCheckRequest)) *MockClientCommandsServer_DebugNetCheck_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcDebugNetCheckRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_DebugNetCheck_Call) Return(_a0 *pb.RpcDebugNetCheckResponse) *MockClientCommandsServer_DebugNetCheck_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_DebugNetCheck_Call) RunAndReturn(run func(context.Context, *pb.RpcDebugNetCheckRequest) *pb.RpcDebugNetCheckResponse) *MockClientCommandsServer_DebugNetCheck_Call { + _c.Call.Return(run) + return _c +} + +// DebugOpenedObjects provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) DebugOpenedObjects(_a0 context.Context, _a1 *pb.RpcDebugOpenedObjectsRequest) *pb.RpcDebugOpenedObjectsResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for DebugOpenedObjects") + } + + var r0 *pb.RpcDebugOpenedObjectsResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcDebugOpenedObjectsRequest) *pb.RpcDebugOpenedObjectsResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcDebugOpenedObjectsResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_DebugOpenedObjects_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'DebugOpenedObjects' +type MockClientCommandsServer_DebugOpenedObjects_Call struct { + *mock.Call +} + +// DebugOpenedObjects is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcDebugOpenedObjectsRequest +func (_e *MockClientCommandsServer_Expecter) DebugOpenedObjects(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_DebugOpenedObjects_Call { + return &MockClientCommandsServer_DebugOpenedObjects_Call{Call: _e.mock.On("DebugOpenedObjects", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_DebugOpenedObjects_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcDebugOpenedObjectsRequest)) *MockClientCommandsServer_DebugOpenedObjects_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcDebugOpenedObjectsRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_DebugOpenedObjects_Call) Return(_a0 *pb.RpcDebugOpenedObjectsResponse) *MockClientCommandsServer_DebugOpenedObjects_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_DebugOpenedObjects_Call) RunAndReturn(run func(context.Context, *pb.RpcDebugOpenedObjectsRequest) *pb.RpcDebugOpenedObjectsResponse) *MockClientCommandsServer_DebugOpenedObjects_Call { + _c.Call.Return(run) + return _c +} + +// DebugPing provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) DebugPing(_a0 context.Context, _a1 *pb.RpcDebugPingRequest) *pb.RpcDebugPingResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for DebugPing") + } + + var r0 *pb.RpcDebugPingResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcDebugPingRequest) *pb.RpcDebugPingResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcDebugPingResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_DebugPing_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'DebugPing' +type MockClientCommandsServer_DebugPing_Call struct { + *mock.Call +} + +// DebugPing is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcDebugPingRequest +func (_e *MockClientCommandsServer_Expecter) DebugPing(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_DebugPing_Call { + return &MockClientCommandsServer_DebugPing_Call{Call: _e.mock.On("DebugPing", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_DebugPing_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcDebugPingRequest)) *MockClientCommandsServer_DebugPing_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcDebugPingRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_DebugPing_Call) Return(_a0 *pb.RpcDebugPingResponse) *MockClientCommandsServer_DebugPing_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_DebugPing_Call) RunAndReturn(run func(context.Context, *pb.RpcDebugPingRequest) *pb.RpcDebugPingResponse) *MockClientCommandsServer_DebugPing_Call { + _c.Call.Return(run) + return _c +} + +// DebugRunProfiler provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) DebugRunProfiler(_a0 context.Context, _a1 *pb.RpcDebugRunProfilerRequest) *pb.RpcDebugRunProfilerResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for DebugRunProfiler") + } + + var r0 *pb.RpcDebugRunProfilerResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcDebugRunProfilerRequest) *pb.RpcDebugRunProfilerResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcDebugRunProfilerResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_DebugRunProfiler_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'DebugRunProfiler' +type MockClientCommandsServer_DebugRunProfiler_Call struct { + *mock.Call +} + +// DebugRunProfiler is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcDebugRunProfilerRequest +func (_e *MockClientCommandsServer_Expecter) DebugRunProfiler(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_DebugRunProfiler_Call { + return &MockClientCommandsServer_DebugRunProfiler_Call{Call: _e.mock.On("DebugRunProfiler", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_DebugRunProfiler_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcDebugRunProfilerRequest)) *MockClientCommandsServer_DebugRunProfiler_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcDebugRunProfilerRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_DebugRunProfiler_Call) Return(_a0 *pb.RpcDebugRunProfilerResponse) *MockClientCommandsServer_DebugRunProfiler_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_DebugRunProfiler_Call) RunAndReturn(run func(context.Context, *pb.RpcDebugRunProfilerRequest) *pb.RpcDebugRunProfilerResponse) *MockClientCommandsServer_DebugRunProfiler_Call { + _c.Call.Return(run) + return _c +} + +// DebugSpaceSummary provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) DebugSpaceSummary(_a0 context.Context, _a1 *pb.RpcDebugSpaceSummaryRequest) *pb.RpcDebugSpaceSummaryResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for DebugSpaceSummary") + } + + var r0 *pb.RpcDebugSpaceSummaryResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcDebugSpaceSummaryRequest) *pb.RpcDebugSpaceSummaryResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcDebugSpaceSummaryResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_DebugSpaceSummary_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'DebugSpaceSummary' +type MockClientCommandsServer_DebugSpaceSummary_Call struct { + *mock.Call +} + +// DebugSpaceSummary is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcDebugSpaceSummaryRequest +func (_e *MockClientCommandsServer_Expecter) DebugSpaceSummary(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_DebugSpaceSummary_Call { + return &MockClientCommandsServer_DebugSpaceSummary_Call{Call: _e.mock.On("DebugSpaceSummary", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_DebugSpaceSummary_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcDebugSpaceSummaryRequest)) *MockClientCommandsServer_DebugSpaceSummary_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcDebugSpaceSummaryRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_DebugSpaceSummary_Call) Return(_a0 *pb.RpcDebugSpaceSummaryResponse) *MockClientCommandsServer_DebugSpaceSummary_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_DebugSpaceSummary_Call) RunAndReturn(run func(context.Context, *pb.RpcDebugSpaceSummaryRequest) *pb.RpcDebugSpaceSummaryResponse) *MockClientCommandsServer_DebugSpaceSummary_Call { + _c.Call.Return(run) + return _c +} + +// DebugStackGoroutines provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) DebugStackGoroutines(_a0 context.Context, _a1 *pb.RpcDebugStackGoroutinesRequest) *pb.RpcDebugStackGoroutinesResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for DebugStackGoroutines") + } + + var r0 *pb.RpcDebugStackGoroutinesResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcDebugStackGoroutinesRequest) *pb.RpcDebugStackGoroutinesResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcDebugStackGoroutinesResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_DebugStackGoroutines_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'DebugStackGoroutines' +type MockClientCommandsServer_DebugStackGoroutines_Call struct { + *mock.Call +} + +// DebugStackGoroutines is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcDebugStackGoroutinesRequest +func (_e *MockClientCommandsServer_Expecter) DebugStackGoroutines(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_DebugStackGoroutines_Call { + return &MockClientCommandsServer_DebugStackGoroutines_Call{Call: _e.mock.On("DebugStackGoroutines", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_DebugStackGoroutines_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcDebugStackGoroutinesRequest)) *MockClientCommandsServer_DebugStackGoroutines_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcDebugStackGoroutinesRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_DebugStackGoroutines_Call) Return(_a0 *pb.RpcDebugStackGoroutinesResponse) *MockClientCommandsServer_DebugStackGoroutines_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_DebugStackGoroutines_Call) RunAndReturn(run func(context.Context, *pb.RpcDebugStackGoroutinesRequest) *pb.RpcDebugStackGoroutinesResponse) *MockClientCommandsServer_DebugStackGoroutines_Call { + _c.Call.Return(run) + return _c +} + +// DebugStat provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) DebugStat(_a0 context.Context, _a1 *pb.RpcDebugStatRequest) *pb.RpcDebugStatResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for DebugStat") + } + + var r0 *pb.RpcDebugStatResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcDebugStatRequest) *pb.RpcDebugStatResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcDebugStatResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_DebugStat_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'DebugStat' +type MockClientCommandsServer_DebugStat_Call struct { + *mock.Call +} + +// DebugStat is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcDebugStatRequest +func (_e *MockClientCommandsServer_Expecter) DebugStat(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_DebugStat_Call { + return &MockClientCommandsServer_DebugStat_Call{Call: _e.mock.On("DebugStat", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_DebugStat_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcDebugStatRequest)) *MockClientCommandsServer_DebugStat_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcDebugStatRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_DebugStat_Call) Return(_a0 *pb.RpcDebugStatResponse) *MockClientCommandsServer_DebugStat_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_DebugStat_Call) RunAndReturn(run func(context.Context, *pb.RpcDebugStatRequest) *pb.RpcDebugStatResponse) *MockClientCommandsServer_DebugStat_Call { + _c.Call.Return(run) + return _c +} + +// DebugSubscriptions provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) DebugSubscriptions(_a0 context.Context, _a1 *pb.RpcDebugSubscriptionsRequest) *pb.RpcDebugSubscriptionsResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for DebugSubscriptions") + } + + var r0 *pb.RpcDebugSubscriptionsResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcDebugSubscriptionsRequest) *pb.RpcDebugSubscriptionsResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcDebugSubscriptionsResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_DebugSubscriptions_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'DebugSubscriptions' +type MockClientCommandsServer_DebugSubscriptions_Call struct { + *mock.Call +} + +// DebugSubscriptions is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcDebugSubscriptionsRequest +func (_e *MockClientCommandsServer_Expecter) DebugSubscriptions(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_DebugSubscriptions_Call { + return &MockClientCommandsServer_DebugSubscriptions_Call{Call: _e.mock.On("DebugSubscriptions", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_DebugSubscriptions_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcDebugSubscriptionsRequest)) *MockClientCommandsServer_DebugSubscriptions_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcDebugSubscriptionsRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_DebugSubscriptions_Call) Return(_a0 *pb.RpcDebugSubscriptionsResponse) *MockClientCommandsServer_DebugSubscriptions_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_DebugSubscriptions_Call) RunAndReturn(run func(context.Context, *pb.RpcDebugSubscriptionsRequest) *pb.RpcDebugSubscriptionsResponse) *MockClientCommandsServer_DebugSubscriptions_Call { + _c.Call.Return(run) + return _c +} + +// DebugTree provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) DebugTree(_a0 context.Context, _a1 *pb.RpcDebugTreeRequest) *pb.RpcDebugTreeResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for DebugTree") + } + + var r0 *pb.RpcDebugTreeResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcDebugTreeRequest) *pb.RpcDebugTreeResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcDebugTreeResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_DebugTree_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'DebugTree' +type MockClientCommandsServer_DebugTree_Call struct { + *mock.Call +} + +// DebugTree is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcDebugTreeRequest +func (_e *MockClientCommandsServer_Expecter) DebugTree(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_DebugTree_Call { + return &MockClientCommandsServer_DebugTree_Call{Call: _e.mock.On("DebugTree", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_DebugTree_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcDebugTreeRequest)) *MockClientCommandsServer_DebugTree_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcDebugTreeRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_DebugTree_Call) Return(_a0 *pb.RpcDebugTreeResponse) *MockClientCommandsServer_DebugTree_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_DebugTree_Call) RunAndReturn(run func(context.Context, *pb.RpcDebugTreeRequest) *pb.RpcDebugTreeResponse) *MockClientCommandsServer_DebugTree_Call { + _c.Call.Return(run) + return _c +} + +// DebugTreeHeads provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) DebugTreeHeads(_a0 context.Context, _a1 *pb.RpcDebugTreeHeadsRequest) *pb.RpcDebugTreeHeadsResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for DebugTreeHeads") + } + + var r0 *pb.RpcDebugTreeHeadsResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcDebugTreeHeadsRequest) *pb.RpcDebugTreeHeadsResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcDebugTreeHeadsResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_DebugTreeHeads_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'DebugTreeHeads' +type MockClientCommandsServer_DebugTreeHeads_Call struct { + *mock.Call +} + +// DebugTreeHeads is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcDebugTreeHeadsRequest +func (_e *MockClientCommandsServer_Expecter) DebugTreeHeads(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_DebugTreeHeads_Call { + return &MockClientCommandsServer_DebugTreeHeads_Call{Call: _e.mock.On("DebugTreeHeads", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_DebugTreeHeads_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcDebugTreeHeadsRequest)) *MockClientCommandsServer_DebugTreeHeads_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcDebugTreeHeadsRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_DebugTreeHeads_Call) Return(_a0 *pb.RpcDebugTreeHeadsResponse) *MockClientCommandsServer_DebugTreeHeads_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_DebugTreeHeads_Call) RunAndReturn(run func(context.Context, *pb.RpcDebugTreeHeadsRequest) *pb.RpcDebugTreeHeadsResponse) *MockClientCommandsServer_DebugTreeHeads_Call { + _c.Call.Return(run) + return _c +} + +// DeviceList provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) DeviceList(_a0 context.Context, _a1 *pb.RpcDeviceListRequest) *pb.RpcDeviceListResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for DeviceList") + } + + var r0 *pb.RpcDeviceListResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcDeviceListRequest) *pb.RpcDeviceListResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcDeviceListResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_DeviceList_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'DeviceList' +type MockClientCommandsServer_DeviceList_Call struct { + *mock.Call +} + +// DeviceList is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcDeviceListRequest +func (_e *MockClientCommandsServer_Expecter) DeviceList(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_DeviceList_Call { + return &MockClientCommandsServer_DeviceList_Call{Call: _e.mock.On("DeviceList", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_DeviceList_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcDeviceListRequest)) *MockClientCommandsServer_DeviceList_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcDeviceListRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_DeviceList_Call) Return(_a0 *pb.RpcDeviceListResponse) *MockClientCommandsServer_DeviceList_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_DeviceList_Call) RunAndReturn(run func(context.Context, *pb.RpcDeviceListRequest) *pb.RpcDeviceListResponse) *MockClientCommandsServer_DeviceList_Call { + _c.Call.Return(run) + return _c +} + +// DeviceNetworkStateSet provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) DeviceNetworkStateSet(_a0 context.Context, _a1 *pb.RpcDeviceNetworkStateSetRequest) *pb.RpcDeviceNetworkStateSetResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for DeviceNetworkStateSet") + } + + var r0 *pb.RpcDeviceNetworkStateSetResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcDeviceNetworkStateSetRequest) *pb.RpcDeviceNetworkStateSetResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcDeviceNetworkStateSetResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_DeviceNetworkStateSet_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'DeviceNetworkStateSet' +type MockClientCommandsServer_DeviceNetworkStateSet_Call struct { + *mock.Call +} + +// DeviceNetworkStateSet is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcDeviceNetworkStateSetRequest +func (_e *MockClientCommandsServer_Expecter) DeviceNetworkStateSet(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_DeviceNetworkStateSet_Call { + return &MockClientCommandsServer_DeviceNetworkStateSet_Call{Call: _e.mock.On("DeviceNetworkStateSet", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_DeviceNetworkStateSet_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcDeviceNetworkStateSetRequest)) *MockClientCommandsServer_DeviceNetworkStateSet_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcDeviceNetworkStateSetRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_DeviceNetworkStateSet_Call) Return(_a0 *pb.RpcDeviceNetworkStateSetResponse) *MockClientCommandsServer_DeviceNetworkStateSet_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_DeviceNetworkStateSet_Call) RunAndReturn(run func(context.Context, *pb.RpcDeviceNetworkStateSetRequest) *pb.RpcDeviceNetworkStateSetResponse) *MockClientCommandsServer_DeviceNetworkStateSet_Call { + _c.Call.Return(run) + return _c +} + +// DeviceSetName provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) DeviceSetName(_a0 context.Context, _a1 *pb.RpcDeviceSetNameRequest) *pb.RpcDeviceSetNameResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for DeviceSetName") + } + + var r0 *pb.RpcDeviceSetNameResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcDeviceSetNameRequest) *pb.RpcDeviceSetNameResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcDeviceSetNameResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_DeviceSetName_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'DeviceSetName' +type MockClientCommandsServer_DeviceSetName_Call struct { + *mock.Call +} + +// DeviceSetName is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcDeviceSetNameRequest +func (_e *MockClientCommandsServer_Expecter) DeviceSetName(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_DeviceSetName_Call { + return &MockClientCommandsServer_DeviceSetName_Call{Call: _e.mock.On("DeviceSetName", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_DeviceSetName_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcDeviceSetNameRequest)) *MockClientCommandsServer_DeviceSetName_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcDeviceSetNameRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_DeviceSetName_Call) Return(_a0 *pb.RpcDeviceSetNameResponse) *MockClientCommandsServer_DeviceSetName_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_DeviceSetName_Call) RunAndReturn(run func(context.Context, *pb.RpcDeviceSetNameRequest) *pb.RpcDeviceSetNameResponse) *MockClientCommandsServer_DeviceSetName_Call { + _c.Call.Return(run) + return _c +} + +// FileDownload provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) FileDownload(_a0 context.Context, _a1 *pb.RpcFileDownloadRequest) *pb.RpcFileDownloadResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for FileDownload") + } + + var r0 *pb.RpcFileDownloadResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcFileDownloadRequest) *pb.RpcFileDownloadResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcFileDownloadResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_FileDownload_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'FileDownload' +type MockClientCommandsServer_FileDownload_Call struct { + *mock.Call +} + +// FileDownload is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcFileDownloadRequest +func (_e *MockClientCommandsServer_Expecter) FileDownload(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_FileDownload_Call { + return &MockClientCommandsServer_FileDownload_Call{Call: _e.mock.On("FileDownload", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_FileDownload_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcFileDownloadRequest)) *MockClientCommandsServer_FileDownload_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcFileDownloadRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_FileDownload_Call) Return(_a0 *pb.RpcFileDownloadResponse) *MockClientCommandsServer_FileDownload_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_FileDownload_Call) RunAndReturn(run func(context.Context, *pb.RpcFileDownloadRequest) *pb.RpcFileDownloadResponse) *MockClientCommandsServer_FileDownload_Call { + _c.Call.Return(run) + return _c +} + +// FileDrop provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) FileDrop(_a0 context.Context, _a1 *pb.RpcFileDropRequest) *pb.RpcFileDropResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for FileDrop") + } + + var r0 *pb.RpcFileDropResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcFileDropRequest) *pb.RpcFileDropResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcFileDropResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_FileDrop_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'FileDrop' +type MockClientCommandsServer_FileDrop_Call struct { + *mock.Call +} + +// FileDrop is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcFileDropRequest +func (_e *MockClientCommandsServer_Expecter) FileDrop(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_FileDrop_Call { + return &MockClientCommandsServer_FileDrop_Call{Call: _e.mock.On("FileDrop", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_FileDrop_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcFileDropRequest)) *MockClientCommandsServer_FileDrop_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcFileDropRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_FileDrop_Call) Return(_a0 *pb.RpcFileDropResponse) *MockClientCommandsServer_FileDrop_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_FileDrop_Call) RunAndReturn(run func(context.Context, *pb.RpcFileDropRequest) *pb.RpcFileDropResponse) *MockClientCommandsServer_FileDrop_Call { + _c.Call.Return(run) + return _c +} + +// FileListOffload provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) FileListOffload(_a0 context.Context, _a1 *pb.RpcFileListOffloadRequest) *pb.RpcFileListOffloadResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for FileListOffload") + } + + var r0 *pb.RpcFileListOffloadResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcFileListOffloadRequest) *pb.RpcFileListOffloadResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcFileListOffloadResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_FileListOffload_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'FileListOffload' +type MockClientCommandsServer_FileListOffload_Call struct { + *mock.Call +} + +// FileListOffload is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcFileListOffloadRequest +func (_e *MockClientCommandsServer_Expecter) FileListOffload(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_FileListOffload_Call { + return &MockClientCommandsServer_FileListOffload_Call{Call: _e.mock.On("FileListOffload", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_FileListOffload_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcFileListOffloadRequest)) *MockClientCommandsServer_FileListOffload_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcFileListOffloadRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_FileListOffload_Call) Return(_a0 *pb.RpcFileListOffloadResponse) *MockClientCommandsServer_FileListOffload_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_FileListOffload_Call) RunAndReturn(run func(context.Context, *pb.RpcFileListOffloadRequest) *pb.RpcFileListOffloadResponse) *MockClientCommandsServer_FileListOffload_Call { + _c.Call.Return(run) + return _c +} + +// FileNodeUsage provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) FileNodeUsage(_a0 context.Context, _a1 *pb.RpcFileNodeUsageRequest) *pb.RpcFileNodeUsageResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for FileNodeUsage") + } + + var r0 *pb.RpcFileNodeUsageResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcFileNodeUsageRequest) *pb.RpcFileNodeUsageResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcFileNodeUsageResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_FileNodeUsage_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'FileNodeUsage' +type MockClientCommandsServer_FileNodeUsage_Call struct { + *mock.Call +} + +// FileNodeUsage is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcFileNodeUsageRequest +func (_e *MockClientCommandsServer_Expecter) FileNodeUsage(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_FileNodeUsage_Call { + return &MockClientCommandsServer_FileNodeUsage_Call{Call: _e.mock.On("FileNodeUsage", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_FileNodeUsage_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcFileNodeUsageRequest)) *MockClientCommandsServer_FileNodeUsage_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcFileNodeUsageRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_FileNodeUsage_Call) Return(_a0 *pb.RpcFileNodeUsageResponse) *MockClientCommandsServer_FileNodeUsage_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_FileNodeUsage_Call) RunAndReturn(run func(context.Context, *pb.RpcFileNodeUsageRequest) *pb.RpcFileNodeUsageResponse) *MockClientCommandsServer_FileNodeUsage_Call { + _c.Call.Return(run) + return _c +} + +// FileReconcile provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) FileReconcile(_a0 context.Context, _a1 *pb.RpcFileReconcileRequest) *pb.RpcFileReconcileResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for FileReconcile") + } + + var r0 *pb.RpcFileReconcileResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcFileReconcileRequest) *pb.RpcFileReconcileResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcFileReconcileResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_FileReconcile_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'FileReconcile' +type MockClientCommandsServer_FileReconcile_Call struct { + *mock.Call +} + +// FileReconcile is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcFileReconcileRequest +func (_e *MockClientCommandsServer_Expecter) FileReconcile(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_FileReconcile_Call { + return &MockClientCommandsServer_FileReconcile_Call{Call: _e.mock.On("FileReconcile", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_FileReconcile_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcFileReconcileRequest)) *MockClientCommandsServer_FileReconcile_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcFileReconcileRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_FileReconcile_Call) Return(_a0 *pb.RpcFileReconcileResponse) *MockClientCommandsServer_FileReconcile_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_FileReconcile_Call) RunAndReturn(run func(context.Context, *pb.RpcFileReconcileRequest) *pb.RpcFileReconcileResponse) *MockClientCommandsServer_FileReconcile_Call { + _c.Call.Return(run) + return _c +} + +// FileSpaceOffload provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) FileSpaceOffload(_a0 context.Context, _a1 *pb.RpcFileSpaceOffloadRequest) *pb.RpcFileSpaceOffloadResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for FileSpaceOffload") + } + + var r0 *pb.RpcFileSpaceOffloadResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcFileSpaceOffloadRequest) *pb.RpcFileSpaceOffloadResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcFileSpaceOffloadResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_FileSpaceOffload_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'FileSpaceOffload' +type MockClientCommandsServer_FileSpaceOffload_Call struct { + *mock.Call +} + +// FileSpaceOffload is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcFileSpaceOffloadRequest +func (_e *MockClientCommandsServer_Expecter) FileSpaceOffload(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_FileSpaceOffload_Call { + return &MockClientCommandsServer_FileSpaceOffload_Call{Call: _e.mock.On("FileSpaceOffload", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_FileSpaceOffload_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcFileSpaceOffloadRequest)) *MockClientCommandsServer_FileSpaceOffload_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcFileSpaceOffloadRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_FileSpaceOffload_Call) Return(_a0 *pb.RpcFileSpaceOffloadResponse) *MockClientCommandsServer_FileSpaceOffload_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_FileSpaceOffload_Call) RunAndReturn(run func(context.Context, *pb.RpcFileSpaceOffloadRequest) *pb.RpcFileSpaceOffloadResponse) *MockClientCommandsServer_FileSpaceOffload_Call { + _c.Call.Return(run) + return _c +} + +// FileSpaceUsage provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) FileSpaceUsage(_a0 context.Context, _a1 *pb.RpcFileSpaceUsageRequest) *pb.RpcFileSpaceUsageResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for FileSpaceUsage") + } + + var r0 *pb.RpcFileSpaceUsageResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcFileSpaceUsageRequest) *pb.RpcFileSpaceUsageResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcFileSpaceUsageResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_FileSpaceUsage_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'FileSpaceUsage' +type MockClientCommandsServer_FileSpaceUsage_Call struct { + *mock.Call +} + +// FileSpaceUsage is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcFileSpaceUsageRequest +func (_e *MockClientCommandsServer_Expecter) FileSpaceUsage(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_FileSpaceUsage_Call { + return &MockClientCommandsServer_FileSpaceUsage_Call{Call: _e.mock.On("FileSpaceUsage", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_FileSpaceUsage_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcFileSpaceUsageRequest)) *MockClientCommandsServer_FileSpaceUsage_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcFileSpaceUsageRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_FileSpaceUsage_Call) Return(_a0 *pb.RpcFileSpaceUsageResponse) *MockClientCommandsServer_FileSpaceUsage_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_FileSpaceUsage_Call) RunAndReturn(run func(context.Context, *pb.RpcFileSpaceUsageRequest) *pb.RpcFileSpaceUsageResponse) *MockClientCommandsServer_FileSpaceUsage_Call { + _c.Call.Return(run) + return _c +} + +// FileUpload provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) FileUpload(_a0 context.Context, _a1 *pb.RpcFileUploadRequest) *pb.RpcFileUploadResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for FileUpload") + } + + var r0 *pb.RpcFileUploadResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcFileUploadRequest) *pb.RpcFileUploadResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcFileUploadResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_FileUpload_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'FileUpload' +type MockClientCommandsServer_FileUpload_Call struct { + *mock.Call +} + +// FileUpload is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcFileUploadRequest +func (_e *MockClientCommandsServer_Expecter) FileUpload(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_FileUpload_Call { + return &MockClientCommandsServer_FileUpload_Call{Call: _e.mock.On("FileUpload", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_FileUpload_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcFileUploadRequest)) *MockClientCommandsServer_FileUpload_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcFileUploadRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_FileUpload_Call) Return(_a0 *pb.RpcFileUploadResponse) *MockClientCommandsServer_FileUpload_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_FileUpload_Call) RunAndReturn(run func(context.Context, *pb.RpcFileUploadRequest) *pb.RpcFileUploadResponse) *MockClientCommandsServer_FileUpload_Call { + _c.Call.Return(run) + return _c +} + +// GalleryDownloadIndex provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) GalleryDownloadIndex(_a0 context.Context, _a1 *pb.RpcGalleryDownloadIndexRequest) *pb.RpcGalleryDownloadIndexResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for GalleryDownloadIndex") + } + + var r0 *pb.RpcGalleryDownloadIndexResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcGalleryDownloadIndexRequest) *pb.RpcGalleryDownloadIndexResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcGalleryDownloadIndexResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_GalleryDownloadIndex_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GalleryDownloadIndex' +type MockClientCommandsServer_GalleryDownloadIndex_Call struct { + *mock.Call +} + +// GalleryDownloadIndex is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcGalleryDownloadIndexRequest +func (_e *MockClientCommandsServer_Expecter) GalleryDownloadIndex(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_GalleryDownloadIndex_Call { + return &MockClientCommandsServer_GalleryDownloadIndex_Call{Call: _e.mock.On("GalleryDownloadIndex", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_GalleryDownloadIndex_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcGalleryDownloadIndexRequest)) *MockClientCommandsServer_GalleryDownloadIndex_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcGalleryDownloadIndexRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_GalleryDownloadIndex_Call) Return(_a0 *pb.RpcGalleryDownloadIndexResponse) *MockClientCommandsServer_GalleryDownloadIndex_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_GalleryDownloadIndex_Call) RunAndReturn(run func(context.Context, *pb.RpcGalleryDownloadIndexRequest) *pb.RpcGalleryDownloadIndexResponse) *MockClientCommandsServer_GalleryDownloadIndex_Call { + _c.Call.Return(run) + return _c +} + +// GalleryDownloadManifest provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) GalleryDownloadManifest(_a0 context.Context, _a1 *pb.RpcGalleryDownloadManifestRequest) *pb.RpcGalleryDownloadManifestResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for GalleryDownloadManifest") + } + + var r0 *pb.RpcGalleryDownloadManifestResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcGalleryDownloadManifestRequest) *pb.RpcGalleryDownloadManifestResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcGalleryDownloadManifestResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_GalleryDownloadManifest_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GalleryDownloadManifest' +type MockClientCommandsServer_GalleryDownloadManifest_Call struct { + *mock.Call +} + +// GalleryDownloadManifest is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcGalleryDownloadManifestRequest +func (_e *MockClientCommandsServer_Expecter) GalleryDownloadManifest(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_GalleryDownloadManifest_Call { + return &MockClientCommandsServer_GalleryDownloadManifest_Call{Call: _e.mock.On("GalleryDownloadManifest", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_GalleryDownloadManifest_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcGalleryDownloadManifestRequest)) *MockClientCommandsServer_GalleryDownloadManifest_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcGalleryDownloadManifestRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_GalleryDownloadManifest_Call) Return(_a0 *pb.RpcGalleryDownloadManifestResponse) *MockClientCommandsServer_GalleryDownloadManifest_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_GalleryDownloadManifest_Call) RunAndReturn(run func(context.Context, *pb.RpcGalleryDownloadManifestRequest) *pb.RpcGalleryDownloadManifestResponse) *MockClientCommandsServer_GalleryDownloadManifest_Call { + _c.Call.Return(run) + return _c +} + +// HistoryDiffVersions provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) HistoryDiffVersions(_a0 context.Context, _a1 *pb.RpcHistoryDiffVersionsRequest) *pb.RpcHistoryDiffVersionsResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for HistoryDiffVersions") + } + + var r0 *pb.RpcHistoryDiffVersionsResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcHistoryDiffVersionsRequest) *pb.RpcHistoryDiffVersionsResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcHistoryDiffVersionsResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_HistoryDiffVersions_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'HistoryDiffVersions' +type MockClientCommandsServer_HistoryDiffVersions_Call struct { + *mock.Call +} + +// HistoryDiffVersions is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcHistoryDiffVersionsRequest +func (_e *MockClientCommandsServer_Expecter) HistoryDiffVersions(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_HistoryDiffVersions_Call { + return &MockClientCommandsServer_HistoryDiffVersions_Call{Call: _e.mock.On("HistoryDiffVersions", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_HistoryDiffVersions_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcHistoryDiffVersionsRequest)) *MockClientCommandsServer_HistoryDiffVersions_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcHistoryDiffVersionsRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_HistoryDiffVersions_Call) Return(_a0 *pb.RpcHistoryDiffVersionsResponse) *MockClientCommandsServer_HistoryDiffVersions_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_HistoryDiffVersions_Call) RunAndReturn(run func(context.Context, *pb.RpcHistoryDiffVersionsRequest) *pb.RpcHistoryDiffVersionsResponse) *MockClientCommandsServer_HistoryDiffVersions_Call { + _c.Call.Return(run) + return _c +} + +// HistoryGetVersions provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) HistoryGetVersions(_a0 context.Context, _a1 *pb.RpcHistoryGetVersionsRequest) *pb.RpcHistoryGetVersionsResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for HistoryGetVersions") + } + + var r0 *pb.RpcHistoryGetVersionsResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcHistoryGetVersionsRequest) *pb.RpcHistoryGetVersionsResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcHistoryGetVersionsResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_HistoryGetVersions_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'HistoryGetVersions' +type MockClientCommandsServer_HistoryGetVersions_Call struct { + *mock.Call +} + +// HistoryGetVersions is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcHistoryGetVersionsRequest +func (_e *MockClientCommandsServer_Expecter) HistoryGetVersions(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_HistoryGetVersions_Call { + return &MockClientCommandsServer_HistoryGetVersions_Call{Call: _e.mock.On("HistoryGetVersions", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_HistoryGetVersions_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcHistoryGetVersionsRequest)) *MockClientCommandsServer_HistoryGetVersions_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcHistoryGetVersionsRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_HistoryGetVersions_Call) Return(_a0 *pb.RpcHistoryGetVersionsResponse) *MockClientCommandsServer_HistoryGetVersions_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_HistoryGetVersions_Call) RunAndReturn(run func(context.Context, *pb.RpcHistoryGetVersionsRequest) *pb.RpcHistoryGetVersionsResponse) *MockClientCommandsServer_HistoryGetVersions_Call { + _c.Call.Return(run) + return _c +} + +// HistorySetVersion provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) HistorySetVersion(_a0 context.Context, _a1 *pb.RpcHistorySetVersionRequest) *pb.RpcHistorySetVersionResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for HistorySetVersion") + } + + var r0 *pb.RpcHistorySetVersionResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcHistorySetVersionRequest) *pb.RpcHistorySetVersionResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcHistorySetVersionResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_HistorySetVersion_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'HistorySetVersion' +type MockClientCommandsServer_HistorySetVersion_Call struct { + *mock.Call +} + +// HistorySetVersion is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcHistorySetVersionRequest +func (_e *MockClientCommandsServer_Expecter) HistorySetVersion(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_HistorySetVersion_Call { + return &MockClientCommandsServer_HistorySetVersion_Call{Call: _e.mock.On("HistorySetVersion", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_HistorySetVersion_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcHistorySetVersionRequest)) *MockClientCommandsServer_HistorySetVersion_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcHistorySetVersionRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_HistorySetVersion_Call) Return(_a0 *pb.RpcHistorySetVersionResponse) *MockClientCommandsServer_HistorySetVersion_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_HistorySetVersion_Call) RunAndReturn(run func(context.Context, *pb.RpcHistorySetVersionRequest) *pb.RpcHistorySetVersionResponse) *MockClientCommandsServer_HistorySetVersion_Call { + _c.Call.Return(run) + return _c +} + +// HistoryShowVersion provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) HistoryShowVersion(_a0 context.Context, _a1 *pb.RpcHistoryShowVersionRequest) *pb.RpcHistoryShowVersionResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for HistoryShowVersion") + } + + var r0 *pb.RpcHistoryShowVersionResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcHistoryShowVersionRequest) *pb.RpcHistoryShowVersionResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcHistoryShowVersionResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_HistoryShowVersion_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'HistoryShowVersion' +type MockClientCommandsServer_HistoryShowVersion_Call struct { + *mock.Call +} + +// HistoryShowVersion is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcHistoryShowVersionRequest +func (_e *MockClientCommandsServer_Expecter) HistoryShowVersion(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_HistoryShowVersion_Call { + return &MockClientCommandsServer_HistoryShowVersion_Call{Call: _e.mock.On("HistoryShowVersion", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_HistoryShowVersion_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcHistoryShowVersionRequest)) *MockClientCommandsServer_HistoryShowVersion_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcHistoryShowVersionRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_HistoryShowVersion_Call) Return(_a0 *pb.RpcHistoryShowVersionResponse) *MockClientCommandsServer_HistoryShowVersion_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_HistoryShowVersion_Call) RunAndReturn(run func(context.Context, *pb.RpcHistoryShowVersionRequest) *pb.RpcHistoryShowVersionResponse) *MockClientCommandsServer_HistoryShowVersion_Call { + _c.Call.Return(run) + return _c +} + +// InitialSetParameters provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) InitialSetParameters(_a0 context.Context, _a1 *pb.RpcInitialSetParametersRequest) *pb.RpcInitialSetParametersResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for InitialSetParameters") + } + + var r0 *pb.RpcInitialSetParametersResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcInitialSetParametersRequest) *pb.RpcInitialSetParametersResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcInitialSetParametersResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_InitialSetParameters_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'InitialSetParameters' +type MockClientCommandsServer_InitialSetParameters_Call struct { + *mock.Call +} + +// InitialSetParameters is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcInitialSetParametersRequest +func (_e *MockClientCommandsServer_Expecter) InitialSetParameters(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_InitialSetParameters_Call { + return &MockClientCommandsServer_InitialSetParameters_Call{Call: _e.mock.On("InitialSetParameters", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_InitialSetParameters_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcInitialSetParametersRequest)) *MockClientCommandsServer_InitialSetParameters_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcInitialSetParametersRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_InitialSetParameters_Call) Return(_a0 *pb.RpcInitialSetParametersResponse) *MockClientCommandsServer_InitialSetParameters_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_InitialSetParameters_Call) RunAndReturn(run func(context.Context, *pb.RpcInitialSetParametersRequest) *pb.RpcInitialSetParametersResponse) *MockClientCommandsServer_InitialSetParameters_Call { + _c.Call.Return(run) + return _c +} + +// LinkPreview provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) LinkPreview(_a0 context.Context, _a1 *pb.RpcLinkPreviewRequest) *pb.RpcLinkPreviewResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for LinkPreview") + } + + var r0 *pb.RpcLinkPreviewResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcLinkPreviewRequest) *pb.RpcLinkPreviewResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcLinkPreviewResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_LinkPreview_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'LinkPreview' +type MockClientCommandsServer_LinkPreview_Call struct { + *mock.Call +} + +// LinkPreview is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcLinkPreviewRequest +func (_e *MockClientCommandsServer_Expecter) LinkPreview(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_LinkPreview_Call { + return &MockClientCommandsServer_LinkPreview_Call{Call: _e.mock.On("LinkPreview", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_LinkPreview_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcLinkPreviewRequest)) *MockClientCommandsServer_LinkPreview_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcLinkPreviewRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_LinkPreview_Call) Return(_a0 *pb.RpcLinkPreviewResponse) *MockClientCommandsServer_LinkPreview_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_LinkPreview_Call) RunAndReturn(run func(context.Context, *pb.RpcLinkPreviewRequest) *pb.RpcLinkPreviewResponse) *MockClientCommandsServer_LinkPreview_Call { + _c.Call.Return(run) + return _c +} + +// ListenSessionEvents provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ListenSessionEvents(_a0 *pb.StreamRequest, _a1 service.ClientCommands_ListenSessionEventsServer) { + _m.Called(_a0, _a1) +} + +// MockClientCommandsServer_ListenSessionEvents_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ListenSessionEvents' +type MockClientCommandsServer_ListenSessionEvents_Call struct { + *mock.Call +} + +// ListenSessionEvents is a helper method to define mock.On call +// - _a0 *pb.StreamRequest +// - _a1 service.ClientCommands_ListenSessionEventsServer +func (_e *MockClientCommandsServer_Expecter) ListenSessionEvents(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ListenSessionEvents_Call { + return &MockClientCommandsServer_ListenSessionEvents_Call{Call: _e.mock.On("ListenSessionEvents", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ListenSessionEvents_Call) Run(run func(_a0 *pb.StreamRequest, _a1 service.ClientCommands_ListenSessionEventsServer)) *MockClientCommandsServer_ListenSessionEvents_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(*pb.StreamRequest), args[1].(service.ClientCommands_ListenSessionEventsServer)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ListenSessionEvents_Call) Return() *MockClientCommandsServer_ListenSessionEvents_Call { + _c.Call.Return() + return _c +} + +func (_c *MockClientCommandsServer_ListenSessionEvents_Call) RunAndReturn(run func(*pb.StreamRequest, service.ClientCommands_ListenSessionEventsServer)) *MockClientCommandsServer_ListenSessionEvents_Call { + _c.Call.Return(run) + return _c +} + +// LogSend provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) LogSend(_a0 context.Context, _a1 *pb.RpcLogSendRequest) *pb.RpcLogSendResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for LogSend") + } + + var r0 *pb.RpcLogSendResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcLogSendRequest) *pb.RpcLogSendResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcLogSendResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_LogSend_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'LogSend' +type MockClientCommandsServer_LogSend_Call struct { + *mock.Call +} + +// LogSend is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcLogSendRequest +func (_e *MockClientCommandsServer_Expecter) LogSend(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_LogSend_Call { + return &MockClientCommandsServer_LogSend_Call{Call: _e.mock.On("LogSend", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_LogSend_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcLogSendRequest)) *MockClientCommandsServer_LogSend_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcLogSendRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_LogSend_Call) Return(_a0 *pb.RpcLogSendResponse) *MockClientCommandsServer_LogSend_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_LogSend_Call) RunAndReturn(run func(context.Context, *pb.RpcLogSendRequest) *pb.RpcLogSendResponse) *MockClientCommandsServer_LogSend_Call { + _c.Call.Return(run) + return _c +} + +// MembershipFinalize provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) MembershipFinalize(_a0 context.Context, _a1 *pb.RpcMembershipFinalizeRequest) *pb.RpcMembershipFinalizeResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for MembershipFinalize") + } + + var r0 *pb.RpcMembershipFinalizeResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcMembershipFinalizeRequest) *pb.RpcMembershipFinalizeResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcMembershipFinalizeResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_MembershipFinalize_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'MembershipFinalize' +type MockClientCommandsServer_MembershipFinalize_Call struct { + *mock.Call +} + +// MembershipFinalize is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcMembershipFinalizeRequest +func (_e *MockClientCommandsServer_Expecter) MembershipFinalize(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_MembershipFinalize_Call { + return &MockClientCommandsServer_MembershipFinalize_Call{Call: _e.mock.On("MembershipFinalize", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_MembershipFinalize_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcMembershipFinalizeRequest)) *MockClientCommandsServer_MembershipFinalize_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcMembershipFinalizeRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_MembershipFinalize_Call) Return(_a0 *pb.RpcMembershipFinalizeResponse) *MockClientCommandsServer_MembershipFinalize_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_MembershipFinalize_Call) RunAndReturn(run func(context.Context, *pb.RpcMembershipFinalizeRequest) *pb.RpcMembershipFinalizeResponse) *MockClientCommandsServer_MembershipFinalize_Call { + _c.Call.Return(run) + return _c +} + +// MembershipGetPortalLinkUrl provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) MembershipGetPortalLinkUrl(_a0 context.Context, _a1 *pb.RpcMembershipGetPortalLinkUrlRequest) *pb.RpcMembershipGetPortalLinkUrlResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for MembershipGetPortalLinkUrl") + } + + var r0 *pb.RpcMembershipGetPortalLinkUrlResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcMembershipGetPortalLinkUrlRequest) *pb.RpcMembershipGetPortalLinkUrlResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcMembershipGetPortalLinkUrlResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_MembershipGetPortalLinkUrl_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'MembershipGetPortalLinkUrl' +type MockClientCommandsServer_MembershipGetPortalLinkUrl_Call struct { + *mock.Call +} + +// MembershipGetPortalLinkUrl is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcMembershipGetPortalLinkUrlRequest +func (_e *MockClientCommandsServer_Expecter) MembershipGetPortalLinkUrl(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_MembershipGetPortalLinkUrl_Call { + return &MockClientCommandsServer_MembershipGetPortalLinkUrl_Call{Call: _e.mock.On("MembershipGetPortalLinkUrl", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_MembershipGetPortalLinkUrl_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcMembershipGetPortalLinkUrlRequest)) *MockClientCommandsServer_MembershipGetPortalLinkUrl_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcMembershipGetPortalLinkUrlRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_MembershipGetPortalLinkUrl_Call) Return(_a0 *pb.RpcMembershipGetPortalLinkUrlResponse) *MockClientCommandsServer_MembershipGetPortalLinkUrl_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_MembershipGetPortalLinkUrl_Call) RunAndReturn(run func(context.Context, *pb.RpcMembershipGetPortalLinkUrlRequest) *pb.RpcMembershipGetPortalLinkUrlResponse) *MockClientCommandsServer_MembershipGetPortalLinkUrl_Call { + _c.Call.Return(run) + return _c +} + +// MembershipGetStatus provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) MembershipGetStatus(_a0 context.Context, _a1 *pb.RpcMembershipGetStatusRequest) *pb.RpcMembershipGetStatusResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for MembershipGetStatus") + } + + var r0 *pb.RpcMembershipGetStatusResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcMembershipGetStatusRequest) *pb.RpcMembershipGetStatusResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcMembershipGetStatusResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_MembershipGetStatus_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'MembershipGetStatus' +type MockClientCommandsServer_MembershipGetStatus_Call struct { + *mock.Call +} + +// MembershipGetStatus is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcMembershipGetStatusRequest +func (_e *MockClientCommandsServer_Expecter) MembershipGetStatus(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_MembershipGetStatus_Call { + return &MockClientCommandsServer_MembershipGetStatus_Call{Call: _e.mock.On("MembershipGetStatus", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_MembershipGetStatus_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcMembershipGetStatusRequest)) *MockClientCommandsServer_MembershipGetStatus_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcMembershipGetStatusRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_MembershipGetStatus_Call) Return(_a0 *pb.RpcMembershipGetStatusResponse) *MockClientCommandsServer_MembershipGetStatus_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_MembershipGetStatus_Call) RunAndReturn(run func(context.Context, *pb.RpcMembershipGetStatusRequest) *pb.RpcMembershipGetStatusResponse) *MockClientCommandsServer_MembershipGetStatus_Call { + _c.Call.Return(run) + return _c +} + +// MembershipGetTiers provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) MembershipGetTiers(_a0 context.Context, _a1 *pb.RpcMembershipGetTiersRequest) *pb.RpcMembershipGetTiersResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for MembershipGetTiers") + } + + var r0 *pb.RpcMembershipGetTiersResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcMembershipGetTiersRequest) *pb.RpcMembershipGetTiersResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcMembershipGetTiersResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_MembershipGetTiers_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'MembershipGetTiers' +type MockClientCommandsServer_MembershipGetTiers_Call struct { + *mock.Call +} + +// MembershipGetTiers is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcMembershipGetTiersRequest +func (_e *MockClientCommandsServer_Expecter) MembershipGetTiers(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_MembershipGetTiers_Call { + return &MockClientCommandsServer_MembershipGetTiers_Call{Call: _e.mock.On("MembershipGetTiers", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_MembershipGetTiers_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcMembershipGetTiersRequest)) *MockClientCommandsServer_MembershipGetTiers_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcMembershipGetTiersRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_MembershipGetTiers_Call) Return(_a0 *pb.RpcMembershipGetTiersResponse) *MockClientCommandsServer_MembershipGetTiers_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_MembershipGetTiers_Call) RunAndReturn(run func(context.Context, *pb.RpcMembershipGetTiersRequest) *pb.RpcMembershipGetTiersResponse) *MockClientCommandsServer_MembershipGetTiers_Call { + _c.Call.Return(run) + return _c +} + +// MembershipGetVerificationEmail provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) MembershipGetVerificationEmail(_a0 context.Context, _a1 *pb.RpcMembershipGetVerificationEmailRequest) *pb.RpcMembershipGetVerificationEmailResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for MembershipGetVerificationEmail") + } + + var r0 *pb.RpcMembershipGetVerificationEmailResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcMembershipGetVerificationEmailRequest) *pb.RpcMembershipGetVerificationEmailResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcMembershipGetVerificationEmailResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_MembershipGetVerificationEmail_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'MembershipGetVerificationEmail' +type MockClientCommandsServer_MembershipGetVerificationEmail_Call struct { + *mock.Call +} + +// MembershipGetVerificationEmail is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcMembershipGetVerificationEmailRequest +func (_e *MockClientCommandsServer_Expecter) MembershipGetVerificationEmail(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_MembershipGetVerificationEmail_Call { + return &MockClientCommandsServer_MembershipGetVerificationEmail_Call{Call: _e.mock.On("MembershipGetVerificationEmail", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_MembershipGetVerificationEmail_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcMembershipGetVerificationEmailRequest)) *MockClientCommandsServer_MembershipGetVerificationEmail_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcMembershipGetVerificationEmailRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_MembershipGetVerificationEmail_Call) Return(_a0 *pb.RpcMembershipGetVerificationEmailResponse) *MockClientCommandsServer_MembershipGetVerificationEmail_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_MembershipGetVerificationEmail_Call) RunAndReturn(run func(context.Context, *pb.RpcMembershipGetVerificationEmailRequest) *pb.RpcMembershipGetVerificationEmailResponse) *MockClientCommandsServer_MembershipGetVerificationEmail_Call { + _c.Call.Return(run) + return _c +} + +// MembershipGetVerificationEmailStatus provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) MembershipGetVerificationEmailStatus(_a0 context.Context, _a1 *pb.RpcMembershipGetVerificationEmailStatusRequest) *pb.RpcMembershipGetVerificationEmailStatusResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for MembershipGetVerificationEmailStatus") + } + + var r0 *pb.RpcMembershipGetVerificationEmailStatusResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcMembershipGetVerificationEmailStatusRequest) *pb.RpcMembershipGetVerificationEmailStatusResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcMembershipGetVerificationEmailStatusResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_MembershipGetVerificationEmailStatus_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'MembershipGetVerificationEmailStatus' +type MockClientCommandsServer_MembershipGetVerificationEmailStatus_Call struct { + *mock.Call +} + +// MembershipGetVerificationEmailStatus is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcMembershipGetVerificationEmailStatusRequest +func (_e *MockClientCommandsServer_Expecter) MembershipGetVerificationEmailStatus(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_MembershipGetVerificationEmailStatus_Call { + return &MockClientCommandsServer_MembershipGetVerificationEmailStatus_Call{Call: _e.mock.On("MembershipGetVerificationEmailStatus", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_MembershipGetVerificationEmailStatus_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcMembershipGetVerificationEmailStatusRequest)) *MockClientCommandsServer_MembershipGetVerificationEmailStatus_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcMembershipGetVerificationEmailStatusRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_MembershipGetVerificationEmailStatus_Call) Return(_a0 *pb.RpcMembershipGetVerificationEmailStatusResponse) *MockClientCommandsServer_MembershipGetVerificationEmailStatus_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_MembershipGetVerificationEmailStatus_Call) RunAndReturn(run func(context.Context, *pb.RpcMembershipGetVerificationEmailStatusRequest) *pb.RpcMembershipGetVerificationEmailStatusResponse) *MockClientCommandsServer_MembershipGetVerificationEmailStatus_Call { + _c.Call.Return(run) + return _c +} + +// MembershipIsNameValid provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) MembershipIsNameValid(_a0 context.Context, _a1 *pb.RpcMembershipIsNameValidRequest) *pb.RpcMembershipIsNameValidResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for MembershipIsNameValid") + } + + var r0 *pb.RpcMembershipIsNameValidResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcMembershipIsNameValidRequest) *pb.RpcMembershipIsNameValidResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcMembershipIsNameValidResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_MembershipIsNameValid_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'MembershipIsNameValid' +type MockClientCommandsServer_MembershipIsNameValid_Call struct { + *mock.Call +} + +// MembershipIsNameValid is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcMembershipIsNameValidRequest +func (_e *MockClientCommandsServer_Expecter) MembershipIsNameValid(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_MembershipIsNameValid_Call { + return &MockClientCommandsServer_MembershipIsNameValid_Call{Call: _e.mock.On("MembershipIsNameValid", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_MembershipIsNameValid_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcMembershipIsNameValidRequest)) *MockClientCommandsServer_MembershipIsNameValid_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcMembershipIsNameValidRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_MembershipIsNameValid_Call) Return(_a0 *pb.RpcMembershipIsNameValidResponse) *MockClientCommandsServer_MembershipIsNameValid_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_MembershipIsNameValid_Call) RunAndReturn(run func(context.Context, *pb.RpcMembershipIsNameValidRequest) *pb.RpcMembershipIsNameValidResponse) *MockClientCommandsServer_MembershipIsNameValid_Call { + _c.Call.Return(run) + return _c +} + +// MembershipRegisterPaymentRequest provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) MembershipRegisterPaymentRequest(_a0 context.Context, _a1 *pb.RpcMembershipRegisterPaymentRequestRequest) *pb.RpcMembershipRegisterPaymentRequestResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for MembershipRegisterPaymentRequest") + } + + var r0 *pb.RpcMembershipRegisterPaymentRequestResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcMembershipRegisterPaymentRequestRequest) *pb.RpcMembershipRegisterPaymentRequestResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcMembershipRegisterPaymentRequestResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_MembershipRegisterPaymentRequest_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'MembershipRegisterPaymentRequest' +type MockClientCommandsServer_MembershipRegisterPaymentRequest_Call struct { + *mock.Call +} + +// MembershipRegisterPaymentRequest is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcMembershipRegisterPaymentRequestRequest +func (_e *MockClientCommandsServer_Expecter) MembershipRegisterPaymentRequest(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_MembershipRegisterPaymentRequest_Call { + return &MockClientCommandsServer_MembershipRegisterPaymentRequest_Call{Call: _e.mock.On("MembershipRegisterPaymentRequest", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_MembershipRegisterPaymentRequest_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcMembershipRegisterPaymentRequestRequest)) *MockClientCommandsServer_MembershipRegisterPaymentRequest_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcMembershipRegisterPaymentRequestRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_MembershipRegisterPaymentRequest_Call) Return(_a0 *pb.RpcMembershipRegisterPaymentRequestResponse) *MockClientCommandsServer_MembershipRegisterPaymentRequest_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_MembershipRegisterPaymentRequest_Call) RunAndReturn(run func(context.Context, *pb.RpcMembershipRegisterPaymentRequestRequest) *pb.RpcMembershipRegisterPaymentRequestResponse) *MockClientCommandsServer_MembershipRegisterPaymentRequest_Call { + _c.Call.Return(run) + return _c +} + +// MembershipVerifyAppStoreReceipt provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) MembershipVerifyAppStoreReceipt(_a0 context.Context, _a1 *pb.RpcMembershipVerifyAppStoreReceiptRequest) *pb.RpcMembershipVerifyAppStoreReceiptResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for MembershipVerifyAppStoreReceipt") + } + + var r0 *pb.RpcMembershipVerifyAppStoreReceiptResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcMembershipVerifyAppStoreReceiptRequest) *pb.RpcMembershipVerifyAppStoreReceiptResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcMembershipVerifyAppStoreReceiptResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_MembershipVerifyAppStoreReceipt_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'MembershipVerifyAppStoreReceipt' +type MockClientCommandsServer_MembershipVerifyAppStoreReceipt_Call struct { + *mock.Call +} + +// MembershipVerifyAppStoreReceipt is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcMembershipVerifyAppStoreReceiptRequest +func (_e *MockClientCommandsServer_Expecter) MembershipVerifyAppStoreReceipt(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_MembershipVerifyAppStoreReceipt_Call { + return &MockClientCommandsServer_MembershipVerifyAppStoreReceipt_Call{Call: _e.mock.On("MembershipVerifyAppStoreReceipt", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_MembershipVerifyAppStoreReceipt_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcMembershipVerifyAppStoreReceiptRequest)) *MockClientCommandsServer_MembershipVerifyAppStoreReceipt_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcMembershipVerifyAppStoreReceiptRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_MembershipVerifyAppStoreReceipt_Call) Return(_a0 *pb.RpcMembershipVerifyAppStoreReceiptResponse) *MockClientCommandsServer_MembershipVerifyAppStoreReceipt_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_MembershipVerifyAppStoreReceipt_Call) RunAndReturn(run func(context.Context, *pb.RpcMembershipVerifyAppStoreReceiptRequest) *pb.RpcMembershipVerifyAppStoreReceiptResponse) *MockClientCommandsServer_MembershipVerifyAppStoreReceipt_Call { + _c.Call.Return(run) + return _c +} + +// MembershipVerifyEmailCode provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) MembershipVerifyEmailCode(_a0 context.Context, _a1 *pb.RpcMembershipVerifyEmailCodeRequest) *pb.RpcMembershipVerifyEmailCodeResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for MembershipVerifyEmailCode") + } + + var r0 *pb.RpcMembershipVerifyEmailCodeResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcMembershipVerifyEmailCodeRequest) *pb.RpcMembershipVerifyEmailCodeResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcMembershipVerifyEmailCodeResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_MembershipVerifyEmailCode_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'MembershipVerifyEmailCode' +type MockClientCommandsServer_MembershipVerifyEmailCode_Call struct { + *mock.Call +} + +// MembershipVerifyEmailCode is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcMembershipVerifyEmailCodeRequest +func (_e *MockClientCommandsServer_Expecter) MembershipVerifyEmailCode(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_MembershipVerifyEmailCode_Call { + return &MockClientCommandsServer_MembershipVerifyEmailCode_Call{Call: _e.mock.On("MembershipVerifyEmailCode", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_MembershipVerifyEmailCode_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcMembershipVerifyEmailCodeRequest)) *MockClientCommandsServer_MembershipVerifyEmailCode_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcMembershipVerifyEmailCodeRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_MembershipVerifyEmailCode_Call) Return(_a0 *pb.RpcMembershipVerifyEmailCodeResponse) *MockClientCommandsServer_MembershipVerifyEmailCode_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_MembershipVerifyEmailCode_Call) RunAndReturn(run func(context.Context, *pb.RpcMembershipVerifyEmailCodeRequest) *pb.RpcMembershipVerifyEmailCodeResponse) *MockClientCommandsServer_MembershipVerifyEmailCode_Call { + _c.Call.Return(run) + return _c +} + +// NameServiceResolveAnyId provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) NameServiceResolveAnyId(_a0 context.Context, _a1 *pb.RpcNameServiceResolveAnyIdRequest) *pb.RpcNameServiceResolveAnyIdResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for NameServiceResolveAnyId") + } + + var r0 *pb.RpcNameServiceResolveAnyIdResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcNameServiceResolveAnyIdRequest) *pb.RpcNameServiceResolveAnyIdResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcNameServiceResolveAnyIdResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_NameServiceResolveAnyId_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'NameServiceResolveAnyId' +type MockClientCommandsServer_NameServiceResolveAnyId_Call struct { + *mock.Call +} + +// NameServiceResolveAnyId is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcNameServiceResolveAnyIdRequest +func (_e *MockClientCommandsServer_Expecter) NameServiceResolveAnyId(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_NameServiceResolveAnyId_Call { + return &MockClientCommandsServer_NameServiceResolveAnyId_Call{Call: _e.mock.On("NameServiceResolveAnyId", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_NameServiceResolveAnyId_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcNameServiceResolveAnyIdRequest)) *MockClientCommandsServer_NameServiceResolveAnyId_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcNameServiceResolveAnyIdRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_NameServiceResolveAnyId_Call) Return(_a0 *pb.RpcNameServiceResolveAnyIdResponse) *MockClientCommandsServer_NameServiceResolveAnyId_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_NameServiceResolveAnyId_Call) RunAndReturn(run func(context.Context, *pb.RpcNameServiceResolveAnyIdRequest) *pb.RpcNameServiceResolveAnyIdResponse) *MockClientCommandsServer_NameServiceResolveAnyId_Call { + _c.Call.Return(run) + return _c +} + +// NameServiceResolveName provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) NameServiceResolveName(_a0 context.Context, _a1 *pb.RpcNameServiceResolveNameRequest) *pb.RpcNameServiceResolveNameResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for NameServiceResolveName") + } + + var r0 *pb.RpcNameServiceResolveNameResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcNameServiceResolveNameRequest) *pb.RpcNameServiceResolveNameResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcNameServiceResolveNameResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_NameServiceResolveName_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'NameServiceResolveName' +type MockClientCommandsServer_NameServiceResolveName_Call struct { + *mock.Call +} + +// NameServiceResolveName is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcNameServiceResolveNameRequest +func (_e *MockClientCommandsServer_Expecter) NameServiceResolveName(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_NameServiceResolveName_Call { + return &MockClientCommandsServer_NameServiceResolveName_Call{Call: _e.mock.On("NameServiceResolveName", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_NameServiceResolveName_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcNameServiceResolveNameRequest)) *MockClientCommandsServer_NameServiceResolveName_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcNameServiceResolveNameRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_NameServiceResolveName_Call) Return(_a0 *pb.RpcNameServiceResolveNameResponse) *MockClientCommandsServer_NameServiceResolveName_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_NameServiceResolveName_Call) RunAndReturn(run func(context.Context, *pb.RpcNameServiceResolveNameRequest) *pb.RpcNameServiceResolveNameResponse) *MockClientCommandsServer_NameServiceResolveName_Call { + _c.Call.Return(run) + return _c +} + +// NameServiceUserAccountGet provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) NameServiceUserAccountGet(_a0 context.Context, _a1 *pb.RpcNameServiceUserAccountGetRequest) *pb.RpcNameServiceUserAccountGetResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for NameServiceUserAccountGet") + } + + var r0 *pb.RpcNameServiceUserAccountGetResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcNameServiceUserAccountGetRequest) *pb.RpcNameServiceUserAccountGetResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcNameServiceUserAccountGetResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_NameServiceUserAccountGet_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'NameServiceUserAccountGet' +type MockClientCommandsServer_NameServiceUserAccountGet_Call struct { + *mock.Call +} + +// NameServiceUserAccountGet is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcNameServiceUserAccountGetRequest +func (_e *MockClientCommandsServer_Expecter) NameServiceUserAccountGet(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_NameServiceUserAccountGet_Call { + return &MockClientCommandsServer_NameServiceUserAccountGet_Call{Call: _e.mock.On("NameServiceUserAccountGet", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_NameServiceUserAccountGet_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcNameServiceUserAccountGetRequest)) *MockClientCommandsServer_NameServiceUserAccountGet_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcNameServiceUserAccountGetRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_NameServiceUserAccountGet_Call) Return(_a0 *pb.RpcNameServiceUserAccountGetResponse) *MockClientCommandsServer_NameServiceUserAccountGet_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_NameServiceUserAccountGet_Call) RunAndReturn(run func(context.Context, *pb.RpcNameServiceUserAccountGetRequest) *pb.RpcNameServiceUserAccountGetResponse) *MockClientCommandsServer_NameServiceUserAccountGet_Call { + _c.Call.Return(run) + return _c +} + +// NavigationGetObjectInfoWithLinks provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) NavigationGetObjectInfoWithLinks(_a0 context.Context, _a1 *pb.RpcNavigationGetObjectInfoWithLinksRequest) *pb.RpcNavigationGetObjectInfoWithLinksResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for NavigationGetObjectInfoWithLinks") + } + + var r0 *pb.RpcNavigationGetObjectInfoWithLinksResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcNavigationGetObjectInfoWithLinksRequest) *pb.RpcNavigationGetObjectInfoWithLinksResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcNavigationGetObjectInfoWithLinksResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_NavigationGetObjectInfoWithLinks_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'NavigationGetObjectInfoWithLinks' +type MockClientCommandsServer_NavigationGetObjectInfoWithLinks_Call struct { + *mock.Call +} + +// NavigationGetObjectInfoWithLinks is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcNavigationGetObjectInfoWithLinksRequest +func (_e *MockClientCommandsServer_Expecter) NavigationGetObjectInfoWithLinks(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_NavigationGetObjectInfoWithLinks_Call { + return &MockClientCommandsServer_NavigationGetObjectInfoWithLinks_Call{Call: _e.mock.On("NavigationGetObjectInfoWithLinks", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_NavigationGetObjectInfoWithLinks_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcNavigationGetObjectInfoWithLinksRequest)) *MockClientCommandsServer_NavigationGetObjectInfoWithLinks_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcNavigationGetObjectInfoWithLinksRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_NavigationGetObjectInfoWithLinks_Call) Return(_a0 *pb.RpcNavigationGetObjectInfoWithLinksResponse) *MockClientCommandsServer_NavigationGetObjectInfoWithLinks_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_NavigationGetObjectInfoWithLinks_Call) RunAndReturn(run func(context.Context, *pb.RpcNavigationGetObjectInfoWithLinksRequest) *pb.RpcNavigationGetObjectInfoWithLinksResponse) *MockClientCommandsServer_NavigationGetObjectInfoWithLinks_Call { + _c.Call.Return(run) + return _c +} + +// NavigationListObjects provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) NavigationListObjects(_a0 context.Context, _a1 *pb.RpcNavigationListObjectsRequest) *pb.RpcNavigationListObjectsResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for NavigationListObjects") + } + + var r0 *pb.RpcNavigationListObjectsResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcNavigationListObjectsRequest) *pb.RpcNavigationListObjectsResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcNavigationListObjectsResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_NavigationListObjects_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'NavigationListObjects' +type MockClientCommandsServer_NavigationListObjects_Call struct { + *mock.Call +} + +// NavigationListObjects is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcNavigationListObjectsRequest +func (_e *MockClientCommandsServer_Expecter) NavigationListObjects(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_NavigationListObjects_Call { + return &MockClientCommandsServer_NavigationListObjects_Call{Call: _e.mock.On("NavigationListObjects", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_NavigationListObjects_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcNavigationListObjectsRequest)) *MockClientCommandsServer_NavigationListObjects_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcNavigationListObjectsRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_NavigationListObjects_Call) Return(_a0 *pb.RpcNavigationListObjectsResponse) *MockClientCommandsServer_NavigationListObjects_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_NavigationListObjects_Call) RunAndReturn(run func(context.Context, *pb.RpcNavigationListObjectsRequest) *pb.RpcNavigationListObjectsResponse) *MockClientCommandsServer_NavigationListObjects_Call { + _c.Call.Return(run) + return _c +} + +// NotificationList provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) NotificationList(_a0 context.Context, _a1 *pb.RpcNotificationListRequest) *pb.RpcNotificationListResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for NotificationList") + } + + var r0 *pb.RpcNotificationListResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcNotificationListRequest) *pb.RpcNotificationListResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcNotificationListResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_NotificationList_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'NotificationList' +type MockClientCommandsServer_NotificationList_Call struct { + *mock.Call +} + +// NotificationList is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcNotificationListRequest +func (_e *MockClientCommandsServer_Expecter) NotificationList(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_NotificationList_Call { + return &MockClientCommandsServer_NotificationList_Call{Call: _e.mock.On("NotificationList", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_NotificationList_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcNotificationListRequest)) *MockClientCommandsServer_NotificationList_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcNotificationListRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_NotificationList_Call) Return(_a0 *pb.RpcNotificationListResponse) *MockClientCommandsServer_NotificationList_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_NotificationList_Call) RunAndReturn(run func(context.Context, *pb.RpcNotificationListRequest) *pb.RpcNotificationListResponse) *MockClientCommandsServer_NotificationList_Call { + _c.Call.Return(run) + return _c +} + +// NotificationReply provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) NotificationReply(_a0 context.Context, _a1 *pb.RpcNotificationReplyRequest) *pb.RpcNotificationReplyResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for NotificationReply") + } + + var r0 *pb.RpcNotificationReplyResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcNotificationReplyRequest) *pb.RpcNotificationReplyResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcNotificationReplyResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_NotificationReply_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'NotificationReply' +type MockClientCommandsServer_NotificationReply_Call struct { + *mock.Call +} + +// NotificationReply is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcNotificationReplyRequest +func (_e *MockClientCommandsServer_Expecter) NotificationReply(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_NotificationReply_Call { + return &MockClientCommandsServer_NotificationReply_Call{Call: _e.mock.On("NotificationReply", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_NotificationReply_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcNotificationReplyRequest)) *MockClientCommandsServer_NotificationReply_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcNotificationReplyRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_NotificationReply_Call) Return(_a0 *pb.RpcNotificationReplyResponse) *MockClientCommandsServer_NotificationReply_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_NotificationReply_Call) RunAndReturn(run func(context.Context, *pb.RpcNotificationReplyRequest) *pb.RpcNotificationReplyResponse) *MockClientCommandsServer_NotificationReply_Call { + _c.Call.Return(run) + return _c +} + +// NotificationTest provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) NotificationTest(_a0 context.Context, _a1 *pb.RpcNotificationTestRequest) *pb.RpcNotificationTestResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for NotificationTest") + } + + var r0 *pb.RpcNotificationTestResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcNotificationTestRequest) *pb.RpcNotificationTestResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcNotificationTestResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_NotificationTest_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'NotificationTest' +type MockClientCommandsServer_NotificationTest_Call struct { + *mock.Call +} + +// NotificationTest is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcNotificationTestRequest +func (_e *MockClientCommandsServer_Expecter) NotificationTest(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_NotificationTest_Call { + return &MockClientCommandsServer_NotificationTest_Call{Call: _e.mock.On("NotificationTest", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_NotificationTest_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcNotificationTestRequest)) *MockClientCommandsServer_NotificationTest_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcNotificationTestRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_NotificationTest_Call) Return(_a0 *pb.RpcNotificationTestResponse) *MockClientCommandsServer_NotificationTest_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_NotificationTest_Call) RunAndReturn(run func(context.Context, *pb.RpcNotificationTestRequest) *pb.RpcNotificationTestResponse) *MockClientCommandsServer_NotificationTest_Call { + _c.Call.Return(run) + return _c +} + +// ObjectApplyTemplate provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectApplyTemplate(_a0 context.Context, _a1 *pb.RpcObjectApplyTemplateRequest) *pb.RpcObjectApplyTemplateResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectApplyTemplate") + } + + var r0 *pb.RpcObjectApplyTemplateResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectApplyTemplateRequest) *pb.RpcObjectApplyTemplateResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectApplyTemplateResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectApplyTemplate_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectApplyTemplate' +type MockClientCommandsServer_ObjectApplyTemplate_Call struct { + *mock.Call +} + +// ObjectApplyTemplate is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectApplyTemplateRequest +func (_e *MockClientCommandsServer_Expecter) ObjectApplyTemplate(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectApplyTemplate_Call { + return &MockClientCommandsServer_ObjectApplyTemplate_Call{Call: _e.mock.On("ObjectApplyTemplate", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectApplyTemplate_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectApplyTemplateRequest)) *MockClientCommandsServer_ObjectApplyTemplate_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectApplyTemplateRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectApplyTemplate_Call) Return(_a0 *pb.RpcObjectApplyTemplateResponse) *MockClientCommandsServer_ObjectApplyTemplate_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectApplyTemplate_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectApplyTemplateRequest) *pb.RpcObjectApplyTemplateResponse) *MockClientCommandsServer_ObjectApplyTemplate_Call { + _c.Call.Return(run) + return _c +} + +// ObjectBookmarkFetch provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectBookmarkFetch(_a0 context.Context, _a1 *pb.RpcObjectBookmarkFetchRequest) *pb.RpcObjectBookmarkFetchResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectBookmarkFetch") + } + + var r0 *pb.RpcObjectBookmarkFetchResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectBookmarkFetchRequest) *pb.RpcObjectBookmarkFetchResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectBookmarkFetchResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectBookmarkFetch_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectBookmarkFetch' +type MockClientCommandsServer_ObjectBookmarkFetch_Call struct { + *mock.Call +} + +// ObjectBookmarkFetch is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectBookmarkFetchRequest +func (_e *MockClientCommandsServer_Expecter) ObjectBookmarkFetch(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectBookmarkFetch_Call { + return &MockClientCommandsServer_ObjectBookmarkFetch_Call{Call: _e.mock.On("ObjectBookmarkFetch", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectBookmarkFetch_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectBookmarkFetchRequest)) *MockClientCommandsServer_ObjectBookmarkFetch_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectBookmarkFetchRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectBookmarkFetch_Call) Return(_a0 *pb.RpcObjectBookmarkFetchResponse) *MockClientCommandsServer_ObjectBookmarkFetch_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectBookmarkFetch_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectBookmarkFetchRequest) *pb.RpcObjectBookmarkFetchResponse) *MockClientCommandsServer_ObjectBookmarkFetch_Call { + _c.Call.Return(run) + return _c +} + +// ObjectChatAdd provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectChatAdd(_a0 context.Context, _a1 *pb.RpcObjectChatAddRequest) *pb.RpcObjectChatAddResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectChatAdd") + } + + var r0 *pb.RpcObjectChatAddResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectChatAddRequest) *pb.RpcObjectChatAddResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectChatAddResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectChatAdd_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectChatAdd' +type MockClientCommandsServer_ObjectChatAdd_Call struct { + *mock.Call +} + +// ObjectChatAdd is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectChatAddRequest +func (_e *MockClientCommandsServer_Expecter) ObjectChatAdd(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectChatAdd_Call { + return &MockClientCommandsServer_ObjectChatAdd_Call{Call: _e.mock.On("ObjectChatAdd", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectChatAdd_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectChatAddRequest)) *MockClientCommandsServer_ObjectChatAdd_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectChatAddRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectChatAdd_Call) Return(_a0 *pb.RpcObjectChatAddResponse) *MockClientCommandsServer_ObjectChatAdd_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectChatAdd_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectChatAddRequest) *pb.RpcObjectChatAddResponse) *MockClientCommandsServer_ObjectChatAdd_Call { + _c.Call.Return(run) + return _c +} + +// ObjectClose provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectClose(_a0 context.Context, _a1 *pb.RpcObjectCloseRequest) *pb.RpcObjectCloseResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectClose") + } + + var r0 *pb.RpcObjectCloseResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectCloseRequest) *pb.RpcObjectCloseResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectCloseResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectClose_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectClose' +type MockClientCommandsServer_ObjectClose_Call struct { + *mock.Call +} + +// ObjectClose is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectCloseRequest +func (_e *MockClientCommandsServer_Expecter) ObjectClose(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectClose_Call { + return &MockClientCommandsServer_ObjectClose_Call{Call: _e.mock.On("ObjectClose", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectClose_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectCloseRequest)) *MockClientCommandsServer_ObjectClose_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectCloseRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectClose_Call) Return(_a0 *pb.RpcObjectCloseResponse) *MockClientCommandsServer_ObjectClose_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectClose_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectCloseRequest) *pb.RpcObjectCloseResponse) *MockClientCommandsServer_ObjectClose_Call { + _c.Call.Return(run) + return _c +} + +// ObjectCollectionAdd provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectCollectionAdd(_a0 context.Context, _a1 *pb.RpcObjectCollectionAddRequest) *pb.RpcObjectCollectionAddResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectCollectionAdd") + } + + var r0 *pb.RpcObjectCollectionAddResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectCollectionAddRequest) *pb.RpcObjectCollectionAddResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectCollectionAddResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectCollectionAdd_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectCollectionAdd' +type MockClientCommandsServer_ObjectCollectionAdd_Call struct { + *mock.Call +} + +// ObjectCollectionAdd is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectCollectionAddRequest +func (_e *MockClientCommandsServer_Expecter) ObjectCollectionAdd(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectCollectionAdd_Call { + return &MockClientCommandsServer_ObjectCollectionAdd_Call{Call: _e.mock.On("ObjectCollectionAdd", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectCollectionAdd_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectCollectionAddRequest)) *MockClientCommandsServer_ObjectCollectionAdd_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectCollectionAddRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectCollectionAdd_Call) Return(_a0 *pb.RpcObjectCollectionAddResponse) *MockClientCommandsServer_ObjectCollectionAdd_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectCollectionAdd_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectCollectionAddRequest) *pb.RpcObjectCollectionAddResponse) *MockClientCommandsServer_ObjectCollectionAdd_Call { + _c.Call.Return(run) + return _c +} + +// ObjectCollectionRemove provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectCollectionRemove(_a0 context.Context, _a1 *pb.RpcObjectCollectionRemoveRequest) *pb.RpcObjectCollectionRemoveResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectCollectionRemove") + } + + var r0 *pb.RpcObjectCollectionRemoveResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectCollectionRemoveRequest) *pb.RpcObjectCollectionRemoveResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectCollectionRemoveResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectCollectionRemove_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectCollectionRemove' +type MockClientCommandsServer_ObjectCollectionRemove_Call struct { + *mock.Call +} + +// ObjectCollectionRemove is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectCollectionRemoveRequest +func (_e *MockClientCommandsServer_Expecter) ObjectCollectionRemove(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectCollectionRemove_Call { + return &MockClientCommandsServer_ObjectCollectionRemove_Call{Call: _e.mock.On("ObjectCollectionRemove", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectCollectionRemove_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectCollectionRemoveRequest)) *MockClientCommandsServer_ObjectCollectionRemove_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectCollectionRemoveRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectCollectionRemove_Call) Return(_a0 *pb.RpcObjectCollectionRemoveResponse) *MockClientCommandsServer_ObjectCollectionRemove_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectCollectionRemove_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectCollectionRemoveRequest) *pb.RpcObjectCollectionRemoveResponse) *MockClientCommandsServer_ObjectCollectionRemove_Call { + _c.Call.Return(run) + return _c +} + +// ObjectCollectionSort provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectCollectionSort(_a0 context.Context, _a1 *pb.RpcObjectCollectionSortRequest) *pb.RpcObjectCollectionSortResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectCollectionSort") + } + + var r0 *pb.RpcObjectCollectionSortResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectCollectionSortRequest) *pb.RpcObjectCollectionSortResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectCollectionSortResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectCollectionSort_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectCollectionSort' +type MockClientCommandsServer_ObjectCollectionSort_Call struct { + *mock.Call +} + +// ObjectCollectionSort is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectCollectionSortRequest +func (_e *MockClientCommandsServer_Expecter) ObjectCollectionSort(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectCollectionSort_Call { + return &MockClientCommandsServer_ObjectCollectionSort_Call{Call: _e.mock.On("ObjectCollectionSort", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectCollectionSort_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectCollectionSortRequest)) *MockClientCommandsServer_ObjectCollectionSort_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectCollectionSortRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectCollectionSort_Call) Return(_a0 *pb.RpcObjectCollectionSortResponse) *MockClientCommandsServer_ObjectCollectionSort_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectCollectionSort_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectCollectionSortRequest) *pb.RpcObjectCollectionSortResponse) *MockClientCommandsServer_ObjectCollectionSort_Call { + _c.Call.Return(run) + return _c +} + +// ObjectCreate provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectCreate(_a0 context.Context, _a1 *pb.RpcObjectCreateRequest) *pb.RpcObjectCreateResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectCreate") + } + + var r0 *pb.RpcObjectCreateResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectCreateRequest) *pb.RpcObjectCreateResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectCreateResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectCreate_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectCreate' +type MockClientCommandsServer_ObjectCreate_Call struct { + *mock.Call +} + +// ObjectCreate is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectCreateRequest +func (_e *MockClientCommandsServer_Expecter) ObjectCreate(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectCreate_Call { + return &MockClientCommandsServer_ObjectCreate_Call{Call: _e.mock.On("ObjectCreate", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectCreate_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectCreateRequest)) *MockClientCommandsServer_ObjectCreate_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectCreateRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectCreate_Call) Return(_a0 *pb.RpcObjectCreateResponse) *MockClientCommandsServer_ObjectCreate_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectCreate_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectCreateRequest) *pb.RpcObjectCreateResponse) *MockClientCommandsServer_ObjectCreate_Call { + _c.Call.Return(run) + return _c +} + +// ObjectCreateBookmark provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectCreateBookmark(_a0 context.Context, _a1 *pb.RpcObjectCreateBookmarkRequest) *pb.RpcObjectCreateBookmarkResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectCreateBookmark") + } + + var r0 *pb.RpcObjectCreateBookmarkResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectCreateBookmarkRequest) *pb.RpcObjectCreateBookmarkResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectCreateBookmarkResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectCreateBookmark_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectCreateBookmark' +type MockClientCommandsServer_ObjectCreateBookmark_Call struct { + *mock.Call +} + +// ObjectCreateBookmark is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectCreateBookmarkRequest +func (_e *MockClientCommandsServer_Expecter) ObjectCreateBookmark(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectCreateBookmark_Call { + return &MockClientCommandsServer_ObjectCreateBookmark_Call{Call: _e.mock.On("ObjectCreateBookmark", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectCreateBookmark_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectCreateBookmarkRequest)) *MockClientCommandsServer_ObjectCreateBookmark_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectCreateBookmarkRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectCreateBookmark_Call) Return(_a0 *pb.RpcObjectCreateBookmarkResponse) *MockClientCommandsServer_ObjectCreateBookmark_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectCreateBookmark_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectCreateBookmarkRequest) *pb.RpcObjectCreateBookmarkResponse) *MockClientCommandsServer_ObjectCreateBookmark_Call { + _c.Call.Return(run) + return _c +} + +// ObjectCreateFromUrl provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectCreateFromUrl(_a0 context.Context, _a1 *pb.RpcObjectCreateFromUrlRequest) *pb.RpcObjectCreateFromUrlResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectCreateFromUrl") + } + + var r0 *pb.RpcObjectCreateFromUrlResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectCreateFromUrlRequest) *pb.RpcObjectCreateFromUrlResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectCreateFromUrlResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectCreateFromUrl_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectCreateFromUrl' +type MockClientCommandsServer_ObjectCreateFromUrl_Call struct { + *mock.Call +} + +// ObjectCreateFromUrl is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectCreateFromUrlRequest +func (_e *MockClientCommandsServer_Expecter) ObjectCreateFromUrl(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectCreateFromUrl_Call { + return &MockClientCommandsServer_ObjectCreateFromUrl_Call{Call: _e.mock.On("ObjectCreateFromUrl", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectCreateFromUrl_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectCreateFromUrlRequest)) *MockClientCommandsServer_ObjectCreateFromUrl_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectCreateFromUrlRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectCreateFromUrl_Call) Return(_a0 *pb.RpcObjectCreateFromUrlResponse) *MockClientCommandsServer_ObjectCreateFromUrl_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectCreateFromUrl_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectCreateFromUrlRequest) *pb.RpcObjectCreateFromUrlResponse) *MockClientCommandsServer_ObjectCreateFromUrl_Call { + _c.Call.Return(run) + return _c +} + +// ObjectCreateObjectType provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectCreateObjectType(_a0 context.Context, _a1 *pb.RpcObjectCreateObjectTypeRequest) *pb.RpcObjectCreateObjectTypeResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectCreateObjectType") + } + + var r0 *pb.RpcObjectCreateObjectTypeResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectCreateObjectTypeRequest) *pb.RpcObjectCreateObjectTypeResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectCreateObjectTypeResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectCreateObjectType_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectCreateObjectType' +type MockClientCommandsServer_ObjectCreateObjectType_Call struct { + *mock.Call +} + +// ObjectCreateObjectType is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectCreateObjectTypeRequest +func (_e *MockClientCommandsServer_Expecter) ObjectCreateObjectType(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectCreateObjectType_Call { + return &MockClientCommandsServer_ObjectCreateObjectType_Call{Call: _e.mock.On("ObjectCreateObjectType", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectCreateObjectType_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectCreateObjectTypeRequest)) *MockClientCommandsServer_ObjectCreateObjectType_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectCreateObjectTypeRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectCreateObjectType_Call) Return(_a0 *pb.RpcObjectCreateObjectTypeResponse) *MockClientCommandsServer_ObjectCreateObjectType_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectCreateObjectType_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectCreateObjectTypeRequest) *pb.RpcObjectCreateObjectTypeResponse) *MockClientCommandsServer_ObjectCreateObjectType_Call { + _c.Call.Return(run) + return _c +} + +// ObjectCreateRelation provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectCreateRelation(_a0 context.Context, _a1 *pb.RpcObjectCreateRelationRequest) *pb.RpcObjectCreateRelationResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectCreateRelation") + } + + var r0 *pb.RpcObjectCreateRelationResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectCreateRelationRequest) *pb.RpcObjectCreateRelationResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectCreateRelationResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectCreateRelation_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectCreateRelation' +type MockClientCommandsServer_ObjectCreateRelation_Call struct { + *mock.Call +} + +// ObjectCreateRelation is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectCreateRelationRequest +func (_e *MockClientCommandsServer_Expecter) ObjectCreateRelation(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectCreateRelation_Call { + return &MockClientCommandsServer_ObjectCreateRelation_Call{Call: _e.mock.On("ObjectCreateRelation", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectCreateRelation_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectCreateRelationRequest)) *MockClientCommandsServer_ObjectCreateRelation_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectCreateRelationRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectCreateRelation_Call) Return(_a0 *pb.RpcObjectCreateRelationResponse) *MockClientCommandsServer_ObjectCreateRelation_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectCreateRelation_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectCreateRelationRequest) *pb.RpcObjectCreateRelationResponse) *MockClientCommandsServer_ObjectCreateRelation_Call { + _c.Call.Return(run) + return _c +} + +// ObjectCreateRelationOption provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectCreateRelationOption(_a0 context.Context, _a1 *pb.RpcObjectCreateRelationOptionRequest) *pb.RpcObjectCreateRelationOptionResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectCreateRelationOption") + } + + var r0 *pb.RpcObjectCreateRelationOptionResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectCreateRelationOptionRequest) *pb.RpcObjectCreateRelationOptionResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectCreateRelationOptionResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectCreateRelationOption_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectCreateRelationOption' +type MockClientCommandsServer_ObjectCreateRelationOption_Call struct { + *mock.Call +} + +// ObjectCreateRelationOption is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectCreateRelationOptionRequest +func (_e *MockClientCommandsServer_Expecter) ObjectCreateRelationOption(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectCreateRelationOption_Call { + return &MockClientCommandsServer_ObjectCreateRelationOption_Call{Call: _e.mock.On("ObjectCreateRelationOption", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectCreateRelationOption_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectCreateRelationOptionRequest)) *MockClientCommandsServer_ObjectCreateRelationOption_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectCreateRelationOptionRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectCreateRelationOption_Call) Return(_a0 *pb.RpcObjectCreateRelationOptionResponse) *MockClientCommandsServer_ObjectCreateRelationOption_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectCreateRelationOption_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectCreateRelationOptionRequest) *pb.RpcObjectCreateRelationOptionResponse) *MockClientCommandsServer_ObjectCreateRelationOption_Call { + _c.Call.Return(run) + return _c +} + +// ObjectCreateSet provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectCreateSet(_a0 context.Context, _a1 *pb.RpcObjectCreateSetRequest) *pb.RpcObjectCreateSetResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectCreateSet") + } + + var r0 *pb.RpcObjectCreateSetResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectCreateSetRequest) *pb.RpcObjectCreateSetResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectCreateSetResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectCreateSet_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectCreateSet' +type MockClientCommandsServer_ObjectCreateSet_Call struct { + *mock.Call +} + +// ObjectCreateSet is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectCreateSetRequest +func (_e *MockClientCommandsServer_Expecter) ObjectCreateSet(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectCreateSet_Call { + return &MockClientCommandsServer_ObjectCreateSet_Call{Call: _e.mock.On("ObjectCreateSet", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectCreateSet_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectCreateSetRequest)) *MockClientCommandsServer_ObjectCreateSet_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectCreateSetRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectCreateSet_Call) Return(_a0 *pb.RpcObjectCreateSetResponse) *MockClientCommandsServer_ObjectCreateSet_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectCreateSet_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectCreateSetRequest) *pb.RpcObjectCreateSetResponse) *MockClientCommandsServer_ObjectCreateSet_Call { + _c.Call.Return(run) + return _c +} + +// ObjectCrossSpaceSearchSubscribe provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectCrossSpaceSearchSubscribe(_a0 context.Context, _a1 *pb.RpcObjectCrossSpaceSearchSubscribeRequest) *pb.RpcObjectCrossSpaceSearchSubscribeResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectCrossSpaceSearchSubscribe") + } + + var r0 *pb.RpcObjectCrossSpaceSearchSubscribeResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectCrossSpaceSearchSubscribeRequest) *pb.RpcObjectCrossSpaceSearchSubscribeResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectCrossSpaceSearchSubscribeResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectCrossSpaceSearchSubscribe_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectCrossSpaceSearchSubscribe' +type MockClientCommandsServer_ObjectCrossSpaceSearchSubscribe_Call struct { + *mock.Call +} + +// ObjectCrossSpaceSearchSubscribe is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectCrossSpaceSearchSubscribeRequest +func (_e *MockClientCommandsServer_Expecter) ObjectCrossSpaceSearchSubscribe(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectCrossSpaceSearchSubscribe_Call { + return &MockClientCommandsServer_ObjectCrossSpaceSearchSubscribe_Call{Call: _e.mock.On("ObjectCrossSpaceSearchSubscribe", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectCrossSpaceSearchSubscribe_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectCrossSpaceSearchSubscribeRequest)) *MockClientCommandsServer_ObjectCrossSpaceSearchSubscribe_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectCrossSpaceSearchSubscribeRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectCrossSpaceSearchSubscribe_Call) Return(_a0 *pb.RpcObjectCrossSpaceSearchSubscribeResponse) *MockClientCommandsServer_ObjectCrossSpaceSearchSubscribe_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectCrossSpaceSearchSubscribe_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectCrossSpaceSearchSubscribeRequest) *pb.RpcObjectCrossSpaceSearchSubscribeResponse) *MockClientCommandsServer_ObjectCrossSpaceSearchSubscribe_Call { + _c.Call.Return(run) + return _c +} + +// ObjectCrossSpaceSearchUnsubscribe provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectCrossSpaceSearchUnsubscribe(_a0 context.Context, _a1 *pb.RpcObjectCrossSpaceSearchUnsubscribeRequest) *pb.RpcObjectCrossSpaceSearchUnsubscribeResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectCrossSpaceSearchUnsubscribe") + } + + var r0 *pb.RpcObjectCrossSpaceSearchUnsubscribeResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectCrossSpaceSearchUnsubscribeRequest) *pb.RpcObjectCrossSpaceSearchUnsubscribeResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectCrossSpaceSearchUnsubscribeResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectCrossSpaceSearchUnsubscribe_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectCrossSpaceSearchUnsubscribe' +type MockClientCommandsServer_ObjectCrossSpaceSearchUnsubscribe_Call struct { + *mock.Call +} + +// ObjectCrossSpaceSearchUnsubscribe is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectCrossSpaceSearchUnsubscribeRequest +func (_e *MockClientCommandsServer_Expecter) ObjectCrossSpaceSearchUnsubscribe(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectCrossSpaceSearchUnsubscribe_Call { + return &MockClientCommandsServer_ObjectCrossSpaceSearchUnsubscribe_Call{Call: _e.mock.On("ObjectCrossSpaceSearchUnsubscribe", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectCrossSpaceSearchUnsubscribe_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectCrossSpaceSearchUnsubscribeRequest)) *MockClientCommandsServer_ObjectCrossSpaceSearchUnsubscribe_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectCrossSpaceSearchUnsubscribeRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectCrossSpaceSearchUnsubscribe_Call) Return(_a0 *pb.RpcObjectCrossSpaceSearchUnsubscribeResponse) *MockClientCommandsServer_ObjectCrossSpaceSearchUnsubscribe_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectCrossSpaceSearchUnsubscribe_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectCrossSpaceSearchUnsubscribeRequest) *pb.RpcObjectCrossSpaceSearchUnsubscribeResponse) *MockClientCommandsServer_ObjectCrossSpaceSearchUnsubscribe_Call { + _c.Call.Return(run) + return _c +} + +// ObjectDateByTimestamp provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectDateByTimestamp(_a0 context.Context, _a1 *pb.RpcObjectDateByTimestampRequest) *pb.RpcObjectDateByTimestampResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectDateByTimestamp") + } + + var r0 *pb.RpcObjectDateByTimestampResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectDateByTimestampRequest) *pb.RpcObjectDateByTimestampResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectDateByTimestampResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectDateByTimestamp_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectDateByTimestamp' +type MockClientCommandsServer_ObjectDateByTimestamp_Call struct { + *mock.Call +} + +// ObjectDateByTimestamp is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectDateByTimestampRequest +func (_e *MockClientCommandsServer_Expecter) ObjectDateByTimestamp(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectDateByTimestamp_Call { + return &MockClientCommandsServer_ObjectDateByTimestamp_Call{Call: _e.mock.On("ObjectDateByTimestamp", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectDateByTimestamp_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectDateByTimestampRequest)) *MockClientCommandsServer_ObjectDateByTimestamp_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectDateByTimestampRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectDateByTimestamp_Call) Return(_a0 *pb.RpcObjectDateByTimestampResponse) *MockClientCommandsServer_ObjectDateByTimestamp_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectDateByTimestamp_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectDateByTimestampRequest) *pb.RpcObjectDateByTimestampResponse) *MockClientCommandsServer_ObjectDateByTimestamp_Call { + _c.Call.Return(run) + return _c +} + +// ObjectDuplicate provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectDuplicate(_a0 context.Context, _a1 *pb.RpcObjectDuplicateRequest) *pb.RpcObjectDuplicateResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectDuplicate") + } + + var r0 *pb.RpcObjectDuplicateResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectDuplicateRequest) *pb.RpcObjectDuplicateResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectDuplicateResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectDuplicate_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectDuplicate' +type MockClientCommandsServer_ObjectDuplicate_Call struct { + *mock.Call +} + +// ObjectDuplicate is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectDuplicateRequest +func (_e *MockClientCommandsServer_Expecter) ObjectDuplicate(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectDuplicate_Call { + return &MockClientCommandsServer_ObjectDuplicate_Call{Call: _e.mock.On("ObjectDuplicate", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectDuplicate_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectDuplicateRequest)) *MockClientCommandsServer_ObjectDuplicate_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectDuplicateRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectDuplicate_Call) Return(_a0 *pb.RpcObjectDuplicateResponse) *MockClientCommandsServer_ObjectDuplicate_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectDuplicate_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectDuplicateRequest) *pb.RpcObjectDuplicateResponse) *MockClientCommandsServer_ObjectDuplicate_Call { + _c.Call.Return(run) + return _c +} + +// ObjectGraph provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectGraph(_a0 context.Context, _a1 *pb.RpcObjectGraphRequest) *pb.RpcObjectGraphResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectGraph") + } + + var r0 *pb.RpcObjectGraphResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectGraphRequest) *pb.RpcObjectGraphResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectGraphResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectGraph_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectGraph' +type MockClientCommandsServer_ObjectGraph_Call struct { + *mock.Call +} + +// ObjectGraph is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectGraphRequest +func (_e *MockClientCommandsServer_Expecter) ObjectGraph(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectGraph_Call { + return &MockClientCommandsServer_ObjectGraph_Call{Call: _e.mock.On("ObjectGraph", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectGraph_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectGraphRequest)) *MockClientCommandsServer_ObjectGraph_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectGraphRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectGraph_Call) Return(_a0 *pb.RpcObjectGraphResponse) *MockClientCommandsServer_ObjectGraph_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectGraph_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectGraphRequest) *pb.RpcObjectGraphResponse) *MockClientCommandsServer_ObjectGraph_Call { + _c.Call.Return(run) + return _c +} + +// ObjectGroupsSubscribe provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectGroupsSubscribe(_a0 context.Context, _a1 *pb.RpcObjectGroupsSubscribeRequest) *pb.RpcObjectGroupsSubscribeResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectGroupsSubscribe") + } + + var r0 *pb.RpcObjectGroupsSubscribeResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectGroupsSubscribeRequest) *pb.RpcObjectGroupsSubscribeResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectGroupsSubscribeResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectGroupsSubscribe_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectGroupsSubscribe' +type MockClientCommandsServer_ObjectGroupsSubscribe_Call struct { + *mock.Call +} + +// ObjectGroupsSubscribe is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectGroupsSubscribeRequest +func (_e *MockClientCommandsServer_Expecter) ObjectGroupsSubscribe(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectGroupsSubscribe_Call { + return &MockClientCommandsServer_ObjectGroupsSubscribe_Call{Call: _e.mock.On("ObjectGroupsSubscribe", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectGroupsSubscribe_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectGroupsSubscribeRequest)) *MockClientCommandsServer_ObjectGroupsSubscribe_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectGroupsSubscribeRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectGroupsSubscribe_Call) Return(_a0 *pb.RpcObjectGroupsSubscribeResponse) *MockClientCommandsServer_ObjectGroupsSubscribe_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectGroupsSubscribe_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectGroupsSubscribeRequest) *pb.RpcObjectGroupsSubscribeResponse) *MockClientCommandsServer_ObjectGroupsSubscribe_Call { + _c.Call.Return(run) + return _c +} + +// ObjectImport provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectImport(_a0 context.Context, _a1 *pb.RpcObjectImportRequest) *pb.RpcObjectImportResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectImport") + } + + var r0 *pb.RpcObjectImportResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectImportRequest) *pb.RpcObjectImportResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectImportResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectImport_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectImport' +type MockClientCommandsServer_ObjectImport_Call struct { + *mock.Call +} + +// ObjectImport is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectImportRequest +func (_e *MockClientCommandsServer_Expecter) ObjectImport(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectImport_Call { + return &MockClientCommandsServer_ObjectImport_Call{Call: _e.mock.On("ObjectImport", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectImport_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectImportRequest)) *MockClientCommandsServer_ObjectImport_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectImportRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectImport_Call) Return(_a0 *pb.RpcObjectImportResponse) *MockClientCommandsServer_ObjectImport_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectImport_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectImportRequest) *pb.RpcObjectImportResponse) *MockClientCommandsServer_ObjectImport_Call { + _c.Call.Return(run) + return _c +} + +// ObjectImportExperience provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectImportExperience(_a0 context.Context, _a1 *pb.RpcObjectImportExperienceRequest) *pb.RpcObjectImportExperienceResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectImportExperience") + } + + var r0 *pb.RpcObjectImportExperienceResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectImportExperienceRequest) *pb.RpcObjectImportExperienceResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectImportExperienceResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectImportExperience_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectImportExperience' +type MockClientCommandsServer_ObjectImportExperience_Call struct { + *mock.Call +} + +// ObjectImportExperience is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectImportExperienceRequest +func (_e *MockClientCommandsServer_Expecter) ObjectImportExperience(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectImportExperience_Call { + return &MockClientCommandsServer_ObjectImportExperience_Call{Call: _e.mock.On("ObjectImportExperience", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectImportExperience_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectImportExperienceRequest)) *MockClientCommandsServer_ObjectImportExperience_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectImportExperienceRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectImportExperience_Call) Return(_a0 *pb.RpcObjectImportExperienceResponse) *MockClientCommandsServer_ObjectImportExperience_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectImportExperience_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectImportExperienceRequest) *pb.RpcObjectImportExperienceResponse) *MockClientCommandsServer_ObjectImportExperience_Call { + _c.Call.Return(run) + return _c +} + +// ObjectImportList provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectImportList(_a0 context.Context, _a1 *pb.RpcObjectImportListRequest) *pb.RpcObjectImportListResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectImportList") + } + + var r0 *pb.RpcObjectImportListResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectImportListRequest) *pb.RpcObjectImportListResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectImportListResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectImportList_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectImportList' +type MockClientCommandsServer_ObjectImportList_Call struct { + *mock.Call +} + +// ObjectImportList is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectImportListRequest +func (_e *MockClientCommandsServer_Expecter) ObjectImportList(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectImportList_Call { + return &MockClientCommandsServer_ObjectImportList_Call{Call: _e.mock.On("ObjectImportList", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectImportList_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectImportListRequest)) *MockClientCommandsServer_ObjectImportList_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectImportListRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectImportList_Call) Return(_a0 *pb.RpcObjectImportListResponse) *MockClientCommandsServer_ObjectImportList_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectImportList_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectImportListRequest) *pb.RpcObjectImportListResponse) *MockClientCommandsServer_ObjectImportList_Call { + _c.Call.Return(run) + return _c +} + +// ObjectImportNotionValidateToken provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectImportNotionValidateToken(_a0 context.Context, _a1 *pb.RpcObjectImportNotionValidateTokenRequest) *pb.RpcObjectImportNotionValidateTokenResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectImportNotionValidateToken") + } + + var r0 *pb.RpcObjectImportNotionValidateTokenResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectImportNotionValidateTokenRequest) *pb.RpcObjectImportNotionValidateTokenResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectImportNotionValidateTokenResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectImportNotionValidateToken_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectImportNotionValidateToken' +type MockClientCommandsServer_ObjectImportNotionValidateToken_Call struct { + *mock.Call +} + +// ObjectImportNotionValidateToken is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectImportNotionValidateTokenRequest +func (_e *MockClientCommandsServer_Expecter) ObjectImportNotionValidateToken(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectImportNotionValidateToken_Call { + return &MockClientCommandsServer_ObjectImportNotionValidateToken_Call{Call: _e.mock.On("ObjectImportNotionValidateToken", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectImportNotionValidateToken_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectImportNotionValidateTokenRequest)) *MockClientCommandsServer_ObjectImportNotionValidateToken_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectImportNotionValidateTokenRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectImportNotionValidateToken_Call) Return(_a0 *pb.RpcObjectImportNotionValidateTokenResponse) *MockClientCommandsServer_ObjectImportNotionValidateToken_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectImportNotionValidateToken_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectImportNotionValidateTokenRequest) *pb.RpcObjectImportNotionValidateTokenResponse) *MockClientCommandsServer_ObjectImportNotionValidateToken_Call { + _c.Call.Return(run) + return _c +} + +// ObjectImportUseCase provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectImportUseCase(_a0 context.Context, _a1 *pb.RpcObjectImportUseCaseRequest) *pb.RpcObjectImportUseCaseResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectImportUseCase") + } + + var r0 *pb.RpcObjectImportUseCaseResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectImportUseCaseRequest) *pb.RpcObjectImportUseCaseResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectImportUseCaseResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectImportUseCase_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectImportUseCase' +type MockClientCommandsServer_ObjectImportUseCase_Call struct { + *mock.Call +} + +// ObjectImportUseCase is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectImportUseCaseRequest +func (_e *MockClientCommandsServer_Expecter) ObjectImportUseCase(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectImportUseCase_Call { + return &MockClientCommandsServer_ObjectImportUseCase_Call{Call: _e.mock.On("ObjectImportUseCase", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectImportUseCase_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectImportUseCaseRequest)) *MockClientCommandsServer_ObjectImportUseCase_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectImportUseCaseRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectImportUseCase_Call) Return(_a0 *pb.RpcObjectImportUseCaseResponse) *MockClientCommandsServer_ObjectImportUseCase_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectImportUseCase_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectImportUseCaseRequest) *pb.RpcObjectImportUseCaseResponse) *MockClientCommandsServer_ObjectImportUseCase_Call { + _c.Call.Return(run) + return _c +} + +// ObjectListDelete provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectListDelete(_a0 context.Context, _a1 *pb.RpcObjectListDeleteRequest) *pb.RpcObjectListDeleteResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectListDelete") + } + + var r0 *pb.RpcObjectListDeleteResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectListDeleteRequest) *pb.RpcObjectListDeleteResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectListDeleteResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectListDelete_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectListDelete' +type MockClientCommandsServer_ObjectListDelete_Call struct { + *mock.Call +} + +// ObjectListDelete is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectListDeleteRequest +func (_e *MockClientCommandsServer_Expecter) ObjectListDelete(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectListDelete_Call { + return &MockClientCommandsServer_ObjectListDelete_Call{Call: _e.mock.On("ObjectListDelete", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectListDelete_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectListDeleteRequest)) *MockClientCommandsServer_ObjectListDelete_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectListDeleteRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectListDelete_Call) Return(_a0 *pb.RpcObjectListDeleteResponse) *MockClientCommandsServer_ObjectListDelete_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectListDelete_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectListDeleteRequest) *pb.RpcObjectListDeleteResponse) *MockClientCommandsServer_ObjectListDelete_Call { + _c.Call.Return(run) + return _c +} + +// ObjectListDuplicate provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectListDuplicate(_a0 context.Context, _a1 *pb.RpcObjectListDuplicateRequest) *pb.RpcObjectListDuplicateResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectListDuplicate") + } + + var r0 *pb.RpcObjectListDuplicateResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectListDuplicateRequest) *pb.RpcObjectListDuplicateResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectListDuplicateResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectListDuplicate_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectListDuplicate' +type MockClientCommandsServer_ObjectListDuplicate_Call struct { + *mock.Call +} + +// ObjectListDuplicate is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectListDuplicateRequest +func (_e *MockClientCommandsServer_Expecter) ObjectListDuplicate(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectListDuplicate_Call { + return &MockClientCommandsServer_ObjectListDuplicate_Call{Call: _e.mock.On("ObjectListDuplicate", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectListDuplicate_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectListDuplicateRequest)) *MockClientCommandsServer_ObjectListDuplicate_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectListDuplicateRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectListDuplicate_Call) Return(_a0 *pb.RpcObjectListDuplicateResponse) *MockClientCommandsServer_ObjectListDuplicate_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectListDuplicate_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectListDuplicateRequest) *pb.RpcObjectListDuplicateResponse) *MockClientCommandsServer_ObjectListDuplicate_Call { + _c.Call.Return(run) + return _c +} + +// ObjectListExport provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectListExport(_a0 context.Context, _a1 *pb.RpcObjectListExportRequest) *pb.RpcObjectListExportResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectListExport") + } + + var r0 *pb.RpcObjectListExportResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectListExportRequest) *pb.RpcObjectListExportResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectListExportResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectListExport_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectListExport' +type MockClientCommandsServer_ObjectListExport_Call struct { + *mock.Call +} + +// ObjectListExport is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectListExportRequest +func (_e *MockClientCommandsServer_Expecter) ObjectListExport(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectListExport_Call { + return &MockClientCommandsServer_ObjectListExport_Call{Call: _e.mock.On("ObjectListExport", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectListExport_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectListExportRequest)) *MockClientCommandsServer_ObjectListExport_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectListExportRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectListExport_Call) Return(_a0 *pb.RpcObjectListExportResponse) *MockClientCommandsServer_ObjectListExport_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectListExport_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectListExportRequest) *pb.RpcObjectListExportResponse) *MockClientCommandsServer_ObjectListExport_Call { + _c.Call.Return(run) + return _c +} + +// ObjectListModifyDetailValues provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectListModifyDetailValues(_a0 context.Context, _a1 *pb.RpcObjectListModifyDetailValuesRequest) *pb.RpcObjectListModifyDetailValuesResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectListModifyDetailValues") + } + + var r0 *pb.RpcObjectListModifyDetailValuesResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectListModifyDetailValuesRequest) *pb.RpcObjectListModifyDetailValuesResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectListModifyDetailValuesResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectListModifyDetailValues_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectListModifyDetailValues' +type MockClientCommandsServer_ObjectListModifyDetailValues_Call struct { + *mock.Call +} + +// ObjectListModifyDetailValues is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectListModifyDetailValuesRequest +func (_e *MockClientCommandsServer_Expecter) ObjectListModifyDetailValues(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectListModifyDetailValues_Call { + return &MockClientCommandsServer_ObjectListModifyDetailValues_Call{Call: _e.mock.On("ObjectListModifyDetailValues", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectListModifyDetailValues_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectListModifyDetailValuesRequest)) *MockClientCommandsServer_ObjectListModifyDetailValues_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectListModifyDetailValuesRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectListModifyDetailValues_Call) Return(_a0 *pb.RpcObjectListModifyDetailValuesResponse) *MockClientCommandsServer_ObjectListModifyDetailValues_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectListModifyDetailValues_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectListModifyDetailValuesRequest) *pb.RpcObjectListModifyDetailValuesResponse) *MockClientCommandsServer_ObjectListModifyDetailValues_Call { + _c.Call.Return(run) + return _c +} + +// ObjectListSetDetails provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectListSetDetails(_a0 context.Context, _a1 *pb.RpcObjectListSetDetailsRequest) *pb.RpcObjectListSetDetailsResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectListSetDetails") + } + + var r0 *pb.RpcObjectListSetDetailsResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectListSetDetailsRequest) *pb.RpcObjectListSetDetailsResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectListSetDetailsResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectListSetDetails_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectListSetDetails' +type MockClientCommandsServer_ObjectListSetDetails_Call struct { + *mock.Call +} + +// ObjectListSetDetails is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectListSetDetailsRequest +func (_e *MockClientCommandsServer_Expecter) ObjectListSetDetails(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectListSetDetails_Call { + return &MockClientCommandsServer_ObjectListSetDetails_Call{Call: _e.mock.On("ObjectListSetDetails", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectListSetDetails_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectListSetDetailsRequest)) *MockClientCommandsServer_ObjectListSetDetails_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectListSetDetailsRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectListSetDetails_Call) Return(_a0 *pb.RpcObjectListSetDetailsResponse) *MockClientCommandsServer_ObjectListSetDetails_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectListSetDetails_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectListSetDetailsRequest) *pb.RpcObjectListSetDetailsResponse) *MockClientCommandsServer_ObjectListSetDetails_Call { + _c.Call.Return(run) + return _c +} + +// ObjectListSetIsArchived provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectListSetIsArchived(_a0 context.Context, _a1 *pb.RpcObjectListSetIsArchivedRequest) *pb.RpcObjectListSetIsArchivedResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectListSetIsArchived") + } + + var r0 *pb.RpcObjectListSetIsArchivedResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectListSetIsArchivedRequest) *pb.RpcObjectListSetIsArchivedResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectListSetIsArchivedResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectListSetIsArchived_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectListSetIsArchived' +type MockClientCommandsServer_ObjectListSetIsArchived_Call struct { + *mock.Call +} + +// ObjectListSetIsArchived is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectListSetIsArchivedRequest +func (_e *MockClientCommandsServer_Expecter) ObjectListSetIsArchived(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectListSetIsArchived_Call { + return &MockClientCommandsServer_ObjectListSetIsArchived_Call{Call: _e.mock.On("ObjectListSetIsArchived", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectListSetIsArchived_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectListSetIsArchivedRequest)) *MockClientCommandsServer_ObjectListSetIsArchived_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectListSetIsArchivedRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectListSetIsArchived_Call) Return(_a0 *pb.RpcObjectListSetIsArchivedResponse) *MockClientCommandsServer_ObjectListSetIsArchived_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectListSetIsArchived_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectListSetIsArchivedRequest) *pb.RpcObjectListSetIsArchivedResponse) *MockClientCommandsServer_ObjectListSetIsArchived_Call { + _c.Call.Return(run) + return _c +} + +// ObjectListSetIsFavorite provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectListSetIsFavorite(_a0 context.Context, _a1 *pb.RpcObjectListSetIsFavoriteRequest) *pb.RpcObjectListSetIsFavoriteResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectListSetIsFavorite") + } + + var r0 *pb.RpcObjectListSetIsFavoriteResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectListSetIsFavoriteRequest) *pb.RpcObjectListSetIsFavoriteResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectListSetIsFavoriteResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectListSetIsFavorite_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectListSetIsFavorite' +type MockClientCommandsServer_ObjectListSetIsFavorite_Call struct { + *mock.Call +} + +// ObjectListSetIsFavorite is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectListSetIsFavoriteRequest +func (_e *MockClientCommandsServer_Expecter) ObjectListSetIsFavorite(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectListSetIsFavorite_Call { + return &MockClientCommandsServer_ObjectListSetIsFavorite_Call{Call: _e.mock.On("ObjectListSetIsFavorite", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectListSetIsFavorite_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectListSetIsFavoriteRequest)) *MockClientCommandsServer_ObjectListSetIsFavorite_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectListSetIsFavoriteRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectListSetIsFavorite_Call) Return(_a0 *pb.RpcObjectListSetIsFavoriteResponse) *MockClientCommandsServer_ObjectListSetIsFavorite_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectListSetIsFavorite_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectListSetIsFavoriteRequest) *pb.RpcObjectListSetIsFavoriteResponse) *MockClientCommandsServer_ObjectListSetIsFavorite_Call { + _c.Call.Return(run) + return _c +} + +// ObjectListSetObjectType provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectListSetObjectType(_a0 context.Context, _a1 *pb.RpcObjectListSetObjectTypeRequest) *pb.RpcObjectListSetObjectTypeResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectListSetObjectType") + } + + var r0 *pb.RpcObjectListSetObjectTypeResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectListSetObjectTypeRequest) *pb.RpcObjectListSetObjectTypeResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectListSetObjectTypeResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectListSetObjectType_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectListSetObjectType' +type MockClientCommandsServer_ObjectListSetObjectType_Call struct { + *mock.Call +} + +// ObjectListSetObjectType is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectListSetObjectTypeRequest +func (_e *MockClientCommandsServer_Expecter) ObjectListSetObjectType(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectListSetObjectType_Call { + return &MockClientCommandsServer_ObjectListSetObjectType_Call{Call: _e.mock.On("ObjectListSetObjectType", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectListSetObjectType_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectListSetObjectTypeRequest)) *MockClientCommandsServer_ObjectListSetObjectType_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectListSetObjectTypeRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectListSetObjectType_Call) Return(_a0 *pb.RpcObjectListSetObjectTypeResponse) *MockClientCommandsServer_ObjectListSetObjectType_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectListSetObjectType_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectListSetObjectTypeRequest) *pb.RpcObjectListSetObjectTypeResponse) *MockClientCommandsServer_ObjectListSetObjectType_Call { + _c.Call.Return(run) + return _c +} + +// ObjectOpen provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectOpen(_a0 context.Context, _a1 *pb.RpcObjectOpenRequest) *pb.RpcObjectOpenResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectOpen") + } + + var r0 *pb.RpcObjectOpenResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectOpenRequest) *pb.RpcObjectOpenResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectOpenResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectOpen_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectOpen' +type MockClientCommandsServer_ObjectOpen_Call struct { + *mock.Call +} + +// ObjectOpen is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectOpenRequest +func (_e *MockClientCommandsServer_Expecter) ObjectOpen(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectOpen_Call { + return &MockClientCommandsServer_ObjectOpen_Call{Call: _e.mock.On("ObjectOpen", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectOpen_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectOpenRequest)) *MockClientCommandsServer_ObjectOpen_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectOpenRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectOpen_Call) Return(_a0 *pb.RpcObjectOpenResponse) *MockClientCommandsServer_ObjectOpen_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectOpen_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectOpenRequest) *pb.RpcObjectOpenResponse) *MockClientCommandsServer_ObjectOpen_Call { + _c.Call.Return(run) + return _c +} + +// ObjectRedo provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectRedo(_a0 context.Context, _a1 *pb.RpcObjectRedoRequest) *pb.RpcObjectRedoResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectRedo") + } + + var r0 *pb.RpcObjectRedoResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectRedoRequest) *pb.RpcObjectRedoResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectRedoResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectRedo_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectRedo' +type MockClientCommandsServer_ObjectRedo_Call struct { + *mock.Call +} + +// ObjectRedo is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectRedoRequest +func (_e *MockClientCommandsServer_Expecter) ObjectRedo(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectRedo_Call { + return &MockClientCommandsServer_ObjectRedo_Call{Call: _e.mock.On("ObjectRedo", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectRedo_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectRedoRequest)) *MockClientCommandsServer_ObjectRedo_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectRedoRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectRedo_Call) Return(_a0 *pb.RpcObjectRedoResponse) *MockClientCommandsServer_ObjectRedo_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectRedo_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectRedoRequest) *pb.RpcObjectRedoResponse) *MockClientCommandsServer_ObjectRedo_Call { + _c.Call.Return(run) + return _c +} + +// ObjectRelationAdd provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectRelationAdd(_a0 context.Context, _a1 *pb.RpcObjectRelationAddRequest) *pb.RpcObjectRelationAddResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectRelationAdd") + } + + var r0 *pb.RpcObjectRelationAddResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectRelationAddRequest) *pb.RpcObjectRelationAddResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectRelationAddResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectRelationAdd_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectRelationAdd' +type MockClientCommandsServer_ObjectRelationAdd_Call struct { + *mock.Call +} + +// ObjectRelationAdd is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectRelationAddRequest +func (_e *MockClientCommandsServer_Expecter) ObjectRelationAdd(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectRelationAdd_Call { + return &MockClientCommandsServer_ObjectRelationAdd_Call{Call: _e.mock.On("ObjectRelationAdd", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectRelationAdd_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectRelationAddRequest)) *MockClientCommandsServer_ObjectRelationAdd_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectRelationAddRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectRelationAdd_Call) Return(_a0 *pb.RpcObjectRelationAddResponse) *MockClientCommandsServer_ObjectRelationAdd_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectRelationAdd_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectRelationAddRequest) *pb.RpcObjectRelationAddResponse) *MockClientCommandsServer_ObjectRelationAdd_Call { + _c.Call.Return(run) + return _c +} + +// ObjectRelationAddFeatured provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectRelationAddFeatured(_a0 context.Context, _a1 *pb.RpcObjectRelationAddFeaturedRequest) *pb.RpcObjectRelationAddFeaturedResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectRelationAddFeatured") + } + + var r0 *pb.RpcObjectRelationAddFeaturedResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectRelationAddFeaturedRequest) *pb.RpcObjectRelationAddFeaturedResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectRelationAddFeaturedResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectRelationAddFeatured_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectRelationAddFeatured' +type MockClientCommandsServer_ObjectRelationAddFeatured_Call struct { + *mock.Call +} + +// ObjectRelationAddFeatured is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectRelationAddFeaturedRequest +func (_e *MockClientCommandsServer_Expecter) ObjectRelationAddFeatured(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectRelationAddFeatured_Call { + return &MockClientCommandsServer_ObjectRelationAddFeatured_Call{Call: _e.mock.On("ObjectRelationAddFeatured", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectRelationAddFeatured_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectRelationAddFeaturedRequest)) *MockClientCommandsServer_ObjectRelationAddFeatured_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectRelationAddFeaturedRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectRelationAddFeatured_Call) Return(_a0 *pb.RpcObjectRelationAddFeaturedResponse) *MockClientCommandsServer_ObjectRelationAddFeatured_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectRelationAddFeatured_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectRelationAddFeaturedRequest) *pb.RpcObjectRelationAddFeaturedResponse) *MockClientCommandsServer_ObjectRelationAddFeatured_Call { + _c.Call.Return(run) + return _c +} + +// ObjectRelationDelete provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectRelationDelete(_a0 context.Context, _a1 *pb.RpcObjectRelationDeleteRequest) *pb.RpcObjectRelationDeleteResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectRelationDelete") + } + + var r0 *pb.RpcObjectRelationDeleteResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectRelationDeleteRequest) *pb.RpcObjectRelationDeleteResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectRelationDeleteResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectRelationDelete_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectRelationDelete' +type MockClientCommandsServer_ObjectRelationDelete_Call struct { + *mock.Call +} + +// ObjectRelationDelete is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectRelationDeleteRequest +func (_e *MockClientCommandsServer_Expecter) ObjectRelationDelete(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectRelationDelete_Call { + return &MockClientCommandsServer_ObjectRelationDelete_Call{Call: _e.mock.On("ObjectRelationDelete", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectRelationDelete_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectRelationDeleteRequest)) *MockClientCommandsServer_ObjectRelationDelete_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectRelationDeleteRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectRelationDelete_Call) Return(_a0 *pb.RpcObjectRelationDeleteResponse) *MockClientCommandsServer_ObjectRelationDelete_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectRelationDelete_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectRelationDeleteRequest) *pb.RpcObjectRelationDeleteResponse) *MockClientCommandsServer_ObjectRelationDelete_Call { + _c.Call.Return(run) + return _c +} + +// ObjectRelationListAvailable provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectRelationListAvailable(_a0 context.Context, _a1 *pb.RpcObjectRelationListAvailableRequest) *pb.RpcObjectRelationListAvailableResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectRelationListAvailable") + } + + var r0 *pb.RpcObjectRelationListAvailableResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectRelationListAvailableRequest) *pb.RpcObjectRelationListAvailableResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectRelationListAvailableResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectRelationListAvailable_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectRelationListAvailable' +type MockClientCommandsServer_ObjectRelationListAvailable_Call struct { + *mock.Call +} + +// ObjectRelationListAvailable is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectRelationListAvailableRequest +func (_e *MockClientCommandsServer_Expecter) ObjectRelationListAvailable(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectRelationListAvailable_Call { + return &MockClientCommandsServer_ObjectRelationListAvailable_Call{Call: _e.mock.On("ObjectRelationListAvailable", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectRelationListAvailable_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectRelationListAvailableRequest)) *MockClientCommandsServer_ObjectRelationListAvailable_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectRelationListAvailableRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectRelationListAvailable_Call) Return(_a0 *pb.RpcObjectRelationListAvailableResponse) *MockClientCommandsServer_ObjectRelationListAvailable_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectRelationListAvailable_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectRelationListAvailableRequest) *pb.RpcObjectRelationListAvailableResponse) *MockClientCommandsServer_ObjectRelationListAvailable_Call { + _c.Call.Return(run) + return _c +} + +// ObjectRelationRemoveFeatured provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectRelationRemoveFeatured(_a0 context.Context, _a1 *pb.RpcObjectRelationRemoveFeaturedRequest) *pb.RpcObjectRelationRemoveFeaturedResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectRelationRemoveFeatured") + } + + var r0 *pb.RpcObjectRelationRemoveFeaturedResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectRelationRemoveFeaturedRequest) *pb.RpcObjectRelationRemoveFeaturedResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectRelationRemoveFeaturedResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectRelationRemoveFeatured_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectRelationRemoveFeatured' +type MockClientCommandsServer_ObjectRelationRemoveFeatured_Call struct { + *mock.Call +} + +// ObjectRelationRemoveFeatured is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectRelationRemoveFeaturedRequest +func (_e *MockClientCommandsServer_Expecter) ObjectRelationRemoveFeatured(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectRelationRemoveFeatured_Call { + return &MockClientCommandsServer_ObjectRelationRemoveFeatured_Call{Call: _e.mock.On("ObjectRelationRemoveFeatured", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectRelationRemoveFeatured_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectRelationRemoveFeaturedRequest)) *MockClientCommandsServer_ObjectRelationRemoveFeatured_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectRelationRemoveFeaturedRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectRelationRemoveFeatured_Call) Return(_a0 *pb.RpcObjectRelationRemoveFeaturedResponse) *MockClientCommandsServer_ObjectRelationRemoveFeatured_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectRelationRemoveFeatured_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectRelationRemoveFeaturedRequest) *pb.RpcObjectRelationRemoveFeaturedResponse) *MockClientCommandsServer_ObjectRelationRemoveFeatured_Call { + _c.Call.Return(run) + return _c +} + +// ObjectSearch provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectSearch(_a0 context.Context, _a1 *pb.RpcObjectSearchRequest) *pb.RpcObjectSearchResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectSearch") + } + + var r0 *pb.RpcObjectSearchResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectSearchRequest) *pb.RpcObjectSearchResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectSearchResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectSearch_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectSearch' +type MockClientCommandsServer_ObjectSearch_Call struct { + *mock.Call +} + +// ObjectSearch is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectSearchRequest +func (_e *MockClientCommandsServer_Expecter) ObjectSearch(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectSearch_Call { + return &MockClientCommandsServer_ObjectSearch_Call{Call: _e.mock.On("ObjectSearch", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectSearch_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectSearchRequest)) *MockClientCommandsServer_ObjectSearch_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectSearchRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectSearch_Call) Return(_a0 *pb.RpcObjectSearchResponse) *MockClientCommandsServer_ObjectSearch_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectSearch_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectSearchRequest) *pb.RpcObjectSearchResponse) *MockClientCommandsServer_ObjectSearch_Call { + _c.Call.Return(run) + return _c +} + +// ObjectSearchSubscribe provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectSearchSubscribe(_a0 context.Context, _a1 *pb.RpcObjectSearchSubscribeRequest) *pb.RpcObjectSearchSubscribeResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectSearchSubscribe") + } + + var r0 *pb.RpcObjectSearchSubscribeResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectSearchSubscribeRequest) *pb.RpcObjectSearchSubscribeResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectSearchSubscribeResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectSearchSubscribe_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectSearchSubscribe' +type MockClientCommandsServer_ObjectSearchSubscribe_Call struct { + *mock.Call +} + +// ObjectSearchSubscribe is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectSearchSubscribeRequest +func (_e *MockClientCommandsServer_Expecter) ObjectSearchSubscribe(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectSearchSubscribe_Call { + return &MockClientCommandsServer_ObjectSearchSubscribe_Call{Call: _e.mock.On("ObjectSearchSubscribe", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectSearchSubscribe_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectSearchSubscribeRequest)) *MockClientCommandsServer_ObjectSearchSubscribe_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectSearchSubscribeRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectSearchSubscribe_Call) Return(_a0 *pb.RpcObjectSearchSubscribeResponse) *MockClientCommandsServer_ObjectSearchSubscribe_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectSearchSubscribe_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectSearchSubscribeRequest) *pb.RpcObjectSearchSubscribeResponse) *MockClientCommandsServer_ObjectSearchSubscribe_Call { + _c.Call.Return(run) + return _c +} + +// ObjectSearchUnsubscribe provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectSearchUnsubscribe(_a0 context.Context, _a1 *pb.RpcObjectSearchUnsubscribeRequest) *pb.RpcObjectSearchUnsubscribeResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectSearchUnsubscribe") + } + + var r0 *pb.RpcObjectSearchUnsubscribeResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectSearchUnsubscribeRequest) *pb.RpcObjectSearchUnsubscribeResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectSearchUnsubscribeResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectSearchUnsubscribe_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectSearchUnsubscribe' +type MockClientCommandsServer_ObjectSearchUnsubscribe_Call struct { + *mock.Call +} + +// ObjectSearchUnsubscribe is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectSearchUnsubscribeRequest +func (_e *MockClientCommandsServer_Expecter) ObjectSearchUnsubscribe(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectSearchUnsubscribe_Call { + return &MockClientCommandsServer_ObjectSearchUnsubscribe_Call{Call: _e.mock.On("ObjectSearchUnsubscribe", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectSearchUnsubscribe_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectSearchUnsubscribeRequest)) *MockClientCommandsServer_ObjectSearchUnsubscribe_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectSearchUnsubscribeRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectSearchUnsubscribe_Call) Return(_a0 *pb.RpcObjectSearchUnsubscribeResponse) *MockClientCommandsServer_ObjectSearchUnsubscribe_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectSearchUnsubscribe_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectSearchUnsubscribeRequest) *pb.RpcObjectSearchUnsubscribeResponse) *MockClientCommandsServer_ObjectSearchUnsubscribe_Call { + _c.Call.Return(run) + return _c +} + +// ObjectSearchWithMeta provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectSearchWithMeta(_a0 context.Context, _a1 *pb.RpcObjectSearchWithMetaRequest) *pb.RpcObjectSearchWithMetaResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectSearchWithMeta") + } + + var r0 *pb.RpcObjectSearchWithMetaResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectSearchWithMetaRequest) *pb.RpcObjectSearchWithMetaResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectSearchWithMetaResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectSearchWithMeta_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectSearchWithMeta' +type MockClientCommandsServer_ObjectSearchWithMeta_Call struct { + *mock.Call +} + +// ObjectSearchWithMeta is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectSearchWithMetaRequest +func (_e *MockClientCommandsServer_Expecter) ObjectSearchWithMeta(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectSearchWithMeta_Call { + return &MockClientCommandsServer_ObjectSearchWithMeta_Call{Call: _e.mock.On("ObjectSearchWithMeta", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectSearchWithMeta_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectSearchWithMetaRequest)) *MockClientCommandsServer_ObjectSearchWithMeta_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectSearchWithMetaRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectSearchWithMeta_Call) Return(_a0 *pb.RpcObjectSearchWithMetaResponse) *MockClientCommandsServer_ObjectSearchWithMeta_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectSearchWithMeta_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectSearchWithMetaRequest) *pb.RpcObjectSearchWithMetaResponse) *MockClientCommandsServer_ObjectSearchWithMeta_Call { + _c.Call.Return(run) + return _c +} + +// ObjectSetDetails provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectSetDetails(_a0 context.Context, _a1 *pb.RpcObjectSetDetailsRequest) *pb.RpcObjectSetDetailsResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectSetDetails") + } + + var r0 *pb.RpcObjectSetDetailsResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectSetDetailsRequest) *pb.RpcObjectSetDetailsResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectSetDetailsResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectSetDetails_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectSetDetails' +type MockClientCommandsServer_ObjectSetDetails_Call struct { + *mock.Call +} + +// ObjectSetDetails is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectSetDetailsRequest +func (_e *MockClientCommandsServer_Expecter) ObjectSetDetails(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectSetDetails_Call { + return &MockClientCommandsServer_ObjectSetDetails_Call{Call: _e.mock.On("ObjectSetDetails", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectSetDetails_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectSetDetailsRequest)) *MockClientCommandsServer_ObjectSetDetails_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectSetDetailsRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectSetDetails_Call) Return(_a0 *pb.RpcObjectSetDetailsResponse) *MockClientCommandsServer_ObjectSetDetails_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectSetDetails_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectSetDetailsRequest) *pb.RpcObjectSetDetailsResponse) *MockClientCommandsServer_ObjectSetDetails_Call { + _c.Call.Return(run) + return _c +} + +// ObjectSetInternalFlags provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectSetInternalFlags(_a0 context.Context, _a1 *pb.RpcObjectSetInternalFlagsRequest) *pb.RpcObjectSetInternalFlagsResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectSetInternalFlags") + } + + var r0 *pb.RpcObjectSetInternalFlagsResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectSetInternalFlagsRequest) *pb.RpcObjectSetInternalFlagsResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectSetInternalFlagsResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectSetInternalFlags_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectSetInternalFlags' +type MockClientCommandsServer_ObjectSetInternalFlags_Call struct { + *mock.Call +} + +// ObjectSetInternalFlags is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectSetInternalFlagsRequest +func (_e *MockClientCommandsServer_Expecter) ObjectSetInternalFlags(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectSetInternalFlags_Call { + return &MockClientCommandsServer_ObjectSetInternalFlags_Call{Call: _e.mock.On("ObjectSetInternalFlags", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectSetInternalFlags_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectSetInternalFlagsRequest)) *MockClientCommandsServer_ObjectSetInternalFlags_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectSetInternalFlagsRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectSetInternalFlags_Call) Return(_a0 *pb.RpcObjectSetInternalFlagsResponse) *MockClientCommandsServer_ObjectSetInternalFlags_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectSetInternalFlags_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectSetInternalFlagsRequest) *pb.RpcObjectSetInternalFlagsResponse) *MockClientCommandsServer_ObjectSetInternalFlags_Call { + _c.Call.Return(run) + return _c +} + +// ObjectSetIsArchived provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectSetIsArchived(_a0 context.Context, _a1 *pb.RpcObjectSetIsArchivedRequest) *pb.RpcObjectSetIsArchivedResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectSetIsArchived") + } + + var r0 *pb.RpcObjectSetIsArchivedResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectSetIsArchivedRequest) *pb.RpcObjectSetIsArchivedResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectSetIsArchivedResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectSetIsArchived_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectSetIsArchived' +type MockClientCommandsServer_ObjectSetIsArchived_Call struct { + *mock.Call +} + +// ObjectSetIsArchived is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectSetIsArchivedRequest +func (_e *MockClientCommandsServer_Expecter) ObjectSetIsArchived(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectSetIsArchived_Call { + return &MockClientCommandsServer_ObjectSetIsArchived_Call{Call: _e.mock.On("ObjectSetIsArchived", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectSetIsArchived_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectSetIsArchivedRequest)) *MockClientCommandsServer_ObjectSetIsArchived_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectSetIsArchivedRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectSetIsArchived_Call) Return(_a0 *pb.RpcObjectSetIsArchivedResponse) *MockClientCommandsServer_ObjectSetIsArchived_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectSetIsArchived_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectSetIsArchivedRequest) *pb.RpcObjectSetIsArchivedResponse) *MockClientCommandsServer_ObjectSetIsArchived_Call { + _c.Call.Return(run) + return _c +} + +// ObjectSetIsFavorite provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectSetIsFavorite(_a0 context.Context, _a1 *pb.RpcObjectSetIsFavoriteRequest) *pb.RpcObjectSetIsFavoriteResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectSetIsFavorite") + } + + var r0 *pb.RpcObjectSetIsFavoriteResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectSetIsFavoriteRequest) *pb.RpcObjectSetIsFavoriteResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectSetIsFavoriteResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectSetIsFavorite_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectSetIsFavorite' +type MockClientCommandsServer_ObjectSetIsFavorite_Call struct { + *mock.Call +} + +// ObjectSetIsFavorite is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectSetIsFavoriteRequest +func (_e *MockClientCommandsServer_Expecter) ObjectSetIsFavorite(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectSetIsFavorite_Call { + return &MockClientCommandsServer_ObjectSetIsFavorite_Call{Call: _e.mock.On("ObjectSetIsFavorite", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectSetIsFavorite_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectSetIsFavoriteRequest)) *MockClientCommandsServer_ObjectSetIsFavorite_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectSetIsFavoriteRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectSetIsFavorite_Call) Return(_a0 *pb.RpcObjectSetIsFavoriteResponse) *MockClientCommandsServer_ObjectSetIsFavorite_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectSetIsFavorite_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectSetIsFavoriteRequest) *pb.RpcObjectSetIsFavoriteResponse) *MockClientCommandsServer_ObjectSetIsFavorite_Call { + _c.Call.Return(run) + return _c +} + +// ObjectSetLayout provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectSetLayout(_a0 context.Context, _a1 *pb.RpcObjectSetLayoutRequest) *pb.RpcObjectSetLayoutResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectSetLayout") + } + + var r0 *pb.RpcObjectSetLayoutResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectSetLayoutRequest) *pb.RpcObjectSetLayoutResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectSetLayoutResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectSetLayout_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectSetLayout' +type MockClientCommandsServer_ObjectSetLayout_Call struct { + *mock.Call +} + +// ObjectSetLayout is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectSetLayoutRequest +func (_e *MockClientCommandsServer_Expecter) ObjectSetLayout(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectSetLayout_Call { + return &MockClientCommandsServer_ObjectSetLayout_Call{Call: _e.mock.On("ObjectSetLayout", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectSetLayout_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectSetLayoutRequest)) *MockClientCommandsServer_ObjectSetLayout_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectSetLayoutRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectSetLayout_Call) Return(_a0 *pb.RpcObjectSetLayoutResponse) *MockClientCommandsServer_ObjectSetLayout_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectSetLayout_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectSetLayoutRequest) *pb.RpcObjectSetLayoutResponse) *MockClientCommandsServer_ObjectSetLayout_Call { + _c.Call.Return(run) + return _c +} + +// ObjectSetObjectType provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectSetObjectType(_a0 context.Context, _a1 *pb.RpcObjectSetObjectTypeRequest) *pb.RpcObjectSetObjectTypeResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectSetObjectType") + } + + var r0 *pb.RpcObjectSetObjectTypeResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectSetObjectTypeRequest) *pb.RpcObjectSetObjectTypeResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectSetObjectTypeResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectSetObjectType_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectSetObjectType' +type MockClientCommandsServer_ObjectSetObjectType_Call struct { + *mock.Call +} + +// ObjectSetObjectType is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectSetObjectTypeRequest +func (_e *MockClientCommandsServer_Expecter) ObjectSetObjectType(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectSetObjectType_Call { + return &MockClientCommandsServer_ObjectSetObjectType_Call{Call: _e.mock.On("ObjectSetObjectType", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectSetObjectType_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectSetObjectTypeRequest)) *MockClientCommandsServer_ObjectSetObjectType_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectSetObjectTypeRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectSetObjectType_Call) Return(_a0 *pb.RpcObjectSetObjectTypeResponse) *MockClientCommandsServer_ObjectSetObjectType_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectSetObjectType_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectSetObjectTypeRequest) *pb.RpcObjectSetObjectTypeResponse) *MockClientCommandsServer_ObjectSetObjectType_Call { + _c.Call.Return(run) + return _c +} + +// ObjectSetSource provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectSetSource(_a0 context.Context, _a1 *pb.RpcObjectSetSourceRequest) *pb.RpcObjectSetSourceResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectSetSource") + } + + var r0 *pb.RpcObjectSetSourceResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectSetSourceRequest) *pb.RpcObjectSetSourceResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectSetSourceResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectSetSource_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectSetSource' +type MockClientCommandsServer_ObjectSetSource_Call struct { + *mock.Call +} + +// ObjectSetSource is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectSetSourceRequest +func (_e *MockClientCommandsServer_Expecter) ObjectSetSource(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectSetSource_Call { + return &MockClientCommandsServer_ObjectSetSource_Call{Call: _e.mock.On("ObjectSetSource", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectSetSource_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectSetSourceRequest)) *MockClientCommandsServer_ObjectSetSource_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectSetSourceRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectSetSource_Call) Return(_a0 *pb.RpcObjectSetSourceResponse) *MockClientCommandsServer_ObjectSetSource_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectSetSource_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectSetSourceRequest) *pb.RpcObjectSetSourceResponse) *MockClientCommandsServer_ObjectSetSource_Call { + _c.Call.Return(run) + return _c +} + +// ObjectShareByLink provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectShareByLink(_a0 context.Context, _a1 *pb.RpcObjectShareByLinkRequest) *pb.RpcObjectShareByLinkResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectShareByLink") + } + + var r0 *pb.RpcObjectShareByLinkResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectShareByLinkRequest) *pb.RpcObjectShareByLinkResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectShareByLinkResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectShareByLink_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectShareByLink' +type MockClientCommandsServer_ObjectShareByLink_Call struct { + *mock.Call +} + +// ObjectShareByLink is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectShareByLinkRequest +func (_e *MockClientCommandsServer_Expecter) ObjectShareByLink(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectShareByLink_Call { + return &MockClientCommandsServer_ObjectShareByLink_Call{Call: _e.mock.On("ObjectShareByLink", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectShareByLink_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectShareByLinkRequest)) *MockClientCommandsServer_ObjectShareByLink_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectShareByLinkRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectShareByLink_Call) Return(_a0 *pb.RpcObjectShareByLinkResponse) *MockClientCommandsServer_ObjectShareByLink_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectShareByLink_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectShareByLinkRequest) *pb.RpcObjectShareByLinkResponse) *MockClientCommandsServer_ObjectShareByLink_Call { + _c.Call.Return(run) + return _c +} + +// ObjectShow provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectShow(_a0 context.Context, _a1 *pb.RpcObjectShowRequest) *pb.RpcObjectShowResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectShow") + } + + var r0 *pb.RpcObjectShowResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectShowRequest) *pb.RpcObjectShowResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectShowResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectShow_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectShow' +type MockClientCommandsServer_ObjectShow_Call struct { + *mock.Call +} + +// ObjectShow is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectShowRequest +func (_e *MockClientCommandsServer_Expecter) ObjectShow(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectShow_Call { + return &MockClientCommandsServer_ObjectShow_Call{Call: _e.mock.On("ObjectShow", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectShow_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectShowRequest)) *MockClientCommandsServer_ObjectShow_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectShowRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectShow_Call) Return(_a0 *pb.RpcObjectShowResponse) *MockClientCommandsServer_ObjectShow_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectShow_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectShowRequest) *pb.RpcObjectShowResponse) *MockClientCommandsServer_ObjectShow_Call { + _c.Call.Return(run) + return _c +} + +// ObjectSubscribeIds provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectSubscribeIds(_a0 context.Context, _a1 *pb.RpcObjectSubscribeIdsRequest) *pb.RpcObjectSubscribeIdsResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectSubscribeIds") + } + + var r0 *pb.RpcObjectSubscribeIdsResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectSubscribeIdsRequest) *pb.RpcObjectSubscribeIdsResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectSubscribeIdsResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectSubscribeIds_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectSubscribeIds' +type MockClientCommandsServer_ObjectSubscribeIds_Call struct { + *mock.Call +} + +// ObjectSubscribeIds is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectSubscribeIdsRequest +func (_e *MockClientCommandsServer_Expecter) ObjectSubscribeIds(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectSubscribeIds_Call { + return &MockClientCommandsServer_ObjectSubscribeIds_Call{Call: _e.mock.On("ObjectSubscribeIds", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectSubscribeIds_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectSubscribeIdsRequest)) *MockClientCommandsServer_ObjectSubscribeIds_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectSubscribeIdsRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectSubscribeIds_Call) Return(_a0 *pb.RpcObjectSubscribeIdsResponse) *MockClientCommandsServer_ObjectSubscribeIds_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectSubscribeIds_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectSubscribeIdsRequest) *pb.RpcObjectSubscribeIdsResponse) *MockClientCommandsServer_ObjectSubscribeIds_Call { + _c.Call.Return(run) + return _c +} + +// ObjectToBookmark provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectToBookmark(_a0 context.Context, _a1 *pb.RpcObjectToBookmarkRequest) *pb.RpcObjectToBookmarkResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectToBookmark") + } + + var r0 *pb.RpcObjectToBookmarkResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectToBookmarkRequest) *pb.RpcObjectToBookmarkResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectToBookmarkResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectToBookmark_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectToBookmark' +type MockClientCommandsServer_ObjectToBookmark_Call struct { + *mock.Call +} + +// ObjectToBookmark is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectToBookmarkRequest +func (_e *MockClientCommandsServer_Expecter) ObjectToBookmark(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectToBookmark_Call { + return &MockClientCommandsServer_ObjectToBookmark_Call{Call: _e.mock.On("ObjectToBookmark", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectToBookmark_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectToBookmarkRequest)) *MockClientCommandsServer_ObjectToBookmark_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectToBookmarkRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectToBookmark_Call) Return(_a0 *pb.RpcObjectToBookmarkResponse) *MockClientCommandsServer_ObjectToBookmark_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectToBookmark_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectToBookmarkRequest) *pb.RpcObjectToBookmarkResponse) *MockClientCommandsServer_ObjectToBookmark_Call { + _c.Call.Return(run) + return _c +} + +// ObjectToCollection provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectToCollection(_a0 context.Context, _a1 *pb.RpcObjectToCollectionRequest) *pb.RpcObjectToCollectionResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectToCollection") + } + + var r0 *pb.RpcObjectToCollectionResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectToCollectionRequest) *pb.RpcObjectToCollectionResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectToCollectionResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectToCollection_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectToCollection' +type MockClientCommandsServer_ObjectToCollection_Call struct { + *mock.Call +} + +// ObjectToCollection is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectToCollectionRequest +func (_e *MockClientCommandsServer_Expecter) ObjectToCollection(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectToCollection_Call { + return &MockClientCommandsServer_ObjectToCollection_Call{Call: _e.mock.On("ObjectToCollection", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectToCollection_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectToCollectionRequest)) *MockClientCommandsServer_ObjectToCollection_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectToCollectionRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectToCollection_Call) Return(_a0 *pb.RpcObjectToCollectionResponse) *MockClientCommandsServer_ObjectToCollection_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectToCollection_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectToCollectionRequest) *pb.RpcObjectToCollectionResponse) *MockClientCommandsServer_ObjectToCollection_Call { + _c.Call.Return(run) + return _c +} + +// ObjectToSet provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectToSet(_a0 context.Context, _a1 *pb.RpcObjectToSetRequest) *pb.RpcObjectToSetResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectToSet") + } + + var r0 *pb.RpcObjectToSetResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectToSetRequest) *pb.RpcObjectToSetResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectToSetResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectToSet_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectToSet' +type MockClientCommandsServer_ObjectToSet_Call struct { + *mock.Call +} + +// ObjectToSet is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectToSetRequest +func (_e *MockClientCommandsServer_Expecter) ObjectToSet(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectToSet_Call { + return &MockClientCommandsServer_ObjectToSet_Call{Call: _e.mock.On("ObjectToSet", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectToSet_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectToSetRequest)) *MockClientCommandsServer_ObjectToSet_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectToSetRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectToSet_Call) Return(_a0 *pb.RpcObjectToSetResponse) *MockClientCommandsServer_ObjectToSet_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectToSet_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectToSetRequest) *pb.RpcObjectToSetResponse) *MockClientCommandsServer_ObjectToSet_Call { + _c.Call.Return(run) + return _c +} + +// ObjectTypeRelationAdd provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectTypeRelationAdd(_a0 context.Context, _a1 *pb.RpcObjectTypeRelationAddRequest) *pb.RpcObjectTypeRelationAddResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectTypeRelationAdd") + } + + var r0 *pb.RpcObjectTypeRelationAddResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectTypeRelationAddRequest) *pb.RpcObjectTypeRelationAddResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectTypeRelationAddResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectTypeRelationAdd_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectTypeRelationAdd' +type MockClientCommandsServer_ObjectTypeRelationAdd_Call struct { + *mock.Call +} + +// ObjectTypeRelationAdd is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectTypeRelationAddRequest +func (_e *MockClientCommandsServer_Expecter) ObjectTypeRelationAdd(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectTypeRelationAdd_Call { + return &MockClientCommandsServer_ObjectTypeRelationAdd_Call{Call: _e.mock.On("ObjectTypeRelationAdd", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectTypeRelationAdd_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectTypeRelationAddRequest)) *MockClientCommandsServer_ObjectTypeRelationAdd_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectTypeRelationAddRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectTypeRelationAdd_Call) Return(_a0 *pb.RpcObjectTypeRelationAddResponse) *MockClientCommandsServer_ObjectTypeRelationAdd_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectTypeRelationAdd_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectTypeRelationAddRequest) *pb.RpcObjectTypeRelationAddResponse) *MockClientCommandsServer_ObjectTypeRelationAdd_Call { + _c.Call.Return(run) + return _c +} + +// ObjectTypeRelationRemove provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectTypeRelationRemove(_a0 context.Context, _a1 *pb.RpcObjectTypeRelationRemoveRequest) *pb.RpcObjectTypeRelationRemoveResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectTypeRelationRemove") + } + + var r0 *pb.RpcObjectTypeRelationRemoveResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectTypeRelationRemoveRequest) *pb.RpcObjectTypeRelationRemoveResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectTypeRelationRemoveResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectTypeRelationRemove_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectTypeRelationRemove' +type MockClientCommandsServer_ObjectTypeRelationRemove_Call struct { + *mock.Call +} + +// ObjectTypeRelationRemove is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectTypeRelationRemoveRequest +func (_e *MockClientCommandsServer_Expecter) ObjectTypeRelationRemove(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectTypeRelationRemove_Call { + return &MockClientCommandsServer_ObjectTypeRelationRemove_Call{Call: _e.mock.On("ObjectTypeRelationRemove", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectTypeRelationRemove_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectTypeRelationRemoveRequest)) *MockClientCommandsServer_ObjectTypeRelationRemove_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectTypeRelationRemoveRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectTypeRelationRemove_Call) Return(_a0 *pb.RpcObjectTypeRelationRemoveResponse) *MockClientCommandsServer_ObjectTypeRelationRemove_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectTypeRelationRemove_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectTypeRelationRemoveRequest) *pb.RpcObjectTypeRelationRemoveResponse) *MockClientCommandsServer_ObjectTypeRelationRemove_Call { + _c.Call.Return(run) + return _c +} + +// ObjectUndo provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectUndo(_a0 context.Context, _a1 *pb.RpcObjectUndoRequest) *pb.RpcObjectUndoResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectUndo") + } + + var r0 *pb.RpcObjectUndoResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectUndoRequest) *pb.RpcObjectUndoResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectUndoResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectUndo_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectUndo' +type MockClientCommandsServer_ObjectUndo_Call struct { + *mock.Call +} + +// ObjectUndo is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectUndoRequest +func (_e *MockClientCommandsServer_Expecter) ObjectUndo(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectUndo_Call { + return &MockClientCommandsServer_ObjectUndo_Call{Call: _e.mock.On("ObjectUndo", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectUndo_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectUndoRequest)) *MockClientCommandsServer_ObjectUndo_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectUndoRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectUndo_Call) Return(_a0 *pb.RpcObjectUndoResponse) *MockClientCommandsServer_ObjectUndo_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectUndo_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectUndoRequest) *pb.RpcObjectUndoResponse) *MockClientCommandsServer_ObjectUndo_Call { + _c.Call.Return(run) + return _c +} + +// ObjectWorkspaceSetDashboard provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ObjectWorkspaceSetDashboard(_a0 context.Context, _a1 *pb.RpcObjectWorkspaceSetDashboardRequest) *pb.RpcObjectWorkspaceSetDashboardResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ObjectWorkspaceSetDashboard") + } + + var r0 *pb.RpcObjectWorkspaceSetDashboardResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcObjectWorkspaceSetDashboardRequest) *pb.RpcObjectWorkspaceSetDashboardResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcObjectWorkspaceSetDashboardResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ObjectWorkspaceSetDashboard_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectWorkspaceSetDashboard' +type MockClientCommandsServer_ObjectWorkspaceSetDashboard_Call struct { + *mock.Call +} + +// ObjectWorkspaceSetDashboard is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcObjectWorkspaceSetDashboardRequest +func (_e *MockClientCommandsServer_Expecter) ObjectWorkspaceSetDashboard(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ObjectWorkspaceSetDashboard_Call { + return &MockClientCommandsServer_ObjectWorkspaceSetDashboard_Call{Call: _e.mock.On("ObjectWorkspaceSetDashboard", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ObjectWorkspaceSetDashboard_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcObjectWorkspaceSetDashboardRequest)) *MockClientCommandsServer_ObjectWorkspaceSetDashboard_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcObjectWorkspaceSetDashboardRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ObjectWorkspaceSetDashboard_Call) Return(_a0 *pb.RpcObjectWorkspaceSetDashboardResponse) *MockClientCommandsServer_ObjectWorkspaceSetDashboard_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ObjectWorkspaceSetDashboard_Call) RunAndReturn(run func(context.Context, *pb.RpcObjectWorkspaceSetDashboardRequest) *pb.RpcObjectWorkspaceSetDashboardResponse) *MockClientCommandsServer_ObjectWorkspaceSetDashboard_Call { + _c.Call.Return(run) + return _c +} + +// ProcessCancel provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ProcessCancel(_a0 context.Context, _a1 *pb.RpcProcessCancelRequest) *pb.RpcProcessCancelResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ProcessCancel") + } + + var r0 *pb.RpcProcessCancelResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcProcessCancelRequest) *pb.RpcProcessCancelResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcProcessCancelResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ProcessCancel_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ProcessCancel' +type MockClientCommandsServer_ProcessCancel_Call struct { + *mock.Call +} + +// ProcessCancel is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcProcessCancelRequest +func (_e *MockClientCommandsServer_Expecter) ProcessCancel(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ProcessCancel_Call { + return &MockClientCommandsServer_ProcessCancel_Call{Call: _e.mock.On("ProcessCancel", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ProcessCancel_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcProcessCancelRequest)) *MockClientCommandsServer_ProcessCancel_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcProcessCancelRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ProcessCancel_Call) Return(_a0 *pb.RpcProcessCancelResponse) *MockClientCommandsServer_ProcessCancel_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ProcessCancel_Call) RunAndReturn(run func(context.Context, *pb.RpcProcessCancelRequest) *pb.RpcProcessCancelResponse) *MockClientCommandsServer_ProcessCancel_Call { + _c.Call.Return(run) + return _c +} + +// ProcessSubscribe provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ProcessSubscribe(_a0 context.Context, _a1 *pb.RpcProcessSubscribeRequest) *pb.RpcProcessSubscribeResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ProcessSubscribe") + } + + var r0 *pb.RpcProcessSubscribeResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcProcessSubscribeRequest) *pb.RpcProcessSubscribeResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcProcessSubscribeResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ProcessSubscribe_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ProcessSubscribe' +type MockClientCommandsServer_ProcessSubscribe_Call struct { + *mock.Call +} + +// ProcessSubscribe is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcProcessSubscribeRequest +func (_e *MockClientCommandsServer_Expecter) ProcessSubscribe(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ProcessSubscribe_Call { + return &MockClientCommandsServer_ProcessSubscribe_Call{Call: _e.mock.On("ProcessSubscribe", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ProcessSubscribe_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcProcessSubscribeRequest)) *MockClientCommandsServer_ProcessSubscribe_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcProcessSubscribeRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ProcessSubscribe_Call) Return(_a0 *pb.RpcProcessSubscribeResponse) *MockClientCommandsServer_ProcessSubscribe_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ProcessSubscribe_Call) RunAndReturn(run func(context.Context, *pb.RpcProcessSubscribeRequest) *pb.RpcProcessSubscribeResponse) *MockClientCommandsServer_ProcessSubscribe_Call { + _c.Call.Return(run) + return _c +} + +// ProcessUnsubscribe provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ProcessUnsubscribe(_a0 context.Context, _a1 *pb.RpcProcessUnsubscribeRequest) *pb.RpcProcessUnsubscribeResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ProcessUnsubscribe") + } + + var r0 *pb.RpcProcessUnsubscribeResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcProcessUnsubscribeRequest) *pb.RpcProcessUnsubscribeResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcProcessUnsubscribeResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ProcessUnsubscribe_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ProcessUnsubscribe' +type MockClientCommandsServer_ProcessUnsubscribe_Call struct { + *mock.Call +} + +// ProcessUnsubscribe is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcProcessUnsubscribeRequest +func (_e *MockClientCommandsServer_Expecter) ProcessUnsubscribe(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ProcessUnsubscribe_Call { + return &MockClientCommandsServer_ProcessUnsubscribe_Call{Call: _e.mock.On("ProcessUnsubscribe", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ProcessUnsubscribe_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcProcessUnsubscribeRequest)) *MockClientCommandsServer_ProcessUnsubscribe_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcProcessUnsubscribeRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ProcessUnsubscribe_Call) Return(_a0 *pb.RpcProcessUnsubscribeResponse) *MockClientCommandsServer_ProcessUnsubscribe_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ProcessUnsubscribe_Call) RunAndReturn(run func(context.Context, *pb.RpcProcessUnsubscribeRequest) *pb.RpcProcessUnsubscribeResponse) *MockClientCommandsServer_ProcessUnsubscribe_Call { + _c.Call.Return(run) + return _c +} + +// RelationListRemoveOption provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) RelationListRemoveOption(_a0 context.Context, _a1 *pb.RpcRelationListRemoveOptionRequest) *pb.RpcRelationListRemoveOptionResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for RelationListRemoveOption") + } + + var r0 *pb.RpcRelationListRemoveOptionResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcRelationListRemoveOptionRequest) *pb.RpcRelationListRemoveOptionResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcRelationListRemoveOptionResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_RelationListRemoveOption_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'RelationListRemoveOption' +type MockClientCommandsServer_RelationListRemoveOption_Call struct { + *mock.Call +} + +// RelationListRemoveOption is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcRelationListRemoveOptionRequest +func (_e *MockClientCommandsServer_Expecter) RelationListRemoveOption(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_RelationListRemoveOption_Call { + return &MockClientCommandsServer_RelationListRemoveOption_Call{Call: _e.mock.On("RelationListRemoveOption", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_RelationListRemoveOption_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcRelationListRemoveOptionRequest)) *MockClientCommandsServer_RelationListRemoveOption_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcRelationListRemoveOptionRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_RelationListRemoveOption_Call) Return(_a0 *pb.RpcRelationListRemoveOptionResponse) *MockClientCommandsServer_RelationListRemoveOption_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_RelationListRemoveOption_Call) RunAndReturn(run func(context.Context, *pb.RpcRelationListRemoveOptionRequest) *pb.RpcRelationListRemoveOptionResponse) *MockClientCommandsServer_RelationListRemoveOption_Call { + _c.Call.Return(run) + return _c +} + +// RelationListWithValue provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) RelationListWithValue(_a0 context.Context, _a1 *pb.RpcRelationListWithValueRequest) *pb.RpcRelationListWithValueResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for RelationListWithValue") + } + + var r0 *pb.RpcRelationListWithValueResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcRelationListWithValueRequest) *pb.RpcRelationListWithValueResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcRelationListWithValueResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_RelationListWithValue_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'RelationListWithValue' +type MockClientCommandsServer_RelationListWithValue_Call struct { + *mock.Call +} + +// RelationListWithValue is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcRelationListWithValueRequest +func (_e *MockClientCommandsServer_Expecter) RelationListWithValue(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_RelationListWithValue_Call { + return &MockClientCommandsServer_RelationListWithValue_Call{Call: _e.mock.On("RelationListWithValue", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_RelationListWithValue_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcRelationListWithValueRequest)) *MockClientCommandsServer_RelationListWithValue_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcRelationListWithValueRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_RelationListWithValue_Call) Return(_a0 *pb.RpcRelationListWithValueResponse) *MockClientCommandsServer_RelationListWithValue_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_RelationListWithValue_Call) RunAndReturn(run func(context.Context, *pb.RpcRelationListWithValueRequest) *pb.RpcRelationListWithValueResponse) *MockClientCommandsServer_RelationListWithValue_Call { + _c.Call.Return(run) + return _c +} + +// RelationOptions provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) RelationOptions(_a0 context.Context, _a1 *pb.RpcRelationOptionsRequest) *pb.RpcRelationOptionsResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for RelationOptions") + } + + var r0 *pb.RpcRelationOptionsResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcRelationOptionsRequest) *pb.RpcRelationOptionsResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcRelationOptionsResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_RelationOptions_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'RelationOptions' +type MockClientCommandsServer_RelationOptions_Call struct { + *mock.Call +} + +// RelationOptions is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcRelationOptionsRequest +func (_e *MockClientCommandsServer_Expecter) RelationOptions(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_RelationOptions_Call { + return &MockClientCommandsServer_RelationOptions_Call{Call: _e.mock.On("RelationOptions", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_RelationOptions_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcRelationOptionsRequest)) *MockClientCommandsServer_RelationOptions_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcRelationOptionsRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_RelationOptions_Call) Return(_a0 *pb.RpcRelationOptionsResponse) *MockClientCommandsServer_RelationOptions_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_RelationOptions_Call) RunAndReturn(run func(context.Context, *pb.RpcRelationOptionsRequest) *pb.RpcRelationOptionsResponse) *MockClientCommandsServer_RelationOptions_Call { + _c.Call.Return(run) + return _c +} + +// SpaceDelete provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) SpaceDelete(_a0 context.Context, _a1 *pb.RpcSpaceDeleteRequest) *pb.RpcSpaceDeleteResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for SpaceDelete") + } + + var r0 *pb.RpcSpaceDeleteResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcSpaceDeleteRequest) *pb.RpcSpaceDeleteResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcSpaceDeleteResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_SpaceDelete_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SpaceDelete' +type MockClientCommandsServer_SpaceDelete_Call struct { + *mock.Call +} + +// SpaceDelete is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcSpaceDeleteRequest +func (_e *MockClientCommandsServer_Expecter) SpaceDelete(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_SpaceDelete_Call { + return &MockClientCommandsServer_SpaceDelete_Call{Call: _e.mock.On("SpaceDelete", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_SpaceDelete_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcSpaceDeleteRequest)) *MockClientCommandsServer_SpaceDelete_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcSpaceDeleteRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_SpaceDelete_Call) Return(_a0 *pb.RpcSpaceDeleteResponse) *MockClientCommandsServer_SpaceDelete_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_SpaceDelete_Call) RunAndReturn(run func(context.Context, *pb.RpcSpaceDeleteRequest) *pb.RpcSpaceDeleteResponse) *MockClientCommandsServer_SpaceDelete_Call { + _c.Call.Return(run) + return _c +} + +// SpaceInviteGenerate provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) SpaceInviteGenerate(_a0 context.Context, _a1 *pb.RpcSpaceInviteGenerateRequest) *pb.RpcSpaceInviteGenerateResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for SpaceInviteGenerate") + } + + var r0 *pb.RpcSpaceInviteGenerateResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcSpaceInviteGenerateRequest) *pb.RpcSpaceInviteGenerateResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcSpaceInviteGenerateResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_SpaceInviteGenerate_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SpaceInviteGenerate' +type MockClientCommandsServer_SpaceInviteGenerate_Call struct { + *mock.Call +} + +// SpaceInviteGenerate is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcSpaceInviteGenerateRequest +func (_e *MockClientCommandsServer_Expecter) SpaceInviteGenerate(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_SpaceInviteGenerate_Call { + return &MockClientCommandsServer_SpaceInviteGenerate_Call{Call: _e.mock.On("SpaceInviteGenerate", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_SpaceInviteGenerate_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcSpaceInviteGenerateRequest)) *MockClientCommandsServer_SpaceInviteGenerate_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcSpaceInviteGenerateRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_SpaceInviteGenerate_Call) Return(_a0 *pb.RpcSpaceInviteGenerateResponse) *MockClientCommandsServer_SpaceInviteGenerate_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_SpaceInviteGenerate_Call) RunAndReturn(run func(context.Context, *pb.RpcSpaceInviteGenerateRequest) *pb.RpcSpaceInviteGenerateResponse) *MockClientCommandsServer_SpaceInviteGenerate_Call { + _c.Call.Return(run) + return _c +} + +// SpaceInviteGetCurrent provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) SpaceInviteGetCurrent(_a0 context.Context, _a1 *pb.RpcSpaceInviteGetCurrentRequest) *pb.RpcSpaceInviteGetCurrentResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for SpaceInviteGetCurrent") + } + + var r0 *pb.RpcSpaceInviteGetCurrentResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcSpaceInviteGetCurrentRequest) *pb.RpcSpaceInviteGetCurrentResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcSpaceInviteGetCurrentResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_SpaceInviteGetCurrent_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SpaceInviteGetCurrent' +type MockClientCommandsServer_SpaceInviteGetCurrent_Call struct { + *mock.Call +} + +// SpaceInviteGetCurrent is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcSpaceInviteGetCurrentRequest +func (_e *MockClientCommandsServer_Expecter) SpaceInviteGetCurrent(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_SpaceInviteGetCurrent_Call { + return &MockClientCommandsServer_SpaceInviteGetCurrent_Call{Call: _e.mock.On("SpaceInviteGetCurrent", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_SpaceInviteGetCurrent_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcSpaceInviteGetCurrentRequest)) *MockClientCommandsServer_SpaceInviteGetCurrent_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcSpaceInviteGetCurrentRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_SpaceInviteGetCurrent_Call) Return(_a0 *pb.RpcSpaceInviteGetCurrentResponse) *MockClientCommandsServer_SpaceInviteGetCurrent_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_SpaceInviteGetCurrent_Call) RunAndReturn(run func(context.Context, *pb.RpcSpaceInviteGetCurrentRequest) *pb.RpcSpaceInviteGetCurrentResponse) *MockClientCommandsServer_SpaceInviteGetCurrent_Call { + _c.Call.Return(run) + return _c +} + +// SpaceInviteRevoke provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) SpaceInviteRevoke(_a0 context.Context, _a1 *pb.RpcSpaceInviteRevokeRequest) *pb.RpcSpaceInviteRevokeResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for SpaceInviteRevoke") + } + + var r0 *pb.RpcSpaceInviteRevokeResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcSpaceInviteRevokeRequest) *pb.RpcSpaceInviteRevokeResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcSpaceInviteRevokeResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_SpaceInviteRevoke_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SpaceInviteRevoke' +type MockClientCommandsServer_SpaceInviteRevoke_Call struct { + *mock.Call +} + +// SpaceInviteRevoke is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcSpaceInviteRevokeRequest +func (_e *MockClientCommandsServer_Expecter) SpaceInviteRevoke(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_SpaceInviteRevoke_Call { + return &MockClientCommandsServer_SpaceInviteRevoke_Call{Call: _e.mock.On("SpaceInviteRevoke", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_SpaceInviteRevoke_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcSpaceInviteRevokeRequest)) *MockClientCommandsServer_SpaceInviteRevoke_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcSpaceInviteRevokeRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_SpaceInviteRevoke_Call) Return(_a0 *pb.RpcSpaceInviteRevokeResponse) *MockClientCommandsServer_SpaceInviteRevoke_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_SpaceInviteRevoke_Call) RunAndReturn(run func(context.Context, *pb.RpcSpaceInviteRevokeRequest) *pb.RpcSpaceInviteRevokeResponse) *MockClientCommandsServer_SpaceInviteRevoke_Call { + _c.Call.Return(run) + return _c +} + +// SpaceInviteView provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) SpaceInviteView(_a0 context.Context, _a1 *pb.RpcSpaceInviteViewRequest) *pb.RpcSpaceInviteViewResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for SpaceInviteView") + } + + var r0 *pb.RpcSpaceInviteViewResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcSpaceInviteViewRequest) *pb.RpcSpaceInviteViewResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcSpaceInviteViewResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_SpaceInviteView_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SpaceInviteView' +type MockClientCommandsServer_SpaceInviteView_Call struct { + *mock.Call +} + +// SpaceInviteView is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcSpaceInviteViewRequest +func (_e *MockClientCommandsServer_Expecter) SpaceInviteView(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_SpaceInviteView_Call { + return &MockClientCommandsServer_SpaceInviteView_Call{Call: _e.mock.On("SpaceInviteView", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_SpaceInviteView_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcSpaceInviteViewRequest)) *MockClientCommandsServer_SpaceInviteView_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcSpaceInviteViewRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_SpaceInviteView_Call) Return(_a0 *pb.RpcSpaceInviteViewResponse) *MockClientCommandsServer_SpaceInviteView_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_SpaceInviteView_Call) RunAndReturn(run func(context.Context, *pb.RpcSpaceInviteViewRequest) *pb.RpcSpaceInviteViewResponse) *MockClientCommandsServer_SpaceInviteView_Call { + _c.Call.Return(run) + return _c +} + +// SpaceJoin provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) SpaceJoin(_a0 context.Context, _a1 *pb.RpcSpaceJoinRequest) *pb.RpcSpaceJoinResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for SpaceJoin") + } + + var r0 *pb.RpcSpaceJoinResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcSpaceJoinRequest) *pb.RpcSpaceJoinResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcSpaceJoinResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_SpaceJoin_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SpaceJoin' +type MockClientCommandsServer_SpaceJoin_Call struct { + *mock.Call +} + +// SpaceJoin is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcSpaceJoinRequest +func (_e *MockClientCommandsServer_Expecter) SpaceJoin(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_SpaceJoin_Call { + return &MockClientCommandsServer_SpaceJoin_Call{Call: _e.mock.On("SpaceJoin", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_SpaceJoin_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcSpaceJoinRequest)) *MockClientCommandsServer_SpaceJoin_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcSpaceJoinRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_SpaceJoin_Call) Return(_a0 *pb.RpcSpaceJoinResponse) *MockClientCommandsServer_SpaceJoin_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_SpaceJoin_Call) RunAndReturn(run func(context.Context, *pb.RpcSpaceJoinRequest) *pb.RpcSpaceJoinResponse) *MockClientCommandsServer_SpaceJoin_Call { + _c.Call.Return(run) + return _c +} + +// SpaceJoinCancel provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) SpaceJoinCancel(_a0 context.Context, _a1 *pb.RpcSpaceJoinCancelRequest) *pb.RpcSpaceJoinCancelResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for SpaceJoinCancel") + } + + var r0 *pb.RpcSpaceJoinCancelResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcSpaceJoinCancelRequest) *pb.RpcSpaceJoinCancelResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcSpaceJoinCancelResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_SpaceJoinCancel_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SpaceJoinCancel' +type MockClientCommandsServer_SpaceJoinCancel_Call struct { + *mock.Call +} + +// SpaceJoinCancel is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcSpaceJoinCancelRequest +func (_e *MockClientCommandsServer_Expecter) SpaceJoinCancel(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_SpaceJoinCancel_Call { + return &MockClientCommandsServer_SpaceJoinCancel_Call{Call: _e.mock.On("SpaceJoinCancel", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_SpaceJoinCancel_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcSpaceJoinCancelRequest)) *MockClientCommandsServer_SpaceJoinCancel_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcSpaceJoinCancelRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_SpaceJoinCancel_Call) Return(_a0 *pb.RpcSpaceJoinCancelResponse) *MockClientCommandsServer_SpaceJoinCancel_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_SpaceJoinCancel_Call) RunAndReturn(run func(context.Context, *pb.RpcSpaceJoinCancelRequest) *pb.RpcSpaceJoinCancelResponse) *MockClientCommandsServer_SpaceJoinCancel_Call { + _c.Call.Return(run) + return _c +} + +// SpaceLeaveApprove provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) SpaceLeaveApprove(_a0 context.Context, _a1 *pb.RpcSpaceLeaveApproveRequest) *pb.RpcSpaceLeaveApproveResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for SpaceLeaveApprove") + } + + var r0 *pb.RpcSpaceLeaveApproveResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcSpaceLeaveApproveRequest) *pb.RpcSpaceLeaveApproveResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcSpaceLeaveApproveResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_SpaceLeaveApprove_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SpaceLeaveApprove' +type MockClientCommandsServer_SpaceLeaveApprove_Call struct { + *mock.Call +} + +// SpaceLeaveApprove is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcSpaceLeaveApproveRequest +func (_e *MockClientCommandsServer_Expecter) SpaceLeaveApprove(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_SpaceLeaveApprove_Call { + return &MockClientCommandsServer_SpaceLeaveApprove_Call{Call: _e.mock.On("SpaceLeaveApprove", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_SpaceLeaveApprove_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcSpaceLeaveApproveRequest)) *MockClientCommandsServer_SpaceLeaveApprove_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcSpaceLeaveApproveRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_SpaceLeaveApprove_Call) Return(_a0 *pb.RpcSpaceLeaveApproveResponse) *MockClientCommandsServer_SpaceLeaveApprove_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_SpaceLeaveApprove_Call) RunAndReturn(run func(context.Context, *pb.RpcSpaceLeaveApproveRequest) *pb.RpcSpaceLeaveApproveResponse) *MockClientCommandsServer_SpaceLeaveApprove_Call { + _c.Call.Return(run) + return _c +} + +// SpaceMakeShareable provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) SpaceMakeShareable(_a0 context.Context, _a1 *pb.RpcSpaceMakeShareableRequest) *pb.RpcSpaceMakeShareableResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for SpaceMakeShareable") + } + + var r0 *pb.RpcSpaceMakeShareableResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcSpaceMakeShareableRequest) *pb.RpcSpaceMakeShareableResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcSpaceMakeShareableResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_SpaceMakeShareable_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SpaceMakeShareable' +type MockClientCommandsServer_SpaceMakeShareable_Call struct { + *mock.Call +} + +// SpaceMakeShareable is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcSpaceMakeShareableRequest +func (_e *MockClientCommandsServer_Expecter) SpaceMakeShareable(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_SpaceMakeShareable_Call { + return &MockClientCommandsServer_SpaceMakeShareable_Call{Call: _e.mock.On("SpaceMakeShareable", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_SpaceMakeShareable_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcSpaceMakeShareableRequest)) *MockClientCommandsServer_SpaceMakeShareable_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcSpaceMakeShareableRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_SpaceMakeShareable_Call) Return(_a0 *pb.RpcSpaceMakeShareableResponse) *MockClientCommandsServer_SpaceMakeShareable_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_SpaceMakeShareable_Call) RunAndReturn(run func(context.Context, *pb.RpcSpaceMakeShareableRequest) *pb.RpcSpaceMakeShareableResponse) *MockClientCommandsServer_SpaceMakeShareable_Call { + _c.Call.Return(run) + return _c +} + +// SpaceParticipantPermissionsChange provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) SpaceParticipantPermissionsChange(_a0 context.Context, _a1 *pb.RpcSpaceParticipantPermissionsChangeRequest) *pb.RpcSpaceParticipantPermissionsChangeResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for SpaceParticipantPermissionsChange") + } + + var r0 *pb.RpcSpaceParticipantPermissionsChangeResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcSpaceParticipantPermissionsChangeRequest) *pb.RpcSpaceParticipantPermissionsChangeResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcSpaceParticipantPermissionsChangeResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_SpaceParticipantPermissionsChange_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SpaceParticipantPermissionsChange' +type MockClientCommandsServer_SpaceParticipantPermissionsChange_Call struct { + *mock.Call +} + +// SpaceParticipantPermissionsChange is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcSpaceParticipantPermissionsChangeRequest +func (_e *MockClientCommandsServer_Expecter) SpaceParticipantPermissionsChange(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_SpaceParticipantPermissionsChange_Call { + return &MockClientCommandsServer_SpaceParticipantPermissionsChange_Call{Call: _e.mock.On("SpaceParticipantPermissionsChange", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_SpaceParticipantPermissionsChange_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcSpaceParticipantPermissionsChangeRequest)) *MockClientCommandsServer_SpaceParticipantPermissionsChange_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcSpaceParticipantPermissionsChangeRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_SpaceParticipantPermissionsChange_Call) Return(_a0 *pb.RpcSpaceParticipantPermissionsChangeResponse) *MockClientCommandsServer_SpaceParticipantPermissionsChange_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_SpaceParticipantPermissionsChange_Call) RunAndReturn(run func(context.Context, *pb.RpcSpaceParticipantPermissionsChangeRequest) *pb.RpcSpaceParticipantPermissionsChangeResponse) *MockClientCommandsServer_SpaceParticipantPermissionsChange_Call { + _c.Call.Return(run) + return _c +} + +// SpaceParticipantRemove provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) SpaceParticipantRemove(_a0 context.Context, _a1 *pb.RpcSpaceParticipantRemoveRequest) *pb.RpcSpaceParticipantRemoveResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for SpaceParticipantRemove") + } + + var r0 *pb.RpcSpaceParticipantRemoveResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcSpaceParticipantRemoveRequest) *pb.RpcSpaceParticipantRemoveResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcSpaceParticipantRemoveResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_SpaceParticipantRemove_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SpaceParticipantRemove' +type MockClientCommandsServer_SpaceParticipantRemove_Call struct { + *mock.Call +} + +// SpaceParticipantRemove is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcSpaceParticipantRemoveRequest +func (_e *MockClientCommandsServer_Expecter) SpaceParticipantRemove(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_SpaceParticipantRemove_Call { + return &MockClientCommandsServer_SpaceParticipantRemove_Call{Call: _e.mock.On("SpaceParticipantRemove", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_SpaceParticipantRemove_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcSpaceParticipantRemoveRequest)) *MockClientCommandsServer_SpaceParticipantRemove_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcSpaceParticipantRemoveRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_SpaceParticipantRemove_Call) Return(_a0 *pb.RpcSpaceParticipantRemoveResponse) *MockClientCommandsServer_SpaceParticipantRemove_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_SpaceParticipantRemove_Call) RunAndReturn(run func(context.Context, *pb.RpcSpaceParticipantRemoveRequest) *pb.RpcSpaceParticipantRemoveResponse) *MockClientCommandsServer_SpaceParticipantRemove_Call { + _c.Call.Return(run) + return _c +} + +// SpaceRequestApprove provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) SpaceRequestApprove(_a0 context.Context, _a1 *pb.RpcSpaceRequestApproveRequest) *pb.RpcSpaceRequestApproveResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for SpaceRequestApprove") + } + + var r0 *pb.RpcSpaceRequestApproveResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcSpaceRequestApproveRequest) *pb.RpcSpaceRequestApproveResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcSpaceRequestApproveResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_SpaceRequestApprove_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SpaceRequestApprove' +type MockClientCommandsServer_SpaceRequestApprove_Call struct { + *mock.Call +} + +// SpaceRequestApprove is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcSpaceRequestApproveRequest +func (_e *MockClientCommandsServer_Expecter) SpaceRequestApprove(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_SpaceRequestApprove_Call { + return &MockClientCommandsServer_SpaceRequestApprove_Call{Call: _e.mock.On("SpaceRequestApprove", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_SpaceRequestApprove_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcSpaceRequestApproveRequest)) *MockClientCommandsServer_SpaceRequestApprove_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcSpaceRequestApproveRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_SpaceRequestApprove_Call) Return(_a0 *pb.RpcSpaceRequestApproveResponse) *MockClientCommandsServer_SpaceRequestApprove_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_SpaceRequestApprove_Call) RunAndReturn(run func(context.Context, *pb.RpcSpaceRequestApproveRequest) *pb.RpcSpaceRequestApproveResponse) *MockClientCommandsServer_SpaceRequestApprove_Call { + _c.Call.Return(run) + return _c +} + +// SpaceRequestDecline provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) SpaceRequestDecline(_a0 context.Context, _a1 *pb.RpcSpaceRequestDeclineRequest) *pb.RpcSpaceRequestDeclineResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for SpaceRequestDecline") + } + + var r0 *pb.RpcSpaceRequestDeclineResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcSpaceRequestDeclineRequest) *pb.RpcSpaceRequestDeclineResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcSpaceRequestDeclineResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_SpaceRequestDecline_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SpaceRequestDecline' +type MockClientCommandsServer_SpaceRequestDecline_Call struct { + *mock.Call +} + +// SpaceRequestDecline is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcSpaceRequestDeclineRequest +func (_e *MockClientCommandsServer_Expecter) SpaceRequestDecline(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_SpaceRequestDecline_Call { + return &MockClientCommandsServer_SpaceRequestDecline_Call{Call: _e.mock.On("SpaceRequestDecline", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_SpaceRequestDecline_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcSpaceRequestDeclineRequest)) *MockClientCommandsServer_SpaceRequestDecline_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcSpaceRequestDeclineRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_SpaceRequestDecline_Call) Return(_a0 *pb.RpcSpaceRequestDeclineResponse) *MockClientCommandsServer_SpaceRequestDecline_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_SpaceRequestDecline_Call) RunAndReturn(run func(context.Context, *pb.RpcSpaceRequestDeclineRequest) *pb.RpcSpaceRequestDeclineResponse) *MockClientCommandsServer_SpaceRequestDecline_Call { + _c.Call.Return(run) + return _c +} + +// SpaceSetOrder provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) SpaceSetOrder(_a0 context.Context, _a1 *pb.RpcSpaceSetOrderRequest) *pb.RpcSpaceSetOrderResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for SpaceSetOrder") + } + + var r0 *pb.RpcSpaceSetOrderResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcSpaceSetOrderRequest) *pb.RpcSpaceSetOrderResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcSpaceSetOrderResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_SpaceSetOrder_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SpaceSetOrder' +type MockClientCommandsServer_SpaceSetOrder_Call struct { + *mock.Call +} + +// SpaceSetOrder is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcSpaceSetOrderRequest +func (_e *MockClientCommandsServer_Expecter) SpaceSetOrder(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_SpaceSetOrder_Call { + return &MockClientCommandsServer_SpaceSetOrder_Call{Call: _e.mock.On("SpaceSetOrder", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_SpaceSetOrder_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcSpaceSetOrderRequest)) *MockClientCommandsServer_SpaceSetOrder_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcSpaceSetOrderRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_SpaceSetOrder_Call) Return(_a0 *pb.RpcSpaceSetOrderResponse) *MockClientCommandsServer_SpaceSetOrder_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_SpaceSetOrder_Call) RunAndReturn(run func(context.Context, *pb.RpcSpaceSetOrderRequest) *pb.RpcSpaceSetOrderResponse) *MockClientCommandsServer_SpaceSetOrder_Call { + _c.Call.Return(run) + return _c +} + +// SpaceStopSharing provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) SpaceStopSharing(_a0 context.Context, _a1 *pb.RpcSpaceStopSharingRequest) *pb.RpcSpaceStopSharingResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for SpaceStopSharing") + } + + var r0 *pb.RpcSpaceStopSharingResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcSpaceStopSharingRequest) *pb.RpcSpaceStopSharingResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcSpaceStopSharingResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_SpaceStopSharing_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SpaceStopSharing' +type MockClientCommandsServer_SpaceStopSharing_Call struct { + *mock.Call +} + +// SpaceStopSharing is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcSpaceStopSharingRequest +func (_e *MockClientCommandsServer_Expecter) SpaceStopSharing(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_SpaceStopSharing_Call { + return &MockClientCommandsServer_SpaceStopSharing_Call{Call: _e.mock.On("SpaceStopSharing", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_SpaceStopSharing_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcSpaceStopSharingRequest)) *MockClientCommandsServer_SpaceStopSharing_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcSpaceStopSharingRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_SpaceStopSharing_Call) Return(_a0 *pb.RpcSpaceStopSharingResponse) *MockClientCommandsServer_SpaceStopSharing_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_SpaceStopSharing_Call) RunAndReturn(run func(context.Context, *pb.RpcSpaceStopSharingRequest) *pb.RpcSpaceStopSharingResponse) *MockClientCommandsServer_SpaceStopSharing_Call { + _c.Call.Return(run) + return _c +} + +// SpaceUnsetOrder provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) SpaceUnsetOrder(_a0 context.Context, _a1 *pb.RpcSpaceUnsetOrderRequest) *pb.RpcSpaceUnsetOrderResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for SpaceUnsetOrder") + } + + var r0 *pb.RpcSpaceUnsetOrderResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcSpaceUnsetOrderRequest) *pb.RpcSpaceUnsetOrderResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcSpaceUnsetOrderResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_SpaceUnsetOrder_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SpaceUnsetOrder' +type MockClientCommandsServer_SpaceUnsetOrder_Call struct { + *mock.Call +} + +// SpaceUnsetOrder is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcSpaceUnsetOrderRequest +func (_e *MockClientCommandsServer_Expecter) SpaceUnsetOrder(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_SpaceUnsetOrder_Call { + return &MockClientCommandsServer_SpaceUnsetOrder_Call{Call: _e.mock.On("SpaceUnsetOrder", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_SpaceUnsetOrder_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcSpaceUnsetOrderRequest)) *MockClientCommandsServer_SpaceUnsetOrder_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcSpaceUnsetOrderRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_SpaceUnsetOrder_Call) Return(_a0 *pb.RpcSpaceUnsetOrderResponse) *MockClientCommandsServer_SpaceUnsetOrder_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_SpaceUnsetOrder_Call) RunAndReturn(run func(context.Context, *pb.RpcSpaceUnsetOrderRequest) *pb.RpcSpaceUnsetOrderResponse) *MockClientCommandsServer_SpaceUnsetOrder_Call { + _c.Call.Return(run) + return _c +} + +// TemplateClone provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) TemplateClone(_a0 context.Context, _a1 *pb.RpcTemplateCloneRequest) *pb.RpcTemplateCloneResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for TemplateClone") + } + + var r0 *pb.RpcTemplateCloneResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcTemplateCloneRequest) *pb.RpcTemplateCloneResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcTemplateCloneResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_TemplateClone_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'TemplateClone' +type MockClientCommandsServer_TemplateClone_Call struct { + *mock.Call +} + +// TemplateClone is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcTemplateCloneRequest +func (_e *MockClientCommandsServer_Expecter) TemplateClone(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_TemplateClone_Call { + return &MockClientCommandsServer_TemplateClone_Call{Call: _e.mock.On("TemplateClone", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_TemplateClone_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcTemplateCloneRequest)) *MockClientCommandsServer_TemplateClone_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcTemplateCloneRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_TemplateClone_Call) Return(_a0 *pb.RpcTemplateCloneResponse) *MockClientCommandsServer_TemplateClone_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_TemplateClone_Call) RunAndReturn(run func(context.Context, *pb.RpcTemplateCloneRequest) *pb.RpcTemplateCloneResponse) *MockClientCommandsServer_TemplateClone_Call { + _c.Call.Return(run) + return _c +} + +// TemplateCreateFromObject provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) TemplateCreateFromObject(_a0 context.Context, _a1 *pb.RpcTemplateCreateFromObjectRequest) *pb.RpcTemplateCreateFromObjectResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for TemplateCreateFromObject") + } + + var r0 *pb.RpcTemplateCreateFromObjectResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcTemplateCreateFromObjectRequest) *pb.RpcTemplateCreateFromObjectResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcTemplateCreateFromObjectResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_TemplateCreateFromObject_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'TemplateCreateFromObject' +type MockClientCommandsServer_TemplateCreateFromObject_Call struct { + *mock.Call +} + +// TemplateCreateFromObject is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcTemplateCreateFromObjectRequest +func (_e *MockClientCommandsServer_Expecter) TemplateCreateFromObject(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_TemplateCreateFromObject_Call { + return &MockClientCommandsServer_TemplateCreateFromObject_Call{Call: _e.mock.On("TemplateCreateFromObject", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_TemplateCreateFromObject_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcTemplateCreateFromObjectRequest)) *MockClientCommandsServer_TemplateCreateFromObject_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcTemplateCreateFromObjectRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_TemplateCreateFromObject_Call) Return(_a0 *pb.RpcTemplateCreateFromObjectResponse) *MockClientCommandsServer_TemplateCreateFromObject_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_TemplateCreateFromObject_Call) RunAndReturn(run func(context.Context, *pb.RpcTemplateCreateFromObjectRequest) *pb.RpcTemplateCreateFromObjectResponse) *MockClientCommandsServer_TemplateCreateFromObject_Call { + _c.Call.Return(run) + return _c +} + +// TemplateExportAll provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) TemplateExportAll(_a0 context.Context, _a1 *pb.RpcTemplateExportAllRequest) *pb.RpcTemplateExportAllResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for TemplateExportAll") + } + + var r0 *pb.RpcTemplateExportAllResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcTemplateExportAllRequest) *pb.RpcTemplateExportAllResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcTemplateExportAllResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_TemplateExportAll_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'TemplateExportAll' +type MockClientCommandsServer_TemplateExportAll_Call struct { + *mock.Call +} + +// TemplateExportAll is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcTemplateExportAllRequest +func (_e *MockClientCommandsServer_Expecter) TemplateExportAll(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_TemplateExportAll_Call { + return &MockClientCommandsServer_TemplateExportAll_Call{Call: _e.mock.On("TemplateExportAll", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_TemplateExportAll_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcTemplateExportAllRequest)) *MockClientCommandsServer_TemplateExportAll_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcTemplateExportAllRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_TemplateExportAll_Call) Return(_a0 *pb.RpcTemplateExportAllResponse) *MockClientCommandsServer_TemplateExportAll_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_TemplateExportAll_Call) RunAndReturn(run func(context.Context, *pb.RpcTemplateExportAllRequest) *pb.RpcTemplateExportAllResponse) *MockClientCommandsServer_TemplateExportAll_Call { + _c.Call.Return(run) + return _c +} + +// UnsplashDownload provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) UnsplashDownload(_a0 context.Context, _a1 *pb.RpcUnsplashDownloadRequest) *pb.RpcUnsplashDownloadResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for UnsplashDownload") + } + + var r0 *pb.RpcUnsplashDownloadResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcUnsplashDownloadRequest) *pb.RpcUnsplashDownloadResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcUnsplashDownloadResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_UnsplashDownload_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'UnsplashDownload' +type MockClientCommandsServer_UnsplashDownload_Call struct { + *mock.Call +} + +// UnsplashDownload is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcUnsplashDownloadRequest +func (_e *MockClientCommandsServer_Expecter) UnsplashDownload(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_UnsplashDownload_Call { + return &MockClientCommandsServer_UnsplashDownload_Call{Call: _e.mock.On("UnsplashDownload", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_UnsplashDownload_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcUnsplashDownloadRequest)) *MockClientCommandsServer_UnsplashDownload_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcUnsplashDownloadRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_UnsplashDownload_Call) Return(_a0 *pb.RpcUnsplashDownloadResponse) *MockClientCommandsServer_UnsplashDownload_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_UnsplashDownload_Call) RunAndReturn(run func(context.Context, *pb.RpcUnsplashDownloadRequest) *pb.RpcUnsplashDownloadResponse) *MockClientCommandsServer_UnsplashDownload_Call { + _c.Call.Return(run) + return _c +} + +// UnsplashSearch provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) UnsplashSearch(_a0 context.Context, _a1 *pb.RpcUnsplashSearchRequest) *pb.RpcUnsplashSearchResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for UnsplashSearch") + } + + var r0 *pb.RpcUnsplashSearchResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcUnsplashSearchRequest) *pb.RpcUnsplashSearchResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcUnsplashSearchResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_UnsplashSearch_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'UnsplashSearch' +type MockClientCommandsServer_UnsplashSearch_Call struct { + *mock.Call +} + +// UnsplashSearch is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcUnsplashSearchRequest +func (_e *MockClientCommandsServer_Expecter) UnsplashSearch(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_UnsplashSearch_Call { + return &MockClientCommandsServer_UnsplashSearch_Call{Call: _e.mock.On("UnsplashSearch", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_UnsplashSearch_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcUnsplashSearchRequest)) *MockClientCommandsServer_UnsplashSearch_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcUnsplashSearchRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_UnsplashSearch_Call) Return(_a0 *pb.RpcUnsplashSearchResponse) *MockClientCommandsServer_UnsplashSearch_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_UnsplashSearch_Call) RunAndReturn(run func(context.Context, *pb.RpcUnsplashSearchRequest) *pb.RpcUnsplashSearchResponse) *MockClientCommandsServer_UnsplashSearch_Call { + _c.Call.Return(run) + return _c +} + +// WalletCloseSession provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) WalletCloseSession(_a0 context.Context, _a1 *pb.RpcWalletCloseSessionRequest) *pb.RpcWalletCloseSessionResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for WalletCloseSession") + } + + var r0 *pb.RpcWalletCloseSessionResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcWalletCloseSessionRequest) *pb.RpcWalletCloseSessionResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcWalletCloseSessionResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_WalletCloseSession_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'WalletCloseSession' +type MockClientCommandsServer_WalletCloseSession_Call struct { + *mock.Call +} + +// WalletCloseSession is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcWalletCloseSessionRequest +func (_e *MockClientCommandsServer_Expecter) WalletCloseSession(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_WalletCloseSession_Call { + return &MockClientCommandsServer_WalletCloseSession_Call{Call: _e.mock.On("WalletCloseSession", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_WalletCloseSession_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcWalletCloseSessionRequest)) *MockClientCommandsServer_WalletCloseSession_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcWalletCloseSessionRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_WalletCloseSession_Call) Return(_a0 *pb.RpcWalletCloseSessionResponse) *MockClientCommandsServer_WalletCloseSession_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_WalletCloseSession_Call) RunAndReturn(run func(context.Context, *pb.RpcWalletCloseSessionRequest) *pb.RpcWalletCloseSessionResponse) *MockClientCommandsServer_WalletCloseSession_Call { + _c.Call.Return(run) + return _c +} + +// WalletConvert provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) WalletConvert(_a0 context.Context, _a1 *pb.RpcWalletConvertRequest) *pb.RpcWalletConvertResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for WalletConvert") + } + + var r0 *pb.RpcWalletConvertResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcWalletConvertRequest) *pb.RpcWalletConvertResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcWalletConvertResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_WalletConvert_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'WalletConvert' +type MockClientCommandsServer_WalletConvert_Call struct { + *mock.Call +} + +// WalletConvert is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcWalletConvertRequest +func (_e *MockClientCommandsServer_Expecter) WalletConvert(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_WalletConvert_Call { + return &MockClientCommandsServer_WalletConvert_Call{Call: _e.mock.On("WalletConvert", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_WalletConvert_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcWalletConvertRequest)) *MockClientCommandsServer_WalletConvert_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcWalletConvertRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_WalletConvert_Call) Return(_a0 *pb.RpcWalletConvertResponse) *MockClientCommandsServer_WalletConvert_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_WalletConvert_Call) RunAndReturn(run func(context.Context, *pb.RpcWalletConvertRequest) *pb.RpcWalletConvertResponse) *MockClientCommandsServer_WalletConvert_Call { + _c.Call.Return(run) + return _c +} + +// WalletCreate provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) WalletCreate(_a0 context.Context, _a1 *pb.RpcWalletCreateRequest) *pb.RpcWalletCreateResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for WalletCreate") + } + + var r0 *pb.RpcWalletCreateResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcWalletCreateRequest) *pb.RpcWalletCreateResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcWalletCreateResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_WalletCreate_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'WalletCreate' +type MockClientCommandsServer_WalletCreate_Call struct { + *mock.Call +} + +// WalletCreate is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcWalletCreateRequest +func (_e *MockClientCommandsServer_Expecter) WalletCreate(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_WalletCreate_Call { + return &MockClientCommandsServer_WalletCreate_Call{Call: _e.mock.On("WalletCreate", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_WalletCreate_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcWalletCreateRequest)) *MockClientCommandsServer_WalletCreate_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcWalletCreateRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_WalletCreate_Call) Return(_a0 *pb.RpcWalletCreateResponse) *MockClientCommandsServer_WalletCreate_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_WalletCreate_Call) RunAndReturn(run func(context.Context, *pb.RpcWalletCreateRequest) *pb.RpcWalletCreateResponse) *MockClientCommandsServer_WalletCreate_Call { + _c.Call.Return(run) + return _c +} + +// WalletCreateSession provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) WalletCreateSession(_a0 context.Context, _a1 *pb.RpcWalletCreateSessionRequest) *pb.RpcWalletCreateSessionResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for WalletCreateSession") + } + + var r0 *pb.RpcWalletCreateSessionResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcWalletCreateSessionRequest) *pb.RpcWalletCreateSessionResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcWalletCreateSessionResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_WalletCreateSession_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'WalletCreateSession' +type MockClientCommandsServer_WalletCreateSession_Call struct { + *mock.Call +} + +// WalletCreateSession is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcWalletCreateSessionRequest +func (_e *MockClientCommandsServer_Expecter) WalletCreateSession(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_WalletCreateSession_Call { + return &MockClientCommandsServer_WalletCreateSession_Call{Call: _e.mock.On("WalletCreateSession", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_WalletCreateSession_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcWalletCreateSessionRequest)) *MockClientCommandsServer_WalletCreateSession_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcWalletCreateSessionRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_WalletCreateSession_Call) Return(_a0 *pb.RpcWalletCreateSessionResponse) *MockClientCommandsServer_WalletCreateSession_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_WalletCreateSession_Call) RunAndReturn(run func(context.Context, *pb.RpcWalletCreateSessionRequest) *pb.RpcWalletCreateSessionResponse) *MockClientCommandsServer_WalletCreateSession_Call { + _c.Call.Return(run) + return _c +} + +// WalletRecover provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) WalletRecover(_a0 context.Context, _a1 *pb.RpcWalletRecoverRequest) *pb.RpcWalletRecoverResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for WalletRecover") + } + + var r0 *pb.RpcWalletRecoverResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcWalletRecoverRequest) *pb.RpcWalletRecoverResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcWalletRecoverResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_WalletRecover_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'WalletRecover' +type MockClientCommandsServer_WalletRecover_Call struct { + *mock.Call +} + +// WalletRecover is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcWalletRecoverRequest +func (_e *MockClientCommandsServer_Expecter) WalletRecover(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_WalletRecover_Call { + return &MockClientCommandsServer_WalletRecover_Call{Call: _e.mock.On("WalletRecover", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_WalletRecover_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcWalletRecoverRequest)) *MockClientCommandsServer_WalletRecover_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcWalletRecoverRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_WalletRecover_Call) Return(_a0 *pb.RpcWalletRecoverResponse) *MockClientCommandsServer_WalletRecover_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_WalletRecover_Call) RunAndReturn(run func(context.Context, *pb.RpcWalletRecoverRequest) *pb.RpcWalletRecoverResponse) *MockClientCommandsServer_WalletRecover_Call { + _c.Call.Return(run) + return _c +} + +// WorkspaceCreate provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) WorkspaceCreate(_a0 context.Context, _a1 *pb.RpcWorkspaceCreateRequest) *pb.RpcWorkspaceCreateResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for WorkspaceCreate") + } + + var r0 *pb.RpcWorkspaceCreateResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcWorkspaceCreateRequest) *pb.RpcWorkspaceCreateResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcWorkspaceCreateResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_WorkspaceCreate_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'WorkspaceCreate' +type MockClientCommandsServer_WorkspaceCreate_Call struct { + *mock.Call +} + +// WorkspaceCreate is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcWorkspaceCreateRequest +func (_e *MockClientCommandsServer_Expecter) WorkspaceCreate(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_WorkspaceCreate_Call { + return &MockClientCommandsServer_WorkspaceCreate_Call{Call: _e.mock.On("WorkspaceCreate", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_WorkspaceCreate_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcWorkspaceCreateRequest)) *MockClientCommandsServer_WorkspaceCreate_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcWorkspaceCreateRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_WorkspaceCreate_Call) Return(_a0 *pb.RpcWorkspaceCreateResponse) *MockClientCommandsServer_WorkspaceCreate_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_WorkspaceCreate_Call) RunAndReturn(run func(context.Context, *pb.RpcWorkspaceCreateRequest) *pb.RpcWorkspaceCreateResponse) *MockClientCommandsServer_WorkspaceCreate_Call { + _c.Call.Return(run) + return _c +} + +// WorkspaceExport provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) WorkspaceExport(_a0 context.Context, _a1 *pb.RpcWorkspaceExportRequest) *pb.RpcWorkspaceExportResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for WorkspaceExport") + } + + var r0 *pb.RpcWorkspaceExportResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcWorkspaceExportRequest) *pb.RpcWorkspaceExportResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcWorkspaceExportResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_WorkspaceExport_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'WorkspaceExport' +type MockClientCommandsServer_WorkspaceExport_Call struct { + *mock.Call +} + +// WorkspaceExport is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcWorkspaceExportRequest +func (_e *MockClientCommandsServer_Expecter) WorkspaceExport(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_WorkspaceExport_Call { + return &MockClientCommandsServer_WorkspaceExport_Call{Call: _e.mock.On("WorkspaceExport", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_WorkspaceExport_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcWorkspaceExportRequest)) *MockClientCommandsServer_WorkspaceExport_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcWorkspaceExportRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_WorkspaceExport_Call) Return(_a0 *pb.RpcWorkspaceExportResponse) *MockClientCommandsServer_WorkspaceExport_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_WorkspaceExport_Call) RunAndReturn(run func(context.Context, *pb.RpcWorkspaceExportRequest) *pb.RpcWorkspaceExportResponse) *MockClientCommandsServer_WorkspaceExport_Call { + _c.Call.Return(run) + return _c +} + +// WorkspaceGetAll provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) WorkspaceGetAll(_a0 context.Context, _a1 *pb.RpcWorkspaceGetAllRequest) *pb.RpcWorkspaceGetAllResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for WorkspaceGetAll") + } + + var r0 *pb.RpcWorkspaceGetAllResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcWorkspaceGetAllRequest) *pb.RpcWorkspaceGetAllResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcWorkspaceGetAllResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_WorkspaceGetAll_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'WorkspaceGetAll' +type MockClientCommandsServer_WorkspaceGetAll_Call struct { + *mock.Call +} + +// WorkspaceGetAll is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcWorkspaceGetAllRequest +func (_e *MockClientCommandsServer_Expecter) WorkspaceGetAll(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_WorkspaceGetAll_Call { + return &MockClientCommandsServer_WorkspaceGetAll_Call{Call: _e.mock.On("WorkspaceGetAll", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_WorkspaceGetAll_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcWorkspaceGetAllRequest)) *MockClientCommandsServer_WorkspaceGetAll_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcWorkspaceGetAllRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_WorkspaceGetAll_Call) Return(_a0 *pb.RpcWorkspaceGetAllResponse) *MockClientCommandsServer_WorkspaceGetAll_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_WorkspaceGetAll_Call) RunAndReturn(run func(context.Context, *pb.RpcWorkspaceGetAllRequest) *pb.RpcWorkspaceGetAllResponse) *MockClientCommandsServer_WorkspaceGetAll_Call { + _c.Call.Return(run) + return _c +} + +// WorkspaceGetCurrent provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) WorkspaceGetCurrent(_a0 context.Context, _a1 *pb.RpcWorkspaceGetCurrentRequest) *pb.RpcWorkspaceGetCurrentResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for WorkspaceGetCurrent") + } + + var r0 *pb.RpcWorkspaceGetCurrentResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcWorkspaceGetCurrentRequest) *pb.RpcWorkspaceGetCurrentResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcWorkspaceGetCurrentResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_WorkspaceGetCurrent_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'WorkspaceGetCurrent' +type MockClientCommandsServer_WorkspaceGetCurrent_Call struct { + *mock.Call +} + +// WorkspaceGetCurrent is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcWorkspaceGetCurrentRequest +func (_e *MockClientCommandsServer_Expecter) WorkspaceGetCurrent(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_WorkspaceGetCurrent_Call { + return &MockClientCommandsServer_WorkspaceGetCurrent_Call{Call: _e.mock.On("WorkspaceGetCurrent", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_WorkspaceGetCurrent_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcWorkspaceGetCurrentRequest)) *MockClientCommandsServer_WorkspaceGetCurrent_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcWorkspaceGetCurrentRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_WorkspaceGetCurrent_Call) Return(_a0 *pb.RpcWorkspaceGetCurrentResponse) *MockClientCommandsServer_WorkspaceGetCurrent_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_WorkspaceGetCurrent_Call) RunAndReturn(run func(context.Context, *pb.RpcWorkspaceGetCurrentRequest) *pb.RpcWorkspaceGetCurrentResponse) *MockClientCommandsServer_WorkspaceGetCurrent_Call { + _c.Call.Return(run) + return _c +} + +// WorkspaceObjectAdd provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) WorkspaceObjectAdd(_a0 context.Context, _a1 *pb.RpcWorkspaceObjectAddRequest) *pb.RpcWorkspaceObjectAddResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for WorkspaceObjectAdd") + } + + var r0 *pb.RpcWorkspaceObjectAddResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcWorkspaceObjectAddRequest) *pb.RpcWorkspaceObjectAddResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcWorkspaceObjectAddResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_WorkspaceObjectAdd_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'WorkspaceObjectAdd' +type MockClientCommandsServer_WorkspaceObjectAdd_Call struct { + *mock.Call +} + +// WorkspaceObjectAdd is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcWorkspaceObjectAddRequest +func (_e *MockClientCommandsServer_Expecter) WorkspaceObjectAdd(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_WorkspaceObjectAdd_Call { + return &MockClientCommandsServer_WorkspaceObjectAdd_Call{Call: _e.mock.On("WorkspaceObjectAdd", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_WorkspaceObjectAdd_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcWorkspaceObjectAddRequest)) *MockClientCommandsServer_WorkspaceObjectAdd_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcWorkspaceObjectAddRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_WorkspaceObjectAdd_Call) Return(_a0 *pb.RpcWorkspaceObjectAddResponse) *MockClientCommandsServer_WorkspaceObjectAdd_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_WorkspaceObjectAdd_Call) RunAndReturn(run func(context.Context, *pb.RpcWorkspaceObjectAddRequest) *pb.RpcWorkspaceObjectAddResponse) *MockClientCommandsServer_WorkspaceObjectAdd_Call { + _c.Call.Return(run) + return _c +} + +// WorkspaceObjectListAdd provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) WorkspaceObjectListAdd(_a0 context.Context, _a1 *pb.RpcWorkspaceObjectListAddRequest) *pb.RpcWorkspaceObjectListAddResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for WorkspaceObjectListAdd") + } + + var r0 *pb.RpcWorkspaceObjectListAddResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcWorkspaceObjectListAddRequest) *pb.RpcWorkspaceObjectListAddResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcWorkspaceObjectListAddResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_WorkspaceObjectListAdd_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'WorkspaceObjectListAdd' +type MockClientCommandsServer_WorkspaceObjectListAdd_Call struct { + *mock.Call +} + +// WorkspaceObjectListAdd is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcWorkspaceObjectListAddRequest +func (_e *MockClientCommandsServer_Expecter) WorkspaceObjectListAdd(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_WorkspaceObjectListAdd_Call { + return &MockClientCommandsServer_WorkspaceObjectListAdd_Call{Call: _e.mock.On("WorkspaceObjectListAdd", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_WorkspaceObjectListAdd_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcWorkspaceObjectListAddRequest)) *MockClientCommandsServer_WorkspaceObjectListAdd_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcWorkspaceObjectListAddRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_WorkspaceObjectListAdd_Call) Return(_a0 *pb.RpcWorkspaceObjectListAddResponse) *MockClientCommandsServer_WorkspaceObjectListAdd_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_WorkspaceObjectListAdd_Call) RunAndReturn(run func(context.Context, *pb.RpcWorkspaceObjectListAddRequest) *pb.RpcWorkspaceObjectListAddResponse) *MockClientCommandsServer_WorkspaceObjectListAdd_Call { + _c.Call.Return(run) + return _c +} + +// WorkspaceObjectListRemove provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) WorkspaceObjectListRemove(_a0 context.Context, _a1 *pb.RpcWorkspaceObjectListRemoveRequest) *pb.RpcWorkspaceObjectListRemoveResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for WorkspaceObjectListRemove") + } + + var r0 *pb.RpcWorkspaceObjectListRemoveResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcWorkspaceObjectListRemoveRequest) *pb.RpcWorkspaceObjectListRemoveResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcWorkspaceObjectListRemoveResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_WorkspaceObjectListRemove_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'WorkspaceObjectListRemove' +type MockClientCommandsServer_WorkspaceObjectListRemove_Call struct { + *mock.Call +} + +// WorkspaceObjectListRemove is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcWorkspaceObjectListRemoveRequest +func (_e *MockClientCommandsServer_Expecter) WorkspaceObjectListRemove(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_WorkspaceObjectListRemove_Call { + return &MockClientCommandsServer_WorkspaceObjectListRemove_Call{Call: _e.mock.On("WorkspaceObjectListRemove", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_WorkspaceObjectListRemove_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcWorkspaceObjectListRemoveRequest)) *MockClientCommandsServer_WorkspaceObjectListRemove_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcWorkspaceObjectListRemoveRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_WorkspaceObjectListRemove_Call) Return(_a0 *pb.RpcWorkspaceObjectListRemoveResponse) *MockClientCommandsServer_WorkspaceObjectListRemove_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_WorkspaceObjectListRemove_Call) RunAndReturn(run func(context.Context, *pb.RpcWorkspaceObjectListRemoveRequest) *pb.RpcWorkspaceObjectListRemoveResponse) *MockClientCommandsServer_WorkspaceObjectListRemove_Call { + _c.Call.Return(run) + return _c +} + +// WorkspaceOpen provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) WorkspaceOpen(_a0 context.Context, _a1 *pb.RpcWorkspaceOpenRequest) *pb.RpcWorkspaceOpenResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for WorkspaceOpen") + } + + var r0 *pb.RpcWorkspaceOpenResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcWorkspaceOpenRequest) *pb.RpcWorkspaceOpenResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcWorkspaceOpenResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_WorkspaceOpen_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'WorkspaceOpen' +type MockClientCommandsServer_WorkspaceOpen_Call struct { + *mock.Call +} + +// WorkspaceOpen is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcWorkspaceOpenRequest +func (_e *MockClientCommandsServer_Expecter) WorkspaceOpen(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_WorkspaceOpen_Call { + return &MockClientCommandsServer_WorkspaceOpen_Call{Call: _e.mock.On("WorkspaceOpen", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_WorkspaceOpen_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcWorkspaceOpenRequest)) *MockClientCommandsServer_WorkspaceOpen_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcWorkspaceOpenRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_WorkspaceOpen_Call) Return(_a0 *pb.RpcWorkspaceOpenResponse) *MockClientCommandsServer_WorkspaceOpen_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_WorkspaceOpen_Call) RunAndReturn(run func(context.Context, *pb.RpcWorkspaceOpenRequest) *pb.RpcWorkspaceOpenResponse) *MockClientCommandsServer_WorkspaceOpen_Call { + _c.Call.Return(run) + return _c +} + +// WorkspaceSelect provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) WorkspaceSelect(_a0 context.Context, _a1 *pb.RpcWorkspaceSelectRequest) *pb.RpcWorkspaceSelectResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for WorkspaceSelect") + } + + var r0 *pb.RpcWorkspaceSelectResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcWorkspaceSelectRequest) *pb.RpcWorkspaceSelectResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcWorkspaceSelectResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_WorkspaceSelect_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'WorkspaceSelect' +type MockClientCommandsServer_WorkspaceSelect_Call struct { + *mock.Call +} + +// WorkspaceSelect is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcWorkspaceSelectRequest +func (_e *MockClientCommandsServer_Expecter) WorkspaceSelect(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_WorkspaceSelect_Call { + return &MockClientCommandsServer_WorkspaceSelect_Call{Call: _e.mock.On("WorkspaceSelect", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_WorkspaceSelect_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcWorkspaceSelectRequest)) *MockClientCommandsServer_WorkspaceSelect_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcWorkspaceSelectRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_WorkspaceSelect_Call) Return(_a0 *pb.RpcWorkspaceSelectResponse) *MockClientCommandsServer_WorkspaceSelect_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_WorkspaceSelect_Call) RunAndReturn(run func(context.Context, *pb.RpcWorkspaceSelectRequest) *pb.RpcWorkspaceSelectResponse) *MockClientCommandsServer_WorkspaceSelect_Call { + _c.Call.Return(run) + return _c +} + +// WorkspaceSetInfo provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) WorkspaceSetInfo(_a0 context.Context, _a1 *pb.RpcWorkspaceSetInfoRequest) *pb.RpcWorkspaceSetInfoResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for WorkspaceSetInfo") + } + + var r0 *pb.RpcWorkspaceSetInfoResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcWorkspaceSetInfoRequest) *pb.RpcWorkspaceSetInfoResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcWorkspaceSetInfoResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_WorkspaceSetInfo_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'WorkspaceSetInfo' +type MockClientCommandsServer_WorkspaceSetInfo_Call struct { + *mock.Call +} + +// WorkspaceSetInfo is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcWorkspaceSetInfoRequest +func (_e *MockClientCommandsServer_Expecter) WorkspaceSetInfo(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_WorkspaceSetInfo_Call { + return &MockClientCommandsServer_WorkspaceSetInfo_Call{Call: _e.mock.On("WorkspaceSetInfo", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_WorkspaceSetInfo_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcWorkspaceSetInfoRequest)) *MockClientCommandsServer_WorkspaceSetInfo_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcWorkspaceSetInfoRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_WorkspaceSetInfo_Call) Return(_a0 *pb.RpcWorkspaceSetInfoResponse) *MockClientCommandsServer_WorkspaceSetInfo_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_WorkspaceSetInfo_Call) RunAndReturn(run func(context.Context, *pb.RpcWorkspaceSetInfoRequest) *pb.RpcWorkspaceSetInfoResponse) *MockClientCommandsServer_WorkspaceSetInfo_Call { + _c.Call.Return(run) + return _c +} + +// NewMockClientCommandsServer creates a new instance of MockClientCommandsServer. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func NewMockClientCommandsServer(t interface { + mock.TestingT + Cleanup(func()) +}) *MockClientCommandsServer { + mock := &MockClientCommandsServer{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} From 7a963e8281dd6a3b5e5040291c8648140dd31d20 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Thu, 19 Dec 2024 12:52:56 +0100 Subject: [PATCH 054/279] GO-4459 Add keys to all ObjectSearchRequests --- cmd/api/handlers.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/cmd/api/handlers.go b/cmd/api/handlers.go index 7e4821444..688925fd9 100644 --- a/cmd/api/handlers.go +++ b/cmd/api/handlers.go @@ -127,6 +127,7 @@ func (a *ApiServer) getSpacesHandler(c *gin.Context) { Type: model.BlockContentDataviewSort_Asc, }, }, + Keys: []string{"targetSpaceId", "name", "iconEmoji", "iconImage"}, Offset: int32(offset), Limit: int32(limit), }) @@ -245,6 +246,7 @@ func (a *ApiServer) getSpaceMembersHandler(c *gin.Context) { Type: model.BlockContentDataviewSort_Asc, }, }, + Keys: []string{"id", "name", "iconEmoji", "iconImage", "identity", "globalName", "participantPermissions"}, Offset: int32(offset), Limit: int32(limit), }) @@ -541,6 +543,7 @@ func (a *ApiServer) getObjectTypesHandler(c *gin.Context) { Type: model.BlockContentDataviewSort_Asc, }, }, + Keys: []string{"id", "uniqueKey", "name", "iconEmoji"}, Offset: int32(offset), Limit: int32(limit), }) @@ -600,6 +603,7 @@ func (a *ApiServer) getObjectTypeTemplatesHandler(c *gin.Context) { Value: pbtypes.String("ot-template"), }, }, + Keys: []string{"id"}, }) if templateTypeIdResp.Error.Code != pb.RpcObjectSearchResponseError_NULL { @@ -624,6 +628,7 @@ func (a *ApiServer) getObjectTypeTemplatesHandler(c *gin.Context) { Value: pbtypes.String(templateTypeId), }, }, + Keys: []string{"id", "targetObjectType", "name", "iconEmoji"}, Offset: int32(offset), Limit: int32(limit), }) @@ -709,6 +714,7 @@ func (a *ApiServer) getObjectsHandler(c *gin.Context) { Value: pbtypes.Int64(int64(model.SpaceStatus_Ok)), }, }, + Keys: []string{"targetSpaceId"}, }) if spaceResp.Error.Code != pb.RpcObjectSearchResponseError_NULL { From f032f71931c2c898204bd8b22e3ae44fb9a53b2a Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Thu, 19 Dec 2024 12:53:44 +0100 Subject: [PATCH 055/279] GO-4459 Fixes --- cmd/api/demo/api_demo.go | 9 +++++---- cmd/api/schemas.go | 4 ++-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/cmd/api/demo/api_demo.go b/cmd/api/demo/api_demo.go index 9dfda9e41..0f319acae 100644 --- a/cmd/api/demo/api_demo.go +++ b/cmd/api/demo/api_demo.go @@ -14,7 +14,8 @@ import ( const ( baseURL = "http://localhost:31009/v1" - // testSpaceId = "bafyreifymx5ucm3fdc7vupfg7wakdo5qelni3jvlmawlnvjcppurn2b3di.2lcu0r85yg10d" // dev (entry space) + // testSpaceId = "bafyreifymx5ucm3fdc7vupfg7wakdo5qelni3jvlmawlnvjcppurn2b3di.2lcu0r85yg10d" // dev (entry space) + testSpaceId = "bafyreiezhzb4ggnhjwejmh67pd5grilk6jn3jt7y2rnfpbkjwekilreola.1t123w9f2lgn5" // LFLC // testSpaceId = "bafyreiakofsfkgb7psju346cir2hit5hinhywaybi6vhp7hx4jw7hkngje.scoxzd7vu6rz" // HPI // testObjectId = "bafyreidhtlbbspxecab6xf4pi5zyxcmvwy6lqzursbjouq5fxovh6y3xwu" // "Work Faster with Templates" // testTypeId = "bafyreie3djy4mcldt3hgeet6bnjay2iajdyi2fvx556n6wcxii7brlni3i" // Page (in dev space) @@ -55,7 +56,7 @@ func main() { // spaces // {"POST", "/spaces", nil, map[string]interface{}{"name": "New Space"}}, // {"GET", "/spaces?limit={limit}&offset={offset}", map[string]interface{}{"limit": 100, "offset": 0}, nil}, - // {"GET", "/spaces/{space_id}/members?limit={limit}&offset={offset}", map[string]interface{}{"space_id": testSpaceId}, nil}, + // {"GET", "/spaces/{space_id}/members?limit={limit}&offset={offset}", map[string]interface{}{"space_id": testSpaceId, "limit": 100, "offset": 0}, nil}, // space_objects // {"GET", "/spaces/{space_id}/objects?limit={limit}&offset={offset}", map[string]interface{}{"space_id": testSpaceId, "limit": 100, "offset": 0}, nil}, @@ -65,13 +66,13 @@ func main() { // types_and_templates // {"GET", "/spaces/{space_id}/objectTypes?limit={limit}&offset={offset}", map[string]interface{}{"space_id": testSpaceId, "limit": 100, "offset": 0}, nil}, - // {"GET", "/spaces/{space_id}/objectTypes/{type_id}/templates?limit={limit}&offset={offset}", map[string]interface{}{"space_id": testSpaceId, "type_id": testTypeId}, nil}, + // {"GET", "/spaces/{space_id}/objectTypes/{type_id}/templates?limit={limit}&offset={offset}", map[string]interface{}{"space_id": testSpaceId, "type_id": testTypeId, "limit": 100, "offset": 0}, nil}, // search // {"GET", "/objects?search={search}&object_type={object_type}&limit={limit}&offset={offset}", map[string]interface{}{"search": "writing", "object_type": testTypeId, "limit": 100, "offset": 0}, nil}, // chat - {"GET", "/spaces/{space_id}/chat/messages?limit={limit}&offset={offset}", map[string]interface{}{"space_id": chatSpaceId, "limit": 100, "offset": 0}, nil}, + // {"GET", "/spaces/{space_id}/chat/messages?limit={limit}&offset={offset}", map[string]interface{}{"space_id": chatSpaceId, "limit": 100, "offset": 0}, nil}, // {"POST", "/spaces/{space_id}/chat/messages", map[string]interface{}{"space_id": chatSpaceId}, map[string]interface{}{"text": "new message from demo"}}, } diff --git a/cmd/api/schemas.go b/cmd/api/schemas.go index 9ad0af17f..2ef084315 100644 --- a/cmd/api/schemas.go +++ b/cmd/api/schemas.go @@ -4,7 +4,7 @@ type Space struct { Type string `json:"type" example:"space"` Id string `json:"id" example:"bafyreigyfkt6rbv24sbv5aq2hko3bhmv5xxlf22b4bypdu6j7hnphm3psq.23me69r569oi1"` Name string `json:"name" example:"Space Name"` - Icon string `json:"icon" example:"data:image/png;base64, "` + Icon string `json:"icon" example:"http://127.0.0.1:31006/image/bafybeieptz5hvcy6txplcvphjbbh5yjc2zqhmihs3owkh5oab4ezauzqay?width=100"` HomeObjectId string `json:"home_object_id" example:"bafyreie4qcl3wczb4cw5hrfyycikhjyh6oljdis3ewqrk5boaav3sbwqya"` ArchiveObjectId string `json:"archive_object_id" example:"bafyreialsgoyflf3etjm3parzurivyaukzivwortf32b4twnlwpwocsrri"` ProfileObjectId string `json:"profile_object_id" example:"bafyreiaxhwreshjqwndpwtdsu4mtihaqhhmlygqnyqpfyfwlqfq3rm3gw4"` @@ -23,7 +23,7 @@ type SpaceMember struct { Type string `json:"type" example:"space_member"` Id string `json:"id" example:"_participant_bafyreigyfkt6rbv24sbv5aq2hko1bhmv5xxlf22b4bypdu6j7hnphm3psq_23me69r569oi1_AAjEaEwPF4nkEh9AWkqEnzcQ8HziBB4ETjiTpvRCQvWnSMDZ"` Name string `json:"name" example:"John Doe"` - Icon string `json:"icon" example:"data:image/png;base64, "` + Icon string `json:"icon" example:"http://127.0.0.1:31006/image/bafybeieptz5hvcy6txplcvphjbbh5yjc2zqhmihs3owkh5oab4ezauzqay?width=100"` Identity string `json:"identity" example:"AAjEaEwPF4nkEh7AWkqEnzcQ8HziGB4ETjiTpvRCQvWnSMDZ"` GlobalName string `json:"global_name" example:"john.any"` Role string `json:"role" enum:"Reader,Writer,Owner,NoPermission" example:"Owner"` From d56cf2fce3c9f1b025f65b319a7999fdf8364a89 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Thu, 19 Dec 2024 13:32:00 +0100 Subject: [PATCH 056/279] GO-4459 Increase unit test coverage --- cmd/api/handlers_test.go | 557 ++++++++++++++++++++++++++++++++++++++- cmd/api/main.go | 2 +- 2 files changed, 552 insertions(+), 7 deletions(-) diff --git a/cmd/api/handlers_test.go b/cmd/api/handlers_test.go index 6271e5a43..873ec9c9b 100644 --- a/cmd/api/handlers_test.go +++ b/cmd/api/handlers_test.go @@ -3,16 +3,22 @@ package api import ( "net/http" "net/http/httptest" + "strings" "testing" "github.com/gin-gonic/gin" + "github.com/webstradev/gin-pagination/v2/pkg/pagination" "github.com/stretchr/testify/mock" "github.com/stretchr/testify/require" + "github.com/gogo/protobuf/types" + "github.com/anyproto/anytype-heart/core/mock_core" "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/pb/service/mock_service" + "github.com/anyproto/anytype-heart/pkg/lib/pb/model" + "github.com/anyproto/anytype-heart/util/pbtypes" ) type fixture struct { @@ -27,8 +33,37 @@ func newFixture(t *testing.T) *fixture { mwInternal := mock_core.NewMockMiddlewareInternal(t) apiServer := &ApiServer{mw: mw, mwInternal: mwInternal, router: gin.Default()} - apiServer.router.POST("/auth/displayCode", apiServer.authDisplayCodeHandler) - apiServer.router.GET("/auth/token", apiServer.authTokenHandler) + paginator := pagination.New( + pagination.WithPageText("offset"), + pagination.WithSizeText("limit"), + pagination.WithDefaultPage(0), + pagination.WithDefaultPageSize(100), + pagination.WithMinPageSize(1), + pagination.WithMaxPageSize(1000), + ) + + auth := apiServer.router.Group("/v1/auth") + { + auth.POST("/displayCode", apiServer.authDisplayCodeHandler) + auth.GET("/token", apiServer.authTokenHandler) + } + readOnly := apiServer.router.Group("/v1") + { + readOnly.GET("/spaces", paginator, apiServer.getSpacesHandler) + readOnly.GET("/spaces/:space_id/members", paginator, apiServer.getSpaceMembersHandler) + readOnly.GET("/spaces/:space_id/objects", paginator, apiServer.getObjectsForSpaceHandler) + readOnly.GET("/spaces/:space_id/objects/:object_id", apiServer.getObjectHandler) + readOnly.GET("/spaces/:space_id/objectTypes", paginator, apiServer.getObjectTypesHandler) + readOnly.GET("/spaces/:space_id/objectTypes/:typeId/templates", paginator, apiServer.getObjectTypeTemplatesHandler) + readOnly.GET("/objects", paginator, apiServer.getObjectsHandler) + } + + readWrite := apiServer.router.Group("/v1") + { + readWrite.POST("/spaces", apiServer.createSpaceHandler) + readWrite.POST("/spaces/:space_id/objects", apiServer.createObjectHandler) + readWrite.PUT("/spaces/:space_id/objects/:object_id", apiServer.updateObjectHandler) + } return &fixture{ ApiServer: apiServer, @@ -48,7 +83,7 @@ func TestApiServer_AuthDisplayCodeHandler(t *testing.T) { Error: &pb.RpcAccountLocalLinkNewChallengeResponseError{Code: pb.RpcAccountLocalLinkNewChallengeResponseError_NULL}, }).Once() - req, _ := http.NewRequest("POST", "/auth/displayCode", nil) + req, _ := http.NewRequest("POST", "/v1/auth/displayCode", nil) w := httptest.NewRecorder() fx.router.ServeHTTP(w, req) @@ -65,7 +100,7 @@ func TestApiServer_AuthDisplayCodeHandler(t *testing.T) { Error: &pb.RpcAccountLocalLinkNewChallengeResponseError{Code: pb.RpcAccountLocalLinkNewChallengeResponseError_UNKNOWN_ERROR}, }).Once() - req, _ := http.NewRequest("POST", "/auth/displayCode", nil) + req, _ := http.NewRequest("POST", "/v1/auth/displayCode", nil) w := httptest.NewRecorder() fx.router.ServeHTTP(w, req) @@ -90,7 +125,7 @@ func TestApiServer_AuthTokenHandler(t *testing.T) { Error: &pb.RpcAccountLocalLinkSolveChallengeResponseError{Code: pb.RpcAccountLocalLinkSolveChallengeResponseError_NULL}, }).Once() - req, _ := http.NewRequest("GET", "/auth/token?challengeId="+challengeId+"&code="+code, nil) + req, _ := http.NewRequest("GET", "/v1/auth/token?challengeId="+challengeId+"&code="+code, nil) w := httptest.NewRecorder() fx.router.ServeHTTP(w, req) @@ -112,10 +147,520 @@ func TestApiServer_AuthTokenHandler(t *testing.T) { Error: &pb.RpcAccountLocalLinkSolveChallengeResponseError{Code: pb.RpcAccountLocalLinkSolveChallengeResponseError_UNKNOWN_ERROR}, }).Once() - req, _ := http.NewRequest("GET", "/auth/token?challengeId="+challengeId+"&code="+code, nil) + req, _ := http.NewRequest("GET", "/v1/auth/token?challengeId="+challengeId+"&code="+code, nil) w := httptest.NewRecorder() fx.router.ServeHTTP(w, req) require.Equal(t, http.StatusInternalServerError, w.Code) }) } + +func TestApiServer_GetSpacesHandler(t *testing.T) { + t.Run("successful retrieval of spaces", func(t *testing.T) { + fx := newFixture(t) + fx.accountInfo = &model.AccountInfo{TechSpaceId: "tech-space-id"} + + fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything).Return(&pb.RpcObjectSearchResponse{ + Records: []*types.Struct{ + { + Fields: map[string]*types.Value{ + "name": pbtypes.String("My Workspace"), + "targetSpaceId": pbtypes.String("my-space-id"), + "iconEmoji": pbtypes.String("🚀"), + "iconImage": pbtypes.String(""), + }, + }, + { + Fields: map[string]*types.Value{ + "name": pbtypes.String("Another Workspace"), + "targetSpaceId": pbtypes.String("another-space-id"), + "iconEmoji": pbtypes.String(""), + "iconImage": pbtypes.String("bafyreialsgoyflf3etjm3parzurivyaukzivwortf32b4twnlwpwocsrri"), + }, + }, + }, + Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, + }).Once() + + fx.mwMock.On("WorkspaceOpen", mock.Anything, mock.Anything).Return(&pb.RpcWorkspaceOpenResponse{ + Error: &pb.RpcWorkspaceOpenResponseError{Code: pb.RpcWorkspaceOpenResponseError_NULL}, + Info: &model.AccountInfo{ + HomeObjectId: "home-object-id", + ArchiveObjectId: "archive-object-id", + ProfileObjectId: "profile-object-id", + MarketplaceWorkspaceId: "marketplace-workspace-id", + WorkspaceObjectId: "workspace-object-id", + DeviceId: "device-id", + AccountSpaceId: "account-space-id", + WidgetsId: "widgets-id", + SpaceViewId: "space-view-id", + TechSpaceId: "tech-space-id", + GatewayUrl: "gateway-url", + LocalStoragePath: "local-storage-path", + TimeZone: "time-zone", + AnalyticsId: "analytics-id", + NetworkId: "network-id", + }, + }, nil).Twice() + + req, _ := http.NewRequest("GET", "/v1/spaces", nil) + w := httptest.NewRecorder() + fx.router.ServeHTTP(w, req) + + require.Equal(t, http.StatusOK, w.Code) + require.Contains(t, w.Body.String(), "My Workspace") + require.Contains(t, w.Body.String(), "Another Workspace") + }) + + t.Run("no spaces found", func(t *testing.T) { + fx := newFixture(t) + fx.accountInfo = &model.AccountInfo{TechSpaceId: "tech-space-id"} + + fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything). + Return(&pb.RpcObjectSearchResponse{ + Records: []*types.Struct{}, + Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, + }).Once() + + req, _ := http.NewRequest("GET", "/v1/spaces", nil) + w := httptest.NewRecorder() + fx.router.ServeHTTP(w, req) + + require.Equal(t, http.StatusNotFound, w.Code) + }) +} + +func TestApiServer_CreateSpaceHandler(t *testing.T) { + t.Run("successful create space", func(t *testing.T) { + fx := newFixture(t) + fx.mwMock.On("WorkspaceCreate", mock.Anything, mock.Anything). + Return(&pb.RpcWorkspaceCreateResponse{ + Error: &pb.RpcWorkspaceCreateResponseError{Code: pb.RpcWorkspaceCreateResponseError_NULL}, + SpaceId: "new-space-id", + }).Once() + + body := strings.NewReader(`{"name":"New Space"}`) + req, _ := http.NewRequest("POST", "/v1/spaces", body) + w := httptest.NewRecorder() + fx.router.ServeHTTP(w, req) + + require.Equal(t, http.StatusOK, w.Code) + require.Contains(t, w.Body.String(), "new-space-id") + }) + + t.Run("invalid JSON", func(t *testing.T) { + fx := newFixture(t) + + body := strings.NewReader(`{invalid json}`) + req, _ := http.NewRequest("POST", "/v1/spaces", body) + w := httptest.NewRecorder() + fx.router.ServeHTTP(w, req) + + require.Equal(t, http.StatusBadRequest, w.Code) + }) + + t.Run("failed workspace creation", func(t *testing.T) { + fx := newFixture(t) + fx.mwMock.On("WorkspaceCreate", mock.Anything, mock.Anything). + Return(&pb.RpcWorkspaceCreateResponse{ + Error: &pb.RpcWorkspaceCreateResponseError{Code: pb.RpcWorkspaceCreateResponseError_UNKNOWN_ERROR}, + }).Once() + + body := strings.NewReader(`{"name":"Fail Space"}`) + req, _ := http.NewRequest("POST", "/v1/spaces", body) + w := httptest.NewRecorder() + fx.router.ServeHTTP(w, req) + + require.Equal(t, http.StatusInternalServerError, w.Code) + }) +} + +func TestApiServer_GetSpaceMembersHandler(t *testing.T) { + t.Run("successfully get space members", func(t *testing.T) { + fx := newFixture(t) + + fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything). + Return(&pb.RpcObjectSearchResponse{ + Records: []*types.Struct{ + { + Fields: map[string]*types.Value{ + "id": pbtypes.String("member-1"), + "name": pbtypes.String("John Doe"), + "iconEmoji": pbtypes.String("👤"), + }, + }, + }, + Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, + }).Once() + + req, _ := http.NewRequest("GET", "/v1/spaces/my-space/members", nil) + w := httptest.NewRecorder() + fx.router.ServeHTTP(w, req) + + require.Equal(t, http.StatusOK, w.Code) + require.Contains(t, w.Body.String(), "John Doe") + }) + + t.Run("no members found", func(t *testing.T) { + fx := newFixture(t) + + fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything). + Return(&pb.RpcObjectSearchResponse{ + Records: []*types.Struct{}, + Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, + }).Once() + + req, _ := http.NewRequest("GET", "/v1/spaces/empty-space/members", nil) + w := httptest.NewRecorder() + fx.router.ServeHTTP(w, req) + + require.Equal(t, http.StatusNotFound, w.Code) + }) +} + +func TestApiServer_GetObjectsForSpaceHandler(t *testing.T) { + t.Run("successfully get objects for a space", func(t *testing.T) { + fx := newFixture(t) + + fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything). + Return(&pb.RpcObjectSearchResponse{ + Records: []*types.Struct{ + { + Fields: map[string]*types.Value{ + "id": pbtypes.String("object-1"), + "name": pbtypes.String("My Object"), + "type": pbtypes.String("basic-type-id"), + "layout": pbtypes.Float64(float64(model.ObjectType_basic)), + "iconEmoji": pbtypes.String("📄"), + "lastModifiedDate": pbtypes.Float64(1234567890), + }, + }, + }, + Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, + }).Twice() + + // Mock type resolution + fx.mwMock.On("ObjectShow", mock.Anything, mock.Anything).Return(&pb.RpcObjectShowResponse{ + Error: &pb.RpcObjectShowResponseError{Code: pb.RpcObjectShowResponseError_NULL}, + ObjectView: &model.ObjectView{ + Details: []*model.ObjectViewDetailsSet{ + { + Details: &types.Struct{ + Fields: map[string]*types.Value{ + "name": pbtypes.String("Basic Type"), + }, + }, + }, + }, + }, + }, nil).Maybe() + + req, _ := http.NewRequest("GET", "/v1/spaces/my-space/objects", nil) + w := httptest.NewRecorder() + fx.router.ServeHTTP(w, req) + + require.Equal(t, http.StatusOK, w.Code) + require.Contains(t, w.Body.String(), "My Object") + }) + + t.Run("no objects found", func(t *testing.T) { + fx := newFixture(t) + + fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything). + Return(&pb.RpcObjectSearchResponse{ + Records: []*types.Struct{}, + Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, + }).Once() + + req, _ := http.NewRequest("GET", "/v1/spaces/empty-space/objects", nil) + w := httptest.NewRecorder() + fx.router.ServeHTTP(w, req) + + require.Equal(t, http.StatusNotFound, w.Code) + }) +} + +func TestApiServer_GetObjectHandler(t *testing.T) { + t.Run("object found", func(t *testing.T) { + fx := newFixture(t) + + fx.mwMock.On("ObjectShow", mock.Anything, &pb.RpcObjectShowRequest{ + SpaceId: "my-space", + ObjectId: "obj-1", + }).Return(&pb.RpcObjectShowResponse{ + Error: &pb.RpcObjectShowResponseError{Code: pb.RpcObjectShowResponseError_NULL}, + ObjectView: &model.ObjectView{ + RootId: "root-1", + Details: []*model.ObjectViewDetailsSet{ + { + Details: &types.Struct{ + Fields: map[string]*types.Value{ + "name": pbtypes.String("Found Object"), + "type": pbtypes.String("basic-type-id"), + "iconEmoji": pbtypes.String("ðŸ”"), + }, + }, + }, + }, + }, + }, nil).Once() + + // Type resolution mock + fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything).Return(&pb.RpcObjectSearchResponse{ + Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, + Records: []*types.Struct{ + { + Fields: map[string]*types.Value{ + "name": pbtypes.String("Basic Type"), + }, + }, + }, + }, nil).Once() + + req, _ := http.NewRequest("GET", "/v1/spaces/my-space/objects/obj-1", nil) + w := httptest.NewRecorder() + fx.router.ServeHTTP(w, req) + + require.Equal(t, http.StatusOK, w.Code) + require.Contains(t, w.Body.String(), "Found Object") + }) + + t.Run("object not found", func(t *testing.T) { + fx := newFixture(t) + + fx.mwMock.On("ObjectShow", mock.Anything, mock.Anything). + Return(&pb.RpcObjectShowResponse{ + Error: &pb.RpcObjectShowResponseError{Code: pb.RpcObjectShowResponseError_NOT_FOUND}, + }, nil).Once() + + req, _ := http.NewRequest("GET", "/v1/spaces/my-space/objects/missing-obj", nil) + w := httptest.NewRecorder() + fx.router.ServeHTTP(w, req) + + require.Equal(t, http.StatusNotFound, w.Code) + }) +} + +func TestApiServer_CreateObjectHandler(t *testing.T) { + t.Run("successful object creation", func(t *testing.T) { + fx := newFixture(t) + + fx.mwMock.On("ObjectCreate", mock.Anything, mock.Anything). + Return(&pb.RpcObjectCreateResponse{ + Error: &pb.RpcObjectCreateResponseError{Code: pb.RpcObjectCreateResponseError_NULL}, + ObjectId: "new-obj-id", + Details: &types.Struct{ + Fields: map[string]*types.Value{ + "name": pbtypes.String("New Object"), + "iconEmoji": pbtypes.String("🆕"), + "spaceId": pbtypes.String("my-space"), + }, + }, + }).Once() + + body := strings.NewReader(`{"name":"New Object","icon":"🆕","template_id":"","object_type_unique_key":"basic","with_chat":false}`) + req, _ := http.NewRequest("POST", "/v1/spaces/my-space/objects", body) + w := httptest.NewRecorder() + fx.router.ServeHTTP(w, req) + + require.Equal(t, http.StatusOK, w.Code) + require.Contains(t, w.Body.String(), "new-obj-id") + }) + + t.Run("invalid JSON", func(t *testing.T) { + fx := newFixture(t) + + body := strings.NewReader(`{invalid json}`) + req, _ := http.NewRequest("POST", "/v1/spaces/my-space/objects", body) + w := httptest.NewRecorder() + fx.router.ServeHTTP(w, req) + + require.Equal(t, http.StatusBadRequest, w.Code) + }) + + t.Run("creation error", func(t *testing.T) { + fx := newFixture(t) + + fx.mwMock.On("ObjectCreate", mock.Anything, mock.Anything). + Return(&pb.RpcObjectCreateResponse{ + Error: &pb.RpcObjectCreateResponseError{Code: pb.RpcObjectCreateResponseError_UNKNOWN_ERROR}, + }).Once() + + body := strings.NewReader(`{"name":"Fail Object"}`) + req, _ := http.NewRequest("POST", "/v1/spaces/my-space/objects", body) + w := httptest.NewRecorder() + fx.router.ServeHTTP(w, req) + + require.Equal(t, http.StatusInternalServerError, w.Code) + }) +} + +func TestApiServer_UpdateObjectHandler(t *testing.T) { + fx := newFixture(t) + + body := strings.NewReader(`{"name":"Updated Object"}`) + req, _ := http.NewRequest("PUT", "/v1/spaces/my-space/objects/obj-1", body) + w := httptest.NewRecorder() + fx.router.ServeHTTP(w, req) + + require.Equal(t, http.StatusNotImplemented, w.Code) +} + +func TestApiServer_GetObjectTypesHandler(t *testing.T) { + t.Run("types found", func(t *testing.T) { + fx := newFixture(t) + + fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything). + Return(&pb.RpcObjectSearchResponse{ + Records: []*types.Struct{ + { + Fields: map[string]*types.Value{ + "id": pbtypes.String("type-1"), + "name": pbtypes.String("Type One"), + "uniqueKey": pbtypes.String("type-one-key"), + "iconEmoji": pbtypes.String("🗂ï¸"), + }, + }, + }, + Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, + }).Once() + + req, _ := http.NewRequest("GET", "/v1/spaces/my-space/objectTypes", nil) + w := httptest.NewRecorder() + fx.router.ServeHTTP(w, req) + + require.Equal(t, http.StatusOK, w.Code) + require.Contains(t, w.Body.String(), "Type One") + }) + + t.Run("no types found", func(t *testing.T) { + fx := newFixture(t) + + fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything). + Return(&pb.RpcObjectSearchResponse{ + Records: []*types.Struct{}, + Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, + }).Once() + + req, _ := http.NewRequest("GET", "/v1/spaces/my-space/objectTypes", nil) + w := httptest.NewRecorder() + fx.router.ServeHTTP(w, req) + + require.Equal(t, http.StatusNotFound, w.Code) + }) +} + +func TestApiServer_GetObjectTypeTemplatesHandler(t *testing.T) { + t.Run("templates found", func(t *testing.T) { + fx := newFixture(t) + + // Mock template type search + fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything).Return(&pb.RpcObjectSearchResponse{ + Records: []*types.Struct{ + { + Fields: map[string]*types.Value{ + "id": pbtypes.String("template-type-id"), + "uniqueKey": pbtypes.String("ot-template"), + }, + }, + }, + Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, + }).Once() + + // Mock actual template objects search + fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything).Return(&pb.RpcObjectSearchResponse{ + Records: []*types.Struct{ + { + Fields: map[string]*types.Value{ + "id": pbtypes.String("template-1"), + "targetObjectType": pbtypes.String("target-type-id"), + }, + }, + }, + Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, + }).Once() + + // Mock template show + fx.mwMock.On("ObjectShow", mock.Anything, mock.Anything).Return(&pb.RpcObjectShowResponse{ + Error: &pb.RpcObjectShowResponseError{Code: pb.RpcObjectShowResponseError_NULL}, + ObjectView: &model.ObjectView{ + Details: []*model.ObjectViewDetailsSet{ + { + Details: &types.Struct{ + Fields: map[string]*types.Value{ + "name": pbtypes.String("Template Name"), + "iconEmoji": pbtypes.String("ðŸ“"), + }, + }, + }, + }, + }, + }, nil).Once() + + req, _ := http.NewRequest("GET", "/v1/spaces/my-space/objectTypes/target-type-id/templates", nil) + w := httptest.NewRecorder() + fx.router.ServeHTTP(w, req) + + require.Equal(t, http.StatusOK, w.Code) + require.Contains(t, w.Body.String(), "Template Name") + }) + + t.Run("no template type found", func(t *testing.T) { + fx := newFixture(t) + + fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything). + Return(&pb.RpcObjectSearchResponse{ + Records: []*types.Struct{}, + Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, + }).Once() + + req, _ := http.NewRequest("GET", "/v1/spaces/my-space/objectTypes/missing-type-id/templates", nil) + w := httptest.NewRecorder() + fx.router.ServeHTTP(w, req) + + require.Equal(t, http.StatusNotFound, w.Code) + }) +} + +func TestApiServer_GetObjectsHandler(t *testing.T) { + t.Run("objects found globally", func(t *testing.T) { + fx := newFixture(t) + + // Mock retrieving spaces first + fx.accountInfo = &model.AccountInfo{TechSpaceId: "tech-space-id"} + fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything).Return(&pb.RpcObjectSearchResponse{ + Records: []*types.Struct{ + { + Fields: map[string]*types.Value{ + "targetSpaceId": pbtypes.String("space-1"), + }, + }, + }, + Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, + }).Twice() + + // Mock objects in space-1 + fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything).Return(&pb.RpcObjectSearchResponse{ + Records: []*types.Struct{ + { + Fields: map[string]*types.Value{ + "id": pbtypes.String("obj-global-1"), + "name": pbtypes.String("Global Object"), + "type": pbtypes.String("global-type-id"), + "layout": pbtypes.Float64(float64(model.ObjectType_basic)), + "iconEmoji": pbtypes.String("ðŸŒ"), + "lastModifiedDate": pbtypes.Float64(999999), + }, + }, + }, + Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, + }).Once() + + req, _ := http.NewRequest("GET", "/v1/objects", nil) + w := httptest.NewRecorder() + fx.router.ServeHTTP(w, req) + + require.Equal(t, http.StatusOK, w.Code) + require.Contains(t, w.Body.String(), "Global Object") + }) +} diff --git a/cmd/api/main.go b/cmd/api/main.go index 9c60fba22..8d7e5c940 100644 --- a/cmd/api/main.go +++ b/cmd/api/main.go @@ -115,7 +115,7 @@ func RunApiServer(ctx context.Context, mw service.ClientCommandsServer, mwIntern // readWrite.Use(a.PermissionMiddleware("read-write")) { readWrite.POST("/spaces", a.createSpaceHandler) - readWrite.POST("/spaces/:space_id/objects/", a.createObjectHandler) + readWrite.POST("/spaces/:space_id/objects", a.createObjectHandler) readWrite.PUT("/spaces/:space_id/objects/:object_id", a.updateObjectHandler) } From 3924aa9f8e819590839c71f126fbc08f56b103cb Mon Sep 17 00:00:00 2001 From: kirillston Date: Thu, 19 Dec 2024 20:40:03 +0300 Subject: [PATCH 057/279] GO-4444 Use bundle info to revise sys objects --- .../migration/readonlyfixer/relationsfixer.go | 4 +- .../readonlyfixer/relationsfixer_test.go | 6 +- space/internal/components/migration/runner.go | 7 +- .../components/migration/runner_test.go | 12 +- .../systemobjectreviser.go | 65 +++++---- .../systemobjectreviser_test.go | 129 +++++++----------- 6 files changed, 105 insertions(+), 118 deletions(-) diff --git a/space/internal/components/migration/readonlyfixer/relationsfixer.go b/space/internal/components/migration/readonlyfixer/relationsfixer.go index 965f4f29d..daa4ba5bb 100644 --- a/space/internal/components/migration/readonlyfixer/relationsfixer.go +++ b/space/internal/components/migration/readonlyfixer/relationsfixer.go @@ -28,11 +28,11 @@ const MName = "ReadonlyRelationsFixer" // This migration was implemented to fix relations in accounts of users that are not able to modify its value (GO-2331) type Migration struct{} -func (Migration) Name() string { +func (m Migration) Name() string { return MName } -func (Migration) Run(ctx context.Context, log logger.CtxLogger, store, _ dependencies.QueryableStore, space dependencies.SpaceWithCtx) (toMigrate, migrated int, err error) { +func (m Migration) Run(ctx context.Context, log logger.CtxLogger, store dependencies.QueryableStore, space dependencies.SpaceWithCtx) (toMigrate, migrated int, err error) { spaceId := space.Id() relations, err := listReadonlyTagAndStatusRelations(store, spaceId) diff --git a/space/internal/components/migration/readonlyfixer/relationsfixer_test.go b/space/internal/components/migration/readonlyfixer/relationsfixer_test.go index 94b5d500e..5f2525ee0 100644 --- a/space/internal/components/migration/readonlyfixer/relationsfixer_test.go +++ b/space/internal/components/migration/readonlyfixer/relationsfixer_test.go @@ -82,7 +82,7 @@ func TestFixReadonlyInRelations(t *testing.T) { ).Times(2) // when - migrated, toMigrate, err := fixer.Run(ctx, log, store.SpaceIndex("space1"), nil, spc) + migrated, toMigrate, err := fixer.Run(ctx, log, store.SpaceIndex("space1"), spc) // then assert.NoError(t, err) @@ -99,7 +99,7 @@ func TestFixReadonlyInRelations(t *testing.T) { // sp.EXPECT().Do(mock.Anything, mock.Anything).Times(1).Return(nil) // when - migrated, toMigrate, err := fixer.Run(ctx, log, store.SpaceIndex("space2"), nil, spc) + migrated, toMigrate, err := fixer.Run(ctx, log, store.SpaceIndex("space2"), spc) // then assert.NoError(t, err) @@ -116,7 +116,7 @@ func TestFixReadonlyInRelations(t *testing.T) { // sp.EXPECT().Do(mock.Anything, mock.Anything).Times(1).Return(nil) // when - migrated, toMigrate, err := fixer.Run(ctx, log, store.SpaceIndex("space3"), nil, spc) + migrated, toMigrate, err := fixer.Run(ctx, log, store.SpaceIndex("space3"), spc) // then assert.NoError(t, err) diff --git a/space/internal/components/migration/runner.go b/space/internal/components/migration/runner.go index c3f6c1490..21e6cc76d 100644 --- a/space/internal/components/migration/runner.go +++ b/space/internal/components/migration/runner.go @@ -10,7 +10,6 @@ import ( "github.com/anyproto/any-sync/app/logger" "go.uber.org/zap" - "github.com/anyproto/anytype-heart/pkg/lib/localstore/addr" "github.com/anyproto/anytype-heart/pkg/lib/localstore/objectstore" "github.com/anyproto/anytype-heart/space/clientspace" "github.com/anyproto/anytype-heart/space/internal/components/dependencies" @@ -27,7 +26,7 @@ const ( var log = logger.NewNamed(CName) type Migration interface { - Run(context.Context, logger.CtxLogger, dependencies.QueryableStore, dependencies.QueryableStore, dependencies.SpaceWithCtx) (toMigrate, migrated int, err error) + Run(context.Context, logger.CtxLogger, dependencies.QueryableStore, dependencies.SpaceWithCtx) (toMigrate, migrated int, err error) Name() string } @@ -107,7 +106,7 @@ func (r *Runner) run(migrations ...Migration) (err error) { start := time.Now() store := r.store.SpaceIndex(spaceId) - marketPlaceStore := r.store.SpaceIndex(addr.AnytypeMarketplaceWorkspace) + // marketPlaceStore := r.store.SpaceIndex(addr.AnytypeMarketplaceWorkspace) spent := time.Since(start) for _, m := range migrations { @@ -115,7 +114,7 @@ func (r *Runner) run(migrations ...Migration) (err error) { err = errors.Join(err, e) return } - toMigrate, migrated, e := m.Run(r.ctx, log, store, marketPlaceStore, r.spc) + toMigrate, migrated, e := m.Run(r.ctx, log, store, r.spc) if e != nil { err = errors.Join(err, wrapError(e, m.Name(), spaceId, migrated, toMigrate)) continue diff --git a/space/internal/components/migration/runner_test.go b/space/internal/components/migration/runner_test.go index 4d3b2a097..9a91616cf 100644 --- a/space/internal/components/migration/runner_test.go +++ b/space/internal/components/migration/runner_test.go @@ -140,11 +140,11 @@ func TestRunner(t *testing.T) { type longStoreMigration struct{} -func (longStoreMigration) Name() string { +func (m longStoreMigration) Name() string { return "long migration" } -func (longStoreMigration) Run(ctx context.Context, _ logger.CtxLogger, store, queryableStore dependencies.QueryableStore, _ dependencies.SpaceWithCtx) (toMigrate, migrated int, err error) { +func (m longStoreMigration) Run(ctx context.Context, _ logger.CtxLogger, store, queryableStore dependencies.QueryableStore, _ dependencies.SpaceWithCtx) (toMigrate, migrated int, err error) { for { if _, err = store.Query(database.Query{}); err != nil { return 0, 0, err @@ -154,11 +154,11 @@ func (longStoreMigration) Run(ctx context.Context, _ logger.CtxLogger, store, qu type longSpaceMigration struct{} -func (longSpaceMigration) Name() string { +func (m longSpaceMigration) Name() string { return "long migration" } -func (longSpaceMigration) Run(ctx context.Context, _ logger.CtxLogger, _, store dependencies.QueryableStore, space dependencies.SpaceWithCtx) (toMigrate, migrated int, err error) { +func (m longSpaceMigration) Run(ctx context.Context, _ logger.CtxLogger, store dependencies.QueryableStore, space dependencies.SpaceWithCtx) (toMigrate, migrated int, err error) { for { if err = space.DoCtx(ctx, "", func(smartblock.SmartBlock) error { // do smth @@ -171,10 +171,10 @@ func (longSpaceMigration) Run(ctx context.Context, _ logger.CtxLogger, _, store type instantMigration struct{} -func (instantMigration) Name() string { +func (m instantMigration) Name() string { return "instant migration" } -func (instantMigration) Run(context.Context, logger.CtxLogger, dependencies.QueryableStore, dependencies.QueryableStore, dependencies.SpaceWithCtx) (toMigrate, migrated int, err error) { +func (m instantMigration) Run(context.Context, logger.CtxLogger, dependencies.QueryableStore, dependencies.SpaceWithCtx) (toMigrate, migrated int, err error) { return 0, 0, nil } diff --git a/space/internal/components/migration/systemobjectreviser/systemobjectreviser.go b/space/internal/components/migration/systemobjectreviser/systemobjectreviser.go index 059c0cc6d..40656cbfc 100644 --- a/space/internal/components/migration/systemobjectreviser/systemobjectreviser.go +++ b/space/internal/components/migration/systemobjectreviser/systemobjectreviser.go @@ -13,6 +13,7 @@ import ( "github.com/anyproto/anytype-heart/core/block/editor/smartblock" "github.com/anyproto/anytype-heart/core/domain" + "github.com/anyproto/anytype-heart/core/relationutils" "github.com/anyproto/anytype-heart/core/session" "github.com/anyproto/anytype-heart/pkg/lib/bundle" coresb "github.com/anyproto/anytype-heart/pkg/lib/core/smartblock" @@ -37,23 +38,18 @@ const revisionKey = bundle.RelationKeyRevision // For more info see 'System Objects Update' section of docs/Flow.md type Migration struct{} -func (Migration) Name() string { +func (m Migration) Name() string { return MName } -func (Migration) Run(ctx context.Context, log logger.CtxLogger, store, marketPlace dependencies.QueryableStore, space dependencies.SpaceWithCtx) (toMigrate, migrated int, err error) { +func (m Migration) Run(ctx context.Context, log logger.CtxLogger, store dependencies.QueryableStore, space dependencies.SpaceWithCtx) (toMigrate, migrated int, err error) { spaceObjects, err := listAllTypesAndRelations(store) if err != nil { return 0, 0, fmt.Errorf("failed to get relations and types from client space: %w", err) } - marketObjects, err := listAllTypesAndRelations(marketPlace) - if err != nil { - return 0, 0, fmt.Errorf("failed to get relations from marketplace space: %w", err) - } - for _, details := range spaceObjects { - shouldBeRevised, e := reviseSystemObject(ctx, log, space, details, marketObjects) + shouldBeRevised, e := reviseObject(ctx, log, space, details) if !shouldBeRevised { continue } @@ -89,15 +85,25 @@ func listAllTypesAndRelations(store dependencies.QueryableStore) (map[string]*do return details, nil } -func reviseSystemObject(ctx context.Context, log logger.CtxLogger, space dependencies.SpaceWithCtx, localObject *domain.Details, marketObjects map[string]*domain.Details) (toRevise bool, err error) { - source := localObject.GetString(bundle.RelationKeySourceObject) - marketObject, found := marketObjects[source] - if !found || !isSystemObject(localObject) || marketObject.GetInt64(revisionKey) <= localObject.GetInt64(revisionKey) { +func reviseObject(ctx context.Context, log logger.CtxLogger, space dependencies.SpaceWithCtx, localObject *domain.Details) (toRevise bool, err error) { + uniqueKeyRaw := localObject.GetString(bundle.RelationKeyUniqueKey) + + uk, err := domain.UnmarshalUniqueKey(uniqueKeyRaw) + if err != nil { + return false, fmt.Errorf("failed to unmarshal unique key '%s': %w", uniqueKeyRaw, err) + } + + bundleObject := getBundleSystemObjectDetails(uk) + if bundleObject == nil { return false, nil } - details := buildDiffDetails(marketObject, localObject) - recRelsDetail, err := checkRecommendedRelations(ctx, space, marketObject, localObject) + if bundleObject.GetInt64(revisionKey) <= localObject.GetInt64(revisionKey) { + return false, nil + } + details := buildDiffDetails(bundleObject, localObject) + + recRelsDetail, err := checkRecommendedRelations(ctx, space, bundleObject, localObject) if err != nil { log.Error("failed to check recommended relations", zap.Error(err)) } @@ -107,7 +113,7 @@ func reviseSystemObject(ctx context.Context, log logger.CtxLogger, space depende } if details.Len() > 0 { - log.Debug("updating system object", zap.String("source", source), zap.String("space", space.Id())) + log.Debug("updating system object", zap.String("key", uk.InternalKey()), zap.String("space", space.Id())) if err := space.DoCtx(ctx, localObject.GetString(bundle.RelationKeyId), func(sb smartblock.SmartBlock) error { st := sb.NewState() for key, value := range details.Iterate() { @@ -115,25 +121,34 @@ func reviseSystemObject(ctx context.Context, log logger.CtxLogger, space depende } return sb.Apply(st) }); err != nil { - return true, fmt.Errorf("failed to update system object %s in space %s: %w", source, space.Id(), err) + return true, fmt.Errorf("failed to update system object '%s' in space '%s': %w", uk.InternalKey(), space.Id(), err) } } return true, nil } -func isSystemObject(details *domain.Details) bool { - rawKey := details.GetString(bundle.RelationKeyUniqueKey) - uk, err := domain.UnmarshalUniqueKey(rawKey) - if err != nil { - return false - } +// getBundleSystemObjectDetails returns nil if the object with provided unique key is not either system relation or system type +func getBundleSystemObjectDetails(uk domain.UniqueKey) *domain.Details { switch uk.SmartblockType() { case coresb.SmartBlockTypeObjectType: - return lo.Contains(bundle.SystemTypes, domain.TypeKey(uk.InternalKey())) + typeKey := domain.TypeKey(uk.InternalKey()) + if !lo.Contains(bundle.SystemTypes, typeKey) { + // non system object type, no need to revise + return nil + } + objectType := bundle.MustGetType(typeKey) + return (&relationutils.ObjectType{ObjectType: objectType}).BundledTypeDetails() case coresb.SmartBlockTypeRelation: - return lo.Contains(bundle.SystemRelations, domain.RelationKey(uk.InternalKey())) + relationKey := domain.RelationKey(uk.InternalKey()) + if !lo.Contains(bundle.SystemRelations, relationKey) { + // non system relation, no need to revise + return nil + } + relation := bundle.MustGetRelation(relationKey) + return (&relationutils.Relation{Relation: relation}).ToDetails() + default: + return nil } - return false } func buildDiffDetails(origin, current *domain.Details) *domain.Details { diff --git a/space/internal/components/migration/systemobjectreviser/systemobjectreviser_test.go b/space/internal/components/migration/systemobjectreviser/systemobjectreviser_test.go index 191863f56..cce8fb771 100644 --- a/space/internal/components/migration/systemobjectreviser/systemobjectreviser_test.go +++ b/space/internal/components/migration/systemobjectreviser/systemobjectreviser_test.go @@ -23,23 +23,13 @@ func TestMigration_Run(t *testing.T) { store.AddObjects(t, "space1", []objectstore.TestObject{ { bundle.RelationKeySpaceId: domain.String("space1"), - bundle.RelationKeyRelationFormat: domain.Int64(int64(model.RelationFormat_checkbox)), + bundle.RelationKeyRelationFormat: domain.Int64(int64(model.RelationFormat_object)), bundle.RelationKeyLayout: domain.Int64(int64(model.ObjectType_relation)), bundle.RelationKeyId: domain.String("id1"), - bundle.RelationKeyIsHidden: domain.Bool(true), - bundle.RelationKeyRevision: domain.Int64(1), - bundle.RelationKeyUniqueKey: domain.String(bundle.RelationKeyDone.URL()), - bundle.RelationKeySourceObject: domain.String(bundle.RelationKeyDone.BundledURL()), - }, - }) - marketPlace := objectstore.NewStoreFixture(t) - marketPlace.AddObjects(t, addr.AnytypeMarketplaceWorkspace, []objectstore.TestObject{ - { - bundle.RelationKeySpaceId: domain.String(addr.AnytypeMarketplaceWorkspace), - bundle.RelationKeyRelationFormat: domain.Int64(int64(model.RelationFormat_checkbox)), - bundle.RelationKeyLayout: domain.Int64(int64(model.ObjectType_relation)), - bundle.RelationKeyId: domain.String(bundle.RelationKeyDone.BundledURL()), - bundle.RelationKeyRevision: domain.Int64(2), + bundle.RelationKeyIsHidden: domain.Bool(true), // bundle = false + bundle.RelationKeyRevision: domain.Int64(1), // bundle = 3 + bundle.RelationKeyUniqueKey: domain.String(bundle.RelationKeyBacklinks.URL()), + bundle.RelationKeySourceObject: domain.String(bundle.RelationKeyBacklinks.BundledURL()), }, }) fixer := &Migration{} @@ -52,7 +42,7 @@ func TestMigration_Run(t *testing.T) { spc.EXPECT().DoCtx(ctx, "id1", mock.Anything).Return(nil).Times(1) // when - migrated, toMigrate, err := fixer.Run(ctx, log, store.SpaceIndex("space1"), marketPlace.SpaceIndex(addr.AnytypeMarketplaceWorkspace), spc) + migrated, toMigrate, err := fixer.Run(ctx, log, store.SpaceIndex("space1"), spc) // then assert.NoError(t, err) @@ -63,7 +53,7 @@ func TestMigration_Run(t *testing.T) { func TestReviseSystemObject(t *testing.T) { ctx := context.Background() - log := logger.NewNamed("tesr") + log := logger.NewNamed("test") marketObjects := map[string]*domain.Details{ "_otnote": domain.NewDetailsFromMap(map[domain.RelationKey]domain.Value{revisionKey: domain.Int64(3)}), "_otpage": domain.NewDetailsFromMap(map[domain.RelationKey]domain.Value{revisionKey: domain.Int64(2)}), @@ -77,16 +67,19 @@ func TestReviseSystemObject(t *testing.T) { t.Run("system object type is updated if revision is higher", func(t *testing.T) { // given objectType := domain.NewDetailsFromMap(map[domain.RelationKey]domain.Value{ - bundle.RelationKeyRevision: domain.Int64(1), - bundle.RelationKeySourceObject: domain.String("_otnote"), - bundle.RelationKeyUniqueKey: domain.String("ot-note"), + bundle.RelationKeyRevision: domain.Int64(bundle.MustGetType(bundle.TypeKeyFile).Revision - 1), + bundle.RelationKeySourceObject: domain.String("_otfile"), + bundle.RelationKeyUniqueKey: domain.String("ot-file"), }) space := mock_space.NewMockSpace(t) space.EXPECT().DoCtx(mock.Anything, mock.Anything, mock.Anything).Times(1).Return(nil) space.EXPECT().Id().Times(1).Return("") + space.EXPECT().DeriveObjectID(mock.Anything, mock.Anything).RunAndReturn(func(_ context.Context, key domain.UniqueKey) (string, error) { + return addr.ObjectTypeKeyToIdPrefix + key.InternalKey(), nil + }).Maybe() // when - toRevise, err := reviseSystemObject(ctx, log, space, objectType, marketObjects) + toRevise, err := reviseObject(ctx, log, space, objectType) // then assert.NoError(t, err) @@ -95,16 +88,19 @@ func TestReviseSystemObject(t *testing.T) { t.Run("system object type is updated if no revision is set", func(t *testing.T) { // given - objectType := domain.NewDetailsFromMap(map[domain.RelationKey]domain.Value{ - bundle.RelationKeySourceObject: domain.String("_otpage"), - bundle.RelationKeyUniqueKey: domain.String("ot-page"), + objectType := domain.NewDetailsFromMap(map[domain.RelationKey]domain.Value{ // bundle Audio type revision = 1 + bundle.RelationKeySourceObject: domain.String("_otaudio"), + bundle.RelationKeyUniqueKey: domain.String("ot-audio"), }) space := mock_space.NewMockSpace(t) space.EXPECT().DoCtx(mock.Anything, mock.Anything, mock.Anything).Times(1).Return(nil) space.EXPECT().Id().Times(1).Return("") + space.EXPECT().DeriveObjectID(mock.Anything, mock.Anything).RunAndReturn(func(_ context.Context, key domain.UniqueKey) (string, error) { + return addr.ObjectTypeKeyToIdPrefix + key.InternalKey(), nil + }).Maybe() // when - toRevise, err := reviseSystemObject(ctx, log, space, objectType, marketObjects) + toRevise, err := reviseObject(ctx, log, space, objectType) // then assert.NoError(t, err) @@ -119,7 +115,7 @@ func TestReviseSystemObject(t *testing.T) { space := mock_space.NewMockSpace(t) // if unexpected space.Do will be called, test will fail // when - toRevise, err := reviseSystemObject(ctx, log, space, objectType, marketObjects) + toRevise, err := reviseObject(ctx, log, space, objectType) // then assert.NoError(t, err) @@ -135,7 +131,7 @@ func TestReviseSystemObject(t *testing.T) { space := mock_space.NewMockSpace(t) // if unexpected space.Do will be called, test will fail // when - toRevise, err := reviseSystemObject(ctx, log, space, objectType, marketObjects) + toRevise, err := reviseObject(ctx, log, space, objectType) // then assert.NoError(t, err) @@ -145,14 +141,14 @@ func TestReviseSystemObject(t *testing.T) { t.Run("system object type with same revision is not updated", func(t *testing.T) { // given objectType := domain.NewDetailsFromMap(map[domain.RelationKey]domain.Value{ - bundle.RelationKeyRevision: domain.Int64(3), - bundle.RelationKeySourceObject: domain.String("_otnote"), - bundle.RelationKeyUniqueKey: domain.String("ot-note"), + bundle.RelationKeyRevision: domain.Int64(bundle.MustGetType(bundle.TypeKeyImage).Revision), + bundle.RelationKeySourceObject: domain.String("_otimage"), + bundle.RelationKeyUniqueKey: domain.String("ot-image"), }) space := mock_space.NewMockSpace(t) // if unexpected space.Do will be called, test will fail // when - toRevise, err := reviseSystemObject(ctx, log, space, objectType, marketObjects) + toRevise, err := reviseObject(ctx, log, space, objectType) // then assert.NoError(t, err) @@ -162,16 +158,16 @@ func TestReviseSystemObject(t *testing.T) { t.Run("system relation is updated if revision is higher", func(t *testing.T) { // given rel := domain.NewDetailsFromMap(map[domain.RelationKey]domain.Value{ - bundle.RelationKeyRevision: domain.Int64(1), - bundle.RelationKeySourceObject: domain.String("_brdescription"), - bundle.RelationKeyUniqueKey: domain.String("rel-description"), + bundle.RelationKeyRevision: domain.Int64(bundle.MustGetRelation(bundle.RelationKeyGlobalName).Revision - 1), + bundle.RelationKeySourceObject: domain.String("_brglobalName"), + bundle.RelationKeyUniqueKey: domain.String("rel-globalName"), }) space := mock_space.NewMockSpace(t) space.EXPECT().DoCtx(mock.Anything, mock.Anything, mock.Anything).Times(1).Return(nil) space.EXPECT().Id().Times(1).Return("") // when - toRevise, err := reviseSystemObject(ctx, log, space, rel, marketObjects) + toRevise, err := reviseObject(ctx, log, space, rel) // then assert.NoError(t, err) @@ -180,16 +176,16 @@ func TestReviseSystemObject(t *testing.T) { t.Run("system relation is updated if no revision is set", func(t *testing.T) { // given - rel := domain.NewDetailsFromMap(map[domain.RelationKey]domain.Value{ - bundle.RelationKeySourceObject: domain.String("_brid"), - bundle.RelationKeyUniqueKey: domain.String("rel-id"), + rel := domain.NewDetailsFromMap(map[domain.RelationKey]domain.Value{ // done revision = 1 + bundle.RelationKeySourceObject: domain.String("_brdone"), + bundle.RelationKeyUniqueKey: domain.String("rel-done"), }) space := mock_space.NewMockSpace(t) space.EXPECT().DoCtx(mock.Anything, mock.Anything, mock.Anything).Times(1).Return(nil) space.EXPECT().Id().Times(1).Return("") // when - toRevise, err := reviseSystemObject(ctx, log, space, rel, marketObjects) + toRevise, err := reviseObject(ctx, log, space, rel) // then assert.NoError(t, err) @@ -204,7 +200,7 @@ func TestReviseSystemObject(t *testing.T) { space := mock_space.NewMockSpace(t) // if unexpected space.Do will be called, test will fail // when - toRevise, err := reviseSystemObject(ctx, log, space, rel, marketObjects) + toRevise, err := reviseObject(ctx, log, space, rel) // then assert.NoError(t, err) @@ -221,7 +217,7 @@ func TestReviseSystemObject(t *testing.T) { space := mock_space.NewMockSpace(t) // if unexpected space.Do will be called, test will fail // when - toRevise, err := reviseSystemObject(ctx, log, space, rel, marketObjects) + toRevise, err := reviseObject(ctx, log, space, rel) // then assert.NoError(t, err) @@ -231,14 +227,14 @@ func TestReviseSystemObject(t *testing.T) { t.Run("system relation with same revision is not updated", func(t *testing.T) { // given rel := domain.NewDetailsFromMap(map[domain.RelationKey]domain.Value{ - bundle.RelationKeyRevision: domain.Int64(3), - bundle.RelationKeySourceObject: domain.String("_brisReadonly"), - bundle.RelationKeyUniqueKey: domain.String("rel-isReadonly"), + bundle.RelationKeyRevision: domain.Int64(bundle.MustGetRelation(bundle.RelationKeyBacklinks).Revision), + bundle.RelationKeySourceObject: domain.String("_brbacklinks"), + bundle.RelationKeyUniqueKey: domain.String("rel-backlinks"), }) space := mock_space.NewMockSpace(t) // if unexpected space.Do will be called, test will fail // when - toRevise, err := reviseSystemObject(ctx, log, space, rel, marketObjects) + toRevise, err := reviseObject(ctx, log, space, rel) // then assert.NoError(t, err) @@ -248,17 +244,17 @@ func TestReviseSystemObject(t *testing.T) { t.Run("relation with absent maxCount is updated", func(t *testing.T) { // given rel := domain.NewDetailsFromMap(map[domain.RelationKey]domain.Value{ - bundle.RelationKeyRevision: domain.Int64(2), - bundle.RelationKeySourceObject: domain.String("_brisReadonly"), - bundle.RelationKeyUniqueKey: domain.String("rel-isReadonly"), - bundle.RelationKeyRelationMaxCount: domain.Int64(1), + bundle.RelationKeyRevision: domain.Int64(bundle.MustGetRelation(bundle.RelationKeyBacklinks).Revision - 1), + bundle.RelationKeySourceObject: domain.String("_brbacklinks"), + bundle.RelationKeyUniqueKey: domain.String("rel-backlinks"), + bundle.RelationKeyRelationMaxCount: domain.Int64(1), // maxCount of bundle backlinks = 0 }) space := mock_space.NewMockSpace(t) space.EXPECT().DoCtx(mock.Anything, mock.Anything, mock.Anything).Times(1).Return(nil) space.EXPECT().Id().Times(1).Return("") // when - toRevise, err := reviseSystemObject(ctx, log, space, rel, marketObjects) + toRevise, err := reviseObject(ctx, log, space, rel) // then assert.NoError(t, err) @@ -268,9 +264,9 @@ func TestReviseSystemObject(t *testing.T) { t.Run("recommendedRelations list is updated", func(t *testing.T) { // given rel := domain.NewDetailsFromMap(map[domain.RelationKey]domain.Value{ - bundle.RelationKeyRevision: domain.Int64(1), - bundle.RelationKeySourceObject: domain.String("_otpage"), - bundle.RelationKeyUniqueKey: domain.String("ot-page"), + bundle.RelationKeyRevision: domain.Int64(bundle.MustGetType(bundle.TypeKeyImage).Revision - 1), + bundle.RelationKeySourceObject: domain.String("_otimage"), + bundle.RelationKeyUniqueKey: domain.String("ot-image"), bundle.RelationKeyRecommendedRelations: domain.StringList([]string{"rel-name"}), }) space := mock_space.NewMockSpace(t) @@ -281,36 +277,13 @@ func TestReviseSystemObject(t *testing.T) { }).Maybe() // when - marketObjects["_otpage"].SetStringList("recommendedRelations", []string{"_brname", "_brorigin"}) - toRevise, err := reviseSystemObject(ctx, log, space, rel, marketObjects) + toRevise, err := reviseObject(ctx, log, space, rel) // then assert.NoError(t, err) assert.True(t, toRevise) }) - t.Run("recommendedRelations list is not updated", func(t *testing.T) { - // given - rel := domain.NewDetailsFromMap(map[domain.RelationKey]domain.Value{ - bundle.RelationKeyRevision: domain.Int64(2), - bundle.RelationKeySourceObject: domain.String("_otpage"), - bundle.RelationKeyUniqueKey: domain.String("ot-page"), - bundle.RelationKeyRecommendedRelations: domain.StringList([]string{"rel-name", "rel-tag"}), - }) - space := mock_space.NewMockSpace(t) - space.EXPECT().DeriveObjectID(mock.Anything, mock.Anything).RunAndReturn(func(_ context.Context, key domain.UniqueKey) (string, error) { - return addr.ObjectTypeKeyToIdPrefix + key.InternalKey(), nil - }).Maybe() - - // when - marketObjects["_otpage"].SetStringList("recommendedRelations", []string{"_brname", "_brtag"}) - toRevise, err := reviseSystemObject(ctx, log, space, rel, marketObjects) - - // then - assert.NoError(t, err) - assert.False(t, toRevise) - }) - t.Run("recommendedRelations list is updated by not system relations", func(t *testing.T) { // given rel := domain.NewDetailsFromMap(map[domain.RelationKey]domain.Value{ @@ -326,7 +299,7 @@ func TestReviseSystemObject(t *testing.T) { // when marketObjects["_otpage"].SetStringList("recommendedRelations", []string{"_brname", "_brtag"}) - toRevise, err := reviseSystemObject(ctx, log, space, rel, marketObjects) + toRevise, err := reviseObject(ctx, log, space, rel) // then assert.NoError(t, err) From afd627364c72bcbea79636733fed0b6a024538b7 Mon Sep 17 00:00:00 2001 From: kirillston Date: Thu, 19 Dec 2024 21:11:51 +0300 Subject: [PATCH 058/279] GO-4444 Delete iface with no use --- .../migration/systemobjectreviser/systemobjectreviser.go | 5 ----- 1 file changed, 5 deletions(-) diff --git a/space/internal/components/migration/systemobjectreviser/systemobjectreviser.go b/space/internal/components/migration/systemobjectreviser/systemobjectreviser.go index 40656cbfc..a57848dc2 100644 --- a/space/internal/components/migration/systemobjectreviser/systemobjectreviser.go +++ b/space/internal/components/migration/systemobjectreviser/systemobjectreviser.go @@ -14,7 +14,6 @@ import ( "github.com/anyproto/anytype-heart/core/block/editor/smartblock" "github.com/anyproto/anytype-heart/core/domain" "github.com/anyproto/anytype-heart/core/relationutils" - "github.com/anyproto/anytype-heart/core/session" "github.com/anyproto/anytype-heart/pkg/lib/bundle" coresb "github.com/anyproto/anytype-heart/pkg/lib/core/smartblock" "github.com/anyproto/anytype-heart/pkg/lib/database" @@ -24,10 +23,6 @@ import ( "github.com/anyproto/anytype-heart/util/slice" ) -type detailsSettable interface { - SetDetails(ctx session.Context, details []*model.Detail, showEvent bool) (err error) -} - const MName = "SystemObjectReviser" const revisionKey = bundle.RelationKeyRevision From 9c23630758a04e72557b7b8867a86bab11e94f51 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Thu, 19 Dec 2024 22:00:31 +0100 Subject: [PATCH 059/279] GO-4459 Harden auth tests and pass gin.Request.Context in handlers.go --- cmd/api/docs/docs.go | 6 +- cmd/api/docs/swagger.json | 6 +- cmd/api/docs/swagger.yaml | 6 +- cmd/api/handlers.go | 57 +++++++-------- cmd/api/handlers_test.go | 147 ++++++++++++++++++++++++++++++-------- cmd/api/schemas.go | 9 +++ 6 files changed, 162 insertions(+), 69 deletions(-) diff --git a/cmd/api/docs/docs.go b/cmd/api/docs/docs.go index 6dc42526c..85896294c 100644 --- a/cmd/api/docs/docs.go +++ b/cmd/api/docs/docs.go @@ -75,7 +75,7 @@ const docTemplate = `{ { "type": "string", "description": "The challenge ID", - "name": "challengeId", + "name": "challenge_id", "in": "query", "required": true } @@ -1321,7 +1321,7 @@ const docTemplate = `{ }, "icon": { "type": "string", - "example": "data:image/png;base64, \u003cbase64-encoded-image\u003e" + "example": "http://127.0.0.1:31006/image/bafybeieptz5hvcy6txplcvphjbbh5yjc2zqhmihs3owkh5oab4ezauzqay?width=100" }, "id": { "type": "string", @@ -1378,7 +1378,7 @@ const docTemplate = `{ }, "icon": { "type": "string", - "example": "data:image/png;base64, \u003cbase64-encoded-image\u003e" + "example": "http://127.0.0.1:31006/image/bafybeieptz5hvcy6txplcvphjbbh5yjc2zqhmihs3owkh5oab4ezauzqay?width=100" }, "id": { "type": "string", diff --git a/cmd/api/docs/swagger.json b/cmd/api/docs/swagger.json index 8b5f4a627..63bbbca07 100644 --- a/cmd/api/docs/swagger.json +++ b/cmd/api/docs/swagger.json @@ -69,7 +69,7 @@ { "type": "string", "description": "The challenge ID", - "name": "challengeId", + "name": "challenge_id", "in": "query", "required": true } @@ -1315,7 +1315,7 @@ }, "icon": { "type": "string", - "example": "data:image/png;base64, \u003cbase64-encoded-image\u003e" + "example": "http://127.0.0.1:31006/image/bafybeieptz5hvcy6txplcvphjbbh5yjc2zqhmihs3owkh5oab4ezauzqay?width=100" }, "id": { "type": "string", @@ -1372,7 +1372,7 @@ }, "icon": { "type": "string", - "example": "data:image/png;base64, \u003cbase64-encoded-image\u003e" + "example": "http://127.0.0.1:31006/image/bafybeieptz5hvcy6txplcvphjbbh5yjc2zqhmihs3owkh5oab4ezauzqay?width=100" }, "id": { "type": "string", diff --git a/cmd/api/docs/swagger.yaml b/cmd/api/docs/swagger.yaml index 846e14d69..96613a99b 100644 --- a/cmd/api/docs/swagger.yaml +++ b/cmd/api/docs/swagger.yaml @@ -223,7 +223,7 @@ definitions: example: bafyreie4qcl3wczb4cw5hrfyycikhjyh6oljdis3ewqrk5boaav3sbwqya type: string icon: - example: data:image/png;base64, + example: http://127.0.0.1:31006/image/bafybeieptz5hvcy6txplcvphjbbh5yjc2zqhmihs3owkh5oab4ezauzqay?width=100 type: string id: example: bafyreigyfkt6rbv24sbv5aq2hko3bhmv5xxlf22b4bypdu6j7hnphm3psq.23me69r569oi1 @@ -265,7 +265,7 @@ definitions: example: john.any type: string icon: - example: data:image/png;base64, + example: http://127.0.0.1:31006/image/bafybeieptz5hvcy6txplcvphjbbh5yjc2zqhmihs3owkh5oab4ezauzqay?width=100 type: string id: example: _participant_bafyreigyfkt6rbv24sbv5aq2hko1bhmv5xxlf22b4bypdu6j7hnphm3psq_23me69r569oi1_AAjEaEwPF4nkEh9AWkqEnzcQ8HziBB4ETjiTpvRCQvWnSMDZ @@ -360,7 +360,7 @@ paths: type: string - description: The challenge ID in: query - name: challengeId + name: challenge_id required: true type: string produces: diff --git a/cmd/api/handlers.go b/cmd/api/handlers.go index 688925fd9..076ecadfb 100644 --- a/cmd/api/handlers.go +++ b/cmd/api/handlers.go @@ -1,7 +1,6 @@ package api import ( - "context" "crypto/rand" "math/big" "net/http" @@ -43,15 +42,13 @@ type AddMessageRequest struct { // @Failure 502 {object} ServerError "Internal server error" // @Router /auth/displayCode [post] func (a *ApiServer) authDisplayCodeHandler(c *gin.Context) { - // Call AccountLocalLinkNewChallenge to display code modal - ctx := context.Background() - resp := a.mw.AccountLocalLinkNewChallenge(ctx, &pb.RpcAccountLocalLinkNewChallengeRequest{AppName: "api-test"}) + resp := a.mw.AccountLocalLinkNewChallenge(c.Request.Context(), &pb.RpcAccountLocalLinkNewChallengeRequest{AppName: "api-test"}) if resp.Error.Code != pb.RpcAccountLocalLinkNewChallengeResponseError_NULL { c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to generate a new challenge."}) } - c.JSON(http.StatusOK, gin.H{"challengeId": resp.ChallengeId}) + c.JSON(http.StatusOK, AuthDisplayCodeResponse{ChallengeId: resp.ChallengeId}) } // authTokenHandler retrieves an authentication token using a code and challenge ID @@ -60,16 +57,16 @@ func (a *ApiServer) authDisplayCodeHandler(c *gin.Context) { // @Tags auth // @Accept json // @Produce json -// @Param code query string true "The code retrieved from Anytype Desktop app" -// @Param challengeId query string true "The challenge ID" -// @Success 200 {object} map[string]string "Access and refresh tokens" -// @Failure 400 {object} ValidationError "Invalid input" -// @Failure 502 {object} ServerError "Internal server error" +// @Param code query string true "The code retrieved from Anytype Desktop app" +// @Param challenge_id query string true "The challenge ID" +// @Success 200 {object} map[string]string "Access and refresh tokens" +// @Failure 400 {object} ValidationError "Invalid input" +// @Failure 502 {object} ServerError "Internal server error" // @Router /auth/token [get] func (a *ApiServer) authTokenHandler(c *gin.Context) { // Call AccountLocalLinkSolveChallenge to retrieve session token and app key - resp := a.mw.AccountLocalLinkSolveChallenge(context.Background(), &pb.RpcAccountLocalLinkSolveChallengeRequest{ - ChallengeId: c.Query("challengeId"), + resp := a.mw.AccountLocalLinkSolveChallenge(c.Request.Context(), &pb.RpcAccountLocalLinkSolveChallengeRequest{ + ChallengeId: c.Query("challenge_id"), Answer: c.Query("code"), }) @@ -78,9 +75,9 @@ func (a *ApiServer) authTokenHandler(c *gin.Context) { return } - c.JSON(http.StatusOK, gin.H{ - "sessionToken": resp.SessionToken, - "appKey": resp.AppKey, + c.JSON(http.StatusOK, AuthTokenResponse{ + SessionToken: resp.SessionToken, + AppKey: resp.AppKey, }) } @@ -101,8 +98,8 @@ func (a *ApiServer) getSpacesHandler(c *gin.Context) { offset := c.GetInt("offset") limit := c.GetInt("limit") - // Call ObjectSearch for all objects of type spaceView with pagination - resp := a.mw.ObjectSearch(context.Background(), &pb.RpcObjectSearchRequest{ + // Call ObjectSearch for all objects of type spaceView + resp := a.mw.ObjectSearch(c.Request.Context(), &pb.RpcObjectSearchRequest{ SpaceId: a.accountInfo.TechSpaceId, Filters: []*model.BlockContentDataviewFilter{ { @@ -184,7 +181,7 @@ func (a *ApiServer) createSpaceHandler(c *gin.Context) { } // Create new workspace with a random icon and import default use case - resp := a.mw.WorkspaceCreate(context.Background(), &pb.RpcWorkspaceCreateRequest{ + resp := a.mw.WorkspaceCreate(c.Request.Context(), &pb.RpcWorkspaceCreateRequest{ Details: &types.Struct{ Fields: map[string]*types.Value{ "iconOption": {Kind: &types.Value_NumberValue{NumberValue: float64(iconOption.Int64())}}, @@ -226,7 +223,7 @@ func (a *ApiServer) getSpaceMembersHandler(c *gin.Context) { limit := c.GetInt("limit") // Call ObjectSearch for all objects of type participant - resp := a.mw.ObjectSearch(context.Background(), &pb.RpcObjectSearchRequest{ + resp := a.mw.ObjectSearch(c.Request.Context(), &pb.RpcObjectSearchRequest{ SpaceId: spaceId, Filters: []*model.BlockContentDataviewFilter{ { @@ -300,7 +297,7 @@ func (a *ApiServer) getObjectsForSpaceHandler(c *gin.Context) { offset := c.GetInt("offset") limit := c.GetInt("limit") - resp := a.mw.ObjectSearch(context.Background(), &pb.RpcObjectSearchRequest{ + resp := a.mw.ObjectSearch(c.Request.Context(), &pb.RpcObjectSearchRequest{ SpaceId: spaceId, Filters: []*model.BlockContentDataviewFilter{ { @@ -393,7 +390,7 @@ func (a *ApiServer) getObjectHandler(c *gin.Context) { spaceId := c.Param("space_id") objectId := c.Param("object_id") - resp := a.mw.ObjectShow(context.Background(), &pb.RpcObjectShowRequest{ + resp := a.mw.ObjectShow(c.Request.Context(), &pb.RpcObjectShowRequest{ SpaceId: spaceId, ObjectId: objectId, }) @@ -449,7 +446,7 @@ func (a *ApiServer) createObjectHandler(c *gin.Context) { return } - resp := a.mw.ObjectCreate(context.Background(), &pb.RpcObjectCreateRequest{ + resp := a.mw.ObjectCreate(c.Request.Context(), &pb.RpcObjectCreateRequest{ Details: &types.Struct{ Fields: map[string]*types.Value{ "name": {Kind: &types.Value_StringValue{StringValue: request.Name}}, @@ -523,7 +520,7 @@ func (a *ApiServer) getObjectTypesHandler(c *gin.Context) { offset := c.GetInt("offset") limit := c.GetInt("limit") - resp := a.mw.ObjectSearch(context.Background(), &pb.RpcObjectSearchRequest{ + resp := a.mw.ObjectSearch(c.Request.Context(), &pb.RpcObjectSearchRequest{ SpaceId: spaceId, Filters: []*model.BlockContentDataviewFilter{ { @@ -594,7 +591,7 @@ func (a *ApiServer) getObjectTypeTemplatesHandler(c *gin.Context) { limit := c.GetInt("limit") // First, determine the type ID of "ot-template" in the space - templateTypeIdResp := a.mw.ObjectSearch(context.Background(), &pb.RpcObjectSearchRequest{ + templateTypeIdResp := a.mw.ObjectSearch(c.Request.Context(), &pb.RpcObjectSearchRequest{ SpaceId: spaceId, Filters: []*model.BlockContentDataviewFilter{ { @@ -619,7 +616,7 @@ func (a *ApiServer) getObjectTypeTemplatesHandler(c *gin.Context) { templateTypeId := templateTypeIdResp.Records[0].Fields["id"].GetStringValue() // Then, search all objects of the template type and filter by the target object type - templateObjectsResp := a.mw.ObjectSearch(context.Background(), &pb.RpcObjectSearchRequest{ + templateObjectsResp := a.mw.ObjectSearch(c.Request.Context(), &pb.RpcObjectSearchRequest{ SpaceId: spaceId, Filters: []*model.BlockContentDataviewFilter{ { @@ -653,7 +650,7 @@ func (a *ApiServer) getObjectTypeTemplatesHandler(c *gin.Context) { // Finally, open each template and populate the response templates := make([]ObjectTemplate, 0, len(templateIds)) for _, templateId := range templateIds { - templateResp := a.mw.ObjectShow(context.Background(), &pb.RpcObjectShowRequest{ + templateResp := a.mw.ObjectShow(c.Request.Context(), &pb.RpcObjectShowRequest{ SpaceId: spaceId, ObjectId: templateId, }) @@ -695,7 +692,7 @@ func (a *ApiServer) getObjectsHandler(c *gin.Context) { limit := c.GetInt("limit") // First, call ObjectSearch for all objects of type spaceView - spaceResp := a.mw.ObjectSearch(context.Background(), &pb.RpcObjectSearchRequest{ + spaceResp := a.mw.ObjectSearch(c.Request.Context(), &pb.RpcObjectSearchRequest{ SpaceId: a.accountInfo.TechSpaceId, Filters: []*model.BlockContentDataviewFilter{ { @@ -770,7 +767,7 @@ func (a *ApiServer) getObjectsHandler(c *gin.Context) { searchResults := make([]Object, 0) for _, spaceRecord := range spaceResp.Records { spaceId := spaceRecord.Fields["targetSpaceId"].GetStringValue() - objectResp := a.mw.ObjectSearch(context.Background(), &pb.RpcObjectSearchRequest{ + objectResp := a.mw.ObjectSearch(c.Request.Context(), &pb.RpcObjectSearchRequest{ SpaceId: spaceId, Filters: filters, Sorts: []*model.BlockContentDataviewSort{{ @@ -864,7 +861,7 @@ func (a *ApiServer) getChatMessagesHandler(c *gin.Context) { return } - lastMessages := a.mw.ChatSubscribeLastMessages(context.Background(), &pb.RpcChatSubscribeLastMessagesRequest{ + lastMessages := a.mw.ChatSubscribeLastMessages(c.Request.Context(), &pb.RpcChatSubscribeLastMessagesRequest{ ChatObjectId: chatId, Limit: int32(limit), }) @@ -961,7 +958,7 @@ func (a *ApiServer) addChatMessageHandler(c *gin.Context) { return } - resp := a.mw.ChatAddMessage(context.Background(), &pb.RpcChatAddMessageRequest{ + resp := a.mw.ChatAddMessage(c.Request.Context(), &pb.RpcChatAddMessageRequest{ ChatObjectId: chatId, Message: &model.ChatMessage{ Id: "", diff --git a/cmd/api/handlers_test.go b/cmd/api/handlers_test.go index 873ec9c9b..6cd32a2ea 100644 --- a/cmd/api/handlers_test.go +++ b/cmd/api/handlers_test.go @@ -1,6 +1,7 @@ package api import ( + "encoding/json" "net/http" "net/http/httptest" "strings" @@ -75,6 +76,7 @@ func newFixture(t *testing.T) *fixture { func TestApiServer_AuthDisplayCodeHandler(t *testing.T) { t.Run("successful challenge creation", func(t *testing.T) { + // given fx := newFixture(t) fx.mwMock.On("AccountLocalLinkNewChallenge", mock.Anything, &pb.RpcAccountLocalLinkNewChallengeRequest{AppName: "api-test"}). @@ -83,58 +85,76 @@ func TestApiServer_AuthDisplayCodeHandler(t *testing.T) { Error: &pb.RpcAccountLocalLinkNewChallengeResponseError{Code: pb.RpcAccountLocalLinkNewChallengeResponseError_NULL}, }).Once() + // when req, _ := http.NewRequest("POST", "/v1/auth/displayCode", nil) w := httptest.NewRecorder() fx.router.ServeHTTP(w, req) + // then require.Equal(t, http.StatusOK, w.Code) - require.Contains(t, w.Body.String(), "mocked-challenge-id") + + var response AuthDisplayCodeResponse + err := json.Unmarshal(w.Body.Bytes(), &response) + require.NoError(t, err) + require.Equal(t, "mocked-challenge-id", response.ChallengeId) }) t.Run("failed challenge creation", func(t *testing.T) { + // given fx := newFixture(t) - // Mock middleware behavior fx.mwMock.On("AccountLocalLinkNewChallenge", mock.Anything, &pb.RpcAccountLocalLinkNewChallengeRequest{AppName: "api-test"}). Return(&pb.RpcAccountLocalLinkNewChallengeResponse{ Error: &pb.RpcAccountLocalLinkNewChallengeResponseError{Code: pb.RpcAccountLocalLinkNewChallengeResponseError_UNKNOWN_ERROR}, }).Once() + // when req, _ := http.NewRequest("POST", "/v1/auth/displayCode", nil) w := httptest.NewRecorder() fx.router.ServeHTTP(w, req) + // then require.Equal(t, http.StatusInternalServerError, w.Code) }) } func TestApiServer_AuthTokenHandler(t *testing.T) { t.Run("successful token retrieval", func(t *testing.T) { + // given fx := newFixture(t) + challengeId := "mocked-challenge-id" code := "mocked-code" + sessionToken := "mocked-session-token" + appKey := "mocked-app-key" - // Mock middleware behavior fx.mwMock.On("AccountLocalLinkSolveChallenge", mock.Anything, &pb.RpcAccountLocalLinkSolveChallengeRequest{ ChallengeId: challengeId, Answer: code, }). Return(&pb.RpcAccountLocalLinkSolveChallengeResponse{ - SessionToken: "mocked-session-token", - AppKey: "mocked-app-key", + SessionToken: sessionToken, + AppKey: appKey, Error: &pb.RpcAccountLocalLinkSolveChallengeResponseError{Code: pb.RpcAccountLocalLinkSolveChallengeResponseError_NULL}, }).Once() - req, _ := http.NewRequest("GET", "/v1/auth/token?challengeId="+challengeId+"&code="+code, nil) + // when + req, _ := http.NewRequest("GET", "/v1/auth/token?challenge_id="+challengeId+"&code="+code, nil) w := httptest.NewRecorder() fx.router.ServeHTTP(w, req) + // then require.Equal(t, http.StatusOK, w.Code) - require.Contains(t, w.Body.String(), "mocked-session-token") - require.Contains(t, w.Body.String(), "mocked-app-key") + + var response AuthTokenResponse + err := json.Unmarshal(w.Body.Bytes(), &response) + require.NoError(t, err) + require.Equal(t, sessionToken, response.SessionToken) + require.Equal(t, appKey, response.AppKey) }) t.Run("failed token retrieval", func(t *testing.T) { + // given fx := newFixture(t) challengeId := "mocked-challenge-id" code := "mocked-code" @@ -147,16 +167,19 @@ func TestApiServer_AuthTokenHandler(t *testing.T) { Error: &pb.RpcAccountLocalLinkSolveChallengeResponseError{Code: pb.RpcAccountLocalLinkSolveChallengeResponseError_UNKNOWN_ERROR}, }).Once() - req, _ := http.NewRequest("GET", "/v1/auth/token?challengeId="+challengeId+"&code="+code, nil) + // when + req, _ := http.NewRequest("GET", "/v1/auth/token?challenge_id="+challengeId+"&code="+code, nil) w := httptest.NewRecorder() fx.router.ServeHTTP(w, req) + // then require.Equal(t, http.StatusInternalServerError, w.Code) }) } func TestApiServer_GetSpacesHandler(t *testing.T) { t.Run("successful retrieval of spaces", func(t *testing.T) { + // given fx := newFixture(t) fx.accountInfo = &model.AccountInfo{TechSpaceId: "tech-space-id"} @@ -203,16 +226,19 @@ func TestApiServer_GetSpacesHandler(t *testing.T) { }, }, nil).Twice() + // when req, _ := http.NewRequest("GET", "/v1/spaces", nil) w := httptest.NewRecorder() fx.router.ServeHTTP(w, req) + // then require.Equal(t, http.StatusOK, w.Code) require.Contains(t, w.Body.String(), "My Workspace") require.Contains(t, w.Body.String(), "Another Workspace") }) t.Run("no spaces found", func(t *testing.T) { + // given fx := newFixture(t) fx.accountInfo = &model.AccountInfo{TechSpaceId: "tech-space-id"} @@ -222,16 +248,19 @@ func TestApiServer_GetSpacesHandler(t *testing.T) { Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, }).Once() + // when req, _ := http.NewRequest("GET", "/v1/spaces", nil) w := httptest.NewRecorder() fx.router.ServeHTTP(w, req) + // then require.Equal(t, http.StatusNotFound, w.Code) }) } func TestApiServer_CreateSpaceHandler(t *testing.T) { t.Run("successful create space", func(t *testing.T) { + // given fx := newFixture(t) fx.mwMock.On("WorkspaceCreate", mock.Anything, mock.Anything). Return(&pb.RpcWorkspaceCreateResponse{ @@ -239,44 +268,53 @@ func TestApiServer_CreateSpaceHandler(t *testing.T) { SpaceId: "new-space-id", }).Once() + // when body := strings.NewReader(`{"name":"New Space"}`) req, _ := http.NewRequest("POST", "/v1/spaces", body) w := httptest.NewRecorder() fx.router.ServeHTTP(w, req) + // then require.Equal(t, http.StatusOK, w.Code) require.Contains(t, w.Body.String(), "new-space-id") }) t.Run("invalid JSON", func(t *testing.T) { + // given fx := newFixture(t) + // when body := strings.NewReader(`{invalid json}`) req, _ := http.NewRequest("POST", "/v1/spaces", body) w := httptest.NewRecorder() fx.router.ServeHTTP(w, req) + // then require.Equal(t, http.StatusBadRequest, w.Code) }) t.Run("failed workspace creation", func(t *testing.T) { + // given fx := newFixture(t) fx.mwMock.On("WorkspaceCreate", mock.Anything, mock.Anything). Return(&pb.RpcWorkspaceCreateResponse{ Error: &pb.RpcWorkspaceCreateResponseError{Code: pb.RpcWorkspaceCreateResponseError_UNKNOWN_ERROR}, }).Once() + // when body := strings.NewReader(`{"name":"Fail Space"}`) req, _ := http.NewRequest("POST", "/v1/spaces", body) w := httptest.NewRecorder() fx.router.ServeHTTP(w, req) + // then require.Equal(t, http.StatusInternalServerError, w.Code) }) } func TestApiServer_GetSpaceMembersHandler(t *testing.T) { t.Run("successfully get space members", func(t *testing.T) { + // given fx := newFixture(t) fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything). @@ -293,15 +331,18 @@ func TestApiServer_GetSpaceMembersHandler(t *testing.T) { Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, }).Once() + // when req, _ := http.NewRequest("GET", "/v1/spaces/my-space/members", nil) w := httptest.NewRecorder() fx.router.ServeHTTP(w, req) + // then require.Equal(t, http.StatusOK, w.Code) require.Contains(t, w.Body.String(), "John Doe") }) t.Run("no members found", func(t *testing.T) { + // given fx := newFixture(t) fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything). @@ -310,16 +351,19 @@ func TestApiServer_GetSpaceMembersHandler(t *testing.T) { Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, }).Once() + // when req, _ := http.NewRequest("GET", "/v1/spaces/empty-space/members", nil) w := httptest.NewRecorder() fx.router.ServeHTTP(w, req) + // then require.Equal(t, http.StatusNotFound, w.Code) }) } func TestApiServer_GetObjectsForSpaceHandler(t *testing.T) { t.Run("successfully get objects for a space", func(t *testing.T) { + // given fx := newFixture(t) fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything). @@ -355,15 +399,18 @@ func TestApiServer_GetObjectsForSpaceHandler(t *testing.T) { }, }, nil).Maybe() + // when req, _ := http.NewRequest("GET", "/v1/spaces/my-space/objects", nil) w := httptest.NewRecorder() fx.router.ServeHTTP(w, req) + // then require.Equal(t, http.StatusOK, w.Code) require.Contains(t, w.Body.String(), "My Object") }) t.Run("no objects found", func(t *testing.T) { + // given fx := newFixture(t) fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything). @@ -372,38 +419,42 @@ func TestApiServer_GetObjectsForSpaceHandler(t *testing.T) { Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, }).Once() + // when req, _ := http.NewRequest("GET", "/v1/spaces/empty-space/objects", nil) w := httptest.NewRecorder() fx.router.ServeHTTP(w, req) + // then require.Equal(t, http.StatusNotFound, w.Code) }) } func TestApiServer_GetObjectHandler(t *testing.T) { t.Run("object found", func(t *testing.T) { + // given fx := newFixture(t) fx.mwMock.On("ObjectShow", mock.Anything, &pb.RpcObjectShowRequest{ SpaceId: "my-space", ObjectId: "obj-1", - }).Return(&pb.RpcObjectShowResponse{ - Error: &pb.RpcObjectShowResponseError{Code: pb.RpcObjectShowResponseError_NULL}, - ObjectView: &model.ObjectView{ - RootId: "root-1", - Details: []*model.ObjectViewDetailsSet{ - { - Details: &types.Struct{ - Fields: map[string]*types.Value{ - "name": pbtypes.String("Found Object"), - "type": pbtypes.String("basic-type-id"), - "iconEmoji": pbtypes.String("ðŸ”"), + }). + Return(&pb.RpcObjectShowResponse{ + Error: &pb.RpcObjectShowResponseError{Code: pb.RpcObjectShowResponseError_NULL}, + ObjectView: &model.ObjectView{ + RootId: "root-1", + Details: []*model.ObjectViewDetailsSet{ + { + Details: &types.Struct{ + Fields: map[string]*types.Value{ + "name": pbtypes.String("Found Object"), + "type": pbtypes.String("basic-type-id"), + "iconEmoji": pbtypes.String("ðŸ”"), + }, }, }, }, }, - }, - }, nil).Once() + }, nil).Once() // Type resolution mock fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything).Return(&pb.RpcObjectSearchResponse{ @@ -417,15 +468,18 @@ func TestApiServer_GetObjectHandler(t *testing.T) { }, }, nil).Once() + // when req, _ := http.NewRequest("GET", "/v1/spaces/my-space/objects/obj-1", nil) w := httptest.NewRecorder() fx.router.ServeHTTP(w, req) + // then require.Equal(t, http.StatusOK, w.Code) require.Contains(t, w.Body.String(), "Found Object") }) t.Run("object not found", func(t *testing.T) { + // given fx := newFixture(t) fx.mwMock.On("ObjectShow", mock.Anything, mock.Anything). @@ -433,16 +487,19 @@ func TestApiServer_GetObjectHandler(t *testing.T) { Error: &pb.RpcObjectShowResponseError{Code: pb.RpcObjectShowResponseError_NOT_FOUND}, }, nil).Once() + // when req, _ := http.NewRequest("GET", "/v1/spaces/my-space/objects/missing-obj", nil) w := httptest.NewRecorder() fx.router.ServeHTTP(w, req) + // then require.Equal(t, http.StatusNotFound, w.Code) }) } func TestApiServer_CreateObjectHandler(t *testing.T) { t.Run("successful object creation", func(t *testing.T) { + // given fx := newFixture(t) fx.mwMock.On("ObjectCreate", mock.Anything, mock.Anything). @@ -458,27 +515,33 @@ func TestApiServer_CreateObjectHandler(t *testing.T) { }, }).Once() + // when body := strings.NewReader(`{"name":"New Object","icon":"🆕","template_id":"","object_type_unique_key":"basic","with_chat":false}`) req, _ := http.NewRequest("POST", "/v1/spaces/my-space/objects", body) w := httptest.NewRecorder() fx.router.ServeHTTP(w, req) + // then require.Equal(t, http.StatusOK, w.Code) require.Contains(t, w.Body.String(), "new-obj-id") }) - t.Run("invalid JSON", func(t *testing.T) { + t.Run("invalid json", func(t *testing.T) { + // given fx := newFixture(t) + // when body := strings.NewReader(`{invalid json}`) req, _ := http.NewRequest("POST", "/v1/spaces/my-space/objects", body) w := httptest.NewRecorder() fx.router.ServeHTTP(w, req) + // then require.Equal(t, http.StatusBadRequest, w.Code) }) t.Run("creation error", func(t *testing.T) { + // given fx := newFixture(t) fx.mwMock.On("ObjectCreate", mock.Anything, mock.Anything). @@ -486,28 +549,38 @@ func TestApiServer_CreateObjectHandler(t *testing.T) { Error: &pb.RpcObjectCreateResponseError{Code: pb.RpcObjectCreateResponseError_UNKNOWN_ERROR}, }).Once() + // when body := strings.NewReader(`{"name":"Fail Object"}`) req, _ := http.NewRequest("POST", "/v1/spaces/my-space/objects", body) w := httptest.NewRecorder() fx.router.ServeHTTP(w, req) + // then require.Equal(t, http.StatusInternalServerError, w.Code) }) } func TestApiServer_UpdateObjectHandler(t *testing.T) { - fx := newFixture(t) + t.Run("not implemented", func(t *testing.T) { + // given + fx := newFixture(t) - body := strings.NewReader(`{"name":"Updated Object"}`) - req, _ := http.NewRequest("PUT", "/v1/spaces/my-space/objects/obj-1", body) - w := httptest.NewRecorder() - fx.router.ServeHTTP(w, req) + // when + body := strings.NewReader(`{"name":"Updated Object"}`) + req, _ := http.NewRequest("PUT", "/v1/spaces/my-space/objects/obj-1", body) + w := httptest.NewRecorder() + fx.router.ServeHTTP(w, req) - require.Equal(t, http.StatusNotImplemented, w.Code) + // then + require.Equal(t, http.StatusNotImplemented, w.Code) + }) + + // TODO: further tests } func TestApiServer_GetObjectTypesHandler(t *testing.T) { t.Run("types found", func(t *testing.T) { + // given fx := newFixture(t) fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything). @@ -525,15 +598,18 @@ func TestApiServer_GetObjectTypesHandler(t *testing.T) { Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, }).Once() + // when req, _ := http.NewRequest("GET", "/v1/spaces/my-space/objectTypes", nil) w := httptest.NewRecorder() fx.router.ServeHTTP(w, req) + // then require.Equal(t, http.StatusOK, w.Code) require.Contains(t, w.Body.String(), "Type One") }) t.Run("no types found", func(t *testing.T) { + // given fx := newFixture(t) fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything). @@ -542,16 +618,19 @@ func TestApiServer_GetObjectTypesHandler(t *testing.T) { Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, }).Once() + // when req, _ := http.NewRequest("GET", "/v1/spaces/my-space/objectTypes", nil) w := httptest.NewRecorder() fx.router.ServeHTTP(w, req) + // then require.Equal(t, http.StatusNotFound, w.Code) }) } func TestApiServer_GetObjectTypeTemplatesHandler(t *testing.T) { t.Run("templates found", func(t *testing.T) { + // given fx := newFixture(t) // Mock template type search @@ -580,7 +659,7 @@ func TestApiServer_GetObjectTypeTemplatesHandler(t *testing.T) { Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, }).Once() - // Mock template show + // Mock object show for template details fx.mwMock.On("ObjectShow", mock.Anything, mock.Anything).Return(&pb.RpcObjectShowResponse{ Error: &pb.RpcObjectShowResponseError{Code: pb.RpcObjectShowResponseError_NULL}, ObjectView: &model.ObjectView{ @@ -597,15 +676,18 @@ func TestApiServer_GetObjectTypeTemplatesHandler(t *testing.T) { }, }, nil).Once() + // when req, _ := http.NewRequest("GET", "/v1/spaces/my-space/objectTypes/target-type-id/templates", nil) w := httptest.NewRecorder() fx.router.ServeHTTP(w, req) + // then require.Equal(t, http.StatusOK, w.Code) require.Contains(t, w.Body.String(), "Template Name") }) t.Run("no template type found", func(t *testing.T) { + // given fx := newFixture(t) fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything). @@ -614,16 +696,19 @@ func TestApiServer_GetObjectTypeTemplatesHandler(t *testing.T) { Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, }).Once() + // when req, _ := http.NewRequest("GET", "/v1/spaces/my-space/objectTypes/missing-type-id/templates", nil) w := httptest.NewRecorder() fx.router.ServeHTTP(w, req) + // then require.Equal(t, http.StatusNotFound, w.Code) }) } func TestApiServer_GetObjectsHandler(t *testing.T) { t.Run("objects found globally", func(t *testing.T) { + // given fx := newFixture(t) // Mock retrieving spaces first @@ -656,10 +741,12 @@ func TestApiServer_GetObjectsHandler(t *testing.T) { Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, }).Once() + // when req, _ := http.NewRequest("GET", "/v1/objects", nil) w := httptest.NewRecorder() fx.router.ServeHTTP(w, req) + // then require.Equal(t, http.StatusOK, w.Code) require.Contains(t, w.Body.String(), "Global Object") }) diff --git a/cmd/api/schemas.go b/cmd/api/schemas.go index 2ef084315..b3f32bbe1 100644 --- a/cmd/api/schemas.go +++ b/cmd/api/schemas.go @@ -1,5 +1,14 @@ package api +type AuthDisplayCodeResponse struct { + ChallengeId string `json:"challenge_id" example:"67647f5ecda913e9a2e11b26"` +} + +type AuthTokenResponse struct { + SessionToken string `json:"session_token" example:""` + AppKey string `json:"app_key" example:""` +} + type Space struct { Type string `json:"type" example:"space"` Id string `json:"id" example:"bafyreigyfkt6rbv24sbv5aq2hko3bhmv5xxlf22b4bypdu6j7hnphm3psq.23me69r569oi1"` From 02d1c0906fdc8b66e8d8a3c7de48723e5e1712cb Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Thu, 19 Dec 2024 23:31:11 +0100 Subject: [PATCH 060/279] GO-4459 Refactor space tests --- cmd/api/docs/docs.go | 142 +++++++++++++++++++++----------- cmd/api/docs/swagger.json | 142 +++++++++++++++++++++----------- cmd/api/docs/swagger.yaml | 106 +++++++++++++++--------- cmd/api/handlers.go | 43 +++++----- cmd/api/handlers_test.go | 169 ++++++++++++++++++++++++++++++++------ cmd/api/main.go | 2 +- cmd/api/schemas.go | 17 +++- 7 files changed, 435 insertions(+), 186 deletions(-) diff --git a/cmd/api/docs/docs.go b/cmd/api/docs/docs.go index 85896294c..ae8c64d50 100644 --- a/cmd/api/docs/docs.go +++ b/cmd/api/docs/docs.go @@ -38,9 +38,9 @@ const docTemplate = `{ "summary": "Open a modal window with a code in Anytype Desktop app", "responses": { "200": { - "description": "Success", + "description": "Challenge ID", "schema": { - "type": "string" + "$ref": "#/definitions/api.AuthDisplayCodeResponse" } }, "502": { @@ -82,12 +82,9 @@ const docTemplate = `{ ], "responses": { "200": { - "description": "Access and refresh tokens", + "description": "Authentication token", "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } + "$ref": "#/definitions/api.AuthTokenResponse" } }, "400": { @@ -203,13 +200,7 @@ const docTemplate = `{ "200": { "description": "List of spaces", "schema": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "$ref": "#/definitions/api.Space" - } - } + "$ref": "#/definitions/api.SpacesResponse" } }, "403": { @@ -258,7 +249,7 @@ const docTemplate = `{ "200": { "description": "Space created successfully", "schema": { - "$ref": "#/definitions/api.Space" + "$ref": "#/definitions/api.CreateSpaceResponse" } }, "403": { @@ -314,13 +305,7 @@ const docTemplate = `{ "200": { "description": "List of members", "schema": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "$ref": "#/definitions/api.SpaceMember" - } - } + "$ref": "#/definitions/api.MembersResponse" } }, "403": { @@ -1003,6 +988,28 @@ const docTemplate = `{ } } }, + "api.AuthDisplayCodeResponse": { + "type": "object", + "properties": { + "challenge_id": { + "type": "string", + "example": "67647f5ecda913e9a2e11b26" + } + } + }, + "api.AuthTokenResponse": { + "type": "object", + "properties": { + "app_key": { + "type": "string", + "example": "" + }, + "session_token": { + "type": "string", + "example": "" + } + } + }, "api.Block": { "type": "object", "properties": { @@ -1088,6 +1095,19 @@ const docTemplate = `{ } } }, + "api.CreateSpaceResponse": { + "type": "object", + "properties": { + "name": { + "type": "string", + "example": "Space Name" + }, + "space_id": { + "type": "string", + "example": "bafyreigyfkt6rbv24sbv5aq2hko3bhmv5xxlf22b4bypdu6j7hnphm3psq.23me69r569oi1" + } + } + }, "api.Detail": { "type": "object", "properties": { @@ -1152,6 +1172,50 @@ const docTemplate = `{ } } }, + "api.Member": { + "type": "object", + "properties": { + "global_name": { + "type": "string", + "example": "john.any" + }, + "icon": { + "type": "string", + "example": "http://127.0.0.1:31006/image/bafybeieptz5hvcy6txplcvphjbbh5yjc2zqhmihs3owkh5oab4ezauzqay?width=100" + }, + "id": { + "type": "string", + "example": "_participant_bafyreigyfkt6rbv24sbv5aq2hko1bhmv5xxlf22b4bypdu6j7hnphm3psq_23me69r569oi1_AAjEaEwPF4nkEh9AWkqEnzcQ8HziBB4ETjiTpvRCQvWnSMDZ" + }, + "identity": { + "type": "string", + "example": "AAjEaEwPF4nkEh7AWkqEnzcQ8HziGB4ETjiTpvRCQvWnSMDZ" + }, + "name": { + "type": "string", + "example": "John Doe" + }, + "role": { + "type": "string", + "example": "Owner" + }, + "type": { + "type": "string", + "example": "member" + } + } + }, + "api.MembersResponse": { + "type": "object", + "properties": { + "members": { + "type": "array", + "items": { + "$ref": "#/definitions/api.Member" + } + } + } + }, "api.MessageContent": { "type": "object", "properties": { @@ -1369,36 +1433,14 @@ const docTemplate = `{ } } }, - "api.SpaceMember": { + "api.SpacesResponse": { "type": "object", "properties": { - "global_name": { - "type": "string", - "example": "john.any" - }, - "icon": { - "type": "string", - "example": "http://127.0.0.1:31006/image/bafybeieptz5hvcy6txplcvphjbbh5yjc2zqhmihs3owkh5oab4ezauzqay?width=100" - }, - "id": { - "type": "string", - "example": "_participant_bafyreigyfkt6rbv24sbv5aq2hko1bhmv5xxlf22b4bypdu6j7hnphm3psq_23me69r569oi1_AAjEaEwPF4nkEh9AWkqEnzcQ8HziBB4ETjiTpvRCQvWnSMDZ" - }, - "identity": { - "type": "string", - "example": "AAjEaEwPF4nkEh7AWkqEnzcQ8HziGB4ETjiTpvRCQvWnSMDZ" - }, - "name": { - "type": "string", - "example": "John Doe" - }, - "role": { - "type": "string", - "example": "Owner" - }, - "type": { - "type": "string", - "example": "space_member" + "spaces": { + "type": "array", + "items": { + "$ref": "#/definitions/api.Space" + } } } }, diff --git a/cmd/api/docs/swagger.json b/cmd/api/docs/swagger.json index 63bbbca07..6ea28f9ba 100644 --- a/cmd/api/docs/swagger.json +++ b/cmd/api/docs/swagger.json @@ -32,9 +32,9 @@ "summary": "Open a modal window with a code in Anytype Desktop app", "responses": { "200": { - "description": "Success", + "description": "Challenge ID", "schema": { - "type": "string" + "$ref": "#/definitions/api.AuthDisplayCodeResponse" } }, "502": { @@ -76,12 +76,9 @@ ], "responses": { "200": { - "description": "Access and refresh tokens", + "description": "Authentication token", "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } + "$ref": "#/definitions/api.AuthTokenResponse" } }, "400": { @@ -197,13 +194,7 @@ "200": { "description": "List of spaces", "schema": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "$ref": "#/definitions/api.Space" - } - } + "$ref": "#/definitions/api.SpacesResponse" } }, "403": { @@ -252,7 +243,7 @@ "200": { "description": "Space created successfully", "schema": { - "$ref": "#/definitions/api.Space" + "$ref": "#/definitions/api.CreateSpaceResponse" } }, "403": { @@ -308,13 +299,7 @@ "200": { "description": "List of members", "schema": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "$ref": "#/definitions/api.SpaceMember" - } - } + "$ref": "#/definitions/api.MembersResponse" } }, "403": { @@ -997,6 +982,28 @@ } } }, + "api.AuthDisplayCodeResponse": { + "type": "object", + "properties": { + "challenge_id": { + "type": "string", + "example": "67647f5ecda913e9a2e11b26" + } + } + }, + "api.AuthTokenResponse": { + "type": "object", + "properties": { + "app_key": { + "type": "string", + "example": "" + }, + "session_token": { + "type": "string", + "example": "" + } + } + }, "api.Block": { "type": "object", "properties": { @@ -1082,6 +1089,19 @@ } } }, + "api.CreateSpaceResponse": { + "type": "object", + "properties": { + "name": { + "type": "string", + "example": "Space Name" + }, + "space_id": { + "type": "string", + "example": "bafyreigyfkt6rbv24sbv5aq2hko3bhmv5xxlf22b4bypdu6j7hnphm3psq.23me69r569oi1" + } + } + }, "api.Detail": { "type": "object", "properties": { @@ -1146,6 +1166,50 @@ } } }, + "api.Member": { + "type": "object", + "properties": { + "global_name": { + "type": "string", + "example": "john.any" + }, + "icon": { + "type": "string", + "example": "http://127.0.0.1:31006/image/bafybeieptz5hvcy6txplcvphjbbh5yjc2zqhmihs3owkh5oab4ezauzqay?width=100" + }, + "id": { + "type": "string", + "example": "_participant_bafyreigyfkt6rbv24sbv5aq2hko1bhmv5xxlf22b4bypdu6j7hnphm3psq_23me69r569oi1_AAjEaEwPF4nkEh9AWkqEnzcQ8HziBB4ETjiTpvRCQvWnSMDZ" + }, + "identity": { + "type": "string", + "example": "AAjEaEwPF4nkEh7AWkqEnzcQ8HziGB4ETjiTpvRCQvWnSMDZ" + }, + "name": { + "type": "string", + "example": "John Doe" + }, + "role": { + "type": "string", + "example": "Owner" + }, + "type": { + "type": "string", + "example": "member" + } + } + }, + "api.MembersResponse": { + "type": "object", + "properties": { + "members": { + "type": "array", + "items": { + "$ref": "#/definitions/api.Member" + } + } + } + }, "api.MessageContent": { "type": "object", "properties": { @@ -1363,36 +1427,14 @@ } } }, - "api.SpaceMember": { + "api.SpacesResponse": { "type": "object", "properties": { - "global_name": { - "type": "string", - "example": "john.any" - }, - "icon": { - "type": "string", - "example": "http://127.0.0.1:31006/image/bafybeieptz5hvcy6txplcvphjbbh5yjc2zqhmihs3owkh5oab4ezauzqay?width=100" - }, - "id": { - "type": "string", - "example": "_participant_bafyreigyfkt6rbv24sbv5aq2hko1bhmv5xxlf22b4bypdu6j7hnphm3psq_23me69r569oi1_AAjEaEwPF4nkEh9AWkqEnzcQ8HziBB4ETjiTpvRCQvWnSMDZ" - }, - "identity": { - "type": "string", - "example": "AAjEaEwPF4nkEh7AWkqEnzcQ8HziGB4ETjiTpvRCQvWnSMDZ" - }, - "name": { - "type": "string", - "example": "John Doe" - }, - "role": { - "type": "string", - "example": "Owner" - }, - "type": { - "type": "string", - "example": "space_member" + "spaces": { + "type": "array", + "items": { + "$ref": "#/definitions/api.Space" + } } } }, diff --git a/cmd/api/docs/swagger.yaml b/cmd/api/docs/swagger.yaml index 96613a99b..1a441344a 100644 --- a/cmd/api/docs/swagger.yaml +++ b/cmd/api/docs/swagger.yaml @@ -9,6 +9,21 @@ definitions: description: Type of attachment type: string type: object + api.AuthDisplayCodeResponse: + properties: + challenge_id: + example: 67647f5ecda913e9a2e11b26 + type: string + type: object + api.AuthTokenResponse: + properties: + app_key: + example: "" + type: string + session_token: + example: "" + type: string + type: object api.Block: properties: align: @@ -64,6 +79,15 @@ definitions: description: Identifier for the message being replied to type: string type: object + api.CreateSpaceResponse: + properties: + name: + example: Space Name + type: string + space_id: + example: bafyreigyfkt6rbv24sbv5aq2hko3bhmv5xxlf22b4bypdu6j7hnphm3psq.23me69r569oi1 + type: string + type: object api.Detail: properties: details: @@ -106,6 +130,37 @@ definitions: style: type: string type: object + api.Member: + properties: + global_name: + example: john.any + type: string + icon: + example: http://127.0.0.1:31006/image/bafybeieptz5hvcy6txplcvphjbbh5yjc2zqhmihs3owkh5oab4ezauzqay?width=100 + type: string + id: + example: _participant_bafyreigyfkt6rbv24sbv5aq2hko1bhmv5xxlf22b4bypdu6j7hnphm3psq_23me69r569oi1_AAjEaEwPF4nkEh9AWkqEnzcQ8HziBB4ETjiTpvRCQvWnSMDZ + type: string + identity: + example: AAjEaEwPF4nkEh7AWkqEnzcQ8HziGB4ETjiTpvRCQvWnSMDZ + type: string + name: + example: John Doe + type: string + role: + example: Owner + type: string + type: + example: member + type: string + type: object + api.MembersResponse: + properties: + members: + items: + $ref: '#/definitions/api.Member' + type: array + type: object api.MessageContent: properties: marks: @@ -259,29 +314,12 @@ definitions: example: bafyreiapey2g6e6za4zfxvlgwdy4hbbfu676gmwrhnqvjbxvrchr7elr3y type: string type: object - api.SpaceMember: + api.SpacesResponse: properties: - global_name: - example: john.any - type: string - icon: - example: http://127.0.0.1:31006/image/bafybeieptz5hvcy6txplcvphjbbh5yjc2zqhmihs3owkh5oab4ezauzqay?width=100 - type: string - id: - example: _participant_bafyreigyfkt6rbv24sbv5aq2hko1bhmv5xxlf22b4bypdu6j7hnphm3psq_23me69r569oi1_AAjEaEwPF4nkEh9AWkqEnzcQ8HziBB4ETjiTpvRCQvWnSMDZ - type: string - identity: - example: AAjEaEwPF4nkEh7AWkqEnzcQ8HziGB4ETjiTpvRCQvWnSMDZ - type: string - name: - example: John Doe - type: string - role: - example: Owner - type: string - type: - example: space_member - type: string + spaces: + items: + $ref: '#/definitions/api.Space' + type: array type: object api.Text: properties: @@ -338,9 +376,9 @@ paths: - application/json responses: "200": - description: Success + description: Challenge ID schema: - type: string + $ref: '#/definitions/api.AuthDisplayCodeResponse' "502": description: Internal server error schema: @@ -367,11 +405,9 @@ paths: - application/json responses: "200": - description: Access and refresh tokens + description: Authentication token schema: - additionalProperties: - type: string - type: object + $ref: '#/definitions/api.AuthTokenResponse' "400": description: Invalid input schema: @@ -449,11 +485,7 @@ paths: "200": description: List of spaces schema: - additionalProperties: - items: - $ref: '#/definitions/api.Space' - type: array - type: object + $ref: '#/definitions/api.SpacesResponse' "403": description: Unauthorized schema: @@ -485,7 +517,7 @@ paths: "200": description: Space created successfully schema: - $ref: '#/definitions/api.Space' + $ref: '#/definitions/api.CreateSpaceResponse' "403": description: Unauthorized schema: @@ -523,11 +555,7 @@ paths: "200": description: List of members schema: - additionalProperties: - items: - $ref: '#/definitions/api.SpaceMember' - type: array - type: object + $ref: '#/definitions/api.MembersResponse' "403": description: Unauthorized schema: diff --git a/cmd/api/handlers.go b/cmd/api/handlers.go index 076ecadfb..26f133ded 100644 --- a/cmd/api/handlers.go +++ b/cmd/api/handlers.go @@ -38,8 +38,8 @@ type AddMessageRequest struct { // @Tags auth // @Accept json // @Produce json -// @Success 200 {string} string "Success" -// @Failure 502 {object} ServerError "Internal server error" +// @Success 200 {object} AuthDisplayCodeResponse "Challenge ID" +// @Failure 502 {object} ServerError "Internal server error" // @Router /auth/displayCode [post] func (a *ApiServer) authDisplayCodeHandler(c *gin.Context) { resp := a.mw.AccountLocalLinkNewChallenge(c.Request.Context(), &pb.RpcAccountLocalLinkNewChallengeRequest{AppName: "api-test"}) @@ -59,11 +59,16 @@ func (a *ApiServer) authDisplayCodeHandler(c *gin.Context) { // @Produce json // @Param code query string true "The code retrieved from Anytype Desktop app" // @Param challenge_id query string true "The challenge ID" -// @Success 200 {object} map[string]string "Access and refresh tokens" +// @Success 200 {object} AuthTokenResponse "Authentication token" // @Failure 400 {object} ValidationError "Invalid input" // @Failure 502 {object} ServerError "Internal server error" // @Router /auth/token [get] func (a *ApiServer) authTokenHandler(c *gin.Context) { + if c.Query("challenge_id") == "" || c.Query("code") == "" { + c.JSON(http.StatusBadRequest, gin.H{"message": "Invalid input"}) + return + } + // Call AccountLocalLinkSolveChallenge to retrieve session token and app key resp := a.mw.AccountLocalLinkSolveChallenge(c.Request.Context(), &pb.RpcAccountLocalLinkSolveChallengeRequest{ ChallengeId: c.Query("challenge_id"), @@ -89,7 +94,7 @@ func (a *ApiServer) authTokenHandler(c *gin.Context) { // @Produce json // @Param offset query int false "The number of items to skip before starting to collect the result set" // @Param limit query int false "The number of items to return" default(100) -// @Success 200 {object} map[string][]Space "List of spaces" +// @Success 200 {object} SpacesResponse "List of spaces" // @Failure 403 {object} UnauthorizedError "Unauthorized" // @Failure 404 {object} NotFoundError "Resource not found" // @Failure 502 {object} ServerError "Internal server error" @@ -153,7 +158,7 @@ func (a *ApiServer) getSpacesHandler(c *gin.Context) { spaces = append(spaces, workspace) } - c.JSON(http.StatusOK, gin.H{"spaces": spaces}) + c.JSON(http.StatusOK, SpacesResponse{Spaces: spaces}) } // createSpaceHandler creates a new space @@ -163,7 +168,7 @@ func (a *ApiServer) getSpacesHandler(c *gin.Context) { // @Accept json // @Produce json // @Param name body string true "Space Name" -// @Success 200 {object} Space "Space created successfully" +// @Success 200 {object} CreateSpaceResponse "Space created successfully" // @Failure 403 {object} UnauthorizedError "Unauthorized" // @Failure 502 {object} ServerError "Internal server error" // @Router /spaces [post] @@ -200,24 +205,24 @@ func (a *ApiServer) createSpaceHandler(c *gin.Context) { return } - c.JSON(http.StatusOK, gin.H{"spaceId": resp.SpaceId, "name": name, "iconOption": iconOption}) + c.JSON(http.StatusOK, CreateSpaceResponse{SpaceId: resp.SpaceId, Name: name}) } -// getSpaceMembersHandler retrieves a list of members for the specified space +// getMembersHandler retrieves a list of members for the specified space // // @Summary Retrieve a list of members for the specified Space // @Tags spaces // @Accept json // @Produce json -// @Param space_id path string true "The ID of the space" -// @Param offset query int false "The number of items to skip before starting to collect the result set" -// @Param limit query int false "The number of items to return" default(100) -// @Success 200 {object} map[string][]SpaceMember "List of members" -// @Failure 403 {object} UnauthorizedError "Unauthorized" -// @Failure 404 {object} NotFoundError "Resource not found" -// @Failure 502 {object} ServerError "Internal server error" +// @Param space_id path string true "The ID of the space" +// @Param offset query int false "The number of items to skip before starting to collect the result set" +// @Param limit query int false "The number of items to return" default(100) +// @Success 200 {object} MembersResponse "List of members" +// @Failure 403 {object} UnauthorizedError "Unauthorized" +// @Failure 404 {object} NotFoundError "Resource not found" +// @Failure 502 {object} ServerError "Internal server error" // @Router /spaces/{space_id}/members [get] -func (a *ApiServer) getSpaceMembersHandler(c *gin.Context) { +func (a *ApiServer) getMembersHandler(c *gin.Context) { spaceId := c.Param("space_id") offset := c.GetInt("offset") limit := c.GetInt("limit") @@ -258,11 +263,11 @@ func (a *ApiServer) getSpaceMembersHandler(c *gin.Context) { return } - members := make([]SpaceMember, 0, len(resp.Records)) + members := make([]Member, 0, len(resp.Records)) for _, record := range resp.Records { icon := a.getIconFromEmojiOrImage(record.Fields["iconEmoji"].GetStringValue(), record.Fields["iconImage"].GetStringValue()) - member := SpaceMember{ + member := Member{ Type: "space_member", Id: record.Fields["id"].GetStringValue(), Name: record.Fields["name"].GetStringValue(), @@ -275,7 +280,7 @@ func (a *ApiServer) getSpaceMembersHandler(c *gin.Context) { members = append(members, member) } - c.JSON(http.StatusOK, gin.H{"members": members}) + c.JSON(http.StatusOK, MembersResponse{Members: members}) } // getObjectsForSpaceHandler retrieves objects in a specific space diff --git a/cmd/api/handlers_test.go b/cmd/api/handlers_test.go index 6cd32a2ea..a5113f239 100644 --- a/cmd/api/handlers_test.go +++ b/cmd/api/handlers_test.go @@ -2,8 +2,10 @@ package api import ( "encoding/json" + "fmt" "net/http" "net/http/httptest" + "regexp" "strings" "testing" @@ -18,10 +20,19 @@ import ( "github.com/anyproto/anytype-heart/core/mock_core" "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/pb/service/mock_service" + "github.com/anyproto/anytype-heart/pkg/lib/bundle" "github.com/anyproto/anytype-heart/pkg/lib/pb/model" "github.com/anyproto/anytype-heart/util/pbtypes" ) +const ( + offset = 0 + limit = 100 + techSpaceId = "tech-space-id" + gatewayUrl = "http://localhost:31006" + iconImage = "bafyreialsgoyflf3etjm3parzurivyaukzivwortf32b4twnlwpwocsrri" +) + type fixture struct { *ApiServer mwMock *mock_service.MockClientCommandsServer @@ -51,7 +62,7 @@ func newFixture(t *testing.T) *fixture { readOnly := apiServer.router.Group("/v1") { readOnly.GET("/spaces", paginator, apiServer.getSpacesHandler) - readOnly.GET("/spaces/:space_id/members", paginator, apiServer.getSpaceMembersHandler) + readOnly.GET("/spaces/:space_id/members", paginator, apiServer.getMembersHandler) readOnly.GET("/spaces/:space_id/objects", paginator, apiServer.getObjectsForSpaceHandler) readOnly.GET("/spaces/:space_id/objects/:object_id", apiServer.getObjectHandler) readOnly.GET("/spaces/:space_id/objectTypes", paginator, apiServer.getObjectTypesHandler) @@ -153,6 +164,19 @@ func TestApiServer_AuthTokenHandler(t *testing.T) { require.Equal(t, appKey, response.AppKey) }) + t.Run("bad request", func(t *testing.T) { + // given + fx := newFixture(t) + + // when + req, _ := http.NewRequest("GET", "/v1/auth/token", nil) + w := httptest.NewRecorder() + fx.router.ServeHTTP(w, req) + + // then + require.Equal(t, http.StatusBadRequest, w.Code) + }) + t.Run("failed token retrieval", func(t *testing.T) { // given fx := newFixture(t) @@ -181,10 +205,46 @@ func TestApiServer_GetSpacesHandler(t *testing.T) { t.Run("successful retrieval of spaces", func(t *testing.T) { // given fx := newFixture(t) - fx.accountInfo = &model.AccountInfo{TechSpaceId: "tech-space-id"} + fx.accountInfo = &model.AccountInfo{TechSpaceId: techSpaceId, GatewayUrl: gatewayUrl} - fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything).Return(&pb.RpcObjectSearchResponse{ + fx.mwMock.On("ObjectSearch", mock.Anything, &pb.RpcObjectSearchRequest{ + SpaceId: techSpaceId, + Filters: []*model.BlockContentDataviewFilter{ + { + RelationKey: bundle.RelationKeyLayout.String(), + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.Int64(int64(model.ObjectType_spaceView)), + }, + { + RelationKey: bundle.RelationKeySpaceLocalStatus.String(), + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.Int64(int64(model.SpaceStatus_Ok)), + }, + { + RelationKey: bundle.RelationKeySpaceRemoteStatus.String(), + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.Int64(int64(model.SpaceStatus_Ok)), + }, + }, + Sorts: []*model.BlockContentDataviewSort{ + { + RelationKey: "name", + Type: model.BlockContentDataviewSort_Asc, + }, + }, + Keys: []string{"targetSpaceId", "name", "iconEmoji", "iconImage"}, + Offset: offset, + Limit: limit, + }).Return(&pb.RpcObjectSearchResponse{ Records: []*types.Struct{ + { + Fields: map[string]*types.Value{ + "name": pbtypes.String("Another Workspace"), + "targetSpaceId": pbtypes.String("another-space-id"), + "iconEmoji": pbtypes.String(""), + "iconImage": pbtypes.String(iconImage), + }, + }, { Fields: map[string]*types.Value{ "name": pbtypes.String("My Workspace"), @@ -193,14 +253,6 @@ func TestApiServer_GetSpacesHandler(t *testing.T) { "iconImage": pbtypes.String(""), }, }, - { - Fields: map[string]*types.Value{ - "name": pbtypes.String("Another Workspace"), - "targetSpaceId": pbtypes.String("another-space-id"), - "iconEmoji": pbtypes.String(""), - "iconImage": pbtypes.String("bafyreialsgoyflf3etjm3parzurivyaukzivwortf32b4twnlwpwocsrri"), - }, - }, }, Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, }).Once() @@ -227,20 +279,29 @@ func TestApiServer_GetSpacesHandler(t *testing.T) { }, nil).Twice() // when - req, _ := http.NewRequest("GET", "/v1/spaces", nil) + req, _ := http.NewRequest("GET", fmt.Sprintf("/v1/spaces?offset=%d&limit=%d", offset, limit), nil) w := httptest.NewRecorder() fx.router.ServeHTTP(w, req) // then require.Equal(t, http.StatusOK, w.Code) - require.Contains(t, w.Body.String(), "My Workspace") - require.Contains(t, w.Body.String(), "Another Workspace") + + var response SpacesResponse + err := json.Unmarshal(w.Body.Bytes(), &response) + require.NoError(t, err) + require.Len(t, response.Spaces, 2) + require.Equal(t, "Another Workspace", response.Spaces[0].Name) + require.Equal(t, "another-space-id", response.Spaces[0].Id) + require.Regexpf(t, regexp.MustCompile(gatewayUrl+`/image/`+iconImage), response.Spaces[0].Icon, "Icon URL does not match") + require.Equal(t, "My Workspace", response.Spaces[1].Name) + require.Equal(t, "my-space-id", response.Spaces[1].Id) + require.Equal(t, "🚀", response.Spaces[1].Icon) }) t.Run("no spaces found", func(t *testing.T) { // given fx := newFixture(t) - fx.accountInfo = &model.AccountInfo{TechSpaceId: "tech-space-id"} + fx.accountInfo = &model.AccountInfo{TechSpaceId: techSpaceId} fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything). Return(&pb.RpcObjectSearchResponse{ @@ -249,13 +310,47 @@ func TestApiServer_GetSpacesHandler(t *testing.T) { }).Once() // when - req, _ := http.NewRequest("GET", "/v1/spaces", nil) + req, _ := http.NewRequest("GET", fmt.Sprintf("/v1/spaces?offset=%d&limit=%d", offset, limit), nil) w := httptest.NewRecorder() fx.router.ServeHTTP(w, req) // then require.Equal(t, http.StatusNotFound, w.Code) }) + + t.Run("failed workspace open", func(t *testing.T) { + // given + fx := newFixture(t) + fx.accountInfo = &model.AccountInfo{TechSpaceId: techSpaceId} + + fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything). + Return(&pb.RpcObjectSearchResponse{ + Records: []*types.Struct{ + { + Fields: map[string]*types.Value{ + "name": pbtypes.String("My Workspace"), + "targetSpaceId": pbtypes.String("my-space-id"), + "iconEmoji": pbtypes.String("🚀"), + "iconImage": pbtypes.String(""), + }, + }, + }, + Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, + }).Once() + + fx.mwMock.On("WorkspaceOpen", mock.Anything, mock.Anything). + Return(&pb.RpcWorkspaceOpenResponse{ + Error: &pb.RpcWorkspaceOpenResponseError{Code: pb.RpcWorkspaceOpenResponseError_UNKNOWN_ERROR}, + }, nil).Once() + + // when + req, _ := http.NewRequest("GET", fmt.Sprintf("/v1/spaces?offset=%d&limit=%d", offset, limit), nil) + w := httptest.NewRecorder() + fx.router.ServeHTTP(w, req) + + // then + require.Equal(t, http.StatusInternalServerError, w.Code) + }) } func TestApiServer_CreateSpaceHandler(t *testing.T) { @@ -312,19 +407,31 @@ func TestApiServer_CreateSpaceHandler(t *testing.T) { }) } -func TestApiServer_GetSpaceMembersHandler(t *testing.T) { - t.Run("successfully get space members", func(t *testing.T) { +func TestApiServer_GetMembersHandler(t *testing.T) { + t.Run("successfully get members", func(t *testing.T) { // given fx := newFixture(t) + fx.accountInfo = &model.AccountInfo{TechSpaceId: techSpaceId, GatewayUrl: gatewayUrl} fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything). Return(&pb.RpcObjectSearchResponse{ Records: []*types.Struct{ { Fields: map[string]*types.Value{ - "id": pbtypes.String("member-1"), - "name": pbtypes.String("John Doe"), - "iconEmoji": pbtypes.String("👤"), + "id": pbtypes.String("member-1"), + "name": pbtypes.String("John Doe"), + "iconEmoji": pbtypes.String("👤"), + "identity": pbtypes.String("AAjEaEwPF4nkEh7AWkqEnzcQ8HziGB4ETjiTpvRCQvWnSMDZ"), + "globalName": pbtypes.String("john.any"), + }, + }, + { + Fields: map[string]*types.Value{ + "id": pbtypes.String("member-2"), + "name": pbtypes.String("Jane Doe"), + "iconImage": pbtypes.String(iconImage), + "identity": pbtypes.String("AAjLbEwPF4nkEh7AWkqEnzcQ8HziGB4ETjiTpvRCQvWnSMD4"), + "globalName": pbtypes.String("jane.any"), }, }, }, @@ -332,13 +439,25 @@ func TestApiServer_GetSpaceMembersHandler(t *testing.T) { }).Once() // when - req, _ := http.NewRequest("GET", "/v1/spaces/my-space/members", nil) + req, _ := http.NewRequest("GET", fmt.Sprintf("/v1/spaces/my-space/members?offset=%d&limit=%d", offset, limit), nil) w := httptest.NewRecorder() fx.router.ServeHTTP(w, req) // then require.Equal(t, http.StatusOK, w.Code) - require.Contains(t, w.Body.String(), "John Doe") + + var response MembersResponse + err := json.Unmarshal(w.Body.Bytes(), &response) + require.NoError(t, err) + require.Len(t, response.Members, 2) + require.Equal(t, "member-1", response.Members[0].Id) + require.Equal(t, "John Doe", response.Members[0].Name) + require.Equal(t, "👤", response.Members[0].Icon) + require.Equal(t, "john.any", response.Members[0].GlobalName) + require.Equal(t, "member-2", response.Members[1].Id) + require.Equal(t, "Jane Doe", response.Members[1].Name) + require.Regexpf(t, regexp.MustCompile(gatewayUrl+`/image/`+iconImage), response.Members[1].Icon, "Icon URL does not match") + require.Equal(t, "jane.any", response.Members[1].GlobalName) }) t.Run("no members found", func(t *testing.T) { @@ -352,7 +471,7 @@ func TestApiServer_GetSpaceMembersHandler(t *testing.T) { }).Once() // when - req, _ := http.NewRequest("GET", "/v1/spaces/empty-space/members", nil) + req, _ := http.NewRequest("GET", fmt.Sprintf("/v1/spaces/empty-space/members?offset=%d&limit=%d", offset, limit), nil) w := httptest.NewRecorder() fx.router.ServeHTTP(w, req) @@ -712,7 +831,7 @@ func TestApiServer_GetObjectsHandler(t *testing.T) { fx := newFixture(t) // Mock retrieving spaces first - fx.accountInfo = &model.AccountInfo{TechSpaceId: "tech-space-id"} + fx.accountInfo = &model.AccountInfo{TechSpaceId: techSpaceId} fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything).Return(&pb.RpcObjectSearchResponse{ Records: []*types.Struct{ { diff --git a/cmd/api/main.go b/cmd/api/main.go index 8d7e5c940..7f4ee53ad 100644 --- a/cmd/api/main.go +++ b/cmd/api/main.go @@ -101,7 +101,7 @@ func RunApiServer(ctx context.Context, mw service.ClientCommandsServer, mwIntern // readOnly.Use(a.PermissionMiddleware("read-only")) { readOnly.GET("/spaces", paginator, a.getSpacesHandler) - readOnly.GET("/spaces/:space_id/members", paginator, a.getSpaceMembersHandler) + readOnly.GET("/spaces/:space_id/members", paginator, a.getMembersHandler) readOnly.GET("/spaces/:space_id/objects", paginator, a.getObjectsForSpaceHandler) readOnly.GET("/spaces/:space_id/objects/:object_id", a.getObjectHandler) readOnly.GET("/spaces/:space_id/objectTypes", paginator, a.getObjectTypesHandler) diff --git a/cmd/api/schemas.go b/cmd/api/schemas.go index b3f32bbe1..ea38c0d47 100644 --- a/cmd/api/schemas.go +++ b/cmd/api/schemas.go @@ -9,6 +9,15 @@ type AuthTokenResponse struct { AppKey string `json:"app_key" example:""` } +type SpacesResponse struct { + Spaces []Space `json:"spaces"` +} + +type CreateSpaceResponse struct { + SpaceId string `json:"space_id" example:"bafyreigyfkt6rbv24sbv5aq2hko3bhmv5xxlf22b4bypdu6j7hnphm3psq.23me69r569oi1"` + Name string `json:"name" example:"Space Name"` +} + type Space struct { Type string `json:"type" example:"space"` Id string `json:"id" example:"bafyreigyfkt6rbv24sbv5aq2hko3bhmv5xxlf22b4bypdu6j7hnphm3psq.23me69r569oi1"` @@ -28,8 +37,12 @@ type Space struct { NetworkId string `json:"network_id" example:"N83gJpVd9MuNRZAuJLZ7LiMntTThhPc6DtzWWVjb1M3PouVU"` } -type SpaceMember struct { - Type string `json:"type" example:"space_member"` +type MembersResponse struct { + Members []Member `json:"members"` +} + +type Member struct { + Type string `json:"type" example:"member"` Id string `json:"id" example:"_participant_bafyreigyfkt6rbv24sbv5aq2hko1bhmv5xxlf22b4bypdu6j7hnphm3psq_23me69r569oi1_AAjEaEwPF4nkEh9AWkqEnzcQ8HziBB4ETjiTpvRCQvWnSMDZ"` Name string `json:"name" example:"John Doe"` Icon string `json:"icon" example:"http://127.0.0.1:31006/image/bafybeieptz5hvcy6txplcvphjbbh5yjc2zqhmihs3owkh5oab4ezauzqay?width=100"` From e7064202db787d0720b41684daccbb60ae49ad25 Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Mon, 23 Dec 2024 13:17:31 +0100 Subject: [PATCH 061/279] GO-4146 Add tree exporter --- core/debug/exporter/exporter.go | 111 ++++++++++++++++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 core/debug/exporter/exporter.go diff --git a/core/debug/exporter/exporter.go b/core/debug/exporter/exporter.go new file mode 100644 index 000000000..f0d99d9d8 --- /dev/null +++ b/core/debug/exporter/exporter.go @@ -0,0 +1,111 @@ +package exporter + +import ( + "context" + "fmt" + + anystore "github.com/anyproto/any-store" + "github.com/anyproto/any-sync/commonspace/headsync/headstorage" + "github.com/anyproto/any-sync/commonspace/object/accountdata" + "github.com/anyproto/any-sync/commonspace/object/acl/list" + "github.com/anyproto/any-sync/commonspace/object/tree/objecttree" + "github.com/anyproto/any-sync/commonspace/object/tree/treechangeproto" + "github.com/anyproto/any-sync/util/crypto" + "golang.org/x/exp/slices" +) + +type DataConverter interface { + Unmarshall(dataType string, decrypted []byte) (any, error) + Marshall(model any) (data []byte, dataType string, err error) +} + +func prepareExport(ctx context.Context, readable objecttree.ReadableObjectTree, store anystore.DB) (objecttree.ObjectTree, error) { + headStorage, err := headstorage.New(ctx, store) + if err != nil { + return nil, err + } + acl := readable.AclList() + root := acl.Root() + listStorage, err := list.CreateStorage(ctx, root, headStorage, store) + if err != nil { + return nil, err + } + keys, err := accountdata.NewRandom() + if err != nil { + return nil, err + } + newAcl, err := list.BuildAclListWithIdentity(keys, listStorage, list.NoOpAcceptorVerifier{}) + if err != nil { + return nil, err + } + treeStorage, err := objecttree.CreateStorage(ctx, readable.Header(), headStorage, store) + if err != nil { + return nil, err + } + writeTree, err := objecttree.BuildTestableTree(treeStorage, newAcl) + if err != nil { + return nil, err + } + return writeTree, nil +} + +type ExportParams struct { + Readable objecttree.ReadableObjectTree + Store anystore.DB + Converter DataConverter +} + +func ExportTree(ctx context.Context, params ExportParams) error { + writeTree, err := prepareExport(ctx, params.Readable, params.Store) + if err != nil { + return err + } + var ( + changeBuilder = objecttree.NewChangeBuilder(crypto.NewKeyStorage(), writeTree.Header()) + converter = params.Converter + changes []*treechangeproto.RawTreeChangeWithId + ) + err = writeTree.IterateRoot( + func(change *objecttree.Change, decrypted []byte) (any, error) { + return converter.Unmarshall(change.DataType, decrypted) + }, + func(change *objecttree.Change) bool { + if change.Id == writeTree.Id() { + return true + } + var ( + data []byte + dataType string + ) + data, dataType, err = converter.Marshall(change.Model) + if err != nil { + return false + } + // that means that change is unencrypted + change.ReadKeyId = "" + change.Data = data + change.DataType = dataType + var raw *treechangeproto.RawTreeChangeWithId + raw, err = changeBuilder.Marshall(change) + if err != nil { + return false + } + changes = append(changes, raw) + return true + }) + if err != nil { + return err + } + payload := objecttree.RawChangesPayload{ + NewHeads: writeTree.Heads(), + RawChanges: changes, + } + res, err := writeTree.AddRawChanges(ctx, payload) + if err != nil { + return err + } + if !slices.Equal(res.Heads, writeTree.Heads()) { + return fmt.Errorf("heads mismatch: %v != %v", res.Heads, writeTree.Heads()) + } + return nil +} From add103eb611fe0fa250734e6f04444d16e182efe Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Mon, 23 Dec 2024 15:34:00 +0100 Subject: [PATCH 062/279] GO-4146 Zip folder where the data is saved --- core/debug/treeexporter.go | 114 +++++++++++++++++++++++++++---------- 1 file changed, 84 insertions(+), 30 deletions(-) diff --git a/core/debug/treeexporter.go b/core/debug/treeexporter.go index ba0995874..5aff8b759 100644 --- a/core/debug/treeexporter.go +++ b/core/debug/treeexporter.go @@ -6,15 +6,17 @@ import ( "context" "fmt" "io" + "io/ioutil" stdlog "log" "os" "path/filepath" + "strings" "time" - "github.com/anyproto/any-sync/commonspace/object/tree/exporter" + anystore "github.com/anyproto/any-store" "github.com/anyproto/any-sync/commonspace/object/tree/objecttree" - "github.com/anyproto/anytype-heart/core/debug/treearchive" + "github.com/anyproto/anytype-heart/core/debug/exporter" "github.com/anyproto/anytype-heart/core/domain" "github.com/anyproto/anytype-heart/pkg/lib/localstore/objectstore" "github.com/anyproto/anytype-heart/util/anonymize" @@ -26,35 +28,50 @@ type treeExporter struct { s objectstore.ObjectStore anonymized bool id domain.FullID - zw *zip.Writer } func (e *treeExporter) Export(ctx context.Context, path string, tree objecttree.ReadableObjectTree) (filename string, err error) { - filename = filepath.Join(path, fmt.Sprintf("at.dbg.%s.%s.zip", e.id, time.Now().Format("20060102.150405.99"))) - archiveWriter, err := treearchive.NewArchiveWriter(filename) + var ( + exportDirPath = filepath.Join(path, fmt.Sprintf("at.dbg.%s.%s", e.id, time.Now().Format("20060102.150405.99"))) + dbPath = filepath.Join(exportDirPath, "db") + localStorePath = filepath.Join(exportDirPath, "localstore.json") + logPath = filepath.Join(exportDirPath, "creation.log") + ) + filename = exportDirPath + ".zip" + err = os.Mkdir(exportDirPath, 0755) if err != nil { return } - defer archiveWriter.Close() - - e.zw = archiveWriter.ZipWriter() - params := exporter.TreeExporterParams{ - ListStorageExporter: archiveWriter, - TreeStorageExporter: archiveWriter, - DataConverter: &changeDataConverter{anonymize: e.anonymized}, + defer func() { + _ = os.RemoveAll(exportDirPath) + }() + err = os.Mkdir(dbPath, 0755) + if err != nil { + return + } + anyStore, err := anystore.Open(ctx, dbPath, nil) + if err != nil { + return + } + defer func() { + _ = anyStore.Close() + }() + exportParams := exporter.ExportParams{ + Readable: tree, + Store: anyStore, + Converter: &changeDataConverter{anonymize: e.anonymized}, } - anySyncExporter := exporter.NewTreeExporter(params) - logBuf := bytes.NewBuffer(nil) - - e.log = stdlog.New(io.MultiWriter(logBuf, os.Stderr), "", stdlog.LstdFlags) - e.log.Printf("exporting tree and acl") st := time.Now() - err = anySyncExporter.ExportUnencrypted(tree) + err = exporter.ExportTree(ctx, exportParams) if err != nil { - e.log.Printf("export tree in zip error: %v", err) return } - + err = anyStore.Checkpoint(ctx, true) + if err != nil { + return + } + logBuf := bytes.NewBuffer(nil) + e.log = stdlog.New(io.MultiWriter(logBuf, os.Stderr), "", stdlog.LstdFlags) e.log.Printf("exported tree for a %v", time.Since(st)) data, err := e.s.SpaceIndex(e.id.SpaceID).GetInfosByIds([]string{e.id.ObjectID}) if err != nil { @@ -67,25 +84,21 @@ func (e *treeExporter) Export(ctx context.Context, path string, tree objecttree. data[0].Relations[i] = transform(r, e.anonymized, anonymize.Relation) } osData := pbtypes.Sprint(data[0]) - lsWr, er := e.zw.Create("localstore.json") + er := ioutil.WriteFile(localStorePath, []byte(osData), 0644) if er != nil { - e.log.Printf("create file in zip error: %v", er) + e.log.Printf("localstore.json write error: %v", err) } else { - if _, err := lsWr.Write([]byte(osData)); err != nil { - e.log.Printf("localstore.json write error: %v", err) - } else { - e.log.Printf("localstore.json wrote") - } + e.log.Printf("localstore.json wrote") } } else { - e.log.Printf("not data in objectstore") + e.log.Printf("no data in objectstore") } } - logW, err := e.zw.Create("creation.log") + err = ioutil.WriteFile(logPath, logBuf.Bytes(), 0644) if err != nil { return } - io.Copy(logW, logBuf) + err = zipFolder(exportDirPath, filename) return } @@ -95,3 +108,44 @@ func transform[T any](in T, transformed bool, f func(T) T) T { } return in } + +func zipFolder(source, targetZip string) error { + zipFile, err := os.Create(targetZip) + if err != nil { + return err + } + defer zipFile.Close() + + writer := zip.NewWriter(zipFile) + defer writer.Close() + + return filepath.Walk(source, func(path string, info os.FileInfo, err error) error { + if err != nil { + return err + } + relPath, err := filepath.Rel(source, path) + if err != nil { + return err + } + if relPath == "." { + return nil + } + if info.IsDir() { + _, err := writer.Create(strings.ReplaceAll(relPath, "\\", "/") + "/") + return err + } + f, err := os.Open(path) + if err != nil { + return err + } + defer f.Close() + zipWriter, err := writer.Create(strings.ReplaceAll(relPath, "\\", "/")) + if err != nil { + return err + } + + // Copy the file data to the zip entry. + _, err = io.Copy(zipWriter, f) + return err + }) +} From 45d776df3eca7b71ce432791721bcd37b81c0234 Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Mon, 23 Dec 2024 18:59:37 +0100 Subject: [PATCH 063/279] GO-4146 Move zip folder function to utils, write tests --- core/debug/exporter/importer.go | 12 +++++ core/debug/treeexporter.go | 53 ++----------------- util/ziputil/ziputil.go | 87 +++++++++++++++++++++++++++++++ util/ziputil/ziputil_test.go | 92 +++++++++++++++++++++++++++++++++ 4 files changed, 196 insertions(+), 48 deletions(-) create mode 100644 core/debug/exporter/importer.go create mode 100644 util/ziputil/ziputil.go create mode 100644 util/ziputil/ziputil_test.go diff --git a/core/debug/exporter/importer.go b/core/debug/exporter/importer.go new file mode 100644 index 000000000..ad81584e0 --- /dev/null +++ b/core/debug/exporter/importer.go @@ -0,0 +1,12 @@ +package exporter + +import ( + "context" + "path/filepath" + "strings" +) + +func ImportTree(ctx context.Context, path string) error { + targetDir := strings.TrimSuffix(sourceZip, filepath.Ext(sourceZip)) + return nil +} diff --git a/core/debug/treeexporter.go b/core/debug/treeexporter.go index 5aff8b759..bc11a1dd3 100644 --- a/core/debug/treeexporter.go +++ b/core/debug/treeexporter.go @@ -1,16 +1,13 @@ package debug import ( - "archive/zip" "bytes" "context" "fmt" "io" - "io/ioutil" stdlog "log" "os" "path/filepath" - "strings" "time" anystore "github.com/anyproto/any-store" @@ -21,6 +18,7 @@ import ( "github.com/anyproto/anytype-heart/pkg/lib/localstore/objectstore" "github.com/anyproto/anytype-heart/util/anonymize" "github.com/anyproto/anytype-heart/util/pbtypes" + "github.com/anyproto/anytype-heart/util/ziputil" ) type treeExporter struct { @@ -38,7 +36,7 @@ func (e *treeExporter) Export(ctx context.Context, path string, tree objecttree. logPath = filepath.Join(exportDirPath, "creation.log") ) filename = exportDirPath + ".zip" - err = os.Mkdir(exportDirPath, 0755) + err = os.MkdirAll(exportDirPath, 0755) if err != nil { return } @@ -84,7 +82,7 @@ func (e *treeExporter) Export(ctx context.Context, path string, tree objecttree. data[0].Relations[i] = transform(r, e.anonymized, anonymize.Relation) } osData := pbtypes.Sprint(data[0]) - er := ioutil.WriteFile(localStorePath, []byte(osData), 0644) + er := os.WriteFile(localStorePath, []byte(osData), 0644) if er != nil { e.log.Printf("localstore.json write error: %v", err) } else { @@ -94,11 +92,11 @@ func (e *treeExporter) Export(ctx context.Context, path string, tree objecttree. e.log.Printf("no data in objectstore") } } - err = ioutil.WriteFile(logPath, logBuf.Bytes(), 0644) + err = os.WriteFile(logPath, logBuf.Bytes(), 0644) if err != nil { return } - err = zipFolder(exportDirPath, filename) + err = ziputil.ZipFolder(exportDirPath, filename) return } @@ -108,44 +106,3 @@ func transform[T any](in T, transformed bool, f func(T) T) T { } return in } - -func zipFolder(source, targetZip string) error { - zipFile, err := os.Create(targetZip) - if err != nil { - return err - } - defer zipFile.Close() - - writer := zip.NewWriter(zipFile) - defer writer.Close() - - return filepath.Walk(source, func(path string, info os.FileInfo, err error) error { - if err != nil { - return err - } - relPath, err := filepath.Rel(source, path) - if err != nil { - return err - } - if relPath == "." { - return nil - } - if info.IsDir() { - _, err := writer.Create(strings.ReplaceAll(relPath, "\\", "/") + "/") - return err - } - f, err := os.Open(path) - if err != nil { - return err - } - defer f.Close() - zipWriter, err := writer.Create(strings.ReplaceAll(relPath, "\\", "/")) - if err != nil { - return err - } - - // Copy the file data to the zip entry. - _, err = io.Copy(zipWriter, f) - return err - }) -} diff --git a/util/ziputil/ziputil.go b/util/ziputil/ziputil.go new file mode 100644 index 000000000..60f97de04 --- /dev/null +++ b/util/ziputil/ziputil.go @@ -0,0 +1,87 @@ +package ziputil + +import ( + "archive/zip" + "io" + "os" + "path/filepath" + "strings" +) + +func ZipFolder(source, targetZip string) error { + zipFile, err := os.Create(targetZip) + if err != nil { + return err + } + defer zipFile.Close() + + writer := zip.NewWriter(zipFile) + defer writer.Close() + + return filepath.Walk(source, func(path string, info os.FileInfo, err error) error { + if err != nil { + return err + } + relPath, err := filepath.Rel(source, path) + if err != nil { + return err + } + if relPath == "." { + return nil + } + if info.IsDir() { + _, err := writer.Create(strings.ReplaceAll(relPath, "\\", "/") + "/") + return err + } + f, err := os.Open(path) + if err != nil { + return err + } + defer f.Close() + zipWriter, err := writer.Create(strings.ReplaceAll(relPath, "\\", "/")) + if err != nil { + return err + } + _, err = io.Copy(zipWriter, f) + return err + }) +} + +func UnzipFolder(sourceZip, targetDir string) error { + r, err := zip.OpenReader(sourceZip) + if err != nil { + return err + } + defer r.Close() + if err := os.MkdirAll(targetDir, 0755); err != nil { + return err + } + for _, file := range r.File { + extractedPath := filepath.Join(targetDir, file.Name) + if file.FileInfo().IsDir() { + if err := os.MkdirAll(extractedPath, 0700); err != nil { + return err + } + continue + } + if err := extractFile(file, extractedPath); err != nil { + return err + } + } + return nil +} + +func extractFile(file *zip.File, outputPath string) error { + rc, err := file.Open() + if err != nil { + return err + } + defer rc.Close() + outputFile, err := os.OpenFile(outputPath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, file.Mode()) + if err != nil { + return err + } + defer outputFile.Close() + _, err = io.Copy(outputFile, rc) + return err +} diff --git a/util/ziputil/ziputil_test.go b/util/ziputil/ziputil_test.go new file mode 100644 index 000000000..38805182e --- /dev/null +++ b/util/ziputil/ziputil_test.go @@ -0,0 +1,92 @@ +package ziputil + +import ( + "io/ioutil" + "os" + "path/filepath" + "testing" + + "github.com/stretchr/testify/require" +) + +func TestZipAndUnzipFolder(t *testing.T) { + var ( + sourceDir = t.TempDir() + tmpZipDir = t.TempDir() + unzipDir = t.TempDir() + ) + zipPath := filepath.Join(tmpZipDir, "test_archive.zip") + err := createFolders(sourceDir) + require.NoError(t, err) + err = ZipFolder(sourceDir, zipPath) + require.NoError(t, err) + err = UnzipFolder(zipPath, unzipDir) + require.NoError(t, err) + err = compareDirectories(sourceDir, unzipDir) + require.NoError(t, err) +} + +func createFolders(baseDir string) error { + subDir, err := os.MkdirTemp(baseDir, "subfolder") + if err != nil { + return err + } + file1 := filepath.Join(baseDir, "file1.txt") + if err := os.WriteFile(file1, []byte("Hello, World!"), 0700); err != nil { + return err + } + file2 := filepath.Join(subDir, "file2.txt") + if err := os.WriteFile(file2, []byte("Nested file content"), 0700); err != nil { + return err + } + return nil +} + +func compareDirectories(dir1, dir2 string) error { + return filepath.Walk(dir1, func(path string, info os.FileInfo, err error) error { + if err != nil { + return err + } + relPath, err := filepath.Rel(dir1, path) + if err != nil { + return err + } + if relPath == "." { + return nil + } + pathInDir2 := filepath.Join(dir2, relPath) + info2, err := os.Stat(pathInDir2) + if err != nil { + return err + } + if info.IsDir() { + if !info2.IsDir() { + return &mismatchError{path, pathInDir2, "dir vs file"} + } + } else { + if info2.IsDir() { + return &mismatchError{path, pathInDir2, "file vs dir"} + } + content1, err := ioutil.ReadFile(path) + if err != nil { + return err + } + content2, err := ioutil.ReadFile(pathInDir2) + if err != nil { + return err + } + if string(content1) != string(content2) { + return &mismatchError{path, pathInDir2, "file content mismatch"} + } + } + return nil + }) +} + +type mismatchError struct { + path1, path2, reason string +} + +func (m *mismatchError) Error() string { + return "Mismatch between " + m.path1 + " and " + m.path2 + ": " + m.reason +} From 7515b1242a1f0270964822cada6681a0b3b2f508 Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Mon, 23 Dec 2024 19:22:01 +0100 Subject: [PATCH 064/279] GO-4146 Add import tree method --- core/debug/exporter/importer.go | 86 +++++++++++++++++++++++++++++++-- 1 file changed, 83 insertions(+), 3 deletions(-) diff --git a/core/debug/exporter/importer.go b/core/debug/exporter/importer.go index ad81584e0..a91dee146 100644 --- a/core/debug/exporter/importer.go +++ b/core/debug/exporter/importer.go @@ -4,9 +4,89 @@ import ( "context" "path/filepath" "strings" + + anystore "github.com/anyproto/any-store" + "github.com/anyproto/any-sync/commonspace/headsync/headstorage" + "github.com/anyproto/any-sync/commonspace/object/accountdata" + "github.com/anyproto/any-sync/commonspace/object/acl/list" + "github.com/anyproto/any-sync/commonspace/object/tree/objecttree" + + "github.com/anyproto/anytype-heart/util/ziputil" ) -func ImportTree(ctx context.Context, path string) error { - targetDir := strings.TrimSuffix(sourceZip, filepath.Ext(sourceZip)) - return nil +type ImportResult struct { + Tree objecttree.ReadableObjectTree + FolderPath string +} + +type ImportParams struct { + FullTree bool + BeforeId string +} + +func (i ImportParams) Heads() []string { + if i.FullTree { + return nil + } + return []string{i.BeforeId} +} + +func ImportTree(ctx context.Context, path string, params ImportParams) (res ImportResult, err error) { + targetDir := strings.TrimSuffix(path, filepath.Ext(path)) + if err = ziputil.UnzipFolder(path, targetDir); err != nil { + return + } + anyStore, err := anystore.Open(ctx, targetDir, nil) + if err != nil { + return + } + defer anyStore.Close() + var ( + aclId string + treeId string + ) + headStorage, err := headstorage.New(ctx, anyStore) + if err != nil { + return + } + err = headStorage.IterateEntries(ctx, headstorage.IterOpts{}, func(entry headstorage.HeadsEntry) (bool, error) { + if entry.CommonSnapshot == "" { + aclId = entry.Id + return true, nil + } + treeId = entry.Id + return true, nil + }) + if err != nil { + return + } + listStorage, err := list.NewStorage(ctx, aclId, headStorage, anyStore) + if err != nil { + return + } + randomKeys, err := accountdata.NewRandom() + if err != nil { + return + } + acl, err := list.BuildAclListWithIdentity(randomKeys, listStorage, list.NoOpAcceptorVerifier{}) + if err != nil { + return + } + treeStorage, err := objecttree.NewStorage(ctx, treeId, headStorage, anyStore) + if err != nil { + return + } + objectTree, err := objecttree.BuildNonVerifiableHistoryTree(objecttree.HistoryTreeParams{ + Storage: treeStorage, + AclList: acl, + Heads: params.Heads(), + IncludeBeforeId: true, + }) + if err != nil { + return + } + return ImportResult{ + Tree: objectTree, + FolderPath: targetDir, + }, nil } From ce991273a49ff48583385b844d024eb3528a0e40 Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Mon, 23 Dec 2024 19:57:57 +0100 Subject: [PATCH 065/279] GO-4146 Use new archives in debugtree --- cmd/debugtree/debugtree.go | 46 ++++--- .../block/editor/state/test/buildfast_test.go | 128 ++++++++---------- core/debug/exporter/importer.go | 40 +++--- .../{treearchive => exporter}/treeimporter.go | 36 +---- core/debug/treearchive/archivewriter.go | 99 -------------- core/debug/treearchive/treearchive.go | 91 ------------- .../zipaclstorage/aclreadstorage.go | 77 ----------- .../zipaclstorage/aclwritestorage.go | 59 -------- .../ziptreestorage/treereadstorage.go | 116 ---------------- .../ziptreestorage/treewritestorage.go | 110 --------------- 10 files changed, 111 insertions(+), 691 deletions(-) rename core/debug/{treearchive => exporter}/treeimporter.go (69%) delete mode 100644 core/debug/treearchive/archivewriter.go delete mode 100644 core/debug/treearchive/treearchive.go delete mode 100644 core/debug/treearchive/zipaclstorage/aclreadstorage.go delete mode 100644 core/debug/treearchive/zipaclstorage/aclwritestorage.go delete mode 100644 core/debug/treearchive/ziptreestorage/treereadstorage.go delete mode 100644 core/debug/treearchive/ziptreestorage/treewritestorage.go diff --git a/cmd/debugtree/debugtree.go b/cmd/debugtree/debugtree.go index 43135ad7e..f5f6198cd 100644 --- a/cmd/debugtree/debugtree.go +++ b/cmd/debugtree/debugtree.go @@ -9,16 +9,19 @@ import ( "fmt" "io/ioutil" "log" + "os" "os/exec" + "path/filepath" "runtime" "strings" "time" "github.com/goccy/go-graphviz" + "github.com/gogo/protobuf/jsonpb" "github.com/gogo/protobuf/proto" "github.com/anyproto/anytype-heart/core/block/editor/state" - "github.com/anyproto/anytype-heart/core/debug/treearchive" + "github.com/anyproto/anytype-heart/core/debug/exporter" "github.com/anyproto/anytype-heart/pkg/lib/core/smartblock" "github.com/anyproto/anytype-heart/pkg/lib/pb/model" "github.com/anyproto/anytype-heart/util/pbtypes" @@ -42,22 +45,20 @@ func main() { return } fmt.Println("opening file...") - st := time.Now() - archive, err := treearchive.Open(*file) + var ( + st = time.Now() + ctx = context.Background() + ) + res, err := exporter.ImportStorage(ctx, *file) if err != nil { - log.Fatal("can't open debug file:", err) + log.Fatal("can't import the tree:", err) + } + objectTree, err := res.CreateReadableTree(*fromRoot, "") + if err != nil { + log.Fatal("can't create readable tree:", err) } - defer archive.Close() fmt.Printf("open archive done in %.1fs\n", time.Since(st).Seconds()) - - importer := treearchive.NewTreeImporter(archive.ListStorage(), archive.TreeStorage()) - st = time.Now() - err = importer.Import(*fromRoot, "") - if err != nil { - log.Fatal("can't import the tree", err) - } - fmt.Printf("import tree done in %.1fs\n", time.Since(st).Seconds()) - + importer := exporter.NewTreeImporter(objectTree) if *makeJson { treeJson, err := importer.Json() if err != nil { @@ -83,10 +84,11 @@ func main() { } fmt.Println("Change:") fmt.Println(pbtypes.Sprint(ch.Model)) - err = importer.Import(*fromRoot, ch.Id) + objectTree, err = res.CreateReadableTree(*fromRoot, ch.Id) if err != nil { - log.Fatal("can't import the tree before", ch.Id, err) + log.Fatal("can't create readable tree:", err) } + importer = exporter.NewTreeImporter(objectTree) } ot := importer.ObjectTree() di, err := ot.Debug(state.ChangeParser{}) @@ -126,12 +128,16 @@ func main() { if *objectStore { fmt.Println("fetch object store info..") - ls, err := archive.LocalStore() + f, err := os.Open(filepath.Join(res.FolderPath, "localstore.json")) if err != nil { - fmt.Println("can't open objectStore info:", err) - } else { - fmt.Println(pbtypes.Sprint(ls)) + log.Fatal("can't open objectStore info:", err) } + defer f.Close() + info := &model.ObjectInfo{} + if err = jsonpb.Unmarshal(f, info); err != nil { + log.Fatal("can't unmarshal objectStore info:", err) + } + fmt.Println(pbtypes.Sprint(info)) } if *makeTree { diff --git a/core/block/editor/state/test/buildfast_test.go b/core/block/editor/state/test/buildfast_test.go index 6b0846932..79b277e7c 100644 --- a/core/block/editor/state/test/buildfast_test.go +++ b/core/block/editor/state/test/buildfast_test.go @@ -1,72 +1,60 @@ package debug -import ( - "io/ioutil" - "log" - "os" - "path/filepath" - "testing" - "time" - - "github.com/stretchr/testify/require" - - "github.com/anyproto/anytype-heart/core/debug/treearchive" -) - -func TestBuildFast(t *testing.T) { - // Specify the directory you want to iterate - dir := "./testdata" - - // Read the directory - files, err := ioutil.ReadDir(dir) - if err != nil { - t.Fatalf("Failed to read dir: %s", err) - } - - // Iterate over the files - for _, file := range files { - t.Run(file.Name(), func(t *testing.T) { - filePath := filepath.Join(dir, file.Name()) - - // open the file - f, err := os.Open(filePath) - if err != nil { - t.Fatalf("Failed to open file: %s", err) - } - defer f.Close() - - testBuildFast(t, filePath) - }) - } -} - -func testBuildFast(b *testing.T, filepath string) { - // todo: replace with less heavy tree - archive, err := treearchive.Open(filepath) - if err != nil { - require.NoError(b, err) - } - defer archive.Close() - - importer := treearchive.NewTreeImporter(archive.ListStorage(), archive.TreeStorage()) - - err = importer.Import(false, "") - if err != nil { - log.Fatal("can't import the tree", err) - } - - start := time.Now() - _, err = importer.State() - if err != nil { - log.Fatal("can't build state:", err) - } - b.Logf("fast build took %s", time.Since(start)) - - importer2 := treearchive.NewTreeImporter(archive.ListStorage(), archive.TreeStorage()) - - err = importer2.Import(false, "") - if err != nil { - log.Fatal("can't import the tree", err) - } - -} +// TODO: revive at some point +// func TestBuildFast(t *testing.T) { +// // Specify the directory you want to iterate +// dir := "./testdata" +// +// // Read the directory +// files, err := ioutil.ReadDir(dir) +// if err != nil { +// t.Fatalf("Failed to read dir: %s", err) +// } +// +// // Iterate over the files +// for _, file := range files { +// t.Run(file.Name(), func(t *testing.T) { +// filePath := filepath.Join(dir, file.Name()) +// +// // open the file +// f, err := os.Open(filePath) +// if err != nil { +// t.Fatalf("Failed to open file: %s", err) +// } +// defer f.Close() +// +// testBuildFast(t, filePath) +// }) +// } +// } +// +// func testBuildFast(b *testing.T, filepath string) { +// // todo: replace with less heavy tree +// archive, err := treearchive.Open(filepath) +// if err != nil { +// require.NoError(b, err) +// } +// defer archive.Close() +// +// importer := exporter.NewTreeImporter(archive.ListStorage(), archive.TreeStorage()) +// +// err = importer.Import(false, "") +// if err != nil { +// log.Fatal("can't import the tree", err) +// } +// +// start := time.Now() +// _, err = importer.State() +// if err != nil { +// log.Fatal("can't build state:", err) +// } +// b.Logf("fast build took %s", time.Since(start)) +// +// importer2 := exporter.NewTreeImporter(archive.ListStorage(), archive.TreeStorage()) +// +// err = importer2.Import(false, "") +// if err != nil { +// log.Fatal("can't import the tree", err) +// } +// +// } diff --git a/core/debug/exporter/importer.go b/core/debug/exporter/importer.go index a91dee146..f60a3334f 100644 --- a/core/debug/exporter/importer.go +++ b/core/debug/exporter/importer.go @@ -2,6 +2,7 @@ package exporter import ( "context" + "os" "path/filepath" "strings" @@ -15,24 +16,35 @@ import ( ) type ImportResult struct { - Tree objecttree.ReadableObjectTree + List list.AclList + Storage objecttree.Storage FolderPath string } -type ImportParams struct { - FullTree bool - BeforeId string +func (i ImportResult) CreateReadableTree(fullTree bool, beforeId string) (objecttree.ReadableObjectTree, error) { + return objecttree.BuildNonVerifiableHistoryTree(objecttree.HistoryTreeParams{ + Storage: i.Storage, + AclList: i.List, + Heads: i.Heads(fullTree, beforeId), + IncludeBeforeId: true, + }) } -func (i ImportParams) Heads() []string { - if i.FullTree { +func (i ImportResult) Heads(fullTree bool, beforeId string) []string { + if fullTree { return nil } - return []string{i.BeforeId} + return []string{beforeId} } -func ImportTree(ctx context.Context, path string, params ImportParams) (res ImportResult, err error) { +func ImportStorage(ctx context.Context, path string) (res ImportResult, err error) { targetDir := strings.TrimSuffix(path, filepath.Ext(path)) + if _, err = os.Stat(targetDir); err == nil { + err = os.RemoveAll(targetDir) + if err != nil { + return + } + } if err = ziputil.UnzipFolder(path, targetDir); err != nil { return } @@ -76,17 +88,9 @@ func ImportTree(ctx context.Context, path string, params ImportParams) (res Impo if err != nil { return } - objectTree, err := objecttree.BuildNonVerifiableHistoryTree(objecttree.HistoryTreeParams{ - Storage: treeStorage, - AclList: acl, - Heads: params.Heads(), - IncludeBeforeId: true, - }) - if err != nil { - return - } return ImportResult{ - Tree: objectTree, + List: acl, + Storage: treeStorage, FolderPath: targetDir, }, nil } diff --git a/core/debug/treearchive/treeimporter.go b/core/debug/exporter/treeimporter.go similarity index 69% rename from core/debug/treearchive/treeimporter.go rename to core/debug/exporter/treeimporter.go index 82728b162..a9d3ccaab 100644 --- a/core/debug/treearchive/treeimporter.go +++ b/core/debug/exporter/treeimporter.go @@ -1,13 +1,10 @@ -package treearchive +package exporter import ( "errors" "fmt" - "github.com/anyproto/any-sync/commonspace/object/acl/list" - "github.com/anyproto/any-sync/commonspace/object/acl/liststorage" "github.com/anyproto/any-sync/commonspace/object/tree/objecttree" - "github.com/anyproto/any-sync/commonspace/object/tree/treestorage" "github.com/anyproto/anytype-heart/core/block/editor/state" "github.com/anyproto/anytype-heart/core/block/source" @@ -43,22 +40,18 @@ func (m MarshalledJsonChange) MarshalJSON() ([]byte, error) { type TreeImporter interface { ObjectTree() objecttree.ReadableObjectTree - State() (*state.State, error) // set fullStateChain to true to get full state chain, otherwise only the last state will be returned - Import(fromRoot bool, beforeId string) error + State() (*state.State, error) Json() (TreeJson, error) ChangeAt(idx int) (IdChange, error) } type treeImporter struct { - listStorage liststorage.ListStorage - treeStorage treestorage.TreeStorage - objectTree objecttree.ReadableObjectTree + objectTree objecttree.ReadableObjectTree } -func NewTreeImporter(listStorage liststorage.ListStorage, treeStorage treestorage.TreeStorage) TreeImporter { +func NewTreeImporter(objectTree objecttree.ReadableObjectTree) TreeImporter { return &treeImporter{ - listStorage: listStorage, - treeStorage: treeStorage, + objectTree: objectTree, } } @@ -83,25 +76,6 @@ func (t *treeImporter) State() (*state.State, error) { return st, nil } -func (t *treeImporter) Import(fullTree bool, beforeId string) (err error) { - aclList, err := list.BuildAclList(t.listStorage, list.NoOpAcceptorVerifier{}) - if err != nil { - return - } - var heads []string - if !fullTree { - heads = []string{beforeId} - } - t.objectTree, err = objecttree.BuildNonVerifiableHistoryTree(objecttree.HistoryTreeParams{ - TreeStorage: t.treeStorage, - AclList: aclList, - Heads: heads, - IncludeBeforeId: true, - }) - - return -} - func (t *treeImporter) Json() (treeJson TreeJson, err error) { treeJson = TreeJson{ Id: t.objectTree.Id(), diff --git a/core/debug/treearchive/archivewriter.go b/core/debug/treearchive/archivewriter.go deleted file mode 100644 index d5bea2f97..000000000 --- a/core/debug/treearchive/archivewriter.go +++ /dev/null @@ -1,99 +0,0 @@ -package treearchive - -import ( - "archive/zip" - "encoding/json" - "io/fs" - "os" - - "github.com/anyproto/any-sync/commonspace/object/acl/liststorage" - "github.com/anyproto/any-sync/commonspace/object/tree/treechangeproto" - "github.com/anyproto/any-sync/commonspace/object/tree/treestorage" - "github.com/anyproto/any-sync/consensus/consensusproto" - - "github.com/anyproto/anytype-heart/core/debug/treearchive/zipaclstorage" - "github.com/anyproto/anytype-heart/core/debug/treearchive/ziptreestorage" -) - -type ExportedObjectsJson struct { - AclId string `json:"aclId"` - TreeId string `json:"treeId"` -} - -type ArchiveWriter struct { - zw *zip.Writer - zf fs.File - treeId string - aclId string - storages []flushableStorage -} - -type flushableStorage interface { - FlushStorage() error -} - -func NewArchiveWriter(path string) (*ArchiveWriter, error) { - zf, err := os.Create(path) - if err != nil { - return nil, err - } - zw := zip.NewWriter(zf) - return &ArchiveWriter{ - zw: zw, - zf: zf, - }, nil -} - -func (e *ArchiveWriter) ZipWriter() *zip.Writer { - return e.zw -} - -func (e *ArchiveWriter) TreeStorage(root *treechangeproto.RawTreeChangeWithId) (treestorage.TreeStorage, error) { - e.treeId = root.Id - st, err := ziptreestorage.NewZipTreeWriteStorage(root, e.zw) - if err != nil { - return nil, err - } - e.storages = append(e.storages, st.(flushableStorage)) - return st, nil -} - -func (e *ArchiveWriter) ListStorage(root *consensusproto.RawRecordWithId) (liststorage.ListStorage, error) { - e.aclId = root.Id - st, err := zipaclstorage.NewACLWriteStorage(root, e.zw) - if err != nil { - return nil, err - } - e.storages = append(e.storages, st.(flushableStorage)) - return st, nil -} - -func (e *ArchiveWriter) Close() (err error) { - for _, st := range e.storages { - err = st.FlushStorage() - if err != nil { - return - } - } - exportedHeader, err := e.zw.CreateHeader(&zip.FileHeader{ - Name: "exported.json", - Method: zip.Deflate, - }) - if err != nil { - return - } - enc := json.NewEncoder(exportedHeader) - enc.SetIndent("", "\t") - err = enc.Encode(ExportedObjectsJson{ - TreeId: e.treeId, - AclId: e.aclId, - }) - if err != nil { - return - } - err = e.zw.Close() - if err != nil { - return - } - return e.zf.Close() -} diff --git a/core/debug/treearchive/treearchive.go b/core/debug/treearchive/treearchive.go deleted file mode 100644 index 951c23299..000000000 --- a/core/debug/treearchive/treearchive.go +++ /dev/null @@ -1,91 +0,0 @@ -package treearchive - -import ( - "archive/zip" - "encoding/json" - "fmt" - - "github.com/anyproto/any-sync/commonspace/object/acl/liststorage" - "github.com/anyproto/any-sync/commonspace/object/tree/treestorage" - "github.com/gogo/protobuf/jsonpb" - - "github.com/anyproto/anytype-heart/core/debug/treearchive/zipaclstorage" - "github.com/anyproto/anytype-heart/core/debug/treearchive/ziptreestorage" - "github.com/anyproto/anytype-heart/pkg/lib/pb/model" -) - -type TreeArchive interface { - ListStorage() liststorage.ListStorage - TreeStorage() treestorage.TreeStorage - LocalStore() (*model.ObjectInfo, error) - Close() error -} - -type treeArchive struct { - listStorage liststorage.ListStorage - treeStorage treestorage.TreeStorage - zr *zip.ReadCloser -} - -// Open expects debug tree zip file -// returns TreeArchive that has ListStorage and TreeStorage -func Open(filename string) (tr TreeArchive, err error) { - zr, err := zip.OpenReader(filename) - if err != nil { - return nil, err - } - exported, err := zr.Open("exported.json") - if err != nil { - return - } - defer exported.Close() - expJson := &ExportedObjectsJson{} - if err = json.NewDecoder(exported).Decode(expJson); err != nil { - return - } - - listStorage, err := zipaclstorage.NewZipAclReadStorage(expJson.AclId, zr) - if err != nil { - return - } - treeStorage, err := ziptreestorage.NewZipTreeReadStorage(expJson.TreeId, zr) - if err != nil { - return - } - - return &treeArchive{ - listStorage: listStorage, - treeStorage: treeStorage, - zr: zr, - }, nil -} - -func (a *treeArchive) ListStorage() liststorage.ListStorage { - return a.listStorage -} - -func (a *treeArchive) TreeStorage() treestorage.TreeStorage { - return a.treeStorage -} - -func (a *treeArchive) LocalStore() (*model.ObjectInfo, error) { - for _, f := range a.zr.File { - if f.Name == "localstore.json" { - rd, err := f.Open() - if err != nil { - return nil, err - } - defer rd.Close() - var oi = &model.ObjectInfo{} - if err = jsonpb.Unmarshal(rd, oi); err != nil { - return nil, err - } - return oi, nil - } - } - return nil, fmt.Errorf("block logs file not found") -} - -func (a *treeArchive) Close() (err error) { - return a.zr.Close() -} diff --git a/core/debug/treearchive/zipaclstorage/aclreadstorage.go b/core/debug/treearchive/zipaclstorage/aclreadstorage.go deleted file mode 100644 index 9b3c7272b..000000000 --- a/core/debug/treearchive/zipaclstorage/aclreadstorage.go +++ /dev/null @@ -1,77 +0,0 @@ -package zipaclstorage - -import ( - "archive/zip" - "context" - "fmt" - "io" - "strings" - - "github.com/anyproto/any-sync/commonspace/object/acl/liststorage" - "github.com/anyproto/any-sync/consensus/consensusproto" -) - -type zipAclReadStorage struct { - id string - files map[string]*zip.File -} - -func NewZipAclReadStorage(id string, zr *zip.ReadCloser) (ls liststorage.ListStorage, err error) { - aclStorage := &zipAclReadStorage{ - id: id, - files: map[string]*zip.File{}, - } - for _, f := range zr.Reader.File { - if len(f.Name) > len(id) && strings.Contains(f.Name, id) { - split := strings.SplitAfter(id, "/") - last := split[len(split)-1] - aclStorage.files[last] = f - } - } - ls = aclStorage - return -} - -func (z *zipAclReadStorage) Id() string { - return z.id -} - -func (z *zipAclReadStorage) Root() (*consensusproto.RawRecordWithId, error) { - return z.readRecord(z.id) -} - -func (z *zipAclReadStorage) Head() (string, error) { - return z.id, nil -} - -func (z *zipAclReadStorage) SetHead(headId string) error { - panic("should not be called") -} - -func (z *zipAclReadStorage) GetRawRecord(_ context.Context, id string) (*consensusproto.RawRecordWithId, error) { - return z.readRecord(id) -} - -func (z *zipAclReadStorage) AddRawRecord(_ context.Context, _ *consensusproto.RawRecordWithId) (err error) { - panic("should not be called") -} - -func (z *zipAclReadStorage) readRecord(id string) (rec *consensusproto.RawRecordWithId, err error) { - file, ok := z.files[id] - if !ok { - err = fmt.Errorf("object not found in storage") - return - } - opened, err := file.Open() - if err != nil { - return - } - defer opened.Close() - - buf, err := io.ReadAll(opened) - if err != nil { - return - } - rec = &consensusproto.RawRecordWithId{Payload: buf, Id: id} - return -} diff --git a/core/debug/treearchive/zipaclstorage/aclwritestorage.go b/core/debug/treearchive/zipaclstorage/aclwritestorage.go deleted file mode 100644 index e49fc0812..000000000 --- a/core/debug/treearchive/zipaclstorage/aclwritestorage.go +++ /dev/null @@ -1,59 +0,0 @@ -package zipaclstorage - -import ( - "archive/zip" - "context" - "strings" - - "github.com/anyproto/any-sync/commonspace/object/acl/liststorage" - "github.com/anyproto/any-sync/consensus/consensusproto" -) - -type zipACLWriteStorage struct { - id string - zw *zip.Writer -} - -func NewACLWriteStorage(root *consensusproto.RawRecordWithId, zw *zip.Writer) (ls liststorage.ListStorage, err error) { - ls = &zipACLWriteStorage{ - id: root.Id, - zw: zw, - } - err = ls.AddRawRecord(context.Background(), root) - return -} - -// nolint:revive -func (z *zipACLWriteStorage) Id() string { - return z.id -} - -func (z *zipACLWriteStorage) Root() (*consensusproto.RawRecordWithId, error) { - panic("should not be called") -} - -func (z *zipACLWriteStorage) Head() (string, error) { - return z.id, nil -} - -func (z *zipACLWriteStorage) SetHead(_ string) error { - // TODO: As soon as our acls are writeable, this should be implemented - panic("should not be called") -} - -func (z *zipACLWriteStorage) GetRawRecord(_ context.Context, _ string) (*consensusproto.RawRecordWithId, error) { - panic("should not be called") -} - -func (z *zipACLWriteStorage) AddRawRecord(_ context.Context, rec *consensusproto.RawRecordWithId) (err error) { - wr, err := z.zw.Create(strings.Join([]string{z.id, rec.Id}, "/")) - if err != nil { - return - } - _, err = wr.Write(rec.Payload) - return -} - -func (z *zipACLWriteStorage) FlushStorage() error { - return nil -} diff --git a/core/debug/treearchive/ziptreestorage/treereadstorage.go b/core/debug/treearchive/ziptreestorage/treereadstorage.go deleted file mode 100644 index 604e08cef..000000000 --- a/core/debug/treearchive/ziptreestorage/treereadstorage.go +++ /dev/null @@ -1,116 +0,0 @@ -package ziptreestorage - -import ( - "archive/zip" - "context" - "encoding/json" - "fmt" - "io" - "strings" - - "github.com/anyproto/any-sync/commonspace/object/tree/treechangeproto" - "github.com/anyproto/any-sync/commonspace/object/tree/treestorage" -) - -type zipTreeReadStorage struct { - id string - heads []string - files map[string]*zip.File -} - -func NewZipTreeReadStorage(id string, zr *zip.ReadCloser) (st treestorage.TreeStorage, err error) { - zrs := &zipTreeReadStorage{ - id: id, - heads: nil, - files: map[string]*zip.File{}, - } - for _, f := range zr.Reader.File { - if len(f.Name) > len(id) && strings.Contains(f.Name, id) { - split := strings.Split(f.Name, "/") - last := split[len(split)-1] - zrs.files[last] = f - } - } - data, ok := zrs.files["data.json"] - if !ok { - err = fmt.Errorf("no data.json in archive") - return - } - dataOpened, err := data.Open() - if err != nil { - return - } - defer dataOpened.Close() - headsEntry := &HeadsJsonEntry{} - if err = json.NewDecoder(dataOpened).Decode(headsEntry); err != nil { - return - } - zrs.heads = headsEntry.Heads - st = zrs - return -} - -func (t *zipTreeReadStorage) GetAllChangeIds() (chs []string, err error) { - return nil, fmt.Errorf("get all change ids should not be called") -} - -func (z *zipTreeReadStorage) Id() string { - return z.id -} - -func (z *zipTreeReadStorage) Root() (root *treechangeproto.RawTreeChangeWithId, err error) { - return z.readChange(z.id) -} - -func (z *zipTreeReadStorage) Heads() ([]string, error) { - return z.heads, nil -} - -func (z *zipTreeReadStorage) SetHeads(heads []string) (err error) { - panic("should not be called") -} - -func (z *zipTreeReadStorage) AddRawChange(change *treechangeproto.RawTreeChangeWithId) (err error) { - panic("should not be called") -} - -func (z *zipTreeReadStorage) AddRawChangesSetHeads(changes []*treechangeproto.RawTreeChangeWithId, heads []string) (err error) { - panic("should not be called") -} - -func (z *zipTreeReadStorage) GetRawChange(ctx context.Context, id string) (*treechangeproto.RawTreeChangeWithId, error) { - return z.readChange(id) -} - -func (z *zipTreeReadStorage) GetAppendRawChange(ctx context.Context, buf []byte, id string) (*treechangeproto.RawTreeChangeWithId, error) { - return z.readChange(id) -} - -func (z *zipTreeReadStorage) HasChange(ctx context.Context, id string) (ok bool, err error) { - _, ok = z.files[id] - return -} - -func (z *zipTreeReadStorage) Delete() error { - panic("should not be called") -} - -func (z *zipTreeReadStorage) readChange(id string) (change *treechangeproto.RawTreeChangeWithId, err error) { - file, ok := z.files[id] - if !ok { - err = fmt.Errorf("object not found in storage") - return - } - opened, err := file.Open() - if err != nil { - return - } - defer opened.Close() - - buf, err := io.ReadAll(opened) - if err != nil { - return - } - change = &treechangeproto.RawTreeChangeWithId{RawChange: buf, Id: id} - return -} diff --git a/core/debug/treearchive/ziptreestorage/treewritestorage.go b/core/debug/treearchive/ziptreestorage/treewritestorage.go deleted file mode 100644 index c80d87e3f..000000000 --- a/core/debug/treearchive/ziptreestorage/treewritestorage.go +++ /dev/null @@ -1,110 +0,0 @@ -package ziptreestorage - -import ( - "archive/zip" - "context" - "encoding/json" - "fmt" - "strings" - - "github.com/anyproto/any-sync/commonspace/object/tree/treechangeproto" - "github.com/anyproto/any-sync/commonspace/object/tree/treestorage" -) - -type HeadsJsonEntry struct { - Heads []string `json:"heads"` - RootId string `json:"rootId"` -} - -type zipTreeWriteStorage struct { - id string - heads []string - zw *zip.Writer -} - -func NewZipTreeWriteStorage(root *treechangeproto.RawTreeChangeWithId, zw *zip.Writer) (st treestorage.TreeStorage, err error) { - z := &zipTreeWriteStorage{ - id: root.Id, - zw: zw, - } - err = z.SetHeads([]string{root.Id}) - if err != nil { - return - } - err = z.AddRawChange(root) - if err != nil { - return - } - st = z - return -} - -func (z *zipTreeWriteStorage) Id() string { - return z.id -} - -func (t *zipTreeWriteStorage) GetAllChangeIds() (chs []string, err error) { - return nil, fmt.Errorf("get all change ids should not be called") -} - -func (z *zipTreeWriteStorage) Root() (*treechangeproto.RawTreeChangeWithId, error) { - panic("should not be implemented") -} - -func (z *zipTreeWriteStorage) Heads() ([]string, error) { - return z.heads, nil -} - -func (z *zipTreeWriteStorage) SetHeads(heads []string) (err error) { - z.heads = heads - return -} - -func (z *zipTreeWriteStorage) AddRawChange(change *treechangeproto.RawTreeChangeWithId) (err error) { - wr, err := z.zw.Create(strings.Join([]string{z.id, change.Id}, "/")) - if err != nil { - return - } - _, err = wr.Write(change.RawChange) - return -} - -func (z *zipTreeWriteStorage) AddRawChangesSetHeads(changes []*treechangeproto.RawTreeChangeWithId, heads []string) (err error) { - for _, ch := range changes { - err = z.AddRawChange(ch) - if err != nil { - return - } - } - return z.SetHeads(heads) -} - -func (z *zipTreeWriteStorage) GetRawChange(ctx context.Context, id string) (*treechangeproto.RawTreeChangeWithId, error) { - panic("should not be called") -} - -func (z *zipTreeWriteStorage) GetAppendRawChange(ctx context.Context, buf []byte, id string) (*treechangeproto.RawTreeChangeWithId, error) { - panic("should not be called") -} - -func (z *zipTreeWriteStorage) HasChange(ctx context.Context, id string) (ok bool, err error) { - panic("should not be called") -} - -func (z *zipTreeWriteStorage) Delete() error { - panic("should not be called") -} - -func (z *zipTreeWriteStorage) FlushStorage() (err error) { - chw, err := z.zw.CreateHeader(&zip.FileHeader{ - Name: strings.Join([]string{z.id, "data.json"}, "/"), - Method: zip.Deflate, - }) - enc := json.NewEncoder(chw) - enc.SetIndent("", "\t") - err = enc.Encode(HeadsJsonEntry{ - Heads: z.heads, - RootId: z.id, - }) - return -} From 2495ffd2da995550feaeea5059437e131ba5d6e6 Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Tue, 24 Dec 2024 13:35:49 +0100 Subject: [PATCH 066/279] GO-4146 Fix storages --- .../storage/anystorage/storageservice.go | 12 ++++++++++++ .../storage/badgerstorage/liststorage.go | 13 ++++++++----- .../storage/badgerstorage/liststorage_test.go | 6 +++--- .../storage/badgerstorage/spacestorage.go | 16 ++++++++-------- .../storage/badgerstorage/spacestorage_test.go | 5 +++-- .../storage/badgerstorage/storageservice.go | 7 ++++--- .../storage/badgerstorage/treestorage.go | 7 ++++--- .../storage/badgerstorage/treestorage_test.go | 3 ++- space/spacecore/storage/sqlitestorage/list.go | 10 ++++++---- .../spacecore/storage/sqlitestorage/list_test.go | 4 ++-- space/spacecore/storage/sqlitestorage/service.go | 5 +++-- space/spacecore/storage/sqlitestorage/space.go | 16 ++++++++-------- .../storage/sqlitestorage/space_test.go | 15 ++++++++------- space/spacecore/storage/sqlitestorage/tree.go | 5 +++-- .../spacecore/storage/sqlitestorage/tree_test.go | 3 ++- space/spacecore/storage/storage.go | 16 ++-------------- 16 files changed, 78 insertions(+), 65 deletions(-) diff --git a/space/spacecore/storage/anystorage/storageservice.go b/space/spacecore/storage/anystorage/storageservice.go index 8a8d7790a..26696e127 100644 --- a/space/spacecore/storage/anystorage/storageservice.go +++ b/space/spacecore/storage/anystorage/storageservice.go @@ -27,6 +27,11 @@ var ( ErrDeleted = errors.New("space storage deleted") ) +type configGetter interface { + GetSpaceStorePath() string + GetTempDirPath() string +} + type optKey int const ( @@ -103,8 +108,13 @@ func (s *storageContainer) TryClose(objectTTL time.Duration) (res bool, err erro return true, nil } +func New() *storageService { + return &storageService{} +} + type storageService struct { rootPath string + tempPath string cache ocache.OCache } @@ -150,6 +160,8 @@ func (s *storageService) Close(ctx context.Context) (err error) { } func (s *storageService) Init(a *app.App) (err error) { + s.rootPath = a.MustComponent("config").(configGetter).GetSpaceStorePath() + s.tempPath = a.MustComponent("config").(configGetter).GetTempDirPath() s.cache = ocache.New(s.loadFunc, ocache.WithLogger(log.Sugar()), ocache.WithGCPeriod(time.Minute), diff --git a/space/spacecore/storage/badgerstorage/liststorage.go b/space/spacecore/storage/badgerstorage/liststorage.go index 86aad123c..24f61a666 100644 --- a/space/spacecore/storage/badgerstorage/liststorage.go +++ b/space/spacecore/storage/badgerstorage/liststorage.go @@ -4,12 +4,15 @@ import ( "context" "errors" - "github.com/anyproto/any-sync/commonspace/object/acl/liststorage" + "github.com/anyproto/any-sync/commonspace/spacestorage/oldstorage" "github.com/anyproto/any-sync/consensus/consensusproto" "github.com/dgraph-io/badger/v4" ) -var ErrIncorrectKey = errors.New("key format is incorrect") +var ( + ErrIncorrectKey = errors.New("key format is incorrect") + ErrUnknownRecord = errors.New("record does not exist") +) type listStorage struct { db *badger.DB @@ -18,7 +21,7 @@ type listStorage struct { root *consensusproto.RawRecordWithId } -func newListStorage(spaceId string, db *badger.DB, txn *badger.Txn) (ls liststorage.ListStorage, err error) { +func newListStorage(spaceId string, db *badger.DB, txn *badger.Txn) (ls oldstorage.ListStorage, err error) { keys := newAclKeys(spaceId) rootId, err := getTxn(txn, keys.RootIdKey()) if err != nil { @@ -45,7 +48,7 @@ func newListStorage(spaceId string, db *badger.DB, txn *badger.Txn) (ls liststor return } -func createListStorage(spaceID string, db *badger.DB, txn *badger.Txn, root *consensusproto.RawRecordWithId) (ls liststorage.ListStorage, err error) { +func createListStorage(spaceID string, db *badger.DB, txn *badger.Txn, root *consensusproto.RawRecordWithId) (ls oldstorage.ListStorage, err error) { keys := newAclKeys(spaceID) _, err = getTxn(txn, keys.RootIdKey()) if err != badger.ErrKeyNotFound { @@ -99,7 +102,7 @@ func (l *listStorage) GetRawRecord(_ context.Context, id string) (raw *consensus res, err := getDB(l.db, l.keys.RawRecordKey(id)) if err != nil { if err == badger.ErrKeyNotFound { - err = liststorage.ErrUnknownRecord + err = ErrUnknownRecord } return } diff --git a/space/spacecore/storage/badgerstorage/liststorage_test.go b/space/spacecore/storage/badgerstorage/liststorage_test.go index 719e8dff6..954b7d7a6 100644 --- a/space/spacecore/storage/badgerstorage/liststorage_test.go +++ b/space/spacecore/storage/badgerstorage/liststorage_test.go @@ -4,13 +4,13 @@ import ( "context" "testing" - "github.com/anyproto/any-sync/commonspace/object/acl/liststorage" + "github.com/anyproto/any-sync/commonspace/spacestorage/oldstorage" "github.com/anyproto/any-sync/consensus/consensusproto" "github.com/dgraph-io/badger/v4" "github.com/stretchr/testify/require" ) -func testList(t *testing.T, store liststorage.ListStorage, root *consensusproto.RawRecordWithId, head string) { +func testList(t *testing.T, store oldstorage.ListStorage, root *consensusproto.RawRecordWithId, head string) { require.Equal(t, store.Id(), root.Id) aclRoot, err := store.Root() @@ -35,7 +35,7 @@ func TestListStorage(t *testing.T) { return nil }) - var listStore liststorage.ListStorage + var listStore oldstorage.ListStorage fx.db.View(func(txn *badger.Txn) (err error) { listStore, err = newListStorage(spaceId, fx.db, txn) require.NoError(t, err) diff --git a/space/spacecore/storage/badgerstorage/spacestorage.go b/space/spacecore/storage/badgerstorage/spacestorage.go index 6ca493beb..94a735d38 100644 --- a/space/spacecore/storage/badgerstorage/spacestorage.go +++ b/space/spacecore/storage/badgerstorage/spacestorage.go @@ -7,10 +7,10 @@ import ( "fmt" "github.com/anyproto/any-sync/app" - "github.com/anyproto/any-sync/commonspace/object/acl/liststorage" "github.com/anyproto/any-sync/commonspace/object/tree/treechangeproto" "github.com/anyproto/any-sync/commonspace/object/tree/treestorage" "github.com/anyproto/any-sync/commonspace/spacestorage" + "github.com/anyproto/any-sync/commonspace/spacestorage/oldstorage" "github.com/anyproto/any-sync/commonspace/spacesyncproto" "github.com/dgraph-io/badger/v4" "golang.org/x/exp/slices" @@ -21,7 +21,7 @@ type spaceStorage struct { spaceSettingsId string objDb *badger.DB keys spaceKeys - aclStorage liststorage.ListStorage + aclStorage oldstorage.ListStorage header *spacesyncproto.RawSpaceHeaderWithId service *storageService } @@ -38,7 +38,7 @@ func (s *spaceStorage) Name() (name string) { return spacestorage.CName } -func newSpaceStorage(objDb *badger.DB, spaceId string, service *storageService) (store spacestorage.SpaceStorage, err error) { +func newSpaceStorage(objDb *badger.DB, spaceId string, service *storageService) (store oldstorage.SpaceStorage, err error) { keys := newSpaceKeys(spaceId) err = objDb.View(func(txn *badger.Txn) error { header, err := getTxn(txn, keys.HeaderKey()) @@ -75,7 +75,7 @@ func newSpaceStorage(objDb *badger.DB, spaceId string, service *storageService) return } -func createSpaceStorage(db *badger.DB, payload spacestorage.SpaceStorageCreatePayload, service *storageService) (store spacestorage.SpaceStorage, err error) { +func createSpaceStorage(db *badger.DB, payload spacestorage.SpaceStorageCreatePayload, service *storageService) (store oldstorage.SpaceStorage, err error) { keys := newSpaceKeys(payload.SpaceHeaderWithId.Id) if hasDB(db, keys.HeaderKey()) { err = spacestorage.ErrSpaceStorageExists @@ -133,15 +133,15 @@ func (s *spaceStorage) HasTree(id string) (bool, error) { return hasDB(s.objDb, keys.RootIdKey()), nil } -func (s *spaceStorage) TreeStorage(id string) (treestorage.TreeStorage, error) { +func (s *spaceStorage) TreeStorage(id string) (oldstorage.TreeStorage, error) { return newTreeStorage(s.objDb, s.spaceId, id) } -func (s *spaceStorage) CreateTreeStorage(payload treestorage.TreeStorageCreatePayload) (ts treestorage.TreeStorage, err error) { +func (s *spaceStorage) CreateTreeStorage(payload treestorage.TreeStorageCreatePayload) (ts oldstorage.TreeStorage, err error) { return createTreeStorage(s.objDb, s.spaceId, payload) } -func (s *spaceStorage) AclStorage() (liststorage.ListStorage, error) { +func (s *spaceStorage) AclStorage() (oldstorage.ListStorage, error) { return s.aclStorage, nil } @@ -186,7 +186,7 @@ func (s *spaceStorage) AllDeletedTreeIds() (ids []string, err error) { var isDeleted bool err = item.Value(func(val []byte) error { - if bytes.Equal(val, []byte(spacestorage.TreeDeletedStatusDeleted)) { + if bytes.Equal(val, []byte(oldstorage.TreeDeletedStatusDeleted)) { isDeleted = true } return nil diff --git a/space/spacecore/storage/badgerstorage/spacestorage_test.go b/space/spacecore/storage/badgerstorage/spacestorage_test.go index 4a126a95b..cc17da6ae 100644 --- a/space/spacecore/storage/badgerstorage/spacestorage_test.go +++ b/space/spacecore/storage/badgerstorage/spacestorage_test.go @@ -7,7 +7,8 @@ import ( "testing" "github.com/anyproto/any-sync/commonspace/object/tree/treechangeproto" - spacestorage "github.com/anyproto/any-sync/commonspace/spacestorage" + "github.com/anyproto/any-sync/commonspace/spacestorage" + "github.com/anyproto/any-sync/commonspace/spacestorage/oldstorage" "github.com/anyproto/any-sync/commonspace/spacesyncproto" "github.com/anyproto/any-sync/consensus/consensusproto" "github.com/stretchr/testify/assert" @@ -36,7 +37,7 @@ func spaceTestPayload() spacestorage.SpaceStorageCreatePayload { } } -func testSpace(t *testing.T, store spacestorage.SpaceStorage, payload spacestorage.SpaceStorageCreatePayload) { +func testSpace(t *testing.T, store oldstorage.SpaceStorage, payload spacestorage.SpaceStorageCreatePayload) { header, err := store.SpaceHeader() require.NoError(t, err) require.Equal(t, payload.SpaceHeaderWithId, header) diff --git a/space/spacecore/storage/badgerstorage/storageservice.go b/space/spacecore/storage/badgerstorage/storageservice.go index 340ffd9d4..c4e3f80bc 100644 --- a/space/spacecore/storage/badgerstorage/storageservice.go +++ b/space/spacecore/storage/badgerstorage/storageservice.go @@ -7,6 +7,7 @@ import ( "github.com/anyproto/any-sync/app" "github.com/anyproto/any-sync/commonspace/spacestorage" + "github.com/anyproto/any-sync/commonspace/spacestorage/oldstorage" "github.com/dgraph-io/badger/v4" "github.com/anyproto/anytype-heart/core/domain" @@ -46,11 +47,11 @@ func (s *storageService) Name() (name string) { return spacestorage.CName } -func (s *storageService) SpaceStorage(id string) (spacestorage.SpaceStorage, error) { +func (s *storageService) SpaceStorage(id string) (oldstorage.SpaceStorage, error) { return newSpaceStorage(s.db, id, s) } -func (s *storageService) WaitSpaceStorage(ctx context.Context, id string) (store spacestorage.SpaceStorage, err error) { +func (s *storageService) WaitSpaceStorage(ctx context.Context, id string) (store oldstorage.SpaceStorage, err error) { var ls *lockSpace ls, err = s.checkLock(id, func() error { store, err = newSpaceStorage(s.db, id, s) @@ -152,7 +153,7 @@ func (s *storageService) unlockSpaceStorage(id string) { } } -func (s *storageService) CreateSpaceStorage(payload spacestorage.SpaceStorageCreatePayload) (spacestorage.SpaceStorage, error) { +func (s *storageService) CreateSpaceStorage(payload spacestorage.SpaceStorageCreatePayload) (oldstorage.SpaceStorage, error) { return createSpaceStorage(s.db, payload, s) } diff --git a/space/spacecore/storage/badgerstorage/treestorage.go b/space/spacecore/storage/badgerstorage/treestorage.go index f82b58dac..28da6aee0 100644 --- a/space/spacecore/storage/badgerstorage/treestorage.go +++ b/space/spacecore/storage/badgerstorage/treestorage.go @@ -6,6 +6,7 @@ import ( "github.com/anyproto/any-sync/commonspace/object/tree/treechangeproto" "github.com/anyproto/any-sync/commonspace/object/tree/treestorage" + "github.com/anyproto/any-sync/commonspace/spacestorage/oldstorage" "github.com/dgraph-io/badger/v4" ) @@ -16,7 +17,7 @@ type treeStorage struct { root *treechangeproto.RawTreeChangeWithId } -func newTreeStorage(db *badger.DB, spaceId, treeId string) (ts treestorage.TreeStorage, err error) { +func newTreeStorage(db *badger.DB, spaceId, treeId string) (ts oldstorage.TreeStorage, err error) { keys := newTreeKeys(spaceId, treeId) err = db.View(func(txn *badger.Txn) error { _, err := txn.Get(keys.RootIdKey()) @@ -48,7 +49,7 @@ func newTreeStorage(db *badger.DB, spaceId, treeId string) (ts treestorage.TreeS return } -func createTreeStorage(db *badger.DB, spaceId string, payload treestorage.TreeStorageCreatePayload) (ts treestorage.TreeStorage, err error) { +func createTreeStorage(db *badger.DB, spaceId string, payload treestorage.TreeStorageCreatePayload) (ts oldstorage.TreeStorage, err error) { keys := newTreeKeys(spaceId, payload.RootRawChange.Id) if hasDB(db, keys.RootIdKey()) { err = treestorage.ErrTreeExists @@ -57,7 +58,7 @@ func createTreeStorage(db *badger.DB, spaceId string, payload treestorage.TreeSt return forceCreateTreeStorage(db, spaceId, payload) } -func forceCreateTreeStorage(db *badger.DB, spaceId string, payload treestorage.TreeStorageCreatePayload) (ts treestorage.TreeStorage, err error) { +func forceCreateTreeStorage(db *badger.DB, spaceId string, payload treestorage.TreeStorageCreatePayload) (ts oldstorage.TreeStorage, err error) { keys := newTreeKeys(spaceId, payload.RootRawChange.Id) err = db.Update(func(txn *badger.Txn) error { err = txn.Set(keys.RawChangeKey(payload.RootRawChange.Id), payload.RootRawChange.GetRawChange()) diff --git a/space/spacecore/storage/badgerstorage/treestorage_test.go b/space/spacecore/storage/badgerstorage/treestorage_test.go index b1567935e..64ef0bfac 100644 --- a/space/spacecore/storage/badgerstorage/treestorage_test.go +++ b/space/spacecore/storage/badgerstorage/treestorage_test.go @@ -7,6 +7,7 @@ import ( "github.com/anyproto/any-sync/commonspace/object/tree/treechangeproto" "github.com/anyproto/any-sync/commonspace/object/tree/treestorage" + "github.com/anyproto/any-sync/commonspace/spacestorage/oldstorage" "github.com/dgraph-io/badger/v4" "github.com/stretchr/testify/require" ) @@ -27,7 +28,7 @@ type fixture struct { db *badger.DB } -func testTreePayload(t *testing.T, store treestorage.TreeStorage, payload treestorage.TreeStorageCreatePayload) { +func testTreePayload(t *testing.T, store oldstorage.TreeStorage, payload treestorage.TreeStorageCreatePayload) { require.Equal(t, payload.RootRawChange.Id, store.Id()) root, err := store.Root() diff --git a/space/spacecore/storage/sqlitestorage/list.go b/space/spacecore/storage/sqlitestorage/list.go index 4a3ebe1cb..0881a713e 100644 --- a/space/spacecore/storage/sqlitestorage/list.go +++ b/space/spacecore/storage/sqlitestorage/list.go @@ -6,12 +6,14 @@ import ( "errors" "sync" - "github.com/anyproto/any-sync/commonspace/object/acl/liststorage" "github.com/anyproto/any-sync/commonspace/object/tree/treestorage" + "github.com/anyproto/any-sync/commonspace/spacestorage/oldstorage" "github.com/anyproto/any-sync/consensus/consensusproto" ) -func newListStorage(ss *spaceStorage, treeId string) (liststorage.ListStorage, error) { +var ErrUnknownRecord = errors.New("record does not exist") + +func newListStorage(ss *spaceStorage, treeId string) (oldstorage.ListStorage, error) { ts := &listStorage{ listId: treeId, spaceStorage: ss, @@ -38,7 +40,7 @@ type listStorage struct { func (t *listStorage) Root() (*consensusproto.RawRecordWithId, error) { tch, err := t.spaceStorage.TreeRoot(t.listId) if err != nil { - return nil, replaceNoRowsErr(err, liststorage.ErrUnknownRecord) + return nil, replaceNoRowsErr(err, ErrUnknownRecord) } return &consensusproto.RawRecordWithId{ Payload: tch.RawChange, @@ -66,7 +68,7 @@ func (t *listStorage) SetHead(headId string) error { func (t *listStorage) GetRawRecord(ctx context.Context, id string) (*consensusproto.RawRecordWithId, error) { tch, err := t.spaceStorage.TreeRoot(id) if err != nil { - return nil, replaceNoRowsErr(err, liststorage.ErrUnknownRecord) + return nil, replaceNoRowsErr(err, ErrUnknownRecord) } return &consensusproto.RawRecordWithId{ Payload: tch.RawChange, diff --git a/space/spacecore/storage/sqlitestorage/list_test.go b/space/spacecore/storage/sqlitestorage/list_test.go index b99d79845..99adaf9ab 100644 --- a/space/spacecore/storage/sqlitestorage/list_test.go +++ b/space/spacecore/storage/sqlitestorage/list_test.go @@ -3,7 +3,7 @@ package sqlitestorage import ( "testing" - "github.com/anyproto/any-sync/commonspace/object/acl/liststorage" + "github.com/anyproto/any-sync/commonspace/spacestorage/oldstorage" "github.com/anyproto/any-sync/consensus/consensusproto" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -56,7 +56,7 @@ func TestListStorage_SetHead(t *testing.T) { } -func testList(t *testing.T, store liststorage.ListStorage, root *consensusproto.RawRecordWithId, head string) { +func testList(t *testing.T, store oldstorage.ListStorage, root *consensusproto.RawRecordWithId, head string) { require.Equal(t, store.Id(), root.Id) aclRoot, err := store.Root() diff --git a/space/spacecore/storage/sqlitestorage/service.go b/space/spacecore/storage/sqlitestorage/service.go index 3027629d9..343c5fbd1 100644 --- a/space/spacecore/storage/sqlitestorage/service.go +++ b/space/spacecore/storage/sqlitestorage/service.go @@ -12,6 +12,7 @@ import ( "github.com/anyproto/any-sync/app/logger" "github.com/anyproto/any-sync/commonspace/object/tree/treestorage" "github.com/anyproto/any-sync/commonspace/spacestorage" + "github.com/anyproto/any-sync/commonspace/spacestorage/oldstorage" "github.com/globalsign/mgo/bson" "github.com/mattn/go-sqlite3" "go.uber.org/atomic" @@ -159,7 +160,7 @@ func (s *storageService) Name() (name string) { return spacestorage.CName } -func (s *storageService) WaitSpaceStorage(ctx context.Context, id string) (store spacestorage.SpaceStorage, err error) { +func (s *storageService) WaitSpaceStorage(ctx context.Context, id string) (store oldstorage.SpaceStorage, err error) { var ls *lockSpace ls, err = s.checkLock(id, func() error { store, err = newSpaceStorage(s, id) @@ -277,7 +278,7 @@ func (s *storageService) unlockSpaceStorage(id string) { } } -func (s *storageService) CreateSpaceStorage(payload spacestorage.SpaceStorageCreatePayload) (ss spacestorage.SpaceStorage, err error) { +func (s *storageService) CreateSpaceStorage(payload spacestorage.SpaceStorageCreatePayload) (ss oldstorage.SpaceStorage, err error) { _, err = s.checkLock(payload.SpaceHeaderWithId.Id, func() error { ss, err = createSpaceStorage(s, payload) return err diff --git a/space/spacecore/storage/sqlitestorage/space.go b/space/spacecore/storage/sqlitestorage/space.go index 596d6f774..20af7caf5 100644 --- a/space/spacecore/storage/sqlitestorage/space.go +++ b/space/spacecore/storage/sqlitestorage/space.go @@ -7,10 +7,10 @@ import ( "sync" "github.com/anyproto/any-sync/app" - "github.com/anyproto/any-sync/commonspace/object/acl/liststorage" "github.com/anyproto/any-sync/commonspace/object/tree/treechangeproto" "github.com/anyproto/any-sync/commonspace/object/tree/treestorage" "github.com/anyproto/any-sync/commonspace/spacestorage" + "github.com/anyproto/any-sync/commonspace/spacestorage/oldstorage" "github.com/anyproto/any-sync/commonspace/spacesyncproto" _ "github.com/mattn/go-sqlite3" ) @@ -34,12 +34,12 @@ type spaceStorage struct { isDeleted bool - aclStorage liststorage.ListStorage + aclStorage oldstorage.ListStorage header *spacesyncproto.RawSpaceHeaderWithId } -func newSpaceStorage(s *storageService, spaceId string) (spacestorage.SpaceStorage, error) { +func newSpaceStorage(s *storageService, spaceId string) (oldstorage.SpaceStorage, error) { ss := &spaceStorage{ spaceId: spaceId, service: s, @@ -64,7 +64,7 @@ func newSpaceStorage(s *storageService, spaceId string) (spacestorage.SpaceStora return ss, nil } -func createSpaceStorage(s *storageService, payload spacestorage.SpaceStorageCreatePayload) (spacestorage.SpaceStorage, error) { +func createSpaceStorage(s *storageService, payload spacestorage.SpaceStorageCreatePayload) (oldstorage.SpaceStorage, error) { tx, err := s.writeDb.Begin() if err != nil { return nil, err @@ -194,7 +194,7 @@ func (s *spaceStorage) TreeDeletedStatus(id string) (status string, err error) { } func (s *spaceStorage) AllDeletedTreeIds() (ids []string, err error) { - rows, err := s.service.stmt.allTreeDelStatus.Query(s.spaceId, spacestorage.TreeDeletedStatusDeleted) + rows, err := s.service.stmt.allTreeDelStatus.Query(s.spaceId, oldstorage.TreeDeletedStatusDeleted) if err != nil { if errors.Is(err, sql.ErrNoRows) { return nil, nil @@ -218,7 +218,7 @@ func (s *spaceStorage) SpaceSettingsId() string { return s.spaceSettingsId } -func (s *spaceStorage) AclStorage() (liststorage.ListStorage, error) { +func (s *spaceStorage) AclStorage() (oldstorage.ListStorage, error) { return s.aclStorage, nil } @@ -258,7 +258,7 @@ func (s *spaceStorage) TreeRoot(id string) (*treechangeproto.RawTreeChangeWithId }, nil } -func (s *spaceStorage) TreeStorage(id string) (treestorage.TreeStorage, error) { +func (s *spaceStorage) TreeStorage(id string) (oldstorage.TreeStorage, error) { return newTreeStorage(s, id) } @@ -271,7 +271,7 @@ func (s *spaceStorage) HasTree(id string) (bool, error) { return res > 0, nil } -func (s *spaceStorage) CreateTreeStorage(payload treestorage.TreeStorageCreatePayload) (treestorage.TreeStorage, error) { +func (s *spaceStorage) CreateTreeStorage(payload treestorage.TreeStorageCreatePayload) (oldstorage.TreeStorage, error) { return createTreeStorage(s, payload) } diff --git a/space/spacecore/storage/sqlitestorage/space_test.go b/space/spacecore/storage/sqlitestorage/space_test.go index b72470d59..0033a5bde 100644 --- a/space/spacecore/storage/sqlitestorage/space_test.go +++ b/space/spacecore/storage/sqlitestorage/space_test.go @@ -6,6 +6,7 @@ import ( "github.com/anyproto/any-sync/commonspace/object/tree/treechangeproto" "github.com/anyproto/any-sync/commonspace/object/tree/treestorage" "github.com/anyproto/any-sync/commonspace/spacestorage" + "github.com/anyproto/any-sync/commonspace/spacestorage/oldstorage" "github.com/anyproto/any-sync/commonspace/spacesyncproto" "github.com/anyproto/any-sync/consensus/consensusproto" "github.com/stretchr/testify/assert" @@ -106,11 +107,11 @@ func TestSpaceStorage_AllDeletedTreeIds(t *testing.T) { store, err := createSpaceStorage(fx.storageService, payload) require.NoError(t, err) - err = store.SetTreeDeletedStatus("id1", spacestorage.TreeDeletedStatusDeleted) + err = store.SetTreeDeletedStatus("id1", oldstorage.TreeDeletedStatusDeleted) require.NoError(t, err) - err = store.SetTreeDeletedStatus("id2", spacestorage.TreeDeletedStatusQueued) + err = store.SetTreeDeletedStatus("id2", oldstorage.TreeDeletedStatusQueued) require.NoError(t, err) - err = store.SetTreeDeletedStatus("id3", spacestorage.TreeDeletedStatusDeleted) + err = store.SetTreeDeletedStatus("id3", oldstorage.TreeDeletedStatusDeleted) require.NoError(t, err) deletedIds, err := store.(*spaceStorage).AllDeletedTreeIds() @@ -127,12 +128,12 @@ func TestSpaceStorage_SetTreeDeletedStatus(t *testing.T) { store, err := createSpaceStorage(fx.storageService, payload) require.NoError(t, err) - err = store.SetTreeDeletedStatus("treeId", spacestorage.TreeDeletedStatusDeleted) + err = store.SetTreeDeletedStatus("treeId", oldstorage.TreeDeletedStatusDeleted) require.NoError(t, err) status, err := store.TreeDeletedStatus("treeId") require.NoError(t, err) - require.Equal(t, spacestorage.TreeDeletedStatusDeleted, status) + require.Equal(t, oldstorage.TreeDeletedStatusDeleted, status) _, err = store.TreeStorage("treeId") require.ErrorIs(t, err, treestorage.ErrUnknownTreeId) @@ -202,7 +203,7 @@ func TestSpaceStorage_ReadSpaceHash(t *testing.T) { require.NoError(t, ss.WriteSpaceHash("hash")) - var checkHashes = func(ss spacestorage.SpaceStorage) { + var checkHashes = func(ss oldstorage.SpaceStorage) { hash, err = ss.ReadSpaceHash() require.NoError(t, err) assert.Equal(t, "hash", hash) @@ -238,7 +239,7 @@ func spaceTestPayload() spacestorage.SpaceStorageCreatePayload { } } -func testSpace(t *testing.T, store spacestorage.SpaceStorage, payload spacestorage.SpaceStorageCreatePayload) { +func testSpace(t *testing.T, store oldstorage.SpaceStorage, payload spacestorage.SpaceStorageCreatePayload) { header, err := store.SpaceHeader() require.NoError(t, err) require.Equal(t, payload.SpaceHeaderWithId, header) diff --git a/space/spacecore/storage/sqlitestorage/tree.go b/space/spacecore/storage/sqlitestorage/tree.go index 6cca193f0..e377f4a8b 100644 --- a/space/spacecore/storage/sqlitestorage/tree.go +++ b/space/spacecore/storage/sqlitestorage/tree.go @@ -7,9 +7,10 @@ import ( "github.com/anyproto/any-sync/commonspace/object/tree/treechangeproto" "github.com/anyproto/any-sync/commonspace/object/tree/treestorage" + "github.com/anyproto/any-sync/commonspace/spacestorage/oldstorage" ) -func newTreeStorage(ss *spaceStorage, treeId string) (treestorage.TreeStorage, error) { +func newTreeStorage(ss *spaceStorage, treeId string) (oldstorage.TreeStorage, error) { ts := &treeStorage{ treeId: treeId, spaceStorage: ss, @@ -23,7 +24,7 @@ func newTreeStorage(ss *spaceStorage, treeId string) (treestorage.TreeStorage, e return ts, nil } -func createTreeStorage(ss *spaceStorage, payload treestorage.TreeStorageCreatePayload) (ts treestorage.TreeStorage, err error) { +func createTreeStorage(ss *spaceStorage, payload treestorage.TreeStorageCreatePayload) (ts oldstorage.TreeStorage, err error) { ts = &treeStorage{ treeId: payload.RootRawChange.Id, spaceStorage: ss, diff --git a/space/spacecore/storage/sqlitestorage/tree_test.go b/space/spacecore/storage/sqlitestorage/tree_test.go index cee72d615..2f5c39b96 100644 --- a/space/spacecore/storage/sqlitestorage/tree_test.go +++ b/space/spacecore/storage/sqlitestorage/tree_test.go @@ -8,6 +8,7 @@ import ( "github.com/anyproto/any-sync/commonspace/object/tree/treechangeproto" "github.com/anyproto/any-sync/commonspace/object/tree/treestorage" + "github.com/anyproto/any-sync/commonspace/spacestorage/oldstorage" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -190,7 +191,7 @@ func treeTestPayload() treestorage.TreeStorageCreatePayload { } } -func testTreePayload(t *testing.T, store treestorage.TreeStorage, payload treestorage.TreeStorageCreatePayload) { +func testTreePayload(t *testing.T, store oldstorage.TreeStorage, payload treestorage.TreeStorageCreatePayload) { require.Equal(t, payload.RootRawChange.Id, store.Id()) root, err := store.Root() diff --git a/space/spacecore/storage/storage.go b/space/spacecore/storage/storage.go index 145dee74d..f55f895f6 100644 --- a/space/spacecore/storage/storage.go +++ b/space/spacecore/storage/storage.go @@ -2,13 +2,11 @@ package storage import ( "context" - "fmt" "github.com/anyproto/any-sync/app" "github.com/anyproto/any-sync/commonspace/spacestorage" - "github.com/anyproto/anytype-heart/space/spacecore/storage/badgerstorage" - "github.com/anyproto/anytype-heart/space/spacecore/storage/sqlitestorage" + "github.com/anyproto/anytype-heart/space/spacecore/storage/anystorage" ) type SpaceStorageMode int @@ -43,16 +41,6 @@ func (s *storageService) Name() (name string) { } func (s *storageService) Init(a *app.App) (err error) { - mode := a.MustComponent("config").(configGetter).GetSpaceStorageMode() - if mode == SpaceStorageModeBadger { - // for already existing account repos - s.ClientStorage = badgerstorage.New() - } else if mode == SpaceStorageModeSqlite { - // sqlite used for new account repos - s.ClientStorage = sqlitestorage.New() - } else { - return fmt.Errorf("unknown storage mode %d", mode) - } - + s.ClientStorage = anystorage.New() return s.ClientStorage.Init(a) } From df32d80e12e374eccb06384ab68901f57764876d Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Tue, 24 Dec 2024 14:55:34 +0100 Subject: [PATCH 067/279] GO-4146 Changes throughout the project --- core/acl/aclservice.go | 3 +- core/block/object/objectcache/payload_test.go | 2 +- core/block/object/treesyncer/treesyncer.go | 2 +- core/block/service.go | 2 +- core/block/source/service.go | 3 +- core/configfetcher/configfetcher.go | 6 ++-- core/indexer/reindex.go | 35 +++++++++---------- .../syncstatus/objectsyncstatus/syncstatus.go | 2 +- space/clientspace/space.go | 29 +++++++-------- space/clientspace/virtualspace.go | 6 +--- space/spacecore/rpchandler.go | 2 +- .../storage/anystorage/clientstorage.go | 12 ++++++- .../storage/anystorage/storageservice.go | 2 +- space/spacecore/typeprovider/typeprovider.go | 9 +++-- space/spacefactory/spacefactory.go | 9 +++-- 15 files changed, 63 insertions(+), 61 deletions(-) diff --git a/core/acl/aclservice.go b/core/acl/aclservice.go index e87bfffb3..514dde35c 100644 --- a/core/acl/aclservice.go +++ b/core/acl/aclservice.go @@ -10,7 +10,6 @@ import ( "github.com/anyproto/any-sync/app" "github.com/anyproto/any-sync/commonspace/acl/aclclient" "github.com/anyproto/any-sync/commonspace/object/acl/list" - "github.com/anyproto/any-sync/commonspace/object/acl/liststorage" "github.com/anyproto/any-sync/coordinator/coordinatorclient" "github.com/anyproto/any-sync/coordinator/coordinatorproto" "github.com/anyproto/any-sync/nodeconf" @@ -394,7 +393,7 @@ func (a *aclService) ViewInvite(ctx context.Context, inviteCid cid.Cid, inviteFi if len(recs) == 0 { return domain.InviteView{}, fmt.Errorf("no acl records found for space: %s, %w", res.SpaceId, ErrAclRequestFailed) } - store, err := liststorage.NewInMemoryAclListStorage(recs[0].Id, recs) + store, err := list.NewInMemoryStorage(recs[0].Id, recs) if err != nil { return domain.InviteView{}, convertedOrAclRequestError(err) } diff --git a/core/block/object/objectcache/payload_test.go b/core/block/object/objectcache/payload_test.go index e1b990794..ff9311b29 100644 --- a/core/block/object/objectcache/payload_test.go +++ b/core/block/object/objectcache/payload_test.go @@ -20,7 +20,7 @@ func Test_Payloads(t *testing.T) { changePayload := []byte("some") keys, err := accountdata.NewRandom() require.NoError(t, err) - aclList, err := list.NewTestDerivedAcl("spaceId", keys) + aclList, err := list.NewInMemoryDerivedAcl("spaceId", keys) require.NoError(t, err) timestamp := time.Now().Add(time.Hour).Unix() diff --git a/core/block/object/treesyncer/treesyncer.go b/core/block/object/treesyncer/treesyncer.go index 5b5387595..8c727030f 100644 --- a/core/block/object/treesyncer/treesyncer.go +++ b/core/block/object/treesyncer/treesyncer.go @@ -101,7 +101,7 @@ func NewTreeSyncer(spaceId string) treesyncer.TreeSyncer { func (t *treeSyncer) Init(a *app.App) (err error) { t.isSyncing = true spaceStorage := app.MustComponent[spacestorage.SpaceStorage](a) - t.spaceSettingsId = spaceStorage.SpaceSettingsId() + t.spaceSettingsId = spaceStorage.StateStorage().SettingsId() t.treeManager = app.MustComponent[treemanager.TreeManager](a) t.nodeConf = app.MustComponent[nodeconf.NodeConf](a) t.syncedTreeRemover = app.MustComponent[SyncedTreeRemover](a) diff --git a/core/block/service.go b/core/block/service.go index d722bd398..88a0d90da 100644 --- a/core/block/service.go +++ b/core/block/service.go @@ -329,7 +329,7 @@ func (s *Service) SpaceInitChat(ctx context.Context, spaceId string) error { return err } - if spaceChatExists, err := spc.Storage().HasTree(chatId); err != nil { + if spaceChatExists, err := spc.Storage().HasTree(ctx, chatId); err != nil { return err } else if !spaceChatExists { _, err = s.objectCreator.AddChatDerivedObject(ctx, spc, workspaceId) diff --git a/core/block/source/service.go b/core/block/source/service.go index acce56c5e..bd99df6b4 100644 --- a/core/block/source/service.go +++ b/core/block/source/service.go @@ -8,7 +8,6 @@ import ( "github.com/anyproto/any-sync/commonspace/object/acl/list" "github.com/anyproto/any-sync/commonspace/object/tree/objecttree" - "github.com/anyproto/any-sync/commonspace/object/tree/treestorage" "github.com/gogo/protobuf/types" "github.com/anyproto/any-sync/accountservice" @@ -102,7 +101,7 @@ type BuildOptions struct { func (b *BuildOptions) BuildTreeOpts() objecttreebuilder.BuildTreeOpts { return objecttreebuilder.BuildTreeOpts{ Listener: b.Listener, - TreeBuilder: func(treeStorage treestorage.TreeStorage, aclList list.AclList) (objecttree.ObjectTree, error) { + TreeBuilder: func(treeStorage objecttree.Storage, aclList list.AclList) (objecttree.ObjectTree, error) { ot, err := objecttree.BuildKeyFilterableObjectTree(treeStorage, aclList) if err != nil { return nil, err diff --git a/core/configfetcher/configfetcher.go b/core/configfetcher/configfetcher.go index d6fb96def..7320d7f08 100644 --- a/core/configfetcher/configfetcher.go +++ b/core/configfetcher/configfetcher.go @@ -83,13 +83,13 @@ func (c *configFetcher) updateStatus(ctx context.Context) (err error) { techSpace := c.getter.TechSpace() res, err := c.client.StatusCheck(ctx, techSpace.Id()) if errors.Is(err, coordinatorproto.ErrSpaceNotExists) { - header, sErr := techSpace.Storage().SpaceHeader() + state, sErr := techSpace.Storage().StateStorage().GetState(ctx) if sErr != nil { return sErr } payload := coordinatorclient.SpaceSignPayload{ - SpaceId: header.Id, - SpaceHeader: header.RawHeader, + SpaceId: techSpace.Id(), + SpaceHeader: state.SpaceHeader, OldAccount: c.wallet.GetOldAccountKey(), Identity: c.wallet.GetAccountPrivkey(), } diff --git a/core/indexer/reindex.go b/core/indexer/reindex.go index 301406afb..14e5b0e17 100644 --- a/core/indexer/reindex.go +++ b/core/indexer/reindex.go @@ -7,6 +7,7 @@ import ( "time" anystore "github.com/anyproto/any-store" + "github.com/anyproto/any-sync/commonspace/headsync/headstorage" "github.com/gogo/protobuf/types" "go.uber.org/zap" @@ -427,35 +428,31 @@ func (i *indexer) reindexIDs(ctx context.Context, space smartblock.Space, reinde func (i *indexer) reindexOutdatedObjects(ctx context.Context, space clientspace.Space) (toReindex, success int, err error) { store := i.store.SpaceIndex(space.Id()) - tids := space.StoredIds() + var entries []headstorage.HeadsEntry + err = space.Storage().HeadStorage().IterateEntries(ctx, headstorage.IterOpts{}, func(entry headstorage.HeadsEntry) (bool, error) { + entries = append(entries, entry) + return true, nil + }) + if err != nil { + return + } var idsToReindex []string - for _, tid := range tids { + for _, entry := range entries { + id := entry.Id logErr := func(err error) { - log.With("tree", tid).Errorf("reindexOutdatedObjects failed to get tree to reindex: %s", err) + log.With("tree", entry.Id).Errorf("reindexOutdatedObjects failed to get tree to reindex: %s", err) } - - lastHash, err := store.GetLastIndexedHeadsHash(ctx, tid) + lastHash, err := store.GetLastIndexedHeadsHash(ctx, id) if err != nil { logErr(err) continue } - info, err := space.Storage().TreeStorage(tid) - if err != nil { - logErr(err) - continue - } - heads, err := info.Heads() - if err != nil { - logErr(err) - continue - } - - hh := headsHash(heads) + hh := headsHash(entry.Heads) if lastHash != hh { if lastHash != "" { - log.With("tree", tid).Warnf("not equal indexed heads hash: %s!=%s (%d logs)", lastHash, hh, len(heads)) + log.With("tree", id).Warnf("not equal indexed heads hash: %s!=%s (%d logs)", lastHash, hh, len(entry.Heads)) } - idsToReindex = append(idsToReindex, tid) + idsToReindex = append(idsToReindex, id) } } diff --git a/core/syncstatus/objectsyncstatus/syncstatus.go b/core/syncstatus/objectsyncstatus/syncstatus.go index a05873e80..f896cb035 100644 --- a/core/syncstatus/objectsyncstatus/syncstatus.go +++ b/core/syncstatus/objectsyncstatus/syncstatus.go @@ -94,7 +94,7 @@ func (s *syncStatusService) Init(a *app.App) (err error) { s.updateIntervalSecs = syncUpdateInterval s.updateTimeout = syncTimeout s.spaceId = sharedState.SpaceId - s.spaceSettingsId = spaceStorage.SpaceSettingsId() + s.spaceSettingsId = spaceStorage.StateStorage().SettingsId() s.periodicSync = periodicsync.NewPeriodicSync( s.updateIntervalSecs, s.updateTimeout, diff --git a/space/clientspace/space.go b/space/clientspace/space.go index 93dcd6d6b..1ec77b36e 100644 --- a/space/clientspace/space.go +++ b/space/clientspace/space.go @@ -11,7 +11,6 @@ import ( "github.com/anyproto/any-sync/commonspace" "github.com/anyproto/any-sync/commonspace/headsync" "github.com/anyproto/any-sync/commonspace/objecttreebuilder" - "github.com/anyproto/any-sync/commonspace/spacestorage" "github.com/anyproto/any-sync/net/peer" "github.com/anyproto/any-sync/util/crypto" "github.com/gogo/protobuf/types" @@ -30,6 +29,7 @@ import ( "github.com/anyproto/anytype-heart/space/spacecore" "github.com/anyproto/anytype-heart/space/spacecore/peermanager" "github.com/anyproto/anytype-heart/space/spacecore/storage" + "github.com/anyproto/anytype-heart/space/spacecore/storage/anystorage" ) type Space interface { @@ -41,7 +41,7 @@ type Space interface { DebugAllHeads() []headsync.TreeHeads DeleteTree(ctx context.Context, id string) (err error) StoredIds() []string - Storage() spacestorage.SpaceStorage + Storage() anystorage.ClientSpaceStorage DerivedIDs() threads.DerivedSmartblockIds @@ -125,12 +125,16 @@ func BuildSpace(ctx context.Context, deps SpaceDeps) (Space, error) { if err != nil { return nil, fmt.Errorf("derive object ids: %w", err) } - if deps.StorageService.IsSpaceCreated(deps.CommonSpace.Id()) { + isSpaceCreated, err := sp.Storage().IsSpaceCreated(ctx) + if err != nil { + return nil, fmt.Errorf("is space created: %w", err) + } + if isSpaceCreated { err = sp.ObjectProvider.CreateMandatoryObjects(ctx, sp) if err != nil { return nil, fmt.Errorf("create mandatory objects: %w", err) } - err = deps.StorageService.UnmarkSpaceCreated(deps.CommonSpace.Id()) + err = sp.Storage().UnmarkSpaceCreated(ctx) if err != nil { return nil, fmt.Errorf("unmark space created: %w", err) } @@ -208,8 +212,8 @@ func (s *space) StoredIds() []string { return s.common.StoredIds() } -func (s *space) Storage() spacestorage.SpaceStorage { - return s.common.Storage() +func (s *space) Storage() anystorage.ClientSpaceStorage { + return s.common.Storage().(anystorage.ClientSpaceStorage) } func (s *space) DerivedIDs() threads.DerivedSmartblockIds { @@ -306,10 +310,7 @@ func (s *space) TryLoadBundledObjects(ctx context.Context) (missingSourceIds []s if err != nil { return nil, err } - storedIds, err := s.Storage().StoredIds() - if err != nil { - return nil, err - } + storedIds := s.StoredIds() missingIds := bundledObjectIds.Filter(func(bo domain.BundledObjectId) bool { return !slices.Contains(storedIds, bo.DerivedObjectId) @@ -319,11 +320,7 @@ func (s *space) TryLoadBundledObjects(ctx context.Context) (missingSourceIds []s s.LoadObjectsIgnoreErrs(ctx, missingIds.DerivedObjectIds()) // todo: make LoadObjectsIgnoreErrs return list of loaded ids - storedIds, err = s.Storage().StoredIds() - if err != nil { - return nil, err - } - + storedIds = s.StoredIds() missingIds = bundledObjectIds.Filter(func(bo domain.BundledObjectId) bool { return !slices.Contains(storedIds, bo.DerivedObjectId) }) @@ -349,7 +346,7 @@ func (s *space) migrationProfileObject(ctx context.Context) error { return err } - extractedProfileExists, _ := s.Storage().HasTree(extractedProfileId) + extractedProfileExists, _ := s.Storage().HasTree(ctx, extractedProfileId) if extractedProfileExists { return nil } diff --git a/space/clientspace/virtualspace.go b/space/clientspace/virtualspace.go index f8ca69a80..827d5166e 100644 --- a/space/clientspace/virtualspace.go +++ b/space/clientspace/virtualspace.go @@ -77,10 +77,6 @@ func (c *virtualCommonSpace) HandleStreamSyncRequest(ctx context.Context, req *s return nil } -func (c *virtualCommonSpace) HandleDeprecatedObjectSyncRequest(ctx context.Context, req *spacesyncproto.ObjectSyncMessage) (resp *spacesyncproto.ObjectSyncMessage, err error) { - return -} - func (c *virtualCommonSpace) HandleStream(stream spacesyncproto.DRPCSpaceSync_ObjectSyncStreamStream) error { return nil } @@ -113,7 +109,7 @@ func (c *virtualCommonSpace) DebugAllHeads() []headsync.TreeHeads { return nil } -func (c *virtualCommonSpace) Description() (desc commonspace.SpaceDescription, err error) { +func (c *virtualCommonSpace) Description(ctx context.Context) (desc commonspace.SpaceDescription, err error) { return } diff --git a/space/spacecore/rpchandler.go b/space/spacecore/rpchandler.go index 1e845dc08..1793fc1d2 100644 --- a/space/spacecore/rpchandler.go +++ b/space/spacecore/rpchandler.go @@ -85,7 +85,7 @@ func (r *rpcHandler) SpacePull(ctx context.Context, request *spacesyncproto.Spac return } - spaceDesc, err := sp.Description() + spaceDesc, err := sp.Description(ctx) if err != nil { err = spacesyncproto.ErrUnexpected return diff --git a/space/spacecore/storage/anystorage/clientstorage.go b/space/spacecore/storage/anystorage/clientstorage.go index 0e246fdfe..8cf2d1384 100644 --- a/space/spacecore/storage/anystorage/clientstorage.go +++ b/space/spacecore/storage/anystorage/clientstorage.go @@ -3,12 +3,22 @@ package anystorage import ( "context" + "github.com/anyproto/any-sync/commonspace/object/tree/treechangeproto" "github.com/anyproto/any-sync/commonspace/spacestorage" ) -// TODO: add mark space created etc +// TODO: [storage] add mark space created etc // add tree root +type ClientSpaceStorage interface { + spacestorage.SpaceStorage + HasTree(ctx context.Context, id string) (has bool, err error) + TreeRoot(ctx context.Context, id string) (root *treechangeproto.RawTreeChangeWithId, err error) + MarkSpaceCreated(ctx context.Context) error + IsSpaceCreated(ctx context.Context) (created bool, err error) + UnmarkSpaceCreated(ctx context.Context) error +} + type clientStorage struct { spacestorage.SpaceStorage cont *storageContainer diff --git a/space/spacecore/storage/anystorage/storageservice.go b/space/spacecore/storage/anystorage/storageservice.go index 26696e127..f446b9e15 100644 --- a/space/spacecore/storage/anystorage/storageservice.go +++ b/space/spacecore/storage/anystorage/storageservice.go @@ -149,7 +149,7 @@ func (s *storageService) createDb(ctx context.Context, id string) (db anystore.D if _, err := os.Stat(dbPath); err != nil { err := os.MkdirAll(dbPath, 0755) if err != nil { - return + return nil, err } } return anystore.Open(ctx, dbPath, nil) diff --git a/space/spacecore/typeprovider/typeprovider.go b/space/spacecore/typeprovider/typeprovider.go index b0b9d0be9..8cc7383b3 100644 --- a/space/spacecore/typeprovider/typeprovider.go +++ b/space/spacecore/typeprovider/typeprovider.go @@ -25,6 +25,7 @@ import ( "github.com/anyproto/anytype-heart/pkg/lib/logging" "github.com/anyproto/anytype-heart/pkg/lib/pb/model" "github.com/anyproto/anytype-heart/space/spacecore" + "github.com/anyproto/anytype-heart/space/spacecore/storage/anystorage" ) const CName = "space.typeprovider" @@ -196,17 +197,15 @@ func (p *provider) objectTypeFromSpace(spaceID string, id string) (tp smartblock return } p.RUnlock() - - sp, err := p.spaceService.Get(context.Background(), spaceID) + ctx := context.Background() + sp, err := p.spaceService.Get(ctx, spaceID) if err != nil { return } - store := sp.Storage() - rawRoot, err := store.TreeRoot(id) + rawRoot, err := sp.Storage().(anystorage.ClientSpaceStorage).TreeRoot(ctx, id) if err != nil { return } - tp, _, err = GetTypeAndKeyFromRoot(rawRoot) if err != nil { return diff --git a/space/spacefactory/spacefactory.go b/space/spacefactory/spacefactory.go index 9af99e52f..3a281b537 100644 --- a/space/spacefactory/spacefactory.go +++ b/space/spacefactory/spacefactory.go @@ -17,6 +17,7 @@ import ( "github.com/anyproto/anytype-heart/space/internal/spacecontroller" "github.com/anyproto/anytype-heart/space/spacecore" "github.com/anyproto/anytype-heart/space/spacecore/storage" + "github.com/anyproto/anytype-heart/space/spacecore/storage/anystorage" "github.com/anyproto/anytype-heart/space/spaceinfo" "github.com/anyproto/anytype-heart/space/techspace" ) @@ -71,7 +72,7 @@ func (s *spaceFactory) CreatePersonalSpace(ctx context.Context, metadata []byte) if err != nil { return } - err = s.storageService.MarkSpaceCreated(coreSpace.Id()) + err = coreSpace.Storage().(anystorage.ClientSpaceStorage).MarkSpaceCreated(ctx) if err != nil { return } @@ -192,7 +193,11 @@ func (s *spaceFactory) CreateInvitingSpace(ctx context.Context, id, aclHeadId st } func (s *spaceFactory) CreateShareableSpace(ctx context.Context, id string) (sp spacecontroller.SpaceController, err error) { - err = s.storageService.MarkSpaceCreated(id) + coreSpace, err := s.spaceCore.Get(ctx, id) + if err != nil { + return + } + err = coreSpace.Storage().(anystorage.ClientSpaceStorage).MarkSpaceCreated(ctx) if err != nil { return } From f334cd25798bdf60dde3f46175e57c132814e4ec Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Tue, 24 Dec 2024 15:35:29 +0100 Subject: [PATCH 068/279] GO-4146 Implement missing spacestorage methods and make stuff compile --- go.mod | 4 +- go.sum | 11 +-- .../storage/anystorage/clientstorage.go | 99 ++++++++++++++++++- .../storage/anystorage/storageservice.go | 10 +- 4 files changed, 105 insertions(+), 19 deletions(-) diff --git a/go.mod b/go.mod index ba70da3f5..2c095b22b 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( github.com/VividCortex/ewma v1.2.0 github.com/adrium/goheif v0.0.0-20230113233934-ca402e77a786 github.com/anyproto/any-store v0.1.4-0.20241211133419-d0c2df992842 - github.com/anyproto/any-sync v0.5.18-0.20241211215636-c4d03e0630a6 + github.com/anyproto/any-sync v0.6.0-alpha.1.0.20241224143141-033d6a39e992 github.com/anyproto/go-chash v0.1.0 github.com/anyproto/go-naturaldate/v2 v2.0.2-0.20230524105841-9829cfd13438 github.com/anyproto/go-slip10 v1.0.0 @@ -104,6 +104,7 @@ require ( golang.org/x/mobile v0.0.0-20241108191957-fa514ef75a0f golang.org/x/net v0.32.0 golang.org/x/oauth2 v0.24.0 + golang.org/x/sys v0.28.0 golang.org/x/text v0.21.0 google.golang.org/grpc v1.68.1 gopkg.in/Graylog2/go-gelf.v2 v2.0.0-20180125164251-1832d8546a9f @@ -249,7 +250,6 @@ require ( golang.org/x/crypto v0.30.0 // indirect golang.org/x/mod v0.22.0 // indirect golang.org/x/sync v0.10.0 // indirect - golang.org/x/sys v0.28.0 // indirect golang.org/x/term v0.27.0 // indirect golang.org/x/time v0.8.0 // indirect golang.org/x/tools v0.27.0 // indirect diff --git a/go.sum b/go.sum index b43081c56..1df01f52a 100644 --- a/go.sum +++ b/go.sum @@ -76,15 +76,10 @@ github.com/alexbrainman/goissue34681 v0.0.0-20191006012335-3fc7a47baff5/go.mod h github.com/andybalholm/cascadia v1.3.1/go.mod h1:R4bJ1UQfqADjvDa4P6HZHLh/3OxWWEqc0Sk8XGwHqvA= github.com/andybalholm/cascadia v1.3.2 h1:3Xi6Dw5lHF15JtdcmAHD3i1+T8plmv7BQ/nsViSLyss= github.com/andybalholm/cascadia v1.3.2/go.mod h1:7gtRlve5FxPPgIgX36uWBX58OdBsSS6lUvCFb+h7KvU= -github.com/anyproto/any-store v0.1.3 h1:onWLP8tuWiUvYOyV3DoRODscTxAiGEjwQPm+NMxeq3M= -github.com/anyproto/any-store v0.1.3/go.mod h1:6/0OUKgSMWF/vYGoGYzQOl2CII5OdiuXbQlGDXYcNYc= +github.com/anyproto/any-store v0.1.4-0.20241211133419-d0c2df992842 h1:2hJRYJ4+AjOSiy3Sf84XyU/ki8zE/+Tp6IdhqZZHBaY= github.com/anyproto/any-store v0.1.4-0.20241211133419-d0c2df992842/go.mod h1:6/0OUKgSMWF/vYGoGYzQOl2CII5OdiuXbQlGDXYcNYc= -github.com/anyproto/any-sync v0.5.18-0.20241211182813-65dbccbc127f h1:oN2wQvROq9pSKHQgeZTKhfZEDqiEZqyF+Ke9N7banXw= -github.com/anyproto/any-sync v0.5.18-0.20241211182813-65dbccbc127f/go.mod h1:PaX1E0ryKt9TtKkVRBmst4k15PSuWVFbL079N2Z957U= -github.com/anyproto/any-sync v0.5.18-0.20241211215636-c4d03e0630a6 h1:rF97YcmaU6jjSsq+0k6qsmLlU1KNC5d8A03K/Hz0gww= -github.com/anyproto/any-sync v0.5.18-0.20241211215636-c4d03e0630a6/go.mod h1:PaX1E0ryKt9TtKkVRBmst4k15PSuWVFbL079N2Z957U= -github.com/anyproto/any-sync v0.5.22 h1:mfAVfmcP8o/9ZIGS59YECiVCi9UZI9u3W0hK+vH7/z8= -github.com/anyproto/any-sync v0.5.22/go.mod h1:ANfWnDHP9t4RHelUhX99YmaDvmzcaeIwR9grkKIkfeM= +github.com/anyproto/any-sync v0.6.0-alpha.1.0.20241224143141-033d6a39e992 h1:5xkhRuEkNyQ02P6d2cUlYhMPdAzx74YcOW9VCuxF73c= +github.com/anyproto/any-sync v0.6.0-alpha.1.0.20241224143141-033d6a39e992/go.mod h1:PaX1E0ryKt9TtKkVRBmst4k15PSuWVFbL079N2Z957U= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580 h1:Ba80IlCCxkZ9H1GF+7vFu/TSpPvbpDCxXJ5ogc4euYc= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580/go.mod h1:T/uWAYxrXdaXw64ihI++9RMbKTCpKd/yE9+saARew7k= github.com/anyproto/go-chash v0.1.0 h1:I9meTPjXFRfXZHRJzjOHC/XF7Q5vzysKkiT/grsogXY= diff --git a/space/spacecore/storage/anystorage/clientstorage.go b/space/spacecore/storage/anystorage/clientstorage.go index 8cf2d1384..48999d776 100644 --- a/space/spacecore/storage/anystorage/clientstorage.go +++ b/space/spacecore/storage/anystorage/clientstorage.go @@ -2,7 +2,11 @@ package anystorage import ( "context" + "errors" + anystore "github.com/anyproto/any-store" + "github.com/anyproto/any-store/anyenc" + "github.com/anyproto/any-store/query" "github.com/anyproto/any-sync/commonspace/object/tree/treechangeproto" "github.com/anyproto/any-sync/commonspace/spacestorage" ) @@ -19,12 +23,105 @@ type ClientSpaceStorage interface { UnmarkSpaceCreated(ctx context.Context) error } +var _ ClientSpaceStorage = (*clientStorage)(nil) + +const ( + clientCollectionKey = "_client" + clientDocumentKey = "space" + createdKey = "created" + // TODO: [storage] make it more obvious + rawChangeKey = "r" +) + type clientStorage struct { spacestorage.SpaceStorage - cont *storageContainer + cont *storageContainer + clientColl anystore.Collection + arena *anyenc.Arena +} + +func newClientStorage(ctx context.Context, cont *storageContainer, spaceStorage spacestorage.SpaceStorage) (*clientStorage, error) { + storage := &clientStorage{ + SpaceStorage: spaceStorage, + cont: cont, + arena: &anyenc.Arena{}, + } + anyStore := storage.AnyStore() + client, err := anyStore.Collection(ctx, clientCollectionKey) + if err != nil { + return nil, err + } + storage.clientColl = client + return storage, nil } func (r *clientStorage) Close(ctx context.Context) (err error) { defer r.cont.Release() return r.SpaceStorage.Close(ctx) } + +func (r *clientStorage) HasTree(ctx context.Context, id string) (has bool, err error) { + _, err = r.SpaceStorage.HeadStorage().GetEntry(ctx, id) + isNotFound := errors.Is(err, anystore.ErrDocNotFound) + if err != nil && !isNotFound { + return false, err + } + return !isNotFound, nil +} + +func (r *clientStorage) TreeRoot(ctx context.Context, id string) (root *treechangeproto.RawTreeChangeWithId, err error) { + // it should be faster to do it that way, instead of calling TreeStorage + coll, err := r.SpaceStorage.AnyStore().OpenCollection(ctx, id) + if err != nil { + return nil, err + } + doc, err := coll.FindId(ctx, id) + if err != nil { + return nil, err + } + return &treechangeproto.RawTreeChangeWithId{ + Id: id, + RawChange: doc.Value().GetBytes(rawChangeKey), + }, nil +} + +func (r *clientStorage) MarkSpaceCreated(ctx context.Context) error { + return r.modifyState(ctx, true) +} + +func (r *clientStorage) IsSpaceCreated(ctx context.Context) (isCreated bool, err error) { + doc, err := r.clientColl.FindId(ctx, clientDocumentKey) + isNotFound := errors.Is(err, anystore.ErrDocNotFound) + if err != nil && !isNotFound { + return false, err + } + if isNotFound { + return false, nil + } + return doc.Value().GetBool(createdKey), nil +} + +func (r *clientStorage) UnmarkSpaceCreated(ctx context.Context) error { + return r.modifyState(ctx, false) +} + +func (r *clientStorage) modifyState(ctx context.Context, isCreated bool) error { + tx, err := r.clientColl.WriteTx(ctx) + if err != nil { + return err + } + val := r.arena.NewTrue() + if !isCreated { + val = r.arena.NewFalse() + } + mod := query.ModifyFunc(func(a *anyenc.Arena, v *anyenc.Value) (result *anyenc.Value, modified bool, err error) { + v.Set(createdKey, val) + return v, true, nil + }) + _, err = r.clientColl.UpsertId(tx.Context(), clientDocumentKey, mod) + if err != nil { + tx.Rollback() + return err + } + return tx.Commit() +} diff --git a/space/spacecore/storage/anystorage/storageservice.go b/space/spacecore/storage/anystorage/storageservice.go index f446b9e15..6d21bcb1f 100644 --- a/space/spacecore/storage/anystorage/storageservice.go +++ b/space/spacecore/storage/anystorage/storageservice.go @@ -222,10 +222,7 @@ func (s *storageService) WaitSpaceStorage(ctx context.Context, id string) (space if err != nil { return nil, err } - return &clientStorage{ - SpaceStorage: st, - cont: cont, - }, nil + return newClientStorage(ctx, cont, st) } func (s *storageService) SpaceExists(id string) bool { @@ -253,10 +250,7 @@ func (s *storageService) CreateSpaceStorage(ctx context.Context, payload spacest if err != nil { return nil, err } - return &clientStorage{ - SpaceStorage: st, - cont: cont, - }, nil + return newClientStorage(ctx, cont, st) } func (s *storageService) TryLockAndDo(ctx context.Context, spaceId string, do func() error) (err error) { From 9091731c5c3a8bae315324ae8494dc8f503155ae Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Tue, 24 Dec 2024 15:48:14 +0100 Subject: [PATCH 069/279] GO-4146 Implement BindSpaceId --- pkg/lib/localstore/objectstore/space.go | 34 +++++++++++++++++-- .../storage/anystorage/clientstorage.go | 2 ++ 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/pkg/lib/localstore/objectstore/space.go b/pkg/lib/localstore/objectstore/space.go index f996bb005..64fc307c9 100644 --- a/pkg/lib/localstore/objectstore/space.go +++ b/pkg/lib/localstore/objectstore/space.go @@ -1,12 +1,19 @@ package objectstore import ( + "context" + + "github.com/anyproto/any-store/anyenc" + "github.com/anyproto/any-store/query" + "github.com/anyproto/anytype-heart/pkg/lib/bundle" "github.com/anyproto/anytype-heart/pkg/lib/database" "github.com/anyproto/anytype-heart/pkg/lib/pb/model" "github.com/anyproto/anytype-heart/util/pbtypes" ) +const bindKey = "b" + type SpaceNameGetter interface { GetSpaceName(spaceId string) string } @@ -42,9 +49,32 @@ func (d *dsObjectStore) GetSpaceName(spaceId string) string { } func (d *dsObjectStore) BindSpaceId(spaceId, objectId string) error { - panic("implement me") + return d.modifyBind(d.componentCtx, objectId, spaceId) } func (d *dsObjectStore) GetSpaceId(objectId string) (spaceId string, err error) { - panic("implement me") + doc, err := d.bindId.FindId(d.componentCtx, objectId) + if err != nil { + return "", err + } + return doc.Value().GetString(bindKey), nil +} + +func (d *dsObjectStore) modifyBind(ctx context.Context, objectId, spaceId string) error { + tx, err := d.bindId.WriteTx(ctx) + if err != nil { + return err + } + arena := d.arenaPool.Get() + defer d.arenaPool.Put(arena) + mod := query.ModifyFunc(func(a *anyenc.Arena, v *anyenc.Value) (result *anyenc.Value, modified bool, err error) { + v.Set(bindKey, arena.NewString(spaceId)) + return v, true, nil + }) + _, err = d.bindId.UpsertId(tx.Context(), objectId, mod) + if err != nil { + tx.Rollback() + return err + } + return tx.Commit() } diff --git a/space/spacecore/storage/anystorage/clientstorage.go b/space/spacecore/storage/anystorage/clientstorage.go index 48999d776..5c1acc309 100644 --- a/space/spacecore/storage/anystorage/clientstorage.go +++ b/space/spacecore/storage/anystorage/clientstorage.go @@ -110,10 +110,12 @@ func (r *clientStorage) modifyState(ctx context.Context, isCreated bool) error { if err != nil { return err } + // TODO: [storage] change to arena pool or use mutexes val := r.arena.NewTrue() if !isCreated { val = r.arena.NewFalse() } + defer r.arena.Reset() mod := query.ModifyFunc(func(a *anyenc.Arena, v *anyenc.Value) (result *anyenc.Value, modified bool, err error) { v.Set(createdKey, val) return v, true, nil From 7c735fa8470df89b43563ea10674af805973ae03 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Thu, 26 Dec 2024 17:37:26 +0100 Subject: [PATCH 070/279] GO-4459 Return tags in details --- cmd/api/handlers.go | 45 ++++++++++++++++++++++++++++++++++++++++----- cmd/api/helper.go | 19 +++++++++++++++++++ cmd/api/schemas.go | 6 ++++++ 3 files changed, 65 insertions(+), 5 deletions(-) diff --git a/cmd/api/handlers.go b/cmd/api/handlers.go index 26f133ded..adef9b356 100644 --- a/cmd/api/handlers.go +++ b/cmd/api/handlers.go @@ -351,6 +351,11 @@ func (a *ApiServer) getObjectsForSpaceHandler(c *gin.Context) { return } + objectShowResp := a.mw.ObjectShow(c.Request.Context(), &pb.RpcObjectShowRequest{ + SpaceId: spaceId, + ObjectId: record.Fields["id"].GetStringValue(), + }) + object := Object{ // TODO fix type inconsistency Type: model.ObjectTypeLayout_name[int32(record.Fields["layout"].GetNumberValue())], @@ -359,8 +364,8 @@ func (a *ApiServer) getObjectsForSpaceHandler(c *gin.Context) { Icon: icon, ObjectType: objectTypeName, SpaceId: spaceId, + RootId: objectShowResp.ObjectView.RootId, // TODO: populate other fields - // RootId: record.Fields["rootId"].GetStringValue(), // Blocks: []Block{}, Details: []Detail{ { @@ -369,6 +374,12 @@ func (a *ApiServer) getObjectsForSpaceHandler(c *gin.Context) { "lastModifiedDate": record.Fields["lastModifiedDate"].GetNumberValue(), }, }, + { + Id: "tags", + Details: map[string]interface{}{ + "tags": a.getTags(objectShowResp), + }, + }, }, } @@ -423,8 +434,21 @@ func (a *ApiServer) getObjectHandler(c *gin.Context) { ObjectType: objectTypeName, RootId: resp.ObjectView.RootId, // TODO: populate other fields - Blocks: []Block{}, - Details: []Detail{}, + // Blocks: []Block{}, + Details: []Detail{ + { + Id: "lastModifiedDate", + Details: map[string]interface{}{ + "lastModifiedDate": resp.ObjectView.Details[0].Details.Fields["lastModifiedDate"].GetNumberValue(), + }, + }, + { + Id: "tags", + Details: map[string]interface{}{ + "tags": a.getTags(resp), + }, + }, + }, } c.JSON(http.StatusOK, gin.H{"object": object}) @@ -571,7 +595,7 @@ func (a *ApiServer) getObjectTypesHandler(c *gin.Context) { }) } - c.JSON(http.StatusOK, gin.H{"objectTypes": objectTypes}) + c.JSON(http.StatusOK, gin.H{"object_types": objectTypes}) } // getObjectTypeTemplatesHandler retrieves a list of templates for a specific object type in a space @@ -807,6 +831,11 @@ func (a *ApiServer) getObjectsHandler(c *gin.Context) { return } + objectShowResp := a.mw.ObjectShow(c.Request.Context(), &pb.RpcObjectShowRequest{ + SpaceId: spaceId, + ObjectId: record.Fields["id"].GetStringValue(), + }) + searchResults = append(searchResults, Object{ Type: model.ObjectTypeLayout_name[int32(record.Fields["layout"].GetNumberValue())], Id: record.Fields["id"].GetStringValue(), @@ -814,8 +843,8 @@ func (a *ApiServer) getObjectsHandler(c *gin.Context) { Icon: icon, ObjectType: objectTypeName, SpaceId: spaceId, + RootId: objectShowResp.ObjectView.RootId, // TODO: populate other fields - // RootId: record.Fields["rootId"].GetStringValue(), // Blocks: []Block{}, Details: []Detail{ { @@ -824,6 +853,12 @@ func (a *ApiServer) getObjectsHandler(c *gin.Context) { "lastModifiedDate": record.Fields["lastModifiedDate"].GetNumberValue(), }, }, + { + Id: "tags", + Details: map[string]interface{}{ + "tags": a.getTags(objectShowResp), + }, + }, }, }) } diff --git a/cmd/api/helper.go b/cmd/api/helper.go index 7bdbd0127..2dbf8ebb8 100644 --- a/cmd/api/helper.go +++ b/cmd/api/helper.go @@ -116,3 +116,22 @@ func (a *ApiServer) getIconFromEmojiOrImage(iconEmoji string, iconImage string) return "" } + +// getTags returns the list of tags from the object details +func (a *ApiServer) getTags(resp *pb.RpcObjectShowResponse) []Tag { + tags := []Tag{} + for _, tagId := range resp.ObjectView.Details[0].Details.Fields["tag"].GetListValue().Values { + id := tagId.GetStringValue() + for _, detail := range resp.ObjectView.Details { + if detail.Id == id { + tags = append(tags, Tag{ + Id: id, + Name: detail.Details.Fields["name"].GetStringValue(), + Color: detail.Details.Fields["relationOptionColor"].GetStringValue(), + }) + break + } + } + } + return tags +} diff --git a/cmd/api/schemas.go b/cmd/api/schemas.go index ea38c0d47..57548978c 100644 --- a/cmd/api/schemas.go +++ b/cmd/api/schemas.go @@ -103,6 +103,12 @@ type Detail struct { Details map[string]interface{} `json:"details"` } +type Tag struct { + Id string `json:"id" example:"bafyreiaixlnaefu3ci22zdenjhsdlyaeeoyjrsid5qhfeejzlccijbj7sq"` + Name string `json:"name" example:"Tag Name"` + Color string `json:"color" example:"yellow"` +} + type ObjectType struct { Type string `json:"type" example:"object_type"` Id string `json:"id" example:"bafyreigyb6l5szohs32ts26ku2j42yd65e6hqy2u3gtzgdwqv6hzftsetu"` From 9e87a1bf4a90a69abd433a16be24935b4cac35c7 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Thu, 26 Dec 2024 17:48:22 +0100 Subject: [PATCH 071/279] GO-4459 Add check for tag field existence --- cmd/api/helper.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/cmd/api/helper.go b/cmd/api/helper.go index 2dbf8ebb8..2cd6daca9 100644 --- a/cmd/api/helper.go +++ b/cmd/api/helper.go @@ -120,7 +120,13 @@ func (a *ApiServer) getIconFromEmojiOrImage(iconEmoji string, iconImage string) // getTags returns the list of tags from the object details func (a *ApiServer) getTags(resp *pb.RpcObjectShowResponse) []Tag { tags := []Tag{} - for _, tagId := range resp.ObjectView.Details[0].Details.Fields["tag"].GetListValue().Values { + + tagField, ok := resp.ObjectView.Details[0].Details.Fields["tag"] + if !ok { + return tags + } + + for _, tagId := range tagField.GetListValue().Values { id := tagId.GetStringValue() for _, detail := range resp.ObjectView.Details { if detail.Id == id { From d180dc6a49325198a9ea5a0d09345e6859b0dd5d Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Thu, 26 Dec 2024 20:33:03 +0100 Subject: [PATCH 072/279] GO-4459 Return blocks in object response --- cmd/api/docs/docs.go | 15 ++------ cmd/api/docs/swagger.json | 15 ++------ cmd/api/docs/swagger.yaml | 11 ++---- cmd/api/handlers.go | 9 ++--- cmd/api/helper.go | 73 +++++++++++++++++++++++++++++++++++++++ cmd/api/schemas.go | 13 +++---- 6 files changed, 86 insertions(+), 50 deletions(-) diff --git a/cmd/api/docs/docs.go b/cmd/api/docs/docs.go index ae8c64d50..d87f6e590 100644 --- a/cmd/api/docs/docs.go +++ b/cmd/api/docs/docs.go @@ -1031,9 +1031,6 @@ const docTemplate = `{ "id": { "type": "string" }, - "layout": { - "$ref": "#/definitions/api.Layout" - }, "text": { "$ref": "#/definitions/api.Text" }, @@ -1139,10 +1136,10 @@ const docTemplate = `{ "type": "integer" }, "state": { - "type": "integer" + "type": "string" }, "style": { - "type": "integer" + "type": "string" }, "target_object_id": { "type": "string" @@ -1164,14 +1161,6 @@ const docTemplate = `{ } } }, - "api.Layout": { - "type": "object", - "properties": { - "style": { - "type": "string" - } - } - }, "api.Member": { "type": "object", "properties": { diff --git a/cmd/api/docs/swagger.json b/cmd/api/docs/swagger.json index 6ea28f9ba..64f5f32d3 100644 --- a/cmd/api/docs/swagger.json +++ b/cmd/api/docs/swagger.json @@ -1025,9 +1025,6 @@ "id": { "type": "string" }, - "layout": { - "$ref": "#/definitions/api.Layout" - }, "text": { "$ref": "#/definitions/api.Text" }, @@ -1133,10 +1130,10 @@ "type": "integer" }, "state": { - "type": "integer" + "type": "string" }, "style": { - "type": "integer" + "type": "string" }, "target_object_id": { "type": "string" @@ -1158,14 +1155,6 @@ } } }, - "api.Layout": { - "type": "object", - "properties": { - "style": { - "type": "string" - } - } - }, "api.Member": { "type": "object", "properties": { diff --git a/cmd/api/docs/swagger.yaml b/cmd/api/docs/swagger.yaml index 1a441344a..871d20bc8 100644 --- a/cmd/api/docs/swagger.yaml +++ b/cmd/api/docs/swagger.yaml @@ -38,8 +38,6 @@ definitions: $ref: '#/definitions/api.File' id: type: string - layout: - $ref: '#/definitions/api.Layout' text: $ref: '#/definitions/api.Text' vertical_align: @@ -109,9 +107,9 @@ definitions: size: type: integer state: - type: integer + type: string style: - type: integer + type: string target_object_id: type: string type: @@ -125,11 +123,6 @@ definitions: type: string type: array type: object - api.Layout: - properties: - style: - type: string - type: object api.Member: properties: global_name: diff --git a/cmd/api/handlers.go b/cmd/api/handlers.go index adef9b356..25c87bccb 100644 --- a/cmd/api/handlers.go +++ b/cmd/api/handlers.go @@ -365,8 +365,7 @@ func (a *ApiServer) getObjectsForSpaceHandler(c *gin.Context) { ObjectType: objectTypeName, SpaceId: spaceId, RootId: objectShowResp.ObjectView.RootId, - // TODO: populate other fields - // Blocks: []Block{}, + Blocks: a.getBlocks(objectShowResp), Details: []Detail{ { Id: "lastModifiedDate", @@ -433,8 +432,7 @@ func (a *ApiServer) getObjectHandler(c *gin.Context) { Icon: resp.ObjectView.Details[0].Details.Fields["iconEmoji"].GetStringValue(), ObjectType: objectTypeName, RootId: resp.ObjectView.RootId, - // TODO: populate other fields - // Blocks: []Block{}, + Blocks: a.getBlocks(resp), Details: []Detail{ { Id: "lastModifiedDate", @@ -844,8 +842,7 @@ func (a *ApiServer) getObjectsHandler(c *gin.Context) { ObjectType: objectTypeName, SpaceId: spaceId, RootId: objectShowResp.ObjectView.RootId, - // TODO: populate other fields - // Blocks: []Block{}, + Blocks: a.getBlocks(objectShowResp), Details: []Detail{ { Id: "lastModifiedDate", diff --git a/cmd/api/helper.go b/cmd/api/helper.go index 2cd6daca9..65bee8070 100644 --- a/cmd/api/helper.go +++ b/cmd/api/helper.go @@ -141,3 +141,76 @@ func (a *ApiServer) getTags(resp *pb.RpcObjectShowResponse) []Tag { } return tags } + +func (a *ApiServer) getBlocks(resp *pb.RpcObjectShowResponse) []Block { + blocks := []Block{} + + for _, block := range resp.ObjectView.Blocks { + var text *Text + var file *File + + switch content := block.Content.(type) { + case *model.BlockContentOfText: + text = &Text{ + Text: content.Text.Text, + Style: model.BlockContentTextStyle_name[int32(content.Text.Style)], + Checked: content.Text.Checked, + Color: content.Text.Color, + Icon: a.getIconFromEmojiOrImage(content.Text.IconEmoji, content.Text.IconImage), + } + case *model.BlockContentOfFile: + file = &File{ + Hash: content.File.Hash, + Name: content.File.Name, + Type: model.BlockContentFileType_name[int32(content.File.Type)], + Mime: content.File.Mime, + Size: content.File.Size(), + AddedAt: int(content.File.AddedAt), + TargetObjectId: content.File.TargetObjectId, + State: model.BlockContentFileState_name[int32(content.File.State)], + Style: model.BlockContentFileStyle_name[int32(content.File.Style)], + } + // TODO: other content types? + } + + blocks = append(blocks, Block{ + Id: block.Id, + ChildrenIds: block.ChildrenIds, + BackgroundColor: block.BackgroundColor, + Align: mapAlign(block.Align), + VerticalAlign: mapVerticalAlign(block.VerticalAlign), + Text: text, + File: file, + }) + } + + return blocks +} + +func mapAlign(align model.BlockAlign) string { + switch align { + case model.Block_AlignLeft: + return "left" + case model.Block_AlignCenter: + return "center" + case model.Block_AlignRight: + return "right" + case model.Block_AlignJustify: + return "justify" + default: + return "unknown" + } +} + +func mapVerticalAlign(align model.BlockVerticalAlign) string { + switch align { + case model.Block_VerticalAlignTop: + return "top" + case model.Block_VerticalAlignMiddle: + return "middle" + case model.Block_VerticalAlignBottom: + return "bottom" + default: + return "unknown" + } +} diff --git a/cmd/api/schemas.go b/cmd/api/schemas.go index 57548978c..8be218f1a 100644 --- a/cmd/api/schemas.go +++ b/cmd/api/schemas.go @@ -69,13 +69,8 @@ type Block struct { BackgroundColor string `json:"background_color"` Align string `json:"align"` VerticalAlign string `json:"vertical_align"` - Layout Layout `json:"layout"` - Text Text `json:"text"` - File File `json:"file"` -} - -type Layout struct { - Style string `json:"style"` + Text *Text `json:"text,omitempty"` + File *File `json:"file,omitempty"` } type Text struct { @@ -94,8 +89,8 @@ type File struct { Size int `json:"size"` AddedAt int `json:"added_at"` TargetObjectId string `json:"target_object_id"` - State int `json:"state"` - Style int `json:"style"` + State string `json:"state"` + Style string `json:"style"` } type Detail struct { From cee9715f44525545bcffbaf7fb369eaf820f5e91 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Thu, 26 Dec 2024 21:35:12 +0100 Subject: [PATCH 073/279] GO-4459 Refactor getDetails --- cmd/api/handlers.go | 45 ++------------------------- cmd/api/helper.go | 75 ++++++++++++++++++++++++++++++--------------- 2 files changed, 53 insertions(+), 67 deletions(-) diff --git a/cmd/api/handlers.go b/cmd/api/handlers.go index 25c87bccb..20602c435 100644 --- a/cmd/api/handlers.go +++ b/cmd/api/handlers.go @@ -366,20 +366,7 @@ func (a *ApiServer) getObjectsForSpaceHandler(c *gin.Context) { SpaceId: spaceId, RootId: objectShowResp.ObjectView.RootId, Blocks: a.getBlocks(objectShowResp), - Details: []Detail{ - { - Id: "lastModifiedDate", - Details: map[string]interface{}{ - "lastModifiedDate": record.Fields["lastModifiedDate"].GetNumberValue(), - }, - }, - { - Id: "tags", - Details: map[string]interface{}{ - "tags": a.getTags(objectShowResp), - }, - }, - }, + Details: a.getDetails(objectShowResp), } objects = append(objects, object) @@ -433,20 +420,7 @@ func (a *ApiServer) getObjectHandler(c *gin.Context) { ObjectType: objectTypeName, RootId: resp.ObjectView.RootId, Blocks: a.getBlocks(resp), - Details: []Detail{ - { - Id: "lastModifiedDate", - Details: map[string]interface{}{ - "lastModifiedDate": resp.ObjectView.Details[0].Details.Fields["lastModifiedDate"].GetNumberValue(), - }, - }, - { - Id: "tags", - Details: map[string]interface{}{ - "tags": a.getTags(resp), - }, - }, - }, + Details: a.getDetails(resp), } c.JSON(http.StatusOK, gin.H{"object": object}) @@ -843,20 +817,7 @@ func (a *ApiServer) getObjectsHandler(c *gin.Context) { SpaceId: spaceId, RootId: objectShowResp.ObjectView.RootId, Blocks: a.getBlocks(objectShowResp), - Details: []Detail{ - { - Id: "lastModifiedDate", - Details: map[string]interface{}{ - "lastModifiedDate": record.Fields["lastModifiedDate"].GetNumberValue(), - }, - }, - { - Id: "tags", - Details: map[string]interface{}{ - "tags": a.getTags(objectShowResp), - }, - }, - }, + Details: a.getDetails(objectShowResp), }) } } diff --git a/cmd/api/helper.go b/cmd/api/helper.go index 65bee8070..7760c39b5 100644 --- a/cmd/api/helper.go +++ b/cmd/api/helper.go @@ -117,31 +117,7 @@ func (a *ApiServer) getIconFromEmojiOrImage(iconEmoji string, iconImage string) return "" } -// getTags returns the list of tags from the object details -func (a *ApiServer) getTags(resp *pb.RpcObjectShowResponse) []Tag { - tags := []Tag{} - - tagField, ok := resp.ObjectView.Details[0].Details.Fields["tag"] - if !ok { - return tags - } - - for _, tagId := range tagField.GetListValue().Values { - id := tagId.GetStringValue() - for _, detail := range resp.ObjectView.Details { - if detail.Id == id { - tags = append(tags, Tag{ - Id: id, - Name: detail.Details.Fields["name"].GetStringValue(), - Color: detail.Details.Fields["relationOptionColor"].GetStringValue(), - }) - break - } - } - } - return tags -} - +// getBlocks returns the blocks of the object func (a *ApiServer) getBlocks(resp *pb.RpcObjectShowResponse) []Block { blocks := []Block{} @@ -214,3 +190,52 @@ func mapVerticalAlign(align model.BlockVerticalAlign) string { return "unknown" } } + +// getDetails returns the details of the object +func (a *ApiServer) getDetails(resp *pb.RpcObjectShowResponse) []Detail { + return []Detail{ + { + Id: "lastModifiedDate", + Details: map[string]interface{}{ + "lastModifiedDate": resp.ObjectView.Details[0].Details.Fields["lastModifiedDate"].GetNumberValue(), + }, + }, + { + Id: "createdDate", + Details: map[string]interface{}{ + "createdDate": resp.ObjectView.Details[0].Details.Fields["createdDate"].GetNumberValue(), + }, + }, + { + Id: "tags", + Details: map[string]interface{}{ + "tags": a.getTags(resp), + }, + }, + } +} + +// getTags returns the list of tags from the object details +func (a *ApiServer) getTags(resp *pb.RpcObjectShowResponse) []Tag { + tags := []Tag{} + + tagField, ok := resp.ObjectView.Details[0].Details.Fields["tag"] + if !ok { + return tags + } + + for _, tagId := range tagField.GetListValue().Values { + id := tagId.GetStringValue() + for _, detail := range resp.ObjectView.Details { + if detail.Id == id { + tags = append(tags, Tag{ + Id: id, + Name: detail.Details.Fields["name"].GetStringValue(), + Color: detail.Details.Fields["relationOptionColor"].GetStringValue(), + }) + break + } + } + } + return tags +} From 83862d0bc8a5791c5d32cc88d26b711e8af58303 Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Fri, 27 Dec 2024 12:26:04 +0100 Subject: [PATCH 074/279] GO-4146 Fix storage creation --- space/spacecore/storage/anystorage/storageservice.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/space/spacecore/storage/anystorage/storageservice.go b/space/spacecore/storage/anystorage/storageservice.go index 6d21bcb1f..3a9597675 100644 --- a/space/spacecore/storage/anystorage/storageservice.go +++ b/space/spacecore/storage/anystorage/storageservice.go @@ -146,12 +146,6 @@ func (s *storageService) openDb(ctx context.Context, id string) (db anystore.DB, func (s *storageService) createDb(ctx context.Context, id string) (db anystore.DB, err error) { dbPath := path.Join(s.rootPath, id) - if _, err := os.Stat(dbPath); err != nil { - err := os.MkdirAll(dbPath, 0755) - if err != nil { - return nil, err - } - } return anystore.Open(ctx, dbPath, nil) } @@ -166,6 +160,12 @@ func (s *storageService) Init(a *app.App) (err error) { ocache.WithLogger(log.Sugar()), ocache.WithGCPeriod(time.Minute), ocache.WithTTL(60*time.Second)) + if _, err = os.Stat(s.rootPath); err != nil { + err = os.MkdirAll(s.rootPath, 0755) + if err != nil { + return err + } + } return nil } From 3941b8b70342959dc62735b9613139c7e01fcb81 Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Fri, 27 Dec 2024 19:23:09 +0100 Subject: [PATCH 075/279] GO-4146 Fix treeexporter --- core/debug/treeexporter.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/core/debug/treeexporter.go b/core/debug/treeexporter.go index bc11a1dd3..43eba2e58 100644 --- a/core/debug/treeexporter.go +++ b/core/debug/treeexporter.go @@ -76,12 +76,13 @@ func (e *treeExporter) Export(ctx context.Context, path string, tree objecttree. e.log.Printf("can't fetch localstore info: %v", err) } else { if len(data) > 0 { - data[0].Details = transform(data[0].Details, e.anonymized, anonymize.Struct) + // TODO: [storage] fix details, take from main + // data[0].Details = transform(data[0].Details, e.anonymized, anonymize.Struct) data[0].Snippet = transform(data[0].Snippet, e.anonymized, anonymize.Text) for i, r := range data[0].Relations { data[0].Relations[i] = transform(r, e.anonymized, anonymize.Relation) } - osData := pbtypes.Sprint(data[0]) + osData := pbtypes.Sprint(data[0].ToProto()) er := os.WriteFile(localStorePath, []byte(osData), 0644) if er != nil { e.log.Printf("localstore.json write error: %v", err) From 24f25ffbe9b255051c6472da59c7f08eb82e4b15 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Sun, 29 Dec 2024 13:37:44 +0100 Subject: [PATCH 076/279] GO-4459 Return paginated responses --- cmd/api/docs/swagger.json | 79 +++++++++++++++++++++----------- cmd/api/handlers.go | 96 ++++++++++++++++++++++++++------------- cmd/api/helper.go | 14 ++++++ cmd/api/schemas.go | 20 ++++---- 4 files changed, 143 insertions(+), 66 deletions(-) diff --git a/cmd/api/docs/swagger.json b/cmd/api/docs/swagger.json index 64f5f32d3..f891e097c 100644 --- a/cmd/api/docs/swagger.json +++ b/cmd/api/docs/swagger.json @@ -96,7 +96,7 @@ } } }, - "/objects": { + "/search": { "get": { "consumes": [ "application/json" @@ -112,7 +112,7 @@ { "type": "string", "description": "The search term to filter objects by name", - "name": "search", + "name": "query", "in": "query" }, { @@ -194,7 +194,7 @@ "200": { "description": "List of spaces", "schema": { - "$ref": "#/definitions/api.SpacesResponse" + "$ref": "#/definitions/api.PaginatedResponse-api_Space" } }, "403": { @@ -299,7 +299,7 @@ "200": { "description": "List of members", "schema": { - "$ref": "#/definitions/api.MembersResponse" + "$ref": "#/definitions/api.PaginatedResponse-api_Member" } }, "403": { @@ -1188,17 +1188,6 @@ } } }, - "api.MembersResponse": { - "type": "object", - "properties": { - "members": { - "type": "array", - "items": { - "$ref": "#/definitions/api.Member" - } - } - } - }, "api.MessageContent": { "type": "object", "properties": { @@ -1322,6 +1311,55 @@ } } }, + "api.PaginatedResponse-api_Member": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/api.Member" + } + }, + "pagination": { + "$ref": "#/definitions/api.PaginationMeta" + } + } + }, + "api.PaginatedResponse-api_Space": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/api.Space" + } + }, + "pagination": { + "$ref": "#/definitions/api.PaginationMeta" + } + } + }, + "api.PaginationMeta": { + "type": "object", + "properties": { + "has_next": { + "description": "whether there are more items available", + "type": "boolean" + }, + "limit": { + "description": "the current limit", + "type": "integer" + }, + "offset": { + "description": "the current offset", + "type": "integer" + }, + "total": { + "description": "the total number of items returned", + "type": "integer" + } + } + }, "api.Reactions": { "type": "object", "properties": { @@ -1416,17 +1454,6 @@ } } }, - "api.SpacesResponse": { - "type": "object", - "properties": { - "spaces": { - "type": "array", - "items": { - "$ref": "#/definitions/api.Space" - } - } - } - }, "api.Text": { "type": "object", "properties": { diff --git a/cmd/api/handlers.go b/cmd/api/handlers.go index 20602c435..bffc7f42f 100644 --- a/cmd/api/handlers.go +++ b/cmd/api/handlers.go @@ -92,12 +92,12 @@ func (a *ApiServer) authTokenHandler(c *gin.Context) { // @Tags spaces // @Accept json // @Produce json -// @Param offset query int false "The number of items to skip before starting to collect the result set" -// @Param limit query int false "The number of items to return" default(100) -// @Success 200 {object} SpacesResponse "List of spaces" -// @Failure 403 {object} UnauthorizedError "Unauthorized" -// @Failure 404 {object} NotFoundError "Resource not found" -// @Failure 502 {object} ServerError "Internal server error" +// @Param offset query int false "The number of items to skip before starting to collect the result set" +// @Param limit query int false "The number of items to return" default(100) +// @Success 200 {object} PaginatedResponse[Space] "List of spaces" +// @Failure 403 {object} UnauthorizedError "Unauthorized" +// @Failure 404 {object} NotFoundError "Resource not found" +// @Failure 502 {object} ServerError "Internal server error" // @Router /spaces [get] func (a *ApiServer) getSpacesHandler(c *gin.Context) { offset := c.GetInt("offset") @@ -131,7 +131,7 @@ func (a *ApiServer) getSpacesHandler(c *gin.Context) { }, Keys: []string{"targetSpaceId", "name", "iconEmoji", "iconImage"}, Offset: int32(offset), - Limit: int32(limit), + Limit: int32(limit + 1), }) if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { @@ -158,7 +158,13 @@ func (a *ApiServer) getSpacesHandler(c *gin.Context) { spaces = append(spaces, workspace) } - c.JSON(http.StatusOK, SpacesResponse{Spaces: spaces}) + hasNext := false + if len(spaces) > limit { + hasNext = true + spaces = spaces[:limit] + } + + respondWithPagination(c, http.StatusOK, spaces, len(spaces), offset, limit, hasNext) } // createSpaceHandler creates a new space @@ -214,13 +220,13 @@ func (a *ApiServer) createSpaceHandler(c *gin.Context) { // @Tags spaces // @Accept json // @Produce json -// @Param space_id path string true "The ID of the space" -// @Param offset query int false "The number of items to skip before starting to collect the result set" -// @Param limit query int false "The number of items to return" default(100) -// @Success 200 {object} MembersResponse "List of members" -// @Failure 403 {object} UnauthorizedError "Unauthorized" -// @Failure 404 {object} NotFoundError "Resource not found" -// @Failure 502 {object} ServerError "Internal server error" +// @Param space_id path string true "The ID of the space" +// @Param offset query int false "The number of items to skip before starting to collect the result set" +// @Param limit query int false "The number of items to return" default(100) +// @Success 200 {object} PaginatedResponse[Member] "List of members" +// @Failure 403 {object} UnauthorizedError "Unauthorized" +// @Failure 404 {object} NotFoundError "Resource not found" +// @Failure 502 {object} ServerError "Internal server error" // @Router /spaces/{space_id}/members [get] func (a *ApiServer) getMembersHandler(c *gin.Context) { spaceId := c.Param("space_id") @@ -250,7 +256,7 @@ func (a *ApiServer) getMembersHandler(c *gin.Context) { }, Keys: []string{"id", "name", "iconEmoji", "iconImage", "identity", "globalName", "participantPermissions"}, Offset: int32(offset), - Limit: int32(limit), + Limit: int32(limit + 1), }) if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { @@ -280,7 +286,13 @@ func (a *ApiServer) getMembersHandler(c *gin.Context) { members = append(members, member) } - c.JSON(http.StatusOK, MembersResponse{Members: members}) + hasNext := false + if len(members) > limit { + hasNext = true + members = members[:limit] + } + + respondWithPagination(c, http.StatusOK, members, len(members), offset, limit, hasNext) } // getObjectsForSpaceHandler retrieves objects in a specific space @@ -329,7 +341,7 @@ func (a *ApiServer) getObjectsForSpaceHandler(c *gin.Context) { }}, Keys: []string{"id", "name", "type", "layout", "iconEmoji", "iconImage", "lastModifiedDate"}, Offset: int32(offset), - Limit: int32(limit), + Limit: int32(limit + 1), }) if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { @@ -372,7 +384,13 @@ func (a *ApiServer) getObjectsForSpaceHandler(c *gin.Context) { objects = append(objects, object) } - c.JSON(http.StatusOK, gin.H{"objects": objects}) + hasNext := false + if len(objects) > limit { + hasNext = true + objects = objects[:limit] + } + + respondWithPagination(c, http.StatusOK, objects, len(objects), offset, limit, hasNext) } // getObjectHandler retrieves a specific object in a space @@ -543,7 +561,7 @@ func (a *ApiServer) getObjectTypesHandler(c *gin.Context) { }, Keys: []string{"id", "uniqueKey", "name", "iconEmoji"}, Offset: int32(offset), - Limit: int32(limit), + Limit: int32(limit + 1), }) if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { @@ -567,7 +585,13 @@ func (a *ApiServer) getObjectTypesHandler(c *gin.Context) { }) } - c.JSON(http.StatusOK, gin.H{"object_types": objectTypes}) + hasNext := false + if len(objectTypes) > limit { + hasNext = true + objectTypes = objectTypes[:limit] + } + + respondWithPagination(c, http.StatusOK, objectTypes, len(objectTypes), offset, limit, hasNext) } // getObjectTypeTemplatesHandler retrieves a list of templates for a specific object type in a space @@ -628,7 +652,7 @@ func (a *ApiServer) getObjectTypeTemplatesHandler(c *gin.Context) { }, Keys: []string{"id", "targetObjectType", "name", "iconEmoji"}, Offset: int32(offset), - Limit: int32(limit), + Limit: int32(limit + 1), }) if templateObjectsResp.Error.Code != pb.RpcObjectSearchResponseError_NULL { @@ -669,25 +693,31 @@ func (a *ApiServer) getObjectTypeTemplatesHandler(c *gin.Context) { }) } - c.JSON(http.StatusOK, gin.H{"templates": templates}) + hasNext := false + if len(templates) > limit { + hasNext = true + templates = templates[:limit] + } + + respondWithPagination(c, http.StatusOK, templates, len(templates), offset, limit, hasNext) } -// getObjectsHandler searches and retrieves objects across all the spaces +// searchHandler searches and retrieves objects across all the spaces // // @Summary Search and retrieve objects across all the spaces // @Tags search // @Accept json // @Produce json -// @Param search query string false "The search term to filter objects by name" +// @Param query query string false "The search term to filter objects by name" // @Param object_type query string false "Specify object type for search" // @Param offset query int false "The number of items to skip before starting to collect the result set" // @Param limit query int false "The number of items to return" default(100) // @Success 200 {object} map[string][]Object "List of objects" // @Failure 403 {object} UnauthorizedError "Unauthorized" // @Failure 502 {object} ServerError "Internal server error" -// @Router /objects [get] -func (a *ApiServer) getObjectsHandler(c *gin.Context) { - searchTerm := c.Query("search") +// @Router /search [get] +func (a *ApiServer) searchHandler(c *gin.Context) { + searchQuery := c.Query("query") objectType := c.Query("object_type") offset := c.GetInt("offset") limit := c.GetInt("limit") @@ -748,12 +778,12 @@ func (a *ApiServer) getObjectsHandler(c *gin.Context) { }, } - if searchTerm != "" { + if searchQuery != "" { // TODO also include snippet for notes filters = append(filters, &model.BlockContentDataviewFilter{ RelationKey: bundle.RelationKeyName.String(), Condition: model.BlockContentDataviewFilter_Like, - Value: pbtypes.String(searchTerm), + Value: pbtypes.String(searchQuery), }) } @@ -780,7 +810,7 @@ func (a *ApiServer) getObjectsHandler(c *gin.Context) { }}, Keys: []string{"id", "name", "type", "layout", "iconEmoji", "iconImage", "lastModifiedDate"}, Offset: int32(offset), - Limit: int32(limit), + Limit: int32(limit + 1), // TODO split limit between spaces // Limit: paginationLimitPerSpace, // FullText: searchTerm, @@ -828,11 +858,13 @@ func (a *ApiServer) getObjectsHandler(c *gin.Context) { }) // TODO: solve global pagination vs per space pagination + hasNext := false if len(searchResults) > limit { + hasNext = true searchResults = searchResults[:limit] } - c.JSON(http.StatusOK, gin.H{"objects": searchResults}) + respondWithPagination(c, http.StatusOK, searchResults, len(searchResults), offset, limit, hasNext) } // getChatMessagesHandler retrieves last chat messages diff --git a/cmd/api/helper.go b/cmd/api/helper.go index 7760c39b5..df35033ac 100644 --- a/cmd/api/helper.go +++ b/cmd/api/helper.go @@ -6,6 +6,8 @@ import ( "net/http" "strings" + "github.com/gin-gonic/gin" + "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/pkg/lib/bundle" "github.com/anyproto/anytype-heart/pkg/lib/pb/model" @@ -239,3 +241,15 @@ func (a *ApiServer) getTags(resp *pb.RpcObjectShowResponse) []Tag { } return tags } + +func respondWithPagination[T any](c *gin.Context, statusCode int, data []T, total, offset, limit int, hasNext bool) { + c.JSON(statusCode, PaginatedResponse[T]{ + Data: data, + Pagination: PaginationMeta{ + Total: total, + Offset: offset, + Limit: limit, + HasNext: hasNext, + }, + }) +} diff --git a/cmd/api/schemas.go b/cmd/api/schemas.go index 8be218f1a..52e9f8a90 100644 --- a/cmd/api/schemas.go +++ b/cmd/api/schemas.go @@ -1,5 +1,17 @@ package api +type PaginationMeta struct { + Total int `json:"total"` // the total number of items returned + Offset int `json:"offset"` // the current offset + Limit int `json:"limit"` // the current limit + HasNext bool `json:"has_next"` // whether there are more items available +} + +type PaginatedResponse[T any] struct { + Data []T `json:"data"` + Pagination PaginationMeta `json:"pagination"` +} + type AuthDisplayCodeResponse struct { ChallengeId string `json:"challenge_id" example:"67647f5ecda913e9a2e11b26"` } @@ -9,10 +21,6 @@ type AuthTokenResponse struct { AppKey string `json:"app_key" example:""` } -type SpacesResponse struct { - Spaces []Space `json:"spaces"` -} - type CreateSpaceResponse struct { SpaceId string `json:"space_id" example:"bafyreigyfkt6rbv24sbv5aq2hko3bhmv5xxlf22b4bypdu6j7hnphm3psq.23me69r569oi1"` Name string `json:"name" example:"Space Name"` @@ -37,10 +45,6 @@ type Space struct { NetworkId string `json:"network_id" example:"N83gJpVd9MuNRZAuJLZ7LiMntTThhPc6DtzWWVjb1M3PouVU"` } -type MembersResponse struct { - Members []Member `json:"members"` -} - type Member struct { Type string `json:"type" example:"member"` Id string `json:"id" example:"_participant_bafyreigyfkt6rbv24sbv5aq2hko1bhmv5xxlf22b4bypdu6j7hnphm3psq_23me69r569oi1_AAjEaEwPF4nkEh9AWkqEnzcQ8HziBB4ETjiTpvRCQvWnSMDZ"` From 3c2028454b82a884ae833d4c694211137c309fec Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Sun, 29 Dec 2024 13:38:27 +0100 Subject: [PATCH 077/279] GO-4459 Refactor search endpoint --- cmd/api/docs/docs.go | 79 ++++++++++------ cmd/api/docs/swagger.yaml | 55 +++++++---- cmd/api/handlers_test.go | 188 ++++++++++++++++++++++++++++++++------ cmd/api/main.go | 2 +- 4 files changed, 253 insertions(+), 71 deletions(-) diff --git a/cmd/api/docs/docs.go b/cmd/api/docs/docs.go index d87f6e590..1aeeae272 100644 --- a/cmd/api/docs/docs.go +++ b/cmd/api/docs/docs.go @@ -102,7 +102,7 @@ const docTemplate = `{ } } }, - "/objects": { + "/search": { "get": { "consumes": [ "application/json" @@ -118,7 +118,7 @@ const docTemplate = `{ { "type": "string", "description": "The search term to filter objects by name", - "name": "search", + "name": "query", "in": "query" }, { @@ -200,7 +200,7 @@ const docTemplate = `{ "200": { "description": "List of spaces", "schema": { - "$ref": "#/definitions/api.SpacesResponse" + "$ref": "#/definitions/api.PaginatedResponse-api_Space" } }, "403": { @@ -305,7 +305,7 @@ const docTemplate = `{ "200": { "description": "List of members", "schema": { - "$ref": "#/definitions/api.MembersResponse" + "$ref": "#/definitions/api.PaginatedResponse-api_Member" } }, "403": { @@ -1194,17 +1194,6 @@ const docTemplate = `{ } } }, - "api.MembersResponse": { - "type": "object", - "properties": { - "members": { - "type": "array", - "items": { - "$ref": "#/definitions/api.Member" - } - } - } - }, "api.MessageContent": { "type": "object", "properties": { @@ -1328,6 +1317,55 @@ const docTemplate = `{ } } }, + "api.PaginatedResponse-api_Member": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/api.Member" + } + }, + "pagination": { + "$ref": "#/definitions/api.PaginationMeta" + } + } + }, + "api.PaginatedResponse-api_Space": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/api.Space" + } + }, + "pagination": { + "$ref": "#/definitions/api.PaginationMeta" + } + } + }, + "api.PaginationMeta": { + "type": "object", + "properties": { + "has_next": { + "description": "whether there are more items available", + "type": "boolean" + }, + "limit": { + "description": "the current limit", + "type": "integer" + }, + "offset": { + "description": "the current offset", + "type": "integer" + }, + "total": { + "description": "the total number of items returned", + "type": "integer" + } + } + }, "api.Reactions": { "type": "object", "properties": { @@ -1422,17 +1460,6 @@ const docTemplate = `{ } } }, - "api.SpacesResponse": { - "type": "object", - "properties": { - "spaces": { - "type": "array", - "items": { - "$ref": "#/definitions/api.Space" - } - } - } - }, "api.Text": { "type": "object", "properties": { diff --git a/cmd/api/docs/swagger.yaml b/cmd/api/docs/swagger.yaml index 871d20bc8..3bf1db00f 100644 --- a/cmd/api/docs/swagger.yaml +++ b/cmd/api/docs/swagger.yaml @@ -147,13 +147,6 @@ definitions: example: member type: string type: object - api.MembersResponse: - properties: - members: - items: - $ref: '#/definitions/api.Member' - type: array - type: object api.MessageContent: properties: marks: @@ -240,6 +233,39 @@ definitions: example: ot-page type: string type: object + api.PaginatedResponse-api_Member: + properties: + data: + items: + $ref: '#/definitions/api.Member' + type: array + pagination: + $ref: '#/definitions/api.PaginationMeta' + type: object + api.PaginatedResponse-api_Space: + properties: + data: + items: + $ref: '#/definitions/api.Space' + type: array + pagination: + $ref: '#/definitions/api.PaginationMeta' + type: object + api.PaginationMeta: + properties: + has_next: + description: whether there are more items available + type: boolean + limit: + description: the current limit + type: integer + offset: + description: the current offset + type: integer + total: + description: the total number of items returned + type: integer + type: object api.Reactions: properties: reactions: @@ -307,13 +333,6 @@ definitions: example: bafyreiapey2g6e6za4zfxvlgwdy4hbbfu676gmwrhnqvjbxvrchr7elr3y type: string type: object - api.SpacesResponse: - properties: - spaces: - items: - $ref: '#/definitions/api.Space' - type: array - type: object api.Text: properties: checked: @@ -412,14 +431,14 @@ paths: summary: Retrieve an authentication token using a code tags: - auth - /objects: + /search: get: consumes: - application/json parameters: - description: The search term to filter objects by name in: query - name: search + name: query type: string - description: Specify object type for search in: query @@ -478,7 +497,7 @@ paths: "200": description: List of spaces schema: - $ref: '#/definitions/api.SpacesResponse' + $ref: '#/definitions/api.PaginatedResponse-api_Space' "403": description: Unauthorized schema: @@ -548,7 +567,7 @@ paths: "200": description: List of members schema: - $ref: '#/definitions/api.MembersResponse' + $ref: '#/definitions/api.PaginatedResponse-api_Member' "403": description: Unauthorized schema: diff --git a/cmd/api/handlers_test.go b/cmd/api/handlers_test.go index a5113f239..7b2e4780c 100644 --- a/cmd/api/handlers_test.go +++ b/cmd/api/handlers_test.go @@ -67,7 +67,7 @@ func newFixture(t *testing.T) *fixture { readOnly.GET("/spaces/:space_id/objects/:object_id", apiServer.getObjectHandler) readOnly.GET("/spaces/:space_id/objectTypes", paginator, apiServer.getObjectTypesHandler) readOnly.GET("/spaces/:space_id/objectTypes/:typeId/templates", paginator, apiServer.getObjectTypeTemplatesHandler) - readOnly.GET("/objects", paginator, apiServer.getObjectsHandler) + readOnly.GET("/search", paginator, apiServer.searchHandler) } readWrite := apiServer.router.Group("/v1") @@ -234,7 +234,7 @@ func TestApiServer_GetSpacesHandler(t *testing.T) { }, Keys: []string{"targetSpaceId", "name", "iconEmoji", "iconImage"}, Offset: offset, - Limit: limit, + Limit: limit + 1, }).Return(&pb.RpcObjectSearchResponse{ Records: []*types.Struct{ { @@ -286,16 +286,16 @@ func TestApiServer_GetSpacesHandler(t *testing.T) { // then require.Equal(t, http.StatusOK, w.Code) - var response SpacesResponse + var response PaginatedResponse[Space] err := json.Unmarshal(w.Body.Bytes(), &response) require.NoError(t, err) - require.Len(t, response.Spaces, 2) - require.Equal(t, "Another Workspace", response.Spaces[0].Name) - require.Equal(t, "another-space-id", response.Spaces[0].Id) - require.Regexpf(t, regexp.MustCompile(gatewayUrl+`/image/`+iconImage), response.Spaces[0].Icon, "Icon URL does not match") - require.Equal(t, "My Workspace", response.Spaces[1].Name) - require.Equal(t, "my-space-id", response.Spaces[1].Id) - require.Equal(t, "🚀", response.Spaces[1].Icon) + require.Len(t, response.Data, 2) + require.Equal(t, "Another Workspace", response.Data[0].Name) + require.Equal(t, "another-space-id", response.Data[0].Id) + require.Regexpf(t, regexp.MustCompile(gatewayUrl+`/image/`+iconImage), response.Data[0].Icon, "Icon URL does not match") + require.Equal(t, "My Workspace", response.Data[1].Name) + require.Equal(t, "my-space-id", response.Data[1].Id) + require.Equal(t, "🚀", response.Data[1].Icon) }) t.Run("no spaces found", func(t *testing.T) { @@ -446,18 +446,18 @@ func TestApiServer_GetMembersHandler(t *testing.T) { // then require.Equal(t, http.StatusOK, w.Code) - var response MembersResponse + var response PaginatedResponse[Member] err := json.Unmarshal(w.Body.Bytes(), &response) require.NoError(t, err) - require.Len(t, response.Members, 2) - require.Equal(t, "member-1", response.Members[0].Id) - require.Equal(t, "John Doe", response.Members[0].Name) - require.Equal(t, "👤", response.Members[0].Icon) - require.Equal(t, "john.any", response.Members[0].GlobalName) - require.Equal(t, "member-2", response.Members[1].Id) - require.Equal(t, "Jane Doe", response.Members[1].Name) - require.Regexpf(t, regexp.MustCompile(gatewayUrl+`/image/`+iconImage), response.Members[1].Icon, "Icon URL does not match") - require.Equal(t, "jane.any", response.Members[1].GlobalName) + require.Len(t, response.Data, 2) + require.Equal(t, "member-1", response.Data[0].Id) + require.Equal(t, "John Doe", response.Data[0].Name) + require.Equal(t, "👤", response.Data[0].Icon) + require.Equal(t, "john.any", response.Data[0].GlobalName) + require.Equal(t, "member-2", response.Data[1].Id) + require.Equal(t, "Jane Doe", response.Data[1].Name) + require.Regexpf(t, regexp.MustCompile(gatewayUrl+`/image/`+iconImage), response.Data[1].Icon, "Icon URL does not match") + require.Equal(t, "jane.any", response.Data[1].GlobalName) }) t.Run("no members found", func(t *testing.T) { @@ -825,14 +825,34 @@ func TestApiServer_GetObjectTypeTemplatesHandler(t *testing.T) { }) } -func TestApiServer_GetObjectsHandler(t *testing.T) { +func TestApiServer_SearchHandler(t *testing.T) { t.Run("objects found globally", func(t *testing.T) { // given fx := newFixture(t) // Mock retrieving spaces first fx.accountInfo = &model.AccountInfo{TechSpaceId: techSpaceId} - fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything).Return(&pb.RpcObjectSearchResponse{ + fx.mwMock.On("ObjectSearch", mock.Anything, &pb.RpcObjectSearchRequest{ + SpaceId: techSpaceId, + Filters: []*model.BlockContentDataviewFilter{ + { + RelationKey: bundle.RelationKeyLayout.String(), + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.Int64(int64(model.ObjectType_spaceView)), + }, + { + RelationKey: bundle.RelationKeySpaceLocalStatus.String(), + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.Int64(int64(model.SpaceStatus_Ok)), + }, + { + RelationKey: bundle.RelationKeySpaceRemoteStatus.String(), + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.Int64(int64(model.SpaceStatus_Ok)), + }, + }, + Keys: []string{"targetSpaceId"}, + }).Return(&pb.RpcObjectSearchResponse{ Records: []*types.Struct{ { Fields: map[string]*types.Value{ @@ -841,7 +861,7 @@ func TestApiServer_GetObjectsHandler(t *testing.T) { }, }, Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, - }).Twice() + }).Once() // Mock objects in space-1 fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything).Return(&pb.RpcObjectSearchResponse{ @@ -858,15 +878,131 @@ func TestApiServer_GetObjectsHandler(t *testing.T) { }, }, Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, - }).Once() + }).Twice() + + // Mock object show for object blocks and details + fx.mwMock.On("ObjectShow", mock.Anything, &pb.RpcObjectShowRequest{ + SpaceId: "space-1", + ObjectId: "obj-global-1", + }).Return(&pb.RpcObjectShowResponse{ + ObjectView: &model.ObjectView{ + RootId: "root-123", + Blocks: []*model.Block{ + { + Id: "root-123", + Restrictions: &model.BlockRestrictions{ + Read: false, + Edit: false, + Remove: false, + Drag: false, + DropOn: false, + }, + ChildrenIds: []string{"header", "text-block", "relation-block"}, + }, + { + Id: "header", + Restrictions: &model.BlockRestrictions{ + Read: false, + Edit: true, + Remove: true, + Drag: true, + DropOn: true, + }, + ChildrenIds: []string{"title", "featuredRelations"}, + }, + { + Id: "text-block", + Content: &model.BlockContentOfText{ + Text: &model.BlockContentText{ + Text: "This is a sample text block", + Style: model.BlockContentText_Paragraph, + }, + }, + }, + }, + Details: []*model.ObjectViewDetailsSet{ + { + Id: "root-123", + Details: &types.Struct{ + Fields: map[string]*types.Value{ + "name": pbtypes.String("Global Object"), + "iconEmoji": pbtypes.String("ðŸŒ"), + "lastModifiedDate": pbtypes.Float64(999999), + "createdDate": pbtypes.Float64(888888), + "tag": pbtypes.StringList([]string{"tag-1", "tag-2"}), + }, + }, + }, + { + Id: "tag-1", + Details: &types.Struct{ + Fields: map[string]*types.Value{ + "name": pbtypes.String("Important"), + "relationOptionColor": pbtypes.String("red"), + }, + }, + }, + { + Id: "tag-2", + Details: &types.Struct{ + Fields: map[string]*types.Value{ + "name": pbtypes.String("Optional"), + "relationOptionColor": pbtypes.String("blue"), + }, + }, + }, + }, + }, + Error: &pb.RpcObjectShowResponseError{Code: pb.RpcObjectShowResponseError_NULL}, + }, nil).Once() // when - req, _ := http.NewRequest("GET", "/v1/objects", nil) + req, _ := http.NewRequest("GET", "/v1/search", nil) w := httptest.NewRecorder() fx.router.ServeHTTP(w, req) // then require.Equal(t, http.StatusOK, w.Code) - require.Contains(t, w.Body.String(), "Global Object") + + var response PaginatedResponse[Object] + err := json.Unmarshal(w.Body.Bytes(), &response) + require.NoError(t, err) + require.Len(t, response.Data, 1) + require.Equal(t, "space-1", response.Data[0].SpaceId) + require.Equal(t, "Global Object", response.Data[0].Name) + require.Equal(t, "obj-global-1", response.Data[0].Id) + require.Equal(t, "ðŸŒ", response.Data[0].Icon) + + // check details + for _, detail := range response.Data[0].Details { + if detail.Id == "createdDate" { + require.Equal(t, float64(888888), detail.Details["createdDate"]) + } else if detail.Id == "lastModifiedDate" { + require.Equal(t, float64(999999), detail.Details["lastModifiedDate"]) + } + } + + // check tags + tags := []Tag{} + for _, detail := range response.Data[0].Details { + if tagList, ok := detail.Details["tags"].([]interface{}); ok { + for _, tagValue := range tagList { + tagStruct := tagValue.(map[string]interface{}) + tag := Tag{ + Id: tagStruct["id"].(string), + Name: tagStruct["name"].(string), + Color: tagStruct["color"].(string), + } + tags = append(tags, tag) + } + } + } + require.Len(t, tags, 2) + require.Equal(t, "tag-1", tags[0].Id) + require.Equal(t, "Important", tags[0].Name) + require.Equal(t, "red", tags[0].Color) + require.Equal(t, "tag-2", tags[1].Id) + require.Equal(t, "Optional", tags[1].Name) + require.Equal(t, "blue", tags[1].Color) }) } diff --git a/cmd/api/main.go b/cmd/api/main.go index 7f4ee53ad..b4dd6b962 100644 --- a/cmd/api/main.go +++ b/cmd/api/main.go @@ -106,7 +106,7 @@ func RunApiServer(ctx context.Context, mw service.ClientCommandsServer, mwIntern readOnly.GET("/spaces/:space_id/objects/:object_id", a.getObjectHandler) readOnly.GET("/spaces/:space_id/objectTypes", paginator, a.getObjectTypesHandler) readOnly.GET("/spaces/:space_id/objectTypes/:typeId/templates", paginator, a.getObjectTypeTemplatesHandler) - readOnly.GET("/objects", paginator, a.getObjectsHandler) + readOnly.GET("/search", paginator, a.searchHandler) } // Read-write routes From ffb4c8b87f537cd76735a2f7e35894969915e02d Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Sun, 29 Dec 2024 16:46:10 +0100 Subject: [PATCH 078/279] GO-4459 Refactor schema and handlers --- cmd/api/docs/docs.go | 14 +++++++++----- cmd/api/docs/swagger.json | 14 +++++++++----- cmd/api/docs/swagger.yaml | 6 +++++- cmd/api/handlers.go | 8 ++++---- cmd/api/handlers_test.go | 2 +- cmd/api/helper.go | 2 +- cmd/api/main.go | 2 +- cmd/api/schemas.go | 8 ++++---- 8 files changed, 34 insertions(+), 22 deletions(-) diff --git a/cmd/api/docs/docs.go b/cmd/api/docs/docs.go index 1aeeae272..426156ff3 100644 --- a/cmd/api/docs/docs.go +++ b/cmd/api/docs/docs.go @@ -1348,21 +1348,25 @@ const docTemplate = `{ "api.PaginationMeta": { "type": "object", "properties": { - "has_next": { + "has_more": { "description": "whether there are more items available", - "type": "boolean" + "type": "boolean", + "example": true }, "limit": { "description": "the current limit", - "type": "integer" + "type": "integer", + "example": 100 }, "offset": { "description": "the current offset", - "type": "integer" + "type": "integer", + "example": 0 }, "total": { "description": "the total number of items returned", - "type": "integer" + "type": "integer", + "example": 100 } } }, diff --git a/cmd/api/docs/swagger.json b/cmd/api/docs/swagger.json index f891e097c..bb3358676 100644 --- a/cmd/api/docs/swagger.json +++ b/cmd/api/docs/swagger.json @@ -1342,21 +1342,25 @@ "api.PaginationMeta": { "type": "object", "properties": { - "has_next": { + "has_more": { "description": "whether there are more items available", - "type": "boolean" + "type": "boolean", + "example": true }, "limit": { "description": "the current limit", - "type": "integer" + "type": "integer", + "example": 100 }, "offset": { "description": "the current offset", - "type": "integer" + "type": "integer", + "example": 0 }, "total": { "description": "the total number of items returned", - "type": "integer" + "type": "integer", + "example": 100 } } }, diff --git a/cmd/api/docs/swagger.yaml b/cmd/api/docs/swagger.yaml index 3bf1db00f..5d8c8a223 100644 --- a/cmd/api/docs/swagger.yaml +++ b/cmd/api/docs/swagger.yaml @@ -253,17 +253,21 @@ definitions: type: object api.PaginationMeta: properties: - has_next: + has_more: description: whether there are more items available + example: true type: boolean limit: description: the current limit + example: 100 type: integer offset: description: the current offset + example: 0 type: integer total: description: the total number of items returned + example: 100 type: integer type: object api.Reactions: diff --git a/cmd/api/handlers.go b/cmd/api/handlers.go index bffc7f42f..0bb3f2401 100644 --- a/cmd/api/handlers.go +++ b/cmd/api/handlers.go @@ -295,7 +295,7 @@ func (a *ApiServer) getMembersHandler(c *gin.Context) { respondWithPagination(c, http.StatusOK, members, len(members), offset, limit, hasNext) } -// getObjectsForSpaceHandler retrieves objects in a specific space +// getObjectsHandler retrieves objects in a specific space // // @Summary Retrieve objects in a specific space // @Tags space_objects @@ -309,7 +309,7 @@ func (a *ApiServer) getMembersHandler(c *gin.Context) { // @Failure 404 {object} NotFoundError "Resource not found" // @Failure 502 {object} ServerError "Internal server error" // @Router /spaces/{space_id}/objects [get] -func (a *ApiServer) getObjectsForSpaceHandler(c *gin.Context) { +func (a *ApiServer) getObjectsHandler(c *gin.Context) { spaceId := c.Param("space_id") offset := c.GetInt("offset") limit := c.GetInt("limit") @@ -339,7 +339,7 @@ func (a *ApiServer) getObjectsForSpaceHandler(c *gin.Context) { IncludeTime: true, EmptyPlacement: model.BlockContentDataviewSort_NotSpecified, }}, - Keys: []string{"id", "name", "type", "layout", "iconEmoji", "iconImage", "lastModifiedDate"}, + Keys: []string{"id", "name", "type", "layout", "iconEmoji", "iconImage"}, Offset: int32(offset), Limit: int32(limit + 1), }) @@ -808,7 +808,7 @@ func (a *ApiServer) searchHandler(c *gin.Context) { IncludeTime: true, EmptyPlacement: model.BlockContentDataviewSort_NotSpecified, }}, - Keys: []string{"id", "name", "type", "layout", "iconEmoji", "iconImage", "lastModifiedDate"}, + Keys: []string{"id", "name", "type", "layout", "iconEmoji", "iconImage"}, Offset: int32(offset), Limit: int32(limit + 1), // TODO split limit between spaces diff --git a/cmd/api/handlers_test.go b/cmd/api/handlers_test.go index 7b2e4780c..22cf41b90 100644 --- a/cmd/api/handlers_test.go +++ b/cmd/api/handlers_test.go @@ -63,7 +63,7 @@ func newFixture(t *testing.T) *fixture { { readOnly.GET("/spaces", paginator, apiServer.getSpacesHandler) readOnly.GET("/spaces/:space_id/members", paginator, apiServer.getMembersHandler) - readOnly.GET("/spaces/:space_id/objects", paginator, apiServer.getObjectsForSpaceHandler) + readOnly.GET("/spaces/:space_id/objects", paginator, apiServer.getObjectsHandler) readOnly.GET("/spaces/:space_id/objects/:object_id", apiServer.getObjectHandler) readOnly.GET("/spaces/:space_id/objectTypes", paginator, apiServer.getObjectTypesHandler) readOnly.GET("/spaces/:space_id/objectTypes/:typeId/templates", paginator, apiServer.getObjectTypeTemplatesHandler) diff --git a/cmd/api/helper.go b/cmd/api/helper.go index df35033ac..34f532496 100644 --- a/cmd/api/helper.go +++ b/cmd/api/helper.go @@ -249,7 +249,7 @@ func respondWithPagination[T any](c *gin.Context, statusCode int, data []T, tota Total: total, Offset: offset, Limit: limit, - HasNext: hasNext, + HasMore: hasNext, }, }) } diff --git a/cmd/api/main.go b/cmd/api/main.go index b4dd6b962..e0e26baa9 100644 --- a/cmd/api/main.go +++ b/cmd/api/main.go @@ -102,7 +102,7 @@ func RunApiServer(ctx context.Context, mw service.ClientCommandsServer, mwIntern { readOnly.GET("/spaces", paginator, a.getSpacesHandler) readOnly.GET("/spaces/:space_id/members", paginator, a.getMembersHandler) - readOnly.GET("/spaces/:space_id/objects", paginator, a.getObjectsForSpaceHandler) + readOnly.GET("/spaces/:space_id/objects", paginator, a.getObjectsHandler) readOnly.GET("/spaces/:space_id/objects/:object_id", a.getObjectHandler) readOnly.GET("/spaces/:space_id/objectTypes", paginator, a.getObjectTypesHandler) readOnly.GET("/spaces/:space_id/objectTypes/:typeId/templates", paginator, a.getObjectTypeTemplatesHandler) diff --git a/cmd/api/schemas.go b/cmd/api/schemas.go index 52e9f8a90..3e9578697 100644 --- a/cmd/api/schemas.go +++ b/cmd/api/schemas.go @@ -1,10 +1,10 @@ package api type PaginationMeta struct { - Total int `json:"total"` // the total number of items returned - Offset int `json:"offset"` // the current offset - Limit int `json:"limit"` // the current limit - HasNext bool `json:"has_next"` // whether there are more items available + Total int `json:"total" example:"100"` // the total number of items returned + Offset int `json:"offset" example:"0"` // the current offset + Limit int `json:"limit" example:"100"` // the current limit + HasMore bool `json:"has_more" example:"true"` // whether there are more items available } type PaginatedResponse[T any] struct { From 5001594a8fb683a38b96050620003e04a739ad54 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Sun, 29 Dec 2024 17:52:17 +0100 Subject: [PATCH 079/279] GO-4459 Refactor pagination and 'total' calculation --- cmd/api/docs/docs.go | 4 +- cmd/api/docs/swagger.json | 4 +- cmd/api/docs/swagger.yaml | 4 +- cmd/api/handlers.go | 102 ++++++++++++-------------------------- cmd/api/handlers_test.go | 4 +- cmd/api/helper.go | 23 ++++++++- cmd/api/schemas.go | 2 +- 7 files changed, 62 insertions(+), 81 deletions(-) diff --git a/cmd/api/docs/docs.go b/cmd/api/docs/docs.go index 426156ff3..fa14eb412 100644 --- a/cmd/api/docs/docs.go +++ b/cmd/api/docs/docs.go @@ -1364,9 +1364,9 @@ const docTemplate = `{ "example": 0 }, "total": { - "description": "the total number of items returned", + "description": "the total number of items available on that endpoint", "type": "integer", - "example": 100 + "example": 1024 } } }, diff --git a/cmd/api/docs/swagger.json b/cmd/api/docs/swagger.json index bb3358676..1cddd64a3 100644 --- a/cmd/api/docs/swagger.json +++ b/cmd/api/docs/swagger.json @@ -1358,9 +1358,9 @@ "example": 0 }, "total": { - "description": "the total number of items returned", + "description": "the total number of items available on that endpoint", "type": "integer", - "example": 100 + "example": 1024 } } }, diff --git a/cmd/api/docs/swagger.yaml b/cmd/api/docs/swagger.yaml index 5d8c8a223..08959f27e 100644 --- a/cmd/api/docs/swagger.yaml +++ b/cmd/api/docs/swagger.yaml @@ -266,8 +266,8 @@ definitions: example: 0 type: integer total: - description: the total number of items returned - example: 100 + description: the total number of items available on that endpoint + example: 1024 type: integer type: object api.Reactions: diff --git a/cmd/api/handlers.go b/cmd/api/handlers.go index 0bb3f2401..2728a5f48 100644 --- a/cmd/api/handlers.go +++ b/cmd/api/handlers.go @@ -129,9 +129,7 @@ func (a *ApiServer) getSpacesHandler(c *gin.Context) { Type: model.BlockContentDataviewSort_Asc, }, }, - Keys: []string{"targetSpaceId", "name", "iconEmoji", "iconImage"}, - Offset: int32(offset), - Limit: int32(limit + 1), + Keys: []string{"targetSpaceId", "name", "iconEmoji", "iconImage"}, }) if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { @@ -144,8 +142,10 @@ func (a *ApiServer) getSpacesHandler(c *gin.Context) { return } - spaces := make([]Space, 0, len(resp.Records)) - for _, record := range resp.Records { + paginatedSpaces, hasMore := paginate(resp.Records, offset, limit) + spaces := make([]Space, 0, len(paginatedSpaces)) + + for _, record := range paginatedSpaces { workspace, statusCode, errorMessage := a.getWorkspaceInfo(record.Fields["targetSpaceId"].GetStringValue()) if statusCode != http.StatusOK { c.JSON(statusCode, gin.H{"message": errorMessage}) @@ -158,13 +158,7 @@ func (a *ApiServer) getSpacesHandler(c *gin.Context) { spaces = append(spaces, workspace) } - hasNext := false - if len(spaces) > limit { - hasNext = true - spaces = spaces[:limit] - } - - respondWithPagination(c, http.StatusOK, spaces, len(spaces), offset, limit, hasNext) + respondWithPagination(c, http.StatusOK, spaces, len(resp.Records), offset, limit, hasMore) } // createSpaceHandler creates a new space @@ -254,9 +248,7 @@ func (a *ApiServer) getMembersHandler(c *gin.Context) { Type: model.BlockContentDataviewSort_Asc, }, }, - Keys: []string{"id", "name", "iconEmoji", "iconImage", "identity", "globalName", "participantPermissions"}, - Offset: int32(offset), - Limit: int32(limit + 1), + Keys: []string{"id", "name", "iconEmoji", "iconImage", "identity", "globalName", "participantPermissions"}, }) if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { @@ -269,8 +261,10 @@ func (a *ApiServer) getMembersHandler(c *gin.Context) { return } - members := make([]Member, 0, len(resp.Records)) - for _, record := range resp.Records { + paginatedMembers, hasMore := paginate(resp.Records, offset, limit) + members := make([]Member, 0, len(paginatedMembers)) + + for _, record := range paginatedMembers { icon := a.getIconFromEmojiOrImage(record.Fields["iconEmoji"].GetStringValue(), record.Fields["iconImage"].GetStringValue()) member := Member{ @@ -286,13 +280,7 @@ func (a *ApiServer) getMembersHandler(c *gin.Context) { members = append(members, member) } - hasNext := false - if len(members) > limit { - hasNext = true - members = members[:limit] - } - - respondWithPagination(c, http.StatusOK, members, len(members), offset, limit, hasNext) + respondWithPagination(c, http.StatusOK, members, len(resp.Records), offset, limit, hasMore) } // getObjectsHandler retrieves objects in a specific space @@ -339,9 +327,7 @@ func (a *ApiServer) getObjectsHandler(c *gin.Context) { IncludeTime: true, EmptyPlacement: model.BlockContentDataviewSort_NotSpecified, }}, - Keys: []string{"id", "name", "type", "layout", "iconEmoji", "iconImage"}, - Offset: int32(offset), - Limit: int32(limit + 1), + Keys: []string{"id", "name", "type", "layout", "iconEmoji", "iconImage"}, }) if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { @@ -354,8 +340,10 @@ func (a *ApiServer) getObjectsHandler(c *gin.Context) { return } - objects := make([]Object, 0, len(resp.Records)) - for _, record := range resp.Records { + paginatedObjects, hasMore := paginate(resp.Records, offset, limit) + objects := make([]Object, 0, len(paginatedObjects)) + + for _, record := range paginatedObjects { icon := a.getIconFromEmojiOrImage(record.Fields["iconEmoji"].GetStringValue(), record.Fields["iconImage"].GetStringValue()) objectTypeName, statusCode, errorMessage := a.resolveTypeToName(spaceId, record.Fields["type"].GetStringValue()) if statusCode != http.StatusOK { @@ -384,13 +372,7 @@ func (a *ApiServer) getObjectsHandler(c *gin.Context) { objects = append(objects, object) } - hasNext := false - if len(objects) > limit { - hasNext = true - objects = objects[:limit] - } - - respondWithPagination(c, http.StatusOK, objects, len(objects), offset, limit, hasNext) + respondWithPagination(c, http.StatusOK, objects, len(resp.Records), offset, limit, hasMore) } // getObjectHandler retrieves a specific object in a space @@ -559,9 +541,7 @@ func (a *ApiServer) getObjectTypesHandler(c *gin.Context) { Type: model.BlockContentDataviewSort_Asc, }, }, - Keys: []string{"id", "uniqueKey", "name", "iconEmoji"}, - Offset: int32(offset), - Limit: int32(limit + 1), + Keys: []string{"id", "uniqueKey", "name", "iconEmoji"}, }) if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { @@ -574,8 +554,10 @@ func (a *ApiServer) getObjectTypesHandler(c *gin.Context) { return } - objectTypes := make([]ObjectType, 0, len(resp.Records)) - for _, record := range resp.Records { + paginatedTypes, hasMore := paginate(resp.Records, offset, limit) + objectTypes := make([]ObjectType, 0, len(paginatedTypes)) + + for _, record := range paginatedTypes { objectTypes = append(objectTypes, ObjectType{ Type: "object_type", Id: record.Fields["id"].GetStringValue(), @@ -585,13 +567,7 @@ func (a *ApiServer) getObjectTypesHandler(c *gin.Context) { }) } - hasNext := false - if len(objectTypes) > limit { - hasNext = true - objectTypes = objectTypes[:limit] - } - - respondWithPagination(c, http.StatusOK, objectTypes, len(objectTypes), offset, limit, hasNext) + respondWithPagination(c, http.StatusOK, objectTypes, len(resp.Records), offset, limit, hasMore) } // getObjectTypeTemplatesHandler retrieves a list of templates for a specific object type in a space @@ -650,9 +626,7 @@ func (a *ApiServer) getObjectTypeTemplatesHandler(c *gin.Context) { Value: pbtypes.String(templateTypeId), }, }, - Keys: []string{"id", "targetObjectType", "name", "iconEmoji"}, - Offset: int32(offset), - Limit: int32(limit + 1), + Keys: []string{"id", "targetObjectType", "name", "iconEmoji"}, }) if templateObjectsResp.Error.Code != pb.RpcObjectSearchResponseError_NULL { @@ -673,8 +647,10 @@ func (a *ApiServer) getObjectTypeTemplatesHandler(c *gin.Context) { } // Finally, open each template and populate the response - templates := make([]ObjectTemplate, 0, len(templateIds)) - for _, templateId := range templateIds { + paginatedTemplates, hasMore := paginate(templateIds, offset, limit) + templates := make([]ObjectTemplate, 0, len(paginatedTemplates)) + + for _, templateId := range paginatedTemplates { templateResp := a.mw.ObjectShow(c.Request.Context(), &pb.RpcObjectShowRequest{ SpaceId: spaceId, ObjectId: templateId, @@ -693,13 +669,7 @@ func (a *ApiServer) getObjectTypeTemplatesHandler(c *gin.Context) { }) } - hasNext := false - if len(templates) > limit { - hasNext = true - templates = templates[:limit] - } - - respondWithPagination(c, http.StatusOK, templates, len(templates), offset, limit, hasNext) + respondWithPagination(c, http.StatusOK, templates, len(templateIds), offset, limit, hasMore) } // searchHandler searches and retrieves objects across all the spaces @@ -808,9 +778,7 @@ func (a *ApiServer) searchHandler(c *gin.Context) { IncludeTime: true, EmptyPlacement: model.BlockContentDataviewSort_NotSpecified, }}, - Keys: []string{"id", "name", "type", "layout", "iconEmoji", "iconImage"}, - Offset: int32(offset), - Limit: int32(limit + 1), + Keys: []string{"id", "name", "type", "layout", "iconEmoji", "iconImage"}, // TODO split limit between spaces // Limit: paginationLimitPerSpace, // FullText: searchTerm, @@ -858,13 +826,9 @@ func (a *ApiServer) searchHandler(c *gin.Context) { }) // TODO: solve global pagination vs per space pagination - hasNext := false - if len(searchResults) > limit { - hasNext = true - searchResults = searchResults[:limit] - } + paginatedResults, hasMore := paginate(searchResults, offset, limit) - respondWithPagination(c, http.StatusOK, searchResults, len(searchResults), offset, limit, hasNext) + respondWithPagination(c, http.StatusOK, paginatedResults, len(searchResults), offset, limit, hasMore) } // getChatMessagesHandler retrieves last chat messages diff --git a/cmd/api/handlers_test.go b/cmd/api/handlers_test.go index 22cf41b90..19d32f2b4 100644 --- a/cmd/api/handlers_test.go +++ b/cmd/api/handlers_test.go @@ -232,9 +232,7 @@ func TestApiServer_GetSpacesHandler(t *testing.T) { Type: model.BlockContentDataviewSort_Asc, }, }, - Keys: []string{"targetSpaceId", "name", "iconEmoji", "iconImage"}, - Offset: offset, - Limit: limit + 1, + Keys: []string{"targetSpaceId", "name", "iconEmoji", "iconImage"}, }).Return(&pb.RpcObjectSearchResponse{ Records: []*types.Struct{ { diff --git a/cmd/api/helper.go b/cmd/api/helper.go index 34f532496..8bd9839ca 100644 --- a/cmd/api/helper.go +++ b/cmd/api/helper.go @@ -242,14 +242,33 @@ func (a *ApiServer) getTags(resp *pb.RpcObjectShowResponse) []Tag { return tags } -func respondWithPagination[T any](c *gin.Context, statusCode int, data []T, total, offset, limit int, hasNext bool) { +// respondWithPagination returns a json response with the paginated data and corresponding metadata +func respondWithPagination[T any](c *gin.Context, statusCode int, data []T, total, offset, limit int, hasMore bool) { c.JSON(statusCode, PaginatedResponse[T]{ Data: data, Pagination: PaginationMeta{ Total: total, Offset: offset, Limit: limit, - HasMore: hasNext, + HasMore: hasMore, }, }) } + +// paginate paginates the given records based on the offset and limit +func paginate[T any](records []T, offset, limit int) ([]T, bool) { + total := len(records) + start := offset + end := offset + limit + + if start > total { + start = total + } + if end > total { + end = total + } + + paginated := records[start:end] + hasMore := end < total + return paginated, hasMore +} diff --git a/cmd/api/schemas.go b/cmd/api/schemas.go index 3e9578697..33461598c 100644 --- a/cmd/api/schemas.go +++ b/cmd/api/schemas.go @@ -1,7 +1,7 @@ package api type PaginationMeta struct { - Total int `json:"total" example:"100"` // the total number of items returned + Total int `json:"total" example:"1024"` // the total number of items available on that endpoint Offset int `json:"offset" example:"0"` // the current offset Limit int `json:"limit" example:"100"` // the current limit HasMore bool `json:"has_more" example:"true"` // whether there are more items available From c46d198d99fd8d4312c0cb819ed0b4499213cf5d Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Mon, 30 Dec 2024 11:14:34 +0100 Subject: [PATCH 080/279] GO-4459 Remove unused GetAccountInfo from core --- core/core.go | 10 ---- core/mock_core/mock_MiddlewareInternal.go | 62 ----------------------- 2 files changed, 72 deletions(-) diff --git a/core/core.go b/core/core.go index 7343f92a1..f7b4e308f 100644 --- a/core/core.go +++ b/core/core.go @@ -7,7 +7,6 @@ import ( "github.com/anyproto/any-sync/app" - "github.com/anyproto/anytype-heart/core/anytype/account" "github.com/anyproto/anytype-heart/core/application" "github.com/anyproto/anytype-heart/core/block" "github.com/anyproto/anytype-heart/core/block/collection" @@ -15,7 +14,6 @@ import ( "github.com/anyproto/anytype-heart/core/wallet" "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/pkg/lib/logging" - "github.com/anyproto/anytype-heart/pkg/lib/pb/model" utildebug "github.com/anyproto/anytype-heart/util/debug" ) @@ -27,7 +25,6 @@ var ( type MiddlewareInternal interface { GetApp() *app.App - GetAccountInfo(ctx context.Context) (*model.AccountInfo, error) } type Middleware struct { @@ -108,13 +105,6 @@ func (mw *Middleware) GetApp() *app.App { return mw.applicationService.GetApp() } -func (mw *Middleware) GetAccountInfo(ctx context.Context) (*model.AccountInfo, error) { - if a := mw.GetApp(); a != nil { - return a.MustComponent(account.CName).(account.Service).GetInfo(ctx) - } - return nil, ErrNotLoggedIn -} - func (mw *Middleware) SetEventSender(sender event.Sender) { mw.applicationService.SetEventSender(sender) } diff --git a/core/mock_core/mock_MiddlewareInternal.go b/core/mock_core/mock_MiddlewareInternal.go index d55bfa317..33f1ca692 100644 --- a/core/mock_core/mock_MiddlewareInternal.go +++ b/core/mock_core/mock_MiddlewareInternal.go @@ -3,13 +3,9 @@ package mock_core import ( - context "context" - app "github.com/anyproto/any-sync/app" mock "github.com/stretchr/testify/mock" - - model "github.com/anyproto/anytype-heart/pkg/lib/pb/model" ) // MockMiddlewareInternal is an autogenerated mock type for the MiddlewareInternal type @@ -25,64 +21,6 @@ func (_m *MockMiddlewareInternal) EXPECT() *MockMiddlewareInternal_Expecter { return &MockMiddlewareInternal_Expecter{mock: &_m.Mock} } -// GetAccountInfo provides a mock function with given fields: ctx -func (_m *MockMiddlewareInternal) GetAccountInfo(ctx context.Context) (*model.AccountInfo, error) { - ret := _m.Called(ctx) - - if len(ret) == 0 { - panic("no return value specified for GetAccountInfo") - } - - var r0 *model.AccountInfo - var r1 error - if rf, ok := ret.Get(0).(func(context.Context) (*model.AccountInfo, error)); ok { - return rf(ctx) - } - if rf, ok := ret.Get(0).(func(context.Context) *model.AccountInfo); ok { - r0 = rf(ctx) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*model.AccountInfo) - } - } - - if rf, ok := ret.Get(1).(func(context.Context) error); ok { - r1 = rf(ctx) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// MockMiddlewareInternal_GetAccountInfo_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetAccountInfo' -type MockMiddlewareInternal_GetAccountInfo_Call struct { - *mock.Call -} - -// GetAccountInfo is a helper method to define mock.On call -// - ctx context.Context -func (_e *MockMiddlewareInternal_Expecter) GetAccountInfo(ctx interface{}) *MockMiddlewareInternal_GetAccountInfo_Call { - return &MockMiddlewareInternal_GetAccountInfo_Call{Call: _e.mock.On("GetAccountInfo", ctx)} -} - -func (_c *MockMiddlewareInternal_GetAccountInfo_Call) Run(run func(ctx context.Context)) *MockMiddlewareInternal_GetAccountInfo_Call { - _c.Call.Run(func(args mock.Arguments) { - run(args[0].(context.Context)) - }) - return _c -} - -func (_c *MockMiddlewareInternal_GetAccountInfo_Call) Return(_a0 *model.AccountInfo, _a1 error) *MockMiddlewareInternal_GetAccountInfo_Call { - _c.Call.Return(_a0, _a1) - return _c -} - -func (_c *MockMiddlewareInternal_GetAccountInfo_Call) RunAndReturn(run func(context.Context) (*model.AccountInfo, error)) *MockMiddlewareInternal_GetAccountInfo_Call { - _c.Call.Return(run) - return _c -} - // GetApp provides a mock function with given fields: func (_m *MockMiddlewareInternal) GetApp() *app.App { ret := _m.Called() From c379686478ab8fef5e7f51b0c374230db3a03546 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Mon, 30 Dec 2024 12:04:11 +0100 Subject: [PATCH 081/279] GO-4459: Implement support for spaceOrder --- cmd/api/handlers.go | 6 ++++-- cmd/api/handlers_test.go | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/cmd/api/handlers.go b/cmd/api/handlers.go index 2728a5f48..3ca7dc70c 100644 --- a/cmd/api/handlers.go +++ b/cmd/api/handlers.go @@ -125,8 +125,10 @@ func (a *ApiServer) getSpacesHandler(c *gin.Context) { }, Sorts: []*model.BlockContentDataviewSort{ { - RelationKey: "name", - Type: model.BlockContentDataviewSort_Asc, + RelationKey: "spaceOrder", + Type: model.BlockContentDataviewSort_Asc, + NoCollate: true, + EmptyPlacement: model.BlockContentDataviewSort_End, }, }, Keys: []string{"targetSpaceId", "name", "iconEmoji", "iconImage"}, diff --git a/cmd/api/handlers_test.go b/cmd/api/handlers_test.go index 19d32f2b4..04419d58a 100644 --- a/cmd/api/handlers_test.go +++ b/cmd/api/handlers_test.go @@ -228,8 +228,10 @@ func TestApiServer_GetSpacesHandler(t *testing.T) { }, Sorts: []*model.BlockContentDataviewSort{ { - RelationKey: "name", - Type: model.BlockContentDataviewSort_Asc, + RelationKey: "spaceOrder", + Type: model.BlockContentDataviewSort_Asc, + NoCollate: true, + EmptyPlacement: model.BlockContentDataviewSort_End, }, }, Keys: []string{"targetSpaceId", "name", "iconEmoji", "iconImage"}, From c0f69df4b94365b9a0f56475dd6bd17d85845926 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Mon, 30 Dec 2024 15:19:04 +0100 Subject: [PATCH 082/279] GO-4459: Refactor into space, pagination, utils, remove chat --- cmd/api/docs/docs.go | 723 ++++++++----------------------- cmd/api/docs/swagger.json | 723 ++++++++----------------------- cmd/api/docs/swagger.yaml | 408 ++++------------- cmd/api/handlers.go | 410 +----------------- cmd/api/helper.go | 111 +---- cmd/api/main.go | 30 +- cmd/api/middleware.go | 1 + cmd/api/pagination/model.go | 13 + cmd/api/pagination/pagination.go | 39 ++ cmd/api/schemas.go | 78 ---- cmd/api/space/handler.go | 124 ++++++ cmd/api/space/model.go | 41 ++ cmd/api/space/service.go | 214 +++++++++ cmd/api/space/service_test.go | 312 +++++++++++++ cmd/api/utils/utils.go | 29 ++ 15 files changed, 1235 insertions(+), 2021 deletions(-) create mode 100644 cmd/api/pagination/model.go create mode 100644 cmd/api/pagination/pagination.go create mode 100644 cmd/api/space/handler.go create mode 100644 cmd/api/space/model.go create mode 100644 cmd/api/space/service.go create mode 100644 cmd/api/space/service_test.go create mode 100644 cmd/api/utils/utils.go diff --git a/cmd/api/docs/docs.go b/cmd/api/docs/docs.go index fa14eb412..f2f8e8790 100644 --- a/cmd/api/docs/docs.go +++ b/cmd/api/docs/docs.go @@ -200,7 +200,7 @@ const docTemplate = `{ "200": { "description": "List of spaces", "schema": { - "$ref": "#/definitions/api.PaginatedResponse-api_Space" + "$ref": "#/definitions/pagination.PaginatedResponse-space_Space" } }, "403": { @@ -249,7 +249,7 @@ const docTemplate = `{ "200": { "description": "Space created successfully", "schema": { - "$ref": "#/definitions/api.CreateSpaceResponse" + "$ref": "#/definitions/space.CreateSpaceResponse" } }, "403": { @@ -305,7 +305,7 @@ const docTemplate = `{ "200": { "description": "List of members", "schema": { - "$ref": "#/definitions/api.PaginatedResponse-api_Member" + "$ref": "#/definitions/pagination.PaginatedResponse-space_Member" } }, "403": { @@ -708,286 +708,9 @@ const docTemplate = `{ } } } - }, - "/v1/spaces/{space_id}/chat/messages": { - "get": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "chat" - ], - "summary": "Retrieve last chat messages", - "parameters": [ - { - "type": "string", - "description": "The ID of the space", - "name": "space_id", - "in": "path", - "required": true - }, - { - "type": "integer", - "description": "The number of items to skip before starting to collect the result set", - "name": "offset", - "in": "query" - }, - { - "type": "integer", - "default": 100, - "description": "The number of items to return", - "name": "limit", - "in": "query" - } - ], - "responses": { - "200": { - "description": "List of chat messages", - "schema": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "$ref": "#/definitions/api.ChatMessage" - } - } - } - }, - "502": { - "description": "Internal server error", - "schema": { - "$ref": "#/definitions/api.ServerError" - } - } - } - }, - "post": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "chat" - ], - "summary": "Add a new chat message", - "parameters": [ - { - "type": "string", - "description": "The ID of the space", - "name": "space_id", - "in": "path", - "required": true - }, - { - "description": "Chat message", - "name": "message", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/api.ChatMessage" - } - } - ], - "responses": { - "201": { - "description": "Created chat message", - "schema": { - "$ref": "#/definitions/api.ChatMessage" - } - }, - "400": { - "description": "Invalid input", - "schema": { - "$ref": "#/definitions/api.ValidationError" - } - }, - "502": { - "description": "Internal server error", - "schema": { - "$ref": "#/definitions/api.ServerError" - } - } - } - } - }, - "/v1/spaces/{space_id}/chat/messages/{message_id}": { - "get": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "chat" - ], - "summary": "Retrieve a specific chat message", - "parameters": [ - { - "type": "string", - "description": "The ID of the space", - "name": "space_id", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Message ID", - "name": "message_id", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "Chat message", - "schema": { - "$ref": "#/definitions/api.ChatMessage" - } - }, - "404": { - "description": "Message not found", - "schema": { - "$ref": "#/definitions/api.NotFoundError" - } - }, - "502": { - "description": "Internal server error", - "schema": { - "$ref": "#/definitions/api.ServerError" - } - } - } - }, - "put": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "chat" - ], - "summary": "Update an existing chat message", - "parameters": [ - { - "type": "string", - "description": "The ID of the space", - "name": "space_id", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Message ID", - "name": "message_id", - "in": "path", - "required": true - }, - { - "description": "Chat message", - "name": "message", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/api.ChatMessage" - } - } - ], - "responses": { - "200": { - "description": "Updated chat message", - "schema": { - "$ref": "#/definitions/api.ChatMessage" - } - }, - "400": { - "description": "Invalid input", - "schema": { - "$ref": "#/definitions/api.ValidationError" - } - }, - "404": { - "description": "Message not found", - "schema": { - "$ref": "#/definitions/api.NotFoundError" - } - }, - "502": { - "description": "Internal server error", - "schema": { - "$ref": "#/definitions/api.ServerError" - } - } - } - }, - "delete": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "chat" - ], - "summary": "Delete a chat message", - "parameters": [ - { - "type": "string", - "description": "The ID of the space", - "name": "space_id", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Message ID", - "name": "message_id", - "in": "path", - "required": true - } - ], - "responses": { - "204": { - "description": "Message deleted successfully" - }, - "404": { - "description": "Message not found", - "schema": { - "$ref": "#/definitions/api.NotFoundError" - } - }, - "502": { - "description": "Internal server error", - "schema": { - "$ref": "#/definitions/api.ServerError" - } - } - } - } } }, "definitions": { - "api.Attachment": { - "type": "object", - "properties": { - "target": { - "description": "Identifier for the attachment object", - "type": "string" - }, - "type": { - "description": "Type of attachment", - "type": "string" - } - } - }, "api.AuthDisplayCodeResponse": { "type": "object", "properties": { @@ -1039,72 +762,6 @@ const docTemplate = `{ } } }, - "api.ChatMessage": { - "type": "object", - "properties": { - "attachments": { - "description": "Attachments slice", - "type": "array", - "items": { - "$ref": "#/definitions/api.Attachment" - } - }, - "chat_message": { - "type": "string" - }, - "created_at": { - "type": "integer" - }, - "creator": { - "description": "Identifier for the message creator", - "type": "string" - }, - "id": { - "description": "Unique message identifier", - "type": "string" - }, - "message": { - "description": "Message content", - "allOf": [ - { - "$ref": "#/definitions/api.MessageContent" - } - ] - }, - "modified_at": { - "type": "integer" - }, - "order_id": { - "description": "Used for subscriptions", - "type": "string" - }, - "reactions": { - "description": "Reactions to the message", - "allOf": [ - { - "$ref": "#/definitions/api.Reactions" - } - ] - }, - "reply_to_message_id": { - "description": "Identifier for the message being replied to", - "type": "string" - } - } - }, - "api.CreateSpaceResponse": { - "type": "object", - "properties": { - "name": { - "type": "string", - "example": "Space Name" - }, - "space_id": { - "type": "string", - "example": "bafyreigyfkt6rbv24sbv5aq2hko3bhmv5xxlf22b4bypdu6j7hnphm3psq.23me69r569oi1" - } - } - }, "api.Detail": { "type": "object", "properties": { @@ -1149,71 +806,6 @@ const docTemplate = `{ } } }, - "api.IdentityList": { - "type": "object", - "properties": { - "ids": { - "description": "List of user IDs", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "api.Member": { - "type": "object", - "properties": { - "global_name": { - "type": "string", - "example": "john.any" - }, - "icon": { - "type": "string", - "example": "http://127.0.0.1:31006/image/bafybeieptz5hvcy6txplcvphjbbh5yjc2zqhmihs3owkh5oab4ezauzqay?width=100" - }, - "id": { - "type": "string", - "example": "_participant_bafyreigyfkt6rbv24sbv5aq2hko1bhmv5xxlf22b4bypdu6j7hnphm3psq_23me69r569oi1_AAjEaEwPF4nkEh9AWkqEnzcQ8HziBB4ETjiTpvRCQvWnSMDZ" - }, - "identity": { - "type": "string", - "example": "AAjEaEwPF4nkEh7AWkqEnzcQ8HziGB4ETjiTpvRCQvWnSMDZ" - }, - "name": { - "type": "string", - "example": "John Doe" - }, - "role": { - "type": "string", - "example": "Owner" - }, - "type": { - "type": "string", - "example": "member" - } - } - }, - "api.MessageContent": { - "type": "object", - "properties": { - "marks": { - "description": "List of marks applied to the text", - "type": "array", - "items": { - "type": "string" - } - }, - "style": { - "description": "The style/type of the message part", - "type": "string" - }, - "text": { - "description": "The text content of the message part", - "type": "string" - } - } - }, "api.NotFoundError": { "type": "object", "properties": { @@ -1317,71 +909,6 @@ const docTemplate = `{ } } }, - "api.PaginatedResponse-api_Member": { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/definitions/api.Member" - } - }, - "pagination": { - "$ref": "#/definitions/api.PaginationMeta" - } - } - }, - "api.PaginatedResponse-api_Space": { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/definitions/api.Space" - } - }, - "pagination": { - "$ref": "#/definitions/api.PaginationMeta" - } - } - }, - "api.PaginationMeta": { - "type": "object", - "properties": { - "has_more": { - "description": "whether there are more items available", - "type": "boolean", - "example": true - }, - "limit": { - "description": "the current limit", - "type": "integer", - "example": 100 - }, - "offset": { - "description": "the current offset", - "type": "integer", - "example": 0 - }, - "total": { - "description": "the total number of items available on that endpoint", - "type": "integer", - "example": 1024 - } - } - }, - "api.Reactions": { - "type": "object", - "properties": { - "reactions": { - "description": "Map of emoji to list of user IDs", - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/api.IdentityList" - } - } - } - }, "api.ServerError": { "type": "object", "properties": { @@ -1395,75 +922,6 @@ const docTemplate = `{ } } }, - "api.Space": { - "type": "object", - "properties": { - "account_space_id": { - "type": "string", - "example": "bafyreihpd2knon5wbljhtfeg3fcqtg3i2pomhhnigui6lrjmzcjzep7gcy.23me69r569oi1" - }, - "archive_object_id": { - "type": "string", - "example": "bafyreialsgoyflf3etjm3parzurivyaukzivwortf32b4twnlwpwocsrri" - }, - "device_id": { - "type": "string", - "example": "12D3KooWGZMJ4kQVyQVXaj7gJPZr3RZ2nvd9M2Eq2pprEoPih9WF" - }, - "home_object_id": { - "type": "string", - "example": "bafyreie4qcl3wczb4cw5hrfyycikhjyh6oljdis3ewqrk5boaav3sbwqya" - }, - "icon": { - "type": "string", - "example": "http://127.0.0.1:31006/image/bafybeieptz5hvcy6txplcvphjbbh5yjc2zqhmihs3owkh5oab4ezauzqay?width=100" - }, - "id": { - "type": "string", - "example": "bafyreigyfkt6rbv24sbv5aq2hko3bhmv5xxlf22b4bypdu6j7hnphm3psq.23me69r569oi1" - }, - "marketplace_workspace_id": { - "type": "string", - "example": "_anytype_marketplace" - }, - "name": { - "type": "string", - "example": "Space Name" - }, - "network_id": { - "type": "string", - "example": "N83gJpVd9MuNRZAuJLZ7LiMntTThhPc6DtzWWVjb1M3PouVU" - }, - "profile_object_id": { - "type": "string", - "example": "bafyreiaxhwreshjqwndpwtdsu4mtihaqhhmlygqnyqpfyfwlqfq3rm3gw4" - }, - "space_view_id": { - "type": "string", - "example": "bafyreigzv3vq7qwlrsin6njoduq727ssnhwd6bgyfj6nm4hv3pxoc2rxhy" - }, - "tech_space_id": { - "type": "string", - "example": "bafyreif4xuwncrjl6jajt4zrrfnylpki476nv2w64yf42ovt7gia7oypii.23me69r569oi1" - }, - "timezone": { - "type": "string", - "example": "" - }, - "type": { - "type": "string", - "example": "space" - }, - "widgets_id": { - "type": "string", - "example": "bafyreialj7pceh53mifm5dixlho47ke4qjmsn2uh4wsjf7xq2pnlo5xfva" - }, - "workspace_object_id": { - "type": "string", - "example": "bafyreiapey2g6e6za4zfxvlgwdy4hbbfu676gmwrhnqvjbxvrchr7elr3y" - } - } - }, "api.Text": { "type": "object", "properties": { @@ -1509,6 +967,181 @@ const docTemplate = `{ } } } + }, + "pagination.PaginatedResponse-space_Member": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/space.Member" + } + }, + "pagination": { + "$ref": "#/definitions/pagination.PaginationMeta" + } + } + }, + "pagination.PaginatedResponse-space_Space": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/space.Space" + } + }, + "pagination": { + "$ref": "#/definitions/pagination.PaginationMeta" + } + } + }, + "pagination.PaginationMeta": { + "type": "object", + "properties": { + "has_more": { + "description": "whether there are more items available", + "type": "boolean", + "example": true + }, + "limit": { + "description": "the current limit", + "type": "integer", + "example": 100 + }, + "offset": { + "description": "the current offset", + "type": "integer", + "example": 0 + }, + "total": { + "description": "the total number of items available on that endpoint", + "type": "integer", + "example": 1024 + } + } + }, + "space.CreateSpaceResponse": { + "type": "object", + "properties": { + "space": { + "$ref": "#/definitions/space.Space" + } + } + }, + "space.Member": { + "type": "object", + "properties": { + "global_name": { + "type": "string", + "example": "john.any" + }, + "icon": { + "type": "string", + "example": "http://127.0.0.1:31006/image/bafybeieptz5hvcy6txplcvphjbbh5yjc2zqhmihs3owkh5oab4ezauzqay?width=100" + }, + "id": { + "type": "string", + "example": "_participant_bafyreigyfkt6rbv24sbv5aq2hko1bhmv5xxlf22b4bypdu6j7hnphm3psq_23me69r569oi1_AAjEaEwPF4nkEh9AWkqEnzcQ8HziBB4ETjiTpvRCQvWnSMDZ" + }, + "identity": { + "type": "string", + "example": "AAjEaEwPF4nkEh7AWkqEnzcQ8HziGB4ETjiTpvRCQvWnSMDZ" + }, + "name": { + "type": "string", + "example": "John Doe" + }, + "role": { + "type": "string", + "example": "Owner" + }, + "type": { + "type": "string", + "example": "member" + } + } + }, + "space.Space": { + "type": "object", + "properties": { + "account_space_id": { + "type": "string", + "example": "bafyreihpd2knon5wbljhtfeg3fcqtg3i2pomhhnigui6lrjmzcjzep7gcy.23me69r569oi1" + }, + "analytics_id": { + "type": "string", + "example": "" + }, + "archive_object_id": { + "type": "string", + "example": "bafyreialsgoyflf3etjm3parzurivyaukzivwortf32b4twnlwpwocsrri" + }, + "device_id": { + "type": "string", + "example": "12D3KooWGZMJ4kQVyQVXaj7gJPZr3RZ2nvd9M2Eq2pprEoPih9WF" + }, + "gateway_url": { + "type": "string", + "example": "" + }, + "home_object_id": { + "type": "string", + "example": "bafyreie4qcl3wczb4cw5hrfyycikhjyh6oljdis3ewqrk5boaav3sbwqya" + }, + "icon": { + "type": "string", + "example": "http://127.0.0.1:31006/image/bafybeieptz5hvcy6txplcvphjbbh5yjc2zqhmihs3owkh5oab4ezauzqay?width=100" + }, + "id": { + "type": "string", + "example": "bafyreigyfkt6rbv24sbv5aq2hko3bhmv5xxlf22b4bypdu6j7hnphm3psq.23me69r569oi1" + }, + "local_storage_path": { + "type": "string", + "example": "" + }, + "marketplace_workspace_id": { + "type": "string", + "example": "_anytype_marketplace" + }, + "name": { + "type": "string", + "example": "Space Name" + }, + "network_id": { + "type": "string", + "example": "N83gJpVd9MuNRZAuJLZ7LiMntTThhPc6DtzWWVjb1M3PouVU" + }, + "profile_object_id": { + "type": "string", + "example": "bafyreiaxhwreshjqwndpwtdsu4mtihaqhhmlygqnyqpfyfwlqfq3rm3gw4" + }, + "space_view_id": { + "type": "string", + "example": "bafyreigzv3vq7qwlrsin6njoduq727ssnhwd6bgyfj6nm4hv3pxoc2rxhy" + }, + "tech_space_id": { + "type": "string", + "example": "bafyreif4xuwncrjl6jajt4zrrfnylpki476nv2w64yf42ovt7gia7oypii.23me69r569oi1" + }, + "timezone": { + "type": "string", + "example": "" + }, + "type": { + "type": "string", + "example": "space" + }, + "widgets_id": { + "type": "string", + "example": "bafyreialj7pceh53mifm5dixlho47ke4qjmsn2uh4wsjf7xq2pnlo5xfva" + }, + "workspace_object_id": { + "type": "string", + "example": "bafyreiapey2g6e6za4zfxvlgwdy4hbbfu676gmwrhnqvjbxvrchr7elr3y" + } + } } }, "securityDefinitions": { diff --git a/cmd/api/docs/swagger.json b/cmd/api/docs/swagger.json index 1cddd64a3..8285da535 100644 --- a/cmd/api/docs/swagger.json +++ b/cmd/api/docs/swagger.json @@ -194,7 +194,7 @@ "200": { "description": "List of spaces", "schema": { - "$ref": "#/definitions/api.PaginatedResponse-api_Space" + "$ref": "#/definitions/pagination.PaginatedResponse-space_Space" } }, "403": { @@ -243,7 +243,7 @@ "200": { "description": "Space created successfully", "schema": { - "$ref": "#/definitions/api.CreateSpaceResponse" + "$ref": "#/definitions/space.CreateSpaceResponse" } }, "403": { @@ -299,7 +299,7 @@ "200": { "description": "List of members", "schema": { - "$ref": "#/definitions/api.PaginatedResponse-api_Member" + "$ref": "#/definitions/pagination.PaginatedResponse-space_Member" } }, "403": { @@ -702,286 +702,9 @@ } } } - }, - "/v1/spaces/{space_id}/chat/messages": { - "get": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "chat" - ], - "summary": "Retrieve last chat messages", - "parameters": [ - { - "type": "string", - "description": "The ID of the space", - "name": "space_id", - "in": "path", - "required": true - }, - { - "type": "integer", - "description": "The number of items to skip before starting to collect the result set", - "name": "offset", - "in": "query" - }, - { - "type": "integer", - "default": 100, - "description": "The number of items to return", - "name": "limit", - "in": "query" - } - ], - "responses": { - "200": { - "description": "List of chat messages", - "schema": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "$ref": "#/definitions/api.ChatMessage" - } - } - } - }, - "502": { - "description": "Internal server error", - "schema": { - "$ref": "#/definitions/api.ServerError" - } - } - } - }, - "post": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "chat" - ], - "summary": "Add a new chat message", - "parameters": [ - { - "type": "string", - "description": "The ID of the space", - "name": "space_id", - "in": "path", - "required": true - }, - { - "description": "Chat message", - "name": "message", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/api.ChatMessage" - } - } - ], - "responses": { - "201": { - "description": "Created chat message", - "schema": { - "$ref": "#/definitions/api.ChatMessage" - } - }, - "400": { - "description": "Invalid input", - "schema": { - "$ref": "#/definitions/api.ValidationError" - } - }, - "502": { - "description": "Internal server error", - "schema": { - "$ref": "#/definitions/api.ServerError" - } - } - } - } - }, - "/v1/spaces/{space_id}/chat/messages/{message_id}": { - "get": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "chat" - ], - "summary": "Retrieve a specific chat message", - "parameters": [ - { - "type": "string", - "description": "The ID of the space", - "name": "space_id", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Message ID", - "name": "message_id", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "Chat message", - "schema": { - "$ref": "#/definitions/api.ChatMessage" - } - }, - "404": { - "description": "Message not found", - "schema": { - "$ref": "#/definitions/api.NotFoundError" - } - }, - "502": { - "description": "Internal server error", - "schema": { - "$ref": "#/definitions/api.ServerError" - } - } - } - }, - "put": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "chat" - ], - "summary": "Update an existing chat message", - "parameters": [ - { - "type": "string", - "description": "The ID of the space", - "name": "space_id", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Message ID", - "name": "message_id", - "in": "path", - "required": true - }, - { - "description": "Chat message", - "name": "message", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/api.ChatMessage" - } - } - ], - "responses": { - "200": { - "description": "Updated chat message", - "schema": { - "$ref": "#/definitions/api.ChatMessage" - } - }, - "400": { - "description": "Invalid input", - "schema": { - "$ref": "#/definitions/api.ValidationError" - } - }, - "404": { - "description": "Message not found", - "schema": { - "$ref": "#/definitions/api.NotFoundError" - } - }, - "502": { - "description": "Internal server error", - "schema": { - "$ref": "#/definitions/api.ServerError" - } - } - } - }, - "delete": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "chat" - ], - "summary": "Delete a chat message", - "parameters": [ - { - "type": "string", - "description": "The ID of the space", - "name": "space_id", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Message ID", - "name": "message_id", - "in": "path", - "required": true - } - ], - "responses": { - "204": { - "description": "Message deleted successfully" - }, - "404": { - "description": "Message not found", - "schema": { - "$ref": "#/definitions/api.NotFoundError" - } - }, - "502": { - "description": "Internal server error", - "schema": { - "$ref": "#/definitions/api.ServerError" - } - } - } - } } }, "definitions": { - "api.Attachment": { - "type": "object", - "properties": { - "target": { - "description": "Identifier for the attachment object", - "type": "string" - }, - "type": { - "description": "Type of attachment", - "type": "string" - } - } - }, "api.AuthDisplayCodeResponse": { "type": "object", "properties": { @@ -1033,72 +756,6 @@ } } }, - "api.ChatMessage": { - "type": "object", - "properties": { - "attachments": { - "description": "Attachments slice", - "type": "array", - "items": { - "$ref": "#/definitions/api.Attachment" - } - }, - "chat_message": { - "type": "string" - }, - "created_at": { - "type": "integer" - }, - "creator": { - "description": "Identifier for the message creator", - "type": "string" - }, - "id": { - "description": "Unique message identifier", - "type": "string" - }, - "message": { - "description": "Message content", - "allOf": [ - { - "$ref": "#/definitions/api.MessageContent" - } - ] - }, - "modified_at": { - "type": "integer" - }, - "order_id": { - "description": "Used for subscriptions", - "type": "string" - }, - "reactions": { - "description": "Reactions to the message", - "allOf": [ - { - "$ref": "#/definitions/api.Reactions" - } - ] - }, - "reply_to_message_id": { - "description": "Identifier for the message being replied to", - "type": "string" - } - } - }, - "api.CreateSpaceResponse": { - "type": "object", - "properties": { - "name": { - "type": "string", - "example": "Space Name" - }, - "space_id": { - "type": "string", - "example": "bafyreigyfkt6rbv24sbv5aq2hko3bhmv5xxlf22b4bypdu6j7hnphm3psq.23me69r569oi1" - } - } - }, "api.Detail": { "type": "object", "properties": { @@ -1143,71 +800,6 @@ } } }, - "api.IdentityList": { - "type": "object", - "properties": { - "ids": { - "description": "List of user IDs", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "api.Member": { - "type": "object", - "properties": { - "global_name": { - "type": "string", - "example": "john.any" - }, - "icon": { - "type": "string", - "example": "http://127.0.0.1:31006/image/bafybeieptz5hvcy6txplcvphjbbh5yjc2zqhmihs3owkh5oab4ezauzqay?width=100" - }, - "id": { - "type": "string", - "example": "_participant_bafyreigyfkt6rbv24sbv5aq2hko1bhmv5xxlf22b4bypdu6j7hnphm3psq_23me69r569oi1_AAjEaEwPF4nkEh9AWkqEnzcQ8HziBB4ETjiTpvRCQvWnSMDZ" - }, - "identity": { - "type": "string", - "example": "AAjEaEwPF4nkEh7AWkqEnzcQ8HziGB4ETjiTpvRCQvWnSMDZ" - }, - "name": { - "type": "string", - "example": "John Doe" - }, - "role": { - "type": "string", - "example": "Owner" - }, - "type": { - "type": "string", - "example": "member" - } - } - }, - "api.MessageContent": { - "type": "object", - "properties": { - "marks": { - "description": "List of marks applied to the text", - "type": "array", - "items": { - "type": "string" - } - }, - "style": { - "description": "The style/type of the message part", - "type": "string" - }, - "text": { - "description": "The text content of the message part", - "type": "string" - } - } - }, "api.NotFoundError": { "type": "object", "properties": { @@ -1311,71 +903,6 @@ } } }, - "api.PaginatedResponse-api_Member": { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/definitions/api.Member" - } - }, - "pagination": { - "$ref": "#/definitions/api.PaginationMeta" - } - } - }, - "api.PaginatedResponse-api_Space": { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/definitions/api.Space" - } - }, - "pagination": { - "$ref": "#/definitions/api.PaginationMeta" - } - } - }, - "api.PaginationMeta": { - "type": "object", - "properties": { - "has_more": { - "description": "whether there are more items available", - "type": "boolean", - "example": true - }, - "limit": { - "description": "the current limit", - "type": "integer", - "example": 100 - }, - "offset": { - "description": "the current offset", - "type": "integer", - "example": 0 - }, - "total": { - "description": "the total number of items available on that endpoint", - "type": "integer", - "example": 1024 - } - } - }, - "api.Reactions": { - "type": "object", - "properties": { - "reactions": { - "description": "Map of emoji to list of user IDs", - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/api.IdentityList" - } - } - } - }, "api.ServerError": { "type": "object", "properties": { @@ -1389,75 +916,6 @@ } } }, - "api.Space": { - "type": "object", - "properties": { - "account_space_id": { - "type": "string", - "example": "bafyreihpd2knon5wbljhtfeg3fcqtg3i2pomhhnigui6lrjmzcjzep7gcy.23me69r569oi1" - }, - "archive_object_id": { - "type": "string", - "example": "bafyreialsgoyflf3etjm3parzurivyaukzivwortf32b4twnlwpwocsrri" - }, - "device_id": { - "type": "string", - "example": "12D3KooWGZMJ4kQVyQVXaj7gJPZr3RZ2nvd9M2Eq2pprEoPih9WF" - }, - "home_object_id": { - "type": "string", - "example": "bafyreie4qcl3wczb4cw5hrfyycikhjyh6oljdis3ewqrk5boaav3sbwqya" - }, - "icon": { - "type": "string", - "example": "http://127.0.0.1:31006/image/bafybeieptz5hvcy6txplcvphjbbh5yjc2zqhmihs3owkh5oab4ezauzqay?width=100" - }, - "id": { - "type": "string", - "example": "bafyreigyfkt6rbv24sbv5aq2hko3bhmv5xxlf22b4bypdu6j7hnphm3psq.23me69r569oi1" - }, - "marketplace_workspace_id": { - "type": "string", - "example": "_anytype_marketplace" - }, - "name": { - "type": "string", - "example": "Space Name" - }, - "network_id": { - "type": "string", - "example": "N83gJpVd9MuNRZAuJLZ7LiMntTThhPc6DtzWWVjb1M3PouVU" - }, - "profile_object_id": { - "type": "string", - "example": "bafyreiaxhwreshjqwndpwtdsu4mtihaqhhmlygqnyqpfyfwlqfq3rm3gw4" - }, - "space_view_id": { - "type": "string", - "example": "bafyreigzv3vq7qwlrsin6njoduq727ssnhwd6bgyfj6nm4hv3pxoc2rxhy" - }, - "tech_space_id": { - "type": "string", - "example": "bafyreif4xuwncrjl6jajt4zrrfnylpki476nv2w64yf42ovt7gia7oypii.23me69r569oi1" - }, - "timezone": { - "type": "string", - "example": "" - }, - "type": { - "type": "string", - "example": "space" - }, - "widgets_id": { - "type": "string", - "example": "bafyreialj7pceh53mifm5dixlho47ke4qjmsn2uh4wsjf7xq2pnlo5xfva" - }, - "workspace_object_id": { - "type": "string", - "example": "bafyreiapey2g6e6za4zfxvlgwdy4hbbfu676gmwrhnqvjbxvrchr7elr3y" - } - } - }, "api.Text": { "type": "object", "properties": { @@ -1503,6 +961,181 @@ } } } + }, + "pagination.PaginatedResponse-space_Member": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/space.Member" + } + }, + "pagination": { + "$ref": "#/definitions/pagination.PaginationMeta" + } + } + }, + "pagination.PaginatedResponse-space_Space": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/space.Space" + } + }, + "pagination": { + "$ref": "#/definitions/pagination.PaginationMeta" + } + } + }, + "pagination.PaginationMeta": { + "type": "object", + "properties": { + "has_more": { + "description": "whether there are more items available", + "type": "boolean", + "example": true + }, + "limit": { + "description": "the current limit", + "type": "integer", + "example": 100 + }, + "offset": { + "description": "the current offset", + "type": "integer", + "example": 0 + }, + "total": { + "description": "the total number of items available on that endpoint", + "type": "integer", + "example": 1024 + } + } + }, + "space.CreateSpaceResponse": { + "type": "object", + "properties": { + "space": { + "$ref": "#/definitions/space.Space" + } + } + }, + "space.Member": { + "type": "object", + "properties": { + "global_name": { + "type": "string", + "example": "john.any" + }, + "icon": { + "type": "string", + "example": "http://127.0.0.1:31006/image/bafybeieptz5hvcy6txplcvphjbbh5yjc2zqhmihs3owkh5oab4ezauzqay?width=100" + }, + "id": { + "type": "string", + "example": "_participant_bafyreigyfkt6rbv24sbv5aq2hko1bhmv5xxlf22b4bypdu6j7hnphm3psq_23me69r569oi1_AAjEaEwPF4nkEh9AWkqEnzcQ8HziBB4ETjiTpvRCQvWnSMDZ" + }, + "identity": { + "type": "string", + "example": "AAjEaEwPF4nkEh7AWkqEnzcQ8HziGB4ETjiTpvRCQvWnSMDZ" + }, + "name": { + "type": "string", + "example": "John Doe" + }, + "role": { + "type": "string", + "example": "Owner" + }, + "type": { + "type": "string", + "example": "member" + } + } + }, + "space.Space": { + "type": "object", + "properties": { + "account_space_id": { + "type": "string", + "example": "bafyreihpd2knon5wbljhtfeg3fcqtg3i2pomhhnigui6lrjmzcjzep7gcy.23me69r569oi1" + }, + "analytics_id": { + "type": "string", + "example": "" + }, + "archive_object_id": { + "type": "string", + "example": "bafyreialsgoyflf3etjm3parzurivyaukzivwortf32b4twnlwpwocsrri" + }, + "device_id": { + "type": "string", + "example": "12D3KooWGZMJ4kQVyQVXaj7gJPZr3RZ2nvd9M2Eq2pprEoPih9WF" + }, + "gateway_url": { + "type": "string", + "example": "" + }, + "home_object_id": { + "type": "string", + "example": "bafyreie4qcl3wczb4cw5hrfyycikhjyh6oljdis3ewqrk5boaav3sbwqya" + }, + "icon": { + "type": "string", + "example": "http://127.0.0.1:31006/image/bafybeieptz5hvcy6txplcvphjbbh5yjc2zqhmihs3owkh5oab4ezauzqay?width=100" + }, + "id": { + "type": "string", + "example": "bafyreigyfkt6rbv24sbv5aq2hko3bhmv5xxlf22b4bypdu6j7hnphm3psq.23me69r569oi1" + }, + "local_storage_path": { + "type": "string", + "example": "" + }, + "marketplace_workspace_id": { + "type": "string", + "example": "_anytype_marketplace" + }, + "name": { + "type": "string", + "example": "Space Name" + }, + "network_id": { + "type": "string", + "example": "N83gJpVd9MuNRZAuJLZ7LiMntTThhPc6DtzWWVjb1M3PouVU" + }, + "profile_object_id": { + "type": "string", + "example": "bafyreiaxhwreshjqwndpwtdsu4mtihaqhhmlygqnyqpfyfwlqfq3rm3gw4" + }, + "space_view_id": { + "type": "string", + "example": "bafyreigzv3vq7qwlrsin6njoduq727ssnhwd6bgyfj6nm4hv3pxoc2rxhy" + }, + "tech_space_id": { + "type": "string", + "example": "bafyreif4xuwncrjl6jajt4zrrfnylpki476nv2w64yf42ovt7gia7oypii.23me69r569oi1" + }, + "timezone": { + "type": "string", + "example": "" + }, + "type": { + "type": "string", + "example": "space" + }, + "widgets_id": { + "type": "string", + "example": "bafyreialj7pceh53mifm5dixlho47ke4qjmsn2uh4wsjf7xq2pnlo5xfva" + }, + "workspace_object_id": { + "type": "string", + "example": "bafyreiapey2g6e6za4zfxvlgwdy4hbbfu676gmwrhnqvjbxvrchr7elr3y" + } + } } }, "securityDefinitions": { diff --git a/cmd/api/docs/swagger.yaml b/cmd/api/docs/swagger.yaml index 08959f27e..a9f287cae 100644 --- a/cmd/api/docs/swagger.yaml +++ b/cmd/api/docs/swagger.yaml @@ -1,14 +1,5 @@ basePath: /v1 definitions: - api.Attachment: - properties: - target: - description: Identifier for the attachment object - type: string - type: - description: Type of attachment - type: string - type: object api.AuthDisplayCodeResponse: properties: challenge_id: @@ -43,49 +34,6 @@ definitions: vertical_align: type: string type: object - api.ChatMessage: - properties: - attachments: - description: Attachments slice - items: - $ref: '#/definitions/api.Attachment' - type: array - chat_message: - type: string - created_at: - type: integer - creator: - description: Identifier for the message creator - type: string - id: - description: Unique message identifier - type: string - message: - allOf: - - $ref: '#/definitions/api.MessageContent' - description: Message content - modified_at: - type: integer - order_id: - description: Used for subscriptions - type: string - reactions: - allOf: - - $ref: '#/definitions/api.Reactions' - description: Reactions to the message - reply_to_message_id: - description: Identifier for the message being replied to - type: string - type: object - api.CreateSpaceResponse: - properties: - name: - example: Space Name - type: string - space_id: - example: bafyreigyfkt6rbv24sbv5aq2hko3bhmv5xxlf22b4bypdu6j7hnphm3psq.23me69r569oi1 - type: string - type: object api.Detail: properties: details: @@ -115,52 +63,6 @@ definitions: type: type: string type: object - api.IdentityList: - properties: - ids: - description: List of user IDs - items: - type: string - type: array - type: object - api.Member: - properties: - global_name: - example: john.any - type: string - icon: - example: http://127.0.0.1:31006/image/bafybeieptz5hvcy6txplcvphjbbh5yjc2zqhmihs3owkh5oab4ezauzqay?width=100 - type: string - id: - example: _participant_bafyreigyfkt6rbv24sbv5aq2hko1bhmv5xxlf22b4bypdu6j7hnphm3psq_23me69r569oi1_AAjEaEwPF4nkEh9AWkqEnzcQ8HziBB4ETjiTpvRCQvWnSMDZ - type: string - identity: - example: AAjEaEwPF4nkEh7AWkqEnzcQ8HziGB4ETjiTpvRCQvWnSMDZ - type: string - name: - example: John Doe - type: string - role: - example: Owner - type: string - type: - example: member - type: string - type: object - api.MessageContent: - properties: - marks: - description: List of marks applied to the text - items: - type: string - type: array - style: - description: The style/type of the message part - type: string - text: - description: The text content of the message part - type: string - type: object api.NotFoundError: properties: error: @@ -233,25 +135,62 @@ definitions: example: ot-page type: string type: object - api.PaginatedResponse-api_Member: + api.ServerError: + properties: + error: + properties: + message: + type: string + type: object + type: object + api.Text: + properties: + checked: + type: boolean + color: + type: string + icon: + type: string + style: + type: string + text: + type: string + type: object + api.UnauthorizedError: + properties: + error: + properties: + message: + type: string + type: object + type: object + api.ValidationError: + properties: + error: + properties: + message: + type: string + type: object + type: object + pagination.PaginatedResponse-space_Member: properties: data: items: - $ref: '#/definitions/api.Member' + $ref: '#/definitions/space.Member' type: array pagination: - $ref: '#/definitions/api.PaginationMeta' + $ref: '#/definitions/pagination.PaginationMeta' type: object - api.PaginatedResponse-api_Space: + pagination.PaginatedResponse-space_Space: properties: data: items: - $ref: '#/definitions/api.Space' + $ref: '#/definitions/space.Space' type: array pagination: - $ref: '#/definitions/api.PaginationMeta' + $ref: '#/definitions/pagination.PaginationMeta' type: object - api.PaginationMeta: + pagination.PaginationMeta: properties: has_more: description: whether there are more items available @@ -270,33 +209,52 @@ definitions: example: 1024 type: integer type: object - api.Reactions: + space.CreateSpaceResponse: properties: - reactions: - additionalProperties: - $ref: '#/definitions/api.IdentityList' - description: Map of emoji to list of user IDs - type: object + space: + $ref: '#/definitions/space.Space' type: object - api.ServerError: + space.Member: properties: - error: - properties: - message: - type: string - type: object + global_name: + example: john.any + type: string + icon: + example: http://127.0.0.1:31006/image/bafybeieptz5hvcy6txplcvphjbbh5yjc2zqhmihs3owkh5oab4ezauzqay?width=100 + type: string + id: + example: _participant_bafyreigyfkt6rbv24sbv5aq2hko1bhmv5xxlf22b4bypdu6j7hnphm3psq_23me69r569oi1_AAjEaEwPF4nkEh9AWkqEnzcQ8HziBB4ETjiTpvRCQvWnSMDZ + type: string + identity: + example: AAjEaEwPF4nkEh7AWkqEnzcQ8HziGB4ETjiTpvRCQvWnSMDZ + type: string + name: + example: John Doe + type: string + role: + example: Owner + type: string + type: + example: member + type: string type: object - api.Space: + space.Space: properties: account_space_id: example: bafyreihpd2knon5wbljhtfeg3fcqtg3i2pomhhnigui6lrjmzcjzep7gcy.23me69r569oi1 type: string + analytics_id: + example: "" + type: string archive_object_id: example: bafyreialsgoyflf3etjm3parzurivyaukzivwortf32b4twnlwpwocsrri type: string device_id: example: 12D3KooWGZMJ4kQVyQVXaj7gJPZr3RZ2nvd9M2Eq2pprEoPih9WF type: string + gateway_url: + example: "" + type: string home_object_id: example: bafyreie4qcl3wczb4cw5hrfyycikhjyh6oljdis3ewqrk5boaav3sbwqya type: string @@ -306,6 +264,9 @@ definitions: id: example: bafyreigyfkt6rbv24sbv5aq2hko3bhmv5xxlf22b4bypdu6j7hnphm3psq.23me69r569oi1 type: string + local_storage_path: + example: "" + type: string marketplace_workspace_id: example: _anytype_marketplace type: string @@ -337,35 +298,6 @@ definitions: example: bafyreiapey2g6e6za4zfxvlgwdy4hbbfu676gmwrhnqvjbxvrchr7elr3y type: string type: object - api.Text: - properties: - checked: - type: boolean - color: - type: string - icon: - type: string - style: - type: string - text: - type: string - type: object - api.UnauthorizedError: - properties: - error: - properties: - message: - type: string - type: object - type: object - api.ValidationError: - properties: - error: - properties: - message: - type: string - type: object - type: object externalDocs: description: OpenAPI url: https://swagger.io/resources/open-api/ @@ -501,7 +433,7 @@ paths: "200": description: List of spaces schema: - $ref: '#/definitions/api.PaginatedResponse-api_Space' + $ref: '#/definitions/pagination.PaginatedResponse-space_Space' "403": description: Unauthorized schema: @@ -533,7 +465,7 @@ paths: "200": description: Space created successfully schema: - $ref: '#/definitions/api.CreateSpaceResponse' + $ref: '#/definitions/space.CreateSpaceResponse' "403": description: Unauthorized schema: @@ -571,7 +503,7 @@ paths: "200": description: List of members schema: - $ref: '#/definitions/api.PaginatedResponse-api_Member' + $ref: '#/definitions/pagination.PaginatedResponse-space_Member' "403": description: Unauthorized schema: @@ -842,182 +774,6 @@ paths: summary: Update an existing object in a specific space tags: - space_objects - /v1/spaces/{space_id}/chat/messages: - get: - consumes: - - application/json - parameters: - - description: The ID of the space - in: path - name: space_id - required: true - type: string - - description: The number of items to skip before starting to collect the result - set - in: query - name: offset - type: integer - - default: 100 - description: The number of items to return - in: query - name: limit - type: integer - produces: - - application/json - responses: - "200": - description: List of chat messages - schema: - additionalProperties: - items: - $ref: '#/definitions/api.ChatMessage' - type: array - type: object - "502": - description: Internal server error - schema: - $ref: '#/definitions/api.ServerError' - summary: Retrieve last chat messages - tags: - - chat - post: - consumes: - - application/json - parameters: - - description: The ID of the space - in: path - name: space_id - required: true - type: string - - description: Chat message - in: body - name: message - required: true - schema: - $ref: '#/definitions/api.ChatMessage' - produces: - - application/json - responses: - "201": - description: Created chat message - schema: - $ref: '#/definitions/api.ChatMessage' - "400": - description: Invalid input - schema: - $ref: '#/definitions/api.ValidationError' - "502": - description: Internal server error - schema: - $ref: '#/definitions/api.ServerError' - summary: Add a new chat message - tags: - - chat - /v1/spaces/{space_id}/chat/messages/{message_id}: - delete: - consumes: - - application/json - parameters: - - description: The ID of the space - in: path - name: space_id - required: true - type: string - - description: Message ID - in: path - name: message_id - required: true - type: string - produces: - - application/json - responses: - "204": - description: Message deleted successfully - "404": - description: Message not found - schema: - $ref: '#/definitions/api.NotFoundError' - "502": - description: Internal server error - schema: - $ref: '#/definitions/api.ServerError' - summary: Delete a chat message - tags: - - chat - get: - consumes: - - application/json - parameters: - - description: The ID of the space - in: path - name: space_id - required: true - type: string - - description: Message ID - in: path - name: message_id - required: true - type: string - produces: - - application/json - responses: - "200": - description: Chat message - schema: - $ref: '#/definitions/api.ChatMessage' - "404": - description: Message not found - schema: - $ref: '#/definitions/api.NotFoundError' - "502": - description: Internal server error - schema: - $ref: '#/definitions/api.ServerError' - summary: Retrieve a specific chat message - tags: - - chat - put: - consumes: - - application/json - parameters: - - description: The ID of the space - in: path - name: space_id - required: true - type: string - - description: Message ID - in: path - name: message_id - required: true - type: string - - description: Chat message - in: body - name: message - required: true - schema: - $ref: '#/definitions/api.ChatMessage' - produces: - - application/json - responses: - "200": - description: Updated chat message - schema: - $ref: '#/definitions/api.ChatMessage' - "400": - description: Invalid input - schema: - $ref: '#/definitions/api.ValidationError' - "404": - description: Message not found - schema: - $ref: '#/definitions/api.NotFoundError' - "502": - description: Internal server error - schema: - $ref: '#/definitions/api.ServerError' - summary: Update an existing chat message - tags: - - chat securityDefinitions: BasicAuth: type: basic diff --git a/cmd/api/handlers.go b/cmd/api/handlers.go index 3ca7dc70c..a5e132519 100644 --- a/cmd/api/handlers.go +++ b/cmd/api/handlers.go @@ -1,24 +1,20 @@ package api import ( - "crypto/rand" - "math/big" "net/http" "sort" "github.com/gin-gonic/gin" "github.com/gogo/protobuf/types" + "github.com/anyproto/anytype-heart/cmd/api/pagination" + "github.com/anyproto/anytype-heart/cmd/api/utils" "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/pkg/lib/bundle" "github.com/anyproto/anytype-heart/pkg/lib/pb/model" "github.com/anyproto/anytype-heart/util/pbtypes" ) -type CreateSpaceRequest struct { - Name string `json:"name"` -} - type CreateObjectRequest struct { Name string `json:"name"` Icon string `json:"icon"` @@ -86,205 +82,6 @@ func (a *ApiServer) authTokenHandler(c *gin.Context) { }) } -// getSpacesHandler retrieves a list of spaces -// -// @Summary Retrieve a list of spaces -// @Tags spaces -// @Accept json -// @Produce json -// @Param offset query int false "The number of items to skip before starting to collect the result set" -// @Param limit query int false "The number of items to return" default(100) -// @Success 200 {object} PaginatedResponse[Space] "List of spaces" -// @Failure 403 {object} UnauthorizedError "Unauthorized" -// @Failure 404 {object} NotFoundError "Resource not found" -// @Failure 502 {object} ServerError "Internal server error" -// @Router /spaces [get] -func (a *ApiServer) getSpacesHandler(c *gin.Context) { - offset := c.GetInt("offset") - limit := c.GetInt("limit") - - // Call ObjectSearch for all objects of type spaceView - resp := a.mw.ObjectSearch(c.Request.Context(), &pb.RpcObjectSearchRequest{ - SpaceId: a.accountInfo.TechSpaceId, - Filters: []*model.BlockContentDataviewFilter{ - { - RelationKey: bundle.RelationKeyLayout.String(), - Condition: model.BlockContentDataviewFilter_Equal, - Value: pbtypes.Int64(int64(model.ObjectType_spaceView)), - }, - { - RelationKey: bundle.RelationKeySpaceLocalStatus.String(), - Condition: model.BlockContentDataviewFilter_Equal, - Value: pbtypes.Int64(int64(model.SpaceStatus_Ok)), - }, - { - RelationKey: bundle.RelationKeySpaceRemoteStatus.String(), - Condition: model.BlockContentDataviewFilter_Equal, - Value: pbtypes.Int64(int64(model.SpaceStatus_Ok)), - }, - }, - Sorts: []*model.BlockContentDataviewSort{ - { - RelationKey: "spaceOrder", - Type: model.BlockContentDataviewSort_Asc, - NoCollate: true, - EmptyPlacement: model.BlockContentDataviewSort_End, - }, - }, - Keys: []string{"targetSpaceId", "name", "iconEmoji", "iconImage"}, - }) - - if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { - c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to retrieve list of spaces."}) - return - } - - if len(resp.Records) == 0 { - c.JSON(http.StatusNotFound, gin.H{"message": "No spaces found."}) - return - } - - paginatedSpaces, hasMore := paginate(resp.Records, offset, limit) - spaces := make([]Space, 0, len(paginatedSpaces)) - - for _, record := range paginatedSpaces { - workspace, statusCode, errorMessage := a.getWorkspaceInfo(record.Fields["targetSpaceId"].GetStringValue()) - if statusCode != http.StatusOK { - c.JSON(statusCode, gin.H{"message": errorMessage}) - return - } - - workspace.Name = record.Fields["name"].GetStringValue() - workspace.Icon = a.getIconFromEmojiOrImage(record.Fields["iconEmoji"].GetStringValue(), record.Fields["iconImage"].GetStringValue()) - - spaces = append(spaces, workspace) - } - - respondWithPagination(c, http.StatusOK, spaces, len(resp.Records), offset, limit, hasMore) -} - -// createSpaceHandler creates a new space -// -// @Summary Create a new Space -// @Tags spaces -// @Accept json -// @Produce json -// @Param name body string true "Space Name" -// @Success 200 {object} CreateSpaceResponse "Space created successfully" -// @Failure 403 {object} UnauthorizedError "Unauthorized" -// @Failure 502 {object} ServerError "Internal server error" -// @Router /spaces [post] -func (a *ApiServer) createSpaceHandler(c *gin.Context) { - nameRequest := CreateSpaceRequest{} - if err := c.BindJSON(&nameRequest); err != nil { - c.JSON(http.StatusBadRequest, gin.H{"message": "Invalid JSON"}) - return - } - name := nameRequest.Name - iconOption, err := rand.Int(rand.Reader, big.NewInt(13)) - if err != nil { - c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to generate random icon."}) - return - } - - // Create new workspace with a random icon and import default use case - resp := a.mw.WorkspaceCreate(c.Request.Context(), &pb.RpcWorkspaceCreateRequest{ - Details: &types.Struct{ - Fields: map[string]*types.Value{ - "iconOption": {Kind: &types.Value_NumberValue{NumberValue: float64(iconOption.Int64())}}, - "name": {Kind: &types.Value_StringValue{StringValue: name}}, - "spaceDashboardId": {Kind: &types.Value_StringValue{ - StringValue: "lastOpened", - }}, - }, - }, - UseCase: pb.RpcObjectImportUseCaseRequest_GET_STARTED, - WithChat: true, - }) - - if resp.Error.Code != pb.RpcWorkspaceCreateResponseError_NULL { - c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to create a new space."}) - return - } - - c.JSON(http.StatusOK, CreateSpaceResponse{SpaceId: resp.SpaceId, Name: name}) -} - -// getMembersHandler retrieves a list of members for the specified space -// -// @Summary Retrieve a list of members for the specified Space -// @Tags spaces -// @Accept json -// @Produce json -// @Param space_id path string true "The ID of the space" -// @Param offset query int false "The number of items to skip before starting to collect the result set" -// @Param limit query int false "The number of items to return" default(100) -// @Success 200 {object} PaginatedResponse[Member] "List of members" -// @Failure 403 {object} UnauthorizedError "Unauthorized" -// @Failure 404 {object} NotFoundError "Resource not found" -// @Failure 502 {object} ServerError "Internal server error" -// @Router /spaces/{space_id}/members [get] -func (a *ApiServer) getMembersHandler(c *gin.Context) { - spaceId := c.Param("space_id") - offset := c.GetInt("offset") - limit := c.GetInt("limit") - - // Call ObjectSearch for all objects of type participant - resp := a.mw.ObjectSearch(c.Request.Context(), &pb.RpcObjectSearchRequest{ - SpaceId: spaceId, - Filters: []*model.BlockContentDataviewFilter{ - { - RelationKey: bundle.RelationKeyLayout.String(), - Condition: model.BlockContentDataviewFilter_Equal, - Value: pbtypes.Int64(int64(model.ObjectType_participant)), - }, - { - RelationKey: bundle.RelationKeyParticipantStatus.String(), - Condition: model.BlockContentDataviewFilter_Equal, - Value: pbtypes.Int64(int64(model.ParticipantStatus_Active)), - }, - }, - Sorts: []*model.BlockContentDataviewSort{ - { - RelationKey: "name", - Type: model.BlockContentDataviewSort_Asc, - }, - }, - Keys: []string{"id", "name", "iconEmoji", "iconImage", "identity", "globalName", "participantPermissions"}, - }) - - if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { - c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to retrieve list of members."}) - return - } - - if len(resp.Records) == 0 { - c.JSON(http.StatusNotFound, gin.H{"message": "No members found."}) - return - } - - paginatedMembers, hasMore := paginate(resp.Records, offset, limit) - members := make([]Member, 0, len(paginatedMembers)) - - for _, record := range paginatedMembers { - icon := a.getIconFromEmojiOrImage(record.Fields["iconEmoji"].GetStringValue(), record.Fields["iconImage"].GetStringValue()) - - member := Member{ - Type: "space_member", - Id: record.Fields["id"].GetStringValue(), - Name: record.Fields["name"].GetStringValue(), - Icon: icon, - Identity: record.Fields["identity"].GetStringValue(), - GlobalName: record.Fields["globalName"].GetStringValue(), - Role: model.ParticipantPermissions_name[int32(record.Fields["participantPermissions"].GetNumberValue())], - } - - members = append(members, member) - } - - respondWithPagination(c, http.StatusOK, members, len(resp.Records), offset, limit, hasMore) -} - // getObjectsHandler retrieves objects in a specific space // // @Summary Retrieve objects in a specific space @@ -342,11 +139,11 @@ func (a *ApiServer) getObjectsHandler(c *gin.Context) { return } - paginatedObjects, hasMore := paginate(resp.Records, offset, limit) + paginatedObjects, hasMore := pagination.Paginate(resp.Records, offset, limit) objects := make([]Object, 0, len(paginatedObjects)) for _, record := range paginatedObjects { - icon := a.getIconFromEmojiOrImage(record.Fields["iconEmoji"].GetStringValue(), record.Fields["iconImage"].GetStringValue()) + icon := utils.GetIconFromEmojiOrImage(a.accountInfo, record.Fields["iconEmoji"].GetStringValue(), record.Fields["iconImage"].GetStringValue()) objectTypeName, statusCode, errorMessage := a.resolveTypeToName(spaceId, record.Fields["type"].GetStringValue()) if statusCode != http.StatusOK { c.JSON(statusCode, gin.H{"message": errorMessage}) @@ -374,7 +171,7 @@ func (a *ApiServer) getObjectsHandler(c *gin.Context) { objects = append(objects, object) } - respondWithPagination(c, http.StatusOK, objects, len(resp.Records), offset, limit, hasMore) + pagination.RespondWithPagination(c, http.StatusOK, objects, len(resp.Records), offset, limit, hasMore) } // getObjectHandler retrieves a specific object in a space @@ -556,7 +353,7 @@ func (a *ApiServer) getObjectTypesHandler(c *gin.Context) { return } - paginatedTypes, hasMore := paginate(resp.Records, offset, limit) + paginatedTypes, hasMore := pagination.Paginate(resp.Records, offset, limit) objectTypes := make([]ObjectType, 0, len(paginatedTypes)) for _, record := range paginatedTypes { @@ -569,7 +366,7 @@ func (a *ApiServer) getObjectTypesHandler(c *gin.Context) { }) } - respondWithPagination(c, http.StatusOK, objectTypes, len(resp.Records), offset, limit, hasMore) + pagination.RespondWithPagination(c, http.StatusOK, objectTypes, len(resp.Records), offset, limit, hasMore) } // getObjectTypeTemplatesHandler retrieves a list of templates for a specific object type in a space @@ -649,7 +446,7 @@ func (a *ApiServer) getObjectTypeTemplatesHandler(c *gin.Context) { } // Finally, open each template and populate the response - paginatedTemplates, hasMore := paginate(templateIds, offset, limit) + paginatedTemplates, hasMore := pagination.Paginate(templateIds, offset, limit) templates := make([]ObjectTemplate, 0, len(paginatedTemplates)) for _, templateId := range paginatedTemplates { @@ -671,7 +468,7 @@ func (a *ApiServer) getObjectTypeTemplatesHandler(c *gin.Context) { }) } - respondWithPagination(c, http.StatusOK, templates, len(templateIds), offset, limit, hasMore) + pagination.RespondWithPagination(c, http.StatusOK, templates, len(templateIds), offset, limit, hasMore) } // searchHandler searches and retrieves objects across all the spaces @@ -796,7 +593,7 @@ func (a *ApiServer) searchHandler(c *gin.Context) { } for _, record := range objectResp.Records { - icon := a.getIconFromEmojiOrImage(record.Fields["iconEmoji"].GetStringValue(), record.Fields["iconImage"].GetStringValue()) + icon := utils.GetIconFromEmojiOrImage(a.accountInfo, record.Fields["iconEmoji"].GetStringValue(), record.Fields["iconImage"].GetStringValue()) objectTypeName, statusCode, errorMessage := a.resolveTypeToName(spaceId, record.Fields["type"].GetStringValue()) if statusCode != http.StatusOK { c.JSON(statusCode, gin.H{"message": errorMessage}) @@ -828,190 +625,7 @@ func (a *ApiServer) searchHandler(c *gin.Context) { }) // TODO: solve global pagination vs per space pagination - paginatedResults, hasMore := paginate(searchResults, offset, limit) + paginatedResults, hasMore := pagination.Paginate(searchResults, offset, limit) - respondWithPagination(c, http.StatusOK, paginatedResults, len(searchResults), offset, limit, hasMore) -} - -// getChatMessagesHandler retrieves last chat messages -// -// @Summary Retrieve last chat messages -// @Tags chat -// @Accept json -// @Produce json -// @Param space_id path string true "The ID of the space" -// @Param offset query int false "The number of items to skip before starting to collect the result set" -// @Param limit query int false "The number of items to return" default(100) -// @Success 200 {object} map[string][]ChatMessage "List of chat messages" -// @Failure 502 {object} ServerError "Internal server error" -// @Router /v1/spaces/{space_id}/chat/messages [get] -func (a *ApiServer) getChatMessagesHandler(c *gin.Context) { - spaceId := c.Param("space_id") - // TODO: implement offset - // offset := c.GetInt("offset") - limit := c.GetInt("limit") - - chatId, statusCode, errorMessage := a.getChatIdForSpace(spaceId) - if statusCode != http.StatusOK { - c.JSON(statusCode, gin.H{"message": errorMessage}) - return - } - - lastMessages := a.mw.ChatSubscribeLastMessages(c.Request.Context(), &pb.RpcChatSubscribeLastMessagesRequest{ - ChatObjectId: chatId, - Limit: int32(limit), - }) - - if lastMessages.Error.Code != pb.RpcChatSubscribeLastMessagesResponseError_NULL { - c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to retrieve last messages."}) - } - - messages := make([]ChatMessage, 0, len(lastMessages.Messages)) - for _, message := range lastMessages.Messages { - - attachments := make([]Attachment, 0, len(message.Attachments)) - for _, attachment := range message.Attachments { - target := attachment.Target - if attachment.Type != model.ChatMessageAttachment_LINK { - target = a.getGatewayURLForMedia(attachment.Target, false) - } - attachments = append(attachments, Attachment{ - Target: target, - Type: model.ChatMessageAttachmentAttachmentType_name[int32(attachment.Type)], - }) - } - - messages = append(messages, ChatMessage{ - Type: "chat_message", - Id: message.Id, - Creator: message.Creator, - CreatedAt: message.CreatedAt, - ReplyToMessageId: message.ReplyToMessageId, - Message: MessageContent{ - Text: message.Message.Text, - // TODO: params - // Style: nil, - // Marks: nil, - }, - Attachments: attachments, - Reactions: Reactions{ - ReactionsMap: func() map[string]IdentityList { - reactionsMap := make(map[string]IdentityList) - for emoji, ids := range message.Reactions.Reactions { - reactionsMap[emoji] = IdentityList{Ids: ids.Ids} - } - return reactionsMap - }(), - }, - }) - } - - c.JSON(http.StatusOK, gin.H{"chatId": chatId, "messages": messages}) -} - -// getChatMessageHandler retrieves a specific chat message by message_id -// -// @Summary Retrieve a specific chat message -// @Tags chat -// @Accept json -// @Produce json -// @Param space_id path string true "The ID of the space" -// @Param message_id path string true "Message ID" -// @Success 200 {object} ChatMessage "Chat message" -// @Failure 404 {object} NotFoundError "Message not found" -// @Failure 502 {object} ServerError "Internal server error" -// @Router /v1/spaces/{space_id}/chat/messages/{message_id} [get] -func (a *ApiServer) getChatMessageHandler(c *gin.Context) { - // TODO: Implement logic to retrieve a specific chat message by message_id - - c.JSON(http.StatusNotImplemented, gin.H{"message": "Not implemented yet"}) -} - -// addChatMessageHandler adds a new chat message to chat -// -// @Summary Add a new chat message -// @Tags chat -// @Accept json -// @Produce json -// @Param space_id path string true "The ID of the space" -// @Param message body ChatMessage true "Chat message" -// @Success 201 {object} ChatMessage "Created chat message" -// @Failure 400 {object} ValidationError "Invalid input" -// @Failure 502 {object} ServerError "Internal server error" -// @Router /v1/spaces/{space_id}/chat/messages [post] -func (a *ApiServer) addChatMessageHandler(c *gin.Context) { - spaceId := c.Param("space_id") - - request := AddMessageRequest{} - if err := c.BindJSON(&request); err != nil { - c.JSON(http.StatusBadRequest, gin.H{"message": "Invalid JSON"}) - return - } - - chatId, statusCode, errorMessage := a.getChatIdForSpace(spaceId) - if statusCode != http.StatusOK { - c.JSON(statusCode, gin.H{"message": errorMessage}) - return - } - - resp := a.mw.ChatAddMessage(c.Request.Context(), &pb.RpcChatAddMessageRequest{ - ChatObjectId: chatId, - Message: &model.ChatMessage{ - Id: "", - OrderId: "", - Creator: "", - CreatedAt: 0, - ModifiedAt: 0, - ReplyToMessageId: "", - Message: &model.ChatMessageMessageContent{ - Text: request.Text, - // TODO: param - // Style: request.Style, - }, - }, - }) - - if resp.Error.Code != pb.RpcChatAddMessageResponseError_NULL { - c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to create message."}) - } - - c.JSON(http.StatusOK, gin.H{"messageId": resp.MessageId}) -} - -// updateChatMessageHandler updates an existing chat message by message_id -// -// @Summary Update an existing chat message -// @Tags chat -// @Accept json -// @Produce json -// @Param space_id path string true "The ID of the space" -// @Param message_id path string true "Message ID" -// @Param message body ChatMessage true "Chat message" -// @Success 200 {object} ChatMessage "Updated chat message" -// @Failure 400 {object} ValidationError "Invalid input" -// @Failure 404 {object} NotFoundError "Message not found" -// @Failure 502 {object} ServerError "Internal server error" -// @Router /v1/spaces/{space_id}/chat/messages/{message_id} [put] -func (a *ApiServer) updateChatMessageHandler(c *gin.Context) { - // TODO: Implement logic to update an existing chat message by message_id - - c.JSON(http.StatusNotImplemented, gin.H{"message": "Not implemented yet"}) -} - -// deleteChatMessageHandler deletes a chat message by message_id -// -// @Summary Delete a chat message -// @Tags chat -// @Accept json -// @Produce json -// @Param space_id path string true "The ID of the space" -// @Param message_id path string true "Message ID" -// @Success 204 "Message deleted successfully" -// @Failure 404 {object} NotFoundError "Message not found" -// @Failure 502 {object} ServerError "Internal server error" -// @Router /v1/spaces/{space_id}/chat/messages/{message_id} [delete] -func (a *ApiServer) deleteChatMessageHandler(c *gin.Context) { - // TODO: Implement logic to delete a chat message by message_id - - c.JSON(http.StatusNotImplemented, gin.H{"message": "Not implemented yet"}) + pagination.RespondWithPagination(c, http.StatusOK, paginatedResults, len(searchResults), offset, limit, hasMore) } diff --git a/cmd/api/helper.go b/cmd/api/helper.go index 8bd9839ca..1c4db84d8 100644 --- a/cmd/api/helper.go +++ b/cmd/api/helper.go @@ -2,27 +2,16 @@ package api import ( "context" - "fmt" "net/http" "strings" - "github.com/gin-gonic/gin" - + "github.com/anyproto/anytype-heart/cmd/api/utils" "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/pkg/lib/bundle" "github.com/anyproto/anytype-heart/pkg/lib/pb/model" "github.com/anyproto/anytype-heart/util/pbtypes" ) -// getGatewayURLForMedia returns the URL of file gateway for the media object with the given ID -func (a *ApiServer) getGatewayURLForMedia(objectId string, isIcon bool) string { - widthParam := "" - if isIcon { - widthParam = "?width=100" - } - return fmt.Sprintf("%s/image/%s%s", a.accountInfo.GatewayUrl, objectId, widthParam) -} - // resolveTypeToName resolves the type ID to the name of the type, e.g. "ot-page" to "Page" or "bafyreigyb6l5szohs32ts26ku2j42yd65e6hqy2u3gtzgdwqv6hzftsetu" to "Custom Type" func (a *ApiServer) resolveTypeToName(spaceId string, typeId string) (typeName string, statusCode int, errorMessage string) { // Can't look up preinstalled types based on relation key, therefore need to use unique key @@ -54,71 +43,6 @@ func (a *ApiServer) resolveTypeToName(spaceId string, typeId string) (typeName s return resp.Records[0].Fields["name"].GetStringValue(), http.StatusOK, "" } -// getChatIdForSpace returns the chat ID for the space with the given ID -func (a *ApiServer) getChatIdForSpace(spaceId string) (chatId string, statusCode int, errorMessage string) { - workspace, statusCode, errorMessage := a.getWorkspaceInfo(spaceId) - if statusCode != http.StatusOK { - return "", statusCode, errorMessage - } - - resp := a.mw.ObjectShow(context.Background(), &pb.RpcObjectShowRequest{ - SpaceId: spaceId, - ObjectId: workspace.WorkspaceObjectId, - }) - - if resp.Error.Code != pb.RpcObjectShowResponseError_NULL { - return "", http.StatusInternalServerError, "Failed to open workspace object." - } - - if !resp.ObjectView.Details[0].Details.Fields["hasChat"].GetBoolValue() { - return "", http.StatusNotFound, "Chat not found." - } - - return resp.ObjectView.Details[0].Details.Fields["chatId"].GetStringValue(), http.StatusOK, "" -} - -// getWorkspaceInfo returns the workspace info for the space with the given ID -func (a *ApiServer) getWorkspaceInfo(spaceId string) (space Space, statusCode int, errorMessage string) { - workspaceResponse := a.mw.WorkspaceOpen(context.Background(), &pb.RpcWorkspaceOpenRequest{ - SpaceId: spaceId, - WithChat: true, - }) - - if workspaceResponse.Error.Code != pb.RpcWorkspaceOpenResponseError_NULL { - return Space{}, http.StatusInternalServerError, "Failed to open workspace." - } - - return Space{ - Type: "space", - Id: spaceId, - HomeObjectId: workspaceResponse.Info.HomeObjectId, - ArchiveObjectId: workspaceResponse.Info.ArchiveObjectId, - ProfileObjectId: workspaceResponse.Info.ProfileObjectId, - MarketplaceWorkspaceId: workspaceResponse.Info.MarketplaceWorkspaceId, - WorkspaceObjectId: workspaceResponse.Info.WorkspaceObjectId, - DeviceId: workspaceResponse.Info.DeviceId, - AccountSpaceId: workspaceResponse.Info.AccountSpaceId, - WidgetsId: workspaceResponse.Info.WidgetsId, - SpaceViewId: workspaceResponse.Info.SpaceViewId, - TechSpaceId: workspaceResponse.Info.TechSpaceId, - Timezone: workspaceResponse.Info.TimeZone, - NetworkId: workspaceResponse.Info.NetworkId, - }, http.StatusOK, "" -} - -// getIconFromEmojiOrImage returns the icon to use for the object, which can be either an emoji or an image url -func (a *ApiServer) getIconFromEmojiOrImage(iconEmoji string, iconImage string) string { - if iconEmoji != "" { - return iconEmoji - } - - if iconImage != "" { - return a.getGatewayURLForMedia(iconImage, true) - } - - return "" -} - // getBlocks returns the blocks of the object func (a *ApiServer) getBlocks(resp *pb.RpcObjectShowResponse) []Block { blocks := []Block{} @@ -134,7 +58,7 @@ func (a *ApiServer) getBlocks(resp *pb.RpcObjectShowResponse) []Block { Style: model.BlockContentTextStyle_name[int32(content.Text.Style)], Checked: content.Text.Checked, Color: content.Text.Color, - Icon: a.getIconFromEmojiOrImage(content.Text.IconEmoji, content.Text.IconImage), + Icon: utils.GetIconFromEmojiOrImage(a.accountInfo, content.Text.IconEmoji, content.Text.IconImage), } case *model.BlockContentOfFile: file = &File{ @@ -241,34 +165,3 @@ func (a *ApiServer) getTags(resp *pb.RpcObjectShowResponse) []Tag { } return tags } - -// respondWithPagination returns a json response with the paginated data and corresponding metadata -func respondWithPagination[T any](c *gin.Context, statusCode int, data []T, total, offset, limit int, hasMore bool) { - c.JSON(statusCode, PaginatedResponse[T]{ - Data: data, - Pagination: PaginationMeta{ - Total: total, - Offset: offset, - Limit: limit, - HasMore: hasMore, - }, - }) -} - -// paginate paginates the given records based on the offset and limit -func paginate[T any](records []T, offset, limit int) ([]T, bool) { - total := len(records) - start := offset - end := offset + limit - - if start > total { - start = total - } - if end > total { - end = total - } - - paginated := records[start:end] - hasMore := end < total - return paginated, hasMore -} diff --git a/cmd/api/main.go b/cmd/api/main.go index e0e26baa9..b443cc27c 100644 --- a/cmd/api/main.go +++ b/cmd/api/main.go @@ -13,6 +13,7 @@ import ( "github.com/webstradev/gin-pagination/v2/pkg/pagination" _ "github.com/anyproto/anytype-heart/cmd/api/docs" + "github.com/anyproto/anytype-heart/cmd/api/space" "github.com/anyproto/anytype-heart/core" "github.com/anyproto/anytype-heart/pb/service" "github.com/anyproto/anytype-heart/pkg/lib/pb/model" @@ -29,8 +30,8 @@ type ApiServer struct { router *gin.Engine server *http.Server - // init after app start - accountInfo *model.AccountInfo + accountInfo *model.AccountInfo + spaceService *space.SpaceService } // TODO: User represents an authenticated user with permissions @@ -41,9 +42,10 @@ type User struct { func newApiServer(mw service.ClientCommandsServer, mwInternal core.MiddlewareInternal) *ApiServer { a := &ApiServer{ - mw: mw, - mwInternal: mwInternal, - router: gin.Default(), + mw: mw, + mwInternal: mwInternal, + router: gin.Default(), + spaceService: space.NewService(mw), } a.server = &http.Server{ @@ -100,8 +102,8 @@ func RunApiServer(ctx context.Context, mw service.ClientCommandsServer, mwIntern // readOnly.Use(a.AuthMiddleware()) // readOnly.Use(a.PermissionMiddleware("read-only")) { - readOnly.GET("/spaces", paginator, a.getSpacesHandler) - readOnly.GET("/spaces/:space_id/members", paginator, a.getMembersHandler) + readOnly.GET("/spaces", paginator, space.GetSpacesHandler(a.spaceService)) + readOnly.GET("/spaces/:space_id/members", paginator, space.GetMembersHandler(a.spaceService)) readOnly.GET("/spaces/:space_id/objects", paginator, a.getObjectsHandler) readOnly.GET("/spaces/:space_id/objects/:object_id", a.getObjectHandler) readOnly.GET("/spaces/:space_id/objectTypes", paginator, a.getObjectTypesHandler) @@ -114,23 +116,11 @@ func RunApiServer(ctx context.Context, mw service.ClientCommandsServer, mwIntern // readWrite.Use(a.AuthMiddleware()) // readWrite.Use(a.PermissionMiddleware("read-write")) { - readWrite.POST("/spaces", a.createSpaceHandler) + // readWrite.POST("/spaces", a.createSpaceHandler) readWrite.POST("/spaces/:space_id/objects", a.createObjectHandler) readWrite.PUT("/spaces/:space_id/objects/:object_id", a.updateObjectHandler) } - // Chat routes - chat := a.router.Group("/v1/spaces/:space_id/chat") - // chat.Use(a.AuthMiddleware()) - // chat.Use(a.PermissionMiddleware("read-write")) - { - chat.GET("/messages", paginator, a.getChatMessagesHandler) - chat.GET("/messages/:message_id", a.getChatMessageHandler) - chat.POST("/messages", a.addChatMessageHandler) - chat.PUT("/messages/:message_id", a.updateChatMessageHandler) - chat.DELETE("/messages/:message_id", a.deleteChatMessageHandler) - } - // Start the HTTP server go func() { if err := a.server.ListenAndServe(); err != nil && err != http.ErrServerClosed { diff --git a/cmd/api/middleware.go b/cmd/api/middleware.go index b4fa0aa7f..882d659a4 100644 --- a/cmd/api/middleware.go +++ b/cmd/api/middleware.go @@ -27,6 +27,7 @@ func (a *ApiServer) initAccountInfo() gin.HandlerFunc { } a.accountInfo = accInfo + a.spaceService.AccountInfo = accInfo c.Next() } } diff --git a/cmd/api/pagination/model.go b/cmd/api/pagination/model.go new file mode 100644 index 000000000..06539ce63 --- /dev/null +++ b/cmd/api/pagination/model.go @@ -0,0 +1,13 @@ +package pagination + +type PaginationMeta struct { + Total int `json:"total" example:"1024"` // the total number of items available on that endpoint + Offset int `json:"offset" example:"0"` // the current offset + Limit int `json:"limit" example:"100"` // the current limit + HasMore bool `json:"has_more" example:"true"` // whether there are more items available +} + +type PaginatedResponse[T any] struct { + Data []T `json:"data"` + Pagination PaginationMeta `json:"pagination"` +} diff --git a/cmd/api/pagination/pagination.go b/cmd/api/pagination/pagination.go new file mode 100644 index 000000000..e648f470e --- /dev/null +++ b/cmd/api/pagination/pagination.go @@ -0,0 +1,39 @@ +package pagination + +import "github.com/gin-gonic/gin" + +type Service[T any] interface { + RespondWithPagination(c *gin.Context, statusCode int, data []T, total, offset, limit int, hasMore bool) + Paginate(records []T, offset, limit int) ([]T, bool) +} + +// RespondWithPagination returns a json response with the paginated data and corresponding metadata +func RespondWithPagination[T any](c *gin.Context, statusCode int, data []T, total, offset, limit int, hasMore bool) { + c.JSON(statusCode, PaginatedResponse[T]{ + Data: data, + Pagination: PaginationMeta{ + Total: total, + Offset: offset, + Limit: limit, + HasMore: hasMore, + }, + }) +} + +// Paginate paginates the given records based on the offset and limit +func Paginate[T any](records []T, offset, limit int) ([]T, bool) { + total := len(records) + start := offset + end := offset + limit + + if start > total { + start = total + } + if end > total { + end = total + } + + paginated := records[start:end] + hasMore := end < total + return paginated, hasMore +} diff --git a/cmd/api/schemas.go b/cmd/api/schemas.go index 33461598c..5ec8247f4 100644 --- a/cmd/api/schemas.go +++ b/cmd/api/schemas.go @@ -1,17 +1,5 @@ package api -type PaginationMeta struct { - Total int `json:"total" example:"1024"` // the total number of items available on that endpoint - Offset int `json:"offset" example:"0"` // the current offset - Limit int `json:"limit" example:"100"` // the current limit - HasMore bool `json:"has_more" example:"true"` // whether there are more items available -} - -type PaginatedResponse[T any] struct { - Data []T `json:"data"` - Pagination PaginationMeta `json:"pagination"` -} - type AuthDisplayCodeResponse struct { ChallengeId string `json:"challenge_id" example:"67647f5ecda913e9a2e11b26"` } @@ -21,40 +9,6 @@ type AuthTokenResponse struct { AppKey string `json:"app_key" example:""` } -type CreateSpaceResponse struct { - SpaceId string `json:"space_id" example:"bafyreigyfkt6rbv24sbv5aq2hko3bhmv5xxlf22b4bypdu6j7hnphm3psq.23me69r569oi1"` - Name string `json:"name" example:"Space Name"` -} - -type Space struct { - Type string `json:"type" example:"space"` - Id string `json:"id" example:"bafyreigyfkt6rbv24sbv5aq2hko3bhmv5xxlf22b4bypdu6j7hnphm3psq.23me69r569oi1"` - Name string `json:"name" example:"Space Name"` - Icon string `json:"icon" example:"http://127.0.0.1:31006/image/bafybeieptz5hvcy6txplcvphjbbh5yjc2zqhmihs3owkh5oab4ezauzqay?width=100"` - HomeObjectId string `json:"home_object_id" example:"bafyreie4qcl3wczb4cw5hrfyycikhjyh6oljdis3ewqrk5boaav3sbwqya"` - ArchiveObjectId string `json:"archive_object_id" example:"bafyreialsgoyflf3etjm3parzurivyaukzivwortf32b4twnlwpwocsrri"` - ProfileObjectId string `json:"profile_object_id" example:"bafyreiaxhwreshjqwndpwtdsu4mtihaqhhmlygqnyqpfyfwlqfq3rm3gw4"` - MarketplaceWorkspaceId string `json:"marketplace_workspace_id" example:"_anytype_marketplace"` - WorkspaceObjectId string `json:"workspace_object_id" example:"bafyreiapey2g6e6za4zfxvlgwdy4hbbfu676gmwrhnqvjbxvrchr7elr3y"` - DeviceId string `json:"device_id" example:"12D3KooWGZMJ4kQVyQVXaj7gJPZr3RZ2nvd9M2Eq2pprEoPih9WF"` - AccountSpaceId string `json:"account_space_id" example:"bafyreihpd2knon5wbljhtfeg3fcqtg3i2pomhhnigui6lrjmzcjzep7gcy.23me69r569oi1"` - WidgetsId string `json:"widgets_id" example:"bafyreialj7pceh53mifm5dixlho47ke4qjmsn2uh4wsjf7xq2pnlo5xfva"` - SpaceViewId string `json:"space_view_id" example:"bafyreigzv3vq7qwlrsin6njoduq727ssnhwd6bgyfj6nm4hv3pxoc2rxhy"` - TechSpaceId string `json:"tech_space_id" example:"bafyreif4xuwncrjl6jajt4zrrfnylpki476nv2w64yf42ovt7gia7oypii.23me69r569oi1"` - Timezone string `json:"timezone" example:""` - NetworkId string `json:"network_id" example:"N83gJpVd9MuNRZAuJLZ7LiMntTThhPc6DtzWWVjb1M3PouVU"` -} - -type Member struct { - Type string `json:"type" example:"member"` - Id string `json:"id" example:"_participant_bafyreigyfkt6rbv24sbv5aq2hko1bhmv5xxlf22b4bypdu6j7hnphm3psq_23me69r569oi1_AAjEaEwPF4nkEh9AWkqEnzcQ8HziBB4ETjiTpvRCQvWnSMDZ"` - Name string `json:"name" example:"John Doe"` - Icon string `json:"icon" example:"http://127.0.0.1:31006/image/bafybeieptz5hvcy6txplcvphjbbh5yjc2zqhmihs3owkh5oab4ezauzqay?width=100"` - Identity string `json:"identity" example:"AAjEaEwPF4nkEh7AWkqEnzcQ8HziGB4ETjiTpvRCQvWnSMDZ"` - GlobalName string `json:"global_name" example:"john.any"` - Role string `json:"role" enum:"Reader,Writer,Owner,NoPermission" example:"Owner"` -} - type Object struct { Type string `json:"type" example:"object"` Id string `json:"id" example:"bafyreie6n5l5nkbjal37su54cha4coy7qzuhrnajluzv5qd5jvtsrxkequ"` @@ -123,38 +77,6 @@ type ObjectTemplate struct { Icon string `json:"icon" example:"📄"` } -type ChatMessage struct { - Type string `json:"chat_message"` - Id string `json:"id"` // Unique message identifier - OrderId string `json:"order_id"` // Used for subscriptions - Creator string `json:"creator"` // Identifier for the message creator - CreatedAt int64 `json:"created_at"` - ModifiedAt int64 `json:"modified_at"` - ReplyToMessageId string `json:"reply_to_message_id"` // Identifier for the message being replied to - Message MessageContent `json:"message"` // Message content - Attachments []Attachment `json:"attachments"` // Attachments slice - Reactions Reactions `json:"reactions"` // Reactions to the message -} - -type MessageContent struct { - Text string `json:"text"` // The text content of the message part - Style string `json:"style"` // The style/type of the message part - Marks []string `json:"marks"` // List of marks applied to the text -} - -type Attachment struct { - Target string `json:"target"` // Identifier for the attachment object - Type string `json:"type"` // Type of attachment -} - -type Reactions struct { - ReactionsMap map[string]IdentityList `json:"reactions"` // Map of emoji to list of user IDs -} - -type IdentityList struct { - Ids []string `json:"ids"` // List of user IDs -} - type ServerError struct { Error struct { Message string `json:"message"` diff --git a/cmd/api/space/handler.go b/cmd/api/space/handler.go new file mode 100644 index 000000000..dd9ebb0bb --- /dev/null +++ b/cmd/api/space/handler.go @@ -0,0 +1,124 @@ +package space + +import ( + "errors" + "net/http" + + "github.com/gin-gonic/gin" + + "github.com/anyproto/anytype-heart/cmd/api/pagination" +) + +// GetSpacesHandler retrieves a list of spaces +// +// @Summary Retrieve a list of spaces +// @Tags spaces +// @Accept json +// @Produce json +// @Param offset query int false "The number of items to skip before starting to collect the result set" +// @Param limit query int false "The number of items to return" default(100) +// @Success 200 {object} pagination.PaginatedResponse[Space] "List of spaces" +// @Failure 403 {object} api.UnauthorizedError "Unauthorized" +// @Failure 404 {object} api.NotFoundError "Resource not found" +// @Failure 502 {object} api.ServerError "Internal server error" +// @Router /spaces [get] +func GetSpacesHandler(s *SpaceService) gin.HandlerFunc { + return func(c *gin.Context) { + offset := c.GetInt("offset") + limit := c.GetInt("limit") + + spaces, total, hasMore, err := s.ListSpaces(c.Request.Context(), offset, limit) + if err != nil { + switch { + case errors.Is(err, ErrNoSpacesFound): + c.JSON(http.StatusNotFound, gin.H{"message": "No spaces found."}) + return + case errors.Is(err, ErrFailedListSpaces): + c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to retrieve list of spaces."}) + return + case errors.Is(err, ErrFailedOpenWorkspace): + c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to open workspace."}) + default: + c.JSON(http.StatusInternalServerError, gin.H{"message": err.Error()}) + return + } + } + + pagination.RespondWithPagination(c, http.StatusOK, spaces, total, offset, limit, hasMore) + } +} + +// CreateSpaceHandler creates a new space +// +// @Summary Create a new Space +// @Tags spaces +// @Accept json +// @Produce json +// @Param name body string true "Space Name" +// @Success 200 {object} CreateSpaceResponse "Space created successfully" +// @Failure 403 {object} api.UnauthorizedError "Unauthorized" +// @Failure 502 {object} api.ServerError "Internal server error" +// @Router /spaces [post] +func CreateSpaceHandler(s *SpaceService) gin.HandlerFunc { + return func(c *gin.Context) { + nameRequest := CreateSpaceRequest{} + if err := c.BindJSON(&nameRequest); err != nil { + c.JSON(http.StatusBadRequest, gin.H{"message": "Invalid JSON"}) + return + } + name := nameRequest.Name + + space, err := s.CreateSpace(c.Request.Context(), name) + if err != nil { + switch { + case errors.Is(err, ErrFailedCreateSpace): + c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to create space."}) + return + default: + c.JSON(http.StatusInternalServerError, gin.H{"message": err.Error()}) + return + } + } + + c.JSON(http.StatusOK, CreateSpaceResponse{Space: space}) + } +} + +// GetMembersHandler retrieves a list of members for the specified space +// +// @Summary Retrieve a list of members for the specified Space +// @Tags spaces +// @Accept json +// @Produce json +// @Param space_id path string true "The ID of the space" +// @Param offset query int false "The number of items to skip before starting to collect the result set" +// @Param limit query int false "The number of items to return" default(100) +// @Success 200 {object} pagination.PaginatedResponse[Member] "List of members" +// @Failure 403 {object} api.UnauthorizedError "Unauthorized" +// @Failure 404 {object} api.NotFoundError "Resource not found" +// @Failure 502 {object} api.ServerError "Internal server error" +// @Router /spaces/{space_id}/members [get] +func GetMembersHandler(s *SpaceService) gin.HandlerFunc { + return func(c *gin.Context) { + spaceId := c.Param("space_id") + offset := c.GetInt("offset") + limit := c.GetInt("limit") + + members, total, hasMore, err := s.ListMembers(c.Request.Context(), spaceId, offset, limit) + if err != nil { + switch { + case errors.Is(err, ErrNoMembersFound): + c.JSON(http.StatusNotFound, gin.H{"message": "No members found."}) + return + case errors.Is(err, ErrFailedListMembers): + c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to retrieve list of members."}) + return + default: + c.JSON(http.StatusInternalServerError, gin.H{"message": err.Error()}) + return + } + } + + pagination.RespondWithPagination(c, http.StatusOK, members, total, offset, limit, hasMore) + } +} diff --git a/cmd/api/space/model.go b/cmd/api/space/model.go new file mode 100644 index 000000000..78ef51e45 --- /dev/null +++ b/cmd/api/space/model.go @@ -0,0 +1,41 @@ +package space + +type CreateSpaceRequest struct { + Name string `json:"name"` +} + +type CreateSpaceResponse struct { + Space Space `json:"space"` +} + +type Space struct { + Type string `json:"type" example:"space"` + Id string `json:"id" example:"bafyreigyfkt6rbv24sbv5aq2hko3bhmv5xxlf22b4bypdu6j7hnphm3psq.23me69r569oi1"` + Name string `json:"name" example:"Space Name"` + Icon string `json:"icon" example:"http://127.0.0.1:31006/image/bafybeieptz5hvcy6txplcvphjbbh5yjc2zqhmihs3owkh5oab4ezauzqay?width=100"` + HomeObjectId string `json:"home_object_id" example:"bafyreie4qcl3wczb4cw5hrfyycikhjyh6oljdis3ewqrk5boaav3sbwqya"` + ArchiveObjectId string `json:"archive_object_id" example:"bafyreialsgoyflf3etjm3parzurivyaukzivwortf32b4twnlwpwocsrri"` + ProfileObjectId string `json:"profile_object_id" example:"bafyreiaxhwreshjqwndpwtdsu4mtihaqhhmlygqnyqpfyfwlqfq3rm3gw4"` + MarketplaceWorkspaceId string `json:"marketplace_workspace_id" example:"_anytype_marketplace"` + WorkspaceObjectId string `json:"workspace_object_id" example:"bafyreiapey2g6e6za4zfxvlgwdy4hbbfu676gmwrhnqvjbxvrchr7elr3y"` + DeviceId string `json:"device_id" example:"12D3KooWGZMJ4kQVyQVXaj7gJPZr3RZ2nvd9M2Eq2pprEoPih9WF"` + AccountSpaceId string `json:"account_space_id" example:"bafyreihpd2knon5wbljhtfeg3fcqtg3i2pomhhnigui6lrjmzcjzep7gcy.23me69r569oi1"` + WidgetsId string `json:"widgets_id" example:"bafyreialj7pceh53mifm5dixlho47ke4qjmsn2uh4wsjf7xq2pnlo5xfva"` + SpaceViewId string `json:"space_view_id" example:"bafyreigzv3vq7qwlrsin6njoduq727ssnhwd6bgyfj6nm4hv3pxoc2rxhy"` + TechSpaceId string `json:"tech_space_id" example:"bafyreif4xuwncrjl6jajt4zrrfnylpki476nv2w64yf42ovt7gia7oypii.23me69r569oi1"` + GatewayUrl string `json:"gateway_url" example:"http://127.0.0.1:31006"` + LocalStoragePath string `json:"local_storage_path" example:"/Users/johndoe/Library/Application Support/Anytype/data/AAHTtt1wuQEnaYBNZ2Cyfcvs6DqPqxgn8VXDVk4avsUkMuha"` + Timezone string `json:"timezone" example:""` + AnalyticsId string `json:"analytics_id" example:"624aecdd-4797-4611-9d61-a2ae5f53cf1c"` + NetworkId string `json:"network_id" example:"N83gJpVd9MuNRZAuJLZ7LiMntTThhPc6DtzWWVjb1M3PouVU"` +} + +type Member struct { + Type string `json:"type" example:"member"` + Id string `json:"id" example:"_participant_bafyreigyfkt6rbv24sbv5aq2hko1bhmv5xxlf22b4bypdu6j7hnphm3psq_23me69r569oi1_AAjEaEwPF4nkEh9AWkqEnzcQ8HziBB4ETjiTpvRCQvWnSMDZ"` + Name string `json:"name" example:"John Doe"` + Icon string `json:"icon" example:"http://127.0.0.1:31006/image/bafybeieptz5hvcy6txplcvphjbbh5yjc2zqhmihs3owkh5oab4ezauzqay?width=100"` + Identity string `json:"identity" example:"AAjEaEwPF4nkEh7AWkqEnzcQ8HziGB4ETjiTpvRCQvWnSMDZ"` + GlobalName string `json:"global_name" example:"john.any"` + Role string `json:"role" enum:"Reader,Writer,Owner,NoPermission" example:"Owner"` +} diff --git a/cmd/api/space/service.go b/cmd/api/space/service.go new file mode 100644 index 000000000..9ba824149 --- /dev/null +++ b/cmd/api/space/service.go @@ -0,0 +1,214 @@ +package space + +import ( + "context" + "crypto/rand" + "errors" + "math/big" + + "github.com/gogo/protobuf/types" + + "github.com/anyproto/anytype-heart/cmd/api/pagination" + "github.com/anyproto/anytype-heart/cmd/api/utils" + "github.com/anyproto/anytype-heart/pb" + "github.com/anyproto/anytype-heart/pb/service" + "github.com/anyproto/anytype-heart/pkg/lib/bundle" + "github.com/anyproto/anytype-heart/pkg/lib/pb/model" + "github.com/anyproto/anytype-heart/util/pbtypes" +) + +var ( + ErrNoSpacesFound = errors.New("no spaces found") + ErrFailedListSpaces = errors.New("failed to retrieve list of spaces") + ErrFailedOpenWorkspace = errors.New("failed to open workspace") + ErrFailedGenerateRandomIcon = errors.New("failed to generate random icon") + ErrFailedCreateSpace = errors.New("failed to create space") + ErrNoMembersFound = errors.New("no members found") + ErrFailedListMembers = errors.New("failed to retrieve list of members") +) + +type Service interface { + ListSpaces(ctx context.Context) ([]Space, error) + CreateSpace(ctx context.Context, name string) (Space, error) +} + +type SpaceService struct { + mw service.ClientCommandsServer + AccountInfo *model.AccountInfo +} + +func NewService(mw service.ClientCommandsServer) *SpaceService { + return &SpaceService{mw: mw} +} + +func (s *SpaceService) ListSpaces(ctx context.Context, offset int, limit int) (spaces []Space, total int, hasMore bool, err error) { + resp := s.mw.ObjectSearch(ctx, &pb.RpcObjectSearchRequest{ + SpaceId: s.AccountInfo.TechSpaceId, + Filters: []*model.BlockContentDataviewFilter{ + { + RelationKey: bundle.RelationKeyLayout.String(), + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.Int64(int64(model.ObjectType_spaceView)), + }, + { + RelationKey: bundle.RelationKeySpaceLocalStatus.String(), + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.Int64(int64(model.SpaceStatus_Ok)), + }, + { + RelationKey: bundle.RelationKeySpaceRemoteStatus.String(), + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.Int64(int64(model.SpaceStatus_Ok)), + }, + }, + Sorts: []*model.BlockContentDataviewSort{ + { + RelationKey: "spaceOrder", + Type: model.BlockContentDataviewSort_Asc, + NoCollate: true, + EmptyPlacement: model.BlockContentDataviewSort_End, + }, + }, + Keys: []string{"targetSpaceId", "name", "iconEmoji", "iconImage"}, + }) + + if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { + return nil, 0, false, ErrFailedListSpaces + } + + if len(resp.Records) == 0 { + return nil, 0, false, ErrNoSpacesFound + } + + total = len(resp.Records) + paginatedRecords, hasMore := pagination.Paginate(resp.Records, offset, limit) + spaces = make([]Space, 0, len(paginatedRecords)) + + for _, record := range paginatedRecords { + workspace, err := s.getWorkspaceInfo(record.Fields["targetSpaceId"].GetStringValue()) + if err != nil { + return nil, 0, false, err + } + + // TODO: name and icon are only returned here; fix that + workspace.Name = record.Fields["name"].GetStringValue() + workspace.Icon = utils.GetIconFromEmojiOrImage(s.AccountInfo, record.Fields["iconEmoji"].GetStringValue(), record.Fields["iconImage"].GetStringValue()) + + spaces = append(spaces, workspace) + } + + return spaces, total, hasMore, nil +} + +func (s *SpaceService) CreateSpace(ctx context.Context, name string) (Space, error) { + iconOption, err := rand.Int(rand.Reader, big.NewInt(13)) + if err != nil { + return Space{}, ErrFailedGenerateRandomIcon + } + + // Create new workspace with a random icon and import default use case + resp := s.mw.WorkspaceCreate(ctx, &pb.RpcWorkspaceCreateRequest{ + Details: &types.Struct{ + Fields: map[string]*types.Value{ + "iconOption": pbtypes.Float64(float64(iconOption.Int64())), + "name": pbtypes.String(name), + "spaceDashboardId": pbtypes.String("lastOpened"), + }, + }, + UseCase: pb.RpcObjectImportUseCaseRequest_GET_STARTED, + WithChat: true, + }) + + if resp.Error.Code != pb.RpcWorkspaceCreateResponseError_NULL { + return Space{}, ErrFailedCreateSpace + } + + return s.getWorkspaceInfo(resp.SpaceId) +} + +func (s *SpaceService) ListMembers(ctx context.Context, spaceId string, offset int, limit int) (members []Member, total int, hasMore bool, err error) { + resp := s.mw.ObjectSearch(ctx, &pb.RpcObjectSearchRequest{ + SpaceId: spaceId, + Filters: []*model.BlockContentDataviewFilter{ + { + RelationKey: bundle.RelationKeyLayout.String(), + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.Int64(int64(model.ObjectType_participant)), + }, + { + RelationKey: bundle.RelationKeyParticipantStatus.String(), + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.Int64(int64(model.ParticipantStatus_Active)), + }, + }, + Sorts: []*model.BlockContentDataviewSort{ + { + RelationKey: "name", + Type: model.BlockContentDataviewSort_Asc, + }, + }, + Keys: []string{"id", "name", "iconEmoji", "iconImage", "identity", "globalName", "participantPermissions"}, + }) + + if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { + return nil, 0, false, ErrFailedListMembers + } + + if len(resp.Records) == 0 { + return nil, 0, false, ErrNoMembersFound + } + + total = len(resp.Records) + paginatedMembers, hasMore := pagination.Paginate(resp.Records, offset, limit) + members = make([]Member, 0, len(paginatedMembers)) + + for _, record := range paginatedMembers { + icon := utils.GetIconFromEmojiOrImage(s.AccountInfo, record.Fields["iconEmoji"].GetStringValue(), record.Fields["iconImage"].GetStringValue()) + + member := Member{ + Type: "space_member", + Id: record.Fields["id"].GetStringValue(), + Name: record.Fields["name"].GetStringValue(), + Icon: icon, + Identity: record.Fields["identity"].GetStringValue(), + GlobalName: record.Fields["globalName"].GetStringValue(), + Role: model.ParticipantPermissions_name[int32(record.Fields["participantPermissions"].GetNumberValue())], + } + + members = append(members, member) + } + + return members, total, hasMore, nil +} + +// getWorkspaceInfo returns the workspace info for the space with the given ID +func (s *SpaceService) getWorkspaceInfo(spaceId string) (space Space, err error) { + workspaceResponse := s.mw.WorkspaceOpen(context.Background(), &pb.RpcWorkspaceOpenRequest{ + SpaceId: spaceId, + WithChat: true, + }) + + if workspaceResponse.Error.Code != pb.RpcWorkspaceOpenResponseError_NULL { + return Space{}, ErrFailedOpenWorkspace + } + + return Space{ + Type: "space", + Id: spaceId, + HomeObjectId: workspaceResponse.Info.HomeObjectId, + ArchiveObjectId: workspaceResponse.Info.ArchiveObjectId, + ProfileObjectId: workspaceResponse.Info.ProfileObjectId, + MarketplaceWorkspaceId: workspaceResponse.Info.MarketplaceWorkspaceId, + WorkspaceObjectId: workspaceResponse.Info.WorkspaceObjectId, + DeviceId: workspaceResponse.Info.DeviceId, + AccountSpaceId: workspaceResponse.Info.AccountSpaceId, + WidgetsId: workspaceResponse.Info.WidgetsId, + SpaceViewId: workspaceResponse.Info.SpaceViewId, + TechSpaceId: workspaceResponse.Info.TechSpaceId, + GatewayUrl: workspaceResponse.Info.GatewayUrl, + LocalStoragePath: workspaceResponse.Info.LocalStoragePath, + Timezone: workspaceResponse.Info.TimeZone, + AnalyticsId: workspaceResponse.Info.AnalyticsId, + NetworkId: workspaceResponse.Info.NetworkId, + }, nil +} diff --git a/cmd/api/space/service_test.go b/cmd/api/space/service_test.go new file mode 100644 index 000000000..0ab45fdad --- /dev/null +++ b/cmd/api/space/service_test.go @@ -0,0 +1,312 @@ +package space + +import ( + "regexp" + "testing" + + "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" + + "github.com/gogo/protobuf/types" + + "github.com/anyproto/anytype-heart/pb" + "github.com/anyproto/anytype-heart/pb/service/mock_service" + "github.com/anyproto/anytype-heart/pkg/lib/bundle" + "github.com/anyproto/anytype-heart/pkg/lib/pb/model" + "github.com/anyproto/anytype-heart/util/pbtypes" +) + +const ( + offset = 0 + limit = 100 + techSpaceId = "tech-space-id" + gatewayUrl = "http://localhost:31006" + iconImage = "bafyreialsgoyflf3etjm3parzurivyaukzivwortf32b4twnlwpwocsrri" +) + +type fixture struct { + *SpaceService + mwMock *mock_service.MockClientCommandsServer +} + +func newFixture(t *testing.T) *fixture { + mw := mock_service.NewMockClientCommandsServer(t) + spaceService := &SpaceService{mw: mw, AccountInfo: &model.AccountInfo{TechSpaceId: techSpaceId, GatewayUrl: gatewayUrl}} + + return &fixture{ + SpaceService: spaceService, + mwMock: mw, + } +} + +func TestSpaceService_ListSpaces(t *testing.T) { + t.Run("successful retrieval of spaces", func(t *testing.T) { + // given + fx := newFixture(t) + + fx.mwMock.On("ObjectSearch", mock.Anything, &pb.RpcObjectSearchRequest{ + SpaceId: techSpaceId, + Filters: []*model.BlockContentDataviewFilter{ + { + RelationKey: bundle.RelationKeyLayout.String(), + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.Int64(int64(model.ObjectType_spaceView)), + }, + { + RelationKey: bundle.RelationKeySpaceLocalStatus.String(), + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.Int64(int64(model.SpaceStatus_Ok)), + }, + { + RelationKey: bundle.RelationKeySpaceRemoteStatus.String(), + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.Int64(int64(model.SpaceStatus_Ok)), + }, + }, + Sorts: []*model.BlockContentDataviewSort{ + { + RelationKey: "spaceOrder", + Type: model.BlockContentDataviewSort_Asc, + NoCollate: true, + EmptyPlacement: model.BlockContentDataviewSort_End, + }, + }, + Keys: []string{"targetSpaceId", "name", "iconEmoji", "iconImage"}, + }).Return(&pb.RpcObjectSearchResponse{ + Records: []*types.Struct{ + { + Fields: map[string]*types.Value{ + "name": pbtypes.String("Another Workspace"), + "targetSpaceId": pbtypes.String("another-space-id"), + "iconEmoji": pbtypes.String(""), + "iconImage": pbtypes.String(iconImage), + }, + }, + { + Fields: map[string]*types.Value{ + "name": pbtypes.String("My Workspace"), + "targetSpaceId": pbtypes.String("my-space-id"), + "iconEmoji": pbtypes.String("🚀"), + "iconImage": pbtypes.String(""), + }, + }, + }, + Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, + }).Once() + + fx.mwMock.On("WorkspaceOpen", mock.Anything, mock.Anything).Return(&pb.RpcWorkspaceOpenResponse{ + Error: &pb.RpcWorkspaceOpenResponseError{Code: pb.RpcWorkspaceOpenResponseError_NULL}, + Info: &model.AccountInfo{ + HomeObjectId: "home-object-id", + ArchiveObjectId: "archive-object-id", + ProfileObjectId: "profile-object-id", + MarketplaceWorkspaceId: "marketplace-workspace-id", + WorkspaceObjectId: "workspace-object-id", + DeviceId: "device-id", + AccountSpaceId: "account-space-id", + WidgetsId: "widgets-id", + SpaceViewId: "space-view-id", + TechSpaceId: "tech-space-id", + GatewayUrl: "gateway-url", + LocalStoragePath: "local-storage-path", + TimeZone: "time-zone", + AnalyticsId: "analytics-id", + NetworkId: "network-id", + }, + }, nil).Twice() + + // when + spaces, total, hasMore, err := fx.ListSpaces(nil, offset, limit) + + // then + require.NoError(t, err) + require.Len(t, spaces, 2) + require.Equal(t, "Another Workspace", spaces[0].Name) + require.Equal(t, "another-space-id", spaces[0].Id) + require.Regexpf(t, regexp.MustCompile(gatewayUrl+`/image/`+iconImage), spaces[0].Icon, "Icon URL does not match") + require.Equal(t, "My Workspace", spaces[1].Name) + require.Equal(t, "my-space-id", spaces[1].Id) + require.Equal(t, "🚀", spaces[1].Icon) + require.Equal(t, 2, total) + require.False(t, hasMore) + }) + + t.Run("no spaces found", func(t *testing.T) { + // given + fx := newFixture(t) + + fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything). + Return(&pb.RpcObjectSearchResponse{ + Records: []*types.Struct{}, + Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, + }).Once() + + // when + spaces, total, hasMore, err := fx.ListSpaces(nil, offset, limit) + + // then + require.ErrorIs(t, err, ErrNoSpacesFound) + require.Len(t, spaces, 0) + require.Equal(t, 0, total) + require.False(t, hasMore) + }) + + t.Run("failed workspace open", func(t *testing.T) { + // given + fx := newFixture(t) + + fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything). + Return(&pb.RpcObjectSearchResponse{ + Records: []*types.Struct{ + { + Fields: map[string]*types.Value{ + "name": pbtypes.String("My Workspace"), + "targetSpaceId": pbtypes.String("my-space-id"), + "iconEmoji": pbtypes.String("🚀"), + "iconImage": pbtypes.String(""), + }, + }, + }, + Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, + }).Once() + + fx.mwMock.On("WorkspaceOpen", mock.Anything, mock.Anything). + Return(&pb.RpcWorkspaceOpenResponse{ + Error: &pb.RpcWorkspaceOpenResponseError{Code: pb.RpcWorkspaceOpenResponseError_UNKNOWN_ERROR}, + }, nil).Once() + + // when + spaces, total, hasMore, err := fx.ListSpaces(nil, offset, limit) + + // then + require.ErrorIs(t, err, ErrFailedOpenWorkspace) + require.Len(t, spaces, 0) + require.Equal(t, 0, total) + require.False(t, hasMore) + }) +} + +func TestSpaceService_CreateSpace(t *testing.T) { + t.Run("successful create space", func(t *testing.T) { + // given + fx := newFixture(t) + fx.mwMock.On("WorkspaceCreate", mock.Anything, mock.Anything). + Return(&pb.RpcWorkspaceCreateResponse{ + Error: &pb.RpcWorkspaceCreateResponseError{Code: pb.RpcWorkspaceCreateResponseError_NULL}, + SpaceId: "new-space-id", + }).Once() + + fx.mwMock.On("WorkspaceOpen", mock.Anything, mock.Anything).Return(&pb.RpcWorkspaceOpenResponse{ + Error: &pb.RpcWorkspaceOpenResponseError{Code: pb.RpcWorkspaceOpenResponseError_NULL}, + Info: &model.AccountInfo{ + HomeObjectId: "home-object-id", + ArchiveObjectId: "archive-object-id", + ProfileObjectId: "profile-object-id", + MarketplaceWorkspaceId: "marketplace-workspace-id", + WorkspaceObjectId: "workspace-object-id", + DeviceId: "device-id", + AccountSpaceId: "account-space-id", + WidgetsId: "widgets-id", + SpaceViewId: "space-view-id", + TechSpaceId: "tech-space-id", + GatewayUrl: "gateway-url", + LocalStoragePath: "local-storage-path", + TimeZone: "time-zone", + AnalyticsId: "analytics-id", + NetworkId: "network-id", + }, + }, nil).Once() + + // when + space, err := fx.CreateSpace(nil, "New Space") + + // then + require.NoError(t, err) + require.Equal(t, "new-space-id", space.Id) + }) + + t.Run("failed workspace creation", func(t *testing.T) { + // given + fx := newFixture(t) + fx.mwMock.On("WorkspaceCreate", mock.Anything, mock.Anything). + Return(&pb.RpcWorkspaceCreateResponse{ + Error: &pb.RpcWorkspaceCreateResponseError{Code: pb.RpcWorkspaceCreateResponseError_UNKNOWN_ERROR}, + }).Once() + + // when + space, err := fx.CreateSpace(nil, "New Space") + + // then + require.ErrorIs(t, err, ErrFailedCreateSpace) + require.Equal(t, Space{}, space) + }) +} + +func TestSpaceService_ListMembers(t *testing.T) { + t.Run("successfully get members", func(t *testing.T) { + // given + fx := newFixture(t) + + fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything). + Return(&pb.RpcObjectSearchResponse{ + Records: []*types.Struct{ + { + Fields: map[string]*types.Value{ + "id": pbtypes.String("member-1"), + "name": pbtypes.String("John Doe"), + "iconEmoji": pbtypes.String("👤"), + "identity": pbtypes.String("AAjEaEwPF4nkEh7AWkqEnzcQ8HziGB4ETjiTpvRCQvWnSMDZ"), + "globalName": pbtypes.String("john.any"), + }, + }, + { + Fields: map[string]*types.Value{ + "id": pbtypes.String("member-2"), + "name": pbtypes.String("Jane Doe"), + "iconImage": pbtypes.String(iconImage), + "identity": pbtypes.String("AAjLbEwPF4nkEh7AWkqEnzcQ8HziGB4ETjiTpvRCQvWnSMD4"), + "globalName": pbtypes.String("jane.any"), + }, + }, + }, + Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, + }).Once() + + // when + members, total, hasMore, err := fx.ListMembers(nil, "space-id", offset, limit) + + // then + require.NoError(t, err) + require.Len(t, members, 2) + require.Equal(t, "member-1", members[0].Id) + require.Equal(t, "John Doe", members[0].Name) + require.Equal(t, "👤", members[0].Icon) + require.Equal(t, "john.any", members[0].GlobalName) + require.Equal(t, "member-2", members[1].Id) + require.Equal(t, "Jane Doe", members[1].Name) + require.Regexpf(t, regexp.MustCompile(gatewayUrl+`/image/`+iconImage), members[1].Icon, "Icon URL does not match") + require.Equal(t, "jane.any", members[1].GlobalName) + require.Equal(t, 2, total) + require.False(t, hasMore) + }) + + t.Run("no members found", func(t *testing.T) { + // given + fx := newFixture(t) + + fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything). + Return(&pb.RpcObjectSearchResponse{ + Records: []*types.Struct{}, + Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, + }).Once() + + // when + members, total, hasMore, err := fx.ListMembers(nil, "space-id", offset, limit) + + // then + require.ErrorIs(t, err, ErrNoMembersFound) + require.Len(t, members, 0) + require.Equal(t, 0, total) + require.False(t, hasMore) + }) +} diff --git a/cmd/api/utils/utils.go b/cmd/api/utils/utils.go new file mode 100644 index 000000000..bd24f7e11 --- /dev/null +++ b/cmd/api/utils/utils.go @@ -0,0 +1,29 @@ +package utils + +import ( + "fmt" + + "github.com/anyproto/anytype-heart/pkg/lib/pb/model" +) + +// GetIconFromEmojiOrImage returns the icon to use for the object, which can be either an emoji or an image url +func GetIconFromEmojiOrImage(accountInfo *model.AccountInfo, iconEmoji string, iconImage string) string { + if iconEmoji != "" { + return iconEmoji + } + + if iconImage != "" { + return GetGatewayURLForMedia(accountInfo, iconImage, true) + } + + return "" +} + +// GetGatewayURLForMedia returns the URL of file gateway for the media object with the given ID +func GetGatewayURLForMedia(accountInfo *model.AccountInfo, objectId string, isIcon bool) string { + widthParam := "" + if isIcon { + widthParam = "?width=100" + } + return fmt.Sprintf("%s/image/%s%s", accountInfo.GatewayUrl, objectId, widthParam) +} From 5f7355f49613e73df66d37dfc9b55f4c0180941d Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Mon, 30 Dec 2024 20:30:07 +0100 Subject: [PATCH 083/279] GO-4459: Refactor into auth, object, search, utils --- cmd/api/auth/handler.go | 69 +++ cmd/api/auth/model.go | 10 + cmd/api/auth/service.go | 60 +++ cmd/api/docs/docs.go | 224 ++++---- cmd/api/docs/swagger.json | 224 ++++---- cmd/api/docs/swagger.yaml | 182 +++---- cmd/api/handlers.go | 630 ----------------------- cmd/api/main.go | 41 +- cmd/api/middleware.go | 2 + cmd/api/object/handler.go | 424 +++++++++++++++ cmd/api/{schemas.go => object/model.go} | 35 +- cmd/api/{helper.go => object/service.go} | 194 +++---- cmd/api/search/handler.go | 50 ++ cmd/api/search/service.go | 151 ++++++ cmd/api/space/handler.go | 80 ++- cmd/api/space/service.go | 6 +- cmd/api/util/error.go | 100 ++++ cmd/api/util/util.go | 72 +++ cmd/api/utils/utils.go | 29 -- 19 files changed, 1433 insertions(+), 1150 deletions(-) create mode 100644 cmd/api/auth/handler.go create mode 100644 cmd/api/auth/model.go create mode 100644 cmd/api/auth/service.go create mode 100644 cmd/api/object/handler.go rename cmd/api/{schemas.go => object/model.go} (78%) rename cmd/api/{helper.go => object/service.go} (61%) create mode 100644 cmd/api/search/handler.go create mode 100644 cmd/api/search/service.go create mode 100644 cmd/api/util/error.go create mode 100644 cmd/api/util/util.go delete mode 100644 cmd/api/utils/utils.go diff --git a/cmd/api/auth/handler.go b/cmd/api/auth/handler.go new file mode 100644 index 000000000..d3850ceea --- /dev/null +++ b/cmd/api/auth/handler.go @@ -0,0 +1,69 @@ +package auth + +import ( + "net/http" + + "github.com/gin-gonic/gin" + + "github.com/anyproto/anytype-heart/cmd/api/util" +) + +// AuthDisplayCodeHandler generates a new challenge and returns the challenge ID +// +// @Summary Open a modal window with a code in Anytype Desktop app +// @Tags auth +// @Accept json +// @Produce json +// @Success 200 {object} AuthDisplayCodeResponse "Challenge ID" +// @Failure 502 {object} util.ServerError "Internal server error" +// @Router /auth/displayCode [post] +func AuthDisplayCodeHandler(s *AuthService) gin.HandlerFunc { + return func(c *gin.Context) { + challengeId, err := s.GenerateNewChallenge(c.Request.Context(), "api-test") + code := util.MapErrorCode(err, util.ErrToCode(ErrFailedGenerateChallenge, http.StatusInternalServerError)) + + if code != http.StatusOK { + apiErr := util.CodeToAPIError(code, err.Error()) + c.JSON(code, apiErr) + return + } + + c.JSON(http.StatusOK, AuthDisplayCodeResponse{ChallengeId: challengeId}) + } +} + +// AuthTokenHandler retrieves an authentication token using a code and challenge ID +// +// @Summary Retrieve an authentication token using a code +// @Tags auth +// @Accept json +// @Produce json +// @Param code query string true "The code retrieved from Anytype Desktop app" +// @Param challenge_id query string true "The challenge ID" +// @Success 200 {object} AuthTokenResponse "Authentication token" +// @Failure 400 {object} util.ValidationError "Invalid input" +// @Failure 502 {object} util.ServerError "Internal server error" +// @Router /auth/token [get] +func AuthTokenHandler(s *AuthService) gin.HandlerFunc { + return func(c *gin.Context) { + challengeID := c.Query("challenge_id") + code := c.Query("code") + + sessionToken, appKey, err := s.SolveChallengeForToken(c.Request.Context(), challengeID, code) + errCode := util.MapErrorCode(err, + util.ErrToCode(ErrInvalidInput, http.StatusBadRequest), + util.ErrToCode(ErrorFailedAuthenticate, http.StatusInternalServerError), + ) + + if errCode != http.StatusOK { + apiErr := util.CodeToAPIError(errCode, err.Error()) + c.JSON(errCode, apiErr) + return + } + + c.JSON(http.StatusOK, AuthTokenResponse{ + SessionToken: sessionToken, + AppKey: appKey, + }) + } +} diff --git a/cmd/api/auth/model.go b/cmd/api/auth/model.go new file mode 100644 index 000000000..706d9e5cd --- /dev/null +++ b/cmd/api/auth/model.go @@ -0,0 +1,10 @@ +package auth + +type AuthDisplayCodeResponse struct { + ChallengeId string `json:"challenge_id" example:"67647f5ecda913e9a2e11b26"` +} + +type AuthTokenResponse struct { + SessionToken string `json:"session_token" example:""` + AppKey string `json:"app_key" example:""` +} diff --git a/cmd/api/auth/service.go b/cmd/api/auth/service.go new file mode 100644 index 000000000..22a21871b --- /dev/null +++ b/cmd/api/auth/service.go @@ -0,0 +1,60 @@ +package auth + +import ( + "context" + "errors" + + "github.com/anyproto/anytype-heart/pb" + "github.com/anyproto/anytype-heart/pb/service" +) + +var ( + ErrFailedGenerateChallenge = errors.New("failed to generate a new challenge") + ErrInvalidInput = errors.New("invalid input") + ErrorFailedAuthenticate = errors.New("failed to authenticate user") +) + +type Service interface { + GenerateNewChallenge(ctx context.Context, appName string) (string, error) + SolveChallengeForToken(ctx context.Context, challengeID, code string) (sessionToken, appKey string, err error) +} + +type AuthService struct { + mw service.ClientCommandsServer +} + +func NewService(mw service.ClientCommandsServer) *AuthService { + return &AuthService{mw: mw} +} + +// GenerateNewChallenge calls mw.AccountLocalLinkNewChallenge(...) +// and returns the challenge ID, or an error if it fails. +func (s *AuthService) GenerateNewChallenge(ctx context.Context, appName string) (string, error) { + resp := s.mw.AccountLocalLinkNewChallenge(ctx, &pb.RpcAccountLocalLinkNewChallengeRequest{AppName: "api-test"}) + + if resp.Error.Code != pb.RpcAccountLocalLinkNewChallengeResponseError_NULL { + return "", ErrFailedGenerateChallenge + } + + return resp.ChallengeId, nil +} + +// SolveChallengeForToken calls mw.AccountLocalLinkSolveChallenge(...) +// and returns the session token + app key, or an error if it fails. +func (s *AuthService) SolveChallengeForToken(ctx context.Context, challengeID, code string) (sessionToken, appKey string, err error) { + if challengeID == "" || code == "" { + return "", "", ErrInvalidInput + } + + // Call AccountLocalLinkSolveChallenge to retrieve session token and app key + resp := s.mw.AccountLocalLinkSolveChallenge(ctx, &pb.RpcAccountLocalLinkSolveChallengeRequest{ + ChallengeId: challengeID, + Answer: code, + }) + + if resp.Error.Code != pb.RpcAccountLocalLinkSolveChallengeResponseError_NULL { + return "", "", ErrorFailedAuthenticate + } + + return resp.SessionToken, resp.AppKey, nil +} diff --git a/cmd/api/docs/docs.go b/cmd/api/docs/docs.go index f2f8e8790..54924da3c 100644 --- a/cmd/api/docs/docs.go +++ b/cmd/api/docs/docs.go @@ -40,13 +40,13 @@ const docTemplate = `{ "200": { "description": "Challenge ID", "schema": { - "$ref": "#/definitions/api.AuthDisplayCodeResponse" + "$ref": "#/definitions/auth.AuthDisplayCodeResponse" } }, "502": { "description": "Internal server error", "schema": { - "$ref": "#/definitions/api.ServerError" + "$ref": "#/definitions/util.ServerError" } } } @@ -84,19 +84,19 @@ const docTemplate = `{ "200": { "description": "Authentication token", "schema": { - "$ref": "#/definitions/api.AuthTokenResponse" + "$ref": "#/definitions/auth.AuthTokenResponse" } }, "400": { "description": "Invalid input", "schema": { - "$ref": "#/definitions/api.ValidationError" + "$ref": "#/definitions/util.ValidationError" } }, "502": { "description": "Internal server error", "schema": { - "$ref": "#/definitions/api.ServerError" + "$ref": "#/definitions/util.ServerError" } } } @@ -123,7 +123,7 @@ const docTemplate = `{ }, { "type": "string", - "description": "Specify object type for search", + "description": "Specify object.Object type for search", "name": "object_type", "in": "query" }, @@ -149,7 +149,7 @@ const docTemplate = `{ "additionalProperties": { "type": "array", "items": { - "$ref": "#/definitions/api.Object" + "$ref": "#/definitions/object.Object" } } } @@ -157,13 +157,19 @@ const docTemplate = `{ "403": { "description": "Unauthorized", "schema": { - "$ref": "#/definitions/api.UnauthorizedError" + "$ref": "#/definitions/util.UnauthorizedError" + } + }, + "404": { + "description": "Resource not found", + "schema": { + "$ref": "#/definitions/util.NotFoundError" } }, "502": { "description": "Internal server error", "schema": { - "$ref": "#/definitions/api.ServerError" + "$ref": "#/definitions/util.ServerError" } } } @@ -206,19 +212,19 @@ const docTemplate = `{ "403": { "description": "Unauthorized", "schema": { - "$ref": "#/definitions/api.UnauthorizedError" + "$ref": "#/definitions/util.UnauthorizedError" } }, "404": { "description": "Resource not found", "schema": { - "$ref": "#/definitions/api.NotFoundError" + "$ref": "#/definitions/util.NotFoundError" } }, "502": { "description": "Internal server error", "schema": { - "$ref": "#/definitions/api.ServerError" + "$ref": "#/definitions/util.ServerError" } } } @@ -255,13 +261,13 @@ const docTemplate = `{ "403": { "description": "Unauthorized", "schema": { - "$ref": "#/definitions/api.UnauthorizedError" + "$ref": "#/definitions/util.UnauthorizedError" } }, "502": { "description": "Internal server error", "schema": { - "$ref": "#/definitions/api.ServerError" + "$ref": "#/definitions/util.ServerError" } } } @@ -311,19 +317,19 @@ const docTemplate = `{ "403": { "description": "Unauthorized", "schema": { - "$ref": "#/definitions/api.UnauthorizedError" + "$ref": "#/definitions/util.UnauthorizedError" } }, "404": { "description": "Resource not found", "schema": { - "$ref": "#/definitions/api.NotFoundError" + "$ref": "#/definitions/util.NotFoundError" } }, "502": { "description": "Internal server error", "schema": { - "$ref": "#/definitions/api.ServerError" + "$ref": "#/definitions/util.ServerError" } } } @@ -369,26 +375,26 @@ const docTemplate = `{ "schema": { "type": "object", "additionalProperties": { - "$ref": "#/definitions/api.ObjectType" + "$ref": "#/definitions/object.ObjectType" } } }, "403": { "description": "Unauthorized", "schema": { - "$ref": "#/definitions/api.UnauthorizedError" + "$ref": "#/definitions/util.UnauthorizedError" } }, "404": { "description": "Resource not found", "schema": { - "$ref": "#/definitions/api.NotFoundError" + "$ref": "#/definitions/util.NotFoundError" } }, "502": { "description": "Internal server error", "schema": { - "$ref": "#/definitions/api.ServerError" + "$ref": "#/definitions/util.ServerError" } } } @@ -443,7 +449,7 @@ const docTemplate = `{ "additionalProperties": { "type": "array", "items": { - "$ref": "#/definitions/api.ObjectTemplate" + "$ref": "#/definitions/object.ObjectTemplate" } } } @@ -451,19 +457,19 @@ const docTemplate = `{ "403": { "description": "Unauthorized", "schema": { - "$ref": "#/definitions/api.UnauthorizedError" + "$ref": "#/definitions/util.UnauthorizedError" } }, "404": { "description": "Resource not found", "schema": { - "$ref": "#/definitions/api.NotFoundError" + "$ref": "#/definitions/util.NotFoundError" } }, "502": { "description": "Internal server error", "schema": { - "$ref": "#/definitions/api.ServerError" + "$ref": "#/definitions/util.ServerError" } } } @@ -511,7 +517,7 @@ const docTemplate = `{ "additionalProperties": { "type": "array", "items": { - "$ref": "#/definitions/api.Object" + "$ref": "#/definitions/object.Object" } } } @@ -519,19 +525,19 @@ const docTemplate = `{ "403": { "description": "Unauthorized", "schema": { - "$ref": "#/definitions/api.UnauthorizedError" + "$ref": "#/definitions/util.UnauthorizedError" } }, "404": { "description": "Resource not found", "schema": { - "$ref": "#/definitions/api.NotFoundError" + "$ref": "#/definitions/util.NotFoundError" } }, "502": { "description": "Internal server error", "schema": { - "$ref": "#/definitions/api.ServerError" + "$ref": "#/definitions/util.ServerError" } } } @@ -572,19 +578,19 @@ const docTemplate = `{ "200": { "description": "The created object", "schema": { - "$ref": "#/definitions/api.Object" + "$ref": "#/definitions/object.Object" } }, "403": { "description": "Unauthorized", "schema": { - "$ref": "#/definitions/api.UnauthorizedError" + "$ref": "#/definitions/util.UnauthorizedError" } }, "502": { "description": "Internal server error", "schema": { - "$ref": "#/definitions/api.ServerError" + "$ref": "#/definitions/util.ServerError" } } } @@ -622,25 +628,25 @@ const docTemplate = `{ "200": { "description": "The requested object", "schema": { - "$ref": "#/definitions/api.Object" + "$ref": "#/definitions/object.Object" } }, "403": { "description": "Unauthorized", "schema": { - "$ref": "#/definitions/api.UnauthorizedError" + "$ref": "#/definitions/util.UnauthorizedError" } }, "404": { "description": "Resource not found", "schema": { - "$ref": "#/definitions/api.NotFoundError" + "$ref": "#/definitions/util.NotFoundError" } }, "502": { "description": "Internal server error", "schema": { - "$ref": "#/definitions/api.ServerError" + "$ref": "#/definitions/util.ServerError" } } } @@ -677,7 +683,7 @@ const docTemplate = `{ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/api.Object" + "$ref": "#/definitions/object.Object" } } ], @@ -685,25 +691,25 @@ const docTemplate = `{ "200": { "description": "The updated object", "schema": { - "$ref": "#/definitions/api.Object" + "$ref": "#/definitions/object.Object" } }, "403": { "description": "Unauthorized", "schema": { - "$ref": "#/definitions/api.UnauthorizedError" + "$ref": "#/definitions/util.UnauthorizedError" } }, "404": { "description": "Resource not found", "schema": { - "$ref": "#/definitions/api.NotFoundError" + "$ref": "#/definitions/util.NotFoundError" } }, "502": { "description": "Internal server error", "schema": { - "$ref": "#/definitions/api.ServerError" + "$ref": "#/definitions/util.ServerError" } } } @@ -711,7 +717,7 @@ const docTemplate = `{ } }, "definitions": { - "api.AuthDisplayCodeResponse": { + "auth.AuthDisplayCodeResponse": { "type": "object", "properties": { "challenge_id": { @@ -720,7 +726,7 @@ const docTemplate = `{ } } }, - "api.AuthTokenResponse": { + "auth.AuthTokenResponse": { "type": "object", "properties": { "app_key": { @@ -733,7 +739,7 @@ const docTemplate = `{ } } }, - "api.Block": { + "object.Block": { "type": "object", "properties": { "align": { @@ -749,20 +755,20 @@ const docTemplate = `{ } }, "file": { - "$ref": "#/definitions/api.File" + "$ref": "#/definitions/object.File" }, "id": { "type": "string" }, "text": { - "$ref": "#/definitions/api.Text" + "$ref": "#/definitions/object.Text" }, "vertical_align": { "type": "string" } } }, - "api.Detail": { + "object.Detail": { "type": "object", "properties": { "details": { @@ -774,7 +780,7 @@ const docTemplate = `{ } } }, - "api.File": { + "object.File": { "type": "object", "properties": { "added_at": { @@ -806,32 +812,19 @@ const docTemplate = `{ } } }, - "api.NotFoundError": { - "type": "object", - "properties": { - "error": { - "type": "object", - "properties": { - "message": { - "type": "string" - } - } - } - } - }, - "api.Object": { + "object.Object": { "type": "object", "properties": { "blocks": { "type": "array", "items": { - "$ref": "#/definitions/api.Block" + "$ref": "#/definitions/object.Block" } }, "details": { "type": "array", "items": { - "$ref": "#/definitions/api.Detail" + "$ref": "#/definitions/object.Detail" } }, "icon": { @@ -863,7 +856,7 @@ const docTemplate = `{ } } }, - "api.ObjectTemplate": { + "object.ObjectTemplate": { "type": "object", "properties": { "icon": { @@ -884,7 +877,7 @@ const docTemplate = `{ } } }, - "api.ObjectType": { + "object.ObjectType": { "type": "object", "properties": { "icon": { @@ -909,20 +902,7 @@ const docTemplate = `{ } } }, - "api.ServerError": { - "type": "object", - "properties": { - "error": { - "type": "object", - "properties": { - "message": { - "type": "string" - } - } - } - } - }, - "api.Text": { + "object.Text": { "type": "object", "properties": { "checked": { @@ -942,32 +922,6 @@ const docTemplate = `{ } } }, - "api.UnauthorizedError": { - "type": "object", - "properties": { - "error": { - "type": "object", - "properties": { - "message": { - "type": "string" - } - } - } - } - }, - "api.ValidationError": { - "type": "object", - "properties": { - "error": { - "type": "object", - "properties": { - "message": { - "type": "string" - } - } - } - } - }, "pagination.PaginatedResponse-space_Member": { "type": "object", "properties": { @@ -1071,7 +1025,7 @@ const docTemplate = `{ }, "analytics_id": { "type": "string", - "example": "" + "example": "624aecdd-4797-4611-9d61-a2ae5f53cf1c" }, "archive_object_id": { "type": "string", @@ -1083,7 +1037,7 @@ const docTemplate = `{ }, "gateway_url": { "type": "string", - "example": "" + "example": "http://127.0.0.1:31006" }, "home_object_id": { "type": "string", @@ -1099,7 +1053,7 @@ const docTemplate = `{ }, "local_storage_path": { "type": "string", - "example": "" + "example": "/Users/johndoe/Library/Application Support/Anytype/data/AAHTtt1wuQEnaYBNZ2Cyfcvs6DqPqxgn8VXDVk4avsUkMuha" }, "marketplace_workspace_id": { "type": "string", @@ -1142,6 +1096,58 @@ const docTemplate = `{ "example": "bafyreiapey2g6e6za4zfxvlgwdy4hbbfu676gmwrhnqvjbxvrchr7elr3y" } } + }, + "util.NotFoundError": { + "type": "object", + "properties": { + "error": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + } + } + }, + "util.ServerError": { + "type": "object", + "properties": { + "error": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + } + } + }, + "util.UnauthorizedError": { + "type": "object", + "properties": { + "error": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + } + } + }, + "util.ValidationError": { + "type": "object", + "properties": { + "error": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + } + } } }, "securityDefinitions": { diff --git a/cmd/api/docs/swagger.json b/cmd/api/docs/swagger.json index 8285da535..d81a69838 100644 --- a/cmd/api/docs/swagger.json +++ b/cmd/api/docs/swagger.json @@ -34,13 +34,13 @@ "200": { "description": "Challenge ID", "schema": { - "$ref": "#/definitions/api.AuthDisplayCodeResponse" + "$ref": "#/definitions/auth.AuthDisplayCodeResponse" } }, "502": { "description": "Internal server error", "schema": { - "$ref": "#/definitions/api.ServerError" + "$ref": "#/definitions/util.ServerError" } } } @@ -78,19 +78,19 @@ "200": { "description": "Authentication token", "schema": { - "$ref": "#/definitions/api.AuthTokenResponse" + "$ref": "#/definitions/auth.AuthTokenResponse" } }, "400": { "description": "Invalid input", "schema": { - "$ref": "#/definitions/api.ValidationError" + "$ref": "#/definitions/util.ValidationError" } }, "502": { "description": "Internal server error", "schema": { - "$ref": "#/definitions/api.ServerError" + "$ref": "#/definitions/util.ServerError" } } } @@ -117,7 +117,7 @@ }, { "type": "string", - "description": "Specify object type for search", + "description": "Specify object.Object type for search", "name": "object_type", "in": "query" }, @@ -143,7 +143,7 @@ "additionalProperties": { "type": "array", "items": { - "$ref": "#/definitions/api.Object" + "$ref": "#/definitions/object.Object" } } } @@ -151,13 +151,19 @@ "403": { "description": "Unauthorized", "schema": { - "$ref": "#/definitions/api.UnauthorizedError" + "$ref": "#/definitions/util.UnauthorizedError" + } + }, + "404": { + "description": "Resource not found", + "schema": { + "$ref": "#/definitions/util.NotFoundError" } }, "502": { "description": "Internal server error", "schema": { - "$ref": "#/definitions/api.ServerError" + "$ref": "#/definitions/util.ServerError" } } } @@ -200,19 +206,19 @@ "403": { "description": "Unauthorized", "schema": { - "$ref": "#/definitions/api.UnauthorizedError" + "$ref": "#/definitions/util.UnauthorizedError" } }, "404": { "description": "Resource not found", "schema": { - "$ref": "#/definitions/api.NotFoundError" + "$ref": "#/definitions/util.NotFoundError" } }, "502": { "description": "Internal server error", "schema": { - "$ref": "#/definitions/api.ServerError" + "$ref": "#/definitions/util.ServerError" } } } @@ -249,13 +255,13 @@ "403": { "description": "Unauthorized", "schema": { - "$ref": "#/definitions/api.UnauthorizedError" + "$ref": "#/definitions/util.UnauthorizedError" } }, "502": { "description": "Internal server error", "schema": { - "$ref": "#/definitions/api.ServerError" + "$ref": "#/definitions/util.ServerError" } } } @@ -305,19 +311,19 @@ "403": { "description": "Unauthorized", "schema": { - "$ref": "#/definitions/api.UnauthorizedError" + "$ref": "#/definitions/util.UnauthorizedError" } }, "404": { "description": "Resource not found", "schema": { - "$ref": "#/definitions/api.NotFoundError" + "$ref": "#/definitions/util.NotFoundError" } }, "502": { "description": "Internal server error", "schema": { - "$ref": "#/definitions/api.ServerError" + "$ref": "#/definitions/util.ServerError" } } } @@ -363,26 +369,26 @@ "schema": { "type": "object", "additionalProperties": { - "$ref": "#/definitions/api.ObjectType" + "$ref": "#/definitions/object.ObjectType" } } }, "403": { "description": "Unauthorized", "schema": { - "$ref": "#/definitions/api.UnauthorizedError" + "$ref": "#/definitions/util.UnauthorizedError" } }, "404": { "description": "Resource not found", "schema": { - "$ref": "#/definitions/api.NotFoundError" + "$ref": "#/definitions/util.NotFoundError" } }, "502": { "description": "Internal server error", "schema": { - "$ref": "#/definitions/api.ServerError" + "$ref": "#/definitions/util.ServerError" } } } @@ -437,7 +443,7 @@ "additionalProperties": { "type": "array", "items": { - "$ref": "#/definitions/api.ObjectTemplate" + "$ref": "#/definitions/object.ObjectTemplate" } } } @@ -445,19 +451,19 @@ "403": { "description": "Unauthorized", "schema": { - "$ref": "#/definitions/api.UnauthorizedError" + "$ref": "#/definitions/util.UnauthorizedError" } }, "404": { "description": "Resource not found", "schema": { - "$ref": "#/definitions/api.NotFoundError" + "$ref": "#/definitions/util.NotFoundError" } }, "502": { "description": "Internal server error", "schema": { - "$ref": "#/definitions/api.ServerError" + "$ref": "#/definitions/util.ServerError" } } } @@ -505,7 +511,7 @@ "additionalProperties": { "type": "array", "items": { - "$ref": "#/definitions/api.Object" + "$ref": "#/definitions/object.Object" } } } @@ -513,19 +519,19 @@ "403": { "description": "Unauthorized", "schema": { - "$ref": "#/definitions/api.UnauthorizedError" + "$ref": "#/definitions/util.UnauthorizedError" } }, "404": { "description": "Resource not found", "schema": { - "$ref": "#/definitions/api.NotFoundError" + "$ref": "#/definitions/util.NotFoundError" } }, "502": { "description": "Internal server error", "schema": { - "$ref": "#/definitions/api.ServerError" + "$ref": "#/definitions/util.ServerError" } } } @@ -566,19 +572,19 @@ "200": { "description": "The created object", "schema": { - "$ref": "#/definitions/api.Object" + "$ref": "#/definitions/object.Object" } }, "403": { "description": "Unauthorized", "schema": { - "$ref": "#/definitions/api.UnauthorizedError" + "$ref": "#/definitions/util.UnauthorizedError" } }, "502": { "description": "Internal server error", "schema": { - "$ref": "#/definitions/api.ServerError" + "$ref": "#/definitions/util.ServerError" } } } @@ -616,25 +622,25 @@ "200": { "description": "The requested object", "schema": { - "$ref": "#/definitions/api.Object" + "$ref": "#/definitions/object.Object" } }, "403": { "description": "Unauthorized", "schema": { - "$ref": "#/definitions/api.UnauthorizedError" + "$ref": "#/definitions/util.UnauthorizedError" } }, "404": { "description": "Resource not found", "schema": { - "$ref": "#/definitions/api.NotFoundError" + "$ref": "#/definitions/util.NotFoundError" } }, "502": { "description": "Internal server error", "schema": { - "$ref": "#/definitions/api.ServerError" + "$ref": "#/definitions/util.ServerError" } } } @@ -671,7 +677,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/api.Object" + "$ref": "#/definitions/object.Object" } } ], @@ -679,25 +685,25 @@ "200": { "description": "The updated object", "schema": { - "$ref": "#/definitions/api.Object" + "$ref": "#/definitions/object.Object" } }, "403": { "description": "Unauthorized", "schema": { - "$ref": "#/definitions/api.UnauthorizedError" + "$ref": "#/definitions/util.UnauthorizedError" } }, "404": { "description": "Resource not found", "schema": { - "$ref": "#/definitions/api.NotFoundError" + "$ref": "#/definitions/util.NotFoundError" } }, "502": { "description": "Internal server error", "schema": { - "$ref": "#/definitions/api.ServerError" + "$ref": "#/definitions/util.ServerError" } } } @@ -705,7 +711,7 @@ } }, "definitions": { - "api.AuthDisplayCodeResponse": { + "auth.AuthDisplayCodeResponse": { "type": "object", "properties": { "challenge_id": { @@ -714,7 +720,7 @@ } } }, - "api.AuthTokenResponse": { + "auth.AuthTokenResponse": { "type": "object", "properties": { "app_key": { @@ -727,7 +733,7 @@ } } }, - "api.Block": { + "object.Block": { "type": "object", "properties": { "align": { @@ -743,20 +749,20 @@ } }, "file": { - "$ref": "#/definitions/api.File" + "$ref": "#/definitions/object.File" }, "id": { "type": "string" }, "text": { - "$ref": "#/definitions/api.Text" + "$ref": "#/definitions/object.Text" }, "vertical_align": { "type": "string" } } }, - "api.Detail": { + "object.Detail": { "type": "object", "properties": { "details": { @@ -768,7 +774,7 @@ } } }, - "api.File": { + "object.File": { "type": "object", "properties": { "added_at": { @@ -800,32 +806,19 @@ } } }, - "api.NotFoundError": { - "type": "object", - "properties": { - "error": { - "type": "object", - "properties": { - "message": { - "type": "string" - } - } - } - } - }, - "api.Object": { + "object.Object": { "type": "object", "properties": { "blocks": { "type": "array", "items": { - "$ref": "#/definitions/api.Block" + "$ref": "#/definitions/object.Block" } }, "details": { "type": "array", "items": { - "$ref": "#/definitions/api.Detail" + "$ref": "#/definitions/object.Detail" } }, "icon": { @@ -857,7 +850,7 @@ } } }, - "api.ObjectTemplate": { + "object.ObjectTemplate": { "type": "object", "properties": { "icon": { @@ -878,7 +871,7 @@ } } }, - "api.ObjectType": { + "object.ObjectType": { "type": "object", "properties": { "icon": { @@ -903,20 +896,7 @@ } } }, - "api.ServerError": { - "type": "object", - "properties": { - "error": { - "type": "object", - "properties": { - "message": { - "type": "string" - } - } - } - } - }, - "api.Text": { + "object.Text": { "type": "object", "properties": { "checked": { @@ -936,32 +916,6 @@ } } }, - "api.UnauthorizedError": { - "type": "object", - "properties": { - "error": { - "type": "object", - "properties": { - "message": { - "type": "string" - } - } - } - } - }, - "api.ValidationError": { - "type": "object", - "properties": { - "error": { - "type": "object", - "properties": { - "message": { - "type": "string" - } - } - } - } - }, "pagination.PaginatedResponse-space_Member": { "type": "object", "properties": { @@ -1065,7 +1019,7 @@ }, "analytics_id": { "type": "string", - "example": "" + "example": "624aecdd-4797-4611-9d61-a2ae5f53cf1c" }, "archive_object_id": { "type": "string", @@ -1077,7 +1031,7 @@ }, "gateway_url": { "type": "string", - "example": "" + "example": "http://127.0.0.1:31006" }, "home_object_id": { "type": "string", @@ -1093,7 +1047,7 @@ }, "local_storage_path": { "type": "string", - "example": "" + "example": "/Users/johndoe/Library/Application Support/Anytype/data/AAHTtt1wuQEnaYBNZ2Cyfcvs6DqPqxgn8VXDVk4avsUkMuha" }, "marketplace_workspace_id": { "type": "string", @@ -1136,6 +1090,58 @@ "example": "bafyreiapey2g6e6za4zfxvlgwdy4hbbfu676gmwrhnqvjbxvrchr7elr3y" } } + }, + "util.NotFoundError": { + "type": "object", + "properties": { + "error": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + } + } + }, + "util.ServerError": { + "type": "object", + "properties": { + "error": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + } + } + }, + "util.UnauthorizedError": { + "type": "object", + "properties": { + "error": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + } + } + }, + "util.ValidationError": { + "type": "object", + "properties": { + "error": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + } + } } }, "securityDefinitions": { diff --git a/cmd/api/docs/swagger.yaml b/cmd/api/docs/swagger.yaml index a9f287cae..402548ae1 100644 --- a/cmd/api/docs/swagger.yaml +++ b/cmd/api/docs/swagger.yaml @@ -1,12 +1,12 @@ basePath: /v1 definitions: - api.AuthDisplayCodeResponse: + auth.AuthDisplayCodeResponse: properties: challenge_id: example: 67647f5ecda913e9a2e11b26 type: string type: object - api.AuthTokenResponse: + auth.AuthTokenResponse: properties: app_key: example: "" @@ -15,7 +15,7 @@ definitions: example: "" type: string type: object - api.Block: + object.Block: properties: align: type: string @@ -26,15 +26,15 @@ definitions: type: string type: array file: - $ref: '#/definitions/api.File' + $ref: '#/definitions/object.File' id: type: string text: - $ref: '#/definitions/api.Text' + $ref: '#/definitions/object.Text' vertical_align: type: string type: object - api.Detail: + object.Detail: properties: details: additionalProperties: true @@ -42,7 +42,7 @@ definitions: id: type: string type: object - api.File: + object.File: properties: added_at: type: integer @@ -63,23 +63,15 @@ definitions: type: type: string type: object - api.NotFoundError: - properties: - error: - properties: - message: - type: string - type: object - type: object - api.Object: + object.Object: properties: blocks: items: - $ref: '#/definitions/api.Block' + $ref: '#/definitions/object.Block' type: array details: items: - $ref: '#/definitions/api.Detail' + $ref: '#/definitions/object.Detail' type: array icon: example: "\U0001F4C4" @@ -102,7 +94,7 @@ definitions: example: object type: string type: object - api.ObjectTemplate: + object.ObjectTemplate: properties: icon: example: "\U0001F4C4" @@ -117,7 +109,7 @@ definitions: example: object_template type: string type: object - api.ObjectType: + object.ObjectType: properties: icon: example: "\U0001F4C4" @@ -135,15 +127,7 @@ definitions: example: ot-page type: string type: object - api.ServerError: - properties: - error: - properties: - message: - type: string - type: object - type: object - api.Text: + object.Text: properties: checked: type: boolean @@ -156,22 +140,6 @@ definitions: text: type: string type: object - api.UnauthorizedError: - properties: - error: - properties: - message: - type: string - type: object - type: object - api.ValidationError: - properties: - error: - properties: - message: - type: string - type: object - type: object pagination.PaginatedResponse-space_Member: properties: data: @@ -244,7 +212,7 @@ definitions: example: bafyreihpd2knon5wbljhtfeg3fcqtg3i2pomhhnigui6lrjmzcjzep7gcy.23me69r569oi1 type: string analytics_id: - example: "" + example: 624aecdd-4797-4611-9d61-a2ae5f53cf1c type: string archive_object_id: example: bafyreialsgoyflf3etjm3parzurivyaukzivwortf32b4twnlwpwocsrri @@ -253,7 +221,7 @@ definitions: example: 12D3KooWGZMJ4kQVyQVXaj7gJPZr3RZ2nvd9M2Eq2pprEoPih9WF type: string gateway_url: - example: "" + example: http://127.0.0.1:31006 type: string home_object_id: example: bafyreie4qcl3wczb4cw5hrfyycikhjyh6oljdis3ewqrk5boaav3sbwqya @@ -265,7 +233,7 @@ definitions: example: bafyreigyfkt6rbv24sbv5aq2hko3bhmv5xxlf22b4bypdu6j7hnphm3psq.23me69r569oi1 type: string local_storage_path: - example: "" + example: /Users/johndoe/Library/Application Support/Anytype/data/AAHTtt1wuQEnaYBNZ2Cyfcvs6DqPqxgn8VXDVk4avsUkMuha type: string marketplace_workspace_id: example: _anytype_marketplace @@ -298,6 +266,38 @@ definitions: example: bafyreiapey2g6e6za4zfxvlgwdy4hbbfu676gmwrhnqvjbxvrchr7elr3y type: string type: object + util.NotFoundError: + properties: + error: + properties: + message: + type: string + type: object + type: object + util.ServerError: + properties: + error: + properties: + message: + type: string + type: object + type: object + util.UnauthorizedError: + properties: + error: + properties: + message: + type: string + type: object + type: object + util.ValidationError: + properties: + error: + properties: + message: + type: string + type: object + type: object externalDocs: description: OpenAPI url: https://swagger.io/resources/open-api/ @@ -326,11 +326,11 @@ paths: "200": description: Challenge ID schema: - $ref: '#/definitions/api.AuthDisplayCodeResponse' + $ref: '#/definitions/auth.AuthDisplayCodeResponse' "502": description: Internal server error schema: - $ref: '#/definitions/api.ServerError' + $ref: '#/definitions/util.ServerError' summary: Open a modal window with a code in Anytype Desktop app tags: - auth @@ -355,15 +355,15 @@ paths: "200": description: Authentication token schema: - $ref: '#/definitions/api.AuthTokenResponse' + $ref: '#/definitions/auth.AuthTokenResponse' "400": description: Invalid input schema: - $ref: '#/definitions/api.ValidationError' + $ref: '#/definitions/util.ValidationError' "502": description: Internal server error schema: - $ref: '#/definitions/api.ServerError' + $ref: '#/definitions/util.ServerError' summary: Retrieve an authentication token using a code tags: - auth @@ -376,7 +376,7 @@ paths: in: query name: query type: string - - description: Specify object type for search + - description: Specify object.Object type for search in: query name: object_type type: string @@ -398,17 +398,21 @@ paths: schema: additionalProperties: items: - $ref: '#/definitions/api.Object' + $ref: '#/definitions/object.Object' type: array type: object "403": description: Unauthorized schema: - $ref: '#/definitions/api.UnauthorizedError' + $ref: '#/definitions/util.UnauthorizedError' + "404": + description: Resource not found + schema: + $ref: '#/definitions/util.NotFoundError' "502": description: Internal server error schema: - $ref: '#/definitions/api.ServerError' + $ref: '#/definitions/util.ServerError' summary: Search and retrieve objects across all the spaces tags: - search @@ -437,15 +441,15 @@ paths: "403": description: Unauthorized schema: - $ref: '#/definitions/api.UnauthorizedError' + $ref: '#/definitions/util.UnauthorizedError' "404": description: Resource not found schema: - $ref: '#/definitions/api.NotFoundError' + $ref: '#/definitions/util.NotFoundError' "502": description: Internal server error schema: - $ref: '#/definitions/api.ServerError' + $ref: '#/definitions/util.ServerError' summary: Retrieve a list of spaces tags: - spaces @@ -469,11 +473,11 @@ paths: "403": description: Unauthorized schema: - $ref: '#/definitions/api.UnauthorizedError' + $ref: '#/definitions/util.UnauthorizedError' "502": description: Internal server error schema: - $ref: '#/definitions/api.ServerError' + $ref: '#/definitions/util.ServerError' summary: Create a new Space tags: - spaces @@ -507,15 +511,15 @@ paths: "403": description: Unauthorized schema: - $ref: '#/definitions/api.UnauthorizedError' + $ref: '#/definitions/util.UnauthorizedError' "404": description: Resource not found schema: - $ref: '#/definitions/api.NotFoundError' + $ref: '#/definitions/util.NotFoundError' "502": description: Internal server error schema: - $ref: '#/definitions/api.ServerError' + $ref: '#/definitions/util.ServerError' summary: Retrieve a list of members for the specified Space tags: - spaces @@ -546,20 +550,20 @@ paths: description: List of object types schema: additionalProperties: - $ref: '#/definitions/api.ObjectType' + $ref: '#/definitions/object.ObjectType' type: object "403": description: Unauthorized schema: - $ref: '#/definitions/api.UnauthorizedError' + $ref: '#/definitions/util.UnauthorizedError' "404": description: Resource not found schema: - $ref: '#/definitions/api.NotFoundError' + $ref: '#/definitions/util.NotFoundError' "502": description: Internal server error schema: - $ref: '#/definitions/api.ServerError' + $ref: '#/definitions/util.ServerError' summary: Retrieve object types in a specific space tags: - types_and_templates @@ -596,21 +600,21 @@ paths: schema: additionalProperties: items: - $ref: '#/definitions/api.ObjectTemplate' + $ref: '#/definitions/object.ObjectTemplate' type: array type: object "403": description: Unauthorized schema: - $ref: '#/definitions/api.UnauthorizedError' + $ref: '#/definitions/util.UnauthorizedError' "404": description: Resource not found schema: - $ref: '#/definitions/api.NotFoundError' + $ref: '#/definitions/util.NotFoundError' "502": description: Internal server error schema: - $ref: '#/definitions/api.ServerError' + $ref: '#/definitions/util.ServerError' summary: Retrieve a list of templates for a specific object type in a space tags: - types_and_templates @@ -642,21 +646,21 @@ paths: schema: additionalProperties: items: - $ref: '#/definitions/api.Object' + $ref: '#/definitions/object.Object' type: array type: object "403": description: Unauthorized schema: - $ref: '#/definitions/api.UnauthorizedError' + $ref: '#/definitions/util.UnauthorizedError' "404": description: Resource not found schema: - $ref: '#/definitions/api.NotFoundError' + $ref: '#/definitions/util.NotFoundError' "502": description: Internal server error schema: - $ref: '#/definitions/api.ServerError' + $ref: '#/definitions/util.ServerError' summary: Retrieve objects in a specific space tags: - space_objects @@ -683,15 +687,15 @@ paths: "200": description: The created object schema: - $ref: '#/definitions/api.Object' + $ref: '#/definitions/object.Object' "403": description: Unauthorized schema: - $ref: '#/definitions/api.UnauthorizedError' + $ref: '#/definitions/util.UnauthorizedError' "502": description: Internal server error schema: - $ref: '#/definitions/api.ServerError' + $ref: '#/definitions/util.ServerError' summary: Create a new object in a specific space tags: - space_objects @@ -716,19 +720,19 @@ paths: "200": description: The requested object schema: - $ref: '#/definitions/api.Object' + $ref: '#/definitions/object.Object' "403": description: Unauthorized schema: - $ref: '#/definitions/api.UnauthorizedError' + $ref: '#/definitions/util.UnauthorizedError' "404": description: Resource not found schema: - $ref: '#/definitions/api.NotFoundError' + $ref: '#/definitions/util.NotFoundError' "502": description: Internal server error schema: - $ref: '#/definitions/api.ServerError' + $ref: '#/definitions/util.ServerError' summary: Retrieve a specific object in a space tags: - space_objects @@ -751,26 +755,26 @@ paths: name: object required: true schema: - $ref: '#/definitions/api.Object' + $ref: '#/definitions/object.Object' produces: - application/json responses: "200": description: The updated object schema: - $ref: '#/definitions/api.Object' + $ref: '#/definitions/object.Object' "403": description: Unauthorized schema: - $ref: '#/definitions/api.UnauthorizedError' + $ref: '#/definitions/util.UnauthorizedError' "404": description: Resource not found schema: - $ref: '#/definitions/api.NotFoundError' + $ref: '#/definitions/util.NotFoundError' "502": description: Internal server error schema: - $ref: '#/definitions/api.ServerError' + $ref: '#/definitions/util.ServerError' summary: Update an existing object in a specific space tags: - space_objects diff --git a/cmd/api/handlers.go b/cmd/api/handlers.go index a5e132519..778f64ec1 100644 --- a/cmd/api/handlers.go +++ b/cmd/api/handlers.go @@ -1,631 +1 @@ package api - -import ( - "net/http" - "sort" - - "github.com/gin-gonic/gin" - "github.com/gogo/protobuf/types" - - "github.com/anyproto/anytype-heart/cmd/api/pagination" - "github.com/anyproto/anytype-heart/cmd/api/utils" - "github.com/anyproto/anytype-heart/pb" - "github.com/anyproto/anytype-heart/pkg/lib/bundle" - "github.com/anyproto/anytype-heart/pkg/lib/pb/model" - "github.com/anyproto/anytype-heart/util/pbtypes" -) - -type CreateObjectRequest struct { - Name string `json:"name"` - Icon string `json:"icon"` - TemplateId string `json:"template_id"` - ObjectTypeUniqueKey string `json:"object_type_unique_key"` - WithChat bool `json:"with_chat"` -} - -type AddMessageRequest struct { - Text string `json:"text"` - Style string `json:"style"` -} - -// authDisplayCodeHandler generates a new challenge and returns the challenge ID -// -// @Summary Open a modal window with a code in Anytype Desktop app -// @Tags auth -// @Accept json -// @Produce json -// @Success 200 {object} AuthDisplayCodeResponse "Challenge ID" -// @Failure 502 {object} ServerError "Internal server error" -// @Router /auth/displayCode [post] -func (a *ApiServer) authDisplayCodeHandler(c *gin.Context) { - resp := a.mw.AccountLocalLinkNewChallenge(c.Request.Context(), &pb.RpcAccountLocalLinkNewChallengeRequest{AppName: "api-test"}) - - if resp.Error.Code != pb.RpcAccountLocalLinkNewChallengeResponseError_NULL { - c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to generate a new challenge."}) - } - - c.JSON(http.StatusOK, AuthDisplayCodeResponse{ChallengeId: resp.ChallengeId}) -} - -// authTokenHandler retrieves an authentication token using a code and challenge ID -// -// @Summary Retrieve an authentication token using a code -// @Tags auth -// @Accept json -// @Produce json -// @Param code query string true "The code retrieved from Anytype Desktop app" -// @Param challenge_id query string true "The challenge ID" -// @Success 200 {object} AuthTokenResponse "Authentication token" -// @Failure 400 {object} ValidationError "Invalid input" -// @Failure 502 {object} ServerError "Internal server error" -// @Router /auth/token [get] -func (a *ApiServer) authTokenHandler(c *gin.Context) { - if c.Query("challenge_id") == "" || c.Query("code") == "" { - c.JSON(http.StatusBadRequest, gin.H{"message": "Invalid input"}) - return - } - - // Call AccountLocalLinkSolveChallenge to retrieve session token and app key - resp := a.mw.AccountLocalLinkSolveChallenge(c.Request.Context(), &pb.RpcAccountLocalLinkSolveChallengeRequest{ - ChallengeId: c.Query("challenge_id"), - Answer: c.Query("code"), - }) - - if resp.Error.Code != pb.RpcAccountLocalLinkSolveChallengeResponseError_NULL { - c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to authenticate user."}) - return - } - - c.JSON(http.StatusOK, AuthTokenResponse{ - SessionToken: resp.SessionToken, - AppKey: resp.AppKey, - }) -} - -// getObjectsHandler retrieves objects in a specific space -// -// @Summary Retrieve objects in a specific space -// @Tags space_objects -// @Accept json -// @Produce json -// @Param space_id path string true "The ID of the space" -// @Param offset query int false "The number of items to skip before starting to collect the result set" -// @Param limit query int false "The number of items to return" default(100) -// @Success 200 {object} map[string][]Object "List of objects" -// @Failure 403 {object} UnauthorizedError "Unauthorized" -// @Failure 404 {object} NotFoundError "Resource not found" -// @Failure 502 {object} ServerError "Internal server error" -// @Router /spaces/{space_id}/objects [get] -func (a *ApiServer) getObjectsHandler(c *gin.Context) { - spaceId := c.Param("space_id") - offset := c.GetInt("offset") - limit := c.GetInt("limit") - - resp := a.mw.ObjectSearch(c.Request.Context(), &pb.RpcObjectSearchRequest{ - SpaceId: spaceId, - Filters: []*model.BlockContentDataviewFilter{ - { - RelationKey: bundle.RelationKeyLayout.String(), - Condition: model.BlockContentDataviewFilter_In, - Value: pbtypes.IntList([]int{ - int(model.ObjectType_basic), - int(model.ObjectType_profile), - int(model.ObjectType_todo), - int(model.ObjectType_note), - int(model.ObjectType_bookmark), - int(model.ObjectType_set), - int(model.ObjectType_collection), - int(model.ObjectType_participant), - }...), - }, - }, - Sorts: []*model.BlockContentDataviewSort{{ - RelationKey: bundle.RelationKeyLastModifiedDate.String(), - Type: model.BlockContentDataviewSort_Desc, - Format: model.RelationFormat_longtext, - IncludeTime: true, - EmptyPlacement: model.BlockContentDataviewSort_NotSpecified, - }}, - Keys: []string{"id", "name", "type", "layout", "iconEmoji", "iconImage"}, - }) - - if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { - c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to retrieve list of objects."}) - return - } - - if len(resp.Records) == 0 { - c.JSON(http.StatusNotFound, gin.H{"message": "No objects found."}) - return - } - - paginatedObjects, hasMore := pagination.Paginate(resp.Records, offset, limit) - objects := make([]Object, 0, len(paginatedObjects)) - - for _, record := range paginatedObjects { - icon := utils.GetIconFromEmojiOrImage(a.accountInfo, record.Fields["iconEmoji"].GetStringValue(), record.Fields["iconImage"].GetStringValue()) - objectTypeName, statusCode, errorMessage := a.resolveTypeToName(spaceId, record.Fields["type"].GetStringValue()) - if statusCode != http.StatusOK { - c.JSON(statusCode, gin.H{"message": errorMessage}) - return - } - - objectShowResp := a.mw.ObjectShow(c.Request.Context(), &pb.RpcObjectShowRequest{ - SpaceId: spaceId, - ObjectId: record.Fields["id"].GetStringValue(), - }) - - object := Object{ - // TODO fix type inconsistency - Type: model.ObjectTypeLayout_name[int32(record.Fields["layout"].GetNumberValue())], - Id: record.Fields["id"].GetStringValue(), - Name: record.Fields["name"].GetStringValue(), - Icon: icon, - ObjectType: objectTypeName, - SpaceId: spaceId, - RootId: objectShowResp.ObjectView.RootId, - Blocks: a.getBlocks(objectShowResp), - Details: a.getDetails(objectShowResp), - } - - objects = append(objects, object) - } - - pagination.RespondWithPagination(c, http.StatusOK, objects, len(resp.Records), offset, limit, hasMore) -} - -// getObjectHandler retrieves a specific object in a space -// -// @Summary Retrieve a specific object in a space -// @Tags space_objects -// @Accept json -// @Produce json -// @Param space_id path string true "The ID of the space" -// @Param object_id path string true "The ID of the object" -// @Success 200 {object} Object "The requested object" -// @Failure 403 {object} UnauthorizedError "Unauthorized" -// @Failure 404 {object} NotFoundError "Resource not found" -// @Failure 502 {object} ServerError "Internal server error" -// @Router /spaces/{space_id}/objects/{object_id} [get] -func (a *ApiServer) getObjectHandler(c *gin.Context) { - spaceId := c.Param("space_id") - objectId := c.Param("object_id") - - resp := a.mw.ObjectShow(c.Request.Context(), &pb.RpcObjectShowRequest{ - SpaceId: spaceId, - ObjectId: objectId, - }) - - if resp.Error.Code != pb.RpcObjectShowResponseError_NULL { - if resp.Error.Code == pb.RpcObjectShowResponseError_NOT_FOUND { - c.JSON(http.StatusNotFound, gin.H{"message": "Object not found", "space_id": spaceId, "object_id": objectId}) - return - } - c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to retrieve object."}) - return - } - - objectTypeName, statusCode, errorMessage := a.resolveTypeToName(spaceId, resp.ObjectView.Details[0].Details.Fields["type"].GetStringValue()) - if statusCode != http.StatusOK { - c.JSON(statusCode, gin.H{"message": errorMessage}) - return - } - - object := Object{ - Type: "object", - Id: objectId, - Name: resp.ObjectView.Details[0].Details.Fields["name"].GetStringValue(), - Icon: resp.ObjectView.Details[0].Details.Fields["iconEmoji"].GetStringValue(), - ObjectType: objectTypeName, - RootId: resp.ObjectView.RootId, - Blocks: a.getBlocks(resp), - Details: a.getDetails(resp), - } - - c.JSON(http.StatusOK, gin.H{"object": object}) -} - -// createObjectHandler creates a new object in a specific space -// -// @Summary Create a new object in a specific space -// @Tags space_objects -// @Accept json -// @Produce json -// @Param space_id path string true "The ID of the space" -// @Param object body map[string]string true "Object details (e.g., name)" -// @Success 200 {object} Object "The created object" -// @Failure 403 {object} UnauthorizedError "Unauthorized" -// @Failure 502 {object} ServerError "Internal server error" -// @Router /spaces/{space_id}/objects [post] -func (a *ApiServer) createObjectHandler(c *gin.Context) { - spaceId := c.Param("space_id") - - request := CreateObjectRequest{} - if err := c.BindJSON(&request); err != nil { - c.JSON(http.StatusBadRequest, gin.H{"message": "Invalid JSON"}) - return - } - - resp := a.mw.ObjectCreate(c.Request.Context(), &pb.RpcObjectCreateRequest{ - Details: &types.Struct{ - Fields: map[string]*types.Value{ - "name": {Kind: &types.Value_StringValue{StringValue: request.Name}}, - "iconEmoji": {Kind: &types.Value_StringValue{StringValue: request.Icon}}, - }, - }, - TemplateId: request.TemplateId, - SpaceId: spaceId, - ObjectTypeUniqueKey: request.ObjectTypeUniqueKey, - WithChat: request.WithChat, - }) - - if resp.Error.Code != pb.RpcObjectCreateResponseError_NULL { - c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to create a new object."}) - return - } - - object := Object{ - Type: "object", - Id: resp.ObjectId, - Name: resp.Details.Fields["name"].GetStringValue(), - Icon: resp.Details.Fields["iconEmoji"].GetStringValue(), - ObjectType: request.ObjectTypeUniqueKey, - SpaceId: resp.Details.Fields["spaceId"].GetStringValue(), - // TODO populate other fields - // RootId: resp.RootId, - // Blocks: []Block{}, - // Details: []Detail{}, - } - - c.JSON(http.StatusOK, gin.H{"object": object}) -} - -// updateObjectHandler updates an existing object in a specific space -// -// @Summary Update an existing object in a specific space -// @Tags space_objects -// @Accept json -// @Produce json -// @Param space_id path string true "The ID of the space" -// @Param object_id path string true "The ID of the object" -// @Param object body Object true "The updated object details" -// @Success 200 {object} Object "The updated object" -// @Failure 403 {object} UnauthorizedError "Unauthorized" -// @Failure 404 {object} NotFoundError "Resource not found" -// @Failure 502 {object} ServerError "Internal server error" -// @Router /spaces/{space_id}/objects/{object_id} [put] -func (a *ApiServer) updateObjectHandler(c *gin.Context) { - spaceId := c.Param("space_id") - objectId := c.Param("object_id") - // TODO: Implement logic to update an existing object - c.JSON(http.StatusNotImplemented, gin.H{"message": "Not implemented yet", "space_id": spaceId, "object_id": objectId}) -} - -// getObjectTypesHandler retrieves object types in a specific space -// -// @Summary Retrieve object types in a specific space -// @Tags types_and_templates -// @Accept json -// @Produce json -// @Param space_id path string true "The ID of the space" -// @Param offset query int false "The number of items to skip before starting to collect the result set" -// @Param limit query int false "The number of items to return" default(100) -// @Success 200 {object} map[string]ObjectType "List of object types" -// @Failure 403 {object} UnauthorizedError "Unauthorized" -// @Failure 404 {object} NotFoundError "Resource not found" -// @Failure 502 {object} ServerError "Internal server error" -// @Router /spaces/{space_id}/objectTypes [get] -func (a *ApiServer) getObjectTypesHandler(c *gin.Context) { - spaceId := c.Param("space_id") - offset := c.GetInt("offset") - limit := c.GetInt("limit") - - resp := a.mw.ObjectSearch(c.Request.Context(), &pb.RpcObjectSearchRequest{ - SpaceId: spaceId, - Filters: []*model.BlockContentDataviewFilter{ - { - RelationKey: bundle.RelationKeyLayout.String(), - Condition: model.BlockContentDataviewFilter_Equal, - Value: pbtypes.Int64(int64(model.ObjectType_objectType)), - }, - { - RelationKey: bundle.RelationKeyIsHidden.String(), - Condition: model.BlockContentDataviewFilter_NotEqual, - Value: pbtypes.Bool(true), - }, - }, - Sorts: []*model.BlockContentDataviewSort{ - { - RelationKey: "name", - Type: model.BlockContentDataviewSort_Asc, - }, - }, - Keys: []string{"id", "uniqueKey", "name", "iconEmoji"}, - }) - - if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { - c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to retrieve object types."}) - return - } - - if len(resp.Records) == 0 { - c.JSON(http.StatusNotFound, gin.H{"message": "No object types found."}) - return - } - - paginatedTypes, hasMore := pagination.Paginate(resp.Records, offset, limit) - objectTypes := make([]ObjectType, 0, len(paginatedTypes)) - - for _, record := range paginatedTypes { - objectTypes = append(objectTypes, ObjectType{ - Type: "object_type", - Id: record.Fields["id"].GetStringValue(), - UniqueKey: record.Fields["uniqueKey"].GetStringValue(), - Name: record.Fields["name"].GetStringValue(), - Icon: record.Fields["iconEmoji"].GetStringValue(), - }) - } - - pagination.RespondWithPagination(c, http.StatusOK, objectTypes, len(resp.Records), offset, limit, hasMore) -} - -// getObjectTypeTemplatesHandler retrieves a list of templates for a specific object type in a space -// -// @Summary Retrieve a list of templates for a specific object type in a space -// @Tags types_and_templates -// @Accept json -// @Produce json -// @Param space_id path string true "The ID of the space" -// @Param typeId path string true "The ID of the object type" -// @Param offset query int false "The number of items to skip before starting to collect the result set" -// @Param limit query int false "The number of items to return" default(100) -// @Success 200 {object} map[string][]ObjectTemplate "List of templates" -// @Failure 403 {object} UnauthorizedError "Unauthorized" -// @Failure 404 {object} NotFoundError "Resource not found" -// @Failure 502 {object} ServerError "Internal server error" -// @Router /spaces/{space_id}/objectTypes/{typeId}/templates [get] -func (a *ApiServer) getObjectTypeTemplatesHandler(c *gin.Context) { - spaceId := c.Param("space_id") - typeId := c.Param("typeId") - offset := c.GetInt("offset") - limit := c.GetInt("limit") - - // First, determine the type ID of "ot-template" in the space - templateTypeIdResp := a.mw.ObjectSearch(c.Request.Context(), &pb.RpcObjectSearchRequest{ - SpaceId: spaceId, - Filters: []*model.BlockContentDataviewFilter{ - { - RelationKey: bundle.RelationKeyUniqueKey.String(), - Condition: model.BlockContentDataviewFilter_Equal, - Value: pbtypes.String("ot-template"), - }, - }, - Keys: []string{"id"}, - }) - - if templateTypeIdResp.Error.Code != pb.RpcObjectSearchResponseError_NULL { - c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to retrieve template type."}) - return - } - - if len(templateTypeIdResp.Records) == 0 { - c.JSON(http.StatusNotFound, gin.H{"message": "Template type not found."}) - return - } - - templateTypeId := templateTypeIdResp.Records[0].Fields["id"].GetStringValue() - - // Then, search all objects of the template type and filter by the target object type - templateObjectsResp := a.mw.ObjectSearch(c.Request.Context(), &pb.RpcObjectSearchRequest{ - SpaceId: spaceId, - Filters: []*model.BlockContentDataviewFilter{ - { - RelationKey: bundle.RelationKeyType.String(), - Condition: model.BlockContentDataviewFilter_Equal, - Value: pbtypes.String(templateTypeId), - }, - }, - Keys: []string{"id", "targetObjectType", "name", "iconEmoji"}, - }) - - if templateObjectsResp.Error.Code != pb.RpcObjectSearchResponseError_NULL { - c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to retrieve template objects."}) - return - } - - if len(templateObjectsResp.Records) == 0 { - c.JSON(http.StatusNotFound, gin.H{"message": "No templates found."}) - return - } - - templateIds := make([]string, 0) - for _, record := range templateObjectsResp.Records { - if record.Fields["targetObjectType"].GetStringValue() == typeId { - templateIds = append(templateIds, record.Fields["id"].GetStringValue()) - } - } - - // Finally, open each template and populate the response - paginatedTemplates, hasMore := pagination.Paginate(templateIds, offset, limit) - templates := make([]ObjectTemplate, 0, len(paginatedTemplates)) - - for _, templateId := range paginatedTemplates { - templateResp := a.mw.ObjectShow(c.Request.Context(), &pb.RpcObjectShowRequest{ - SpaceId: spaceId, - ObjectId: templateId, - }) - - if templateResp.Error.Code != pb.RpcObjectShowResponseError_NULL { - c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to retrieve template."}) - return - } - - templates = append(templates, ObjectTemplate{ - Type: "object_template", - Id: templateId, - Name: templateResp.ObjectView.Details[0].Details.Fields["name"].GetStringValue(), - Icon: templateResp.ObjectView.Details[0].Details.Fields["iconEmoji"].GetStringValue(), - }) - } - - pagination.RespondWithPagination(c, http.StatusOK, templates, len(templateIds), offset, limit, hasMore) -} - -// searchHandler searches and retrieves objects across all the spaces -// -// @Summary Search and retrieve objects across all the spaces -// @Tags search -// @Accept json -// @Produce json -// @Param query query string false "The search term to filter objects by name" -// @Param object_type query string false "Specify object type for search" -// @Param offset query int false "The number of items to skip before starting to collect the result set" -// @Param limit query int false "The number of items to return" default(100) -// @Success 200 {object} map[string][]Object "List of objects" -// @Failure 403 {object} UnauthorizedError "Unauthorized" -// @Failure 502 {object} ServerError "Internal server error" -// @Router /search [get] -func (a *ApiServer) searchHandler(c *gin.Context) { - searchQuery := c.Query("query") - objectType := c.Query("object_type") - offset := c.GetInt("offset") - limit := c.GetInt("limit") - - // First, call ObjectSearch for all objects of type spaceView - spaceResp := a.mw.ObjectSearch(c.Request.Context(), &pb.RpcObjectSearchRequest{ - SpaceId: a.accountInfo.TechSpaceId, - Filters: []*model.BlockContentDataviewFilter{ - { - RelationKey: bundle.RelationKeyLayout.String(), - Condition: model.BlockContentDataviewFilter_Equal, - Value: pbtypes.Int64(int64(model.ObjectType_spaceView)), - }, - { - RelationKey: bundle.RelationKeySpaceLocalStatus.String(), - Condition: model.BlockContentDataviewFilter_Equal, - Value: pbtypes.Int64(int64(model.SpaceStatus_Ok)), - }, - { - RelationKey: bundle.RelationKeySpaceRemoteStatus.String(), - Condition: model.BlockContentDataviewFilter_Equal, - Value: pbtypes.Int64(int64(model.SpaceStatus_Ok)), - }, - }, - Keys: []string{"targetSpaceId"}, - }) - - if spaceResp.Error.Code != pb.RpcObjectSearchResponseError_NULL { - c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to retrieve list of spaces."}) - return - } - - if len(spaceResp.Records) == 0 { - c.JSON(http.StatusNotFound, gin.H{"message": "No spaces found."}) - return - } - - // Then, get objects from each space that match the search parameters - var filters = []*model.BlockContentDataviewFilter{ - { - RelationKey: bundle.RelationKeyLayout.String(), - Condition: model.BlockContentDataviewFilter_In, - Value: pbtypes.IntList([]int{ - int(model.ObjectType_basic), - int(model.ObjectType_profile), - int(model.ObjectType_todo), - int(model.ObjectType_note), - int(model.ObjectType_bookmark), - int(model.ObjectType_set), - int(model.ObjectType_collection), - int(model.ObjectType_participant), - }...), - }, - { - RelationKey: bundle.RelationKeyIsHidden.String(), - Condition: model.BlockContentDataviewFilter_NotEqual, - Value: pbtypes.Bool(true), - }, - } - - if searchQuery != "" { - // TODO also include snippet for notes - filters = append(filters, &model.BlockContentDataviewFilter{ - RelationKey: bundle.RelationKeyName.String(), - Condition: model.BlockContentDataviewFilter_Like, - Value: pbtypes.String(searchQuery), - }) - } - - if objectType != "" { - filters = append(filters, &model.BlockContentDataviewFilter{ - RelationKey: bundle.RelationKeyType.String(), - Condition: model.BlockContentDataviewFilter_Equal, - Value: pbtypes.String(objectType), - }) - } - - searchResults := make([]Object, 0) - for _, spaceRecord := range spaceResp.Records { - spaceId := spaceRecord.Fields["targetSpaceId"].GetStringValue() - objectResp := a.mw.ObjectSearch(c.Request.Context(), &pb.RpcObjectSearchRequest{ - SpaceId: spaceId, - Filters: filters, - Sorts: []*model.BlockContentDataviewSort{{ - RelationKey: bundle.RelationKeyLastModifiedDate.String(), - Type: model.BlockContentDataviewSort_Desc, - Format: model.RelationFormat_longtext, - IncludeTime: true, - EmptyPlacement: model.BlockContentDataviewSort_NotSpecified, - }}, - Keys: []string{"id", "name", "type", "layout", "iconEmoji", "iconImage"}, - // TODO split limit between spaces - // Limit: paginationLimitPerSpace, - // FullText: searchTerm, - }) - - if objectResp.Error.Code != pb.RpcObjectSearchResponseError_NULL { - c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to retrieve list of objects."}) - return - } - - if len(objectResp.Records) == 0 { - continue - } - - for _, record := range objectResp.Records { - icon := utils.GetIconFromEmojiOrImage(a.accountInfo, record.Fields["iconEmoji"].GetStringValue(), record.Fields["iconImage"].GetStringValue()) - objectTypeName, statusCode, errorMessage := a.resolveTypeToName(spaceId, record.Fields["type"].GetStringValue()) - if statusCode != http.StatusOK { - c.JSON(statusCode, gin.H{"message": errorMessage}) - return - } - - objectShowResp := a.mw.ObjectShow(c.Request.Context(), &pb.RpcObjectShowRequest{ - SpaceId: spaceId, - ObjectId: record.Fields["id"].GetStringValue(), - }) - - searchResults = append(searchResults, Object{ - Type: model.ObjectTypeLayout_name[int32(record.Fields["layout"].GetNumberValue())], - Id: record.Fields["id"].GetStringValue(), - Name: record.Fields["name"].GetStringValue(), - Icon: icon, - ObjectType: objectTypeName, - SpaceId: spaceId, - RootId: objectShowResp.ObjectView.RootId, - Blocks: a.getBlocks(objectShowResp), - Details: a.getDetails(objectShowResp), - }) - } - } - - // sort after lastModifiedDate to achieve descending sort order across all spaces - sort.Slice(searchResults, func(i, j int) bool { - return searchResults[i].Details[0].Details["lastModifiedDate"].(float64) > searchResults[j].Details[0].Details["lastModifiedDate"].(float64) - }) - - // TODO: solve global pagination vs per space pagination - paginatedResults, hasMore := pagination.Paginate(searchResults, offset, limit) - - pagination.RespondWithPagination(c, http.StatusOK, paginatedResults, len(searchResults), offset, limit, hasMore) -} diff --git a/cmd/api/main.go b/cmd/api/main.go index b443cc27c..2d2506304 100644 --- a/cmd/api/main.go +++ b/cmd/api/main.go @@ -12,7 +12,10 @@ import ( "github.com/webstradev/gin-pagination/v2/pkg/pagination" + "github.com/anyproto/anytype-heart/cmd/api/auth" _ "github.com/anyproto/anytype-heart/cmd/api/docs" + "github.com/anyproto/anytype-heart/cmd/api/object" + "github.com/anyproto/anytype-heart/cmd/api/search" "github.com/anyproto/anytype-heart/cmd/api/space" "github.com/anyproto/anytype-heart/core" "github.com/anyproto/anytype-heart/pb/service" @@ -30,8 +33,11 @@ type ApiServer struct { router *gin.Engine server *http.Server - accountInfo *model.AccountInfo - spaceService *space.SpaceService + accountInfo *model.AccountInfo + authService *auth.AuthService + objectService *object.ObjectService + spaceService *space.SpaceService + searchService *search.SearchService } // TODO: User represents an authenticated user with permissions @@ -42,10 +48,13 @@ type User struct { func newApiServer(mw service.ClientCommandsServer, mwInternal core.MiddlewareInternal) *ApiServer { a := &ApiServer{ - mw: mw, - mwInternal: mwInternal, - router: gin.Default(), - spaceService: space.NewService(mw), + mw: mw, + mwInternal: mwInternal, + router: gin.Default(), + authService: auth.NewService(mw), + objectService: object.NewService(mw), + spaceService: space.NewService(mw), + searchService: search.NewService(mw), } a.server = &http.Server{ @@ -91,10 +100,10 @@ func RunApiServer(ctx context.Context, mw service.ClientCommandsServer, mwIntern a.router.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) // Unprotected routes - auth := a.router.Group("/v1/auth") + authRouter := a.router.Group("/v1/auth") { - auth.POST("/displayCode", a.authDisplayCodeHandler) - auth.GET("/token", a.authTokenHandler) + authRouter.POST("/displayCode", auth.AuthDisplayCodeHandler(a.authService)) + authRouter.GET("/token", auth.AuthTokenHandler(a.authService)) } // Read-only routes @@ -104,11 +113,11 @@ func RunApiServer(ctx context.Context, mw service.ClientCommandsServer, mwIntern { readOnly.GET("/spaces", paginator, space.GetSpacesHandler(a.spaceService)) readOnly.GET("/spaces/:space_id/members", paginator, space.GetMembersHandler(a.spaceService)) - readOnly.GET("/spaces/:space_id/objects", paginator, a.getObjectsHandler) - readOnly.GET("/spaces/:space_id/objects/:object_id", a.getObjectHandler) - readOnly.GET("/spaces/:space_id/objectTypes", paginator, a.getObjectTypesHandler) - readOnly.GET("/spaces/:space_id/objectTypes/:typeId/templates", paginator, a.getObjectTypeTemplatesHandler) - readOnly.GET("/search", paginator, a.searchHandler) + readOnly.GET("/spaces/:space_id/objects", paginator, object.GetObjectsHandler(a.objectService)) + readOnly.GET("/spaces/:space_id/objects/:object_id", object.GetObjectHandler(a.objectService)) + readOnly.GET("/spaces/:space_id/objectTypes", paginator, object.GetObjectTypesHandler(a.objectService)) + readOnly.GET("/spaces/:space_id/objectTypes/:typeId/templates", paginator, object.GetObjectTypeTemplatesHandler(a.objectService)) + readOnly.GET("/search", paginator, search.SearchHandler(a.searchService)) } // Read-write routes @@ -117,8 +126,8 @@ func RunApiServer(ctx context.Context, mw service.ClientCommandsServer, mwIntern // readWrite.Use(a.PermissionMiddleware("read-write")) { // readWrite.POST("/spaces", a.createSpaceHandler) - readWrite.POST("/spaces/:space_id/objects", a.createObjectHandler) - readWrite.PUT("/spaces/:space_id/objects/:object_id", a.updateObjectHandler) + readWrite.POST("/spaces/:space_id/objects", object.CreateObjectHandler(a.objectService)) + readWrite.PUT("/spaces/:space_id/objects/:object_id", object.UpdateObjectHandler(a.objectService)) } // Start the HTTP server diff --git a/cmd/api/middleware.go b/cmd/api/middleware.go index 882d659a4..b1b9caec3 100644 --- a/cmd/api/middleware.go +++ b/cmd/api/middleware.go @@ -27,7 +27,9 @@ func (a *ApiServer) initAccountInfo() gin.HandlerFunc { } a.accountInfo = accInfo + a.objectService.AccountInfo = accInfo a.spaceService.AccountInfo = accInfo + a.searchService.AccountInfo = accInfo c.Next() } } diff --git a/cmd/api/object/handler.go b/cmd/api/object/handler.go new file mode 100644 index 000000000..b7be68fe9 --- /dev/null +++ b/cmd/api/object/handler.go @@ -0,0 +1,424 @@ +package object + +import ( + "net/http" + + "github.com/gin-gonic/gin" + "github.com/gogo/protobuf/types" + + "github.com/anyproto/anytype-heart/cmd/api/pagination" + "github.com/anyproto/anytype-heart/cmd/api/util" + "github.com/anyproto/anytype-heart/pb" + "github.com/anyproto/anytype-heart/pkg/lib/bundle" + "github.com/anyproto/anytype-heart/pkg/lib/pb/model" + "github.com/anyproto/anytype-heart/util/pbtypes" +) + +type CreateObjectRequest struct { + Name string `json:"name"` + Icon string `json:"icon"` + TemplateId string `json:"template_id"` + ObjectTypeUniqueKey string `json:"object_type_unique_key"` + WithChat bool `json:"with_chat"` +} + +// GetObjectsHandler retrieves objects in a specific space +// +// @Summary Retrieve objects in a specific space +// @Tags space_objects +// @Accept json +// @Produce json +// @Param space_id path string true "The ID of the space" +// @Param offset query int false "The number of items to skip before starting to collect the result set" +// @Param limit query int false "The number of items to return" default(100) +// @Success 200 {object} map[string][]Object "List of objects" +// @Failure 403 {object} util.UnauthorizedError "Unauthorized" +// @Failure 404 {object} util.NotFoundError "Resource not found" +// @Failure 502 {object} util.ServerError "Internal server error" +// @Router /spaces/{space_id}/objects [get] +func GetObjectsHandler(s *ObjectService) gin.HandlerFunc { + return func(c *gin.Context) { + spaceId := c.Param("space_id") + offset := c.GetInt("offset") + limit := c.GetInt("limit") + + resp := s.mw.ObjectSearch(c.Request.Context(), &pb.RpcObjectSearchRequest{ + SpaceId: spaceId, + Filters: []*model.BlockContentDataviewFilter{ + { + RelationKey: bundle.RelationKeyLayout.String(), + Condition: model.BlockContentDataviewFilter_In, + Value: pbtypes.IntList([]int{ + int(model.ObjectType_basic), + int(model.ObjectType_profile), + int(model.ObjectType_todo), + int(model.ObjectType_note), + int(model.ObjectType_bookmark), + int(model.ObjectType_set), + int(model.ObjectType_collection), + int(model.ObjectType_participant), + }...), + }, + }, + Sorts: []*model.BlockContentDataviewSort{{ + RelationKey: bundle.RelationKeyLastModifiedDate.String(), + Type: model.BlockContentDataviewSort_Desc, + Format: model.RelationFormat_longtext, + IncludeTime: true, + EmptyPlacement: model.BlockContentDataviewSort_NotSpecified, + }}, + Keys: []string{"id", "name", "type", "layout", "iconEmoji", "iconImage"}, + }) + + if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { + c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to retrieve list of objects."}) + return + } + + if len(resp.Records) == 0 { + c.JSON(http.StatusNotFound, gin.H{"message": "No objects found."}) + return + } + + paginatedObjects, hasMore := pagination.Paginate(resp.Records, offset, limit) + objects := make([]Object, 0, len(paginatedObjects)) + + for _, record := range paginatedObjects { + icon := util.GetIconFromEmojiOrImage(s.AccountInfo, record.Fields["iconEmoji"].GetStringValue(), record.Fields["iconImage"].GetStringValue()) + objectTypeName, err := util.ResolveTypeToName(s.mw, spaceId, record.Fields["type"].GetStringValue()) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to resolve object type name."}) + return + } + + objectShowResp := s.mw.ObjectShow(c.Request.Context(), &pb.RpcObjectShowRequest{ + SpaceId: spaceId, + ObjectId: record.Fields["id"].GetStringValue(), + }) + + object := Object{ + // TODO fix type inconsistency + Type: model.ObjectTypeLayout_name[int32(record.Fields["layout"].GetNumberValue())], + Id: record.Fields["id"].GetStringValue(), + Name: record.Fields["name"].GetStringValue(), + Icon: icon, + ObjectType: objectTypeName, + SpaceId: spaceId, + RootId: objectShowResp.ObjectView.RootId, + Blocks: s.GetBlocks(objectShowResp), + Details: s.GetDetails(objectShowResp), + } + + objects = append(objects, object) + } + + pagination.RespondWithPagination(c, http.StatusOK, objects, len(resp.Records), offset, limit, hasMore) + } +} + +// GetObjectHandler retrieves a specific object in a space +// +// @Summary Retrieve a specific object in a space +// @Tags space_objects +// @Accept json +// @Produce json +// @Param space_id path string true "The ID of the space" +// @Param object_id path string true "The ID of the object" +// @Success 200 {object} Object "The requested object" +// @Failure 403 {object} util.UnauthorizedError "Unauthorized" +// @Failure 404 {object} util.NotFoundError "Resource not found" +// @Failure 502 {object} util.ServerError "Internal server error" +// @Router /spaces/{space_id}/objects/{object_id} [get] +func GetObjectHandler(s *ObjectService) gin.HandlerFunc { + return func(c *gin.Context) { + spaceId := c.Param("space_id") + objectId := c.Param("object_id") + + resp := s.mw.ObjectShow(c.Request.Context(), &pb.RpcObjectShowRequest{ + SpaceId: spaceId, + ObjectId: objectId, + }) + + if resp.Error.Code != pb.RpcObjectShowResponseError_NULL { + if resp.Error.Code == pb.RpcObjectShowResponseError_NOT_FOUND { + c.JSON(http.StatusNotFound, gin.H{"message": "Object not found", "space_id": spaceId, "object_id": objectId}) + return + } + c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to retrieve object."}) + return + } + + objectTypeName, err := util.ResolveTypeToName(s.mw, spaceId, resp.ObjectView.Details[0].Details.Fields["type"].GetStringValue()) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to resolve object type name."}) + return + } + + object := Object{ + Type: "object", + Id: objectId, + Name: resp.ObjectView.Details[0].Details.Fields["name"].GetStringValue(), + Icon: resp.ObjectView.Details[0].Details.Fields["iconEmoji"].GetStringValue(), + ObjectType: objectTypeName, + RootId: resp.ObjectView.RootId, + Blocks: s.GetBlocks(resp), + Details: s.GetDetails(resp), + } + + c.JSON(http.StatusOK, gin.H{"object": object}) + } +} + +// CreateObjectHandler creates a new object in a specific space +// +// @Summary Create a new object in a specific space +// @Tags space_objects +// @Accept json +// @Produce json +// @Param space_id path string true "The ID of the space" +// @Param object body map[string]string true "Object details (e.g., name)" +// @Success 200 {object} Object "The created object" +// @Failure 403 {object} util.UnauthorizedError "Unauthorized" +// @Failure 502 {object} util.ServerError "Internal server error" +// @Router /spaces/{space_id}/objects [post] +func CreateObjectHandler(s *ObjectService) gin.HandlerFunc { + return func(c *gin.Context) { + spaceId := c.Param("space_id") + + request := CreateObjectRequest{} + if err := c.BindJSON(&request); err != nil { + c.JSON(http.StatusBadRequest, gin.H{"message": "Invalid JSON"}) + return + } + + resp := s.mw.ObjectCreate(c.Request.Context(), &pb.RpcObjectCreateRequest{ + Details: &types.Struct{ + Fields: map[string]*types.Value{ + "name": pbtypes.String(request.Name), + "iconEmoji": pbtypes.String(request.Icon), + }, + }, + TemplateId: request.TemplateId, + SpaceId: spaceId, + ObjectTypeUniqueKey: request.ObjectTypeUniqueKey, + WithChat: request.WithChat, + }) + + if resp.Error.Code != pb.RpcObjectCreateResponseError_NULL { + c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to create a new object."}) + return + } + + object := Object{ + Type: "object", + Id: resp.ObjectId, + Name: resp.Details.Fields["name"].GetStringValue(), + Icon: resp.Details.Fields["iconEmoji"].GetStringValue(), + ObjectType: request.ObjectTypeUniqueKey, + SpaceId: resp.Details.Fields["spaceId"].GetStringValue(), + // TODO populate other fields + // RootId: resp.RootId, + // Blocks: []Block{}, + // Details: []Detail{}, + } + + c.JSON(http.StatusOK, gin.H{"object": object}) + } +} + +// UpdateObjectHandler updates an existing object in a specific space +// +// @Summary Update an existing object in a specific space +// @Tags space_objects +// @Accept json +// @Produce json +// @Param space_id path string true "The ID of the space" +// @Param object_id path string true "The ID of the object" +// @Param object body Object true "The updated object details" +// @Success 200 {object} Object "The updated object" +// @Failure 403 {object} util.UnauthorizedError "Unauthorized" +// @Failure 404 {object} util.NotFoundError "Resource not found" +// @Failure 502 {object} util.ServerError "Internal server error" +// @Router /spaces/{space_id}/objects/{object_id} [put] +func UpdateObjectHandler(s *ObjectService) gin.HandlerFunc { + return func(c *gin.Context) { + spaceId := c.Param("space_id") + objectId := c.Param("object_id") + // TODO: Implement logic to update an existing object + c.JSON(http.StatusNotImplemented, gin.H{"message": "Not implemented yet", "space_id": spaceId, "object_id": objectId}) + } +} + +// GetObjectTypesHandler retrieves object types in a specific space +// +// @Summary Retrieve object types in a specific space +// @Tags types_and_templates +// @Accept json +// @Produce json +// @Param space_id path string true "The ID of the space" +// @Param offset query int false "The number of items to skip before starting to collect the result set" +// @Param limit query int false "The number of items to return" default(100) +// @Success 200 {object} map[string]ObjectType "List of object types" +// @Failure 403 {object} util.UnauthorizedError "Unauthorized" +// @Failure 404 {object} util.NotFoundError "Resource not found" +// @Failure 502 {object} util.ServerError "Internal server error" +// @Router /spaces/{space_id}/objectTypes [get] +func GetObjectTypesHandler(s *ObjectService) gin.HandlerFunc { + return func(c *gin.Context) { + spaceId := c.Param("space_id") + offset := c.GetInt("offset") + limit := c.GetInt("limit") + + resp := s.mw.ObjectSearch(c.Request.Context(), &pb.RpcObjectSearchRequest{ + SpaceId: spaceId, + Filters: []*model.BlockContentDataviewFilter{ + { + RelationKey: bundle.RelationKeyLayout.String(), + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.Int64(int64(model.ObjectType_objectType)), + }, + { + RelationKey: bundle.RelationKeyIsHidden.String(), + Condition: model.BlockContentDataviewFilter_NotEqual, + Value: pbtypes.Bool(true), + }, + }, + Sorts: []*model.BlockContentDataviewSort{ + { + RelationKey: "name", + Type: model.BlockContentDataviewSort_Asc, + }, + }, + Keys: []string{"id", "uniqueKey", "name", "iconEmoji"}, + }) + + if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { + c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to retrieve object types."}) + return + } + + if len(resp.Records) == 0 { + c.JSON(http.StatusNotFound, gin.H{"message": "No object types found."}) + return + } + + paginatedTypes, hasMore := pagination.Paginate(resp.Records, offset, limit) + objectTypes := make([]ObjectType, 0, len(paginatedTypes)) + + for _, record := range paginatedTypes { + objectTypes = append(objectTypes, ObjectType{ + Type: "object_type", + Id: record.Fields["id"].GetStringValue(), + UniqueKey: record.Fields["uniqueKey"].GetStringValue(), + Name: record.Fields["name"].GetStringValue(), + Icon: record.Fields["iconEmoji"].GetStringValue(), + }) + } + + pagination.RespondWithPagination(c, http.StatusOK, objectTypes, len(resp.Records), offset, limit, hasMore) + } +} + +// GetObjectTypeTemplatesHandler retrieves a list of templates for a specific object type in a space +// +// @Summary Retrieve a list of templates for a specific object type in a space +// @Tags types_and_templates +// @Accept json +// @Produce json +// @Param space_id path string true "The ID of the space" +// @Param typeId path string true "The ID of the object type" +// @Param offset query int false "The number of items to skip before starting to collect the result set" +// @Param limit query int false "The number of items to return" default(100) +// @Success 200 {object} map[string][]ObjectTemplate "List of templates" +// @Failure 403 {object} util.UnauthorizedError "Unauthorized" +// @Failure 404 {object} util.NotFoundError "Resource not found" +// @Failure 502 {object} util.ServerError "Internal server error" +// @Router /spaces/{space_id}/objectTypes/{typeId}/templates [get] +func GetObjectTypeTemplatesHandler(s *ObjectService) gin.HandlerFunc { + return func(c *gin.Context) { + spaceId := c.Param("space_id") + typeId := c.Param("typeId") + offset := c.GetInt("offset") + limit := c.GetInt("limit") + + // First, determine the type ID of "ot-template" in the space + templateTypeIdResp := s.mw.ObjectSearch(c.Request.Context(), &pb.RpcObjectSearchRequest{ + SpaceId: spaceId, + Filters: []*model.BlockContentDataviewFilter{ + { + RelationKey: bundle.RelationKeyUniqueKey.String(), + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.String("ot-template"), + }, + }, + Keys: []string{"id"}, + }) + + if templateTypeIdResp.Error.Code != pb.RpcObjectSearchResponseError_NULL { + c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to retrieve template type."}) + return + } + + if len(templateTypeIdResp.Records) == 0 { + c.JSON(http.StatusNotFound, gin.H{"message": "Template type not found."}) + return + } + + templateTypeId := templateTypeIdResp.Records[0].Fields["id"].GetStringValue() + + // Then, search all objects of the template type and filter by the target object type + templateObjectsResp := s.mw.ObjectSearch(c.Request.Context(), &pb.RpcObjectSearchRequest{ + SpaceId: spaceId, + Filters: []*model.BlockContentDataviewFilter{ + { + RelationKey: bundle.RelationKeyType.String(), + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.String(templateTypeId), + }, + }, + Keys: []string{"id", "targetObjectType", "name", "iconEmoji"}, + }) + + if templateObjectsResp.Error.Code != pb.RpcObjectSearchResponseError_NULL { + c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to retrieve template objects."}) + return + } + + if len(templateObjectsResp.Records) == 0 { + c.JSON(http.StatusNotFound, gin.H{"message": "No templates found."}) + return + } + + templateIds := make([]string, 0) + for _, record := range templateObjectsResp.Records { + if record.Fields["targetObjectType"].GetStringValue() == typeId { + templateIds = append(templateIds, record.Fields["id"].GetStringValue()) + } + } + + // Finally, open each template and populate the response + paginatedTemplates, hasMore := pagination.Paginate(templateIds, offset, limit) + templates := make([]ObjectTemplate, 0, len(paginatedTemplates)) + + for _, templateId := range paginatedTemplates { + templateResp := s.mw.ObjectShow(c.Request.Context(), &pb.RpcObjectShowRequest{ + SpaceId: spaceId, + ObjectId: templateId, + }) + + if templateResp.Error.Code != pb.RpcObjectShowResponseError_NULL { + c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to retrieve template."}) + return + } + + templates = append(templates, ObjectTemplate{ + Type: "object_template", + Id: templateId, + Name: templateResp.ObjectView.Details[0].Details.Fields["name"].GetStringValue(), + Icon: templateResp.ObjectView.Details[0].Details.Fields["iconEmoji"].GetStringValue(), + }) + } + + pagination.RespondWithPagination(c, http.StatusOK, templates, len(templateIds), offset, limit, hasMore) + } +} diff --git a/cmd/api/schemas.go b/cmd/api/object/model.go similarity index 78% rename from cmd/api/schemas.go rename to cmd/api/object/model.go index 5ec8247f4..a77d6b94f 100644 --- a/cmd/api/schemas.go +++ b/cmd/api/object/model.go @@ -1,13 +1,4 @@ -package api - -type AuthDisplayCodeResponse struct { - ChallengeId string `json:"challenge_id" example:"67647f5ecda913e9a2e11b26"` -} - -type AuthTokenResponse struct { - SessionToken string `json:"session_token" example:""` - AppKey string `json:"app_key" example:""` -} +package object type Object struct { Type string `json:"type" example:"object"` @@ -76,27 +67,3 @@ type ObjectTemplate struct { Name string `json:"name" example:"Object Template Name"` Icon string `json:"icon" example:"📄"` } - -type ServerError struct { - Error struct { - Message string `json:"message"` - } `json:"error"` -} - -type ValidationError struct { - Error struct { - Message string `json:"message"` - } `json:"error"` -} - -type UnauthorizedError struct { - Error struct { - Message string `json:"message"` - } `json:"error"` -} - -type NotFoundError struct { - Error struct { - Message string `json:"message"` - } `json:"error"` -} diff --git a/cmd/api/helper.go b/cmd/api/object/service.go similarity index 61% rename from cmd/api/helper.go rename to cmd/api/object/service.go index 1c4db84d8..34be383f1 100644 --- a/cmd/api/helper.go +++ b/cmd/api/object/service.go @@ -1,50 +1,119 @@ -package api +package object import ( - "context" - "net/http" - "strings" + "errors" - "github.com/anyproto/anytype-heart/cmd/api/utils" + "github.com/anyproto/anytype-heart/cmd/api/util" "github.com/anyproto/anytype-heart/pb" - "github.com/anyproto/anytype-heart/pkg/lib/bundle" + "github.com/anyproto/anytype-heart/pb/service" "github.com/anyproto/anytype-heart/pkg/lib/pb/model" - "github.com/anyproto/anytype-heart/util/pbtypes" ) -// resolveTypeToName resolves the type ID to the name of the type, e.g. "ot-page" to "Page" or "bafyreigyb6l5szohs32ts26ku2j42yd65e6hqy2u3gtzgdwqv6hzftsetu" to "Custom Type" -func (a *ApiServer) resolveTypeToName(spaceId string, typeId string) (typeName string, statusCode int, errorMessage string) { - // Can't look up preinstalled types based on relation key, therefore need to use unique key - relKey := bundle.RelationKeyId.String() - if strings.Contains(typeId, "ot-") { - relKey = bundle.RelationKeyUniqueKey.String() - } +var ( + ErrFailedGenerateChallenge = errors.New("failed to generate a new challenge") + ErrInvalidInput = errors.New("invalid input") + ErrorFailedAuthenticate = errors.New("failed to authenticate user") +) - // Call ObjectSearch for object of specified type and return the name - resp := a.mw.ObjectSearch(context.Background(), &pb.RpcObjectSearchRequest{ - SpaceId: spaceId, - Filters: []*model.BlockContentDataviewFilter{ - { - RelationKey: relKey, - Condition: model.BlockContentDataviewFilter_Equal, - Value: pbtypes.String(typeId), - }, - }, - }) - - if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { - return "", http.StatusInternalServerError, "Failed to search for type." - } - - if len(resp.Records) == 0 { - return "", http.StatusNotFound, "Type not found." - } - - return resp.Records[0].Fields["name"].GetStringValue(), http.StatusOK, "" +type Service interface { + ListObjects() ([]Object, error) + GetObject(id string) (Object, error) + CreateObject(obj Object) (Object, error) + UpdateObject(obj Object) (Object, error) + ListTypes() ([]ObjectType, error) + ListTemplates() ([]ObjectTemplate, error) } -// getBlocks returns the blocks of the object -func (a *ApiServer) getBlocks(resp *pb.RpcObjectShowResponse) []Block { +type ObjectService struct { + mw service.ClientCommandsServer + AccountInfo *model.AccountInfo +} + +func NewService(mw service.ClientCommandsServer) *ObjectService { + return &ObjectService{mw: mw} +} + +func (s *ObjectService) ListObjects() ([]Object, error) { + // TODO + return nil, nil +} + +func (s *ObjectService) GetObject(id string) (Object, error) { + // TODO + return Object{}, nil +} + +func (s *ObjectService) CreateObject(obj Object) (Object, error) { + // TODO + return Object{}, nil +} + +func (s *ObjectService) UpdateObject(obj Object) (Object, error) { + // TODO + return Object{}, nil +} + +func (s *ObjectService) ListTypes() ([]ObjectType, error) { + // TODO + return nil, nil +} + +func (s *ObjectService) ListTemplates() ([]ObjectTemplate, error) { + // TODO + return nil, nil +} + +// GetDetails returns the details of the object +func (s *ObjectService) GetDetails(resp *pb.RpcObjectShowResponse) []Detail { + return []Detail{ + { + Id: "lastModifiedDate", + Details: map[string]interface{}{ + "lastModifiedDate": resp.ObjectView.Details[0].Details.Fields["lastModifiedDate"].GetNumberValue(), + }, + }, + { + Id: "createdDate", + Details: map[string]interface{}{ + "createdDate": resp.ObjectView.Details[0].Details.Fields["createdDate"].GetNumberValue(), + }, + }, + { + Id: "tags", + Details: map[string]interface{}{ + "tags": s.getTags(resp), + }, + }, + } +} + +// getTags returns the list of tags from the object details +func (s *ObjectService) getTags(resp *pb.RpcObjectShowResponse) []Tag { + tags := []Tag{} + + tagField, ok := resp.ObjectView.Details[0].Details.Fields["tag"] + if !ok { + return tags + } + + for _, tagId := range tagField.GetListValue().Values { + id := tagId.GetStringValue() + for _, detail := range resp.ObjectView.Details { + if detail.Id == id { + tags = append(tags, Tag{ + Id: id, + Name: detail.Details.Fields["name"].GetStringValue(), + Color: detail.Details.Fields["relationOptionColor"].GetStringValue(), + }) + break + } + } + } + return tags +} + +// GetBlocks returns the blocks of the object +func (s *ObjectService) GetBlocks(resp *pb.RpcObjectShowResponse) []Block { blocks := []Block{} for _, block := range resp.ObjectView.Blocks { @@ -58,7 +127,7 @@ func (a *ApiServer) getBlocks(resp *pb.RpcObjectShowResponse) []Block { Style: model.BlockContentTextStyle_name[int32(content.Text.Style)], Checked: content.Text.Checked, Color: content.Text.Color, - Icon: utils.GetIconFromEmojiOrImage(a.accountInfo, content.Text.IconEmoji, content.Text.IconImage), + Icon: util.GetIconFromEmojiOrImage(s.AccountInfo, content.Text.IconEmoji, content.Text.IconImage), } case *model.BlockContentOfFile: file = &File{ @@ -116,52 +185,3 @@ func mapVerticalAlign(align model.BlockVerticalAlign) string { return "unknown" } } - -// getDetails returns the details of the object -func (a *ApiServer) getDetails(resp *pb.RpcObjectShowResponse) []Detail { - return []Detail{ - { - Id: "lastModifiedDate", - Details: map[string]interface{}{ - "lastModifiedDate": resp.ObjectView.Details[0].Details.Fields["lastModifiedDate"].GetNumberValue(), - }, - }, - { - Id: "createdDate", - Details: map[string]interface{}{ - "createdDate": resp.ObjectView.Details[0].Details.Fields["createdDate"].GetNumberValue(), - }, - }, - { - Id: "tags", - Details: map[string]interface{}{ - "tags": a.getTags(resp), - }, - }, - } -} - -// getTags returns the list of tags from the object details -func (a *ApiServer) getTags(resp *pb.RpcObjectShowResponse) []Tag { - tags := []Tag{} - - tagField, ok := resp.ObjectView.Details[0].Details.Fields["tag"] - if !ok { - return tags - } - - for _, tagId := range tagField.GetListValue().Values { - id := tagId.GetStringValue() - for _, detail := range resp.ObjectView.Details { - if detail.Id == id { - tags = append(tags, Tag{ - Id: id, - Name: detail.Details.Fields["name"].GetStringValue(), - Color: detail.Details.Fields["relationOptionColor"].GetStringValue(), - }) - break - } - } - } - return tags -} diff --git a/cmd/api/search/handler.go b/cmd/api/search/handler.go new file mode 100644 index 000000000..c60514fdd --- /dev/null +++ b/cmd/api/search/handler.go @@ -0,0 +1,50 @@ +package search + +import ( + "net/http" + + "github.com/gin-gonic/gin" + + "github.com/anyproto/anytype-heart/cmd/api/pagination" + "github.com/anyproto/anytype-heart/cmd/api/space" + "github.com/anyproto/anytype-heart/cmd/api/util" +) + +// SearchHandler searches and retrieves objects across all the spaces +// +// @Summary Search and retrieve objects across all the spaces +// @Tags search +// @Accept json +// @Produce json +// @Param query query string false "The search term to filter objects by name" +// @Param object_type query string false "Specify object.Object type for search" +// @Param offset query int false "The number of items to skip before starting to collect the result set" +// @Param limit query int false "The number of items to return" default(100) +// @Success 200 {object} map[string][]object.Object "List of objects" +// @Failure 403 {object} util.UnauthorizedError "Unauthorized" +// @Failure 404 {object} util.NotFoundError "Resource not found" +// @Failure 502 {object} util.ServerError "Internal server error" +// @Router /search [get] +func SearchHandler(s *SearchService) gin.HandlerFunc { + return func(c *gin.Context) { + searchQuery := c.Query("query") + objectType := c.Query("object_type") + offset := c.GetInt("offset") + limit := c.GetInt("limit") + + objects, total, hasMore, err := s.Search(c, searchQuery, objectType, offset, limit) + code := util.MapErrorCode(err, + util.ErrToCode(ErrNoObjectsFound, http.StatusNotFound), + util.ErrToCode(ErrFailedSearchObjects, http.StatusInternalServerError), + util.ErrToCode(space.ErrNoSpacesFound, http.StatusNotFound), + ) + + if code != http.StatusOK { + apiErr := util.CodeToAPIError(code, err.Error()) + c.JSON(code, apiErr) + return + } + + pagination.RespondWithPagination(c, http.StatusOK, objects, total, offset, limit, hasMore) + } +} diff --git a/cmd/api/search/service.go b/cmd/api/search/service.go new file mode 100644 index 000000000..0637285c7 --- /dev/null +++ b/cmd/api/search/service.go @@ -0,0 +1,151 @@ +package search + +import ( + "context" + "errors" + "sort" + + "github.com/anyproto/anytype-heart/cmd/api/object" + "github.com/anyproto/anytype-heart/cmd/api/pagination" + "github.com/anyproto/anytype-heart/cmd/api/space" + "github.com/anyproto/anytype-heart/cmd/api/util" + "github.com/anyproto/anytype-heart/pb" + "github.com/anyproto/anytype-heart/pb/service" + "github.com/anyproto/anytype-heart/pkg/lib/bundle" + "github.com/anyproto/anytype-heart/pkg/lib/pb/model" + "github.com/anyproto/anytype-heart/util/pbtypes" +) + +var ( + ErrFailedSearchObjects = errors.New("failed to retrieve objects from space") + ErrNoObjectsFound = errors.New("no objects found") +) + +type Service interface { + Search(ctx context.Context) ([]object.Object, error) +} + +type SearchService struct { + mw service.ClientCommandsServer + spaceService *space.SpaceService + objectService *object.ObjectService + AccountInfo *model.AccountInfo +} + +func NewService(mw service.ClientCommandsServer) *SearchService { + return &SearchService{mw: mw, spaceService: space.NewService(mw), objectService: object.NewService(mw)} +} + +func (s *SearchService) Search(ctx context.Context, searchQuery string, objectType string, offset, limit int) (objects []object.Object, total int, hasMore bool, err error) { + spaces, _, _, err := s.spaceService.ListSpaces(ctx, 0, 100) + if err != nil { + return nil, 0, false, err + } + + // Then, get objects from each space that match the search parameters + var filters = []*model.BlockContentDataviewFilter{ + { + RelationKey: bundle.RelationKeyLayout.String(), + Condition: model.BlockContentDataviewFilter_In, + Value: pbtypes.IntList([]int{ + int(model.ObjectType_basic), + int(model.ObjectType_profile), + int(model.ObjectType_todo), + int(model.ObjectType_note), + int(model.ObjectType_bookmark), + int(model.ObjectType_set), + int(model.ObjectType_collection), + int(model.ObjectType_participant), + }...), + }, + { + RelationKey: bundle.RelationKeyIsHidden.String(), + Condition: model.BlockContentDataviewFilter_NotEqual, + Value: pbtypes.Bool(true), + }, + } + + if searchQuery != "" { + // TODO also include snippet for notes + filters = append(filters, &model.BlockContentDataviewFilter{ + RelationKey: bundle.RelationKeyName.String(), + Condition: model.BlockContentDataviewFilter_Like, + Value: pbtypes.String(searchQuery), + }) + } + + if objectType != "" { + filters = append(filters, &model.BlockContentDataviewFilter{ + RelationKey: bundle.RelationKeyType.String(), + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.String(objectType), + }) + } + + results := make([]object.Object, 0) + for _, space := range spaces { + spaceId := space.Id + objResp := s.mw.ObjectSearch(ctx, &pb.RpcObjectSearchRequest{ + SpaceId: spaceId, + Filters: filters, + Sorts: []*model.BlockContentDataviewSort{{ + RelationKey: bundle.RelationKeyLastModifiedDate.String(), + Type: model.BlockContentDataviewSort_Desc, + Format: model.RelationFormat_longtext, + IncludeTime: true, + EmptyPlacement: model.BlockContentDataviewSort_NotSpecified, + }}, + Keys: []string{"id", "name", "type", "layout", "iconEmoji", "iconImage"}, + // TODO split limit between spaces + // Limit: paginationLimitPerSpace, + // FullText: searchTerm, + }) + + if objResp.Error.Code != pb.RpcObjectSearchResponseError_NULL { + return nil, 0, false, ErrFailedSearchObjects + } + + if len(objResp.Records) == 0 { + continue + } + + for _, record := range objResp.Records { + icon := util.GetIconFromEmojiOrImage(s.AccountInfo, record.Fields["iconEmoji"].GetStringValue(), record.Fields["iconImage"].GetStringValue()) + objectTypeName, err := util.ResolveTypeToName(s.mw, spaceId, record.Fields["type"].GetStringValue()) + if err != nil { + return nil, 0, false, err + } + + showResp := s.mw.ObjectShow(ctx, &pb.RpcObjectShowRequest{ + SpaceId: spaceId, + ObjectId: record.Fields["id"].GetStringValue(), + }) + + results = append(results, object.Object{ + Type: model.ObjectTypeLayout_name[int32(record.Fields["layout"].GetNumberValue())], + Id: record.Fields["id"].GetStringValue(), + Name: record.Fields["name"].GetStringValue(), + Icon: icon, + ObjectType: objectTypeName, + SpaceId: spaceId, + RootId: showResp.ObjectView.RootId, + Blocks: s.objectService.GetBlocks(showResp), + Details: s.objectService.GetDetails(showResp), + }) + } + } + + if len(results) == 0 { + return nil, 0, false, ErrNoObjectsFound + } + + // sort after lastModifiedDate to achieve descending sort order across all spaces + sort.Slice(results, func(i, j int) bool { + return results[i].Details[0].Details["lastModifiedDate"].(float64) > results[j].Details[0].Details["lastModifiedDate"].(float64) + }) + + // TODO: solve global pagination vs per space pagination + total = len(results) + paginatedResults, hasMore := pagination.Paginate(results, offset, limit) + return paginatedResults, total, hasMore, nil +} diff --git a/cmd/api/space/handler.go b/cmd/api/space/handler.go index dd9ebb0bb..650f3c120 100644 --- a/cmd/api/space/handler.go +++ b/cmd/api/space/handler.go @@ -1,12 +1,12 @@ package space import ( - "errors" "net/http" "github.com/gin-gonic/gin" "github.com/anyproto/anytype-heart/cmd/api/pagination" + "github.com/anyproto/anytype-heart/cmd/api/util" ) // GetSpacesHandler retrieves a list of spaces @@ -18,9 +18,9 @@ import ( // @Param offset query int false "The number of items to skip before starting to collect the result set" // @Param limit query int false "The number of items to return" default(100) // @Success 200 {object} pagination.PaginatedResponse[Space] "List of spaces" -// @Failure 403 {object} api.UnauthorizedError "Unauthorized" -// @Failure 404 {object} api.NotFoundError "Resource not found" -// @Failure 502 {object} api.ServerError "Internal server error" +// @Failure 403 {object} util.UnauthorizedError "Unauthorized" +// @Failure 404 {object} util.NotFoundError "Resource not found" +// @Failure 502 {object} util.ServerError "Internal server error" // @Router /spaces [get] func GetSpacesHandler(s *SpaceService) gin.HandlerFunc { return func(c *gin.Context) { @@ -28,20 +28,16 @@ func GetSpacesHandler(s *SpaceService) gin.HandlerFunc { limit := c.GetInt("limit") spaces, total, hasMore, err := s.ListSpaces(c.Request.Context(), offset, limit) - if err != nil { - switch { - case errors.Is(err, ErrNoSpacesFound): - c.JSON(http.StatusNotFound, gin.H{"message": "No spaces found."}) - return - case errors.Is(err, ErrFailedListSpaces): - c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to retrieve list of spaces."}) - return - case errors.Is(err, ErrFailedOpenWorkspace): - c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to open workspace."}) - default: - c.JSON(http.StatusInternalServerError, gin.H{"message": err.Error()}) - return - } + code := util.MapErrorCode(err, + util.ErrToCode(ErrNoSpacesFound, http.StatusNotFound), + util.ErrToCode(ErrFailedListSpaces, http.StatusInternalServerError), + util.ErrToCode(ErrFailedOpenWorkspace, http.StatusInternalServerError), + ) + + if code != http.StatusOK { + apiErr := util.CodeToAPIError(code, err.Error()) + c.JSON(code, apiErr) + return } pagination.RespondWithPagination(c, http.StatusOK, spaces, total, offset, limit, hasMore) @@ -56,8 +52,8 @@ func GetSpacesHandler(s *SpaceService) gin.HandlerFunc { // @Produce json // @Param name body string true "Space Name" // @Success 200 {object} CreateSpaceResponse "Space created successfully" -// @Failure 403 {object} api.UnauthorizedError "Unauthorized" -// @Failure 502 {object} api.ServerError "Internal server error" +// @Failure 403 {object} util.UnauthorizedError "Unauthorized" +// @Failure 502 {object} util.ServerError "Internal server error" // @Router /spaces [post] func CreateSpaceHandler(s *SpaceService) gin.HandlerFunc { return func(c *gin.Context) { @@ -69,15 +65,14 @@ func CreateSpaceHandler(s *SpaceService) gin.HandlerFunc { name := nameRequest.Name space, err := s.CreateSpace(c.Request.Context(), name) - if err != nil { - switch { - case errors.Is(err, ErrFailedCreateSpace): - c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to create space."}) - return - default: - c.JSON(http.StatusInternalServerError, gin.H{"message": err.Error()}) - return - } + code := util.MapErrorCode(err, + util.ErrToCode(ErrFailedCreateSpace, http.StatusInternalServerError), + ) + + if code != http.StatusOK { + apiErr := util.CodeToAPIError(code, err.Error()) + c.JSON(code, apiErr) + return } c.JSON(http.StatusOK, CreateSpaceResponse{Space: space}) @@ -94,9 +89,9 @@ func CreateSpaceHandler(s *SpaceService) gin.HandlerFunc { // @Param offset query int false "The number of items to skip before starting to collect the result set" // @Param limit query int false "The number of items to return" default(100) // @Success 200 {object} pagination.PaginatedResponse[Member] "List of members" -// @Failure 403 {object} api.UnauthorizedError "Unauthorized" -// @Failure 404 {object} api.NotFoundError "Resource not found" -// @Failure 502 {object} api.ServerError "Internal server error" +// @Failure 403 {object} util.UnauthorizedError "Unauthorized" +// @Failure 404 {object} util.NotFoundError "Resource not found" +// @Failure 502 {object} util.ServerError "Internal server error" // @Router /spaces/{space_id}/members [get] func GetMembersHandler(s *SpaceService) gin.HandlerFunc { return func(c *gin.Context) { @@ -105,18 +100,15 @@ func GetMembersHandler(s *SpaceService) gin.HandlerFunc { limit := c.GetInt("limit") members, total, hasMore, err := s.ListMembers(c.Request.Context(), spaceId, offset, limit) - if err != nil { - switch { - case errors.Is(err, ErrNoMembersFound): - c.JSON(http.StatusNotFound, gin.H{"message": "No members found."}) - return - case errors.Is(err, ErrFailedListMembers): - c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to retrieve list of members."}) - return - default: - c.JSON(http.StatusInternalServerError, gin.H{"message": err.Error()}) - return - } + code := util.MapErrorCode(err, + util.ErrToCode(ErrNoMembersFound, http.StatusNotFound), + util.ErrToCode(ErrFailedListMembers, http.StatusInternalServerError), + ) + + if code != http.StatusOK { + apiErr := util.CodeToAPIError(code, err.Error()) + c.JSON(code, apiErr) + return } pagination.RespondWithPagination(c, http.StatusOK, members, total, offset, limit, hasMore) diff --git a/cmd/api/space/service.go b/cmd/api/space/service.go index 9ba824149..9900d6f73 100644 --- a/cmd/api/space/service.go +++ b/cmd/api/space/service.go @@ -9,7 +9,7 @@ import ( "github.com/gogo/protobuf/types" "github.com/anyproto/anytype-heart/cmd/api/pagination" - "github.com/anyproto/anytype-heart/cmd/api/utils" + "github.com/anyproto/anytype-heart/cmd/api/util" "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/pb/service" "github.com/anyproto/anytype-heart/pkg/lib/bundle" @@ -92,7 +92,7 @@ func (s *SpaceService) ListSpaces(ctx context.Context, offset int, limit int) (s // TODO: name and icon are only returned here; fix that workspace.Name = record.Fields["name"].GetStringValue() - workspace.Icon = utils.GetIconFromEmojiOrImage(s.AccountInfo, record.Fields["iconEmoji"].GetStringValue(), record.Fields["iconImage"].GetStringValue()) + workspace.Icon = util.GetIconFromEmojiOrImage(s.AccountInfo, record.Fields["iconEmoji"].GetStringValue(), record.Fields["iconImage"].GetStringValue()) spaces = append(spaces, workspace) } @@ -163,7 +163,7 @@ func (s *SpaceService) ListMembers(ctx context.Context, spaceId string, offset i members = make([]Member, 0, len(paginatedMembers)) for _, record := range paginatedMembers { - icon := utils.GetIconFromEmojiOrImage(s.AccountInfo, record.Fields["iconEmoji"].GetStringValue(), record.Fields["iconImage"].GetStringValue()) + icon := util.GetIconFromEmojiOrImage(s.AccountInfo, record.Fields["iconEmoji"].GetStringValue(), record.Fields["iconImage"].GetStringValue()) member := Member{ Type: "space_member", diff --git a/cmd/api/util/error.go b/cmd/api/util/error.go new file mode 100644 index 000000000..543c81eb9 --- /dev/null +++ b/cmd/api/util/error.go @@ -0,0 +1,100 @@ +package util + +import ( + "errors" + "net/http" +) + +type ServerError struct { + Error struct { + Message string `json:"message"` + } `json:"error"` +} + +type ValidationError struct { + Error struct { + Message string `json:"message"` + } `json:"error"` +} + +type UnauthorizedError struct { + Error struct { + Message string `json:"message"` + } `json:"error"` +} + +type NotFoundError struct { + Error struct { + Message string `json:"message"` + } `json:"error"` +} + +type errCodeMapping struct { + target error + code int +} + +// ErrToCode just returns a mapping to pair a target error with a code +func ErrToCode(target error, code int) errCodeMapping { + return errCodeMapping{ + target: target, + code: code, + } +} + +// MapErrorCode checks if err matches any “target†in the mappings, +// returning the first matching code. If none match, returns 500. +func MapErrorCode(err error, mappings ...errCodeMapping) int { + if err == nil { + return http.StatusOK + } + for _, m := range mappings { + if errors.Is(err, m.target) { + return m.code + } + } + + return http.StatusInternalServerError +} + +// CodeToAPIError returns an instance of the correct struct +// for the given HTTP code, embedding the supplied message. +func CodeToAPIError(code int, message string) any { + switch code { + case http.StatusNotFound: + return NotFoundError{ + Error: struct { + Message string `json:"message"` + }{ + Message: message, + }, + } + + case http.StatusUnauthorized: + return UnauthorizedError{ + Error: struct { + Message string `json:"message"` + }{ + Message: message, + }, + } + + case http.StatusBadRequest: + return ValidationError{ + Error: struct { + Message string `json:"message"` + }{ + Message: message, + }, + } + + default: + return ServerError{ + Error: struct { + Message string `json:"message"` + }{ + Message: message, + }, + } + } +} diff --git a/cmd/api/util/util.go b/cmd/api/util/util.go new file mode 100644 index 000000000..2f63d8a1c --- /dev/null +++ b/cmd/api/util/util.go @@ -0,0 +1,72 @@ +package util + +import ( + "context" + "errors" + "fmt" + "strings" + + "github.com/anyproto/anytype-heart/pb" + "github.com/anyproto/anytype-heart/pb/service" + "github.com/anyproto/anytype-heart/pkg/lib/bundle" + "github.com/anyproto/anytype-heart/pkg/lib/pb/model" + "github.com/anyproto/anytype-heart/util/pbtypes" +) + +var ( + ErrFailedSearchType = errors.New("failed to search for type") + ErrorTypeNotFound = errors.New("type not found") +) + +// GetIconFromEmojiOrImage returns the icon to use for the object, which can be either an emoji or an image url +func GetIconFromEmojiOrImage(accountInfo *model.AccountInfo, iconEmoji string, iconImage string) string { + if iconEmoji != "" { + return iconEmoji + } + + if iconImage != "" { + return GetGatewayURLForMedia(accountInfo, iconImage, true) + } + + return "" +} + +// GetGatewayURLForMedia returns the URL of file gateway for the media object with the given ID +func GetGatewayURLForMedia(accountInfo *model.AccountInfo, objectId string, isIcon bool) string { + widthParam := "" + if isIcon { + widthParam = "?width=100" + } + return fmt.Sprintf("%s/image/%s%s", accountInfo.GatewayUrl, objectId, widthParam) +} + +// ResolveTypeToName resolves the type ID to the name of the type, e.g. "ot-page" to "Page" or "bafyreigyb6l5szohs32ts26ku2j42yd65e6hqy2u3gtzgdwqv6hzftsetu" to "Custom Type" +func ResolveTypeToName(mw service.ClientCommandsServer, spaceId string, typeId string) (typeName string, err error) { + // Can't look up preinstalled types based on relation key, therefore need to use unique key + relKey := bundle.RelationKeyId.String() + if strings.Contains(typeId, "ot-") { + relKey = bundle.RelationKeyUniqueKey.String() + } + + // Call ObjectSearch for object of specified type and return the name + resp := mw.ObjectSearch(context.Background(), &pb.RpcObjectSearchRequest{ + SpaceId: spaceId, + Filters: []*model.BlockContentDataviewFilter{ + { + RelationKey: relKey, + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.String(typeId), + }, + }, + }) + + if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { + return "", ErrFailedSearchType + } + + if len(resp.Records) == 0 { + return "", ErrorTypeNotFound + } + + return resp.Records[0].Fields["name"].GetStringValue(), nil +} diff --git a/cmd/api/utils/utils.go b/cmd/api/utils/utils.go deleted file mode 100644 index bd24f7e11..000000000 --- a/cmd/api/utils/utils.go +++ /dev/null @@ -1,29 +0,0 @@ -package utils - -import ( - "fmt" - - "github.com/anyproto/anytype-heart/pkg/lib/pb/model" -) - -// GetIconFromEmojiOrImage returns the icon to use for the object, which can be either an emoji or an image url -func GetIconFromEmojiOrImage(accountInfo *model.AccountInfo, iconEmoji string, iconImage string) string { - if iconEmoji != "" { - return iconEmoji - } - - if iconImage != "" { - return GetGatewayURLForMedia(accountInfo, iconImage, true) - } - - return "" -} - -// GetGatewayURLForMedia returns the URL of file gateway for the media object with the given ID -func GetGatewayURLForMedia(accountInfo *model.AccountInfo, objectId string, isIcon bool) string { - widthParam := "" - if isIcon { - widthParam = "?width=100" - } - return fmt.Sprintf("%s/image/%s%s", accountInfo.GatewayUrl, objectId, widthParam) -} From 0e90079ba50a1397f4bd05da039bc0ec2cd5f37f Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Tue, 31 Dec 2024 00:31:20 +0100 Subject: [PATCH 084/279] GO-4146 Fix storage missing error --- space/spacecore/storage/anystorage/storageservice.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/space/spacecore/storage/anystorage/storageservice.go b/space/spacecore/storage/anystorage/storageservice.go index 3a9597675..724b2ecb6 100644 --- a/space/spacecore/storage/anystorage/storageservice.go +++ b/space/spacecore/storage/anystorage/storageservice.go @@ -139,6 +139,9 @@ func (s *storageService) Run(ctx context.Context) (err error) { func (s *storageService) openDb(ctx context.Context, id string) (db anystore.DB, err error) { dbPath := path.Join(s.rootPath, id) if _, err := os.Stat(dbPath); err != nil { + if errors.Is(err, os.ErrNotExist) { + return nil, spacestorage.ErrSpaceStorageMissing + } return nil, err } return anystore.Open(ctx, dbPath, nil) From d05cc8a257e637b63e0d0026f65af050045f111f Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Tue, 31 Dec 2024 12:37:42 +0100 Subject: [PATCH 085/279] GO-4459: Refactor main into server and router --- cmd/api/main.go | 122 ++++------------------------- cmd/api/{ => server}/middleware.go | 23 +++--- cmd/api/server/router.go | 65 +++++++++++++++ cmd/api/server/server.go | 67 ++++++++++++++++ 4 files changed, 162 insertions(+), 115 deletions(-) rename cmd/api/{ => server}/middleware.go (78%) create mode 100644 cmd/api/server/router.go create mode 100644 cmd/api/server/server.go diff --git a/cmd/api/main.go b/cmd/api/main.go index 2d2506304..3a23d5732 100644 --- a/cmd/api/main.go +++ b/cmd/api/main.go @@ -4,68 +4,20 @@ import ( "context" "fmt" "net/http" + "os" + "os/signal" "time" - "github.com/gin-gonic/gin" - swaggerFiles "github.com/swaggo/files" - ginSwagger "github.com/swaggo/gin-swagger" - - "github.com/webstradev/gin-pagination/v2/pkg/pagination" - - "github.com/anyproto/anytype-heart/cmd/api/auth" _ "github.com/anyproto/anytype-heart/cmd/api/docs" - "github.com/anyproto/anytype-heart/cmd/api/object" - "github.com/anyproto/anytype-heart/cmd/api/search" - "github.com/anyproto/anytype-heart/cmd/api/space" + "github.com/anyproto/anytype-heart/cmd/api/server" "github.com/anyproto/anytype-heart/core" "github.com/anyproto/anytype-heart/pb/service" - "github.com/anyproto/anytype-heart/pkg/lib/pb/model" ) const ( - httpPort = ":31009" serverShutdownTime = 5 * time.Second ) -type ApiServer struct { - mw service.ClientCommandsServer - mwInternal core.MiddlewareInternal - router *gin.Engine - server *http.Server - - accountInfo *model.AccountInfo - authService *auth.AuthService - objectService *object.ObjectService - spaceService *space.SpaceService - searchService *search.SearchService -} - -// TODO: User represents an authenticated user with permissions -type User struct { - ID string - Permissions string // "read-only" or "read-write" -} - -func newApiServer(mw service.ClientCommandsServer, mwInternal core.MiddlewareInternal) *ApiServer { - a := &ApiServer{ - mw: mw, - mwInternal: mwInternal, - router: gin.Default(), - authService: auth.NewService(mw), - objectService: object.NewService(mw), - spaceService: space.NewService(mw), - searchService: search.NewService(mw), - } - - a.server = &http.Server{ - Addr: httpPort, - Handler: a.router, - ReadHeaderTimeout: 5 * time.Second, - } - - return a -} - // RunApiServer starts the HTTP server and registers the API routes. // // @title Anytype API @@ -83,67 +35,25 @@ func newApiServer(mw service.ClientCommandsServer, mwInternal core.MiddlewareInt // @externalDocs.description OpenAPI // @externalDocs.url https://swagger.io/resources/open-api/ func RunApiServer(ctx context.Context, mw service.ClientCommandsServer, mwInternal core.MiddlewareInternal) { - a := newApiServer(mw, mwInternal) - a.router.Use(a.initAccountInfo()) + // Create a new server instance including the router + srv := server.NewServer(mw, mwInternal) - // Initialize pagination middleware - paginator := pagination.New( - pagination.WithPageText("offset"), - pagination.WithSizeText("limit"), - pagination.WithDefaultPage(0), - pagination.WithDefaultPageSize(100), - pagination.WithMinPageSize(1), - pagination.WithMaxPageSize(1000), - ) - - // Swagger route - a.router.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) - - // Unprotected routes - authRouter := a.router.Group("/v1/auth") - { - authRouter.POST("/displayCode", auth.AuthDisplayCodeHandler(a.authService)) - authRouter.GET("/token", auth.AuthTokenHandler(a.authService)) - } - - // Read-only routes - readOnly := a.router.Group("/v1") - // readOnly.Use(a.AuthMiddleware()) - // readOnly.Use(a.PermissionMiddleware("read-only")) - { - readOnly.GET("/spaces", paginator, space.GetSpacesHandler(a.spaceService)) - readOnly.GET("/spaces/:space_id/members", paginator, space.GetMembersHandler(a.spaceService)) - readOnly.GET("/spaces/:space_id/objects", paginator, object.GetObjectsHandler(a.objectService)) - readOnly.GET("/spaces/:space_id/objects/:object_id", object.GetObjectHandler(a.objectService)) - readOnly.GET("/spaces/:space_id/objectTypes", paginator, object.GetObjectTypesHandler(a.objectService)) - readOnly.GET("/spaces/:space_id/objectTypes/:typeId/templates", paginator, object.GetObjectTypeTemplatesHandler(a.objectService)) - readOnly.GET("/search", paginator, search.SearchHandler(a.searchService)) - } - - // Read-write routes - readWrite := a.router.Group("/v1") - // readWrite.Use(a.AuthMiddleware()) - // readWrite.Use(a.PermissionMiddleware("read-write")) - { - // readWrite.POST("/spaces", a.createSpaceHandler) - readWrite.POST("/spaces/:space_id/objects", object.CreateObjectHandler(a.objectService)) - readWrite.PUT("/spaces/:space_id/objects/:object_id", object.UpdateObjectHandler(a.objectService)) - } - - // Start the HTTP server + // Start the server in a goroutine so we can handle graceful shutdown go func() { - if err := a.server.ListenAndServe(); err != nil && err != http.ErrServerClosed { - fmt.Printf("failed to start HTTP server: %v\n", err) + if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed { + fmt.Printf("API server error: %v\n", err) } }() - // Wait for the context to be done and then shut down the server - <-ctx.Done() + // Graceful shutdown on CTRL+C / SIGINT + quit := make(chan os.Signal, 1) + signal.Notify(quit, os.Interrupt) + <-quit - // Create a new context with a timeout to shut down the server - shutdownCtx, cancel := context.WithTimeout(context.Background(), serverShutdownTime) + ctx, cancel := context.WithTimeout(context.Background(), serverShutdownTime) defer cancel() - if err := a.server.Shutdown(shutdownCtx); err != nil { - fmt.Println("server shutdown failed: %w", err) + + if err := srv.Shutdown(ctx); err != nil { + fmt.Printf("API server shutdown failed: %v\n", err) } } diff --git a/cmd/api/middleware.go b/cmd/api/server/middleware.go similarity index 78% rename from cmd/api/middleware.go rename to cmd/api/server/middleware.go index b1b9caec3..48bbebc2b 100644 --- a/cmd/api/middleware.go +++ b/cmd/api/server/middleware.go @@ -1,4 +1,4 @@ -package api +package server import ( "context" @@ -10,11 +10,17 @@ import ( "github.com/anyproto/anytype-heart/core/anytype/account" ) +// // TODO: User represents an authenticated user with permissions +type User struct { + ID string + Permissions string // "read-only" or "read-write" +} + // initAccountInfo retrieves the account information from the account service -func (a *ApiServer) initAccountInfo() gin.HandlerFunc { +func (s *Server) initAccountInfo() gin.HandlerFunc { return func(c *gin.Context) { // TODO: consider not fetching account info on every request; currently used to avoid inconsistencies on logout/login - app := a.mwInternal.GetApp() + app := s.mwInternal.GetApp() if app == nil { c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"error": "failed to get app instance"}) return @@ -26,16 +32,15 @@ func (a *ApiServer) initAccountInfo() gin.HandlerFunc { return } - a.accountInfo = accInfo - a.objectService.AccountInfo = accInfo - a.spaceService.AccountInfo = accInfo - a.searchService.AccountInfo = accInfo + s.objectService.AccountInfo = accInfo + s.spaceService.AccountInfo = accInfo + s.searchService.AccountInfo = accInfo c.Next() } } // TODO: AuthMiddleware to ensure the user is authenticated -func (a *ApiServer) AuthMiddleware() gin.HandlerFunc { +func (s *Server) AuthMiddleware() gin.HandlerFunc { return func(c *gin.Context) { token := c.GetHeader("Authorization") if token == "" { @@ -56,7 +61,7 @@ func (a *ApiServer) AuthMiddleware() gin.HandlerFunc { } // TODO: PermissionMiddleware to ensure the user has the required permissions -func (a *ApiServer) PermissionMiddleware(requiredPermission string) gin.HandlerFunc { +func (s *Server) PermissionMiddleware(requiredPermission string) gin.HandlerFunc { return func(c *gin.Context) { user, exists := c.Get("user") if !exists { diff --git a/cmd/api/server/router.go b/cmd/api/server/router.go new file mode 100644 index 000000000..372d87053 --- /dev/null +++ b/cmd/api/server/router.go @@ -0,0 +1,65 @@ +package server + +import ( + "github.com/gin-gonic/gin" + swaggerFiles "github.com/swaggo/files" + ginSwagger "github.com/swaggo/gin-swagger" + "github.com/webstradev/gin-pagination/v2/pkg/pagination" + + "github.com/anyproto/anytype-heart/cmd/api/auth" + "github.com/anyproto/anytype-heart/cmd/api/object" + "github.com/anyproto/anytype-heart/cmd/api/search" + "github.com/anyproto/anytype-heart/cmd/api/space" +) + +// NewRouter builds and returns a *gin.Engine with all routes configured. +func (s *Server) NewRouter() *gin.Engine { + router := gin.Default() + router.Use(s.initAccountInfo()) + + // Pagination middleware setup + paginator := pagination.New( + pagination.WithPageText("offset"), + pagination.WithSizeText("limit"), + pagination.WithDefaultPage(0), + pagination.WithDefaultPageSize(100), + pagination.WithMinPageSize(1), + pagination.WithMaxPageSize(1000), + ) + + // Swagger route + router.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) + + // Unprotected routes + authRouter := router.Group("/v1/auth") + { + authRouter.POST("/displayCode", auth.AuthDisplayCodeHandler(s.authService)) + authRouter.GET("/token", auth.AuthTokenHandler(s.authService)) + } + + // Read-only group + readOnly := router.Group("/v1") + // readOnly.Use(a.AuthMiddleware()) + // readOnly.Use(a.PermissionMiddleware("read-only")) + { + readOnly.GET("/spaces", paginator, space.GetSpacesHandler(s.spaceService)) + readOnly.GET("/spaces/:space_id/members", paginator, space.GetMembersHandler(s.spaceService)) + readOnly.GET("/spaces/:space_id/objects", paginator, object.GetObjectsHandler(s.objectService)) + readOnly.GET("/spaces/:space_id/objects/:object_id", object.GetObjectHandler(s.objectService)) + readOnly.GET("/spaces/:space_id/objectTypes", paginator, object.GetObjectTypesHandler(s.objectService)) + readOnly.GET("/spaces/:space_id/objectTypes/:typeId/templates", paginator, object.GetObjectTypeTemplatesHandler(s.objectService)) + readOnly.GET("/search", paginator, search.SearchHandler(s.searchService)) + } + + // Read-write group + readWrite := router.Group("/v1") + // readWrite.Use(a.AuthMiddleware()) + // readWrite.Use(a.PermissionMiddleware("read-write")) + { + readWrite.POST("/spaces", space.CreateSpaceHandler(s.spaceService)) + readWrite.POST("/spaces/:space_id/objects", object.CreateObjectHandler(s.objectService)) + readWrite.PUT("/spaces/:space_id/objects/:object_id", object.UpdateObjectHandler(s.objectService)) + } + + return router +} diff --git a/cmd/api/server/server.go b/cmd/api/server/server.go new file mode 100644 index 000000000..17d4e2592 --- /dev/null +++ b/cmd/api/server/server.go @@ -0,0 +1,67 @@ +package server + +import ( + "context" + "fmt" + "net/http" + "time" + + "github.com/gin-gonic/gin" + + "github.com/anyproto/anytype-heart/cmd/api/auth" + "github.com/anyproto/anytype-heart/cmd/api/object" + "github.com/anyproto/anytype-heart/cmd/api/search" + "github.com/anyproto/anytype-heart/cmd/api/space" + "github.com/anyproto/anytype-heart/core" + "github.com/anyproto/anytype-heart/pb/service" +) + +const ( + httpPort = ":31009" + readHeaderTimeout = 5 * time.Second +) + +// Server wraps the HTTP server logic. +type Server struct { + engine *gin.Engine + srv *http.Server + + mwInternal core.MiddlewareInternal + authService *auth.AuthService + objectService *object.ObjectService + spaceService *space.SpaceService + searchService *search.SearchService +} + +// NewServer constructs a new Server with default config +// and sets up routes via your router.go +func NewServer(mw service.ClientCommandsServer, mwInternal core.MiddlewareInternal) *Server { + s := &Server{ + mwInternal: mwInternal, + authService: auth.NewService(mw), + objectService: object.NewService(mw), + spaceService: space.NewService(mw), + searchService: search.NewService(mw), + } + + s.engine = s.NewRouter() + s.srv = &http.Server{ + Addr: httpPort, + Handler: s.engine, + ReadHeaderTimeout: readHeaderTimeout, + } + + return s +} + +// ListenAndServe starts the HTTP server +func (s *Server) ListenAndServe() error { + fmt.Printf("Starting API server on %s\n", httpPort) + return s.srv.ListenAndServe() +} + +// Shutdown gracefully stops the server +func (s *Server) Shutdown(ctx context.Context) error { + fmt.Println("Shutting down API server...") + return s.srv.Shutdown(ctx) +} From 239a606eb3772a77dccc484a22d4ada9beafbaeb Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Tue, 31 Dec 2024 12:39:13 +0100 Subject: [PATCH 086/279] GO-4459: Refactor auth tests --- cmd/api/auth/handler.go | 2 +- cmd/api/auth/service.go | 4 +- cmd/api/auth/service_test.go | 140 ++++++++++++ cmd/api/handlers_test.go | 395 ---------------------------------- cmd/api/space/service_test.go | 6 +- 5 files changed, 148 insertions(+), 399 deletions(-) create mode 100644 cmd/api/auth/service_test.go diff --git a/cmd/api/auth/handler.go b/cmd/api/auth/handler.go index d3850ceea..0c5dfd269 100644 --- a/cmd/api/auth/handler.go +++ b/cmd/api/auth/handler.go @@ -52,7 +52,7 @@ func AuthTokenHandler(s *AuthService) gin.HandlerFunc { sessionToken, appKey, err := s.SolveChallengeForToken(c.Request.Context(), challengeID, code) errCode := util.MapErrorCode(err, util.ErrToCode(ErrInvalidInput, http.StatusBadRequest), - util.ErrToCode(ErrorFailedAuthenticate, http.StatusInternalServerError), + util.ErrToCode(ErrFailedAuthenticate, http.StatusInternalServerError), ) if errCode != http.StatusOK { diff --git a/cmd/api/auth/service.go b/cmd/api/auth/service.go index 22a21871b..19b857c79 100644 --- a/cmd/api/auth/service.go +++ b/cmd/api/auth/service.go @@ -11,7 +11,7 @@ import ( var ( ErrFailedGenerateChallenge = errors.New("failed to generate a new challenge") ErrInvalidInput = errors.New("invalid input") - ErrorFailedAuthenticate = errors.New("failed to authenticate user") + ErrFailedAuthenticate = errors.New("failed to authenticate user") ) type Service interface { @@ -53,7 +53,7 @@ func (s *AuthService) SolveChallengeForToken(ctx context.Context, challengeID, c }) if resp.Error.Code != pb.RpcAccountLocalLinkSolveChallengeResponseError_NULL { - return "", "", ErrorFailedAuthenticate + return "", "", ErrFailedAuthenticate } return resp.SessionToken, resp.AppKey, nil diff --git a/cmd/api/auth/service_test.go b/cmd/api/auth/service_test.go new file mode 100644 index 000000000..a78f759e2 --- /dev/null +++ b/cmd/api/auth/service_test.go @@ -0,0 +1,140 @@ +package auth + +import ( + "context" + "testing" + + "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" + + "github.com/anyproto/anytype-heart/pb" + "github.com/anyproto/anytype-heart/pb/service/mock_service" +) + +const ( + mockedAppName = "api-test" + mockedChallengeId = "mocked-challenge-id" + mockedCode = "mocked-mockedCode" + mockedSessionToken = "mocked-session-token" + mockedAppKey = "mocked-app-key" +) + +type fixture struct { + *AuthService + mwMock *mock_service.MockClientCommandsServer +} + +func newFixture(t *testing.T) *fixture { + mw := mock_service.NewMockClientCommandsServer(t) + authService := NewService(mw) + + return &fixture{ + AuthService: authService, + mwMock: mw, + } +} + +func TestAuthService_GenerateNewChallenge(t *testing.T) { + t.Run("successful challenge creation", func(t *testing.T) { + // given + ctx := context.Background() + fx := newFixture(t) + + fx.mwMock.On("AccountLocalLinkNewChallenge", mock.Anything, &pb.RpcAccountLocalLinkNewChallengeRequest{AppName: mockedAppName}). + Return(&pb.RpcAccountLocalLinkNewChallengeResponse{ + ChallengeId: mockedChallengeId, + Error: &pb.RpcAccountLocalLinkNewChallengeResponseError{Code: pb.RpcAccountLocalLinkNewChallengeResponseError_NULL}, + }).Once() + + // when + challengeId, err := fx.GenerateNewChallenge(ctx, mockedAppName) + + // then + require.NoError(t, err) + require.Equal(t, mockedChallengeId, challengeId) + }) + + t.Run("failed challenge creation", func(t *testing.T) { + // given + ctx := context.Background() + fx := newFixture(t) + + fx.mwMock.On("AccountLocalLinkNewChallenge", mock.Anything, &pb.RpcAccountLocalLinkNewChallengeRequest{AppName: mockedAppName}). + Return(&pb.RpcAccountLocalLinkNewChallengeResponse{ + Error: &pb.RpcAccountLocalLinkNewChallengeResponseError{Code: pb.RpcAccountLocalLinkNewChallengeResponseError_UNKNOWN_ERROR}, + }).Once() + + // when + challengeId, err := fx.GenerateNewChallenge(ctx, mockedAppName) + + // then + require.Error(t, err) + require.Equal(t, ErrFailedGenerateChallenge, err) + require.Empty(t, challengeId) + }) +} + +func TestAuthService_SolveChallengeForToken(t *testing.T) { + t.Run("successful token retrieval", func(t *testing.T) { + // given + ctx := context.Background() + fx := newFixture(t) + + fx.mwMock.On("AccountLocalLinkSolveChallenge", mock.Anything, &pb.RpcAccountLocalLinkSolveChallengeRequest{ + ChallengeId: mockedChallengeId, + Answer: mockedCode, + }). + Return(&pb.RpcAccountLocalLinkSolveChallengeResponse{ + SessionToken: mockedSessionToken, + AppKey: mockedAppKey, + Error: &pb.RpcAccountLocalLinkSolveChallengeResponseError{Code: pb.RpcAccountLocalLinkSolveChallengeResponseError_NULL}, + }).Once() + + // when + sessionToken, appKey, err := fx.SolveChallengeForToken(ctx, mockedChallengeId, mockedCode) + + // then + require.NoError(t, err) + require.Equal(t, mockedSessionToken, sessionToken) + require.Equal(t, mockedAppKey, appKey) + + }) + + t.Run("bad request", func(t *testing.T) { + // given + ctx := context.Background() + fx := newFixture(t) + + // when + sessionToken, appKey, err := fx.SolveChallengeForToken(ctx, "", "") + + // then + require.Error(t, err) + require.Equal(t, ErrInvalidInput, err) + require.Empty(t, sessionToken) + require.Empty(t, appKey) + }) + + t.Run("failed token retrieval", func(t *testing.T) { + // given + ctx := context.Background() + fx := newFixture(t) + + fx.mwMock.On("AccountLocalLinkSolveChallenge", mock.Anything, &pb.RpcAccountLocalLinkSolveChallengeRequest{ + ChallengeId: mockedChallengeId, + Answer: mockedCode, + }). + Return(&pb.RpcAccountLocalLinkSolveChallengeResponse{ + Error: &pb.RpcAccountLocalLinkSolveChallengeResponseError{Code: pb.RpcAccountLocalLinkSolveChallengeResponseError_UNKNOWN_ERROR}, + }).Once() + + // when + sessionToken, appKey, err := fx.SolveChallengeForToken(ctx, mockedChallengeId, mockedCode) + + // then + require.Error(t, err) + require.Equal(t, ErrFailedAuthenticate, err) + require.Empty(t, sessionToken) + require.Empty(t, appKey) + }) +} diff --git a/cmd/api/handlers_test.go b/cmd/api/handlers_test.go index 04419d58a..703aef502 100644 --- a/cmd/api/handlers_test.go +++ b/cmd/api/handlers_test.go @@ -85,401 +85,6 @@ func newFixture(t *testing.T) *fixture { } } -func TestApiServer_AuthDisplayCodeHandler(t *testing.T) { - t.Run("successful challenge creation", func(t *testing.T) { - // given - fx := newFixture(t) - - fx.mwMock.On("AccountLocalLinkNewChallenge", mock.Anything, &pb.RpcAccountLocalLinkNewChallengeRequest{AppName: "api-test"}). - Return(&pb.RpcAccountLocalLinkNewChallengeResponse{ - ChallengeId: "mocked-challenge-id", - Error: &pb.RpcAccountLocalLinkNewChallengeResponseError{Code: pb.RpcAccountLocalLinkNewChallengeResponseError_NULL}, - }).Once() - - // when - req, _ := http.NewRequest("POST", "/v1/auth/displayCode", nil) - w := httptest.NewRecorder() - fx.router.ServeHTTP(w, req) - - // then - require.Equal(t, http.StatusOK, w.Code) - - var response AuthDisplayCodeResponse - err := json.Unmarshal(w.Body.Bytes(), &response) - require.NoError(t, err) - require.Equal(t, "mocked-challenge-id", response.ChallengeId) - }) - - t.Run("failed challenge creation", func(t *testing.T) { - // given - fx := newFixture(t) - - fx.mwMock.On("AccountLocalLinkNewChallenge", mock.Anything, &pb.RpcAccountLocalLinkNewChallengeRequest{AppName: "api-test"}). - Return(&pb.RpcAccountLocalLinkNewChallengeResponse{ - Error: &pb.RpcAccountLocalLinkNewChallengeResponseError{Code: pb.RpcAccountLocalLinkNewChallengeResponseError_UNKNOWN_ERROR}, - }).Once() - - // when - req, _ := http.NewRequest("POST", "/v1/auth/displayCode", nil) - w := httptest.NewRecorder() - fx.router.ServeHTTP(w, req) - - // then - require.Equal(t, http.StatusInternalServerError, w.Code) - }) -} - -func TestApiServer_AuthTokenHandler(t *testing.T) { - t.Run("successful token retrieval", func(t *testing.T) { - // given - fx := newFixture(t) - - challengeId := "mocked-challenge-id" - code := "mocked-code" - sessionToken := "mocked-session-token" - appKey := "mocked-app-key" - - fx.mwMock.On("AccountLocalLinkSolveChallenge", mock.Anything, &pb.RpcAccountLocalLinkSolveChallengeRequest{ - ChallengeId: challengeId, - Answer: code, - }). - Return(&pb.RpcAccountLocalLinkSolveChallengeResponse{ - SessionToken: sessionToken, - AppKey: appKey, - Error: &pb.RpcAccountLocalLinkSolveChallengeResponseError{Code: pb.RpcAccountLocalLinkSolveChallengeResponseError_NULL}, - }).Once() - - // when - req, _ := http.NewRequest("GET", "/v1/auth/token?challenge_id="+challengeId+"&code="+code, nil) - w := httptest.NewRecorder() - fx.router.ServeHTTP(w, req) - - // then - require.Equal(t, http.StatusOK, w.Code) - - var response AuthTokenResponse - err := json.Unmarshal(w.Body.Bytes(), &response) - require.NoError(t, err) - require.Equal(t, sessionToken, response.SessionToken) - require.Equal(t, appKey, response.AppKey) - }) - - t.Run("bad request", func(t *testing.T) { - // given - fx := newFixture(t) - - // when - req, _ := http.NewRequest("GET", "/v1/auth/token", nil) - w := httptest.NewRecorder() - fx.router.ServeHTTP(w, req) - - // then - require.Equal(t, http.StatusBadRequest, w.Code) - }) - - t.Run("failed token retrieval", func(t *testing.T) { - // given - fx := newFixture(t) - challengeId := "mocked-challenge-id" - code := "mocked-code" - - fx.mwMock.On("AccountLocalLinkSolveChallenge", mock.Anything, &pb.RpcAccountLocalLinkSolveChallengeRequest{ - ChallengeId: challengeId, - Answer: code, - }). - Return(&pb.RpcAccountLocalLinkSolveChallengeResponse{ - Error: &pb.RpcAccountLocalLinkSolveChallengeResponseError{Code: pb.RpcAccountLocalLinkSolveChallengeResponseError_UNKNOWN_ERROR}, - }).Once() - - // when - req, _ := http.NewRequest("GET", "/v1/auth/token?challenge_id="+challengeId+"&code="+code, nil) - w := httptest.NewRecorder() - fx.router.ServeHTTP(w, req) - - // then - require.Equal(t, http.StatusInternalServerError, w.Code) - }) -} - -func TestApiServer_GetSpacesHandler(t *testing.T) { - t.Run("successful retrieval of spaces", func(t *testing.T) { - // given - fx := newFixture(t) - fx.accountInfo = &model.AccountInfo{TechSpaceId: techSpaceId, GatewayUrl: gatewayUrl} - - fx.mwMock.On("ObjectSearch", mock.Anything, &pb.RpcObjectSearchRequest{ - SpaceId: techSpaceId, - Filters: []*model.BlockContentDataviewFilter{ - { - RelationKey: bundle.RelationKeyLayout.String(), - Condition: model.BlockContentDataviewFilter_Equal, - Value: pbtypes.Int64(int64(model.ObjectType_spaceView)), - }, - { - RelationKey: bundle.RelationKeySpaceLocalStatus.String(), - Condition: model.BlockContentDataviewFilter_Equal, - Value: pbtypes.Int64(int64(model.SpaceStatus_Ok)), - }, - { - RelationKey: bundle.RelationKeySpaceRemoteStatus.String(), - Condition: model.BlockContentDataviewFilter_Equal, - Value: pbtypes.Int64(int64(model.SpaceStatus_Ok)), - }, - }, - Sorts: []*model.BlockContentDataviewSort{ - { - RelationKey: "spaceOrder", - Type: model.BlockContentDataviewSort_Asc, - NoCollate: true, - EmptyPlacement: model.BlockContentDataviewSort_End, - }, - }, - Keys: []string{"targetSpaceId", "name", "iconEmoji", "iconImage"}, - }).Return(&pb.RpcObjectSearchResponse{ - Records: []*types.Struct{ - { - Fields: map[string]*types.Value{ - "name": pbtypes.String("Another Workspace"), - "targetSpaceId": pbtypes.String("another-space-id"), - "iconEmoji": pbtypes.String(""), - "iconImage": pbtypes.String(iconImage), - }, - }, - { - Fields: map[string]*types.Value{ - "name": pbtypes.String("My Workspace"), - "targetSpaceId": pbtypes.String("my-space-id"), - "iconEmoji": pbtypes.String("🚀"), - "iconImage": pbtypes.String(""), - }, - }, - }, - Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, - }).Once() - - fx.mwMock.On("WorkspaceOpen", mock.Anything, mock.Anything).Return(&pb.RpcWorkspaceOpenResponse{ - Error: &pb.RpcWorkspaceOpenResponseError{Code: pb.RpcWorkspaceOpenResponseError_NULL}, - Info: &model.AccountInfo{ - HomeObjectId: "home-object-id", - ArchiveObjectId: "archive-object-id", - ProfileObjectId: "profile-object-id", - MarketplaceWorkspaceId: "marketplace-workspace-id", - WorkspaceObjectId: "workspace-object-id", - DeviceId: "device-id", - AccountSpaceId: "account-space-id", - WidgetsId: "widgets-id", - SpaceViewId: "space-view-id", - TechSpaceId: "tech-space-id", - GatewayUrl: "gateway-url", - LocalStoragePath: "local-storage-path", - TimeZone: "time-zone", - AnalyticsId: "analytics-id", - NetworkId: "network-id", - }, - }, nil).Twice() - - // when - req, _ := http.NewRequest("GET", fmt.Sprintf("/v1/spaces?offset=%d&limit=%d", offset, limit), nil) - w := httptest.NewRecorder() - fx.router.ServeHTTP(w, req) - - // then - require.Equal(t, http.StatusOK, w.Code) - - var response PaginatedResponse[Space] - err := json.Unmarshal(w.Body.Bytes(), &response) - require.NoError(t, err) - require.Len(t, response.Data, 2) - require.Equal(t, "Another Workspace", response.Data[0].Name) - require.Equal(t, "another-space-id", response.Data[0].Id) - require.Regexpf(t, regexp.MustCompile(gatewayUrl+`/image/`+iconImage), response.Data[0].Icon, "Icon URL does not match") - require.Equal(t, "My Workspace", response.Data[1].Name) - require.Equal(t, "my-space-id", response.Data[1].Id) - require.Equal(t, "🚀", response.Data[1].Icon) - }) - - t.Run("no spaces found", func(t *testing.T) { - // given - fx := newFixture(t) - fx.accountInfo = &model.AccountInfo{TechSpaceId: techSpaceId} - - fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything). - Return(&pb.RpcObjectSearchResponse{ - Records: []*types.Struct{}, - Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, - }).Once() - - // when - req, _ := http.NewRequest("GET", fmt.Sprintf("/v1/spaces?offset=%d&limit=%d", offset, limit), nil) - w := httptest.NewRecorder() - fx.router.ServeHTTP(w, req) - - // then - require.Equal(t, http.StatusNotFound, w.Code) - }) - - t.Run("failed workspace open", func(t *testing.T) { - // given - fx := newFixture(t) - fx.accountInfo = &model.AccountInfo{TechSpaceId: techSpaceId} - - fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything). - Return(&pb.RpcObjectSearchResponse{ - Records: []*types.Struct{ - { - Fields: map[string]*types.Value{ - "name": pbtypes.String("My Workspace"), - "targetSpaceId": pbtypes.String("my-space-id"), - "iconEmoji": pbtypes.String("🚀"), - "iconImage": pbtypes.String(""), - }, - }, - }, - Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, - }).Once() - - fx.mwMock.On("WorkspaceOpen", mock.Anything, mock.Anything). - Return(&pb.RpcWorkspaceOpenResponse{ - Error: &pb.RpcWorkspaceOpenResponseError{Code: pb.RpcWorkspaceOpenResponseError_UNKNOWN_ERROR}, - }, nil).Once() - - // when - req, _ := http.NewRequest("GET", fmt.Sprintf("/v1/spaces?offset=%d&limit=%d", offset, limit), nil) - w := httptest.NewRecorder() - fx.router.ServeHTTP(w, req) - - // then - require.Equal(t, http.StatusInternalServerError, w.Code) - }) -} - -func TestApiServer_CreateSpaceHandler(t *testing.T) { - t.Run("successful create space", func(t *testing.T) { - // given - fx := newFixture(t) - fx.mwMock.On("WorkspaceCreate", mock.Anything, mock.Anything). - Return(&pb.RpcWorkspaceCreateResponse{ - Error: &pb.RpcWorkspaceCreateResponseError{Code: pb.RpcWorkspaceCreateResponseError_NULL}, - SpaceId: "new-space-id", - }).Once() - - // when - body := strings.NewReader(`{"name":"New Space"}`) - req, _ := http.NewRequest("POST", "/v1/spaces", body) - w := httptest.NewRecorder() - fx.router.ServeHTTP(w, req) - - // then - require.Equal(t, http.StatusOK, w.Code) - require.Contains(t, w.Body.String(), "new-space-id") - }) - - t.Run("invalid JSON", func(t *testing.T) { - // given - fx := newFixture(t) - - // when - body := strings.NewReader(`{invalid json}`) - req, _ := http.NewRequest("POST", "/v1/spaces", body) - w := httptest.NewRecorder() - fx.router.ServeHTTP(w, req) - - // then - require.Equal(t, http.StatusBadRequest, w.Code) - }) - - t.Run("failed workspace creation", func(t *testing.T) { - // given - fx := newFixture(t) - fx.mwMock.On("WorkspaceCreate", mock.Anything, mock.Anything). - Return(&pb.RpcWorkspaceCreateResponse{ - Error: &pb.RpcWorkspaceCreateResponseError{Code: pb.RpcWorkspaceCreateResponseError_UNKNOWN_ERROR}, - }).Once() - - // when - body := strings.NewReader(`{"name":"Fail Space"}`) - req, _ := http.NewRequest("POST", "/v1/spaces", body) - w := httptest.NewRecorder() - fx.router.ServeHTTP(w, req) - - // then - require.Equal(t, http.StatusInternalServerError, w.Code) - }) -} - -func TestApiServer_GetMembersHandler(t *testing.T) { - t.Run("successfully get members", func(t *testing.T) { - // given - fx := newFixture(t) - fx.accountInfo = &model.AccountInfo{TechSpaceId: techSpaceId, GatewayUrl: gatewayUrl} - - fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything). - Return(&pb.RpcObjectSearchResponse{ - Records: []*types.Struct{ - { - Fields: map[string]*types.Value{ - "id": pbtypes.String("member-1"), - "name": pbtypes.String("John Doe"), - "iconEmoji": pbtypes.String("👤"), - "identity": pbtypes.String("AAjEaEwPF4nkEh7AWkqEnzcQ8HziGB4ETjiTpvRCQvWnSMDZ"), - "globalName": pbtypes.String("john.any"), - }, - }, - { - Fields: map[string]*types.Value{ - "id": pbtypes.String("member-2"), - "name": pbtypes.String("Jane Doe"), - "iconImage": pbtypes.String(iconImage), - "identity": pbtypes.String("AAjLbEwPF4nkEh7AWkqEnzcQ8HziGB4ETjiTpvRCQvWnSMD4"), - "globalName": pbtypes.String("jane.any"), - }, - }, - }, - Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, - }).Once() - - // when - req, _ := http.NewRequest("GET", fmt.Sprintf("/v1/spaces/my-space/members?offset=%d&limit=%d", offset, limit), nil) - w := httptest.NewRecorder() - fx.router.ServeHTTP(w, req) - - // then - require.Equal(t, http.StatusOK, w.Code) - - var response PaginatedResponse[Member] - err := json.Unmarshal(w.Body.Bytes(), &response) - require.NoError(t, err) - require.Len(t, response.Data, 2) - require.Equal(t, "member-1", response.Data[0].Id) - require.Equal(t, "John Doe", response.Data[0].Name) - require.Equal(t, "👤", response.Data[0].Icon) - require.Equal(t, "john.any", response.Data[0].GlobalName) - require.Equal(t, "member-2", response.Data[1].Id) - require.Equal(t, "Jane Doe", response.Data[1].Name) - require.Regexpf(t, regexp.MustCompile(gatewayUrl+`/image/`+iconImage), response.Data[1].Icon, "Icon URL does not match") - require.Equal(t, "jane.any", response.Data[1].GlobalName) - }) - - t.Run("no members found", func(t *testing.T) { - // given - fx := newFixture(t) - - fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything). - Return(&pb.RpcObjectSearchResponse{ - Records: []*types.Struct{}, - Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, - }).Once() - - // when - req, _ := http.NewRequest("GET", fmt.Sprintf("/v1/spaces/empty-space/members?offset=%d&limit=%d", offset, limit), nil) - w := httptest.NewRecorder() - fx.router.ServeHTTP(w, req) - - // then - require.Equal(t, http.StatusNotFound, w.Code) - }) -} - func TestApiServer_GetObjectsForSpaceHandler(t *testing.T) { t.Run("successfully get objects for a space", func(t *testing.T) { // given diff --git a/cmd/api/space/service_test.go b/cmd/api/space/service_test.go index 0ab45fdad..5d2293b96 100644 --- a/cmd/api/space/service_test.go +++ b/cmd/api/space/service_test.go @@ -31,7 +31,11 @@ type fixture struct { func newFixture(t *testing.T) *fixture { mw := mock_service.NewMockClientCommandsServer(t) - spaceService := &SpaceService{mw: mw, AccountInfo: &model.AccountInfo{TechSpaceId: techSpaceId, GatewayUrl: gatewayUrl}} + spaceService := NewService(mw) + spaceService.AccountInfo = &model.AccountInfo{ + TechSpaceId: techSpaceId, + GatewayUrl: gatewayUrl, + } return &fixture{ SpaceService: spaceService, From 5bae6a15854e2c0e90338d752242aaab255af68e Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Tue, 31 Dec 2024 12:54:28 +0100 Subject: [PATCH 087/279] GO-4459: Fix service dependencies for search --- cmd/api/search/service.go | 4 ++-- cmd/api/server/server.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cmd/api/search/service.go b/cmd/api/search/service.go index 0637285c7..c6039fe9f 100644 --- a/cmd/api/search/service.go +++ b/cmd/api/search/service.go @@ -32,8 +32,8 @@ type SearchService struct { AccountInfo *model.AccountInfo } -func NewService(mw service.ClientCommandsServer) *SearchService { - return &SearchService{mw: mw, spaceService: space.NewService(mw), objectService: object.NewService(mw)} +func NewService(mw service.ClientCommandsServer, spaceService *space.SpaceService, objectService *object.ObjectService) *SearchService { + return &SearchService{mw: mw, spaceService: spaceService, objectService: objectService} } func (s *SearchService) Search(ctx context.Context, searchQuery string, objectType string, offset, limit int) (objects []object.Object, total int, hasMore bool, err error) { diff --git a/cmd/api/server/server.go b/cmd/api/server/server.go index 17d4e2592..29cef94d3 100644 --- a/cmd/api/server/server.go +++ b/cmd/api/server/server.go @@ -41,9 +41,9 @@ func NewServer(mw service.ClientCommandsServer, mwInternal core.MiddlewareIntern authService: auth.NewService(mw), objectService: object.NewService(mw), spaceService: space.NewService(mw), - searchService: search.NewService(mw), } + s.searchService = search.NewService(mw, s.spaceService, s.objectService) s.engine = s.NewRouter() s.srv = &http.Server{ Addr: httpPort, From 3933b131f30441f552884e8f90b81522b0831b61 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Tue, 31 Dec 2024 13:01:18 +0100 Subject: [PATCH 088/279] GO-4459: Fix lint --- cmd/api/demo/api_demo.go | 13 +- cmd/api/handlers.go | 1 - cmd/api/handlers_test.go | 613 --------------------------------------- cmd/api/main.go | 3 +- 4 files changed, 7 insertions(+), 623 deletions(-) delete mode 100644 cmd/api/handlers.go delete mode 100644 cmd/api/handlers_test.go diff --git a/cmd/api/demo/api_demo.go b/cmd/api/demo/api_demo.go index 0f319acae..311938774 100644 --- a/cmd/api/demo/api_demo.go +++ b/cmd/api/demo/api_demo.go @@ -15,12 +15,13 @@ import ( const ( baseURL = "http://localhost:31009/v1" // testSpaceId = "bafyreifymx5ucm3fdc7vupfg7wakdo5qelni3jvlmawlnvjcppurn2b3di.2lcu0r85yg10d" // dev (entry space) - testSpaceId = "bafyreiezhzb4ggnhjwejmh67pd5grilk6jn3jt7y2rnfpbkjwekilreola.1t123w9f2lgn5" // LFLC + // testSpaceId = "bafyreiezhzb4ggnhjwejmh67pd5grilk6jn3jt7y2rnfpbkjwekilreola.1t123w9f2lgn5" // LFLC // testSpaceId = "bafyreiakofsfkgb7psju346cir2hit5hinhywaybi6vhp7hx4jw7hkngje.scoxzd7vu6rz" // HPI // testObjectId = "bafyreidhtlbbspxecab6xf4pi5zyxcmvwy6lqzursbjouq5fxovh6y3xwu" // "Work Faster with Templates" - // testTypeId = "bafyreie3djy4mcldt3hgeet6bnjay2iajdyi2fvx556n6wcxii7brlni3i" // Page (in dev space) + // testObjectId = "bafyreib3i5uq2tztocw3wrvhdugkwoxgg2xjh2jnl5retnyky66mr5b274" // Tag Test Page (in dev space) + // testTypeId = "bafyreie3djy4mcldt3hgeet6bnjay2iajdyi2fvx556n6wcxii7brlni3i" // Page (in dev space) // chatSpaceId = "bafyreigryvrmerbtfswwz5kav2uq5dlvx3hl45kxn4nflg7lz46lneqs7m.2nvj2qik6ctdy" // Anytype Wiki space - chatSpaceId = "bafyreiexhpzaf7uxzheubh7cjeusqukjnxfvvhh4at6bygljwvto2dttnm.2lcu0r85yg10d" // chat space + // chatSpaceId = "bafyreiexhpzaf7uxzheubh7cjeusqukjnxfvvhh4at6bygljwvto2dttnm.2lcu0r85yg10d" // chat space ) var log = logging.Logger("rest-api") @@ -69,11 +70,7 @@ func main() { // {"GET", "/spaces/{space_id}/objectTypes/{type_id}/templates?limit={limit}&offset={offset}", map[string]interface{}{"space_id": testSpaceId, "type_id": testTypeId, "limit": 100, "offset": 0}, nil}, // search - // {"GET", "/objects?search={search}&object_type={object_type}&limit={limit}&offset={offset}", map[string]interface{}{"search": "writing", "object_type": testTypeId, "limit": 100, "offset": 0}, nil}, - - // chat - // {"GET", "/spaces/{space_id}/chat/messages?limit={limit}&offset={offset}", map[string]interface{}{"space_id": chatSpaceId, "limit": 100, "offset": 0}, nil}, - // {"POST", "/spaces/{space_id}/chat/messages", map[string]interface{}{"space_id": chatSpaceId}, map[string]interface{}{"text": "new message from demo"}}, + // {"GET", "/search?query={query}&object_type={object_type}&limit={limit}&offset={offset}", map[string]interface{}{"query": "Tag", "object_type": testTypeId, "limit": 100, "offset": 0}, nil}, } for _, ep := range endpoints { diff --git a/cmd/api/handlers.go b/cmd/api/handlers.go deleted file mode 100644 index 778f64ec1..000000000 --- a/cmd/api/handlers.go +++ /dev/null @@ -1 +0,0 @@ -package api diff --git a/cmd/api/handlers_test.go b/cmd/api/handlers_test.go deleted file mode 100644 index 703aef502..000000000 --- a/cmd/api/handlers_test.go +++ /dev/null @@ -1,613 +0,0 @@ -package api - -import ( - "encoding/json" - "fmt" - "net/http" - "net/http/httptest" - "regexp" - "strings" - "testing" - - "github.com/gin-gonic/gin" - "github.com/webstradev/gin-pagination/v2/pkg/pagination" - - "github.com/stretchr/testify/mock" - "github.com/stretchr/testify/require" - - "github.com/gogo/protobuf/types" - - "github.com/anyproto/anytype-heart/core/mock_core" - "github.com/anyproto/anytype-heart/pb" - "github.com/anyproto/anytype-heart/pb/service/mock_service" - "github.com/anyproto/anytype-heart/pkg/lib/bundle" - "github.com/anyproto/anytype-heart/pkg/lib/pb/model" - "github.com/anyproto/anytype-heart/util/pbtypes" -) - -const ( - offset = 0 - limit = 100 - techSpaceId = "tech-space-id" - gatewayUrl = "http://localhost:31006" - iconImage = "bafyreialsgoyflf3etjm3parzurivyaukzivwortf32b4twnlwpwocsrri" -) - -type fixture struct { - *ApiServer - mwMock *mock_service.MockClientCommandsServer - mwInternalMock *mock_core.MockMiddlewareInternal - router *gin.Engine -} - -func newFixture(t *testing.T) *fixture { - mw := mock_service.NewMockClientCommandsServer(t) - mwInternal := mock_core.NewMockMiddlewareInternal(t) - apiServer := &ApiServer{mw: mw, mwInternal: mwInternal, router: gin.Default()} - - paginator := pagination.New( - pagination.WithPageText("offset"), - pagination.WithSizeText("limit"), - pagination.WithDefaultPage(0), - pagination.WithDefaultPageSize(100), - pagination.WithMinPageSize(1), - pagination.WithMaxPageSize(1000), - ) - - auth := apiServer.router.Group("/v1/auth") - { - auth.POST("/displayCode", apiServer.authDisplayCodeHandler) - auth.GET("/token", apiServer.authTokenHandler) - } - readOnly := apiServer.router.Group("/v1") - { - readOnly.GET("/spaces", paginator, apiServer.getSpacesHandler) - readOnly.GET("/spaces/:space_id/members", paginator, apiServer.getMembersHandler) - readOnly.GET("/spaces/:space_id/objects", paginator, apiServer.getObjectsHandler) - readOnly.GET("/spaces/:space_id/objects/:object_id", apiServer.getObjectHandler) - readOnly.GET("/spaces/:space_id/objectTypes", paginator, apiServer.getObjectTypesHandler) - readOnly.GET("/spaces/:space_id/objectTypes/:typeId/templates", paginator, apiServer.getObjectTypeTemplatesHandler) - readOnly.GET("/search", paginator, apiServer.searchHandler) - } - - readWrite := apiServer.router.Group("/v1") - { - readWrite.POST("/spaces", apiServer.createSpaceHandler) - readWrite.POST("/spaces/:space_id/objects", apiServer.createObjectHandler) - readWrite.PUT("/spaces/:space_id/objects/:object_id", apiServer.updateObjectHandler) - } - - return &fixture{ - ApiServer: apiServer, - mwMock: mw, - mwInternalMock: mwInternal, - router: apiServer.router, - } -} - -func TestApiServer_GetObjectsForSpaceHandler(t *testing.T) { - t.Run("successfully get objects for a space", func(t *testing.T) { - // given - fx := newFixture(t) - - fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything). - Return(&pb.RpcObjectSearchResponse{ - Records: []*types.Struct{ - { - Fields: map[string]*types.Value{ - "id": pbtypes.String("object-1"), - "name": pbtypes.String("My Object"), - "type": pbtypes.String("basic-type-id"), - "layout": pbtypes.Float64(float64(model.ObjectType_basic)), - "iconEmoji": pbtypes.String("📄"), - "lastModifiedDate": pbtypes.Float64(1234567890), - }, - }, - }, - Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, - }).Twice() - - // Mock type resolution - fx.mwMock.On("ObjectShow", mock.Anything, mock.Anything).Return(&pb.RpcObjectShowResponse{ - Error: &pb.RpcObjectShowResponseError{Code: pb.RpcObjectShowResponseError_NULL}, - ObjectView: &model.ObjectView{ - Details: []*model.ObjectViewDetailsSet{ - { - Details: &types.Struct{ - Fields: map[string]*types.Value{ - "name": pbtypes.String("Basic Type"), - }, - }, - }, - }, - }, - }, nil).Maybe() - - // when - req, _ := http.NewRequest("GET", "/v1/spaces/my-space/objects", nil) - w := httptest.NewRecorder() - fx.router.ServeHTTP(w, req) - - // then - require.Equal(t, http.StatusOK, w.Code) - require.Contains(t, w.Body.String(), "My Object") - }) - - t.Run("no objects found", func(t *testing.T) { - // given - fx := newFixture(t) - - fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything). - Return(&pb.RpcObjectSearchResponse{ - Records: []*types.Struct{}, - Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, - }).Once() - - // when - req, _ := http.NewRequest("GET", "/v1/spaces/empty-space/objects", nil) - w := httptest.NewRecorder() - fx.router.ServeHTTP(w, req) - - // then - require.Equal(t, http.StatusNotFound, w.Code) - }) -} - -func TestApiServer_GetObjectHandler(t *testing.T) { - t.Run("object found", func(t *testing.T) { - // given - fx := newFixture(t) - - fx.mwMock.On("ObjectShow", mock.Anything, &pb.RpcObjectShowRequest{ - SpaceId: "my-space", - ObjectId: "obj-1", - }). - Return(&pb.RpcObjectShowResponse{ - Error: &pb.RpcObjectShowResponseError{Code: pb.RpcObjectShowResponseError_NULL}, - ObjectView: &model.ObjectView{ - RootId: "root-1", - Details: []*model.ObjectViewDetailsSet{ - { - Details: &types.Struct{ - Fields: map[string]*types.Value{ - "name": pbtypes.String("Found Object"), - "type": pbtypes.String("basic-type-id"), - "iconEmoji": pbtypes.String("ðŸ”"), - }, - }, - }, - }, - }, - }, nil).Once() - - // Type resolution mock - fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything).Return(&pb.RpcObjectSearchResponse{ - Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, - Records: []*types.Struct{ - { - Fields: map[string]*types.Value{ - "name": pbtypes.String("Basic Type"), - }, - }, - }, - }, nil).Once() - - // when - req, _ := http.NewRequest("GET", "/v1/spaces/my-space/objects/obj-1", nil) - w := httptest.NewRecorder() - fx.router.ServeHTTP(w, req) - - // then - require.Equal(t, http.StatusOK, w.Code) - require.Contains(t, w.Body.String(), "Found Object") - }) - - t.Run("object not found", func(t *testing.T) { - // given - fx := newFixture(t) - - fx.mwMock.On("ObjectShow", mock.Anything, mock.Anything). - Return(&pb.RpcObjectShowResponse{ - Error: &pb.RpcObjectShowResponseError{Code: pb.RpcObjectShowResponseError_NOT_FOUND}, - }, nil).Once() - - // when - req, _ := http.NewRequest("GET", "/v1/spaces/my-space/objects/missing-obj", nil) - w := httptest.NewRecorder() - fx.router.ServeHTTP(w, req) - - // then - require.Equal(t, http.StatusNotFound, w.Code) - }) -} - -func TestApiServer_CreateObjectHandler(t *testing.T) { - t.Run("successful object creation", func(t *testing.T) { - // given - fx := newFixture(t) - - fx.mwMock.On("ObjectCreate", mock.Anything, mock.Anything). - Return(&pb.RpcObjectCreateResponse{ - Error: &pb.RpcObjectCreateResponseError{Code: pb.RpcObjectCreateResponseError_NULL}, - ObjectId: "new-obj-id", - Details: &types.Struct{ - Fields: map[string]*types.Value{ - "name": pbtypes.String("New Object"), - "iconEmoji": pbtypes.String("🆕"), - "spaceId": pbtypes.String("my-space"), - }, - }, - }).Once() - - // when - body := strings.NewReader(`{"name":"New Object","icon":"🆕","template_id":"","object_type_unique_key":"basic","with_chat":false}`) - req, _ := http.NewRequest("POST", "/v1/spaces/my-space/objects", body) - w := httptest.NewRecorder() - fx.router.ServeHTTP(w, req) - - // then - require.Equal(t, http.StatusOK, w.Code) - require.Contains(t, w.Body.String(), "new-obj-id") - }) - - t.Run("invalid json", func(t *testing.T) { - // given - fx := newFixture(t) - - // when - body := strings.NewReader(`{invalid json}`) - req, _ := http.NewRequest("POST", "/v1/spaces/my-space/objects", body) - w := httptest.NewRecorder() - fx.router.ServeHTTP(w, req) - - // then - require.Equal(t, http.StatusBadRequest, w.Code) - }) - - t.Run("creation error", func(t *testing.T) { - // given - fx := newFixture(t) - - fx.mwMock.On("ObjectCreate", mock.Anything, mock.Anything). - Return(&pb.RpcObjectCreateResponse{ - Error: &pb.RpcObjectCreateResponseError{Code: pb.RpcObjectCreateResponseError_UNKNOWN_ERROR}, - }).Once() - - // when - body := strings.NewReader(`{"name":"Fail Object"}`) - req, _ := http.NewRequest("POST", "/v1/spaces/my-space/objects", body) - w := httptest.NewRecorder() - fx.router.ServeHTTP(w, req) - - // then - require.Equal(t, http.StatusInternalServerError, w.Code) - }) -} - -func TestApiServer_UpdateObjectHandler(t *testing.T) { - t.Run("not implemented", func(t *testing.T) { - // given - fx := newFixture(t) - - // when - body := strings.NewReader(`{"name":"Updated Object"}`) - req, _ := http.NewRequest("PUT", "/v1/spaces/my-space/objects/obj-1", body) - w := httptest.NewRecorder() - fx.router.ServeHTTP(w, req) - - // then - require.Equal(t, http.StatusNotImplemented, w.Code) - }) - - // TODO: further tests -} - -func TestApiServer_GetObjectTypesHandler(t *testing.T) { - t.Run("types found", func(t *testing.T) { - // given - fx := newFixture(t) - - fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything). - Return(&pb.RpcObjectSearchResponse{ - Records: []*types.Struct{ - { - Fields: map[string]*types.Value{ - "id": pbtypes.String("type-1"), - "name": pbtypes.String("Type One"), - "uniqueKey": pbtypes.String("type-one-key"), - "iconEmoji": pbtypes.String("🗂ï¸"), - }, - }, - }, - Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, - }).Once() - - // when - req, _ := http.NewRequest("GET", "/v1/spaces/my-space/objectTypes", nil) - w := httptest.NewRecorder() - fx.router.ServeHTTP(w, req) - - // then - require.Equal(t, http.StatusOK, w.Code) - require.Contains(t, w.Body.String(), "Type One") - }) - - t.Run("no types found", func(t *testing.T) { - // given - fx := newFixture(t) - - fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything). - Return(&pb.RpcObjectSearchResponse{ - Records: []*types.Struct{}, - Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, - }).Once() - - // when - req, _ := http.NewRequest("GET", "/v1/spaces/my-space/objectTypes", nil) - w := httptest.NewRecorder() - fx.router.ServeHTTP(w, req) - - // then - require.Equal(t, http.StatusNotFound, w.Code) - }) -} - -func TestApiServer_GetObjectTypeTemplatesHandler(t *testing.T) { - t.Run("templates found", func(t *testing.T) { - // given - fx := newFixture(t) - - // Mock template type search - fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything).Return(&pb.RpcObjectSearchResponse{ - Records: []*types.Struct{ - { - Fields: map[string]*types.Value{ - "id": pbtypes.String("template-type-id"), - "uniqueKey": pbtypes.String("ot-template"), - }, - }, - }, - Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, - }).Once() - - // Mock actual template objects search - fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything).Return(&pb.RpcObjectSearchResponse{ - Records: []*types.Struct{ - { - Fields: map[string]*types.Value{ - "id": pbtypes.String("template-1"), - "targetObjectType": pbtypes.String("target-type-id"), - }, - }, - }, - Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, - }).Once() - - // Mock object show for template details - fx.mwMock.On("ObjectShow", mock.Anything, mock.Anything).Return(&pb.RpcObjectShowResponse{ - Error: &pb.RpcObjectShowResponseError{Code: pb.RpcObjectShowResponseError_NULL}, - ObjectView: &model.ObjectView{ - Details: []*model.ObjectViewDetailsSet{ - { - Details: &types.Struct{ - Fields: map[string]*types.Value{ - "name": pbtypes.String("Template Name"), - "iconEmoji": pbtypes.String("ðŸ“"), - }, - }, - }, - }, - }, - }, nil).Once() - - // when - req, _ := http.NewRequest("GET", "/v1/spaces/my-space/objectTypes/target-type-id/templates", nil) - w := httptest.NewRecorder() - fx.router.ServeHTTP(w, req) - - // then - require.Equal(t, http.StatusOK, w.Code) - require.Contains(t, w.Body.String(), "Template Name") - }) - - t.Run("no template type found", func(t *testing.T) { - // given - fx := newFixture(t) - - fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything). - Return(&pb.RpcObjectSearchResponse{ - Records: []*types.Struct{}, - Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, - }).Once() - - // when - req, _ := http.NewRequest("GET", "/v1/spaces/my-space/objectTypes/missing-type-id/templates", nil) - w := httptest.NewRecorder() - fx.router.ServeHTTP(w, req) - - // then - require.Equal(t, http.StatusNotFound, w.Code) - }) -} - -func TestApiServer_SearchHandler(t *testing.T) { - t.Run("objects found globally", func(t *testing.T) { - // given - fx := newFixture(t) - - // Mock retrieving spaces first - fx.accountInfo = &model.AccountInfo{TechSpaceId: techSpaceId} - fx.mwMock.On("ObjectSearch", mock.Anything, &pb.RpcObjectSearchRequest{ - SpaceId: techSpaceId, - Filters: []*model.BlockContentDataviewFilter{ - { - RelationKey: bundle.RelationKeyLayout.String(), - Condition: model.BlockContentDataviewFilter_Equal, - Value: pbtypes.Int64(int64(model.ObjectType_spaceView)), - }, - { - RelationKey: bundle.RelationKeySpaceLocalStatus.String(), - Condition: model.BlockContentDataviewFilter_Equal, - Value: pbtypes.Int64(int64(model.SpaceStatus_Ok)), - }, - { - RelationKey: bundle.RelationKeySpaceRemoteStatus.String(), - Condition: model.BlockContentDataviewFilter_Equal, - Value: pbtypes.Int64(int64(model.SpaceStatus_Ok)), - }, - }, - Keys: []string{"targetSpaceId"}, - }).Return(&pb.RpcObjectSearchResponse{ - Records: []*types.Struct{ - { - Fields: map[string]*types.Value{ - "targetSpaceId": pbtypes.String("space-1"), - }, - }, - }, - Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, - }).Once() - - // Mock objects in space-1 - fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything).Return(&pb.RpcObjectSearchResponse{ - Records: []*types.Struct{ - { - Fields: map[string]*types.Value{ - "id": pbtypes.String("obj-global-1"), - "name": pbtypes.String("Global Object"), - "type": pbtypes.String("global-type-id"), - "layout": pbtypes.Float64(float64(model.ObjectType_basic)), - "iconEmoji": pbtypes.String("ðŸŒ"), - "lastModifiedDate": pbtypes.Float64(999999), - }, - }, - }, - Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, - }).Twice() - - // Mock object show for object blocks and details - fx.mwMock.On("ObjectShow", mock.Anything, &pb.RpcObjectShowRequest{ - SpaceId: "space-1", - ObjectId: "obj-global-1", - }).Return(&pb.RpcObjectShowResponse{ - ObjectView: &model.ObjectView{ - RootId: "root-123", - Blocks: []*model.Block{ - { - Id: "root-123", - Restrictions: &model.BlockRestrictions{ - Read: false, - Edit: false, - Remove: false, - Drag: false, - DropOn: false, - }, - ChildrenIds: []string{"header", "text-block", "relation-block"}, - }, - { - Id: "header", - Restrictions: &model.BlockRestrictions{ - Read: false, - Edit: true, - Remove: true, - Drag: true, - DropOn: true, - }, - ChildrenIds: []string{"title", "featuredRelations"}, - }, - { - Id: "text-block", - Content: &model.BlockContentOfText{ - Text: &model.BlockContentText{ - Text: "This is a sample text block", - Style: model.BlockContentText_Paragraph, - }, - }, - }, - }, - Details: []*model.ObjectViewDetailsSet{ - { - Id: "root-123", - Details: &types.Struct{ - Fields: map[string]*types.Value{ - "name": pbtypes.String("Global Object"), - "iconEmoji": pbtypes.String("ðŸŒ"), - "lastModifiedDate": pbtypes.Float64(999999), - "createdDate": pbtypes.Float64(888888), - "tag": pbtypes.StringList([]string{"tag-1", "tag-2"}), - }, - }, - }, - { - Id: "tag-1", - Details: &types.Struct{ - Fields: map[string]*types.Value{ - "name": pbtypes.String("Important"), - "relationOptionColor": pbtypes.String("red"), - }, - }, - }, - { - Id: "tag-2", - Details: &types.Struct{ - Fields: map[string]*types.Value{ - "name": pbtypes.String("Optional"), - "relationOptionColor": pbtypes.String("blue"), - }, - }, - }, - }, - }, - Error: &pb.RpcObjectShowResponseError{Code: pb.RpcObjectShowResponseError_NULL}, - }, nil).Once() - - // when - req, _ := http.NewRequest("GET", "/v1/search", nil) - w := httptest.NewRecorder() - fx.router.ServeHTTP(w, req) - - // then - require.Equal(t, http.StatusOK, w.Code) - - var response PaginatedResponse[Object] - err := json.Unmarshal(w.Body.Bytes(), &response) - require.NoError(t, err) - require.Len(t, response.Data, 1) - require.Equal(t, "space-1", response.Data[0].SpaceId) - require.Equal(t, "Global Object", response.Data[0].Name) - require.Equal(t, "obj-global-1", response.Data[0].Id) - require.Equal(t, "ðŸŒ", response.Data[0].Icon) - - // check details - for _, detail := range response.Data[0].Details { - if detail.Id == "createdDate" { - require.Equal(t, float64(888888), detail.Details["createdDate"]) - } else if detail.Id == "lastModifiedDate" { - require.Equal(t, float64(999999), detail.Details["lastModifiedDate"]) - } - } - - // check tags - tags := []Tag{} - for _, detail := range response.Data[0].Details { - if tagList, ok := detail.Details["tags"].([]interface{}); ok { - for _, tagValue := range tagList { - tagStruct := tagValue.(map[string]interface{}) - tag := Tag{ - Id: tagStruct["id"].(string), - Name: tagStruct["name"].(string), - Color: tagStruct["color"].(string), - } - tags = append(tags, tag) - } - } - } - require.Len(t, tags, 2) - require.Equal(t, "tag-1", tags[0].Id) - require.Equal(t, "Important", tags[0].Name) - require.Equal(t, "red", tags[0].Color) - require.Equal(t, "tag-2", tags[1].Id) - require.Equal(t, "Optional", tags[1].Name) - require.Equal(t, "blue", tags[1].Color) - }) -} diff --git a/cmd/api/main.go b/cmd/api/main.go index 3a23d5732..8584c330e 100644 --- a/cmd/api/main.go +++ b/cmd/api/main.go @@ -2,6 +2,7 @@ package api import ( "context" + "errors" "fmt" "net/http" "os" @@ -40,7 +41,7 @@ func RunApiServer(ctx context.Context, mw service.ClientCommandsServer, mwIntern // Start the server in a goroutine so we can handle graceful shutdown go func() { - if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed { + if err := srv.ListenAndServe(); err != nil && !errors.Is(err, http.ErrServerClosed) { fmt.Printf("API server error: %v\n", err) } }() From 2bb2285551c3093fd092362bd51be50b831c91aa Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Tue, 31 Dec 2024 16:52:35 +0100 Subject: [PATCH 089/279] GO-4459: Add search tests again --- cmd/api/search/service_test.go | 241 +++++++++++++++++++++++++++++++++ 1 file changed, 241 insertions(+) create mode 100644 cmd/api/search/service_test.go diff --git a/cmd/api/search/service_test.go b/cmd/api/search/service_test.go new file mode 100644 index 000000000..d16a6d2ce --- /dev/null +++ b/cmd/api/search/service_test.go @@ -0,0 +1,241 @@ +package search + +import ( + "context" + "testing" + + "github.com/gogo/protobuf/types" + "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" + + "github.com/anyproto/anytype-heart/cmd/api/object" + "github.com/anyproto/anytype-heart/cmd/api/space" + "github.com/anyproto/anytype-heart/pb" + "github.com/anyproto/anytype-heart/pb/service/mock_service" + "github.com/anyproto/anytype-heart/pkg/lib/bundle" + "github.com/anyproto/anytype-heart/pkg/lib/pb/model" + "github.com/anyproto/anytype-heart/util/pbtypes" +) + +const ( + offset = 0 + limit = 100 + techSpaceId = "tech-space-id" + gatewayUrl = "http://localhost:31006" + iconImage = "bafyreialsgoyflf3etjm3parzurivyaukzivwortf32b4twnlwpwocsrri" +) + +type fixture struct { + *SearchService + mwMock *mock_service.MockClientCommandsServer +} + +func newFixture(t *testing.T) *fixture { + mw := mock_service.NewMockClientCommandsServer(t) + + spaceService := space.NewService(mw) + spaceService.AccountInfo = &model.AccountInfo{TechSpaceId: techSpaceId} + objectService := object.NewService(mw) + objectService.AccountInfo = &model.AccountInfo{TechSpaceId: techSpaceId} + searchService := NewService(mw, spaceService, objectService) + searchService.AccountInfo = &model.AccountInfo{ + TechSpaceId: techSpaceId, + GatewayUrl: gatewayUrl, + } + + return &fixture{ + SearchService: searchService, + mwMock: mw, + } +} + +func TestSearchService_Search(t *testing.T) { + t.Run("objects found globally", func(t *testing.T) { + // given + ctx := context.Background() + fx := newFixture(t) + + // Mock retrieving spaces first + fx.mwMock.On("ObjectSearch", mock.Anything, &pb.RpcObjectSearchRequest{ + SpaceId: techSpaceId, + Filters: []*model.BlockContentDataviewFilter{ + { + RelationKey: bundle.RelationKeyLayout.String(), + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.Int64(int64(model.ObjectType_spaceView)), + }, + { + RelationKey: bundle.RelationKeySpaceLocalStatus.String(), + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.Int64(int64(model.SpaceStatus_Ok)), + }, + { + RelationKey: bundle.RelationKeySpaceRemoteStatus.String(), + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.Int64(int64(model.SpaceStatus_Ok)), + }, + }, + Sorts: []*model.BlockContentDataviewSort{ + { + RelationKey: "spaceOrder", + Type: model.BlockContentDataviewSort_Asc, + NoCollate: true, + EmptyPlacement: model.BlockContentDataviewSort_End, + }, + }, + Keys: []string{"targetSpaceId", "name", "iconEmoji", "iconImage"}, + }).Return(&pb.RpcObjectSearchResponse{ + Records: []*types.Struct{ + { + Fields: map[string]*types.Value{ + "targetSpaceId": pbtypes.String("space-1"), + }, + }, + }, + Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, + }).Once() + + // Mock workspace opening + fx.mwMock.On("WorkspaceOpen", mock.Anything, &pb.RpcWorkspaceOpenRequest{ + SpaceId: "space-1", + WithChat: true, + }).Return(&pb.RpcWorkspaceOpenResponse{ + Info: &model.AccountInfo{ + TechSpaceId: "space-1", + }, + Error: &pb.RpcWorkspaceOpenResponseError{Code: pb.RpcWorkspaceOpenResponseError_NULL}, + }).Once() + + // Mock objects in space-1 + fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything).Return(&pb.RpcObjectSearchResponse{ + Records: []*types.Struct{ + { + Fields: map[string]*types.Value{ + "id": pbtypes.String("obj-global-1"), + "name": pbtypes.String("Global Object"), + "type": pbtypes.String("global-type-id"), + "layout": pbtypes.Float64(float64(model.ObjectType_basic)), + "iconEmoji": pbtypes.String("ðŸŒ"), + "lastModifiedDate": pbtypes.Float64(999999), + }, + }, + }, + Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, + }).Twice() + + // Mock object show for object blocks and details + fx.mwMock.On("ObjectShow", mock.Anything, &pb.RpcObjectShowRequest{ + SpaceId: "space-1", + ObjectId: "obj-global-1", + }).Return(&pb.RpcObjectShowResponse{ + ObjectView: &model.ObjectView{ + RootId: "root-123", + Blocks: []*model.Block{ + { + Id: "root-123", + Restrictions: &model.BlockRestrictions{ + Read: false, + Edit: false, + Remove: false, + Drag: false, + DropOn: false, + }, + ChildrenIds: []string{"header", "text-block", "relation-block"}, + }, + { + Id: "header", + Restrictions: &model.BlockRestrictions{ + Read: false, + Edit: true, + Remove: true, + Drag: true, + DropOn: true, + }, + ChildrenIds: []string{"title", "featuredRelations"}, + }, + { + Id: "text-block", + Content: &model.BlockContentOfText{ + Text: &model.BlockContentText{ + Text: "This is a sample text block", + Style: model.BlockContentText_Paragraph, + }, + }, + }, + }, + Details: []*model.ObjectViewDetailsSet{ + { + Id: "root-123", + Details: &types.Struct{ + Fields: map[string]*types.Value{ + "name": pbtypes.String("Global Object"), + "iconEmoji": pbtypes.String("ðŸŒ"), + "lastModifiedDate": pbtypes.Float64(999999), + "createdDate": pbtypes.Float64(888888), + "tag": pbtypes.StringList([]string{"tag-1", "tag-2"}), + }, + }, + }, + { + Id: "tag-1", + Details: &types.Struct{ + Fields: map[string]*types.Value{ + "name": pbtypes.String("Important"), + "relationOptionColor": pbtypes.String("red"), + }, + }, + }, + { + Id: "tag-2", + Details: &types.Struct{ + Fields: map[string]*types.Value{ + "name": pbtypes.String("Optional"), + "relationOptionColor": pbtypes.String("blue"), + }, + }, + }, + }, + }, + Error: &pb.RpcObjectShowResponseError{Code: pb.RpcObjectShowResponseError_NULL}, + }, nil).Once() + + // when + objects, _, _, err := fx.Search(ctx, "search-term", "", offset, limit) + + // then + require.NoError(t, err) + require.Len(t, objects, 1) + require.Equal(t, "space-1", objects[0].SpaceId) + require.Equal(t, "Global Object", objects[0].Name) + require.Equal(t, "obj-global-1", objects[0].Id) + require.Equal(t, "ðŸŒ", objects[0].Icon) + require.Equal(t, "basic", objects[0].Type) + require.Equal(t, "This is a sample text block", objects[0].Blocks[2].Text.Text) + + // check details + for _, detail := range objects[0].Details { + if detail.Id == "createdDate" { + require.Equal(t, float64(888888), detail.Details["createdDate"]) + } else if detail.Id == "lastModifiedDate" { + require.Equal(t, float64(999999), detail.Details["lastModifiedDate"]) + } + } + + // check tags + tags := []object.Tag{} + for _, detail := range objects[0].Details { + if tagList, ok := detail.Details["tags"].([]object.Tag); ok { + for _, tag := range tagList { + tags = append(tags, tag) + } + } + } + require.Len(t, tags, 2) + require.Equal(t, "tag-1", tags[0].Id) + require.Equal(t, "Important", tags[0].Name) + require.Equal(t, "red", tags[0].Color) + require.Equal(t, "tag-2", tags[1].Id) + require.Equal(t, "Optional", tags[1].Name) + require.Equal(t, "blue", tags[1].Color) + }) +} From abe560c130f32a8977646b62c9ba9ff2ff4ec008 Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Tue, 31 Dec 2024 18:13:30 +0100 Subject: [PATCH 090/279] GO-4146 Fix errors --- go.mod | 25 +++--- go.sum | 88 ++++++++++--------- pkg/lib/localstore/objectstore/space.go | 5 ++ .../storage/anystorage/storageservice.go | 2 +- 4 files changed, 68 insertions(+), 52 deletions(-) diff --git a/go.mod b/go.mod index 554806740..ac321d665 100644 --- a/go.mod +++ b/go.mod @@ -49,7 +49,7 @@ require ( github.com/hbagdi/go-unsplash v0.0.0-20230414214043-474fc02c9119 github.com/huandu/skiplist v1.2.1 github.com/improbable-eng/grpc-web v0.15.0 - github.com/ipfs/boxo v0.24.3 + github.com/ipfs/boxo v0.26.0 github.com/ipfs/go-block-format v0.2.0 github.com/ipfs/go-cid v0.4.1 github.com/ipfs/go-datastore v0.6.0 @@ -61,7 +61,7 @@ require ( github.com/kelseyhightower/envconfig v1.4.0 github.com/klauspost/compress v1.17.11 github.com/kovidgoyal/imaging v1.6.3 - github.com/libp2p/go-libp2p v0.37.0 + github.com/libp2p/go-libp2p v0.38.1 github.com/libp2p/zeroconf/v2 v2.2.0 github.com/logrusorgru/aurora v2.0.3+incompatible github.com/magiconair/properties v1.8.9 @@ -99,7 +99,7 @@ require ( go.uber.org/mock v0.5.0 go.uber.org/multierr v1.11.0 go.uber.org/zap v1.27.0 - golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f + golang.org/x/exp v0.0.0-20241217172543-b2144cdd0a67 golang.org/x/image v0.23.0 golang.org/x/mobile v0.0.0-20241108191957-fa514ef75a0f golang.org/x/net v0.33.0 @@ -150,6 +150,7 @@ require ( github.com/flopp/go-findfont v0.1.0 // indirect github.com/fogleman/gg v1.3.0 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect + github.com/gammazero/deque v1.0.0 // indirect github.com/go-errors/errors v1.4.2 // indirect github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect @@ -166,7 +167,7 @@ require ( github.com/golang/protobuf v1.5.4 // indirect github.com/google/flatbuffers v1.12.1 // indirect github.com/google/go-querystring v1.1.0 // indirect - github.com/google/pprof v0.0.0-20241017200806-017d972448fc // indirect + github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad // indirect github.com/gopherjs/gopherjs v0.0.0-20190430165422-3e4dfb77656c // indirect github.com/gorilla/css v1.0.1 // indirect github.com/gosimple/unidecode v1.0.1 // indirect @@ -189,7 +190,7 @@ require ( github.com/jbenet/go-temp-err-catcher v0.1.0 // indirect github.com/jbenet/goprocess v0.1.4 // indirect github.com/jinzhu/copier v0.3.5 // indirect - github.com/klauspost/cpuid/v2 v2.2.8 // indirect + github.com/klauspost/cpuid/v2 v2.2.9 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect @@ -201,21 +202,21 @@ require ( github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/multiformats/go-base36 v0.2.0 // indirect - github.com/multiformats/go-multiaddr v0.13.0 // indirect + github.com/multiformats/go-multiaddr v0.14.0 // indirect github.com/multiformats/go-multicodec v0.9.0 // indirect - github.com/multiformats/go-multistream v0.5.0 // indirect + github.com/multiformats/go-multistream v0.6.0 // indirect github.com/multiformats/go-varint v0.0.7 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/mwitkow/go-proto-validators v0.3.2 // indirect github.com/ncruces/go-strftime v0.1.9 // indirect - github.com/onsi/ginkgo/v2 v2.20.2 // indirect + github.com/onsi/ginkgo/v2 v2.22.0 // indirect github.com/pelletier/go-toml/v2 v2.0.6 // indirect github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/polydawn/refmt v0.89.0 // indirect github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.60.0 // indirect + github.com/prometheus/common v0.61.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/pseudomuto/protokit v0.2.1 // indirect github.com/quic-go/quic-go v0.48.2 // indirect @@ -252,10 +253,10 @@ require ( golang.org/x/sync v0.10.0 // indirect golang.org/x/term v0.27.0 // indirect golang.org/x/time v0.8.0 // indirect - golang.org/x/tools v0.27.0 // indirect + golang.org/x/tools v0.28.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20241021214115-324edc3d5d38 // indirect - google.golang.org/protobuf v1.35.1 // indirect + google.golang.org/protobuf v1.36.0 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect lukechampine.com/blake3 v1.3.0 // indirect @@ -285,3 +286,5 @@ replace github.com/multiformats/go-multiaddr => github.com/anyproto/go-multiaddr replace github.com/gogo/protobuf => github.com/anyproto/protobuf v1.3.3-0.20240201225420-6e325cf0ac38 replace google.golang.org/genproto/googleapis/rpc => google.golang.org/genproto/googleapis/rpc v0.0.0-20241021214115-324edc3d5d38 + +replace github.com/anyproto/any-sync => ../any-sync diff --git a/go.sum b/go.sum index dbbe65072..aae998b7c 100644 --- a/go.sum +++ b/go.sum @@ -78,8 +78,6 @@ github.com/andybalholm/cascadia v1.3.2 h1:3Xi6Dw5lHF15JtdcmAHD3i1+T8plmv7BQ/nsVi github.com/andybalholm/cascadia v1.3.2/go.mod h1:7gtRlve5FxPPgIgX36uWBX58OdBsSS6lUvCFb+h7KvU= github.com/anyproto/any-store v0.1.4-0.20241211133419-d0c2df992842 h1:2hJRYJ4+AjOSiy3Sf84XyU/ki8zE/+Tp6IdhqZZHBaY= github.com/anyproto/any-store v0.1.4-0.20241211133419-d0c2df992842/go.mod h1:6/0OUKgSMWF/vYGoGYzQOl2CII5OdiuXbQlGDXYcNYc= -github.com/anyproto/any-sync v0.6.0-alpha.1.0.20241224143141-033d6a39e992 h1:5xkhRuEkNyQ02P6d2cUlYhMPdAzx74YcOW9VCuxF73c= -github.com/anyproto/any-sync v0.6.0-alpha.1.0.20241224143141-033d6a39e992/go.mod h1:PaX1E0ryKt9TtKkVRBmst4k15PSuWVFbL079N2Z957U= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580 h1:Ba80IlCCxkZ9H1GF+7vFu/TSpPvbpDCxXJ5ogc4euYc= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580/go.mod h1:T/uWAYxrXdaXw64ihI++9RMbKTCpKd/yE9+saARew7k= github.com/anyproto/go-chash v0.1.0 h1:I9meTPjXFRfXZHRJzjOHC/XF7Q5vzysKkiT/grsogXY= @@ -257,6 +255,8 @@ github.com/envoyproxy/protoc-gen-validate v1.1.0/go.mod h1:sXRDRVmzEbkM7CVcM06s9 github.com/ethereum/go-ethereum v1.13.15 h1:U7sSGYGo4SPjP6iNIifNoyIAiNjrmQkz6EwQG+/EZWo= github.com/ethereum/go-ethereum v1.13.15/go.mod h1:TN8ZiHrdJwSe8Cb6x+p0hs5CxhJZPbqB7hHkaUXcmIU= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/filecoin-project/go-clock v0.1.0 h1:SFbYIM75M8NnFm1yMHhN9Ahy3W5bEZV9gd6MPfXbKVU= +github.com/filecoin-project/go-clock v0.1.0/go.mod h1:4uB/O4PvOjlx1VCMdZ9MyDZXRm//gkj1ELEbxfI1AZs= github.com/flopp/go-findfont v0.1.0 h1:lPn0BymDUtJo+ZkV01VS3661HL6F4qFlkhcJN55u6mU= github.com/flopp/go-findfont v0.1.0/go.mod h1:wKKxRDjD024Rh7VMwoU90i6ikQRCr+JTHB5n4Ejkqvw= github.com/flynn/noise v1.1.0 h1:KjPQoQCEFdZDiP03phOvGi11+SVVhBG2wOWAorLsstg= @@ -273,6 +273,10 @@ github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7z github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= +github.com/gammazero/chanqueue v1.0.0 h1:FER/sMailGFA3DDvFooEkipAMU+3c9Bg3bheloPSz6o= +github.com/gammazero/chanqueue v1.0.0/go.mod h1:fMwpwEiuUgpab0sH4VHiVcEoji1pSi+EIzeG4TPeKPc= +github.com/gammazero/deque v1.0.0 h1:LTmimT8H7bXkkCy6gZX7zNLtkbz4NdS2z8LZuor3j34= +github.com/gammazero/deque v1.0.0/go.mod h1:iflpYvtGfM3U8S8j+sZEKIak3SAKYpA5/SQewgfXDKo= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= @@ -420,8 +424,8 @@ github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20241017200806-017d972448fc h1:NGyrhhFhwvRAZg02jnYVg3GBQy0qGBKmFQJwaPmpmxs= -github.com/google/pprof v0.0.0-20241017200806-017d972448fc/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= +github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad h1:a6HEuzUHeKH6hwfN/ZoQgRgVIWFJljSWa/zetS2WTvg= +github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -518,8 +522,8 @@ github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLf github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= github.com/ipfs/bbloom v0.0.4 h1:Gi+8EGJ2y5qiD5FbsbpX/TMNcJw8gSqr7eyjHa4Fhvs= github.com/ipfs/bbloom v0.0.4/go.mod h1:cS9YprKXpoZ9lT0n/Mw/a6/aFV6DTjTLYHeA+gyqMG0= -github.com/ipfs/boxo v0.24.3 h1:gldDPOWdM3Rz0v5LkVLtZu7A7gFNvAlWcmxhCqlHR3c= -github.com/ipfs/boxo v0.24.3/go.mod h1:h0DRzOY1IBFDHp6KNvrJLMFdSXTYID0Zf+q7X05JsNg= +github.com/ipfs/boxo v0.26.0 h1:RRxEon7rJMy8ScVaTLncSZ5/nA6majYhRSbzc80snO8= +github.com/ipfs/boxo v0.26.0/go.mod h1:iHyc9cjoF7/zoiKVY65d2fBWRhoS2zx4cMk8hKgqrac= github.com/ipfs/go-bitfield v1.1.0 h1:fh7FIo8bSwaJEh6DdTWbCeZ1eqOaOkKFI74SCnsWbGA= github.com/ipfs/go-bitfield v1.1.0/go.mod h1:paqf1wjq/D2BBmzfTVFlJQ9IlFOZpg422HL0HqsGWHU= github.com/ipfs/go-block-format v0.2.0 h1:ZqrkxBA2ICbDRbK8KJs/u0O3dlp6gmAuuXUJNiW1Ycs= @@ -549,8 +553,8 @@ github.com/ipfs/go-log v1.0.5 h1:2dOuUCB1Z7uoczMWgAyDck5JLb72zHzrMnGnCNNbvY8= github.com/ipfs/go-log v1.0.5/go.mod h1:j0b8ZoR+7+R99LD9jZ6+AJsrzkPbSXbZfGakb5JPtIo= github.com/ipfs/go-metrics-interface v0.0.1 h1:j+cpbjYvu4R8zbleSs36gvB7jR+wsL2fGD6n0jO4kdg= github.com/ipfs/go-metrics-interface v0.0.1/go.mod h1:6s6euYU4zowdslK0GKHmqaIZ3j/b/tL7HTWtJ4VPgWY= -github.com/ipfs/go-peertaskqueue v0.8.1 h1:YhxAs1+wxb5jk7RvS0LHdyiILpNmRIRnZVztekOF0pg= -github.com/ipfs/go-peertaskqueue v0.8.1/go.mod h1:Oxxd3eaK279FxeydSPPVGHzbwVeHjatZ2GA8XD+KbPU= +github.com/ipfs/go-peertaskqueue v0.8.2 h1:PaHFRaVFdxQk1Qo3OKiHPYjmmusQy7gKQUaL8JDszAU= +github.com/ipfs/go-peertaskqueue v0.8.2/go.mod h1:L6QPvou0346c2qPJNiJa6BvOibxDfaiPlqHInmzg0FA= github.com/ipfs/go-test v0.0.4 h1:DKT66T6GBB6PsDFLoO56QZPrOmzJkqU1FZH5C9ySkew= github.com/ipfs/go-test v0.0.4/go.mod h1:qhIM1EluEfElKKM6fnWxGn822/z9knUGM1+I/OAQNKI= github.com/ipld/go-codec-dagpb v1.6.0 h1:9nYazfyu9B1p3NAgfVdpRco3Fs2nFC72DqVsMj6rOcc= @@ -602,8 +606,8 @@ github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYs github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc= github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0= -github.com/klauspost/cpuid/v2 v2.2.8 h1:+StwCXwm9PdpiEkPyzBXIy+M9KUb4ODm0Zarf1kS5BM= -github.com/klauspost/cpuid/v2 v2.2.8/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= +github.com/klauspost/cpuid/v2 v2.2.9 h1:66ze0taIn2H33fBvCkXuv9BmCwDfafmiIVpKV9kKGuY= +github.com/klauspost/cpuid/v2 v2.2.9/go.mod h1:rqkxqrZ1EhYM9G+hXH7YdowN5R5RGN6NK4QwQ3WMXF8= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/koron/go-ssdp v0.0.4 h1:1IDwrghSKYM7yLf7XCzbByg2sJ/JcNOZRXS2jczTwz0= @@ -626,8 +630,10 @@ github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= -github.com/libp2p/go-libp2p v0.37.0 h1:8K3mcZgwTldydMCNOiNi/ZJrOB9BY+GlI3UxYzxBi9A= -github.com/libp2p/go-libp2p v0.37.0/go.mod h1:GOKmSN99scDuYGTwaTbQPR8Nt6dxrK3ue7OjW2NGDg4= +github.com/libp2p/go-flow-metrics v0.2.0 h1:EIZzjmeOE6c8Dav0sNv35vhZxATIXWZg6j/C08XmmDw= +github.com/libp2p/go-flow-metrics v0.2.0/go.mod h1:st3qqfu8+pMfh+9Mzqb2GTiwrAGjIPszEjZmtksN8Jc= +github.com/libp2p/go-libp2p v0.38.1 h1:aT1K7IFWi+gZUsQGCzTHBTlKX5QVZQOahng8DnOr6tQ= +github.com/libp2p/go-libp2p v0.38.1/go.mod h1:QWV4zGL3O9nXKdHirIC59DoRcZ446dfkjbOJ55NEWFo= github.com/libp2p/go-libp2p-asn-util v0.4.1 h1:xqL7++IKD9TBFMgnLPZR6/6iYhawHKHl950SO9L6n94= github.com/libp2p/go-libp2p-asn-util v0.4.1/go.mod h1:d/NI6XZ9qxw67b4e+NgpQexCIiFYJjErASrYW4PFDN8= github.com/libp2p/go-libp2p-record v0.2.0 h1:oiNUOCWno2BFuxt3my4i1frNrt7PerzB3queqa1NkQ0= @@ -638,8 +644,8 @@ github.com/libp2p/go-msgio v0.3.0 h1:mf3Z8B1xcFN314sWX+2vOTShIE0Mmn2TXn3YCUQGNj0 github.com/libp2p/go-msgio v0.3.0/go.mod h1:nyRM819GmVaF9LX3l03RMh10QdOroF++NBbxAb0mmDM= github.com/libp2p/go-nat v0.2.0 h1:Tyz+bUFAYqGyJ/ppPPymMGbIgNRH+WqC5QrT5fKrrGk= github.com/libp2p/go-nat v0.2.0/go.mod h1:3MJr+GRpRkyT65EpVPBstXLvOlAPzUVlG6Pwg9ohLJk= -github.com/libp2p/go-netroute v0.2.1 h1:V8kVrpD8GK0Riv15/7VN6RbUQ3URNZVosw7H2v9tksU= -github.com/libp2p/go-netroute v0.2.1/go.mod h1:hraioZr0fhBjG0ZRXJJ6Zj2IVEVNx6tDTFQfSmcq7mQ= +github.com/libp2p/go-netroute v0.2.2 h1:Dejd8cQ47Qx2kRABg6lPwknU7+nBnFRpko45/fFPuZ8= +github.com/libp2p/go-netroute v0.2.2/go.mod h1:Rntq6jUAH0l9Gg17w5bFGhcC9a+vk4KNXs6s7IljKYE= github.com/libp2p/go-yamux/v4 v4.0.1 h1:FfDR4S1wj6Bw2Pqbc8Uz7pCxeRBPbwsBbEdfwiCypkQ= github.com/libp2p/go-yamux/v4 v4.0.1/go.mod h1:NWjl8ZTLOGlozrXSOZ/HlfG++39iKNnM5wwmtQP1YB4= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= @@ -721,8 +727,8 @@ github.com/multiformats/go-multicodec v0.9.0 h1:pb/dlPnzee/Sxv/j4PmkDRxCOi3hXTz3 github.com/multiformats/go-multicodec v0.9.0/go.mod h1:L3QTQvMIaVBkXOXXtVmYE+LI16i14xuaojr/H7Ai54k= github.com/multiformats/go-multihash v0.2.3 h1:7Lyc8XfX/IY2jWb/gI7JP+o7JEq9hOa7BFvVU9RSh+U= github.com/multiformats/go-multihash v0.2.3/go.mod h1:dXgKXCXjBzdscBLk9JkjINiEsCKRVch90MdaGiKsvSM= -github.com/multiformats/go-multistream v0.5.0 h1:5htLSLl7lvJk3xx3qT/8Zm9J4K8vEOf/QGkvOGQAyiE= -github.com/multiformats/go-multistream v0.5.0/go.mod h1:n6tMZiwiP2wUsR8DgfDWw1dydlEqV3l6N3/GBsX6ILA= +github.com/multiformats/go-multistream v0.6.0 h1:ZaHKbsL404720283o4c/IHQXiS6gb8qAN5EIJ4PN5EA= +github.com/multiformats/go-multistream v0.6.0/go.mod h1:MOyoG5otO24cHIg8kf9QW2/NozURlkP/rvi2FQJyCPg= github.com/multiformats/go-varint v0.0.7 h1:sWSGR+f/eu5ABZA2ZpYKBILXTTs9JWpdEM/nEGOHFS8= github.com/multiformats/go-varint v0.0.7/go.mod h1:r8PUYw/fD/SjBCiKOoDlGF6QawOELpZAu9eioSos/OU= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= @@ -750,11 +756,11 @@ github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQ github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo/v2 v2.20.2 h1:7NVCeyIWROIAheY21RLS+3j2bb52W0W82tkberYytp4= -github.com/onsi/ginkgo/v2 v2.20.2/go.mod h1:K9gyxPIlb+aIvnZ8bd9Ak+YP18w3APlR+5coaZoE2ag= +github.com/onsi/ginkgo/v2 v2.22.0 h1:Yed107/8DjTr0lKCNt7Dn8yQ6ybuDRQoMGrNFKzMfHg= +github.com/onsi/ginkgo/v2 v2.22.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k= -github.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY= +github.com/onsi/gomega v1.34.2 h1:pNCwDkzrsv7MS9kpaQvVb1aVLahQXyJ/Tv5oAZMI3i8= +github.com/onsi/gomega v1.34.2/go.mod h1:v1xfxRgk0KIsG+QOdm7p8UosrOzPYRo60fd3B/1Dukc= github.com/oov/psd v0.0.0-20220121172623-5db5eafcecbb h1:JF9kOhBBk4WPF7luXFu5yR+WgaFm9L/KiHJHhU9vDwA= github.com/oov/psd v0.0.0-20220121172623-5db5eafcecbb/go.mod h1:GHI1bnmAcbp96z6LNfBJvtrjxhaXGkbsk967utPlvL8= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= @@ -790,12 +796,12 @@ github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7 h1:Dx7Ovyv/SFnMFw github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= -github.com/pion/datachannel v1.5.9 h1:LpIWAOYPyDrXtU+BW7X0Yt/vGtYxtXQ8ql7dFfYUVZA= -github.com/pion/datachannel v1.5.9/go.mod h1:kDUuk4CU4Uxp82NH4LQZbISULkX/HtzKa4P7ldf9izE= +github.com/pion/datachannel v1.5.10 h1:ly0Q26K1i6ZkGf42W7D4hQYR90pZwzFOjTq5AuCKk4o= +github.com/pion/datachannel v1.5.10/go.mod h1:p/jJfC9arb29W7WrxyKbepTU20CFgyx5oLo8Rs4Py/M= github.com/pion/dtls/v2 v2.2.12 h1:KP7H5/c1EiVAAKUmXyCzPiQe5+bCJrpOeKg/L05dunk= github.com/pion/dtls/v2 v2.2.12/go.mod h1:d9SYc9fch0CqK90mRk1dC7AkzzpwJj6u2GU3u+9pqFE= -github.com/pion/ice/v2 v2.3.36 h1:SopeXiVbbcooUg2EIR8sq4b13RQ8gzrkkldOVg+bBsc= -github.com/pion/ice/v2 v2.3.36/go.mod h1:mBF7lnigdqgtB+YHkaY/Y6s6tsyRyo4u4rPGRuOjUBQ= +github.com/pion/ice/v2 v2.3.37 h1:ObIdaNDu1rCo7hObhs34YSBcO7fjslJMZV0ux+uZWh0= +github.com/pion/ice/v2 v2.3.37/go.mod h1:mBF7lnigdqgtB+YHkaY/Y6s6tsyRyo4u4rPGRuOjUBQ= github.com/pion/interceptor v0.1.37 h1:aRA8Zpab/wE7/c0O3fh1PqY0AJI3fCSEM5lRWJVorwI= github.com/pion/interceptor v0.1.37/go.mod h1:JzxbJ4umVTlZAf+/utHzNesY8tmRkM2lVmkS82TTj8Y= github.com/pion/logging v0.2.2 h1:M9+AIj/+pxNsDfAT64+MAVgJO0rsyLnoJKCqf//DoeY= @@ -804,12 +810,12 @@ github.com/pion/mdns v0.0.12 h1:CiMYlY+O0azojWDmxdNr7ADGrnZ+V6Ilfner+6mSVK8= github.com/pion/mdns v0.0.12/go.mod h1:VExJjv8to/6Wqm1FXK+Ii/Z9tsVk/F5sD/N70cnYFbk= github.com/pion/randutil v0.1.0 h1:CFG1UdESneORglEsnimhUjf33Rwjubwj6xfiOXBa3mA= github.com/pion/randutil v0.1.0/go.mod h1:XcJrSMMbbMRhASFVOlj/5hQial/Y8oH/HVo7TBZq+j8= -github.com/pion/rtcp v1.2.14 h1:KCkGV3vJ+4DAJmvP0vaQShsb0xkRfWkO540Gy102KyE= -github.com/pion/rtcp v1.2.14/go.mod h1:sn6qjxvnwyAkkPzPULIbVqSKI5Dv54Rv7VG0kNxh9L4= -github.com/pion/rtp v1.8.9 h1:E2HX740TZKaqdcPmf4pw6ZZuG8u5RlMMt+l3dxeu6Wk= -github.com/pion/rtp v1.8.9/go.mod h1:pBGHaFt/yW7bf1jjWAoUjpSNoDnw98KTMg+jWWvziqU= -github.com/pion/sctp v1.8.33 h1:dSE4wX6uTJBcNm8+YlMg7lw1wqyKHggsP5uKbdj+NZw= -github.com/pion/sctp v1.8.33/go.mod h1:beTnqSzewI53KWoG3nqB282oDMGrhNxBdb+JZnkCwRM= +github.com/pion/rtcp v1.2.15 h1:LZQi2JbdipLOj4eBjK4wlVoQWfrZbh3Q6eHtWtJBZBo= +github.com/pion/rtcp v1.2.15/go.mod h1:jlGuAjHMEXwMUHK78RgX0UmEJFV4zUKOFHR7OP+D3D0= +github.com/pion/rtp v1.8.10 h1:puphjdbjPB+L+NFaVuZ5h6bt1g5q4kFIoI+r5q/g0CU= +github.com/pion/rtp v1.8.10/go.mod h1:8uMBJj32Pa1wwx8Fuv/AsFhn8jsgw+3rUC2PfoBZ8p4= +github.com/pion/sctp v1.8.35 h1:qwtKvNK1Wc5tHMIYgTDJhfZk7vATGVHhXbUDfHbYwzA= +github.com/pion/sctp v1.8.35/go.mod h1:EcXP8zCYVTRy3W9xtOF7wJm1L1aXfKRQzaM33SjQlzg= github.com/pion/sdp/v3 v3.0.9 h1:pX++dCHoHUwq43kuwf3PyJfHlwIj4hXA7Vrifiq0IJY= github.com/pion/sdp/v3 v3.0.9/go.mod h1:B5xmvENq5IXJimIO4zfp6LAe1fD9N+kFv+V/1lOdz8M= github.com/pion/srtp/v2 v2.0.20 h1:HNNny4s+OUmG280ETrCdgFndp4ufx3/uy85EawYEhTk= @@ -818,10 +824,12 @@ github.com/pion/stun v0.6.1 h1:8lp6YejULeHBF8NmV8e2787BogQhduZugh5PdhDyyN4= github.com/pion/stun v0.6.1/go.mod h1:/hO7APkX4hZKu/D0f2lHzNyvdkTGtIy3NDmLR7kSz/8= github.com/pion/transport/v2 v2.2.10 h1:ucLBLE8nuxiHfvkFKnkDQRYWYfp8ejf4YBOPfaQpw6Q= github.com/pion/transport/v2 v2.2.10/go.mod h1:sq1kSLWs+cHW9E+2fJP95QudkzbK7wscs8yYgQToO5E= +github.com/pion/transport/v3 v3.0.7 h1:iRbMH05BzSNwhILHoBoAPxoB9xQgOaJk+591KC9P1o0= +github.com/pion/transport/v3 v3.0.7/go.mod h1:YleKiTZ4vqNxVwh77Z0zytYi7rXHl7j6uPLGhhz9rwo= github.com/pion/turn/v2 v2.1.6 h1:Xr2niVsiPTB0FPtt+yAWKFUkU1eotQbGgpTIld4x1Gc= github.com/pion/turn/v2 v2.1.6/go.mod h1:huEpByKKHix2/b9kmTAM3YoX6MKP+/D//0ClgUYR2fY= -github.com/pion/webrtc/v3 v3.3.4 h1:v2heQVnXTSqNRXcaFQVOhIOYkLMxOu1iJG8uy1djvkk= -github.com/pion/webrtc/v3 v3.3.4/go.mod h1:liNa+E1iwyzyXqNUwvoMRNQ10x8h8FOeJKL8RkIbamE= +github.com/pion/webrtc/v3 v3.3.5 h1:ZsSzaMz/i9nblPdiAkZoP+E6Kmjw+jnyq3bEmU3EtRg= +github.com/pion/webrtc/v3 v3.3.5/go.mod h1:liNa+E1iwyzyXqNUwvoMRNQ10x8h8FOeJKL8RkIbamE= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -855,8 +863,8 @@ github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y8 github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.60.0 h1:+V9PAREWNvJMAuJ1x1BaWl9dewMW4YrHZQbx0sJNllA= -github.com/prometheus/common v0.60.0/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= +github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ= +github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= @@ -1111,8 +1119,8 @@ golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= -golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= -golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= +golang.org/x/exp v0.0.0-20241217172543-b2144cdd0a67 h1:1UoZQm6f0P/ZO0w1Ri+f+ifG/gXhegadRdwBIXEFWDo= +golang.org/x/exp v0.0.0-20241217172543-b2144cdd0a67/go.mod h1:qj5a5QZpwLU2NLQudwIN5koi3beDhSAlJwa67PuM98c= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= @@ -1395,8 +1403,8 @@ golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.27.0 h1:qEKojBykQkQ4EynWy4S8Weg69NumxKdn40Fce3uc/8o= -golang.org/x/tools v0.27.0/go.mod h1:sUi0ZgbwW9ZPAq26Ekut+weQPR5eIM6GQLQ1Yjm1H0Q= +golang.org/x/tools v0.28.0 h1:WuB6qZ4RPCQo5aP3WdKZS7i595EdWqWR8vqJTlwTVK8= +golang.org/x/tools v0.28.0/go.mod h1:dcIOrVd3mfQKTgrDVQHqCPMWy6lnhfhtX3hLXYVLfRw= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1512,8 +1520,8 @@ google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2 google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= -google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.0 h1:mjIs9gYtt56AzC4ZaffQuh88TZurBGhIJMBZGSxNerQ= +google.golang.org/protobuf v1.36.0/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/pkg/lib/localstore/objectstore/space.go b/pkg/lib/localstore/objectstore/space.go index 3a162e7ee..f2f50e646 100644 --- a/pkg/lib/localstore/objectstore/space.go +++ b/pkg/lib/localstore/objectstore/space.go @@ -2,7 +2,9 @@ package objectstore import ( "context" + "errors" + anystore "github.com/anyproto/any-store" "github.com/anyproto/any-store/anyenc" "github.com/anyproto/any-store/query" @@ -55,6 +57,9 @@ func (d *dsObjectStore) BindSpaceId(spaceId, objectId string) error { func (d *dsObjectStore) GetSpaceId(objectId string) (spaceId string, err error) { doc, err := d.bindId.FindId(d.componentCtx, objectId) if err != nil { + if errors.Is(err, anystore.ErrDocNotFound) { + return "", domain.ErrObjectNotFound + } return "", err } return doc.Value().GetString(bindKey), nil diff --git a/space/spacecore/storage/anystorage/storageservice.go b/space/spacecore/storage/anystorage/storageservice.go index 724b2ecb6..1557c54ca 100644 --- a/space/spacecore/storage/anystorage/storageservice.go +++ b/space/spacecore/storage/anystorage/storageservice.go @@ -282,7 +282,7 @@ func (s *storageService) DeleteSpaceStorage(ctx context.Context, spaceId string) }) cont, err := s.get(ctx, spaceId) if err != nil { - if errors.Is(err, ErrDeleted) { + if errors.Is(err, ErrDeleted) || errors.Is(err, spacestorage.ErrSpaceStorageMissing) { return nil } return err From 07ef48147f8408d27da17a7c70c9f3f4977b8d62 Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Tue, 31 Dec 2024 19:37:35 +0100 Subject: [PATCH 091/279] GO-4146 Add synchronous --- .../spacecore/storage/anystorage/storageservice.go | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/space/spacecore/storage/anystorage/storageservice.go b/space/spacecore/storage/anystorage/storageservice.go index 1557c54ca..7753269a5 100644 --- a/space/spacecore/storage/anystorage/storageservice.go +++ b/space/spacecore/storage/anystorage/storageservice.go @@ -137,6 +137,7 @@ func (s *storageService) Run(ctx context.Context) (err error) { } func (s *storageService) openDb(ctx context.Context, id string) (db anystore.DB, err error) { + // TODO: [storage] set anystore config from config dbPath := path.Join(s.rootPath, id) if _, err := os.Stat(dbPath); err != nil { if errors.Is(err, os.ErrNotExist) { @@ -144,12 +145,12 @@ func (s *storageService) openDb(ctx context.Context, id string) (db anystore.DB, } return nil, err } - return anystore.Open(ctx, dbPath, nil) + return anystore.Open(ctx, dbPath, anyStoreConfig) } func (s *storageService) createDb(ctx context.Context, id string) (db anystore.DB, err error) { dbPath := path.Join(s.rootPath, id) - return anystore.Open(ctx, dbPath, nil) + return anystore.Open(ctx, dbPath, anyStoreConfig) } func (s *storageService) Close(ctx context.Context) (err error) { @@ -299,3 +300,12 @@ func (s *storageService) DeleteSpaceStorage(ctx context.Context, spaceId string) <-ch return nil } + +var anyStoreConfig *anystore.Config = &anystore.Config{ + Namespace: "", + ReadConnections: 0, + SQLiteConnectionOptions: map[string]string{ + "synchronous": "off", + }, + SyncPoolElementMaxSize: 0, +} From 3520002beefec430088bf18751d90f460fcee213 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Wed, 1 Jan 2025 15:21:28 +0100 Subject: [PATCH 092/279] GO-4459: Refactor object service, add tests again --- cmd/api/docs/docs.go | 32 +- cmd/api/docs/swagger.json | 32 +- cmd/api/docs/swagger.yaml | 22 +- cmd/api/object/handler.go | 341 +++++--------------- cmd/api/object/model.go | 24 ++ cmd/api/object/service.go | 329 +++++++++++++++++-- cmd/api/object/service_test.go | 568 +++++++++++++++++++++++++++++++++ cmd/api/server/router.go | 4 +- cmd/api/util/util.go | 1 + 9 files changed, 1052 insertions(+), 301 deletions(-) create mode 100644 cmd/api/object/service_test.go diff --git a/cmd/api/docs/docs.go b/cmd/api/docs/docs.go index 54924da3c..0998e883d 100644 --- a/cmd/api/docs/docs.go +++ b/cmd/api/docs/docs.go @@ -578,7 +578,13 @@ const docTemplate = `{ "200": { "description": "The created object", "schema": { - "$ref": "#/definitions/object.Object" + "$ref": "#/definitions/object.CreateObjectResponse" + } + }, + "400": { + "description": "Bad request", + "schema": { + "$ref": "#/definitions/util.ValidationError" } }, "403": { @@ -691,7 +697,13 @@ const docTemplate = `{ "200": { "description": "The updated object", "schema": { - "$ref": "#/definitions/object.Object" + "$ref": "#/definitions/object.UpdateObjectResponse" + } + }, + "400": { + "description": "Bad request", + "schema": { + "$ref": "#/definitions/util.ValidationError" } }, "403": { @@ -768,6 +780,14 @@ const docTemplate = `{ } } }, + "object.CreateObjectResponse": { + "type": "object", + "properties": { + "object": { + "$ref": "#/definitions/object.Object" + } + } + }, "object.Detail": { "type": "object", "properties": { @@ -922,6 +942,14 @@ const docTemplate = `{ } } }, + "object.UpdateObjectResponse": { + "type": "object", + "properties": { + "object": { + "$ref": "#/definitions/object.Object" + } + } + }, "pagination.PaginatedResponse-space_Member": { "type": "object", "properties": { diff --git a/cmd/api/docs/swagger.json b/cmd/api/docs/swagger.json index d81a69838..1aa508608 100644 --- a/cmd/api/docs/swagger.json +++ b/cmd/api/docs/swagger.json @@ -572,7 +572,13 @@ "200": { "description": "The created object", "schema": { - "$ref": "#/definitions/object.Object" + "$ref": "#/definitions/object.CreateObjectResponse" + } + }, + "400": { + "description": "Bad request", + "schema": { + "$ref": "#/definitions/util.ValidationError" } }, "403": { @@ -685,7 +691,13 @@ "200": { "description": "The updated object", "schema": { - "$ref": "#/definitions/object.Object" + "$ref": "#/definitions/object.UpdateObjectResponse" + } + }, + "400": { + "description": "Bad request", + "schema": { + "$ref": "#/definitions/util.ValidationError" } }, "403": { @@ -762,6 +774,14 @@ } } }, + "object.CreateObjectResponse": { + "type": "object", + "properties": { + "object": { + "$ref": "#/definitions/object.Object" + } + } + }, "object.Detail": { "type": "object", "properties": { @@ -916,6 +936,14 @@ } } }, + "object.UpdateObjectResponse": { + "type": "object", + "properties": { + "object": { + "$ref": "#/definitions/object.Object" + } + } + }, "pagination.PaginatedResponse-space_Member": { "type": "object", "properties": { diff --git a/cmd/api/docs/swagger.yaml b/cmd/api/docs/swagger.yaml index 402548ae1..98042165f 100644 --- a/cmd/api/docs/swagger.yaml +++ b/cmd/api/docs/swagger.yaml @@ -34,6 +34,11 @@ definitions: vertical_align: type: string type: object + object.CreateObjectResponse: + properties: + object: + $ref: '#/definitions/object.Object' + type: object object.Detail: properties: details: @@ -140,6 +145,11 @@ definitions: text: type: string type: object + object.UpdateObjectResponse: + properties: + object: + $ref: '#/definitions/object.Object' + type: object pagination.PaginatedResponse-space_Member: properties: data: @@ -687,7 +697,11 @@ paths: "200": description: The created object schema: - $ref: '#/definitions/object.Object' + $ref: '#/definitions/object.CreateObjectResponse' + "400": + description: Bad request + schema: + $ref: '#/definitions/util.ValidationError' "403": description: Unauthorized schema: @@ -762,7 +776,11 @@ paths: "200": description: The updated object schema: - $ref: '#/definitions/object.Object' + $ref: '#/definitions/object.UpdateObjectResponse' + "400": + description: Bad request + schema: + $ref: '#/definitions/util.ValidationError' "403": description: Unauthorized schema: diff --git a/cmd/api/object/handler.go b/cmd/api/object/handler.go index b7be68fe9..94e81de6d 100644 --- a/cmd/api/object/handler.go +++ b/cmd/api/object/handler.go @@ -4,24 +4,11 @@ import ( "net/http" "github.com/gin-gonic/gin" - "github.com/gogo/protobuf/types" "github.com/anyproto/anytype-heart/cmd/api/pagination" "github.com/anyproto/anytype-heart/cmd/api/util" - "github.com/anyproto/anytype-heart/pb" - "github.com/anyproto/anytype-heart/pkg/lib/bundle" - "github.com/anyproto/anytype-heart/pkg/lib/pb/model" - "github.com/anyproto/anytype-heart/util/pbtypes" ) -type CreateObjectRequest struct { - Name string `json:"name"` - Icon string `json:"icon"` - TemplateId string `json:"template_id"` - ObjectTypeUniqueKey string `json:"object_type_unique_key"` - WithChat bool `json:"with_chat"` -} - // GetObjectsHandler retrieves objects in a specific space // // @Summary Retrieve objects in a specific space @@ -42,77 +29,19 @@ func GetObjectsHandler(s *ObjectService) gin.HandlerFunc { offset := c.GetInt("offset") limit := c.GetInt("limit") - resp := s.mw.ObjectSearch(c.Request.Context(), &pb.RpcObjectSearchRequest{ - SpaceId: spaceId, - Filters: []*model.BlockContentDataviewFilter{ - { - RelationKey: bundle.RelationKeyLayout.String(), - Condition: model.BlockContentDataviewFilter_In, - Value: pbtypes.IntList([]int{ - int(model.ObjectType_basic), - int(model.ObjectType_profile), - int(model.ObjectType_todo), - int(model.ObjectType_note), - int(model.ObjectType_bookmark), - int(model.ObjectType_set), - int(model.ObjectType_collection), - int(model.ObjectType_participant), - }...), - }, - }, - Sorts: []*model.BlockContentDataviewSort{{ - RelationKey: bundle.RelationKeyLastModifiedDate.String(), - Type: model.BlockContentDataviewSort_Desc, - Format: model.RelationFormat_longtext, - IncludeTime: true, - EmptyPlacement: model.BlockContentDataviewSort_NotSpecified, - }}, - Keys: []string{"id", "name", "type", "layout", "iconEmoji", "iconImage"}, - }) + objects, total, hasMore, err := s.ListObjects(c.Request.Context(), spaceId, offset, limit) + code := util.MapErrorCode(err, + util.ErrToCode(ErrorFailedRetrieveObjects, http.StatusInternalServerError), + util.ErrToCode(ErrNoObjectsFound, http.StatusNotFound), + ) - if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { - c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to retrieve list of objects."}) + if code != http.StatusOK { + apiErr := util.CodeToAPIError(code, err.Error()) + c.JSON(code, apiErr) return } - if len(resp.Records) == 0 { - c.JSON(http.StatusNotFound, gin.H{"message": "No objects found."}) - return - } - - paginatedObjects, hasMore := pagination.Paginate(resp.Records, offset, limit) - objects := make([]Object, 0, len(paginatedObjects)) - - for _, record := range paginatedObjects { - icon := util.GetIconFromEmojiOrImage(s.AccountInfo, record.Fields["iconEmoji"].GetStringValue(), record.Fields["iconImage"].GetStringValue()) - objectTypeName, err := util.ResolveTypeToName(s.mw, spaceId, record.Fields["type"].GetStringValue()) - if err != nil { - c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to resolve object type name."}) - return - } - - objectShowResp := s.mw.ObjectShow(c.Request.Context(), &pb.RpcObjectShowRequest{ - SpaceId: spaceId, - ObjectId: record.Fields["id"].GetStringValue(), - }) - - object := Object{ - // TODO fix type inconsistency - Type: model.ObjectTypeLayout_name[int32(record.Fields["layout"].GetNumberValue())], - Id: record.Fields["id"].GetStringValue(), - Name: record.Fields["name"].GetStringValue(), - Icon: icon, - ObjectType: objectTypeName, - SpaceId: spaceId, - RootId: objectShowResp.ObjectView.RootId, - Blocks: s.GetBlocks(objectShowResp), - Details: s.GetDetails(objectShowResp), - } - - objects = append(objects, object) - } - - pagination.RespondWithPagination(c, http.StatusOK, objects, len(resp.Records), offset, limit, hasMore) + pagination.RespondWithPagination(c, http.StatusOK, objects, total, offset, limit, hasMore) } } @@ -134,38 +63,19 @@ func GetObjectHandler(s *ObjectService) gin.HandlerFunc { spaceId := c.Param("space_id") objectId := c.Param("object_id") - resp := s.mw.ObjectShow(c.Request.Context(), &pb.RpcObjectShowRequest{ - SpaceId: spaceId, - ObjectId: objectId, - }) + object, err := s.GetObject(c.Request.Context(), spaceId, objectId) + code := util.MapErrorCode(err, + util.ErrToCode(ErrObjectNotFound, http.StatusNotFound), + util.ErrToCode(ErrFailedRetrieveObject, http.StatusInternalServerError), + ) - if resp.Error.Code != pb.RpcObjectShowResponseError_NULL { - if resp.Error.Code == pb.RpcObjectShowResponseError_NOT_FOUND { - c.JSON(http.StatusNotFound, gin.H{"message": "Object not found", "space_id": spaceId, "object_id": objectId}) - return - } - c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to retrieve object."}) + if code != http.StatusOK { + apiErr := util.CodeToAPIError(code, err.Error()) + c.JSON(code, apiErr) return } - objectTypeName, err := util.ResolveTypeToName(s.mw, spaceId, resp.ObjectView.Details[0].Details.Fields["type"].GetStringValue()) - if err != nil { - c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to resolve object type name."}) - return - } - - object := Object{ - Type: "object", - Id: objectId, - Name: resp.ObjectView.Details[0].Details.Fields["name"].GetStringValue(), - Icon: resp.ObjectView.Details[0].Details.Fields["iconEmoji"].GetStringValue(), - ObjectType: objectTypeName, - RootId: resp.ObjectView.RootId, - Blocks: s.GetBlocks(resp), - Details: s.GetDetails(resp), - } - - c.JSON(http.StatusOK, gin.H{"object": object}) + c.JSON(http.StatusOK, GetObjectResponse{Object: object}) } } @@ -177,7 +87,8 @@ func GetObjectHandler(s *ObjectService) gin.HandlerFunc { // @Produce json // @Param space_id path string true "The ID of the space" // @Param object body map[string]string true "Object details (e.g., name)" -// @Success 200 {object} Object "The created object" +// @Success 200 {object} CreateObjectResponse "The created object" +// @Failure 400 {object} util.ValidationError "Bad request" // @Failure 403 {object} util.UnauthorizedError "Unauthorized" // @Failure 502 {object} util.ServerError "Internal server error" // @Router /spaces/{space_id}/objects [post] @@ -187,42 +98,23 @@ func CreateObjectHandler(s *ObjectService) gin.HandlerFunc { request := CreateObjectRequest{} if err := c.BindJSON(&request); err != nil { - c.JSON(http.StatusBadRequest, gin.H{"message": "Invalid JSON"}) + c.JSON(http.StatusBadRequest, util.CodeToAPIError(http.StatusBadRequest, ErrBadInput.Error())) return } - resp := s.mw.ObjectCreate(c.Request.Context(), &pb.RpcObjectCreateRequest{ - Details: &types.Struct{ - Fields: map[string]*types.Value{ - "name": pbtypes.String(request.Name), - "iconEmoji": pbtypes.String(request.Icon), - }, - }, - TemplateId: request.TemplateId, - SpaceId: spaceId, - ObjectTypeUniqueKey: request.ObjectTypeUniqueKey, - WithChat: request.WithChat, - }) + object, err := s.CreateObject(c.Request.Context(), spaceId, request) + code := util.MapErrorCode(err, + util.ErrToCode(ErrFailedCreateObject, http.StatusInternalServerError), + util.ErrToCode(ErrFailedRetrieveObject, http.StatusInternalServerError), + ) - if resp.Error.Code != pb.RpcObjectCreateResponseError_NULL { - c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to create a new object."}) + if code != http.StatusOK { + apiErr := util.CodeToAPIError(code, err.Error()) + c.JSON(code, apiErr) return } - object := Object{ - Type: "object", - Id: resp.ObjectId, - Name: resp.Details.Fields["name"].GetStringValue(), - Icon: resp.Details.Fields["iconEmoji"].GetStringValue(), - ObjectType: request.ObjectTypeUniqueKey, - SpaceId: resp.Details.Fields["spaceId"].GetStringValue(), - // TODO populate other fields - // RootId: resp.RootId, - // Blocks: []Block{}, - // Details: []Detail{}, - } - - c.JSON(http.StatusOK, gin.H{"object": object}) + c.JSON(http.StatusOK, CreateObjectResponse{Object: object}) } } @@ -235,7 +127,8 @@ func CreateObjectHandler(s *ObjectService) gin.HandlerFunc { // @Param space_id path string true "The ID of the space" // @Param object_id path string true "The ID of the object" // @Param object body Object true "The updated object details" -// @Success 200 {object} Object "The updated object" +// @Success 200 {object} UpdateObjectResponse "The updated object" +// @Failure 400 {object} util.ValidationError "Bad request" // @Failure 403 {object} util.UnauthorizedError "Unauthorized" // @Failure 404 {object} util.NotFoundError "Resource not found" // @Failure 502 {object} util.ServerError "Internal server error" @@ -244,12 +137,31 @@ func UpdateObjectHandler(s *ObjectService) gin.HandlerFunc { return func(c *gin.Context) { spaceId := c.Param("space_id") objectId := c.Param("object_id") - // TODO: Implement logic to update an existing object - c.JSON(http.StatusNotImplemented, gin.H{"message": "Not implemented yet", "space_id": spaceId, "object_id": objectId}) + + request := UpdateObjectRequest{} + if err := c.BindJSON(&request); err != nil { + c.JSON(http.StatusBadRequest, util.CodeToAPIError(http.StatusBadRequest, ErrBadInput.Error())) + return + } + + object, err := s.UpdateObject(c.Request.Context(), spaceId, objectId, request) + code := util.MapErrorCode(err, + util.ErrToCode(ErrNotImplemented, http.StatusNotImplemented), + util.ErrToCode(ErrFailedUpdateObject, http.StatusInternalServerError), + util.ErrToCode(ErrFailedRetrieveObject, http.StatusInternalServerError), + ) + + if code != http.StatusOK { + apiErr := util.CodeToAPIError(code, err.Error()) + c.JSON(code, apiErr) + return + } + + c.JSON(http.StatusNotImplemented, UpdateObjectResponse{Object: object}) } } -// GetObjectTypesHandler retrieves object types in a specific space +// GetTypesHandler retrieves object types in a specific space // // @Summary Retrieve object types in a specific space // @Tags types_and_templates @@ -263,63 +175,29 @@ func UpdateObjectHandler(s *ObjectService) gin.HandlerFunc { // @Failure 404 {object} util.NotFoundError "Resource not found" // @Failure 502 {object} util.ServerError "Internal server error" // @Router /spaces/{space_id}/objectTypes [get] -func GetObjectTypesHandler(s *ObjectService) gin.HandlerFunc { +func GetTypesHandler(s *ObjectService) gin.HandlerFunc { return func(c *gin.Context) { spaceId := c.Param("space_id") offset := c.GetInt("offset") limit := c.GetInt("limit") - resp := s.mw.ObjectSearch(c.Request.Context(), &pb.RpcObjectSearchRequest{ - SpaceId: spaceId, - Filters: []*model.BlockContentDataviewFilter{ - { - RelationKey: bundle.RelationKeyLayout.String(), - Condition: model.BlockContentDataviewFilter_Equal, - Value: pbtypes.Int64(int64(model.ObjectType_objectType)), - }, - { - RelationKey: bundle.RelationKeyIsHidden.String(), - Condition: model.BlockContentDataviewFilter_NotEqual, - Value: pbtypes.Bool(true), - }, - }, - Sorts: []*model.BlockContentDataviewSort{ - { - RelationKey: "name", - Type: model.BlockContentDataviewSort_Asc, - }, - }, - Keys: []string{"id", "uniqueKey", "name", "iconEmoji"}, - }) + types, total, hasMore, err := s.ListTypes(c.Request.Context(), spaceId, offset, limit) + code := util.MapErrorCode(err, + util.ErrToCode(ErrFailedRetrieveTypes, http.StatusInternalServerError), + util.ErrToCode(ErrNoTypesFound, http.StatusNotFound), + ) - if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { - c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to retrieve object types."}) + if code != http.StatusOK { + apiErr := util.CodeToAPIError(code, err.Error()) + c.JSON(code, apiErr) return } - if len(resp.Records) == 0 { - c.JSON(http.StatusNotFound, gin.H{"message": "No object types found."}) - return - } - - paginatedTypes, hasMore := pagination.Paginate(resp.Records, offset, limit) - objectTypes := make([]ObjectType, 0, len(paginatedTypes)) - - for _, record := range paginatedTypes { - objectTypes = append(objectTypes, ObjectType{ - Type: "object_type", - Id: record.Fields["id"].GetStringValue(), - UniqueKey: record.Fields["uniqueKey"].GetStringValue(), - Name: record.Fields["name"].GetStringValue(), - Icon: record.Fields["iconEmoji"].GetStringValue(), - }) - } - - pagination.RespondWithPagination(c, http.StatusOK, objectTypes, len(resp.Records), offset, limit, hasMore) + pagination.RespondWithPagination(c, http.StatusOK, types, total, offset, limit, hasMore) } } -// GetObjectTypeTemplatesHandler retrieves a list of templates for a specific object type in a space +// GetTemplatesHandler retrieves a list of templates for a specific object type in a space // // @Summary Retrieve a list of templates for a specific object type in a space // @Tags types_and_templates @@ -334,91 +212,28 @@ func GetObjectTypesHandler(s *ObjectService) gin.HandlerFunc { // @Failure 404 {object} util.NotFoundError "Resource not found" // @Failure 502 {object} util.ServerError "Internal server error" // @Router /spaces/{space_id}/objectTypes/{typeId}/templates [get] -func GetObjectTypeTemplatesHandler(s *ObjectService) gin.HandlerFunc { +func GetTemplatesHandler(s *ObjectService) gin.HandlerFunc { return func(c *gin.Context) { spaceId := c.Param("space_id") typeId := c.Param("typeId") offset := c.GetInt("offset") limit := c.GetInt("limit") - // First, determine the type ID of "ot-template" in the space - templateTypeIdResp := s.mw.ObjectSearch(c.Request.Context(), &pb.RpcObjectSearchRequest{ - SpaceId: spaceId, - Filters: []*model.BlockContentDataviewFilter{ - { - RelationKey: bundle.RelationKeyUniqueKey.String(), - Condition: model.BlockContentDataviewFilter_Equal, - Value: pbtypes.String("ot-template"), - }, - }, - Keys: []string{"id"}, - }) + templates, total, hasMore, err := s.ListTemplates(c.Request.Context(), spaceId, typeId, offset, limit) + code := util.MapErrorCode(err, + util.ErrToCode(ErrFailedRetrieveTemplateType, http.StatusInternalServerError), + util.ErrToCode(ErrTemplateTypeNotFound, http.StatusNotFound), + util.ErrToCode(ErrFailedRetrieveTemplates, http.StatusInternalServerError), + util.ErrToCode(ErrFailedRetrieveTemplate, http.StatusInternalServerError), + util.ErrToCode(ErrNoTemplatesFound, http.StatusNotFound), + ) - if templateTypeIdResp.Error.Code != pb.RpcObjectSearchResponseError_NULL { - c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to retrieve template type."}) + if code != http.StatusOK { + apiErr := util.CodeToAPIError(code, err.Error()) + c.JSON(code, apiErr) return } - if len(templateTypeIdResp.Records) == 0 { - c.JSON(http.StatusNotFound, gin.H{"message": "Template type not found."}) - return - } - - templateTypeId := templateTypeIdResp.Records[0].Fields["id"].GetStringValue() - - // Then, search all objects of the template type and filter by the target object type - templateObjectsResp := s.mw.ObjectSearch(c.Request.Context(), &pb.RpcObjectSearchRequest{ - SpaceId: spaceId, - Filters: []*model.BlockContentDataviewFilter{ - { - RelationKey: bundle.RelationKeyType.String(), - Condition: model.BlockContentDataviewFilter_Equal, - Value: pbtypes.String(templateTypeId), - }, - }, - Keys: []string{"id", "targetObjectType", "name", "iconEmoji"}, - }) - - if templateObjectsResp.Error.Code != pb.RpcObjectSearchResponseError_NULL { - c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to retrieve template objects."}) - return - } - - if len(templateObjectsResp.Records) == 0 { - c.JSON(http.StatusNotFound, gin.H{"message": "No templates found."}) - return - } - - templateIds := make([]string, 0) - for _, record := range templateObjectsResp.Records { - if record.Fields["targetObjectType"].GetStringValue() == typeId { - templateIds = append(templateIds, record.Fields["id"].GetStringValue()) - } - } - - // Finally, open each template and populate the response - paginatedTemplates, hasMore := pagination.Paginate(templateIds, offset, limit) - templates := make([]ObjectTemplate, 0, len(paginatedTemplates)) - - for _, templateId := range paginatedTemplates { - templateResp := s.mw.ObjectShow(c.Request.Context(), &pb.RpcObjectShowRequest{ - SpaceId: spaceId, - ObjectId: templateId, - }) - - if templateResp.Error.Code != pb.RpcObjectShowResponseError_NULL { - c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to retrieve template."}) - return - } - - templates = append(templates, ObjectTemplate{ - Type: "object_template", - Id: templateId, - Name: templateResp.ObjectView.Details[0].Details.Fields["name"].GetStringValue(), - Icon: templateResp.ObjectView.Details[0].Details.Fields["iconEmoji"].GetStringValue(), - }) - } - - pagination.RespondWithPagination(c, http.StatusOK, templates, len(templateIds), offset, limit, hasMore) + pagination.RespondWithPagination(c, http.StatusOK, templates, total, offset, limit, hasMore) } } diff --git a/cmd/api/object/model.go b/cmd/api/object/model.go index a77d6b94f..96f714a73 100644 --- a/cmd/api/object/model.go +++ b/cmd/api/object/model.go @@ -1,5 +1,29 @@ package object +type GetObjectResponse struct { + Object Object `json:"object"` +} + +type CreateObjectRequest struct { + Name string `json:"name"` + Icon string `json:"icon"` + TemplateId string `json:"template_id"` + ObjectTypeUniqueKey string `json:"object_type_unique_key"` + WithChat bool `json:"with_chat"` +} + +type CreateObjectResponse struct { + Object Object `json:"object"` +} + +type UpdateObjectRequest struct { + Object Object `json:"object"` +} + +type UpdateObjectResponse struct { + Object Object `json:"object"` +} + type Object struct { Type string `json:"type" example:"object"` Id string `json:"id" example:"bafyreie6n5l5nkbjal37su54cha4coy7qzuhrnajluzv5qd5jvtsrxkequ"` diff --git a/cmd/api/object/service.go b/cmd/api/object/service.go index 34be383f1..d2362b370 100644 --- a/cmd/api/object/service.go +++ b/cmd/api/object/service.go @@ -1,27 +1,45 @@ package object import ( + "context" "errors" + "github.com/gogo/protobuf/types" + + "github.com/anyproto/anytype-heart/cmd/api/pagination" "github.com/anyproto/anytype-heart/cmd/api/util" "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/pb/service" + "github.com/anyproto/anytype-heart/pkg/lib/bundle" "github.com/anyproto/anytype-heart/pkg/lib/pb/model" + "github.com/anyproto/anytype-heart/util/pbtypes" ) var ( - ErrFailedGenerateChallenge = errors.New("failed to generate a new challenge") - ErrInvalidInput = errors.New("invalid input") - ErrorFailedAuthenticate = errors.New("failed to authenticate user") + ErrObjectNotFound = errors.New("object not found") + ErrFailedRetrieveObject = errors.New("failed to retrieve object") + ErrorFailedRetrieveObjects = errors.New("failed to retrieve list of objects") + ErrNoObjectsFound = errors.New("no objects found") + ErrFailedCreateObject = errors.New("failed to create object") + ErrBadInput = errors.New("bad input") + ErrNotImplemented = errors.New("not implemented") + ErrFailedUpdateObject = errors.New("failed to update object") + ErrFailedRetrieveTypes = errors.New("failed to retrieve types") + ErrNoTypesFound = errors.New("no types found") + ErrFailedRetrieveTemplateType = errors.New("failed to retrieve template type") + ErrTemplateTypeNotFound = errors.New("template type not found") + ErrFailedRetrieveTemplate = errors.New("failed to retrieve template") + ErrFailedRetrieveTemplates = errors.New("failed to retrieve templates") + ErrNoTemplatesFound = errors.New("no templates found") ) type Service interface { - ListObjects() ([]Object, error) - GetObject(id string) (Object, error) - CreateObject(obj Object) (Object, error) - UpdateObject(obj Object) (Object, error) - ListTypes() ([]ObjectType, error) - ListTemplates() ([]ObjectTemplate, error) + ListObjects(ctx context.Context, spaceId string, offset int, limit int) ([]Object, int, bool, error) + GetObject(ctx context.Context, spaceId string, objectId string) (Object, error) + CreateObject(ctx context.Context, spaceId string, obj Object) (Object, error) + UpdateObject(ctx context.Context, spaceId string, obj Object) (Object, error) + ListTypes(ctx context.Context, spaceId string, offset int, limit int) ([]ObjectType, int, bool, error) + ListTemplates(ctx context.Context, spaceId string, typeId string, offset int, limit int) ([]ObjectTemplate, int, bool, error) } type ObjectService struct { @@ -29,41 +47,290 @@ type ObjectService struct { AccountInfo *model.AccountInfo } +// NewService creates a new object service func NewService(mw service.ClientCommandsServer) *ObjectService { return &ObjectService{mw: mw} } -func (s *ObjectService) ListObjects() ([]Object, error) { - // TODO - return nil, nil +// ListObjects retrieves a list of objects in a specific space +func (s *ObjectService) ListObjects(ctx context.Context, spaceId string, offset int, limit int) (objects []Object, total int, hasMore bool, err error) { + resp := s.mw.ObjectSearch(ctx, &pb.RpcObjectSearchRequest{ + SpaceId: spaceId, + Filters: []*model.BlockContentDataviewFilter{ + { + RelationKey: bundle.RelationKeyLayout.String(), + Condition: model.BlockContentDataviewFilter_In, + Value: pbtypes.IntList([]int{ + int(model.ObjectType_basic), + int(model.ObjectType_profile), + int(model.ObjectType_todo), + int(model.ObjectType_note), + int(model.ObjectType_bookmark), + int(model.ObjectType_set), + int(model.ObjectType_collection), + int(model.ObjectType_participant), + }...), + }, + }, + Sorts: []*model.BlockContentDataviewSort{{ + RelationKey: bundle.RelationKeyLastModifiedDate.String(), + Type: model.BlockContentDataviewSort_Desc, + Format: model.RelationFormat_longtext, + IncludeTime: true, + EmptyPlacement: model.BlockContentDataviewSort_NotSpecified, + }}, + FullText: "", + Offset: 0, + Limit: 0, + ObjectTypeFilter: []string{}, + Keys: []string{"id", "name", "type", "layout", "iconEmoji", "iconImage"}, + }) + + if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { + return nil, 0, false, ErrorFailedRetrieveObjects + } + + if len(resp.Records) == 0 { + return nil, 0, false, ErrNoObjectsFound + } + + total = len(resp.Records) + paginatedObjects, hasMore := pagination.Paginate(resp.Records, offset, limit) + objects = make([]Object, 0, len(paginatedObjects)) + + for _, record := range paginatedObjects { + object, err := s.GetObject(ctx, spaceId, record.Fields["id"].GetStringValue()) + if err != nil { + return nil, 0, false, err + } + + // TODO: layout is not correctly returned in ObjectShow; therefore we need to resolve it here + object.Type = model.ObjectTypeLayout_name[int32(record.Fields["layout"].GetNumberValue())] + + objects = append(objects, object) + } + return objects, total, hasMore, nil } -func (s *ObjectService) GetObject(id string) (Object, error) { - // TODO - return Object{}, nil +// GetObject retrieves a single object by its ID in a specific space +func (s *ObjectService) GetObject(ctx context.Context, spaceId string, objectId string) (Object, error) { + resp := s.mw.ObjectShow(ctx, &pb.RpcObjectShowRequest{ + SpaceId: spaceId, + ObjectId: objectId, + }) + + if resp.Error.Code == pb.RpcObjectShowResponseError_NOT_FOUND { + return Object{}, ErrObjectNotFound + } + + if resp.Error.Code != pb.RpcObjectShowResponseError_NULL { + return Object{}, ErrFailedRetrieveObject + } + + icon := util.GetIconFromEmojiOrImage(s.AccountInfo, resp.ObjectView.Details[0].Details.Fields["iconEmoji"].GetStringValue(), resp.ObjectView.Details[0].Details.Fields["iconImage"].GetStringValue()) + objectTypeName, err := util.ResolveTypeToName(s.mw, spaceId, resp.ObjectView.Details[0].Details.Fields["type"].GetStringValue()) + if err != nil { + return Object{}, err + } + + object := Object{ + Type: "object", + Id: resp.ObjectView.Details[0].Details.Fields["id"].GetStringValue(), + Name: resp.ObjectView.Details[0].Details.Fields["name"].GetStringValue(), + Icon: icon, + ObjectType: objectTypeName, + SpaceId: resp.ObjectView.Details[0].Details.Fields["spaceId"].GetStringValue(), + RootId: resp.ObjectView.RootId, + Blocks: s.GetBlocks(resp), + Details: s.GetDetails(resp), + } + + return object, nil } -func (s *ObjectService) CreateObject(obj Object) (Object, error) { - // TODO - return Object{}, nil +// CreateObject creates a new object in a specific space +func (s *ObjectService) CreateObject(ctx context.Context, spaceId string, request CreateObjectRequest) (Object, error) { + resp := s.mw.ObjectCreate(ctx, &pb.RpcObjectCreateRequest{ + Details: &types.Struct{ + Fields: map[string]*types.Value{ + "name": pbtypes.String(request.Name), + "iconEmoji": pbtypes.String(request.Icon), + }, + }, + TemplateId: request.TemplateId, + SpaceId: spaceId, + ObjectTypeUniqueKey: request.ObjectTypeUniqueKey, + WithChat: request.WithChat, + }) + + if resp.Error.Code != pb.RpcObjectCreateResponseError_NULL { + return Object{}, ErrFailedCreateObject + } + + objShowResp := s.mw.ObjectShow(ctx, &pb.RpcObjectShowRequest{ + SpaceId: spaceId, + ObjectId: resp.ObjectId, + }) + + if objShowResp.Error.Code != pb.RpcObjectShowResponseError_NULL { + return Object{}, ErrFailedRetrieveObject + } + + icon2 := util.GetIconFromEmojiOrImage(s.AccountInfo, objShowResp.ObjectView.Details[0].Details.Fields["iconEmoji"].GetStringValue(), objShowResp.ObjectView.Details[0].Details.Fields["iconImage"].GetStringValue()) + objectTypeName, err := util.ResolveTypeToName(s.mw, spaceId, objShowResp.ObjectView.Details[0].Details.Fields["type"].GetStringValue()) + if err != nil { + return Object{}, err + } + + object := Object{ + Type: "object", + Id: resp.ObjectId, + Name: objShowResp.ObjectView.Details[0].Details.Fields["name"].GetStringValue(), + Icon: icon2, + ObjectType: objectTypeName, + SpaceId: objShowResp.ObjectView.Details[0].Details.Fields["spaceId"].GetStringValue(), + RootId: objShowResp.ObjectView.RootId, + Blocks: s.GetBlocks(objShowResp), + Details: s.GetDetails(objShowResp), + } + + return object, nil } -func (s *ObjectService) UpdateObject(obj Object) (Object, error) { - // TODO - return Object{}, nil +// UpdateObject updates an existing object in a specific space +func (s *ObjectService) UpdateObject(ctx context.Context, spaceId string, objectId string, request UpdateObjectRequest) (Object, error) { + // TODO: Implement logic to update an existing object + return Object{}, ErrNotImplemented } -func (s *ObjectService) ListTypes() ([]ObjectType, error) { - // TODO - return nil, nil +// ListTypes returns the list of types in a specific space +func (s *ObjectService) ListTypes(ctx context.Context, spaceId string, offset int, limit int) (types []ObjectType, total int, hasMore bool, err error) { + resp := s.mw.ObjectSearch(ctx, &pb.RpcObjectSearchRequest{ + SpaceId: spaceId, + Filters: []*model.BlockContentDataviewFilter{ + { + RelationKey: bundle.RelationKeyLayout.String(), + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.Int64(int64(model.ObjectType_objectType)), + }, + { + RelationKey: bundle.RelationKeyIsHidden.String(), + Condition: model.BlockContentDataviewFilter_NotEqual, + Value: pbtypes.Bool(true), + }, + }, + Sorts: []*model.BlockContentDataviewSort{ + { + RelationKey: "name", + Type: model.BlockContentDataviewSort_Asc, + }, + }, + Keys: []string{"id", "uniqueKey", "name", "iconEmoji"}, + }) + + if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { + return nil, 0, false, ErrFailedRetrieveTypes + } + + if len(resp.Records) == 0 { + return nil, 0, false, ErrNoTypesFound + } + + total = len(resp.Records) + paginatedTypes, hasMore := pagination.Paginate(resp.Records, offset, limit) + objectTypes := make([]ObjectType, 0, len(paginatedTypes)) + + for _, record := range paginatedTypes { + objectTypes = append(objectTypes, ObjectType{ + Type: "object_type", + Id: record.Fields["id"].GetStringValue(), + UniqueKey: record.Fields["uniqueKey"].GetStringValue(), + Name: record.Fields["name"].GetStringValue(), + Icon: record.Fields["iconEmoji"].GetStringValue(), + }) + } + return objectTypes, total, hasMore, nil } -func (s *ObjectService) ListTemplates() ([]ObjectTemplate, error) { - // TODO - return nil, nil +// ListTemplates returns the list of templates in a specific space +func (s *ObjectService) ListTemplates(ctx context.Context, spaceId string, typeId string, offset int, limit int) (templates []ObjectTemplate, total int, hasMore bool, err error) { + // First, determine the type ID of "ot-template" in the space + templateTypeIdResp := s.mw.ObjectSearch(ctx, &pb.RpcObjectSearchRequest{ + SpaceId: spaceId, + Filters: []*model.BlockContentDataviewFilter{ + { + RelationKey: bundle.RelationKeyUniqueKey.String(), + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.String("ot-template"), + }, + }, + Keys: []string{"id"}, + }) + + if templateTypeIdResp.Error.Code != pb.RpcObjectSearchResponseError_NULL { + return nil, 0, false, ErrFailedRetrieveTemplateType + } + + if len(templateTypeIdResp.Records) == 0 { + return nil, 0, false, ErrTemplateTypeNotFound + } + + // Then, search all objects of the template type and filter by the target object type + templateTypeId := templateTypeIdResp.Records[0].Fields["id"].GetStringValue() + templateObjectsResp := s.mw.ObjectSearch(ctx, &pb.RpcObjectSearchRequest{ + SpaceId: spaceId, + Filters: []*model.BlockContentDataviewFilter{ + { + RelationKey: bundle.RelationKeyType.String(), + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.String(templateTypeId), + }, + }, + Keys: []string{"id", "targetObjectType", "name", "iconEmoji"}, + }) + + if templateObjectsResp.Error.Code != pb.RpcObjectSearchResponseError_NULL { + return nil, 0, false, ErrFailedRetrieveTemplates + } + + if len(templateObjectsResp.Records) == 0 { + return nil, 0, false, ErrNoTemplatesFound + } + + templateIds := make([]string, 0) + for _, record := range templateObjectsResp.Records { + if record.Fields["targetObjectType"].GetStringValue() == typeId { + templateIds = append(templateIds, record.Fields["id"].GetStringValue()) + } + } + + total = len(templateIds) + paginatedTemplates, hasMore := pagination.Paginate(templateIds, offset, limit) + templates = make([]ObjectTemplate, 0, len(paginatedTemplates)) + + // Finally, open each template and populate the response + for _, templateId := range paginatedTemplates { + templateResp := s.mw.ObjectShow(ctx, &pb.RpcObjectShowRequest{ + SpaceId: spaceId, + ObjectId: templateId, + }) + + if templateResp.Error.Code != pb.RpcObjectShowResponseError_NULL { + return nil, 0, false, ErrFailedRetrieveTemplate + } + + templates = append(templates, ObjectTemplate{ + Type: "object_template", + Id: templateId, + Name: templateResp.ObjectView.Details[0].Details.Fields["name"].GetStringValue(), + Icon: templateResp.ObjectView.Details[0].Details.Fields["iconEmoji"].GetStringValue(), + }) + } + + return templates, total, hasMore, nil } -// GetDetails returns the details of the object +// GetDetails returns the list of details from the ObjectShowResponse func (s *ObjectService) GetDetails(resp *pb.RpcObjectShowResponse) []Detail { return []Detail{ { @@ -87,7 +354,7 @@ func (s *ObjectService) GetDetails(resp *pb.RpcObjectShowResponse) []Detail { } } -// getTags returns the list of tags from the object details +// getTags returns the list of tags from the ObjectShowResponse func (s *ObjectService) getTags(resp *pb.RpcObjectShowResponse) []Tag { tags := []Tag{} @@ -112,7 +379,7 @@ func (s *ObjectService) getTags(resp *pb.RpcObjectShowResponse) []Tag { return tags } -// GetBlocks returns the blocks of the object +// GetBlocks returns the list of blocks from the ObjectShowResponse func (s *ObjectService) GetBlocks(resp *pb.RpcObjectShowResponse) []Block { blocks := []Block{} @@ -158,6 +425,7 @@ func (s *ObjectService) GetBlocks(resp *pb.RpcObjectShowResponse) []Block { return blocks } +// mapAlign maps the protobuf BlockAlign to a string func mapAlign(align model.BlockAlign) string { switch align { case model.Block_AlignLeft: @@ -173,6 +441,7 @@ func mapAlign(align model.BlockAlign) string { } } +// mapVerticalAlign maps the protobuf BlockVerticalAlign to a string func mapVerticalAlign(align model.BlockVerticalAlign) string { switch align { case model.Block_VerticalAlignTop: diff --git a/cmd/api/object/service_test.go b/cmd/api/object/service_test.go new file mode 100644 index 000000000..96cd526dc --- /dev/null +++ b/cmd/api/object/service_test.go @@ -0,0 +1,568 @@ +package object + +import ( + "context" + "testing" + + "github.com/gogo/protobuf/types" + "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" + + "github.com/anyproto/anytype-heart/pb" + "github.com/anyproto/anytype-heart/pb/service/mock_service" + "github.com/anyproto/anytype-heart/pkg/lib/bundle" + "github.com/anyproto/anytype-heart/pkg/lib/pb/model" + "github.com/anyproto/anytype-heart/util/pbtypes" +) + +const ( + offset = 0 + limit = 100 + mockedSpaceId = "mocked-space-id" + mockedObjectId = "mocked-object-id" + mockedNewObjectId = "mocked-new-object-id" + mockedTechSpaceId = "mocked-tech-space-id" + gatewayUrl = "http://localhost:31006" +) + +type fixture struct { + *ObjectService + mwMock *mock_service.MockClientCommandsServer +} + +func newFixture(t *testing.T) *fixture { + mw := mock_service.NewMockClientCommandsServer(t) + objectService := NewService(mw) + objectService.AccountInfo = &model.AccountInfo{ + TechSpaceId: mockedTechSpaceId, + GatewayUrl: gatewayUrl, + } + + return &fixture{ + ObjectService: objectService, + mwMock: mw, + } +} + +func TestObjectService_ListObjects(t *testing.T) { + t.Run("successfully get objects for a space", func(t *testing.T) { + // given + ctx := context.Background() + fx := newFixture(t) + + fx.mwMock.On("ObjectSearch", mock.Anything, &pb.RpcObjectSearchRequest{ + SpaceId: mockedSpaceId, + Filters: []*model.BlockContentDataviewFilter{ + { + RelationKey: bundle.RelationKeyLayout.String(), + Condition: model.BlockContentDataviewFilter_In, + Value: pbtypes.IntList([]int{ + int(model.ObjectType_basic), + int(model.ObjectType_profile), + int(model.ObjectType_todo), + int(model.ObjectType_note), + int(model.ObjectType_bookmark), + int(model.ObjectType_set), + int(model.ObjectType_collection), + int(model.ObjectType_participant), + }...), + }, + }, + Sorts: []*model.BlockContentDataviewSort{{ + RelationKey: bundle.RelationKeyLastModifiedDate.String(), + Type: model.BlockContentDataviewSort_Desc, + Format: model.RelationFormat_longtext, + IncludeTime: true, + EmptyPlacement: model.BlockContentDataviewSort_NotSpecified, + }}, + FullText: "", + Offset: 0, + Limit: 0, + ObjectTypeFilter: []string{}, + Keys: []string{"id", "name", "type", "layout", "iconEmoji", "iconImage"}, + }).Return(&pb.RpcObjectSearchResponse{ + Records: []*types.Struct{ + { + Fields: map[string]*types.Value{ + "id": pbtypes.String(mockedObjectId), + "name": pbtypes.String("My Object"), + "type": pbtypes.String("ot-page"), + "layout": pbtypes.Float64(float64(model.ObjectType_basic)), + "iconEmoji": pbtypes.String("📄"), + }, + }, + }, + Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, + }).Once() + + // Mock object show for object details + fx.mwMock.On("ObjectShow", mock.Anything, &pb.RpcObjectShowRequest{ + SpaceId: mockedSpaceId, + ObjectId: mockedObjectId, + }).Return(&pb.RpcObjectShowResponse{ + ObjectView: &model.ObjectView{ + RootId: mockedObjectId, + Details: []*model.ObjectViewDetailsSet{ + { + Details: &types.Struct{ + Fields: map[string]*types.Value{ + "id": pbtypes.String(mockedObjectId), + "name": pbtypes.String("My Object"), + "type": pbtypes.String("ot-page"), + "iconEmoji": pbtypes.String("📄"), + "lastModifiedDate": pbtypes.Float64(999999), + "createdDate": pbtypes.Float64(888888), + }, + }, + }, + }, + }, + Error: &pb.RpcObjectShowResponseError{Code: pb.RpcObjectShowResponseError_NULL}, + }).Once() + + // Mock type resolution + fx.mwMock.On("ObjectSearch", mock.Anything, &pb.RpcObjectSearchRequest{ + SpaceId: mockedSpaceId, + Filters: []*model.BlockContentDataviewFilter{ + { + RelationKey: "uniqueKey", + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.String("ot-page"), + }, + }, + Keys: []string{"name"}, + }).Return(&pb.RpcObjectSearchResponse{ + Records: []*types.Struct{ + { + Fields: map[string]*types.Value{ + "name": pbtypes.String("Page"), + }, + }, + }, + Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, + }).Once() + + // when + objects, total, hasMore, err := fx.ListObjects(ctx, mockedSpaceId, offset, limit) + + // then + require.NoError(t, err) + require.Len(t, objects, 1) + require.Equal(t, mockedObjectId, objects[0].Id) + require.Equal(t, "My Object", objects[0].Name) + require.Equal(t, "Page", objects[0].ObjectType) + require.Equal(t, "📄", objects[0].Icon) + require.Equal(t, 3, len(objects[0].Details)) + + for _, detail := range objects[0].Details { + if detail.Id == "createdDate" { + require.Equal(t, float64(888888), detail.Details["createdDate"]) + } else if detail.Id == "lastModifiedDate" { + require.Equal(t, float64(999999), detail.Details["lastModifiedDate"]) + } else if detail.Id == "tags" { + require.Empty(t, detail.Details["tags"]) + } else { + t.Errorf("unexpected detail id: %s", detail.Id) + } + } + + require.Equal(t, 1, total) + require.False(t, hasMore) + }) + + t.Run("no objects found", func(t *testing.T) { + // given + ctx := context.Background() + fx := newFixture(t) + + fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything). + Return(&pb.RpcObjectSearchResponse{ + Records: []*types.Struct{}, + Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, + }).Once() + + // when + objects, total, hasMore, err := fx.ListObjects(ctx, "empty-space", offset, limit) + + // then + require.ErrorIs(t, err, ErrNoObjectsFound) + require.Len(t, objects, 0) + require.Equal(t, 0, total) + require.False(t, hasMore) + }) +} + +func TestObjectService_GetObject(t *testing.T) { + t.Run("object found", func(t *testing.T) { + // given + ctx := context.Background() + fx := newFixture(t) + + fx.mwMock.On("ObjectShow", mock.Anything, &pb.RpcObjectShowRequest{ + SpaceId: mockedSpaceId, + ObjectId: mockedObjectId, + }). + Return(&pb.RpcObjectShowResponse{ + Error: &pb.RpcObjectShowResponseError{Code: pb.RpcObjectShowResponseError_NULL}, + ObjectView: &model.ObjectView{ + RootId: mockedObjectId, + Details: []*model.ObjectViewDetailsSet{ + { + Details: &types.Struct{ + Fields: map[string]*types.Value{ + "id": pbtypes.String(mockedObjectId), + "name": pbtypes.String("Found Object"), + "type": pbtypes.String("ot-page"), + "iconEmoji": pbtypes.String("ðŸ”"), + "lastModifiedDate": pbtypes.Float64(999999), + "createdDate": pbtypes.Float64(888888), + }, + }, + }, + }, + }, + }, nil).Once() + + // Mock type resolution + fx.mwMock.On("ObjectSearch", mock.Anything, &pb.RpcObjectSearchRequest{ + SpaceId: mockedSpaceId, + Filters: []*model.BlockContentDataviewFilter{ + { + RelationKey: "uniqueKey", + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.String("ot-page"), + }, + }, + Keys: []string{"name"}, + }).Return(&pb.RpcObjectSearchResponse{ + Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, + Records: []*types.Struct{ + { + Fields: map[string]*types.Value{ + "name": pbtypes.String("Page"), + }, + }, + }, + }, nil).Once() + + // when + object, err := fx.GetObject(ctx, mockedSpaceId, mockedObjectId) + + // then + require.NoError(t, err) + require.Equal(t, mockedObjectId, object.Id) + require.Equal(t, "Found Object", object.Name) + require.Equal(t, "Page", object.ObjectType) + require.Equal(t, "ðŸ”", object.Icon) + require.Equal(t, 3, len(object.Details)) + + for _, detail := range object.Details { + if detail.Id == "createdDate" { + require.Equal(t, float64(888888), detail.Details["createdDate"]) + } else if detail.Id == "lastModifiedDate" { + require.Equal(t, float64(999999), detail.Details["lastModifiedDate"]) + } else if detail.Id == "tags" { + require.Empty(t, detail.Details["tags"]) + } else { + t.Errorf("unexpected detail id: %s", detail.Id) + } + } + }) + + t.Run("object not found", func(t *testing.T) { + // given + ctx := context.Background() + fx := newFixture(t) + + fx.mwMock.On("ObjectShow", mock.Anything, mock.Anything). + Return(&pb.RpcObjectShowResponse{ + Error: &pb.RpcObjectShowResponseError{Code: pb.RpcObjectShowResponseError_NOT_FOUND}, + }, nil).Once() + + // when + object, err := fx.GetObject(ctx, mockedSpaceId, "missing-obj") + + // then + require.ErrorIs(t, err, ErrObjectNotFound) + require.Empty(t, object) + }) +} + +func TestObjectService_CreateObject(t *testing.T) { + t.Run("successful object creation", func(t *testing.T) { + // given + ctx := context.Background() + fx := newFixture(t) + + fx.mwMock.On("ObjectCreate", mock.Anything, &pb.RpcObjectCreateRequest{ + Details: &types.Struct{ + Fields: map[string]*types.Value{ + "name": pbtypes.String("New Object"), + "iconEmoji": pbtypes.String("🆕"), + }, + }, + TemplateId: "", + SpaceId: mockedSpaceId, + ObjectTypeUniqueKey: "", + WithChat: false, + }).Return(&pb.RpcObjectCreateResponse{ + ObjectId: mockedNewObjectId, + Details: &types.Struct{ + Fields: map[string]*types.Value{ + "id": pbtypes.String(mockedNewObjectId), + "name": pbtypes.String("New Object"), + "iconEmoji": pbtypes.String("🆕"), + "spaceId": pbtypes.String(mockedSpaceId), + }, + }, + Error: &pb.RpcObjectCreateResponseError{Code: pb.RpcObjectCreateResponseError_NULL}, + }).Once() + + // Mock object show for object details + fx.mwMock.On("ObjectShow", mock.Anything, &pb.RpcObjectShowRequest{ + SpaceId: mockedSpaceId, + ObjectId: mockedNewObjectId, + }).Return(&pb.RpcObjectShowResponse{ + ObjectView: &model.ObjectView{ + RootId: mockedNewObjectId, + Details: []*model.ObjectViewDetailsSet{ + { + Details: &types.Struct{ + Fields: map[string]*types.Value{ + "id": pbtypes.String(mockedNewObjectId), + "name": pbtypes.String("New Object"), + "type": pbtypes.String("ot-page"), + "iconEmoji": pbtypes.String("🆕"), + "spaceId": pbtypes.String(mockedSpaceId), + }, + }, + }, + }, + }, + Error: &pb.RpcObjectShowResponseError{Code: pb.RpcObjectShowResponseError_NULL}, + }).Once() + + // Mock type resolution + fx.mwMock.On("ObjectSearch", mock.Anything, &pb.RpcObjectSearchRequest{ + SpaceId: mockedSpaceId, + Filters: []*model.BlockContentDataviewFilter{ + { + RelationKey: "uniqueKey", + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.String("ot-page"), + }, + }, + Keys: []string{"name"}, + }).Return(&pb.RpcObjectSearchResponse{ + Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, + Records: []*types.Struct{ + { + Fields: map[string]*types.Value{ + "name": pbtypes.String("Page"), + }, + }, + }, + }).Once() + + // when + object, err := fx.CreateObject(ctx, mockedSpaceId, CreateObjectRequest{ + Name: "New Object", + Icon: "🆕", + // TODO: use actual values + TemplateId: "", + ObjectTypeUniqueKey: "", + WithChat: false, + }) + + // then + require.NoError(t, err) + require.Equal(t, mockedNewObjectId, object.Id) + require.Equal(t, "New Object", object.Name) + require.Equal(t, "Page", object.ObjectType) + require.Equal(t, "🆕", object.Icon) + require.Equal(t, mockedSpaceId, object.SpaceId) + }) + + t.Run("creation error", func(t *testing.T) { + // given + ctx := context.Background() + fx := newFixture(t) + + fx.mwMock.On("ObjectCreate", mock.Anything, mock.Anything). + Return(&pb.RpcObjectCreateResponse{ + Error: &pb.RpcObjectCreateResponseError{Code: pb.RpcObjectCreateResponseError_UNKNOWN_ERROR}, + }).Once() + + // when + object, err := fx.CreateObject(ctx, mockedSpaceId, CreateObjectRequest{ + Name: "Fail Object", + Icon: "", + }) + + // then + require.ErrorIs(t, err, ErrFailedCreateObject) + require.Empty(t, object) + }) +} + +func TestObjectService_UpdateObject(t *testing.T) { + t.Run("not implemented", func(t *testing.T) { + // given + ctx := context.Background() + fx := newFixture(t) + + // when + object, err := fx.UpdateObject(ctx, mockedSpaceId, mockedObjectId, UpdateObjectRequest{ + Object: Object{ + Name: "Updated Object", + }, + }) + + // then + require.ErrorIs(t, err, ErrNotImplemented) + require.Empty(t, object) + }) + + // TODO: further tests +} + +func TestObjectService_ListTypes(t *testing.T) { + t.Run("types found", func(t *testing.T) { + // given + ctx := context.Background() + fx := newFixture(t) + + fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything). + Return(&pb.RpcObjectSearchResponse{ + Records: []*types.Struct{ + { + Fields: map[string]*types.Value{ + "id": pbtypes.String("type-1"), + "name": pbtypes.String("Type One"), + "uniqueKey": pbtypes.String("type-one-key"), + "iconEmoji": pbtypes.String("🗂ï¸"), + }, + }, + }, + Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, + }).Once() + + // when + types, total, hasMore, err := fx.ListTypes(ctx, mockedSpaceId, offset, limit) + + // then + require.NoError(t, err) + require.Len(t, types, 1) + require.Equal(t, "type-1", types[0].Id) + require.Equal(t, "Type One", types[0].Name) + require.Equal(t, "type-one-key", types[0].UniqueKey) + require.Equal(t, "🗂ï¸", types[0].Icon) + require.Equal(t, 1, total) + require.False(t, hasMore) + }) + + t.Run("no types found", func(t *testing.T) { + // given + ctx := context.Background() + fx := newFixture(t) + + fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything). + Return(&pb.RpcObjectSearchResponse{ + Records: []*types.Struct{}, + Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, + }).Once() + + // when + types, total, hasMore, err := fx.ListTypes(ctx, "empty-space", offset, limit) + + // then + require.ErrorIs(t, err, ErrNoTypesFound) + require.Len(t, types, 0) + require.Equal(t, 0, total) + require.False(t, hasMore) + }) +} + +func TestObjectService_ListTemplates(t *testing.T) { + t.Run("templates found", func(t *testing.T) { + // given + ctx := context.Background() + fx := newFixture(t) + + // Mock template type search + fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything).Return(&pb.RpcObjectSearchResponse{ + Records: []*types.Struct{ + { + Fields: map[string]*types.Value{ + "id": pbtypes.String("template-type-id"), + "uniqueKey": pbtypes.String("ot-template"), + }, + }, + }, + Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, + }).Once() + + // Mock actual template objects search + fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything).Return(&pb.RpcObjectSearchResponse{ + Records: []*types.Struct{ + { + Fields: map[string]*types.Value{ + "id": pbtypes.String("template-1"), + "targetObjectType": pbtypes.String("target-type-id"), + }, + }, + }, + Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, + }).Once() + + // Mock object show for template details + fx.mwMock.On("ObjectShow", mock.Anything, mock.Anything).Return(&pb.RpcObjectShowResponse{ + Error: &pb.RpcObjectShowResponseError{Code: pb.RpcObjectShowResponseError_NULL}, + ObjectView: &model.ObjectView{ + Details: []*model.ObjectViewDetailsSet{ + { + Details: &types.Struct{ + Fields: map[string]*types.Value{ + "name": pbtypes.String("Template Name"), + "iconEmoji": pbtypes.String("ðŸ“"), + }, + }, + }, + }, + }, + }, nil).Once() + + // when + templates, total, hasMore, err := fx.ListTemplates(ctx, mockedSpaceId, "target-type-id", offset, limit) + + // then + require.NoError(t, err) + require.Len(t, templates, 1) + require.Equal(t, "template-1", templates[0].Id) + require.Equal(t, "Template Name", templates[0].Name) + require.Equal(t, "ðŸ“", templates[0].Icon) + require.Equal(t, 1, total) + require.False(t, hasMore) + }) + + t.Run("no template type found", func(t *testing.T) { + // given + ctx := context.Background() + fx := newFixture(t) + + fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything). + Return(&pb.RpcObjectSearchResponse{ + Records: []*types.Struct{}, + Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, + }).Once() + + // when + templates, total, hasMore, err := fx.ListTemplates(ctx, mockedSpaceId, "missing-type-id", offset, limit) + + // then + require.ErrorIs(t, err, ErrTemplateTypeNotFound) + require.Len(t, templates, 0) + require.Equal(t, 0, total) + require.False(t, hasMore) + }) +} diff --git a/cmd/api/server/router.go b/cmd/api/server/router.go index 372d87053..37b905440 100644 --- a/cmd/api/server/router.go +++ b/cmd/api/server/router.go @@ -46,8 +46,8 @@ func (s *Server) NewRouter() *gin.Engine { readOnly.GET("/spaces/:space_id/members", paginator, space.GetMembersHandler(s.spaceService)) readOnly.GET("/spaces/:space_id/objects", paginator, object.GetObjectsHandler(s.objectService)) readOnly.GET("/spaces/:space_id/objects/:object_id", object.GetObjectHandler(s.objectService)) - readOnly.GET("/spaces/:space_id/objectTypes", paginator, object.GetObjectTypesHandler(s.objectService)) - readOnly.GET("/spaces/:space_id/objectTypes/:typeId/templates", paginator, object.GetObjectTypeTemplatesHandler(s.objectService)) + readOnly.GET("/spaces/:space_id/objectTypes", paginator, object.GetTypesHandler(s.objectService)) + readOnly.GET("/spaces/:space_id/objectTypes/:typeId/templates", paginator, object.GetTemplatesHandler(s.objectService)) readOnly.GET("/search", paginator, search.SearchHandler(s.searchService)) } diff --git a/cmd/api/util/util.go b/cmd/api/util/util.go index 2f63d8a1c..38c75fe34 100644 --- a/cmd/api/util/util.go +++ b/cmd/api/util/util.go @@ -58,6 +58,7 @@ func ResolveTypeToName(mw service.ClientCommandsServer, spaceId string, typeId s Value: pbtypes.String(typeId), }, }, + Keys: []string{"name"}, }) if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { From 2b7b996cbc6ceb89d92553850659a535dd1bde20 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Wed, 1 Jan 2025 15:22:16 +0100 Subject: [PATCH 093/279] GO-4459: Return 403 when not logged in, fix interfaces --- cmd/api/pagination/pagination.go | 9 +++++---- cmd/api/search/service_test.go | 6 ++++-- cmd/api/server/middleware.go | 2 +- cmd/api/space/service.go | 2 +- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/cmd/api/pagination/pagination.go b/cmd/api/pagination/pagination.go index e648f470e..90fe9fc34 100644 --- a/cmd/api/pagination/pagination.go +++ b/cmd/api/pagination/pagination.go @@ -3,12 +3,12 @@ package pagination import "github.com/gin-gonic/gin" type Service[T any] interface { - RespondWithPagination(c *gin.Context, statusCode int, data []T, total, offset, limit int, hasMore bool) - Paginate(records []T, offset, limit int) ([]T, bool) + RespondWithPagination(c *gin.Context, statusCode int, data []T, total int, offset int, limit int, hasMore bool) + Paginate(records []T, offset int, limit int) ([]T, bool) } // RespondWithPagination returns a json response with the paginated data and corresponding metadata -func RespondWithPagination[T any](c *gin.Context, statusCode int, data []T, total, offset, limit int, hasMore bool) { +func RespondWithPagination[T any](c *gin.Context, statusCode int, data []T, total int, offset int, limit int, hasMore bool) { c.JSON(statusCode, PaginatedResponse[T]{ Data: data, Pagination: PaginationMeta{ @@ -21,7 +21,7 @@ func RespondWithPagination[T any](c *gin.Context, statusCode int, data []T, tota } // Paginate paginates the given records based on the offset and limit -func Paginate[T any](records []T, offset, limit int) ([]T, bool) { +func Paginate[T any](records []T, offset int, limit int) ([]T, bool) { total := len(records) start := offset end := offset + limit @@ -35,5 +35,6 @@ func Paginate[T any](records []T, offset, limit int) ([]T, bool) { paginated := records[start:end] hasMore := end < total + return paginated, hasMore } diff --git a/cmd/api/search/service_test.go b/cmd/api/search/service_test.go index d16a6d2ce..cf3f06180 100644 --- a/cmd/api/search/service_test.go +++ b/cmd/api/search/service_test.go @@ -22,7 +22,6 @@ const ( limit = 100 techSpaceId = "tech-space-id" gatewayUrl = "http://localhost:31006" - iconImage = "bafyreialsgoyflf3etjm3parzurivyaukzivwortf32b4twnlwpwocsrri" ) type fixture struct { @@ -200,7 +199,7 @@ func TestSearchService_Search(t *testing.T) { }, nil).Once() // when - objects, _, _, err := fx.Search(ctx, "search-term", "", offset, limit) + objects, total, hasMore, err := fx.Search(ctx, "search-term", "", offset, limit) // then require.NoError(t, err) @@ -237,5 +236,8 @@ func TestSearchService_Search(t *testing.T) { require.Equal(t, "tag-2", tags[1].Id) require.Equal(t, "Optional", tags[1].Name) require.Equal(t, "blue", tags[1].Color) + + require.Equal(t, 1, total) + require.False(t, hasMore) }) } diff --git a/cmd/api/server/middleware.go b/cmd/api/server/middleware.go index 48bbebc2b..00f21bbed 100644 --- a/cmd/api/server/middleware.go +++ b/cmd/api/server/middleware.go @@ -22,7 +22,7 @@ func (s *Server) initAccountInfo() gin.HandlerFunc { // TODO: consider not fetching account info on every request; currently used to avoid inconsistencies on logout/login app := s.mwInternal.GetApp() if app == nil { - c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"error": "failed to get app instance"}) + c.AbortWithStatusJSON(http.StatusForbidden, gin.H{"error": "failed to get app instance"}) return } diff --git a/cmd/api/space/service.go b/cmd/api/space/service.go index 9900d6f73..0cc42843c 100644 --- a/cmd/api/space/service.go +++ b/cmd/api/space/service.go @@ -28,7 +28,7 @@ var ( ) type Service interface { - ListSpaces(ctx context.Context) ([]Space, error) + ListSpaces(ctx context.Context, offset int, limit int) ([]Space, int, bool, error) CreateSpace(ctx context.Context, name string) (Space, error) } From 697160479b7c2837aad48ccfd1825ac42bfbb1c4 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Wed, 1 Jan 2025 15:40:50 +0100 Subject: [PATCH 094/279] GO-4459: Add pagination tests --- cmd/api/pagination/pagination_test.go | 94 +++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 cmd/api/pagination/pagination_test.go diff --git a/cmd/api/pagination/pagination_test.go b/cmd/api/pagination/pagination_test.go new file mode 100644 index 000000000..c4bab3936 --- /dev/null +++ b/cmd/api/pagination/pagination_test.go @@ -0,0 +1,94 @@ +package pagination + +import ( + "reflect" + "testing" +) + +func TestPaginate(t *testing.T) { + type args struct { + records []int + offset int + limit int + } + tests := []struct { + name string + args args + wantPaginated []int + wantHasMore bool + }{ + { + name: "Offset=0, Limit=2 (first two items)", + args: args{ + records: []int{1, 2, 3, 4, 5}, + offset: 0, + limit: 2, + }, + wantPaginated: []int{1, 2}, + wantHasMore: true, // items remain: [3,4,5] + }, + { + name: "Offset=2, Limit=2 (middle slice)", + args: args{ + records: []int{1, 2, 3, 4, 5}, + offset: 2, + limit: 2, + }, + wantPaginated: []int{3, 4}, + wantHasMore: true, // item 5 remains + }, + { + name: "Offset=4, Limit=2 (tail of the slice)", + args: args{ + records: []int{1, 2, 3, 4, 5}, + offset: 4, + limit: 2, + }, + wantPaginated: []int{5}, + wantHasMore: false, + }, + { + name: "Offset > length (should return empty)", + args: args{ + records: []int{1, 2, 3, 4, 5}, + offset: 10, + limit: 2, + }, + wantPaginated: []int{}, + wantHasMore: false, + }, + { + name: "Limit > length (should return entire slice)", + args: args{ + records: []int{1, 2, 3}, + offset: 0, + limit: 10, + }, + wantPaginated: []int{1, 2, 3}, + wantHasMore: false, + }, + { + name: "Zero limit (no items returned)", + args: args{ + records: []int{1, 2, 3, 4, 5}, + offset: 1, + limit: 0, + }, + wantPaginated: []int{}, + wantHasMore: true, // items remain: [2,3,4,5] + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + gotPaginated, gotHasMore := Paginate(tt.args.records, tt.args.offset, tt.args.limit) + + if !reflect.DeepEqual(gotPaginated, tt.wantPaginated) { + t.Errorf("Paginate() gotPaginated = %v, want %v", gotPaginated, tt.wantPaginated) + } + if gotHasMore != tt.wantHasMore { + t.Errorf("Paginate() gotHasMore = %v, want %v", gotHasMore, tt.wantHasMore) + } + }) + } +} From 279e2d24b12bcfcc90d5a73e7feb61bc3e1ae3b8 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Wed, 1 Jan 2025 15:41:02 +0100 Subject: [PATCH 095/279] GO-4459: Update interfaces and comments --- cmd/api/auth/service.go | 6 ++---- cmd/api/object/service.go | 21 ++++++++++----------- cmd/api/search/service.go | 3 ++- cmd/api/server/middleware.go | 8 ++++---- cmd/api/server/server.go | 9 ++++----- cmd/api/space/service.go | 6 +++++- 6 files changed, 27 insertions(+), 26 deletions(-) diff --git a/cmd/api/auth/service.go b/cmd/api/auth/service.go index 19b857c79..2ccd5200e 100644 --- a/cmd/api/auth/service.go +++ b/cmd/api/auth/service.go @@ -27,8 +27,7 @@ func NewService(mw service.ClientCommandsServer) *AuthService { return &AuthService{mw: mw} } -// GenerateNewChallenge calls mw.AccountLocalLinkNewChallenge(...) -// and returns the challenge ID, or an error if it fails. +// GenerateNewChallenge calls AccountLocalLinkNewChallenge and returns the challenge ID, or an error if it fails. func (s *AuthService) GenerateNewChallenge(ctx context.Context, appName string) (string, error) { resp := s.mw.AccountLocalLinkNewChallenge(ctx, &pb.RpcAccountLocalLinkNewChallengeRequest{AppName: "api-test"}) @@ -39,8 +38,7 @@ func (s *AuthService) GenerateNewChallenge(ctx context.Context, appName string) return resp.ChallengeId, nil } -// SolveChallengeForToken calls mw.AccountLocalLinkSolveChallenge(...) -// and returns the session token + app key, or an error if it fails. +// SolveChallengeForToken calls AccountLocalLinkSolveChallenge and returns the session token + app key, or an error if it fails. func (s *AuthService) SolveChallengeForToken(ctx context.Context, challengeID, code string) (sessionToken, appKey string, err error) { if challengeID == "" || code == "" { return "", "", ErrInvalidInput diff --git a/cmd/api/object/service.go b/cmd/api/object/service.go index d2362b370..d7a494f4d 100644 --- a/cmd/api/object/service.go +++ b/cmd/api/object/service.go @@ -47,12 +47,11 @@ type ObjectService struct { AccountInfo *model.AccountInfo } -// NewService creates a new object service func NewService(mw service.ClientCommandsServer) *ObjectService { return &ObjectService{mw: mw} } -// ListObjects retrieves a list of objects in a specific space +// ListObjects retrieves a paginated list of objects in a specific space. func (s *ObjectService) ListObjects(ctx context.Context, spaceId string, offset int, limit int) (objects []Object, total int, hasMore bool, err error) { resp := s.mw.ObjectSearch(ctx, &pb.RpcObjectSearchRequest{ SpaceId: spaceId, @@ -112,7 +111,7 @@ func (s *ObjectService) ListObjects(ctx context.Context, spaceId string, offset return objects, total, hasMore, nil } -// GetObject retrieves a single object by its ID in a specific space +// GetObject retrieves a single object by its ID in a specific space. func (s *ObjectService) GetObject(ctx context.Context, spaceId string, objectId string) (Object, error) { resp := s.mw.ObjectShow(ctx, &pb.RpcObjectShowRequest{ SpaceId: spaceId, @@ -148,7 +147,7 @@ func (s *ObjectService) GetObject(ctx context.Context, spaceId string, objectId return object, nil } -// CreateObject creates a new object in a specific space +// CreateObject creates a new object in a specific space. func (s *ObjectService) CreateObject(ctx context.Context, spaceId string, request CreateObjectRequest) (Object, error) { resp := s.mw.ObjectCreate(ctx, &pb.RpcObjectCreateRequest{ Details: &types.Struct{ @@ -197,13 +196,13 @@ func (s *ObjectService) CreateObject(ctx context.Context, spaceId string, reques return object, nil } -// UpdateObject updates an existing object in a specific space +// UpdateObject updates an existing object in a specific space. func (s *ObjectService) UpdateObject(ctx context.Context, spaceId string, objectId string, request UpdateObjectRequest) (Object, error) { // TODO: Implement logic to update an existing object return Object{}, ErrNotImplemented } -// ListTypes returns the list of types in a specific space +// ListTypes returns a paginated list of types in a specific space. func (s *ObjectService) ListTypes(ctx context.Context, spaceId string, offset int, limit int) (types []ObjectType, total int, hasMore bool, err error) { resp := s.mw.ObjectSearch(ctx, &pb.RpcObjectSearchRequest{ SpaceId: spaceId, @@ -252,7 +251,7 @@ func (s *ObjectService) ListTypes(ctx context.Context, spaceId string, offset in return objectTypes, total, hasMore, nil } -// ListTemplates returns the list of templates in a specific space +// ListTemplates returns a paginated list of templates in a specific space. func (s *ObjectService) ListTemplates(ctx context.Context, spaceId string, typeId string, offset int, limit int) (templates []ObjectTemplate, total int, hasMore bool, err error) { // First, determine the type ID of "ot-template" in the space templateTypeIdResp := s.mw.ObjectSearch(ctx, &pb.RpcObjectSearchRequest{ @@ -330,7 +329,7 @@ func (s *ObjectService) ListTemplates(ctx context.Context, spaceId string, typeI return templates, total, hasMore, nil } -// GetDetails returns the list of details from the ObjectShowResponse +// GetDetails returns the list of details from the ObjectShowResponse. func (s *ObjectService) GetDetails(resp *pb.RpcObjectShowResponse) []Detail { return []Detail{ { @@ -379,7 +378,7 @@ func (s *ObjectService) getTags(resp *pb.RpcObjectShowResponse) []Tag { return tags } -// GetBlocks returns the list of blocks from the ObjectShowResponse +// GetBlocks returns the list of blocks from the ObjectShowResponse. func (s *ObjectService) GetBlocks(resp *pb.RpcObjectShowResponse) []Block { blocks := []Block{} @@ -425,7 +424,7 @@ func (s *ObjectService) GetBlocks(resp *pb.RpcObjectShowResponse) []Block { return blocks } -// mapAlign maps the protobuf BlockAlign to a string +// mapAlign maps the protobuf BlockAlign to a string. func mapAlign(align model.BlockAlign) string { switch align { case model.Block_AlignLeft: @@ -441,7 +440,7 @@ func mapAlign(align model.BlockAlign) string { } } -// mapVerticalAlign maps the protobuf BlockVerticalAlign to a string +// mapVerticalAlign maps the protobuf BlockVerticalAlign to a string. func mapVerticalAlign(align model.BlockVerticalAlign) string { switch align { case model.Block_VerticalAlignTop: diff --git a/cmd/api/search/service.go b/cmd/api/search/service.go index c6039fe9f..285f08cc0 100644 --- a/cmd/api/search/service.go +++ b/cmd/api/search/service.go @@ -22,7 +22,7 @@ var ( ) type Service interface { - Search(ctx context.Context) ([]object.Object, error) + Search(ctx context.Context, searchQuery string, objectType string, offset, limit int) (objects []object.Object, total int, hasMore bool, err error) } type SearchService struct { @@ -36,6 +36,7 @@ func NewService(mw service.ClientCommandsServer, spaceService *space.SpaceServic return &SearchService{mw: mw, spaceService: spaceService, objectService: objectService} } +// Search retrieves a paginated list of objects from all spaces that match the search parameters. func (s *SearchService) Search(ctx context.Context, searchQuery string, objectType string, offset, limit int) (objects []object.Object, total int, hasMore bool, err error) { spaces, _, _, err := s.spaceService.ListSpaces(ctx, 0, 100) if err != nil { diff --git a/cmd/api/server/middleware.go b/cmd/api/server/middleware.go index 00f21bbed..82290e3df 100644 --- a/cmd/api/server/middleware.go +++ b/cmd/api/server/middleware.go @@ -10,13 +10,13 @@ import ( "github.com/anyproto/anytype-heart/core/anytype/account" ) -// // TODO: User represents an authenticated user with permissions +// TODO: User represents an authenticated user with permissions type User struct { ID string Permissions string // "read-only" or "read-write" } -// initAccountInfo retrieves the account information from the account service +// initAccountInfo retrieves the account information from the account service. func (s *Server) initAccountInfo() gin.HandlerFunc { return func(c *gin.Context) { // TODO: consider not fetching account info on every request; currently used to avoid inconsistencies on logout/login @@ -39,7 +39,7 @@ func (s *Server) initAccountInfo() gin.HandlerFunc { } } -// TODO: AuthMiddleware to ensure the user is authenticated +// TODO: AuthMiddleware ensures the user is authenticated. func (s *Server) AuthMiddleware() gin.HandlerFunc { return func(c *gin.Context) { token := c.GetHeader("Authorization") @@ -60,7 +60,7 @@ func (s *Server) AuthMiddleware() gin.HandlerFunc { } } -// TODO: PermissionMiddleware to ensure the user has the required permissions +// TODO: PermissionMiddleware ensures the user has the required permissions. func (s *Server) PermissionMiddleware(requiredPermission string) gin.HandlerFunc { return func(c *gin.Context) { user, exists := c.Get("user") diff --git a/cmd/api/server/server.go b/cmd/api/server/server.go index 29cef94d3..183fa0f64 100644 --- a/cmd/api/server/server.go +++ b/cmd/api/server/server.go @@ -21,7 +21,7 @@ const ( readHeaderTimeout = 5 * time.Second ) -// Server wraps the HTTP server logic. +// Server wraps the HTTP server and service logic. type Server struct { engine *gin.Engine srv *http.Server @@ -33,8 +33,7 @@ type Server struct { searchService *search.SearchService } -// NewServer constructs a new Server with default config -// and sets up routes via your router.go +// NewServer constructs a new Server with default config and sets up the routes. func NewServer(mw service.ClientCommandsServer, mwInternal core.MiddlewareInternal) *Server { s := &Server{ mwInternal: mwInternal, @@ -54,13 +53,13 @@ func NewServer(mw service.ClientCommandsServer, mwInternal core.MiddlewareIntern return s } -// ListenAndServe starts the HTTP server +// ListenAndServe starts the HTTP server. func (s *Server) ListenAndServe() error { fmt.Printf("Starting API server on %s\n", httpPort) return s.srv.ListenAndServe() } -// Shutdown gracefully stops the server +// Shutdown gracefully stops the server. func (s *Server) Shutdown(ctx context.Context) error { fmt.Println("Shutting down API server...") return s.srv.Shutdown(ctx) diff --git a/cmd/api/space/service.go b/cmd/api/space/service.go index 0cc42843c..fe5ed7a93 100644 --- a/cmd/api/space/service.go +++ b/cmd/api/space/service.go @@ -30,6 +30,7 @@ var ( type Service interface { ListSpaces(ctx context.Context, offset int, limit int) ([]Space, int, bool, error) CreateSpace(ctx context.Context, name string) (Space, error) + ListMembers(ctx context.Context, spaceId string, offset int, limit int) ([]Member, int, bool, error) } type SpaceService struct { @@ -41,6 +42,7 @@ func NewService(mw service.ClientCommandsServer) *SpaceService { return &SpaceService{mw: mw} } +// ListSpaces returns a paginated list of spaces for the account. func (s *SpaceService) ListSpaces(ctx context.Context, offset int, limit int) (spaces []Space, total int, hasMore bool, err error) { resp := s.mw.ObjectSearch(ctx, &pb.RpcObjectSearchRequest{ SpaceId: s.AccountInfo.TechSpaceId, @@ -100,6 +102,7 @@ func (s *SpaceService) ListSpaces(ctx context.Context, offset int, limit int) (s return spaces, total, hasMore, nil } +// CreateSpace creates a new space with the given name and returns the space info. func (s *SpaceService) CreateSpace(ctx context.Context, name string) (Space, error) { iconOption, err := rand.Int(rand.Reader, big.NewInt(13)) if err != nil { @@ -126,6 +129,7 @@ func (s *SpaceService) CreateSpace(ctx context.Context, name string) (Space, err return s.getWorkspaceInfo(resp.SpaceId) } +// ListMembers returns a paginated list of members in the space with the given ID. func (s *SpaceService) ListMembers(ctx context.Context, spaceId string, offset int, limit int) (members []Member, total int, hasMore bool, err error) { resp := s.mw.ObjectSearch(ctx, &pb.RpcObjectSearchRequest{ SpaceId: spaceId, @@ -181,7 +185,7 @@ func (s *SpaceService) ListMembers(ctx context.Context, spaceId string, offset i return members, total, hasMore, nil } -// getWorkspaceInfo returns the workspace info for the space with the given ID +// getWorkspaceInfo returns the workspace info for the space with the given ID. func (s *SpaceService) getWorkspaceInfo(spaceId string) (space Space, err error) { workspaceResponse := s.mw.WorkspaceOpen(context.Background(), &pb.RpcWorkspaceOpenRequest{ SpaceId: spaceId, From 96cdc97eafa1a38d1eda37fc84ef7f3689e7c409 Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Wed, 1 Jan 2025 16:09:03 +0100 Subject: [PATCH 096/279] GO-4146 Debug spacestore --- space/spacecore/storage/anystorage/storageservice.go | 4 +--- space/spacecore/storage/sqlitestorage/tree.go | 7 +++++++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/space/spacecore/storage/anystorage/storageservice.go b/space/spacecore/storage/anystorage/storageservice.go index 7753269a5..ee43cb45b 100644 --- a/space/spacecore/storage/anystorage/storageservice.go +++ b/space/spacecore/storage/anystorage/storageservice.go @@ -302,10 +302,8 @@ func (s *storageService) DeleteSpaceStorage(ctx context.Context, spaceId string) } var anyStoreConfig *anystore.Config = &anystore.Config{ - Namespace: "", - ReadConnections: 0, + ReadConnections: 4, SQLiteConnectionOptions: map[string]string{ "synchronous": "off", }, - SyncPoolElementMaxSize: 0, } diff --git a/space/spacecore/storage/sqlitestorage/tree.go b/space/spacecore/storage/sqlitestorage/tree.go index e377f4a8b..9872d76e4 100644 --- a/space/spacecore/storage/sqlitestorage/tree.go +++ b/space/spacecore/storage/sqlitestorage/tree.go @@ -4,6 +4,7 @@ import ( "context" "fmt" "sync" + "sync/atomic" "github.com/anyproto/any-sync/commonspace/object/tree/treechangeproto" "github.com/anyproto/any-sync/commonspace/object/tree/treestorage" @@ -155,8 +156,14 @@ func (t *treeStorage) AddRawChangesSetHeads(changes []*treechangeproto.RawTreeCh return nil } +var totalCalls atomic.Int32 + func (t *treeStorage) GetRawChange(ctx context.Context, id string) (*treechangeproto.RawTreeChangeWithId, error) { ch, err := t.spaceStorage.TreeRoot(id) + // totalCalls.Store(totalCalls.Load() + 1) + // if totalCalls.Load()%10 == 0 { + // fmt.Println("totalCalls", totalCalls.Load()) + // } if err != nil { return nil, replaceNoRowsErr(err, treestorage.ErrUnknownChange) } From a2ccc7da5ebc0e8b6e7fd193ac5133edc6a7d990 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Thu, 2 Jan 2025 14:14:07 +0100 Subject: [PATCH 097/279] GO-4459: Add complex filters in search for query and object types --- cmd/api/demo/api_demo.go | 3 +- cmd/api/docs/docs.go | 10 ++- cmd/api/docs/swagger.json | 10 ++- cmd/api/docs/swagger.yaml | 9 ++- cmd/api/search/handler.go | 20 ++--- cmd/api/search/service.go | 155 +++++++++++++++++++++++++++----------- cmd/api/space/service.go | 3 + 7 files changed, 148 insertions(+), 62 deletions(-) diff --git a/cmd/api/demo/api_demo.go b/cmd/api/demo/api_demo.go index 311938774..a46afa670 100644 --- a/cmd/api/demo/api_demo.go +++ b/cmd/api/demo/api_demo.go @@ -30,7 +30,8 @@ var log = logging.Logger("rest-api") func ReplacePlaceholders(endpoint string, parameters map[string]interface{}) string { for key, value := range parameters { placeholder := fmt.Sprintf("{%s}", key) - endpoint = strings.ReplaceAll(endpoint, placeholder, fmt.Sprintf("%v", value)) + encodedValue := url.QueryEscape(fmt.Sprintf("%v", value)) + endpoint = strings.ReplaceAll(endpoint, placeholder, encodedValue) } // Parse the base URL + endpoint diff --git a/cmd/api/docs/docs.go b/cmd/api/docs/docs.go index 0998e883d..c7a2aab4b 100644 --- a/cmd/api/docs/docs.go +++ b/cmd/api/docs/docs.go @@ -122,9 +122,13 @@ const docTemplate = `{ "in": "query" }, { - "type": "string", - "description": "Specify object.Object type for search", - "name": "object_type", + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "csv", + "description": "Specify object types for search", + "name": "object_types", "in": "query" }, { diff --git a/cmd/api/docs/swagger.json b/cmd/api/docs/swagger.json index 1aa508608..b34bb51a2 100644 --- a/cmd/api/docs/swagger.json +++ b/cmd/api/docs/swagger.json @@ -116,9 +116,13 @@ "in": "query" }, { - "type": "string", - "description": "Specify object.Object type for search", - "name": "object_type", + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "csv", + "description": "Specify object types for search", + "name": "object_types", "in": "query" }, { diff --git a/cmd/api/docs/swagger.yaml b/cmd/api/docs/swagger.yaml index 98042165f..e9786c94d 100644 --- a/cmd/api/docs/swagger.yaml +++ b/cmd/api/docs/swagger.yaml @@ -386,10 +386,13 @@ paths: in: query name: query type: string - - description: Specify object.Object type for search + - collectionFormat: csv + description: Specify object types for search in: query - name: object_type - type: string + items: + type: string + name: object_types + type: array - description: The number of items to skip before starting to collect the result set in: query diff --git a/cmd/api/search/handler.go b/cmd/api/search/handler.go index c60514fdd..78e17b764 100644 --- a/cmd/api/search/handler.go +++ b/cmd/api/search/handler.go @@ -16,23 +16,23 @@ import ( // @Tags search // @Accept json // @Produce json -// @Param query query string false "The search term to filter objects by name" -// @Param object_type query string false "Specify object.Object type for search" -// @Param offset query int false "The number of items to skip before starting to collect the result set" -// @Param limit query int false "The number of items to return" default(100) -// @Success 200 {object} map[string][]object.Object "List of objects" -// @Failure 403 {object} util.UnauthorizedError "Unauthorized" -// @Failure 404 {object} util.NotFoundError "Resource not found" -// @Failure 502 {object} util.ServerError "Internal server error" +// @Param query query string false "The search term to filter objects by name" +// @Param object_types query []string false "Specify object types for search" +// @Param offset query int false "The number of items to skip before starting to collect the result set" +// @Param limit query int false "The number of items to return" default(100) +// @Success 200 {object} map[string][]object.Object "List of objects" +// @Failure 403 {object} util.UnauthorizedError "Unauthorized" +// @Failure 404 {object} util.NotFoundError "Resource not found" +// @Failure 502 {object} util.ServerError "Internal server error" // @Router /search [get] func SearchHandler(s *SearchService) gin.HandlerFunc { return func(c *gin.Context) { searchQuery := c.Query("query") - objectType := c.Query("object_type") + objectTypes := c.QueryArray("object_types") offset := c.GetInt("offset") limit := c.GetInt("limit") - objects, total, hasMore, err := s.Search(c, searchQuery, objectType, offset, limit) + objects, total, hasMore, err := s.Search(c, searchQuery, objectTypes, offset, limit) code := util.MapErrorCode(err, util.ErrToCode(ErrNoObjectsFound, http.StatusNotFound), util.ErrToCode(ErrFailedSearchObjects, http.StatusInternalServerError), diff --git a/cmd/api/search/service.go b/cmd/api/search/service.go index 285f08cc0..c856c50f4 100644 --- a/cmd/api/search/service.go +++ b/cmd/api/search/service.go @@ -4,6 +4,7 @@ import ( "context" "errors" "sort" + "strings" "github.com/anyproto/anytype-heart/cmd/api/object" "github.com/anyproto/anytype-heart/cmd/api/pagination" @@ -22,7 +23,7 @@ var ( ) type Service interface { - Search(ctx context.Context, searchQuery string, objectType string, offset, limit int) (objects []object.Object, total int, hasMore bool, err error) + Search(ctx context.Context, searchQuery string, objectTypes []string, offset, limit int) (objects []object.Object, total int, hasMore bool, err error) } type SearchService struct { @@ -37,51 +38,16 @@ func NewService(mw service.ClientCommandsServer, spaceService *space.SpaceServic } // Search retrieves a paginated list of objects from all spaces that match the search parameters. -func (s *SearchService) Search(ctx context.Context, searchQuery string, objectType string, offset, limit int) (objects []object.Object, total int, hasMore bool, err error) { +func (s *SearchService) Search(ctx context.Context, searchQuery string, objectTypes []string, offset, limit int) (objects []object.Object, total int, hasMore bool, err error) { spaces, _, _, err := s.spaceService.ListSpaces(ctx, 0, 100) if err != nil { return nil, 0, false, err } - // Then, get objects from each space that match the search parameters - var filters = []*model.BlockContentDataviewFilter{ - { - RelationKey: bundle.RelationKeyLayout.String(), - Condition: model.BlockContentDataviewFilter_In, - Value: pbtypes.IntList([]int{ - int(model.ObjectType_basic), - int(model.ObjectType_profile), - int(model.ObjectType_todo), - int(model.ObjectType_note), - int(model.ObjectType_bookmark), - int(model.ObjectType_set), - int(model.ObjectType_collection), - int(model.ObjectType_participant), - }...), - }, - { - RelationKey: bundle.RelationKeyIsHidden.String(), - Condition: model.BlockContentDataviewFilter_NotEqual, - Value: pbtypes.Bool(true), - }, - } - - if searchQuery != "" { - // TODO also include snippet for notes - filters = append(filters, &model.BlockContentDataviewFilter{ - RelationKey: bundle.RelationKeyName.String(), - Condition: model.BlockContentDataviewFilter_Like, - Value: pbtypes.String(searchQuery), - }) - } - - if objectType != "" { - filters = append(filters, &model.BlockContentDataviewFilter{ - RelationKey: bundle.RelationKeyType.String(), - Condition: model.BlockContentDataviewFilter_Equal, - Value: pbtypes.String(objectType), - }) - } + baseFilters := s.prepareBaseFilters() + queryFilters := s.prepareQueryFilter(searchQuery) + objectTypeFilters := s.prepareObjectTypeFilters(objectTypes) + filters := s.combineFilters(model.BlockContentDataviewFilter_And, baseFilters, queryFilters, objectTypeFilters) results := make([]object.Object, 0) for _, space := range spaces { @@ -96,7 +62,7 @@ func (s *SearchService) Search(ctx context.Context, searchQuery string, objectTy IncludeTime: true, EmptyPlacement: model.BlockContentDataviewSort_NotSpecified, }}, - Keys: []string{"id", "name", "type", "layout", "iconEmoji", "iconImage"}, + Keys: []string{"id", "name", "type", "snippet", "layout", "iconEmoji", "iconImage"}, // TODO split limit between spaces // Limit: paginationLimitPerSpace, // FullText: searchTerm, @@ -122,6 +88,7 @@ func (s *SearchService) Search(ctx context.Context, searchQuery string, objectTy ObjectId: record.Fields["id"].GetStringValue(), }) + // TODO: return snippet for notes? results = append(results, object.Object{ Type: model.ObjectTypeLayout_name[int32(record.Fields["layout"].GetNumberValue())], Id: record.Fields["id"].GetStringValue(), @@ -150,3 +117,107 @@ func (s *SearchService) Search(ctx context.Context, searchQuery string, objectTy paginatedResults, hasMore := pagination.Paginate(results, offset, limit) return paginatedResults, total, hasMore, nil } + +// makeAndCondition combines multiple filter groups with the given operator. +func (s *SearchService) combineFilters(operator model.BlockContentDataviewFilterOperator, filterGroups ...[]*model.BlockContentDataviewFilter) []*model.BlockContentDataviewFilter { + nestedFilters := make([]*model.BlockContentDataviewFilter, 0) + for _, group := range filterGroups { + nestedFilters = append(nestedFilters, group...) + } + + if len(nestedFilters) == 0 { + return nil + } + + return []*model.BlockContentDataviewFilter{ + { + Operator: operator, + NestedFilters: nestedFilters, + }, + } +} + +// prepareBaseFilters returns a list of default filters that should be applied to all search queries. +func (s *SearchService) prepareBaseFilters() []*model.BlockContentDataviewFilter { + return []*model.BlockContentDataviewFilter{ + { + Operator: model.BlockContentDataviewFilter_No, + RelationKey: bundle.RelationKeyLayout.String(), + Condition: model.BlockContentDataviewFilter_In, + Value: pbtypes.IntList([]int{ + int(model.ObjectType_basic), + int(model.ObjectType_profile), + int(model.ObjectType_todo), + int(model.ObjectType_note), + int(model.ObjectType_bookmark), + int(model.ObjectType_set), + // int(model.ObjectType_collection), + int(model.ObjectType_participant), + }...), + }, + { + Operator: model.BlockContentDataviewFilter_No, + RelationKey: bundle.RelationKeyIsHidden.String(), + Condition: model.BlockContentDataviewFilter_NotEqual, + Value: pbtypes.Bool(true), + }, + } +} + +// prepareQueryFilter combines object name and snippet filters with an OR condition. +func (s *SearchService) prepareQueryFilter(searchQuery string) []*model.BlockContentDataviewFilter { + if searchQuery == "" { + return nil + } + + return []*model.BlockContentDataviewFilter{ + { + Operator: model.BlockContentDataviewFilter_Or, + NestedFilters: []*model.BlockContentDataviewFilter{ + { + Operator: model.BlockContentDataviewFilter_No, + RelationKey: bundle.RelationKeyName.String(), + Condition: model.BlockContentDataviewFilter_Like, + Value: pbtypes.String(searchQuery), + }, + { + Operator: model.BlockContentDataviewFilter_No, + RelationKey: bundle.RelationKeySnippet.String(), + Condition: model.BlockContentDataviewFilter_Like, + Value: pbtypes.String(searchQuery), + }, + }, + }, + } +} + +// prepareObjectTypeFilters combines object type filters with an OR condition. +func (s *SearchService) prepareObjectTypeFilters(objectTypes []string) []*model.BlockContentDataviewFilter { + if len(objectTypes) == 0 || objectTypes[0] == "" { + return nil + } + + // Prepare nested filters for each object type + nestedFilters := make([]*model.BlockContentDataviewFilter, len(objectTypes)) + for i, objectType := range objectTypes { + relationKey := bundle.RelationKeyType.String() + if strings.HasPrefix(objectType, "ot-") { + relationKey = bundle.RelationKeyUniqueKey.String() + } + + nestedFilters[i] = &model.BlockContentDataviewFilter{ + Operator: model.BlockContentDataviewFilter_No, + RelationKey: relationKey, + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.String(objectType), + } + } + + // Combine all filters with an OR operator + return []*model.BlockContentDataviewFilter{ + { + Operator: model.BlockContentDataviewFilter_Or, + NestedFilters: nestedFilters, + }, + } +} diff --git a/cmd/api/space/service.go b/cmd/api/space/service.go index fe5ed7a93..492ec26f0 100644 --- a/cmd/api/space/service.go +++ b/cmd/api/space/service.go @@ -48,16 +48,19 @@ func (s *SpaceService) ListSpaces(ctx context.Context, offset int, limit int) (s SpaceId: s.AccountInfo.TechSpaceId, Filters: []*model.BlockContentDataviewFilter{ { + Operator: model.BlockContentDataviewFilter_No, RelationKey: bundle.RelationKeyLayout.String(), Condition: model.BlockContentDataviewFilter_Equal, Value: pbtypes.Int64(int64(model.ObjectType_spaceView)), }, { + Operator: model.BlockContentDataviewFilter_No, RelationKey: bundle.RelationKeySpaceLocalStatus.String(), Condition: model.BlockContentDataviewFilter_Equal, Value: pbtypes.Int64(int64(model.SpaceStatus_Ok)), }, { + Operator: model.BlockContentDataviewFilter_No, RelationKey: bundle.RelationKeySpaceRemoteStatus.String(), Condition: model.BlockContentDataviewFilter_Equal, Value: pbtypes.Int64(int64(model.SpaceStatus_Ok)), From 017b963d326d580920a0643506179220883d99cd Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Thu, 2 Jan 2025 18:45:47 +0100 Subject: [PATCH 098/279] GO-4459: Rename auth handler and model --- cmd/api/auth/handler.go | 16 ++++++++-------- cmd/api/auth/model.go | 4 ++-- cmd/api/docs/docs.go | 8 ++++---- cmd/api/docs/swagger.json | 8 ++++---- cmd/api/docs/swagger.yaml | 8 ++++---- cmd/api/search/service.go | 2 +- cmd/api/server/router.go | 6 +++--- 7 files changed, 26 insertions(+), 26 deletions(-) diff --git a/cmd/api/auth/handler.go b/cmd/api/auth/handler.go index 0c5dfd269..353398364 100644 --- a/cmd/api/auth/handler.go +++ b/cmd/api/auth/handler.go @@ -8,16 +8,16 @@ import ( "github.com/anyproto/anytype-heart/cmd/api/util" ) -// AuthDisplayCodeHandler generates a new challenge and returns the challenge ID +// DisplayCodeHandler generates a new challenge and returns the challenge ID // // @Summary Open a modal window with a code in Anytype Desktop app // @Tags auth // @Accept json // @Produce json -// @Success 200 {object} AuthDisplayCodeResponse "Challenge ID" +// @Success 200 {object} DisplayCodeResponse "Challenge ID" // @Failure 502 {object} util.ServerError "Internal server error" // @Router /auth/displayCode [post] -func AuthDisplayCodeHandler(s *AuthService) gin.HandlerFunc { +func DisplayCodeHandler(s *AuthService) gin.HandlerFunc { return func(c *gin.Context) { challengeId, err := s.GenerateNewChallenge(c.Request.Context(), "api-test") code := util.MapErrorCode(err, util.ErrToCode(ErrFailedGenerateChallenge, http.StatusInternalServerError)) @@ -28,11 +28,11 @@ func AuthDisplayCodeHandler(s *AuthService) gin.HandlerFunc { return } - c.JSON(http.StatusOK, AuthDisplayCodeResponse{ChallengeId: challengeId}) + c.JSON(http.StatusOK, DisplayCodeResponse{ChallengeId: challengeId}) } } -// AuthTokenHandler retrieves an authentication token using a code and challenge ID +// TokenHandler retrieves an authentication token using a code and challenge ID // // @Summary Retrieve an authentication token using a code // @Tags auth @@ -40,11 +40,11 @@ func AuthDisplayCodeHandler(s *AuthService) gin.HandlerFunc { // @Produce json // @Param code query string true "The code retrieved from Anytype Desktop app" // @Param challenge_id query string true "The challenge ID" -// @Success 200 {object} AuthTokenResponse "Authentication token" +// @Success 200 {object} TokenResponse "Authentication token" // @Failure 400 {object} util.ValidationError "Invalid input" // @Failure 502 {object} util.ServerError "Internal server error" // @Router /auth/token [get] -func AuthTokenHandler(s *AuthService) gin.HandlerFunc { +func TokenHandler(s *AuthService) gin.HandlerFunc { return func(c *gin.Context) { challengeID := c.Query("challenge_id") code := c.Query("code") @@ -61,7 +61,7 @@ func AuthTokenHandler(s *AuthService) gin.HandlerFunc { return } - c.JSON(http.StatusOK, AuthTokenResponse{ + c.JSON(http.StatusOK, TokenResponse{ SessionToken: sessionToken, AppKey: appKey, }) diff --git a/cmd/api/auth/model.go b/cmd/api/auth/model.go index 706d9e5cd..e3e4af2c4 100644 --- a/cmd/api/auth/model.go +++ b/cmd/api/auth/model.go @@ -1,10 +1,10 @@ package auth -type AuthDisplayCodeResponse struct { +type DisplayCodeResponse struct { ChallengeId string `json:"challenge_id" example:"67647f5ecda913e9a2e11b26"` } -type AuthTokenResponse struct { +type TokenResponse struct { SessionToken string `json:"session_token" example:""` AppKey string `json:"app_key" example:""` } diff --git a/cmd/api/docs/docs.go b/cmd/api/docs/docs.go index c7a2aab4b..6479de3ff 100644 --- a/cmd/api/docs/docs.go +++ b/cmd/api/docs/docs.go @@ -40,7 +40,7 @@ const docTemplate = `{ "200": { "description": "Challenge ID", "schema": { - "$ref": "#/definitions/auth.AuthDisplayCodeResponse" + "$ref": "#/definitions/auth.DisplayCodeResponse" } }, "502": { @@ -84,7 +84,7 @@ const docTemplate = `{ "200": { "description": "Authentication token", "schema": { - "$ref": "#/definitions/auth.AuthTokenResponse" + "$ref": "#/definitions/auth.TokenResponse" } }, "400": { @@ -733,7 +733,7 @@ const docTemplate = `{ } }, "definitions": { - "auth.AuthDisplayCodeResponse": { + "auth.DisplayCodeResponse": { "type": "object", "properties": { "challenge_id": { @@ -742,7 +742,7 @@ const docTemplate = `{ } } }, - "auth.AuthTokenResponse": { + "auth.TokenResponse": { "type": "object", "properties": { "app_key": { diff --git a/cmd/api/docs/swagger.json b/cmd/api/docs/swagger.json index b34bb51a2..65e38342e 100644 --- a/cmd/api/docs/swagger.json +++ b/cmd/api/docs/swagger.json @@ -34,7 +34,7 @@ "200": { "description": "Challenge ID", "schema": { - "$ref": "#/definitions/auth.AuthDisplayCodeResponse" + "$ref": "#/definitions/auth.DisplayCodeResponse" } }, "502": { @@ -78,7 +78,7 @@ "200": { "description": "Authentication token", "schema": { - "$ref": "#/definitions/auth.AuthTokenResponse" + "$ref": "#/definitions/auth.TokenResponse" } }, "400": { @@ -727,7 +727,7 @@ } }, "definitions": { - "auth.AuthDisplayCodeResponse": { + "auth.DisplayCodeResponse": { "type": "object", "properties": { "challenge_id": { @@ -736,7 +736,7 @@ } } }, - "auth.AuthTokenResponse": { + "auth.TokenResponse": { "type": "object", "properties": { "app_key": { diff --git a/cmd/api/docs/swagger.yaml b/cmd/api/docs/swagger.yaml index e9786c94d..7b3023991 100644 --- a/cmd/api/docs/swagger.yaml +++ b/cmd/api/docs/swagger.yaml @@ -1,12 +1,12 @@ basePath: /v1 definitions: - auth.AuthDisplayCodeResponse: + auth.DisplayCodeResponse: properties: challenge_id: example: 67647f5ecda913e9a2e11b26 type: string type: object - auth.AuthTokenResponse: + auth.TokenResponse: properties: app_key: example: "" @@ -336,7 +336,7 @@ paths: "200": description: Challenge ID schema: - $ref: '#/definitions/auth.AuthDisplayCodeResponse' + $ref: '#/definitions/auth.DisplayCodeResponse' "502": description: Internal server error schema: @@ -365,7 +365,7 @@ paths: "200": description: Authentication token schema: - $ref: '#/definitions/auth.AuthTokenResponse' + $ref: '#/definitions/auth.TokenResponse' "400": description: Invalid input schema: diff --git a/cmd/api/search/service.go b/cmd/api/search/service.go index c856c50f4..d438a87a6 100644 --- a/cmd/api/search/service.go +++ b/cmd/api/search/service.go @@ -151,7 +151,7 @@ func (s *SearchService) prepareBaseFilters() []*model.BlockContentDataviewFilter int(model.ObjectType_note), int(model.ObjectType_bookmark), int(model.ObjectType_set), - // int(model.ObjectType_collection), + int(model.ObjectType_collection), int(model.ObjectType_participant), }...), }, diff --git a/cmd/api/server/router.go b/cmd/api/server/router.go index 37b905440..b5338ea28 100644 --- a/cmd/api/server/router.go +++ b/cmd/api/server/router.go @@ -30,11 +30,11 @@ func (s *Server) NewRouter() *gin.Engine { // Swagger route router.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) - // Unprotected routes + // Auth authRouter := router.Group("/v1/auth") { - authRouter.POST("/displayCode", auth.AuthDisplayCodeHandler(s.authService)) - authRouter.GET("/token", auth.AuthTokenHandler(s.authService)) + authRouter.POST("/displayCode", auth.DisplayCodeHandler(s.authService)) + authRouter.GET("/token", auth.TokenHandler(s.authService)) } // Read-only group From 0358d34af7585a2eb5c2a58fdb04db888dd24e2e Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Fri, 3 Jan 2025 19:13:20 +0100 Subject: [PATCH 099/279] GO-4459: Refactor handlers and middleware --- cmd/api/auth/service.go | 2 +- cmd/api/docs/docs.go | 6 +++++ cmd/api/docs/swagger.json | 6 +++++ cmd/api/docs/swagger.yaml | 4 +++ cmd/api/object/handler.go | 6 +++-- cmd/api/server/middleware.go | 47 ++++++------------------------------ cmd/api/space/handler.go | 7 +++--- 7 files changed, 32 insertions(+), 46 deletions(-) diff --git a/cmd/api/auth/service.go b/cmd/api/auth/service.go index 2ccd5200e..17afa23cf 100644 --- a/cmd/api/auth/service.go +++ b/cmd/api/auth/service.go @@ -29,7 +29,7 @@ func NewService(mw service.ClientCommandsServer) *AuthService { // GenerateNewChallenge calls AccountLocalLinkNewChallenge and returns the challenge ID, or an error if it fails. func (s *AuthService) GenerateNewChallenge(ctx context.Context, appName string) (string, error) { - resp := s.mw.AccountLocalLinkNewChallenge(ctx, &pb.RpcAccountLocalLinkNewChallengeRequest{AppName: "api-test"}) + resp := s.mw.AccountLocalLinkNewChallenge(ctx, &pb.RpcAccountLocalLinkNewChallengeRequest{AppName: appName}) if resp.Error.Code != pb.RpcAccountLocalLinkNewChallengeResponseError_NULL { return "", ErrFailedGenerateChallenge diff --git a/cmd/api/docs/docs.go b/cmd/api/docs/docs.go index 6479de3ff..400a4b48c 100644 --- a/cmd/api/docs/docs.go +++ b/cmd/api/docs/docs.go @@ -262,6 +262,12 @@ const docTemplate = `{ "$ref": "#/definitions/space.CreateSpaceResponse" } }, + "400": { + "description": "Bad request", + "schema": { + "$ref": "#/definitions/util.ValidationError" + } + }, "403": { "description": "Unauthorized", "schema": { diff --git a/cmd/api/docs/swagger.json b/cmd/api/docs/swagger.json index 65e38342e..22c0d4d92 100644 --- a/cmd/api/docs/swagger.json +++ b/cmd/api/docs/swagger.json @@ -256,6 +256,12 @@ "$ref": "#/definitions/space.CreateSpaceResponse" } }, + "400": { + "description": "Bad request", + "schema": { + "$ref": "#/definitions/util.ValidationError" + } + }, "403": { "description": "Unauthorized", "schema": { diff --git a/cmd/api/docs/swagger.yaml b/cmd/api/docs/swagger.yaml index 7b3023991..63fa856a0 100644 --- a/cmd/api/docs/swagger.yaml +++ b/cmd/api/docs/swagger.yaml @@ -483,6 +483,10 @@ paths: description: Space created successfully schema: $ref: '#/definitions/space.CreateSpaceResponse' + "400": + description: Bad request + schema: + $ref: '#/definitions/util.ValidationError' "403": description: Unauthorized schema: diff --git a/cmd/api/object/handler.go b/cmd/api/object/handler.go index 94e81de6d..0e5867c6a 100644 --- a/cmd/api/object/handler.go +++ b/cmd/api/object/handler.go @@ -98,7 +98,8 @@ func CreateObjectHandler(s *ObjectService) gin.HandlerFunc { request := CreateObjectRequest{} if err := c.BindJSON(&request); err != nil { - c.JSON(http.StatusBadRequest, util.CodeToAPIError(http.StatusBadRequest, ErrBadInput.Error())) + apiErr := util.CodeToAPIError(http.StatusBadRequest, err.Error()) + c.JSON(http.StatusBadRequest, apiErr) return } @@ -140,7 +141,8 @@ func UpdateObjectHandler(s *ObjectService) gin.HandlerFunc { request := UpdateObjectRequest{} if err := c.BindJSON(&request); err != nil { - c.JSON(http.StatusBadRequest, util.CodeToAPIError(http.StatusBadRequest, ErrBadInput.Error())) + apiErr := util.CodeToAPIError(http.StatusBadRequest, err.Error()) + c.JSON(http.StatusBadRequest, apiErr) return } diff --git a/cmd/api/server/middleware.go b/cmd/api/server/middleware.go index 82290e3df..362f5b298 100644 --- a/cmd/api/server/middleware.go +++ b/cmd/api/server/middleware.go @@ -10,12 +10,6 @@ import ( "github.com/anyproto/anytype-heart/core/anytype/account" ) -// TODO: User represents an authenticated user with permissions -type User struct { - ID string - Permissions string // "read-only" or "read-write" -} - // initAccountInfo retrieves the account information from the account service. func (s *Server) initAccountInfo() gin.HandlerFunc { return func(c *gin.Context) { @@ -39,43 +33,16 @@ func (s *Server) initAccountInfo() gin.HandlerFunc { } } -// TODO: AuthMiddleware ensures the user is authenticated. -func (s *Server) AuthMiddleware() gin.HandlerFunc { +// ensureAuthenticated is a middleware that ensures the request is authenticated. +func (s *Server) ensureAuthenticated() gin.HandlerFunc { return func(c *gin.Context) { - token := c.GetHeader("Authorization") - if token == "" { - c.AbortWithStatusJSON(http.StatusUnauthorized, gin.H{"error": "Unauthorized"}) - return - } + // token := c.GetHeader("Authorization") + // if token == "" { + // c.AbortWithStatusJSON(http.StatusUnauthorized, gin.H{"error": "Unauthorized"}) + // return + // } // TODO: Validate the token and retrieve user information; this is mock example - user := &User{ - ID: "user123", - Permissions: "read-only", // or "read-only" - } - - // Add the user to the context - c.Set("user", user) - c.Next() - } -} - -// TODO: PermissionMiddleware ensures the user has the required permissions. -func (s *Server) PermissionMiddleware(requiredPermission string) gin.HandlerFunc { - return func(c *gin.Context) { - user, exists := c.Get("user") - if !exists { - c.AbortWithStatusJSON(http.StatusUnauthorized, gin.H{"error": "Unauthorized"}) - return - } - - u := user.(*User) - if requiredPermission == "read-write" && u.Permissions != "read-write" { - c.AbortWithStatusJSON(http.StatusForbidden, gin.H{"error": "Forbidden: write access required"}) - return - } - - // For read-only access, both "read-only" and "read-write" permissions are acceptable c.Next() } } diff --git a/cmd/api/space/handler.go b/cmd/api/space/handler.go index 650f3c120..e50eec2f9 100644 --- a/cmd/api/space/handler.go +++ b/cmd/api/space/handler.go @@ -52,6 +52,7 @@ func GetSpacesHandler(s *SpaceService) gin.HandlerFunc { // @Produce json // @Param name body string true "Space Name" // @Success 200 {object} CreateSpaceResponse "Space created successfully" +// @Failure 400 {object} util.ValidationError "Bad request" // @Failure 403 {object} util.UnauthorizedError "Unauthorized" // @Failure 502 {object} util.ServerError "Internal server error" // @Router /spaces [post] @@ -59,12 +60,12 @@ func CreateSpaceHandler(s *SpaceService) gin.HandlerFunc { return func(c *gin.Context) { nameRequest := CreateSpaceRequest{} if err := c.BindJSON(&nameRequest); err != nil { - c.JSON(http.StatusBadRequest, gin.H{"message": "Invalid JSON"}) + apiErr := util.CodeToAPIError(http.StatusBadRequest, err.Error()) + c.JSON(http.StatusBadRequest, apiErr) return } - name := nameRequest.Name - space, err := s.CreateSpace(c.Request.Context(), name) + space, err := s.CreateSpace(c.Request.Context(), nameRequest.Name) code := util.MapErrorCode(err, util.ErrToCode(ErrFailedCreateSpace, http.StatusInternalServerError), ) From f869fbf7b770ce5ebff2f0a453ae68371448e3c3 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Fri, 3 Jan 2025 19:15:01 +0100 Subject: [PATCH 100/279] GO-4459: Add object export endpoint --- cmd/api/docs/docs.go | 77 ++++++++++++++++++++++++++++++++++++ cmd/api/docs/swagger.json | 77 ++++++++++++++++++++++++++++++++++++ cmd/api/docs/swagger.yaml | 51 ++++++++++++++++++++++++ cmd/api/export/handler.go | 59 +++++++++++++++++++++++++++ cmd/api/export/model.go | 9 +++++ cmd/api/export/service.go | 61 ++++++++++++++++++++++++++++ cmd/api/server/middleware.go | 1 + cmd/api/server/router.go | 53 ++++++++++++------------- cmd/api/server/server.go | 3 ++ cmd/api/space/service.go | 1 + 10 files changed, 365 insertions(+), 27 deletions(-) create mode 100644 cmd/api/export/handler.go create mode 100644 cmd/api/export/model.go create mode 100644 cmd/api/export/service.go diff --git a/cmd/api/docs/docs.go b/cmd/api/docs/docs.go index 400a4b48c..cd9f1472e 100644 --- a/cmd/api/docs/docs.go +++ b/cmd/api/docs/docs.go @@ -736,6 +736,75 @@ const docTemplate = `{ } } } + }, + "/spaces/{space_id}/objects/{object_id}/export/{format}": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "exports" + ], + "summary": "Export an object", + "parameters": [ + { + "type": "string", + "description": "Space ID", + "name": "space_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Object ID", + "name": "object_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Export format", + "name": "format", + "in": "query", + "required": true + } + ], + "responses": { + "200": { + "description": "Object exported successfully", + "schema": { + "$ref": "#/definitions/export.ObjectExportResponse" + } + }, + "400": { + "description": "Bad request", + "schema": { + "$ref": "#/definitions/util.ValidationError" + } + }, + "403": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/util.UnauthorizedError" + } + }, + "404": { + "description": "Resource not found", + "schema": { + "$ref": "#/definitions/util.NotFoundError" + } + }, + "502": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/util.ServerError" + } + } + } + } } }, "definitions": { @@ -761,6 +830,14 @@ const docTemplate = `{ } } }, + "export.ObjectExportResponse": { + "type": "object", + "properties": { + "path": { + "type": "string" + } + } + }, "object.Block": { "type": "object", "properties": { diff --git a/cmd/api/docs/swagger.json b/cmd/api/docs/swagger.json index 22c0d4d92..ba80c68c3 100644 --- a/cmd/api/docs/swagger.json +++ b/cmd/api/docs/swagger.json @@ -730,6 +730,75 @@ } } } + }, + "/spaces/{space_id}/objects/{object_id}/export/{format}": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "exports" + ], + "summary": "Export an object", + "parameters": [ + { + "type": "string", + "description": "Space ID", + "name": "space_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Object ID", + "name": "object_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Export format", + "name": "format", + "in": "query", + "required": true + } + ], + "responses": { + "200": { + "description": "Object exported successfully", + "schema": { + "$ref": "#/definitions/export.ObjectExportResponse" + } + }, + "400": { + "description": "Bad request", + "schema": { + "$ref": "#/definitions/util.ValidationError" + } + }, + "403": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/util.UnauthorizedError" + } + }, + "404": { + "description": "Resource not found", + "schema": { + "$ref": "#/definitions/util.NotFoundError" + } + }, + "502": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/util.ServerError" + } + } + } + } } }, "definitions": { @@ -755,6 +824,14 @@ } } }, + "export.ObjectExportResponse": { + "type": "object", + "properties": { + "path": { + "type": "string" + } + } + }, "object.Block": { "type": "object", "properties": { diff --git a/cmd/api/docs/swagger.yaml b/cmd/api/docs/swagger.yaml index 63fa856a0..a6653423b 100644 --- a/cmd/api/docs/swagger.yaml +++ b/cmd/api/docs/swagger.yaml @@ -15,6 +15,11 @@ definitions: example: "" type: string type: object + export.ObjectExportResponse: + properties: + path: + type: string + type: object object.Block: properties: align: @@ -803,6 +808,52 @@ paths: summary: Update an existing object in a specific space tags: - space_objects + /spaces/{space_id}/objects/{object_id}/export/{format}: + post: + consumes: + - application/json + parameters: + - description: Space ID + in: path + name: space_id + required: true + type: string + - description: Object ID + in: path + name: object_id + required: true + type: string + - description: Export format + in: query + name: format + required: true + type: string + produces: + - application/json + responses: + "200": + description: Object exported successfully + schema: + $ref: '#/definitions/export.ObjectExportResponse' + "400": + description: Bad request + schema: + $ref: '#/definitions/util.ValidationError' + "403": + description: Unauthorized + schema: + $ref: '#/definitions/util.UnauthorizedError' + "404": + description: Resource not found + schema: + $ref: '#/definitions/util.NotFoundError' + "502": + description: Internal server error + schema: + $ref: '#/definitions/util.ServerError' + summary: Export an object + tags: + - exports securityDefinitions: BasicAuth: type: basic diff --git a/cmd/api/export/handler.go b/cmd/api/export/handler.go new file mode 100644 index 000000000..27cce4fc7 --- /dev/null +++ b/cmd/api/export/handler.go @@ -0,0 +1,59 @@ +package export + +import ( + "net/http" + + "github.com/gin-gonic/gin" + + "github.com/anyproto/anytype-heart/cmd/api/util" +) + +// GetObjectExportHandler exports an object to the specified format +// +// @Summary Export an object +// @Tags exports +// @Accept json +// @Produce json +// @Param space_id path string true "Space ID" +// @Param object_id path string true "Object ID" +// @Param format query string true "Export format" +// @Success 200 {object} ObjectExportResponse "Object exported successfully" +// @Failure 400 {object} util.ValidationError "Bad request" +// @Failure 403 {object} util.UnauthorizedError "Unauthorized" +// @Failure 404 {object} util.NotFoundError "Resource not found" +// @Failure 502 {object} util.ServerError "Internal server error" +// @Router /spaces/{space_id}/objects/{object_id}/export/{format} [post] +func GetObjectExportHandler(s *ExportService) gin.HandlerFunc { + return func(c *gin.Context) { + spaceId := c.Param("space_id") + objectId := c.Param("object_id") + format := c.Query("format") + + objectAsRequest := ObjectExportRequest{} + if err := c.ShouldBindJSON(&objectAsRequest); err != nil { + apiErr := util.CodeToAPIError(http.StatusBadRequest, ErrBadInput.Error()) + c.JSON(http.StatusBadRequest, apiErr) + return + } + + outputPath, err := s.GetObjectExport(c.Request.Context(), spaceId, objectId, format, objectAsRequest.Path) + code := util.MapErrorCode(err, util.ErrToCode(ErrFailedExportObjectAsMarkdown, http.StatusInternalServerError)) + + if code != http.StatusOK { + apiErr := util.CodeToAPIError(code, err.Error()) + c.JSON(code, apiErr) + return + } + + c.JSON(http.StatusOK, ObjectExportResponse{Path: outputPath}) + } +} + +func GetSpaceExportHandler(s *ExportService) gin.HandlerFunc { + return func(c *gin.Context) { + // spaceId := c.Param("space_id") + // format := c.Query("format") + + c.JSON(http.StatusNotImplemented, "Not implemented") + } +} diff --git a/cmd/api/export/model.go b/cmd/api/export/model.go new file mode 100644 index 000000000..f4f464d10 --- /dev/null +++ b/cmd/api/export/model.go @@ -0,0 +1,9 @@ +package export + +type ObjectExportRequest struct { + Path string `json:"path"` +} + +type ObjectExportResponse struct { + Path string `json:"path"` +} diff --git a/cmd/api/export/service.go b/cmd/api/export/service.go new file mode 100644 index 000000000..066c63a4f --- /dev/null +++ b/cmd/api/export/service.go @@ -0,0 +1,61 @@ +package export + +import ( + "context" + "errors" + + "github.com/anyproto/anytype-heart/pb" + "github.com/anyproto/anytype-heart/pb/service" + "github.com/anyproto/anytype-heart/pkg/lib/pb/model" +) + +var ( + ErrFailedExportObjectAsMarkdown = errors.New("failed to export object as markdown") + ErrBadInput = errors.New("bad input") +) + +type Service interface { + GetObjectExport(ctx context.Context, spaceId string, objectId string, format string, path string) (string, error) +} + +type ExportService struct { + mw service.ClientCommandsServer + AccountInfo *model.AccountInfo +} + +func NewService(mw service.ClientCommandsServer) *ExportService { + return &ExportService{mw: mw} +} + +// GetObjectExport retrieves an object from a space and exports it as a specific format. +func (s *ExportService) GetObjectExport(ctx context.Context, spaceId string, objectId string, format string, path string) (string, error) { + resp := s.mw.ObjectListExport(ctx, &pb.RpcObjectListExportRequest{ + SpaceId: spaceId, + Path: path, + ObjectIds: []string{objectId}, + Format: s.mapStringToFormat(format), + Zip: false, + IncludeNested: false, + IncludeFiles: true, + IsJson: false, + IncludeArchived: false, + }) + + if resp.Error.Code != pb.RpcObjectListExportResponseError_NULL { + return "", ErrFailedExportObjectAsMarkdown + } + + return resp.Path, nil +} + +// mapStringToFormat maps a format string to an ExportFormat enum. +func (s *ExportService) mapStringToFormat(format string) model.ExportFormat { + switch format { + case "markdown": + return model.Export_Markdown + case "protobuf": + return model.Export_Protobuf + default: + return model.Export_Markdown + } +} diff --git a/cmd/api/server/middleware.go b/cmd/api/server/middleware.go index 362f5b298..6cefcd012 100644 --- a/cmd/api/server/middleware.go +++ b/cmd/api/server/middleware.go @@ -26,6 +26,7 @@ func (s *Server) initAccountInfo() gin.HandlerFunc { return } + s.exportService.AccountInfo = accInfo s.objectService.AccountInfo = accInfo s.spaceService.AccountInfo = accInfo s.searchService.AccountInfo = accInfo diff --git a/cmd/api/server/router.go b/cmd/api/server/router.go index b5338ea28..ec04196fc 100644 --- a/cmd/api/server/router.go +++ b/cmd/api/server/router.go @@ -7,6 +7,7 @@ import ( "github.com/webstradev/gin-pagination/v2/pkg/pagination" "github.com/anyproto/anytype-heart/cmd/api/auth" + "github.com/anyproto/anytype-heart/cmd/api/export" "github.com/anyproto/anytype-heart/cmd/api/object" "github.com/anyproto/anytype-heart/cmd/api/search" "github.com/anyproto/anytype-heart/cmd/api/space" @@ -15,7 +16,6 @@ import ( // NewRouter builds and returns a *gin.Engine with all routes configured. func (s *Server) NewRouter() *gin.Engine { router := gin.Default() - router.Use(s.initAccountInfo()) // Pagination middleware setup paginator := pagination.New( @@ -30,35 +30,34 @@ func (s *Server) NewRouter() *gin.Engine { // Swagger route router.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) - // Auth - authRouter := router.Group("/v1/auth") + // API routes + v1 := router.Group("/v1") + v1.Use(s.initAccountInfo()) + v1.Use(s.ensureAuthenticated()) { - authRouter.POST("/displayCode", auth.DisplayCodeHandler(s.authService)) - authRouter.GET("/token", auth.TokenHandler(s.authService)) - } + // Auth + v1.POST("/auth/display_code", auth.DisplayCodeHandler(s.authService)) + v1.GET("/auth/token", auth.TokenHandler(s.authService)) - // Read-only group - readOnly := router.Group("/v1") - // readOnly.Use(a.AuthMiddleware()) - // readOnly.Use(a.PermissionMiddleware("read-only")) - { - readOnly.GET("/spaces", paginator, space.GetSpacesHandler(s.spaceService)) - readOnly.GET("/spaces/:space_id/members", paginator, space.GetMembersHandler(s.spaceService)) - readOnly.GET("/spaces/:space_id/objects", paginator, object.GetObjectsHandler(s.objectService)) - readOnly.GET("/spaces/:space_id/objects/:object_id", object.GetObjectHandler(s.objectService)) - readOnly.GET("/spaces/:space_id/objectTypes", paginator, object.GetTypesHandler(s.objectService)) - readOnly.GET("/spaces/:space_id/objectTypes/:typeId/templates", paginator, object.GetTemplatesHandler(s.objectService)) - readOnly.GET("/search", paginator, search.SearchHandler(s.searchService)) - } + // Export + v1.POST("/spaces/:space_id/objects/:object_id/export/:format", export.GetObjectExportHandler(s.exportService)) + v1.GET("/spaces/:space_id/objects/export/:format", export.GetSpaceExportHandler(s.exportService)) - // Read-write group - readWrite := router.Group("/v1") - // readWrite.Use(a.AuthMiddleware()) - // readWrite.Use(a.PermissionMiddleware("read-write")) - { - readWrite.POST("/spaces", space.CreateSpaceHandler(s.spaceService)) - readWrite.POST("/spaces/:space_id/objects", object.CreateObjectHandler(s.objectService)) - readWrite.PUT("/spaces/:space_id/objects/:object_id", object.UpdateObjectHandler(s.objectService)) + // Object + v1.GET("/spaces/:space_id/objects", paginator, object.GetObjectsHandler(s.objectService)) + v1.GET("/spaces/:space_id/objects/:object_id", object.GetObjectHandler(s.objectService)) + v1.GET("/spaces/:space_id/object_types", paginator, object.GetTypesHandler(s.objectService)) + v1.GET("/spaces/:space_id/object_types/:typeId/templates", paginator, object.GetTemplatesHandler(s.objectService)) + v1.POST("/spaces/:space_id/objects", object.CreateObjectHandler(s.objectService)) + v1.PUT("/spaces/:space_id/objects/:object_id", object.UpdateObjectHandler(s.objectService)) + + // Search + v1.GET("/search", paginator, search.SearchHandler(s.searchService)) + + // Space + v1.GET("/spaces", paginator, space.GetSpacesHandler(s.spaceService)) + v1.GET("/spaces/:space_id/members", paginator, space.GetMembersHandler(s.spaceService)) + v1.POST("/spaces", space.CreateSpaceHandler(s.spaceService)) } return router diff --git a/cmd/api/server/server.go b/cmd/api/server/server.go index 183fa0f64..3441e2965 100644 --- a/cmd/api/server/server.go +++ b/cmd/api/server/server.go @@ -9,6 +9,7 @@ import ( "github.com/gin-gonic/gin" "github.com/anyproto/anytype-heart/cmd/api/auth" + "github.com/anyproto/anytype-heart/cmd/api/export" "github.com/anyproto/anytype-heart/cmd/api/object" "github.com/anyproto/anytype-heart/cmd/api/search" "github.com/anyproto/anytype-heart/cmd/api/space" @@ -28,6 +29,7 @@ type Server struct { mwInternal core.MiddlewareInternal authService *auth.AuthService + exportService *export.ExportService objectService *object.ObjectService spaceService *space.SpaceService searchService *search.SearchService @@ -38,6 +40,7 @@ func NewServer(mw service.ClientCommandsServer, mwInternal core.MiddlewareIntern s := &Server{ mwInternal: mwInternal, authService: auth.NewService(mw), + exportService: export.NewService(mw), objectService: object.NewService(mw), spaceService: space.NewService(mw), } diff --git a/cmd/api/space/service.go b/cmd/api/space/service.go index 492ec26f0..2e47c15d2 100644 --- a/cmd/api/space/service.go +++ b/cmd/api/space/service.go @@ -23,6 +23,7 @@ var ( ErrFailedOpenWorkspace = errors.New("failed to open workspace") ErrFailedGenerateRandomIcon = errors.New("failed to generate random icon") ErrFailedCreateSpace = errors.New("failed to create space") + ErrBadInput = errors.New("bad input") ErrNoMembersFound = errors.New("no members found") ErrFailedListMembers = errors.New("failed to retrieve list of members") ) From 89ef08e34c0e4e589584011630bbee1c2e3cecc8 Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Sat, 4 Jan 2025 15:30:34 +0100 Subject: [PATCH 101/279] GO-4146 Update any-sync --- go.mod | 4 ++-- go.sum | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index ac321d665..40d23d8b0 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( github.com/VividCortex/ewma v1.2.0 github.com/adrium/goheif v0.0.0-20230113233934-ca402e77a786 github.com/anyproto/any-store v0.1.4-0.20241211133419-d0c2df992842 - github.com/anyproto/any-sync v0.6.0-alpha.1.0.20241224143141-033d6a39e992 + github.com/anyproto/any-sync v0.6.0-alpha.1.0.20250104142651-b103f553e562 github.com/anyproto/go-chash v0.1.0 github.com/anyproto/go-naturaldate/v2 v2.0.2-0.20230524105841-9829cfd13438 github.com/anyproto/go-slip10 v1.0.0 @@ -287,4 +287,4 @@ replace github.com/gogo/protobuf => github.com/anyproto/protobuf v1.3.3-0.202402 replace google.golang.org/genproto/googleapis/rpc => google.golang.org/genproto/googleapis/rpc v0.0.0-20241021214115-324edc3d5d38 -replace github.com/anyproto/any-sync => ../any-sync +//replace github.com/anyproto/any-sync => ../any-sync diff --git a/go.sum b/go.sum index aae998b7c..180eae680 100644 --- a/go.sum +++ b/go.sum @@ -78,6 +78,8 @@ github.com/andybalholm/cascadia v1.3.2 h1:3Xi6Dw5lHF15JtdcmAHD3i1+T8plmv7BQ/nsVi github.com/andybalholm/cascadia v1.3.2/go.mod h1:7gtRlve5FxPPgIgX36uWBX58OdBsSS6lUvCFb+h7KvU= github.com/anyproto/any-store v0.1.4-0.20241211133419-d0c2df992842 h1:2hJRYJ4+AjOSiy3Sf84XyU/ki8zE/+Tp6IdhqZZHBaY= github.com/anyproto/any-store v0.1.4-0.20241211133419-d0c2df992842/go.mod h1:6/0OUKgSMWF/vYGoGYzQOl2CII5OdiuXbQlGDXYcNYc= +github.com/anyproto/any-sync v0.6.0-alpha.1.0.20250104142651-b103f553e562 h1:j5E8n8AdgxvEncBz49d0dx2PcmqHbeN5ws5UonF0NFQ= +github.com/anyproto/any-sync v0.6.0-alpha.1.0.20250104142651-b103f553e562/go.mod h1:Mw8DVuLGNKk2ffEFdJT2AX40ZEv5FzYoVGe8Va0Z7mw= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580 h1:Ba80IlCCxkZ9H1GF+7vFu/TSpPvbpDCxXJ5ogc4euYc= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580/go.mod h1:T/uWAYxrXdaXw64ihI++9RMbKTCpKd/yE9+saARew7k= github.com/anyproto/go-chash v0.1.0 h1:I9meTPjXFRfXZHRJzjOHC/XF7Q5vzysKkiT/grsogXY= From e6c264fe63c84e015683a596fcb88292b768de33 Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Sat, 4 Jan 2025 16:24:31 +0100 Subject: [PATCH 102/279] GO-4146 Get deleted tree ids logic --- core/indexer/reindex.go | 9 +++------ go.mod | 4 +--- go.sum | 4 ++-- space/spacecore/storage/anystorage/clientstorage.go | 10 ++++++++++ 4 files changed, 16 insertions(+), 11 deletions(-) diff --git a/core/indexer/reindex.go b/core/indexer/reindex.go index 5e129a01b..c68bc3e12 100644 --- a/core/indexer/reindex.go +++ b/core/indexer/reindex.go @@ -50,7 +50,7 @@ const ( ) type allDeletedIdsProvider interface { - AllDeletedTreeIds() (ids []string, err error) + AllDeletedTreeIds(ctx context.Context) (ids []string, err error) } func (i *indexer) buildFlags(spaceID string) (reindexFlags, error) { @@ -235,14 +235,11 @@ func (i *indexer) addSyncDetails(space clientspace.Space) { func (i *indexer) reindexDeletedObjects(space clientspace.Space) error { store := i.store.SpaceIndex(space.Id()) - storage, ok := space.Storage().(allDeletedIdsProvider) - if !ok { - return fmt.Errorf("space storage doesn't implement allDeletedIdsProvider") - } - allIds, err := storage.AllDeletedTreeIds() + allIds, err := space.Storage().AllDeletedTreeIds(i.runCtx) if err != nil { return fmt.Errorf("get deleted tree ids: %w", err) } + fmt.Println("[x]: deletedIds", len(allIds)) for _, objectId := range allIds { err = store.DeleteObject(objectId) if err != nil { diff --git a/go.mod b/go.mod index 40d23d8b0..a6d76753f 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( github.com/VividCortex/ewma v1.2.0 github.com/adrium/goheif v0.0.0-20230113233934-ca402e77a786 github.com/anyproto/any-store v0.1.4-0.20241211133419-d0c2df992842 - github.com/anyproto/any-sync v0.6.0-alpha.1.0.20250104142651-b103f553e562 + github.com/anyproto/any-sync v0.6.0-alpha.2 github.com/anyproto/go-chash v0.1.0 github.com/anyproto/go-naturaldate/v2 v2.0.2-0.20230524105841-9829cfd13438 github.com/anyproto/go-slip10 v1.0.0 @@ -286,5 +286,3 @@ replace github.com/multiformats/go-multiaddr => github.com/anyproto/go-multiaddr replace github.com/gogo/protobuf => github.com/anyproto/protobuf v1.3.3-0.20240201225420-6e325cf0ac38 replace google.golang.org/genproto/googleapis/rpc => google.golang.org/genproto/googleapis/rpc v0.0.0-20241021214115-324edc3d5d38 - -//replace github.com/anyproto/any-sync => ../any-sync diff --git a/go.sum b/go.sum index 180eae680..27b24b188 100644 --- a/go.sum +++ b/go.sum @@ -78,8 +78,8 @@ github.com/andybalholm/cascadia v1.3.2 h1:3Xi6Dw5lHF15JtdcmAHD3i1+T8plmv7BQ/nsVi github.com/andybalholm/cascadia v1.3.2/go.mod h1:7gtRlve5FxPPgIgX36uWBX58OdBsSS6lUvCFb+h7KvU= github.com/anyproto/any-store v0.1.4-0.20241211133419-d0c2df992842 h1:2hJRYJ4+AjOSiy3Sf84XyU/ki8zE/+Tp6IdhqZZHBaY= github.com/anyproto/any-store v0.1.4-0.20241211133419-d0c2df992842/go.mod h1:6/0OUKgSMWF/vYGoGYzQOl2CII5OdiuXbQlGDXYcNYc= -github.com/anyproto/any-sync v0.6.0-alpha.1.0.20250104142651-b103f553e562 h1:j5E8n8AdgxvEncBz49d0dx2PcmqHbeN5ws5UonF0NFQ= -github.com/anyproto/any-sync v0.6.0-alpha.1.0.20250104142651-b103f553e562/go.mod h1:Mw8DVuLGNKk2ffEFdJT2AX40ZEv5FzYoVGe8Va0Z7mw= +github.com/anyproto/any-sync v0.6.0-alpha.2 h1:aHKwquH6cIeBCqCK7/17ZqhJ9qcfosH/BePFNAy8cvA= +github.com/anyproto/any-sync v0.6.0-alpha.2/go.mod h1:Mw8DVuLGNKk2ffEFdJT2AX40ZEv5FzYoVGe8Va0Z7mw= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580 h1:Ba80IlCCxkZ9H1GF+7vFu/TSpPvbpDCxXJ5ogc4euYc= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580/go.mod h1:T/uWAYxrXdaXw64ihI++9RMbKTCpKd/yE9+saARew7k= github.com/anyproto/go-chash v0.1.0 h1:I9meTPjXFRfXZHRJzjOHC/XF7Q5vzysKkiT/grsogXY= diff --git a/space/spacecore/storage/anystorage/clientstorage.go b/space/spacecore/storage/anystorage/clientstorage.go index 5c1acc309..c857eb425 100644 --- a/space/spacecore/storage/anystorage/clientstorage.go +++ b/space/spacecore/storage/anystorage/clientstorage.go @@ -7,6 +7,7 @@ import ( anystore "github.com/anyproto/any-store" "github.com/anyproto/any-store/anyenc" "github.com/anyproto/any-store/query" + "github.com/anyproto/any-sync/commonspace/headsync/headstorage" "github.com/anyproto/any-sync/commonspace/object/tree/treechangeproto" "github.com/anyproto/any-sync/commonspace/spacestorage" ) @@ -21,6 +22,7 @@ type ClientSpaceStorage interface { MarkSpaceCreated(ctx context.Context) error IsSpaceCreated(ctx context.Context) (created bool, err error) UnmarkSpaceCreated(ctx context.Context) error + AllDeletedTreeIds(ctx context.Context) (ids []string, err error) } var _ ClientSpaceStorage = (*clientStorage)(nil) @@ -40,6 +42,14 @@ type clientStorage struct { arena *anyenc.Arena } +func (r *clientStorage) AllDeletedTreeIds(ctx context.Context) (ids []string, err error) { + err = r.SpaceStorage.HeadStorage().IterateEntries(ctx, headstorage.IterOpts{Deleted: true}, func(entry headstorage.HeadsEntry) (bool, error) { + ids = append(ids, entry.Id) + return true, nil + }) + return +} + func newClientStorage(ctx context.Context, cont *storageContainer, spaceStorage spacestorage.SpaceStorage) (*clientStorage, error) { storage := &clientStorage{ SpaceStorage: spaceStorage, From 47acefc70408b04adc847217fd0bddf26b6453c1 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Sat, 4 Jan 2025 17:10:13 +0100 Subject: [PATCH 103/279] GO-4459: Return object layout and unify GetObject usage --- cmd/api/demo/api_demo.go | 15 ++++++++------- cmd/api/docs/docs.go | 4 ++++ cmd/api/docs/swagger.json | 4 ++++ cmd/api/docs/swagger.yaml | 3 +++ cmd/api/object/model.go | 1 + cmd/api/object/service.go | 35 +++------------------------------- cmd/api/object/service_test.go | 2 +- cmd/api/search/service.go | 25 +++--------------------- cmd/api/search/service_test.go | 16 ++++++++-------- 9 files changed, 35 insertions(+), 70 deletions(-) diff --git a/cmd/api/demo/api_demo.go b/cmd/api/demo/api_demo.go index a46afa670..1848c06a3 100644 --- a/cmd/api/demo/api_demo.go +++ b/cmd/api/demo/api_demo.go @@ -55,23 +55,24 @@ func main() { // {"POST", "/auth/displayCode", nil, nil}, // {"GET", "/auth/token?challengeId={challengeId}&code={code}", map[string]interface{}{"challengeId": "6738dfc5cda913aad90e8c2a", "code": "2931"}, nil}, + // export + // {"GET", "/spaces/{space_id}/objects/{object_id}/export/{format}", map[string]interface{}{"space_id": testSpaceId, "object_id": testObjectId, "format": "markdown"}, nil}, + // spaces // {"POST", "/spaces", nil, map[string]interface{}{"name": "New Space"}}, // {"GET", "/spaces?limit={limit}&offset={offset}", map[string]interface{}{"limit": 100, "offset": 0}, nil}, // {"GET", "/spaces/{space_id}/members?limit={limit}&offset={offset}", map[string]interface{}{"space_id": testSpaceId, "limit": 100, "offset": 0}, nil}, - // space_objects + // objects // {"GET", "/spaces/{space_id}/objects?limit={limit}&offset={offset}", map[string]interface{}{"space_id": testSpaceId, "limit": 100, "offset": 0}, nil}, // {"GET", "/spaces/{space_id}/objects/{object_id}", map[string]interface{}{"space_id": testSpaceId, "object_id": testObjectId}, nil}, - // {"POST", "/spaces/{space_id}/objects", map[string]interface{}{"space_id": testSpaceId}, map[string]interface{}{"name": "New Object from demo", "icon_emoji": "💥", "template_id": "", "object_type_unique_key": "ot-page", "with_chat": false}}, + // {"POST", "/spaces/{space_id}/objects", map[string]interface{}{"space_id": testSpaceId}, map[string]interface{}{"name": "New Object from demo", "icon": "💥", "template_id": "", "object_type_unique_key": "ot-page", "with_chat": false}}, // {"PUT", "/spaces/{space_id}/objects/{object_id}", map[string]interface{}{"space_id": testSpaceId, "object_id": testObjectId}, map[string]interface{}{"name": "Updated Object"}}, - - // types_and_templates - // {"GET", "/spaces/{space_id}/objectTypes?limit={limit}&offset={offset}", map[string]interface{}{"space_id": testSpaceId, "limit": 100, "offset": 0}, nil}, - // {"GET", "/spaces/{space_id}/objectTypes/{type_id}/templates?limit={limit}&offset={offset}", map[string]interface{}{"space_id": testSpaceId, "type_id": testTypeId, "limit": 100, "offset": 0}, nil}, + // {"GET", "/spaces/{space_id}/object_types?limit={limit}&offset={offset}", map[string]interface{}{"space_id": testSpaceId, "limit": 100, "offset": 0}, nil}, + // {"GET", "/spaces/{space_id}/object_types/{type_id}/templates?limit={limit}&offset={offset}", map[string]interface{}{"space_id": testSpaceId, "type_id": testTypeId, "limit": 100, "offset": 0}, nil}, // search - // {"GET", "/search?query={query}&object_type={object_type}&limit={limit}&offset={offset}", map[string]interface{}{"query": "Tag", "object_type": testTypeId, "limit": 100, "offset": 0}, nil}, + // {"GET", "/search?query={query}&object_types={object_types}&limit={limit}&offset={offset}", map[string]interface{}{"query": "new", "object_types": "", "limit": 100, "offset": 0}, nil}, } for _, ep := range endpoints { diff --git a/cmd/api/docs/docs.go b/cmd/api/docs/docs.go index cd9f1472e..3f9f3d61b 100644 --- a/cmd/api/docs/docs.go +++ b/cmd/api/docs/docs.go @@ -942,6 +942,10 @@ const docTemplate = `{ "type": "string", "example": "bafyreie6n5l5nkbjal37su54cha4coy7qzuhrnajluzv5qd5jvtsrxkequ" }, + "layout": { + "type": "string", + "example": "basic" + }, "name": { "type": "string", "example": "Object Name" diff --git a/cmd/api/docs/swagger.json b/cmd/api/docs/swagger.json index ba80c68c3..1f9fcf0d5 100644 --- a/cmd/api/docs/swagger.json +++ b/cmd/api/docs/swagger.json @@ -936,6 +936,10 @@ "type": "string", "example": "bafyreie6n5l5nkbjal37su54cha4coy7qzuhrnajluzv5qd5jvtsrxkequ" }, + "layout": { + "type": "string", + "example": "basic" + }, "name": { "type": "string", "example": "Object Name" diff --git a/cmd/api/docs/swagger.yaml b/cmd/api/docs/swagger.yaml index a6653423b..5431da43f 100644 --- a/cmd/api/docs/swagger.yaml +++ b/cmd/api/docs/swagger.yaml @@ -89,6 +89,9 @@ definitions: id: example: bafyreie6n5l5nkbjal37su54cha4coy7qzuhrnajluzv5qd5jvtsrxkequ type: string + layout: + example: basic + type: string name: example: Object Name type: string diff --git a/cmd/api/object/model.go b/cmd/api/object/model.go index 96f714a73..ff5387b00 100644 --- a/cmd/api/object/model.go +++ b/cmd/api/object/model.go @@ -29,6 +29,7 @@ type Object struct { Id string `json:"id" example:"bafyreie6n5l5nkbjal37su54cha4coy7qzuhrnajluzv5qd5jvtsrxkequ"` Name string `json:"name" example:"Object Name"` Icon string `json:"icon" example:"📄"` + Layout string `json:"layout" example:"basic"` ObjectType string `json:"object_type" example:"Page"` SpaceId string `json:"space_id" example:"bafyreigyfkt6rbv24sbv5aq2hko3bhmv5xxlf22b4bypdu6j7hnphm3psq.23me69r569oi1"` RootId string `json:"root_id"` diff --git a/cmd/api/object/service.go b/cmd/api/object/service.go index d7a494f4d..4dc1e9a2b 100644 --- a/cmd/api/object/service.go +++ b/cmd/api/object/service.go @@ -82,7 +82,7 @@ func (s *ObjectService) ListObjects(ctx context.Context, spaceId string, offset Offset: 0, Limit: 0, ObjectTypeFilter: []string{}, - Keys: []string{"id", "name", "type", "layout", "iconEmoji", "iconImage"}, + Keys: []string{"id", "name"}, }) if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { @@ -103,9 +103,6 @@ func (s *ObjectService) ListObjects(ctx context.Context, spaceId string, offset return nil, 0, false, err } - // TODO: layout is not correctly returned in ObjectShow; therefore we need to resolve it here - object.Type = model.ObjectTypeLayout_name[int32(record.Fields["layout"].GetNumberValue())] - objects = append(objects, object) } return objects, total, hasMore, nil @@ -137,6 +134,7 @@ func (s *ObjectService) GetObject(ctx context.Context, spaceId string, objectId Id: resp.ObjectView.Details[0].Details.Fields["id"].GetStringValue(), Name: resp.ObjectView.Details[0].Details.Fields["name"].GetStringValue(), Icon: icon, + Layout: model.ObjectTypeLayout_name[int32(resp.ObjectView.Details[0].Details.Fields["layout"].GetNumberValue())], ObjectType: objectTypeName, SpaceId: resp.ObjectView.Details[0].Details.Fields["spaceId"].GetStringValue(), RootId: resp.ObjectView.RootId, @@ -166,34 +164,7 @@ func (s *ObjectService) CreateObject(ctx context.Context, spaceId string, reques return Object{}, ErrFailedCreateObject } - objShowResp := s.mw.ObjectShow(ctx, &pb.RpcObjectShowRequest{ - SpaceId: spaceId, - ObjectId: resp.ObjectId, - }) - - if objShowResp.Error.Code != pb.RpcObjectShowResponseError_NULL { - return Object{}, ErrFailedRetrieveObject - } - - icon2 := util.GetIconFromEmojiOrImage(s.AccountInfo, objShowResp.ObjectView.Details[0].Details.Fields["iconEmoji"].GetStringValue(), objShowResp.ObjectView.Details[0].Details.Fields["iconImage"].GetStringValue()) - objectTypeName, err := util.ResolveTypeToName(s.mw, spaceId, objShowResp.ObjectView.Details[0].Details.Fields["type"].GetStringValue()) - if err != nil { - return Object{}, err - } - - object := Object{ - Type: "object", - Id: resp.ObjectId, - Name: objShowResp.ObjectView.Details[0].Details.Fields["name"].GetStringValue(), - Icon: icon2, - ObjectType: objectTypeName, - SpaceId: objShowResp.ObjectView.Details[0].Details.Fields["spaceId"].GetStringValue(), - RootId: objShowResp.ObjectView.RootId, - Blocks: s.GetBlocks(objShowResp), - Details: s.GetDetails(objShowResp), - } - - return object, nil + return s.GetObject(ctx, spaceId, resp.ObjectId) } // UpdateObject updates an existing object in a specific space. diff --git a/cmd/api/object/service_test.go b/cmd/api/object/service_test.go index 96cd526dc..8ce672413 100644 --- a/cmd/api/object/service_test.go +++ b/cmd/api/object/service_test.go @@ -79,7 +79,7 @@ func TestObjectService_ListObjects(t *testing.T) { Offset: 0, Limit: 0, ObjectTypeFilter: []string{}, - Keys: []string{"id", "name", "type", "layout", "iconEmoji", "iconImage"}, + Keys: []string{"id", "name"}, }).Return(&pb.RpcObjectSearchResponse{ Records: []*types.Struct{ { diff --git a/cmd/api/search/service.go b/cmd/api/search/service.go index d438a87a6..09aea44f9 100644 --- a/cmd/api/search/service.go +++ b/cmd/api/search/service.go @@ -9,7 +9,6 @@ import ( "github.com/anyproto/anytype-heart/cmd/api/object" "github.com/anyproto/anytype-heart/cmd/api/pagination" "github.com/anyproto/anytype-heart/cmd/api/space" - "github.com/anyproto/anytype-heart/cmd/api/util" "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/pb/service" "github.com/anyproto/anytype-heart/pkg/lib/bundle" @@ -62,7 +61,7 @@ func (s *SearchService) Search(ctx context.Context, searchQuery string, objectTy IncludeTime: true, EmptyPlacement: model.BlockContentDataviewSort_NotSpecified, }}, - Keys: []string{"id", "name", "type", "snippet", "layout", "iconEmoji", "iconImage"}, + Keys: []string{"id", "name"}, // TODO split limit between spaces // Limit: paginationLimitPerSpace, // FullText: searchTerm, @@ -77,29 +76,11 @@ func (s *SearchService) Search(ctx context.Context, searchQuery string, objectTy } for _, record := range objResp.Records { - icon := util.GetIconFromEmojiOrImage(s.AccountInfo, record.Fields["iconEmoji"].GetStringValue(), record.Fields["iconImage"].GetStringValue()) - objectTypeName, err := util.ResolveTypeToName(s.mw, spaceId, record.Fields["type"].GetStringValue()) + object, err := s.objectService.GetObject(ctx, spaceId, record.Fields["id"].GetStringValue()) if err != nil { return nil, 0, false, err } - - showResp := s.mw.ObjectShow(ctx, &pb.RpcObjectShowRequest{ - SpaceId: spaceId, - ObjectId: record.Fields["id"].GetStringValue(), - }) - - // TODO: return snippet for notes? - results = append(results, object.Object{ - Type: model.ObjectTypeLayout_name[int32(record.Fields["layout"].GetNumberValue())], - Id: record.Fields["id"].GetStringValue(), - Name: record.Fields["name"].GetStringValue(), - Icon: icon, - ObjectType: objectTypeName, - SpaceId: spaceId, - RootId: showResp.ObjectView.RootId, - Blocks: s.objectService.GetBlocks(showResp), - Details: s.objectService.GetDetails(showResp), - }) + results = append(results, object) } } diff --git a/cmd/api/search/service_test.go b/cmd/api/search/service_test.go index cf3f06180..bbc795c89 100644 --- a/cmd/api/search/service_test.go +++ b/cmd/api/search/service_test.go @@ -110,12 +110,8 @@ func TestSearchService_Search(t *testing.T) { Records: []*types.Struct{ { Fields: map[string]*types.Value{ - "id": pbtypes.String("obj-global-1"), - "name": pbtypes.String("Global Object"), - "type": pbtypes.String("global-type-id"), - "layout": pbtypes.Float64(float64(model.ObjectType_basic)), - "iconEmoji": pbtypes.String("ðŸŒ"), - "lastModifiedDate": pbtypes.Float64(999999), + "id": pbtypes.String("obj-global-1"), + "name": pbtypes.String("Global Object"), }, }, }, @@ -167,10 +163,13 @@ func TestSearchService_Search(t *testing.T) { Id: "root-123", Details: &types.Struct{ Fields: map[string]*types.Value{ + "id": pbtypes.String("obj-global-1"), "name": pbtypes.String("Global Object"), + "layout": pbtypes.Int64(int64(model.ObjectType_basic)), "iconEmoji": pbtypes.String("ðŸŒ"), "lastModifiedDate": pbtypes.Float64(999999), "createdDate": pbtypes.Float64(888888), + "spaceId": pbtypes.String("space-1"), "tag": pbtypes.StringList([]string{"tag-1", "tag-2"}), }, }, @@ -199,16 +198,17 @@ func TestSearchService_Search(t *testing.T) { }, nil).Once() // when - objects, total, hasMore, err := fx.Search(ctx, "search-term", "", offset, limit) + objects, total, hasMore, err := fx.Search(ctx, "search-term", []string{}, offset, limit) // then require.NoError(t, err) require.Len(t, objects, 1) + require.Equal(t, "object", objects[0].Type) require.Equal(t, "space-1", objects[0].SpaceId) require.Equal(t, "Global Object", objects[0].Name) require.Equal(t, "obj-global-1", objects[0].Id) + require.Equal(t, "basic", objects[0].Layout) require.Equal(t, "ðŸŒ", objects[0].Icon) - require.Equal(t, "basic", objects[0].Type) require.Equal(t, "This is a sample text block", objects[0].Blocks[2].Text.Text) // check details From 4cd1d481ff957b54bdddd1109374949a9be6498b Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Sat, 4 Jan 2025 21:02:16 +0100 Subject: [PATCH 104/279] GO-4459: Add description, body, source to CreateObjectRequest --- cmd/api/object/handler.go | 6 +++ cmd/api/object/model.go | 3 ++ cmd/api/object/service.go | 92 ++++++++++++++++++++++++++++++++++++--- 3 files changed, 94 insertions(+), 7 deletions(-) diff --git a/cmd/api/object/handler.go b/cmd/api/object/handler.go index 0e5867c6a..61515b8c2 100644 --- a/cmd/api/object/handler.go +++ b/cmd/api/object/handler.go @@ -33,6 +33,8 @@ func GetObjectsHandler(s *ObjectService) gin.HandlerFunc { code := util.MapErrorCode(err, util.ErrToCode(ErrorFailedRetrieveObjects, http.StatusInternalServerError), util.ErrToCode(ErrNoObjectsFound, http.StatusNotFound), + util.ErrToCode(ErrObjectNotFound, http.StatusNotFound), + util.ErrToCode(ErrFailedRetrieveObject, http.StatusInternalServerError), ) if code != http.StatusOK { @@ -105,7 +107,11 @@ func CreateObjectHandler(s *ObjectService) gin.HandlerFunc { object, err := s.CreateObject(c.Request.Context(), spaceId, request) code := util.MapErrorCode(err, + util.ErrToCode(ErrInputMissingSource, http.StatusBadRequest), util.ErrToCode(ErrFailedCreateObject, http.StatusInternalServerError), + util.ErrToCode(ErrFailedSetRelationFeatured, http.StatusInternalServerError), + util.ErrToCode(ErrFailedFetchBookmark, http.StatusInternalServerError), + util.ErrToCode(ErrObjectNotFound, http.StatusNotFound), util.ErrToCode(ErrFailedRetrieveObject, http.StatusInternalServerError), ) diff --git a/cmd/api/object/model.go b/cmd/api/object/model.go index ff5387b00..5cb45f5fd 100644 --- a/cmd/api/object/model.go +++ b/cmd/api/object/model.go @@ -7,6 +7,9 @@ type GetObjectResponse struct { type CreateObjectRequest struct { Name string `json:"name"` Icon string `json:"icon"` + Description string `json:"description"` + Body string `json:"body"` + Source string `json:"source"` TemplateId string `json:"template_id"` ObjectTypeUniqueKey string `json:"object_type_unique_key"` WithChat bool `json:"with_chat"` diff --git a/cmd/api/object/service.go b/cmd/api/object/service.go index 4dc1e9a2b..9e8872330 100644 --- a/cmd/api/object/service.go +++ b/cmd/api/object/service.go @@ -21,7 +21,10 @@ var ( ErrorFailedRetrieveObjects = errors.New("failed to retrieve list of objects") ErrNoObjectsFound = errors.New("no objects found") ErrFailedCreateObject = errors.New("failed to create object") - ErrBadInput = errors.New("bad input") + ErrInputMissingSource = errors.New("source is missing for bookmark") + ErrFailedSetRelationFeatured = errors.New("failed to set relation featured") + ErrFailedFetchBookmark = errors.New("failed to fetch bookmark") + ErrFailedPasteBody = errors.New("failed to paste body") ErrNotImplemented = errors.New("not implemented") ErrFailedUpdateObject = errors.New("failed to update object") ErrFailedRetrieveTypes = errors.New("failed to retrieve types") @@ -147,13 +150,21 @@ func (s *ObjectService) GetObject(ctx context.Context, spaceId string, objectId // CreateObject creates a new object in a specific space. func (s *ObjectService) CreateObject(ctx context.Context, spaceId string, request CreateObjectRequest) (Object, error) { - resp := s.mw.ObjectCreate(ctx, &pb.RpcObjectCreateRequest{ - Details: &types.Struct{ - Fields: map[string]*types.Value{ - "name": pbtypes.String(request.Name), - "iconEmoji": pbtypes.String(request.Icon), - }, + if request.ObjectTypeUniqueKey == "ot-bookmark" && request.Source == "" { + return Object{}, ErrInputMissingSource + } + + details := &types.Struct{ + Fields: map[string]*types.Value{ + "name": pbtypes.String(request.Name), + "iconEmoji": pbtypes.String(request.Icon), + "description": pbtypes.String(request.Description), + "source": pbtypes.String(request.Source), }, + } + + resp := s.mw.ObjectCreate(ctx, &pb.RpcObjectCreateRequest{ + Details: details, TemplateId: request.TemplateId, SpaceId: spaceId, ObjectTypeUniqueKey: request.ObjectTypeUniqueKey, @@ -164,6 +175,73 @@ func (s *ObjectService) CreateObject(ctx context.Context, spaceId string, reques return Object{}, ErrFailedCreateObject } + // ObjectRelationAddFeatured if description was set + if request.Description != "" { + relAddFeatResp := s.mw.ObjectRelationAddFeatured(ctx, &pb.RpcObjectRelationAddFeaturedRequest{ + ContextId: resp.ObjectId, + Relations: []string{"description"}, + }) + + if relAddFeatResp.Error.Code != pb.RpcObjectRelationAddFeaturedResponseError_NULL { + object, _ := s.GetObject(ctx, spaceId, resp.ObjectId) + return object, ErrFailedSetRelationFeatured + } + } + + // ObjectBookmarkFetch after creating a bookmark object + if request.ObjectTypeUniqueKey == "ot-bookmark" { + bookmarkResp := s.mw.ObjectBookmarkFetch(ctx, &pb.RpcObjectBookmarkFetchRequest{ + ContextId: resp.ObjectId, + Url: request.Source, + }) + + if bookmarkResp.Error.Code != pb.RpcObjectBookmarkFetchResponseError_NULL { + object, _ := s.GetObject(ctx, spaceId, resp.ObjectId) + return object, ErrFailedFetchBookmark + } + } + + // First call BlockCreate at top, then BlockPaste to paste the body + if request.Body != "" { + blockCreateResp := s.mw.BlockCreate(ctx, &pb.RpcBlockCreateRequest{ + ContextId: resp.ObjectId, + TargetId: "", + Block: &model.Block{ + Id: "", + BackgroundColor: "", + Align: model.Block_AlignLeft, + VerticalAlign: model.Block_VerticalAlignTop, + Content: &model.BlockContentOfText{ + Text: &model.BlockContentText{ + Text: "", + Style: model.BlockContentText_Paragraph, + Checked: false, + Color: "", + IconEmoji: "", + IconImage: "", + }, + }, + }, + Position: model.Block_Bottom, + }) + + if blockCreateResp.Error.Code != pb.RpcBlockCreateResponseError_NULL { + object, _ := s.GetObject(ctx, spaceId, resp.ObjectId) + return object, ErrFailedCreateObject + } + + blockPasteResp := s.mw.BlockPaste(ctx, &pb.RpcBlockPasteRequest{ + ContextId: resp.ObjectId, + FocusedBlockId: blockCreateResp.BlockId, + TextSlot: request.Body, + }) + + if blockPasteResp.Error.Code != pb.RpcBlockPasteResponseError_NULL { + object, _ := s.GetObject(ctx, spaceId, resp.ObjectId) + return object, ErrFailedPasteBody + } + } + return s.GetObject(ctx, spaceId, resp.ObjectId) } From e5440785a6600694d7db7996248093e6521a6819 Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Sun, 5 Jan 2025 17:45:52 +0100 Subject: [PATCH 105/279] GO-4146 Change deletion logic --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index a6d76753f..f6ea92b68 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( github.com/VividCortex/ewma v1.2.0 github.com/adrium/goheif v0.0.0-20230113233934-ca402e77a786 github.com/anyproto/any-store v0.1.4-0.20241211133419-d0c2df992842 - github.com/anyproto/any-sync v0.6.0-alpha.2 + github.com/anyproto/any-sync v0.6.0-alpha.2.0.20250105164333-4f695f86563e github.com/anyproto/go-chash v0.1.0 github.com/anyproto/go-naturaldate/v2 v2.0.2-0.20230524105841-9829cfd13438 github.com/anyproto/go-slip10 v1.0.0 diff --git a/go.sum b/go.sum index 27b24b188..65ea0b102 100644 --- a/go.sum +++ b/go.sum @@ -78,8 +78,8 @@ github.com/andybalholm/cascadia v1.3.2 h1:3Xi6Dw5lHF15JtdcmAHD3i1+T8plmv7BQ/nsVi github.com/andybalholm/cascadia v1.3.2/go.mod h1:7gtRlve5FxPPgIgX36uWBX58OdBsSS6lUvCFb+h7KvU= github.com/anyproto/any-store v0.1.4-0.20241211133419-d0c2df992842 h1:2hJRYJ4+AjOSiy3Sf84XyU/ki8zE/+Tp6IdhqZZHBaY= github.com/anyproto/any-store v0.1.4-0.20241211133419-d0c2df992842/go.mod h1:6/0OUKgSMWF/vYGoGYzQOl2CII5OdiuXbQlGDXYcNYc= -github.com/anyproto/any-sync v0.6.0-alpha.2 h1:aHKwquH6cIeBCqCK7/17ZqhJ9qcfosH/BePFNAy8cvA= -github.com/anyproto/any-sync v0.6.0-alpha.2/go.mod h1:Mw8DVuLGNKk2ffEFdJT2AX40ZEv5FzYoVGe8Va0Z7mw= +github.com/anyproto/any-sync v0.6.0-alpha.2.0.20250105164333-4f695f86563e h1:CMnuQQ2VMNghpu9/m5Vo4A+jb6HLUHQEtfmdkwm7Cfw= +github.com/anyproto/any-sync v0.6.0-alpha.2.0.20250105164333-4f695f86563e/go.mod h1:Mw8DVuLGNKk2ffEFdJT2AX40ZEv5FzYoVGe8Va0Z7mw= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580 h1:Ba80IlCCxkZ9H1GF+7vFu/TSpPvbpDCxXJ5ogc4euYc= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580/go.mod h1:T/uWAYxrXdaXw64ihI++9RMbKTCpKd/yE9+saARew7k= github.com/anyproto/go-chash v0.1.0 h1:I9meTPjXFRfXZHRJzjOHC/XF7Q5vzysKkiT/grsogXY= From 5214bb76cf11e9bbafca26307920c3d1e1de0c74 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Mon, 6 Jan 2025 13:20:44 +0100 Subject: [PATCH 106/279] GO-4459: Fix objectType filters by resolving uniqueKey to actual type's id --- cmd/api/search/service.go | 27 +++++++++++++++++---------- cmd/api/util/util.go | 25 +++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 10 deletions(-) diff --git a/cmd/api/search/service.go b/cmd/api/search/service.go index 09aea44f9..f95363f65 100644 --- a/cmd/api/search/service.go +++ b/cmd/api/search/service.go @@ -9,6 +9,7 @@ import ( "github.com/anyproto/anytype-heart/cmd/api/object" "github.com/anyproto/anytype-heart/cmd/api/pagination" "github.com/anyproto/anytype-heart/cmd/api/space" + "github.com/anyproto/anytype-heart/cmd/api/util" "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/pb/service" "github.com/anyproto/anytype-heart/pkg/lib/bundle" @@ -45,14 +46,15 @@ func (s *SearchService) Search(ctx context.Context, searchQuery string, objectTy baseFilters := s.prepareBaseFilters() queryFilters := s.prepareQueryFilter(searchQuery) - objectTypeFilters := s.prepareObjectTypeFilters(objectTypes) - filters := s.combineFilters(model.BlockContentDataviewFilter_And, baseFilters, queryFilters, objectTypeFilters) results := make([]object.Object, 0) for _, space := range spaces { - spaceId := space.Id + // Resolve object type IDs per space, as they are unique per space + objectTypeFilters := s.prepareObjectTypeFilters(space.Id, objectTypes) + filters := s.combineFilters(model.BlockContentDataviewFilter_And, baseFilters, queryFilters, objectTypeFilters) + objResp := s.mw.ObjectSearch(ctx, &pb.RpcObjectSearchRequest{ - SpaceId: spaceId, + SpaceId: space.Id, Filters: filters, Sorts: []*model.BlockContentDataviewSort{{ RelationKey: bundle.RelationKeyLastModifiedDate.String(), @@ -76,7 +78,7 @@ func (s *SearchService) Search(ctx context.Context, searchQuery string, objectTy } for _, record := range objResp.Records { - object, err := s.objectService.GetObject(ctx, spaceId, record.Fields["id"].GetStringValue()) + object, err := s.objectService.GetObject(ctx, space.Id, record.Fields["id"].GetStringValue()) if err != nil { return nil, 0, false, err } @@ -173,7 +175,7 @@ func (s *SearchService) prepareQueryFilter(searchQuery string) []*model.BlockCon } // prepareObjectTypeFilters combines object type filters with an OR condition. -func (s *SearchService) prepareObjectTypeFilters(objectTypes []string) []*model.BlockContentDataviewFilter { +func (s *SearchService) prepareObjectTypeFilters(spaceId string, objectTypes []string) []*model.BlockContentDataviewFilter { if len(objectTypes) == 0 || objectTypes[0] == "" { return nil } @@ -181,16 +183,21 @@ func (s *SearchService) prepareObjectTypeFilters(objectTypes []string) []*model. // Prepare nested filters for each object type nestedFilters := make([]*model.BlockContentDataviewFilter, len(objectTypes)) for i, objectType := range objectTypes { - relationKey := bundle.RelationKeyType.String() + typeId := objectType + if strings.HasPrefix(objectType, "ot-") { - relationKey = bundle.RelationKeyUniqueKey.String() + var err error + typeId, err = util.ResolveUniqueKeyToTypeId(s.mw, spaceId, objectType) + if err != nil { + continue + } } nestedFilters[i] = &model.BlockContentDataviewFilter{ Operator: model.BlockContentDataviewFilter_No, - RelationKey: relationKey, + RelationKey: bundle.RelationKeyType.String(), Condition: model.BlockContentDataviewFilter_Equal, - Value: pbtypes.String(objectType), + Value: pbtypes.String(typeId), } } diff --git a/cmd/api/util/util.go b/cmd/api/util/util.go index 38c75fe34..7d467674b 100644 --- a/cmd/api/util/util.go +++ b/cmd/api/util/util.go @@ -71,3 +71,28 @@ func ResolveTypeToName(mw service.ClientCommandsServer, spaceId string, typeId s return resp.Records[0].Fields["name"].GetStringValue(), nil } + +func ResolveUniqueKeyToTypeId(mw service.ClientCommandsServer, spaceId string, uniqueKey string) (typeId string, err error) { + // Call ObjectSearch for type with unique key and return the type's ID + resp := mw.ObjectSearch(context.Background(), &pb.RpcObjectSearchRequest{ + SpaceId: spaceId, + Filters: []*model.BlockContentDataviewFilter{ + { + RelationKey: bundle.RelationKeyUniqueKey.String(), + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.String(uniqueKey), + }, + }, + Keys: []string{"id"}, + }) + + if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { + return "", ErrFailedSearchType + } + + if len(resp.Records) == 0 { + return "", ErrorTypeNotFound + } + + return resp.Records[0].Fields["id"].GetStringValue(), nil +} From 34fc5ed7f6773032524228ed70c59f61486a2f46 Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Mon, 6 Jan 2025 20:14:13 +0100 Subject: [PATCH 107/279] GO-4146 WIP account migration --- account_stop.json | 1 + clientlibrary/service/service.pb.go | 690 ++-- core/account.go | 13 + core/anytype/bootstrap.go | 13 + core/application/account_store_migrate.go | 51 + docs/proto.md | 77 + go.mod | 2 +- go.sum | 4 +- pb/commands.pb.go | 3262 ++++++++++------- pb/protos/commands.proto | 25 + pb/protos/service/service.proto | 1 + pb/service/service.pb.go | 689 ++-- space/spacecore/oldstorage/storage.go | 59 + .../storage/anystorage/storageservice.go | 8 +- space/spacecore/storage/migrator/migrator.go | 56 + space/spacecore/storage/storage.go | 6 +- 16 files changed, 3044 insertions(+), 1913 deletions(-) create mode 100644 account_stop.json create mode 100644 core/application/account_store_migrate.go create mode 100644 space/spacecore/oldstorage/storage.go create mode 100644 space/spacecore/storage/migrator/migrator.go diff --git a/account_stop.json b/account_stop.json new file mode 100644 index 000000000..08c015abd --- /dev/null +++ b/account_stop.json @@ -0,0 +1 @@ +{"method_name":"AccountStop","middle_time":0,"error_code":101,"description":"application is not running"} \ No newline at end of file diff --git a/clientlibrary/service/service.pb.go b/clientlibrary/service/service.pb.go index 3cbe99da9..fcb689745 100644 --- a/clientlibrary/service/service.pb.go +++ b/clientlibrary/service/service.pb.go @@ -25,337 +25,338 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package func init() { proto.RegisterFile("pb/protos/service/service.proto", fileDescriptor_93a29dc403579097) } var fileDescriptor_93a29dc403579097 = []byte{ - // 5279 bytes of a gzipped FileDescriptorProto + // 5295 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x9d, 0x5b, 0x6f, 0x24, 0x49, 0x56, 0xf8, 0xc7, 0x2f, 0xff, 0xf9, 0x93, 0xcb, 0x0e, 0x50, 0x03, 0xc3, 0xec, 0xb0, 0xdb, 0xb7, 0xe9, 0xb6, 0xdd, 0x6d, 0xbb, 0xdc, 0xd3, 0x3d, 0x3d, 0xb3, 0xda, 0x45, 0x42, 0x6e, 0xbb, 0xed, 0x31, 0x6b, 0xbb, 0x8d, 0xab, 0xdc, 0x2d, 0x8d, 0x84, 0x44, 0x38, 0x2b, 0x5c, 0x4e, 0x9c, 0x95, 0x91, 0x9b, 0x19, 0x55, 0xee, 0x5a, 0x04, 0x02, 0x81, 0x40, 0x20, 0x10, 0x2b, 0x6e, 0xaf, 0x48, - 0x7c, 0x1a, 0x1e, 0xf7, 0x91, 0x47, 0x34, 0x23, 0x1e, 0xf8, 0x16, 0x28, 0x23, 0x23, 0xe3, 0x72, - 0xf2, 0x9c, 0xc8, 0xf4, 0x3e, 0x75, 0xab, 0xce, 0xef, 0x9c, 0x13, 0xd7, 0x13, 0x27, 0x22, 0x23, - 0xd3, 0xd1, 0xdd, 0xfc, 0x62, 0x3b, 0x2f, 0x84, 0x14, 0xe5, 0x76, 0xc9, 0x8b, 0x45, 0x12, 0xf3, - 0xe6, 0xdf, 0xa1, 0xfa, 0x79, 0xf0, 0x3e, 0xcb, 0x96, 0x72, 0x99, 0xf3, 0x4f, 0x3e, 0xb6, 0x64, - 0x2c, 0x66, 0x33, 0x96, 0x4d, 0xca, 0x1a, 0xf9, 0xe4, 0x23, 0x2b, 0xe1, 0x0b, 0x9e, 0x49, 0xfd, - 0xfb, 0xb3, 0xff, 0xf9, 0xdf, 0x95, 0xe8, 0x83, 0xdd, 0x34, 0xe1, 0x99, 0xdc, 0xd5, 0x1a, 0x83, - 0xaf, 0xa3, 0xef, 0xee, 0xe4, 0xf9, 0x01, 0x97, 0x6f, 0x78, 0x51, 0x26, 0x22, 0x1b, 0x7c, 0x3a, - 0xd4, 0x0e, 0x86, 0x67, 0x79, 0x3c, 0xdc, 0xc9, 0xf3, 0xa1, 0x15, 0x0e, 0xcf, 0xf8, 0x4f, 0xe7, - 0xbc, 0x94, 0x9f, 0x3c, 0x0c, 0x43, 0x65, 0x2e, 0xb2, 0x92, 0x0f, 0x2e, 0xa3, 0xdf, 0xd8, 0xc9, - 0xf3, 0x11, 0x97, 0x7b, 0xbc, 0xaa, 0xc0, 0x48, 0x32, 0xc9, 0x07, 0x6b, 0x2d, 0x55, 0x1f, 0x30, - 0x3e, 0xd6, 0xbb, 0x41, 0xed, 0x67, 0x1c, 0x7d, 0xa7, 0xf2, 0x73, 0x35, 0x97, 0x13, 0x71, 0x93, - 0x0d, 0xee, 0xb7, 0x15, 0xb5, 0xc8, 0xd8, 0x7e, 0x10, 0x42, 0xb4, 0xd5, 0xb7, 0xd1, 0xaf, 0xbe, - 0x65, 0x69, 0xca, 0xe5, 0x6e, 0xc1, 0xab, 0x82, 0xfb, 0x3a, 0xb5, 0x68, 0x58, 0xcb, 0x8c, 0xdd, - 0x4f, 0x83, 0x8c, 0x36, 0xfc, 0x75, 0xf4, 0xdd, 0x5a, 0x72, 0xc6, 0x63, 0xb1, 0xe0, 0xc5, 0x00, - 0xd5, 0xd2, 0x42, 0xa2, 0xc9, 0x5b, 0x10, 0xb4, 0xbd, 0x2b, 0xb2, 0x05, 0x2f, 0x24, 0x6e, 0x5b, - 0x0b, 0xc3, 0xb6, 0x2d, 0xa4, 0x6d, 0xff, 0xed, 0x4a, 0xf4, 0xfd, 0x9d, 0x38, 0x16, 0xf3, 0x4c, - 0x1e, 0x89, 0x98, 0xa5, 0x47, 0x49, 0x76, 0x7d, 0xc2, 0x6f, 0x76, 0xaf, 0x2a, 0x3e, 0x9b, 0xf2, - 0xc1, 0x73, 0xbf, 0x55, 0x6b, 0x74, 0x68, 0xd8, 0xa1, 0x0b, 0x1b, 0xdf, 0x9f, 0xdf, 0x4e, 0x49, - 0x97, 0xe5, 0x1f, 0x57, 0xa2, 0x3b, 0xb0, 0x2c, 0x23, 0x91, 0x2e, 0xb8, 0x2d, 0xcd, 0x8b, 0x0e, - 0xc3, 0x3e, 0x6e, 0xca, 0xf3, 0xc5, 0x6d, 0xd5, 0x74, 0x89, 0xd2, 0xe8, 0x43, 0x77, 0xb8, 0x8c, - 0x78, 0xa9, 0xa6, 0xd3, 0x63, 0x7a, 0x44, 0x68, 0xc4, 0x78, 0x7e, 0xd2, 0x07, 0xd5, 0xde, 0x92, - 0x68, 0xa0, 0xbd, 0xa5, 0xa2, 0x34, 0xce, 0xd6, 0x51, 0x0b, 0x0e, 0x61, 0x7c, 0x3d, 0xee, 0x41, - 0x6a, 0x57, 0x7f, 0x14, 0xfd, 0xda, 0x5b, 0x51, 0x5c, 0x97, 0x39, 0x8b, 0xb9, 0x9e, 0x0a, 0x8f, - 0x7c, 0xed, 0x46, 0x0a, 0x67, 0xc3, 0x6a, 0x17, 0xe6, 0x0c, 0xda, 0x46, 0xf8, 0x3a, 0xe7, 0x30, - 0x06, 0x59, 0xc5, 0x4a, 0x48, 0x0d, 0x5a, 0x08, 0x69, 0xdb, 0xd7, 0xd1, 0xc0, 0xda, 0xbe, 0xf8, - 0x63, 0x1e, 0xcb, 0x9d, 0xc9, 0x04, 0xf6, 0x8a, 0xd5, 0x55, 0xc4, 0x70, 0x67, 0x32, 0xa1, 0x7a, - 0x05, 0x47, 0xb5, 0xb3, 0x9b, 0xe8, 0x23, 0xe0, 0xec, 0x28, 0x29, 0x95, 0xc3, 0xad, 0xb0, 0x15, - 0x8d, 0x19, 0xa7, 0xc3, 0xbe, 0xb8, 0x76, 0xfc, 0xe7, 0x2b, 0xd1, 0xf7, 0x10, 0xcf, 0x67, 0x7c, - 0x26, 0x16, 0x7c, 0xf0, 0xb4, 0xdb, 0x5a, 0x4d, 0x1a, 0xff, 0x9f, 0xdd, 0x42, 0x03, 0x19, 0x26, - 0x23, 0x9e, 0xf2, 0x58, 0x92, 0xc3, 0xa4, 0x16, 0x77, 0x0e, 0x13, 0x83, 0x39, 0x33, 0xac, 0x11, - 0x1e, 0x70, 0xb9, 0x3b, 0x2f, 0x0a, 0x9e, 0x49, 0xb2, 0x2f, 0x2d, 0xd2, 0xd9, 0x97, 0x1e, 0x8a, - 0xd4, 0xe7, 0x80, 0xcb, 0x9d, 0x34, 0x25, 0xeb, 0x53, 0x8b, 0x3b, 0xeb, 0x63, 0x30, 0xed, 0x21, - 0x8e, 0x7e, 0xdd, 0x69, 0x31, 0x79, 0x98, 0x5d, 0x8a, 0x01, 0xdd, 0x16, 0x4a, 0x6e, 0x7c, 0xac, - 0x75, 0x72, 0x48, 0x35, 0x5e, 0xbd, 0xcb, 0x45, 0x41, 0x77, 0x4b, 0x2d, 0xee, 0xac, 0x86, 0xc1, - 0xb4, 0x87, 0x3f, 0x8c, 0x3e, 0xd0, 0x51, 0xb2, 0x59, 0xcf, 0x1e, 0xa2, 0x21, 0x14, 0x2e, 0x68, - 0x8f, 0x3a, 0x28, 0x1b, 0x1c, 0xb4, 0x4c, 0x07, 0x9f, 0x4f, 0x51, 0x3d, 0x10, 0x7a, 0x1e, 0x86, - 0xa1, 0x96, 0xed, 0x3d, 0x9e, 0x72, 0xd2, 0x76, 0x2d, 0xec, 0xb0, 0x6d, 0x20, 0x6d, 0xbb, 0x88, - 0x7e, 0xcb, 0x34, 0x4b, 0xb5, 0x8e, 0x2a, 0x79, 0x15, 0xa4, 0x37, 0x88, 0x7a, 0xbb, 0x90, 0xf1, - 0xb5, 0xd9, 0x0f, 0x6e, 0xd5, 0x47, 0xcf, 0x40, 0xbc, 0x3e, 0x60, 0xfe, 0x3d, 0x0c, 0x43, 0xda, - 0xf6, 0xdf, 0xad, 0x44, 0x3f, 0xd0, 0xb2, 0x57, 0x19, 0xbb, 0x48, 0xb9, 0x5a, 0x12, 0x4f, 0xb8, - 0xbc, 0x11, 0xc5, 0xf5, 0x68, 0x99, 0xc5, 0xc4, 0xf2, 0x8f, 0xc3, 0x1d, 0xcb, 0x3f, 0xa9, 0xe4, - 0x64, 0x7c, 0xba, 0xa2, 0x52, 0xe4, 0x30, 0xe3, 0x6b, 0x6a, 0x20, 0x45, 0x4e, 0x65, 0x7c, 0x3e, - 0xd2, 0xb2, 0x7a, 0x5c, 0x85, 0x4d, 0xdc, 0xea, 0xb1, 0x1b, 0x27, 0x1f, 0x84, 0x10, 0x1b, 0xb6, - 0x9a, 0x01, 0x2c, 0xb2, 0xcb, 0x64, 0x7a, 0x9e, 0x4f, 0xaa, 0x61, 0xfc, 0x18, 0x1f, 0xa1, 0x0e, - 0x42, 0x84, 0x2d, 0x02, 0xd5, 0xde, 0xfe, 0xc1, 0x26, 0x46, 0x7a, 0x2a, 0xed, 0x17, 0x62, 0x76, - 0xc4, 0xa7, 0x2c, 0x5e, 0xea, 0xf9, 0xff, 0x79, 0x68, 0xe2, 0x41, 0xda, 0x14, 0xe2, 0xc5, 0x2d, - 0xb5, 0x74, 0x79, 0xfe, 0x7d, 0x25, 0x7a, 0xd8, 0x54, 0xff, 0x8a, 0x65, 0x53, 0xae, 0xfb, 0xb3, - 0x2e, 0xfd, 0x4e, 0x36, 0x39, 0xe3, 0xa5, 0x64, 0x85, 0x1c, 0xfc, 0x08, 0xaf, 0x64, 0x48, 0xc7, - 0x94, 0xed, 0xc7, 0xbf, 0x94, 0xae, 0xed, 0xf5, 0x51, 0x15, 0xd8, 0x74, 0x08, 0xf0, 0x7b, 0x5d, - 0x49, 0x60, 0x00, 0x78, 0x10, 0x42, 0x6c, 0xaf, 0x2b, 0xc1, 0x61, 0xb6, 0x48, 0x24, 0x3f, 0xe0, - 0x19, 0x2f, 0xda, 0xbd, 0x5e, 0xab, 0xfa, 0x08, 0xd1, 0xeb, 0x04, 0x6a, 0x83, 0x8d, 0xe7, 0xcd, - 0x2c, 0x8e, 0x1b, 0x01, 0x23, 0xad, 0xe5, 0x71, 0xb3, 0x1f, 0x6c, 0x77, 0x77, 0x8e, 0xcf, 0x33, - 0xbe, 0x10, 0xd7, 0x70, 0x77, 0xe7, 0x9a, 0xa8, 0x01, 0x62, 0x77, 0x87, 0x82, 0x76, 0x05, 0x73, - 0xfc, 0xbc, 0x49, 0xf8, 0x0d, 0x58, 0xc1, 0x5c, 0xe5, 0x4a, 0x4c, 0xac, 0x60, 0x08, 0xa6, 0x3d, - 0x9c, 0x44, 0xbf, 0xa2, 0x84, 0xbf, 0x2f, 0x92, 0x6c, 0x70, 0x17, 0x51, 0xaa, 0x04, 0xc6, 0xea, - 0x3d, 0x1a, 0x00, 0x25, 0xae, 0x7e, 0xdd, 0x65, 0x59, 0xcc, 0x53, 0xb4, 0xc4, 0x56, 0x1c, 0x2c, - 0xb1, 0x87, 0xd9, 0xd4, 0x41, 0x09, 0xab, 0xf8, 0x35, 0xba, 0x62, 0x45, 0x92, 0x4d, 0x07, 0x98, - 0xae, 0x23, 0x27, 0x52, 0x07, 0x8c, 0x03, 0x43, 0x58, 0x2b, 0xee, 0xe4, 0x79, 0x51, 0x85, 0x45, - 0x6c, 0x08, 0xfb, 0x48, 0x70, 0x08, 0xb7, 0x50, 0xdc, 0xdb, 0x1e, 0x8f, 0xd3, 0x24, 0x0b, 0x7a, - 0xd3, 0x48, 0x1f, 0x6f, 0x16, 0x05, 0x83, 0xf7, 0x88, 0xb3, 0x05, 0x6f, 0x6a, 0x86, 0xb5, 0x8c, - 0x0b, 0x04, 0x07, 0x2f, 0x00, 0xed, 0x3e, 0x4d, 0x89, 0x8f, 0xd9, 0x35, 0xaf, 0x1a, 0x98, 0x57, - 0xeb, 0xda, 0x00, 0xd3, 0xf7, 0x08, 0x62, 0x9f, 0x86, 0x93, 0xda, 0xd5, 0x3c, 0xfa, 0x48, 0xc9, - 0x4f, 0x59, 0x21, 0x93, 0x38, 0xc9, 0x59, 0xd6, 0xe4, 0xff, 0xd8, 0xbc, 0x6e, 0x51, 0xc6, 0xe5, - 0x56, 0x4f, 0x5a, 0xbb, 0xfd, 0xb7, 0x95, 0xe8, 0x3e, 0xf4, 0x7b, 0xca, 0x8b, 0x59, 0xa2, 0xb6, - 0x91, 0x65, 0x1d, 0x84, 0x07, 0x5f, 0x86, 0x8d, 0xb6, 0x14, 0x4c, 0x69, 0x7e, 0x78, 0x7b, 0x45, - 0x9b, 0x0c, 0x8d, 0x74, 0x6a, 0xfd, 0xba, 0x98, 0xb4, 0x8e, 0x59, 0x46, 0x4d, 0xbe, 0xac, 0x84, - 0x44, 0x32, 0xd4, 0x82, 0xc0, 0x0c, 0x3f, 0xcf, 0xca, 0xc6, 0x3a, 0x36, 0xc3, 0xad, 0x38, 0x38, - 0xc3, 0x3d, 0x4c, 0x7b, 0xf8, 0x83, 0x28, 0xaa, 0x37, 0x5b, 0x6a, 0x43, 0xec, 0xc7, 0x1c, 0xbd, - 0x0b, 0xf3, 0x76, 0xc3, 0xf7, 0x03, 0x84, 0x5d, 0xe8, 0xea, 0xdf, 0xd5, 0x3e, 0x7f, 0x80, 0x6a, - 0x28, 0x11, 0xb1, 0xd0, 0x01, 0x04, 0x16, 0x74, 0x74, 0x25, 0x6e, 0xf0, 0x82, 0x56, 0x92, 0x70, - 0x41, 0x35, 0x61, 0x4f, 0xde, 0x74, 0x41, 0xb1, 0x93, 0xb7, 0xa6, 0x18, 0xa1, 0x93, 0x37, 0xc8, - 0x68, 0xc3, 0x22, 0xfa, 0x4d, 0xd7, 0xf0, 0x4b, 0x21, 0xae, 0x67, 0xac, 0xb8, 0x1e, 0x3c, 0xa1, - 0x95, 0x1b, 0xc6, 0x38, 0xda, 0xe8, 0xc5, 0xda, 0xa0, 0xe6, 0x3a, 0xac, 0xd2, 0xa4, 0xf3, 0x22, - 0x05, 0x41, 0xcd, 0xb3, 0xa1, 0x11, 0x22, 0xa8, 0x11, 0xa8, 0x1d, 0x95, 0xae, 0xb7, 0x11, 0x87, - 0x7b, 0x3d, 0x4f, 0x7d, 0xc4, 0xa9, 0xbd, 0x1e, 0x82, 0xc1, 0x21, 0x74, 0x50, 0xb0, 0xfc, 0x0a, - 0x1f, 0x42, 0x4a, 0x14, 0x1e, 0x42, 0x0d, 0x02, 0xfb, 0x7b, 0xc4, 0x59, 0x11, 0x5f, 0xe1, 0xfd, - 0x5d, 0xcb, 0xc2, 0xfd, 0x6d, 0x18, 0xd8, 0xdf, 0xb5, 0xe0, 0x6d, 0x22, 0xaf, 0x8e, 0xb9, 0x64, - 0x78, 0x7f, 0xfb, 0x4c, 0xb8, 0xbf, 0x5b, 0xac, 0xcd, 0xc3, 0x5c, 0x87, 0xa3, 0xf9, 0x45, 0x19, - 0x17, 0xc9, 0x05, 0x1f, 0x04, 0xac, 0x18, 0x88, 0xc8, 0xc3, 0x48, 0x58, 0xfb, 0xfc, 0xf9, 0x4a, - 0x74, 0xb7, 0xe9, 0x76, 0x51, 0x96, 0x3a, 0xe6, 0xf9, 0xee, 0x5f, 0xe0, 0xfd, 0x4b, 0xe0, 0xc4, - 0x59, 0x68, 0x0f, 0x35, 0x67, 0x4d, 0xc0, 0x8b, 0x74, 0x9e, 0x95, 0xa6, 0x50, 0x5f, 0xf6, 0xb1, - 0xee, 0x28, 0x10, 0x6b, 0x42, 0x2f, 0x45, 0xbb, 0x1c, 0xeb, 0xfe, 0x69, 0x64, 0x87, 0x93, 0x12, - 0x2c, 0xc7, 0x4d, 0x7b, 0x3b, 0x04, 0xb1, 0x1c, 0xe3, 0x24, 0x1c, 0x0a, 0x07, 0x85, 0x98, 0xe7, - 0x65, 0xc7, 0x50, 0x00, 0x50, 0x78, 0x28, 0xb4, 0x61, 0xed, 0xf3, 0x5d, 0xf4, 0xdb, 0xee, 0xf0, - 0x73, 0x1b, 0x7b, 0x8b, 0x1e, 0x53, 0x58, 0x13, 0x0f, 0xfb, 0xe2, 0x36, 0x21, 0x6d, 0x3c, 0xcb, - 0x3d, 0x2e, 0x59, 0x92, 0x96, 0x83, 0x55, 0xdc, 0x46, 0x23, 0x27, 0x12, 0x52, 0x8c, 0x83, 0xf1, - 0x6d, 0x6f, 0x9e, 0xa7, 0x49, 0xdc, 0x3e, 0x89, 0xd6, 0xba, 0x46, 0x1c, 0x8e, 0x6f, 0x2e, 0x06, - 0xe3, 0x75, 0xb5, 0xe4, 0xab, 0xff, 0x8c, 0x97, 0x39, 0xc7, 0xe3, 0xb5, 0x87, 0x84, 0xe3, 0x35, - 0x44, 0x61, 0x7d, 0x46, 0x5c, 0x1e, 0xb1, 0xa5, 0x98, 0x13, 0xf1, 0xda, 0x88, 0xc3, 0xf5, 0x71, - 0x31, 0x9b, 0x13, 0x1a, 0x0f, 0x87, 0x99, 0xe4, 0x45, 0xc6, 0xd2, 0xfd, 0x94, 0x4d, 0xcb, 0x01, - 0x11, 0x63, 0x7c, 0x8a, 0xc8, 0x09, 0x69, 0x1a, 0x69, 0xc6, 0xc3, 0x72, 0x9f, 0x2d, 0x44, 0x91, - 0x48, 0xba, 0x19, 0x2d, 0xd2, 0xd9, 0x8c, 0x1e, 0x8a, 0x7a, 0xdb, 0x29, 0xe2, 0xab, 0x64, 0xc1, - 0x27, 0x01, 0x6f, 0x0d, 0xd2, 0xc3, 0x9b, 0x83, 0x22, 0x9d, 0x36, 0x12, 0xf3, 0x22, 0xe6, 0x64, - 0xa7, 0xd5, 0xe2, 0xce, 0x4e, 0x33, 0x98, 0xf6, 0xf0, 0x57, 0x2b, 0xd1, 0xef, 0xd4, 0x52, 0xf7, - 0x78, 0x78, 0x8f, 0x95, 0x57, 0x17, 0x82, 0x15, 0x93, 0xc1, 0x67, 0x98, 0x1d, 0x14, 0x35, 0xae, - 0x9f, 0xdd, 0x46, 0x05, 0x36, 0xeb, 0x51, 0x52, 0x3a, 0x33, 0x0e, 0x6d, 0x56, 0x0f, 0x09, 0x37, - 0x2b, 0x44, 0x61, 0x00, 0x51, 0xf2, 0xfa, 0x28, 0x66, 0x95, 0xd4, 0xf7, 0xcf, 0x63, 0xd6, 0x3a, - 0x39, 0x18, 0x1f, 0x2b, 0xa1, 0x3f, 0x5a, 0xb6, 0x28, 0x1b, 0xf8, 0x88, 0x19, 0xf6, 0xc5, 0x49, - 0xcf, 0x66, 0x56, 0x84, 0x3d, 0xb7, 0x66, 0xc6, 0xb0, 0x2f, 0x4e, 0x78, 0x76, 0xc2, 0x5a, 0xc8, - 0x33, 0x12, 0xda, 0x86, 0x7d, 0x71, 0x98, 0x7d, 0x69, 0xa6, 0x59, 0x17, 0x9e, 0x04, 0xec, 0xc0, - 0xb5, 0x61, 0xa3, 0x17, 0xab, 0x1d, 0xfe, 0xcd, 0x4a, 0xf4, 0x7d, 0xeb, 0xf1, 0x58, 0x4c, 0x92, - 0xcb, 0x65, 0x0d, 0xbd, 0x61, 0xe9, 0x9c, 0x97, 0x83, 0x67, 0x94, 0xb5, 0x36, 0x6b, 0x4a, 0xf0, - 0xfc, 0x56, 0x3a, 0x70, 0xee, 0xec, 0xe4, 0x79, 0xba, 0x1c, 0xf3, 0x59, 0x9e, 0x92, 0x73, 0xc7, - 0x43, 0xc2, 0x73, 0x07, 0xa2, 0x30, 0x2b, 0x1f, 0x8b, 0x2a, 0xe7, 0x47, 0xb3, 0x72, 0x25, 0x0a, - 0x67, 0xe5, 0x0d, 0x02, 0x73, 0xa5, 0xb1, 0xd8, 0x15, 0x69, 0xca, 0x63, 0xd9, 0x7e, 0xc4, 0x6c, - 0x34, 0x2d, 0x11, 0xce, 0x95, 0x00, 0x69, 0x4f, 0x63, 0x9a, 0x3d, 0x24, 0x2b, 0xf8, 0xcb, 0xe5, - 0x51, 0x92, 0x5d, 0x0f, 0xf0, 0xb4, 0xc0, 0x02, 0xc4, 0x69, 0x0c, 0x0a, 0xc2, 0xbd, 0xea, 0x79, - 0x36, 0x11, 0xf8, 0x5e, 0xb5, 0x92, 0x84, 0xf7, 0xaa, 0x9a, 0x80, 0x26, 0xcf, 0x38, 0x65, 0xb2, - 0x92, 0x84, 0x4d, 0x6a, 0x02, 0x0b, 0x85, 0xfa, 0xcc, 0x9e, 0x0c, 0x85, 0xe0, 0x94, 0x7e, 0xad, - 0x93, 0x83, 0x23, 0xb4, 0xd9, 0xb4, 0xee, 0x73, 0x19, 0x5f, 0xe1, 0x23, 0xd4, 0x43, 0xc2, 0x23, - 0x14, 0xa2, 0xb0, 0x4a, 0x63, 0x61, 0x36, 0xdd, 0xab, 0xf8, 0xf8, 0x68, 0x6d, 0xb8, 0xd7, 0x3a, - 0x39, 0xb8, 0x8d, 0x3c, 0x9c, 0xa9, 0x36, 0x43, 0x07, 0x79, 0x2d, 0x0b, 0x6f, 0x23, 0x0d, 0x03, - 0x4b, 0x5f, 0x0b, 0xaa, 0xe6, 0xc4, 0x4b, 0x6f, 0xe5, 0xe1, 0xd2, 0x7b, 0x9c, 0x76, 0xf2, 0x2f, - 0x66, 0x1b, 0x57, 0x4b, 0x4f, 0x44, 0x35, 0x47, 0xde, 0xb0, 0x34, 0x99, 0x30, 0xc9, 0xc7, 0xe2, - 0x9a, 0x67, 0xf8, 0x8e, 0x49, 0x97, 0xb6, 0xe6, 0x87, 0x9e, 0x42, 0x78, 0xc7, 0x14, 0x56, 0x84, - 0xe3, 0xa4, 0xa6, 0xcf, 0x4b, 0xbe, 0xcb, 0x4a, 0x22, 0x92, 0x79, 0x48, 0x78, 0x9c, 0x40, 0x14, - 0xe6, 0xab, 0xb5, 0xfc, 0xd5, 0xbb, 0x9c, 0x17, 0x09, 0xcf, 0x62, 0x8e, 0xe7, 0xab, 0x90, 0x0a, - 0xe7, 0xab, 0x08, 0x0d, 0xf7, 0x6a, 0x7b, 0x4c, 0xf2, 0x97, 0xcb, 0x71, 0x32, 0xe3, 0xa5, 0x64, - 0xb3, 0x1c, 0xdf, 0xab, 0x01, 0x28, 0xbc, 0x57, 0x6b, 0xc3, 0xad, 0xa3, 0x21, 0x13, 0x10, 0xdb, - 0x37, 0x53, 0x20, 0x11, 0xb8, 0x99, 0x42, 0xa0, 0xb0, 0x61, 0x2d, 0x80, 0x1e, 0x0e, 0xb7, 0xac, - 0x04, 0x0f, 0x87, 0x69, 0xba, 0x75, 0xe0, 0x66, 0x98, 0x51, 0x35, 0x35, 0x3b, 0x8a, 0x3e, 0x72, - 0xa7, 0xe8, 0x46, 0x2f, 0x16, 0x3f, 0xe1, 0x3b, 0xe3, 0x29, 0x53, 0xcb, 0x56, 0xe0, 0x18, 0xad, - 0x61, 0xfa, 0x9c, 0xf0, 0x39, 0xac, 0x76, 0xf8, 0x17, 0x2b, 0xd1, 0x27, 0x98, 0xc7, 0xd7, 0xb9, - 0xf2, 0xfb, 0xb4, 0xdb, 0x56, 0x4d, 0x12, 0x57, 0x6f, 0xc2, 0x1a, 0xba, 0x0c, 0x7f, 0x12, 0x7d, - 0xdc, 0x88, 0xec, 0xcd, 0x1c, 0x5d, 0x00, 0x3f, 0x69, 0x33, 0xe5, 0x87, 0x9c, 0x71, 0xbf, 0xdd, - 0x9b, 0xb7, 0xfb, 0x21, 0xbf, 0x5c, 0x25, 0xd8, 0x0f, 0x19, 0x1b, 0x5a, 0x4c, 0xec, 0x87, 0x10, - 0xcc, 0xce, 0x4e, 0xb7, 0x7a, 0x6f, 0x13, 0x79, 0xa5, 0xf2, 0x2d, 0x30, 0x3b, 0xbd, 0xb2, 0x1a, - 0x88, 0x98, 0x9d, 0x24, 0x0c, 0x33, 0x92, 0x06, 0xac, 0xe6, 0x26, 0x16, 0xcb, 0x8d, 0x21, 0x77, - 0x66, 0xae, 0x77, 0x83, 0x70, 0xbc, 0x36, 0x62, 0xbd, 0xf5, 0x79, 0x12, 0xb2, 0x00, 0xb6, 0x3f, - 0x1b, 0xbd, 0x58, 0xed, 0xf0, 0xcf, 0xa2, 0xef, 0xb5, 0x2a, 0xb6, 0xcf, 0x99, 0x9c, 0x17, 0x7c, - 0x32, 0xd8, 0xee, 0x28, 0x77, 0x03, 0x1a, 0xd7, 0x4f, 0xfb, 0x2b, 0xb4, 0x72, 0xf4, 0x86, 0xab, - 0x87, 0x95, 0x29, 0xc3, 0xb3, 0x90, 0x49, 0x9f, 0x0d, 0xe6, 0xe8, 0xb4, 0x4e, 0x6b, 0x9b, 0xed, - 0x8e, 0xae, 0x9d, 0x05, 0x4b, 0x52, 0xf5, 0x90, 0xee, 0xb3, 0x90, 0x51, 0x0f, 0x0d, 0x6e, 0xb3, - 0x49, 0x95, 0x56, 0x64, 0x56, 0x73, 0xdc, 0xd9, 0x9e, 0x6d, 0xd2, 0x91, 0x00, 0xd9, 0x9d, 0x6d, - 0xf5, 0xa4, 0xb5, 0x5b, 0xd9, 0x2c, 0x79, 0xd5, 0xcf, 0xee, 0x20, 0xc7, 0xbc, 0x6a, 0x55, 0x64, - 0xa4, 0x6f, 0xf5, 0xa4, 0xb5, 0xd7, 0x3f, 0x8d, 0x3e, 0x6e, 0x7b, 0xd5, 0x0b, 0xd1, 0x76, 0xa7, - 0x29, 0xb0, 0x16, 0x3d, 0xed, 0xaf, 0x60, 0xb7, 0x34, 0x5f, 0x25, 0xa5, 0x14, 0xc5, 0x72, 0x74, - 0x25, 0x6e, 0x9a, 0x1b, 0xef, 0xfe, 0x6c, 0xd5, 0xc0, 0xd0, 0x21, 0x88, 0x2d, 0x0d, 0x4e, 0xb6, - 0x5c, 0xd9, 0x9b, 0xf1, 0x25, 0xe1, 0xca, 0x21, 0x3a, 0x5c, 0xf9, 0xa4, 0x8d, 0x55, 0x4d, 0xad, - 0xec, 0x35, 0xfe, 0x35, 0xbc, 0xa8, 0xed, 0xab, 0xfc, 0xeb, 0xdd, 0xa0, 0xcd, 0x58, 0xb4, 0x78, - 0x2f, 0xb9, 0xbc, 0x34, 0x75, 0xc2, 0x4b, 0xea, 0x22, 0x44, 0xc6, 0x42, 0xa0, 0x36, 0xe9, 0xde, - 0x4f, 0x52, 0xae, 0x4e, 0xf4, 0x5f, 0x5f, 0x5e, 0xa6, 0x82, 0x4d, 0x40, 0xd2, 0x5d, 0x89, 0x87, - 0xae, 0x9c, 0x48, 0xba, 0x31, 0xce, 0x3e, 0x23, 0xae, 0xa4, 0x67, 0x3c, 0x16, 0x59, 0x9c, 0xa4, - 0xf0, 0x02, 0xa0, 0xd2, 0x34, 0x42, 0xe2, 0x19, 0x71, 0x0b, 0xb2, 0x0b, 0x63, 0x25, 0xaa, 0xa6, - 0x7d, 0x53, 0xfe, 0x47, 0x6d, 0x45, 0x47, 0x4c, 0x2c, 0x8c, 0x08, 0x66, 0xf7, 0x9e, 0x95, 0xf0, - 0x3c, 0x57, 0xc6, 0xef, 0xb5, 0xb5, 0x6a, 0x09, 0xb1, 0xf7, 0xf4, 0x09, 0xbb, 0x87, 0xaa, 0x7e, - 0xdf, 0x13, 0x37, 0x99, 0x32, 0xfa, 0xa0, 0xad, 0xd2, 0xc8, 0x88, 0x3d, 0x14, 0x64, 0xb4, 0xe1, - 0x9f, 0x44, 0xff, 0x5f, 0x19, 0x2e, 0x44, 0x3e, 0xb8, 0x83, 0x28, 0x14, 0xce, 0x5d, 0xbd, 0xbb, - 0xa4, 0xdc, 0x5e, 0x39, 0x35, 0x63, 0xe3, 0xbc, 0x64, 0x53, 0x3e, 0x78, 0x48, 0xf4, 0xb8, 0x92, - 0x12, 0x57, 0x4e, 0xdb, 0x94, 0x3f, 0x2a, 0x4e, 0xc4, 0x44, 0x5b, 0x47, 0x6a, 0x68, 0x84, 0xa1, - 0x51, 0xe1, 0x42, 0x36, 0x99, 0x39, 0x61, 0x8b, 0x64, 0x6a, 0x16, 0x9c, 0x3a, 0x6e, 0x95, 0x20, - 0x99, 0xb1, 0xcc, 0xd0, 0x81, 0x88, 0x64, 0x86, 0x84, 0xb5, 0xcf, 0x7f, 0x5e, 0x89, 0xee, 0x59, - 0xe6, 0xa0, 0x39, 0xad, 0x3b, 0xcc, 0x2e, 0x45, 0x95, 0xfa, 0x1c, 0x25, 0xd9, 0x75, 0x39, 0xf8, - 0x82, 0x32, 0x89, 0xf3, 0xa6, 0x28, 0x5f, 0xde, 0x5a, 0xcf, 0x66, 0xad, 0xcd, 0x51, 0x96, 0x7d, - 0x9e, 0x5d, 0x6b, 0x80, 0xac, 0xd5, 0x9c, 0x78, 0x41, 0x8e, 0xc8, 0x5a, 0x43, 0xbc, 0xed, 0x62, - 0xe3, 0x3c, 0x15, 0x19, 0xec, 0x62, 0x6b, 0xa1, 0x12, 0x12, 0x5d, 0xdc, 0x82, 0x6c, 0x3c, 0x6e, - 0x44, 0xf5, 0xa9, 0xcb, 0x4e, 0x9a, 0x82, 0x78, 0x6c, 0x54, 0x0d, 0x40, 0xc4, 0x63, 0x14, 0xd4, - 0x7e, 0xce, 0xa2, 0xef, 0x54, 0x4d, 0x7a, 0x5a, 0xf0, 0x45, 0xc2, 0xe1, 0xd5, 0x0b, 0x47, 0x42, - 0xcc, 0x7f, 0x9f, 0xb0, 0x33, 0xeb, 0x3c, 0x2b, 0xf3, 0x94, 0x95, 0x57, 0xfa, 0x61, 0xbc, 0x5f, - 0xe7, 0x46, 0x08, 0x1f, 0xc7, 0x3f, 0xea, 0xa0, 0x6c, 0x50, 0x6f, 0x64, 0x26, 0xc4, 0xac, 0xe2, - 0xaa, 0xad, 0x30, 0xb3, 0xd6, 0xc9, 0xd9, 0x13, 0xef, 0x03, 0x96, 0xa6, 0xbc, 0x58, 0x36, 0xb2, - 0x63, 0x96, 0x25, 0x97, 0xbc, 0x94, 0xe0, 0xc4, 0x5b, 0x53, 0x43, 0x88, 0x11, 0x27, 0xde, 0x01, - 0xdc, 0x66, 0xf3, 0xc0, 0xf3, 0x61, 0x36, 0xe1, 0xef, 0x40, 0x36, 0x0f, 0xed, 0x28, 0x86, 0xc8, - 0xe6, 0x29, 0xd6, 0x9e, 0xfc, 0xbe, 0x4c, 0x45, 0x7c, 0xad, 0x97, 0x00, 0xbf, 0x83, 0x95, 0x04, - 0xae, 0x01, 0x0f, 0x42, 0x88, 0x5d, 0x04, 0x94, 0xe0, 0x8c, 0xe7, 0x29, 0x8b, 0xe1, 0xfd, 0x9b, - 0x5a, 0x47, 0xcb, 0x88, 0x45, 0x00, 0x32, 0xa0, 0xb8, 0xfa, 0x5e, 0x0f, 0x56, 0x5c, 0x70, 0xad, - 0xe7, 0x41, 0x08, 0xb1, 0xcb, 0xa0, 0x12, 0x8c, 0xf2, 0x34, 0x91, 0x60, 0x1a, 0xd4, 0x1a, 0x4a, - 0x42, 0x4c, 0x03, 0x9f, 0x00, 0x26, 0x8f, 0x79, 0x31, 0xe5, 0xa8, 0x49, 0x25, 0x09, 0x9a, 0x6c, - 0x08, 0x7b, 0xc9, 0xb4, 0xae, 0xbb, 0xc8, 0x97, 0xe0, 0x92, 0xa9, 0xae, 0x96, 0xc8, 0x97, 0xc4, - 0x25, 0x53, 0x0f, 0x00, 0x45, 0x3c, 0x65, 0xa5, 0xc4, 0x8b, 0xa8, 0x24, 0xc1, 0x22, 0x36, 0x84, - 0x5d, 0xa3, 0xeb, 0x22, 0xce, 0x25, 0x58, 0xa3, 0x75, 0x01, 0x9c, 0x27, 0xd0, 0x77, 0x49, 0xb9, - 0x8d, 0x24, 0x75, 0xaf, 0x70, 0xb9, 0x9f, 0xf0, 0x74, 0x52, 0x82, 0x48, 0xa2, 0xdb, 0xbd, 0x91, - 0x12, 0x91, 0xa4, 0x4d, 0x81, 0xa1, 0xa4, 0xcf, 0xc7, 0xb1, 0xda, 0x81, 0xa3, 0xf1, 0x07, 0x21, - 0xc4, 0xc6, 0xa7, 0xa6, 0xd0, 0xbb, 0xac, 0x28, 0x92, 0x6a, 0xf1, 0x5f, 0xc5, 0x0b, 0xd4, 0xc8, - 0x89, 0xf8, 0x84, 0x71, 0x60, 0x7a, 0x35, 0x81, 0x1b, 0x2b, 0x18, 0x0c, 0xdd, 0x9f, 0x06, 0x19, - 0x9b, 0x71, 0x2a, 0x89, 0xf3, 0x08, 0x15, 0x6b, 0x4d, 0xe4, 0x09, 0xea, 0x6a, 0x17, 0xe6, 0xbc, - 0x04, 0x62, 0x5c, 0x1c, 0x8b, 0x05, 0x1f, 0x8b, 0x57, 0xef, 0x92, 0x52, 0x26, 0xd9, 0x54, 0xaf, - 0xdc, 0xcf, 0x09, 0x4b, 0x18, 0x4c, 0xbc, 0x04, 0xd2, 0xa9, 0x64, 0x13, 0x08, 0x50, 0x96, 0x13, - 0x7e, 0x83, 0x26, 0x10, 0xd0, 0xa2, 0xe1, 0x88, 0x04, 0x22, 0xc4, 0xdb, 0x73, 0x14, 0xe3, 0x5c, - 0xbf, 0x29, 0x3b, 0x16, 0x4d, 0x2e, 0x47, 0x59, 0x83, 0x20, 0xb1, 0x95, 0x0d, 0x2a, 0xd8, 0xfd, - 0xa5, 0xf1, 0x6f, 0xa7, 0xd8, 0x3a, 0x61, 0xa7, 0x3d, 0xcd, 0x1e, 0xf7, 0x20, 0x11, 0x57, 0xf6, - 0x1e, 0x00, 0xe5, 0xaa, 0x7d, 0x0d, 0xe0, 0x71, 0x0f, 0xd2, 0x39, 0x93, 0x71, 0xab, 0xf5, 0x92, - 0xc5, 0xd7, 0xd3, 0x42, 0xcc, 0xb3, 0xc9, 0xae, 0x48, 0x45, 0x01, 0xce, 0x64, 0xbc, 0x52, 0x03, - 0x94, 0x38, 0x93, 0xe9, 0x50, 0xb1, 0x19, 0x9c, 0x5b, 0x8a, 0x9d, 0x34, 0x99, 0xc2, 0x1d, 0xb5, - 0x67, 0x48, 0x01, 0x44, 0x06, 0x87, 0x82, 0xc8, 0x20, 0xaa, 0x77, 0xdc, 0x32, 0x89, 0x59, 0x5a, - 0xfb, 0xdb, 0xa6, 0xcd, 0x78, 0x60, 0xe7, 0x20, 0x42, 0x14, 0x90, 0x7a, 0x8e, 0xe7, 0x45, 0x76, - 0x98, 0x49, 0x41, 0xd6, 0xb3, 0x01, 0x3a, 0xeb, 0xe9, 0x80, 0x20, 0xac, 0x8e, 0xf9, 0xbb, 0xaa, - 0x34, 0xd5, 0x3f, 0x58, 0x58, 0xad, 0x7e, 0x1f, 0x6a, 0x79, 0x28, 0xac, 0x02, 0x0e, 0x54, 0x46, - 0x3b, 0xa9, 0x07, 0x4c, 0x40, 0xdb, 0x1f, 0x26, 0xeb, 0xdd, 0x20, 0xee, 0x67, 0x24, 0x97, 0x29, - 0x0f, 0xf9, 0x51, 0x40, 0x1f, 0x3f, 0x0d, 0x68, 0x8f, 0x5b, 0xbc, 0xfa, 0x5c, 0xf1, 0xf8, 0xba, - 0x75, 0xad, 0xc9, 0x2f, 0x68, 0x8d, 0x10, 0xc7, 0x2d, 0x04, 0x8a, 0x77, 0xd1, 0x61, 0x2c, 0xb2, - 0x50, 0x17, 0x55, 0xf2, 0x3e, 0x5d, 0xa4, 0x39, 0xbb, 0xf9, 0x35, 0x52, 0x3d, 0x32, 0xeb, 0x6e, - 0xda, 0x20, 0x2c, 0xb8, 0x10, 0xb1, 0xf9, 0x25, 0x61, 0x9b, 0x93, 0x43, 0x9f, 0xc7, 0xed, 0x3b, - 0xdf, 0x2d, 0x2b, 0xc7, 0xf4, 0x9d, 0x6f, 0x8a, 0xa5, 0x2b, 0x59, 0x8f, 0x91, 0x0e, 0x2b, 0xfe, - 0x38, 0xd9, 0xec, 0x07, 0xdb, 0x2d, 0x8f, 0xe7, 0x73, 0x37, 0xe5, 0xac, 0xa8, 0xbd, 0x6e, 0x05, - 0x0c, 0x59, 0x8c, 0xd8, 0xf2, 0x04, 0x70, 0x10, 0xc2, 0x3c, 0xcf, 0xbb, 0x22, 0x93, 0x3c, 0x93, - 0x58, 0x08, 0xf3, 0x8d, 0x69, 0x30, 0x14, 0xc2, 0x28, 0x05, 0x30, 0x6e, 0xd5, 0x79, 0x10, 0x97, - 0x27, 0x6c, 0x86, 0x66, 0x6c, 0xf5, 0x59, 0x4f, 0x2d, 0x0f, 0x8d, 0x5b, 0xc0, 0x39, 0x0f, 0xf9, - 0x5c, 0x2f, 0x63, 0x56, 0x4c, 0xcd, 0xe9, 0xc6, 0x64, 0xf0, 0x94, 0xb6, 0xe3, 0x93, 0xc4, 0x43, - 0xbe, 0xb0, 0x06, 0x08, 0x3b, 0x87, 0x33, 0x36, 0x35, 0x35, 0x45, 0x6a, 0xa0, 0xe4, 0xad, 0xaa, - 0xae, 0x77, 0x83, 0xc0, 0xcf, 0x9b, 0x64, 0xc2, 0x45, 0xc0, 0x8f, 0x92, 0xf7, 0xf1, 0x03, 0x41, - 0x90, 0xbd, 0x55, 0xf5, 0xae, 0x77, 0x74, 0x3b, 0xd9, 0x44, 0xef, 0x63, 0x87, 0x44, 0xf3, 0x00, - 0x2e, 0x94, 0xbd, 0x11, 0x3c, 0x98, 0xa3, 0xcd, 0x01, 0x6d, 0x68, 0x8e, 0x9a, 0xf3, 0xd7, 0x3e, - 0x73, 0x14, 0x83, 0xb5, 0xcf, 0x9f, 0xe9, 0x39, 0xba, 0xc7, 0x24, 0xab, 0xf2, 0xf6, 0x37, 0x09, - 0xbf, 0xd1, 0x1b, 0x61, 0xa4, 0xbe, 0x0d, 0x35, 0x54, 0xaf, 0x2a, 0x82, 0x5d, 0xf1, 0x76, 0x6f, - 0x3e, 0xe0, 0x5b, 0xef, 0x10, 0x3a, 0x7d, 0x83, 0xad, 0xc2, 0x76, 0x6f, 0x3e, 0xe0, 0x5b, 0xbf, - 0x03, 0xdd, 0xe9, 0x1b, 0xbc, 0x08, 0xbd, 0xdd, 0x9b, 0xd7, 0xbe, 0xff, 0xb2, 0x99, 0xb8, 0xae, - 0xf3, 0x2a, 0x0f, 0x8b, 0x65, 0xb2, 0xe0, 0x58, 0x3a, 0xe9, 0xdb, 0x33, 0x68, 0x28, 0x9d, 0xa4, - 0x55, 0x9c, 0x0f, 0xe7, 0x60, 0xa5, 0x38, 0x15, 0x65, 0xa2, 0x1e, 0xd2, 0x3f, 0xef, 0x61, 0xb4, - 0x81, 0x43, 0x9b, 0xa6, 0x90, 0x92, 0x7d, 0xdc, 0xe8, 0xa1, 0xf6, 0x16, 0xf3, 0x66, 0xc0, 0x5e, - 0xfb, 0x32, 0xf3, 0x56, 0x4f, 0xda, 0x3e, 0xf8, 0xf3, 0x18, 0xf7, 0x89, 0x63, 0xa8, 0x57, 0xd1, - 0x87, 0x8e, 0x4f, 0xfb, 0x2b, 0x68, 0xf7, 0x7f, 0xdd, 0xec, 0x2b, 0xa0, 0x7f, 0x3d, 0x09, 0x9e, - 0xf5, 0xb1, 0x08, 0x26, 0xc2, 0xf3, 0x5b, 0xe9, 0xe8, 0x82, 0xfc, 0x7d, 0xb3, 0x81, 0x6e, 0x50, - 0xf5, 0x2e, 0x87, 0x7a, 0xf7, 0x4f, 0xcf, 0x89, 0x50, 0xb7, 0x5a, 0x18, 0xce, 0x8c, 0x17, 0xb7, - 0xd4, 0x72, 0x3e, 0xa3, 0xe4, 0xc1, 0xfa, 0x9d, 0x43, 0xa7, 0x3c, 0x21, 0xcb, 0x0e, 0x0d, 0x0b, - 0xf4, 0xc5, 0x6d, 0xd5, 0xa8, 0xb9, 0xe2, 0xc0, 0xea, 0xab, 0x0c, 0xcf, 0x7b, 0x1a, 0xf6, 0xbe, - 0xd3, 0xf0, 0xf9, 0xed, 0x94, 0x74, 0x59, 0xfe, 0x63, 0x25, 0x7a, 0xe4, 0xb1, 0xf6, 0x79, 0x02, - 0x38, 0xf5, 0xf8, 0x71, 0xc0, 0x3e, 0xa5, 0x64, 0x0a, 0xf7, 0xbb, 0xbf, 0x9c, 0xb2, 0xfd, 0xe6, - 0x90, 0xa7, 0xb2, 0x9f, 0xa4, 0x92, 0x17, 0xed, 0x6f, 0x0e, 0xf9, 0x76, 0x6b, 0x6a, 0x48, 0x7f, - 0x73, 0x28, 0x80, 0x3b, 0xdf, 0x1c, 0x42, 0x3c, 0xa3, 0xdf, 0x1c, 0x42, 0xad, 0x05, 0xbf, 0x39, - 0x14, 0xd6, 0xa0, 0xc2, 0x7b, 0x53, 0x84, 0xfa, 0xdc, 0xba, 0x97, 0x45, 0xff, 0x18, 0xfb, 0xd9, - 0x6d, 0x54, 0x88, 0x05, 0xae, 0xe6, 0xd4, 0x3d, 0xb7, 0x1e, 0x6d, 0xea, 0xdd, 0x75, 0xdb, 0xee, - 0xcd, 0x6b, 0xdf, 0x3f, 0xd5, 0xbb, 0x1b, 0x13, 0xce, 0x45, 0xa1, 0xbe, 0x37, 0xb5, 0x11, 0x0a, - 0xcf, 0x95, 0x05, 0xb7, 0xe7, 0x37, 0xfb, 0xc1, 0x44, 0x75, 0x2b, 0x42, 0x77, 0xfa, 0xb0, 0xcb, - 0x10, 0xe8, 0xf2, 0xed, 0xde, 0x3c, 0xb1, 0x8c, 0xd4, 0xbe, 0xeb, 0xde, 0xee, 0x61, 0xcc, 0xef, - 0xeb, 0xa7, 0xfd, 0x15, 0xb4, 0xfb, 0x85, 0x4e, 0x1b, 0x5d, 0xf7, 0xaa, 0x9f, 0xb7, 0xba, 0x4c, - 0x8d, 0xbc, 0x6e, 0x1e, 0xf6, 0xc5, 0x43, 0x09, 0x84, 0xbb, 0x84, 0x76, 0x25, 0x10, 0xe8, 0x32, - 0xfa, 0xf9, 0xed, 0x94, 0x74, 0x59, 0xfe, 0x69, 0x25, 0xba, 0x4b, 0x96, 0x45, 0x8f, 0x83, 0x2f, - 0xfa, 0x5a, 0x06, 0xe3, 0xe1, 0xcb, 0x5b, 0xeb, 0xe9, 0x42, 0xfd, 0xeb, 0x4a, 0x74, 0x2f, 0x50, - 0xa8, 0x7a, 0x80, 0xdc, 0xc2, 0xba, 0x3f, 0x50, 0x7e, 0x78, 0x7b, 0x45, 0x6a, 0xb9, 0x77, 0xf1, - 0x51, 0xfb, 0x63, 0x3c, 0x01, 0xdb, 0x23, 0xfa, 0x63, 0x3c, 0xdd, 0x5a, 0xf0, 0x90, 0x87, 0x5d, - 0x34, 0x9b, 0x2e, 0xf4, 0x90, 0x47, 0xdd, 0x50, 0x03, 0x7b, 0x8e, 0xb5, 0x4e, 0x0e, 0x73, 0xf2, - 0xea, 0x5d, 0xce, 0xb2, 0x09, 0xed, 0xa4, 0x96, 0x77, 0x3b, 0x31, 0x1c, 0x3c, 0x1c, 0xab, 0xa4, - 0x67, 0xa2, 0xd9, 0x48, 0x3d, 0xa6, 0xf4, 0x0d, 0x12, 0x3c, 0x1c, 0x6b, 0xa1, 0x84, 0x37, 0x9d, - 0x35, 0x86, 0xbc, 0x81, 0x64, 0xf1, 0x49, 0x1f, 0x14, 0xa4, 0xe8, 0xc6, 0x9b, 0x39, 0x73, 0xdf, - 0x0c, 0x59, 0x69, 0x9d, 0xbb, 0x6f, 0xf5, 0xa4, 0x09, 0xb7, 0x23, 0x2e, 0xbf, 0xe2, 0x6c, 0xc2, - 0x8b, 0xa0, 0x5b, 0x43, 0xf5, 0x72, 0xeb, 0xd2, 0x98, 0xdb, 0x5d, 0x91, 0xce, 0x67, 0x99, 0xee, - 0x4c, 0xd2, 0xad, 0x4b, 0x75, 0xbb, 0x05, 0x34, 0x3c, 0x16, 0xb4, 0x6e, 0x55, 0x7a, 0xf9, 0x24, - 0x6c, 0xc6, 0xcb, 0x2a, 0x37, 0x7a, 0xb1, 0x74, 0x3d, 0xf5, 0x30, 0xea, 0xa8, 0x27, 0x18, 0x49, - 0x5b, 0x3d, 0x69, 0x78, 0x3e, 0xe7, 0xb8, 0x35, 0xe3, 0x69, 0xbb, 0xc3, 0x56, 0x6b, 0x48, 0x3d, - 0xed, 0xaf, 0x00, 0x4f, 0x43, 0xf5, 0xa8, 0x3a, 0x4a, 0x4a, 0xb9, 0x9f, 0xa4, 0xe9, 0x60, 0x23, - 0x30, 0x4c, 0x1a, 0x28, 0x78, 0x1a, 0x8a, 0xc0, 0xc4, 0x48, 0x6e, 0x4e, 0x0f, 0xb3, 0x41, 0x97, - 0x1d, 0x45, 0xf5, 0x1a, 0xc9, 0x2e, 0x0d, 0x4e, 0xb4, 0x9c, 0xa6, 0x36, 0xb5, 0x1d, 0x86, 0x1b, - 0xae, 0x55, 0xe1, 0xed, 0xde, 0x3c, 0x78, 0xdc, 0xae, 0x28, 0xb5, 0xb2, 0x3c, 0xa4, 0x4c, 0x78, - 0x2b, 0xc9, 0xa3, 0x0e, 0x0a, 0x9c, 0x0a, 0xd6, 0xd3, 0xe8, 0x6d, 0x32, 0x99, 0x72, 0x89, 0x3e, - 0x29, 0x72, 0x81, 0xe0, 0x93, 0x22, 0x00, 0x82, 0xae, 0xab, 0x7f, 0x37, 0xc7, 0xa1, 0x87, 0x13, - 0xac, 0xeb, 0xb4, 0xb2, 0x43, 0x85, 0xba, 0x0e, 0xa5, 0x41, 0x34, 0x30, 0x6e, 0xf5, 0xeb, 0xf8, - 0x4f, 0x42, 0x66, 0xc0, 0x3b, 0xf9, 0x1b, 0xbd, 0x58, 0xb0, 0xa2, 0x58, 0x87, 0xc9, 0x2c, 0x91, - 0xd8, 0x8a, 0xe2, 0xd8, 0xa8, 0x90, 0xd0, 0x8a, 0xd2, 0x46, 0xa9, 0xea, 0x55, 0x39, 0xc2, 0xe1, - 0x24, 0x5c, 0xbd, 0x9a, 0xe9, 0x57, 0x3d, 0xc3, 0xb6, 0x1e, 0x6c, 0x66, 0x66, 0xc8, 0xc8, 0x2b, - 0xbd, 0x59, 0x46, 0xc6, 0xb6, 0x7a, 0x4d, 0x13, 0x82, 0xa1, 0xa8, 0x43, 0x29, 0xc0, 0x03, 0xfb, - 0x8a, 0x6b, 0x9e, 0xbd, 0xe6, 0x39, 0x67, 0x05, 0xcb, 0x62, 0x74, 0x73, 0xaa, 0x0c, 0xb6, 0xc8, - 0xd0, 0xe6, 0x94, 0xd4, 0x00, 0x8f, 0xcd, 0xfd, 0x17, 0x2c, 0x91, 0xa9, 0x60, 0xde, 0x64, 0xf4, - 0xdf, 0xaf, 0x7c, 0xdc, 0x83, 0x84, 0x8f, 0xcd, 0x1b, 0xc0, 0x1c, 0x7c, 0xd7, 0x4e, 0x3f, 0x0b, - 0x98, 0xf2, 0xd1, 0xd0, 0x46, 0x98, 0x56, 0x01, 0x83, 0xda, 0x24, 0xb8, 0x5c, 0xfe, 0x84, 0x2f, - 0xb1, 0x41, 0x6d, 0xf3, 0x53, 0x85, 0x84, 0x06, 0x75, 0x1b, 0x05, 0x79, 0xa6, 0xbb, 0x0f, 0x5a, - 0x0d, 0xe8, 0xbb, 0x5b, 0x9f, 0xb5, 0x4e, 0x0e, 0xcc, 0x9c, 0xbd, 0x64, 0xe1, 0x3d, 0x27, 0x40, - 0x0a, 0xba, 0x97, 0x2c, 0xf0, 0xc7, 0x04, 0x1b, 0xbd, 0x58, 0xf8, 0x48, 0x9e, 0x49, 0xfe, 0xae, - 0x79, 0x56, 0x8e, 0x14, 0x57, 0xc9, 0x5b, 0x0f, 0xcb, 0xd7, 0xbb, 0x41, 0x7b, 0x01, 0xf6, 0xb4, - 0x10, 0x31, 0x2f, 0x4b, 0xfd, 0x85, 0x42, 0xff, 0x86, 0x91, 0x96, 0x0d, 0xc1, 0xf7, 0x09, 0x1f, - 0x86, 0x21, 0xdb, 0x33, 0x5a, 0x64, 0xbf, 0x7a, 0xb3, 0x8a, 0x6a, 0xb6, 0x3f, 0x78, 0xb3, 0xd6, - 0xc9, 0xd9, 0xe9, 0xa5, 0xa5, 0xee, 0x67, 0x6e, 0xd6, 0x51, 0x75, 0xec, 0x0b, 0x37, 0x8f, 0x7b, - 0x90, 0xda, 0xd5, 0x57, 0xd1, 0xfb, 0x47, 0x62, 0x3a, 0xe2, 0xd9, 0x64, 0xf0, 0x03, 0xff, 0x0a, - 0xad, 0x98, 0x0e, 0xab, 0x9f, 0x8d, 0xd1, 0x3b, 0x94, 0xd8, 0x5e, 0x02, 0xdc, 0xe3, 0x17, 0xf3, - 0xe9, 0x48, 0x32, 0x09, 0x2e, 0x01, 0xaa, 0xdf, 0x87, 0x95, 0x80, 0xb8, 0x04, 0xe8, 0x01, 0xc0, - 0xde, 0xb8, 0xe0, 0x1c, 0xb5, 0x57, 0x09, 0x82, 0xf6, 0x34, 0x60, 0xb3, 0x08, 0x63, 0xaf, 0x4a, - 0xd4, 0xe1, 0xa5, 0x3d, 0xab, 0xa3, 0xa4, 0x44, 0x16, 0xd1, 0xa6, 0xec, 0xe0, 0xae, 0xab, 0xaf, - 0xbe, 0x3a, 0x32, 0x9f, 0xcd, 0x58, 0xb1, 0x04, 0x83, 0x5b, 0xd7, 0xd2, 0x01, 0x88, 0xc1, 0x8d, - 0x82, 0x76, 0xd6, 0x36, 0xcd, 0x1c, 0x5f, 0x1f, 0x88, 0x42, 0xcc, 0x65, 0x92, 0x71, 0xf8, 0xe5, - 0x09, 0xd3, 0xa0, 0x2e, 0x43, 0xcc, 0x5a, 0x8a, 0xb5, 0x59, 0xae, 0x22, 0xea, 0xfb, 0x84, 0xea, - 0xbb, 0xc5, 0xa5, 0x14, 0x05, 0x7c, 0x9e, 0x58, 0x5b, 0x81, 0x10, 0x91, 0xe5, 0x92, 0x30, 0xe8, - 0xfb, 0xd3, 0x24, 0x9b, 0xa2, 0x7d, 0x7f, 0xea, 0x7e, 0xf5, 0xf3, 0x1e, 0x0d, 0xd8, 0x09, 0x55, - 0x37, 0x5a, 0x3d, 0x01, 0xf4, 0xbb, 0x9c, 0x68, 0xa3, 0xbb, 0x04, 0x31, 0xa1, 0x70, 0x12, 0xb8, - 0x7a, 0x9d, 0xf3, 0x8c, 0x4f, 0x9a, 0x5b, 0x73, 0x98, 0x2b, 0x8f, 0x08, 0xba, 0x82, 0xa4, 0x8d, - 0x45, 0x4a, 0x7e, 0x36, 0xcf, 0x4e, 0x0b, 0x71, 0x99, 0xa4, 0xbc, 0x00, 0xb1, 0xa8, 0x56, 0x77, - 0xe4, 0x44, 0x2c, 0xc2, 0x38, 0x7b, 0xfd, 0x42, 0x49, 0xbd, 0x8f, 0x6f, 0x8f, 0x0b, 0x16, 0xc3, - 0xeb, 0x17, 0xb5, 0x8d, 0x36, 0x46, 0x9c, 0x0c, 0x06, 0x70, 0x27, 0xd1, 0xa9, 0x5d, 0x67, 0x4b, - 0x35, 0x3e, 0xf4, 0xbb, 0x84, 0xea, 0x5b, 0x98, 0x25, 0x48, 0x74, 0xb4, 0x39, 0x8c, 0x24, 0x12, - 0x9d, 0xb0, 0x86, 0x5d, 0x4a, 0x14, 0x77, 0xa2, 0xaf, 0x15, 0x81, 0xa5, 0xa4, 0xb6, 0xd1, 0x08, - 0x89, 0xa5, 0xa4, 0x05, 0x81, 0x80, 0xd4, 0x4c, 0x83, 0x29, 0x1a, 0x90, 0x8c, 0x34, 0x18, 0x90, - 0x5c, 0xca, 0x06, 0x8a, 0xc3, 0x2c, 0x91, 0x09, 0x4b, 0x47, 0x5c, 0x9e, 0xb2, 0x82, 0xcd, 0xb8, - 0xe4, 0x05, 0x0c, 0x14, 0x1a, 0x19, 0x7a, 0x0c, 0x11, 0x28, 0x28, 0x56, 0x3b, 0xfc, 0xbd, 0xe8, - 0xc3, 0x6a, 0xdd, 0xe7, 0x99, 0xfe, 0x33, 0x1b, 0xaf, 0xd4, 0xdf, 0xe7, 0x19, 0x7c, 0x64, 0x6c, - 0x8c, 0x64, 0xc1, 0xd9, 0xac, 0xb1, 0xfd, 0x81, 0xf9, 0x5d, 0x81, 0x4f, 0x57, 0xaa, 0xf1, 0x7c, - 0x22, 0x64, 0x72, 0x59, 0x6d, 0xb3, 0xf5, 0x1b, 0x44, 0x60, 0x3c, 0xbb, 0xe2, 0x61, 0xe0, 0x5b, - 0x14, 0x18, 0x67, 0xe3, 0xb4, 0x2b, 0x3d, 0xe3, 0x79, 0x0a, 0xe3, 0xb4, 0xa7, 0xad, 0x00, 0x22, - 0x4e, 0xa3, 0xa0, 0x9d, 0x9c, 0xae, 0x78, 0xcc, 0xc3, 0x95, 0x19, 0xf3, 0x7e, 0x95, 0x19, 0x7b, - 0x2f, 0x65, 0xa4, 0xd1, 0x87, 0xc7, 0x7c, 0x76, 0xc1, 0x8b, 0xf2, 0x2a, 0xc9, 0x0f, 0xaa, 0x84, - 0x8b, 0xc9, 0x39, 0x7c, 0x6d, 0xd1, 0x12, 0x43, 0x83, 0x10, 0x59, 0x29, 0x81, 0xda, 0x95, 0xc0, - 0x02, 0x87, 0xe5, 0x09, 0x9b, 0x71, 0xf5, 0x65, 0x0d, 0xb0, 0x12, 0x38, 0x46, 0x1c, 0x88, 0x58, - 0x09, 0x48, 0xd8, 0x79, 0xbf, 0xcb, 0x32, 0x67, 0x7c, 0x5a, 0x8d, 0xb0, 0xe2, 0x94, 0x2d, 0x67, - 0x3c, 0x93, 0xda, 0x24, 0x38, 0x93, 0x77, 0x4c, 0xe2, 0x3c, 0x71, 0x26, 0xdf, 0x47, 0xcf, 0x09, - 0x4d, 0x5e, 0xc3, 0x9f, 0x8a, 0x42, 0xd6, 0x7f, 0x44, 0xe7, 0xbc, 0x48, 0x41, 0x68, 0xf2, 0x1b, - 0xd5, 0x23, 0x89, 0xd0, 0x14, 0xd6, 0x70, 0xbe, 0x3e, 0xef, 0x95, 0xe1, 0x0d, 0x2f, 0xcc, 0x38, - 0x79, 0x35, 0x63, 0x49, 0xaa, 0x47, 0xc3, 0x8f, 0x02, 0xb6, 0x09, 0x1d, 0xe2, 0xeb, 0xf3, 0x7d, - 0x75, 0x9d, 0xef, 0xf5, 0x87, 0x4b, 0x08, 0x1e, 0x11, 0x74, 0xd8, 0x27, 0x1e, 0x11, 0x74, 0x6b, - 0xd9, 0x9d, 0xbb, 0x65, 0x15, 0xb7, 0x54, 0xc4, 0xae, 0x98, 0xc0, 0xf3, 0x42, 0xc7, 0x26, 0x00, - 0x89, 0x9d, 0x7b, 0x50, 0xc1, 0xa6, 0x06, 0x16, 0xdb, 0x4f, 0x32, 0x96, 0x26, 0x3f, 0x83, 0x69, - 0xbd, 0x63, 0xa7, 0x21, 0x88, 0xd4, 0x00, 0x27, 0x31, 0x57, 0x07, 0x5c, 0x8e, 0x93, 0x2a, 0xf4, - 0xaf, 0x07, 0xda, 0x4d, 0x11, 0xdd, 0xae, 0x1c, 0xd2, 0xf9, 0x46, 0x2b, 0x6c, 0xd6, 0x9d, 0x3c, - 0x1f, 0x55, 0xab, 0xea, 0x19, 0x8f, 0x79, 0x92, 0xcb, 0xc1, 0x8b, 0x70, 0x5b, 0x01, 0x9c, 0xb8, - 0x68, 0xd1, 0x43, 0xcd, 0x79, 0x7c, 0x5f, 0xc5, 0x92, 0x51, 0xfd, 0xd7, 0xe5, 0xce, 0x4b, 0x5e, - 0xe8, 0x44, 0xe3, 0x80, 0x4b, 0x30, 0x3b, 0x1d, 0x6e, 0xe8, 0x80, 0x55, 0x45, 0x89, 0xd9, 0x19, - 0xd6, 0xb0, 0x87, 0x7d, 0x0e, 0x77, 0xc6, 0x4b, 0x91, 0x2e, 0xb8, 0xba, 0x6f, 0xb8, 0x49, 0x1a, - 0x73, 0x28, 0xe2, 0xb0, 0x8f, 0xa6, 0x6d, 0xb6, 0xd6, 0x76, 0xbb, 0x93, 0x2d, 0x0f, 0xe1, 0x95, - 0x09, 0xc4, 0x92, 0xc2, 0x88, 0x6c, 0x2d, 0x80, 0x3b, 0x87, 0xe1, 0x85, 0x60, 0x93, 0x98, 0x95, - 0xf2, 0x94, 0x2d, 0x53, 0xc1, 0x26, 0x6a, 0x5d, 0x87, 0x87, 0xe1, 0x0d, 0x33, 0x74, 0x21, 0xea, - 0x30, 0x9c, 0x82, 0xdd, 0xec, 0x4c, 0xfd, 0xd1, 0x3c, 0x7d, 0x97, 0x13, 0x66, 0x67, 0xaa, 0xbc, - 0xf0, 0x1e, 0xe7, 0xc3, 0x30, 0x64, 0xdf, 0x41, 0xab, 0x45, 0x2a, 0x0d, 0xb9, 0x87, 0xe9, 0x78, - 0x09, 0xc8, 0xfd, 0x00, 0x61, 0xbf, 0x4b, 0x51, 0xff, 0xde, 0xfc, 0xdd, 0x17, 0xa9, 0xbf, 0x64, - 0xbd, 0x89, 0xe9, 0xba, 0xd0, 0xd0, 0xfd, 0xc0, 0xdd, 0x56, 0x4f, 0xda, 0xa6, 0x99, 0xbb, 0x57, - 0x4c, 0xee, 0x4c, 0x26, 0xc7, 0xbc, 0x44, 0x5e, 0x28, 0xaf, 0x84, 0x43, 0x2b, 0x25, 0xd2, 0xcc, - 0x36, 0x65, 0x07, 0x7a, 0x25, 0x7b, 0x35, 0x49, 0xa4, 0x96, 0x35, 0x37, 0xa4, 0x37, 0xdb, 0x06, - 0xda, 0x14, 0x51, 0x2b, 0x9a, 0xb6, 0xb1, 0xbc, 0x62, 0xc6, 0x62, 0x3a, 0x4d, 0xb9, 0x86, 0xce, - 0x38, 0xab, 0x3f, 0xe4, 0xb7, 0xdd, 0xb6, 0x85, 0x82, 0x44, 0x2c, 0x0f, 0x2a, 0xd8, 0x34, 0xb2, - 0xc2, 0xea, 0x47, 0x52, 0x4d, 0xc3, 0xae, 0xb5, 0xcd, 0x78, 0x00, 0x91, 0x46, 0xa2, 0xa0, 0x7d, - 0xef, 0xad, 0x12, 0x1f, 0xf0, 0xa6, 0x25, 0xe0, 0x27, 0x88, 0x94, 0xb2, 0x23, 0x26, 0xde, 0x7b, - 0x43, 0x30, 0xbb, 0x4f, 0x00, 0x1e, 0x5e, 0x2e, 0x0f, 0x27, 0x70, 0x9f, 0x00, 0xf5, 0x15, 0x43, - 0xec, 0x13, 0x28, 0xd6, 0xef, 0x3a, 0x73, 0xee, 0x75, 0xc4, 0x4a, 0x5b, 0x39, 0xa4, 0xeb, 0x50, - 0x30, 0xd4, 0x75, 0x94, 0x82, 0xdf, 0xa4, 0xee, 0xd1, 0x1a, 0xd2, 0xa4, 0xd8, 0xb9, 0xda, 0x6a, - 0x17, 0x66, 0xe3, 0x92, 0xd9, 0x4f, 0xaa, 0x2b, 0x4b, 0xf8, 0x17, 0xfc, 0x6b, 0x21, 0x11, 0x97, - 0x5a, 0x50, 0x6d, 0xfb, 0xe5, 0xfd, 0xff, 0xfc, 0xe6, 0xce, 0xca, 0x2f, 0xbe, 0xb9, 0xb3, 0xf2, - 0xdf, 0xdf, 0xdc, 0x59, 0xf9, 0xf9, 0xb7, 0x77, 0xde, 0xfb, 0xc5, 0xb7, 0x77, 0xde, 0xfb, 0xaf, - 0x6f, 0xef, 0xbc, 0xf7, 0xf5, 0xfb, 0xfa, 0x8f, 0xa9, 0x5e, 0xfc, 0x3f, 0xf5, 0x27, 0x51, 0x9f, - 0xff, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x39, 0xd6, 0xda, 0x85, 0x70, 0x75, 0x00, 0x00, + 0x7c, 0x16, 0x1e, 0x78, 0xdc, 0x47, 0x1e, 0xd1, 0xcc, 0x1b, 0x9f, 0x02, 0x65, 0x64, 0x64, 0x5c, + 0x4e, 0x9e, 0x13, 0x99, 0xde, 0xa7, 0x6e, 0xd5, 0xf9, 0x9d, 0x73, 0xe2, 0x7a, 0xe2, 0x44, 0x64, + 0x64, 0x3a, 0xba, 0x9b, 0x5f, 0x6c, 0xe7, 0x85, 0x90, 0xa2, 0xdc, 0x2e, 0x79, 0xb1, 0x48, 0x62, + 0xde, 0xfc, 0x3b, 0x54, 0x3f, 0x0f, 0xde, 0x67, 0xd9, 0x52, 0x2e, 0x73, 0xfe, 0xc9, 0xc7, 0x96, + 0x8c, 0xc5, 0x6c, 0xc6, 0xb2, 0x49, 0x59, 0x23, 0x9f, 0x7c, 0x64, 0x25, 0x7c, 0xc1, 0x33, 0xa9, + 0x7f, 0x7f, 0xf6, 0x9f, 0xff, 0xbb, 0x12, 0x7d, 0xb0, 0x9b, 0x26, 0x3c, 0x93, 0xbb, 0x5a, 0x63, + 0xf0, 0x75, 0xf4, 0xdd, 0x9d, 0x3c, 0x3f, 0xe0, 0xf2, 0x0d, 0x2f, 0xca, 0x44, 0x64, 0x83, 0x4f, + 0x87, 0xda, 0xc1, 0xf0, 0x2c, 0x8f, 0x87, 0x3b, 0x79, 0x3e, 0xb4, 0xc2, 0xe1, 0x19, 0xff, 0xe9, + 0x9c, 0x97, 0xf2, 0x93, 0x87, 0x61, 0xa8, 0xcc, 0x45, 0x56, 0xf2, 0xc1, 0x65, 0xf4, 0x1b, 0x3b, + 0x79, 0x3e, 0xe2, 0x72, 0x8f, 0x57, 0x15, 0x18, 0x49, 0x26, 0xf9, 0x60, 0xad, 0xa5, 0xea, 0x03, + 0xc6, 0xc7, 0x7a, 0x37, 0xa8, 0xfd, 0x8c, 0xa3, 0xef, 0x54, 0x7e, 0xae, 0xe6, 0x72, 0x22, 0x6e, + 0xb2, 0xc1, 0xfd, 0xb6, 0xa2, 0x16, 0x19, 0xdb, 0x0f, 0x42, 0x88, 0xb6, 0xfa, 0x36, 0xfa, 0xd5, + 0xb7, 0x2c, 0x4d, 0xb9, 0xdc, 0x2d, 0x78, 0x55, 0x70, 0x5f, 0xa7, 0x16, 0x0d, 0x6b, 0x99, 0xb1, + 0xfb, 0x69, 0x90, 0xd1, 0x86, 0xbf, 0x8e, 0xbe, 0x5b, 0x4b, 0xce, 0x78, 0x2c, 0x16, 0xbc, 0x18, + 0xa0, 0x5a, 0x5a, 0x48, 0x34, 0x79, 0x0b, 0x82, 0xb6, 0x77, 0x45, 0xb6, 0xe0, 0x85, 0xc4, 0x6d, + 0x6b, 0x61, 0xd8, 0xb6, 0x85, 0xb4, 0xed, 0xbf, 0x5d, 0x89, 0xbe, 0xbf, 0x13, 0xc7, 0x62, 0x9e, + 0xc9, 0x23, 0x11, 0xb3, 0xf4, 0x28, 0xc9, 0xae, 0x4f, 0xf8, 0xcd, 0xee, 0x55, 0xc5, 0x67, 0x53, + 0x3e, 0x78, 0xee, 0xb7, 0x6a, 0x8d, 0x0e, 0x0d, 0x3b, 0x74, 0x61, 0xe3, 0xfb, 0xf3, 0xdb, 0x29, + 0xe9, 0xb2, 0xfc, 0xe3, 0x4a, 0x74, 0x07, 0x96, 0x65, 0x24, 0xd2, 0x05, 0xb7, 0xa5, 0x79, 0xd1, + 0x61, 0xd8, 0xc7, 0x4d, 0x79, 0xbe, 0xb8, 0xad, 0x9a, 0x2e, 0x51, 0x1a, 0x7d, 0xe8, 0x0e, 0x97, + 0x11, 0x2f, 0xd5, 0x74, 0x7a, 0x4c, 0x8f, 0x08, 0x8d, 0x18, 0xcf, 0x4f, 0xfa, 0xa0, 0xda, 0x5b, + 0x12, 0x0d, 0xb4, 0xb7, 0x54, 0x94, 0xc6, 0xd9, 0x3a, 0x6a, 0xc1, 0x21, 0x8c, 0xaf, 0xc7, 0x3d, + 0x48, 0xed, 0xea, 0x8f, 0xa2, 0x5f, 0x7b, 0x2b, 0x8a, 0xeb, 0x32, 0x67, 0x31, 0xd7, 0x53, 0xe1, + 0x91, 0xaf, 0xdd, 0x48, 0xe1, 0x6c, 0x58, 0xed, 0xc2, 0x9c, 0x41, 0xdb, 0x08, 0x5f, 0xe7, 0x1c, + 0xc6, 0x20, 0xab, 0x58, 0x09, 0xa9, 0x41, 0x0b, 0x21, 0x6d, 0xfb, 0x3a, 0x1a, 0x58, 0xdb, 0x17, + 0x7f, 0xcc, 0x63, 0xb9, 0x33, 0x99, 0xc0, 0x5e, 0xb1, 0xba, 0x8a, 0x18, 0xee, 0x4c, 0x26, 0x54, + 0xaf, 0xe0, 0xa8, 0x76, 0x76, 0x13, 0x7d, 0x04, 0x9c, 0x1d, 0x25, 0xa5, 0x72, 0xb8, 0x15, 0xb6, + 0xa2, 0x31, 0xe3, 0x74, 0xd8, 0x17, 0xd7, 0x8e, 0xff, 0x7c, 0x25, 0xfa, 0x1e, 0xe2, 0xf9, 0x8c, + 0xcf, 0xc4, 0x82, 0x0f, 0x9e, 0x76, 0x5b, 0xab, 0x49, 0xe3, 0xff, 0xb3, 0x5b, 0x68, 0x20, 0xc3, + 0x64, 0xc4, 0x53, 0x1e, 0x4b, 0x72, 0x98, 0xd4, 0xe2, 0xce, 0x61, 0x62, 0x30, 0x67, 0x86, 0x35, + 0xc2, 0x03, 0x2e, 0x77, 0xe7, 0x45, 0xc1, 0x33, 0x49, 0xf6, 0xa5, 0x45, 0x3a, 0xfb, 0xd2, 0x43, + 0x91, 0xfa, 0x1c, 0x70, 0xb9, 0x93, 0xa6, 0x64, 0x7d, 0x6a, 0x71, 0x67, 0x7d, 0x0c, 0xa6, 0x3d, + 0xc4, 0xd1, 0xaf, 0x3b, 0x2d, 0x26, 0x0f, 0xb3, 0x4b, 0x31, 0xa0, 0xdb, 0x42, 0xc9, 0x8d, 0x8f, + 0xb5, 0x4e, 0x0e, 0xa9, 0xc6, 0xab, 0x77, 0xb9, 0x28, 0xe8, 0x6e, 0xa9, 0xc5, 0x9d, 0xd5, 0x30, + 0x98, 0xf6, 0xf0, 0x87, 0xd1, 0x07, 0x3a, 0x4a, 0x36, 0xeb, 0xd9, 0x43, 0x34, 0x84, 0xc2, 0x05, + 0xed, 0x51, 0x07, 0x65, 0x83, 0x83, 0x96, 0xe9, 0xe0, 0xf3, 0x29, 0xaa, 0x07, 0x42, 0xcf, 0xc3, + 0x30, 0xd4, 0xb2, 0xbd, 0xc7, 0x53, 0x4e, 0xda, 0xae, 0x85, 0x1d, 0xb6, 0x0d, 0xa4, 0x6d, 0x17, + 0xd1, 0x6f, 0x99, 0x66, 0xa9, 0xd6, 0x51, 0x25, 0xaf, 0x82, 0xf4, 0x06, 0x51, 0x6f, 0x17, 0x32, + 0xbe, 0x36, 0xfb, 0xc1, 0xad, 0xfa, 0xe8, 0x19, 0x88, 0xd7, 0x07, 0xcc, 0xbf, 0x87, 0x61, 0xa8, + 0xd5, 0xcd, 0xc7, 0xc9, 0xb4, 0xa8, 0x3a, 0x02, 0xd7, 0xd3, 0xd2, 0x8e, 0x6e, 0xb6, 0x94, 0x36, + 0xff, 0x77, 0x2b, 0xd1, 0x0f, 0xb4, 0xf0, 0x55, 0xc6, 0x2e, 0x52, 0xae, 0x56, 0xdc, 0x13, 0x2e, + 0x6f, 0x44, 0x71, 0x3d, 0x5a, 0x66, 0x31, 0x91, 0x5d, 0xe0, 0x70, 0x47, 0x76, 0x41, 0x2a, 0x39, + 0x09, 0xa5, 0x6e, 0x47, 0x29, 0x72, 0x98, 0x50, 0x36, 0x0d, 0x24, 0x45, 0x4e, 0x25, 0x94, 0x3e, + 0xd2, 0xb2, 0x7a, 0x5c, 0x45, 0x65, 0xdc, 0xea, 0xb1, 0x1b, 0x86, 0x1f, 0x84, 0x10, 0x1b, 0x15, + 0x9b, 0xf9, 0x21, 0xb2, 0xcb, 0x64, 0x7a, 0x9e, 0x4f, 0xaa, 0xce, 0x79, 0x8c, 0x4f, 0x00, 0x07, + 0x21, 0xa2, 0x22, 0x81, 0x6a, 0x6f, 0xff, 0x60, 0xf3, 0x2e, 0x3d, 0x53, 0xf7, 0x0b, 0x31, 0x3b, + 0xe2, 0x53, 0x16, 0x2f, 0x75, 0x78, 0xf9, 0x3c, 0x34, 0xaf, 0x21, 0x6d, 0x0a, 0xf1, 0xe2, 0x96, + 0x5a, 0xba, 0x3c, 0xff, 0xbe, 0x12, 0x3d, 0x6c, 0xaa, 0x7f, 0xc5, 0xb2, 0x29, 0xd7, 0xfd, 0x59, + 0x97, 0x7e, 0x27, 0x9b, 0x9c, 0xf1, 0x52, 0xb2, 0x42, 0x0e, 0x7e, 0x84, 0x57, 0x32, 0xa4, 0x63, + 0xca, 0xf6, 0xe3, 0x5f, 0x4a, 0xd7, 0xf6, 0xfa, 0xa8, 0x8a, 0x9b, 0x3a, 0xc2, 0xf8, 0xbd, 0xae, + 0x24, 0x30, 0xbe, 0x3c, 0x08, 0x21, 0xb6, 0xd7, 0x95, 0xe0, 0x30, 0x5b, 0x24, 0x92, 0x1f, 0xf0, + 0x8c, 0x17, 0xed, 0x5e, 0xaf, 0x55, 0x7d, 0x84, 0xe8, 0x75, 0x02, 0xb5, 0xb1, 0xcc, 0xf3, 0x66, + 0xd6, 0xde, 0x8d, 0x80, 0x91, 0xd6, 0xea, 0xbb, 0xd9, 0x0f, 0xb6, 0x9b, 0x47, 0xc7, 0xe7, 0x19, + 0x5f, 0x88, 0x6b, 0xb8, 0x79, 0x74, 0x4d, 0xd4, 0x00, 0xb1, 0x79, 0x44, 0x41, 0xbb, 0x40, 0x3a, + 0x7e, 0xde, 0x24, 0xfc, 0x06, 0x2c, 0x90, 0xae, 0x72, 0x25, 0x26, 0x16, 0x48, 0x04, 0xd3, 0x1e, + 0x4e, 0xa2, 0x5f, 0x51, 0xc2, 0xdf, 0x17, 0x49, 0x36, 0xb8, 0x8b, 0x28, 0x55, 0x02, 0x63, 0xf5, + 0x1e, 0x0d, 0x80, 0x12, 0x57, 0xbf, 0xee, 0xb2, 0x2c, 0xe6, 0x29, 0x5a, 0x62, 0x2b, 0x0e, 0x96, + 0xd8, 0xc3, 0x6c, 0x66, 0xa2, 0x84, 0x55, 0xfc, 0x1a, 0x5d, 0xb1, 0x22, 0xc9, 0xa6, 0x03, 0x4c, + 0xd7, 0x91, 0x13, 0x99, 0x09, 0xc6, 0x81, 0x21, 0xac, 0x15, 0x77, 0xf2, 0xbc, 0xa8, 0xc2, 0x22, + 0x36, 0x84, 0x7d, 0x24, 0x38, 0x84, 0x5b, 0x28, 0xee, 0x6d, 0x8f, 0xc7, 0x69, 0x92, 0x05, 0xbd, + 0x69, 0xa4, 0x8f, 0x37, 0x8b, 0x82, 0xc1, 0x7b, 0xc4, 0xd9, 0x82, 0x37, 0x35, 0xc3, 0x5a, 0xc6, + 0x05, 0x82, 0x83, 0x17, 0x80, 0x76, 0x1b, 0xa8, 0xc4, 0xc7, 0xec, 0x9a, 0x57, 0x0d, 0xcc, 0xab, + 0x75, 0x6d, 0x80, 0xe9, 0x7b, 0x04, 0xb1, 0x0d, 0xc4, 0x49, 0xed, 0x6a, 0x1e, 0x7d, 0xa4, 0xe4, + 0xa7, 0xac, 0x90, 0x49, 0x9c, 0xe4, 0x2c, 0x6b, 0xb6, 0x17, 0xd8, 0xbc, 0x6e, 0x51, 0xc6, 0xe5, + 0x56, 0x4f, 0x5a, 0xbb, 0xfd, 0xb7, 0x95, 0xe8, 0x3e, 0xf4, 0x7b, 0xca, 0x8b, 0x59, 0xa2, 0x76, + 0xa9, 0x65, 0x1d, 0x84, 0x07, 0x5f, 0x86, 0x8d, 0xb6, 0x14, 0x4c, 0x69, 0x7e, 0x78, 0x7b, 0x45, + 0x9b, 0x6b, 0x8d, 0x74, 0xe6, 0xfe, 0xba, 0x98, 0xb4, 0x4e, 0x71, 0x46, 0x4d, 0x3a, 0xae, 0x84, + 0x44, 0xae, 0xd5, 0x82, 0xc0, 0x0c, 0x3f, 0xcf, 0xca, 0xc6, 0x3a, 0x36, 0xc3, 0xad, 0x38, 0x38, + 0xc3, 0x3d, 0x4c, 0x7b, 0xf8, 0x83, 0x28, 0xaa, 0xf7, 0x72, 0x6a, 0xbf, 0xed, 0xc7, 0x1c, 0xbd, + 0xc9, 0xf3, 0x36, 0xdb, 0xf7, 0x03, 0x84, 0x5d, 0xe8, 0xea, 0xdf, 0xd5, 0x31, 0xc2, 0x00, 0xd5, + 0x50, 0x22, 0x62, 0xa1, 0x03, 0x08, 0x2c, 0xe8, 0xe8, 0x4a, 0xdc, 0xe0, 0x05, 0xad, 0x24, 0xe1, + 0x82, 0x6a, 0xc2, 0x1e, 0xec, 0xe9, 0x82, 0x62, 0x07, 0x7b, 0x4d, 0x31, 0x42, 0x07, 0x7b, 0x90, + 0xd1, 0x86, 0x45, 0xf4, 0x9b, 0xae, 0xe1, 0x97, 0x42, 0x5c, 0xcf, 0x58, 0x71, 0x3d, 0x78, 0x42, + 0x2b, 0x37, 0x8c, 0x71, 0xb4, 0xd1, 0x8b, 0xb5, 0x41, 0xcd, 0x75, 0x58, 0xa5, 0x49, 0xe7, 0x45, + 0x0a, 0x82, 0x9a, 0x67, 0x43, 0x23, 0x44, 0x50, 0x23, 0x50, 0x3b, 0x2a, 0x5d, 0x6f, 0x23, 0x0e, + 0xb7, 0x92, 0x9e, 0xfa, 0x88, 0x53, 0x5b, 0x49, 0x04, 0x83, 0x43, 0xe8, 0xa0, 0x60, 0xf9, 0x15, + 0x3e, 0x84, 0x94, 0x28, 0x3c, 0x84, 0x1a, 0x04, 0xf6, 0xf7, 0x88, 0xb3, 0x22, 0xbe, 0xc2, 0xfb, + 0xbb, 0x96, 0x85, 0xfb, 0xdb, 0x30, 0xb0, 0xbf, 0x6b, 0xc1, 0xdb, 0x44, 0x5e, 0x1d, 0x73, 0xc9, + 0xf0, 0xfe, 0xf6, 0x99, 0x70, 0x7f, 0xb7, 0x58, 0x9b, 0x87, 0xb9, 0x0e, 0x47, 0xf3, 0x8b, 0x32, + 0x2e, 0x92, 0x0b, 0x3e, 0x08, 0x58, 0x31, 0x10, 0x91, 0x87, 0x91, 0xb0, 0xf6, 0xf9, 0xf3, 0x95, + 0xe8, 0x6e, 0xd3, 0xed, 0xa2, 0x2c, 0x75, 0xcc, 0xf3, 0xdd, 0xbf, 0xc0, 0xfb, 0x97, 0xc0, 0x89, + 0xa3, 0xd6, 0x1e, 0x6a, 0xce, 0x9a, 0x80, 0x17, 0xe9, 0x3c, 0x2b, 0x4d, 0xa1, 0xbe, 0xec, 0x63, + 0xdd, 0x51, 0x20, 0xd6, 0x84, 0x5e, 0x8a, 0x76, 0x39, 0xd6, 0xfd, 0xd3, 0xc8, 0x0e, 0x27, 0x25, + 0x58, 0x8e, 0x9b, 0xf6, 0x76, 0x08, 0x62, 0x39, 0xc6, 0x49, 0x38, 0x14, 0x0e, 0x0a, 0x31, 0xcf, + 0xcb, 0x8e, 0xa1, 0x00, 0xa0, 0xf0, 0x50, 0x68, 0xc3, 0xda, 0xe7, 0xbb, 0xe8, 0xb7, 0xdd, 0xe1, + 0xe7, 0x36, 0xf6, 0x16, 0x3d, 0xa6, 0xb0, 0x26, 0x1e, 0xf6, 0xc5, 0x6d, 0x42, 0xda, 0x78, 0x96, + 0x7b, 0x5c, 0xb2, 0x24, 0x2d, 0x07, 0xab, 0xb8, 0x8d, 0x46, 0x4e, 0x24, 0xa4, 0x18, 0x07, 0xe3, + 0xdb, 0xde, 0x3c, 0x4f, 0x93, 0xb8, 0x7d, 0xd0, 0xad, 0x75, 0x8d, 0x38, 0x1c, 0xdf, 0x5c, 0x0c, + 0xc6, 0xeb, 0x6a, 0xc9, 0x57, 0xff, 0x19, 0x2f, 0x73, 0x8e, 0xc7, 0x6b, 0x0f, 0x09, 0xc7, 0x6b, + 0x88, 0xc2, 0xfa, 0x8c, 0xb8, 0x3c, 0x62, 0x4b, 0x31, 0x27, 0xe2, 0xb5, 0x11, 0x87, 0xeb, 0xe3, + 0x62, 0x36, 0x27, 0x34, 0x1e, 0x0e, 0x33, 0xc9, 0x8b, 0x8c, 0xa5, 0xfb, 0x29, 0x9b, 0x96, 0x03, + 0x22, 0xc6, 0xf8, 0x14, 0x91, 0x13, 0xd2, 0x34, 0xd2, 0x8c, 0x87, 0xe5, 0x3e, 0x5b, 0x88, 0x22, + 0x91, 0x74, 0x33, 0x5a, 0xa4, 0xb3, 0x19, 0x3d, 0x14, 0xf5, 0xb6, 0x53, 0xc4, 0x57, 0xc9, 0x82, + 0x4f, 0x02, 0xde, 0x1a, 0xa4, 0x87, 0x37, 0x07, 0x45, 0x3a, 0x6d, 0x24, 0xe6, 0x45, 0xcc, 0xc9, + 0x4e, 0xab, 0xc5, 0x9d, 0x9d, 0x66, 0x30, 0xed, 0xe1, 0xaf, 0x56, 0xa2, 0xdf, 0xa9, 0xa5, 0xee, + 0xe9, 0xf3, 0x1e, 0x2b, 0xaf, 0x2e, 0x04, 0x2b, 0x26, 0x83, 0xcf, 0x30, 0x3b, 0x28, 0x6a, 0x5c, + 0x3f, 0xbb, 0x8d, 0x0a, 0x6c, 0xd6, 0xa3, 0xa4, 0x74, 0x66, 0x1c, 0xda, 0xac, 0x1e, 0x12, 0x6e, + 0x56, 0x88, 0xc2, 0x00, 0xa2, 0xe4, 0xf5, 0x51, 0xcc, 0x2a, 0xa9, 0xef, 0x9f, 0xc7, 0xac, 0x75, + 0x72, 0x30, 0x3e, 0x56, 0x42, 0x7f, 0xb4, 0x6c, 0x51, 0x36, 0xf0, 0x11, 0x33, 0xec, 0x8b, 0x93, + 0x9e, 0xcd, 0xac, 0x08, 0x7b, 0x6e, 0xcd, 0x8c, 0x61, 0x5f, 0x9c, 0xf0, 0xec, 0x84, 0xb5, 0x90, + 0x67, 0x24, 0xb4, 0x0d, 0xfb, 0xe2, 0x30, 0xfb, 0xd2, 0x4c, 0xb3, 0x2e, 0x3c, 0x09, 0xd8, 0x81, + 0x6b, 0xc3, 0x46, 0x2f, 0x56, 0x3b, 0xfc, 0x9b, 0x95, 0xe8, 0xfb, 0xd6, 0xe3, 0xb1, 0x98, 0x24, + 0x97, 0xcb, 0x1a, 0x7a, 0xc3, 0xd2, 0x39, 0x2f, 0x07, 0xcf, 0x28, 0x6b, 0x6d, 0xd6, 0x94, 0xe0, + 0xf9, 0xad, 0x74, 0xe0, 0xdc, 0xd9, 0xc9, 0xf3, 0x74, 0x39, 0xe6, 0xb3, 0x3c, 0x25, 0xe7, 0x8e, + 0x87, 0x84, 0xe7, 0x0e, 0x44, 0x61, 0x56, 0x3e, 0x16, 0x55, 0xce, 0x8f, 0x66, 0xe5, 0x4a, 0x14, + 0xce, 0xca, 0x1b, 0x04, 0xe6, 0x4a, 0x63, 0xb1, 0x2b, 0xd2, 0x94, 0xc7, 0xb2, 0xfd, 0x04, 0xdb, + 0x68, 0x5a, 0x22, 0x9c, 0x2b, 0x01, 0xd2, 0x9e, 0xc6, 0x34, 0x7b, 0x48, 0x56, 0xf0, 0x97, 0xcb, + 0xa3, 0x24, 0xbb, 0x1e, 0xe0, 0x69, 0x81, 0x05, 0x88, 0xd3, 0x18, 0x14, 0x84, 0x7b, 0xd5, 0xf3, + 0x6c, 0x22, 0xf0, 0xbd, 0x6a, 0x25, 0x09, 0xef, 0x55, 0x35, 0x01, 0x4d, 0x9e, 0x71, 0xca, 0x64, + 0x25, 0x09, 0x9b, 0xd4, 0x04, 0x16, 0x0a, 0xf5, 0x99, 0x3d, 0x19, 0x0a, 0xc1, 0x29, 0xfd, 0x5a, + 0x27, 0x07, 0x47, 0x68, 0xb3, 0x69, 0xdd, 0xe7, 0x32, 0xbe, 0xc2, 0x47, 0xa8, 0x87, 0x84, 0x47, + 0x28, 0x44, 0x61, 0x95, 0xc6, 0xc2, 0x6c, 0xba, 0x57, 0xf1, 0xf1, 0xd1, 0xda, 0x70, 0xaf, 0x75, + 0x72, 0x70, 0x1b, 0x79, 0x38, 0x53, 0x6d, 0x86, 0x0e, 0xf2, 0x5a, 0x16, 0xde, 0x46, 0x1a, 0x06, + 0x96, 0xbe, 0x16, 0x54, 0xcd, 0x89, 0x97, 0xde, 0xca, 0xc3, 0xa5, 0xf7, 0x38, 0xed, 0xe4, 0x5f, + 0xcc, 0x36, 0xae, 0x96, 0x9e, 0x88, 0x6a, 0x8e, 0xbc, 0x61, 0x69, 0x32, 0x61, 0x92, 0x8f, 0xc5, + 0x35, 0xcf, 0xf0, 0x1d, 0x93, 0x2e, 0x6d, 0xcd, 0x0f, 0x3d, 0x85, 0xf0, 0x8e, 0x29, 0xac, 0x08, + 0xc7, 0x49, 0x4d, 0x9f, 0x97, 0x7c, 0x97, 0x95, 0x44, 0x24, 0xf3, 0x90, 0xf0, 0x38, 0x81, 0x28, + 0xcc, 0x57, 0x6b, 0xf9, 0xab, 0x77, 0x39, 0x2f, 0x12, 0x9e, 0xc5, 0x1c, 0xcf, 0x57, 0x21, 0x15, + 0xce, 0x57, 0x11, 0x1a, 0xee, 0xd5, 0xf6, 0x98, 0xe4, 0x2f, 0x97, 0xe3, 0x64, 0xc6, 0x4b, 0xc9, + 0x66, 0x39, 0xbe, 0x57, 0x03, 0x50, 0x78, 0xaf, 0xd6, 0x86, 0x5b, 0x47, 0x43, 0x26, 0x20, 0xb6, + 0x2f, 0xbe, 0x40, 0x22, 0x70, 0xf1, 0x85, 0x40, 0x61, 0xc3, 0x5a, 0x00, 0x3d, 0x1c, 0x6e, 0x59, + 0x09, 0x1e, 0x0e, 0xd3, 0x74, 0xeb, 0xc0, 0xcd, 0x30, 0xa3, 0x6a, 0x6a, 0x76, 0x14, 0x7d, 0xe4, + 0x4e, 0xd1, 0x8d, 0x5e, 0x2c, 0x7e, 0xc2, 0x77, 0xc6, 0x53, 0xa6, 0x96, 0xad, 0xc0, 0x31, 0x5a, + 0xc3, 0xf4, 0x39, 0xe1, 0x73, 0x58, 0xed, 0xf0, 0x2f, 0x56, 0xa2, 0x4f, 0x30, 0x8f, 0xaf, 0x73, + 0xe5, 0xf7, 0x69, 0xb7, 0xad, 0x9a, 0x24, 0x6e, 0xf6, 0x84, 0x35, 0x74, 0x19, 0xfe, 0x24, 0xfa, + 0xb8, 0x11, 0xd9, 0x8b, 0x3f, 0xba, 0x00, 0x7e, 0xd2, 0x66, 0xca, 0x0f, 0x39, 0xe3, 0x7e, 0xbb, + 0x37, 0x6f, 0xf7, 0x43, 0x7e, 0xb9, 0x4a, 0xb0, 0x1f, 0x32, 0x36, 0xb4, 0x98, 0xd8, 0x0f, 0x21, + 0x98, 0x9d, 0x9d, 0x6e, 0xf5, 0xde, 0x26, 0xf2, 0x4a, 0xe5, 0x5b, 0x60, 0x76, 0x7a, 0x65, 0x35, + 0x10, 0x31, 0x3b, 0x49, 0x18, 0x66, 0x24, 0x0d, 0x58, 0xcd, 0x4d, 0x2c, 0x96, 0x1b, 0x43, 0xee, + 0xcc, 0x5c, 0xef, 0x06, 0xe1, 0x78, 0x6d, 0xc4, 0x7a, 0xeb, 0xf3, 0x24, 0x64, 0x01, 0x6c, 0x7f, + 0x36, 0x7a, 0xb1, 0xda, 0xe1, 0x9f, 0x45, 0xdf, 0x6b, 0x55, 0x6c, 0x9f, 0x33, 0x39, 0x2f, 0xf8, + 0x64, 0xb0, 0xdd, 0x51, 0xee, 0x06, 0x34, 0xae, 0x9f, 0xf6, 0x57, 0x68, 0xe5, 0xe8, 0x0d, 0x57, + 0x0f, 0x2b, 0x53, 0x86, 0x67, 0x21, 0x93, 0x3e, 0x1b, 0xcc, 0xd1, 0x69, 0x9d, 0xd6, 0x36, 0xdb, + 0x1d, 0x5d, 0x3b, 0x0b, 0x96, 0xa4, 0xea, 0x21, 0xdd, 0x67, 0x21, 0xa3, 0x1e, 0x1a, 0xdc, 0x66, + 0x93, 0x2a, 0xad, 0xc8, 0xac, 0xe6, 0xb8, 0xb3, 0x3d, 0xdb, 0xa4, 0x23, 0x01, 0xb2, 0x3b, 0xdb, + 0xea, 0x49, 0x6b, 0xb7, 0xb2, 0x59, 0xf2, 0xaa, 0x9f, 0xdd, 0x41, 0x8e, 0x79, 0xd5, 0xaa, 0xc8, + 0x48, 0xdf, 0xea, 0x49, 0x6b, 0xaf, 0x7f, 0x1a, 0x7d, 0xdc, 0xf6, 0xaa, 0x17, 0xa2, 0xed, 0x4e, + 0x53, 0x60, 0x2d, 0x7a, 0xda, 0x5f, 0xc1, 0x6e, 0x69, 0xbe, 0x4a, 0x4a, 0x29, 0x8a, 0xe5, 0xe8, + 0x4a, 0xdc, 0x34, 0x17, 0xea, 0xfd, 0xd9, 0xaa, 0x81, 0xa1, 0x43, 0x10, 0x5b, 0x1a, 0x9c, 0x6c, + 0xb9, 0xb2, 0x17, 0xef, 0x4b, 0xc2, 0x95, 0x43, 0x74, 0xb8, 0xf2, 0x49, 0x1b, 0xab, 0x9a, 0x5a, + 0xd9, 0xb7, 0x04, 0xd6, 0xf0, 0xa2, 0xb6, 0xdf, 0x14, 0x58, 0xef, 0x06, 0x6d, 0xc6, 0xa2, 0xc5, + 0x7b, 0xc9, 0xe5, 0xa5, 0xa9, 0x13, 0x5e, 0x52, 0x17, 0x21, 0x32, 0x16, 0x02, 0xb5, 0x49, 0xf7, + 0x7e, 0x92, 0x72, 0x75, 0xa2, 0xff, 0xfa, 0xf2, 0x32, 0x15, 0x6c, 0x02, 0x92, 0xee, 0x4a, 0x3c, + 0x74, 0xe5, 0x44, 0xd2, 0x8d, 0x71, 0xf6, 0x19, 0x71, 0x25, 0x3d, 0xe3, 0xb1, 0xc8, 0xe2, 0x24, + 0x85, 0xf7, 0x0b, 0x95, 0xa6, 0x11, 0x12, 0xcf, 0x88, 0x5b, 0x90, 0x5d, 0x18, 0x2b, 0x51, 0x35, + 0xed, 0x9b, 0xf2, 0x3f, 0x6a, 0x2b, 0x3a, 0x62, 0x62, 0x61, 0x44, 0x30, 0xbb, 0xf7, 0xac, 0x84, + 0xe7, 0xb9, 0x32, 0x7e, 0xaf, 0xad, 0x55, 0x4b, 0x88, 0xbd, 0xa7, 0x4f, 0xd8, 0x3d, 0x54, 0xf5, + 0xfb, 0x9e, 0xb8, 0xc9, 0x94, 0xd1, 0x07, 0x6d, 0x95, 0x46, 0x46, 0xec, 0xa1, 0x20, 0xa3, 0x0d, + 0xff, 0x24, 0xfa, 0xff, 0xca, 0x70, 0x21, 0xf2, 0xc1, 0x1d, 0x44, 0xa1, 0x70, 0xee, 0xea, 0xdd, + 0x25, 0xe5, 0xf6, 0xaa, 0xa3, 0x19, 0x1b, 0xe7, 0x25, 0x9b, 0xc2, 0xab, 0x8e, 0xb6, 0xc7, 0x95, + 0x94, 0xb8, 0xea, 0xd8, 0xa6, 0xfc, 0x51, 0x71, 0x22, 0x26, 0xda, 0x3a, 0x52, 0x43, 0x23, 0x0c, + 0x8d, 0x0a, 0x17, 0xb2, 0xc9, 0xcc, 0x09, 0x5b, 0x24, 0x53, 0xb3, 0xe0, 0xd4, 0x71, 0xab, 0x04, + 0xc9, 0x8c, 0x65, 0x86, 0x0e, 0x44, 0x24, 0x33, 0x24, 0xac, 0x7d, 0xfe, 0xf3, 0x4a, 0x74, 0xcf, + 0x32, 0x07, 0xcd, 0x69, 0xdd, 0x61, 0x76, 0x29, 0xaa, 0xd4, 0xe7, 0x28, 0xc9, 0xae, 0xcb, 0xc1, + 0x17, 0x94, 0x49, 0x9c, 0x37, 0x45, 0xf9, 0xf2, 0xd6, 0x7a, 0x36, 0x6b, 0x6d, 0x8e, 0xb2, 0xec, + 0xf3, 0xec, 0x5a, 0x03, 0x64, 0xad, 0xe6, 0xc4, 0x0b, 0x72, 0x44, 0xd6, 0x1a, 0xe2, 0x6d, 0x17, + 0x1b, 0xe7, 0xa9, 0xc8, 0x60, 0x17, 0x5b, 0x0b, 0x95, 0x90, 0xe8, 0xe2, 0x16, 0x64, 0xe3, 0x71, + 0x23, 0xaa, 0x4f, 0x5d, 0x76, 0xd2, 0x14, 0xc4, 0x63, 0xa3, 0x6a, 0x00, 0x22, 0x1e, 0xa3, 0xa0, + 0xf6, 0x73, 0x16, 0x7d, 0xa7, 0x6a, 0xd2, 0xd3, 0x82, 0x2f, 0x12, 0x0e, 0xaf, 0x5e, 0x38, 0x12, + 0x62, 0xfe, 0xfb, 0x84, 0x9d, 0x59, 0xe7, 0x59, 0x99, 0xa7, 0xac, 0xbc, 0xd2, 0x0f, 0xe3, 0xfd, + 0x3a, 0x37, 0x42, 0xf8, 0x38, 0xfe, 0x51, 0x07, 0x65, 0x83, 0x7a, 0x23, 0x33, 0x21, 0x66, 0x15, + 0x57, 0x6d, 0x85, 0x99, 0xb5, 0x4e, 0xce, 0x9e, 0x78, 0x1f, 0xb0, 0x34, 0xe5, 0xc5, 0xb2, 0x91, + 0x1d, 0xb3, 0x2c, 0xb9, 0xe4, 0xa5, 0x04, 0x27, 0xde, 0x9a, 0x1a, 0x42, 0x8c, 0x38, 0xf1, 0x0e, + 0xe0, 0x36, 0x9b, 0x07, 0x9e, 0x0f, 0xb3, 0x09, 0x7f, 0x07, 0xb2, 0x79, 0x68, 0x47, 0x31, 0x44, + 0x36, 0x4f, 0xb1, 0xf6, 0xe4, 0xf7, 0x65, 0x2a, 0xe2, 0x6b, 0xbd, 0x04, 0xf8, 0x1d, 0xac, 0x24, + 0x70, 0x0d, 0x78, 0x10, 0x42, 0xec, 0x22, 0xa0, 0x04, 0x67, 0x3c, 0x4f, 0x59, 0x0c, 0xef, 0xdf, + 0xd4, 0x3a, 0x5a, 0x46, 0x2c, 0x02, 0x90, 0x01, 0xc5, 0xd5, 0xf7, 0x7a, 0xb0, 0xe2, 0x82, 0x6b, + 0x3d, 0x0f, 0x42, 0x88, 0x5d, 0x06, 0x95, 0x60, 0x94, 0xa7, 0x89, 0x04, 0xd3, 0xa0, 0xd6, 0x50, + 0x12, 0x62, 0x1a, 0xf8, 0x04, 0x30, 0x79, 0xcc, 0x8b, 0x29, 0x47, 0x4d, 0x2a, 0x49, 0xd0, 0x64, + 0x43, 0xd8, 0x4b, 0xa6, 0x75, 0xdd, 0x45, 0xbe, 0x04, 0x97, 0x4c, 0x75, 0xb5, 0x44, 0xbe, 0x24, + 0x2e, 0x99, 0x7a, 0x00, 0x28, 0xe2, 0x29, 0x2b, 0x25, 0x5e, 0x44, 0x25, 0x09, 0x16, 0xb1, 0x21, + 0xec, 0x1a, 0x5d, 0x17, 0x71, 0x2e, 0xc1, 0x1a, 0xad, 0x0b, 0xe0, 0x3c, 0x81, 0xbe, 0x4b, 0xca, + 0x6d, 0x24, 0xa9, 0x7b, 0x85, 0xcb, 0xfd, 0x84, 0xa7, 0x93, 0x12, 0x44, 0x12, 0xdd, 0xee, 0x8d, + 0x94, 0x88, 0x24, 0x6d, 0x0a, 0x0c, 0x25, 0x7d, 0x3e, 0x8e, 0xd5, 0x0e, 0x1c, 0x8d, 0x3f, 0x08, + 0x21, 0x36, 0x3e, 0x35, 0x85, 0xde, 0x65, 0x45, 0x91, 0x54, 0x8b, 0xff, 0x2a, 0x5e, 0xa0, 0x46, + 0x4e, 0xc4, 0x27, 0x8c, 0x03, 0xd3, 0xab, 0x09, 0xdc, 0x58, 0xc1, 0x60, 0xe8, 0xfe, 0x34, 0xc8, + 0xd8, 0x8c, 0x53, 0x49, 0x9c, 0x47, 0xa8, 0x58, 0x6b, 0x22, 0x4f, 0x50, 0x57, 0xbb, 0x30, 0xe7, + 0x25, 0x10, 0xe3, 0xe2, 0x58, 0x2c, 0xf8, 0x58, 0xbc, 0x7a, 0x97, 0x94, 0x32, 0xc9, 0xa6, 0x7a, + 0xe5, 0x7e, 0x4e, 0x58, 0xc2, 0x60, 0xe2, 0x25, 0x90, 0x4e, 0x25, 0x9b, 0x40, 0x80, 0xb2, 0x9c, + 0xf0, 0x1b, 0x34, 0x81, 0x80, 0x16, 0x0d, 0x47, 0x24, 0x10, 0x21, 0xde, 0x9e, 0xa3, 0x18, 0xe7, + 0xfa, 0x45, 0xdc, 0xb1, 0x68, 0x72, 0x39, 0xca, 0x1a, 0x04, 0x89, 0xad, 0x6c, 0x50, 0xc1, 0xee, + 0x2f, 0x8d, 0x7f, 0x3b, 0xc5, 0xd6, 0x09, 0x3b, 0xed, 0x69, 0xf6, 0xb8, 0x07, 0x89, 0xb8, 0xb2, + 0xf7, 0x00, 0x28, 0x57, 0xed, 0x6b, 0x00, 0x8f, 0x7b, 0x90, 0xce, 0x99, 0x8c, 0x5b, 0xad, 0x97, + 0x2c, 0xbe, 0x9e, 0x16, 0x62, 0x9e, 0x4d, 0x76, 0x45, 0x2a, 0x0a, 0x70, 0x26, 0xe3, 0x95, 0x1a, + 0xa0, 0xc4, 0x99, 0x4c, 0x87, 0x8a, 0xcd, 0xe0, 0xdc, 0x52, 0xec, 0xa4, 0xc9, 0x14, 0xee, 0xa8, + 0x3d, 0x43, 0x0a, 0x20, 0x32, 0x38, 0x14, 0x44, 0x06, 0x51, 0xbd, 0xe3, 0x96, 0x49, 0xcc, 0xd2, + 0xda, 0xdf, 0x36, 0x6d, 0xc6, 0x03, 0x3b, 0x07, 0x11, 0xa2, 0x80, 0xd4, 0x73, 0x3c, 0x2f, 0xb2, + 0xc3, 0x4c, 0x0a, 0xb2, 0x9e, 0x0d, 0xd0, 0x59, 0x4f, 0x07, 0x04, 0x61, 0x75, 0xcc, 0xdf, 0x55, + 0xa5, 0xa9, 0xfe, 0xc1, 0xc2, 0x6a, 0xf5, 0xfb, 0x50, 0xcb, 0x43, 0x61, 0x15, 0x70, 0xa0, 0x32, + 0xda, 0x49, 0x3d, 0x60, 0x02, 0xda, 0xfe, 0x30, 0x59, 0xef, 0x06, 0x71, 0x3f, 0x23, 0xb9, 0x4c, + 0x79, 0xc8, 0x8f, 0x02, 0xfa, 0xf8, 0x69, 0x40, 0x7b, 0xdc, 0xe2, 0xd5, 0xe7, 0x8a, 0xc7, 0xd7, + 0xad, 0x6b, 0x4d, 0x7e, 0x41, 0x6b, 0x84, 0x38, 0x6e, 0x21, 0x50, 0xbc, 0x8b, 0x0e, 0x63, 0x91, + 0x85, 0xba, 0xa8, 0x92, 0xf7, 0xe9, 0x22, 0xcd, 0xd9, 0xcd, 0xaf, 0x91, 0xea, 0x91, 0x59, 0x77, + 0xd3, 0x06, 0x61, 0xc1, 0x85, 0x88, 0xcd, 0x2f, 0x09, 0xdb, 0x9c, 0x1c, 0xfa, 0x3c, 0x6e, 0xdf, + 0xf9, 0x6e, 0x59, 0x39, 0xa6, 0xef, 0x7c, 0x53, 0x2c, 0x5d, 0xc9, 0x7a, 0x8c, 0x74, 0x58, 0xf1, + 0xc7, 0xc9, 0x66, 0x3f, 0xd8, 0x6e, 0x79, 0x3c, 0x9f, 0xbb, 0x29, 0x67, 0x45, 0xed, 0x75, 0x2b, + 0x60, 0xc8, 0x62, 0xc4, 0x96, 0x27, 0x80, 0x83, 0x10, 0xe6, 0x79, 0xde, 0x15, 0x99, 0xe4, 0x99, + 0xc4, 0x42, 0x98, 0x6f, 0x4c, 0x83, 0xa1, 0x10, 0x46, 0x29, 0x80, 0x71, 0xab, 0xce, 0x83, 0xb8, + 0x3c, 0x61, 0x33, 0x34, 0x63, 0xab, 0xcf, 0x7a, 0x6a, 0x79, 0x68, 0xdc, 0x02, 0xce, 0x79, 0xc8, + 0xe7, 0x7a, 0x19, 0xb3, 0x62, 0x6a, 0x4e, 0x37, 0x26, 0x83, 0xa7, 0xb4, 0x1d, 0x9f, 0x24, 0x1e, + 0xf2, 0x85, 0x35, 0x40, 0xd8, 0x39, 0x9c, 0xb1, 0xa9, 0xa9, 0x29, 0x52, 0x03, 0x25, 0x6f, 0x55, + 0x75, 0xbd, 0x1b, 0x04, 0x7e, 0xde, 0x24, 0x13, 0x2e, 0x02, 0x7e, 0x94, 0xbc, 0x8f, 0x1f, 0x08, + 0x82, 0xec, 0xad, 0xaa, 0x77, 0xbd, 0xa3, 0xdb, 0xc9, 0x26, 0x7a, 0x1f, 0x3b, 0x24, 0x9a, 0x07, + 0x70, 0xa1, 0xec, 0x8d, 0xe0, 0xc1, 0x1c, 0x6d, 0x0e, 0x68, 0x43, 0x73, 0xd4, 0x9c, 0xbf, 0xf6, + 0x99, 0xa3, 0x18, 0xac, 0x7d, 0xfe, 0x4c, 0xcf, 0xd1, 0x3d, 0x26, 0x59, 0x95, 0xb7, 0xbf, 0x49, + 0xf8, 0x8d, 0xde, 0x08, 0x23, 0xf5, 0x6d, 0xa8, 0xa1, 0x7a, 0x55, 0x11, 0xec, 0x8a, 0xb7, 0x7b, + 0xf3, 0x01, 0xdf, 0x7a, 0x87, 0xd0, 0xe9, 0x1b, 0x6c, 0x15, 0xb6, 0x7b, 0xf3, 0x01, 0xdf, 0xfa, + 0x1d, 0xe8, 0x4e, 0xdf, 0xe0, 0x45, 0xe8, 0xed, 0xde, 0xbc, 0xf6, 0xfd, 0x97, 0xcd, 0xc4, 0x75, + 0x9d, 0x57, 0x79, 0x58, 0x2c, 0x93, 0x05, 0xc7, 0xd2, 0x49, 0xdf, 0x9e, 0x41, 0x43, 0xe9, 0x24, + 0xad, 0xe2, 0x7c, 0x97, 0x07, 0x2b, 0xc5, 0xa9, 0x28, 0x13, 0xf5, 0x90, 0xfe, 0x79, 0x0f, 0xa3, + 0x0d, 0x1c, 0xda, 0x34, 0x85, 0x94, 0xec, 0xe3, 0x46, 0x0f, 0xb5, 0xb7, 0x98, 0x37, 0x03, 0xf6, + 0xda, 0x97, 0x99, 0xb7, 0x7a, 0xd2, 0xf6, 0xc1, 0x9f, 0xc7, 0xb8, 0x4f, 0x1c, 0x43, 0xbd, 0x8a, + 0x3e, 0x74, 0x7c, 0xda, 0x5f, 0x41, 0xbb, 0xff, 0xeb, 0x66, 0x5f, 0x01, 0xfd, 0xeb, 0x49, 0xf0, + 0xac, 0x8f, 0x45, 0x30, 0x11, 0x9e, 0xdf, 0x4a, 0x47, 0x17, 0xe4, 0xef, 0x9b, 0x0d, 0x74, 0x83, + 0xaa, 0x77, 0x39, 0xd4, 0xbb, 0x7f, 0x7a, 0x4e, 0x84, 0xba, 0xd5, 0xc2, 0x70, 0x66, 0xbc, 0xb8, + 0xa5, 0x96, 0xf3, 0x95, 0x26, 0x0f, 0xd6, 0xef, 0x1c, 0x3a, 0xe5, 0x09, 0x59, 0x76, 0x68, 0x58, + 0xa0, 0x2f, 0x6e, 0xab, 0x46, 0xcd, 0x15, 0x07, 0x56, 0x5f, 0x65, 0x78, 0xde, 0xd3, 0xb0, 0xf7, + 0x9d, 0x86, 0xcf, 0x6f, 0xa7, 0xa4, 0xcb, 0xf2, 0x1f, 0x2b, 0xd1, 0x23, 0x8f, 0xb5, 0xcf, 0x13, + 0xc0, 0xa9, 0xc7, 0x8f, 0x03, 0xf6, 0x29, 0x25, 0x53, 0xb8, 0xdf, 0xfd, 0xe5, 0x94, 0xed, 0x27, + 0x8d, 0x3c, 0x95, 0xfd, 0x24, 0x95, 0xbc, 0x68, 0x7f, 0xd2, 0xc8, 0xb7, 0x5b, 0x53, 0x43, 0xfa, + 0x93, 0x46, 0x01, 0xdc, 0xf9, 0xa4, 0x11, 0xe2, 0x19, 0xfd, 0xa4, 0x11, 0x6a, 0x2d, 0xf8, 0x49, + 0xa3, 0xb0, 0x06, 0x15, 0xde, 0x9b, 0x22, 0xd4, 0xe7, 0xd6, 0xbd, 0x2c, 0xfa, 0xc7, 0xd8, 0xcf, + 0x6e, 0xa3, 0x42, 0x2c, 0x70, 0x35, 0xa7, 0xee, 0xb9, 0xf5, 0x68, 0x53, 0xef, 0xae, 0xdb, 0x76, + 0x6f, 0x5e, 0xfb, 0xfe, 0xa9, 0xde, 0xdd, 0x98, 0x70, 0x2e, 0x0a, 0xf5, 0x39, 0xab, 0x8d, 0x50, + 0x78, 0xae, 0x2c, 0xb8, 0x3d, 0xbf, 0xd9, 0x0f, 0x26, 0xaa, 0x5b, 0x11, 0xba, 0xd3, 0x87, 0x5d, + 0x86, 0x40, 0x97, 0x6f, 0xf7, 0xe6, 0x89, 0x65, 0xa4, 0xf6, 0x5d, 0xf7, 0x76, 0x0f, 0x63, 0x7e, + 0x5f, 0x3f, 0xed, 0xaf, 0xa0, 0xdd, 0x2f, 0x74, 0xda, 0xe8, 0xba, 0x57, 0xfd, 0xbc, 0xd5, 0x65, + 0x6a, 0xe4, 0x75, 0xf3, 0xb0, 0x2f, 0x1e, 0x4a, 0x20, 0xdc, 0x25, 0xb4, 0x2b, 0x81, 0x40, 0x97, + 0xd1, 0xcf, 0x6f, 0xa7, 0xa4, 0xcb, 0xf2, 0x4f, 0x2b, 0xd1, 0x5d, 0xb2, 0x2c, 0x7a, 0x1c, 0x7c, + 0xd1, 0xd7, 0x32, 0x18, 0x0f, 0x5f, 0xde, 0x5a, 0x4f, 0x17, 0xea, 0x5f, 0x57, 0xa2, 0x7b, 0x81, + 0x42, 0xd5, 0x03, 0xe4, 0x16, 0xd6, 0xfd, 0x81, 0xf2, 0xc3, 0xdb, 0x2b, 0x52, 0xcb, 0xbd, 0x8b, + 0x8f, 0xda, 0x1f, 0xe3, 0x09, 0xd8, 0x1e, 0xd1, 0x1f, 0xe3, 0xe9, 0xd6, 0x82, 0x87, 0x3c, 0xec, + 0xa2, 0xd9, 0x74, 0xa1, 0x87, 0x3c, 0xea, 0x86, 0x1a, 0xd8, 0x73, 0xac, 0x75, 0x72, 0x98, 0x93, + 0x57, 0xef, 0x72, 0x96, 0x4d, 0x68, 0x27, 0xb5, 0xbc, 0xdb, 0x89, 0xe1, 0xe0, 0xe1, 0x58, 0x25, + 0x3d, 0x13, 0xcd, 0x46, 0xea, 0x31, 0xa5, 0x6f, 0x90, 0xe0, 0xe1, 0x58, 0x0b, 0x25, 0xbc, 0xe9, + 0xac, 0x31, 0xe4, 0x0d, 0x24, 0x8b, 0x4f, 0xfa, 0xa0, 0x20, 0x45, 0x37, 0xde, 0xcc, 0x99, 0xfb, + 0x66, 0xc8, 0x4a, 0xeb, 0xdc, 0x7d, 0xab, 0x27, 0x4d, 0xb8, 0x1d, 0x71, 0xf9, 0x15, 0x67, 0x13, + 0x5e, 0x04, 0xdd, 0x1a, 0xaa, 0x97, 0x5b, 0x97, 0xc6, 0xdc, 0xee, 0x8a, 0x74, 0x3e, 0xcb, 0x74, + 0x67, 0x92, 0x6e, 0x5d, 0xaa, 0xdb, 0x2d, 0xa0, 0xe1, 0xb1, 0xa0, 0x75, 0xab, 0xd2, 0xcb, 0x27, + 0x61, 0x33, 0x5e, 0x56, 0xb9, 0xd1, 0x8b, 0xa5, 0xeb, 0xa9, 0x87, 0x51, 0x47, 0x3d, 0xc1, 0x48, + 0xda, 0xea, 0x49, 0xc3, 0xf3, 0x39, 0xc7, 0xad, 0x19, 0x4f, 0xdb, 0x1d, 0xb6, 0x5a, 0x43, 0xea, + 0x69, 0x7f, 0x05, 0x78, 0x1a, 0xaa, 0x47, 0xd5, 0x51, 0x52, 0xca, 0xfd, 0x24, 0x4d, 0x07, 0x1b, + 0x81, 0x61, 0xd2, 0x40, 0xc1, 0xd3, 0x50, 0x04, 0x26, 0x46, 0x72, 0x73, 0x7a, 0x98, 0x0d, 0xba, + 0xec, 0x28, 0xaa, 0xd7, 0x48, 0x76, 0x69, 0x70, 0xa2, 0xe5, 0x34, 0xb5, 0xa9, 0xed, 0x30, 0xdc, + 0x70, 0xad, 0x0a, 0x6f, 0xf7, 0xe6, 0xc1, 0xe3, 0x76, 0x45, 0xa9, 0x95, 0xe5, 0x21, 0x65, 0xc2, + 0x5b, 0x49, 0x1e, 0x75, 0x50, 0xe0, 0x54, 0xb0, 0x9e, 0x46, 0x6f, 0x93, 0xc9, 0x94, 0x4b, 0xf4, + 0x49, 0x91, 0x0b, 0x04, 0x9f, 0x14, 0x01, 0x10, 0x74, 0x5d, 0xfd, 0xbb, 0x39, 0x0e, 0x3d, 0x9c, + 0x60, 0x5d, 0xa7, 0x95, 0x1d, 0x2a, 0xd4, 0x75, 0x28, 0x0d, 0xa2, 0x81, 0x71, 0xab, 0x5f, 0xc7, + 0x7f, 0x12, 0x32, 0x03, 0xde, 0xc9, 0xdf, 0xe8, 0xc5, 0x82, 0x15, 0xc5, 0x3a, 0x4c, 0x66, 0x89, + 0xc4, 0x56, 0x14, 0xc7, 0x46, 0x85, 0x84, 0x56, 0x94, 0x36, 0x4a, 0x55, 0xaf, 0xca, 0x11, 0x0e, + 0x27, 0xe1, 0xea, 0xd5, 0x4c, 0xbf, 0xea, 0x19, 0xb6, 0xf5, 0x60, 0x33, 0x33, 0x43, 0x46, 0x5e, + 0xe9, 0xcd, 0x32, 0x32, 0xb6, 0xd5, 0x6b, 0x9a, 0x10, 0x0c, 0x45, 0x1d, 0x4a, 0x01, 0x1e, 0xd8, + 0x57, 0x5c, 0xf3, 0xec, 0x35, 0xcf, 0x39, 0x2b, 0x58, 0x16, 0xa3, 0x9b, 0x53, 0x65, 0xb0, 0x45, + 0x86, 0x36, 0xa7, 0xa4, 0x06, 0x78, 0x6c, 0xee, 0xbf, 0x60, 0x89, 0x4c, 0x05, 0xf3, 0x26, 0xa3, + 0xff, 0x7e, 0xe5, 0xe3, 0x1e, 0x24, 0x7c, 0x6c, 0xde, 0x00, 0xe6, 0xe0, 0xbb, 0x76, 0xfa, 0x59, + 0xc0, 0x94, 0x8f, 0x86, 0x36, 0xc2, 0xb4, 0x0a, 0x18, 0xd4, 0x26, 0xc1, 0xe5, 0xf2, 0x27, 0x7c, + 0x89, 0x0d, 0x6a, 0x9b, 0x9f, 0x2a, 0x24, 0x34, 0xa8, 0xdb, 0x28, 0xc8, 0x33, 0xdd, 0x7d, 0xd0, + 0x6a, 0x40, 0xdf, 0xdd, 0xfa, 0xac, 0x75, 0x72, 0x60, 0xe6, 0xec, 0x25, 0x0b, 0xef, 0x39, 0x01, + 0x52, 0xd0, 0xbd, 0x64, 0x81, 0x3f, 0x26, 0xd8, 0xe8, 0xc5, 0xc2, 0x47, 0xf2, 0x4c, 0xf2, 0x77, + 0xcd, 0xb3, 0x72, 0xa4, 0xb8, 0x4a, 0xde, 0x7a, 0x58, 0xbe, 0xde, 0x0d, 0xda, 0x0b, 0xb0, 0xa7, + 0x85, 0x88, 0x79, 0x59, 0xea, 0x2f, 0x14, 0xfa, 0x37, 0x8c, 0xb4, 0x6c, 0x08, 0xbe, 0x4f, 0xf8, + 0x30, 0x0c, 0xd9, 0x9e, 0xd1, 0x22, 0xfb, 0xd5, 0x9b, 0x55, 0x54, 0xb3, 0xfd, 0xc1, 0x9b, 0xb5, + 0x4e, 0xce, 0x4e, 0x2f, 0x2d, 0x75, 0x3f, 0x73, 0xb3, 0x8e, 0xaa, 0x63, 0x5f, 0xb8, 0x79, 0xdc, + 0x83, 0xd4, 0xae, 0xbe, 0x8a, 0xde, 0x3f, 0x12, 0xd3, 0x11, 0xcf, 0x26, 0x83, 0x1f, 0xf8, 0x57, + 0x68, 0xc5, 0x74, 0x58, 0xfd, 0x6c, 0x8c, 0xde, 0xa1, 0xc4, 0xf6, 0x12, 0xe0, 0x1e, 0xbf, 0x98, + 0x4f, 0x47, 0x92, 0x49, 0x70, 0x09, 0x50, 0xfd, 0x3e, 0xac, 0x04, 0xc4, 0x25, 0x40, 0x0f, 0x00, + 0xf6, 0xc6, 0x05, 0xe7, 0xa8, 0xbd, 0x4a, 0x10, 0xb4, 0xa7, 0x01, 0x9b, 0x45, 0x18, 0x7b, 0x55, + 0xa2, 0x0e, 0x2f, 0xed, 0x59, 0x1d, 0x25, 0x25, 0xb2, 0x88, 0x36, 0x65, 0x07, 0x77, 0x5d, 0x7d, + 0xf5, 0xd5, 0x91, 0xf9, 0x6c, 0xc6, 0x8a, 0x25, 0x18, 0xdc, 0xba, 0x96, 0x0e, 0x40, 0x0c, 0x6e, + 0x14, 0xb4, 0xb3, 0xb6, 0x69, 0xe6, 0xf8, 0xfa, 0x40, 0x14, 0x62, 0x2e, 0x93, 0x8c, 0xc3, 0x2f, + 0x4f, 0x98, 0x06, 0x75, 0x19, 0x62, 0xd6, 0x52, 0xac, 0xcd, 0x72, 0x15, 0x51, 0xdf, 0x27, 0x54, + 0xdf, 0x2d, 0x2e, 0xa5, 0x28, 0xe0, 0xf3, 0xc4, 0xda, 0x0a, 0x84, 0x88, 0x2c, 0x97, 0x84, 0x41, + 0xdf, 0x9f, 0x26, 0xd9, 0x14, 0xed, 0xfb, 0x53, 0xf7, 0xab, 0x9f, 0xf7, 0x68, 0xc0, 0x4e, 0xa8, + 0xba, 0xd1, 0xea, 0x09, 0xa0, 0xdf, 0xe5, 0x44, 0x1b, 0xdd, 0x25, 0x88, 0x09, 0x85, 0x93, 0xc0, + 0xd5, 0xeb, 0x9c, 0x67, 0x7c, 0xd2, 0xdc, 0x9a, 0xc3, 0x5c, 0x79, 0x44, 0xd0, 0x15, 0x24, 0x6d, + 0x2c, 0x52, 0xf2, 0xb3, 0x79, 0x76, 0x5a, 0x88, 0xcb, 0x24, 0xe5, 0x05, 0x88, 0x45, 0xb5, 0xba, + 0x23, 0x27, 0x62, 0x11, 0xc6, 0xd9, 0xeb, 0x17, 0x4a, 0xea, 0x7d, 0xdb, 0x7b, 0x5c, 0xb0, 0x18, + 0x5e, 0xbf, 0xa8, 0x6d, 0xb4, 0x31, 0xe2, 0x64, 0x30, 0x80, 0x3b, 0x89, 0x4e, 0xed, 0x3a, 0x5b, + 0xaa, 0xf1, 0xa1, 0xdf, 0x25, 0x54, 0xdf, 0xc2, 0x2c, 0x41, 0xa2, 0xa3, 0xcd, 0x61, 0x24, 0x91, + 0xe8, 0x84, 0x35, 0xec, 0x52, 0xa2, 0xb8, 0x13, 0x7d, 0xad, 0x08, 0x2c, 0x25, 0xb5, 0x8d, 0x46, + 0x48, 0x2c, 0x25, 0x2d, 0x08, 0x04, 0xa4, 0x66, 0x1a, 0x4c, 0xd1, 0x80, 0x64, 0xa4, 0xc1, 0x80, + 0xe4, 0x52, 0x36, 0x50, 0x1c, 0x66, 0x89, 0x4c, 0x58, 0x3a, 0xe2, 0xf2, 0x94, 0x15, 0x6c, 0xc6, + 0x25, 0x2f, 0x60, 0xa0, 0xd0, 0xc8, 0xd0, 0x63, 0x88, 0x40, 0x41, 0xb1, 0xda, 0xe1, 0xef, 0x45, + 0x1f, 0x56, 0xeb, 0x3e, 0xcf, 0xf4, 0x5f, 0xf1, 0x78, 0xa5, 0xfe, 0xfc, 0xcf, 0xe0, 0x23, 0x63, + 0x63, 0x24, 0x0b, 0xce, 0x66, 0x8d, 0xed, 0x0f, 0xcc, 0xef, 0x0a, 0x7c, 0xba, 0x52, 0x8d, 0xe7, + 0x13, 0x21, 0x93, 0xcb, 0x6a, 0x9b, 0xad, 0xdf, 0x20, 0x02, 0xe3, 0xd9, 0x15, 0x0f, 0x03, 0xdf, + 0xa2, 0xc0, 0x38, 0x1b, 0xa7, 0x5d, 0xe9, 0x19, 0xcf, 0x53, 0x18, 0xa7, 0x3d, 0x6d, 0x05, 0x10, + 0x71, 0x1a, 0x05, 0xed, 0xe4, 0x74, 0xc5, 0x63, 0x1e, 0xae, 0xcc, 0x98, 0xf7, 0xab, 0xcc, 0xd8, + 0x7b, 0x29, 0x23, 0x8d, 0x3e, 0x3c, 0xe6, 0xb3, 0x0b, 0x5e, 0x94, 0x57, 0x49, 0x7e, 0x50, 0x25, + 0x5c, 0x4c, 0xce, 0xe1, 0x6b, 0x8b, 0x96, 0x18, 0x1a, 0x84, 0xc8, 0x4a, 0x09, 0xd4, 0xae, 0x04, + 0x16, 0x38, 0x2c, 0x4f, 0xd8, 0x8c, 0xab, 0x2f, 0x6b, 0x80, 0x95, 0xc0, 0x31, 0xe2, 0x40, 0xc4, + 0x4a, 0x40, 0xc2, 0xce, 0xfb, 0x5d, 0x96, 0x39, 0xe3, 0xd3, 0x6a, 0x84, 0x15, 0xa7, 0x6c, 0x39, + 0xe3, 0x99, 0xd4, 0x26, 0xc1, 0x99, 0xbc, 0x63, 0x12, 0xe7, 0x89, 0x33, 0xf9, 0x3e, 0x7a, 0x4e, + 0x68, 0xf2, 0x1a, 0xfe, 0x54, 0x14, 0xb2, 0xfe, 0x1b, 0x3d, 0xe7, 0x45, 0x0a, 0x42, 0x93, 0xdf, + 0xa8, 0x1e, 0x49, 0x84, 0xa6, 0xb0, 0x86, 0xf3, 0xf5, 0x79, 0xaf, 0x0c, 0x6f, 0x78, 0x61, 0xc6, + 0xc9, 0xab, 0x19, 0x4b, 0x52, 0x3d, 0x1a, 0x7e, 0x14, 0xb0, 0x4d, 0xe8, 0x10, 0x5f, 0x9f, 0xef, + 0xab, 0xeb, 0x7c, 0xaf, 0x3f, 0x5c, 0x42, 0xf0, 0x88, 0xa0, 0xc3, 0x3e, 0xf1, 0x88, 0xa0, 0x5b, + 0xcb, 0xee, 0xdc, 0x2d, 0xab, 0xb8, 0xa5, 0x22, 0x76, 0xc5, 0x04, 0x9e, 0x17, 0x3a, 0x36, 0x01, + 0x48, 0xec, 0xdc, 0x83, 0x0a, 0x36, 0x35, 0xb0, 0xd8, 0x7e, 0x92, 0xb1, 0x34, 0xf9, 0x19, 0x4c, + 0xeb, 0x1d, 0x3b, 0x0d, 0x41, 0xa4, 0x06, 0x38, 0x89, 0xb9, 0x3a, 0xe0, 0x72, 0x9c, 0x54, 0xa1, + 0x7f, 0x3d, 0xd0, 0x6e, 0x8a, 0xe8, 0x76, 0xe5, 0x90, 0xce, 0x37, 0x5a, 0x61, 0xb3, 0xee, 0xe4, + 0xf9, 0xa8, 0x5a, 0x55, 0xcf, 0x78, 0xcc, 0x93, 0x5c, 0x0e, 0x5e, 0x84, 0xdb, 0x0a, 0xe0, 0xc4, + 0x45, 0x8b, 0x1e, 0x6a, 0xce, 0xe3, 0xfb, 0x2a, 0x96, 0x8c, 0xea, 0x3f, 0x5e, 0x77, 0x5e, 0xf2, + 0x42, 0x27, 0x1a, 0x07, 0x5c, 0x82, 0xd9, 0xe9, 0x70, 0x43, 0x07, 0xac, 0x2a, 0x4a, 0xcc, 0xce, + 0xb0, 0x86, 0x3d, 0xec, 0x73, 0xb8, 0x33, 0x5e, 0x8a, 0x74, 0xc1, 0xd5, 0x7d, 0xc3, 0x4d, 0xd2, + 0x98, 0x43, 0x11, 0x87, 0x7d, 0x34, 0x6d, 0xb3, 0xb5, 0xb6, 0xdb, 0x9d, 0x6c, 0x79, 0x08, 0xaf, + 0x4c, 0x20, 0x96, 0x14, 0x46, 0x64, 0x6b, 0x01, 0xdc, 0x39, 0x0c, 0x2f, 0x04, 0x9b, 0xc4, 0xac, + 0x94, 0xa7, 0x6c, 0x99, 0x0a, 0x36, 0x51, 0xeb, 0x3a, 0x3c, 0x0c, 0x6f, 0x98, 0xa1, 0x0b, 0x51, + 0x87, 0xe1, 0x14, 0xec, 0x66, 0x67, 0xea, 0x6f, 0xf2, 0xe9, 0xbb, 0x9c, 0x30, 0x3b, 0x53, 0xe5, + 0x85, 0xf7, 0x38, 0x1f, 0x86, 0x21, 0xfb, 0x0e, 0x5a, 0x2d, 0x52, 0x69, 0xc8, 0x3d, 0x4c, 0xc7, + 0x4b, 0x40, 0xee, 0x07, 0x08, 0xfb, 0x5d, 0x8a, 0xfa, 0xf7, 0xe6, 0xef, 0xbe, 0x48, 0xfd, 0x25, + 0xeb, 0x4d, 0x4c, 0xd7, 0x85, 0x86, 0xee, 0x07, 0xee, 0xb6, 0x7a, 0xd2, 0x36, 0xcd, 0xdc, 0xbd, + 0x62, 0x72, 0x67, 0x32, 0x39, 0xe6, 0x25, 0xf2, 0x42, 0x79, 0x25, 0x1c, 0x5a, 0x29, 0x91, 0x66, + 0xb6, 0x29, 0x3b, 0xd0, 0x2b, 0xd9, 0xab, 0x49, 0x22, 0xb5, 0xac, 0xb9, 0x21, 0xbd, 0xd9, 0x36, + 0xd0, 0xa6, 0x88, 0x5a, 0xd1, 0xb4, 0x8d, 0xe5, 0x15, 0x33, 0x16, 0xd3, 0x69, 0xca, 0x35, 0x74, + 0xc6, 0x59, 0xfd, 0x21, 0xbf, 0xed, 0xb6, 0x2d, 0x14, 0x24, 0x62, 0x79, 0x50, 0xc1, 0xa6, 0x91, + 0x15, 0x56, 0x3f, 0x92, 0x6a, 0x1a, 0x76, 0xad, 0x6d, 0xc6, 0x03, 0x88, 0x34, 0x12, 0x05, 0xed, + 0x7b, 0x6f, 0x95, 0xf8, 0x80, 0x37, 0x2d, 0x01, 0x3f, 0x41, 0xa4, 0x94, 0x1d, 0x31, 0xf1, 0xde, + 0x1b, 0x82, 0xd9, 0x7d, 0x02, 0xf0, 0xf0, 0x72, 0x79, 0x38, 0x81, 0xfb, 0x04, 0xa8, 0xaf, 0x18, + 0x62, 0x9f, 0x40, 0xb1, 0x7e, 0xd7, 0x99, 0x73, 0xaf, 0x23, 0x56, 0xda, 0xca, 0x21, 0x5d, 0x87, + 0x82, 0xa1, 0xae, 0xa3, 0x14, 0xfc, 0x26, 0x75, 0x8f, 0xd6, 0x90, 0x26, 0xc5, 0xce, 0xd5, 0x56, + 0xbb, 0x30, 0x1b, 0x97, 0xcc, 0x7e, 0x52, 0x5d, 0x59, 0xc2, 0xbf, 0xe0, 0x5f, 0x0b, 0x89, 0xb8, + 0xd4, 0x82, 0x6a, 0xdb, 0x2f, 0xef, 0xff, 0xd7, 0x37, 0x77, 0x56, 0x7e, 0xf1, 0xcd, 0x9d, 0x95, + 0xff, 0xf9, 0xe6, 0xce, 0xca, 0xcf, 0xbf, 0xbd, 0xf3, 0xde, 0x2f, 0xbe, 0xbd, 0xf3, 0xde, 0x7f, + 0x7f, 0x7b, 0xe7, 0xbd, 0xaf, 0xdf, 0xd7, 0x7f, 0xab, 0xf5, 0xe2, 0xff, 0xa9, 0xbf, 0xb8, 0xfa, + 0xfc, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x1c, 0xa0, 0x43, 0x0e, 0xcf, 0x75, 0x00, 0x00, } // This is a compile-time assertion to ensure that this generated file @@ -396,6 +397,7 @@ type ClientCommandsHandler interface { AccountDelete(context.Context, *pb.RpcAccountDeleteRequest) *pb.RpcAccountDeleteResponse AccountRevertDeletion(context.Context, *pb.RpcAccountRevertDeletionRequest) *pb.RpcAccountRevertDeletionResponse AccountSelect(context.Context, *pb.RpcAccountSelectRequest) *pb.RpcAccountSelectResponse + AccountMigrate(context.Context, *pb.RpcAccountMigrateRequest) *pb.RpcAccountMigrateResponse AccountEnableLocalNetworkSync(context.Context, *pb.RpcAccountEnableLocalNetworkSyncRequest) *pb.RpcAccountEnableLocalNetworkSyncResponse AccountStop(context.Context, *pb.RpcAccountStopRequest) *pb.RpcAccountStopResponse AccountMove(context.Context, *pb.RpcAccountMoveRequest) *pb.RpcAccountMoveResponse @@ -1202,6 +1204,26 @@ func AccountSelect(b []byte) (resp []byte) { return resp } +func AccountMigrate(b []byte) (resp []byte) { + defer func() { + if PanicHandler != nil { + if r := recover(); r != nil { + resp, _ = (&pb.RpcAccountMigrateResponse{Error: &pb.RpcAccountMigrateResponseError{Code: pb.RpcAccountMigrateResponseError_UNKNOWN_ERROR, Description: "panic recovered"}}).Marshal() + PanicHandler(r) + } + } + }() + + in := new(pb.RpcAccountMigrateRequest) + if err := in.Unmarshal(b); err != nil { + resp, _ = (&pb.RpcAccountMigrateResponse{Error: &pb.RpcAccountMigrateResponseError{Code: pb.RpcAccountMigrateResponseError_BAD_INPUT, Description: err.Error()}}).Marshal() + return resp + } + + resp, _ = clientCommandsHandler.AccountMigrate(context.Background(), in).Marshal() + return resp +} + func AccountEnableLocalNetworkSync(b []byte) (resp []byte) { defer func() { if PanicHandler != nil { @@ -6138,6 +6160,8 @@ func CommandAsync(cmd string, data []byte, callback func(data []byte)) { cd = AccountRevertDeletion(data) case "AccountSelect": cd = AccountSelect(data) + case "AccountMigrate": + cd = AccountMigrate(data) case "AccountEnableLocalNetworkSync": cd = AccountEnableLocalNetworkSync(data) case "AccountStop": @@ -6998,6 +7022,20 @@ func (h *ClientCommandsHandlerProxy) AccountSelect(ctx context.Context, req *pb. call, _ := actualCall(ctx, req) return call.(*pb.RpcAccountSelectResponse) } +func (h *ClientCommandsHandlerProxy) AccountMigrate(ctx context.Context, req *pb.RpcAccountMigrateRequest) *pb.RpcAccountMigrateResponse { + actualCall := func(ctx context.Context, req any) (any, error) { + return h.client.AccountMigrate(ctx, req.(*pb.RpcAccountMigrateRequest)), nil + } + for _, interceptor := range h.interceptors { + toCall := actualCall + currentInterceptor := interceptor + actualCall = func(ctx context.Context, req any) (any, error) { + return currentInterceptor(ctx, req, "AccountMigrate", toCall) + } + } + call, _ := actualCall(ctx, req) + return call.(*pb.RpcAccountMigrateResponse) +} func (h *ClientCommandsHandlerProxy) AccountEnableLocalNetworkSync(ctx context.Context, req *pb.RpcAccountEnableLocalNetworkSyncRequest) *pb.RpcAccountEnableLocalNetworkSyncResponse { actualCall := func(ctx context.Context, req any) (any, error) { return h.client.AccountEnableLocalNetworkSync(ctx, req.(*pb.RpcAccountEnableLocalNetworkSyncRequest)), nil diff --git a/core/account.go b/core/account.go index 0dd514502..255bddd02 100644 --- a/core/account.go +++ b/core/account.go @@ -49,6 +49,19 @@ func (mw *Middleware) AccountRecover(cctx context.Context, _ *pb.RpcAccountRecov } } +func (mw *Middleware) AccountMigrate(cctx context.Context, req *pb.RpcAccountMigrateRequest) *pb.RpcAccountMigrateResponse { + err := mw.applicationService.AccountMigrate(cctx, req) + code := mapErrorCode(err, + errToCode(application.ErrAccountNotFound, pb.RpcAccountMigrateResponseError_ACCOUNT_NOT_FOUND), + ) + return &pb.RpcAccountMigrateResponse{ + Error: &pb.RpcAccountMigrateResponseError{ + Code: code, + Description: getErrorDescription(err), + }, + } +} + func (mw *Middleware) AccountSelect(cctx context.Context, req *pb.RpcAccountSelectRequest) *pb.RpcAccountSelectResponse { account, err := mw.applicationService.AccountSelect(cctx, req) code := mapErrorCode(err, diff --git a/core/anytype/bootstrap.go b/core/anytype/bootstrap.go index 7037a279d..3a9d7a035 100644 --- a/core/anytype/bootstrap.go +++ b/core/anytype/bootstrap.go @@ -107,9 +107,12 @@ import ( "github.com/anyproto/anytype-heart/space/spacecore/clientserver" "github.com/anyproto/anytype-heart/space/spacecore/credentialprovider" "github.com/anyproto/anytype-heart/space/spacecore/localdiscovery" + "github.com/anyproto/anytype-heart/space/spacecore/oldstorage" "github.com/anyproto/anytype-heart/space/spacecore/peermanager" "github.com/anyproto/anytype-heart/space/spacecore/peerstore" "github.com/anyproto/anytype-heart/space/spacecore/storage" + "github.com/anyproto/anytype-heart/space/spacecore/storage/anystorage" + "github.com/anyproto/anytype-heart/space/spacecore/storage/migrator" "github.com/anyproto/anytype-heart/space/spacecore/typeprovider" "github.com/anyproto/anytype-heart/space/spacefactory" "github.com/anyproto/anytype-heart/space/virtualspaceservice" @@ -205,6 +208,16 @@ func appVersion(a *app.App, clientWithVersion string) string { return clientWithVersion + "/middle:" + middleVersion + "/any-sync:" + anySyncVersion } +func BootstrapMigration(newPath string, a *app.App, components ...app.Component) { + for _, c := range components { + a.Register(c) + } + a.Register(clientds.New()). + Register(oldstorage.New()). + Register(anystorage.New(newPath)). + Register(migrator.New()) +} + func Bootstrap(a *app.App, components ...app.Component) { for _, c := range components { a.Register(c) diff --git a/core/application/account_store_migrate.go b/core/application/account_store_migrate.go new file mode 100644 index 000000000..c37032f3a --- /dev/null +++ b/core/application/account_store_migrate.go @@ -0,0 +1,51 @@ +package application + +import ( + "context" + "errors" + "os" + "path" + "path/filepath" + + "github.com/anyproto/any-sync/app" + + "github.com/anyproto/anytype-heart/core/anytype" + "github.com/anyproto/anytype-heart/pb" + "github.com/anyproto/anytype-heart/pkg/lib/core" +) + +var ErrAccountNotFound = errors.New("account not found") + +func (s *Service) AccountMigrate(ctx context.Context, req *pb.RpcAccountMigrateRequest) error { + return s.migrate(ctx, req.Id, req.RootPath) +} + +func (s *Service) migrate(ctx context.Context, id string, rootPath string) error { + if rootPath != "" { + s.rootPath = rootPath + } + res, err := core.WalletAccountAt(s.mnemonic, 0) + if err != nil { + return err + } + if _, err := os.Stat(filepath.Join(s.rootPath, id)); err != nil { + if os.IsNotExist(err) { + return ErrAccountNotFound + } + return err + } + cfg := anytype.BootstrapConfig(false, os.Getenv("ANYTYPE_STAGING") == "1") + comps := []app.Component{ + cfg, + anytype.BootstrapWallet(s.rootPath, res), + s.eventSender, + } + spaceStorePath := path.Join(s.rootPath, id, "spacestore") + a := &app.App{} + anytype.BootstrapMigration(spaceStorePath, a, comps...) + err = a.Start(ctx) + if err != nil { + return err + } + return a.Close(ctx) +} diff --git a/docs/proto.md b/docs/proto.md index c7d539e7e..c88cc92d8 100644 --- a/docs/proto.md +++ b/docs/proto.md @@ -83,6 +83,10 @@ - [Rpc.Account.LocalLink.SolveChallenge.Request](#anytype-Rpc-Account-LocalLink-SolveChallenge-Request) - [Rpc.Account.LocalLink.SolveChallenge.Response](#anytype-Rpc-Account-LocalLink-SolveChallenge-Response) - [Rpc.Account.LocalLink.SolveChallenge.Response.Error](#anytype-Rpc-Account-LocalLink-SolveChallenge-Response-Error) + - [Rpc.Account.Migrate](#anytype-Rpc-Account-Migrate) + - [Rpc.Account.Migrate.Request](#anytype-Rpc-Account-Migrate-Request) + - [Rpc.Account.Migrate.Response](#anytype-Rpc-Account-Migrate-Response) + - [Rpc.Account.Migrate.Response.Error](#anytype-Rpc-Account-Migrate-Response-Error) - [Rpc.Account.Move](#anytype-Rpc-Account-Move) - [Rpc.Account.Move.Request](#anytype-Rpc-Account-Move-Request) - [Rpc.Account.Move.Response](#anytype-Rpc-Account-Move-Response) @@ -1260,6 +1264,7 @@ - [Rpc.Account.EnableLocalNetworkSync.Response.Error.Code](#anytype-Rpc-Account-EnableLocalNetworkSync-Response-Error-Code) - [Rpc.Account.LocalLink.NewChallenge.Response.Error.Code](#anytype-Rpc-Account-LocalLink-NewChallenge-Response-Error-Code) - [Rpc.Account.LocalLink.SolveChallenge.Response.Error.Code](#anytype-Rpc-Account-LocalLink-SolveChallenge-Response-Error-Code) + - [Rpc.Account.Migrate.Response.Error.Code](#anytype-Rpc-Account-Migrate-Response-Error-Code) - [Rpc.Account.Move.Response.Error.Code](#anytype-Rpc-Account-Move-Response-Error-Code) - [Rpc.Account.NetworkMode](#anytype-Rpc-Account-NetworkMode) - [Rpc.Account.Recover.Response.Error.Code](#anytype-Rpc-Account-Recover-Response-Error-Code) @@ -1988,6 +1993,7 @@ | AccountDelete | [Rpc.Account.Delete.Request](#anytype-Rpc-Account-Delete-Request) | [Rpc.Account.Delete.Response](#anytype-Rpc-Account-Delete-Response) | | | AccountRevertDeletion | [Rpc.Account.RevertDeletion.Request](#anytype-Rpc-Account-RevertDeletion-Request) | [Rpc.Account.RevertDeletion.Response](#anytype-Rpc-Account-RevertDeletion-Response) | | | AccountSelect | [Rpc.Account.Select.Request](#anytype-Rpc-Account-Select-Request) | [Rpc.Account.Select.Response](#anytype-Rpc-Account-Select-Response) | | +| AccountMigrate | [Rpc.Account.Migrate.Request](#anytype-Rpc-Account-Migrate-Request) | [Rpc.Account.Migrate.Response](#anytype-Rpc-Account-Migrate-Response) | | | AccountEnableLocalNetworkSync | [Rpc.Account.EnableLocalNetworkSync.Request](#anytype-Rpc-Account-EnableLocalNetworkSync-Request) | [Rpc.Account.EnableLocalNetworkSync.Response](#anytype-Rpc-Account-EnableLocalNetworkSync-Response) | | | AccountStop | [Rpc.Account.Stop.Request](#anytype-Rpc-Account-Stop-Request) | [Rpc.Account.Stop.Response](#anytype-Rpc-Account-Stop-Response) | | | AccountMove | [Rpc.Account.Move.Request](#anytype-Rpc-Account-Move-Request) | [Rpc.Account.Move.Response](#anytype-Rpc-Account-Move-Response) | | @@ -3362,6 +3368,63 @@ TODO: Remove this request if we do not need it, GO-1926 + + +### Rpc.Account.Migrate + + + + + + + + + +### Rpc.Account.Migrate.Request + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [string](#string) | | Id of a selected account | +| rootPath | [string](#string) | | | + + + + + + + + +### Rpc.Account.Migrate.Response + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| error | [Rpc.Account.Migrate.Response.Error](#anytype-Rpc-Account-Migrate-Response-Error) | | | + + + + + + + + +### Rpc.Account.Migrate.Response.Error + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| code | [Rpc.Account.Migrate.Response.Error.Code](#anytype-Rpc-Account-Migrate-Response-Error-Code) | | | +| description | [string](#string) | | | + + + + + + ### Rpc.Account.Move @@ -20485,6 +20548,20 @@ Middleware-to-front-end response, that can contain a NULL error or a non-NULL er + + +### Rpc.Account.Migrate.Response.Error.Code + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| NULL | 0 | No error | +| UNKNOWN_ERROR | 1 | Any other errors | +| BAD_INPUT | 2 | Id or root path is wrong | +| ACCOUNT_NOT_FOUND | 101 | TODO: [storage] Add specific error codes for migration problems | + + + ### Rpc.Account.Move.Response.Error.Code diff --git a/go.mod b/go.mod index f6ea92b68..2e7085891 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( github.com/VividCortex/ewma v1.2.0 github.com/adrium/goheif v0.0.0-20230113233934-ca402e77a786 github.com/anyproto/any-store v0.1.4-0.20241211133419-d0c2df992842 - github.com/anyproto/any-sync v0.6.0-alpha.2.0.20250105164333-4f695f86563e + github.com/anyproto/any-sync v0.6.0-alpha.2.0.20250106182015-8cb2e54eefa7 github.com/anyproto/go-chash v0.1.0 github.com/anyproto/go-naturaldate/v2 v2.0.2-0.20230524105841-9829cfd13438 github.com/anyproto/go-slip10 v1.0.0 diff --git a/go.sum b/go.sum index 65ea0b102..11cd253f3 100644 --- a/go.sum +++ b/go.sum @@ -78,8 +78,8 @@ github.com/andybalholm/cascadia v1.3.2 h1:3Xi6Dw5lHF15JtdcmAHD3i1+T8plmv7BQ/nsVi github.com/andybalholm/cascadia v1.3.2/go.mod h1:7gtRlve5FxPPgIgX36uWBX58OdBsSS6lUvCFb+h7KvU= github.com/anyproto/any-store v0.1.4-0.20241211133419-d0c2df992842 h1:2hJRYJ4+AjOSiy3Sf84XyU/ki8zE/+Tp6IdhqZZHBaY= github.com/anyproto/any-store v0.1.4-0.20241211133419-d0c2df992842/go.mod h1:6/0OUKgSMWF/vYGoGYzQOl2CII5OdiuXbQlGDXYcNYc= -github.com/anyproto/any-sync v0.6.0-alpha.2.0.20250105164333-4f695f86563e h1:CMnuQQ2VMNghpu9/m5Vo4A+jb6HLUHQEtfmdkwm7Cfw= -github.com/anyproto/any-sync v0.6.0-alpha.2.0.20250105164333-4f695f86563e/go.mod h1:Mw8DVuLGNKk2ffEFdJT2AX40ZEv5FzYoVGe8Va0Z7mw= +github.com/anyproto/any-sync v0.6.0-alpha.2.0.20250106182015-8cb2e54eefa7 h1:G4VF+mq+QQnIMHaJUckdx0f/lIbWjqwQoc0HLoBaq48= +github.com/anyproto/any-sync v0.6.0-alpha.2.0.20250106182015-8cb2e54eefa7/go.mod h1:Mw8DVuLGNKk2ffEFdJT2AX40ZEv5FzYoVGe8Va0Z7mw= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580 h1:Ba80IlCCxkZ9H1GF+7vFu/TSpPvbpDCxXJ5ogc4euYc= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580/go.mod h1:T/uWAYxrXdaXw64ihI++9RMbKTCpKd/yE9+saARew7k= github.com/anyproto/go-chash v0.1.0 h1:I9meTPjXFRfXZHRJzjOHC/XF7Q5vzysKkiT/grsogXY= diff --git a/pb/commands.pb.go b/pb/commands.pb.go index 57d40ca5f..1bedf27ed 100644 --- a/pb/commands.pb.go +++ b/pb/commands.pb.go @@ -1132,6 +1132,37 @@ func (RpcAccountRevertDeletionResponseErrorCode) EnumDescriptor() ([]byte, []int return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 4, 1, 0, 0} } +type RpcAccountMigrateResponseErrorCode int32 + +const ( + RpcAccountMigrateResponseError_NULL RpcAccountMigrateResponseErrorCode = 0 + RpcAccountMigrateResponseError_UNKNOWN_ERROR RpcAccountMigrateResponseErrorCode = 1 + RpcAccountMigrateResponseError_BAD_INPUT RpcAccountMigrateResponseErrorCode = 2 + RpcAccountMigrateResponseError_ACCOUNT_NOT_FOUND RpcAccountMigrateResponseErrorCode = 101 +) + +var RpcAccountMigrateResponseErrorCode_name = map[int32]string{ + 0: "NULL", + 1: "UNKNOWN_ERROR", + 2: "BAD_INPUT", + 101: "ACCOUNT_NOT_FOUND", +} + +var RpcAccountMigrateResponseErrorCode_value = map[string]int32{ + "NULL": 0, + "UNKNOWN_ERROR": 1, + "BAD_INPUT": 2, + "ACCOUNT_NOT_FOUND": 101, +} + +func (x RpcAccountMigrateResponseErrorCode) String() string { + return proto.EnumName(RpcAccountMigrateResponseErrorCode_name, int32(x)) +} + +func (RpcAccountMigrateResponseErrorCode) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 5, 1, 0, 0} +} + type RpcAccountSelectResponseErrorCode int32 const ( @@ -1196,7 +1227,7 @@ func (x RpcAccountSelectResponseErrorCode) String() string { } func (RpcAccountSelectResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 5, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 6, 1, 0, 0} } type RpcAccountStopResponseErrorCode int32 @@ -1233,7 +1264,7 @@ func (x RpcAccountStopResponseErrorCode) String() string { } func (RpcAccountStopResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 6, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 7, 1, 0, 0} } type RpcAccountMoveResponseErrorCode int32 @@ -1279,7 +1310,7 @@ func (x RpcAccountMoveResponseErrorCode) String() string { } func (RpcAccountMoveResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 7, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 8, 1, 0, 0} } type RpcAccountConfigUpdateTimezones int32 @@ -1382,7 +1413,7 @@ func (x RpcAccountConfigUpdateTimezones) String() string { } func (RpcAccountConfigUpdateTimezones) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 8, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 9, 0} } type RpcAccountConfigUpdateResponseErrorCode int32 @@ -1416,7 +1447,7 @@ func (x RpcAccountConfigUpdateResponseErrorCode) String() string { } func (RpcAccountConfigUpdateResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 8, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 9, 1, 0, 0} } type RpcAccountRecoverFromLegacyExportResponseErrorCode int32 @@ -1447,7 +1478,7 @@ func (x RpcAccountRecoverFromLegacyExportResponseErrorCode) String() string { } func (RpcAccountRecoverFromLegacyExportResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 10, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 11, 1, 0, 0} } type RpcAccountEnableLocalNetworkSyncResponseErrorCode int32 @@ -1478,7 +1509,7 @@ func (x RpcAccountEnableLocalNetworkSyncResponseErrorCode) String() string { } func (RpcAccountEnableLocalNetworkSyncResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 11, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12, 1, 0, 0} } type RpcAccountChangeNetworkConfigAndRestartResponseErrorCode int32 @@ -1521,7 +1552,7 @@ func (x RpcAccountChangeNetworkConfigAndRestartResponseErrorCode) String() strin } func (RpcAccountChangeNetworkConfigAndRestartResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 1, 0, 0} } type RpcAccountLocalLinkNewChallengeResponseErrorCode int32 @@ -1555,7 +1586,7 @@ func (x RpcAccountLocalLinkNewChallengeResponseErrorCode) String() string { } func (RpcAccountLocalLinkNewChallengeResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 0, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 0, 1, 0, 0} } type RpcAccountLocalLinkSolveChallengeResponseErrorCode int32 @@ -1595,7 +1626,7 @@ func (x RpcAccountLocalLinkSolveChallengeResponseErrorCode) String() string { } func (RpcAccountLocalLinkSolveChallengeResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 1, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 1, 1, 0, 0} } type RpcWorkspaceGetCurrentResponseErrorCode int32 @@ -14612,6 +14643,190 @@ func (m *RpcAccountRevertDeletionResponseError) GetDescription() string { return "" } +type RpcAccountMigrate struct { +} + +func (m *RpcAccountMigrate) Reset() { *m = RpcAccountMigrate{} } +func (m *RpcAccountMigrate) String() string { return proto.CompactTextString(m) } +func (*RpcAccountMigrate) ProtoMessage() {} +func (*RpcAccountMigrate) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 5} +} +func (m *RpcAccountMigrate) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcAccountMigrate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcAccountMigrate.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcAccountMigrate) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcAccountMigrate.Merge(m, src) +} +func (m *RpcAccountMigrate) XXX_Size() int { + return m.Size() +} +func (m *RpcAccountMigrate) XXX_DiscardUnknown() { + xxx_messageInfo_RpcAccountMigrate.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcAccountMigrate proto.InternalMessageInfo + +type RpcAccountMigrateRequest struct { + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + RootPath string `protobuf:"bytes,2,opt,name=rootPath,proto3" json:"rootPath,omitempty"` +} + +func (m *RpcAccountMigrateRequest) Reset() { *m = RpcAccountMigrateRequest{} } +func (m *RpcAccountMigrateRequest) String() string { return proto.CompactTextString(m) } +func (*RpcAccountMigrateRequest) ProtoMessage() {} +func (*RpcAccountMigrateRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 5, 0} +} +func (m *RpcAccountMigrateRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcAccountMigrateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcAccountMigrateRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcAccountMigrateRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcAccountMigrateRequest.Merge(m, src) +} +func (m *RpcAccountMigrateRequest) XXX_Size() int { + return m.Size() +} +func (m *RpcAccountMigrateRequest) XXX_DiscardUnknown() { + xxx_messageInfo_RpcAccountMigrateRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcAccountMigrateRequest proto.InternalMessageInfo + +func (m *RpcAccountMigrateRequest) GetId() string { + if m != nil { + return m.Id + } + return "" +} + +func (m *RpcAccountMigrateRequest) GetRootPath() string { + if m != nil { + return m.RootPath + } + return "" +} + +type RpcAccountMigrateResponse struct { + Error *RpcAccountMigrateResponseError `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` +} + +func (m *RpcAccountMigrateResponse) Reset() { *m = RpcAccountMigrateResponse{} } +func (m *RpcAccountMigrateResponse) String() string { return proto.CompactTextString(m) } +func (*RpcAccountMigrateResponse) ProtoMessage() {} +func (*RpcAccountMigrateResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 5, 1} +} +func (m *RpcAccountMigrateResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcAccountMigrateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcAccountMigrateResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcAccountMigrateResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcAccountMigrateResponse.Merge(m, src) +} +func (m *RpcAccountMigrateResponse) XXX_Size() int { + return m.Size() +} +func (m *RpcAccountMigrateResponse) XXX_DiscardUnknown() { + xxx_messageInfo_RpcAccountMigrateResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcAccountMigrateResponse proto.InternalMessageInfo + +func (m *RpcAccountMigrateResponse) GetError() *RpcAccountMigrateResponseError { + if m != nil { + return m.Error + } + return nil +} + +type RpcAccountMigrateResponseError struct { + Code RpcAccountMigrateResponseErrorCode `protobuf:"varint,1,opt,name=code,proto3,enum=anytype.RpcAccountMigrateResponseErrorCode" json:"code,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` +} + +func (m *RpcAccountMigrateResponseError) Reset() { *m = RpcAccountMigrateResponseError{} } +func (m *RpcAccountMigrateResponseError) String() string { return proto.CompactTextString(m) } +func (*RpcAccountMigrateResponseError) ProtoMessage() {} +func (*RpcAccountMigrateResponseError) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 5, 1, 0} +} +func (m *RpcAccountMigrateResponseError) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcAccountMigrateResponseError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcAccountMigrateResponseError.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcAccountMigrateResponseError) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcAccountMigrateResponseError.Merge(m, src) +} +func (m *RpcAccountMigrateResponseError) XXX_Size() int { + return m.Size() +} +func (m *RpcAccountMigrateResponseError) XXX_DiscardUnknown() { + xxx_messageInfo_RpcAccountMigrateResponseError.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcAccountMigrateResponseError proto.InternalMessageInfo + +func (m *RpcAccountMigrateResponseError) GetCode() RpcAccountMigrateResponseErrorCode { + if m != nil { + return m.Code + } + return RpcAccountMigrateResponseError_NULL +} + +func (m *RpcAccountMigrateResponseError) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + type RpcAccountSelect struct { } @@ -14619,7 +14834,7 @@ func (m *RpcAccountSelect) Reset() { *m = RpcAccountSelect{} } func (m *RpcAccountSelect) String() string { return proto.CompactTextString(m) } func (*RpcAccountSelect) ProtoMessage() {} func (*RpcAccountSelect) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 5} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 6} } func (m *RpcAccountSelect) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14664,7 +14879,7 @@ func (m *RpcAccountSelectRequest) Reset() { *m = RpcAccountSelectRequest func (m *RpcAccountSelectRequest) String() string { return proto.CompactTextString(m) } func (*RpcAccountSelectRequest) ProtoMessage() {} func (*RpcAccountSelectRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 5, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 6, 0} } func (m *RpcAccountSelectRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14747,7 +14962,7 @@ func (m *RpcAccountSelectResponse) Reset() { *m = RpcAccountSelectRespon func (m *RpcAccountSelectResponse) String() string { return proto.CompactTextString(m) } func (*RpcAccountSelectResponse) ProtoMessage() {} func (*RpcAccountSelectResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 5, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 6, 1} } func (m *RpcAccountSelectResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14806,7 +15021,7 @@ func (m *RpcAccountSelectResponseError) Reset() { *m = RpcAccountSelectR func (m *RpcAccountSelectResponseError) String() string { return proto.CompactTextString(m) } func (*RpcAccountSelectResponseError) ProtoMessage() {} func (*RpcAccountSelectResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 5, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 6, 1, 0} } func (m *RpcAccountSelectResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14856,7 +15071,7 @@ func (m *RpcAccountStop) Reset() { *m = RpcAccountStop{} } func (m *RpcAccountStop) String() string { return proto.CompactTextString(m) } func (*RpcAccountStop) ProtoMessage() {} func (*RpcAccountStop) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 6} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 7} } func (m *RpcAccountStop) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14895,7 +15110,7 @@ func (m *RpcAccountStopRequest) Reset() { *m = RpcAccountStopRequest{} } func (m *RpcAccountStopRequest) String() string { return proto.CompactTextString(m) } func (*RpcAccountStopRequest) ProtoMessage() {} func (*RpcAccountStopRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 6, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 7, 0} } func (m *RpcAccountStopRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14941,7 +15156,7 @@ func (m *RpcAccountStopResponse) Reset() { *m = RpcAccountStopResponse{} func (m *RpcAccountStopResponse) String() string { return proto.CompactTextString(m) } func (*RpcAccountStopResponse) ProtoMessage() {} func (*RpcAccountStopResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 6, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 7, 1} } func (m *RpcAccountStopResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14986,7 +15201,7 @@ func (m *RpcAccountStopResponseError) Reset() { *m = RpcAccountStopRespo func (m *RpcAccountStopResponseError) String() string { return proto.CompactTextString(m) } func (*RpcAccountStopResponseError) ProtoMessage() {} func (*RpcAccountStopResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 6, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 7, 1, 0} } func (m *RpcAccountStopResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15036,7 +15251,7 @@ func (m *RpcAccountMove) Reset() { *m = RpcAccountMove{} } func (m *RpcAccountMove) String() string { return proto.CompactTextString(m) } func (*RpcAccountMove) ProtoMessage() {} func (*RpcAccountMove) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 7} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 8} } func (m *RpcAccountMove) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15075,7 +15290,7 @@ func (m *RpcAccountMoveRequest) Reset() { *m = RpcAccountMoveRequest{} } func (m *RpcAccountMoveRequest) String() string { return proto.CompactTextString(m) } func (*RpcAccountMoveRequest) ProtoMessage() {} func (*RpcAccountMoveRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 7, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 8, 0} } func (m *RpcAccountMoveRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15119,7 +15334,7 @@ func (m *RpcAccountMoveResponse) Reset() { *m = RpcAccountMoveResponse{} func (m *RpcAccountMoveResponse) String() string { return proto.CompactTextString(m) } func (*RpcAccountMoveResponse) ProtoMessage() {} func (*RpcAccountMoveResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 7, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 8, 1} } func (m *RpcAccountMoveResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15164,7 +15379,7 @@ func (m *RpcAccountMoveResponseError) Reset() { *m = RpcAccountMoveRespo func (m *RpcAccountMoveResponseError) String() string { return proto.CompactTextString(m) } func (*RpcAccountMoveResponseError) ProtoMessage() {} func (*RpcAccountMoveResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 7, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 8, 1, 0} } func (m *RpcAccountMoveResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15214,7 +15429,7 @@ func (m *RpcAccountConfigUpdate) Reset() { *m = RpcAccountConfigUpdate{} func (m *RpcAccountConfigUpdate) String() string { return proto.CompactTextString(m) } func (*RpcAccountConfigUpdate) ProtoMessage() {} func (*RpcAccountConfigUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 8} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 9} } func (m *RpcAccountConfigUpdate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15251,7 +15466,7 @@ func (m *RpcAccountConfigUpdateRequest) Reset() { *m = RpcAccountConfigU func (m *RpcAccountConfigUpdateRequest) String() string { return proto.CompactTextString(m) } func (*RpcAccountConfigUpdateRequest) ProtoMessage() {} func (*RpcAccountConfigUpdateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 8, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 9, 0} } func (m *RpcAccountConfigUpdateRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15295,7 +15510,7 @@ func (m *RpcAccountConfigUpdateResponse) Reset() { *m = RpcAccountConfig func (m *RpcAccountConfigUpdateResponse) String() string { return proto.CompactTextString(m) } func (*RpcAccountConfigUpdateResponse) ProtoMessage() {} func (*RpcAccountConfigUpdateResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 8, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 9, 1} } func (m *RpcAccountConfigUpdateResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15340,7 +15555,7 @@ func (m *RpcAccountConfigUpdateResponseError) Reset() { *m = RpcAccountC func (m *RpcAccountConfigUpdateResponseError) String() string { return proto.CompactTextString(m) } func (*RpcAccountConfigUpdateResponseError) ProtoMessage() {} func (*RpcAccountConfigUpdateResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 8, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 9, 1, 0} } func (m *RpcAccountConfigUpdateResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15390,7 +15605,7 @@ func (m *RpcAccountGetConfig) Reset() { *m = RpcAccountGetConfig{} } func (m *RpcAccountGetConfig) String() string { return proto.CompactTextString(m) } func (*RpcAccountGetConfig) ProtoMessage() {} func (*RpcAccountGetConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 9} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 10} } func (m *RpcAccountGetConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15426,7 +15641,7 @@ func (m *RpcAccountGetConfigGet) Reset() { *m = RpcAccountGetConfigGet{} func (m *RpcAccountGetConfigGet) String() string { return proto.CompactTextString(m) } func (*RpcAccountGetConfigGet) ProtoMessage() {} func (*RpcAccountGetConfigGet) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 9, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 10, 0} } func (m *RpcAccountGetConfigGet) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15462,7 +15677,7 @@ func (m *RpcAccountGetConfigGetRequest) Reset() { *m = RpcAccountGetConf func (m *RpcAccountGetConfigGetRequest) String() string { return proto.CompactTextString(m) } func (*RpcAccountGetConfigGetRequest) ProtoMessage() {} func (*RpcAccountGetConfigGetRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 9, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 10, 0, 0} } func (m *RpcAccountGetConfigGetRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15498,7 +15713,7 @@ func (m *RpcAccountRecoverFromLegacyExport) Reset() { *m = RpcAccountRec func (m *RpcAccountRecoverFromLegacyExport) String() string { return proto.CompactTextString(m) } func (*RpcAccountRecoverFromLegacyExport) ProtoMessage() {} func (*RpcAccountRecoverFromLegacyExport) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 10} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 11} } func (m *RpcAccountRecoverFromLegacyExport) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15539,7 +15754,7 @@ func (m *RpcAccountRecoverFromLegacyExportRequest) Reset() { func (m *RpcAccountRecoverFromLegacyExportRequest) String() string { return proto.CompactTextString(m) } func (*RpcAccountRecoverFromLegacyExportRequest) ProtoMessage() {} func (*RpcAccountRecoverFromLegacyExportRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 10, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 11, 0} } func (m *RpcAccountRecoverFromLegacyExportRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15603,7 +15818,7 @@ func (m *RpcAccountRecoverFromLegacyExportResponse) String() string { } func (*RpcAccountRecoverFromLegacyExportResponse) ProtoMessage() {} func (*RpcAccountRecoverFromLegacyExportResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 10, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 11, 1} } func (m *RpcAccountRecoverFromLegacyExportResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15666,7 +15881,7 @@ func (m *RpcAccountRecoverFromLegacyExportResponseError) String() string { } func (*RpcAccountRecoverFromLegacyExportResponseError) ProtoMessage() {} func (*RpcAccountRecoverFromLegacyExportResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 10, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 11, 1, 0} } func (m *RpcAccountRecoverFromLegacyExportResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15716,7 +15931,7 @@ func (m *RpcAccountEnableLocalNetworkSync) Reset() { *m = RpcAccountEnab func (m *RpcAccountEnableLocalNetworkSync) String() string { return proto.CompactTextString(m) } func (*RpcAccountEnableLocalNetworkSync) ProtoMessage() {} func (*RpcAccountEnableLocalNetworkSync) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 11} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12} } func (m *RpcAccountEnableLocalNetworkSync) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15754,7 +15969,7 @@ func (m *RpcAccountEnableLocalNetworkSyncRequest) Reset() { func (m *RpcAccountEnableLocalNetworkSyncRequest) String() string { return proto.CompactTextString(m) } func (*RpcAccountEnableLocalNetworkSyncRequest) ProtoMessage() {} func (*RpcAccountEnableLocalNetworkSyncRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 11, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12, 0} } func (m *RpcAccountEnableLocalNetworkSyncRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15793,7 +16008,7 @@ func (m *RpcAccountEnableLocalNetworkSyncResponse) Reset() { func (m *RpcAccountEnableLocalNetworkSyncResponse) String() string { return proto.CompactTextString(m) } func (*RpcAccountEnableLocalNetworkSyncResponse) ProtoMessage() {} func (*RpcAccountEnableLocalNetworkSyncResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 11, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12, 1} } func (m *RpcAccountEnableLocalNetworkSyncResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15842,7 +16057,7 @@ func (m *RpcAccountEnableLocalNetworkSyncResponseError) String() string { } func (*RpcAccountEnableLocalNetworkSyncResponseError) ProtoMessage() {} func (*RpcAccountEnableLocalNetworkSyncResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 11, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12, 1, 0} } func (m *RpcAccountEnableLocalNetworkSyncResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15894,7 +16109,7 @@ func (m *RpcAccountChangeNetworkConfigAndRestart) Reset() { func (m *RpcAccountChangeNetworkConfigAndRestart) String() string { return proto.CompactTextString(m) } func (*RpcAccountChangeNetworkConfigAndRestart) ProtoMessage() {} func (*RpcAccountChangeNetworkConfigAndRestart) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13} } func (m *RpcAccountChangeNetworkConfigAndRestart) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15936,7 +16151,7 @@ func (m *RpcAccountChangeNetworkConfigAndRestartRequest) String() string { } func (*RpcAccountChangeNetworkConfigAndRestartRequest) ProtoMessage() {} func (*RpcAccountChangeNetworkConfigAndRestartRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 0} } func (m *RpcAccountChangeNetworkConfigAndRestartRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15991,7 +16206,7 @@ func (m *RpcAccountChangeNetworkConfigAndRestartResponse) String() string { } func (*RpcAccountChangeNetworkConfigAndRestartResponse) ProtoMessage() {} func (*RpcAccountChangeNetworkConfigAndRestartResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 1} } func (m *RpcAccountChangeNetworkConfigAndRestartResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16040,7 +16255,7 @@ func (m *RpcAccountChangeNetworkConfigAndRestartResponseError) String() string { } func (*RpcAccountChangeNetworkConfigAndRestartResponseError) ProtoMessage() {} func (*RpcAccountChangeNetworkConfigAndRestartResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 1, 0} } func (m *RpcAccountChangeNetworkConfigAndRestartResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16090,7 +16305,7 @@ func (m *RpcAccountLocalLink) Reset() { *m = RpcAccountLocalLink{} } func (m *RpcAccountLocalLink) String() string { return proto.CompactTextString(m) } func (*RpcAccountLocalLink) ProtoMessage() {} func (*RpcAccountLocalLink) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14} } func (m *RpcAccountLocalLink) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16126,7 +16341,7 @@ func (m *RpcAccountLocalLinkNewChallenge) Reset() { *m = RpcAccountLocal func (m *RpcAccountLocalLinkNewChallenge) String() string { return proto.CompactTextString(m) } func (*RpcAccountLocalLinkNewChallenge) ProtoMessage() {} func (*RpcAccountLocalLinkNewChallenge) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 0} } func (m *RpcAccountLocalLinkNewChallenge) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16165,7 +16380,7 @@ func (m *RpcAccountLocalLinkNewChallengeRequest) Reset() { func (m *RpcAccountLocalLinkNewChallengeRequest) String() string { return proto.CompactTextString(m) } func (*RpcAccountLocalLinkNewChallengeRequest) ProtoMessage() {} func (*RpcAccountLocalLinkNewChallengeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 0, 0} } func (m *RpcAccountLocalLinkNewChallengeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16212,7 +16427,7 @@ func (m *RpcAccountLocalLinkNewChallengeResponse) Reset() { func (m *RpcAccountLocalLinkNewChallengeResponse) String() string { return proto.CompactTextString(m) } func (*RpcAccountLocalLinkNewChallengeResponse) ProtoMessage() {} func (*RpcAccountLocalLinkNewChallengeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 0, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 0, 1} } func (m *RpcAccountLocalLinkNewChallengeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16268,7 +16483,7 @@ func (m *RpcAccountLocalLinkNewChallengeResponseError) String() string { } func (*RpcAccountLocalLinkNewChallengeResponseError) ProtoMessage() {} func (*RpcAccountLocalLinkNewChallengeResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 0, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 0, 1, 0} } func (m *RpcAccountLocalLinkNewChallengeResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16318,7 +16533,7 @@ func (m *RpcAccountLocalLinkSolveChallenge) Reset() { *m = RpcAccountLoc func (m *RpcAccountLocalLinkSolveChallenge) String() string { return proto.CompactTextString(m) } func (*RpcAccountLocalLinkSolveChallenge) ProtoMessage() {} func (*RpcAccountLocalLinkSolveChallenge) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 1} } func (m *RpcAccountLocalLinkSolveChallenge) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16358,7 +16573,7 @@ func (m *RpcAccountLocalLinkSolveChallengeRequest) Reset() { func (m *RpcAccountLocalLinkSolveChallengeRequest) String() string { return proto.CompactTextString(m) } func (*RpcAccountLocalLinkSolveChallengeRequest) ProtoMessage() {} func (*RpcAccountLocalLinkSolveChallengeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 1, 0} } func (m *RpcAccountLocalLinkSolveChallengeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16415,7 +16630,7 @@ func (m *RpcAccountLocalLinkSolveChallengeResponse) String() string { } func (*RpcAccountLocalLinkSolveChallengeResponse) ProtoMessage() {} func (*RpcAccountLocalLinkSolveChallengeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 1, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 1, 1} } func (m *RpcAccountLocalLinkSolveChallengeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16478,7 +16693,7 @@ func (m *RpcAccountLocalLinkSolveChallengeResponseError) String() string { } func (*RpcAccountLocalLinkSolveChallengeResponseError) ProtoMessage() {} func (*RpcAccountLocalLinkSolveChallengeResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 1, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 1, 1, 0} } func (m *RpcAccountLocalLinkSolveChallengeResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -69301,6 +69516,7 @@ func init() { proto.RegisterEnum("anytype.RpcAccountRecoverResponseErrorCode", RpcAccountRecoverResponseErrorCode_name, RpcAccountRecoverResponseErrorCode_value) proto.RegisterEnum("anytype.RpcAccountDeleteResponseErrorCode", RpcAccountDeleteResponseErrorCode_name, RpcAccountDeleteResponseErrorCode_value) proto.RegisterEnum("anytype.RpcAccountRevertDeletionResponseErrorCode", RpcAccountRevertDeletionResponseErrorCode_name, RpcAccountRevertDeletionResponseErrorCode_value) + proto.RegisterEnum("anytype.RpcAccountMigrateResponseErrorCode", RpcAccountMigrateResponseErrorCode_name, RpcAccountMigrateResponseErrorCode_value) proto.RegisterEnum("anytype.RpcAccountSelectResponseErrorCode", RpcAccountSelectResponseErrorCode_name, RpcAccountSelectResponseErrorCode_value) proto.RegisterEnum("anytype.RpcAccountStopResponseErrorCode", RpcAccountStopResponseErrorCode_name, RpcAccountStopResponseErrorCode_value) proto.RegisterEnum("anytype.RpcAccountMoveResponseErrorCode", RpcAccountMoveResponseErrorCode_name, RpcAccountMoveResponseErrorCode_value) @@ -69682,6 +69898,10 @@ func init() { proto.RegisterType((*RpcAccountRevertDeletionRequest)(nil), "anytype.Rpc.Account.RevertDeletion.Request") proto.RegisterType((*RpcAccountRevertDeletionResponse)(nil), "anytype.Rpc.Account.RevertDeletion.Response") proto.RegisterType((*RpcAccountRevertDeletionResponseError)(nil), "anytype.Rpc.Account.RevertDeletion.Response.Error") + proto.RegisterType((*RpcAccountMigrate)(nil), "anytype.Rpc.Account.Migrate") + proto.RegisterType((*RpcAccountMigrateRequest)(nil), "anytype.Rpc.Account.Migrate.Request") + proto.RegisterType((*RpcAccountMigrateResponse)(nil), "anytype.Rpc.Account.Migrate.Response") + proto.RegisterType((*RpcAccountMigrateResponseError)(nil), "anytype.Rpc.Account.Migrate.Response.Error") proto.RegisterType((*RpcAccountSelect)(nil), "anytype.Rpc.Account.Select") proto.RegisterType((*RpcAccountSelectRequest)(nil), "anytype.Rpc.Account.Select.Request") proto.RegisterType((*RpcAccountSelectResponse)(nil), "anytype.Rpc.Account.Select.Response") @@ -70774,1209 +70994,1211 @@ func init() { func init() { proto.RegisterFile("pb/protos/commands.proto", fileDescriptor_8261c968b2e6f45c) } var fileDescriptor_8261c968b2e6f45c = []byte{ - // 19227 bytes of a gzipped FileDescriptorProto + // 19261 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x7f, 0x9c, 0x23, 0x47, - 0x75, 0x2f, 0xba, 0x52, 0x4b, 0x9a, 0x99, 0x33, 0x3f, 0x56, 0xdb, 0xde, 0x5d, 0xaf, 0xcb, 0x66, - 0x6d, 0xd6, 0xc6, 0x38, 0xc6, 0x8c, 0x8d, 0x21, 0x80, 0x8d, 0x8d, 0xad, 0xd1, 0x68, 0x66, 0x64, - 0xcf, 0x48, 0x43, 0x4b, 0xb3, 0x8b, 0x93, 0x9b, 0xa7, 0xdb, 0x2b, 0xd5, 0xcc, 0xb4, 0x57, 0xd3, - 0xad, 0xb4, 0x7a, 0x66, 0xbd, 0xbc, 0xcf, 0x7d, 0x37, 0x84, 0x98, 0x1f, 0x21, 0x5c, 0x42, 0x08, - 0x49, 0xf8, 0x0d, 0x06, 0xc3, 0x85, 0x04, 0x08, 0xbf, 0x2f, 0x24, 0x01, 0xc2, 0x8f, 0x40, 0x48, - 0x42, 0x08, 0x84, 0x40, 0x48, 0x78, 0x81, 0x40, 0x08, 0x79, 0x9f, 0x10, 0x5e, 0xf2, 0x6e, 0xe0, - 0x92, 0x84, 0x97, 0xf7, 0xe9, 0xaa, 0xea, 0xee, 0x2a, 0x8d, 0xba, 0x55, 0xad, 0x51, 0x6b, 0x4c, - 0x78, 0xff, 0x75, 0x57, 0x57, 0x9f, 0x3a, 0x75, 0xbe, 0xa7, 0xaa, 0x4e, 0x55, 0x9d, 0x3a, 0x05, - 0xa7, 0x3a, 0xe7, 0x6f, 0xee, 0xd8, 0x96, 0x63, 0x75, 0x6f, 0x6e, 0x5a, 0x3b, 0x3b, 0xba, 0xd9, - 0xea, 0xce, 0x93, 0x77, 0x75, 0x42, 0x37, 0x2f, 0x39, 0x97, 0x3a, 0x18, 0x5d, 0xd7, 0xb9, 0xb0, - 0x75, 0x73, 0xdb, 0x38, 0x7f, 0x73, 0xe7, 0xfc, 0xcd, 0x3b, 0x56, 0x0b, 0xb7, 0xbd, 0x1f, 0xc8, - 0x0b, 0xcb, 0x8e, 0x6e, 0x08, 0xcb, 0xd5, 0xb6, 0x9a, 0x7a, 0xbb, 0xeb, 0x58, 0x36, 0x66, 0x39, - 0x4f, 0x06, 0x45, 0xe2, 0x3d, 0x6c, 0x3a, 0x1e, 0x85, 0xab, 0xb6, 0x2c, 0x6b, 0xab, 0x8d, 0xe9, - 0xb7, 0xf3, 0xbb, 0x9b, 0x37, 0x77, 0x1d, 0x7b, 0xb7, 0xe9, 0xb0, 0xaf, 0xd7, 0xf4, 0x7e, 0x6d, - 0xe1, 0x6e, 0xd3, 0x36, 0x3a, 0x8e, 0x65, 0xd3, 0x1c, 0x67, 0xfe, 0xe1, 0x5f, 0x26, 0x40, 0xd1, - 0x3a, 0x4d, 0xf4, 0xdd, 0x09, 0x50, 0x0a, 0x9d, 0x0e, 0xfa, 0x44, 0x1a, 0x60, 0x19, 0x3b, 0x67, - 0xb1, 0xdd, 0x35, 0x2c, 0x13, 0x1d, 0x85, 0x09, 0x0d, 0xff, 0xf4, 0x2e, 0xee, 0x3a, 0xb7, 0x67, - 0x9e, 0xff, 0x4d, 0x25, 0x85, 0x1e, 0x4e, 0xc3, 0xa4, 0x86, 0xbb, 0x1d, 0xcb, 0xec, 0x62, 0xf5, - 0x6e, 0xc8, 0x62, 0xdb, 0xb6, 0xec, 0x53, 0xa9, 0x6b, 0x52, 0x37, 0x4c, 0xdf, 0x7a, 0xe3, 0x3c, - 0xab, 0xfe, 0xbc, 0xd6, 0x69, 0xce, 0x17, 0x3a, 0x9d, 0xf9, 0x80, 0xd2, 0xbc, 0xf7, 0xd3, 0x7c, - 0xc9, 0xfd, 0x43, 0xa3, 0x3f, 0xaa, 0xa7, 0x60, 0x62, 0x8f, 0x66, 0x38, 0x95, 0xbe, 0x26, 0x75, - 0xc3, 0x94, 0xe6, 0xbd, 0xba, 0x5f, 0x5a, 0xd8, 0xd1, 0x8d, 0x76, 0xf7, 0x94, 0x42, 0xbf, 0xb0, - 0x57, 0xf4, 0x50, 0x0a, 0xb2, 0x84, 0x88, 0x5a, 0x84, 0x4c, 0xd3, 0x6a, 0x61, 0x52, 0xfc, 0xdc, - 0xad, 0x37, 0xcb, 0x17, 0x3f, 0x5f, 0xb4, 0x5a, 0x58, 0x23, 0x3f, 0xab, 0xd7, 0xc0, 0xb4, 0x27, - 0x96, 0x80, 0x0d, 0x3e, 0xe9, 0xcc, 0xad, 0x90, 0x71, 0xf3, 0xab, 0x93, 0x90, 0xa9, 0x6c, 0xac, - 0xae, 0xe6, 0x8f, 0xa8, 0xc7, 0x60, 0x76, 0xa3, 0x72, 0x6f, 0xa5, 0x7a, 0xae, 0xd2, 0x28, 0x69, - 0x5a, 0x55, 0xcb, 0xa7, 0xd4, 0x59, 0x98, 0x5a, 0x28, 0x2c, 0x36, 0xca, 0x95, 0xf5, 0x8d, 0x7a, - 0x3e, 0x8d, 0x5e, 0xa3, 0xc0, 0x5c, 0x0d, 0x3b, 0x8b, 0x78, 0xcf, 0x68, 0xe2, 0x9a, 0xa3, 0x3b, - 0x18, 0xbd, 0x38, 0xe5, 0x0b, 0x53, 0xdd, 0x70, 0x0b, 0xf5, 0x3f, 0xb1, 0x0a, 0x3c, 0x71, 0x5f, - 0x05, 0x44, 0x0a, 0xf3, 0xec, 0xef, 0x79, 0x2e, 0x4d, 0xe3, 0xe9, 0x9c, 0x79, 0x3c, 0x4c, 0x73, - 0xdf, 0xd4, 0x39, 0x80, 0x85, 0x42, 0xf1, 0xde, 0x65, 0xad, 0xba, 0x51, 0x59, 0xcc, 0x1f, 0x71, - 0xdf, 0x97, 0xaa, 0x5a, 0x89, 0xbd, 0xa7, 0xd0, 0xf7, 0x53, 0x1c, 0x98, 0x8b, 0x22, 0x98, 0xf3, - 0x83, 0x99, 0xe9, 0x03, 0x28, 0x7a, 0x93, 0x0f, 0xce, 0xb2, 0x00, 0xce, 0x13, 0xe3, 0x91, 0x4b, - 0x1e, 0xa0, 0x07, 0xd3, 0x30, 0x59, 0xdb, 0xde, 0x75, 0x5a, 0xd6, 0x45, 0x13, 0x4d, 0xf9, 0xc8, - 0xa0, 0x6f, 0xf3, 0x32, 0x79, 0xba, 0x28, 0x93, 0x1b, 0xf6, 0x57, 0x82, 0x51, 0x08, 0x91, 0xc6, - 0xeb, 0x7c, 0x69, 0x14, 0x04, 0x69, 0x3c, 0x5e, 0x96, 0x50, 0xf2, 0x72, 0x78, 0xc5, 0x53, 0x21, - 0x5b, 0xeb, 0xe8, 0x4d, 0x8c, 0xfe, 0x50, 0x81, 0x99, 0x55, 0xac, 0xef, 0xe1, 0x42, 0xa7, 0x63, - 0x5b, 0x7b, 0x18, 0x15, 0x03, 0x7d, 0x3d, 0x05, 0x13, 0x5d, 0x37, 0x53, 0xb9, 0x45, 0x6a, 0x30, - 0xa5, 0x79, 0xaf, 0xea, 0x69, 0x00, 0xa3, 0x85, 0x4d, 0xc7, 0x70, 0x0c, 0xdc, 0x3d, 0x95, 0xbe, - 0x46, 0xb9, 0x61, 0x4a, 0xe3, 0x52, 0xd0, 0x77, 0xd3, 0xb2, 0x3a, 0x46, 0xb8, 0x98, 0xe7, 0x39, - 0x08, 0x91, 0xea, 0x1b, 0xd2, 0x32, 0x3a, 0x36, 0x90, 0x5c, 0x3c, 0xd9, 0xbe, 0x3d, 0x15, 0x5f, - 0xb8, 0x6e, 0x8e, 0x4a, 0xb5, 0x51, 0xdb, 0x28, 0xae, 0x34, 0x6a, 0xeb, 0x85, 0x62, 0x29, 0x8f, - 0xd5, 0xe3, 0x90, 0x27, 0x8f, 0x8d, 0x72, 0xad, 0xb1, 0x58, 0x5a, 0x2d, 0xd5, 0x4b, 0x8b, 0xf9, - 0x4d, 0x55, 0x85, 0x39, 0xad, 0xf4, 0x8c, 0x8d, 0x52, 0xad, 0xde, 0x58, 0x2a, 0x94, 0x57, 0x4b, - 0x8b, 0xf9, 0x2d, 0xf7, 0xe7, 0xd5, 0xf2, 0x5a, 0xb9, 0xde, 0xd0, 0x4a, 0x85, 0xe2, 0x4a, 0x69, - 0x31, 0xbf, 0xad, 0x5e, 0x0e, 0x97, 0x55, 0xaa, 0x8d, 0xc2, 0xfa, 0xba, 0x56, 0x3d, 0x5b, 0x6a, - 0xb0, 0x3f, 0x6a, 0x79, 0x83, 0x16, 0x54, 0x6f, 0xd4, 0x56, 0x0a, 0x5a, 0xa9, 0xb0, 0xb0, 0x5a, - 0xca, 0xdf, 0x8f, 0x9e, 0xa3, 0xc0, 0xec, 0x9a, 0x7e, 0x01, 0xd7, 0xb6, 0x75, 0x1b, 0xeb, 0xe7, - 0xdb, 0x18, 0x5d, 0x2b, 0x81, 0x27, 0xfa, 0x43, 0x1e, 0xaf, 0x92, 0x88, 0xd7, 0xcd, 0x7d, 0x04, - 0x2c, 0x14, 0x11, 0x02, 0xd8, 0xff, 0xf2, 0x9b, 0xc1, 0x8a, 0x00, 0xd8, 0x93, 0x62, 0xd2, 0x8b, - 0x87, 0xd8, 0xcf, 0x3e, 0x02, 0x10, 0x43, 0x5f, 0x51, 0x60, 0xae, 0x6c, 0xee, 0x19, 0x0e, 0x5e, - 0xc6, 0x26, 0xb6, 0xdd, 0x71, 0x40, 0x0a, 0x86, 0x87, 0x15, 0x0e, 0x86, 0x25, 0x11, 0x86, 0x5b, - 0xfa, 0x88, 0x4d, 0x2c, 0x23, 0x64, 0xb4, 0xbd, 0x0a, 0xa6, 0x0c, 0x92, 0xaf, 0x68, 0xb4, 0x98, - 0xc4, 0x82, 0x04, 0xf5, 0x3a, 0x98, 0xa5, 0x2f, 0x4b, 0x46, 0x1b, 0xdf, 0x8b, 0x2f, 0xb1, 0x71, - 0x57, 0x4c, 0x44, 0xbf, 0xe0, 0x37, 0xbe, 0xb2, 0x80, 0xe5, 0x8f, 0xc7, 0x65, 0x2a, 0x1e, 0x98, - 0x2f, 0x7b, 0x24, 0x34, 0xbf, 0x7d, 0xad, 0xcc, 0x40, 0x3f, 0x48, 0xc3, 0x74, 0xcd, 0xb1, 0x3a, - 0xae, 0xca, 0x1a, 0xe6, 0x96, 0x1c, 0xb8, 0x9f, 0xe2, 0xdb, 0x58, 0x51, 0x04, 0xf7, 0xf1, 0x7d, - 0xe4, 0xc8, 0x15, 0x10, 0xd2, 0xc2, 0xbe, 0xeb, 0xb7, 0xb0, 0x25, 0x01, 0x95, 0x5b, 0x63, 0x51, - 0xfb, 0x21, 0x6c, 0x5f, 0x2f, 0x53, 0x20, 0xef, 0xa9, 0x99, 0x53, 0xdc, 0xb5, 0x6d, 0x6c, 0x3a, - 0x72, 0x20, 0xfc, 0x05, 0x0f, 0xc2, 0x8a, 0x08, 0xc2, 0xad, 0x11, 0xca, 0xec, 0x95, 0x92, 0x60, - 0x1b, 0xfb, 0x88, 0x8f, 0xe6, 0xbd, 0x02, 0x9a, 0x4f, 0x89, 0xcf, 0x56, 0x3c, 0x48, 0x57, 0x86, - 0x40, 0xf4, 0x38, 0xe4, 0xdd, 0x31, 0xa9, 0x58, 0x2f, 0x9f, 0x2d, 0x35, 0xca, 0x95, 0xb3, 0xe5, - 0x7a, 0x29, 0x8f, 0xd1, 0x4b, 0x15, 0x98, 0xa1, 0xac, 0x69, 0x78, 0xcf, 0xba, 0x20, 0xd9, 0xeb, - 0x7d, 0x25, 0xa6, 0xb1, 0xc0, 0x97, 0x10, 0xd2, 0x32, 0x7e, 0x3e, 0x86, 0xb1, 0x10, 0x41, 0xee, - 0x91, 0xd4, 0x5b, 0xed, 0x6b, 0x06, 0x5b, 0x7d, 0x5a, 0x4b, 0xdf, 0xde, 0xea, 0x65, 0x19, 0x00, - 0x5a, 0xc9, 0xb3, 0x06, 0xbe, 0x88, 0xd6, 0x02, 0x4c, 0x04, 0xb5, 0x4d, 0x0d, 0x54, 0xdb, 0x74, - 0x3f, 0xb5, 0x7d, 0x3f, 0x3f, 0x66, 0x2d, 0x88, 0xe8, 0xdd, 0x14, 0x2a, 0x6e, 0x97, 0x93, 0xf0, - 0xd9, 0xa1, 0xa7, 0x28, 0x69, 0xd1, 0xea, 0xbc, 0x0a, 0xa6, 0xc8, 0x63, 0x45, 0xdf, 0xc1, 0xac, - 0x0d, 0x05, 0x09, 0xea, 0x19, 0x98, 0xa1, 0x19, 0x9b, 0x96, 0xe9, 0xd6, 0x27, 0x43, 0x32, 0x08, - 0x69, 0x2e, 0x88, 0x4d, 0x1b, 0xeb, 0x8e, 0x65, 0x13, 0x1a, 0x59, 0x0a, 0x22, 0x97, 0x84, 0xbe, - 0xe5, 0xb7, 0xc2, 0x92, 0xa0, 0x39, 0x4f, 0x88, 0x53, 0x95, 0x78, 0x7a, 0xb3, 0x37, 0x5c, 0xfb, - 0xa3, 0xad, 0xae, 0xe1, 0xa2, 0xbd, 0x44, 0xa6, 0x76, 0x58, 0x3d, 0x09, 0x2a, 0x4b, 0x75, 0xf3, - 0x16, 0xab, 0x95, 0x7a, 0xa9, 0x52, 0xcf, 0x6f, 0xf6, 0xd5, 0xa8, 0x2d, 0xf4, 0x86, 0x0c, 0x64, - 0xee, 0xb1, 0x0c, 0x13, 0x3d, 0x98, 0x12, 0x54, 0xc2, 0xc4, 0xce, 0x45, 0xcb, 0xbe, 0xe0, 0x37, - 0xd4, 0x20, 0x21, 0x1a, 0x9b, 0x40, 0x95, 0x94, 0x81, 0xaa, 0x94, 0xe9, 0xa7, 0x4a, 0xbf, 0xc4, - 0xab, 0xd2, 0x1d, 0xa2, 0x2a, 0x5d, 0xdf, 0x47, 0xfe, 0x2e, 0xf3, 0x21, 0x1d, 0xc0, 0x27, 0xfd, - 0x0e, 0xe0, 0x2e, 0x01, 0xc6, 0xc7, 0xc9, 0x91, 0x89, 0x07, 0xe0, 0x97, 0x13, 0x6d, 0xf8, 0xfd, - 0xa0, 0xde, 0x0a, 0x81, 0x7a, 0xbb, 0x4f, 0x9f, 0x60, 0xec, 0xef, 0x3a, 0xee, 0xdf, 0xdf, 0x4d, - 0x5c, 0x50, 0x4f, 0xc0, 0xb1, 0xc5, 0xf2, 0xd2, 0x52, 0x49, 0x2b, 0x55, 0xea, 0x8d, 0x4a, 0xa9, - 0x7e, 0xae, 0xaa, 0xdd, 0x9b, 0x6f, 0xa3, 0x87, 0x14, 0x00, 0x57, 0x42, 0x45, 0xdd, 0x6c, 0xe2, - 0xb6, 0x5c, 0x8f, 0xfe, 0x0f, 0xe9, 0x78, 0x7d, 0x42, 0x40, 0x3f, 0x04, 0xce, 0x57, 0xa7, 0xe5, - 0x5b, 0x65, 0x28, 0xb1, 0x78, 0xa0, 0xbe, 0xf5, 0x91, 0x60, 0x7b, 0x5e, 0x06, 0x47, 0x3d, 0x7a, - 0x2c, 0x7b, 0xff, 0x69, 0xdf, 0x3b, 0x32, 0x30, 0xc7, 0x60, 0xf1, 0xe6, 0xf1, 0xcf, 0x4f, 0xc9, - 0x4c, 0xe4, 0x11, 0x4c, 0xb2, 0x69, 0xbb, 0xd7, 0xbd, 0xfb, 0xef, 0xea, 0x32, 0x4c, 0x77, 0xb0, - 0xbd, 0x63, 0x74, 0xbb, 0x86, 0x65, 0xd2, 0x05, 0xb9, 0xb9, 0x5b, 0x1f, 0xe3, 0x4b, 0x9c, 0xac, - 0x5d, 0xce, 0xaf, 0xeb, 0xb6, 0x63, 0x34, 0x8d, 0x8e, 0x6e, 0x3a, 0xeb, 0x41, 0x66, 0x8d, 0xff, - 0x13, 0xbd, 0x24, 0xe6, 0xb4, 0x46, 0xac, 0x49, 0x88, 0x4a, 0xfc, 0x76, 0x8c, 0x29, 0x49, 0x24, - 0xc1, 0x78, 0x6a, 0xf1, 0x89, 0x44, 0xd5, 0xa2, 0x0f, 0xde, 0x5b, 0xea, 0x15, 0x70, 0xa2, 0x5c, - 0x29, 0x56, 0x35, 0xad, 0x54, 0xac, 0x37, 0xd6, 0x4b, 0xda, 0x5a, 0xb9, 0x56, 0x2b, 0x57, 0x2b, - 0xb5, 0x83, 0xb4, 0x76, 0xf4, 0x69, 0xc5, 0xd7, 0x98, 0x45, 0xdc, 0x6c, 0x1b, 0x26, 0x46, 0x77, - 0x1d, 0x50, 0x61, 0xc4, 0x55, 0x1f, 0x79, 0x9c, 0x59, 0xf9, 0x21, 0x38, 0xbf, 0x3e, 0x3e, 0xce, - 0xfd, 0x09, 0xfe, 0x07, 0x6e, 0xfe, 0x5f, 0x51, 0xe0, 0x18, 0xd7, 0x10, 0x35, 0xbc, 0x33, 0xb2, - 0x95, 0xbc, 0x9f, 0xe5, 0xdb, 0x6e, 0x59, 0xc4, 0xb4, 0x9f, 0x35, 0xbd, 0x8f, 0x8d, 0x10, 0x58, - 0xdf, 0xea, 0xc3, 0xba, 0x2a, 0xc0, 0xfa, 0xd4, 0x21, 0x68, 0xc6, 0x43, 0xf6, 0x37, 0x13, 0x45, - 0xf6, 0x0a, 0x38, 0xb1, 0x5e, 0xd0, 0xea, 0xe5, 0x62, 0x79, 0xbd, 0xe0, 0x8e, 0xa3, 0xdc, 0x90, - 0x1d, 0x62, 0xae, 0x8b, 0xa0, 0xf7, 0xc5, 0xf7, 0xc3, 0x19, 0xb8, 0xaa, 0x7f, 0x47, 0x5b, 0xdc, - 0xd6, 0xcd, 0x2d, 0x8c, 0x0c, 0x19, 0xa8, 0x17, 0x61, 0xa2, 0x49, 0xb2, 0x53, 0x9c, 0xf9, 0xad, - 0x9b, 0x88, 0xbe, 0x9c, 0x96, 0xa0, 0x79, 0xbf, 0xa2, 0x77, 0xf3, 0x0a, 0x51, 0x17, 0x15, 0xe2, - 0xe9, 0xd1, 0xe0, 0xed, 0xe3, 0x3b, 0x44, 0x37, 0x3e, 0xeb, 0xeb, 0xc6, 0x39, 0x41, 0x37, 0x8a, - 0x07, 0x23, 0x1f, 0x4f, 0x4d, 0xfe, 0xe0, 0x91, 0xd0, 0x01, 0x84, 0x6a, 0x93, 0x11, 0x3e, 0x2a, - 0xf4, 0xed, 0xee, 0x5f, 0xab, 0x40, 0x6e, 0x11, 0xb7, 0xb1, 0xec, 0x4a, 0xe4, 0x77, 0xd2, 0xb2, - 0x1b, 0x22, 0x14, 0x06, 0x4a, 0x3b, 0x7c, 0x75, 0xc4, 0x31, 0x76, 0x70, 0xd7, 0xd1, 0x77, 0x3a, - 0x44, 0xd4, 0x8a, 0x16, 0x24, 0xa0, 0x9f, 0x4b, 0xcb, 0x6c, 0x97, 0x44, 0x14, 0xf3, 0x1f, 0x63, - 0x4d, 0xf1, 0xf3, 0x69, 0x98, 0xac, 0x61, 0xa7, 0x6a, 0xb7, 0xb0, 0x8d, 0x6a, 0x01, 0x46, 0xd7, - 0xc0, 0x34, 0x01, 0xc5, 0x9d, 0x66, 0xfa, 0x38, 0xf1, 0x49, 0xea, 0xf5, 0x30, 0xe7, 0xbf, 0x92, - 0xdf, 0x59, 0x37, 0xde, 0x93, 0x8a, 0xfe, 0x31, 0x25, 0xbb, 0x8b, 0xcb, 0x96, 0x0c, 0x19, 0x37, - 0x21, 0xad, 0x54, 0x6e, 0x47, 0x36, 0x92, 0x54, 0xf2, 0x1b, 0x5d, 0xef, 0x4c, 0x03, 0x6c, 0x98, - 0x5d, 0x4f, 0xae, 0x8f, 0x8b, 0x21, 0x57, 0xf4, 0xcf, 0xa9, 0x78, 0xb3, 0x98, 0xa0, 0x9c, 0x10, - 0x89, 0xbd, 0x31, 0xc6, 0xda, 0x42, 0x28, 0xb1, 0xe4, 0x65, 0xf6, 0xf5, 0x39, 0xc8, 0x9d, 0xd3, - 0xdb, 0x6d, 0xec, 0xa0, 0x6f, 0xa4, 0x21, 0x57, 0xb4, 0xb1, 0xee, 0x60, 0x5e, 0x74, 0x08, 0x26, - 0x6d, 0xcb, 0x72, 0xd6, 0x75, 0x67, 0x9b, 0xc9, 0xcd, 0x7f, 0x67, 0x0e, 0x03, 0xbf, 0xc1, 0x77, - 0x1f, 0x77, 0x89, 0xa2, 0xfb, 0x31, 0xa1, 0xb6, 0xb4, 0xa0, 0x79, 0x5a, 0x48, 0x48, 0xff, 0x81, - 0x60, 0x72, 0xc7, 0xc4, 0x3b, 0x96, 0x69, 0x34, 0x3d, 0x9b, 0xd3, 0x7b, 0x47, 0x1f, 0xf5, 0x65, - 0xba, 0x20, 0xc8, 0x74, 0x5e, 0xba, 0x94, 0x78, 0x02, 0xad, 0x0d, 0xd1, 0x7b, 0x5c, 0x0d, 0x57, - 0xd2, 0xce, 0xa0, 0x51, 0xaf, 0x36, 0x8a, 0x5a, 0xa9, 0x50, 0x2f, 0x35, 0x56, 0xab, 0xc5, 0xc2, - 0x6a, 0x43, 0x2b, 0xad, 0x57, 0xf3, 0x18, 0xfd, 0x6d, 0xda, 0x15, 0x6e, 0xd3, 0xda, 0xc3, 0x36, - 0x5a, 0x96, 0x92, 0x73, 0x94, 0x4c, 0x18, 0x06, 0xbf, 0x24, 0xed, 0xb4, 0xc1, 0xa4, 0xc3, 0x38, - 0x08, 0x51, 0xde, 0x8f, 0x49, 0x35, 0xf7, 0x48, 0x52, 0x8f, 0x00, 0x49, 0xff, 0xcf, 0x34, 0x4c, - 0x14, 0x2d, 0x73, 0x0f, 0xdb, 0x0e, 0x3f, 0xdf, 0xe1, 0xa5, 0x99, 0x12, 0xa5, 0xe9, 0x0e, 0x92, - 0xd8, 0x74, 0x6c, 0xab, 0xe3, 0x4d, 0x78, 0xbc, 0x57, 0xf4, 0xe6, 0xb8, 0x12, 0x66, 0x25, 0x87, - 0x2f, 0x7c, 0xf6, 0x2f, 0x48, 0x60, 0x4f, 0xe9, 0x69, 0x00, 0x0f, 0xc5, 0xc1, 0xa5, 0x3f, 0x03, - 0xc9, 0x77, 0x29, 0x5f, 0x55, 0x60, 0x96, 0x36, 0xbe, 0x1a, 0x26, 0x16, 0x1a, 0xaa, 0xf2, 0x4b, - 0x8e, 0x3d, 0xc2, 0x5f, 0x39, 0x22, 0x88, 0x3f, 0xa7, 0x77, 0x3a, 0xfe, 0xf2, 0xf3, 0xca, 0x11, - 0x8d, 0xbd, 0x53, 0x35, 0x5f, 0xc8, 0x41, 0x46, 0xdf, 0x75, 0xb6, 0xd1, 0x0f, 0xa4, 0x27, 0x9f, - 0x42, 0x67, 0xc0, 0xf8, 0x09, 0x81, 0xe4, 0x38, 0x64, 0x1d, 0xeb, 0x02, 0xf6, 0xe4, 0x40, 0x5f, - 0x5c, 0x38, 0xf4, 0x4e, 0xa7, 0x4e, 0x3e, 0x30, 0x38, 0xbc, 0x77, 0xd7, 0xd6, 0xd1, 0x9b, 0x4d, - 0x6b, 0xd7, 0x74, 0xca, 0xde, 0x12, 0x74, 0x90, 0x80, 0xbe, 0x94, 0x92, 0x99, 0xcc, 0x4a, 0x30, - 0x18, 0x0f, 0xb2, 0xf3, 0x43, 0x34, 0xa5, 0x79, 0xb8, 0xb1, 0xb0, 0xbe, 0xde, 0xa8, 0x57, 0xef, - 0x2d, 0x55, 0x02, 0xc3, 0xb3, 0x51, 0xae, 0x34, 0xea, 0x2b, 0xa5, 0x46, 0x71, 0x43, 0x23, 0xeb, - 0x84, 0x85, 0x62, 0xb1, 0xba, 0x51, 0xa9, 0xe7, 0x31, 0x7a, 0x5b, 0x1a, 0x66, 0x8a, 0x6d, 0xab, - 0xeb, 0x23, 0x7c, 0x75, 0x80, 0xb0, 0x2f, 0xc6, 0x14, 0x27, 0x46, 0xf4, 0xaf, 0x29, 0x59, 0xa7, - 0x03, 0x4f, 0x20, 0x1c, 0xf9, 0x90, 0x5e, 0xea, 0xcd, 0x52, 0x4e, 0x07, 0x83, 0xe9, 0x25, 0xdf, - 0x24, 0x3e, 0x7f, 0x3b, 0x4c, 0x14, 0xa8, 0x62, 0xa0, 0xbf, 0x4a, 0x41, 0xae, 0x68, 0x99, 0x9b, - 0xc6, 0x96, 0x6b, 0xcc, 0x61, 0x53, 0x3f, 0xdf, 0xc6, 0x8b, 0xba, 0xa3, 0xef, 0x19, 0xf8, 0x22, - 0xa9, 0xc0, 0xa4, 0xd6, 0x93, 0xea, 0x32, 0xc5, 0x52, 0xf0, 0xf9, 0xdd, 0x2d, 0xc2, 0xd4, 0xa4, - 0xc6, 0x27, 0xa9, 0x4f, 0x85, 0xcb, 0xe9, 0xeb, 0xba, 0x8d, 0x6d, 0xdc, 0xc6, 0x7a, 0x17, 0xbb, - 0xd3, 0x22, 0x13, 0xb7, 0x89, 0xd2, 0x4e, 0x6a, 0x61, 0x9f, 0xd5, 0x33, 0x30, 0x43, 0x3f, 0x11, - 0x53, 0xa4, 0x4b, 0xd4, 0x78, 0x52, 0x13, 0xd2, 0xd4, 0xc7, 0x43, 0x16, 0x3f, 0xe0, 0xd8, 0xfa, - 0xa9, 0x16, 0xc1, 0xeb, 0xf2, 0x79, 0xea, 0x75, 0x38, 0xef, 0x79, 0x1d, 0xce, 0xd7, 0x88, 0x4f, - 0xa2, 0x46, 0x73, 0xa1, 0x57, 0x4d, 0xfa, 0x86, 0xc4, 0xbf, 0xa7, 0x03, 0xc5, 0x50, 0x21, 0x63, - 0xea, 0x3b, 0x98, 0xe9, 0x05, 0x79, 0x56, 0x6f, 0x84, 0xa3, 0xfa, 0x9e, 0xee, 0xe8, 0xf6, 0xaa, - 0xd5, 0xd4, 0xdb, 0x64, 0xf0, 0xf3, 0x5a, 0x7e, 0xef, 0x07, 0xb2, 0x23, 0xe4, 0x58, 0x36, 0x26, - 0xb9, 0xbc, 0x1d, 0x21, 0x2f, 0xc1, 0xa5, 0x6e, 0x34, 0x2d, 0x93, 0xf0, 0xaf, 0x68, 0xe4, 0xd9, - 0x95, 0x4a, 0xcb, 0xe8, 0xba, 0x15, 0x21, 0x54, 0x2a, 0x74, 0x6b, 0xa3, 0x76, 0xc9, 0x6c, 0x92, - 0xdd, 0xa0, 0x49, 0x2d, 0xec, 0xb3, 0xba, 0x00, 0xd3, 0x6c, 0x23, 0x64, 0xcd, 0xd5, 0xab, 0x1c, - 0xd1, 0xab, 0x6b, 0x44, 0x9f, 0x2e, 0x8a, 0xe7, 0x7c, 0x25, 0xc8, 0xa7, 0xf1, 0x3f, 0xa9, 0x77, - 0xc3, 0x95, 0xec, 0xb5, 0xb8, 0xdb, 0x75, 0xac, 0x1d, 0x0a, 0xfa, 0x92, 0xd1, 0xa6, 0x35, 0x98, - 0x20, 0x35, 0x88, 0xca, 0xa2, 0xde, 0x0a, 0xc7, 0x3b, 0x36, 0xde, 0xc4, 0xf6, 0x7d, 0xfa, 0xce, - 0xee, 0x03, 0x75, 0x5b, 0x37, 0xbb, 0x1d, 0xcb, 0x76, 0x4e, 0x4d, 0x12, 0xe6, 0xfb, 0x7e, 0x63, - 0x1d, 0xe5, 0x24, 0xe4, 0xa8, 0xf8, 0xd0, 0x8b, 0xb3, 0xd2, 0xee, 0x9c, 0xac, 0x42, 0x91, 0xe6, - 0xd9, 0x2d, 0x30, 0xc1, 0x7a, 0x38, 0x02, 0xd4, 0xf4, 0xad, 0x27, 0x7b, 0xd6, 0x15, 0x18, 0x15, - 0xcd, 0xcb, 0xa6, 0x3e, 0x11, 0x72, 0x4d, 0x52, 0x2d, 0x82, 0xd9, 0xf4, 0xad, 0x57, 0xf6, 0x2f, - 0x94, 0x64, 0xd1, 0x58, 0x56, 0xf4, 0xe7, 0x8a, 0x94, 0x07, 0x68, 0x14, 0xc7, 0xf1, 0x5a, 0xf5, - 0xb7, 0xd2, 0x43, 0x74, 0x9b, 0x37, 0xc1, 0x0d, 0xac, 0x4f, 0x64, 0xf6, 0xc7, 0x62, 0x63, 0x61, - 0xc3, 0x9b, 0x0c, 0xba, 0x56, 0x49, 0xad, 0x5e, 0xd0, 0xdc, 0x99, 0xfc, 0xa2, 0x3b, 0x89, 0xbc, - 0x11, 0xae, 0x1f, 0x90, 0xbb, 0x54, 0x6f, 0x54, 0x0a, 0x6b, 0xa5, 0xfc, 0xa6, 0x68, 0xdb, 0xd4, - 0xea, 0xd5, 0xf5, 0x86, 0xb6, 0x51, 0xa9, 0x94, 0x2b, 0xcb, 0x94, 0x98, 0x6b, 0x12, 0x9e, 0x0c, - 0x32, 0x9c, 0xd3, 0xca, 0xf5, 0x52, 0xa3, 0x58, 0xad, 0x2c, 0x95, 0x97, 0xf3, 0xc6, 0x20, 0xc3, - 0xe8, 0x7e, 0xf5, 0x1a, 0xb8, 0x4a, 0xe0, 0xa4, 0x5c, 0xad, 0xb8, 0x33, 0xdb, 0x62, 0xa1, 0x52, - 0x2c, 0xb9, 0xd3, 0xd8, 0x0b, 0x2a, 0x82, 0x13, 0x94, 0x5c, 0x63, 0xa9, 0xbc, 0xca, 0x6f, 0x46, - 0x7d, 0x2a, 0xa5, 0x9e, 0x82, 0xcb, 0xf8, 0x6f, 0xe5, 0xca, 0xd9, 0xc2, 0x6a, 0x79, 0x31, 0xff, - 0xfb, 0x29, 0xf5, 0x3a, 0xb8, 0x5a, 0xf8, 0x8b, 0xee, 0x2b, 0x35, 0xca, 0x8b, 0x8d, 0xb5, 0x72, - 0x6d, 0xad, 0x50, 0x2f, 0xae, 0xe4, 0x3f, 0x4d, 0xe6, 0x0b, 0xbe, 0x01, 0xcc, 0xb9, 0x65, 0xbe, - 0x8c, 0x1f, 0xd3, 0x0b, 0xa2, 0xa2, 0x3e, 0xae, 0x2f, 0xec, 0xd1, 0x36, 0xec, 0x27, 0xfc, 0xd1, - 0x61, 0x51, 0x50, 0xa1, 0x5b, 0x62, 0xd0, 0x8a, 0xa7, 0x43, 0xf5, 0x21, 0x54, 0xe8, 0x1a, 0xb8, - 0xaa, 0x52, 0xa2, 0x48, 0x69, 0xa5, 0x62, 0xf5, 0x6c, 0x49, 0x6b, 0x9c, 0x2b, 0xac, 0xae, 0x96, - 0xea, 0x8d, 0xa5, 0xb2, 0x56, 0xab, 0xe7, 0x37, 0xd1, 0x3f, 0xa7, 0xfd, 0xd5, 0x1c, 0x4e, 0x5a, - 0x7f, 0x95, 0x8e, 0xdb, 0xac, 0x23, 0x57, 0x6d, 0x7e, 0x1c, 0x72, 0x5d, 0x47, 0x77, 0x76, 0xbb, - 0xac, 0x55, 0x3f, 0xaa, 0x7f, 0xab, 0x9e, 0xaf, 0x91, 0x4c, 0x1a, 0xcb, 0x8c, 0xfe, 0x3c, 0x15, - 0xa7, 0x99, 0x8e, 0x60, 0x41, 0xc7, 0x18, 0x42, 0xc4, 0xa7, 0x01, 0x79, 0xda, 0x5e, 0xae, 0x35, - 0x0a, 0xab, 0x5a, 0xa9, 0xb0, 0x78, 0x9f, 0xbf, 0x8c, 0x83, 0xd5, 0x13, 0x70, 0x6c, 0xa3, 0x52, - 0x58, 0x58, 0x2d, 0x91, 0xe6, 0x52, 0xad, 0x54, 0x4a, 0x45, 0x57, 0xee, 0x3f, 0x47, 0x36, 0x4d, - 0x5c, 0x0b, 0x9a, 0xf0, 0xed, 0x5a, 0x39, 0x9c, 0xfc, 0xbf, 0x29, 0xed, 0x5b, 0x14, 0x68, 0x18, - 0x4f, 0x6b, 0xb4, 0x38, 0x7c, 0x49, 0xca, 0x9d, 0x48, 0x8a, 0x93, 0x78, 0x78, 0xfc, 0xe7, 0x21, - 0xf0, 0x38, 0x01, 0xc7, 0x78, 0x3c, 0x88, 0x5b, 0x51, 0x38, 0x0c, 0x5f, 0x9b, 0x84, 0x5c, 0x0d, - 0xb7, 0x71, 0xd3, 0x41, 0xef, 0xe0, 0x8c, 0x89, 0x39, 0x48, 0xfb, 0x6e, 0x2c, 0x69, 0xa3, 0x25, - 0x4c, 0x9f, 0xd3, 0x3d, 0xd3, 0xe7, 0x08, 0x33, 0x40, 0x89, 0x65, 0x06, 0x64, 0x12, 0x30, 0x03, - 0xb2, 0xc3, 0x9b, 0x01, 0xb9, 0x41, 0x66, 0x00, 0x7a, 0x63, 0x2e, 0x6e, 0x2f, 0x41, 0x45, 0x7d, - 0xb8, 0x83, 0xff, 0x3f, 0x64, 0xe2, 0xf4, 0x2a, 0x7d, 0x39, 0x8e, 0xa7, 0xc5, 0x3f, 0x50, 0x12, - 0x58, 0x7e, 0x50, 0xaf, 0x85, 0xab, 0x83, 0xf7, 0x46, 0xe9, 0x99, 0xe5, 0x5a, 0xbd, 0x46, 0x46, - 0xfc, 0x62, 0x55, 0xd3, 0x36, 0xd6, 0xe9, 0x1a, 0xf2, 0x49, 0x50, 0x03, 0x2a, 0xda, 0x46, 0x85, - 0x8e, 0xef, 0x5b, 0x22, 0xf5, 0xa5, 0x72, 0x65, 0xb1, 0xe1, 0xb7, 0x99, 0xca, 0x52, 0x35, 0xbf, - 0xed, 0x4e, 0xd9, 0x38, 0xea, 0xee, 0x00, 0xcd, 0x4a, 0x28, 0x54, 0x16, 0x1b, 0x6b, 0x95, 0xd2, - 0x5a, 0xb5, 0x52, 0x2e, 0x92, 0xf4, 0x5a, 0xa9, 0x9e, 0x37, 0xdc, 0x81, 0xa6, 0xc7, 0xa2, 0xa8, - 0x95, 0x0a, 0x5a, 0x71, 0xa5, 0xa4, 0xd1, 0x22, 0xef, 0x57, 0xaf, 0x87, 0x33, 0x85, 0x4a, 0xb5, - 0xee, 0xa6, 0x14, 0x2a, 0xf7, 0xd5, 0xef, 0x5b, 0x2f, 0x35, 0xd6, 0xb5, 0x6a, 0xb1, 0x54, 0xab, - 0xb9, 0xed, 0x94, 0xd9, 0x1f, 0xf9, 0xb6, 0xfa, 0x74, 0xb8, 0x9d, 0x63, 0xad, 0x54, 0x27, 0x1b, - 0x96, 0x6b, 0x55, 0xe2, 0xb3, 0xb2, 0x58, 0x6a, 0xac, 0x14, 0x6a, 0x8d, 0x72, 0xa5, 0x58, 0x5d, - 0x5b, 0x2f, 0xd4, 0xcb, 0x6e, 0x73, 0x5e, 0xd7, 0xaa, 0xf5, 0x6a, 0xe3, 0x6c, 0x49, 0xab, 0x95, - 0xab, 0x95, 0xbc, 0xe9, 0x56, 0x99, 0x6b, 0xff, 0x5e, 0x3f, 0x6c, 0xa9, 0x57, 0xc1, 0x29, 0x2f, - 0x7d, 0xb5, 0xea, 0x0a, 0x9a, 0xb3, 0x48, 0x3a, 0x89, 0x5a, 0x24, 0xff, 0x92, 0x86, 0x4c, 0xcd, - 0xb1, 0x3a, 0xe8, 0xc7, 0x82, 0x0e, 0xe6, 0x34, 0x80, 0x4d, 0xf6, 0x1f, 0xdd, 0x59, 0x18, 0x9b, - 0x97, 0x71, 0x29, 0xe8, 0xf7, 0xa4, 0x37, 0x4d, 0x82, 0x3e, 0xdb, 0xea, 0x84, 0xd8, 0x2a, 0xdf, - 0x97, 0x3b, 0x45, 0x12, 0x4e, 0x28, 0x9e, 0xbe, 0xff, 0xfc, 0x30, 0xdb, 0x22, 0x08, 0x4e, 0x72, - 0xb0, 0xb9, 0xf2, 0xf7, 0x54, 0x02, 0xab, 0x97, 0xc3, 0x65, 0x3d, 0xca, 0x45, 0x74, 0x6a, 0x53, - 0x7d, 0x34, 0x3c, 0x8a, 0x53, 0xef, 0xd2, 0x5a, 0xf5, 0x6c, 0xc9, 0x57, 0xe4, 0xc5, 0x42, 0xbd, - 0x90, 0xdf, 0x42, 0x9f, 0x57, 0x20, 0xb3, 0x66, 0xed, 0xf5, 0xee, 0x55, 0x99, 0xf8, 0x22, 0xb7, - 0x16, 0xea, 0xbd, 0x8a, 0x5e, 0xf3, 0x52, 0x62, 0x5f, 0x0b, 0xdf, 0x97, 0xfe, 0x52, 0x3a, 0x8e, - 0xd8, 0xd7, 0x0e, 0xba, 0x19, 0xfd, 0x77, 0xc3, 0x88, 0x3d, 0x44, 0xb4, 0x58, 0x3d, 0x03, 0xa7, - 0x83, 0x0f, 0xe5, 0xc5, 0x52, 0xa5, 0x5e, 0x5e, 0xba, 0x2f, 0x10, 0x6e, 0x59, 0x93, 0x12, 0xff, - 0xa0, 0x6e, 0x2c, 0x7a, 0xa6, 0x71, 0x0a, 0x8e, 0x07, 0xdf, 0x96, 0x4b, 0x75, 0xef, 0xcb, 0xfd, - 0xe8, 0xc1, 0x2c, 0xcc, 0xd0, 0x6e, 0x7d, 0xa3, 0xd3, 0xd2, 0x1d, 0x8c, 0x9e, 0x18, 0xa0, 0x7b, - 0x03, 0x1c, 0x2d, 0xaf, 0x2f, 0xd5, 0x6a, 0x8e, 0x65, 0xeb, 0x5b, 0xb8, 0xd0, 0x6a, 0xd9, 0x4c, - 0x5a, 0xbd, 0xc9, 0xe8, 0xbd, 0xd2, 0xeb, 0x7c, 0xe2, 0x50, 0x42, 0xcb, 0x0c, 0x41, 0xfd, 0xab, - 0x52, 0xeb, 0x72, 0x12, 0x04, 0xe3, 0xa1, 0x7f, 0xff, 0x88, 0xdb, 0x5c, 0x38, 0x2e, 0x9b, 0x67, - 0x9e, 0x97, 0x86, 0xa9, 0xba, 0xb1, 0x83, 0x9f, 0x65, 0x99, 0xb8, 0xab, 0x4e, 0x80, 0xb2, 0xbc, - 0x56, 0xcf, 0x1f, 0x71, 0x1f, 0x5c, 0xa3, 0x2a, 0x45, 0x1e, 0x4a, 0x6e, 0x01, 0xee, 0x43, 0xa1, - 0x9e, 0x57, 0xdc, 0x87, 0xb5, 0x52, 0x3d, 0x9f, 0x71, 0x1f, 0x2a, 0xa5, 0x7a, 0x3e, 0xeb, 0x3e, - 0xac, 0xaf, 0xd6, 0xf3, 0x39, 0xf7, 0xa1, 0x5c, 0xab, 0xe7, 0x27, 0xdc, 0x87, 0x85, 0x5a, 0x3d, - 0x3f, 0xe9, 0x3e, 0x9c, 0xad, 0xd5, 0xf3, 0x53, 0xee, 0x43, 0xb1, 0x5e, 0xcf, 0x83, 0xfb, 0x70, - 0x4f, 0xad, 0x9e, 0x9f, 0x76, 0x1f, 0x0a, 0xc5, 0x7a, 0x7e, 0x86, 0x3c, 0x94, 0xea, 0xf9, 0x59, - 0xf7, 0xa1, 0x56, 0xab, 0xe7, 0xe7, 0x08, 0xe5, 0x5a, 0x3d, 0x7f, 0x94, 0x94, 0x55, 0xae, 0xe7, - 0xf3, 0xee, 0xc3, 0x4a, 0xad, 0x9e, 0x3f, 0x46, 0x32, 0xd7, 0xea, 0x79, 0x95, 0x14, 0x5a, 0xab, - 0xe7, 0x2f, 0x23, 0x79, 0x6a, 0xf5, 0xfc, 0x71, 0x52, 0x44, 0xad, 0x9e, 0x3f, 0x41, 0xd8, 0x28, - 0xd5, 0xf3, 0x27, 0x49, 0x1e, 0xad, 0x9e, 0xbf, 0x9c, 0x7c, 0xaa, 0xd4, 0xf3, 0xa7, 0x08, 0x63, - 0xa5, 0x7a, 0xfe, 0x0a, 0xf2, 0xa0, 0xd5, 0xf3, 0x88, 0x7c, 0x2a, 0xd4, 0xf3, 0x57, 0xa2, 0x47, - 0xc1, 0xd4, 0x32, 0x76, 0x28, 0x88, 0x28, 0x0f, 0xca, 0x32, 0x76, 0x78, 0x33, 0xfe, 0xeb, 0x0a, - 0x5c, 0xce, 0xa6, 0x7e, 0x4b, 0xb6, 0xb5, 0xb3, 0x8a, 0xb7, 0xf4, 0xe6, 0xa5, 0xd2, 0x03, 0xae, - 0x09, 0xc5, 0xef, 0xcb, 0xaa, 0x90, 0xe9, 0x04, 0x9d, 0x11, 0x79, 0x8e, 0xb4, 0x38, 0xbd, 0xc5, - 0x28, 0x25, 0x58, 0x8c, 0x62, 0x16, 0xd9, 0x3f, 0xf1, 0x1a, 0x2d, 0xac, 0x1f, 0xa7, 0x7a, 0xd6, - 0x8f, 0xdd, 0x66, 0xd2, 0xc1, 0x76, 0xd7, 0x32, 0xf5, 0x76, 0x8d, 0x6d, 0xdc, 0xd3, 0x55, 0xaf, - 0xde, 0x64, 0xf5, 0x19, 0x5e, 0xcb, 0xa0, 0x56, 0xd9, 0xd3, 0xa2, 0x66, 0xb8, 0xbd, 0xd5, 0x0c, - 0x69, 0x24, 0x9f, 0xf6, 0x1b, 0x49, 0x5d, 0x68, 0x24, 0x77, 0x1f, 0x80, 0x76, 0xbc, 0xf6, 0x52, - 0x1e, 0x6e, 0x6a, 0x11, 0xb8, 0xb5, 0x7a, 0xcb, 0xd5, 0x0a, 0xfa, 0x7c, 0x1a, 0x4e, 0x96, 0xcc, - 0x7e, 0x16, 0x3e, 0xaf, 0x0b, 0x6f, 0xe3, 0xa1, 0x59, 0x17, 0x45, 0x7a, 0x7b, 0xdf, 0x6a, 0xf7, - 0xa7, 0x19, 0x22, 0xd1, 0xcf, 0xf8, 0x12, 0xad, 0x09, 0x12, 0xbd, 0x6b, 0x78, 0xd2, 0xf1, 0x04, - 0x5a, 0x19, 0x69, 0x07, 0x94, 0x41, 0xdf, 0xca, 0xc0, 0xa3, 0xa8, 0xef, 0x0d, 0xe3, 0x90, 0xb6, - 0xb2, 0x82, 0xd9, 0xd2, 0x70, 0xd7, 0xd1, 0x6d, 0x47, 0x38, 0x0f, 0xdd, 0x33, 0x95, 0x4a, 0x25, - 0x30, 0x95, 0x4a, 0x0f, 0x9c, 0x4a, 0xa1, 0xf7, 0xf0, 0xe6, 0xc3, 0x39, 0x11, 0xe3, 0x42, 0xff, - 0xfe, 0x3f, 0xaa, 0x86, 0x61, 0x50, 0xfb, 0x76, 0xc5, 0x4f, 0x08, 0x50, 0x2f, 0x1d, 0xb8, 0x84, - 0x78, 0x88, 0xff, 0xde, 0x68, 0xed, 0xbc, 0x0c, 0xff, 0x4d, 0x34, 0x4a, 0xf2, 0xad, 0x44, 0x0d, - 0xf4, 0xcf, 0x4e, 0xc0, 0x14, 0x69, 0x0b, 0xab, 0x86, 0x79, 0x01, 0x3d, 0xa4, 0xc0, 0x4c, 0x05, - 0x5f, 0x2c, 0x6e, 0xeb, 0xed, 0x36, 0x36, 0xb7, 0x30, 0x6f, 0xb6, 0x9f, 0x82, 0x09, 0xbd, 0xd3, - 0xa9, 0x04, 0xfb, 0x0c, 0xde, 0x2b, 0xeb, 0x7f, 0xbf, 0xd9, 0xb7, 0x91, 0xa7, 0x22, 0x1a, 0xb9, - 0x5f, 0xee, 0x3c, 0x5f, 0x66, 0xc8, 0x0c, 0xf9, 0x1a, 0x98, 0x6e, 0x7a, 0x59, 0xfc, 0x73, 0x13, - 0x7c, 0x12, 0xfa, 0x9b, 0x58, 0xdd, 0x80, 0x54, 0xe1, 0xf1, 0x94, 0x02, 0x8f, 0xd8, 0x0e, 0x39, - 0x01, 0xc7, 0xea, 0xd5, 0x6a, 0x63, 0xad, 0x50, 0xb9, 0x2f, 0x38, 0xaf, 0xbc, 0x89, 0x5e, 0x9d, - 0x81, 0xb9, 0x9a, 0xd5, 0xde, 0xc3, 0x01, 0x4c, 0x65, 0xc1, 0x21, 0x87, 0x97, 0x53, 0x6a, 0x9f, - 0x9c, 0xd4, 0x93, 0x90, 0xd3, 0xcd, 0xee, 0x45, 0xec, 0xd9, 0x86, 0xec, 0x8d, 0xc1, 0xf8, 0x61, - 0xbe, 0x1d, 0x6b, 0x22, 0x8c, 0x77, 0x0c, 0x90, 0xa4, 0xc8, 0x55, 0x08, 0x90, 0x67, 0x60, 0xa6, - 0x4b, 0x37, 0x0b, 0xeb, 0xdc, 0x9e, 0xb0, 0x90, 0x46, 0x58, 0xa4, 0xbb, 0xd5, 0x0a, 0x63, 0x91, - 0xbc, 0xa1, 0x87, 0xfc, 0xe6, 0xbf, 0x21, 0x40, 0x5c, 0x38, 0x08, 0x63, 0xf1, 0x40, 0x7e, 0xed, - 0xa8, 0x67, 0x78, 0xa7, 0xe0, 0x38, 0x6b, 0xb5, 0x8d, 0xe2, 0x4a, 0x61, 0x75, 0xb5, 0x54, 0x59, - 0x2e, 0x35, 0xca, 0x8b, 0x74, 0xab, 0x22, 0x48, 0x29, 0xd4, 0xeb, 0xa5, 0xb5, 0xf5, 0x7a, 0xad, - 0x51, 0x7a, 0x66, 0xb1, 0x54, 0x5a, 0x24, 0x2e, 0x71, 0xe4, 0x4c, 0x8b, 0xe7, 0xbc, 0x58, 0xa8, - 0xd4, 0xce, 0x95, 0xb4, 0xfc, 0xf6, 0x99, 0x02, 0x4c, 0x73, 0xfd, 0xbc, 0xcb, 0xdd, 0x22, 0xde, - 0xd4, 0x77, 0xdb, 0xcc, 0x56, 0xcb, 0x1f, 0x71, 0xb9, 0x23, 0xb2, 0xa9, 0x9a, 0xed, 0x4b, 0xf9, - 0x94, 0x9a, 0x87, 0x19, 0xbe, 0x4b, 0xcf, 0xa7, 0xd1, 0x3b, 0xaf, 0x82, 0xa9, 0x73, 0x96, 0x7d, - 0x81, 0xf8, 0x71, 0xa1, 0x0f, 0xd0, 0xb8, 0x26, 0xde, 0x09, 0x51, 0x6e, 0x60, 0x7f, 0xad, 0xbc, - 0xb7, 0x80, 0x47, 0x6d, 0x7e, 0xe0, 0x29, 0xd0, 0x6b, 0x60, 0xfa, 0xa2, 0x97, 0x3b, 0x68, 0xe9, - 0x5c, 0x12, 0xfa, 0xef, 0x72, 0xfb, 0xff, 0x83, 0x8b, 0x4c, 0x7e, 0x7f, 0xfa, 0x1d, 0x69, 0xc8, - 0x2d, 0x63, 0xa7, 0xd0, 0x6e, 0xf3, 0x72, 0x7b, 0xb9, 0xf4, 0xc9, 0x1e, 0xa1, 0x12, 0x85, 0x76, - 0x3b, 0xbc, 0x51, 0x71, 0x02, 0xf2, 0x3c, 0xd0, 0x85, 0x34, 0x49, 0xbf, 0xb9, 0x01, 0x05, 0x26, - 0x2f, 0xb1, 0x8f, 0x2a, 0xfe, 0x1e, 0xf7, 0xc3, 0x9c, 0x95, 0xf3, 0x84, 0x20, 0xa6, 0x4d, 0x2a, - 0x7a, 0xaf, 0xdc, 0xcb, 0xa7, 0xde, 0x0b, 0x13, 0xbb, 0x5d, 0x5c, 0xd4, 0xbb, 0x98, 0xf0, 0xd6, - 0x5b, 0xd3, 0xea, 0xf9, 0xfb, 0x71, 0xd3, 0x99, 0x2f, 0xef, 0xb8, 0x06, 0xf5, 0x06, 0xcd, 0xe8, - 0x87, 0x89, 0x61, 0xef, 0x9a, 0x47, 0xc1, 0x9d, 0x94, 0x5c, 0x34, 0x9c, 0xed, 0xe2, 0xb6, 0xee, - 0xb0, 0xb5, 0x6d, 0xff, 0x1d, 0xbd, 0x78, 0x08, 0x38, 0x23, 0xf7, 0x82, 0x43, 0x0f, 0x08, 0xc6, - 0x06, 0x71, 0x04, 0x1b, 0xb8, 0xc3, 0x80, 0xf8, 0xf7, 0x69, 0xc8, 0x54, 0x3b, 0xd8, 0x94, 0x3e, - 0x0d, 0xe3, 0xcb, 0x36, 0xdd, 0x23, 0xdb, 0x87, 0xe4, 0xbd, 0xc3, 0xfc, 0x4a, 0xbb, 0x25, 0x87, - 0x48, 0xf6, 0x66, 0xc8, 0x18, 0xe6, 0xa6, 0xc5, 0x0c, 0xd3, 0x2b, 0x43, 0x36, 0x81, 0xca, 0xe6, - 0xa6, 0xa5, 0x91, 0x8c, 0xb2, 0x8e, 0x61, 0x51, 0x65, 0x27, 0x2f, 0xee, 0x6f, 0x4f, 0x42, 0x8e, - 0xaa, 0x33, 0x7a, 0x99, 0x02, 0x4a, 0xa1, 0xd5, 0x0a, 0x11, 0x7c, 0x7a, 0x9f, 0xe0, 0x2d, 0xf2, - 0x9b, 0x8f, 0x89, 0xff, 0x2e, 0x06, 0x33, 0x91, 0xec, 0xdb, 0x59, 0x93, 0x2a, 0xb4, 0x5a, 0xe1, - 0x3e, 0xa8, 0x7e, 0x81, 0x69, 0xb1, 0x40, 0xbe, 0x85, 0x2b, 0x72, 0x2d, 0x3c, 0xf6, 0x40, 0x10, - 0xca, 0x5f, 0xf2, 0x10, 0xfd, 0x53, 0x1a, 0x26, 0x56, 0x8d, 0xae, 0xe3, 0x62, 0x53, 0x90, 0xc1, - 0xe6, 0x2a, 0x98, 0xf2, 0x44, 0xe3, 0x76, 0x79, 0x6e, 0x7f, 0x1e, 0x24, 0xa0, 0x37, 0xf0, 0xe8, - 0xdc, 0x23, 0xa2, 0xf3, 0xa4, 0xe8, 0xda, 0x33, 0x2e, 0xc2, 0x4f, 0x19, 0x04, 0xc5, 0xa6, 0x7b, - 0x8b, 0xfd, 0x0d, 0x5f, 0xe0, 0x6b, 0x82, 0xc0, 0x6f, 0x1b, 0xa6, 0xc8, 0xe4, 0x85, 0xfe, 0x85, - 0x34, 0x80, 0x5b, 0x36, 0x3b, 0xca, 0xf5, 0x58, 0xe1, 0x80, 0x76, 0x84, 0x74, 0x5f, 0xcd, 0x4b, - 0x77, 0x4d, 0x94, 0xee, 0x53, 0x06, 0x57, 0x35, 0xea, 0xc8, 0x96, 0x9a, 0x07, 0xc5, 0xf0, 0x45, - 0xeb, 0x3e, 0xa2, 0x77, 0xf8, 0x42, 0x5d, 0x17, 0x84, 0x7a, 0xc7, 0x90, 0x25, 0x25, 0x2f, 0xd7, - 0xbf, 0x48, 0xc3, 0x44, 0x0d, 0x3b, 0x6e, 0x37, 0x89, 0xce, 0xca, 0xf4, 0xf0, 0x5c, 0xdb, 0x4e, - 0x4b, 0xb6, 0xed, 0xef, 0xa5, 0x64, 0x03, 0xbd, 0x04, 0x92, 0x61, 0x3c, 0x85, 0x2c, 0x1e, 0x3c, - 0x2c, 0x15, 0xe8, 0x65, 0x10, 0xb5, 0xe4, 0xa5, 0xfb, 0xb6, 0xb4, 0xbf, 0x31, 0x2f, 0x9e, 0xb4, - 0xe0, 0xcd, 0xe2, 0xd4, 0x7e, 0xb3, 0x58, 0xfe, 0xa4, 0x05, 0x5f, 0xc7, 0xf0, 0x5d, 0xe9, 0xd8, - 0xc6, 0xc6, 0x08, 0x36, 0x8c, 0x87, 0x91, 0xd7, 0x73, 0x14, 0xc8, 0xb1, 0x95, 0xe5, 0xbb, 0xa2, - 0x57, 0x96, 0x07, 0x4f, 0x2d, 0xde, 0x3f, 0x84, 0x29, 0x17, 0xb5, 0xdc, 0xeb, 0xb3, 0x91, 0xe6, - 0xd8, 0xb8, 0x09, 0xb2, 0x24, 0x12, 0x25, 0x1b, 0xe7, 0x82, 0xbd, 0x7e, 0x8f, 0x44, 0xc9, 0xfd, - 0xaa, 0xd1, 0x4c, 0xb1, 0x51, 0x18, 0xc1, 0x0a, 0xf1, 0x30, 0x28, 0xbc, 0xe7, 0xf3, 0x29, 0xdf, - 0x08, 0x79, 0x7f, 0x86, 0x99, 0x7f, 0x9f, 0x14, 0x63, 0x62, 0x34, 0x2d, 0xd3, 0xc1, 0x0f, 0x70, - 0x6b, 0xf2, 0x7e, 0x42, 0xa4, 0x65, 0x70, 0x0a, 0x26, 0x1c, 0x9b, 0x5f, 0xa7, 0xf7, 0x5e, 0xf9, - 0x1e, 0x27, 0x2b, 0xf6, 0x38, 0x15, 0x38, 0x63, 0x98, 0xcd, 0xf6, 0x6e, 0x0b, 0x6b, 0xb8, 0xad, - 0xbb, 0xb5, 0xea, 0x16, 0xba, 0x8b, 0xb8, 0x83, 0xcd, 0x16, 0x36, 0x1d, 0xca, 0xa7, 0xe7, 0x93, - 0x2b, 0x91, 0x13, 0x7d, 0x83, 0x57, 0x8c, 0x3b, 0x45, 0xc5, 0x78, 0x6c, 0xbf, 0x79, 0x45, 0x84, - 0x11, 0x7a, 0x1b, 0x00, 0xad, 0xdb, 0x59, 0x03, 0x5f, 0x64, 0x1d, 0xe2, 0x15, 0x3d, 0xa6, 0x68, - 0xd5, 0xcf, 0xa0, 0x71, 0x99, 0xd1, 0x57, 0x7c, 0x65, 0xb8, 0x5b, 0x50, 0x86, 0x9b, 0x24, 0x59, - 0x88, 0xa7, 0x07, 0x9d, 0x21, 0xd6, 0x3a, 0x66, 0x61, 0x2a, 0x58, 0xa1, 0x54, 0xd4, 0x2b, 0xe0, - 0x84, 0xe7, 0xf3, 0x50, 0x29, 0x95, 0x16, 0x6b, 0x8d, 0x8d, 0xf5, 0x65, 0xad, 0xb0, 0x58, 0xca, - 0x83, 0xaa, 0xc2, 0x5c, 0x75, 0xe1, 0x9e, 0x52, 0xb1, 0xee, 0xbb, 0x2a, 0x64, 0xd0, 0x9f, 0xa5, - 0x21, 0x4b, 0x1c, 0xca, 0xd1, 0x4f, 0x8d, 0x48, 0x73, 0xba, 0xc2, 0x0e, 0x8f, 0x3f, 0x91, 0x92, - 0x8f, 0x55, 0xc9, 0x84, 0x49, 0xb8, 0x3a, 0x50, 0xac, 0xca, 0x08, 0x42, 0xc9, 0x37, 0x4f, 0xb7, - 0x49, 0xd6, 0xb6, 0xad, 0x8b, 0x3f, 0xca, 0x4d, 0xd2, 0xad, 0xff, 0x21, 0x37, 0xc9, 0x3e, 0x2c, - 0x8c, 0xbd, 0x49, 0xf6, 0x69, 0x77, 0x11, 0xcd, 0x14, 0x3d, 0x3b, 0xeb, 0x2f, 0xc8, 0x3c, 0x2f, - 0x7d, 0xa0, 0x05, 0x99, 0x02, 0xcc, 0x1a, 0xa6, 0x83, 0x6d, 0x53, 0x6f, 0x2f, 0xb5, 0xf5, 0x2d, - 0xef, 0x00, 0x7d, 0xef, 0x2c, 0xbc, 0xcc, 0xe5, 0xd1, 0xc4, 0x3f, 0xd4, 0xd3, 0x00, 0x0e, 0xde, - 0xe9, 0xb4, 0x75, 0x27, 0x50, 0x3d, 0x2e, 0x85, 0xd7, 0xbe, 0x8c, 0xa8, 0x7d, 0xb7, 0xc0, 0x65, - 0x14, 0xb4, 0xfa, 0xa5, 0x0e, 0xde, 0x30, 0x8d, 0x9f, 0xde, 0x25, 0x21, 0x94, 0xa8, 0x8e, 0xf6, - 0xfb, 0x24, 0x2c, 0x4b, 0xe4, 0x7a, 0x96, 0x25, 0xfe, 0x5e, 0xfa, 0x68, 0xa6, 0xd7, 0xea, 0x07, - 0x1c, 0xcd, 0xf4, 0x5b, 0x9a, 0xd2, 0xd3, 0xd2, 0x7c, 0x63, 0x21, 0x23, 0x61, 0x2c, 0xf0, 0xa8, - 0x64, 0x25, 0x0d, 0xed, 0xd7, 0x4b, 0x9d, 0xfd, 0x8c, 0xaa, 0xc6, 0x18, 0x26, 0x72, 0x0a, 0xcc, - 0xd1, 0xa2, 0x17, 0x2c, 0xeb, 0xc2, 0x8e, 0x6e, 0x5f, 0x40, 0xf6, 0x81, 0x54, 0x31, 0x72, 0x4d, - 0x24, 0x74, 0xa1, 0xef, 0x33, 0x3c, 0xea, 0xcb, 0x22, 0xea, 0x4f, 0x08, 0x17, 0x97, 0xc7, 0xf3, - 0x78, 0x16, 0x45, 0xde, 0xe2, 0xe3, 0x79, 0x8f, 0x80, 0xe7, 0x93, 0x63, 0x33, 0x98, 0x3c, 0xae, - 0x7f, 0xe0, 0xe3, 0xea, 0x75, 0xf4, 0xfc, 0x7c, 0x72, 0x94, 0xb8, 0xa2, 0xaf, 0x0e, 0x87, 0x9d, - 0xc7, 0xd7, 0x10, 0xd8, 0xe5, 0x41, 0xb9, 0xe0, 0x6f, 0x61, 0xb9, 0x8f, 0x7c, 0x85, 0x32, 0xc9, - 0xa1, 0x19, 0xc2, 0xf2, 0x58, 0xd0, 0x3c, 0x2e, 0xb2, 0x50, 0xed, 0x24, 0x8a, 0xe9, 0x97, 0xa5, - 0xd7, 0x69, 0xfa, 0x0a, 0x88, 0x72, 0x37, 0x9e, 0x56, 0x29, 0xb7, 0xc8, 0x23, 0xcf, 0x66, 0xf2, - 0x68, 0xbe, 0x28, 0x0b, 0x53, 0xde, 0xe1, 0x59, 0x12, 0xdb, 0xdd, 0xc7, 0xf0, 0x24, 0xe4, 0xba, - 0xd6, 0xae, 0xdd, 0xc4, 0x6c, 0xe5, 0x8c, 0xbd, 0x0d, 0xb1, 0xca, 0x33, 0x70, 0x3c, 0xdf, 0x67, - 0x32, 0x64, 0x62, 0x9b, 0x0c, 0xe1, 0x06, 0x69, 0xd4, 0x00, 0xff, 0x62, 0xe9, 0x80, 0x9c, 0x02, - 0x66, 0x35, 0xec, 0x3c, 0x12, 0xc7, 0xf8, 0xdf, 0x95, 0x5a, 0x43, 0x18, 0x50, 0x93, 0x78, 0x2a, - 0x57, 0x1d, 0xc2, 0x50, 0xbd, 0x12, 0x2e, 0xf7, 0x72, 0x30, 0x0b, 0x95, 0x58, 0xa4, 0x1b, 0xda, - 0x6a, 0x5e, 0x41, 0xcf, 0xc9, 0x40, 0x9e, 0xb2, 0x56, 0xf5, 0x8d, 0x35, 0xf4, 0xf2, 0xd4, 0x61, - 0x5b, 0xa4, 0xe1, 0x53, 0xcc, 0xcf, 0xa5, 0x65, 0x83, 0x7e, 0x09, 0x82, 0x0f, 0x6a, 0x17, 0xa2, - 0x49, 0x43, 0x34, 0xb3, 0x08, 0xe5, 0x43, 0xbf, 0x9e, 0x92, 0x89, 0x21, 0x26, 0xc7, 0x62, 0xf2, - 0xbd, 0xd2, 0x17, 0x33, 0x5e, 0x0c, 0x84, 0x25, 0xdb, 0xda, 0xd9, 0xb0, 0xdb, 0xe8, 0xff, 0x94, - 0x0a, 0xd1, 0x18, 0x62, 0xfe, 0xa7, 0xc3, 0xcd, 0xff, 0x3c, 0x28, 0xbb, 0x76, 0xdb, 0x1b, 0xbe, - 0x77, 0xed, 0xf6, 0x10, 0xc3, 0xb7, 0x7a, 0x3d, 0xcc, 0xe9, 0xad, 0xd6, 0xba, 0xbe, 0x85, 0x8b, - 0xee, 0xbc, 0xda, 0x74, 0xd8, 0xf9, 0xe8, 0x9e, 0xd4, 0xc8, 0xae, 0xe8, 0x1b, 0xd2, 0x3b, 0x71, - 0x02, 0x48, 0x4c, 0x3e, 0x63, 0x19, 0xde, 0xdc, 0x21, 0xa1, 0xb9, 0xad, 0x07, 0xd1, 0x1a, 0xd8, - 0x9b, 0xe4, 0x0e, 0x9d, 0x04, 0xdf, 0xc9, 0x6b, 0xd6, 0x6f, 0xa7, 0x61, 0xc2, 0x95, 0x77, 0xa1, - 0xd5, 0x42, 0x8f, 0x11, 0x82, 0x9a, 0x84, 0xee, 0x91, 0xbe, 0x40, 0x7a, 0x73, 0xda, 0xab, 0x21, - 0xa5, 0x1f, 0x82, 0x49, 0x20, 0xc4, 0xb4, 0x20, 0x44, 0xb9, 0x3d, 0xe8, 0xc8, 0x22, 0x92, 0x17, - 0xdf, 0xa7, 0xd3, 0x30, 0xeb, 0xcd, 0x23, 0x96, 0xb0, 0xd3, 0xdc, 0x46, 0xb7, 0xc9, 0x2e, 0x34, - 0xb1, 0x96, 0x96, 0xf6, 0x5b, 0x1a, 0xfa, 0x41, 0x2a, 0xa6, 0xca, 0x0b, 0x25, 0x87, 0xac, 0xd2, - 0xc5, 0xd2, 0xc5, 0x28, 0x82, 0xc9, 0x0b, 0xf3, 0x2b, 0x69, 0x80, 0xba, 0xe5, 0xcf, 0x75, 0x0f, - 0x20, 0xc9, 0x97, 0x4a, 0xdf, 0x97, 0xc0, 0x2a, 0x1e, 0x14, 0x1b, 0xbf, 0xe7, 0x90, 0xdc, 0x62, - 0x1b, 0x54, 0xd2, 0x58, 0xda, 0xfa, 0xd4, 0xe2, 0x6e, 0xa7, 0x6d, 0x34, 0x75, 0xa7, 0x77, 0x5f, - 0x38, 0x5c, 0xbc, 0xe4, 0xe2, 0xa3, 0x58, 0x46, 0xa1, 0x5f, 0x46, 0x88, 0x2c, 0xe9, 0x61, 0xdb, - 0xb4, 0x77, 0xd8, 0x56, 0x72, 0xaf, 0x67, 0x00, 0xf1, 0x31, 0xa8, 0xa7, 0x02, 0x47, 0xab, 0x1d, - 0x6c, 0x2e, 0xd8, 0x58, 0x6f, 0x35, 0xed, 0xdd, 0x9d, 0xf3, 0x5d, 0xde, 0xa9, 0x21, 0x5a, 0x47, - 0xb9, 0xa5, 0xe3, 0xb4, 0xb0, 0x74, 0x8c, 0x9e, 0xab, 0xc8, 0x1e, 0xfd, 0xe6, 0x36, 0x38, 0x38, - 0x1e, 0x86, 0x18, 0xea, 0x62, 0x6d, 0xc5, 0xf5, 0xac, 0x12, 0x67, 0xe2, 0xac, 0x12, 0xbf, 0x55, - 0xea, 0x20, 0xb9, 0x54, 0xbd, 0xc6, 0xb2, 0xa3, 0x3a, 0x57, 0xc3, 0x4e, 0x08, 0xbc, 0xd7, 0xc1, - 0xec, 0xf9, 0xe0, 0x8b, 0x0f, 0xb1, 0x98, 0xd8, 0xc7, 0xcf, 0xe1, 0x6d, 0x71, 0x57, 0x60, 0x44, - 0x16, 0x42, 0xd0, 0xf5, 0x11, 0x4c, 0xcb, 0x6c, 0xa6, 0xc6, 0x5a, 0x4e, 0x89, 0x2c, 0x3f, 0x79, - 0x14, 0x3e, 0x9e, 0x86, 0x69, 0x72, 0x9d, 0xd3, 0xc2, 0x25, 0xe2, 0x9d, 0x2f, 0x69, 0x94, 0xbc, - 0x88, 0x17, 0xb3, 0x0a, 0x99, 0xb6, 0x61, 0x5e, 0xf0, 0x76, 0xc1, 0xdd, 0xe7, 0xe0, 0x72, 0x90, - 0x74, 0x9f, 0xcb, 0x41, 0xfc, 0x7d, 0x0a, 0xbf, 0xdc, 0x03, 0xdd, 0x56, 0x37, 0x90, 0x5c, 0xf2, - 0x62, 0xfc, 0xdb, 0x0c, 0xe4, 0x6a, 0x58, 0xb7, 0x9b, 0xdb, 0xe8, 0xfd, 0xe9, 0xbe, 0x53, 0x85, - 0x49, 0x71, 0xaa, 0xb0, 0x04, 0x13, 0x9b, 0x46, 0xdb, 0xc1, 0x36, 0xf5, 0x0c, 0xe2, 0xbb, 0x76, - 0xda, 0xc4, 0x17, 0xda, 0x56, 0xf3, 0xc2, 0x3c, 0x33, 0xdd, 0xe7, 0xbd, 0x60, 0x52, 0xf3, 0x4b, - 0xe4, 0x27, 0xcd, 0xfb, 0xd9, 0x35, 0x08, 0xbb, 0x96, 0xed, 0x84, 0xc5, 0x09, 0x0e, 0xa1, 0x52, - 0xb3, 0x6c, 0x47, 0xa3, 0x3f, 0xba, 0x30, 0x6f, 0xee, 0xb6, 0xdb, 0x75, 0xfc, 0x80, 0xe3, 0x4d, - 0xdb, 0xbc, 0x77, 0xd7, 0x58, 0xb4, 0x36, 0x37, 0xbb, 0x98, 0x2e, 0x1a, 0x64, 0x35, 0xf6, 0xa6, - 0x1e, 0x87, 0x6c, 0xdb, 0xd8, 0x31, 0xe8, 0x44, 0x23, 0xab, 0xd1, 0x17, 0xf5, 0x46, 0xc8, 0x07, - 0x73, 0x1c, 0xca, 0xe8, 0xa9, 0x1c, 0x69, 0x9a, 0xfb, 0xd2, 0x5d, 0x9d, 0xb9, 0x80, 0x2f, 0x75, - 0x4f, 0x4d, 0x90, 0xef, 0xe4, 0x59, 0x74, 0xc3, 0x94, 0xd9, 0xef, 0xa0, 0x12, 0x0f, 0x9f, 0xc1, - 0xda, 0xb8, 0x69, 0xd9, 0x2d, 0x4f, 0x36, 0xe1, 0x13, 0x0c, 0x96, 0x2f, 0xde, 0x2e, 0x45, 0xdf, - 0xc2, 0xc7, 0xe0, 0x02, 0x91, 0x73, 0xbb, 0x4d, 0xb7, 0xe8, 0x73, 0x86, 0xb3, 0xbd, 0x86, 0x1d, - 0x1d, 0xfd, 0xad, 0xd2, 0x57, 0xe3, 0xa6, 0xff, 0x7f, 0x8d, 0x1b, 0xa0, 0x71, 0x34, 0x4c, 0x80, - 0xb3, 0x6b, 0x9b, 0xae, 0x1c, 0x59, 0x60, 0x2e, 0x2e, 0x45, 0xbd, 0x03, 0xae, 0x08, 0xde, 0xbc, - 0xa5, 0xd2, 0x45, 0x36, 0x6d, 0x9d, 0x22, 0xd9, 0xc3, 0x33, 0xa8, 0xeb, 0x70, 0x2d, 0xfd, 0xb8, - 0x52, 0x5f, 0x5b, 0x5d, 0x31, 0xb6, 0xb6, 0xdb, 0xc6, 0xd6, 0xb6, 0xd3, 0x2d, 0x9b, 0x5d, 0x07, - 0xeb, 0xad, 0xea, 0xa6, 0x46, 0x23, 0x7c, 0x03, 0xa1, 0x23, 0x93, 0x55, 0xf4, 0x1c, 0x92, 0x1b, - 0xdd, 0x78, 0x4d, 0x09, 0x69, 0x29, 0x4f, 0x76, 0x5b, 0x4a, 0x77, 0xb7, 0xed, 0x63, 0x7a, 0x55, - 0x0f, 0xa6, 0x81, 0xaa, 0xef, 0xb6, 0x49, 0x73, 0x21, 0x99, 0xe3, 0x8e, 0x73, 0x11, 0x9c, 0x24, - 0xdf, 0x6c, 0xfe, 0xdf, 0x1c, 0x64, 0x97, 0x6d, 0xbd, 0xb3, 0x8d, 0x9e, 0xc3, 0xf5, 0xcf, 0xa3, - 0x6a, 0x13, 0xbe, 0x76, 0xa6, 0x07, 0x69, 0xa7, 0x32, 0x40, 0x3b, 0x33, 0x9c, 0x76, 0x86, 0x2f, - 0x2a, 0x9f, 0x81, 0x99, 0xa6, 0xd5, 0x6e, 0xe3, 0xa6, 0x2b, 0x8f, 0x72, 0x8b, 0xac, 0xe6, 0x4c, - 0x69, 0x42, 0x1a, 0x09, 0xb8, 0x87, 0x9d, 0x1a, 0x5d, 0x43, 0xa7, 0x4a, 0x1f, 0x24, 0xa0, 0x97, - 0xa7, 0x21, 0x53, 0x6a, 0x6d, 0x61, 0x61, 0x9d, 0x3d, 0xc5, 0xad, 0xb3, 0x9f, 0x84, 0x9c, 0xa3, - 0xdb, 0x5b, 0xd8, 0xf1, 0xd6, 0x09, 0xe8, 0x9b, 0x1f, 0x07, 0x50, 0xe1, 0xe2, 0x00, 0x3e, 0x05, - 0x32, 0xae, 0xcc, 0x58, 0x84, 0x9d, 0x6b, 0xfb, 0xc1, 0x4f, 0x64, 0x3f, 0xef, 0x96, 0x38, 0xef, - 0xd6, 0x5a, 0x23, 0x3f, 0xf4, 0x62, 0x9d, 0xdd, 0x87, 0x35, 0xb9, 0xac, 0xa8, 0x69, 0x99, 0xe5, - 0x1d, 0x7d, 0x0b, 0xb3, 0x6a, 0x06, 0x09, 0xde, 0xd7, 0xd2, 0x8e, 0x75, 0xbf, 0xc1, 0x42, 0xf2, - 0x05, 0x09, 0x6e, 0x15, 0xb6, 0x8d, 0x56, 0x0b, 0x9b, 0xac, 0x65, 0xb3, 0xb7, 0x33, 0xa7, 0x21, - 0xe3, 0xf2, 0xe0, 0xea, 0x8f, 0x6b, 0x2c, 0xe4, 0x8f, 0xa8, 0x33, 0x6e, 0xb3, 0xa2, 0x8d, 0x37, - 0x9f, 0x12, 0xd7, 0x54, 0x65, 0xdc, 0x76, 0x68, 0xe5, 0xfa, 0x37, 0xae, 0xc7, 0x43, 0xd6, 0xb4, - 0x5a, 0x78, 0xe0, 0x20, 0x44, 0x73, 0xa9, 0x4f, 0x82, 0x2c, 0x6e, 0xb9, 0xbd, 0x82, 0x42, 0xb2, - 0x9f, 0x8e, 0x96, 0xa5, 0x46, 0x33, 0xc7, 0xf3, 0x0d, 0xea, 0xc7, 0x6d, 0xf2, 0x0d, 0xf0, 0x17, - 0x26, 0xe0, 0x28, 0xed, 0x03, 0x6a, 0xbb, 0xe7, 0x5d, 0x52, 0xe7, 0x31, 0x7a, 0xb8, 0xff, 0xc0, - 0x75, 0x54, 0x54, 0xf6, 0xe3, 0x90, 0xed, 0xee, 0x9e, 0xf7, 0x8d, 0x50, 0xfa, 0xc2, 0x37, 0xdd, - 0xf4, 0x48, 0x86, 0x33, 0x65, 0xd8, 0xe1, 0x4c, 0x18, 0x9a, 0x14, 0xaf, 0xf1, 0x07, 0x03, 0x59, - 0x8e, 0x24, 0x7b, 0x03, 0x59, 0xbf, 0x61, 0xe8, 0x14, 0x4c, 0xe8, 0x9b, 0x0e, 0xb6, 0x03, 0x33, - 0x91, 0xbd, 0xba, 0x43, 0xe5, 0x79, 0xbc, 0x69, 0xd9, 0xae, 0x58, 0xa6, 0xe8, 0x50, 0xe9, 0xbd, - 0x73, 0x2d, 0x17, 0x84, 0x1d, 0xb2, 0x9b, 0xe0, 0x98, 0x69, 0x2d, 0xe2, 0x0e, 0x93, 0x33, 0x45, - 0x71, 0x96, 0xb4, 0x80, 0xfd, 0x1f, 0xf6, 0x75, 0x25, 0x73, 0xfb, 0xbb, 0x12, 0xf4, 0xd9, 0xb8, - 0x73, 0xe6, 0x1e, 0xa0, 0x47, 0x66, 0xa1, 0xa9, 0x4f, 0x83, 0x99, 0x16, 0x73, 0xd1, 0x6a, 0x1a, - 0x7e, 0x2b, 0x09, 0xfd, 0x4f, 0xc8, 0x1c, 0x28, 0x52, 0x86, 0x57, 0xa4, 0x65, 0x98, 0x24, 0x07, - 0x72, 0x5c, 0x4d, 0xca, 0xf6, 0xc4, 0x2b, 0x24, 0xd3, 0x3a, 0xbf, 0x52, 0x9c, 0xd8, 0xe6, 0x8b, - 0xec, 0x17, 0xcd, 0xff, 0x39, 0xde, 0xec, 0x3b, 0x5a, 0x42, 0xc9, 0x37, 0xc7, 0xdf, 0xc8, 0xc1, - 0x15, 0x45, 0xdb, 0xea, 0x76, 0x49, 0x14, 0x8a, 0xde, 0x86, 0xf9, 0xe6, 0xb4, 0x10, 0x11, 0xf8, - 0x11, 0xdd, 0xfc, 0xfa, 0x35, 0xa8, 0xf1, 0x35, 0x8d, 0x6f, 0x48, 0x1f, 0x65, 0xf6, 0xf7, 0x1f, - 0x42, 0x84, 0xfe, 0xa3, 0xd1, 0x48, 0xde, 0x93, 0x92, 0x39, 0x5d, 0x1d, 0x53, 0x56, 0xc9, 0x37, - 0x97, 0x2f, 0xa7, 0xe1, 0xca, 0x5e, 0x6e, 0x36, 0xcc, 0xae, 0xdf, 0x60, 0xae, 0x1e, 0xd0, 0x5e, - 0xc4, 0xd3, 0xb8, 0x91, 0x77, 0xf1, 0x84, 0xd4, 0x9d, 0x2b, 0x2d, 0x64, 0xb1, 0xe4, 0x7d, 0x29, - 0x99, 0xbb, 0x78, 0x62, 0x93, 0x4f, 0x5e, 0xb8, 0x9f, 0xcb, 0xc0, 0xd1, 0x65, 0xdb, 0xda, 0xed, - 0x74, 0x83, 0x1e, 0xe8, 0xaf, 0xfa, 0x6f, 0xb8, 0xe6, 0x64, 0x4c, 0x83, 0x6b, 0x60, 0xda, 0x66, - 0xd6, 0x5c, 0xb0, 0xfd, 0xca, 0x27, 0xf1, 0xbd, 0x97, 0x72, 0x90, 0xde, 0x2b, 0xe8, 0x67, 0x32, - 0x42, 0x3f, 0xd3, 0xdb, 0x73, 0x64, 0xfb, 0xf4, 0x1c, 0x7f, 0x99, 0x8e, 0x39, 0xa8, 0xf6, 0x88, - 0x28, 0xa4, 0xbf, 0x28, 0x42, 0x6e, 0x8b, 0x64, 0x64, 0xdd, 0xc5, 0xe3, 0xe4, 0x6a, 0x46, 0x88, - 0x6b, 0xec, 0xd7, 0x40, 0xae, 0x0a, 0xaf, 0xc3, 0xb1, 0x06, 0xb8, 0x68, 0x6e, 0x93, 0x57, 0xaa, - 0x87, 0x32, 0x30, 0xe3, 0x97, 0x5e, 0x6e, 0x75, 0xd1, 0x8b, 0xfa, 0x6b, 0xd4, 0xac, 0x8c, 0x46, - 0xed, 0x5b, 0x67, 0xf6, 0x47, 0x1d, 0x85, 0x1b, 0x75, 0xfa, 0x8e, 0x2e, 0x33, 0x21, 0xa3, 0x0b, - 0x7a, 0xb6, 0x22, 0x1b, 0x53, 0x5f, 0xec, 0x5a, 0x49, 0x6d, 0x1e, 0xc9, 0x83, 0x85, 0x64, 0x64, - 0xff, 0xc1, 0xb5, 0x4a, 0x5e, 0x49, 0x3e, 0x94, 0x86, 0x63, 0xfb, 0x3b, 0xf3, 0x47, 0x8b, 0x5e, - 0x68, 0x6e, 0x9d, 0xba, 0xbe, 0x17, 0x1a, 0x79, 0x13, 0x37, 0xe9, 0x22, 0x8f, 0xc6, 0x0a, 0xf6, - 0xde, 0xe0, 0x4e, 0x5c, 0xee, 0xf0, 0xab, 0x24, 0xd1, 0xe4, 0x05, 0xf8, 0xcb, 0x0a, 0x4c, 0xd5, - 0xb0, 0xb3, 0xaa, 0x5f, 0xb2, 0x76, 0x1d, 0xa4, 0xcb, 0x6e, 0xcf, 0x3d, 0x15, 0x72, 0x6d, 0xf2, - 0x0b, 0xbb, 0xaa, 0xf4, 0x9a, 0xbe, 0xfb, 0x5b, 0xc4, 0xf7, 0x87, 0x92, 0xd6, 0x58, 0x7e, 0xf1, - 0x4c, 0xb2, 0xcc, 0xee, 0xa8, 0xcf, 0xdd, 0x48, 0xb6, 0x76, 0x62, 0xed, 0x9d, 0x86, 0x15, 0x9d, - 0x3c, 0x2c, 0xcf, 0x55, 0x60, 0xb6, 0x86, 0x9d, 0x72, 0x77, 0x49, 0xdf, 0xb3, 0x6c, 0xc3, 0xc1, - 0xfc, 0x5d, 0x45, 0xd1, 0xd0, 0x9c, 0x06, 0x30, 0xfc, 0xdf, 0x58, 0xa4, 0x04, 0x2e, 0x05, 0xfd, - 0x7a, 0x5c, 0x47, 0x21, 0x81, 0x8f, 0x91, 0x80, 0x10, 0xcb, 0xc7, 0x22, 0xaa, 0xf8, 0xe4, 0x81, - 0xf8, 0x52, 0x9a, 0x01, 0x51, 0xb0, 0x9b, 0xdb, 0xc6, 0x1e, 0x6e, 0xc5, 0x04, 0xc2, 0xfb, 0x2d, - 0x00, 0xc2, 0x27, 0x14, 0xdb, 0x7d, 0x45, 0xe0, 0x63, 0x14, 0xee, 0x2b, 0x51, 0x04, 0xc7, 0x12, - 0xec, 0xc0, 0xed, 0x7a, 0xd8, 0x7a, 0xe6, 0x5d, 0xb2, 0x62, 0x0d, 0x4c, 0xb6, 0x34, 0x6f, 0xb2, - 0x0d, 0xd5, 0xb1, 0xd0, 0xb2, 0x07, 0xe9, 0x74, 0x26, 0x89, 0x8e, 0xa5, 0x6f, 0xd1, 0xc9, 0x0b, - 0xfd, 0x7d, 0x0a, 0x9c, 0xf0, 0x4f, 0x01, 0xd7, 0xb0, 0xb3, 0xa8, 0x77, 0xb7, 0xcf, 0x5b, 0xba, - 0xdd, 0xe2, 0xaf, 0xb0, 0x1d, 0xfa, 0xc4, 0x1f, 0xfa, 0x22, 0x0f, 0x42, 0x45, 0x04, 0xa1, 0xaf, - 0xab, 0x68, 0x5f, 0x5e, 0x46, 0xd1, 0xc9, 0x44, 0x7a, 0xb3, 0xfe, 0xa6, 0x0f, 0xd6, 0x33, 0x04, - 0xb0, 0xee, 0x1c, 0x96, 0xc5, 0xe4, 0x81, 0xfb, 0x35, 0x3a, 0x22, 0x70, 0x5e, 0xcd, 0xf7, 0xc9, - 0x02, 0x16, 0xe2, 0xd5, 0xaa, 0x84, 0x7a, 0xb5, 0x0e, 0x35, 0x46, 0x0c, 0xf4, 0x48, 0x4e, 0x76, - 0x8c, 0x38, 0x44, 0x6f, 0xe3, 0x77, 0x29, 0x90, 0x27, 0x61, 0x20, 0x38, 0x8f, 0x6f, 0x74, 0xbf, - 0x2c, 0x3a, 0xfb, 0xbc, 0xcb, 0x27, 0xe2, 0x7a, 0x97, 0xa3, 0x77, 0xc6, 0xf5, 0x21, 0xef, 0xe5, - 0x76, 0x24, 0x88, 0xc5, 0x72, 0x11, 0x1f, 0xc0, 0x41, 0xf2, 0xa0, 0xfd, 0x37, 0x05, 0xc0, 0x6d, - 0xd0, 0xec, 0xec, 0xc3, 0x33, 0x65, 0xe1, 0xba, 0x99, 0xf7, 0xab, 0x77, 0x81, 0x3a, 0xd1, 0x03, - 0x14, 0xa5, 0x18, 0x9c, 0xaa, 0x78, 0x38, 0xae, 0x6f, 0x65, 0xc0, 0xd5, 0x48, 0x60, 0x89, 0xe5, - 0x6d, 0x19, 0x5a, 0x76, 0xf2, 0x80, 0xfc, 0x8f, 0x34, 0x64, 0xeb, 0x56, 0x0d, 0x3b, 0x07, 0x37, - 0x05, 0x62, 0x1f, 0xdb, 0x27, 0xe5, 0x8e, 0xe2, 0xd8, 0x7e, 0x3f, 0x42, 0xc9, 0x8b, 0xee, 0xbd, - 0x69, 0x98, 0xa9, 0x5b, 0x45, 0x7f, 0x71, 0x4a, 0xde, 0x57, 0x55, 0xfe, 0x5e, 0x40, 0xbf, 0x82, - 0x41, 0x31, 0x07, 0xba, 0x17, 0x70, 0x30, 0xbd, 0xe4, 0xe5, 0x76, 0x1b, 0x1c, 0xdd, 0x30, 0x5b, - 0x96, 0x86, 0x5b, 0x16, 0x5b, 0xe9, 0x56, 0x55, 0xc8, 0xec, 0x9a, 0x2d, 0x8b, 0xb0, 0x9c, 0xd5, - 0xc8, 0xb3, 0x9b, 0x66, 0xe3, 0x96, 0xc5, 0x7c, 0x03, 0xc8, 0x33, 0xfa, 0x86, 0x02, 0x19, 0xf7, - 0x5f, 0x79, 0x51, 0xbf, 0x4b, 0x89, 0x19, 0x88, 0xc0, 0x25, 0x3f, 0x12, 0x4b, 0xe8, 0x2e, 0x6e, - 0xed, 0x9f, 0x7a, 0xb0, 0x5e, 0x1b, 0x56, 0x1e, 0x27, 0x8a, 0x60, 0xcd, 0x5f, 0x3d, 0x05, 0x13, - 0xe7, 0xdb, 0x56, 0xf3, 0x42, 0x70, 0x5e, 0x9e, 0xbd, 0xaa, 0x37, 0x42, 0xd6, 0xd6, 0xcd, 0x2d, - 0xcc, 0xf6, 0x14, 0x8e, 0xf7, 0xf4, 0x85, 0xc4, 0xeb, 0x45, 0xa3, 0x59, 0xd0, 0x3b, 0xe3, 0x84, - 0x40, 0xe8, 0x53, 0xf9, 0x78, 0xfa, 0xb0, 0x38, 0xc4, 0xc9, 0xb2, 0x3c, 0xcc, 0x14, 0x0b, 0xf4, - 0x06, 0xce, 0xb5, 0xea, 0xd9, 0x52, 0x5e, 0x21, 0x30, 0xbb, 0x32, 0x49, 0x10, 0x66, 0x97, 0xfc, - 0x8f, 0x2c, 0xcc, 0x7d, 0x2a, 0x7f, 0x18, 0x30, 0x7f, 0x3a, 0x0d, 0xb3, 0xab, 0x46, 0xd7, 0x09, - 0xf3, 0xf6, 0x8f, 0x88, 0x02, 0xf7, 0xe2, 0xb8, 0xa6, 0xb2, 0x50, 0x8e, 0x74, 0xf8, 0xb7, 0x58, - 0xe6, 0x70, 0x54, 0x11, 0xe3, 0x39, 0x96, 0x42, 0x38, 0xa0, 0xb7, 0xe6, 0x49, 0x4b, 0x32, 0xb6, - 0xa1, 0x14, 0x14, 0x32, 0x7e, 0x43, 0x29, 0xb4, 0xec, 0xe4, 0xe5, 0xfb, 0x8d, 0x34, 0x1c, 0x73, - 0x8b, 0x8f, 0x5a, 0x96, 0x0a, 0x17, 0xf3, 0xc0, 0x65, 0xa9, 0xd8, 0x2b, 0xe3, 0xfb, 0x78, 0x19, - 0xc5, 0xca, 0xf8, 0x20, 0xa2, 0x63, 0x16, 0x73, 0xc8, 0x32, 0xec, 0x20, 0x31, 0x47, 0x2c, 0xc3, - 0x0e, 0x2f, 0xe6, 0xe8, 0xa5, 0xd8, 0x21, 0xc5, 0x7c, 0x68, 0x0b, 0xac, 0x6f, 0x54, 0x7c, 0x31, - 0x87, 0xae, 0x6d, 0x44, 0x88, 0x39, 0xf6, 0x89, 0x5d, 0xf4, 0xee, 0x21, 0x05, 0x3f, 0xe2, 0xf5, - 0x8d, 0x61, 0x60, 0x3a, 0xc4, 0x35, 0x8e, 0x57, 0x28, 0x30, 0xc7, 0xb8, 0xe8, 0x3f, 0x65, 0x8e, - 0xc0, 0x28, 0xf6, 0x94, 0x39, 0xf6, 0x19, 0x20, 0x91, 0xb3, 0xf1, 0x9f, 0x01, 0x8a, 0x2c, 0x3f, - 0x79, 0x70, 0xbe, 0x99, 0x81, 0x93, 0x2e, 0x0b, 0x6b, 0x56, 0xcb, 0xd8, 0xbc, 0x44, 0xb9, 0x38, - 0xab, 0xb7, 0x77, 0x71, 0x17, 0x7d, 0x20, 0x2d, 0x8b, 0xd2, 0x7f, 0x02, 0xb0, 0x3a, 0xd8, 0xa6, - 0x81, 0xd4, 0x18, 0x50, 0x77, 0x84, 0x55, 0x76, 0x7f, 0x49, 0x7e, 0x50, 0xf4, 0xaa, 0x47, 0x44, - 0xe3, 0xe8, 0xb9, 0x56, 0xe1, 0x94, 0xff, 0xa5, 0xd7, 0xc1, 0x23, 0xb5, 0xdf, 0xc1, 0xe3, 0x06, - 0x50, 0xf4, 0x56, 0xcb, 0x87, 0xaa, 0x77, 0x33, 0x9b, 0x94, 0xa9, 0xb9, 0x59, 0xdc, 0x9c, 0x5d, - 0x1c, 0x1c, 0xcd, 0x0b, 0xc9, 0xd9, 0xc5, 0x8e, 0x3a, 0x0f, 0x39, 0x7a, 0x83, 0xa0, 0xbf, 0xa2, - 0xdf, 0x3f, 0x33, 0xcb, 0x25, 0x9a, 0x76, 0x55, 0x51, 0x0d, 0x6f, 0x8b, 0x25, 0x99, 0x7e, 0xfd, - 0x74, 0x60, 0x27, 0x6b, 0x82, 0x82, 0x3d, 0x7d, 0x68, 0xca, 0xe3, 0xd9, 0x0d, 0x2b, 0x74, 0x3a, - 0xed, 0x4b, 0x75, 0x16, 0x7c, 0x25, 0xd6, 0x6e, 0x18, 0x17, 0xc3, 0x25, 0xdd, 0x1b, 0xc3, 0x25, - 0xfe, 0x6e, 0x98, 0xc0, 0xc7, 0x28, 0x76, 0xc3, 0xa2, 0x08, 0x8e, 0x61, 0x3d, 0x32, 0x4b, 0xad, - 0x66, 0x16, 0xa3, 0xf6, 0x2d, 0xfd, 0x0f, 0xa1, 0x81, 0xe8, 0xec, 0xd2, 0x2f, 0x7c, 0x6d, 0x64, - 0x6c, 0x6e, 0xf5, 0x49, 0x90, 0xdb, 0xb4, 0xec, 0x1d, 0xdd, 0xdb, 0xb8, 0xef, 0x3d, 0x29, 0xc2, - 0xe2, 0xc2, 0x2e, 0x91, 0x3c, 0x1a, 0xcb, 0xeb, 0xce, 0x47, 0x9e, 0x65, 0x74, 0x58, 0xd4, 0x45, - 0xf7, 0x51, 0xbd, 0x0e, 0x66, 0x59, 0xf0, 0xc5, 0x0a, 0xee, 0x3a, 0xb8, 0xc5, 0x22, 0x56, 0x88, - 0x89, 0xea, 0x19, 0x98, 0x61, 0x09, 0x4b, 0x46, 0x1b, 0x77, 0x59, 0xd0, 0x0a, 0x21, 0x4d, 0x3d, - 0x09, 0x39, 0xa3, 0x7b, 0x4f, 0xd7, 0x32, 0x89, 0xff, 0xff, 0xa4, 0xc6, 0xde, 0xd4, 0x1b, 0xe0, - 0x28, 0xcb, 0xe7, 0x1b, 0xab, 0xf4, 0xc0, 0x4e, 0x6f, 0x32, 0xfa, 0xfc, 0x30, 0x13, 0x87, 0xd8, - 0xf1, 0x78, 0x5d, 0x14, 0x76, 0x9b, 0x4d, 0x8c, 0x5b, 0xec, 0x64, 0x93, 0xf7, 0x1a, 0x33, 0x52, - 0x6f, 0xec, 0x69, 0xc6, 0x21, 0x85, 0xea, 0xfd, 0xe8, 0x09, 0xc8, 0xd1, 0x6b, 0x2f, 0xd0, 0xcb, - 0xe6, 0xfa, 0x2a, 0xe3, 0x9c, 0xa8, 0x8c, 0x1b, 0x30, 0x63, 0x5a, 0x6e, 0x71, 0xeb, 0xba, 0xad, - 0xef, 0x74, 0xa3, 0x56, 0x11, 0x29, 0x5d, 0x7f, 0xc8, 0xa8, 0x70, 0xbf, 0xad, 0x1c, 0xd1, 0x04, - 0x32, 0xea, 0xff, 0x06, 0x47, 0xcf, 0xb3, 0x08, 0x00, 0x5d, 0x46, 0x39, 0x1d, 0xee, 0x63, 0xd7, - 0x43, 0x79, 0x41, 0xfc, 0x73, 0xe5, 0x88, 0xd6, 0x4b, 0x4c, 0xfd, 0x49, 0x98, 0x73, 0x5f, 0x5b, - 0xd6, 0x45, 0x8f, 0x71, 0x25, 0xdc, 0xd0, 0xe8, 0x21, 0xbf, 0x26, 0xfc, 0xb8, 0x72, 0x44, 0xeb, - 0x21, 0xa5, 0x56, 0x01, 0xb6, 0x9d, 0x9d, 0x36, 0x23, 0x9c, 0x09, 0x57, 0xc9, 0x1e, 0xc2, 0x2b, - 0xfe, 0x4f, 0x2b, 0x47, 0x34, 0x8e, 0x84, 0xba, 0x0a, 0x53, 0xce, 0x03, 0x0e, 0xa3, 0x97, 0x0d, - 0xdf, 0xdc, 0xee, 0xa1, 0x57, 0xf7, 0xfe, 0x59, 0x39, 0xa2, 0x05, 0x04, 0xd4, 0x32, 0x4c, 0x76, - 0xce, 0x33, 0x62, 0xb9, 0x3e, 0x57, 0xfd, 0xf7, 0x27, 0xb6, 0x7e, 0xde, 0xa7, 0xe5, 0xff, 0xee, - 0x32, 0xd6, 0xec, 0xee, 0x31, 0x5a, 0x13, 0xd2, 0x8c, 0x15, 0xbd, 0x7f, 0x5c, 0xc6, 0x7c, 0x02, - 0x6a, 0x19, 0xa6, 0xba, 0xa6, 0xde, 0xe9, 0x6e, 0x5b, 0x4e, 0xf7, 0xd4, 0x64, 0x8f, 0x1f, 0x64, - 0x38, 0xb5, 0x1a, 0xfb, 0x47, 0x0b, 0xfe, 0x56, 0x9f, 0x04, 0x27, 0x76, 0xc9, 0xf5, 0xa1, 0xa5, - 0x07, 0x8c, 0xae, 0x63, 0x98, 0x5b, 0x5e, 0x0c, 0x59, 0xda, 0x9b, 0xf4, 0xff, 0xa8, 0xce, 0xb3, - 0x13, 0x51, 0x40, 0xda, 0x26, 0xea, 0xdd, 0x8c, 0xa3, 0xc5, 0x72, 0x07, 0xa1, 0x9e, 0x06, 0x19, - 0xf7, 0x13, 0x39, 0xb3, 0x39, 0xd7, 0x7f, 0xa1, 0xaf, 0x57, 0x77, 0x48, 0x03, 0x76, 0x7f, 0x72, - 0xc7, 0x46, 0xd3, 0x5a, 0xb7, 0xad, 0x2d, 0x1b, 0x77, 0xbb, 0xcc, 0xe1, 0x90, 0x4b, 0x71, 0x1b, - 0xb8, 0xd1, 0x5d, 0x33, 0xb6, 0xa8, 0xf5, 0xc4, 0xfc, 0xdd, 0xf9, 0x24, 0x3a, 0xdb, 0xac, 0xe0, - 0x8b, 0xc4, 0x21, 0x98, 0x9c, 0xbf, 0x21, 0xb3, 0x4d, 0x2f, 0x05, 0x5d, 0x0f, 0x33, 0x7c, 0x23, - 0xa3, 0x77, 0x67, 0x19, 0x81, 0xed, 0xc5, 0xde, 0xd0, 0x75, 0x30, 0x27, 0xea, 0x34, 0x37, 0xc4, - 0x28, 0x5e, 0x57, 0x88, 0xae, 0x85, 0xa3, 0x3d, 0x0d, 0xcb, 0x8b, 0x29, 0x92, 0x0a, 0x62, 0x8a, - 0x5c, 0x03, 0x10, 0x68, 0x71, 0x5f, 0x32, 0x57, 0xc3, 0x94, 0xaf, 0x97, 0x7d, 0x33, 0x7c, 0x2d, - 0x05, 0x93, 0x9e, 0xb2, 0xf5, 0xcb, 0xe0, 0x8e, 0x2f, 0x26, 0xb7, 0x81, 0xc0, 0xa6, 0xd9, 0x42, - 0x9a, 0x3b, 0x8e, 0x04, 0x6e, 0xbb, 0x75, 0xc3, 0x69, 0x7b, 0x47, 0xdf, 0x7a, 0x93, 0xd5, 0x75, - 0x00, 0x83, 0x60, 0x54, 0x0f, 0xce, 0xc2, 0xdd, 0x12, 0xa3, 0x3d, 0x50, 0x7d, 0xe0, 0x68, 0x9c, - 0x79, 0x34, 0x3b, 0xa8, 0x36, 0x05, 0xd9, 0xda, 0x7a, 0xa1, 0x58, 0xca, 0x1f, 0x51, 0xe7, 0x00, - 0x4a, 0xcf, 0x5c, 0x2f, 0x69, 0xe5, 0x52, 0xa5, 0x58, 0xca, 0xa7, 0xd0, 0x2b, 0xd3, 0x30, 0xe5, - 0x37, 0x82, 0xbe, 0x95, 0x2c, 0x31, 0xd5, 0x1a, 0x78, 0x3d, 0xd1, 0xfe, 0x46, 0xc5, 0x2b, 0xd9, - 0x53, 0xe1, 0xf2, 0xdd, 0x2e, 0x5e, 0x32, 0xec, 0xae, 0xa3, 0x59, 0x17, 0x97, 0x2c, 0xdb, 0x8f, - 0x9a, 0xec, 0x5d, 0xc3, 0x1f, 0xf2, 0xd9, 0xb5, 0x28, 0x5a, 0x98, 0x1c, 0x8a, 0xc2, 0x36, 0x5b, - 0x19, 0x0e, 0x12, 0x5c, 0xba, 0x0e, 0xbd, 0xf7, 0xbe, 0x8b, 0x35, 0xeb, 0x62, 0xb7, 0x60, 0xb6, - 0x8a, 0x56, 0x7b, 0x77, 0xc7, 0xec, 0x32, 0x9b, 0x20, 0xec, 0xb3, 0x2b, 0x1d, 0x72, 0xf9, 0xd8, - 0x1c, 0x40, 0xb1, 0xba, 0xba, 0x5a, 0x2a, 0xd6, 0xcb, 0xd5, 0x4a, 0xfe, 0x88, 0x2b, 0xad, 0x7a, - 0x61, 0x61, 0xd5, 0x95, 0xce, 0x4f, 0xc1, 0xa4, 0xd7, 0xa6, 0x59, 0x18, 0x94, 0x94, 0x17, 0x06, - 0x45, 0x2d, 0xc0, 0xa4, 0xd7, 0xca, 0xd9, 0x88, 0xf0, 0x98, 0xde, 0x63, 0xaf, 0x3b, 0xba, 0xed, - 0x10, 0x7f, 0x69, 0x8f, 0xc8, 0x82, 0xde, 0xc5, 0x9a, 0xff, 0xdb, 0x99, 0xc7, 0x33, 0x0e, 0x54, - 0x98, 0x2b, 0xac, 0xae, 0x36, 0xaa, 0x5a, 0xa3, 0x52, 0xad, 0xaf, 0x94, 0x2b, 0xcb, 0x74, 0x84, - 0x2c, 0x2f, 0x57, 0xaa, 0x5a, 0x89, 0x0e, 0x90, 0xb5, 0x7c, 0x8a, 0x5e, 0x7e, 0xb7, 0x30, 0x09, - 0xb9, 0x0e, 0x91, 0x2e, 0xfa, 0xb2, 0x12, 0xf3, 0xbc, 0xbb, 0x8f, 0x53, 0xc8, 0xf5, 0x5c, 0x82, - 0xcf, 0x79, 0xba, 0xcf, 0x99, 0xd0, 0x33, 0x30, 0x43, 0x6d, 0xb9, 0x2e, 0x59, 0xbe, 0x67, 0x37, - 0xdc, 0x0a, 0x69, 0xe8, 0xe3, 0xe9, 0x18, 0x87, 0xe0, 0xfb, 0x72, 0x14, 0xcf, 0xb8, 0xf8, 0xd3, - 0x61, 0x2e, 0xbb, 0x53, 0x61, 0xae, 0x5c, 0xa9, 0x97, 0xb4, 0x4a, 0x61, 0x95, 0x65, 0x51, 0xd4, - 0x53, 0x70, 0xbc, 0x52, 0x65, 0x31, 0xfd, 0x6a, 0xe4, 0x5a, 0xed, 0xb5, 0xf5, 0xaa, 0x56, 0xcf, - 0x67, 0xd5, 0x93, 0xa0, 0xd2, 0x67, 0xe1, 0x56, 0xfa, 0x9c, 0xfa, 0x58, 0xb8, 0x76, 0xb5, 0xbc, - 0x56, 0xae, 0x37, 0xaa, 0x4b, 0x0d, 0xad, 0x7a, 0xae, 0xe6, 0x22, 0xa8, 0x95, 0x56, 0x0b, 0xae, - 0x22, 0x71, 0x97, 0xe0, 0x4d, 0xa8, 0x97, 0xc1, 0x51, 0x72, 0xc1, 0x25, 0xb9, 0xd9, 0x9e, 0x96, - 0x37, 0xa9, 0x5e, 0x05, 0xa7, 0xca, 0x95, 0xda, 0xc6, 0xd2, 0x52, 0xb9, 0x58, 0x2e, 0x55, 0xea, - 0x8d, 0xf5, 0x92, 0xb6, 0x56, 0xae, 0xd5, 0xdc, 0x7f, 0xf3, 0x53, 0xe4, 0x8a, 0x31, 0xda, 0x67, - 0xa2, 0xf7, 0x2b, 0x30, 0x7b, 0x56, 0x6f, 0x1b, 0xee, 0x40, 0x41, 0xee, 0x1e, 0xec, 0x39, 0x2e, - 0xe2, 0x90, 0x3b, 0x0a, 0x99, 0xc3, 0x39, 0x79, 0x41, 0x3f, 0xa7, 0xc4, 0x3c, 0x2e, 0xc2, 0x80, - 0xa0, 0x25, 0xce, 0x0b, 0xa5, 0x85, 0x4c, 0x6e, 0x5e, 0x9f, 0x8e, 0x71, 0x5c, 0x44, 0x9e, 0x7c, - 0x3c, 0xf0, 0x5f, 0x35, 0x2a, 0xf0, 0xf3, 0x30, 0xb3, 0x51, 0x29, 0x6c, 0xd4, 0x57, 0xaa, 0x5a, - 0xf9, 0x27, 0x48, 0xb4, 0xf1, 0x59, 0x98, 0x5a, 0xaa, 0x6a, 0x0b, 0xe5, 0xc5, 0xc5, 0x52, 0x25, - 0x9f, 0x55, 0x2f, 0x87, 0xcb, 0x6a, 0x25, 0xed, 0x6c, 0xb9, 0x58, 0x6a, 0x6c, 0x54, 0x0a, 0x67, - 0x0b, 0xe5, 0x55, 0xd2, 0x47, 0xe4, 0x22, 0xee, 0x4d, 0x9c, 0x40, 0x3f, 0x93, 0x01, 0xa0, 0x55, - 0x77, 0x2d, 0x69, 0xfe, 0x76, 0xbd, 0x3f, 0x8b, 0x3b, 0x69, 0x08, 0xc8, 0x84, 0xb4, 0xdf, 0x32, - 0x4c, 0xda, 0xec, 0x03, 0x5b, 0x3e, 0x19, 0x44, 0x87, 0x3e, 0x7a, 0xd4, 0x34, 0xff, 0x77, 0xf4, - 0x81, 0x38, 0x73, 0x84, 0x50, 0xc6, 0xe2, 0x21, 0xb9, 0x34, 0x1a, 0x20, 0xd1, 0x8b, 0x52, 0x30, - 0x27, 0x56, 0xcc, 0xad, 0x04, 0x31, 0xa6, 0xe4, 0x2a, 0x21, 0xfe, 0xcc, 0x19, 0x59, 0x67, 0x9e, - 0xc8, 0x86, 0x53, 0xf0, 0x5a, 0x26, 0x3d, 0xf9, 0xed, 0x59, 0x2c, 0xf9, 0x94, 0xcb, 0xbc, 0x6b, - 0x74, 0xd0, 0xab, 0xd5, 0xeb, 0x0f, 0x38, 0x79, 0x05, 0x7d, 0x4d, 0x81, 0x59, 0xe1, 0xfa, 0x3e, - 0xf4, 0xfa, 0x94, 0xcc, 0xd5, 0x5a, 0xdc, 0xc5, 0x80, 0xa9, 0x83, 0x5e, 0x0c, 0x78, 0xe6, 0x66, - 0x98, 0x60, 0x69, 0x44, 0xbe, 0xd5, 0x8a, 0x6b, 0x0a, 0x1c, 0x85, 0xe9, 0xe5, 0x52, 0xbd, 0x51, - 0xab, 0x17, 0xb4, 0x7a, 0x69, 0x31, 0x9f, 0x72, 0x07, 0xbe, 0xd2, 0xda, 0x7a, 0xfd, 0xbe, 0x7c, - 0x3a, 0xbe, 0x07, 0x5e, 0x2f, 0x23, 0x63, 0xf6, 0xc0, 0x8b, 0x2a, 0x3e, 0xf9, 0xb9, 0xea, 0x67, - 0x15, 0xc8, 0x53, 0x0e, 0x4a, 0x0f, 0x74, 0xb0, 0x6d, 0x60, 0xb3, 0x89, 0xd1, 0x05, 0x99, 0x88, - 0x9f, 0xfb, 0x62, 0xe1, 0x91, 0xfe, 0x9c, 0xb3, 0x12, 0xe9, 0x4b, 0x8f, 0x81, 0x9d, 0xd9, 0x67, - 0x60, 0x7f, 0x26, 0xae, 0x0b, 0x5e, 0x2f, 0xbb, 0x23, 0x81, 0xec, 0x53, 0x71, 0x5c, 0xf0, 0x06, - 0x70, 0x30, 0x96, 0x40, 0xbe, 0x21, 0xe3, 0x6f, 0x5e, 0x41, 0x2f, 0x54, 0xe0, 0xe8, 0xa2, 0xee, - 0xe0, 0x85, 0x4b, 0x75, 0x63, 0x07, 0x77, 0x1d, 0x7d, 0xa7, 0x13, 0x72, 0x25, 0x5e, 0x6a, 0xdf, - 0x95, 0x78, 0x8e, 0xf7, 0x07, 0xe1, 0x54, 0xd1, 0x82, 0x04, 0xf4, 0x9e, 0xb8, 0x87, 0xf6, 0x7a, - 0x78, 0x18, 0x59, 0xb4, 0xdd, 0x78, 0x87, 0xf1, 0xa2, 0xb9, 0x18, 0xc3, 0x0d, 0xb5, 0x53, 0x90, - 0xa7, 0xac, 0x70, 0x5e, 0x66, 0xbf, 0xcc, 0x6e, 0x91, 0x6c, 0xc4, 0x08, 0xea, 0xe7, 0x85, 0x49, - 0x48, 0x8b, 0x61, 0x12, 0x84, 0x45, 0x4b, 0xa5, 0xd7, 0x33, 0x20, 0x6e, 0x67, 0xc8, 0xb9, 0x94, - 0x85, 0xc7, 0x51, 0x4d, 0xae, 0x33, 0x8c, 0x2c, 0x7e, 0x3c, 0x37, 0x9d, 0xb1, 0xbb, 0x0c, 0x4b, - 0xb2, 0xc8, 0x44, 0x5f, 0xe8, 0x18, 0xd7, 0xbf, 0x58, 0x70, 0xe9, 0x8b, 0xb8, 0xe5, 0x30, 0x39, - 0xff, 0xe2, 0x41, 0x1c, 0x24, 0x8f, 0xc2, 0x0f, 0xd2, 0x90, 0xa9, 0x59, 0xb6, 0x33, 0x2a, 0x0c, - 0xe2, 0xee, 0x89, 0x72, 0x12, 0xa8, 0x85, 0xcf, 0x39, 0x93, 0xdb, 0x13, 0x8d, 0x2e, 0x7f, 0x0c, - 0x71, 0x11, 0x8f, 0xc2, 0x1c, 0xe5, 0xc4, 0xbf, 0x34, 0xe4, 0xdf, 0xd2, 0xb4, 0xbf, 0xba, 0x57, - 0x16, 0x91, 0x33, 0x30, 0xc3, 0xed, 0x49, 0xfa, 0x17, 0x66, 0xf3, 0x69, 0xe8, 0xcd, 0x3c, 0x2e, - 0x8b, 0x22, 0x2e, 0xfd, 0x66, 0xdc, 0xfe, 0xbd, 0x1b, 0xa3, 0xea, 0x99, 0xe2, 0x84, 0x58, 0x8c, - 0x28, 0x3c, 0x79, 0x44, 0x1e, 0x54, 0x20, 0xc7, 0x7c, 0xc2, 0x46, 0x8a, 0x40, 0xdc, 0x96, 0xe1, - 0x0b, 0x41, 0xce, 0x77, 0x4c, 0x19, 0x75, 0xcb, 0x88, 0x2e, 0x3f, 0x79, 0x1c, 0xfe, 0x9d, 0x39, - 0x3b, 0x16, 0xf6, 0x74, 0xa3, 0xad, 0x9f, 0x6f, 0xc7, 0x08, 0x6d, 0xfc, 0xf1, 0x98, 0xc7, 0xbb, - 0xfc, 0xaa, 0x0a, 0xe5, 0x85, 0x48, 0xfc, 0xc7, 0x61, 0xca, 0xf6, 0x97, 0x24, 0xbd, 0xd3, 0xef, - 0x3d, 0x8e, 0xa6, 0xec, 0xbb, 0x16, 0xe4, 0x8c, 0x75, 0x96, 0x4b, 0x8a, 0x9f, 0xb1, 0x9c, 0x3d, - 0x99, 0x2e, 0xb4, 0x5a, 0x4b, 0x58, 0x77, 0x76, 0x6d, 0xdc, 0x8a, 0x35, 0x44, 0x88, 0x22, 0x9a, - 0xe2, 0x25, 0x21, 0x04, 0x17, 0x5c, 0x15, 0xd1, 0x79, 0xf2, 0x80, 0xde, 0xc0, 0xe3, 0x65, 0x24, - 0x5d, 0xd2, 0xdb, 0x7d, 0x48, 0xaa, 0x02, 0x24, 0x4f, 0x1b, 0x8e, 0x89, 0xe4, 0x01, 0xf9, 0x55, - 0x05, 0xe6, 0xa8, 0x9d, 0x30, 0x6a, 0x4c, 0x7e, 0x27, 0xa6, 0x0f, 0x09, 0x77, 0x2d, 0x13, 0xcf, - 0xce, 0x48, 0x60, 0x89, 0xe3, 0x71, 0x22, 0xc7, 0x47, 0xf2, 0xc8, 0x7c, 0x3e, 0x07, 0xc0, 0xf9, - 0x05, 0x7e, 0x3c, 0x17, 0x04, 0xfa, 0x43, 0xef, 0x64, 0xf3, 0x8f, 0x9a, 0x10, 0x75, 0x9a, 0xf3, - 0xf9, 0xf3, 0x37, 0xa4, 0xc4, 0x44, 0xa9, 0x51, 0xe5, 0x4f, 0x63, 0xda, 0xbc, 0xcc, 0x2b, 0x6f, - 0xe0, 0xe0, 0x3e, 0x64, 0x2f, 0xf7, 0x89, 0x18, 0xc6, 0xef, 0x20, 0x56, 0xe2, 0xa1, 0xb6, 0x3a, - 0xc4, 0xcc, 0xfe, 0x14, 0x1c, 0xd7, 0x4a, 0x85, 0xc5, 0x6a, 0x65, 0xf5, 0x3e, 0xfe, 0x8e, 0x9e, - 0xbc, 0xc2, 0x4f, 0x4e, 0x12, 0x81, 0xed, 0x0d, 0x31, 0xfb, 0x40, 0x51, 0x56, 0x51, 0xb3, 0x15, - 0x6e, 0x71, 0x65, 0x70, 0xaf, 0x26, 0x41, 0xf6, 0x30, 0x51, 0x78, 0x10, 0xb8, 0x66, 0xf4, 0x02, - 0x05, 0xf2, 0xc1, 0x35, 0xf1, 0xec, 0x32, 0xb6, 0xaa, 0xe8, 0x36, 0xd8, 0xa1, 0xfb, 0x4f, 0x81, - 0xdb, 0xa0, 0x97, 0xa0, 0x5e, 0x0f, 0x73, 0xcd, 0x6d, 0xdc, 0xbc, 0x50, 0x36, 0xbd, 0x7d, 0x75, - 0xba, 0x09, 0xdb, 0x93, 0x2a, 0x02, 0x73, 0xaf, 0x08, 0x8c, 0x38, 0x89, 0x16, 0x06, 0x69, 0x9e, - 0xa9, 0x10, 0x5c, 0x7e, 0xdf, 0xc7, 0xa5, 0x22, 0xe0, 0x72, 0xfb, 0x50, 0x54, 0xe3, 0xc1, 0x52, - 0x19, 0x02, 0x16, 0x04, 0x27, 0xab, 0xeb, 0xf5, 0x72, 0xb5, 0xd2, 0xd8, 0xa8, 0x95, 0x16, 0x1b, - 0x0b, 0x1e, 0x38, 0xb5, 0xbc, 0x82, 0xbe, 0x95, 0x86, 0x09, 0xca, 0x56, 0xb7, 0xe7, 0x5a, 0xf7, - 0x68, 0x7f, 0x49, 0xf4, 0x0e, 0xe9, 0xe8, 0x07, 0xbe, 0x20, 0x58, 0x39, 0x21, 0xfd, 0xd4, 0x53, - 0x61, 0x82, 0x82, 0xec, 0xad, 0x68, 0x9d, 0x0e, 0xe9, 0xa5, 0x18, 0x19, 0xcd, 0xcb, 0x2e, 0x19, - 0x09, 0x61, 0x00, 0x1b, 0xc9, 0x8f, 0x2c, 0xcf, 0xce, 0x50, 0x33, 0xf8, 0x9c, 0xe1, 0x6c, 0x13, - 0x77, 0x4a, 0xf4, 0x0c, 0x99, 0xe5, 0xc5, 0x9b, 0x20, 0xbb, 0xe7, 0xe6, 0x1e, 0xe0, 0x9a, 0x4a, - 0x33, 0xa1, 0x57, 0x49, 0x07, 0xde, 0x14, 0xf4, 0xd3, 0xe7, 0x29, 0x04, 0x9c, 0x35, 0xc8, 0xb4, - 0x8d, 0xae, 0xc3, 0xc6, 0x8f, 0xdb, 0x62, 0x11, 0xf2, 0x1e, 0xca, 0x0e, 0xde, 0xd1, 0x08, 0x19, - 0x74, 0x0f, 0xcc, 0xf0, 0xa9, 0x12, 0xee, 0xb9, 0xa7, 0x60, 0x82, 0x1d, 0x1b, 0x63, 0x4b, 0xac, - 0xde, 0xab, 0xe4, 0xb2, 0xa6, 0x54, 0x6d, 0x93, 0xd7, 0x81, 0xff, 0xe7, 0x28, 0x4c, 0xac, 0x18, - 0x5d, 0xc7, 0xb2, 0x2f, 0xa1, 0x87, 0x53, 0x30, 0x71, 0x16, 0xdb, 0x5d, 0xc3, 0x32, 0xf7, 0xb9, - 0x1a, 0x5c, 0x03, 0xd3, 0x1d, 0x1b, 0xef, 0x19, 0xd6, 0x6e, 0x37, 0x58, 0x9c, 0xe1, 0x93, 0x54, - 0x04, 0x93, 0xfa, 0xae, 0xb3, 0x6d, 0xd9, 0x41, 0xb4, 0x09, 0xef, 0x5d, 0x3d, 0x0d, 0x40, 0x9f, - 0x2b, 0xfa, 0x0e, 0x66, 0x0e, 0x14, 0x5c, 0x8a, 0xaa, 0x42, 0xc6, 0x31, 0x76, 0x30, 0x0b, 0x3f, - 0x4b, 0x9e, 0x5d, 0x01, 0x93, 0x50, 0x6e, 0x2c, 0x64, 0x9e, 0xa2, 0x79, 0xaf, 0xe8, 0x8b, 0x0a, - 0x4c, 0x2f, 0x63, 0x87, 0xb1, 0xda, 0x45, 0x2f, 0x4e, 0x49, 0xdd, 0xf8, 0xe0, 0x8e, 0xb1, 0x6d, - 0xbd, 0xeb, 0xfd, 0xe7, 0x2f, 0xc1, 0x8a, 0x89, 0x41, 0x2c, 0x5c, 0x85, 0x0f, 0x84, 0x4d, 0x02, - 0xa3, 0x39, 0x65, 0xea, 0x77, 0xc9, 0x32, 0xb3, 0x4d, 0x90, 0xfd, 0x1f, 0xd0, 0x7b, 0xd3, 0xb2, - 0x87, 0x8a, 0x99, 0xec, 0xe7, 0xb9, 0xfa, 0x84, 0x76, 0x47, 0x93, 0x7b, 0x2c, 0xc7, 0xbe, 0x18, - 0xe7, 0x3c, 0x25, 0x46, 0x46, 0xf3, 0x73, 0x4b, 0x1e, 0x47, 0x1e, 0xcc, 0x49, 0xf2, 0xda, 0xf8, - 0x3d, 0x05, 0xa6, 0x6b, 0xdb, 0xd6, 0x45, 0x4f, 0x8e, 0x3f, 0x25, 0x07, 0xec, 0x55, 0x30, 0xb5, - 0xd7, 0x03, 0x6a, 0x90, 0x10, 0x7e, 0x07, 0x3b, 0x7a, 0xbe, 0x12, 0x17, 0x26, 0x8e, 0xb9, 0x91, - 0xdf, 0x90, 0xae, 0x3e, 0x19, 0x26, 0x18, 0xd7, 0x6c, 0xc9, 0x25, 0x1a, 0x60, 0x2f, 0x33, 0x5f, - 0xc1, 0x8c, 0x58, 0xc1, 0x78, 0xc8, 0x87, 0x57, 0x2e, 0x79, 0xe4, 0xff, 0x28, 0x4d, 0x82, 0x51, - 0x78, 0xc0, 0x17, 0x47, 0x00, 0x3c, 0xfa, 0x7e, 0x4a, 0x76, 0x61, 0xd2, 0x97, 0x80, 0xcf, 0xc1, - 0x81, 0x6e, 0x73, 0x19, 0x48, 0x2e, 0x79, 0x79, 0xbe, 0x32, 0x03, 0x33, 0x8b, 0xc6, 0xe6, 0xa6, - 0xdf, 0x49, 0xbe, 0x44, 0xb2, 0x93, 0x0c, 0x77, 0x07, 0x70, 0xed, 0xdc, 0x5d, 0xdb, 0xc6, 0xa6, - 0x57, 0x29, 0xd6, 0x9c, 0x7a, 0x52, 0xd5, 0x1b, 0xe0, 0xa8, 0x37, 0x2e, 0xf0, 0x1d, 0xe5, 0x94, - 0xd6, 0x9b, 0x8c, 0xbe, 0x2b, 0xbd, 0xab, 0xe5, 0x49, 0x94, 0xaf, 0x52, 0x48, 0x03, 0xbc, 0x03, - 0x66, 0xb7, 0x69, 0x6e, 0x32, 0xf5, 0xf7, 0x3a, 0xcb, 0x93, 0x3d, 0xc1, 0x7e, 0xd7, 0x70, 0xb7, - 0xab, 0x6f, 0x61, 0x4d, 0xcc, 0xdc, 0xd3, 0x7c, 0x95, 0x38, 0x57, 0x57, 0xc9, 0x6d, 0x90, 0x49, - 0xd4, 0x64, 0x0c, 0xda, 0x71, 0x06, 0x32, 0x4b, 0x46, 0x1b, 0xa3, 0x9f, 0x4f, 0xc3, 0x94, 0x86, - 0x9b, 0x96, 0xd9, 0x74, 0xdf, 0x38, 0xe7, 0xa0, 0x7f, 0x4c, 0xc9, 0x5e, 0xd9, 0xe8, 0xd2, 0x99, - 0xf7, 0x69, 0x84, 0xb4, 0x1b, 0xb9, 0xab, 0x19, 0x23, 0x49, 0x8d, 0xe1, 0x82, 0x0d, 0x77, 0xea, - 0xb1, 0xb9, 0xd9, 0xb6, 0x74, 0x61, 0xf1, 0xab, 0xd7, 0x14, 0xba, 0x11, 0xf2, 0xde, 0x19, 0x0f, - 0xcb, 0x59, 0x37, 0x4c, 0xd3, 0x3f, 0x44, 0xbc, 0x2f, 0x5d, 0xdc, 0xb7, 0x8d, 0x8c, 0xc3, 0x42, - 0xea, 0xce, 0x4a, 0x0f, 0xd1, 0xec, 0xeb, 0x61, 0xee, 0xfc, 0x25, 0x07, 0x77, 0x59, 0x2e, 0x56, - 0x6c, 0x46, 0xeb, 0x49, 0xe5, 0xa2, 0x28, 0x47, 0xc5, 0x6b, 0x89, 0x28, 0x30, 0x9e, 0xa8, 0x57, - 0x86, 0x98, 0x01, 0x1e, 0x87, 0x7c, 0xa5, 0xba, 0x58, 0x22, 0xbe, 0x6a, 0x9e, 0xf7, 0xcf, 0x16, - 0x7a, 0xa9, 0x02, 0x33, 0xc4, 0x99, 0xc4, 0x43, 0xe1, 0x5a, 0x89, 0xf9, 0x08, 0xfa, 0x8a, 0xb4, - 0x1f, 0x1b, 0xa9, 0x32, 0x5f, 0x40, 0xb8, 0xa0, 0x37, 0x8d, 0x76, 0xaf, 0xa0, 0xb3, 0x5a, 0x4f, - 0x6a, 0x1f, 0x40, 0x94, 0xbe, 0x80, 0xfc, 0x96, 0x94, 0x33, 0xdb, 0x20, 0xee, 0x0e, 0x0b, 0x95, - 0xdf, 0x56, 0x60, 0xda, 0x9d, 0xa4, 0x78, 0xa0, 0x54, 0x05, 0x50, 0x2c, 0xb3, 0x7d, 0x29, 0x58, - 0x16, 0xf1, 0x5e, 0x63, 0x35, 0x92, 0xbf, 0x90, 0x9e, 0xb9, 0x13, 0x11, 0x71, 0xbc, 0x8c, 0x09, - 0xbf, 0x0f, 0x4a, 0xcd, 0xe7, 0x07, 0x30, 0x77, 0x58, 0xf0, 0x7d, 0x23, 0x0b, 0xb9, 0x8d, 0x0e, - 0x41, 0xee, 0x55, 0x8a, 0x4c, 0x44, 0xf2, 0x7d, 0x07, 0x19, 0x5c, 0x33, 0xab, 0x6d, 0x35, 0xf5, - 0xf6, 0x7a, 0x70, 0x22, 0x2c, 0x48, 0x50, 0x6f, 0x67, 0xbe, 0x8d, 0xf4, 0x38, 0xdd, 0xf5, 0x91, - 0xc1, 0xba, 0x89, 0x8c, 0xb8, 0x43, 0x23, 0x37, 0xc1, 0xb1, 0x96, 0xd1, 0xd5, 0xcf, 0xb7, 0x71, - 0xc9, 0x6c, 0xda, 0x97, 0xa8, 0x38, 0xd8, 0xb4, 0x6a, 0xdf, 0x07, 0xf5, 0x4e, 0xc8, 0x76, 0x9d, - 0x4b, 0x6d, 0x3a, 0x4f, 0xe4, 0xcf, 0x98, 0x84, 0x16, 0x55, 0x73, 0xb3, 0x6b, 0xf4, 0x2f, 0xde, - 0x45, 0x69, 0x42, 0xf2, 0xbe, 0xe6, 0x27, 0x42, 0xce, 0xb2, 0x8d, 0x2d, 0x83, 0xde, 0xbf, 0x33, - 0xb7, 0x2f, 0x26, 0x1d, 0x35, 0x05, 0xaa, 0x24, 0x8b, 0xc6, 0xb2, 0xaa, 0x4f, 0x86, 0x29, 0x63, - 0x47, 0xdf, 0xc2, 0xf7, 0x1a, 0x26, 0x3d, 0xb1, 0x37, 0x77, 0xeb, 0xa9, 0x7d, 0xc7, 0x67, 0xd8, - 0x77, 0x2d, 0xc8, 0x8a, 0x3e, 0x98, 0x96, 0x0d, 0x9c, 0x43, 0xea, 0x46, 0x41, 0x1d, 0xcb, 0xbd, - 0xd5, 0xe8, 0xb5, 0x52, 0x21, 0x6d, 0xc2, 0xd9, 0x4a, 0x7e, 0xf0, 0xfe, 0x42, 0x1a, 0x26, 0x17, - 0xad, 0x8b, 0x26, 0x51, 0xf4, 0xdb, 0xe4, 0x6c, 0xdd, 0x3e, 0x87, 0x1c, 0xc5, 0x6b, 0x21, 0x23, - 0x4f, 0x34, 0x90, 0xda, 0x7a, 0x45, 0x86, 0xc0, 0x10, 0xd9, 0x72, 0x24, 0x2f, 0xeb, 0x8b, 0x2a, - 0x27, 0x79, 0xb9, 0xfe, 0xb1, 0x02, 0x99, 0x45, 0xdb, 0xea, 0xa0, 0xb7, 0xa7, 0x62, 0xb8, 0x2c, - 0xb4, 0x6c, 0xab, 0x53, 0x27, 0xb7, 0x6d, 0x05, 0xc7, 0x38, 0xf8, 0x34, 0xf5, 0x36, 0x98, 0xec, - 0x58, 0x5d, 0xc3, 0xf1, 0xa6, 0x11, 0x73, 0xb7, 0x3e, 0xaa, 0x6f, 0x6b, 0x5e, 0x67, 0x99, 0x34, - 0x3f, 0xbb, 0xdb, 0x6b, 0x13, 0x11, 0xba, 0x72, 0x71, 0xc5, 0xe8, 0xdd, 0x38, 0xd6, 0x93, 0x8a, - 0x5e, 0xc6, 0x23, 0xf9, 0x34, 0x11, 0xc9, 0xc7, 0xf4, 0x91, 0xb0, 0x6d, 0x75, 0x46, 0xb2, 0xc9, - 0xf8, 0x6a, 0x1f, 0xd5, 0xa7, 0x0b, 0xa8, 0xde, 0x28, 0x55, 0x66, 0xf2, 0x88, 0x7e, 0x30, 0x03, - 0x40, 0xcc, 0x8c, 0x0d, 0x77, 0x02, 0x24, 0x67, 0x63, 0x3d, 0x37, 0xc3, 0xc9, 0xb2, 0x20, 0xca, - 0xf2, 0x71, 0x21, 0x56, 0x0c, 0x21, 0x1f, 0x22, 0xd1, 0x02, 0x64, 0x77, 0xdd, 0xcf, 0x4c, 0xa2, - 0x92, 0x24, 0xc8, 0xab, 0x46, 0xff, 0x44, 0x7f, 0x94, 0x82, 0x2c, 0x49, 0x50, 0x4f, 0x03, 0x90, - 0x81, 0x9d, 0x1e, 0x08, 0x4a, 0x91, 0x21, 0x9c, 0x4b, 0x21, 0xda, 0x6a, 0xb4, 0xd8, 0x67, 0x6a, - 0x32, 0x07, 0x09, 0xee, 0xdf, 0x64, 0xb8, 0x27, 0xb4, 0x98, 0x01, 0xc0, 0xa5, 0xb8, 0x7f, 0x93, - 0xb7, 0x55, 0xbc, 0x49, 0x03, 0x21, 0x67, 0xb4, 0x20, 0xc1, 0xff, 0x7b, 0xd5, 0xbf, 0x3e, 0xcb, - 0xfb, 0x9b, 0xa4, 0xb8, 0x93, 0x61, 0xa2, 0x96, 0x0b, 0x41, 0x11, 0x39, 0x92, 0xa9, 0x37, 0x19, - 0xbd, 0xc1, 0x57, 0x9b, 0x45, 0x41, 0x6d, 0x6e, 0x89, 0x21, 0xde, 0xe4, 0x95, 0xe7, 0x6b, 0x59, - 0x98, 0xaa, 0x58, 0x2d, 0xa6, 0x3b, 0xdc, 0x84, 0xf1, 0x53, 0xd9, 0x58, 0x13, 0x46, 0x9f, 0x46, - 0x88, 0x82, 0xdc, 0x2d, 0x2a, 0x88, 0x1c, 0x05, 0x5e, 0x3f, 0xd4, 0x05, 0xc8, 0x11, 0xed, 0xdd, - 0x7f, 0x2f, 0x53, 0x14, 0x09, 0x22, 0x5a, 0x8d, 0xfd, 0xf9, 0x1f, 0x4e, 0xc7, 0xfe, 0x2b, 0x64, - 0x49, 0x05, 0x23, 0x76, 0x77, 0xc4, 0x8a, 0xa6, 0xa3, 0x2b, 0xaa, 0x44, 0x57, 0x34, 0xd3, 0x5b, - 0xd1, 0x38, 0xeb, 0x00, 0x61, 0x1a, 0x92, 0xbc, 0x8e, 0xff, 0xfd, 0x04, 0x40, 0x45, 0xdf, 0x33, - 0xb6, 0xe8, 0xee, 0xf0, 0x17, 0xbd, 0xf9, 0x0f, 0xdb, 0xc7, 0xfd, 0x6f, 0xdc, 0x40, 0x78, 0x1b, - 0x4c, 0xb0, 0x71, 0x8f, 0x55, 0xe4, 0x6a, 0xa1, 0x22, 0x01, 0x15, 0x6a, 0x96, 0x3e, 0xe0, 0x68, - 0x5e, 0x7e, 0xe1, 0x0a, 0xd9, 0x74, 0xcf, 0x15, 0xb2, 0xfd, 0xf7, 0x20, 0x42, 0x2e, 0x96, 0x45, - 0xef, 0x93, 0xf6, 0xe8, 0xe7, 0xf8, 0xe1, 0x6a, 0x14, 0xd2, 0x04, 0x9f, 0x08, 0x13, 0x96, 0xbf, - 0xa1, 0xad, 0x84, 0xae, 0x83, 0x95, 0xcd, 0x4d, 0x4b, 0xf3, 0x72, 0x4a, 0x6e, 0x7e, 0x49, 0xf1, - 0x31, 0x96, 0x43, 0x33, 0x27, 0x97, 0xbd, 0xa0, 0x52, 0x6e, 0x3d, 0xce, 0x19, 0xce, 0xf6, 0xaa, - 0x61, 0x5e, 0xe8, 0xa2, 0xff, 0x2c, 0x67, 0x41, 0x72, 0xf8, 0xa7, 0xe3, 0xe1, 0x2f, 0xc6, 0xec, - 0xa8, 0x89, 0xa8, 0xdd, 0x19, 0x46, 0xa5, 0x3f, 0xb7, 0x21, 0x00, 0xde, 0x0e, 0x39, 0xca, 0x28, - 0xeb, 0x44, 0xcf, 0x84, 0xe2, 0xe7, 0x53, 0xd2, 0xd8, 0x1f, 0xe8, 0xbd, 0x3e, 0x8e, 0x67, 0x05, - 0x1c, 0x17, 0x0e, 0xc4, 0x59, 0xe2, 0x90, 0x9e, 0x79, 0x02, 0x4c, 0x30, 0x49, 0xab, 0x73, 0x7c, - 0x2b, 0xce, 0x1f, 0x51, 0x01, 0x72, 0x6b, 0xd6, 0x1e, 0xae, 0x5b, 0xf9, 0x94, 0xfb, 0xec, 0xf2, - 0x57, 0xb7, 0xf2, 0x69, 0xf4, 0x9a, 0x49, 0x98, 0xf4, 0xa3, 0xf9, 0x7c, 0x21, 0x0d, 0xf9, 0xa2, - 0x8d, 0x75, 0x07, 0x2f, 0xd9, 0xd6, 0x0e, 0xad, 0x91, 0xbc, 0x77, 0xe8, 0xaf, 0x4a, 0xbb, 0x78, - 0xf8, 0x51, 0x76, 0x7a, 0x0b, 0x0b, 0xc1, 0x92, 0x2e, 0x42, 0xa6, 0xbd, 0x45, 0x48, 0xf4, 0x36, - 0x29, 0x97, 0x0f, 0xd9, 0x52, 0x92, 0x6f, 0x6a, 0x9f, 0x49, 0x43, 0xb6, 0xd8, 0xb6, 0x4c, 0xcc, - 0x1f, 0x61, 0x1a, 0x78, 0x56, 0xa6, 0xff, 0x4e, 0x04, 0x7a, 0x76, 0x5a, 0xd6, 0xd6, 0x08, 0x04, - 0xe0, 0x96, 0x2d, 0x29, 0x5b, 0xb9, 0x41, 0x2a, 0x92, 0x74, 0xf2, 0x02, 0xfd, 0x56, 0x1a, 0xa6, - 0x68, 0x5c, 0x9c, 0x42, 0xbb, 0x8d, 0x1e, 0x15, 0x08, 0xb5, 0x4f, 0x44, 0x24, 0xf4, 0x5b, 0xd2, - 0x2e, 0xfa, 0x7e, 0xad, 0x7c, 0xda, 0x31, 0x02, 0x04, 0xc5, 0xf3, 0x18, 0x97, 0xdb, 0x4b, 0x1b, - 0xc8, 0x50, 0xf2, 0xa2, 0xfe, 0xb3, 0xb4, 0x6b, 0x00, 0x98, 0x17, 0xd6, 0x6d, 0xbc, 0x67, 0xe0, - 0x8b, 0xe8, 0xca, 0x40, 0xd8, 0xfb, 0x83, 0x7e, 0xbc, 0x45, 0x7a, 0x11, 0x87, 0x23, 0x19, 0xba, - 0x95, 0x35, 0xdd, 0x0e, 0x32, 0xb1, 0x5e, 0xbc, 0x37, 0x12, 0x0b, 0x47, 0x46, 0xe3, 0xb3, 0x4b, - 0xae, 0xd9, 0x84, 0x73, 0x91, 0xbc, 0x60, 0x3f, 0x32, 0x01, 0x93, 0x1b, 0x66, 0xb7, 0xd3, 0xd6, - 0xbb, 0xdb, 0xe8, 0xdf, 0x14, 0xc8, 0xd1, 0xdb, 0xc0, 0xd0, 0x8f, 0x0b, 0xb1, 0x05, 0x7e, 0x7a, - 0x17, 0xdb, 0x9e, 0x0b, 0x0e, 0x7d, 0xe9, 0x7f, 0x59, 0x39, 0xfa, 0xa0, 0x22, 0x3b, 0x49, 0xf5, - 0x0a, 0xe5, 0xae, 0x85, 0xef, 0x7f, 0x9c, 0xbd, 0x63, 0x34, 0x9d, 0x5d, 0xdb, 0xbf, 0xfa, 0xfa, - 0xf1, 0x72, 0x54, 0xd6, 0xe9, 0x5f, 0x9a, 0xff, 0x3b, 0xd2, 0x61, 0x82, 0x25, 0xee, 0xdb, 0x4e, - 0xda, 0x7f, 0xfe, 0xf6, 0x24, 0xe4, 0x74, 0xdb, 0x31, 0xba, 0x0e, 0xdb, 0x60, 0x65, 0x6f, 0x6e, - 0x77, 0x49, 0x9f, 0x36, 0xec, 0xb6, 0x17, 0x85, 0xc4, 0x4f, 0x40, 0xbf, 0x2d, 0x35, 0x7f, 0x8c, - 0xae, 0x79, 0x3c, 0xc8, 0xef, 0x1d, 0x62, 0x8d, 0xfa, 0x72, 0xb8, 0x4c, 0x2b, 0xd4, 0x4b, 0x0d, - 0x1a, 0xb4, 0xc2, 0x8f, 0x4f, 0xd1, 0x42, 0xef, 0x51, 0xb8, 0xf5, 0xbb, 0x4b, 0xc2, 0x18, 0xc1, - 0xa4, 0x18, 0x8c, 0x11, 0x7e, 0x42, 0xc4, 0x6e, 0xb5, 0xb0, 0x08, 0xab, 0xc8, 0x2f, 0xc2, 0xfe, - 0x86, 0xf4, 0x6e, 0x92, 0x2f, 0xca, 0x01, 0x6b, 0x80, 0x51, 0xb7, 0x05, 0x7d, 0x48, 0x6a, 0x67, - 0x68, 0x50, 0x49, 0x87, 0x08, 0xdb, 0x9b, 0x27, 0x60, 0x62, 0x59, 0x6f, 0xb7, 0xb1, 0x7d, 0xc9, - 0x1d, 0x92, 0xf2, 0x1e, 0x87, 0x6b, 0xba, 0x69, 0x6c, 0xe2, 0xae, 0x13, 0xdd, 0x59, 0xbe, 0x4f, - 0x3a, 0x12, 0x2d, 0x2b, 0x63, 0xbe, 0x97, 0x7e, 0x88, 0xcc, 0x6f, 0x86, 0x8c, 0x61, 0x6e, 0x5a, - 0xac, 0xcb, 0xec, 0x5d, 0xb5, 0xf7, 0x7e, 0x26, 0x53, 0x17, 0x92, 0x51, 0x32, 0x18, 0xad, 0x24, - 0x17, 0xc9, 0xf7, 0x9c, 0xbf, 0x99, 0x81, 0x59, 0x8f, 0x89, 0xb2, 0xd9, 0xc2, 0x0f, 0xf0, 0x4b, - 0x31, 0x2f, 0xcd, 0xc8, 0x1e, 0x07, 0xeb, 0xad, 0x0f, 0x21, 0x15, 0x22, 0xd2, 0x3a, 0x40, 0x53, - 0x77, 0xf0, 0x96, 0x65, 0x1b, 0x7e, 0x7f, 0xf8, 0xa4, 0x38, 0xd4, 0x8a, 0xf4, 0xef, 0x4b, 0x1a, - 0x47, 0x47, 0xbd, 0x13, 0xa6, 0xb1, 0x7f, 0xfe, 0xde, 0x5b, 0xaa, 0x89, 0xc4, 0x8b, 0xcf, 0x8f, - 0xfe, 0x4c, 0xea, 0xd4, 0x99, 0x4c, 0x35, 0xe3, 0x61, 0xd6, 0x18, 0xae, 0x0d, 0x6d, 0x54, 0xd6, - 0x0a, 0x5a, 0x6d, 0xa5, 0xb0, 0xba, 0x5a, 0xae, 0x2c, 0xfb, 0x81, 0x5f, 0x54, 0x98, 0x5b, 0xac, - 0x9e, 0xab, 0x70, 0x91, 0x79, 0x32, 0x68, 0x1d, 0x26, 0x3d, 0x79, 0xf5, 0xf3, 0xc5, 0xe4, 0x65, - 0xc6, 0x7c, 0x31, 0xb9, 0x24, 0xd7, 0x38, 0x33, 0x9a, 0xbe, 0x83, 0x0e, 0x79, 0x46, 0x7f, 0xa0, - 0x43, 0x96, 0xac, 0xa9, 0xa3, 0x77, 0x91, 0x6d, 0xc0, 0x4e, 0x5b, 0x6f, 0x62, 0xb4, 0x13, 0xc3, - 0x1a, 0xf7, 0xae, 0x46, 0x48, 0xef, 0xbb, 0x1a, 0x81, 0x3c, 0x32, 0xab, 0xef, 0x78, 0xbf, 0x75, - 0x7c, 0x8d, 0x66, 0x11, 0x0f, 0x68, 0x45, 0xee, 0xae, 0xd0, 0xe5, 0x7f, 0xc6, 0x66, 0x88, 0x4a, - 0x86, 0xf3, 0x14, 0xcf, 0x12, 0x95, 0xdb, 0x87, 0x89, 0xe2, 0x68, 0x0c, 0xd7, 0x77, 0x67, 0x20, - 0x5b, 0xeb, 0xb4, 0x0d, 0x07, 0xbd, 0x22, 0x3d, 0x12, 0xcc, 0xe8, 0x75, 0x16, 0xca, 0xc0, 0xeb, - 0x2c, 0x82, 0x5d, 0xd7, 0x8c, 0xc4, 0xae, 0x6b, 0x1d, 0x3f, 0xe0, 0x88, 0xbb, 0xae, 0xb7, 0xb1, - 0xe0, 0x6d, 0x74, 0xcf, 0xf6, 0x31, 0x7d, 0x44, 0x4a, 0xaa, 0xd5, 0x27, 0x2a, 0xe0, 0x99, 0x27, - 0xb0, 0xe0, 0x64, 0x00, 0xb9, 0x85, 0x6a, 0xbd, 0x5e, 0x5d, 0xcb, 0x1f, 0x21, 0x51, 0x6d, 0xaa, - 0xeb, 0x34, 0x54, 0x4c, 0xb9, 0x52, 0x29, 0x69, 0xf9, 0x34, 0x09, 0x97, 0x56, 0xae, 0xaf, 0x96, - 0xf2, 0x8a, 0x18, 0xdb, 0x3c, 0xd2, 0xfc, 0x16, 0xcb, 0x4e, 0x52, 0xbd, 0xe4, 0x0c, 0xf1, 0x70, - 0x7e, 0x92, 0x57, 0xae, 0x5f, 0x51, 0x20, 0xbb, 0x86, 0xed, 0x2d, 0x8c, 0x7e, 0x3a, 0xc6, 0x26, - 0xdf, 0xa6, 0x61, 0x77, 0x69, 0x70, 0xb9, 0x60, 0x93, 0x8f, 0x4f, 0x53, 0xaf, 0x83, 0xd9, 0x2e, - 0x6e, 0x5a, 0x66, 0xcb, 0xcb, 0x44, 0xfb, 0x23, 0x31, 0x51, 0xbc, 0x57, 0x5e, 0x02, 0x32, 0xc2, - 0xe8, 0x48, 0x76, 0xea, 0xe2, 0x00, 0xd3, 0xaf, 0xd4, 0xe4, 0x81, 0xf9, 0xae, 0xe2, 0xfe, 0xd4, - 0xb9, 0x84, 0x5e, 0x2e, 0xbd, 0xfb, 0x7a, 0x13, 0xe4, 0x88, 0x9a, 0x7a, 0x63, 0x74, 0xff, 0xfe, - 0x98, 0xe5, 0x51, 0x17, 0xe0, 0x58, 0x17, 0xb7, 0x71, 0xd3, 0xc1, 0x2d, 0xb7, 0xe9, 0x6a, 0x03, - 0x3b, 0x85, 0xfd, 0xd9, 0xd1, 0x9f, 0xf0, 0x00, 0xde, 0x21, 0x02, 0x78, 0x7d, 0x1f, 0x51, 0xba, - 0x15, 0x0a, 0xb7, 0x95, 0xdd, 0x6a, 0xd4, 0xda, 0x96, 0xbf, 0x28, 0xee, 0xbd, 0xbb, 0xdf, 0xb6, - 0x9d, 0x9d, 0x36, 0xf9, 0xc6, 0x0e, 0x18, 0x78, 0xef, 0xea, 0x3c, 0x4c, 0xe8, 0xe6, 0x25, 0xf2, - 0x29, 0x13, 0x51, 0x6b, 0x2f, 0x13, 0x7a, 0x8d, 0x8f, 0xfc, 0x5d, 0x02, 0xf2, 0x8f, 0x93, 0x63, - 0x37, 0x79, 0xe0, 0x7f, 0x6e, 0x02, 0xb2, 0xeb, 0x7a, 0xd7, 0xc1, 0xe8, 0xff, 0x56, 0x64, 0x91, - 0xbf, 0x1e, 0xe6, 0x36, 0xad, 0xe6, 0x6e, 0x17, 0xb7, 0xc4, 0x46, 0xd9, 0x93, 0x3a, 0x0a, 0xcc, - 0xd5, 0x1b, 0x21, 0xef, 0x25, 0x32, 0xb2, 0xde, 0x36, 0xfc, 0xbe, 0x74, 0x12, 0x29, 0xbb, 0xbb, - 0xae, 0xdb, 0x4e, 0x75, 0x93, 0xa4, 0xf9, 0x91, 0xb2, 0xf9, 0x44, 0x01, 0xfa, 0x5c, 0x04, 0xf4, - 0x13, 0xe1, 0xd0, 0x4f, 0x4a, 0x40, 0xaf, 0x16, 0x60, 0x72, 0xd3, 0x68, 0x63, 0xf2, 0xc3, 0x14, - 0xf9, 0xa1, 0xdf, 0x98, 0x44, 0x64, 0xef, 0x8f, 0x49, 0x4b, 0x46, 0x1b, 0x6b, 0xfe, 0x6f, 0xde, - 0x44, 0x06, 0x82, 0x89, 0xcc, 0x2a, 0xf5, 0xa7, 0x75, 0x0d, 0x2f, 0x53, 0xdf, 0xc1, 0xde, 0xe2, - 0x9b, 0xc9, 0x0e, 0xb7, 0xb4, 0x74, 0x47, 0x27, 0x60, 0xcc, 0x68, 0xe4, 0x59, 0xf4, 0x0b, 0x51, - 0x7a, 0xfd, 0x42, 0x9e, 0xa7, 0xc4, 0xeb, 0x11, 0x3d, 0x66, 0x43, 0x5a, 0xd4, 0x79, 0x0f, 0x20, - 0x6a, 0x29, 0xfa, 0xef, 0x2e, 0x30, 0x4d, 0xdd, 0xc6, 0xce, 0x3a, 0xef, 0x89, 0x91, 0xd5, 0xc4, - 0x44, 0xe2, 0xca, 0xd7, 0xad, 0xe9, 0x3b, 0x98, 0x14, 0x56, 0x74, 0xbf, 0x31, 0x17, 0xad, 0x7d, - 0xe9, 0x41, 0xff, 0x9b, 0x1d, 0x75, 0xff, 0xdb, 0xaf, 0x8e, 0xc9, 0x37, 0xc3, 0xd7, 0x67, 0x40, - 0x29, 0xee, 0x3a, 0x8f, 0xe8, 0xee, 0xf7, 0x07, 0xd2, 0x7e, 0x2e, 0xac, 0x3f, 0x0b, 0xbd, 0x48, - 0x7e, 0x4c, 0xbd, 0x6f, 0x4c, 0x2d, 0x91, 0xf3, 0xa7, 0x09, 0xab, 0x5b, 0xf2, 0x3a, 0xf2, 0x76, - 0xc5, 0x77, 0xb0, 0x7c, 0x30, 0x75, 0x70, 0xd3, 0x1c, 0xd1, 0xfe, 0x89, 0xeb, 0x19, 0xfc, 0x77, - 0xaf, 0xe3, 0xc9, 0x08, 0xb1, 0xfa, 0xc8, 0xf6, 0x3a, 0x11, 0xe5, 0x8c, 0x46, 0x5f, 0xd0, 0x2b, - 0xa5, 0xdd, 0xce, 0xa9, 0xd8, 0x22, 0x5d, 0x09, 0xe3, 0xd9, 0x54, 0x72, 0x97, 0x85, 0x46, 0x14, - 0x9b, 0x3c, 0x60, 0xdf, 0xe1, 0x5d, 0x05, 0x0b, 0x07, 0x46, 0x0c, 0xbd, 0x56, 0x7a, 0x3b, 0x8a, - 0x56, 0x7b, 0xc0, 0x7a, 0x61, 0x3c, 0x79, 0xcb, 0x6d, 0x56, 0x45, 0x16, 0x9c, 0xbc, 0xc4, 0xbf, - 0xad, 0x40, 0x8e, 0x6e, 0x41, 0xa2, 0xb7, 0xa6, 0x62, 0xdc, 0xb2, 0xee, 0x88, 0x2e, 0x84, 0xfe, - 0x7b, 0x9c, 0x35, 0x07, 0xc1, 0xd5, 0x30, 0x13, 0xcb, 0xd5, 0x50, 0x3c, 0xc7, 0x29, 0xd1, 0x8e, - 0x68, 0x1d, 0x13, 0x9e, 0x4e, 0xc6, 0x69, 0x61, 0x7d, 0x19, 0x4a, 0x1e, 0xef, 0x17, 0x64, 0x61, - 0x86, 0x16, 0x7d, 0xce, 0x68, 0x6d, 0x61, 0x07, 0xbd, 0x27, 0xfd, 0xc3, 0x83, 0xba, 0x5a, 0x81, - 0x99, 0x8b, 0x84, 0xed, 0x55, 0xfd, 0x92, 0xb5, 0xeb, 0xb0, 0x95, 0x8b, 0x1b, 0x23, 0xd7, 0x3d, - 0x68, 0x3d, 0xe7, 0xe9, 0x1f, 0x9a, 0xf0, 0xbf, 0x2b, 0x63, 0xba, 0xe0, 0x4f, 0x1d, 0xb8, 0x72, - 0xc4, 0xc8, 0xe2, 0x93, 0xd4, 0x93, 0x90, 0xdb, 0x33, 0xf0, 0xc5, 0x72, 0x8b, 0x59, 0xb7, 0xec, - 0x0d, 0xfd, 0xae, 0xf4, 0xbe, 0x2d, 0x0f, 0x37, 0xe3, 0x25, 0x59, 0x2d, 0x94, 0xdb, 0xbd, 0x1d, - 0xc8, 0xd6, 0x18, 0xce, 0x14, 0x8b, 0x97, 0x71, 0x16, 0x63, 0x28, 0x62, 0x98, 0xe1, 0x2c, 0x86, - 0xf2, 0x88, 0x3c, 0xb1, 0x42, 0x05, 0x30, 0xe2, 0x7b, 0x3a, 0xe5, 0xe2, 0x4b, 0x0c, 0x28, 0x3a, - 0x79, 0xc9, 0xbf, 0x41, 0x81, 0xa9, 0x1a, 0x76, 0x96, 0x0c, 0xdc, 0x6e, 0x75, 0x91, 0x7d, 0x70, - 0xd3, 0xe8, 0x66, 0xc8, 0x6d, 0x12, 0x62, 0x83, 0xce, 0x2d, 0xb0, 0x6c, 0xe8, 0xf5, 0x69, 0xd9, - 0x1d, 0x61, 0xb6, 0xfa, 0xe6, 0x71, 0x3b, 0x12, 0x98, 0xe4, 0x3c, 0x7a, 0xa3, 0x4b, 0x1e, 0x43, - 0x60, 0x5b, 0x05, 0x66, 0xd8, 0xed, 0x7d, 0x85, 0xb6, 0xb1, 0x65, 0xa2, 0xdd, 0x11, 0xb4, 0x10, - 0xf5, 0x16, 0xc8, 0xea, 0x2e, 0x35, 0xb6, 0xf5, 0x8a, 0xfa, 0x76, 0x9e, 0xa4, 0x3c, 0x8d, 0x66, - 0x8c, 0x11, 0x46, 0x32, 0x50, 0x6c, 0x8f, 0xe7, 0x31, 0x86, 0x91, 0x1c, 0x58, 0x78, 0xf2, 0x88, - 0x7d, 0x55, 0x81, 0xe3, 0x8c, 0x81, 0xb3, 0xd8, 0x76, 0x8c, 0xa6, 0xde, 0xa6, 0xc8, 0xbd, 0x28, - 0x35, 0x0a, 0xe8, 0x56, 0x60, 0x76, 0x8f, 0x27, 0xcb, 0x20, 0x3c, 0xd3, 0x17, 0x42, 0x81, 0x01, - 0x4d, 0xfc, 0x31, 0x46, 0x38, 0x3e, 0x41, 0xaa, 0x02, 0xcd, 0x31, 0x86, 0xe3, 0x93, 0x66, 0x22, - 0x79, 0x88, 0x5f, 0xc6, 0x42, 0xf3, 0x04, 0xdd, 0xe7, 0x17, 0xa5, 0xb1, 0xdd, 0x80, 0x69, 0x82, - 0x25, 0xfd, 0x91, 0x2d, 0x43, 0x44, 0x28, 0xb1, 0xdf, 0xef, 0xb0, 0x0b, 0xc3, 0xfc, 0x7f, 0x35, - 0x9e, 0x0e, 0x3a, 0x07, 0x10, 0x7c, 0xe2, 0x3b, 0xe9, 0x54, 0x58, 0x27, 0x9d, 0x96, 0xeb, 0xa4, - 0xdf, 0x22, 0x1d, 0x2c, 0xa5, 0x3f, 0xdb, 0x07, 0x57, 0x0f, 0xb9, 0x30, 0x19, 0x83, 0x4b, 0x4f, - 0x5e, 0x2f, 0x5e, 0x93, 0xe9, 0xbd, 0xa6, 0xfd, 0xe3, 0x23, 0x99, 0x4f, 0xf1, 0xfd, 0x81, 0xd2, - 0xd3, 0x1f, 0x1c, 0xc0, 0x92, 0xbe, 0x01, 0x8e, 0xd2, 0x22, 0x8a, 0x3e, 0x5b, 0x59, 0x1a, 0x0a, - 0xa2, 0x27, 0x19, 0x7d, 0x62, 0x08, 0x25, 0x18, 0x74, 0x87, 0x7c, 0x54, 0x27, 0x17, 0xcf, 0xd8, - 0x8d, 0xab, 0x20, 0x87, 0x77, 0xf5, 0xfc, 0xb7, 0x32, 0xd4, 0xda, 0xdd, 0x20, 0x77, 0xba, 0xa1, - 0x3f, 0xcf, 0x8c, 0x62, 0x44, 0xb8, 0x1b, 0x32, 0xc4, 0xc5, 0x5d, 0x09, 0x5d, 0xd2, 0x08, 0x8a, - 0x0c, 0x2e, 0xdc, 0xc3, 0x0f, 0x38, 0x2b, 0x47, 0x34, 0xf2, 0xa7, 0x7a, 0x23, 0x1c, 0x3d, 0xaf, - 0x37, 0x2f, 0x6c, 0xd9, 0xd6, 0x2e, 0xb9, 0xfd, 0xca, 0x62, 0xd7, 0x68, 0x91, 0xeb, 0x08, 0xc5, - 0x0f, 0xea, 0xad, 0x9e, 0xe9, 0x90, 0x1d, 0x64, 0x3a, 0xac, 0x1c, 0x61, 0xc6, 0x83, 0xfa, 0x04, - 0xbf, 0xd3, 0xc9, 0x45, 0x76, 0x3a, 0x2b, 0x47, 0xbc, 0x6e, 0x47, 0x5d, 0x84, 0xc9, 0x96, 0xb1, - 0x47, 0xb6, 0xaa, 0xc9, 0xac, 0x6b, 0xd0, 0xd1, 0xe5, 0x45, 0x63, 0x8f, 0x6e, 0x6c, 0xaf, 0x1c, - 0xd1, 0xfc, 0x3f, 0xd5, 0x65, 0x98, 0x22, 0xdb, 0x02, 0x84, 0xcc, 0x64, 0xac, 0x63, 0xc9, 0x2b, - 0x47, 0xb4, 0xe0, 0x5f, 0xd7, 0xfa, 0xc8, 0x90, 0xb3, 0x1f, 0x77, 0x79, 0xdb, 0xed, 0xa9, 0x58, - 0xdb, 0xed, 0xae, 0x2c, 0xe8, 0x86, 0xfb, 0x49, 0xc8, 0x36, 0x89, 0x84, 0xd3, 0x4c, 0xc2, 0xf4, - 0x55, 0xbd, 0x03, 0x32, 0x3b, 0xba, 0xed, 0x4d, 0x9e, 0xaf, 0x1f, 0x4c, 0x77, 0x4d, 0xb7, 0x2f, - 0xb8, 0x08, 0xba, 0x7f, 0x2d, 0x4c, 0x40, 0x96, 0x08, 0xce, 0x7f, 0x40, 0x6f, 0xcf, 0x50, 0x33, - 0xa4, 0x68, 0x99, 0xee, 0xb0, 0x5f, 0xb7, 0xbc, 0x03, 0x32, 0xbf, 0x9b, 0x1a, 0x8d, 0x05, 0xd9, - 0xf7, 0x5e, 0x73, 0x25, 0xf4, 0x5e, 0xf3, 0x9e, 0x0b, 0x76, 0x33, 0xbd, 0x17, 0xec, 0x06, 0xcb, - 0x07, 0xd9, 0xc1, 0x8e, 0x2a, 0x7f, 0x32, 0x84, 0xe9, 0xd2, 0x2b, 0x88, 0xf0, 0x19, 0x78, 0xdb, - 0x30, 0xb9, 0x3a, 0x7b, 0xaf, 0x31, 0x3b, 0xa5, 0xb8, 0x46, 0xcd, 0x00, 0xf6, 0x92, 0xef, 0x9b, - 0x7e, 0x3d, 0x03, 0xa7, 0xe8, 0x35, 0xce, 0x7b, 0xb8, 0x6e, 0x89, 0xf7, 0x4d, 0xa2, 0x3f, 0x1c, - 0x89, 0xd2, 0xf4, 0x19, 0x70, 0x94, 0xbe, 0x03, 0xce, 0xbe, 0x43, 0xca, 0x99, 0x01, 0x87, 0x94, - 0xb3, 0xf1, 0x56, 0x0e, 0x3f, 0xcc, 0xeb, 0xcf, 0xba, 0xa8, 0x3f, 0xb7, 0x87, 0x00, 0xd4, 0x4f, - 0x2e, 0x23, 0xb1, 0x6f, 0xde, 0xe5, 0x6b, 0x4a, 0x4d, 0xd0, 0x94, 0xbb, 0x86, 0x67, 0x24, 0x79, - 0x6d, 0xf9, 0x9d, 0x0c, 0x5c, 0x16, 0x30, 0x53, 0xc1, 0x17, 0x99, 0xa2, 0x7c, 0x61, 0x24, 0x8a, - 0x12, 0x3f, 0x06, 0x42, 0xd2, 0x1a, 0xf3, 0x47, 0xd2, 0x67, 0x87, 0x7a, 0x81, 0xf2, 0x65, 0x13, - 0xa2, 0x2c, 0x27, 0x21, 0x47, 0x7b, 0x18, 0x06, 0x0d, 0x7b, 0x8b, 0xd9, 0xdd, 0xc8, 0x9d, 0x38, - 0x92, 0xe5, 0x6d, 0x0c, 0xfa, 0xc3, 0xd6, 0x35, 0xea, 0xbb, 0xb6, 0x59, 0x36, 0x1d, 0x0b, 0xfd, - 0xec, 0x48, 0x14, 0xc7, 0xf7, 0x86, 0x53, 0x86, 0xf1, 0x86, 0x1b, 0x6a, 0x95, 0xc3, 0xab, 0xc1, - 0xa1, 0xac, 0x72, 0x84, 0x14, 0x9e, 0x3c, 0x7e, 0xef, 0x54, 0xe0, 0x24, 0x9b, 0x6c, 0x2d, 0x88, - 0x16, 0x22, 0xba, 0x6f, 0x14, 0x40, 0x1e, 0xf7, 0xcc, 0x24, 0x76, 0xcb, 0x19, 0x79, 0x11, 0x4f, - 0x4a, 0x45, 0xde, 0xef, 0x20, 0x4c, 0x07, 0x7b, 0x38, 0x1c, 0x09, 0x52, 0x72, 0xd7, 0x3a, 0xc4, - 0x60, 0x23, 0x79, 0xcc, 0x5e, 0xa2, 0x40, 0x8e, 0x5d, 0xdf, 0xbf, 0x91, 0x88, 0xc3, 0x84, 0x18, - 0xe5, 0x59, 0x62, 0x47, 0x2e, 0xf6, 0x25, 0xf7, 0xc9, 0xed, 0xc5, 0x1d, 0xd2, 0x2d, 0xf6, 0xdf, - 0x4d, 0xc3, 0x74, 0x0d, 0x3b, 0x45, 0xdd, 0xb6, 0x0d, 0x7d, 0x6b, 0x54, 0x1e, 0xdf, 0xb2, 0xde, - 0xc3, 0xe8, 0x7b, 0x29, 0xd9, 0xf3, 0x34, 0xfe, 0x42, 0xb8, 0xc7, 0x6a, 0x48, 0x2c, 0xc1, 0x87, - 0xa5, 0xce, 0xcc, 0x0c, 0xa2, 0x36, 0x06, 0x8f, 0xed, 0x34, 0x4c, 0x78, 0x67, 0xf1, 0x6e, 0x16, - 0xce, 0x67, 0x6e, 0x3b, 0x3b, 0xde, 0x31, 0x18, 0xf2, 0xbc, 0xff, 0x0c, 0x18, 0x7a, 0x75, 0x4c, - 0x47, 0xf9, 0xe8, 0x83, 0x84, 0xf1, 0xda, 0x58, 0x1c, 0x77, 0xf8, 0xc3, 0x3a, 0x3a, 0xf8, 0x5b, - 0x13, 0x6c, 0x39, 0x72, 0x55, 0x77, 0xf0, 0x03, 0xe8, 0x8b, 0x0a, 0x4c, 0xd4, 0xb0, 0xe3, 0x8e, - 0xb7, 0xc2, 0xe5, 0xa6, 0xc3, 0x6a, 0xb8, 0xca, 0xad, 0x78, 0x4c, 0xb1, 0x35, 0x8c, 0x7b, 0x60, - 0xaa, 0x63, 0x5b, 0x4d, 0xdc, 0xed, 0xb2, 0xd5, 0x0b, 0xde, 0x51, 0xad, 0xdf, 0xe8, 0x4f, 0x58, - 0x9b, 0x5f, 0xf7, 0xfe, 0xd1, 0x82, 0xdf, 0xe3, 0x9a, 0x01, 0x94, 0x12, 0xab, 0xe0, 0xb8, 0xcd, - 0x80, 0xa8, 0xc2, 0x93, 0x07, 0xfa, 0x73, 0x0a, 0xcc, 0xd4, 0xb0, 0xe3, 0x4b, 0x31, 0xc6, 0x26, - 0x47, 0x38, 0xbc, 0x02, 0x94, 0xca, 0xc1, 0xa0, 0x94, 0xbf, 0x1a, 0x50, 0x94, 0xa6, 0x4f, 0x6c, - 0x8c, 0x57, 0x03, 0xca, 0x71, 0x30, 0x86, 0xe3, 0x6b, 0x8f, 0x81, 0x29, 0xc2, 0x0b, 0x69, 0xb0, - 0xbf, 0x90, 0x09, 0x1a, 0xef, 0x97, 0x12, 0x6a, 0xbc, 0x77, 0x42, 0x76, 0x47, 0xb7, 0x2f, 0x74, - 0x49, 0xc3, 0x9d, 0x96, 0x31, 0xdb, 0xd7, 0xdc, 0xec, 0x1a, 0xfd, 0xab, 0xbf, 0x9f, 0x66, 0x36, - 0x9e, 0x9f, 0xe6, 0xc3, 0xe9, 0x58, 0x23, 0x21, 0x9d, 0x3b, 0x8c, 0xb0, 0xc9, 0xc7, 0x18, 0x37, - 0x23, 0xca, 0x4e, 0x5e, 0x39, 0x5e, 0xa4, 0xc0, 0xa4, 0x3b, 0x6e, 0x13, 0x7b, 0xfc, 0xdc, 0xc1, - 0xd5, 0xa1, 0xbf, 0xa1, 0x1f, 0xb3, 0x07, 0xf6, 0x24, 0x32, 0x3a, 0xf3, 0x3e, 0x46, 0x0f, 0x1c, - 0x55, 0x78, 0xf2, 0x78, 0xbc, 0x9b, 0xe2, 0x41, 0xda, 0x03, 0x7a, 0x93, 0x02, 0xca, 0x32, 0x76, - 0xc6, 0x6d, 0x45, 0xbe, 0x43, 0x3a, 0xc4, 0x91, 0x20, 0x30, 0xc2, 0xf3, 0xfc, 0x32, 0x1e, 0x4d, - 0x03, 0x92, 0x8b, 0x6d, 0x24, 0xc5, 0x40, 0xf2, 0xa8, 0xbd, 0x9f, 0xa2, 0x46, 0x37, 0x17, 0x7e, - 0x66, 0x04, 0xbd, 0xea, 0x78, 0x17, 0x3e, 0x3c, 0x01, 0x12, 0x1a, 0x87, 0xd5, 0xde, 0xfa, 0x15, - 0x3e, 0x96, 0xab, 0xf8, 0xc0, 0x6d, 0xec, 0xdb, 0xb8, 0x79, 0x01, 0xb7, 0xd0, 0x4f, 0x1e, 0x1c, - 0xba, 0x53, 0x30, 0xd1, 0xa4, 0xd4, 0x08, 0x78, 0x93, 0x9a, 0xf7, 0x1a, 0xe3, 0x5e, 0x69, 0xb1, - 0x23, 0xa2, 0xbf, 0x8f, 0xf1, 0x5e, 0x69, 0x89, 0xe2, 0xc7, 0x60, 0xb6, 0xd0, 0x59, 0x46, 0xb9, - 0x69, 0x99, 0xe8, 0xbf, 0x1c, 0x1c, 0x96, 0xab, 0x60, 0xca, 0x68, 0x5a, 0x26, 0x09, 0x43, 0xe1, - 0x1d, 0x02, 0xf2, 0x13, 0xbc, 0xaf, 0xa5, 0x1d, 0xeb, 0x7e, 0x83, 0xed, 0x9a, 0x07, 0x09, 0xc3, - 0x1a, 0x13, 0x2e, 0xeb, 0x87, 0x65, 0x4c, 0xf4, 0x29, 0x3b, 0x79, 0xc8, 0x3e, 0x11, 0x78, 0xb7, - 0xd1, 0xae, 0xf0, 0x11, 0xb1, 0x0a, 0x3c, 0xcc, 0x70, 0xc6, 0xd7, 0xe2, 0x50, 0x86, 0xb3, 0x08, - 0x06, 0xc6, 0x70, 0x63, 0x45, 0x80, 0x63, 0xe2, 0x6b, 0xc0, 0x07, 0x40, 0x67, 0x74, 0xe6, 0xe1, - 0x90, 0xe8, 0x1c, 0x8e, 0x89, 0xf8, 0x21, 0x16, 0x22, 0x93, 0x59, 0x3c, 0xe8, 0xbf, 0x8e, 0x02, - 0x9c, 0xdb, 0x87, 0xf1, 0x57, 0xa0, 0xde, 0x0a, 0x31, 0x6e, 0xc4, 0xde, 0x27, 0x41, 0x97, 0xca, - 0x18, 0xef, 0x8a, 0x97, 0x29, 0x3f, 0x79, 0x00, 0x5f, 0xa8, 0xc0, 0x1c, 0xf1, 0x11, 0x68, 0x63, - 0xdd, 0xa6, 0x1d, 0xe5, 0x48, 0x1c, 0xe5, 0xdf, 0x2d, 0x1d, 0xe0, 0x47, 0x94, 0x43, 0xc0, 0xc7, - 0x48, 0xa0, 0x90, 0x8b, 0xee, 0x23, 0xc9, 0xc2, 0x58, 0xb6, 0x51, 0xf2, 0x3e, 0x0b, 0x4c, 0xc5, - 0x47, 0x83, 0x47, 0x4c, 0x8f, 0x5c, 0x51, 0x18, 0x5e, 0x63, 0x1b, 0xb3, 0x47, 0xae, 0x0c, 0x13, - 0xc9, 0x63, 0xf2, 0xa6, 0x5b, 0xd8, 0x82, 0x73, 0x9d, 0x5c, 0x18, 0xff, 0xda, 0x8c, 0x7f, 0xa2, - 0xed, 0x73, 0x23, 0xf1, 0xc0, 0x3c, 0x40, 0x40, 0x7c, 0x15, 0x32, 0xb6, 0x75, 0x91, 0x2e, 0x6d, - 0xcd, 0x6a, 0xe4, 0x99, 0x5e, 0x4f, 0xd9, 0xde, 0xdd, 0x31, 0xe9, 0xc9, 0xd0, 0x59, 0xcd, 0x7b, - 0x55, 0xaf, 0x83, 0xd9, 0x8b, 0x86, 0xb3, 0xbd, 0x82, 0xf5, 0x16, 0xb6, 0x35, 0xeb, 0x22, 0xf1, - 0x98, 0x9b, 0xd4, 0xc4, 0x44, 0xd1, 0x7f, 0x45, 0xc2, 0xbe, 0x24, 0xb7, 0xc8, 0x8f, 0xe5, 0xf8, - 0x5b, 0x1c, 0xcb, 0x33, 0x9c, 0xab, 0xe4, 0x15, 0xe6, 0x03, 0x0a, 0x4c, 0x69, 0xd6, 0x45, 0xa6, - 0x24, 0xff, 0xc7, 0xe1, 0xea, 0x48, 0xec, 0x89, 0x1e, 0x91, 0x9c, 0xcf, 0xfe, 0xd8, 0x27, 0x7a, - 0x91, 0xc5, 0x8f, 0xe5, 0xe4, 0xd2, 0x8c, 0x66, 0x5d, 0xac, 0x61, 0x87, 0xb6, 0x08, 0xd4, 0x18, - 0x91, 0x93, 0xb5, 0xd1, 0xa5, 0x04, 0xd9, 0x3c, 0xdc, 0x7f, 0x8f, 0xbb, 0x8b, 0xe0, 0x0b, 0xc8, - 0x67, 0x71, 0xdc, 0xbb, 0x08, 0x03, 0x39, 0x18, 0x43, 0x8c, 0x14, 0x05, 0xa6, 0x35, 0xeb, 0xa2, - 0x3b, 0x34, 0x2c, 0x19, 0xed, 0xf6, 0x68, 0x46, 0xc8, 0xb8, 0xc6, 0xbf, 0x27, 0x06, 0x8f, 0x8b, - 0xb1, 0x1b, 0xff, 0x03, 0x18, 0x48, 0x1e, 0x86, 0xe7, 0xd1, 0xc6, 0xe2, 0x8d, 0xd0, 0xe6, 0x68, - 0x70, 0x18, 0xb6, 0x41, 0xf8, 0x6c, 0x1c, 0x5a, 0x83, 0x08, 0xe3, 0x60, 0x2c, 0x3b, 0x27, 0x73, - 0x45, 0x32, 0xcc, 0x8f, 0xb6, 0x4d, 0xbc, 0x37, 0x9e, 0x6b, 0x22, 0x1b, 0x76, 0x05, 0x46, 0x46, - 0x82, 0x46, 0x0c, 0x17, 0x44, 0x09, 0x1e, 0x92, 0xc7, 0xe3, 0xa3, 0x0a, 0xcc, 0x50, 0x16, 0x1e, - 0x21, 0x56, 0xc0, 0x50, 0x8d, 0x8a, 0xaf, 0xc1, 0xe1, 0x34, 0xaa, 0x08, 0x0e, 0xc6, 0x72, 0x2b, - 0xa8, 0x6b, 0xc7, 0x0d, 0x71, 0x7c, 0x3c, 0x0c, 0xc1, 0xa1, 0x8d, 0xb1, 0x11, 0x1e, 0x21, 0x1f, - 0xc6, 0x18, 0x3b, 0xa4, 0x63, 0xe4, 0xcf, 0xf3, 0x5b, 0xd1, 0x28, 0x31, 0x38, 0x40, 0x53, 0x18, - 0x21, 0x0c, 0x43, 0x36, 0x85, 0x43, 0x42, 0xe2, 0x6b, 0x0a, 0x00, 0x65, 0x60, 0xcd, 0xda, 0x23, - 0x97, 0xf9, 0x8c, 0xa0, 0x3b, 0xeb, 0x75, 0xab, 0x57, 0x06, 0xb8, 0xd5, 0xc7, 0x0c, 0xe1, 0x12, - 0x77, 0x25, 0x90, 0x93, 0xb2, 0x5b, 0xc9, 0xb1, 0xaf, 0x04, 0x46, 0x97, 0x9f, 0x3c, 0xc6, 0x5f, - 0xa1, 0xd6, 0x5c, 0x70, 0xc0, 0xf4, 0xd7, 0x46, 0x82, 0x32, 0x37, 0xfb, 0x57, 0xc4, 0xd9, 0xff, - 0x01, 0xb0, 0x1d, 0xd6, 0x46, 0x1c, 0x74, 0x70, 0x34, 0x79, 0x1b, 0xf1, 0xf0, 0x0e, 0x88, 0xfe, - 0x4c, 0x06, 0x8e, 0xb2, 0x4e, 0xe4, 0x87, 0x01, 0xe2, 0x98, 0xe7, 0xf0, 0x84, 0x4e, 0x72, 0x00, - 0xca, 0xa3, 0x5a, 0x90, 0x8a, 0xb3, 0x94, 0x29, 0xc1, 0xde, 0x58, 0x56, 0x37, 0x72, 0xa5, 0x07, - 0x3a, 0xba, 0xd9, 0x92, 0x0f, 0xf7, 0x3b, 0x00, 0x78, 0x6f, 0xad, 0x51, 0x11, 0xd7, 0x1a, 0xfb, - 0xac, 0x4c, 0xc6, 0xde, 0xb9, 0x26, 0x22, 0xa3, 0xec, 0x8e, 0x7d, 0xe7, 0x3a, 0xbc, 0xec, 0xe4, - 0x51, 0x7a, 0xaf, 0x02, 0x99, 0x9a, 0x65, 0x3b, 0xe8, 0xf9, 0x71, 0x5a, 0x27, 0x95, 0x7c, 0x00, - 0x92, 0xf7, 0xae, 0x16, 0x85, 0x5b, 0x9a, 0x6f, 0x8e, 0x3e, 0xea, 0xac, 0x3b, 0x3a, 0xf1, 0xea, - 0x76, 0xcb, 0xe7, 0xae, 0x6b, 0x8e, 0x1b, 0x4f, 0x87, 0xca, 0xaf, 0x16, 0x7e, 0x00, 0x23, 0xb1, - 0x78, 0x3a, 0xa1, 0x25, 0x27, 0x8f, 0xdb, 0x43, 0x47, 0x99, 0x6f, 0xeb, 0x92, 0xd1, 0xc6, 0xe8, - 0xf9, 0xd4, 0x65, 0xa4, 0xa2, 0xef, 0x60, 0xf9, 0x23, 0x31, 0x91, 0xae, 0xad, 0x24, 0xbe, 0xac, - 0x12, 0xc4, 0x97, 0x8d, 0xdb, 0xa0, 0xe8, 0x01, 0x74, 0xca, 0xd2, 0xb8, 0x1b, 0x54, 0x44, 0xd9, - 0x63, 0x89, 0xd3, 0x79, 0xac, 0x86, 0x1d, 0x6a, 0x54, 0x56, 0xbd, 0x1b, 0x58, 0x7e, 0x6a, 0x24, - 0x11, 0x3b, 0xfd, 0x0b, 0x5e, 0x94, 0x9e, 0x0b, 0x5e, 0x3e, 0xc0, 0x83, 0xb3, 0x26, 0x82, 0xf3, - 0x94, 0x70, 0x01, 0x89, 0x4c, 0x8e, 0x04, 0xa6, 0x77, 0xf8, 0x30, 0xad, 0x0b, 0x30, 0xdd, 0x31, - 0x24, 0x17, 0xc9, 0x03, 0xf6, 0x8b, 0x59, 0x38, 0x4a, 0x27, 0xfd, 0x05, 0xb3, 0xc5, 0x22, 0xac, - 0xbe, 0x35, 0x7d, 0xc8, 0x9b, 0x6d, 0xfb, 0x43, 0xb0, 0x0a, 0xb1, 0x9c, 0xb3, 0xbd, 0xb7, 0xe3, - 0x2f, 0xd0, 0x70, 0xae, 0x6e, 0x27, 0x4a, 0x76, 0xda, 0xe4, 0x6f, 0xc8, 0xf7, 0xff, 0x13, 0xef, - 0x32, 0x9a, 0x90, 0xbf, 0xcb, 0xe8, 0x8f, 0xe3, 0xad, 0xdb, 0x91, 0xa2, 0x7b, 0x04, 0x9e, 0xb0, - 0xed, 0x14, 0x63, 0x45, 0x4f, 0x82, 0xbb, 0x1f, 0x0d, 0x77, 0xb2, 0x20, 0x82, 0xc8, 0x90, 0xee, - 0x64, 0x84, 0xc0, 0x61, 0xba, 0x93, 0x0d, 0x62, 0x60, 0x0c, 0xb7, 0xda, 0x67, 0xd9, 0x6e, 0x3e, - 0x69, 0x37, 0xe8, 0x2f, 0xd3, 0x89, 0x8f, 0xd2, 0xdf, 0x4f, 0xc5, 0xf2, 0x7f, 0x26, 0x7c, 0x45, - 0x0f, 0xd3, 0x71, 0x3c, 0x9a, 0xa3, 0xc8, 0x8d, 0x61, 0xdd, 0x28, 0x4d, 0x7c, 0xd1, 0xcf, 0x19, - 0x2d, 0x67, 0x7b, 0x44, 0x27, 0x3a, 0x2e, 0xba, 0xb4, 0xbc, 0xeb, 0x91, 0xc9, 0x0b, 0xfa, 0xd7, - 0x54, 0xac, 0x10, 0x52, 0xbe, 0x48, 0x08, 0x5b, 0x21, 0x22, 0x8e, 0x11, 0xf8, 0x29, 0x92, 0xde, - 0x18, 0x35, 0xfa, 0xac, 0xd1, 0xc2, 0xd6, 0x23, 0x50, 0xa3, 0x09, 0x5f, 0xa3, 0xd3, 0xe8, 0x28, - 0x72, 0x3f, 0xa2, 0x1a, 0xed, 0x8b, 0x64, 0x44, 0x1a, 0x1d, 0x49, 0x2f, 0x79, 0x19, 0xbf, 0x7a, - 0x86, 0x4d, 0xa4, 0x56, 0x0d, 0xf3, 0x02, 0xfa, 0xe7, 0x9c, 0x77, 0x31, 0xf3, 0x39, 0xc3, 0xd9, - 0x66, 0xb1, 0x60, 0x7e, 0x47, 0xfa, 0x6e, 0x94, 0x21, 0xe2, 0xbd, 0x88, 0xe1, 0xa4, 0xb2, 0xfb, - 0xc2, 0x49, 0x15, 0x60, 0xd6, 0x30, 0x1d, 0x6c, 0x9b, 0x7a, 0x7b, 0xa9, 0xad, 0x6f, 0x75, 0x4f, - 0x4d, 0xf4, 0xbd, 0xbc, 0xae, 0xcc, 0xe5, 0xd1, 0xc4, 0x3f, 0xf8, 0xeb, 0x2b, 0x27, 0xc5, 0xeb, - 0x2b, 0x43, 0xa2, 0x5f, 0x4d, 0x85, 0x47, 0xbf, 0xf2, 0xa3, 0x5b, 0xc1, 0xe0, 0xe0, 0xd8, 0xb2, - 0xb6, 0x71, 0xcc, 0x70, 0x7f, 0x37, 0x4b, 0x46, 0x61, 0xf3, 0x43, 0x3f, 0xbe, 0x4e, 0x89, 0xb5, - 0xba, 0xe7, 0x2a, 0xc2, 0x7c, 0xaf, 0x12, 0xc4, 0xb6, 0x50, 0xf9, 0xca, 0x2b, 0x3d, 0x95, 0xf7, - 0x4d, 0x9e, 0x8c, 0x84, 0xc9, 0xc3, 0x2b, 0x55, 0x56, 0x4e, 0xa9, 0xe2, 0x2c, 0x16, 0xca, 0xd4, - 0x76, 0x0c, 0xa7, 0x91, 0xb2, 0x70, 0xcc, 0x8b, 0x76, 0xdb, 0xe9, 0x60, 0xdd, 0xd6, 0xcd, 0x26, - 0x46, 0x9f, 0x48, 0x8f, 0xc2, 0xec, 0x5d, 0x82, 0x49, 0xa3, 0x69, 0x99, 0x35, 0xe3, 0x59, 0xde, - 0xe5, 0x72, 0xd1, 0x41, 0xd6, 0x89, 0x44, 0xca, 0xec, 0x0f, 0xcd, 0xff, 0x57, 0x2d, 0xc3, 0x54, - 0x53, 0xb7, 0x5b, 0x34, 0x08, 0x5f, 0xb6, 0xe7, 0x22, 0xa7, 0x50, 0x42, 0x45, 0xef, 0x17, 0x2d, - 0xf8, 0x5b, 0xad, 0x8a, 0x42, 0xcc, 0xf5, 0x44, 0xf3, 0x08, 0x25, 0xb6, 0x18, 0xfc, 0x24, 0xc8, - 0xdc, 0x95, 0x8e, 0x8d, 0xdb, 0xe4, 0x0e, 0x7a, 0xda, 0x43, 0x4c, 0x69, 0x41, 0x42, 0xdc, 0xe5, - 0x01, 0x52, 0xd4, 0x3e, 0x34, 0xc6, 0xbd, 0x3c, 0x20, 0xc5, 0x45, 0xf2, 0x9a, 0xf9, 0xae, 0x1c, - 0xcc, 0xd2, 0x5e, 0x8d, 0x89, 0x13, 0xbd, 0x90, 0x5c, 0x21, 0xed, 0xdc, 0x8b, 0x2f, 0xa1, 0xda, - 0xc1, 0xc7, 0xe4, 0x3c, 0x28, 0x17, 0xfc, 0x80, 0x83, 0xee, 0x63, 0xdc, 0x7d, 0x7b, 0x8f, 0xaf, - 0x79, 0xca, 0xd3, 0xb8, 0xf7, 0xed, 0xa3, 0x8b, 0x4f, 0x1e, 0x9f, 0x5f, 0x52, 0x40, 0x29, 0xb4, - 0x5a, 0xa8, 0x79, 0x70, 0x28, 0xae, 0x81, 0x69, 0xaf, 0xcd, 0x04, 0x31, 0x20, 0xf9, 0xa4, 0xb8, - 0x8b, 0xa0, 0xbe, 0x6c, 0x0a, 0xad, 0xb1, 0xef, 0x2a, 0x44, 0x94, 0x9d, 0x3c, 0x28, 0xbf, 0x36, - 0xc1, 0x1a, 0xcd, 0x82, 0x65, 0x5d, 0x20, 0x47, 0x65, 0x9e, 0xaf, 0x40, 0x76, 0x09, 0x3b, 0xcd, - 0xed, 0x11, 0xb5, 0x99, 0x5d, 0xbb, 0xed, 0xb5, 0x99, 0x7d, 0xf7, 0xe1, 0x0f, 0xb6, 0x61, 0x3d, - 0xb6, 0xe6, 0x09, 0x4b, 0xe3, 0x8e, 0xee, 0x1c, 0x59, 0x7a, 0xf2, 0xe0, 0xfc, 0xab, 0x02, 0x73, - 0xfe, 0x0a, 0x17, 0xc5, 0xe4, 0x17, 0x53, 0x8f, 0xb4, 0xf5, 0x4e, 0xf4, 0x85, 0x78, 0x21, 0xd2, - 0x7c, 0x99, 0x8a, 0x35, 0x4b, 0x78, 0x61, 0x31, 0x46, 0xf0, 0x34, 0x39, 0x06, 0xc7, 0x30, 0x83, - 0x57, 0x60, 0x92, 0x30, 0xb4, 0x68, 0xec, 0x11, 0xd7, 0x41, 0x61, 0xa1, 0xf1, 0xd9, 0x23, 0x59, - 0x68, 0xbc, 0x43, 0x5c, 0x68, 0x94, 0x8c, 0x78, 0xec, 0xad, 0x33, 0xc6, 0xf4, 0xa5, 0x71, 0xff, - 0x1f, 0xf9, 0x32, 0x63, 0x0c, 0x5f, 0x9a, 0x01, 0xe5, 0x27, 0x8f, 0xe8, 0xeb, 0xfe, 0x13, 0xeb, - 0x6c, 0xbd, 0x0d, 0x55, 0xf4, 0x7f, 0x1d, 0x83, 0xcc, 0x59, 0xf7, 0xe1, 0x7f, 0x06, 0x37, 0x62, - 0xbd, 0x7c, 0x04, 0xc1, 0x19, 0x9e, 0x0e, 0x19, 0x97, 0x3e, 0x9b, 0xb6, 0xdc, 0x28, 0xb7, 0xbb, - 0xeb, 0x32, 0xa2, 0x91, 0xff, 0xd4, 0x93, 0x90, 0xeb, 0x5a, 0xbb, 0x76, 0xd3, 0x35, 0x9f, 0x5d, - 0x8d, 0x61, 0x6f, 0x71, 0x83, 0x92, 0x0a, 0xa4, 0xe7, 0x47, 0xe7, 0x32, 0xca, 0x5d, 0x90, 0xa4, - 0x08, 0x17, 0x24, 0xc5, 0xd8, 0x3f, 0x90, 0xe0, 0x2d, 0x79, 0x8d, 0xf8, 0x4b, 0x72, 0x57, 0x60, - 0x6b, 0x54, 0xb0, 0x87, 0x88, 0xe5, 0xa0, 0xea, 0x10, 0xd7, 0xe1, 0x5b, 0x14, 0xad, 0x1f, 0x07, - 0x7e, 0xac, 0x0e, 0xdf, 0x12, 0x3c, 0x8c, 0xe5, 0x94, 0x7a, 0x8e, 0x39, 0xa9, 0xde, 0x37, 0x4a, - 0x74, 0x33, 0x82, 0xd2, 0x1f, 0x08, 0x9d, 0x11, 0x3a, 0xaf, 0x0e, 0x8d, 0xce, 0x21, 0xb9, 0xaf, - 0xfe, 0x9e, 0x42, 0x22, 0x61, 0x7a, 0x46, 0x8e, 0xfc, 0x45, 0x47, 0xb1, 0x21, 0x72, 0xc7, 0x60, - 0x21, 0x0e, 0xf4, 0xec, 0xf0, 0xa1, 0xc1, 0x45, 0xd1, 0x71, 0xfc, 0x8f, 0x3b, 0x34, 0xb8, 0x2c, - 0x23, 0xc9, 0x03, 0xf9, 0x46, 0x7a, 0xb1, 0x58, 0xa1, 0xe9, 0x18, 0x7b, 0x23, 0x6e, 0x69, 0xe2, - 0xf0, 0x12, 0x33, 0x1a, 0xf0, 0x3e, 0x09, 0x51, 0x0e, 0xc7, 0x1d, 0x0d, 0x58, 0x8e, 0x8d, 0xe4, - 0x61, 0xfa, 0x9b, 0x9c, 0x2b, 0x3d, 0xb6, 0x36, 0xf3, 0x26, 0xb6, 0x1a, 0x80, 0x0f, 0x8e, 0xd6, - 0x19, 0x98, 0xe1, 0xa6, 0xfe, 0xde, 0x85, 0x35, 0x42, 0x5a, 0xdc, 0x83, 0xee, 0xbe, 0xc8, 0x46, - 0xbe, 0x30, 0x10, 0x63, 0xc1, 0x57, 0x86, 0x89, 0xb1, 0xdc, 0x07, 0xe7, 0x8d, 0x61, 0x63, 0xc2, - 0xea, 0x77, 0x78, 0xac, 0xaa, 0x22, 0x56, 0xb7, 0xc9, 0x88, 0x49, 0x6e, 0x4c, 0x93, 0x9a, 0x37, - 0xbe, 0xd3, 0x87, 0x4b, 0x13, 0xe0, 0x7a, 0xfa, 0xd0, 0x7c, 0x24, 0x8f, 0xd8, 0x2b, 0x68, 0x77, - 0x58, 0xa3, 0x26, 0xfb, 0x68, 0xba, 0x43, 0x36, 0x1b, 0x50, 0x84, 0xd9, 0x40, 0x4c, 0x7f, 0xfb, - 0xc0, 0x8d, 0xd4, 0x63, 0x6e, 0x10, 0x44, 0x99, 0x11, 0xfb, 0xdb, 0x0f, 0xe4, 0x20, 0x79, 0x70, - 0xfe, 0x51, 0x01, 0x58, 0xb6, 0xad, 0xdd, 0x4e, 0xd5, 0x6e, 0x61, 0x1b, 0xfd, 0x75, 0x30, 0x01, - 0x78, 0xe9, 0x08, 0x26, 0x00, 0xeb, 0x00, 0x5b, 0x3e, 0x71, 0xa6, 0xe1, 0xb7, 0xc8, 0x99, 0xfb, - 0x01, 0x53, 0x1a, 0x47, 0x43, 0xbc, 0x72, 0xf6, 0x19, 0x22, 0xc6, 0x51, 0x7d, 0x56, 0x40, 0x6e, - 0x94, 0x13, 0x80, 0x77, 0xfb, 0x58, 0xd7, 0x05, 0xac, 0xef, 0x3e, 0x00, 0x27, 0xc9, 0x63, 0xfe, - 0x4f, 0x13, 0x30, 0x4d, 0xb7, 0xeb, 0xa8, 0x4c, 0xff, 0x2e, 0x00, 0xfd, 0xd7, 0x46, 0x00, 0xfa, - 0x06, 0xcc, 0x58, 0x01, 0x75, 0xda, 0xa7, 0xf2, 0x0b, 0x30, 0x91, 0xb0, 0x73, 0x7c, 0x69, 0x02, - 0x19, 0xf4, 0x31, 0x1e, 0x79, 0x4d, 0x44, 0xfe, 0x8e, 0x08, 0x79, 0x73, 0x14, 0x47, 0x09, 0xfd, - 0x7b, 0x7c, 0xe8, 0x37, 0x04, 0xe8, 0x0b, 0x07, 0x61, 0x65, 0x0c, 0xe1, 0xf6, 0x15, 0xc8, 0x90, - 0xd3, 0x71, 0xbf, 0x9e, 0xe0, 0xfc, 0xfe, 0x14, 0x4c, 0x90, 0x26, 0xeb, 0xcf, 0x3b, 0xbc, 0x57, - 0xf7, 0x8b, 0xbe, 0xe9, 0x60, 0xdb, 0xf7, 0x58, 0xf0, 0x5e, 0x5d, 0x1e, 0x3c, 0xaf, 0xe4, 0xee, - 0xa9, 0x1c, 0xdd, 0x88, 0xf4, 0x13, 0x86, 0x9e, 0x94, 0xf0, 0x12, 0x1f, 0xd9, 0x79, 0xb9, 0x61, - 0x26, 0x25, 0x03, 0x18, 0x49, 0x1e, 0xf8, 0x3f, 0xcf, 0xc0, 0x29, 0xba, 0xaa, 0xb4, 0x64, 0x5b, - 0x3b, 0x3d, 0xb7, 0x5b, 0x19, 0x07, 0xd7, 0x85, 0xeb, 0x61, 0xce, 0x11, 0xfc, 0xb1, 0x99, 0x4e, - 0xf4, 0xa4, 0xa2, 0x3f, 0xe1, 0x7d, 0x2a, 0x9e, 0x29, 0x22, 0xb9, 0x10, 0x21, 0xc0, 0x30, 0xde, - 0x63, 0x2f, 0xd4, 0x4b, 0x32, 0xca, 0x2d, 0x52, 0x29, 0x43, 0xad, 0x59, 0xfa, 0x3a, 0x95, 0x95, - 0xd1, 0xa9, 0x0f, 0xfa, 0x3a, 0xf5, 0x93, 0x82, 0x4e, 0x2d, 0x1f, 0x5c, 0x24, 0xc9, 0xeb, 0xd6, - 0x6b, 0xfd, 0x8d, 0x21, 0x7f, 0xdb, 0x6e, 0x27, 0x81, 0xcd, 0x3a, 0xde, 0x1f, 0x29, 0x23, 0xf8, - 0x23, 0x89, 0xf7, 0x51, 0xc4, 0x98, 0x09, 0x8b, 0x5c, 0x87, 0xe8, 0xd2, 0x1c, 0xa4, 0x0d, 0x8f, - 0xbb, 0xb4, 0xd1, 0x1a, 0x6a, 0xae, 0x1b, 0x59, 0xd0, 0x18, 0xd6, 0x96, 0xe6, 0x20, 0xb7, 0x64, - 0xb4, 0x1d, 0x6c, 0xa3, 0xaf, 0xb0, 0x99, 0xee, 0x6b, 0x13, 0x1c, 0x00, 0x16, 0x21, 0xb7, 0x49, - 0x4a, 0x63, 0x26, 0xf3, 0x4d, 0x72, 0xad, 0x87, 0x72, 0xa8, 0xb1, 0x7f, 0xe3, 0x46, 0xe7, 0xeb, - 0x21, 0x33, 0xb2, 0x29, 0x72, 0x8c, 0xe8, 0x7c, 0x83, 0x59, 0x18, 0xcb, 0xc5, 0x54, 0x39, 0x0d, - 0xef, 0xb8, 0x63, 0xfc, 0x85, 0xe4, 0x10, 0xce, 0x83, 0x62, 0xb4, 0xba, 0xa4, 0x73, 0x9c, 0xd2, - 0xdc, 0xc7, 0xb8, 0xbe, 0x42, 0xbd, 0xa2, 0xa2, 0x2c, 0x8f, 0xdb, 0x57, 0x48, 0x8a, 0x8b, 0xe4, - 0x31, 0xfb, 0x3e, 0x71, 0x14, 0xed, 0xb4, 0xf5, 0x26, 0x76, 0xb9, 0x4f, 0x0c, 0x35, 0xda, 0x93, - 0x65, 0xbc, 0x9e, 0x8c, 0x6b, 0xa7, 0xd9, 0x03, 0xb4, 0xd3, 0x61, 0x97, 0x21, 0x7d, 0x99, 0x93, - 0x8a, 0x1f, 0xda, 0x32, 0x64, 0x24, 0x1b, 0x63, 0xb8, 0x76, 0xd4, 0x3b, 0x48, 0x3b, 0xd6, 0xd6, - 0x3a, 0xec, 0x26, 0x0d, 0x13, 0xd6, 0xc8, 0x0e, 0xcd, 0x0e, 0xb3, 0x49, 0x13, 0xce, 0xc3, 0x18, - 0xd0, 0x9a, 0x63, 0x68, 0x7d, 0x9e, 0x0d, 0xa3, 0x09, 0xef, 0x93, 0x76, 0x2d, 0xdb, 0x89, 0xb7, - 0x4f, 0xea, 0x72, 0xa7, 0x91, 0xff, 0xe2, 0x1e, 0xbc, 0x12, 0xcf, 0x55, 0x8f, 0x6a, 0xf8, 0x8c, - 0x71, 0xf0, 0x6a, 0x10, 0x03, 0xc9, 0xc3, 0xfb, 0xb6, 0x43, 0x1a, 0x3c, 0x87, 0x6d, 0x8e, 0xac, - 0x0d, 0x8c, 0x6c, 0xe8, 0x1c, 0xa6, 0x39, 0x86, 0xf3, 0x90, 0x3c, 0x5e, 0xdf, 0xe1, 0x06, 0xce, - 0xb7, 0x8c, 0x71, 0xe0, 0xf4, 0x5a, 0x66, 0x76, 0xc8, 0x96, 0x39, 0xec, 0xfe, 0x0f, 0x93, 0xf5, - 0xe8, 0x06, 0xcc, 0x61, 0xf6, 0x7f, 0x22, 0x98, 0x48, 0x1e, 0xf1, 0xb7, 0x2a, 0x90, 0xad, 0x8d, - 0x7f, 0xbc, 0x1c, 0x76, 0x2e, 0x42, 0x64, 0x55, 0x1b, 0xd9, 0x70, 0x39, 0xcc, 0x5c, 0x24, 0x94, - 0x85, 0x31, 0x04, 0xde, 0x3f, 0x0a, 0x33, 0x64, 0x49, 0xc4, 0xdb, 0x66, 0xfd, 0x0e, 0x1b, 0x35, - 0x1f, 0x4e, 0xb0, 0xad, 0xde, 0x03, 0x93, 0xde, 0xfe, 0x1d, 0x1b, 0x39, 0xe7, 0xe5, 0xda, 0xa7, - 0xc7, 0xa5, 0xe6, 0xff, 0x7f, 0x20, 0x67, 0x88, 0x91, 0xef, 0xd5, 0x0e, 0xeb, 0x0c, 0x71, 0xa8, - 0xfb, 0xb5, 0x7f, 0x1c, 0x8c, 0xa8, 0xff, 0x25, 0x39, 0xcc, 0x7b, 0xf7, 0x71, 0x33, 0x7d, 0xf6, - 0x71, 0x3f, 0xc1, 0x63, 0x59, 0x13, 0xb1, 0xbc, 0x53, 0x56, 0x84, 0x23, 0x1c, 0x6b, 0xdf, 0xeb, - 0xc3, 0x79, 0x56, 0x80, 0x73, 0xe1, 0x40, 0xbc, 0x8c, 0xe1, 0xe0, 0x63, 0x26, 0x18, 0x73, 0x3f, - 0x99, 0x60, 0x3b, 0xee, 0x39, 0x55, 0x91, 0xd9, 0x77, 0xaa, 0x42, 0x68, 0xe9, 0xd9, 0x03, 0xb6, - 0xf4, 0x4f, 0xf2, 0xda, 0x51, 0x17, 0xb5, 0xe3, 0xe9, 0xf2, 0x88, 0x8c, 0x6e, 0x64, 0x7e, 0x9f, - 0xaf, 0x1e, 0xe7, 0x04, 0xf5, 0x28, 0x1e, 0x8c, 0x99, 0xe4, 0xf5, 0xe3, 0xf7, 0xbd, 0x09, 0xed, - 0x21, 0xb7, 0xf7, 0x61, 0xb7, 0x8a, 0x05, 0x21, 0x8e, 0x6c, 0xe4, 0x1e, 0x66, 0xab, 0x78, 0x10, - 0x27, 0x63, 0x88, 0xc5, 0x36, 0x0b, 0xd3, 0x84, 0xa7, 0x73, 0x46, 0x6b, 0x0b, 0x3b, 0xe8, 0x75, - 0xd4, 0x47, 0xd1, 0x8b, 0x7c, 0x39, 0xa2, 0xf0, 0x44, 0x61, 0xe7, 0x5d, 0xe3, 0x7a, 0x74, 0x50, - 0x26, 0xe7, 0x39, 0x06, 0xc7, 0x1d, 0x41, 0x71, 0x20, 0x07, 0xc9, 0x43, 0xf6, 0x31, 0xea, 0x6e, - 0xb3, 0xaa, 0x5f, 0xb2, 0x76, 0x1d, 0xf4, 0xe0, 0x08, 0x3a, 0xe8, 0x05, 0xc8, 0xb5, 0x09, 0x35, - 0x76, 0x2c, 0x23, 0x7a, 0xba, 0xc3, 0x44, 0x40, 0xcb, 0xd7, 0xd8, 0x9f, 0x71, 0xcf, 0x66, 0x04, - 0x72, 0xa4, 0x74, 0xc6, 0x7d, 0x36, 0x63, 0x40, 0xf9, 0x63, 0xb9, 0x63, 0x67, 0xd2, 0x2d, 0xdd, - 0xd8, 0x31, 0x9c, 0x11, 0x45, 0x70, 0x68, 0xbb, 0xb4, 0xbc, 0x08, 0x0e, 0xe4, 0x25, 0xee, 0x89, - 0x51, 0x4e, 0x2a, 0xee, 0xef, 0xe3, 0x3e, 0x31, 0x1a, 0x5d, 0x7c, 0xf2, 0x98, 0xfc, 0x0a, 0x6d, - 0x59, 0x67, 0xa9, 0xf3, 0x6d, 0x82, 0x7e, 0xbd, 0x43, 0x37, 0x16, 0xca, 0xda, 0xe1, 0x35, 0x96, - 0xbe, 0xe5, 0x27, 0x0f, 0xcc, 0x7f, 0xff, 0x31, 0xc8, 0x2e, 0xe2, 0xf3, 0xbb, 0x5b, 0xe8, 0x0e, - 0x98, 0xac, 0xdb, 0x18, 0x97, 0xcd, 0x4d, 0xcb, 0x95, 0xae, 0xe3, 0x3e, 0x7b, 0x90, 0xb0, 0x37, - 0x17, 0x8f, 0x6d, 0xac, 0xb7, 0x82, 0xf3, 0x67, 0xde, 0x2b, 0x7a, 0x79, 0x1a, 0x32, 0x35, 0x47, - 0x77, 0xd0, 0x94, 0x8f, 0x2d, 0x7a, 0x90, 0xc7, 0xe2, 0x0e, 0x11, 0x8b, 0xeb, 0x05, 0x59, 0x10, - 0x0e, 0xe6, 0xdd, 0xff, 0x43, 0x00, 0x40, 0x30, 0x79, 0x7f, 0xd7, 0x32, 0xdd, 0x1c, 0xde, 0x11, - 0x48, 0xef, 0x1d, 0xbd, 0xc6, 0x17, 0xf7, 0x5d, 0x82, 0xb8, 0x1f, 0x27, 0x57, 0xc4, 0x18, 0x56, - 0xda, 0xd2, 0x30, 0xe5, 0x8a, 0x76, 0x05, 0xeb, 0xad, 0x2e, 0x7a, 0x74, 0xa0, 0xfc, 0x21, 0x62, - 0x46, 0x1f, 0x92, 0x0e, 0xc6, 0x49, 0x6b, 0xe5, 0x13, 0x0f, 0xf7, 0xe8, 0xf0, 0x36, 0xff, 0xd3, - 0x62, 0x30, 0x92, 0x9b, 0x21, 0x63, 0x98, 0x9b, 0x16, 0xf3, 0x2f, 0xbc, 0x32, 0x84, 0xb6, 0xab, - 0x13, 0x1a, 0xc9, 0x28, 0x19, 0xa9, 0x33, 0x9a, 0xad, 0xb1, 0x5c, 0x7a, 0x97, 0x71, 0x4b, 0x47, - 0xff, 0xfb, 0x40, 0x61, 0xab, 0x2a, 0x64, 0x3a, 0xba, 0xb3, 0xcd, 0x8a, 0x26, 0xcf, 0xae, 0x8d, - 0xbc, 0x6b, 0xea, 0xa6, 0x65, 0x5e, 0xda, 0x31, 0x9e, 0xe5, 0xdf, 0xad, 0x2b, 0xa4, 0xb9, 0x9c, - 0x6f, 0x61, 0x13, 0xdb, 0xba, 0x83, 0x6b, 0x7b, 0x5b, 0x64, 0x8e, 0x35, 0xa9, 0xf1, 0x49, 0xb1, - 0xf5, 0xdf, 0xe5, 0x38, 0x5c, 0xff, 0x37, 0x8d, 0x36, 0x26, 0x91, 0x9a, 0x98, 0xfe, 0x7b, 0xef, - 0xb1, 0xf4, 0xbf, 0x4f, 0x11, 0xc9, 0xa3, 0xf1, 0x6f, 0x69, 0x98, 0xa9, 0xb9, 0x0a, 0x57, 0xdb, - 0xdd, 0xd9, 0xd1, 0xed, 0x4b, 0xe8, 0xda, 0x00, 0x15, 0x4e, 0x35, 0x53, 0xa2, 0x5f, 0xca, 0xef, - 0x49, 0x5f, 0x2b, 0xcd, 0x9a, 0x36, 0x57, 0x42, 0xec, 0x76, 0xf0, 0x04, 0xc8, 0xba, 0xea, 0xed, - 0x79, 0x5c, 0x46, 0x36, 0x04, 0x9a, 0x53, 0x32, 0xa2, 0xd5, 0x40, 0xde, 0xc6, 0x10, 0x4d, 0x23, - 0x0d, 0x47, 0x6b, 0x8e, 0xde, 0xbc, 0xb0, 0x6c, 0xd9, 0xd6, 0xae, 0x63, 0x98, 0xb8, 0x8b, 0x1e, - 0x15, 0x20, 0xe0, 0xe9, 0x7f, 0x2a, 0xd0, 0x7f, 0xf4, 0xef, 0x29, 0xd9, 0x51, 0xd4, 0xef, 0x56, - 0x79, 0xf2, 0x21, 0x01, 0xaa, 0xe4, 0xc6, 0x45, 0x19, 0x8a, 0xc9, 0x0b, 0xed, 0x2d, 0x0a, 0xe4, - 0x4b, 0x0f, 0x74, 0x2c, 0xdb, 0x59, 0xb5, 0x9a, 0x7a, 0xbb, 0xeb, 0x58, 0x36, 0x46, 0xd5, 0x48, - 0xa9, 0xb9, 0x3d, 0x4c, 0xcb, 0x6a, 0x06, 0x83, 0x23, 0x7b, 0xe3, 0xd5, 0x4e, 0x11, 0x75, 0xfc, - 0x63, 0xd2, 0xbb, 0x8c, 0x54, 0x2a, 0xbd, 0x1c, 0x85, 0xe8, 0x79, 0xbf, 0x2e, 0x2d, 0xde, 0x61, - 0x09, 0xb9, 0x9d, 0x47, 0x29, 0xa6, 0xc6, 0xb0, 0x54, 0x9e, 0x86, 0xd9, 0xda, 0xee, 0x79, 0x9f, - 0x48, 0x97, 0x37, 0x42, 0x5e, 0x2f, 0x1d, 0xa5, 0x82, 0x29, 0x1e, 0x4f, 0x28, 0x44, 0xbe, 0xd7, - 0xc1, 0x6c, 0x97, 0xcf, 0xc6, 0xf0, 0x16, 0x13, 0x25, 0xa3, 0x53, 0x0c, 0x2e, 0x35, 0x79, 0x01, - 0xbe, 0x2f, 0x0d, 0xb3, 0xd5, 0x0e, 0x36, 0x71, 0x8b, 0x7a, 0x41, 0x0a, 0x02, 0x7c, 0x79, 0x4c, - 0x01, 0x0a, 0x84, 0x42, 0x04, 0x18, 0x78, 0x2c, 0x2f, 0x7a, 0xc2, 0x0b, 0x12, 0x62, 0x09, 0x2e, - 0xaa, 0xb4, 0xe4, 0x05, 0xf7, 0xe5, 0x34, 0x4c, 0x6b, 0xbb, 0xe6, 0xba, 0x6d, 0xb9, 0xa3, 0xb1, - 0x8d, 0xee, 0x0c, 0x3a, 0x88, 0x9b, 0xe0, 0x58, 0x6b, 0xd7, 0x26, 0xeb, 0x4f, 0x65, 0xb3, 0x86, - 0x9b, 0x96, 0xd9, 0xea, 0x92, 0x7a, 0x64, 0xb5, 0xfd, 0x1f, 0x6e, 0xcf, 0x3c, 0xff, 0x9b, 0x4a, - 0x0a, 0xbd, 0x50, 0x3a, 0xd4, 0x0d, 0xad, 0x3c, 0x57, 0xb4, 0x7c, 0x4f, 0x20, 0x19, 0xd0, 0x66, - 0x50, 0x09, 0xc9, 0x0b, 0xf7, 0xf3, 0x69, 0x50, 0x0b, 0xcd, 0xa6, 0xb5, 0x6b, 0x3a, 0x35, 0xdc, - 0xc6, 0x4d, 0xa7, 0x6e, 0xeb, 0x4d, 0xcc, 0xdb, 0xcf, 0x79, 0x50, 0x5a, 0x86, 0xcd, 0xfa, 0x60, - 0xf7, 0x91, 0xc9, 0xf1, 0xe5, 0xd2, 0x3b, 0x8e, 0xb4, 0x96, 0xfb, 0x4b, 0x89, 0x21, 0x4e, 0xb9, - 0x7d, 0x45, 0xc9, 0x82, 0x92, 0x97, 0xea, 0x27, 0xd3, 0x30, 0xe5, 0xf5, 0xd8, 0x5b, 0x32, 0xc2, - 0xfc, 0x95, 0x98, 0x93, 0x11, 0x9f, 0x78, 0x0c, 0x19, 0xbe, 0x2b, 0xc6, 0xac, 0x22, 0x8c, 0x7e, - 0x3c, 0xd1, 0x15, 0xe2, 0x8b, 0xce, 0x7d, 0xad, 0x54, 0x1b, 0x4b, 0xd5, 0xd5, 0xc5, 0x92, 0x96, - 0x57, 0xd0, 0x57, 0xd2, 0x90, 0x59, 0x37, 0xcc, 0x2d, 0x3e, 0xba, 0xd2, 0x71, 0xd7, 0x8e, 0x6c, - 0xe1, 0x07, 0x58, 0x4b, 0xa7, 0x2f, 0xea, 0xad, 0x70, 0xdc, 0xdc, 0xdd, 0x39, 0x8f, 0xed, 0xea, - 0x26, 0x19, 0x65, 0xbb, 0x75, 0xab, 0x86, 0x4d, 0x6a, 0x84, 0x66, 0xb5, 0xbe, 0xdf, 0x44, 0x13, - 0x4c, 0x62, 0xf2, 0xe0, 0x72, 0x12, 0x22, 0x71, 0x9f, 0xa9, 0x34, 0xc7, 0x54, 0xac, 0x69, 0x43, - 0x1f, 0xe2, 0xc9, 0x6b, 0xea, 0x1f, 0x64, 0xe1, 0x44, 0xc1, 0xbc, 0x44, 0x6c, 0x0a, 0xda, 0xc1, - 0x17, 0xb7, 0x75, 0x73, 0x0b, 0x93, 0x01, 0xc2, 0x97, 0x38, 0x1f, 0xa2, 0x3f, 0x25, 0x86, 0xe8, - 0x57, 0x35, 0x98, 0xb0, 0xec, 0x16, 0xb6, 0x17, 0x2e, 0x11, 0x9e, 0x7a, 0x97, 0x9d, 0x59, 0x9b, - 0xec, 0x57, 0xc4, 0x3c, 0x23, 0x3f, 0x5f, 0xa5, 0xff, 0x6b, 0x1e, 0xa1, 0x33, 0x37, 0xc1, 0x04, - 0x4b, 0x53, 0x67, 0x60, 0xb2, 0xaa, 0x2d, 0x96, 0xb4, 0x46, 0x79, 0x31, 0x7f, 0x44, 0xbd, 0x0c, - 0x8e, 0x96, 0xeb, 0x25, 0xad, 0x50, 0x2f, 0x57, 0x2b, 0x0d, 0x92, 0x9e, 0x4f, 0xa1, 0xe7, 0x65, - 0x64, 0x3d, 0x7b, 0xa3, 0x99, 0xe9, 0x07, 0xab, 0x06, 0x13, 0x4d, 0x9a, 0x81, 0x0c, 0xa1, 0xd3, - 0xb1, 0x6a, 0xc7, 0x08, 0xd2, 0x04, 0xcd, 0x23, 0xa4, 0x9e, 0x06, 0xb8, 0x68, 0x5b, 0xe6, 0x56, - 0x70, 0xea, 0x70, 0x52, 0xe3, 0x52, 0xd0, 0x83, 0x29, 0xc8, 0xd1, 0x7f, 0xc8, 0x95, 0x24, 0xe4, - 0x29, 0x10, 0xbc, 0xf7, 0xee, 0x5a, 0xbc, 0x44, 0x5e, 0xc1, 0x44, 0x8b, 0xbd, 0xba, 0xba, 0x48, - 0x65, 0x40, 0x2d, 0x61, 0x56, 0x95, 0x9b, 0x21, 0x47, 0xff, 0x65, 0x5e, 0x07, 0xe1, 0xe1, 0x45, - 0x69, 0x36, 0x49, 0x3f, 0x65, 0x79, 0x99, 0x26, 0xaf, 0xcd, 0x1f, 0x4e, 0xc3, 0x64, 0x05, 0x3b, - 0xc5, 0x6d, 0xdc, 0xbc, 0x80, 0x1e, 0x2b, 0x2e, 0x80, 0xb6, 0x0d, 0x6c, 0x3a, 0xf7, 0xed, 0xb4, - 0xfd, 0x05, 0x50, 0x2f, 0x01, 0xbd, 0x80, 0xef, 0x7c, 0xef, 0x16, 0xf5, 0xe7, 0xc6, 0x3e, 0x75, - 0xf5, 0x4a, 0x08, 0x51, 0x99, 0x93, 0x90, 0xb3, 0x71, 0x77, 0xb7, 0xed, 0x2d, 0xa2, 0xb1, 0x37, - 0xf4, 0x90, 0x2f, 0xce, 0xa2, 0x20, 0xce, 0x9b, 0xe5, 0x8b, 0x18, 0x43, 0xbc, 0xd2, 0x0c, 0x4c, - 0x94, 0x4d, 0xc3, 0x31, 0xf4, 0x36, 0x7a, 0x61, 0x06, 0x66, 0x6b, 0xd8, 0x59, 0xd7, 0x6d, 0x7d, - 0x07, 0x3b, 0xd8, 0xee, 0xa2, 0xef, 0x89, 0x7d, 0x42, 0xa7, 0xad, 0x3b, 0x9b, 0x96, 0xbd, 0xe3, - 0xa9, 0xa6, 0xf7, 0xee, 0xaa, 0xe6, 0x1e, 0xb6, 0xbb, 0x01, 0x5f, 0xde, 0xab, 0xfb, 0xe5, 0xa2, - 0x65, 0x5f, 0x70, 0x07, 0x41, 0x36, 0x4d, 0x63, 0xaf, 0x2e, 0xbd, 0xb6, 0xb5, 0xb5, 0x8a, 0xf7, - 0xb0, 0x17, 0x2e, 0xcd, 0x7f, 0x77, 0xe7, 0x02, 0x2d, 0xab, 0x62, 0x39, 0x6e, 0xa7, 0xbd, 0x6a, - 0x6d, 0xd1, 0x78, 0xb1, 0x93, 0x9a, 0x98, 0x18, 0xe4, 0xd2, 0xf7, 0x30, 0xc9, 0x95, 0xe3, 0x73, - 0xb1, 0x44, 0x75, 0x1e, 0x54, 0xff, 0xb7, 0x3a, 0x6e, 0xe3, 0x1d, 0xec, 0xd8, 0x97, 0xc8, 0xb5, - 0x10, 0x93, 0x5a, 0x9f, 0x2f, 0x6c, 0x80, 0x96, 0x9f, 0xac, 0x33, 0xe9, 0xcd, 0x0b, 0x92, 0x3b, - 0xd0, 0x64, 0x5d, 0x86, 0xe2, 0x58, 0xae, 0xbd, 0x52, 0x5c, 0x6b, 0xe6, 0x95, 0x0a, 0x64, 0xc8, - 0xe0, 0xf9, 0xd6, 0x94, 0xb0, 0xc2, 0xb4, 0x83, 0xbb, 0x5d, 0x7d, 0x0b, 0x7b, 0x2b, 0x4c, 0xec, - 0x55, 0xbd, 0x0d, 0xb2, 0x6d, 0x82, 0x29, 0x1d, 0x1c, 0xae, 0x15, 0x6a, 0xe6, 0x1a, 0x18, 0x2e, - 0x2d, 0x7f, 0x24, 0x20, 0x70, 0x6b, 0xf4, 0x8f, 0x33, 0xf7, 0x40, 0x96, 0xc2, 0x3f, 0x05, 0xd9, - 0xc5, 0xd2, 0xc2, 0xc6, 0x72, 0xfe, 0x88, 0xfb, 0xe8, 0xf1, 0x37, 0x05, 0xd9, 0xa5, 0x42, 0xbd, - 0xb0, 0x9a, 0x4f, 0xbb, 0xf5, 0x28, 0x57, 0x96, 0xaa, 0x79, 0xc5, 0x4d, 0x5c, 0x2f, 0x54, 0xca, - 0xc5, 0x7c, 0x46, 0x9d, 0x86, 0x89, 0x73, 0x05, 0xad, 0x52, 0xae, 0x2c, 0xe7, 0xb3, 0xe8, 0x6f, - 0x78, 0xfc, 0x6e, 0x17, 0xf1, 0xbb, 0x2e, 0x8c, 0xa7, 0x7e, 0x90, 0xbd, 0xca, 0x87, 0xec, 0x4e, - 0x01, 0xb2, 0x1f, 0x93, 0x21, 0x32, 0x06, 0x77, 0xa6, 0x1c, 0x4c, 0xac, 0xdb, 0x56, 0x13, 0x77, - 0xbb, 0xe8, 0x57, 0xd3, 0x90, 0x2b, 0xea, 0x66, 0x13, 0xb7, 0xd1, 0x15, 0x01, 0x54, 0xd4, 0x55, - 0x34, 0xe5, 0x9f, 0x16, 0xfb, 0xc7, 0x94, 0x6c, 0xef, 0xc7, 0xe8, 0xce, 0x53, 0x9a, 0x21, 0xf2, - 0x91, 0xeb, 0xe5, 0x22, 0x49, 0x8d, 0xe1, 0x6a, 0x9c, 0x34, 0x4c, 0xb1, 0xd5, 0x80, 0xf3, 0x98, - 0x9f, 0x87, 0x7f, 0x2f, 0x25, 0x3b, 0x39, 0xf4, 0x6a, 0xe0, 0x93, 0x09, 0x91, 0x87, 0xdc, 0x44, - 0x70, 0x10, 0xb5, 0x31, 0x6c, 0x1e, 0xa6, 0x61, 0x7a, 0xc3, 0xec, 0xf6, 0x13, 0x8a, 0x7c, 0x1c, - 0x7d, 0xaf, 0x1a, 0x1c, 0xa1, 0x03, 0xc5, 0xd1, 0x1f, 0x4c, 0x2f, 0x79, 0xc1, 0x7c, 0x2f, 0x05, - 0xc7, 0x97, 0xb1, 0x89, 0x6d, 0xa3, 0x49, 0x6b, 0xe0, 0x49, 0xe2, 0x4e, 0x51, 0x12, 0x8f, 0x15, - 0x38, 0xef, 0xf7, 0x87, 0x28, 0x81, 0xd7, 0xfa, 0x12, 0xb8, 0x5b, 0x90, 0xc0, 0x4d, 0x92, 0x74, - 0xc6, 0x70, 0x1f, 0xfa, 0x14, 0xcc, 0x54, 0x2c, 0xc7, 0xd8, 0x34, 0x9a, 0xd4, 0x07, 0xed, 0x15, - 0x0a, 0x64, 0x56, 0x8d, 0xae, 0x83, 0x0a, 0x41, 0x77, 0x72, 0x0d, 0x4c, 0x1b, 0x66, 0xb3, 0xbd, - 0xdb, 0xc2, 0x1a, 0xd6, 0x69, 0xbf, 0x32, 0xa9, 0xf1, 0x49, 0xc1, 0xd6, 0xbe, 0xcb, 0x96, 0xe2, - 0x6d, 0xed, 0x7f, 0x46, 0x7a, 0x19, 0x86, 0x67, 0x81, 0x04, 0xa4, 0x0c, 0xb1, 0xbb, 0x0a, 0x30, - 0x6b, 0x72, 0x59, 0x3d, 0x83, 0xbd, 0xf7, 0x42, 0x01, 0x9e, 0x9c, 0x26, 0xfe, 0x81, 0x3e, 0x20, - 0xd5, 0x58, 0x07, 0x31, 0x14, 0x0f, 0x99, 0xa5, 0x21, 0x26, 0xc9, 0x2a, 0xcc, 0x95, 0x2b, 0xf5, - 0x92, 0x56, 0x29, 0xac, 0xb2, 0x2c, 0x0a, 0xfa, 0xb7, 0x34, 0x64, 0x35, 0xdc, 0x69, 0x5f, 0xe2, - 0x23, 0x46, 0x33, 0x47, 0xf1, 0x94, 0xef, 0x28, 0xae, 0x2e, 0x01, 0xe8, 0x4d, 0xb7, 0x60, 0x72, - 0xa5, 0x56, 0xba, 0x6f, 0x1c, 0x53, 0xa1, 0x82, 0x05, 0x3f, 0xb7, 0xc6, 0xfd, 0x89, 0x5e, 0x24, - 0xbd, 0x73, 0x24, 0x50, 0x23, 0x1c, 0x86, 0xf4, 0x09, 0x1f, 0x94, 0xda, 0xec, 0x19, 0x48, 0xee, - 0x70, 0xc4, 0xff, 0xd5, 0x34, 0x64, 0xea, 0x6e, 0x6f, 0xc9, 0x75, 0x9c, 0x7f, 0x38, 0x9c, 0x8e, - 0xbb, 0x64, 0x42, 0x74, 0xfc, 0x2e, 0x98, 0xe1, 0x35, 0x96, 0xb9, 0x4a, 0x44, 0xaa, 0xb8, 0xf0, - 0xc3, 0x30, 0x1a, 0xde, 0x87, 0x9d, 0xc3, 0x11, 0xf1, 0xa7, 0x1e, 0x07, 0xb0, 0x86, 0x77, 0xce, - 0x63, 0xbb, 0xbb, 0x6d, 0x74, 0xd0, 0xdf, 0x2a, 0x30, 0xb5, 0x8c, 0x9d, 0x9a, 0xa3, 0x3b, 0xbb, - 0xdd, 0x9e, 0xed, 0x4e, 0xd3, 0x2a, 0xea, 0xcd, 0x6d, 0xcc, 0xba, 0x23, 0xef, 0x15, 0xbd, 0x47, - 0x91, 0xf5, 0x27, 0x0a, 0xca, 0x99, 0xf7, 0xcb, 0x08, 0xc1, 0xe4, 0xf1, 0x90, 0x69, 0xe9, 0x8e, - 0xce, 0xb0, 0xb8, 0xa2, 0x07, 0x8b, 0x80, 0x90, 0x46, 0xb2, 0xa1, 0xdf, 0x4c, 0xcb, 0x38, 0x14, - 0x49, 0x94, 0x1f, 0x0f, 0x84, 0x0f, 0xa4, 0x86, 0x40, 0xe1, 0x18, 0xcc, 0x56, 0xaa, 0xf5, 0xc6, - 0x6a, 0x75, 0x79, 0xb9, 0xe4, 0xa6, 0xe6, 0x15, 0xf5, 0x24, 0xa8, 0xeb, 0x85, 0xfb, 0xd6, 0x4a, - 0x95, 0x7a, 0xa3, 0x52, 0x5d, 0x2c, 0xb1, 0x3f, 0x33, 0xea, 0x51, 0x98, 0x2e, 0x16, 0x8a, 0x2b, - 0x5e, 0x42, 0x56, 0x3d, 0x05, 0xc7, 0xd7, 0x4a, 0x6b, 0x0b, 0x25, 0xad, 0xb6, 0x52, 0x5e, 0x6f, - 0xb8, 0x64, 0x96, 0xaa, 0x1b, 0x95, 0xc5, 0x7c, 0x4e, 0x45, 0x70, 0x92, 0xfb, 0x72, 0x4e, 0xab, - 0x56, 0x96, 0x1b, 0xb5, 0x7a, 0xa1, 0x5e, 0xca, 0x4f, 0xa8, 0x97, 0xc1, 0xd1, 0x62, 0xa1, 0x42, - 0xb2, 0x17, 0xab, 0x95, 0x4a, 0xa9, 0x58, 0xcf, 0x4f, 0xa2, 0x7f, 0xcf, 0xc0, 0x74, 0xb9, 0x5b, - 0xd1, 0x77, 0xf0, 0x59, 0xbd, 0x6d, 0xb4, 0xd0, 0x0b, 0xb9, 0x99, 0xc7, 0x75, 0x30, 0x6b, 0xd3, - 0x47, 0xdc, 0xaa, 0x1b, 0x98, 0xa2, 0x39, 0xab, 0x89, 0x89, 0xee, 0x9c, 0xdc, 0x24, 0x04, 0xbc, - 0x39, 0x39, 0x7d, 0x53, 0x17, 0x00, 0xe8, 0x53, 0x3d, 0xb8, 0xdc, 0xf5, 0x4c, 0x6f, 0x6b, 0xd2, - 0x77, 0x70, 0x17, 0xdb, 0x7b, 0x46, 0x13, 0x7b, 0x39, 0x35, 0xee, 0x2f, 0xf4, 0x35, 0x45, 0x76, - 0x7f, 0x91, 0x03, 0x95, 0xab, 0x4e, 0x48, 0x6f, 0xf8, 0xf3, 0x8a, 0xcc, 0xee, 0xa0, 0x14, 0xc9, - 0x78, 0x9a, 0xf2, 0x92, 0xf4, 0x70, 0xcb, 0xb6, 0xf5, 0x6a, 0xb5, 0x51, 0x5b, 0xa9, 0x6a, 0xf5, - 0xbc, 0xa2, 0xce, 0xc0, 0xa4, 0xfb, 0xba, 0x5a, 0xad, 0x2c, 0xe7, 0x33, 0xea, 0x09, 0x38, 0xb6, - 0x52, 0xa8, 0x35, 0xca, 0x95, 0xb3, 0x85, 0xd5, 0xf2, 0x62, 0xa3, 0xb8, 0x52, 0xd0, 0x6a, 0xf9, - 0xac, 0x7a, 0x05, 0x9c, 0xa8, 0x97, 0x4b, 0x5a, 0x63, 0xa9, 0x54, 0xa8, 0x6f, 0x68, 0xa5, 0x5a, - 0xa3, 0x52, 0x6d, 0x54, 0x0a, 0x6b, 0xa5, 0x7c, 0xce, 0x6d, 0xfe, 0xe4, 0x53, 0xa0, 0x36, 0x13, - 0xfb, 0x95, 0x71, 0x32, 0x44, 0x19, 0xa7, 0x7a, 0x95, 0x11, 0x78, 0xb5, 0xd2, 0x4a, 0xb5, 0x92, - 0x76, 0xb6, 0x94, 0x9f, 0xee, 0xa7, 0x6b, 0x33, 0xea, 0x71, 0xc8, 0xbb, 0x3c, 0x34, 0xca, 0x35, - 0x2f, 0xe7, 0x62, 0x7e, 0x16, 0x7d, 0x32, 0x07, 0x27, 0x35, 0xbc, 0x65, 0x74, 0x1d, 0x6c, 0xaf, - 0xeb, 0x97, 0x76, 0xb0, 0xe9, 0x78, 0x9d, 0xfc, 0xff, 0x8a, 0xad, 0x8c, 0x6b, 0x30, 0xdb, 0xa1, - 0x34, 0xd6, 0xb0, 0xb3, 0x6d, 0xb5, 0xd8, 0x28, 0xfc, 0xd8, 0xd0, 0x9e, 0x63, 0x7e, 0x9d, 0xcf, - 0xae, 0x89, 0x7f, 0x73, 0xba, 0xad, 0x44, 0xe8, 0x76, 0x66, 0x18, 0xdd, 0x56, 0xaf, 0x82, 0xa9, - 0xdd, 0x2e, 0xb6, 0x4b, 0x3b, 0xba, 0xd1, 0xf6, 0x2e, 0xe7, 0xf4, 0x13, 0xd0, 0x3b, 0x33, 0xb2, - 0x27, 0x56, 0xb8, 0xba, 0xf4, 0x17, 0x63, 0x48, 0xdf, 0x7a, 0x1a, 0x80, 0x55, 0x76, 0xc3, 0x6e, - 0x33, 0x65, 0xe5, 0x52, 0x5c, 0xfe, 0xce, 0x1b, 0xed, 0xb6, 0x61, 0x6e, 0xf9, 0xfb, 0xfe, 0x41, - 0x02, 0x7a, 0x89, 0x22, 0x73, 0x82, 0x25, 0x2e, 0x6f, 0xf1, 0x5a, 0xd3, 0x8b, 0xd2, 0x63, 0xee, - 0x77, 0xf7, 0x37, 0x9d, 0x9c, 0x9a, 0x87, 0x19, 0x92, 0xc6, 0x5a, 0x60, 0x7e, 0xc2, 0xed, 0x83, - 0x3d, 0x72, 0x6b, 0xa5, 0xfa, 0x4a, 0x75, 0xd1, 0xff, 0x36, 0xe9, 0x92, 0x74, 0x99, 0x29, 0x54, - 0xee, 0x23, 0xad, 0x71, 0x4a, 0x7d, 0x14, 0x5c, 0xc1, 0x75, 0xd8, 0x85, 0x55, 0xad, 0x54, 0x58, - 0xbc, 0xaf, 0x51, 0x7a, 0x66, 0xb9, 0x56, 0xaf, 0x89, 0x8d, 0xcb, 0x6b, 0x47, 0xd3, 0x2e, 0xbf, - 0xa5, 0xb5, 0x42, 0x79, 0x95, 0xf5, 0xef, 0x4b, 0x55, 0x6d, 0xad, 0x50, 0xcf, 0xcf, 0xa0, 0x57, - 0x2a, 0x90, 0x5f, 0xc6, 0xce, 0xba, 0x65, 0x3b, 0x7a, 0x7b, 0xd5, 0x30, 0x2f, 0x6c, 0xd8, 0x6d, - 0x61, 0xb2, 0x29, 0x1d, 0xa6, 0x43, 0x1c, 0x22, 0x05, 0x82, 0xe1, 0x3b, 0xe2, 0x1d, 0x92, 0x2d, - 0x50, 0xa6, 0x20, 0x01, 0x3d, 0x3b, 0x2d, 0xb3, 0xdc, 0x2d, 0x5f, 0x6a, 0x3c, 0x3d, 0x79, 0xce, - 0xb8, 0xc7, 0xe7, 0x3e, 0xa8, 0xe5, 0xd0, 0xf3, 0x33, 0x30, 0xb9, 0x64, 0x98, 0x7a, 0xdb, 0x78, - 0x96, 0x10, 0xbf, 0x34, 0xe8, 0x63, 0x52, 0x11, 0x7d, 0x4c, 0x7a, 0xa8, 0xf1, 0xf3, 0x97, 0x15, - 0xd9, 0xe5, 0x05, 0x4e, 0xf6, 0x1e, 0x93, 0x21, 0x83, 0xe7, 0x47, 0xd2, 0x32, 0xcb, 0x0b, 0x83, - 0xe9, 0xc5, 0xc3, 0xf0, 0xd3, 0x3f, 0x1c, 0x36, 0x56, 0x4f, 0xfb, 0x9e, 0xec, 0xa7, 0x0a, 0x53, - 0xe8, 0x4f, 0x15, 0x40, 0xcb, 0xd8, 0x39, 0x8b, 0x6d, 0x7f, 0x2a, 0x40, 0x7a, 0x7d, 0x66, 0x6f, - 0x73, 0x4d, 0xf6, 0xad, 0x3c, 0x80, 0xe7, 0x44, 0x00, 0x0b, 0x11, 0x8d, 0x27, 0x84, 0x74, 0x48, - 0xe3, 0x2d, 0x43, 0xae, 0x4b, 0xbe, 0x33, 0x35, 0x7b, 0x42, 0xf8, 0x70, 0x49, 0x88, 0xf1, 0xd4, - 0x29, 0x61, 0x8d, 0x11, 0x40, 0xdf, 0xf7, 0x27, 0x41, 0x3f, 0x21, 0x68, 0xc7, 0xd2, 0x81, 0x99, - 0x8d, 0xa7, 0x2f, 0x76, 0xb2, 0xea, 0xd2, 0xcf, 0xbe, 0x41, 0x1f, 0xc9, 0xc2, 0xf1, 0x7e, 0xd5, - 0x41, 0xbf, 0x95, 0x12, 0x76, 0xd8, 0x31, 0x19, 0xf2, 0x53, 0x6c, 0x03, 0xd1, 0x7d, 0x51, 0x9f, - 0x04, 0x27, 0xfc, 0x65, 0xb8, 0xba, 0x55, 0xc1, 0x17, 0xbb, 0x6d, 0xec, 0x38, 0xd8, 0x26, 0x55, - 0x9b, 0xd4, 0xfa, 0x7f, 0x54, 0x9f, 0x0a, 0x97, 0x1b, 0x66, 0xd7, 0x68, 0x61, 0xbb, 0x6e, 0x74, - 0xba, 0x05, 0xb3, 0x55, 0xdf, 0x75, 0x2c, 0xdb, 0xd0, 0xd9, 0x55, 0x92, 0x93, 0x5a, 0xd8, 0x67, - 0xf5, 0x46, 0xc8, 0x1b, 0xdd, 0xaa, 0x79, 0xde, 0xd2, 0xed, 0x96, 0x61, 0x6e, 0xad, 0x1a, 0x5d, - 0x87, 0x79, 0x00, 0xef, 0x4b, 0x47, 0x7f, 0xa7, 0xc8, 0x1e, 0xa6, 0x1b, 0x00, 0x6b, 0x48, 0x87, - 0xf2, 0x02, 0x45, 0xe6, 0x78, 0x5c, 0x3c, 0xda, 0xf1, 0x94, 0xe5, 0x79, 0xe3, 0x36, 0x24, 0xfa, - 0x8f, 0xe0, 0xa4, 0x6b, 0xa1, 0xe9, 0x9e, 0x21, 0x70, 0xb6, 0xa4, 0x95, 0x97, 0xca, 0x25, 0xd7, - 0xac, 0x38, 0x01, 0xc7, 0x82, 0x6f, 0x8b, 0xf7, 0x35, 0x6a, 0xa5, 0x4a, 0x3d, 0x3f, 0xe9, 0xf6, - 0x53, 0x34, 0x79, 0xa9, 0x50, 0x5e, 0x2d, 0x2d, 0x36, 0xea, 0x55, 0xf7, 0xcb, 0xe2, 0x70, 0xa6, - 0x05, 0x7a, 0x30, 0x03, 0x47, 0x89, 0x6c, 0x2f, 0x11, 0xa9, 0xba, 0x42, 0xe9, 0xf1, 0xb5, 0xf5, - 0x01, 0x9a, 0xa2, 0xe2, 0x45, 0x9f, 0x93, 0xbe, 0x29, 0x93, 0x83, 0xb0, 0xa7, 0x8c, 0x10, 0xcd, - 0xf8, 0x5e, 0x5a, 0x26, 0x42, 0x85, 0x34, 0xd9, 0x78, 0x4a, 0xf1, 0x2f, 0xe3, 0x1e, 0x71, 0xc2, - 0xc1, 0x27, 0x56, 0x66, 0x91, 0xfc, 0xfc, 0xcc, 0xf5, 0xb2, 0x46, 0xd4, 0x61, 0x0e, 0x80, 0xa4, - 0x10, 0x0d, 0xa2, 0x7a, 0xd0, 0x77, 0xbc, 0x0a, 0xd3, 0x83, 0x42, 0xb1, 0x5e, 0x3e, 0x5b, 0x0a, - 0xd3, 0x83, 0xcf, 0x2a, 0x30, 0xb9, 0x8c, 0x1d, 0x77, 0x4e, 0xd5, 0x45, 0x4f, 0x93, 0x58, 0xff, - 0x71, 0xcd, 0x98, 0xb6, 0xd5, 0xd4, 0xdb, 0xfe, 0x32, 0x00, 0x7d, 0x43, 0xcf, 0x1d, 0xc6, 0x04, - 0xf1, 0x8a, 0x0e, 0x19, 0xaf, 0x9e, 0x02, 0x59, 0xc7, 0xfd, 0xcc, 0x96, 0xa1, 0x1f, 0x1d, 0x3a, - 0x5c, 0xb9, 0x44, 0x16, 0x75, 0x47, 0xd7, 0x68, 0x7e, 0x6e, 0x74, 0x92, 0xb4, 0x5d, 0x42, 0x18, - 0xf9, 0x61, 0xb4, 0x3f, 0xff, 0x46, 0x81, 0x13, 0xb4, 0x7d, 0x14, 0x3a, 0x9d, 0x9a, 0x63, 0xd9, - 0x58, 0xc3, 0x4d, 0x6c, 0x74, 0x9c, 0x9e, 0xf5, 0x3d, 0x9b, 0xa6, 0x7a, 0x9b, 0xcd, 0xec, 0x15, - 0xbd, 0x49, 0x91, 0x8d, 0xc1, 0xbc, 0xaf, 0x3d, 0xf6, 0x94, 0x17, 0xd2, 0xd8, 0x3f, 0x91, 0x96, - 0x89, 0xaa, 0x1c, 0x93, 0x78, 0x3c, 0xa0, 0x3e, 0x7a, 0x08, 0x40, 0x79, 0x2b, 0x37, 0x5a, 0xa9, - 0x58, 0x2a, 0xaf, 0xbb, 0x83, 0xc0, 0xd5, 0x70, 0xe5, 0xfa, 0x86, 0x56, 0x5c, 0x29, 0xd4, 0x4a, - 0x0d, 0xad, 0xb4, 0x5c, 0xae, 0xd5, 0x99, 0x53, 0x16, 0xfd, 0x6b, 0x42, 0xbd, 0x0a, 0x4e, 0xd5, - 0x36, 0x16, 0x6a, 0x45, 0xad, 0xbc, 0x4e, 0xd2, 0xb5, 0x52, 0xa5, 0x74, 0x8e, 0x7d, 0x9d, 0x44, - 0x1f, 0xca, 0xc3, 0xb4, 0x3b, 0x01, 0xa8, 0xd1, 0x79, 0x01, 0xfa, 0x76, 0x06, 0xa6, 0x35, 0xdc, - 0xb5, 0xda, 0x7b, 0x64, 0x8e, 0x30, 0xae, 0xa9, 0xc7, 0x77, 0x15, 0xd9, 0xf3, 0xdb, 0x1c, 0xb3, - 0xf3, 0x1c, 0xa3, 0xe1, 0x13, 0x4d, 0x7d, 0x4f, 0x37, 0xda, 0xfa, 0x79, 0xd6, 0xd5, 0x4c, 0x6a, - 0x41, 0x82, 0x3a, 0x0f, 0xaa, 0x75, 0xd1, 0xc4, 0x76, 0xad, 0x79, 0xb1, 0xe4, 0x6c, 0x17, 0x5a, - 0x2d, 0x1b, 0x77, 0xbb, 0x6c, 0xf5, 0xa2, 0xcf, 0x17, 0xf5, 0x06, 0x38, 0x4a, 0x52, 0xb9, 0xcc, - 0xd4, 0x41, 0xa6, 0x37, 0xd9, 0xcf, 0x59, 0x30, 0x2f, 0x79, 0x39, 0xb3, 0x5c, 0xce, 0x20, 0x99, - 0x3f, 0x2e, 0x91, 0x13, 0x4f, 0xe9, 0x5c, 0x03, 0xd3, 0xa6, 0xbe, 0x83, 0x4b, 0x0f, 0x74, 0x0c, - 0x1b, 0x77, 0x89, 0x63, 0x8c, 0xa2, 0xf1, 0x49, 0xe8, 0x23, 0x52, 0xe7, 0xcd, 0xe5, 0x24, 0x16, - 0x4f, 0xf7, 0x97, 0x87, 0x50, 0xfd, 0x3e, 0xfd, 0x8c, 0x82, 0x3e, 0xa4, 0xc0, 0x0c, 0x63, 0xaa, - 0x60, 0x5e, 0x2a, 0xb7, 0xd0, 0xd5, 0x82, 0xf1, 0xab, 0xbb, 0x69, 0x9e, 0xf1, 0x4b, 0x5e, 0xd0, - 0x2f, 0x28, 0xb2, 0xee, 0xce, 0x7d, 0x2a, 0x4e, 0xca, 0x08, 0x77, 0x1c, 0xdd, 0xb4, 0x76, 0x99, - 0xa3, 0xea, 0xa4, 0x46, 0x5f, 0x92, 0x5c, 0xd4, 0x43, 0xbf, 0x2b, 0xe5, 0x4c, 0x2d, 0x59, 0x8d, - 0x43, 0x02, 0xf0, 0x53, 0x0a, 0xcc, 0x31, 0xae, 0x6a, 0xec, 0x9c, 0x8f, 0xd4, 0x81, 0xb7, 0x5f, - 0x94, 0x36, 0x04, 0xfb, 0xd4, 0x9f, 0x95, 0xf4, 0x88, 0x01, 0xf2, 0x63, 0x52, 0xc1, 0xd1, 0xa4, - 0x2b, 0x72, 0x48, 0x50, 0xbe, 0x2b, 0x03, 0xd3, 0x1b, 0x5d, 0x6c, 0x33, 0xbf, 0x7d, 0xf4, 0x50, - 0x06, 0x94, 0x65, 0x2c, 0x6c, 0xa4, 0xbe, 0x58, 0xda, 0xc3, 0x97, 0xaf, 0x2c, 0x47, 0xd4, 0xb5, - 0x91, 0x42, 0x60, 0xbb, 0x1e, 0xe6, 0xa8, 0x48, 0x0b, 0x8e, 0xe3, 0x1a, 0x89, 0x9e, 0x37, 0x6d, - 0x4f, 0xea, 0x28, 0xb6, 0x8a, 0x48, 0x59, 0x6e, 0x96, 0xa2, 0xcb, 0xd3, 0x2a, 0xde, 0xa4, 0xf3, - 0xd9, 0x8c, 0xd6, 0x93, 0xaa, 0xde, 0x02, 0x97, 0x59, 0x1d, 0x4c, 0xcf, 0xaf, 0x70, 0x99, 0xb3, - 0x24, 0x73, 0xbf, 0x4f, 0xe8, 0xdb, 0x52, 0xbe, 0xba, 0xf2, 0xd2, 0x89, 0xa7, 0x0b, 0x9d, 0xd1, - 0x98, 0x24, 0xc7, 0x21, 0xef, 0xe6, 0x20, 0xfb, 0x2f, 0x5a, 0xa9, 0x56, 0x5d, 0x3d, 0x5b, 0xea, - 0xbf, 0x8c, 0x91, 0x45, 0xcf, 0x53, 0x60, 0x6a, 0xc1, 0xb6, 0xf4, 0x56, 0x53, 0xef, 0x3a, 0xe8, - 0xfb, 0x69, 0x98, 0x59, 0xd7, 0x2f, 0xb5, 0x2d, 0xbd, 0x45, 0xfc, 0xfb, 0x7b, 0xfa, 0x82, 0x0e, - 0xfd, 0xe4, 0xf5, 0x05, 0xec, 0x55, 0x3c, 0x18, 0xe8, 0x1f, 0xdd, 0x4b, 0xc9, 0x5c, 0xa8, 0xe9, - 0x6f, 0xf3, 0xa5, 0xfb, 0x05, 0x2b, 0xf5, 0xf8, 0x9a, 0xe7, 0x79, 0x0a, 0xb1, 0x28, 0x3f, 0x24, - 0x17, 0x7e, 0x54, 0x86, 0xe4, 0xe1, 0xec, 0xca, 0x3f, 0x7f, 0x12, 0x72, 0x8b, 0x98, 0x58, 0x71, - 0xff, 0x23, 0x0d, 0x13, 0x35, 0xec, 0x10, 0x0b, 0xee, 0x36, 0xc1, 0x53, 0xb8, 0x45, 0x32, 0x04, - 0x4e, 0xec, 0xde, 0xbb, 0x3b, 0x59, 0xe7, 0xce, 0x5b, 0x93, 0xe7, 0x18, 0x1e, 0x89, 0xb4, 0xdc, - 0x79, 0x56, 0xe6, 0x81, 0x3c, 0x12, 0x23, 0x49, 0x25, 0xef, 0x6b, 0xf5, 0x9e, 0x34, 0x73, 0xad, - 0xe2, 0x7a, 0xbd, 0xd7, 0xf1, 0xfa, 0x19, 0xe9, 0x6d, 0xc6, 0x98, 0x8f, 0x70, 0x8e, 0x7a, 0x22, - 0x4c, 0x50, 0x99, 0x7b, 0xf3, 0xd1, 0x5e, 0x3f, 0x05, 0x4a, 0x82, 0x9c, 0xbd, 0xf6, 0x72, 0x4a, - 0xba, 0xa8, 0x85, 0x17, 0x3e, 0x96, 0x18, 0x04, 0x33, 0x15, 0xec, 0x5c, 0xb4, 0xec, 0x0b, 0x35, - 0x47, 0x77, 0x30, 0xfa, 0x97, 0x34, 0x28, 0x35, 0xec, 0xf0, 0xd1, 0x4f, 0x2a, 0x70, 0x8c, 0x56, - 0x88, 0x65, 0x24, 0xfd, 0x37, 0xad, 0xc8, 0x35, 0x7d, 0x85, 0xc0, 0xe5, 0xd3, 0xf6, 0xff, 0x8a, - 0x7e, 0xb5, 0x6f, 0xd0, 0xa7, 0x74, 0x9f, 0x49, 0x03, 0x93, 0x0c, 0xcf, 0xa0, 0xab, 0x60, 0x21, - 0x7a, 0xfa, 0x61, 0x29, 0xb3, 0x5a, 0x8e, 0xe6, 0xe1, 0x74, 0x05, 0x1f, 0xbb, 0x02, 0x32, 0xc5, - 0x6d, 0xdd, 0x41, 0xef, 0x56, 0x00, 0x0a, 0xad, 0xd6, 0x1a, 0xf5, 0x01, 0xe7, 0x1d, 0xd2, 0xce, - 0xc0, 0x4c, 0x73, 0x5b, 0x0f, 0xee, 0x36, 0xa1, 0xfd, 0x81, 0x90, 0xa6, 0x3e, 0x29, 0x70, 0x26, - 0xa7, 0x52, 0x45, 0x3d, 0x30, 0xb9, 0x65, 0x30, 0xda, 0xbe, 0xa3, 0xb9, 0x18, 0x0a, 0x33, 0xf2, - 0x08, 0x9d, 0xfb, 0xfb, 0x7c, 0xc0, 0x5e, 0xf8, 0x1c, 0x8e, 0x91, 0xf6, 0x0f, 0xd8, 0x04, 0x09, - 0x31, 0x4f, 0x7a, 0xcb, 0x05, 0xf4, 0x88, 0xe6, 0x6b, 0x2c, 0xa1, 0x6b, 0xd5, 0x52, 0xcb, 0xf0, - 0x44, 0xcb, 0x02, 0x66, 0xa1, 0x17, 0xa5, 0xe2, 0xc1, 0x17, 0x2d, 0xb8, 0xbb, 0x61, 0x16, 0xb7, - 0x0c, 0x07, 0x7b, 0xb5, 0x64, 0x02, 0x8c, 0x82, 0x58, 0xfc, 0x01, 0x3d, 0x47, 0x3a, 0xe8, 0x1a, - 0x11, 0xe8, 0xfe, 0x1a, 0x85, 0xb4, 0x3f, 0xb9, 0x30, 0x6a, 0x72, 0x34, 0x93, 0x07, 0xeb, 0xb9, - 0x0a, 0x9c, 0xa8, 0x5b, 0x5b, 0x5b, 0x6d, 0xec, 0x89, 0x09, 0x53, 0xef, 0x4c, 0xa4, 0x8f, 0x12, - 0x2e, 0xb2, 0x13, 0x64, 0xdd, 0x6f, 0xf8, 0x47, 0xc9, 0xdc, 0x17, 0xf1, 0xc4, 0x54, 0xe4, 0x2c, - 0x8a, 0x88, 0xab, 0x2f, 0x9f, 0x21, 0x28, 0xc8, 0x05, 0x7c, 0x96, 0x26, 0x9b, 0x3c, 0x10, 0x5f, - 0x4a, 0xc3, 0x2c, 0xbd, 0xb9, 0xd2, 0x53, 0xd0, 0x7b, 0x47, 0x08, 0x00, 0xfa, 0x7e, 0x4a, 0xd6, - 0xcf, 0x96, 0xc8, 0x44, 0xe0, 0x24, 0x44, 0xc4, 0x72, 0x41, 0x55, 0x06, 0x92, 0x4b, 0x5e, 0xb4, - 0x7f, 0xa4, 0xc0, 0xf4, 0x32, 0xf6, 0x5a, 0x5a, 0x37, 0x76, 0x4f, 0x74, 0x06, 0x66, 0xc8, 0xf5, - 0x6d, 0x55, 0x76, 0x4c, 0x92, 0xae, 0x9a, 0x09, 0x69, 0xea, 0x75, 0x30, 0x7b, 0x1e, 0x6f, 0x5a, - 0x36, 0xae, 0x0a, 0x67, 0x29, 0xc5, 0xc4, 0x90, 0xf0, 0x74, 0x42, 0x1c, 0xb4, 0x05, 0x11, 0x9b, - 0x9b, 0xf6, 0x0b, 0x93, 0xab, 0x4a, 0xc8, 0x98, 0xf3, 0x64, 0x98, 0x64, 0xc8, 0x7b, 0x66, 0x5a, - 0x54, 0xbf, 0xe8, 0xe7, 0x45, 0x6f, 0xf4, 0x11, 0x2d, 0x09, 0x88, 0x3e, 0x21, 0x0e, 0x13, 0x63, - 0xb9, 0xdf, 0x3d, 0xcf, 0x95, 0xbf, 0x70, 0xa9, 0xdc, 0xea, 0xa2, 0xb5, 0x78, 0x98, 0x9e, 0x06, - 0xf0, 0x1b, 0x87, 0x17, 0xd6, 0x82, 0x4b, 0x11, 0x23, 0xd7, 0x47, 0x1e, 0xd4, 0xeb, 0x15, 0x07, - 0x61, 0x67, 0xc4, 0xc0, 0xc8, 0x1d, 0xf0, 0x93, 0xe1, 0x24, 0x79, 0x74, 0x3e, 0xa3, 0xc0, 0x09, - 0xff, 0xfc, 0xd1, 0xaa, 0xde, 0x0d, 0xda, 0x5d, 0x31, 0x1e, 0x44, 0xc2, 0x81, 0x0f, 0xbf, 0xb1, - 0x7c, 0x27, 0xde, 0x98, 0xd1, 0x97, 0x93, 0xd1, 0xa2, 0xa3, 0xde, 0x04, 0xc7, 0xcc, 0xdd, 0x1d, - 0x5f, 0xea, 0xa4, 0xc5, 0xb3, 0x16, 0xbe, 0xff, 0x43, 0x9c, 0x91, 0x49, 0x86, 0xf9, 0xb1, 0xcc, - 0x29, 0x85, 0x23, 0x5d, 0x8f, 0x8f, 0x05, 0x23, 0xfa, 0xe7, 0x54, 0xac, 0xde, 0x6d, 0xf0, 0x99, - 0xaf, 0x18, 0xbd, 0xd4, 0x21, 0x1e, 0xf8, 0x3a, 0x33, 0x01, 0xd9, 0xd2, 0x4e, 0xc7, 0xb9, 0x74, - 0xe6, 0x31, 0x30, 0x5b, 0x73, 0x6c, 0xac, 0xef, 0x70, 0x3b, 0x03, 0x8e, 0x75, 0x01, 0x9b, 0xde, - 0xce, 0x00, 0x79, 0xb9, 0xfd, 0x36, 0x98, 0x30, 0xad, 0x86, 0xbe, 0xeb, 0x6c, 0xab, 0x57, 0xef, - 0x3b, 0x52, 0xcf, 0xc0, 0xaf, 0xb2, 0x18, 0x46, 0x5f, 0xbb, 0x83, 0xac, 0x0d, 0xe7, 0x4c, 0xab, - 0xb0, 0xeb, 0x6c, 0x2f, 0x5c, 0xf5, 0xa9, 0xbf, 0x3e, 0x9d, 0xfa, 0xec, 0x5f, 0x9f, 0x4e, 0x7d, - 0xf5, 0xaf, 0x4f, 0xa7, 0x7e, 0xf1, 0xeb, 0xa7, 0x8f, 0x7c, 0xf6, 0xeb, 0xa7, 0x8f, 0x7c, 0xe9, - 0xeb, 0xa7, 0x8f, 0xfc, 0x44, 0xba, 0x73, 0xfe, 0x7c, 0x8e, 0x50, 0x79, 0xe2, 0xff, 0x17, 0x00, - 0x00, 0xff, 0xff, 0xd2, 0xcb, 0x15, 0x81, 0xce, 0xfe, 0x01, 0x00, + 0x75, 0x2f, 0xba, 0xea, 0x96, 0x34, 0x33, 0x67, 0x7e, 0xac, 0xb6, 0xbd, 0xbb, 0x5e, 0xb7, 0xcd, + 0xda, 0xac, 0x8d, 0x71, 0x8c, 0x19, 0x1b, 0x43, 0x00, 0x1b, 0x1b, 0x5b, 0xa3, 0xd1, 0xcc, 0xc8, + 0x9e, 0x91, 0x86, 0x96, 0x66, 0x17, 0xe7, 0xde, 0x3c, 0xdd, 0x5e, 0xa9, 0x66, 0xa6, 0xbd, 0x9a, + 0x6e, 0xa5, 0xbb, 0x67, 0xd6, 0xcb, 0xfb, 0xdc, 0x77, 0x43, 0x88, 0xf9, 0x19, 0x2e, 0x21, 0x84, + 0x24, 0xfc, 0x06, 0x83, 0xe1, 0x42, 0x02, 0x84, 0xdf, 0x17, 0x92, 0x00, 0xe1, 0x47, 0x20, 0x24, + 0x21, 0x04, 0x42, 0x20, 0x24, 0xbc, 0x40, 0x20, 0x84, 0xbc, 0x4f, 0xb8, 0xbc, 0xe4, 0xdd, 0xc0, + 0x25, 0x09, 0x2f, 0xef, 0xd3, 0x55, 0xd5, 0xdd, 0x55, 0x1a, 0x75, 0xab, 0x5a, 0xa3, 0xd6, 0x98, + 0xf0, 0xfe, 0xeb, 0xae, 0xae, 0x3e, 0x75, 0xea, 0x7c, 0x4f, 0x55, 0x9d, 0xaa, 0x3a, 0x75, 0x0a, + 0x4e, 0x75, 0xcf, 0xdf, 0xdc, 0xb5, 0x2d, 0xd7, 0x72, 0x6e, 0x6e, 0x59, 0x3b, 0x3b, 0xba, 0xd9, + 0x76, 0xe6, 0xf1, 0xbb, 0x32, 0xa1, 0x9b, 0x97, 0xdc, 0x4b, 0x5d, 0xa4, 0x5e, 0xd7, 0xbd, 0xb0, + 0x75, 0x73, 0xc7, 0x38, 0x7f, 0x73, 0xf7, 0xfc, 0xcd, 0x3b, 0x56, 0x1b, 0x75, 0xfc, 0x1f, 0xf0, + 0x0b, 0xcd, 0xae, 0xde, 0x10, 0x95, 0xab, 0x63, 0xb5, 0xf4, 0x8e, 0xe3, 0x5a, 0x36, 0xa2, 0x39, + 0x4f, 0x86, 0x45, 0xa2, 0x3d, 0x64, 0xba, 0x3e, 0x85, 0xab, 0xb6, 0x2c, 0x6b, 0xab, 0x83, 0xc8, + 0xb7, 0xf3, 0xbb, 0x9b, 0x37, 0x3b, 0xae, 0xbd, 0xdb, 0x72, 0xe9, 0xd7, 0x6b, 0x7a, 0xbf, 0xb6, + 0x91, 0xd3, 0xb2, 0x8d, 0xae, 0x6b, 0xd9, 0x24, 0xc7, 0x99, 0x4f, 0xfc, 0x70, 0x02, 0x64, 0xad, + 0xdb, 0x52, 0xbf, 0x37, 0x01, 0x72, 0xb1, 0xdb, 0x55, 0x3f, 0x29, 0x01, 0x2c, 0x23, 0xf7, 0x2c, + 0xb2, 0x1d, 0xc3, 0x32, 0xd5, 0xa3, 0x30, 0xa1, 0xa1, 0x9f, 0xd9, 0x45, 0x8e, 0x7b, 0x7b, 0xf6, + 0xf9, 0xdf, 0x92, 0x33, 0xea, 0xc3, 0x12, 0x4c, 0x6a, 0xc8, 0xe9, 0x5a, 0xa6, 0x83, 0x94, 0xbb, + 0x21, 0x87, 0x6c, 0xdb, 0xb2, 0x4f, 0x65, 0xae, 0xc9, 0xdc, 0x30, 0x7d, 0xeb, 0x8d, 0xf3, 0xb4, + 0xfa, 0xf3, 0x5a, 0xb7, 0x35, 0x5f, 0xec, 0x76, 0xe7, 0x43, 0x4a, 0xf3, 0xfe, 0x4f, 0xf3, 0x65, + 0xef, 0x0f, 0x8d, 0xfc, 0xa8, 0x9c, 0x82, 0x89, 0x3d, 0x92, 0xe1, 0x94, 0x74, 0x4d, 0xe6, 0x86, + 0x29, 0xcd, 0x7f, 0xf5, 0xbe, 0xb4, 0x91, 0xab, 0x1b, 0x1d, 0xe7, 0x94, 0x4c, 0xbe, 0xd0, 0x57, + 0xf5, 0xa1, 0x0c, 0xe4, 0x30, 0x11, 0xa5, 0x04, 0xd9, 0x96, 0xd5, 0x46, 0xb8, 0xf8, 0xb9, 0x5b, + 0x6f, 0x16, 0x2f, 0x7e, 0xbe, 0x64, 0xb5, 0x91, 0x86, 0x7f, 0x56, 0xae, 0x81, 0x69, 0x5f, 0x2c, + 0x21, 0x1b, 0x6c, 0xd2, 0x99, 0x5b, 0x21, 0xeb, 0xe5, 0x57, 0x26, 0x21, 0x5b, 0xdd, 0x58, 0x5d, + 0x2d, 0x1c, 0x51, 0x8e, 0xc1, 0xec, 0x46, 0xf5, 0xde, 0x6a, 0xed, 0x5c, 0xb5, 0x59, 0xd6, 0xb4, + 0x9a, 0x56, 0xc8, 0x28, 0xb3, 0x30, 0xb5, 0x50, 0x5c, 0x6c, 0x56, 0xaa, 0xeb, 0x1b, 0x8d, 0x82, + 0xa4, 0xbe, 0x56, 0x86, 0xb9, 0x3a, 0x72, 0x17, 0xd1, 0x9e, 0xd1, 0x42, 0x75, 0x57, 0x77, 0x91, + 0xfa, 0x92, 0x4c, 0x20, 0x4c, 0x65, 0xc3, 0x2b, 0x34, 0xf8, 0x44, 0x2b, 0xf0, 0xc4, 0x7d, 0x15, + 0xe0, 0x29, 0xcc, 0xd3, 0xbf, 0xe7, 0x99, 0x34, 0x8d, 0xa5, 0x73, 0xe6, 0xf1, 0x30, 0xcd, 0x7c, + 0x53, 0xe6, 0x00, 0x16, 0x8a, 0xa5, 0x7b, 0x97, 0xb5, 0xda, 0x46, 0x75, 0xb1, 0x70, 0xc4, 0x7b, + 0x5f, 0xaa, 0x69, 0x65, 0xfa, 0x9e, 0x51, 0x7f, 0x90, 0x61, 0xc0, 0x5c, 0xe4, 0xc1, 0x9c, 0x1f, + 0xcc, 0x4c, 0x1f, 0x40, 0xd5, 0x37, 0x07, 0xe0, 0x2c, 0x73, 0xe0, 0x3c, 0x31, 0x19, 0xb9, 0xf4, + 0x01, 0x7a, 0x50, 0x82, 0xc9, 0xfa, 0xf6, 0xae, 0xdb, 0xb6, 0x2e, 0x9a, 0xea, 0x54, 0x80, 0x8c, + 0xfa, 0x1d, 0x56, 0x26, 0x4f, 0xe7, 0x65, 0x72, 0xc3, 0xfe, 0x4a, 0x50, 0x0a, 0x11, 0xd2, 0x78, + 0x7d, 0x20, 0x8d, 0x22, 0x27, 0x8d, 0xc7, 0x8b, 0x12, 0x4a, 0x5f, 0x0e, 0xaf, 0x7c, 0x2a, 0xe4, + 0xea, 0x5d, 0xbd, 0x85, 0xd4, 0x3f, 0x94, 0x61, 0x66, 0x15, 0xe9, 0x7b, 0xa8, 0xd8, 0xed, 0xda, + 0xd6, 0x1e, 0x52, 0x4b, 0xa1, 0xbe, 0x9e, 0x82, 0x09, 0xc7, 0xcb, 0x54, 0x69, 0xe3, 0x1a, 0x4c, + 0x69, 0xfe, 0xab, 0x72, 0x1a, 0xc0, 0x68, 0x23, 0xd3, 0x35, 0x5c, 0x03, 0x39, 0xa7, 0xa4, 0x6b, + 0xe4, 0x1b, 0xa6, 0x34, 0x26, 0x45, 0xfd, 0x9e, 0x24, 0xaa, 0x63, 0x98, 0x8b, 0x79, 0x96, 0x83, + 0x08, 0xa9, 0xbe, 0x51, 0x12, 0xd1, 0xb1, 0x81, 0xe4, 0x92, 0xc9, 0xf6, 0x1d, 0x99, 0xe4, 0xc2, + 0xf5, 0x72, 0x54, 0x6b, 0xcd, 0xfa, 0x46, 0x69, 0xa5, 0x59, 0x5f, 0x2f, 0x96, 0xca, 0x05, 0xa4, + 0x1c, 0x87, 0x02, 0x7e, 0x6c, 0x56, 0xea, 0xcd, 0xc5, 0xf2, 0x6a, 0xb9, 0x51, 0x5e, 0x2c, 0x6c, + 0x2a, 0x0a, 0xcc, 0x69, 0xe5, 0x67, 0x6c, 0x94, 0xeb, 0x8d, 0xe6, 0x52, 0xb1, 0xb2, 0x5a, 0x5e, + 0x2c, 0x6c, 0x79, 0x3f, 0xaf, 0x56, 0xd6, 0x2a, 0x8d, 0xa6, 0x56, 0x2e, 0x96, 0x56, 0xca, 0x8b, + 0x85, 0x6d, 0xe5, 0x72, 0xb8, 0xac, 0x5a, 0x6b, 0x16, 0xd7, 0xd7, 0xb5, 0xda, 0xd9, 0x72, 0x93, + 0xfe, 0x51, 0x2f, 0x18, 0xa4, 0xa0, 0x46, 0xb3, 0xbe, 0x52, 0xd4, 0xca, 0xc5, 0x85, 0xd5, 0x72, + 0xe1, 0x7e, 0xf5, 0x39, 0x32, 0xcc, 0xae, 0xe9, 0x17, 0x50, 0x7d, 0x5b, 0xb7, 0x91, 0x7e, 0xbe, + 0x83, 0xd4, 0x6b, 0x05, 0xf0, 0x54, 0xff, 0x90, 0xc5, 0xab, 0xcc, 0xe3, 0x75, 0x73, 0x1f, 0x01, + 0x73, 0x45, 0x44, 0x00, 0xf6, 0xbf, 0x82, 0x66, 0xb0, 0xc2, 0x01, 0xf6, 0xa4, 0x84, 0xf4, 0x92, + 0x21, 0xf6, 0x73, 0x8f, 0x00, 0xc4, 0xd4, 0xaf, 0xca, 0x30, 0x57, 0x31, 0xf7, 0x0c, 0x17, 0x2d, + 0x23, 0x13, 0xd9, 0xde, 0x38, 0x20, 0x04, 0xc3, 0xc3, 0x32, 0x03, 0xc3, 0x12, 0x0f, 0xc3, 0x2d, + 0x7d, 0xc4, 0xc6, 0x97, 0x11, 0x31, 0xda, 0x5e, 0x05, 0x53, 0x06, 0xce, 0x57, 0x32, 0xda, 0x54, + 0x62, 0x61, 0x82, 0x72, 0x1d, 0xcc, 0x92, 0x97, 0x25, 0xa3, 0x83, 0xee, 0x45, 0x97, 0xe8, 0xb8, + 0xcb, 0x27, 0xaa, 0xbf, 0x10, 0x34, 0xbe, 0x0a, 0x87, 0xe5, 0x4f, 0x26, 0x65, 0x2a, 0x19, 0x98, + 0x2f, 0x7f, 0x24, 0x34, 0xbf, 0x7d, 0xad, 0xcc, 0x50, 0x7f, 0x28, 0xc1, 0x74, 0xdd, 0xb5, 0xba, + 0x9e, 0xca, 0x1a, 0xe6, 0x96, 0x18, 0xb8, 0x9f, 0x66, 0xdb, 0x58, 0x89, 0x07, 0xf7, 0xf1, 0x7d, + 0xe4, 0xc8, 0x14, 0x10, 0xd1, 0xc2, 0xbe, 0x17, 0xb4, 0xb0, 0x25, 0x0e, 0x95, 0x5b, 0x13, 0x51, + 0xfb, 0x11, 0x6c, 0x5f, 0x2f, 0x97, 0xa1, 0xe0, 0xab, 0x99, 0x5b, 0xda, 0xb5, 0x6d, 0x64, 0xba, + 0x62, 0x20, 0xfc, 0x05, 0x0b, 0xc2, 0x0a, 0x0f, 0xc2, 0xad, 0x31, 0xca, 0xec, 0x97, 0x92, 0x62, + 0x1b, 0xfb, 0x68, 0x80, 0xe6, 0xbd, 0x1c, 0x9a, 0x4f, 0x49, 0xce, 0x56, 0x32, 0x48, 0x57, 0x86, + 0x40, 0xf4, 0x38, 0x14, 0xbc, 0x31, 0xa9, 0xd4, 0xa8, 0x9c, 0x2d, 0x37, 0x2b, 0xd5, 0xb3, 0x95, + 0x46, 0xb9, 0x80, 0xd4, 0x97, 0xc9, 0x30, 0x43, 0x58, 0xd3, 0xd0, 0x9e, 0x75, 0x41, 0xb0, 0xd7, + 0xfb, 0x6a, 0x42, 0x63, 0x81, 0x2d, 0x21, 0xa2, 0x65, 0xbc, 0x30, 0x81, 0xb1, 0x10, 0x43, 0xee, + 0x91, 0xd4, 0x5b, 0xed, 0x6b, 0x06, 0x5b, 0x7d, 0x5a, 0x4b, 0xdf, 0xde, 0xea, 0xe5, 0x59, 0x00, + 0x52, 0xc9, 0xb3, 0x06, 0xba, 0xa8, 0xae, 0x85, 0x98, 0x70, 0x6a, 0x9b, 0x19, 0xa8, 0xb6, 0x52, + 0x3f, 0xb5, 0xfd, 0x00, 0x3b, 0x66, 0x2d, 0xf0, 0xe8, 0xdd, 0x14, 0x29, 0x6e, 0x8f, 0x93, 0xe8, + 0xd9, 0xa1, 0xaf, 0x28, 0x12, 0x6f, 0x75, 0x5e, 0x05, 0x53, 0xf8, 0xb1, 0xaa, 0xef, 0x20, 0xda, + 0x86, 0xc2, 0x04, 0xe5, 0x0c, 0xcc, 0x90, 0x8c, 0x2d, 0xcb, 0xf4, 0xea, 0x93, 0xc5, 0x19, 0xb8, + 0x34, 0x0f, 0xc4, 0x96, 0x8d, 0x74, 0xd7, 0xb2, 0x31, 0x8d, 0x1c, 0x01, 0x91, 0x49, 0x52, 0xbf, + 0x1d, 0xb4, 0xc2, 0x32, 0xa7, 0x39, 0x4f, 0x48, 0x52, 0x95, 0x64, 0x7a, 0xb3, 0x37, 0x5c, 0xfb, + 0x23, 0xad, 0xae, 0xe9, 0xa1, 0xbd, 0x84, 0xa7, 0x76, 0x48, 0x39, 0x09, 0x0a, 0x4d, 0xf5, 0xf2, + 0x96, 0x6a, 0xd5, 0x46, 0xb9, 0xda, 0x28, 0x6c, 0xf6, 0xd5, 0xa8, 0x2d, 0xf5, 0x8d, 0x59, 0xc8, + 0xde, 0x63, 0x19, 0xa6, 0xfa, 0x60, 0x86, 0x53, 0x09, 0x13, 0xb9, 0x17, 0x2d, 0xfb, 0x42, 0xd0, + 0x50, 0xc3, 0x84, 0x78, 0x6c, 0x42, 0x55, 0x92, 0x07, 0xaa, 0x52, 0xb6, 0x9f, 0x2a, 0xfd, 0x12, + 0xab, 0x4a, 0x77, 0xf0, 0xaa, 0x74, 0x7d, 0x1f, 0xf9, 0x7b, 0xcc, 0x47, 0x74, 0x00, 0x9f, 0x0a, + 0x3a, 0x80, 0xbb, 0x38, 0x18, 0x1f, 0x27, 0x46, 0x26, 0x19, 0x80, 0x5f, 0x49, 0xb5, 0xe1, 0xf7, + 0x83, 0x7a, 0x2b, 0x02, 0xea, 0xed, 0x3e, 0x7d, 0x82, 0xb1, 0xbf, 0xeb, 0xb8, 0x7f, 0x7f, 0x37, + 0x71, 0x41, 0x39, 0x01, 0xc7, 0x16, 0x2b, 0x4b, 0x4b, 0x65, 0xad, 0x5c, 0x6d, 0x34, 0xab, 0xe5, + 0xc6, 0xb9, 0x9a, 0x76, 0x6f, 0xa1, 0xa3, 0x3e, 0x24, 0x03, 0x78, 0x12, 0x2a, 0xe9, 0x66, 0x0b, + 0x75, 0xc4, 0x7a, 0xf4, 0xff, 0x21, 0x25, 0xeb, 0x13, 0x42, 0xfa, 0x11, 0x70, 0xbe, 0x46, 0x12, + 0x6f, 0x95, 0x91, 0xc4, 0x92, 0x81, 0xfa, 0xb6, 0x47, 0x82, 0xed, 0x79, 0x19, 0x1c, 0xf5, 0xe9, + 0xd1, 0xec, 0xfd, 0xa7, 0x7d, 0xef, 0xcc, 0xc2, 0x1c, 0x85, 0xc5, 0x9f, 0xc7, 0x3f, 0x3f, 0x23, + 0x32, 0x91, 0x57, 0x61, 0x92, 0x4e, 0xdb, 0xfd, 0xee, 0x3d, 0x78, 0x57, 0x96, 0x61, 0xba, 0x8b, + 0xec, 0x1d, 0xc3, 0x71, 0x0c, 0xcb, 0x24, 0x0b, 0x72, 0x73, 0xb7, 0x3e, 0x26, 0x90, 0x38, 0x5e, + 0xbb, 0x9c, 0x5f, 0xd7, 0x6d, 0xd7, 0x68, 0x19, 0x5d, 0xdd, 0x74, 0xd7, 0xc3, 0xcc, 0x1a, 0xfb, + 0xa7, 0xfa, 0xd2, 0x84, 0xd3, 0x1a, 0xbe, 0x26, 0x11, 0x2a, 0xf1, 0xdb, 0x09, 0xa6, 0x24, 0xb1, + 0x04, 0x93, 0xa9, 0xc5, 0x27, 0x53, 0x55, 0x8b, 0x3e, 0x78, 0x6f, 0x29, 0x57, 0xc0, 0x89, 0x4a, + 0xb5, 0x54, 0xd3, 0xb4, 0x72, 0xa9, 0xd1, 0x5c, 0x2f, 0x6b, 0x6b, 0x95, 0x7a, 0xbd, 0x52, 0xab, + 0xd6, 0x0f, 0xd2, 0xda, 0xd5, 0xcf, 0xc8, 0x81, 0xc6, 0x2c, 0xa2, 0x56, 0xc7, 0x30, 0x91, 0x7a, + 0xd7, 0x01, 0x15, 0x86, 0x5f, 0xf5, 0x11, 0xc7, 0x99, 0x96, 0x1f, 0x81, 0xf3, 0x1b, 0x92, 0xe3, + 0xdc, 0x9f, 0xe0, 0xbf, 0xe3, 0xe6, 0xff, 0x55, 0x19, 0x8e, 0x31, 0x0d, 0x51, 0x43, 0x3b, 0x23, + 0x5b, 0xc9, 0xfb, 0x39, 0xb6, 0xed, 0x56, 0x78, 0x4c, 0xfb, 0x59, 0xd3, 0xfb, 0xd8, 0x88, 0x80, + 0xf5, 0x6d, 0x01, 0xac, 0xab, 0x1c, 0xac, 0x4f, 0x1d, 0x82, 0x66, 0x32, 0x64, 0x7f, 0x33, 0x55, + 0x64, 0xaf, 0x80, 0x13, 0xeb, 0x45, 0xad, 0x51, 0x29, 0x55, 0xd6, 0x8b, 0xde, 0x38, 0xca, 0x0c, + 0xd9, 0x11, 0xe6, 0x3a, 0x0f, 0x7a, 0x5f, 0x7c, 0x3f, 0x92, 0x85, 0xab, 0xfa, 0x77, 0xb4, 0xa5, + 0x6d, 0xdd, 0xdc, 0x42, 0xaa, 0x21, 0x02, 0xf5, 0x22, 0x4c, 0xb4, 0x70, 0x76, 0x82, 0x33, 0xbb, + 0x75, 0x13, 0xd3, 0x97, 0x93, 0x12, 0x34, 0xff, 0x57, 0xf5, 0x3d, 0xac, 0x42, 0x34, 0x78, 0x85, + 0x78, 0x7a, 0x3c, 0x78, 0xfb, 0xf8, 0x8e, 0xd0, 0x8d, 0xcf, 0x05, 0xba, 0x71, 0x8e, 0xd3, 0x8d, + 0xd2, 0xc1, 0xc8, 0x27, 0x53, 0x93, 0x3f, 0x78, 0x24, 0x74, 0x00, 0x91, 0xda, 0x64, 0x44, 0x8f, + 0x0a, 0x7d, 0xbb, 0xfb, 0xd7, 0xc9, 0x90, 0x5f, 0x44, 0x1d, 0x24, 0xba, 0x12, 0xf9, 0x5d, 0x49, + 0x74, 0x43, 0x84, 0xc0, 0x40, 0x68, 0x47, 0xaf, 0x8e, 0xb8, 0xc6, 0x0e, 0x72, 0x5c, 0x7d, 0xa7, + 0x8b, 0x45, 0x2d, 0x6b, 0x61, 0x82, 0xfa, 0xf3, 0x92, 0xc8, 0x76, 0x49, 0x4c, 0x31, 0xff, 0x3e, + 0xd6, 0x14, 0xbf, 0x20, 0xc1, 0x64, 0x1d, 0xb9, 0x35, 0xbb, 0x8d, 0x6c, 0xb5, 0x1e, 0x62, 0x74, + 0x0d, 0x4c, 0x63, 0x50, 0xbc, 0x69, 0x66, 0x80, 0x13, 0x9b, 0xa4, 0x5c, 0x0f, 0x73, 0xc1, 0x2b, + 0xfe, 0x9d, 0x76, 0xe3, 0x3d, 0xa9, 0xea, 0x3f, 0x64, 0x44, 0x77, 0x71, 0xe9, 0x92, 0x21, 0xe5, + 0x26, 0xa2, 0x95, 0x8a, 0xed, 0xc8, 0xc6, 0x92, 0x4a, 0x7f, 0xa3, 0xeb, 0x5d, 0x12, 0xc0, 0x86, + 0xe9, 0xf8, 0x72, 0x7d, 0x5c, 0x02, 0xb9, 0xaa, 0xff, 0x94, 0x49, 0x36, 0x8b, 0x09, 0xcb, 0x89, + 0x90, 0xd8, 0x9b, 0x12, 0xac, 0x2d, 0x44, 0x12, 0x4b, 0x5f, 0x66, 0xdf, 0x98, 0x83, 0xfc, 0x39, + 0xbd, 0xd3, 0x41, 0xae, 0xfa, 0x4d, 0x09, 0xf2, 0x25, 0x1b, 0xe9, 0x2e, 0x62, 0x45, 0xa7, 0xc2, + 0xa4, 0x6d, 0x59, 0xee, 0xba, 0xee, 0x6e, 0x53, 0xb9, 0x05, 0xef, 0xd4, 0x61, 0xe0, 0x37, 0xd8, + 0xee, 0xe3, 0x2e, 0x5e, 0x74, 0x3f, 0xc1, 0xd5, 0x96, 0x14, 0x34, 0x4f, 0x0a, 0x89, 0xe8, 0x3f, + 0x54, 0x98, 0xdc, 0x31, 0xd1, 0x8e, 0x65, 0x1a, 0x2d, 0xdf, 0xe6, 0xf4, 0xdf, 0xd5, 0x8f, 0x05, + 0x32, 0x5d, 0xe0, 0x64, 0x3a, 0x2f, 0x5c, 0x4a, 0x32, 0x81, 0xd6, 0x87, 0xe8, 0x3d, 0xae, 0x86, + 0x2b, 0x49, 0x67, 0xd0, 0x6c, 0xd4, 0x9a, 0x25, 0xad, 0x5c, 0x6c, 0x94, 0x9b, 0xab, 0xb5, 0x52, + 0x71, 0xb5, 0xa9, 0x95, 0xd7, 0x6b, 0x05, 0xa4, 0xfe, 0xad, 0xe4, 0x09, 0xb7, 0x65, 0xed, 0x21, + 0x5b, 0x5d, 0x16, 0x92, 0x73, 0x9c, 0x4c, 0x28, 0x06, 0xbf, 0x24, 0xec, 0xb4, 0x41, 0xa5, 0x43, + 0x39, 0x88, 0x50, 0xde, 0x8f, 0x0b, 0x35, 0xf7, 0x58, 0x52, 0x8f, 0x00, 0x49, 0xff, 0x4f, 0x09, + 0x26, 0x4a, 0x96, 0xb9, 0x87, 0x6c, 0x97, 0x9d, 0xef, 0xb0, 0xd2, 0xcc, 0xf0, 0xd2, 0xf4, 0x06, + 0x49, 0x64, 0xba, 0xb6, 0xd5, 0xf5, 0x27, 0x3c, 0xfe, 0xab, 0xfa, 0x96, 0xa4, 0x12, 0xa6, 0x25, + 0x47, 0x2f, 0x7c, 0xf6, 0x2f, 0x88, 0x63, 0x4f, 0xee, 0x69, 0x00, 0x0f, 0x25, 0xc1, 0xa5, 0x3f, + 0x03, 0xe9, 0x77, 0x29, 0x5f, 0x93, 0x61, 0x96, 0x34, 0xbe, 0x3a, 0xc2, 0x16, 0x9a, 0x5a, 0x63, + 0x97, 0x1c, 0x7b, 0x84, 0xbf, 0x72, 0x84, 0x13, 0x7f, 0x5e, 0xef, 0x76, 0x83, 0xe5, 0xe7, 0x95, + 0x23, 0x1a, 0x7d, 0x27, 0x6a, 0xbe, 0x90, 0x87, 0xac, 0xbe, 0xeb, 0x6e, 0xab, 0x3f, 0x14, 0x9e, + 0x7c, 0x72, 0x9d, 0x01, 0xe5, 0x27, 0x02, 0x92, 0xe3, 0x90, 0x73, 0xad, 0x0b, 0xc8, 0x97, 0x03, + 0x79, 0xf1, 0xe0, 0xd0, 0xbb, 0xdd, 0x06, 0xfe, 0x40, 0xe1, 0xf0, 0xdf, 0x3d, 0x5b, 0x47, 0x6f, + 0xb5, 0xac, 0x5d, 0xd3, 0xad, 0xf8, 0x4b, 0xd0, 0x61, 0x82, 0xfa, 0xe5, 0x8c, 0xc8, 0x64, 0x56, + 0x80, 0xc1, 0x64, 0x90, 0x9d, 0x1f, 0xa2, 0x29, 0xcd, 0xc3, 0x8d, 0xc5, 0xf5, 0xf5, 0x66, 0xa3, + 0x76, 0x6f, 0xb9, 0x1a, 0x1a, 0x9e, 0xcd, 0x4a, 0xb5, 0xd9, 0x58, 0x29, 0x37, 0x4b, 0x1b, 0x1a, + 0x5e, 0x27, 0x2c, 0x96, 0x4a, 0xb5, 0x8d, 0x6a, 0xa3, 0x80, 0xd4, 0xb7, 0x4b, 0x30, 0x53, 0xea, + 0x58, 0x4e, 0x80, 0xf0, 0xd5, 0x21, 0xc2, 0x81, 0x18, 0x33, 0x8c, 0x18, 0xd5, 0x7f, 0xc9, 0x88, + 0x3a, 0x1d, 0xf8, 0x02, 0x61, 0xc8, 0x47, 0xf4, 0x52, 0x6f, 0x11, 0x72, 0x3a, 0x18, 0x4c, 0x2f, + 0xfd, 0x26, 0xf1, 0xd6, 0x3b, 0x61, 0xa2, 0x48, 0x14, 0x43, 0xfd, 0xab, 0x0c, 0xe4, 0x4b, 0x96, + 0xb9, 0x69, 0x6c, 0x79, 0xc6, 0x1c, 0x32, 0xf5, 0xf3, 0x1d, 0xb4, 0xa8, 0xbb, 0xfa, 0x9e, 0x81, + 0x2e, 0xe2, 0x0a, 0x4c, 0x6a, 0x3d, 0xa9, 0x1e, 0x53, 0x34, 0x05, 0x9d, 0xdf, 0xdd, 0xc2, 0x4c, + 0x4d, 0x6a, 0x6c, 0x92, 0xf2, 0x54, 0xb8, 0x9c, 0xbc, 0xae, 0xdb, 0xc8, 0x46, 0x1d, 0xa4, 0x3b, + 0xc8, 0x9b, 0x16, 0x99, 0xa8, 0x83, 0x95, 0x76, 0x52, 0x8b, 0xfa, 0xac, 0x9c, 0x81, 0x19, 0xf2, + 0x09, 0x9b, 0x22, 0x0e, 0x56, 0xe3, 0x49, 0x8d, 0x4b, 0x53, 0x1e, 0x0f, 0x39, 0xf4, 0x80, 0x6b, + 0xeb, 0xa7, 0xda, 0x18, 0xaf, 0xcb, 0xe7, 0x89, 0xd7, 0xe1, 0xbc, 0xef, 0x75, 0x38, 0x5f, 0xc7, + 0x3e, 0x89, 0x1a, 0xc9, 0xa5, 0xbe, 0x7a, 0x32, 0x30, 0x24, 0xfe, 0x4d, 0x0a, 0x15, 0x43, 0x81, + 0xac, 0xa9, 0xef, 0x20, 0xaa, 0x17, 0xf8, 0x59, 0xb9, 0x11, 0x8e, 0xea, 0x7b, 0xba, 0xab, 0xdb, + 0xab, 0x56, 0x4b, 0xef, 0xe0, 0xc1, 0xcf, 0x6f, 0xf9, 0xbd, 0x1f, 0xf0, 0x8e, 0x90, 0x6b, 0xd9, + 0x08, 0xe7, 0xf2, 0x77, 0x84, 0xfc, 0x04, 0x8f, 0xba, 0xd1, 0xb2, 0x4c, 0xcc, 0xbf, 0xac, 0xe1, + 0x67, 0x4f, 0x2a, 0x6d, 0xc3, 0xf1, 0x2a, 0x82, 0xa9, 0x54, 0xc9, 0xd6, 0x46, 0xfd, 0x92, 0xd9, + 0xc2, 0xbb, 0x41, 0x93, 0x5a, 0xd4, 0x67, 0x65, 0x01, 0xa6, 0xe9, 0x46, 0xc8, 0x9a, 0xa7, 0x57, + 0x79, 0xac, 0x57, 0xd7, 0xf0, 0x3e, 0x5d, 0x04, 0xcf, 0xf9, 0x6a, 0x98, 0x4f, 0x63, 0x7f, 0x52, + 0xee, 0x86, 0x2b, 0xe9, 0x6b, 0x69, 0xd7, 0x71, 0xad, 0x1d, 0x02, 0xfa, 0x92, 0xd1, 0x21, 0x35, + 0x98, 0xc0, 0x35, 0x88, 0xcb, 0xa2, 0xdc, 0x0a, 0xc7, 0xbb, 0x36, 0xda, 0x44, 0xf6, 0x7d, 0xfa, + 0xce, 0xee, 0x03, 0x0d, 0x5b, 0x37, 0x9d, 0xae, 0x65, 0xbb, 0xa7, 0x26, 0x31, 0xf3, 0x7d, 0xbf, + 0xd1, 0x8e, 0x72, 0x12, 0xf2, 0x44, 0x7c, 0xea, 0x4b, 0x72, 0xc2, 0xee, 0x9c, 0xb4, 0x42, 0xb1, + 0xe6, 0xd9, 0x2d, 0x30, 0x41, 0x7b, 0x38, 0x0c, 0xd4, 0xf4, 0xad, 0x27, 0x7b, 0xd6, 0x15, 0x28, + 0x15, 0xcd, 0xcf, 0xa6, 0x3c, 0x11, 0xf2, 0x2d, 0x5c, 0x2d, 0x8c, 0xd9, 0xf4, 0xad, 0x57, 0xf6, + 0x2f, 0x14, 0x67, 0xd1, 0x68, 0x56, 0xf5, 0xcf, 0x65, 0x21, 0x0f, 0xd0, 0x38, 0x8e, 0x93, 0xb5, + 0xea, 0x6f, 0x4b, 0x43, 0x74, 0x9b, 0x37, 0xc1, 0x0d, 0xb4, 0x4f, 0xa4, 0xf6, 0xc7, 0x62, 0x73, + 0x61, 0xc3, 0x9f, 0x0c, 0x7a, 0x56, 0x49, 0xbd, 0x51, 0xd4, 0xbc, 0x99, 0xfc, 0xa2, 0x37, 0x89, + 0xbc, 0x11, 0xae, 0x1f, 0x90, 0xbb, 0xdc, 0x68, 0x56, 0x8b, 0x6b, 0xe5, 0xc2, 0x26, 0x6f, 0xdb, + 0xd4, 0x1b, 0xb5, 0xf5, 0xa6, 0xb6, 0x51, 0xad, 0x56, 0xaa, 0xcb, 0x84, 0x98, 0x67, 0x12, 0x9e, + 0x0c, 0x33, 0x9c, 0xd3, 0x2a, 0x8d, 0x72, 0xb3, 0x54, 0xab, 0x2e, 0x55, 0x96, 0x0b, 0xc6, 0x20, + 0xc3, 0xe8, 0x7e, 0xe5, 0x1a, 0xb8, 0x8a, 0xe3, 0xa4, 0x52, 0xab, 0x7a, 0x33, 0xdb, 0x52, 0xb1, + 0x5a, 0x2a, 0x7b, 0xd3, 0xd8, 0x0b, 0x8a, 0x0a, 0x27, 0x08, 0xb9, 0xe6, 0x52, 0x65, 0x95, 0xdd, + 0x8c, 0xfa, 0x74, 0x46, 0x39, 0x05, 0x97, 0xb1, 0xdf, 0x2a, 0xd5, 0xb3, 0xc5, 0xd5, 0xca, 0x62, + 0xe1, 0xf7, 0x33, 0xca, 0x75, 0x70, 0x35, 0xf7, 0x17, 0xd9, 0x57, 0x6a, 0x56, 0x16, 0x9b, 0x6b, + 0x95, 0xfa, 0x5a, 0xb1, 0x51, 0x5a, 0x29, 0x7c, 0x06, 0xcf, 0x17, 0x02, 0x03, 0x98, 0x71, 0xcb, + 0x7c, 0x39, 0x3b, 0xa6, 0x17, 0x79, 0x45, 0x7d, 0x5c, 0x5f, 0xd8, 0xe3, 0x6d, 0xd8, 0x4f, 0x06, + 0xa3, 0xc3, 0x22, 0xa7, 0x42, 0xb7, 0x24, 0xa0, 0x95, 0x4c, 0x87, 0x1a, 0x43, 0xa8, 0xd0, 0x35, + 0x70, 0x55, 0xb5, 0x4c, 0x90, 0xd2, 0xca, 0xa5, 0xda, 0xd9, 0xb2, 0xd6, 0x3c, 0x57, 0x5c, 0x5d, + 0x2d, 0x37, 0x9a, 0x4b, 0x15, 0xad, 0xde, 0x28, 0x6c, 0xaa, 0xff, 0x24, 0x05, 0xab, 0x39, 0x8c, + 0xb4, 0xfe, 0x4a, 0x4a, 0xda, 0xac, 0x63, 0x57, 0x6d, 0x7e, 0x12, 0xf2, 0x8e, 0xab, 0xbb, 0xbb, + 0x0e, 0x6d, 0xd5, 0x8f, 0xea, 0xdf, 0xaa, 0xe7, 0xeb, 0x38, 0x93, 0x46, 0x33, 0xab, 0x7f, 0x9e, + 0x49, 0xd2, 0x4c, 0x47, 0xb0, 0xa0, 0x63, 0x0c, 0x21, 0xe2, 0xd3, 0xa0, 0xfa, 0xda, 0x5e, 0xa9, + 0x37, 0x8b, 0xab, 0x5a, 0xb9, 0xb8, 0x78, 0x5f, 0xb0, 0x8c, 0x83, 0x94, 0x13, 0x70, 0x6c, 0xa3, + 0x5a, 0x5c, 0x58, 0x2d, 0xe3, 0xe6, 0x52, 0xab, 0x56, 0xcb, 0x25, 0x4f, 0xee, 0x3f, 0x8f, 0x37, + 0x4d, 0x3c, 0x0b, 0x1a, 0xf3, 0xed, 0x59, 0x39, 0x8c, 0xfc, 0xbf, 0x25, 0xec, 0x5b, 0x14, 0x6a, + 0x18, 0x4b, 0x6b, 0xb4, 0x38, 0x7c, 0x59, 0xc8, 0x9d, 0x48, 0x88, 0x93, 0x64, 0x78, 0xfc, 0xa7, + 0x21, 0xf0, 0x38, 0x01, 0xc7, 0x58, 0x3c, 0xb0, 0x5b, 0x51, 0x34, 0x0c, 0x5f, 0x90, 0x60, 0x62, + 0xcd, 0xd8, 0xc2, 0x7e, 0x95, 0x4f, 0x0b, 0x8d, 0x89, 0x39, 0x90, 0x02, 0x37, 0x16, 0xc9, 0x68, + 0x73, 0xd3, 0x67, 0xa9, 0xef, 0x32, 0xc5, 0x0b, 0x13, 0xf7, 0x2f, 0xb4, 0xd8, 0x88, 0xfe, 0xe5, + 0x43, 0x89, 0xfa, 0x97, 0xfe, 0xb4, 0x92, 0x09, 0xbb, 0x72, 0x30, 0x61, 0x33, 0xce, 0x23, 0xea, + 0xd7, 0x27, 0x21, 0x5f, 0x47, 0x1d, 0xd4, 0x72, 0xd5, 0x77, 0x4a, 0x43, 0x49, 0x35, 0xce, 0xb8, + 0x92, 0x13, 0x19, 0x57, 0xd9, 0x14, 0x8c, 0xab, 0xdc, 0xf0, 0xc6, 0x55, 0x7e, 0x90, 0x71, 0xa5, + 0xbe, 0x29, 0x9f, 0xb4, 0xef, 0x25, 0xa2, 0x3e, 0x5c, 0x93, 0xea, 0x7f, 0x64, 0x93, 0xf4, 0xd5, + 0x7d, 0x39, 0x4e, 0xa6, 0xae, 0x3f, 0x94, 0x53, 0x58, 0xd4, 0x51, 0xae, 0x85, 0xab, 0xc3, 0xf7, + 0x66, 0xf9, 0x99, 0x95, 0x7a, 0xa3, 0x8e, 0xed, 0xa8, 0x52, 0x4d, 0xd3, 0x36, 0xd6, 0xc9, 0xca, + 0xfc, 0x49, 0x50, 0x42, 0x2a, 0xda, 0x46, 0x95, 0x58, 0x4d, 0x5b, 0x3c, 0xf5, 0xa5, 0x4a, 0x75, + 0xb1, 0x19, 0xf4, 0x44, 0xd5, 0xa5, 0x5a, 0x61, 0xdb, 0x9b, 0x08, 0x33, 0xd4, 0xbd, 0x16, 0x43, + 0x4b, 0x28, 0x56, 0x17, 0x9b, 0x6b, 0xd5, 0xf2, 0x5a, 0xad, 0x5a, 0x29, 0xe1, 0xf4, 0x7a, 0xb9, + 0x51, 0x30, 0xbc, 0xe1, 0xbb, 0xc7, 0x4e, 0xab, 0x97, 0x8b, 0x5a, 0x69, 0xa5, 0xac, 0x91, 0x22, + 0xef, 0x57, 0xae, 0x87, 0x33, 0xc5, 0x6a, 0xad, 0xe1, 0xa5, 0x14, 0xab, 0xf7, 0x35, 0xee, 0x5b, + 0x2f, 0x37, 0xd7, 0xb5, 0x5a, 0xa9, 0x5c, 0xaf, 0x7b, 0xbd, 0x1f, 0xb5, 0xea, 0x0a, 0x1d, 0xe5, + 0xe9, 0x70, 0x3b, 0xc3, 0x5a, 0xb9, 0x81, 0xb7, 0x81, 0xd7, 0x6a, 0xd8, 0x13, 0x68, 0xb1, 0xdc, + 0x5c, 0x29, 0xd6, 0x9b, 0x95, 0x6a, 0xa9, 0xb6, 0xb6, 0x5e, 0x6c, 0x54, 0xbc, 0x4e, 0x72, 0x5d, + 0xab, 0x35, 0x6a, 0xcd, 0xb3, 0x65, 0xad, 0x5e, 0xa9, 0x55, 0x0b, 0xa6, 0x57, 0x65, 0xa6, 0x57, + 0xf5, 0x47, 0x37, 0x4b, 0xb9, 0x0a, 0x4e, 0xf9, 0xe9, 0xab, 0x35, 0x4f, 0xd0, 0x8c, 0x9d, 0xd7, + 0x4d, 0xd5, 0xce, 0xfb, 0x67, 0x09, 0xb2, 0x75, 0xd7, 0xea, 0xaa, 0x3f, 0x11, 0x76, 0x30, 0xa7, + 0x01, 0x6c, 0xbc, 0xab, 0xeb, 0xcd, 0x6d, 0xe9, 0x6c, 0x97, 0x49, 0x51, 0x7f, 0x4f, 0x78, 0x2b, + 0x2a, 0x1c, 0x09, 0xad, 0x6e, 0x44, 0x0f, 0xfd, 0x03, 0xb1, 0xb3, 0x39, 0xd1, 0x84, 0x92, 0xe9, + 0xfb, 0x0b, 0x87, 0xd9, 0x6c, 0x52, 0xe1, 0x24, 0x03, 0x9b, 0x27, 0x7f, 0x5f, 0x25, 0x90, 0x72, + 0x39, 0x5c, 0xd6, 0xa3, 0x5c, 0x58, 0xa7, 0x36, 0x95, 0x47, 0xc3, 0xa3, 0x18, 0xf5, 0x2e, 0xaf, + 0xd5, 0xce, 0x96, 0x03, 0x45, 0x5e, 0x2c, 0x36, 0x8a, 0x85, 0x2d, 0xf5, 0x0b, 0x32, 0x64, 0xd7, + 0xac, 0xbd, 0xde, 0x1d, 0x40, 0x13, 0x5d, 0x64, 0x56, 0x98, 0xfd, 0x57, 0xfe, 0x2c, 0x82, 0x90, + 0xd8, 0xd7, 0xa2, 0x77, 0xfb, 0xbf, 0x2c, 0x25, 0x11, 0xfb, 0xda, 0x41, 0xb7, 0xf8, 0xff, 0x6e, + 0x18, 0xb1, 0x47, 0x88, 0x16, 0x29, 0x67, 0xe0, 0x74, 0xf8, 0xa1, 0xb2, 0x58, 0xae, 0x36, 0x2a, + 0x4b, 0xf7, 0x85, 0xc2, 0xad, 0x68, 0x42, 0xe2, 0x1f, 0xd4, 0x8d, 0xc5, 0xcf, 0xdf, 0x4e, 0xc1, + 0xf1, 0xf0, 0xdb, 0x72, 0xb9, 0xe1, 0x7f, 0xb9, 0x5f, 0x7d, 0x30, 0x07, 0x33, 0xa4, 0x5b, 0xdf, + 0xe8, 0xb6, 0x3d, 0x8b, 0xe8, 0x89, 0x21, 0xba, 0x37, 0xc0, 0xd1, 0xca, 0xfa, 0x52, 0xbd, 0xee, + 0x5a, 0xb6, 0xbe, 0x85, 0x8a, 0xed, 0xb6, 0x4d, 0xa5, 0xd5, 0x9b, 0xac, 0xbe, 0x4f, 0x78, 0xf5, + 0x94, 0x1f, 0x4a, 0x48, 0x99, 0x11, 0xa8, 0x7f, 0x4d, 0x68, 0xb5, 0x53, 0x80, 0x60, 0x32, 0xf4, + 0xef, 0x1f, 0x71, 0x9b, 0x8b, 0xc6, 0x65, 0xf3, 0xcc, 0xf3, 0x24, 0x98, 0x6a, 0x18, 0x3b, 0xe8, + 0x59, 0x96, 0x89, 0x1c, 0x65, 0x02, 0xe4, 0xe5, 0xb5, 0x46, 0xe1, 0x88, 0xf7, 0xe0, 0x99, 0xaa, + 0x19, 0xfc, 0x50, 0xf6, 0x0a, 0xf0, 0x1e, 0x8a, 0x8d, 0x82, 0xec, 0x3d, 0xac, 0x95, 0x1b, 0x85, + 0xac, 0xf7, 0x50, 0x2d, 0x37, 0x0a, 0x39, 0xef, 0x61, 0x7d, 0xb5, 0x51, 0xc8, 0x7b, 0x0f, 0x95, + 0x7a, 0xa3, 0x30, 0xe1, 0x3d, 0x2c, 0xd4, 0x1b, 0x85, 0x49, 0xef, 0xe1, 0x6c, 0xbd, 0x51, 0x98, + 0xf2, 0x1e, 0x4a, 0x8d, 0x46, 0x01, 0xbc, 0x87, 0x7b, 0xea, 0x8d, 0xc2, 0xb4, 0xf7, 0x50, 0x2c, + 0x35, 0x0a, 0x33, 0xf8, 0xa1, 0xdc, 0x28, 0xcc, 0x7a, 0x0f, 0xf5, 0x7a, 0xa3, 0x30, 0x87, 0x29, + 0xd7, 0x1b, 0x85, 0xa3, 0xb8, 0xac, 0x4a, 0xa3, 0x50, 0xf0, 0x1e, 0x56, 0xea, 0x8d, 0xc2, 0x31, + 0x9c, 0xb9, 0xde, 0x28, 0x28, 0xb8, 0xd0, 0x7a, 0xa3, 0x70, 0x19, 0xce, 0x53, 0x6f, 0x14, 0x8e, + 0xe3, 0x22, 0xea, 0x8d, 0xc2, 0x09, 0xcc, 0x46, 0xb9, 0x51, 0x38, 0x89, 0xf3, 0x68, 0x8d, 0xc2, + 0xe5, 0xf8, 0x53, 0xb5, 0x51, 0x38, 0x85, 0x19, 0x2b, 0x37, 0x0a, 0x57, 0xe0, 0x07, 0xad, 0x51, + 0x50, 0xf1, 0xa7, 0x62, 0xa3, 0x70, 0xa5, 0xfa, 0x28, 0x98, 0x5a, 0x46, 0x2e, 0x01, 0x51, 0x2d, + 0x80, 0xbc, 0x8c, 0x5c, 0x76, 0x72, 0xf4, 0x0d, 0x19, 0x2e, 0xa7, 0x13, 0xea, 0x25, 0xdb, 0xda, + 0x59, 0x45, 0x5b, 0x7a, 0xeb, 0x52, 0xf9, 0x01, 0xcf, 0x84, 0x62, 0x77, 0xbb, 0x15, 0xc8, 0x76, + 0xc3, 0xce, 0x08, 0x3f, 0xc7, 0x5a, 0x9c, 0xfe, 0x12, 0x9f, 0x1c, 0x2e, 0xf1, 0x51, 0x8b, 0xec, + 0x1f, 0x59, 0x8d, 0xe6, 0x56, 0xe5, 0x33, 0x3d, 0xab, 0xf2, 0x5e, 0x33, 0xe9, 0x22, 0xdb, 0xb1, + 0x4c, 0xbd, 0x53, 0xa7, 0xee, 0x10, 0x64, 0x2d, 0xb1, 0x37, 0x59, 0x79, 0x86, 0xdf, 0x32, 0x88, + 0x55, 0xf6, 0xb4, 0xb8, 0x75, 0x83, 0xde, 0x6a, 0x46, 0x34, 0x92, 0xcf, 0x04, 0x8d, 0xa4, 0xc1, + 0x35, 0x92, 0xbb, 0x0f, 0x40, 0x7b, 0x2c, 0x73, 0x88, 0xd0, 0x59, 0xd8, 0xdf, 0x04, 0x90, 0xbd, + 0x99, 0xd9, 0xc9, 0xb2, 0xd9, 0xcf, 0xc2, 0x67, 0x75, 0xe1, 0xed, 0x2c, 0x34, 0xeb, 0xbc, 0x48, + 0x6f, 0xef, 0x5b, 0xed, 0xfe, 0x34, 0x23, 0x24, 0xfa, 0xd9, 0x40, 0xa2, 0x75, 0x4e, 0xa2, 0x77, + 0x0d, 0x4f, 0x3a, 0x99, 0x40, 0xab, 0x23, 0xed, 0x80, 0xb2, 0xea, 0xb7, 0xb3, 0xf0, 0x28, 0xe2, + 0xd1, 0x44, 0x39, 0x24, 0xad, 0xac, 0x68, 0xb6, 0x35, 0xe4, 0xb8, 0xba, 0xed, 0x72, 0xa7, 0xcc, + 0x7b, 0xa6, 0x52, 0x99, 0x14, 0xa6, 0x52, 0xd2, 0xc0, 0xa9, 0x94, 0xfa, 0x5e, 0xd6, 0x7c, 0x38, + 0xc7, 0x63, 0x5c, 0xec, 0xdf, 0xff, 0xc7, 0xd5, 0x30, 0x0a, 0xea, 0xc0, 0xae, 0xf8, 0x29, 0x0e, + 0xea, 0xa5, 0x03, 0x97, 0x90, 0x0c, 0xf1, 0xdf, 0x1b, 0xad, 0x9d, 0x97, 0x65, 0xbf, 0xf1, 0x46, + 0x49, 0xa1, 0x9d, 0xaa, 0x81, 0xfe, 0xb9, 0x09, 0x98, 0xc2, 0x6d, 0x61, 0xd5, 0x30, 0x2f, 0xa8, + 0x0f, 0xc9, 0x30, 0x53, 0x45, 0x17, 0x4b, 0xdb, 0x7a, 0xa7, 0x83, 0xcc, 0x2d, 0xc4, 0x9a, 0xed, + 0xa7, 0x60, 0x42, 0xef, 0x76, 0xab, 0xe1, 0xee, 0x8d, 0xff, 0x4a, 0xfb, 0xdf, 0x6f, 0xf5, 0x6d, + 0xe4, 0x99, 0x98, 0x46, 0x1e, 0x94, 0x3b, 0xcf, 0x96, 0x19, 0x31, 0x43, 0xbe, 0x06, 0xa6, 0x5b, + 0x7e, 0x96, 0xe0, 0x34, 0x0a, 0x9b, 0xa4, 0xfe, 0x4d, 0xa2, 0x6e, 0x40, 0xa8, 0xf0, 0x64, 0x4a, + 0x81, 0x46, 0x6c, 0x87, 0x9c, 0x80, 0x63, 0x8d, 0x5a, 0xad, 0xb9, 0x56, 0xac, 0xde, 0x17, 0x9e, + 0x02, 0xdf, 0x54, 0x5f, 0x93, 0x85, 0xb9, 0xba, 0xd5, 0xd9, 0x43, 0x21, 0x4c, 0x15, 0xce, 0xcd, + 0x89, 0x95, 0x53, 0x66, 0x9f, 0x9c, 0x94, 0x93, 0x90, 0xd7, 0x4d, 0xe7, 0x22, 0xf2, 0x6d, 0x43, + 0xfa, 0x46, 0x61, 0xfc, 0x08, 0xdb, 0x8e, 0x35, 0x1e, 0xc6, 0x3b, 0x06, 0x48, 0x92, 0xe7, 0x2a, + 0x02, 0xc8, 0x33, 0x30, 0xe3, 0x90, 0x2d, 0xd8, 0x06, 0xb3, 0xd3, 0xce, 0xa5, 0x61, 0x16, 0x89, + 0x0f, 0x80, 0x4c, 0x59, 0xc4, 0x6f, 0xea, 0x43, 0x41, 0xf3, 0xdf, 0xe0, 0x20, 0x2e, 0x1e, 0x84, + 0xb1, 0x64, 0x20, 0xbf, 0x6e, 0xd4, 0x33, 0xbc, 0x53, 0x70, 0x9c, 0xb6, 0xda, 0x66, 0x69, 0xa5, + 0xb8, 0xba, 0x5a, 0xae, 0x2e, 0x97, 0x9b, 0x95, 0x45, 0xb2, 0x01, 0x14, 0xa6, 0x14, 0x1b, 0x8d, + 0xf2, 0xda, 0x7a, 0xa3, 0xde, 0x2c, 0x3f, 0xb3, 0x54, 0x2e, 0x2f, 0x62, 0x47, 0x43, 0x7c, 0x52, + 0xc8, 0x77, 0x09, 0x2d, 0x56, 0xeb, 0xe7, 0xca, 0x5a, 0x61, 0xfb, 0x4c, 0x11, 0xa6, 0x99, 0x7e, + 0xde, 0xe3, 0x6e, 0x11, 0x6d, 0xea, 0xbb, 0x1d, 0x6a, 0xab, 0x15, 0x8e, 0x78, 0xdc, 0x61, 0xd9, + 0xd4, 0xcc, 0xce, 0xa5, 0x42, 0x46, 0x29, 0xc0, 0x0c, 0xdb, 0xa5, 0x17, 0x24, 0xf5, 0x5d, 0x57, + 0xc1, 0xd4, 0x39, 0xcb, 0xbe, 0x80, 0xbd, 0xe3, 0xd4, 0x0f, 0x92, 0x68, 0x31, 0xfe, 0xb9, 0x5b, + 0x66, 0x60, 0x7f, 0x9d, 0xb8, 0x0f, 0x86, 0x4f, 0x6d, 0x7e, 0xe0, 0xd9, 0xda, 0x6b, 0x60, 0xfa, + 0xa2, 0x9f, 0x3b, 0x6c, 0xe9, 0x4c, 0x92, 0xfa, 0xdf, 0xc4, 0xbc, 0x2a, 0x06, 0x17, 0x99, 0xfe, + 0xae, 0xff, 0x3b, 0x25, 0xc8, 0x2f, 0x23, 0xb7, 0xd8, 0xe9, 0xb0, 0x72, 0x7b, 0x85, 0xf0, 0x79, + 0x29, 0xae, 0x12, 0xc5, 0x4e, 0x27, 0xba, 0x51, 0x31, 0x02, 0xf2, 0xfd, 0xfa, 0xb9, 0x34, 0x41, + 0x6f, 0xc4, 0x01, 0x05, 0xa6, 0x2f, 0xb1, 0x8f, 0xc9, 0x81, 0xe7, 0xc0, 0xc3, 0x8c, 0x95, 0xf3, + 0x84, 0x30, 0x52, 0x50, 0x26, 0xde, 0x03, 0xc1, 0xcf, 0xa7, 0xdc, 0x0b, 0x13, 0xbb, 0x0e, 0x2a, + 0xe9, 0x0e, 0xc2, 0xbc, 0xf5, 0xd6, 0xb4, 0x76, 0xfe, 0x7e, 0xd4, 0x72, 0xe7, 0x2b, 0x3b, 0x9e, + 0x41, 0xbd, 0x41, 0x32, 0x06, 0xc1, 0x77, 0xe8, 0xbb, 0xe6, 0x53, 0xf0, 0x26, 0x25, 0x17, 0x0d, + 0x77, 0xbb, 0xb4, 0xad, 0xbb, 0x74, 0x6d, 0x3b, 0x78, 0x57, 0x5f, 0x32, 0x04, 0x9c, 0xb1, 0x3b, + 0xec, 0x91, 0xc7, 0x2e, 0x13, 0x83, 0x38, 0x82, 0x6d, 0xf1, 0x61, 0x40, 0xfc, 0x7b, 0x09, 0xb2, + 0xb5, 0x2e, 0x32, 0x85, 0xcf, 0x18, 0x05, 0xb2, 0x95, 0x7a, 0x64, 0xfb, 0x90, 0xb8, 0xcf, 0x5d, + 0x50, 0x69, 0xaf, 0xe4, 0x08, 0xc9, 0xde, 0x0c, 0x59, 0xc3, 0xdc, 0xb4, 0xa8, 0x61, 0x7a, 0x65, + 0xc4, 0xd6, 0x5a, 0xc5, 0xdc, 0xb4, 0x34, 0x9c, 0x51, 0xd4, 0xdd, 0x2e, 0xae, 0xec, 0xf4, 0xc5, + 0xfd, 0x9d, 0x49, 0xc8, 0x13, 0x75, 0x56, 0x5f, 0x2e, 0x83, 0x5c, 0x6c, 0xb7, 0x23, 0x04, 0x2f, + 0xed, 0x13, 0xbc, 0x85, 0x7f, 0x0b, 0x30, 0x09, 0xde, 0xf9, 0x10, 0x31, 0x82, 0x7d, 0x3b, 0x6d, + 0x52, 0xc5, 0x76, 0x3b, 0xda, 0xb3, 0x37, 0x28, 0x50, 0xe2, 0x0b, 0x64, 0x5b, 0xb8, 0x2c, 0xd6, + 0xc2, 0x13, 0x0f, 0x04, 0x91, 0xfc, 0xa5, 0x0f, 0xd1, 0x3f, 0x4a, 0x30, 0xb1, 0x6a, 0x38, 0xae, + 0x87, 0x4d, 0x51, 0x04, 0x9b, 0xab, 0x60, 0xca, 0x17, 0x8d, 0xd7, 0xe5, 0x79, 0xfd, 0x79, 0x98, + 0xa0, 0xbe, 0x91, 0x45, 0xe7, 0x1e, 0x1e, 0x9d, 0x27, 0xc5, 0xd7, 0x9e, 0x72, 0x11, 0x7d, 0x76, + 0x23, 0x2c, 0x56, 0xea, 0x2d, 0xf6, 0x37, 0x02, 0x81, 0xaf, 0x71, 0x02, 0xbf, 0x6d, 0x98, 0x22, + 0xd3, 0x17, 0xfa, 0x17, 0x25, 0x00, 0xaf, 0x6c, 0x7a, 0x40, 0xee, 0xb1, 0xdc, 0xb1, 0xf7, 0x18, + 0xe9, 0xbe, 0x86, 0x95, 0xee, 0x1a, 0x2f, 0xdd, 0xa7, 0x0c, 0xae, 0x6a, 0xdc, 0x41, 0x38, 0xa5, + 0x00, 0xb2, 0x11, 0x88, 0xd6, 0x7b, 0x54, 0xdf, 0x19, 0x08, 0x75, 0x9d, 0x13, 0xea, 0x1d, 0x43, + 0x96, 0x94, 0xbe, 0x5c, 0xff, 0x42, 0x82, 0x89, 0x3a, 0x72, 0xbd, 0x6e, 0x52, 0x3d, 0x2b, 0xd2, + 0xc3, 0x33, 0x6d, 0x5b, 0x12, 0x6c, 0xdb, 0xdf, 0xcf, 0x88, 0x86, 0xcf, 0x09, 0x25, 0x43, 0x79, + 0x8a, 0x58, 0x3c, 0x78, 0x58, 0x28, 0x7c, 0xce, 0x20, 0x6a, 0xe9, 0x4b, 0xf7, 0xed, 0x52, 0xb0, + 0x31, 0xcf, 0x9f, 0x5f, 0x61, 0xcd, 0xe2, 0xcc, 0x7e, 0xb3, 0x58, 0xfc, 0xfc, 0x0a, 0x5b, 0xc7, + 0xe8, 0x5d, 0xe9, 0xc4, 0xc6, 0xc6, 0x08, 0x36, 0x8c, 0x87, 0x91, 0xd7, 0x73, 0x64, 0xc8, 0xd3, + 0x95, 0xe5, 0xbb, 0xe2, 0x57, 0x96, 0x07, 0x4f, 0x2d, 0x3e, 0x30, 0x84, 0x29, 0x17, 0xb7, 0xdc, + 0x1b, 0xb0, 0x21, 0x31, 0x6c, 0xdc, 0x04, 0x39, 0x1c, 0xdf, 0x93, 0x8e, 0x73, 0xe1, 0x5e, 0xbf, + 0x4f, 0xa2, 0xec, 0x7d, 0xd5, 0x48, 0xa6, 0xc4, 0x28, 0x8c, 0x60, 0x85, 0x78, 0x18, 0x14, 0xde, + 0xfb, 0x85, 0x4c, 0x60, 0x84, 0x7c, 0x20, 0x4b, 0xcd, 0xbf, 0x4f, 0xf1, 0x91, 0x46, 0x5a, 0x96, + 0xe9, 0xa2, 0x07, 0x98, 0x35, 0xf9, 0x20, 0x21, 0xd6, 0x32, 0x38, 0x05, 0x13, 0xae, 0xcd, 0xae, + 0xd3, 0xfb, 0xaf, 0x6c, 0x8f, 0x93, 0xe3, 0x7b, 0x9c, 0x2a, 0x9c, 0x31, 0xcc, 0x56, 0x67, 0xb7, + 0x8d, 0x34, 0xd4, 0xd1, 0xbd, 0x5a, 0x39, 0x45, 0x67, 0x11, 0x75, 0x91, 0xd9, 0x46, 0xa6, 0x4b, + 0xf8, 0xf4, 0x3d, 0x9d, 0x05, 0x72, 0xaa, 0xdf, 0x64, 0x15, 0xe3, 0x4e, 0x5e, 0x31, 0x1e, 0xdb, + 0x6f, 0x5e, 0x11, 0x63, 0x84, 0xde, 0x06, 0x40, 0xea, 0x76, 0xd6, 0x40, 0x17, 0x69, 0x87, 0x78, + 0x45, 0x8f, 0x29, 0x5a, 0x0b, 0x32, 0x68, 0x4c, 0x66, 0xf5, 0xab, 0x81, 0x32, 0xdc, 0xcd, 0x29, + 0xc3, 0x4d, 0x82, 0x2c, 0x24, 0xd3, 0x83, 0xee, 0x10, 0x6b, 0x1d, 0xb3, 0x30, 0x15, 0xae, 0x50, + 0xca, 0xca, 0x15, 0x70, 0xc2, 0xf7, 0x79, 0xa8, 0x96, 0xcb, 0x8b, 0xf5, 0xe6, 0xc6, 0xfa, 0xb2, + 0x56, 0x5c, 0x2c, 0x17, 0x40, 0x51, 0x60, 0xae, 0xb6, 0x70, 0x4f, 0xb9, 0xd4, 0x08, 0x5c, 0x15, + 0xb2, 0xea, 0x9f, 0x49, 0x90, 0xc3, 0x6e, 0xfa, 0xea, 0x4f, 0x8f, 0x48, 0x73, 0x1c, 0x6e, 0x87, + 0x27, 0x98, 0x48, 0x89, 0x47, 0x00, 0xa5, 0xc2, 0xc4, 0x5c, 0x1d, 0x28, 0x02, 0x68, 0x0c, 0xa1, + 0xf4, 0x9b, 0xa7, 0xd7, 0x24, 0xeb, 0xdb, 0xd6, 0xc5, 0x1f, 0xe7, 0x26, 0xe9, 0xd5, 0xff, 0x90, + 0x9b, 0x64, 0x1f, 0x16, 0xc6, 0xde, 0x24, 0xfb, 0xb4, 0xbb, 0x98, 0x66, 0xaa, 0x3e, 0x3b, 0x17, + 0x2c, 0xc8, 0x3c, 0x4f, 0x3a, 0xd0, 0x82, 0x4c, 0x11, 0x66, 0x0d, 0xd3, 0x45, 0xb6, 0xa9, 0x77, + 0x96, 0x3a, 0xfa, 0x96, 0x1f, 0x96, 0xa0, 0x77, 0x16, 0x5e, 0x61, 0xf2, 0x68, 0xfc, 0x1f, 0xca, + 0x69, 0x00, 0x17, 0xed, 0x74, 0x3b, 0xba, 0x1b, 0xaa, 0x1e, 0x93, 0xc2, 0x6a, 0x5f, 0x96, 0xd7, + 0xbe, 0x5b, 0xe0, 0x32, 0x02, 0x5a, 0xe3, 0x52, 0x17, 0x6d, 0x98, 0xc6, 0xcf, 0xec, 0xe2, 0xc0, + 0x54, 0x44, 0x47, 0xfb, 0x7d, 0xe2, 0x96, 0x25, 0xf2, 0x3d, 0xcb, 0x12, 0x7f, 0x2f, 0x7c, 0xe0, + 0xd5, 0x6f, 0xf5, 0x03, 0x0e, 0xbc, 0x06, 0x2d, 0x4d, 0xee, 0x69, 0x69, 0x81, 0xb1, 0x90, 0x15, + 0x30, 0x16, 0x58, 0x54, 0x72, 0x82, 0x86, 0xf6, 0x1b, 0x84, 0x4e, 0xd4, 0xc6, 0x55, 0x63, 0x0c, + 0x13, 0x39, 0x19, 0xe6, 0x48, 0xd1, 0x0b, 0x96, 0x75, 0x61, 0x47, 0xb7, 0x2f, 0xa8, 0xf6, 0x81, + 0x54, 0x31, 0x76, 0x4d, 0x24, 0x72, 0xa1, 0xef, 0xb3, 0x2c, 0xea, 0xcb, 0x3c, 0xea, 0x4f, 0x88, + 0x16, 0x97, 0xcf, 0xf3, 0x78, 0x16, 0x45, 0xde, 0x1a, 0xe0, 0x79, 0x0f, 0x87, 0xe7, 0x93, 0x13, + 0x33, 0x98, 0x3e, 0xae, 0x7f, 0x10, 0xe0, 0xea, 0x77, 0xf4, 0xec, 0x7c, 0x72, 0x94, 0xb8, 0xaa, + 0x5f, 0x1b, 0x0e, 0x3b, 0x9f, 0xaf, 0x21, 0xb0, 0x2b, 0x80, 0x7c, 0x21, 0xd8, 0xc2, 0xf2, 0x1e, + 0xd9, 0x0a, 0x65, 0xd3, 0x43, 0x33, 0x82, 0xe5, 0xb1, 0xa0, 0x79, 0x9c, 0x67, 0xa1, 0xd6, 0x4d, + 0x15, 0xd3, 0xaf, 0x08, 0xaf, 0xd3, 0xf4, 0x15, 0x10, 0xe1, 0x6e, 0x3c, 0xad, 0x52, 0x6c, 0x91, + 0x47, 0x9c, 0xcd, 0xf4, 0xd1, 0x7c, 0x71, 0x0e, 0xa6, 0xfc, 0x23, 0xc9, 0x38, 0x62, 0x7e, 0x80, + 0xe1, 0x49, 0xc8, 0x3b, 0xd6, 0xae, 0xdd, 0x42, 0x74, 0xe5, 0x8c, 0xbe, 0x0d, 0xb1, 0xca, 0x33, + 0x70, 0x3c, 0xdf, 0x67, 0x32, 0x64, 0x13, 0x9b, 0x0c, 0xd1, 0x06, 0x69, 0xdc, 0x00, 0xff, 0x12, + 0xe1, 0x30, 0xa7, 0x1c, 0x66, 0x75, 0xe4, 0x3e, 0x12, 0xc7, 0xf8, 0xdf, 0x15, 0x5a, 0x43, 0x18, + 0x50, 0x93, 0x64, 0x2a, 0x57, 0x1b, 0xc2, 0x50, 0xbd, 0x12, 0x2e, 0xf7, 0x73, 0x50, 0x0b, 0x15, + 0x5b, 0xa4, 0x1b, 0xda, 0x6a, 0x41, 0x56, 0x9f, 0x93, 0x85, 0x02, 0x61, 0xad, 0x16, 0x18, 0x6b, + 0xea, 0x2b, 0x32, 0x87, 0x6d, 0x91, 0x46, 0x4f, 0x31, 0x3f, 0x2f, 0x89, 0x86, 0x52, 0xe3, 0x04, + 0x1f, 0xd6, 0x2e, 0x42, 0x93, 0x86, 0x68, 0x66, 0x31, 0xca, 0xa7, 0xfe, 0x7a, 0x46, 0x24, 0x32, + 0x9b, 0x18, 0x8b, 0xe9, 0xf7, 0x4a, 0x5f, 0xca, 0xfa, 0x91, 0x25, 0x96, 0x6c, 0x6b, 0x67, 0xc3, + 0xee, 0xa8, 0xff, 0xa7, 0x50, 0xe0, 0xcb, 0x08, 0xf3, 0x5f, 0x8a, 0x36, 0xff, 0x0b, 0x20, 0xef, + 0xda, 0x1d, 0x7f, 0xf8, 0xde, 0xb5, 0x3b, 0x43, 0x0c, 0xdf, 0xca, 0xf5, 0x30, 0xa7, 0xb7, 0xdb, + 0xeb, 0xfa, 0x16, 0x2a, 0x79, 0xf3, 0x6a, 0xd3, 0xa5, 0xa7, 0xce, 0x7b, 0x52, 0x63, 0xbb, 0xa2, + 0x6f, 0x0a, 0xef, 0xc4, 0x71, 0x20, 0x51, 0xf9, 0x8c, 0x65, 0x78, 0xf3, 0x86, 0x84, 0xd6, 0xb6, + 0x1e, 0xc6, 0xc0, 0xa0, 0x6f, 0x82, 0x3b, 0x74, 0x02, 0x7c, 0xa7, 0xaf, 0x59, 0xbf, 0x2d, 0xc1, + 0x84, 0x27, 0xef, 0x62, 0xbb, 0xad, 0x3e, 0x86, 0x0b, 0x15, 0x13, 0xb9, 0x47, 0xfa, 0x02, 0xe1, + 0xcd, 0x69, 0xbf, 0x86, 0x84, 0x7e, 0x04, 0x26, 0xa1, 0x10, 0x25, 0x4e, 0x88, 0x62, 0x7b, 0xd0, + 0xb1, 0x45, 0xa4, 0x2f, 0xbe, 0xcf, 0x48, 0x30, 0xeb, 0xcf, 0x23, 0x96, 0x90, 0xdb, 0xda, 0x56, + 0x6f, 0x13, 0x5d, 0x68, 0xa2, 0x2d, 0x4d, 0x0a, 0x5a, 0x9a, 0xfa, 0xc3, 0x4c, 0x42, 0x95, 0xe7, + 0x4a, 0x8e, 0x58, 0xa5, 0x4b, 0xa4, 0x8b, 0x71, 0x04, 0xd3, 0x17, 0xe6, 0x57, 0x25, 0x80, 0x86, + 0x15, 0xcc, 0x75, 0x0f, 0x20, 0xc9, 0x97, 0x09, 0xdf, 0x42, 0x41, 0x2b, 0x1e, 0x16, 0x9b, 0xbc, + 0xe7, 0x10, 0xdc, 0x62, 0x1b, 0x54, 0xd2, 0x58, 0xda, 0xfa, 0xd4, 0xe2, 0x6e, 0xb7, 0x63, 0xb4, + 0x74, 0xb7, 0x77, 0x5f, 0x38, 0x5a, 0xbc, 0xf8, 0x3a, 0xa9, 0x44, 0x46, 0x61, 0x50, 0x46, 0x84, + 0x2c, 0xc9, 0x61, 0x5b, 0xc9, 0x3f, 0x6c, 0x2b, 0xb8, 0xd7, 0x33, 0x80, 0xf8, 0x18, 0xd4, 0x53, + 0x86, 0xa3, 0xb5, 0x2e, 0x32, 0x17, 0x6c, 0xa4, 0xb7, 0x5b, 0xf6, 0xee, 0xce, 0x79, 0x87, 0x75, + 0x6a, 0x88, 0xd7, 0x51, 0x66, 0xe9, 0x58, 0xe2, 0x96, 0x8e, 0xd5, 0xe7, 0xca, 0xa2, 0x07, 0xea, + 0x99, 0x0d, 0x0e, 0x86, 0x87, 0x21, 0x86, 0xba, 0x44, 0x5b, 0x71, 0x3d, 0xab, 0xc4, 0xd9, 0x24, + 0xab, 0xc4, 0x6f, 0x13, 0x3a, 0x9e, 0x2f, 0x54, 0xaf, 0xb1, 0xec, 0xa8, 0xce, 0xd5, 0x91, 0x1b, + 0x01, 0xef, 0x75, 0x30, 0x7b, 0x3e, 0xfc, 0x12, 0x40, 0xcc, 0x27, 0xf6, 0xf1, 0x73, 0x78, 0x7b, + 0xd2, 0x15, 0x18, 0x9e, 0x85, 0x08, 0x74, 0x03, 0x04, 0x25, 0x91, 0xcd, 0xd4, 0x44, 0xcb, 0x29, + 0xb1, 0xe5, 0xa7, 0x8f, 0xc2, 0x27, 0x24, 0x98, 0xc6, 0x97, 0x64, 0x2d, 0x5c, 0xc2, 0xde, 0xf9, + 0x82, 0x46, 0xc9, 0x8b, 0x59, 0x31, 0x2b, 0x90, 0xed, 0x18, 0xe6, 0x05, 0x7f, 0x17, 0xdc, 0x7b, + 0x0e, 0xaf, 0x5c, 0x91, 0xfa, 0x5c, 0xb9, 0x12, 0xec, 0x53, 0x04, 0xe5, 0x1e, 0xe8, 0x0e, 0xc0, + 0x81, 0xe4, 0xd2, 0x17, 0xe3, 0xdf, 0x66, 0x21, 0x5f, 0x47, 0xba, 0xdd, 0xda, 0x56, 0x3f, 0x20, + 0xf5, 0x9d, 0x2a, 0x4c, 0xf2, 0x53, 0x85, 0x25, 0x98, 0xd8, 0x34, 0x3a, 0x2e, 0xb2, 0x89, 0x67, + 0x10, 0xdb, 0xb5, 0x93, 0x26, 0xbe, 0xd0, 0xb1, 0x5a, 0x17, 0xe6, 0xa9, 0xe9, 0x3e, 0xef, 0x87, + 0xe8, 0x9a, 0x5f, 0xc2, 0x3f, 0x69, 0xfe, 0xcf, 0x9e, 0x41, 0xe8, 0x58, 0xb6, 0x1b, 0x15, 0x7d, + 0x39, 0x82, 0x4a, 0xdd, 0xb2, 0x5d, 0x8d, 0xfc, 0xe8, 0xc1, 0xbc, 0xb9, 0xdb, 0xe9, 0x34, 0xd0, + 0x03, 0xae, 0x3f, 0x6d, 0xf3, 0xdf, 0x3d, 0x63, 0xd1, 0xda, 0xdc, 0x74, 0x10, 0x59, 0x34, 0xc8, + 0x69, 0xf4, 0x4d, 0x39, 0x0e, 0xb9, 0x8e, 0xb1, 0x63, 0x90, 0x89, 0x46, 0x4e, 0x23, 0x2f, 0xca, + 0x8d, 0x50, 0x08, 0xe7, 0x38, 0x84, 0xd1, 0x53, 0x79, 0xdc, 0x34, 0xf7, 0xa5, 0x7b, 0x3a, 0x73, + 0x01, 0x5d, 0x72, 0x4e, 0x4d, 0xe0, 0xef, 0xf8, 0x99, 0x77, 0xc3, 0x14, 0xd9, 0xef, 0x20, 0x12, + 0x8f, 0x9e, 0xc1, 0xda, 0xa8, 0x65, 0xd9, 0x6d, 0x5f, 0x36, 0xd1, 0x13, 0x0c, 0x9a, 0x2f, 0xd9, + 0x2e, 0x45, 0xdf, 0xc2, 0xc7, 0xe0, 0x02, 0x91, 0xf7, 0xba, 0x4d, 0xaf, 0xe8, 0x73, 0x86, 0xbb, + 0xbd, 0x86, 0x5c, 0x5d, 0xfd, 0x5b, 0xb9, 0xaf, 0xc6, 0x4d, 0xff, 0xff, 0x1a, 0x37, 0x40, 0xe3, + 0x48, 0x98, 0x00, 0x77, 0xd7, 0x36, 0x3d, 0x39, 0xd2, 0x70, 0x67, 0x4c, 0x8a, 0x72, 0x07, 0x5c, + 0x11, 0xbe, 0xf9, 0x4b, 0xa5, 0x8b, 0x74, 0xda, 0x3a, 0x85, 0xb3, 0x47, 0x67, 0x50, 0xd6, 0xe1, + 0x5a, 0xf2, 0x71, 0xa5, 0xb1, 0xb6, 0xba, 0x62, 0x6c, 0x6d, 0x77, 0x8c, 0xad, 0x6d, 0xd7, 0xa9, + 0x98, 0x8e, 0x8b, 0xf4, 0x76, 0x6d, 0x53, 0x23, 0x71, 0xd3, 0x01, 0xd3, 0x11, 0xc9, 0xca, 0x7b, + 0x0e, 0x89, 0x8d, 0x6e, 0xac, 0xa6, 0x44, 0xb4, 0x94, 0x27, 0x7b, 0x2d, 0xc5, 0xd9, 0xed, 0x04, + 0x98, 0x5e, 0xd5, 0x83, 0x69, 0xa8, 0xea, 0xbb, 0x1d, 0xdc, 0x5c, 0x70, 0xe6, 0xa4, 0xe3, 0x5c, + 0x0c, 0x27, 0xe9, 0x37, 0x9b, 0xff, 0x37, 0x0f, 0xb9, 0x65, 0x5b, 0xef, 0x6e, 0xab, 0xcf, 0x61, + 0xfa, 0xe7, 0x51, 0xb5, 0x89, 0x40, 0x3b, 0xa5, 0x41, 0xda, 0x29, 0x0f, 0xd0, 0xce, 0x2c, 0xa3, + 0x9d, 0xd1, 0x8b, 0xca, 0x67, 0x60, 0xa6, 0x65, 0x75, 0x3a, 0xa8, 0xe5, 0xc9, 0xa3, 0xd2, 0xc6, + 0xab, 0x39, 0x53, 0x1a, 0x97, 0x86, 0xc3, 0x18, 0x22, 0xb7, 0x4e, 0xd6, 0xd0, 0x89, 0xd2, 0x87, + 0x09, 0xea, 0x2b, 0x24, 0xc8, 0x96, 0xdb, 0x5b, 0x88, 0x5b, 0x67, 0xcf, 0x30, 0xeb, 0xec, 0x27, + 0x21, 0xef, 0xea, 0xf6, 0x16, 0x72, 0xfd, 0x75, 0x02, 0xf2, 0x16, 0x44, 0x57, 0x94, 0x99, 0xe8, + 0x8a, 0x4f, 0x81, 0xac, 0x27, 0x33, 0x1a, 0x61, 0xe7, 0xda, 0x7e, 0xf0, 0x63, 0xd9, 0xcf, 0x7b, + 0x25, 0xce, 0x7b, 0xb5, 0xd6, 0xf0, 0x0f, 0xbd, 0x58, 0xe7, 0xf6, 0x61, 0x8d, 0xaf, 0x80, 0x6a, + 0x59, 0x66, 0x65, 0x47, 0xdf, 0x42, 0xb4, 0x9a, 0x61, 0x82, 0xff, 0xb5, 0xbc, 0x63, 0xdd, 0x6f, + 0xd0, 0x40, 0x87, 0x61, 0x82, 0x57, 0x85, 0x6d, 0xa3, 0xdd, 0x46, 0x26, 0x6d, 0xd9, 0xf4, 0xed, + 0xcc, 0x69, 0xc8, 0x7a, 0x3c, 0x78, 0xfa, 0xe3, 0x19, 0x0b, 0x85, 0x23, 0xca, 0x8c, 0xd7, 0xac, + 0x48, 0xe3, 0x2d, 0x64, 0xf8, 0x35, 0x55, 0x11, 0xb7, 0x1d, 0x52, 0xb9, 0xfe, 0x8d, 0xeb, 0xf1, + 0x90, 0x33, 0xad, 0x36, 0x1a, 0x38, 0x08, 0x91, 0x5c, 0xca, 0x93, 0x20, 0x87, 0xda, 0x5e, 0xaf, + 0x20, 0xe3, 0xec, 0xa7, 0xe3, 0x65, 0xa9, 0x91, 0xcc, 0xc9, 0x7c, 0x83, 0xfa, 0x71, 0x9b, 0x7e, + 0x03, 0xfc, 0x85, 0x09, 0x38, 0x4a, 0xfa, 0x80, 0xfa, 0xee, 0x79, 0x8f, 0xd4, 0x79, 0xa4, 0x3e, + 0xdc, 0x7f, 0xe0, 0x3a, 0xca, 0x2b, 0xfb, 0x71, 0xc8, 0x39, 0xbb, 0xe7, 0x03, 0x23, 0x94, 0xbc, + 0xb0, 0x4d, 0x57, 0x1a, 0xc9, 0x70, 0x26, 0x0f, 0x3b, 0x9c, 0x71, 0x43, 0x93, 0xec, 0x37, 0xfe, + 0x70, 0x20, 0xcb, 0xe3, 0x64, 0x7f, 0x20, 0xeb, 0x37, 0x0c, 0x9d, 0x82, 0x09, 0x7d, 0xd3, 0x45, + 0x76, 0x68, 0x26, 0xd2, 0x57, 0x6f, 0xa8, 0x3c, 0x8f, 0x36, 0x2d, 0xdb, 0x13, 0xcb, 0x14, 0x19, + 0x2a, 0xfd, 0x77, 0xa6, 0xe5, 0x02, 0xb7, 0x43, 0x76, 0x13, 0x1c, 0x33, 0xad, 0x45, 0xd4, 0xa5, + 0x72, 0x26, 0x28, 0xce, 0xe2, 0x16, 0xb0, 0xff, 0xc3, 0xbe, 0xae, 0x64, 0x6e, 0x7f, 0x57, 0xa2, + 0x7e, 0x2e, 0xe9, 0x9c, 0xb9, 0x07, 0xe8, 0x91, 0x59, 0x68, 0xca, 0xd3, 0x60, 0xa6, 0x4d, 0x5d, + 0xb4, 0x5a, 0x46, 0xd0, 0x4a, 0x22, 0xff, 0xe3, 0x32, 0x87, 0x8a, 0x94, 0x65, 0x15, 0x69, 0x19, + 0x26, 0xf1, 0x81, 0x1c, 0x4f, 0x93, 0x72, 0x3d, 0x51, 0xda, 0xf0, 0xb4, 0x2e, 0xa8, 0x14, 0x23, + 0xb6, 0xf9, 0x12, 0xfd, 0x45, 0x0b, 0x7e, 0x4e, 0x36, 0xfb, 0x8e, 0x97, 0x50, 0xfa, 0xcd, 0xf1, + 0x37, 0xf2, 0x70, 0x45, 0xc9, 0xb6, 0x1c, 0x07, 0x47, 0xa1, 0xe8, 0x6d, 0x98, 0x6f, 0x91, 0xb8, + 0x38, 0xcb, 0x8f, 0xe8, 0xe6, 0xd7, 0xaf, 0x41, 0x8d, 0xaf, 0x69, 0x7c, 0x53, 0xf8, 0x28, 0x73, + 0xb0, 0xff, 0x10, 0x21, 0xf4, 0x1f, 0x8f, 0x46, 0xf2, 0xde, 0x8c, 0xc8, 0xe9, 0xea, 0x84, 0xb2, + 0x4a, 0xbf, 0xb9, 0x7c, 0x45, 0x82, 0x2b, 0x7b, 0xb9, 0xd9, 0x30, 0x9d, 0xa0, 0xc1, 0x5c, 0x3d, + 0xa0, 0xbd, 0xf0, 0xa7, 0x71, 0x63, 0x6f, 0x38, 0x8a, 0xa8, 0x3b, 0x53, 0x5a, 0xc4, 0x62, 0xc9, + 0xfb, 0x33, 0x22, 0x37, 0x1c, 0x25, 0x26, 0x9f, 0xbe, 0x70, 0x3f, 0x9f, 0x85, 0xa3, 0xcb, 0xb6, + 0xb5, 0xdb, 0x75, 0xc2, 0x1e, 0xe8, 0xaf, 0xfa, 0x6f, 0xb8, 0xe6, 0x45, 0x4c, 0x83, 0x6b, 0x60, + 0xda, 0xa6, 0xd6, 0x5c, 0xb8, 0xfd, 0xca, 0x26, 0xb1, 0xbd, 0x97, 0x7c, 0x90, 0xde, 0x2b, 0xec, + 0x67, 0xb2, 0x5c, 0x3f, 0xd3, 0xdb, 0x73, 0xe4, 0xfa, 0xf4, 0x1c, 0x7f, 0x29, 0x25, 0x1c, 0x54, + 0x7b, 0x44, 0x14, 0xd1, 0x5f, 0x94, 0x20, 0xbf, 0x85, 0x33, 0xd2, 0xee, 0xe2, 0x71, 0x62, 0x35, + 0xc3, 0xc4, 0x35, 0xfa, 0x6b, 0x28, 0x57, 0x99, 0xd5, 0xe1, 0x44, 0x03, 0x5c, 0x3c, 0xb7, 0xe9, + 0x2b, 0xd5, 0x43, 0x59, 0x98, 0x09, 0x4a, 0xaf, 0xb4, 0x1d, 0xf5, 0xc5, 0xfd, 0x35, 0x6a, 0x56, + 0x44, 0xa3, 0xf6, 0xad, 0x33, 0x07, 0xa3, 0x8e, 0xcc, 0x8c, 0x3a, 0x7d, 0x47, 0x97, 0x99, 0x88, + 0xd1, 0x45, 0x7d, 0xb6, 0x2c, 0x7a, 0x53, 0x01, 0xdf, 0xb5, 0xe2, 0xda, 0x3c, 0x92, 0x07, 0x0b, + 0xc1, 0xfb, 0x12, 0x06, 0xd7, 0x2a, 0x7d, 0x25, 0xf9, 0xb0, 0x04, 0xc7, 0xf6, 0x77, 0xe6, 0x8f, + 0xe6, 0xbd, 0xd0, 0xbc, 0x3a, 0x39, 0x81, 0x17, 0x1a, 0x7e, 0xe3, 0x37, 0xe9, 0x62, 0x8f, 0xc6, + 0x72, 0xf6, 0xde, 0xe0, 0x4e, 0x5c, 0xec, 0xf0, 0xab, 0x20, 0xd1, 0xf4, 0x05, 0xf8, 0xcb, 0x32, + 0x4c, 0xd5, 0x91, 0xbb, 0xaa, 0x5f, 0xb2, 0x76, 0x5d, 0x55, 0x17, 0xdd, 0x9e, 0x7b, 0x2a, 0xe4, + 0x3b, 0xf8, 0x17, 0x7a, 0x01, 0xec, 0x35, 0x7d, 0xf7, 0xb7, 0xb0, 0xef, 0x0f, 0x21, 0xad, 0xd1, + 0xfc, 0xfc, 0x99, 0x64, 0x91, 0xdd, 0xd1, 0x80, 0xbb, 0x91, 0x6c, 0xed, 0x24, 0xda, 0x3b, 0x8d, + 0x2a, 0x3a, 0x7d, 0x58, 0x9e, 0x2b, 0xc3, 0x6c, 0x1d, 0xb9, 0x15, 0x67, 0x49, 0xdf, 0xb3, 0x6c, + 0xc3, 0x45, 0xec, 0x0d, 0x50, 0xf1, 0xd0, 0x9c, 0x06, 0x30, 0x82, 0xdf, 0x68, 0xa4, 0x04, 0x26, + 0x45, 0xfd, 0xf5, 0xa4, 0x8e, 0x42, 0x1c, 0x1f, 0x23, 0x01, 0x21, 0x91, 0x8f, 0x45, 0x5c, 0xf1, + 0xe9, 0x03, 0xf1, 0x65, 0x89, 0x02, 0x51, 0xb4, 0x5b, 0xdb, 0xc6, 0x1e, 0x6a, 0x27, 0x04, 0xc2, + 0xff, 0x2d, 0x04, 0x22, 0x20, 0x94, 0xd8, 0x7d, 0x85, 0xe3, 0x63, 0x14, 0xee, 0x2b, 0x71, 0x04, + 0xc7, 0x12, 0xec, 0xc0, 0xeb, 0x7a, 0xe8, 0x7a, 0xe6, 0x5d, 0xa2, 0x62, 0x0d, 0x4d, 0x36, 0x89, + 0x35, 0xd9, 0x86, 0xea, 0x58, 0x48, 0xd9, 0x83, 0x74, 0x3a, 0x9b, 0x46, 0xc7, 0xd2, 0xb7, 0xe8, + 0xf4, 0x85, 0xfe, 0x7e, 0x19, 0x4e, 0x04, 0xa7, 0x80, 0xeb, 0xc8, 0x5d, 0xd4, 0x9d, 0xed, 0xf3, + 0x96, 0x6e, 0xb7, 0xd9, 0x8b, 0x81, 0x87, 0x3e, 0xf1, 0xa7, 0x7e, 0x89, 0x05, 0xa1, 0xca, 0x83, + 0xd0, 0xd7, 0x55, 0xb4, 0x2f, 0x2f, 0xa3, 0xe8, 0x64, 0x62, 0xbd, 0x59, 0x7f, 0x33, 0x00, 0xeb, + 0x19, 0x1c, 0x58, 0x77, 0x0e, 0xcb, 0x62, 0xfa, 0xc0, 0xfd, 0x1a, 0x19, 0x11, 0x18, 0xaf, 0xe6, + 0xfb, 0x44, 0x01, 0x8b, 0xf0, 0x6a, 0x95, 0x23, 0xbd, 0x5a, 0x87, 0x1a, 0x23, 0x06, 0x7a, 0x24, + 0xa7, 0x3b, 0x46, 0x1c, 0xa2, 0xb7, 0xf1, 0xbb, 0x65, 0x28, 0xe0, 0x30, 0x10, 0x8c, 0xc7, 0xb7, + 0x7a, 0xbf, 0x28, 0x3a, 0xfb, 0xbc, 0xcb, 0x27, 0x92, 0x7a, 0x97, 0xab, 0xef, 0x4a, 0xea, 0x43, + 0xde, 0xcb, 0xed, 0x48, 0x10, 0x4b, 0xe4, 0x22, 0x3e, 0x80, 0x83, 0xf4, 0x41, 0xfb, 0xaf, 0x32, + 0x80, 0xd7, 0xa0, 0xe9, 0xd9, 0x87, 0x67, 0x8a, 0xc2, 0x75, 0x33, 0xeb, 0x57, 0xef, 0x01, 0x75, + 0xa2, 0x07, 0x28, 0x42, 0x31, 0x3c, 0x55, 0xf1, 0x70, 0x52, 0xdf, 0xca, 0x90, 0xab, 0x91, 0xc0, + 0x92, 0xc8, 0xdb, 0x32, 0xb2, 0xec, 0xf4, 0x01, 0xf9, 0xef, 0x12, 0xe4, 0x1a, 0x56, 0x1d, 0xb9, + 0x07, 0x37, 0x05, 0x12, 0x1f, 0xdb, 0xc7, 0xe5, 0x8e, 0xe2, 0xd8, 0x7e, 0x3f, 0x42, 0xe9, 0x8b, + 0xee, 0x7d, 0x12, 0xcc, 0x34, 0xac, 0x52, 0xb0, 0x38, 0x25, 0xee, 0xab, 0x2a, 0x7e, 0xdb, 0x62, + 0x50, 0xc1, 0xb0, 0x98, 0x03, 0xdd, 0xb6, 0x38, 0x98, 0x5e, 0xfa, 0x72, 0xbb, 0x0d, 0x8e, 0x6e, + 0x98, 0x6d, 0x4b, 0x43, 0x6d, 0x8b, 0xae, 0x74, 0x2b, 0x0a, 0x64, 0x77, 0xcd, 0xb6, 0x85, 0x59, + 0xce, 0x69, 0xf8, 0xd9, 0x4b, 0xb3, 0x51, 0xdb, 0xa2, 0xbe, 0x01, 0xf8, 0x59, 0xfd, 0xa6, 0x0c, + 0x59, 0xef, 0x5f, 0x71, 0x51, 0xbf, 0x5b, 0x4e, 0x18, 0x88, 0xc0, 0x23, 0x3f, 0x12, 0x4b, 0xe8, + 0x2e, 0x66, 0xed, 0x9f, 0x78, 0xb0, 0x5e, 0x1b, 0x55, 0x1e, 0x23, 0x8a, 0x70, 0xcd, 0x5f, 0x39, + 0x05, 0x13, 0xe7, 0x3b, 0x56, 0xeb, 0x42, 0x78, 0x5e, 0x9e, 0xbe, 0x2a, 0x37, 0x42, 0xce, 0xd6, + 0xcd, 0x2d, 0x44, 0xf7, 0x14, 0x8e, 0xf7, 0xf4, 0x85, 0xd8, 0xeb, 0x45, 0x23, 0x59, 0xd4, 0x77, + 0x25, 0x09, 0x81, 0xd0, 0xa7, 0xf2, 0xc9, 0xf4, 0x61, 0x71, 0x88, 0x93, 0x65, 0x05, 0x98, 0x29, + 0x15, 0xc9, 0xbd, 0xa6, 0x6b, 0xb5, 0xb3, 0xe5, 0x82, 0x8c, 0x61, 0xf6, 0x64, 0x92, 0x22, 0xcc, + 0x1e, 0xf9, 0x1f, 0x5b, 0x98, 0xfb, 0x54, 0xfe, 0x30, 0x60, 0xfe, 0x8c, 0x04, 0xb3, 0xab, 0x86, + 0xe3, 0x46, 0x79, 0xfb, 0xc7, 0x44, 0x81, 0x7b, 0x49, 0x52, 0x53, 0x99, 0x2b, 0x47, 0x38, 0xfc, + 0x5b, 0x22, 0x73, 0x38, 0xae, 0x88, 0xf1, 0x1c, 0x4b, 0xc1, 0x1c, 0x90, 0xbb, 0x08, 0x85, 0x25, + 0x99, 0xd8, 0x50, 0x0a, 0x0b, 0x19, 0xbf, 0xa1, 0x14, 0x59, 0x76, 0xfa, 0xf2, 0xfd, 0xa6, 0x04, + 0xc7, 0xbc, 0xe2, 0xe3, 0x96, 0xa5, 0xa2, 0xc5, 0x3c, 0x70, 0x59, 0x2a, 0xf1, 0xca, 0xf8, 0x3e, + 0x5e, 0x46, 0xb1, 0x32, 0x3e, 0x88, 0xe8, 0x98, 0xc5, 0x1c, 0xb1, 0x0c, 0x3b, 0x48, 0xcc, 0x31, + 0xcb, 0xb0, 0xc3, 0x8b, 0x39, 0x7e, 0x29, 0x76, 0x48, 0x31, 0x1f, 0xda, 0x02, 0xeb, 0x9b, 0xe4, + 0x40, 0xcc, 0x91, 0x6b, 0x1b, 0x31, 0x62, 0x4e, 0x7c, 0x62, 0x57, 0x7d, 0xcf, 0x90, 0x82, 0x1f, + 0xf1, 0xfa, 0xc6, 0x30, 0x30, 0x1d, 0xe2, 0x1a, 0xc7, 0x2b, 0x65, 0x98, 0xa3, 0x5c, 0xf4, 0x9f, + 0x32, 0xc7, 0x60, 0x94, 0x78, 0xca, 0x9c, 0xf8, 0x0c, 0x10, 0xcf, 0xd9, 0xf8, 0xcf, 0x00, 0xc5, + 0x96, 0x9f, 0x3e, 0x38, 0xdf, 0xca, 0xc2, 0x49, 0x8f, 0x85, 0x35, 0xab, 0x6d, 0x6c, 0x5e, 0x22, + 0x5c, 0x9c, 0xd5, 0x3b, 0xbb, 0xc8, 0x51, 0x3f, 0x28, 0x89, 0xa2, 0xf4, 0x1f, 0x01, 0xac, 0x2e, + 0xb2, 0x49, 0x20, 0x35, 0x0a, 0xd4, 0x1d, 0x51, 0x95, 0xdd, 0x5f, 0x52, 0x10, 0x14, 0xbd, 0xe6, + 0x13, 0xd1, 0x18, 0x7a, 0x9e, 0x55, 0x38, 0x15, 0x7c, 0xe9, 0x75, 0xf0, 0xc8, 0xec, 0x77, 0xf0, + 0xb8, 0x01, 0x64, 0xbd, 0xdd, 0x0e, 0xa0, 0xea, 0xdd, 0xcc, 0xc6, 0x65, 0x6a, 0x5e, 0x16, 0x2f, + 0xa7, 0x83, 0xc2, 0xa3, 0x79, 0x11, 0x39, 0x1d, 0xe4, 0x2a, 0xf3, 0x90, 0x27, 0x37, 0x08, 0x06, + 0x2b, 0xfa, 0xfd, 0x33, 0xd3, 0x5c, 0xbc, 0x69, 0x57, 0xe3, 0xd5, 0xf0, 0xb6, 0x44, 0x92, 0xe9, + 0xd7, 0x4f, 0x87, 0x76, 0xb2, 0xc6, 0x29, 0xd8, 0xd3, 0x87, 0xa6, 0x3c, 0x9e, 0xdd, 0xb0, 0x62, + 0xb7, 0xdb, 0xb9, 0xd4, 0xa0, 0xc1, 0x57, 0x12, 0xed, 0x86, 0x31, 0x31, 0x5c, 0xa4, 0xde, 0x18, + 0x2e, 0xc9, 0x77, 0xc3, 0x38, 0x3e, 0x46, 0xb1, 0x1b, 0x16, 0x47, 0x70, 0x0c, 0xeb, 0x91, 0x39, + 0x62, 0x35, 0xd3, 0x18, 0xb5, 0x6f, 0xed, 0x7f, 0x08, 0x0d, 0x78, 0x67, 0x97, 0x7e, 0xe1, 0x6b, + 0x63, 0x63, 0x73, 0x2b, 0x4f, 0x82, 0xfc, 0xa6, 0x65, 0xef, 0xe8, 0xfe, 0xc6, 0x7d, 0xef, 0x49, + 0x11, 0x1a, 0x17, 0x76, 0x09, 0xe7, 0xd1, 0x68, 0x5e, 0x6f, 0x3e, 0xf2, 0x2c, 0xa3, 0x4b, 0xa3, + 0x2e, 0x7a, 0x8f, 0xca, 0x75, 0x30, 0x4b, 0x83, 0x2f, 0x56, 0x91, 0xe3, 0xa2, 0x36, 0x8d, 0x58, + 0xc1, 0x27, 0x2a, 0x67, 0x60, 0x86, 0x26, 0x2c, 0x19, 0x1d, 0xe4, 0xd0, 0xa0, 0x15, 0x5c, 0x9a, + 0x72, 0x12, 0xf2, 0x86, 0x73, 0x8f, 0x63, 0x99, 0xd8, 0xff, 0x7f, 0x52, 0xa3, 0x6f, 0xca, 0x0d, + 0x70, 0x94, 0xe6, 0x0b, 0x8c, 0x55, 0x72, 0x60, 0xa7, 0x37, 0x59, 0xfd, 0xc2, 0x30, 0x13, 0x87, + 0xc4, 0xf1, 0x78, 0x3d, 0x14, 0x76, 0x5b, 0x2d, 0x84, 0xda, 0xf4, 0x64, 0x93, 0xff, 0x9a, 0x30, + 0x52, 0x6f, 0xe2, 0x69, 0xc6, 0x21, 0x85, 0xea, 0xfd, 0xd8, 0x09, 0xc8, 0x93, 0x6b, 0x2f, 0xd4, + 0x97, 0xcf, 0xf5, 0x55, 0xc6, 0x39, 0x5e, 0x19, 0x37, 0x60, 0xc6, 0xb4, 0xbc, 0xe2, 0xd6, 0x75, + 0x5b, 0xdf, 0x71, 0xe2, 0x56, 0x11, 0x09, 0xdd, 0x60, 0xc8, 0xa8, 0x32, 0xbf, 0xad, 0x1c, 0xd1, + 0x38, 0x32, 0xca, 0xff, 0x06, 0x47, 0xcf, 0xd3, 0x08, 0x00, 0x0e, 0xa5, 0x2c, 0x45, 0xfb, 0xd8, + 0xf5, 0x50, 0x5e, 0xe0, 0xff, 0x5c, 0x39, 0xa2, 0xf5, 0x12, 0x53, 0xfe, 0x03, 0xcc, 0x79, 0xaf, + 0x6d, 0xeb, 0xa2, 0xcf, 0xb8, 0x1c, 0x6d, 0x68, 0xf4, 0x90, 0x5f, 0xe3, 0x7e, 0x5c, 0x39, 0xa2, + 0xf5, 0x90, 0x52, 0x6a, 0x00, 0xdb, 0xee, 0x4e, 0x87, 0x12, 0xce, 0x46, 0xab, 0x64, 0x0f, 0xe1, + 0x95, 0xe0, 0xa7, 0x95, 0x23, 0x1a, 0x43, 0x42, 0x59, 0x85, 0x29, 0xf7, 0x01, 0x97, 0xd2, 0xcb, + 0x45, 0x6f, 0x6e, 0xf7, 0xd0, 0x6b, 0xf8, 0xff, 0xac, 0x1c, 0xd1, 0x42, 0x02, 0x4a, 0x05, 0x26, + 0xbb, 0xe7, 0x29, 0xb1, 0x7c, 0x9f, 0x0b, 0xce, 0xfb, 0x13, 0x5b, 0x3f, 0x1f, 0xd0, 0x0a, 0x7e, + 0xf7, 0x18, 0x6b, 0x39, 0x7b, 0x94, 0xd6, 0x84, 0x30, 0x63, 0x25, 0xff, 0x1f, 0x8f, 0xb1, 0x80, + 0x80, 0x52, 0x81, 0x29, 0xc7, 0xd4, 0xbb, 0xce, 0xb6, 0xe5, 0x3a, 0xa7, 0x26, 0x7b, 0xfc, 0x20, + 0xa3, 0xa9, 0xd5, 0xe9, 0x3f, 0x5a, 0xf8, 0xb7, 0xf2, 0x24, 0x38, 0xb1, 0x8b, 0xaf, 0x0f, 0x2d, + 0x3f, 0x60, 0x38, 0xae, 0x61, 0x6e, 0xf9, 0x31, 0x64, 0x49, 0x6f, 0xd2, 0xff, 0xa3, 0x32, 0x4f, + 0x4f, 0x44, 0x01, 0x6e, 0x9b, 0x6a, 0xef, 0x66, 0x1c, 0x29, 0x96, 0x39, 0x08, 0xf5, 0x34, 0xc8, + 0x7a, 0x9f, 0xf0, 0x99, 0xcd, 0xb9, 0xfe, 0x0b, 0x7d, 0xbd, 0xba, 0x83, 0x1b, 0xb0, 0xf7, 0x93, + 0x37, 0x36, 0x9a, 0xd6, 0xba, 0x6d, 0x6d, 0xd9, 0xc8, 0x71, 0xa8, 0xc3, 0x21, 0x93, 0xe2, 0x35, + 0x70, 0xc3, 0x21, 0x17, 0xc3, 0x87, 0xfe, 0xee, 0x6c, 0x12, 0x99, 0x6d, 0x56, 0xd1, 0x45, 0xec, + 0x10, 0x8c, 0xcf, 0xdf, 0xe0, 0xd9, 0xa6, 0x9f, 0xa2, 0x5e, 0x0f, 0x33, 0x6c, 0x23, 0x23, 0x77, + 0x67, 0x19, 0xa1, 0xed, 0x45, 0xdf, 0xd4, 0xeb, 0x60, 0x8e, 0xd7, 0x69, 0x66, 0x88, 0x91, 0xfd, + 0xae, 0x50, 0xbd, 0x16, 0x8e, 0xf6, 0x34, 0x2c, 0x3f, 0xa6, 0x48, 0x26, 0x8c, 0x29, 0x72, 0x0d, + 0x40, 0xa8, 0xc5, 0x7d, 0xc9, 0x5c, 0x0d, 0x53, 0x81, 0x5e, 0xf6, 0xcd, 0xf0, 0xf5, 0x0c, 0x4c, + 0xfa, 0xca, 0xd6, 0x2f, 0x83, 0x37, 0xbe, 0x98, 0xcc, 0x06, 0x02, 0x9d, 0x66, 0x73, 0x69, 0xde, + 0x38, 0x12, 0xba, 0xed, 0x36, 0x0c, 0xb7, 0xe3, 0x1f, 0x7d, 0xeb, 0x4d, 0x56, 0xd6, 0x01, 0x0c, + 0x8c, 0x51, 0x23, 0x3c, 0x0b, 0x77, 0x4b, 0x82, 0xf6, 0x40, 0xf4, 0x81, 0xa1, 0x71, 0xe6, 0xd1, + 0xf4, 0xa0, 0xda, 0x14, 0xe4, 0xea, 0xeb, 0xc5, 0x52, 0xb9, 0x70, 0x44, 0x99, 0x03, 0x28, 0x3f, + 0x73, 0xbd, 0xac, 0x55, 0xca, 0xd5, 0x52, 0xb9, 0x90, 0x51, 0x5f, 0x25, 0xc1, 0x54, 0xd0, 0x08, + 0xfa, 0x56, 0xb2, 0x4c, 0x55, 0x6b, 0xe0, 0xf5, 0x44, 0xfb, 0x1b, 0x15, 0xab, 0x64, 0x4f, 0x85, + 0xcb, 0x77, 0x1d, 0xb4, 0x64, 0xd8, 0x8e, 0xab, 0x59, 0x17, 0x97, 0x2c, 0x3b, 0x88, 0x9a, 0xec, + 0x5f, 0xc3, 0x1f, 0xf1, 0xd9, 0xb3, 0x28, 0xda, 0x08, 0x1f, 0x8a, 0x42, 0x36, 0x5d, 0x19, 0x0e, + 0x13, 0x3c, 0xba, 0x2e, 0xb9, 0xf7, 0xde, 0x41, 0x9a, 0x75, 0xd1, 0x29, 0x9a, 0xed, 0x92, 0xd5, + 0xd9, 0xdd, 0x31, 0x1d, 0x6a, 0x13, 0x44, 0x7d, 0xf6, 0xa4, 0x83, 0x2f, 0x1f, 0x9b, 0x03, 0x28, + 0xd5, 0x56, 0x57, 0xcb, 0xa5, 0x46, 0xa5, 0x56, 0x2d, 0x1c, 0xf1, 0xa4, 0xd5, 0x28, 0x2e, 0xac, + 0x7a, 0xd2, 0xf9, 0x69, 0x98, 0xf4, 0xdb, 0x34, 0x0d, 0x83, 0x92, 0xf1, 0xc3, 0xa0, 0x28, 0x45, + 0x98, 0xf4, 0x5b, 0x39, 0x1d, 0x11, 0x1e, 0xd3, 0x7b, 0xec, 0x75, 0x47, 0xb7, 0x5d, 0xec, 0x2f, + 0xed, 0x13, 0x59, 0xd0, 0x1d, 0xa4, 0x05, 0xbf, 0x9d, 0x79, 0x3c, 0xe5, 0x40, 0x81, 0xb9, 0xe2, + 0xea, 0x6a, 0xb3, 0xa6, 0x35, 0xab, 0xb5, 0xc6, 0x4a, 0xa5, 0xba, 0x4c, 0x46, 0xc8, 0xca, 0x72, + 0xb5, 0xa6, 0x95, 0xc9, 0x00, 0x59, 0x2f, 0x64, 0xc8, 0xe5, 0x77, 0x0b, 0x93, 0x90, 0xef, 0x62, + 0xe9, 0xaa, 0x5f, 0x91, 0x13, 0x9e, 0x77, 0x0f, 0x70, 0x8a, 0xb8, 0x9e, 0x8b, 0xf3, 0x39, 0x97, + 0xfa, 0x9c, 0x09, 0x3d, 0x03, 0x33, 0xc4, 0x96, 0x73, 0xf0, 0xf2, 0x3d, 0xbd, 0xe1, 0x96, 0x4b, + 0x53, 0x3f, 0x21, 0x25, 0x38, 0x04, 0xdf, 0x97, 0xa3, 0x64, 0xc6, 0xc5, 0x9f, 0x0e, 0x73, 0xd9, + 0x9d, 0x02, 0x73, 0x95, 0x6a, 0xa3, 0xac, 0x55, 0x8b, 0xab, 0x34, 0x8b, 0xac, 0x9c, 0x82, 0xe3, + 0xd5, 0x1a, 0x8d, 0xe9, 0x57, 0xc7, 0xd7, 0x6a, 0xaf, 0xad, 0xd7, 0xb4, 0x46, 0x21, 0xa7, 0x9c, + 0x04, 0x85, 0x3c, 0x73, 0xb7, 0xd2, 0xe7, 0x95, 0xc7, 0xc2, 0xb5, 0xab, 0x95, 0xb5, 0x4a, 0xa3, + 0x59, 0x5b, 0x6a, 0x6a, 0xb5, 0x73, 0x75, 0x0f, 0x41, 0xad, 0xbc, 0x5a, 0xf4, 0x14, 0x89, 0xb9, + 0x04, 0x6f, 0x42, 0xb9, 0x0c, 0x8e, 0xe2, 0x0b, 0x2e, 0xf1, 0xcd, 0xf6, 0xa4, 0xbc, 0x49, 0xe5, + 0x2a, 0x38, 0x55, 0xa9, 0xd6, 0x37, 0x96, 0x96, 0x2a, 0xa5, 0x4a, 0xb9, 0xda, 0x68, 0xae, 0x97, + 0xb5, 0xb5, 0x4a, 0xbd, 0xee, 0xfd, 0x5b, 0x98, 0xc2, 0x57, 0x8c, 0x91, 0x3e, 0x53, 0xfd, 0x80, + 0x0c, 0xb3, 0x67, 0xf5, 0x8e, 0xe1, 0x0d, 0x14, 0xf8, 0xee, 0xc1, 0x9e, 0xe3, 0x22, 0x2e, 0xbe, + 0xa3, 0x90, 0x3a, 0x9c, 0xe3, 0x17, 0xf5, 0xe7, 0xe5, 0x84, 0xc7, 0x45, 0x28, 0x10, 0xa4, 0xc4, + 0x79, 0xae, 0xb4, 0x88, 0xc9, 0xcd, 0x1b, 0xa4, 0x04, 0xc7, 0x45, 0xc4, 0xc9, 0x27, 0x03, 0xff, + 0xd5, 0xa3, 0x02, 0xbf, 0x00, 0x33, 0x1b, 0xd5, 0xe2, 0x46, 0x63, 0xa5, 0xa6, 0x55, 0x7e, 0x0a, + 0x47, 0x1b, 0x9f, 0x85, 0xa9, 0xa5, 0x9a, 0xb6, 0x50, 0x59, 0x5c, 0x2c, 0x57, 0x0b, 0x39, 0xe5, + 0x72, 0xb8, 0xac, 0x5e, 0xd6, 0xce, 0x56, 0x4a, 0xe5, 0xe6, 0x46, 0xb5, 0x78, 0xb6, 0x58, 0x59, + 0xc5, 0x7d, 0x44, 0x3e, 0xe6, 0xde, 0xc4, 0x09, 0xf5, 0x67, 0xb3, 0x00, 0xa4, 0xea, 0x9e, 0x25, + 0xcd, 0xde, 0xae, 0xf7, 0x67, 0x49, 0x27, 0x0d, 0x21, 0x99, 0x88, 0xf6, 0x5b, 0x81, 0x49, 0x9b, + 0x7e, 0xa0, 0xcb, 0x27, 0x83, 0xe8, 0x90, 0x47, 0x9f, 0x9a, 0x16, 0xfc, 0xae, 0x7e, 0x30, 0xc9, + 0x1c, 0x21, 0x92, 0xb1, 0x64, 0x48, 0x2e, 0x8d, 0x06, 0x48, 0xf5, 0xc5, 0x19, 0x98, 0xe3, 0x2b, + 0xe6, 0x55, 0x02, 0x1b, 0x53, 0x62, 0x95, 0xe0, 0x7f, 0x66, 0x8c, 0xac, 0x33, 0x4f, 0xa4, 0xc3, + 0x29, 0xf8, 0x2d, 0x93, 0x9c, 0xfc, 0xf6, 0x2d, 0x96, 0x42, 0xc6, 0x63, 0xde, 0x33, 0x3a, 0xc8, + 0xd5, 0xea, 0x8d, 0x07, 0xdc, 0x82, 0xac, 0x7e, 0x5d, 0x86, 0x59, 0xee, 0xfa, 0x3e, 0xf5, 0x0d, + 0x19, 0x91, 0xab, 0xb5, 0x98, 0x8b, 0x01, 0x33, 0x07, 0xbd, 0x18, 0xf0, 0xcc, 0xcd, 0x30, 0x41, + 0xd3, 0xb0, 0x7c, 0x6b, 0x55, 0xcf, 0x14, 0x38, 0x0a, 0xd3, 0xcb, 0xe5, 0x46, 0xb3, 0xde, 0x28, + 0x6a, 0x8d, 0xf2, 0x62, 0x21, 0xe3, 0x0d, 0x7c, 0xe5, 0xb5, 0xf5, 0xc6, 0x7d, 0x05, 0x29, 0xb9, + 0x07, 0x5e, 0x2f, 0x23, 0x63, 0xf6, 0xc0, 0x8b, 0x2b, 0x3e, 0xfd, 0xb9, 0xea, 0xe7, 0x64, 0x28, + 0x10, 0x0e, 0xca, 0x0f, 0x74, 0x91, 0x6d, 0x20, 0xb3, 0x85, 0xd4, 0x0b, 0x22, 0x11, 0x3f, 0xf7, + 0xc5, 0xc2, 0xc3, 0xfd, 0x39, 0x63, 0x25, 0x92, 0x97, 0x1e, 0x03, 0x3b, 0xbb, 0xcf, 0xc0, 0xfe, + 0x6c, 0x52, 0x17, 0xbc, 0x5e, 0x76, 0x47, 0x02, 0xd9, 0xa7, 0x93, 0xb8, 0xe0, 0x0d, 0xe0, 0x60, + 0x2c, 0x81, 0x7c, 0x23, 0xc6, 0xdf, 0x82, 0xac, 0xbe, 0x48, 0x86, 0xa3, 0x8b, 0xba, 0x8b, 0x16, + 0x2e, 0x35, 0x8c, 0x1d, 0xe4, 0xb8, 0xfa, 0x4e, 0x37, 0xe2, 0x4a, 0xbc, 0xcc, 0xbe, 0x2b, 0xf1, + 0x5c, 0xff, 0x0f, 0xcc, 0xa9, 0xac, 0x85, 0x09, 0xea, 0x7b, 0x93, 0x1e, 0xda, 0xeb, 0xe1, 0x61, + 0x64, 0xd1, 0x76, 0x93, 0x1d, 0xc6, 0x8b, 0xe7, 0x62, 0x0c, 0x37, 0xd4, 0x4e, 0x41, 0x81, 0xb0, + 0xc2, 0x78, 0x99, 0xfd, 0x32, 0xbd, 0x45, 0xb2, 0x99, 0x20, 0xa8, 0x9f, 0x1f, 0x26, 0x41, 0xe2, + 0xc3, 0x24, 0x70, 0x8b, 0x96, 0x72, 0xaf, 0x67, 0x40, 0xd2, 0xce, 0x90, 0x71, 0x29, 0x8b, 0x8e, + 0xa3, 0x9a, 0x5e, 0x67, 0x18, 0x5b, 0xfc, 0x78, 0x6e, 0x3a, 0xa3, 0x77, 0x19, 0x96, 0x45, 0x91, + 0x89, 0xbf, 0xd0, 0x31, 0xa9, 0x7f, 0x31, 0xe7, 0xd2, 0x17, 0x73, 0xcb, 0x61, 0x7a, 0xfe, 0xc5, + 0x83, 0x38, 0x48, 0x1f, 0x85, 0x1f, 0x4a, 0x90, 0xad, 0x5b, 0xb6, 0x3b, 0x2a, 0x0c, 0x92, 0xee, + 0x89, 0x32, 0x12, 0xa8, 0x47, 0xcf, 0x39, 0xd3, 0xdb, 0x13, 0x8d, 0x2f, 0x7f, 0x0c, 0x71, 0x11, + 0x8f, 0xc2, 0x1c, 0xe1, 0x24, 0xb8, 0x34, 0xe4, 0x5f, 0x25, 0xd2, 0x5f, 0xdd, 0x2b, 0x8a, 0xc8, + 0x19, 0x98, 0x61, 0xf6, 0x24, 0x83, 0x0b, 0xb3, 0xd9, 0x34, 0xf5, 0x2d, 0x2c, 0x2e, 0x8b, 0x3c, + 0x2e, 0xfd, 0x66, 0xdc, 0xc1, 0xbd, 0x1b, 0xa3, 0xea, 0x99, 0x92, 0x84, 0x58, 0x8c, 0x29, 0x3c, + 0x7d, 0x44, 0x1e, 0x94, 0x21, 0x4f, 0x7d, 0xc2, 0x46, 0x8a, 0x40, 0xd2, 0x96, 0x11, 0x08, 0x41, + 0xcc, 0x77, 0x4c, 0x1e, 0x75, 0xcb, 0x88, 0x2f, 0x3f, 0x7d, 0x1c, 0xfe, 0x8d, 0x3a, 0x3b, 0x16, + 0xf7, 0x74, 0xa3, 0xa3, 0x9f, 0xef, 0x24, 0x08, 0x6d, 0xfc, 0x89, 0x84, 0xc7, 0xbb, 0x82, 0xaa, + 0x72, 0xe5, 0x45, 0x48, 0xfc, 0x27, 0x61, 0xca, 0x0e, 0x96, 0x24, 0xfd, 0xd3, 0xef, 0x3d, 0x8e, + 0xa6, 0xf4, 0xbb, 0x16, 0xe6, 0x4c, 0x74, 0x96, 0x4b, 0x88, 0x9f, 0xb1, 0x9c, 0x3d, 0x99, 0x2e, + 0xb6, 0xdb, 0x4b, 0x48, 0x77, 0x77, 0x6d, 0xd4, 0x4e, 0x34, 0x44, 0xf0, 0x22, 0x9a, 0x62, 0x25, + 0xc1, 0x05, 0x17, 0x5c, 0xe5, 0xd1, 0x79, 0xf2, 0x80, 0xde, 0xc0, 0xe7, 0x65, 0x24, 0x5d, 0xd2, + 0x3b, 0x02, 0x48, 0x6a, 0x1c, 0x24, 0x4f, 0x1b, 0x8e, 0x89, 0xf4, 0x01, 0xf9, 0x55, 0x19, 0xe6, + 0x88, 0x9d, 0x30, 0x6a, 0x4c, 0x7e, 0x27, 0xa1, 0x0f, 0x09, 0x73, 0x2d, 0x13, 0xcb, 0xce, 0x48, + 0x60, 0x49, 0xe2, 0x71, 0x22, 0xc6, 0x47, 0xfa, 0xc8, 0x7c, 0x21, 0x0f, 0xc0, 0xf8, 0x05, 0x7e, + 0x22, 0x1f, 0x06, 0xfa, 0x53, 0xdf, 0x45, 0xe7, 0x1f, 0x75, 0x2e, 0xea, 0x34, 0xe3, 0xf3, 0x17, + 0x6c, 0x48, 0xf1, 0x89, 0x42, 0xa3, 0xca, 0x9f, 0x26, 0xb4, 0x79, 0xa9, 0x57, 0xde, 0xc0, 0xc1, + 0x7d, 0xc8, 0x5e, 0xee, 0x93, 0x09, 0x8c, 0xdf, 0x41, 0xac, 0x24, 0x43, 0x6d, 0x75, 0x88, 0x99, + 0xfd, 0x29, 0x38, 0xae, 0x95, 0x8b, 0x8b, 0xb5, 0xea, 0xea, 0x7d, 0xec, 0x1d, 0x3d, 0x05, 0x99, + 0x9d, 0x9c, 0xa4, 0x02, 0xdb, 0x1b, 0x13, 0xf6, 0x81, 0xbc, 0xac, 0xe2, 0x66, 0x2b, 0xcc, 0xe2, + 0xca, 0xe0, 0x5e, 0x4d, 0x80, 0xec, 0x61, 0xa2, 0xf0, 0x20, 0x30, 0xcd, 0xe8, 0x05, 0x32, 0x14, + 0xc2, 0x6b, 0xe2, 0xe9, 0x65, 0x6c, 0x35, 0xde, 0x6d, 0xb0, 0x4b, 0xf6, 0x9f, 0x42, 0xb7, 0x41, + 0x3f, 0x41, 0xb9, 0x1e, 0xe6, 0x5a, 0xdb, 0xa8, 0x75, 0xa1, 0x62, 0xfa, 0xfb, 0xea, 0x64, 0x13, + 0xb6, 0x27, 0x95, 0x07, 0xe6, 0x5e, 0x1e, 0x18, 0x7e, 0x12, 0xcd, 0x0d, 0xd2, 0x2c, 0x53, 0x11, + 0xb8, 0xfc, 0x7e, 0x80, 0x4b, 0x95, 0xc3, 0xe5, 0xf6, 0xa1, 0xa8, 0x26, 0x83, 0xa5, 0x3a, 0x04, + 0x2c, 0x2a, 0x9c, 0xac, 0xad, 0x37, 0x2a, 0xb5, 0x6a, 0x73, 0xa3, 0x5e, 0x5e, 0x6c, 0x2e, 0xf8, + 0xe0, 0xd4, 0x0b, 0xb2, 0xfa, 0x6d, 0x09, 0x26, 0x08, 0x5b, 0x4e, 0xcf, 0xb5, 0xee, 0xf1, 0xfe, + 0x92, 0xea, 0x3b, 0x85, 0xa3, 0x1f, 0x04, 0x82, 0xa0, 0xe5, 0x44, 0xf4, 0x53, 0x4f, 0x85, 0x09, + 0x02, 0xb2, 0xbf, 0xa2, 0x75, 0x3a, 0xa2, 0x97, 0xa2, 0x64, 0x34, 0x3f, 0xbb, 0x60, 0x24, 0x84, + 0x01, 0x6c, 0xa4, 0x3f, 0xb2, 0x3c, 0x3b, 0x4b, 0xcc, 0xe0, 0x73, 0x86, 0xbb, 0x8d, 0xdd, 0x29, + 0xd5, 0x67, 0x88, 0x2c, 0x2f, 0xde, 0x04, 0xb9, 0x3d, 0x2f, 0xf7, 0x00, 0xd7, 0x54, 0x92, 0x49, + 0x7d, 0xb5, 0x70, 0xe0, 0x4d, 0x4e, 0x3f, 0x03, 0x9e, 0x22, 0xc0, 0x59, 0x83, 0x6c, 0xc7, 0x70, + 0x5c, 0x3a, 0x7e, 0xdc, 0x96, 0x88, 0x90, 0xff, 0x50, 0x71, 0xd1, 0x8e, 0x86, 0xc9, 0xa8, 0xf7, + 0xc0, 0x0c, 0x9b, 0x2a, 0xe0, 0x9e, 0x7b, 0x0a, 0x26, 0xe8, 0xb1, 0x31, 0xba, 0xc4, 0xea, 0xbf, + 0x0a, 0x2e, 0x6b, 0x0a, 0xd5, 0x36, 0x7d, 0x1d, 0xf8, 0x7f, 0x8e, 0xc2, 0xc4, 0x8a, 0xe1, 0xb8, + 0x96, 0x7d, 0x49, 0x7d, 0x38, 0x03, 0x13, 0x67, 0x91, 0xed, 0x18, 0x96, 0xb9, 0xcf, 0xd5, 0xe0, + 0x1a, 0x98, 0xee, 0xda, 0x68, 0xcf, 0xb0, 0x76, 0x9d, 0x70, 0x71, 0x86, 0x4d, 0x52, 0x54, 0x98, + 0xd4, 0x77, 0xdd, 0x6d, 0xcb, 0x0e, 0xa3, 0x4d, 0xf8, 0xef, 0xca, 0x69, 0x00, 0xf2, 0x5c, 0xd5, + 0x77, 0x10, 0x75, 0xa0, 0x60, 0x52, 0x14, 0x05, 0xb2, 0xae, 0xb1, 0x83, 0x68, 0xf8, 0x59, 0xfc, + 0xec, 0x09, 0x18, 0x87, 0x72, 0xa3, 0x21, 0xf3, 0x64, 0xcd, 0x7f, 0x55, 0xbf, 0x24, 0xc3, 0xf4, + 0x32, 0x72, 0x29, 0xab, 0x8e, 0xfa, 0x92, 0x8c, 0xd0, 0x8d, 0x0f, 0xde, 0x18, 0xdb, 0xd1, 0x1d, + 0xff, 0xbf, 0x60, 0x09, 0x96, 0x4f, 0x0c, 0x63, 0xe1, 0xca, 0x6c, 0x20, 0x6c, 0x1c, 0x18, 0xcd, + 0xad, 0x10, 0xbf, 0x4b, 0x9a, 0x99, 0x6e, 0x82, 0xec, 0xff, 0xa0, 0xbe, 0x4f, 0x12, 0x3d, 0x54, + 0x4c, 0x65, 0x3f, 0xcf, 0xd4, 0x27, 0xb2, 0x3b, 0x9a, 0xdc, 0xa3, 0x39, 0xf6, 0xc5, 0x38, 0x67, + 0x29, 0x51, 0x32, 0x5a, 0x90, 0x5b, 0xf0, 0x38, 0xf2, 0x60, 0x4e, 0xd2, 0xd7, 0xc6, 0xef, 0xcb, + 0x30, 0x5d, 0xdf, 0xb6, 0x2e, 0xfa, 0x72, 0xfc, 0x69, 0x31, 0x60, 0xaf, 0x82, 0xa9, 0xbd, 0x1e, + 0x50, 0xc3, 0x84, 0xe8, 0x3b, 0xd8, 0xd5, 0xe7, 0xcb, 0x49, 0x61, 0x62, 0x98, 0x1b, 0xf9, 0x0d, + 0xe9, 0xca, 0x93, 0x61, 0x82, 0x72, 0x4d, 0x97, 0x5c, 0xe2, 0x01, 0xf6, 0x33, 0xb3, 0x15, 0xcc, + 0xf2, 0x15, 0x4c, 0x86, 0x7c, 0x74, 0xe5, 0xd2, 0x47, 0xfe, 0x8f, 0x24, 0x1c, 0x8c, 0xc2, 0x07, + 0xbe, 0x34, 0x02, 0xe0, 0xd5, 0x1f, 0x64, 0x44, 0x17, 0x26, 0x03, 0x09, 0x04, 0x1c, 0x1c, 0xe8, + 0x36, 0x97, 0x81, 0xe4, 0xd2, 0x97, 0xe7, 0xab, 0xb2, 0x30, 0xb3, 0x68, 0x6c, 0x6e, 0x06, 0x9d, + 0xe4, 0x4b, 0x05, 0x3b, 0xc9, 0x68, 0x77, 0x00, 0xcf, 0xce, 0xdd, 0xb5, 0x6d, 0x64, 0xfa, 0x95, + 0xa2, 0xcd, 0xa9, 0x27, 0x55, 0xb9, 0x01, 0x8e, 0xfa, 0xe3, 0x02, 0xdb, 0x51, 0x4e, 0x69, 0xbd, + 0xc9, 0xea, 0xf7, 0x84, 0x77, 0xb5, 0x7c, 0x89, 0xb2, 0x55, 0x8a, 0x68, 0x80, 0x77, 0xc0, 0xec, + 0x36, 0xc9, 0x8d, 0xa7, 0xfe, 0x7e, 0x67, 0x79, 0xb2, 0x27, 0xd8, 0xef, 0x1a, 0x72, 0x1c, 0x7d, + 0x0b, 0x69, 0x7c, 0xe6, 0x9e, 0xe6, 0x2b, 0x27, 0xb9, 0xba, 0x4a, 0x6c, 0x83, 0x4c, 0xa0, 0x26, + 0x63, 0xd0, 0x8e, 0x33, 0x90, 0x5d, 0x32, 0x3a, 0x48, 0x7d, 0xa1, 0x04, 0x53, 0x1a, 0x6a, 0x59, + 0x66, 0xcb, 0x7b, 0x63, 0x9c, 0x83, 0xfe, 0x21, 0x23, 0x7a, 0x65, 0xa3, 0x47, 0x67, 0x3e, 0xa0, + 0x11, 0xd1, 0x6e, 0xc4, 0xae, 0x66, 0x8c, 0x25, 0x35, 0x86, 0x0b, 0x36, 0xbc, 0xa9, 0xc7, 0xe6, + 0x66, 0xc7, 0xd2, 0xb9, 0xc5, 0xaf, 0x5e, 0x53, 0xe8, 0x46, 0x28, 0xf8, 0x67, 0x3c, 0x2c, 0x77, + 0xdd, 0x30, 0xcd, 0xe0, 0x10, 0xf1, 0xbe, 0x74, 0x7e, 0xdf, 0x36, 0x36, 0x0e, 0x0b, 0xae, 0x3b, + 0x2d, 0x3d, 0x42, 0xb3, 0xaf, 0x87, 0xb9, 0xf3, 0x97, 0x5c, 0xe4, 0xd0, 0x5c, 0xb4, 0xd8, 0xac, + 0xd6, 0x93, 0xca, 0x44, 0x51, 0x8e, 0x8b, 0xd7, 0x12, 0x53, 0x60, 0x32, 0x51, 0xaf, 0x0c, 0x31, + 0x03, 0x3c, 0x0e, 0x85, 0x6a, 0x6d, 0xb1, 0x8c, 0x7d, 0xd5, 0x7c, 0xef, 0x9f, 0x2d, 0xf5, 0x65, + 0x32, 0xcc, 0x60, 0x67, 0x12, 0x1f, 0x85, 0x6b, 0x05, 0xe6, 0x23, 0xea, 0x57, 0x85, 0xfd, 0xd8, + 0x70, 0x95, 0xd9, 0x02, 0xa2, 0x05, 0xbd, 0x69, 0x74, 0x7a, 0x05, 0x9d, 0xd3, 0x7a, 0x52, 0xfb, + 0x00, 0x22, 0xf7, 0x05, 0xe4, 0xb7, 0x84, 0x9c, 0xd9, 0x06, 0x71, 0x77, 0x58, 0xa8, 0xfc, 0xb6, + 0x0c, 0xd3, 0xde, 0x24, 0xc5, 0x07, 0xa5, 0xc6, 0x81, 0x62, 0x99, 0x9d, 0x4b, 0xe1, 0xb2, 0x88, + 0xff, 0x9a, 0xa8, 0x91, 0xfc, 0x85, 0xf0, 0xcc, 0x1d, 0x8b, 0x88, 0xe1, 0x65, 0x4c, 0xf8, 0x7d, + 0x48, 0x68, 0x3e, 0x3f, 0x80, 0xb9, 0xc3, 0x82, 0xef, 0x9b, 0x39, 0xc8, 0x6f, 0x74, 0x31, 0x72, + 0xaf, 0x96, 0x45, 0x22, 0x92, 0xef, 0x3b, 0xc8, 0xe0, 0x99, 0x59, 0x1d, 0xab, 0xa5, 0x77, 0xd6, + 0xc3, 0x13, 0x61, 0x61, 0x82, 0x72, 0x3b, 0xf5, 0x6d, 0x24, 0xc7, 0xe9, 0xae, 0x8f, 0x0d, 0xd6, + 0x8d, 0x65, 0xc4, 0x1c, 0x1a, 0xb9, 0x09, 0x8e, 0xb5, 0x0d, 0x47, 0x3f, 0xdf, 0x41, 0x65, 0xb3, + 0x65, 0x5f, 0x22, 0xe2, 0xa0, 0xd3, 0xaa, 0x7d, 0x1f, 0x94, 0x3b, 0x21, 0xe7, 0xb8, 0x97, 0x3a, + 0x64, 0x9e, 0xc8, 0x9e, 0x31, 0x89, 0x2c, 0xaa, 0xee, 0x65, 0xd7, 0xc8, 0x5f, 0xac, 0x8b, 0xd2, + 0x84, 0xe0, 0x7d, 0xcd, 0x4f, 0x84, 0xbc, 0x65, 0x1b, 0x5b, 0x06, 0xb9, 0x7f, 0x67, 0x6e, 0x5f, + 0x4c, 0x3a, 0x62, 0x0a, 0xd4, 0x70, 0x16, 0x8d, 0x66, 0x55, 0x9e, 0x0c, 0x53, 0xc6, 0x8e, 0xbe, + 0x85, 0xee, 0x35, 0x4c, 0x72, 0x62, 0x6f, 0xee, 0xd6, 0x53, 0xfb, 0x8e, 0xcf, 0xd0, 0xef, 0x5a, + 0x98, 0x55, 0xfd, 0x90, 0x24, 0x1a, 0x38, 0x07, 0xd7, 0x8d, 0x80, 0x3a, 0x96, 0x7b, 0xab, 0xd5, + 0xd7, 0x09, 0x85, 0xb4, 0x89, 0x66, 0x2b, 0xfd, 0xc1, 0xfb, 0x8b, 0x12, 0x4c, 0x2e, 0x5a, 0x17, + 0x4d, 0xac, 0xe8, 0xb7, 0x89, 0xd9, 0xba, 0x7d, 0x0e, 0x39, 0xf2, 0xd7, 0x42, 0xc6, 0x9e, 0x68, + 0xc0, 0xb5, 0xf5, 0x8b, 0x8c, 0x80, 0x21, 0xb6, 0xe5, 0x08, 0x5e, 0xd6, 0x17, 0x57, 0x4e, 0xfa, + 0x72, 0xfd, 0x63, 0x19, 0xb2, 0x8b, 0xb6, 0xd5, 0x55, 0xdf, 0x91, 0x49, 0xe0, 0xb2, 0xd0, 0xb6, + 0xad, 0x6e, 0x03, 0xdf, 0xb6, 0x15, 0x1e, 0xe3, 0x60, 0xd3, 0x94, 0xdb, 0x60, 0xb2, 0x6b, 0x39, + 0x86, 0xeb, 0x4f, 0x23, 0xe6, 0x6e, 0x7d, 0x54, 0xdf, 0xd6, 0xbc, 0x4e, 0x33, 0x69, 0x41, 0x76, + 0xaf, 0xd7, 0xc6, 0x22, 0xf4, 0xe4, 0xe2, 0x89, 0xd1, 0xbf, 0x71, 0xac, 0x27, 0x55, 0x7d, 0x39, + 0x8b, 0xe4, 0xd3, 0x78, 0x24, 0x1f, 0xd3, 0x47, 0xc2, 0xb6, 0xd5, 0x1d, 0xc9, 0x26, 0xe3, 0x6b, + 0x02, 0x54, 0x9f, 0xce, 0xa1, 0x7a, 0xa3, 0x50, 0x99, 0xe9, 0x23, 0xfa, 0xa1, 0x2c, 0x00, 0x36, + 0x33, 0x36, 0xbc, 0x09, 0x90, 0x98, 0x8d, 0xf5, 0xdc, 0x2c, 0x23, 0xcb, 0x22, 0x2f, 0xcb, 0xc7, + 0x45, 0x58, 0x31, 0x98, 0x7c, 0x84, 0x44, 0x8b, 0x90, 0xdb, 0xf5, 0x3e, 0x53, 0x89, 0x0a, 0x92, + 0xc0, 0xaf, 0x1a, 0xf9, 0x53, 0xfd, 0xa3, 0x0c, 0xe4, 0x70, 0x82, 0x72, 0x1a, 0x00, 0x0f, 0xec, + 0xe4, 0x40, 0x50, 0x06, 0x0f, 0xe1, 0x4c, 0x0a, 0xd6, 0x56, 0xa3, 0x4d, 0x3f, 0x13, 0x93, 0x39, + 0x4c, 0xf0, 0xfe, 0xc6, 0xc3, 0x3d, 0xa6, 0x45, 0x0d, 0x00, 0x26, 0xc5, 0xfb, 0x1b, 0xbf, 0xad, + 0xa2, 0x4d, 0x12, 0x08, 0x39, 0xab, 0x85, 0x09, 0xc1, 0xdf, 0xab, 0xc1, 0xf5, 0x59, 0xfe, 0xdf, + 0x38, 0xc5, 0x9b, 0x0c, 0x63, 0xb5, 0x5c, 0x08, 0x8b, 0xc8, 0xe3, 0x4c, 0xbd, 0xc9, 0xea, 0x1b, + 0x03, 0xb5, 0x59, 0xe4, 0xd4, 0xe6, 0x96, 0x04, 0xe2, 0x4d, 0x5f, 0x79, 0xbe, 0x9e, 0x83, 0xa9, + 0xaa, 0xd5, 0xa6, 0xba, 0xc3, 0x4c, 0x18, 0x3f, 0x9d, 0x4b, 0x34, 0x61, 0x0c, 0x68, 0x44, 0x28, + 0xc8, 0xdd, 0xbc, 0x82, 0x88, 0x51, 0x60, 0xf5, 0x43, 0x59, 0x80, 0x3c, 0xd6, 0xde, 0xfd, 0xf7, + 0x32, 0xc5, 0x91, 0xc0, 0xa2, 0xd5, 0xe8, 0x9f, 0xff, 0xee, 0x74, 0xec, 0xbf, 0x40, 0x0e, 0x57, + 0x30, 0x66, 0x77, 0x87, 0xaf, 0xa8, 0x14, 0x5f, 0x51, 0x39, 0xbe, 0xa2, 0xd9, 0xde, 0x8a, 0x26, + 0x59, 0x07, 0x88, 0xd2, 0x90, 0xf4, 0x75, 0xfc, 0xef, 0x27, 0x00, 0xaa, 0xfa, 0x9e, 0xb1, 0x45, + 0x76, 0x87, 0xbf, 0xe4, 0xcf, 0x7f, 0xe8, 0x3e, 0xee, 0x7f, 0x65, 0x06, 0xc2, 0xdb, 0x60, 0x82, + 0x8e, 0x7b, 0xb4, 0x22, 0x57, 0x73, 0x15, 0x09, 0xa9, 0x10, 0xb3, 0xf4, 0x01, 0x57, 0xf3, 0xf3, + 0x73, 0x57, 0xc8, 0x4a, 0x3d, 0x57, 0xc8, 0xf6, 0xdf, 0x83, 0x88, 0xb8, 0x58, 0x56, 0x7d, 0xbf, + 0xb0, 0x47, 0x3f, 0xc3, 0x0f, 0x53, 0xa3, 0x88, 0x26, 0xf8, 0x44, 0x98, 0xb0, 0x82, 0x0d, 0x6d, + 0x39, 0x72, 0x1d, 0xac, 0x62, 0x6e, 0x5a, 0x9a, 0x9f, 0x53, 0x70, 0xf3, 0x4b, 0x88, 0x8f, 0xb1, + 0x1c, 0x9a, 0x39, 0xb9, 0xec, 0x07, 0x95, 0xf2, 0xea, 0x71, 0xce, 0x70, 0xb7, 0x57, 0x0d, 0xf3, + 0x82, 0xa3, 0xfe, 0x27, 0x31, 0x0b, 0x92, 0xc1, 0x5f, 0x4a, 0x86, 0x3f, 0x1f, 0xb3, 0xa3, 0xce, + 0xa3, 0x76, 0x67, 0x14, 0x95, 0xfe, 0xdc, 0x46, 0x00, 0x78, 0x3b, 0xe4, 0x09, 0xa3, 0xb4, 0x13, + 0x3d, 0x13, 0x89, 0x5f, 0x40, 0x49, 0xa3, 0x7f, 0xa8, 0xef, 0x0b, 0x70, 0x3c, 0xcb, 0xe1, 0xb8, + 0x70, 0x20, 0xce, 0x52, 0x87, 0xf4, 0xcc, 0x13, 0x60, 0x82, 0x4a, 0x5a, 0x99, 0x63, 0x5b, 0x71, + 0xe1, 0x88, 0x02, 0x90, 0x5f, 0xb3, 0xf6, 0x50, 0xc3, 0x2a, 0x64, 0xbc, 0x67, 0x8f, 0xbf, 0x86, + 0x55, 0x90, 0xd4, 0xd7, 0x4e, 0xc2, 0x64, 0x10, 0xcd, 0xe7, 0x8b, 0x12, 0x14, 0x4a, 0x36, 0xd2, + 0x5d, 0xb4, 0x64, 0x5b, 0x3b, 0xa4, 0x46, 0xe2, 0xde, 0xa1, 0xbf, 0x2a, 0xec, 0xe2, 0x11, 0x44, + 0xd9, 0xe9, 0x2d, 0x2c, 0x02, 0x4b, 0xb2, 0x08, 0x29, 0xf9, 0x8b, 0x90, 0xea, 0xdb, 0x85, 0x5c, + 0x3e, 0x44, 0x4b, 0x49, 0xbf, 0xa9, 0x7d, 0x56, 0x82, 0x5c, 0xa9, 0x63, 0x99, 0x88, 0x3d, 0xc2, + 0x34, 0xf0, 0xac, 0x4c, 0xff, 0x9d, 0x08, 0xf5, 0xd9, 0x92, 0xa8, 0xad, 0x11, 0x0a, 0xc0, 0x2b, + 0x5b, 0x50, 0xb6, 0x62, 0x83, 0x54, 0x2c, 0xe9, 0xf4, 0x05, 0xfa, 0x6d, 0x09, 0xa6, 0x48, 0x5c, + 0x9c, 0x62, 0xa7, 0xa3, 0x3e, 0x2a, 0x14, 0x6a, 0x9f, 0x88, 0x48, 0xea, 0x6f, 0x09, 0xbb, 0xe8, + 0x07, 0xb5, 0x0a, 0x68, 0x27, 0x08, 0x10, 0x94, 0xcc, 0x63, 0x5c, 0x6c, 0x2f, 0x6d, 0x20, 0x43, + 0xe9, 0x8b, 0xfa, 0xcf, 0x24, 0xcf, 0x00, 0x30, 0x2f, 0xac, 0xdb, 0x68, 0xcf, 0x40, 0x17, 0xd5, + 0x2b, 0x43, 0x61, 0xef, 0x0f, 0xfa, 0xf1, 0x56, 0xe1, 0x45, 0x1c, 0x86, 0x64, 0xe4, 0x56, 0xd6, + 0x74, 0x27, 0xcc, 0x44, 0x7b, 0xf1, 0xde, 0x48, 0x2c, 0x0c, 0x19, 0x8d, 0xcd, 0x2e, 0xb8, 0x66, + 0x13, 0xcd, 0x45, 0xfa, 0x82, 0xfd, 0xe8, 0x04, 0x4c, 0x6e, 0x98, 0x4e, 0xb7, 0xa3, 0x3b, 0xdb, + 0xea, 0xbf, 0xca, 0x90, 0x27, 0xb7, 0x81, 0xa9, 0x3f, 0xc9, 0xc5, 0x16, 0xf8, 0x99, 0x5d, 0x64, + 0xfb, 0x2e, 0x38, 0xe4, 0xa5, 0xff, 0x65, 0xe5, 0xea, 0x87, 0x64, 0xd1, 0x49, 0xaa, 0x5f, 0x28, + 0x73, 0x2d, 0x7c, 0xff, 0xe3, 0xec, 0x5d, 0xa3, 0xe5, 0xee, 0xda, 0xc1, 0xd5, 0xd7, 0x8f, 0x17, + 0xa3, 0xb2, 0x4e, 0xfe, 0xd2, 0x82, 0xdf, 0x55, 0x1d, 0x26, 0x68, 0xe2, 0xbe, 0xed, 0xa4, 0xfd, + 0xe7, 0x6f, 0x4f, 0x42, 0x5e, 0xb7, 0x5d, 0xc3, 0x71, 0xe9, 0x06, 0x2b, 0x7d, 0xf3, 0xba, 0x4b, + 0xf2, 0xb4, 0x61, 0x77, 0xfc, 0x28, 0x24, 0x41, 0x82, 0xfa, 0xdb, 0x42, 0xf3, 0xc7, 0xf8, 0x9a, + 0x27, 0x83, 0xfc, 0xde, 0x21, 0xd6, 0xa8, 0x2f, 0x87, 0xcb, 0xb4, 0x62, 0xa3, 0xdc, 0x24, 0x41, + 0x2b, 0x82, 0xf8, 0x14, 0x6d, 0xf5, 0xbd, 0x32, 0xb3, 0x7e, 0x77, 0x89, 0x1b, 0x23, 0xa8, 0x14, + 0xc3, 0x31, 0x22, 0x48, 0x88, 0xd9, 0xad, 0xe6, 0x16, 0x61, 0x65, 0xf1, 0x45, 0xd8, 0xdf, 0x10, + 0xde, 0x4d, 0x0a, 0x44, 0x39, 0x60, 0x0d, 0x30, 0xee, 0xb6, 0xa0, 0x0f, 0x0b, 0xed, 0x0c, 0x0d, + 0x2a, 0xe9, 0x10, 0x61, 0x7b, 0xcb, 0x04, 0x4c, 0x2c, 0xeb, 0x9d, 0x0e, 0xb2, 0x2f, 0x79, 0x43, + 0x52, 0xc1, 0xe7, 0x70, 0x4d, 0x37, 0x8d, 0x4d, 0xe4, 0xb8, 0xf1, 0x9d, 0xe5, 0xfb, 0x85, 0x23, + 0xd1, 0xd2, 0x32, 0xe6, 0x7b, 0xe9, 0x47, 0xc8, 0xfc, 0x66, 0xc8, 0x1a, 0xe6, 0xa6, 0x45, 0xbb, + 0xcc, 0xde, 0x55, 0x7b, 0xff, 0x67, 0x3c, 0x75, 0xc1, 0x19, 0x05, 0x83, 0xd1, 0x0a, 0x72, 0x91, + 0x7e, 0xcf, 0xf9, 0x9b, 0x59, 0x98, 0xf5, 0x99, 0xa8, 0x98, 0x6d, 0xf4, 0x00, 0xbb, 0x14, 0xf3, + 0xb2, 0xac, 0xe8, 0x71, 0xb0, 0xde, 0xfa, 0x60, 0x52, 0x11, 0x22, 0x6d, 0x00, 0xb4, 0x74, 0x17, + 0x6d, 0x59, 0xb6, 0x11, 0xf4, 0x87, 0x4f, 0x4a, 0x42, 0xad, 0x44, 0xfe, 0xbe, 0xa4, 0x31, 0x74, + 0x94, 0x3b, 0x61, 0x1a, 0x05, 0xe7, 0xef, 0xfd, 0xa5, 0x9a, 0x58, 0xbc, 0xd8, 0xfc, 0xea, 0x9f, + 0x09, 0x9d, 0x3a, 0x13, 0xa9, 0x66, 0x32, 0xcc, 0x9a, 0xc3, 0xb5, 0xa1, 0x8d, 0xea, 0x5a, 0x51, + 0xab, 0xaf, 0x14, 0x57, 0x57, 0x2b, 0xd5, 0xe5, 0x20, 0xf0, 0x8b, 0x02, 0x73, 0x8b, 0xb5, 0x73, + 0x55, 0x26, 0x32, 0x4f, 0x56, 0x5d, 0x87, 0x49, 0x5f, 0x5e, 0xfd, 0x7c, 0x31, 0x59, 0x99, 0x51, + 0x5f, 0x4c, 0x26, 0xc9, 0x33, 0xce, 0x8c, 0x56, 0xe0, 0xa0, 0x83, 0x9f, 0xd5, 0x3f, 0xd0, 0x21, + 0x87, 0xd7, 0xd4, 0xd5, 0x77, 0xe3, 0x6d, 0xc0, 0x6e, 0x47, 0x6f, 0x21, 0x75, 0x27, 0x81, 0x35, + 0xee, 0x5f, 0x8d, 0x20, 0xed, 0xbb, 0x1a, 0x01, 0x3f, 0x52, 0xab, 0xef, 0x78, 0xbf, 0x75, 0x7c, + 0x8d, 0x64, 0xe1, 0x0f, 0x68, 0xc5, 0xee, 0xae, 0x90, 0xe5, 0x7f, 0xca, 0x66, 0x84, 0x4a, 0x46, + 0xf3, 0x94, 0xcc, 0x12, 0x15, 0xdb, 0x87, 0x89, 0xe3, 0x68, 0x0c, 0xd7, 0x77, 0x67, 0x21, 0x57, + 0xef, 0x76, 0x0c, 0x57, 0x7d, 0xa5, 0x34, 0x12, 0xcc, 0xc8, 0x75, 0x16, 0xf2, 0xc0, 0xeb, 0x2c, + 0xc2, 0x5d, 0xd7, 0xac, 0xc0, 0xae, 0x6b, 0x03, 0x3d, 0xe0, 0xf2, 0xbb, 0xae, 0xb7, 0xd1, 0xe0, + 0x6d, 0x64, 0xcf, 0xf6, 0x31, 0x7d, 0x44, 0x8a, 0xab, 0xd5, 0x27, 0x2a, 0xe0, 0x99, 0x27, 0xd0, + 0xe0, 0x64, 0x00, 0xf9, 0x85, 0x5a, 0xa3, 0x51, 0x5b, 0x2b, 0x1c, 0xc1, 0x51, 0x6d, 0x6a, 0xeb, + 0x24, 0x54, 0x4c, 0xa5, 0x5a, 0x2d, 0x6b, 0x05, 0x09, 0x87, 0x4b, 0xab, 0x34, 0x56, 0xcb, 0x05, + 0x99, 0x8f, 0x6d, 0x1e, 0x6b, 0x7e, 0xf3, 0x65, 0xa7, 0xa9, 0x5e, 0x62, 0x86, 0x78, 0x34, 0x3f, + 0xe9, 0x2b, 0xd7, 0xaf, 0xc8, 0x90, 0x5b, 0x43, 0xf6, 0x16, 0x52, 0x7f, 0x26, 0xc1, 0x26, 0xdf, + 0xa6, 0x61, 0x3b, 0x24, 0xb8, 0x5c, 0xb8, 0xc9, 0xc7, 0xa6, 0x29, 0xd7, 0xc1, 0xac, 0x83, 0x5a, + 0x96, 0xd9, 0xf6, 0x33, 0x91, 0xfe, 0x88, 0x4f, 0xe4, 0xef, 0x95, 0x17, 0x80, 0x0c, 0x33, 0x3a, + 0x92, 0x9d, 0xba, 0x24, 0xc0, 0xf4, 0x2b, 0x35, 0x7d, 0x60, 0xbe, 0x27, 0x7b, 0x3f, 0x75, 0x2f, + 0xa9, 0xaf, 0x10, 0xde, 0x7d, 0xbd, 0x09, 0xf2, 0x58, 0x4d, 0xfd, 0x31, 0xba, 0x7f, 0x7f, 0x4c, + 0xf3, 0x28, 0x0b, 0x70, 0xcc, 0x41, 0x1d, 0xd4, 0x72, 0x51, 0xdb, 0x6b, 0xba, 0xda, 0xc0, 0x4e, + 0x61, 0x7f, 0x76, 0xf5, 0x4f, 0x58, 0x00, 0xef, 0xe0, 0x01, 0xbc, 0xbe, 0x8f, 0x28, 0xbd, 0x0a, + 0x45, 0xdb, 0xca, 0x5e, 0x35, 0xea, 0x1d, 0x2b, 0x58, 0x14, 0xf7, 0xdf, 0xbd, 0x6f, 0xdb, 0xee, + 0x4e, 0x07, 0x7f, 0xa3, 0x07, 0x0c, 0xfc, 0x77, 0x65, 0x1e, 0x26, 0x74, 0xf3, 0x12, 0xfe, 0x94, + 0x8d, 0xa9, 0xb5, 0x9f, 0x49, 0x7d, 0x6d, 0x80, 0xfc, 0x5d, 0x1c, 0xf2, 0x8f, 0x13, 0x63, 0x37, + 0x7d, 0xe0, 0x7f, 0x7e, 0x02, 0x72, 0xeb, 0xba, 0xe3, 0x22, 0xf5, 0xff, 0x96, 0x45, 0x91, 0xbf, + 0x1e, 0xe6, 0x36, 0xad, 0xd6, 0xae, 0x83, 0xda, 0x7c, 0xa3, 0xec, 0x49, 0x1d, 0x05, 0xe6, 0xca, + 0x8d, 0x50, 0xf0, 0x13, 0x29, 0x59, 0x7f, 0x1b, 0x7e, 0x5f, 0x3a, 0x8e, 0x94, 0xed, 0xac, 0xeb, + 0xb6, 0x5b, 0xdb, 0xc4, 0x69, 0x41, 0xa4, 0x6c, 0x36, 0x91, 0x83, 0x3e, 0x1f, 0x03, 0xfd, 0x44, + 0x34, 0xf4, 0x93, 0x02, 0xd0, 0x2b, 0x45, 0x98, 0xdc, 0x34, 0x3a, 0x08, 0xff, 0x30, 0x85, 0x7f, + 0xe8, 0x37, 0x26, 0x61, 0xd9, 0x07, 0x63, 0xd2, 0x92, 0xd1, 0x41, 0x5a, 0xf0, 0x9b, 0x3f, 0x91, + 0x81, 0x70, 0x22, 0xb3, 0x4a, 0xfc, 0x69, 0x3d, 0xc3, 0xcb, 0xd4, 0x77, 0x90, 0xbf, 0xf8, 0x66, + 0xd2, 0xc3, 0x2d, 0x6d, 0xdd, 0xd5, 0x31, 0x18, 0x33, 0x1a, 0x7e, 0xe6, 0xfd, 0x42, 0xe4, 0x5e, + 0xbf, 0x90, 0xe7, 0xc9, 0xc9, 0x7a, 0x44, 0x9f, 0xd9, 0x88, 0x16, 0x75, 0xde, 0x07, 0x88, 0x58, + 0x8a, 0xc1, 0xbb, 0x07, 0x4c, 0x4b, 0xb7, 0x91, 0xbb, 0xce, 0x7a, 0x62, 0xe4, 0x34, 0x3e, 0x11, + 0xbb, 0xf2, 0x39, 0x75, 0x7d, 0x07, 0xe1, 0xc2, 0x4a, 0xde, 0x37, 0xea, 0xa2, 0xb5, 0x2f, 0x3d, + 0xec, 0x7f, 0x73, 0xa3, 0xee, 0x7f, 0xfb, 0xd5, 0x31, 0xfd, 0x66, 0xf8, 0x86, 0x2c, 0xc8, 0xa5, + 0x5d, 0xf7, 0x11, 0xdd, 0xfd, 0xfe, 0x50, 0xd8, 0xcf, 0x85, 0xf6, 0x67, 0x91, 0x17, 0xc9, 0x8f, + 0xa9, 0xf7, 0x4d, 0xa8, 0x25, 0x62, 0xfe, 0x34, 0x51, 0x75, 0x4b, 0x5f, 0x47, 0xde, 0x21, 0x07, + 0x0e, 0x96, 0x0f, 0x66, 0x0e, 0x6e, 0x9a, 0xab, 0xa4, 0x7f, 0x62, 0x7a, 0x86, 0xe0, 0xdd, 0xef, + 0x78, 0xb2, 0x5c, 0xac, 0x3e, 0xbc, 0xbd, 0x8e, 0x45, 0x39, 0xa3, 0x91, 0x17, 0xf5, 0x55, 0xc2, + 0x6e, 0xe7, 0x44, 0x6c, 0xb1, 0xae, 0x84, 0xc9, 0x6c, 0x2a, 0xb1, 0xcb, 0x42, 0x63, 0x8a, 0x4d, + 0x1f, 0xb0, 0xef, 0xb2, 0xae, 0x82, 0xc5, 0x03, 0x23, 0xa6, 0xbe, 0x4e, 0x78, 0x3b, 0x8a, 0x54, + 0x7b, 0xc0, 0x7a, 0x61, 0x32, 0x79, 0x8b, 0x6d, 0x56, 0xc5, 0x16, 0x9c, 0xbe, 0xc4, 0xbf, 0x23, + 0x43, 0x9e, 0x6c, 0x41, 0xaa, 0x6f, 0xcb, 0x24, 0xb8, 0x65, 0xdd, 0xe5, 0x5d, 0x08, 0x83, 0xf7, + 0x24, 0x6b, 0x0e, 0x9c, 0xab, 0x61, 0x36, 0x91, 0xab, 0x21, 0x7f, 0x8e, 0x53, 0xa0, 0x1d, 0x91, + 0x3a, 0xa6, 0x3c, 0x9d, 0x4c, 0xd2, 0xc2, 0xfa, 0x32, 0x94, 0x3e, 0xde, 0x2f, 0xc8, 0xc1, 0x0c, + 0x29, 0xfa, 0x9c, 0xd1, 0xde, 0x42, 0xae, 0xfa, 0x5e, 0xe9, 0x47, 0x07, 0x75, 0xa5, 0x0a, 0x33, + 0x17, 0x31, 0xdb, 0xab, 0xfa, 0x25, 0x6b, 0xd7, 0xa5, 0x2b, 0x17, 0x37, 0xc6, 0xae, 0x7b, 0x90, + 0x7a, 0xce, 0x93, 0x3f, 0x34, 0xee, 0x7f, 0x4f, 0xc6, 0x64, 0xc1, 0x9f, 0x38, 0x70, 0xe5, 0xb1, + 0x91, 0xc5, 0x26, 0x29, 0x27, 0x21, 0xbf, 0x67, 0xa0, 0x8b, 0x95, 0x36, 0xb5, 0x6e, 0xe9, 0x9b, + 0xfa, 0xbb, 0xc2, 0xfb, 0xb6, 0x2c, 0xdc, 0x94, 0x97, 0x74, 0xb5, 0x50, 0x6c, 0xf7, 0x76, 0x20, + 0x5b, 0x63, 0x38, 0x53, 0xcc, 0x5f, 0xc6, 0x59, 0x4a, 0xa0, 0x88, 0x51, 0x86, 0x33, 0x1f, 0xca, + 0x23, 0xf6, 0xc4, 0x0a, 0x11, 0xc0, 0x88, 0xef, 0xe9, 0x14, 0x8b, 0x2f, 0x31, 0xa0, 0xe8, 0xf4, + 0x25, 0xff, 0x46, 0x19, 0xa6, 0xea, 0xc8, 0x5d, 0x32, 0x50, 0xa7, 0xed, 0xa8, 0xf6, 0xc1, 0x4d, + 0xa3, 0x9b, 0x21, 0xbf, 0x89, 0x89, 0x0d, 0x3a, 0xb7, 0x40, 0xb3, 0xa9, 0x6f, 0x90, 0x44, 0x77, + 0x84, 0xe9, 0xea, 0x9b, 0xcf, 0xed, 0x48, 0x60, 0x12, 0xf3, 0xe8, 0x8d, 0x2f, 0x79, 0x0c, 0x81, + 0x6d, 0x65, 0x98, 0xa1, 0xb7, 0xf7, 0x15, 0x3b, 0xc6, 0x96, 0xa9, 0xee, 0x8e, 0xa0, 0x85, 0x28, + 0xb7, 0x40, 0x4e, 0xf7, 0xa8, 0xd1, 0xad, 0x57, 0xb5, 0x6f, 0xe7, 0x89, 0xcb, 0xd3, 0x48, 0xc6, + 0x04, 0x61, 0x24, 0x43, 0xc5, 0xf6, 0x79, 0x1e, 0x63, 0x18, 0xc9, 0x81, 0x85, 0xa7, 0x8f, 0xd8, + 0xd7, 0x64, 0x38, 0x4e, 0x19, 0x38, 0x8b, 0x6c, 0xd7, 0x68, 0xe9, 0x1d, 0x82, 0xdc, 0x8b, 0x33, + 0xa3, 0x80, 0x6e, 0x05, 0x66, 0xf7, 0x58, 0xb2, 0x14, 0xc2, 0x33, 0x7d, 0x21, 0xe4, 0x18, 0xd0, + 0xf8, 0x1f, 0x13, 0x84, 0xe3, 0xe3, 0xa4, 0xca, 0xd1, 0x1c, 0x63, 0x38, 0x3e, 0x61, 0x26, 0xd2, + 0x87, 0xf8, 0xe5, 0x34, 0x34, 0x4f, 0xd8, 0x7d, 0x7e, 0x49, 0x18, 0xdb, 0x0d, 0x98, 0xc6, 0x58, + 0x92, 0x1f, 0xe9, 0x32, 0x44, 0x8c, 0x12, 0x07, 0xfd, 0x0e, 0xbd, 0x30, 0x2c, 0xf8, 0x57, 0x63, + 0xe9, 0xa8, 0xe7, 0x00, 0xc2, 0x4f, 0x6c, 0x27, 0x9d, 0x89, 0xea, 0xa4, 0x25, 0xb1, 0x4e, 0xfa, + 0xad, 0xc2, 0xc1, 0x52, 0xfa, 0xb3, 0x7d, 0x70, 0xf5, 0x10, 0x0b, 0x93, 0x31, 0xb8, 0xf4, 0xf4, + 0xf5, 0xe2, 0xb5, 0xd9, 0xde, 0x6b, 0xda, 0x3f, 0x31, 0x92, 0xf9, 0x14, 0xdb, 0x1f, 0xc8, 0x3d, + 0xfd, 0xc1, 0x01, 0x2c, 0xe9, 0x1b, 0xe0, 0x28, 0x29, 0xa2, 0x14, 0xb0, 0x95, 0x23, 0xa1, 0x20, + 0x7a, 0x92, 0xd5, 0x4f, 0x0e, 0xa1, 0x04, 0x83, 0xee, 0x90, 0x8f, 0xeb, 0xe4, 0x92, 0x19, 0xbb, + 0x49, 0x15, 0xe4, 0xf0, 0xae, 0x9e, 0xff, 0x76, 0x96, 0x58, 0xbb, 0x1b, 0xf8, 0x4e, 0x37, 0xf5, + 0xcf, 0xb3, 0xa3, 0x18, 0x11, 0xee, 0x86, 0x2c, 0x76, 0x71, 0x97, 0x23, 0x97, 0x34, 0xc2, 0x22, + 0xc3, 0x0b, 0xf7, 0xd0, 0x03, 0xee, 0xca, 0x11, 0x0d, 0xff, 0xa9, 0xdc, 0x08, 0x47, 0xcf, 0xeb, + 0xad, 0x0b, 0x5b, 0xb6, 0xb5, 0x8b, 0x6f, 0xbf, 0xb2, 0xe8, 0x35, 0x5a, 0xf8, 0x3a, 0x42, 0xfe, + 0x83, 0x72, 0xab, 0x6f, 0x3a, 0xe4, 0x06, 0x99, 0x0e, 0x2b, 0x47, 0xa8, 0xf1, 0xa0, 0x3c, 0x21, + 0xe8, 0x74, 0xf2, 0xb1, 0x9d, 0xce, 0xca, 0x11, 0xbf, 0xdb, 0x51, 0x16, 0x61, 0xb2, 0x6d, 0xec, + 0xe1, 0xad, 0x6a, 0x3c, 0xeb, 0x1a, 0x74, 0x74, 0x79, 0xd1, 0xd8, 0x23, 0x1b, 0xdb, 0x2b, 0x47, + 0xb4, 0xe0, 0x4f, 0x65, 0x19, 0xa6, 0xf0, 0xb6, 0x00, 0x26, 0x33, 0x99, 0xe8, 0x58, 0xf2, 0xca, + 0x11, 0x2d, 0xfc, 0xd7, 0xb3, 0x3e, 0xb2, 0xf8, 0xec, 0xc7, 0x5d, 0xfe, 0x76, 0x7b, 0x26, 0xd1, + 0x76, 0xbb, 0x27, 0x0b, 0xb2, 0xe1, 0x7e, 0x12, 0x72, 0x2d, 0x2c, 0x61, 0x89, 0x4a, 0x98, 0xbc, + 0x2a, 0x77, 0x40, 0x76, 0x47, 0xb7, 0xfd, 0xc9, 0xf3, 0xf5, 0x83, 0xe9, 0xae, 0xe9, 0xf6, 0x05, + 0x0f, 0x41, 0xef, 0xaf, 0x85, 0x09, 0xc8, 0x61, 0xc1, 0x05, 0x0f, 0xea, 0x3b, 0xb2, 0xc4, 0x0c, + 0x29, 0x59, 0xa6, 0x37, 0xec, 0x37, 0x2c, 0xff, 0x80, 0xcc, 0xef, 0x66, 0x46, 0x63, 0x41, 0xf6, + 0xbd, 0xd7, 0x5c, 0x8e, 0xbc, 0xd7, 0xbc, 0xe7, 0x82, 0xdd, 0x6c, 0xef, 0x05, 0xbb, 0xe1, 0xf2, + 0x41, 0x6e, 0xb0, 0xa3, 0xca, 0x9f, 0x0c, 0x61, 0xba, 0xf4, 0x0a, 0x22, 0x7a, 0x06, 0xde, 0x31, + 0x4c, 0xa6, 0xce, 0xfe, 0x6b, 0xc2, 0x4e, 0x29, 0xa9, 0x51, 0x33, 0x80, 0xbd, 0xf4, 0xfb, 0xa6, + 0x5f, 0xcf, 0xc2, 0x29, 0x72, 0x8d, 0xf3, 0x1e, 0x6a, 0x58, 0xfc, 0x7d, 0x93, 0xea, 0x1f, 0x8e, + 0x44, 0x69, 0xfa, 0x0c, 0x38, 0x72, 0xdf, 0x01, 0x67, 0xdf, 0x21, 0xe5, 0xec, 0x80, 0x43, 0xca, + 0xb9, 0x64, 0x2b, 0x87, 0x1f, 0x61, 0xf5, 0x67, 0x9d, 0xd7, 0x9f, 0xdb, 0x23, 0x00, 0xea, 0x27, + 0x97, 0x91, 0xd8, 0x37, 0xef, 0x0e, 0x34, 0xa5, 0xce, 0x69, 0xca, 0x5d, 0xc3, 0x33, 0x92, 0xbe, + 0xb6, 0xfc, 0x4e, 0x16, 0x2e, 0x0b, 0x99, 0xa9, 0xa2, 0x8b, 0x54, 0x51, 0xbe, 0x38, 0x12, 0x45, + 0x49, 0x1e, 0x03, 0x21, 0x6d, 0x8d, 0xf9, 0x23, 0xe1, 0xb3, 0x43, 0xbd, 0x40, 0x05, 0xb2, 0x89, + 0x50, 0x96, 0x93, 0x90, 0x27, 0x3d, 0x0c, 0x85, 0x86, 0xbe, 0x25, 0xec, 0x6e, 0xc4, 0x4e, 0x1c, + 0x89, 0xf2, 0x36, 0x06, 0xfd, 0xa1, 0xeb, 0x1a, 0x8d, 0x5d, 0xdb, 0xac, 0x98, 0xae, 0xa5, 0xfe, + 0xdc, 0x48, 0x14, 0x27, 0xf0, 0x86, 0x93, 0x87, 0xf1, 0x86, 0x1b, 0x6a, 0x95, 0xc3, 0xaf, 0xc1, + 0xa1, 0xac, 0x72, 0x44, 0x14, 0x9e, 0x3e, 0x7e, 0xef, 0x92, 0xe1, 0x24, 0x9d, 0x6c, 0x2d, 0xf0, + 0x16, 0xa2, 0x7a, 0xdf, 0x28, 0x80, 0x3c, 0xee, 0x9b, 0x49, 0xf4, 0x96, 0x33, 0xfc, 0xc2, 0x9f, + 0x94, 0x8a, 0xbd, 0xdf, 0x81, 0x9b, 0x0e, 0xf6, 0x70, 0x38, 0x12, 0xa4, 0xc4, 0xae, 0x75, 0x48, + 0xc0, 0x46, 0xfa, 0x98, 0xbd, 0x54, 0x86, 0x3c, 0xbd, 0xbe, 0x7f, 0x23, 0x15, 0x87, 0x09, 0x3e, + 0xca, 0xb3, 0xc0, 0x8e, 0x5c, 0xe2, 0x4b, 0xee, 0xd3, 0xdb, 0x8b, 0x3b, 0xa4, 0x5b, 0xec, 0xbf, + 0x27, 0xc1, 0x74, 0x1d, 0xb9, 0x25, 0xdd, 0xb6, 0x0d, 0x7d, 0x6b, 0x54, 0x1e, 0xdf, 0xa2, 0xde, + 0xc3, 0xea, 0xf7, 0x33, 0xa2, 0xe7, 0x69, 0x82, 0x85, 0x70, 0x9f, 0xd5, 0x88, 0x58, 0x82, 0x0f, + 0x0b, 0x9d, 0x99, 0x19, 0x44, 0x6d, 0x0c, 0x1e, 0xdb, 0x12, 0x4c, 0xf8, 0x67, 0xf1, 0x6e, 0xe6, + 0xce, 0x67, 0x6e, 0xbb, 0x3b, 0xfe, 0x31, 0x18, 0xfc, 0xbc, 0xff, 0x0c, 0x98, 0xfa, 0x9a, 0x84, + 0x8e, 0xf2, 0xf1, 0x07, 0x09, 0x93, 0xb5, 0xb1, 0x24, 0xee, 0xf0, 0x87, 0x75, 0x74, 0xf0, 0xb7, + 0x26, 0xe8, 0x72, 0xe4, 0xaa, 0xee, 0xa2, 0x07, 0xd4, 0x2f, 0xc9, 0x30, 0x51, 0x47, 0xae, 0x37, + 0xde, 0x72, 0x97, 0x9b, 0x0e, 0xab, 0xe1, 0x0a, 0xb3, 0xe2, 0x31, 0x45, 0xd7, 0x30, 0xee, 0x81, + 0xa9, 0xae, 0x6d, 0xb5, 0x90, 0xe3, 0xd0, 0xd5, 0x0b, 0xd6, 0x51, 0xad, 0xdf, 0xe8, 0x8f, 0x59, + 0x9b, 0x5f, 0xf7, 0xff, 0xd1, 0xc2, 0xdf, 0x93, 0x9a, 0x01, 0x84, 0x12, 0xad, 0xe0, 0xb8, 0xcd, + 0x80, 0xb8, 0xc2, 0xd3, 0x07, 0xfa, 0xf3, 0x32, 0xcc, 0xd4, 0x91, 0x1b, 0x48, 0x31, 0xc1, 0x26, + 0x47, 0x34, 0xbc, 0x1c, 0x94, 0xf2, 0xc1, 0xa0, 0x14, 0xbf, 0x1a, 0x90, 0x97, 0x66, 0x40, 0x6c, + 0x8c, 0x57, 0x03, 0x8a, 0x71, 0x30, 0x86, 0xe3, 0x6b, 0x8f, 0x81, 0x29, 0xcc, 0x0b, 0x6e, 0xb0, + 0xbf, 0x90, 0x0d, 0x1b, 0xef, 0x97, 0x53, 0x6a, 0xbc, 0x77, 0x42, 0x6e, 0x47, 0xb7, 0x2f, 0x38, + 0xb8, 0xe1, 0x4e, 0x8b, 0x98, 0xed, 0x6b, 0x5e, 0x76, 0x8d, 0xfc, 0xd5, 0xdf, 0x4f, 0x33, 0x97, + 0xcc, 0x4f, 0xf3, 0x61, 0x29, 0xd1, 0x48, 0x48, 0xe6, 0x0e, 0x23, 0x6c, 0xf2, 0x09, 0xc6, 0xcd, + 0x98, 0xb2, 0xd3, 0x57, 0x8e, 0x17, 0xcb, 0x30, 0xe9, 0x8d, 0xdb, 0xd8, 0x1e, 0x3f, 0x77, 0x70, + 0x75, 0xe8, 0x6f, 0xe8, 0x27, 0xec, 0x81, 0x7d, 0x89, 0x8c, 0xce, 0xbc, 0x4f, 0xd0, 0x03, 0xc7, + 0x15, 0x9e, 0x3e, 0x1e, 0xef, 0x21, 0x78, 0xe0, 0xf6, 0xa0, 0xbe, 0x59, 0x06, 0x79, 0x19, 0xb9, + 0xe3, 0xb6, 0x22, 0xdf, 0x29, 0x1c, 0xe2, 0x88, 0x13, 0x18, 0xe6, 0x79, 0x7e, 0x19, 0x8d, 0xa6, + 0x01, 0x89, 0xc5, 0x36, 0x12, 0x62, 0x20, 0x7d, 0xd4, 0x3e, 0x40, 0x50, 0x23, 0x9b, 0x0b, 0x3f, + 0x3b, 0x82, 0x5e, 0x75, 0xbc, 0x0b, 0x1f, 0xbe, 0x00, 0x31, 0x8d, 0xc3, 0x6a, 0x6f, 0xfd, 0x0a, + 0x1f, 0xcb, 0x55, 0x7c, 0xe0, 0x35, 0xf6, 0x6d, 0xd4, 0xba, 0x80, 0xda, 0xea, 0x7f, 0x38, 0x38, + 0x74, 0xa7, 0x60, 0xa2, 0x45, 0xa8, 0x61, 0xf0, 0x26, 0x35, 0xff, 0x35, 0xc1, 0xbd, 0xd2, 0x7c, + 0x47, 0x44, 0x7e, 0x1f, 0xe3, 0xbd, 0xd2, 0x02, 0xc5, 0x8f, 0xc1, 0x6c, 0x21, 0xb3, 0x8c, 0x4a, + 0xcb, 0x32, 0xd5, 0xff, 0x7c, 0x70, 0x58, 0xae, 0x82, 0x29, 0xa3, 0x65, 0x99, 0x38, 0x0c, 0x85, + 0x7f, 0x08, 0x28, 0x48, 0xf0, 0xbf, 0x96, 0x77, 0xac, 0xfb, 0x0d, 0xba, 0x6b, 0x1e, 0x26, 0x0c, + 0x6b, 0x4c, 0x78, 0xac, 0x1f, 0x96, 0x31, 0xd1, 0xa7, 0xec, 0xf4, 0x21, 0xfb, 0x64, 0xe8, 0xdd, + 0x46, 0xba, 0xc2, 0x47, 0xc4, 0x2a, 0xf0, 0x30, 0xc3, 0x19, 0x5b, 0x8b, 0x43, 0x19, 0xce, 0x62, + 0x18, 0x18, 0xc3, 0x8d, 0x15, 0x21, 0x8e, 0xa9, 0xaf, 0x01, 0x1f, 0x00, 0x9d, 0xd1, 0x99, 0x87, + 0x43, 0xa2, 0x73, 0x38, 0x26, 0xe2, 0x87, 0x69, 0x88, 0x4c, 0x6a, 0xf1, 0xa8, 0xff, 0x65, 0x14, + 0xe0, 0xdc, 0x3e, 0x8c, 0xbf, 0x02, 0xf1, 0x56, 0x48, 0x70, 0x23, 0xf6, 0x3e, 0x09, 0x7a, 0x54, + 0xc6, 0x78, 0x57, 0xbc, 0x48, 0xf9, 0xe9, 0x03, 0xf8, 0x22, 0x19, 0xe6, 0xb0, 0x8f, 0x40, 0x07, + 0xe9, 0x36, 0xe9, 0x28, 0x47, 0xe2, 0x28, 0xff, 0x1e, 0xe1, 0x00, 0x3f, 0xbc, 0x1c, 0x42, 0x3e, + 0x46, 0x02, 0x85, 0x58, 0x74, 0x1f, 0x41, 0x16, 0xc6, 0xb2, 0x8d, 0x52, 0x08, 0x58, 0xa0, 0x2a, + 0x3e, 0x1a, 0x3c, 0x12, 0x7a, 0xe4, 0xf2, 0xc2, 0xf0, 0x1b, 0xdb, 0x98, 0x3d, 0x72, 0x45, 0x98, + 0x48, 0x1f, 0x93, 0x37, 0xdf, 0x42, 0x17, 0x9c, 0x1b, 0xf8, 0xc2, 0xf8, 0xd7, 0x65, 0x83, 0x13, + 0x6d, 0x9f, 0x1f, 0x89, 0x07, 0xe6, 0x01, 0x02, 0xe2, 0x2b, 0x90, 0xb5, 0xad, 0x8b, 0x64, 0x69, + 0x6b, 0x56, 0xc3, 0xcf, 0xe4, 0x7a, 0xca, 0xce, 0xee, 0x8e, 0x49, 0x4e, 0x86, 0xce, 0x6a, 0xfe, + 0xab, 0x72, 0x1d, 0xcc, 0x5e, 0x34, 0xdc, 0xed, 0x15, 0xa4, 0xb7, 0x91, 0xad, 0x59, 0x17, 0xb1, + 0xc7, 0xdc, 0xa4, 0xc6, 0x27, 0xf2, 0xfe, 0x2b, 0x02, 0xf6, 0x25, 0xbe, 0x45, 0x7e, 0x2c, 0xc7, + 0xdf, 0x92, 0x58, 0x9e, 0xd1, 0x5c, 0xa5, 0xaf, 0x30, 0x1f, 0x94, 0x61, 0x4a, 0xb3, 0x2e, 0x52, + 0x25, 0xf9, 0x3f, 0x0e, 0x57, 0x47, 0x12, 0x4f, 0xf4, 0xb0, 0xe4, 0x02, 0xf6, 0xc7, 0x3e, 0xd1, + 0x8b, 0x2d, 0x7e, 0x2c, 0x27, 0x97, 0x66, 0x34, 0xeb, 0x62, 0x1d, 0xb9, 0xa4, 0x45, 0xa8, 0xcd, + 0x11, 0x39, 0x59, 0x1b, 0x0e, 0x21, 0x48, 0xe7, 0xe1, 0xc1, 0x7b, 0xd2, 0x5d, 0x84, 0x40, 0x40, + 0x01, 0x8b, 0xe3, 0xde, 0x45, 0x18, 0xc8, 0xc1, 0x18, 0x62, 0xa4, 0xc8, 0x30, 0xad, 0x59, 0x17, + 0xbd, 0xa1, 0x61, 0xc9, 0xe8, 0x74, 0x46, 0x33, 0x42, 0x26, 0x35, 0xfe, 0x7d, 0x31, 0xf8, 0x5c, + 0x8c, 0xdd, 0xf8, 0x1f, 0xc0, 0x40, 0xfa, 0x30, 0x3c, 0x8f, 0x34, 0x16, 0x7f, 0x84, 0x36, 0x47, + 0x83, 0xc3, 0xb0, 0x0d, 0x22, 0x60, 0xe3, 0xd0, 0x1a, 0x44, 0x14, 0x07, 0x63, 0xd9, 0x39, 0x99, + 0x2b, 0xe1, 0x61, 0x7e, 0xb4, 0x6d, 0xe2, 0x7d, 0xc9, 0x5c, 0x13, 0xe9, 0xb0, 0xcb, 0x31, 0x32, + 0x12, 0x34, 0x12, 0xb8, 0x20, 0x0a, 0xf0, 0x90, 0x3e, 0x1e, 0x1f, 0x93, 0x61, 0x86, 0xb0, 0xf0, + 0x08, 0xb1, 0x02, 0x86, 0x6a, 0x54, 0x6c, 0x0d, 0x0e, 0xa7, 0x51, 0xc5, 0x70, 0x30, 0x96, 0x5b, + 0x41, 0x3d, 0x3b, 0x6e, 0x88, 0xe3, 0xe3, 0x51, 0x08, 0x0e, 0x6d, 0x8c, 0x8d, 0xf0, 0x08, 0xf9, + 0x30, 0xc6, 0xd8, 0x21, 0x1d, 0x23, 0x7f, 0x5e, 0xd0, 0x8a, 0x46, 0x89, 0xc1, 0x01, 0x9a, 0xc2, + 0x08, 0x61, 0x18, 0xb2, 0x29, 0x1c, 0x12, 0x12, 0x5f, 0x97, 0x01, 0x08, 0x03, 0x6b, 0xd6, 0x1e, + 0xbe, 0xcc, 0x67, 0x04, 0xdd, 0x59, 0xaf, 0x5b, 0xbd, 0x3c, 0xc0, 0xad, 0x3e, 0x61, 0x08, 0x97, + 0xa4, 0x2b, 0x81, 0x8c, 0x94, 0xbd, 0x4a, 0x8e, 0x7d, 0x25, 0x30, 0xbe, 0xfc, 0xf4, 0x31, 0xfe, + 0x2a, 0xb1, 0xe6, 0xc2, 0x03, 0xa6, 0xbf, 0x36, 0x12, 0x94, 0x99, 0xd9, 0xbf, 0xcc, 0xcf, 0xfe, + 0x0f, 0x80, 0xed, 0xb0, 0x36, 0xe2, 0xa0, 0x83, 0xa3, 0xe9, 0xdb, 0x88, 0x87, 0x77, 0x40, 0xf4, + 0x67, 0xb3, 0x70, 0x94, 0x76, 0x22, 0x3f, 0x0a, 0x10, 0x27, 0x3c, 0x87, 0xc7, 0x75, 0x92, 0x03, + 0x50, 0x1e, 0xd5, 0x82, 0x54, 0x92, 0xa5, 0x4c, 0x01, 0xf6, 0xc6, 0xb2, 0xba, 0x91, 0x2f, 0x3f, + 0xd0, 0xd5, 0xcd, 0xb6, 0x78, 0xb8, 0xdf, 0x01, 0xc0, 0xfb, 0x6b, 0x8d, 0x32, 0xbf, 0xd6, 0xd8, + 0x67, 0x65, 0x32, 0xf1, 0xce, 0x35, 0x16, 0x19, 0x61, 0x77, 0xec, 0x3b, 0xd7, 0xd1, 0x65, 0xa7, + 0x8f, 0xd2, 0xfb, 0x64, 0xc8, 0xd6, 0x2d, 0xdb, 0x55, 0x9f, 0x9f, 0xa4, 0x75, 0x12, 0xc9, 0x87, + 0x20, 0xf9, 0xef, 0x4a, 0x89, 0xbb, 0xa5, 0xf9, 0xe6, 0xf8, 0xa3, 0xce, 0xba, 0xab, 0x63, 0xaf, + 0x6e, 0xaf, 0x7c, 0xe6, 0xba, 0xe6, 0xa4, 0xf1, 0x74, 0x88, 0xfc, 0xea, 0xd1, 0x07, 0x30, 0x52, + 0x8b, 0xa7, 0x13, 0x59, 0x72, 0xfa, 0xb8, 0x3d, 0x74, 0x94, 0xfa, 0xb6, 0x2e, 0x19, 0x1d, 0xa4, + 0x3e, 0x9f, 0xb8, 0x8c, 0x54, 0xf5, 0x1d, 0x24, 0x7e, 0x24, 0x26, 0xd6, 0xb5, 0x15, 0xc7, 0x97, + 0x95, 0xc3, 0xf8, 0xb2, 0x49, 0x1b, 0x14, 0x39, 0x80, 0x4e, 0x58, 0x1a, 0x77, 0x83, 0x8a, 0x29, + 0x7b, 0x2c, 0x71, 0x3a, 0x8f, 0xd5, 0x91, 0x4b, 0x8c, 0xca, 0x9a, 0x7f, 0x03, 0xcb, 0x4f, 0x8f, + 0x24, 0x62, 0x67, 0x70, 0xc1, 0x8b, 0xdc, 0x73, 0xc1, 0xcb, 0x07, 0x59, 0x70, 0xd6, 0x78, 0x70, + 0x9e, 0x12, 0x2d, 0x20, 0x9e, 0xc9, 0x91, 0xc0, 0xf4, 0xce, 0x00, 0xa6, 0x75, 0x0e, 0xa6, 0x3b, + 0x86, 0xe4, 0x22, 0x7d, 0xc0, 0x7e, 0x31, 0x07, 0x47, 0xc9, 0xa4, 0xbf, 0x68, 0xb6, 0x69, 0x84, + 0xd5, 0xb7, 0x49, 0x87, 0xbc, 0xd9, 0xb6, 0x3f, 0x04, 0x2b, 0x17, 0xcb, 0x39, 0xd7, 0x7b, 0x3b, + 0xfe, 0x02, 0x09, 0xe7, 0xea, 0x75, 0xa2, 0x78, 0xa7, 0x4d, 0xfc, 0x86, 0xfc, 0xe0, 0x3f, 0xfe, + 0x2e, 0xa3, 0x09, 0xf1, 0xbb, 0x8c, 0xfe, 0x38, 0xd9, 0xba, 0x1d, 0x2e, 0xba, 0x47, 0xe0, 0x29, + 0xdb, 0x4e, 0x09, 0x56, 0xf4, 0x04, 0xb8, 0xfb, 0xf1, 0x70, 0x27, 0x0b, 0x23, 0x88, 0x0c, 0xe9, + 0x4e, 0x86, 0x09, 0x1c, 0xa6, 0x3b, 0xd9, 0x20, 0x06, 0xc6, 0x70, 0xab, 0x7d, 0x8e, 0xee, 0xe6, + 0xe3, 0x76, 0xa3, 0xfe, 0xa5, 0x94, 0xfa, 0x28, 0xfd, 0x83, 0x4c, 0x22, 0xff, 0x67, 0xcc, 0x57, + 0xfc, 0x30, 0x9d, 0xc4, 0xa3, 0x39, 0x8e, 0xdc, 0x18, 0xd6, 0x8d, 0x24, 0xec, 0x8b, 0x7e, 0xce, + 0x68, 0xbb, 0xdb, 0x23, 0x3a, 0xd1, 0x71, 0xd1, 0xa3, 0xe5, 0x5f, 0x8f, 0x8c, 0x5f, 0xd4, 0x7f, + 0xc9, 0x24, 0x0a, 0x21, 0x15, 0x88, 0x04, 0xb3, 0x15, 0x21, 0xe2, 0x04, 0x81, 0x9f, 0x62, 0xe9, + 0x8d, 0x51, 0xa3, 0xcf, 0x1a, 0x6d, 0x64, 0x3d, 0x02, 0x35, 0x1a, 0xf3, 0x35, 0x3a, 0x8d, 0x8e, + 0x23, 0xf7, 0x63, 0xaa, 0xd1, 0x81, 0x48, 0x46, 0xa4, 0xd1, 0xb1, 0xf4, 0xd2, 0x97, 0xf1, 0x6b, + 0x66, 0xe8, 0x44, 0x6a, 0xd5, 0x30, 0x2f, 0xa8, 0xff, 0x94, 0xf7, 0x2f, 0x66, 0x3e, 0x67, 0xb8, + 0xdb, 0x34, 0x16, 0xcc, 0xef, 0x08, 0xdf, 0x8d, 0x32, 0x44, 0xbc, 0x17, 0x3e, 0x9c, 0x54, 0x6e, + 0x5f, 0x38, 0xa9, 0x22, 0xcc, 0x1a, 0xa6, 0x8b, 0x6c, 0x53, 0xef, 0x2c, 0x75, 0xf4, 0x2d, 0xe7, + 0xd4, 0x44, 0xdf, 0xcb, 0xeb, 0x2a, 0x4c, 0x1e, 0x8d, 0xff, 0x83, 0xbd, 0xbe, 0x72, 0x92, 0xbf, + 0xbe, 0x32, 0x22, 0xfa, 0xd5, 0x54, 0x74, 0xf4, 0xab, 0x20, 0xba, 0x15, 0x0c, 0x0e, 0x8e, 0x2d, + 0x6a, 0x1b, 0x27, 0x0c, 0xf7, 0x77, 0xb3, 0x60, 0x14, 0xb6, 0x20, 0xf4, 0xe3, 0xeb, 0xe5, 0x44, + 0xab, 0x7b, 0x9e, 0x22, 0xcc, 0xf7, 0x2a, 0x41, 0x62, 0x0b, 0x95, 0xad, 0xbc, 0xdc, 0x53, 0xf9, + 0xc0, 0xe4, 0xc9, 0x0a, 0x98, 0x3c, 0xac, 0x52, 0xe5, 0xc4, 0x94, 0x2a, 0xc9, 0x62, 0xa1, 0x48, + 0x6d, 0xc7, 0x70, 0x1a, 0x29, 0x07, 0xc7, 0xfc, 0x68, 0xb7, 0xdd, 0x2e, 0xd2, 0x6d, 0xdd, 0x6c, + 0x21, 0xf5, 0x93, 0xd2, 0x28, 0xcc, 0xde, 0x25, 0x98, 0x34, 0x5a, 0x96, 0x59, 0x37, 0x9e, 0xe5, + 0x5f, 0x2e, 0x17, 0x1f, 0x64, 0x1d, 0x4b, 0xa4, 0x42, 0xff, 0xd0, 0x82, 0x7f, 0x95, 0x0a, 0x4c, + 0xb5, 0x74, 0xbb, 0x4d, 0x82, 0xf0, 0xe5, 0x7a, 0x2e, 0x72, 0x8a, 0x24, 0x54, 0xf2, 0x7f, 0xd1, + 0xc2, 0xbf, 0x95, 0x1a, 0x2f, 0xc4, 0x7c, 0x4f, 0x34, 0x8f, 0x48, 0x62, 0x8b, 0xe1, 0x4f, 0x9c, + 0xcc, 0x3d, 0xe9, 0xd8, 0xa8, 0x83, 0xef, 0xa0, 0x27, 0x3d, 0xc4, 0x94, 0x16, 0x26, 0x24, 0x5d, + 0x1e, 0xc0, 0x45, 0xed, 0x43, 0x63, 0xdc, 0xcb, 0x03, 0x42, 0x5c, 0xa4, 0xaf, 0x99, 0xef, 0xce, + 0xc3, 0x2c, 0xe9, 0xd5, 0xa8, 0x38, 0xd5, 0x17, 0xe1, 0x2b, 0xa4, 0xdd, 0x7b, 0xd1, 0x25, 0xb5, + 0x7e, 0xf0, 0x31, 0xb9, 0x00, 0xf2, 0x85, 0x20, 0xe0, 0xa0, 0xf7, 0x98, 0x74, 0xdf, 0xde, 0xe7, + 0x6b, 0x9e, 0xf0, 0x34, 0xee, 0x7d, 0xfb, 0xf8, 0xe2, 0xd3, 0xc7, 0xe7, 0x97, 0x64, 0x90, 0x8b, + 0xed, 0xb6, 0xda, 0x3a, 0x38, 0x14, 0xd7, 0xc0, 0xb4, 0xdf, 0x66, 0xc2, 0x18, 0x90, 0x6c, 0x52, + 0xd2, 0x45, 0xd0, 0x40, 0x36, 0xc5, 0xf6, 0xd8, 0x77, 0x15, 0x62, 0xca, 0x4e, 0x1f, 0x94, 0x5f, + 0x9b, 0xa0, 0x8d, 0x66, 0xc1, 0xb2, 0x2e, 0xe0, 0xa3, 0x32, 0xcf, 0x97, 0x21, 0xb7, 0x84, 0xdc, + 0xd6, 0xf6, 0x88, 0xda, 0xcc, 0xae, 0xdd, 0xf1, 0xdb, 0xcc, 0xbe, 0xfb, 0xf0, 0x07, 0xdb, 0xb0, + 0x3e, 0x5b, 0xf3, 0x98, 0xa5, 0x71, 0x47, 0x77, 0x8e, 0x2d, 0x3d, 0x7d, 0x70, 0xfe, 0x45, 0x86, + 0xb9, 0x60, 0x85, 0x8b, 0x60, 0xf2, 0x8b, 0x99, 0x47, 0xda, 0x7a, 0xa7, 0xfa, 0xc5, 0x64, 0x21, + 0xd2, 0x02, 0x99, 0xf2, 0x35, 0x4b, 0x79, 0x61, 0x31, 0x41, 0xf0, 0x34, 0x31, 0x06, 0xc7, 0x30, + 0x83, 0x97, 0x61, 0x12, 0x33, 0xb4, 0x68, 0xec, 0x61, 0xd7, 0x41, 0x6e, 0xa1, 0xf1, 0xd9, 0x23, + 0x59, 0x68, 0xbc, 0x83, 0x5f, 0x68, 0x14, 0x8c, 0x78, 0xec, 0xaf, 0x33, 0x26, 0xf4, 0xa5, 0xf1, + 0xfe, 0x1f, 0xf9, 0x32, 0x63, 0x02, 0x5f, 0x9a, 0x01, 0xe5, 0xa7, 0x8f, 0xe8, 0xeb, 0xff, 0x23, + 0xed, 0x6c, 0xfd, 0x0d, 0x55, 0xf5, 0xff, 0x3a, 0x06, 0xd9, 0xb3, 0xde, 0xc3, 0xff, 0x0c, 0x6f, + 0xc4, 0x7a, 0xc5, 0x08, 0x82, 0x33, 0x3c, 0x1d, 0xb2, 0x1e, 0x7d, 0x3a, 0x6d, 0xb9, 0x51, 0x6c, + 0x77, 0xd7, 0x63, 0x44, 0xc3, 0xff, 0x29, 0x27, 0x21, 0xef, 0x58, 0xbb, 0x76, 0xcb, 0x33, 0x9f, + 0x3d, 0x8d, 0xa1, 0x6f, 0x49, 0x83, 0x92, 0x72, 0xa4, 0xe7, 0x47, 0xe7, 0x32, 0xca, 0x5c, 0x90, + 0x24, 0x73, 0x17, 0x24, 0x25, 0xd8, 0x3f, 0x10, 0xe0, 0x2d, 0x7d, 0x8d, 0xf8, 0x4b, 0x7c, 0x57, + 0x60, 0x7b, 0x54, 0xb0, 0x47, 0x88, 0xe5, 0xa0, 0xea, 0x90, 0xd4, 0xe1, 0x9b, 0x17, 0x6d, 0x10, + 0x07, 0x7e, 0xac, 0x0e, 0xdf, 0x02, 0x3c, 0x8c, 0xe5, 0x94, 0x7a, 0x9e, 0x3a, 0xa9, 0xde, 0x37, + 0x4a, 0x74, 0xb3, 0x9c, 0xd2, 0x1f, 0x08, 0x9d, 0x11, 0x3a, 0xaf, 0x0e, 0x8d, 0xce, 0x21, 0xb9, + 0xaf, 0xfe, 0x9e, 0x8c, 0x23, 0x61, 0xfa, 0x46, 0x8e, 0xf8, 0x45, 0x47, 0x89, 0x21, 0xf2, 0xc6, + 0x60, 0x2e, 0x0e, 0xf4, 0xec, 0xf0, 0xa1, 0xc1, 0x79, 0xd1, 0x31, 0xfc, 0x8f, 0x3b, 0x34, 0xb8, + 0x28, 0x23, 0xe9, 0x03, 0xf9, 0x26, 0x72, 0xb1, 0x58, 0xb1, 0xe5, 0x1a, 0x7b, 0x23, 0x6e, 0x69, + 0xfc, 0xf0, 0x92, 0x30, 0x1a, 0xf0, 0x3e, 0x09, 0x11, 0x0e, 0xc7, 0x1d, 0x0d, 0x58, 0x8c, 0x8d, + 0xf4, 0x61, 0xfa, 0x9b, 0xbc, 0x27, 0x3d, 0xba, 0x36, 0xf3, 0x66, 0xba, 0x1a, 0x80, 0x0e, 0x8e, + 0xd6, 0x19, 0x98, 0x61, 0xa6, 0xfe, 0xfe, 0x85, 0x35, 0x5c, 0x5a, 0xd2, 0x83, 0xee, 0x81, 0xc8, + 0x46, 0xbe, 0x30, 0x90, 0x60, 0xc1, 0x57, 0x84, 0x89, 0xb1, 0xdc, 0x07, 0xe7, 0x8f, 0x61, 0x63, + 0xc2, 0xea, 0x77, 0x58, 0xac, 0x6a, 0x3c, 0x56, 0xb7, 0x89, 0x88, 0x49, 0x6c, 0x4c, 0x13, 0x9a, + 0x37, 0xbe, 0x2b, 0x80, 0x4b, 0xe3, 0xe0, 0x7a, 0xfa, 0xd0, 0x7c, 0xa4, 0x8f, 0xd8, 0x2b, 0x49, + 0x77, 0x58, 0x27, 0x26, 0xfb, 0x68, 0xba, 0x43, 0x3a, 0x1b, 0x90, 0xb9, 0xd9, 0x40, 0x42, 0x7f, + 0xfb, 0xd0, 0x8d, 0xd4, 0x67, 0x6e, 0x10, 0x44, 0xd9, 0x11, 0xfb, 0xdb, 0x0f, 0xe4, 0x20, 0x7d, + 0x70, 0xfe, 0x41, 0x06, 0x58, 0xb6, 0xad, 0xdd, 0x6e, 0xcd, 0x6e, 0x23, 0x5b, 0xfd, 0xeb, 0x70, + 0x02, 0xf0, 0xb2, 0x11, 0x4c, 0x00, 0xd6, 0x01, 0xb6, 0x02, 0xe2, 0x54, 0xc3, 0x6f, 0x11, 0x33, + 0xf7, 0x43, 0xa6, 0x34, 0x86, 0x06, 0x7f, 0xe5, 0xec, 0x33, 0x78, 0x8c, 0xe3, 0xfa, 0xac, 0x90, + 0xdc, 0x28, 0x27, 0x00, 0xef, 0x09, 0xb0, 0x6e, 0x70, 0x58, 0xdf, 0x7d, 0x00, 0x4e, 0xd2, 0xc7, + 0xfc, 0x1f, 0x27, 0x60, 0x9a, 0x6c, 0xd7, 0x11, 0x99, 0xfe, 0x5d, 0x08, 0xfa, 0xaf, 0x8d, 0x00, + 0xf4, 0x0d, 0x98, 0xb1, 0x42, 0xea, 0xa4, 0x4f, 0x65, 0x17, 0x60, 0x62, 0x61, 0x67, 0xf8, 0xd2, + 0x38, 0x32, 0xea, 0xc7, 0x59, 0xe4, 0x35, 0x1e, 0xf9, 0x3b, 0x62, 0xe4, 0xcd, 0x50, 0x1c, 0x25, + 0xf4, 0xef, 0x0d, 0xa0, 0xdf, 0xe0, 0xa0, 0x2f, 0x1e, 0x84, 0x95, 0x31, 0x84, 0xdb, 0x97, 0x21, + 0x8b, 0x4f, 0xc7, 0xfd, 0x7a, 0x8a, 0xf3, 0xfb, 0x53, 0x30, 0x81, 0x9b, 0x6c, 0x30, 0xef, 0xf0, + 0x5f, 0xbd, 0x2f, 0xfa, 0xa6, 0x8b, 0xec, 0xc0, 0x63, 0xc1, 0x7f, 0xf5, 0x78, 0xf0, 0xbd, 0x92, + 0x9d, 0x53, 0x79, 0xb2, 0x11, 0x19, 0x24, 0x0c, 0x3d, 0x29, 0x61, 0x25, 0x3e, 0xb2, 0xf3, 0x72, + 0xc3, 0x4c, 0x4a, 0x06, 0x30, 0x92, 0x3e, 0xf0, 0x7f, 0x9e, 0x85, 0x53, 0x64, 0x55, 0x69, 0xc9, + 0xb6, 0x76, 0x7a, 0x6e, 0xb7, 0x32, 0x0e, 0xae, 0x0b, 0xd7, 0xc3, 0x9c, 0xcb, 0xf9, 0x63, 0x53, + 0x9d, 0xe8, 0x49, 0x55, 0xff, 0x84, 0xf5, 0xa9, 0x78, 0x26, 0x8f, 0xe4, 0x42, 0x8c, 0x00, 0xa3, + 0x78, 0x4f, 0xbc, 0x50, 0x2f, 0xc8, 0x28, 0xb3, 0x48, 0x25, 0x0f, 0xb5, 0x66, 0x19, 0xe8, 0x54, + 0x4e, 0x44, 0xa7, 0x3e, 0x14, 0xe8, 0xd4, 0x7f, 0xe0, 0x74, 0x6a, 0xf9, 0xe0, 0x22, 0x49, 0x5f, + 0xb7, 0x5e, 0x17, 0x6c, 0x0c, 0x05, 0xdb, 0x76, 0x3b, 0x29, 0x6c, 0xd6, 0xb1, 0xfe, 0x48, 0x59, + 0xce, 0x1f, 0x89, 0xbf, 0x8f, 0x22, 0xc1, 0x4c, 0x98, 0xe7, 0x3a, 0x42, 0x97, 0xe6, 0x40, 0x32, + 0x7c, 0xee, 0x24, 0xa3, 0x3d, 0xd4, 0x5c, 0x37, 0xb6, 0xa0, 0x31, 0xac, 0x2d, 0xcd, 0x41, 0x7e, + 0xc9, 0xe8, 0xb8, 0xc8, 0x56, 0xbf, 0x4a, 0x67, 0xba, 0xaf, 0x4b, 0x71, 0x00, 0x58, 0x84, 0xfc, + 0x26, 0x2e, 0x8d, 0x9a, 0xcc, 0x37, 0x89, 0xb5, 0x1e, 0xc2, 0xa1, 0x46, 0xff, 0x4d, 0x1a, 0x9d, + 0xaf, 0x87, 0xcc, 0xc8, 0xa6, 0xc8, 0x09, 0xa2, 0xf3, 0x0d, 0x66, 0x61, 0x2c, 0x17, 0x53, 0xe5, + 0x35, 0xb4, 0xe3, 0x8d, 0xf1, 0x17, 0xd2, 0x43, 0xb8, 0x00, 0xb2, 0xd1, 0x76, 0x70, 0xe7, 0x38, + 0xa5, 0x79, 0x8f, 0x49, 0x7d, 0x85, 0x7a, 0x45, 0x45, 0x58, 0x1e, 0xb7, 0xaf, 0x90, 0x10, 0x17, + 0xe9, 0x63, 0xf6, 0x03, 0xec, 0x28, 0xda, 0xed, 0xe8, 0x2d, 0xe4, 0x71, 0x9f, 0x1a, 0x6a, 0xa4, + 0x27, 0xcb, 0xfa, 0x3d, 0x19, 0xd3, 0x4e, 0x73, 0x07, 0x68, 0xa7, 0xc3, 0x2e, 0x43, 0x06, 0x32, + 0xc7, 0x15, 0x3f, 0xb4, 0x65, 0xc8, 0x58, 0x36, 0xc6, 0x70, 0xed, 0xa8, 0x7f, 0x90, 0x76, 0xac, + 0xad, 0x75, 0xd8, 0x4d, 0x1a, 0x2a, 0xac, 0x91, 0x1d, 0x9a, 0x1d, 0x66, 0x93, 0x26, 0x9a, 0x87, + 0x31, 0xa0, 0x35, 0x47, 0xd1, 0xfa, 0x02, 0x1d, 0x46, 0x53, 0xde, 0x27, 0x75, 0x2c, 0xdb, 0x4d, + 0xb6, 0x4f, 0xea, 0x71, 0xa7, 0xe1, 0xff, 0x92, 0x1e, 0xbc, 0xe2, 0xcf, 0x55, 0x8f, 0x6a, 0xf8, + 0x4c, 0x70, 0xf0, 0x6a, 0x10, 0x03, 0xe9, 0xc3, 0xfb, 0xf6, 0x43, 0x1a, 0x3c, 0x87, 0x6d, 0x8e, + 0xb4, 0x0d, 0x8c, 0x6c, 0xe8, 0x1c, 0xa6, 0x39, 0x46, 0xf3, 0x90, 0x3e, 0x5e, 0xdf, 0x65, 0x06, + 0xce, 0xb7, 0x8e, 0x71, 0xe0, 0xf4, 0x5b, 0x66, 0x6e, 0xc8, 0x96, 0x39, 0xec, 0xfe, 0x0f, 0x95, + 0xf5, 0xe8, 0x06, 0xcc, 0x61, 0xf6, 0x7f, 0x62, 0x98, 0x48, 0x1f, 0xf1, 0xb7, 0xc9, 0x90, 0xab, + 0x8f, 0x7f, 0xbc, 0x1c, 0x76, 0x2e, 0x82, 0x65, 0x55, 0x1f, 0xd9, 0x70, 0x39, 0xcc, 0x5c, 0x24, + 0x92, 0x85, 0x31, 0x04, 0xde, 0x3f, 0x0a, 0x33, 0x78, 0x49, 0xc4, 0xdf, 0x66, 0xfd, 0x2e, 0x1d, + 0x35, 0x1f, 0x4e, 0xb1, 0xad, 0xde, 0x03, 0x93, 0xfe, 0xfe, 0x1d, 0x1d, 0x39, 0xe7, 0xc5, 0xda, + 0xa7, 0xcf, 0xa5, 0x16, 0xfc, 0x7f, 0x20, 0x67, 0x88, 0x91, 0xef, 0xd5, 0x0e, 0xeb, 0x0c, 0x71, + 0xa8, 0xfb, 0xb5, 0x7f, 0x1c, 0x8e, 0xa8, 0xff, 0x39, 0x3d, 0xcc, 0x7b, 0xf7, 0x71, 0xb3, 0x7d, + 0xf6, 0x71, 0x3f, 0xc9, 0x62, 0x59, 0xe7, 0xb1, 0xbc, 0x53, 0x54, 0x84, 0x23, 0x1c, 0x6b, 0xdf, + 0x17, 0xc0, 0x79, 0x96, 0x83, 0x73, 0xe1, 0x40, 0xbc, 0x8c, 0xe1, 0xe0, 0x63, 0x36, 0x1c, 0x73, + 0x3f, 0x95, 0x62, 0x3b, 0xee, 0x39, 0x55, 0x91, 0xdd, 0x77, 0xaa, 0x82, 0x6b, 0xe9, 0xb9, 0x03, + 0xb6, 0xf4, 0x4f, 0xb1, 0xda, 0xd1, 0xe0, 0xb5, 0xe3, 0xe9, 0xe2, 0x88, 0x8c, 0x6e, 0x64, 0x7e, + 0x7f, 0xa0, 0x1e, 0xe7, 0x38, 0xf5, 0x28, 0x1d, 0x8c, 0x99, 0xf4, 0xf5, 0xe3, 0xf7, 0xfd, 0x09, + 0xed, 0x21, 0xb7, 0xf7, 0x61, 0xb7, 0x8a, 0x39, 0x21, 0x8e, 0x6c, 0xe4, 0x1e, 0x66, 0xab, 0x78, + 0x10, 0x27, 0x63, 0x88, 0xc5, 0x36, 0x0b, 0xd3, 0x98, 0xa7, 0x73, 0x46, 0x7b, 0x0b, 0xb9, 0xea, + 0xeb, 0x89, 0x8f, 0xa2, 0x1f, 0xf9, 0x72, 0x44, 0xe1, 0x89, 0xa2, 0xce, 0xbb, 0x26, 0xf5, 0xe8, + 0x20, 0x4c, 0xce, 0x33, 0x0c, 0x8e, 0x3b, 0x82, 0xe2, 0x40, 0x0e, 0xd2, 0x87, 0xec, 0xe3, 0xc4, + 0xdd, 0x66, 0x55, 0xbf, 0x64, 0xed, 0xba, 0xea, 0x83, 0x23, 0xe8, 0xa0, 0x17, 0x20, 0xdf, 0xc1, + 0xd4, 0xe8, 0xb1, 0x8c, 0xf8, 0xe9, 0x0e, 0x15, 0x01, 0x29, 0x5f, 0xa3, 0x7f, 0x26, 0x3d, 0x9b, + 0x11, 0xca, 0x91, 0xd0, 0x19, 0xf7, 0xd9, 0x8c, 0x01, 0xe5, 0x8f, 0xe5, 0x8e, 0x9d, 0x49, 0xaf, + 0x74, 0x63, 0xc7, 0x70, 0x47, 0x14, 0xc1, 0xa1, 0xe3, 0xd1, 0xf2, 0x23, 0x38, 0xe0, 0x97, 0xa4, + 0x27, 0x46, 0x19, 0xa9, 0x78, 0xbf, 0x8f, 0xfb, 0xc4, 0x68, 0x7c, 0xf1, 0xe9, 0x63, 0xf2, 0x2b, + 0xa4, 0x65, 0x9d, 0x25, 0xce, 0xb7, 0x29, 0xfa, 0xf5, 0x0e, 0xdd, 0x58, 0x08, 0x6b, 0x87, 0xd7, + 0x58, 0xfa, 0x96, 0x9f, 0x3e, 0x30, 0xff, 0xed, 0x27, 0x20, 0xb7, 0x88, 0xce, 0xef, 0x6e, 0xa9, + 0x77, 0xc0, 0x64, 0xc3, 0x46, 0xa8, 0x62, 0x6e, 0x5a, 0x9e, 0x74, 0x5d, 0xef, 0xd9, 0x87, 0x84, + 0xbe, 0x79, 0x78, 0x6c, 0x23, 0xbd, 0x1d, 0x9e, 0x3f, 0xf3, 0x5f, 0xd5, 0x57, 0x48, 0x90, 0xad, + 0xbb, 0xba, 0xab, 0x4e, 0x05, 0xd8, 0xaa, 0x0f, 0xb2, 0x58, 0xdc, 0xc1, 0x63, 0x71, 0x3d, 0x27, + 0x0b, 0xcc, 0xc1, 0xbc, 0xf7, 0x7f, 0x04, 0x00, 0x2a, 0x4c, 0xde, 0xef, 0x58, 0xa6, 0x97, 0xc3, + 0x3f, 0x02, 0xe9, 0xbf, 0xab, 0xaf, 0x0d, 0xc4, 0x7d, 0x17, 0x27, 0xee, 0xc7, 0x89, 0x15, 0x31, + 0x86, 0x95, 0x36, 0x09, 0xa6, 0x3c, 0xd1, 0xae, 0x20, 0xbd, 0xed, 0xa8, 0x8f, 0x0e, 0x95, 0x3f, + 0x42, 0xcc, 0xea, 0x87, 0x85, 0x83, 0x71, 0x92, 0x5a, 0x05, 0xc4, 0xa3, 0x3d, 0x3a, 0xfc, 0xcd, + 0x7f, 0x89, 0x0f, 0x46, 0x72, 0x33, 0x64, 0x0d, 0x73, 0xd3, 0xa2, 0xfe, 0x85, 0x57, 0x46, 0xd0, + 0xf6, 0x74, 0x42, 0xc3, 0x19, 0x05, 0x23, 0x75, 0xc6, 0xb3, 0x35, 0x96, 0x4b, 0xef, 0xb2, 0x5e, + 0xe9, 0xea, 0xff, 0x3e, 0x50, 0xd8, 0x8a, 0x02, 0xd9, 0xae, 0xee, 0x6e, 0xd3, 0xa2, 0xf1, 0xb3, + 0x67, 0x23, 0xef, 0x9a, 0xba, 0x69, 0x99, 0x97, 0x76, 0x8c, 0x67, 0x05, 0x77, 0xeb, 0x72, 0x69, + 0x1e, 0xe7, 0x5b, 0xc8, 0x44, 0xb6, 0xee, 0xa2, 0xfa, 0xde, 0x16, 0x9e, 0x63, 0x4d, 0x6a, 0x6c, + 0x52, 0x62, 0xfd, 0xf7, 0x38, 0x8e, 0xd6, 0xff, 0x4d, 0xa3, 0x83, 0x70, 0xa4, 0x26, 0xaa, 0xff, + 0xfe, 0x7b, 0x22, 0xfd, 0xef, 0x53, 0x44, 0xfa, 0x68, 0xfc, 0xab, 0x04, 0x33, 0x75, 0x4f, 0xe1, + 0xea, 0xbb, 0x3b, 0x3b, 0xba, 0x7d, 0x49, 0xbd, 0x36, 0x44, 0x85, 0x51, 0xcd, 0x0c, 0xef, 0x97, + 0xf2, 0x7b, 0xc2, 0xd7, 0x4a, 0xd3, 0xa6, 0xcd, 0x94, 0x90, 0xb8, 0x1d, 0x3c, 0x01, 0x72, 0x9e, + 0x7a, 0xfb, 0x1e, 0x97, 0xb1, 0x0d, 0x81, 0xe4, 0x14, 0x8c, 0x68, 0x35, 0x90, 0xb7, 0x31, 0x44, + 0xd3, 0x90, 0xe0, 0x68, 0xdd, 0xd5, 0x5b, 0x17, 0x96, 0x2d, 0xdb, 0xda, 0x75, 0x0d, 0x13, 0x39, + 0xea, 0xa3, 0x42, 0x04, 0x7c, 0xfd, 0xcf, 0x84, 0xfa, 0xaf, 0xfe, 0x5b, 0x46, 0x74, 0x14, 0x0d, + 0xba, 0x55, 0x96, 0x7c, 0x44, 0x80, 0x2a, 0xb1, 0x71, 0x51, 0x84, 0x62, 0xfa, 0x42, 0x7b, 0xab, + 0x0c, 0x85, 0xf2, 0x03, 0x5d, 0xcb, 0x76, 0x57, 0xad, 0x96, 0xde, 0x71, 0x5c, 0xcb, 0x46, 0x6a, + 0x2d, 0x56, 0x6a, 0x5e, 0x0f, 0xd3, 0xb6, 0x5a, 0xe1, 0xe0, 0x48, 0xdf, 0x58, 0xb5, 0x93, 0x79, + 0x1d, 0xff, 0xb8, 0xf0, 0x2e, 0x23, 0x91, 0x4a, 0x2f, 0x47, 0x11, 0x7a, 0xde, 0xaf, 0x4b, 0x4b, + 0x76, 0x58, 0x42, 0x6c, 0xe7, 0x51, 0x88, 0xa9, 0x31, 0x2c, 0x95, 0x4b, 0x30, 0x5b, 0xdf, 0x3d, + 0x1f, 0x10, 0x71, 0x58, 0x23, 0xe4, 0x0d, 0xc2, 0x51, 0x2a, 0xa8, 0xe2, 0xb1, 0x84, 0x22, 0xe4, + 0x7b, 0x1d, 0xcc, 0x3a, 0x6c, 0x36, 0x8a, 0x37, 0x9f, 0x28, 0x18, 0x9d, 0x62, 0x70, 0xa9, 0xe9, + 0x0b, 0xf0, 0xfd, 0x12, 0xcc, 0xd6, 0xba, 0xc8, 0x44, 0x6d, 0xe2, 0x05, 0xc9, 0x09, 0xf0, 0x15, + 0x09, 0x05, 0xc8, 0x11, 0x8a, 0x10, 0x60, 0xe8, 0xb1, 0xbc, 0xe8, 0x0b, 0x2f, 0x4c, 0x48, 0x24, + 0xb8, 0xb8, 0xd2, 0xd2, 0x17, 0xdc, 0x57, 0x24, 0x98, 0xd6, 0x76, 0xcd, 0x75, 0xdb, 0xf2, 0x46, + 0x63, 0x5b, 0xbd, 0x33, 0xec, 0x20, 0x6e, 0x82, 0x63, 0xed, 0x5d, 0x1b, 0xaf, 0x3f, 0x55, 0xcc, + 0x3a, 0x6a, 0x59, 0x66, 0xdb, 0xc1, 0xf5, 0xc8, 0x69, 0xfb, 0x3f, 0xdc, 0x9e, 0x7d, 0xfe, 0xb7, + 0xe4, 0x8c, 0xfa, 0x22, 0xe1, 0x50, 0x37, 0xa4, 0xf2, 0x4c, 0xd1, 0xe2, 0x3d, 0x81, 0x60, 0x40, + 0x9b, 0x41, 0x25, 0xa4, 0x2f, 0xdc, 0x2f, 0x48, 0xa0, 0x14, 0x5b, 0x2d, 0x6b, 0xd7, 0x74, 0xeb, + 0xa8, 0x83, 0x5a, 0x6e, 0xc3, 0xd6, 0x5b, 0x88, 0xb5, 0x9f, 0x0b, 0x20, 0xb7, 0x0d, 0x9b, 0xf6, + 0xc1, 0xde, 0x23, 0x95, 0xe3, 0x2b, 0x84, 0x77, 0x1c, 0x49, 0x2d, 0xf7, 0x97, 0x92, 0x40, 0x9c, + 0x62, 0xfb, 0x8a, 0x82, 0x05, 0xa5, 0x2f, 0xd5, 0x4f, 0x49, 0x30, 0xe5, 0xf7, 0xd8, 0x5b, 0x22, + 0xc2, 0xfc, 0x95, 0x84, 0x93, 0x91, 0x80, 0x78, 0x02, 0x19, 0xbe, 0x3b, 0xc1, 0xac, 0x22, 0x8a, + 0x7e, 0x32, 0xd1, 0x15, 0x93, 0x8b, 0xce, 0x7b, 0xad, 0xd6, 0x9a, 0x4b, 0xb5, 0xd5, 0xc5, 0xb2, + 0x56, 0x90, 0xd5, 0xaf, 0x4a, 0x90, 0x5d, 0x37, 0xcc, 0x2d, 0x36, 0xba, 0xd2, 0x71, 0xcf, 0x8e, + 0x6c, 0xa3, 0x07, 0x68, 0x4b, 0x27, 0x2f, 0xca, 0xad, 0x70, 0xdc, 0xdc, 0xdd, 0x39, 0x8f, 0xec, + 0xda, 0x26, 0x1e, 0x65, 0x9d, 0x86, 0x55, 0x47, 0x26, 0x31, 0x42, 0x73, 0x5a, 0xdf, 0x6f, 0xbc, + 0x09, 0x26, 0x30, 0x79, 0xf0, 0x38, 0x89, 0x90, 0x78, 0xc0, 0x94, 0xc4, 0x30, 0x95, 0x68, 0xda, + 0xd0, 0x87, 0x78, 0xfa, 0x9a, 0xfa, 0x07, 0x39, 0x38, 0x51, 0x34, 0x2f, 0x61, 0x9b, 0x82, 0x74, + 0xf0, 0xa5, 0x6d, 0xdd, 0xdc, 0x42, 0x78, 0x80, 0x08, 0x24, 0xce, 0x86, 0xe8, 0xcf, 0xf0, 0x21, + 0xfa, 0x15, 0x0d, 0x26, 0x2c, 0xbb, 0x8d, 0xec, 0x85, 0x4b, 0x98, 0xa7, 0xde, 0x65, 0x67, 0xda, + 0x26, 0xfb, 0x15, 0x31, 0x4f, 0xc9, 0xcf, 0xd7, 0xc8, 0xff, 0x9a, 0x4f, 0xe8, 0xcc, 0x4d, 0x30, + 0x41, 0xd3, 0x94, 0x19, 0x98, 0xac, 0x69, 0x8b, 0x65, 0xad, 0x59, 0x59, 0x2c, 0x1c, 0x51, 0x2e, + 0x83, 0xa3, 0x95, 0x46, 0x59, 0x2b, 0x36, 0x2a, 0xb5, 0x6a, 0x13, 0xa7, 0x17, 0x32, 0xea, 0xf3, + 0xb2, 0xa2, 0x9e, 0xbd, 0xf1, 0xcc, 0xf4, 0x83, 0x55, 0x83, 0x89, 0x16, 0xc9, 0x80, 0x87, 0xd0, + 0xe9, 0x44, 0xb5, 0xa3, 0x04, 0x49, 0x82, 0xe6, 0x13, 0x52, 0x4e, 0x03, 0x5c, 0xb4, 0x2d, 0x73, + 0x2b, 0x3c, 0x75, 0x38, 0xa9, 0x31, 0x29, 0xea, 0x83, 0x19, 0xc8, 0x93, 0x7f, 0xf0, 0x95, 0x24, + 0xf8, 0x29, 0x14, 0xbc, 0xff, 0xee, 0x59, 0xbc, 0x58, 0x5e, 0xe1, 0x44, 0x8b, 0xbe, 0x7a, 0xba, + 0x48, 0x64, 0x40, 0x2c, 0x61, 0x5a, 0x95, 0x9b, 0x21, 0x4f, 0xfe, 0xa5, 0x5e, 0x07, 0xd1, 0xe1, + 0x45, 0x49, 0x36, 0x41, 0x3f, 0x65, 0x71, 0x99, 0xa6, 0xaf, 0xcd, 0x1f, 0x91, 0x60, 0xb2, 0x8a, + 0xdc, 0xd2, 0x36, 0x6a, 0x5d, 0x50, 0x1f, 0xcb, 0x2f, 0x80, 0x76, 0x0c, 0x64, 0xba, 0xf7, 0xed, + 0x74, 0x82, 0x05, 0x50, 0x3f, 0x41, 0x7d, 0x01, 0xdb, 0xf9, 0xde, 0xcd, 0xeb, 0xcf, 0x8d, 0x7d, + 0xea, 0xea, 0x97, 0x10, 0xa1, 0x32, 0x27, 0x21, 0x6f, 0x23, 0x67, 0xb7, 0xe3, 0x2f, 0xa2, 0xd1, + 0x37, 0xf5, 0xa1, 0x40, 0x9c, 0x25, 0x4e, 0x9c, 0x37, 0x8b, 0x17, 0x31, 0x86, 0x78, 0xa5, 0x59, + 0x98, 0xa8, 0x98, 0x86, 0x6b, 0xe8, 0x1d, 0xf5, 0x45, 0x59, 0x98, 0xad, 0x23, 0x77, 0x5d, 0xb7, + 0xf5, 0x1d, 0xe4, 0x22, 0xdb, 0x51, 0xbf, 0xcf, 0xf7, 0x09, 0xdd, 0x8e, 0xee, 0x6e, 0x5a, 0xf6, + 0x8e, 0xaf, 0x9a, 0xfe, 0xbb, 0xa7, 0x9a, 0x7b, 0xc8, 0x76, 0x42, 0xbe, 0xfc, 0x57, 0xef, 0xcb, + 0x45, 0xcb, 0xbe, 0xe0, 0x0d, 0x82, 0x74, 0x9a, 0x46, 0x5f, 0x3d, 0x7a, 0x1d, 0x6b, 0x6b, 0x15, + 0xed, 0x21, 0x3f, 0x5c, 0x5a, 0xf0, 0xee, 0xcd, 0x05, 0xda, 0x56, 0xd5, 0x72, 0xbd, 0x4e, 0x7b, + 0xd5, 0xda, 0x22, 0xf1, 0x62, 0x27, 0x35, 0x3e, 0x31, 0xcc, 0xa5, 0xef, 0x21, 0x9c, 0x2b, 0xcf, + 0xe6, 0xa2, 0x89, 0xca, 0x3c, 0x28, 0xc1, 0x6f, 0x0d, 0xd4, 0x41, 0x3b, 0xc8, 0xb5, 0x2f, 0xe1, + 0x6b, 0x21, 0x26, 0xb5, 0x3e, 0x5f, 0xe8, 0x00, 0x2d, 0x3e, 0x59, 0xa7, 0xd2, 0x9b, 0xe7, 0x24, + 0x77, 0xa0, 0xc9, 0xba, 0x08, 0xc5, 0xb1, 0x5c, 0x7b, 0x25, 0x7b, 0xd6, 0xcc, 0xab, 0x64, 0xc8, + 0xe2, 0xc1, 0xf3, 0x6d, 0x19, 0x6e, 0x85, 0x69, 0x07, 0x39, 0x8e, 0xbe, 0x85, 0xfc, 0x15, 0x26, + 0xfa, 0xaa, 0xdc, 0x06, 0xb9, 0x0e, 0xc6, 0x94, 0x0c, 0x0e, 0xd7, 0x72, 0x35, 0xf3, 0x0c, 0x0c, + 0x8f, 0x56, 0x30, 0x12, 0x60, 0xb8, 0x35, 0xf2, 0xc7, 0x99, 0x7b, 0x20, 0x47, 0xe0, 0x9f, 0x82, + 0xdc, 0x62, 0x79, 0x61, 0x63, 0xb9, 0x70, 0xc4, 0x7b, 0xf4, 0xf9, 0x9b, 0x82, 0xdc, 0x52, 0xb1, + 0x51, 0x5c, 0x2d, 0x48, 0x5e, 0x3d, 0x2a, 0xd5, 0xa5, 0x5a, 0x41, 0xf6, 0x12, 0xd7, 0x8b, 0xd5, + 0x4a, 0xa9, 0x90, 0x55, 0xa6, 0x61, 0xe2, 0x5c, 0x51, 0xab, 0x56, 0xaa, 0xcb, 0x85, 0x9c, 0xfa, + 0x37, 0x2c, 0x7e, 0xb7, 0xf3, 0xf8, 0x5d, 0x17, 0xc5, 0x53, 0x3f, 0xc8, 0x5e, 0x1d, 0x40, 0x76, + 0x27, 0x07, 0xd9, 0x4f, 0x88, 0x10, 0x19, 0x83, 0x3b, 0x53, 0x1e, 0x26, 0xd6, 0x6d, 0xab, 0x85, + 0x1c, 0x47, 0xfd, 0x55, 0x09, 0xf2, 0x25, 0xdd, 0x6c, 0xa1, 0x8e, 0x7a, 0x45, 0x08, 0x15, 0x71, + 0x15, 0xcd, 0x04, 0xa7, 0xc5, 0xfe, 0x21, 0x23, 0xda, 0xfb, 0x51, 0xba, 0xf3, 0x84, 0x66, 0x84, + 0x7c, 0xc4, 0x7a, 0xb9, 0x58, 0x52, 0x63, 0xb8, 0x1a, 0x47, 0x82, 0x29, 0xba, 0x1a, 0x70, 0x1e, + 0xb1, 0xf3, 0xf0, 0xef, 0x67, 0x44, 0x27, 0x87, 0x7e, 0x0d, 0x02, 0x32, 0x11, 0xf2, 0x10, 0x9b, + 0x08, 0x0e, 0xa2, 0x36, 0x86, 0xcd, 0x43, 0x09, 0xa6, 0x37, 0x4c, 0xa7, 0x9f, 0x50, 0xc4, 0xe3, + 0xe8, 0xfb, 0xd5, 0x60, 0x08, 0x1d, 0x28, 0x8e, 0xfe, 0x60, 0x7a, 0xe9, 0x0b, 0xe6, 0xfb, 0x19, + 0x38, 0xbe, 0x8c, 0x4c, 0x64, 0x1b, 0x2d, 0x52, 0x03, 0x5f, 0x12, 0x77, 0xf2, 0x92, 0x78, 0x2c, + 0xc7, 0x79, 0xbf, 0x3f, 0x78, 0x09, 0xbc, 0x2e, 0x90, 0xc0, 0xdd, 0x9c, 0x04, 0x6e, 0x12, 0xa4, + 0x33, 0x86, 0xfb, 0xd0, 0xa7, 0x60, 0xa6, 0x6a, 0xb9, 0xc6, 0xa6, 0xd1, 0x22, 0x3e, 0x68, 0xaf, + 0x94, 0x21, 0xbb, 0x6a, 0x38, 0xae, 0x5a, 0x0c, 0xbb, 0x93, 0x6b, 0x60, 0xda, 0x30, 0x5b, 0x9d, + 0xdd, 0x36, 0xd2, 0x90, 0x4e, 0xfa, 0x95, 0x49, 0x8d, 0x4d, 0x0a, 0xb7, 0xf6, 0x3d, 0xb6, 0x64, + 0x7f, 0x6b, 0xff, 0xb3, 0xc2, 0xcb, 0x30, 0x2c, 0x0b, 0x38, 0x20, 0x65, 0x84, 0xdd, 0x55, 0x84, + 0x59, 0x93, 0xc9, 0xea, 0x1b, 0xec, 0xbd, 0x17, 0x0a, 0xb0, 0xe4, 0x34, 0xfe, 0x0f, 0xf5, 0x83, + 0x42, 0x8d, 0x75, 0x10, 0x43, 0xc9, 0x90, 0x59, 0x1a, 0x62, 0x92, 0xac, 0xc0, 0x5c, 0xa5, 0xda, + 0x28, 0x6b, 0xd5, 0xe2, 0x2a, 0xcd, 0x22, 0xab, 0xff, 0x2a, 0x41, 0x4e, 0x43, 0xdd, 0xce, 0x25, + 0x36, 0x62, 0x34, 0x75, 0x14, 0xcf, 0x04, 0x8e, 0xe2, 0xca, 0x12, 0x80, 0xde, 0xf2, 0x0a, 0xc6, + 0x57, 0x6a, 0x49, 0x7d, 0xe3, 0x98, 0x72, 0x15, 0x2c, 0x06, 0xb9, 0x35, 0xe6, 0x4f, 0xf5, 0xc5, + 0xc2, 0x3b, 0x47, 0x1c, 0x35, 0xcc, 0x61, 0x44, 0x9f, 0xf0, 0x21, 0xa1, 0xcd, 0x9e, 0x81, 0xe4, + 0x0e, 0x47, 0xfc, 0x5f, 0x93, 0x20, 0xdb, 0xf0, 0x7a, 0x4b, 0xa6, 0xe3, 0xfc, 0xc3, 0xe1, 0x74, + 0xdc, 0x23, 0x13, 0xa1, 0xe3, 0x77, 0xc1, 0x0c, 0xab, 0xb1, 0xd4, 0x55, 0x22, 0x56, 0xc5, 0xb9, + 0x1f, 0x86, 0xd1, 0xf0, 0x3e, 0xec, 0x1c, 0x8e, 0x88, 0x3f, 0xfd, 0x38, 0x80, 0x35, 0xb4, 0x73, + 0x1e, 0xd9, 0xce, 0xb6, 0xd1, 0x55, 0xff, 0x56, 0x86, 0xa9, 0x65, 0xe4, 0xd6, 0x5d, 0xdd, 0xdd, + 0x75, 0x7a, 0xb6, 0x3b, 0x4d, 0xab, 0xa4, 0xb7, 0xb6, 0x11, 0xed, 0x8e, 0xfc, 0x57, 0xf5, 0xbd, + 0xb2, 0xa8, 0x3f, 0x51, 0x58, 0xce, 0x7c, 0x50, 0x46, 0x04, 0x26, 0x8f, 0x87, 0x6c, 0x5b, 0x77, + 0x75, 0x8a, 0xc5, 0x15, 0x3d, 0x58, 0x84, 0x84, 0x34, 0x9c, 0x4d, 0xfd, 0x4d, 0x49, 0xc4, 0xa1, + 0x48, 0xa0, 0xfc, 0x64, 0x20, 0x7c, 0x30, 0x33, 0x04, 0x0a, 0xc7, 0x60, 0xb6, 0x5a, 0x6b, 0x34, + 0x57, 0x6b, 0xcb, 0xcb, 0x65, 0x2f, 0xb5, 0x20, 0x2b, 0x27, 0x41, 0x59, 0x2f, 0xde, 0xb7, 0x56, + 0xae, 0x36, 0x9a, 0xd5, 0xda, 0x62, 0x99, 0xfe, 0x99, 0x55, 0x8e, 0xc2, 0x74, 0xa9, 0x58, 0x5a, + 0xf1, 0x13, 0x72, 0xca, 0x29, 0x38, 0xbe, 0x56, 0x5e, 0x5b, 0x28, 0x6b, 0xf5, 0x95, 0xca, 0x7a, + 0xd3, 0x23, 0xb3, 0x54, 0xdb, 0xa8, 0x2e, 0x16, 0xf2, 0x8a, 0x0a, 0x27, 0x99, 0x2f, 0xe7, 0xb4, + 0x5a, 0x75, 0xb9, 0x59, 0x6f, 0x14, 0x1b, 0xe5, 0xc2, 0x84, 0x72, 0x19, 0x1c, 0x2d, 0x15, 0xab, + 0x38, 0x7b, 0xa9, 0x56, 0xad, 0x96, 0x4b, 0x8d, 0xc2, 0xa4, 0xfa, 0x6f, 0x59, 0x98, 0xae, 0x38, + 0x55, 0x7d, 0x07, 0x9d, 0xd5, 0x3b, 0x46, 0x5b, 0x7d, 0x11, 0x33, 0xf3, 0xb8, 0x0e, 0x66, 0x6d, + 0xf2, 0x88, 0xda, 0x0d, 0x03, 0x11, 0x34, 0x67, 0x35, 0x3e, 0xd1, 0x9b, 0x93, 0x9b, 0x98, 0x80, + 0x3f, 0x27, 0x27, 0x6f, 0xca, 0x02, 0x00, 0x79, 0x6a, 0x84, 0x97, 0xbb, 0x9e, 0xe9, 0x6d, 0x4d, + 0xfa, 0x0e, 0x72, 0x90, 0xbd, 0x67, 0xb4, 0x90, 0x9f, 0x53, 0x63, 0xfe, 0x52, 0xbf, 0x2e, 0x8b, + 0xee, 0x2f, 0x32, 0xa0, 0x32, 0xd5, 0x89, 0xe8, 0x0d, 0x5f, 0x28, 0x8b, 0xec, 0x0e, 0x0a, 0x91, + 0x4c, 0xa6, 0x29, 0x2f, 0x95, 0x86, 0x5b, 0xb6, 0x6d, 0xd4, 0x6a, 0xcd, 0xfa, 0x4a, 0x4d, 0x6b, + 0x14, 0x64, 0x65, 0x06, 0x26, 0xbd, 0xd7, 0xd5, 0x5a, 0x75, 0xb9, 0x90, 0x55, 0x4e, 0xc0, 0xb1, + 0x95, 0x62, 0xbd, 0x59, 0xa9, 0x9e, 0x2d, 0xae, 0x56, 0x16, 0x9b, 0xa5, 0x95, 0xa2, 0x56, 0x2f, + 0xe4, 0x94, 0x2b, 0xe0, 0x44, 0xa3, 0x52, 0xd6, 0x9a, 0x4b, 0xe5, 0x62, 0x63, 0x43, 0x2b, 0xd7, + 0x9b, 0xd5, 0x5a, 0xb3, 0x5a, 0x5c, 0x2b, 0x17, 0xf2, 0x5e, 0xf3, 0xc7, 0x9f, 0x42, 0xb5, 0x99, + 0xd8, 0xaf, 0x8c, 0x93, 0x11, 0xca, 0x38, 0xd5, 0xab, 0x8c, 0xc0, 0xaa, 0x95, 0x56, 0xae, 0x97, + 0xb5, 0xb3, 0xe5, 0xc2, 0x74, 0x3f, 0x5d, 0x9b, 0x51, 0x8e, 0x43, 0xc1, 0xe3, 0xa1, 0x59, 0xa9, + 0xfb, 0x39, 0x17, 0x0b, 0xb3, 0xea, 0xa7, 0xf2, 0x70, 0x52, 0x43, 0x5b, 0x86, 0xe3, 0x22, 0x7b, + 0x5d, 0xbf, 0xb4, 0x83, 0x4c, 0xd7, 0xef, 0xe4, 0xff, 0x57, 0x62, 0x65, 0x5c, 0x83, 0xd9, 0x2e, + 0xa1, 0xb1, 0x86, 0xdc, 0x6d, 0xab, 0x4d, 0x47, 0xe1, 0xc7, 0x46, 0xf6, 0x1c, 0xf3, 0xeb, 0x6c, + 0x76, 0x8d, 0xff, 0x9b, 0xd1, 0x6d, 0x39, 0x46, 0xb7, 0xb3, 0xc3, 0xe8, 0xb6, 0x72, 0x15, 0x4c, + 0xed, 0x3a, 0xc8, 0x2e, 0xef, 0xe8, 0x46, 0xc7, 0xbf, 0x9c, 0x33, 0x48, 0x50, 0xdf, 0x95, 0x15, + 0x3d, 0xb1, 0xc2, 0xd4, 0xa5, 0xbf, 0x18, 0x23, 0xfa, 0xd6, 0xd3, 0x00, 0xb4, 0xb2, 0x1b, 0x76, + 0x87, 0x2a, 0x2b, 0x93, 0xe2, 0xf1, 0x77, 0xde, 0xe8, 0x74, 0x0c, 0x73, 0x2b, 0xd8, 0xf7, 0x0f, + 0x13, 0xd4, 0x97, 0xca, 0x22, 0x27, 0x58, 0x92, 0xf2, 0x96, 0xac, 0x35, 0xbd, 0x58, 0x1a, 0x73, + 0xbf, 0xbb, 0xbf, 0xe9, 0xe4, 0x95, 0x02, 0xcc, 0xe0, 0x34, 0xda, 0x02, 0x0b, 0x13, 0x5e, 0x1f, + 0xec, 0x93, 0x5b, 0x2b, 0x37, 0x56, 0x6a, 0x8b, 0xc1, 0xb7, 0x49, 0x8f, 0xa4, 0xc7, 0x4c, 0xb1, + 0x7a, 0x1f, 0x6e, 0x8d, 0x53, 0xca, 0xa3, 0xe0, 0x0a, 0xa6, 0xc3, 0x2e, 0xae, 0x6a, 0xe5, 0xe2, + 0xe2, 0x7d, 0xcd, 0xf2, 0x33, 0x2b, 0xf5, 0x46, 0x9d, 0x6f, 0x5c, 0x7e, 0x3b, 0x9a, 0xf6, 0xf8, + 0x2d, 0xaf, 0x15, 0x2b, 0xab, 0xb4, 0x7f, 0x5f, 0xaa, 0x69, 0x6b, 0xc5, 0x46, 0x61, 0x46, 0x7d, + 0x95, 0x0c, 0x85, 0x65, 0xe4, 0xae, 0x5b, 0xb6, 0xab, 0x77, 0x56, 0x0d, 0xf3, 0xc2, 0x86, 0xdd, + 0xe1, 0x26, 0x9b, 0xc2, 0x61, 0x3a, 0xf8, 0x21, 0x92, 0x23, 0x18, 0xbd, 0x23, 0xde, 0xc5, 0xd9, + 0x42, 0x65, 0x0a, 0x13, 0xd4, 0x67, 0x4b, 0x22, 0xcb, 0xdd, 0xe2, 0xa5, 0x26, 0xd3, 0x93, 0xe7, + 0x8c, 0x7b, 0x7c, 0xee, 0x83, 0x5a, 0x5e, 0x7d, 0x7e, 0x16, 0x26, 0x97, 0x0c, 0x53, 0xef, 0x18, + 0xcf, 0xe2, 0xe2, 0x97, 0x86, 0x7d, 0x4c, 0x26, 0xa6, 0x8f, 0x91, 0x86, 0x1a, 0x3f, 0x7f, 0x59, + 0x16, 0x5d, 0x5e, 0x60, 0x64, 0xef, 0x33, 0x19, 0x31, 0x78, 0x7e, 0x54, 0x12, 0x59, 0x5e, 0x18, + 0x4c, 0x2f, 0x19, 0x86, 0x9f, 0xf9, 0xd1, 0xb0, 0xb1, 0x7a, 0xda, 0xf7, 0x64, 0x3f, 0x55, 0x98, + 0x52, 0xff, 0x54, 0x06, 0x75, 0x19, 0xb9, 0x67, 0x91, 0x1d, 0x4c, 0x05, 0x70, 0xaf, 0x4f, 0xed, + 0x6d, 0xa6, 0xc9, 0xbe, 0x8d, 0x05, 0xf0, 0x1c, 0x0f, 0x60, 0x31, 0xa6, 0xf1, 0x44, 0x90, 0x8e, + 0x68, 0xbc, 0x15, 0xc8, 0x3b, 0xf8, 0x3b, 0x55, 0xb3, 0x27, 0x44, 0x0f, 0x97, 0x98, 0x18, 0x4b, + 0x9d, 0x10, 0xd6, 0x28, 0x01, 0xf5, 0x07, 0xc1, 0x24, 0xe8, 0xa7, 0x38, 0xed, 0x58, 0x3a, 0x30, + 0xb3, 0xc9, 0xf4, 0xc5, 0x4e, 0x57, 0x5d, 0xfa, 0xd9, 0x37, 0xea, 0x47, 0x73, 0x70, 0xbc, 0x5f, + 0x75, 0xd4, 0xdf, 0xca, 0x70, 0x3b, 0xec, 0x08, 0x0f, 0xf9, 0x19, 0xba, 0x81, 0xe8, 0xbd, 0x28, + 0x4f, 0x82, 0x13, 0xc1, 0x32, 0x5c, 0xc3, 0xaa, 0xa2, 0x8b, 0x4e, 0x07, 0xb9, 0x2e, 0xb2, 0x71, + 0xd5, 0x26, 0xb5, 0xfe, 0x1f, 0x95, 0xa7, 0xc2, 0xe5, 0x86, 0xe9, 0x18, 0x6d, 0x64, 0x37, 0x8c, + 0xae, 0x53, 0x34, 0xdb, 0x8d, 0x5d, 0xd7, 0xb2, 0x0d, 0x9d, 0x5e, 0x25, 0x39, 0xa9, 0x45, 0x7d, + 0x56, 0x6e, 0x84, 0x82, 0xe1, 0xd4, 0xcc, 0xf3, 0x96, 0x6e, 0xb7, 0x0d, 0x73, 0x6b, 0xd5, 0x70, + 0x5c, 0xea, 0x01, 0xbc, 0x2f, 0x5d, 0xfd, 0x3b, 0x59, 0xf4, 0x30, 0xdd, 0x00, 0x58, 0x23, 0x3a, + 0x94, 0x17, 0xc8, 0x22, 0xc7, 0xe3, 0x92, 0xd1, 0x4e, 0xa6, 0x2c, 0xcf, 0x1b, 0xb7, 0x21, 0xd1, + 0x7f, 0x04, 0xc7, 0x5d, 0x0b, 0x49, 0xf7, 0x0d, 0x81, 0xb3, 0x65, 0xad, 0xb2, 0x54, 0x29, 0x7b, + 0x66, 0xc5, 0x09, 0x38, 0x16, 0x7e, 0x5b, 0xbc, 0xaf, 0x59, 0x2f, 0x57, 0x1b, 0x85, 0x49, 0xaf, + 0x9f, 0x22, 0xc9, 0x4b, 0xc5, 0xca, 0x6a, 0x79, 0xb1, 0xd9, 0xa8, 0x79, 0x5f, 0x16, 0x87, 0x33, + 0x2d, 0xd4, 0x07, 0xb3, 0x70, 0x14, 0xcb, 0xf6, 0x12, 0x96, 0xaa, 0x27, 0x94, 0x1e, 0x5f, 0xdb, + 0x00, 0xa0, 0x29, 0x22, 0x5e, 0xf5, 0xf3, 0xc2, 0x37, 0x65, 0x32, 0x10, 0xf6, 0x94, 0x11, 0xa1, + 0x19, 0xdf, 0x97, 0x44, 0x22, 0x54, 0x08, 0x93, 0x4d, 0xa6, 0x14, 0xff, 0x3c, 0xee, 0x11, 0x27, + 0x1a, 0x7c, 0x6c, 0x65, 0x96, 0xf0, 0xcf, 0xcf, 0x5c, 0xaf, 0x68, 0x58, 0x1d, 0xe6, 0x00, 0x70, + 0x0a, 0xd6, 0x20, 0xa2, 0x07, 0x7d, 0xc7, 0xab, 0x28, 0x3d, 0x28, 0x96, 0x1a, 0x95, 0xb3, 0xe5, + 0x28, 0x3d, 0xf8, 0x9c, 0x0c, 0x93, 0xcb, 0xc8, 0xf5, 0xe6, 0x54, 0x8e, 0xfa, 0x34, 0x81, 0xf5, + 0x1f, 0xcf, 0x8c, 0xe9, 0x58, 0x2d, 0xbd, 0x13, 0x2c, 0x03, 0x90, 0x37, 0xf5, 0xb9, 0xc3, 0x98, + 0x20, 0x7e, 0xd1, 0x11, 0xe3, 0xd5, 0x53, 0x20, 0xe7, 0x7a, 0x9f, 0xe9, 0x32, 0xf4, 0xa3, 0x23, + 0x87, 0x2b, 0x8f, 0xc8, 0xa2, 0xee, 0xea, 0x1a, 0xc9, 0xcf, 0x8c, 0x4e, 0x82, 0xb6, 0x4b, 0x04, + 0x23, 0x3f, 0x8a, 0xf6, 0xe7, 0xdf, 0xc8, 0x70, 0x82, 0xb4, 0x8f, 0x62, 0xb7, 0x5b, 0x77, 0x2d, + 0x1b, 0x69, 0xa8, 0x85, 0x8c, 0xae, 0xdb, 0xb3, 0xbe, 0x67, 0x93, 0x54, 0x7f, 0xb3, 0x99, 0xbe, + 0xaa, 0x6f, 0x96, 0x45, 0x63, 0x30, 0xef, 0x6b, 0x8f, 0x3d, 0xe5, 0x45, 0x34, 0xf6, 0x4f, 0x4a, + 0x22, 0x51, 0x95, 0x13, 0x12, 0x4f, 0x06, 0xd4, 0xc7, 0x0e, 0x01, 0x28, 0x7f, 0xe5, 0x46, 0x2b, + 0x97, 0xca, 0x95, 0x75, 0x6f, 0x10, 0xb8, 0x1a, 0xae, 0x5c, 0xdf, 0xd0, 0x4a, 0x2b, 0xc5, 0x7a, + 0xb9, 0xa9, 0x95, 0x97, 0x2b, 0xf5, 0x06, 0x75, 0xca, 0x22, 0x7f, 0x4d, 0x28, 0x57, 0xc1, 0xa9, + 0xfa, 0xc6, 0x42, 0xbd, 0xa4, 0x55, 0xd6, 0x71, 0xba, 0x56, 0xae, 0x96, 0xcf, 0xd1, 0xaf, 0x93, + 0xea, 0x87, 0x0b, 0x30, 0xed, 0x4d, 0x00, 0xea, 0x64, 0x5e, 0xa0, 0x7e, 0x27, 0x0b, 0xd3, 0x1a, + 0x72, 0xac, 0xce, 0x1e, 0x9e, 0x23, 0x8c, 0x6b, 0xea, 0xf1, 0x3d, 0x59, 0xf4, 0xfc, 0x36, 0xc3, + 0xec, 0x3c, 0xc3, 0x68, 0xf4, 0x44, 0x53, 0xdf, 0xd3, 0x8d, 0x8e, 0x7e, 0x9e, 0x76, 0x35, 0x93, + 0x5a, 0x98, 0xa0, 0xcc, 0x83, 0x62, 0x5d, 0x34, 0x91, 0x5d, 0x6f, 0x5d, 0x2c, 0xbb, 0xdb, 0xc5, + 0x76, 0xdb, 0x46, 0x8e, 0x43, 0x57, 0x2f, 0xfa, 0x7c, 0x51, 0x6e, 0x80, 0xa3, 0x38, 0x95, 0xc9, + 0x4c, 0x1c, 0x64, 0x7a, 0x93, 0x83, 0x9c, 0x45, 0xf3, 0x92, 0x9f, 0x33, 0xc7, 0xe4, 0x0c, 0x93, + 0xd9, 0xe3, 0x12, 0x79, 0xfe, 0x94, 0xce, 0x35, 0x30, 0x6d, 0xea, 0x3b, 0xa8, 0xfc, 0x40, 0xd7, + 0xb0, 0x91, 0x83, 0x1d, 0x63, 0x64, 0x8d, 0x4d, 0x52, 0x3f, 0x2a, 0x74, 0xde, 0x5c, 0x4c, 0x62, + 0xc9, 0x74, 0x7f, 0x79, 0x08, 0xd5, 0xef, 0xd3, 0xcf, 0xc8, 0xea, 0x87, 0x65, 0x98, 0xa1, 0x4c, + 0x15, 0xcd, 0x4b, 0x95, 0xb6, 0x7a, 0x35, 0x67, 0xfc, 0xea, 0x5e, 0x9a, 0x6f, 0xfc, 0xe2, 0x17, + 0xf5, 0x17, 0x64, 0x51, 0x77, 0xe7, 0x3e, 0x15, 0xc7, 0x65, 0x44, 0x3b, 0x8e, 0x6e, 0x5a, 0xbb, + 0xd4, 0x51, 0x75, 0x52, 0x23, 0x2f, 0x69, 0x2e, 0xea, 0xa9, 0xbf, 0x2b, 0xe4, 0x4c, 0x2d, 0x58, + 0x8d, 0x43, 0x02, 0xf0, 0xd3, 0x32, 0xcc, 0x51, 0xae, 0xea, 0xf4, 0x9c, 0x8f, 0xd0, 0x81, 0xb7, + 0x5f, 0x14, 0x36, 0x04, 0xfb, 0xd4, 0x9f, 0x96, 0xf4, 0x88, 0x01, 0xf2, 0xe3, 0x42, 0xc1, 0xd1, + 0x84, 0x2b, 0x72, 0x48, 0x50, 0xbe, 0x3b, 0x0b, 0xd3, 0x1b, 0x0e, 0xb2, 0xa9, 0xdf, 0xbe, 0xfa, + 0x50, 0x16, 0xe4, 0x65, 0xc4, 0x6d, 0xa4, 0xbe, 0x44, 0xd8, 0xc3, 0x97, 0xad, 0x2c, 0x43, 0xd4, + 0xb3, 0x91, 0x22, 0x60, 0xbb, 0x1e, 0xe6, 0x88, 0x48, 0x8b, 0xae, 0xeb, 0x19, 0x89, 0xbe, 0x37, + 0x6d, 0x4f, 0xea, 0x28, 0xb6, 0x8a, 0x70, 0x59, 0x5e, 0x96, 0x92, 0xc7, 0xd3, 0x2a, 0xda, 0x24, + 0xf3, 0xd9, 0xac, 0xd6, 0x93, 0xaa, 0xdc, 0x02, 0x97, 0x59, 0x5d, 0x44, 0xce, 0xaf, 0x30, 0x99, + 0x73, 0x38, 0x73, 0xbf, 0x4f, 0xea, 0x77, 0x84, 0x7c, 0x75, 0xc5, 0xa5, 0x93, 0x4c, 0x17, 0xba, + 0xa3, 0x31, 0x49, 0x8e, 0x43, 0xc1, 0xcb, 0x81, 0xf7, 0x5f, 0xb4, 0x72, 0xbd, 0xb6, 0x7a, 0xb6, + 0xdc, 0x7f, 0x19, 0x23, 0xa7, 0x3e, 0x4f, 0x86, 0xa9, 0x05, 0xdb, 0xd2, 0xdb, 0x2d, 0xdd, 0x71, + 0xd5, 0x1f, 0x48, 0x30, 0xb3, 0xae, 0x5f, 0xea, 0x58, 0x7a, 0x1b, 0xfb, 0xf7, 0xf7, 0xf4, 0x05, + 0x5d, 0xf2, 0xc9, 0xef, 0x0b, 0xe8, 0x2b, 0x7f, 0x30, 0x30, 0x38, 0xba, 0x97, 0x11, 0xb9, 0x50, + 0x33, 0xd8, 0xe6, 0x93, 0xfa, 0x05, 0x2b, 0xf5, 0xf9, 0x9a, 0x67, 0x79, 0x8a, 0xb0, 0x28, 0x3f, + 0x2c, 0x16, 0x7e, 0x54, 0x84, 0xe4, 0xe1, 0xec, 0xca, 0x3f, 0x7f, 0x12, 0xf2, 0x8b, 0x08, 0x5b, + 0x71, 0xff, 0x5d, 0x82, 0x89, 0x3a, 0x72, 0xb1, 0x05, 0x77, 0x1b, 0xe7, 0x29, 0xdc, 0xc6, 0x19, + 0x42, 0x27, 0x76, 0xff, 0xdd, 0x9b, 0xac, 0x33, 0xe7, 0xad, 0xf1, 0x73, 0x02, 0x8f, 0x44, 0x52, + 0xee, 0x3c, 0x2d, 0xf3, 0x40, 0x1e, 0x89, 0xb1, 0xa4, 0xd2, 0xf7, 0xb5, 0x7a, 0xaf, 0x44, 0x5d, + 0xab, 0x98, 0x5e, 0xef, 0xf5, 0xac, 0x7e, 0xc6, 0x7a, 0x9b, 0x51, 0xe6, 0x63, 0x9c, 0xa3, 0x9e, + 0x08, 0x13, 0x44, 0xe6, 0xfe, 0x7c, 0xb4, 0xd7, 0x4f, 0x81, 0x90, 0xc0, 0x67, 0xaf, 0xfd, 0x9c, + 0x82, 0x2e, 0x6a, 0xd1, 0x85, 0x8f, 0x25, 0x06, 0xc1, 0x4c, 0x15, 0xb9, 0x17, 0x2d, 0xfb, 0x42, + 0xdd, 0xd5, 0x5d, 0xa4, 0xfe, 0xb3, 0x04, 0x72, 0x1d, 0xb9, 0x6c, 0xf4, 0x93, 0x2a, 0x1c, 0x23, + 0x15, 0xa2, 0x19, 0x71, 0xff, 0x4d, 0x2a, 0x72, 0x4d, 0x5f, 0x21, 0x30, 0xf9, 0xb4, 0xfd, 0xbf, + 0xaa, 0xbf, 0xda, 0x37, 0xe8, 0x93, 0xd4, 0x67, 0xd2, 0x40, 0x25, 0xc3, 0x32, 0xe8, 0x29, 0x58, + 0x84, 0x9e, 0x7e, 0x44, 0xc8, 0xac, 0x16, 0xa3, 0x79, 0x38, 0x5d, 0xc1, 0xc7, 0xaf, 0x80, 0x6c, + 0x69, 0x5b, 0x77, 0xd5, 0xf7, 0xc8, 0x00, 0xc5, 0x76, 0x7b, 0x8d, 0xf8, 0x80, 0xb3, 0x0e, 0x69, + 0x67, 0x60, 0xa6, 0xb5, 0xad, 0x87, 0x77, 0x9b, 0x90, 0xfe, 0x80, 0x4b, 0x53, 0x9e, 0x14, 0x3a, + 0x93, 0x13, 0xa9, 0xaa, 0x3d, 0x30, 0x79, 0x65, 0x50, 0xda, 0x81, 0xa3, 0x39, 0x1f, 0x0a, 0x33, + 0xf6, 0x08, 0x9d, 0xf7, 0xfb, 0x7c, 0xc8, 0x5e, 0xf4, 0x1c, 0x8e, 0x92, 0x0e, 0x0e, 0xd8, 0x84, + 0x09, 0x09, 0x4f, 0x7a, 0x8b, 0x05, 0xf4, 0x88, 0xe7, 0x6b, 0x2c, 0xa1, 0x6b, 0x95, 0x72, 0xdb, + 0xf0, 0x45, 0x4b, 0x03, 0x66, 0xa9, 0x2f, 0xce, 0x24, 0x83, 0x2f, 0x5e, 0x70, 0x77, 0xc3, 0x2c, + 0x6a, 0x1b, 0x2e, 0xf2, 0x6b, 0x49, 0x05, 0x18, 0x07, 0x31, 0xff, 0x83, 0xfa, 0x1c, 0xe1, 0xa0, + 0x6b, 0x58, 0xa0, 0xfb, 0x6b, 0x14, 0xd1, 0xfe, 0xc4, 0xc2, 0xa8, 0x89, 0xd1, 0x4c, 0x1f, 0xac, + 0xe7, 0xca, 0x70, 0xa2, 0x61, 0x6d, 0x6d, 0x75, 0x90, 0x2f, 0x26, 0x44, 0xbc, 0x33, 0x55, 0x7d, + 0x94, 0x70, 0xe1, 0x9d, 0x20, 0xeb, 0x7e, 0x23, 0x38, 0x4a, 0xe6, 0xbd, 0xf0, 0x27, 0xa6, 0x62, + 0x67, 0x51, 0x58, 0x5c, 0x7d, 0xf9, 0x8c, 0x40, 0x41, 0x2c, 0xe0, 0xb3, 0x30, 0xd9, 0xf4, 0x81, + 0xf8, 0xb2, 0x04, 0xb3, 0xe4, 0xe6, 0x4a, 0x5f, 0x41, 0xef, 0x1d, 0x21, 0x00, 0xea, 0x0f, 0x32, + 0xa2, 0x7e, 0xb6, 0x58, 0x26, 0x1c, 0x27, 0x11, 0x22, 0x16, 0x0b, 0xaa, 0x32, 0x90, 0x5c, 0xfa, + 0xa2, 0xfd, 0x23, 0x19, 0xa6, 0x97, 0x91, 0xdf, 0xd2, 0x9c, 0xc4, 0x3d, 0xd1, 0x19, 0x98, 0xc1, + 0xd7, 0xb7, 0xd5, 0xe8, 0x31, 0x49, 0xb2, 0x6a, 0xc6, 0xa5, 0x29, 0xd7, 0xc1, 0xec, 0x79, 0xb4, + 0x69, 0xd9, 0xa8, 0xc6, 0x9d, 0xa5, 0xe4, 0x13, 0x23, 0xc2, 0xd3, 0x71, 0x71, 0xd0, 0x16, 0x78, + 0x6c, 0x6e, 0xda, 0x2f, 0x4c, 0xa6, 0x2a, 0x11, 0x63, 0xce, 0x93, 0x61, 0x92, 0x22, 0xef, 0x9b, + 0x69, 0x71, 0xfd, 0x62, 0x90, 0x57, 0x7d, 0x53, 0x80, 0x68, 0x99, 0x43, 0xf4, 0x09, 0x49, 0x98, + 0x18, 0xcb, 0xfd, 0xee, 0x05, 0xa6, 0xfc, 0x85, 0x4b, 0x95, 0xb6, 0xa3, 0xae, 0x25, 0xc3, 0xf4, + 0x34, 0x40, 0xd0, 0x38, 0xfc, 0xb0, 0x16, 0x4c, 0x0a, 0x1f, 0xb9, 0x3e, 0xf6, 0xa0, 0x5e, 0xaf, + 0x38, 0x30, 0x3b, 0x23, 0x06, 0x46, 0xec, 0x80, 0x9f, 0x08, 0x27, 0xe9, 0xa3, 0xf3, 0x59, 0x19, + 0x4e, 0x04, 0xe7, 0x8f, 0x56, 0x75, 0x27, 0x6c, 0x77, 0xa5, 0x64, 0x10, 0x71, 0x07, 0x3e, 0x82, + 0xc6, 0xf2, 0xdd, 0x64, 0x63, 0x46, 0x5f, 0x4e, 0x46, 0x8b, 0x8e, 0x72, 0x13, 0x1c, 0x33, 0x77, + 0x77, 0x02, 0xa9, 0xe3, 0x16, 0x4f, 0x5b, 0xf8, 0xfe, 0x0f, 0x49, 0x46, 0x26, 0x11, 0xe6, 0xc7, + 0x32, 0xa7, 0xe4, 0x8e, 0x74, 0x3d, 0x3e, 0x11, 0x8c, 0xea, 0x3f, 0x65, 0x12, 0xf5, 0x6e, 0x83, + 0xcf, 0x7c, 0x25, 0xe8, 0xa5, 0x0e, 0xf1, 0xc0, 0xd7, 0x99, 0x09, 0xc8, 0x95, 0x77, 0xba, 0xee, + 0xa5, 0x33, 0x8f, 0x81, 0xd9, 0xba, 0x6b, 0x23, 0x7d, 0x87, 0xd9, 0x19, 0x70, 0xad, 0x0b, 0xc8, + 0xf4, 0x77, 0x06, 0xf0, 0xcb, 0xed, 0xb7, 0xc1, 0x84, 0x69, 0x35, 0xf5, 0x5d, 0x77, 0x5b, 0xb9, + 0x7a, 0xdf, 0x91, 0x7a, 0x0a, 0x7e, 0x8d, 0xc6, 0x30, 0xfa, 0xfa, 0x1d, 0x78, 0x6d, 0x38, 0x6f, + 0x5a, 0xc5, 0x5d, 0x77, 0x7b, 0xe1, 0xaa, 0x4f, 0xff, 0xf5, 0xe9, 0xcc, 0xe7, 0xfe, 0xfa, 0x74, + 0xe6, 0x6b, 0x7f, 0x7d, 0x3a, 0xf3, 0x8b, 0xdf, 0x38, 0x7d, 0xe4, 0x73, 0xdf, 0x38, 0x7d, 0xe4, + 0xcb, 0xdf, 0x38, 0x7d, 0xe4, 0xa7, 0xa4, 0xee, 0xf9, 0xf3, 0x79, 0x4c, 0xe5, 0x89, 0xff, 0x5f, + 0x00, 0x00, 0x00, 0xff, 0xff, 0x89, 0x96, 0x56, 0xe0, 0x24, 0x00, 0x02, 0x00, } func (m *Rpc) Marshal() (dAtA []byte, err error) { @@ -75942,6 +76164,136 @@ func (m *RpcAccountRevertDeletionResponseError) MarshalToSizedBuffer(dAtA []byte return len(dAtA) - i, nil } +func (m *RpcAccountMigrate) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcAccountMigrate) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcAccountMigrate) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *RpcAccountMigrateRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcAccountMigrateRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcAccountMigrateRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.RootPath) > 0 { + i -= len(m.RootPath) + copy(dAtA[i:], m.RootPath) + i = encodeVarintCommands(dAtA, i, uint64(len(m.RootPath))) + i-- + dAtA[i] = 0x12 + } + if len(m.Id) > 0 { + i -= len(m.Id) + copy(dAtA[i:], m.Id) + i = encodeVarintCommands(dAtA, i, uint64(len(m.Id))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *RpcAccountMigrateResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcAccountMigrateResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcAccountMigrateResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Error != nil { + { + size, err := m.Error.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCommands(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *RpcAccountMigrateResponseError) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcAccountMigrateResponseError) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcAccountMigrateResponseError) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Description) > 0 { + i -= len(m.Description) + copy(dAtA[i:], m.Description) + i = encodeVarintCommands(dAtA, i, uint64(len(m.Description))) + i-- + dAtA[i] = 0x12 + } + if m.Code != 0 { + i = encodeVarintCommands(dAtA, i, uint64(m.Code)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + func (m *RpcAccountSelect) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -118030,6 +118382,61 @@ func (m *RpcAccountRevertDeletionResponseError) Size() (n int) { return n } +func (m *RpcAccountMigrate) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *RpcAccountMigrateRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Id) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + l = len(m.RootPath) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + +func (m *RpcAccountMigrateResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Error != nil { + l = m.Error.Size() + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + +func (m *RpcAccountMigrateResponseError) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Code != 0 { + n += 1 + sovCommands(uint64(m.Code)) + } + l = len(m.Description) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + func (m *RpcAccountSelect) Size() (n int) { if m == nil { return 0 @@ -145652,6 +146059,357 @@ func (m *RpcAccountRevertDeletionResponseError) Unmarshal(dAtA []byte) error { } return nil } +func (m *RpcAccountMigrate) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Migrate: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Migrate: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcAccountMigrateRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Request: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Request: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Id = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RootPath", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RootPath = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcAccountMigrateResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Response: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Response: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Error == nil { + m.Error = &RpcAccountMigrateResponseError{} + } + if err := m.Error.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcAccountMigrateResponseError) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Error: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Error: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Code", wireType) + } + m.Code = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Code |= RpcAccountMigrateResponseErrorCode(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *RpcAccountSelect) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/pb/protos/commands.proto b/pb/protos/commands.proto index bb7ea7b88..8136f9a89 100644 --- a/pb/protos/commands.proto +++ b/pb/protos/commands.proto @@ -811,6 +811,31 @@ message Rpc { } } + message Migrate { + message Request { + option (no_auth) = true; + string id = 1; // Id of a selected account + string rootPath = 2; + } + + message Response { + Error error = 1; + message Error { + Code code = 1; + string description = 2; + + enum Code { + NULL = 0; // No error + UNKNOWN_ERROR = 1; // Any other errors + BAD_INPUT = 2; // Id or root path is wrong + + ACCOUNT_NOT_FOUND = 101; + // TODO: [storage] Add specific error codes for migration problems + } + } + } + } + message Select { /** * Front end to middleware request-to-launch-a specific account using account id and a root path diff --git a/pb/protos/service/service.proto b/pb/protos/service/service.proto index 56a5f4706..46cde8d59 100644 --- a/pb/protos/service/service.proto +++ b/pb/protos/service/service.proto @@ -40,6 +40,7 @@ service ClientCommands { rpc AccountDelete (anytype.Rpc.Account.Delete.Request) returns (anytype.Rpc.Account.Delete.Response); rpc AccountRevertDeletion (anytype.Rpc.Account.RevertDeletion.Request) returns (anytype.Rpc.Account.RevertDeletion.Response); rpc AccountSelect (anytype.Rpc.Account.Select.Request) returns (anytype.Rpc.Account.Select.Response); + rpc AccountMigrate (anytype.Rpc.Account.Migrate.Request) returns (anytype.Rpc.Account.Migrate.Response); rpc AccountEnableLocalNetworkSync (anytype.Rpc.Account.EnableLocalNetworkSync.Request) returns (anytype.Rpc.Account.EnableLocalNetworkSync.Response); rpc AccountStop (anytype.Rpc.Account.Stop.Request) returns (anytype.Rpc.Account.Stop.Response); rpc AccountMove (anytype.Rpc.Account.Move.Request) returns (anytype.Rpc.Account.Move.Response); diff --git a/pb/service/service.pb.go b/pb/service/service.pb.go index 6b5274431..0122fe5b2 100644 --- a/pb/service/service.pb.go +++ b/pb/service/service.pb.go @@ -26,337 +26,338 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package func init() { proto.RegisterFile("pb/protos/service/service.proto", fileDescriptor_93a29dc403579097) } var fileDescriptor_93a29dc403579097 = []byte{ - // 5279 bytes of a gzipped FileDescriptorProto + // 5295 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x9d, 0x5b, 0x6f, 0x24, 0x49, 0x56, 0xf8, 0xc7, 0x2f, 0xff, 0xf9, 0x93, 0xcb, 0x0e, 0x50, 0x03, 0xc3, 0xec, 0xb0, 0xdb, 0xb7, 0xe9, 0xb6, 0xdd, 0x6d, 0xbb, 0xdc, 0xd3, 0x3d, 0x3d, 0xb3, 0xda, 0x45, 0x42, 0x6e, 0xbb, 0xed, 0x31, 0x6b, 0xbb, 0x8d, 0xab, 0xdc, 0x2d, 0x8d, 0x84, 0x44, 0x38, 0x2b, 0x5c, 0x4e, 0x9c, 0x95, 0x91, 0x9b, 0x19, 0x55, 0xee, 0x5a, 0x04, 0x02, 0x81, 0x40, 0x20, 0x10, 0x2b, 0x6e, 0xaf, 0x48, - 0x7c, 0x1a, 0x1e, 0xf7, 0x91, 0x47, 0x34, 0x23, 0x1e, 0xf8, 0x16, 0x28, 0x23, 0x23, 0xe3, 0x72, - 0xf2, 0x9c, 0xc8, 0xf4, 0x3e, 0x75, 0xab, 0xce, 0xef, 0x9c, 0x13, 0xd7, 0x13, 0x27, 0x22, 0x23, - 0xd3, 0xd1, 0xdd, 0xfc, 0x62, 0x3b, 0x2f, 0x84, 0x14, 0xe5, 0x76, 0xc9, 0x8b, 0x45, 0x12, 0xf3, - 0xe6, 0xdf, 0xa1, 0xfa, 0x79, 0xf0, 0x3e, 0xcb, 0x96, 0x72, 0x99, 0xf3, 0x4f, 0x3e, 0xb6, 0x64, - 0x2c, 0x66, 0x33, 0x96, 0x4d, 0xca, 0x1a, 0xf9, 0xe4, 0x23, 0x2b, 0xe1, 0x0b, 0x9e, 0x49, 0xfd, - 0xfb, 0xb3, 0xff, 0xf9, 0xdf, 0x95, 0xe8, 0x83, 0xdd, 0x34, 0xe1, 0x99, 0xdc, 0xd5, 0x1a, 0x83, - 0xaf, 0xa3, 0xef, 0xee, 0xe4, 0xf9, 0x01, 0x97, 0x6f, 0x78, 0x51, 0x26, 0x22, 0x1b, 0x7c, 0x3a, - 0xd4, 0x0e, 0x86, 0x67, 0x79, 0x3c, 0xdc, 0xc9, 0xf3, 0xa1, 0x15, 0x0e, 0xcf, 0xf8, 0x4f, 0xe7, - 0xbc, 0x94, 0x9f, 0x3c, 0x0c, 0x43, 0x65, 0x2e, 0xb2, 0x92, 0x0f, 0x2e, 0xa3, 0xdf, 0xd8, 0xc9, - 0xf3, 0x11, 0x97, 0x7b, 0xbc, 0xaa, 0xc0, 0x48, 0x32, 0xc9, 0x07, 0x6b, 0x2d, 0x55, 0x1f, 0x30, - 0x3e, 0xd6, 0xbb, 0x41, 0xed, 0x67, 0x1c, 0x7d, 0xa7, 0xf2, 0x73, 0x35, 0x97, 0x13, 0x71, 0x93, - 0x0d, 0xee, 0xb7, 0x15, 0xb5, 0xc8, 0xd8, 0x7e, 0x10, 0x42, 0xb4, 0xd5, 0xb7, 0xd1, 0xaf, 0xbe, - 0x65, 0x69, 0xca, 0xe5, 0x6e, 0xc1, 0xab, 0x82, 0xfb, 0x3a, 0xb5, 0x68, 0x58, 0xcb, 0x8c, 0xdd, - 0x4f, 0x83, 0x8c, 0x36, 0xfc, 0x75, 0xf4, 0xdd, 0x5a, 0x72, 0xc6, 0x63, 0xb1, 0xe0, 0xc5, 0x00, - 0xd5, 0xd2, 0x42, 0xa2, 0xc9, 0x5b, 0x10, 0xb4, 0xbd, 0x2b, 0xb2, 0x05, 0x2f, 0x24, 0x6e, 0x5b, - 0x0b, 0xc3, 0xb6, 0x2d, 0xa4, 0x6d, 0xff, 0xed, 0x4a, 0xf4, 0xfd, 0x9d, 0x38, 0x16, 0xf3, 0x4c, - 0x1e, 0x89, 0x98, 0xa5, 0x47, 0x49, 0x76, 0x7d, 0xc2, 0x6f, 0x76, 0xaf, 0x2a, 0x3e, 0x9b, 0xf2, - 0xc1, 0x73, 0xbf, 0x55, 0x6b, 0x74, 0x68, 0xd8, 0xa1, 0x0b, 0x1b, 0xdf, 0x9f, 0xdf, 0x4e, 0x49, - 0x97, 0xe5, 0x1f, 0x57, 0xa2, 0x3b, 0xb0, 0x2c, 0x23, 0x91, 0x2e, 0xb8, 0x2d, 0xcd, 0x8b, 0x0e, - 0xc3, 0x3e, 0x6e, 0xca, 0xf3, 0xc5, 0x6d, 0xd5, 0x74, 0x89, 0xd2, 0xe8, 0x43, 0x77, 0xb8, 0x8c, - 0x78, 0xa9, 0xa6, 0xd3, 0x63, 0x7a, 0x44, 0x68, 0xc4, 0x78, 0x7e, 0xd2, 0x07, 0xd5, 0xde, 0x92, - 0x68, 0xa0, 0xbd, 0xa5, 0xa2, 0x34, 0xce, 0xd6, 0x51, 0x0b, 0x0e, 0x61, 0x7c, 0x3d, 0xee, 0x41, - 0x6a, 0x57, 0x7f, 0x14, 0xfd, 0xda, 0x5b, 0x51, 0x5c, 0x97, 0x39, 0x8b, 0xb9, 0x9e, 0x0a, 0x8f, - 0x7c, 0xed, 0x46, 0x0a, 0x67, 0xc3, 0x6a, 0x17, 0xe6, 0x0c, 0xda, 0x46, 0xf8, 0x3a, 0xe7, 0x30, - 0x06, 0x59, 0xc5, 0x4a, 0x48, 0x0d, 0x5a, 0x08, 0x69, 0xdb, 0xd7, 0xd1, 0xc0, 0xda, 0xbe, 0xf8, - 0x63, 0x1e, 0xcb, 0x9d, 0xc9, 0x04, 0xf6, 0x8a, 0xd5, 0x55, 0xc4, 0x70, 0x67, 0x32, 0xa1, 0x7a, - 0x05, 0x47, 0xb5, 0xb3, 0x9b, 0xe8, 0x23, 0xe0, 0xec, 0x28, 0x29, 0x95, 0xc3, 0xad, 0xb0, 0x15, - 0x8d, 0x19, 0xa7, 0xc3, 0xbe, 0xb8, 0x76, 0xfc, 0xe7, 0x2b, 0xd1, 0xf7, 0x10, 0xcf, 0x67, 0x7c, - 0x26, 0x16, 0x7c, 0xf0, 0xb4, 0xdb, 0x5a, 0x4d, 0x1a, 0xff, 0x9f, 0xdd, 0x42, 0x03, 0x19, 0x26, - 0x23, 0x9e, 0xf2, 0x58, 0x92, 0xc3, 0xa4, 0x16, 0x77, 0x0e, 0x13, 0x83, 0x39, 0x33, 0xac, 0x11, - 0x1e, 0x70, 0xb9, 0x3b, 0x2f, 0x0a, 0x9e, 0x49, 0xb2, 0x2f, 0x2d, 0xd2, 0xd9, 0x97, 0x1e, 0x8a, - 0xd4, 0xe7, 0x80, 0xcb, 0x9d, 0x34, 0x25, 0xeb, 0x53, 0x8b, 0x3b, 0xeb, 0x63, 0x30, 0xed, 0x21, - 0x8e, 0x7e, 0xdd, 0x69, 0x31, 0x79, 0x98, 0x5d, 0x8a, 0x01, 0xdd, 0x16, 0x4a, 0x6e, 0x7c, 0xac, - 0x75, 0x72, 0x48, 0x35, 0x5e, 0xbd, 0xcb, 0x45, 0x41, 0x77, 0x4b, 0x2d, 0xee, 0xac, 0x86, 0xc1, - 0xb4, 0x87, 0x3f, 0x8c, 0x3e, 0xd0, 0x51, 0xb2, 0x59, 0xcf, 0x1e, 0xa2, 0x21, 0x14, 0x2e, 0x68, - 0x8f, 0x3a, 0x28, 0x1b, 0x1c, 0xb4, 0x4c, 0x07, 0x9f, 0x4f, 0x51, 0x3d, 0x10, 0x7a, 0x1e, 0x86, - 0xa1, 0x96, 0xed, 0x3d, 0x9e, 0x72, 0xd2, 0x76, 0x2d, 0xec, 0xb0, 0x6d, 0x20, 0x6d, 0xbb, 0x88, - 0x7e, 0xcb, 0x34, 0x4b, 0xb5, 0x8e, 0x2a, 0x79, 0x15, 0xa4, 0x37, 0x88, 0x7a, 0xbb, 0x90, 0xf1, - 0xb5, 0xd9, 0x0f, 0x6e, 0xd5, 0x47, 0xcf, 0x40, 0xbc, 0x3e, 0x60, 0xfe, 0x3d, 0x0c, 0x43, 0xda, - 0xf6, 0xdf, 0xad, 0x44, 0x3f, 0xd0, 0xb2, 0x57, 0x19, 0xbb, 0x48, 0xb9, 0x5a, 0x12, 0x4f, 0xb8, - 0xbc, 0x11, 0xc5, 0xf5, 0x68, 0x99, 0xc5, 0xc4, 0xf2, 0x8f, 0xc3, 0x1d, 0xcb, 0x3f, 0xa9, 0xe4, - 0x64, 0x7c, 0xba, 0xa2, 0x52, 0xe4, 0x30, 0xe3, 0x6b, 0x6a, 0x20, 0x45, 0x4e, 0x65, 0x7c, 0x3e, - 0xd2, 0xb2, 0x7a, 0x5c, 0x85, 0x4d, 0xdc, 0xea, 0xb1, 0x1b, 0x27, 0x1f, 0x84, 0x10, 0x1b, 0xb6, - 0x9a, 0x01, 0x2c, 0xb2, 0xcb, 0x64, 0x7a, 0x9e, 0x4f, 0xaa, 0x61, 0xfc, 0x18, 0x1f, 0xa1, 0x0e, - 0x42, 0x84, 0x2d, 0x02, 0xd5, 0xde, 0xfe, 0xc1, 0x26, 0x46, 0x7a, 0x2a, 0xed, 0x17, 0x62, 0x76, - 0xc4, 0xa7, 0x2c, 0x5e, 0xea, 0xf9, 0xff, 0x79, 0x68, 0xe2, 0x41, 0xda, 0x14, 0xe2, 0xc5, 0x2d, - 0xb5, 0x74, 0x79, 0xfe, 0x7d, 0x25, 0x7a, 0xd8, 0x54, 0xff, 0x8a, 0x65, 0x53, 0xae, 0xfb, 0xb3, - 0x2e, 0xfd, 0x4e, 0x36, 0x39, 0xe3, 0xa5, 0x64, 0x85, 0x1c, 0xfc, 0x08, 0xaf, 0x64, 0x48, 0xc7, - 0x94, 0xed, 0xc7, 0xbf, 0x94, 0xae, 0xed, 0xf5, 0x51, 0x15, 0xd8, 0x74, 0x08, 0xf0, 0x7b, 0x5d, - 0x49, 0x60, 0x00, 0x78, 0x10, 0x42, 0x6c, 0xaf, 0x2b, 0xc1, 0x61, 0xb6, 0x48, 0x24, 0x3f, 0xe0, - 0x19, 0x2f, 0xda, 0xbd, 0x5e, 0xab, 0xfa, 0x08, 0xd1, 0xeb, 0x04, 0x6a, 0x83, 0x8d, 0xe7, 0xcd, - 0x2c, 0x8e, 0x1b, 0x01, 0x23, 0xad, 0xe5, 0x71, 0xb3, 0x1f, 0x6c, 0x77, 0x77, 0x8e, 0xcf, 0x33, - 0xbe, 0x10, 0xd7, 0x70, 0x77, 0xe7, 0x9a, 0xa8, 0x01, 0x62, 0x77, 0x87, 0x82, 0x76, 0x05, 0x73, - 0xfc, 0xbc, 0x49, 0xf8, 0x0d, 0x58, 0xc1, 0x5c, 0xe5, 0x4a, 0x4c, 0xac, 0x60, 0x08, 0xa6, 0x3d, - 0x9c, 0x44, 0xbf, 0xa2, 0x84, 0xbf, 0x2f, 0x92, 0x6c, 0x70, 0x17, 0x51, 0xaa, 0x04, 0xc6, 0xea, - 0x3d, 0x1a, 0x00, 0x25, 0xae, 0x7e, 0xdd, 0x65, 0x59, 0xcc, 0x53, 0xb4, 0xc4, 0x56, 0x1c, 0x2c, - 0xb1, 0x87, 0xd9, 0xd4, 0x41, 0x09, 0xab, 0xf8, 0x35, 0xba, 0x62, 0x45, 0x92, 0x4d, 0x07, 0x98, - 0xae, 0x23, 0x27, 0x52, 0x07, 0x8c, 0x03, 0x43, 0x58, 0x2b, 0xee, 0xe4, 0x79, 0x51, 0x85, 0x45, - 0x6c, 0x08, 0xfb, 0x48, 0x70, 0x08, 0xb7, 0x50, 0xdc, 0xdb, 0x1e, 0x8f, 0xd3, 0x24, 0x0b, 0x7a, - 0xd3, 0x48, 0x1f, 0x6f, 0x16, 0x05, 0x83, 0xf7, 0x88, 0xb3, 0x05, 0x6f, 0x6a, 0x86, 0xb5, 0x8c, - 0x0b, 0x04, 0x07, 0x2f, 0x00, 0xed, 0x3e, 0x4d, 0x89, 0x8f, 0xd9, 0x35, 0xaf, 0x1a, 0x98, 0x57, - 0xeb, 0xda, 0x00, 0xd3, 0xf7, 0x08, 0x62, 0x9f, 0x86, 0x93, 0xda, 0xd5, 0x3c, 0xfa, 0x48, 0xc9, - 0x4f, 0x59, 0x21, 0x93, 0x38, 0xc9, 0x59, 0xd6, 0xe4, 0xff, 0xd8, 0xbc, 0x6e, 0x51, 0xc6, 0xe5, - 0x56, 0x4f, 0x5a, 0xbb, 0xfd, 0xb7, 0x95, 0xe8, 0x3e, 0xf4, 0x7b, 0xca, 0x8b, 0x59, 0xa2, 0xb6, - 0x91, 0x65, 0x1d, 0x84, 0x07, 0x5f, 0x86, 0x8d, 0xb6, 0x14, 0x4c, 0x69, 0x7e, 0x78, 0x7b, 0x45, - 0x9b, 0x0c, 0x8d, 0x74, 0x6a, 0xfd, 0xba, 0x98, 0xb4, 0x8e, 0x59, 0x46, 0x4d, 0xbe, 0xac, 0x84, - 0x44, 0x32, 0xd4, 0x82, 0xc0, 0x0c, 0x3f, 0xcf, 0xca, 0xc6, 0x3a, 0x36, 0xc3, 0xad, 0x38, 0x38, - 0xc3, 0x3d, 0x4c, 0x7b, 0xf8, 0x83, 0x28, 0xaa, 0x37, 0x5b, 0x6a, 0x43, 0xec, 0xc7, 0x1c, 0xbd, - 0x0b, 0xf3, 0x76, 0xc3, 0xf7, 0x03, 0x84, 0x5d, 0xe8, 0xea, 0xdf, 0xd5, 0x3e, 0x7f, 0x80, 0x6a, - 0x28, 0x11, 0xb1, 0xd0, 0x01, 0x04, 0x16, 0x74, 0x74, 0x25, 0x6e, 0xf0, 0x82, 0x56, 0x92, 0x70, - 0x41, 0x35, 0x61, 0x4f, 0xde, 0x74, 0x41, 0xb1, 0x93, 0xb7, 0xa6, 0x18, 0xa1, 0x93, 0x37, 0xc8, - 0x68, 0xc3, 0x22, 0xfa, 0x4d, 0xd7, 0xf0, 0x4b, 0x21, 0xae, 0x67, 0xac, 0xb8, 0x1e, 0x3c, 0xa1, - 0x95, 0x1b, 0xc6, 0x38, 0xda, 0xe8, 0xc5, 0xda, 0xa0, 0xe6, 0x3a, 0xac, 0xd2, 0xa4, 0xf3, 0x22, - 0x05, 0x41, 0xcd, 0xb3, 0xa1, 0x11, 0x22, 0xa8, 0x11, 0xa8, 0x1d, 0x95, 0xae, 0xb7, 0x11, 0x87, - 0x7b, 0x3d, 0x4f, 0x7d, 0xc4, 0xa9, 0xbd, 0x1e, 0x82, 0xc1, 0x21, 0x74, 0x50, 0xb0, 0xfc, 0x0a, - 0x1f, 0x42, 0x4a, 0x14, 0x1e, 0x42, 0x0d, 0x02, 0xfb, 0x7b, 0xc4, 0x59, 0x11, 0x5f, 0xe1, 0xfd, - 0x5d, 0xcb, 0xc2, 0xfd, 0x6d, 0x18, 0xd8, 0xdf, 0xb5, 0xe0, 0x6d, 0x22, 0xaf, 0x8e, 0xb9, 0x64, - 0x78, 0x7f, 0xfb, 0x4c, 0xb8, 0xbf, 0x5b, 0xac, 0xcd, 0xc3, 0x5c, 0x87, 0xa3, 0xf9, 0x45, 0x19, - 0x17, 0xc9, 0x05, 0x1f, 0x04, 0xac, 0x18, 0x88, 0xc8, 0xc3, 0x48, 0x58, 0xfb, 0xfc, 0xf9, 0x4a, - 0x74, 0xb7, 0xe9, 0x76, 0x51, 0x96, 0x3a, 0xe6, 0xf9, 0xee, 0x5f, 0xe0, 0xfd, 0x4b, 0xe0, 0xc4, - 0x59, 0x68, 0x0f, 0x35, 0x67, 0x4d, 0xc0, 0x8b, 0x74, 0x9e, 0x95, 0xa6, 0x50, 0x5f, 0xf6, 0xb1, - 0xee, 0x28, 0x10, 0x6b, 0x42, 0x2f, 0x45, 0xbb, 0x1c, 0xeb, 0xfe, 0x69, 0x64, 0x87, 0x93, 0x12, - 0x2c, 0xc7, 0x4d, 0x7b, 0x3b, 0x04, 0xb1, 0x1c, 0xe3, 0x24, 0x1c, 0x0a, 0x07, 0x85, 0x98, 0xe7, - 0x65, 0xc7, 0x50, 0x00, 0x50, 0x78, 0x28, 0xb4, 0x61, 0xed, 0xf3, 0x5d, 0xf4, 0xdb, 0xee, 0xf0, - 0x73, 0x1b, 0x7b, 0x8b, 0x1e, 0x53, 0x58, 0x13, 0x0f, 0xfb, 0xe2, 0x36, 0x21, 0x6d, 0x3c, 0xcb, - 0x3d, 0x2e, 0x59, 0x92, 0x96, 0x83, 0x55, 0xdc, 0x46, 0x23, 0x27, 0x12, 0x52, 0x8c, 0x83, 0xf1, - 0x6d, 0x6f, 0x9e, 0xa7, 0x49, 0xdc, 0x3e, 0x89, 0xd6, 0xba, 0x46, 0x1c, 0x8e, 0x6f, 0x2e, 0x06, - 0xe3, 0x75, 0xb5, 0xe4, 0xab, 0xff, 0x8c, 0x97, 0x39, 0xc7, 0xe3, 0xb5, 0x87, 0x84, 0xe3, 0x35, - 0x44, 0x61, 0x7d, 0x46, 0x5c, 0x1e, 0xb1, 0xa5, 0x98, 0x13, 0xf1, 0xda, 0x88, 0xc3, 0xf5, 0x71, - 0x31, 0x9b, 0x13, 0x1a, 0x0f, 0x87, 0x99, 0xe4, 0x45, 0xc6, 0xd2, 0xfd, 0x94, 0x4d, 0xcb, 0x01, - 0x11, 0x63, 0x7c, 0x8a, 0xc8, 0x09, 0x69, 0x1a, 0x69, 0xc6, 0xc3, 0x72, 0x9f, 0x2d, 0x44, 0x91, - 0x48, 0xba, 0x19, 0x2d, 0xd2, 0xd9, 0x8c, 0x1e, 0x8a, 0x7a, 0xdb, 0x29, 0xe2, 0xab, 0x64, 0xc1, - 0x27, 0x01, 0x6f, 0x0d, 0xd2, 0xc3, 0x9b, 0x83, 0x22, 0x9d, 0x36, 0x12, 0xf3, 0x22, 0xe6, 0x64, - 0xa7, 0xd5, 0xe2, 0xce, 0x4e, 0x33, 0x98, 0xf6, 0xf0, 0x57, 0x2b, 0xd1, 0xef, 0xd4, 0x52, 0xf7, - 0x78, 0x78, 0x8f, 0x95, 0x57, 0x17, 0x82, 0x15, 0x93, 0xc1, 0x67, 0x98, 0x1d, 0x14, 0x35, 0xae, - 0x9f, 0xdd, 0x46, 0x05, 0x36, 0xeb, 0x51, 0x52, 0x3a, 0x33, 0x0e, 0x6d, 0x56, 0x0f, 0x09, 0x37, - 0x2b, 0x44, 0x61, 0x00, 0x51, 0xf2, 0xfa, 0x28, 0x66, 0x95, 0xd4, 0xf7, 0xcf, 0x63, 0xd6, 0x3a, - 0x39, 0x18, 0x1f, 0x2b, 0xa1, 0x3f, 0x5a, 0xb6, 0x28, 0x1b, 0xf8, 0x88, 0x19, 0xf6, 0xc5, 0x49, - 0xcf, 0x66, 0x56, 0x84, 0x3d, 0xb7, 0x66, 0xc6, 0xb0, 0x2f, 0x4e, 0x78, 0x76, 0xc2, 0x5a, 0xc8, - 0x33, 0x12, 0xda, 0x86, 0x7d, 0x71, 0x98, 0x7d, 0x69, 0xa6, 0x59, 0x17, 0x9e, 0x04, 0xec, 0xc0, - 0xb5, 0x61, 0xa3, 0x17, 0xab, 0x1d, 0xfe, 0xcd, 0x4a, 0xf4, 0x7d, 0xeb, 0xf1, 0x58, 0x4c, 0x92, - 0xcb, 0x65, 0x0d, 0xbd, 0x61, 0xe9, 0x9c, 0x97, 0x83, 0x67, 0x94, 0xb5, 0x36, 0x6b, 0x4a, 0xf0, - 0xfc, 0x56, 0x3a, 0x70, 0xee, 0xec, 0xe4, 0x79, 0xba, 0x1c, 0xf3, 0x59, 0x9e, 0x92, 0x73, 0xc7, - 0x43, 0xc2, 0x73, 0x07, 0xa2, 0x30, 0x2b, 0x1f, 0x8b, 0x2a, 0xe7, 0x47, 0xb3, 0x72, 0x25, 0x0a, - 0x67, 0xe5, 0x0d, 0x02, 0x73, 0xa5, 0xb1, 0xd8, 0x15, 0x69, 0xca, 0x63, 0xd9, 0x7e, 0xc4, 0x6c, - 0x34, 0x2d, 0x11, 0xce, 0x95, 0x00, 0x69, 0x4f, 0x63, 0x9a, 0x3d, 0x24, 0x2b, 0xf8, 0xcb, 0xe5, - 0x51, 0x92, 0x5d, 0x0f, 0xf0, 0xb4, 0xc0, 0x02, 0xc4, 0x69, 0x0c, 0x0a, 0xc2, 0xbd, 0xea, 0x79, - 0x36, 0x11, 0xf8, 0x5e, 0xb5, 0x92, 0x84, 0xf7, 0xaa, 0x9a, 0x80, 0x26, 0xcf, 0x38, 0x65, 0xb2, - 0x92, 0x84, 0x4d, 0x6a, 0x02, 0x0b, 0x85, 0xfa, 0xcc, 0x9e, 0x0c, 0x85, 0xe0, 0x94, 0x7e, 0xad, - 0x93, 0x83, 0x23, 0xb4, 0xd9, 0xb4, 0xee, 0x73, 0x19, 0x5f, 0xe1, 0x23, 0xd4, 0x43, 0xc2, 0x23, - 0x14, 0xa2, 0xb0, 0x4a, 0x63, 0x61, 0x36, 0xdd, 0xab, 0xf8, 0xf8, 0x68, 0x6d, 0xb8, 0xd7, 0x3a, - 0x39, 0xb8, 0x8d, 0x3c, 0x9c, 0xa9, 0x36, 0x43, 0x07, 0x79, 0x2d, 0x0b, 0x6f, 0x23, 0x0d, 0x03, - 0x4b, 0x5f, 0x0b, 0xaa, 0xe6, 0xc4, 0x4b, 0x6f, 0xe5, 0xe1, 0xd2, 0x7b, 0x9c, 0x76, 0xf2, 0x2f, - 0x66, 0x1b, 0x57, 0x4b, 0x4f, 0x44, 0x35, 0x47, 0xde, 0xb0, 0x34, 0x99, 0x30, 0xc9, 0xc7, 0xe2, - 0x9a, 0x67, 0xf8, 0x8e, 0x49, 0x97, 0xb6, 0xe6, 0x87, 0x9e, 0x42, 0x78, 0xc7, 0x14, 0x56, 0x84, - 0xe3, 0xa4, 0xa6, 0xcf, 0x4b, 0xbe, 0xcb, 0x4a, 0x22, 0x92, 0x79, 0x48, 0x78, 0x9c, 0x40, 0x14, - 0xe6, 0xab, 0xb5, 0xfc, 0xd5, 0xbb, 0x9c, 0x17, 0x09, 0xcf, 0x62, 0x8e, 0xe7, 0xab, 0x90, 0x0a, - 0xe7, 0xab, 0x08, 0x0d, 0xf7, 0x6a, 0x7b, 0x4c, 0xf2, 0x97, 0xcb, 0x71, 0x32, 0xe3, 0xa5, 0x64, - 0xb3, 0x1c, 0xdf, 0xab, 0x01, 0x28, 0xbc, 0x57, 0x6b, 0xc3, 0xad, 0xa3, 0x21, 0x13, 0x10, 0xdb, - 0x37, 0x53, 0x20, 0x11, 0xb8, 0x99, 0x42, 0xa0, 0xb0, 0x61, 0x2d, 0x80, 0x1e, 0x0e, 0xb7, 0xac, - 0x04, 0x0f, 0x87, 0x69, 0xba, 0x75, 0xe0, 0x66, 0x98, 0x51, 0x35, 0x35, 0x3b, 0x8a, 0x3e, 0x72, - 0xa7, 0xe8, 0x46, 0x2f, 0x16, 0x3f, 0xe1, 0x3b, 0xe3, 0x29, 0x53, 0xcb, 0x56, 0xe0, 0x18, 0xad, - 0x61, 0xfa, 0x9c, 0xf0, 0x39, 0xac, 0x76, 0xf8, 0x17, 0x2b, 0xd1, 0x27, 0x98, 0xc7, 0xd7, 0xb9, - 0xf2, 0xfb, 0xb4, 0xdb, 0x56, 0x4d, 0x12, 0x57, 0x6f, 0xc2, 0x1a, 0xba, 0x0c, 0x7f, 0x12, 0x7d, - 0xdc, 0x88, 0xec, 0xcd, 0x1c, 0x5d, 0x00, 0x3f, 0x69, 0x33, 0xe5, 0x87, 0x9c, 0x71, 0xbf, 0xdd, - 0x9b, 0xb7, 0xfb, 0x21, 0xbf, 0x5c, 0x25, 0xd8, 0x0f, 0x19, 0x1b, 0x5a, 0x4c, 0xec, 0x87, 0x10, - 0xcc, 0xce, 0x4e, 0xb7, 0x7a, 0x6f, 0x13, 0x79, 0xa5, 0xf2, 0x2d, 0x30, 0x3b, 0xbd, 0xb2, 0x1a, - 0x88, 0x98, 0x9d, 0x24, 0x0c, 0x33, 0x92, 0x06, 0xac, 0xe6, 0x26, 0x16, 0xcb, 0x8d, 0x21, 0x77, - 0x66, 0xae, 0x77, 0x83, 0x70, 0xbc, 0x36, 0x62, 0xbd, 0xf5, 0x79, 0x12, 0xb2, 0x00, 0xb6, 0x3f, - 0x1b, 0xbd, 0x58, 0xed, 0xf0, 0xcf, 0xa2, 0xef, 0xb5, 0x2a, 0xb6, 0xcf, 0x99, 0x9c, 0x17, 0x7c, - 0x32, 0xd8, 0xee, 0x28, 0x77, 0x03, 0x1a, 0xd7, 0x4f, 0xfb, 0x2b, 0xb4, 0x72, 0xf4, 0x86, 0xab, - 0x87, 0x95, 0x29, 0xc3, 0xb3, 0x90, 0x49, 0x9f, 0x0d, 0xe6, 0xe8, 0xb4, 0x4e, 0x6b, 0x9b, 0xed, - 0x8e, 0xae, 0x9d, 0x05, 0x4b, 0x52, 0xf5, 0x90, 0xee, 0xb3, 0x90, 0x51, 0x0f, 0x0d, 0x6e, 0xb3, - 0x49, 0x95, 0x56, 0x64, 0x56, 0x73, 0xdc, 0xd9, 0x9e, 0x6d, 0xd2, 0x91, 0x00, 0xd9, 0x9d, 0x6d, - 0xf5, 0xa4, 0xb5, 0x5b, 0xd9, 0x2c, 0x79, 0xd5, 0xcf, 0xee, 0x20, 0xc7, 0xbc, 0x6a, 0x55, 0x64, - 0xa4, 0x6f, 0xf5, 0xa4, 0xb5, 0xd7, 0x3f, 0x8d, 0x3e, 0x6e, 0x7b, 0xd5, 0x0b, 0xd1, 0x76, 0xa7, - 0x29, 0xb0, 0x16, 0x3d, 0xed, 0xaf, 0x60, 0xb7, 0x34, 0x5f, 0x25, 0xa5, 0x14, 0xc5, 0x72, 0x74, - 0x25, 0x6e, 0x9a, 0x1b, 0xef, 0xfe, 0x6c, 0xd5, 0xc0, 0xd0, 0x21, 0x88, 0x2d, 0x0d, 0x4e, 0xb6, - 0x5c, 0xd9, 0x9b, 0xf1, 0x25, 0xe1, 0xca, 0x21, 0x3a, 0x5c, 0xf9, 0xa4, 0x8d, 0x55, 0x4d, 0xad, - 0xec, 0x35, 0xfe, 0x35, 0xbc, 0xa8, 0xed, 0xab, 0xfc, 0xeb, 0xdd, 0xa0, 0xcd, 0x58, 0xb4, 0x78, - 0x2f, 0xb9, 0xbc, 0x34, 0x75, 0xc2, 0x4b, 0xea, 0x22, 0x44, 0xc6, 0x42, 0xa0, 0x36, 0xe9, 0xde, - 0x4f, 0x52, 0xae, 0x4e, 0xf4, 0x5f, 0x5f, 0x5e, 0xa6, 0x82, 0x4d, 0x40, 0xd2, 0x5d, 0x89, 0x87, - 0xae, 0x9c, 0x48, 0xba, 0x31, 0xce, 0x3e, 0x23, 0xae, 0xa4, 0x67, 0x3c, 0x16, 0x59, 0x9c, 0xa4, - 0xf0, 0x02, 0xa0, 0xd2, 0x34, 0x42, 0xe2, 0x19, 0x71, 0x0b, 0xb2, 0x0b, 0x63, 0x25, 0xaa, 0xa6, - 0x7d, 0x53, 0xfe, 0x47, 0x6d, 0x45, 0x47, 0x4c, 0x2c, 0x8c, 0x08, 0x66, 0xf7, 0x9e, 0x95, 0xf0, - 0x3c, 0x57, 0xc6, 0xef, 0xb5, 0xb5, 0x6a, 0x09, 0xb1, 0xf7, 0xf4, 0x09, 0xbb, 0x87, 0xaa, 0x7e, - 0xdf, 0x13, 0x37, 0x99, 0x32, 0xfa, 0xa0, 0xad, 0xd2, 0xc8, 0x88, 0x3d, 0x14, 0x64, 0xb4, 0xe1, - 0x9f, 0x44, 0xff, 0x5f, 0x19, 0x2e, 0x44, 0x3e, 0xb8, 0x83, 0x28, 0x14, 0xce, 0x5d, 0xbd, 0xbb, - 0xa4, 0xdc, 0x5e, 0x39, 0x35, 0x63, 0xe3, 0xbc, 0x64, 0x53, 0x3e, 0x78, 0x48, 0xf4, 0xb8, 0x92, - 0x12, 0x57, 0x4e, 0xdb, 0x94, 0x3f, 0x2a, 0x4e, 0xc4, 0x44, 0x5b, 0x47, 0x6a, 0x68, 0x84, 0xa1, - 0x51, 0xe1, 0x42, 0x36, 0x99, 0x39, 0x61, 0x8b, 0x64, 0x6a, 0x16, 0x9c, 0x3a, 0x6e, 0x95, 0x20, - 0x99, 0xb1, 0xcc, 0xd0, 0x81, 0x88, 0x64, 0x86, 0x84, 0xb5, 0xcf, 0x7f, 0x5e, 0x89, 0xee, 0x59, - 0xe6, 0xa0, 0x39, 0xad, 0x3b, 0xcc, 0x2e, 0x45, 0x95, 0xfa, 0x1c, 0x25, 0xd9, 0x75, 0x39, 0xf8, - 0x82, 0x32, 0x89, 0xf3, 0xa6, 0x28, 0x5f, 0xde, 0x5a, 0xcf, 0x66, 0xad, 0xcd, 0x51, 0x96, 0x7d, - 0x9e, 0x5d, 0x6b, 0x80, 0xac, 0xd5, 0x9c, 0x78, 0x41, 0x8e, 0xc8, 0x5a, 0x43, 0xbc, 0xed, 0x62, - 0xe3, 0x3c, 0x15, 0x19, 0xec, 0x62, 0x6b, 0xa1, 0x12, 0x12, 0x5d, 0xdc, 0x82, 0x6c, 0x3c, 0x6e, - 0x44, 0xf5, 0xa9, 0xcb, 0x4e, 0x9a, 0x82, 0x78, 0x6c, 0x54, 0x0d, 0x40, 0xc4, 0x63, 0x14, 0xd4, - 0x7e, 0xce, 0xa2, 0xef, 0x54, 0x4d, 0x7a, 0x5a, 0xf0, 0x45, 0xc2, 0xe1, 0xd5, 0x0b, 0x47, 0x42, - 0xcc, 0x7f, 0x9f, 0xb0, 0x33, 0xeb, 0x3c, 0x2b, 0xf3, 0x94, 0x95, 0x57, 0xfa, 0x61, 0xbc, 0x5f, - 0xe7, 0x46, 0x08, 0x1f, 0xc7, 0x3f, 0xea, 0xa0, 0x6c, 0x50, 0x6f, 0x64, 0x26, 0xc4, 0xac, 0xe2, - 0xaa, 0xad, 0x30, 0xb3, 0xd6, 0xc9, 0xd9, 0x13, 0xef, 0x03, 0x96, 0xa6, 0xbc, 0x58, 0x36, 0xb2, - 0x63, 0x96, 0x25, 0x97, 0xbc, 0x94, 0xe0, 0xc4, 0x5b, 0x53, 0x43, 0x88, 0x11, 0x27, 0xde, 0x01, - 0xdc, 0x66, 0xf3, 0xc0, 0xf3, 0x61, 0x36, 0xe1, 0xef, 0x40, 0x36, 0x0f, 0xed, 0x28, 0x86, 0xc8, - 0xe6, 0x29, 0xd6, 0x9e, 0xfc, 0xbe, 0x4c, 0x45, 0x7c, 0xad, 0x97, 0x00, 0xbf, 0x83, 0x95, 0x04, - 0xae, 0x01, 0x0f, 0x42, 0x88, 0x5d, 0x04, 0x94, 0xe0, 0x8c, 0xe7, 0x29, 0x8b, 0xe1, 0xfd, 0x9b, - 0x5a, 0x47, 0xcb, 0x88, 0x45, 0x00, 0x32, 0xa0, 0xb8, 0xfa, 0x5e, 0x0f, 0x56, 0x5c, 0x70, 0xad, - 0xe7, 0x41, 0x08, 0xb1, 0xcb, 0xa0, 0x12, 0x8c, 0xf2, 0x34, 0x91, 0x60, 0x1a, 0xd4, 0x1a, 0x4a, - 0x42, 0x4c, 0x03, 0x9f, 0x00, 0x26, 0x8f, 0x79, 0x31, 0xe5, 0xa8, 0x49, 0x25, 0x09, 0x9a, 0x6c, - 0x08, 0x7b, 0xc9, 0xb4, 0xae, 0xbb, 0xc8, 0x97, 0xe0, 0x92, 0xa9, 0xae, 0x96, 0xc8, 0x97, 0xc4, - 0x25, 0x53, 0x0f, 0x00, 0x45, 0x3c, 0x65, 0xa5, 0xc4, 0x8b, 0xa8, 0x24, 0xc1, 0x22, 0x36, 0x84, - 0x5d, 0xa3, 0xeb, 0x22, 0xce, 0x25, 0x58, 0xa3, 0x75, 0x01, 0x9c, 0x27, 0xd0, 0x77, 0x49, 0xb9, - 0x8d, 0x24, 0x75, 0xaf, 0x70, 0xb9, 0x9f, 0xf0, 0x74, 0x52, 0x82, 0x48, 0xa2, 0xdb, 0xbd, 0x91, - 0x12, 0x91, 0xa4, 0x4d, 0x81, 0xa1, 0xa4, 0xcf, 0xc7, 0xb1, 0xda, 0x81, 0xa3, 0xf1, 0x07, 0x21, - 0xc4, 0xc6, 0xa7, 0xa6, 0xd0, 0xbb, 0xac, 0x28, 0x92, 0x6a, 0xf1, 0x5f, 0xc5, 0x0b, 0xd4, 0xc8, - 0x89, 0xf8, 0x84, 0x71, 0x60, 0x7a, 0x35, 0x81, 0x1b, 0x2b, 0x18, 0x0c, 0xdd, 0x9f, 0x06, 0x19, - 0x9b, 0x71, 0x2a, 0x89, 0xf3, 0x08, 0x15, 0x6b, 0x4d, 0xe4, 0x09, 0xea, 0x6a, 0x17, 0xe6, 0xbc, - 0x04, 0x62, 0x5c, 0x1c, 0x8b, 0x05, 0x1f, 0x8b, 0x57, 0xef, 0x92, 0x52, 0x26, 0xd9, 0x54, 0xaf, - 0xdc, 0xcf, 0x09, 0x4b, 0x18, 0x4c, 0xbc, 0x04, 0xd2, 0xa9, 0x64, 0x13, 0x08, 0x50, 0x96, 0x13, - 0x7e, 0x83, 0x26, 0x10, 0xd0, 0xa2, 0xe1, 0x88, 0x04, 0x22, 0xc4, 0xdb, 0x73, 0x14, 0xe3, 0x5c, - 0xbf, 0x29, 0x3b, 0x16, 0x4d, 0x2e, 0x47, 0x59, 0x83, 0x20, 0xb1, 0x95, 0x0d, 0x2a, 0xd8, 0xfd, - 0xa5, 0xf1, 0x6f, 0xa7, 0xd8, 0x3a, 0x61, 0xa7, 0x3d, 0xcd, 0x1e, 0xf7, 0x20, 0x11, 0x57, 0xf6, - 0x1e, 0x00, 0xe5, 0xaa, 0x7d, 0x0d, 0xe0, 0x71, 0x0f, 0xd2, 0x39, 0x93, 0x71, 0xab, 0xf5, 0x92, - 0xc5, 0xd7, 0xd3, 0x42, 0xcc, 0xb3, 0xc9, 0xae, 0x48, 0x45, 0x01, 0xce, 0x64, 0xbc, 0x52, 0x03, - 0x94, 0x38, 0x93, 0xe9, 0x50, 0xb1, 0x19, 0x9c, 0x5b, 0x8a, 0x9d, 0x34, 0x99, 0xc2, 0x1d, 0xb5, - 0x67, 0x48, 0x01, 0x44, 0x06, 0x87, 0x82, 0xc8, 0x20, 0xaa, 0x77, 0xdc, 0x32, 0x89, 0x59, 0x5a, - 0xfb, 0xdb, 0xa6, 0xcd, 0x78, 0x60, 0xe7, 0x20, 0x42, 0x14, 0x90, 0x7a, 0x8e, 0xe7, 0x45, 0x76, - 0x98, 0x49, 0x41, 0xd6, 0xb3, 0x01, 0x3a, 0xeb, 0xe9, 0x80, 0x20, 0xac, 0x8e, 0xf9, 0xbb, 0xaa, - 0x34, 0xd5, 0x3f, 0x58, 0x58, 0xad, 0x7e, 0x1f, 0x6a, 0x79, 0x28, 0xac, 0x02, 0x0e, 0x54, 0x46, - 0x3b, 0xa9, 0x07, 0x4c, 0x40, 0xdb, 0x1f, 0x26, 0xeb, 0xdd, 0x20, 0xee, 0x67, 0x24, 0x97, 0x29, - 0x0f, 0xf9, 0x51, 0x40, 0x1f, 0x3f, 0x0d, 0x68, 0x8f, 0x5b, 0xbc, 0xfa, 0x5c, 0xf1, 0xf8, 0xba, - 0x75, 0xad, 0xc9, 0x2f, 0x68, 0x8d, 0x10, 0xc7, 0x2d, 0x04, 0x8a, 0x77, 0xd1, 0x61, 0x2c, 0xb2, - 0x50, 0x17, 0x55, 0xf2, 0x3e, 0x5d, 0xa4, 0x39, 0xbb, 0xf9, 0x35, 0x52, 0x3d, 0x32, 0xeb, 0x6e, - 0xda, 0x20, 0x2c, 0xb8, 0x10, 0xb1, 0xf9, 0x25, 0x61, 0x9b, 0x93, 0x43, 0x9f, 0xc7, 0xed, 0x3b, - 0xdf, 0x2d, 0x2b, 0xc7, 0xf4, 0x9d, 0x6f, 0x8a, 0xa5, 0x2b, 0x59, 0x8f, 0x91, 0x0e, 0x2b, 0xfe, - 0x38, 0xd9, 0xec, 0x07, 0xdb, 0x2d, 0x8f, 0xe7, 0x73, 0x37, 0xe5, 0xac, 0xa8, 0xbd, 0x6e, 0x05, - 0x0c, 0x59, 0x8c, 0xd8, 0xf2, 0x04, 0x70, 0x10, 0xc2, 0x3c, 0xcf, 0xbb, 0x22, 0x93, 0x3c, 0x93, - 0x58, 0x08, 0xf3, 0x8d, 0x69, 0x30, 0x14, 0xc2, 0x28, 0x05, 0x30, 0x6e, 0xd5, 0x79, 0x10, 0x97, - 0x27, 0x6c, 0x86, 0x66, 0x6c, 0xf5, 0x59, 0x4f, 0x2d, 0x0f, 0x8d, 0x5b, 0xc0, 0x39, 0x0f, 0xf9, - 0x5c, 0x2f, 0x63, 0x56, 0x4c, 0xcd, 0xe9, 0xc6, 0x64, 0xf0, 0x94, 0xb6, 0xe3, 0x93, 0xc4, 0x43, - 0xbe, 0xb0, 0x06, 0x08, 0x3b, 0x87, 0x33, 0x36, 0x35, 0x35, 0x45, 0x6a, 0xa0, 0xe4, 0xad, 0xaa, - 0xae, 0x77, 0x83, 0xc0, 0xcf, 0x9b, 0x64, 0xc2, 0x45, 0xc0, 0x8f, 0x92, 0xf7, 0xf1, 0x03, 0x41, - 0x90, 0xbd, 0x55, 0xf5, 0xae, 0x77, 0x74, 0x3b, 0xd9, 0x44, 0xef, 0x63, 0x87, 0x44, 0xf3, 0x00, - 0x2e, 0x94, 0xbd, 0x11, 0x3c, 0x98, 0xa3, 0xcd, 0x01, 0x6d, 0x68, 0x8e, 0x9a, 0xf3, 0xd7, 0x3e, - 0x73, 0x14, 0x83, 0xb5, 0xcf, 0x9f, 0xe9, 0x39, 0xba, 0xc7, 0x24, 0xab, 0xf2, 0xf6, 0x37, 0x09, - 0xbf, 0xd1, 0x1b, 0x61, 0xa4, 0xbe, 0x0d, 0x35, 0x54, 0xaf, 0x2a, 0x82, 0x5d, 0xf1, 0x76, 0x6f, - 0x3e, 0xe0, 0x5b, 0xef, 0x10, 0x3a, 0x7d, 0x83, 0xad, 0xc2, 0x76, 0x6f, 0x3e, 0xe0, 0x5b, 0xbf, - 0x03, 0xdd, 0xe9, 0x1b, 0xbc, 0x08, 0xbd, 0xdd, 0x9b, 0xd7, 0xbe, 0xff, 0xb2, 0x99, 0xb8, 0xae, - 0xf3, 0x2a, 0x0f, 0x8b, 0x65, 0xb2, 0xe0, 0x58, 0x3a, 0xe9, 0xdb, 0x33, 0x68, 0x28, 0x9d, 0xa4, - 0x55, 0x9c, 0x0f, 0xe7, 0x60, 0xa5, 0x38, 0x15, 0x65, 0xa2, 0x1e, 0xd2, 0x3f, 0xef, 0x61, 0xb4, - 0x81, 0x43, 0x9b, 0xa6, 0x90, 0x92, 0x7d, 0xdc, 0xe8, 0xa1, 0xf6, 0x16, 0xf3, 0x66, 0xc0, 0x5e, - 0xfb, 0x32, 0xf3, 0x56, 0x4f, 0xda, 0x3e, 0xf8, 0xf3, 0x18, 0xf7, 0x89, 0x63, 0xa8, 0x57, 0xd1, - 0x87, 0x8e, 0x4f, 0xfb, 0x2b, 0x68, 0xf7, 0x7f, 0xdd, 0xec, 0x2b, 0xa0, 0x7f, 0x3d, 0x09, 0x9e, - 0xf5, 0xb1, 0x08, 0x26, 0xc2, 0xf3, 0x5b, 0xe9, 0xe8, 0x82, 0xfc, 0x7d, 0xb3, 0x81, 0x6e, 0x50, - 0xf5, 0x2e, 0x87, 0x7a, 0xf7, 0x4f, 0xcf, 0x89, 0x50, 0xb7, 0x5a, 0x18, 0xce, 0x8c, 0x17, 0xb7, - 0xd4, 0x72, 0x3e, 0xa3, 0xe4, 0xc1, 0xfa, 0x9d, 0x43, 0xa7, 0x3c, 0x21, 0xcb, 0x0e, 0x0d, 0x0b, - 0xf4, 0xc5, 0x6d, 0xd5, 0xa8, 0xb9, 0xe2, 0xc0, 0xea, 0xab, 0x0c, 0xcf, 0x7b, 0x1a, 0xf6, 0xbe, - 0xd3, 0xf0, 0xf9, 0xed, 0x94, 0x74, 0x59, 0xfe, 0x63, 0x25, 0x7a, 0xe4, 0xb1, 0xf6, 0x79, 0x02, - 0x38, 0xf5, 0xf8, 0x71, 0xc0, 0x3e, 0xa5, 0x64, 0x0a, 0xf7, 0xbb, 0xbf, 0x9c, 0xb2, 0xfd, 0xe6, - 0x90, 0xa7, 0xb2, 0x9f, 0xa4, 0x92, 0x17, 0xed, 0x6f, 0x0e, 0xf9, 0x76, 0x6b, 0x6a, 0x48, 0x7f, - 0x73, 0x28, 0x80, 0x3b, 0xdf, 0x1c, 0x42, 0x3c, 0xa3, 0xdf, 0x1c, 0x42, 0xad, 0x05, 0xbf, 0x39, - 0x14, 0xd6, 0xa0, 0xc2, 0x7b, 0x53, 0x84, 0xfa, 0xdc, 0xba, 0x97, 0x45, 0xff, 0x18, 0xfb, 0xd9, - 0x6d, 0x54, 0x88, 0x05, 0xae, 0xe6, 0xd4, 0x3d, 0xb7, 0x1e, 0x6d, 0xea, 0xdd, 0x75, 0xdb, 0xee, - 0xcd, 0x6b, 0xdf, 0x3f, 0xd5, 0xbb, 0x1b, 0x13, 0xce, 0x45, 0xa1, 0xbe, 0x37, 0xb5, 0x11, 0x0a, - 0xcf, 0x95, 0x05, 0xb7, 0xe7, 0x37, 0xfb, 0xc1, 0x44, 0x75, 0x2b, 0x42, 0x77, 0xfa, 0xb0, 0xcb, - 0x10, 0xe8, 0xf2, 0xed, 0xde, 0x3c, 0xb1, 0x8c, 0xd4, 0xbe, 0xeb, 0xde, 0xee, 0x61, 0xcc, 0xef, - 0xeb, 0xa7, 0xfd, 0x15, 0xb4, 0xfb, 0x85, 0x4e, 0x1b, 0x5d, 0xf7, 0xaa, 0x9f, 0xb7, 0xba, 0x4c, - 0x8d, 0xbc, 0x6e, 0x1e, 0xf6, 0xc5, 0x43, 0x09, 0x84, 0xbb, 0x84, 0x76, 0x25, 0x10, 0xe8, 0x32, - 0xfa, 0xf9, 0xed, 0x94, 0x74, 0x59, 0xfe, 0x69, 0x25, 0xba, 0x4b, 0x96, 0x45, 0x8f, 0x83, 0x2f, - 0xfa, 0x5a, 0x06, 0xe3, 0xe1, 0xcb, 0x5b, 0xeb, 0xe9, 0x42, 0xfd, 0xeb, 0x4a, 0x74, 0x2f, 0x50, - 0xa8, 0x7a, 0x80, 0xdc, 0xc2, 0xba, 0x3f, 0x50, 0x7e, 0x78, 0x7b, 0x45, 0x6a, 0xb9, 0x77, 0xf1, - 0x51, 0xfb, 0x63, 0x3c, 0x01, 0xdb, 0x23, 0xfa, 0x63, 0x3c, 0xdd, 0x5a, 0xf0, 0x90, 0x87, 0x5d, - 0x34, 0x9b, 0x2e, 0xf4, 0x90, 0x47, 0xdd, 0x50, 0x03, 0x7b, 0x8e, 0xb5, 0x4e, 0x0e, 0x73, 0xf2, - 0xea, 0x5d, 0xce, 0xb2, 0x09, 0xed, 0xa4, 0x96, 0x77, 0x3b, 0x31, 0x1c, 0x3c, 0x1c, 0xab, 0xa4, - 0x67, 0xa2, 0xd9, 0x48, 0x3d, 0xa6, 0xf4, 0x0d, 0x12, 0x3c, 0x1c, 0x6b, 0xa1, 0x84, 0x37, 0x9d, - 0x35, 0x86, 0xbc, 0x81, 0x64, 0xf1, 0x49, 0x1f, 0x14, 0xa4, 0xe8, 0xc6, 0x9b, 0x39, 0x73, 0xdf, - 0x0c, 0x59, 0x69, 0x9d, 0xbb, 0x6f, 0xf5, 0xa4, 0x09, 0xb7, 0x23, 0x2e, 0xbf, 0xe2, 0x6c, 0xc2, - 0x8b, 0xa0, 0x5b, 0x43, 0xf5, 0x72, 0xeb, 0xd2, 0x98, 0xdb, 0x5d, 0x91, 0xce, 0x67, 0x99, 0xee, - 0x4c, 0xd2, 0xad, 0x4b, 0x75, 0xbb, 0x05, 0x34, 0x3c, 0x16, 0xb4, 0x6e, 0x55, 0x7a, 0xf9, 0x24, - 0x6c, 0xc6, 0xcb, 0x2a, 0x37, 0x7a, 0xb1, 0x74, 0x3d, 0xf5, 0x30, 0xea, 0xa8, 0x27, 0x18, 0x49, - 0x5b, 0x3d, 0x69, 0x78, 0x3e, 0xe7, 0xb8, 0x35, 0xe3, 0x69, 0xbb, 0xc3, 0x56, 0x6b, 0x48, 0x3d, - 0xed, 0xaf, 0x00, 0x4f, 0x43, 0xf5, 0xa8, 0x3a, 0x4a, 0x4a, 0xb9, 0x9f, 0xa4, 0xe9, 0x60, 0x23, - 0x30, 0x4c, 0x1a, 0x28, 0x78, 0x1a, 0x8a, 0xc0, 0xc4, 0x48, 0x6e, 0x4e, 0x0f, 0xb3, 0x41, 0x97, - 0x1d, 0x45, 0xf5, 0x1a, 0xc9, 0x2e, 0x0d, 0x4e, 0xb4, 0x9c, 0xa6, 0x36, 0xb5, 0x1d, 0x86, 0x1b, - 0xae, 0x55, 0xe1, 0xed, 0xde, 0x3c, 0x78, 0xdc, 0xae, 0x28, 0xb5, 0xb2, 0x3c, 0xa4, 0x4c, 0x78, - 0x2b, 0xc9, 0xa3, 0x0e, 0x0a, 0x9c, 0x0a, 0xd6, 0xd3, 0xe8, 0x6d, 0x32, 0x99, 0x72, 0x89, 0x3e, - 0x29, 0x72, 0x81, 0xe0, 0x93, 0x22, 0x00, 0x82, 0xae, 0xab, 0x7f, 0x37, 0xc7, 0xa1, 0x87, 0x13, - 0xac, 0xeb, 0xb4, 0xb2, 0x43, 0x85, 0xba, 0x0e, 0xa5, 0x41, 0x34, 0x30, 0x6e, 0xf5, 0xeb, 0xf8, - 0x4f, 0x42, 0x66, 0xc0, 0x3b, 0xf9, 0x1b, 0xbd, 0x58, 0xb0, 0xa2, 0x58, 0x87, 0xc9, 0x2c, 0x91, - 0xd8, 0x8a, 0xe2, 0xd8, 0xa8, 0x90, 0xd0, 0x8a, 0xd2, 0x46, 0xa9, 0xea, 0x55, 0x39, 0xc2, 0xe1, - 0x24, 0x5c, 0xbd, 0x9a, 0xe9, 0x57, 0x3d, 0xc3, 0xb6, 0x1e, 0x6c, 0x66, 0x66, 0xc8, 0xc8, 0x2b, - 0xbd, 0x59, 0x46, 0xc6, 0xb6, 0x7a, 0x4d, 0x13, 0x82, 0xa1, 0xa8, 0x43, 0x29, 0xc0, 0x03, 0xfb, - 0x8a, 0x6b, 0x9e, 0xbd, 0xe6, 0x39, 0x67, 0x05, 0xcb, 0x62, 0x74, 0x73, 0xaa, 0x0c, 0xb6, 0xc8, - 0xd0, 0xe6, 0x94, 0xd4, 0x00, 0x8f, 0xcd, 0xfd, 0x17, 0x2c, 0x91, 0xa9, 0x60, 0xde, 0x64, 0xf4, - 0xdf, 0xaf, 0x7c, 0xdc, 0x83, 0x84, 0x8f, 0xcd, 0x1b, 0xc0, 0x1c, 0x7c, 0xd7, 0x4e, 0x3f, 0x0b, - 0x98, 0xf2, 0xd1, 0xd0, 0x46, 0x98, 0x56, 0x01, 0x83, 0xda, 0x24, 0xb8, 0x5c, 0xfe, 0x84, 0x2f, - 0xb1, 0x41, 0x6d, 0xf3, 0x53, 0x85, 0x84, 0x06, 0x75, 0x1b, 0x05, 0x79, 0xa6, 0xbb, 0x0f, 0x5a, - 0x0d, 0xe8, 0xbb, 0x5b, 0x9f, 0xb5, 0x4e, 0x0e, 0xcc, 0x9c, 0xbd, 0x64, 0xe1, 0x3d, 0x27, 0x40, - 0x0a, 0xba, 0x97, 0x2c, 0xf0, 0xc7, 0x04, 0x1b, 0xbd, 0x58, 0xf8, 0x48, 0x9e, 0x49, 0xfe, 0xae, - 0x79, 0x56, 0x8e, 0x14, 0x57, 0xc9, 0x5b, 0x0f, 0xcb, 0xd7, 0xbb, 0x41, 0x7b, 0x01, 0xf6, 0xb4, - 0x10, 0x31, 0x2f, 0x4b, 0xfd, 0x85, 0x42, 0xff, 0x86, 0x91, 0x96, 0x0d, 0xc1, 0xf7, 0x09, 0x1f, - 0x86, 0x21, 0xdb, 0x33, 0x5a, 0x64, 0xbf, 0x7a, 0xb3, 0x8a, 0x6a, 0xb6, 0x3f, 0x78, 0xb3, 0xd6, - 0xc9, 0xd9, 0xe9, 0xa5, 0xa5, 0xee, 0x67, 0x6e, 0xd6, 0x51, 0x75, 0xec, 0x0b, 0x37, 0x8f, 0x7b, - 0x90, 0xda, 0xd5, 0x57, 0xd1, 0xfb, 0x47, 0x62, 0x3a, 0xe2, 0xd9, 0x64, 0xf0, 0x03, 0xff, 0x0a, - 0xad, 0x98, 0x0e, 0xab, 0x9f, 0x8d, 0xd1, 0x3b, 0x94, 0xd8, 0x5e, 0x02, 0xdc, 0xe3, 0x17, 0xf3, - 0xe9, 0x48, 0x32, 0x09, 0x2e, 0x01, 0xaa, 0xdf, 0x87, 0x95, 0x80, 0xb8, 0x04, 0xe8, 0x01, 0xc0, - 0xde, 0xb8, 0xe0, 0x1c, 0xb5, 0x57, 0x09, 0x82, 0xf6, 0x34, 0x60, 0xb3, 0x08, 0x63, 0xaf, 0x4a, - 0xd4, 0xe1, 0xa5, 0x3d, 0xab, 0xa3, 0xa4, 0x44, 0x16, 0xd1, 0xa6, 0xec, 0xe0, 0xae, 0xab, 0xaf, - 0xbe, 0x3a, 0x32, 0x9f, 0xcd, 0x58, 0xb1, 0x04, 0x83, 0x5b, 0xd7, 0xd2, 0x01, 0x88, 0xc1, 0x8d, - 0x82, 0x76, 0xd6, 0x36, 0xcd, 0x1c, 0x5f, 0x1f, 0x88, 0x42, 0xcc, 0x65, 0x92, 0x71, 0xf8, 0xe5, - 0x09, 0xd3, 0xa0, 0x2e, 0x43, 0xcc, 0x5a, 0x8a, 0xb5, 0x59, 0xae, 0x22, 0xea, 0xfb, 0x84, 0xea, - 0xbb, 0xc5, 0xa5, 0x14, 0x05, 0x7c, 0x9e, 0x58, 0x5b, 0x81, 0x10, 0x91, 0xe5, 0x92, 0x30, 0xe8, - 0xfb, 0xd3, 0x24, 0x9b, 0xa2, 0x7d, 0x7f, 0xea, 0x7e, 0xf5, 0xf3, 0x1e, 0x0d, 0xd8, 0x09, 0x55, - 0x37, 0x5a, 0x3d, 0x01, 0xf4, 0xbb, 0x9c, 0x68, 0xa3, 0xbb, 0x04, 0x31, 0xa1, 0x70, 0x12, 0xb8, - 0x7a, 0x9d, 0xf3, 0x8c, 0x4f, 0x9a, 0x5b, 0x73, 0x98, 0x2b, 0x8f, 0x08, 0xba, 0x82, 0xa4, 0x8d, - 0x45, 0x4a, 0x7e, 0x36, 0xcf, 0x4e, 0x0b, 0x71, 0x99, 0xa4, 0xbc, 0x00, 0xb1, 0xa8, 0x56, 0x77, - 0xe4, 0x44, 0x2c, 0xc2, 0x38, 0x7b, 0xfd, 0x42, 0x49, 0xbd, 0x8f, 0x6f, 0x8f, 0x0b, 0x16, 0xc3, - 0xeb, 0x17, 0xb5, 0x8d, 0x36, 0x46, 0x9c, 0x0c, 0x06, 0x70, 0x27, 0xd1, 0xa9, 0x5d, 0x67, 0x4b, - 0x35, 0x3e, 0xf4, 0xbb, 0x84, 0xea, 0x5b, 0x98, 0x25, 0x48, 0x74, 0xb4, 0x39, 0x8c, 0x24, 0x12, - 0x9d, 0xb0, 0x86, 0x5d, 0x4a, 0x14, 0x77, 0xa2, 0xaf, 0x15, 0x81, 0xa5, 0xa4, 0xb6, 0xd1, 0x08, - 0x89, 0xa5, 0xa4, 0x05, 0x81, 0x80, 0xd4, 0x4c, 0x83, 0x29, 0x1a, 0x90, 0x8c, 0x34, 0x18, 0x90, - 0x5c, 0xca, 0x06, 0x8a, 0xc3, 0x2c, 0x91, 0x09, 0x4b, 0x47, 0x5c, 0x9e, 0xb2, 0x82, 0xcd, 0xb8, - 0xe4, 0x05, 0x0c, 0x14, 0x1a, 0x19, 0x7a, 0x0c, 0x11, 0x28, 0x28, 0x56, 0x3b, 0xfc, 0xbd, 0xe8, - 0xc3, 0x6a, 0xdd, 0xe7, 0x99, 0xfe, 0x33, 0x1b, 0xaf, 0xd4, 0xdf, 0xe7, 0x19, 0x7c, 0x64, 0x6c, - 0x8c, 0x64, 0xc1, 0xd9, 0xac, 0xb1, 0xfd, 0x81, 0xf9, 0x5d, 0x81, 0x4f, 0x57, 0xaa, 0xf1, 0x7c, - 0x22, 0x64, 0x72, 0x59, 0x6d, 0xb3, 0xf5, 0x1b, 0x44, 0x60, 0x3c, 0xbb, 0xe2, 0x61, 0xe0, 0x5b, - 0x14, 0x18, 0x67, 0xe3, 0xb4, 0x2b, 0x3d, 0xe3, 0x79, 0x0a, 0xe3, 0xb4, 0xa7, 0xad, 0x00, 0x22, - 0x4e, 0xa3, 0xa0, 0x9d, 0x9c, 0xae, 0x78, 0xcc, 0xc3, 0x95, 0x19, 0xf3, 0x7e, 0x95, 0x19, 0x7b, - 0x2f, 0x65, 0xa4, 0xd1, 0x87, 0xc7, 0x7c, 0x76, 0xc1, 0x8b, 0xf2, 0x2a, 0xc9, 0x0f, 0xaa, 0x84, - 0x8b, 0xc9, 0x39, 0x7c, 0x6d, 0xd1, 0x12, 0x43, 0x83, 0x10, 0x59, 0x29, 0x81, 0xda, 0x95, 0xc0, - 0x02, 0x87, 0xe5, 0x09, 0x9b, 0x71, 0xf5, 0x65, 0x0d, 0xb0, 0x12, 0x38, 0x46, 0x1c, 0x88, 0x58, - 0x09, 0x48, 0xd8, 0x79, 0xbf, 0xcb, 0x32, 0x67, 0x7c, 0x5a, 0x8d, 0xb0, 0xe2, 0x94, 0x2d, 0x67, - 0x3c, 0x93, 0xda, 0x24, 0x38, 0x93, 0x77, 0x4c, 0xe2, 0x3c, 0x71, 0x26, 0xdf, 0x47, 0xcf, 0x09, - 0x4d, 0x5e, 0xc3, 0x9f, 0x8a, 0x42, 0xd6, 0x7f, 0x44, 0xe7, 0xbc, 0x48, 0x41, 0x68, 0xf2, 0x1b, - 0xd5, 0x23, 0x89, 0xd0, 0x14, 0xd6, 0x70, 0xbe, 0x3e, 0xef, 0x95, 0xe1, 0x0d, 0x2f, 0xcc, 0x38, - 0x79, 0x35, 0x63, 0x49, 0xaa, 0x47, 0xc3, 0x8f, 0x02, 0xb6, 0x09, 0x1d, 0xe2, 0xeb, 0xf3, 0x7d, - 0x75, 0x9d, 0xef, 0xf5, 0x87, 0x4b, 0x08, 0x1e, 0x11, 0x74, 0xd8, 0x27, 0x1e, 0x11, 0x74, 0x6b, - 0xd9, 0x9d, 0xbb, 0x65, 0x15, 0xb7, 0x54, 0xc4, 0xae, 0x98, 0xc0, 0xf3, 0x42, 0xc7, 0x26, 0x00, - 0x89, 0x9d, 0x7b, 0x50, 0xc1, 0xa6, 0x06, 0x16, 0xdb, 0x4f, 0x32, 0x96, 0x26, 0x3f, 0x83, 0x69, - 0xbd, 0x63, 0xa7, 0x21, 0x88, 0xd4, 0x00, 0x27, 0x31, 0x57, 0x07, 0x5c, 0x8e, 0x93, 0x2a, 0xf4, - 0xaf, 0x07, 0xda, 0x4d, 0x11, 0xdd, 0xae, 0x1c, 0xd2, 0xf9, 0x46, 0x2b, 0x6c, 0xd6, 0x9d, 0x3c, - 0x1f, 0x55, 0xab, 0xea, 0x19, 0x8f, 0x79, 0x92, 0xcb, 0xc1, 0x8b, 0x70, 0x5b, 0x01, 0x9c, 0xb8, - 0x68, 0xd1, 0x43, 0xcd, 0x79, 0x7c, 0x5f, 0xc5, 0x92, 0x51, 0xfd, 0xd7, 0xe5, 0xce, 0x4b, 0x5e, - 0xe8, 0x44, 0xe3, 0x80, 0x4b, 0x30, 0x3b, 0x1d, 0x6e, 0xe8, 0x80, 0x55, 0x45, 0x89, 0xd9, 0x19, - 0xd6, 0xb0, 0x87, 0x7d, 0x0e, 0x77, 0xc6, 0x4b, 0x91, 0x2e, 0xb8, 0xba, 0x6f, 0xb8, 0x49, 0x1a, - 0x73, 0x28, 0xe2, 0xb0, 0x8f, 0xa6, 0x6d, 0xb6, 0xd6, 0x76, 0xbb, 0x93, 0x2d, 0x0f, 0xe1, 0x95, - 0x09, 0xc4, 0x92, 0xc2, 0x88, 0x6c, 0x2d, 0x80, 0x3b, 0x87, 0xe1, 0x85, 0x60, 0x93, 0x98, 0x95, - 0xf2, 0x94, 0x2d, 0x53, 0xc1, 0x26, 0x6a, 0x5d, 0x87, 0x87, 0xe1, 0x0d, 0x33, 0x74, 0x21, 0xea, - 0x30, 0x9c, 0x82, 0xdd, 0xec, 0x4c, 0xfd, 0xd1, 0x3c, 0x7d, 0x97, 0x13, 0x66, 0x67, 0xaa, 0xbc, - 0xf0, 0x1e, 0xe7, 0xc3, 0x30, 0x64, 0xdf, 0x41, 0xab, 0x45, 0x2a, 0x0d, 0xb9, 0x87, 0xe9, 0x78, - 0x09, 0xc8, 0xfd, 0x00, 0x61, 0xbf, 0x4b, 0x51, 0xff, 0xde, 0xfc, 0xdd, 0x17, 0xa9, 0xbf, 0x64, - 0xbd, 0x89, 0xe9, 0xba, 0xd0, 0xd0, 0xfd, 0xc0, 0xdd, 0x56, 0x4f, 0xda, 0xa6, 0x99, 0xbb, 0x57, - 0x4c, 0xee, 0x4c, 0x26, 0xc7, 0xbc, 0x44, 0x5e, 0x28, 0xaf, 0x84, 0x43, 0x2b, 0x25, 0xd2, 0xcc, - 0x36, 0x65, 0x07, 0x7a, 0x25, 0x7b, 0x35, 0x49, 0xa4, 0x96, 0x35, 0x37, 0xa4, 0x37, 0xdb, 0x06, - 0xda, 0x14, 0x51, 0x2b, 0x9a, 0xb6, 0xb1, 0xbc, 0x62, 0xc6, 0x62, 0x3a, 0x4d, 0xb9, 0x86, 0xce, - 0x38, 0xab, 0x3f, 0xe4, 0xb7, 0xdd, 0xb6, 0x85, 0x82, 0x44, 0x2c, 0x0f, 0x2a, 0xd8, 0x34, 0xb2, - 0xc2, 0xea, 0x47, 0x52, 0x4d, 0xc3, 0xae, 0xb5, 0xcd, 0x78, 0x00, 0x91, 0x46, 0xa2, 0xa0, 0x7d, - 0xef, 0xad, 0x12, 0x1f, 0xf0, 0xa6, 0x25, 0xe0, 0x27, 0x88, 0x94, 0xb2, 0x23, 0x26, 0xde, 0x7b, - 0x43, 0x30, 0xbb, 0x4f, 0x00, 0x1e, 0x5e, 0x2e, 0x0f, 0x27, 0x70, 0x9f, 0x00, 0xf5, 0x15, 0x43, - 0xec, 0x13, 0x28, 0xd6, 0xef, 0x3a, 0x73, 0xee, 0x75, 0xc4, 0x4a, 0x5b, 0x39, 0xa4, 0xeb, 0x50, - 0x30, 0xd4, 0x75, 0x94, 0x82, 0xdf, 0xa4, 0xee, 0xd1, 0x1a, 0xd2, 0xa4, 0xd8, 0xb9, 0xda, 0x6a, - 0x17, 0x66, 0xe3, 0x92, 0xd9, 0x4f, 0xaa, 0x2b, 0x4b, 0xf8, 0x17, 0xfc, 0x6b, 0x21, 0x11, 0x97, - 0x5a, 0x50, 0x6d, 0xfb, 0xe5, 0xfd, 0xff, 0xfc, 0xe6, 0xce, 0xca, 0x2f, 0xbe, 0xb9, 0xb3, 0xf2, - 0xdf, 0xdf, 0xdc, 0x59, 0xf9, 0xf9, 0xb7, 0x77, 0xde, 0xfb, 0xc5, 0xb7, 0x77, 0xde, 0xfb, 0xaf, - 0x6f, 0xef, 0xbc, 0xf7, 0xf5, 0xfb, 0xfa, 0x8f, 0xa9, 0x5e, 0xfc, 0x3f, 0xf5, 0x27, 0x51, 0x9f, - 0xff, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x39, 0xd6, 0xda, 0x85, 0x70, 0x75, 0x00, 0x00, + 0x7c, 0x16, 0x1e, 0x78, 0xdc, 0x47, 0x1e, 0xd1, 0xcc, 0x1b, 0x9f, 0x02, 0x65, 0x64, 0x64, 0x5c, + 0x4e, 0x9e, 0x13, 0x99, 0xde, 0xa7, 0x6e, 0xd5, 0xf9, 0x9d, 0x73, 0xe2, 0x7a, 0xe2, 0x44, 0x64, + 0x64, 0x3a, 0xba, 0x9b, 0x5f, 0x6c, 0xe7, 0x85, 0x90, 0xa2, 0xdc, 0x2e, 0x79, 0xb1, 0x48, 0x62, + 0xde, 0xfc, 0x3b, 0x54, 0x3f, 0x0f, 0xde, 0x67, 0xd9, 0x52, 0x2e, 0x73, 0xfe, 0xc9, 0xc7, 0x96, + 0x8c, 0xc5, 0x6c, 0xc6, 0xb2, 0x49, 0x59, 0x23, 0x9f, 0x7c, 0x64, 0x25, 0x7c, 0xc1, 0x33, 0xa9, + 0x7f, 0x7f, 0xf6, 0x9f, 0xff, 0xbb, 0x12, 0x7d, 0xb0, 0x9b, 0x26, 0x3c, 0x93, 0xbb, 0x5a, 0x63, + 0xf0, 0x75, 0xf4, 0xdd, 0x9d, 0x3c, 0x3f, 0xe0, 0xf2, 0x0d, 0x2f, 0xca, 0x44, 0x64, 0x83, 0x4f, + 0x87, 0xda, 0xc1, 0xf0, 0x2c, 0x8f, 0x87, 0x3b, 0x79, 0x3e, 0xb4, 0xc2, 0xe1, 0x19, 0xff, 0xe9, + 0x9c, 0x97, 0xf2, 0x93, 0x87, 0x61, 0xa8, 0xcc, 0x45, 0x56, 0xf2, 0xc1, 0x65, 0xf4, 0x1b, 0x3b, + 0x79, 0x3e, 0xe2, 0x72, 0x8f, 0x57, 0x15, 0x18, 0x49, 0x26, 0xf9, 0x60, 0xad, 0xa5, 0xea, 0x03, + 0xc6, 0xc7, 0x7a, 0x37, 0xa8, 0xfd, 0x8c, 0xa3, 0xef, 0x54, 0x7e, 0xae, 0xe6, 0x72, 0x22, 0x6e, + 0xb2, 0xc1, 0xfd, 0xb6, 0xa2, 0x16, 0x19, 0xdb, 0x0f, 0x42, 0x88, 0xb6, 0xfa, 0x36, 0xfa, 0xd5, + 0xb7, 0x2c, 0x4d, 0xb9, 0xdc, 0x2d, 0x78, 0x55, 0x70, 0x5f, 0xa7, 0x16, 0x0d, 0x6b, 0x99, 0xb1, + 0xfb, 0x69, 0x90, 0xd1, 0x86, 0xbf, 0x8e, 0xbe, 0x5b, 0x4b, 0xce, 0x78, 0x2c, 0x16, 0xbc, 0x18, + 0xa0, 0x5a, 0x5a, 0x48, 0x34, 0x79, 0x0b, 0x82, 0xb6, 0x77, 0x45, 0xb6, 0xe0, 0x85, 0xc4, 0x6d, + 0x6b, 0x61, 0xd8, 0xb6, 0x85, 0xb4, 0xed, 0xbf, 0x5d, 0x89, 0xbe, 0xbf, 0x13, 0xc7, 0x62, 0x9e, + 0xc9, 0x23, 0x11, 0xb3, 0xf4, 0x28, 0xc9, 0xae, 0x4f, 0xf8, 0xcd, 0xee, 0x55, 0xc5, 0x67, 0x53, + 0x3e, 0x78, 0xee, 0xb7, 0x6a, 0x8d, 0x0e, 0x0d, 0x3b, 0x74, 0x61, 0xe3, 0xfb, 0xf3, 0xdb, 0x29, + 0xe9, 0xb2, 0xfc, 0xe3, 0x4a, 0x74, 0x07, 0x96, 0x65, 0x24, 0xd2, 0x05, 0xb7, 0xa5, 0x79, 0xd1, + 0x61, 0xd8, 0xc7, 0x4d, 0x79, 0xbe, 0xb8, 0xad, 0x9a, 0x2e, 0x51, 0x1a, 0x7d, 0xe8, 0x0e, 0x97, + 0x11, 0x2f, 0xd5, 0x74, 0x7a, 0x4c, 0x8f, 0x08, 0x8d, 0x18, 0xcf, 0x4f, 0xfa, 0xa0, 0xda, 0x5b, + 0x12, 0x0d, 0xb4, 0xb7, 0x54, 0x94, 0xc6, 0xd9, 0x3a, 0x6a, 0xc1, 0x21, 0x8c, 0xaf, 0xc7, 0x3d, + 0x48, 0xed, 0xea, 0x8f, 0xa2, 0x5f, 0x7b, 0x2b, 0x8a, 0xeb, 0x32, 0x67, 0x31, 0xd7, 0x53, 0xe1, + 0x91, 0xaf, 0xdd, 0x48, 0xe1, 0x6c, 0x58, 0xed, 0xc2, 0x9c, 0x41, 0xdb, 0x08, 0x5f, 0xe7, 0x1c, + 0xc6, 0x20, 0xab, 0x58, 0x09, 0xa9, 0x41, 0x0b, 0x21, 0x6d, 0xfb, 0x3a, 0x1a, 0x58, 0xdb, 0x17, + 0x7f, 0xcc, 0x63, 0xb9, 0x33, 0x99, 0xc0, 0x5e, 0xb1, 0xba, 0x8a, 0x18, 0xee, 0x4c, 0x26, 0x54, + 0xaf, 0xe0, 0xa8, 0x76, 0x76, 0x13, 0x7d, 0x04, 0x9c, 0x1d, 0x25, 0xa5, 0x72, 0xb8, 0x15, 0xb6, + 0xa2, 0x31, 0xe3, 0x74, 0xd8, 0x17, 0xd7, 0x8e, 0xff, 0x7c, 0x25, 0xfa, 0x1e, 0xe2, 0xf9, 0x8c, + 0xcf, 0xc4, 0x82, 0x0f, 0x9e, 0x76, 0x5b, 0xab, 0x49, 0xe3, 0xff, 0xb3, 0x5b, 0x68, 0x20, 0xc3, + 0x64, 0xc4, 0x53, 0x1e, 0x4b, 0x72, 0x98, 0xd4, 0xe2, 0xce, 0x61, 0x62, 0x30, 0x67, 0x86, 0x35, + 0xc2, 0x03, 0x2e, 0x77, 0xe7, 0x45, 0xc1, 0x33, 0x49, 0xf6, 0xa5, 0x45, 0x3a, 0xfb, 0xd2, 0x43, + 0x91, 0xfa, 0x1c, 0x70, 0xb9, 0x93, 0xa6, 0x64, 0x7d, 0x6a, 0x71, 0x67, 0x7d, 0x0c, 0xa6, 0x3d, + 0xc4, 0xd1, 0xaf, 0x3b, 0x2d, 0x26, 0x0f, 0xb3, 0x4b, 0x31, 0xa0, 0xdb, 0x42, 0xc9, 0x8d, 0x8f, + 0xb5, 0x4e, 0x0e, 0xa9, 0xc6, 0xab, 0x77, 0xb9, 0x28, 0xe8, 0x6e, 0xa9, 0xc5, 0x9d, 0xd5, 0x30, + 0x98, 0xf6, 0xf0, 0x87, 0xd1, 0x07, 0x3a, 0x4a, 0x36, 0xeb, 0xd9, 0x43, 0x34, 0x84, 0xc2, 0x05, + 0xed, 0x51, 0x07, 0x65, 0x83, 0x83, 0x96, 0xe9, 0xe0, 0xf3, 0x29, 0xaa, 0x07, 0x42, 0xcf, 0xc3, + 0x30, 0xd4, 0xb2, 0xbd, 0xc7, 0x53, 0x4e, 0xda, 0xae, 0x85, 0x1d, 0xb6, 0x0d, 0xa4, 0x6d, 0x17, + 0xd1, 0x6f, 0x99, 0x66, 0xa9, 0xd6, 0x51, 0x25, 0xaf, 0x82, 0xf4, 0x06, 0x51, 0x6f, 0x17, 0x32, + 0xbe, 0x36, 0xfb, 0xc1, 0xad, 0xfa, 0xe8, 0x19, 0x88, 0xd7, 0x07, 0xcc, 0xbf, 0x87, 0x61, 0xa8, + 0xd5, 0xcd, 0xc7, 0xc9, 0xb4, 0xa8, 0x3a, 0x02, 0xd7, 0xd3, 0xd2, 0x8e, 0x6e, 0xb6, 0x94, 0x36, + 0xff, 0x77, 0x2b, 0xd1, 0x0f, 0xb4, 0xf0, 0x55, 0xc6, 0x2e, 0x52, 0xae, 0x56, 0xdc, 0x13, 0x2e, + 0x6f, 0x44, 0x71, 0x3d, 0x5a, 0x66, 0x31, 0x91, 0x5d, 0xe0, 0x70, 0x47, 0x76, 0x41, 0x2a, 0x39, + 0x09, 0xa5, 0x6e, 0x47, 0x29, 0x72, 0x98, 0x50, 0x36, 0x0d, 0x24, 0x45, 0x4e, 0x25, 0x94, 0x3e, + 0xd2, 0xb2, 0x7a, 0x5c, 0x45, 0x65, 0xdc, 0xea, 0xb1, 0x1b, 0x86, 0x1f, 0x84, 0x10, 0x1b, 0x15, + 0x9b, 0xf9, 0x21, 0xb2, 0xcb, 0x64, 0x7a, 0x9e, 0x4f, 0xaa, 0xce, 0x79, 0x8c, 0x4f, 0x00, 0x07, + 0x21, 0xa2, 0x22, 0x81, 0x6a, 0x6f, 0xff, 0x60, 0xf3, 0x2e, 0x3d, 0x53, 0xf7, 0x0b, 0x31, 0x3b, + 0xe2, 0x53, 0x16, 0x2f, 0x75, 0x78, 0xf9, 0x3c, 0x34, 0xaf, 0x21, 0x6d, 0x0a, 0xf1, 0xe2, 0x96, + 0x5a, 0xba, 0x3c, 0xff, 0xbe, 0x12, 0x3d, 0x6c, 0xaa, 0x7f, 0xc5, 0xb2, 0x29, 0xd7, 0xfd, 0x59, + 0x97, 0x7e, 0x27, 0x9b, 0x9c, 0xf1, 0x52, 0xb2, 0x42, 0x0e, 0x7e, 0x84, 0x57, 0x32, 0xa4, 0x63, + 0xca, 0xf6, 0xe3, 0x5f, 0x4a, 0xd7, 0xf6, 0xfa, 0xa8, 0x8a, 0x9b, 0x3a, 0xc2, 0xf8, 0xbd, 0xae, + 0x24, 0x30, 0xbe, 0x3c, 0x08, 0x21, 0xb6, 0xd7, 0x95, 0xe0, 0x30, 0x5b, 0x24, 0x92, 0x1f, 0xf0, + 0x8c, 0x17, 0xed, 0x5e, 0xaf, 0x55, 0x7d, 0x84, 0xe8, 0x75, 0x02, 0xb5, 0xb1, 0xcc, 0xf3, 0x66, + 0xd6, 0xde, 0x8d, 0x80, 0x91, 0xd6, 0xea, 0xbb, 0xd9, 0x0f, 0xb6, 0x9b, 0x47, 0xc7, 0xe7, 0x19, + 0x5f, 0x88, 0x6b, 0xb8, 0x79, 0x74, 0x4d, 0xd4, 0x00, 0xb1, 0x79, 0x44, 0x41, 0xbb, 0x40, 0x3a, + 0x7e, 0xde, 0x24, 0xfc, 0x06, 0x2c, 0x90, 0xae, 0x72, 0x25, 0x26, 0x16, 0x48, 0x04, 0xd3, 0x1e, + 0x4e, 0xa2, 0x5f, 0x51, 0xc2, 0xdf, 0x17, 0x49, 0x36, 0xb8, 0x8b, 0x28, 0x55, 0x02, 0x63, 0xf5, + 0x1e, 0x0d, 0x80, 0x12, 0x57, 0xbf, 0xee, 0xb2, 0x2c, 0xe6, 0x29, 0x5a, 0x62, 0x2b, 0x0e, 0x96, + 0xd8, 0xc3, 0x6c, 0x66, 0xa2, 0x84, 0x55, 0xfc, 0x1a, 0x5d, 0xb1, 0x22, 0xc9, 0xa6, 0x03, 0x4c, + 0xd7, 0x91, 0x13, 0x99, 0x09, 0xc6, 0x81, 0x21, 0xac, 0x15, 0x77, 0xf2, 0xbc, 0xa8, 0xc2, 0x22, + 0x36, 0x84, 0x7d, 0x24, 0x38, 0x84, 0x5b, 0x28, 0xee, 0x6d, 0x8f, 0xc7, 0x69, 0x92, 0x05, 0xbd, + 0x69, 0xa4, 0x8f, 0x37, 0x8b, 0x82, 0xc1, 0x7b, 0xc4, 0xd9, 0x82, 0x37, 0x35, 0xc3, 0x5a, 0xc6, + 0x05, 0x82, 0x83, 0x17, 0x80, 0x76, 0x1b, 0xa8, 0xc4, 0xc7, 0xec, 0x9a, 0x57, 0x0d, 0xcc, 0xab, + 0x75, 0x6d, 0x80, 0xe9, 0x7b, 0x04, 0xb1, 0x0d, 0xc4, 0x49, 0xed, 0x6a, 0x1e, 0x7d, 0xa4, 0xe4, + 0xa7, 0xac, 0x90, 0x49, 0x9c, 0xe4, 0x2c, 0x6b, 0xb6, 0x17, 0xd8, 0xbc, 0x6e, 0x51, 0xc6, 0xe5, + 0x56, 0x4f, 0x5a, 0xbb, 0xfd, 0xb7, 0x95, 0xe8, 0x3e, 0xf4, 0x7b, 0xca, 0x8b, 0x59, 0xa2, 0x76, + 0xa9, 0x65, 0x1d, 0x84, 0x07, 0x5f, 0x86, 0x8d, 0xb6, 0x14, 0x4c, 0x69, 0x7e, 0x78, 0x7b, 0x45, + 0x9b, 0x6b, 0x8d, 0x74, 0xe6, 0xfe, 0xba, 0x98, 0xb4, 0x4e, 0x71, 0x46, 0x4d, 0x3a, 0xae, 0x84, + 0x44, 0xae, 0xd5, 0x82, 0xc0, 0x0c, 0x3f, 0xcf, 0xca, 0xc6, 0x3a, 0x36, 0xc3, 0xad, 0x38, 0x38, + 0xc3, 0x3d, 0x4c, 0x7b, 0xf8, 0x83, 0x28, 0xaa, 0xf7, 0x72, 0x6a, 0xbf, 0xed, 0xc7, 0x1c, 0xbd, + 0xc9, 0xf3, 0x36, 0xdb, 0xf7, 0x03, 0x84, 0x5d, 0xe8, 0xea, 0xdf, 0xd5, 0x31, 0xc2, 0x00, 0xd5, + 0x50, 0x22, 0x62, 0xa1, 0x03, 0x08, 0x2c, 0xe8, 0xe8, 0x4a, 0xdc, 0xe0, 0x05, 0xad, 0x24, 0xe1, + 0x82, 0x6a, 0xc2, 0x1e, 0xec, 0xe9, 0x82, 0x62, 0x07, 0x7b, 0x4d, 0x31, 0x42, 0x07, 0x7b, 0x90, + 0xd1, 0x86, 0x45, 0xf4, 0x9b, 0xae, 0xe1, 0x97, 0x42, 0x5c, 0xcf, 0x58, 0x71, 0x3d, 0x78, 0x42, + 0x2b, 0x37, 0x8c, 0x71, 0xb4, 0xd1, 0x8b, 0xb5, 0x41, 0xcd, 0x75, 0x58, 0xa5, 0x49, 0xe7, 0x45, + 0x0a, 0x82, 0x9a, 0x67, 0x43, 0x23, 0x44, 0x50, 0x23, 0x50, 0x3b, 0x2a, 0x5d, 0x6f, 0x23, 0x0e, + 0xb7, 0x92, 0x9e, 0xfa, 0x88, 0x53, 0x5b, 0x49, 0x04, 0x83, 0x43, 0xe8, 0xa0, 0x60, 0xf9, 0x15, + 0x3e, 0x84, 0x94, 0x28, 0x3c, 0x84, 0x1a, 0x04, 0xf6, 0xf7, 0x88, 0xb3, 0x22, 0xbe, 0xc2, 0xfb, + 0xbb, 0x96, 0x85, 0xfb, 0xdb, 0x30, 0xb0, 0xbf, 0x6b, 0xc1, 0xdb, 0x44, 0x5e, 0x1d, 0x73, 0xc9, + 0xf0, 0xfe, 0xf6, 0x99, 0x70, 0x7f, 0xb7, 0x58, 0x9b, 0x87, 0xb9, 0x0e, 0x47, 0xf3, 0x8b, 0x32, + 0x2e, 0x92, 0x0b, 0x3e, 0x08, 0x58, 0x31, 0x10, 0x91, 0x87, 0x91, 0xb0, 0xf6, 0xf9, 0xf3, 0x95, + 0xe8, 0x6e, 0xd3, 0xed, 0xa2, 0x2c, 0x75, 0xcc, 0xf3, 0xdd, 0xbf, 0xc0, 0xfb, 0x97, 0xc0, 0x89, + 0xa3, 0xd6, 0x1e, 0x6a, 0xce, 0x9a, 0x80, 0x17, 0xe9, 0x3c, 0x2b, 0x4d, 0xa1, 0xbe, 0xec, 0x63, + 0xdd, 0x51, 0x20, 0xd6, 0x84, 0x5e, 0x8a, 0x76, 0x39, 0xd6, 0xfd, 0xd3, 0xc8, 0x0e, 0x27, 0x25, + 0x58, 0x8e, 0x9b, 0xf6, 0x76, 0x08, 0x62, 0x39, 0xc6, 0x49, 0x38, 0x14, 0x0e, 0x0a, 0x31, 0xcf, + 0xcb, 0x8e, 0xa1, 0x00, 0xa0, 0xf0, 0x50, 0x68, 0xc3, 0xda, 0xe7, 0xbb, 0xe8, 0xb7, 0xdd, 0xe1, + 0xe7, 0x36, 0xf6, 0x16, 0x3d, 0xa6, 0xb0, 0x26, 0x1e, 0xf6, 0xc5, 0x6d, 0x42, 0xda, 0x78, 0x96, + 0x7b, 0x5c, 0xb2, 0x24, 0x2d, 0x07, 0xab, 0xb8, 0x8d, 0x46, 0x4e, 0x24, 0xa4, 0x18, 0x07, 0xe3, + 0xdb, 0xde, 0x3c, 0x4f, 0x93, 0xb8, 0x7d, 0xd0, 0xad, 0x75, 0x8d, 0x38, 0x1c, 0xdf, 0x5c, 0x0c, + 0xc6, 0xeb, 0x6a, 0xc9, 0x57, 0xff, 0x19, 0x2f, 0x73, 0x8e, 0xc7, 0x6b, 0x0f, 0x09, 0xc7, 0x6b, + 0x88, 0xc2, 0xfa, 0x8c, 0xb8, 0x3c, 0x62, 0x4b, 0x31, 0x27, 0xe2, 0xb5, 0x11, 0x87, 0xeb, 0xe3, + 0x62, 0x36, 0x27, 0x34, 0x1e, 0x0e, 0x33, 0xc9, 0x8b, 0x8c, 0xa5, 0xfb, 0x29, 0x9b, 0x96, 0x03, + 0x22, 0xc6, 0xf8, 0x14, 0x91, 0x13, 0xd2, 0x34, 0xd2, 0x8c, 0x87, 0xe5, 0x3e, 0x5b, 0x88, 0x22, + 0x91, 0x74, 0x33, 0x5a, 0xa4, 0xb3, 0x19, 0x3d, 0x14, 0xf5, 0xb6, 0x53, 0xc4, 0x57, 0xc9, 0x82, + 0x4f, 0x02, 0xde, 0x1a, 0xa4, 0x87, 0x37, 0x07, 0x45, 0x3a, 0x6d, 0x24, 0xe6, 0x45, 0xcc, 0xc9, + 0x4e, 0xab, 0xc5, 0x9d, 0x9d, 0x66, 0x30, 0xed, 0xe1, 0xaf, 0x56, 0xa2, 0xdf, 0xa9, 0xa5, 0xee, + 0xe9, 0xf3, 0x1e, 0x2b, 0xaf, 0x2e, 0x04, 0x2b, 0x26, 0x83, 0xcf, 0x30, 0x3b, 0x28, 0x6a, 0x5c, + 0x3f, 0xbb, 0x8d, 0x0a, 0x6c, 0xd6, 0xa3, 0xa4, 0x74, 0x66, 0x1c, 0xda, 0xac, 0x1e, 0x12, 0x6e, + 0x56, 0x88, 0xc2, 0x00, 0xa2, 0xe4, 0xf5, 0x51, 0xcc, 0x2a, 0xa9, 0xef, 0x9f, 0xc7, 0xac, 0x75, + 0x72, 0x30, 0x3e, 0x56, 0x42, 0x7f, 0xb4, 0x6c, 0x51, 0x36, 0xf0, 0x11, 0x33, 0xec, 0x8b, 0x93, + 0x9e, 0xcd, 0xac, 0x08, 0x7b, 0x6e, 0xcd, 0x8c, 0x61, 0x5f, 0x9c, 0xf0, 0xec, 0x84, 0xb5, 0x90, + 0x67, 0x24, 0xb4, 0x0d, 0xfb, 0xe2, 0x30, 0xfb, 0xd2, 0x4c, 0xb3, 0x2e, 0x3c, 0x09, 0xd8, 0x81, + 0x6b, 0xc3, 0x46, 0x2f, 0x56, 0x3b, 0xfc, 0x9b, 0x95, 0xe8, 0xfb, 0xd6, 0xe3, 0xb1, 0x98, 0x24, + 0x97, 0xcb, 0x1a, 0x7a, 0xc3, 0xd2, 0x39, 0x2f, 0x07, 0xcf, 0x28, 0x6b, 0x6d, 0xd6, 0x94, 0xe0, + 0xf9, 0xad, 0x74, 0xe0, 0xdc, 0xd9, 0xc9, 0xf3, 0x74, 0x39, 0xe6, 0xb3, 0x3c, 0x25, 0xe7, 0x8e, + 0x87, 0x84, 0xe7, 0x0e, 0x44, 0x61, 0x56, 0x3e, 0x16, 0x55, 0xce, 0x8f, 0x66, 0xe5, 0x4a, 0x14, + 0xce, 0xca, 0x1b, 0x04, 0xe6, 0x4a, 0x63, 0xb1, 0x2b, 0xd2, 0x94, 0xc7, 0xb2, 0xfd, 0x04, 0xdb, + 0x68, 0x5a, 0x22, 0x9c, 0x2b, 0x01, 0xd2, 0x9e, 0xc6, 0x34, 0x7b, 0x48, 0x56, 0xf0, 0x97, 0xcb, + 0xa3, 0x24, 0xbb, 0x1e, 0xe0, 0x69, 0x81, 0x05, 0x88, 0xd3, 0x18, 0x14, 0x84, 0x7b, 0xd5, 0xf3, + 0x6c, 0x22, 0xf0, 0xbd, 0x6a, 0x25, 0x09, 0xef, 0x55, 0x35, 0x01, 0x4d, 0x9e, 0x71, 0xca, 0x64, + 0x25, 0x09, 0x9b, 0xd4, 0x04, 0x16, 0x0a, 0xf5, 0x99, 0x3d, 0x19, 0x0a, 0xc1, 0x29, 0xfd, 0x5a, + 0x27, 0x07, 0x47, 0x68, 0xb3, 0x69, 0xdd, 0xe7, 0x32, 0xbe, 0xc2, 0x47, 0xa8, 0x87, 0x84, 0x47, + 0x28, 0x44, 0x61, 0x95, 0xc6, 0xc2, 0x6c, 0xba, 0x57, 0xf1, 0xf1, 0xd1, 0xda, 0x70, 0xaf, 0x75, + 0x72, 0x70, 0x1b, 0x79, 0x38, 0x53, 0x6d, 0x86, 0x0e, 0xf2, 0x5a, 0x16, 0xde, 0x46, 0x1a, 0x06, + 0x96, 0xbe, 0x16, 0x54, 0xcd, 0x89, 0x97, 0xde, 0xca, 0xc3, 0xa5, 0xf7, 0x38, 0xed, 0xe4, 0x5f, + 0xcc, 0x36, 0xae, 0x96, 0x9e, 0x88, 0x6a, 0x8e, 0xbc, 0x61, 0x69, 0x32, 0x61, 0x92, 0x8f, 0xc5, + 0x35, 0xcf, 0xf0, 0x1d, 0x93, 0x2e, 0x6d, 0xcd, 0x0f, 0x3d, 0x85, 0xf0, 0x8e, 0x29, 0xac, 0x08, + 0xc7, 0x49, 0x4d, 0x9f, 0x97, 0x7c, 0x97, 0x95, 0x44, 0x24, 0xf3, 0x90, 0xf0, 0x38, 0x81, 0x28, + 0xcc, 0x57, 0x6b, 0xf9, 0xab, 0x77, 0x39, 0x2f, 0x12, 0x9e, 0xc5, 0x1c, 0xcf, 0x57, 0x21, 0x15, + 0xce, 0x57, 0x11, 0x1a, 0xee, 0xd5, 0xf6, 0x98, 0xe4, 0x2f, 0x97, 0xe3, 0x64, 0xc6, 0x4b, 0xc9, + 0x66, 0x39, 0xbe, 0x57, 0x03, 0x50, 0x78, 0xaf, 0xd6, 0x86, 0x5b, 0x47, 0x43, 0x26, 0x20, 0xb6, + 0x2f, 0xbe, 0x40, 0x22, 0x70, 0xf1, 0x85, 0x40, 0x61, 0xc3, 0x5a, 0x00, 0x3d, 0x1c, 0x6e, 0x59, + 0x09, 0x1e, 0x0e, 0xd3, 0x74, 0xeb, 0xc0, 0xcd, 0x30, 0xa3, 0x6a, 0x6a, 0x76, 0x14, 0x7d, 0xe4, + 0x4e, 0xd1, 0x8d, 0x5e, 0x2c, 0x7e, 0xc2, 0x77, 0xc6, 0x53, 0xa6, 0x96, 0xad, 0xc0, 0x31, 0x5a, + 0xc3, 0xf4, 0x39, 0xe1, 0x73, 0x58, 0xed, 0xf0, 0x2f, 0x56, 0xa2, 0x4f, 0x30, 0x8f, 0xaf, 0x73, + 0xe5, 0xf7, 0x69, 0xb7, 0xad, 0x9a, 0x24, 0x6e, 0xf6, 0x84, 0x35, 0x74, 0x19, 0xfe, 0x24, 0xfa, + 0xb8, 0x11, 0xd9, 0x8b, 0x3f, 0xba, 0x00, 0x7e, 0xd2, 0x66, 0xca, 0x0f, 0x39, 0xe3, 0x7e, 0xbb, + 0x37, 0x6f, 0xf7, 0x43, 0x7e, 0xb9, 0x4a, 0xb0, 0x1f, 0x32, 0x36, 0xb4, 0x98, 0xd8, 0x0f, 0x21, + 0x98, 0x9d, 0x9d, 0x6e, 0xf5, 0xde, 0x26, 0xf2, 0x4a, 0xe5, 0x5b, 0x60, 0x76, 0x7a, 0x65, 0x35, + 0x10, 0x31, 0x3b, 0x49, 0x18, 0x66, 0x24, 0x0d, 0x58, 0xcd, 0x4d, 0x2c, 0x96, 0x1b, 0x43, 0xee, + 0xcc, 0x5c, 0xef, 0x06, 0xe1, 0x78, 0x6d, 0xc4, 0x7a, 0xeb, 0xf3, 0x24, 0x64, 0x01, 0x6c, 0x7f, + 0x36, 0x7a, 0xb1, 0xda, 0xe1, 0x9f, 0x45, 0xdf, 0x6b, 0x55, 0x6c, 0x9f, 0x33, 0x39, 0x2f, 0xf8, + 0x64, 0xb0, 0xdd, 0x51, 0xee, 0x06, 0x34, 0xae, 0x9f, 0xf6, 0x57, 0x68, 0xe5, 0xe8, 0x0d, 0x57, + 0x0f, 0x2b, 0x53, 0x86, 0x67, 0x21, 0x93, 0x3e, 0x1b, 0xcc, 0xd1, 0x69, 0x9d, 0xd6, 0x36, 0xdb, + 0x1d, 0x5d, 0x3b, 0x0b, 0x96, 0xa4, 0xea, 0x21, 0xdd, 0x67, 0x21, 0xa3, 0x1e, 0x1a, 0xdc, 0x66, + 0x93, 0x2a, 0xad, 0xc8, 0xac, 0xe6, 0xb8, 0xb3, 0x3d, 0xdb, 0xa4, 0x23, 0x01, 0xb2, 0x3b, 0xdb, + 0xea, 0x49, 0x6b, 0xb7, 0xb2, 0x59, 0xf2, 0xaa, 0x9f, 0xdd, 0x41, 0x8e, 0x79, 0xd5, 0xaa, 0xc8, + 0x48, 0xdf, 0xea, 0x49, 0x6b, 0xaf, 0x7f, 0x1a, 0x7d, 0xdc, 0xf6, 0xaa, 0x17, 0xa2, 0xed, 0x4e, + 0x53, 0x60, 0x2d, 0x7a, 0xda, 0x5f, 0xc1, 0x6e, 0x69, 0xbe, 0x4a, 0x4a, 0x29, 0x8a, 0xe5, 0xe8, + 0x4a, 0xdc, 0x34, 0x17, 0xea, 0xfd, 0xd9, 0xaa, 0x81, 0xa1, 0x43, 0x10, 0x5b, 0x1a, 0x9c, 0x6c, + 0xb9, 0xb2, 0x17, 0xef, 0x4b, 0xc2, 0x95, 0x43, 0x74, 0xb8, 0xf2, 0x49, 0x1b, 0xab, 0x9a, 0x5a, + 0xd9, 0xb7, 0x04, 0xd6, 0xf0, 0xa2, 0xb6, 0xdf, 0x14, 0x58, 0xef, 0x06, 0x6d, 0xc6, 0xa2, 0xc5, + 0x7b, 0xc9, 0xe5, 0xa5, 0xa9, 0x13, 0x5e, 0x52, 0x17, 0x21, 0x32, 0x16, 0x02, 0xb5, 0x49, 0xf7, + 0x7e, 0x92, 0x72, 0x75, 0xa2, 0xff, 0xfa, 0xf2, 0x32, 0x15, 0x6c, 0x02, 0x92, 0xee, 0x4a, 0x3c, + 0x74, 0xe5, 0x44, 0xd2, 0x8d, 0x71, 0xf6, 0x19, 0x71, 0x25, 0x3d, 0xe3, 0xb1, 0xc8, 0xe2, 0x24, + 0x85, 0xf7, 0x0b, 0x95, 0xa6, 0x11, 0x12, 0xcf, 0x88, 0x5b, 0x90, 0x5d, 0x18, 0x2b, 0x51, 0x35, + 0xed, 0x9b, 0xf2, 0x3f, 0x6a, 0x2b, 0x3a, 0x62, 0x62, 0x61, 0x44, 0x30, 0xbb, 0xf7, 0xac, 0x84, + 0xe7, 0xb9, 0x32, 0x7e, 0xaf, 0xad, 0x55, 0x4b, 0x88, 0xbd, 0xa7, 0x4f, 0xd8, 0x3d, 0x54, 0xf5, + 0xfb, 0x9e, 0xb8, 0xc9, 0x94, 0xd1, 0x07, 0x6d, 0x95, 0x46, 0x46, 0xec, 0xa1, 0x20, 0xa3, 0x0d, + 0xff, 0x24, 0xfa, 0xff, 0xca, 0x70, 0x21, 0xf2, 0xc1, 0x1d, 0x44, 0xa1, 0x70, 0xee, 0xea, 0xdd, + 0x25, 0xe5, 0xf6, 0xaa, 0xa3, 0x19, 0x1b, 0xe7, 0x25, 0x9b, 0xc2, 0xab, 0x8e, 0xb6, 0xc7, 0x95, + 0x94, 0xb8, 0xea, 0xd8, 0xa6, 0xfc, 0x51, 0x71, 0x22, 0x26, 0xda, 0x3a, 0x52, 0x43, 0x23, 0x0c, + 0x8d, 0x0a, 0x17, 0xb2, 0xc9, 0xcc, 0x09, 0x5b, 0x24, 0x53, 0xb3, 0xe0, 0xd4, 0x71, 0xab, 0x04, + 0xc9, 0x8c, 0x65, 0x86, 0x0e, 0x44, 0x24, 0x33, 0x24, 0xac, 0x7d, 0xfe, 0xf3, 0x4a, 0x74, 0xcf, + 0x32, 0x07, 0xcd, 0x69, 0xdd, 0x61, 0x76, 0x29, 0xaa, 0xd4, 0xe7, 0x28, 0xc9, 0xae, 0xcb, 0xc1, + 0x17, 0x94, 0x49, 0x9c, 0x37, 0x45, 0xf9, 0xf2, 0xd6, 0x7a, 0x36, 0x6b, 0x6d, 0x8e, 0xb2, 0xec, + 0xf3, 0xec, 0x5a, 0x03, 0x64, 0xad, 0xe6, 0xc4, 0x0b, 0x72, 0x44, 0xd6, 0x1a, 0xe2, 0x6d, 0x17, + 0x1b, 0xe7, 0xa9, 0xc8, 0x60, 0x17, 0x5b, 0x0b, 0x95, 0x90, 0xe8, 0xe2, 0x16, 0x64, 0xe3, 0x71, + 0x23, 0xaa, 0x4f, 0x5d, 0x76, 0xd2, 0x14, 0xc4, 0x63, 0xa3, 0x6a, 0x00, 0x22, 0x1e, 0xa3, 0xa0, + 0xf6, 0x73, 0x16, 0x7d, 0xa7, 0x6a, 0xd2, 0xd3, 0x82, 0x2f, 0x12, 0x0e, 0xaf, 0x5e, 0x38, 0x12, + 0x62, 0xfe, 0xfb, 0x84, 0x9d, 0x59, 0xe7, 0x59, 0x99, 0xa7, 0xac, 0xbc, 0xd2, 0x0f, 0xe3, 0xfd, + 0x3a, 0x37, 0x42, 0xf8, 0x38, 0xfe, 0x51, 0x07, 0x65, 0x83, 0x7a, 0x23, 0x33, 0x21, 0x66, 0x15, + 0x57, 0x6d, 0x85, 0x99, 0xb5, 0x4e, 0xce, 0x9e, 0x78, 0x1f, 0xb0, 0x34, 0xe5, 0xc5, 0xb2, 0x91, + 0x1d, 0xb3, 0x2c, 0xb9, 0xe4, 0xa5, 0x04, 0x27, 0xde, 0x9a, 0x1a, 0x42, 0x8c, 0x38, 0xf1, 0x0e, + 0xe0, 0x36, 0x9b, 0x07, 0x9e, 0x0f, 0xb3, 0x09, 0x7f, 0x07, 0xb2, 0x79, 0x68, 0x47, 0x31, 0x44, + 0x36, 0x4f, 0xb1, 0xf6, 0xe4, 0xf7, 0x65, 0x2a, 0xe2, 0x6b, 0xbd, 0x04, 0xf8, 0x1d, 0xac, 0x24, + 0x70, 0x0d, 0x78, 0x10, 0x42, 0xec, 0x22, 0xa0, 0x04, 0x67, 0x3c, 0x4f, 0x59, 0x0c, 0xef, 0xdf, + 0xd4, 0x3a, 0x5a, 0x46, 0x2c, 0x02, 0x90, 0x01, 0xc5, 0xd5, 0xf7, 0x7a, 0xb0, 0xe2, 0x82, 0x6b, + 0x3d, 0x0f, 0x42, 0x88, 0x5d, 0x06, 0x95, 0x60, 0x94, 0xa7, 0x89, 0x04, 0xd3, 0xa0, 0xd6, 0x50, + 0x12, 0x62, 0x1a, 0xf8, 0x04, 0x30, 0x79, 0xcc, 0x8b, 0x29, 0x47, 0x4d, 0x2a, 0x49, 0xd0, 0x64, + 0x43, 0xd8, 0x4b, 0xa6, 0x75, 0xdd, 0x45, 0xbe, 0x04, 0x97, 0x4c, 0x75, 0xb5, 0x44, 0xbe, 0x24, + 0x2e, 0x99, 0x7a, 0x00, 0x28, 0xe2, 0x29, 0x2b, 0x25, 0x5e, 0x44, 0x25, 0x09, 0x16, 0xb1, 0x21, + 0xec, 0x1a, 0x5d, 0x17, 0x71, 0x2e, 0xc1, 0x1a, 0xad, 0x0b, 0xe0, 0x3c, 0x81, 0xbe, 0x4b, 0xca, + 0x6d, 0x24, 0xa9, 0x7b, 0x85, 0xcb, 0xfd, 0x84, 0xa7, 0x93, 0x12, 0x44, 0x12, 0xdd, 0xee, 0x8d, + 0x94, 0x88, 0x24, 0x6d, 0x0a, 0x0c, 0x25, 0x7d, 0x3e, 0x8e, 0xd5, 0x0e, 0x1c, 0x8d, 0x3f, 0x08, + 0x21, 0x36, 0x3e, 0x35, 0x85, 0xde, 0x65, 0x45, 0x91, 0x54, 0x8b, 0xff, 0x2a, 0x5e, 0xa0, 0x46, + 0x4e, 0xc4, 0x27, 0x8c, 0x03, 0xd3, 0xab, 0x09, 0xdc, 0x58, 0xc1, 0x60, 0xe8, 0xfe, 0x34, 0xc8, + 0xd8, 0x8c, 0x53, 0x49, 0x9c, 0x47, 0xa8, 0x58, 0x6b, 0x22, 0x4f, 0x50, 0x57, 0xbb, 0x30, 0xe7, + 0x25, 0x10, 0xe3, 0xe2, 0x58, 0x2c, 0xf8, 0x58, 0xbc, 0x7a, 0x97, 0x94, 0x32, 0xc9, 0xa6, 0x7a, + 0xe5, 0x7e, 0x4e, 0x58, 0xc2, 0x60, 0xe2, 0x25, 0x90, 0x4e, 0x25, 0x9b, 0x40, 0x80, 0xb2, 0x9c, + 0xf0, 0x1b, 0x34, 0x81, 0x80, 0x16, 0x0d, 0x47, 0x24, 0x10, 0x21, 0xde, 0x9e, 0xa3, 0x18, 0xe7, + 0xfa, 0x45, 0xdc, 0xb1, 0x68, 0x72, 0x39, 0xca, 0x1a, 0x04, 0x89, 0xad, 0x6c, 0x50, 0xc1, 0xee, + 0x2f, 0x8d, 0x7f, 0x3b, 0xc5, 0xd6, 0x09, 0x3b, 0xed, 0x69, 0xf6, 0xb8, 0x07, 0x89, 0xb8, 0xb2, + 0xf7, 0x00, 0x28, 0x57, 0xed, 0x6b, 0x00, 0x8f, 0x7b, 0x90, 0xce, 0x99, 0x8c, 0x5b, 0xad, 0x97, + 0x2c, 0xbe, 0x9e, 0x16, 0x62, 0x9e, 0x4d, 0x76, 0x45, 0x2a, 0x0a, 0x70, 0x26, 0xe3, 0x95, 0x1a, + 0xa0, 0xc4, 0x99, 0x4c, 0x87, 0x8a, 0xcd, 0xe0, 0xdc, 0x52, 0xec, 0xa4, 0xc9, 0x14, 0xee, 0xa8, + 0x3d, 0x43, 0x0a, 0x20, 0x32, 0x38, 0x14, 0x44, 0x06, 0x51, 0xbd, 0xe3, 0x96, 0x49, 0xcc, 0xd2, + 0xda, 0xdf, 0x36, 0x6d, 0xc6, 0x03, 0x3b, 0x07, 0x11, 0xa2, 0x80, 0xd4, 0x73, 0x3c, 0x2f, 0xb2, + 0xc3, 0x4c, 0x0a, 0xb2, 0x9e, 0x0d, 0xd0, 0x59, 0x4f, 0x07, 0x04, 0x61, 0x75, 0xcc, 0xdf, 0x55, + 0xa5, 0xa9, 0xfe, 0xc1, 0xc2, 0x6a, 0xf5, 0xfb, 0x50, 0xcb, 0x43, 0x61, 0x15, 0x70, 0xa0, 0x32, + 0xda, 0x49, 0x3d, 0x60, 0x02, 0xda, 0xfe, 0x30, 0x59, 0xef, 0x06, 0x71, 0x3f, 0x23, 0xb9, 0x4c, + 0x79, 0xc8, 0x8f, 0x02, 0xfa, 0xf8, 0x69, 0x40, 0x7b, 0xdc, 0xe2, 0xd5, 0xe7, 0x8a, 0xc7, 0xd7, + 0xad, 0x6b, 0x4d, 0x7e, 0x41, 0x6b, 0x84, 0x38, 0x6e, 0x21, 0x50, 0xbc, 0x8b, 0x0e, 0x63, 0x91, + 0x85, 0xba, 0xa8, 0x92, 0xf7, 0xe9, 0x22, 0xcd, 0xd9, 0xcd, 0xaf, 0x91, 0xea, 0x91, 0x59, 0x77, + 0xd3, 0x06, 0x61, 0xc1, 0x85, 0x88, 0xcd, 0x2f, 0x09, 0xdb, 0x9c, 0x1c, 0xfa, 0x3c, 0x6e, 0xdf, + 0xf9, 0x6e, 0x59, 0x39, 0xa6, 0xef, 0x7c, 0x53, 0x2c, 0x5d, 0xc9, 0x7a, 0x8c, 0x74, 0x58, 0xf1, + 0xc7, 0xc9, 0x66, 0x3f, 0xd8, 0x6e, 0x79, 0x3c, 0x9f, 0xbb, 0x29, 0x67, 0x45, 0xed, 0x75, 0x2b, + 0x60, 0xc8, 0x62, 0xc4, 0x96, 0x27, 0x80, 0x83, 0x10, 0xe6, 0x79, 0xde, 0x15, 0x99, 0xe4, 0x99, + 0xc4, 0x42, 0x98, 0x6f, 0x4c, 0x83, 0xa1, 0x10, 0x46, 0x29, 0x80, 0x71, 0xab, 0xce, 0x83, 0xb8, + 0x3c, 0x61, 0x33, 0x34, 0x63, 0xab, 0xcf, 0x7a, 0x6a, 0x79, 0x68, 0xdc, 0x02, 0xce, 0x79, 0xc8, + 0xe7, 0x7a, 0x19, 0xb3, 0x62, 0x6a, 0x4e, 0x37, 0x26, 0x83, 0xa7, 0xb4, 0x1d, 0x9f, 0x24, 0x1e, + 0xf2, 0x85, 0x35, 0x40, 0xd8, 0x39, 0x9c, 0xb1, 0xa9, 0xa9, 0x29, 0x52, 0x03, 0x25, 0x6f, 0x55, + 0x75, 0xbd, 0x1b, 0x04, 0x7e, 0xde, 0x24, 0x13, 0x2e, 0x02, 0x7e, 0x94, 0xbc, 0x8f, 0x1f, 0x08, + 0x82, 0xec, 0xad, 0xaa, 0x77, 0xbd, 0xa3, 0xdb, 0xc9, 0x26, 0x7a, 0x1f, 0x3b, 0x24, 0x9a, 0x07, + 0x70, 0xa1, 0xec, 0x8d, 0xe0, 0xc1, 0x1c, 0x6d, 0x0e, 0x68, 0x43, 0x73, 0xd4, 0x9c, 0xbf, 0xf6, + 0x99, 0xa3, 0x18, 0xac, 0x7d, 0xfe, 0x4c, 0xcf, 0xd1, 0x3d, 0x26, 0x59, 0x95, 0xb7, 0xbf, 0x49, + 0xf8, 0x8d, 0xde, 0x08, 0x23, 0xf5, 0x6d, 0xa8, 0xa1, 0x7a, 0x55, 0x11, 0xec, 0x8a, 0xb7, 0x7b, + 0xf3, 0x01, 0xdf, 0x7a, 0x87, 0xd0, 0xe9, 0x1b, 0x6c, 0x15, 0xb6, 0x7b, 0xf3, 0x01, 0xdf, 0xfa, + 0x1d, 0xe8, 0x4e, 0xdf, 0xe0, 0x45, 0xe8, 0xed, 0xde, 0xbc, 0xf6, 0xfd, 0x97, 0xcd, 0xc4, 0x75, + 0x9d, 0x57, 0x79, 0x58, 0x2c, 0x93, 0x05, 0xc7, 0xd2, 0x49, 0xdf, 0x9e, 0x41, 0x43, 0xe9, 0x24, + 0xad, 0xe2, 0x7c, 0x97, 0x07, 0x2b, 0xc5, 0xa9, 0x28, 0x13, 0xf5, 0x90, 0xfe, 0x79, 0x0f, 0xa3, + 0x0d, 0x1c, 0xda, 0x34, 0x85, 0x94, 0xec, 0xe3, 0x46, 0x0f, 0xb5, 0xb7, 0x98, 0x37, 0x03, 0xf6, + 0xda, 0x97, 0x99, 0xb7, 0x7a, 0xd2, 0xf6, 0xc1, 0x9f, 0xc7, 0xb8, 0x4f, 0x1c, 0x43, 0xbd, 0x8a, + 0x3e, 0x74, 0x7c, 0xda, 0x5f, 0x41, 0xbb, 0xff, 0xeb, 0x66, 0x5f, 0x01, 0xfd, 0xeb, 0x49, 0xf0, + 0xac, 0x8f, 0x45, 0x30, 0x11, 0x9e, 0xdf, 0x4a, 0x47, 0x17, 0xe4, 0xef, 0x9b, 0x0d, 0x74, 0x83, + 0xaa, 0x77, 0x39, 0xd4, 0xbb, 0x7f, 0x7a, 0x4e, 0x84, 0xba, 0xd5, 0xc2, 0x70, 0x66, 0xbc, 0xb8, + 0xa5, 0x96, 0xf3, 0x95, 0x26, 0x0f, 0xd6, 0xef, 0x1c, 0x3a, 0xe5, 0x09, 0x59, 0x76, 0x68, 0x58, + 0xa0, 0x2f, 0x6e, 0xab, 0x46, 0xcd, 0x15, 0x07, 0x56, 0x5f, 0x65, 0x78, 0xde, 0xd3, 0xb0, 0xf7, + 0x9d, 0x86, 0xcf, 0x6f, 0xa7, 0xa4, 0xcb, 0xf2, 0x1f, 0x2b, 0xd1, 0x23, 0x8f, 0xb5, 0xcf, 0x13, + 0xc0, 0xa9, 0xc7, 0x8f, 0x03, 0xf6, 0x29, 0x25, 0x53, 0xb8, 0xdf, 0xfd, 0xe5, 0x94, 0xed, 0x27, + 0x8d, 0x3c, 0x95, 0xfd, 0x24, 0x95, 0xbc, 0x68, 0x7f, 0xd2, 0xc8, 0xb7, 0x5b, 0x53, 0x43, 0xfa, + 0x93, 0x46, 0x01, 0xdc, 0xf9, 0xa4, 0x11, 0xe2, 0x19, 0xfd, 0xa4, 0x11, 0x6a, 0x2d, 0xf8, 0x49, + 0xa3, 0xb0, 0x06, 0x15, 0xde, 0x9b, 0x22, 0xd4, 0xe7, 0xd6, 0xbd, 0x2c, 0xfa, 0xc7, 0xd8, 0xcf, + 0x6e, 0xa3, 0x42, 0x2c, 0x70, 0x35, 0xa7, 0xee, 0xb9, 0xf5, 0x68, 0x53, 0xef, 0xae, 0xdb, 0x76, + 0x6f, 0x5e, 0xfb, 0xfe, 0xa9, 0xde, 0xdd, 0x98, 0x70, 0x2e, 0x0a, 0xf5, 0x39, 0xab, 0x8d, 0x50, + 0x78, 0xae, 0x2c, 0xb8, 0x3d, 0xbf, 0xd9, 0x0f, 0x26, 0xaa, 0x5b, 0x11, 0xba, 0xd3, 0x87, 0x5d, + 0x86, 0x40, 0x97, 0x6f, 0xf7, 0xe6, 0x89, 0x65, 0xa4, 0xf6, 0x5d, 0xf7, 0x76, 0x0f, 0x63, 0x7e, + 0x5f, 0x3f, 0xed, 0xaf, 0xa0, 0xdd, 0x2f, 0x74, 0xda, 0xe8, 0xba, 0x57, 0xfd, 0xbc, 0xd5, 0x65, + 0x6a, 0xe4, 0x75, 0xf3, 0xb0, 0x2f, 0x1e, 0x4a, 0x20, 0xdc, 0x25, 0xb4, 0x2b, 0x81, 0x40, 0x97, + 0xd1, 0xcf, 0x6f, 0xa7, 0xa4, 0xcb, 0xf2, 0x4f, 0x2b, 0xd1, 0x5d, 0xb2, 0x2c, 0x7a, 0x1c, 0x7c, + 0xd1, 0xd7, 0x32, 0x18, 0x0f, 0x5f, 0xde, 0x5a, 0x4f, 0x17, 0xea, 0x5f, 0x57, 0xa2, 0x7b, 0x81, + 0x42, 0xd5, 0x03, 0xe4, 0x16, 0xd6, 0xfd, 0x81, 0xf2, 0xc3, 0xdb, 0x2b, 0x52, 0xcb, 0xbd, 0x8b, + 0x8f, 0xda, 0x1f, 0xe3, 0x09, 0xd8, 0x1e, 0xd1, 0x1f, 0xe3, 0xe9, 0xd6, 0x82, 0x87, 0x3c, 0xec, + 0xa2, 0xd9, 0x74, 0xa1, 0x87, 0x3c, 0xea, 0x86, 0x1a, 0xd8, 0x73, 0xac, 0x75, 0x72, 0x98, 0x93, + 0x57, 0xef, 0x72, 0x96, 0x4d, 0x68, 0x27, 0xb5, 0xbc, 0xdb, 0x89, 0xe1, 0xe0, 0xe1, 0x58, 0x25, + 0x3d, 0x13, 0xcd, 0x46, 0xea, 0x31, 0xa5, 0x6f, 0x90, 0xe0, 0xe1, 0x58, 0x0b, 0x25, 0xbc, 0xe9, + 0xac, 0x31, 0xe4, 0x0d, 0x24, 0x8b, 0x4f, 0xfa, 0xa0, 0x20, 0x45, 0x37, 0xde, 0xcc, 0x99, 0xfb, + 0x66, 0xc8, 0x4a, 0xeb, 0xdc, 0x7d, 0xab, 0x27, 0x4d, 0xb8, 0x1d, 0x71, 0xf9, 0x15, 0x67, 0x13, + 0x5e, 0x04, 0xdd, 0x1a, 0xaa, 0x97, 0x5b, 0x97, 0xc6, 0xdc, 0xee, 0x8a, 0x74, 0x3e, 0xcb, 0x74, + 0x67, 0x92, 0x6e, 0x5d, 0xaa, 0xdb, 0x2d, 0xa0, 0xe1, 0xb1, 0xa0, 0x75, 0xab, 0xd2, 0xcb, 0x27, + 0x61, 0x33, 0x5e, 0x56, 0xb9, 0xd1, 0x8b, 0xa5, 0xeb, 0xa9, 0x87, 0x51, 0x47, 0x3d, 0xc1, 0x48, + 0xda, 0xea, 0x49, 0xc3, 0xf3, 0x39, 0xc7, 0xad, 0x19, 0x4f, 0xdb, 0x1d, 0xb6, 0x5a, 0x43, 0xea, + 0x69, 0x7f, 0x05, 0x78, 0x1a, 0xaa, 0x47, 0xd5, 0x51, 0x52, 0xca, 0xfd, 0x24, 0x4d, 0x07, 0x1b, + 0x81, 0x61, 0xd2, 0x40, 0xc1, 0xd3, 0x50, 0x04, 0x26, 0x46, 0x72, 0x73, 0x7a, 0x98, 0x0d, 0xba, + 0xec, 0x28, 0xaa, 0xd7, 0x48, 0x76, 0x69, 0x70, 0xa2, 0xe5, 0x34, 0xb5, 0xa9, 0xed, 0x30, 0xdc, + 0x70, 0xad, 0x0a, 0x6f, 0xf7, 0xe6, 0xc1, 0xe3, 0x76, 0x45, 0xa9, 0x95, 0xe5, 0x21, 0x65, 0xc2, + 0x5b, 0x49, 0x1e, 0x75, 0x50, 0xe0, 0x54, 0xb0, 0x9e, 0x46, 0x6f, 0x93, 0xc9, 0x94, 0x4b, 0xf4, + 0x49, 0x91, 0x0b, 0x04, 0x9f, 0x14, 0x01, 0x10, 0x74, 0x5d, 0xfd, 0xbb, 0x39, 0x0e, 0x3d, 0x9c, + 0x60, 0x5d, 0xa7, 0x95, 0x1d, 0x2a, 0xd4, 0x75, 0x28, 0x0d, 0xa2, 0x81, 0x71, 0xab, 0x5f, 0xc7, + 0x7f, 0x12, 0x32, 0x03, 0xde, 0xc9, 0xdf, 0xe8, 0xc5, 0x82, 0x15, 0xc5, 0x3a, 0x4c, 0x66, 0x89, + 0xc4, 0x56, 0x14, 0xc7, 0x46, 0x85, 0x84, 0x56, 0x94, 0x36, 0x4a, 0x55, 0xaf, 0xca, 0x11, 0x0e, + 0x27, 0xe1, 0xea, 0xd5, 0x4c, 0xbf, 0xea, 0x19, 0xb6, 0xf5, 0x60, 0x33, 0x33, 0x43, 0x46, 0x5e, + 0xe9, 0xcd, 0x32, 0x32, 0xb6, 0xd5, 0x6b, 0x9a, 0x10, 0x0c, 0x45, 0x1d, 0x4a, 0x01, 0x1e, 0xd8, + 0x57, 0x5c, 0xf3, 0xec, 0x35, 0xcf, 0x39, 0x2b, 0x58, 0x16, 0xa3, 0x9b, 0x53, 0x65, 0xb0, 0x45, + 0x86, 0x36, 0xa7, 0xa4, 0x06, 0x78, 0x6c, 0xee, 0xbf, 0x60, 0x89, 0x4c, 0x05, 0xf3, 0x26, 0xa3, + 0xff, 0x7e, 0xe5, 0xe3, 0x1e, 0x24, 0x7c, 0x6c, 0xde, 0x00, 0xe6, 0xe0, 0xbb, 0x76, 0xfa, 0x59, + 0xc0, 0x94, 0x8f, 0x86, 0x36, 0xc2, 0xb4, 0x0a, 0x18, 0xd4, 0x26, 0xc1, 0xe5, 0xf2, 0x27, 0x7c, + 0x89, 0x0d, 0x6a, 0x9b, 0x9f, 0x2a, 0x24, 0x34, 0xa8, 0xdb, 0x28, 0xc8, 0x33, 0xdd, 0x7d, 0xd0, + 0x6a, 0x40, 0xdf, 0xdd, 0xfa, 0xac, 0x75, 0x72, 0x60, 0xe6, 0xec, 0x25, 0x0b, 0xef, 0x39, 0x01, + 0x52, 0xd0, 0xbd, 0x64, 0x81, 0x3f, 0x26, 0xd8, 0xe8, 0xc5, 0xc2, 0x47, 0xf2, 0x4c, 0xf2, 0x77, + 0xcd, 0xb3, 0x72, 0xa4, 0xb8, 0x4a, 0xde, 0x7a, 0x58, 0xbe, 0xde, 0x0d, 0xda, 0x0b, 0xb0, 0xa7, + 0x85, 0x88, 0x79, 0x59, 0xea, 0x2f, 0x14, 0xfa, 0x37, 0x8c, 0xb4, 0x6c, 0x08, 0xbe, 0x4f, 0xf8, + 0x30, 0x0c, 0xd9, 0x9e, 0xd1, 0x22, 0xfb, 0xd5, 0x9b, 0x55, 0x54, 0xb3, 0xfd, 0xc1, 0x9b, 0xb5, + 0x4e, 0xce, 0x4e, 0x2f, 0x2d, 0x75, 0x3f, 0x73, 0xb3, 0x8e, 0xaa, 0x63, 0x5f, 0xb8, 0x79, 0xdc, + 0x83, 0xd4, 0xae, 0xbe, 0x8a, 0xde, 0x3f, 0x12, 0xd3, 0x11, 0xcf, 0x26, 0x83, 0x1f, 0xf8, 0x57, + 0x68, 0xc5, 0x74, 0x58, 0xfd, 0x6c, 0x8c, 0xde, 0xa1, 0xc4, 0xf6, 0x12, 0xe0, 0x1e, 0xbf, 0x98, + 0x4f, 0x47, 0x92, 0x49, 0x70, 0x09, 0x50, 0xfd, 0x3e, 0xac, 0x04, 0xc4, 0x25, 0x40, 0x0f, 0x00, + 0xf6, 0xc6, 0x05, 0xe7, 0xa8, 0xbd, 0x4a, 0x10, 0xb4, 0xa7, 0x01, 0x9b, 0x45, 0x18, 0x7b, 0x55, + 0xa2, 0x0e, 0x2f, 0xed, 0x59, 0x1d, 0x25, 0x25, 0xb2, 0x88, 0x36, 0x65, 0x07, 0x77, 0x5d, 0x7d, + 0xf5, 0xd5, 0x91, 0xf9, 0x6c, 0xc6, 0x8a, 0x25, 0x18, 0xdc, 0xba, 0x96, 0x0e, 0x40, 0x0c, 0x6e, + 0x14, 0xb4, 0xb3, 0xb6, 0x69, 0xe6, 0xf8, 0xfa, 0x40, 0x14, 0x62, 0x2e, 0x93, 0x8c, 0xc3, 0x2f, + 0x4f, 0x98, 0x06, 0x75, 0x19, 0x62, 0xd6, 0x52, 0xac, 0xcd, 0x72, 0x15, 0x51, 0xdf, 0x27, 0x54, + 0xdf, 0x2d, 0x2e, 0xa5, 0x28, 0xe0, 0xf3, 0xc4, 0xda, 0x0a, 0x84, 0x88, 0x2c, 0x97, 0x84, 0x41, + 0xdf, 0x9f, 0x26, 0xd9, 0x14, 0xed, 0xfb, 0x53, 0xf7, 0xab, 0x9f, 0xf7, 0x68, 0xc0, 0x4e, 0xa8, + 0xba, 0xd1, 0xea, 0x09, 0xa0, 0xdf, 0xe5, 0x44, 0x1b, 0xdd, 0x25, 0x88, 0x09, 0x85, 0x93, 0xc0, + 0xd5, 0xeb, 0x9c, 0x67, 0x7c, 0xd2, 0xdc, 0x9a, 0xc3, 0x5c, 0x79, 0x44, 0xd0, 0x15, 0x24, 0x6d, + 0x2c, 0x52, 0xf2, 0xb3, 0x79, 0x76, 0x5a, 0x88, 0xcb, 0x24, 0xe5, 0x05, 0x88, 0x45, 0xb5, 0xba, + 0x23, 0x27, 0x62, 0x11, 0xc6, 0xd9, 0xeb, 0x17, 0x4a, 0xea, 0x7d, 0xdb, 0x7b, 0x5c, 0xb0, 0x18, + 0x5e, 0xbf, 0xa8, 0x6d, 0xb4, 0x31, 0xe2, 0x64, 0x30, 0x80, 0x3b, 0x89, 0x4e, 0xed, 0x3a, 0x5b, + 0xaa, 0xf1, 0xa1, 0xdf, 0x25, 0x54, 0xdf, 0xc2, 0x2c, 0x41, 0xa2, 0xa3, 0xcd, 0x61, 0x24, 0x91, + 0xe8, 0x84, 0x35, 0xec, 0x52, 0xa2, 0xb8, 0x13, 0x7d, 0xad, 0x08, 0x2c, 0x25, 0xb5, 0x8d, 0x46, + 0x48, 0x2c, 0x25, 0x2d, 0x08, 0x04, 0xa4, 0x66, 0x1a, 0x4c, 0xd1, 0x80, 0x64, 0xa4, 0xc1, 0x80, + 0xe4, 0x52, 0x36, 0x50, 0x1c, 0x66, 0x89, 0x4c, 0x58, 0x3a, 0xe2, 0xf2, 0x94, 0x15, 0x6c, 0xc6, + 0x25, 0x2f, 0x60, 0xa0, 0xd0, 0xc8, 0xd0, 0x63, 0x88, 0x40, 0x41, 0xb1, 0xda, 0xe1, 0xef, 0x45, + 0x1f, 0x56, 0xeb, 0x3e, 0xcf, 0xf4, 0x5f, 0xf1, 0x78, 0xa5, 0xfe, 0xfc, 0xcf, 0xe0, 0x23, 0x63, + 0x63, 0x24, 0x0b, 0xce, 0x66, 0x8d, 0xed, 0x0f, 0xcc, 0xef, 0x0a, 0x7c, 0xba, 0x52, 0x8d, 0xe7, + 0x13, 0x21, 0x93, 0xcb, 0x6a, 0x9b, 0xad, 0xdf, 0x20, 0x02, 0xe3, 0xd9, 0x15, 0x0f, 0x03, 0xdf, + 0xa2, 0xc0, 0x38, 0x1b, 0xa7, 0x5d, 0xe9, 0x19, 0xcf, 0x53, 0x18, 0xa7, 0x3d, 0x6d, 0x05, 0x10, + 0x71, 0x1a, 0x05, 0xed, 0xe4, 0x74, 0xc5, 0x63, 0x1e, 0xae, 0xcc, 0x98, 0xf7, 0xab, 0xcc, 0xd8, + 0x7b, 0x29, 0x23, 0x8d, 0x3e, 0x3c, 0xe6, 0xb3, 0x0b, 0x5e, 0x94, 0x57, 0x49, 0x7e, 0x50, 0x25, + 0x5c, 0x4c, 0xce, 0xe1, 0x6b, 0x8b, 0x96, 0x18, 0x1a, 0x84, 0xc8, 0x4a, 0x09, 0xd4, 0xae, 0x04, + 0x16, 0x38, 0x2c, 0x4f, 0xd8, 0x8c, 0xab, 0x2f, 0x6b, 0x80, 0x95, 0xc0, 0x31, 0xe2, 0x40, 0xc4, + 0x4a, 0x40, 0xc2, 0xce, 0xfb, 0x5d, 0x96, 0x39, 0xe3, 0xd3, 0x6a, 0x84, 0x15, 0xa7, 0x6c, 0x39, + 0xe3, 0x99, 0xd4, 0x26, 0xc1, 0x99, 0xbc, 0x63, 0x12, 0xe7, 0x89, 0x33, 0xf9, 0x3e, 0x7a, 0x4e, + 0x68, 0xf2, 0x1a, 0xfe, 0x54, 0x14, 0xb2, 0xfe, 0x1b, 0x3d, 0xe7, 0x45, 0x0a, 0x42, 0x93, 0xdf, + 0xa8, 0x1e, 0x49, 0x84, 0xa6, 0xb0, 0x86, 0xf3, 0xf5, 0x79, 0xaf, 0x0c, 0x6f, 0x78, 0x61, 0xc6, + 0xc9, 0xab, 0x19, 0x4b, 0x52, 0x3d, 0x1a, 0x7e, 0x14, 0xb0, 0x4d, 0xe8, 0x10, 0x5f, 0x9f, 0xef, + 0xab, 0xeb, 0x7c, 0xaf, 0x3f, 0x5c, 0x42, 0xf0, 0x88, 0xa0, 0xc3, 0x3e, 0xf1, 0x88, 0xa0, 0x5b, + 0xcb, 0xee, 0xdc, 0x2d, 0xab, 0xb8, 0xa5, 0x22, 0x76, 0xc5, 0x04, 0x9e, 0x17, 0x3a, 0x36, 0x01, + 0x48, 0xec, 0xdc, 0x83, 0x0a, 0x36, 0x35, 0xb0, 0xd8, 0x7e, 0x92, 0xb1, 0x34, 0xf9, 0x19, 0x4c, + 0xeb, 0x1d, 0x3b, 0x0d, 0x41, 0xa4, 0x06, 0x38, 0x89, 0xb9, 0x3a, 0xe0, 0x72, 0x9c, 0x54, 0xa1, + 0x7f, 0x3d, 0xd0, 0x6e, 0x8a, 0xe8, 0x76, 0xe5, 0x90, 0xce, 0x37, 0x5a, 0x61, 0xb3, 0xee, 0xe4, + 0xf9, 0xa8, 0x5a, 0x55, 0xcf, 0x78, 0xcc, 0x93, 0x5c, 0x0e, 0x5e, 0x84, 0xdb, 0x0a, 0xe0, 0xc4, + 0x45, 0x8b, 0x1e, 0x6a, 0xce, 0xe3, 0xfb, 0x2a, 0x96, 0x8c, 0xea, 0x3f, 0x5e, 0x77, 0x5e, 0xf2, + 0x42, 0x27, 0x1a, 0x07, 0x5c, 0x82, 0xd9, 0xe9, 0x70, 0x43, 0x07, 0xac, 0x2a, 0x4a, 0xcc, 0xce, + 0xb0, 0x86, 0x3d, 0xec, 0x73, 0xb8, 0x33, 0x5e, 0x8a, 0x74, 0xc1, 0xd5, 0x7d, 0xc3, 0x4d, 0xd2, + 0x98, 0x43, 0x11, 0x87, 0x7d, 0x34, 0x6d, 0xb3, 0xb5, 0xb6, 0xdb, 0x9d, 0x6c, 0x79, 0x08, 0xaf, + 0x4c, 0x20, 0x96, 0x14, 0x46, 0x64, 0x6b, 0x01, 0xdc, 0x39, 0x0c, 0x2f, 0x04, 0x9b, 0xc4, 0xac, + 0x94, 0xa7, 0x6c, 0x99, 0x0a, 0x36, 0x51, 0xeb, 0x3a, 0x3c, 0x0c, 0x6f, 0x98, 0xa1, 0x0b, 0x51, + 0x87, 0xe1, 0x14, 0xec, 0x66, 0x67, 0xea, 0x6f, 0xf2, 0xe9, 0xbb, 0x9c, 0x30, 0x3b, 0x53, 0xe5, + 0x85, 0xf7, 0x38, 0x1f, 0x86, 0x21, 0xfb, 0x0e, 0x5a, 0x2d, 0x52, 0x69, 0xc8, 0x3d, 0x4c, 0xc7, + 0x4b, 0x40, 0xee, 0x07, 0x08, 0xfb, 0x5d, 0x8a, 0xfa, 0xf7, 0xe6, 0xef, 0xbe, 0x48, 0xfd, 0x25, + 0xeb, 0x4d, 0x4c, 0xd7, 0x85, 0x86, 0xee, 0x07, 0xee, 0xb6, 0x7a, 0xd2, 0x36, 0xcd, 0xdc, 0xbd, + 0x62, 0x72, 0x67, 0x32, 0x39, 0xe6, 0x25, 0xf2, 0x42, 0x79, 0x25, 0x1c, 0x5a, 0x29, 0x91, 0x66, + 0xb6, 0x29, 0x3b, 0xd0, 0x2b, 0xd9, 0xab, 0x49, 0x22, 0xb5, 0xac, 0xb9, 0x21, 0xbd, 0xd9, 0x36, + 0xd0, 0xa6, 0x88, 0x5a, 0xd1, 0xb4, 0x8d, 0xe5, 0x15, 0x33, 0x16, 0xd3, 0x69, 0xca, 0x35, 0x74, + 0xc6, 0x59, 0xfd, 0x21, 0xbf, 0xed, 0xb6, 0x2d, 0x14, 0x24, 0x62, 0x79, 0x50, 0xc1, 0xa6, 0x91, + 0x15, 0x56, 0x3f, 0x92, 0x6a, 0x1a, 0x76, 0xad, 0x6d, 0xc6, 0x03, 0x88, 0x34, 0x12, 0x05, 0xed, + 0x7b, 0x6f, 0x95, 0xf8, 0x80, 0x37, 0x2d, 0x01, 0x3f, 0x41, 0xa4, 0x94, 0x1d, 0x31, 0xf1, 0xde, + 0x1b, 0x82, 0xd9, 0x7d, 0x02, 0xf0, 0xf0, 0x72, 0x79, 0x38, 0x81, 0xfb, 0x04, 0xa8, 0xaf, 0x18, + 0x62, 0x9f, 0x40, 0xb1, 0x7e, 0xd7, 0x99, 0x73, 0xaf, 0x23, 0x56, 0xda, 0xca, 0x21, 0x5d, 0x87, + 0x82, 0xa1, 0xae, 0xa3, 0x14, 0xfc, 0x26, 0x75, 0x8f, 0xd6, 0x90, 0x26, 0xc5, 0xce, 0xd5, 0x56, + 0xbb, 0x30, 0x1b, 0x97, 0xcc, 0x7e, 0x52, 0x5d, 0x59, 0xc2, 0xbf, 0xe0, 0x5f, 0x0b, 0x89, 0xb8, + 0xd4, 0x82, 0x6a, 0xdb, 0x2f, 0xef, 0xff, 0xd7, 0x37, 0x77, 0x56, 0x7e, 0xf1, 0xcd, 0x9d, 0x95, + 0xff, 0xf9, 0xe6, 0xce, 0xca, 0xcf, 0xbf, 0xbd, 0xf3, 0xde, 0x2f, 0xbe, 0xbd, 0xf3, 0xde, 0x7f, + 0x7f, 0x7b, 0xe7, 0xbd, 0xaf, 0xdf, 0xd7, 0x7f, 0xab, 0xf5, 0xe2, 0xff, 0xa9, 0xbf, 0xb8, 0xfa, + 0xfc, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x1c, 0xa0, 0x43, 0x0e, 0xcf, 0x75, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -402,6 +403,7 @@ type ClientCommandsClient interface { AccountDelete(ctx context.Context, in *pb.RpcAccountDeleteRequest, opts ...grpc.CallOption) (*pb.RpcAccountDeleteResponse, error) AccountRevertDeletion(ctx context.Context, in *pb.RpcAccountRevertDeletionRequest, opts ...grpc.CallOption) (*pb.RpcAccountRevertDeletionResponse, error) AccountSelect(ctx context.Context, in *pb.RpcAccountSelectRequest, opts ...grpc.CallOption) (*pb.RpcAccountSelectResponse, error) + AccountMigrate(ctx context.Context, in *pb.RpcAccountMigrateRequest, opts ...grpc.CallOption) (*pb.RpcAccountMigrateResponse, error) AccountEnableLocalNetworkSync(ctx context.Context, in *pb.RpcAccountEnableLocalNetworkSyncRequest, opts ...grpc.CallOption) (*pb.RpcAccountEnableLocalNetworkSyncResponse, error) AccountStop(ctx context.Context, in *pb.RpcAccountStopRequest, opts ...grpc.CallOption) (*pb.RpcAccountStopResponse, error) AccountMove(ctx context.Context, in *pb.RpcAccountMoveRequest, opts ...grpc.CallOption) (*pb.RpcAccountMoveResponse, error) @@ -937,6 +939,15 @@ func (c *clientCommandsClient) AccountSelect(ctx context.Context, in *pb.RpcAcco return out, nil } +func (c *clientCommandsClient) AccountMigrate(ctx context.Context, in *pb.RpcAccountMigrateRequest, opts ...grpc.CallOption) (*pb.RpcAccountMigrateResponse, error) { + out := new(pb.RpcAccountMigrateResponse) + err := c.cc.Invoke(ctx, "/anytype.ClientCommands/AccountMigrate", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *clientCommandsClient) AccountEnableLocalNetworkSync(ctx context.Context, in *pb.RpcAccountEnableLocalNetworkSyncRequest, opts ...grpc.CallOption) (*pb.RpcAccountEnableLocalNetworkSyncResponse, error) { out := new(pb.RpcAccountEnableLocalNetworkSyncResponse) err := c.cc.Invoke(ctx, "/anytype.ClientCommands/AccountEnableLocalNetworkSync", in, out, opts...) @@ -3198,6 +3209,7 @@ type ClientCommandsServer interface { AccountDelete(context.Context, *pb.RpcAccountDeleteRequest) *pb.RpcAccountDeleteResponse AccountRevertDeletion(context.Context, *pb.RpcAccountRevertDeletionRequest) *pb.RpcAccountRevertDeletionResponse AccountSelect(context.Context, *pb.RpcAccountSelectRequest) *pb.RpcAccountSelectResponse + AccountMigrate(context.Context, *pb.RpcAccountMigrateRequest) *pb.RpcAccountMigrateResponse AccountEnableLocalNetworkSync(context.Context, *pb.RpcAccountEnableLocalNetworkSyncRequest) *pb.RpcAccountEnableLocalNetworkSyncResponse AccountStop(context.Context, *pb.RpcAccountStopRequest) *pb.RpcAccountStopResponse AccountMove(context.Context, *pb.RpcAccountMoveRequest) *pb.RpcAccountMoveResponse @@ -3579,6 +3591,9 @@ func (*UnimplementedClientCommandsServer) AccountRevertDeletion(ctx context.Cont func (*UnimplementedClientCommandsServer) AccountSelect(ctx context.Context, req *pb.RpcAccountSelectRequest) *pb.RpcAccountSelectResponse { return nil } +func (*UnimplementedClientCommandsServer) AccountMigrate(ctx context.Context, req *pb.RpcAccountMigrateRequest) *pb.RpcAccountMigrateResponse { + return nil +} func (*UnimplementedClientCommandsServer) AccountEnableLocalNetworkSync(ctx context.Context, req *pb.RpcAccountEnableLocalNetworkSyncRequest) *pb.RpcAccountEnableLocalNetworkSyncResponse { return nil } @@ -4769,6 +4784,24 @@ func _ClientCommands_AccountSelect_Handler(srv interface{}, ctx context.Context, return interceptor(ctx, in, info, handler) } +func _ClientCommands_AccountMigrate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(pb.RpcAccountMigrateRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ClientCommandsServer).AccountMigrate(ctx, in), nil + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/anytype.ClientCommands/AccountMigrate", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ClientCommandsServer).AccountMigrate(ctx, req.(*pb.RpcAccountMigrateRequest)), nil + } + return interceptor(ctx, in, info, handler) +} + func _ClientCommands_AccountEnableLocalNetworkSync_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(pb.RpcAccountEnableLocalNetworkSyncRequest) if err := dec(in); err != nil { @@ -9287,6 +9320,10 @@ var _ClientCommands_serviceDesc = grpc.ServiceDesc{ MethodName: "AccountSelect", Handler: _ClientCommands_AccountSelect_Handler, }, + { + MethodName: "AccountMigrate", + Handler: _ClientCommands_AccountMigrate_Handler, + }, { MethodName: "AccountEnableLocalNetworkSync", Handler: _ClientCommands_AccountEnableLocalNetworkSync_Handler, diff --git a/space/spacecore/oldstorage/storage.go b/space/spacecore/oldstorage/storage.go new file mode 100644 index 000000000..4eb659cca --- /dev/null +++ b/space/spacecore/oldstorage/storage.go @@ -0,0 +1,59 @@ +package oldstorage + +import ( + "context" + "fmt" + + "github.com/anyproto/any-sync/app" + "github.com/anyproto/any-sync/commonspace/spacestorage" + "github.com/anyproto/any-sync/commonspace/spacestorage/oldstorage" + + "github.com/anyproto/anytype-heart/space/spacecore/storage/badgerstorage" + "github.com/anyproto/anytype-heart/space/spacecore/storage/sqlitestorage" +) + +type SpaceStorageMode int + +const ( + SpaceStorageModeSqlite SpaceStorageMode = iota // used for new account repos + SpaceStorageModeBadger // used for existing account repos +) + +type ClientStorage interface { + oldstorage.SpaceStorageProvider + app.ComponentRunnable + AllSpaceIds() (ids []string, err error) + DeleteSpaceStorage(ctx context.Context, spaceId string) error +} + +// storageService is a proxy for the actual storage implementation +type storageService struct { + ClientStorage +} + +func New() ClientStorage { + return &storageService{} +} + +type configGetter interface { + GetSpaceStorageMode() SpaceStorageMode +} + +func (s *storageService) Name() (name string) { + return spacestorage.CName +} + +func (s *storageService) Init(a *app.App) (err error) { + mode := a.MustComponent("config").(configGetter).GetSpaceStorageMode() + if mode == SpaceStorageModeBadger { + // for already existing account repos + s.ClientStorage = badgerstorage.New() + } else if mode == SpaceStorageModeSqlite { + // sqlite used for new account repos + s.ClientStorage = sqlitestorage.New() + } else { + return fmt.Errorf("unknown storage mode %d", mode) + } + + return s.ClientStorage.Init(a) +} diff --git a/space/spacecore/storage/anystorage/storageservice.go b/space/spacecore/storage/anystorage/storageservice.go index ee43cb45b..30ff94541 100644 --- a/space/spacecore/storage/anystorage/storageservice.go +++ b/space/spacecore/storage/anystorage/storageservice.go @@ -108,13 +108,14 @@ func (s *storageContainer) TryClose(objectTTL time.Duration) (res bool, err erro return true, nil } -func New() *storageService { - return &storageService{} +func New(rootPath string) *storageService { + return &storageService{ + rootPath: rootPath, + } } type storageService struct { rootPath string - tempPath string cache ocache.OCache } @@ -159,7 +160,6 @@ func (s *storageService) Close(ctx context.Context) (err error) { func (s *storageService) Init(a *app.App) (err error) { s.rootPath = a.MustComponent("config").(configGetter).GetSpaceStorePath() - s.tempPath = a.MustComponent("config").(configGetter).GetTempDirPath() s.cache = ocache.New(s.loadFunc, ocache.WithLogger(log.Sugar()), ocache.WithGCPeriod(time.Minute), diff --git a/space/spacecore/storage/migrator/migrator.go b/space/spacecore/storage/migrator/migrator.go new file mode 100644 index 000000000..5f0f6ba6c --- /dev/null +++ b/space/spacecore/storage/migrator/migrator.go @@ -0,0 +1,56 @@ +package migrator + +import ( + "context" + + "github.com/anyproto/any-sync/app" + + "github.com/anyproto/any-sync/commonspace/spacestorage/migration" + + "github.com/anyproto/anytype-heart/space/spacecore/oldstorage" + "github.com/anyproto/anytype-heart/space/spacecore/storage" +) + +const CName = "client.storage.migration" + +type migrator struct { + storage oldstorage.ClientStorage + newStorage storage.ClientStorage +} + +func New() app.ComponentRunnable { + return &migrator{} +} + +func (m *migrator) Init(a *app.App) (err error) { + m.storage = app.MustComponent[oldstorage.ClientStorage](a) + m.newStorage = app.MustComponent[storage.ClientStorage](a) + return nil +} + +func (m *migrator) Name() (name string) { + return CName +} + +func (m *migrator) Run(ctx context.Context) (err error) { + migrator := migration.NewSpaceMigrator(m.storage, m.newStorage, 10) + allIds, err := m.storage.AllSpaceIds() + if err != nil { + return err + } + for _, id := range allIds { + st, err := migrator.MigrateId(ctx, id) + if err != nil { + return err + } + err = st.Close(ctx) + if err != nil { + return err + } + } + return nil +} + +func (m *migrator) Close(ctx context.Context) (err error) { + return nil +} diff --git a/space/spacecore/storage/storage.go b/space/spacecore/storage/storage.go index f55f895f6..55501aab9 100644 --- a/space/spacecore/storage/storage.go +++ b/space/spacecore/storage/storage.go @@ -33,7 +33,8 @@ func New() ClientStorage { } type configGetter interface { - GetSpaceStorageMode() SpaceStorageMode + GetSpaceStorePath() string + GetTempDirPath() string } func (s *storageService) Name() (name string) { @@ -41,6 +42,7 @@ func (s *storageService) Name() (name string) { } func (s *storageService) Init(a *app.App) (err error) { - s.ClientStorage = anystorage.New() + rootPath := a.MustComponent("config").(configGetter).GetSpaceStorePath() + s.ClientStorage = anystorage.New(rootPath) return s.ClientStorage.Init(a) } From 6aa11620610d1073fe847c29b45afd1522422854 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Mon, 6 Jan 2025 20:51:19 +0100 Subject: [PATCH 108/279] GO-4459: Fix object search crash by avoiding nil object type filters --- cmd/api/search/service.go | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/cmd/api/search/service.go b/cmd/api/search/service.go index f95363f65..0014e7eaa 100644 --- a/cmd/api/search/service.go +++ b/cmd/api/search/service.go @@ -105,7 +105,9 @@ func (s *SearchService) Search(ctx context.Context, searchQuery string, objectTy func (s *SearchService) combineFilters(operator model.BlockContentDataviewFilterOperator, filterGroups ...[]*model.BlockContentDataviewFilter) []*model.BlockContentDataviewFilter { nestedFilters := make([]*model.BlockContentDataviewFilter, 0) for _, group := range filterGroups { - nestedFilters = append(nestedFilters, group...) + if len(group) > 0 { + nestedFilters = append(nestedFilters, group...) + } } if len(nestedFilters) == 0 { @@ -181,8 +183,8 @@ func (s *SearchService) prepareObjectTypeFilters(spaceId string, objectTypes []s } // Prepare nested filters for each object type - nestedFilters := make([]*model.BlockContentDataviewFilter, len(objectTypes)) - for i, objectType := range objectTypes { + nestedFilters := make([]*model.BlockContentDataviewFilter, 0, len(objectTypes)) + for _, objectType := range objectTypes { typeId := objectType if strings.HasPrefix(objectType, "ot-") { @@ -193,12 +195,16 @@ func (s *SearchService) prepareObjectTypeFilters(spaceId string, objectTypes []s } } - nestedFilters[i] = &model.BlockContentDataviewFilter{ + nestedFilters = append(nestedFilters, &model.BlockContentDataviewFilter{ Operator: model.BlockContentDataviewFilter_No, RelationKey: bundle.RelationKeyType.String(), Condition: model.BlockContentDataviewFilter_Equal, Value: pbtypes.String(typeId), - } + }) + } + + if len(nestedFilters) == 0 { + return nil } // Combine all filters with an OR operator From f087215b1130aab007023fb4130ad2bc2a96d578 Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Tue, 7 Jan 2025 15:22:46 +0100 Subject: [PATCH 109/279] GO-4812 WIP migration protos --- clientlibrary/service/service.pb.go | 352 +- core/account.go | 14 + core/application/account_select.go | 11 +- core/application/account_store_migrate.go | 97 + core/application/application.go | 6 +- docs/proto.md | 78 + pb/commands.pb.go | 3266 ++++++++++------- pb/protos/commands.proto | 26 + pb/protos/events.proto | 2 +- pb/protos/service/service.proto | 1 + pb/service/service.pb.go | 351 +- .../storage/migrator/migrationprocess.go | 4 + space/spacecore/storage/migrator/migrator.go | 50 + 13 files changed, 2687 insertions(+), 1571 deletions(-) create mode 100644 core/application/account_store_migrate.go create mode 100644 space/spacecore/storage/migrator/migrationprocess.go create mode 100644 space/spacecore/storage/migrator/migrator.go diff --git a/clientlibrary/service/service.pb.go b/clientlibrary/service/service.pb.go index 3cbe99da9..31c4fa8ad 100644 --- a/clientlibrary/service/service.pb.go +++ b/clientlibrary/service/service.pb.go @@ -25,152 +25,153 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package func init() { proto.RegisterFile("pb/protos/service/service.proto", fileDescriptor_93a29dc403579097) } var fileDescriptor_93a29dc403579097 = []byte{ - // 5279 bytes of a gzipped FileDescriptorProto + // 5295 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x9d, 0x5b, 0x6f, 0x24, 0x49, 0x56, 0xf8, 0xc7, 0x2f, 0xff, 0xf9, 0x93, 0xcb, 0x0e, 0x50, 0x03, 0xc3, 0xec, 0xb0, 0xdb, 0xb7, 0xe9, 0xb6, 0xdd, 0x6d, 0xbb, 0xdc, 0xd3, 0x3d, 0x3d, 0xb3, 0xda, 0x45, 0x42, 0x6e, 0xbb, 0xed, 0x31, 0x6b, 0xbb, 0x8d, 0xab, 0xdc, 0x2d, 0x8d, 0x84, 0x44, 0x38, 0x2b, 0x5c, 0x4e, 0x9c, 0x95, 0x91, 0x9b, 0x19, 0x55, 0xee, 0x5a, 0x04, 0x02, 0x81, 0x40, 0x20, 0x10, 0x2b, 0x6e, 0xaf, 0x48, - 0x7c, 0x1a, 0x1e, 0xf7, 0x91, 0x47, 0x34, 0x23, 0x1e, 0xf8, 0x16, 0x28, 0x23, 0x23, 0xe3, 0x72, - 0xf2, 0x9c, 0xc8, 0xf4, 0x3e, 0x75, 0xab, 0xce, 0xef, 0x9c, 0x13, 0xd7, 0x13, 0x27, 0x22, 0x23, - 0xd3, 0xd1, 0xdd, 0xfc, 0x62, 0x3b, 0x2f, 0x84, 0x14, 0xe5, 0x76, 0xc9, 0x8b, 0x45, 0x12, 0xf3, - 0xe6, 0xdf, 0xa1, 0xfa, 0x79, 0xf0, 0x3e, 0xcb, 0x96, 0x72, 0x99, 0xf3, 0x4f, 0x3e, 0xb6, 0x64, - 0x2c, 0x66, 0x33, 0x96, 0x4d, 0xca, 0x1a, 0xf9, 0xe4, 0x23, 0x2b, 0xe1, 0x0b, 0x9e, 0x49, 0xfd, - 0xfb, 0xb3, 0xff, 0xf9, 0xdf, 0x95, 0xe8, 0x83, 0xdd, 0x34, 0xe1, 0x99, 0xdc, 0xd5, 0x1a, 0x83, - 0xaf, 0xa3, 0xef, 0xee, 0xe4, 0xf9, 0x01, 0x97, 0x6f, 0x78, 0x51, 0x26, 0x22, 0x1b, 0x7c, 0x3a, - 0xd4, 0x0e, 0x86, 0x67, 0x79, 0x3c, 0xdc, 0xc9, 0xf3, 0xa1, 0x15, 0x0e, 0xcf, 0xf8, 0x4f, 0xe7, - 0xbc, 0x94, 0x9f, 0x3c, 0x0c, 0x43, 0x65, 0x2e, 0xb2, 0x92, 0x0f, 0x2e, 0xa3, 0xdf, 0xd8, 0xc9, - 0xf3, 0x11, 0x97, 0x7b, 0xbc, 0xaa, 0xc0, 0x48, 0x32, 0xc9, 0x07, 0x6b, 0x2d, 0x55, 0x1f, 0x30, - 0x3e, 0xd6, 0xbb, 0x41, 0xed, 0x67, 0x1c, 0x7d, 0xa7, 0xf2, 0x73, 0x35, 0x97, 0x13, 0x71, 0x93, - 0x0d, 0xee, 0xb7, 0x15, 0xb5, 0xc8, 0xd8, 0x7e, 0x10, 0x42, 0xb4, 0xd5, 0xb7, 0xd1, 0xaf, 0xbe, - 0x65, 0x69, 0xca, 0xe5, 0x6e, 0xc1, 0xab, 0x82, 0xfb, 0x3a, 0xb5, 0x68, 0x58, 0xcb, 0x8c, 0xdd, - 0x4f, 0x83, 0x8c, 0x36, 0xfc, 0x75, 0xf4, 0xdd, 0x5a, 0x72, 0xc6, 0x63, 0xb1, 0xe0, 0xc5, 0x00, - 0xd5, 0xd2, 0x42, 0xa2, 0xc9, 0x5b, 0x10, 0xb4, 0xbd, 0x2b, 0xb2, 0x05, 0x2f, 0x24, 0x6e, 0x5b, - 0x0b, 0xc3, 0xb6, 0x2d, 0xa4, 0x6d, 0xff, 0xed, 0x4a, 0xf4, 0xfd, 0x9d, 0x38, 0x16, 0xf3, 0x4c, - 0x1e, 0x89, 0x98, 0xa5, 0x47, 0x49, 0x76, 0x7d, 0xc2, 0x6f, 0x76, 0xaf, 0x2a, 0x3e, 0x9b, 0xf2, - 0xc1, 0x73, 0xbf, 0x55, 0x6b, 0x74, 0x68, 0xd8, 0xa1, 0x0b, 0x1b, 0xdf, 0x9f, 0xdf, 0x4e, 0x49, - 0x97, 0xe5, 0x1f, 0x57, 0xa2, 0x3b, 0xb0, 0x2c, 0x23, 0x91, 0x2e, 0xb8, 0x2d, 0xcd, 0x8b, 0x0e, - 0xc3, 0x3e, 0x6e, 0xca, 0xf3, 0xc5, 0x6d, 0xd5, 0x74, 0x89, 0xd2, 0xe8, 0x43, 0x77, 0xb8, 0x8c, - 0x78, 0xa9, 0xa6, 0xd3, 0x63, 0x7a, 0x44, 0x68, 0xc4, 0x78, 0x7e, 0xd2, 0x07, 0xd5, 0xde, 0x92, - 0x68, 0xa0, 0xbd, 0xa5, 0xa2, 0x34, 0xce, 0xd6, 0x51, 0x0b, 0x0e, 0x61, 0x7c, 0x3d, 0xee, 0x41, - 0x6a, 0x57, 0x7f, 0x14, 0xfd, 0xda, 0x5b, 0x51, 0x5c, 0x97, 0x39, 0x8b, 0xb9, 0x9e, 0x0a, 0x8f, - 0x7c, 0xed, 0x46, 0x0a, 0x67, 0xc3, 0x6a, 0x17, 0xe6, 0x0c, 0xda, 0x46, 0xf8, 0x3a, 0xe7, 0x30, - 0x06, 0x59, 0xc5, 0x4a, 0x48, 0x0d, 0x5a, 0x08, 0x69, 0xdb, 0xd7, 0xd1, 0xc0, 0xda, 0xbe, 0xf8, - 0x63, 0x1e, 0xcb, 0x9d, 0xc9, 0x04, 0xf6, 0x8a, 0xd5, 0x55, 0xc4, 0x70, 0x67, 0x32, 0xa1, 0x7a, - 0x05, 0x47, 0xb5, 0xb3, 0x9b, 0xe8, 0x23, 0xe0, 0xec, 0x28, 0x29, 0x95, 0xc3, 0xad, 0xb0, 0x15, - 0x8d, 0x19, 0xa7, 0xc3, 0xbe, 0xb8, 0x76, 0xfc, 0xe7, 0x2b, 0xd1, 0xf7, 0x10, 0xcf, 0x67, 0x7c, - 0x26, 0x16, 0x7c, 0xf0, 0xb4, 0xdb, 0x5a, 0x4d, 0x1a, 0xff, 0x9f, 0xdd, 0x42, 0x03, 0x19, 0x26, - 0x23, 0x9e, 0xf2, 0x58, 0x92, 0xc3, 0xa4, 0x16, 0x77, 0x0e, 0x13, 0x83, 0x39, 0x33, 0xac, 0x11, - 0x1e, 0x70, 0xb9, 0x3b, 0x2f, 0x0a, 0x9e, 0x49, 0xb2, 0x2f, 0x2d, 0xd2, 0xd9, 0x97, 0x1e, 0x8a, - 0xd4, 0xe7, 0x80, 0xcb, 0x9d, 0x34, 0x25, 0xeb, 0x53, 0x8b, 0x3b, 0xeb, 0x63, 0x30, 0xed, 0x21, - 0x8e, 0x7e, 0xdd, 0x69, 0x31, 0x79, 0x98, 0x5d, 0x8a, 0x01, 0xdd, 0x16, 0x4a, 0x6e, 0x7c, 0xac, - 0x75, 0x72, 0x48, 0x35, 0x5e, 0xbd, 0xcb, 0x45, 0x41, 0x77, 0x4b, 0x2d, 0xee, 0xac, 0x86, 0xc1, - 0xb4, 0x87, 0x3f, 0x8c, 0x3e, 0xd0, 0x51, 0xb2, 0x59, 0xcf, 0x1e, 0xa2, 0x21, 0x14, 0x2e, 0x68, - 0x8f, 0x3a, 0x28, 0x1b, 0x1c, 0xb4, 0x4c, 0x07, 0x9f, 0x4f, 0x51, 0x3d, 0x10, 0x7a, 0x1e, 0x86, - 0xa1, 0x96, 0xed, 0x3d, 0x9e, 0x72, 0xd2, 0x76, 0x2d, 0xec, 0xb0, 0x6d, 0x20, 0x6d, 0xbb, 0x88, - 0x7e, 0xcb, 0x34, 0x4b, 0xb5, 0x8e, 0x2a, 0x79, 0x15, 0xa4, 0x37, 0x88, 0x7a, 0xbb, 0x90, 0xf1, - 0xb5, 0xd9, 0x0f, 0x6e, 0xd5, 0x47, 0xcf, 0x40, 0xbc, 0x3e, 0x60, 0xfe, 0x3d, 0x0c, 0x43, 0xda, - 0xf6, 0xdf, 0xad, 0x44, 0x3f, 0xd0, 0xb2, 0x57, 0x19, 0xbb, 0x48, 0xb9, 0x5a, 0x12, 0x4f, 0xb8, - 0xbc, 0x11, 0xc5, 0xf5, 0x68, 0x99, 0xc5, 0xc4, 0xf2, 0x8f, 0xc3, 0x1d, 0xcb, 0x3f, 0xa9, 0xe4, - 0x64, 0x7c, 0xba, 0xa2, 0x52, 0xe4, 0x30, 0xe3, 0x6b, 0x6a, 0x20, 0x45, 0x4e, 0x65, 0x7c, 0x3e, - 0xd2, 0xb2, 0x7a, 0x5c, 0x85, 0x4d, 0xdc, 0xea, 0xb1, 0x1b, 0x27, 0x1f, 0x84, 0x10, 0x1b, 0xb6, - 0x9a, 0x01, 0x2c, 0xb2, 0xcb, 0x64, 0x7a, 0x9e, 0x4f, 0xaa, 0x61, 0xfc, 0x18, 0x1f, 0xa1, 0x0e, - 0x42, 0x84, 0x2d, 0x02, 0xd5, 0xde, 0xfe, 0xc1, 0x26, 0x46, 0x7a, 0x2a, 0xed, 0x17, 0x62, 0x76, - 0xc4, 0xa7, 0x2c, 0x5e, 0xea, 0xf9, 0xff, 0x79, 0x68, 0xe2, 0x41, 0xda, 0x14, 0xe2, 0xc5, 0x2d, - 0xb5, 0x74, 0x79, 0xfe, 0x7d, 0x25, 0x7a, 0xd8, 0x54, 0xff, 0x8a, 0x65, 0x53, 0xae, 0xfb, 0xb3, - 0x2e, 0xfd, 0x4e, 0x36, 0x39, 0xe3, 0xa5, 0x64, 0x85, 0x1c, 0xfc, 0x08, 0xaf, 0x64, 0x48, 0xc7, - 0x94, 0xed, 0xc7, 0xbf, 0x94, 0xae, 0xed, 0xf5, 0x51, 0x15, 0xd8, 0x74, 0x08, 0xf0, 0x7b, 0x5d, - 0x49, 0x60, 0x00, 0x78, 0x10, 0x42, 0x6c, 0xaf, 0x2b, 0xc1, 0x61, 0xb6, 0x48, 0x24, 0x3f, 0xe0, - 0x19, 0x2f, 0xda, 0xbd, 0x5e, 0xab, 0xfa, 0x08, 0xd1, 0xeb, 0x04, 0x6a, 0x83, 0x8d, 0xe7, 0xcd, - 0x2c, 0x8e, 0x1b, 0x01, 0x23, 0xad, 0xe5, 0x71, 0xb3, 0x1f, 0x6c, 0x77, 0x77, 0x8e, 0xcf, 0x33, - 0xbe, 0x10, 0xd7, 0x70, 0x77, 0xe7, 0x9a, 0xa8, 0x01, 0x62, 0x77, 0x87, 0x82, 0x76, 0x05, 0x73, - 0xfc, 0xbc, 0x49, 0xf8, 0x0d, 0x58, 0xc1, 0x5c, 0xe5, 0x4a, 0x4c, 0xac, 0x60, 0x08, 0xa6, 0x3d, - 0x9c, 0x44, 0xbf, 0xa2, 0x84, 0xbf, 0x2f, 0x92, 0x6c, 0x70, 0x17, 0x51, 0xaa, 0x04, 0xc6, 0xea, - 0x3d, 0x1a, 0x00, 0x25, 0xae, 0x7e, 0xdd, 0x65, 0x59, 0xcc, 0x53, 0xb4, 0xc4, 0x56, 0x1c, 0x2c, - 0xb1, 0x87, 0xd9, 0xd4, 0x41, 0x09, 0xab, 0xf8, 0x35, 0xba, 0x62, 0x45, 0x92, 0x4d, 0x07, 0x98, - 0xae, 0x23, 0x27, 0x52, 0x07, 0x8c, 0x03, 0x43, 0x58, 0x2b, 0xee, 0xe4, 0x79, 0x51, 0x85, 0x45, - 0x6c, 0x08, 0xfb, 0x48, 0x70, 0x08, 0xb7, 0x50, 0xdc, 0xdb, 0x1e, 0x8f, 0xd3, 0x24, 0x0b, 0x7a, - 0xd3, 0x48, 0x1f, 0x6f, 0x16, 0x05, 0x83, 0xf7, 0x88, 0xb3, 0x05, 0x6f, 0x6a, 0x86, 0xb5, 0x8c, - 0x0b, 0x04, 0x07, 0x2f, 0x00, 0xed, 0x3e, 0x4d, 0x89, 0x8f, 0xd9, 0x35, 0xaf, 0x1a, 0x98, 0x57, - 0xeb, 0xda, 0x00, 0xd3, 0xf7, 0x08, 0x62, 0x9f, 0x86, 0x93, 0xda, 0xd5, 0x3c, 0xfa, 0x48, 0xc9, - 0x4f, 0x59, 0x21, 0x93, 0x38, 0xc9, 0x59, 0xd6, 0xe4, 0xff, 0xd8, 0xbc, 0x6e, 0x51, 0xc6, 0xe5, - 0x56, 0x4f, 0x5a, 0xbb, 0xfd, 0xb7, 0x95, 0xe8, 0x3e, 0xf4, 0x7b, 0xca, 0x8b, 0x59, 0xa2, 0xb6, - 0x91, 0x65, 0x1d, 0x84, 0x07, 0x5f, 0x86, 0x8d, 0xb6, 0x14, 0x4c, 0x69, 0x7e, 0x78, 0x7b, 0x45, - 0x9b, 0x0c, 0x8d, 0x74, 0x6a, 0xfd, 0xba, 0x98, 0xb4, 0x8e, 0x59, 0x46, 0x4d, 0xbe, 0xac, 0x84, - 0x44, 0x32, 0xd4, 0x82, 0xc0, 0x0c, 0x3f, 0xcf, 0xca, 0xc6, 0x3a, 0x36, 0xc3, 0xad, 0x38, 0x38, - 0xc3, 0x3d, 0x4c, 0x7b, 0xf8, 0x83, 0x28, 0xaa, 0x37, 0x5b, 0x6a, 0x43, 0xec, 0xc7, 0x1c, 0xbd, - 0x0b, 0xf3, 0x76, 0xc3, 0xf7, 0x03, 0x84, 0x5d, 0xe8, 0xea, 0xdf, 0xd5, 0x3e, 0x7f, 0x80, 0x6a, - 0x28, 0x11, 0xb1, 0xd0, 0x01, 0x04, 0x16, 0x74, 0x74, 0x25, 0x6e, 0xf0, 0x82, 0x56, 0x92, 0x70, - 0x41, 0x35, 0x61, 0x4f, 0xde, 0x74, 0x41, 0xb1, 0x93, 0xb7, 0xa6, 0x18, 0xa1, 0x93, 0x37, 0xc8, - 0x68, 0xc3, 0x22, 0xfa, 0x4d, 0xd7, 0xf0, 0x4b, 0x21, 0xae, 0x67, 0xac, 0xb8, 0x1e, 0x3c, 0xa1, - 0x95, 0x1b, 0xc6, 0x38, 0xda, 0xe8, 0xc5, 0xda, 0xa0, 0xe6, 0x3a, 0xac, 0xd2, 0xa4, 0xf3, 0x22, - 0x05, 0x41, 0xcd, 0xb3, 0xa1, 0x11, 0x22, 0xa8, 0x11, 0xa8, 0x1d, 0x95, 0xae, 0xb7, 0x11, 0x87, - 0x7b, 0x3d, 0x4f, 0x7d, 0xc4, 0xa9, 0xbd, 0x1e, 0x82, 0xc1, 0x21, 0x74, 0x50, 0xb0, 0xfc, 0x0a, - 0x1f, 0x42, 0x4a, 0x14, 0x1e, 0x42, 0x0d, 0x02, 0xfb, 0x7b, 0xc4, 0x59, 0x11, 0x5f, 0xe1, 0xfd, - 0x5d, 0xcb, 0xc2, 0xfd, 0x6d, 0x18, 0xd8, 0xdf, 0xb5, 0xe0, 0x6d, 0x22, 0xaf, 0x8e, 0xb9, 0x64, - 0x78, 0x7f, 0xfb, 0x4c, 0xb8, 0xbf, 0x5b, 0xac, 0xcd, 0xc3, 0x5c, 0x87, 0xa3, 0xf9, 0x45, 0x19, - 0x17, 0xc9, 0x05, 0x1f, 0x04, 0xac, 0x18, 0x88, 0xc8, 0xc3, 0x48, 0x58, 0xfb, 0xfc, 0xf9, 0x4a, - 0x74, 0xb7, 0xe9, 0x76, 0x51, 0x96, 0x3a, 0xe6, 0xf9, 0xee, 0x5f, 0xe0, 0xfd, 0x4b, 0xe0, 0xc4, - 0x59, 0x68, 0x0f, 0x35, 0x67, 0x4d, 0xc0, 0x8b, 0x74, 0x9e, 0x95, 0xa6, 0x50, 0x5f, 0xf6, 0xb1, - 0xee, 0x28, 0x10, 0x6b, 0x42, 0x2f, 0x45, 0xbb, 0x1c, 0xeb, 0xfe, 0x69, 0x64, 0x87, 0x93, 0x12, - 0x2c, 0xc7, 0x4d, 0x7b, 0x3b, 0x04, 0xb1, 0x1c, 0xe3, 0x24, 0x1c, 0x0a, 0x07, 0x85, 0x98, 0xe7, - 0x65, 0xc7, 0x50, 0x00, 0x50, 0x78, 0x28, 0xb4, 0x61, 0xed, 0xf3, 0x5d, 0xf4, 0xdb, 0xee, 0xf0, - 0x73, 0x1b, 0x7b, 0x8b, 0x1e, 0x53, 0x58, 0x13, 0x0f, 0xfb, 0xe2, 0x36, 0x21, 0x6d, 0x3c, 0xcb, - 0x3d, 0x2e, 0x59, 0x92, 0x96, 0x83, 0x55, 0xdc, 0x46, 0x23, 0x27, 0x12, 0x52, 0x8c, 0x83, 0xf1, - 0x6d, 0x6f, 0x9e, 0xa7, 0x49, 0xdc, 0x3e, 0x89, 0xd6, 0xba, 0x46, 0x1c, 0x8e, 0x6f, 0x2e, 0x06, - 0xe3, 0x75, 0xb5, 0xe4, 0xab, 0xff, 0x8c, 0x97, 0x39, 0xc7, 0xe3, 0xb5, 0x87, 0x84, 0xe3, 0x35, - 0x44, 0x61, 0x7d, 0x46, 0x5c, 0x1e, 0xb1, 0xa5, 0x98, 0x13, 0xf1, 0xda, 0x88, 0xc3, 0xf5, 0x71, - 0x31, 0x9b, 0x13, 0x1a, 0x0f, 0x87, 0x99, 0xe4, 0x45, 0xc6, 0xd2, 0xfd, 0x94, 0x4d, 0xcb, 0x01, - 0x11, 0x63, 0x7c, 0x8a, 0xc8, 0x09, 0x69, 0x1a, 0x69, 0xc6, 0xc3, 0x72, 0x9f, 0x2d, 0x44, 0x91, - 0x48, 0xba, 0x19, 0x2d, 0xd2, 0xd9, 0x8c, 0x1e, 0x8a, 0x7a, 0xdb, 0x29, 0xe2, 0xab, 0x64, 0xc1, - 0x27, 0x01, 0x6f, 0x0d, 0xd2, 0xc3, 0x9b, 0x83, 0x22, 0x9d, 0x36, 0x12, 0xf3, 0x22, 0xe6, 0x64, - 0xa7, 0xd5, 0xe2, 0xce, 0x4e, 0x33, 0x98, 0xf6, 0xf0, 0x57, 0x2b, 0xd1, 0xef, 0xd4, 0x52, 0xf7, - 0x78, 0x78, 0x8f, 0x95, 0x57, 0x17, 0x82, 0x15, 0x93, 0xc1, 0x67, 0x98, 0x1d, 0x14, 0x35, 0xae, - 0x9f, 0xdd, 0x46, 0x05, 0x36, 0xeb, 0x51, 0x52, 0x3a, 0x33, 0x0e, 0x6d, 0x56, 0x0f, 0x09, 0x37, - 0x2b, 0x44, 0x61, 0x00, 0x51, 0xf2, 0xfa, 0x28, 0x66, 0x95, 0xd4, 0xf7, 0xcf, 0x63, 0xd6, 0x3a, - 0x39, 0x18, 0x1f, 0x2b, 0xa1, 0x3f, 0x5a, 0xb6, 0x28, 0x1b, 0xf8, 0x88, 0x19, 0xf6, 0xc5, 0x49, - 0xcf, 0x66, 0x56, 0x84, 0x3d, 0xb7, 0x66, 0xc6, 0xb0, 0x2f, 0x4e, 0x78, 0x76, 0xc2, 0x5a, 0xc8, - 0x33, 0x12, 0xda, 0x86, 0x7d, 0x71, 0x98, 0x7d, 0x69, 0xa6, 0x59, 0x17, 0x9e, 0x04, 0xec, 0xc0, - 0xb5, 0x61, 0xa3, 0x17, 0xab, 0x1d, 0xfe, 0xcd, 0x4a, 0xf4, 0x7d, 0xeb, 0xf1, 0x58, 0x4c, 0x92, - 0xcb, 0x65, 0x0d, 0xbd, 0x61, 0xe9, 0x9c, 0x97, 0x83, 0x67, 0x94, 0xb5, 0x36, 0x6b, 0x4a, 0xf0, - 0xfc, 0x56, 0x3a, 0x70, 0xee, 0xec, 0xe4, 0x79, 0xba, 0x1c, 0xf3, 0x59, 0x9e, 0x92, 0x73, 0xc7, - 0x43, 0xc2, 0x73, 0x07, 0xa2, 0x30, 0x2b, 0x1f, 0x8b, 0x2a, 0xe7, 0x47, 0xb3, 0x72, 0x25, 0x0a, - 0x67, 0xe5, 0x0d, 0x02, 0x73, 0xa5, 0xb1, 0xd8, 0x15, 0x69, 0xca, 0x63, 0xd9, 0x7e, 0xc4, 0x6c, - 0x34, 0x2d, 0x11, 0xce, 0x95, 0x00, 0x69, 0x4f, 0x63, 0x9a, 0x3d, 0x24, 0x2b, 0xf8, 0xcb, 0xe5, - 0x51, 0x92, 0x5d, 0x0f, 0xf0, 0xb4, 0xc0, 0x02, 0xc4, 0x69, 0x0c, 0x0a, 0xc2, 0xbd, 0xea, 0x79, - 0x36, 0x11, 0xf8, 0x5e, 0xb5, 0x92, 0x84, 0xf7, 0xaa, 0x9a, 0x80, 0x26, 0xcf, 0x38, 0x65, 0xb2, - 0x92, 0x84, 0x4d, 0x6a, 0x02, 0x0b, 0x85, 0xfa, 0xcc, 0x9e, 0x0c, 0x85, 0xe0, 0x94, 0x7e, 0xad, - 0x93, 0x83, 0x23, 0xb4, 0xd9, 0xb4, 0xee, 0x73, 0x19, 0x5f, 0xe1, 0x23, 0xd4, 0x43, 0xc2, 0x23, - 0x14, 0xa2, 0xb0, 0x4a, 0x63, 0x61, 0x36, 0xdd, 0xab, 0xf8, 0xf8, 0x68, 0x6d, 0xb8, 0xd7, 0x3a, - 0x39, 0xb8, 0x8d, 0x3c, 0x9c, 0xa9, 0x36, 0x43, 0x07, 0x79, 0x2d, 0x0b, 0x6f, 0x23, 0x0d, 0x03, - 0x4b, 0x5f, 0x0b, 0xaa, 0xe6, 0xc4, 0x4b, 0x6f, 0xe5, 0xe1, 0xd2, 0x7b, 0x9c, 0x76, 0xf2, 0x2f, - 0x66, 0x1b, 0x57, 0x4b, 0x4f, 0x44, 0x35, 0x47, 0xde, 0xb0, 0x34, 0x99, 0x30, 0xc9, 0xc7, 0xe2, - 0x9a, 0x67, 0xf8, 0x8e, 0x49, 0x97, 0xb6, 0xe6, 0x87, 0x9e, 0x42, 0x78, 0xc7, 0x14, 0x56, 0x84, - 0xe3, 0xa4, 0xa6, 0xcf, 0x4b, 0xbe, 0xcb, 0x4a, 0x22, 0x92, 0x79, 0x48, 0x78, 0x9c, 0x40, 0x14, - 0xe6, 0xab, 0xb5, 0xfc, 0xd5, 0xbb, 0x9c, 0x17, 0x09, 0xcf, 0x62, 0x8e, 0xe7, 0xab, 0x90, 0x0a, - 0xe7, 0xab, 0x08, 0x0d, 0xf7, 0x6a, 0x7b, 0x4c, 0xf2, 0x97, 0xcb, 0x71, 0x32, 0xe3, 0xa5, 0x64, - 0xb3, 0x1c, 0xdf, 0xab, 0x01, 0x28, 0xbc, 0x57, 0x6b, 0xc3, 0xad, 0xa3, 0x21, 0x13, 0x10, 0xdb, - 0x37, 0x53, 0x20, 0x11, 0xb8, 0x99, 0x42, 0xa0, 0xb0, 0x61, 0x2d, 0x80, 0x1e, 0x0e, 0xb7, 0xac, - 0x04, 0x0f, 0x87, 0x69, 0xba, 0x75, 0xe0, 0x66, 0x98, 0x51, 0x35, 0x35, 0x3b, 0x8a, 0x3e, 0x72, - 0xa7, 0xe8, 0x46, 0x2f, 0x16, 0x3f, 0xe1, 0x3b, 0xe3, 0x29, 0x53, 0xcb, 0x56, 0xe0, 0x18, 0xad, - 0x61, 0xfa, 0x9c, 0xf0, 0x39, 0xac, 0x76, 0xf8, 0x17, 0x2b, 0xd1, 0x27, 0x98, 0xc7, 0xd7, 0xb9, - 0xf2, 0xfb, 0xb4, 0xdb, 0x56, 0x4d, 0x12, 0x57, 0x6f, 0xc2, 0x1a, 0xba, 0x0c, 0x7f, 0x12, 0x7d, - 0xdc, 0x88, 0xec, 0xcd, 0x1c, 0x5d, 0x00, 0x3f, 0x69, 0x33, 0xe5, 0x87, 0x9c, 0x71, 0xbf, 0xdd, - 0x9b, 0xb7, 0xfb, 0x21, 0xbf, 0x5c, 0x25, 0xd8, 0x0f, 0x19, 0x1b, 0x5a, 0x4c, 0xec, 0x87, 0x10, - 0xcc, 0xce, 0x4e, 0xb7, 0x7a, 0x6f, 0x13, 0x79, 0xa5, 0xf2, 0x2d, 0x30, 0x3b, 0xbd, 0xb2, 0x1a, - 0x88, 0x98, 0x9d, 0x24, 0x0c, 0x33, 0x92, 0x06, 0xac, 0xe6, 0x26, 0x16, 0xcb, 0x8d, 0x21, 0x77, - 0x66, 0xae, 0x77, 0x83, 0x70, 0xbc, 0x36, 0x62, 0xbd, 0xf5, 0x79, 0x12, 0xb2, 0x00, 0xb6, 0x3f, - 0x1b, 0xbd, 0x58, 0xed, 0xf0, 0xcf, 0xa2, 0xef, 0xb5, 0x2a, 0xb6, 0xcf, 0x99, 0x9c, 0x17, 0x7c, - 0x32, 0xd8, 0xee, 0x28, 0x77, 0x03, 0x1a, 0xd7, 0x4f, 0xfb, 0x2b, 0xb4, 0x72, 0xf4, 0x86, 0xab, - 0x87, 0x95, 0x29, 0xc3, 0xb3, 0x90, 0x49, 0x9f, 0x0d, 0xe6, 0xe8, 0xb4, 0x4e, 0x6b, 0x9b, 0xed, - 0x8e, 0xae, 0x9d, 0x05, 0x4b, 0x52, 0xf5, 0x90, 0xee, 0xb3, 0x90, 0x51, 0x0f, 0x0d, 0x6e, 0xb3, - 0x49, 0x95, 0x56, 0x64, 0x56, 0x73, 0xdc, 0xd9, 0x9e, 0x6d, 0xd2, 0x91, 0x00, 0xd9, 0x9d, 0x6d, - 0xf5, 0xa4, 0xb5, 0x5b, 0xd9, 0x2c, 0x79, 0xd5, 0xcf, 0xee, 0x20, 0xc7, 0xbc, 0x6a, 0x55, 0x64, - 0xa4, 0x6f, 0xf5, 0xa4, 0xb5, 0xd7, 0x3f, 0x8d, 0x3e, 0x6e, 0x7b, 0xd5, 0x0b, 0xd1, 0x76, 0xa7, - 0x29, 0xb0, 0x16, 0x3d, 0xed, 0xaf, 0x60, 0xb7, 0x34, 0x5f, 0x25, 0xa5, 0x14, 0xc5, 0x72, 0x74, - 0x25, 0x6e, 0x9a, 0x1b, 0xef, 0xfe, 0x6c, 0xd5, 0xc0, 0xd0, 0x21, 0x88, 0x2d, 0x0d, 0x4e, 0xb6, - 0x5c, 0xd9, 0x9b, 0xf1, 0x25, 0xe1, 0xca, 0x21, 0x3a, 0x5c, 0xf9, 0xa4, 0x8d, 0x55, 0x4d, 0xad, - 0xec, 0x35, 0xfe, 0x35, 0xbc, 0xa8, 0xed, 0xab, 0xfc, 0xeb, 0xdd, 0xa0, 0xcd, 0x58, 0xb4, 0x78, + 0x7c, 0x16, 0x1e, 0x78, 0xdc, 0x47, 0x1e, 0xd1, 0xcc, 0x1b, 0x9f, 0x02, 0x65, 0x64, 0x64, 0x5c, + 0x4e, 0x9e, 0x13, 0x99, 0xde, 0xa7, 0x6e, 0xd5, 0xf9, 0x9d, 0x73, 0xe2, 0x7a, 0xe2, 0x44, 0x64, + 0x64, 0x3a, 0xba, 0x9b, 0x5f, 0x6c, 0xe7, 0x85, 0x90, 0xa2, 0xdc, 0x2e, 0x79, 0xb1, 0x48, 0x62, + 0xde, 0xfc, 0x3b, 0x54, 0x3f, 0x0f, 0xde, 0x67, 0xd9, 0x52, 0x2e, 0x73, 0xfe, 0xc9, 0xc7, 0x96, + 0x8c, 0xc5, 0x6c, 0xc6, 0xb2, 0x49, 0x59, 0x23, 0x9f, 0x7c, 0x64, 0x25, 0x7c, 0xc1, 0x33, 0xa9, + 0x7f, 0x7f, 0xf6, 0x9f, 0xff, 0xbb, 0x12, 0x7d, 0xb0, 0x9b, 0x26, 0x3c, 0x93, 0xbb, 0x5a, 0x63, + 0xf0, 0x75, 0xf4, 0xdd, 0x9d, 0x3c, 0x3f, 0xe0, 0xf2, 0x0d, 0x2f, 0xca, 0x44, 0x64, 0x83, 0x4f, + 0x87, 0xda, 0xc1, 0xf0, 0x2c, 0x8f, 0x87, 0x3b, 0x79, 0x3e, 0xb4, 0xc2, 0xe1, 0x19, 0xff, 0xe9, + 0x9c, 0x97, 0xf2, 0x93, 0x87, 0x61, 0xa8, 0xcc, 0x45, 0x56, 0xf2, 0xc1, 0x65, 0xf4, 0x1b, 0x3b, + 0x79, 0x3e, 0xe2, 0x72, 0x8f, 0x57, 0x15, 0x18, 0x49, 0x26, 0xf9, 0x60, 0xad, 0xa5, 0xea, 0x03, + 0xc6, 0xc7, 0x7a, 0x37, 0xa8, 0xfd, 0x8c, 0xa3, 0xef, 0x54, 0x7e, 0xae, 0xe6, 0x72, 0x22, 0x6e, + 0xb2, 0xc1, 0xfd, 0xb6, 0xa2, 0x16, 0x19, 0xdb, 0x0f, 0x42, 0x88, 0xb6, 0xfa, 0x36, 0xfa, 0xd5, + 0xb7, 0x2c, 0x4d, 0xb9, 0xdc, 0x2d, 0x78, 0x55, 0x70, 0x5f, 0xa7, 0x16, 0x0d, 0x6b, 0x99, 0xb1, + 0xfb, 0x69, 0x90, 0xd1, 0x86, 0xbf, 0x8e, 0xbe, 0x5b, 0x4b, 0xce, 0x78, 0x2c, 0x16, 0xbc, 0x18, + 0xa0, 0x5a, 0x5a, 0x48, 0x34, 0x79, 0x0b, 0x82, 0xb6, 0x77, 0x45, 0xb6, 0xe0, 0x85, 0xc4, 0x6d, + 0x6b, 0x61, 0xd8, 0xb6, 0x85, 0xb4, 0xed, 0xbf, 0x5d, 0x89, 0xbe, 0xbf, 0x13, 0xc7, 0x62, 0x9e, + 0xc9, 0x23, 0x11, 0xb3, 0xf4, 0x28, 0xc9, 0xae, 0x4f, 0xf8, 0xcd, 0xee, 0x55, 0xc5, 0x67, 0x53, + 0x3e, 0x78, 0xee, 0xb7, 0x6a, 0x8d, 0x0e, 0x0d, 0x3b, 0x74, 0x61, 0xe3, 0xfb, 0xf3, 0xdb, 0x29, + 0xe9, 0xb2, 0xfc, 0xe3, 0x4a, 0x74, 0x07, 0x96, 0x65, 0x24, 0xd2, 0x05, 0xb7, 0xa5, 0x79, 0xd1, + 0x61, 0xd8, 0xc7, 0x4d, 0x79, 0xbe, 0xb8, 0xad, 0x9a, 0x2e, 0x51, 0x1a, 0x7d, 0xe8, 0x0e, 0x97, + 0x11, 0x2f, 0xd5, 0x74, 0x7a, 0x4c, 0x8f, 0x08, 0x8d, 0x18, 0xcf, 0x4f, 0xfa, 0xa0, 0xda, 0x5b, + 0x12, 0x0d, 0xb4, 0xb7, 0x54, 0x94, 0xc6, 0xd9, 0x3a, 0x6a, 0xc1, 0x21, 0x8c, 0xaf, 0xc7, 0x3d, + 0x48, 0xed, 0xea, 0x8f, 0xa2, 0x5f, 0x7b, 0x2b, 0x8a, 0xeb, 0x32, 0x67, 0x31, 0xd7, 0x53, 0xe1, + 0x91, 0xaf, 0xdd, 0x48, 0xe1, 0x6c, 0x58, 0xed, 0xc2, 0x9c, 0x41, 0xdb, 0x08, 0x5f, 0xe7, 0x1c, + 0xc6, 0x20, 0xab, 0x58, 0x09, 0xa9, 0x41, 0x0b, 0x21, 0x6d, 0xfb, 0x3a, 0x1a, 0x58, 0xdb, 0x17, + 0x7f, 0xcc, 0x63, 0xb9, 0x33, 0x99, 0xc0, 0x5e, 0xb1, 0xba, 0x8a, 0x18, 0xee, 0x4c, 0x26, 0x54, + 0xaf, 0xe0, 0xa8, 0x76, 0x76, 0x13, 0x7d, 0x04, 0x9c, 0x1d, 0x25, 0xa5, 0x72, 0xb8, 0x15, 0xb6, + 0xa2, 0x31, 0xe3, 0x74, 0xd8, 0x17, 0xd7, 0x8e, 0xff, 0x7c, 0x25, 0xfa, 0x1e, 0xe2, 0xf9, 0x8c, + 0xcf, 0xc4, 0x82, 0x0f, 0x9e, 0x76, 0x5b, 0xab, 0x49, 0xe3, 0xff, 0xb3, 0x5b, 0x68, 0x20, 0xc3, + 0x64, 0xc4, 0x53, 0x1e, 0x4b, 0x72, 0x98, 0xd4, 0xe2, 0xce, 0x61, 0x62, 0x30, 0x67, 0x86, 0x35, + 0xc2, 0x03, 0x2e, 0x77, 0xe7, 0x45, 0xc1, 0x33, 0x49, 0xf6, 0xa5, 0x45, 0x3a, 0xfb, 0xd2, 0x43, + 0x91, 0xfa, 0x1c, 0x70, 0xb9, 0x93, 0xa6, 0x64, 0x7d, 0x6a, 0x71, 0x67, 0x7d, 0x0c, 0xa6, 0x3d, + 0xc4, 0xd1, 0xaf, 0x3b, 0x2d, 0x26, 0x0f, 0xb3, 0x4b, 0x31, 0xa0, 0xdb, 0x42, 0xc9, 0x8d, 0x8f, + 0xb5, 0x4e, 0x0e, 0xa9, 0xc6, 0xab, 0x77, 0xb9, 0x28, 0xe8, 0x6e, 0xa9, 0xc5, 0x9d, 0xd5, 0x30, + 0x98, 0xf6, 0xf0, 0x87, 0xd1, 0x07, 0x3a, 0x4a, 0x36, 0xeb, 0xd9, 0x43, 0x34, 0x84, 0xc2, 0x05, + 0xed, 0x51, 0x07, 0xd5, 0x32, 0x7f, 0x9c, 0x4c, 0x8b, 0x2a, 0xfa, 0xe0, 0xe6, 0xb5, 0xb4, 0xc3, + 0xbc, 0xa5, 0x6c, 0xec, 0xd1, 0x32, 0x1d, 0xdb, 0x3e, 0x45, 0xf5, 0x40, 0x64, 0x7b, 0x18, 0x86, + 0x5a, 0xb6, 0xf7, 0x78, 0xca, 0x49, 0xdb, 0xb5, 0xb0, 0xc3, 0xb6, 0x81, 0xb4, 0xed, 0x22, 0xfa, + 0x2d, 0xd3, 0xea, 0xd5, 0x32, 0xad, 0xe4, 0xd5, 0x1a, 0xb0, 0x41, 0x34, 0xab, 0x0b, 0x19, 0x5f, + 0x9b, 0xfd, 0xe0, 0x56, 0x7d, 0xf4, 0x04, 0xc7, 0xeb, 0x03, 0xa6, 0xf7, 0xc3, 0x30, 0xa4, 0x6d, + 0xff, 0xdd, 0x4a, 0xf4, 0x03, 0x2d, 0x7b, 0x95, 0xb1, 0x8b, 0x94, 0xab, 0x15, 0xf7, 0x84, 0xcb, + 0x1b, 0x51, 0x5c, 0x8f, 0x96, 0x59, 0x4c, 0x64, 0x17, 0x38, 0xdc, 0x91, 0x5d, 0x90, 0x4a, 0x4e, + 0x42, 0xa9, 0x2b, 0x2a, 0x45, 0x0e, 0x13, 0xca, 0xa6, 0x06, 0x52, 0xe4, 0x54, 0x42, 0xe9, 0x23, + 0x2d, 0xab, 0xc7, 0x55, 0x54, 0xc6, 0xad, 0x1e, 0xbb, 0x61, 0xf8, 0x41, 0x08, 0xb1, 0x51, 0xb1, + 0x19, 0xc0, 0x22, 0xbb, 0x4c, 0xa6, 0xe7, 0xf9, 0xa4, 0x1a, 0xc6, 0x8f, 0xf1, 0x11, 0xea, 0x20, + 0x44, 0x54, 0x24, 0x50, 0xed, 0xed, 0x1f, 0x6c, 0xde, 0xa5, 0x67, 0xea, 0x7e, 0x21, 0x66, 0x47, + 0x7c, 0xca, 0xe2, 0xa5, 0x0e, 0x2f, 0x9f, 0x87, 0xe6, 0x35, 0xa4, 0x4d, 0x21, 0x5e, 0xdc, 0x52, + 0x4b, 0x97, 0xe7, 0xdf, 0x57, 0xa2, 0x87, 0x4d, 0xf5, 0xaf, 0x58, 0x36, 0xe5, 0xba, 0x3f, 0xeb, + 0xd2, 0xef, 0x64, 0x93, 0x33, 0x5e, 0x4a, 0x56, 0xc8, 0xc1, 0x8f, 0xf0, 0x4a, 0x86, 0x74, 0x4c, + 0xd9, 0x7e, 0xfc, 0x4b, 0xe9, 0xda, 0x5e, 0x1f, 0x55, 0x71, 0x53, 0x87, 0x00, 0xbf, 0xd7, 0x95, + 0x04, 0x06, 0x80, 0x07, 0x21, 0xc4, 0xf6, 0xba, 0x12, 0x1c, 0x66, 0x8b, 0x44, 0xf2, 0x03, 0x9e, + 0xf1, 0xa2, 0xdd, 0xeb, 0xb5, 0xaa, 0x8f, 0x10, 0xbd, 0x4e, 0xa0, 0x36, 0xd8, 0x78, 0xde, 0xcc, + 0xda, 0xbb, 0x11, 0x30, 0xd2, 0x5a, 0x7d, 0x37, 0xfb, 0xc1, 0x76, 0xf3, 0xe8, 0xf8, 0x3c, 0xe3, + 0x0b, 0x71, 0x0d, 0x37, 0x8f, 0xae, 0x89, 0x1a, 0x20, 0x36, 0x8f, 0x28, 0x68, 0x17, 0x48, 0xc7, + 0xcf, 0x9b, 0x84, 0xdf, 0x80, 0x05, 0xd2, 0x55, 0xae, 0xc4, 0xc4, 0x02, 0x89, 0x60, 0xda, 0xc3, + 0x49, 0xf4, 0x2b, 0x4a, 0xf8, 0xfb, 0x22, 0xc9, 0x06, 0x77, 0x11, 0xa5, 0x4a, 0x60, 0xac, 0xde, + 0xa3, 0x01, 0x50, 0xe2, 0xea, 0xd7, 0x5d, 0x96, 0xc5, 0x3c, 0x45, 0x4b, 0x6c, 0xc5, 0xc1, 0x12, + 0x7b, 0x98, 0xcd, 0x4c, 0x94, 0xb0, 0x8a, 0x5f, 0xa3, 0x2b, 0x56, 0x24, 0xd9, 0x74, 0x80, 0xe9, + 0x3a, 0x72, 0x22, 0x33, 0xc1, 0x38, 0x30, 0x84, 0xb5, 0xe2, 0x4e, 0x9e, 0x17, 0x55, 0x58, 0xc4, + 0x86, 0xb0, 0x8f, 0x04, 0x87, 0x70, 0x0b, 0xc5, 0xbd, 0xed, 0xf1, 0x38, 0x4d, 0xb2, 0xa0, 0x37, + 0x8d, 0xf4, 0xf1, 0x66, 0x51, 0x30, 0x78, 0x8f, 0x38, 0x5b, 0xf0, 0xa6, 0x66, 0x58, 0xcb, 0xb8, + 0x40, 0x70, 0xf0, 0x02, 0xd0, 0x6e, 0x03, 0x95, 0xf8, 0x98, 0x5d, 0xf3, 0xaa, 0x81, 0x79, 0xb5, + 0xae, 0x0d, 0x30, 0x7d, 0x8f, 0x20, 0xb6, 0x81, 0x38, 0xa9, 0x5d, 0xcd, 0xa3, 0x8f, 0x94, 0xfc, + 0x94, 0x15, 0x32, 0x89, 0x93, 0x9c, 0x65, 0xcd, 0xf6, 0x02, 0x9b, 0xd7, 0x2d, 0xca, 0xb8, 0xdc, + 0xea, 0x49, 0x6b, 0xb7, 0xff, 0xb6, 0x12, 0xdd, 0x87, 0x7e, 0x4f, 0x79, 0x31, 0x4b, 0xd4, 0x2e, + 0xb5, 0xac, 0x83, 0xf0, 0xe0, 0xcb, 0xb0, 0xd1, 0x96, 0x82, 0x29, 0xcd, 0x0f, 0x6f, 0xaf, 0x68, + 0x93, 0xa1, 0x91, 0xce, 0xdc, 0x5f, 0x17, 0x93, 0xd6, 0x29, 0xce, 0xa8, 0x49, 0xc7, 0x95, 0x90, + 0x48, 0x86, 0x5a, 0x10, 0x98, 0xe1, 0xe7, 0x59, 0xd9, 0x58, 0xc7, 0x66, 0xb8, 0x15, 0x07, 0x67, + 0xb8, 0x87, 0x69, 0x0f, 0x7f, 0x10, 0x45, 0xf5, 0x5e, 0x4e, 0xed, 0xb7, 0xfd, 0x98, 0xa3, 0x37, + 0x79, 0xde, 0x66, 0xfb, 0x7e, 0x80, 0xb0, 0x0b, 0x5d, 0xfd, 0xbb, 0x3a, 0x46, 0x18, 0xa0, 0x1a, + 0x4a, 0x44, 0x2c, 0x74, 0x00, 0x81, 0x05, 0x1d, 0x5d, 0x89, 0x1b, 0xbc, 0xa0, 0x95, 0x24, 0x5c, + 0x50, 0x4d, 0xd8, 0x83, 0x3d, 0x5d, 0x50, 0xec, 0x60, 0xaf, 0x29, 0x46, 0xe8, 0x60, 0x0f, 0x32, + 0xda, 0xb0, 0x88, 0x7e, 0xd3, 0x35, 0xfc, 0x52, 0x88, 0xeb, 0x19, 0x2b, 0xae, 0x07, 0x4f, 0x68, + 0xe5, 0x86, 0x31, 0x8e, 0x36, 0x7a, 0xb1, 0x36, 0xa8, 0xb9, 0x0e, 0xab, 0x34, 0xe9, 0xbc, 0x48, + 0x41, 0x50, 0xf3, 0x6c, 0x68, 0x84, 0x08, 0x6a, 0x04, 0x6a, 0x47, 0xa5, 0xeb, 0x6d, 0xc4, 0xe1, + 0x56, 0xd2, 0x53, 0x1f, 0x71, 0x6a, 0x2b, 0x89, 0x60, 0x70, 0x08, 0x1d, 0x14, 0x2c, 0xbf, 0xc2, + 0x87, 0x90, 0x12, 0x85, 0x87, 0x50, 0x83, 0xc0, 0xfe, 0x1e, 0x71, 0x56, 0xc4, 0x57, 0x78, 0x7f, + 0xd7, 0xb2, 0x70, 0x7f, 0x1b, 0x06, 0xf6, 0x77, 0x2d, 0x78, 0x9b, 0xc8, 0xab, 0x63, 0x2e, 0x19, + 0xde, 0xdf, 0x3e, 0x13, 0xee, 0xef, 0x16, 0x6b, 0xf3, 0x30, 0xd7, 0xe1, 0x68, 0x7e, 0x51, 0xc6, + 0x45, 0x72, 0xc1, 0x07, 0x01, 0x2b, 0x06, 0x22, 0xf2, 0x30, 0x12, 0xd6, 0x3e, 0x7f, 0xbe, 0x12, + 0xdd, 0x6d, 0xba, 0x5d, 0x94, 0xa5, 0x8e, 0x79, 0xbe, 0xfb, 0x17, 0x78, 0xff, 0x12, 0x38, 0x71, + 0xd4, 0xda, 0x43, 0xcd, 0x59, 0x13, 0xf0, 0x22, 0x9d, 0x67, 0xa5, 0x29, 0xd4, 0x97, 0x7d, 0xac, + 0x3b, 0x0a, 0xc4, 0x9a, 0xd0, 0x4b, 0xd1, 0x2e, 0xc7, 0xba, 0x7f, 0x1a, 0xd9, 0xe1, 0xa4, 0x04, + 0xcb, 0x71, 0xd3, 0xde, 0x0e, 0x41, 0x2c, 0xc7, 0x38, 0x09, 0x87, 0xc2, 0x41, 0x21, 0xe6, 0x79, + 0xd9, 0x31, 0x14, 0x00, 0x14, 0x1e, 0x0a, 0x6d, 0x58, 0xfb, 0x7c, 0x17, 0xfd, 0xb6, 0x3b, 0xfc, + 0xdc, 0xc6, 0xde, 0xa2, 0xc7, 0x14, 0xd6, 0xc4, 0xc3, 0xbe, 0xb8, 0x4d, 0x48, 0x1b, 0xcf, 0x72, + 0x8f, 0x4b, 0x96, 0xa4, 0xe5, 0x60, 0x15, 0xb7, 0xd1, 0xc8, 0x89, 0x84, 0x14, 0xe3, 0x60, 0x7c, + 0xdb, 0x9b, 0xe7, 0x69, 0x12, 0xb7, 0x0f, 0xba, 0xb5, 0xae, 0x11, 0x87, 0xe3, 0x9b, 0x8b, 0xc1, + 0x78, 0x5d, 0x2d, 0xf9, 0xea, 0x3f, 0xe3, 0x65, 0xce, 0xf1, 0x78, 0xed, 0x21, 0xe1, 0x78, 0x0d, + 0x51, 0x58, 0x9f, 0x11, 0x97, 0x47, 0x6c, 0x29, 0xe6, 0x44, 0xbc, 0x36, 0xe2, 0x70, 0x7d, 0x5c, + 0xcc, 0xe6, 0x84, 0xc6, 0xc3, 0x61, 0x26, 0x79, 0x91, 0xb1, 0x74, 0x3f, 0x65, 0xd3, 0x72, 0x40, + 0xc4, 0x18, 0x9f, 0x22, 0x72, 0x42, 0x9a, 0x46, 0x9a, 0xf1, 0xb0, 0xdc, 0x67, 0x0b, 0x51, 0x24, + 0x92, 0x6e, 0x46, 0x8b, 0x74, 0x36, 0xa3, 0x87, 0xa2, 0xde, 0x76, 0x8a, 0xf8, 0x2a, 0x59, 0xf0, + 0x49, 0xc0, 0x5b, 0x83, 0xf4, 0xf0, 0xe6, 0xa0, 0x48, 0xa7, 0x8d, 0xc4, 0xbc, 0x88, 0x39, 0xd9, + 0x69, 0xb5, 0xb8, 0xb3, 0xd3, 0x0c, 0xa6, 0x3d, 0xfc, 0xd5, 0x4a, 0xf4, 0x3b, 0xb5, 0xd4, 0x3d, + 0x7d, 0xde, 0x63, 0xe5, 0xd5, 0x85, 0x60, 0xc5, 0x64, 0xf0, 0x19, 0x66, 0x07, 0x45, 0x8d, 0xeb, + 0x67, 0xb7, 0x51, 0x81, 0xcd, 0x7a, 0x94, 0x94, 0xce, 0x8c, 0x43, 0x9b, 0xd5, 0x43, 0xc2, 0xcd, + 0x0a, 0x51, 0x18, 0x40, 0x94, 0xbc, 0x3e, 0x8a, 0x59, 0x25, 0xf5, 0xfd, 0xf3, 0x98, 0xb5, 0x4e, + 0x0e, 0xc6, 0xc7, 0x4a, 0xe8, 0x8f, 0x96, 0x2d, 0xca, 0x06, 0x3e, 0x62, 0x86, 0x7d, 0x71, 0xd2, + 0xb3, 0x99, 0x15, 0x61, 0xcf, 0xad, 0x99, 0x31, 0xec, 0x8b, 0x13, 0x9e, 0x9d, 0xb0, 0x16, 0xf2, + 0x8c, 0x84, 0xb6, 0x61, 0x5f, 0x1c, 0x66, 0x5f, 0x9a, 0x69, 0xd6, 0x85, 0x27, 0x01, 0x3b, 0x70, + 0x6d, 0xd8, 0xe8, 0xc5, 0x6a, 0x87, 0x7f, 0xb3, 0x12, 0x7d, 0xdf, 0x7a, 0x3c, 0x16, 0x93, 0xe4, + 0x72, 0x59, 0x43, 0x6f, 0x58, 0x3a, 0xe7, 0xe5, 0xe0, 0x19, 0x65, 0xad, 0xcd, 0x9a, 0x12, 0x3c, + 0xbf, 0x95, 0x0e, 0x9c, 0x3b, 0x3b, 0x79, 0x9e, 0x2e, 0xc7, 0x7c, 0x96, 0xa7, 0xe4, 0xdc, 0xf1, + 0x90, 0xf0, 0xdc, 0x81, 0x28, 0xcc, 0xca, 0xc7, 0xa2, 0xca, 0xf9, 0xd1, 0xac, 0x5c, 0x89, 0xc2, + 0x59, 0x79, 0x83, 0xc0, 0x5c, 0x69, 0x2c, 0x76, 0x45, 0x9a, 0xf2, 0x58, 0xb6, 0x9f, 0x60, 0x1b, + 0x4d, 0x4b, 0x84, 0x73, 0x25, 0x40, 0xda, 0xd3, 0x98, 0x66, 0x0f, 0xc9, 0x0a, 0xfe, 0x72, 0x79, + 0x94, 0x64, 0xd7, 0x03, 0x3c, 0x2d, 0xb0, 0x00, 0x71, 0x1a, 0x83, 0x82, 0x70, 0xaf, 0x7a, 0x9e, + 0x4d, 0x04, 0xbe, 0x57, 0xad, 0x24, 0xe1, 0xbd, 0xaa, 0x26, 0xa0, 0xc9, 0x33, 0x4e, 0x99, 0xac, + 0x24, 0x61, 0x93, 0x9a, 0xc0, 0x42, 0xa1, 0x3e, 0xb3, 0x27, 0x43, 0x21, 0x38, 0xa5, 0x5f, 0xeb, + 0xe4, 0xe0, 0x08, 0x6d, 0x36, 0xad, 0xfb, 0x5c, 0xc6, 0x57, 0xf8, 0x08, 0xf5, 0x90, 0xf0, 0x08, + 0x85, 0x28, 0xac, 0xd2, 0x58, 0x98, 0x4d, 0xf7, 0x2a, 0x3e, 0x3e, 0x5a, 0x1b, 0xee, 0xb5, 0x4e, + 0x0e, 0x6e, 0x23, 0x0f, 0x67, 0xaa, 0xcd, 0xd0, 0x41, 0x5e, 0xcb, 0xc2, 0xdb, 0x48, 0xc3, 0xc0, + 0xd2, 0xd7, 0x82, 0xaa, 0x39, 0xf1, 0xd2, 0x5b, 0x79, 0xb8, 0xf4, 0x1e, 0xa7, 0x9d, 0xfc, 0x8b, + 0xd9, 0xc6, 0xd5, 0xd2, 0x13, 0x51, 0xcd, 0x91, 0x37, 0x2c, 0x4d, 0x26, 0x4c, 0xf2, 0xb1, 0xb8, + 0xe6, 0x19, 0xbe, 0x63, 0xd2, 0xa5, 0xad, 0xf9, 0xa1, 0xa7, 0x10, 0xde, 0x31, 0x85, 0x15, 0xe1, + 0x38, 0xa9, 0xe9, 0xf3, 0x92, 0xef, 0xb2, 0x92, 0x88, 0x64, 0x1e, 0x12, 0x1e, 0x27, 0x10, 0x85, + 0xf9, 0x6a, 0x2d, 0x7f, 0xf5, 0x2e, 0xe7, 0x45, 0xc2, 0xb3, 0x98, 0xe3, 0xf9, 0x2a, 0xa4, 0xc2, + 0xf9, 0x2a, 0x42, 0xc3, 0xbd, 0xda, 0x1e, 0x93, 0xfc, 0xe5, 0x72, 0x9c, 0xcc, 0x78, 0x29, 0xd9, + 0x2c, 0xc7, 0xf7, 0x6a, 0x00, 0x0a, 0xef, 0xd5, 0xda, 0x70, 0xeb, 0x68, 0xc8, 0x04, 0xc4, 0xf6, + 0xc5, 0x17, 0x48, 0x04, 0x2e, 0xbe, 0x10, 0x28, 0x6c, 0x58, 0x0b, 0xa0, 0x87, 0xc3, 0x2d, 0x2b, + 0xc1, 0xc3, 0x61, 0x9a, 0x6e, 0x1d, 0xb8, 0x19, 0x66, 0x54, 0x4d, 0xcd, 0x8e, 0xa2, 0x8f, 0xdc, + 0x29, 0xba, 0xd1, 0x8b, 0xc5, 0x4f, 0xf8, 0xce, 0x78, 0xca, 0xd4, 0xb2, 0x15, 0x38, 0x46, 0x6b, + 0x98, 0x3e, 0x27, 0x7c, 0x0e, 0xab, 0x1d, 0xfe, 0xc5, 0x4a, 0xf4, 0x09, 0xe6, 0xf1, 0x75, 0xae, + 0xfc, 0x3e, 0xed, 0xb6, 0x55, 0x93, 0xc4, 0xcd, 0x9e, 0xb0, 0x86, 0x2e, 0xc3, 0x9f, 0x44, 0x1f, + 0x37, 0x22, 0x7b, 0xf1, 0x47, 0x17, 0xc0, 0x4f, 0xda, 0x4c, 0xf9, 0x21, 0x67, 0xdc, 0x6f, 0xf7, + 0xe6, 0xed, 0x7e, 0xc8, 0x2f, 0x57, 0x09, 0xf6, 0x43, 0xc6, 0x86, 0x16, 0x13, 0xfb, 0x21, 0x04, + 0xb3, 0xb3, 0xd3, 0xad, 0xde, 0xdb, 0x44, 0x5e, 0xa9, 0x7c, 0x0b, 0xcc, 0x4e, 0xaf, 0xac, 0x06, + 0x22, 0x66, 0x27, 0x09, 0xc3, 0x8c, 0xa4, 0x01, 0xab, 0xb9, 0x89, 0xc5, 0x72, 0x63, 0xc8, 0x9d, + 0x99, 0xeb, 0xdd, 0x20, 0x1c, 0xaf, 0x8d, 0x58, 0x6f, 0x7d, 0x9e, 0x84, 0x2c, 0x80, 0xed, 0xcf, + 0x46, 0x2f, 0x56, 0x3b, 0xfc, 0xb3, 0xe8, 0x7b, 0xad, 0x8a, 0xed, 0x73, 0x26, 0xe7, 0x05, 0x9f, + 0x0c, 0xb6, 0x3b, 0xca, 0xdd, 0x80, 0xc6, 0xf5, 0xd3, 0xfe, 0x0a, 0xad, 0x1c, 0xbd, 0xe1, 0xea, + 0x61, 0x65, 0xca, 0xf0, 0x2c, 0x64, 0xd2, 0x67, 0x83, 0x39, 0x3a, 0xad, 0xd3, 0xda, 0x66, 0xbb, + 0xa3, 0x6b, 0x67, 0xc1, 0x92, 0x54, 0x3d, 0xa4, 0xfb, 0x2c, 0x64, 0xd4, 0x43, 0x83, 0xdb, 0x6c, + 0x52, 0xa5, 0x15, 0x99, 0xd5, 0x1c, 0x77, 0xb6, 0x67, 0x9b, 0x74, 0x24, 0x40, 0x76, 0x67, 0x5b, + 0x3d, 0x69, 0xed, 0x56, 0x36, 0x4b, 0x5e, 0xf5, 0xb3, 0x3b, 0xc8, 0x31, 0xaf, 0x5a, 0x15, 0x19, + 0xe9, 0x5b, 0x3d, 0x69, 0xed, 0xf5, 0x4f, 0xa3, 0x8f, 0xdb, 0x5e, 0xf5, 0x42, 0xb4, 0xdd, 0x69, + 0x0a, 0xac, 0x45, 0x4f, 0xfb, 0x2b, 0xd8, 0x2d, 0xcd, 0x57, 0x49, 0x29, 0x45, 0xb1, 0x1c, 0x5d, + 0x89, 0x9b, 0xe6, 0x42, 0xbd, 0x3f, 0x5b, 0x35, 0x30, 0x74, 0x08, 0x62, 0x4b, 0x83, 0x93, 0x2d, + 0x57, 0xf6, 0xe2, 0x7d, 0x49, 0xb8, 0x72, 0x88, 0x0e, 0x57, 0x3e, 0x69, 0x63, 0x55, 0x53, 0x2b, + 0xfb, 0x96, 0xc0, 0x1a, 0x5e, 0xd4, 0xf6, 0x9b, 0x02, 0xeb, 0xdd, 0xa0, 0xcd, 0x58, 0xb4, 0x78, 0x2f, 0xb9, 0xbc, 0x34, 0x75, 0xc2, 0x4b, 0xea, 0x22, 0x44, 0xc6, 0x42, 0xa0, 0x36, 0xe9, 0xde, 0x4f, 0x52, 0xae, 0x4e, 0xf4, 0x5f, 0x5f, 0x5e, 0xa6, 0x82, 0x4d, 0x40, 0xd2, 0x5d, 0x89, 0x87, 0xae, 0x9c, 0x48, 0xba, 0x31, 0xce, 0x3e, 0x23, 0xae, 0xa4, 0x67, 0x3c, 0x16, 0x59, 0x9c, 0xa4, @@ -179,7 +180,7 @@ var fileDescriptor_93a29dc403579097 = []byte{ 0x3c, 0x57, 0xc6, 0xef, 0xb5, 0xb5, 0x6a, 0x09, 0xb1, 0xf7, 0xf4, 0x09, 0xbb, 0x87, 0xaa, 0x7e, 0xdf, 0x13, 0x37, 0x99, 0x32, 0xfa, 0xa0, 0xad, 0xd2, 0xc8, 0x88, 0x3d, 0x14, 0x64, 0xb4, 0xe1, 0x9f, 0x44, 0xff, 0x5f, 0x19, 0x2e, 0x44, 0x3e, 0xb8, 0x83, 0x28, 0x14, 0xce, 0x5d, 0xbd, 0xbb, - 0xa4, 0xdc, 0x5e, 0x39, 0x35, 0x63, 0xe3, 0xbc, 0x64, 0x53, 0x3e, 0x78, 0x48, 0xf4, 0xb8, 0x92, + 0xa4, 0xdc, 0x5e, 0x39, 0x35, 0x63, 0xe3, 0xbc, 0x64, 0x53, 0x78, 0xe5, 0xd4, 0xf6, 0xb8, 0x92, 0x12, 0x57, 0x4e, 0xdb, 0x94, 0x3f, 0x2a, 0x4e, 0xc4, 0x44, 0x5b, 0x47, 0x6a, 0x68, 0x84, 0xa1, 0x51, 0xe1, 0x42, 0x36, 0x99, 0x39, 0x61, 0x8b, 0x64, 0x6a, 0x16, 0x9c, 0x3a, 0x6e, 0x95, 0x20, 0x99, 0xb1, 0xcc, 0xd0, 0x81, 0x88, 0x64, 0x86, 0x84, 0xb5, 0xcf, 0x7f, 0x5e, 0x89, 0xee, 0x59, @@ -210,7 +211,7 @@ var fileDescriptor_93a29dc403579097 = []byte{ 0x04, 0x62, 0x5c, 0x1c, 0x8b, 0x05, 0x1f, 0x8b, 0x57, 0xef, 0x92, 0x52, 0x26, 0xd9, 0x54, 0xaf, 0xdc, 0xcf, 0x09, 0x4b, 0x18, 0x4c, 0xbc, 0x04, 0xd2, 0xa9, 0x64, 0x13, 0x08, 0x50, 0x96, 0x13, 0x7e, 0x83, 0x26, 0x10, 0xd0, 0xa2, 0xe1, 0x88, 0x04, 0x22, 0xc4, 0xdb, 0x73, 0x14, 0xe3, 0x5c, - 0xbf, 0x29, 0x3b, 0x16, 0x4d, 0x2e, 0x47, 0x59, 0x83, 0x20, 0xb1, 0x95, 0x0d, 0x2a, 0xd8, 0xfd, + 0xbf, 0x88, 0x3b, 0x16, 0x4d, 0x2e, 0x47, 0x59, 0x83, 0x20, 0xb1, 0x95, 0x0d, 0x2a, 0xd8, 0xfd, 0xa5, 0xf1, 0x6f, 0xa7, 0xd8, 0x3a, 0x61, 0xa7, 0x3d, 0xcd, 0x1e, 0xf7, 0x20, 0x11, 0x57, 0xf6, 0x1e, 0x00, 0xe5, 0xaa, 0x7d, 0x0d, 0xe0, 0x71, 0x0f, 0xd2, 0x39, 0x93, 0x71, 0xab, 0xf5, 0x92, 0xc5, 0xd7, 0xd3, 0x42, 0xcc, 0xb3, 0xc9, 0xae, 0x48, 0x45, 0x01, 0xce, 0x64, 0xbc, 0x52, 0x03, @@ -239,21 +240,21 @@ var fileDescriptor_93a29dc403579097 = []byte{ 0x3e, 0xe0, 0x5b, 0xef, 0x10, 0x3a, 0x7d, 0x83, 0xad, 0xc2, 0x76, 0x6f, 0x3e, 0xe0, 0x5b, 0xbf, 0x03, 0xdd, 0xe9, 0x1b, 0xbc, 0x08, 0xbd, 0xdd, 0x9b, 0xd7, 0xbe, 0xff, 0xb2, 0x99, 0xb8, 0xae, 0xf3, 0x2a, 0x0f, 0x8b, 0x65, 0xb2, 0xe0, 0x58, 0x3a, 0xe9, 0xdb, 0x33, 0x68, 0x28, 0x9d, 0xa4, - 0x55, 0x9c, 0x0f, 0xe7, 0x60, 0xa5, 0x38, 0x15, 0x65, 0xa2, 0x1e, 0xd2, 0x3f, 0xef, 0x61, 0xb4, + 0x55, 0x9c, 0xef, 0xf2, 0x60, 0xa5, 0x38, 0x15, 0x65, 0xa2, 0x1e, 0xd2, 0x3f, 0xef, 0x61, 0xb4, 0x81, 0x43, 0x9b, 0xa6, 0x90, 0x92, 0x7d, 0xdc, 0xe8, 0xa1, 0xf6, 0x16, 0xf3, 0x66, 0xc0, 0x5e, 0xfb, 0x32, 0xf3, 0x56, 0x4f, 0xda, 0x3e, 0xf8, 0xf3, 0x18, 0xf7, 0x89, 0x63, 0xa8, 0x57, 0xd1, 0x87, 0x8e, 0x4f, 0xfb, 0x2b, 0x68, 0xf7, 0x7f, 0xdd, 0xec, 0x2b, 0xa0, 0x7f, 0x3d, 0x09, 0x9e, 0xf5, 0xb1, 0x08, 0x26, 0xc2, 0xf3, 0x5b, 0xe9, 0xe8, 0x82, 0xfc, 0x7d, 0xb3, 0x81, 0x6e, 0x50, 0xf5, 0x2e, 0x87, 0x7a, 0xf7, 0x4f, 0xcf, 0x89, 0x50, 0xb7, 0x5a, 0x18, 0xce, 0x8c, 0x17, 0xb7, - 0xd4, 0x72, 0x3e, 0xa3, 0xe4, 0xc1, 0xfa, 0x9d, 0x43, 0xa7, 0x3c, 0x21, 0xcb, 0x0e, 0x0d, 0x0b, + 0xd4, 0x72, 0xbe, 0xd2, 0xe4, 0xc1, 0xfa, 0x9d, 0x43, 0xa7, 0x3c, 0x21, 0xcb, 0x0e, 0x0d, 0x0b, 0xf4, 0xc5, 0x6d, 0xd5, 0xa8, 0xb9, 0xe2, 0xc0, 0xea, 0xab, 0x0c, 0xcf, 0x7b, 0x1a, 0xf6, 0xbe, 0xd3, 0xf0, 0xf9, 0xed, 0x94, 0x74, 0x59, 0xfe, 0x63, 0x25, 0x7a, 0xe4, 0xb1, 0xf6, 0x79, 0x02, - 0x38, 0xf5, 0xf8, 0x71, 0xc0, 0x3e, 0xa5, 0x64, 0x0a, 0xf7, 0xbb, 0xbf, 0x9c, 0xb2, 0xfd, 0xe6, - 0x90, 0xa7, 0xb2, 0x9f, 0xa4, 0x92, 0x17, 0xed, 0x6f, 0x0e, 0xf9, 0x76, 0x6b, 0x6a, 0x48, 0x7f, - 0x73, 0x28, 0x80, 0x3b, 0xdf, 0x1c, 0x42, 0x3c, 0xa3, 0xdf, 0x1c, 0x42, 0xad, 0x05, 0xbf, 0x39, + 0x38, 0xf5, 0xf8, 0x71, 0xc0, 0x3e, 0xa5, 0x64, 0x0a, 0xf7, 0xbb, 0xbf, 0x9c, 0xb2, 0xfd, 0xa4, + 0x91, 0xa7, 0xb2, 0x9f, 0xa4, 0x92, 0x17, 0xed, 0x4f, 0x1a, 0xf9, 0x76, 0x6b, 0x6a, 0x48, 0x7f, + 0xd2, 0x28, 0x80, 0x3b, 0x9f, 0x34, 0x42, 0x3c, 0xa3, 0x9f, 0x34, 0x42, 0xad, 0x05, 0x3f, 0x69, 0x14, 0xd6, 0xa0, 0xc2, 0x7b, 0x53, 0x84, 0xfa, 0xdc, 0xba, 0x97, 0x45, 0xff, 0x18, 0xfb, 0xd9, 0x6d, 0x54, 0x88, 0x05, 0xae, 0xe6, 0xd4, 0x3d, 0xb7, 0x1e, 0x6d, 0xea, 0xdd, 0x75, 0xdb, 0xee, - 0xcd, 0x6b, 0xdf, 0x3f, 0xd5, 0xbb, 0x1b, 0x13, 0xce, 0x45, 0xa1, 0xbe, 0x37, 0xb5, 0x11, 0x0a, + 0xcd, 0x6b, 0xdf, 0x3f, 0xd5, 0xbb, 0x1b, 0x13, 0xce, 0x45, 0xa1, 0x3e, 0x67, 0xb5, 0x11, 0x0a, 0xcf, 0x95, 0x05, 0xb7, 0xe7, 0x37, 0xfb, 0xc1, 0x44, 0x75, 0x2b, 0x42, 0x77, 0xfa, 0xb0, 0xcb, 0x10, 0xe8, 0xf2, 0xed, 0xde, 0x3c, 0xb1, 0x8c, 0xd4, 0xbe, 0xeb, 0xde, 0xee, 0x61, 0xcc, 0xef, 0xeb, 0xa7, 0xfd, 0x15, 0xb4, 0xfb, 0x85, 0x4e, 0x1b, 0x5d, 0xf7, 0xaa, 0x9f, 0xb7, 0xba, 0x4c, @@ -313,7 +314,7 @@ var fileDescriptor_93a29dc403579097 = []byte{ 0x89, 0xa5, 0xa4, 0x05, 0x81, 0x80, 0xd4, 0x4c, 0x83, 0x29, 0x1a, 0x90, 0x8c, 0x34, 0x18, 0x90, 0x5c, 0xca, 0x06, 0x8a, 0xc3, 0x2c, 0x91, 0x09, 0x4b, 0x47, 0x5c, 0x9e, 0xb2, 0x82, 0xcd, 0xb8, 0xe4, 0x05, 0x0c, 0x14, 0x1a, 0x19, 0x7a, 0x0c, 0x11, 0x28, 0x28, 0x56, 0x3b, 0xfc, 0xbd, 0xe8, - 0xc3, 0x6a, 0xdd, 0xe7, 0x99, 0xfe, 0x33, 0x1b, 0xaf, 0xd4, 0xdf, 0xe7, 0x19, 0x7c, 0x64, 0x6c, + 0xc3, 0x6a, 0xdd, 0xe7, 0x99, 0xfe, 0x2b, 0x1e, 0xaf, 0xd4, 0x9f, 0xff, 0x19, 0x7c, 0x64, 0x6c, 0x8c, 0x64, 0xc1, 0xd9, 0xac, 0xb1, 0xfd, 0x81, 0xf9, 0x5d, 0x81, 0x4f, 0x57, 0xaa, 0xf1, 0x7c, 0x22, 0x64, 0x72, 0x59, 0x6d, 0xb3, 0xf5, 0x1b, 0x44, 0x60, 0x3c, 0xbb, 0xe2, 0x61, 0xe0, 0x5b, 0x14, 0x18, 0x67, 0xe3, 0xb4, 0x2b, 0x3d, 0xe3, 0x79, 0x0a, 0xe3, 0xb4, 0xa7, 0xad, 0x00, 0x22, @@ -323,7 +324,7 @@ var fileDescriptor_93a29dc403579097 = []byte{ 0x02, 0x87, 0xe5, 0x09, 0x9b, 0x71, 0xf5, 0x65, 0x0d, 0xb0, 0x12, 0x38, 0x46, 0x1c, 0x88, 0x58, 0x09, 0x48, 0xd8, 0x79, 0xbf, 0xcb, 0x32, 0x67, 0x7c, 0x5a, 0x8d, 0xb0, 0xe2, 0x94, 0x2d, 0x67, 0x3c, 0x93, 0xda, 0x24, 0x38, 0x93, 0x77, 0x4c, 0xe2, 0x3c, 0x71, 0x26, 0xdf, 0x47, 0xcf, 0x09, - 0x4d, 0x5e, 0xc3, 0x9f, 0x8a, 0x42, 0xd6, 0x7f, 0x44, 0xe7, 0xbc, 0x48, 0x41, 0x68, 0xf2, 0x1b, + 0x4d, 0x5e, 0xc3, 0x9f, 0x8a, 0x42, 0xd6, 0x7f, 0xa3, 0xe7, 0xbc, 0x48, 0x41, 0x68, 0xf2, 0x1b, 0xd5, 0x23, 0x89, 0xd0, 0x14, 0xd6, 0x70, 0xbe, 0x3e, 0xef, 0x95, 0xe1, 0x0d, 0x2f, 0xcc, 0x38, 0x79, 0x35, 0x63, 0x49, 0xaa, 0x47, 0xc3, 0x8f, 0x02, 0xb6, 0x09, 0x1d, 0xe2, 0xeb, 0xf3, 0x7d, 0x75, 0x9d, 0xef, 0xf5, 0x87, 0x4b, 0x08, 0x1e, 0x11, 0x74, 0xd8, 0x27, 0x1e, 0x11, 0x74, 0x6b, @@ -332,13 +333,13 @@ var fileDescriptor_93a29dc403579097 = []byte{ 0xbd, 0x63, 0xa7, 0x21, 0x88, 0xd4, 0x00, 0x27, 0x31, 0x57, 0x07, 0x5c, 0x8e, 0x93, 0x2a, 0xf4, 0xaf, 0x07, 0xda, 0x4d, 0x11, 0xdd, 0xae, 0x1c, 0xd2, 0xf9, 0x46, 0x2b, 0x6c, 0xd6, 0x9d, 0x3c, 0x1f, 0x55, 0xab, 0xea, 0x19, 0x8f, 0x79, 0x92, 0xcb, 0xc1, 0x8b, 0x70, 0x5b, 0x01, 0x9c, 0xb8, - 0x68, 0xd1, 0x43, 0xcd, 0x79, 0x7c, 0x5f, 0xc5, 0x92, 0x51, 0xfd, 0xd7, 0xe5, 0xce, 0x4b, 0x5e, + 0x68, 0xd1, 0x43, 0xcd, 0x79, 0x7c, 0x5f, 0xc5, 0x92, 0x51, 0xfd, 0xc7, 0xeb, 0xce, 0x4b, 0x5e, 0xe8, 0x44, 0xe3, 0x80, 0x4b, 0x30, 0x3b, 0x1d, 0x6e, 0xe8, 0x80, 0x55, 0x45, 0x89, 0xd9, 0x19, 0xd6, 0xb0, 0x87, 0x7d, 0x0e, 0x77, 0xc6, 0x4b, 0x91, 0x2e, 0xb8, 0xba, 0x6f, 0xb8, 0x49, 0x1a, 0x73, 0x28, 0xe2, 0xb0, 0x8f, 0xa6, 0x6d, 0xb6, 0xd6, 0x76, 0xbb, 0x93, 0x2d, 0x0f, 0xe1, 0x95, 0x09, 0xc4, 0x92, 0xc2, 0x88, 0x6c, 0x2d, 0x80, 0x3b, 0x87, 0xe1, 0x85, 0x60, 0x93, 0x98, 0x95, 0xf2, 0x94, 0x2d, 0x53, 0xc1, 0x26, 0x6a, 0x5d, 0x87, 0x87, 0xe1, 0x0d, 0x33, 0x74, 0x21, 0xea, - 0x30, 0x9c, 0x82, 0xdd, 0xec, 0x4c, 0xfd, 0xd1, 0x3c, 0x7d, 0x97, 0x13, 0x66, 0x67, 0xaa, 0xbc, + 0x30, 0x9c, 0x82, 0xdd, 0xec, 0x4c, 0xfd, 0x4d, 0x3e, 0x7d, 0x97, 0x13, 0x66, 0x67, 0xaa, 0xbc, 0xf0, 0x1e, 0xe7, 0xc3, 0x30, 0x64, 0xdf, 0x41, 0xab, 0x45, 0x2a, 0x0d, 0xb9, 0x87, 0xe9, 0x78, 0x09, 0xc8, 0xfd, 0x00, 0x61, 0xbf, 0x4b, 0x51, 0xff, 0xde, 0xfc, 0xdd, 0x17, 0xa9, 0xbf, 0x64, 0xbd, 0x89, 0xe9, 0xba, 0xd0, 0xd0, 0xfd, 0xc0, 0xdd, 0x56, 0x4f, 0xda, 0xa6, 0x99, 0xbb, 0x57, @@ -352,10 +353,10 @@ var fileDescriptor_93a29dc403579097 = []byte{ 0xec, 0x13, 0x28, 0xd6, 0xef, 0x3a, 0x73, 0xee, 0x75, 0xc4, 0x4a, 0x5b, 0x39, 0xa4, 0xeb, 0x50, 0x30, 0xd4, 0x75, 0x94, 0x82, 0xdf, 0xa4, 0xee, 0xd1, 0x1a, 0xd2, 0xa4, 0xd8, 0xb9, 0xda, 0x6a, 0x17, 0x66, 0xe3, 0x92, 0xd9, 0x4f, 0xaa, 0x2b, 0x4b, 0xf8, 0x17, 0xfc, 0x6b, 0x21, 0x11, 0x97, - 0x5a, 0x50, 0x6d, 0xfb, 0xe5, 0xfd, 0xff, 0xfc, 0xe6, 0xce, 0xca, 0x2f, 0xbe, 0xb9, 0xb3, 0xf2, - 0xdf, 0xdf, 0xdc, 0x59, 0xf9, 0xf9, 0xb7, 0x77, 0xde, 0xfb, 0xc5, 0xb7, 0x77, 0xde, 0xfb, 0xaf, - 0x6f, 0xef, 0xbc, 0xf7, 0xf5, 0xfb, 0xfa, 0x8f, 0xa9, 0x5e, 0xfc, 0x3f, 0xf5, 0x27, 0x51, 0x9f, - 0xff, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x39, 0xd6, 0xda, 0x85, 0x70, 0x75, 0x00, 0x00, + 0x5a, 0x50, 0x6d, 0xfb, 0xe5, 0xfd, 0xff, 0xfa, 0xe6, 0xce, 0xca, 0x2f, 0xbe, 0xb9, 0xb3, 0xf2, + 0x3f, 0xdf, 0xdc, 0x59, 0xf9, 0xf9, 0xb7, 0x77, 0xde, 0xfb, 0xc5, 0xb7, 0x77, 0xde, 0xfb, 0xef, + 0x6f, 0xef, 0xbc, 0xf7, 0xf5, 0xfb, 0xfa, 0x6f, 0xb5, 0x5e, 0xfc, 0x3f, 0xf5, 0x17, 0x57, 0x9f, + 0xff, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x20, 0x36, 0x1c, 0xcb, 0xcf, 0x75, 0x00, 0x00, } // This is a compile-time assertion to ensure that this generated file @@ -392,6 +393,7 @@ type ClientCommandsHandler interface { // Account // *** AccountRecover(context.Context, *pb.RpcAccountRecoverRequest) *pb.RpcAccountRecoverResponse + AccountMigrate(context.Context, *pb.RpcAccountMigrateRequest) *pb.RpcAccountMigrateResponse AccountCreate(context.Context, *pb.RpcAccountCreateRequest) *pb.RpcAccountCreateResponse AccountDelete(context.Context, *pb.RpcAccountDeleteRequest) *pb.RpcAccountDeleteResponse AccountRevertDeletion(context.Context, *pb.RpcAccountRevertDeletionRequest) *pb.RpcAccountRevertDeletionResponse @@ -1122,6 +1124,26 @@ func AccountRecover(b []byte) (resp []byte) { return resp } +func AccountMigrate(b []byte) (resp []byte) { + defer func() { + if PanicHandler != nil { + if r := recover(); r != nil { + resp, _ = (&pb.RpcAccountMigrateResponse{Error: &pb.RpcAccountMigrateResponseError{Code: pb.RpcAccountMigrateResponseError_UNKNOWN_ERROR, Description: "panic recovered"}}).Marshal() + PanicHandler(r) + } + } + }() + + in := new(pb.RpcAccountMigrateRequest) + if err := in.Unmarshal(b); err != nil { + resp, _ = (&pb.RpcAccountMigrateResponse{Error: &pb.RpcAccountMigrateResponseError{Code: pb.RpcAccountMigrateResponseError_BAD_INPUT, Description: err.Error()}}).Marshal() + return resp + } + + resp, _ = clientCommandsHandler.AccountMigrate(context.Background(), in).Marshal() + return resp +} + func AccountCreate(b []byte) (resp []byte) { defer func() { if PanicHandler != nil { @@ -6130,6 +6152,8 @@ func CommandAsync(cmd string, data []byte, callback func(data []byte)) { cd = WorkspaceExport(data) case "AccountRecover": cd = AccountRecover(data) + case "AccountMigrate": + cd = AccountMigrate(data) case "AccountCreate": cd = AccountCreate(data) case "AccountDelete": @@ -6942,6 +6966,20 @@ func (h *ClientCommandsHandlerProxy) AccountRecover(ctx context.Context, req *pb call, _ := actualCall(ctx, req) return call.(*pb.RpcAccountRecoverResponse) } +func (h *ClientCommandsHandlerProxy) AccountMigrate(ctx context.Context, req *pb.RpcAccountMigrateRequest) *pb.RpcAccountMigrateResponse { + actualCall := func(ctx context.Context, req any) (any, error) { + return h.client.AccountMigrate(ctx, req.(*pb.RpcAccountMigrateRequest)), nil + } + for _, interceptor := range h.interceptors { + toCall := actualCall + currentInterceptor := interceptor + actualCall = func(ctx context.Context, req any) (any, error) { + return currentInterceptor(ctx, req, "AccountMigrate", toCall) + } + } + call, _ := actualCall(ctx, req) + return call.(*pb.RpcAccountMigrateResponse) +} func (h *ClientCommandsHandlerProxy) AccountCreate(ctx context.Context, req *pb.RpcAccountCreateRequest) *pb.RpcAccountCreateResponse { actualCall := func(ctx context.Context, req any) (any, error) { return h.client.AccountCreate(ctx, req.(*pb.RpcAccountCreateRequest)), nil diff --git a/core/account.go b/core/account.go index 0dd514502..284b2d793 100644 --- a/core/account.go +++ b/core/account.go @@ -49,6 +49,19 @@ func (mw *Middleware) AccountRecover(cctx context.Context, _ *pb.RpcAccountRecov } } +func (mw *Middleware) AccountMigrate(cctx context.Context, req *pb.RpcAccountMigrateRequest) *pb.RpcAccountMigrateResponse { + err := mw.applicationService.AccountMigrate(cctx, req) + code := mapErrorCode(err, + errToCode(application.ErrAccountNotFound, pb.RpcAccountMigrateResponseError_ACCOUNT_NOT_FOUND), + ) + return &pb.RpcAccountMigrateResponse{ + Error: &pb.RpcAccountMigrateResponseError{ + Code: code, + Description: getErrorDescription(err), + }, + } +} + func (mw *Middleware) AccountSelect(cctx context.Context, req *pb.RpcAccountSelectRequest) *pb.RpcAccountSelectResponse { account, err := mw.applicationService.AccountSelect(cctx, req) code := mapErrorCode(err, @@ -64,6 +77,7 @@ func (mw *Middleware) AccountSelect(cctx context.Context, req *pb.RpcAccountSele errToCode(application.ErrAnotherProcessIsRunning, pb.RpcAccountSelectResponseError_ANOTHER_ANYTYPE_PROCESS_IS_RUNNING), errToCode(application.ErrIncompatibleVersion, pb.RpcAccountSelectResponseError_FAILED_TO_FETCH_REMOTE_NODE_HAS_INCOMPATIBLE_PROTO_VERSION), errToCode(application.ErrFailedToStartApplication, pb.RpcAccountSelectResponseError_FAILED_TO_RUN_NODE), + errToCode(application.ErrAccountStoreIsNotMigrated, pb.RpcAccountSelectResponseError_ACCOUNT_STORE_NOT_MIGRATED), ) return &pb.RpcAccountSelectResponse{ Config: nil, diff --git a/core/application/account_select.go b/core/application/account_select.go index c700f8dec..4cb98371d 100644 --- a/core/application/account_select.go +++ b/core/application/account_select.go @@ -31,15 +31,20 @@ var ( ErrNoMnemonicProvided = errors.New("no mnemonic provided") ErrIncompatibleVersion = errors.New("can't fetch account's data because remote nodes have incompatible protocol version. Please update anytype to the latest version") - ErrAnotherProcessIsRunning = errors.New("another anytype process is running") - ErrFailedToFindAccountInfo = errors.New("failed to find account info") - ErrAccountIsDeleted = errors.New("account is deleted") + ErrAnotherProcessIsRunning = errors.New("another anytype process is running") + ErrFailedToFindAccountInfo = errors.New("failed to find account info") + ErrAccountIsDeleted = errors.New("account is deleted") + ErrAccountStoreIsNotMigrated = errors.New("account store is not migrated") ) func (s *Service) AccountSelect(ctx context.Context, req *pb.RpcAccountSelectRequest) (*model.Account, error) { if req.Id == "" { return nil, ErrEmptyAccountID } + curMigration := s.migrationManager.getMigration(req.RootPath, req.Id) + if !curMigration.successful() { + return nil, ErrAccountStoreIsNotMigrated + } if runtime.GOOS != "android" && runtime.GOOS != "ios" { s.traceRecorder.start() diff --git a/core/application/account_store_migrate.go b/core/application/account_store_migrate.go new file mode 100644 index 000000000..dfd0ee230 --- /dev/null +++ b/core/application/account_store_migrate.go @@ -0,0 +1,97 @@ +package application + +import ( + "context" + "errors" + "sync" + "sync/atomic" + + "github.com/anyproto/any-sync/app" + + "github.com/anyproto/anytype-heart/core/block/process" + "github.com/anyproto/anytype-heart/pb" + "github.com/anyproto/anytype-heart/space/spacecore/storage/migrator" +) + +var ErrAccountNotFound = errors.New("account not found") + +type migration struct { + isStarted atomic.Bool + isSuccess atomic.Bool + service *Service + err error + done chan struct{} +} + +func newMigration(s *Service) *migration { + return &migration{ + done: make(chan struct{}), + service: s, + } +} + +func newSuccessfulMigration(s *Service) *migration { + m := newMigration(s) + m.isSuccess.Store(true) + close(m.done) + return m +} + +func (m *migration) wait() error { + if !m.isStarted.CompareAndSwap(false, true) { + <-m.done + return m.err + } + a := &app.App{} + a.Register(m.service.eventSender). + Register(process.New()). + Register(migrator.New()) + err := a.Start(context.Background()) + if err != nil { + m.err = err + close(m.done) + return err + } + err = a.Close(context.Background()) + if err != nil { + m.err = err + close(m.done) + return err + } + close(m.done) + m.isSuccess.Store(true) + return nil +} + +func (m *migration) successful() bool { + return m.isSuccess.Load() +} + +type migrationManager struct { + migrations map[string]*migration + service *Service + sync.Mutex +} + +func newMigrationManager(s *Service) *migrationManager { + return &migrationManager{ + service: s, + } +} + +func (m *migrationManager) getMigration(rootPath, id string) *migration { + m.Lock() + defer m.Unlock() + if m.migrations == nil { + m.migrations = make(map[string]*migration) + } + if m.migrations[id] == nil { + // TODO: [store] add successful migration if we don't need a migration + m.migrations[id] = newMigration(m.service) + } + return m.migrations[id] +} + +func (s *Service) AccountMigrate(ctx context.Context, req *pb.RpcAccountMigrateRequest) error { + return s.migrationManager.getMigration(req.RootPath, req.Id).wait() +} diff --git a/core/application/application.go b/core/application/application.go index f934d194c..ceabeb78d 100644 --- a/core/application/application.go +++ b/core/application/application.go @@ -30,16 +30,20 @@ type Service struct { eventSender event.Sender sessions session.Service traceRecorder *traceRecorder + migrationManager *migrationManager appAccountStartInProcessCancel context.CancelFunc appAccountStartInProcessCancelMutex sync.Mutex } func New() *Service { - return &Service{ + s := &Service{ sessions: session.New(), traceRecorder: &traceRecorder{}, } + m := newMigrationManager(s) + s.migrationManager = m + return s } func (s *Service) GetApp() *app.App { diff --git a/docs/proto.md b/docs/proto.md index c7d539e7e..7d3ac559d 100644 --- a/docs/proto.md +++ b/docs/proto.md @@ -83,6 +83,10 @@ - [Rpc.Account.LocalLink.SolveChallenge.Request](#anytype-Rpc-Account-LocalLink-SolveChallenge-Request) - [Rpc.Account.LocalLink.SolveChallenge.Response](#anytype-Rpc-Account-LocalLink-SolveChallenge-Response) - [Rpc.Account.LocalLink.SolveChallenge.Response.Error](#anytype-Rpc-Account-LocalLink-SolveChallenge-Response-Error) + - [Rpc.Account.Migrate](#anytype-Rpc-Account-Migrate) + - [Rpc.Account.Migrate.Request](#anytype-Rpc-Account-Migrate-Request) + - [Rpc.Account.Migrate.Response](#anytype-Rpc-Account-Migrate-Response) + - [Rpc.Account.Migrate.Response.Error](#anytype-Rpc-Account-Migrate-Response-Error) - [Rpc.Account.Move](#anytype-Rpc-Account-Move) - [Rpc.Account.Move.Request](#anytype-Rpc-Account-Move-Request) - [Rpc.Account.Move.Response](#anytype-Rpc-Account-Move-Response) @@ -1260,6 +1264,7 @@ - [Rpc.Account.EnableLocalNetworkSync.Response.Error.Code](#anytype-Rpc-Account-EnableLocalNetworkSync-Response-Error-Code) - [Rpc.Account.LocalLink.NewChallenge.Response.Error.Code](#anytype-Rpc-Account-LocalLink-NewChallenge-Response-Error-Code) - [Rpc.Account.LocalLink.SolveChallenge.Response.Error.Code](#anytype-Rpc-Account-LocalLink-SolveChallenge-Response-Error-Code) + - [Rpc.Account.Migrate.Response.Error.Code](#anytype-Rpc-Account-Migrate-Response-Error-Code) - [Rpc.Account.Move.Response.Error.Code](#anytype-Rpc-Account-Move-Response-Error-Code) - [Rpc.Account.NetworkMode](#anytype-Rpc-Account-NetworkMode) - [Rpc.Account.Recover.Response.Error.Code](#anytype-Rpc-Account-Recover-Response-Error-Code) @@ -1984,6 +1989,7 @@ | WorkspaceSetInfo | [Rpc.Workspace.SetInfo.Request](#anytype-Rpc-Workspace-SetInfo-Request) | [Rpc.Workspace.SetInfo.Response](#anytype-Rpc-Workspace-SetInfo-Response) | | | WorkspaceExport | [Rpc.Workspace.Export.Request](#anytype-Rpc-Workspace-Export-Request) | [Rpc.Workspace.Export.Response](#anytype-Rpc-Workspace-Export-Response) | | | AccountRecover | [Rpc.Account.Recover.Request](#anytype-Rpc-Account-Recover-Request) | [Rpc.Account.Recover.Response](#anytype-Rpc-Account-Recover-Response) | Account *** | +| AccountMigrate | [Rpc.Account.Migrate.Request](#anytype-Rpc-Account-Migrate-Request) | [Rpc.Account.Migrate.Response](#anytype-Rpc-Account-Migrate-Response) | | | AccountCreate | [Rpc.Account.Create.Request](#anytype-Rpc-Account-Create-Request) | [Rpc.Account.Create.Response](#anytype-Rpc-Account-Create-Response) | | | AccountDelete | [Rpc.Account.Delete.Request](#anytype-Rpc-Account-Delete-Request) | [Rpc.Account.Delete.Response](#anytype-Rpc-Account-Delete-Response) | | | AccountRevertDeletion | [Rpc.Account.RevertDeletion.Request](#anytype-Rpc-Account-RevertDeletion-Request) | [Rpc.Account.RevertDeletion.Response](#anytype-Rpc-Account-RevertDeletion-Response) | | @@ -3362,6 +3368,63 @@ TODO: Remove this request if we do not need it, GO-1926 + + +### Rpc.Account.Migrate + + + + + + + + + +### Rpc.Account.Migrate.Request + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [string](#string) | | Id of a selected account | +| rootPath | [string](#string) | | | + + + + + + + + +### Rpc.Account.Migrate.Response + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| error | [Rpc.Account.Migrate.Response.Error](#anytype-Rpc-Account-Migrate-Response-Error) | | | + + + + + + + + +### Rpc.Account.Migrate.Response.Error + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| code | [Rpc.Account.Migrate.Response.Error.Code](#anytype-Rpc-Account-Migrate-Response-Error-Code) | | | +| description | [string](#string) | | | + + + + + + ### Rpc.Account.Move @@ -20485,6 +20548,20 @@ Middleware-to-front-end response, that can contain a NULL error or a non-NULL er + + +### Rpc.Account.Migrate.Response.Error.Code + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| NULL | 0 | No error | +| UNKNOWN_ERROR | 1 | Any other errors | +| BAD_INPUT | 2 | Id or root path is wrong | +| ACCOUNT_NOT_FOUND | 101 | TODO: [storage] Add specific error codes for migration problems | + + + ### Rpc.Account.Move.Response.Error.Code @@ -20580,6 +20657,7 @@ Middleware-to-front-end response, that can contain a NULL error or a non-NULL er | FAILED_TO_FETCH_REMOTE_NODE_HAS_INCOMPATIBLE_PROTO_VERSION | 110 | | | ACCOUNT_IS_DELETED | 111 | | | ACCOUNT_LOAD_IS_CANCELED | 112 | | +| ACCOUNT_STORE_NOT_MIGRATED | 113 | | | CONFIG_FILE_NOT_FOUND | 200 | | | CONFIG_FILE_INVALID | 201 | | | CONFIG_FILE_NETWORK_ID_MISMATCH | 202 | | diff --git a/pb/commands.pb.go b/pb/commands.pb.go index 57d40ca5f..4d0ec946b 100644 --- a/pb/commands.pb.go +++ b/pb/commands.pb.go @@ -1132,6 +1132,37 @@ func (RpcAccountRevertDeletionResponseErrorCode) EnumDescriptor() ([]byte, []int return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 4, 1, 0, 0} } +type RpcAccountMigrateResponseErrorCode int32 + +const ( + RpcAccountMigrateResponseError_NULL RpcAccountMigrateResponseErrorCode = 0 + RpcAccountMigrateResponseError_UNKNOWN_ERROR RpcAccountMigrateResponseErrorCode = 1 + RpcAccountMigrateResponseError_BAD_INPUT RpcAccountMigrateResponseErrorCode = 2 + RpcAccountMigrateResponseError_ACCOUNT_NOT_FOUND RpcAccountMigrateResponseErrorCode = 101 +) + +var RpcAccountMigrateResponseErrorCode_name = map[int32]string{ + 0: "NULL", + 1: "UNKNOWN_ERROR", + 2: "BAD_INPUT", + 101: "ACCOUNT_NOT_FOUND", +} + +var RpcAccountMigrateResponseErrorCode_value = map[string]int32{ + "NULL": 0, + "UNKNOWN_ERROR": 1, + "BAD_INPUT": 2, + "ACCOUNT_NOT_FOUND": 101, +} + +func (x RpcAccountMigrateResponseErrorCode) String() string { + return proto.EnumName(RpcAccountMigrateResponseErrorCode_name, int32(x)) +} + +func (RpcAccountMigrateResponseErrorCode) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 5, 1, 0, 0} +} + type RpcAccountSelectResponseErrorCode int32 const ( @@ -1148,6 +1179,7 @@ const ( RpcAccountSelectResponseError_FAILED_TO_FETCH_REMOTE_NODE_HAS_INCOMPATIBLE_PROTO_VERSION RpcAccountSelectResponseErrorCode = 110 RpcAccountSelectResponseError_ACCOUNT_IS_DELETED RpcAccountSelectResponseErrorCode = 111 RpcAccountSelectResponseError_ACCOUNT_LOAD_IS_CANCELED RpcAccountSelectResponseErrorCode = 112 + RpcAccountSelectResponseError_ACCOUNT_STORE_NOT_MIGRATED RpcAccountSelectResponseErrorCode = 113 RpcAccountSelectResponseError_CONFIG_FILE_NOT_FOUND RpcAccountSelectResponseErrorCode = 200 RpcAccountSelectResponseError_CONFIG_FILE_INVALID RpcAccountSelectResponseErrorCode = 201 RpcAccountSelectResponseError_CONFIG_FILE_NETWORK_ID_MISMATCH RpcAccountSelectResponseErrorCode = 202 @@ -1167,6 +1199,7 @@ var RpcAccountSelectResponseErrorCode_name = map[int32]string{ 110: "FAILED_TO_FETCH_REMOTE_NODE_HAS_INCOMPATIBLE_PROTO_VERSION", 111: "ACCOUNT_IS_DELETED", 112: "ACCOUNT_LOAD_IS_CANCELED", + 113: "ACCOUNT_STORE_NOT_MIGRATED", 200: "CONFIG_FILE_NOT_FOUND", 201: "CONFIG_FILE_INVALID", 202: "CONFIG_FILE_NETWORK_ID_MISMATCH", @@ -1186,6 +1219,7 @@ var RpcAccountSelectResponseErrorCode_value = map[string]int32{ "FAILED_TO_FETCH_REMOTE_NODE_HAS_INCOMPATIBLE_PROTO_VERSION": 110, "ACCOUNT_IS_DELETED": 111, "ACCOUNT_LOAD_IS_CANCELED": 112, + "ACCOUNT_STORE_NOT_MIGRATED": 113, "CONFIG_FILE_NOT_FOUND": 200, "CONFIG_FILE_INVALID": 201, "CONFIG_FILE_NETWORK_ID_MISMATCH": 202, @@ -1196,7 +1230,7 @@ func (x RpcAccountSelectResponseErrorCode) String() string { } func (RpcAccountSelectResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 5, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 6, 1, 0, 0} } type RpcAccountStopResponseErrorCode int32 @@ -1233,7 +1267,7 @@ func (x RpcAccountStopResponseErrorCode) String() string { } func (RpcAccountStopResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 6, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 7, 1, 0, 0} } type RpcAccountMoveResponseErrorCode int32 @@ -1279,7 +1313,7 @@ func (x RpcAccountMoveResponseErrorCode) String() string { } func (RpcAccountMoveResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 7, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 8, 1, 0, 0} } type RpcAccountConfigUpdateTimezones int32 @@ -1382,7 +1416,7 @@ func (x RpcAccountConfigUpdateTimezones) String() string { } func (RpcAccountConfigUpdateTimezones) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 8, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 9, 0} } type RpcAccountConfigUpdateResponseErrorCode int32 @@ -1416,7 +1450,7 @@ func (x RpcAccountConfigUpdateResponseErrorCode) String() string { } func (RpcAccountConfigUpdateResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 8, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 9, 1, 0, 0} } type RpcAccountRecoverFromLegacyExportResponseErrorCode int32 @@ -1447,7 +1481,7 @@ func (x RpcAccountRecoverFromLegacyExportResponseErrorCode) String() string { } func (RpcAccountRecoverFromLegacyExportResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 10, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 11, 1, 0, 0} } type RpcAccountEnableLocalNetworkSyncResponseErrorCode int32 @@ -1478,7 +1512,7 @@ func (x RpcAccountEnableLocalNetworkSyncResponseErrorCode) String() string { } func (RpcAccountEnableLocalNetworkSyncResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 11, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12, 1, 0, 0} } type RpcAccountChangeNetworkConfigAndRestartResponseErrorCode int32 @@ -1521,7 +1555,7 @@ func (x RpcAccountChangeNetworkConfigAndRestartResponseErrorCode) String() strin } func (RpcAccountChangeNetworkConfigAndRestartResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 1, 0, 0} } type RpcAccountLocalLinkNewChallengeResponseErrorCode int32 @@ -1555,7 +1589,7 @@ func (x RpcAccountLocalLinkNewChallengeResponseErrorCode) String() string { } func (RpcAccountLocalLinkNewChallengeResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 0, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 0, 1, 0, 0} } type RpcAccountLocalLinkSolveChallengeResponseErrorCode int32 @@ -1595,7 +1629,7 @@ func (x RpcAccountLocalLinkSolveChallengeResponseErrorCode) String() string { } func (RpcAccountLocalLinkSolveChallengeResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 1, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 1, 1, 0, 0} } type RpcWorkspaceGetCurrentResponseErrorCode int32 @@ -14612,6 +14646,190 @@ func (m *RpcAccountRevertDeletionResponseError) GetDescription() string { return "" } +type RpcAccountMigrate struct { +} + +func (m *RpcAccountMigrate) Reset() { *m = RpcAccountMigrate{} } +func (m *RpcAccountMigrate) String() string { return proto.CompactTextString(m) } +func (*RpcAccountMigrate) ProtoMessage() {} +func (*RpcAccountMigrate) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 5} +} +func (m *RpcAccountMigrate) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcAccountMigrate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcAccountMigrate.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcAccountMigrate) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcAccountMigrate.Merge(m, src) +} +func (m *RpcAccountMigrate) XXX_Size() int { + return m.Size() +} +func (m *RpcAccountMigrate) XXX_DiscardUnknown() { + xxx_messageInfo_RpcAccountMigrate.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcAccountMigrate proto.InternalMessageInfo + +type RpcAccountMigrateRequest struct { + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + RootPath string `protobuf:"bytes,2,opt,name=rootPath,proto3" json:"rootPath,omitempty"` +} + +func (m *RpcAccountMigrateRequest) Reset() { *m = RpcAccountMigrateRequest{} } +func (m *RpcAccountMigrateRequest) String() string { return proto.CompactTextString(m) } +func (*RpcAccountMigrateRequest) ProtoMessage() {} +func (*RpcAccountMigrateRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 5, 0} +} +func (m *RpcAccountMigrateRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcAccountMigrateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcAccountMigrateRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcAccountMigrateRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcAccountMigrateRequest.Merge(m, src) +} +func (m *RpcAccountMigrateRequest) XXX_Size() int { + return m.Size() +} +func (m *RpcAccountMigrateRequest) XXX_DiscardUnknown() { + xxx_messageInfo_RpcAccountMigrateRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcAccountMigrateRequest proto.InternalMessageInfo + +func (m *RpcAccountMigrateRequest) GetId() string { + if m != nil { + return m.Id + } + return "" +} + +func (m *RpcAccountMigrateRequest) GetRootPath() string { + if m != nil { + return m.RootPath + } + return "" +} + +type RpcAccountMigrateResponse struct { + Error *RpcAccountMigrateResponseError `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` +} + +func (m *RpcAccountMigrateResponse) Reset() { *m = RpcAccountMigrateResponse{} } +func (m *RpcAccountMigrateResponse) String() string { return proto.CompactTextString(m) } +func (*RpcAccountMigrateResponse) ProtoMessage() {} +func (*RpcAccountMigrateResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 5, 1} +} +func (m *RpcAccountMigrateResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcAccountMigrateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcAccountMigrateResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcAccountMigrateResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcAccountMigrateResponse.Merge(m, src) +} +func (m *RpcAccountMigrateResponse) XXX_Size() int { + return m.Size() +} +func (m *RpcAccountMigrateResponse) XXX_DiscardUnknown() { + xxx_messageInfo_RpcAccountMigrateResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcAccountMigrateResponse proto.InternalMessageInfo + +func (m *RpcAccountMigrateResponse) GetError() *RpcAccountMigrateResponseError { + if m != nil { + return m.Error + } + return nil +} + +type RpcAccountMigrateResponseError struct { + Code RpcAccountMigrateResponseErrorCode `protobuf:"varint,1,opt,name=code,proto3,enum=anytype.RpcAccountMigrateResponseErrorCode" json:"code,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` +} + +func (m *RpcAccountMigrateResponseError) Reset() { *m = RpcAccountMigrateResponseError{} } +func (m *RpcAccountMigrateResponseError) String() string { return proto.CompactTextString(m) } +func (*RpcAccountMigrateResponseError) ProtoMessage() {} +func (*RpcAccountMigrateResponseError) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 5, 1, 0} +} +func (m *RpcAccountMigrateResponseError) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcAccountMigrateResponseError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcAccountMigrateResponseError.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcAccountMigrateResponseError) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcAccountMigrateResponseError.Merge(m, src) +} +func (m *RpcAccountMigrateResponseError) XXX_Size() int { + return m.Size() +} +func (m *RpcAccountMigrateResponseError) XXX_DiscardUnknown() { + xxx_messageInfo_RpcAccountMigrateResponseError.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcAccountMigrateResponseError proto.InternalMessageInfo + +func (m *RpcAccountMigrateResponseError) GetCode() RpcAccountMigrateResponseErrorCode { + if m != nil { + return m.Code + } + return RpcAccountMigrateResponseError_NULL +} + +func (m *RpcAccountMigrateResponseError) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + type RpcAccountSelect struct { } @@ -14619,7 +14837,7 @@ func (m *RpcAccountSelect) Reset() { *m = RpcAccountSelect{} } func (m *RpcAccountSelect) String() string { return proto.CompactTextString(m) } func (*RpcAccountSelect) ProtoMessage() {} func (*RpcAccountSelect) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 5} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 6} } func (m *RpcAccountSelect) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14664,7 +14882,7 @@ func (m *RpcAccountSelectRequest) Reset() { *m = RpcAccountSelectRequest func (m *RpcAccountSelectRequest) String() string { return proto.CompactTextString(m) } func (*RpcAccountSelectRequest) ProtoMessage() {} func (*RpcAccountSelectRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 5, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 6, 0} } func (m *RpcAccountSelectRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14747,7 +14965,7 @@ func (m *RpcAccountSelectResponse) Reset() { *m = RpcAccountSelectRespon func (m *RpcAccountSelectResponse) String() string { return proto.CompactTextString(m) } func (*RpcAccountSelectResponse) ProtoMessage() {} func (*RpcAccountSelectResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 5, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 6, 1} } func (m *RpcAccountSelectResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14806,7 +15024,7 @@ func (m *RpcAccountSelectResponseError) Reset() { *m = RpcAccountSelectR func (m *RpcAccountSelectResponseError) String() string { return proto.CompactTextString(m) } func (*RpcAccountSelectResponseError) ProtoMessage() {} func (*RpcAccountSelectResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 5, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 6, 1, 0} } func (m *RpcAccountSelectResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14856,7 +15074,7 @@ func (m *RpcAccountStop) Reset() { *m = RpcAccountStop{} } func (m *RpcAccountStop) String() string { return proto.CompactTextString(m) } func (*RpcAccountStop) ProtoMessage() {} func (*RpcAccountStop) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 6} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 7} } func (m *RpcAccountStop) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14895,7 +15113,7 @@ func (m *RpcAccountStopRequest) Reset() { *m = RpcAccountStopRequest{} } func (m *RpcAccountStopRequest) String() string { return proto.CompactTextString(m) } func (*RpcAccountStopRequest) ProtoMessage() {} func (*RpcAccountStopRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 6, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 7, 0} } func (m *RpcAccountStopRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14941,7 +15159,7 @@ func (m *RpcAccountStopResponse) Reset() { *m = RpcAccountStopResponse{} func (m *RpcAccountStopResponse) String() string { return proto.CompactTextString(m) } func (*RpcAccountStopResponse) ProtoMessage() {} func (*RpcAccountStopResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 6, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 7, 1} } func (m *RpcAccountStopResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14986,7 +15204,7 @@ func (m *RpcAccountStopResponseError) Reset() { *m = RpcAccountStopRespo func (m *RpcAccountStopResponseError) String() string { return proto.CompactTextString(m) } func (*RpcAccountStopResponseError) ProtoMessage() {} func (*RpcAccountStopResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 6, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 7, 1, 0} } func (m *RpcAccountStopResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15036,7 +15254,7 @@ func (m *RpcAccountMove) Reset() { *m = RpcAccountMove{} } func (m *RpcAccountMove) String() string { return proto.CompactTextString(m) } func (*RpcAccountMove) ProtoMessage() {} func (*RpcAccountMove) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 7} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 8} } func (m *RpcAccountMove) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15075,7 +15293,7 @@ func (m *RpcAccountMoveRequest) Reset() { *m = RpcAccountMoveRequest{} } func (m *RpcAccountMoveRequest) String() string { return proto.CompactTextString(m) } func (*RpcAccountMoveRequest) ProtoMessage() {} func (*RpcAccountMoveRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 7, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 8, 0} } func (m *RpcAccountMoveRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15119,7 +15337,7 @@ func (m *RpcAccountMoveResponse) Reset() { *m = RpcAccountMoveResponse{} func (m *RpcAccountMoveResponse) String() string { return proto.CompactTextString(m) } func (*RpcAccountMoveResponse) ProtoMessage() {} func (*RpcAccountMoveResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 7, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 8, 1} } func (m *RpcAccountMoveResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15164,7 +15382,7 @@ func (m *RpcAccountMoveResponseError) Reset() { *m = RpcAccountMoveRespo func (m *RpcAccountMoveResponseError) String() string { return proto.CompactTextString(m) } func (*RpcAccountMoveResponseError) ProtoMessage() {} func (*RpcAccountMoveResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 7, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 8, 1, 0} } func (m *RpcAccountMoveResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15214,7 +15432,7 @@ func (m *RpcAccountConfigUpdate) Reset() { *m = RpcAccountConfigUpdate{} func (m *RpcAccountConfigUpdate) String() string { return proto.CompactTextString(m) } func (*RpcAccountConfigUpdate) ProtoMessage() {} func (*RpcAccountConfigUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 8} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 9} } func (m *RpcAccountConfigUpdate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15251,7 +15469,7 @@ func (m *RpcAccountConfigUpdateRequest) Reset() { *m = RpcAccountConfigU func (m *RpcAccountConfigUpdateRequest) String() string { return proto.CompactTextString(m) } func (*RpcAccountConfigUpdateRequest) ProtoMessage() {} func (*RpcAccountConfigUpdateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 8, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 9, 0} } func (m *RpcAccountConfigUpdateRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15295,7 +15513,7 @@ func (m *RpcAccountConfigUpdateResponse) Reset() { *m = RpcAccountConfig func (m *RpcAccountConfigUpdateResponse) String() string { return proto.CompactTextString(m) } func (*RpcAccountConfigUpdateResponse) ProtoMessage() {} func (*RpcAccountConfigUpdateResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 8, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 9, 1} } func (m *RpcAccountConfigUpdateResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15340,7 +15558,7 @@ func (m *RpcAccountConfigUpdateResponseError) Reset() { *m = RpcAccountC func (m *RpcAccountConfigUpdateResponseError) String() string { return proto.CompactTextString(m) } func (*RpcAccountConfigUpdateResponseError) ProtoMessage() {} func (*RpcAccountConfigUpdateResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 8, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 9, 1, 0} } func (m *RpcAccountConfigUpdateResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15390,7 +15608,7 @@ func (m *RpcAccountGetConfig) Reset() { *m = RpcAccountGetConfig{} } func (m *RpcAccountGetConfig) String() string { return proto.CompactTextString(m) } func (*RpcAccountGetConfig) ProtoMessage() {} func (*RpcAccountGetConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 9} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 10} } func (m *RpcAccountGetConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15426,7 +15644,7 @@ func (m *RpcAccountGetConfigGet) Reset() { *m = RpcAccountGetConfigGet{} func (m *RpcAccountGetConfigGet) String() string { return proto.CompactTextString(m) } func (*RpcAccountGetConfigGet) ProtoMessage() {} func (*RpcAccountGetConfigGet) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 9, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 10, 0} } func (m *RpcAccountGetConfigGet) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15462,7 +15680,7 @@ func (m *RpcAccountGetConfigGetRequest) Reset() { *m = RpcAccountGetConf func (m *RpcAccountGetConfigGetRequest) String() string { return proto.CompactTextString(m) } func (*RpcAccountGetConfigGetRequest) ProtoMessage() {} func (*RpcAccountGetConfigGetRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 9, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 10, 0, 0} } func (m *RpcAccountGetConfigGetRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15498,7 +15716,7 @@ func (m *RpcAccountRecoverFromLegacyExport) Reset() { *m = RpcAccountRec func (m *RpcAccountRecoverFromLegacyExport) String() string { return proto.CompactTextString(m) } func (*RpcAccountRecoverFromLegacyExport) ProtoMessage() {} func (*RpcAccountRecoverFromLegacyExport) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 10} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 11} } func (m *RpcAccountRecoverFromLegacyExport) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15539,7 +15757,7 @@ func (m *RpcAccountRecoverFromLegacyExportRequest) Reset() { func (m *RpcAccountRecoverFromLegacyExportRequest) String() string { return proto.CompactTextString(m) } func (*RpcAccountRecoverFromLegacyExportRequest) ProtoMessage() {} func (*RpcAccountRecoverFromLegacyExportRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 10, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 11, 0} } func (m *RpcAccountRecoverFromLegacyExportRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15603,7 +15821,7 @@ func (m *RpcAccountRecoverFromLegacyExportResponse) String() string { } func (*RpcAccountRecoverFromLegacyExportResponse) ProtoMessage() {} func (*RpcAccountRecoverFromLegacyExportResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 10, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 11, 1} } func (m *RpcAccountRecoverFromLegacyExportResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15666,7 +15884,7 @@ func (m *RpcAccountRecoverFromLegacyExportResponseError) String() string { } func (*RpcAccountRecoverFromLegacyExportResponseError) ProtoMessage() {} func (*RpcAccountRecoverFromLegacyExportResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 10, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 11, 1, 0} } func (m *RpcAccountRecoverFromLegacyExportResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15716,7 +15934,7 @@ func (m *RpcAccountEnableLocalNetworkSync) Reset() { *m = RpcAccountEnab func (m *RpcAccountEnableLocalNetworkSync) String() string { return proto.CompactTextString(m) } func (*RpcAccountEnableLocalNetworkSync) ProtoMessage() {} func (*RpcAccountEnableLocalNetworkSync) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 11} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12} } func (m *RpcAccountEnableLocalNetworkSync) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15754,7 +15972,7 @@ func (m *RpcAccountEnableLocalNetworkSyncRequest) Reset() { func (m *RpcAccountEnableLocalNetworkSyncRequest) String() string { return proto.CompactTextString(m) } func (*RpcAccountEnableLocalNetworkSyncRequest) ProtoMessage() {} func (*RpcAccountEnableLocalNetworkSyncRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 11, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12, 0} } func (m *RpcAccountEnableLocalNetworkSyncRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15793,7 +16011,7 @@ func (m *RpcAccountEnableLocalNetworkSyncResponse) Reset() { func (m *RpcAccountEnableLocalNetworkSyncResponse) String() string { return proto.CompactTextString(m) } func (*RpcAccountEnableLocalNetworkSyncResponse) ProtoMessage() {} func (*RpcAccountEnableLocalNetworkSyncResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 11, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12, 1} } func (m *RpcAccountEnableLocalNetworkSyncResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15842,7 +16060,7 @@ func (m *RpcAccountEnableLocalNetworkSyncResponseError) String() string { } func (*RpcAccountEnableLocalNetworkSyncResponseError) ProtoMessage() {} func (*RpcAccountEnableLocalNetworkSyncResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 11, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12, 1, 0} } func (m *RpcAccountEnableLocalNetworkSyncResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15894,7 +16112,7 @@ func (m *RpcAccountChangeNetworkConfigAndRestart) Reset() { func (m *RpcAccountChangeNetworkConfigAndRestart) String() string { return proto.CompactTextString(m) } func (*RpcAccountChangeNetworkConfigAndRestart) ProtoMessage() {} func (*RpcAccountChangeNetworkConfigAndRestart) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13} } func (m *RpcAccountChangeNetworkConfigAndRestart) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15936,7 +16154,7 @@ func (m *RpcAccountChangeNetworkConfigAndRestartRequest) String() string { } func (*RpcAccountChangeNetworkConfigAndRestartRequest) ProtoMessage() {} func (*RpcAccountChangeNetworkConfigAndRestartRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 0} } func (m *RpcAccountChangeNetworkConfigAndRestartRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15991,7 +16209,7 @@ func (m *RpcAccountChangeNetworkConfigAndRestartResponse) String() string { } func (*RpcAccountChangeNetworkConfigAndRestartResponse) ProtoMessage() {} func (*RpcAccountChangeNetworkConfigAndRestartResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 1} } func (m *RpcAccountChangeNetworkConfigAndRestartResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16040,7 +16258,7 @@ func (m *RpcAccountChangeNetworkConfigAndRestartResponseError) String() string { } func (*RpcAccountChangeNetworkConfigAndRestartResponseError) ProtoMessage() {} func (*RpcAccountChangeNetworkConfigAndRestartResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 1, 0} } func (m *RpcAccountChangeNetworkConfigAndRestartResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16090,7 +16308,7 @@ func (m *RpcAccountLocalLink) Reset() { *m = RpcAccountLocalLink{} } func (m *RpcAccountLocalLink) String() string { return proto.CompactTextString(m) } func (*RpcAccountLocalLink) ProtoMessage() {} func (*RpcAccountLocalLink) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14} } func (m *RpcAccountLocalLink) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16126,7 +16344,7 @@ func (m *RpcAccountLocalLinkNewChallenge) Reset() { *m = RpcAccountLocal func (m *RpcAccountLocalLinkNewChallenge) String() string { return proto.CompactTextString(m) } func (*RpcAccountLocalLinkNewChallenge) ProtoMessage() {} func (*RpcAccountLocalLinkNewChallenge) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 0} } func (m *RpcAccountLocalLinkNewChallenge) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16165,7 +16383,7 @@ func (m *RpcAccountLocalLinkNewChallengeRequest) Reset() { func (m *RpcAccountLocalLinkNewChallengeRequest) String() string { return proto.CompactTextString(m) } func (*RpcAccountLocalLinkNewChallengeRequest) ProtoMessage() {} func (*RpcAccountLocalLinkNewChallengeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 0, 0} } func (m *RpcAccountLocalLinkNewChallengeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16212,7 +16430,7 @@ func (m *RpcAccountLocalLinkNewChallengeResponse) Reset() { func (m *RpcAccountLocalLinkNewChallengeResponse) String() string { return proto.CompactTextString(m) } func (*RpcAccountLocalLinkNewChallengeResponse) ProtoMessage() {} func (*RpcAccountLocalLinkNewChallengeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 0, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 0, 1} } func (m *RpcAccountLocalLinkNewChallengeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16268,7 +16486,7 @@ func (m *RpcAccountLocalLinkNewChallengeResponseError) String() string { } func (*RpcAccountLocalLinkNewChallengeResponseError) ProtoMessage() {} func (*RpcAccountLocalLinkNewChallengeResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 0, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 0, 1, 0} } func (m *RpcAccountLocalLinkNewChallengeResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16318,7 +16536,7 @@ func (m *RpcAccountLocalLinkSolveChallenge) Reset() { *m = RpcAccountLoc func (m *RpcAccountLocalLinkSolveChallenge) String() string { return proto.CompactTextString(m) } func (*RpcAccountLocalLinkSolveChallenge) ProtoMessage() {} func (*RpcAccountLocalLinkSolveChallenge) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 1} } func (m *RpcAccountLocalLinkSolveChallenge) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16358,7 +16576,7 @@ func (m *RpcAccountLocalLinkSolveChallengeRequest) Reset() { func (m *RpcAccountLocalLinkSolveChallengeRequest) String() string { return proto.CompactTextString(m) } func (*RpcAccountLocalLinkSolveChallengeRequest) ProtoMessage() {} func (*RpcAccountLocalLinkSolveChallengeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 1, 0} } func (m *RpcAccountLocalLinkSolveChallengeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16415,7 +16633,7 @@ func (m *RpcAccountLocalLinkSolveChallengeResponse) String() string { } func (*RpcAccountLocalLinkSolveChallengeResponse) ProtoMessage() {} func (*RpcAccountLocalLinkSolveChallengeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 1, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 1, 1} } func (m *RpcAccountLocalLinkSolveChallengeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16478,7 +16696,7 @@ func (m *RpcAccountLocalLinkSolveChallengeResponseError) String() string { } func (*RpcAccountLocalLinkSolveChallengeResponseError) ProtoMessage() {} func (*RpcAccountLocalLinkSolveChallengeResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 1, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 1, 1, 0} } func (m *RpcAccountLocalLinkSolveChallengeResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -69301,6 +69519,7 @@ func init() { proto.RegisterEnum("anytype.RpcAccountRecoverResponseErrorCode", RpcAccountRecoverResponseErrorCode_name, RpcAccountRecoverResponseErrorCode_value) proto.RegisterEnum("anytype.RpcAccountDeleteResponseErrorCode", RpcAccountDeleteResponseErrorCode_name, RpcAccountDeleteResponseErrorCode_value) proto.RegisterEnum("anytype.RpcAccountRevertDeletionResponseErrorCode", RpcAccountRevertDeletionResponseErrorCode_name, RpcAccountRevertDeletionResponseErrorCode_value) + proto.RegisterEnum("anytype.RpcAccountMigrateResponseErrorCode", RpcAccountMigrateResponseErrorCode_name, RpcAccountMigrateResponseErrorCode_value) proto.RegisterEnum("anytype.RpcAccountSelectResponseErrorCode", RpcAccountSelectResponseErrorCode_name, RpcAccountSelectResponseErrorCode_value) proto.RegisterEnum("anytype.RpcAccountStopResponseErrorCode", RpcAccountStopResponseErrorCode_name, RpcAccountStopResponseErrorCode_value) proto.RegisterEnum("anytype.RpcAccountMoveResponseErrorCode", RpcAccountMoveResponseErrorCode_name, RpcAccountMoveResponseErrorCode_value) @@ -69682,6 +69901,10 @@ func init() { proto.RegisterType((*RpcAccountRevertDeletionRequest)(nil), "anytype.Rpc.Account.RevertDeletion.Request") proto.RegisterType((*RpcAccountRevertDeletionResponse)(nil), "anytype.Rpc.Account.RevertDeletion.Response") proto.RegisterType((*RpcAccountRevertDeletionResponseError)(nil), "anytype.Rpc.Account.RevertDeletion.Response.Error") + proto.RegisterType((*RpcAccountMigrate)(nil), "anytype.Rpc.Account.Migrate") + proto.RegisterType((*RpcAccountMigrateRequest)(nil), "anytype.Rpc.Account.Migrate.Request") + proto.RegisterType((*RpcAccountMigrateResponse)(nil), "anytype.Rpc.Account.Migrate.Response") + proto.RegisterType((*RpcAccountMigrateResponseError)(nil), "anytype.Rpc.Account.Migrate.Response.Error") proto.RegisterType((*RpcAccountSelect)(nil), "anytype.Rpc.Account.Select") proto.RegisterType((*RpcAccountSelectRequest)(nil), "anytype.Rpc.Account.Select.Request") proto.RegisterType((*RpcAccountSelectResponse)(nil), "anytype.Rpc.Account.Select.Response") @@ -70774,1209 +70997,1212 @@ func init() { func init() { proto.RegisterFile("pb/protos/commands.proto", fileDescriptor_8261c968b2e6f45c) } var fileDescriptor_8261c968b2e6f45c = []byte{ - // 19227 bytes of a gzipped FileDescriptorProto + // 19277 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x7f, 0x9c, 0x23, 0x47, - 0x75, 0x2f, 0xba, 0x52, 0x4b, 0x9a, 0x99, 0x33, 0x3f, 0x56, 0xdb, 0xde, 0x5d, 0xaf, 0xcb, 0x66, - 0x6d, 0xd6, 0xc6, 0x38, 0xc6, 0x8c, 0x8d, 0x21, 0x80, 0x8d, 0x8d, 0xad, 0xd1, 0x68, 0x66, 0x64, - 0xcf, 0x48, 0x43, 0x4b, 0xb3, 0x8b, 0x93, 0x9b, 0xa7, 0xdb, 0x2b, 0xd5, 0xcc, 0xb4, 0x57, 0xd3, - 0xad, 0xb4, 0x7a, 0x66, 0xbd, 0xbc, 0xcf, 0x7d, 0x37, 0x84, 0x98, 0x1f, 0x21, 0x5c, 0x42, 0x08, - 0x49, 0xf8, 0x0d, 0x06, 0xc3, 0x85, 0x04, 0x08, 0xbf, 0x2f, 0x24, 0x01, 0xc2, 0x8f, 0x40, 0x48, - 0x42, 0x08, 0x84, 0x40, 0x48, 0x78, 0x81, 0x40, 0x08, 0x79, 0x9f, 0x10, 0x5e, 0xf2, 0x6e, 0xe0, - 0x92, 0x84, 0x97, 0xf7, 0xe9, 0xaa, 0xea, 0xee, 0x2a, 0x8d, 0xba, 0x55, 0xad, 0x51, 0x6b, 0x4c, - 0x78, 0xff, 0x75, 0x57, 0x57, 0x9f, 0x3a, 0x75, 0xbe, 0xa7, 0xaa, 0x4e, 0x55, 0x9d, 0x3a, 0x05, - 0xa7, 0x3a, 0xe7, 0x6f, 0xee, 0xd8, 0x96, 0x63, 0x75, 0x6f, 0x6e, 0x5a, 0x3b, 0x3b, 0xba, 0xd9, - 0xea, 0xce, 0x93, 0x77, 0x75, 0x42, 0x37, 0x2f, 0x39, 0x97, 0x3a, 0x18, 0x5d, 0xd7, 0xb9, 0xb0, - 0x75, 0x73, 0xdb, 0x38, 0x7f, 0x73, 0xe7, 0xfc, 0xcd, 0x3b, 0x56, 0x0b, 0xb7, 0xbd, 0x1f, 0xc8, - 0x0b, 0xcb, 0x8e, 0x6e, 0x08, 0xcb, 0xd5, 0xb6, 0x9a, 0x7a, 0xbb, 0xeb, 0x58, 0x36, 0x66, 0x39, - 0x4f, 0x06, 0x45, 0xe2, 0x3d, 0x6c, 0x3a, 0x1e, 0x85, 0xab, 0xb6, 0x2c, 0x6b, 0xab, 0x8d, 0xe9, - 0xb7, 0xf3, 0xbb, 0x9b, 0x37, 0x77, 0x1d, 0x7b, 0xb7, 0xe9, 0xb0, 0xaf, 0xd7, 0xf4, 0x7e, 0x6d, - 0xe1, 0x6e, 0xd3, 0x36, 0x3a, 0x8e, 0x65, 0xd3, 0x1c, 0x67, 0xfe, 0xe1, 0x5f, 0x26, 0x40, 0xd1, - 0x3a, 0x4d, 0xf4, 0xdd, 0x09, 0x50, 0x0a, 0x9d, 0x0e, 0xfa, 0x44, 0x1a, 0x60, 0x19, 0x3b, 0x67, - 0xb1, 0xdd, 0x35, 0x2c, 0x13, 0x1d, 0x85, 0x09, 0x0d, 0xff, 0xf4, 0x2e, 0xee, 0x3a, 0xb7, 0x67, - 0x9e, 0xff, 0x4d, 0x25, 0x85, 0x1e, 0x4e, 0xc3, 0xa4, 0x86, 0xbb, 0x1d, 0xcb, 0xec, 0x62, 0xf5, - 0x6e, 0xc8, 0x62, 0xdb, 0xb6, 0xec, 0x53, 0xa9, 0x6b, 0x52, 0x37, 0x4c, 0xdf, 0x7a, 0xe3, 0x3c, - 0xab, 0xfe, 0xbc, 0xd6, 0x69, 0xce, 0x17, 0x3a, 0x9d, 0xf9, 0x80, 0xd2, 0xbc, 0xf7, 0xd3, 0x7c, - 0xc9, 0xfd, 0x43, 0xa3, 0x3f, 0xaa, 0xa7, 0x60, 0x62, 0x8f, 0x66, 0x38, 0x95, 0xbe, 0x26, 0x75, - 0xc3, 0x94, 0xe6, 0xbd, 0xba, 0x5f, 0x5a, 0xd8, 0xd1, 0x8d, 0x76, 0xf7, 0x94, 0x42, 0xbf, 0xb0, - 0x57, 0xf4, 0x50, 0x0a, 0xb2, 0x84, 0x88, 0x5a, 0x84, 0x4c, 0xd3, 0x6a, 0x61, 0x52, 0xfc, 0xdc, - 0xad, 0x37, 0xcb, 0x17, 0x3f, 0x5f, 0xb4, 0x5a, 0x58, 0x23, 0x3f, 0xab, 0xd7, 0xc0, 0xb4, 0x27, - 0x96, 0x80, 0x0d, 0x3e, 0xe9, 0xcc, 0xad, 0x90, 0x71, 0xf3, 0xab, 0x93, 0x90, 0xa9, 0x6c, 0xac, - 0xae, 0xe6, 0x8f, 0xa8, 0xc7, 0x60, 0x76, 0xa3, 0x72, 0x6f, 0xa5, 0x7a, 0xae, 0xd2, 0x28, 0x69, - 0x5a, 0x55, 0xcb, 0xa7, 0xd4, 0x59, 0x98, 0x5a, 0x28, 0x2c, 0x36, 0xca, 0x95, 0xf5, 0x8d, 0x7a, - 0x3e, 0x8d, 0x5e, 0xa3, 0xc0, 0x5c, 0x0d, 0x3b, 0x8b, 0x78, 0xcf, 0x68, 0xe2, 0x9a, 0xa3, 0x3b, - 0x18, 0xbd, 0x38, 0xe5, 0x0b, 0x53, 0xdd, 0x70, 0x0b, 0xf5, 0x3f, 0xb1, 0x0a, 0x3c, 0x71, 0x5f, - 0x05, 0x44, 0x0a, 0xf3, 0xec, 0xef, 0x79, 0x2e, 0x4d, 0xe3, 0xe9, 0x9c, 0x79, 0x3c, 0x4c, 0x73, - 0xdf, 0xd4, 0x39, 0x80, 0x85, 0x42, 0xf1, 0xde, 0x65, 0xad, 0xba, 0x51, 0x59, 0xcc, 0x1f, 0x71, - 0xdf, 0x97, 0xaa, 0x5a, 0x89, 0xbd, 0xa7, 0xd0, 0xf7, 0x53, 0x1c, 0x98, 0x8b, 0x22, 0x98, 0xf3, - 0x83, 0x99, 0xe9, 0x03, 0x28, 0x7a, 0x93, 0x0f, 0xce, 0xb2, 0x00, 0xce, 0x13, 0xe3, 0x91, 0x4b, - 0x1e, 0xa0, 0x07, 0xd3, 0x30, 0x59, 0xdb, 0xde, 0x75, 0x5a, 0xd6, 0x45, 0x13, 0x4d, 0xf9, 0xc8, - 0xa0, 0x6f, 0xf3, 0x32, 0x79, 0xba, 0x28, 0x93, 0x1b, 0xf6, 0x57, 0x82, 0x51, 0x08, 0x91, 0xc6, - 0xeb, 0x7c, 0x69, 0x14, 0x04, 0x69, 0x3c, 0x5e, 0x96, 0x50, 0xf2, 0x72, 0x78, 0xc5, 0x53, 0x21, - 0x5b, 0xeb, 0xe8, 0x4d, 0x8c, 0xfe, 0x50, 0x81, 0x99, 0x55, 0xac, 0xef, 0xe1, 0x42, 0xa7, 0x63, - 0x5b, 0x7b, 0x18, 0x15, 0x03, 0x7d, 0x3d, 0x05, 0x13, 0x5d, 0x37, 0x53, 0xb9, 0x45, 0x6a, 0x30, - 0xa5, 0x79, 0xaf, 0xea, 0x69, 0x00, 0xa3, 0x85, 0x4d, 0xc7, 0x70, 0x0c, 0xdc, 0x3d, 0x95, 0xbe, - 0x46, 0xb9, 0x61, 0x4a, 0xe3, 0x52, 0xd0, 0x77, 0xd3, 0xb2, 0x3a, 0x46, 0xb8, 0x98, 0xe7, 0x39, - 0x08, 0x91, 0xea, 0x1b, 0xd2, 0x32, 0x3a, 0x36, 0x90, 0x5c, 0x3c, 0xd9, 0xbe, 0x3d, 0x15, 0x5f, - 0xb8, 0x6e, 0x8e, 0x4a, 0xb5, 0x51, 0xdb, 0x28, 0xae, 0x34, 0x6a, 0xeb, 0x85, 0x62, 0x29, 0x8f, - 0xd5, 0xe3, 0x90, 0x27, 0x8f, 0x8d, 0x72, 0xad, 0xb1, 0x58, 0x5a, 0x2d, 0xd5, 0x4b, 0x8b, 0xf9, - 0x4d, 0x55, 0x85, 0x39, 0xad, 0xf4, 0x8c, 0x8d, 0x52, 0xad, 0xde, 0x58, 0x2a, 0x94, 0x57, 0x4b, - 0x8b, 0xf9, 0x2d, 0xf7, 0xe7, 0xd5, 0xf2, 0x5a, 0xb9, 0xde, 0xd0, 0x4a, 0x85, 0xe2, 0x4a, 0x69, - 0x31, 0xbf, 0xad, 0x5e, 0x0e, 0x97, 0x55, 0xaa, 0x8d, 0xc2, 0xfa, 0xba, 0x56, 0x3d, 0x5b, 0x6a, - 0xb0, 0x3f, 0x6a, 0x79, 0x83, 0x16, 0x54, 0x6f, 0xd4, 0x56, 0x0a, 0x5a, 0xa9, 0xb0, 0xb0, 0x5a, - 0xca, 0xdf, 0x8f, 0x9e, 0xa3, 0xc0, 0xec, 0x9a, 0x7e, 0x01, 0xd7, 0xb6, 0x75, 0x1b, 0xeb, 0xe7, - 0xdb, 0x18, 0x5d, 0x2b, 0x81, 0x27, 0xfa, 0x43, 0x1e, 0xaf, 0x92, 0x88, 0xd7, 0xcd, 0x7d, 0x04, - 0x2c, 0x14, 0x11, 0x02, 0xd8, 0xff, 0xf2, 0x9b, 0xc1, 0x8a, 0x00, 0xd8, 0x93, 0x62, 0xd2, 0x8b, - 0x87, 0xd8, 0xcf, 0x3e, 0x02, 0x10, 0x43, 0x5f, 0x51, 0x60, 0xae, 0x6c, 0xee, 0x19, 0x0e, 0x5e, - 0xc6, 0x26, 0xb6, 0xdd, 0x71, 0x40, 0x0a, 0x86, 0x87, 0x15, 0x0e, 0x86, 0x25, 0x11, 0x86, 0x5b, - 0xfa, 0x88, 0x4d, 0x2c, 0x23, 0x64, 0xb4, 0xbd, 0x0a, 0xa6, 0x0c, 0x92, 0xaf, 0x68, 0xb4, 0x98, - 0xc4, 0x82, 0x04, 0xf5, 0x3a, 0x98, 0xa5, 0x2f, 0x4b, 0x46, 0x1b, 0xdf, 0x8b, 0x2f, 0xb1, 0x71, - 0x57, 0x4c, 0x44, 0xbf, 0xe0, 0x37, 0xbe, 0xb2, 0x80, 0xe5, 0x8f, 0xc7, 0x65, 0x2a, 0x1e, 0x98, - 0x2f, 0x7b, 0x24, 0x34, 0xbf, 0x7d, 0xad, 0xcc, 0x40, 0x3f, 0x48, 0xc3, 0x74, 0xcd, 0xb1, 0x3a, - 0xae, 0xca, 0x1a, 0xe6, 0x96, 0x1c, 0xb8, 0x9f, 0xe2, 0xdb, 0x58, 0x51, 0x04, 0xf7, 0xf1, 0x7d, - 0xe4, 0xc8, 0x15, 0x10, 0xd2, 0xc2, 0xbe, 0xeb, 0xb7, 0xb0, 0x25, 0x01, 0x95, 0x5b, 0x63, 0x51, - 0xfb, 0x21, 0x6c, 0x5f, 0x2f, 0x53, 0x20, 0xef, 0xa9, 0x99, 0x53, 0xdc, 0xb5, 0x6d, 0x6c, 0x3a, - 0x72, 0x20, 0xfc, 0x05, 0x0f, 0xc2, 0x8a, 0x08, 0xc2, 0xad, 0x11, 0xca, 0xec, 0x95, 0x92, 0x60, - 0x1b, 0xfb, 0x88, 0x8f, 0xe6, 0xbd, 0x02, 0x9a, 0x4f, 0x89, 0xcf, 0x56, 0x3c, 0x48, 0x57, 0x86, - 0x40, 0xf4, 0x38, 0xe4, 0xdd, 0x31, 0xa9, 0x58, 0x2f, 0x9f, 0x2d, 0x35, 0xca, 0x95, 0xb3, 0xe5, - 0x7a, 0x29, 0x8f, 0xd1, 0x4b, 0x15, 0x98, 0xa1, 0xac, 0x69, 0x78, 0xcf, 0xba, 0x20, 0xd9, 0xeb, - 0x7d, 0x25, 0xa6, 0xb1, 0xc0, 0x97, 0x10, 0xd2, 0x32, 0x7e, 0x3e, 0x86, 0xb1, 0x10, 0x41, 0xee, - 0x91, 0xd4, 0x5b, 0xed, 0x6b, 0x06, 0x5b, 0x7d, 0x5a, 0x4b, 0xdf, 0xde, 0xea, 0x65, 0x19, 0x00, - 0x5a, 0xc9, 0xb3, 0x06, 0xbe, 0x88, 0xd6, 0x02, 0x4c, 0x04, 0xb5, 0x4d, 0x0d, 0x54, 0xdb, 0x74, - 0x3f, 0xb5, 0x7d, 0x3f, 0x3f, 0x66, 0x2d, 0x88, 0xe8, 0xdd, 0x14, 0x2a, 0x6e, 0x97, 0x93, 0xf0, - 0xd9, 0xa1, 0xa7, 0x28, 0x69, 0xd1, 0xea, 0xbc, 0x0a, 0xa6, 0xc8, 0x63, 0x45, 0xdf, 0xc1, 0xac, - 0x0d, 0x05, 0x09, 0xea, 0x19, 0x98, 0xa1, 0x19, 0x9b, 0x96, 0xe9, 0xd6, 0x27, 0x43, 0x32, 0x08, - 0x69, 0x2e, 0x88, 0x4d, 0x1b, 0xeb, 0x8e, 0x65, 0x13, 0x1a, 0x59, 0x0a, 0x22, 0x97, 0x84, 0xbe, - 0xe5, 0xb7, 0xc2, 0x92, 0xa0, 0x39, 0x4f, 0x88, 0x53, 0x95, 0x78, 0x7a, 0xb3, 0x37, 0x5c, 0xfb, - 0xa3, 0xad, 0xae, 0xe1, 0xa2, 0xbd, 0x44, 0xa6, 0x76, 0x58, 0x3d, 0x09, 0x2a, 0x4b, 0x75, 0xf3, - 0x16, 0xab, 0x95, 0x7a, 0xa9, 0x52, 0xcf, 0x6f, 0xf6, 0xd5, 0xa8, 0x2d, 0xf4, 0x86, 0x0c, 0x64, - 0xee, 0xb1, 0x0c, 0x13, 0x3d, 0x98, 0x12, 0x54, 0xc2, 0xc4, 0xce, 0x45, 0xcb, 0xbe, 0xe0, 0x37, - 0xd4, 0x20, 0x21, 0x1a, 0x9b, 0x40, 0x95, 0x94, 0x81, 0xaa, 0x94, 0xe9, 0xa7, 0x4a, 0xbf, 0xc4, - 0xab, 0xd2, 0x1d, 0xa2, 0x2a, 0x5d, 0xdf, 0x47, 0xfe, 0x2e, 0xf3, 0x21, 0x1d, 0xc0, 0x27, 0xfd, - 0x0e, 0xe0, 0x2e, 0x01, 0xc6, 0xc7, 0xc9, 0x91, 0x89, 0x07, 0xe0, 0x97, 0x13, 0x6d, 0xf8, 0xfd, - 0xa0, 0xde, 0x0a, 0x81, 0x7a, 0xbb, 0x4f, 0x9f, 0x60, 0xec, 0xef, 0x3a, 0xee, 0xdf, 0xdf, 0x4d, - 0x5c, 0x50, 0x4f, 0xc0, 0xb1, 0xc5, 0xf2, 0xd2, 0x52, 0x49, 0x2b, 0x55, 0xea, 0x8d, 0x4a, 0xa9, - 0x7e, 0xae, 0xaa, 0xdd, 0x9b, 0x6f, 0xa3, 0x87, 0x14, 0x00, 0x57, 0x42, 0x45, 0xdd, 0x6c, 0xe2, - 0xb6, 0x5c, 0x8f, 0xfe, 0x0f, 0xe9, 0x78, 0x7d, 0x42, 0x40, 0x3f, 0x04, 0xce, 0x57, 0xa7, 0xe5, - 0x5b, 0x65, 0x28, 0xb1, 0x78, 0xa0, 0xbe, 0xf5, 0x91, 0x60, 0x7b, 0x5e, 0x06, 0x47, 0x3d, 0x7a, - 0x2c, 0x7b, 0xff, 0x69, 0xdf, 0x3b, 0x32, 0x30, 0xc7, 0x60, 0xf1, 0xe6, 0xf1, 0xcf, 0x4f, 0xc9, - 0x4c, 0xe4, 0x11, 0x4c, 0xb2, 0x69, 0xbb, 0xd7, 0xbd, 0xfb, 0xef, 0xea, 0x32, 0x4c, 0x77, 0xb0, - 0xbd, 0x63, 0x74, 0xbb, 0x86, 0x65, 0xd2, 0x05, 0xb9, 0xb9, 0x5b, 0x1f, 0xe3, 0x4b, 0x9c, 0xac, - 0x5d, 0xce, 0xaf, 0xeb, 0xb6, 0x63, 0x34, 0x8d, 0x8e, 0x6e, 0x3a, 0xeb, 0x41, 0x66, 0x8d, 0xff, - 0x13, 0xbd, 0x24, 0xe6, 0xb4, 0x46, 0xac, 0x49, 0x88, 0x4a, 0xfc, 0x76, 0x8c, 0x29, 0x49, 0x24, - 0xc1, 0x78, 0x6a, 0xf1, 0x89, 0x44, 0xd5, 0xa2, 0x0f, 0xde, 0x5b, 0xea, 0x15, 0x70, 0xa2, 0x5c, - 0x29, 0x56, 0x35, 0xad, 0x54, 0xac, 0x37, 0xd6, 0x4b, 0xda, 0x5a, 0xb9, 0x56, 0x2b, 0x57, 0x2b, - 0xb5, 0x83, 0xb4, 0x76, 0xf4, 0x69, 0xc5, 0xd7, 0x98, 0x45, 0xdc, 0x6c, 0x1b, 0x26, 0x46, 0x77, - 0x1d, 0x50, 0x61, 0xc4, 0x55, 0x1f, 0x79, 0x9c, 0x59, 0xf9, 0x21, 0x38, 0xbf, 0x3e, 0x3e, 0xce, - 0xfd, 0x09, 0xfe, 0x07, 0x6e, 0xfe, 0x5f, 0x51, 0xe0, 0x18, 0xd7, 0x10, 0x35, 0xbc, 0x33, 0xb2, - 0x95, 0xbc, 0x9f, 0xe5, 0xdb, 0x6e, 0x59, 0xc4, 0xb4, 0x9f, 0x35, 0xbd, 0x8f, 0x8d, 0x10, 0x58, - 0xdf, 0xea, 0xc3, 0xba, 0x2a, 0xc0, 0xfa, 0xd4, 0x21, 0x68, 0xc6, 0x43, 0xf6, 0x37, 0x13, 0x45, - 0xf6, 0x0a, 0x38, 0xb1, 0x5e, 0xd0, 0xea, 0xe5, 0x62, 0x79, 0xbd, 0xe0, 0x8e, 0xa3, 0xdc, 0x90, - 0x1d, 0x62, 0xae, 0x8b, 0xa0, 0xf7, 0xc5, 0xf7, 0xc3, 0x19, 0xb8, 0xaa, 0x7f, 0x47, 0x5b, 0xdc, - 0xd6, 0xcd, 0x2d, 0x8c, 0x0c, 0x19, 0xa8, 0x17, 0x61, 0xa2, 0x49, 0xb2, 0x53, 0x9c, 0xf9, 0xad, - 0x9b, 0x88, 0xbe, 0x9c, 0x96, 0xa0, 0x79, 0xbf, 0xa2, 0x77, 0xf3, 0x0a, 0x51, 0x17, 0x15, 0xe2, - 0xe9, 0xd1, 0xe0, 0xed, 0xe3, 0x3b, 0x44, 0x37, 0x3e, 0xeb, 0xeb, 0xc6, 0x39, 0x41, 0x37, 0x8a, - 0x07, 0x23, 0x1f, 0x4f, 0x4d, 0xfe, 0xe0, 0x91, 0xd0, 0x01, 0x84, 0x6a, 0x93, 0x11, 0x3e, 0x2a, - 0xf4, 0xed, 0xee, 0x5f, 0xab, 0x40, 0x6e, 0x11, 0xb7, 0xb1, 0xec, 0x4a, 0xe4, 0x77, 0xd2, 0xb2, - 0x1b, 0x22, 0x14, 0x06, 0x4a, 0x3b, 0x7c, 0x75, 0xc4, 0x31, 0x76, 0x70, 0xd7, 0xd1, 0x77, 0x3a, - 0x44, 0xd4, 0x8a, 0x16, 0x24, 0xa0, 0x9f, 0x4b, 0xcb, 0x6c, 0x97, 0x44, 0x14, 0xf3, 0x1f, 0x63, - 0x4d, 0xf1, 0xf3, 0x69, 0x98, 0xac, 0x61, 0xa7, 0x6a, 0xb7, 0xb0, 0x8d, 0x6a, 0x01, 0x46, 0xd7, - 0xc0, 0x34, 0x01, 0xc5, 0x9d, 0x66, 0xfa, 0x38, 0xf1, 0x49, 0xea, 0xf5, 0x30, 0xe7, 0xbf, 0x92, - 0xdf, 0x59, 0x37, 0xde, 0x93, 0x8a, 0xfe, 0x31, 0x25, 0xbb, 0x8b, 0xcb, 0x96, 0x0c, 0x19, 0x37, - 0x21, 0xad, 0x54, 0x6e, 0x47, 0x36, 0x92, 0x54, 0xf2, 0x1b, 0x5d, 0xef, 0x4c, 0x03, 0x6c, 0x98, - 0x5d, 0x4f, 0xae, 0x8f, 0x8b, 0x21, 0x57, 0xf4, 0xcf, 0xa9, 0x78, 0xb3, 0x98, 0xa0, 0x9c, 0x10, - 0x89, 0xbd, 0x31, 0xc6, 0xda, 0x42, 0x28, 0xb1, 0xe4, 0x65, 0xf6, 0xf5, 0x39, 0xc8, 0x9d, 0xd3, - 0xdb, 0x6d, 0xec, 0xa0, 0x6f, 0xa4, 0x21, 0x57, 0xb4, 0xb1, 0xee, 0x60, 0x5e, 0x74, 0x08, 0x26, - 0x6d, 0xcb, 0x72, 0xd6, 0x75, 0x67, 0x9b, 0xc9, 0xcd, 0x7f, 0x67, 0x0e, 0x03, 0xbf, 0xc1, 0x77, - 0x1f, 0x77, 0x89, 0xa2, 0xfb, 0x31, 0xa1, 0xb6, 0xb4, 0xa0, 0x79, 0x5a, 0x48, 0x48, 0xff, 0x81, - 0x60, 0x72, 0xc7, 0xc4, 0x3b, 0x96, 0x69, 0x34, 0x3d, 0x9b, 0xd3, 0x7b, 0x47, 0x1f, 0xf5, 0x65, - 0xba, 0x20, 0xc8, 0x74, 0x5e, 0xba, 0x94, 0x78, 0x02, 0xad, 0x0d, 0xd1, 0x7b, 0x5c, 0x0d, 0x57, - 0xd2, 0xce, 0xa0, 0x51, 0xaf, 0x36, 0x8a, 0x5a, 0xa9, 0x50, 0x2f, 0x35, 0x56, 0xab, 0xc5, 0xc2, - 0x6a, 0x43, 0x2b, 0xad, 0x57, 0xf3, 0x18, 0xfd, 0x6d, 0xda, 0x15, 0x6e, 0xd3, 0xda, 0xc3, 0x36, - 0x5a, 0x96, 0x92, 0x73, 0x94, 0x4c, 0x18, 0x06, 0xbf, 0x24, 0xed, 0xb4, 0xc1, 0xa4, 0xc3, 0x38, - 0x08, 0x51, 0xde, 0x8f, 0x49, 0x35, 0xf7, 0x48, 0x52, 0x8f, 0x00, 0x49, 0xff, 0xcf, 0x34, 0x4c, - 0x14, 0x2d, 0x73, 0x0f, 0xdb, 0x0e, 0x3f, 0xdf, 0xe1, 0xa5, 0x99, 0x12, 0xa5, 0xe9, 0x0e, 0x92, - 0xd8, 0x74, 0x6c, 0xab, 0xe3, 0x4d, 0x78, 0xbc, 0x57, 0xf4, 0xe6, 0xb8, 0x12, 0x66, 0x25, 0x87, - 0x2f, 0x7c, 0xf6, 0x2f, 0x48, 0x60, 0x4f, 0xe9, 0x69, 0x00, 0x0f, 0xc5, 0xc1, 0xa5, 0x3f, 0x03, - 0xc9, 0x77, 0x29, 0x5f, 0x55, 0x60, 0x96, 0x36, 0xbe, 0x1a, 0x26, 0x16, 0x1a, 0xaa, 0xf2, 0x4b, - 0x8e, 0x3d, 0xc2, 0x5f, 0x39, 0x22, 0x88, 0x3f, 0xa7, 0x77, 0x3a, 0xfe, 0xf2, 0xf3, 0xca, 0x11, - 0x8d, 0xbd, 0x53, 0x35, 0x5f, 0xc8, 0x41, 0x46, 0xdf, 0x75, 0xb6, 0xd1, 0x0f, 0xa4, 0x27, 0x9f, - 0x42, 0x67, 0xc0, 0xf8, 0x09, 0x81, 0xe4, 0x38, 0x64, 0x1d, 0xeb, 0x02, 0xf6, 0xe4, 0x40, 0x5f, - 0x5c, 0x38, 0xf4, 0x4e, 0xa7, 0x4e, 0x3e, 0x30, 0x38, 0xbc, 0x77, 0xd7, 0xd6, 0xd1, 0x9b, 0x4d, - 0x6b, 0xd7, 0x74, 0xca, 0xde, 0x12, 0x74, 0x90, 0x80, 0xbe, 0x94, 0x92, 0x99, 0xcc, 0x4a, 0x30, - 0x18, 0x0f, 0xb2, 0xf3, 0x43, 0x34, 0xa5, 0x79, 0xb8, 0xb1, 0xb0, 0xbe, 0xde, 0xa8, 0x57, 0xef, - 0x2d, 0x55, 0x02, 0xc3, 0xb3, 0x51, 0xae, 0x34, 0xea, 0x2b, 0xa5, 0x46, 0x71, 0x43, 0x23, 0xeb, - 0x84, 0x85, 0x62, 0xb1, 0xba, 0x51, 0xa9, 0xe7, 0x31, 0x7a, 0x5b, 0x1a, 0x66, 0x8a, 0x6d, 0xab, - 0xeb, 0x23, 0x7c, 0x75, 0x80, 0xb0, 0x2f, 0xc6, 0x14, 0x27, 0x46, 0xf4, 0xaf, 0x29, 0x59, 0xa7, - 0x03, 0x4f, 0x20, 0x1c, 0xf9, 0x90, 0x5e, 0xea, 0xcd, 0x52, 0x4e, 0x07, 0x83, 0xe9, 0x25, 0xdf, - 0x24, 0x3e, 0x7f, 0x3b, 0x4c, 0x14, 0xa8, 0x62, 0xa0, 0xbf, 0x4a, 0x41, 0xae, 0x68, 0x99, 0x9b, - 0xc6, 0x96, 0x6b, 0xcc, 0x61, 0x53, 0x3f, 0xdf, 0xc6, 0x8b, 0xba, 0xa3, 0xef, 0x19, 0xf8, 0x22, - 0xa9, 0xc0, 0xa4, 0xd6, 0x93, 0xea, 0x32, 0xc5, 0x52, 0xf0, 0xf9, 0xdd, 0x2d, 0xc2, 0xd4, 0xa4, - 0xc6, 0x27, 0xa9, 0x4f, 0x85, 0xcb, 0xe9, 0xeb, 0xba, 0x8d, 0x6d, 0xdc, 0xc6, 0x7a, 0x17, 0xbb, - 0xd3, 0x22, 0x13, 0xb7, 0x89, 0xd2, 0x4e, 0x6a, 0x61, 0x9f, 0xd5, 0x33, 0x30, 0x43, 0x3f, 0x11, - 0x53, 0xa4, 0x4b, 0xd4, 0x78, 0x52, 0x13, 0xd2, 0xd4, 0xc7, 0x43, 0x16, 0x3f, 0xe0, 0xd8, 0xfa, - 0xa9, 0x16, 0xc1, 0xeb, 0xf2, 0x79, 0xea, 0x75, 0x38, 0xef, 0x79, 0x1d, 0xce, 0xd7, 0x88, 0x4f, - 0xa2, 0x46, 0x73, 0xa1, 0x57, 0x4d, 0xfa, 0x86, 0xc4, 0xbf, 0xa7, 0x03, 0xc5, 0x50, 0x21, 0x63, - 0xea, 0x3b, 0x98, 0xe9, 0x05, 0x79, 0x56, 0x6f, 0x84, 0xa3, 0xfa, 0x9e, 0xee, 0xe8, 0xf6, 0xaa, - 0xd5, 0xd4, 0xdb, 0x64, 0xf0, 0xf3, 0x5a, 0x7e, 0xef, 0x07, 0xb2, 0x23, 0xe4, 0x58, 0x36, 0x26, - 0xb9, 0xbc, 0x1d, 0x21, 0x2f, 0xc1, 0xa5, 0x6e, 0x34, 0x2d, 0x93, 0xf0, 0xaf, 0x68, 0xe4, 0xd9, - 0x95, 0x4a, 0xcb, 0xe8, 0xba, 0x15, 0x21, 0x54, 0x2a, 0x74, 0x6b, 0xa3, 0x76, 0xc9, 0x6c, 0x92, - 0xdd, 0xa0, 0x49, 0x2d, 0xec, 0xb3, 0xba, 0x00, 0xd3, 0x6c, 0x23, 0x64, 0xcd, 0xd5, 0xab, 0x1c, - 0xd1, 0xab, 0x6b, 0x44, 0x9f, 0x2e, 0x8a, 0xe7, 0x7c, 0x25, 0xc8, 0xa7, 0xf1, 0x3f, 0xa9, 0x77, - 0xc3, 0x95, 0xec, 0xb5, 0xb8, 0xdb, 0x75, 0xac, 0x1d, 0x0a, 0xfa, 0x92, 0xd1, 0xa6, 0x35, 0x98, - 0x20, 0x35, 0x88, 0xca, 0xa2, 0xde, 0x0a, 0xc7, 0x3b, 0x36, 0xde, 0xc4, 0xf6, 0x7d, 0xfa, 0xce, - 0xee, 0x03, 0x75, 0x5b, 0x37, 0xbb, 0x1d, 0xcb, 0x76, 0x4e, 0x4d, 0x12, 0xe6, 0xfb, 0x7e, 0x63, - 0x1d, 0xe5, 0x24, 0xe4, 0xa8, 0xf8, 0xd0, 0x8b, 0xb3, 0xd2, 0xee, 0x9c, 0xac, 0x42, 0x91, 0xe6, - 0xd9, 0x2d, 0x30, 0xc1, 0x7a, 0x38, 0x02, 0xd4, 0xf4, 0xad, 0x27, 0x7b, 0xd6, 0x15, 0x18, 0x15, - 0xcd, 0xcb, 0xa6, 0x3e, 0x11, 0x72, 0x4d, 0x52, 0x2d, 0x82, 0xd9, 0xf4, 0xad, 0x57, 0xf6, 0x2f, - 0x94, 0x64, 0xd1, 0x58, 0x56, 0xf4, 0xe7, 0x8a, 0x94, 0x07, 0x68, 0x14, 0xc7, 0xf1, 0x5a, 0xf5, - 0xb7, 0xd2, 0x43, 0x74, 0x9b, 0x37, 0xc1, 0x0d, 0xac, 0x4f, 0x64, 0xf6, 0xc7, 0x62, 0x63, 0x61, - 0xc3, 0x9b, 0x0c, 0xba, 0x56, 0x49, 0xad, 0x5e, 0xd0, 0xdc, 0x99, 0xfc, 0xa2, 0x3b, 0x89, 0xbc, - 0x11, 0xae, 0x1f, 0x90, 0xbb, 0x54, 0x6f, 0x54, 0x0a, 0x6b, 0xa5, 0xfc, 0xa6, 0x68, 0xdb, 0xd4, - 0xea, 0xd5, 0xf5, 0x86, 0xb6, 0x51, 0xa9, 0x94, 0x2b, 0xcb, 0x94, 0x98, 0x6b, 0x12, 0x9e, 0x0c, - 0x32, 0x9c, 0xd3, 0xca, 0xf5, 0x52, 0xa3, 0x58, 0xad, 0x2c, 0x95, 0x97, 0xf3, 0xc6, 0x20, 0xc3, - 0xe8, 0x7e, 0xf5, 0x1a, 0xb8, 0x4a, 0xe0, 0xa4, 0x5c, 0xad, 0xb8, 0x33, 0xdb, 0x62, 0xa1, 0x52, - 0x2c, 0xb9, 0xd3, 0xd8, 0x0b, 0x2a, 0x82, 0x13, 0x94, 0x5c, 0x63, 0xa9, 0xbc, 0xca, 0x6f, 0x46, - 0x7d, 0x2a, 0xa5, 0x9e, 0x82, 0xcb, 0xf8, 0x6f, 0xe5, 0xca, 0xd9, 0xc2, 0x6a, 0x79, 0x31, 0xff, - 0xfb, 0x29, 0xf5, 0x3a, 0xb8, 0x5a, 0xf8, 0x8b, 0xee, 0x2b, 0x35, 0xca, 0x8b, 0x8d, 0xb5, 0x72, - 0x6d, 0xad, 0x50, 0x2f, 0xae, 0xe4, 0x3f, 0x4d, 0xe6, 0x0b, 0xbe, 0x01, 0xcc, 0xb9, 0x65, 0xbe, - 0x8c, 0x1f, 0xd3, 0x0b, 0xa2, 0xa2, 0x3e, 0xae, 0x2f, 0xec, 0xd1, 0x36, 0xec, 0x27, 0xfc, 0xd1, - 0x61, 0x51, 0x50, 0xa1, 0x5b, 0x62, 0xd0, 0x8a, 0xa7, 0x43, 0xf5, 0x21, 0x54, 0xe8, 0x1a, 0xb8, - 0xaa, 0x52, 0xa2, 0x48, 0x69, 0xa5, 0x62, 0xf5, 0x6c, 0x49, 0x6b, 0x9c, 0x2b, 0xac, 0xae, 0x96, - 0xea, 0x8d, 0xa5, 0xb2, 0x56, 0xab, 0xe7, 0x37, 0xd1, 0x3f, 0xa7, 0xfd, 0xd5, 0x1c, 0x4e, 0x5a, - 0x7f, 0x95, 0x8e, 0xdb, 0xac, 0x23, 0x57, 0x6d, 0x7e, 0x1c, 0x72, 0x5d, 0x47, 0x77, 0x76, 0xbb, - 0xac, 0x55, 0x3f, 0xaa, 0x7f, 0xab, 0x9e, 0xaf, 0x91, 0x4c, 0x1a, 0xcb, 0x8c, 0xfe, 0x3c, 0x15, - 0xa7, 0x99, 0x8e, 0x60, 0x41, 0xc7, 0x18, 0x42, 0xc4, 0xa7, 0x01, 0x79, 0xda, 0x5e, 0xae, 0x35, - 0x0a, 0xab, 0x5a, 0xa9, 0xb0, 0x78, 0x9f, 0xbf, 0x8c, 0x83, 0xd5, 0x13, 0x70, 0x6c, 0xa3, 0x52, - 0x58, 0x58, 0x2d, 0x91, 0xe6, 0x52, 0xad, 0x54, 0x4a, 0x45, 0x57, 0xee, 0x3f, 0x47, 0x36, 0x4d, - 0x5c, 0x0b, 0x9a, 0xf0, 0xed, 0x5a, 0x39, 0x9c, 0xfc, 0xbf, 0x29, 0xed, 0x5b, 0x14, 0x68, 0x18, - 0x4f, 0x6b, 0xb4, 0x38, 0x7c, 0x49, 0xca, 0x9d, 0x48, 0x8a, 0x93, 0x78, 0x78, 0xfc, 0xe7, 0x21, - 0xf0, 0x38, 0x01, 0xc7, 0x78, 0x3c, 0x88, 0x5b, 0x51, 0x38, 0x0c, 0x5f, 0x9b, 0x84, 0x5c, 0x0d, - 0xb7, 0x71, 0xd3, 0x41, 0xef, 0xe0, 0x8c, 0x89, 0x39, 0x48, 0xfb, 0x6e, 0x2c, 0x69, 0xa3, 0x25, - 0x4c, 0x9f, 0xd3, 0x3d, 0xd3, 0xe7, 0x08, 0x33, 0x40, 0x89, 0x65, 0x06, 0x64, 0x12, 0x30, 0x03, - 0xb2, 0xc3, 0x9b, 0x01, 0xb9, 0x41, 0x66, 0x00, 0x7a, 0x63, 0x2e, 0x6e, 0x2f, 0x41, 0x45, 0x7d, - 0xb8, 0x83, 0xff, 0x3f, 0x64, 0xe2, 0xf4, 0x2a, 0x7d, 0x39, 0x8e, 0xa7, 0xc5, 0x3f, 0x50, 0x12, - 0x58, 0x7e, 0x50, 0xaf, 0x85, 0xab, 0x83, 0xf7, 0x46, 0xe9, 0x99, 0xe5, 0x5a, 0xbd, 0x46, 0x46, - 0xfc, 0x62, 0x55, 0xd3, 0x36, 0xd6, 0xe9, 0x1a, 0xf2, 0x49, 0x50, 0x03, 0x2a, 0xda, 0x46, 0x85, - 0x8e, 0xef, 0x5b, 0x22, 0xf5, 0xa5, 0x72, 0x65, 0xb1, 0xe1, 0xb7, 0x99, 0xca, 0x52, 0x35, 0xbf, - 0xed, 0x4e, 0xd9, 0x38, 0xea, 0xee, 0x00, 0xcd, 0x4a, 0x28, 0x54, 0x16, 0x1b, 0x6b, 0x95, 0xd2, - 0x5a, 0xb5, 0x52, 0x2e, 0x92, 0xf4, 0x5a, 0xa9, 0x9e, 0x37, 0xdc, 0x81, 0xa6, 0xc7, 0xa2, 0xa8, - 0x95, 0x0a, 0x5a, 0x71, 0xa5, 0xa4, 0xd1, 0x22, 0xef, 0x57, 0xaf, 0x87, 0x33, 0x85, 0x4a, 0xb5, - 0xee, 0xa6, 0x14, 0x2a, 0xf7, 0xd5, 0xef, 0x5b, 0x2f, 0x35, 0xd6, 0xb5, 0x6a, 0xb1, 0x54, 0xab, - 0xb9, 0xed, 0x94, 0xd9, 0x1f, 0xf9, 0xb6, 0xfa, 0x74, 0xb8, 0x9d, 0x63, 0xad, 0x54, 0x27, 0x1b, - 0x96, 0x6b, 0x55, 0xe2, 0xb3, 0xb2, 0x58, 0x6a, 0xac, 0x14, 0x6a, 0x8d, 0x72, 0xa5, 0x58, 0x5d, - 0x5b, 0x2f, 0xd4, 0xcb, 0x6e, 0x73, 0x5e, 0xd7, 0xaa, 0xf5, 0x6a, 0xe3, 0x6c, 0x49, 0xab, 0x95, - 0xab, 0x95, 0xbc, 0xe9, 0x56, 0x99, 0x6b, 0xff, 0x5e, 0x3f, 0x6c, 0xa9, 0x57, 0xc1, 0x29, 0x2f, - 0x7d, 0xb5, 0xea, 0x0a, 0x9a, 0xb3, 0x48, 0x3a, 0x89, 0x5a, 0x24, 0xff, 0x92, 0x86, 0x4c, 0xcd, - 0xb1, 0x3a, 0xe8, 0xc7, 0x82, 0x0e, 0xe6, 0x34, 0x80, 0x4d, 0xf6, 0x1f, 0xdd, 0x59, 0x18, 0x9b, - 0x97, 0x71, 0x29, 0xe8, 0xf7, 0xa4, 0x37, 0x4d, 0x82, 0x3e, 0xdb, 0xea, 0x84, 0xd8, 0x2a, 0xdf, - 0x97, 0x3b, 0x45, 0x12, 0x4e, 0x28, 0x9e, 0xbe, 0xff, 0xfc, 0x30, 0xdb, 0x22, 0x08, 0x4e, 0x72, - 0xb0, 0xb9, 0xf2, 0xf7, 0x54, 0x02, 0xab, 0x97, 0xc3, 0x65, 0x3d, 0xca, 0x45, 0x74, 0x6a, 0x53, - 0x7d, 0x34, 0x3c, 0x8a, 0x53, 0xef, 0xd2, 0x5a, 0xf5, 0x6c, 0xc9, 0x57, 0xe4, 0xc5, 0x42, 0xbd, - 0x90, 0xdf, 0x42, 0x9f, 0x57, 0x20, 0xb3, 0x66, 0xed, 0xf5, 0xee, 0x55, 0x99, 0xf8, 0x22, 0xb7, - 0x16, 0xea, 0xbd, 0x8a, 0x5e, 0xf3, 0x52, 0x62, 0x5f, 0x0b, 0xdf, 0x97, 0xfe, 0x52, 0x3a, 0x8e, - 0xd8, 0xd7, 0x0e, 0xba, 0x19, 0xfd, 0x77, 0xc3, 0x88, 0x3d, 0x44, 0xb4, 0x58, 0x3d, 0x03, 0xa7, - 0x83, 0x0f, 0xe5, 0xc5, 0x52, 0xa5, 0x5e, 0x5e, 0xba, 0x2f, 0x10, 0x6e, 0x59, 0x93, 0x12, 0xff, - 0xa0, 0x6e, 0x2c, 0x7a, 0xa6, 0x71, 0x0a, 0x8e, 0x07, 0xdf, 0x96, 0x4b, 0x75, 0xef, 0xcb, 0xfd, - 0xe8, 0xc1, 0x2c, 0xcc, 0xd0, 0x6e, 0x7d, 0xa3, 0xd3, 0xd2, 0x1d, 0x8c, 0x9e, 0x18, 0xa0, 0x7b, - 0x03, 0x1c, 0x2d, 0xaf, 0x2f, 0xd5, 0x6a, 0x8e, 0x65, 0xeb, 0x5b, 0xb8, 0xd0, 0x6a, 0xd9, 0x4c, - 0x5a, 0xbd, 0xc9, 0xe8, 0xbd, 0xd2, 0xeb, 0x7c, 0xe2, 0x50, 0x42, 0xcb, 0x0c, 0x41, 0xfd, 0xab, - 0x52, 0xeb, 0x72, 0x12, 0x04, 0xe3, 0xa1, 0x7f, 0xff, 0x88, 0xdb, 0x5c, 0x38, 0x2e, 0x9b, 0x67, - 0x9e, 0x97, 0x86, 0xa9, 0xba, 0xb1, 0x83, 0x9f, 0x65, 0x99, 0xb8, 0xab, 0x4e, 0x80, 0xb2, 0xbc, - 0x56, 0xcf, 0x1f, 0x71, 0x1f, 0x5c, 0xa3, 0x2a, 0x45, 0x1e, 0x4a, 0x6e, 0x01, 0xee, 0x43, 0xa1, - 0x9e, 0x57, 0xdc, 0x87, 0xb5, 0x52, 0x3d, 0x9f, 0x71, 0x1f, 0x2a, 0xa5, 0x7a, 0x3e, 0xeb, 0x3e, - 0xac, 0xaf, 0xd6, 0xf3, 0x39, 0xf7, 0xa1, 0x5c, 0xab, 0xe7, 0x27, 0xdc, 0x87, 0x85, 0x5a, 0x3d, - 0x3f, 0xe9, 0x3e, 0x9c, 0xad, 0xd5, 0xf3, 0x53, 0xee, 0x43, 0xb1, 0x5e, 0xcf, 0x83, 0xfb, 0x70, - 0x4f, 0xad, 0x9e, 0x9f, 0x76, 0x1f, 0x0a, 0xc5, 0x7a, 0x7e, 0x86, 0x3c, 0x94, 0xea, 0xf9, 0x59, - 0xf7, 0xa1, 0x56, 0xab, 0xe7, 0xe7, 0x08, 0xe5, 0x5a, 0x3d, 0x7f, 0x94, 0x94, 0x55, 0xae, 0xe7, - 0xf3, 0xee, 0xc3, 0x4a, 0xad, 0x9e, 0x3f, 0x46, 0x32, 0xd7, 0xea, 0x79, 0x95, 0x14, 0x5a, 0xab, - 0xe7, 0x2f, 0x23, 0x79, 0x6a, 0xf5, 0xfc, 0x71, 0x52, 0x44, 0xad, 0x9e, 0x3f, 0x41, 0xd8, 0x28, - 0xd5, 0xf3, 0x27, 0x49, 0x1e, 0xad, 0x9e, 0xbf, 0x9c, 0x7c, 0xaa, 0xd4, 0xf3, 0xa7, 0x08, 0x63, - 0xa5, 0x7a, 0xfe, 0x0a, 0xf2, 0xa0, 0xd5, 0xf3, 0x88, 0x7c, 0x2a, 0xd4, 0xf3, 0x57, 0xa2, 0x47, - 0xc1, 0xd4, 0x32, 0x76, 0x28, 0x88, 0x28, 0x0f, 0xca, 0x32, 0x76, 0x78, 0x33, 0xfe, 0xeb, 0x0a, - 0x5c, 0xce, 0xa6, 0x7e, 0x4b, 0xb6, 0xb5, 0xb3, 0x8a, 0xb7, 0xf4, 0xe6, 0xa5, 0xd2, 0x03, 0xae, - 0x09, 0xc5, 0xef, 0xcb, 0xaa, 0x90, 0xe9, 0x04, 0x9d, 0x11, 0x79, 0x8e, 0xb4, 0x38, 0xbd, 0xc5, - 0x28, 0x25, 0x58, 0x8c, 0x62, 0x16, 0xd9, 0x3f, 0xf1, 0x1a, 0x2d, 0xac, 0x1f, 0xa7, 0x7a, 0xd6, - 0x8f, 0xdd, 0x66, 0xd2, 0xc1, 0x76, 0xd7, 0x32, 0xf5, 0x76, 0x8d, 0x6d, 0xdc, 0xd3, 0x55, 0xaf, - 0xde, 0x64, 0xf5, 0x19, 0x5e, 0xcb, 0xa0, 0x56, 0xd9, 0xd3, 0xa2, 0x66, 0xb8, 0xbd, 0xd5, 0x0c, - 0x69, 0x24, 0x9f, 0xf6, 0x1b, 0x49, 0x5d, 0x68, 0x24, 0x77, 0x1f, 0x80, 0x76, 0xbc, 0xf6, 0x52, - 0x1e, 0x6e, 0x6a, 0x11, 0xb8, 0xb5, 0x7a, 0xcb, 0xd5, 0x0a, 0xfa, 0x7c, 0x1a, 0x4e, 0x96, 0xcc, - 0x7e, 0x16, 0x3e, 0xaf, 0x0b, 0x6f, 0xe3, 0xa1, 0x59, 0x17, 0x45, 0x7a, 0x7b, 0xdf, 0x6a, 0xf7, - 0xa7, 0x19, 0x22, 0xd1, 0xcf, 0xf8, 0x12, 0xad, 0x09, 0x12, 0xbd, 0x6b, 0x78, 0xd2, 0xf1, 0x04, - 0x5a, 0x19, 0x69, 0x07, 0x94, 0x41, 0xdf, 0xca, 0xc0, 0xa3, 0xa8, 0xef, 0x0d, 0xe3, 0x90, 0xb6, - 0xb2, 0x82, 0xd9, 0xd2, 0x70, 0xd7, 0xd1, 0x6d, 0x47, 0x38, 0x0f, 0xdd, 0x33, 0x95, 0x4a, 0x25, - 0x30, 0x95, 0x4a, 0x0f, 0x9c, 0x4a, 0xa1, 0xf7, 0xf0, 0xe6, 0xc3, 0x39, 0x11, 0xe3, 0x42, 0xff, - 0xfe, 0x3f, 0xaa, 0x86, 0x61, 0x50, 0xfb, 0x76, 0xc5, 0x4f, 0x08, 0x50, 0x2f, 0x1d, 0xb8, 0x84, - 0x78, 0x88, 0xff, 0xde, 0x68, 0xed, 0xbc, 0x0c, 0xff, 0x4d, 0x34, 0x4a, 0xf2, 0xad, 0x44, 0x0d, - 0xf4, 0xcf, 0x4e, 0xc0, 0x14, 0x69, 0x0b, 0xab, 0x86, 0x79, 0x01, 0x3d, 0xa4, 0xc0, 0x4c, 0x05, - 0x5f, 0x2c, 0x6e, 0xeb, 0xed, 0x36, 0x36, 0xb7, 0x30, 0x6f, 0xb6, 0x9f, 0x82, 0x09, 0xbd, 0xd3, - 0xa9, 0x04, 0xfb, 0x0c, 0xde, 0x2b, 0xeb, 0x7f, 0xbf, 0xd9, 0xb7, 0x91, 0xa7, 0x22, 0x1a, 0xb9, - 0x5f, 0xee, 0x3c, 0x5f, 0x66, 0xc8, 0x0c, 0xf9, 0x1a, 0x98, 0x6e, 0x7a, 0x59, 0xfc, 0x73, 0x13, - 0x7c, 0x12, 0xfa, 0x9b, 0x58, 0xdd, 0x80, 0x54, 0xe1, 0xf1, 0x94, 0x02, 0x8f, 0xd8, 0x0e, 0x39, - 0x01, 0xc7, 0xea, 0xd5, 0x6a, 0x63, 0xad, 0x50, 0xb9, 0x2f, 0x38, 0xaf, 0xbc, 0x89, 0x5e, 0x9d, - 0x81, 0xb9, 0x9a, 0xd5, 0xde, 0xc3, 0x01, 0x4c, 0x65, 0xc1, 0x21, 0x87, 0x97, 0x53, 0x6a, 0x9f, - 0x9c, 0xd4, 0x93, 0x90, 0xd3, 0xcd, 0xee, 0x45, 0xec, 0xd9, 0x86, 0xec, 0x8d, 0xc1, 0xf8, 0x61, - 0xbe, 0x1d, 0x6b, 0x22, 0x8c, 0x77, 0x0c, 0x90, 0xa4, 0xc8, 0x55, 0x08, 0x90, 0x67, 0x60, 0xa6, - 0x4b, 0x37, 0x0b, 0xeb, 0xdc, 0x9e, 0xb0, 0x90, 0x46, 0x58, 0xa4, 0xbb, 0xd5, 0x0a, 0x63, 0x91, - 0xbc, 0xa1, 0x87, 0xfc, 0xe6, 0xbf, 0x21, 0x40, 0x5c, 0x38, 0x08, 0x63, 0xf1, 0x40, 0x7e, 0xed, - 0xa8, 0x67, 0x78, 0xa7, 0xe0, 0x38, 0x6b, 0xb5, 0x8d, 0xe2, 0x4a, 0x61, 0x75, 0xb5, 0x54, 0x59, - 0x2e, 0x35, 0xca, 0x8b, 0x74, 0xab, 0x22, 0x48, 0x29, 0xd4, 0xeb, 0xa5, 0xb5, 0xf5, 0x7a, 0xad, - 0x51, 0x7a, 0x66, 0xb1, 0x54, 0x5a, 0x24, 0x2e, 0x71, 0xe4, 0x4c, 0x8b, 0xe7, 0xbc, 0x58, 0xa8, - 0xd4, 0xce, 0x95, 0xb4, 0xfc, 0xf6, 0x99, 0x02, 0x4c, 0x73, 0xfd, 0xbc, 0xcb, 0xdd, 0x22, 0xde, - 0xd4, 0x77, 0xdb, 0xcc, 0x56, 0xcb, 0x1f, 0x71, 0xb9, 0x23, 0xb2, 0xa9, 0x9a, 0xed, 0x4b, 0xf9, - 0x94, 0x9a, 0x87, 0x19, 0xbe, 0x4b, 0xcf, 0xa7, 0xd1, 0x3b, 0xaf, 0x82, 0xa9, 0x73, 0x96, 0x7d, - 0x81, 0xf8, 0x71, 0xa1, 0x0f, 0xd0, 0xb8, 0x26, 0xde, 0x09, 0x51, 0x6e, 0x60, 0x7f, 0xad, 0xbc, - 0xb7, 0x80, 0x47, 0x6d, 0x7e, 0xe0, 0x29, 0xd0, 0x6b, 0x60, 0xfa, 0xa2, 0x97, 0x3b, 0x68, 0xe9, - 0x5c, 0x12, 0xfa, 0xef, 0x72, 0xfb, 0xff, 0x83, 0x8b, 0x4c, 0x7e, 0x7f, 0xfa, 0x1d, 0x69, 0xc8, - 0x2d, 0x63, 0xa7, 0xd0, 0x6e, 0xf3, 0x72, 0x7b, 0xb9, 0xf4, 0xc9, 0x1e, 0xa1, 0x12, 0x85, 0x76, - 0x3b, 0xbc, 0x51, 0x71, 0x02, 0xf2, 0x3c, 0xd0, 0x85, 0x34, 0x49, 0xbf, 0xb9, 0x01, 0x05, 0x26, - 0x2f, 0xb1, 0x8f, 0x2a, 0xfe, 0x1e, 0xf7, 0xc3, 0x9c, 0x95, 0xf3, 0x84, 0x20, 0xa6, 0x4d, 0x2a, - 0x7a, 0xaf, 0xdc, 0xcb, 0xa7, 0xde, 0x0b, 0x13, 0xbb, 0x5d, 0x5c, 0xd4, 0xbb, 0x98, 0xf0, 0xd6, - 0x5b, 0xd3, 0xea, 0xf9, 0xfb, 0x71, 0xd3, 0x99, 0x2f, 0xef, 0xb8, 0x06, 0xf5, 0x06, 0xcd, 0xe8, - 0x87, 0x89, 0x61, 0xef, 0x9a, 0x47, 0xc1, 0x9d, 0x94, 0x5c, 0x34, 0x9c, 0xed, 0xe2, 0xb6, 0xee, - 0xb0, 0xb5, 0x6d, 0xff, 0x1d, 0xbd, 0x78, 0x08, 0x38, 0x23, 0xf7, 0x82, 0x43, 0x0f, 0x08, 0xc6, - 0x06, 0x71, 0x04, 0x1b, 0xb8, 0xc3, 0x80, 0xf8, 0xf7, 0x69, 0xc8, 0x54, 0x3b, 0xd8, 0x94, 0x3e, - 0x0d, 0xe3, 0xcb, 0x36, 0xdd, 0x23, 0xdb, 0x87, 0xe4, 0xbd, 0xc3, 0xfc, 0x4a, 0xbb, 0x25, 0x87, - 0x48, 0xf6, 0x66, 0xc8, 0x18, 0xe6, 0xa6, 0xc5, 0x0c, 0xd3, 0x2b, 0x43, 0x36, 0x81, 0xca, 0xe6, - 0xa6, 0xa5, 0x91, 0x8c, 0xb2, 0x8e, 0x61, 0x51, 0x65, 0x27, 0x2f, 0xee, 0x6f, 0x4f, 0x42, 0x8e, - 0xaa, 0x33, 0x7a, 0x99, 0x02, 0x4a, 0xa1, 0xd5, 0x0a, 0x11, 0x7c, 0x7a, 0x9f, 0xe0, 0x2d, 0xf2, - 0x9b, 0x8f, 0x89, 0xff, 0x2e, 0x06, 0x33, 0x91, 0xec, 0xdb, 0x59, 0x93, 0x2a, 0xb4, 0x5a, 0xe1, - 0x3e, 0xa8, 0x7e, 0x81, 0x69, 0xb1, 0x40, 0xbe, 0x85, 0x2b, 0x72, 0x2d, 0x3c, 0xf6, 0x40, 0x10, - 0xca, 0x5f, 0xf2, 0x10, 0xfd, 0x53, 0x1a, 0x26, 0x56, 0x8d, 0xae, 0xe3, 0x62, 0x53, 0x90, 0xc1, - 0xe6, 0x2a, 0x98, 0xf2, 0x44, 0xe3, 0x76, 0x79, 0x6e, 0x7f, 0x1e, 0x24, 0xa0, 0x37, 0xf0, 0xe8, - 0xdc, 0x23, 0xa2, 0xf3, 0xa4, 0xe8, 0xda, 0x33, 0x2e, 0xc2, 0x4f, 0x19, 0x04, 0xc5, 0xa6, 0x7b, - 0x8b, 0xfd, 0x0d, 0x5f, 0xe0, 0x6b, 0x82, 0xc0, 0x6f, 0x1b, 0xa6, 0xc8, 0xe4, 0x85, 0xfe, 0x85, - 0x34, 0x80, 0x5b, 0x36, 0x3b, 0xca, 0xf5, 0x58, 0xe1, 0x80, 0x76, 0x84, 0x74, 0x5f, 0xcd, 0x4b, - 0x77, 0x4d, 0x94, 0xee, 0x53, 0x06, 0x57, 0x35, 0xea, 0xc8, 0x96, 0x9a, 0x07, 0xc5, 0xf0, 0x45, - 0xeb, 0x3e, 0xa2, 0x77, 0xf8, 0x42, 0x5d, 0x17, 0x84, 0x7a, 0xc7, 0x90, 0x25, 0x25, 0x2f, 0xd7, - 0xbf, 0x48, 0xc3, 0x44, 0x0d, 0x3b, 0x6e, 0x37, 0x89, 0xce, 0xca, 0xf4, 0xf0, 0x5c, 0xdb, 0x4e, - 0x4b, 0xb6, 0xed, 0xef, 0xa5, 0x64, 0x03, 0xbd, 0x04, 0x92, 0x61, 0x3c, 0x85, 0x2c, 0x1e, 0x3c, - 0x2c, 0x15, 0xe8, 0x65, 0x10, 0xb5, 0xe4, 0xa5, 0xfb, 0xb6, 0xb4, 0xbf, 0x31, 0x2f, 0x9e, 0xb4, - 0xe0, 0xcd, 0xe2, 0xd4, 0x7e, 0xb3, 0x58, 0xfe, 0xa4, 0x05, 0x5f, 0xc7, 0xf0, 0x5d, 0xe9, 0xd8, - 0xc6, 0xc6, 0x08, 0x36, 0x8c, 0x87, 0x91, 0xd7, 0x73, 0x14, 0xc8, 0xb1, 0x95, 0xe5, 0xbb, 0xa2, - 0x57, 0x96, 0x07, 0x4f, 0x2d, 0xde, 0x3f, 0x84, 0x29, 0x17, 0xb5, 0xdc, 0xeb, 0xb3, 0x91, 0xe6, - 0xd8, 0xb8, 0x09, 0xb2, 0x24, 0x12, 0x25, 0x1b, 0xe7, 0x82, 0xbd, 0x7e, 0x8f, 0x44, 0xc9, 0xfd, - 0xaa, 0xd1, 0x4c, 0xb1, 0x51, 0x18, 0xc1, 0x0a, 0xf1, 0x30, 0x28, 0xbc, 0xe7, 0xf3, 0x29, 0xdf, - 0x08, 0x79, 0x7f, 0x86, 0x99, 0x7f, 0x9f, 0x14, 0x63, 0x62, 0x34, 0x2d, 0xd3, 0xc1, 0x0f, 0x70, - 0x6b, 0xf2, 0x7e, 0x42, 0xa4, 0x65, 0x70, 0x0a, 0x26, 0x1c, 0x9b, 0x5f, 0xa7, 0xf7, 0x5e, 0xf9, - 0x1e, 0x27, 0x2b, 0xf6, 0x38, 0x15, 0x38, 0x63, 0x98, 0xcd, 0xf6, 0x6e, 0x0b, 0x6b, 0xb8, 0xad, - 0xbb, 0xb5, 0xea, 0x16, 0xba, 0x8b, 0xb8, 0x83, 0xcd, 0x16, 0x36, 0x1d, 0xca, 0xa7, 0xe7, 0x93, - 0x2b, 0x91, 0x13, 0x7d, 0x83, 0x57, 0x8c, 0x3b, 0x45, 0xc5, 0x78, 0x6c, 0xbf, 0x79, 0x45, 0x84, - 0x11, 0x7a, 0x1b, 0x00, 0xad, 0xdb, 0x59, 0x03, 0x5f, 0x64, 0x1d, 0xe2, 0x15, 0x3d, 0xa6, 0x68, - 0xd5, 0xcf, 0xa0, 0x71, 0x99, 0xd1, 0x57, 0x7c, 0x65, 0xb8, 0x5b, 0x50, 0x86, 0x9b, 0x24, 0x59, - 0x88, 0xa7, 0x07, 0x9d, 0x21, 0xd6, 0x3a, 0x66, 0x61, 0x2a, 0x58, 0xa1, 0x54, 0xd4, 0x2b, 0xe0, - 0x84, 0xe7, 0xf3, 0x50, 0x29, 0x95, 0x16, 0x6b, 0x8d, 0x8d, 0xf5, 0x65, 0xad, 0xb0, 0x58, 0xca, - 0x83, 0xaa, 0xc2, 0x5c, 0x75, 0xe1, 0x9e, 0x52, 0xb1, 0xee, 0xbb, 0x2a, 0x64, 0xd0, 0x9f, 0xa5, - 0x21, 0x4b, 0x1c, 0xca, 0xd1, 0x4f, 0x8d, 0x48, 0x73, 0xba, 0xc2, 0x0e, 0x8f, 0x3f, 0x91, 0x92, - 0x8f, 0x55, 0xc9, 0x84, 0x49, 0xb8, 0x3a, 0x50, 0xac, 0xca, 0x08, 0x42, 0xc9, 0x37, 0x4f, 0xb7, - 0x49, 0xd6, 0xb6, 0xad, 0x8b, 0x3f, 0xca, 0x4d, 0xd2, 0xad, 0xff, 0x21, 0x37, 0xc9, 0x3e, 0x2c, - 0x8c, 0xbd, 0x49, 0xf6, 0x69, 0x77, 0x11, 0xcd, 0x14, 0x3d, 0x3b, 0xeb, 0x2f, 0xc8, 0x3c, 0x2f, - 0x7d, 0xa0, 0x05, 0x99, 0x02, 0xcc, 0x1a, 0xa6, 0x83, 0x6d, 0x53, 0x6f, 0x2f, 0xb5, 0xf5, 0x2d, - 0xef, 0x00, 0x7d, 0xef, 0x2c, 0xbc, 0xcc, 0xe5, 0xd1, 0xc4, 0x3f, 0xd4, 0xd3, 0x00, 0x0e, 0xde, - 0xe9, 0xb4, 0x75, 0x27, 0x50, 0x3d, 0x2e, 0x85, 0xd7, 0xbe, 0x8c, 0xa8, 0x7d, 0xb7, 0xc0, 0x65, - 0x14, 0xb4, 0xfa, 0xa5, 0x0e, 0xde, 0x30, 0x8d, 0x9f, 0xde, 0x25, 0x21, 0x94, 0xa8, 0x8e, 0xf6, - 0xfb, 0x24, 0x2c, 0x4b, 0xe4, 0x7a, 0x96, 0x25, 0xfe, 0x5e, 0xfa, 0x68, 0xa6, 0xd7, 0xea, 0x07, - 0x1c, 0xcd, 0xf4, 0x5b, 0x9a, 0xd2, 0xd3, 0xd2, 0x7c, 0x63, 0x21, 0x23, 0x61, 0x2c, 0xf0, 0xa8, - 0x64, 0x25, 0x0d, 0xed, 0xd7, 0x4b, 0x9d, 0xfd, 0x8c, 0xaa, 0xc6, 0x18, 0x26, 0x72, 0x0a, 0xcc, - 0xd1, 0xa2, 0x17, 0x2c, 0xeb, 0xc2, 0x8e, 0x6e, 0x5f, 0x40, 0xf6, 0x81, 0x54, 0x31, 0x72, 0x4d, - 0x24, 0x74, 0xa1, 0xef, 0x33, 0x3c, 0xea, 0xcb, 0x22, 0xea, 0x4f, 0x08, 0x17, 0x97, 0xc7, 0xf3, - 0x78, 0x16, 0x45, 0xde, 0xe2, 0xe3, 0x79, 0x8f, 0x80, 0xe7, 0x93, 0x63, 0x33, 0x98, 0x3c, 0xae, - 0x7f, 0xe0, 0xe3, 0xea, 0x75, 0xf4, 0xfc, 0x7c, 0x72, 0x94, 0xb8, 0xa2, 0xaf, 0x0e, 0x87, 0x9d, - 0xc7, 0xd7, 0x10, 0xd8, 0xe5, 0x41, 0xb9, 0xe0, 0x6f, 0x61, 0xb9, 0x8f, 0x7c, 0x85, 0x32, 0xc9, - 0xa1, 0x19, 0xc2, 0xf2, 0x58, 0xd0, 0x3c, 0x2e, 0xb2, 0x50, 0xed, 0x24, 0x8a, 0xe9, 0x97, 0xa5, - 0xd7, 0x69, 0xfa, 0x0a, 0x88, 0x72, 0x37, 0x9e, 0x56, 0x29, 0xb7, 0xc8, 0x23, 0xcf, 0x66, 0xf2, - 0x68, 0xbe, 0x28, 0x0b, 0x53, 0xde, 0xe1, 0x59, 0x12, 0xdb, 0xdd, 0xc7, 0xf0, 0x24, 0xe4, 0xba, - 0xd6, 0xae, 0xdd, 0xc4, 0x6c, 0xe5, 0x8c, 0xbd, 0x0d, 0xb1, 0xca, 0x33, 0x70, 0x3c, 0xdf, 0x67, - 0x32, 0x64, 0x62, 0x9b, 0x0c, 0xe1, 0x06, 0x69, 0xd4, 0x00, 0xff, 0x62, 0xe9, 0x80, 0x9c, 0x02, - 0x66, 0x35, 0xec, 0x3c, 0x12, 0xc7, 0xf8, 0xdf, 0x95, 0x5a, 0x43, 0x18, 0x50, 0x93, 0x78, 0x2a, - 0x57, 0x1d, 0xc2, 0x50, 0xbd, 0x12, 0x2e, 0xf7, 0x72, 0x30, 0x0b, 0x95, 0x58, 0xa4, 0x1b, 0xda, - 0x6a, 0x5e, 0x41, 0xcf, 0xc9, 0x40, 0x9e, 0xb2, 0x56, 0xf5, 0x8d, 0x35, 0xf4, 0xf2, 0xd4, 0x61, - 0x5b, 0xa4, 0xe1, 0x53, 0xcc, 0xcf, 0xa5, 0x65, 0x83, 0x7e, 0x09, 0x82, 0x0f, 0x6a, 0x17, 0xa2, - 0x49, 0x43, 0x34, 0xb3, 0x08, 0xe5, 0x43, 0xbf, 0x9e, 0x92, 0x89, 0x21, 0x26, 0xc7, 0x62, 0xf2, - 0xbd, 0xd2, 0x17, 0x33, 0x5e, 0x0c, 0x84, 0x25, 0xdb, 0xda, 0xd9, 0xb0, 0xdb, 0xe8, 0xff, 0x94, - 0x0a, 0xd1, 0x18, 0x62, 0xfe, 0xa7, 0xc3, 0xcd, 0xff, 0x3c, 0x28, 0xbb, 0x76, 0xdb, 0x1b, 0xbe, - 0x77, 0xed, 0xf6, 0x10, 0xc3, 0xb7, 0x7a, 0x3d, 0xcc, 0xe9, 0xad, 0xd6, 0xba, 0xbe, 0x85, 0x8b, - 0xee, 0xbc, 0xda, 0x74, 0xd8, 0xf9, 0xe8, 0x9e, 0xd4, 0xc8, 0xae, 0xe8, 0x1b, 0xd2, 0x3b, 0x71, - 0x02, 0x48, 0x4c, 0x3e, 0x63, 0x19, 0xde, 0xdc, 0x21, 0xa1, 0xb9, 0xad, 0x07, 0xd1, 0x1a, 0xd8, - 0x9b, 0xe4, 0x0e, 0x9d, 0x04, 0xdf, 0xc9, 0x6b, 0xd6, 0x6f, 0xa7, 0x61, 0xc2, 0x95, 0x77, 0xa1, - 0xd5, 0x42, 0x8f, 0x11, 0x82, 0x9a, 0x84, 0xee, 0x91, 0xbe, 0x40, 0x7a, 0x73, 0xda, 0xab, 0x21, - 0xa5, 0x1f, 0x82, 0x49, 0x20, 0xc4, 0xb4, 0x20, 0x44, 0xb9, 0x3d, 0xe8, 0xc8, 0x22, 0x92, 0x17, - 0xdf, 0xa7, 0xd3, 0x30, 0xeb, 0xcd, 0x23, 0x96, 0xb0, 0xd3, 0xdc, 0x46, 0xb7, 0xc9, 0x2e, 0x34, - 0xb1, 0x96, 0x96, 0xf6, 0x5b, 0x1a, 0xfa, 0x41, 0x2a, 0xa6, 0xca, 0x0b, 0x25, 0x87, 0xac, 0xd2, - 0xc5, 0xd2, 0xc5, 0x28, 0x82, 0xc9, 0x0b, 0xf3, 0x2b, 0x69, 0x80, 0xba, 0xe5, 0xcf, 0x75, 0x0f, - 0x20, 0xc9, 0x97, 0x4a, 0xdf, 0x97, 0xc0, 0x2a, 0x1e, 0x14, 0x1b, 0xbf, 0xe7, 0x90, 0xdc, 0x62, - 0x1b, 0x54, 0xd2, 0x58, 0xda, 0xfa, 0xd4, 0xe2, 0x6e, 0xa7, 0x6d, 0x34, 0x75, 0xa7, 0x77, 0x5f, - 0x38, 0x5c, 0xbc, 0xe4, 0xe2, 0xa3, 0x58, 0x46, 0xa1, 0x5f, 0x46, 0x88, 0x2c, 0xe9, 0x61, 0xdb, - 0xb4, 0x77, 0xd8, 0x56, 0x72, 0xaf, 0x67, 0x00, 0xf1, 0x31, 0xa8, 0xa7, 0x02, 0x47, 0xab, 0x1d, - 0x6c, 0x2e, 0xd8, 0x58, 0x6f, 0x35, 0xed, 0xdd, 0x9d, 0xf3, 0x5d, 0xde, 0xa9, 0x21, 0x5a, 0x47, - 0xb9, 0xa5, 0xe3, 0xb4, 0xb0, 0x74, 0x8c, 0x9e, 0xab, 0xc8, 0x1e, 0xfd, 0xe6, 0x36, 0x38, 0x38, - 0x1e, 0x86, 0x18, 0xea, 0x62, 0x6d, 0xc5, 0xf5, 0xac, 0x12, 0x67, 0xe2, 0xac, 0x12, 0xbf, 0x55, - 0xea, 0x20, 0xb9, 0x54, 0xbd, 0xc6, 0xb2, 0xa3, 0x3a, 0x57, 0xc3, 0x4e, 0x08, 0xbc, 0xd7, 0xc1, - 0xec, 0xf9, 0xe0, 0x8b, 0x0f, 0xb1, 0x98, 0xd8, 0xc7, 0xcf, 0xe1, 0x6d, 0x71, 0x57, 0x60, 0x44, - 0x16, 0x42, 0xd0, 0xf5, 0x11, 0x4c, 0xcb, 0x6c, 0xa6, 0xc6, 0x5a, 0x4e, 0x89, 0x2c, 0x3f, 0x79, - 0x14, 0x3e, 0x9e, 0x86, 0x69, 0x72, 0x9d, 0xd3, 0xc2, 0x25, 0xe2, 0x9d, 0x2f, 0x69, 0x94, 0xbc, - 0x88, 0x17, 0xb3, 0x0a, 0x99, 0xb6, 0x61, 0x5e, 0xf0, 0x76, 0xc1, 0xdd, 0xe7, 0xe0, 0x72, 0x90, - 0x74, 0x9f, 0xcb, 0x41, 0xfc, 0x7d, 0x0a, 0xbf, 0xdc, 0x03, 0xdd, 0x56, 0x37, 0x90, 0x5c, 0xf2, - 0x62, 0xfc, 0xdb, 0x0c, 0xe4, 0x6a, 0x58, 0xb7, 0x9b, 0xdb, 0xe8, 0xfd, 0xe9, 0xbe, 0x53, 0x85, - 0x49, 0x71, 0xaa, 0xb0, 0x04, 0x13, 0x9b, 0x46, 0xdb, 0xc1, 0x36, 0xf5, 0x0c, 0xe2, 0xbb, 0x76, - 0xda, 0xc4, 0x17, 0xda, 0x56, 0xf3, 0xc2, 0x3c, 0x33, 0xdd, 0xe7, 0xbd, 0x60, 0x52, 0xf3, 0x4b, - 0xe4, 0x27, 0xcd, 0xfb, 0xd9, 0x35, 0x08, 0xbb, 0x96, 0xed, 0x84, 0xc5, 0x09, 0x0e, 0xa1, 0x52, - 0xb3, 0x6c, 0x47, 0xa3, 0x3f, 0xba, 0x30, 0x6f, 0xee, 0xb6, 0xdb, 0x75, 0xfc, 0x80, 0xe3, 0x4d, - 0xdb, 0xbc, 0x77, 0xd7, 0x58, 0xb4, 0x36, 0x37, 0xbb, 0x98, 0x2e, 0x1a, 0x64, 0x35, 0xf6, 0xa6, - 0x1e, 0x87, 0x6c, 0xdb, 0xd8, 0x31, 0xe8, 0x44, 0x23, 0xab, 0xd1, 0x17, 0xf5, 0x46, 0xc8, 0x07, - 0x73, 0x1c, 0xca, 0xe8, 0xa9, 0x1c, 0x69, 0x9a, 0xfb, 0xd2, 0x5d, 0x9d, 0xb9, 0x80, 0x2f, 0x75, - 0x4f, 0x4d, 0x90, 0xef, 0xe4, 0x59, 0x74, 0xc3, 0x94, 0xd9, 0xef, 0xa0, 0x12, 0x0f, 0x9f, 0xc1, - 0xda, 0xb8, 0x69, 0xd9, 0x2d, 0x4f, 0x36, 0xe1, 0x13, 0x0c, 0x96, 0x2f, 0xde, 0x2e, 0x45, 0xdf, - 0xc2, 0xc7, 0xe0, 0x02, 0x91, 0x73, 0xbb, 0x4d, 0xb7, 0xe8, 0x73, 0x86, 0xb3, 0xbd, 0x86, 0x1d, - 0x1d, 0xfd, 0xad, 0xd2, 0x57, 0xe3, 0xa6, 0xff, 0x7f, 0x8d, 0x1b, 0xa0, 0x71, 0x34, 0x4c, 0x80, - 0xb3, 0x6b, 0x9b, 0xae, 0x1c, 0x59, 0x60, 0x2e, 0x2e, 0x45, 0xbd, 0x03, 0xae, 0x08, 0xde, 0xbc, - 0xa5, 0xd2, 0x45, 0x36, 0x6d, 0x9d, 0x22, 0xd9, 0xc3, 0x33, 0xa8, 0xeb, 0x70, 0x2d, 0xfd, 0xb8, - 0x52, 0x5f, 0x5b, 0x5d, 0x31, 0xb6, 0xb6, 0xdb, 0xc6, 0xd6, 0xb6, 0xd3, 0x2d, 0x9b, 0x5d, 0x07, - 0xeb, 0xad, 0xea, 0xa6, 0x46, 0x23, 0x7c, 0x03, 0xa1, 0x23, 0x93, 0x55, 0xf4, 0x1c, 0x92, 0x1b, - 0xdd, 0x78, 0x4d, 0x09, 0x69, 0x29, 0x4f, 0x76, 0x5b, 0x4a, 0x77, 0xb7, 0xed, 0x63, 0x7a, 0x55, - 0x0f, 0xa6, 0x81, 0xaa, 0xef, 0xb6, 0x49, 0x73, 0x21, 0x99, 0xe3, 0x8e, 0x73, 0x11, 0x9c, 0x24, - 0xdf, 0x6c, 0xfe, 0xdf, 0x1c, 0x64, 0x97, 0x6d, 0xbd, 0xb3, 0x8d, 0x9e, 0xc3, 0xf5, 0xcf, 0xa3, - 0x6a, 0x13, 0xbe, 0x76, 0xa6, 0x07, 0x69, 0xa7, 0x32, 0x40, 0x3b, 0x33, 0x9c, 0x76, 0x86, 0x2f, - 0x2a, 0x9f, 0x81, 0x99, 0xa6, 0xd5, 0x6e, 0xe3, 0xa6, 0x2b, 0x8f, 0x72, 0x8b, 0xac, 0xe6, 0x4c, - 0x69, 0x42, 0x1a, 0x09, 0xb8, 0x87, 0x9d, 0x1a, 0x5d, 0x43, 0xa7, 0x4a, 0x1f, 0x24, 0xa0, 0x97, - 0xa7, 0x21, 0x53, 0x6a, 0x6d, 0x61, 0x61, 0x9d, 0x3d, 0xc5, 0xad, 0xb3, 0x9f, 0x84, 0x9c, 0xa3, - 0xdb, 0x5b, 0xd8, 0xf1, 0xd6, 0x09, 0xe8, 0x9b, 0x1f, 0x07, 0x50, 0xe1, 0xe2, 0x00, 0x3e, 0x05, - 0x32, 0xae, 0xcc, 0x58, 0x84, 0x9d, 0x6b, 0xfb, 0xc1, 0x4f, 0x64, 0x3f, 0xef, 0x96, 0x38, 0xef, - 0xd6, 0x5a, 0x23, 0x3f, 0xf4, 0x62, 0x9d, 0xdd, 0x87, 0x35, 0xb9, 0xac, 0xa8, 0x69, 0x99, 0xe5, - 0x1d, 0x7d, 0x0b, 0xb3, 0x6a, 0x06, 0x09, 0xde, 0xd7, 0xd2, 0x8e, 0x75, 0xbf, 0xc1, 0x42, 0xf2, - 0x05, 0x09, 0x6e, 0x15, 0xb6, 0x8d, 0x56, 0x0b, 0x9b, 0xac, 0x65, 0xb3, 0xb7, 0x33, 0xa7, 0x21, - 0xe3, 0xf2, 0xe0, 0xea, 0x8f, 0x6b, 0x2c, 0xe4, 0x8f, 0xa8, 0x33, 0x6e, 0xb3, 0xa2, 0x8d, 0x37, - 0x9f, 0x12, 0xd7, 0x54, 0x65, 0xdc, 0x76, 0x68, 0xe5, 0xfa, 0x37, 0xae, 0xc7, 0x43, 0xd6, 0xb4, - 0x5a, 0x78, 0xe0, 0x20, 0x44, 0x73, 0xa9, 0x4f, 0x82, 0x2c, 0x6e, 0xb9, 0xbd, 0x82, 0x42, 0xb2, - 0x9f, 0x8e, 0x96, 0xa5, 0x46, 0x33, 0xc7, 0xf3, 0x0d, 0xea, 0xc7, 0x6d, 0xf2, 0x0d, 0xf0, 0x17, - 0x26, 0xe0, 0x28, 0xed, 0x03, 0x6a, 0xbb, 0xe7, 0x5d, 0x52, 0xe7, 0x31, 0x7a, 0xb8, 0xff, 0xc0, - 0x75, 0x54, 0x54, 0xf6, 0xe3, 0x90, 0xed, 0xee, 0x9e, 0xf7, 0x8d, 0x50, 0xfa, 0xc2, 0x37, 0xdd, - 0xf4, 0x48, 0x86, 0x33, 0x65, 0xd8, 0xe1, 0x4c, 0x18, 0x9a, 0x14, 0xaf, 0xf1, 0x07, 0x03, 0x59, - 0x8e, 0x24, 0x7b, 0x03, 0x59, 0xbf, 0x61, 0xe8, 0x14, 0x4c, 0xe8, 0x9b, 0x0e, 0xb6, 0x03, 0x33, - 0x91, 0xbd, 0xba, 0x43, 0xe5, 0x79, 0xbc, 0x69, 0xd9, 0xae, 0x58, 0xa6, 0xe8, 0x50, 0xe9, 0xbd, - 0x73, 0x2d, 0x17, 0x84, 0x1d, 0xb2, 0x9b, 0xe0, 0x98, 0x69, 0x2d, 0xe2, 0x0e, 0x93, 0x33, 0x45, - 0x71, 0x96, 0xb4, 0x80, 0xfd, 0x1f, 0xf6, 0x75, 0x25, 0x73, 0xfb, 0xbb, 0x12, 0xf4, 0xd9, 0xb8, - 0x73, 0xe6, 0x1e, 0xa0, 0x47, 0x66, 0xa1, 0xa9, 0x4f, 0x83, 0x99, 0x16, 0x73, 0xd1, 0x6a, 0x1a, - 0x7e, 0x2b, 0x09, 0xfd, 0x4f, 0xc8, 0x1c, 0x28, 0x52, 0x86, 0x57, 0xa4, 0x65, 0x98, 0x24, 0x07, - 0x72, 0x5c, 0x4d, 0xca, 0xf6, 0xc4, 0x2b, 0x24, 0xd3, 0x3a, 0xbf, 0x52, 0x9c, 0xd8, 0xe6, 0x8b, - 0xec, 0x17, 0xcd, 0xff, 0x39, 0xde, 0xec, 0x3b, 0x5a, 0x42, 0xc9, 0x37, 0xc7, 0xdf, 0xc8, 0xc1, - 0x15, 0x45, 0xdb, 0xea, 0x76, 0x49, 0x14, 0x8a, 0xde, 0x86, 0xf9, 0xe6, 0xb4, 0x10, 0x11, 0xf8, - 0x11, 0xdd, 0xfc, 0xfa, 0x35, 0xa8, 0xf1, 0x35, 0x8d, 0x6f, 0x48, 0x1f, 0x65, 0xf6, 0xf7, 0x1f, - 0x42, 0x84, 0xfe, 0xa3, 0xd1, 0x48, 0xde, 0x93, 0x92, 0x39, 0x5d, 0x1d, 0x53, 0x56, 0xc9, 0x37, - 0x97, 0x2f, 0xa7, 0xe1, 0xca, 0x5e, 0x6e, 0x36, 0xcc, 0xae, 0xdf, 0x60, 0xae, 0x1e, 0xd0, 0x5e, - 0xc4, 0xd3, 0xb8, 0x91, 0x77, 0xf1, 0x84, 0xd4, 0x9d, 0x2b, 0x2d, 0x64, 0xb1, 0xe4, 0x7d, 0x29, - 0x99, 0xbb, 0x78, 0x62, 0x93, 0x4f, 0x5e, 0xb8, 0x9f, 0xcb, 0xc0, 0xd1, 0x65, 0xdb, 0xda, 0xed, - 0x74, 0x83, 0x1e, 0xe8, 0xaf, 0xfa, 0x6f, 0xb8, 0xe6, 0x64, 0x4c, 0x83, 0x6b, 0x60, 0xda, 0x66, - 0xd6, 0x5c, 0xb0, 0xfd, 0xca, 0x27, 0xf1, 0xbd, 0x97, 0x72, 0x90, 0xde, 0x2b, 0xe8, 0x67, 0x32, - 0x42, 0x3f, 0xd3, 0xdb, 0x73, 0x64, 0xfb, 0xf4, 0x1c, 0x7f, 0x99, 0x8e, 0x39, 0xa8, 0xf6, 0x88, - 0x28, 0xa4, 0xbf, 0x28, 0x42, 0x6e, 0x8b, 0x64, 0x64, 0xdd, 0xc5, 0xe3, 0xe4, 0x6a, 0x46, 0x88, - 0x6b, 0xec, 0xd7, 0x40, 0xae, 0x0a, 0xaf, 0xc3, 0xb1, 0x06, 0xb8, 0x68, 0x6e, 0x93, 0x57, 0xaa, - 0x87, 0x32, 0x30, 0xe3, 0x97, 0x5e, 0x6e, 0x75, 0xd1, 0x8b, 0xfa, 0x6b, 0xd4, 0xac, 0x8c, 0x46, - 0xed, 0x5b, 0x67, 0xf6, 0x47, 0x1d, 0x85, 0x1b, 0x75, 0xfa, 0x8e, 0x2e, 0x33, 0x21, 0xa3, 0x0b, - 0x7a, 0xb6, 0x22, 0x1b, 0x53, 0x5f, 0xec, 0x5a, 0x49, 0x6d, 0x1e, 0xc9, 0x83, 0x85, 0x64, 0x64, - 0xff, 0xc1, 0xb5, 0x4a, 0x5e, 0x49, 0x3e, 0x94, 0x86, 0x63, 0xfb, 0x3b, 0xf3, 0x47, 0x8b, 0x5e, - 0x68, 0x6e, 0x9d, 0xba, 0xbe, 0x17, 0x1a, 0x79, 0x13, 0x37, 0xe9, 0x22, 0x8f, 0xc6, 0x0a, 0xf6, - 0xde, 0xe0, 0x4e, 0x5c, 0xee, 0xf0, 0xab, 0x24, 0xd1, 0xe4, 0x05, 0xf8, 0xcb, 0x0a, 0x4c, 0xd5, - 0xb0, 0xb3, 0xaa, 0x5f, 0xb2, 0x76, 0x1d, 0xa4, 0xcb, 0x6e, 0xcf, 0x3d, 0x15, 0x72, 0x6d, 0xf2, - 0x0b, 0xbb, 0xaa, 0xf4, 0x9a, 0xbe, 0xfb, 0x5b, 0xc4, 0xf7, 0x87, 0x92, 0xd6, 0x58, 0x7e, 0xf1, - 0x4c, 0xb2, 0xcc, 0xee, 0xa8, 0xcf, 0xdd, 0x48, 0xb6, 0x76, 0x62, 0xed, 0x9d, 0x86, 0x15, 0x9d, - 0x3c, 0x2c, 0xcf, 0x55, 0x60, 0xb6, 0x86, 0x9d, 0x72, 0x77, 0x49, 0xdf, 0xb3, 0x6c, 0xc3, 0xc1, - 0xfc, 0x5d, 0x45, 0xd1, 0xd0, 0x9c, 0x06, 0x30, 0xfc, 0xdf, 0x58, 0xa4, 0x04, 0x2e, 0x05, 0xfd, - 0x7a, 0x5c, 0x47, 0x21, 0x81, 0x8f, 0x91, 0x80, 0x10, 0xcb, 0xc7, 0x22, 0xaa, 0xf8, 0xe4, 0x81, - 0xf8, 0x52, 0x9a, 0x01, 0x51, 0xb0, 0x9b, 0xdb, 0xc6, 0x1e, 0x6e, 0xc5, 0x04, 0xc2, 0xfb, 0x2d, - 0x00, 0xc2, 0x27, 0x14, 0xdb, 0x7d, 0x45, 0xe0, 0x63, 0x14, 0xee, 0x2b, 0x51, 0x04, 0xc7, 0x12, - 0xec, 0xc0, 0xed, 0x7a, 0xd8, 0x7a, 0xe6, 0x5d, 0xb2, 0x62, 0x0d, 0x4c, 0xb6, 0x34, 0x6f, 0xb2, - 0x0d, 0xd5, 0xb1, 0xd0, 0xb2, 0x07, 0xe9, 0x74, 0x26, 0x89, 0x8e, 0xa5, 0x6f, 0xd1, 0xc9, 0x0b, - 0xfd, 0x7d, 0x0a, 0x9c, 0xf0, 0x4f, 0x01, 0xd7, 0xb0, 0xb3, 0xa8, 0x77, 0xb7, 0xcf, 0x5b, 0xba, - 0xdd, 0xe2, 0xaf, 0xb0, 0x1d, 0xfa, 0xc4, 0x1f, 0xfa, 0x22, 0x0f, 0x42, 0x45, 0x04, 0xa1, 0xaf, - 0xab, 0x68, 0x5f, 0x5e, 0x46, 0xd1, 0xc9, 0x44, 0x7a, 0xb3, 0xfe, 0xa6, 0x0f, 0xd6, 0x33, 0x04, - 0xb0, 0xee, 0x1c, 0x96, 0xc5, 0xe4, 0x81, 0xfb, 0x35, 0x3a, 0x22, 0x70, 0x5e, 0xcd, 0xf7, 0xc9, - 0x02, 0x16, 0xe2, 0xd5, 0xaa, 0x84, 0x7a, 0xb5, 0x0e, 0x35, 0x46, 0x0c, 0xf4, 0x48, 0x4e, 0x76, - 0x8c, 0x38, 0x44, 0x6f, 0xe3, 0x77, 0x29, 0x90, 0x27, 0x61, 0x20, 0x38, 0x8f, 0x6f, 0x74, 0xbf, - 0x2c, 0x3a, 0xfb, 0xbc, 0xcb, 0x27, 0xe2, 0x7a, 0x97, 0xa3, 0x77, 0xc6, 0xf5, 0x21, 0xef, 0xe5, - 0x76, 0x24, 0x88, 0xc5, 0x72, 0x11, 0x1f, 0xc0, 0x41, 0xf2, 0xa0, 0xfd, 0x37, 0x05, 0xc0, 0x6d, - 0xd0, 0xec, 0xec, 0xc3, 0x33, 0x65, 0xe1, 0xba, 0x99, 0xf7, 0xab, 0x77, 0x81, 0x3a, 0xd1, 0x03, - 0x14, 0xa5, 0x18, 0x9c, 0xaa, 0x78, 0x38, 0xae, 0x6f, 0x65, 0xc0, 0xd5, 0x48, 0x60, 0x89, 0xe5, - 0x6d, 0x19, 0x5a, 0x76, 0xf2, 0x80, 0xfc, 0x8f, 0x34, 0x64, 0xeb, 0x56, 0x0d, 0x3b, 0x07, 0x37, - 0x05, 0x62, 0x1f, 0xdb, 0x27, 0xe5, 0x8e, 0xe2, 0xd8, 0x7e, 0x3f, 0x42, 0xc9, 0x8b, 0xee, 0xbd, - 0x69, 0x98, 0xa9, 0x5b, 0x45, 0x7f, 0x71, 0x4a, 0xde, 0x57, 0x55, 0xfe, 0x5e, 0x40, 0xbf, 0x82, - 0x41, 0x31, 0x07, 0xba, 0x17, 0x70, 0x30, 0xbd, 0xe4, 0xe5, 0x76, 0x1b, 0x1c, 0xdd, 0x30, 0x5b, - 0x96, 0x86, 0x5b, 0x16, 0x5b, 0xe9, 0x56, 0x55, 0xc8, 0xec, 0x9a, 0x2d, 0x8b, 0xb0, 0x9c, 0xd5, - 0xc8, 0xb3, 0x9b, 0x66, 0xe3, 0x96, 0xc5, 0x7c, 0x03, 0xc8, 0x33, 0xfa, 0x86, 0x02, 0x19, 0xf7, - 0x5f, 0x79, 0x51, 0xbf, 0x4b, 0x89, 0x19, 0x88, 0xc0, 0x25, 0x3f, 0x12, 0x4b, 0xe8, 0x2e, 0x6e, - 0xed, 0x9f, 0x7a, 0xb0, 0x5e, 0x1b, 0x56, 0x1e, 0x27, 0x8a, 0x60, 0xcd, 0x5f, 0x3d, 0x05, 0x13, - 0xe7, 0xdb, 0x56, 0xf3, 0x42, 0x70, 0x5e, 0x9e, 0xbd, 0xaa, 0x37, 0x42, 0xd6, 0xd6, 0xcd, 0x2d, - 0xcc, 0xf6, 0x14, 0x8e, 0xf7, 0xf4, 0x85, 0xc4, 0xeb, 0x45, 0xa3, 0x59, 0xd0, 0x3b, 0xe3, 0x84, - 0x40, 0xe8, 0x53, 0xf9, 0x78, 0xfa, 0xb0, 0x38, 0xc4, 0xc9, 0xb2, 0x3c, 0xcc, 0x14, 0x0b, 0xf4, - 0x06, 0xce, 0xb5, 0xea, 0xd9, 0x52, 0x5e, 0x21, 0x30, 0xbb, 0x32, 0x49, 0x10, 0x66, 0x97, 0xfc, - 0x8f, 0x2c, 0xcc, 0x7d, 0x2a, 0x7f, 0x18, 0x30, 0x7f, 0x3a, 0x0d, 0xb3, 0xab, 0x46, 0xd7, 0x09, - 0xf3, 0xf6, 0x8f, 0x88, 0x02, 0xf7, 0xe2, 0xb8, 0xa6, 0xb2, 0x50, 0x8e, 0x74, 0xf8, 0xb7, 0x58, - 0xe6, 0x70, 0x54, 0x11, 0xe3, 0x39, 0x96, 0x42, 0x38, 0xa0, 0xb7, 0xe6, 0x49, 0x4b, 0x32, 0xb6, - 0xa1, 0x14, 0x14, 0x32, 0x7e, 0x43, 0x29, 0xb4, 0xec, 0xe4, 0xe5, 0xfb, 0x8d, 0x34, 0x1c, 0x73, - 0x8b, 0x8f, 0x5a, 0x96, 0x0a, 0x17, 0xf3, 0xc0, 0x65, 0xa9, 0xd8, 0x2b, 0xe3, 0xfb, 0x78, 0x19, - 0xc5, 0xca, 0xf8, 0x20, 0xa2, 0x63, 0x16, 0x73, 0xc8, 0x32, 0xec, 0x20, 0x31, 0x47, 0x2c, 0xc3, - 0x0e, 0x2f, 0xe6, 0xe8, 0xa5, 0xd8, 0x21, 0xc5, 0x7c, 0x68, 0x0b, 0xac, 0x6f, 0x54, 0x7c, 0x31, - 0x87, 0xae, 0x6d, 0x44, 0x88, 0x39, 0xf6, 0x89, 0x5d, 0xf4, 0xee, 0x21, 0x05, 0x3f, 0xe2, 0xf5, - 0x8d, 0x61, 0x60, 0x3a, 0xc4, 0x35, 0x8e, 0x57, 0x28, 0x30, 0xc7, 0xb8, 0xe8, 0x3f, 0x65, 0x8e, - 0xc0, 0x28, 0xf6, 0x94, 0x39, 0xf6, 0x19, 0x20, 0x91, 0xb3, 0xf1, 0x9f, 0x01, 0x8a, 0x2c, 0x3f, - 0x79, 0x70, 0xbe, 0x99, 0x81, 0x93, 0x2e, 0x0b, 0x6b, 0x56, 0xcb, 0xd8, 0xbc, 0x44, 0xb9, 0x38, - 0xab, 0xb7, 0x77, 0x71, 0x17, 0x7d, 0x20, 0x2d, 0x8b, 0xd2, 0x7f, 0x02, 0xb0, 0x3a, 0xd8, 0xa6, - 0x81, 0xd4, 0x18, 0x50, 0x77, 0x84, 0x55, 0x76, 0x7f, 0x49, 0x7e, 0x50, 0xf4, 0xaa, 0x47, 0x44, - 0xe3, 0xe8, 0xb9, 0x56, 0xe1, 0x94, 0xff, 0xa5, 0xd7, 0xc1, 0x23, 0xb5, 0xdf, 0xc1, 0xe3, 0x06, - 0x50, 0xf4, 0x56, 0xcb, 0x87, 0xaa, 0x77, 0x33, 0x9b, 0x94, 0xa9, 0xb9, 0x59, 0xdc, 0x9c, 0x5d, - 0x1c, 0x1c, 0xcd, 0x0b, 0xc9, 0xd9, 0xc5, 0x8e, 0x3a, 0x0f, 0x39, 0x7a, 0x83, 0xa0, 0xbf, 0xa2, - 0xdf, 0x3f, 0x33, 0xcb, 0x25, 0x9a, 0x76, 0x55, 0x51, 0x0d, 0x6f, 0x8b, 0x25, 0x99, 0x7e, 0xfd, - 0x74, 0x60, 0x27, 0x6b, 0x82, 0x82, 0x3d, 0x7d, 0x68, 0xca, 0xe3, 0xd9, 0x0d, 0x2b, 0x74, 0x3a, - 0xed, 0x4b, 0x75, 0x16, 0x7c, 0x25, 0xd6, 0x6e, 0x18, 0x17, 0xc3, 0x25, 0xdd, 0x1b, 0xc3, 0x25, - 0xfe, 0x6e, 0x98, 0xc0, 0xc7, 0x28, 0x76, 0xc3, 0xa2, 0x08, 0x8e, 0x61, 0x3d, 0x32, 0x4b, 0xad, - 0x66, 0x16, 0xa3, 0xf6, 0x2d, 0xfd, 0x0f, 0xa1, 0x81, 0xe8, 0xec, 0xd2, 0x2f, 0x7c, 0x6d, 0x64, - 0x6c, 0x6e, 0xf5, 0x49, 0x90, 0xdb, 0xb4, 0xec, 0x1d, 0xdd, 0xdb, 0xb8, 0xef, 0x3d, 0x29, 0xc2, - 0xe2, 0xc2, 0x2e, 0x91, 0x3c, 0x1a, 0xcb, 0xeb, 0xce, 0x47, 0x9e, 0x65, 0x74, 0x58, 0xd4, 0x45, - 0xf7, 0x51, 0xbd, 0x0e, 0x66, 0x59, 0xf0, 0xc5, 0x0a, 0xee, 0x3a, 0xb8, 0xc5, 0x22, 0x56, 0x88, - 0x89, 0xea, 0x19, 0x98, 0x61, 0x09, 0x4b, 0x46, 0x1b, 0x77, 0x59, 0xd0, 0x0a, 0x21, 0x4d, 0x3d, - 0x09, 0x39, 0xa3, 0x7b, 0x4f, 0xd7, 0x32, 0x89, 0xff, 0xff, 0xa4, 0xc6, 0xde, 0xd4, 0x1b, 0xe0, - 0x28, 0xcb, 0xe7, 0x1b, 0xab, 0xf4, 0xc0, 0x4e, 0x6f, 0x32, 0xfa, 0xfc, 0x30, 0x13, 0x87, 0xd8, - 0xf1, 0x78, 0x5d, 0x14, 0x76, 0x9b, 0x4d, 0x8c, 0x5b, 0xec, 0x64, 0x93, 0xf7, 0x1a, 0x33, 0x52, - 0x6f, 0xec, 0x69, 0xc6, 0x21, 0x85, 0xea, 0xfd, 0xe8, 0x09, 0xc8, 0xd1, 0x6b, 0x2f, 0xd0, 0xcb, - 0xe6, 0xfa, 0x2a, 0xe3, 0x9c, 0xa8, 0x8c, 0x1b, 0x30, 0x63, 0x5a, 0x6e, 0x71, 0xeb, 0xba, 0xad, - 0xef, 0x74, 0xa3, 0x56, 0x11, 0x29, 0x5d, 0x7f, 0xc8, 0xa8, 0x70, 0xbf, 0xad, 0x1c, 0xd1, 0x04, - 0x32, 0xea, 0xff, 0x06, 0x47, 0xcf, 0xb3, 0x08, 0x00, 0x5d, 0x46, 0x39, 0x1d, 0xee, 0x63, 0xd7, - 0x43, 0x79, 0x41, 0xfc, 0x73, 0xe5, 0x88, 0xd6, 0x4b, 0x4c, 0xfd, 0x49, 0x98, 0x73, 0x5f, 0x5b, - 0xd6, 0x45, 0x8f, 0x71, 0x25, 0xdc, 0xd0, 0xe8, 0x21, 0xbf, 0x26, 0xfc, 0xb8, 0x72, 0x44, 0xeb, - 0x21, 0xa5, 0x56, 0x01, 0xb6, 0x9d, 0x9d, 0x36, 0x23, 0x9c, 0x09, 0x57, 0xc9, 0x1e, 0xc2, 0x2b, - 0xfe, 0x4f, 0x2b, 0x47, 0x34, 0x8e, 0x84, 0xba, 0x0a, 0x53, 0xce, 0x03, 0x0e, 0xa3, 0x97, 0x0d, - 0xdf, 0xdc, 0xee, 0xa1, 0x57, 0xf7, 0xfe, 0x59, 0x39, 0xa2, 0x05, 0x04, 0xd4, 0x32, 0x4c, 0x76, - 0xce, 0x33, 0x62, 0xb9, 0x3e, 0x57, 0xfd, 0xf7, 0x27, 0xb6, 0x7e, 0xde, 0xa7, 0xe5, 0xff, 0xee, - 0x32, 0xd6, 0xec, 0xee, 0x31, 0x5a, 0x13, 0xd2, 0x8c, 0x15, 0xbd, 0x7f, 0x5c, 0xc6, 0x7c, 0x02, - 0x6a, 0x19, 0xa6, 0xba, 0xa6, 0xde, 0xe9, 0x6e, 0x5b, 0x4e, 0xf7, 0xd4, 0x64, 0x8f, 0x1f, 0x64, - 0x38, 0xb5, 0x1a, 0xfb, 0x47, 0x0b, 0xfe, 0x56, 0x9f, 0x04, 0x27, 0x76, 0xc9, 0xf5, 0xa1, 0xa5, - 0x07, 0x8c, 0xae, 0x63, 0x98, 0x5b, 0x5e, 0x0c, 0x59, 0xda, 0x9b, 0xf4, 0xff, 0xa8, 0xce, 0xb3, - 0x13, 0x51, 0x40, 0xda, 0x26, 0xea, 0xdd, 0x8c, 0xa3, 0xc5, 0x72, 0x07, 0xa1, 0x9e, 0x06, 0x19, - 0xf7, 0x13, 0x39, 0xb3, 0x39, 0xd7, 0x7f, 0xa1, 0xaf, 0x57, 0x77, 0x48, 0x03, 0x76, 0x7f, 0x72, - 0xc7, 0x46, 0xd3, 0x5a, 0xb7, 0xad, 0x2d, 0x1b, 0x77, 0xbb, 0xcc, 0xe1, 0x90, 0x4b, 0x71, 0x1b, - 0xb8, 0xd1, 0x5d, 0x33, 0xb6, 0xa8, 0xf5, 0xc4, 0xfc, 0xdd, 0xf9, 0x24, 0x3a, 0xdb, 0xac, 0xe0, - 0x8b, 0xc4, 0x21, 0x98, 0x9c, 0xbf, 0x21, 0xb3, 0x4d, 0x2f, 0x05, 0x5d, 0x0f, 0x33, 0x7c, 0x23, - 0xa3, 0x77, 0x67, 0x19, 0x81, 0xed, 0xc5, 0xde, 0xd0, 0x75, 0x30, 0x27, 0xea, 0x34, 0x37, 0xc4, - 0x28, 0x5e, 0x57, 0x88, 0xae, 0x85, 0xa3, 0x3d, 0x0d, 0xcb, 0x8b, 0x29, 0x92, 0x0a, 0x62, 0x8a, - 0x5c, 0x03, 0x10, 0x68, 0x71, 0x5f, 0x32, 0x57, 0xc3, 0x94, 0xaf, 0x97, 0x7d, 0x33, 0x7c, 0x2d, - 0x05, 0x93, 0x9e, 0xb2, 0xf5, 0xcb, 0xe0, 0x8e, 0x2f, 0x26, 0xb7, 0x81, 0xc0, 0xa6, 0xd9, 0x42, - 0x9a, 0x3b, 0x8e, 0x04, 0x6e, 0xbb, 0x75, 0xc3, 0x69, 0x7b, 0x47, 0xdf, 0x7a, 0x93, 0xd5, 0x75, - 0x00, 0x83, 0x60, 0x54, 0x0f, 0xce, 0xc2, 0xdd, 0x12, 0xa3, 0x3d, 0x50, 0x7d, 0xe0, 0x68, 0x9c, - 0x79, 0x34, 0x3b, 0xa8, 0x36, 0x05, 0xd9, 0xda, 0x7a, 0xa1, 0x58, 0xca, 0x1f, 0x51, 0xe7, 0x00, - 0x4a, 0xcf, 0x5c, 0x2f, 0x69, 0xe5, 0x52, 0xa5, 0x58, 0xca, 0xa7, 0xd0, 0x2b, 0xd3, 0x30, 0xe5, - 0x37, 0x82, 0xbe, 0x95, 0x2c, 0x31, 0xd5, 0x1a, 0x78, 0x3d, 0xd1, 0xfe, 0x46, 0xc5, 0x2b, 0xd9, - 0x53, 0xe1, 0xf2, 0xdd, 0x2e, 0x5e, 0x32, 0xec, 0xae, 0xa3, 0x59, 0x17, 0x97, 0x2c, 0xdb, 0x8f, - 0x9a, 0xec, 0x5d, 0xc3, 0x1f, 0xf2, 0xd9, 0xb5, 0x28, 0x5a, 0x98, 0x1c, 0x8a, 0xc2, 0x36, 0x5b, - 0x19, 0x0e, 0x12, 0x5c, 0xba, 0x0e, 0xbd, 0xf7, 0xbe, 0x8b, 0x35, 0xeb, 0x62, 0xb7, 0x60, 0xb6, - 0x8a, 0x56, 0x7b, 0x77, 0xc7, 0xec, 0x32, 0x9b, 0x20, 0xec, 0xb3, 0x2b, 0x1d, 0x72, 0xf9, 0xd8, - 0x1c, 0x40, 0xb1, 0xba, 0xba, 0x5a, 0x2a, 0xd6, 0xcb, 0xd5, 0x4a, 0xfe, 0x88, 0x2b, 0xad, 0x7a, - 0x61, 0x61, 0xd5, 0x95, 0xce, 0x4f, 0xc1, 0xa4, 0xd7, 0xa6, 0x59, 0x18, 0x94, 0x94, 0x17, 0x06, - 0x45, 0x2d, 0xc0, 0xa4, 0xd7, 0xca, 0xd9, 0x88, 0xf0, 0x98, 0xde, 0x63, 0xaf, 0x3b, 0xba, 0xed, - 0x10, 0x7f, 0x69, 0x8f, 0xc8, 0x82, 0xde, 0xc5, 0x9a, 0xff, 0xdb, 0x99, 0xc7, 0x33, 0x0e, 0x54, - 0x98, 0x2b, 0xac, 0xae, 0x36, 0xaa, 0x5a, 0xa3, 0x52, 0xad, 0xaf, 0x94, 0x2b, 0xcb, 0x74, 0x84, - 0x2c, 0x2f, 0x57, 0xaa, 0x5a, 0x89, 0x0e, 0x90, 0xb5, 0x7c, 0x8a, 0x5e, 0x7e, 0xb7, 0x30, 0x09, - 0xb9, 0x0e, 0x91, 0x2e, 0xfa, 0xb2, 0x12, 0xf3, 0xbc, 0xbb, 0x8f, 0x53, 0xc8, 0xf5, 0x5c, 0x82, - 0xcf, 0x79, 0xba, 0xcf, 0x99, 0xd0, 0x33, 0x30, 0x43, 0x6d, 0xb9, 0x2e, 0x59, 0xbe, 0x67, 0x37, - 0xdc, 0x0a, 0x69, 0xe8, 0xe3, 0xe9, 0x18, 0x87, 0xe0, 0xfb, 0x72, 0x14, 0xcf, 0xb8, 0xf8, 0xd3, - 0x61, 0x2e, 0xbb, 0x53, 0x61, 0xae, 0x5c, 0xa9, 0x97, 0xb4, 0x4a, 0x61, 0x95, 0x65, 0x51, 0xd4, - 0x53, 0x70, 0xbc, 0x52, 0x65, 0x31, 0xfd, 0x6a, 0xe4, 0x5a, 0xed, 0xb5, 0xf5, 0xaa, 0x56, 0xcf, - 0x67, 0xd5, 0x93, 0xa0, 0xd2, 0x67, 0xe1, 0x56, 0xfa, 0x9c, 0xfa, 0x58, 0xb8, 0x76, 0xb5, 0xbc, - 0x56, 0xae, 0x37, 0xaa, 0x4b, 0x0d, 0xad, 0x7a, 0xae, 0xe6, 0x22, 0xa8, 0x95, 0x56, 0x0b, 0xae, - 0x22, 0x71, 0x97, 0xe0, 0x4d, 0xa8, 0x97, 0xc1, 0x51, 0x72, 0xc1, 0x25, 0xb9, 0xd9, 0x9e, 0x96, - 0x37, 0xa9, 0x5e, 0x05, 0xa7, 0xca, 0x95, 0xda, 0xc6, 0xd2, 0x52, 0xb9, 0x58, 0x2e, 0x55, 0xea, - 0x8d, 0xf5, 0x92, 0xb6, 0x56, 0xae, 0xd5, 0xdc, 0x7f, 0xf3, 0x53, 0xe4, 0x8a, 0x31, 0xda, 0x67, - 0xa2, 0xf7, 0x2b, 0x30, 0x7b, 0x56, 0x6f, 0x1b, 0xee, 0x40, 0x41, 0xee, 0x1e, 0xec, 0x39, 0x2e, - 0xe2, 0x90, 0x3b, 0x0a, 0x99, 0xc3, 0x39, 0x79, 0x41, 0x3f, 0xa7, 0xc4, 0x3c, 0x2e, 0xc2, 0x80, - 0xa0, 0x25, 0xce, 0x0b, 0xa5, 0x85, 0x4c, 0x6e, 0x5e, 0x9f, 0x8e, 0x71, 0x5c, 0x44, 0x9e, 0x7c, - 0x3c, 0xf0, 0x5f, 0x35, 0x2a, 0xf0, 0xf3, 0x30, 0xb3, 0x51, 0x29, 0x6c, 0xd4, 0x57, 0xaa, 0x5a, - 0xf9, 0x27, 0x48, 0xb4, 0xf1, 0x59, 0x98, 0x5a, 0xaa, 0x6a, 0x0b, 0xe5, 0xc5, 0xc5, 0x52, 0x25, - 0x9f, 0x55, 0x2f, 0x87, 0xcb, 0x6a, 0x25, 0xed, 0x6c, 0xb9, 0x58, 0x6a, 0x6c, 0x54, 0x0a, 0x67, - 0x0b, 0xe5, 0x55, 0xd2, 0x47, 0xe4, 0x22, 0xee, 0x4d, 0x9c, 0x40, 0x3f, 0x93, 0x01, 0xa0, 0x55, - 0x77, 0x2d, 0x69, 0xfe, 0x76, 0xbd, 0x3f, 0x8b, 0x3b, 0x69, 0x08, 0xc8, 0x84, 0xb4, 0xdf, 0x32, - 0x4c, 0xda, 0xec, 0x03, 0x5b, 0x3e, 0x19, 0x44, 0x87, 0x3e, 0x7a, 0xd4, 0x34, 0xff, 0x77, 0xf4, - 0x81, 0x38, 0x73, 0x84, 0x50, 0xc6, 0xe2, 0x21, 0xb9, 0x34, 0x1a, 0x20, 0xd1, 0x8b, 0x52, 0x30, - 0x27, 0x56, 0xcc, 0xad, 0x04, 0x31, 0xa6, 0xe4, 0x2a, 0x21, 0xfe, 0xcc, 0x19, 0x59, 0x67, 0x9e, - 0xc8, 0x86, 0x53, 0xf0, 0x5a, 0x26, 0x3d, 0xf9, 0xed, 0x59, 0x2c, 0xf9, 0x94, 0xcb, 0xbc, 0x6b, - 0x74, 0xd0, 0xab, 0xd5, 0xeb, 0x0f, 0x38, 0x79, 0x05, 0x7d, 0x4d, 0x81, 0x59, 0xe1, 0xfa, 0x3e, - 0xf4, 0xfa, 0x94, 0xcc, 0xd5, 0x5a, 0xdc, 0xc5, 0x80, 0xa9, 0x83, 0x5e, 0x0c, 0x78, 0xe6, 0x66, - 0x98, 0x60, 0x69, 0x44, 0xbe, 0xd5, 0x8a, 0x6b, 0x0a, 0x1c, 0x85, 0xe9, 0xe5, 0x52, 0xbd, 0x51, - 0xab, 0x17, 0xb4, 0x7a, 0x69, 0x31, 0x9f, 0x72, 0x07, 0xbe, 0xd2, 0xda, 0x7a, 0xfd, 0xbe, 0x7c, - 0x3a, 0xbe, 0x07, 0x5e, 0x2f, 0x23, 0x63, 0xf6, 0xc0, 0x8b, 0x2a, 0x3e, 0xf9, 0xb9, 0xea, 0x67, - 0x15, 0xc8, 0x53, 0x0e, 0x4a, 0x0f, 0x74, 0xb0, 0x6d, 0x60, 0xb3, 0x89, 0xd1, 0x05, 0x99, 0x88, - 0x9f, 0xfb, 0x62, 0xe1, 0x91, 0xfe, 0x9c, 0xb3, 0x12, 0xe9, 0x4b, 0x8f, 0x81, 0x9d, 0xd9, 0x67, - 0x60, 0x7f, 0x26, 0xae, 0x0b, 0x5e, 0x2f, 0xbb, 0x23, 0x81, 0xec, 0x53, 0x71, 0x5c, 0xf0, 0x06, - 0x70, 0x30, 0x96, 0x40, 0xbe, 0x21, 0xe3, 0x6f, 0x5e, 0x41, 0x2f, 0x54, 0xe0, 0xe8, 0xa2, 0xee, - 0xe0, 0x85, 0x4b, 0x75, 0x63, 0x07, 0x77, 0x1d, 0x7d, 0xa7, 0x13, 0x72, 0x25, 0x5e, 0x6a, 0xdf, - 0x95, 0x78, 0x8e, 0xf7, 0x07, 0xe1, 0x54, 0xd1, 0x82, 0x04, 0xf4, 0x9e, 0xb8, 0x87, 0xf6, 0x7a, - 0x78, 0x18, 0x59, 0xb4, 0xdd, 0x78, 0x87, 0xf1, 0xa2, 0xb9, 0x18, 0xc3, 0x0d, 0xb5, 0x53, 0x90, - 0xa7, 0xac, 0x70, 0x5e, 0x66, 0xbf, 0xcc, 0x6e, 0x91, 0x6c, 0xc4, 0x08, 0xea, 0xe7, 0x85, 0x49, - 0x48, 0x8b, 0x61, 0x12, 0x84, 0x45, 0x4b, 0xa5, 0xd7, 0x33, 0x20, 0x6e, 0x67, 0xc8, 0xb9, 0x94, - 0x85, 0xc7, 0x51, 0x4d, 0xae, 0x33, 0x8c, 0x2c, 0x7e, 0x3c, 0x37, 0x9d, 0xb1, 0xbb, 0x0c, 0x4b, - 0xb2, 0xc8, 0x44, 0x5f, 0xe8, 0x18, 0xd7, 0xbf, 0x58, 0x70, 0xe9, 0x8b, 0xb8, 0xe5, 0x30, 0x39, - 0xff, 0xe2, 0x41, 0x1c, 0x24, 0x8f, 0xc2, 0x0f, 0xd2, 0x90, 0xa9, 0x59, 0xb6, 0x33, 0x2a, 0x0c, - 0xe2, 0xee, 0x89, 0x72, 0x12, 0xa8, 0x85, 0xcf, 0x39, 0x93, 0xdb, 0x13, 0x8d, 0x2e, 0x7f, 0x0c, - 0x71, 0x11, 0x8f, 0xc2, 0x1c, 0xe5, 0xc4, 0xbf, 0x34, 0xe4, 0xdf, 0xd2, 0xb4, 0xbf, 0xba, 0x57, - 0x16, 0x91, 0x33, 0x30, 0xc3, 0xed, 0x49, 0xfa, 0x17, 0x66, 0xf3, 0x69, 0xe8, 0xcd, 0x3c, 0x2e, - 0x8b, 0x22, 0x2e, 0xfd, 0x66, 0xdc, 0xfe, 0xbd, 0x1b, 0xa3, 0xea, 0x99, 0xe2, 0x84, 0x58, 0x8c, - 0x28, 0x3c, 0x79, 0x44, 0x1e, 0x54, 0x20, 0xc7, 0x7c, 0xc2, 0x46, 0x8a, 0x40, 0xdc, 0x96, 0xe1, - 0x0b, 0x41, 0xce, 0x77, 0x4c, 0x19, 0x75, 0xcb, 0x88, 0x2e, 0x3f, 0x79, 0x1c, 0xfe, 0x9d, 0x39, - 0x3b, 0x16, 0xf6, 0x74, 0xa3, 0xad, 0x9f, 0x6f, 0xc7, 0x08, 0x6d, 0xfc, 0xf1, 0x98, 0xc7, 0xbb, - 0xfc, 0xaa, 0x0a, 0xe5, 0x85, 0x48, 0xfc, 0xc7, 0x61, 0xca, 0xf6, 0x97, 0x24, 0xbd, 0xd3, 0xef, - 0x3d, 0x8e, 0xa6, 0xec, 0xbb, 0x16, 0xe4, 0x8c, 0x75, 0x96, 0x4b, 0x8a, 0x9f, 0xb1, 0x9c, 0x3d, - 0x99, 0x2e, 0xb4, 0x5a, 0x4b, 0x58, 0x77, 0x76, 0x6d, 0xdc, 0x8a, 0x35, 0x44, 0x88, 0x22, 0x9a, - 0xe2, 0x25, 0x21, 0x04, 0x17, 0x5c, 0x15, 0xd1, 0x79, 0xf2, 0x80, 0xde, 0xc0, 0xe3, 0x65, 0x24, - 0x5d, 0xd2, 0xdb, 0x7d, 0x48, 0xaa, 0x02, 0x24, 0x4f, 0x1b, 0x8e, 0x89, 0xe4, 0x01, 0xf9, 0x55, - 0x05, 0xe6, 0xa8, 0x9d, 0x30, 0x6a, 0x4c, 0x7e, 0x27, 0xa6, 0x0f, 0x09, 0x77, 0x2d, 0x13, 0xcf, - 0xce, 0x48, 0x60, 0x89, 0xe3, 0x71, 0x22, 0xc7, 0x47, 0xf2, 0xc8, 0x7c, 0x3e, 0x07, 0xc0, 0xf9, - 0x05, 0x7e, 0x3c, 0x17, 0x04, 0xfa, 0x43, 0xef, 0x64, 0xf3, 0x8f, 0x9a, 0x10, 0x75, 0x9a, 0xf3, - 0xf9, 0xf3, 0x37, 0xa4, 0xc4, 0x44, 0xa9, 0x51, 0xe5, 0x4f, 0x63, 0xda, 0xbc, 0xcc, 0x2b, 0x6f, - 0xe0, 0xe0, 0x3e, 0x64, 0x2f, 0xf7, 0x89, 0x18, 0xc6, 0xef, 0x20, 0x56, 0xe2, 0xa1, 0xb6, 0x3a, - 0xc4, 0xcc, 0xfe, 0x14, 0x1c, 0xd7, 0x4a, 0x85, 0xc5, 0x6a, 0x65, 0xf5, 0x3e, 0xfe, 0x8e, 0x9e, - 0xbc, 0xc2, 0x4f, 0x4e, 0x12, 0x81, 0xed, 0x0d, 0x31, 0xfb, 0x40, 0x51, 0x56, 0x51, 0xb3, 0x15, - 0x6e, 0x71, 0x65, 0x70, 0xaf, 0x26, 0x41, 0xf6, 0x30, 0x51, 0x78, 0x10, 0xb8, 0x66, 0xf4, 0x02, - 0x05, 0xf2, 0xc1, 0x35, 0xf1, 0xec, 0x32, 0xb6, 0xaa, 0xe8, 0x36, 0xd8, 0xa1, 0xfb, 0x4f, 0x81, - 0xdb, 0xa0, 0x97, 0xa0, 0x5e, 0x0f, 0x73, 0xcd, 0x6d, 0xdc, 0xbc, 0x50, 0x36, 0xbd, 0x7d, 0x75, - 0xba, 0x09, 0xdb, 0x93, 0x2a, 0x02, 0x73, 0xaf, 0x08, 0x8c, 0x38, 0x89, 0x16, 0x06, 0x69, 0x9e, - 0xa9, 0x10, 0x5c, 0x7e, 0xdf, 0xc7, 0xa5, 0x22, 0xe0, 0x72, 0xfb, 0x50, 0x54, 0xe3, 0xc1, 0x52, - 0x19, 0x02, 0x16, 0x04, 0x27, 0xab, 0xeb, 0xf5, 0x72, 0xb5, 0xd2, 0xd8, 0xa8, 0x95, 0x16, 0x1b, - 0x0b, 0x1e, 0x38, 0xb5, 0xbc, 0x82, 0xbe, 0x95, 0x86, 0x09, 0xca, 0x56, 0xb7, 0xe7, 0x5a, 0xf7, - 0x68, 0x7f, 0x49, 0xf4, 0x0e, 0xe9, 0xe8, 0x07, 0xbe, 0x20, 0x58, 0x39, 0x21, 0xfd, 0xd4, 0x53, - 0x61, 0x82, 0x82, 0xec, 0xad, 0x68, 0x9d, 0x0e, 0xe9, 0xa5, 0x18, 0x19, 0xcd, 0xcb, 0x2e, 0x19, - 0x09, 0x61, 0x00, 0x1b, 0xc9, 0x8f, 0x2c, 0xcf, 0xce, 0x50, 0x33, 0xf8, 0x9c, 0xe1, 0x6c, 0x13, - 0x77, 0x4a, 0xf4, 0x0c, 0x99, 0xe5, 0xc5, 0x9b, 0x20, 0xbb, 0xe7, 0xe6, 0x1e, 0xe0, 0x9a, 0x4a, - 0x33, 0xa1, 0x57, 0x49, 0x07, 0xde, 0x14, 0xf4, 0xd3, 0xe7, 0x29, 0x04, 0x9c, 0x35, 0xc8, 0xb4, - 0x8d, 0xae, 0xc3, 0xc6, 0x8f, 0xdb, 0x62, 0x11, 0xf2, 0x1e, 0xca, 0x0e, 0xde, 0xd1, 0x08, 0x19, - 0x74, 0x0f, 0xcc, 0xf0, 0xa9, 0x12, 0xee, 0xb9, 0xa7, 0x60, 0x82, 0x1d, 0x1b, 0x63, 0x4b, 0xac, - 0xde, 0xab, 0xe4, 0xb2, 0xa6, 0x54, 0x6d, 0x93, 0xd7, 0x81, 0xff, 0xe7, 0x28, 0x4c, 0xac, 0x18, - 0x5d, 0xc7, 0xb2, 0x2f, 0xa1, 0x87, 0x53, 0x30, 0x71, 0x16, 0xdb, 0x5d, 0xc3, 0x32, 0xf7, 0xb9, - 0x1a, 0x5c, 0x03, 0xd3, 0x1d, 0x1b, 0xef, 0x19, 0xd6, 0x6e, 0x37, 0x58, 0x9c, 0xe1, 0x93, 0x54, - 0x04, 0x93, 0xfa, 0xae, 0xb3, 0x6d, 0xd9, 0x41, 0xb4, 0x09, 0xef, 0x5d, 0x3d, 0x0d, 0x40, 0x9f, - 0x2b, 0xfa, 0x0e, 0x66, 0x0e, 0x14, 0x5c, 0x8a, 0xaa, 0x42, 0xc6, 0x31, 0x76, 0x30, 0x0b, 0x3f, - 0x4b, 0x9e, 0x5d, 0x01, 0x93, 0x50, 0x6e, 0x2c, 0x64, 0x9e, 0xa2, 0x79, 0xaf, 0xe8, 0x8b, 0x0a, - 0x4c, 0x2f, 0x63, 0x87, 0xb1, 0xda, 0x45, 0x2f, 0x4e, 0x49, 0xdd, 0xf8, 0xe0, 0x8e, 0xb1, 0x6d, - 0xbd, 0xeb, 0xfd, 0xe7, 0x2f, 0xc1, 0x8a, 0x89, 0x41, 0x2c, 0x5c, 0x85, 0x0f, 0x84, 0x4d, 0x02, - 0xa3, 0x39, 0x65, 0xea, 0x77, 0xc9, 0x32, 0xb3, 0x4d, 0x90, 0xfd, 0x1f, 0xd0, 0x7b, 0xd3, 0xb2, - 0x87, 0x8a, 0x99, 0xec, 0xe7, 0xb9, 0xfa, 0x84, 0x76, 0x47, 0x93, 0x7b, 0x2c, 0xc7, 0xbe, 0x18, - 0xe7, 0x3c, 0x25, 0x46, 0x46, 0xf3, 0x73, 0x4b, 0x1e, 0x47, 0x1e, 0xcc, 0x49, 0xf2, 0xda, 0xf8, - 0x3d, 0x05, 0xa6, 0x6b, 0xdb, 0xd6, 0x45, 0x4f, 0x8e, 0x3f, 0x25, 0x07, 0xec, 0x55, 0x30, 0xb5, - 0xd7, 0x03, 0x6a, 0x90, 0x10, 0x7e, 0x07, 0x3b, 0x7a, 0xbe, 0x12, 0x17, 0x26, 0x8e, 0xb9, 0x91, - 0xdf, 0x90, 0xae, 0x3e, 0x19, 0x26, 0x18, 0xd7, 0x6c, 0xc9, 0x25, 0x1a, 0x60, 0x2f, 0x33, 0x5f, - 0xc1, 0x8c, 0x58, 0xc1, 0x78, 0xc8, 0x87, 0x57, 0x2e, 0x79, 0xe4, 0xff, 0x28, 0x4d, 0x82, 0x51, - 0x78, 0xc0, 0x17, 0x47, 0x00, 0x3c, 0xfa, 0x7e, 0x4a, 0x76, 0x61, 0xd2, 0x97, 0x80, 0xcf, 0xc1, - 0x81, 0x6e, 0x73, 0x19, 0x48, 0x2e, 0x79, 0x79, 0xbe, 0x32, 0x03, 0x33, 0x8b, 0xc6, 0xe6, 0xa6, - 0xdf, 0x49, 0xbe, 0x44, 0xb2, 0x93, 0x0c, 0x77, 0x07, 0x70, 0xed, 0xdc, 0x5d, 0xdb, 0xc6, 0xa6, - 0x57, 0x29, 0xd6, 0x9c, 0x7a, 0x52, 0xd5, 0x1b, 0xe0, 0xa8, 0x37, 0x2e, 0xf0, 0x1d, 0xe5, 0x94, - 0xd6, 0x9b, 0x8c, 0xbe, 0x2b, 0xbd, 0xab, 0xe5, 0x49, 0x94, 0xaf, 0x52, 0x48, 0x03, 0xbc, 0x03, - 0x66, 0xb7, 0x69, 0x6e, 0x32, 0xf5, 0xf7, 0x3a, 0xcb, 0x93, 0x3d, 0xc1, 0x7e, 0xd7, 0x70, 0xb7, - 0xab, 0x6f, 0x61, 0x4d, 0xcc, 0xdc, 0xd3, 0x7c, 0x95, 0x38, 0x57, 0x57, 0xc9, 0x6d, 0x90, 0x49, - 0xd4, 0x64, 0x0c, 0xda, 0x71, 0x06, 0x32, 0x4b, 0x46, 0x1b, 0xa3, 0x9f, 0x4f, 0xc3, 0x94, 0x86, - 0x9b, 0x96, 0xd9, 0x74, 0xdf, 0x38, 0xe7, 0xa0, 0x7f, 0x4c, 0xc9, 0x5e, 0xd9, 0xe8, 0xd2, 0x99, - 0xf7, 0x69, 0x84, 0xb4, 0x1b, 0xb9, 0xab, 0x19, 0x23, 0x49, 0x8d, 0xe1, 0x82, 0x0d, 0x77, 0xea, - 0xb1, 0xb9, 0xd9, 0xb6, 0x74, 0x61, 0xf1, 0xab, 0xd7, 0x14, 0xba, 0x11, 0xf2, 0xde, 0x19, 0x0f, - 0xcb, 0x59, 0x37, 0x4c, 0xd3, 0x3f, 0x44, 0xbc, 0x2f, 0x5d, 0xdc, 0xb7, 0x8d, 0x8c, 0xc3, 0x42, - 0xea, 0xce, 0x4a, 0x0f, 0xd1, 0xec, 0xeb, 0x61, 0xee, 0xfc, 0x25, 0x07, 0x77, 0x59, 0x2e, 0x56, - 0x6c, 0x46, 0xeb, 0x49, 0xe5, 0xa2, 0x28, 0x47, 0xc5, 0x6b, 0x89, 0x28, 0x30, 0x9e, 0xa8, 0x57, - 0x86, 0x98, 0x01, 0x1e, 0x87, 0x7c, 0xa5, 0xba, 0x58, 0x22, 0xbe, 0x6a, 0x9e, 0xf7, 0xcf, 0x16, - 0x7a, 0xa9, 0x02, 0x33, 0xc4, 0x99, 0xc4, 0x43, 0xe1, 0x5a, 0x89, 0xf9, 0x08, 0xfa, 0x8a, 0xb4, - 0x1f, 0x1b, 0xa9, 0x32, 0x5f, 0x40, 0xb8, 0xa0, 0x37, 0x8d, 0x76, 0xaf, 0xa0, 0xb3, 0x5a, 0x4f, - 0x6a, 0x1f, 0x40, 0x94, 0xbe, 0x80, 0xfc, 0x96, 0x94, 0x33, 0xdb, 0x20, 0xee, 0x0e, 0x0b, 0x95, - 0xdf, 0x56, 0x60, 0xda, 0x9d, 0xa4, 0x78, 0xa0, 0x54, 0x05, 0x50, 0x2c, 0xb3, 0x7d, 0x29, 0x58, - 0x16, 0xf1, 0x5e, 0x63, 0x35, 0x92, 0xbf, 0x90, 0x9e, 0xb9, 0x13, 0x11, 0x71, 0xbc, 0x8c, 0x09, - 0xbf, 0x0f, 0x4a, 0xcd, 0xe7, 0x07, 0x30, 0x77, 0x58, 0xf0, 0x7d, 0x23, 0x0b, 0xb9, 0x8d, 0x0e, - 0x41, 0xee, 0x55, 0x8a, 0x4c, 0x44, 0xf2, 0x7d, 0x07, 0x19, 0x5c, 0x33, 0xab, 0x6d, 0x35, 0xf5, - 0xf6, 0x7a, 0x70, 0x22, 0x2c, 0x48, 0x50, 0x6f, 0x67, 0xbe, 0x8d, 0xf4, 0x38, 0xdd, 0xf5, 0x91, - 0xc1, 0xba, 0x89, 0x8c, 0xb8, 0x43, 0x23, 0x37, 0xc1, 0xb1, 0x96, 0xd1, 0xd5, 0xcf, 0xb7, 0x71, - 0xc9, 0x6c, 0xda, 0x97, 0xa8, 0x38, 0xd8, 0xb4, 0x6a, 0xdf, 0x07, 0xf5, 0x4e, 0xc8, 0x76, 0x9d, - 0x4b, 0x6d, 0x3a, 0x4f, 0xe4, 0xcf, 0x98, 0x84, 0x16, 0x55, 0x73, 0xb3, 0x6b, 0xf4, 0x2f, 0xde, - 0x45, 0x69, 0x42, 0xf2, 0xbe, 0xe6, 0x27, 0x42, 0xce, 0xb2, 0x8d, 0x2d, 0x83, 0xde, 0xbf, 0x33, - 0xb7, 0x2f, 0x26, 0x1d, 0x35, 0x05, 0xaa, 0x24, 0x8b, 0xc6, 0xb2, 0xaa, 0x4f, 0x86, 0x29, 0x63, - 0x47, 0xdf, 0xc2, 0xf7, 0x1a, 0x26, 0x3d, 0xb1, 0x37, 0x77, 0xeb, 0xa9, 0x7d, 0xc7, 0x67, 0xd8, - 0x77, 0x2d, 0xc8, 0x8a, 0x3e, 0x98, 0x96, 0x0d, 0x9c, 0x43, 0xea, 0x46, 0x41, 0x1d, 0xcb, 0xbd, - 0xd5, 0xe8, 0xb5, 0x52, 0x21, 0x6d, 0xc2, 0xd9, 0x4a, 0x7e, 0xf0, 0xfe, 0x42, 0x1a, 0x26, 0x17, - 0xad, 0x8b, 0x26, 0x51, 0xf4, 0xdb, 0xe4, 0x6c, 0xdd, 0x3e, 0x87, 0x1c, 0xc5, 0x6b, 0x21, 0x23, - 0x4f, 0x34, 0x90, 0xda, 0x7a, 0x45, 0x86, 0xc0, 0x10, 0xd9, 0x72, 0x24, 0x2f, 0xeb, 0x8b, 0x2a, - 0x27, 0x79, 0xb9, 0xfe, 0xb1, 0x02, 0x99, 0x45, 0xdb, 0xea, 0xa0, 0xb7, 0xa7, 0x62, 0xb8, 0x2c, - 0xb4, 0x6c, 0xab, 0x53, 0x27, 0xb7, 0x6d, 0x05, 0xc7, 0x38, 0xf8, 0x34, 0xf5, 0x36, 0x98, 0xec, - 0x58, 0x5d, 0xc3, 0xf1, 0xa6, 0x11, 0x73, 0xb7, 0x3e, 0xaa, 0x6f, 0x6b, 0x5e, 0x67, 0x99, 0x34, - 0x3f, 0xbb, 0xdb, 0x6b, 0x13, 0x11, 0xba, 0x72, 0x71, 0xc5, 0xe8, 0xdd, 0x38, 0xd6, 0x93, 0x8a, - 0x5e, 0xc6, 0x23, 0xf9, 0x34, 0x11, 0xc9, 0xc7, 0xf4, 0x91, 0xb0, 0x6d, 0x75, 0x46, 0xb2, 0xc9, - 0xf8, 0x6a, 0x1f, 0xd5, 0xa7, 0x0b, 0xa8, 0xde, 0x28, 0x55, 0x66, 0xf2, 0x88, 0x7e, 0x30, 0x03, - 0x40, 0xcc, 0x8c, 0x0d, 0x77, 0x02, 0x24, 0x67, 0x63, 0x3d, 0x37, 0xc3, 0xc9, 0xb2, 0x20, 0xca, - 0xf2, 0x71, 0x21, 0x56, 0x0c, 0x21, 0x1f, 0x22, 0xd1, 0x02, 0x64, 0x77, 0xdd, 0xcf, 0x4c, 0xa2, - 0x92, 0x24, 0xc8, 0xab, 0x46, 0xff, 0x44, 0x7f, 0x94, 0x82, 0x2c, 0x49, 0x50, 0x4f, 0x03, 0x90, - 0x81, 0x9d, 0x1e, 0x08, 0x4a, 0x91, 0x21, 0x9c, 0x4b, 0x21, 0xda, 0x6a, 0xb4, 0xd8, 0x67, 0x6a, - 0x32, 0x07, 0x09, 0xee, 0xdf, 0x64, 0xb8, 0x27, 0xb4, 0x98, 0x01, 0xc0, 0xa5, 0xb8, 0x7f, 0x93, - 0xb7, 0x55, 0xbc, 0x49, 0x03, 0x21, 0x67, 0xb4, 0x20, 0xc1, 0xff, 0x7b, 0xd5, 0xbf, 0x3e, 0xcb, - 0xfb, 0x9b, 0xa4, 0xb8, 0x93, 0x61, 0xa2, 0x96, 0x0b, 0x41, 0x11, 0x39, 0x92, 0xa9, 0x37, 0x19, - 0xbd, 0xc1, 0x57, 0x9b, 0x45, 0x41, 0x6d, 0x6e, 0x89, 0x21, 0xde, 0xe4, 0x95, 0xe7, 0x6b, 0x59, - 0x98, 0xaa, 0x58, 0x2d, 0xa6, 0x3b, 0xdc, 0x84, 0xf1, 0x53, 0xd9, 0x58, 0x13, 0x46, 0x9f, 0x46, - 0x88, 0x82, 0xdc, 0x2d, 0x2a, 0x88, 0x1c, 0x05, 0x5e, 0x3f, 0xd4, 0x05, 0xc8, 0x11, 0xed, 0xdd, - 0x7f, 0x2f, 0x53, 0x14, 0x09, 0x22, 0x5a, 0x8d, 0xfd, 0xf9, 0x1f, 0x4e, 0xc7, 0xfe, 0x2b, 0x64, - 0x49, 0x05, 0x23, 0x76, 0x77, 0xc4, 0x8a, 0xa6, 0xa3, 0x2b, 0xaa, 0x44, 0x57, 0x34, 0xd3, 0x5b, - 0xd1, 0x38, 0xeb, 0x00, 0x61, 0x1a, 0x92, 0xbc, 0x8e, 0xff, 0xfd, 0x04, 0x40, 0x45, 0xdf, 0x33, - 0xb6, 0xe8, 0xee, 0xf0, 0x17, 0xbd, 0xf9, 0x0f, 0xdb, 0xc7, 0xfd, 0x6f, 0xdc, 0x40, 0x78, 0x1b, - 0x4c, 0xb0, 0x71, 0x8f, 0x55, 0xe4, 0x6a, 0xa1, 0x22, 0x01, 0x15, 0x6a, 0x96, 0x3e, 0xe0, 0x68, - 0x5e, 0x7e, 0xe1, 0x0a, 0xd9, 0x74, 0xcf, 0x15, 0xb2, 0xfd, 0xf7, 0x20, 0x42, 0x2e, 0x96, 0x45, - 0xef, 0x93, 0xf6, 0xe8, 0xe7, 0xf8, 0xe1, 0x6a, 0x14, 0xd2, 0x04, 0x9f, 0x08, 0x13, 0x96, 0xbf, - 0xa1, 0xad, 0x84, 0xae, 0x83, 0x95, 0xcd, 0x4d, 0x4b, 0xf3, 0x72, 0x4a, 0x6e, 0x7e, 0x49, 0xf1, - 0x31, 0x96, 0x43, 0x33, 0x27, 0x97, 0xbd, 0xa0, 0x52, 0x6e, 0x3d, 0xce, 0x19, 0xce, 0xf6, 0xaa, - 0x61, 0x5e, 0xe8, 0xa2, 0xff, 0x2c, 0x67, 0x41, 0x72, 0xf8, 0xa7, 0xe3, 0xe1, 0x2f, 0xc6, 0xec, - 0xa8, 0x89, 0xa8, 0xdd, 0x19, 0x46, 0xa5, 0x3f, 0xb7, 0x21, 0x00, 0xde, 0x0e, 0x39, 0xca, 0x28, - 0xeb, 0x44, 0xcf, 0x84, 0xe2, 0xe7, 0x53, 0xd2, 0xd8, 0x1f, 0xe8, 0xbd, 0x3e, 0x8e, 0x67, 0x05, - 0x1c, 0x17, 0x0e, 0xc4, 0x59, 0xe2, 0x90, 0x9e, 0x79, 0x02, 0x4c, 0x30, 0x49, 0xab, 0x73, 0x7c, - 0x2b, 0xce, 0x1f, 0x51, 0x01, 0x72, 0x6b, 0xd6, 0x1e, 0xae, 0x5b, 0xf9, 0x94, 0xfb, 0xec, 0xf2, - 0x57, 0xb7, 0xf2, 0x69, 0xf4, 0x9a, 0x49, 0x98, 0xf4, 0xa3, 0xf9, 0x7c, 0x21, 0x0d, 0xf9, 0xa2, - 0x8d, 0x75, 0x07, 0x2f, 0xd9, 0xd6, 0x0e, 0xad, 0x91, 0xbc, 0x77, 0xe8, 0xaf, 0x4a, 0xbb, 0x78, - 0xf8, 0x51, 0x76, 0x7a, 0x0b, 0x0b, 0xc1, 0x92, 0x2e, 0x42, 0xa6, 0xbd, 0x45, 0x48, 0xf4, 0x36, - 0x29, 0x97, 0x0f, 0xd9, 0x52, 0x92, 0x6f, 0x6a, 0x9f, 0x49, 0x43, 0xb6, 0xd8, 0xb6, 0x4c, 0xcc, - 0x1f, 0x61, 0x1a, 0x78, 0x56, 0xa6, 0xff, 0x4e, 0x04, 0x7a, 0x76, 0x5a, 0xd6, 0xd6, 0x08, 0x04, - 0xe0, 0x96, 0x2d, 0x29, 0x5b, 0xb9, 0x41, 0x2a, 0x92, 0x74, 0xf2, 0x02, 0xfd, 0x56, 0x1a, 0xa6, - 0x68, 0x5c, 0x9c, 0x42, 0xbb, 0x8d, 0x1e, 0x15, 0x08, 0xb5, 0x4f, 0x44, 0x24, 0xf4, 0x5b, 0xd2, - 0x2e, 0xfa, 0x7e, 0xad, 0x7c, 0xda, 0x31, 0x02, 0x04, 0xc5, 0xf3, 0x18, 0x97, 0xdb, 0x4b, 0x1b, - 0xc8, 0x50, 0xf2, 0xa2, 0xfe, 0xb3, 0xb4, 0x6b, 0x00, 0x98, 0x17, 0xd6, 0x6d, 0xbc, 0x67, 0xe0, - 0x8b, 0xe8, 0xca, 0x40, 0xd8, 0xfb, 0x83, 0x7e, 0xbc, 0x45, 0x7a, 0x11, 0x87, 0x23, 0x19, 0xba, - 0x95, 0x35, 0xdd, 0x0e, 0x32, 0xb1, 0x5e, 0xbc, 0x37, 0x12, 0x0b, 0x47, 0x46, 0xe3, 0xb3, 0x4b, - 0xae, 0xd9, 0x84, 0x73, 0x91, 0xbc, 0x60, 0x3f, 0x32, 0x01, 0x93, 0x1b, 0x66, 0xb7, 0xd3, 0xd6, - 0xbb, 0xdb, 0xe8, 0xdf, 0x14, 0xc8, 0xd1, 0xdb, 0xc0, 0xd0, 0x8f, 0x0b, 0xb1, 0x05, 0x7e, 0x7a, - 0x17, 0xdb, 0x9e, 0x0b, 0x0e, 0x7d, 0xe9, 0x7f, 0x59, 0x39, 0xfa, 0xa0, 0x22, 0x3b, 0x49, 0xf5, - 0x0a, 0xe5, 0xae, 0x85, 0xef, 0x7f, 0x9c, 0xbd, 0x63, 0x34, 0x9d, 0x5d, 0xdb, 0xbf, 0xfa, 0xfa, - 0xf1, 0x72, 0x54, 0xd6, 0xe9, 0x5f, 0x9a, 0xff, 0x3b, 0xd2, 0x61, 0x82, 0x25, 0xee, 0xdb, 0x4e, - 0xda, 0x7f, 0xfe, 0xf6, 0x24, 0xe4, 0x74, 0xdb, 0x31, 0xba, 0x0e, 0xdb, 0x60, 0x65, 0x6f, 0x6e, - 0x77, 0x49, 0x9f, 0x36, 0xec, 0xb6, 0x17, 0x85, 0xc4, 0x4f, 0x40, 0xbf, 0x2d, 0x35, 0x7f, 0x8c, - 0xae, 0x79, 0x3c, 0xc8, 0xef, 0x1d, 0x62, 0x8d, 0xfa, 0x72, 0xb8, 0x4c, 0x2b, 0xd4, 0x4b, 0x0d, - 0x1a, 0xb4, 0xc2, 0x8f, 0x4f, 0xd1, 0x42, 0xef, 0x51, 0xb8, 0xf5, 0xbb, 0x4b, 0xc2, 0x18, 0xc1, - 0xa4, 0x18, 0x8c, 0x11, 0x7e, 0x42, 0xc4, 0x6e, 0xb5, 0xb0, 0x08, 0xab, 0xc8, 0x2f, 0xc2, 0xfe, - 0x86, 0xf4, 0x6e, 0x92, 0x2f, 0xca, 0x01, 0x6b, 0x80, 0x51, 0xb7, 0x05, 0x7d, 0x48, 0x6a, 0x67, - 0x68, 0x50, 0x49, 0x87, 0x08, 0xdb, 0x9b, 0x27, 0x60, 0x62, 0x59, 0x6f, 0xb7, 0xb1, 0x7d, 0xc9, - 0x1d, 0x92, 0xf2, 0x1e, 0x87, 0x6b, 0xba, 0x69, 0x6c, 0xe2, 0xae, 0x13, 0xdd, 0x59, 0xbe, 0x4f, - 0x3a, 0x12, 0x2d, 0x2b, 0x63, 0xbe, 0x97, 0x7e, 0x88, 0xcc, 0x6f, 0x86, 0x8c, 0x61, 0x6e, 0x5a, - 0xac, 0xcb, 0xec, 0x5d, 0xb5, 0xf7, 0x7e, 0x26, 0x53, 0x17, 0x92, 0x51, 0x32, 0x18, 0xad, 0x24, - 0x17, 0xc9, 0xf7, 0x9c, 0xbf, 0x99, 0x81, 0x59, 0x8f, 0x89, 0xb2, 0xd9, 0xc2, 0x0f, 0xf0, 0x4b, - 0x31, 0x2f, 0xcd, 0xc8, 0x1e, 0x07, 0xeb, 0xad, 0x0f, 0x21, 0x15, 0x22, 0xd2, 0x3a, 0x40, 0x53, - 0x77, 0xf0, 0x96, 0x65, 0x1b, 0x7e, 0x7f, 0xf8, 0xa4, 0x38, 0xd4, 0x8a, 0xf4, 0xef, 0x4b, 0x1a, - 0x47, 0x47, 0xbd, 0x13, 0xa6, 0xb1, 0x7f, 0xfe, 0xde, 0x5b, 0xaa, 0x89, 0xc4, 0x8b, 0xcf, 0x8f, - 0xfe, 0x4c, 0xea, 0xd4, 0x99, 0x4c, 0x35, 0xe3, 0x61, 0xd6, 0x18, 0xae, 0x0d, 0x6d, 0x54, 0xd6, - 0x0a, 0x5a, 0x6d, 0xa5, 0xb0, 0xba, 0x5a, 0xae, 0x2c, 0xfb, 0x81, 0x5f, 0x54, 0x98, 0x5b, 0xac, - 0x9e, 0xab, 0x70, 0x91, 0x79, 0x32, 0x68, 0x1d, 0x26, 0x3d, 0x79, 0xf5, 0xf3, 0xc5, 0xe4, 0x65, - 0xc6, 0x7c, 0x31, 0xb9, 0x24, 0xd7, 0x38, 0x33, 0x9a, 0xbe, 0x83, 0x0e, 0x79, 0x46, 0x7f, 0xa0, - 0x43, 0x96, 0xac, 0xa9, 0xa3, 0x77, 0x91, 0x6d, 0xc0, 0x4e, 0x5b, 0x6f, 0x62, 0xb4, 0x13, 0xc3, - 0x1a, 0xf7, 0xae, 0x46, 0x48, 0xef, 0xbb, 0x1a, 0x81, 0x3c, 0x32, 0xab, 0xef, 0x78, 0xbf, 0x75, - 0x7c, 0x8d, 0x66, 0x11, 0x0f, 0x68, 0x45, 0xee, 0xae, 0xd0, 0xe5, 0x7f, 0xc6, 0x66, 0x88, 0x4a, - 0x86, 0xf3, 0x14, 0xcf, 0x12, 0x95, 0xdb, 0x87, 0x89, 0xe2, 0x68, 0x0c, 0xd7, 0x77, 0x67, 0x20, - 0x5b, 0xeb, 0xb4, 0x0d, 0x07, 0xbd, 0x22, 0x3d, 0x12, 0xcc, 0xe8, 0x75, 0x16, 0xca, 0xc0, 0xeb, - 0x2c, 0x82, 0x5d, 0xd7, 0x8c, 0xc4, 0xae, 0x6b, 0x1d, 0x3f, 0xe0, 0x88, 0xbb, 0xae, 0xb7, 0xb1, - 0xe0, 0x6d, 0x74, 0xcf, 0xf6, 0x31, 0x7d, 0x44, 0x4a, 0xaa, 0xd5, 0x27, 0x2a, 0xe0, 0x99, 0x27, - 0xb0, 0xe0, 0x64, 0x00, 0xb9, 0x85, 0x6a, 0xbd, 0x5e, 0x5d, 0xcb, 0x1f, 0x21, 0x51, 0x6d, 0xaa, - 0xeb, 0x34, 0x54, 0x4c, 0xb9, 0x52, 0x29, 0x69, 0xf9, 0x34, 0x09, 0x97, 0x56, 0xae, 0xaf, 0x96, - 0xf2, 0x8a, 0x18, 0xdb, 0x3c, 0xd2, 0xfc, 0x16, 0xcb, 0x4e, 0x52, 0xbd, 0xe4, 0x0c, 0xf1, 0x70, - 0x7e, 0x92, 0x57, 0xae, 0x5f, 0x51, 0x20, 0xbb, 0x86, 0xed, 0x2d, 0x8c, 0x7e, 0x3a, 0xc6, 0x26, - 0xdf, 0xa6, 0x61, 0x77, 0x69, 0x70, 0xb9, 0x60, 0x93, 0x8f, 0x4f, 0x53, 0xaf, 0x83, 0xd9, 0x2e, - 0x6e, 0x5a, 0x66, 0xcb, 0xcb, 0x44, 0xfb, 0x23, 0x31, 0x51, 0xbc, 0x57, 0x5e, 0x02, 0x32, 0xc2, - 0xe8, 0x48, 0x76, 0xea, 0xe2, 0x00, 0xd3, 0xaf, 0xd4, 0xe4, 0x81, 0xf9, 0xae, 0xe2, 0xfe, 0xd4, - 0xb9, 0x84, 0x5e, 0x2e, 0xbd, 0xfb, 0x7a, 0x13, 0xe4, 0x88, 0x9a, 0x7a, 0x63, 0x74, 0xff, 0xfe, - 0x98, 0xe5, 0x51, 0x17, 0xe0, 0x58, 0x17, 0xb7, 0x71, 0xd3, 0xc1, 0x2d, 0xb7, 0xe9, 0x6a, 0x03, - 0x3b, 0x85, 0xfd, 0xd9, 0xd1, 0x9f, 0xf0, 0x00, 0xde, 0x21, 0x02, 0x78, 0x7d, 0x1f, 0x51, 0xba, - 0x15, 0x0a, 0xb7, 0x95, 0xdd, 0x6a, 0xd4, 0xda, 0x96, 0xbf, 0x28, 0xee, 0xbd, 0xbb, 0xdf, 0xb6, - 0x9d, 0x9d, 0x36, 0xf9, 0xc6, 0x0e, 0x18, 0x78, 0xef, 0xea, 0x3c, 0x4c, 0xe8, 0xe6, 0x25, 0xf2, - 0x29, 0x13, 0x51, 0x6b, 0x2f, 0x13, 0x7a, 0x8d, 0x8f, 0xfc, 0x5d, 0x02, 0xf2, 0x8f, 0x93, 0x63, - 0x37, 0x79, 0xe0, 0x7f, 0x6e, 0x02, 0xb2, 0xeb, 0x7a, 0xd7, 0xc1, 0xe8, 0xff, 0x56, 0x64, 0x91, - 0xbf, 0x1e, 0xe6, 0x36, 0xad, 0xe6, 0x6e, 0x17, 0xb7, 0xc4, 0x46, 0xd9, 0x93, 0x3a, 0x0a, 0xcc, - 0xd5, 0x1b, 0x21, 0xef, 0x25, 0x32, 0xb2, 0xde, 0x36, 0xfc, 0xbe, 0x74, 0x12, 0x29, 0xbb, 0xbb, - 0xae, 0xdb, 0x4e, 0x75, 0x93, 0xa4, 0xf9, 0x91, 0xb2, 0xf9, 0x44, 0x01, 0xfa, 0x5c, 0x04, 0xf4, - 0x13, 0xe1, 0xd0, 0x4f, 0x4a, 0x40, 0xaf, 0x16, 0x60, 0x72, 0xd3, 0x68, 0x63, 0xf2, 0xc3, 0x14, - 0xf9, 0xa1, 0xdf, 0x98, 0x44, 0x64, 0xef, 0x8f, 0x49, 0x4b, 0x46, 0x1b, 0x6b, 0xfe, 0x6f, 0xde, - 0x44, 0x06, 0x82, 0x89, 0xcc, 0x2a, 0xf5, 0xa7, 0x75, 0x0d, 0x2f, 0x53, 0xdf, 0xc1, 0xde, 0xe2, - 0x9b, 0xc9, 0x0e, 0xb7, 0xb4, 0x74, 0x47, 0x27, 0x60, 0xcc, 0x68, 0xe4, 0x59, 0xf4, 0x0b, 0x51, - 0x7a, 0xfd, 0x42, 0x9e, 0xa7, 0xc4, 0xeb, 0x11, 0x3d, 0x66, 0x43, 0x5a, 0xd4, 0x79, 0x0f, 0x20, - 0x6a, 0x29, 0xfa, 0xef, 0x2e, 0x30, 0x4d, 0xdd, 0xc6, 0xce, 0x3a, 0xef, 0x89, 0x91, 0xd5, 0xc4, - 0x44, 0xe2, 0xca, 0xd7, 0xad, 0xe9, 0x3b, 0x98, 0x14, 0x56, 0x74, 0xbf, 0x31, 0x17, 0xad, 0x7d, - 0xe9, 0x41, 0xff, 0x9b, 0x1d, 0x75, 0xff, 0xdb, 0xaf, 0x8e, 0xc9, 0x37, 0xc3, 0xd7, 0x67, 0x40, - 0x29, 0xee, 0x3a, 0x8f, 0xe8, 0xee, 0xf7, 0x07, 0xd2, 0x7e, 0x2e, 0xac, 0x3f, 0x0b, 0xbd, 0x48, - 0x7e, 0x4c, 0xbd, 0x6f, 0x4c, 0x2d, 0x91, 0xf3, 0xa7, 0x09, 0xab, 0x5b, 0xf2, 0x3a, 0xf2, 0x76, - 0xc5, 0x77, 0xb0, 0x7c, 0x30, 0x75, 0x70, 0xd3, 0x1c, 0xd1, 0xfe, 0x89, 0xeb, 0x19, 0xfc, 0x77, - 0xaf, 0xe3, 0xc9, 0x08, 0xb1, 0xfa, 0xc8, 0xf6, 0x3a, 0x11, 0xe5, 0x8c, 0x46, 0x5f, 0xd0, 0x2b, - 0xa5, 0xdd, 0xce, 0xa9, 0xd8, 0x22, 0x5d, 0x09, 0xe3, 0xd9, 0x54, 0x72, 0x97, 0x85, 0x46, 0x14, - 0x9b, 0x3c, 0x60, 0xdf, 0xe1, 0x5d, 0x05, 0x0b, 0x07, 0x46, 0x0c, 0xbd, 0x56, 0x7a, 0x3b, 0x8a, - 0x56, 0x7b, 0xc0, 0x7a, 0x61, 0x3c, 0x79, 0xcb, 0x6d, 0x56, 0x45, 0x16, 0x9c, 0xbc, 0xc4, 0xbf, - 0xad, 0x40, 0x8e, 0x6e, 0x41, 0xa2, 0xb7, 0xa6, 0x62, 0xdc, 0xb2, 0xee, 0x88, 0x2e, 0x84, 0xfe, - 0x7b, 0x9c, 0x35, 0x07, 0xc1, 0xd5, 0x30, 0x13, 0xcb, 0xd5, 0x50, 0x3c, 0xc7, 0x29, 0xd1, 0x8e, - 0x68, 0x1d, 0x13, 0x9e, 0x4e, 0xc6, 0x69, 0x61, 0x7d, 0x19, 0x4a, 0x1e, 0xef, 0x17, 0x64, 0x61, - 0x86, 0x16, 0x7d, 0xce, 0x68, 0x6d, 0x61, 0x07, 0xbd, 0x27, 0xfd, 0xc3, 0x83, 0xba, 0x5a, 0x81, - 0x99, 0x8b, 0x84, 0xed, 0x55, 0xfd, 0x92, 0xb5, 0xeb, 0xb0, 0x95, 0x8b, 0x1b, 0x23, 0xd7, 0x3d, - 0x68, 0x3d, 0xe7, 0xe9, 0x1f, 0x9a, 0xf0, 0xbf, 0x2b, 0x63, 0xba, 0xe0, 0x4f, 0x1d, 0xb8, 0x72, - 0xc4, 0xc8, 0xe2, 0x93, 0xd4, 0x93, 0x90, 0xdb, 0x33, 0xf0, 0xc5, 0x72, 0x8b, 0x59, 0xb7, 0xec, - 0x0d, 0xfd, 0xae, 0xf4, 0xbe, 0x2d, 0x0f, 0x37, 0xe3, 0x25, 0x59, 0x2d, 0x94, 0xdb, 0xbd, 0x1d, - 0xc8, 0xd6, 0x18, 0xce, 0x14, 0x8b, 0x97, 0x71, 0x16, 0x63, 0x28, 0x62, 0x98, 0xe1, 0x2c, 0x86, - 0xf2, 0x88, 0x3c, 0xb1, 0x42, 0x05, 0x30, 0xe2, 0x7b, 0x3a, 0xe5, 0xe2, 0x4b, 0x0c, 0x28, 0x3a, - 0x79, 0xc9, 0xbf, 0x41, 0x81, 0xa9, 0x1a, 0x76, 0x96, 0x0c, 0xdc, 0x6e, 0x75, 0x91, 0x7d, 0x70, - 0xd3, 0xe8, 0x66, 0xc8, 0x6d, 0x12, 0x62, 0x83, 0xce, 0x2d, 0xb0, 0x6c, 0xe8, 0xf5, 0x69, 0xd9, - 0x1d, 0x61, 0xb6, 0xfa, 0xe6, 0x71, 0x3b, 0x12, 0x98, 0xe4, 0x3c, 0x7a, 0xa3, 0x4b, 0x1e, 0x43, - 0x60, 0x5b, 0x05, 0x66, 0xd8, 0xed, 0x7d, 0x85, 0xb6, 0xb1, 0x65, 0xa2, 0xdd, 0x11, 0xb4, 0x10, - 0xf5, 0x16, 0xc8, 0xea, 0x2e, 0x35, 0xb6, 0xf5, 0x8a, 0xfa, 0x76, 0x9e, 0xa4, 0x3c, 0x8d, 0x66, - 0x8c, 0x11, 0x46, 0x32, 0x50, 0x6c, 0x8f, 0xe7, 0x31, 0x86, 0x91, 0x1c, 0x58, 0x78, 0xf2, 0x88, - 0x7d, 0x55, 0x81, 0xe3, 0x8c, 0x81, 0xb3, 0xd8, 0x76, 0x8c, 0xa6, 0xde, 0xa6, 0xc8, 0xbd, 0x28, - 0x35, 0x0a, 0xe8, 0x56, 0x60, 0x76, 0x8f, 0x27, 0xcb, 0x20, 0x3c, 0xd3, 0x17, 0x42, 0x81, 0x01, - 0x4d, 0xfc, 0x31, 0x46, 0x38, 0x3e, 0x41, 0xaa, 0x02, 0xcd, 0x31, 0x86, 0xe3, 0x93, 0x66, 0x22, - 0x79, 0x88, 0x5f, 0xc6, 0x42, 0xf3, 0x04, 0xdd, 0xe7, 0x17, 0xa5, 0xb1, 0xdd, 0x80, 0x69, 0x82, - 0x25, 0xfd, 0x91, 0x2d, 0x43, 0x44, 0x28, 0xb1, 0xdf, 0xef, 0xb0, 0x0b, 0xc3, 0xfc, 0x7f, 0x35, - 0x9e, 0x0e, 0x3a, 0x07, 0x10, 0x7c, 0xe2, 0x3b, 0xe9, 0x54, 0x58, 0x27, 0x9d, 0x96, 0xeb, 0xa4, - 0xdf, 0x22, 0x1d, 0x2c, 0xa5, 0x3f, 0xdb, 0x07, 0x57, 0x0f, 0xb9, 0x30, 0x19, 0x83, 0x4b, 0x4f, - 0x5e, 0x2f, 0x5e, 0x93, 0xe9, 0xbd, 0xa6, 0xfd, 0xe3, 0x23, 0x99, 0x4f, 0xf1, 0xfd, 0x81, 0xd2, - 0xd3, 0x1f, 0x1c, 0xc0, 0x92, 0xbe, 0x01, 0x8e, 0xd2, 0x22, 0x8a, 0x3e, 0x5b, 0x59, 0x1a, 0x0a, - 0xa2, 0x27, 0x19, 0x7d, 0x62, 0x08, 0x25, 0x18, 0x74, 0x87, 0x7c, 0x54, 0x27, 0x17, 0xcf, 0xd8, - 0x8d, 0xab, 0x20, 0x87, 0x77, 0xf5, 0xfc, 0xb7, 0x32, 0xd4, 0xda, 0xdd, 0x20, 0x77, 0xba, 0xa1, - 0x3f, 0xcf, 0x8c, 0x62, 0x44, 0xb8, 0x1b, 0x32, 0xc4, 0xc5, 0x5d, 0x09, 0x5d, 0xd2, 0x08, 0x8a, - 0x0c, 0x2e, 0xdc, 0xc3, 0x0f, 0x38, 0x2b, 0x47, 0x34, 0xf2, 0xa7, 0x7a, 0x23, 0x1c, 0x3d, 0xaf, - 0x37, 0x2f, 0x6c, 0xd9, 0xd6, 0x2e, 0xb9, 0xfd, 0xca, 0x62, 0xd7, 0x68, 0x91, 0xeb, 0x08, 0xc5, - 0x0f, 0xea, 0xad, 0x9e, 0xe9, 0x90, 0x1d, 0x64, 0x3a, 0xac, 0x1c, 0x61, 0xc6, 0x83, 0xfa, 0x04, - 0xbf, 0xd3, 0xc9, 0x45, 0x76, 0x3a, 0x2b, 0x47, 0xbc, 0x6e, 0x47, 0x5d, 0x84, 0xc9, 0x96, 0xb1, - 0x47, 0xb6, 0xaa, 0xc9, 0xac, 0x6b, 0xd0, 0xd1, 0xe5, 0x45, 0x63, 0x8f, 0x6e, 0x6c, 0xaf, 0x1c, - 0xd1, 0xfc, 0x3f, 0xd5, 0x65, 0x98, 0x22, 0xdb, 0x02, 0x84, 0xcc, 0x64, 0xac, 0x63, 0xc9, 0x2b, - 0x47, 0xb4, 0xe0, 0x5f, 0xd7, 0xfa, 0xc8, 0x90, 0xb3, 0x1f, 0x77, 0x79, 0xdb, 0xed, 0xa9, 0x58, - 0xdb, 0xed, 0xae, 0x2c, 0xe8, 0x86, 0xfb, 0x49, 0xc8, 0x36, 0x89, 0x84, 0xd3, 0x4c, 0xc2, 0xf4, - 0x55, 0xbd, 0x03, 0x32, 0x3b, 0xba, 0xed, 0x4d, 0x9e, 0xaf, 0x1f, 0x4c, 0x77, 0x4d, 0xb7, 0x2f, - 0xb8, 0x08, 0xba, 0x7f, 0x2d, 0x4c, 0x40, 0x96, 0x08, 0xce, 0x7f, 0x40, 0x6f, 0xcf, 0x50, 0x33, - 0xa4, 0x68, 0x99, 0xee, 0xb0, 0x5f, 0xb7, 0xbc, 0x03, 0x32, 0xbf, 0x9b, 0x1a, 0x8d, 0x05, 0xd9, - 0xf7, 0x5e, 0x73, 0x25, 0xf4, 0x5e, 0xf3, 0x9e, 0x0b, 0x76, 0x33, 0xbd, 0x17, 0xec, 0x06, 0xcb, - 0x07, 0xd9, 0xc1, 0x8e, 0x2a, 0x7f, 0x32, 0x84, 0xe9, 0xd2, 0x2b, 0x88, 0xf0, 0x19, 0x78, 0xdb, - 0x30, 0xb9, 0x3a, 0x7b, 0xaf, 0x31, 0x3b, 0xa5, 0xb8, 0x46, 0xcd, 0x00, 0xf6, 0x92, 0xef, 0x9b, - 0x7e, 0x3d, 0x03, 0xa7, 0xe8, 0x35, 0xce, 0x7b, 0xb8, 0x6e, 0x89, 0xf7, 0x4d, 0xa2, 0x3f, 0x1c, - 0x89, 0xd2, 0xf4, 0x19, 0x70, 0x94, 0xbe, 0x03, 0xce, 0xbe, 0x43, 0xca, 0x99, 0x01, 0x87, 0x94, - 0xb3, 0xf1, 0x56, 0x0e, 0x3f, 0xcc, 0xeb, 0xcf, 0xba, 0xa8, 0x3f, 0xb7, 0x87, 0x00, 0xd4, 0x4f, - 0x2e, 0x23, 0xb1, 0x6f, 0xde, 0xe5, 0x6b, 0x4a, 0x4d, 0xd0, 0x94, 0xbb, 0x86, 0x67, 0x24, 0x79, - 0x6d, 0xf9, 0x9d, 0x0c, 0x5c, 0x16, 0x30, 0x53, 0xc1, 0x17, 0x99, 0xa2, 0x7c, 0x61, 0x24, 0x8a, - 0x12, 0x3f, 0x06, 0x42, 0xd2, 0x1a, 0xf3, 0x47, 0xd2, 0x67, 0x87, 0x7a, 0x81, 0xf2, 0x65, 0x13, - 0xa2, 0x2c, 0x27, 0x21, 0x47, 0x7b, 0x18, 0x06, 0x0d, 0x7b, 0x8b, 0xd9, 0xdd, 0xc8, 0x9d, 0x38, - 0x92, 0xe5, 0x6d, 0x0c, 0xfa, 0xc3, 0xd6, 0x35, 0xea, 0xbb, 0xb6, 0x59, 0x36, 0x1d, 0x0b, 0xfd, - 0xec, 0x48, 0x14, 0xc7, 0xf7, 0x86, 0x53, 0x86, 0xf1, 0x86, 0x1b, 0x6a, 0x95, 0xc3, 0xab, 0xc1, - 0xa1, 0xac, 0x72, 0x84, 0x14, 0x9e, 0x3c, 0x7e, 0xef, 0x54, 0xe0, 0x24, 0x9b, 0x6c, 0x2d, 0x88, - 0x16, 0x22, 0xba, 0x6f, 0x14, 0x40, 0x1e, 0xf7, 0xcc, 0x24, 0x76, 0xcb, 0x19, 0x79, 0x11, 0x4f, - 0x4a, 0x45, 0xde, 0xef, 0x20, 0x4c, 0x07, 0x7b, 0x38, 0x1c, 0x09, 0x52, 0x72, 0xd7, 0x3a, 0xc4, - 0x60, 0x23, 0x79, 0xcc, 0x5e, 0xa2, 0x40, 0x8e, 0x5d, 0xdf, 0xbf, 0x91, 0x88, 0xc3, 0x84, 0x18, - 0xe5, 0x59, 0x62, 0x47, 0x2e, 0xf6, 0x25, 0xf7, 0xc9, 0xed, 0xc5, 0x1d, 0xd2, 0x2d, 0xf6, 0xdf, - 0x4d, 0xc3, 0x74, 0x0d, 0x3b, 0x45, 0xdd, 0xb6, 0x0d, 0x7d, 0x6b, 0x54, 0x1e, 0xdf, 0xb2, 0xde, - 0xc3, 0xe8, 0x7b, 0x29, 0xd9, 0xf3, 0x34, 0xfe, 0x42, 0xb8, 0xc7, 0x6a, 0x48, 0x2c, 0xc1, 0x87, - 0xa5, 0xce, 0xcc, 0x0c, 0xa2, 0x36, 0x06, 0x8f, 0xed, 0x34, 0x4c, 0x78, 0x67, 0xf1, 0x6e, 0x16, - 0xce, 0x67, 0x6e, 0x3b, 0x3b, 0xde, 0x31, 0x18, 0xf2, 0xbc, 0xff, 0x0c, 0x18, 0x7a, 0x75, 0x4c, - 0x47, 0xf9, 0xe8, 0x83, 0x84, 0xf1, 0xda, 0x58, 0x1c, 0x77, 0xf8, 0xc3, 0x3a, 0x3a, 0xf8, 0x5b, - 0x13, 0x6c, 0x39, 0x72, 0x55, 0x77, 0xf0, 0x03, 0xe8, 0x8b, 0x0a, 0x4c, 0xd4, 0xb0, 0xe3, 0x8e, - 0xb7, 0xc2, 0xe5, 0xa6, 0xc3, 0x6a, 0xb8, 0xca, 0xad, 0x78, 0x4c, 0xb1, 0x35, 0x8c, 0x7b, 0x60, - 0xaa, 0x63, 0x5b, 0x4d, 0xdc, 0xed, 0xb2, 0xd5, 0x0b, 0xde, 0x51, 0xad, 0xdf, 0xe8, 0x4f, 0x58, - 0x9b, 0x5f, 0xf7, 0xfe, 0xd1, 0x82, 0xdf, 0xe3, 0x9a, 0x01, 0x94, 0x12, 0xab, 0xe0, 0xb8, 0xcd, - 0x80, 0xa8, 0xc2, 0x93, 0x07, 0xfa, 0x73, 0x0a, 0xcc, 0xd4, 0xb0, 0xe3, 0x4b, 0x31, 0xc6, 0x26, - 0x47, 0x38, 0xbc, 0x02, 0x94, 0xca, 0xc1, 0xa0, 0x94, 0xbf, 0x1a, 0x50, 0x94, 0xa6, 0x4f, 0x6c, - 0x8c, 0x57, 0x03, 0xca, 0x71, 0x30, 0x86, 0xe3, 0x6b, 0x8f, 0x81, 0x29, 0xc2, 0x0b, 0x69, 0xb0, - 0xbf, 0x90, 0x09, 0x1a, 0xef, 0x97, 0x12, 0x6a, 0xbc, 0x77, 0x42, 0x76, 0x47, 0xb7, 0x2f, 0x74, - 0x49, 0xc3, 0x9d, 0x96, 0x31, 0xdb, 0xd7, 0xdc, 0xec, 0x1a, 0xfd, 0xab, 0xbf, 0x9f, 0x66, 0x36, - 0x9e, 0x9f, 0xe6, 0xc3, 0xe9, 0x58, 0x23, 0x21, 0x9d, 0x3b, 0x8c, 0xb0, 0xc9, 0xc7, 0x18, 0x37, - 0x23, 0xca, 0x4e, 0x5e, 0x39, 0x5e, 0xa4, 0xc0, 0xa4, 0x3b, 0x6e, 0x13, 0x7b, 0xfc, 0xdc, 0xc1, - 0xd5, 0xa1, 0xbf, 0xa1, 0x1f, 0xb3, 0x07, 0xf6, 0x24, 0x32, 0x3a, 0xf3, 0x3e, 0x46, 0x0f, 0x1c, - 0x55, 0x78, 0xf2, 0x78, 0xbc, 0x9b, 0xe2, 0x41, 0xda, 0x03, 0x7a, 0x93, 0x02, 0xca, 0x32, 0x76, - 0xc6, 0x6d, 0x45, 0xbe, 0x43, 0x3a, 0xc4, 0x91, 0x20, 0x30, 0xc2, 0xf3, 0xfc, 0x32, 0x1e, 0x4d, - 0x03, 0x92, 0x8b, 0x6d, 0x24, 0xc5, 0x40, 0xf2, 0xa8, 0xbd, 0x9f, 0xa2, 0x46, 0x37, 0x17, 0x7e, - 0x66, 0x04, 0xbd, 0xea, 0x78, 0x17, 0x3e, 0x3c, 0x01, 0x12, 0x1a, 0x87, 0xd5, 0xde, 0xfa, 0x15, - 0x3e, 0x96, 0xab, 0xf8, 0xc0, 0x6d, 0xec, 0xdb, 0xb8, 0x79, 0x01, 0xb7, 0xd0, 0x4f, 0x1e, 0x1c, - 0xba, 0x53, 0x30, 0xd1, 0xa4, 0xd4, 0x08, 0x78, 0x93, 0x9a, 0xf7, 0x1a, 0xe3, 0x5e, 0x69, 0xb1, - 0x23, 0xa2, 0xbf, 0x8f, 0xf1, 0x5e, 0x69, 0x89, 0xe2, 0xc7, 0x60, 0xb6, 0xd0, 0x59, 0x46, 0xb9, - 0x69, 0x99, 0xe8, 0xbf, 0x1c, 0x1c, 0x96, 0xab, 0x60, 0xca, 0x68, 0x5a, 0x26, 0x09, 0x43, 0xe1, - 0x1d, 0x02, 0xf2, 0x13, 0xbc, 0xaf, 0xa5, 0x1d, 0xeb, 0x7e, 0x83, 0xed, 0x9a, 0x07, 0x09, 0xc3, - 0x1a, 0x13, 0x2e, 0xeb, 0x87, 0x65, 0x4c, 0xf4, 0x29, 0x3b, 0x79, 0xc8, 0x3e, 0x11, 0x78, 0xb7, - 0xd1, 0xae, 0xf0, 0x11, 0xb1, 0x0a, 0x3c, 0xcc, 0x70, 0xc6, 0xd7, 0xe2, 0x50, 0x86, 0xb3, 0x08, - 0x06, 0xc6, 0x70, 0x63, 0x45, 0x80, 0x63, 0xe2, 0x6b, 0xc0, 0x07, 0x40, 0x67, 0x74, 0xe6, 0xe1, - 0x90, 0xe8, 0x1c, 0x8e, 0x89, 0xf8, 0x21, 0x16, 0x22, 0x93, 0x59, 0x3c, 0xe8, 0xbf, 0x8e, 0x02, - 0x9c, 0xdb, 0x87, 0xf1, 0x57, 0xa0, 0xde, 0x0a, 0x31, 0x6e, 0xc4, 0xde, 0x27, 0x41, 0x97, 0xca, - 0x18, 0xef, 0x8a, 0x97, 0x29, 0x3f, 0x79, 0x00, 0x5f, 0xa8, 0xc0, 0x1c, 0xf1, 0x11, 0x68, 0x63, - 0xdd, 0xa6, 0x1d, 0xe5, 0x48, 0x1c, 0xe5, 0xdf, 0x2d, 0x1d, 0xe0, 0x47, 0x94, 0x43, 0xc0, 0xc7, - 0x48, 0xa0, 0x90, 0x8b, 0xee, 0x23, 0xc9, 0xc2, 0x58, 0xb6, 0x51, 0xf2, 0x3e, 0x0b, 0x4c, 0xc5, - 0x47, 0x83, 0x47, 0x4c, 0x8f, 0x5c, 0x51, 0x18, 0x5e, 0x63, 0x1b, 0xb3, 0x47, 0xae, 0x0c, 0x13, - 0xc9, 0x63, 0xf2, 0xa6, 0x5b, 0xd8, 0x82, 0x73, 0x9d, 0x5c, 0x18, 0xff, 0xda, 0x8c, 0x7f, 0xa2, - 0xed, 0x73, 0x23, 0xf1, 0xc0, 0x3c, 0x40, 0x40, 0x7c, 0x15, 0x32, 0xb6, 0x75, 0x91, 0x2e, 0x6d, - 0xcd, 0x6a, 0xe4, 0x99, 0x5e, 0x4f, 0xd9, 0xde, 0xdd, 0x31, 0xe9, 0xc9, 0xd0, 0x59, 0xcd, 0x7b, - 0x55, 0xaf, 0x83, 0xd9, 0x8b, 0x86, 0xb3, 0xbd, 0x82, 0xf5, 0x16, 0xb6, 0x35, 0xeb, 0x22, 0xf1, - 0x98, 0x9b, 0xd4, 0xc4, 0x44, 0xd1, 0x7f, 0x45, 0xc2, 0xbe, 0x24, 0xb7, 0xc8, 0x8f, 0xe5, 0xf8, - 0x5b, 0x1c, 0xcb, 0x33, 0x9c, 0xab, 0xe4, 0x15, 0xe6, 0x03, 0x0a, 0x4c, 0x69, 0xd6, 0x45, 0xa6, - 0x24, 0xff, 0xc7, 0xe1, 0xea, 0x48, 0xec, 0x89, 0x1e, 0x91, 0x9c, 0xcf, 0xfe, 0xd8, 0x27, 0x7a, - 0x91, 0xc5, 0x8f, 0xe5, 0xe4, 0xd2, 0x8c, 0x66, 0x5d, 0xac, 0x61, 0x87, 0xb6, 0x08, 0xd4, 0x18, - 0x91, 0x93, 0xb5, 0xd1, 0xa5, 0x04, 0xd9, 0x3c, 0xdc, 0x7f, 0x8f, 0xbb, 0x8b, 0xe0, 0x0b, 0xc8, - 0x67, 0x71, 0xdc, 0xbb, 0x08, 0x03, 0x39, 0x18, 0x43, 0x8c, 0x14, 0x05, 0xa6, 0x35, 0xeb, 0xa2, - 0x3b, 0x34, 0x2c, 0x19, 0xed, 0xf6, 0x68, 0x46, 0xc8, 0xb8, 0xc6, 0xbf, 0x27, 0x06, 0x8f, 0x8b, - 0xb1, 0x1b, 0xff, 0x03, 0x18, 0x48, 0x1e, 0x86, 0xe7, 0xd1, 0xc6, 0xe2, 0x8d, 0xd0, 0xe6, 0x68, - 0x70, 0x18, 0xb6, 0x41, 0xf8, 0x6c, 0x1c, 0x5a, 0x83, 0x08, 0xe3, 0x60, 0x2c, 0x3b, 0x27, 0x73, - 0x45, 0x32, 0xcc, 0x8f, 0xb6, 0x4d, 0xbc, 0x37, 0x9e, 0x6b, 0x22, 0x1b, 0x76, 0x05, 0x46, 0x46, - 0x82, 0x46, 0x0c, 0x17, 0x44, 0x09, 0x1e, 0x92, 0xc7, 0xe3, 0xa3, 0x0a, 0xcc, 0x50, 0x16, 0x1e, - 0x21, 0x56, 0xc0, 0x50, 0x8d, 0x8a, 0xaf, 0xc1, 0xe1, 0x34, 0xaa, 0x08, 0x0e, 0xc6, 0x72, 0x2b, - 0xa8, 0x6b, 0xc7, 0x0d, 0x71, 0x7c, 0x3c, 0x0c, 0xc1, 0xa1, 0x8d, 0xb1, 0x11, 0x1e, 0x21, 0x1f, - 0xc6, 0x18, 0x3b, 0xa4, 0x63, 0xe4, 0xcf, 0xf3, 0x5b, 0xd1, 0x28, 0x31, 0x38, 0x40, 0x53, 0x18, - 0x21, 0x0c, 0x43, 0x36, 0x85, 0x43, 0x42, 0xe2, 0x6b, 0x0a, 0x00, 0x65, 0x60, 0xcd, 0xda, 0x23, - 0x97, 0xf9, 0x8c, 0xa0, 0x3b, 0xeb, 0x75, 0xab, 0x57, 0x06, 0xb8, 0xd5, 0xc7, 0x0c, 0xe1, 0x12, - 0x77, 0x25, 0x90, 0x93, 0xb2, 0x5b, 0xc9, 0xb1, 0xaf, 0x04, 0x46, 0x97, 0x9f, 0x3c, 0xc6, 0x5f, - 0xa1, 0xd6, 0x5c, 0x70, 0xc0, 0xf4, 0xd7, 0x46, 0x82, 0x32, 0x37, 0xfb, 0x57, 0xc4, 0xd9, 0xff, - 0x01, 0xb0, 0x1d, 0xd6, 0x46, 0x1c, 0x74, 0x70, 0x34, 0x79, 0x1b, 0xf1, 0xf0, 0x0e, 0x88, 0xfe, - 0x4c, 0x06, 0x8e, 0xb2, 0x4e, 0xe4, 0x87, 0x01, 0xe2, 0x98, 0xe7, 0xf0, 0x84, 0x4e, 0x72, 0x00, - 0xca, 0xa3, 0x5a, 0x90, 0x8a, 0xb3, 0x94, 0x29, 0xc1, 0xde, 0x58, 0x56, 0x37, 0x72, 0xa5, 0x07, - 0x3a, 0xba, 0xd9, 0x92, 0x0f, 0xf7, 0x3b, 0x00, 0x78, 0x6f, 0xad, 0x51, 0x11, 0xd7, 0x1a, 0xfb, - 0xac, 0x4c, 0xc6, 0xde, 0xb9, 0x26, 0x22, 0xa3, 0xec, 0x8e, 0x7d, 0xe7, 0x3a, 0xbc, 0xec, 0xe4, - 0x51, 0x7a, 0xaf, 0x02, 0x99, 0x9a, 0x65, 0x3b, 0xe8, 0xf9, 0x71, 0x5a, 0x27, 0x95, 0x7c, 0x00, - 0x92, 0xf7, 0xae, 0x16, 0x85, 0x5b, 0x9a, 0x6f, 0x8e, 0x3e, 0xea, 0xac, 0x3b, 0x3a, 0xf1, 0xea, - 0x76, 0xcb, 0xe7, 0xae, 0x6b, 0x8e, 0x1b, 0x4f, 0x87, 0xca, 0xaf, 0x16, 0x7e, 0x00, 0x23, 0xb1, - 0x78, 0x3a, 0xa1, 0x25, 0x27, 0x8f, 0xdb, 0x43, 0x47, 0x99, 0x6f, 0xeb, 0x92, 0xd1, 0xc6, 0xe8, - 0xf9, 0xd4, 0x65, 0xa4, 0xa2, 0xef, 0x60, 0xf9, 0x23, 0x31, 0x91, 0xae, 0xad, 0x24, 0xbe, 0xac, - 0x12, 0xc4, 0x97, 0x8d, 0xdb, 0xa0, 0xe8, 0x01, 0x74, 0xca, 0xd2, 0xb8, 0x1b, 0x54, 0x44, 0xd9, - 0x63, 0x89, 0xd3, 0x79, 0xac, 0x86, 0x1d, 0x6a, 0x54, 0x56, 0xbd, 0x1b, 0x58, 0x7e, 0x6a, 0x24, - 0x11, 0x3b, 0xfd, 0x0b, 0x5e, 0x94, 0x9e, 0x0b, 0x5e, 0x3e, 0xc0, 0x83, 0xb3, 0x26, 0x82, 0xf3, - 0x94, 0x70, 0x01, 0x89, 0x4c, 0x8e, 0x04, 0xa6, 0x77, 0xf8, 0x30, 0xad, 0x0b, 0x30, 0xdd, 0x31, - 0x24, 0x17, 0xc9, 0x03, 0xf6, 0x8b, 0x59, 0x38, 0x4a, 0x27, 0xfd, 0x05, 0xb3, 0xc5, 0x22, 0xac, - 0xbe, 0x35, 0x7d, 0xc8, 0x9b, 0x6d, 0xfb, 0x43, 0xb0, 0x0a, 0xb1, 0x9c, 0xb3, 0xbd, 0xb7, 0xe3, - 0x2f, 0xd0, 0x70, 0xae, 0x6e, 0x27, 0x4a, 0x76, 0xda, 0xe4, 0x6f, 0xc8, 0xf7, 0xff, 0x13, 0xef, - 0x32, 0x9a, 0x90, 0xbf, 0xcb, 0xe8, 0x8f, 0xe3, 0xad, 0xdb, 0x91, 0xa2, 0x7b, 0x04, 0x9e, 0xb0, - 0xed, 0x14, 0x63, 0x45, 0x4f, 0x82, 0xbb, 0x1f, 0x0d, 0x77, 0xb2, 0x20, 0x82, 0xc8, 0x90, 0xee, - 0x64, 0x84, 0xc0, 0x61, 0xba, 0x93, 0x0d, 0x62, 0x60, 0x0c, 0xb7, 0xda, 0x67, 0xd9, 0x6e, 0x3e, - 0x69, 0x37, 0xe8, 0x2f, 0xd3, 0x89, 0x8f, 0xd2, 0xdf, 0x4f, 0xc5, 0xf2, 0x7f, 0x26, 0x7c, 0x45, - 0x0f, 0xd3, 0x71, 0x3c, 0x9a, 0xa3, 0xc8, 0x8d, 0x61, 0xdd, 0x28, 0x4d, 0x7c, 0xd1, 0xcf, 0x19, - 0x2d, 0x67, 0x7b, 0x44, 0x27, 0x3a, 0x2e, 0xba, 0xb4, 0xbc, 0xeb, 0x91, 0xc9, 0x0b, 0xfa, 0xd7, - 0x54, 0xac, 0x10, 0x52, 0xbe, 0x48, 0x08, 0x5b, 0x21, 0x22, 0x8e, 0x11, 0xf8, 0x29, 0x92, 0xde, - 0x18, 0x35, 0xfa, 0xac, 0xd1, 0xc2, 0xd6, 0x23, 0x50, 0xa3, 0x09, 0x5f, 0xa3, 0xd3, 0xe8, 0x28, - 0x72, 0x3f, 0xa2, 0x1a, 0xed, 0x8b, 0x64, 0x44, 0x1a, 0x1d, 0x49, 0x2f, 0x79, 0x19, 0xbf, 0x7a, - 0x86, 0x4d, 0xa4, 0x56, 0x0d, 0xf3, 0x02, 0xfa, 0xe7, 0x9c, 0x77, 0x31, 0xf3, 0x39, 0xc3, 0xd9, - 0x66, 0xb1, 0x60, 0x7e, 0x47, 0xfa, 0x6e, 0x94, 0x21, 0xe2, 0xbd, 0x88, 0xe1, 0xa4, 0xb2, 0xfb, - 0xc2, 0x49, 0x15, 0x60, 0xd6, 0x30, 0x1d, 0x6c, 0x9b, 0x7a, 0x7b, 0xa9, 0xad, 0x6f, 0x75, 0x4f, - 0x4d, 0xf4, 0xbd, 0xbc, 0xae, 0xcc, 0xe5, 0xd1, 0xc4, 0x3f, 0xf8, 0xeb, 0x2b, 0x27, 0xc5, 0xeb, - 0x2b, 0x43, 0xa2, 0x5f, 0x4d, 0x85, 0x47, 0xbf, 0xf2, 0xa3, 0x5b, 0xc1, 0xe0, 0xe0, 0xd8, 0xb2, - 0xb6, 0x71, 0xcc, 0x70, 0x7f, 0x37, 0x4b, 0x46, 0x61, 0xf3, 0x43, 0x3f, 0xbe, 0x4e, 0x89, 0xb5, - 0xba, 0xe7, 0x2a, 0xc2, 0x7c, 0xaf, 0x12, 0xc4, 0xb6, 0x50, 0xf9, 0xca, 0x2b, 0x3d, 0x95, 0xf7, - 0x4d, 0x9e, 0x8c, 0x84, 0xc9, 0xc3, 0x2b, 0x55, 0x56, 0x4e, 0xa9, 0xe2, 0x2c, 0x16, 0xca, 0xd4, - 0x76, 0x0c, 0xa7, 0x91, 0xb2, 0x70, 0xcc, 0x8b, 0x76, 0xdb, 0xe9, 0x60, 0xdd, 0xd6, 0xcd, 0x26, - 0x46, 0x9f, 0x48, 0x8f, 0xc2, 0xec, 0x5d, 0x82, 0x49, 0xa3, 0x69, 0x99, 0x35, 0xe3, 0x59, 0xde, - 0xe5, 0x72, 0xd1, 0x41, 0xd6, 0x89, 0x44, 0xca, 0xec, 0x0f, 0xcd, 0xff, 0x57, 0x2d, 0xc3, 0x54, - 0x53, 0xb7, 0x5b, 0x34, 0x08, 0x5f, 0xb6, 0xe7, 0x22, 0xa7, 0x50, 0x42, 0x45, 0xef, 0x17, 0x2d, - 0xf8, 0x5b, 0xad, 0x8a, 0x42, 0xcc, 0xf5, 0x44, 0xf3, 0x08, 0x25, 0xb6, 0x18, 0xfc, 0x24, 0xc8, - 0xdc, 0x95, 0x8e, 0x8d, 0xdb, 0xe4, 0x0e, 0x7a, 0xda, 0x43, 0x4c, 0x69, 0x41, 0x42, 0xdc, 0xe5, - 0x01, 0x52, 0xd4, 0x3e, 0x34, 0xc6, 0xbd, 0x3c, 0x20, 0xc5, 0x45, 0xf2, 0x9a, 0xf9, 0xae, 0x1c, - 0xcc, 0xd2, 0x5e, 0x8d, 0x89, 0x13, 0xbd, 0x90, 0x5c, 0x21, 0xed, 0xdc, 0x8b, 0x2f, 0xa1, 0xda, - 0xc1, 0xc7, 0xe4, 0x3c, 0x28, 0x17, 0xfc, 0x80, 0x83, 0xee, 0x63, 0xdc, 0x7d, 0x7b, 0x8f, 0xaf, - 0x79, 0xca, 0xd3, 0xb8, 0xf7, 0xed, 0xa3, 0x8b, 0x4f, 0x1e, 0x9f, 0x5f, 0x52, 0x40, 0x29, 0xb4, - 0x5a, 0xa8, 0x79, 0x70, 0x28, 0xae, 0x81, 0x69, 0xaf, 0xcd, 0x04, 0x31, 0x20, 0xf9, 0xa4, 0xb8, - 0x8b, 0xa0, 0xbe, 0x6c, 0x0a, 0xad, 0xb1, 0xef, 0x2a, 0x44, 0x94, 0x9d, 0x3c, 0x28, 0xbf, 0x36, - 0xc1, 0x1a, 0xcd, 0x82, 0x65, 0x5d, 0x20, 0x47, 0x65, 0x9e, 0xaf, 0x40, 0x76, 0x09, 0x3b, 0xcd, - 0xed, 0x11, 0xb5, 0x99, 0x5d, 0xbb, 0xed, 0xb5, 0x99, 0x7d, 0xf7, 0xe1, 0x0f, 0xb6, 0x61, 0x3d, - 0xb6, 0xe6, 0x09, 0x4b, 0xe3, 0x8e, 0xee, 0x1c, 0x59, 0x7a, 0xf2, 0xe0, 0xfc, 0xab, 0x02, 0x73, - 0xfe, 0x0a, 0x17, 0xc5, 0xe4, 0x17, 0x53, 0x8f, 0xb4, 0xf5, 0x4e, 0xf4, 0x85, 0x78, 0x21, 0xd2, - 0x7c, 0x99, 0x8a, 0x35, 0x4b, 0x78, 0x61, 0x31, 0x46, 0xf0, 0x34, 0x39, 0x06, 0xc7, 0x30, 0x83, - 0x57, 0x60, 0x92, 0x30, 0xb4, 0x68, 0xec, 0x11, 0xd7, 0x41, 0x61, 0xa1, 0xf1, 0xd9, 0x23, 0x59, - 0x68, 0xbc, 0x43, 0x5c, 0x68, 0x94, 0x8c, 0x78, 0xec, 0xad, 0x33, 0xc6, 0xf4, 0xa5, 0x71, 0xff, - 0x1f, 0xf9, 0x32, 0x63, 0x0c, 0x5f, 0x9a, 0x01, 0xe5, 0x27, 0x8f, 0xe8, 0xeb, 0xfe, 0x13, 0xeb, - 0x6c, 0xbd, 0x0d, 0x55, 0xf4, 0x7f, 0x1d, 0x83, 0xcc, 0x59, 0xf7, 0xe1, 0x7f, 0x06, 0x37, 0x62, - 0xbd, 0x7c, 0x04, 0xc1, 0x19, 0x9e, 0x0e, 0x19, 0x97, 0x3e, 0x9b, 0xb6, 0xdc, 0x28, 0xb7, 0xbb, - 0xeb, 0x32, 0xa2, 0x91, 0xff, 0xd4, 0x93, 0x90, 0xeb, 0x5a, 0xbb, 0x76, 0xd3, 0x35, 0x9f, 0x5d, - 0x8d, 0x61, 0x6f, 0x71, 0x83, 0x92, 0x0a, 0xa4, 0xe7, 0x47, 0xe7, 0x32, 0xca, 0x5d, 0x90, 0xa4, - 0x08, 0x17, 0x24, 0xc5, 0xd8, 0x3f, 0x90, 0xe0, 0x2d, 0x79, 0x8d, 0xf8, 0x4b, 0x72, 0x57, 0x60, - 0x6b, 0x54, 0xb0, 0x87, 0x88, 0xe5, 0xa0, 0xea, 0x10, 0xd7, 0xe1, 0x5b, 0x14, 0xad, 0x1f, 0x07, - 0x7e, 0xac, 0x0e, 0xdf, 0x12, 0x3c, 0x8c, 0xe5, 0x94, 0x7a, 0x8e, 0x39, 0xa9, 0xde, 0x37, 0x4a, - 0x74, 0x33, 0x82, 0xd2, 0x1f, 0x08, 0x9d, 0x11, 0x3a, 0xaf, 0x0e, 0x8d, 0xce, 0x21, 0xb9, 0xaf, - 0xfe, 0x9e, 0x42, 0x22, 0x61, 0x7a, 0x46, 0x8e, 0xfc, 0x45, 0x47, 0xb1, 0x21, 0x72, 0xc7, 0x60, - 0x21, 0x0e, 0xf4, 0xec, 0xf0, 0xa1, 0xc1, 0x45, 0xd1, 0x71, 0xfc, 0x8f, 0x3b, 0x34, 0xb8, 0x2c, - 0x23, 0xc9, 0x03, 0xf9, 0x46, 0x7a, 0xb1, 0x58, 0xa1, 0xe9, 0x18, 0x7b, 0x23, 0x6e, 0x69, 0xe2, - 0xf0, 0x12, 0x33, 0x1a, 0xf0, 0x3e, 0x09, 0x51, 0x0e, 0xc7, 0x1d, 0x0d, 0x58, 0x8e, 0x8d, 0xe4, - 0x61, 0xfa, 0x9b, 0x9c, 0x2b, 0x3d, 0xb6, 0x36, 0xf3, 0x26, 0xb6, 0x1a, 0x80, 0x0f, 0x8e, 0xd6, - 0x19, 0x98, 0xe1, 0xa6, 0xfe, 0xde, 0x85, 0x35, 0x42, 0x5a, 0xdc, 0x83, 0xee, 0xbe, 0xc8, 0x46, - 0xbe, 0x30, 0x10, 0x63, 0xc1, 0x57, 0x86, 0x89, 0xb1, 0xdc, 0x07, 0xe7, 0x8d, 0x61, 0x63, 0xc2, - 0xea, 0x77, 0x78, 0xac, 0xaa, 0x22, 0x56, 0xb7, 0xc9, 0x88, 0x49, 0x6e, 0x4c, 0x93, 0x9a, 0x37, - 0xbe, 0xd3, 0x87, 0x4b, 0x13, 0xe0, 0x7a, 0xfa, 0xd0, 0x7c, 0x24, 0x8f, 0xd8, 0x2b, 0x68, 0x77, - 0x58, 0xa3, 0x26, 0xfb, 0x68, 0xba, 0x43, 0x36, 0x1b, 0x50, 0x84, 0xd9, 0x40, 0x4c, 0x7f, 0xfb, - 0xc0, 0x8d, 0xd4, 0x63, 0x6e, 0x10, 0x44, 0x99, 0x11, 0xfb, 0xdb, 0x0f, 0xe4, 0x20, 0x79, 0x70, - 0xfe, 0x51, 0x01, 0x58, 0xb6, 0xad, 0xdd, 0x4e, 0xd5, 0x6e, 0x61, 0x1b, 0xfd, 0x75, 0x30, 0x01, - 0x78, 0xe9, 0x08, 0x26, 0x00, 0xeb, 0x00, 0x5b, 0x3e, 0x71, 0xa6, 0xe1, 0xb7, 0xc8, 0x99, 0xfb, - 0x01, 0x53, 0x1a, 0x47, 0x43, 0xbc, 0x72, 0xf6, 0x19, 0x22, 0xc6, 0x51, 0x7d, 0x56, 0x40, 0x6e, - 0x94, 0x13, 0x80, 0x77, 0xfb, 0x58, 0xd7, 0x05, 0xac, 0xef, 0x3e, 0x00, 0x27, 0xc9, 0x63, 0xfe, - 0x4f, 0x13, 0x30, 0x4d, 0xb7, 0xeb, 0xa8, 0x4c, 0xff, 0x2e, 0x00, 0xfd, 0xd7, 0x46, 0x00, 0xfa, - 0x06, 0xcc, 0x58, 0x01, 0x75, 0xda, 0xa7, 0xf2, 0x0b, 0x30, 0x91, 0xb0, 0x73, 0x7c, 0x69, 0x02, - 0x19, 0xf4, 0x31, 0x1e, 0x79, 0x4d, 0x44, 0xfe, 0x8e, 0x08, 0x79, 0x73, 0x14, 0x47, 0x09, 0xfd, - 0x7b, 0x7c, 0xe8, 0x37, 0x04, 0xe8, 0x0b, 0x07, 0x61, 0x65, 0x0c, 0xe1, 0xf6, 0x15, 0xc8, 0x90, - 0xd3, 0x71, 0xbf, 0x9e, 0xe0, 0xfc, 0xfe, 0x14, 0x4c, 0x90, 0x26, 0xeb, 0xcf, 0x3b, 0xbc, 0x57, - 0xf7, 0x8b, 0xbe, 0xe9, 0x60, 0xdb, 0xf7, 0x58, 0xf0, 0x5e, 0x5d, 0x1e, 0x3c, 0xaf, 0xe4, 0xee, - 0xa9, 0x1c, 0xdd, 0x88, 0xf4, 0x13, 0x86, 0x9e, 0x94, 0xf0, 0x12, 0x1f, 0xd9, 0x79, 0xb9, 0x61, - 0x26, 0x25, 0x03, 0x18, 0x49, 0x1e, 0xf8, 0x3f, 0xcf, 0xc0, 0x29, 0xba, 0xaa, 0xb4, 0x64, 0x5b, - 0x3b, 0x3d, 0xb7, 0x5b, 0x19, 0x07, 0xd7, 0x85, 0xeb, 0x61, 0xce, 0x11, 0xfc, 0xb1, 0x99, 0x4e, - 0xf4, 0xa4, 0xa2, 0x3f, 0xe1, 0x7d, 0x2a, 0x9e, 0x29, 0x22, 0xb9, 0x10, 0x21, 0xc0, 0x30, 0xde, - 0x63, 0x2f, 0xd4, 0x4b, 0x32, 0xca, 0x2d, 0x52, 0x29, 0x43, 0xad, 0x59, 0xfa, 0x3a, 0x95, 0x95, - 0xd1, 0xa9, 0x0f, 0xfa, 0x3a, 0xf5, 0x93, 0x82, 0x4e, 0x2d, 0x1f, 0x5c, 0x24, 0xc9, 0xeb, 0xd6, - 0x6b, 0xfd, 0x8d, 0x21, 0x7f, 0xdb, 0x6e, 0x27, 0x81, 0xcd, 0x3a, 0xde, 0x1f, 0x29, 0x23, 0xf8, - 0x23, 0x89, 0xf7, 0x51, 0xc4, 0x98, 0x09, 0x8b, 0x5c, 0x87, 0xe8, 0xd2, 0x1c, 0xa4, 0x0d, 0x8f, - 0xbb, 0xb4, 0xd1, 0x1a, 0x6a, 0xae, 0x1b, 0x59, 0xd0, 0x18, 0xd6, 0x96, 0xe6, 0x20, 0xb7, 0x64, - 0xb4, 0x1d, 0x6c, 0xa3, 0xaf, 0xb0, 0x99, 0xee, 0x6b, 0x13, 0x1c, 0x00, 0x16, 0x21, 0xb7, 0x49, - 0x4a, 0x63, 0x26, 0xf3, 0x4d, 0x72, 0xad, 0x87, 0x72, 0xa8, 0xb1, 0x7f, 0xe3, 0x46, 0xe7, 0xeb, - 0x21, 0x33, 0xb2, 0x29, 0x72, 0x8c, 0xe8, 0x7c, 0x83, 0x59, 0x18, 0xcb, 0xc5, 0x54, 0x39, 0x0d, - 0xef, 0xb8, 0x63, 0xfc, 0x85, 0xe4, 0x10, 0xce, 0x83, 0x62, 0xb4, 0xba, 0xa4, 0x73, 0x9c, 0xd2, - 0xdc, 0xc7, 0xb8, 0xbe, 0x42, 0xbd, 0xa2, 0xa2, 0x2c, 0x8f, 0xdb, 0x57, 0x48, 0x8a, 0x8b, 0xe4, - 0x31, 0xfb, 0x3e, 0x71, 0x14, 0xed, 0xb4, 0xf5, 0x26, 0x76, 0xb9, 0x4f, 0x0c, 0x35, 0xda, 0x93, - 0x65, 0xbc, 0x9e, 0x8c, 0x6b, 0xa7, 0xd9, 0x03, 0xb4, 0xd3, 0x61, 0x97, 0x21, 0x7d, 0x99, 0x93, - 0x8a, 0x1f, 0xda, 0x32, 0x64, 0x24, 0x1b, 0x63, 0xb8, 0x76, 0xd4, 0x3b, 0x48, 0x3b, 0xd6, 0xd6, - 0x3a, 0xec, 0x26, 0x0d, 0x13, 0xd6, 0xc8, 0x0e, 0xcd, 0x0e, 0xb3, 0x49, 0x13, 0xce, 0xc3, 0x18, - 0xd0, 0x9a, 0x63, 0x68, 0x7d, 0x9e, 0x0d, 0xa3, 0x09, 0xef, 0x93, 0x76, 0x2d, 0xdb, 0x89, 0xb7, - 0x4f, 0xea, 0x72, 0xa7, 0x91, 0xff, 0xe2, 0x1e, 0xbc, 0x12, 0xcf, 0x55, 0x8f, 0x6a, 0xf8, 0x8c, - 0x71, 0xf0, 0x6a, 0x10, 0x03, 0xc9, 0xc3, 0xfb, 0xb6, 0x43, 0x1a, 0x3c, 0x87, 0x6d, 0x8e, 0xac, - 0x0d, 0x8c, 0x6c, 0xe8, 0x1c, 0xa6, 0x39, 0x86, 0xf3, 0x90, 0x3c, 0x5e, 0xdf, 0xe1, 0x06, 0xce, - 0xb7, 0x8c, 0x71, 0xe0, 0xf4, 0x5a, 0x66, 0x76, 0xc8, 0x96, 0x39, 0xec, 0xfe, 0x0f, 0x93, 0xf5, - 0xe8, 0x06, 0xcc, 0x61, 0xf6, 0x7f, 0x22, 0x98, 0x48, 0x1e, 0xf1, 0xb7, 0x2a, 0x90, 0xad, 0x8d, - 0x7f, 0xbc, 0x1c, 0x76, 0x2e, 0x42, 0x64, 0x55, 0x1b, 0xd9, 0x70, 0x39, 0xcc, 0x5c, 0x24, 0x94, - 0x85, 0x31, 0x04, 0xde, 0x3f, 0x0a, 0x33, 0x64, 0x49, 0xc4, 0xdb, 0x66, 0xfd, 0x0e, 0x1b, 0x35, - 0x1f, 0x4e, 0xb0, 0xad, 0xde, 0x03, 0x93, 0xde, 0xfe, 0x1d, 0x1b, 0x39, 0xe7, 0xe5, 0xda, 0xa7, - 0xc7, 0xa5, 0xe6, 0xff, 0x7f, 0x20, 0x67, 0x88, 0x91, 0xef, 0xd5, 0x0e, 0xeb, 0x0c, 0x71, 0xa8, - 0xfb, 0xb5, 0x7f, 0x1c, 0x8c, 0xa8, 0xff, 0x25, 0x39, 0xcc, 0x7b, 0xf7, 0x71, 0x33, 0x7d, 0xf6, - 0x71, 0x3f, 0xc1, 0x63, 0x59, 0x13, 0xb1, 0xbc, 0x53, 0x56, 0x84, 0x23, 0x1c, 0x6b, 0xdf, 0xeb, - 0xc3, 0x79, 0x56, 0x80, 0x73, 0xe1, 0x40, 0xbc, 0x8c, 0xe1, 0xe0, 0x63, 0x26, 0x18, 0x73, 0x3f, - 0x99, 0x60, 0x3b, 0xee, 0x39, 0x55, 0x91, 0xd9, 0x77, 0xaa, 0x42, 0x68, 0xe9, 0xd9, 0x03, 0xb6, - 0xf4, 0x4f, 0xf2, 0xda, 0x51, 0x17, 0xb5, 0xe3, 0xe9, 0xf2, 0x88, 0x8c, 0x6e, 0x64, 0x7e, 0x9f, - 0xaf, 0x1e, 0xe7, 0x04, 0xf5, 0x28, 0x1e, 0x8c, 0x99, 0xe4, 0xf5, 0xe3, 0xf7, 0xbd, 0x09, 0xed, - 0x21, 0xb7, 0xf7, 0x61, 0xb7, 0x8a, 0x05, 0x21, 0x8e, 0x6c, 0xe4, 0x1e, 0x66, 0xab, 0x78, 0x10, - 0x27, 0x63, 0x88, 0xc5, 0x36, 0x0b, 0xd3, 0x84, 0xa7, 0x73, 0x46, 0x6b, 0x0b, 0x3b, 0xe8, 0x75, - 0xd4, 0x47, 0xd1, 0x8b, 0x7c, 0x39, 0xa2, 0xf0, 0x44, 0x61, 0xe7, 0x5d, 0xe3, 0x7a, 0x74, 0x50, - 0x26, 0xe7, 0x39, 0x06, 0xc7, 0x1d, 0x41, 0x71, 0x20, 0x07, 0xc9, 0x43, 0xf6, 0x31, 0xea, 0x6e, - 0xb3, 0xaa, 0x5f, 0xb2, 0x76, 0x1d, 0xf4, 0xe0, 0x08, 0x3a, 0xe8, 0x05, 0xc8, 0xb5, 0x09, 0x35, - 0x76, 0x2c, 0x23, 0x7a, 0xba, 0xc3, 0x44, 0x40, 0xcb, 0xd7, 0xd8, 0x9f, 0x71, 0xcf, 0x66, 0x04, - 0x72, 0xa4, 0x74, 0xc6, 0x7d, 0x36, 0x63, 0x40, 0xf9, 0x63, 0xb9, 0x63, 0x67, 0xd2, 0x2d, 0xdd, - 0xd8, 0x31, 0x9c, 0x11, 0x45, 0x70, 0x68, 0xbb, 0xb4, 0xbc, 0x08, 0x0e, 0xe4, 0x25, 0xee, 0x89, - 0x51, 0x4e, 0x2a, 0xee, 0xef, 0xe3, 0x3e, 0x31, 0x1a, 0x5d, 0x7c, 0xf2, 0x98, 0xfc, 0x0a, 0x6d, - 0x59, 0x67, 0xa9, 0xf3, 0x6d, 0x82, 0x7e, 0xbd, 0x43, 0x37, 0x16, 0xca, 0xda, 0xe1, 0x35, 0x96, - 0xbe, 0xe5, 0x27, 0x0f, 0xcc, 0x7f, 0xff, 0x31, 0xc8, 0x2e, 0xe2, 0xf3, 0xbb, 0x5b, 0xe8, 0x0e, - 0x98, 0xac, 0xdb, 0x18, 0x97, 0xcd, 0x4d, 0xcb, 0x95, 0xae, 0xe3, 0x3e, 0x7b, 0x90, 0xb0, 0x37, - 0x17, 0x8f, 0x6d, 0xac, 0xb7, 0x82, 0xf3, 0x67, 0xde, 0x2b, 0x7a, 0x79, 0x1a, 0x32, 0x35, 0x47, - 0x77, 0xd0, 0x94, 0x8f, 0x2d, 0x7a, 0x90, 0xc7, 0xe2, 0x0e, 0x11, 0x8b, 0xeb, 0x05, 0x59, 0x10, - 0x0e, 0xe6, 0xdd, 0xff, 0x43, 0x00, 0x40, 0x30, 0x79, 0x7f, 0xd7, 0x32, 0xdd, 0x1c, 0xde, 0x11, - 0x48, 0xef, 0x1d, 0xbd, 0xc6, 0x17, 0xf7, 0x5d, 0x82, 0xb8, 0x1f, 0x27, 0x57, 0xc4, 0x18, 0x56, - 0xda, 0xd2, 0x30, 0xe5, 0x8a, 0x76, 0x05, 0xeb, 0xad, 0x2e, 0x7a, 0x74, 0xa0, 0xfc, 0x21, 0x62, - 0x46, 0x1f, 0x92, 0x0e, 0xc6, 0x49, 0x6b, 0xe5, 0x13, 0x0f, 0xf7, 0xe8, 0xf0, 0x36, 0xff, 0xd3, - 0x62, 0x30, 0x92, 0x9b, 0x21, 0x63, 0x98, 0x9b, 0x16, 0xf3, 0x2f, 0xbc, 0x32, 0x84, 0xb6, 0xab, - 0x13, 0x1a, 0xc9, 0x28, 0x19, 0xa9, 0x33, 0x9a, 0xad, 0xb1, 0x5c, 0x7a, 0x97, 0x71, 0x4b, 0x47, - 0xff, 0xfb, 0x40, 0x61, 0xab, 0x2a, 0x64, 0x3a, 0xba, 0xb3, 0xcd, 0x8a, 0x26, 0xcf, 0xae, 0x8d, - 0xbc, 0x6b, 0xea, 0xa6, 0x65, 0x5e, 0xda, 0x31, 0x9e, 0xe5, 0xdf, 0xad, 0x2b, 0xa4, 0xb9, 0x9c, - 0x6f, 0x61, 0x13, 0xdb, 0xba, 0x83, 0x6b, 0x7b, 0x5b, 0x64, 0x8e, 0x35, 0xa9, 0xf1, 0x49, 0xb1, - 0xf5, 0xdf, 0xe5, 0x38, 0x5c, 0xff, 0x37, 0x8d, 0x36, 0x26, 0x91, 0x9a, 0x98, 0xfe, 0x7b, 0xef, - 0xb1, 0xf4, 0xbf, 0x4f, 0x11, 0xc9, 0xa3, 0xf1, 0x6f, 0x69, 0x98, 0xa9, 0xb9, 0x0a, 0x57, 0xdb, - 0xdd, 0xd9, 0xd1, 0xed, 0x4b, 0xe8, 0xda, 0x00, 0x15, 0x4e, 0x35, 0x53, 0xa2, 0x5f, 0xca, 0xef, - 0x49, 0x5f, 0x2b, 0xcd, 0x9a, 0x36, 0x57, 0x42, 0xec, 0x76, 0xf0, 0x04, 0xc8, 0xba, 0xea, 0xed, - 0x79, 0x5c, 0x46, 0x36, 0x04, 0x9a, 0x53, 0x32, 0xa2, 0xd5, 0x40, 0xde, 0xc6, 0x10, 0x4d, 0x23, - 0x0d, 0x47, 0x6b, 0x8e, 0xde, 0xbc, 0xb0, 0x6c, 0xd9, 0xd6, 0xae, 0x63, 0x98, 0xb8, 0x8b, 0x1e, - 0x15, 0x20, 0xe0, 0xe9, 0x7f, 0x2a, 0xd0, 0x7f, 0xf4, 0xef, 0x29, 0xd9, 0x51, 0xd4, 0xef, 0x56, - 0x79, 0xf2, 0x21, 0x01, 0xaa, 0xe4, 0xc6, 0x45, 0x19, 0x8a, 0xc9, 0x0b, 0xed, 0x2d, 0x0a, 0xe4, - 0x4b, 0x0f, 0x74, 0x2c, 0xdb, 0x59, 0xb5, 0x9a, 0x7a, 0xbb, 0xeb, 0x58, 0x36, 0x46, 0xd5, 0x48, - 0xa9, 0xb9, 0x3d, 0x4c, 0xcb, 0x6a, 0x06, 0x83, 0x23, 0x7b, 0xe3, 0xd5, 0x4e, 0x11, 0x75, 0xfc, - 0x63, 0xd2, 0xbb, 0x8c, 0x54, 0x2a, 0xbd, 0x1c, 0x85, 0xe8, 0x79, 0xbf, 0x2e, 0x2d, 0xde, 0x61, - 0x09, 0xb9, 0x9d, 0x47, 0x29, 0xa6, 0xc6, 0xb0, 0x54, 0x9e, 0x86, 0xd9, 0xda, 0xee, 0x79, 0x9f, - 0x48, 0x97, 0x37, 0x42, 0x5e, 0x2f, 0x1d, 0xa5, 0x82, 0x29, 0x1e, 0x4f, 0x28, 0x44, 0xbe, 0xd7, - 0xc1, 0x6c, 0x97, 0xcf, 0xc6, 0xf0, 0x16, 0x13, 0x25, 0xa3, 0x53, 0x0c, 0x2e, 0x35, 0x79, 0x01, - 0xbe, 0x2f, 0x0d, 0xb3, 0xd5, 0x0e, 0x36, 0x71, 0x8b, 0x7a, 0x41, 0x0a, 0x02, 0x7c, 0x79, 0x4c, - 0x01, 0x0a, 0x84, 0x42, 0x04, 0x18, 0x78, 0x2c, 0x2f, 0x7a, 0xc2, 0x0b, 0x12, 0x62, 0x09, 0x2e, - 0xaa, 0xb4, 0xe4, 0x05, 0xf7, 0xe5, 0x34, 0x4c, 0x6b, 0xbb, 0xe6, 0xba, 0x6d, 0xb9, 0xa3, 0xb1, - 0x8d, 0xee, 0x0c, 0x3a, 0x88, 0x9b, 0xe0, 0x58, 0x6b, 0xd7, 0x26, 0xeb, 0x4f, 0x65, 0xb3, 0x86, - 0x9b, 0x96, 0xd9, 0xea, 0x92, 0x7a, 0x64, 0xb5, 0xfd, 0x1f, 0x6e, 0xcf, 0x3c, 0xff, 0x9b, 0x4a, - 0x0a, 0xbd, 0x50, 0x3a, 0xd4, 0x0d, 0xad, 0x3c, 0x57, 0xb4, 0x7c, 0x4f, 0x20, 0x19, 0xd0, 0x66, - 0x50, 0x09, 0xc9, 0x0b, 0xf7, 0xf3, 0x69, 0x50, 0x0b, 0xcd, 0xa6, 0xb5, 0x6b, 0x3a, 0x35, 0xdc, - 0xc6, 0x4d, 0xa7, 0x6e, 0xeb, 0x4d, 0xcc, 0xdb, 0xcf, 0x79, 0x50, 0x5a, 0x86, 0xcd, 0xfa, 0x60, - 0xf7, 0x91, 0xc9, 0xf1, 0xe5, 0xd2, 0x3b, 0x8e, 0xb4, 0x96, 0xfb, 0x4b, 0x89, 0x21, 0x4e, 0xb9, - 0x7d, 0x45, 0xc9, 0x82, 0x92, 0x97, 0xea, 0x27, 0xd3, 0x30, 0xe5, 0xf5, 0xd8, 0x5b, 0x32, 0xc2, - 0xfc, 0x95, 0x98, 0x93, 0x11, 0x9f, 0x78, 0x0c, 0x19, 0xbe, 0x2b, 0xc6, 0xac, 0x22, 0x8c, 0x7e, - 0x3c, 0xd1, 0x15, 0xe2, 0x8b, 0xce, 0x7d, 0xad, 0x54, 0x1b, 0x4b, 0xd5, 0xd5, 0xc5, 0x92, 0x96, - 0x57, 0xd0, 0x57, 0xd2, 0x90, 0x59, 0x37, 0xcc, 0x2d, 0x3e, 0xba, 0xd2, 0x71, 0xd7, 0x8e, 0x6c, - 0xe1, 0x07, 0x58, 0x4b, 0xa7, 0x2f, 0xea, 0xad, 0x70, 0xdc, 0xdc, 0xdd, 0x39, 0x8f, 0xed, 0xea, - 0x26, 0x19, 0x65, 0xbb, 0x75, 0xab, 0x86, 0x4d, 0x6a, 0x84, 0x66, 0xb5, 0xbe, 0xdf, 0x44, 0x13, - 0x4c, 0x62, 0xf2, 0xe0, 0x72, 0x12, 0x22, 0x71, 0x9f, 0xa9, 0x34, 0xc7, 0x54, 0xac, 0x69, 0x43, - 0x1f, 0xe2, 0xc9, 0x6b, 0xea, 0x1f, 0x64, 0xe1, 0x44, 0xc1, 0xbc, 0x44, 0x6c, 0x0a, 0xda, 0xc1, - 0x17, 0xb7, 0x75, 0x73, 0x0b, 0x93, 0x01, 0xc2, 0x97, 0x38, 0x1f, 0xa2, 0x3f, 0x25, 0x86, 0xe8, - 0x57, 0x35, 0x98, 0xb0, 0xec, 0x16, 0xb6, 0x17, 0x2e, 0x11, 0x9e, 0x7a, 0x97, 0x9d, 0x59, 0x9b, - 0xec, 0x57, 0xc4, 0x3c, 0x23, 0x3f, 0x5f, 0xa5, 0xff, 0x6b, 0x1e, 0xa1, 0x33, 0x37, 0xc1, 0x04, - 0x4b, 0x53, 0x67, 0x60, 0xb2, 0xaa, 0x2d, 0x96, 0xb4, 0x46, 0x79, 0x31, 0x7f, 0x44, 0xbd, 0x0c, - 0x8e, 0x96, 0xeb, 0x25, 0xad, 0x50, 0x2f, 0x57, 0x2b, 0x0d, 0x92, 0x9e, 0x4f, 0xa1, 0xe7, 0x65, - 0x64, 0x3d, 0x7b, 0xa3, 0x99, 0xe9, 0x07, 0xab, 0x06, 0x13, 0x4d, 0x9a, 0x81, 0x0c, 0xa1, 0xd3, - 0xb1, 0x6a, 0xc7, 0x08, 0xd2, 0x04, 0xcd, 0x23, 0xa4, 0x9e, 0x06, 0xb8, 0x68, 0x5b, 0xe6, 0x56, - 0x70, 0xea, 0x70, 0x52, 0xe3, 0x52, 0xd0, 0x83, 0x29, 0xc8, 0xd1, 0x7f, 0xc8, 0x95, 0x24, 0xe4, - 0x29, 0x10, 0xbc, 0xf7, 0xee, 0x5a, 0xbc, 0x44, 0x5e, 0xc1, 0x44, 0x8b, 0xbd, 0xba, 0xba, 0x48, - 0x65, 0x40, 0x2d, 0x61, 0x56, 0x95, 0x9b, 0x21, 0x47, 0xff, 0x65, 0x5e, 0x07, 0xe1, 0xe1, 0x45, - 0x69, 0x36, 0x49, 0x3f, 0x65, 0x79, 0x99, 0x26, 0xaf, 0xcd, 0x1f, 0x4e, 0xc3, 0x64, 0x05, 0x3b, - 0xc5, 0x6d, 0xdc, 0xbc, 0x80, 0x1e, 0x2b, 0x2e, 0x80, 0xb6, 0x0d, 0x6c, 0x3a, 0xf7, 0xed, 0xb4, - 0xfd, 0x05, 0x50, 0x2f, 0x01, 0xbd, 0x80, 0xef, 0x7c, 0xef, 0x16, 0xf5, 0xe7, 0xc6, 0x3e, 0x75, - 0xf5, 0x4a, 0x08, 0x51, 0x99, 0x93, 0x90, 0xb3, 0x71, 0x77, 0xb7, 0xed, 0x2d, 0xa2, 0xb1, 0x37, - 0xf4, 0x90, 0x2f, 0xce, 0xa2, 0x20, 0xce, 0x9b, 0xe5, 0x8b, 0x18, 0x43, 0xbc, 0xd2, 0x0c, 0x4c, - 0x94, 0x4d, 0xc3, 0x31, 0xf4, 0x36, 0x7a, 0x61, 0x06, 0x66, 0x6b, 0xd8, 0x59, 0xd7, 0x6d, 0x7d, - 0x07, 0x3b, 0xd8, 0xee, 0xa2, 0xef, 0x89, 0x7d, 0x42, 0xa7, 0xad, 0x3b, 0x9b, 0x96, 0xbd, 0xe3, - 0xa9, 0xa6, 0xf7, 0xee, 0xaa, 0xe6, 0x1e, 0xb6, 0xbb, 0x01, 0x5f, 0xde, 0xab, 0xfb, 0xe5, 0xa2, - 0x65, 0x5f, 0x70, 0x07, 0x41, 0x36, 0x4d, 0x63, 0xaf, 0x2e, 0xbd, 0xb6, 0xb5, 0xb5, 0x8a, 0xf7, - 0xb0, 0x17, 0x2e, 0xcd, 0x7f, 0x77, 0xe7, 0x02, 0x2d, 0xab, 0x62, 0x39, 0x6e, 0xa7, 0xbd, 0x6a, - 0x6d, 0xd1, 0x78, 0xb1, 0x93, 0x9a, 0x98, 0x18, 0xe4, 0xd2, 0xf7, 0x30, 0xc9, 0x95, 0xe3, 0x73, - 0xb1, 0x44, 0x75, 0x1e, 0x54, 0xff, 0xb7, 0x3a, 0x6e, 0xe3, 0x1d, 0xec, 0xd8, 0x97, 0xc8, 0xb5, - 0x10, 0x93, 0x5a, 0x9f, 0x2f, 0x6c, 0x80, 0x96, 0x9f, 0xac, 0x33, 0xe9, 0xcd, 0x0b, 0x92, 0x3b, - 0xd0, 0x64, 0x5d, 0x86, 0xe2, 0x58, 0xae, 0xbd, 0x52, 0x5c, 0x6b, 0xe6, 0x95, 0x0a, 0x64, 0xc8, - 0xe0, 0xf9, 0xd6, 0x94, 0xb0, 0xc2, 0xb4, 0x83, 0xbb, 0x5d, 0x7d, 0x0b, 0x7b, 0x2b, 0x4c, 0xec, - 0x55, 0xbd, 0x0d, 0xb2, 0x6d, 0x82, 0x29, 0x1d, 0x1c, 0xae, 0x15, 0x6a, 0xe6, 0x1a, 0x18, 0x2e, - 0x2d, 0x7f, 0x24, 0x20, 0x70, 0x6b, 0xf4, 0x8f, 0x33, 0xf7, 0x40, 0x96, 0xc2, 0x3f, 0x05, 0xd9, - 0xc5, 0xd2, 0xc2, 0xc6, 0x72, 0xfe, 0x88, 0xfb, 0xe8, 0xf1, 0x37, 0x05, 0xd9, 0xa5, 0x42, 0xbd, - 0xb0, 0x9a, 0x4f, 0xbb, 0xf5, 0x28, 0x57, 0x96, 0xaa, 0x79, 0xc5, 0x4d, 0x5c, 0x2f, 0x54, 0xca, - 0xc5, 0x7c, 0x46, 0x9d, 0x86, 0x89, 0x73, 0x05, 0xad, 0x52, 0xae, 0x2c, 0xe7, 0xb3, 0xe8, 0x6f, - 0x78, 0xfc, 0x6e, 0x17, 0xf1, 0xbb, 0x2e, 0x8c, 0xa7, 0x7e, 0x90, 0xbd, 0xca, 0x87, 0xec, 0x4e, - 0x01, 0xb2, 0x1f, 0x93, 0x21, 0x32, 0x06, 0x77, 0xa6, 0x1c, 0x4c, 0xac, 0xdb, 0x56, 0x13, 0x77, - 0xbb, 0xe8, 0x57, 0xd3, 0x90, 0x2b, 0xea, 0x66, 0x13, 0xb7, 0xd1, 0x15, 0x01, 0x54, 0xd4, 0x55, - 0x34, 0xe5, 0x9f, 0x16, 0xfb, 0xc7, 0x94, 0x6c, 0xef, 0xc7, 0xe8, 0xce, 0x53, 0x9a, 0x21, 0xf2, - 0x91, 0xeb, 0xe5, 0x22, 0x49, 0x8d, 0xe1, 0x6a, 0x9c, 0x34, 0x4c, 0xb1, 0xd5, 0x80, 0xf3, 0x98, - 0x9f, 0x87, 0x7f, 0x2f, 0x25, 0x3b, 0x39, 0xf4, 0x6a, 0xe0, 0x93, 0x09, 0x91, 0x87, 0xdc, 0x44, - 0x70, 0x10, 0xb5, 0x31, 0x6c, 0x1e, 0xa6, 0x61, 0x7a, 0xc3, 0xec, 0xf6, 0x13, 0x8a, 0x7c, 0x1c, - 0x7d, 0xaf, 0x1a, 0x1c, 0xa1, 0x03, 0xc5, 0xd1, 0x1f, 0x4c, 0x2f, 0x79, 0xc1, 0x7c, 0x2f, 0x05, - 0xc7, 0x97, 0xb1, 0x89, 0x6d, 0xa3, 0x49, 0x6b, 0xe0, 0x49, 0xe2, 0x4e, 0x51, 0x12, 0x8f, 0x15, - 0x38, 0xef, 0xf7, 0x87, 0x28, 0x81, 0xd7, 0xfa, 0x12, 0xb8, 0x5b, 0x90, 0xc0, 0x4d, 0x92, 0x74, - 0xc6, 0x70, 0x1f, 0xfa, 0x14, 0xcc, 0x54, 0x2c, 0xc7, 0xd8, 0x34, 0x9a, 0xd4, 0x07, 0xed, 0x15, - 0x0a, 0x64, 0x56, 0x8d, 0xae, 0x83, 0x0a, 0x41, 0x77, 0x72, 0x0d, 0x4c, 0x1b, 0x66, 0xb3, 0xbd, - 0xdb, 0xc2, 0x1a, 0xd6, 0x69, 0xbf, 0x32, 0xa9, 0xf1, 0x49, 0xc1, 0xd6, 0xbe, 0xcb, 0x96, 0xe2, - 0x6d, 0xed, 0x7f, 0x46, 0x7a, 0x19, 0x86, 0x67, 0x81, 0x04, 0xa4, 0x0c, 0xb1, 0xbb, 0x0a, 0x30, - 0x6b, 0x72, 0x59, 0x3d, 0x83, 0xbd, 0xf7, 0x42, 0x01, 0x9e, 0x9c, 0x26, 0xfe, 0x81, 0x3e, 0x20, - 0xd5, 0x58, 0x07, 0x31, 0x14, 0x0f, 0x99, 0xa5, 0x21, 0x26, 0xc9, 0x2a, 0xcc, 0x95, 0x2b, 0xf5, - 0x92, 0x56, 0x29, 0xac, 0xb2, 0x2c, 0x0a, 0xfa, 0xb7, 0x34, 0x64, 0x35, 0xdc, 0x69, 0x5f, 0xe2, - 0x23, 0x46, 0x33, 0x47, 0xf1, 0x94, 0xef, 0x28, 0xae, 0x2e, 0x01, 0xe8, 0x4d, 0xb7, 0x60, 0x72, - 0xa5, 0x56, 0xba, 0x6f, 0x1c, 0x53, 0xa1, 0x82, 0x05, 0x3f, 0xb7, 0xc6, 0xfd, 0x89, 0x5e, 0x24, - 0xbd, 0x73, 0x24, 0x50, 0x23, 0x1c, 0x86, 0xf4, 0x09, 0x1f, 0x94, 0xda, 0xec, 0x19, 0x48, 0xee, - 0x70, 0xc4, 0xff, 0xd5, 0x34, 0x64, 0xea, 0x6e, 0x6f, 0xc9, 0x75, 0x9c, 0x7f, 0x38, 0x9c, 0x8e, - 0xbb, 0x64, 0x42, 0x74, 0xfc, 0x2e, 0x98, 0xe1, 0x35, 0x96, 0xb9, 0x4a, 0x44, 0xaa, 0xb8, 0xf0, - 0xc3, 0x30, 0x1a, 0xde, 0x87, 0x9d, 0xc3, 0x11, 0xf1, 0xa7, 0x1e, 0x07, 0xb0, 0x86, 0x77, 0xce, - 0x63, 0xbb, 0xbb, 0x6d, 0x74, 0xd0, 0xdf, 0x2a, 0x30, 0xb5, 0x8c, 0x9d, 0x9a, 0xa3, 0x3b, 0xbb, - 0xdd, 0x9e, 0xed, 0x4e, 0xd3, 0x2a, 0xea, 0xcd, 0x6d, 0xcc, 0xba, 0x23, 0xef, 0x15, 0xbd, 0x47, - 0x91, 0xf5, 0x27, 0x0a, 0xca, 0x99, 0xf7, 0xcb, 0x08, 0xc1, 0xe4, 0xf1, 0x90, 0x69, 0xe9, 0x8e, - 0xce, 0xb0, 0xb8, 0xa2, 0x07, 0x8b, 0x80, 0x90, 0x46, 0xb2, 0xa1, 0xdf, 0x4c, 0xcb, 0x38, 0x14, - 0x49, 0x94, 0x1f, 0x0f, 0x84, 0x0f, 0xa4, 0x86, 0x40, 0xe1, 0x18, 0xcc, 0x56, 0xaa, 0xf5, 0xc6, - 0x6a, 0x75, 0x79, 0xb9, 0xe4, 0xa6, 0xe6, 0x15, 0xf5, 0x24, 0xa8, 0xeb, 0x85, 0xfb, 0xd6, 0x4a, - 0x95, 0x7a, 0xa3, 0x52, 0x5d, 0x2c, 0xb1, 0x3f, 0x33, 0xea, 0x51, 0x98, 0x2e, 0x16, 0x8a, 0x2b, - 0x5e, 0x42, 0x56, 0x3d, 0x05, 0xc7, 0xd7, 0x4a, 0x6b, 0x0b, 0x25, 0xad, 0xb6, 0x52, 0x5e, 0x6f, - 0xb8, 0x64, 0x96, 0xaa, 0x1b, 0x95, 0xc5, 0x7c, 0x4e, 0x45, 0x70, 0x92, 0xfb, 0x72, 0x4e, 0xab, - 0x56, 0x96, 0x1b, 0xb5, 0x7a, 0xa1, 0x5e, 0xca, 0x4f, 0xa8, 0x97, 0xc1, 0xd1, 0x62, 0xa1, 0x42, - 0xb2, 0x17, 0xab, 0x95, 0x4a, 0xa9, 0x58, 0xcf, 0x4f, 0xa2, 0x7f, 0xcf, 0xc0, 0x74, 0xb9, 0x5b, - 0xd1, 0x77, 0xf0, 0x59, 0xbd, 0x6d, 0xb4, 0xd0, 0x0b, 0xb9, 0x99, 0xc7, 0x75, 0x30, 0x6b, 0xd3, - 0x47, 0xdc, 0xaa, 0x1b, 0x98, 0xa2, 0x39, 0xab, 0x89, 0x89, 0xee, 0x9c, 0xdc, 0x24, 0x04, 0xbc, - 0x39, 0x39, 0x7d, 0x53, 0x17, 0x00, 0xe8, 0x53, 0x3d, 0xb8, 0xdc, 0xf5, 0x4c, 0x6f, 0x6b, 0xd2, - 0x77, 0x70, 0x17, 0xdb, 0x7b, 0x46, 0x13, 0x7b, 0x39, 0x35, 0xee, 0x2f, 0xf4, 0x35, 0x45, 0x76, - 0x7f, 0x91, 0x03, 0x95, 0xab, 0x4e, 0x48, 0x6f, 0xf8, 0xf3, 0x8a, 0xcc, 0xee, 0xa0, 0x14, 0xc9, - 0x78, 0x9a, 0xf2, 0x92, 0xf4, 0x70, 0xcb, 0xb6, 0xf5, 0x6a, 0xb5, 0x51, 0x5b, 0xa9, 0x6a, 0xf5, - 0xbc, 0xa2, 0xce, 0xc0, 0xa4, 0xfb, 0xba, 0x5a, 0xad, 0x2c, 0xe7, 0x33, 0xea, 0x09, 0x38, 0xb6, - 0x52, 0xa8, 0x35, 0xca, 0x95, 0xb3, 0x85, 0xd5, 0xf2, 0x62, 0xa3, 0xb8, 0x52, 0xd0, 0x6a, 0xf9, - 0xac, 0x7a, 0x05, 0x9c, 0xa8, 0x97, 0x4b, 0x5a, 0x63, 0xa9, 0x54, 0xa8, 0x6f, 0x68, 0xa5, 0x5a, - 0xa3, 0x52, 0x6d, 0x54, 0x0a, 0x6b, 0xa5, 0x7c, 0xce, 0x6d, 0xfe, 0xe4, 0x53, 0xa0, 0x36, 0x13, - 0xfb, 0x95, 0x71, 0x32, 0x44, 0x19, 0xa7, 0x7a, 0x95, 0x11, 0x78, 0xb5, 0xd2, 0x4a, 0xb5, 0x92, - 0x76, 0xb6, 0x94, 0x9f, 0xee, 0xa7, 0x6b, 0x33, 0xea, 0x71, 0xc8, 0xbb, 0x3c, 0x34, 0xca, 0x35, - 0x2f, 0xe7, 0x62, 0x7e, 0x16, 0x7d, 0x32, 0x07, 0x27, 0x35, 0xbc, 0x65, 0x74, 0x1d, 0x6c, 0xaf, - 0xeb, 0x97, 0x76, 0xb0, 0xe9, 0x78, 0x9d, 0xfc, 0xff, 0x8a, 0xad, 0x8c, 0x6b, 0x30, 0xdb, 0xa1, - 0x34, 0xd6, 0xb0, 0xb3, 0x6d, 0xb5, 0xd8, 0x28, 0xfc, 0xd8, 0xd0, 0x9e, 0x63, 0x7e, 0x9d, 0xcf, - 0xae, 0x89, 0x7f, 0x73, 0xba, 0xad, 0x44, 0xe8, 0x76, 0x66, 0x18, 0xdd, 0x56, 0xaf, 0x82, 0xa9, - 0xdd, 0x2e, 0xb6, 0x4b, 0x3b, 0xba, 0xd1, 0xf6, 0x2e, 0xe7, 0xf4, 0x13, 0xd0, 0x3b, 0x33, 0xb2, - 0x27, 0x56, 0xb8, 0xba, 0xf4, 0x17, 0x63, 0x48, 0xdf, 0x7a, 0x1a, 0x80, 0x55, 0x76, 0xc3, 0x6e, - 0x33, 0x65, 0xe5, 0x52, 0x5c, 0xfe, 0xce, 0x1b, 0xed, 0xb6, 0x61, 0x6e, 0xf9, 0xfb, 0xfe, 0x41, - 0x02, 0x7a, 0x89, 0x22, 0x73, 0x82, 0x25, 0x2e, 0x6f, 0xf1, 0x5a, 0xd3, 0x8b, 0xd2, 0x63, 0xee, - 0x77, 0xf7, 0x37, 0x9d, 0x9c, 0x9a, 0x87, 0x19, 0x92, 0xc6, 0x5a, 0x60, 0x7e, 0xc2, 0xed, 0x83, - 0x3d, 0x72, 0x6b, 0xa5, 0xfa, 0x4a, 0x75, 0xd1, 0xff, 0x36, 0xe9, 0x92, 0x74, 0x99, 0x29, 0x54, - 0xee, 0x23, 0xad, 0x71, 0x4a, 0x7d, 0x14, 0x5c, 0xc1, 0x75, 0xd8, 0x85, 0x55, 0xad, 0x54, 0x58, - 0xbc, 0xaf, 0x51, 0x7a, 0x66, 0xb9, 0x56, 0xaf, 0x89, 0x8d, 0xcb, 0x6b, 0x47, 0xd3, 0x2e, 0xbf, - 0xa5, 0xb5, 0x42, 0x79, 0x95, 0xf5, 0xef, 0x4b, 0x55, 0x6d, 0xad, 0x50, 0xcf, 0xcf, 0xa0, 0x57, - 0x2a, 0x90, 0x5f, 0xc6, 0xce, 0xba, 0x65, 0x3b, 0x7a, 0x7b, 0xd5, 0x30, 0x2f, 0x6c, 0xd8, 0x6d, - 0x61, 0xb2, 0x29, 0x1d, 0xa6, 0x43, 0x1c, 0x22, 0x05, 0x82, 0xe1, 0x3b, 0xe2, 0x1d, 0x92, 0x2d, - 0x50, 0xa6, 0x20, 0x01, 0x3d, 0x3b, 0x2d, 0xb3, 0xdc, 0x2d, 0x5f, 0x6a, 0x3c, 0x3d, 0x79, 0xce, - 0xb8, 0xc7, 0xe7, 0x3e, 0xa8, 0xe5, 0xd0, 0xf3, 0x33, 0x30, 0xb9, 0x64, 0x98, 0x7a, 0xdb, 0x78, - 0x96, 0x10, 0xbf, 0x34, 0xe8, 0x63, 0x52, 0x11, 0x7d, 0x4c, 0x7a, 0xa8, 0xf1, 0xf3, 0x97, 0x15, - 0xd9, 0xe5, 0x05, 0x4e, 0xf6, 0x1e, 0x93, 0x21, 0x83, 0xe7, 0x47, 0xd2, 0x32, 0xcb, 0x0b, 0x83, - 0xe9, 0xc5, 0xc3, 0xf0, 0xd3, 0x3f, 0x1c, 0x36, 0x56, 0x4f, 0xfb, 0x9e, 0xec, 0xa7, 0x0a, 0x53, - 0xe8, 0x4f, 0x15, 0x40, 0xcb, 0xd8, 0x39, 0x8b, 0x6d, 0x7f, 0x2a, 0x40, 0x7a, 0x7d, 0x66, 0x6f, - 0x73, 0x4d, 0xf6, 0xad, 0x3c, 0x80, 0xe7, 0x44, 0x00, 0x0b, 0x11, 0x8d, 0x27, 0x84, 0x74, 0x48, - 0xe3, 0x2d, 0x43, 0xae, 0x4b, 0xbe, 0x33, 0x35, 0x7b, 0x42, 0xf8, 0x70, 0x49, 0x88, 0xf1, 0xd4, - 0x29, 0x61, 0x8d, 0x11, 0x40, 0xdf, 0xf7, 0x27, 0x41, 0x3f, 0x21, 0x68, 0xc7, 0xd2, 0x81, 0x99, - 0x8d, 0xa7, 0x2f, 0x76, 0xb2, 0xea, 0xd2, 0xcf, 0xbe, 0x41, 0x1f, 0xc9, 0xc2, 0xf1, 0x7e, 0xd5, - 0x41, 0xbf, 0x95, 0x12, 0x76, 0xd8, 0x31, 0x19, 0xf2, 0x53, 0x6c, 0x03, 0xd1, 0x7d, 0x51, 0x9f, - 0x04, 0x27, 0xfc, 0x65, 0xb8, 0xba, 0x55, 0xc1, 0x17, 0xbb, 0x6d, 0xec, 0x38, 0xd8, 0x26, 0x55, - 0x9b, 0xd4, 0xfa, 0x7f, 0x54, 0x9f, 0x0a, 0x97, 0x1b, 0x66, 0xd7, 0x68, 0x61, 0xbb, 0x6e, 0x74, - 0xba, 0x05, 0xb3, 0x55, 0xdf, 0x75, 0x2c, 0xdb, 0xd0, 0xd9, 0x55, 0x92, 0x93, 0x5a, 0xd8, 0x67, - 0xf5, 0x46, 0xc8, 0x1b, 0xdd, 0xaa, 0x79, 0xde, 0xd2, 0xed, 0x96, 0x61, 0x6e, 0xad, 0x1a, 0x5d, - 0x87, 0x79, 0x00, 0xef, 0x4b, 0x47, 0x7f, 0xa7, 0xc8, 0x1e, 0xa6, 0x1b, 0x00, 0x6b, 0x48, 0x87, - 0xf2, 0x02, 0x45, 0xe6, 0x78, 0x5c, 0x3c, 0xda, 0xf1, 0x94, 0xe5, 0x79, 0xe3, 0x36, 0x24, 0xfa, - 0x8f, 0xe0, 0xa4, 0x6b, 0xa1, 0xe9, 0x9e, 0x21, 0x70, 0xb6, 0xa4, 0x95, 0x97, 0xca, 0x25, 0xd7, - 0xac, 0x38, 0x01, 0xc7, 0x82, 0x6f, 0x8b, 0xf7, 0x35, 0x6a, 0xa5, 0x4a, 0x3d, 0x3f, 0xe9, 0xf6, - 0x53, 0x34, 0x79, 0xa9, 0x50, 0x5e, 0x2d, 0x2d, 0x36, 0xea, 0x55, 0xf7, 0xcb, 0xe2, 0x70, 0xa6, - 0x05, 0x7a, 0x30, 0x03, 0x47, 0x89, 0x6c, 0x2f, 0x11, 0xa9, 0xba, 0x42, 0xe9, 0xf1, 0xb5, 0xf5, - 0x01, 0x9a, 0xa2, 0xe2, 0x45, 0x9f, 0x93, 0xbe, 0x29, 0x93, 0x83, 0xb0, 0xa7, 0x8c, 0x10, 0xcd, - 0xf8, 0x5e, 0x5a, 0x26, 0x42, 0x85, 0x34, 0xd9, 0x78, 0x4a, 0xf1, 0x2f, 0xe3, 0x1e, 0x71, 0xc2, - 0xc1, 0x27, 0x56, 0x66, 0x91, 0xfc, 0xfc, 0xcc, 0xf5, 0xb2, 0x46, 0xd4, 0x61, 0x0e, 0x80, 0xa4, - 0x10, 0x0d, 0xa2, 0x7a, 0xd0, 0x77, 0xbc, 0x0a, 0xd3, 0x83, 0x42, 0xb1, 0x5e, 0x3e, 0x5b, 0x0a, - 0xd3, 0x83, 0xcf, 0x2a, 0x30, 0xb9, 0x8c, 0x1d, 0x77, 0x4e, 0xd5, 0x45, 0x4f, 0x93, 0x58, 0xff, - 0x71, 0xcd, 0x98, 0xb6, 0xd5, 0xd4, 0xdb, 0xfe, 0x32, 0x00, 0x7d, 0x43, 0xcf, 0x1d, 0xc6, 0x04, - 0xf1, 0x8a, 0x0e, 0x19, 0xaf, 0x9e, 0x02, 0x59, 0xc7, 0xfd, 0xcc, 0x96, 0xa1, 0x1f, 0x1d, 0x3a, - 0x5c, 0xb9, 0x44, 0x16, 0x75, 0x47, 0xd7, 0x68, 0x7e, 0x6e, 0x74, 0x92, 0xb4, 0x5d, 0x42, 0x18, - 0xf9, 0x61, 0xb4, 0x3f, 0xff, 0x46, 0x81, 0x13, 0xb4, 0x7d, 0x14, 0x3a, 0x9d, 0x9a, 0x63, 0xd9, - 0x58, 0xc3, 0x4d, 0x6c, 0x74, 0x9c, 0x9e, 0xf5, 0x3d, 0x9b, 0xa6, 0x7a, 0x9b, 0xcd, 0xec, 0x15, - 0xbd, 0x49, 0x91, 0x8d, 0xc1, 0xbc, 0xaf, 0x3d, 0xf6, 0x94, 0x17, 0xd2, 0xd8, 0x3f, 0x91, 0x96, - 0x89, 0xaa, 0x1c, 0x93, 0x78, 0x3c, 0xa0, 0x3e, 0x7a, 0x08, 0x40, 0x79, 0x2b, 0x37, 0x5a, 0xa9, - 0x58, 0x2a, 0xaf, 0xbb, 0x83, 0xc0, 0xd5, 0x70, 0xe5, 0xfa, 0x86, 0x56, 0x5c, 0x29, 0xd4, 0x4a, - 0x0d, 0xad, 0xb4, 0x5c, 0xae, 0xd5, 0x99, 0x53, 0x16, 0xfd, 0x6b, 0x42, 0xbd, 0x0a, 0x4e, 0xd5, - 0x36, 0x16, 0x6a, 0x45, 0xad, 0xbc, 0x4e, 0xd2, 0xb5, 0x52, 0xa5, 0x74, 0x8e, 0x7d, 0x9d, 0x44, - 0x1f, 0xca, 0xc3, 0xb4, 0x3b, 0x01, 0xa8, 0xd1, 0x79, 0x01, 0xfa, 0x76, 0x06, 0xa6, 0x35, 0xdc, - 0xb5, 0xda, 0x7b, 0x64, 0x8e, 0x30, 0xae, 0xa9, 0xc7, 0x77, 0x15, 0xd9, 0xf3, 0xdb, 0x1c, 0xb3, - 0xf3, 0x1c, 0xa3, 0xe1, 0x13, 0x4d, 0x7d, 0x4f, 0x37, 0xda, 0xfa, 0x79, 0xd6, 0xd5, 0x4c, 0x6a, - 0x41, 0x82, 0x3a, 0x0f, 0xaa, 0x75, 0xd1, 0xc4, 0x76, 0xad, 0x79, 0xb1, 0xe4, 0x6c, 0x17, 0x5a, - 0x2d, 0x1b, 0x77, 0xbb, 0x6c, 0xf5, 0xa2, 0xcf, 0x17, 0xf5, 0x06, 0x38, 0x4a, 0x52, 0xb9, 0xcc, - 0xd4, 0x41, 0xa6, 0x37, 0xd9, 0xcf, 0x59, 0x30, 0x2f, 0x79, 0x39, 0xb3, 0x5c, 0xce, 0x20, 0x99, - 0x3f, 0x2e, 0x91, 0x13, 0x4f, 0xe9, 0x5c, 0x03, 0xd3, 0xa6, 0xbe, 0x83, 0x4b, 0x0f, 0x74, 0x0c, - 0x1b, 0x77, 0x89, 0x63, 0x8c, 0xa2, 0xf1, 0x49, 0xe8, 0x23, 0x52, 0xe7, 0xcd, 0xe5, 0x24, 0x16, - 0x4f, 0xf7, 0x97, 0x87, 0x50, 0xfd, 0x3e, 0xfd, 0x8c, 0x82, 0x3e, 0xa4, 0xc0, 0x0c, 0x63, 0xaa, - 0x60, 0x5e, 0x2a, 0xb7, 0xd0, 0xd5, 0x82, 0xf1, 0xab, 0xbb, 0x69, 0x9e, 0xf1, 0x4b, 0x5e, 0xd0, - 0x2f, 0x28, 0xb2, 0xee, 0xce, 0x7d, 0x2a, 0x4e, 0xca, 0x08, 0x77, 0x1c, 0xdd, 0xb4, 0x76, 0x99, - 0xa3, 0xea, 0xa4, 0x46, 0x5f, 0x92, 0x5c, 0xd4, 0x43, 0xbf, 0x2b, 0xe5, 0x4c, 0x2d, 0x59, 0x8d, - 0x43, 0x02, 0xf0, 0x53, 0x0a, 0xcc, 0x31, 0xae, 0x6a, 0xec, 0x9c, 0x8f, 0xd4, 0x81, 0xb7, 0x5f, - 0x94, 0x36, 0x04, 0xfb, 0xd4, 0x9f, 0x95, 0xf4, 0x88, 0x01, 0xf2, 0x63, 0x52, 0xc1, 0xd1, 0xa4, - 0x2b, 0x72, 0x48, 0x50, 0xbe, 0x2b, 0x03, 0xd3, 0x1b, 0x5d, 0x6c, 0x33, 0xbf, 0x7d, 0xf4, 0x50, - 0x06, 0x94, 0x65, 0x2c, 0x6c, 0xa4, 0xbe, 0x58, 0xda, 0xc3, 0x97, 0xaf, 0x2c, 0x47, 0xd4, 0xb5, - 0x91, 0x42, 0x60, 0xbb, 0x1e, 0xe6, 0xa8, 0x48, 0x0b, 0x8e, 0xe3, 0x1a, 0x89, 0x9e, 0x37, 0x6d, - 0x4f, 0xea, 0x28, 0xb6, 0x8a, 0x48, 0x59, 0x6e, 0x96, 0xa2, 0xcb, 0xd3, 0x2a, 0xde, 0xa4, 0xf3, - 0xd9, 0x8c, 0xd6, 0x93, 0xaa, 0xde, 0x02, 0x97, 0x59, 0x1d, 0x4c, 0xcf, 0xaf, 0x70, 0x99, 0xb3, - 0x24, 0x73, 0xbf, 0x4f, 0xe8, 0xdb, 0x52, 0xbe, 0xba, 0xf2, 0xd2, 0x89, 0xa7, 0x0b, 0x9d, 0xd1, - 0x98, 0x24, 0xc7, 0x21, 0xef, 0xe6, 0x20, 0xfb, 0x2f, 0x5a, 0xa9, 0x56, 0x5d, 0x3d, 0x5b, 0xea, - 0xbf, 0x8c, 0x91, 0x45, 0xcf, 0x53, 0x60, 0x6a, 0xc1, 0xb6, 0xf4, 0x56, 0x53, 0xef, 0x3a, 0xe8, - 0xfb, 0x69, 0x98, 0x59, 0xd7, 0x2f, 0xb5, 0x2d, 0xbd, 0x45, 0xfc, 0xfb, 0x7b, 0xfa, 0x82, 0x0e, - 0xfd, 0xe4, 0xf5, 0x05, 0xec, 0x55, 0x3c, 0x18, 0xe8, 0x1f, 0xdd, 0x4b, 0xc9, 0x5c, 0xa8, 0xe9, - 0x6f, 0xf3, 0xa5, 0xfb, 0x05, 0x2b, 0xf5, 0xf8, 0x9a, 0xe7, 0x79, 0x0a, 0xb1, 0x28, 0x3f, 0x24, - 0x17, 0x7e, 0x54, 0x86, 0xe4, 0xe1, 0xec, 0xca, 0x3f, 0x7f, 0x12, 0x72, 0x8b, 0x98, 0x58, 0x71, - 0xff, 0x23, 0x0d, 0x13, 0x35, 0xec, 0x10, 0x0b, 0xee, 0x36, 0xc1, 0x53, 0xb8, 0x45, 0x32, 0x04, - 0x4e, 0xec, 0xde, 0xbb, 0x3b, 0x59, 0xe7, 0xce, 0x5b, 0x93, 0xe7, 0x18, 0x1e, 0x89, 0xb4, 0xdc, - 0x79, 0x56, 0xe6, 0x81, 0x3c, 0x12, 0x23, 0x49, 0x25, 0xef, 0x6b, 0xf5, 0x9e, 0x34, 0x73, 0xad, - 0xe2, 0x7a, 0xbd, 0xd7, 0xf1, 0xfa, 0x19, 0xe9, 0x6d, 0xc6, 0x98, 0x8f, 0x70, 0x8e, 0x7a, 0x22, - 0x4c, 0x50, 0x99, 0x7b, 0xf3, 0xd1, 0x5e, 0x3f, 0x05, 0x4a, 0x82, 0x9c, 0xbd, 0xf6, 0x72, 0x4a, - 0xba, 0xa8, 0x85, 0x17, 0x3e, 0x96, 0x18, 0x04, 0x33, 0x15, 0xec, 0x5c, 0xb4, 0xec, 0x0b, 0x35, - 0x47, 0x77, 0x30, 0xfa, 0x97, 0x34, 0x28, 0x35, 0xec, 0xf0, 0xd1, 0x4f, 0x2a, 0x70, 0x8c, 0x56, - 0x88, 0x65, 0x24, 0xfd, 0x37, 0xad, 0xc8, 0x35, 0x7d, 0x85, 0xc0, 0xe5, 0xd3, 0xf6, 0xff, 0x8a, - 0x7e, 0xb5, 0x6f, 0xd0, 0xa7, 0x74, 0x9f, 0x49, 0x03, 0x93, 0x0c, 0xcf, 0xa0, 0xab, 0x60, 0x21, - 0x7a, 0xfa, 0x61, 0x29, 0xb3, 0x5a, 0x8e, 0xe6, 0xe1, 0x74, 0x05, 0x1f, 0xbb, 0x02, 0x32, 0xc5, - 0x6d, 0xdd, 0x41, 0xef, 0x56, 0x00, 0x0a, 0xad, 0xd6, 0x1a, 0xf5, 0x01, 0xe7, 0x1d, 0xd2, 0xce, - 0xc0, 0x4c, 0x73, 0x5b, 0x0f, 0xee, 0x36, 0xa1, 0xfd, 0x81, 0x90, 0xa6, 0x3e, 0x29, 0x70, 0x26, - 0xa7, 0x52, 0x45, 0x3d, 0x30, 0xb9, 0x65, 0x30, 0xda, 0xbe, 0xa3, 0xb9, 0x18, 0x0a, 0x33, 0xf2, - 0x08, 0x9d, 0xfb, 0xfb, 0x7c, 0xc0, 0x5e, 0xf8, 0x1c, 0x8e, 0x91, 0xf6, 0x0f, 0xd8, 0x04, 0x09, - 0x31, 0x4f, 0x7a, 0xcb, 0x05, 0xf4, 0x88, 0xe6, 0x6b, 0x2c, 0xa1, 0x6b, 0xd5, 0x52, 0xcb, 0xf0, - 0x44, 0xcb, 0x02, 0x66, 0xa1, 0x17, 0xa5, 0xe2, 0xc1, 0x17, 0x2d, 0xb8, 0xbb, 0x61, 0x16, 0xb7, - 0x0c, 0x07, 0x7b, 0xb5, 0x64, 0x02, 0x8c, 0x82, 0x58, 0xfc, 0x01, 0x3d, 0x47, 0x3a, 0xe8, 0x1a, - 0x11, 0xe8, 0xfe, 0x1a, 0x85, 0xb4, 0x3f, 0xb9, 0x30, 0x6a, 0x72, 0x34, 0x93, 0x07, 0xeb, 0xb9, - 0x0a, 0x9c, 0xa8, 0x5b, 0x5b, 0x5b, 0x6d, 0xec, 0x89, 0x09, 0x53, 0xef, 0x4c, 0xa4, 0x8f, 0x12, - 0x2e, 0xb2, 0x13, 0x64, 0xdd, 0x6f, 0xf8, 0x47, 0xc9, 0xdc, 0x17, 0xf1, 0xc4, 0x54, 0xe4, 0x2c, - 0x8a, 0x88, 0xab, 0x2f, 0x9f, 0x21, 0x28, 0xc8, 0x05, 0x7c, 0x96, 0x26, 0x9b, 0x3c, 0x10, 0x5f, - 0x4a, 0xc3, 0x2c, 0xbd, 0xb9, 0xd2, 0x53, 0xd0, 0x7b, 0x47, 0x08, 0x00, 0xfa, 0x7e, 0x4a, 0xd6, - 0xcf, 0x96, 0xc8, 0x44, 0xe0, 0x24, 0x44, 0xc4, 0x72, 0x41, 0x55, 0x06, 0x92, 0x4b, 0x5e, 0xb4, - 0x7f, 0xa4, 0xc0, 0xf4, 0x32, 0xf6, 0x5a, 0x5a, 0x37, 0x76, 0x4f, 0x74, 0x06, 0x66, 0xc8, 0xf5, - 0x6d, 0x55, 0x76, 0x4c, 0x92, 0xae, 0x9a, 0x09, 0x69, 0xea, 0x75, 0x30, 0x7b, 0x1e, 0x6f, 0x5a, - 0x36, 0xae, 0x0a, 0x67, 0x29, 0xc5, 0xc4, 0x90, 0xf0, 0x74, 0x42, 0x1c, 0xb4, 0x05, 0x11, 0x9b, - 0x9b, 0xf6, 0x0b, 0x93, 0xab, 0x4a, 0xc8, 0x98, 0xf3, 0x64, 0x98, 0x64, 0xc8, 0x7b, 0x66, 0x5a, - 0x54, 0xbf, 0xe8, 0xe7, 0x45, 0x6f, 0xf4, 0x11, 0x2d, 0x09, 0x88, 0x3e, 0x21, 0x0e, 0x13, 0x63, - 0xb9, 0xdf, 0x3d, 0xcf, 0x95, 0xbf, 0x70, 0xa9, 0xdc, 0xea, 0xa2, 0xb5, 0x78, 0x98, 0x9e, 0x06, - 0xf0, 0x1b, 0x87, 0x17, 0xd6, 0x82, 0x4b, 0x11, 0x23, 0xd7, 0x47, 0x1e, 0xd4, 0xeb, 0x15, 0x07, - 0x61, 0x67, 0xc4, 0xc0, 0xc8, 0x1d, 0xf0, 0x93, 0xe1, 0x24, 0x79, 0x74, 0x3e, 0xa3, 0xc0, 0x09, - 0xff, 0xfc, 0xd1, 0xaa, 0xde, 0x0d, 0xda, 0x5d, 0x31, 0x1e, 0x44, 0xc2, 0x81, 0x0f, 0xbf, 0xb1, - 0x7c, 0x27, 0xde, 0x98, 0xd1, 0x97, 0x93, 0xd1, 0xa2, 0xa3, 0xde, 0x04, 0xc7, 0xcc, 0xdd, 0x1d, - 0x5f, 0xea, 0xa4, 0xc5, 0xb3, 0x16, 0xbe, 0xff, 0x43, 0x9c, 0x91, 0x49, 0x86, 0xf9, 0xb1, 0xcc, - 0x29, 0x85, 0x23, 0x5d, 0x8f, 0x8f, 0x05, 0x23, 0xfa, 0xe7, 0x54, 0xac, 0xde, 0x6d, 0xf0, 0x99, - 0xaf, 0x18, 0xbd, 0xd4, 0x21, 0x1e, 0xf8, 0x3a, 0x33, 0x01, 0xd9, 0xd2, 0x4e, 0xc7, 0xb9, 0x74, - 0xe6, 0x31, 0x30, 0x5b, 0x73, 0x6c, 0xac, 0xef, 0x70, 0x3b, 0x03, 0x8e, 0x75, 0x01, 0x9b, 0xde, - 0xce, 0x00, 0x79, 0xb9, 0xfd, 0x36, 0x98, 0x30, 0xad, 0x86, 0xbe, 0xeb, 0x6c, 0xab, 0x57, 0xef, - 0x3b, 0x52, 0xcf, 0xc0, 0xaf, 0xb2, 0x18, 0x46, 0x5f, 0xbb, 0x83, 0xac, 0x0d, 0xe7, 0x4c, 0xab, - 0xb0, 0xeb, 0x6c, 0x2f, 0x5c, 0xf5, 0xa9, 0xbf, 0x3e, 0x9d, 0xfa, 0xec, 0x5f, 0x9f, 0x4e, 0x7d, - 0xf5, 0xaf, 0x4f, 0xa7, 0x7e, 0xf1, 0xeb, 0xa7, 0x8f, 0x7c, 0xf6, 0xeb, 0xa7, 0x8f, 0x7c, 0xe9, - 0xeb, 0xa7, 0x8f, 0xfc, 0x44, 0xba, 0x73, 0xfe, 0x7c, 0x8e, 0x50, 0x79, 0xe2, 0xff, 0x17, 0x00, - 0x00, 0xff, 0xff, 0xd2, 0xcb, 0x15, 0x81, 0xce, 0xfe, 0x01, 0x00, + 0x75, 0x2f, 0xba, 0xea, 0x96, 0x34, 0x33, 0x67, 0x7e, 0xac, 0xb6, 0xbd, 0xbb, 0x5e, 0xb7, 0xcd, + 0xda, 0x59, 0x1b, 0xe3, 0x18, 0x33, 0x36, 0x86, 0x00, 0x36, 0x36, 0xb6, 0x46, 0xa3, 0x99, 0x91, + 0x3d, 0x23, 0x0d, 0x2d, 0xcd, 0x2e, 0x4e, 0x6e, 0x9e, 0x6e, 0xaf, 0x54, 0x33, 0xd3, 0x5e, 0x4d, + 0xb7, 0xe8, 0xee, 0x99, 0xf5, 0xf2, 0x3e, 0xf7, 0xdd, 0x10, 0x62, 0x7e, 0x86, 0x10, 0x42, 0x48, + 0xc2, 0x6f, 0x30, 0x31, 0x5c, 0x48, 0x80, 0xf0, 0xfb, 0x42, 0x12, 0x20, 0xfc, 0x08, 0x84, 0x24, + 0x84, 0x40, 0x08, 0x84, 0x84, 0x17, 0x08, 0x84, 0x90, 0xf7, 0x09, 0x8f, 0x97, 0xbc, 0x1b, 0xb8, + 0x24, 0xe1, 0xe5, 0x7d, 0xba, 0xaa, 0xba, 0xbb, 0x4a, 0xa3, 0x6e, 0x55, 0x6b, 0xd4, 0x1a, 0x13, + 0xee, 0x7f, 0xdd, 0xd5, 0xd5, 0xa7, 0x4e, 0x9d, 0xef, 0xa9, 0xaa, 0x53, 0x55, 0xa7, 0x4e, 0xc1, + 0xa9, 0xee, 0xf9, 0x9b, 0xbb, 0xb6, 0xe5, 0x5a, 0xce, 0xcd, 0x2d, 0x6b, 0x67, 0x47, 0x37, 0xdb, + 0xce, 0x3c, 0x7e, 0x57, 0x26, 0x74, 0xf3, 0x92, 0x7b, 0xa9, 0x8b, 0xd4, 0xeb, 0xba, 0x17, 0xb6, + 0x6e, 0xee, 0x18, 0xe7, 0x6f, 0xee, 0x9e, 0xbf, 0x79, 0xc7, 0x6a, 0xa3, 0x8e, 0xff, 0x03, 0x7e, + 0xa1, 0xd9, 0xd5, 0x1b, 0xa2, 0x72, 0x75, 0xac, 0x96, 0xde, 0x71, 0x5c, 0xcb, 0x46, 0x34, 0xe7, + 0xc9, 0xb0, 0x48, 0xb4, 0x87, 0x4c, 0xd7, 0xa7, 0x70, 0xd5, 0x96, 0x65, 0x6d, 0x75, 0x10, 0xf9, + 0x76, 0x7e, 0x77, 0xf3, 0x66, 0xc7, 0xb5, 0x77, 0x5b, 0x2e, 0xfd, 0x7a, 0x4d, 0xef, 0xd7, 0x36, + 0x72, 0x5a, 0xb6, 0xd1, 0x75, 0x2d, 0x9b, 0xe4, 0x38, 0xf3, 0x8d, 0x1f, 0x4c, 0x80, 0xac, 0x75, + 0x5b, 0xea, 0x77, 0x27, 0x40, 0x2e, 0x76, 0xbb, 0xea, 0x27, 0x24, 0x80, 0x65, 0xe4, 0x9e, 0x45, + 0xb6, 0x63, 0x58, 0xa6, 0x7a, 0x14, 0x26, 0x34, 0xf4, 0xcc, 0x5d, 0xe4, 0xb8, 0xb7, 0x67, 0x9f, + 0xff, 0x4d, 0x39, 0xa3, 0x3e, 0x2c, 0xc1, 0xa4, 0x86, 0x9c, 0xae, 0x65, 0x3a, 0x48, 0xb9, 0x1b, + 0x72, 0xc8, 0xb6, 0x2d, 0xfb, 0x54, 0xe6, 0x9a, 0xcc, 0x0d, 0xd3, 0xb7, 0xde, 0x38, 0x4f, 0xab, + 0x3f, 0xaf, 0x75, 0x5b, 0xf3, 0xc5, 0x6e, 0x77, 0x3e, 0xa4, 0x34, 0xef, 0xff, 0x34, 0x5f, 0xf6, + 0xfe, 0xd0, 0xc8, 0x8f, 0xca, 0x29, 0x98, 0xd8, 0x23, 0x19, 0x4e, 0x49, 0xd7, 0x64, 0x6e, 0x98, + 0xd2, 0xfc, 0x57, 0xef, 0x4b, 0x1b, 0xb9, 0xba, 0xd1, 0x71, 0x4e, 0xc9, 0xe4, 0x0b, 0x7d, 0x55, + 0x1f, 0xca, 0x40, 0x0e, 0x13, 0x51, 0x4a, 0x90, 0x6d, 0x59, 0x6d, 0x84, 0x8b, 0x9f, 0xbb, 0xf5, + 0x66, 0xf1, 0xe2, 0xe7, 0x4b, 0x56, 0x1b, 0x69, 0xf8, 0x67, 0xe5, 0x1a, 0x98, 0xf6, 0xc5, 0x12, + 0xb2, 0xc1, 0x26, 0x9d, 0xb9, 0x15, 0xb2, 0x5e, 0x7e, 0x65, 0x12, 0xb2, 0xd5, 0x8d, 0xd5, 0xd5, + 0xc2, 0x11, 0xe5, 0x18, 0xcc, 0x6e, 0x54, 0xef, 0xad, 0xd6, 0xce, 0x55, 0x9b, 0x65, 0x4d, 0xab, + 0x69, 0x85, 0x8c, 0x32, 0x0b, 0x53, 0x0b, 0xc5, 0xc5, 0x66, 0xa5, 0xba, 0xbe, 0xd1, 0x28, 0x48, + 0xea, 0x6b, 0x65, 0x98, 0xab, 0x23, 0x77, 0x11, 0xed, 0x19, 0x2d, 0x54, 0x77, 0x75, 0x17, 0xa9, + 0x2f, 0xc9, 0x04, 0xc2, 0x54, 0x36, 0xbc, 0x42, 0x83, 0x4f, 0xb4, 0x02, 0x4f, 0xd8, 0x57, 0x01, + 0x9e, 0xc2, 0x3c, 0xfd, 0x7b, 0x9e, 0x49, 0xd3, 0x58, 0x3a, 0x67, 0x1e, 0x07, 0xd3, 0xcc, 0x37, + 0x65, 0x0e, 0x60, 0xa1, 0x58, 0xba, 0x77, 0x59, 0xab, 0x6d, 0x54, 0x17, 0x0b, 0x47, 0xbc, 0xf7, + 0xa5, 0x9a, 0x56, 0xa6, 0xef, 0x19, 0xf5, 0xfb, 0x19, 0x06, 0xcc, 0x45, 0x1e, 0xcc, 0xf9, 0xc1, + 0xcc, 0xf4, 0x01, 0x54, 0x7d, 0x53, 0x00, 0xce, 0x32, 0x07, 0xce, 0x13, 0x92, 0x91, 0x4b, 0x1f, + 0xa0, 0x07, 0x25, 0x98, 0xac, 0x6f, 0xef, 0xba, 0x6d, 0xeb, 0xa2, 0xa9, 0x4e, 0x05, 0xc8, 0xa8, + 0xdf, 0x66, 0x65, 0xf2, 0x34, 0x5e, 0x26, 0x37, 0xec, 0xaf, 0x04, 0xa5, 0x10, 0x21, 0x8d, 0xd7, + 0x07, 0xd2, 0x28, 0x72, 0xd2, 0x78, 0x9c, 0x28, 0xa1, 0xf4, 0xe5, 0xf0, 0xca, 0xa7, 0x40, 0xae, + 0xde, 0xd5, 0x5b, 0x48, 0xfd, 0x23, 0x19, 0x66, 0x56, 0x91, 0xbe, 0x87, 0x8a, 0xdd, 0xae, 0x6d, + 0xed, 0x21, 0xb5, 0x14, 0xea, 0xeb, 0x29, 0x98, 0x70, 0xbc, 0x4c, 0x95, 0x36, 0xae, 0xc1, 0x94, + 0xe6, 0xbf, 0x2a, 0xa7, 0x01, 0x8c, 0x36, 0x32, 0x5d, 0xc3, 0x35, 0x90, 0x73, 0x4a, 0xba, 0x46, + 0xbe, 0x61, 0x4a, 0x63, 0x52, 0xd4, 0xef, 0x4a, 0xa2, 0x3a, 0x86, 0xb9, 0x98, 0x67, 0x39, 0x88, + 0x90, 0xea, 0x1b, 0x25, 0x11, 0x1d, 0x1b, 0x48, 0x2e, 0x99, 0x6c, 0xdf, 0x9e, 0x49, 0x2e, 0x5c, + 0x2f, 0x47, 0xb5, 0xd6, 0xac, 0x6f, 0x94, 0x56, 0x9a, 0xf5, 0xf5, 0x62, 0xa9, 0x5c, 0x40, 0xca, + 0x71, 0x28, 0xe0, 0xc7, 0x66, 0xa5, 0xde, 0x5c, 0x2c, 0xaf, 0x96, 0x1b, 0xe5, 0xc5, 0xc2, 0xa6, + 0xa2, 0xc0, 0x9c, 0x56, 0x7e, 0xfa, 0x46, 0xb9, 0xde, 0x68, 0x2e, 0x15, 0x2b, 0xab, 0xe5, 0xc5, + 0xc2, 0x96, 0xf7, 0xf3, 0x6a, 0x65, 0xad, 0xd2, 0x68, 0x6a, 0xe5, 0x62, 0x69, 0xa5, 0xbc, 0x58, + 0xd8, 0x56, 0x2e, 0x87, 0xcb, 0xaa, 0xb5, 0x66, 0x71, 0x7d, 0x5d, 0xab, 0x9d, 0x2d, 0x37, 0xe9, + 0x1f, 0xf5, 0x82, 0x41, 0x0a, 0x6a, 0x34, 0xeb, 0x2b, 0x45, 0xad, 0x5c, 0x5c, 0x58, 0x2d, 0x17, + 0xee, 0x57, 0x9f, 0x23, 0xc3, 0xec, 0x9a, 0x7e, 0x01, 0xd5, 0xb7, 0x75, 0x1b, 0xe9, 0xe7, 0x3b, + 0x48, 0xbd, 0x56, 0x00, 0x4f, 0xf5, 0x8f, 0x58, 0xbc, 0xca, 0x3c, 0x5e, 0x37, 0xf7, 0x11, 0x30, + 0x57, 0x44, 0x04, 0x60, 0xff, 0x33, 0x68, 0x06, 0x2b, 0x1c, 0x60, 0x4f, 0x4c, 0x48, 0x2f, 0x19, + 0x62, 0x3f, 0xfb, 0x08, 0x40, 0x4c, 0xfd, 0x8a, 0x0c, 0x73, 0x15, 0x73, 0xcf, 0x70, 0xd1, 0x32, + 0x32, 0x91, 0xed, 0x8d, 0x03, 0x42, 0x30, 0x3c, 0x2c, 0x33, 0x30, 0x2c, 0xf1, 0x30, 0xdc, 0xd2, + 0x47, 0x6c, 0x7c, 0x19, 0x11, 0xa3, 0xed, 0x55, 0x30, 0x65, 0xe0, 0x7c, 0x25, 0xa3, 0x4d, 0x25, + 0x16, 0x26, 0x28, 0xd7, 0xc1, 0x2c, 0x79, 0x59, 0x32, 0x3a, 0xe8, 0x5e, 0x74, 0x89, 0x8e, 0xbb, + 0x7c, 0xa2, 0xfa, 0xf3, 0x41, 0xe3, 0xab, 0x70, 0x58, 0xfe, 0x44, 0x52, 0xa6, 0x92, 0x81, 0xf9, + 0xf2, 0x47, 0x42, 0xf3, 0xdb, 0xd7, 0xca, 0x0c, 0xf5, 0x07, 0x12, 0x4c, 0xd7, 0x5d, 0xab, 0xeb, + 0xa9, 0xac, 0x61, 0x6e, 0x89, 0x81, 0xfb, 0x29, 0xb6, 0x8d, 0x95, 0x78, 0x70, 0x1f, 0xd7, 0x47, + 0x8e, 0x4c, 0x01, 0x11, 0x2d, 0xec, 0xbb, 0x41, 0x0b, 0x5b, 0xe2, 0x50, 0xb9, 0x35, 0x11, 0xb5, + 0x1f, 0xc2, 0xf6, 0xf5, 0x72, 0x19, 0x0a, 0xbe, 0x9a, 0xb9, 0xa5, 0x5d, 0xdb, 0x46, 0xa6, 0x2b, + 0x06, 0xc2, 0x5f, 0xb2, 0x20, 0xac, 0xf0, 0x20, 0xdc, 0x1a, 0xa3, 0xcc, 0x7e, 0x29, 0x29, 0xb6, + 0xb1, 0x8f, 0x04, 0x68, 0xde, 0xcb, 0xa1, 0xf9, 0xe4, 0xe4, 0x6c, 0x25, 0x83, 0x74, 0x65, 0x08, + 0x44, 0x8f, 0x43, 0xc1, 0x1b, 0x93, 0x4a, 0x8d, 0xca, 0xd9, 0x72, 0xb3, 0x52, 0x3d, 0x5b, 0x69, + 0x94, 0x0b, 0x48, 0x7d, 0x99, 0x0c, 0x33, 0x84, 0x35, 0x0d, 0xed, 0x59, 0x17, 0x04, 0x7b, 0xbd, + 0xaf, 0x24, 0x34, 0x16, 0xd8, 0x12, 0x22, 0x5a, 0xc6, 0x0b, 0x13, 0x18, 0x0b, 0x31, 0xe4, 0x1e, + 0x49, 0xbd, 0xd5, 0xbe, 0x66, 0xb0, 0xd5, 0xa7, 0xb5, 0xf4, 0xed, 0xad, 0x5e, 0x9e, 0x05, 0x20, + 0x95, 0x3c, 0x6b, 0xa0, 0x8b, 0xea, 0x5a, 0x88, 0x09, 0xa7, 0xb6, 0x99, 0x81, 0x6a, 0x2b, 0xf5, + 0x53, 0xdb, 0xf7, 0xb3, 0x63, 0xd6, 0x02, 0x8f, 0xde, 0x4d, 0x91, 0xe2, 0xf6, 0x38, 0x89, 0x9e, + 0x1d, 0xfa, 0x8a, 0x22, 0xf1, 0x56, 0xe7, 0x55, 0x30, 0x85, 0x1f, 0xab, 0xfa, 0x0e, 0xa2, 0x6d, + 0x28, 0x4c, 0x50, 0xce, 0xc0, 0x0c, 0xc9, 0xd8, 0xb2, 0x4c, 0xaf, 0x3e, 0x59, 0x9c, 0x81, 0x4b, + 0xf3, 0x40, 0x6c, 0xd9, 0x48, 0x77, 0x2d, 0x1b, 0xd3, 0xc8, 0x11, 0x10, 0x99, 0x24, 0xf5, 0x5b, + 0x41, 0x2b, 0x2c, 0x73, 0x9a, 0xf3, 0xf8, 0x24, 0x55, 0x49, 0xa6, 0x37, 0x7b, 0xc3, 0xb5, 0x3f, + 0xd2, 0xea, 0x9a, 0x1e, 0xda, 0x4b, 0x78, 0x6a, 0x87, 0x94, 0x93, 0xa0, 0xd0, 0x54, 0x2f, 0x6f, + 0xa9, 0x56, 0x6d, 0x94, 0xab, 0x8d, 0xc2, 0x66, 0x5f, 0x8d, 0xda, 0x52, 0xdf, 0x98, 0x85, 0xec, + 0x3d, 0x96, 0x61, 0xaa, 0x0f, 0x66, 0x38, 0x95, 0x30, 0x91, 0x7b, 0xd1, 0xb2, 0x2f, 0x04, 0x0d, + 0x35, 0x4c, 0x88, 0xc7, 0x26, 0x54, 0x25, 0x79, 0xa0, 0x2a, 0x65, 0xfb, 0xa9, 0xd2, 0x2f, 0xb1, + 0xaa, 0x74, 0x07, 0xaf, 0x4a, 0xd7, 0xf7, 0x91, 0xbf, 0xc7, 0x7c, 0x44, 0x07, 0xf0, 0xc9, 0xa0, + 0x03, 0xb8, 0x8b, 0x83, 0xf1, 0xb1, 0x62, 0x64, 0x92, 0x01, 0xf8, 0xe5, 0x54, 0x1b, 0x7e, 0x3f, + 0xa8, 0xb7, 0x22, 0xa0, 0xde, 0xee, 0xd3, 0x27, 0x18, 0xfb, 0xbb, 0x8e, 0xfb, 0xf7, 0x77, 0x13, + 0x17, 0x94, 0x13, 0x70, 0x6c, 0xb1, 0xb2, 0xb4, 0x54, 0xd6, 0xca, 0xd5, 0x46, 0xb3, 0x5a, 0x6e, + 0x9c, 0xab, 0x69, 0xf7, 0x16, 0x3a, 0xea, 0x43, 0x32, 0x80, 0x27, 0xa1, 0x92, 0x6e, 0xb6, 0x50, + 0x47, 0xac, 0x47, 0xff, 0xbf, 0xa5, 0x64, 0x7d, 0x42, 0x48, 0x3f, 0x02, 0xce, 0xd7, 0x48, 0xe2, + 0xad, 0x32, 0x92, 0x58, 0x32, 0x50, 0xdf, 0xfa, 0x48, 0xb0, 0x3d, 0x2f, 0x83, 0xa3, 0x3e, 0x3d, + 0x9a, 0xbd, 0xff, 0xb4, 0xef, 0x1d, 0x59, 0x98, 0xa3, 0xb0, 0xf8, 0xf3, 0xf8, 0xe7, 0x67, 0x44, + 0x26, 0xf2, 0x2a, 0x4c, 0xd2, 0x69, 0xbb, 0xdf, 0xbd, 0x07, 0xef, 0xca, 0x32, 0x4c, 0x77, 0x91, + 0xbd, 0x63, 0x38, 0x8e, 0x61, 0x99, 0x64, 0x41, 0x6e, 0xee, 0xd6, 0x47, 0x07, 0x12, 0xc7, 0x6b, + 0x97, 0xf3, 0xeb, 0xba, 0xed, 0x1a, 0x2d, 0xa3, 0xab, 0x9b, 0xee, 0x7a, 0x98, 0x59, 0x63, 0xff, + 0x54, 0x5f, 0x9a, 0x70, 0x5a, 0xc3, 0xd7, 0x24, 0x42, 0x25, 0x7e, 0x27, 0xc1, 0x94, 0x24, 0x96, + 0x60, 0x32, 0xb5, 0xf8, 0x44, 0xaa, 0x6a, 0xd1, 0x07, 0xef, 0x2d, 0xe5, 0x0a, 0x38, 0x51, 0xa9, + 0x96, 0x6a, 0x9a, 0x56, 0x2e, 0x35, 0x9a, 0xeb, 0x65, 0x6d, 0xad, 0x52, 0xaf, 0x57, 0x6a, 0xd5, + 0xfa, 0x41, 0x5a, 0xbb, 0xfa, 0x69, 0x39, 0xd0, 0x98, 0x45, 0xd4, 0xea, 0x18, 0x26, 0x52, 0xef, + 0x3a, 0xa0, 0xc2, 0xf0, 0xab, 0x3e, 0xe2, 0x38, 0xd3, 0xf2, 0x23, 0x70, 0x7e, 0x43, 0x72, 0x9c, + 0xfb, 0x13, 0xfc, 0x0f, 0xdc, 0xfc, 0xbf, 0x22, 0xc3, 0x31, 0xa6, 0x21, 0x6a, 0x68, 0x67, 0x64, + 0x2b, 0x79, 0x3f, 0xcb, 0xb6, 0xdd, 0x0a, 0x8f, 0x69, 0x3f, 0x6b, 0x7a, 0x1f, 0x1b, 0x11, 0xb0, + 0xbe, 0x35, 0x80, 0x75, 0x95, 0x83, 0xf5, 0x29, 0x43, 0xd0, 0x4c, 0x86, 0xec, 0x6f, 0xa5, 0x8a, + 0xec, 0x15, 0x70, 0x62, 0xbd, 0xa8, 0x35, 0x2a, 0xa5, 0xca, 0x7a, 0xd1, 0x1b, 0x47, 0x99, 0x21, + 0x3b, 0xc2, 0x5c, 0xe7, 0x41, 0xef, 0x8b, 0xef, 0x87, 0xb3, 0x70, 0x55, 0xff, 0x8e, 0xb6, 0xb4, + 0xad, 0x9b, 0x5b, 0x48, 0x35, 0x44, 0xa0, 0x5e, 0x84, 0x89, 0x16, 0xce, 0x4e, 0x70, 0x66, 0xb7, + 0x6e, 0x62, 0xfa, 0x72, 0x52, 0x82, 0xe6, 0xff, 0xaa, 0xbe, 0x9b, 0x55, 0x88, 0x06, 0xaf, 0x10, + 0x4f, 0x8b, 0x07, 0x6f, 0x1f, 0xdf, 0x11, 0xba, 0xf1, 0xd9, 0x40, 0x37, 0xce, 0x71, 0xba, 0x51, + 0x3a, 0x18, 0xf9, 0x64, 0x6a, 0xf2, 0x87, 0x8f, 0x84, 0x0e, 0x20, 0x52, 0x9b, 0x8c, 0xe8, 0x51, + 0xa1, 0x6f, 0x77, 0xff, 0x3a, 0x19, 0xf2, 0x8b, 0xa8, 0x83, 0x44, 0x57, 0x22, 0xbf, 0x23, 0x89, + 0x6e, 0x88, 0x10, 0x18, 0x08, 0xed, 0xe8, 0xd5, 0x11, 0xd7, 0xd8, 0x41, 0x8e, 0xab, 0xef, 0x74, + 0xb1, 0xa8, 0x65, 0x2d, 0x4c, 0x50, 0x7f, 0x4e, 0x12, 0xd9, 0x2e, 0x89, 0x29, 0xe6, 0x3f, 0xc6, + 0x9a, 0xe2, 0xe7, 0x25, 0x98, 0xac, 0x23, 0xb7, 0x66, 0xb7, 0x91, 0xad, 0xd6, 0x43, 0x8c, 0xae, + 0x81, 0x69, 0x0c, 0x8a, 0x37, 0xcd, 0x0c, 0x70, 0x62, 0x93, 0x94, 0xeb, 0x61, 0x2e, 0x78, 0xc5, + 0xbf, 0xd3, 0x6e, 0xbc, 0x27, 0x55, 0xfd, 0xc7, 0x8c, 0xe8, 0x2e, 0x2e, 0x5d, 0x32, 0xa4, 0xdc, + 0x44, 0xb4, 0x52, 0xb1, 0x1d, 0xd9, 0x58, 0x52, 0xe9, 0x6f, 0x74, 0xbd, 0x53, 0x02, 0xd8, 0x30, + 0x1d, 0x5f, 0xae, 0x8f, 0x4d, 0x20, 0x57, 0xf5, 0x9f, 0x33, 0xc9, 0x66, 0x31, 0x61, 0x39, 0x11, + 0x12, 0xfb, 0xf5, 0x04, 0x6b, 0x0b, 0x91, 0xc4, 0xd2, 0x97, 0xd9, 0xd7, 0xe7, 0x20, 0x7f, 0x4e, + 0xef, 0x74, 0x90, 0xab, 0x7e, 0x43, 0x82, 0x7c, 0xc9, 0x46, 0xba, 0x8b, 0x58, 0xd1, 0xa9, 0x30, + 0x69, 0x5b, 0x96, 0xbb, 0xae, 0xbb, 0xdb, 0x54, 0x6e, 0xc1, 0x3b, 0x75, 0x18, 0xf8, 0x4d, 0xb6, + 0xfb, 0xb8, 0x8b, 0x17, 0xdd, 0x8f, 0x73, 0xb5, 0x25, 0x05, 0xcd, 0x93, 0x42, 0x22, 0xfa, 0x0f, + 0x15, 0x26, 0x77, 0x4c, 0xb4, 0x63, 0x99, 0x46, 0xcb, 0xb7, 0x39, 0xfd, 0x77, 0xf5, 0xa3, 0x81, + 0x4c, 0x17, 0x38, 0x99, 0xce, 0x0b, 0x97, 0x92, 0x4c, 0xa0, 0xf5, 0x21, 0x7a, 0x8f, 0xab, 0xe1, + 0x4a, 0xd2, 0x19, 0x34, 0x1b, 0xb5, 0x66, 0x49, 0x2b, 0x17, 0x1b, 0xe5, 0xe6, 0x6a, 0xad, 0x54, + 0x5c, 0x6d, 0x6a, 0xe5, 0xf5, 0x5a, 0x01, 0xa9, 0x7f, 0x27, 0x79, 0xc2, 0x6d, 0x59, 0x7b, 0xc8, + 0x56, 0x97, 0x85, 0xe4, 0x1c, 0x27, 0x13, 0x8a, 0xc1, 0x2f, 0x09, 0x3b, 0x6d, 0x50, 0xe9, 0x50, + 0x0e, 0x22, 0x94, 0xf7, 0x63, 0x42, 0xcd, 0x3d, 0x96, 0xd4, 0x23, 0x40, 0xd2, 0xff, 0x43, 0x82, + 0x89, 0x92, 0x65, 0xee, 0x21, 0xdb, 0x65, 0xe7, 0x3b, 0xac, 0x34, 0x33, 0xbc, 0x34, 0xbd, 0x41, + 0x12, 0x99, 0xae, 0x6d, 0x75, 0xfd, 0x09, 0x8f, 0xff, 0xaa, 0xbe, 0x39, 0xa9, 0x84, 0x69, 0xc9, + 0xd1, 0x0b, 0x9f, 0xfd, 0x0b, 0xe2, 0xd8, 0x93, 0x7b, 0x1a, 0xc0, 0x43, 0x49, 0x70, 0xe9, 0xcf, + 0x40, 0xfa, 0x5d, 0xca, 0x57, 0x65, 0x98, 0x25, 0x8d, 0xaf, 0x8e, 0xb0, 0x85, 0xa6, 0xd6, 0xd8, + 0x25, 0xc7, 0x1e, 0xe1, 0xaf, 0x1c, 0xe1, 0xc4, 0x9f, 0xd7, 0xbb, 0xdd, 0x60, 0xf9, 0x79, 0xe5, + 0x88, 0x46, 0xdf, 0x89, 0x9a, 0x2f, 0xe4, 0x21, 0xab, 0xef, 0xba, 0xdb, 0xea, 0x0f, 0x84, 0x27, + 0x9f, 0x5c, 0x67, 0x40, 0xf9, 0x89, 0x80, 0xe4, 0x38, 0xe4, 0x5c, 0xeb, 0x02, 0xf2, 0xe5, 0x40, + 0x5e, 0x3c, 0x38, 0xf4, 0x6e, 0xb7, 0x81, 0x3f, 0x50, 0x38, 0xfc, 0x77, 0xcf, 0xd6, 0xd1, 0x5b, + 0x2d, 0x6b, 0xd7, 0x74, 0x2b, 0xfe, 0x12, 0x74, 0x98, 0xa0, 0x7e, 0x29, 0x23, 0x32, 0x99, 0x15, + 0x60, 0x30, 0x19, 0x64, 0xe7, 0x87, 0x68, 0x4a, 0xf3, 0x70, 0x63, 0x71, 0x7d, 0xbd, 0xd9, 0xa8, + 0xdd, 0x5b, 0xae, 0x86, 0x86, 0x67, 0xb3, 0x52, 0x6d, 0x36, 0x56, 0xca, 0xcd, 0xd2, 0x86, 0x86, + 0xd7, 0x09, 0x8b, 0xa5, 0x52, 0x6d, 0xa3, 0xda, 0x28, 0x20, 0xf5, 0x6d, 0x12, 0xcc, 0x94, 0x3a, + 0x96, 0x13, 0x20, 0x7c, 0x75, 0x88, 0x70, 0x20, 0xc6, 0x0c, 0x23, 0x46, 0xf5, 0x5f, 0x33, 0xa2, + 0x4e, 0x07, 0xbe, 0x40, 0x18, 0xf2, 0x11, 0xbd, 0xd4, 0x9b, 0x85, 0x9c, 0x0e, 0x06, 0xd3, 0x4b, + 0xbf, 0x49, 0xfc, 0xc1, 0x9d, 0x30, 0x51, 0x24, 0x8a, 0xa1, 0xfe, 0x75, 0x06, 0xf2, 0x25, 0xcb, + 0xdc, 0x34, 0xb6, 0x3c, 0x63, 0x0e, 0x99, 0xfa, 0xf9, 0x0e, 0x5a, 0xd4, 0x5d, 0x7d, 0xcf, 0x40, + 0x17, 0x71, 0x05, 0x26, 0xb5, 0x9e, 0x54, 0x8f, 0x29, 0x9a, 0x82, 0xce, 0xef, 0x6e, 0x61, 0xa6, + 0x26, 0x35, 0x36, 0x49, 0x79, 0x0a, 0x5c, 0x4e, 0x5e, 0xd7, 0x6d, 0x64, 0xa3, 0x0e, 0xd2, 0x1d, + 0xe4, 0x4d, 0x8b, 0x4c, 0xd4, 0xc1, 0x4a, 0x3b, 0xa9, 0x45, 0x7d, 0x56, 0xce, 0xc0, 0x0c, 0xf9, + 0x84, 0x4d, 0x11, 0x07, 0xab, 0xf1, 0xa4, 0xc6, 0xa5, 0x29, 0x8f, 0x83, 0x1c, 0x7a, 0xc0, 0xb5, + 0xf5, 0x53, 0x6d, 0x8c, 0xd7, 0xe5, 0xf3, 0xc4, 0xeb, 0x70, 0xde, 0xf7, 0x3a, 0x9c, 0xaf, 0x63, + 0x9f, 0x44, 0x8d, 0xe4, 0x52, 0x5f, 0x3d, 0x19, 0x18, 0x12, 0xff, 0x2e, 0x85, 0x8a, 0xa1, 0x40, + 0xd6, 0xd4, 0x77, 0x10, 0xd5, 0x0b, 0xfc, 0xac, 0xdc, 0x08, 0x47, 0xf5, 0x3d, 0xdd, 0xd5, 0xed, + 0x55, 0xab, 0xa5, 0x77, 0xf0, 0xe0, 0xe7, 0xb7, 0xfc, 0xde, 0x0f, 0x78, 0x47, 0xc8, 0xb5, 0x6c, + 0x84, 0x73, 0xf9, 0x3b, 0x42, 0x7e, 0x82, 0x47, 0xdd, 0x68, 0x59, 0x26, 0xe6, 0x5f, 0xd6, 0xf0, + 0xb3, 0x27, 0x95, 0xb6, 0xe1, 0x78, 0x15, 0xc1, 0x54, 0xaa, 0x64, 0x6b, 0xa3, 0x7e, 0xc9, 0x6c, + 0xe1, 0xdd, 0xa0, 0x49, 0x2d, 0xea, 0xb3, 0xb2, 0x00, 0xd3, 0x74, 0x23, 0x64, 0xcd, 0xd3, 0xab, + 0x3c, 0xd6, 0xab, 0x6b, 0x78, 0x9f, 0x2e, 0x82, 0xe7, 0x7c, 0x35, 0xcc, 0xa7, 0xb1, 0x3f, 0x29, + 0x77, 0xc3, 0x95, 0xf4, 0xb5, 0xb4, 0xeb, 0xb8, 0xd6, 0x0e, 0x01, 0x7d, 0xc9, 0xe8, 0x90, 0x1a, + 0x4c, 0xe0, 0x1a, 0xc4, 0x65, 0x51, 0x6e, 0x85, 0xe3, 0x5d, 0x1b, 0x6d, 0x22, 0xfb, 0x3e, 0x7d, + 0x67, 0xf7, 0x81, 0x86, 0xad, 0x9b, 0x4e, 0xd7, 0xb2, 0xdd, 0x53, 0x93, 0x98, 0xf9, 0xbe, 0xdf, + 0x68, 0x47, 0x39, 0x09, 0x79, 0x22, 0x3e, 0xf5, 0x25, 0x39, 0x61, 0x77, 0x4e, 0x5a, 0xa1, 0x58, + 0xf3, 0xec, 0x16, 0x98, 0xa0, 0x3d, 0x1c, 0x06, 0x6a, 0xfa, 0xd6, 0x93, 0x3d, 0xeb, 0x0a, 0x94, + 0x8a, 0xe6, 0x67, 0x53, 0x9e, 0x00, 0xf9, 0x16, 0xae, 0x16, 0xc6, 0x6c, 0xfa, 0xd6, 0x2b, 0xfb, + 0x17, 0x8a, 0xb3, 0x68, 0x34, 0xab, 0xfa, 0x17, 0xb2, 0x90, 0x07, 0x68, 0x1c, 0xc7, 0xc9, 0x5a, + 0xf5, 0xb7, 0xa4, 0x21, 0xba, 0xcd, 0x9b, 0xe0, 0x06, 0xda, 0x27, 0x52, 0xfb, 0x63, 0xb1, 0xb9, + 0xb0, 0xe1, 0x4f, 0x06, 0x3d, 0xab, 0xa4, 0xde, 0x28, 0x6a, 0xde, 0x4c, 0x7e, 0xd1, 0x9b, 0x44, + 0xde, 0x08, 0xd7, 0x0f, 0xc8, 0x5d, 0x6e, 0x34, 0xab, 0xc5, 0xb5, 0x72, 0x61, 0x93, 0xb7, 0x6d, + 0xea, 0x8d, 0xda, 0x7a, 0x53, 0xdb, 0xa8, 0x56, 0x2b, 0xd5, 0x65, 0x42, 0xcc, 0x33, 0x09, 0x4f, + 0x86, 0x19, 0xce, 0x69, 0x95, 0x46, 0xb9, 0x59, 0xaa, 0x55, 0x97, 0x2a, 0xcb, 0x05, 0x63, 0x90, + 0x61, 0x74, 0xbf, 0x72, 0x0d, 0x5c, 0xc5, 0x71, 0x52, 0xa9, 0x55, 0xbd, 0x99, 0x6d, 0xa9, 0x58, + 0x2d, 0x95, 0xbd, 0x69, 0xec, 0x05, 0x45, 0x85, 0x13, 0x84, 0x5c, 0x73, 0xa9, 0xb2, 0xca, 0x6e, + 0x46, 0x7d, 0x2a, 0xa3, 0x9c, 0x82, 0xcb, 0xd8, 0x6f, 0x95, 0xea, 0xd9, 0xe2, 0x6a, 0x65, 0xb1, + 0xf0, 0x07, 0x19, 0xe5, 0x3a, 0xb8, 0x9a, 0xfb, 0x8b, 0xec, 0x2b, 0x35, 0x2b, 0x8b, 0xcd, 0xb5, + 0x4a, 0x7d, 0xad, 0xd8, 0x28, 0xad, 0x14, 0x3e, 0x8d, 0xe7, 0x0b, 0x81, 0x01, 0xcc, 0xb8, 0x65, + 0xbe, 0x9c, 0x1d, 0xd3, 0x8b, 0xbc, 0xa2, 0x3e, 0xb6, 0x2f, 0xec, 0xf1, 0x36, 0xec, 0x27, 0x82, + 0xd1, 0x61, 0x91, 0x53, 0xa1, 0x5b, 0x12, 0xd0, 0x4a, 0xa6, 0x43, 0x8d, 0x21, 0x54, 0xe8, 0x1a, + 0xb8, 0xaa, 0x5a, 0x26, 0x48, 0x69, 0xe5, 0x52, 0xed, 0x6c, 0x59, 0x6b, 0x9e, 0x2b, 0xae, 0xae, + 0x96, 0x1b, 0xcd, 0xa5, 0x8a, 0x56, 0x6f, 0x14, 0x36, 0xd5, 0x7f, 0x96, 0x82, 0xd5, 0x1c, 0x46, + 0x5a, 0x7f, 0x2d, 0x25, 0x6d, 0xd6, 0xb1, 0xab, 0x36, 0x3f, 0x01, 0x79, 0xc7, 0xd5, 0xdd, 0x5d, + 0x87, 0xb6, 0xea, 0x47, 0xf5, 0x6f, 0xd5, 0xf3, 0x75, 0x9c, 0x49, 0xa3, 0x99, 0xd5, 0xbf, 0xc8, + 0x24, 0x69, 0xa6, 0x23, 0x58, 0xd0, 0x31, 0x86, 0x10, 0xf1, 0x69, 0x50, 0x7d, 0x6d, 0xaf, 0xd4, + 0x9b, 0xc5, 0x55, 0xad, 0x5c, 0x5c, 0xbc, 0x2f, 0x58, 0xc6, 0x41, 0xca, 0x09, 0x38, 0xb6, 0x51, + 0x2d, 0x2e, 0xac, 0x96, 0x71, 0x73, 0xa9, 0x55, 0xab, 0xe5, 0x92, 0x27, 0xf7, 0x9f, 0xc3, 0x9b, + 0x26, 0x9e, 0x05, 0x8d, 0xf9, 0xf6, 0xac, 0x1c, 0x46, 0xfe, 0xdf, 0x14, 0xf6, 0x2d, 0x0a, 0x35, + 0x8c, 0xa5, 0x35, 0x5a, 0x1c, 0xbe, 0x24, 0xe4, 0x4e, 0x24, 0xc4, 0x49, 0x32, 0x3c, 0xfe, 0xf3, + 0x10, 0x78, 0x9c, 0x80, 0x63, 0x2c, 0x1e, 0xd8, 0xad, 0x28, 0x1a, 0x86, 0xcf, 0x4b, 0x30, 0xb1, + 0x66, 0x6c, 0x61, 0xbf, 0xca, 0xa7, 0x86, 0xc6, 0xc4, 0x1c, 0x48, 0x81, 0x1b, 0x8b, 0x64, 0xb4, + 0xb9, 0xe9, 0xb3, 0xd4, 0x77, 0x99, 0xe2, 0x85, 0x89, 0xfb, 0x17, 0x5a, 0x6c, 0x44, 0xff, 0xf2, + 0xc1, 0x44, 0xfd, 0x4b, 0x7f, 0x5a, 0xc9, 0x84, 0x5d, 0x39, 0x98, 0xb0, 0x19, 0xe7, 0x11, 0xf5, + 0xd9, 0x53, 0x90, 0xaf, 0xa3, 0x0e, 0x6a, 0xb9, 0xea, 0x3b, 0xa4, 0xa1, 0xa4, 0x1a, 0x67, 0x5c, + 0xc9, 0x89, 0x8c, 0xab, 0x6c, 0x0a, 0xc6, 0x55, 0x6e, 0x78, 0xe3, 0x2a, 0x3f, 0xc8, 0xb8, 0x52, + 0x3f, 0x9e, 0x4f, 0xda, 0xf7, 0x12, 0x51, 0x1f, 0xae, 0x49, 0xf5, 0x0b, 0xb9, 0x24, 0x7d, 0x75, + 0x5f, 0x8e, 0x93, 0xa9, 0xeb, 0x6b, 0xb2, 0x29, 0x2c, 0xea, 0x28, 0xd7, 0xc2, 0xd5, 0xe1, 0x7b, + 0xb3, 0xfc, 0x8c, 0x4a, 0xbd, 0x51, 0xc7, 0x76, 0x54, 0xa9, 0xa6, 0x69, 0x1b, 0xeb, 0x64, 0x65, + 0xfe, 0x24, 0x28, 0x21, 0x15, 0x6d, 0xa3, 0x4a, 0xac, 0xa6, 0x2d, 0x9e, 0xfa, 0x52, 0xa5, 0xba, + 0xd8, 0x0c, 0x7a, 0xa2, 0xea, 0x52, 0xad, 0xb0, 0xed, 0x4d, 0x84, 0x19, 0xea, 0x5e, 0x8b, 0xa1, + 0x25, 0x14, 0xab, 0x8b, 0xcd, 0xb5, 0x6a, 0x79, 0xad, 0x56, 0xad, 0x94, 0x70, 0x7a, 0xbd, 0xdc, + 0x28, 0x18, 0xde, 0xf0, 0xdd, 0x63, 0xa7, 0xd5, 0xcb, 0x45, 0xad, 0xb4, 0x52, 0xd6, 0x48, 0x91, + 0xf7, 0x2b, 0xd7, 0xc3, 0x99, 0x62, 0xb5, 0xd6, 0xf0, 0x52, 0x8a, 0xd5, 0xfb, 0x1a, 0xf7, 0xad, + 0x97, 0x9b, 0xeb, 0x5a, 0xad, 0x54, 0xae, 0xd7, 0xbd, 0xde, 0x8f, 0x5a, 0x75, 0x85, 0x8e, 0xf2, + 0x34, 0xb8, 0x9d, 0x61, 0xad, 0xdc, 0xc0, 0xdb, 0xc0, 0x6b, 0x35, 0xec, 0x09, 0xb4, 0x58, 0x6e, + 0xae, 0x14, 0xeb, 0xcd, 0x4a, 0xb5, 0x54, 0x5b, 0x5b, 0x2f, 0x36, 0x2a, 0x5e, 0x27, 0xb9, 0xae, + 0xd5, 0x1a, 0xb5, 0xe6, 0xd9, 0xb2, 0x56, 0xaf, 0xd4, 0xaa, 0x05, 0xd3, 0xab, 0x32, 0xd3, 0xab, + 0xfa, 0xa3, 0x9b, 0xa5, 0x5c, 0x05, 0xa7, 0xfc, 0xf4, 0xd5, 0x9a, 0x27, 0x68, 0xc6, 0xce, 0xeb, + 0xb2, 0x63, 0x63, 0xbd, 0x51, 0xd3, 0x88, 0xa5, 0xb7, 0x56, 0x59, 0xd6, 0x3c, 0xf3, 0xb4, 0xf0, + 0xcc, 0x54, 0xed, 0xc0, 0x7f, 0x91, 0x20, 0x5b, 0x77, 0xad, 0xae, 0xfa, 0xe3, 0x61, 0x07, 0x74, + 0x1a, 0xc0, 0xc6, 0xbb, 0xbe, 0xde, 0xdc, 0x97, 0xce, 0x86, 0x99, 0x14, 0xf5, 0xf7, 0x85, 0xb7, + 0xaa, 0xc2, 0x91, 0xd2, 0xea, 0x46, 0xf4, 0xe0, 0xdf, 0x17, 0x3b, 0xbb, 0x13, 0x4d, 0x28, 0x59, + 0x7b, 0x78, 0xe1, 0x30, 0x9b, 0x51, 0x2a, 0x9c, 0x64, 0x60, 0xf5, 0xe4, 0xef, 0xab, 0x0c, 0x52, + 0x2e, 0x87, 0xcb, 0x7a, 0x94, 0x0f, 0xeb, 0xdc, 0xa6, 0xf2, 0x63, 0xf0, 0x28, 0x46, 0xfd, 0xcb, + 0x6b, 0xb5, 0xb3, 0xe5, 0x40, 0xd1, 0x17, 0x8b, 0x8d, 0x62, 0x61, 0x4b, 0xfd, 0xbc, 0x0c, 0xd9, + 0x35, 0x6b, 0xaf, 0x77, 0x87, 0xd0, 0x44, 0x17, 0x99, 0x15, 0x68, 0xff, 0x95, 0x3f, 0xab, 0x20, + 0x24, 0xf6, 0xb5, 0x68, 0x6f, 0x80, 0x2f, 0x49, 0x49, 0xc4, 0xbe, 0x76, 0x50, 0x17, 0x80, 0xbf, + 0x1f, 0x46, 0xec, 0x11, 0xa2, 0x45, 0xca, 0x19, 0x38, 0x1d, 0x7e, 0xa8, 0x2c, 0x96, 0xab, 0x8d, + 0xca, 0xd2, 0x7d, 0xa1, 0x70, 0x2b, 0x9a, 0x90, 0xf8, 0x07, 0x75, 0x73, 0xf1, 0xf3, 0xbb, 0x53, + 0x70, 0x3c, 0xfc, 0xb6, 0x5c, 0x6e, 0xf8, 0x5f, 0xee, 0x57, 0x1f, 0xcc, 0xc1, 0x0c, 0xe9, 0xf6, + 0x37, 0xba, 0x6d, 0xcf, 0x62, 0x7a, 0x42, 0x88, 0xee, 0x0d, 0x70, 0xb4, 0xb2, 0xbe, 0x54, 0xaf, + 0xbb, 0x96, 0xad, 0x6f, 0xa1, 0x62, 0xbb, 0x6d, 0x53, 0x69, 0xf5, 0x26, 0xab, 0xef, 0x15, 0x5e, + 0x5d, 0xe5, 0x87, 0x1a, 0x52, 0x66, 0x04, 0xea, 0x5f, 0x15, 0x5a, 0x0d, 0x15, 0x20, 0x98, 0x0c, + 0xfd, 0xfb, 0x47, 0xdc, 0xe6, 0xa2, 0x71, 0xd9, 0x3c, 0xf3, 0x3c, 0x09, 0xa6, 0x1a, 0xc6, 0x0e, + 0x7a, 0x96, 0x65, 0x22, 0x47, 0x99, 0x00, 0x79, 0x79, 0xad, 0x51, 0x38, 0xe2, 0x3d, 0x78, 0xa6, + 0x6c, 0x06, 0x3f, 0x94, 0xbd, 0x02, 0xbc, 0x87, 0x62, 0xa3, 0x20, 0x7b, 0x0f, 0x6b, 0xe5, 0x46, + 0x21, 0xeb, 0x3d, 0x54, 0xcb, 0x8d, 0x42, 0xce, 0x7b, 0x58, 0x5f, 0x6d, 0x14, 0xf2, 0xde, 0x43, + 0xa5, 0xde, 0x28, 0x4c, 0x78, 0x0f, 0x0b, 0xf5, 0x46, 0x61, 0xd2, 0x7b, 0x38, 0x5b, 0x6f, 0x14, + 0xa6, 0xbc, 0x87, 0x52, 0xa3, 0x51, 0x00, 0xef, 0xe1, 0x9e, 0x7a, 0xa3, 0x30, 0xed, 0x3d, 0x14, + 0x4b, 0x8d, 0xc2, 0x0c, 0x7e, 0x28, 0x37, 0x0a, 0xb3, 0xde, 0x43, 0xbd, 0xde, 0x28, 0xcc, 0x61, + 0xca, 0xf5, 0x46, 0xe1, 0x28, 0x2e, 0xab, 0xd2, 0x28, 0x14, 0xbc, 0x87, 0x95, 0x7a, 0xa3, 0x70, + 0x0c, 0x67, 0xae, 0x37, 0x0a, 0x0a, 0x2e, 0xb4, 0xde, 0x28, 0x5c, 0x86, 0xf3, 0xd4, 0x1b, 0x85, + 0xe3, 0xb8, 0x88, 0x7a, 0xa3, 0x70, 0x02, 0xb3, 0x51, 0x6e, 0x14, 0x4e, 0xe2, 0x3c, 0x5a, 0xa3, + 0x70, 0x39, 0xfe, 0x54, 0x6d, 0x14, 0x4e, 0x61, 0xc6, 0xca, 0x8d, 0xc2, 0x15, 0xf8, 0x41, 0x6b, + 0x14, 0x54, 0xfc, 0xa9, 0xd8, 0x28, 0x5c, 0xa9, 0x3e, 0x0a, 0xa6, 0x96, 0x91, 0x4b, 0x40, 0x54, + 0x0b, 0x20, 0x2f, 0x23, 0x97, 0x9d, 0x3c, 0x7d, 0x5d, 0x86, 0xcb, 0xe9, 0x84, 0x7b, 0xc9, 0xb6, + 0x76, 0x56, 0xd1, 0x96, 0xde, 0xba, 0x54, 0x7e, 0xc0, 0x33, 0xb1, 0xd8, 0xdd, 0x70, 0x05, 0xb2, + 0xdd, 0xb0, 0x33, 0xc2, 0xcf, 0xb1, 0x16, 0xa9, 0xbf, 0x04, 0x28, 0x87, 0x4b, 0x80, 0xd4, 0x62, + 0xfb, 0x27, 0x56, 0xa3, 0xb9, 0x55, 0xfb, 0x4c, 0xcf, 0xaa, 0xbd, 0xd7, 0x4c, 0xba, 0xc8, 0x76, + 0x2c, 0x53, 0xef, 0xd4, 0xa9, 0xbb, 0x04, 0x59, 0x6b, 0xec, 0x4d, 0x56, 0x9e, 0xee, 0xb7, 0x0c, + 0x62, 0xb5, 0x3d, 0x35, 0x6e, 0x5d, 0xa1, 0xb7, 0x9a, 0x11, 0x8d, 0xe4, 0xd3, 0x41, 0x23, 0x69, + 0x70, 0x8d, 0xe4, 0xee, 0x03, 0xd0, 0x1e, 0xcb, 0x1c, 0x23, 0x74, 0x26, 0xf6, 0x37, 0x09, 0x64, + 0x6f, 0xe6, 0x76, 0xb2, 0x6c, 0xf6, 0x9b, 0x01, 0xb0, 0xba, 0xf0, 0x36, 0x16, 0x9a, 0x75, 0x5e, + 0xa4, 0xb7, 0xf7, 0xad, 0x76, 0x7f, 0x9a, 0x11, 0x12, 0xfd, 0x4c, 0x20, 0xd1, 0x3a, 0x27, 0xd1, + 0xbb, 0x86, 0x27, 0x9d, 0x4c, 0xa0, 0xd5, 0x91, 0x76, 0x40, 0x59, 0xf5, 0x5b, 0x59, 0x78, 0x14, + 0xf1, 0x78, 0xa2, 0x1c, 0x92, 0x56, 0x56, 0x34, 0xdb, 0x1a, 0x72, 0x5c, 0xdd, 0x76, 0xb9, 0x53, + 0xe8, 0x3d, 0x53, 0xad, 0x4c, 0x0a, 0x53, 0x2d, 0x69, 0xe0, 0x54, 0x4b, 0x7d, 0x0f, 0x6b, 0x3e, + 0x9c, 0xe3, 0x31, 0x2e, 0xf6, 0xef, 0xff, 0xe3, 0x6a, 0x18, 0x05, 0x75, 0x60, 0x57, 0xfc, 0x24, + 0x07, 0xf5, 0xd2, 0x81, 0x4b, 0x48, 0x86, 0xf8, 0xef, 0x8f, 0xd6, 0xce, 0xcb, 0xb2, 0xdf, 0x78, + 0xa3, 0xa4, 0xd0, 0x4e, 0xd5, 0x40, 0xff, 0xec, 0x04, 0x4c, 0xe1, 0xb6, 0xb0, 0x6a, 0x98, 0x17, + 0xd4, 0x87, 0x64, 0x98, 0xa9, 0xa2, 0x8b, 0xa5, 0x6d, 0xbd, 0xd3, 0x41, 0xe6, 0x16, 0x62, 0xcd, + 0xf6, 0x53, 0x30, 0xa1, 0x77, 0xbb, 0xd5, 0x70, 0x77, 0xc7, 0x7f, 0xa5, 0xfd, 0xef, 0x37, 0xfb, + 0x36, 0xf2, 0x4c, 0x4c, 0x23, 0x0f, 0xca, 0x9d, 0x67, 0xcb, 0x8c, 0x98, 0x41, 0x5f, 0x03, 0xd3, + 0x2d, 0x3f, 0x4b, 0x70, 0x5a, 0x85, 0x4d, 0x52, 0xff, 0x36, 0x51, 0x37, 0x20, 0x54, 0x78, 0x32, + 0xa5, 0x40, 0x23, 0xb6, 0x43, 0x4e, 0xc0, 0xb1, 0x46, 0xad, 0xd6, 0x5c, 0x2b, 0x56, 0xef, 0x0b, + 0x4f, 0x89, 0x6f, 0xaa, 0xaf, 0xc9, 0xc2, 0x5c, 0xdd, 0xea, 0xec, 0xa1, 0x10, 0xa6, 0x0a, 0xe7, + 0x06, 0xc5, 0xca, 0x29, 0xb3, 0x4f, 0x4e, 0xca, 0x49, 0xc8, 0xeb, 0xa6, 0x73, 0x11, 0xf9, 0xb6, + 0x21, 0x7d, 0xa3, 0x30, 0x7e, 0x98, 0x6d, 0xc7, 0x1a, 0x0f, 0xe3, 0x1d, 0x03, 0x24, 0xc9, 0x73, + 0x15, 0x01, 0xe4, 0x19, 0x98, 0x71, 0xc8, 0x16, 0x6d, 0x83, 0xd9, 0x89, 0xe7, 0xd2, 0x30, 0x8b, + 0xc4, 0x47, 0x40, 0xa6, 0x2c, 0xe2, 0x37, 0xf5, 0xa1, 0xa0, 0xf9, 0x6f, 0x70, 0x10, 0x17, 0x0f, + 0xc2, 0x58, 0x32, 0x90, 0x5f, 0x37, 0xea, 0x19, 0xde, 0x29, 0x38, 0x4e, 0x5b, 0x6d, 0xb3, 0xb4, + 0x52, 0x5c, 0x5d, 0x2d, 0x57, 0x97, 0xcb, 0xcd, 0xca, 0x22, 0xd9, 0x20, 0x0a, 0x53, 0x8a, 0x8d, + 0x46, 0x79, 0x6d, 0xbd, 0x51, 0x6f, 0x96, 0x9f, 0x51, 0x2a, 0x97, 0x17, 0xb1, 0x23, 0x22, 0x3e, + 0x49, 0xe4, 0xbb, 0x8c, 0x16, 0xab, 0xf5, 0x73, 0x65, 0xad, 0xb0, 0x7d, 0xa6, 0x08, 0xd3, 0x4c, + 0x3f, 0xef, 0x71, 0xb7, 0x88, 0x36, 0xf5, 0xdd, 0x0e, 0xb5, 0xd5, 0x0a, 0x47, 0x3c, 0xee, 0xb0, + 0x6c, 0x6a, 0x66, 0xe7, 0x52, 0x21, 0xa3, 0x14, 0x60, 0x86, 0xed, 0xd2, 0x0b, 0x92, 0xfa, 0xce, + 0xab, 0x60, 0xea, 0x9c, 0x65, 0x5f, 0xc0, 0xde, 0x73, 0xea, 0x07, 0x48, 0x34, 0x19, 0xff, 0x5c, + 0x2e, 0x33, 0xb0, 0xbf, 0x4e, 0xdc, 0x47, 0xc3, 0xa7, 0x36, 0x3f, 0xf0, 0xec, 0xed, 0x35, 0x30, + 0x7d, 0xd1, 0xcf, 0x1d, 0xb6, 0x74, 0x26, 0x49, 0xfd, 0x6f, 0x62, 0x5e, 0x17, 0x83, 0x8b, 0x4c, + 0xdf, 0x2b, 0xe0, 0x1d, 0x12, 0xe4, 0x97, 0x91, 0x5b, 0xec, 0x74, 0x58, 0xb9, 0xbd, 0x42, 0xf8, + 0x3c, 0x15, 0x57, 0x89, 0x62, 0xa7, 0x13, 0xdd, 0xa8, 0x18, 0x01, 0xf9, 0x7e, 0xff, 0x5c, 0x9a, + 0xa0, 0xb7, 0xe2, 0x80, 0x02, 0xd3, 0x97, 0xd8, 0x47, 0xe5, 0xc0, 0xb3, 0xe0, 0x61, 0xc6, 0xca, + 0x79, 0x7c, 0x18, 0x49, 0x28, 0x13, 0xef, 0xa1, 0xe0, 0xe7, 0x53, 0xee, 0x85, 0x89, 0x5d, 0x07, + 0x95, 0x74, 0x07, 0x61, 0xde, 0x7a, 0x6b, 0x5a, 0x3b, 0x7f, 0x3f, 0x6a, 0xb9, 0xf3, 0x95, 0x1d, + 0xcf, 0xa0, 0xde, 0x20, 0x19, 0x83, 0xe0, 0x3c, 0xf4, 0x5d, 0xf3, 0x29, 0x78, 0x93, 0x92, 0x8b, + 0x86, 0xbb, 0x5d, 0xda, 0xd6, 0x5d, 0xba, 0xf6, 0x1d, 0xbc, 0xab, 0x2f, 0x19, 0x02, 0xce, 0xd8, + 0x1d, 0xf8, 0xc8, 0x63, 0x99, 0x89, 0x41, 0x1c, 0xc1, 0xb6, 0xf9, 0x30, 0x20, 0xfe, 0x83, 0x04, + 0xd9, 0x5a, 0x17, 0x99, 0xc2, 0x67, 0x90, 0x02, 0xd9, 0x4a, 0x3d, 0xb2, 0x7d, 0x48, 0xdc, 0x27, + 0x2f, 0xa8, 0xb4, 0x57, 0x72, 0x84, 0x64, 0x6f, 0x86, 0xac, 0x61, 0x6e, 0x5a, 0xd4, 0x30, 0xbd, + 0x32, 0x62, 0xeb, 0xad, 0x62, 0x6e, 0x5a, 0x1a, 0xce, 0x28, 0xea, 0x8e, 0x17, 0x57, 0x76, 0xfa, + 0xe2, 0xfe, 0xf6, 0x24, 0xe4, 0x89, 0x3a, 0xab, 0x2f, 0x97, 0x41, 0x2e, 0xb6, 0xdb, 0x11, 0x82, + 0x97, 0xf6, 0x09, 0xde, 0xc2, 0xbf, 0x05, 0x98, 0x04, 0xef, 0x7c, 0x08, 0x19, 0xc1, 0xbe, 0x9d, + 0x36, 0xa9, 0x62, 0xbb, 0x1d, 0xed, 0xf9, 0x1b, 0x14, 0x28, 0xf1, 0x05, 0xb2, 0x2d, 0x5c, 0x16, + 0x6b, 0xe1, 0x89, 0x07, 0x82, 0x48, 0xfe, 0xd2, 0x87, 0xe8, 0x9f, 0x24, 0x98, 0x58, 0x35, 0x1c, + 0xd7, 0xc3, 0xa6, 0x28, 0x82, 0xcd, 0x55, 0x30, 0xe5, 0x8b, 0xc6, 0xeb, 0xf2, 0xbc, 0xfe, 0x3c, + 0x4c, 0x50, 0xdf, 0xc8, 0xa2, 0x73, 0x0f, 0x8f, 0xce, 0x13, 0xe3, 0x6b, 0x4f, 0xb9, 0x88, 0x3e, + 0xdb, 0x11, 0x16, 0x2b, 0xf5, 0x16, 0xfb, 0x9b, 0x81, 0xc0, 0xd7, 0x38, 0x81, 0xdf, 0x36, 0x4c, + 0x91, 0xe9, 0x0b, 0xfd, 0x0b, 0x12, 0x80, 0x57, 0x36, 0x3d, 0x40, 0xf7, 0x18, 0xee, 0x58, 0x7c, + 0x8c, 0x74, 0x5f, 0xc3, 0x4a, 0x77, 0x8d, 0x97, 0xee, 0x93, 0x07, 0x57, 0x35, 0xee, 0xa0, 0x9c, + 0x52, 0x00, 0xd9, 0x08, 0x44, 0xeb, 0x3d, 0xaa, 0xef, 0x08, 0x84, 0xba, 0xce, 0x09, 0xf5, 0x8e, + 0x21, 0x4b, 0x4a, 0x5f, 0xae, 0x7f, 0x29, 0xc1, 0x44, 0x1d, 0xb9, 0x5e, 0x37, 0xa9, 0x9e, 0x15, + 0xe9, 0xe1, 0x99, 0xb6, 0x2d, 0x09, 0xb6, 0xed, 0xef, 0x65, 0x44, 0xc3, 0xeb, 0x84, 0x92, 0xa1, + 0x3c, 0x45, 0x2c, 0x1e, 0x3c, 0x2c, 0x14, 0x5e, 0x67, 0x10, 0xb5, 0xf4, 0xa5, 0xfb, 0x36, 0x29, + 0xd8, 0xb8, 0xe7, 0xcf, 0xb7, 0xb0, 0x66, 0x71, 0x66, 0xbf, 0x59, 0x2c, 0x7e, 0xbe, 0x85, 0xad, + 0x63, 0xf4, 0xae, 0x75, 0x62, 0x63, 0x63, 0x04, 0x1b, 0xca, 0xc3, 0xc8, 0xeb, 0x39, 0x32, 0xe4, + 0xe9, 0xca, 0xf2, 0x5d, 0xf1, 0x2b, 0xcb, 0x83, 0xa7, 0x16, 0xef, 0x1f, 0xc2, 0x94, 0x8b, 0x5b, + 0xee, 0x0d, 0xd8, 0x90, 0x18, 0x36, 0x6e, 0x82, 0x1c, 0x8e, 0xff, 0x49, 0xc7, 0xb9, 0xd0, 0x17, + 0xc0, 0x27, 0x51, 0xf6, 0xbe, 0x6a, 0x24, 0x53, 0x62, 0x14, 0x46, 0xb0, 0x42, 0x3c, 0x0c, 0x0a, + 0xef, 0xf9, 0x7c, 0x26, 0x30, 0x42, 0xde, 0x9f, 0xa5, 0xe6, 0xdf, 0x27, 0xf9, 0x48, 0x24, 0x2d, + 0xcb, 0x74, 0xd1, 0x03, 0xcc, 0x9a, 0x7c, 0x90, 0x10, 0x6b, 0x19, 0x9c, 0x82, 0x09, 0xd7, 0x66, + 0xd7, 0xe9, 0xfd, 0x57, 0xb6, 0xc7, 0xc9, 0xf1, 0x3d, 0x4e, 0x15, 0xce, 0x18, 0x66, 0xab, 0xb3, + 0xdb, 0x46, 0x1a, 0xea, 0xe8, 0x5e, 0xad, 0x9c, 0xa2, 0xb3, 0x88, 0xba, 0xc8, 0x6c, 0x23, 0xd3, + 0x25, 0x7c, 0xfa, 0x9e, 0xd0, 0x02, 0x39, 0xd5, 0x6f, 0xb0, 0x8a, 0x71, 0x27, 0xaf, 0x18, 0x8f, + 0xe9, 0x37, 0xaf, 0x88, 0x31, 0x42, 0x6f, 0x03, 0x20, 0x75, 0x3b, 0x6b, 0xa0, 0x8b, 0xb4, 0x43, + 0xbc, 0xa2, 0xc7, 0x14, 0xad, 0x05, 0x19, 0x34, 0x26, 0xb3, 0xfa, 0x95, 0x40, 0x19, 0xee, 0xe6, + 0x94, 0xe1, 0x26, 0x41, 0x16, 0x92, 0xe9, 0x41, 0x77, 0x88, 0xb5, 0x8e, 0x59, 0x98, 0x0a, 0x57, + 0x28, 0x65, 0xe5, 0x0a, 0x38, 0xe1, 0xfb, 0x44, 0x54, 0xcb, 0xe5, 0xc5, 0x7a, 0x73, 0x63, 0x7d, + 0x59, 0x2b, 0x2e, 0x96, 0x0b, 0xa0, 0x28, 0x30, 0x57, 0x5b, 0xb8, 0xa7, 0x5c, 0x6a, 0x04, 0xae, + 0x0c, 0x59, 0xf5, 0xcf, 0x25, 0xc8, 0x61, 0x37, 0x7e, 0xf5, 0xa7, 0x47, 0xa4, 0x39, 0x0e, 0xb7, + 0xc3, 0x13, 0x4c, 0xa4, 0xc4, 0x23, 0x84, 0x52, 0x61, 0x62, 0xae, 0x0e, 0x14, 0x21, 0x34, 0x86, + 0x50, 0xfa, 0xcd, 0xd3, 0x6b, 0x92, 0xf5, 0x6d, 0xeb, 0xe2, 0x8f, 0x72, 0x93, 0xf4, 0xea, 0x7f, + 0xc8, 0x4d, 0xb2, 0x0f, 0x0b, 0x63, 0x6f, 0x92, 0x7d, 0xda, 0x5d, 0x4c, 0x33, 0x55, 0x9f, 0x9d, + 0x0b, 0x16, 0x64, 0x9e, 0x27, 0x1d, 0x68, 0x41, 0xa6, 0x08, 0xb3, 0x86, 0xe9, 0x22, 0xdb, 0xd4, + 0x3b, 0x4b, 0x1d, 0x7d, 0xcb, 0x0f, 0x5b, 0xd0, 0x3b, 0x0b, 0xaf, 0x30, 0x79, 0x34, 0xfe, 0x0f, + 0xe5, 0x34, 0x80, 0x8b, 0x76, 0xba, 0x1d, 0xdd, 0x0d, 0x55, 0x8f, 0x49, 0x61, 0xb5, 0x2f, 0xcb, + 0x6b, 0xdf, 0x2d, 0x70, 0x19, 0x01, 0xad, 0x71, 0xa9, 0x8b, 0x36, 0x4c, 0xe3, 0x99, 0xbb, 0x38, + 0x70, 0x15, 0xd1, 0xd1, 0x7e, 0x9f, 0xb8, 0x65, 0x89, 0x7c, 0xcf, 0xb2, 0xc4, 0x3f, 0x08, 0x1f, + 0x88, 0xf5, 0x5b, 0xfd, 0x80, 0x03, 0xb1, 0x41, 0x4b, 0x93, 0x7b, 0x5a, 0x5a, 0x60, 0x2c, 0x64, + 0x05, 0x8c, 0x05, 0x16, 0x95, 0x9c, 0xa0, 0xa1, 0xfd, 0x06, 0xa1, 0x13, 0xb7, 0x71, 0xd5, 0x18, + 0xc3, 0x44, 0x4e, 0x86, 0x39, 0x52, 0xf4, 0x82, 0x65, 0x5d, 0xd8, 0xd1, 0xed, 0x0b, 0xaa, 0x7d, + 0x20, 0x55, 0x8c, 0x5d, 0x13, 0x89, 0x5c, 0xe8, 0xfb, 0x0c, 0x8b, 0xfa, 0x32, 0x8f, 0xfa, 0xe3, + 0xa3, 0xc5, 0xe5, 0xf3, 0x3c, 0x9e, 0x45, 0x91, 0xb7, 0x04, 0x78, 0xde, 0xc3, 0xe1, 0xf9, 0xa4, + 0xc4, 0x0c, 0xa6, 0x8f, 0xeb, 0x1f, 0x06, 0xb8, 0xfa, 0x1d, 0x3d, 0x3b, 0x9f, 0x1c, 0x25, 0xae, + 0xea, 0x57, 0x87, 0xc3, 0xce, 0xe7, 0x6b, 0x08, 0xec, 0x0a, 0x20, 0x5f, 0x08, 0xb6, 0xb0, 0xbc, + 0x47, 0xb6, 0x42, 0xd9, 0xf4, 0xd0, 0x8c, 0x60, 0x79, 0x2c, 0x68, 0x1e, 0xe7, 0x59, 0xa8, 0x75, + 0x53, 0xc5, 0xf4, 0xcb, 0xc2, 0xeb, 0x34, 0x7d, 0x05, 0x44, 0xb8, 0x1b, 0x4f, 0xab, 0x14, 0x5b, + 0xe4, 0x11, 0x67, 0x33, 0x7d, 0x34, 0x5f, 0x9c, 0x83, 0x29, 0xff, 0xc8, 0x32, 0x8e, 0xa8, 0x1f, + 0x60, 0x78, 0x12, 0xf2, 0x8e, 0xb5, 0x6b, 0xb7, 0x10, 0x5d, 0x39, 0xa3, 0x6f, 0x43, 0xac, 0xf2, + 0x0c, 0x1c, 0xcf, 0xf7, 0x99, 0x0c, 0xd9, 0xc4, 0x26, 0x43, 0xb4, 0x41, 0x1a, 0x37, 0xc0, 0xbf, + 0x44, 0x38, 0x0c, 0x2a, 0x87, 0x59, 0x1d, 0xb9, 0x8f, 0xc4, 0x31, 0xfe, 0xf7, 0x84, 0xd6, 0x10, + 0x06, 0xd4, 0x24, 0x99, 0xca, 0xd5, 0x86, 0x30, 0x54, 0xaf, 0x84, 0xcb, 0xfd, 0x1c, 0xd4, 0x42, + 0xc5, 0x16, 0xe9, 0x86, 0xb6, 0x5a, 0x90, 0xd5, 0xe7, 0x64, 0xa1, 0x40, 0x58, 0xab, 0x05, 0xc6, + 0x9a, 0xfa, 0x8a, 0xcc, 0x61, 0x5b, 0xa4, 0xd1, 0x53, 0xcc, 0xcf, 0x49, 0xa2, 0xa1, 0xd6, 0x38, + 0xc1, 0x87, 0xb5, 0x8b, 0xd0, 0xa4, 0x21, 0x9a, 0x59, 0x8c, 0xf2, 0xa9, 0xbf, 0x91, 0x11, 0x89, + 0xdc, 0x26, 0xc6, 0x62, 0xfa, 0xbd, 0xd2, 0x17, 0xb3, 0x7e, 0xe4, 0x89, 0x25, 0xdb, 0xda, 0xd9, + 0xb0, 0x3b, 0xea, 0xff, 0x29, 0x14, 0x18, 0x33, 0xc2, 0xfc, 0x97, 0xa2, 0xcd, 0xff, 0x02, 0xc8, + 0xbb, 0x76, 0xc7, 0x1f, 0xbe, 0x77, 0xed, 0xce, 0x10, 0xc3, 0xb7, 0x72, 0x3d, 0xcc, 0xe9, 0xed, + 0xf6, 0xba, 0xbe, 0x85, 0x4a, 0xde, 0xbc, 0xda, 0x74, 0xe9, 0xa9, 0xf4, 0x9e, 0xd4, 0xd8, 0xae, + 0xe8, 0x1b, 0xc2, 0x3b, 0x71, 0x1c, 0x48, 0x54, 0x3e, 0x63, 0x19, 0xde, 0xbc, 0x21, 0xa1, 0xb5, + 0xad, 0x87, 0x31, 0x32, 0xe8, 0x9b, 0xe0, 0x0e, 0x9d, 0x00, 0xdf, 0xe9, 0x6b, 0xd6, 0xef, 0x48, + 0x30, 0xe1, 0xc9, 0xbb, 0xd8, 0x6e, 0xab, 0x8f, 0xe6, 0x42, 0xc9, 0x44, 0xee, 0x91, 0xbe, 0x40, + 0x78, 0x73, 0xda, 0xaf, 0x21, 0xa1, 0x1f, 0x81, 0x49, 0x28, 0x44, 0x89, 0x13, 0xa2, 0xd8, 0x1e, + 0x74, 0x6c, 0x11, 0xe9, 0x8b, 0xef, 0xd3, 0x12, 0xcc, 0xfa, 0xf3, 0x88, 0x25, 0xe4, 0xb6, 0xb6, + 0xd5, 0xdb, 0x44, 0x17, 0x9a, 0x68, 0x4b, 0x93, 0x82, 0x96, 0xa6, 0xfe, 0x20, 0x93, 0x50, 0xe5, + 0xb9, 0x92, 0x23, 0x56, 0xe9, 0x12, 0xe9, 0x62, 0x1c, 0xc1, 0xf4, 0x85, 0xf9, 0x15, 0x09, 0xa0, + 0x61, 0x05, 0x73, 0xdd, 0x03, 0x48, 0xf2, 0x65, 0xc2, 0xb7, 0x54, 0xd0, 0x8a, 0x87, 0xc5, 0x26, + 0xef, 0x39, 0x04, 0xb7, 0xd8, 0x06, 0x95, 0x34, 0x96, 0xb6, 0x3e, 0xb5, 0xb8, 0xdb, 0xed, 0x18, + 0x2d, 0xdd, 0xed, 0xdd, 0x17, 0x8e, 0x16, 0x2f, 0xbe, 0x6e, 0x2a, 0x91, 0x51, 0x18, 0x94, 0x11, + 0x21, 0x4b, 0x72, 0x18, 0x57, 0xf2, 0x0f, 0xe3, 0x0a, 0xee, 0xf5, 0x0c, 0x20, 0x3e, 0x06, 0xf5, + 0x94, 0xe1, 0x68, 0xad, 0x8b, 0xcc, 0x05, 0x1b, 0xe9, 0xed, 0x96, 0xbd, 0xbb, 0x73, 0xde, 0x61, + 0x9d, 0x1a, 0xe2, 0x75, 0x94, 0x59, 0x3a, 0x96, 0xb8, 0xa5, 0x63, 0xf5, 0xb9, 0xb2, 0xe8, 0x81, + 0x7b, 0x66, 0x83, 0x83, 0xe1, 0x61, 0x88, 0xa1, 0x2e, 0xd1, 0x56, 0x5c, 0xcf, 0x2a, 0x71, 0x36, + 0xc9, 0x2a, 0xf1, 0x5b, 0x85, 0x8e, 0xef, 0x0b, 0xd5, 0x6b, 0x2c, 0x3b, 0xaa, 0x73, 0x75, 0xe4, + 0x46, 0xc0, 0x7b, 0x1d, 0xcc, 0x9e, 0x0f, 0xbf, 0x04, 0x10, 0xf3, 0x89, 0x7d, 0xfc, 0x1c, 0xde, + 0x96, 0x74, 0x05, 0x86, 0x67, 0x21, 0x02, 0xdd, 0x00, 0x41, 0x49, 0x64, 0x33, 0x35, 0xd1, 0x72, + 0x4a, 0x6c, 0xf9, 0xe9, 0xa3, 0xf0, 0x71, 0x09, 0xa6, 0xf1, 0x25, 0x5a, 0x0b, 0x97, 0xb0, 0x77, + 0xbe, 0xa0, 0x51, 0xf2, 0x62, 0x56, 0xcc, 0x0a, 0x64, 0x3b, 0x86, 0x79, 0xc1, 0xdf, 0x05, 0xf7, + 0x9e, 0xc3, 0x2b, 0x59, 0xa4, 0x3e, 0x57, 0xb2, 0x04, 0xfb, 0x14, 0x41, 0xb9, 0x07, 0xba, 0x23, + 0x70, 0x20, 0xb9, 0xf4, 0xc5, 0xf8, 0x77, 0x59, 0xc8, 0xd7, 0x91, 0x6e, 0xb7, 0xb6, 0xd5, 0xf7, + 0x4b, 0x7d, 0xa7, 0x0a, 0x93, 0xfc, 0x54, 0x61, 0x09, 0x26, 0x36, 0x8d, 0x8e, 0x8b, 0x6c, 0xe2, + 0x19, 0xc4, 0x76, 0xed, 0xa4, 0x89, 0x2f, 0x74, 0xac, 0xd6, 0x85, 0x79, 0x6a, 0xba, 0xcf, 0xfb, + 0x21, 0xbc, 0xe6, 0x97, 0xf0, 0x4f, 0x9a, 0xff, 0xb3, 0x67, 0x10, 0x3a, 0x96, 0xed, 0x46, 0x45, + 0x67, 0x8e, 0xa0, 0x52, 0xb7, 0x6c, 0x57, 0x23, 0x3f, 0x7a, 0x30, 0x6f, 0xee, 0x76, 0x3a, 0x0d, + 0xf4, 0x80, 0xeb, 0x4f, 0xdb, 0xfc, 0x77, 0xcf, 0x58, 0xb4, 0x36, 0x37, 0x1d, 0x44, 0x16, 0x0d, + 0x72, 0x1a, 0x7d, 0x53, 0x8e, 0x43, 0xae, 0x63, 0xec, 0x18, 0x64, 0xa2, 0x91, 0xd3, 0xc8, 0x8b, + 0x72, 0x23, 0x14, 0xc2, 0x39, 0x0e, 0x61, 0xf4, 0x54, 0x1e, 0x37, 0xcd, 0x7d, 0xe9, 0x9e, 0xce, + 0x5c, 0x40, 0x97, 0x9c, 0x53, 0x13, 0xf8, 0x3b, 0x7e, 0xe6, 0xdd, 0x30, 0x45, 0xf6, 0x3b, 0x88, + 0xc4, 0xa3, 0x67, 0xb0, 0x36, 0x6a, 0x59, 0x76, 0xdb, 0x97, 0x4d, 0xf4, 0x04, 0x83, 0xe6, 0x4b, + 0xb6, 0x4b, 0xd1, 0xb7, 0xf0, 0x31, 0xb8, 0x40, 0xe4, 0xbd, 0x6e, 0xd3, 0x2b, 0xfa, 0x9c, 0xe1, + 0x6e, 0xaf, 0x21, 0x57, 0x57, 0xff, 0x4e, 0xee, 0xab, 0x71, 0xd3, 0xff, 0x4b, 0xe3, 0x06, 0x68, + 0x1c, 0x09, 0x13, 0xe0, 0xee, 0xda, 0xa6, 0x27, 0x47, 0x1a, 0x0e, 0x8d, 0x49, 0x51, 0xee, 0x80, + 0x2b, 0xc2, 0x37, 0x7f, 0xa9, 0x74, 0x91, 0x4e, 0x5b, 0xa7, 0x70, 0xf6, 0xe8, 0x0c, 0xca, 0x3a, + 0x5c, 0x4b, 0x3e, 0xae, 0x34, 0xd6, 0x56, 0x57, 0x8c, 0xad, 0xed, 0x8e, 0xb1, 0xb5, 0xed, 0x3a, + 0x15, 0xd3, 0x71, 0x91, 0xde, 0xae, 0x6d, 0x6a, 0x24, 0xae, 0x3a, 0x60, 0x3a, 0x22, 0x59, 0x79, + 0xcf, 0x21, 0xb1, 0xd1, 0x8d, 0xd5, 0x94, 0x88, 0x96, 0xf2, 0x24, 0xaf, 0xa5, 0x38, 0xbb, 0x9d, + 0x00, 0xd3, 0xab, 0x7a, 0x30, 0x0d, 0x55, 0x7d, 0xb7, 0x83, 0x9b, 0x0b, 0xce, 0x9c, 0x74, 0x9c, + 0x8b, 0xe1, 0x24, 0xfd, 0x66, 0xf3, 0xff, 0xe5, 0x21, 0xb7, 0x6c, 0xeb, 0xdd, 0x6d, 0xf5, 0x39, + 0x4c, 0xff, 0x3c, 0xaa, 0x36, 0x11, 0x68, 0xa7, 0x34, 0x48, 0x3b, 0xe5, 0x01, 0xda, 0x99, 0x65, + 0xb4, 0x33, 0x7a, 0x51, 0xf9, 0x0c, 0xcc, 0xb4, 0xac, 0x4e, 0x07, 0xb5, 0x3c, 0x79, 0x54, 0xda, + 0x78, 0x35, 0x67, 0x4a, 0xe3, 0xd2, 0x70, 0x98, 0x43, 0xe4, 0xd6, 0xc9, 0x1a, 0x3a, 0x51, 0xfa, + 0x30, 0x41, 0x7d, 0x85, 0x04, 0xd9, 0x72, 0x7b, 0x0b, 0x71, 0xeb, 0xec, 0x19, 0x66, 0x9d, 0xfd, + 0x24, 0xe4, 0x5d, 0xdd, 0xde, 0x42, 0xae, 0xbf, 0x4e, 0x40, 0xde, 0x82, 0xe8, 0x8b, 0x32, 0x13, + 0x7d, 0xf1, 0xc9, 0x90, 0xf5, 0x64, 0x46, 0x23, 0xf0, 0x5c, 0xdb, 0x0f, 0x7e, 0x2c, 0xfb, 0x79, + 0xaf, 0xc4, 0x79, 0xaf, 0xd6, 0x1a, 0xfe, 0xa1, 0x17, 0xeb, 0xdc, 0x3e, 0xac, 0xf1, 0x15, 0x51, + 0x2d, 0xcb, 0xac, 0xec, 0xe8, 0x5b, 0x88, 0x56, 0x33, 0x4c, 0xf0, 0xbf, 0x96, 0x77, 0xac, 0xfb, + 0x0d, 0x1a, 0x08, 0x31, 0x4c, 0xf0, 0xaa, 0xb0, 0x6d, 0xb4, 0xdb, 0xc8, 0xa4, 0x2d, 0x9b, 0xbe, + 0x9d, 0x39, 0x0d, 0x59, 0x8f, 0x07, 0x4f, 0x7f, 0x3c, 0x63, 0xa1, 0x70, 0x44, 0x99, 0xf1, 0x9a, + 0x15, 0x69, 0xbc, 0x85, 0x0c, 0xbf, 0xa6, 0x2a, 0xe2, 0xb6, 0x43, 0x2a, 0xd7, 0xbf, 0x71, 0x3d, + 0x0e, 0x72, 0xa6, 0xd5, 0x46, 0x03, 0x07, 0x21, 0x92, 0x4b, 0x79, 0x22, 0xe4, 0x50, 0xdb, 0xeb, + 0x15, 0x64, 0x9c, 0xfd, 0x74, 0xbc, 0x2c, 0x35, 0x92, 0x39, 0x99, 0x6f, 0x50, 0x3f, 0x6e, 0xd3, + 0x6f, 0x80, 0x3f, 0x3f, 0x01, 0x47, 0x49, 0x1f, 0x50, 0xdf, 0x3d, 0xef, 0x91, 0x3a, 0x8f, 0xd4, + 0x87, 0xfb, 0x0f, 0x5c, 0x47, 0x79, 0x65, 0x3f, 0x0e, 0x39, 0x67, 0xf7, 0x7c, 0x60, 0x84, 0x92, + 0x17, 0xb6, 0xe9, 0x4a, 0x23, 0x19, 0xce, 0xe4, 0x61, 0x87, 0x33, 0x6e, 0x68, 0x92, 0xfd, 0xc6, + 0x1f, 0x0e, 0x64, 0x79, 0x9c, 0xec, 0x0f, 0x64, 0xfd, 0x86, 0xa1, 0x53, 0x30, 0xa1, 0x6f, 0xba, + 0xc8, 0x0e, 0xcd, 0x44, 0xfa, 0xea, 0x0d, 0x95, 0xe7, 0xd1, 0xa6, 0x65, 0x7b, 0x62, 0x99, 0x22, + 0x43, 0xa5, 0xff, 0xce, 0xb4, 0x5c, 0xe0, 0x76, 0xc8, 0x6e, 0x82, 0x63, 0xa6, 0xb5, 0x88, 0xba, + 0x54, 0xce, 0x04, 0xc5, 0x59, 0xdc, 0x02, 0xf6, 0x7f, 0xd8, 0xd7, 0x95, 0xcc, 0xed, 0xef, 0x4a, + 0xd4, 0xcf, 0x26, 0x9d, 0x33, 0xf7, 0x00, 0x3d, 0x32, 0x0b, 0x4d, 0x79, 0x2a, 0xcc, 0xb4, 0xa9, + 0x8b, 0x56, 0xcb, 0x08, 0x5a, 0x49, 0xe4, 0x7f, 0x5c, 0xe6, 0x50, 0x91, 0xb2, 0xac, 0x22, 0x2d, + 0xc3, 0x24, 0x3e, 0x90, 0xe3, 0x69, 0x52, 0xae, 0x27, 0x8a, 0x1b, 0x9e, 0xd6, 0x05, 0x95, 0x62, + 0xc4, 0x36, 0x5f, 0xa2, 0xbf, 0x68, 0xc1, 0xcf, 0xc9, 0x66, 0xdf, 0xf1, 0x12, 0x4a, 0xbf, 0x39, + 0xfe, 0x66, 0x1e, 0xae, 0x28, 0xd9, 0x96, 0xe3, 0xe0, 0x28, 0x14, 0xbd, 0x0d, 0xf3, 0xcd, 0x12, + 0x17, 0x87, 0xf9, 0x11, 0xdd, 0xfc, 0xfa, 0x35, 0xa8, 0xf1, 0x35, 0x8d, 0x6f, 0x08, 0x1f, 0x65, + 0x0e, 0xf6, 0x1f, 0x22, 0x84, 0xfe, 0xa3, 0xd1, 0x48, 0xde, 0x93, 0x11, 0x39, 0x5d, 0x9d, 0x50, + 0x56, 0xe9, 0x37, 0x97, 0x2f, 0x4b, 0x70, 0x65, 0x2f, 0x37, 0x1b, 0xa6, 0x13, 0x34, 0x98, 0xab, + 0x07, 0xb4, 0x17, 0xfe, 0x34, 0x6e, 0xec, 0x0d, 0x48, 0x11, 0x75, 0x67, 0x4a, 0x8b, 0x58, 0x2c, + 0x79, 0x5f, 0x46, 0xe4, 0x06, 0xa4, 0xc4, 0xe4, 0xd3, 0x17, 0xee, 0xe7, 0xb2, 0x70, 0x74, 0xd9, + 0xb6, 0x76, 0xbb, 0x4e, 0xd8, 0x03, 0xfd, 0x75, 0xff, 0x0d, 0xd7, 0xbc, 0x88, 0x69, 0x70, 0x0d, + 0x4c, 0xdb, 0xd4, 0x9a, 0x0b, 0xb7, 0x5f, 0xd9, 0x24, 0xb6, 0xf7, 0x92, 0x0f, 0xd2, 0x7b, 0x85, + 0xfd, 0x4c, 0x96, 0xeb, 0x67, 0x7a, 0x7b, 0x8e, 0x5c, 0x9f, 0x9e, 0xe3, 0xaf, 0xa4, 0x84, 0x83, + 0x6a, 0x8f, 0x88, 0x22, 0xfa, 0x8b, 0x12, 0xe4, 0xb7, 0x70, 0x46, 0xda, 0x5d, 0x3c, 0x56, 0xac, + 0x66, 0x98, 0xb8, 0x46, 0x7f, 0x0d, 0xe5, 0x2a, 0xb3, 0x3a, 0x9c, 0x68, 0x80, 0x8b, 0xe7, 0x36, + 0x7d, 0xa5, 0x7a, 0x28, 0x0b, 0x33, 0x41, 0xe9, 0x95, 0xb6, 0xa3, 0xbe, 0xb8, 0xbf, 0x46, 0xcd, + 0x8a, 0x68, 0xd4, 0xbe, 0x75, 0xe6, 0x60, 0xd4, 0x91, 0x99, 0x51, 0xa7, 0xef, 0xe8, 0x32, 0x13, + 0x31, 0xba, 0xa8, 0xcf, 0x96, 0x45, 0x6f, 0x32, 0xe0, 0xbb, 0x56, 0x5c, 0x9b, 0x47, 0xf2, 0x60, + 0x21, 0x78, 0x9f, 0xc2, 0xe0, 0x5a, 0xa5, 0xaf, 0x24, 0x1f, 0x92, 0xe0, 0xd8, 0xfe, 0xce, 0xfc, + 0xc7, 0x78, 0x2f, 0x34, 0xaf, 0x4e, 0x4e, 0xe0, 0x85, 0x86, 0xdf, 0xf8, 0x4d, 0xba, 0xd8, 0xa3, + 0xb1, 0x9c, 0xbd, 0x37, 0xb8, 0x13, 0x17, 0x3b, 0xfc, 0x2a, 0x48, 0x34, 0x7d, 0x01, 0xfe, 0xb2, + 0x0c, 0x53, 0x75, 0xe4, 0xae, 0xea, 0x97, 0xac, 0x5d, 0x57, 0xd5, 0x45, 0xb7, 0xe7, 0x9e, 0x02, + 0xf9, 0x0e, 0xfe, 0x85, 0x5e, 0x10, 0x7b, 0x4d, 0xdf, 0xfd, 0x2d, 0xec, 0xfb, 0x43, 0x48, 0x6b, + 0x34, 0x3f, 0x7f, 0x26, 0x59, 0x64, 0x77, 0x34, 0xe0, 0x6e, 0x24, 0x5b, 0x3b, 0x89, 0xf6, 0x4e, + 0xa3, 0x8a, 0x4e, 0x1f, 0x96, 0xe7, 0xca, 0x30, 0x5b, 0x47, 0x6e, 0xc5, 0x59, 0xd2, 0xf7, 0x2c, + 0xdb, 0x70, 0x11, 0x7b, 0x43, 0x54, 0x3c, 0x34, 0xa7, 0x01, 0x8c, 0xe0, 0x37, 0x1a, 0x29, 0x81, + 0x49, 0x51, 0x7f, 0x23, 0xa9, 0xa3, 0x10, 0xc7, 0xc7, 0x48, 0x40, 0x48, 0xe4, 0x63, 0x11, 0x57, + 0x7c, 0xfa, 0x40, 0x7c, 0x49, 0xa2, 0x40, 0x14, 0xed, 0xd6, 0xb6, 0xb1, 0x87, 0xda, 0x09, 0x81, + 0xf0, 0x7f, 0x0b, 0x81, 0x08, 0x08, 0x25, 0x76, 0x5f, 0xe1, 0xf8, 0x18, 0x85, 0xfb, 0x4a, 0x1c, + 0xc1, 0xb1, 0x04, 0x3b, 0xf0, 0xba, 0x1e, 0xba, 0x9e, 0x79, 0x97, 0xa8, 0x58, 0x43, 0x93, 0x4d, + 0x62, 0x4d, 0xb6, 0xa1, 0x3a, 0x16, 0x52, 0xf6, 0x20, 0x9d, 0xce, 0xa6, 0xd1, 0xb1, 0xf4, 0x2d, + 0x3a, 0x7d, 0xa1, 0xbf, 0x4f, 0x86, 0x13, 0xc1, 0x29, 0xe0, 0x3a, 0x72, 0x17, 0x75, 0x67, 0xfb, + 0xbc, 0xa5, 0xdb, 0x6d, 0xf6, 0xe2, 0xe0, 0xa1, 0x4f, 0xfc, 0xa9, 0x5f, 0x64, 0x41, 0xa8, 0xf2, + 0x20, 0xf4, 0x75, 0x15, 0xed, 0xcb, 0xcb, 0x28, 0x3a, 0x99, 0x58, 0x6f, 0xd6, 0xdf, 0x0a, 0xc0, + 0x7a, 0x3a, 0x07, 0xd6, 0x9d, 0xc3, 0xb2, 0x98, 0x3e, 0x70, 0xbf, 0x46, 0x46, 0x04, 0xc6, 0xab, + 0xf9, 0x3e, 0x51, 0xc0, 0x22, 0xbc, 0x5a, 0xe5, 0x48, 0xaf, 0xd6, 0xa1, 0xc6, 0x88, 0x81, 0x1e, + 0xc9, 0xe9, 0x8e, 0x11, 0x87, 0xe8, 0x6d, 0xfc, 0x2e, 0x19, 0x0a, 0x38, 0x0c, 0x04, 0xe3, 0xf1, + 0xad, 0xde, 0x2f, 0x8a, 0xce, 0x3e, 0xef, 0xf2, 0x89, 0xa4, 0xde, 0xe5, 0xea, 0x3b, 0x93, 0xfa, + 0x90, 0xf7, 0x72, 0x3b, 0x12, 0xc4, 0x12, 0xb9, 0x88, 0x0f, 0xe0, 0x20, 0x7d, 0xd0, 0x7e, 0x41, + 0x06, 0xf0, 0x1a, 0x34, 0x3d, 0xfb, 0xf0, 0x0c, 0x51, 0xb8, 0x6e, 0x66, 0xfd, 0xea, 0x3d, 0xa0, + 0x4e, 0xf4, 0x00, 0x45, 0x28, 0x86, 0xa7, 0x2a, 0x1e, 0x4e, 0xea, 0x5b, 0x19, 0x72, 0x35, 0x12, + 0x58, 0x12, 0x79, 0x5b, 0x46, 0x96, 0x9d, 0x3e, 0x20, 0xff, 0x5d, 0x82, 0x5c, 0xc3, 0xaa, 0x23, + 0xf7, 0xe0, 0xa6, 0x40, 0xe2, 0x63, 0xfb, 0xb8, 0xdc, 0x51, 0x1c, 0xdb, 0xef, 0x47, 0x28, 0x7d, + 0xd1, 0xbd, 0x57, 0x82, 0x99, 0x86, 0x55, 0x0a, 0x16, 0xa7, 0xc4, 0x7d, 0x55, 0xc5, 0x6f, 0x63, + 0x0c, 0x2a, 0x18, 0x16, 0x73, 0xa0, 0xdb, 0x18, 0x07, 0xd3, 0x4b, 0x5f, 0x6e, 0xb7, 0xc1, 0xd1, + 0x0d, 0xb3, 0x6d, 0x69, 0xa8, 0x6d, 0xd1, 0x95, 0x6e, 0x45, 0x81, 0xec, 0xae, 0xd9, 0xb6, 0x30, + 0xcb, 0x39, 0x0d, 0x3f, 0x7b, 0x69, 0x36, 0x6a, 0x5b, 0xd4, 0x37, 0x00, 0x3f, 0xab, 0xdf, 0x90, + 0x21, 0xeb, 0xfd, 0x2b, 0x2e, 0xea, 0x77, 0xc9, 0x09, 0x03, 0x11, 0x78, 0xe4, 0x47, 0x62, 0x09, + 0xdd, 0xc5, 0xac, 0xfd, 0x13, 0x0f, 0xd6, 0x6b, 0xa3, 0xca, 0x63, 0x44, 0x11, 0xae, 0xf9, 0x2b, + 0xa7, 0x60, 0xe2, 0x7c, 0xc7, 0x6a, 0x5d, 0x08, 0xcf, 0xcb, 0xd3, 0x57, 0xe5, 0x46, 0xc8, 0xd9, + 0xba, 0xb9, 0x85, 0xe8, 0x9e, 0xc2, 0xf1, 0x9e, 0xbe, 0x10, 0x7b, 0xbd, 0x68, 0x24, 0x8b, 0xfa, + 0xce, 0x24, 0x21, 0x10, 0xfa, 0x54, 0x3e, 0x99, 0x3e, 0x2c, 0x0e, 0x71, 0xb2, 0xac, 0x00, 0x33, + 0xa5, 0x22, 0xb9, 0xf7, 0x74, 0xad, 0x76, 0xb6, 0x5c, 0x90, 0x31, 0xcc, 0x9e, 0x4c, 0x52, 0x84, + 0xd9, 0x23, 0xff, 0x23, 0x0b, 0x73, 0x9f, 0xca, 0x1f, 0x06, 0xcc, 0x9f, 0x96, 0x60, 0x76, 0xd5, + 0x70, 0xdc, 0x28, 0x6f, 0xff, 0x98, 0x28, 0x70, 0x2f, 0x49, 0x6a, 0x2a, 0x73, 0xe5, 0x08, 0x87, + 0x7f, 0x4b, 0x64, 0x0e, 0xc7, 0x15, 0x31, 0x9e, 0x63, 0x29, 0x98, 0x03, 0x72, 0x57, 0xa1, 0xb0, + 0x24, 0x13, 0x1b, 0x4a, 0x61, 0x21, 0xe3, 0x37, 0x94, 0x22, 0xcb, 0x4e, 0x5f, 0xbe, 0xdf, 0x90, + 0xe0, 0x98, 0x57, 0x7c, 0xdc, 0xb2, 0x54, 0xb4, 0x98, 0x07, 0x2e, 0x4b, 0x25, 0x5e, 0x19, 0xdf, + 0xc7, 0xcb, 0x28, 0x56, 0xc6, 0x07, 0x11, 0x1d, 0xb3, 0x98, 0x23, 0x96, 0x61, 0x07, 0x89, 0x39, + 0x66, 0x19, 0x76, 0x78, 0x31, 0xc7, 0x2f, 0xc5, 0x0e, 0x29, 0xe6, 0x43, 0x5b, 0x60, 0xfd, 0x75, + 0x39, 0x10, 0x73, 0xe4, 0xda, 0x46, 0x8c, 0x98, 0x13, 0x9f, 0xd8, 0x55, 0xdf, 0x3d, 0xa4, 0xe0, + 0x47, 0xbc, 0xbe, 0x31, 0x0c, 0x4c, 0x87, 0xb8, 0xc6, 0xf1, 0x4a, 0x19, 0xe6, 0x28, 0x17, 0xfd, + 0xa7, 0xcc, 0x31, 0x18, 0x25, 0x9e, 0x32, 0x27, 0x3e, 0x03, 0xc4, 0x73, 0x36, 0xfe, 0x33, 0x40, + 0xb1, 0xe5, 0xa7, 0x0f, 0xce, 0x37, 0xb3, 0x70, 0xd2, 0x63, 0x61, 0xcd, 0x6a, 0x1b, 0x9b, 0x97, + 0x08, 0x17, 0x67, 0xf5, 0xce, 0x2e, 0x72, 0xd4, 0x0f, 0x48, 0xa2, 0x28, 0xfd, 0x27, 0x00, 0xab, + 0x8b, 0x6c, 0x12, 0x48, 0x8d, 0x02, 0x75, 0x47, 0x54, 0x65, 0xf7, 0x97, 0x14, 0x04, 0x45, 0xaf, + 0xf9, 0x44, 0x34, 0x86, 0x9e, 0x67, 0x15, 0x4e, 0x05, 0x5f, 0x7a, 0x1d, 0x3c, 0x32, 0xfb, 0x1d, + 0x3c, 0x6e, 0x00, 0x59, 0x6f, 0xb7, 0x03, 0xa8, 0x7a, 0x37, 0xb3, 0x71, 0x99, 0x9a, 0x97, 0xc5, + 0xcb, 0xe9, 0xa0, 0xf0, 0x68, 0x5e, 0x44, 0x4e, 0x07, 0xb9, 0xca, 0x3c, 0xe4, 0xc9, 0x0d, 0x82, + 0xc1, 0x8a, 0x7e, 0xff, 0xcc, 0x34, 0x17, 0x6f, 0xda, 0xd5, 0x78, 0x35, 0xbc, 0x2d, 0x91, 0x64, + 0xfa, 0xf5, 0xd3, 0xa1, 0x9d, 0xac, 0x71, 0x0a, 0xf6, 0xb4, 0xa1, 0x29, 0x8f, 0x67, 0x37, 0xac, + 0xd8, 0xed, 0x76, 0x2e, 0x35, 0x68, 0xf0, 0x95, 0x44, 0xbb, 0x61, 0x4c, 0x0c, 0x17, 0xa9, 0x37, + 0x86, 0x4b, 0xf2, 0xdd, 0x30, 0x8e, 0x8f, 0x51, 0xec, 0x86, 0xc5, 0x11, 0x1c, 0xc3, 0x7a, 0x64, + 0x8e, 0x58, 0xcd, 0x34, 0x46, 0xed, 0x5b, 0xfa, 0x1f, 0x42, 0x03, 0xde, 0xd9, 0xa5, 0x5f, 0xf8, + 0xda, 0xd8, 0xd8, 0xdc, 0xca, 0x13, 0x21, 0xbf, 0x69, 0xd9, 0x3b, 0xba, 0xbf, 0x71, 0xdf, 0x7b, + 0x52, 0x84, 0xc6, 0x85, 0x5d, 0xc2, 0x79, 0x34, 0x9a, 0xd7, 0x9b, 0x8f, 0x3c, 0xcb, 0xe8, 0xd2, + 0xa8, 0x8b, 0xde, 0xa3, 0x72, 0x1d, 0xcc, 0xd2, 0xe0, 0x8b, 0x55, 0xe4, 0xb8, 0xa8, 0x4d, 0x23, + 0x56, 0xf0, 0x89, 0xca, 0x19, 0x98, 0xa1, 0x09, 0x4b, 0x46, 0x07, 0x39, 0x34, 0x68, 0x05, 0x97, + 0xa6, 0x9c, 0x84, 0xbc, 0xe1, 0xdc, 0xe3, 0x58, 0x26, 0xf6, 0xff, 0x9f, 0xd4, 0xe8, 0x9b, 0x72, + 0x03, 0x1c, 0xa5, 0xf9, 0x02, 0x63, 0x95, 0x1c, 0xd8, 0xe9, 0x4d, 0x56, 0x3f, 0x3f, 0xcc, 0xc4, + 0x21, 0x71, 0x3c, 0x5e, 0x0f, 0x85, 0xdd, 0x56, 0x0b, 0xa1, 0x36, 0x3d, 0xd9, 0xe4, 0xbf, 0x26, + 0x8c, 0xd4, 0x9b, 0x78, 0x9a, 0x71, 0x48, 0xa1, 0x7a, 0x3f, 0x7a, 0x02, 0xf2, 0xe4, 0xda, 0x0b, + 0xf5, 0xe5, 0x73, 0x7d, 0x95, 0x71, 0x8e, 0x57, 0xc6, 0x0d, 0x98, 0x31, 0x2d, 0xaf, 0xb8, 0x75, + 0xdd, 0xd6, 0x77, 0x9c, 0xb8, 0x55, 0x44, 0x42, 0x37, 0x18, 0x32, 0xaa, 0xcc, 0x6f, 0x2b, 0x47, + 0x34, 0x8e, 0x8c, 0xf2, 0xbf, 0xc1, 0xd1, 0xf3, 0x34, 0x02, 0x80, 0x43, 0x29, 0x4b, 0xd1, 0x3e, + 0x76, 0x3d, 0x94, 0x17, 0xf8, 0x3f, 0x57, 0x8e, 0x68, 0xbd, 0xc4, 0x94, 0x9f, 0x82, 0x39, 0xef, + 0xb5, 0x6d, 0x5d, 0xf4, 0x19, 0x97, 0xa3, 0x0d, 0x8d, 0x1e, 0xf2, 0x6b, 0xdc, 0x8f, 0x2b, 0x47, + 0xb4, 0x1e, 0x52, 0x4a, 0x0d, 0x60, 0xdb, 0xdd, 0xe9, 0x50, 0xc2, 0xd9, 0x68, 0x95, 0xec, 0x21, + 0xbc, 0x12, 0xfc, 0xb4, 0x72, 0x44, 0x63, 0x48, 0x28, 0xab, 0x30, 0xe5, 0x3e, 0xe0, 0x52, 0x7a, + 0xb9, 0xe8, 0xcd, 0xed, 0x1e, 0x7a, 0x0d, 0xff, 0x9f, 0x95, 0x23, 0x5a, 0x48, 0x40, 0xa9, 0xc0, + 0x64, 0xf7, 0x3c, 0x25, 0x96, 0xef, 0x73, 0x01, 0x7a, 0x7f, 0x62, 0xeb, 0xe7, 0x03, 0x5a, 0xc1, + 0xef, 0x1e, 0x63, 0x2d, 0x67, 0x8f, 0xd2, 0x9a, 0x10, 0x66, 0xac, 0xe4, 0xff, 0xe3, 0x31, 0x16, + 0x10, 0x50, 0x2a, 0x30, 0xe5, 0x98, 0x7a, 0xd7, 0xd9, 0xb6, 0x5c, 0xe7, 0xd4, 0x64, 0x8f, 0x1f, + 0x64, 0x34, 0xb5, 0x3a, 0xfd, 0x47, 0x0b, 0xff, 0x56, 0x9e, 0x08, 0x27, 0x76, 0xf1, 0xf5, 0xa1, + 0xe5, 0x07, 0x0c, 0xc7, 0x35, 0xcc, 0x2d, 0x3f, 0x86, 0x2c, 0xe9, 0x4d, 0xfa, 0x7f, 0x54, 0xe6, + 0xe9, 0x89, 0x28, 0xc0, 0x6d, 0x53, 0xed, 0xdd, 0x8c, 0x23, 0xc5, 0x32, 0x07, 0xa1, 0x9e, 0x0a, + 0x59, 0xef, 0x13, 0x3e, 0xb3, 0x39, 0xd7, 0x7f, 0xa1, 0xaf, 0x57, 0x77, 0x70, 0x03, 0xf6, 0x7e, + 0xf2, 0xc6, 0x46, 0xd3, 0x5a, 0xb7, 0xad, 0x2d, 0x1b, 0x39, 0x0e, 0x75, 0x38, 0x64, 0x52, 0xbc, + 0x06, 0x6e, 0x38, 0xe4, 0xe2, 0xf8, 0xd0, 0xdf, 0x9d, 0x4d, 0x22, 0xb3, 0xcd, 0x2a, 0xba, 0x88, + 0x1d, 0x82, 0xf1, 0xf9, 0x1b, 0x3c, 0xdb, 0xf4, 0x53, 0xd4, 0xeb, 0x61, 0x86, 0x6d, 0x64, 0xe4, + 0xee, 0x2c, 0x23, 0xb4, 0xbd, 0xe8, 0x9b, 0x7a, 0x1d, 0xcc, 0xf1, 0x3a, 0xcd, 0x0c, 0x31, 0xb2, + 0xdf, 0x15, 0xaa, 0xd7, 0xc2, 0xd1, 0x9e, 0x86, 0xe5, 0xc7, 0x14, 0xc9, 0x84, 0x31, 0x45, 0xae, + 0x01, 0x08, 0xb5, 0xb8, 0x2f, 0x99, 0xab, 0x61, 0x2a, 0xd0, 0xcb, 0xbe, 0x19, 0xbe, 0x96, 0x81, + 0x49, 0x5f, 0xd9, 0xfa, 0x65, 0xf0, 0xc6, 0x17, 0x93, 0xd9, 0x40, 0xa0, 0xd3, 0x6c, 0x2e, 0xcd, + 0x1b, 0x47, 0x42, 0xb7, 0xdd, 0x86, 0xe1, 0x76, 0xfc, 0xa3, 0x6f, 0xbd, 0xc9, 0xca, 0x3a, 0x80, + 0x81, 0x31, 0x6a, 0x84, 0x67, 0xe1, 0x6e, 0x49, 0xd0, 0x1e, 0x88, 0x3e, 0x30, 0x34, 0xce, 0xfc, + 0x18, 0x3d, 0xa8, 0x36, 0x05, 0xb9, 0xfa, 0x7a, 0xb1, 0x54, 0x2e, 0x1c, 0x51, 0xe6, 0x00, 0xca, + 0xcf, 0x58, 0x2f, 0x6b, 0x95, 0x72, 0xb5, 0x54, 0x2e, 0x64, 0xd4, 0x57, 0x49, 0x30, 0x15, 0x34, + 0x82, 0xbe, 0x95, 0x2c, 0x53, 0xd5, 0x1a, 0x78, 0x3d, 0xd1, 0xfe, 0x46, 0xc5, 0x2a, 0xd9, 0x53, + 0xe0, 0xf2, 0x5d, 0x07, 0x2d, 0x19, 0xb6, 0xe3, 0x6a, 0xd6, 0xc5, 0x25, 0xcb, 0x0e, 0xa2, 0x26, + 0xfb, 0xd7, 0xf4, 0x47, 0x7c, 0xf6, 0x2c, 0x8a, 0x36, 0xc2, 0x87, 0xa2, 0x90, 0x4d, 0x57, 0x86, + 0xc3, 0x04, 0x8f, 0xae, 0x4b, 0xee, 0xc5, 0x77, 0x90, 0x66, 0x5d, 0x74, 0x8a, 0x66, 0xbb, 0x64, + 0x75, 0x76, 0x77, 0x4c, 0x87, 0xda, 0x04, 0x51, 0x9f, 0x3d, 0xe9, 0xe0, 0xcb, 0xc7, 0xe6, 0x00, + 0x4a, 0xb5, 0xd5, 0xd5, 0x72, 0xa9, 0x51, 0xa9, 0x55, 0x0b, 0x47, 0x3c, 0x69, 0x35, 0x8a, 0x0b, + 0xab, 0x9e, 0x74, 0x7e, 0x1a, 0x26, 0xfd, 0x36, 0x4d, 0xc3, 0xa0, 0x64, 0xfc, 0x30, 0x28, 0x4a, + 0x11, 0x26, 0xfd, 0x56, 0x4e, 0x47, 0x84, 0x47, 0xf7, 0x1e, 0x7b, 0xdd, 0xd1, 0x6d, 0x17, 0xfb, + 0x4b, 0xfb, 0x44, 0x16, 0x74, 0x07, 0x69, 0xc1, 0x6f, 0x67, 0x1e, 0x47, 0x39, 0x50, 0x60, 0xae, + 0xb8, 0xba, 0xda, 0xac, 0x69, 0xcd, 0x6a, 0xad, 0xb1, 0x52, 0xa9, 0x2e, 0x93, 0x11, 0xb2, 0xb2, + 0x5c, 0xad, 0x69, 0x65, 0x32, 0x40, 0xd6, 0x0b, 0x19, 0x72, 0xf9, 0xdd, 0xc2, 0x24, 0xe4, 0xbb, + 0x58, 0xba, 0xea, 0x97, 0xe5, 0x84, 0xe7, 0xdd, 0x03, 0x9c, 0x22, 0xae, 0xe7, 0xe2, 0x7c, 0xce, + 0xa5, 0x3e, 0x67, 0x42, 0xcf, 0xc0, 0x0c, 0xb1, 0xe5, 0x1c, 0xbc, 0x7c, 0x4f, 0x6f, 0xb8, 0xe5, + 0xd2, 0xd4, 0x8f, 0x4b, 0x09, 0x0e, 0xc1, 0xf7, 0xe5, 0x28, 0x99, 0x71, 0xf1, 0x67, 0xc3, 0x5c, + 0x76, 0xa7, 0xc0, 0x5c, 0xa5, 0xda, 0x28, 0x6b, 0xd5, 0xe2, 0x2a, 0xcd, 0x22, 0x2b, 0xa7, 0xe0, + 0x78, 0xb5, 0x46, 0x63, 0xfa, 0xd5, 0xf1, 0xb5, 0xda, 0x6b, 0xeb, 0x35, 0xad, 0x51, 0xc8, 0x29, + 0x27, 0x41, 0x21, 0xcf, 0xdc, 0xad, 0xf5, 0x79, 0xe5, 0x31, 0x70, 0xed, 0x6a, 0x65, 0xad, 0xd2, + 0x68, 0xd6, 0x96, 0x9a, 0x5a, 0xed, 0x5c, 0xdd, 0x43, 0x50, 0x2b, 0xaf, 0x16, 0x3d, 0x45, 0x62, + 0x2e, 0xc1, 0x9b, 0x50, 0x2e, 0x83, 0xa3, 0xf8, 0x82, 0x4b, 0x7c, 0xf3, 0x3d, 0x29, 0x6f, 0x52, + 0xb9, 0x0a, 0x4e, 0x55, 0xaa, 0xf5, 0x8d, 0xa5, 0xa5, 0x4a, 0xa9, 0x52, 0xae, 0x36, 0x9a, 0xeb, + 0x65, 0x6d, 0xad, 0x52, 0xaf, 0x7b, 0xff, 0x16, 0xa6, 0xf0, 0x15, 0x63, 0xa4, 0xcf, 0x54, 0xdf, + 0x2f, 0xc3, 0xec, 0x59, 0xbd, 0x63, 0x78, 0x03, 0x05, 0xbe, 0x7b, 0xb0, 0xe7, 0xb8, 0x88, 0x8b, + 0xef, 0x28, 0xa4, 0x0e, 0xe7, 0xf8, 0x45, 0xfd, 0x39, 0x39, 0xe1, 0x71, 0x11, 0x0a, 0x04, 0x29, + 0x71, 0x9e, 0x2b, 0x2d, 0x62, 0x72, 0xf3, 0x06, 0x29, 0xc1, 0x71, 0x11, 0x71, 0xf2, 0xc9, 0xc0, + 0x7f, 0xf5, 0xa8, 0xc0, 0x2f, 0xc0, 0xcc, 0x46, 0xb5, 0xb8, 0xd1, 0x58, 0xa9, 0x69, 0x95, 0x9f, + 0xc4, 0xd1, 0xc6, 0x67, 0x61, 0x6a, 0xa9, 0xa6, 0x2d, 0x54, 0x16, 0x17, 0xcb, 0xd5, 0x42, 0x4e, + 0xb9, 0x1c, 0x2e, 0xab, 0x97, 0xb5, 0xb3, 0x95, 0x52, 0xb9, 0xb9, 0x51, 0x2d, 0x9e, 0x2d, 0x56, + 0x56, 0x71, 0x1f, 0x91, 0x8f, 0xb9, 0x37, 0x71, 0x42, 0xfd, 0x99, 0x2c, 0x00, 0xa9, 0xba, 0x67, + 0x49, 0xb3, 0xb7, 0xeb, 0xfd, 0x79, 0xd2, 0x49, 0x43, 0x48, 0x26, 0xa2, 0xfd, 0x56, 0x60, 0xd2, + 0xa6, 0x1f, 0xe8, 0xf2, 0xc9, 0x20, 0x3a, 0xe4, 0xd1, 0xa7, 0xa6, 0x05, 0xbf, 0xab, 0x1f, 0x48, + 0x32, 0x47, 0x88, 0x64, 0x2c, 0x19, 0x92, 0x4b, 0xa3, 0x01, 0x52, 0x7d, 0x71, 0x06, 0xe6, 0xf8, + 0x8a, 0x79, 0x95, 0xc0, 0xc6, 0x94, 0x58, 0x25, 0xf8, 0x9f, 0x19, 0x23, 0xeb, 0xcc, 0x13, 0xe8, + 0x70, 0x0a, 0x7e, 0xcb, 0x24, 0x27, 0xbf, 0x7d, 0x8b, 0xa5, 0x90, 0xf1, 0x98, 0xf7, 0x8c, 0x0e, + 0x72, 0xb5, 0x7a, 0xe3, 0x01, 0xb7, 0x20, 0xab, 0x5f, 0x93, 0x61, 0x96, 0xbb, 0xbe, 0x4f, 0x7d, + 0x43, 0x46, 0xe4, 0x6a, 0x2d, 0xe6, 0x62, 0xc0, 0xcc, 0x41, 0x2f, 0x06, 0x3c, 0x73, 0x33, 0x4c, + 0xd0, 0x34, 0x2c, 0xdf, 0x5a, 0xd5, 0x33, 0x05, 0x8e, 0xc2, 0xf4, 0x72, 0xb9, 0xd1, 0xac, 0x37, + 0x8a, 0x5a, 0xa3, 0xbc, 0x58, 0xc8, 0x78, 0x03, 0x5f, 0x79, 0x6d, 0xbd, 0x71, 0x5f, 0x41, 0x4a, + 0xee, 0x81, 0xd7, 0xcb, 0xc8, 0x98, 0x3d, 0xf0, 0xe2, 0x8a, 0x4f, 0x7f, 0xae, 0xfa, 0x59, 0x19, + 0x0a, 0x84, 0x83, 0xf2, 0x03, 0x5d, 0x64, 0x1b, 0xc8, 0x6c, 0x21, 0xf5, 0x82, 0x48, 0xc4, 0xcf, + 0x7d, 0xb1, 0xf0, 0x70, 0x7f, 0xce, 0x58, 0x89, 0xe4, 0xa5, 0xc7, 0xc0, 0xce, 0xee, 0x33, 0xb0, + 0x3f, 0x93, 0xd4, 0x05, 0xaf, 0x97, 0xdd, 0x91, 0x40, 0xf6, 0xa9, 0x24, 0x2e, 0x78, 0x03, 0x38, + 0x18, 0x4b, 0x20, 0xdf, 0x88, 0xf1, 0xb7, 0x20, 0xab, 0x2f, 0x92, 0xe1, 0xe8, 0xa2, 0xee, 0xa2, + 0x85, 0x4b, 0x0d, 0x63, 0x07, 0x39, 0xae, 0xbe, 0xd3, 0x8d, 0xb8, 0x12, 0x2f, 0xb3, 0xef, 0x4a, + 0x3c, 0xd7, 0xff, 0x03, 0x73, 0x2a, 0x6b, 0x61, 0x82, 0xfa, 0x9e, 0xa4, 0x87, 0xf6, 0x7a, 0x78, + 0x18, 0x59, 0xb4, 0xdd, 0x64, 0x87, 0xf1, 0xe2, 0xb9, 0x18, 0xc3, 0x0d, 0xb5, 0x53, 0x50, 0x20, + 0xac, 0x30, 0x5e, 0x66, 0xbf, 0x4c, 0x6f, 0x91, 0x6c, 0x26, 0x08, 0xea, 0xe7, 0x87, 0x49, 0x90, + 0xf8, 0x30, 0x09, 0xdc, 0xa2, 0xa5, 0xdc, 0xeb, 0x19, 0x90, 0xb4, 0x33, 0x64, 0x5c, 0xca, 0xa2, + 0xe3, 0xa8, 0xa6, 0xd7, 0x19, 0xc6, 0x16, 0x3f, 0x9e, 0x9b, 0xce, 0xe8, 0x5d, 0x86, 0x65, 0x51, + 0x64, 0xe2, 0x2f, 0x74, 0x4c, 0xea, 0x5f, 0xcc, 0xb9, 0xf4, 0xc5, 0xdc, 0x72, 0x98, 0x9e, 0x7f, + 0xf1, 0x20, 0x0e, 0xd2, 0x47, 0xe1, 0x07, 0x12, 0x64, 0xeb, 0x96, 0xed, 0x8e, 0x0a, 0x83, 0xa4, + 0x7b, 0xa2, 0x8c, 0x04, 0xea, 0xd1, 0x73, 0xce, 0xf4, 0xf6, 0x44, 0xe3, 0xcb, 0x1f, 0x43, 0x5c, + 0xc4, 0xa3, 0x30, 0x47, 0x38, 0x09, 0x2e, 0x0d, 0xf9, 0x37, 0x89, 0xf4, 0x57, 0xf7, 0x8a, 0x22, + 0x72, 0x06, 0x66, 0x98, 0x3d, 0xc9, 0xe0, 0xc2, 0x6c, 0x36, 0x4d, 0x7d, 0x33, 0x8b, 0xcb, 0x22, + 0x8f, 0x4b, 0xbf, 0x19, 0x77, 0x70, 0xef, 0xc6, 0xa8, 0x7a, 0xa6, 0x24, 0x21, 0x16, 0x63, 0x0a, + 0x4f, 0x1f, 0x91, 0x07, 0x65, 0xc8, 0x53, 0x9f, 0xb0, 0x91, 0x22, 0x90, 0xb4, 0x65, 0x04, 0x42, + 0x10, 0xf3, 0x1d, 0x93, 0x47, 0xdd, 0x32, 0xe2, 0xcb, 0x4f, 0x1f, 0x87, 0x7f, 0xa7, 0xce, 0x8e, + 0xc5, 0x3d, 0xdd, 0xe8, 0xe8, 0xe7, 0x3b, 0x09, 0x42, 0x1b, 0x7f, 0x3c, 0xe1, 0xf1, 0xae, 0xa0, + 0xaa, 0x5c, 0x79, 0x11, 0x12, 0xff, 0x09, 0x98, 0xb2, 0x83, 0x25, 0x49, 0xff, 0xf4, 0x7b, 0x8f, + 0xa3, 0x29, 0xfd, 0xae, 0x85, 0x39, 0x13, 0x9d, 0xe5, 0x12, 0xe2, 0x67, 0x2c, 0x67, 0x4f, 0xa6, + 0x8b, 0xed, 0xf6, 0x12, 0xd2, 0xdd, 0x5d, 0x1b, 0xb5, 0x13, 0x0d, 0x11, 0xbc, 0x88, 0xa6, 0x58, + 0x49, 0x70, 0xc1, 0x05, 0x57, 0x79, 0x74, 0x9e, 0x34, 0xa0, 0x37, 0xf0, 0x79, 0x19, 0x49, 0x97, + 0xf4, 0xf6, 0x00, 0x92, 0x1a, 0x07, 0xc9, 0x53, 0x87, 0x63, 0x22, 0x7d, 0x40, 0x7e, 0x55, 0x86, + 0x39, 0x62, 0x27, 0x8c, 0x1a, 0x93, 0xdf, 0x4d, 0xe8, 0x43, 0xc2, 0x5c, 0xcb, 0xc4, 0xb2, 0x33, + 0x12, 0x58, 0x92, 0x78, 0x9c, 0x88, 0xf1, 0x91, 0x3e, 0x32, 0x9f, 0xcf, 0x03, 0x30, 0x7e, 0x81, + 0x1f, 0xcf, 0x87, 0x81, 0xfe, 0xd4, 0x77, 0xd2, 0xf9, 0x47, 0x9d, 0x8b, 0x3a, 0xcd, 0xf8, 0xfc, + 0x05, 0x1b, 0x52, 0x7c, 0xa2, 0xd0, 0xa8, 0xf2, 0x67, 0x09, 0x6d, 0x5e, 0xea, 0x95, 0x37, 0x70, + 0x70, 0x1f, 0xb2, 0x97, 0xfb, 0x44, 0x02, 0xe3, 0x77, 0x10, 0x2b, 0xc9, 0x50, 0x5b, 0x1d, 0x62, + 0x66, 0x7f, 0x0a, 0x8e, 0x6b, 0xe5, 0xe2, 0x62, 0xad, 0xba, 0x7a, 0x1f, 0x7b, 0x47, 0x4f, 0x41, + 0x66, 0x27, 0x27, 0xa9, 0xc0, 0xf6, 0xc6, 0x84, 0x7d, 0x20, 0x2f, 0xab, 0xb8, 0xd9, 0x0a, 0xb3, + 0xb8, 0x32, 0xb8, 0x57, 0x13, 0x20, 0x7b, 0x98, 0x28, 0x3c, 0x08, 0x4c, 0x33, 0x7a, 0x81, 0x0c, + 0x85, 0xf0, 0x9a, 0x78, 0x7a, 0x19, 0x5b, 0x8d, 0x77, 0x1b, 0xec, 0x92, 0xfd, 0xa7, 0xd0, 0x6d, + 0xd0, 0x4f, 0x50, 0xae, 0x87, 0xb9, 0xd6, 0x36, 0x6a, 0x5d, 0xa8, 0x98, 0xfe, 0xbe, 0x3a, 0xd9, + 0x84, 0xed, 0x49, 0xe5, 0x81, 0xb9, 0x97, 0x07, 0x86, 0x9f, 0x44, 0x73, 0x83, 0x34, 0xcb, 0x54, + 0x04, 0x2e, 0x7f, 0x10, 0xe0, 0x52, 0xe5, 0x70, 0xb9, 0x7d, 0x28, 0xaa, 0xc9, 0x60, 0xa9, 0x0e, + 0x01, 0x8b, 0x0a, 0x27, 0x6b, 0xeb, 0x8d, 0x4a, 0xad, 0xda, 0xdc, 0xa8, 0x97, 0x17, 0x9b, 0x0b, + 0x3e, 0x38, 0xf5, 0x82, 0xac, 0x7e, 0x4b, 0x82, 0x09, 0xc2, 0x96, 0xd3, 0x73, 0xad, 0x7b, 0xbc, + 0xbf, 0xa4, 0xfa, 0x0e, 0xe1, 0xe8, 0x07, 0x81, 0x20, 0x68, 0x39, 0x11, 0xfd, 0xd4, 0x53, 0x60, + 0x82, 0x80, 0xec, 0xaf, 0x68, 0x9d, 0x8e, 0xe8, 0xa5, 0x28, 0x19, 0xcd, 0xcf, 0x2e, 0x18, 0x09, + 0x61, 0x00, 0x1b, 0xe9, 0x8f, 0x2c, 0xcf, 0xce, 0x12, 0x33, 0xf8, 0x9c, 0xe1, 0x6e, 0x63, 0x77, + 0x4a, 0xf5, 0xe9, 0x22, 0xcb, 0x8b, 0x37, 0x41, 0x6e, 0xcf, 0xcb, 0x3d, 0xc0, 0x35, 0x95, 0x64, + 0x52, 0x5f, 0x2d, 0x1c, 0x78, 0x93, 0xd3, 0xcf, 0x80, 0xa7, 0x08, 0x70, 0xd6, 0x20, 0xdb, 0x31, + 0x1c, 0x97, 0x8e, 0x1f, 0xb7, 0x25, 0x22, 0xe4, 0x3f, 0x54, 0x5c, 0xb4, 0xa3, 0x61, 0x32, 0xea, + 0x3d, 0x30, 0xc3, 0xa6, 0x0a, 0xb8, 0xe7, 0x9e, 0x82, 0x09, 0x7a, 0x6c, 0x8c, 0x2e, 0xb1, 0xfa, + 0xaf, 0x82, 0xcb, 0x9a, 0x42, 0xb5, 0x4d, 0x5f, 0x07, 0xfe, 0xdf, 0xa3, 0x30, 0xb1, 0x62, 0x38, + 0xae, 0x65, 0x5f, 0x52, 0x1f, 0xce, 0xc0, 0xc4, 0x59, 0x64, 0x3b, 0x86, 0x65, 0xee, 0x73, 0x35, + 0xb8, 0x06, 0xa6, 0xbb, 0x36, 0xda, 0x33, 0xac, 0x5d, 0x27, 0x5c, 0x9c, 0x61, 0x93, 0x14, 0x15, + 0x26, 0xf5, 0x5d, 0x77, 0xdb, 0xb2, 0xc3, 0x68, 0x13, 0xfe, 0xbb, 0x72, 0x1a, 0x80, 0x3c, 0x57, + 0xf5, 0x1d, 0x44, 0x1d, 0x28, 0x98, 0x14, 0x45, 0x81, 0xac, 0x6b, 0xec, 0x20, 0x1a, 0x7e, 0x16, + 0x3f, 0x7b, 0x02, 0xc6, 0xa1, 0xdc, 0x68, 0xc8, 0x3c, 0x59, 0xf3, 0x5f, 0xd5, 0x2f, 0xca, 0x30, + 0xbd, 0x8c, 0x5c, 0xca, 0xaa, 0xa3, 0xbe, 0x24, 0x23, 0x74, 0xe3, 0x83, 0x37, 0xc6, 0x76, 0x74, + 0xc7, 0xff, 0x2f, 0x58, 0x82, 0xe5, 0x13, 0xc3, 0x58, 0xb8, 0x32, 0x1b, 0x08, 0x1b, 0x07, 0x46, + 0x73, 0x2b, 0xc4, 0xef, 0x92, 0x66, 0xa6, 0x9b, 0x20, 0xfb, 0x3f, 0xa8, 0xef, 0x95, 0x44, 0x0f, + 0x15, 0x53, 0xd9, 0xcf, 0x33, 0xf5, 0x89, 0xec, 0x8e, 0x26, 0xf7, 0x68, 0x8e, 0x7d, 0x31, 0xce, + 0x59, 0x4a, 0x94, 0x8c, 0x16, 0xe4, 0x16, 0x3c, 0x8e, 0x3c, 0x98, 0x93, 0xf4, 0xb5, 0xf1, 0x7b, + 0x32, 0x4c, 0xd7, 0xb7, 0xad, 0x8b, 0xbe, 0x1c, 0x7f, 0x5a, 0x0c, 0xd8, 0xab, 0x60, 0x6a, 0xaf, + 0x07, 0xd4, 0x30, 0x21, 0xfa, 0x0e, 0x76, 0xf5, 0xf9, 0x72, 0x52, 0x98, 0x18, 0xe6, 0x46, 0x7e, + 0x43, 0xba, 0xf2, 0x24, 0x98, 0xa0, 0x5c, 0xd3, 0x25, 0x97, 0x78, 0x80, 0xfd, 0xcc, 0x6c, 0x05, + 0xb3, 0x7c, 0x05, 0x93, 0x21, 0x1f, 0x5d, 0xb9, 0xf4, 0x91, 0xff, 0x63, 0x09, 0x07, 0xa3, 0xf0, + 0x81, 0x2f, 0x8d, 0x00, 0x78, 0xf5, 0xfb, 0x19, 0xd1, 0x85, 0xc9, 0x40, 0x02, 0x01, 0x07, 0x07, + 0xba, 0xcd, 0x65, 0x20, 0xb9, 0xf4, 0xe5, 0xf9, 0xaa, 0x2c, 0xcc, 0x2c, 0x1a, 0x9b, 0x9b, 0x41, + 0x27, 0xf9, 0x52, 0xc1, 0x4e, 0x32, 0xda, 0x1d, 0xc0, 0xb3, 0x73, 0x77, 0x6d, 0x1b, 0x99, 0x7e, + 0xa5, 0x68, 0x73, 0xea, 0x49, 0x55, 0x6e, 0x80, 0xa3, 0xfe, 0xb8, 0xc0, 0x76, 0x94, 0x53, 0x5a, + 0x6f, 0xb2, 0xfa, 0x5d, 0xe1, 0x5d, 0x2d, 0x5f, 0xa2, 0x6c, 0x95, 0x22, 0x1a, 0xe0, 0x1d, 0x30, + 0xbb, 0x4d, 0x72, 0xe3, 0xa9, 0xbf, 0xdf, 0x59, 0x9e, 0xec, 0x09, 0xf6, 0xbb, 0x86, 0x1c, 0x47, + 0xdf, 0x42, 0x1a, 0x9f, 0xb9, 0xa7, 0xf9, 0xca, 0x49, 0xae, 0xae, 0x12, 0xdb, 0x20, 0x13, 0xa8, + 0xc9, 0x18, 0xb4, 0xe3, 0x0c, 0x64, 0x97, 0x8c, 0x0e, 0x52, 0x5f, 0x28, 0xc1, 0x94, 0x86, 0x5a, + 0x96, 0xd9, 0xf2, 0xde, 0x18, 0xe7, 0xa0, 0x7f, 0xcc, 0x88, 0x5e, 0xd9, 0xe8, 0xd1, 0x99, 0x0f, + 0x68, 0x44, 0xb4, 0x1b, 0xb1, 0xab, 0x19, 0x63, 0x49, 0x8d, 0xe1, 0x82, 0x0d, 0x6f, 0xea, 0xb1, + 0xb9, 0xd9, 0xb1, 0x74, 0x6e, 0xf1, 0xab, 0xd7, 0x14, 0xba, 0x11, 0x0a, 0xfe, 0x19, 0x0f, 0xcb, + 0x5d, 0x37, 0x4c, 0x33, 0x38, 0x44, 0xbc, 0x2f, 0x9d, 0xdf, 0xb7, 0x8d, 0x8d, 0xc3, 0x82, 0xeb, + 0x4e, 0x4b, 0x8f, 0xd0, 0xec, 0xeb, 0x61, 0xee, 0xfc, 0x25, 0x17, 0x39, 0x34, 0x17, 0x2d, 0x36, + 0xab, 0xf5, 0xa4, 0x32, 0x51, 0x94, 0xe3, 0xe2, 0xb5, 0xc4, 0x14, 0x98, 0x4c, 0xd4, 0x2b, 0x43, + 0xcc, 0x00, 0x8f, 0x43, 0xa1, 0x5a, 0x5b, 0x2c, 0x63, 0x5f, 0x35, 0xdf, 0xfb, 0x67, 0x4b, 0x7d, + 0x99, 0x0c, 0x33, 0xd8, 0x99, 0xc4, 0x47, 0xe1, 0x5a, 0x81, 0xf9, 0x88, 0xfa, 0x15, 0x61, 0x3f, + 0x36, 0x5c, 0x65, 0xb6, 0x80, 0x68, 0x41, 0x6f, 0x1a, 0x9d, 0x5e, 0x41, 0xe7, 0xb4, 0x9e, 0xd4, + 0x3e, 0x80, 0xc8, 0x7d, 0x01, 0xf9, 0x6d, 0x21, 0x67, 0xb6, 0x41, 0xdc, 0x1d, 0x16, 0x2a, 0xbf, + 0x23, 0xc3, 0xb4, 0x37, 0x49, 0xf1, 0x41, 0xa9, 0x71, 0xa0, 0x58, 0x66, 0xe7, 0x52, 0xb8, 0x2c, + 0xe2, 0xbf, 0x26, 0x6a, 0x24, 0x7f, 0x29, 0x3c, 0x73, 0xc7, 0x22, 0x62, 0x78, 0x19, 0x13, 0x7e, + 0x1f, 0x14, 0x9a, 0xcf, 0x0f, 0x60, 0xee, 0xb0, 0xe0, 0xfb, 0x46, 0x0e, 0xf2, 0x1b, 0x5d, 0x8c, + 0xdc, 0xab, 0x65, 0x91, 0x88, 0xe4, 0xfb, 0x0e, 0x32, 0x78, 0x66, 0x56, 0xc7, 0x6a, 0xe9, 0x9d, + 0xf5, 0xf0, 0x44, 0x58, 0x98, 0xa0, 0xdc, 0x4e, 0x7d, 0x1b, 0xc9, 0x71, 0xba, 0xeb, 0x63, 0x83, + 0x75, 0x63, 0x19, 0x31, 0x87, 0x46, 0x6e, 0x82, 0x63, 0x6d, 0xc3, 0xd1, 0xcf, 0x77, 0x50, 0xd9, + 0x6c, 0xd9, 0x97, 0x88, 0x38, 0xe8, 0xb4, 0x6a, 0xdf, 0x07, 0xe5, 0x4e, 0xc8, 0x39, 0xee, 0xa5, + 0x0e, 0x99, 0x27, 0xb2, 0x67, 0x4c, 0x22, 0x8b, 0xaa, 0x7b, 0xd9, 0x35, 0xf2, 0x17, 0xeb, 0xa2, + 0x34, 0x21, 0x78, 0x5f, 0xf3, 0x13, 0x20, 0x6f, 0xd9, 0xc6, 0x96, 0x41, 0xee, 0xdf, 0x99, 0xdb, + 0x17, 0x93, 0x8e, 0x98, 0x02, 0x35, 0x9c, 0x45, 0xa3, 0x59, 0x95, 0x27, 0xc1, 0x94, 0xb1, 0xa3, + 0x6f, 0xa1, 0x7b, 0x0d, 0x93, 0x9c, 0xd8, 0x9b, 0xbb, 0xf5, 0xd4, 0xbe, 0xe3, 0x33, 0xf4, 0xbb, + 0x16, 0x66, 0x55, 0x3f, 0x28, 0x89, 0x06, 0xce, 0xc1, 0x75, 0x23, 0xa0, 0x8e, 0xe5, 0xde, 0x6a, + 0xf5, 0x75, 0x42, 0x21, 0x6d, 0xa2, 0xd9, 0x4a, 0x7f, 0xf0, 0xfe, 0x82, 0x04, 0x93, 0x8b, 0xd6, + 0x45, 0x13, 0x2b, 0xfa, 0x6d, 0x62, 0xb6, 0x6e, 0x9f, 0x43, 0x8e, 0xfc, 0xb5, 0x90, 0xb1, 0x27, + 0x1a, 0x70, 0x6d, 0xfd, 0x22, 0x23, 0x60, 0x88, 0x6d, 0x39, 0x82, 0x97, 0xf5, 0xc5, 0x95, 0x93, + 0xbe, 0x5c, 0xff, 0x44, 0x86, 0xec, 0xa2, 0x6d, 0x75, 0xd5, 0xb7, 0x67, 0x12, 0xb8, 0x2c, 0xb4, + 0x6d, 0xab, 0xdb, 0xc0, 0xb7, 0x6d, 0x85, 0xc7, 0x38, 0xd8, 0x34, 0xe5, 0x36, 0x98, 0xec, 0x5a, + 0x8e, 0xe1, 0xfa, 0xd3, 0x88, 0xb9, 0x5b, 0x1f, 0xd5, 0xb7, 0x35, 0xaf, 0xd3, 0x4c, 0x5a, 0x90, + 0xdd, 0xeb, 0xb5, 0xb1, 0x08, 0x3d, 0xb9, 0x78, 0x62, 0xf4, 0x6f, 0x1c, 0xeb, 0x49, 0x55, 0x5f, + 0xce, 0x22, 0xf9, 0x54, 0x1e, 0xc9, 0x47, 0xf7, 0x91, 0xb0, 0x6d, 0x75, 0x47, 0xb2, 0xc9, 0xf8, + 0x9a, 0x00, 0xd5, 0xa7, 0x71, 0xa8, 0xde, 0x28, 0x54, 0x66, 0xfa, 0x88, 0x7e, 0x30, 0x0b, 0x80, + 0xcd, 0x8c, 0x0d, 0x6f, 0x02, 0x24, 0x66, 0x63, 0x3d, 0x37, 0xcb, 0xc8, 0xb2, 0xc8, 0xcb, 0xf2, + 0xb1, 0x11, 0x56, 0x0c, 0x26, 0x1f, 0x21, 0xd1, 0x22, 0xe4, 0x76, 0xbd, 0xcf, 0x54, 0xa2, 0x82, + 0x24, 0xf0, 0xab, 0x46, 0xfe, 0x54, 0xff, 0x38, 0x03, 0x39, 0x9c, 0xa0, 0x9c, 0x06, 0xc0, 0x03, + 0x3b, 0x39, 0x10, 0x94, 0xc1, 0x43, 0x38, 0x93, 0x82, 0xb5, 0xd5, 0x68, 0xd3, 0xcf, 0xc4, 0x64, + 0x0e, 0x13, 0xbc, 0xbf, 0xf1, 0x70, 0x8f, 0x69, 0x51, 0x03, 0x80, 0x49, 0xf1, 0xfe, 0xc6, 0x6f, + 0xab, 0x68, 0x93, 0x04, 0x42, 0xce, 0x6a, 0x61, 0x42, 0xf0, 0xf7, 0x6a, 0x70, 0x7d, 0x96, 0xff, + 0x37, 0x4e, 0xf1, 0x26, 0xc3, 0x58, 0x2d, 0x17, 0xc2, 0x22, 0xf2, 0x38, 0x53, 0x6f, 0xb2, 0xfa, + 0xc6, 0x40, 0x6d, 0x16, 0x39, 0xb5, 0xb9, 0x25, 0x81, 0x78, 0xd3, 0x57, 0x9e, 0xaf, 0xe5, 0x60, + 0xaa, 0x6a, 0xb5, 0xa9, 0xee, 0x30, 0x13, 0xc6, 0x4f, 0xe5, 0x12, 0x4d, 0x18, 0x03, 0x1a, 0x11, + 0x0a, 0x72, 0x37, 0xaf, 0x20, 0x62, 0x14, 0x58, 0xfd, 0x50, 0x16, 0x20, 0x8f, 0xb5, 0x77, 0xff, + 0xbd, 0x4c, 0x71, 0x24, 0xb0, 0x68, 0x35, 0xfa, 0xe7, 0x7f, 0x38, 0x1d, 0xfb, 0xaf, 0x90, 0xc3, + 0x15, 0x8c, 0xd9, 0xdd, 0xe1, 0x2b, 0x2a, 0xc5, 0x57, 0x54, 0x8e, 0xaf, 0x68, 0xb6, 0xb7, 0xa2, + 0x49, 0xd6, 0x01, 0xa2, 0x34, 0x24, 0x7d, 0x1d, 0xff, 0x87, 0x09, 0x80, 0xaa, 0xbe, 0x67, 0x6c, + 0x91, 0xdd, 0xe1, 0x2f, 0xfa, 0xf3, 0x1f, 0xba, 0x8f, 0xfb, 0x0b, 0xcc, 0x40, 0x78, 0x1b, 0x4c, + 0xd0, 0x71, 0x8f, 0x56, 0xe4, 0x6a, 0xae, 0x22, 0x21, 0x15, 0x62, 0x96, 0x3e, 0xe0, 0x6a, 0x7e, + 0x7e, 0xee, 0x0a, 0x59, 0xa9, 0xe7, 0x0a, 0xd9, 0xfe, 0x7b, 0x10, 0x11, 0x17, 0xcb, 0xaa, 0xef, + 0x13, 0xf6, 0xe8, 0x67, 0xf8, 0x61, 0x6a, 0x14, 0xd1, 0x04, 0x9f, 0x00, 0x13, 0x56, 0xb0, 0xa1, + 0x2d, 0x47, 0xae, 0x83, 0x55, 0xcc, 0x4d, 0x4b, 0xf3, 0x73, 0x0a, 0x6e, 0x7e, 0x09, 0xf1, 0x31, + 0x96, 0x43, 0x33, 0x27, 0x97, 0xfd, 0xa0, 0x52, 0x5e, 0x3d, 0xce, 0x19, 0xee, 0xf6, 0xaa, 0x61, + 0x5e, 0x70, 0xd4, 0xff, 0x2c, 0x66, 0x41, 0x32, 0xf8, 0x4b, 0xc9, 0xf0, 0xe7, 0x63, 0x76, 0xd4, + 0x79, 0xd4, 0xee, 0x8c, 0xa2, 0xd2, 0x9f, 0xdb, 0x08, 0x00, 0x6f, 0x87, 0x3c, 0x61, 0x94, 0x76, + 0xa2, 0x67, 0x22, 0xf1, 0x0b, 0x28, 0x69, 0xf4, 0x0f, 0xf5, 0xbd, 0x01, 0x8e, 0x67, 0x39, 0x1c, + 0x17, 0x0e, 0xc4, 0x59, 0xea, 0x90, 0x9e, 0x79, 0x3c, 0x4c, 0x50, 0x49, 0x2b, 0x73, 0x6c, 0x2b, + 0x2e, 0x1c, 0x51, 0x00, 0xf2, 0x6b, 0xd6, 0x1e, 0x6a, 0x58, 0x85, 0x8c, 0xf7, 0xec, 0xf1, 0xd7, + 0xb0, 0x0a, 0x92, 0xfa, 0xda, 0x49, 0x98, 0x0c, 0xa2, 0xf9, 0x7c, 0x41, 0x82, 0x42, 0xc9, 0x46, + 0xba, 0x8b, 0x96, 0x6c, 0x6b, 0x87, 0xd4, 0x48, 0xdc, 0x3b, 0xf4, 0x57, 0x85, 0x5d, 0x3c, 0x82, + 0x28, 0x3b, 0xbd, 0x85, 0x45, 0x60, 0x49, 0x16, 0x21, 0x25, 0x7f, 0x11, 0x52, 0x7d, 0x9b, 0x90, + 0xcb, 0x87, 0x68, 0x29, 0xe9, 0x37, 0xb5, 0xcf, 0x48, 0x90, 0x2b, 0x75, 0x2c, 0x13, 0xb1, 0x47, + 0x98, 0x06, 0x9e, 0x95, 0xe9, 0xbf, 0x13, 0xa1, 0x3e, 0x5b, 0x12, 0xb5, 0x35, 0x42, 0x01, 0x78, + 0x65, 0x0b, 0xca, 0x56, 0x6c, 0x90, 0x8a, 0x25, 0x9d, 0xbe, 0x40, 0xbf, 0x25, 0xc1, 0x14, 0x89, + 0x8b, 0x53, 0xec, 0x74, 0xd4, 0x47, 0x85, 0x42, 0xed, 0x13, 0x11, 0x49, 0xfd, 0x6d, 0x61, 0x17, + 0xfd, 0xa0, 0x56, 0x01, 0xed, 0x04, 0x01, 0x82, 0x92, 0x79, 0x8c, 0x8b, 0xed, 0xa5, 0x0d, 0x64, + 0x28, 0x7d, 0x51, 0xff, 0xb9, 0xe4, 0x19, 0x00, 0xe6, 0x85, 0x75, 0x1b, 0xed, 0x19, 0xe8, 0xa2, + 0x7a, 0x65, 0x28, 0xec, 0xfd, 0x41, 0x3f, 0xde, 0x22, 0xbc, 0x88, 0xc3, 0x90, 0x8c, 0xdc, 0xca, + 0x9a, 0xee, 0x84, 0x99, 0x68, 0x2f, 0xde, 0x1b, 0x89, 0x85, 0x21, 0xa3, 0xb1, 0xd9, 0x05, 0xd7, + 0x6c, 0xa2, 0xb9, 0x48, 0x5f, 0xb0, 0x1f, 0x99, 0x80, 0xc9, 0x0d, 0xd3, 0xe9, 0x76, 0x74, 0x67, + 0x5b, 0xfd, 0x37, 0x19, 0xf2, 0xe4, 0x36, 0x30, 0xf5, 0x27, 0xb8, 0xd8, 0x02, 0xcf, 0xdc, 0x45, + 0xb6, 0xef, 0x82, 0x43, 0x5e, 0xfa, 0x5f, 0x56, 0xae, 0x7e, 0x50, 0x16, 0x9d, 0xa4, 0xfa, 0x85, + 0x32, 0xd7, 0xc2, 0xf7, 0x3f, 0xce, 0xde, 0x35, 0x5a, 0xee, 0xae, 0x1d, 0x5c, 0x7d, 0xfd, 0x38, + 0x31, 0x2a, 0xeb, 0xe4, 0x2f, 0x2d, 0xf8, 0x5d, 0xd5, 0x61, 0x82, 0x26, 0xee, 0xdb, 0x4e, 0xda, + 0x7f, 0xfe, 0xf6, 0x24, 0xe4, 0x75, 0xdb, 0x35, 0x1c, 0x97, 0x6e, 0xb0, 0xd2, 0x37, 0xaf, 0xbb, + 0x24, 0x4f, 0x1b, 0x76, 0xc7, 0x8f, 0x42, 0x12, 0x24, 0xa8, 0xbf, 0x23, 0x34, 0x7f, 0x8c, 0xaf, + 0x79, 0x32, 0xc8, 0xef, 0x1d, 0x62, 0x8d, 0xfa, 0x72, 0xb8, 0x4c, 0x2b, 0x36, 0xca, 0x4d, 0x12, + 0xb4, 0x22, 0x88, 0x4f, 0xd1, 0x56, 0xdf, 0x23, 0x33, 0xeb, 0x77, 0x97, 0xb8, 0x31, 0x82, 0x4a, + 0x31, 0x1c, 0x23, 0x82, 0x84, 0x98, 0xdd, 0x6a, 0x6e, 0x11, 0x56, 0x16, 0x5f, 0x84, 0xfd, 0x4d, + 0xe1, 0xdd, 0xa4, 0x40, 0x94, 0x03, 0xd6, 0x00, 0xe3, 0x6e, 0x0b, 0xfa, 0x90, 0xd0, 0xce, 0xd0, + 0xa0, 0x92, 0x0e, 0x11, 0xb6, 0x37, 0x4f, 0xc0, 0xc4, 0xb2, 0xde, 0xe9, 0x20, 0xfb, 0x92, 0x37, + 0x24, 0x15, 0x7c, 0x0e, 0xd7, 0x74, 0xd3, 0xd8, 0x44, 0x8e, 0x1b, 0xdf, 0x59, 0xbe, 0x4f, 0x38, + 0x12, 0x2d, 0x2d, 0x63, 0xbe, 0x97, 0x7e, 0x84, 0xcc, 0x6f, 0x86, 0xac, 0x61, 0x6e, 0x5a, 0xb4, + 0xcb, 0xec, 0x5d, 0xb5, 0xf7, 0x7f, 0xc6, 0x53, 0x17, 0x9c, 0x51, 0x30, 0x18, 0xad, 0x20, 0x17, + 0xe9, 0xf7, 0x9c, 0xbf, 0x95, 0x85, 0x59, 0x9f, 0x89, 0x8a, 0xd9, 0x46, 0x0f, 0xb0, 0x4b, 0x31, + 0x2f, 0xcb, 0x8a, 0x1e, 0x07, 0xeb, 0xad, 0x0f, 0x26, 0x15, 0x21, 0xd2, 0x06, 0x40, 0x4b, 0x77, + 0xd1, 0x96, 0x65, 0x1b, 0x41, 0x7f, 0xf8, 0xc4, 0x24, 0xd4, 0x4a, 0xe4, 0xef, 0x4b, 0x1a, 0x43, + 0x47, 0xb9, 0x13, 0xa6, 0x51, 0x70, 0xfe, 0xde, 0x5f, 0xaa, 0x89, 0xc5, 0x8b, 0xcd, 0xaf, 0xfe, + 0xb9, 0xd0, 0xa9, 0x33, 0x91, 0x6a, 0x26, 0xc3, 0xac, 0x39, 0x5c, 0x1b, 0xda, 0xa8, 0xae, 0x15, + 0xb5, 0xfa, 0x4a, 0x71, 0x75, 0xb5, 0x52, 0x5d, 0x0e, 0x02, 0xbf, 0x28, 0x30, 0xb7, 0x58, 0x3b, + 0x57, 0x65, 0x22, 0xf3, 0x64, 0xd5, 0x75, 0x98, 0xf4, 0xe5, 0xd5, 0xcf, 0x17, 0x93, 0x95, 0x19, + 0xf5, 0xc5, 0x64, 0x92, 0x3c, 0xe3, 0xcc, 0x68, 0x05, 0x0e, 0x3a, 0xf8, 0x59, 0xfd, 0x43, 0x1d, + 0x72, 0x78, 0x4d, 0x5d, 0x7d, 0x17, 0xde, 0x06, 0xec, 0x76, 0xf4, 0x16, 0x52, 0x77, 0x12, 0x58, + 0xe3, 0xfe, 0xd5, 0x08, 0xd2, 0xbe, 0xab, 0x11, 0xf0, 0x23, 0xb5, 0xfa, 0x8e, 0xf7, 0x5b, 0xc7, + 0xd7, 0x48, 0x16, 0xfe, 0x80, 0x56, 0xec, 0xee, 0x0a, 0x59, 0xfe, 0xa7, 0x6c, 0x46, 0xa8, 0x64, + 0x34, 0x4f, 0xc9, 0x2c, 0x51, 0xb1, 0x7d, 0x98, 0x38, 0x8e, 0xc6, 0x70, 0x7d, 0x77, 0x16, 0x72, + 0xf5, 0x6e, 0xc7, 0x70, 0xd5, 0x57, 0x4a, 0x23, 0xc1, 0x8c, 0x5c, 0x67, 0x21, 0x0f, 0xbc, 0xce, + 0x22, 0xdc, 0x75, 0xcd, 0x0a, 0xec, 0xba, 0x36, 0xd0, 0x03, 0x2e, 0xbf, 0xeb, 0x7a, 0x1b, 0x0d, + 0xde, 0x46, 0xf6, 0x6c, 0x1f, 0xdd, 0x47, 0xa4, 0xb8, 0x5a, 0x7d, 0xa2, 0x02, 0x9e, 0x79, 0x3c, + 0x0d, 0x4e, 0x06, 0x90, 0x5f, 0xa8, 0x35, 0x1a, 0xb5, 0xb5, 0xc2, 0x11, 0x1c, 0xd5, 0xa6, 0xb6, + 0x4e, 0x42, 0xc5, 0x54, 0xaa, 0xd5, 0xb2, 0x56, 0x90, 0x70, 0xb8, 0xb4, 0x4a, 0x63, 0xb5, 0x5c, + 0x90, 0xf9, 0xd8, 0xe6, 0xb1, 0xe6, 0x37, 0x5f, 0x76, 0x9a, 0xea, 0x25, 0x66, 0x88, 0x47, 0xf3, + 0x93, 0xbe, 0x72, 0xfd, 0x8a, 0x0c, 0xb9, 0x35, 0x64, 0x6f, 0x21, 0xf5, 0x99, 0x09, 0x36, 0xf9, + 0x36, 0x0d, 0xdb, 0x21, 0xc1, 0xe5, 0xc2, 0x4d, 0x3e, 0x36, 0x4d, 0xb9, 0x0e, 0x66, 0x1d, 0xd4, + 0xb2, 0xcc, 0xb6, 0x9f, 0x89, 0xf4, 0x47, 0x7c, 0x22, 0x7f, 0xaf, 0xbc, 0x00, 0x64, 0x98, 0xd1, + 0x91, 0xec, 0xd4, 0x25, 0x01, 0xa6, 0x5f, 0xa9, 0xe9, 0x03, 0xf3, 0x5d, 0xd9, 0xfb, 0xa9, 0x7b, + 0x49, 0x7d, 0x85, 0xf0, 0xee, 0xeb, 0x4d, 0x90, 0xc7, 0x6a, 0xea, 0x8f, 0xd1, 0xfd, 0xfb, 0x63, + 0x9a, 0x47, 0x59, 0x80, 0x63, 0x0e, 0xea, 0xa0, 0x96, 0x8b, 0xda, 0x5e, 0xd3, 0xd5, 0x06, 0x76, + 0x0a, 0xfb, 0xb3, 0xab, 0x7f, 0xca, 0x02, 0x78, 0x07, 0x0f, 0xe0, 0xf5, 0x7d, 0x44, 0xe9, 0x55, + 0x28, 0xda, 0x56, 0xf6, 0xaa, 0x51, 0xef, 0x58, 0xc1, 0xa2, 0xb8, 0xff, 0xee, 0x7d, 0xdb, 0x76, + 0x77, 0x3a, 0xf8, 0x1b, 0x3d, 0x60, 0xe0, 0xbf, 0x2b, 0xf3, 0x30, 0xa1, 0x9b, 0x97, 0xf0, 0xa7, + 0x6c, 0x4c, 0xad, 0xfd, 0x4c, 0xea, 0x6b, 0x03, 0xe4, 0xef, 0xe2, 0x90, 0x7f, 0xac, 0x18, 0xbb, + 0xe9, 0x03, 0xff, 0x73, 0x13, 0x90, 0x5b, 0xd7, 0x1d, 0x17, 0xa9, 0xff, 0x8f, 0x2c, 0x8a, 0xfc, + 0xf5, 0x30, 0xb7, 0x69, 0xb5, 0x76, 0x1d, 0xd4, 0xe6, 0x1b, 0x65, 0x4f, 0xea, 0x28, 0x30, 0x57, + 0x6e, 0x84, 0x82, 0x9f, 0x48, 0xc9, 0xfa, 0xdb, 0xf0, 0xfb, 0xd2, 0x71, 0xa4, 0x6c, 0x67, 0x5d, + 0xb7, 0xdd, 0xda, 0x26, 0x4e, 0x0b, 0x22, 0x65, 0xb3, 0x89, 0x1c, 0xf4, 0xf9, 0x18, 0xe8, 0x27, + 0xa2, 0xa1, 0x9f, 0x14, 0x80, 0x5e, 0x29, 0xc2, 0xe4, 0xa6, 0xd1, 0x41, 0xf8, 0x87, 0x29, 0xfc, + 0x43, 0xbf, 0x31, 0x09, 0xcb, 0x3e, 0x18, 0x93, 0x96, 0x8c, 0x0e, 0xd2, 0x82, 0xdf, 0xfc, 0x89, + 0x0c, 0x84, 0x13, 0x99, 0x55, 0xe2, 0x4f, 0xeb, 0x19, 0x5e, 0xa6, 0xbe, 0x83, 0xfc, 0xc5, 0x37, + 0x93, 0x1e, 0x6e, 0x69, 0xeb, 0xae, 0x8e, 0xc1, 0x98, 0xd1, 0xf0, 0x33, 0xef, 0x17, 0x22, 0xf7, + 0xfa, 0x85, 0x3c, 0x4f, 0x4e, 0xd6, 0x23, 0xfa, 0xcc, 0x46, 0xb4, 0xa8, 0xf3, 0x3e, 0x40, 0xc4, + 0x52, 0x0c, 0xde, 0x3d, 0x60, 0x5a, 0xba, 0x8d, 0xdc, 0x75, 0xd6, 0x13, 0x23, 0xa7, 0xf1, 0x89, + 0xd8, 0x95, 0xcf, 0xa9, 0xeb, 0x3b, 0x08, 0x17, 0x56, 0xf2, 0xbe, 0x51, 0x17, 0xad, 0x7d, 0xe9, + 0x61, 0xff, 0x9b, 0x1b, 0x75, 0xff, 0xdb, 0xaf, 0x8e, 0xe9, 0x37, 0xc3, 0x37, 0x64, 0x41, 0x2e, + 0xed, 0xba, 0x8f, 0xe8, 0xee, 0xf7, 0x07, 0xc2, 0x7e, 0x2e, 0xb4, 0x3f, 0x8b, 0xbc, 0x48, 0x7e, + 0x4c, 0xbd, 0x6f, 0x42, 0x2d, 0x11, 0xf3, 0xa7, 0x89, 0xaa, 0x5b, 0xfa, 0x3a, 0xf2, 0x76, 0x39, + 0x70, 0xb0, 0x7c, 0x30, 0x73, 0x70, 0xd3, 0x5c, 0x25, 0xfd, 0x13, 0xd3, 0x33, 0x04, 0xef, 0x7e, + 0xc7, 0x93, 0xe5, 0x62, 0xf5, 0xe1, 0xed, 0x75, 0x2c, 0xca, 0x19, 0x8d, 0xbc, 0xa8, 0xaf, 0x12, + 0x76, 0x3b, 0x27, 0x62, 0x8b, 0x75, 0x25, 0x4c, 0x66, 0x53, 0x89, 0x5d, 0x16, 0x1a, 0x53, 0x6c, + 0xfa, 0x80, 0x7d, 0x87, 0x75, 0x15, 0x2c, 0x1e, 0x18, 0x31, 0xf5, 0x75, 0xc2, 0xdb, 0x51, 0xa4, + 0xda, 0x03, 0xd6, 0x0b, 0x93, 0xc9, 0x5b, 0x6c, 0xb3, 0x2a, 0xb6, 0xe0, 0xf4, 0x25, 0xfe, 0x6d, + 0x19, 0xf2, 0x64, 0x0b, 0x52, 0x7d, 0x6b, 0x26, 0xc1, 0x2d, 0xeb, 0x2e, 0xef, 0x42, 0x18, 0xbc, + 0x27, 0x59, 0x73, 0xe0, 0x5c, 0x0d, 0xb3, 0x89, 0x5c, 0x0d, 0xf9, 0x73, 0x9c, 0x02, 0xed, 0x88, + 0xd4, 0x31, 0xe5, 0xe9, 0x64, 0x92, 0x16, 0xd6, 0x97, 0xa1, 0xf4, 0xf1, 0x7e, 0x41, 0x0e, 0x66, + 0x48, 0xd1, 0xe7, 0x8c, 0xf6, 0x16, 0x72, 0xd5, 0xf7, 0x48, 0x3f, 0x3c, 0xa8, 0x2b, 0x55, 0x98, + 0xb9, 0x88, 0xd9, 0x5e, 0xd5, 0x2f, 0x59, 0xbb, 0x2e, 0x5d, 0xb9, 0xb8, 0x31, 0x76, 0xdd, 0x83, + 0xd4, 0x73, 0x9e, 0xfc, 0xa1, 0x71, 0xff, 0x7b, 0x32, 0x26, 0x0b, 0xfe, 0xc4, 0x81, 0x2b, 0x8f, + 0x8d, 0x2c, 0x36, 0x49, 0x39, 0x09, 0xf9, 0x3d, 0x03, 0x5d, 0xac, 0xb4, 0xa9, 0x75, 0x4b, 0xdf, + 0xd4, 0xdf, 0x13, 0xde, 0xb7, 0x65, 0xe1, 0xa6, 0xbc, 0xa4, 0xab, 0x85, 0x62, 0xbb, 0xb7, 0x03, + 0xd9, 0x1a, 0xc3, 0x99, 0x62, 0xfe, 0x32, 0xce, 0x52, 0x02, 0x45, 0x8c, 0x32, 0x9c, 0xf9, 0x50, + 0x1e, 0xb1, 0x27, 0x56, 0x88, 0x00, 0x46, 0x7c, 0x4f, 0xa7, 0x58, 0x7c, 0x89, 0x01, 0x45, 0xa7, + 0x2f, 0xf9, 0x37, 0xca, 0x30, 0x55, 0x47, 0xee, 0x92, 0x81, 0x3a, 0x6d, 0x47, 0xb5, 0x0f, 0x6e, + 0x1a, 0xdd, 0x0c, 0xf9, 0x4d, 0x4c, 0x6c, 0xd0, 0xb9, 0x05, 0x9a, 0x4d, 0x7d, 0x83, 0x24, 0xba, + 0x23, 0x4c, 0x57, 0xdf, 0x7c, 0x6e, 0x47, 0x02, 0x93, 0x98, 0x47, 0x6f, 0x7c, 0xc9, 0x63, 0x08, + 0x6c, 0x2b, 0xc3, 0x0c, 0xbd, 0xbd, 0xaf, 0xd8, 0x31, 0xb6, 0x4c, 0x75, 0x77, 0x04, 0x2d, 0x44, + 0xb9, 0x05, 0x72, 0xba, 0x47, 0x8d, 0x6e, 0xbd, 0xaa, 0x7d, 0x3b, 0x4f, 0x5c, 0x9e, 0x46, 0x32, + 0x26, 0x08, 0x23, 0x19, 0x2a, 0xb6, 0xcf, 0xf3, 0x18, 0xc3, 0x48, 0x0e, 0x2c, 0x3c, 0x7d, 0xc4, + 0xbe, 0x2a, 0xc3, 0x71, 0xca, 0xc0, 0x59, 0x64, 0xbb, 0x46, 0x4b, 0xef, 0x10, 0xe4, 0x5e, 0x9c, + 0x19, 0x05, 0x74, 0x2b, 0x30, 0xbb, 0xc7, 0x92, 0xa5, 0x10, 0x9e, 0xe9, 0x0b, 0x21, 0xc7, 0x80, + 0xc6, 0xff, 0x98, 0x20, 0x1c, 0x1f, 0x27, 0x55, 0x8e, 0xe6, 0x18, 0xc3, 0xf1, 0x09, 0x33, 0x91, + 0x3e, 0xc4, 0x2f, 0xa7, 0xa1, 0x79, 0xc2, 0xee, 0xf3, 0x8b, 0xc2, 0xd8, 0x6e, 0xc0, 0x34, 0xc6, + 0x92, 0xfc, 0x48, 0x97, 0x21, 0x62, 0x94, 0x38, 0xe8, 0x77, 0xe8, 0x85, 0x61, 0xc1, 0xbf, 0x1a, + 0x4b, 0x47, 0x3d, 0x07, 0x10, 0x7e, 0x62, 0x3b, 0xe9, 0x4c, 0x54, 0x27, 0x2d, 0x89, 0x75, 0xd2, + 0x6f, 0x11, 0x0e, 0x96, 0xd2, 0x9f, 0xed, 0x83, 0xab, 0x87, 0x58, 0x98, 0x8c, 0xc1, 0xa5, 0xa7, + 0xaf, 0x17, 0xaf, 0xcd, 0xf6, 0x5e, 0xd3, 0xfe, 0xf1, 0x91, 0xcc, 0xa7, 0xd8, 0xfe, 0x40, 0xee, + 0xe9, 0x0f, 0x0e, 0x60, 0x49, 0xdf, 0x00, 0x47, 0x49, 0x11, 0xa5, 0x80, 0xad, 0x1c, 0x09, 0x05, + 0xd1, 0x93, 0xac, 0x7e, 0x62, 0x08, 0x25, 0x18, 0x74, 0x87, 0x7c, 0x5c, 0x27, 0x97, 0xcc, 0xd8, + 0x4d, 0xaa, 0x20, 0x87, 0x77, 0xf5, 0xfc, 0xb7, 0xb2, 0xc4, 0xda, 0xdd, 0xc0, 0x77, 0xba, 0xa9, + 0x7f, 0x91, 0x1d, 0xc5, 0x88, 0x70, 0x37, 0x64, 0xb1, 0x8b, 0xbb, 0x1c, 0xb9, 0xa4, 0x11, 0x16, + 0x19, 0x5e, 0xb8, 0x87, 0x1e, 0x70, 0x57, 0x8e, 0x68, 0xf8, 0x4f, 0xe5, 0x46, 0x38, 0x7a, 0x5e, + 0x6f, 0x5d, 0xd8, 0xb2, 0xad, 0x5d, 0x7c, 0xfb, 0x95, 0x45, 0xaf, 0xd1, 0xc2, 0xd7, 0x11, 0xf2, + 0x1f, 0x94, 0x5b, 0x7d, 0xd3, 0x21, 0x37, 0xc8, 0x74, 0x58, 0x39, 0x42, 0x8d, 0x07, 0xe5, 0xf1, + 0x41, 0xa7, 0x93, 0x8f, 0xed, 0x74, 0x56, 0x8e, 0xf8, 0xdd, 0x8e, 0xb2, 0x08, 0x93, 0x6d, 0x63, + 0x0f, 0x6f, 0x55, 0xe3, 0x59, 0xd7, 0xa0, 0xa3, 0xcb, 0x8b, 0xc6, 0x1e, 0xd9, 0xd8, 0x5e, 0x39, + 0xa2, 0x05, 0x7f, 0x2a, 0xcb, 0x30, 0x85, 0xb7, 0x05, 0x30, 0x99, 0xc9, 0x44, 0xc7, 0x92, 0x57, + 0x8e, 0x68, 0xe1, 0xbf, 0x9e, 0xf5, 0x91, 0xc5, 0x67, 0x3f, 0xee, 0xf2, 0xb7, 0xdb, 0x33, 0x89, + 0xb6, 0xdb, 0x3d, 0x59, 0x90, 0x0d, 0xf7, 0x93, 0x90, 0x6b, 0x61, 0x09, 0x4b, 0x54, 0xc2, 0xe4, + 0x55, 0xb9, 0x03, 0xb2, 0x3b, 0xba, 0xed, 0x4f, 0x9e, 0xaf, 0x1f, 0x4c, 0x77, 0x4d, 0xb7, 0x2f, + 0x78, 0x08, 0x7a, 0x7f, 0x2d, 0x4c, 0x40, 0x0e, 0x0b, 0x2e, 0x78, 0x50, 0xdf, 0x9e, 0x25, 0x66, + 0x48, 0xc9, 0x32, 0xbd, 0x61, 0xbf, 0x61, 0xf9, 0x07, 0x64, 0x7e, 0x2f, 0x33, 0x1a, 0x0b, 0xb2, + 0xef, 0xbd, 0xe6, 0x72, 0xe4, 0xbd, 0xe6, 0x3d, 0x17, 0xec, 0x66, 0x7b, 0x2f, 0xd8, 0x0d, 0x97, + 0x0f, 0x72, 0x83, 0x1d, 0x55, 0xfe, 0x74, 0x08, 0xd3, 0xa5, 0x57, 0x10, 0xd1, 0x33, 0xf0, 0x8e, + 0x61, 0x32, 0x75, 0xf6, 0x5f, 0x13, 0x76, 0x4a, 0x49, 0x8d, 0x9a, 0x01, 0xec, 0xa5, 0xdf, 0x37, + 0xfd, 0x46, 0x16, 0x4e, 0x91, 0x6b, 0x9c, 0xf7, 0x50, 0xc3, 0xe2, 0xef, 0x9b, 0x54, 0xff, 0x68, + 0x24, 0x4a, 0xd3, 0x67, 0xc0, 0x91, 0xfb, 0x0e, 0x38, 0xfb, 0x0e, 0x29, 0x67, 0x07, 0x1c, 0x52, + 0xce, 0x25, 0x5b, 0x39, 0xfc, 0x30, 0xab, 0x3f, 0xeb, 0xbc, 0xfe, 0xdc, 0x1e, 0x01, 0x50, 0x3f, + 0xb9, 0x8c, 0xc4, 0xbe, 0x79, 0x57, 0xa0, 0x29, 0x75, 0x4e, 0x53, 0xee, 0x1a, 0x9e, 0x91, 0xf4, + 0xb5, 0xe5, 0x77, 0xb3, 0x70, 0x59, 0xc8, 0x4c, 0x15, 0x5d, 0xa4, 0x8a, 0xf2, 0x85, 0x91, 0x28, + 0x4a, 0xf2, 0x18, 0x08, 0x69, 0x6b, 0xcc, 0x1f, 0x0b, 0x9f, 0x1d, 0xea, 0x05, 0x2a, 0x90, 0x4d, + 0x84, 0xb2, 0x9c, 0x84, 0x3c, 0xe9, 0x61, 0x28, 0x34, 0xf4, 0x2d, 0x61, 0x77, 0x23, 0x76, 0xe2, + 0x48, 0x94, 0xb7, 0x31, 0xe8, 0x0f, 0x5d, 0xd7, 0x68, 0xec, 0xda, 0x66, 0xc5, 0x74, 0x2d, 0xf5, + 0x67, 0x47, 0xa2, 0x38, 0x81, 0x37, 0x9c, 0x3c, 0x8c, 0x37, 0xdc, 0x50, 0xab, 0x1c, 0x7e, 0x0d, + 0x0e, 0x65, 0x95, 0x23, 0xa2, 0xf0, 0xf4, 0xf1, 0x7b, 0xa7, 0x0c, 0x27, 0xe9, 0x64, 0x6b, 0x81, + 0xb7, 0x10, 0xd5, 0xfb, 0x46, 0x01, 0xe4, 0x71, 0xdf, 0x4c, 0xa2, 0xb7, 0x9c, 0xe1, 0x17, 0xfe, + 0xa4, 0x54, 0xec, 0xfd, 0x0e, 0xdc, 0x74, 0xb0, 0x87, 0xc3, 0x91, 0x20, 0x25, 0x76, 0xad, 0x43, + 0x02, 0x36, 0xd2, 0xc7, 0xec, 0xa5, 0x32, 0xe4, 0xe9, 0xf5, 0xfd, 0x1b, 0xa9, 0x38, 0x4c, 0xf0, + 0x51, 0x9e, 0x05, 0x76, 0xe4, 0x12, 0x5f, 0x72, 0x9f, 0xde, 0x5e, 0xdc, 0x21, 0xdd, 0x62, 0xff, + 0x5d, 0x09, 0xa6, 0xeb, 0xc8, 0x2d, 0xe9, 0xb6, 0x6d, 0xe8, 0x5b, 0xa3, 0xf2, 0xf8, 0x16, 0xf5, + 0x1e, 0x56, 0xbf, 0x97, 0x11, 0x3d, 0x4f, 0x13, 0x2c, 0x84, 0xfb, 0xac, 0x46, 0xc4, 0x12, 0x7c, + 0x58, 0xe8, 0xcc, 0xcc, 0x20, 0x6a, 0x63, 0xf0, 0xd8, 0x96, 0x60, 0xc2, 0x3f, 0x8b, 0x77, 0x33, + 0x77, 0x3e, 0x73, 0xdb, 0xdd, 0xf1, 0x8f, 0xc1, 0xe0, 0xe7, 0xfd, 0x67, 0xc0, 0xd4, 0xd7, 0x24, + 0x74, 0x94, 0x8f, 0x3f, 0x48, 0x98, 0xac, 0x8d, 0x25, 0x71, 0x87, 0x3f, 0xac, 0xa3, 0x83, 0xbf, + 0x3d, 0x41, 0x97, 0x23, 0x57, 0x75, 0x17, 0x3d, 0xa0, 0x7e, 0x51, 0x86, 0x89, 0x3a, 0x72, 0xbd, + 0xf1, 0x96, 0xbb, 0xdc, 0x74, 0x58, 0x0d, 0x57, 0x98, 0x15, 0x8f, 0x29, 0xba, 0x86, 0x71, 0x0f, + 0x4c, 0x75, 0x6d, 0xab, 0x85, 0x1c, 0x87, 0xae, 0x5e, 0xb0, 0x8e, 0x6a, 0xfd, 0x46, 0x7f, 0xcc, + 0xda, 0xfc, 0xba, 0xff, 0x8f, 0x16, 0xfe, 0x9e, 0xd4, 0x0c, 0x20, 0x94, 0x68, 0x05, 0xc7, 0x6d, + 0x06, 0xc4, 0x15, 0x9e, 0x3e, 0xd0, 0x9f, 0x93, 0x61, 0xa6, 0x8e, 0xdc, 0x40, 0x8a, 0x09, 0x36, + 0x39, 0xa2, 0xe1, 0xe5, 0xa0, 0x94, 0x0f, 0x06, 0xa5, 0xf8, 0xd5, 0x80, 0xbc, 0x34, 0x03, 0x62, + 0x63, 0xbc, 0x1a, 0x50, 0x8c, 0x83, 0x31, 0x1c, 0x5f, 0x7b, 0x34, 0x4c, 0x61, 0x5e, 0x70, 0x83, + 0xfd, 0xf9, 0x6c, 0xd8, 0x78, 0xbf, 0x94, 0x52, 0xe3, 0xbd, 0x13, 0x72, 0x3b, 0xba, 0x7d, 0xc1, + 0xc1, 0x0d, 0x77, 0x5a, 0xc4, 0x6c, 0x5f, 0xf3, 0xb2, 0x6b, 0xe4, 0xaf, 0xfe, 0x7e, 0x9a, 0xb9, + 0x64, 0x7e, 0x9a, 0x0f, 0x4b, 0x89, 0x46, 0x42, 0x32, 0x77, 0x18, 0x61, 0x93, 0x4f, 0x30, 0x6e, + 0xc6, 0x94, 0x9d, 0xbe, 0x72, 0xbc, 0x58, 0x86, 0x49, 0x6f, 0xdc, 0xc6, 0xf6, 0xf8, 0xb9, 0x83, + 0xab, 0x43, 0x7f, 0x43, 0x3f, 0x61, 0x0f, 0xec, 0x4b, 0x64, 0x74, 0xe6, 0x7d, 0x82, 0x1e, 0x38, + 0xae, 0xf0, 0xf4, 0xf1, 0x78, 0x37, 0xc1, 0x03, 0xb7, 0x07, 0xf5, 0x4d, 0x32, 0xc8, 0xcb, 0xc8, + 0x1d, 0xb7, 0x15, 0xf9, 0x0e, 0xe1, 0x10, 0x47, 0x9c, 0xc0, 0x30, 0xcf, 0xf3, 0xcb, 0x68, 0x34, + 0x0d, 0x48, 0x2c, 0xb6, 0x91, 0x10, 0x03, 0xe9, 0xa3, 0xf6, 0x7e, 0x82, 0x1a, 0xd9, 0x5c, 0xf8, + 0x99, 0x11, 0xf4, 0xaa, 0xe3, 0x5d, 0xf8, 0xf0, 0x05, 0x88, 0x69, 0x1c, 0x56, 0x7b, 0xeb, 0x57, + 0xf8, 0x58, 0xae, 0xe2, 0x03, 0xaf, 0xb1, 0x6f, 0xa3, 0xd6, 0x05, 0xd4, 0x56, 0x7f, 0xea, 0xe0, + 0xd0, 0x9d, 0x82, 0x89, 0x16, 0xa1, 0x86, 0xc1, 0x9b, 0xd4, 0xfc, 0xd7, 0x04, 0xf7, 0x4a, 0xf3, + 0x1d, 0x11, 0xf9, 0x7d, 0x8c, 0xf7, 0x4a, 0x0b, 0x14, 0x3f, 0x06, 0xb3, 0x85, 0xcc, 0x32, 0x2a, + 0x2d, 0xcb, 0x54, 0xff, 0xcb, 0xc1, 0x61, 0xb9, 0x0a, 0xa6, 0x8c, 0x96, 0x65, 0xe2, 0x30, 0x14, + 0xfe, 0x21, 0xa0, 0x20, 0xc1, 0xff, 0x5a, 0xde, 0xb1, 0xee, 0x37, 0xe8, 0xae, 0x79, 0x98, 0x30, + 0xac, 0x31, 0xe1, 0xb1, 0x7e, 0x58, 0xc6, 0x44, 0x9f, 0xb2, 0xd3, 0x87, 0xec, 0x13, 0xa1, 0x77, + 0x1b, 0xe9, 0x0a, 0x1f, 0x11, 0xab, 0xc0, 0xc3, 0x0c, 0x67, 0x6c, 0x2d, 0x0e, 0x65, 0x38, 0x8b, + 0x61, 0x60, 0x0c, 0x37, 0x56, 0x84, 0x38, 0xa6, 0xbe, 0x06, 0x7c, 0x00, 0x74, 0x46, 0x67, 0x1e, + 0x0e, 0x89, 0xce, 0xe1, 0x98, 0x88, 0x1f, 0xa2, 0x21, 0x32, 0xa9, 0xc5, 0xa3, 0xfe, 0xd7, 0x51, + 0x80, 0x73, 0xfb, 0x30, 0xfe, 0x0a, 0xc4, 0x5b, 0x21, 0xc1, 0x8d, 0xd8, 0xfb, 0x24, 0xe8, 0x51, + 0x19, 0xe3, 0x5d, 0xf1, 0x22, 0xe5, 0xa7, 0x0f, 0xe0, 0x8b, 0x64, 0x98, 0xc3, 0x3e, 0x02, 0x1d, + 0xa4, 0xdb, 0xa4, 0xa3, 0x1c, 0x89, 0xa3, 0xfc, 0xbb, 0x85, 0x03, 0xfc, 0xf0, 0x72, 0x08, 0xf9, + 0x18, 0x09, 0x14, 0x62, 0xd1, 0x7d, 0x04, 0x59, 0x18, 0xcb, 0x36, 0x4a, 0x21, 0x60, 0x81, 0xaa, + 0xf8, 0x68, 0xf0, 0x48, 0xe8, 0x91, 0xcb, 0x0b, 0xc3, 0x6f, 0x6c, 0x63, 0xf6, 0xc8, 0x15, 0x61, + 0x22, 0x7d, 0x4c, 0xde, 0x74, 0x0b, 0x5d, 0x70, 0x6e, 0xe0, 0x0b, 0xe3, 0x5f, 0x97, 0x0d, 0x4e, + 0xb4, 0x7d, 0x6e, 0x24, 0x1e, 0x98, 0x07, 0x08, 0x88, 0xaf, 0x40, 0xd6, 0xb6, 0x2e, 0x92, 0xa5, + 0xad, 0x59, 0x0d, 0x3f, 0x93, 0xeb, 0x29, 0x3b, 0xbb, 0x3b, 0x26, 0x39, 0x19, 0x3a, 0xab, 0xf9, + 0xaf, 0xca, 0x75, 0x30, 0x7b, 0xd1, 0x70, 0xb7, 0x57, 0x90, 0xde, 0x46, 0xb6, 0x66, 0x5d, 0xc4, + 0x1e, 0x73, 0x93, 0x1a, 0x9f, 0xc8, 0xfb, 0xaf, 0x08, 0xd8, 0x97, 0xf8, 0x16, 0xf9, 0xb1, 0x1c, + 0x7f, 0x4b, 0x62, 0x79, 0x46, 0x73, 0x95, 0xbe, 0xc2, 0x7c, 0x40, 0x86, 0x29, 0xcd, 0xba, 0x48, + 0x95, 0xe4, 0xff, 0x38, 0x5c, 0x1d, 0x49, 0x3c, 0xd1, 0xc3, 0x92, 0x0b, 0xd8, 0x1f, 0xfb, 0x44, + 0x2f, 0xb6, 0xf8, 0xb1, 0x9c, 0x5c, 0x9a, 0xd1, 0xac, 0x8b, 0x75, 0xe4, 0x92, 0x16, 0xa1, 0x36, + 0x47, 0xe4, 0x64, 0x6d, 0x38, 0x84, 0x20, 0x9d, 0x87, 0x07, 0xef, 0x49, 0x77, 0x11, 0x02, 0x01, + 0x05, 0x2c, 0x8e, 0x7b, 0x17, 0x61, 0x20, 0x07, 0x63, 0x88, 0x91, 0x22, 0xc3, 0xb4, 0x66, 0x5d, + 0xf4, 0x86, 0x86, 0x25, 0xa3, 0xd3, 0x19, 0xcd, 0x08, 0x99, 0xd4, 0xf8, 0xf7, 0xc5, 0xe0, 0x73, + 0x31, 0x76, 0xe3, 0x7f, 0x00, 0x03, 0xe9, 0xc3, 0xf0, 0x3c, 0xd2, 0x58, 0xfc, 0x11, 0xda, 0x1c, + 0x0d, 0x0e, 0xc3, 0x36, 0x88, 0x80, 0x8d, 0x43, 0x6b, 0x10, 0x51, 0x1c, 0x8c, 0x65, 0xe7, 0x64, + 0xae, 0x84, 0x87, 0xf9, 0xd1, 0xb6, 0x89, 0xf7, 0x26, 0x73, 0x4d, 0xa4, 0xc3, 0x2e, 0xc7, 0xc8, + 0x48, 0xd0, 0x48, 0xe0, 0x82, 0x28, 0xc0, 0x43, 0xfa, 0x78, 0x7c, 0x54, 0x86, 0x19, 0xc2, 0xc2, + 0x23, 0xc4, 0x0a, 0x18, 0xaa, 0x51, 0xb1, 0x35, 0x38, 0x9c, 0x46, 0x15, 0xc3, 0xc1, 0x58, 0x6e, + 0x05, 0xf5, 0xec, 0xb8, 0x21, 0x8e, 0x8f, 0x47, 0x21, 0x38, 0xb4, 0x31, 0x36, 0xc2, 0x23, 0xe4, + 0xc3, 0x18, 0x63, 0x87, 0x74, 0x8c, 0xfc, 0x79, 0x41, 0x2b, 0x1a, 0x25, 0x06, 0x07, 0x68, 0x0a, + 0x23, 0x84, 0x61, 0xc8, 0xa6, 0x70, 0x48, 0x48, 0x7c, 0x4d, 0x06, 0x20, 0x0c, 0xac, 0x59, 0x7b, + 0xf8, 0x32, 0x9f, 0x11, 0x74, 0x67, 0xbd, 0x6e, 0xf5, 0xf2, 0x00, 0xb7, 0xfa, 0x84, 0x21, 0x5c, + 0x92, 0xae, 0x04, 0x32, 0x52, 0xf6, 0x2a, 0x39, 0xf6, 0x95, 0xc0, 0xf8, 0xf2, 0xd3, 0xc7, 0xf8, + 0x2b, 0xc4, 0x9a, 0x0b, 0x0f, 0x98, 0xfe, 0xda, 0x48, 0x50, 0x66, 0x66, 0xff, 0x32, 0x3f, 0xfb, + 0x3f, 0x00, 0xb6, 0xc3, 0xda, 0x88, 0x83, 0x0e, 0x8e, 0xa6, 0x6f, 0x23, 0x1e, 0xde, 0x01, 0xd1, + 0x9f, 0xc9, 0xc2, 0x51, 0xda, 0x89, 0xfc, 0x30, 0x40, 0x9c, 0xf0, 0x1c, 0x1e, 0xd7, 0x49, 0x0e, + 0x40, 0x79, 0x54, 0x0b, 0x52, 0x49, 0x96, 0x32, 0x05, 0xd8, 0x1b, 0xcb, 0xea, 0x46, 0xbe, 0xfc, + 0x40, 0x57, 0x37, 0xdb, 0xe2, 0xe1, 0x7e, 0x07, 0x00, 0xef, 0xaf, 0x35, 0xca, 0xfc, 0x5a, 0x63, + 0x9f, 0x95, 0xc9, 0xc4, 0x3b, 0xd7, 0x58, 0x64, 0x84, 0xdd, 0xb1, 0xef, 0x5c, 0x47, 0x97, 0x9d, + 0x3e, 0x4a, 0xef, 0x95, 0x21, 0x5b, 0xb7, 0x6c, 0x57, 0x7d, 0x7e, 0x92, 0xd6, 0x49, 0x24, 0x1f, + 0x82, 0xe4, 0xbf, 0x2b, 0x25, 0xee, 0x96, 0xe6, 0x9b, 0xe3, 0x8f, 0x3a, 0xeb, 0xae, 0x8e, 0xbd, + 0xba, 0xbd, 0xf2, 0x99, 0xeb, 0x9a, 0x93, 0xc6, 0xd3, 0x21, 0xf2, 0xab, 0x47, 0x1f, 0xc0, 0x48, + 0x2d, 0x9e, 0x4e, 0x64, 0xc9, 0xe9, 0xe3, 0xf6, 0xd0, 0x51, 0xea, 0xdb, 0xba, 0x64, 0x74, 0x90, + 0xfa, 0x7c, 0xe2, 0x32, 0x52, 0xd5, 0x77, 0x90, 0xf8, 0x91, 0x98, 0x58, 0xd7, 0x56, 0x1c, 0x5f, + 0x56, 0x0e, 0xe3, 0xcb, 0x26, 0x6d, 0x50, 0xe4, 0x00, 0x3a, 0x61, 0x69, 0xdc, 0x0d, 0x2a, 0xa6, + 0xec, 0xb1, 0xc4, 0xe9, 0x3c, 0x56, 0x47, 0x2e, 0x31, 0x2a, 0x6b, 0xfe, 0x0d, 0x2c, 0x3f, 0x3d, + 0x92, 0x88, 0x9d, 0xc1, 0x05, 0x2f, 0x72, 0xcf, 0x05, 0x2f, 0x1f, 0x60, 0xc1, 0x59, 0xe3, 0xc1, + 0x79, 0x72, 0xb4, 0x80, 0x78, 0x26, 0x47, 0x02, 0xd3, 0x3b, 0x02, 0x98, 0xd6, 0x39, 0x98, 0xee, + 0x18, 0x92, 0x8b, 0xf4, 0x01, 0xfb, 0xc5, 0x1c, 0x1c, 0x25, 0x93, 0xfe, 0xa2, 0xd9, 0xa6, 0x11, + 0x56, 0xdf, 0x2a, 0x1d, 0xf2, 0x66, 0xdb, 0xfe, 0x10, 0xac, 0x5c, 0x2c, 0xe7, 0x5c, 0xef, 0xed, + 0xf8, 0x0b, 0x24, 0x9c, 0xab, 0xd7, 0x89, 0xe2, 0x9d, 0x36, 0xf1, 0x1b, 0xf2, 0x83, 0xff, 0xf8, + 0xbb, 0x8c, 0x26, 0xc4, 0xef, 0x32, 0xfa, 0x93, 0x64, 0xeb, 0x76, 0xb8, 0xe8, 0x1e, 0x81, 0xa7, + 0x6c, 0x3b, 0x25, 0x58, 0xd1, 0x13, 0xe0, 0xee, 0x47, 0xc3, 0x9d, 0x2c, 0x8c, 0x20, 0x32, 0xa4, + 0x3b, 0x19, 0x26, 0x70, 0x98, 0xee, 0x64, 0x83, 0x18, 0x18, 0xc3, 0xad, 0xf6, 0x39, 0xba, 0x9b, + 0x8f, 0xdb, 0x8d, 0xfa, 0x57, 0x52, 0xea, 0xa3, 0xf4, 0xf7, 0x33, 0x89, 0xfc, 0x9f, 0x31, 0x5f, + 0xf1, 0xc3, 0x74, 0x12, 0x8f, 0xe6, 0x38, 0x72, 0x63, 0x58, 0x37, 0x92, 0xb0, 0x2f, 0xfa, 0x39, + 0xa3, 0xed, 0x6e, 0x8f, 0xe8, 0x44, 0xc7, 0x45, 0x8f, 0x96, 0x7f, 0x3d, 0x32, 0x7e, 0x51, 0xff, + 0x35, 0x93, 0x28, 0x84, 0x54, 0x20, 0x12, 0xcc, 0x56, 0x84, 0x88, 0x13, 0x04, 0x7e, 0x8a, 0xa5, + 0x37, 0x46, 0x8d, 0x3e, 0x6b, 0xb4, 0x91, 0xf5, 0x08, 0xd4, 0x68, 0xcc, 0xd7, 0xe8, 0x34, 0x3a, + 0x8e, 0xdc, 0x8f, 0xa8, 0x46, 0x07, 0x22, 0x19, 0x91, 0x46, 0xc7, 0xd2, 0x4b, 0x5f, 0xc6, 0xaf, + 0x99, 0xa1, 0x13, 0xa9, 0x55, 0xc3, 0xbc, 0xa0, 0xfe, 0x73, 0xde, 0xbf, 0x98, 0xf9, 0x9c, 0xe1, + 0x6e, 0xd3, 0x58, 0x30, 0xbf, 0x2b, 0x7c, 0x37, 0xca, 0x10, 0xf1, 0x5e, 0xf8, 0x70, 0x52, 0xb9, + 0x7d, 0xe1, 0xa4, 0x8a, 0x30, 0x6b, 0x98, 0x2e, 0xb2, 0x4d, 0xbd, 0xb3, 0xd4, 0xd1, 0xb7, 0x9c, + 0x53, 0x13, 0x7d, 0x2f, 0xaf, 0xab, 0x30, 0x79, 0x34, 0xfe, 0x0f, 0xf6, 0xfa, 0xca, 0x49, 0xfe, + 0xfa, 0xca, 0x88, 0xe8, 0x57, 0x53, 0xd1, 0xd1, 0xaf, 0x82, 0xe8, 0x56, 0x30, 0x38, 0x38, 0xb6, + 0xa8, 0x6d, 0x9c, 0x30, 0xdc, 0xdf, 0xcd, 0x82, 0x51, 0xd8, 0x82, 0xd0, 0x8f, 0xaf, 0x97, 0x13, + 0xad, 0xee, 0x79, 0x8a, 0x30, 0xdf, 0xab, 0x04, 0x89, 0x2d, 0x54, 0xb6, 0xf2, 0x72, 0x4f, 0xe5, + 0x03, 0x93, 0x27, 0x2b, 0x60, 0xf2, 0xb0, 0x4a, 0x95, 0x13, 0x53, 0xaa, 0x24, 0x8b, 0x85, 0x22, + 0xb5, 0x1d, 0xc3, 0x69, 0xa4, 0x1c, 0x1c, 0xf3, 0xa3, 0xdd, 0x76, 0xbb, 0x48, 0xb7, 0x75, 0xb3, + 0x85, 0xd4, 0x4f, 0x48, 0xa3, 0x30, 0x7b, 0x97, 0x60, 0xd2, 0x68, 0x59, 0x66, 0xdd, 0x78, 0x96, + 0x7f, 0xb9, 0x5c, 0x7c, 0x90, 0x75, 0x2c, 0x91, 0x0a, 0xfd, 0x43, 0x0b, 0xfe, 0x55, 0x2a, 0x30, + 0xd5, 0xd2, 0xed, 0x36, 0x09, 0xc2, 0x97, 0xeb, 0xb9, 0xc8, 0x29, 0x92, 0x50, 0xc9, 0xff, 0x45, + 0x0b, 0xff, 0x56, 0x6a, 0xbc, 0x10, 0xf3, 0x3d, 0xd1, 0x3c, 0x22, 0x89, 0x2d, 0x86, 0x3f, 0x71, + 0x32, 0xf7, 0xa4, 0x63, 0xa3, 0x0e, 0xbe, 0x83, 0x9e, 0xf4, 0x10, 0x53, 0x5a, 0x98, 0x90, 0x74, + 0x79, 0x00, 0x17, 0xb5, 0x0f, 0x8d, 0x71, 0x2f, 0x0f, 0x08, 0x71, 0x91, 0xbe, 0x66, 0xbe, 0x2b, + 0x0f, 0xb3, 0xa4, 0x57, 0xa3, 0xe2, 0x54, 0x5f, 0x84, 0xaf, 0x90, 0x76, 0xef, 0x45, 0x97, 0xd4, + 0xfa, 0xc1, 0xc7, 0xe4, 0x02, 0xc8, 0x17, 0x82, 0x80, 0x83, 0xde, 0x63, 0xd2, 0x7d, 0x7b, 0x9f, + 0xaf, 0x79, 0xc2, 0xd3, 0xb8, 0xf7, 0xed, 0xe3, 0x8b, 0x4f, 0x1f, 0x9f, 0x5f, 0x92, 0x41, 0x2e, + 0xb6, 0xdb, 0x6a, 0xeb, 0xe0, 0x50, 0x5c, 0x03, 0xd3, 0x7e, 0x9b, 0x09, 0x63, 0x40, 0xb2, 0x49, + 0x49, 0x17, 0x41, 0x03, 0xd9, 0x14, 0xdb, 0x63, 0xdf, 0x55, 0x88, 0x29, 0x3b, 0x7d, 0x50, 0x7e, + 0x6d, 0x82, 0x36, 0x9a, 0x05, 0xcb, 0xba, 0x80, 0x8f, 0xca, 0x3c, 0x5f, 0x86, 0xdc, 0x12, 0x72, + 0x5b, 0xdb, 0x23, 0x6a, 0x33, 0xbb, 0x76, 0xc7, 0x6f, 0x33, 0xfb, 0xee, 0xc3, 0x1f, 0x6c, 0xc3, + 0xfa, 0x6c, 0xcd, 0x63, 0x96, 0xc6, 0x1d, 0xdd, 0x39, 0xb6, 0xf4, 0xf4, 0xc1, 0xf9, 0x57, 0x19, + 0xe6, 0x82, 0x15, 0x2e, 0x82, 0xc9, 0x2f, 0x66, 0x1e, 0x69, 0xeb, 0x9d, 0xea, 0x17, 0x92, 0x85, + 0x48, 0x0b, 0x64, 0xca, 0xd7, 0x2c, 0xe5, 0x85, 0xc5, 0x04, 0xc1, 0xd3, 0xc4, 0x18, 0x1c, 0xc3, + 0x0c, 0x5e, 0x86, 0x49, 0xcc, 0xd0, 0xa2, 0xb1, 0x87, 0x5d, 0x07, 0xb9, 0x85, 0xc6, 0x67, 0x8f, + 0x64, 0xa1, 0xf1, 0x0e, 0x7e, 0xa1, 0x51, 0x30, 0xe2, 0xb1, 0xbf, 0xce, 0x98, 0xd0, 0x97, 0xc6, + 0xfb, 0x7f, 0xe4, 0xcb, 0x8c, 0x09, 0x7c, 0x69, 0x06, 0x94, 0x9f, 0x3e, 0xa2, 0xaf, 0xff, 0x4f, + 0xb4, 0xb3, 0xf5, 0x37, 0x54, 0xd5, 0xff, 0xeb, 0x18, 0x64, 0xcf, 0x7a, 0x0f, 0xff, 0x23, 0xbc, + 0x11, 0xeb, 0x15, 0x23, 0x08, 0xce, 0xf0, 0x34, 0xc8, 0x7a, 0xf4, 0xe9, 0xb4, 0xe5, 0x46, 0xb1, + 0xdd, 0x5d, 0x8f, 0x11, 0x0d, 0xff, 0xa7, 0x9c, 0x84, 0xbc, 0x63, 0xed, 0xda, 0x2d, 0xcf, 0x7c, + 0xf6, 0x34, 0x86, 0xbe, 0x25, 0x0d, 0x4a, 0xca, 0x91, 0x9e, 0x1f, 0x9d, 0xcb, 0x28, 0x73, 0x41, + 0x92, 0xcc, 0x5d, 0x90, 0x94, 0x60, 0xff, 0x40, 0x80, 0xb7, 0xf4, 0x35, 0xe2, 0xaf, 0xf0, 0x5d, + 0x81, 0xed, 0x51, 0xc1, 0x1e, 0x21, 0x96, 0x83, 0xaa, 0x43, 0x52, 0x87, 0x6f, 0x5e, 0xb4, 0x41, + 0x1c, 0xf8, 0xb1, 0x3a, 0x7c, 0x0b, 0xf0, 0x30, 0x96, 0x53, 0xea, 0x79, 0xea, 0xa4, 0x7a, 0xdf, + 0x28, 0xd1, 0xcd, 0x72, 0x4a, 0x7f, 0x20, 0x74, 0x46, 0xe8, 0xbc, 0x3a, 0x34, 0x3a, 0x87, 0xe4, + 0xbe, 0xfa, 0xfb, 0x32, 0x8e, 0x84, 0xe9, 0x1b, 0x39, 0xe2, 0x17, 0x1d, 0x25, 0x86, 0xc8, 0x1b, + 0x83, 0xb9, 0x38, 0xd0, 0xb3, 0xc3, 0x87, 0x06, 0xe7, 0x45, 0xc7, 0xf0, 0x3f, 0xee, 0xd0, 0xe0, + 0xa2, 0x8c, 0xa4, 0x0f, 0xe4, 0xaf, 0x93, 0x8b, 0xc5, 0x8a, 0x2d, 0xd7, 0xd8, 0x1b, 0x71, 0x4b, + 0xe3, 0x87, 0x97, 0x84, 0xd1, 0x80, 0xf7, 0x49, 0x88, 0x70, 0x38, 0xee, 0x68, 0xc0, 0x62, 0x6c, + 0xa4, 0x0f, 0xd3, 0xdf, 0xe6, 0x3d, 0xe9, 0xd1, 0xb5, 0x99, 0x37, 0xd1, 0xd5, 0x00, 0x74, 0x70, + 0xb4, 0xce, 0xc0, 0x0c, 0x33, 0xf5, 0xf7, 0x2f, 0xac, 0xe1, 0xd2, 0x92, 0x1e, 0x74, 0x0f, 0x44, + 0x36, 0xf2, 0x85, 0x81, 0x04, 0x0b, 0xbe, 0x22, 0x4c, 0x8c, 0xe5, 0x3e, 0x38, 0x7f, 0x0c, 0x1b, + 0x13, 0x56, 0xbf, 0xcb, 0x62, 0x55, 0xe3, 0xb1, 0xba, 0x4d, 0x44, 0x4c, 0x62, 0x63, 0x9a, 0xd0, + 0xbc, 0xf1, 0x9d, 0x01, 0x5c, 0x1a, 0x07, 0xd7, 0xd3, 0x86, 0xe6, 0x23, 0x7d, 0xc4, 0x5e, 0x49, + 0xba, 0xc3, 0x3a, 0x31, 0xd9, 0x47, 0xd3, 0x1d, 0xd2, 0xd9, 0x80, 0xcc, 0xcd, 0x06, 0x12, 0xfa, + 0xdb, 0x87, 0x6e, 0xa4, 0x3e, 0x73, 0x83, 0x20, 0xca, 0x8e, 0xd8, 0xdf, 0x7e, 0x20, 0x07, 0xe9, + 0x83, 0xf3, 0x8f, 0x32, 0xc0, 0xb2, 0x6d, 0xed, 0x76, 0x6b, 0x76, 0x1b, 0xd9, 0xea, 0xdf, 0x84, + 0x13, 0x80, 0x97, 0x8d, 0x60, 0x02, 0xb0, 0x0e, 0xb0, 0x15, 0x10, 0xa7, 0x1a, 0x7e, 0x8b, 0x98, + 0xb9, 0x1f, 0x32, 0xa5, 0x31, 0x34, 0xf8, 0x2b, 0x67, 0x9f, 0xce, 0x63, 0x1c, 0xd7, 0x67, 0x85, + 0xe4, 0x46, 0x39, 0x01, 0x78, 0x77, 0x80, 0x75, 0x83, 0xc3, 0xfa, 0xee, 0x03, 0x70, 0x92, 0x3e, + 0xe6, 0xff, 0x34, 0x01, 0xd3, 0x64, 0xbb, 0x8e, 0xc8, 0xf4, 0xef, 0x43, 0xd0, 0x7f, 0x6d, 0x04, + 0xa0, 0x6f, 0xc0, 0x8c, 0x15, 0x52, 0x27, 0x7d, 0x2a, 0xbb, 0x00, 0x13, 0x0b, 0x3b, 0xc3, 0x97, + 0xc6, 0x91, 0x51, 0x3f, 0xc6, 0x22, 0xaf, 0xf1, 0xc8, 0xdf, 0x11, 0x23, 0x6f, 0x86, 0xe2, 0x28, + 0xa1, 0x7f, 0x4f, 0x00, 0xfd, 0x06, 0x07, 0x7d, 0xf1, 0x20, 0xac, 0x8c, 0x21, 0xdc, 0xbe, 0x0c, + 0x59, 0x7c, 0x3a, 0xee, 0x37, 0x52, 0x9c, 0xdf, 0x9f, 0x82, 0x09, 0xdc, 0x64, 0x83, 0x79, 0x87, + 0xff, 0xea, 0x7d, 0xd1, 0x37, 0x5d, 0x64, 0x07, 0x1e, 0x0b, 0xfe, 0xab, 0xc7, 0x83, 0xef, 0x95, + 0xec, 0x9c, 0xca, 0x93, 0x8d, 0xc8, 0x20, 0x61, 0xe8, 0x49, 0x09, 0x2b, 0xf1, 0x91, 0x9d, 0x97, + 0x1b, 0x66, 0x52, 0x32, 0x80, 0x91, 0xf4, 0x81, 0xff, 0x8b, 0x2c, 0x9c, 0x22, 0xab, 0x4a, 0x4b, + 0xb6, 0xb5, 0xd3, 0x73, 0xbb, 0x95, 0x71, 0x70, 0x5d, 0xb8, 0x1e, 0xe6, 0x5c, 0xce, 0x1f, 0x9b, + 0xea, 0x44, 0x4f, 0xaa, 0xfa, 0xa7, 0xac, 0x4f, 0xc5, 0x33, 0x78, 0x24, 0x17, 0x62, 0x04, 0x18, + 0xc5, 0x7b, 0xe2, 0x85, 0x7a, 0x41, 0x46, 0x99, 0x45, 0x2a, 0x79, 0xa8, 0x35, 0xcb, 0x40, 0xa7, + 0x72, 0x22, 0x3a, 0xf5, 0xc1, 0x40, 0xa7, 0x7e, 0x8a, 0xd3, 0xa9, 0xe5, 0x83, 0x8b, 0x24, 0x7d, + 0xdd, 0x7a, 0x5d, 0xb0, 0x31, 0x14, 0x6c, 0xdb, 0xed, 0xa4, 0xb0, 0x59, 0xc7, 0xfa, 0x23, 0x65, + 0x39, 0x7f, 0x24, 0xfe, 0x3e, 0x8a, 0x04, 0x33, 0x61, 0x9e, 0xeb, 0x08, 0x5d, 0x9a, 0x03, 0xc9, + 0xf0, 0xb9, 0x93, 0x8c, 0xf6, 0x50, 0x73, 0xdd, 0xd8, 0x82, 0xc6, 0xb0, 0xb6, 0x34, 0x07, 0xf9, + 0x25, 0xa3, 0xe3, 0x22, 0x5b, 0xfd, 0x0a, 0x9d, 0xe9, 0xbe, 0x2e, 0xc5, 0x01, 0x60, 0x11, 0xf2, + 0x9b, 0xb8, 0x34, 0x6a, 0x32, 0xdf, 0x24, 0xd6, 0x7a, 0x08, 0x87, 0x1a, 0xfd, 0x37, 0x69, 0x74, + 0xbe, 0x1e, 0x32, 0x23, 0x9b, 0x22, 0x27, 0x88, 0xce, 0x37, 0x98, 0x85, 0xb1, 0x5c, 0x4c, 0x95, + 0xd7, 0xd0, 0x8e, 0x37, 0xc6, 0x5f, 0x48, 0x0f, 0xe1, 0x02, 0xc8, 0x46, 0xdb, 0xc1, 0x9d, 0xe3, + 0x94, 0xe6, 0x3d, 0x26, 0xf5, 0x15, 0xea, 0x15, 0x15, 0x61, 0x79, 0xdc, 0xbe, 0x42, 0x42, 0x5c, + 0xa4, 0x8f, 0xd9, 0xf7, 0xb1, 0xa3, 0x68, 0xb7, 0xa3, 0xb7, 0x90, 0xc7, 0x7d, 0x6a, 0xa8, 0x91, + 0x9e, 0x2c, 0xeb, 0xf7, 0x64, 0x4c, 0x3b, 0xcd, 0x1d, 0xa0, 0x9d, 0x0e, 0xbb, 0x0c, 0x19, 0xc8, + 0x1c, 0x57, 0xfc, 0xd0, 0x96, 0x21, 0x63, 0xd9, 0x18, 0xc3, 0xb5, 0xa3, 0xfe, 0x41, 0xda, 0xb1, + 0xb6, 0xd6, 0x61, 0x37, 0x69, 0xa8, 0xb0, 0x46, 0x76, 0x68, 0x76, 0x98, 0x4d, 0x9a, 0x68, 0x1e, + 0xc6, 0x80, 0xd6, 0x1c, 0x45, 0xeb, 0xf3, 0x74, 0x18, 0x4d, 0x79, 0x9f, 0xd4, 0xb1, 0x6c, 0x37, + 0xd9, 0x3e, 0xa9, 0xc7, 0x9d, 0x86, 0xff, 0x4b, 0x7a, 0xf0, 0x8a, 0x3f, 0x57, 0x3d, 0xaa, 0xe1, + 0x33, 0xc1, 0xc1, 0xab, 0x41, 0x0c, 0xa4, 0x0f, 0xef, 0xdb, 0x0e, 0x69, 0xf0, 0x1c, 0xb6, 0x39, + 0xd2, 0x36, 0x30, 0xb2, 0xa1, 0x73, 0x98, 0xe6, 0x18, 0xcd, 0x43, 0xfa, 0x78, 0x7d, 0x87, 0x19, + 0x38, 0xdf, 0x32, 0xc6, 0x81, 0xd3, 0x6f, 0x99, 0xb9, 0x21, 0x5b, 0xe6, 0xb0, 0xfb, 0x3f, 0x54, + 0xd6, 0xa3, 0x1b, 0x30, 0x87, 0xd9, 0xff, 0x89, 0x61, 0x22, 0x7d, 0xc4, 0xdf, 0x2a, 0x43, 0xae, + 0x3e, 0xfe, 0xf1, 0x72, 0xd8, 0xb9, 0x08, 0x96, 0x55, 0x7d, 0x64, 0xc3, 0xe5, 0x30, 0x73, 0x91, + 0x48, 0x16, 0xc6, 0x10, 0x78, 0xff, 0x28, 0xcc, 0xe0, 0x25, 0x11, 0x7f, 0x9b, 0xf5, 0x3b, 0x74, + 0xd4, 0x7c, 0x38, 0xc5, 0xb6, 0x7a, 0x0f, 0x4c, 0xfa, 0xfb, 0x77, 0x74, 0xe4, 0x9c, 0x17, 0x6b, + 0x9f, 0x3e, 0x97, 0x5a, 0xf0, 0xff, 0x81, 0x9c, 0x21, 0x46, 0xbe, 0x57, 0x3b, 0xac, 0x33, 0xc4, + 0xa1, 0xee, 0xd7, 0xfe, 0x49, 0x38, 0xa2, 0xfe, 0x97, 0xf4, 0x30, 0xef, 0xdd, 0xc7, 0xcd, 0xf6, + 0xd9, 0xc7, 0xfd, 0x04, 0x8b, 0x65, 0x9d, 0xc7, 0xf2, 0x4e, 0x51, 0x11, 0x8e, 0x70, 0xac, 0x7d, + 0x6f, 0x00, 0xe7, 0x59, 0x0e, 0xce, 0x85, 0x03, 0xf1, 0x32, 0x86, 0x83, 0x8f, 0xd9, 0x70, 0xcc, + 0xfd, 0x64, 0x8a, 0xed, 0xb8, 0xe7, 0x54, 0x45, 0x76, 0xdf, 0xa9, 0x0a, 0xae, 0xa5, 0xe7, 0x0e, + 0xd8, 0xd2, 0x3f, 0xc9, 0x6a, 0x47, 0x83, 0xd7, 0x8e, 0xa7, 0x89, 0x23, 0x32, 0xba, 0x91, 0xf9, + 0x7d, 0x81, 0x7a, 0x9c, 0xe3, 0xd4, 0xa3, 0x74, 0x30, 0x66, 0xd2, 0xd7, 0x8f, 0x3f, 0xf0, 0x27, + 0xb4, 0x87, 0xdc, 0xde, 0x87, 0xdd, 0x2a, 0xe6, 0x84, 0x38, 0xb2, 0x91, 0x7b, 0x98, 0xad, 0xe2, + 0x41, 0x9c, 0x8c, 0x21, 0x16, 0xdb, 0x2c, 0x4c, 0x63, 0x9e, 0xce, 0x19, 0xed, 0x2d, 0xe4, 0xaa, + 0xaf, 0x27, 0x3e, 0x8a, 0x7e, 0xe4, 0xcb, 0x11, 0x85, 0x27, 0x8a, 0x3a, 0xef, 0x9a, 0xd4, 0xa3, + 0x83, 0x30, 0x39, 0xcf, 0x30, 0x38, 0xee, 0x08, 0x8a, 0x03, 0x39, 0x48, 0x1f, 0xb2, 0x8f, 0x11, + 0x77, 0x9b, 0x55, 0xfd, 0x92, 0xb5, 0xeb, 0xaa, 0x0f, 0x8e, 0xa0, 0x83, 0x5e, 0x80, 0x7c, 0x07, + 0x53, 0xa3, 0xc7, 0x32, 0xe2, 0xa7, 0x3b, 0x54, 0x04, 0xa4, 0x7c, 0x8d, 0xfe, 0x99, 0xf4, 0x6c, + 0x46, 0x28, 0x47, 0x42, 0x67, 0xdc, 0x67, 0x33, 0x06, 0x94, 0x3f, 0x96, 0x3b, 0x76, 0x26, 0xbd, + 0xd2, 0x8d, 0x1d, 0xc3, 0x1d, 0x51, 0x04, 0x87, 0x8e, 0x47, 0xcb, 0x8f, 0xe0, 0x80, 0x5f, 0x92, + 0x9e, 0x18, 0x65, 0xa4, 0xe2, 0xfd, 0x3e, 0xee, 0x13, 0xa3, 0xf1, 0xc5, 0xa7, 0x8f, 0xc9, 0xaf, + 0x90, 0x96, 0x75, 0x96, 0x38, 0xdf, 0xa6, 0xe8, 0xd7, 0x3b, 0x74, 0x63, 0x21, 0xac, 0x1d, 0x5e, + 0x63, 0xe9, 0x5b, 0x7e, 0xfa, 0xc0, 0xfc, 0xb7, 0x1f, 0x87, 0xdc, 0x22, 0x3a, 0xbf, 0xbb, 0xa5, + 0xde, 0x01, 0x93, 0x0d, 0x1b, 0xa1, 0x8a, 0xb9, 0x69, 0x79, 0xd2, 0x75, 0xbd, 0x67, 0x1f, 0x12, + 0xfa, 0xe6, 0xe1, 0xb1, 0x8d, 0xf4, 0x76, 0x78, 0xfe, 0xcc, 0x7f, 0x55, 0x5f, 0x21, 0x41, 0xb6, + 0xee, 0xea, 0xae, 0x3a, 0x15, 0x60, 0xab, 0x3e, 0xc8, 0x62, 0x71, 0x07, 0x8f, 0xc5, 0xf5, 0x9c, + 0x2c, 0x30, 0x07, 0xf3, 0xde, 0xff, 0x11, 0x00, 0xa8, 0x30, 0x79, 0xbf, 0x63, 0x99, 0x5e, 0x0e, + 0xff, 0x08, 0xa4, 0xff, 0xae, 0xbe, 0x36, 0x10, 0xf7, 0x5d, 0x9c, 0xb8, 0x1f, 0x2b, 0x56, 0xc4, + 0x18, 0x56, 0xda, 0x24, 0x98, 0xf2, 0x44, 0xbb, 0x82, 0xf4, 0xb6, 0xa3, 0xfe, 0x58, 0xa8, 0xfc, + 0x11, 0x62, 0x56, 0x3f, 0x24, 0x1c, 0x8c, 0x93, 0xd4, 0x2a, 0x20, 0x1e, 0xed, 0xd1, 0xe1, 0x6f, + 0xfe, 0x4b, 0x7c, 0x30, 0x92, 0x9b, 0x21, 0x6b, 0x98, 0x9b, 0x16, 0xf5, 0x2f, 0xbc, 0x32, 0x82, + 0xb6, 0xa7, 0x13, 0x1a, 0xce, 0x28, 0x18, 0xa9, 0x33, 0x9e, 0xad, 0xb1, 0x5c, 0x7a, 0x97, 0xf5, + 0x4a, 0x57, 0xff, 0xf7, 0x81, 0xc2, 0x56, 0x14, 0xc8, 0x76, 0x75, 0x77, 0x9b, 0x16, 0x8d, 0x9f, + 0x3d, 0x1b, 0x79, 0xd7, 0xd4, 0x4d, 0xcb, 0xbc, 0xb4, 0x63, 0x3c, 0x2b, 0xb8, 0x5b, 0x97, 0x4b, + 0xf3, 0x38, 0xdf, 0x42, 0x26, 0xb2, 0x75, 0x17, 0xd5, 0xf7, 0xb6, 0xf0, 0x1c, 0x6b, 0x52, 0x63, + 0x93, 0x12, 0xeb, 0xbf, 0xc7, 0x71, 0xb4, 0xfe, 0x6f, 0x1a, 0x1d, 0x84, 0x23, 0x35, 0x51, 0xfd, + 0xf7, 0xdf, 0x13, 0xe9, 0x7f, 0x9f, 0x22, 0xd2, 0x47, 0xe3, 0xdf, 0x24, 0x98, 0xa9, 0x7b, 0x0a, + 0x57, 0xdf, 0xdd, 0xd9, 0xd1, 0xed, 0x4b, 0xea, 0xb5, 0x21, 0x2a, 0x8c, 0x6a, 0x66, 0x78, 0xbf, + 0x94, 0xdf, 0x17, 0xbe, 0x56, 0x9a, 0x36, 0x6d, 0xa6, 0x84, 0xc4, 0xed, 0xe0, 0xf1, 0x90, 0xf3, + 0xd4, 0xdb, 0xf7, 0xb8, 0x8c, 0x6d, 0x08, 0x24, 0xa7, 0x60, 0x44, 0xab, 0x81, 0xbc, 0x8d, 0x21, + 0x9a, 0x86, 0x04, 0x47, 0xeb, 0xae, 0xde, 0xba, 0xb0, 0x6c, 0xd9, 0xd6, 0xae, 0x6b, 0x98, 0xc8, + 0x51, 0x1f, 0x15, 0x22, 0xe0, 0xeb, 0x7f, 0x26, 0xd4, 0x7f, 0xf5, 0xdf, 0x33, 0xa2, 0xa3, 0x68, + 0xd0, 0xad, 0xb2, 0xe4, 0x23, 0x02, 0x54, 0x89, 0x8d, 0x8b, 0x22, 0x14, 0xd3, 0x17, 0xda, 0x5b, + 0x64, 0x28, 0x94, 0x1f, 0xe8, 0x5a, 0xb6, 0xbb, 0x6a, 0xb5, 0xf4, 0x8e, 0xe3, 0x5a, 0x36, 0x52, + 0x6b, 0xb1, 0x52, 0xf3, 0x7a, 0x98, 0xb6, 0xd5, 0x0a, 0x07, 0x47, 0xfa, 0xc6, 0xaa, 0x9d, 0xcc, + 0xeb, 0xf8, 0xc7, 0x84, 0x77, 0x19, 0x89, 0x54, 0x7a, 0x39, 0x8a, 0xd0, 0xf3, 0x7e, 0x5d, 0x5a, + 0xb2, 0xc3, 0x12, 0x62, 0x3b, 0x8f, 0x42, 0x4c, 0x8d, 0x61, 0xa9, 0x5c, 0x82, 0xd9, 0xfa, 0xee, + 0xf9, 0x80, 0x88, 0xc3, 0x1a, 0x21, 0x6f, 0x10, 0x8e, 0x52, 0x41, 0x15, 0x8f, 0x25, 0x14, 0x21, + 0xdf, 0xeb, 0x60, 0xd6, 0x61, 0xb3, 0x51, 0xbc, 0xf9, 0x44, 0xc1, 0xe8, 0x14, 0x83, 0x4b, 0x4d, + 0x5f, 0x80, 0xef, 0x93, 0x60, 0xb6, 0xd6, 0x45, 0x26, 0x6a, 0x13, 0x2f, 0x48, 0x4e, 0x80, 0xaf, + 0x48, 0x28, 0x40, 0x8e, 0x50, 0x84, 0x00, 0x43, 0x8f, 0xe5, 0x45, 0x5f, 0x78, 0x61, 0x42, 0x22, + 0xc1, 0xc5, 0x95, 0x96, 0xbe, 0xe0, 0xbe, 0x2c, 0xc1, 0xb4, 0xb6, 0x6b, 0xae, 0xdb, 0x96, 0x37, + 0x1a, 0xdb, 0xea, 0x9d, 0x61, 0x07, 0x71, 0x13, 0x1c, 0x6b, 0xef, 0xda, 0x78, 0xfd, 0xa9, 0x62, + 0xd6, 0x51, 0xcb, 0x32, 0xdb, 0x0e, 0xae, 0x47, 0x4e, 0xdb, 0xff, 0xe1, 0xf6, 0xec, 0xf3, 0xbf, + 0x29, 0x67, 0xd4, 0x17, 0x09, 0x87, 0xba, 0x21, 0x95, 0x67, 0x8a, 0x16, 0xef, 0x09, 0x04, 0x03, + 0xda, 0x0c, 0x2a, 0x21, 0x7d, 0xe1, 0x7e, 0x5e, 0x02, 0xa5, 0xd8, 0x6a, 0x59, 0xbb, 0xa6, 0x5b, + 0x47, 0x1d, 0xd4, 0x72, 0x1b, 0xb6, 0xde, 0x42, 0xac, 0xfd, 0x5c, 0x00, 0xb9, 0x6d, 0xd8, 0xb4, + 0x0f, 0xf6, 0x1e, 0xa9, 0x1c, 0x5f, 0x21, 0xbc, 0xe3, 0x48, 0x6a, 0xb9, 0xbf, 0x94, 0x04, 0xe2, + 0x14, 0xdb, 0x57, 0x14, 0x2c, 0x28, 0x7d, 0xa9, 0x7e, 0x52, 0x82, 0x29, 0xbf, 0xc7, 0xde, 0x12, + 0x11, 0xe6, 0xaf, 0x24, 0x9c, 0x8c, 0x04, 0xc4, 0x13, 0xc8, 0xf0, 0x5d, 0x09, 0x66, 0x15, 0x51, + 0xf4, 0x93, 0x89, 0xae, 0x98, 0x5c, 0x74, 0xde, 0x6b, 0xb5, 0xd6, 0x5c, 0xaa, 0xad, 0x2e, 0x96, + 0xb5, 0x82, 0xac, 0x7e, 0x45, 0x82, 0xec, 0xba, 0x61, 0x6e, 0xb1, 0xd1, 0x95, 0x8e, 0x7b, 0x76, + 0x64, 0x1b, 0x3d, 0x40, 0x5b, 0x3a, 0x79, 0x51, 0x6e, 0x85, 0xe3, 0xe6, 0xee, 0xce, 0x79, 0x64, + 0xd7, 0x36, 0xf1, 0x28, 0xeb, 0x34, 0xac, 0x3a, 0x32, 0x89, 0x11, 0x9a, 0xd3, 0xfa, 0x7e, 0xe3, + 0x4d, 0x30, 0x81, 0xc9, 0x83, 0xc7, 0x49, 0x84, 0xc4, 0x03, 0xa6, 0x24, 0x86, 0xa9, 0x44, 0xd3, + 0x86, 0x3e, 0xc4, 0xd3, 0xd7, 0xd4, 0x3f, 0xcc, 0xc1, 0x89, 0xa2, 0x79, 0x09, 0xdb, 0x14, 0xa4, + 0x83, 0x2f, 0x6d, 0xeb, 0xe6, 0x16, 0xc2, 0x03, 0x44, 0x20, 0x71, 0x36, 0x44, 0x7f, 0x86, 0x0f, + 0xd1, 0xaf, 0x68, 0x30, 0x61, 0xd9, 0x6d, 0x64, 0x2f, 0x5c, 0xc2, 0x3c, 0xf5, 0x2e, 0x3b, 0xd3, + 0x36, 0xd9, 0xaf, 0x88, 0x79, 0x4a, 0x7e, 0xbe, 0x46, 0xfe, 0xd7, 0x7c, 0x42, 0x67, 0x6e, 0x82, + 0x09, 0x9a, 0xa6, 0xcc, 0xc0, 0x64, 0x4d, 0x5b, 0x2c, 0x6b, 0xcd, 0xca, 0x62, 0xe1, 0x88, 0x72, + 0x19, 0x1c, 0xad, 0x34, 0xca, 0x5a, 0xb1, 0x51, 0xa9, 0x55, 0x9b, 0x38, 0xbd, 0x90, 0x51, 0x9f, + 0x97, 0x15, 0xf5, 0xec, 0x8d, 0x67, 0xa6, 0x1f, 0xac, 0x1a, 0x4c, 0xb4, 0x48, 0x06, 0x3c, 0x84, + 0x4e, 0x27, 0xaa, 0x1d, 0x25, 0x48, 0x12, 0x34, 0x9f, 0x90, 0x72, 0x1a, 0xe0, 0xa2, 0x6d, 0x99, + 0x5b, 0xe1, 0xa9, 0xc3, 0x49, 0x8d, 0x49, 0x51, 0x1f, 0xcc, 0x40, 0x9e, 0xfc, 0x83, 0xaf, 0x24, + 0xc1, 0x4f, 0xa1, 0xe0, 0xfd, 0x77, 0xcf, 0xe2, 0xc5, 0xf2, 0x0a, 0x27, 0x5a, 0xf4, 0xd5, 0xd3, + 0x45, 0x22, 0x03, 0x62, 0x09, 0xd3, 0xaa, 0xdc, 0x0c, 0x79, 0xf2, 0x2f, 0xf5, 0x3a, 0x88, 0x0e, + 0x2f, 0x4a, 0xb2, 0x09, 0xfa, 0x29, 0x8b, 0xcb, 0x34, 0x7d, 0x6d, 0xfe, 0xb0, 0x04, 0x93, 0x55, + 0xe4, 0x96, 0xb6, 0x51, 0xeb, 0x82, 0xfa, 0x18, 0x7e, 0x01, 0xb4, 0x63, 0x20, 0xd3, 0xbd, 0x6f, + 0xa7, 0x13, 0x2c, 0x80, 0xfa, 0x09, 0xea, 0x0b, 0xd8, 0xce, 0xf7, 0x6e, 0x5e, 0x7f, 0x6e, 0xec, + 0x53, 0x57, 0xbf, 0x84, 0x08, 0x95, 0x39, 0x09, 0x79, 0x1b, 0x39, 0xbb, 0x1d, 0x7f, 0x11, 0x8d, + 0xbe, 0xa9, 0x0f, 0x05, 0xe2, 0x2c, 0x71, 0xe2, 0xbc, 0x59, 0xbc, 0x88, 0x31, 0xc4, 0x2b, 0xcd, + 0xc2, 0x44, 0xc5, 0x34, 0x5c, 0x43, 0xef, 0xa8, 0x2f, 0xca, 0xc2, 0x6c, 0x1d, 0xb9, 0xeb, 0xba, + 0xad, 0xef, 0x20, 0x17, 0xd9, 0x8e, 0xfa, 0x3d, 0xbe, 0x4f, 0xe8, 0x76, 0x74, 0x77, 0xd3, 0xb2, + 0x77, 0x7c, 0xd5, 0xf4, 0xdf, 0x3d, 0xd5, 0xdc, 0x43, 0xb6, 0x13, 0xf2, 0xe5, 0xbf, 0x7a, 0x5f, + 0x2e, 0x5a, 0xf6, 0x05, 0x6f, 0x10, 0xa4, 0xd3, 0x34, 0xfa, 0xea, 0xd1, 0xeb, 0x58, 0x5b, 0xab, + 0x68, 0x0f, 0xf9, 0xe1, 0xd2, 0x82, 0x77, 0x6f, 0x2e, 0xd0, 0xb6, 0xaa, 0x96, 0xeb, 0x75, 0xda, + 0xab, 0xd6, 0x16, 0x89, 0x17, 0x3b, 0xa9, 0xf1, 0x89, 0x61, 0x2e, 0x7d, 0x0f, 0xe1, 0x5c, 0x79, + 0x36, 0x17, 0x4d, 0x54, 0xe6, 0x41, 0x09, 0x7e, 0x6b, 0xa0, 0x0e, 0xda, 0x41, 0xae, 0x7d, 0x09, + 0x5f, 0x0b, 0x31, 0xa9, 0xf5, 0xf9, 0x42, 0x07, 0x68, 0xf1, 0xc9, 0x3a, 0x95, 0xde, 0x3c, 0x27, + 0xb9, 0x03, 0x4d, 0xd6, 0x45, 0x28, 0x8e, 0xe5, 0xda, 0x2b, 0xd9, 0xb3, 0x66, 0x5e, 0x25, 0x43, + 0x16, 0x0f, 0x9e, 0x6f, 0xcd, 0x70, 0x2b, 0x4c, 0x3b, 0xc8, 0x71, 0xf4, 0x2d, 0xe4, 0xaf, 0x30, + 0xd1, 0x57, 0xe5, 0x36, 0xc8, 0x75, 0x30, 0xa6, 0x64, 0x70, 0xb8, 0x96, 0xab, 0x99, 0x67, 0x60, + 0x78, 0xb4, 0x82, 0x91, 0x00, 0xc3, 0xad, 0x91, 0x3f, 0xce, 0xdc, 0x03, 0x39, 0x02, 0xff, 0x14, + 0xe4, 0x16, 0xcb, 0x0b, 0x1b, 0xcb, 0x85, 0x23, 0xde, 0xa3, 0xcf, 0xdf, 0x14, 0xe4, 0x96, 0x8a, + 0x8d, 0xe2, 0x6a, 0x41, 0xf2, 0xea, 0x51, 0xa9, 0x2e, 0xd5, 0x0a, 0xb2, 0x97, 0xb8, 0x5e, 0xac, + 0x56, 0x4a, 0x85, 0xac, 0x32, 0x0d, 0x13, 0xe7, 0x8a, 0x5a, 0xb5, 0x52, 0x5d, 0x2e, 0xe4, 0xd4, + 0xbf, 0x65, 0xf1, 0xbb, 0x9d, 0xc7, 0xef, 0xba, 0x28, 0x9e, 0xfa, 0x41, 0xf6, 0xea, 0x00, 0xb2, + 0x3b, 0x39, 0xc8, 0x7e, 0x5c, 0x84, 0xc8, 0x18, 0xdc, 0x99, 0xf2, 0x30, 0xb1, 0x6e, 0x5b, 0x2d, + 0xe4, 0x38, 0xea, 0xaf, 0x4a, 0x90, 0x2f, 0xe9, 0x66, 0x0b, 0x75, 0xd4, 0x2b, 0x42, 0xa8, 0x88, + 0xab, 0x68, 0x26, 0x38, 0x2d, 0xf6, 0x8f, 0x19, 0xd1, 0xde, 0x8f, 0xd2, 0x9d, 0x27, 0x34, 0x23, + 0xe4, 0x23, 0xd6, 0xcb, 0xc5, 0x92, 0x1a, 0xc3, 0xd5, 0x38, 0x12, 0x4c, 0xd1, 0xd5, 0x80, 0xf3, + 0x88, 0x9d, 0x87, 0x7f, 0x2f, 0x23, 0x3a, 0x39, 0xf4, 0x6b, 0x10, 0x90, 0x89, 0x90, 0x87, 0xd8, + 0x44, 0x70, 0x10, 0xb5, 0x31, 0x6c, 0x1e, 0x4a, 0x30, 0xbd, 0x61, 0x3a, 0xfd, 0x84, 0x22, 0x1e, + 0x47, 0xdf, 0xaf, 0x06, 0x43, 0xe8, 0x40, 0x71, 0xf4, 0x07, 0xd3, 0x4b, 0x5f, 0x30, 0xdf, 0xcb, + 0xc0, 0xf1, 0x65, 0x64, 0x22, 0xdb, 0x68, 0x91, 0x1a, 0xf8, 0x92, 0xb8, 0x93, 0x97, 0xc4, 0x63, + 0x38, 0xce, 0xfb, 0xfd, 0xc1, 0x4b, 0xe0, 0x75, 0x81, 0x04, 0xee, 0xe6, 0x24, 0x70, 0x93, 0x20, + 0x9d, 0x31, 0xdc, 0x87, 0x3e, 0x05, 0x33, 0x55, 0xcb, 0x35, 0x36, 0x8d, 0x16, 0xf1, 0x41, 0x7b, + 0xa5, 0x0c, 0xd9, 0x55, 0xc3, 0x71, 0xd5, 0x62, 0xd8, 0x9d, 0x5c, 0x03, 0xd3, 0x86, 0xd9, 0xea, + 0xec, 0xb6, 0x91, 0x86, 0x74, 0xd2, 0xaf, 0x4c, 0x6a, 0x6c, 0x52, 0xb8, 0xb5, 0xef, 0xb1, 0x25, + 0xfb, 0x5b, 0xfb, 0x9f, 0x11, 0x5e, 0x86, 0x61, 0x59, 0xc0, 0x01, 0x29, 0x23, 0xec, 0xae, 0x22, + 0xcc, 0x9a, 0x4c, 0x56, 0xdf, 0x60, 0xef, 0xbd, 0x50, 0x80, 0x25, 0xa7, 0xf1, 0x7f, 0xa8, 0x1f, + 0x10, 0x6a, 0xac, 0x83, 0x18, 0x4a, 0x86, 0xcc, 0xd2, 0x10, 0x93, 0x64, 0x05, 0xe6, 0x2a, 0xd5, + 0x46, 0x59, 0xab, 0x16, 0x57, 0x69, 0x16, 0x59, 0xfd, 0x37, 0x09, 0x72, 0x1a, 0xea, 0x76, 0x2e, + 0xb1, 0x11, 0xa3, 0xa9, 0xa3, 0x78, 0x26, 0x70, 0x14, 0x57, 0x96, 0x00, 0xf4, 0x96, 0x57, 0x30, + 0xbe, 0x52, 0x4b, 0xea, 0x1b, 0xc7, 0x94, 0xab, 0x60, 0x31, 0xc8, 0xad, 0x31, 0x7f, 0xaa, 0x2f, + 0x16, 0xde, 0x39, 0xe2, 0xa8, 0x61, 0x0e, 0x23, 0xfa, 0x84, 0x0f, 0x0a, 0x6d, 0xf6, 0x0c, 0x24, + 0x77, 0x38, 0xe2, 0xff, 0xaa, 0x04, 0xd9, 0x86, 0xd7, 0x5b, 0x32, 0x1d, 0xe7, 0x1f, 0x0d, 0xa7, + 0xe3, 0x1e, 0x99, 0x08, 0x1d, 0xbf, 0x0b, 0x66, 0x58, 0x8d, 0xa5, 0xae, 0x12, 0xb1, 0x2a, 0xce, + 0xfd, 0x30, 0x8c, 0x86, 0xf7, 0x61, 0xe7, 0x70, 0x44, 0xfc, 0xa9, 0xc7, 0x02, 0xac, 0xa1, 0x9d, + 0xf3, 0xc8, 0x76, 0xb6, 0x8d, 0xae, 0xfa, 0x77, 0x32, 0x4c, 0x2d, 0x23, 0xb7, 0xee, 0xea, 0xee, + 0xae, 0xd3, 0xb3, 0xdd, 0x69, 0x5a, 0x25, 0xbd, 0xb5, 0x8d, 0x68, 0x77, 0xe4, 0xbf, 0xaa, 0xef, + 0x91, 0x45, 0xfd, 0x89, 0xc2, 0x72, 0xe6, 0x83, 0x32, 0x22, 0x30, 0x79, 0x1c, 0x64, 0xdb, 0xba, + 0xab, 0x53, 0x2c, 0xae, 0xe8, 0xc1, 0x22, 0x24, 0xa4, 0xe1, 0x6c, 0xea, 0x6f, 0x49, 0x22, 0x0e, + 0x45, 0x02, 0xe5, 0x27, 0x03, 0xe1, 0x03, 0x99, 0x21, 0x50, 0x38, 0x06, 0xb3, 0xd5, 0x5a, 0xa3, + 0xb9, 0x5a, 0x5b, 0x5e, 0x2e, 0x7b, 0xa9, 0x05, 0x59, 0x39, 0x09, 0xca, 0x7a, 0xf1, 0xbe, 0xb5, + 0x72, 0xb5, 0xd1, 0xac, 0xd6, 0x16, 0xcb, 0xf4, 0xcf, 0xac, 0x72, 0x14, 0xa6, 0x4b, 0xc5, 0xd2, + 0x8a, 0x9f, 0x90, 0x53, 0x4e, 0xc1, 0xf1, 0xb5, 0xf2, 0xda, 0x42, 0x59, 0xab, 0xaf, 0x54, 0xd6, + 0x9b, 0x1e, 0x99, 0xa5, 0xda, 0x46, 0x75, 0xb1, 0x90, 0x57, 0x54, 0x38, 0xc9, 0x7c, 0x39, 0xa7, + 0xd5, 0xaa, 0xcb, 0xcd, 0x7a, 0xa3, 0xd8, 0x28, 0x17, 0x26, 0x94, 0xcb, 0xe0, 0x68, 0xa9, 0x58, + 0xc5, 0xd9, 0x4b, 0xb5, 0x6a, 0xb5, 0x5c, 0x6a, 0x14, 0x26, 0xd5, 0x7f, 0xcf, 0xc2, 0x74, 0xc5, + 0xa9, 0xea, 0x3b, 0xe8, 0xac, 0xde, 0x31, 0xda, 0xea, 0x8b, 0x98, 0x99, 0xc7, 0x75, 0x30, 0x6b, + 0x93, 0x47, 0xd4, 0x6e, 0x18, 0x88, 0xa0, 0x39, 0xab, 0xf1, 0x89, 0xde, 0x9c, 0xdc, 0xc4, 0x04, + 0xfc, 0x39, 0x39, 0x79, 0x53, 0x16, 0x00, 0xc8, 0x53, 0x23, 0xbc, 0xdc, 0xf5, 0x4c, 0x6f, 0x6b, + 0xd2, 0x77, 0x90, 0x83, 0xec, 0x3d, 0xa3, 0x85, 0xfc, 0x9c, 0x1a, 0xf3, 0x97, 0xfa, 0x35, 0x59, + 0x74, 0x7f, 0x91, 0x01, 0x95, 0xa9, 0x4e, 0x44, 0x6f, 0xf8, 0x42, 0x59, 0x64, 0x77, 0x50, 0x88, + 0x64, 0x32, 0x4d, 0x79, 0xa9, 0x34, 0xdc, 0xb2, 0x6d, 0xa3, 0x56, 0x6b, 0xd6, 0x57, 0x6a, 0x5a, + 0xa3, 0x20, 0x2b, 0x33, 0x30, 0xe9, 0xbd, 0xae, 0xd6, 0xaa, 0xcb, 0x85, 0xac, 0x72, 0x02, 0x8e, + 0xad, 0x14, 0xeb, 0xcd, 0x4a, 0xf5, 0x6c, 0x71, 0xb5, 0xb2, 0xd8, 0x2c, 0xad, 0x14, 0xb5, 0x7a, + 0x21, 0xa7, 0x5c, 0x01, 0x27, 0x1a, 0x95, 0xb2, 0xd6, 0x5c, 0x2a, 0x17, 0x1b, 0x1b, 0x5a, 0xb9, + 0xde, 0xac, 0xd6, 0x9a, 0xd5, 0xe2, 0x5a, 0xb9, 0x90, 0xf7, 0x9a, 0x3f, 0xfe, 0x14, 0xaa, 0xcd, + 0xc4, 0x7e, 0x65, 0x9c, 0x8c, 0x50, 0xc6, 0xa9, 0x5e, 0x65, 0x04, 0x56, 0xad, 0xb4, 0x72, 0xbd, + 0xac, 0x9d, 0x2d, 0x17, 0xa6, 0xfb, 0xe9, 0xda, 0x8c, 0x72, 0x1c, 0x0a, 0x1e, 0x0f, 0xcd, 0x4a, + 0xdd, 0xcf, 0xb9, 0x58, 0x98, 0x55, 0x3f, 0x99, 0x87, 0x93, 0x1a, 0xda, 0x32, 0x1c, 0x17, 0xd9, + 0xeb, 0xfa, 0xa5, 0x1d, 0x64, 0xba, 0x7e, 0x27, 0xff, 0x3f, 0x13, 0x2b, 0xe3, 0x1a, 0xcc, 0x76, + 0x09, 0x8d, 0x35, 0xe4, 0x6e, 0x5b, 0x6d, 0x3a, 0x0a, 0x3f, 0x26, 0xb2, 0xe7, 0x98, 0x5f, 0x67, + 0xb3, 0x6b, 0xfc, 0xdf, 0x8c, 0x6e, 0xcb, 0x31, 0xba, 0x9d, 0x1d, 0x46, 0xb7, 0x95, 0xab, 0x60, + 0x6a, 0xd7, 0x41, 0x76, 0x79, 0x47, 0x37, 0x3a, 0xfe, 0xe5, 0x9c, 0x41, 0x82, 0xfa, 0xce, 0xac, + 0xe8, 0x89, 0x15, 0xa6, 0x2e, 0xfd, 0xc5, 0x18, 0xd1, 0xb7, 0x9e, 0x06, 0xa0, 0x95, 0xdd, 0xb0, + 0x3b, 0x54, 0x59, 0x99, 0x14, 0x8f, 0xbf, 0xf3, 0x46, 0xa7, 0x63, 0x98, 0x5b, 0xc1, 0xbe, 0x7f, + 0x98, 0xa0, 0xbe, 0x54, 0x16, 0x39, 0xc1, 0x92, 0x94, 0xb7, 0x64, 0xad, 0xe9, 0xc5, 0xd2, 0x98, + 0xfb, 0xdd, 0xfd, 0x4d, 0x27, 0xaf, 0x14, 0x60, 0x06, 0xa7, 0xd1, 0x16, 0x58, 0x98, 0xf0, 0xfa, + 0x60, 0x9f, 0xdc, 0x5a, 0xb9, 0xb1, 0x52, 0x5b, 0x0c, 0xbe, 0x4d, 0x7a, 0x24, 0x3d, 0x66, 0x8a, + 0xd5, 0xfb, 0x70, 0x6b, 0x9c, 0x52, 0x1e, 0x05, 0x57, 0x30, 0x1d, 0x76, 0x71, 0x55, 0x2b, 0x17, + 0x17, 0xef, 0x6b, 0x96, 0x9f, 0x51, 0xa9, 0x37, 0xea, 0x7c, 0xe3, 0xf2, 0xdb, 0xd1, 0xb4, 0xc7, + 0x6f, 0x79, 0xad, 0x58, 0x59, 0xa5, 0xfd, 0xfb, 0x52, 0x4d, 0x5b, 0x2b, 0x36, 0x0a, 0x33, 0xea, + 0xab, 0x64, 0x28, 0x2c, 0x23, 0x77, 0xdd, 0xb2, 0x5d, 0xbd, 0xb3, 0x6a, 0x98, 0x17, 0x36, 0xec, + 0x0e, 0x37, 0xd9, 0x14, 0x0e, 0xd3, 0xc1, 0x0f, 0x91, 0x1c, 0xc1, 0xe8, 0x1d, 0xf1, 0x2e, 0xce, + 0x16, 0x2a, 0x53, 0x98, 0xa0, 0x3e, 0x5b, 0x12, 0x59, 0xee, 0x16, 0x2f, 0x35, 0x99, 0x9e, 0x3c, + 0x67, 0xdc, 0xe3, 0x73, 0x1f, 0xd4, 0xf2, 0xea, 0xf3, 0xb3, 0x30, 0xb9, 0x64, 0x98, 0x7a, 0xc7, + 0x78, 0x16, 0x17, 0xbf, 0x34, 0xec, 0x63, 0x32, 0x31, 0x7d, 0x8c, 0x34, 0xd4, 0xf8, 0xf9, 0xcb, + 0xb2, 0xe8, 0xf2, 0x02, 0x23, 0x7b, 0x9f, 0xc9, 0x88, 0xc1, 0xf3, 0x23, 0x92, 0xc8, 0xf2, 0xc2, + 0x60, 0x7a, 0xc9, 0x30, 0xfc, 0xf4, 0x0f, 0x87, 0x8d, 0xd5, 0xd3, 0xbe, 0x27, 0xfb, 0xa9, 0xc2, + 0x94, 0xfa, 0x67, 0x32, 0xa8, 0xcb, 0xc8, 0x3d, 0x8b, 0xec, 0x60, 0x2a, 0x80, 0x7b, 0x7d, 0x6a, + 0x6f, 0x33, 0x4d, 0xf6, 0xad, 0x2c, 0x80, 0xe7, 0x78, 0x00, 0x8b, 0x31, 0x8d, 0x27, 0x82, 0x74, + 0x44, 0xe3, 0xad, 0x40, 0xde, 0xc1, 0xdf, 0xa9, 0x9a, 0x3d, 0x3e, 0x7a, 0xb8, 0xc4, 0xc4, 0x58, + 0xea, 0x84, 0xb0, 0x46, 0x09, 0xa8, 0xdf, 0x0f, 0x26, 0x41, 0x3f, 0xc9, 0x69, 0xc7, 0xd2, 0x81, + 0x99, 0x4d, 0xa6, 0x2f, 0x76, 0xba, 0xea, 0xd2, 0xcf, 0xbe, 0x51, 0x3f, 0x92, 0x83, 0xe3, 0xfd, + 0xaa, 0xa3, 0xfe, 0x76, 0x86, 0xdb, 0x61, 0x47, 0x78, 0xc8, 0xcf, 0xd0, 0x0d, 0x44, 0xef, 0x45, + 0x79, 0x22, 0x9c, 0x08, 0x96, 0xe1, 0x1a, 0x56, 0x15, 0x5d, 0x74, 0x3a, 0xc8, 0x75, 0x91, 0x8d, + 0xab, 0x36, 0xa9, 0xf5, 0xff, 0xa8, 0x3c, 0x05, 0x2e, 0x37, 0x4c, 0xc7, 0x68, 0x23, 0xbb, 0x61, + 0x74, 0x9d, 0xa2, 0xd9, 0x6e, 0xec, 0xba, 0x96, 0x6d, 0xe8, 0xf4, 0x2a, 0xc9, 0x49, 0x2d, 0xea, + 0xb3, 0x72, 0x23, 0x14, 0x0c, 0xa7, 0x66, 0x9e, 0xb7, 0x74, 0xbb, 0x6d, 0x98, 0x5b, 0xab, 0x86, + 0xe3, 0x52, 0x0f, 0xe0, 0x7d, 0xe9, 0xea, 0xdf, 0xcb, 0xa2, 0x87, 0xe9, 0x06, 0xc0, 0x1a, 0xd1, + 0xa1, 0xbc, 0x40, 0x16, 0x39, 0x1e, 0x97, 0x8c, 0x76, 0x32, 0x65, 0x79, 0xde, 0xb8, 0x0d, 0x89, + 0xfe, 0x23, 0x38, 0xee, 0x5a, 0x48, 0xba, 0x6f, 0x08, 0x9c, 0x2d, 0x6b, 0x95, 0xa5, 0x4a, 0xd9, + 0x33, 0x2b, 0x4e, 0xc0, 0xb1, 0xf0, 0xdb, 0xe2, 0x7d, 0xcd, 0x7a, 0xb9, 0xda, 0x28, 0x4c, 0x7a, + 0xfd, 0x14, 0x49, 0x5e, 0x2a, 0x56, 0x56, 0xcb, 0x8b, 0xcd, 0x46, 0xcd, 0xfb, 0xb2, 0x38, 0x9c, + 0x69, 0xa1, 0x3e, 0x98, 0x85, 0xa3, 0x58, 0xb6, 0x97, 0xb0, 0x54, 0x3d, 0xa1, 0xf4, 0xf8, 0xda, + 0x06, 0x00, 0x4d, 0x11, 0xf1, 0xaa, 0x9f, 0x13, 0xbe, 0x29, 0x93, 0x81, 0xb0, 0xa7, 0x8c, 0x08, + 0xcd, 0xf8, 0x9e, 0x24, 0x12, 0xa1, 0x42, 0x98, 0x6c, 0x32, 0xa5, 0xf8, 0x97, 0x71, 0x8f, 0x38, + 0xd1, 0xe0, 0x63, 0x2b, 0xb3, 0x84, 0x7f, 0x7e, 0xc6, 0x7a, 0x45, 0xc3, 0xea, 0x30, 0x07, 0x80, + 0x53, 0xb0, 0x06, 0x11, 0x3d, 0xe8, 0x3b, 0x5e, 0x45, 0xe9, 0x41, 0xb1, 0xd4, 0xa8, 0x9c, 0x2d, + 0x47, 0xe9, 0xc1, 0x67, 0x65, 0x98, 0x5c, 0x46, 0xae, 0x37, 0xa7, 0x72, 0xd4, 0xa7, 0x0a, 0xac, + 0xff, 0x78, 0x66, 0x4c, 0xc7, 0x6a, 0xe9, 0x9d, 0x60, 0x19, 0x80, 0xbc, 0xa9, 0xcf, 0x1d, 0xc6, + 0x04, 0xf1, 0x8b, 0x8e, 0x18, 0xaf, 0x9e, 0x0c, 0x39, 0xd7, 0xfb, 0x4c, 0x97, 0xa1, 0x7f, 0x2c, + 0x72, 0xb8, 0xf2, 0x88, 0x2c, 0xea, 0xae, 0xae, 0x91, 0xfc, 0xcc, 0xe8, 0x24, 0x68, 0xbb, 0x44, + 0x30, 0xf2, 0xc3, 0x68, 0x7f, 0xfe, 0xad, 0x0c, 0x27, 0x48, 0xfb, 0x28, 0x76, 0xbb, 0x75, 0xd7, + 0xb2, 0x91, 0x86, 0x5a, 0xc8, 0xe8, 0xba, 0x3d, 0xeb, 0x7b, 0x36, 0x49, 0xf5, 0x37, 0x9b, 0xe9, + 0xab, 0xfa, 0x26, 0x59, 0x34, 0x06, 0xf3, 0xbe, 0xf6, 0xd8, 0x53, 0x5e, 0x44, 0x63, 0xff, 0x84, + 0x24, 0x12, 0x55, 0x39, 0x21, 0xf1, 0x64, 0x40, 0x7d, 0xf4, 0x10, 0x80, 0xf2, 0x57, 0x6e, 0xb4, + 0x72, 0xa9, 0x5c, 0x59, 0xf7, 0x06, 0x81, 0xab, 0xe1, 0xca, 0xf5, 0x0d, 0xad, 0xb4, 0x52, 0xac, + 0x97, 0x9b, 0x5a, 0x79, 0xb9, 0x52, 0x6f, 0x50, 0xa7, 0x2c, 0xf2, 0xd7, 0x84, 0x72, 0x15, 0x9c, + 0xaa, 0x6f, 0x2c, 0xd4, 0x4b, 0x5a, 0x65, 0x1d, 0xa7, 0x6b, 0xe5, 0x6a, 0xf9, 0x1c, 0xfd, 0x3a, + 0xa9, 0x7e, 0xa8, 0x00, 0xd3, 0xde, 0x04, 0xa0, 0x4e, 0xe6, 0x05, 0xea, 0xb7, 0xb3, 0x30, 0xad, + 0x21, 0xc7, 0xea, 0xec, 0xe1, 0x39, 0xc2, 0xb8, 0xa6, 0x1e, 0xdf, 0x95, 0x45, 0xcf, 0x6f, 0x33, + 0xcc, 0xce, 0x33, 0x8c, 0x46, 0x4f, 0x34, 0xf5, 0x3d, 0xdd, 0xe8, 0xe8, 0xe7, 0x69, 0x57, 0x33, + 0xa9, 0x85, 0x09, 0xca, 0x3c, 0x28, 0xd6, 0x45, 0x13, 0xd9, 0xf5, 0xd6, 0xc5, 0xb2, 0xbb, 0x5d, + 0x6c, 0xb7, 0x6d, 0xe4, 0x38, 0x74, 0xf5, 0xa2, 0xcf, 0x17, 0xe5, 0x06, 0x38, 0x8a, 0x53, 0x99, + 0xcc, 0xc4, 0x41, 0xa6, 0x37, 0x39, 0xc8, 0x59, 0x34, 0x2f, 0xf9, 0x39, 0x73, 0x4c, 0xce, 0x30, + 0x99, 0x3d, 0x2e, 0x91, 0xe7, 0x4f, 0xe9, 0x5c, 0x03, 0xd3, 0xa6, 0xbe, 0x83, 0xca, 0x0f, 0x74, + 0x0d, 0x1b, 0x39, 0xd8, 0x31, 0x46, 0xd6, 0xd8, 0x24, 0xf5, 0x23, 0x42, 0xe7, 0xcd, 0xc5, 0x24, + 0x96, 0x4c, 0xf7, 0x97, 0x87, 0x50, 0xfd, 0x3e, 0xfd, 0x8c, 0xac, 0x7e, 0x48, 0x86, 0x19, 0xca, + 0x54, 0xd1, 0xbc, 0x54, 0x69, 0xab, 0x57, 0x73, 0xc6, 0xaf, 0xee, 0xa5, 0xf9, 0xc6, 0x2f, 0x7e, + 0x51, 0x7f, 0x5e, 0x16, 0x75, 0x77, 0xee, 0x53, 0x71, 0x5c, 0x46, 0xb4, 0xe3, 0xe8, 0xa6, 0xb5, + 0x4b, 0x1d, 0x55, 0x27, 0x35, 0xf2, 0x92, 0xe6, 0xa2, 0x9e, 0xfa, 0x7b, 0x42, 0xce, 0xd4, 0x82, + 0xd5, 0x38, 0x24, 0x00, 0x3f, 0x25, 0xc3, 0x1c, 0xe5, 0xaa, 0x4e, 0xcf, 0xf9, 0x08, 0x1d, 0x78, + 0xfb, 0x45, 0x61, 0x43, 0xb0, 0x4f, 0xfd, 0x69, 0x49, 0x8f, 0x18, 0x20, 0x3f, 0x26, 0x14, 0x1c, + 0x4d, 0xb8, 0x22, 0x87, 0x04, 0xe5, 0xbb, 0xb2, 0x30, 0xbd, 0xe1, 0x20, 0x9b, 0xfa, 0xed, 0xab, + 0x0f, 0x65, 0x41, 0x5e, 0x46, 0xdc, 0x46, 0xea, 0x4b, 0x84, 0x3d, 0x7c, 0xd9, 0xca, 0x32, 0x44, + 0x3d, 0x1b, 0x29, 0x02, 0xb6, 0xeb, 0x61, 0x8e, 0x88, 0xb4, 0xe8, 0xba, 0x9e, 0x91, 0xe8, 0x7b, + 0xd3, 0xf6, 0xa4, 0x8e, 0x62, 0xab, 0x08, 0x97, 0xe5, 0x65, 0x29, 0x79, 0x3c, 0xad, 0xa2, 0x4d, + 0x32, 0x9f, 0xcd, 0x6a, 0x3d, 0xa9, 0xca, 0x2d, 0x70, 0x99, 0xd5, 0x45, 0xe4, 0xfc, 0x0a, 0x93, + 0x39, 0x87, 0x33, 0xf7, 0xfb, 0xa4, 0x7e, 0x5b, 0xc8, 0x57, 0x57, 0x5c, 0x3a, 0xc9, 0x74, 0xa1, + 0x3b, 0x1a, 0x93, 0xe4, 0x38, 0x14, 0xbc, 0x1c, 0x78, 0xff, 0x45, 0x2b, 0xd7, 0x6b, 0xab, 0x67, + 0xcb, 0xfd, 0x97, 0x31, 0x72, 0xea, 0xf3, 0x64, 0x98, 0x5a, 0xb0, 0x2d, 0xbd, 0xdd, 0xd2, 0x1d, + 0x57, 0xfd, 0xbe, 0x04, 0x33, 0xeb, 0xfa, 0xa5, 0x8e, 0xa5, 0xb7, 0xb1, 0x7f, 0x7f, 0x4f, 0x5f, + 0xd0, 0x25, 0x9f, 0xfc, 0xbe, 0x80, 0xbe, 0xf2, 0x07, 0x03, 0x83, 0xa3, 0x7b, 0x19, 0x91, 0x0b, + 0x35, 0x83, 0x6d, 0x3e, 0xa9, 0x5f, 0xb0, 0x52, 0x9f, 0xaf, 0x79, 0x96, 0xa7, 0x08, 0x8b, 0xf2, + 0x43, 0x62, 0xe1, 0x47, 0x45, 0x48, 0x1e, 0xce, 0xae, 0xfc, 0xf3, 0x27, 0x21, 0xbf, 0x88, 0xb0, + 0x15, 0xf7, 0xdf, 0x25, 0x98, 0xa8, 0x23, 0x17, 0x5b, 0x70, 0xb7, 0x71, 0x9e, 0xc2, 0x6d, 0x9c, + 0x21, 0x74, 0x62, 0xf7, 0xdf, 0xbd, 0xc9, 0x3a, 0x73, 0xde, 0x1a, 0x3f, 0x27, 0xf0, 0x48, 0x24, + 0xe5, 0xce, 0xd3, 0x32, 0x0f, 0xe4, 0x91, 0x18, 0x4b, 0x2a, 0x7d, 0x5f, 0xab, 0xf7, 0x48, 0xd4, + 0xb5, 0x8a, 0xe9, 0xf5, 0x5e, 0xcf, 0xea, 0x67, 0xac, 0xb7, 0x19, 0x65, 0x3e, 0xc6, 0x39, 0xea, + 0x09, 0x30, 0x41, 0x64, 0xee, 0xcf, 0x47, 0x7b, 0xfd, 0x14, 0x08, 0x09, 0x7c, 0xf6, 0xda, 0xcf, + 0x29, 0xe8, 0xa2, 0x16, 0x5d, 0xf8, 0x58, 0x62, 0x10, 0xcc, 0x54, 0x91, 0x7b, 0xd1, 0xb2, 0x2f, + 0xd4, 0x5d, 0xdd, 0x45, 0xea, 0xbf, 0x48, 0x20, 0xd7, 0x91, 0xcb, 0x46, 0x3f, 0xa9, 0xc2, 0x31, + 0x52, 0x21, 0x9a, 0x11, 0xf7, 0xdf, 0xa4, 0x22, 0xd7, 0xf4, 0x15, 0x02, 0x93, 0x4f, 0xdb, 0xff, + 0xab, 0xfa, 0xab, 0x7d, 0x83, 0x3e, 0x49, 0x7d, 0x26, 0x0d, 0x54, 0x32, 0x2c, 0x83, 0x9e, 0x82, + 0x45, 0xe8, 0xe9, 0x87, 0x85, 0xcc, 0x6a, 0x31, 0x9a, 0x87, 0xd3, 0x15, 0x7c, 0xec, 0x0a, 0xc8, + 0x96, 0xb6, 0x75, 0x57, 0x7d, 0xb7, 0x0c, 0x50, 0x6c, 0xb7, 0xd7, 0x88, 0x0f, 0x38, 0xeb, 0x90, + 0x76, 0x06, 0x66, 0x5a, 0xdb, 0x7a, 0x78, 0xb7, 0x09, 0xe9, 0x0f, 0xb8, 0x34, 0xe5, 0x89, 0xa1, + 0x33, 0x39, 0x91, 0xaa, 0xda, 0x03, 0x93, 0x57, 0x06, 0xa5, 0x1d, 0x38, 0x9a, 0xf3, 0xa1, 0x30, + 0x63, 0x8f, 0xd0, 0x79, 0xbf, 0xcf, 0x87, 0xec, 0x45, 0xcf, 0xe1, 0x28, 0xe9, 0xe0, 0x80, 0x4d, + 0x98, 0x90, 0xf0, 0xa4, 0xb7, 0x58, 0x40, 0x8f, 0x78, 0xbe, 0xc6, 0x12, 0xba, 0x56, 0x29, 0xb7, + 0x0d, 0x5f, 0xb4, 0x34, 0x60, 0x96, 0xfa, 0xe2, 0x4c, 0x32, 0xf8, 0xe2, 0x05, 0x77, 0x37, 0xcc, + 0xa2, 0xb6, 0xe1, 0x22, 0xbf, 0x96, 0x54, 0x80, 0x71, 0x10, 0xf3, 0x3f, 0xa8, 0xcf, 0x11, 0x0e, + 0xba, 0x86, 0x05, 0xba, 0xbf, 0x46, 0x11, 0xed, 0x4f, 0x2c, 0x8c, 0x9a, 0x18, 0xcd, 0xf4, 0xc1, + 0x7a, 0xae, 0x0c, 0x27, 0x1a, 0xd6, 0xd6, 0x56, 0x07, 0xf9, 0x62, 0x42, 0xc4, 0x3b, 0x53, 0xd5, + 0x47, 0x09, 0x17, 0xde, 0x09, 0xb2, 0xee, 0x37, 0x82, 0xa3, 0x64, 0xde, 0x0b, 0x7f, 0x62, 0x2a, + 0x76, 0x16, 0x85, 0xc5, 0xd5, 0x97, 0xcf, 0x08, 0x14, 0xc4, 0x02, 0x3e, 0x0b, 0x93, 0x4d, 0x1f, + 0x88, 0x2f, 0x49, 0x30, 0x4b, 0x6e, 0xae, 0xf4, 0x15, 0xf4, 0xde, 0x11, 0x02, 0xa0, 0x7e, 0x3f, + 0x23, 0xea, 0x67, 0x8b, 0x65, 0xc2, 0x71, 0x12, 0x21, 0x62, 0xb1, 0xa0, 0x2a, 0x03, 0xc9, 0xa5, + 0x2f, 0xda, 0x3f, 0x96, 0x61, 0x7a, 0x19, 0xf9, 0x2d, 0xcd, 0x49, 0xdc, 0x13, 0x9d, 0x81, 0x19, + 0x7c, 0x7d, 0x5b, 0x8d, 0x1e, 0x93, 0x24, 0xab, 0x66, 0x5c, 0x9a, 0x72, 0x1d, 0xcc, 0x9e, 0x47, + 0x9b, 0x96, 0x8d, 0x6a, 0xdc, 0x59, 0x4a, 0x3e, 0x31, 0x22, 0x3c, 0x1d, 0x17, 0x07, 0x6d, 0x81, + 0xc7, 0xe6, 0xa6, 0xfd, 0xc2, 0x64, 0xaa, 0x12, 0x31, 0xe6, 0x3c, 0x09, 0x26, 0x29, 0xf2, 0xbe, + 0x99, 0x16, 0xd7, 0x2f, 0x06, 0x79, 0xd5, 0x5f, 0x0f, 0x10, 0x2d, 0x73, 0x88, 0x3e, 0x3e, 0x09, + 0x13, 0x63, 0xb9, 0xdf, 0xbd, 0xc0, 0x94, 0xbf, 0x70, 0xa9, 0xd2, 0x76, 0xd4, 0xb5, 0x64, 0x98, + 0x9e, 0x06, 0x08, 0x1a, 0x87, 0x1f, 0xd6, 0x82, 0x49, 0xe1, 0x23, 0xd7, 0xc7, 0x1e, 0xd4, 0xeb, + 0x15, 0x07, 0x66, 0x67, 0xc4, 0xc0, 0x88, 0x1d, 0xf0, 0x13, 0xe1, 0x24, 0x7d, 0x74, 0x3e, 0x23, + 0xc3, 0x89, 0xe0, 0xfc, 0xd1, 0xaa, 0xee, 0x84, 0xed, 0xae, 0x94, 0x0c, 0x22, 0xee, 0xc0, 0x47, + 0xd0, 0x58, 0xbe, 0x93, 0x6c, 0xcc, 0xe8, 0xcb, 0xc9, 0x68, 0xd1, 0x51, 0x6e, 0x82, 0x63, 0xe6, + 0xee, 0x4e, 0x20, 0x75, 0xdc, 0xe2, 0x69, 0x0b, 0xdf, 0xff, 0x21, 0xc9, 0xc8, 0x24, 0xc2, 0xfc, + 0x58, 0xe6, 0x94, 0xdc, 0x91, 0xae, 0xc7, 0x25, 0x82, 0x51, 0xfd, 0xe7, 0x4c, 0xa2, 0xde, 0x6d, + 0xf0, 0x99, 0xaf, 0x04, 0xbd, 0xd4, 0x21, 0x1e, 0xf8, 0x3a, 0x33, 0x01, 0xb9, 0xf2, 0x4e, 0xd7, + 0xbd, 0x74, 0xe6, 0xd1, 0x30, 0x5b, 0x77, 0x6d, 0xa4, 0xef, 0x30, 0x3b, 0x03, 0xae, 0x75, 0x01, + 0x99, 0xfe, 0xce, 0x00, 0x7e, 0xb9, 0xfd, 0x36, 0x98, 0x30, 0xad, 0xa6, 0xbe, 0xeb, 0x6e, 0x2b, + 0x57, 0xef, 0x3b, 0x52, 0x4f, 0xc1, 0xaf, 0xd1, 0x18, 0x46, 0x5f, 0xbb, 0x03, 0xaf, 0x0d, 0xe7, + 0x4d, 0xab, 0xb8, 0xeb, 0x6e, 0x2f, 0x5c, 0xf5, 0xa9, 0xbf, 0x39, 0x9d, 0xf9, 0xec, 0xdf, 0x9c, + 0xce, 0x7c, 0xf5, 0x6f, 0x4e, 0x67, 0x7e, 0xf1, 0xeb, 0xa7, 0x8f, 0x7c, 0xf6, 0xeb, 0xa7, 0x8f, + 0x7c, 0xe9, 0xeb, 0xa7, 0x8f, 0xfc, 0xa4, 0xd4, 0x3d, 0x7f, 0x3e, 0x8f, 0xa9, 0x3c, 0xe1, 0xff, + 0x0f, 0x00, 0x00, 0xff, 0xff, 0xe2, 0xbc, 0xff, 0xf5, 0x44, 0x00, 0x02, 0x00, } func (m *Rpc) Marshal() (dAtA []byte, err error) { @@ -75942,6 +76168,136 @@ func (m *RpcAccountRevertDeletionResponseError) MarshalToSizedBuffer(dAtA []byte return len(dAtA) - i, nil } +func (m *RpcAccountMigrate) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcAccountMigrate) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcAccountMigrate) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *RpcAccountMigrateRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcAccountMigrateRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcAccountMigrateRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.RootPath) > 0 { + i -= len(m.RootPath) + copy(dAtA[i:], m.RootPath) + i = encodeVarintCommands(dAtA, i, uint64(len(m.RootPath))) + i-- + dAtA[i] = 0x12 + } + if len(m.Id) > 0 { + i -= len(m.Id) + copy(dAtA[i:], m.Id) + i = encodeVarintCommands(dAtA, i, uint64(len(m.Id))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *RpcAccountMigrateResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcAccountMigrateResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcAccountMigrateResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Error != nil { + { + size, err := m.Error.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCommands(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *RpcAccountMigrateResponseError) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcAccountMigrateResponseError) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcAccountMigrateResponseError) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Description) > 0 { + i -= len(m.Description) + copy(dAtA[i:], m.Description) + i = encodeVarintCommands(dAtA, i, uint64(len(m.Description))) + i-- + dAtA[i] = 0x12 + } + if m.Code != 0 { + i = encodeVarintCommands(dAtA, i, uint64(m.Code)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + func (m *RpcAccountSelect) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -118030,6 +118386,61 @@ func (m *RpcAccountRevertDeletionResponseError) Size() (n int) { return n } +func (m *RpcAccountMigrate) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *RpcAccountMigrateRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Id) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + l = len(m.RootPath) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + +func (m *RpcAccountMigrateResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Error != nil { + l = m.Error.Size() + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + +func (m *RpcAccountMigrateResponseError) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Code != 0 { + n += 1 + sovCommands(uint64(m.Code)) + } + l = len(m.Description) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + func (m *RpcAccountSelect) Size() (n int) { if m == nil { return 0 @@ -145652,6 +146063,357 @@ func (m *RpcAccountRevertDeletionResponseError) Unmarshal(dAtA []byte) error { } return nil } +func (m *RpcAccountMigrate) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Migrate: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Migrate: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcAccountMigrateRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Request: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Request: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Id = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RootPath", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RootPath = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcAccountMigrateResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Response: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Response: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Error == nil { + m.Error = &RpcAccountMigrateResponseError{} + } + if err := m.Error.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcAccountMigrateResponseError) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Error: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Error: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Code", wireType) + } + m.Code = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Code |= RpcAccountMigrateResponseErrorCode(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *RpcAccountSelect) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/pb/protos/commands.proto b/pb/protos/commands.proto index bb7ea7b88..0c0b9d4bc 100644 --- a/pb/protos/commands.proto +++ b/pb/protos/commands.proto @@ -811,6 +811,31 @@ message Rpc { } } + message Migrate { + message Request { + option (no_auth) = true; + string id = 1; // Id of a selected account + string rootPath = 2; + } + + message Response { + Error error = 1; + message Error { + Code code = 1; + string description = 2; + + enum Code { + NULL = 0; // No error + UNKNOWN_ERROR = 1; // Any other errors + BAD_INPUT = 2; // Id or root path is wrong + + ACCOUNT_NOT_FOUND = 101; + // TODO: [storage] Add specific error codes for migration problems + } + } + } + } + message Select { /** * Front end to middleware request-to-launch-a specific account using account id and a root path @@ -852,6 +877,7 @@ message Rpc { FAILED_TO_FETCH_REMOTE_NODE_HAS_INCOMPATIBLE_PROTO_VERSION = 110; ACCOUNT_IS_DELETED = 111; ACCOUNT_LOAD_IS_CANCELED = 112; + ACCOUNT_STORE_NOT_MIGRATED = 113; CONFIG_FILE_NOT_FOUND = 200; CONFIG_FILE_INVALID = 201; diff --git a/pb/protos/events.proto b/pb/protos/events.proto index d4397dc89..8e5a149aa 100644 --- a/pb/protos/events.proto +++ b/pb/protos/events.proto @@ -726,7 +726,7 @@ message Event { FaviconHash faviconHash = 6; Type type = 7; TargetObjectId targetObjectId = 8; - + message Url { string value = 1; diff --git a/pb/protos/service/service.proto b/pb/protos/service/service.proto index 56a5f4706..050ace0c3 100644 --- a/pb/protos/service/service.proto +++ b/pb/protos/service/service.proto @@ -36,6 +36,7 @@ service ClientCommands { // Account // *** rpc AccountRecover (anytype.Rpc.Account.Recover.Request) returns (anytype.Rpc.Account.Recover.Response); + rpc AccountMigrate (anytype.Rpc.Account.Migrate.Request) returns (anytype.Rpc.Account.Migrate.Response); rpc AccountCreate (anytype.Rpc.Account.Create.Request) returns (anytype.Rpc.Account.Create.Response); rpc AccountDelete (anytype.Rpc.Account.Delete.Request) returns (anytype.Rpc.Account.Delete.Response); rpc AccountRevertDeletion (anytype.Rpc.Account.RevertDeletion.Request) returns (anytype.Rpc.Account.RevertDeletion.Response); diff --git a/pb/service/service.pb.go b/pb/service/service.pb.go index 6b5274431..2dc406938 100644 --- a/pb/service/service.pb.go +++ b/pb/service/service.pb.go @@ -26,152 +26,153 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package func init() { proto.RegisterFile("pb/protos/service/service.proto", fileDescriptor_93a29dc403579097) } var fileDescriptor_93a29dc403579097 = []byte{ - // 5279 bytes of a gzipped FileDescriptorProto + // 5295 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x9d, 0x5b, 0x6f, 0x24, 0x49, 0x56, 0xf8, 0xc7, 0x2f, 0xff, 0xf9, 0x93, 0xcb, 0x0e, 0x50, 0x03, 0xc3, 0xec, 0xb0, 0xdb, 0xb7, 0xe9, 0xb6, 0xdd, 0x6d, 0xbb, 0xdc, 0xd3, 0x3d, 0x3d, 0xb3, 0xda, 0x45, 0x42, 0x6e, 0xbb, 0xed, 0x31, 0x6b, 0xbb, 0x8d, 0xab, 0xdc, 0x2d, 0x8d, 0x84, 0x44, 0x38, 0x2b, 0x5c, 0x4e, 0x9c, 0x95, 0x91, 0x9b, 0x19, 0x55, 0xee, 0x5a, 0x04, 0x02, 0x81, 0x40, 0x20, 0x10, 0x2b, 0x6e, 0xaf, 0x48, - 0x7c, 0x1a, 0x1e, 0xf7, 0x91, 0x47, 0x34, 0x23, 0x1e, 0xf8, 0x16, 0x28, 0x23, 0x23, 0xe3, 0x72, - 0xf2, 0x9c, 0xc8, 0xf4, 0x3e, 0x75, 0xab, 0xce, 0xef, 0x9c, 0x13, 0xd7, 0x13, 0x27, 0x22, 0x23, - 0xd3, 0xd1, 0xdd, 0xfc, 0x62, 0x3b, 0x2f, 0x84, 0x14, 0xe5, 0x76, 0xc9, 0x8b, 0x45, 0x12, 0xf3, - 0xe6, 0xdf, 0xa1, 0xfa, 0x79, 0xf0, 0x3e, 0xcb, 0x96, 0x72, 0x99, 0xf3, 0x4f, 0x3e, 0xb6, 0x64, - 0x2c, 0x66, 0x33, 0x96, 0x4d, 0xca, 0x1a, 0xf9, 0xe4, 0x23, 0x2b, 0xe1, 0x0b, 0x9e, 0x49, 0xfd, - 0xfb, 0xb3, 0xff, 0xf9, 0xdf, 0x95, 0xe8, 0x83, 0xdd, 0x34, 0xe1, 0x99, 0xdc, 0xd5, 0x1a, 0x83, - 0xaf, 0xa3, 0xef, 0xee, 0xe4, 0xf9, 0x01, 0x97, 0x6f, 0x78, 0x51, 0x26, 0x22, 0x1b, 0x7c, 0x3a, - 0xd4, 0x0e, 0x86, 0x67, 0x79, 0x3c, 0xdc, 0xc9, 0xf3, 0xa1, 0x15, 0x0e, 0xcf, 0xf8, 0x4f, 0xe7, - 0xbc, 0x94, 0x9f, 0x3c, 0x0c, 0x43, 0x65, 0x2e, 0xb2, 0x92, 0x0f, 0x2e, 0xa3, 0xdf, 0xd8, 0xc9, - 0xf3, 0x11, 0x97, 0x7b, 0xbc, 0xaa, 0xc0, 0x48, 0x32, 0xc9, 0x07, 0x6b, 0x2d, 0x55, 0x1f, 0x30, - 0x3e, 0xd6, 0xbb, 0x41, 0xed, 0x67, 0x1c, 0x7d, 0xa7, 0xf2, 0x73, 0x35, 0x97, 0x13, 0x71, 0x93, - 0x0d, 0xee, 0xb7, 0x15, 0xb5, 0xc8, 0xd8, 0x7e, 0x10, 0x42, 0xb4, 0xd5, 0xb7, 0xd1, 0xaf, 0xbe, - 0x65, 0x69, 0xca, 0xe5, 0x6e, 0xc1, 0xab, 0x82, 0xfb, 0x3a, 0xb5, 0x68, 0x58, 0xcb, 0x8c, 0xdd, - 0x4f, 0x83, 0x8c, 0x36, 0xfc, 0x75, 0xf4, 0xdd, 0x5a, 0x72, 0xc6, 0x63, 0xb1, 0xe0, 0xc5, 0x00, - 0xd5, 0xd2, 0x42, 0xa2, 0xc9, 0x5b, 0x10, 0xb4, 0xbd, 0x2b, 0xb2, 0x05, 0x2f, 0x24, 0x6e, 0x5b, - 0x0b, 0xc3, 0xb6, 0x2d, 0xa4, 0x6d, 0xff, 0xed, 0x4a, 0xf4, 0xfd, 0x9d, 0x38, 0x16, 0xf3, 0x4c, - 0x1e, 0x89, 0x98, 0xa5, 0x47, 0x49, 0x76, 0x7d, 0xc2, 0x6f, 0x76, 0xaf, 0x2a, 0x3e, 0x9b, 0xf2, - 0xc1, 0x73, 0xbf, 0x55, 0x6b, 0x74, 0x68, 0xd8, 0xa1, 0x0b, 0x1b, 0xdf, 0x9f, 0xdf, 0x4e, 0x49, - 0x97, 0xe5, 0x1f, 0x57, 0xa2, 0x3b, 0xb0, 0x2c, 0x23, 0x91, 0x2e, 0xb8, 0x2d, 0xcd, 0x8b, 0x0e, - 0xc3, 0x3e, 0x6e, 0xca, 0xf3, 0xc5, 0x6d, 0xd5, 0x74, 0x89, 0xd2, 0xe8, 0x43, 0x77, 0xb8, 0x8c, - 0x78, 0xa9, 0xa6, 0xd3, 0x63, 0x7a, 0x44, 0x68, 0xc4, 0x78, 0x7e, 0xd2, 0x07, 0xd5, 0xde, 0x92, - 0x68, 0xa0, 0xbd, 0xa5, 0xa2, 0x34, 0xce, 0xd6, 0x51, 0x0b, 0x0e, 0x61, 0x7c, 0x3d, 0xee, 0x41, - 0x6a, 0x57, 0x7f, 0x14, 0xfd, 0xda, 0x5b, 0x51, 0x5c, 0x97, 0x39, 0x8b, 0xb9, 0x9e, 0x0a, 0x8f, - 0x7c, 0xed, 0x46, 0x0a, 0x67, 0xc3, 0x6a, 0x17, 0xe6, 0x0c, 0xda, 0x46, 0xf8, 0x3a, 0xe7, 0x30, - 0x06, 0x59, 0xc5, 0x4a, 0x48, 0x0d, 0x5a, 0x08, 0x69, 0xdb, 0xd7, 0xd1, 0xc0, 0xda, 0xbe, 0xf8, - 0x63, 0x1e, 0xcb, 0x9d, 0xc9, 0x04, 0xf6, 0x8a, 0xd5, 0x55, 0xc4, 0x70, 0x67, 0x32, 0xa1, 0x7a, - 0x05, 0x47, 0xb5, 0xb3, 0x9b, 0xe8, 0x23, 0xe0, 0xec, 0x28, 0x29, 0x95, 0xc3, 0xad, 0xb0, 0x15, - 0x8d, 0x19, 0xa7, 0xc3, 0xbe, 0xb8, 0x76, 0xfc, 0xe7, 0x2b, 0xd1, 0xf7, 0x10, 0xcf, 0x67, 0x7c, - 0x26, 0x16, 0x7c, 0xf0, 0xb4, 0xdb, 0x5a, 0x4d, 0x1a, 0xff, 0x9f, 0xdd, 0x42, 0x03, 0x19, 0x26, - 0x23, 0x9e, 0xf2, 0x58, 0x92, 0xc3, 0xa4, 0x16, 0x77, 0x0e, 0x13, 0x83, 0x39, 0x33, 0xac, 0x11, - 0x1e, 0x70, 0xb9, 0x3b, 0x2f, 0x0a, 0x9e, 0x49, 0xb2, 0x2f, 0x2d, 0xd2, 0xd9, 0x97, 0x1e, 0x8a, - 0xd4, 0xe7, 0x80, 0xcb, 0x9d, 0x34, 0x25, 0xeb, 0x53, 0x8b, 0x3b, 0xeb, 0x63, 0x30, 0xed, 0x21, - 0x8e, 0x7e, 0xdd, 0x69, 0x31, 0x79, 0x98, 0x5d, 0x8a, 0x01, 0xdd, 0x16, 0x4a, 0x6e, 0x7c, 0xac, - 0x75, 0x72, 0x48, 0x35, 0x5e, 0xbd, 0xcb, 0x45, 0x41, 0x77, 0x4b, 0x2d, 0xee, 0xac, 0x86, 0xc1, - 0xb4, 0x87, 0x3f, 0x8c, 0x3e, 0xd0, 0x51, 0xb2, 0x59, 0xcf, 0x1e, 0xa2, 0x21, 0x14, 0x2e, 0x68, - 0x8f, 0x3a, 0x28, 0x1b, 0x1c, 0xb4, 0x4c, 0x07, 0x9f, 0x4f, 0x51, 0x3d, 0x10, 0x7a, 0x1e, 0x86, - 0xa1, 0x96, 0xed, 0x3d, 0x9e, 0x72, 0xd2, 0x76, 0x2d, 0xec, 0xb0, 0x6d, 0x20, 0x6d, 0xbb, 0x88, - 0x7e, 0xcb, 0x34, 0x4b, 0xb5, 0x8e, 0x2a, 0x79, 0x15, 0xa4, 0x37, 0x88, 0x7a, 0xbb, 0x90, 0xf1, - 0xb5, 0xd9, 0x0f, 0x6e, 0xd5, 0x47, 0xcf, 0x40, 0xbc, 0x3e, 0x60, 0xfe, 0x3d, 0x0c, 0x43, 0xda, - 0xf6, 0xdf, 0xad, 0x44, 0x3f, 0xd0, 0xb2, 0x57, 0x19, 0xbb, 0x48, 0xb9, 0x5a, 0x12, 0x4f, 0xb8, - 0xbc, 0x11, 0xc5, 0xf5, 0x68, 0x99, 0xc5, 0xc4, 0xf2, 0x8f, 0xc3, 0x1d, 0xcb, 0x3f, 0xa9, 0xe4, - 0x64, 0x7c, 0xba, 0xa2, 0x52, 0xe4, 0x30, 0xe3, 0x6b, 0x6a, 0x20, 0x45, 0x4e, 0x65, 0x7c, 0x3e, - 0xd2, 0xb2, 0x7a, 0x5c, 0x85, 0x4d, 0xdc, 0xea, 0xb1, 0x1b, 0x27, 0x1f, 0x84, 0x10, 0x1b, 0xb6, - 0x9a, 0x01, 0x2c, 0xb2, 0xcb, 0x64, 0x7a, 0x9e, 0x4f, 0xaa, 0x61, 0xfc, 0x18, 0x1f, 0xa1, 0x0e, - 0x42, 0x84, 0x2d, 0x02, 0xd5, 0xde, 0xfe, 0xc1, 0x26, 0x46, 0x7a, 0x2a, 0xed, 0x17, 0x62, 0x76, - 0xc4, 0xa7, 0x2c, 0x5e, 0xea, 0xf9, 0xff, 0x79, 0x68, 0xe2, 0x41, 0xda, 0x14, 0xe2, 0xc5, 0x2d, - 0xb5, 0x74, 0x79, 0xfe, 0x7d, 0x25, 0x7a, 0xd8, 0x54, 0xff, 0x8a, 0x65, 0x53, 0xae, 0xfb, 0xb3, - 0x2e, 0xfd, 0x4e, 0x36, 0x39, 0xe3, 0xa5, 0x64, 0x85, 0x1c, 0xfc, 0x08, 0xaf, 0x64, 0x48, 0xc7, - 0x94, 0xed, 0xc7, 0xbf, 0x94, 0xae, 0xed, 0xf5, 0x51, 0x15, 0xd8, 0x74, 0x08, 0xf0, 0x7b, 0x5d, - 0x49, 0x60, 0x00, 0x78, 0x10, 0x42, 0x6c, 0xaf, 0x2b, 0xc1, 0x61, 0xb6, 0x48, 0x24, 0x3f, 0xe0, - 0x19, 0x2f, 0xda, 0xbd, 0x5e, 0xab, 0xfa, 0x08, 0xd1, 0xeb, 0x04, 0x6a, 0x83, 0x8d, 0xe7, 0xcd, - 0x2c, 0x8e, 0x1b, 0x01, 0x23, 0xad, 0xe5, 0x71, 0xb3, 0x1f, 0x6c, 0x77, 0x77, 0x8e, 0xcf, 0x33, - 0xbe, 0x10, 0xd7, 0x70, 0x77, 0xe7, 0x9a, 0xa8, 0x01, 0x62, 0x77, 0x87, 0x82, 0x76, 0x05, 0x73, - 0xfc, 0xbc, 0x49, 0xf8, 0x0d, 0x58, 0xc1, 0x5c, 0xe5, 0x4a, 0x4c, 0xac, 0x60, 0x08, 0xa6, 0x3d, - 0x9c, 0x44, 0xbf, 0xa2, 0x84, 0xbf, 0x2f, 0x92, 0x6c, 0x70, 0x17, 0x51, 0xaa, 0x04, 0xc6, 0xea, - 0x3d, 0x1a, 0x00, 0x25, 0xae, 0x7e, 0xdd, 0x65, 0x59, 0xcc, 0x53, 0xb4, 0xc4, 0x56, 0x1c, 0x2c, - 0xb1, 0x87, 0xd9, 0xd4, 0x41, 0x09, 0xab, 0xf8, 0x35, 0xba, 0x62, 0x45, 0x92, 0x4d, 0x07, 0x98, - 0xae, 0x23, 0x27, 0x52, 0x07, 0x8c, 0x03, 0x43, 0x58, 0x2b, 0xee, 0xe4, 0x79, 0x51, 0x85, 0x45, - 0x6c, 0x08, 0xfb, 0x48, 0x70, 0x08, 0xb7, 0x50, 0xdc, 0xdb, 0x1e, 0x8f, 0xd3, 0x24, 0x0b, 0x7a, - 0xd3, 0x48, 0x1f, 0x6f, 0x16, 0x05, 0x83, 0xf7, 0x88, 0xb3, 0x05, 0x6f, 0x6a, 0x86, 0xb5, 0x8c, - 0x0b, 0x04, 0x07, 0x2f, 0x00, 0xed, 0x3e, 0x4d, 0x89, 0x8f, 0xd9, 0x35, 0xaf, 0x1a, 0x98, 0x57, - 0xeb, 0xda, 0x00, 0xd3, 0xf7, 0x08, 0x62, 0x9f, 0x86, 0x93, 0xda, 0xd5, 0x3c, 0xfa, 0x48, 0xc9, - 0x4f, 0x59, 0x21, 0x93, 0x38, 0xc9, 0x59, 0xd6, 0xe4, 0xff, 0xd8, 0xbc, 0x6e, 0x51, 0xc6, 0xe5, - 0x56, 0x4f, 0x5a, 0xbb, 0xfd, 0xb7, 0x95, 0xe8, 0x3e, 0xf4, 0x7b, 0xca, 0x8b, 0x59, 0xa2, 0xb6, - 0x91, 0x65, 0x1d, 0x84, 0x07, 0x5f, 0x86, 0x8d, 0xb6, 0x14, 0x4c, 0x69, 0x7e, 0x78, 0x7b, 0x45, - 0x9b, 0x0c, 0x8d, 0x74, 0x6a, 0xfd, 0xba, 0x98, 0xb4, 0x8e, 0x59, 0x46, 0x4d, 0xbe, 0xac, 0x84, - 0x44, 0x32, 0xd4, 0x82, 0xc0, 0x0c, 0x3f, 0xcf, 0xca, 0xc6, 0x3a, 0x36, 0xc3, 0xad, 0x38, 0x38, - 0xc3, 0x3d, 0x4c, 0x7b, 0xf8, 0x83, 0x28, 0xaa, 0x37, 0x5b, 0x6a, 0x43, 0xec, 0xc7, 0x1c, 0xbd, - 0x0b, 0xf3, 0x76, 0xc3, 0xf7, 0x03, 0x84, 0x5d, 0xe8, 0xea, 0xdf, 0xd5, 0x3e, 0x7f, 0x80, 0x6a, - 0x28, 0x11, 0xb1, 0xd0, 0x01, 0x04, 0x16, 0x74, 0x74, 0x25, 0x6e, 0xf0, 0x82, 0x56, 0x92, 0x70, - 0x41, 0x35, 0x61, 0x4f, 0xde, 0x74, 0x41, 0xb1, 0x93, 0xb7, 0xa6, 0x18, 0xa1, 0x93, 0x37, 0xc8, - 0x68, 0xc3, 0x22, 0xfa, 0x4d, 0xd7, 0xf0, 0x4b, 0x21, 0xae, 0x67, 0xac, 0xb8, 0x1e, 0x3c, 0xa1, - 0x95, 0x1b, 0xc6, 0x38, 0xda, 0xe8, 0xc5, 0xda, 0xa0, 0xe6, 0x3a, 0xac, 0xd2, 0xa4, 0xf3, 0x22, - 0x05, 0x41, 0xcd, 0xb3, 0xa1, 0x11, 0x22, 0xa8, 0x11, 0xa8, 0x1d, 0x95, 0xae, 0xb7, 0x11, 0x87, - 0x7b, 0x3d, 0x4f, 0x7d, 0xc4, 0xa9, 0xbd, 0x1e, 0x82, 0xc1, 0x21, 0x74, 0x50, 0xb0, 0xfc, 0x0a, - 0x1f, 0x42, 0x4a, 0x14, 0x1e, 0x42, 0x0d, 0x02, 0xfb, 0x7b, 0xc4, 0x59, 0x11, 0x5f, 0xe1, 0xfd, - 0x5d, 0xcb, 0xc2, 0xfd, 0x6d, 0x18, 0xd8, 0xdf, 0xb5, 0xe0, 0x6d, 0x22, 0xaf, 0x8e, 0xb9, 0x64, - 0x78, 0x7f, 0xfb, 0x4c, 0xb8, 0xbf, 0x5b, 0xac, 0xcd, 0xc3, 0x5c, 0x87, 0xa3, 0xf9, 0x45, 0x19, - 0x17, 0xc9, 0x05, 0x1f, 0x04, 0xac, 0x18, 0x88, 0xc8, 0xc3, 0x48, 0x58, 0xfb, 0xfc, 0xf9, 0x4a, - 0x74, 0xb7, 0xe9, 0x76, 0x51, 0x96, 0x3a, 0xe6, 0xf9, 0xee, 0x5f, 0xe0, 0xfd, 0x4b, 0xe0, 0xc4, - 0x59, 0x68, 0x0f, 0x35, 0x67, 0x4d, 0xc0, 0x8b, 0x74, 0x9e, 0x95, 0xa6, 0x50, 0x5f, 0xf6, 0xb1, - 0xee, 0x28, 0x10, 0x6b, 0x42, 0x2f, 0x45, 0xbb, 0x1c, 0xeb, 0xfe, 0x69, 0x64, 0x87, 0x93, 0x12, - 0x2c, 0xc7, 0x4d, 0x7b, 0x3b, 0x04, 0xb1, 0x1c, 0xe3, 0x24, 0x1c, 0x0a, 0x07, 0x85, 0x98, 0xe7, - 0x65, 0xc7, 0x50, 0x00, 0x50, 0x78, 0x28, 0xb4, 0x61, 0xed, 0xf3, 0x5d, 0xf4, 0xdb, 0xee, 0xf0, - 0x73, 0x1b, 0x7b, 0x8b, 0x1e, 0x53, 0x58, 0x13, 0x0f, 0xfb, 0xe2, 0x36, 0x21, 0x6d, 0x3c, 0xcb, - 0x3d, 0x2e, 0x59, 0x92, 0x96, 0x83, 0x55, 0xdc, 0x46, 0x23, 0x27, 0x12, 0x52, 0x8c, 0x83, 0xf1, - 0x6d, 0x6f, 0x9e, 0xa7, 0x49, 0xdc, 0x3e, 0x89, 0xd6, 0xba, 0x46, 0x1c, 0x8e, 0x6f, 0x2e, 0x06, - 0xe3, 0x75, 0xb5, 0xe4, 0xab, 0xff, 0x8c, 0x97, 0x39, 0xc7, 0xe3, 0xb5, 0x87, 0x84, 0xe3, 0x35, - 0x44, 0x61, 0x7d, 0x46, 0x5c, 0x1e, 0xb1, 0xa5, 0x98, 0x13, 0xf1, 0xda, 0x88, 0xc3, 0xf5, 0x71, - 0x31, 0x9b, 0x13, 0x1a, 0x0f, 0x87, 0x99, 0xe4, 0x45, 0xc6, 0xd2, 0xfd, 0x94, 0x4d, 0xcb, 0x01, - 0x11, 0x63, 0x7c, 0x8a, 0xc8, 0x09, 0x69, 0x1a, 0x69, 0xc6, 0xc3, 0x72, 0x9f, 0x2d, 0x44, 0x91, - 0x48, 0xba, 0x19, 0x2d, 0xd2, 0xd9, 0x8c, 0x1e, 0x8a, 0x7a, 0xdb, 0x29, 0xe2, 0xab, 0x64, 0xc1, - 0x27, 0x01, 0x6f, 0x0d, 0xd2, 0xc3, 0x9b, 0x83, 0x22, 0x9d, 0x36, 0x12, 0xf3, 0x22, 0xe6, 0x64, - 0xa7, 0xd5, 0xe2, 0xce, 0x4e, 0x33, 0x98, 0xf6, 0xf0, 0x57, 0x2b, 0xd1, 0xef, 0xd4, 0x52, 0xf7, - 0x78, 0x78, 0x8f, 0x95, 0x57, 0x17, 0x82, 0x15, 0x93, 0xc1, 0x67, 0x98, 0x1d, 0x14, 0x35, 0xae, - 0x9f, 0xdd, 0x46, 0x05, 0x36, 0xeb, 0x51, 0x52, 0x3a, 0x33, 0x0e, 0x6d, 0x56, 0x0f, 0x09, 0x37, - 0x2b, 0x44, 0x61, 0x00, 0x51, 0xf2, 0xfa, 0x28, 0x66, 0x95, 0xd4, 0xf7, 0xcf, 0x63, 0xd6, 0x3a, - 0x39, 0x18, 0x1f, 0x2b, 0xa1, 0x3f, 0x5a, 0xb6, 0x28, 0x1b, 0xf8, 0x88, 0x19, 0xf6, 0xc5, 0x49, - 0xcf, 0x66, 0x56, 0x84, 0x3d, 0xb7, 0x66, 0xc6, 0xb0, 0x2f, 0x4e, 0x78, 0x76, 0xc2, 0x5a, 0xc8, - 0x33, 0x12, 0xda, 0x86, 0x7d, 0x71, 0x98, 0x7d, 0x69, 0xa6, 0x59, 0x17, 0x9e, 0x04, 0xec, 0xc0, - 0xb5, 0x61, 0xa3, 0x17, 0xab, 0x1d, 0xfe, 0xcd, 0x4a, 0xf4, 0x7d, 0xeb, 0xf1, 0x58, 0x4c, 0x92, - 0xcb, 0x65, 0x0d, 0xbd, 0x61, 0xe9, 0x9c, 0x97, 0x83, 0x67, 0x94, 0xb5, 0x36, 0x6b, 0x4a, 0xf0, - 0xfc, 0x56, 0x3a, 0x70, 0xee, 0xec, 0xe4, 0x79, 0xba, 0x1c, 0xf3, 0x59, 0x9e, 0x92, 0x73, 0xc7, - 0x43, 0xc2, 0x73, 0x07, 0xa2, 0x30, 0x2b, 0x1f, 0x8b, 0x2a, 0xe7, 0x47, 0xb3, 0x72, 0x25, 0x0a, - 0x67, 0xe5, 0x0d, 0x02, 0x73, 0xa5, 0xb1, 0xd8, 0x15, 0x69, 0xca, 0x63, 0xd9, 0x7e, 0xc4, 0x6c, - 0x34, 0x2d, 0x11, 0xce, 0x95, 0x00, 0x69, 0x4f, 0x63, 0x9a, 0x3d, 0x24, 0x2b, 0xf8, 0xcb, 0xe5, - 0x51, 0x92, 0x5d, 0x0f, 0xf0, 0xb4, 0xc0, 0x02, 0xc4, 0x69, 0x0c, 0x0a, 0xc2, 0xbd, 0xea, 0x79, - 0x36, 0x11, 0xf8, 0x5e, 0xb5, 0x92, 0x84, 0xf7, 0xaa, 0x9a, 0x80, 0x26, 0xcf, 0x38, 0x65, 0xb2, - 0x92, 0x84, 0x4d, 0x6a, 0x02, 0x0b, 0x85, 0xfa, 0xcc, 0x9e, 0x0c, 0x85, 0xe0, 0x94, 0x7e, 0xad, - 0x93, 0x83, 0x23, 0xb4, 0xd9, 0xb4, 0xee, 0x73, 0x19, 0x5f, 0xe1, 0x23, 0xd4, 0x43, 0xc2, 0x23, - 0x14, 0xa2, 0xb0, 0x4a, 0x63, 0x61, 0x36, 0xdd, 0xab, 0xf8, 0xf8, 0x68, 0x6d, 0xb8, 0xd7, 0x3a, - 0x39, 0xb8, 0x8d, 0x3c, 0x9c, 0xa9, 0x36, 0x43, 0x07, 0x79, 0x2d, 0x0b, 0x6f, 0x23, 0x0d, 0x03, - 0x4b, 0x5f, 0x0b, 0xaa, 0xe6, 0xc4, 0x4b, 0x6f, 0xe5, 0xe1, 0xd2, 0x7b, 0x9c, 0x76, 0xf2, 0x2f, - 0x66, 0x1b, 0x57, 0x4b, 0x4f, 0x44, 0x35, 0x47, 0xde, 0xb0, 0x34, 0x99, 0x30, 0xc9, 0xc7, 0xe2, - 0x9a, 0x67, 0xf8, 0x8e, 0x49, 0x97, 0xb6, 0xe6, 0x87, 0x9e, 0x42, 0x78, 0xc7, 0x14, 0x56, 0x84, - 0xe3, 0xa4, 0xa6, 0xcf, 0x4b, 0xbe, 0xcb, 0x4a, 0x22, 0x92, 0x79, 0x48, 0x78, 0x9c, 0x40, 0x14, - 0xe6, 0xab, 0xb5, 0xfc, 0xd5, 0xbb, 0x9c, 0x17, 0x09, 0xcf, 0x62, 0x8e, 0xe7, 0xab, 0x90, 0x0a, - 0xe7, 0xab, 0x08, 0x0d, 0xf7, 0x6a, 0x7b, 0x4c, 0xf2, 0x97, 0xcb, 0x71, 0x32, 0xe3, 0xa5, 0x64, - 0xb3, 0x1c, 0xdf, 0xab, 0x01, 0x28, 0xbc, 0x57, 0x6b, 0xc3, 0xad, 0xa3, 0x21, 0x13, 0x10, 0xdb, - 0x37, 0x53, 0x20, 0x11, 0xb8, 0x99, 0x42, 0xa0, 0xb0, 0x61, 0x2d, 0x80, 0x1e, 0x0e, 0xb7, 0xac, - 0x04, 0x0f, 0x87, 0x69, 0xba, 0x75, 0xe0, 0x66, 0x98, 0x51, 0x35, 0x35, 0x3b, 0x8a, 0x3e, 0x72, - 0xa7, 0xe8, 0x46, 0x2f, 0x16, 0x3f, 0xe1, 0x3b, 0xe3, 0x29, 0x53, 0xcb, 0x56, 0xe0, 0x18, 0xad, - 0x61, 0xfa, 0x9c, 0xf0, 0x39, 0xac, 0x76, 0xf8, 0x17, 0x2b, 0xd1, 0x27, 0x98, 0xc7, 0xd7, 0xb9, - 0xf2, 0xfb, 0xb4, 0xdb, 0x56, 0x4d, 0x12, 0x57, 0x6f, 0xc2, 0x1a, 0xba, 0x0c, 0x7f, 0x12, 0x7d, - 0xdc, 0x88, 0xec, 0xcd, 0x1c, 0x5d, 0x00, 0x3f, 0x69, 0x33, 0xe5, 0x87, 0x9c, 0x71, 0xbf, 0xdd, - 0x9b, 0xb7, 0xfb, 0x21, 0xbf, 0x5c, 0x25, 0xd8, 0x0f, 0x19, 0x1b, 0x5a, 0x4c, 0xec, 0x87, 0x10, - 0xcc, 0xce, 0x4e, 0xb7, 0x7a, 0x6f, 0x13, 0x79, 0xa5, 0xf2, 0x2d, 0x30, 0x3b, 0xbd, 0xb2, 0x1a, - 0x88, 0x98, 0x9d, 0x24, 0x0c, 0x33, 0x92, 0x06, 0xac, 0xe6, 0x26, 0x16, 0xcb, 0x8d, 0x21, 0x77, - 0x66, 0xae, 0x77, 0x83, 0x70, 0xbc, 0x36, 0x62, 0xbd, 0xf5, 0x79, 0x12, 0xb2, 0x00, 0xb6, 0x3f, - 0x1b, 0xbd, 0x58, 0xed, 0xf0, 0xcf, 0xa2, 0xef, 0xb5, 0x2a, 0xb6, 0xcf, 0x99, 0x9c, 0x17, 0x7c, - 0x32, 0xd8, 0xee, 0x28, 0x77, 0x03, 0x1a, 0xd7, 0x4f, 0xfb, 0x2b, 0xb4, 0x72, 0xf4, 0x86, 0xab, - 0x87, 0x95, 0x29, 0xc3, 0xb3, 0x90, 0x49, 0x9f, 0x0d, 0xe6, 0xe8, 0xb4, 0x4e, 0x6b, 0x9b, 0xed, - 0x8e, 0xae, 0x9d, 0x05, 0x4b, 0x52, 0xf5, 0x90, 0xee, 0xb3, 0x90, 0x51, 0x0f, 0x0d, 0x6e, 0xb3, - 0x49, 0x95, 0x56, 0x64, 0x56, 0x73, 0xdc, 0xd9, 0x9e, 0x6d, 0xd2, 0x91, 0x00, 0xd9, 0x9d, 0x6d, - 0xf5, 0xa4, 0xb5, 0x5b, 0xd9, 0x2c, 0x79, 0xd5, 0xcf, 0xee, 0x20, 0xc7, 0xbc, 0x6a, 0x55, 0x64, - 0xa4, 0x6f, 0xf5, 0xa4, 0xb5, 0xd7, 0x3f, 0x8d, 0x3e, 0x6e, 0x7b, 0xd5, 0x0b, 0xd1, 0x76, 0xa7, - 0x29, 0xb0, 0x16, 0x3d, 0xed, 0xaf, 0x60, 0xb7, 0x34, 0x5f, 0x25, 0xa5, 0x14, 0xc5, 0x72, 0x74, - 0x25, 0x6e, 0x9a, 0x1b, 0xef, 0xfe, 0x6c, 0xd5, 0xc0, 0xd0, 0x21, 0x88, 0x2d, 0x0d, 0x4e, 0xb6, - 0x5c, 0xd9, 0x9b, 0xf1, 0x25, 0xe1, 0xca, 0x21, 0x3a, 0x5c, 0xf9, 0xa4, 0x8d, 0x55, 0x4d, 0xad, - 0xec, 0x35, 0xfe, 0x35, 0xbc, 0xa8, 0xed, 0xab, 0xfc, 0xeb, 0xdd, 0xa0, 0xcd, 0x58, 0xb4, 0x78, + 0x7c, 0x16, 0x1e, 0x78, 0xdc, 0x47, 0x1e, 0xd1, 0xcc, 0x1b, 0x9f, 0x02, 0x65, 0x64, 0x64, 0x5c, + 0x4e, 0x9e, 0x13, 0x99, 0xde, 0xa7, 0x6e, 0xd5, 0xf9, 0x9d, 0x73, 0xe2, 0x7a, 0xe2, 0x44, 0x64, + 0x64, 0x3a, 0xba, 0x9b, 0x5f, 0x6c, 0xe7, 0x85, 0x90, 0xa2, 0xdc, 0x2e, 0x79, 0xb1, 0x48, 0x62, + 0xde, 0xfc, 0x3b, 0x54, 0x3f, 0x0f, 0xde, 0x67, 0xd9, 0x52, 0x2e, 0x73, 0xfe, 0xc9, 0xc7, 0x96, + 0x8c, 0xc5, 0x6c, 0xc6, 0xb2, 0x49, 0x59, 0x23, 0x9f, 0x7c, 0x64, 0x25, 0x7c, 0xc1, 0x33, 0xa9, + 0x7f, 0x7f, 0xf6, 0x9f, 0xff, 0xbb, 0x12, 0x7d, 0xb0, 0x9b, 0x26, 0x3c, 0x93, 0xbb, 0x5a, 0x63, + 0xf0, 0x75, 0xf4, 0xdd, 0x9d, 0x3c, 0x3f, 0xe0, 0xf2, 0x0d, 0x2f, 0xca, 0x44, 0x64, 0x83, 0x4f, + 0x87, 0xda, 0xc1, 0xf0, 0x2c, 0x8f, 0x87, 0x3b, 0x79, 0x3e, 0xb4, 0xc2, 0xe1, 0x19, 0xff, 0xe9, + 0x9c, 0x97, 0xf2, 0x93, 0x87, 0x61, 0xa8, 0xcc, 0x45, 0x56, 0xf2, 0xc1, 0x65, 0xf4, 0x1b, 0x3b, + 0x79, 0x3e, 0xe2, 0x72, 0x8f, 0x57, 0x15, 0x18, 0x49, 0x26, 0xf9, 0x60, 0xad, 0xa5, 0xea, 0x03, + 0xc6, 0xc7, 0x7a, 0x37, 0xa8, 0xfd, 0x8c, 0xa3, 0xef, 0x54, 0x7e, 0xae, 0xe6, 0x72, 0x22, 0x6e, + 0xb2, 0xc1, 0xfd, 0xb6, 0xa2, 0x16, 0x19, 0xdb, 0x0f, 0x42, 0x88, 0xb6, 0xfa, 0x36, 0xfa, 0xd5, + 0xb7, 0x2c, 0x4d, 0xb9, 0xdc, 0x2d, 0x78, 0x55, 0x70, 0x5f, 0xa7, 0x16, 0x0d, 0x6b, 0x99, 0xb1, + 0xfb, 0x69, 0x90, 0xd1, 0x86, 0xbf, 0x8e, 0xbe, 0x5b, 0x4b, 0xce, 0x78, 0x2c, 0x16, 0xbc, 0x18, + 0xa0, 0x5a, 0x5a, 0x48, 0x34, 0x79, 0x0b, 0x82, 0xb6, 0x77, 0x45, 0xb6, 0xe0, 0x85, 0xc4, 0x6d, + 0x6b, 0x61, 0xd8, 0xb6, 0x85, 0xb4, 0xed, 0xbf, 0x5d, 0x89, 0xbe, 0xbf, 0x13, 0xc7, 0x62, 0x9e, + 0xc9, 0x23, 0x11, 0xb3, 0xf4, 0x28, 0xc9, 0xae, 0x4f, 0xf8, 0xcd, 0xee, 0x55, 0xc5, 0x67, 0x53, + 0x3e, 0x78, 0xee, 0xb7, 0x6a, 0x8d, 0x0e, 0x0d, 0x3b, 0x74, 0x61, 0xe3, 0xfb, 0xf3, 0xdb, 0x29, + 0xe9, 0xb2, 0xfc, 0xe3, 0x4a, 0x74, 0x07, 0x96, 0x65, 0x24, 0xd2, 0x05, 0xb7, 0xa5, 0x79, 0xd1, + 0x61, 0xd8, 0xc7, 0x4d, 0x79, 0xbe, 0xb8, 0xad, 0x9a, 0x2e, 0x51, 0x1a, 0x7d, 0xe8, 0x0e, 0x97, + 0x11, 0x2f, 0xd5, 0x74, 0x7a, 0x4c, 0x8f, 0x08, 0x8d, 0x18, 0xcf, 0x4f, 0xfa, 0xa0, 0xda, 0x5b, + 0x12, 0x0d, 0xb4, 0xb7, 0x54, 0x94, 0xc6, 0xd9, 0x3a, 0x6a, 0xc1, 0x21, 0x8c, 0xaf, 0xc7, 0x3d, + 0x48, 0xed, 0xea, 0x8f, 0xa2, 0x5f, 0x7b, 0x2b, 0x8a, 0xeb, 0x32, 0x67, 0x31, 0xd7, 0x53, 0xe1, + 0x91, 0xaf, 0xdd, 0x48, 0xe1, 0x6c, 0x58, 0xed, 0xc2, 0x9c, 0x41, 0xdb, 0x08, 0x5f, 0xe7, 0x1c, + 0xc6, 0x20, 0xab, 0x58, 0x09, 0xa9, 0x41, 0x0b, 0x21, 0x6d, 0xfb, 0x3a, 0x1a, 0x58, 0xdb, 0x17, + 0x7f, 0xcc, 0x63, 0xb9, 0x33, 0x99, 0xc0, 0x5e, 0xb1, 0xba, 0x8a, 0x18, 0xee, 0x4c, 0x26, 0x54, + 0xaf, 0xe0, 0xa8, 0x76, 0x76, 0x13, 0x7d, 0x04, 0x9c, 0x1d, 0x25, 0xa5, 0x72, 0xb8, 0x15, 0xb6, + 0xa2, 0x31, 0xe3, 0x74, 0xd8, 0x17, 0xd7, 0x8e, 0xff, 0x7c, 0x25, 0xfa, 0x1e, 0xe2, 0xf9, 0x8c, + 0xcf, 0xc4, 0x82, 0x0f, 0x9e, 0x76, 0x5b, 0xab, 0x49, 0xe3, 0xff, 0xb3, 0x5b, 0x68, 0x20, 0xc3, + 0x64, 0xc4, 0x53, 0x1e, 0x4b, 0x72, 0x98, 0xd4, 0xe2, 0xce, 0x61, 0x62, 0x30, 0x67, 0x86, 0x35, + 0xc2, 0x03, 0x2e, 0x77, 0xe7, 0x45, 0xc1, 0x33, 0x49, 0xf6, 0xa5, 0x45, 0x3a, 0xfb, 0xd2, 0x43, + 0x91, 0xfa, 0x1c, 0x70, 0xb9, 0x93, 0xa6, 0x64, 0x7d, 0x6a, 0x71, 0x67, 0x7d, 0x0c, 0xa6, 0x3d, + 0xc4, 0xd1, 0xaf, 0x3b, 0x2d, 0x26, 0x0f, 0xb3, 0x4b, 0x31, 0xa0, 0xdb, 0x42, 0xc9, 0x8d, 0x8f, + 0xb5, 0x4e, 0x0e, 0xa9, 0xc6, 0xab, 0x77, 0xb9, 0x28, 0xe8, 0x6e, 0xa9, 0xc5, 0x9d, 0xd5, 0x30, + 0x98, 0xf6, 0xf0, 0x87, 0xd1, 0x07, 0x3a, 0x4a, 0x36, 0xeb, 0xd9, 0x43, 0x34, 0x84, 0xc2, 0x05, + 0xed, 0x51, 0x07, 0xd5, 0x32, 0x7f, 0x9c, 0x4c, 0x8b, 0x2a, 0xfa, 0xe0, 0xe6, 0xb5, 0xb4, 0xc3, + 0xbc, 0xa5, 0x6c, 0xec, 0xd1, 0x32, 0x1d, 0xdb, 0x3e, 0x45, 0xf5, 0x40, 0x64, 0x7b, 0x18, 0x86, + 0x5a, 0xb6, 0xf7, 0x78, 0xca, 0x49, 0xdb, 0xb5, 0xb0, 0xc3, 0xb6, 0x81, 0xb4, 0xed, 0x22, 0xfa, + 0x2d, 0xd3, 0xea, 0xd5, 0x32, 0xad, 0xe4, 0xd5, 0x1a, 0xb0, 0x41, 0x34, 0xab, 0x0b, 0x19, 0x5f, + 0x9b, 0xfd, 0xe0, 0x56, 0x7d, 0xf4, 0x04, 0xc7, 0xeb, 0x03, 0xa6, 0xf7, 0xc3, 0x30, 0xa4, 0x6d, + 0xff, 0xdd, 0x4a, 0xf4, 0x03, 0x2d, 0x7b, 0x95, 0xb1, 0x8b, 0x94, 0xab, 0x15, 0xf7, 0x84, 0xcb, + 0x1b, 0x51, 0x5c, 0x8f, 0x96, 0x59, 0x4c, 0x64, 0x17, 0x38, 0xdc, 0x91, 0x5d, 0x90, 0x4a, 0x4e, + 0x42, 0xa9, 0x2b, 0x2a, 0x45, 0x0e, 0x13, 0xca, 0xa6, 0x06, 0x52, 0xe4, 0x54, 0x42, 0xe9, 0x23, + 0x2d, 0xab, 0xc7, 0x55, 0x54, 0xc6, 0xad, 0x1e, 0xbb, 0x61, 0xf8, 0x41, 0x08, 0xb1, 0x51, 0xb1, + 0x19, 0xc0, 0x22, 0xbb, 0x4c, 0xa6, 0xe7, 0xf9, 0xa4, 0x1a, 0xc6, 0x8f, 0xf1, 0x11, 0xea, 0x20, + 0x44, 0x54, 0x24, 0x50, 0xed, 0xed, 0x1f, 0x6c, 0xde, 0xa5, 0x67, 0xea, 0x7e, 0x21, 0x66, 0x47, + 0x7c, 0xca, 0xe2, 0xa5, 0x0e, 0x2f, 0x9f, 0x87, 0xe6, 0x35, 0xa4, 0x4d, 0x21, 0x5e, 0xdc, 0x52, + 0x4b, 0x97, 0xe7, 0xdf, 0x57, 0xa2, 0x87, 0x4d, 0xf5, 0xaf, 0x58, 0x36, 0xe5, 0xba, 0x3f, 0xeb, + 0xd2, 0xef, 0x64, 0x93, 0x33, 0x5e, 0x4a, 0x56, 0xc8, 0xc1, 0x8f, 0xf0, 0x4a, 0x86, 0x74, 0x4c, + 0xd9, 0x7e, 0xfc, 0x4b, 0xe9, 0xda, 0x5e, 0x1f, 0x55, 0x71, 0x53, 0x87, 0x00, 0xbf, 0xd7, 0x95, + 0x04, 0x06, 0x80, 0x07, 0x21, 0xc4, 0xf6, 0xba, 0x12, 0x1c, 0x66, 0x8b, 0x44, 0xf2, 0x03, 0x9e, + 0xf1, 0xa2, 0xdd, 0xeb, 0xb5, 0xaa, 0x8f, 0x10, 0xbd, 0x4e, 0xa0, 0x36, 0xd8, 0x78, 0xde, 0xcc, + 0xda, 0xbb, 0x11, 0x30, 0xd2, 0x5a, 0x7d, 0x37, 0xfb, 0xc1, 0x76, 0xf3, 0xe8, 0xf8, 0x3c, 0xe3, + 0x0b, 0x71, 0x0d, 0x37, 0x8f, 0xae, 0x89, 0x1a, 0x20, 0x36, 0x8f, 0x28, 0x68, 0x17, 0x48, 0xc7, + 0xcf, 0x9b, 0x84, 0xdf, 0x80, 0x05, 0xd2, 0x55, 0xae, 0xc4, 0xc4, 0x02, 0x89, 0x60, 0xda, 0xc3, + 0x49, 0xf4, 0x2b, 0x4a, 0xf8, 0xfb, 0x22, 0xc9, 0x06, 0x77, 0x11, 0xa5, 0x4a, 0x60, 0xac, 0xde, + 0xa3, 0x01, 0x50, 0xe2, 0xea, 0xd7, 0x5d, 0x96, 0xc5, 0x3c, 0x45, 0x4b, 0x6c, 0xc5, 0xc1, 0x12, + 0x7b, 0x98, 0xcd, 0x4c, 0x94, 0xb0, 0x8a, 0x5f, 0xa3, 0x2b, 0x56, 0x24, 0xd9, 0x74, 0x80, 0xe9, + 0x3a, 0x72, 0x22, 0x33, 0xc1, 0x38, 0x30, 0x84, 0xb5, 0xe2, 0x4e, 0x9e, 0x17, 0x55, 0x58, 0xc4, + 0x86, 0xb0, 0x8f, 0x04, 0x87, 0x70, 0x0b, 0xc5, 0xbd, 0xed, 0xf1, 0x38, 0x4d, 0xb2, 0xa0, 0x37, + 0x8d, 0xf4, 0xf1, 0x66, 0x51, 0x30, 0x78, 0x8f, 0x38, 0x5b, 0xf0, 0xa6, 0x66, 0x58, 0xcb, 0xb8, + 0x40, 0x70, 0xf0, 0x02, 0xd0, 0x6e, 0x03, 0x95, 0xf8, 0x98, 0x5d, 0xf3, 0xaa, 0x81, 0x79, 0xb5, + 0xae, 0x0d, 0x30, 0x7d, 0x8f, 0x20, 0xb6, 0x81, 0x38, 0xa9, 0x5d, 0xcd, 0xa3, 0x8f, 0x94, 0xfc, + 0x94, 0x15, 0x32, 0x89, 0x93, 0x9c, 0x65, 0xcd, 0xf6, 0x02, 0x9b, 0xd7, 0x2d, 0xca, 0xb8, 0xdc, + 0xea, 0x49, 0x6b, 0xb7, 0xff, 0xb6, 0x12, 0xdd, 0x87, 0x7e, 0x4f, 0x79, 0x31, 0x4b, 0xd4, 0x2e, + 0xb5, 0xac, 0x83, 0xf0, 0xe0, 0xcb, 0xb0, 0xd1, 0x96, 0x82, 0x29, 0xcd, 0x0f, 0x6f, 0xaf, 0x68, + 0x93, 0xa1, 0x91, 0xce, 0xdc, 0x5f, 0x17, 0x93, 0xd6, 0x29, 0xce, 0xa8, 0x49, 0xc7, 0x95, 0x90, + 0x48, 0x86, 0x5a, 0x10, 0x98, 0xe1, 0xe7, 0x59, 0xd9, 0x58, 0xc7, 0x66, 0xb8, 0x15, 0x07, 0x67, + 0xb8, 0x87, 0x69, 0x0f, 0x7f, 0x10, 0x45, 0xf5, 0x5e, 0x4e, 0xed, 0xb7, 0xfd, 0x98, 0xa3, 0x37, + 0x79, 0xde, 0x66, 0xfb, 0x7e, 0x80, 0xb0, 0x0b, 0x5d, 0xfd, 0xbb, 0x3a, 0x46, 0x18, 0xa0, 0x1a, + 0x4a, 0x44, 0x2c, 0x74, 0x00, 0x81, 0x05, 0x1d, 0x5d, 0x89, 0x1b, 0xbc, 0xa0, 0x95, 0x24, 0x5c, + 0x50, 0x4d, 0xd8, 0x83, 0x3d, 0x5d, 0x50, 0xec, 0x60, 0xaf, 0x29, 0x46, 0xe8, 0x60, 0x0f, 0x32, + 0xda, 0xb0, 0x88, 0x7e, 0xd3, 0x35, 0xfc, 0x52, 0x88, 0xeb, 0x19, 0x2b, 0xae, 0x07, 0x4f, 0x68, + 0xe5, 0x86, 0x31, 0x8e, 0x36, 0x7a, 0xb1, 0x36, 0xa8, 0xb9, 0x0e, 0xab, 0x34, 0xe9, 0xbc, 0x48, + 0x41, 0x50, 0xf3, 0x6c, 0x68, 0x84, 0x08, 0x6a, 0x04, 0x6a, 0x47, 0xa5, 0xeb, 0x6d, 0xc4, 0xe1, + 0x56, 0xd2, 0x53, 0x1f, 0x71, 0x6a, 0x2b, 0x89, 0x60, 0x70, 0x08, 0x1d, 0x14, 0x2c, 0xbf, 0xc2, + 0x87, 0x90, 0x12, 0x85, 0x87, 0x50, 0x83, 0xc0, 0xfe, 0x1e, 0x71, 0x56, 0xc4, 0x57, 0x78, 0x7f, + 0xd7, 0xb2, 0x70, 0x7f, 0x1b, 0x06, 0xf6, 0x77, 0x2d, 0x78, 0x9b, 0xc8, 0xab, 0x63, 0x2e, 0x19, + 0xde, 0xdf, 0x3e, 0x13, 0xee, 0xef, 0x16, 0x6b, 0xf3, 0x30, 0xd7, 0xe1, 0x68, 0x7e, 0x51, 0xc6, + 0x45, 0x72, 0xc1, 0x07, 0x01, 0x2b, 0x06, 0x22, 0xf2, 0x30, 0x12, 0xd6, 0x3e, 0x7f, 0xbe, 0x12, + 0xdd, 0x6d, 0xba, 0x5d, 0x94, 0xa5, 0x8e, 0x79, 0xbe, 0xfb, 0x17, 0x78, 0xff, 0x12, 0x38, 0x71, + 0xd4, 0xda, 0x43, 0xcd, 0x59, 0x13, 0xf0, 0x22, 0x9d, 0x67, 0xa5, 0x29, 0xd4, 0x97, 0x7d, 0xac, + 0x3b, 0x0a, 0xc4, 0x9a, 0xd0, 0x4b, 0xd1, 0x2e, 0xc7, 0xba, 0x7f, 0x1a, 0xd9, 0xe1, 0xa4, 0x04, + 0xcb, 0x71, 0xd3, 0xde, 0x0e, 0x41, 0x2c, 0xc7, 0x38, 0x09, 0x87, 0xc2, 0x41, 0x21, 0xe6, 0x79, + 0xd9, 0x31, 0x14, 0x00, 0x14, 0x1e, 0x0a, 0x6d, 0x58, 0xfb, 0x7c, 0x17, 0xfd, 0xb6, 0x3b, 0xfc, + 0xdc, 0xc6, 0xde, 0xa2, 0xc7, 0x14, 0xd6, 0xc4, 0xc3, 0xbe, 0xb8, 0x4d, 0x48, 0x1b, 0xcf, 0x72, + 0x8f, 0x4b, 0x96, 0xa4, 0xe5, 0x60, 0x15, 0xb7, 0xd1, 0xc8, 0x89, 0x84, 0x14, 0xe3, 0x60, 0x7c, + 0xdb, 0x9b, 0xe7, 0x69, 0x12, 0xb7, 0x0f, 0xba, 0xb5, 0xae, 0x11, 0x87, 0xe3, 0x9b, 0x8b, 0xc1, + 0x78, 0x5d, 0x2d, 0xf9, 0xea, 0x3f, 0xe3, 0x65, 0xce, 0xf1, 0x78, 0xed, 0x21, 0xe1, 0x78, 0x0d, + 0x51, 0x58, 0x9f, 0x11, 0x97, 0x47, 0x6c, 0x29, 0xe6, 0x44, 0xbc, 0x36, 0xe2, 0x70, 0x7d, 0x5c, + 0xcc, 0xe6, 0x84, 0xc6, 0xc3, 0x61, 0x26, 0x79, 0x91, 0xb1, 0x74, 0x3f, 0x65, 0xd3, 0x72, 0x40, + 0xc4, 0x18, 0x9f, 0x22, 0x72, 0x42, 0x9a, 0x46, 0x9a, 0xf1, 0xb0, 0xdc, 0x67, 0x0b, 0x51, 0x24, + 0x92, 0x6e, 0x46, 0x8b, 0x74, 0x36, 0xa3, 0x87, 0xa2, 0xde, 0x76, 0x8a, 0xf8, 0x2a, 0x59, 0xf0, + 0x49, 0xc0, 0x5b, 0x83, 0xf4, 0xf0, 0xe6, 0xa0, 0x48, 0xa7, 0x8d, 0xc4, 0xbc, 0x88, 0x39, 0xd9, + 0x69, 0xb5, 0xb8, 0xb3, 0xd3, 0x0c, 0xa6, 0x3d, 0xfc, 0xd5, 0x4a, 0xf4, 0x3b, 0xb5, 0xd4, 0x3d, + 0x7d, 0xde, 0x63, 0xe5, 0xd5, 0x85, 0x60, 0xc5, 0x64, 0xf0, 0x19, 0x66, 0x07, 0x45, 0x8d, 0xeb, + 0x67, 0xb7, 0x51, 0x81, 0xcd, 0x7a, 0x94, 0x94, 0xce, 0x8c, 0x43, 0x9b, 0xd5, 0x43, 0xc2, 0xcd, + 0x0a, 0x51, 0x18, 0x40, 0x94, 0xbc, 0x3e, 0x8a, 0x59, 0x25, 0xf5, 0xfd, 0xf3, 0x98, 0xb5, 0x4e, + 0x0e, 0xc6, 0xc7, 0x4a, 0xe8, 0x8f, 0x96, 0x2d, 0xca, 0x06, 0x3e, 0x62, 0x86, 0x7d, 0x71, 0xd2, + 0xb3, 0x99, 0x15, 0x61, 0xcf, 0xad, 0x99, 0x31, 0xec, 0x8b, 0x13, 0x9e, 0x9d, 0xb0, 0x16, 0xf2, + 0x8c, 0x84, 0xb6, 0x61, 0x5f, 0x1c, 0x66, 0x5f, 0x9a, 0x69, 0xd6, 0x85, 0x27, 0x01, 0x3b, 0x70, + 0x6d, 0xd8, 0xe8, 0xc5, 0x6a, 0x87, 0x7f, 0xb3, 0x12, 0x7d, 0xdf, 0x7a, 0x3c, 0x16, 0x93, 0xe4, + 0x72, 0x59, 0x43, 0x6f, 0x58, 0x3a, 0xe7, 0xe5, 0xe0, 0x19, 0x65, 0xad, 0xcd, 0x9a, 0x12, 0x3c, + 0xbf, 0x95, 0x0e, 0x9c, 0x3b, 0x3b, 0x79, 0x9e, 0x2e, 0xc7, 0x7c, 0x96, 0xa7, 0xe4, 0xdc, 0xf1, + 0x90, 0xf0, 0xdc, 0x81, 0x28, 0xcc, 0xca, 0xc7, 0xa2, 0xca, 0xf9, 0xd1, 0xac, 0x5c, 0x89, 0xc2, + 0x59, 0x79, 0x83, 0xc0, 0x5c, 0x69, 0x2c, 0x76, 0x45, 0x9a, 0xf2, 0x58, 0xb6, 0x9f, 0x60, 0x1b, + 0x4d, 0x4b, 0x84, 0x73, 0x25, 0x40, 0xda, 0xd3, 0x98, 0x66, 0x0f, 0xc9, 0x0a, 0xfe, 0x72, 0x79, + 0x94, 0x64, 0xd7, 0x03, 0x3c, 0x2d, 0xb0, 0x00, 0x71, 0x1a, 0x83, 0x82, 0x70, 0xaf, 0x7a, 0x9e, + 0x4d, 0x04, 0xbe, 0x57, 0xad, 0x24, 0xe1, 0xbd, 0xaa, 0x26, 0xa0, 0xc9, 0x33, 0x4e, 0x99, 0xac, + 0x24, 0x61, 0x93, 0x9a, 0xc0, 0x42, 0xa1, 0x3e, 0xb3, 0x27, 0x43, 0x21, 0x38, 0xa5, 0x5f, 0xeb, + 0xe4, 0xe0, 0x08, 0x6d, 0x36, 0xad, 0xfb, 0x5c, 0xc6, 0x57, 0xf8, 0x08, 0xf5, 0x90, 0xf0, 0x08, + 0x85, 0x28, 0xac, 0xd2, 0x58, 0x98, 0x4d, 0xf7, 0x2a, 0x3e, 0x3e, 0x5a, 0x1b, 0xee, 0xb5, 0x4e, + 0x0e, 0x6e, 0x23, 0x0f, 0x67, 0xaa, 0xcd, 0xd0, 0x41, 0x5e, 0xcb, 0xc2, 0xdb, 0x48, 0xc3, 0xc0, + 0xd2, 0xd7, 0x82, 0xaa, 0x39, 0xf1, 0xd2, 0x5b, 0x79, 0xb8, 0xf4, 0x1e, 0xa7, 0x9d, 0xfc, 0x8b, + 0xd9, 0xc6, 0xd5, 0xd2, 0x13, 0x51, 0xcd, 0x91, 0x37, 0x2c, 0x4d, 0x26, 0x4c, 0xf2, 0xb1, 0xb8, + 0xe6, 0x19, 0xbe, 0x63, 0xd2, 0xa5, 0xad, 0xf9, 0xa1, 0xa7, 0x10, 0xde, 0x31, 0x85, 0x15, 0xe1, + 0x38, 0xa9, 0xe9, 0xf3, 0x92, 0xef, 0xb2, 0x92, 0x88, 0x64, 0x1e, 0x12, 0x1e, 0x27, 0x10, 0x85, + 0xf9, 0x6a, 0x2d, 0x7f, 0xf5, 0x2e, 0xe7, 0x45, 0xc2, 0xb3, 0x98, 0xe3, 0xf9, 0x2a, 0xa4, 0xc2, + 0xf9, 0x2a, 0x42, 0xc3, 0xbd, 0xda, 0x1e, 0x93, 0xfc, 0xe5, 0x72, 0x9c, 0xcc, 0x78, 0x29, 0xd9, + 0x2c, 0xc7, 0xf7, 0x6a, 0x00, 0x0a, 0xef, 0xd5, 0xda, 0x70, 0xeb, 0x68, 0xc8, 0x04, 0xc4, 0xf6, + 0xc5, 0x17, 0x48, 0x04, 0x2e, 0xbe, 0x10, 0x28, 0x6c, 0x58, 0x0b, 0xa0, 0x87, 0xc3, 0x2d, 0x2b, + 0xc1, 0xc3, 0x61, 0x9a, 0x6e, 0x1d, 0xb8, 0x19, 0x66, 0x54, 0x4d, 0xcd, 0x8e, 0xa2, 0x8f, 0xdc, + 0x29, 0xba, 0xd1, 0x8b, 0xc5, 0x4f, 0xf8, 0xce, 0x78, 0xca, 0xd4, 0xb2, 0x15, 0x38, 0x46, 0x6b, + 0x98, 0x3e, 0x27, 0x7c, 0x0e, 0xab, 0x1d, 0xfe, 0xc5, 0x4a, 0xf4, 0x09, 0xe6, 0xf1, 0x75, 0xae, + 0xfc, 0x3e, 0xed, 0xb6, 0x55, 0x93, 0xc4, 0xcd, 0x9e, 0xb0, 0x86, 0x2e, 0xc3, 0x9f, 0x44, 0x1f, + 0x37, 0x22, 0x7b, 0xf1, 0x47, 0x17, 0xc0, 0x4f, 0xda, 0x4c, 0xf9, 0x21, 0x67, 0xdc, 0x6f, 0xf7, + 0xe6, 0xed, 0x7e, 0xc8, 0x2f, 0x57, 0x09, 0xf6, 0x43, 0xc6, 0x86, 0x16, 0x13, 0xfb, 0x21, 0x04, + 0xb3, 0xb3, 0xd3, 0xad, 0xde, 0xdb, 0x44, 0x5e, 0xa9, 0x7c, 0x0b, 0xcc, 0x4e, 0xaf, 0xac, 0x06, + 0x22, 0x66, 0x27, 0x09, 0xc3, 0x8c, 0xa4, 0x01, 0xab, 0xb9, 0x89, 0xc5, 0x72, 0x63, 0xc8, 0x9d, + 0x99, 0xeb, 0xdd, 0x20, 0x1c, 0xaf, 0x8d, 0x58, 0x6f, 0x7d, 0x9e, 0x84, 0x2c, 0x80, 0xed, 0xcf, + 0x46, 0x2f, 0x56, 0x3b, 0xfc, 0xb3, 0xe8, 0x7b, 0xad, 0x8a, 0xed, 0x73, 0x26, 0xe7, 0x05, 0x9f, + 0x0c, 0xb6, 0x3b, 0xca, 0xdd, 0x80, 0xc6, 0xf5, 0xd3, 0xfe, 0x0a, 0xad, 0x1c, 0xbd, 0xe1, 0xea, + 0x61, 0x65, 0xca, 0xf0, 0x2c, 0x64, 0xd2, 0x67, 0x83, 0x39, 0x3a, 0xad, 0xd3, 0xda, 0x66, 0xbb, + 0xa3, 0x6b, 0x67, 0xc1, 0x92, 0x54, 0x3d, 0xa4, 0xfb, 0x2c, 0x64, 0xd4, 0x43, 0x83, 0xdb, 0x6c, + 0x52, 0xa5, 0x15, 0x99, 0xd5, 0x1c, 0x77, 0xb6, 0x67, 0x9b, 0x74, 0x24, 0x40, 0x76, 0x67, 0x5b, + 0x3d, 0x69, 0xed, 0x56, 0x36, 0x4b, 0x5e, 0xf5, 0xb3, 0x3b, 0xc8, 0x31, 0xaf, 0x5a, 0x15, 0x19, + 0xe9, 0x5b, 0x3d, 0x69, 0xed, 0xf5, 0x4f, 0xa3, 0x8f, 0xdb, 0x5e, 0xf5, 0x42, 0xb4, 0xdd, 0x69, + 0x0a, 0xac, 0x45, 0x4f, 0xfb, 0x2b, 0xd8, 0x2d, 0xcd, 0x57, 0x49, 0x29, 0x45, 0xb1, 0x1c, 0x5d, + 0x89, 0x9b, 0xe6, 0x42, 0xbd, 0x3f, 0x5b, 0x35, 0x30, 0x74, 0x08, 0x62, 0x4b, 0x83, 0x93, 0x2d, + 0x57, 0xf6, 0xe2, 0x7d, 0x49, 0xb8, 0x72, 0x88, 0x0e, 0x57, 0x3e, 0x69, 0x63, 0x55, 0x53, 0x2b, + 0xfb, 0x96, 0xc0, 0x1a, 0x5e, 0xd4, 0xf6, 0x9b, 0x02, 0xeb, 0xdd, 0xa0, 0xcd, 0x58, 0xb4, 0x78, 0x2f, 0xb9, 0xbc, 0x34, 0x75, 0xc2, 0x4b, 0xea, 0x22, 0x44, 0xc6, 0x42, 0xa0, 0x36, 0xe9, 0xde, 0x4f, 0x52, 0xae, 0x4e, 0xf4, 0x5f, 0x5f, 0x5e, 0xa6, 0x82, 0x4d, 0x40, 0xd2, 0x5d, 0x89, 0x87, 0xae, 0x9c, 0x48, 0xba, 0x31, 0xce, 0x3e, 0x23, 0xae, 0xa4, 0x67, 0x3c, 0x16, 0x59, 0x9c, 0xa4, @@ -180,7 +181,7 @@ var fileDescriptor_93a29dc403579097 = []byte{ 0x3c, 0x57, 0xc6, 0xef, 0xb5, 0xb5, 0x6a, 0x09, 0xb1, 0xf7, 0xf4, 0x09, 0xbb, 0x87, 0xaa, 0x7e, 0xdf, 0x13, 0x37, 0x99, 0x32, 0xfa, 0xa0, 0xad, 0xd2, 0xc8, 0x88, 0x3d, 0x14, 0x64, 0xb4, 0xe1, 0x9f, 0x44, 0xff, 0x5f, 0x19, 0x2e, 0x44, 0x3e, 0xb8, 0x83, 0x28, 0x14, 0xce, 0x5d, 0xbd, 0xbb, - 0xa4, 0xdc, 0x5e, 0x39, 0x35, 0x63, 0xe3, 0xbc, 0x64, 0x53, 0x3e, 0x78, 0x48, 0xf4, 0xb8, 0x92, + 0xa4, 0xdc, 0x5e, 0x39, 0x35, 0x63, 0xe3, 0xbc, 0x64, 0x53, 0x78, 0xe5, 0xd4, 0xf6, 0xb8, 0x92, 0x12, 0x57, 0x4e, 0xdb, 0x94, 0x3f, 0x2a, 0x4e, 0xc4, 0x44, 0x5b, 0x47, 0x6a, 0x68, 0x84, 0xa1, 0x51, 0xe1, 0x42, 0x36, 0x99, 0x39, 0x61, 0x8b, 0x64, 0x6a, 0x16, 0x9c, 0x3a, 0x6e, 0x95, 0x20, 0x99, 0xb1, 0xcc, 0xd0, 0x81, 0x88, 0x64, 0x86, 0x84, 0xb5, 0xcf, 0x7f, 0x5e, 0x89, 0xee, 0x59, @@ -211,7 +212,7 @@ var fileDescriptor_93a29dc403579097 = []byte{ 0x04, 0x62, 0x5c, 0x1c, 0x8b, 0x05, 0x1f, 0x8b, 0x57, 0xef, 0x92, 0x52, 0x26, 0xd9, 0x54, 0xaf, 0xdc, 0xcf, 0x09, 0x4b, 0x18, 0x4c, 0xbc, 0x04, 0xd2, 0xa9, 0x64, 0x13, 0x08, 0x50, 0x96, 0x13, 0x7e, 0x83, 0x26, 0x10, 0xd0, 0xa2, 0xe1, 0x88, 0x04, 0x22, 0xc4, 0xdb, 0x73, 0x14, 0xe3, 0x5c, - 0xbf, 0x29, 0x3b, 0x16, 0x4d, 0x2e, 0x47, 0x59, 0x83, 0x20, 0xb1, 0x95, 0x0d, 0x2a, 0xd8, 0xfd, + 0xbf, 0x88, 0x3b, 0x16, 0x4d, 0x2e, 0x47, 0x59, 0x83, 0x20, 0xb1, 0x95, 0x0d, 0x2a, 0xd8, 0xfd, 0xa5, 0xf1, 0x6f, 0xa7, 0xd8, 0x3a, 0x61, 0xa7, 0x3d, 0xcd, 0x1e, 0xf7, 0x20, 0x11, 0x57, 0xf6, 0x1e, 0x00, 0xe5, 0xaa, 0x7d, 0x0d, 0xe0, 0x71, 0x0f, 0xd2, 0x39, 0x93, 0x71, 0xab, 0xf5, 0x92, 0xc5, 0xd7, 0xd3, 0x42, 0xcc, 0xb3, 0xc9, 0xae, 0x48, 0x45, 0x01, 0xce, 0x64, 0xbc, 0x52, 0x03, @@ -240,21 +241,21 @@ var fileDescriptor_93a29dc403579097 = []byte{ 0x3e, 0xe0, 0x5b, 0xef, 0x10, 0x3a, 0x7d, 0x83, 0xad, 0xc2, 0x76, 0x6f, 0x3e, 0xe0, 0x5b, 0xbf, 0x03, 0xdd, 0xe9, 0x1b, 0xbc, 0x08, 0xbd, 0xdd, 0x9b, 0xd7, 0xbe, 0xff, 0xb2, 0x99, 0xb8, 0xae, 0xf3, 0x2a, 0x0f, 0x8b, 0x65, 0xb2, 0xe0, 0x58, 0x3a, 0xe9, 0xdb, 0x33, 0x68, 0x28, 0x9d, 0xa4, - 0x55, 0x9c, 0x0f, 0xe7, 0x60, 0xa5, 0x38, 0x15, 0x65, 0xa2, 0x1e, 0xd2, 0x3f, 0xef, 0x61, 0xb4, + 0x55, 0x9c, 0xef, 0xf2, 0x60, 0xa5, 0x38, 0x15, 0x65, 0xa2, 0x1e, 0xd2, 0x3f, 0xef, 0x61, 0xb4, 0x81, 0x43, 0x9b, 0xa6, 0x90, 0x92, 0x7d, 0xdc, 0xe8, 0xa1, 0xf6, 0x16, 0xf3, 0x66, 0xc0, 0x5e, 0xfb, 0x32, 0xf3, 0x56, 0x4f, 0xda, 0x3e, 0xf8, 0xf3, 0x18, 0xf7, 0x89, 0x63, 0xa8, 0x57, 0xd1, 0x87, 0x8e, 0x4f, 0xfb, 0x2b, 0x68, 0xf7, 0x7f, 0xdd, 0xec, 0x2b, 0xa0, 0x7f, 0x3d, 0x09, 0x9e, 0xf5, 0xb1, 0x08, 0x26, 0xc2, 0xf3, 0x5b, 0xe9, 0xe8, 0x82, 0xfc, 0x7d, 0xb3, 0x81, 0x6e, 0x50, 0xf5, 0x2e, 0x87, 0x7a, 0xf7, 0x4f, 0xcf, 0x89, 0x50, 0xb7, 0x5a, 0x18, 0xce, 0x8c, 0x17, 0xb7, - 0xd4, 0x72, 0x3e, 0xa3, 0xe4, 0xc1, 0xfa, 0x9d, 0x43, 0xa7, 0x3c, 0x21, 0xcb, 0x0e, 0x0d, 0x0b, + 0xd4, 0x72, 0xbe, 0xd2, 0xe4, 0xc1, 0xfa, 0x9d, 0x43, 0xa7, 0x3c, 0x21, 0xcb, 0x0e, 0x0d, 0x0b, 0xf4, 0xc5, 0x6d, 0xd5, 0xa8, 0xb9, 0xe2, 0xc0, 0xea, 0xab, 0x0c, 0xcf, 0x7b, 0x1a, 0xf6, 0xbe, 0xd3, 0xf0, 0xf9, 0xed, 0x94, 0x74, 0x59, 0xfe, 0x63, 0x25, 0x7a, 0xe4, 0xb1, 0xf6, 0x79, 0x02, - 0x38, 0xf5, 0xf8, 0x71, 0xc0, 0x3e, 0xa5, 0x64, 0x0a, 0xf7, 0xbb, 0xbf, 0x9c, 0xb2, 0xfd, 0xe6, - 0x90, 0xa7, 0xb2, 0x9f, 0xa4, 0x92, 0x17, 0xed, 0x6f, 0x0e, 0xf9, 0x76, 0x6b, 0x6a, 0x48, 0x7f, - 0x73, 0x28, 0x80, 0x3b, 0xdf, 0x1c, 0x42, 0x3c, 0xa3, 0xdf, 0x1c, 0x42, 0xad, 0x05, 0xbf, 0x39, + 0x38, 0xf5, 0xf8, 0x71, 0xc0, 0x3e, 0xa5, 0x64, 0x0a, 0xf7, 0xbb, 0xbf, 0x9c, 0xb2, 0xfd, 0xa4, + 0x91, 0xa7, 0xb2, 0x9f, 0xa4, 0x92, 0x17, 0xed, 0x4f, 0x1a, 0xf9, 0x76, 0x6b, 0x6a, 0x48, 0x7f, + 0xd2, 0x28, 0x80, 0x3b, 0x9f, 0x34, 0x42, 0x3c, 0xa3, 0x9f, 0x34, 0x42, 0xad, 0x05, 0x3f, 0x69, 0x14, 0xd6, 0xa0, 0xc2, 0x7b, 0x53, 0x84, 0xfa, 0xdc, 0xba, 0x97, 0x45, 0xff, 0x18, 0xfb, 0xd9, 0x6d, 0x54, 0x88, 0x05, 0xae, 0xe6, 0xd4, 0x3d, 0xb7, 0x1e, 0x6d, 0xea, 0xdd, 0x75, 0xdb, 0xee, - 0xcd, 0x6b, 0xdf, 0x3f, 0xd5, 0xbb, 0x1b, 0x13, 0xce, 0x45, 0xa1, 0xbe, 0x37, 0xb5, 0x11, 0x0a, + 0xcd, 0x6b, 0xdf, 0x3f, 0xd5, 0xbb, 0x1b, 0x13, 0xce, 0x45, 0xa1, 0x3e, 0x67, 0xb5, 0x11, 0x0a, 0xcf, 0x95, 0x05, 0xb7, 0xe7, 0x37, 0xfb, 0xc1, 0x44, 0x75, 0x2b, 0x42, 0x77, 0xfa, 0xb0, 0xcb, 0x10, 0xe8, 0xf2, 0xed, 0xde, 0x3c, 0xb1, 0x8c, 0xd4, 0xbe, 0xeb, 0xde, 0xee, 0x61, 0xcc, 0xef, 0xeb, 0xa7, 0xfd, 0x15, 0xb4, 0xfb, 0x85, 0x4e, 0x1b, 0x5d, 0xf7, 0xaa, 0x9f, 0xb7, 0xba, 0x4c, @@ -314,7 +315,7 @@ var fileDescriptor_93a29dc403579097 = []byte{ 0x89, 0xa5, 0xa4, 0x05, 0x81, 0x80, 0xd4, 0x4c, 0x83, 0x29, 0x1a, 0x90, 0x8c, 0x34, 0x18, 0x90, 0x5c, 0xca, 0x06, 0x8a, 0xc3, 0x2c, 0x91, 0x09, 0x4b, 0x47, 0x5c, 0x9e, 0xb2, 0x82, 0xcd, 0xb8, 0xe4, 0x05, 0x0c, 0x14, 0x1a, 0x19, 0x7a, 0x0c, 0x11, 0x28, 0x28, 0x56, 0x3b, 0xfc, 0xbd, 0xe8, - 0xc3, 0x6a, 0xdd, 0xe7, 0x99, 0xfe, 0x33, 0x1b, 0xaf, 0xd4, 0xdf, 0xe7, 0x19, 0x7c, 0x64, 0x6c, + 0xc3, 0x6a, 0xdd, 0xe7, 0x99, 0xfe, 0x2b, 0x1e, 0xaf, 0xd4, 0x9f, 0xff, 0x19, 0x7c, 0x64, 0x6c, 0x8c, 0x64, 0xc1, 0xd9, 0xac, 0xb1, 0xfd, 0x81, 0xf9, 0x5d, 0x81, 0x4f, 0x57, 0xaa, 0xf1, 0x7c, 0x22, 0x64, 0x72, 0x59, 0x6d, 0xb3, 0xf5, 0x1b, 0x44, 0x60, 0x3c, 0xbb, 0xe2, 0x61, 0xe0, 0x5b, 0x14, 0x18, 0x67, 0xe3, 0xb4, 0x2b, 0x3d, 0xe3, 0x79, 0x0a, 0xe3, 0xb4, 0xa7, 0xad, 0x00, 0x22, @@ -324,7 +325,7 @@ var fileDescriptor_93a29dc403579097 = []byte{ 0x02, 0x87, 0xe5, 0x09, 0x9b, 0x71, 0xf5, 0x65, 0x0d, 0xb0, 0x12, 0x38, 0x46, 0x1c, 0x88, 0x58, 0x09, 0x48, 0xd8, 0x79, 0xbf, 0xcb, 0x32, 0x67, 0x7c, 0x5a, 0x8d, 0xb0, 0xe2, 0x94, 0x2d, 0x67, 0x3c, 0x93, 0xda, 0x24, 0x38, 0x93, 0x77, 0x4c, 0xe2, 0x3c, 0x71, 0x26, 0xdf, 0x47, 0xcf, 0x09, - 0x4d, 0x5e, 0xc3, 0x9f, 0x8a, 0x42, 0xd6, 0x7f, 0x44, 0xe7, 0xbc, 0x48, 0x41, 0x68, 0xf2, 0x1b, + 0x4d, 0x5e, 0xc3, 0x9f, 0x8a, 0x42, 0xd6, 0x7f, 0xa3, 0xe7, 0xbc, 0x48, 0x41, 0x68, 0xf2, 0x1b, 0xd5, 0x23, 0x89, 0xd0, 0x14, 0xd6, 0x70, 0xbe, 0x3e, 0xef, 0x95, 0xe1, 0x0d, 0x2f, 0xcc, 0x38, 0x79, 0x35, 0x63, 0x49, 0xaa, 0x47, 0xc3, 0x8f, 0x02, 0xb6, 0x09, 0x1d, 0xe2, 0xeb, 0xf3, 0x7d, 0x75, 0x9d, 0xef, 0xf5, 0x87, 0x4b, 0x08, 0x1e, 0x11, 0x74, 0xd8, 0x27, 0x1e, 0x11, 0x74, 0x6b, @@ -333,13 +334,13 @@ var fileDescriptor_93a29dc403579097 = []byte{ 0xbd, 0x63, 0xa7, 0x21, 0x88, 0xd4, 0x00, 0x27, 0x31, 0x57, 0x07, 0x5c, 0x8e, 0x93, 0x2a, 0xf4, 0xaf, 0x07, 0xda, 0x4d, 0x11, 0xdd, 0xae, 0x1c, 0xd2, 0xf9, 0x46, 0x2b, 0x6c, 0xd6, 0x9d, 0x3c, 0x1f, 0x55, 0xab, 0xea, 0x19, 0x8f, 0x79, 0x92, 0xcb, 0xc1, 0x8b, 0x70, 0x5b, 0x01, 0x9c, 0xb8, - 0x68, 0xd1, 0x43, 0xcd, 0x79, 0x7c, 0x5f, 0xc5, 0x92, 0x51, 0xfd, 0xd7, 0xe5, 0xce, 0x4b, 0x5e, + 0x68, 0xd1, 0x43, 0xcd, 0x79, 0x7c, 0x5f, 0xc5, 0x92, 0x51, 0xfd, 0xc7, 0xeb, 0xce, 0x4b, 0x5e, 0xe8, 0x44, 0xe3, 0x80, 0x4b, 0x30, 0x3b, 0x1d, 0x6e, 0xe8, 0x80, 0x55, 0x45, 0x89, 0xd9, 0x19, 0xd6, 0xb0, 0x87, 0x7d, 0x0e, 0x77, 0xc6, 0x4b, 0x91, 0x2e, 0xb8, 0xba, 0x6f, 0xb8, 0x49, 0x1a, 0x73, 0x28, 0xe2, 0xb0, 0x8f, 0xa6, 0x6d, 0xb6, 0xd6, 0x76, 0xbb, 0x93, 0x2d, 0x0f, 0xe1, 0x95, 0x09, 0xc4, 0x92, 0xc2, 0x88, 0x6c, 0x2d, 0x80, 0x3b, 0x87, 0xe1, 0x85, 0x60, 0x93, 0x98, 0x95, 0xf2, 0x94, 0x2d, 0x53, 0xc1, 0x26, 0x6a, 0x5d, 0x87, 0x87, 0xe1, 0x0d, 0x33, 0x74, 0x21, 0xea, - 0x30, 0x9c, 0x82, 0xdd, 0xec, 0x4c, 0xfd, 0xd1, 0x3c, 0x7d, 0x97, 0x13, 0x66, 0x67, 0xaa, 0xbc, + 0x30, 0x9c, 0x82, 0xdd, 0xec, 0x4c, 0xfd, 0x4d, 0x3e, 0x7d, 0x97, 0x13, 0x66, 0x67, 0xaa, 0xbc, 0xf0, 0x1e, 0xe7, 0xc3, 0x30, 0x64, 0xdf, 0x41, 0xab, 0x45, 0x2a, 0x0d, 0xb9, 0x87, 0xe9, 0x78, 0x09, 0xc8, 0xfd, 0x00, 0x61, 0xbf, 0x4b, 0x51, 0xff, 0xde, 0xfc, 0xdd, 0x17, 0xa9, 0xbf, 0x64, 0xbd, 0x89, 0xe9, 0xba, 0xd0, 0xd0, 0xfd, 0xc0, 0xdd, 0x56, 0x4f, 0xda, 0xa6, 0x99, 0xbb, 0x57, @@ -353,10 +354,10 @@ var fileDescriptor_93a29dc403579097 = []byte{ 0xec, 0x13, 0x28, 0xd6, 0xef, 0x3a, 0x73, 0xee, 0x75, 0xc4, 0x4a, 0x5b, 0x39, 0xa4, 0xeb, 0x50, 0x30, 0xd4, 0x75, 0x94, 0x82, 0xdf, 0xa4, 0xee, 0xd1, 0x1a, 0xd2, 0xa4, 0xd8, 0xb9, 0xda, 0x6a, 0x17, 0x66, 0xe3, 0x92, 0xd9, 0x4f, 0xaa, 0x2b, 0x4b, 0xf8, 0x17, 0xfc, 0x6b, 0x21, 0x11, 0x97, - 0x5a, 0x50, 0x6d, 0xfb, 0xe5, 0xfd, 0xff, 0xfc, 0xe6, 0xce, 0xca, 0x2f, 0xbe, 0xb9, 0xb3, 0xf2, - 0xdf, 0xdf, 0xdc, 0x59, 0xf9, 0xf9, 0xb7, 0x77, 0xde, 0xfb, 0xc5, 0xb7, 0x77, 0xde, 0xfb, 0xaf, - 0x6f, 0xef, 0xbc, 0xf7, 0xf5, 0xfb, 0xfa, 0x8f, 0xa9, 0x5e, 0xfc, 0x3f, 0xf5, 0x27, 0x51, 0x9f, - 0xff, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x39, 0xd6, 0xda, 0x85, 0x70, 0x75, 0x00, 0x00, + 0x5a, 0x50, 0x6d, 0xfb, 0xe5, 0xfd, 0xff, 0xfa, 0xe6, 0xce, 0xca, 0x2f, 0xbe, 0xb9, 0xb3, 0xf2, + 0x3f, 0xdf, 0xdc, 0x59, 0xf9, 0xf9, 0xb7, 0x77, 0xde, 0xfb, 0xc5, 0xb7, 0x77, 0xde, 0xfb, 0xef, + 0x6f, 0xef, 0xbc, 0xf7, 0xf5, 0xfb, 0xfa, 0x6f, 0xb5, 0x5e, 0xfc, 0x3f, 0xf5, 0x17, 0x57, 0x9f, + 0xff, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x20, 0x36, 0x1c, 0xcb, 0xcf, 0x75, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -398,6 +399,7 @@ type ClientCommandsClient interface { // Account // *** AccountRecover(ctx context.Context, in *pb.RpcAccountRecoverRequest, opts ...grpc.CallOption) (*pb.RpcAccountRecoverResponse, error) + AccountMigrate(ctx context.Context, in *pb.RpcAccountMigrateRequest, opts ...grpc.CallOption) (*pb.RpcAccountMigrateResponse, error) AccountCreate(ctx context.Context, in *pb.RpcAccountCreateRequest, opts ...grpc.CallOption) (*pb.RpcAccountCreateResponse, error) AccountDelete(ctx context.Context, in *pb.RpcAccountDeleteRequest, opts ...grpc.CallOption) (*pb.RpcAccountDeleteResponse, error) AccountRevertDeletion(ctx context.Context, in *pb.RpcAccountRevertDeletionRequest, opts ...grpc.CallOption) (*pb.RpcAccountRevertDeletionResponse, error) @@ -901,6 +903,15 @@ func (c *clientCommandsClient) AccountRecover(ctx context.Context, in *pb.RpcAcc return out, nil } +func (c *clientCommandsClient) AccountMigrate(ctx context.Context, in *pb.RpcAccountMigrateRequest, opts ...grpc.CallOption) (*pb.RpcAccountMigrateResponse, error) { + out := new(pb.RpcAccountMigrateResponse) + err := c.cc.Invoke(ctx, "/anytype.ClientCommands/AccountMigrate", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *clientCommandsClient) AccountCreate(ctx context.Context, in *pb.RpcAccountCreateRequest, opts ...grpc.CallOption) (*pb.RpcAccountCreateResponse, error) { out := new(pb.RpcAccountCreateResponse) err := c.cc.Invoke(ctx, "/anytype.ClientCommands/AccountCreate", in, out, opts...) @@ -3194,6 +3205,7 @@ type ClientCommandsServer interface { // Account // *** AccountRecover(context.Context, *pb.RpcAccountRecoverRequest) *pb.RpcAccountRecoverResponse + AccountMigrate(context.Context, *pb.RpcAccountMigrateRequest) *pb.RpcAccountMigrateResponse AccountCreate(context.Context, *pb.RpcAccountCreateRequest) *pb.RpcAccountCreateResponse AccountDelete(context.Context, *pb.RpcAccountDeleteRequest) *pb.RpcAccountDeleteResponse AccountRevertDeletion(context.Context, *pb.RpcAccountRevertDeletionRequest) *pb.RpcAccountRevertDeletionResponse @@ -3567,6 +3579,9 @@ func (*UnimplementedClientCommandsServer) WorkspaceExport(ctx context.Context, r func (*UnimplementedClientCommandsServer) AccountRecover(ctx context.Context, req *pb.RpcAccountRecoverRequest) *pb.RpcAccountRecoverResponse { return nil } +func (*UnimplementedClientCommandsServer) AccountMigrate(ctx context.Context, req *pb.RpcAccountMigrateRequest) *pb.RpcAccountMigrateResponse { + return nil +} func (*UnimplementedClientCommandsServer) AccountCreate(ctx context.Context, req *pb.RpcAccountCreateRequest) *pb.RpcAccountCreateResponse { return nil } @@ -4697,6 +4712,24 @@ func _ClientCommands_AccountRecover_Handler(srv interface{}, ctx context.Context return interceptor(ctx, in, info, handler) } +func _ClientCommands_AccountMigrate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(pb.RpcAccountMigrateRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ClientCommandsServer).AccountMigrate(ctx, in), nil + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/anytype.ClientCommands/AccountMigrate", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ClientCommandsServer).AccountMigrate(ctx, req.(*pb.RpcAccountMigrateRequest)), nil + } + return interceptor(ctx, in, info, handler) +} + func _ClientCommands_AccountCreate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(pb.RpcAccountCreateRequest) if err := dec(in); err != nil { @@ -9271,6 +9304,10 @@ var _ClientCommands_serviceDesc = grpc.ServiceDesc{ MethodName: "AccountRecover", Handler: _ClientCommands_AccountRecover_Handler, }, + { + MethodName: "AccountMigrate", + Handler: _ClientCommands_AccountMigrate_Handler, + }, { MethodName: "AccountCreate", Handler: _ClientCommands_AccountCreate_Handler, diff --git a/space/spacecore/storage/migrator/migrationprocess.go b/space/spacecore/storage/migrator/migrationprocess.go new file mode 100644 index 000000000..dfd54d618 --- /dev/null +++ b/space/spacecore/storage/migrator/migrationprocess.go @@ -0,0 +1,4 @@ +package migrator + +type migrationProcess struct { +} diff --git a/space/spacecore/storage/migrator/migrator.go b/space/spacecore/storage/migrator/migrator.go new file mode 100644 index 000000000..8ddb6d7b3 --- /dev/null +++ b/space/spacecore/storage/migrator/migrator.go @@ -0,0 +1,50 @@ +package migrator + +import ( + "context" + "time" + + "github.com/anyproto/any-sync/app" + + "github.com/anyproto/anytype-heart/core/block/process" + "github.com/anyproto/anytype-heart/pb" +) + +const CName = "client.storage.migrator" + +type migrator struct { + processService process.Service +} + +func New() app.ComponentRunnable { + return &migrator{} +} + +func (m *migrator) Init(a *app.App) (err error) { + m.processService = app.MustComponent[process.Service](a) + return nil +} + +func (m *migrator) Name() (name string) { + return CName +} + +func (m *migrator) Run(ctx context.Context) (err error) { + progress := process.NewProgress(&pb.ModelProcessMessageOfMigration{Migration: &pb.ModelProcessMigration{}}) + err = m.processService.Add(progress) + if err != nil { + return err + } + progress.SetProgressMessage("Migration started") + progress.SetTotal(1000) + for i := 0; i < 1000; i++ { + progress.AddDone(1) + time.Sleep(10 * time.Millisecond) + } + progress.Finish(nil) + return nil +} + +func (m *migrator) Close(ctx context.Context) (err error) { + return nil +} From e2e6e97de06f90c95bd3c917555357ab0ddf087c Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Tue, 7 Jan 2025 17:47:49 +0100 Subject: [PATCH 110/279] GO-4812 Synchronize migrations --- core/application/account_select.go | 3 + core/application/account_store_migrate.go | 109 ++++++++++++++++------ 2 files changed, 86 insertions(+), 26 deletions(-) diff --git a/core/application/account_select.go b/core/application/account_select.go index 4cb98371d..ff4ca2894 100644 --- a/core/application/account_select.go +++ b/core/application/account_select.go @@ -3,6 +3,7 @@ package application import ( "context" "errors" + "fmt" "os" "path/filepath" "runtime" @@ -41,8 +42,10 @@ func (s *Service) AccountSelect(ctx context.Context, req *pb.RpcAccountSelectReq if req.Id == "" { return nil, ErrEmptyAccountID } + fmt.Println("[x]: select account") curMigration := s.migrationManager.getMigration(req.RootPath, req.Id) if !curMigration.successful() { + fmt.Println("[x]: failed to start") return nil, ErrAccountStoreIsNotMigrated } diff --git a/core/application/account_store_migrate.go b/core/application/account_store_migrate.go index dfd0ee230..e251e0c7c 100644 --- a/core/application/account_store_migrate.go +++ b/core/application/account_store_migrate.go @@ -3,8 +3,8 @@ package application import ( "context" "errors" + "fmt" "sync" - "sync/atomic" "github.com/anyproto/any-sync/app" @@ -13,63 +13,98 @@ import ( "github.com/anyproto/anytype-heart/space/spacecore/storage/migrator" ) -var ErrAccountNotFound = errors.New("account not found") +var ( + ErrAccountNotFound = errors.New("account not found") + ErrMigrationRunning = errors.New("migration is running") +) type migration struct { - isStarted atomic.Bool - isSuccess atomic.Bool - service *Service - err error - done chan struct{} + mx sync.Mutex + isStarted bool + isFinished bool + manager *migrationManager + err error + rootPath string + id string + done chan struct{} } -func newMigration(s *Service) *migration { +func newMigration(m *migrationManager, rootPath, id string) *migration { return &migration{ - done: make(chan struct{}), - service: s, + done: make(chan struct{}), + rootPath: rootPath, + id: id, + manager: m, } } -func newSuccessfulMigration(s *Service) *migration { - m := newMigration(s) - m.isSuccess.Store(true) - close(m.done) +func newSuccessfulMigration(manager *migrationManager, rootPath, id string) *migration { + m := newMigration(manager, rootPath, id) + m.setFinished(nil, false) return m } +func (m *migration) setFinished(err error, notify bool) { + m.mx.Lock() + defer m.mx.Unlock() + m.isFinished = true + m.err = err + close(m.done) + if notify { + m.manager.setMigrationRunning(m.id, false) + } +} + func (m *migration) wait() error { - if !m.isStarted.CompareAndSwap(false, true) { + fmt.Println("[x]: started") + m.mx.Lock() + if !m.manager.setMigrationRunning(m.id, true) { + m.mx.Unlock() + return ErrMigrationRunning + } + if !m.isStarted { + m.isStarted = true + } else { + m.mx.Unlock() <-m.done return m.err } + m.mx.Unlock() a := &app.App{} - a.Register(m.service.eventSender). + a.Register(m.manager.service.eventSender). Register(process.New()). Register(migrator.New()) err := a.Start(context.Background()) if err != nil { - m.err = err - close(m.done) + m.setFinished(err, true) return err } err = a.Close(context.Background()) if err != nil { - m.err = err - close(m.done) + m.setFinished(err, true) return err } - close(m.done) - m.isSuccess.Store(true) + m.setFinished(nil, true) + fmt.Println("[x]: finished") return nil } func (m *migration) successful() bool { - return m.isSuccess.Load() + m.mx.Lock() + defer m.mx.Unlock() + return m.isFinished && m.err == nil +} + +func (m *migration) finished() bool { + m.mx.Lock() + defer m.mx.Unlock() + return m.isFinished } type migrationManager struct { - migrations map[string]*migration - service *Service + migrations map[string]*migration + service *Service + runningMigration string sync.Mutex } @@ -79,6 +114,23 @@ func newMigrationManager(s *Service) *migrationManager { } } +func (m *migrationManager) setMigrationRunning(id string, isRunning bool) bool { + m.Lock() + defer m.Unlock() + if (m.runningMigration != "" && m.runningMigration != id) && isRunning { + return false + } + if m.runningMigration == "" && !isRunning { + panic("migration is not running") + } + if isRunning { + m.runningMigration = id + } else { + m.runningMigration = "" + } + return true +} + func (m *migrationManager) getMigration(rootPath, id string) *migration { m.Lock() defer m.Unlock() @@ -87,11 +139,16 @@ func (m *migrationManager) getMigration(rootPath, id string) *migration { } if m.migrations[id] == nil { // TODO: [store] add successful migration if we don't need a migration - m.migrations[id] = newMigration(m.service) + m.migrations[id] = newMigration(m, rootPath, id) + } + if m.migrations[id].finished() && !m.migrations[id].successful() { + // resetting migration + m.migrations[id] = newMigration(m, rootPath, id) } return m.migrations[id] } func (s *Service) AccountMigrate(ctx context.Context, req *pb.RpcAccountMigrateRequest) error { + fmt.Println("[x]: migrate account") return s.migrationManager.getMigration(req.RootPath, req.Id).wait() } From 856beaf1ae51e948789461b72252448647e336b2 Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Tue, 7 Jan 2025 18:41:10 +0100 Subject: [PATCH 111/279] GO-4812 Add concurrent migration logic --- core/application/account_select.go | 6 +++--- core/application/account_store_migrate.go | 10 ++++++---- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/core/application/account_select.go b/core/application/account_select.go index ff4ca2894..cf61d254c 100644 --- a/core/application/account_select.go +++ b/core/application/account_select.go @@ -3,7 +3,6 @@ package application import ( "context" "errors" - "fmt" "os" "path/filepath" "runtime" @@ -42,12 +41,13 @@ func (s *Service) AccountSelect(ctx context.Context, req *pb.RpcAccountSelectReq if req.Id == "" { return nil, ErrEmptyAccountID } - fmt.Println("[x]: select account") curMigration := s.migrationManager.getMigration(req.RootPath, req.Id) if !curMigration.successful() { - fmt.Println("[x]: failed to start") return nil, ErrAccountStoreIsNotMigrated } + if s.migrationManager.isRunning() { + return nil, ErrMigrationRunning + } if runtime.GOOS != "android" && runtime.GOOS != "ios" { s.traceRecorder.start() diff --git a/core/application/account_store_migrate.go b/core/application/account_store_migrate.go index e251e0c7c..2cad6aca3 100644 --- a/core/application/account_store_migrate.go +++ b/core/application/account_store_migrate.go @@ -3,7 +3,6 @@ package application import ( "context" "errors" - "fmt" "sync" "github.com/anyproto/any-sync/app" @@ -56,7 +55,6 @@ func (m *migration) setFinished(err error, notify bool) { } func (m *migration) wait() error { - fmt.Println("[x]: started") m.mx.Lock() if !m.manager.setMigrationRunning(m.id, true) { m.mx.Unlock() @@ -85,7 +83,6 @@ func (m *migration) wait() error { return err } m.setFinished(nil, true) - fmt.Println("[x]: finished") return nil } @@ -131,6 +128,12 @@ func (m *migrationManager) setMigrationRunning(id string, isRunning bool) bool { return true } +func (m *migrationManager) isRunning() bool { + m.Lock() + defer m.Unlock() + return m.runningMigration != "" +} + func (m *migrationManager) getMigration(rootPath, id string) *migration { m.Lock() defer m.Unlock() @@ -149,6 +152,5 @@ func (m *migrationManager) getMigration(rootPath, id string) *migration { } func (s *Service) AccountMigrate(ctx context.Context, req *pb.RpcAccountMigrateRequest) error { - fmt.Println("[x]: migrate account") return s.migrationManager.getMigration(req.RootPath, req.Id).wait() } From 4de02f5c4a9fc2a1a78ef5d00a844d235402925c Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Tue, 7 Jan 2025 20:08:54 +0100 Subject: [PATCH 112/279] GO-4146 WIP migration logic --- core/anytype/bootstrap.go | 5 +- core/anytype/config/config.go | 7 ++- core/application/account_store_migrate.go | 52 +++++++++++------- go.mod | 2 + .../storage/anystorage/storageservice.go | 1 - space/spacecore/storage/migrator/migrator.go | 54 ++++++++++++++++++- space/spacecore/storage/storage.go | 5 +- 7 files changed, 97 insertions(+), 29 deletions(-) diff --git a/core/anytype/bootstrap.go b/core/anytype/bootstrap.go index ff4b8a965..40afbfeb9 100644 --- a/core/anytype/bootstrap.go +++ b/core/anytype/bootstrap.go @@ -111,7 +111,6 @@ import ( "github.com/anyproto/anytype-heart/space/spacecore/peermanager" "github.com/anyproto/anytype-heart/space/spacecore/peerstore" "github.com/anyproto/anytype-heart/space/spacecore/storage" - "github.com/anyproto/anytype-heart/space/spacecore/storage/anystorage" "github.com/anyproto/anytype-heart/space/spacecore/storage/migrator" "github.com/anyproto/anytype-heart/space/spacecore/typeprovider" "github.com/anyproto/anytype-heart/space/spacefactory" @@ -208,13 +207,13 @@ func appVersion(a *app.App, clientWithVersion string) string { return clientWithVersion + "/middle:" + middleVersion + "/any-sync:" + anySyncVersion } -func BootstrapMigration(newPath string, a *app.App, components ...app.Component) { +func BootstrapMigration(a *app.App, components ...app.Component) { for _, c := range components { a.Register(c) } a.Register(clientds.New()). Register(oldstorage.New()). - Register(anystorage.New(newPath)). + Register(storage.New()). Register(process.New()). Register(migrator.New()) } diff --git a/core/anytype/config/config.go b/core/anytype/config/config.go index ef8f1c726..a7cb61a4c 100644 --- a/core/anytype/config/config.go +++ b/core/anytype/config/config.go @@ -42,6 +42,7 @@ const ( const ( SpaceStoreBadgerPath = "spacestore" SpaceStoreSqlitePath = "spaceStore.db" + SpaceStoreNewPath = "spaceStoreNew" ) var ( @@ -296,7 +297,11 @@ func (c *Config) GetConfigPath() string { } func (c *Config) GetSpaceStorePath() string { - return filepath.Join(c.RepoPath, "spaceStore.db") + return filepath.Join(c.RepoPath, SpaceStoreSqlitePath) +} + +func (c *Config) GetNewSpaceStorePath() string { + return filepath.Join(c.RepoPath, SpaceStoreNewPath) } func (c *Config) GetTempDirPath() string { diff --git a/core/application/account_store_migrate.go b/core/application/account_store_migrate.go index 4cae5fef2..c76175932 100644 --- a/core/application/account_store_migrate.go +++ b/core/application/account_store_migrate.go @@ -4,15 +4,16 @@ import ( "context" "errors" "os" - "path" "path/filepath" "sync" "github.com/anyproto/any-sync/app" "github.com/anyproto/anytype-heart/core/anytype" + "github.com/anyproto/anytype-heart/core/anytype/config" "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/pkg/lib/core" + "github.com/anyproto/anytype-heart/space/spacecore/storage/migrator" ) var ( @@ -21,13 +22,13 @@ var ( ) func (s *Service) AccountMigrate(ctx context.Context, req *pb.RpcAccountMigrateRequest) error { + if s.rootPath == "" { + s.rootPath = req.RootPath + } return s.migrationManager.getMigration(req.RootPath, req.Id).wait(ctx) } -func (s *Service) migrate(ctx context.Context, id string, rootPath string) error { - if rootPath != "" { - s.rootPath = rootPath - } +func (s *Service) migrate(ctx context.Context, id string) error { res, err := core.WalletAccountAt(s.mnemonic, 0) if err != nil { return err @@ -44,9 +45,8 @@ func (s *Service) migrate(ctx context.Context, id string, rootPath string) error anytype.BootstrapWallet(s.rootPath, res), s.eventSender, } - spaceStorePath := path.Join(s.rootPath, id, "spacestore") a := &app.App{} - anytype.BootstrapMigration(spaceStorePath, a, comps...) + anytype.BootstrapMigration(a, comps...) err = a.Start(ctx) if err != nil { return err @@ -60,22 +60,20 @@ type migration struct { isFinished bool manager *migrationManager err error - rootPath string id string done chan struct{} } -func newMigration(m *migrationManager, rootPath, id string) *migration { +func newMigration(m *migrationManager, id string) *migration { return &migration{ - done: make(chan struct{}), - rootPath: rootPath, - id: id, - manager: m, + done: make(chan struct{}), + id: id, + manager: m, } } -func newSuccessfulMigration(manager *migrationManager, rootPath, id string) *migration { - m := newMigration(manager, rootPath, id) +func newSuccessfulMigration(manager *migrationManager, id string) *migration { + m := newMigration(manager, id) m.setFinished(nil, false) return m } @@ -105,7 +103,7 @@ func (m *migration) wait(ctx context.Context) error { return m.err } m.mx.Unlock() - err := m.manager.service.migrate(ctx, m.id, m.rootPath) + err := m.manager.service.migrate(ctx, m.id) if err != nil { m.setFinished(err, true) return err @@ -169,12 +167,28 @@ func (m *migrationManager) getMigration(rootPath, id string) *migration { m.migrations = make(map[string]*migration) } if m.migrations[id] == nil { - // TODO: [store] add successful migration if we don't need a migration - m.migrations[id] = newMigration(m, rootPath, id) + sqlitePath := filepath.Join(rootPath, id, config.SpaceStoreSqlitePath) + baderPath := filepath.Join(rootPath, id, config.SpaceStoreBadgerPath) + newPath := filepath.Join(rootPath, id, config.SpaceStoreNewPath) + path := pathExists([]string{sqlitePath, baderPath}) + if path == "" || migrator.MigrationCompleted(newPath) { + m.migrations[id] = newSuccessfulMigration(m, id) + } else { + m.migrations[id] = newMigration(m, id) + } } if m.migrations[id].finished() && !m.migrations[id].successful() { // resetting migration - m.migrations[id] = newMigration(m, rootPath, id) + m.migrations[id] = newMigration(m, id) } return m.migrations[id] } + +func pathExists(paths []string) string { + for _, path := range paths { + if _, err := os.Stat(path); err == nil { + return path + } + } + return "" +} diff --git a/go.mod b/go.mod index 2e7085891..bc466d1dc 100644 --- a/go.mod +++ b/go.mod @@ -286,3 +286,5 @@ replace github.com/multiformats/go-multiaddr => github.com/anyproto/go-multiaddr replace github.com/gogo/protobuf => github.com/anyproto/protobuf v1.3.3-0.20240201225420-6e325cf0ac38 replace google.golang.org/genproto/googleapis/rpc => google.golang.org/genproto/googleapis/rpc v0.0.0-20241021214115-324edc3d5d38 + +replace github.com/anyproto/any-sync => ../any-sync \ No newline at end of file diff --git a/space/spacecore/storage/anystorage/storageservice.go b/space/spacecore/storage/anystorage/storageservice.go index 30ff94541..8780737ab 100644 --- a/space/spacecore/storage/anystorage/storageservice.go +++ b/space/spacecore/storage/anystorage/storageservice.go @@ -159,7 +159,6 @@ func (s *storageService) Close(ctx context.Context) (err error) { } func (s *storageService) Init(a *app.App) (err error) { - s.rootPath = a.MustComponent("config").(configGetter).GetSpaceStorePath() s.cache = ocache.New(s.loadFunc, ocache.WithLogger(log.Sugar()), ocache.WithGCPeriod(time.Minute), diff --git a/space/spacecore/storage/migrator/migrator.go b/space/spacecore/storage/migrator/migrator.go index 5f0f6ba6c..dd5deff5a 100644 --- a/space/spacecore/storage/migrator/migrator.go +++ b/space/spacecore/storage/migrator/migrator.go @@ -2,11 +2,15 @@ package migrator import ( "context" + "os" + "path/filepath" "github.com/anyproto/any-sync/app" "github.com/anyproto/any-sync/commonspace/spacestorage/migration" + "github.com/anyproto/anytype-heart/core/block/process" + "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/space/spacecore/oldstorage" "github.com/anyproto/anytype-heart/space/spacecore/storage" ) @@ -16,6 +20,12 @@ const CName = "client.storage.migration" type migrator struct { storage oldstorage.ClientStorage newStorage storage.ClientStorage + process process.Service + path string +} + +type pathProvider interface { + GetNewSpaceStorePath() string } func New() app.ComponentRunnable { @@ -23,8 +33,10 @@ func New() app.ComponentRunnable { } func (m *migrator) Init(a *app.App) (err error) { + m.path = a.MustComponent("config").(pathProvider).GetNewSpaceStorePath() m.storage = app.MustComponent[oldstorage.ClientStorage](a) m.newStorage = app.MustComponent[storage.ClientStorage](a) + m.process = app.MustComponent[process.Service](a) return nil } @@ -33,13 +45,38 @@ func (m *migrator) Name() (name string) { } func (m *migrator) Run(ctx context.Context) (err error) { + progress := process.NewProgress(&pb.ModelProcessMessageOfMigration{Migration: &pb.ModelProcessMigration{}}) + progress.SetProgressMessage("Migrating spaces") + defer func() { + progress.Finish(err) + }() + if MigrationCompleted(m.path) { + return nil + } migrator := migration.NewSpaceMigrator(m.storage, m.newStorage, 10) allIds, err := m.storage.AllSpaceIds() if err != nil { return err } + var total int64 for _, id := range allIds { - st, err := migrator.MigrateId(ctx, id) + store, err := m.storage.WaitSpaceStorage(ctx, id) + if err != nil { + return err + } + storedIds, err := store.StoredIds() + if err != nil { + return err + } + total += int64(len(storedIds)) + err = store.Close(ctx) + if err != nil { + return err + } + } + progress.SetTotal(total) + for _, id := range allIds { + st, err := migrator.MigrateId(ctx, id, progress) if err != nil { return err } @@ -48,9 +85,22 @@ func (m *migrator) Run(ctx context.Context) (err error) { return err } } - return nil + file, err := os.Create(MigrationCompletedPath(m.path)) + if err != nil { + return err + } + return file.Close() } func (m *migrator) Close(ctx context.Context) (err error) { return nil } + +func MigrationCompletedPath(path string) string { + return filepath.Join(path, "migration_completed") +} + +func MigrationCompleted(path string) bool { + _, err := os.Stat(MigrationCompletedPath(path)) + return err == nil +} diff --git a/space/spacecore/storage/storage.go b/space/spacecore/storage/storage.go index 55501aab9..9ef406ec0 100644 --- a/space/spacecore/storage/storage.go +++ b/space/spacecore/storage/storage.go @@ -33,8 +33,7 @@ func New() ClientStorage { } type configGetter interface { - GetSpaceStorePath() string - GetTempDirPath() string + GetNewSpaceStorePath() string } func (s *storageService) Name() (name string) { @@ -42,7 +41,7 @@ func (s *storageService) Name() (name string) { } func (s *storageService) Init(a *app.App) (err error) { - rootPath := a.MustComponent("config").(configGetter).GetSpaceStorePath() + rootPath := a.MustComponent("config").(configGetter).GetNewSpaceStorePath() s.ClientStorage = anystorage.New(rootPath) return s.ClientStorage.Init(a) } From 60b8526f91a1ac415465feacb84fc7e2e1626326 Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Wed, 8 Jan 2025 12:03:41 +0100 Subject: [PATCH 113/279] GO-4146 Fix migration start --- core/application/account_store_migrate.go | 1 + space/spacecore/oldstorage/storage.go | 12 +++++++----- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/core/application/account_store_migrate.go b/core/application/account_store_migrate.go index c76175932..1f2dd8927 100644 --- a/core/application/account_store_migrate.go +++ b/core/application/account_store_migrate.go @@ -40,6 +40,7 @@ func (s *Service) migrate(ctx context.Context, id string) error { return err } cfg := anytype.BootstrapConfig(false, os.Getenv("ANYTYPE_STAGING") == "1") + cfg.PeferYamuxTransport = true comps := []app.Component{ cfg, anytype.BootstrapWallet(s.rootPath, res), diff --git a/space/spacecore/oldstorage/storage.go b/space/spacecore/oldstorage/storage.go index 4eb659cca..5e94ac5e1 100644 --- a/space/spacecore/oldstorage/storage.go +++ b/space/spacecore/oldstorage/storage.go @@ -5,15 +5,17 @@ import ( "fmt" "github.com/anyproto/any-sync/app" - "github.com/anyproto/any-sync/commonspace/spacestorage" "github.com/anyproto/any-sync/commonspace/spacestorage/oldstorage" + "github.com/anyproto/anytype-heart/space/spacecore/storage" "github.com/anyproto/anytype-heart/space/spacecore/storage/badgerstorage" "github.com/anyproto/anytype-heart/space/spacecore/storage/sqlitestorage" ) type SpaceStorageMode int +const CName = "client.spacecore.oldstorage" + const ( SpaceStorageModeSqlite SpaceStorageMode = iota // used for new account repos SpaceStorageModeBadger // used for existing account repos @@ -36,19 +38,19 @@ func New() ClientStorage { } type configGetter interface { - GetSpaceStorageMode() SpaceStorageMode + GetSpaceStorageMode() storage.SpaceStorageMode } func (s *storageService) Name() (name string) { - return spacestorage.CName + return CName } func (s *storageService) Init(a *app.App) (err error) { mode := a.MustComponent("config").(configGetter).GetSpaceStorageMode() - if mode == SpaceStorageModeBadger { + if mode == storage.SpaceStorageModeBadger { // for already existing account repos s.ClientStorage = badgerstorage.New() - } else if mode == SpaceStorageModeSqlite { + } else if mode == storage.SpaceStorageModeSqlite { // sqlite used for new account repos s.ClientStorage = sqlitestorage.New() } else { From 96e694eccf06cf05f0096ee526dd446c90e1bdfd Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Wed, 8 Jan 2025 13:58:56 +0100 Subject: [PATCH 114/279] GO-4146 Remove all contents when migration failed --- .../storage/anystorage/storageservice.go | 8 +++----- space/spacecore/storage/migrator/migrator.go | 20 +++++++++++++++++++ 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/space/spacecore/storage/anystorage/storageservice.go b/space/spacecore/storage/anystorage/storageservice.go index 8780737ab..ea6f54d1d 100644 --- a/space/spacecore/storage/anystorage/storageservice.go +++ b/space/spacecore/storage/anystorage/storageservice.go @@ -11,13 +11,11 @@ import ( "time" anystore "github.com/anyproto/any-store" - "github.com/anyproto/any-sync/commonspace/spacestorage" - "go.uber.org/zap" - "golang.org/x/sys/unix" - "github.com/anyproto/any-sync/app" "github.com/anyproto/any-sync/app/logger" "github.com/anyproto/any-sync/app/ocache" + "github.com/anyproto/any-sync/commonspace/spacestorage" + "go.uber.org/zap" ) var log = logger.NewNamed(spacestorage.CName) @@ -155,7 +153,7 @@ func (s *storageService) createDb(ctx context.Context, id string) (db anystore.D } func (s *storageService) Close(ctx context.Context) (err error) { - return unix.Rmdir(s.rootPath) + return s.cache.Close() } func (s *storageService) Init(a *app.App) (err error) { diff --git a/space/spacecore/storage/migrator/migrator.go b/space/spacecore/storage/migrator/migrator.go index dd5deff5a..e70ee032f 100644 --- a/space/spacecore/storage/migrator/migrator.go +++ b/space/spacecore/storage/migrator/migrator.go @@ -2,6 +2,7 @@ package migrator import ( "context" + "fmt" "os" "path/filepath" @@ -53,6 +54,10 @@ func (m *migrator) Run(ctx context.Context) (err error) { if MigrationCompleted(m.path) { return nil } + err = removeAllContents(m.path) + if err != nil { + return fmt.Errorf("failed to remove all contents: %w", err) + } migrator := migration.NewSpaceMigrator(m.storage, m.newStorage, 10) allIds, err := m.storage.AllSpaceIds() if err != nil { @@ -104,3 +109,18 @@ func MigrationCompleted(path string) bool { _, err := os.Stat(MigrationCompletedPath(path)) return err == nil } + +func removeAllContents(folder string) error { + entries, err := os.ReadDir(folder) + if err != nil { + return fmt.Errorf("failed to read directory: %w", err) + } + for _, entry := range entries { + entryPath := filepath.Join(folder, entry.Name()) + err = os.RemoveAll(entryPath) + if err != nil { + return fmt.Errorf("failed to remove %s: %w", entryPath, err) + } + } + return nil +} From aa90cc238dd9c23c4291e37adf41f21b43af8fdf Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Wed, 8 Jan 2025 14:12:36 +0100 Subject: [PATCH 115/279] GO-4146 Fix progress, update any-sync --- go.mod | 8 +++----- go.sum | 4 ++-- space/spacecore/storage/migrator/migrationprocess.go | 4 ---- space/spacecore/storage/migrator/migrator.go | 6 +++++- 4 files changed, 10 insertions(+), 12 deletions(-) delete mode 100644 space/spacecore/storage/migrator/migrationprocess.go diff --git a/go.mod b/go.mod index bc466d1dc..8bf866ec9 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( github.com/VividCortex/ewma v1.2.0 github.com/adrium/goheif v0.0.0-20230113233934-ca402e77a786 github.com/anyproto/any-store v0.1.4-0.20241211133419-d0c2df992842 - github.com/anyproto/any-sync v0.6.0-alpha.2.0.20250106182015-8cb2e54eefa7 + github.com/anyproto/any-sync v0.6.0-alpha.2.0.20250108125822-83738c231f77 github.com/anyproto/go-chash v0.1.0 github.com/anyproto/go-naturaldate/v2 v2.0.2-0.20230524105841-9829cfd13438 github.com/anyproto/go-slip10 v1.0.0 @@ -61,7 +61,6 @@ require ( github.com/kelseyhightower/envconfig v1.4.0 github.com/klauspost/compress v1.17.11 github.com/kovidgoyal/imaging v1.6.3 - github.com/libp2p/go-libp2p v0.38.1 github.com/libp2p/zeroconf/v2 v2.2.0 github.com/logrusorgru/aurora v2.0.3+incompatible github.com/magiconair/properties v1.8.9 @@ -104,7 +103,6 @@ require ( golang.org/x/mobile v0.0.0-20241108191957-fa514ef75a0f golang.org/x/net v0.33.0 golang.org/x/oauth2 v0.24.0 - golang.org/x/sys v0.28.0 golang.org/x/text v0.21.0 google.golang.org/grpc v1.69.2 gopkg.in/Graylog2/go-gelf.v2 v2.0.0-20180125164251-1832d8546a9f @@ -192,6 +190,7 @@ require ( github.com/jinzhu/copier v0.3.5 // indirect github.com/klauspost/cpuid/v2 v2.2.9 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect + github.com/libp2p/go-libp2p v0.38.1 // indirect github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect @@ -251,6 +250,7 @@ require ( golang.org/x/crypto v0.31.0 // indirect golang.org/x/mod v0.22.0 // indirect golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.28.0 // indirect golang.org/x/term v0.27.0 // indirect golang.org/x/time v0.8.0 // indirect golang.org/x/tools v0.28.0 // indirect @@ -286,5 +286,3 @@ replace github.com/multiformats/go-multiaddr => github.com/anyproto/go-multiaddr replace github.com/gogo/protobuf => github.com/anyproto/protobuf v1.3.3-0.20240201225420-6e325cf0ac38 replace google.golang.org/genproto/googleapis/rpc => google.golang.org/genproto/googleapis/rpc v0.0.0-20241021214115-324edc3d5d38 - -replace github.com/anyproto/any-sync => ../any-sync \ No newline at end of file diff --git a/go.sum b/go.sum index 11cd253f3..46e4da01d 100644 --- a/go.sum +++ b/go.sum @@ -78,8 +78,8 @@ github.com/andybalholm/cascadia v1.3.2 h1:3Xi6Dw5lHF15JtdcmAHD3i1+T8plmv7BQ/nsVi github.com/andybalholm/cascadia v1.3.2/go.mod h1:7gtRlve5FxPPgIgX36uWBX58OdBsSS6lUvCFb+h7KvU= github.com/anyproto/any-store v0.1.4-0.20241211133419-d0c2df992842 h1:2hJRYJ4+AjOSiy3Sf84XyU/ki8zE/+Tp6IdhqZZHBaY= github.com/anyproto/any-store v0.1.4-0.20241211133419-d0c2df992842/go.mod h1:6/0OUKgSMWF/vYGoGYzQOl2CII5OdiuXbQlGDXYcNYc= -github.com/anyproto/any-sync v0.6.0-alpha.2.0.20250106182015-8cb2e54eefa7 h1:G4VF+mq+QQnIMHaJUckdx0f/lIbWjqwQoc0HLoBaq48= -github.com/anyproto/any-sync v0.6.0-alpha.2.0.20250106182015-8cb2e54eefa7/go.mod h1:Mw8DVuLGNKk2ffEFdJT2AX40ZEv5FzYoVGe8Va0Z7mw= +github.com/anyproto/any-sync v0.6.0-alpha.2.0.20250108125822-83738c231f77 h1:VZClnX4OWAmHjVtHgh9T0GmNWTHi12wZLgNu2SB5FLE= +github.com/anyproto/any-sync v0.6.0-alpha.2.0.20250108125822-83738c231f77/go.mod h1:Mw8DVuLGNKk2ffEFdJT2AX40ZEv5FzYoVGe8Va0Z7mw= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580 h1:Ba80IlCCxkZ9H1GF+7vFu/TSpPvbpDCxXJ5ogc4euYc= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580/go.mod h1:T/uWAYxrXdaXw64ihI++9RMbKTCpKd/yE9+saARew7k= github.com/anyproto/go-chash v0.1.0 h1:I9meTPjXFRfXZHRJzjOHC/XF7Q5vzysKkiT/grsogXY= diff --git a/space/spacecore/storage/migrator/migrationprocess.go b/space/spacecore/storage/migrator/migrationprocess.go deleted file mode 100644 index dfd54d618..000000000 --- a/space/spacecore/storage/migrator/migrationprocess.go +++ /dev/null @@ -1,4 +0,0 @@ -package migrator - -type migrationProcess struct { -} diff --git a/space/spacecore/storage/migrator/migrator.go b/space/spacecore/storage/migrator/migrator.go index e70ee032f..eeb514ca0 100644 --- a/space/spacecore/storage/migrator/migrator.go +++ b/space/spacecore/storage/migrator/migrator.go @@ -48,6 +48,10 @@ func (m *migrator) Name() (name string) { func (m *migrator) Run(ctx context.Context) (err error) { progress := process.NewProgress(&pb.ModelProcessMessageOfMigration{Migration: &pb.ModelProcessMigration{}}) progress.SetProgressMessage("Migrating spaces") + err = m.process.Add(progress) + if err != nil { + return err + } defer func() { progress.Finish(err) }() @@ -58,7 +62,7 @@ func (m *migrator) Run(ctx context.Context) (err error) { if err != nil { return fmt.Errorf("failed to remove all contents: %w", err) } - migrator := migration.NewSpaceMigrator(m.storage, m.newStorage, 10) + migrator := migration.NewSpaceMigrator(m.storage, m.newStorage, 40) allIds, err := m.storage.AllSpaceIds() if err != nil { return err From 0e2f51b7400ca3bfa1b0dc089feafc31d21d96ad Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Wed, 8 Jan 2025 18:36:59 +0100 Subject: [PATCH 116/279] GO-4146 Migration and spacestore fixes --- cmd/grpcserver/performance.go | 2 +- core/anytype/config/config.go | 9 +- core/application/account_store_migrate.go | 15 +- go.mod | 2 +- go.sum | 4 +- .../storage/anystorage/clientstorage.go | 9 +- .../storage/anystorage/storageservice.go | 198 ++---------------- space/spacecore/storage/migrator/migrator.go | 57 ++--- .../storage/sqlitestorage/service.go | 4 +- .../storage/sqlitestorage/service_test.go | 2 +- 10 files changed, 61 insertions(+), 241 deletions(-) diff --git a/cmd/grpcserver/performance.go b/cmd/grpcserver/performance.go index 4dfe878fd..1fc730c3d 100644 --- a/cmd/grpcserver/performance.go +++ b/cmd/grpcserver/performance.go @@ -306,7 +306,7 @@ func getTableSizes(mw *core.Middleware) (tables map[string]uint64) { tables = make(map[string]uint64) cfg := mw.GetApp().MustComponent(config.CName).(*config.Config) - db, err := sql.Open("sqlite3", cfg.GetSpaceStorePath()) + db, err := sql.Open("sqlite3", cfg.GetSqliteStorePath()) if err != nil { fmt.Println("Error opening database:", err) return diff --git a/core/anytype/config/config.go b/core/anytype/config/config.go index a7cb61a4c..21bb2fce6 100644 --- a/core/anytype/config/config.go +++ b/core/anytype/config/config.go @@ -296,10 +296,17 @@ func (c *Config) GetConfigPath() string { return filepath.Join(c.RepoPath, ConfigFileName) } -func (c *Config) GetSpaceStorePath() string { +func (c *Config) GetSqliteStorePath() string { return filepath.Join(c.RepoPath, SpaceStoreSqlitePath) } +func (c *Config) GetOldSpaceStorePath() string { + if c.GetSpaceStorageMode() == storage.SpaceStorageModeBadger { + return filepath.Join(c.RepoPath, SpaceStoreBadgerPath) + } + return c.GetSqliteStorePath() +} + func (c *Config) GetNewSpaceStorePath() string { return filepath.Join(c.RepoPath, SpaceStoreNewPath) } diff --git a/core/application/account_store_migrate.go b/core/application/account_store_migrate.go index 1f2dd8927..782a7bf26 100644 --- a/core/application/account_store_migrate.go +++ b/core/application/account_store_migrate.go @@ -13,7 +13,6 @@ import ( "github.com/anyproto/anytype-heart/core/anytype/config" "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/pkg/lib/core" - "github.com/anyproto/anytype-heart/space/spacecore/storage/migrator" ) var ( @@ -170,12 +169,10 @@ func (m *migrationManager) getMigration(rootPath, id string) *migration { if m.migrations[id] == nil { sqlitePath := filepath.Join(rootPath, id, config.SpaceStoreSqlitePath) baderPath := filepath.Join(rootPath, id, config.SpaceStoreBadgerPath) - newPath := filepath.Join(rootPath, id, config.SpaceStoreNewPath) - path := pathExists([]string{sqlitePath, baderPath}) - if path == "" || migrator.MigrationCompleted(newPath) { - m.migrations[id] = newSuccessfulMigration(m, id) - } else { + if anyPathExists([]string{sqlitePath, baderPath}) { m.migrations[id] = newMigration(m, id) + } else { + m.migrations[id] = newSuccessfulMigration(m, id) } } if m.migrations[id].finished() && !m.migrations[id].successful() { @@ -185,11 +182,11 @@ func (m *migrationManager) getMigration(rootPath, id string) *migration { return m.migrations[id] } -func pathExists(paths []string) string { +func anyPathExists(paths []string) bool { for _, path := range paths { if _, err := os.Stat(path); err == nil { - return path + return true } } - return "" + return false } diff --git a/go.mod b/go.mod index 8bf866ec9..dc6509995 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( github.com/VividCortex/ewma v1.2.0 github.com/adrium/goheif v0.0.0-20230113233934-ca402e77a786 github.com/anyproto/any-store v0.1.4-0.20241211133419-d0c2df992842 - github.com/anyproto/any-sync v0.6.0-alpha.2.0.20250108125822-83738c231f77 + github.com/anyproto/any-sync v0.6.0-alpha.2.0.20250108173313-b97ff65643b9 github.com/anyproto/go-chash v0.1.0 github.com/anyproto/go-naturaldate/v2 v2.0.2-0.20230524105841-9829cfd13438 github.com/anyproto/go-slip10 v1.0.0 diff --git a/go.sum b/go.sum index 46e4da01d..b1bcccb76 100644 --- a/go.sum +++ b/go.sum @@ -78,8 +78,8 @@ github.com/andybalholm/cascadia v1.3.2 h1:3Xi6Dw5lHF15JtdcmAHD3i1+T8plmv7BQ/nsVi github.com/andybalholm/cascadia v1.3.2/go.mod h1:7gtRlve5FxPPgIgX36uWBX58OdBsSS6lUvCFb+h7KvU= github.com/anyproto/any-store v0.1.4-0.20241211133419-d0c2df992842 h1:2hJRYJ4+AjOSiy3Sf84XyU/ki8zE/+Tp6IdhqZZHBaY= github.com/anyproto/any-store v0.1.4-0.20241211133419-d0c2df992842/go.mod h1:6/0OUKgSMWF/vYGoGYzQOl2CII5OdiuXbQlGDXYcNYc= -github.com/anyproto/any-sync v0.6.0-alpha.2.0.20250108125822-83738c231f77 h1:VZClnX4OWAmHjVtHgh9T0GmNWTHi12wZLgNu2SB5FLE= -github.com/anyproto/any-sync v0.6.0-alpha.2.0.20250108125822-83738c231f77/go.mod h1:Mw8DVuLGNKk2ffEFdJT2AX40ZEv5FzYoVGe8Va0Z7mw= +github.com/anyproto/any-sync v0.6.0-alpha.2.0.20250108173313-b97ff65643b9 h1:1dCsfj6C/E2tTxVqDMHyZXrA5mV6n5LmIuxRAHL0QzQ= +github.com/anyproto/any-sync v0.6.0-alpha.2.0.20250108173313-b97ff65643b9/go.mod h1:Mw8DVuLGNKk2ffEFdJT2AX40ZEv5FzYoVGe8Va0Z7mw= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580 h1:Ba80IlCCxkZ9H1GF+7vFu/TSpPvbpDCxXJ5ogc4euYc= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580/go.mod h1:T/uWAYxrXdaXw64ihI++9RMbKTCpKd/yE9+saARew7k= github.com/anyproto/go-chash v0.1.0 h1:I9meTPjXFRfXZHRJzjOHC/XF7Q5vzysKkiT/grsogXY= diff --git a/space/spacecore/storage/anystorage/clientstorage.go b/space/spacecore/storage/anystorage/clientstorage.go index c857eb425..b822d95ff 100644 --- a/space/spacecore/storage/anystorage/clientstorage.go +++ b/space/spacecore/storage/anystorage/clientstorage.go @@ -37,7 +37,6 @@ const ( type clientStorage struct { spacestorage.SpaceStorage - cont *storageContainer clientColl anystore.Collection arena *anyenc.Arena } @@ -50,10 +49,9 @@ func (r *clientStorage) AllDeletedTreeIds(ctx context.Context) (ids []string, er return } -func newClientStorage(ctx context.Context, cont *storageContainer, spaceStorage spacestorage.SpaceStorage) (*clientStorage, error) { +func newClientStorage(ctx context.Context, spaceStorage spacestorage.SpaceStorage) (*clientStorage, error) { storage := &clientStorage{ SpaceStorage: spaceStorage, - cont: cont, arena: &anyenc.Arena{}, } anyStore := storage.AnyStore() @@ -66,8 +64,9 @@ func newClientStorage(ctx context.Context, cont *storageContainer, spaceStorage } func (r *clientStorage) Close(ctx context.Context) (err error) { - defer r.cont.Release() - return r.SpaceStorage.Close(ctx) + spaceStorageErr := r.SpaceStorage.Close(ctx) + anyStoreErr := r.SpaceStorage.AnyStore().Close() + return errors.Join(spaceStorageErr, anyStoreErr) } func (r *clientStorage) HasTree(ctx context.Context, id string) (has bool, err error) { diff --git a/space/spacecore/storage/anystorage/storageservice.go b/space/spacecore/storage/anystorage/storageservice.go index ea6f54d1d..fd1d6ddec 100644 --- a/space/spacecore/storage/anystorage/storageservice.go +++ b/space/spacecore/storage/anystorage/storageservice.go @@ -7,105 +7,16 @@ import ( "os" "path" "strings" - "sync" - "time" anystore "github.com/anyproto/any-store" "github.com/anyproto/any-sync/app" "github.com/anyproto/any-sync/app/logger" "github.com/anyproto/any-sync/app/ocache" "github.com/anyproto/any-sync/commonspace/spacestorage" - "go.uber.org/zap" ) var log = logger.NewNamed(spacestorage.CName) -var ( - ErrClosed = errors.New("space storage closed") - ErrDeleted = errors.New("space storage deleted") -) - -type configGetter interface { - GetSpaceStorePath() string - GetTempDirPath() string -} - -type optKey int - -const ( - createKeyVal optKey = 0 - doKeyVal optKey = 1 -) - -type doFunc func() error - -type storageContainer struct { - db anystore.DB - mx sync.Mutex - path string - handlers int - isClosing bool - onClose func(path string) error - closeCh chan struct{} -} - -func newStorageContainer(db anystore.DB, path string) *storageContainer { - return &storageContainer{ - db: db, - closeCh: make(chan struct{}), - } -} - -func (s *storageContainer) Close() (err error) { - return fmt.Errorf("should not be called directly") -} - -func (s *storageContainer) Acquire() (anystore.DB, error) { - s.mx.Lock() - if s.isClosing { - ch := s.closeCh - s.mx.Unlock() - <-ch - return nil, ErrClosed - } - s.handlers++ - s.mx.Unlock() - return s.db, nil -} - -func (s *storageContainer) Release() { - s.mx.Lock() - defer s.mx.Unlock() - s.handlers++ -} - -func (s *storageContainer) TryClose(objectTTL time.Duration) (res bool, err error) { - s.mx.Lock() - if s.handlers > 0 { - s.mx.Unlock() - return false, nil - } - s.isClosing = true - s.closeCh = make(chan struct{}) - ch := s.closeCh - onClose := s.onClose - db := s.db - s.mx.Unlock() - if db != nil { - if err := db.Close(); err != nil { - log.Warn("failed to close db", zap.Error(err)) - } - } - if onClose != nil { - err := onClose(s.path) - if err != nil { - log.Warn("failed to close db", zap.Error(err)) - } - } - close(ch) - return true, nil -} - func New(rootPath string) *storageService { return &storageService{ rootPath: rootPath, @@ -137,7 +48,7 @@ func (s *storageService) Run(ctx context.Context) (err error) { func (s *storageService) openDb(ctx context.Context, id string) (db anystore.DB, err error) { // TODO: [storage] set anystore config from config - dbPath := path.Join(s.rootPath, id) + dbPath := path.Join(s.rootPath, id, "store.db") if _, err := os.Stat(dbPath); err != nil { if errors.Is(err, os.ErrNotExist) { return nil, spacestorage.ErrSpaceStorageMissing @@ -148,19 +59,20 @@ func (s *storageService) openDb(ctx context.Context, id string) (db anystore.DB, } func (s *storageService) createDb(ctx context.Context, id string) (db anystore.DB, err error) { - dbPath := path.Join(s.rootPath, id) + dirPath := path.Join(s.rootPath, id) + err = os.MkdirAll(dirPath, 0755) + if err != nil { + return nil, err + } + dbPath := path.Join(dirPath, "store.db") return anystore.Open(ctx, dbPath, anyStoreConfig) } func (s *storageService) Close(ctx context.Context) (err error) { - return s.cache.Close() + return nil } func (s *storageService) Init(a *app.App) (err error) { - s.cache = ocache.New(s.loadFunc, - ocache.WithLogger(log.Sugar()), - ocache.WithGCPeriod(time.Minute), - ocache.WithTTL(60*time.Second)) if _, err = os.Stat(s.rootPath); err != nil { err = os.MkdirAll(s.rootPath, 0755) if err != nil { @@ -174,48 +86,8 @@ func (s *storageService) Name() (name string) { return spacestorage.CName } -func (s *storageService) loadFunc(ctx context.Context, id string) (value ocache.Object, err error) { - if fn, ok := ctx.Value(doKeyVal).(doFunc); ok { - err := fn() - if err != nil { - return nil, err - } - // continue to open - } else if ctx.Value(createKeyVal) != nil { - if s.SpaceExists(id) { - return nil, spacestorage.ErrSpaceStorageExists - } - db, err := s.createDb(ctx, id) - if err != nil { - return nil, err - } - cont := &storageContainer{ - path: path.Join(s.rootPath, id), - db: db, - } - return cont, nil - } - db, err := s.openDb(ctx, id) - if err != nil { - return nil, err - } - return newStorageContainer(db, path.Join(s.rootPath, id)), nil -} - -func (s *storageService) get(ctx context.Context, id string) (container *storageContainer, err error) { - cont, err := s.cache.Get(ctx, id) - if err != nil { - return nil, err - } - return cont.(*storageContainer), nil -} - func (s *storageService) WaitSpaceStorage(ctx context.Context, id string) (spacestorage.SpaceStorage, error) { - cont, err := s.get(ctx, id) - if err != nil { - return nil, err - } - db, err := cont.Acquire() + db, err := s.openDb(ctx, id) if err != nil { return nil, err } @@ -223,7 +95,7 @@ func (s *storageService) WaitSpaceStorage(ctx context.Context, id string) (space if err != nil { return nil, err } - return newClientStorage(ctx, cont, st) + return newClientStorage(ctx, st) } func (s *storageService) SpaceExists(id string) bool { @@ -238,12 +110,7 @@ func (s *storageService) SpaceExists(id string) bool { } func (s *storageService) CreateSpaceStorage(ctx context.Context, payload spacestorage.SpaceStorageCreatePayload) (spacestorage.SpaceStorage, error) { - ctx = context.WithValue(ctx, createKeyVal, true) - cont, err := s.get(ctx, payload.SpaceHeaderWithId.Id) - if err != nil { - return nil, err - } - db, err := cont.Acquire() + db, err := s.createDb(ctx, payload.SpaceHeaderWithId.Id) if err != nil { return nil, err } @@ -251,51 +118,12 @@ func (s *storageService) CreateSpaceStorage(ctx context.Context, payload spacest if err != nil { return nil, err } - return newClientStorage(ctx, cont, st) -} - -func (s *storageService) TryLockAndDo(ctx context.Context, spaceId string, do func() error) (err error) { - ctx = context.WithValue(ctx, doKeyVal, do) - _, err = s.get(ctx, spaceId) - return err + return newClientStorage(ctx, st) } func (s *storageService) DeleteSpaceStorage(ctx context.Context, spaceId string) error { dbPath := path.Join(s.rootPath, spaceId) - del := func(path string) error { - if _, err := os.Stat(path); err != nil { - if os.IsNotExist(err) { - return nil - } - return fmt.Errorf("can't delete datadir '%s': %w", path, err) - } - return os.RemoveAll(path) - } - ctx = context.WithValue(ctx, doKeyVal, func() error { - err := del(dbPath) - if err != nil { - return err - } - return ErrDeleted - }) - cont, err := s.get(ctx, spaceId) - if err != nil { - if errors.Is(err, ErrDeleted) || errors.Is(err, spacestorage.ErrSpaceStorageMissing) { - return nil - } - return err - } - _, err = cont.Acquire() - if err != nil { - return s.DeleteSpaceStorage(ctx, spaceId) - } - cont.mx.Lock() - cont.onClose = del - ch := cont.closeCh - cont.mx.Unlock() - cont.Release() - <-ch - return nil + return os.RemoveAll(dbPath) } var anyStoreConfig *anystore.Config = &anystore.Config{ diff --git a/space/spacecore/storage/migrator/migrator.go b/space/spacecore/storage/migrator/migrator.go index eeb514ca0..03a3a1b2b 100644 --- a/space/spacecore/storage/migrator/migrator.go +++ b/space/spacecore/storage/migrator/migrator.go @@ -2,6 +2,7 @@ package migrator import ( "context" + "errors" "fmt" "os" "path/filepath" @@ -18,15 +19,19 @@ import ( const CName = "client.storage.migration" +const migratedName = "space_store_migrated" + type migrator struct { storage oldstorage.ClientStorage newStorage storage.ClientStorage process process.Service path string + oldPath string } type pathProvider interface { GetNewSpaceStorePath() string + GetOldSpaceStorePath() string } func New() app.ComponentRunnable { @@ -34,7 +39,9 @@ func New() app.ComponentRunnable { } func (m *migrator) Init(a *app.App) (err error) { - m.path = a.MustComponent("config").(pathProvider).GetNewSpaceStorePath() + cfg := a.MustComponent("config").(pathProvider) + m.path = cfg.GetNewSpaceStorePath() + m.oldPath = cfg.GetOldSpaceStorePath() m.storage = app.MustComponent[oldstorage.ClientStorage](a) m.newStorage = app.MustComponent[storage.ClientStorage](a) m.process = app.MustComponent[process.Service](a) @@ -55,19 +62,15 @@ func (m *migrator) Run(ctx context.Context) (err error) { defer func() { progress.Finish(err) }() - if MigrationCompleted(m.path) { - return nil - } - err = removeAllContents(m.path) - if err != nil { - return fmt.Errorf("failed to remove all contents: %w", err) - } - migrator := migration.NewSpaceMigrator(m.storage, m.newStorage, 40) + migrator := migration.NewSpaceMigrator(m.storage, m.newStorage, 40, m.path) allIds, err := m.storage.AllSpaceIds() if err != nil { return err } - var total int64 + var ( + total int64 + totalMap = make(map[string]int64) + ) for _, id := range allIds { store, err := m.storage.WaitSpaceStorage(ctx, id) if err != nil { @@ -78,6 +81,7 @@ func (m *migrator) Run(ctx context.Context) (err error) { return err } total += int64(len(storedIds)) + totalMap[id] = int64(len(storedIds)) err = store.Close(ctx) if err != nil { return err @@ -87,6 +91,10 @@ func (m *migrator) Run(ctx context.Context) (err error) { for _, id := range allIds { st, err := migrator.MigrateId(ctx, id, progress) if err != nil { + if errors.Is(err, migration.ErrAlreadyMigrated) { + progress.AddDone(totalMap[id]) + continue + } return err } err = st.Close(ctx) @@ -94,37 +102,18 @@ func (m *migrator) Run(ctx context.Context) (err error) { return err } } - file, err := os.Create(MigrationCompletedPath(m.path)) - if err != nil { - return err - } - return file.Close() + return renamePreserveExtension(m.oldPath, migratedName) } func (m *migrator) Close(ctx context.Context) (err error) { return nil } -func MigrationCompletedPath(path string) string { - return filepath.Join(path, "migration_completed") -} - -func MigrationCompleted(path string) bool { - _, err := os.Stat(MigrationCompletedPath(path)) - return err == nil -} - -func removeAllContents(folder string) error { - entries, err := os.ReadDir(folder) +func renamePreserveExtension(oldPath, newName string) error { + newPath := filepath.Join(filepath.Dir(oldPath), newName+filepath.Ext(oldPath)) + err := os.Rename(oldPath, newPath) if err != nil { - return fmt.Errorf("failed to read directory: %w", err) - } - for _, entry := range entries { - entryPath := filepath.Join(folder, entry.Name()) - err = os.RemoveAll(entryPath) - if err != nil { - return fmt.Errorf("failed to remove %s: %w", entryPath, err) - } + return fmt.Errorf("failed to rename: %w", err) } return nil } diff --git a/space/spacecore/storage/sqlitestorage/service.go b/space/spacecore/storage/sqlitestorage/service.go index 343c5fbd1..2d79d5bfe 100644 --- a/space/spacecore/storage/sqlitestorage/service.go +++ b/space/spacecore/storage/sqlitestorage/service.go @@ -31,7 +31,7 @@ var ( ) type configGetter interface { - GetSpaceStorePath() string + GetSqliteStorePath() string GetTempDirPath() string } @@ -92,7 +92,7 @@ func New() *storageService { } func (s *storageService) Init(a *app.App) (err error) { - s.dbPath = a.MustComponent("config").(configGetter).GetSpaceStorePath() + s.dbPath = a.MustComponent("config").(configGetter).GetSqliteStorePath() s.dbTempPath = a.MustComponent("config").(configGetter).GetTempDirPath() s.lockedSpaces = map[string]*lockSpace{} if s.checkpointAfterWrite == 0 { diff --git a/space/spacecore/storage/sqlitestorage/service_test.go b/space/spacecore/storage/sqlitestorage/service_test.go index 279b79aa0..becd3eebe 100644 --- a/space/spacecore/storage/sqlitestorage/service_test.go +++ b/space/spacecore/storage/sqlitestorage/service_test.go @@ -192,7 +192,7 @@ type testConfig struct { tmpDir string } -func (t *testConfig) GetSpaceStorePath() string { +func (t *testConfig) GetSqliteStorePath() string { return filepath.Join(t.tmpDir, "spaceStore.db") } func (t *testConfig) GetTempDirPath() string { From a9eb7259a11785acdcdd27698ae800922de66a44 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Wed, 8 Jan 2025 23:27:19 +0100 Subject: [PATCH 117/279] GO-4459: Update swagger docs --- cmd/api/auth/handler.go | 14 +++++++------- cmd/api/auth/service.go | 8 ++++---- cmd/api/demo/api_demo.go | 4 ++-- cmd/api/docs/docs.go | 32 ++++++++++++++++---------------- cmd/api/docs/swagger.json | 32 ++++++++++++++++---------------- cmd/api/docs/swagger.yaml | 34 +++++++++++++++++----------------- cmd/api/export/handler.go | 2 +- cmd/api/object/handler.go | 20 ++++++++++---------- cmd/api/server/router.go | 4 ++-- 9 files changed, 75 insertions(+), 75 deletions(-) diff --git a/cmd/api/auth/handler.go b/cmd/api/auth/handler.go index 353398364..907218510 100644 --- a/cmd/api/auth/handler.go +++ b/cmd/api/auth/handler.go @@ -15,8 +15,8 @@ import ( // @Accept json // @Produce json // @Success 200 {object} DisplayCodeResponse "Challenge ID" -// @Failure 502 {object} util.ServerError "Internal server error" -// @Router /auth/displayCode [post] +// @Failure 502 {object} util.ServerError "Internal server error" +// @Router /auth/display_code [post] func DisplayCodeHandler(s *AuthService) gin.HandlerFunc { return func(c *gin.Context) { challengeId, err := s.GenerateNewChallenge(c.Request.Context(), "api-test") @@ -38,18 +38,18 @@ func DisplayCodeHandler(s *AuthService) gin.HandlerFunc { // @Tags auth // @Accept json // @Produce json -// @Param code query string true "The code retrieved from Anytype Desktop app" // @Param challenge_id query string true "The challenge ID" -// @Success 200 {object} TokenResponse "Authentication token" +// @Param code query string true "The 4-digit code retrieved from Anytype Desktop app" +// @Success 200 {object} TokenResponse "Authentication token" // @Failure 400 {object} util.ValidationError "Invalid input" // @Failure 502 {object} util.ServerError "Internal server error" -// @Router /auth/token [get] +// @Router /auth/token [post] func TokenHandler(s *AuthService) gin.HandlerFunc { return func(c *gin.Context) { - challengeID := c.Query("challenge_id") + challengeId := c.Query("challenge_id") code := c.Query("code") - sessionToken, appKey, err := s.SolveChallengeForToken(c.Request.Context(), challengeID, code) + sessionToken, appKey, err := s.SolveChallengeForToken(c.Request.Context(), challengeId, code) errCode := util.MapErrorCode(err, util.ErrToCode(ErrInvalidInput, http.StatusBadRequest), util.ErrToCode(ErrFailedAuthenticate, http.StatusInternalServerError), diff --git a/cmd/api/auth/service.go b/cmd/api/auth/service.go index 17afa23cf..87c05bc2e 100644 --- a/cmd/api/auth/service.go +++ b/cmd/api/auth/service.go @@ -16,7 +16,7 @@ var ( type Service interface { GenerateNewChallenge(ctx context.Context, appName string) (string, error) - SolveChallengeForToken(ctx context.Context, challengeID, code string) (sessionToken, appKey string, err error) + SolveChallengeForToken(ctx context.Context, challengeId string, code string) (sessionToken, appKey string, err error) } type AuthService struct { @@ -39,14 +39,14 @@ func (s *AuthService) GenerateNewChallenge(ctx context.Context, appName string) } // SolveChallengeForToken calls AccountLocalLinkSolveChallenge and returns the session token + app key, or an error if it fails. -func (s *AuthService) SolveChallengeForToken(ctx context.Context, challengeID, code string) (sessionToken, appKey string, err error) { - if challengeID == "" || code == "" { +func (s *AuthService) SolveChallengeForToken(ctx context.Context, challengeId string, code string) (sessionToken string, appKey string, err error) { + if challengeId == "" || code == "" { return "", "", ErrInvalidInput } // Call AccountLocalLinkSolveChallenge to retrieve session token and app key resp := s.mw.AccountLocalLinkSolveChallenge(ctx, &pb.RpcAccountLocalLinkSolveChallengeRequest{ - ChallengeId: challengeID, + ChallengeId: challengeId, Answer: code, }) diff --git a/cmd/api/demo/api_demo.go b/cmd/api/demo/api_demo.go index 1848c06a3..58ba523c1 100644 --- a/cmd/api/demo/api_demo.go +++ b/cmd/api/demo/api_demo.go @@ -52,8 +52,8 @@ func main() { body map[string]interface{} }{ // auth - // {"POST", "/auth/displayCode", nil, nil}, - // {"GET", "/auth/token?challengeId={challengeId}&code={code}", map[string]interface{}{"challengeId": "6738dfc5cda913aad90e8c2a", "code": "2931"}, nil}, + // {"POST", "/auth/display_code", nil, nil}, + // {"POST", "/auth/token?challenge_id={challenge_id}&code={code}", map[string]interface{}{"challenge_id": "6738dfc5cda913aad90e8c2a", "code": "2931"}, nil}, // export // {"GET", "/spaces/{space_id}/objects/{object_id}/export/{format}", map[string]interface{}{"space_id": testSpaceId, "object_id": testObjectId, "format": "markdown"}, nil}, diff --git a/cmd/api/docs/docs.go b/cmd/api/docs/docs.go index 3f9f3d61b..e83846886 100644 --- a/cmd/api/docs/docs.go +++ b/cmd/api/docs/docs.go @@ -24,7 +24,7 @@ const docTemplate = `{ "host": "{{.Host}}", "basePath": "{{.BasePath}}", "paths": { - "/auth/displayCode": { + "/auth/display_code": { "post": { "consumes": [ "application/json" @@ -53,7 +53,7 @@ const docTemplate = `{ } }, "/auth/token": { - "get": { + "post": { "consumes": [ "application/json" ], @@ -67,15 +67,15 @@ const docTemplate = `{ "parameters": [ { "type": "string", - "description": "The code retrieved from Anytype Desktop app", - "name": "code", + "description": "The challenge ID", + "name": "challenge_id", "in": "query", "required": true }, { "type": "string", - "description": "The challenge ID", - "name": "challenge_id", + "description": "The 4-digit code retrieved from Anytype Desktop app", + "name": "code", "in": "query", "required": true } @@ -345,7 +345,7 @@ const docTemplate = `{ } } }, - "/spaces/{space_id}/objectTypes": { + "/spaces/{space_id}/object_types": { "get": { "consumes": [ "application/json" @@ -354,7 +354,7 @@ const docTemplate = `{ "application/json" ], "tags": [ - "types_and_templates" + "objects" ], "summary": "Retrieve object types in a specific space", "parameters": [ @@ -410,7 +410,7 @@ const docTemplate = `{ } } }, - "/spaces/{space_id}/objectTypes/{typeId}/templates": { + "/spaces/{space_id}/object_types/{type_id}/templates": { "get": { "consumes": [ "application/json" @@ -419,7 +419,7 @@ const docTemplate = `{ "application/json" ], "tags": [ - "types_and_templates" + "objects" ], "summary": "Retrieve a list of templates for a specific object type in a space", "parameters": [ @@ -433,7 +433,7 @@ const docTemplate = `{ { "type": "string", "description": "The ID of the object type", - "name": "typeId", + "name": "type_id", "in": "path", "required": true }, @@ -494,7 +494,7 @@ const docTemplate = `{ "application/json" ], "tags": [ - "space_objects" + "objects" ], "summary": "Retrieve objects in a specific space", "parameters": [ @@ -560,7 +560,7 @@ const docTemplate = `{ "application/json" ], "tags": [ - "space_objects" + "objects" ], "summary": "Create a new object in a specific space", "parameters": [ @@ -621,7 +621,7 @@ const docTemplate = `{ "application/json" ], "tags": [ - "space_objects" + "objects" ], "summary": "Retrieve a specific object in a space", "parameters": [ @@ -675,7 +675,7 @@ const docTemplate = `{ "application/json" ], "tags": [ - "space_objects" + "objects" ], "summary": "Update an existing object in a specific space", "parameters": [ @@ -746,7 +746,7 @@ const docTemplate = `{ "application/json" ], "tags": [ - "exports" + "export" ], "summary": "Export an object", "parameters": [ diff --git a/cmd/api/docs/swagger.json b/cmd/api/docs/swagger.json index 1f9fcf0d5..d9d5fd390 100644 --- a/cmd/api/docs/swagger.json +++ b/cmd/api/docs/swagger.json @@ -18,7 +18,7 @@ "host": "localhost:31009", "basePath": "/v1", "paths": { - "/auth/displayCode": { + "/auth/display_code": { "post": { "consumes": [ "application/json" @@ -47,7 +47,7 @@ } }, "/auth/token": { - "get": { + "post": { "consumes": [ "application/json" ], @@ -61,15 +61,15 @@ "parameters": [ { "type": "string", - "description": "The code retrieved from Anytype Desktop app", - "name": "code", + "description": "The challenge ID", + "name": "challenge_id", "in": "query", "required": true }, { "type": "string", - "description": "The challenge ID", - "name": "challenge_id", + "description": "The 4-digit code retrieved from Anytype Desktop app", + "name": "code", "in": "query", "required": true } @@ -339,7 +339,7 @@ } } }, - "/spaces/{space_id}/objectTypes": { + "/spaces/{space_id}/object_types": { "get": { "consumes": [ "application/json" @@ -348,7 +348,7 @@ "application/json" ], "tags": [ - "types_and_templates" + "objects" ], "summary": "Retrieve object types in a specific space", "parameters": [ @@ -404,7 +404,7 @@ } } }, - "/spaces/{space_id}/objectTypes/{typeId}/templates": { + "/spaces/{space_id}/object_types/{type_id}/templates": { "get": { "consumes": [ "application/json" @@ -413,7 +413,7 @@ "application/json" ], "tags": [ - "types_and_templates" + "objects" ], "summary": "Retrieve a list of templates for a specific object type in a space", "parameters": [ @@ -427,7 +427,7 @@ { "type": "string", "description": "The ID of the object type", - "name": "typeId", + "name": "type_id", "in": "path", "required": true }, @@ -488,7 +488,7 @@ "application/json" ], "tags": [ - "space_objects" + "objects" ], "summary": "Retrieve objects in a specific space", "parameters": [ @@ -554,7 +554,7 @@ "application/json" ], "tags": [ - "space_objects" + "objects" ], "summary": "Create a new object in a specific space", "parameters": [ @@ -615,7 +615,7 @@ "application/json" ], "tags": [ - "space_objects" + "objects" ], "summary": "Retrieve a specific object in a space", "parameters": [ @@ -669,7 +669,7 @@ "application/json" ], "tags": [ - "space_objects" + "objects" ], "summary": "Update an existing object in a specific space", "parameters": [ @@ -740,7 +740,7 @@ "application/json" ], "tags": [ - "exports" + "export" ], "summary": "Export an object", "parameters": [ diff --git a/cmd/api/docs/swagger.yaml b/cmd/api/docs/swagger.yaml index 5431da43f..7bb0dae7a 100644 --- a/cmd/api/docs/swagger.yaml +++ b/cmd/api/docs/swagger.yaml @@ -334,7 +334,7 @@ info: title: Anytype API version: "1.0" paths: - /auth/displayCode: + /auth/display_code: post: consumes: - application/json @@ -353,20 +353,20 @@ paths: tags: - auth /auth/token: - get: + post: consumes: - application/json parameters: - - description: The code retrieved from Anytype Desktop app - in: query - name: code - required: true - type: string - description: The challenge ID in: query name: challenge_id required: true type: string + - description: The 4-digit code retrieved from Anytype Desktop app + in: query + name: code + required: true + type: string produces: - application/json responses: @@ -548,7 +548,7 @@ paths: summary: Retrieve a list of members for the specified Space tags: - spaces - /spaces/{space_id}/objectTypes: + /spaces/{space_id}/object_types: get: consumes: - application/json @@ -591,8 +591,8 @@ paths: $ref: '#/definitions/util.ServerError' summary: Retrieve object types in a specific space tags: - - types_and_templates - /spaces/{space_id}/objectTypes/{typeId}/templates: + - objects + /spaces/{space_id}/object_types/{type_id}/templates: get: consumes: - application/json @@ -604,7 +604,7 @@ paths: type: string - description: The ID of the object type in: path - name: typeId + name: type_id required: true type: string - description: The number of items to skip before starting to collect the result @@ -642,7 +642,7 @@ paths: $ref: '#/definitions/util.ServerError' summary: Retrieve a list of templates for a specific object type in a space tags: - - types_and_templates + - objects /spaces/{space_id}/objects: get: consumes: @@ -688,7 +688,7 @@ paths: $ref: '#/definitions/util.ServerError' summary: Retrieve objects in a specific space tags: - - space_objects + - objects post: consumes: - application/json @@ -727,7 +727,7 @@ paths: $ref: '#/definitions/util.ServerError' summary: Create a new object in a specific space tags: - - space_objects + - objects /spaces/{space_id}/objects/{object_id}: get: consumes: @@ -764,7 +764,7 @@ paths: $ref: '#/definitions/util.ServerError' summary: Retrieve a specific object in a space tags: - - space_objects + - objects put: consumes: - application/json @@ -810,7 +810,7 @@ paths: $ref: '#/definitions/util.ServerError' summary: Update an existing object in a specific space tags: - - space_objects + - objects /spaces/{space_id}/objects/{object_id}/export/{format}: post: consumes: @@ -856,7 +856,7 @@ paths: $ref: '#/definitions/util.ServerError' summary: Export an object tags: - - exports + - export securityDefinitions: BasicAuth: type: basic diff --git a/cmd/api/export/handler.go b/cmd/api/export/handler.go index 27cce4fc7..289b05122 100644 --- a/cmd/api/export/handler.go +++ b/cmd/api/export/handler.go @@ -11,7 +11,7 @@ import ( // GetObjectExportHandler exports an object to the specified format // // @Summary Export an object -// @Tags exports +// @Tags export // @Accept json // @Produce json // @Param space_id path string true "Space ID" diff --git a/cmd/api/object/handler.go b/cmd/api/object/handler.go index 61515b8c2..12b9a253d 100644 --- a/cmd/api/object/handler.go +++ b/cmd/api/object/handler.go @@ -12,7 +12,7 @@ import ( // GetObjectsHandler retrieves objects in a specific space // // @Summary Retrieve objects in a specific space -// @Tags space_objects +// @Tags objects // @Accept json // @Produce json // @Param space_id path string true "The ID of the space" @@ -50,7 +50,7 @@ func GetObjectsHandler(s *ObjectService) gin.HandlerFunc { // GetObjectHandler retrieves a specific object in a space // // @Summary Retrieve a specific object in a space -// @Tags space_objects +// @Tags objects // @Accept json // @Produce json // @Param space_id path string true "The ID of the space" @@ -84,7 +84,7 @@ func GetObjectHandler(s *ObjectService) gin.HandlerFunc { // CreateObjectHandler creates a new object in a specific space // // @Summary Create a new object in a specific space -// @Tags space_objects +// @Tags objects // @Accept json // @Produce json // @Param space_id path string true "The ID of the space" @@ -128,7 +128,7 @@ func CreateObjectHandler(s *ObjectService) gin.HandlerFunc { // UpdateObjectHandler updates an existing object in a specific space // // @Summary Update an existing object in a specific space -// @Tags space_objects +// @Tags objects // @Accept json // @Produce json // @Param space_id path string true "The ID of the space" @@ -172,7 +172,7 @@ func UpdateObjectHandler(s *ObjectService) gin.HandlerFunc { // GetTypesHandler retrieves object types in a specific space // // @Summary Retrieve object types in a specific space -// @Tags types_and_templates +// @Tags objects // @Accept json // @Produce json // @Param space_id path string true "The ID of the space" @@ -182,7 +182,7 @@ func UpdateObjectHandler(s *ObjectService) gin.HandlerFunc { // @Failure 403 {object} util.UnauthorizedError "Unauthorized" // @Failure 404 {object} util.NotFoundError "Resource not found" // @Failure 502 {object} util.ServerError "Internal server error" -// @Router /spaces/{space_id}/objectTypes [get] +// @Router /spaces/{space_id}/object_types [get] func GetTypesHandler(s *ObjectService) gin.HandlerFunc { return func(c *gin.Context) { spaceId := c.Param("space_id") @@ -208,22 +208,22 @@ func GetTypesHandler(s *ObjectService) gin.HandlerFunc { // GetTemplatesHandler retrieves a list of templates for a specific object type in a space // // @Summary Retrieve a list of templates for a specific object type in a space -// @Tags types_and_templates +// @Tags objects // @Accept json // @Produce json // @Param space_id path string true "The ID of the space" -// @Param typeId path string true "The ID of the object type" +// @Param type_id path string true "The ID of the object type" // @Param offset query int false "The number of items to skip before starting to collect the result set" // @Param limit query int false "The number of items to return" default(100) // @Success 200 {object} map[string][]ObjectTemplate "List of templates" // @Failure 403 {object} util.UnauthorizedError "Unauthorized" // @Failure 404 {object} util.NotFoundError "Resource not found" // @Failure 502 {object} util.ServerError "Internal server error" -// @Router /spaces/{space_id}/objectTypes/{typeId}/templates [get] +// @Router /spaces/{space_id}/object_types/{type_id}/templates [get] func GetTemplatesHandler(s *ObjectService) gin.HandlerFunc { return func(c *gin.Context) { spaceId := c.Param("space_id") - typeId := c.Param("typeId") + typeId := c.Param("type_id") offset := c.GetInt("offset") limit := c.GetInt("limit") diff --git a/cmd/api/server/router.go b/cmd/api/server/router.go index ec04196fc..ba0d309f3 100644 --- a/cmd/api/server/router.go +++ b/cmd/api/server/router.go @@ -37,11 +37,11 @@ func (s *Server) NewRouter() *gin.Engine { { // Auth v1.POST("/auth/display_code", auth.DisplayCodeHandler(s.authService)) - v1.GET("/auth/token", auth.TokenHandler(s.authService)) + v1.POST("/auth/token", auth.TokenHandler(s.authService)) // Export v1.POST("/spaces/:space_id/objects/:object_id/export/:format", export.GetObjectExportHandler(s.exportService)) - v1.GET("/spaces/:space_id/objects/export/:format", export.GetSpaceExportHandler(s.exportService)) + v1.POST("/spaces/:space_id/objects/export/:format", export.GetSpaceExportHandler(s.exportService)) // Object v1.GET("/spaces/:space_id/objects", paginator, object.GetObjectsHandler(s.objectService)) From d8c8ce4b004a1979cc6acdda47ce12d2f5c3e01e Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Thu, 9 Jan 2025 00:17:58 +0100 Subject: [PATCH 118/279] GO-4459: Add endpoint to delete object --- cmd/api/demo/api_demo.go | 1 + cmd/api/docs/docs.go | 84 ++++++++++++++++++++++++++++++--------- cmd/api/docs/swagger.json | 84 ++++++++++++++++++++++++++++++--------- cmd/api/docs/swagger.yaml | 57 ++++++++++++++++++++------ cmd/api/object/handler.go | 47 +++++++++++++++++++--- cmd/api/object/model.go | 11 +---- cmd/api/object/service.go | 25 +++++++++++- cmd/api/server/router.go | 1 + 8 files changed, 242 insertions(+), 68 deletions(-) diff --git a/cmd/api/demo/api_demo.go b/cmd/api/demo/api_demo.go index 58ba523c1..5901cd37c 100644 --- a/cmd/api/demo/api_demo.go +++ b/cmd/api/demo/api_demo.go @@ -66,6 +66,7 @@ func main() { // objects // {"GET", "/spaces/{space_id}/objects?limit={limit}&offset={offset}", map[string]interface{}{"space_id": testSpaceId, "limit": 100, "offset": 0}, nil}, // {"GET", "/spaces/{space_id}/objects/{object_id}", map[string]interface{}{"space_id": testSpaceId, "object_id": testObjectId}, nil}, + // {"DELETE", "/spaces/{space_id}/objects/{object_id}", map[string]interface{}{"space_id": "asd", "object_id": "asd"}, nil}, // {"POST", "/spaces/{space_id}/objects", map[string]interface{}{"space_id": testSpaceId}, map[string]interface{}{"name": "New Object from demo", "icon": "💥", "template_id": "", "object_type_unique_key": "ot-page", "with_chat": false}}, // {"PUT", "/spaces/{space_id}/objects/{object_id}", map[string]interface{}{"space_id": testSpaceId, "object_id": testObjectId}, map[string]interface{}{"name": "Updated Object"}}, // {"GET", "/spaces/{space_id}/object_types?limit={limit}&offset={offset}", map[string]interface{}{"space_id": testSpaceId, "limit": 100, "offset": 0}, nil}, diff --git a/cmd/api/docs/docs.go b/cmd/api/docs/docs.go index e83846886..bd37c0172 100644 --- a/cmd/api/docs/docs.go +++ b/cmd/api/docs/docs.go @@ -588,7 +588,7 @@ const docTemplate = `{ "200": { "description": "The created object", "schema": { - "$ref": "#/definitions/object.CreateObjectResponse" + "$ref": "#/definitions/object.ObjectResponse" } }, "400": { @@ -644,7 +644,7 @@ const docTemplate = `{ "200": { "description": "The requested object", "schema": { - "$ref": "#/definitions/object.Object" + "$ref": "#/definitions/object.ObjectResponse" } }, "403": { @@ -707,7 +707,7 @@ const docTemplate = `{ "200": { "description": "The updated object", "schema": { - "$ref": "#/definitions/object.UpdateObjectResponse" + "$ref": "#/definitions/object.ObjectResponse" } }, "400": { @@ -735,6 +735,60 @@ const docTemplate = `{ } } } + }, + "delete": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "objects" + ], + "summary": "Delete a specific object in a space", + "parameters": [ + { + "type": "string", + "description": "The ID of the space", + "name": "space_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "The ID of the object", + "name": "object_id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "The deleted object", + "schema": { + "$ref": "#/definitions/object.ObjectResponse" + } + }, + "403": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/util.UnauthorizedError" + } + }, + "404": { + "description": "Resource not found", + "schema": { + "$ref": "#/definitions/util.NotFoundError" + } + }, + "502": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/util.ServerError" + } + } + } } }, "/spaces/{space_id}/objects/{object_id}/export/{format}": { @@ -867,14 +921,6 @@ const docTemplate = `{ } } }, - "object.CreateObjectResponse": { - "type": "object", - "properties": { - "object": { - "$ref": "#/definitions/object.Object" - } - } - }, "object.Detail": { "type": "object", "properties": { @@ -967,6 +1013,14 @@ const docTemplate = `{ } } }, + "object.ObjectResponse": { + "type": "object", + "properties": { + "object": { + "$ref": "#/definitions/object.Object" + } + } + }, "object.ObjectTemplate": { "type": "object", "properties": { @@ -1033,14 +1087,6 @@ const docTemplate = `{ } } }, - "object.UpdateObjectResponse": { - "type": "object", - "properties": { - "object": { - "$ref": "#/definitions/object.Object" - } - } - }, "pagination.PaginatedResponse-space_Member": { "type": "object", "properties": { diff --git a/cmd/api/docs/swagger.json b/cmd/api/docs/swagger.json index d9d5fd390..7c882dc72 100644 --- a/cmd/api/docs/swagger.json +++ b/cmd/api/docs/swagger.json @@ -582,7 +582,7 @@ "200": { "description": "The created object", "schema": { - "$ref": "#/definitions/object.CreateObjectResponse" + "$ref": "#/definitions/object.ObjectResponse" } }, "400": { @@ -638,7 +638,7 @@ "200": { "description": "The requested object", "schema": { - "$ref": "#/definitions/object.Object" + "$ref": "#/definitions/object.ObjectResponse" } }, "403": { @@ -701,7 +701,7 @@ "200": { "description": "The updated object", "schema": { - "$ref": "#/definitions/object.UpdateObjectResponse" + "$ref": "#/definitions/object.ObjectResponse" } }, "400": { @@ -729,6 +729,60 @@ } } } + }, + "delete": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "objects" + ], + "summary": "Delete a specific object in a space", + "parameters": [ + { + "type": "string", + "description": "The ID of the space", + "name": "space_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "The ID of the object", + "name": "object_id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "The deleted object", + "schema": { + "$ref": "#/definitions/object.ObjectResponse" + } + }, + "403": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/util.UnauthorizedError" + } + }, + "404": { + "description": "Resource not found", + "schema": { + "$ref": "#/definitions/util.NotFoundError" + } + }, + "502": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/util.ServerError" + } + } + } } }, "/spaces/{space_id}/objects/{object_id}/export/{format}": { @@ -861,14 +915,6 @@ } } }, - "object.CreateObjectResponse": { - "type": "object", - "properties": { - "object": { - "$ref": "#/definitions/object.Object" - } - } - }, "object.Detail": { "type": "object", "properties": { @@ -961,6 +1007,14 @@ } } }, + "object.ObjectResponse": { + "type": "object", + "properties": { + "object": { + "$ref": "#/definitions/object.Object" + } + } + }, "object.ObjectTemplate": { "type": "object", "properties": { @@ -1027,14 +1081,6 @@ } } }, - "object.UpdateObjectResponse": { - "type": "object", - "properties": { - "object": { - "$ref": "#/definitions/object.Object" - } - } - }, "pagination.PaginatedResponse-space_Member": { "type": "object", "properties": { diff --git a/cmd/api/docs/swagger.yaml b/cmd/api/docs/swagger.yaml index 7bb0dae7a..6c2bc2bdc 100644 --- a/cmd/api/docs/swagger.yaml +++ b/cmd/api/docs/swagger.yaml @@ -39,11 +39,6 @@ definitions: vertical_align: type: string type: object - object.CreateObjectResponse: - properties: - object: - $ref: '#/definitions/object.Object' - type: object object.Detail: properties: details: @@ -107,6 +102,11 @@ definitions: example: object type: string type: object + object.ObjectResponse: + properties: + object: + $ref: '#/definitions/object.Object' + type: object object.ObjectTemplate: properties: icon: @@ -153,11 +153,6 @@ definitions: text: type: string type: object - object.UpdateObjectResponse: - properties: - object: - $ref: '#/definitions/object.Object' - type: object pagination.PaginatedResponse-space_Member: properties: data: @@ -712,7 +707,7 @@ paths: "200": description: The created object schema: - $ref: '#/definitions/object.CreateObjectResponse' + $ref: '#/definitions/object.ObjectResponse' "400": description: Bad request schema: @@ -729,6 +724,42 @@ paths: tags: - objects /spaces/{space_id}/objects/{object_id}: + delete: + consumes: + - application/json + parameters: + - description: The ID of the space + in: path + name: space_id + required: true + type: string + - description: The ID of the object + in: path + name: object_id + required: true + type: string + produces: + - application/json + responses: + "200": + description: The deleted object + schema: + $ref: '#/definitions/object.ObjectResponse' + "403": + description: Unauthorized + schema: + $ref: '#/definitions/util.UnauthorizedError' + "404": + description: Resource not found + schema: + $ref: '#/definitions/util.NotFoundError' + "502": + description: Internal server error + schema: + $ref: '#/definitions/util.ServerError' + summary: Delete a specific object in a space + tags: + - objects get: consumes: - application/json @@ -749,7 +780,7 @@ paths: "200": description: The requested object schema: - $ref: '#/definitions/object.Object' + $ref: '#/definitions/object.ObjectResponse' "403": description: Unauthorized schema: @@ -791,7 +822,7 @@ paths: "200": description: The updated object schema: - $ref: '#/definitions/object.UpdateObjectResponse' + $ref: '#/definitions/object.ObjectResponse' "400": description: Bad request schema: diff --git a/cmd/api/object/handler.go b/cmd/api/object/handler.go index 12b9a253d..c6f60d89f 100644 --- a/cmd/api/object/handler.go +++ b/cmd/api/object/handler.go @@ -55,7 +55,7 @@ func GetObjectsHandler(s *ObjectService) gin.HandlerFunc { // @Produce json // @Param space_id path string true "The ID of the space" // @Param object_id path string true "The ID of the object" -// @Success 200 {object} Object "The requested object" +// @Success 200 {object} ObjectResponse "The requested object" // @Failure 403 {object} util.UnauthorizedError "Unauthorized" // @Failure 404 {object} util.NotFoundError "Resource not found" // @Failure 502 {object} util.ServerError "Internal server error" @@ -77,7 +77,42 @@ func GetObjectHandler(s *ObjectService) gin.HandlerFunc { return } - c.JSON(http.StatusOK, GetObjectResponse{Object: object}) + c.JSON(http.StatusOK, ObjectResponse{Object: object}) + } +} + +// DeleteObjectHandler deletes a specific object in a space +// +// @Summary Delete a specific object in a space +// @Tags objects +// @Accept json +// @Produce json +// @Param space_id path string true "The ID of the space" +// @Param object_id path string true "The ID of the object" +// @Success 200 {object} ObjectResponse "The deleted object" +// @Failure 403 {object} util.UnauthorizedError "Unauthorized" +// @Failure 404 {object} util.NotFoundError "Resource not found" +// @Failure 502 {object} util.ServerError "Internal server error" +// @Router /spaces/{space_id}/objects/{object_id} [delete] +func DeleteObjectHandler(s *ObjectService) gin.HandlerFunc { + return func(c *gin.Context) { + spaceId := c.Param("space_id") + objectId := c.Param("object_id") + + object, err := s.DeleteObject(c.Request.Context(), spaceId, objectId) + code := util.MapErrorCode(err, + util.ErrToCode(ErrObjectNotFound, http.StatusNotFound), + util.ErrToCode(ErrFailedRetrieveObject, http.StatusInternalServerError), + util.ErrToCode(ErrFailedDeleteObject, http.StatusInternalServerError), + ) + + if code != http.StatusOK { + apiErr := util.CodeToAPIError(code, err.Error()) + c.JSON(code, apiErr) + return + } + + c.JSON(http.StatusOK, ObjectResponse{Object: object}) } } @@ -89,7 +124,7 @@ func GetObjectHandler(s *ObjectService) gin.HandlerFunc { // @Produce json // @Param space_id path string true "The ID of the space" // @Param object body map[string]string true "Object details (e.g., name)" -// @Success 200 {object} CreateObjectResponse "The created object" +// @Success 200 {object} ObjectResponse "The created object" // @Failure 400 {object} util.ValidationError "Bad request" // @Failure 403 {object} util.UnauthorizedError "Unauthorized" // @Failure 502 {object} util.ServerError "Internal server error" @@ -121,7 +156,7 @@ func CreateObjectHandler(s *ObjectService) gin.HandlerFunc { return } - c.JSON(http.StatusOK, CreateObjectResponse{Object: object}) + c.JSON(http.StatusOK, ObjectResponse{Object: object}) } } @@ -134,7 +169,7 @@ func CreateObjectHandler(s *ObjectService) gin.HandlerFunc { // @Param space_id path string true "The ID of the space" // @Param object_id path string true "The ID of the object" // @Param object body Object true "The updated object details" -// @Success 200 {object} UpdateObjectResponse "The updated object" +// @Success 200 {object} ObjectResponse "The updated object" // @Failure 400 {object} util.ValidationError "Bad request" // @Failure 403 {object} util.UnauthorizedError "Unauthorized" // @Failure 404 {object} util.NotFoundError "Resource not found" @@ -165,7 +200,7 @@ func UpdateObjectHandler(s *ObjectService) gin.HandlerFunc { return } - c.JSON(http.StatusNotImplemented, UpdateObjectResponse{Object: object}) + c.JSON(http.StatusNotImplemented, ObjectResponse{Object: object}) } } diff --git a/cmd/api/object/model.go b/cmd/api/object/model.go index 5cb45f5fd..faa4cb350 100644 --- a/cmd/api/object/model.go +++ b/cmd/api/object/model.go @@ -1,9 +1,5 @@ package object -type GetObjectResponse struct { - Object Object `json:"object"` -} - type CreateObjectRequest struct { Name string `json:"name"` Icon string `json:"icon"` @@ -15,15 +11,12 @@ type CreateObjectRequest struct { WithChat bool `json:"with_chat"` } -type CreateObjectResponse struct { - Object Object `json:"object"` -} - +// TODO: Add fields to the request type UpdateObjectRequest struct { Object Object `json:"object"` } -type UpdateObjectResponse struct { +type ObjectResponse struct { Object Object `json:"object"` } diff --git a/cmd/api/object/service.go b/cmd/api/object/service.go index 9e8872330..e482ca803 100644 --- a/cmd/api/object/service.go +++ b/cmd/api/object/service.go @@ -20,6 +20,7 @@ var ( ErrFailedRetrieveObject = errors.New("failed to retrieve object") ErrorFailedRetrieveObjects = errors.New("failed to retrieve list of objects") ErrNoObjectsFound = errors.New("no objects found") + ErrFailedDeleteObject = errors.New("failed to delete object") ErrFailedCreateObject = errors.New("failed to create object") ErrInputMissingSource = errors.New("source is missing for bookmark") ErrFailedSetRelationFeatured = errors.New("failed to set relation featured") @@ -39,8 +40,9 @@ var ( type Service interface { ListObjects(ctx context.Context, spaceId string, offset int, limit int) ([]Object, int, bool, error) GetObject(ctx context.Context, spaceId string, objectId string) (Object, error) - CreateObject(ctx context.Context, spaceId string, obj Object) (Object, error) - UpdateObject(ctx context.Context, spaceId string, obj Object) (Object, error) + DeleteObject(ctx context.Context, spaceId string, objectId string) error + CreateObject(ctx context.Context, spaceId string, request CreateObjectRequest) (Object, error) + UpdateObject(ctx context.Context, spaceId string, objectId string, request UpdateObjectRequest) (Object, error) ListTypes(ctx context.Context, spaceId string, offset int, limit int) ([]ObjectType, int, bool, error) ListTemplates(ctx context.Context, spaceId string, typeId string, offset int, limit int) ([]ObjectTemplate, int, bool, error) } @@ -148,6 +150,25 @@ func (s *ObjectService) GetObject(ctx context.Context, spaceId string, objectId return object, nil } +// DeleteObject deletes an existing object in a specific space. +func (s *ObjectService) DeleteObject(ctx context.Context, spaceId string, objectId string) (Object, error) { + object, err := s.GetObject(ctx, spaceId, objectId) + if err != nil { + return Object{}, err + } + + resp := s.mw.ObjectListSetIsArchived(ctx, &pb.RpcObjectListSetIsArchivedRequest{ + ObjectIds: []string{objectId}, + IsArchived: true, + }) + + if resp.Error.Code != pb.RpcObjectListSetIsArchivedResponseError_NULL { + return Object{}, ErrFailedDeleteObject + } + + return object, nil +} + // CreateObject creates a new object in a specific space. func (s *ObjectService) CreateObject(ctx context.Context, spaceId string, request CreateObjectRequest) (Object, error) { if request.ObjectTypeUniqueKey == "ot-bookmark" && request.Source == "" { diff --git a/cmd/api/server/router.go b/cmd/api/server/router.go index ba0d309f3..9104b84cb 100644 --- a/cmd/api/server/router.go +++ b/cmd/api/server/router.go @@ -46,6 +46,7 @@ func (s *Server) NewRouter() *gin.Engine { // Object v1.GET("/spaces/:space_id/objects", paginator, object.GetObjectsHandler(s.objectService)) v1.GET("/spaces/:space_id/objects/:object_id", object.GetObjectHandler(s.objectService)) + v1.DELETE("/spaces/:space_id/objects/:object_id", object.DeleteObjectHandler(s.objectService)) v1.GET("/spaces/:space_id/object_types", paginator, object.GetTypesHandler(s.objectService)) v1.GET("/spaces/:space_id/object_types/:typeId/templates", paginator, object.GetTemplatesHandler(s.objectService)) v1.POST("/spaces/:space_id/objects", object.CreateObjectHandler(s.objectService)) From 9cac2a3085b3c08f47dc7c60041b6817aefe0f9f Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Thu, 9 Jan 2025 15:47:41 +0100 Subject: [PATCH 119/279] GO-4146 Add cancel migration --- clientlibrary/service/service.pb.go | 693 ++-- core/account.go | 14 + core/application/account_select.go | 2 +- core/application/account_store_migrate.go | 33 +- docs/proto.md | 75 + pb/commands.pb.go | 3198 +++++++++++------- pb/protos/commands.proto | 21 + pb/protos/service/service.proto | 1 + pb/service/service.pb.go | 692 ++-- space/spacecore/storage/migrator/migrator.go | 10 + 10 files changed, 2833 insertions(+), 1906 deletions(-) diff --git a/clientlibrary/service/service.pb.go b/clientlibrary/service/service.pb.go index 31c4fa8ad..9e8787243 100644 --- a/clientlibrary/service/service.pb.go +++ b/clientlibrary/service/service.pb.go @@ -25,338 +25,340 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package func init() { proto.RegisterFile("pb/protos/service/service.proto", fileDescriptor_93a29dc403579097) } var fileDescriptor_93a29dc403579097 = []byte{ - // 5295 bytes of a gzipped FileDescriptorProto + // 5313 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x9d, 0x5b, 0x6f, 0x24, 0x49, 0x56, 0xf8, 0xc7, 0x2f, 0xff, 0xf9, 0x93, 0xcb, 0x0e, 0x50, 0x03, 0xc3, 0xec, 0xb0, 0xdb, 0xb7, 0xe9, 0xb6, 0xdd, 0x6d, 0xbb, 0xdc, 0xd3, 0x3d, 0x3d, 0xb3, 0xda, 0x45, 0x42, 0x6e, 0xbb, 0xed, 0x31, 0x6b, 0xbb, 0x8d, 0xab, 0xdc, 0x2d, 0x8d, 0x84, 0x44, 0x38, 0x2b, 0x5c, 0x4e, 0x9c, 0x95, 0x91, 0x9b, 0x19, 0x55, 0xee, 0x5a, 0x04, 0x02, 0x81, 0x40, 0x20, 0x10, 0x2b, 0x6e, 0xaf, 0x48, - 0x7c, 0x16, 0x1e, 0x78, 0xdc, 0x47, 0x1e, 0xd1, 0xcc, 0x1b, 0x9f, 0x02, 0x65, 0x64, 0x64, 0x5c, - 0x4e, 0x9e, 0x13, 0x99, 0xde, 0xa7, 0x6e, 0xd5, 0xf9, 0x9d, 0x73, 0xe2, 0x7a, 0xe2, 0x44, 0x64, - 0x64, 0x3a, 0xba, 0x9b, 0x5f, 0x6c, 0xe7, 0x85, 0x90, 0xa2, 0xdc, 0x2e, 0x79, 0xb1, 0x48, 0x62, - 0xde, 0xfc, 0x3b, 0x54, 0x3f, 0x0f, 0xde, 0x67, 0xd9, 0x52, 0x2e, 0x73, 0xfe, 0xc9, 0xc7, 0x96, - 0x8c, 0xc5, 0x6c, 0xc6, 0xb2, 0x49, 0x59, 0x23, 0x9f, 0x7c, 0x64, 0x25, 0x7c, 0xc1, 0x33, 0xa9, - 0x7f, 0x7f, 0xf6, 0x9f, 0xff, 0xbb, 0x12, 0x7d, 0xb0, 0x9b, 0x26, 0x3c, 0x93, 0xbb, 0x5a, 0x63, - 0xf0, 0x75, 0xf4, 0xdd, 0x9d, 0x3c, 0x3f, 0xe0, 0xf2, 0x0d, 0x2f, 0xca, 0x44, 0x64, 0x83, 0x4f, - 0x87, 0xda, 0xc1, 0xf0, 0x2c, 0x8f, 0x87, 0x3b, 0x79, 0x3e, 0xb4, 0xc2, 0xe1, 0x19, 0xff, 0xe9, - 0x9c, 0x97, 0xf2, 0x93, 0x87, 0x61, 0xa8, 0xcc, 0x45, 0x56, 0xf2, 0xc1, 0x65, 0xf4, 0x1b, 0x3b, - 0x79, 0x3e, 0xe2, 0x72, 0x8f, 0x57, 0x15, 0x18, 0x49, 0x26, 0xf9, 0x60, 0xad, 0xa5, 0xea, 0x03, - 0xc6, 0xc7, 0x7a, 0x37, 0xa8, 0xfd, 0x8c, 0xa3, 0xef, 0x54, 0x7e, 0xae, 0xe6, 0x72, 0x22, 0x6e, - 0xb2, 0xc1, 0xfd, 0xb6, 0xa2, 0x16, 0x19, 0xdb, 0x0f, 0x42, 0x88, 0xb6, 0xfa, 0x36, 0xfa, 0xd5, - 0xb7, 0x2c, 0x4d, 0xb9, 0xdc, 0x2d, 0x78, 0x55, 0x70, 0x5f, 0xa7, 0x16, 0x0d, 0x6b, 0x99, 0xb1, - 0xfb, 0x69, 0x90, 0xd1, 0x86, 0xbf, 0x8e, 0xbe, 0x5b, 0x4b, 0xce, 0x78, 0x2c, 0x16, 0xbc, 0x18, - 0xa0, 0x5a, 0x5a, 0x48, 0x34, 0x79, 0x0b, 0x82, 0xb6, 0x77, 0x45, 0xb6, 0xe0, 0x85, 0xc4, 0x6d, - 0x6b, 0x61, 0xd8, 0xb6, 0x85, 0xb4, 0xed, 0xbf, 0x5d, 0x89, 0xbe, 0xbf, 0x13, 0xc7, 0x62, 0x9e, - 0xc9, 0x23, 0x11, 0xb3, 0xf4, 0x28, 0xc9, 0xae, 0x4f, 0xf8, 0xcd, 0xee, 0x55, 0xc5, 0x67, 0x53, - 0x3e, 0x78, 0xee, 0xb7, 0x6a, 0x8d, 0x0e, 0x0d, 0x3b, 0x74, 0x61, 0xe3, 0xfb, 0xf3, 0xdb, 0x29, - 0xe9, 0xb2, 0xfc, 0xe3, 0x4a, 0x74, 0x07, 0x96, 0x65, 0x24, 0xd2, 0x05, 0xb7, 0xa5, 0x79, 0xd1, - 0x61, 0xd8, 0xc7, 0x4d, 0x79, 0xbe, 0xb8, 0xad, 0x9a, 0x2e, 0x51, 0x1a, 0x7d, 0xe8, 0x0e, 0x97, - 0x11, 0x2f, 0xd5, 0x74, 0x7a, 0x4c, 0x8f, 0x08, 0x8d, 0x18, 0xcf, 0x4f, 0xfa, 0xa0, 0xda, 0x5b, - 0x12, 0x0d, 0xb4, 0xb7, 0x54, 0x94, 0xc6, 0xd9, 0x3a, 0x6a, 0xc1, 0x21, 0x8c, 0xaf, 0xc7, 0x3d, - 0x48, 0xed, 0xea, 0x8f, 0xa2, 0x5f, 0x7b, 0x2b, 0x8a, 0xeb, 0x32, 0x67, 0x31, 0xd7, 0x53, 0xe1, - 0x91, 0xaf, 0xdd, 0x48, 0xe1, 0x6c, 0x58, 0xed, 0xc2, 0x9c, 0x41, 0xdb, 0x08, 0x5f, 0xe7, 0x1c, - 0xc6, 0x20, 0xab, 0x58, 0x09, 0xa9, 0x41, 0x0b, 0x21, 0x6d, 0xfb, 0x3a, 0x1a, 0x58, 0xdb, 0x17, - 0x7f, 0xcc, 0x63, 0xb9, 0x33, 0x99, 0xc0, 0x5e, 0xb1, 0xba, 0x8a, 0x18, 0xee, 0x4c, 0x26, 0x54, - 0xaf, 0xe0, 0xa8, 0x76, 0x76, 0x13, 0x7d, 0x04, 0x9c, 0x1d, 0x25, 0xa5, 0x72, 0xb8, 0x15, 0xb6, - 0xa2, 0x31, 0xe3, 0x74, 0xd8, 0x17, 0xd7, 0x8e, 0xff, 0x7c, 0x25, 0xfa, 0x1e, 0xe2, 0xf9, 0x8c, - 0xcf, 0xc4, 0x82, 0x0f, 0x9e, 0x76, 0x5b, 0xab, 0x49, 0xe3, 0xff, 0xb3, 0x5b, 0x68, 0x20, 0xc3, - 0x64, 0xc4, 0x53, 0x1e, 0x4b, 0x72, 0x98, 0xd4, 0xe2, 0xce, 0x61, 0x62, 0x30, 0x67, 0x86, 0x35, - 0xc2, 0x03, 0x2e, 0x77, 0xe7, 0x45, 0xc1, 0x33, 0x49, 0xf6, 0xa5, 0x45, 0x3a, 0xfb, 0xd2, 0x43, - 0x91, 0xfa, 0x1c, 0x70, 0xb9, 0x93, 0xa6, 0x64, 0x7d, 0x6a, 0x71, 0x67, 0x7d, 0x0c, 0xa6, 0x3d, - 0xc4, 0xd1, 0xaf, 0x3b, 0x2d, 0x26, 0x0f, 0xb3, 0x4b, 0x31, 0xa0, 0xdb, 0x42, 0xc9, 0x8d, 0x8f, - 0xb5, 0x4e, 0x0e, 0xa9, 0xc6, 0xab, 0x77, 0xb9, 0x28, 0xe8, 0x6e, 0xa9, 0xc5, 0x9d, 0xd5, 0x30, - 0x98, 0xf6, 0xf0, 0x87, 0xd1, 0x07, 0x3a, 0x4a, 0x36, 0xeb, 0xd9, 0x43, 0x34, 0x84, 0xc2, 0x05, - 0xed, 0x51, 0x07, 0xd5, 0x32, 0x7f, 0x9c, 0x4c, 0x8b, 0x2a, 0xfa, 0xe0, 0xe6, 0xb5, 0xb4, 0xc3, - 0xbc, 0xa5, 0x6c, 0xec, 0xd1, 0x32, 0x1d, 0xdb, 0x3e, 0x45, 0xf5, 0x40, 0x64, 0x7b, 0x18, 0x86, - 0x5a, 0xb6, 0xf7, 0x78, 0xca, 0x49, 0xdb, 0xb5, 0xb0, 0xc3, 0xb6, 0x81, 0xb4, 0xed, 0x22, 0xfa, - 0x2d, 0xd3, 0xea, 0xd5, 0x32, 0xad, 0xe4, 0xd5, 0x1a, 0xb0, 0x41, 0x34, 0xab, 0x0b, 0x19, 0x5f, - 0x9b, 0xfd, 0xe0, 0x56, 0x7d, 0xf4, 0x04, 0xc7, 0xeb, 0x03, 0xa6, 0xf7, 0xc3, 0x30, 0xa4, 0x6d, - 0xff, 0xdd, 0x4a, 0xf4, 0x03, 0x2d, 0x7b, 0x95, 0xb1, 0x8b, 0x94, 0xab, 0x15, 0xf7, 0x84, 0xcb, - 0x1b, 0x51, 0x5c, 0x8f, 0x96, 0x59, 0x4c, 0x64, 0x17, 0x38, 0xdc, 0x91, 0x5d, 0x90, 0x4a, 0x4e, - 0x42, 0xa9, 0x2b, 0x2a, 0x45, 0x0e, 0x13, 0xca, 0xa6, 0x06, 0x52, 0xe4, 0x54, 0x42, 0xe9, 0x23, - 0x2d, 0xab, 0xc7, 0x55, 0x54, 0xc6, 0xad, 0x1e, 0xbb, 0x61, 0xf8, 0x41, 0x08, 0xb1, 0x51, 0xb1, - 0x19, 0xc0, 0x22, 0xbb, 0x4c, 0xa6, 0xe7, 0xf9, 0xa4, 0x1a, 0xc6, 0x8f, 0xf1, 0x11, 0xea, 0x20, - 0x44, 0x54, 0x24, 0x50, 0xed, 0xed, 0x1f, 0x6c, 0xde, 0xa5, 0x67, 0xea, 0x7e, 0x21, 0x66, 0x47, - 0x7c, 0xca, 0xe2, 0xa5, 0x0e, 0x2f, 0x9f, 0x87, 0xe6, 0x35, 0xa4, 0x4d, 0x21, 0x5e, 0xdc, 0x52, - 0x4b, 0x97, 0xe7, 0xdf, 0x57, 0xa2, 0x87, 0x4d, 0xf5, 0xaf, 0x58, 0x36, 0xe5, 0xba, 0x3f, 0xeb, - 0xd2, 0xef, 0x64, 0x93, 0x33, 0x5e, 0x4a, 0x56, 0xc8, 0xc1, 0x8f, 0xf0, 0x4a, 0x86, 0x74, 0x4c, - 0xd9, 0x7e, 0xfc, 0x4b, 0xe9, 0xda, 0x5e, 0x1f, 0x55, 0x71, 0x53, 0x87, 0x00, 0xbf, 0xd7, 0x95, - 0x04, 0x06, 0x80, 0x07, 0x21, 0xc4, 0xf6, 0xba, 0x12, 0x1c, 0x66, 0x8b, 0x44, 0xf2, 0x03, 0x9e, - 0xf1, 0xa2, 0xdd, 0xeb, 0xb5, 0xaa, 0x8f, 0x10, 0xbd, 0x4e, 0xa0, 0x36, 0xd8, 0x78, 0xde, 0xcc, - 0xda, 0xbb, 0x11, 0x30, 0xd2, 0x5a, 0x7d, 0x37, 0xfb, 0xc1, 0x76, 0xf3, 0xe8, 0xf8, 0x3c, 0xe3, - 0x0b, 0x71, 0x0d, 0x37, 0x8f, 0xae, 0x89, 0x1a, 0x20, 0x36, 0x8f, 0x28, 0x68, 0x17, 0x48, 0xc7, - 0xcf, 0x9b, 0x84, 0xdf, 0x80, 0x05, 0xd2, 0x55, 0xae, 0xc4, 0xc4, 0x02, 0x89, 0x60, 0xda, 0xc3, - 0x49, 0xf4, 0x2b, 0x4a, 0xf8, 0xfb, 0x22, 0xc9, 0x06, 0x77, 0x11, 0xa5, 0x4a, 0x60, 0xac, 0xde, - 0xa3, 0x01, 0x50, 0xe2, 0xea, 0xd7, 0x5d, 0x96, 0xc5, 0x3c, 0x45, 0x4b, 0x6c, 0xc5, 0xc1, 0x12, - 0x7b, 0x98, 0xcd, 0x4c, 0x94, 0xb0, 0x8a, 0x5f, 0xa3, 0x2b, 0x56, 0x24, 0xd9, 0x74, 0x80, 0xe9, - 0x3a, 0x72, 0x22, 0x33, 0xc1, 0x38, 0x30, 0x84, 0xb5, 0xe2, 0x4e, 0x9e, 0x17, 0x55, 0x58, 0xc4, - 0x86, 0xb0, 0x8f, 0x04, 0x87, 0x70, 0x0b, 0xc5, 0xbd, 0xed, 0xf1, 0x38, 0x4d, 0xb2, 0xa0, 0x37, - 0x8d, 0xf4, 0xf1, 0x66, 0x51, 0x30, 0x78, 0x8f, 0x38, 0x5b, 0xf0, 0xa6, 0x66, 0x58, 0xcb, 0xb8, - 0x40, 0x70, 0xf0, 0x02, 0xd0, 0x6e, 0x03, 0x95, 0xf8, 0x98, 0x5d, 0xf3, 0xaa, 0x81, 0x79, 0xb5, - 0xae, 0x0d, 0x30, 0x7d, 0x8f, 0x20, 0xb6, 0x81, 0x38, 0xa9, 0x5d, 0xcd, 0xa3, 0x8f, 0x94, 0xfc, - 0x94, 0x15, 0x32, 0x89, 0x93, 0x9c, 0x65, 0xcd, 0xf6, 0x02, 0x9b, 0xd7, 0x2d, 0xca, 0xb8, 0xdc, - 0xea, 0x49, 0x6b, 0xb7, 0xff, 0xb6, 0x12, 0xdd, 0x87, 0x7e, 0x4f, 0x79, 0x31, 0x4b, 0xd4, 0x2e, - 0xb5, 0xac, 0x83, 0xf0, 0xe0, 0xcb, 0xb0, 0xd1, 0x96, 0x82, 0x29, 0xcd, 0x0f, 0x6f, 0xaf, 0x68, - 0x93, 0xa1, 0x91, 0xce, 0xdc, 0x5f, 0x17, 0x93, 0xd6, 0x29, 0xce, 0xa8, 0x49, 0xc7, 0x95, 0x90, - 0x48, 0x86, 0x5a, 0x10, 0x98, 0xe1, 0xe7, 0x59, 0xd9, 0x58, 0xc7, 0x66, 0xb8, 0x15, 0x07, 0x67, - 0xb8, 0x87, 0x69, 0x0f, 0x7f, 0x10, 0x45, 0xf5, 0x5e, 0x4e, 0xed, 0xb7, 0xfd, 0x98, 0xa3, 0x37, - 0x79, 0xde, 0x66, 0xfb, 0x7e, 0x80, 0xb0, 0x0b, 0x5d, 0xfd, 0xbb, 0x3a, 0x46, 0x18, 0xa0, 0x1a, - 0x4a, 0x44, 0x2c, 0x74, 0x00, 0x81, 0x05, 0x1d, 0x5d, 0x89, 0x1b, 0xbc, 0xa0, 0x95, 0x24, 0x5c, - 0x50, 0x4d, 0xd8, 0x83, 0x3d, 0x5d, 0x50, 0xec, 0x60, 0xaf, 0x29, 0x46, 0xe8, 0x60, 0x0f, 0x32, - 0xda, 0xb0, 0x88, 0x7e, 0xd3, 0x35, 0xfc, 0x52, 0x88, 0xeb, 0x19, 0x2b, 0xae, 0x07, 0x4f, 0x68, - 0xe5, 0x86, 0x31, 0x8e, 0x36, 0x7a, 0xb1, 0x36, 0xa8, 0xb9, 0x0e, 0xab, 0x34, 0xe9, 0xbc, 0x48, - 0x41, 0x50, 0xf3, 0x6c, 0x68, 0x84, 0x08, 0x6a, 0x04, 0x6a, 0x47, 0xa5, 0xeb, 0x6d, 0xc4, 0xe1, - 0x56, 0xd2, 0x53, 0x1f, 0x71, 0x6a, 0x2b, 0x89, 0x60, 0x70, 0x08, 0x1d, 0x14, 0x2c, 0xbf, 0xc2, - 0x87, 0x90, 0x12, 0x85, 0x87, 0x50, 0x83, 0xc0, 0xfe, 0x1e, 0x71, 0x56, 0xc4, 0x57, 0x78, 0x7f, - 0xd7, 0xb2, 0x70, 0x7f, 0x1b, 0x06, 0xf6, 0x77, 0x2d, 0x78, 0x9b, 0xc8, 0xab, 0x63, 0x2e, 0x19, - 0xde, 0xdf, 0x3e, 0x13, 0xee, 0xef, 0x16, 0x6b, 0xf3, 0x30, 0xd7, 0xe1, 0x68, 0x7e, 0x51, 0xc6, - 0x45, 0x72, 0xc1, 0x07, 0x01, 0x2b, 0x06, 0x22, 0xf2, 0x30, 0x12, 0xd6, 0x3e, 0x7f, 0xbe, 0x12, - 0xdd, 0x6d, 0xba, 0x5d, 0x94, 0xa5, 0x8e, 0x79, 0xbe, 0xfb, 0x17, 0x78, 0xff, 0x12, 0x38, 0x71, - 0xd4, 0xda, 0x43, 0xcd, 0x59, 0x13, 0xf0, 0x22, 0x9d, 0x67, 0xa5, 0x29, 0xd4, 0x97, 0x7d, 0xac, - 0x3b, 0x0a, 0xc4, 0x9a, 0xd0, 0x4b, 0xd1, 0x2e, 0xc7, 0xba, 0x7f, 0x1a, 0xd9, 0xe1, 0xa4, 0x04, - 0xcb, 0x71, 0xd3, 0xde, 0x0e, 0x41, 0x2c, 0xc7, 0x38, 0x09, 0x87, 0xc2, 0x41, 0x21, 0xe6, 0x79, - 0xd9, 0x31, 0x14, 0x00, 0x14, 0x1e, 0x0a, 0x6d, 0x58, 0xfb, 0x7c, 0x17, 0xfd, 0xb6, 0x3b, 0xfc, - 0xdc, 0xc6, 0xde, 0xa2, 0xc7, 0x14, 0xd6, 0xc4, 0xc3, 0xbe, 0xb8, 0x4d, 0x48, 0x1b, 0xcf, 0x72, - 0x8f, 0x4b, 0x96, 0xa4, 0xe5, 0x60, 0x15, 0xb7, 0xd1, 0xc8, 0x89, 0x84, 0x14, 0xe3, 0x60, 0x7c, - 0xdb, 0x9b, 0xe7, 0x69, 0x12, 0xb7, 0x0f, 0xba, 0xb5, 0xae, 0x11, 0x87, 0xe3, 0x9b, 0x8b, 0xc1, - 0x78, 0x5d, 0x2d, 0xf9, 0xea, 0x3f, 0xe3, 0x65, 0xce, 0xf1, 0x78, 0xed, 0x21, 0xe1, 0x78, 0x0d, - 0x51, 0x58, 0x9f, 0x11, 0x97, 0x47, 0x6c, 0x29, 0xe6, 0x44, 0xbc, 0x36, 0xe2, 0x70, 0x7d, 0x5c, - 0xcc, 0xe6, 0x84, 0xc6, 0xc3, 0x61, 0x26, 0x79, 0x91, 0xb1, 0x74, 0x3f, 0x65, 0xd3, 0x72, 0x40, - 0xc4, 0x18, 0x9f, 0x22, 0x72, 0x42, 0x9a, 0x46, 0x9a, 0xf1, 0xb0, 0xdc, 0x67, 0x0b, 0x51, 0x24, - 0x92, 0x6e, 0x46, 0x8b, 0x74, 0x36, 0xa3, 0x87, 0xa2, 0xde, 0x76, 0x8a, 0xf8, 0x2a, 0x59, 0xf0, - 0x49, 0xc0, 0x5b, 0x83, 0xf4, 0xf0, 0xe6, 0xa0, 0x48, 0xa7, 0x8d, 0xc4, 0xbc, 0x88, 0x39, 0xd9, - 0x69, 0xb5, 0xb8, 0xb3, 0xd3, 0x0c, 0xa6, 0x3d, 0xfc, 0xd5, 0x4a, 0xf4, 0x3b, 0xb5, 0xd4, 0x3d, - 0x7d, 0xde, 0x63, 0xe5, 0xd5, 0x85, 0x60, 0xc5, 0x64, 0xf0, 0x19, 0x66, 0x07, 0x45, 0x8d, 0xeb, - 0x67, 0xb7, 0x51, 0x81, 0xcd, 0x7a, 0x94, 0x94, 0xce, 0x8c, 0x43, 0x9b, 0xd5, 0x43, 0xc2, 0xcd, - 0x0a, 0x51, 0x18, 0x40, 0x94, 0xbc, 0x3e, 0x8a, 0x59, 0x25, 0xf5, 0xfd, 0xf3, 0x98, 0xb5, 0x4e, - 0x0e, 0xc6, 0xc7, 0x4a, 0xe8, 0x8f, 0x96, 0x2d, 0xca, 0x06, 0x3e, 0x62, 0x86, 0x7d, 0x71, 0xd2, - 0xb3, 0x99, 0x15, 0x61, 0xcf, 0xad, 0x99, 0x31, 0xec, 0x8b, 0x13, 0x9e, 0x9d, 0xb0, 0x16, 0xf2, - 0x8c, 0x84, 0xb6, 0x61, 0x5f, 0x1c, 0x66, 0x5f, 0x9a, 0x69, 0xd6, 0x85, 0x27, 0x01, 0x3b, 0x70, - 0x6d, 0xd8, 0xe8, 0xc5, 0x6a, 0x87, 0x7f, 0xb3, 0x12, 0x7d, 0xdf, 0x7a, 0x3c, 0x16, 0x93, 0xe4, - 0x72, 0x59, 0x43, 0x6f, 0x58, 0x3a, 0xe7, 0xe5, 0xe0, 0x19, 0x65, 0xad, 0xcd, 0x9a, 0x12, 0x3c, - 0xbf, 0x95, 0x0e, 0x9c, 0x3b, 0x3b, 0x79, 0x9e, 0x2e, 0xc7, 0x7c, 0x96, 0xa7, 0xe4, 0xdc, 0xf1, - 0x90, 0xf0, 0xdc, 0x81, 0x28, 0xcc, 0xca, 0xc7, 0xa2, 0xca, 0xf9, 0xd1, 0xac, 0x5c, 0x89, 0xc2, - 0x59, 0x79, 0x83, 0xc0, 0x5c, 0x69, 0x2c, 0x76, 0x45, 0x9a, 0xf2, 0x58, 0xb6, 0x9f, 0x60, 0x1b, - 0x4d, 0x4b, 0x84, 0x73, 0x25, 0x40, 0xda, 0xd3, 0x98, 0x66, 0x0f, 0xc9, 0x0a, 0xfe, 0x72, 0x79, - 0x94, 0x64, 0xd7, 0x03, 0x3c, 0x2d, 0xb0, 0x00, 0x71, 0x1a, 0x83, 0x82, 0x70, 0xaf, 0x7a, 0x9e, - 0x4d, 0x04, 0xbe, 0x57, 0xad, 0x24, 0xe1, 0xbd, 0xaa, 0x26, 0xa0, 0xc9, 0x33, 0x4e, 0x99, 0xac, - 0x24, 0x61, 0x93, 0x9a, 0xc0, 0x42, 0xa1, 0x3e, 0xb3, 0x27, 0x43, 0x21, 0x38, 0xa5, 0x5f, 0xeb, - 0xe4, 0xe0, 0x08, 0x6d, 0x36, 0xad, 0xfb, 0x5c, 0xc6, 0x57, 0xf8, 0x08, 0xf5, 0x90, 0xf0, 0x08, - 0x85, 0x28, 0xac, 0xd2, 0x58, 0x98, 0x4d, 0xf7, 0x2a, 0x3e, 0x3e, 0x5a, 0x1b, 0xee, 0xb5, 0x4e, - 0x0e, 0x6e, 0x23, 0x0f, 0x67, 0xaa, 0xcd, 0xd0, 0x41, 0x5e, 0xcb, 0xc2, 0xdb, 0x48, 0xc3, 0xc0, - 0xd2, 0xd7, 0x82, 0xaa, 0x39, 0xf1, 0xd2, 0x5b, 0x79, 0xb8, 0xf4, 0x1e, 0xa7, 0x9d, 0xfc, 0x8b, - 0xd9, 0xc6, 0xd5, 0xd2, 0x13, 0x51, 0xcd, 0x91, 0x37, 0x2c, 0x4d, 0x26, 0x4c, 0xf2, 0xb1, 0xb8, - 0xe6, 0x19, 0xbe, 0x63, 0xd2, 0xa5, 0xad, 0xf9, 0xa1, 0xa7, 0x10, 0xde, 0x31, 0x85, 0x15, 0xe1, - 0x38, 0xa9, 0xe9, 0xf3, 0x92, 0xef, 0xb2, 0x92, 0x88, 0x64, 0x1e, 0x12, 0x1e, 0x27, 0x10, 0x85, - 0xf9, 0x6a, 0x2d, 0x7f, 0xf5, 0x2e, 0xe7, 0x45, 0xc2, 0xb3, 0x98, 0xe3, 0xf9, 0x2a, 0xa4, 0xc2, - 0xf9, 0x2a, 0x42, 0xc3, 0xbd, 0xda, 0x1e, 0x93, 0xfc, 0xe5, 0x72, 0x9c, 0xcc, 0x78, 0x29, 0xd9, - 0x2c, 0xc7, 0xf7, 0x6a, 0x00, 0x0a, 0xef, 0xd5, 0xda, 0x70, 0xeb, 0x68, 0xc8, 0x04, 0xc4, 0xf6, - 0xc5, 0x17, 0x48, 0x04, 0x2e, 0xbe, 0x10, 0x28, 0x6c, 0x58, 0x0b, 0xa0, 0x87, 0xc3, 0x2d, 0x2b, - 0xc1, 0xc3, 0x61, 0x9a, 0x6e, 0x1d, 0xb8, 0x19, 0x66, 0x54, 0x4d, 0xcd, 0x8e, 0xa2, 0x8f, 0xdc, - 0x29, 0xba, 0xd1, 0x8b, 0xc5, 0x4f, 0xf8, 0xce, 0x78, 0xca, 0xd4, 0xb2, 0x15, 0x38, 0x46, 0x6b, - 0x98, 0x3e, 0x27, 0x7c, 0x0e, 0xab, 0x1d, 0xfe, 0xc5, 0x4a, 0xf4, 0x09, 0xe6, 0xf1, 0x75, 0xae, - 0xfc, 0x3e, 0xed, 0xb6, 0x55, 0x93, 0xc4, 0xcd, 0x9e, 0xb0, 0x86, 0x2e, 0xc3, 0x9f, 0x44, 0x1f, - 0x37, 0x22, 0x7b, 0xf1, 0x47, 0x17, 0xc0, 0x4f, 0xda, 0x4c, 0xf9, 0x21, 0x67, 0xdc, 0x6f, 0xf7, - 0xe6, 0xed, 0x7e, 0xc8, 0x2f, 0x57, 0x09, 0xf6, 0x43, 0xc6, 0x86, 0x16, 0x13, 0xfb, 0x21, 0x04, - 0xb3, 0xb3, 0xd3, 0xad, 0xde, 0xdb, 0x44, 0x5e, 0xa9, 0x7c, 0x0b, 0xcc, 0x4e, 0xaf, 0xac, 0x06, - 0x22, 0x66, 0x27, 0x09, 0xc3, 0x8c, 0xa4, 0x01, 0xab, 0xb9, 0x89, 0xc5, 0x72, 0x63, 0xc8, 0x9d, - 0x99, 0xeb, 0xdd, 0x20, 0x1c, 0xaf, 0x8d, 0x58, 0x6f, 0x7d, 0x9e, 0x84, 0x2c, 0x80, 0xed, 0xcf, - 0x46, 0x2f, 0x56, 0x3b, 0xfc, 0xb3, 0xe8, 0x7b, 0xad, 0x8a, 0xed, 0x73, 0x26, 0xe7, 0x05, 0x9f, - 0x0c, 0xb6, 0x3b, 0xca, 0xdd, 0x80, 0xc6, 0xf5, 0xd3, 0xfe, 0x0a, 0xad, 0x1c, 0xbd, 0xe1, 0xea, - 0x61, 0x65, 0xca, 0xf0, 0x2c, 0x64, 0xd2, 0x67, 0x83, 0x39, 0x3a, 0xad, 0xd3, 0xda, 0x66, 0xbb, - 0xa3, 0x6b, 0x67, 0xc1, 0x92, 0x54, 0x3d, 0xa4, 0xfb, 0x2c, 0x64, 0xd4, 0x43, 0x83, 0xdb, 0x6c, - 0x52, 0xa5, 0x15, 0x99, 0xd5, 0x1c, 0x77, 0xb6, 0x67, 0x9b, 0x74, 0x24, 0x40, 0x76, 0x67, 0x5b, - 0x3d, 0x69, 0xed, 0x56, 0x36, 0x4b, 0x5e, 0xf5, 0xb3, 0x3b, 0xc8, 0x31, 0xaf, 0x5a, 0x15, 0x19, - 0xe9, 0x5b, 0x3d, 0x69, 0xed, 0xf5, 0x4f, 0xa3, 0x8f, 0xdb, 0x5e, 0xf5, 0x42, 0xb4, 0xdd, 0x69, - 0x0a, 0xac, 0x45, 0x4f, 0xfb, 0x2b, 0xd8, 0x2d, 0xcd, 0x57, 0x49, 0x29, 0x45, 0xb1, 0x1c, 0x5d, - 0x89, 0x9b, 0xe6, 0x42, 0xbd, 0x3f, 0x5b, 0x35, 0x30, 0x74, 0x08, 0x62, 0x4b, 0x83, 0x93, 0x2d, - 0x57, 0xf6, 0xe2, 0x7d, 0x49, 0xb8, 0x72, 0x88, 0x0e, 0x57, 0x3e, 0x69, 0x63, 0x55, 0x53, 0x2b, - 0xfb, 0x96, 0xc0, 0x1a, 0x5e, 0xd4, 0xf6, 0x9b, 0x02, 0xeb, 0xdd, 0xa0, 0xcd, 0x58, 0xb4, 0x78, - 0x2f, 0xb9, 0xbc, 0x34, 0x75, 0xc2, 0x4b, 0xea, 0x22, 0x44, 0xc6, 0x42, 0xa0, 0x36, 0xe9, 0xde, - 0x4f, 0x52, 0xae, 0x4e, 0xf4, 0x5f, 0x5f, 0x5e, 0xa6, 0x82, 0x4d, 0x40, 0xd2, 0x5d, 0x89, 0x87, - 0xae, 0x9c, 0x48, 0xba, 0x31, 0xce, 0x3e, 0x23, 0xae, 0xa4, 0x67, 0x3c, 0x16, 0x59, 0x9c, 0xa4, - 0xf0, 0x02, 0xa0, 0xd2, 0x34, 0x42, 0xe2, 0x19, 0x71, 0x0b, 0xb2, 0x0b, 0x63, 0x25, 0xaa, 0xa6, - 0x7d, 0x53, 0xfe, 0x47, 0x6d, 0x45, 0x47, 0x4c, 0x2c, 0x8c, 0x08, 0x66, 0xf7, 0x9e, 0x95, 0xf0, - 0x3c, 0x57, 0xc6, 0xef, 0xb5, 0xb5, 0x6a, 0x09, 0xb1, 0xf7, 0xf4, 0x09, 0xbb, 0x87, 0xaa, 0x7e, - 0xdf, 0x13, 0x37, 0x99, 0x32, 0xfa, 0xa0, 0xad, 0xd2, 0xc8, 0x88, 0x3d, 0x14, 0x64, 0xb4, 0xe1, - 0x9f, 0x44, 0xff, 0x5f, 0x19, 0x2e, 0x44, 0x3e, 0xb8, 0x83, 0x28, 0x14, 0xce, 0x5d, 0xbd, 0xbb, - 0xa4, 0xdc, 0x5e, 0x39, 0x35, 0x63, 0xe3, 0xbc, 0x64, 0x53, 0x78, 0xe5, 0xd4, 0xf6, 0xb8, 0x92, - 0x12, 0x57, 0x4e, 0xdb, 0x94, 0x3f, 0x2a, 0x4e, 0xc4, 0x44, 0x5b, 0x47, 0x6a, 0x68, 0x84, 0xa1, - 0x51, 0xe1, 0x42, 0x36, 0x99, 0x39, 0x61, 0x8b, 0x64, 0x6a, 0x16, 0x9c, 0x3a, 0x6e, 0x95, 0x20, - 0x99, 0xb1, 0xcc, 0xd0, 0x81, 0x88, 0x64, 0x86, 0x84, 0xb5, 0xcf, 0x7f, 0x5e, 0x89, 0xee, 0x59, - 0xe6, 0xa0, 0x39, 0xad, 0x3b, 0xcc, 0x2e, 0x45, 0x95, 0xfa, 0x1c, 0x25, 0xd9, 0x75, 0x39, 0xf8, - 0x82, 0x32, 0x89, 0xf3, 0xa6, 0x28, 0x5f, 0xde, 0x5a, 0xcf, 0x66, 0xad, 0xcd, 0x51, 0x96, 0x7d, - 0x9e, 0x5d, 0x6b, 0x80, 0xac, 0xd5, 0x9c, 0x78, 0x41, 0x8e, 0xc8, 0x5a, 0x43, 0xbc, 0xed, 0x62, - 0xe3, 0x3c, 0x15, 0x19, 0xec, 0x62, 0x6b, 0xa1, 0x12, 0x12, 0x5d, 0xdc, 0x82, 0x6c, 0x3c, 0x6e, - 0x44, 0xf5, 0xa9, 0xcb, 0x4e, 0x9a, 0x82, 0x78, 0x6c, 0x54, 0x0d, 0x40, 0xc4, 0x63, 0x14, 0xd4, - 0x7e, 0xce, 0xa2, 0xef, 0x54, 0x4d, 0x7a, 0x5a, 0xf0, 0x45, 0xc2, 0xe1, 0xd5, 0x0b, 0x47, 0x42, - 0xcc, 0x7f, 0x9f, 0xb0, 0x33, 0xeb, 0x3c, 0x2b, 0xf3, 0x94, 0x95, 0x57, 0xfa, 0x61, 0xbc, 0x5f, - 0xe7, 0x46, 0x08, 0x1f, 0xc7, 0x3f, 0xea, 0xa0, 0x6c, 0x50, 0x6f, 0x64, 0x26, 0xc4, 0xac, 0xe2, - 0xaa, 0xad, 0x30, 0xb3, 0xd6, 0xc9, 0xd9, 0x13, 0xef, 0x03, 0x96, 0xa6, 0xbc, 0x58, 0x36, 0xb2, - 0x63, 0x96, 0x25, 0x97, 0xbc, 0x94, 0xe0, 0xc4, 0x5b, 0x53, 0x43, 0x88, 0x11, 0x27, 0xde, 0x01, - 0xdc, 0x66, 0xf3, 0xc0, 0xf3, 0x61, 0x36, 0xe1, 0xef, 0x40, 0x36, 0x0f, 0xed, 0x28, 0x86, 0xc8, - 0xe6, 0x29, 0xd6, 0x9e, 0xfc, 0xbe, 0x4c, 0x45, 0x7c, 0xad, 0x97, 0x00, 0xbf, 0x83, 0x95, 0x04, - 0xae, 0x01, 0x0f, 0x42, 0x88, 0x5d, 0x04, 0x94, 0xe0, 0x8c, 0xe7, 0x29, 0x8b, 0xe1, 0xfd, 0x9b, - 0x5a, 0x47, 0xcb, 0x88, 0x45, 0x00, 0x32, 0xa0, 0xb8, 0xfa, 0x5e, 0x0f, 0x56, 0x5c, 0x70, 0xad, - 0xe7, 0x41, 0x08, 0xb1, 0xcb, 0xa0, 0x12, 0x8c, 0xf2, 0x34, 0x91, 0x60, 0x1a, 0xd4, 0x1a, 0x4a, - 0x42, 0x4c, 0x03, 0x9f, 0x00, 0x26, 0x8f, 0x79, 0x31, 0xe5, 0xa8, 0x49, 0x25, 0x09, 0x9a, 0x6c, - 0x08, 0x7b, 0xc9, 0xb4, 0xae, 0xbb, 0xc8, 0x97, 0xe0, 0x92, 0xa9, 0xae, 0x96, 0xc8, 0x97, 0xc4, - 0x25, 0x53, 0x0f, 0x00, 0x45, 0x3c, 0x65, 0xa5, 0xc4, 0x8b, 0xa8, 0x24, 0xc1, 0x22, 0x36, 0x84, - 0x5d, 0xa3, 0xeb, 0x22, 0xce, 0x25, 0x58, 0xa3, 0x75, 0x01, 0x9c, 0x27, 0xd0, 0x77, 0x49, 0xb9, - 0x8d, 0x24, 0x75, 0xaf, 0x70, 0xb9, 0x9f, 0xf0, 0x74, 0x52, 0x82, 0x48, 0xa2, 0xdb, 0xbd, 0x91, - 0x12, 0x91, 0xa4, 0x4d, 0x81, 0xa1, 0xa4, 0xcf, 0xc7, 0xb1, 0xda, 0x81, 0xa3, 0xf1, 0x07, 0x21, - 0xc4, 0xc6, 0xa7, 0xa6, 0xd0, 0xbb, 0xac, 0x28, 0x92, 0x6a, 0xf1, 0x5f, 0xc5, 0x0b, 0xd4, 0xc8, - 0x89, 0xf8, 0x84, 0x71, 0x60, 0x7a, 0x35, 0x81, 0x1b, 0x2b, 0x18, 0x0c, 0xdd, 0x9f, 0x06, 0x19, - 0x9b, 0x71, 0x2a, 0x89, 0xf3, 0x08, 0x15, 0x6b, 0x4d, 0xe4, 0x09, 0xea, 0x6a, 0x17, 0xe6, 0xbc, - 0x04, 0x62, 0x5c, 0x1c, 0x8b, 0x05, 0x1f, 0x8b, 0x57, 0xef, 0x92, 0x52, 0x26, 0xd9, 0x54, 0xaf, - 0xdc, 0xcf, 0x09, 0x4b, 0x18, 0x4c, 0xbc, 0x04, 0xd2, 0xa9, 0x64, 0x13, 0x08, 0x50, 0x96, 0x13, - 0x7e, 0x83, 0x26, 0x10, 0xd0, 0xa2, 0xe1, 0x88, 0x04, 0x22, 0xc4, 0xdb, 0x73, 0x14, 0xe3, 0x5c, - 0xbf, 0x88, 0x3b, 0x16, 0x4d, 0x2e, 0x47, 0x59, 0x83, 0x20, 0xb1, 0x95, 0x0d, 0x2a, 0xd8, 0xfd, - 0xa5, 0xf1, 0x6f, 0xa7, 0xd8, 0x3a, 0x61, 0xa7, 0x3d, 0xcd, 0x1e, 0xf7, 0x20, 0x11, 0x57, 0xf6, - 0x1e, 0x00, 0xe5, 0xaa, 0x7d, 0x0d, 0xe0, 0x71, 0x0f, 0xd2, 0x39, 0x93, 0x71, 0xab, 0xf5, 0x92, - 0xc5, 0xd7, 0xd3, 0x42, 0xcc, 0xb3, 0xc9, 0xae, 0x48, 0x45, 0x01, 0xce, 0x64, 0xbc, 0x52, 0x03, - 0x94, 0x38, 0x93, 0xe9, 0x50, 0xb1, 0x19, 0x9c, 0x5b, 0x8a, 0x9d, 0x34, 0x99, 0xc2, 0x1d, 0xb5, - 0x67, 0x48, 0x01, 0x44, 0x06, 0x87, 0x82, 0xc8, 0x20, 0xaa, 0x77, 0xdc, 0x32, 0x89, 0x59, 0x5a, - 0xfb, 0xdb, 0xa6, 0xcd, 0x78, 0x60, 0xe7, 0x20, 0x42, 0x14, 0x90, 0x7a, 0x8e, 0xe7, 0x45, 0x76, - 0x98, 0x49, 0x41, 0xd6, 0xb3, 0x01, 0x3a, 0xeb, 0xe9, 0x80, 0x20, 0xac, 0x8e, 0xf9, 0xbb, 0xaa, - 0x34, 0xd5, 0x3f, 0x58, 0x58, 0xad, 0x7e, 0x1f, 0x6a, 0x79, 0x28, 0xac, 0x02, 0x0e, 0x54, 0x46, - 0x3b, 0xa9, 0x07, 0x4c, 0x40, 0xdb, 0x1f, 0x26, 0xeb, 0xdd, 0x20, 0xee, 0x67, 0x24, 0x97, 0x29, - 0x0f, 0xf9, 0x51, 0x40, 0x1f, 0x3f, 0x0d, 0x68, 0x8f, 0x5b, 0xbc, 0xfa, 0x5c, 0xf1, 0xf8, 0xba, - 0x75, 0xad, 0xc9, 0x2f, 0x68, 0x8d, 0x10, 0xc7, 0x2d, 0x04, 0x8a, 0x77, 0xd1, 0x61, 0x2c, 0xb2, - 0x50, 0x17, 0x55, 0xf2, 0x3e, 0x5d, 0xa4, 0x39, 0xbb, 0xf9, 0x35, 0x52, 0x3d, 0x32, 0xeb, 0x6e, - 0xda, 0x20, 0x2c, 0xb8, 0x10, 0xb1, 0xf9, 0x25, 0x61, 0x9b, 0x93, 0x43, 0x9f, 0xc7, 0xed, 0x3b, - 0xdf, 0x2d, 0x2b, 0xc7, 0xf4, 0x9d, 0x6f, 0x8a, 0xa5, 0x2b, 0x59, 0x8f, 0x91, 0x0e, 0x2b, 0xfe, - 0x38, 0xd9, 0xec, 0x07, 0xdb, 0x2d, 0x8f, 0xe7, 0x73, 0x37, 0xe5, 0xac, 0xa8, 0xbd, 0x6e, 0x05, - 0x0c, 0x59, 0x8c, 0xd8, 0xf2, 0x04, 0x70, 0x10, 0xc2, 0x3c, 0xcf, 0xbb, 0x22, 0x93, 0x3c, 0x93, - 0x58, 0x08, 0xf3, 0x8d, 0x69, 0x30, 0x14, 0xc2, 0x28, 0x05, 0x30, 0x6e, 0xd5, 0x79, 0x10, 0x97, - 0x27, 0x6c, 0x86, 0x66, 0x6c, 0xf5, 0x59, 0x4f, 0x2d, 0x0f, 0x8d, 0x5b, 0xc0, 0x39, 0x0f, 0xf9, - 0x5c, 0x2f, 0x63, 0x56, 0x4c, 0xcd, 0xe9, 0xc6, 0x64, 0xf0, 0x94, 0xb6, 0xe3, 0x93, 0xc4, 0x43, - 0xbe, 0xb0, 0x06, 0x08, 0x3b, 0x87, 0x33, 0x36, 0x35, 0x35, 0x45, 0x6a, 0xa0, 0xe4, 0xad, 0xaa, - 0xae, 0x77, 0x83, 0xc0, 0xcf, 0x9b, 0x64, 0xc2, 0x45, 0xc0, 0x8f, 0x92, 0xf7, 0xf1, 0x03, 0x41, - 0x90, 0xbd, 0x55, 0xf5, 0xae, 0x77, 0x74, 0x3b, 0xd9, 0x44, 0xef, 0x63, 0x87, 0x44, 0xf3, 0x00, - 0x2e, 0x94, 0xbd, 0x11, 0x3c, 0x98, 0xa3, 0xcd, 0x01, 0x6d, 0x68, 0x8e, 0x9a, 0xf3, 0xd7, 0x3e, - 0x73, 0x14, 0x83, 0xb5, 0xcf, 0x9f, 0xe9, 0x39, 0xba, 0xc7, 0x24, 0xab, 0xf2, 0xf6, 0x37, 0x09, - 0xbf, 0xd1, 0x1b, 0x61, 0xa4, 0xbe, 0x0d, 0x35, 0x54, 0xaf, 0x2a, 0x82, 0x5d, 0xf1, 0x76, 0x6f, - 0x3e, 0xe0, 0x5b, 0xef, 0x10, 0x3a, 0x7d, 0x83, 0xad, 0xc2, 0x76, 0x6f, 0x3e, 0xe0, 0x5b, 0xbf, - 0x03, 0xdd, 0xe9, 0x1b, 0xbc, 0x08, 0xbd, 0xdd, 0x9b, 0xd7, 0xbe, 0xff, 0xb2, 0x99, 0xb8, 0xae, - 0xf3, 0x2a, 0x0f, 0x8b, 0x65, 0xb2, 0xe0, 0x58, 0x3a, 0xe9, 0xdb, 0x33, 0x68, 0x28, 0x9d, 0xa4, - 0x55, 0x9c, 0xef, 0xf2, 0x60, 0xa5, 0x38, 0x15, 0x65, 0xa2, 0x1e, 0xd2, 0x3f, 0xef, 0x61, 0xb4, - 0x81, 0x43, 0x9b, 0xa6, 0x90, 0x92, 0x7d, 0xdc, 0xe8, 0xa1, 0xf6, 0x16, 0xf3, 0x66, 0xc0, 0x5e, - 0xfb, 0x32, 0xf3, 0x56, 0x4f, 0xda, 0x3e, 0xf8, 0xf3, 0x18, 0xf7, 0x89, 0x63, 0xa8, 0x57, 0xd1, - 0x87, 0x8e, 0x4f, 0xfb, 0x2b, 0x68, 0xf7, 0x7f, 0xdd, 0xec, 0x2b, 0xa0, 0x7f, 0x3d, 0x09, 0x9e, - 0xf5, 0xb1, 0x08, 0x26, 0xc2, 0xf3, 0x5b, 0xe9, 0xe8, 0x82, 0xfc, 0x7d, 0xb3, 0x81, 0x6e, 0x50, - 0xf5, 0x2e, 0x87, 0x7a, 0xf7, 0x4f, 0xcf, 0x89, 0x50, 0xb7, 0x5a, 0x18, 0xce, 0x8c, 0x17, 0xb7, - 0xd4, 0x72, 0xbe, 0xd2, 0xe4, 0xc1, 0xfa, 0x9d, 0x43, 0xa7, 0x3c, 0x21, 0xcb, 0x0e, 0x0d, 0x0b, - 0xf4, 0xc5, 0x6d, 0xd5, 0xa8, 0xb9, 0xe2, 0xc0, 0xea, 0xab, 0x0c, 0xcf, 0x7b, 0x1a, 0xf6, 0xbe, - 0xd3, 0xf0, 0xf9, 0xed, 0x94, 0x74, 0x59, 0xfe, 0x63, 0x25, 0x7a, 0xe4, 0xb1, 0xf6, 0x79, 0x02, - 0x38, 0xf5, 0xf8, 0x71, 0xc0, 0x3e, 0xa5, 0x64, 0x0a, 0xf7, 0xbb, 0xbf, 0x9c, 0xb2, 0xfd, 0xa4, - 0x91, 0xa7, 0xb2, 0x9f, 0xa4, 0x92, 0x17, 0xed, 0x4f, 0x1a, 0xf9, 0x76, 0x6b, 0x6a, 0x48, 0x7f, - 0xd2, 0x28, 0x80, 0x3b, 0x9f, 0x34, 0x42, 0x3c, 0xa3, 0x9f, 0x34, 0x42, 0xad, 0x05, 0x3f, 0x69, - 0x14, 0xd6, 0xa0, 0xc2, 0x7b, 0x53, 0x84, 0xfa, 0xdc, 0xba, 0x97, 0x45, 0xff, 0x18, 0xfb, 0xd9, - 0x6d, 0x54, 0x88, 0x05, 0xae, 0xe6, 0xd4, 0x3d, 0xb7, 0x1e, 0x6d, 0xea, 0xdd, 0x75, 0xdb, 0xee, - 0xcd, 0x6b, 0xdf, 0x3f, 0xd5, 0xbb, 0x1b, 0x13, 0xce, 0x45, 0xa1, 0x3e, 0x67, 0xb5, 0x11, 0x0a, - 0xcf, 0x95, 0x05, 0xb7, 0xe7, 0x37, 0xfb, 0xc1, 0x44, 0x75, 0x2b, 0x42, 0x77, 0xfa, 0xb0, 0xcb, - 0x10, 0xe8, 0xf2, 0xed, 0xde, 0x3c, 0xb1, 0x8c, 0xd4, 0xbe, 0xeb, 0xde, 0xee, 0x61, 0xcc, 0xef, - 0xeb, 0xa7, 0xfd, 0x15, 0xb4, 0xfb, 0x85, 0x4e, 0x1b, 0x5d, 0xf7, 0xaa, 0x9f, 0xb7, 0xba, 0x4c, - 0x8d, 0xbc, 0x6e, 0x1e, 0xf6, 0xc5, 0x43, 0x09, 0x84, 0xbb, 0x84, 0x76, 0x25, 0x10, 0xe8, 0x32, - 0xfa, 0xf9, 0xed, 0x94, 0x74, 0x59, 0xfe, 0x69, 0x25, 0xba, 0x4b, 0x96, 0x45, 0x8f, 0x83, 0x2f, - 0xfa, 0x5a, 0x06, 0xe3, 0xe1, 0xcb, 0x5b, 0xeb, 0xe9, 0x42, 0xfd, 0xeb, 0x4a, 0x74, 0x2f, 0x50, - 0xa8, 0x7a, 0x80, 0xdc, 0xc2, 0xba, 0x3f, 0x50, 0x7e, 0x78, 0x7b, 0x45, 0x6a, 0xb9, 0x77, 0xf1, - 0x51, 0xfb, 0x63, 0x3c, 0x01, 0xdb, 0x23, 0xfa, 0x63, 0x3c, 0xdd, 0x5a, 0xf0, 0x90, 0x87, 0x5d, - 0x34, 0x9b, 0x2e, 0xf4, 0x90, 0x47, 0xdd, 0x50, 0x03, 0x7b, 0x8e, 0xb5, 0x4e, 0x0e, 0x73, 0xf2, - 0xea, 0x5d, 0xce, 0xb2, 0x09, 0xed, 0xa4, 0x96, 0x77, 0x3b, 0x31, 0x1c, 0x3c, 0x1c, 0xab, 0xa4, - 0x67, 0xa2, 0xd9, 0x48, 0x3d, 0xa6, 0xf4, 0x0d, 0x12, 0x3c, 0x1c, 0x6b, 0xa1, 0x84, 0x37, 0x9d, - 0x35, 0x86, 0xbc, 0x81, 0x64, 0xf1, 0x49, 0x1f, 0x14, 0xa4, 0xe8, 0xc6, 0x9b, 0x39, 0x73, 0xdf, - 0x0c, 0x59, 0x69, 0x9d, 0xbb, 0x6f, 0xf5, 0xa4, 0x09, 0xb7, 0x23, 0x2e, 0xbf, 0xe2, 0x6c, 0xc2, - 0x8b, 0xa0, 0x5b, 0x43, 0xf5, 0x72, 0xeb, 0xd2, 0x98, 0xdb, 0x5d, 0x91, 0xce, 0x67, 0x99, 0xee, - 0x4c, 0xd2, 0xad, 0x4b, 0x75, 0xbb, 0x05, 0x34, 0x3c, 0x16, 0xb4, 0x6e, 0x55, 0x7a, 0xf9, 0x24, - 0x6c, 0xc6, 0xcb, 0x2a, 0x37, 0x7a, 0xb1, 0x74, 0x3d, 0xf5, 0x30, 0xea, 0xa8, 0x27, 0x18, 0x49, - 0x5b, 0x3d, 0x69, 0x78, 0x3e, 0xe7, 0xb8, 0x35, 0xe3, 0x69, 0xbb, 0xc3, 0x56, 0x6b, 0x48, 0x3d, - 0xed, 0xaf, 0x00, 0x4f, 0x43, 0xf5, 0xa8, 0x3a, 0x4a, 0x4a, 0xb9, 0x9f, 0xa4, 0xe9, 0x60, 0x23, - 0x30, 0x4c, 0x1a, 0x28, 0x78, 0x1a, 0x8a, 0xc0, 0xc4, 0x48, 0x6e, 0x4e, 0x0f, 0xb3, 0x41, 0x97, - 0x1d, 0x45, 0xf5, 0x1a, 0xc9, 0x2e, 0x0d, 0x4e, 0xb4, 0x9c, 0xa6, 0x36, 0xb5, 0x1d, 0x86, 0x1b, - 0xae, 0x55, 0xe1, 0xed, 0xde, 0x3c, 0x78, 0xdc, 0xae, 0x28, 0xb5, 0xb2, 0x3c, 0xa4, 0x4c, 0x78, - 0x2b, 0xc9, 0xa3, 0x0e, 0x0a, 0x9c, 0x0a, 0xd6, 0xd3, 0xe8, 0x6d, 0x32, 0x99, 0x72, 0x89, 0x3e, - 0x29, 0x72, 0x81, 0xe0, 0x93, 0x22, 0x00, 0x82, 0xae, 0xab, 0x7f, 0x37, 0xc7, 0xa1, 0x87, 0x13, - 0xac, 0xeb, 0xb4, 0xb2, 0x43, 0x85, 0xba, 0x0e, 0xa5, 0x41, 0x34, 0x30, 0x6e, 0xf5, 0xeb, 0xf8, - 0x4f, 0x42, 0x66, 0xc0, 0x3b, 0xf9, 0x1b, 0xbd, 0x58, 0xb0, 0xa2, 0x58, 0x87, 0xc9, 0x2c, 0x91, - 0xd8, 0x8a, 0xe2, 0xd8, 0xa8, 0x90, 0xd0, 0x8a, 0xd2, 0x46, 0xa9, 0xea, 0x55, 0x39, 0xc2, 0xe1, - 0x24, 0x5c, 0xbd, 0x9a, 0xe9, 0x57, 0x3d, 0xc3, 0xb6, 0x1e, 0x6c, 0x66, 0x66, 0xc8, 0xc8, 0x2b, - 0xbd, 0x59, 0x46, 0xc6, 0xb6, 0x7a, 0x4d, 0x13, 0x82, 0xa1, 0xa8, 0x43, 0x29, 0xc0, 0x03, 0xfb, - 0x8a, 0x6b, 0x9e, 0xbd, 0xe6, 0x39, 0x67, 0x05, 0xcb, 0x62, 0x74, 0x73, 0xaa, 0x0c, 0xb6, 0xc8, - 0xd0, 0xe6, 0x94, 0xd4, 0x00, 0x8f, 0xcd, 0xfd, 0x17, 0x2c, 0x91, 0xa9, 0x60, 0xde, 0x64, 0xf4, - 0xdf, 0xaf, 0x7c, 0xdc, 0x83, 0x84, 0x8f, 0xcd, 0x1b, 0xc0, 0x1c, 0x7c, 0xd7, 0x4e, 0x3f, 0x0b, - 0x98, 0xf2, 0xd1, 0xd0, 0x46, 0x98, 0x56, 0x01, 0x83, 0xda, 0x24, 0xb8, 0x5c, 0xfe, 0x84, 0x2f, - 0xb1, 0x41, 0x6d, 0xf3, 0x53, 0x85, 0x84, 0x06, 0x75, 0x1b, 0x05, 0x79, 0xa6, 0xbb, 0x0f, 0x5a, - 0x0d, 0xe8, 0xbb, 0x5b, 0x9f, 0xb5, 0x4e, 0x0e, 0xcc, 0x9c, 0xbd, 0x64, 0xe1, 0x3d, 0x27, 0x40, - 0x0a, 0xba, 0x97, 0x2c, 0xf0, 0xc7, 0x04, 0x1b, 0xbd, 0x58, 0xf8, 0x48, 0x9e, 0x49, 0xfe, 0xae, - 0x79, 0x56, 0x8e, 0x14, 0x57, 0xc9, 0x5b, 0x0f, 0xcb, 0xd7, 0xbb, 0x41, 0x7b, 0x01, 0xf6, 0xb4, - 0x10, 0x31, 0x2f, 0x4b, 0xfd, 0x85, 0x42, 0xff, 0x86, 0x91, 0x96, 0x0d, 0xc1, 0xf7, 0x09, 0x1f, - 0x86, 0x21, 0xdb, 0x33, 0x5a, 0x64, 0xbf, 0x7a, 0xb3, 0x8a, 0x6a, 0xb6, 0x3f, 0x78, 0xb3, 0xd6, - 0xc9, 0xd9, 0xe9, 0xa5, 0xa5, 0xee, 0x67, 0x6e, 0xd6, 0x51, 0x75, 0xec, 0x0b, 0x37, 0x8f, 0x7b, - 0x90, 0xda, 0xd5, 0x57, 0xd1, 0xfb, 0x47, 0x62, 0x3a, 0xe2, 0xd9, 0x64, 0xf0, 0x03, 0xff, 0x0a, - 0xad, 0x98, 0x0e, 0xab, 0x9f, 0x8d, 0xd1, 0x3b, 0x94, 0xd8, 0x5e, 0x02, 0xdc, 0xe3, 0x17, 0xf3, - 0xe9, 0x48, 0x32, 0x09, 0x2e, 0x01, 0xaa, 0xdf, 0x87, 0x95, 0x80, 0xb8, 0x04, 0xe8, 0x01, 0xc0, - 0xde, 0xb8, 0xe0, 0x1c, 0xb5, 0x57, 0x09, 0x82, 0xf6, 0x34, 0x60, 0xb3, 0x08, 0x63, 0xaf, 0x4a, - 0xd4, 0xe1, 0xa5, 0x3d, 0xab, 0xa3, 0xa4, 0x44, 0x16, 0xd1, 0xa6, 0xec, 0xe0, 0xae, 0xab, 0xaf, - 0xbe, 0x3a, 0x32, 0x9f, 0xcd, 0x58, 0xb1, 0x04, 0x83, 0x5b, 0xd7, 0xd2, 0x01, 0x88, 0xc1, 0x8d, - 0x82, 0x76, 0xd6, 0x36, 0xcd, 0x1c, 0x5f, 0x1f, 0x88, 0x42, 0xcc, 0x65, 0x92, 0x71, 0xf8, 0xe5, - 0x09, 0xd3, 0xa0, 0x2e, 0x43, 0xcc, 0x5a, 0x8a, 0xb5, 0x59, 0xae, 0x22, 0xea, 0xfb, 0x84, 0xea, - 0xbb, 0xc5, 0xa5, 0x14, 0x05, 0x7c, 0x9e, 0x58, 0x5b, 0x81, 0x10, 0x91, 0xe5, 0x92, 0x30, 0xe8, - 0xfb, 0xd3, 0x24, 0x9b, 0xa2, 0x7d, 0x7f, 0xea, 0x7e, 0xf5, 0xf3, 0x1e, 0x0d, 0xd8, 0x09, 0x55, - 0x37, 0x5a, 0x3d, 0x01, 0xf4, 0xbb, 0x9c, 0x68, 0xa3, 0xbb, 0x04, 0x31, 0xa1, 0x70, 0x12, 0xb8, - 0x7a, 0x9d, 0xf3, 0x8c, 0x4f, 0x9a, 0x5b, 0x73, 0x98, 0x2b, 0x8f, 0x08, 0xba, 0x82, 0xa4, 0x8d, - 0x45, 0x4a, 0x7e, 0x36, 0xcf, 0x4e, 0x0b, 0x71, 0x99, 0xa4, 0xbc, 0x00, 0xb1, 0xa8, 0x56, 0x77, - 0xe4, 0x44, 0x2c, 0xc2, 0x38, 0x7b, 0xfd, 0x42, 0x49, 0xbd, 0x8f, 0x6f, 0x8f, 0x0b, 0x16, 0xc3, - 0xeb, 0x17, 0xb5, 0x8d, 0x36, 0x46, 0x9c, 0x0c, 0x06, 0x70, 0x27, 0xd1, 0xa9, 0x5d, 0x67, 0x4b, - 0x35, 0x3e, 0xf4, 0xbb, 0x84, 0xea, 0x5b, 0x98, 0x25, 0x48, 0x74, 0xb4, 0x39, 0x8c, 0x24, 0x12, - 0x9d, 0xb0, 0x86, 0x5d, 0x4a, 0x14, 0x77, 0xa2, 0xaf, 0x15, 0x81, 0xa5, 0xa4, 0xb6, 0xd1, 0x08, - 0x89, 0xa5, 0xa4, 0x05, 0x81, 0x80, 0xd4, 0x4c, 0x83, 0x29, 0x1a, 0x90, 0x8c, 0x34, 0x18, 0x90, - 0x5c, 0xca, 0x06, 0x8a, 0xc3, 0x2c, 0x91, 0x09, 0x4b, 0x47, 0x5c, 0x9e, 0xb2, 0x82, 0xcd, 0xb8, - 0xe4, 0x05, 0x0c, 0x14, 0x1a, 0x19, 0x7a, 0x0c, 0x11, 0x28, 0x28, 0x56, 0x3b, 0xfc, 0xbd, 0xe8, - 0xc3, 0x6a, 0xdd, 0xe7, 0x99, 0xfe, 0x2b, 0x1e, 0xaf, 0xd4, 0x9f, 0xff, 0x19, 0x7c, 0x64, 0x6c, - 0x8c, 0x64, 0xc1, 0xd9, 0xac, 0xb1, 0xfd, 0x81, 0xf9, 0x5d, 0x81, 0x4f, 0x57, 0xaa, 0xf1, 0x7c, - 0x22, 0x64, 0x72, 0x59, 0x6d, 0xb3, 0xf5, 0x1b, 0x44, 0x60, 0x3c, 0xbb, 0xe2, 0x61, 0xe0, 0x5b, - 0x14, 0x18, 0x67, 0xe3, 0xb4, 0x2b, 0x3d, 0xe3, 0x79, 0x0a, 0xe3, 0xb4, 0xa7, 0xad, 0x00, 0x22, - 0x4e, 0xa3, 0xa0, 0x9d, 0x9c, 0xae, 0x78, 0xcc, 0xc3, 0x95, 0x19, 0xf3, 0x7e, 0x95, 0x19, 0x7b, - 0x2f, 0x65, 0xa4, 0xd1, 0x87, 0xc7, 0x7c, 0x76, 0xc1, 0x8b, 0xf2, 0x2a, 0xc9, 0x0f, 0xaa, 0x84, - 0x8b, 0xc9, 0x39, 0x7c, 0x6d, 0xd1, 0x12, 0x43, 0x83, 0x10, 0x59, 0x29, 0x81, 0xda, 0x95, 0xc0, - 0x02, 0x87, 0xe5, 0x09, 0x9b, 0x71, 0xf5, 0x65, 0x0d, 0xb0, 0x12, 0x38, 0x46, 0x1c, 0x88, 0x58, - 0x09, 0x48, 0xd8, 0x79, 0xbf, 0xcb, 0x32, 0x67, 0x7c, 0x5a, 0x8d, 0xb0, 0xe2, 0x94, 0x2d, 0x67, - 0x3c, 0x93, 0xda, 0x24, 0x38, 0x93, 0x77, 0x4c, 0xe2, 0x3c, 0x71, 0x26, 0xdf, 0x47, 0xcf, 0x09, - 0x4d, 0x5e, 0xc3, 0x9f, 0x8a, 0x42, 0xd6, 0x7f, 0xa3, 0xe7, 0xbc, 0x48, 0x41, 0x68, 0xf2, 0x1b, - 0xd5, 0x23, 0x89, 0xd0, 0x14, 0xd6, 0x70, 0xbe, 0x3e, 0xef, 0x95, 0xe1, 0x0d, 0x2f, 0xcc, 0x38, - 0x79, 0x35, 0x63, 0x49, 0xaa, 0x47, 0xc3, 0x8f, 0x02, 0xb6, 0x09, 0x1d, 0xe2, 0xeb, 0xf3, 0x7d, - 0x75, 0x9d, 0xef, 0xf5, 0x87, 0x4b, 0x08, 0x1e, 0x11, 0x74, 0xd8, 0x27, 0x1e, 0x11, 0x74, 0x6b, - 0xd9, 0x9d, 0xbb, 0x65, 0x15, 0xb7, 0x54, 0xc4, 0xae, 0x98, 0xc0, 0xf3, 0x42, 0xc7, 0x26, 0x00, - 0x89, 0x9d, 0x7b, 0x50, 0xc1, 0xa6, 0x06, 0x16, 0xdb, 0x4f, 0x32, 0x96, 0x26, 0x3f, 0x83, 0x69, - 0xbd, 0x63, 0xa7, 0x21, 0x88, 0xd4, 0x00, 0x27, 0x31, 0x57, 0x07, 0x5c, 0x8e, 0x93, 0x2a, 0xf4, - 0xaf, 0x07, 0xda, 0x4d, 0x11, 0xdd, 0xae, 0x1c, 0xd2, 0xf9, 0x46, 0x2b, 0x6c, 0xd6, 0x9d, 0x3c, - 0x1f, 0x55, 0xab, 0xea, 0x19, 0x8f, 0x79, 0x92, 0xcb, 0xc1, 0x8b, 0x70, 0x5b, 0x01, 0x9c, 0xb8, - 0x68, 0xd1, 0x43, 0xcd, 0x79, 0x7c, 0x5f, 0xc5, 0x92, 0x51, 0xfd, 0xc7, 0xeb, 0xce, 0x4b, 0x5e, - 0xe8, 0x44, 0xe3, 0x80, 0x4b, 0x30, 0x3b, 0x1d, 0x6e, 0xe8, 0x80, 0x55, 0x45, 0x89, 0xd9, 0x19, - 0xd6, 0xb0, 0x87, 0x7d, 0x0e, 0x77, 0xc6, 0x4b, 0x91, 0x2e, 0xb8, 0xba, 0x6f, 0xb8, 0x49, 0x1a, - 0x73, 0x28, 0xe2, 0xb0, 0x8f, 0xa6, 0x6d, 0xb6, 0xd6, 0x76, 0xbb, 0x93, 0x2d, 0x0f, 0xe1, 0x95, - 0x09, 0xc4, 0x92, 0xc2, 0x88, 0x6c, 0x2d, 0x80, 0x3b, 0x87, 0xe1, 0x85, 0x60, 0x93, 0x98, 0x95, - 0xf2, 0x94, 0x2d, 0x53, 0xc1, 0x26, 0x6a, 0x5d, 0x87, 0x87, 0xe1, 0x0d, 0x33, 0x74, 0x21, 0xea, - 0x30, 0x9c, 0x82, 0xdd, 0xec, 0x4c, 0xfd, 0x4d, 0x3e, 0x7d, 0x97, 0x13, 0x66, 0x67, 0xaa, 0xbc, - 0xf0, 0x1e, 0xe7, 0xc3, 0x30, 0x64, 0xdf, 0x41, 0xab, 0x45, 0x2a, 0x0d, 0xb9, 0x87, 0xe9, 0x78, - 0x09, 0xc8, 0xfd, 0x00, 0x61, 0xbf, 0x4b, 0x51, 0xff, 0xde, 0xfc, 0xdd, 0x17, 0xa9, 0xbf, 0x64, - 0xbd, 0x89, 0xe9, 0xba, 0xd0, 0xd0, 0xfd, 0xc0, 0xdd, 0x56, 0x4f, 0xda, 0xa6, 0x99, 0xbb, 0x57, - 0x4c, 0xee, 0x4c, 0x26, 0xc7, 0xbc, 0x44, 0x5e, 0x28, 0xaf, 0x84, 0x43, 0x2b, 0x25, 0xd2, 0xcc, - 0x36, 0x65, 0x07, 0x7a, 0x25, 0x7b, 0x35, 0x49, 0xa4, 0x96, 0x35, 0x37, 0xa4, 0x37, 0xdb, 0x06, - 0xda, 0x14, 0x51, 0x2b, 0x9a, 0xb6, 0xb1, 0xbc, 0x62, 0xc6, 0x62, 0x3a, 0x4d, 0xb9, 0x86, 0xce, - 0x38, 0xab, 0x3f, 0xe4, 0xb7, 0xdd, 0xb6, 0x85, 0x82, 0x44, 0x2c, 0x0f, 0x2a, 0xd8, 0x34, 0xb2, - 0xc2, 0xea, 0x47, 0x52, 0x4d, 0xc3, 0xae, 0xb5, 0xcd, 0x78, 0x00, 0x91, 0x46, 0xa2, 0xa0, 0x7d, - 0xef, 0xad, 0x12, 0x1f, 0xf0, 0xa6, 0x25, 0xe0, 0x27, 0x88, 0x94, 0xb2, 0x23, 0x26, 0xde, 0x7b, - 0x43, 0x30, 0xbb, 0x4f, 0x00, 0x1e, 0x5e, 0x2e, 0x0f, 0x27, 0x70, 0x9f, 0x00, 0xf5, 0x15, 0x43, - 0xec, 0x13, 0x28, 0xd6, 0xef, 0x3a, 0x73, 0xee, 0x75, 0xc4, 0x4a, 0x5b, 0x39, 0xa4, 0xeb, 0x50, - 0x30, 0xd4, 0x75, 0x94, 0x82, 0xdf, 0xa4, 0xee, 0xd1, 0x1a, 0xd2, 0xa4, 0xd8, 0xb9, 0xda, 0x6a, - 0x17, 0x66, 0xe3, 0x92, 0xd9, 0x4f, 0xaa, 0x2b, 0x4b, 0xf8, 0x17, 0xfc, 0x6b, 0x21, 0x11, 0x97, - 0x5a, 0x50, 0x6d, 0xfb, 0xe5, 0xfd, 0xff, 0xfa, 0xe6, 0xce, 0xca, 0x2f, 0xbe, 0xb9, 0xb3, 0xf2, - 0x3f, 0xdf, 0xdc, 0x59, 0xf9, 0xf9, 0xb7, 0x77, 0xde, 0xfb, 0xc5, 0xb7, 0x77, 0xde, 0xfb, 0xef, - 0x6f, 0xef, 0xbc, 0xf7, 0xf5, 0xfb, 0xfa, 0x6f, 0xb5, 0x5e, 0xfc, 0x3f, 0xf5, 0x17, 0x57, 0x9f, - 0xff, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x20, 0x36, 0x1c, 0xcb, 0xcf, 0x75, 0x00, 0x00, + 0x7c, 0x07, 0xbe, 0x03, 0x8f, 0xfb, 0xc8, 0x23, 0x9a, 0x79, 0xe4, 0x4b, 0xa0, 0x8c, 0x8c, 0x8c, + 0xcb, 0xc9, 0x73, 0x22, 0xd3, 0xfb, 0xd4, 0xad, 0x3a, 0xbf, 0x73, 0x4e, 0x5c, 0x4f, 0x9c, 0x88, + 0x8c, 0x4c, 0x47, 0x77, 0xf3, 0x8b, 0xed, 0xbc, 0x10, 0x52, 0x94, 0xdb, 0x25, 0x2f, 0x16, 0x49, + 0xcc, 0x9b, 0x7f, 0x87, 0xea, 0xe7, 0xc1, 0xfb, 0x2c, 0x5b, 0xca, 0x65, 0xce, 0x3f, 0xf9, 0xd8, + 0x92, 0xb1, 0x98, 0xcd, 0x58, 0x36, 0x29, 0x6b, 0xe4, 0x93, 0x8f, 0xac, 0x84, 0x2f, 0x78, 0x26, + 0xf5, 0xef, 0xcf, 0xfe, 0xf3, 0x7f, 0x57, 0xa2, 0x0f, 0x76, 0xd3, 0x84, 0x67, 0x72, 0x57, 0x6b, + 0x0c, 0xbe, 0x8e, 0xbe, 0xbb, 0x93, 0xe7, 0x07, 0x5c, 0xbe, 0xe1, 0x45, 0x99, 0x88, 0x6c, 0xf0, + 0xe9, 0x50, 0x3b, 0x18, 0x9e, 0xe5, 0xf1, 0x70, 0x27, 0xcf, 0x87, 0x56, 0x38, 0x3c, 0xe3, 0x3f, + 0x9d, 0xf3, 0x52, 0x7e, 0xf2, 0x30, 0x0c, 0x95, 0xb9, 0xc8, 0x4a, 0x3e, 0xb8, 0x8c, 0x7e, 0x63, + 0x27, 0xcf, 0x47, 0x5c, 0xee, 0xf1, 0xaa, 0x02, 0x23, 0xc9, 0x24, 0x1f, 0xac, 0xb5, 0x54, 0x7d, + 0xc0, 0xf8, 0x58, 0xef, 0x06, 0xb5, 0x9f, 0x71, 0xf4, 0x9d, 0xca, 0xcf, 0xd5, 0x5c, 0x4e, 0xc4, + 0x4d, 0x36, 0xb8, 0xdf, 0x56, 0xd4, 0x22, 0x63, 0xfb, 0x41, 0x08, 0xd1, 0x56, 0xdf, 0x46, 0xbf, + 0xfa, 0x96, 0xa5, 0x29, 0x97, 0xbb, 0x05, 0xaf, 0x0a, 0xee, 0xeb, 0xd4, 0xa2, 0x61, 0x2d, 0x33, + 0x76, 0x3f, 0x0d, 0x32, 0xda, 0xf0, 0xd7, 0xd1, 0x77, 0x6b, 0xc9, 0x19, 0x8f, 0xc5, 0x82, 0x17, + 0x03, 0x54, 0x4b, 0x0b, 0x89, 0x26, 0x6f, 0x41, 0xd0, 0xf6, 0xae, 0xc8, 0x16, 0xbc, 0x90, 0xb8, + 0x6d, 0x2d, 0x0c, 0xdb, 0xb6, 0x90, 0xb6, 0xfd, 0xb7, 0x2b, 0xd1, 0xf7, 0x77, 0xe2, 0x58, 0xcc, + 0x33, 0x79, 0x24, 0x62, 0x96, 0x1e, 0x25, 0xd9, 0xf5, 0x09, 0xbf, 0xd9, 0xbd, 0xaa, 0xf8, 0x6c, + 0xca, 0x07, 0xcf, 0xfd, 0x56, 0xad, 0xd1, 0xa1, 0x61, 0x87, 0x2e, 0x6c, 0x7c, 0x7f, 0x7e, 0x3b, + 0x25, 0x5d, 0x96, 0x7f, 0x5c, 0x89, 0xee, 0xc0, 0xb2, 0x8c, 0x44, 0xba, 0xe0, 0xb6, 0x34, 0x2f, + 0x3a, 0x0c, 0xfb, 0xb8, 0x29, 0xcf, 0x17, 0xb7, 0x55, 0xd3, 0x25, 0x4a, 0xa3, 0x0f, 0xdd, 0xe1, + 0x32, 0xe2, 0xa5, 0x9a, 0x4e, 0x8f, 0xe9, 0x11, 0xa1, 0x11, 0xe3, 0xf9, 0x49, 0x1f, 0x54, 0x7b, + 0x4b, 0xa2, 0x81, 0xf6, 0x96, 0x8a, 0xd2, 0x38, 0x5b, 0x47, 0x2d, 0x38, 0x84, 0xf1, 0xf5, 0xb8, + 0x07, 0xa9, 0x5d, 0xfd, 0x51, 0xf4, 0x6b, 0x6f, 0x45, 0x71, 0x5d, 0xe6, 0x2c, 0xe6, 0x7a, 0x2a, + 0x3c, 0xf2, 0xb5, 0x1b, 0x29, 0x9c, 0x0d, 0xab, 0x5d, 0x98, 0x33, 0x68, 0x1b, 0xe1, 0xeb, 0x9c, + 0xc3, 0x18, 0x64, 0x15, 0x2b, 0x21, 0x35, 0x68, 0x21, 0xa4, 0x6d, 0x5f, 0x47, 0x03, 0x6b, 0xfb, + 0xe2, 0x8f, 0x79, 0x2c, 0x77, 0x26, 0x13, 0xd8, 0x2b, 0x56, 0x57, 0x11, 0xc3, 0x9d, 0xc9, 0x84, + 0xea, 0x15, 0x1c, 0xd5, 0xce, 0x6e, 0xa2, 0x8f, 0x80, 0xb3, 0xa3, 0xa4, 0x54, 0x0e, 0xb7, 0xc2, + 0x56, 0x34, 0x66, 0x9c, 0x0e, 0xfb, 0xe2, 0xda, 0xf1, 0x9f, 0xaf, 0x44, 0xdf, 0x43, 0x3c, 0x9f, + 0xf1, 0x99, 0x58, 0xf0, 0xc1, 0xd3, 0x6e, 0x6b, 0x35, 0x69, 0xfc, 0x7f, 0x76, 0x0b, 0x0d, 0x64, + 0x98, 0x8c, 0x78, 0xca, 0x63, 0x49, 0x0e, 0x93, 0x5a, 0xdc, 0x39, 0x4c, 0x0c, 0xe6, 0xcc, 0xb0, + 0x46, 0x78, 0xc0, 0xe5, 0xee, 0xbc, 0x28, 0x78, 0x26, 0xc9, 0xbe, 0xb4, 0x48, 0x67, 0x5f, 0x7a, + 0x28, 0x52, 0x9f, 0x03, 0x2e, 0x77, 0xd2, 0x94, 0xac, 0x4f, 0x2d, 0xee, 0xac, 0x8f, 0xc1, 0xb4, + 0x87, 0x38, 0xfa, 0x75, 0xa7, 0xc5, 0xe4, 0x61, 0x76, 0x29, 0x06, 0x74, 0x5b, 0x28, 0xb9, 0xf1, + 0xb1, 0xd6, 0xc9, 0x21, 0xd5, 0x78, 0xf5, 0x2e, 0x17, 0x05, 0xdd, 0x2d, 0xb5, 0xb8, 0xb3, 0x1a, + 0x06, 0xd3, 0x1e, 0xfe, 0x30, 0xfa, 0x40, 0x47, 0xc9, 0x66, 0x3d, 0x7b, 0x88, 0x86, 0x50, 0xb8, + 0xa0, 0x3d, 0xea, 0xa0, 0x5a, 0xe6, 0x8f, 0x93, 0x69, 0x51, 0x45, 0x1f, 0xdc, 0xbc, 0x96, 0x76, + 0x98, 0xb7, 0x94, 0x36, 0x2f, 0xa2, 0xdf, 0xf4, 0xcd, 0xef, 0xb2, 0x2c, 0xe6, 0xe9, 0xe0, 0x49, + 0x48, 0xbd, 0x66, 0x8c, 0xab, 0x8d, 0x5e, 0xac, 0x0d, 0x76, 0x9a, 0xd0, 0xc1, 0xf4, 0x53, 0x54, + 0x1b, 0x84, 0xd2, 0x87, 0x61, 0xa8, 0x65, 0x7b, 0x8f, 0xa7, 0x9c, 0xb4, 0x5d, 0x0b, 0x3b, 0x6c, + 0x1b, 0x48, 0xdb, 0x2e, 0xa2, 0xdf, 0x32, 0xdd, 0x5c, 0xe5, 0x05, 0x4a, 0x5e, 0x2d, 0x3a, 0x1b, + 0x44, 0x3f, 0xba, 0x90, 0xf1, 0xb5, 0xd9, 0x0f, 0x6e, 0xd5, 0x47, 0x47, 0x14, 0xbc, 0x3e, 0x20, + 0x9e, 0x3c, 0x0c, 0x43, 0xda, 0xf6, 0xdf, 0xad, 0x44, 0x3f, 0xd0, 0xb2, 0x57, 0x19, 0xbb, 0x48, + 0xb9, 0x5a, 0xe2, 0x4f, 0xb8, 0xbc, 0x11, 0xc5, 0xf5, 0x68, 0x99, 0xc5, 0x44, 0x3a, 0x83, 0xc3, + 0x1d, 0xe9, 0x0c, 0xa9, 0xe4, 0x64, 0xb0, 0xba, 0xa2, 0x52, 0xe4, 0x30, 0x83, 0x6d, 0x6a, 0x20, + 0x45, 0x4e, 0x65, 0xb0, 0x3e, 0xd2, 0xb2, 0x7a, 0x5c, 0x2d, 0x03, 0xb8, 0xd5, 0x63, 0x37, 0xee, + 0x3f, 0x08, 0x21, 0x36, 0x0c, 0x37, 0x03, 0x58, 0x64, 0x97, 0xc9, 0xf4, 0x3c, 0x9f, 0x54, 0xc3, + 0xf8, 0x31, 0x3e, 0x42, 0x1d, 0x84, 0x08, 0xc3, 0x04, 0xaa, 0xbd, 0xfd, 0x83, 0x4d, 0xf4, 0x74, + 0x68, 0xd8, 0x2f, 0xc4, 0xec, 0x88, 0x4f, 0x59, 0xbc, 0xd4, 0xf1, 0xec, 0xf3, 0x50, 0x20, 0x81, + 0xb4, 0x29, 0xc4, 0x8b, 0x5b, 0x6a, 0xe9, 0xf2, 0xfc, 0xfb, 0x4a, 0xf4, 0xb0, 0xa9, 0xfe, 0x15, + 0xcb, 0xa6, 0x5c, 0xf7, 0x67, 0x5d, 0xfa, 0x9d, 0x6c, 0x72, 0xc6, 0x4b, 0xc9, 0x0a, 0x39, 0xf8, + 0x11, 0x5e, 0xc9, 0x90, 0x8e, 0x29, 0xdb, 0x8f, 0x7f, 0x29, 0x5d, 0xdb, 0xeb, 0xa3, 0x2a, 0x50, + 0xeb, 0x10, 0xe0, 0xf7, 0xba, 0x92, 0xc0, 0x00, 0xf0, 0x20, 0x84, 0xd8, 0x5e, 0x57, 0x82, 0xc3, + 0x6c, 0x91, 0x48, 0x7e, 0xc0, 0x33, 0x5e, 0xb4, 0x7b, 0xbd, 0x56, 0xf5, 0x11, 0xa2, 0xd7, 0x09, + 0xd4, 0x06, 0x1b, 0xcf, 0x9b, 0x59, 0xec, 0x37, 0x02, 0x46, 0x5a, 0xcb, 0xfd, 0x66, 0x3f, 0xd8, + 0xee, 0x56, 0x1d, 0x9f, 0x67, 0x7c, 0x21, 0xae, 0xe1, 0x6e, 0xd5, 0x35, 0x51, 0x03, 0xc4, 0x6e, + 0x15, 0x05, 0xed, 0x8a, 0xec, 0xf8, 0x79, 0x93, 0xf0, 0x1b, 0xb0, 0x22, 0xbb, 0xca, 0x95, 0x98, + 0x58, 0x91, 0x11, 0x4c, 0x7b, 0x38, 0x89, 0x7e, 0x45, 0x09, 0x7f, 0x5f, 0x24, 0xd9, 0xe0, 0x2e, + 0xa2, 0x54, 0x09, 0x8c, 0xd5, 0x7b, 0x34, 0x00, 0x4a, 0x5c, 0xfd, 0xaa, 0x97, 0xc7, 0x47, 0x84, + 0x12, 0x58, 0x19, 0x57, 0xbb, 0x30, 0x9b, 0x0a, 0x29, 0x61, 0x15, 0xbf, 0x46, 0x57, 0xac, 0x48, + 0xb2, 0xe9, 0x00, 0xd3, 0x75, 0xe4, 0x44, 0x2a, 0x84, 0x71, 0x60, 0x08, 0x6b, 0xc5, 0x9d, 0x3c, + 0x2f, 0xaa, 0xb0, 0x88, 0x0d, 0x61, 0x1f, 0x09, 0x0e, 0xe1, 0x16, 0x8a, 0x7b, 0xdb, 0xe3, 0x71, + 0x9a, 0x64, 0x41, 0x6f, 0x1a, 0xe9, 0xe3, 0xcd, 0xa2, 0x60, 0xf0, 0x1e, 0x71, 0xb6, 0xe0, 0x4d, + 0xcd, 0xb0, 0x96, 0x71, 0x81, 0xe0, 0xe0, 0x05, 0xa0, 0xdd, 0x77, 0x2a, 0xf1, 0x31, 0xbb, 0xe6, + 0x55, 0x03, 0xf3, 0x6a, 0x5d, 0x1b, 0x60, 0xfa, 0x1e, 0x41, 0xec, 0x3b, 0x71, 0x52, 0xbb, 0x9a, + 0x47, 0x1f, 0x29, 0xf9, 0x29, 0x2b, 0x64, 0x12, 0x27, 0x39, 0xcb, 0x9a, 0xfd, 0x0c, 0x36, 0xaf, + 0x5b, 0x94, 0x71, 0xb9, 0xd5, 0x93, 0xd6, 0x6e, 0xff, 0x6d, 0x25, 0xba, 0x0f, 0xfd, 0x9e, 0xf2, + 0x62, 0x96, 0xa8, 0x6d, 0x71, 0x59, 0x07, 0xe1, 0xc1, 0x97, 0x61, 0xa3, 0x2d, 0x05, 0x53, 0x9a, + 0x1f, 0xde, 0x5e, 0xd1, 0x26, 0x43, 0x23, 0xbd, 0x55, 0x78, 0x5d, 0x4c, 0x5a, 0xc7, 0x46, 0xa3, + 0x26, 0xff, 0x57, 0x42, 0x22, 0x19, 0x6a, 0x41, 0x60, 0x86, 0x9f, 0x67, 0x65, 0x63, 0x1d, 0x9b, + 0xe1, 0x56, 0x1c, 0x9c, 0xe1, 0x1e, 0xa6, 0x3d, 0xfc, 0x41, 0x14, 0xd5, 0x9b, 0x47, 0xb5, 0xc1, + 0xf7, 0x63, 0x8e, 0xde, 0x55, 0x7a, 0xbb, 0xfb, 0xfb, 0x01, 0xc2, 0x2e, 0x74, 0xf5, 0xef, 0xea, + 0xdc, 0x62, 0x80, 0x6a, 0x28, 0x11, 0xb1, 0xd0, 0x01, 0x04, 0x16, 0x74, 0x74, 0x25, 0x6e, 0xf0, + 0x82, 0x56, 0x92, 0x70, 0x41, 0x35, 0x61, 0x4f, 0x12, 0x75, 0x41, 0xb1, 0x93, 0xc4, 0xa6, 0x18, + 0xa1, 0x93, 0x44, 0xc8, 0xd8, 0xcd, 0x8b, 0x6b, 0xf8, 0xa5, 0x10, 0xd7, 0x33, 0x56, 0x5c, 0x83, + 0xcd, 0x8b, 0xa7, 0xdc, 0x30, 0xc4, 0xe6, 0x85, 0x62, 0x6d, 0x50, 0x73, 0x1d, 0x56, 0x69, 0xd2, + 0x79, 0x91, 0x82, 0xa0, 0xe6, 0xd9, 0xd0, 0x08, 0x11, 0xd4, 0x08, 0xd4, 0x8e, 0x4a, 0xd7, 0xdb, + 0x88, 0xc3, 0xbd, 0xab, 0xa7, 0x3e, 0xe2, 0xd4, 0xde, 0x15, 0xc1, 0xe0, 0x10, 0x3a, 0x28, 0x58, + 0x7e, 0x85, 0x0f, 0x21, 0x25, 0x0a, 0x0f, 0xa1, 0x06, 0x81, 0xfd, 0x3d, 0xe2, 0xac, 0x88, 0xaf, + 0xf0, 0xfe, 0xae, 0x65, 0xe1, 0xfe, 0x36, 0x0c, 0xec, 0xef, 0x5a, 0xf0, 0x36, 0x91, 0x57, 0xc7, + 0x5c, 0x32, 0xbc, 0xbf, 0x7d, 0x26, 0xdc, 0xdf, 0x2d, 0xd6, 0xe6, 0x61, 0xae, 0xc3, 0xd1, 0xfc, + 0xa2, 0x8c, 0x8b, 0xe4, 0x82, 0x0f, 0x02, 0x56, 0x0c, 0x44, 0xe4, 0x61, 0x24, 0xac, 0x7d, 0xfe, + 0x7c, 0x25, 0xba, 0xdb, 0x74, 0xbb, 0x28, 0x4b, 0x1d, 0xf3, 0x7c, 0xf7, 0x2f, 0xf0, 0xfe, 0x25, + 0x70, 0xe2, 0x6c, 0xb7, 0x87, 0x9a, 0xb3, 0x26, 0xe0, 0x45, 0x3a, 0xcf, 0x4a, 0x53, 0xa8, 0x2f, + 0xfb, 0x58, 0x77, 0x14, 0x88, 0x35, 0xa1, 0x97, 0xa2, 0x5d, 0x8e, 0x75, 0xff, 0x34, 0xb2, 0xc3, + 0x49, 0x09, 0x96, 0xe3, 0xa6, 0xbd, 0x1d, 0x82, 0x58, 0x8e, 0x71, 0x12, 0x0e, 0x85, 0x83, 0x42, + 0xcc, 0xf3, 0xb2, 0x63, 0x28, 0x00, 0x28, 0x3c, 0x14, 0xda, 0xb0, 0xf6, 0xf9, 0x2e, 0xfa, 0x6d, + 0x77, 0xf8, 0xb9, 0x8d, 0xbd, 0x45, 0x8f, 0x29, 0xac, 0x89, 0x87, 0x7d, 0x71, 0x9b, 0x90, 0x36, + 0x9e, 0xe5, 0x1e, 0x97, 0x2c, 0x49, 0xcb, 0xc1, 0x2a, 0x6e, 0xa3, 0x91, 0x13, 0x09, 0x29, 0xc6, + 0xc1, 0xf8, 0xb6, 0x37, 0xcf, 0xd3, 0x24, 0x6e, 0x9f, 0xac, 0x6b, 0x5d, 0x23, 0x0e, 0xc7, 0x37, + 0x17, 0x83, 0xf1, 0xba, 0x5a, 0xf2, 0xd5, 0x7f, 0xc6, 0xcb, 0x9c, 0xe3, 0xf1, 0xda, 0x43, 0xc2, + 0xf1, 0x1a, 0xa2, 0xb0, 0x3e, 0x23, 0x2e, 0x8f, 0xd8, 0x52, 0xcc, 0x89, 0x78, 0x6d, 0xc4, 0xe1, + 0xfa, 0xb8, 0x98, 0xcd, 0x09, 0x8d, 0x87, 0xc3, 0x4c, 0xf2, 0x22, 0x63, 0xe9, 0x7e, 0xca, 0xa6, + 0xe5, 0x80, 0x88, 0x31, 0x3e, 0x45, 0xe4, 0x84, 0x34, 0x8d, 0x34, 0xe3, 0x61, 0xb9, 0xcf, 0x16, + 0xa2, 0x48, 0x24, 0xdd, 0x8c, 0x16, 0xe9, 0x6c, 0x46, 0x0f, 0x45, 0xbd, 0xed, 0x14, 0xf1, 0x55, + 0xb2, 0xe0, 0x93, 0x80, 0xb7, 0x06, 0xe9, 0xe1, 0xcd, 0x41, 0x91, 0x4e, 0x1b, 0x89, 0x79, 0x11, + 0x73, 0xb2, 0xd3, 0x6a, 0x71, 0x67, 0xa7, 0x19, 0x4c, 0x7b, 0xf8, 0xab, 0x95, 0xe8, 0x77, 0x6a, + 0xa9, 0x7b, 0xdc, 0xbd, 0xc7, 0xca, 0xab, 0x0b, 0xc1, 0x8a, 0xc9, 0xe0, 0x33, 0xcc, 0x0e, 0x8a, + 0x1a, 0xd7, 0xcf, 0x6e, 0xa3, 0x02, 0x9b, 0xf5, 0x28, 0x29, 0x9d, 0x19, 0x87, 0x36, 0xab, 0x87, + 0x84, 0x9b, 0x15, 0xa2, 0x30, 0x80, 0x28, 0x79, 0x7d, 0x14, 0xb3, 0x4a, 0xea, 0xfb, 0xe7, 0x31, + 0x6b, 0x9d, 0x1c, 0x8c, 0x8f, 0x95, 0xd0, 0x1f, 0x2d, 0x5b, 0x94, 0x0d, 0x7c, 0xc4, 0x0c, 0xfb, + 0xe2, 0xa4, 0x67, 0x33, 0x2b, 0xc2, 0x9e, 0x5b, 0x33, 0x63, 0xd8, 0x17, 0x27, 0x3c, 0x3b, 0x61, + 0x2d, 0xe4, 0x19, 0x09, 0x6d, 0xc3, 0xbe, 0x38, 0xcc, 0xbe, 0x34, 0xd3, 0xac, 0x0b, 0x4f, 0x02, + 0x76, 0xe0, 0xda, 0xb0, 0xd1, 0x8b, 0xd5, 0x0e, 0xff, 0x66, 0x25, 0xfa, 0xbe, 0xf5, 0x78, 0x2c, + 0x26, 0xc9, 0xe5, 0xb2, 0x86, 0xde, 0xb0, 0x74, 0xce, 0xcb, 0xc1, 0x33, 0xca, 0x5a, 0x9b, 0x35, + 0x25, 0x78, 0x7e, 0x2b, 0x1d, 0x38, 0x77, 0x76, 0xf2, 0x3c, 0x5d, 0x8e, 0xf9, 0x2c, 0x4f, 0xc9, + 0xb9, 0xe3, 0x21, 0xe1, 0xb9, 0x03, 0x51, 0x98, 0x95, 0x8f, 0x45, 0x95, 0xf3, 0xa3, 0x59, 0xb9, + 0x12, 0x85, 0xb3, 0xf2, 0x06, 0x81, 0xb9, 0xd2, 0x58, 0xec, 0x8a, 0x34, 0xe5, 0xb1, 0x6c, 0x3f, + 0x32, 0x37, 0x9a, 0x96, 0x08, 0xe7, 0x4a, 0x80, 0xb4, 0xa7, 0x31, 0xcd, 0x1e, 0x92, 0x15, 0xfc, + 0xe5, 0xf2, 0x28, 0xc9, 0xae, 0x07, 0x78, 0x5a, 0x60, 0x01, 0xe2, 0x34, 0x06, 0x05, 0xe1, 0x5e, + 0xf5, 0x3c, 0x9b, 0x08, 0x7c, 0xaf, 0x5a, 0x49, 0xc2, 0x7b, 0x55, 0x4d, 0x40, 0x93, 0x67, 0x9c, + 0x32, 0x59, 0x49, 0xc2, 0x26, 0x35, 0x81, 0x85, 0x42, 0x7d, 0x66, 0x4f, 0x86, 0x42, 0x70, 0x4a, + 0xbf, 0xd6, 0xc9, 0xc1, 0x11, 0xda, 0x6c, 0x5a, 0xf7, 0xb9, 0x8c, 0xaf, 0xf0, 0x11, 0xea, 0x21, + 0xe1, 0x11, 0x0a, 0x51, 0x58, 0xa5, 0xb1, 0x30, 0x9b, 0xee, 0x55, 0x7c, 0x7c, 0xb4, 0x36, 0xdc, + 0x6b, 0x9d, 0x1c, 0xdc, 0x46, 0x1e, 0xce, 0x54, 0x9b, 0xa1, 0x83, 0xbc, 0x96, 0x85, 0xb7, 0x91, + 0x86, 0x81, 0xa5, 0xaf, 0x05, 0x55, 0x73, 0xe2, 0xa5, 0xb7, 0xf2, 0x70, 0xe9, 0x3d, 0x4e, 0x3b, + 0xf9, 0x17, 0xb3, 0x8d, 0xab, 0xa5, 0x27, 0xa2, 0x9a, 0x23, 0x6f, 0x58, 0x9a, 0x4c, 0x98, 0xe4, + 0x63, 0x71, 0xcd, 0x33, 0x7c, 0xc7, 0xa4, 0x4b, 0x5b, 0xf3, 0x43, 0x4f, 0x21, 0xbc, 0x63, 0x0a, + 0x2b, 0xc2, 0x71, 0x52, 0xd3, 0xe7, 0x25, 0xdf, 0x65, 0x25, 0x11, 0xc9, 0x3c, 0x24, 0x3c, 0x4e, + 0x20, 0x0a, 0xf3, 0xd5, 0x5a, 0xfe, 0xea, 0x5d, 0xce, 0x8b, 0x84, 0x67, 0x31, 0xc7, 0xf3, 0x55, + 0x48, 0x85, 0xf3, 0x55, 0x84, 0x86, 0x7b, 0xb5, 0x3d, 0x26, 0xf9, 0xcb, 0xe5, 0x38, 0x99, 0xf1, + 0x52, 0xb2, 0x59, 0x8e, 0xef, 0xd5, 0x00, 0x14, 0xde, 0xab, 0xb5, 0xe1, 0xd6, 0xd1, 0x90, 0x09, + 0x88, 0xed, 0x9b, 0x36, 0x90, 0x08, 0xdc, 0xb4, 0x21, 0x50, 0xd8, 0xb0, 0x16, 0x40, 0x0f, 0x87, + 0x5b, 0x56, 0x82, 0x87, 0xc3, 0x34, 0xdd, 0x3a, 0x70, 0x33, 0xcc, 0xa8, 0x9a, 0x9a, 0x1d, 0x45, + 0x1f, 0xb9, 0x53, 0x74, 0xa3, 0x17, 0x8b, 0x9f, 0xf0, 0x9d, 0xf1, 0x94, 0xa9, 0x65, 0x2b, 0x70, + 0x8c, 0xd6, 0x30, 0x7d, 0x4e, 0xf8, 0x1c, 0x56, 0x3b, 0xfc, 0x8b, 0x95, 0xe8, 0x13, 0xcc, 0xe3, + 0xeb, 0x5c, 0xf9, 0x7d, 0xda, 0x6d, 0xab, 0x26, 0x89, 0xab, 0x44, 0x61, 0x0d, 0x5d, 0x86, 0x3f, + 0x89, 0x3e, 0x6e, 0x44, 0xf6, 0xa6, 0x91, 0x2e, 0x80, 0x9f, 0xb4, 0x99, 0xf2, 0x43, 0xce, 0xb8, + 0xdf, 0xee, 0xcd, 0xdb, 0xfd, 0x90, 0x5f, 0xae, 0x12, 0xec, 0x87, 0x8c, 0x0d, 0x2d, 0x26, 0xf6, + 0x43, 0x08, 0x66, 0x67, 0xa7, 0x5b, 0xbd, 0xb7, 0x89, 0xbc, 0x52, 0xf9, 0x16, 0x98, 0x9d, 0x5e, + 0x59, 0x0d, 0x44, 0xcc, 0x4e, 0x12, 0x86, 0x19, 0x49, 0x03, 0x56, 0x73, 0x13, 0x8b, 0xe5, 0xc6, + 0x90, 0x3b, 0x33, 0xd7, 0xbb, 0x41, 0x38, 0x5e, 0x1b, 0xb1, 0xde, 0xfa, 0x3c, 0x09, 0x59, 0x00, + 0xdb, 0x9f, 0x8d, 0x5e, 0xac, 0x76, 0xf8, 0x67, 0xd1, 0xf7, 0x5a, 0x15, 0xdb, 0xe7, 0x4c, 0xce, + 0x0b, 0x3e, 0x19, 0x6c, 0x77, 0x94, 0xbb, 0x01, 0x8d, 0xeb, 0xa7, 0xfd, 0x15, 0x5a, 0x39, 0x7a, + 0xc3, 0xd5, 0xc3, 0xca, 0x94, 0xe1, 0x59, 0xc8, 0xa4, 0xcf, 0x06, 0x73, 0x74, 0x5a, 0xa7, 0xb5, + 0xcd, 0x76, 0x47, 0xd7, 0xce, 0x82, 0x25, 0xa9, 0x7a, 0x48, 0xf7, 0x59, 0xc8, 0xa8, 0x87, 0x06, + 0xb7, 0xd9, 0xa4, 0x4a, 0x2b, 0x32, 0xab, 0x39, 0xee, 0x6c, 0xcf, 0x36, 0xe9, 0x48, 0x80, 0xec, + 0xce, 0xb6, 0x7a, 0xd2, 0xda, 0xad, 0x6c, 0x96, 0xbc, 0xea, 0x67, 0x77, 0x90, 0x63, 0x5e, 0xb5, + 0x2a, 0x32, 0xd2, 0xb7, 0x7a, 0xd2, 0xda, 0xeb, 0x9f, 0x46, 0x1f, 0xb7, 0xbd, 0xea, 0x85, 0x68, + 0xbb, 0xd3, 0x14, 0x58, 0x8b, 0x9e, 0xf6, 0x57, 0xb0, 0x5b, 0x9a, 0xaf, 0x92, 0x52, 0x8a, 0x62, + 0x39, 0xba, 0x12, 0x37, 0xcd, 0x0d, 0x7e, 0x7f, 0xb6, 0x6a, 0x60, 0xe8, 0x10, 0xc4, 0x96, 0x06, + 0x27, 0x5b, 0xae, 0xec, 0x4d, 0xff, 0x92, 0x70, 0xe5, 0x10, 0x1d, 0xae, 0x7c, 0xd2, 0xc6, 0xaa, + 0xa6, 0x56, 0xf6, 0xb5, 0x84, 0x35, 0xbc, 0xa8, 0xed, 0x57, 0x13, 0xd6, 0xbb, 0x41, 0x9b, 0xb1, + 0x68, 0xf1, 0x5e, 0x72, 0x79, 0x69, 0xea, 0x84, 0x97, 0xd4, 0x45, 0x88, 0x8c, 0x85, 0x40, 0x6d, + 0xd2, 0xbd, 0x9f, 0xa4, 0x5c, 0x9d, 0xe8, 0xbf, 0xbe, 0xbc, 0x4c, 0x05, 0x9b, 0x80, 0xa4, 0xbb, + 0x12, 0x0f, 0x5d, 0x39, 0x91, 0x74, 0x63, 0x9c, 0x7d, 0x46, 0x5c, 0x49, 0xcf, 0x78, 0x2c, 0xb2, + 0x38, 0x49, 0xe1, 0x05, 0x40, 0xa5, 0x69, 0x84, 0xc4, 0x33, 0xe2, 0x16, 0x64, 0x17, 0xc6, 0x4a, + 0x54, 0x4d, 0xfb, 0xa6, 0xfc, 0x8f, 0xda, 0x8a, 0x8e, 0x98, 0x58, 0x18, 0x11, 0xcc, 0xee, 0x3d, + 0x2b, 0xe1, 0x79, 0xae, 0x8c, 0xdf, 0x6b, 0x6b, 0xd5, 0x12, 0x62, 0xef, 0xe9, 0x13, 0x76, 0x0f, + 0x55, 0xfd, 0xbe, 0x27, 0x6e, 0x32, 0x65, 0xf4, 0x41, 0x5b, 0xa5, 0x91, 0x11, 0x7b, 0x28, 0xc8, + 0x68, 0xc3, 0x3f, 0x89, 0xfe, 0xbf, 0x32, 0x5c, 0x88, 0x7c, 0x70, 0x07, 0x51, 0x28, 0x9c, 0xbb, + 0x7a, 0x77, 0x49, 0xb9, 0xbd, 0xe3, 0x6a, 0xc6, 0xc6, 0x79, 0xc9, 0xa6, 0xf0, 0x8e, 0xab, 0xed, + 0x71, 0x25, 0x25, 0xee, 0xb8, 0xb6, 0x29, 0x7f, 0x54, 0x9c, 0x88, 0x89, 0xb6, 0x8e, 0xd4, 0xd0, + 0x08, 0x43, 0xa3, 0xc2, 0x85, 0x6c, 0x32, 0x73, 0xc2, 0x16, 0xc9, 0xd4, 0x2c, 0x38, 0x75, 0xdc, + 0x2a, 0x41, 0x32, 0x63, 0x99, 0xa1, 0x03, 0x11, 0xc9, 0x0c, 0x09, 0x6b, 0x9f, 0xff, 0xbc, 0x12, + 0xdd, 0xb3, 0xcc, 0x41, 0x73, 0x5a, 0x77, 0x98, 0x5d, 0x8a, 0x2a, 0xf5, 0x39, 0x4a, 0xb2, 0xeb, + 0x72, 0xf0, 0x05, 0x65, 0x12, 0xe7, 0x4d, 0x51, 0xbe, 0xbc, 0xb5, 0x9e, 0xcd, 0x5a, 0x9b, 0xa3, + 0x2c, 0xfb, 0x3c, 0xbb, 0xd6, 0x00, 0x59, 0xab, 0x39, 0xf1, 0x82, 0x1c, 0x91, 0xb5, 0x86, 0x78, + 0xdb, 0xc5, 0xc6, 0x79, 0x2a, 0x32, 0xd8, 0xc5, 0xd6, 0x42, 0x25, 0x24, 0xba, 0xb8, 0x05, 0xd9, + 0x78, 0xdc, 0x88, 0xea, 0x53, 0x97, 0x9d, 0x34, 0x05, 0xf1, 0xd8, 0xa8, 0x1a, 0x80, 0x88, 0xc7, + 0x28, 0xa8, 0xfd, 0x9c, 0x45, 0xdf, 0xa9, 0x9a, 0xf4, 0xb4, 0xe0, 0x8b, 0x84, 0xc3, 0xab, 0x17, + 0x8e, 0x84, 0x98, 0xff, 0x3e, 0x61, 0x67, 0xd6, 0x79, 0x56, 0xe6, 0x29, 0x2b, 0xaf, 0xf4, 0xc3, + 0x78, 0xbf, 0xce, 0x8d, 0x10, 0x3e, 0x8e, 0x7f, 0xd4, 0x41, 0xd9, 0xa0, 0xde, 0xc8, 0x4c, 0x88, + 0x59, 0xc5, 0x55, 0x5b, 0x61, 0x66, 0xad, 0x93, 0xb3, 0x27, 0xde, 0x07, 0x2c, 0x4d, 0x79, 0xb1, + 0x6c, 0x64, 0xc7, 0x2c, 0x4b, 0x2e, 0x79, 0x29, 0xc1, 0x89, 0xb7, 0xa6, 0x86, 0x10, 0x23, 0x4e, + 0xbc, 0x03, 0xb8, 0xcd, 0xe6, 0x81, 0xe7, 0xc3, 0x6c, 0xc2, 0xdf, 0x81, 0x6c, 0x1e, 0xda, 0x51, + 0x0c, 0x91, 0xcd, 0x53, 0xac, 0x3d, 0xf9, 0x7d, 0x99, 0x8a, 0xf8, 0x5a, 0x2f, 0x01, 0x7e, 0x07, + 0x2b, 0x09, 0x5c, 0x03, 0x1e, 0x84, 0x10, 0xbb, 0x08, 0x28, 0xc1, 0x19, 0xcf, 0x53, 0x16, 0xc3, + 0xfb, 0x37, 0xb5, 0x8e, 0x96, 0x11, 0x8b, 0x00, 0x64, 0x40, 0x71, 0xf5, 0xbd, 0x1e, 0xac, 0xb8, + 0xe0, 0x5a, 0xcf, 0x83, 0x10, 0x62, 0x97, 0x41, 0x25, 0x18, 0xe5, 0x69, 0x22, 0xc1, 0x34, 0xa8, + 0x35, 0x94, 0x84, 0x98, 0x06, 0x3e, 0x01, 0x4c, 0x1e, 0xf3, 0x62, 0xca, 0x51, 0x93, 0x4a, 0x12, + 0x34, 0xd9, 0x10, 0xf6, 0x92, 0x69, 0x5d, 0x77, 0x91, 0x2f, 0xc1, 0x25, 0x53, 0x5d, 0x2d, 0x91, + 0x2f, 0x89, 0x4b, 0xa6, 0x1e, 0x00, 0x8a, 0x78, 0xca, 0x4a, 0x89, 0x17, 0x51, 0x49, 0x82, 0x45, + 0x6c, 0x08, 0xbb, 0x46, 0xd7, 0x45, 0x9c, 0x4b, 0xb0, 0x46, 0xeb, 0x02, 0x38, 0x4f, 0xa0, 0xef, + 0x92, 0x72, 0x1b, 0x49, 0xea, 0x5e, 0xe1, 0x72, 0x3f, 0xe1, 0xe9, 0xa4, 0x04, 0x91, 0x44, 0xb7, + 0x7b, 0x23, 0x25, 0x22, 0x49, 0x9b, 0x02, 0x43, 0x49, 0x9f, 0x8f, 0x63, 0xb5, 0x03, 0x47, 0xe3, + 0x0f, 0x42, 0x88, 0x8d, 0x4f, 0x4d, 0xa1, 0x77, 0x59, 0x51, 0x24, 0xd5, 0xe2, 0xbf, 0x8a, 0x17, + 0xa8, 0x91, 0x13, 0xf1, 0x09, 0xe3, 0xc0, 0xf4, 0x6a, 0x02, 0x37, 0x56, 0x30, 0x18, 0xba, 0x3f, + 0x0d, 0x32, 0x36, 0xe3, 0x54, 0x12, 0xe7, 0x11, 0x2a, 0xd6, 0x9a, 0xc8, 0x13, 0xd4, 0xd5, 0x2e, + 0xcc, 0x79, 0x09, 0xc4, 0xb8, 0x38, 0x16, 0x0b, 0x3e, 0x16, 0xaf, 0xde, 0x25, 0xa5, 0x4c, 0xb2, + 0xa9, 0x5e, 0xb9, 0x9f, 0x13, 0x96, 0x30, 0x98, 0x78, 0x09, 0xa4, 0x53, 0xc9, 0x26, 0x10, 0xa0, + 0x2c, 0x27, 0xfc, 0x06, 0x4d, 0x20, 0xa0, 0x45, 0xc3, 0x11, 0x09, 0x44, 0x88, 0xb7, 0xe7, 0x28, + 0xc6, 0xb9, 0x7e, 0xf3, 0x77, 0x2c, 0x9a, 0x5c, 0x8e, 0xb2, 0x06, 0x41, 0x62, 0x2b, 0x1b, 0x54, + 0xb0, 0xfb, 0x4b, 0xe3, 0xdf, 0x4e, 0xb1, 0x75, 0xc2, 0x4e, 0x7b, 0x9a, 0x3d, 0xee, 0x41, 0x22, + 0xae, 0xec, 0x3d, 0x00, 0xca, 0x55, 0xfb, 0x1a, 0xc0, 0xe3, 0x1e, 0xa4, 0x73, 0x26, 0xe3, 0x56, + 0xeb, 0x25, 0x8b, 0xaf, 0xa7, 0x85, 0x98, 0x67, 0x93, 0x5d, 0x91, 0x8a, 0x02, 0x9c, 0xc9, 0x78, + 0xa5, 0x06, 0x28, 0x71, 0x26, 0xd3, 0xa1, 0x62, 0x33, 0x38, 0xb7, 0x14, 0x3b, 0x69, 0x32, 0x85, + 0x3b, 0x6a, 0xcf, 0x90, 0x02, 0x88, 0x0c, 0x0e, 0x05, 0x91, 0x41, 0x54, 0xef, 0xb8, 0x65, 0x12, + 0xb3, 0xb4, 0xf6, 0xb7, 0x4d, 0x9b, 0xf1, 0xc0, 0xce, 0x41, 0x84, 0x28, 0x20, 0xf5, 0x1c, 0xcf, + 0x8b, 0xec, 0x30, 0x93, 0x82, 0xac, 0x67, 0x03, 0x74, 0xd6, 0xd3, 0x01, 0x41, 0x58, 0x1d, 0xf3, + 0x77, 0x55, 0x69, 0xaa, 0x7f, 0xb0, 0xb0, 0x5a, 0xfd, 0x3e, 0xd4, 0xf2, 0x50, 0x58, 0x05, 0x1c, + 0xa8, 0x8c, 0x76, 0x52, 0x0f, 0x98, 0x80, 0xb6, 0x3f, 0x4c, 0xd6, 0xbb, 0x41, 0xdc, 0xcf, 0x48, + 0x2e, 0x53, 0x1e, 0xf2, 0xa3, 0x80, 0x3e, 0x7e, 0x1a, 0xd0, 0x1e, 0xb7, 0x78, 0xf5, 0xb9, 0xe2, + 0xf1, 0x75, 0xeb, 0x5a, 0x93, 0x5f, 0xd0, 0x1a, 0x21, 0x8e, 0x5b, 0x08, 0x14, 0xef, 0xa2, 0xc3, + 0x58, 0x64, 0xa1, 0x2e, 0xaa, 0xe4, 0x7d, 0xba, 0x48, 0x73, 0x76, 0xf3, 0x6b, 0xa4, 0x7a, 0x64, + 0xd6, 0xdd, 0xb4, 0x41, 0x58, 0x70, 0x21, 0x62, 0xf3, 0x4b, 0xc2, 0x36, 0x27, 0x87, 0x3e, 0x8f, + 0xdb, 0x77, 0xbe, 0x5b, 0x56, 0x8e, 0xe9, 0x3b, 0xdf, 0x14, 0x4b, 0x57, 0xb2, 0x1e, 0x23, 0x1d, + 0x56, 0xfc, 0x71, 0xb2, 0xd9, 0x0f, 0xb6, 0x5b, 0x1e, 0xcf, 0xe7, 0x6e, 0xca, 0x59, 0x51, 0x7b, + 0xdd, 0x0a, 0x18, 0xb2, 0x18, 0xb1, 0xe5, 0x09, 0xe0, 0x20, 0x84, 0x79, 0x9e, 0x77, 0x45, 0x26, + 0x79, 0x26, 0xb1, 0x10, 0xe6, 0x1b, 0xd3, 0x60, 0x28, 0x84, 0x51, 0x0a, 0x60, 0xdc, 0xaa, 0xf3, + 0x20, 0x2e, 0x4f, 0xd8, 0x0c, 0xcd, 0xd8, 0xea, 0xb3, 0x9e, 0x5a, 0x1e, 0x1a, 0xb7, 0x80, 0x73, + 0x1e, 0xf2, 0xb9, 0x5e, 0xc6, 0xac, 0x98, 0x9a, 0xd3, 0x8d, 0xc9, 0xe0, 0x29, 0x6d, 0xc7, 0x27, + 0x89, 0x87, 0x7c, 0x61, 0x0d, 0x10, 0x76, 0x0e, 0x67, 0x6c, 0x6a, 0x6a, 0x8a, 0xd4, 0x40, 0xc9, + 0x5b, 0x55, 0x5d, 0xef, 0x06, 0x81, 0x9f, 0x37, 0xc9, 0x84, 0x8b, 0x80, 0x1f, 0x25, 0xef, 0xe3, + 0x07, 0x82, 0x20, 0x7b, 0xab, 0xea, 0x5d, 0xef, 0xe8, 0x76, 0xb2, 0x89, 0xde, 0xc7, 0x0e, 0x89, + 0xe6, 0x01, 0x5c, 0x28, 0x7b, 0x23, 0x78, 0x30, 0x47, 0x9b, 0x03, 0xda, 0xd0, 0x1c, 0x35, 0xe7, + 0xaf, 0x7d, 0xe6, 0x28, 0x06, 0x6b, 0x9f, 0x3f, 0xd3, 0x73, 0x74, 0x8f, 0x49, 0x56, 0xe5, 0xed, + 0x6f, 0x12, 0x7e, 0xa3, 0x37, 0xc2, 0x48, 0x7d, 0x1b, 0x6a, 0xa8, 0x5e, 0x55, 0x04, 0xbb, 0xe2, + 0xed, 0xde, 0x7c, 0xc0, 0xb7, 0xde, 0x21, 0x74, 0xfa, 0x06, 0x5b, 0x85, 0xed, 0xde, 0x7c, 0xc0, + 0xb7, 0x7e, 0x07, 0xba, 0xd3, 0x37, 0x78, 0x11, 0x7a, 0xbb, 0x37, 0xaf, 0x7d, 0xff, 0x65, 0x33, + 0x71, 0x5d, 0xe7, 0x55, 0x1e, 0x16, 0xcb, 0x64, 0xc1, 0xb1, 0x74, 0xd2, 0xb7, 0x67, 0xd0, 0x50, + 0x3a, 0x49, 0xab, 0x38, 0x1f, 0x02, 0xc2, 0x4a, 0x71, 0x2a, 0xca, 0x44, 0x3d, 0xa4, 0x7f, 0xde, + 0xc3, 0x68, 0x03, 0x87, 0x36, 0x4d, 0x21, 0x25, 0xfb, 0xb8, 0xd1, 0x43, 0xed, 0x2d, 0xe6, 0xcd, + 0x80, 0xbd, 0xf6, 0x65, 0xe6, 0xad, 0x9e, 0xb4, 0x7d, 0xf0, 0xe7, 0x31, 0xee, 0x13, 0xc7, 0x50, + 0xaf, 0xa2, 0x0f, 0x1d, 0x9f, 0xf6, 0x57, 0xd0, 0xee, 0xff, 0xba, 0xd9, 0x57, 0x40, 0xff, 0x7a, + 0x12, 0x3c, 0xeb, 0x63, 0x11, 0x4c, 0x84, 0xe7, 0xb7, 0xd2, 0xd1, 0x05, 0xf9, 0xfb, 0x66, 0x03, + 0xdd, 0xa0, 0xea, 0x5d, 0x0e, 0xf5, 0xee, 0x9f, 0x9e, 0x13, 0xa1, 0x6e, 0xb5, 0x30, 0x9c, 0x19, + 0x2f, 0x6e, 0xa9, 0xe5, 0x7c, 0x16, 0xca, 0x83, 0xf5, 0x3b, 0x87, 0x4e, 0x79, 0x42, 0x96, 0x1d, + 0x1a, 0x16, 0xe8, 0x8b, 0xdb, 0xaa, 0x51, 0x73, 0xc5, 0x81, 0xd5, 0x57, 0x19, 0x9e, 0xf7, 0x34, + 0xec, 0x7d, 0xa7, 0xe1, 0xf3, 0xdb, 0x29, 0xe9, 0xb2, 0xfc, 0xc7, 0x4a, 0xf4, 0xc8, 0x63, 0xed, + 0xf3, 0x04, 0x70, 0xea, 0xf1, 0xe3, 0x80, 0x7d, 0x4a, 0xc9, 0x14, 0xee, 0x77, 0x7f, 0x39, 0x65, + 0xfb, 0x0d, 0x25, 0x4f, 0x65, 0x3f, 0x49, 0x25, 0x2f, 0xda, 0xdf, 0x50, 0xf2, 0xed, 0xd6, 0xd4, + 0x90, 0xfe, 0x86, 0x52, 0x00, 0x77, 0xbe, 0xa1, 0x84, 0x78, 0x46, 0xbf, 0xa1, 0x84, 0x5a, 0x0b, + 0x7e, 0x43, 0x29, 0xac, 0x41, 0x85, 0xf7, 0xa6, 0x08, 0xf5, 0xb9, 0x75, 0x2f, 0x8b, 0xfe, 0x31, + 0xf6, 0xb3, 0xdb, 0xa8, 0x10, 0x0b, 0x5c, 0xcd, 0xa9, 0x7b, 0x6e, 0x3d, 0xda, 0xd4, 0xbb, 0xeb, + 0xb6, 0xdd, 0x9b, 0xd7, 0xbe, 0x7f, 0xaa, 0x77, 0x37, 0x26, 0x9c, 0x8b, 0x42, 0x7d, 0x3f, 0x6b, + 0x23, 0x14, 0x9e, 0x2b, 0x0b, 0x6e, 0xcf, 0x6f, 0xf6, 0x83, 0x89, 0xea, 0x56, 0x84, 0xee, 0xf4, + 0x61, 0x97, 0x21, 0xd0, 0xe5, 0xdb, 0xbd, 0x79, 0x62, 0x19, 0xa9, 0x7d, 0xd7, 0xbd, 0xdd, 0xc3, + 0x98, 0xdf, 0xd7, 0x4f, 0xfb, 0x2b, 0x68, 0xf7, 0x0b, 0x9d, 0x36, 0xba, 0xee, 0x55, 0x3f, 0x6f, + 0x75, 0x99, 0x1a, 0x79, 0xdd, 0x3c, 0xec, 0x8b, 0x87, 0x12, 0x08, 0x77, 0x09, 0xed, 0x4a, 0x20, + 0xd0, 0x65, 0xf4, 0xf3, 0xdb, 0x29, 0xe9, 0xb2, 0xfc, 0xd3, 0x4a, 0x74, 0x97, 0x2c, 0x8b, 0x1e, + 0x07, 0x5f, 0xf4, 0xb5, 0x0c, 0xc6, 0xc3, 0x97, 0xb7, 0xd6, 0xd3, 0x85, 0xfa, 0xd7, 0x95, 0xe8, + 0x5e, 0xa0, 0x50, 0xf5, 0x00, 0xb9, 0x85, 0x75, 0x7f, 0xa0, 0xfc, 0xf0, 0xf6, 0x8a, 0xd4, 0x72, + 0xef, 0xe2, 0xa3, 0xf6, 0xc7, 0x78, 0x02, 0xb6, 0x47, 0xf4, 0xc7, 0x78, 0xba, 0xb5, 0xe0, 0x21, + 0x0f, 0xbb, 0x68, 0x36, 0x5d, 0xe8, 0x21, 0x8f, 0xba, 0xa1, 0x06, 0xf6, 0x1c, 0x6b, 0x9d, 0x1c, + 0xe6, 0xe4, 0xd5, 0xbb, 0x9c, 0x65, 0x13, 0xda, 0x49, 0x2d, 0xef, 0x76, 0x62, 0x38, 0x78, 0x38, + 0x56, 0x49, 0xcf, 0x44, 0xb3, 0x91, 0x7a, 0x4c, 0xe9, 0x1b, 0x24, 0x78, 0x38, 0xd6, 0x42, 0x09, + 0x6f, 0x3a, 0x6b, 0x0c, 0x79, 0x03, 0xc9, 0xe2, 0x93, 0x3e, 0x28, 0x48, 0xd1, 0x8d, 0x37, 0x73, + 0xe6, 0xbe, 0x19, 0xb2, 0xd2, 0x3a, 0x77, 0xdf, 0xea, 0x49, 0x13, 0x6e, 0x47, 0x5c, 0x7e, 0xc5, + 0xd9, 0x84, 0x17, 0x41, 0xb7, 0x86, 0xea, 0xe5, 0xd6, 0xa5, 0x31, 0xb7, 0xbb, 0x22, 0x9d, 0xcf, + 0x32, 0xdd, 0x99, 0xa4, 0x5b, 0x97, 0xea, 0x76, 0x0b, 0x68, 0x78, 0x2c, 0x68, 0xdd, 0xaa, 0xf4, + 0xf2, 0x49, 0xd8, 0x8c, 0x97, 0x55, 0x6e, 0xf4, 0x62, 0xe9, 0x7a, 0xea, 0x61, 0xd4, 0x51, 0x4f, + 0x30, 0x92, 0xb6, 0x7a, 0xd2, 0xf0, 0x7c, 0xce, 0x71, 0x6b, 0xc6, 0xd3, 0x76, 0x87, 0xad, 0xd6, + 0x90, 0x7a, 0xda, 0x5f, 0x01, 0x9e, 0x86, 0xea, 0x51, 0x75, 0x94, 0x94, 0x72, 0x3f, 0x49, 0xd3, + 0xc1, 0x46, 0x60, 0x98, 0x34, 0x50, 0xf0, 0x34, 0x14, 0x81, 0x89, 0x91, 0xdc, 0x9c, 0x1e, 0x66, + 0x83, 0x2e, 0x3b, 0x8a, 0xea, 0x35, 0x92, 0x5d, 0x1a, 0x9c, 0x68, 0x39, 0x4d, 0x6d, 0x6a, 0x3b, + 0x0c, 0x37, 0x5c, 0xab, 0xc2, 0xdb, 0xbd, 0x79, 0xf0, 0xb8, 0x5d, 0x51, 0x6a, 0x65, 0x79, 0x48, + 0x99, 0xf0, 0x56, 0x92, 0x47, 0x1d, 0x14, 0x38, 0x15, 0xac, 0xa7, 0xd1, 0xdb, 0x64, 0x32, 0xe5, + 0x12, 0x7d, 0x52, 0xe4, 0x02, 0xc1, 0x27, 0x45, 0x00, 0x04, 0x5d, 0x57, 0xff, 0x6e, 0x8e, 0x43, + 0x0f, 0x27, 0x58, 0xd7, 0x69, 0x65, 0x87, 0x0a, 0x75, 0x1d, 0x4a, 0x83, 0x68, 0x60, 0xdc, 0xea, + 0xd7, 0xf1, 0x9f, 0x84, 0xcc, 0x80, 0x77, 0xf2, 0x37, 0x7a, 0xb1, 0x60, 0x45, 0xb1, 0x0e, 0x93, + 0x59, 0x22, 0xb1, 0x15, 0xc5, 0xb1, 0x51, 0x21, 0xa1, 0x15, 0xa5, 0x8d, 0x52, 0xd5, 0xab, 0x72, + 0x84, 0xc3, 0x49, 0xb8, 0x7a, 0x35, 0xd3, 0xaf, 0x7a, 0x86, 0x6d, 0x3d, 0xd8, 0xcc, 0xcc, 0x90, + 0x91, 0x57, 0x7a, 0xb3, 0x8c, 0x8c, 0x6d, 0xf5, 0x9a, 0x26, 0x04, 0x43, 0x51, 0x87, 0x52, 0x80, + 0x07, 0xf6, 0x15, 0xd7, 0x3c, 0x7b, 0xcd, 0x73, 0xce, 0x0a, 0x96, 0xc5, 0xe8, 0xe6, 0x54, 0x19, + 0x6c, 0x91, 0xa1, 0xcd, 0x29, 0xa9, 0x01, 0x1e, 0x9b, 0xfb, 0x2f, 0x58, 0x22, 0x53, 0xc1, 0xbc, + 0xc9, 0xe8, 0xbf, 0x5f, 0xf9, 0xb8, 0x07, 0x09, 0x1f, 0x9b, 0x37, 0x80, 0x39, 0xf8, 0xae, 0x9d, + 0x7e, 0x16, 0x30, 0xe5, 0xa3, 0xa1, 0x8d, 0x30, 0xad, 0x02, 0x06, 0xb5, 0x49, 0x70, 0xb9, 0xfc, + 0x09, 0x5f, 0x62, 0x83, 0xda, 0xe6, 0xa7, 0x0a, 0x09, 0x0d, 0xea, 0x36, 0x0a, 0xf2, 0x4c, 0x77, + 0x1f, 0xb4, 0x1a, 0xd0, 0x77, 0xb7, 0x3e, 0x6b, 0x9d, 0x1c, 0x98, 0x39, 0x7b, 0xc9, 0xc2, 0x7b, + 0x4e, 0x80, 0x14, 0x74, 0x2f, 0x59, 0xe0, 0x8f, 0x09, 0x36, 0x7a, 0xb1, 0xf0, 0x91, 0x3c, 0x93, + 0xfc, 0x5d, 0xf3, 0xac, 0x1c, 0x29, 0xae, 0x92, 0xb7, 0x1e, 0x96, 0xaf, 0x77, 0x83, 0xf6, 0x02, + 0xec, 0x69, 0x21, 0x62, 0x5e, 0x96, 0xfa, 0x0b, 0x85, 0xfe, 0x0d, 0x23, 0x2d, 0x1b, 0x82, 0xef, + 0x13, 0x3e, 0x0c, 0x43, 0xb6, 0x67, 0xb4, 0xc8, 0x7e, 0xf5, 0x66, 0x15, 0xd5, 0x6c, 0x7f, 0xf0, + 0x66, 0xad, 0x93, 0xb3, 0xd3, 0x4b, 0x4b, 0xdd, 0xcf, 0xdc, 0xac, 0xa3, 0xea, 0xd8, 0x17, 0x6e, + 0x1e, 0xf7, 0x20, 0xb5, 0xab, 0xaf, 0xa2, 0xf7, 0x8f, 0xc4, 0x74, 0xc4, 0xb3, 0xc9, 0xe0, 0x07, + 0xfe, 0x15, 0x5a, 0x31, 0x1d, 0x56, 0x3f, 0x1b, 0xa3, 0x77, 0x28, 0xb1, 0xbd, 0x04, 0xb8, 0xc7, + 0x2f, 0xe6, 0xd3, 0x91, 0x64, 0x12, 0x5c, 0x02, 0x54, 0xbf, 0x0f, 0x2b, 0x01, 0x71, 0x09, 0xd0, + 0x03, 0x80, 0xbd, 0x71, 0xc1, 0x39, 0x6a, 0xaf, 0x12, 0x04, 0xed, 0x69, 0xc0, 0x66, 0x11, 0xc6, + 0x5e, 0x95, 0xa8, 0xc3, 0x4b, 0x7b, 0x56, 0x47, 0x49, 0x89, 0x2c, 0xa2, 0x4d, 0xd9, 0xc1, 0x5d, + 0x57, 0x5f, 0x7d, 0x75, 0x64, 0x3e, 0x9b, 0xb1, 0x62, 0x09, 0x06, 0xb7, 0xae, 0xa5, 0x03, 0x10, + 0x83, 0x1b, 0x05, 0xed, 0xac, 0x6d, 0x9a, 0x39, 0xbe, 0x3e, 0x10, 0x85, 0x98, 0xcb, 0x24, 0xe3, + 0xf0, 0xcb, 0x13, 0xa6, 0x41, 0x5d, 0x86, 0x98, 0xb5, 0x14, 0x6b, 0xb3, 0x5c, 0x45, 0xd4, 0xf7, + 0x09, 0xd5, 0x77, 0x8b, 0x4b, 0x29, 0x0a, 0xf8, 0x3c, 0xb1, 0xb6, 0x02, 0x21, 0x22, 0xcb, 0x25, + 0x61, 0xd0, 0xf7, 0xa7, 0x49, 0x36, 0x45, 0xfb, 0xfe, 0xd4, 0xfd, 0xea, 0xe7, 0x3d, 0x1a, 0xb0, + 0x13, 0xaa, 0x6e, 0xb4, 0x7a, 0x02, 0xe8, 0x77, 0x39, 0xd1, 0x46, 0x77, 0x09, 0x62, 0x42, 0xe1, + 0x24, 0x70, 0xf5, 0x3a, 0xe7, 0x19, 0x9f, 0x34, 0xb7, 0xe6, 0x30, 0x57, 0x1e, 0x11, 0x74, 0x05, + 0x49, 0x1b, 0x8b, 0x94, 0xfc, 0x6c, 0x9e, 0x9d, 0x16, 0xe2, 0x32, 0x49, 0x79, 0x01, 0x62, 0x51, + 0xad, 0xee, 0xc8, 0x89, 0x58, 0x84, 0x71, 0xf6, 0xfa, 0x85, 0x92, 0x7a, 0x1f, 0xdf, 0x1e, 0x17, + 0x2c, 0x86, 0xd7, 0x2f, 0x6a, 0x1b, 0x6d, 0x8c, 0x38, 0x19, 0x0c, 0xe0, 0x4e, 0xa2, 0x53, 0xbb, + 0xce, 0x96, 0x6a, 0x7c, 0xe8, 0x77, 0x09, 0xd5, 0xb7, 0x30, 0x4b, 0x90, 0xe8, 0x68, 0x73, 0x18, + 0x49, 0x24, 0x3a, 0x61, 0x0d, 0xbb, 0x94, 0x28, 0xee, 0x44, 0x5f, 0x2b, 0x02, 0x4b, 0x49, 0x6d, + 0xa3, 0x11, 0x12, 0x4b, 0x49, 0x0b, 0x02, 0x01, 0xa9, 0x99, 0x06, 0x53, 0x34, 0x20, 0x19, 0x69, + 0x30, 0x20, 0xb9, 0x94, 0x0d, 0x14, 0x87, 0x59, 0x22, 0x13, 0x96, 0x8e, 0xb8, 0x3c, 0x65, 0x05, + 0x9b, 0x71, 0xc9, 0x0b, 0x18, 0x28, 0x34, 0x32, 0xf4, 0x18, 0x22, 0x50, 0x50, 0xac, 0x76, 0xf8, + 0x7b, 0xd1, 0x87, 0xd5, 0xba, 0xcf, 0x33, 0xfd, 0x67, 0x43, 0x5e, 0xa9, 0xbf, 0x37, 0x34, 0xf8, + 0xc8, 0xd8, 0x18, 0xc9, 0x82, 0xb3, 0x59, 0x63, 0xfb, 0x03, 0xf3, 0xbb, 0x02, 0x9f, 0xae, 0x54, + 0xe3, 0xf9, 0x44, 0xc8, 0xe4, 0xb2, 0xda, 0x66, 0xeb, 0x37, 0x88, 0xc0, 0x78, 0x76, 0xc5, 0xc3, + 0xc0, 0xb7, 0x28, 0x30, 0xce, 0xc6, 0x69, 0x57, 0x7a, 0xc6, 0xf3, 0x14, 0xc6, 0x69, 0x4f, 0x5b, + 0x01, 0x44, 0x9c, 0x46, 0x41, 0x3b, 0x39, 0x5d, 0xf1, 0x98, 0x87, 0x2b, 0x33, 0xe6, 0xfd, 0x2a, + 0x33, 0xf6, 0x5e, 0xca, 0x48, 0xa3, 0x0f, 0x8f, 0xf9, 0xec, 0x82, 0x17, 0xe5, 0x55, 0x92, 0x1f, + 0x54, 0x09, 0x17, 0x93, 0x73, 0xf8, 0xda, 0xa2, 0x25, 0x86, 0x06, 0x21, 0xb2, 0x52, 0x02, 0xb5, + 0x2b, 0x81, 0x05, 0x0e, 0xcb, 0x13, 0x36, 0xe3, 0xea, 0xcb, 0x1a, 0x60, 0x25, 0x70, 0x8c, 0x38, + 0x10, 0xb1, 0x12, 0x90, 0xb0, 0xf3, 0x7e, 0x97, 0x65, 0xce, 0xf8, 0xb4, 0x1a, 0x61, 0xc5, 0x29, + 0x5b, 0xce, 0x78, 0x26, 0xb5, 0x49, 0x70, 0x26, 0xef, 0x98, 0xc4, 0x79, 0xe2, 0x4c, 0xbe, 0x8f, + 0x9e, 0x13, 0x9a, 0xbc, 0x86, 0x3f, 0x15, 0x85, 0xac, 0xff, 0x28, 0xd0, 0x79, 0x91, 0x82, 0xd0, + 0xe4, 0x37, 0xaa, 0x47, 0x12, 0xa1, 0x29, 0xac, 0xe1, 0x7c, 0x7d, 0xde, 0x2b, 0xc3, 0x1b, 0x5e, + 0x98, 0x71, 0xf2, 0x6a, 0xc6, 0x92, 0x54, 0x8f, 0x86, 0x1f, 0x05, 0x6c, 0x13, 0x3a, 0xc4, 0xd7, + 0xe7, 0xfb, 0xea, 0x3a, 0xdf, 0xeb, 0x0f, 0x97, 0x10, 0x3c, 0x22, 0xe8, 0xb0, 0x4f, 0x3c, 0x22, + 0xe8, 0xd6, 0xb2, 0x3b, 0x77, 0xcb, 0x2a, 0x6e, 0xa9, 0x88, 0x5d, 0x31, 0x81, 0xe7, 0x85, 0x8e, + 0x4d, 0x00, 0x12, 0x3b, 0xf7, 0xa0, 0x82, 0x4d, 0x0d, 0x2c, 0xb6, 0x9f, 0x64, 0x2c, 0x4d, 0x7e, + 0x06, 0xd3, 0x7a, 0xc7, 0x4e, 0x43, 0x10, 0xa9, 0x01, 0x4e, 0x62, 0xae, 0x0e, 0xb8, 0x1c, 0x27, + 0x55, 0xe8, 0x5f, 0x0f, 0xb4, 0x9b, 0x22, 0xba, 0x5d, 0x39, 0xa4, 0xf3, 0x8d, 0x56, 0xd8, 0xac, + 0x3b, 0x79, 0x3e, 0xaa, 0x56, 0xd5, 0x33, 0x1e, 0xf3, 0x24, 0x97, 0x83, 0x17, 0xe1, 0xb6, 0x02, + 0x38, 0x71, 0xd1, 0xa2, 0x87, 0x9a, 0xf3, 0xf8, 0xbe, 0x8a, 0x25, 0xa3, 0xfa, 0xaf, 0xe5, 0x9d, + 0x97, 0xbc, 0xd0, 0x89, 0xc6, 0x01, 0x97, 0x60, 0x76, 0x3a, 0xdc, 0xd0, 0x01, 0xab, 0x8a, 0x12, + 0xb3, 0x33, 0xac, 0x61, 0x0f, 0xfb, 0x1c, 0xee, 0x8c, 0x97, 0x22, 0x5d, 0x70, 0x75, 0xdf, 0x70, + 0x93, 0x34, 0xe6, 0x50, 0xc4, 0x61, 0x1f, 0x4d, 0xdb, 0x6c, 0xad, 0xed, 0x76, 0x27, 0x5b, 0x1e, + 0xc2, 0x2b, 0x13, 0x88, 0x25, 0x85, 0x11, 0xd9, 0x5a, 0x00, 0x77, 0x0e, 0xc3, 0x0b, 0xc1, 0x26, + 0x31, 0x2b, 0xe5, 0x29, 0x5b, 0xa6, 0x82, 0x4d, 0xd4, 0xba, 0x0e, 0x0f, 0xc3, 0x1b, 0x66, 0xe8, + 0x42, 0xd4, 0x61, 0x38, 0x05, 0xbb, 0xd9, 0x99, 0xfa, 0x23, 0x80, 0xfa, 0x2e, 0x27, 0xcc, 0xce, + 0x54, 0x79, 0xe1, 0x3d, 0xce, 0x87, 0x61, 0xc8, 0xbe, 0x83, 0x56, 0x8b, 0x54, 0x1a, 0x72, 0x0f, + 0xd3, 0xf1, 0x12, 0x90, 0xfb, 0x01, 0xc2, 0x7e, 0x97, 0xa2, 0xfe, 0xbd, 0xf9, 0xbb, 0x2f, 0x52, + 0x7f, 0xc9, 0x7a, 0x13, 0xd3, 0x75, 0xa1, 0xa1, 0xfb, 0x81, 0xbb, 0xad, 0x9e, 0xb4, 0x4d, 0x33, + 0x77, 0xaf, 0x98, 0xdc, 0x99, 0x4c, 0x8e, 0x79, 0x89, 0xbc, 0x50, 0x5e, 0x09, 0x87, 0x56, 0x4a, + 0xa4, 0x99, 0x6d, 0xca, 0x0e, 0xf4, 0x4a, 0xf6, 0x6a, 0x92, 0x48, 0x2d, 0x6b, 0x6e, 0x48, 0x6f, + 0xb6, 0x0d, 0xb4, 0x29, 0xa2, 0x56, 0x34, 0x6d, 0x63, 0x79, 0xc5, 0x8c, 0xc5, 0x74, 0x9a, 0x72, + 0x0d, 0x9d, 0x71, 0x56, 0x7f, 0xc8, 0x6f, 0xbb, 0x6d, 0x0b, 0x05, 0x89, 0x58, 0x1e, 0x54, 0xb0, + 0x69, 0x64, 0x85, 0xd5, 0x8f, 0xa4, 0x9a, 0x86, 0x5d, 0x6b, 0x9b, 0xf1, 0x00, 0x22, 0x8d, 0x44, + 0x41, 0xfb, 0xde, 0x5b, 0x25, 0x3e, 0xe0, 0x4d, 0x4b, 0xc0, 0x4f, 0x10, 0x29, 0x65, 0x47, 0x4c, + 0xbc, 0xf7, 0x86, 0x60, 0x76, 0x9f, 0x00, 0x3c, 0xbc, 0x5c, 0x1e, 0x4e, 0xe0, 0x3e, 0x01, 0xea, + 0x2b, 0x86, 0xd8, 0x27, 0x50, 0xac, 0xdf, 0x75, 0xe6, 0xdc, 0xeb, 0x88, 0x95, 0xb6, 0x72, 0x48, + 0xd7, 0xa1, 0x60, 0xa8, 0xeb, 0x28, 0x05, 0xbf, 0x49, 0xdd, 0xa3, 0x35, 0xa4, 0x49, 0xb1, 0x73, + 0xb5, 0xd5, 0x2e, 0xcc, 0xc6, 0x25, 0xb3, 0x9f, 0x54, 0x57, 0x96, 0xf0, 0x2f, 0xf8, 0xd7, 0x42, + 0x22, 0x2e, 0xb5, 0xa0, 0xda, 0xf6, 0xcb, 0xfb, 0xff, 0xf5, 0xcd, 0x9d, 0x95, 0x5f, 0x7c, 0x73, + 0x67, 0xe5, 0x7f, 0xbe, 0xb9, 0xb3, 0xf2, 0xf3, 0x6f, 0xef, 0xbc, 0xf7, 0x8b, 0x6f, 0xef, 0xbc, + 0xf7, 0xdf, 0xdf, 0xde, 0x79, 0xef, 0xeb, 0xf7, 0xf5, 0x1f, 0x87, 0xbd, 0xf8, 0x7f, 0xea, 0x4f, + 0xbc, 0x3e, 0xff, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xdc, 0x1c, 0x6a, 0xe3, 0x40, 0x76, 0x00, + 0x00, } // This is a compile-time assertion to ensure that this generated file @@ -394,6 +396,7 @@ type ClientCommandsHandler interface { // *** AccountRecover(context.Context, *pb.RpcAccountRecoverRequest) *pb.RpcAccountRecoverResponse AccountMigrate(context.Context, *pb.RpcAccountMigrateRequest) *pb.RpcAccountMigrateResponse + AccountMigrateCancel(context.Context, *pb.RpcAccountMigrateCancelRequest) *pb.RpcAccountMigrateCancelResponse AccountCreate(context.Context, *pb.RpcAccountCreateRequest) *pb.RpcAccountCreateResponse AccountDelete(context.Context, *pb.RpcAccountDeleteRequest) *pb.RpcAccountDeleteResponse AccountRevertDeletion(context.Context, *pb.RpcAccountRevertDeletionRequest) *pb.RpcAccountRevertDeletionResponse @@ -1144,6 +1147,26 @@ func AccountMigrate(b []byte) (resp []byte) { return resp } +func AccountMigrateCancel(b []byte) (resp []byte) { + defer func() { + if PanicHandler != nil { + if r := recover(); r != nil { + resp, _ = (&pb.RpcAccountMigrateCancelResponse{Error: &pb.RpcAccountMigrateCancelResponseError{Code: pb.RpcAccountMigrateCancelResponseError_UNKNOWN_ERROR, Description: "panic recovered"}}).Marshal() + PanicHandler(r) + } + } + }() + + in := new(pb.RpcAccountMigrateCancelRequest) + if err := in.Unmarshal(b); err != nil { + resp, _ = (&pb.RpcAccountMigrateCancelResponse{Error: &pb.RpcAccountMigrateCancelResponseError{Code: pb.RpcAccountMigrateCancelResponseError_BAD_INPUT, Description: err.Error()}}).Marshal() + return resp + } + + resp, _ = clientCommandsHandler.AccountMigrateCancel(context.Background(), in).Marshal() + return resp +} + func AccountCreate(b []byte) (resp []byte) { defer func() { if PanicHandler != nil { @@ -6154,6 +6177,8 @@ func CommandAsync(cmd string, data []byte, callback func(data []byte)) { cd = AccountRecover(data) case "AccountMigrate": cd = AccountMigrate(data) + case "AccountMigrateCancel": + cd = AccountMigrateCancel(data) case "AccountCreate": cd = AccountCreate(data) case "AccountDelete": @@ -6980,6 +7005,20 @@ func (h *ClientCommandsHandlerProxy) AccountMigrate(ctx context.Context, req *pb call, _ := actualCall(ctx, req) return call.(*pb.RpcAccountMigrateResponse) } +func (h *ClientCommandsHandlerProxy) AccountMigrateCancel(ctx context.Context, req *pb.RpcAccountMigrateCancelRequest) *pb.RpcAccountMigrateCancelResponse { + actualCall := func(ctx context.Context, req any) (any, error) { + return h.client.AccountMigrateCancel(ctx, req.(*pb.RpcAccountMigrateCancelRequest)), nil + } + for _, interceptor := range h.interceptors { + toCall := actualCall + currentInterceptor := interceptor + actualCall = func(ctx context.Context, req any) (any, error) { + return currentInterceptor(ctx, req, "AccountMigrateCancel", toCall) + } + } + call, _ := actualCall(ctx, req) + return call.(*pb.RpcAccountMigrateCancelResponse) +} func (h *ClientCommandsHandlerProxy) AccountCreate(ctx context.Context, req *pb.RpcAccountCreateRequest) *pb.RpcAccountCreateResponse { actualCall := func(ctx context.Context, req any) (any, error) { return h.client.AccountCreate(ctx, req.(*pb.RpcAccountCreateRequest)), nil diff --git a/core/account.go b/core/account.go index 284b2d793..ce11ad5bd 100644 --- a/core/account.go +++ b/core/account.go @@ -52,6 +52,7 @@ func (mw *Middleware) AccountRecover(cctx context.Context, _ *pb.RpcAccountRecov func (mw *Middleware) AccountMigrate(cctx context.Context, req *pb.RpcAccountMigrateRequest) *pb.RpcAccountMigrateResponse { err := mw.applicationService.AccountMigrate(cctx, req) code := mapErrorCode(err, + errToCode(application.ErrBadInput, pb.RpcAccountMigrateResponseError_BAD_INPUT), errToCode(application.ErrAccountNotFound, pb.RpcAccountMigrateResponseError_ACCOUNT_NOT_FOUND), ) return &pb.RpcAccountMigrateResponse{ @@ -62,6 +63,19 @@ func (mw *Middleware) AccountMigrate(cctx context.Context, req *pb.RpcAccountMig } } +func (mw *Middleware) AccountMigrateCancel(cctx context.Context, req *pb.RpcAccountMigrateCancelRequest) *pb.RpcAccountMigrateCancelResponse { + err := mw.applicationService.AccountMigrateCancel(cctx, req) + code := mapErrorCode(err, + errToCode(application.ErrBadInput, pb.RpcAccountMigrateCancelResponseError_BAD_INPUT), + ) + return &pb.RpcAccountMigrateCancelResponse{ + Error: &pb.RpcAccountMigrateCancelResponseError{ + Code: code, + Description: getErrorDescription(err), + }, + } +} + func (mw *Middleware) AccountSelect(cctx context.Context, req *pb.RpcAccountSelectRequest) *pb.RpcAccountSelectResponse { account, err := mw.applicationService.AccountSelect(cctx, req) code := mapErrorCode(err, diff --git a/core/application/account_select.go b/core/application/account_select.go index cf61d254c..4a383ce02 100644 --- a/core/application/account_select.go +++ b/core/application/account_select.go @@ -41,7 +41,7 @@ func (s *Service) AccountSelect(ctx context.Context, req *pb.RpcAccountSelectReq if req.Id == "" { return nil, ErrEmptyAccountID } - curMigration := s.migrationManager.getMigration(req.RootPath, req.Id) + curMigration := s.migrationManager.getOrCreateMigration(req.RootPath, req.Id) if !curMigration.successful() { return nil, ErrAccountStoreIsNotMigrated } diff --git a/core/application/account_store_migrate.go b/core/application/account_store_migrate.go index 782a7bf26..0179bb234 100644 --- a/core/application/account_store_migrate.go +++ b/core/application/account_store_migrate.go @@ -24,7 +24,16 @@ func (s *Service) AccountMigrate(ctx context.Context, req *pb.RpcAccountMigrateR if s.rootPath == "" { s.rootPath = req.RootPath } - return s.migrationManager.getMigration(req.RootPath, req.Id).wait(ctx) + return s.migrationManager.getOrCreateMigration(req.RootPath, req.Id).wait() +} + +func (s *Service) AccountMigrateCancel(ctx context.Context, req *pb.RpcAccountMigrateCancelRequest) error { + m := s.migrationManager.getMigration(req.Id) + if m == nil { + return nil + } + m.cancelMigration() + return nil } func (s *Service) migrate(ctx context.Context, id string) error { @@ -58,6 +67,8 @@ type migration struct { mx sync.Mutex isStarted bool isFinished bool + ctx context.Context + cancel context.CancelFunc manager *migrationManager err error id string @@ -65,7 +76,10 @@ type migration struct { } func newMigration(m *migrationManager, id string) *migration { + ctx, cancel := context.WithCancel(context.Background()) return &migration{ + ctx: ctx, + cancel: cancel, done: make(chan struct{}), id: id, manager: m, @@ -89,7 +103,12 @@ func (m *migration) setFinished(err error, notify bool) { } } -func (m *migration) wait(ctx context.Context) error { +func (m *migration) cancelMigration() { + m.cancel() + _ = m.wait() +} + +func (m *migration) wait() error { m.mx.Lock() if !m.manager.setMigrationRunning(m.id, true) { m.mx.Unlock() @@ -103,7 +122,7 @@ func (m *migration) wait(ctx context.Context) error { return m.err } m.mx.Unlock() - err := m.manager.service.migrate(ctx, m.id) + err := m.manager.service.migrate(m.ctx, m.id) if err != nil { m.setFinished(err, true) return err @@ -160,7 +179,7 @@ func (m *migrationManager) isRunning() bool { return m.runningMigration != "" } -func (m *migrationManager) getMigration(rootPath, id string) *migration { +func (m *migrationManager) getOrCreateMigration(rootPath, id string) *migration { m.Lock() defer m.Unlock() if m.migrations == nil { @@ -182,6 +201,12 @@ func (m *migrationManager) getMigration(rootPath, id string) *migration { return m.migrations[id] } +func (m *migrationManager) getMigration(id string) *migration { + m.Lock() + defer m.Unlock() + return m.migrations[id] +} + func anyPathExists(paths []string) bool { for _, path := range paths { if _, err := os.Stat(path); err == nil { diff --git a/docs/proto.md b/docs/proto.md index 7d3ac559d..55910349d 100644 --- a/docs/proto.md +++ b/docs/proto.md @@ -87,6 +87,10 @@ - [Rpc.Account.Migrate.Request](#anytype-Rpc-Account-Migrate-Request) - [Rpc.Account.Migrate.Response](#anytype-Rpc-Account-Migrate-Response) - [Rpc.Account.Migrate.Response.Error](#anytype-Rpc-Account-Migrate-Response-Error) + - [Rpc.Account.MigrateCancel](#anytype-Rpc-Account-MigrateCancel) + - [Rpc.Account.MigrateCancel.Request](#anytype-Rpc-Account-MigrateCancel-Request) + - [Rpc.Account.MigrateCancel.Response](#anytype-Rpc-Account-MigrateCancel-Response) + - [Rpc.Account.MigrateCancel.Response.Error](#anytype-Rpc-Account-MigrateCancel-Response-Error) - [Rpc.Account.Move](#anytype-Rpc-Account-Move) - [Rpc.Account.Move.Request](#anytype-Rpc-Account-Move-Request) - [Rpc.Account.Move.Response](#anytype-Rpc-Account-Move-Response) @@ -1265,6 +1269,7 @@ - [Rpc.Account.LocalLink.NewChallenge.Response.Error.Code](#anytype-Rpc-Account-LocalLink-NewChallenge-Response-Error-Code) - [Rpc.Account.LocalLink.SolveChallenge.Response.Error.Code](#anytype-Rpc-Account-LocalLink-SolveChallenge-Response-Error-Code) - [Rpc.Account.Migrate.Response.Error.Code](#anytype-Rpc-Account-Migrate-Response-Error-Code) + - [Rpc.Account.MigrateCancel.Response.Error.Code](#anytype-Rpc-Account-MigrateCancel-Response-Error-Code) - [Rpc.Account.Move.Response.Error.Code](#anytype-Rpc-Account-Move-Response-Error-Code) - [Rpc.Account.NetworkMode](#anytype-Rpc-Account-NetworkMode) - [Rpc.Account.Recover.Response.Error.Code](#anytype-Rpc-Account-Recover-Response-Error-Code) @@ -1990,6 +1995,7 @@ | WorkspaceExport | [Rpc.Workspace.Export.Request](#anytype-Rpc-Workspace-Export-Request) | [Rpc.Workspace.Export.Response](#anytype-Rpc-Workspace-Export-Response) | | | AccountRecover | [Rpc.Account.Recover.Request](#anytype-Rpc-Account-Recover-Request) | [Rpc.Account.Recover.Response](#anytype-Rpc-Account-Recover-Response) | Account *** | | AccountMigrate | [Rpc.Account.Migrate.Request](#anytype-Rpc-Account-Migrate-Request) | [Rpc.Account.Migrate.Response](#anytype-Rpc-Account-Migrate-Response) | | +| AccountMigrateCancel | [Rpc.Account.MigrateCancel.Request](#anytype-Rpc-Account-MigrateCancel-Request) | [Rpc.Account.MigrateCancel.Response](#anytype-Rpc-Account-MigrateCancel-Response) | | | AccountCreate | [Rpc.Account.Create.Request](#anytype-Rpc-Account-Create-Request) | [Rpc.Account.Create.Response](#anytype-Rpc-Account-Create-Response) | | | AccountDelete | [Rpc.Account.Delete.Request](#anytype-Rpc-Account-Delete-Request) | [Rpc.Account.Delete.Response](#anytype-Rpc-Account-Delete-Response) | | | AccountRevertDeletion | [Rpc.Account.RevertDeletion.Request](#anytype-Rpc-Account-RevertDeletion-Request) | [Rpc.Account.RevertDeletion.Response](#anytype-Rpc-Account-RevertDeletion-Response) | | @@ -3425,6 +3431,62 @@ TODO: Remove this request if we do not need it, GO-1926 + + +### Rpc.Account.MigrateCancel + + + + + + + + + +### Rpc.Account.MigrateCancel.Request + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [string](#string) | | Id of a selected account | + + + + + + + + +### Rpc.Account.MigrateCancel.Response + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| error | [Rpc.Account.MigrateCancel.Response.Error](#anytype-Rpc-Account-MigrateCancel-Response-Error) | | | + + + + + + + + +### Rpc.Account.MigrateCancel.Response.Error + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| code | [Rpc.Account.MigrateCancel.Response.Error.Code](#anytype-Rpc-Account-MigrateCancel-Response-Error-Code) | | | +| description | [string](#string) | | | + + + + + + ### Rpc.Account.Move @@ -20562,6 +20624,19 @@ Middleware-to-front-end response, that can contain a NULL error or a non-NULL er + + +### Rpc.Account.MigrateCancel.Response.Error.Code + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| NULL | 0 | No error | +| UNKNOWN_ERROR | 1 | Any other errors | +| BAD_INPUT | 2 | Id or root path is wrong | + + + ### Rpc.Account.Move.Response.Error.Code diff --git a/pb/commands.pb.go b/pb/commands.pb.go index 4d0ec946b..919cdbf22 100644 --- a/pb/commands.pb.go +++ b/pb/commands.pb.go @@ -1163,6 +1163,34 @@ func (RpcAccountMigrateResponseErrorCode) EnumDescriptor() ([]byte, []int) { return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 5, 1, 0, 0} } +type RpcAccountMigrateCancelResponseErrorCode int32 + +const ( + RpcAccountMigrateCancelResponseError_NULL RpcAccountMigrateCancelResponseErrorCode = 0 + RpcAccountMigrateCancelResponseError_UNKNOWN_ERROR RpcAccountMigrateCancelResponseErrorCode = 1 + RpcAccountMigrateCancelResponseError_BAD_INPUT RpcAccountMigrateCancelResponseErrorCode = 2 +) + +var RpcAccountMigrateCancelResponseErrorCode_name = map[int32]string{ + 0: "NULL", + 1: "UNKNOWN_ERROR", + 2: "BAD_INPUT", +} + +var RpcAccountMigrateCancelResponseErrorCode_value = map[string]int32{ + "NULL": 0, + "UNKNOWN_ERROR": 1, + "BAD_INPUT": 2, +} + +func (x RpcAccountMigrateCancelResponseErrorCode) String() string { + return proto.EnumName(RpcAccountMigrateCancelResponseErrorCode_name, int32(x)) +} + +func (RpcAccountMigrateCancelResponseErrorCode) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 6, 1, 0, 0} +} + type RpcAccountSelectResponseErrorCode int32 const ( @@ -1230,7 +1258,7 @@ func (x RpcAccountSelectResponseErrorCode) String() string { } func (RpcAccountSelectResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 6, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 7, 1, 0, 0} } type RpcAccountStopResponseErrorCode int32 @@ -1267,7 +1295,7 @@ func (x RpcAccountStopResponseErrorCode) String() string { } func (RpcAccountStopResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 7, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 8, 1, 0, 0} } type RpcAccountMoveResponseErrorCode int32 @@ -1313,7 +1341,7 @@ func (x RpcAccountMoveResponseErrorCode) String() string { } func (RpcAccountMoveResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 8, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 9, 1, 0, 0} } type RpcAccountConfigUpdateTimezones int32 @@ -1416,7 +1444,7 @@ func (x RpcAccountConfigUpdateTimezones) String() string { } func (RpcAccountConfigUpdateTimezones) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 9, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 10, 0} } type RpcAccountConfigUpdateResponseErrorCode int32 @@ -1450,7 +1478,7 @@ func (x RpcAccountConfigUpdateResponseErrorCode) String() string { } func (RpcAccountConfigUpdateResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 9, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 10, 1, 0, 0} } type RpcAccountRecoverFromLegacyExportResponseErrorCode int32 @@ -1481,7 +1509,7 @@ func (x RpcAccountRecoverFromLegacyExportResponseErrorCode) String() string { } func (RpcAccountRecoverFromLegacyExportResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 11, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12, 1, 0, 0} } type RpcAccountEnableLocalNetworkSyncResponseErrorCode int32 @@ -1512,7 +1540,7 @@ func (x RpcAccountEnableLocalNetworkSyncResponseErrorCode) String() string { } func (RpcAccountEnableLocalNetworkSyncResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 1, 0, 0} } type RpcAccountChangeNetworkConfigAndRestartResponseErrorCode int32 @@ -1555,7 +1583,7 @@ func (x RpcAccountChangeNetworkConfigAndRestartResponseErrorCode) String() strin } func (RpcAccountChangeNetworkConfigAndRestartResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 1, 0, 0} } type RpcAccountLocalLinkNewChallengeResponseErrorCode int32 @@ -1589,7 +1617,7 @@ func (x RpcAccountLocalLinkNewChallengeResponseErrorCode) String() string { } func (RpcAccountLocalLinkNewChallengeResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 0, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 15, 0, 1, 0, 0} } type RpcAccountLocalLinkSolveChallengeResponseErrorCode int32 @@ -1629,7 +1657,7 @@ func (x RpcAccountLocalLinkSolveChallengeResponseErrorCode) String() string { } func (RpcAccountLocalLinkSolveChallengeResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 1, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 15, 1, 1, 0, 0} } type RpcWorkspaceGetCurrentResponseErrorCode int32 @@ -14830,6 +14858,182 @@ func (m *RpcAccountMigrateResponseError) GetDescription() string { return "" } +type RpcAccountMigrateCancel struct { +} + +func (m *RpcAccountMigrateCancel) Reset() { *m = RpcAccountMigrateCancel{} } +func (m *RpcAccountMigrateCancel) String() string { return proto.CompactTextString(m) } +func (*RpcAccountMigrateCancel) ProtoMessage() {} +func (*RpcAccountMigrateCancel) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 6} +} +func (m *RpcAccountMigrateCancel) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcAccountMigrateCancel) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcAccountMigrateCancel.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcAccountMigrateCancel) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcAccountMigrateCancel.Merge(m, src) +} +func (m *RpcAccountMigrateCancel) XXX_Size() int { + return m.Size() +} +func (m *RpcAccountMigrateCancel) XXX_DiscardUnknown() { + xxx_messageInfo_RpcAccountMigrateCancel.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcAccountMigrateCancel proto.InternalMessageInfo + +type RpcAccountMigrateCancelRequest struct { + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` +} + +func (m *RpcAccountMigrateCancelRequest) Reset() { *m = RpcAccountMigrateCancelRequest{} } +func (m *RpcAccountMigrateCancelRequest) String() string { return proto.CompactTextString(m) } +func (*RpcAccountMigrateCancelRequest) ProtoMessage() {} +func (*RpcAccountMigrateCancelRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 6, 0} +} +func (m *RpcAccountMigrateCancelRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcAccountMigrateCancelRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcAccountMigrateCancelRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcAccountMigrateCancelRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcAccountMigrateCancelRequest.Merge(m, src) +} +func (m *RpcAccountMigrateCancelRequest) XXX_Size() int { + return m.Size() +} +func (m *RpcAccountMigrateCancelRequest) XXX_DiscardUnknown() { + xxx_messageInfo_RpcAccountMigrateCancelRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcAccountMigrateCancelRequest proto.InternalMessageInfo + +func (m *RpcAccountMigrateCancelRequest) GetId() string { + if m != nil { + return m.Id + } + return "" +} + +type RpcAccountMigrateCancelResponse struct { + Error *RpcAccountMigrateCancelResponseError `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` +} + +func (m *RpcAccountMigrateCancelResponse) Reset() { *m = RpcAccountMigrateCancelResponse{} } +func (m *RpcAccountMigrateCancelResponse) String() string { return proto.CompactTextString(m) } +func (*RpcAccountMigrateCancelResponse) ProtoMessage() {} +func (*RpcAccountMigrateCancelResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 6, 1} +} +func (m *RpcAccountMigrateCancelResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcAccountMigrateCancelResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcAccountMigrateCancelResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcAccountMigrateCancelResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcAccountMigrateCancelResponse.Merge(m, src) +} +func (m *RpcAccountMigrateCancelResponse) XXX_Size() int { + return m.Size() +} +func (m *RpcAccountMigrateCancelResponse) XXX_DiscardUnknown() { + xxx_messageInfo_RpcAccountMigrateCancelResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcAccountMigrateCancelResponse proto.InternalMessageInfo + +func (m *RpcAccountMigrateCancelResponse) GetError() *RpcAccountMigrateCancelResponseError { + if m != nil { + return m.Error + } + return nil +} + +type RpcAccountMigrateCancelResponseError struct { + Code RpcAccountMigrateCancelResponseErrorCode `protobuf:"varint,1,opt,name=code,proto3,enum=anytype.RpcAccountMigrateCancelResponseErrorCode" json:"code,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` +} + +func (m *RpcAccountMigrateCancelResponseError) Reset() { *m = RpcAccountMigrateCancelResponseError{} } +func (m *RpcAccountMigrateCancelResponseError) String() string { return proto.CompactTextString(m) } +func (*RpcAccountMigrateCancelResponseError) ProtoMessage() {} +func (*RpcAccountMigrateCancelResponseError) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 6, 1, 0} +} +func (m *RpcAccountMigrateCancelResponseError) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcAccountMigrateCancelResponseError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcAccountMigrateCancelResponseError.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcAccountMigrateCancelResponseError) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcAccountMigrateCancelResponseError.Merge(m, src) +} +func (m *RpcAccountMigrateCancelResponseError) XXX_Size() int { + return m.Size() +} +func (m *RpcAccountMigrateCancelResponseError) XXX_DiscardUnknown() { + xxx_messageInfo_RpcAccountMigrateCancelResponseError.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcAccountMigrateCancelResponseError proto.InternalMessageInfo + +func (m *RpcAccountMigrateCancelResponseError) GetCode() RpcAccountMigrateCancelResponseErrorCode { + if m != nil { + return m.Code + } + return RpcAccountMigrateCancelResponseError_NULL +} + +func (m *RpcAccountMigrateCancelResponseError) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + type RpcAccountSelect struct { } @@ -14837,7 +15041,7 @@ func (m *RpcAccountSelect) Reset() { *m = RpcAccountSelect{} } func (m *RpcAccountSelect) String() string { return proto.CompactTextString(m) } func (*RpcAccountSelect) ProtoMessage() {} func (*RpcAccountSelect) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 6} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 7} } func (m *RpcAccountSelect) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14882,7 +15086,7 @@ func (m *RpcAccountSelectRequest) Reset() { *m = RpcAccountSelectRequest func (m *RpcAccountSelectRequest) String() string { return proto.CompactTextString(m) } func (*RpcAccountSelectRequest) ProtoMessage() {} func (*RpcAccountSelectRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 6, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 7, 0} } func (m *RpcAccountSelectRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14965,7 +15169,7 @@ func (m *RpcAccountSelectResponse) Reset() { *m = RpcAccountSelectRespon func (m *RpcAccountSelectResponse) String() string { return proto.CompactTextString(m) } func (*RpcAccountSelectResponse) ProtoMessage() {} func (*RpcAccountSelectResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 6, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 7, 1} } func (m *RpcAccountSelectResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15024,7 +15228,7 @@ func (m *RpcAccountSelectResponseError) Reset() { *m = RpcAccountSelectR func (m *RpcAccountSelectResponseError) String() string { return proto.CompactTextString(m) } func (*RpcAccountSelectResponseError) ProtoMessage() {} func (*RpcAccountSelectResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 6, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 7, 1, 0} } func (m *RpcAccountSelectResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15074,7 +15278,7 @@ func (m *RpcAccountStop) Reset() { *m = RpcAccountStop{} } func (m *RpcAccountStop) String() string { return proto.CompactTextString(m) } func (*RpcAccountStop) ProtoMessage() {} func (*RpcAccountStop) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 7} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 8} } func (m *RpcAccountStop) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15113,7 +15317,7 @@ func (m *RpcAccountStopRequest) Reset() { *m = RpcAccountStopRequest{} } func (m *RpcAccountStopRequest) String() string { return proto.CompactTextString(m) } func (*RpcAccountStopRequest) ProtoMessage() {} func (*RpcAccountStopRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 7, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 8, 0} } func (m *RpcAccountStopRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15159,7 +15363,7 @@ func (m *RpcAccountStopResponse) Reset() { *m = RpcAccountStopResponse{} func (m *RpcAccountStopResponse) String() string { return proto.CompactTextString(m) } func (*RpcAccountStopResponse) ProtoMessage() {} func (*RpcAccountStopResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 7, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 8, 1} } func (m *RpcAccountStopResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15204,7 +15408,7 @@ func (m *RpcAccountStopResponseError) Reset() { *m = RpcAccountStopRespo func (m *RpcAccountStopResponseError) String() string { return proto.CompactTextString(m) } func (*RpcAccountStopResponseError) ProtoMessage() {} func (*RpcAccountStopResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 7, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 8, 1, 0} } func (m *RpcAccountStopResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15254,7 +15458,7 @@ func (m *RpcAccountMove) Reset() { *m = RpcAccountMove{} } func (m *RpcAccountMove) String() string { return proto.CompactTextString(m) } func (*RpcAccountMove) ProtoMessage() {} func (*RpcAccountMove) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 8} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 9} } func (m *RpcAccountMove) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15293,7 +15497,7 @@ func (m *RpcAccountMoveRequest) Reset() { *m = RpcAccountMoveRequest{} } func (m *RpcAccountMoveRequest) String() string { return proto.CompactTextString(m) } func (*RpcAccountMoveRequest) ProtoMessage() {} func (*RpcAccountMoveRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 8, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 9, 0} } func (m *RpcAccountMoveRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15337,7 +15541,7 @@ func (m *RpcAccountMoveResponse) Reset() { *m = RpcAccountMoveResponse{} func (m *RpcAccountMoveResponse) String() string { return proto.CompactTextString(m) } func (*RpcAccountMoveResponse) ProtoMessage() {} func (*RpcAccountMoveResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 8, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 9, 1} } func (m *RpcAccountMoveResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15382,7 +15586,7 @@ func (m *RpcAccountMoveResponseError) Reset() { *m = RpcAccountMoveRespo func (m *RpcAccountMoveResponseError) String() string { return proto.CompactTextString(m) } func (*RpcAccountMoveResponseError) ProtoMessage() {} func (*RpcAccountMoveResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 8, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 9, 1, 0} } func (m *RpcAccountMoveResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15432,7 +15636,7 @@ func (m *RpcAccountConfigUpdate) Reset() { *m = RpcAccountConfigUpdate{} func (m *RpcAccountConfigUpdate) String() string { return proto.CompactTextString(m) } func (*RpcAccountConfigUpdate) ProtoMessage() {} func (*RpcAccountConfigUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 9} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 10} } func (m *RpcAccountConfigUpdate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15469,7 +15673,7 @@ func (m *RpcAccountConfigUpdateRequest) Reset() { *m = RpcAccountConfigU func (m *RpcAccountConfigUpdateRequest) String() string { return proto.CompactTextString(m) } func (*RpcAccountConfigUpdateRequest) ProtoMessage() {} func (*RpcAccountConfigUpdateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 9, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 10, 0} } func (m *RpcAccountConfigUpdateRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15513,7 +15717,7 @@ func (m *RpcAccountConfigUpdateResponse) Reset() { *m = RpcAccountConfig func (m *RpcAccountConfigUpdateResponse) String() string { return proto.CompactTextString(m) } func (*RpcAccountConfigUpdateResponse) ProtoMessage() {} func (*RpcAccountConfigUpdateResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 9, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 10, 1} } func (m *RpcAccountConfigUpdateResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15558,7 +15762,7 @@ func (m *RpcAccountConfigUpdateResponseError) Reset() { *m = RpcAccountC func (m *RpcAccountConfigUpdateResponseError) String() string { return proto.CompactTextString(m) } func (*RpcAccountConfigUpdateResponseError) ProtoMessage() {} func (*RpcAccountConfigUpdateResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 9, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 10, 1, 0} } func (m *RpcAccountConfigUpdateResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15608,7 +15812,7 @@ func (m *RpcAccountGetConfig) Reset() { *m = RpcAccountGetConfig{} } func (m *RpcAccountGetConfig) String() string { return proto.CompactTextString(m) } func (*RpcAccountGetConfig) ProtoMessage() {} func (*RpcAccountGetConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 10} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 11} } func (m *RpcAccountGetConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15644,7 +15848,7 @@ func (m *RpcAccountGetConfigGet) Reset() { *m = RpcAccountGetConfigGet{} func (m *RpcAccountGetConfigGet) String() string { return proto.CompactTextString(m) } func (*RpcAccountGetConfigGet) ProtoMessage() {} func (*RpcAccountGetConfigGet) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 10, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 11, 0} } func (m *RpcAccountGetConfigGet) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15680,7 +15884,7 @@ func (m *RpcAccountGetConfigGetRequest) Reset() { *m = RpcAccountGetConf func (m *RpcAccountGetConfigGetRequest) String() string { return proto.CompactTextString(m) } func (*RpcAccountGetConfigGetRequest) ProtoMessage() {} func (*RpcAccountGetConfigGetRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 10, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 11, 0, 0} } func (m *RpcAccountGetConfigGetRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15716,7 +15920,7 @@ func (m *RpcAccountRecoverFromLegacyExport) Reset() { *m = RpcAccountRec func (m *RpcAccountRecoverFromLegacyExport) String() string { return proto.CompactTextString(m) } func (*RpcAccountRecoverFromLegacyExport) ProtoMessage() {} func (*RpcAccountRecoverFromLegacyExport) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 11} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12} } func (m *RpcAccountRecoverFromLegacyExport) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15757,7 +15961,7 @@ func (m *RpcAccountRecoverFromLegacyExportRequest) Reset() { func (m *RpcAccountRecoverFromLegacyExportRequest) String() string { return proto.CompactTextString(m) } func (*RpcAccountRecoverFromLegacyExportRequest) ProtoMessage() {} func (*RpcAccountRecoverFromLegacyExportRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 11, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12, 0} } func (m *RpcAccountRecoverFromLegacyExportRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15821,7 +16025,7 @@ func (m *RpcAccountRecoverFromLegacyExportResponse) String() string { } func (*RpcAccountRecoverFromLegacyExportResponse) ProtoMessage() {} func (*RpcAccountRecoverFromLegacyExportResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 11, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12, 1} } func (m *RpcAccountRecoverFromLegacyExportResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15884,7 +16088,7 @@ func (m *RpcAccountRecoverFromLegacyExportResponseError) String() string { } func (*RpcAccountRecoverFromLegacyExportResponseError) ProtoMessage() {} func (*RpcAccountRecoverFromLegacyExportResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 11, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12, 1, 0} } func (m *RpcAccountRecoverFromLegacyExportResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15934,7 +16138,7 @@ func (m *RpcAccountEnableLocalNetworkSync) Reset() { *m = RpcAccountEnab func (m *RpcAccountEnableLocalNetworkSync) String() string { return proto.CompactTextString(m) } func (*RpcAccountEnableLocalNetworkSync) ProtoMessage() {} func (*RpcAccountEnableLocalNetworkSync) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13} } func (m *RpcAccountEnableLocalNetworkSync) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15972,7 +16176,7 @@ func (m *RpcAccountEnableLocalNetworkSyncRequest) Reset() { func (m *RpcAccountEnableLocalNetworkSyncRequest) String() string { return proto.CompactTextString(m) } func (*RpcAccountEnableLocalNetworkSyncRequest) ProtoMessage() {} func (*RpcAccountEnableLocalNetworkSyncRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 0} } func (m *RpcAccountEnableLocalNetworkSyncRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16011,7 +16215,7 @@ func (m *RpcAccountEnableLocalNetworkSyncResponse) Reset() { func (m *RpcAccountEnableLocalNetworkSyncResponse) String() string { return proto.CompactTextString(m) } func (*RpcAccountEnableLocalNetworkSyncResponse) ProtoMessage() {} func (*RpcAccountEnableLocalNetworkSyncResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 1} } func (m *RpcAccountEnableLocalNetworkSyncResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16060,7 +16264,7 @@ func (m *RpcAccountEnableLocalNetworkSyncResponseError) String() string { } func (*RpcAccountEnableLocalNetworkSyncResponseError) ProtoMessage() {} func (*RpcAccountEnableLocalNetworkSyncResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 1, 0} } func (m *RpcAccountEnableLocalNetworkSyncResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16112,7 +16316,7 @@ func (m *RpcAccountChangeNetworkConfigAndRestart) Reset() { func (m *RpcAccountChangeNetworkConfigAndRestart) String() string { return proto.CompactTextString(m) } func (*RpcAccountChangeNetworkConfigAndRestart) ProtoMessage() {} func (*RpcAccountChangeNetworkConfigAndRestart) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14} } func (m *RpcAccountChangeNetworkConfigAndRestart) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16154,7 +16358,7 @@ func (m *RpcAccountChangeNetworkConfigAndRestartRequest) String() string { } func (*RpcAccountChangeNetworkConfigAndRestartRequest) ProtoMessage() {} func (*RpcAccountChangeNetworkConfigAndRestartRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 0} } func (m *RpcAccountChangeNetworkConfigAndRestartRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16209,7 +16413,7 @@ func (m *RpcAccountChangeNetworkConfigAndRestartResponse) String() string { } func (*RpcAccountChangeNetworkConfigAndRestartResponse) ProtoMessage() {} func (*RpcAccountChangeNetworkConfigAndRestartResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 1} } func (m *RpcAccountChangeNetworkConfigAndRestartResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16258,7 +16462,7 @@ func (m *RpcAccountChangeNetworkConfigAndRestartResponseError) String() string { } func (*RpcAccountChangeNetworkConfigAndRestartResponseError) ProtoMessage() {} func (*RpcAccountChangeNetworkConfigAndRestartResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 1, 0} } func (m *RpcAccountChangeNetworkConfigAndRestartResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16308,7 +16512,7 @@ func (m *RpcAccountLocalLink) Reset() { *m = RpcAccountLocalLink{} } func (m *RpcAccountLocalLink) String() string { return proto.CompactTextString(m) } func (*RpcAccountLocalLink) ProtoMessage() {} func (*RpcAccountLocalLink) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 15} } func (m *RpcAccountLocalLink) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16344,7 +16548,7 @@ func (m *RpcAccountLocalLinkNewChallenge) Reset() { *m = RpcAccountLocal func (m *RpcAccountLocalLinkNewChallenge) String() string { return proto.CompactTextString(m) } func (*RpcAccountLocalLinkNewChallenge) ProtoMessage() {} func (*RpcAccountLocalLinkNewChallenge) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 15, 0} } func (m *RpcAccountLocalLinkNewChallenge) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16383,7 +16587,7 @@ func (m *RpcAccountLocalLinkNewChallengeRequest) Reset() { func (m *RpcAccountLocalLinkNewChallengeRequest) String() string { return proto.CompactTextString(m) } func (*RpcAccountLocalLinkNewChallengeRequest) ProtoMessage() {} func (*RpcAccountLocalLinkNewChallengeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 15, 0, 0} } func (m *RpcAccountLocalLinkNewChallengeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16430,7 +16634,7 @@ func (m *RpcAccountLocalLinkNewChallengeResponse) Reset() { func (m *RpcAccountLocalLinkNewChallengeResponse) String() string { return proto.CompactTextString(m) } func (*RpcAccountLocalLinkNewChallengeResponse) ProtoMessage() {} func (*RpcAccountLocalLinkNewChallengeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 0, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 15, 0, 1} } func (m *RpcAccountLocalLinkNewChallengeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16486,7 +16690,7 @@ func (m *RpcAccountLocalLinkNewChallengeResponseError) String() string { } func (*RpcAccountLocalLinkNewChallengeResponseError) ProtoMessage() {} func (*RpcAccountLocalLinkNewChallengeResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 0, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 15, 0, 1, 0} } func (m *RpcAccountLocalLinkNewChallengeResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16536,7 +16740,7 @@ func (m *RpcAccountLocalLinkSolveChallenge) Reset() { *m = RpcAccountLoc func (m *RpcAccountLocalLinkSolveChallenge) String() string { return proto.CompactTextString(m) } func (*RpcAccountLocalLinkSolveChallenge) ProtoMessage() {} func (*RpcAccountLocalLinkSolveChallenge) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 15, 1} } func (m *RpcAccountLocalLinkSolveChallenge) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16576,7 +16780,7 @@ func (m *RpcAccountLocalLinkSolveChallengeRequest) Reset() { func (m *RpcAccountLocalLinkSolveChallengeRequest) String() string { return proto.CompactTextString(m) } func (*RpcAccountLocalLinkSolveChallengeRequest) ProtoMessage() {} func (*RpcAccountLocalLinkSolveChallengeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 15, 1, 0} } func (m *RpcAccountLocalLinkSolveChallengeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16633,7 +16837,7 @@ func (m *RpcAccountLocalLinkSolveChallengeResponse) String() string { } func (*RpcAccountLocalLinkSolveChallengeResponse) ProtoMessage() {} func (*RpcAccountLocalLinkSolveChallengeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 1, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 15, 1, 1} } func (m *RpcAccountLocalLinkSolveChallengeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16696,7 +16900,7 @@ func (m *RpcAccountLocalLinkSolveChallengeResponseError) String() string { } func (*RpcAccountLocalLinkSolveChallengeResponseError) ProtoMessage() {} func (*RpcAccountLocalLinkSolveChallengeResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 1, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 15, 1, 1, 0} } func (m *RpcAccountLocalLinkSolveChallengeResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -69520,6 +69724,7 @@ func init() { proto.RegisterEnum("anytype.RpcAccountDeleteResponseErrorCode", RpcAccountDeleteResponseErrorCode_name, RpcAccountDeleteResponseErrorCode_value) proto.RegisterEnum("anytype.RpcAccountRevertDeletionResponseErrorCode", RpcAccountRevertDeletionResponseErrorCode_name, RpcAccountRevertDeletionResponseErrorCode_value) proto.RegisterEnum("anytype.RpcAccountMigrateResponseErrorCode", RpcAccountMigrateResponseErrorCode_name, RpcAccountMigrateResponseErrorCode_value) + proto.RegisterEnum("anytype.RpcAccountMigrateCancelResponseErrorCode", RpcAccountMigrateCancelResponseErrorCode_name, RpcAccountMigrateCancelResponseErrorCode_value) proto.RegisterEnum("anytype.RpcAccountSelectResponseErrorCode", RpcAccountSelectResponseErrorCode_name, RpcAccountSelectResponseErrorCode_value) proto.RegisterEnum("anytype.RpcAccountStopResponseErrorCode", RpcAccountStopResponseErrorCode_name, RpcAccountStopResponseErrorCode_value) proto.RegisterEnum("anytype.RpcAccountMoveResponseErrorCode", RpcAccountMoveResponseErrorCode_name, RpcAccountMoveResponseErrorCode_value) @@ -69905,6 +70110,10 @@ func init() { proto.RegisterType((*RpcAccountMigrateRequest)(nil), "anytype.Rpc.Account.Migrate.Request") proto.RegisterType((*RpcAccountMigrateResponse)(nil), "anytype.Rpc.Account.Migrate.Response") proto.RegisterType((*RpcAccountMigrateResponseError)(nil), "anytype.Rpc.Account.Migrate.Response.Error") + proto.RegisterType((*RpcAccountMigrateCancel)(nil), "anytype.Rpc.Account.MigrateCancel") + proto.RegisterType((*RpcAccountMigrateCancelRequest)(nil), "anytype.Rpc.Account.MigrateCancel.Request") + proto.RegisterType((*RpcAccountMigrateCancelResponse)(nil), "anytype.Rpc.Account.MigrateCancel.Response") + proto.RegisterType((*RpcAccountMigrateCancelResponseError)(nil), "anytype.Rpc.Account.MigrateCancel.Response.Error") proto.RegisterType((*RpcAccountSelect)(nil), "anytype.Rpc.Account.Select") proto.RegisterType((*RpcAccountSelectRequest)(nil), "anytype.Rpc.Account.Select.Request") proto.RegisterType((*RpcAccountSelectResponse)(nil), "anytype.Rpc.Account.Select.Response") @@ -70997,15 +71206,15 @@ func init() { func init() { proto.RegisterFile("pb/protos/commands.proto", fileDescriptor_8261c968b2e6f45c) } var fileDescriptor_8261c968b2e6f45c = []byte{ - // 19277 bytes of a gzipped FileDescriptorProto + // 19312 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x7f, 0x9c, 0x23, 0x47, 0x75, 0x2f, 0xba, 0xea, 0x96, 0x34, 0x33, 0x67, 0x7e, 0xac, 0xb6, 0xbd, 0xbb, 0x5e, 0xb7, 0xcd, - 0xda, 0x59, 0x1b, 0xe3, 0x18, 0x33, 0x36, 0x86, 0x00, 0x36, 0x36, 0xb6, 0x46, 0xa3, 0x99, 0x91, - 0x3d, 0x23, 0x0d, 0x2d, 0xcd, 0x2e, 0x4e, 0x6e, 0x9e, 0x6e, 0xaf, 0x54, 0x33, 0xd3, 0x5e, 0x4d, - 0xb7, 0xe8, 0xee, 0x99, 0xf5, 0xf2, 0x3e, 0xf7, 0xdd, 0x10, 0x62, 0x7e, 0x86, 0x10, 0x42, 0x48, - 0xc2, 0x6f, 0x30, 0x31, 0x5c, 0x48, 0x80, 0xf0, 0xfb, 0x42, 0x12, 0x20, 0xfc, 0x08, 0x84, 0x24, - 0x84, 0x40, 0x08, 0x84, 0x84, 0x17, 0x08, 0x84, 0x90, 0xf7, 0x09, 0x8f, 0x97, 0xbc, 0x1b, 0xb8, - 0x24, 0xe1, 0xe5, 0x7d, 0xba, 0xaa, 0xba, 0xbb, 0x4a, 0xa3, 0x6e, 0x55, 0x6b, 0xd4, 0x1a, 0x13, + 0xda, 0x59, 0x1b, 0xe3, 0x18, 0x33, 0x36, 0x86, 0x10, 0x6c, 0x6c, 0x6c, 0x8d, 0x46, 0x33, 0x23, + 0x7b, 0x46, 0x1a, 0x5a, 0x9a, 0x5d, 0x9c, 0xdc, 0x3c, 0xdd, 0x5e, 0xa9, 0x66, 0xa6, 0xbd, 0x9a, + 0x6e, 0xd1, 0xdd, 0x33, 0xeb, 0xe5, 0x7d, 0xee, 0xbb, 0x21, 0xc4, 0xfc, 0x0c, 0x21, 0x84, 0x90, + 0x84, 0xdf, 0x60, 0x62, 0xb8, 0x90, 0x00, 0xe1, 0xf7, 0x85, 0x24, 0x40, 0xf8, 0x11, 0x08, 0x49, + 0x08, 0x81, 0x10, 0x08, 0x09, 0x2f, 0x10, 0x08, 0x21, 0xef, 0x13, 0x1e, 0x2f, 0x79, 0x37, 0x70, + 0x49, 0xc2, 0xe3, 0x7d, 0xba, 0xaa, 0xba, 0xbb, 0x4a, 0xa3, 0x6e, 0x55, 0x6b, 0xd4, 0x1a, 0x13, 0xee, 0x7f, 0xdd, 0xd5, 0xd5, 0xa7, 0x4e, 0x9d, 0xef, 0xa9, 0xaa, 0x53, 0x55, 0xa7, 0x4e, 0xc1, 0xa9, 0xee, 0xf9, 0x9b, 0xbb, 0xb6, 0xe5, 0x5a, 0xce, 0xcd, 0x2d, 0x6b, 0x67, 0x47, 0x37, 0xdb, 0xce, 0x3c, 0x7e, 0x57, 0x26, 0x74, 0xf3, 0x92, 0x7b, 0xa9, 0x8b, 0xd4, 0xeb, 0xba, 0x17, 0xb6, @@ -71013,1196 +71222,1198 @@ var fileDescriptor_8261c968b2e6f45c = []byte{ 0xa1, 0xd9, 0xd5, 0x1b, 0xa2, 0x72, 0x75, 0xac, 0x96, 0xde, 0x71, 0x5c, 0xcb, 0x46, 0x34, 0xe7, 0xc9, 0xb0, 0x48, 0xb4, 0x87, 0x4c, 0xd7, 0xa7, 0x70, 0xd5, 0x96, 0x65, 0x6d, 0x75, 0x10, 0xf9, 0x76, 0x7e, 0x77, 0xf3, 0x66, 0xc7, 0xb5, 0x77, 0x5b, 0x2e, 0xfd, 0x7a, 0x4d, 0xef, 0xd7, 0x36, - 0x72, 0x5a, 0xb6, 0xd1, 0x75, 0x2d, 0x9b, 0xe4, 0x38, 0xf3, 0x8d, 0x1f, 0x4c, 0x80, 0xac, 0x75, - 0x5b, 0xea, 0x77, 0x27, 0x40, 0x2e, 0x76, 0xbb, 0xea, 0x27, 0x24, 0x80, 0x65, 0xe4, 0x9e, 0x45, - 0xb6, 0x63, 0x58, 0xa6, 0x7a, 0x14, 0x26, 0x34, 0xf4, 0xcc, 0x5d, 0xe4, 0xb8, 0xb7, 0x67, 0x9f, - 0xff, 0x4d, 0x39, 0xa3, 0x3e, 0x2c, 0xc1, 0xa4, 0x86, 0x9c, 0xae, 0x65, 0x3a, 0x48, 0xb9, 0x1b, - 0x72, 0xc8, 0xb6, 0x2d, 0xfb, 0x54, 0xe6, 0x9a, 0xcc, 0x0d, 0xd3, 0xb7, 0xde, 0x38, 0x4f, 0xab, - 0x3f, 0xaf, 0x75, 0x5b, 0xf3, 0xc5, 0x6e, 0x77, 0x3e, 0xa4, 0x34, 0xef, 0xff, 0x34, 0x5f, 0xf6, - 0xfe, 0xd0, 0xc8, 0x8f, 0xca, 0x29, 0x98, 0xd8, 0x23, 0x19, 0x4e, 0x49, 0xd7, 0x64, 0x6e, 0x98, - 0xd2, 0xfc, 0x57, 0xef, 0x4b, 0x1b, 0xb9, 0xba, 0xd1, 0x71, 0x4e, 0xc9, 0xe4, 0x0b, 0x7d, 0x55, - 0x1f, 0xca, 0x40, 0x0e, 0x13, 0x51, 0x4a, 0x90, 0x6d, 0x59, 0x6d, 0x84, 0x8b, 0x9f, 0xbb, 0xf5, - 0x66, 0xf1, 0xe2, 0xe7, 0x4b, 0x56, 0x1b, 0x69, 0xf8, 0x67, 0xe5, 0x1a, 0x98, 0xf6, 0xc5, 0x12, - 0xb2, 0xc1, 0x26, 0x9d, 0xb9, 0x15, 0xb2, 0x5e, 0x7e, 0x65, 0x12, 0xb2, 0xd5, 0x8d, 0xd5, 0xd5, - 0xc2, 0x11, 0xe5, 0x18, 0xcc, 0x6e, 0x54, 0xef, 0xad, 0xd6, 0xce, 0x55, 0x9b, 0x65, 0x4d, 0xab, - 0x69, 0x85, 0x8c, 0x32, 0x0b, 0x53, 0x0b, 0xc5, 0xc5, 0x66, 0xa5, 0xba, 0xbe, 0xd1, 0x28, 0x48, - 0xea, 0x6b, 0x65, 0x98, 0xab, 0x23, 0x77, 0x11, 0xed, 0x19, 0x2d, 0x54, 0x77, 0x75, 0x17, 0xa9, - 0x2f, 0xc9, 0x04, 0xc2, 0x54, 0x36, 0xbc, 0x42, 0x83, 0x4f, 0xb4, 0x02, 0x4f, 0xd8, 0x57, 0x01, - 0x9e, 0xc2, 0x3c, 0xfd, 0x7b, 0x9e, 0x49, 0xd3, 0x58, 0x3a, 0x67, 0x1e, 0x07, 0xd3, 0xcc, 0x37, - 0x65, 0x0e, 0x60, 0xa1, 0x58, 0xba, 0x77, 0x59, 0xab, 0x6d, 0x54, 0x17, 0x0b, 0x47, 0xbc, 0xf7, - 0xa5, 0x9a, 0x56, 0xa6, 0xef, 0x19, 0xf5, 0xfb, 0x19, 0x06, 0xcc, 0x45, 0x1e, 0xcc, 0xf9, 0xc1, - 0xcc, 0xf4, 0x01, 0x54, 0x7d, 0x53, 0x00, 0xce, 0x32, 0x07, 0xce, 0x13, 0x92, 0x91, 0x4b, 0x1f, - 0xa0, 0x07, 0x25, 0x98, 0xac, 0x6f, 0xef, 0xba, 0x6d, 0xeb, 0xa2, 0xa9, 0x4e, 0x05, 0xc8, 0xa8, - 0xdf, 0x66, 0x65, 0xf2, 0x34, 0x5e, 0x26, 0x37, 0xec, 0xaf, 0x04, 0xa5, 0x10, 0x21, 0x8d, 0xd7, - 0x07, 0xd2, 0x28, 0x72, 0xd2, 0x78, 0x9c, 0x28, 0xa1, 0xf4, 0xe5, 0xf0, 0xca, 0xa7, 0x40, 0xae, - 0xde, 0xd5, 0x5b, 0x48, 0xfd, 0x23, 0x19, 0x66, 0x56, 0x91, 0xbe, 0x87, 0x8a, 0xdd, 0xae, 0x6d, - 0xed, 0x21, 0xb5, 0x14, 0xea, 0xeb, 0x29, 0x98, 0x70, 0xbc, 0x4c, 0x95, 0x36, 0xae, 0xc1, 0x94, - 0xe6, 0xbf, 0x2a, 0xa7, 0x01, 0x8c, 0x36, 0x32, 0x5d, 0xc3, 0x35, 0x90, 0x73, 0x4a, 0xba, 0x46, - 0xbe, 0x61, 0x4a, 0x63, 0x52, 0xd4, 0xef, 0x4a, 0xa2, 0x3a, 0x86, 0xb9, 0x98, 0x67, 0x39, 0x88, - 0x90, 0xea, 0x1b, 0x25, 0x11, 0x1d, 0x1b, 0x48, 0x2e, 0x99, 0x6c, 0xdf, 0x9e, 0x49, 0x2e, 0x5c, - 0x2f, 0x47, 0xb5, 0xd6, 0xac, 0x6f, 0x94, 0x56, 0x9a, 0xf5, 0xf5, 0x62, 0xa9, 0x5c, 0x40, 0xca, - 0x71, 0x28, 0xe0, 0xc7, 0x66, 0xa5, 0xde, 0x5c, 0x2c, 0xaf, 0x96, 0x1b, 0xe5, 0xc5, 0xc2, 0xa6, - 0xa2, 0xc0, 0x9c, 0x56, 0x7e, 0xfa, 0x46, 0xb9, 0xde, 0x68, 0x2e, 0x15, 0x2b, 0xab, 0xe5, 0xc5, - 0xc2, 0x96, 0xf7, 0xf3, 0x6a, 0x65, 0xad, 0xd2, 0x68, 0x6a, 0xe5, 0x62, 0x69, 0xa5, 0xbc, 0x58, - 0xd8, 0x56, 0x2e, 0x87, 0xcb, 0xaa, 0xb5, 0x66, 0x71, 0x7d, 0x5d, 0xab, 0x9d, 0x2d, 0x37, 0xe9, - 0x1f, 0xf5, 0x82, 0x41, 0x0a, 0x6a, 0x34, 0xeb, 0x2b, 0x45, 0xad, 0x5c, 0x5c, 0x58, 0x2d, 0x17, - 0xee, 0x57, 0x9f, 0x23, 0xc3, 0xec, 0x9a, 0x7e, 0x01, 0xd5, 0xb7, 0x75, 0x1b, 0xe9, 0xe7, 0x3b, - 0x48, 0xbd, 0x56, 0x00, 0x4f, 0xf5, 0x8f, 0x58, 0xbc, 0xca, 0x3c, 0x5e, 0x37, 0xf7, 0x11, 0x30, - 0x57, 0x44, 0x04, 0x60, 0xff, 0x33, 0x68, 0x06, 0x2b, 0x1c, 0x60, 0x4f, 0x4c, 0x48, 0x2f, 0x19, - 0x62, 0x3f, 0xfb, 0x08, 0x40, 0x4c, 0xfd, 0x8a, 0x0c, 0x73, 0x15, 0x73, 0xcf, 0x70, 0xd1, 0x32, - 0x32, 0x91, 0xed, 0x8d, 0x03, 0x42, 0x30, 0x3c, 0x2c, 0x33, 0x30, 0x2c, 0xf1, 0x30, 0xdc, 0xd2, - 0x47, 0x6c, 0x7c, 0x19, 0x11, 0xa3, 0xed, 0x55, 0x30, 0x65, 0xe0, 0x7c, 0x25, 0xa3, 0x4d, 0x25, - 0x16, 0x26, 0x28, 0xd7, 0xc1, 0x2c, 0x79, 0x59, 0x32, 0x3a, 0xe8, 0x5e, 0x74, 0x89, 0x8e, 0xbb, - 0x7c, 0xa2, 0xfa, 0xf3, 0x41, 0xe3, 0xab, 0x70, 0x58, 0xfe, 0x44, 0x52, 0xa6, 0x92, 0x81, 0xf9, - 0xf2, 0x47, 0x42, 0xf3, 0xdb, 0xd7, 0xca, 0x0c, 0xf5, 0x07, 0x12, 0x4c, 0xd7, 0x5d, 0xab, 0xeb, - 0xa9, 0xac, 0x61, 0x6e, 0x89, 0x81, 0xfb, 0x29, 0xb6, 0x8d, 0x95, 0x78, 0x70, 0x1f, 0xd7, 0x47, - 0x8e, 0x4c, 0x01, 0x11, 0x2d, 0xec, 0xbb, 0x41, 0x0b, 0x5b, 0xe2, 0x50, 0xb9, 0x35, 0x11, 0xb5, - 0x1f, 0xc2, 0xf6, 0xf5, 0x72, 0x19, 0x0a, 0xbe, 0x9a, 0xb9, 0xa5, 0x5d, 0xdb, 0x46, 0xa6, 0x2b, - 0x06, 0xc2, 0x5f, 0xb2, 0x20, 0xac, 0xf0, 0x20, 0xdc, 0x1a, 0xa3, 0xcc, 0x7e, 0x29, 0x29, 0xb6, - 0xb1, 0x8f, 0x04, 0x68, 0xde, 0xcb, 0xa1, 0xf9, 0xe4, 0xe4, 0x6c, 0x25, 0x83, 0x74, 0x65, 0x08, - 0x44, 0x8f, 0x43, 0xc1, 0x1b, 0x93, 0x4a, 0x8d, 0xca, 0xd9, 0x72, 0xb3, 0x52, 0x3d, 0x5b, 0x69, - 0x94, 0x0b, 0x48, 0x7d, 0x99, 0x0c, 0x33, 0x84, 0x35, 0x0d, 0xed, 0x59, 0x17, 0x04, 0x7b, 0xbd, - 0xaf, 0x24, 0x34, 0x16, 0xd8, 0x12, 0x22, 0x5a, 0xc6, 0x0b, 0x13, 0x18, 0x0b, 0x31, 0xe4, 0x1e, - 0x49, 0xbd, 0xd5, 0xbe, 0x66, 0xb0, 0xd5, 0xa7, 0xb5, 0xf4, 0xed, 0xad, 0x5e, 0x9e, 0x05, 0x20, - 0x95, 0x3c, 0x6b, 0xa0, 0x8b, 0xea, 0x5a, 0x88, 0x09, 0xa7, 0xb6, 0x99, 0x81, 0x6a, 0x2b, 0xf5, - 0x53, 0xdb, 0xf7, 0xb3, 0x63, 0xd6, 0x02, 0x8f, 0xde, 0x4d, 0x91, 0xe2, 0xf6, 0x38, 0x89, 0x9e, - 0x1d, 0xfa, 0x8a, 0x22, 0xf1, 0x56, 0xe7, 0x55, 0x30, 0x85, 0x1f, 0xab, 0xfa, 0x0e, 0xa2, 0x6d, - 0x28, 0x4c, 0x50, 0xce, 0xc0, 0x0c, 0xc9, 0xd8, 0xb2, 0x4c, 0xaf, 0x3e, 0x59, 0x9c, 0x81, 0x4b, - 0xf3, 0x40, 0x6c, 0xd9, 0x48, 0x77, 0x2d, 0x1b, 0xd3, 0xc8, 0x11, 0x10, 0x99, 0x24, 0xf5, 0x5b, - 0x41, 0x2b, 0x2c, 0x73, 0x9a, 0xf3, 0xf8, 0x24, 0x55, 0x49, 0xa6, 0x37, 0x7b, 0xc3, 0xb5, 0x3f, - 0xd2, 0xea, 0x9a, 0x1e, 0xda, 0x4b, 0x78, 0x6a, 0x87, 0x94, 0x93, 0xa0, 0xd0, 0x54, 0x2f, 0x6f, - 0xa9, 0x56, 0x6d, 0x94, 0xab, 0x8d, 0xc2, 0x66, 0x5f, 0x8d, 0xda, 0x52, 0xdf, 0x98, 0x85, 0xec, - 0x3d, 0x96, 0x61, 0xaa, 0x0f, 0x66, 0x38, 0x95, 0x30, 0x91, 0x7b, 0xd1, 0xb2, 0x2f, 0x04, 0x0d, - 0x35, 0x4c, 0x88, 0xc7, 0x26, 0x54, 0x25, 0x79, 0xa0, 0x2a, 0x65, 0xfb, 0xa9, 0xd2, 0x2f, 0xb1, - 0xaa, 0x74, 0x07, 0xaf, 0x4a, 0xd7, 0xf7, 0x91, 0xbf, 0xc7, 0x7c, 0x44, 0x07, 0xf0, 0xc9, 0xa0, - 0x03, 0xb8, 0x8b, 0x83, 0xf1, 0xb1, 0x62, 0x64, 0x92, 0x01, 0xf8, 0xe5, 0x54, 0x1b, 0x7e, 0x3f, - 0xa8, 0xb7, 0x22, 0xa0, 0xde, 0xee, 0xd3, 0x27, 0x18, 0xfb, 0xbb, 0x8e, 0xfb, 0xf7, 0x77, 0x13, - 0x17, 0x94, 0x13, 0x70, 0x6c, 0xb1, 0xb2, 0xb4, 0x54, 0xd6, 0xca, 0xd5, 0x46, 0xb3, 0x5a, 0x6e, - 0x9c, 0xab, 0x69, 0xf7, 0x16, 0x3a, 0xea, 0x43, 0x32, 0x80, 0x27, 0xa1, 0x92, 0x6e, 0xb6, 0x50, - 0x47, 0xac, 0x47, 0xff, 0xbf, 0xa5, 0x64, 0x7d, 0x42, 0x48, 0x3f, 0x02, 0xce, 0xd7, 0x48, 0xe2, - 0xad, 0x32, 0x92, 0x58, 0x32, 0x50, 0xdf, 0xfa, 0x48, 0xb0, 0x3d, 0x2f, 0x83, 0xa3, 0x3e, 0x3d, - 0x9a, 0xbd, 0xff, 0xb4, 0xef, 0x1d, 0x59, 0x98, 0xa3, 0xb0, 0xf8, 0xf3, 0xf8, 0xe7, 0x67, 0x44, - 0x26, 0xf2, 0x2a, 0x4c, 0xd2, 0x69, 0xbb, 0xdf, 0xbd, 0x07, 0xef, 0xca, 0x32, 0x4c, 0x77, 0x91, - 0xbd, 0x63, 0x38, 0x8e, 0x61, 0x99, 0x64, 0x41, 0x6e, 0xee, 0xd6, 0x47, 0x07, 0x12, 0xc7, 0x6b, - 0x97, 0xf3, 0xeb, 0xba, 0xed, 0x1a, 0x2d, 0xa3, 0xab, 0x9b, 0xee, 0x7a, 0x98, 0x59, 0x63, 0xff, - 0x54, 0x5f, 0x9a, 0x70, 0x5a, 0xc3, 0xd7, 0x24, 0x42, 0x25, 0x7e, 0x27, 0xc1, 0x94, 0x24, 0x96, - 0x60, 0x32, 0xb5, 0xf8, 0x44, 0xaa, 0x6a, 0xd1, 0x07, 0xef, 0x2d, 0xe5, 0x0a, 0x38, 0x51, 0xa9, - 0x96, 0x6a, 0x9a, 0x56, 0x2e, 0x35, 0x9a, 0xeb, 0x65, 0x6d, 0xad, 0x52, 0xaf, 0x57, 0x6a, 0xd5, - 0xfa, 0x41, 0x5a, 0xbb, 0xfa, 0x69, 0x39, 0xd0, 0x98, 0x45, 0xd4, 0xea, 0x18, 0x26, 0x52, 0xef, - 0x3a, 0xa0, 0xc2, 0xf0, 0xab, 0x3e, 0xe2, 0x38, 0xd3, 0xf2, 0x23, 0x70, 0x7e, 0x43, 0x72, 0x9c, - 0xfb, 0x13, 0xfc, 0x0f, 0xdc, 0xfc, 0xbf, 0x22, 0xc3, 0x31, 0xa6, 0x21, 0x6a, 0x68, 0x67, 0x64, - 0x2b, 0x79, 0x3f, 0xcb, 0xb6, 0xdd, 0x0a, 0x8f, 0x69, 0x3f, 0x6b, 0x7a, 0x1f, 0x1b, 0x11, 0xb0, - 0xbe, 0x35, 0x80, 0x75, 0x95, 0x83, 0xf5, 0x29, 0x43, 0xd0, 0x4c, 0x86, 0xec, 0x6f, 0xa5, 0x8a, - 0xec, 0x15, 0x70, 0x62, 0xbd, 0xa8, 0x35, 0x2a, 0xa5, 0xca, 0x7a, 0xd1, 0x1b, 0x47, 0x99, 0x21, - 0x3b, 0xc2, 0x5c, 0xe7, 0x41, 0xef, 0x8b, 0xef, 0x87, 0xb3, 0x70, 0x55, 0xff, 0x8e, 0xb6, 0xb4, - 0xad, 0x9b, 0x5b, 0x48, 0x35, 0x44, 0xa0, 0x5e, 0x84, 0x89, 0x16, 0xce, 0x4e, 0x70, 0x66, 0xb7, - 0x6e, 0x62, 0xfa, 0x72, 0x52, 0x82, 0xe6, 0xff, 0xaa, 0xbe, 0x9b, 0x55, 0x88, 0x06, 0xaf, 0x10, - 0x4f, 0x8b, 0x07, 0x6f, 0x1f, 0xdf, 0x11, 0xba, 0xf1, 0xd9, 0x40, 0x37, 0xce, 0x71, 0xba, 0x51, - 0x3a, 0x18, 0xf9, 0x64, 0x6a, 0xf2, 0x87, 0x8f, 0x84, 0x0e, 0x20, 0x52, 0x9b, 0x8c, 0xe8, 0x51, - 0xa1, 0x6f, 0x77, 0xff, 0x3a, 0x19, 0xf2, 0x8b, 0xa8, 0x83, 0x44, 0x57, 0x22, 0xbf, 0x23, 0x89, - 0x6e, 0x88, 0x10, 0x18, 0x08, 0xed, 0xe8, 0xd5, 0x11, 0xd7, 0xd8, 0x41, 0x8e, 0xab, 0xef, 0x74, - 0xb1, 0xa8, 0x65, 0x2d, 0x4c, 0x50, 0x7f, 0x4e, 0x12, 0xd9, 0x2e, 0x89, 0x29, 0xe6, 0x3f, 0xc6, - 0x9a, 0xe2, 0xe7, 0x25, 0x98, 0xac, 0x23, 0xb7, 0x66, 0xb7, 0x91, 0xad, 0xd6, 0x43, 0x8c, 0xae, - 0x81, 0x69, 0x0c, 0x8a, 0x37, 0xcd, 0x0c, 0x70, 0x62, 0x93, 0x94, 0xeb, 0x61, 0x2e, 0x78, 0xc5, - 0xbf, 0xd3, 0x6e, 0xbc, 0x27, 0x55, 0xfd, 0xc7, 0x8c, 0xe8, 0x2e, 0x2e, 0x5d, 0x32, 0xa4, 0xdc, - 0x44, 0xb4, 0x52, 0xb1, 0x1d, 0xd9, 0x58, 0x52, 0xe9, 0x6f, 0x74, 0xbd, 0x53, 0x02, 0xd8, 0x30, - 0x1d, 0x5f, 0xae, 0x8f, 0x4d, 0x20, 0x57, 0xf5, 0x9f, 0x33, 0xc9, 0x66, 0x31, 0x61, 0x39, 0x11, - 0x12, 0xfb, 0xf5, 0x04, 0x6b, 0x0b, 0x91, 0xc4, 0xd2, 0x97, 0xd9, 0xd7, 0xe7, 0x20, 0x7f, 0x4e, - 0xef, 0x74, 0x90, 0xab, 0x7e, 0x43, 0x82, 0x7c, 0xc9, 0x46, 0xba, 0x8b, 0x58, 0xd1, 0xa9, 0x30, - 0x69, 0x5b, 0x96, 0xbb, 0xae, 0xbb, 0xdb, 0x54, 0x6e, 0xc1, 0x3b, 0x75, 0x18, 0xf8, 0x4d, 0xb6, - 0xfb, 0xb8, 0x8b, 0x17, 0xdd, 0x8f, 0x73, 0xb5, 0x25, 0x05, 0xcd, 0x93, 0x42, 0x22, 0xfa, 0x0f, - 0x15, 0x26, 0x77, 0x4c, 0xb4, 0x63, 0x99, 0x46, 0xcb, 0xb7, 0x39, 0xfd, 0x77, 0xf5, 0xa3, 0x81, - 0x4c, 0x17, 0x38, 0x99, 0xce, 0x0b, 0x97, 0x92, 0x4c, 0xa0, 0xf5, 0x21, 0x7a, 0x8f, 0xab, 0xe1, - 0x4a, 0xd2, 0x19, 0x34, 0x1b, 0xb5, 0x66, 0x49, 0x2b, 0x17, 0x1b, 0xe5, 0xe6, 0x6a, 0xad, 0x54, - 0x5c, 0x6d, 0x6a, 0xe5, 0xf5, 0x5a, 0x01, 0xa9, 0x7f, 0x27, 0x79, 0xc2, 0x6d, 0x59, 0x7b, 0xc8, - 0x56, 0x97, 0x85, 0xe4, 0x1c, 0x27, 0x13, 0x8a, 0xc1, 0x2f, 0x09, 0x3b, 0x6d, 0x50, 0xe9, 0x50, - 0x0e, 0x22, 0x94, 0xf7, 0x63, 0x42, 0xcd, 0x3d, 0x96, 0xd4, 0x23, 0x40, 0xd2, 0xff, 0x43, 0x82, - 0x89, 0x92, 0x65, 0xee, 0x21, 0xdb, 0x65, 0xe7, 0x3b, 0xac, 0x34, 0x33, 0xbc, 0x34, 0xbd, 0x41, - 0x12, 0x99, 0xae, 0x6d, 0x75, 0xfd, 0x09, 0x8f, 0xff, 0xaa, 0xbe, 0x39, 0xa9, 0x84, 0x69, 0xc9, - 0xd1, 0x0b, 0x9f, 0xfd, 0x0b, 0xe2, 0xd8, 0x93, 0x7b, 0x1a, 0xc0, 0x43, 0x49, 0x70, 0xe9, 0xcf, - 0x40, 0xfa, 0x5d, 0xca, 0x57, 0x65, 0x98, 0x25, 0x8d, 0xaf, 0x8e, 0xb0, 0x85, 0xa6, 0xd6, 0xd8, - 0x25, 0xc7, 0x1e, 0xe1, 0xaf, 0x1c, 0xe1, 0xc4, 0x9f, 0xd7, 0xbb, 0xdd, 0x60, 0xf9, 0x79, 0xe5, - 0x88, 0x46, 0xdf, 0x89, 0x9a, 0x2f, 0xe4, 0x21, 0xab, 0xef, 0xba, 0xdb, 0xea, 0x0f, 0x84, 0x27, - 0x9f, 0x5c, 0x67, 0x40, 0xf9, 0x89, 0x80, 0xe4, 0x38, 0xe4, 0x5c, 0xeb, 0x02, 0xf2, 0xe5, 0x40, - 0x5e, 0x3c, 0x38, 0xf4, 0x6e, 0xb7, 0x81, 0x3f, 0x50, 0x38, 0xfc, 0x77, 0xcf, 0xd6, 0xd1, 0x5b, - 0x2d, 0x6b, 0xd7, 0x74, 0x2b, 0xfe, 0x12, 0x74, 0x98, 0xa0, 0x7e, 0x29, 0x23, 0x32, 0x99, 0x15, - 0x60, 0x30, 0x19, 0x64, 0xe7, 0x87, 0x68, 0x4a, 0xf3, 0x70, 0x63, 0x71, 0x7d, 0xbd, 0xd9, 0xa8, - 0xdd, 0x5b, 0xae, 0x86, 0x86, 0x67, 0xb3, 0x52, 0x6d, 0x36, 0x56, 0xca, 0xcd, 0xd2, 0x86, 0x86, - 0xd7, 0x09, 0x8b, 0xa5, 0x52, 0x6d, 0xa3, 0xda, 0x28, 0x20, 0xf5, 0x6d, 0x12, 0xcc, 0x94, 0x3a, - 0x96, 0x13, 0x20, 0x7c, 0x75, 0x88, 0x70, 0x20, 0xc6, 0x0c, 0x23, 0x46, 0xf5, 0x5f, 0x33, 0xa2, - 0x4e, 0x07, 0xbe, 0x40, 0x18, 0xf2, 0x11, 0xbd, 0xd4, 0x9b, 0x85, 0x9c, 0x0e, 0x06, 0xd3, 0x4b, - 0xbf, 0x49, 0xfc, 0xc1, 0x9d, 0x30, 0x51, 0x24, 0x8a, 0xa1, 0xfe, 0x75, 0x06, 0xf2, 0x25, 0xcb, - 0xdc, 0x34, 0xb6, 0x3c, 0x63, 0x0e, 0x99, 0xfa, 0xf9, 0x0e, 0x5a, 0xd4, 0x5d, 0x7d, 0xcf, 0x40, - 0x17, 0x71, 0x05, 0x26, 0xb5, 0x9e, 0x54, 0x8f, 0x29, 0x9a, 0x82, 0xce, 0xef, 0x6e, 0x61, 0xa6, - 0x26, 0x35, 0x36, 0x49, 0x79, 0x0a, 0x5c, 0x4e, 0x5e, 0xd7, 0x6d, 0x64, 0xa3, 0x0e, 0xd2, 0x1d, - 0xe4, 0x4d, 0x8b, 0x4c, 0xd4, 0xc1, 0x4a, 0x3b, 0xa9, 0x45, 0x7d, 0x56, 0xce, 0xc0, 0x0c, 0xf9, - 0x84, 0x4d, 0x11, 0x07, 0xab, 0xf1, 0xa4, 0xc6, 0xa5, 0x29, 0x8f, 0x83, 0x1c, 0x7a, 0xc0, 0xb5, - 0xf5, 0x53, 0x6d, 0x8c, 0xd7, 0xe5, 0xf3, 0xc4, 0xeb, 0x70, 0xde, 0xf7, 0x3a, 0x9c, 0xaf, 0x63, - 0x9f, 0x44, 0x8d, 0xe4, 0x52, 0x5f, 0x3d, 0x19, 0x18, 0x12, 0xff, 0x2e, 0x85, 0x8a, 0xa1, 0x40, - 0xd6, 0xd4, 0x77, 0x10, 0xd5, 0x0b, 0xfc, 0xac, 0xdc, 0x08, 0x47, 0xf5, 0x3d, 0xdd, 0xd5, 0xed, - 0x55, 0xab, 0xa5, 0x77, 0xf0, 0xe0, 0xe7, 0xb7, 0xfc, 0xde, 0x0f, 0x78, 0x47, 0xc8, 0xb5, 0x6c, - 0x84, 0x73, 0xf9, 0x3b, 0x42, 0x7e, 0x82, 0x47, 0xdd, 0x68, 0x59, 0x26, 0xe6, 0x5f, 0xd6, 0xf0, - 0xb3, 0x27, 0x95, 0xb6, 0xe1, 0x78, 0x15, 0xc1, 0x54, 0xaa, 0x64, 0x6b, 0xa3, 0x7e, 0xc9, 0x6c, - 0xe1, 0xdd, 0xa0, 0x49, 0x2d, 0xea, 0xb3, 0xb2, 0x00, 0xd3, 0x74, 0x23, 0x64, 0xcd, 0xd3, 0xab, - 0x3c, 0xd6, 0xab, 0x6b, 0x78, 0x9f, 0x2e, 0x82, 0xe7, 0x7c, 0x35, 0xcc, 0xa7, 0xb1, 0x3f, 0x29, - 0x77, 0xc3, 0x95, 0xf4, 0xb5, 0xb4, 0xeb, 0xb8, 0xd6, 0x0e, 0x01, 0x7d, 0xc9, 0xe8, 0x90, 0x1a, - 0x4c, 0xe0, 0x1a, 0xc4, 0x65, 0x51, 0x6e, 0x85, 0xe3, 0x5d, 0x1b, 0x6d, 0x22, 0xfb, 0x3e, 0x7d, - 0x67, 0xf7, 0x81, 0x86, 0xad, 0x9b, 0x4e, 0xd7, 0xb2, 0xdd, 0x53, 0x93, 0x98, 0xf9, 0xbe, 0xdf, - 0x68, 0x47, 0x39, 0x09, 0x79, 0x22, 0x3e, 0xf5, 0x25, 0x39, 0x61, 0x77, 0x4e, 0x5a, 0xa1, 0x58, - 0xf3, 0xec, 0x16, 0x98, 0xa0, 0x3d, 0x1c, 0x06, 0x6a, 0xfa, 0xd6, 0x93, 0x3d, 0xeb, 0x0a, 0x94, - 0x8a, 0xe6, 0x67, 0x53, 0x9e, 0x00, 0xf9, 0x16, 0xae, 0x16, 0xc6, 0x6c, 0xfa, 0xd6, 0x2b, 0xfb, - 0x17, 0x8a, 0xb3, 0x68, 0x34, 0xab, 0xfa, 0x17, 0xb2, 0x90, 0x07, 0x68, 0x1c, 0xc7, 0xc9, 0x5a, - 0xf5, 0xb7, 0xa4, 0x21, 0xba, 0xcd, 0x9b, 0xe0, 0x06, 0xda, 0x27, 0x52, 0xfb, 0x63, 0xb1, 0xb9, - 0xb0, 0xe1, 0x4f, 0x06, 0x3d, 0xab, 0xa4, 0xde, 0x28, 0x6a, 0xde, 0x4c, 0x7e, 0xd1, 0x9b, 0x44, - 0xde, 0x08, 0xd7, 0x0f, 0xc8, 0x5d, 0x6e, 0x34, 0xab, 0xc5, 0xb5, 0x72, 0x61, 0x93, 0xb7, 0x6d, - 0xea, 0x8d, 0xda, 0x7a, 0x53, 0xdb, 0xa8, 0x56, 0x2b, 0xd5, 0x65, 0x42, 0xcc, 0x33, 0x09, 0x4f, - 0x86, 0x19, 0xce, 0x69, 0x95, 0x46, 0xb9, 0x59, 0xaa, 0x55, 0x97, 0x2a, 0xcb, 0x05, 0x63, 0x90, - 0x61, 0x74, 0xbf, 0x72, 0x0d, 0x5c, 0xc5, 0x71, 0x52, 0xa9, 0x55, 0xbd, 0x99, 0x6d, 0xa9, 0x58, - 0x2d, 0x95, 0xbd, 0x69, 0xec, 0x05, 0x45, 0x85, 0x13, 0x84, 0x5c, 0x73, 0xa9, 0xb2, 0xca, 0x6e, - 0x46, 0x7d, 0x2a, 0xa3, 0x9c, 0x82, 0xcb, 0xd8, 0x6f, 0x95, 0xea, 0xd9, 0xe2, 0x6a, 0x65, 0xb1, - 0xf0, 0x07, 0x19, 0xe5, 0x3a, 0xb8, 0x9a, 0xfb, 0x8b, 0xec, 0x2b, 0x35, 0x2b, 0x8b, 0xcd, 0xb5, - 0x4a, 0x7d, 0xad, 0xd8, 0x28, 0xad, 0x14, 0x3e, 0x8d, 0xe7, 0x0b, 0x81, 0x01, 0xcc, 0xb8, 0x65, - 0xbe, 0x9c, 0x1d, 0xd3, 0x8b, 0xbc, 0xa2, 0x3e, 0xb6, 0x2f, 0xec, 0xf1, 0x36, 0xec, 0x27, 0x82, - 0xd1, 0x61, 0x91, 0x53, 0xa1, 0x5b, 0x12, 0xd0, 0x4a, 0xa6, 0x43, 0x8d, 0x21, 0x54, 0xe8, 0x1a, - 0xb8, 0xaa, 0x5a, 0x26, 0x48, 0x69, 0xe5, 0x52, 0xed, 0x6c, 0x59, 0x6b, 0x9e, 0x2b, 0xae, 0xae, - 0x96, 0x1b, 0xcd, 0xa5, 0x8a, 0x56, 0x6f, 0x14, 0x36, 0xd5, 0x7f, 0x96, 0x82, 0xd5, 0x1c, 0x46, - 0x5a, 0x7f, 0x2d, 0x25, 0x6d, 0xd6, 0xb1, 0xab, 0x36, 0x3f, 0x01, 0x79, 0xc7, 0xd5, 0xdd, 0x5d, - 0x87, 0xb6, 0xea, 0x47, 0xf5, 0x6f, 0xd5, 0xf3, 0x75, 0x9c, 0x49, 0xa3, 0x99, 0xd5, 0xbf, 0xc8, - 0x24, 0x69, 0xa6, 0x23, 0x58, 0xd0, 0x31, 0x86, 0x10, 0xf1, 0x69, 0x50, 0x7d, 0x6d, 0xaf, 0xd4, - 0x9b, 0xc5, 0x55, 0xad, 0x5c, 0x5c, 0xbc, 0x2f, 0x58, 0xc6, 0x41, 0xca, 0x09, 0x38, 0xb6, 0x51, - 0x2d, 0x2e, 0xac, 0x96, 0x71, 0x73, 0xa9, 0x55, 0xab, 0xe5, 0x92, 0x27, 0xf7, 0x9f, 0xc3, 0x9b, - 0x26, 0x9e, 0x05, 0x8d, 0xf9, 0xf6, 0xac, 0x1c, 0x46, 0xfe, 0xdf, 0x14, 0xf6, 0x2d, 0x0a, 0x35, - 0x8c, 0xa5, 0x35, 0x5a, 0x1c, 0xbe, 0x24, 0xe4, 0x4e, 0x24, 0xc4, 0x49, 0x32, 0x3c, 0xfe, 0xf3, - 0x10, 0x78, 0x9c, 0x80, 0x63, 0x2c, 0x1e, 0xd8, 0xad, 0x28, 0x1a, 0x86, 0xcf, 0x4b, 0x30, 0xb1, - 0x66, 0x6c, 0x61, 0xbf, 0xca, 0xa7, 0x86, 0xc6, 0xc4, 0x1c, 0x48, 0x81, 0x1b, 0x8b, 0x64, 0xb4, - 0xb9, 0xe9, 0xb3, 0xd4, 0x77, 0x99, 0xe2, 0x85, 0x89, 0xfb, 0x17, 0x5a, 0x6c, 0x44, 0xff, 0xf2, - 0xc1, 0x44, 0xfd, 0x4b, 0x7f, 0x5a, 0xc9, 0x84, 0x5d, 0x39, 0x98, 0xb0, 0x19, 0xe7, 0x11, 0xf5, - 0xd9, 0x53, 0x90, 0xaf, 0xa3, 0x0e, 0x6a, 0xb9, 0xea, 0x3b, 0xa4, 0xa1, 0xa4, 0x1a, 0x67, 0x5c, - 0xc9, 0x89, 0x8c, 0xab, 0x6c, 0x0a, 0xc6, 0x55, 0x6e, 0x78, 0xe3, 0x2a, 0x3f, 0xc8, 0xb8, 0x52, - 0x3f, 0x9e, 0x4f, 0xda, 0xf7, 0x12, 0x51, 0x1f, 0xae, 0x49, 0xf5, 0x0b, 0xb9, 0x24, 0x7d, 0x75, - 0x5f, 0x8e, 0x93, 0xa9, 0xeb, 0x6b, 0xb2, 0x29, 0x2c, 0xea, 0x28, 0xd7, 0xc2, 0xd5, 0xe1, 0x7b, - 0xb3, 0xfc, 0x8c, 0x4a, 0xbd, 0x51, 0xc7, 0x76, 0x54, 0xa9, 0xa6, 0x69, 0x1b, 0xeb, 0x64, 0x65, - 0xfe, 0x24, 0x28, 0x21, 0x15, 0x6d, 0xa3, 0x4a, 0xac, 0xa6, 0x2d, 0x9e, 0xfa, 0x52, 0xa5, 0xba, - 0xd8, 0x0c, 0x7a, 0xa2, 0xea, 0x52, 0xad, 0xb0, 0xed, 0x4d, 0x84, 0x19, 0xea, 0x5e, 0x8b, 0xa1, - 0x25, 0x14, 0xab, 0x8b, 0xcd, 0xb5, 0x6a, 0x79, 0xad, 0x56, 0xad, 0x94, 0x70, 0x7a, 0xbd, 0xdc, - 0x28, 0x18, 0xde, 0xf0, 0xdd, 0x63, 0xa7, 0xd5, 0xcb, 0x45, 0xad, 0xb4, 0x52, 0xd6, 0x48, 0x91, - 0xf7, 0x2b, 0xd7, 0xc3, 0x99, 0x62, 0xb5, 0xd6, 0xf0, 0x52, 0x8a, 0xd5, 0xfb, 0x1a, 0xf7, 0xad, - 0x97, 0x9b, 0xeb, 0x5a, 0xad, 0x54, 0xae, 0xd7, 0xbd, 0xde, 0x8f, 0x5a, 0x75, 0x85, 0x8e, 0xf2, - 0x34, 0xb8, 0x9d, 0x61, 0xad, 0xdc, 0xc0, 0xdb, 0xc0, 0x6b, 0x35, 0xec, 0x09, 0xb4, 0x58, 0x6e, - 0xae, 0x14, 0xeb, 0xcd, 0x4a, 0xb5, 0x54, 0x5b, 0x5b, 0x2f, 0x36, 0x2a, 0x5e, 0x27, 0xb9, 0xae, - 0xd5, 0x1a, 0xb5, 0xe6, 0xd9, 0xb2, 0x56, 0xaf, 0xd4, 0xaa, 0x05, 0xd3, 0xab, 0x32, 0xd3, 0xab, - 0xfa, 0xa3, 0x9b, 0xa5, 0x5c, 0x05, 0xa7, 0xfc, 0xf4, 0xd5, 0x9a, 0x27, 0x68, 0xc6, 0xce, 0xeb, - 0xb2, 0x63, 0x63, 0xbd, 0x51, 0xd3, 0x88, 0xa5, 0xb7, 0x56, 0x59, 0xd6, 0x3c, 0xf3, 0xb4, 0xf0, - 0xcc, 0x54, 0xed, 0xc0, 0x7f, 0x91, 0x20, 0x5b, 0x77, 0xad, 0xae, 0xfa, 0xe3, 0x61, 0x07, 0x74, - 0x1a, 0xc0, 0xc6, 0xbb, 0xbe, 0xde, 0xdc, 0x97, 0xce, 0x86, 0x99, 0x14, 0xf5, 0xf7, 0x85, 0xb7, - 0xaa, 0xc2, 0x91, 0xd2, 0xea, 0x46, 0xf4, 0xe0, 0xdf, 0x17, 0x3b, 0xbb, 0x13, 0x4d, 0x28, 0x59, - 0x7b, 0x78, 0xe1, 0x30, 0x9b, 0x51, 0x2a, 0x9c, 0x64, 0x60, 0xf5, 0xe4, 0xef, 0xab, 0x0c, 0x52, - 0x2e, 0x87, 0xcb, 0x7a, 0x94, 0x0f, 0xeb, 0xdc, 0xa6, 0xf2, 0x63, 0xf0, 0x28, 0x46, 0xfd, 0xcb, - 0x6b, 0xb5, 0xb3, 0xe5, 0x40, 0xd1, 0x17, 0x8b, 0x8d, 0x62, 0x61, 0x4b, 0xfd, 0xbc, 0x0c, 0xd9, - 0x35, 0x6b, 0xaf, 0x77, 0x87, 0xd0, 0x44, 0x17, 0x99, 0x15, 0x68, 0xff, 0x95, 0x3f, 0xab, 0x20, - 0x24, 0xf6, 0xb5, 0x68, 0x6f, 0x80, 0x2f, 0x49, 0x49, 0xc4, 0xbe, 0x76, 0x50, 0x17, 0x80, 0xbf, - 0x1f, 0x46, 0xec, 0x11, 0xa2, 0x45, 0xca, 0x19, 0x38, 0x1d, 0x7e, 0xa8, 0x2c, 0x96, 0xab, 0x8d, - 0xca, 0xd2, 0x7d, 0xa1, 0x70, 0x2b, 0x9a, 0x90, 0xf8, 0x07, 0x75, 0x73, 0xf1, 0xf3, 0xbb, 0x53, - 0x70, 0x3c, 0xfc, 0xb6, 0x5c, 0x6e, 0xf8, 0x5f, 0xee, 0x57, 0x1f, 0xcc, 0xc1, 0x0c, 0xe9, 0xf6, - 0x37, 0xba, 0x6d, 0xcf, 0x62, 0x7a, 0x42, 0x88, 0xee, 0x0d, 0x70, 0xb4, 0xb2, 0xbe, 0x54, 0xaf, - 0xbb, 0x96, 0xad, 0x6f, 0xa1, 0x62, 0xbb, 0x6d, 0x53, 0x69, 0xf5, 0x26, 0xab, 0xef, 0x15, 0x5e, - 0x5d, 0xe5, 0x87, 0x1a, 0x52, 0x66, 0x04, 0xea, 0x5f, 0x15, 0x5a, 0x0d, 0x15, 0x20, 0x98, 0x0c, - 0xfd, 0xfb, 0x47, 0xdc, 0xe6, 0xa2, 0x71, 0xd9, 0x3c, 0xf3, 0x3c, 0x09, 0xa6, 0x1a, 0xc6, 0x0e, - 0x7a, 0x96, 0x65, 0x22, 0x47, 0x99, 0x00, 0x79, 0x79, 0xad, 0x51, 0x38, 0xe2, 0x3d, 0x78, 0xa6, - 0x6c, 0x06, 0x3f, 0x94, 0xbd, 0x02, 0xbc, 0x87, 0x62, 0xa3, 0x20, 0x7b, 0x0f, 0x6b, 0xe5, 0x46, - 0x21, 0xeb, 0x3d, 0x54, 0xcb, 0x8d, 0x42, 0xce, 0x7b, 0x58, 0x5f, 0x6d, 0x14, 0xf2, 0xde, 0x43, - 0xa5, 0xde, 0x28, 0x4c, 0x78, 0x0f, 0x0b, 0xf5, 0x46, 0x61, 0xd2, 0x7b, 0x38, 0x5b, 0x6f, 0x14, - 0xa6, 0xbc, 0x87, 0x52, 0xa3, 0x51, 0x00, 0xef, 0xe1, 0x9e, 0x7a, 0xa3, 0x30, 0xed, 0x3d, 0x14, - 0x4b, 0x8d, 0xc2, 0x0c, 0x7e, 0x28, 0x37, 0x0a, 0xb3, 0xde, 0x43, 0xbd, 0xde, 0x28, 0xcc, 0x61, - 0xca, 0xf5, 0x46, 0xe1, 0x28, 0x2e, 0xab, 0xd2, 0x28, 0x14, 0xbc, 0x87, 0x95, 0x7a, 0xa3, 0x70, - 0x0c, 0x67, 0xae, 0x37, 0x0a, 0x0a, 0x2e, 0xb4, 0xde, 0x28, 0x5c, 0x86, 0xf3, 0xd4, 0x1b, 0x85, - 0xe3, 0xb8, 0x88, 0x7a, 0xa3, 0x70, 0x02, 0xb3, 0x51, 0x6e, 0x14, 0x4e, 0xe2, 0x3c, 0x5a, 0xa3, - 0x70, 0x39, 0xfe, 0x54, 0x6d, 0x14, 0x4e, 0x61, 0xc6, 0xca, 0x8d, 0xc2, 0x15, 0xf8, 0x41, 0x6b, - 0x14, 0x54, 0xfc, 0xa9, 0xd8, 0x28, 0x5c, 0xa9, 0x3e, 0x0a, 0xa6, 0x96, 0x91, 0x4b, 0x40, 0x54, - 0x0b, 0x20, 0x2f, 0x23, 0x97, 0x9d, 0x3c, 0x7d, 0x5d, 0x86, 0xcb, 0xe9, 0x84, 0x7b, 0xc9, 0xb6, - 0x76, 0x56, 0xd1, 0x96, 0xde, 0xba, 0x54, 0x7e, 0xc0, 0x33, 0xb1, 0xd8, 0xdd, 0x70, 0x05, 0xb2, - 0xdd, 0xb0, 0x33, 0xc2, 0xcf, 0xb1, 0x16, 0xa9, 0xbf, 0x04, 0x28, 0x87, 0x4b, 0x80, 0xd4, 0x62, - 0xfb, 0x27, 0x56, 0xa3, 0xb9, 0x55, 0xfb, 0x4c, 0xcf, 0xaa, 0xbd, 0xd7, 0x4c, 0xba, 0xc8, 0x76, - 0x2c, 0x53, 0xef, 0xd4, 0xa9, 0xbb, 0x04, 0x59, 0x6b, 0xec, 0x4d, 0x56, 0x9e, 0xee, 0xb7, 0x0c, - 0x62, 0xb5, 0x3d, 0x35, 0x6e, 0x5d, 0xa1, 0xb7, 0x9a, 0x11, 0x8d, 0xe4, 0xd3, 0x41, 0x23, 0x69, - 0x70, 0x8d, 0xe4, 0xee, 0x03, 0xd0, 0x1e, 0xcb, 0x1c, 0x23, 0x74, 0x26, 0xf6, 0x37, 0x09, 0x64, - 0x6f, 0xe6, 0x76, 0xb2, 0x6c, 0xf6, 0x9b, 0x01, 0xb0, 0xba, 0xf0, 0x36, 0x16, 0x9a, 0x75, 0x5e, - 0xa4, 0xb7, 0xf7, 0xad, 0x76, 0x7f, 0x9a, 0x11, 0x12, 0xfd, 0x4c, 0x20, 0xd1, 0x3a, 0x27, 0xd1, - 0xbb, 0x86, 0x27, 0x9d, 0x4c, 0xa0, 0xd5, 0x91, 0x76, 0x40, 0x59, 0xf5, 0x5b, 0x59, 0x78, 0x14, - 0xf1, 0x78, 0xa2, 0x1c, 0x92, 0x56, 0x56, 0x34, 0xdb, 0x1a, 0x72, 0x5c, 0xdd, 0x76, 0xb9, 0x53, - 0xe8, 0x3d, 0x53, 0xad, 0x4c, 0x0a, 0x53, 0x2d, 0x69, 0xe0, 0x54, 0x4b, 0x7d, 0x0f, 0x6b, 0x3e, - 0x9c, 0xe3, 0x31, 0x2e, 0xf6, 0xef, 0xff, 0xe3, 0x6a, 0x18, 0x05, 0x75, 0x60, 0x57, 0xfc, 0x24, - 0x07, 0xf5, 0xd2, 0x81, 0x4b, 0x48, 0x86, 0xf8, 0xef, 0x8f, 0xd6, 0xce, 0xcb, 0xb2, 0xdf, 0x78, - 0xa3, 0xa4, 0xd0, 0x4e, 0xd5, 0x40, 0xff, 0xec, 0x04, 0x4c, 0xe1, 0xb6, 0xb0, 0x6a, 0x98, 0x17, - 0xd4, 0x87, 0x64, 0x98, 0xa9, 0xa2, 0x8b, 0xa5, 0x6d, 0xbd, 0xd3, 0x41, 0xe6, 0x16, 0x62, 0xcd, - 0xf6, 0x53, 0x30, 0xa1, 0x77, 0xbb, 0xd5, 0x70, 0x77, 0xc7, 0x7f, 0xa5, 0xfd, 0xef, 0x37, 0xfb, - 0x36, 0xf2, 0x4c, 0x4c, 0x23, 0x0f, 0xca, 0x9d, 0x67, 0xcb, 0x8c, 0x98, 0x41, 0x5f, 0x03, 0xd3, - 0x2d, 0x3f, 0x4b, 0x70, 0x5a, 0x85, 0x4d, 0x52, 0xff, 0x36, 0x51, 0x37, 0x20, 0x54, 0x78, 0x32, - 0xa5, 0x40, 0x23, 0xb6, 0x43, 0x4e, 0xc0, 0xb1, 0x46, 0xad, 0xd6, 0x5c, 0x2b, 0x56, 0xef, 0x0b, - 0x4f, 0x89, 0x6f, 0xaa, 0xaf, 0xc9, 0xc2, 0x5c, 0xdd, 0xea, 0xec, 0xa1, 0x10, 0xa6, 0x0a, 0xe7, - 0x06, 0xc5, 0xca, 0x29, 0xb3, 0x4f, 0x4e, 0xca, 0x49, 0xc8, 0xeb, 0xa6, 0x73, 0x11, 0xf9, 0xb6, - 0x21, 0x7d, 0xa3, 0x30, 0x7e, 0x98, 0x6d, 0xc7, 0x1a, 0x0f, 0xe3, 0x1d, 0x03, 0x24, 0xc9, 0x73, - 0x15, 0x01, 0xe4, 0x19, 0x98, 0x71, 0xc8, 0x16, 0x6d, 0x83, 0xd9, 0x89, 0xe7, 0xd2, 0x30, 0x8b, - 0xc4, 0x47, 0x40, 0xa6, 0x2c, 0xe2, 0x37, 0xf5, 0xa1, 0xa0, 0xf9, 0x6f, 0x70, 0x10, 0x17, 0x0f, - 0xc2, 0x58, 0x32, 0x90, 0x5f, 0x37, 0xea, 0x19, 0xde, 0x29, 0x38, 0x4e, 0x5b, 0x6d, 0xb3, 0xb4, - 0x52, 0x5c, 0x5d, 0x2d, 0x57, 0x97, 0xcb, 0xcd, 0xca, 0x22, 0xd9, 0x20, 0x0a, 0x53, 0x8a, 0x8d, - 0x46, 0x79, 0x6d, 0xbd, 0x51, 0x6f, 0x96, 0x9f, 0x51, 0x2a, 0x97, 0x17, 0xb1, 0x23, 0x22, 0x3e, - 0x49, 0xe4, 0xbb, 0x8c, 0x16, 0xab, 0xf5, 0x73, 0x65, 0xad, 0xb0, 0x7d, 0xa6, 0x08, 0xd3, 0x4c, - 0x3f, 0xef, 0x71, 0xb7, 0x88, 0x36, 0xf5, 0xdd, 0x0e, 0xb5, 0xd5, 0x0a, 0x47, 0x3c, 0xee, 0xb0, - 0x6c, 0x6a, 0x66, 0xe7, 0x52, 0x21, 0xa3, 0x14, 0x60, 0x86, 0xed, 0xd2, 0x0b, 0x92, 0xfa, 0xce, - 0xab, 0x60, 0xea, 0x9c, 0x65, 0x5f, 0xc0, 0xde, 0x73, 0xea, 0x07, 0x48, 0x34, 0x19, 0xff, 0x5c, - 0x2e, 0x33, 0xb0, 0xbf, 0x4e, 0xdc, 0x47, 0xc3, 0xa7, 0x36, 0x3f, 0xf0, 0xec, 0xed, 0x35, 0x30, - 0x7d, 0xd1, 0xcf, 0x1d, 0xb6, 0x74, 0x26, 0x49, 0xfd, 0x6f, 0x62, 0x5e, 0x17, 0x83, 0x8b, 0x4c, - 0xdf, 0x2b, 0xe0, 0x1d, 0x12, 0xe4, 0x97, 0x91, 0x5b, 0xec, 0x74, 0x58, 0xb9, 0xbd, 0x42, 0xf8, - 0x3c, 0x15, 0x57, 0x89, 0x62, 0xa7, 0x13, 0xdd, 0xa8, 0x18, 0x01, 0xf9, 0x7e, 0xff, 0x5c, 0x9a, - 0xa0, 0xb7, 0xe2, 0x80, 0x02, 0xd3, 0x97, 0xd8, 0x47, 0xe5, 0xc0, 0xb3, 0xe0, 0x61, 0xc6, 0xca, - 0x79, 0x7c, 0x18, 0x49, 0x28, 0x13, 0xef, 0xa1, 0xe0, 0xe7, 0x53, 0xee, 0x85, 0x89, 0x5d, 0x07, - 0x95, 0x74, 0x07, 0x61, 0xde, 0x7a, 0x6b, 0x5a, 0x3b, 0x7f, 0x3f, 0x6a, 0xb9, 0xf3, 0x95, 0x1d, - 0xcf, 0xa0, 0xde, 0x20, 0x19, 0x83, 0xe0, 0x3c, 0xf4, 0x5d, 0xf3, 0x29, 0x78, 0x93, 0x92, 0x8b, - 0x86, 0xbb, 0x5d, 0xda, 0xd6, 0x5d, 0xba, 0xf6, 0x1d, 0xbc, 0xab, 0x2f, 0x19, 0x02, 0xce, 0xd8, - 0x1d, 0xf8, 0xc8, 0x63, 0x99, 0x89, 0x41, 0x1c, 0xc1, 0xb6, 0xf9, 0x30, 0x20, 0xfe, 0x83, 0x04, - 0xd9, 0x5a, 0x17, 0x99, 0xc2, 0x67, 0x90, 0x02, 0xd9, 0x4a, 0x3d, 0xb2, 0x7d, 0x48, 0xdc, 0x27, - 0x2f, 0xa8, 0xb4, 0x57, 0x72, 0x84, 0x64, 0x6f, 0x86, 0xac, 0x61, 0x6e, 0x5a, 0xd4, 0x30, 0xbd, - 0x32, 0x62, 0xeb, 0xad, 0x62, 0x6e, 0x5a, 0x1a, 0xce, 0x28, 0xea, 0x8e, 0x17, 0x57, 0x76, 0xfa, - 0xe2, 0xfe, 0xf6, 0x24, 0xe4, 0x89, 0x3a, 0xab, 0x2f, 0x97, 0x41, 0x2e, 0xb6, 0xdb, 0x11, 0x82, - 0x97, 0xf6, 0x09, 0xde, 0xc2, 0xbf, 0x05, 0x98, 0x04, 0xef, 0x7c, 0x08, 0x19, 0xc1, 0xbe, 0x9d, - 0x36, 0xa9, 0x62, 0xbb, 0x1d, 0xed, 0xf9, 0x1b, 0x14, 0x28, 0xf1, 0x05, 0xb2, 0x2d, 0x5c, 0x16, - 0x6b, 0xe1, 0x89, 0x07, 0x82, 0x48, 0xfe, 0xd2, 0x87, 0xe8, 0x9f, 0x24, 0x98, 0x58, 0x35, 0x1c, - 0xd7, 0xc3, 0xa6, 0x28, 0x82, 0xcd, 0x55, 0x30, 0xe5, 0x8b, 0xc6, 0xeb, 0xf2, 0xbc, 0xfe, 0x3c, - 0x4c, 0x50, 0xdf, 0xc8, 0xa2, 0x73, 0x0f, 0x8f, 0xce, 0x13, 0xe3, 0x6b, 0x4f, 0xb9, 0x88, 0x3e, - 0xdb, 0x11, 0x16, 0x2b, 0xf5, 0x16, 0xfb, 0x9b, 0x81, 0xc0, 0xd7, 0x38, 0x81, 0xdf, 0x36, 0x4c, - 0x91, 0xe9, 0x0b, 0xfd, 0x0b, 0x12, 0x80, 0x57, 0x36, 0x3d, 0x40, 0xf7, 0x18, 0xee, 0x58, 0x7c, - 0x8c, 0x74, 0x5f, 0xc3, 0x4a, 0x77, 0x8d, 0x97, 0xee, 0x93, 0x07, 0x57, 0x35, 0xee, 0xa0, 0x9c, - 0x52, 0x00, 0xd9, 0x08, 0x44, 0xeb, 0x3d, 0xaa, 0xef, 0x08, 0x84, 0xba, 0xce, 0x09, 0xf5, 0x8e, - 0x21, 0x4b, 0x4a, 0x5f, 0xae, 0x7f, 0x29, 0xc1, 0x44, 0x1d, 0xb9, 0x5e, 0x37, 0xa9, 0x9e, 0x15, - 0xe9, 0xe1, 0x99, 0xb6, 0x2d, 0x09, 0xb6, 0xed, 0xef, 0x65, 0x44, 0xc3, 0xeb, 0x84, 0x92, 0xa1, - 0x3c, 0x45, 0x2c, 0x1e, 0x3c, 0x2c, 0x14, 0x5e, 0x67, 0x10, 0xb5, 0xf4, 0xa5, 0xfb, 0x36, 0x29, - 0xd8, 0xb8, 0xe7, 0xcf, 0xb7, 0xb0, 0x66, 0x71, 0x66, 0xbf, 0x59, 0x2c, 0x7e, 0xbe, 0x85, 0xad, - 0x63, 0xf4, 0xae, 0x75, 0x62, 0x63, 0x63, 0x04, 0x1b, 0xca, 0xc3, 0xc8, 0xeb, 0x39, 0x32, 0xe4, - 0xe9, 0xca, 0xf2, 0x5d, 0xf1, 0x2b, 0xcb, 0x83, 0xa7, 0x16, 0xef, 0x1f, 0xc2, 0x94, 0x8b, 0x5b, - 0xee, 0x0d, 0xd8, 0x90, 0x18, 0x36, 0x6e, 0x82, 0x1c, 0x8e, 0xff, 0x49, 0xc7, 0xb9, 0xd0, 0x17, - 0xc0, 0x27, 0x51, 0xf6, 0xbe, 0x6a, 0x24, 0x53, 0x62, 0x14, 0x46, 0xb0, 0x42, 0x3c, 0x0c, 0x0a, - 0xef, 0xf9, 0x7c, 0x26, 0x30, 0x42, 0xde, 0x9f, 0xa5, 0xe6, 0xdf, 0x27, 0xf9, 0x48, 0x24, 0x2d, - 0xcb, 0x74, 0xd1, 0x03, 0xcc, 0x9a, 0x7c, 0x90, 0x10, 0x6b, 0x19, 0x9c, 0x82, 0x09, 0xd7, 0x66, - 0xd7, 0xe9, 0xfd, 0x57, 0xb6, 0xc7, 0xc9, 0xf1, 0x3d, 0x4e, 0x15, 0xce, 0x18, 0x66, 0xab, 0xb3, - 0xdb, 0x46, 0x1a, 0xea, 0xe8, 0x5e, 0xad, 0x9c, 0xa2, 0xb3, 0x88, 0xba, 0xc8, 0x6c, 0x23, 0xd3, - 0x25, 0x7c, 0xfa, 0x9e, 0xd0, 0x02, 0x39, 0xd5, 0x6f, 0xb0, 0x8a, 0x71, 0x27, 0xaf, 0x18, 0x8f, - 0xe9, 0x37, 0xaf, 0x88, 0x31, 0x42, 0x6f, 0x03, 0x20, 0x75, 0x3b, 0x6b, 0xa0, 0x8b, 0xb4, 0x43, - 0xbc, 0xa2, 0xc7, 0x14, 0xad, 0x05, 0x19, 0x34, 0x26, 0xb3, 0xfa, 0x95, 0x40, 0x19, 0xee, 0xe6, - 0x94, 0xe1, 0x26, 0x41, 0x16, 0x92, 0xe9, 0x41, 0x77, 0x88, 0xb5, 0x8e, 0x59, 0x98, 0x0a, 0x57, - 0x28, 0x65, 0xe5, 0x0a, 0x38, 0xe1, 0xfb, 0x44, 0x54, 0xcb, 0xe5, 0xc5, 0x7a, 0x73, 0x63, 0x7d, - 0x59, 0x2b, 0x2e, 0x96, 0x0b, 0xa0, 0x28, 0x30, 0x57, 0x5b, 0xb8, 0xa7, 0x5c, 0x6a, 0x04, 0xae, - 0x0c, 0x59, 0xf5, 0xcf, 0x25, 0xc8, 0x61, 0x37, 0x7e, 0xf5, 0xa7, 0x47, 0xa4, 0x39, 0x0e, 0xb7, - 0xc3, 0x13, 0x4c, 0xa4, 0xc4, 0x23, 0x84, 0x52, 0x61, 0x62, 0xae, 0x0e, 0x14, 0x21, 0x34, 0x86, - 0x50, 0xfa, 0xcd, 0xd3, 0x6b, 0x92, 0xf5, 0x6d, 0xeb, 0xe2, 0x8f, 0x72, 0x93, 0xf4, 0xea, 0x7f, - 0xc8, 0x4d, 0xb2, 0x0f, 0x0b, 0x63, 0x6f, 0x92, 0x7d, 0xda, 0x5d, 0x4c, 0x33, 0x55, 0x9f, 0x9d, - 0x0b, 0x16, 0x64, 0x9e, 0x27, 0x1d, 0x68, 0x41, 0xa6, 0x08, 0xb3, 0x86, 0xe9, 0x22, 0xdb, 0xd4, - 0x3b, 0x4b, 0x1d, 0x7d, 0xcb, 0x0f, 0x5b, 0xd0, 0x3b, 0x0b, 0xaf, 0x30, 0x79, 0x34, 0xfe, 0x0f, - 0xe5, 0x34, 0x80, 0x8b, 0x76, 0xba, 0x1d, 0xdd, 0x0d, 0x55, 0x8f, 0x49, 0x61, 0xb5, 0x2f, 0xcb, - 0x6b, 0xdf, 0x2d, 0x70, 0x19, 0x01, 0xad, 0x71, 0xa9, 0x8b, 0x36, 0x4c, 0xe3, 0x99, 0xbb, 0x38, - 0x70, 0x15, 0xd1, 0xd1, 0x7e, 0x9f, 0xb8, 0x65, 0x89, 0x7c, 0xcf, 0xb2, 0xc4, 0x3f, 0x08, 0x1f, - 0x88, 0xf5, 0x5b, 0xfd, 0x80, 0x03, 0xb1, 0x41, 0x4b, 0x93, 0x7b, 0x5a, 0x5a, 0x60, 0x2c, 0x64, - 0x05, 0x8c, 0x05, 0x16, 0x95, 0x9c, 0xa0, 0xa1, 0xfd, 0x06, 0xa1, 0x13, 0xb7, 0x71, 0xd5, 0x18, - 0xc3, 0x44, 0x4e, 0x86, 0x39, 0x52, 0xf4, 0x82, 0x65, 0x5d, 0xd8, 0xd1, 0xed, 0x0b, 0xaa, 0x7d, - 0x20, 0x55, 0x8c, 0x5d, 0x13, 0x89, 0x5c, 0xe8, 0xfb, 0x0c, 0x8b, 0xfa, 0x32, 0x8f, 0xfa, 0xe3, - 0xa3, 0xc5, 0xe5, 0xf3, 0x3c, 0x9e, 0x45, 0x91, 0xb7, 0x04, 0x78, 0xde, 0xc3, 0xe1, 0xf9, 0xa4, - 0xc4, 0x0c, 0xa6, 0x8f, 0xeb, 0x1f, 0x06, 0xb8, 0xfa, 0x1d, 0x3d, 0x3b, 0x9f, 0x1c, 0x25, 0xae, - 0xea, 0x57, 0x87, 0xc3, 0xce, 0xe7, 0x6b, 0x08, 0xec, 0x0a, 0x20, 0x5f, 0x08, 0xb6, 0xb0, 0xbc, - 0x47, 0xb6, 0x42, 0xd9, 0xf4, 0xd0, 0x8c, 0x60, 0x79, 0x2c, 0x68, 0x1e, 0xe7, 0x59, 0xa8, 0x75, - 0x53, 0xc5, 0xf4, 0xcb, 0xc2, 0xeb, 0x34, 0x7d, 0x05, 0x44, 0xb8, 0x1b, 0x4f, 0xab, 0x14, 0x5b, - 0xe4, 0x11, 0x67, 0x33, 0x7d, 0x34, 0x5f, 0x9c, 0x83, 0x29, 0xff, 0xc8, 0x32, 0x8e, 0xa8, 0x1f, - 0x60, 0x78, 0x12, 0xf2, 0x8e, 0xb5, 0x6b, 0xb7, 0x10, 0x5d, 0x39, 0xa3, 0x6f, 0x43, 0xac, 0xf2, - 0x0c, 0x1c, 0xcf, 0xf7, 0x99, 0x0c, 0xd9, 0xc4, 0x26, 0x43, 0xb4, 0x41, 0x1a, 0x37, 0xc0, 0xbf, - 0x44, 0x38, 0x0c, 0x2a, 0x87, 0x59, 0x1d, 0xb9, 0x8f, 0xc4, 0x31, 0xfe, 0xf7, 0x84, 0xd6, 0x10, - 0x06, 0xd4, 0x24, 0x99, 0xca, 0xd5, 0x86, 0x30, 0x54, 0xaf, 0x84, 0xcb, 0xfd, 0x1c, 0xd4, 0x42, - 0xc5, 0x16, 0xe9, 0x86, 0xb6, 0x5a, 0x90, 0xd5, 0xe7, 0x64, 0xa1, 0x40, 0x58, 0xab, 0x05, 0xc6, - 0x9a, 0xfa, 0x8a, 0xcc, 0x61, 0x5b, 0xa4, 0xd1, 0x53, 0xcc, 0xcf, 0x49, 0xa2, 0xa1, 0xd6, 0x38, - 0xc1, 0x87, 0xb5, 0x8b, 0xd0, 0xa4, 0x21, 0x9a, 0x59, 0x8c, 0xf2, 0xa9, 0xbf, 0x91, 0x11, 0x89, - 0xdc, 0x26, 0xc6, 0x62, 0xfa, 0xbd, 0xd2, 0x17, 0xb3, 0x7e, 0xe4, 0x89, 0x25, 0xdb, 0xda, 0xd9, - 0xb0, 0x3b, 0xea, 0xff, 0x29, 0x14, 0x18, 0x33, 0xc2, 0xfc, 0x97, 0xa2, 0xcd, 0xff, 0x02, 0xc8, - 0xbb, 0x76, 0xc7, 0x1f, 0xbe, 0x77, 0xed, 0xce, 0x10, 0xc3, 0xb7, 0x72, 0x3d, 0xcc, 0xe9, 0xed, - 0xf6, 0xba, 0xbe, 0x85, 0x4a, 0xde, 0xbc, 0xda, 0x74, 0xe9, 0xa9, 0xf4, 0x9e, 0xd4, 0xd8, 0xae, - 0xe8, 0x1b, 0xc2, 0x3b, 0x71, 0x1c, 0x48, 0x54, 0x3e, 0x63, 0x19, 0xde, 0xbc, 0x21, 0xa1, 0xb5, - 0xad, 0x87, 0x31, 0x32, 0xe8, 0x9b, 0xe0, 0x0e, 0x9d, 0x00, 0xdf, 0xe9, 0x6b, 0xd6, 0xef, 0x48, - 0x30, 0xe1, 0xc9, 0xbb, 0xd8, 0x6e, 0xab, 0x8f, 0xe6, 0x42, 0xc9, 0x44, 0xee, 0x91, 0xbe, 0x40, - 0x78, 0x73, 0xda, 0xaf, 0x21, 0xa1, 0x1f, 0x81, 0x49, 0x28, 0x44, 0x89, 0x13, 0xa2, 0xd8, 0x1e, - 0x74, 0x6c, 0x11, 0xe9, 0x8b, 0xef, 0xd3, 0x12, 0xcc, 0xfa, 0xf3, 0x88, 0x25, 0xe4, 0xb6, 0xb6, - 0xd5, 0xdb, 0x44, 0x17, 0x9a, 0x68, 0x4b, 0x93, 0x82, 0x96, 0xa6, 0xfe, 0x20, 0x93, 0x50, 0xe5, - 0xb9, 0x92, 0x23, 0x56, 0xe9, 0x12, 0xe9, 0x62, 0x1c, 0xc1, 0xf4, 0x85, 0xf9, 0x15, 0x09, 0xa0, - 0x61, 0x05, 0x73, 0xdd, 0x03, 0x48, 0xf2, 0x65, 0xc2, 0xb7, 0x54, 0xd0, 0x8a, 0x87, 0xc5, 0x26, - 0xef, 0x39, 0x04, 0xb7, 0xd8, 0x06, 0x95, 0x34, 0x96, 0xb6, 0x3e, 0xb5, 0xb8, 0xdb, 0xed, 0x18, - 0x2d, 0xdd, 0xed, 0xdd, 0x17, 0x8e, 0x16, 0x2f, 0xbe, 0x6e, 0x2a, 0x91, 0x51, 0x18, 0x94, 0x11, - 0x21, 0x4b, 0x72, 0x18, 0x57, 0xf2, 0x0f, 0xe3, 0x0a, 0xee, 0xf5, 0x0c, 0x20, 0x3e, 0x06, 0xf5, - 0x94, 0xe1, 0x68, 0xad, 0x8b, 0xcc, 0x05, 0x1b, 0xe9, 0xed, 0x96, 0xbd, 0xbb, 0x73, 0xde, 0x61, - 0x9d, 0x1a, 0xe2, 0x75, 0x94, 0x59, 0x3a, 0x96, 0xb8, 0xa5, 0x63, 0xf5, 0xb9, 0xb2, 0xe8, 0x81, - 0x7b, 0x66, 0x83, 0x83, 0xe1, 0x61, 0x88, 0xa1, 0x2e, 0xd1, 0x56, 0x5c, 0xcf, 0x2a, 0x71, 0x36, - 0xc9, 0x2a, 0xf1, 0x5b, 0x85, 0x8e, 0xef, 0x0b, 0xd5, 0x6b, 0x2c, 0x3b, 0xaa, 0x73, 0x75, 0xe4, - 0x46, 0xc0, 0x7b, 0x1d, 0xcc, 0x9e, 0x0f, 0xbf, 0x04, 0x10, 0xf3, 0x89, 0x7d, 0xfc, 0x1c, 0xde, - 0x96, 0x74, 0x05, 0x86, 0x67, 0x21, 0x02, 0xdd, 0x00, 0x41, 0x49, 0x64, 0x33, 0x35, 0xd1, 0x72, - 0x4a, 0x6c, 0xf9, 0xe9, 0xa3, 0xf0, 0x71, 0x09, 0xa6, 0xf1, 0x25, 0x5a, 0x0b, 0x97, 0xb0, 0x77, - 0xbe, 0xa0, 0x51, 0xf2, 0x62, 0x56, 0xcc, 0x0a, 0x64, 0x3b, 0x86, 0x79, 0xc1, 0xdf, 0x05, 0xf7, - 0x9e, 0xc3, 0x2b, 0x59, 0xa4, 0x3e, 0x57, 0xb2, 0x04, 0xfb, 0x14, 0x41, 0xb9, 0x07, 0xba, 0x23, - 0x70, 0x20, 0xb9, 0xf4, 0xc5, 0xf8, 0x77, 0x59, 0xc8, 0xd7, 0x91, 0x6e, 0xb7, 0xb6, 0xd5, 0xf7, - 0x4b, 0x7d, 0xa7, 0x0a, 0x93, 0xfc, 0x54, 0x61, 0x09, 0x26, 0x36, 0x8d, 0x8e, 0x8b, 0x6c, 0xe2, - 0x19, 0xc4, 0x76, 0xed, 0xa4, 0x89, 0x2f, 0x74, 0xac, 0xd6, 0x85, 0x79, 0x6a, 0xba, 0xcf, 0xfb, - 0x21, 0xbc, 0xe6, 0x97, 0xf0, 0x4f, 0x9a, 0xff, 0xb3, 0x67, 0x10, 0x3a, 0x96, 0xed, 0x46, 0x45, - 0x67, 0x8e, 0xa0, 0x52, 0xb7, 0x6c, 0x57, 0x23, 0x3f, 0x7a, 0x30, 0x6f, 0xee, 0x76, 0x3a, 0x0d, - 0xf4, 0x80, 0xeb, 0x4f, 0xdb, 0xfc, 0x77, 0xcf, 0x58, 0xb4, 0x36, 0x37, 0x1d, 0x44, 0x16, 0x0d, - 0x72, 0x1a, 0x7d, 0x53, 0x8e, 0x43, 0xae, 0x63, 0xec, 0x18, 0x64, 0xa2, 0x91, 0xd3, 0xc8, 0x8b, - 0x72, 0x23, 0x14, 0xc2, 0x39, 0x0e, 0x61, 0xf4, 0x54, 0x1e, 0x37, 0xcd, 0x7d, 0xe9, 0x9e, 0xce, - 0x5c, 0x40, 0x97, 0x9c, 0x53, 0x13, 0xf8, 0x3b, 0x7e, 0xe6, 0xdd, 0x30, 0x45, 0xf6, 0x3b, 0x88, - 0xc4, 0xa3, 0x67, 0xb0, 0x36, 0x6a, 0x59, 0x76, 0xdb, 0x97, 0x4d, 0xf4, 0x04, 0x83, 0xe6, 0x4b, - 0xb6, 0x4b, 0xd1, 0xb7, 0xf0, 0x31, 0xb8, 0x40, 0xe4, 0xbd, 0x6e, 0xd3, 0x2b, 0xfa, 0x9c, 0xe1, - 0x6e, 0xaf, 0x21, 0x57, 0x57, 0xff, 0x4e, 0xee, 0xab, 0x71, 0xd3, 0xff, 0x4b, 0xe3, 0x06, 0x68, - 0x1c, 0x09, 0x13, 0xe0, 0xee, 0xda, 0xa6, 0x27, 0x47, 0x1a, 0x0e, 0x8d, 0x49, 0x51, 0xee, 0x80, - 0x2b, 0xc2, 0x37, 0x7f, 0xa9, 0x74, 0x91, 0x4e, 0x5b, 0xa7, 0x70, 0xf6, 0xe8, 0x0c, 0xca, 0x3a, - 0x5c, 0x4b, 0x3e, 0xae, 0x34, 0xd6, 0x56, 0x57, 0x8c, 0xad, 0xed, 0x8e, 0xb1, 0xb5, 0xed, 0x3a, - 0x15, 0xd3, 0x71, 0x91, 0xde, 0xae, 0x6d, 0x6a, 0x24, 0xae, 0x3a, 0x60, 0x3a, 0x22, 0x59, 0x79, - 0xcf, 0x21, 0xb1, 0xd1, 0x8d, 0xd5, 0x94, 0x88, 0x96, 0xf2, 0x24, 0xaf, 0xa5, 0x38, 0xbb, 0x9d, - 0x00, 0xd3, 0xab, 0x7a, 0x30, 0x0d, 0x55, 0x7d, 0xb7, 0x83, 0x9b, 0x0b, 0xce, 0x9c, 0x74, 0x9c, - 0x8b, 0xe1, 0x24, 0xfd, 0x66, 0xf3, 0xff, 0xe5, 0x21, 0xb7, 0x6c, 0xeb, 0xdd, 0x6d, 0xf5, 0x39, - 0x4c, 0xff, 0x3c, 0xaa, 0x36, 0x11, 0x68, 0xa7, 0x34, 0x48, 0x3b, 0xe5, 0x01, 0xda, 0x99, 0x65, - 0xb4, 0x33, 0x7a, 0x51, 0xf9, 0x0c, 0xcc, 0xb4, 0xac, 0x4e, 0x07, 0xb5, 0x3c, 0x79, 0x54, 0xda, - 0x78, 0x35, 0x67, 0x4a, 0xe3, 0xd2, 0x70, 0x98, 0x43, 0xe4, 0xd6, 0xc9, 0x1a, 0x3a, 0x51, 0xfa, - 0x30, 0x41, 0x7d, 0x85, 0x04, 0xd9, 0x72, 0x7b, 0x0b, 0x71, 0xeb, 0xec, 0x19, 0x66, 0x9d, 0xfd, - 0x24, 0xe4, 0x5d, 0xdd, 0xde, 0x42, 0xae, 0xbf, 0x4e, 0x40, 0xde, 0x82, 0xe8, 0x8b, 0x32, 0x13, - 0x7d, 0xf1, 0xc9, 0x90, 0xf5, 0x64, 0x46, 0x23, 0xf0, 0x5c, 0xdb, 0x0f, 0x7e, 0x2c, 0xfb, 0x79, - 0xaf, 0xc4, 0x79, 0xaf, 0xd6, 0x1a, 0xfe, 0xa1, 0x17, 0xeb, 0xdc, 0x3e, 0xac, 0xf1, 0x15, 0x51, - 0x2d, 0xcb, 0xac, 0xec, 0xe8, 0x5b, 0x88, 0x56, 0x33, 0x4c, 0xf0, 0xbf, 0x96, 0x77, 0xac, 0xfb, - 0x0d, 0x1a, 0x08, 0x31, 0x4c, 0xf0, 0xaa, 0xb0, 0x6d, 0xb4, 0xdb, 0xc8, 0xa4, 0x2d, 0x9b, 0xbe, - 0x9d, 0x39, 0x0d, 0x59, 0x8f, 0x07, 0x4f, 0x7f, 0x3c, 0x63, 0xa1, 0x70, 0x44, 0x99, 0xf1, 0x9a, - 0x15, 0x69, 0xbc, 0x85, 0x0c, 0xbf, 0xa6, 0x2a, 0xe2, 0xb6, 0x43, 0x2a, 0xd7, 0xbf, 0x71, 0x3d, - 0x0e, 0x72, 0xa6, 0xd5, 0x46, 0x03, 0x07, 0x21, 0x92, 0x4b, 0x79, 0x22, 0xe4, 0x50, 0xdb, 0xeb, - 0x15, 0x64, 0x9c, 0xfd, 0x74, 0xbc, 0x2c, 0x35, 0x92, 0x39, 0x99, 0x6f, 0x50, 0x3f, 0x6e, 0xd3, - 0x6f, 0x80, 0x3f, 0x3f, 0x01, 0x47, 0x49, 0x1f, 0x50, 0xdf, 0x3d, 0xef, 0x91, 0x3a, 0x8f, 0xd4, - 0x87, 0xfb, 0x0f, 0x5c, 0x47, 0x79, 0x65, 0x3f, 0x0e, 0x39, 0x67, 0xf7, 0x7c, 0x60, 0x84, 0x92, - 0x17, 0xb6, 0xe9, 0x4a, 0x23, 0x19, 0xce, 0xe4, 0x61, 0x87, 0x33, 0x6e, 0x68, 0x92, 0xfd, 0xc6, - 0x1f, 0x0e, 0x64, 0x79, 0x9c, 0xec, 0x0f, 0x64, 0xfd, 0x86, 0xa1, 0x53, 0x30, 0xa1, 0x6f, 0xba, - 0xc8, 0x0e, 0xcd, 0x44, 0xfa, 0xea, 0x0d, 0x95, 0xe7, 0xd1, 0xa6, 0x65, 0x7b, 0x62, 0x99, 0x22, - 0x43, 0xa5, 0xff, 0xce, 0xb4, 0x5c, 0xe0, 0x76, 0xc8, 0x6e, 0x82, 0x63, 0xa6, 0xb5, 0x88, 0xba, - 0x54, 0xce, 0x04, 0xc5, 0x59, 0xdc, 0x02, 0xf6, 0x7f, 0xd8, 0xd7, 0x95, 0xcc, 0xed, 0xef, 0x4a, - 0xd4, 0xcf, 0x26, 0x9d, 0x33, 0xf7, 0x00, 0x3d, 0x32, 0x0b, 0x4d, 0x79, 0x2a, 0xcc, 0xb4, 0xa9, - 0x8b, 0x56, 0xcb, 0x08, 0x5a, 0x49, 0xe4, 0x7f, 0x5c, 0xe6, 0x50, 0x91, 0xb2, 0xac, 0x22, 0x2d, - 0xc3, 0x24, 0x3e, 0x90, 0xe3, 0x69, 0x52, 0xae, 0x27, 0x8a, 0x1b, 0x9e, 0xd6, 0x05, 0x95, 0x62, - 0xc4, 0x36, 0x5f, 0xa2, 0xbf, 0x68, 0xc1, 0xcf, 0xc9, 0x66, 0xdf, 0xf1, 0x12, 0x4a, 0xbf, 0x39, - 0xfe, 0x66, 0x1e, 0xae, 0x28, 0xd9, 0x96, 0xe3, 0xe0, 0x28, 0x14, 0xbd, 0x0d, 0xf3, 0xcd, 0x12, - 0x17, 0x87, 0xf9, 0x11, 0xdd, 0xfc, 0xfa, 0x35, 0xa8, 0xf1, 0x35, 0x8d, 0x6f, 0x08, 0x1f, 0x65, - 0x0e, 0xf6, 0x1f, 0x22, 0x84, 0xfe, 0xa3, 0xd1, 0x48, 0xde, 0x93, 0x11, 0x39, 0x5d, 0x9d, 0x50, - 0x56, 0xe9, 0x37, 0x97, 0x2f, 0x4b, 0x70, 0x65, 0x2f, 0x37, 0x1b, 0xa6, 0x13, 0x34, 0x98, 0xab, - 0x07, 0xb4, 0x17, 0xfe, 0x34, 0x6e, 0xec, 0x0d, 0x48, 0x11, 0x75, 0x67, 0x4a, 0x8b, 0x58, 0x2c, - 0x79, 0x5f, 0x46, 0xe4, 0x06, 0xa4, 0xc4, 0xe4, 0xd3, 0x17, 0xee, 0xe7, 0xb2, 0x70, 0x74, 0xd9, - 0xb6, 0x76, 0xbb, 0x4e, 0xd8, 0x03, 0xfd, 0x75, 0xff, 0x0d, 0xd7, 0xbc, 0x88, 0x69, 0x70, 0x0d, - 0x4c, 0xdb, 0xd4, 0x9a, 0x0b, 0xb7, 0x5f, 0xd9, 0x24, 0xb6, 0xf7, 0x92, 0x0f, 0xd2, 0x7b, 0x85, - 0xfd, 0x4c, 0x96, 0xeb, 0x67, 0x7a, 0x7b, 0x8e, 0x5c, 0x9f, 0x9e, 0xe3, 0xaf, 0xa4, 0x84, 0x83, - 0x6a, 0x8f, 0x88, 0x22, 0xfa, 0x8b, 0x12, 0xe4, 0xb7, 0x70, 0x46, 0xda, 0x5d, 0x3c, 0x56, 0xac, - 0x66, 0x98, 0xb8, 0x46, 0x7f, 0x0d, 0xe5, 0x2a, 0xb3, 0x3a, 0x9c, 0x68, 0x80, 0x8b, 0xe7, 0x36, - 0x7d, 0xa5, 0x7a, 0x28, 0x0b, 0x33, 0x41, 0xe9, 0x95, 0xb6, 0xa3, 0xbe, 0xb8, 0xbf, 0x46, 0xcd, - 0x8a, 0x68, 0xd4, 0xbe, 0x75, 0xe6, 0x60, 0xd4, 0x91, 0x99, 0x51, 0xa7, 0xef, 0xe8, 0x32, 0x13, - 0x31, 0xba, 0xa8, 0xcf, 0x96, 0x45, 0x6f, 0x32, 0xe0, 0xbb, 0x56, 0x5c, 0x9b, 0x47, 0xf2, 0x60, - 0x21, 0x78, 0x9f, 0xc2, 0xe0, 0x5a, 0xa5, 0xaf, 0x24, 0x1f, 0x92, 0xe0, 0xd8, 0xfe, 0xce, 0xfc, - 0xc7, 0x78, 0x2f, 0x34, 0xaf, 0x4e, 0x4e, 0xe0, 0x85, 0x86, 0xdf, 0xf8, 0x4d, 0xba, 0xd8, 0xa3, - 0xb1, 0x9c, 0xbd, 0x37, 0xb8, 0x13, 0x17, 0x3b, 0xfc, 0x2a, 0x48, 0x34, 0x7d, 0x01, 0xfe, 0xb2, - 0x0c, 0x53, 0x75, 0xe4, 0xae, 0xea, 0x97, 0xac, 0x5d, 0x57, 0xd5, 0x45, 0xb7, 0xe7, 0x9e, 0x02, - 0xf9, 0x0e, 0xfe, 0x85, 0x5e, 0x10, 0x7b, 0x4d, 0xdf, 0xfd, 0x2d, 0xec, 0xfb, 0x43, 0x48, 0x6b, - 0x34, 0x3f, 0x7f, 0x26, 0x59, 0x64, 0x77, 0x34, 0xe0, 0x6e, 0x24, 0x5b, 0x3b, 0x89, 0xf6, 0x4e, - 0xa3, 0x8a, 0x4e, 0x1f, 0x96, 0xe7, 0xca, 0x30, 0x5b, 0x47, 0x6e, 0xc5, 0x59, 0xd2, 0xf7, 0x2c, - 0xdb, 0x70, 0x11, 0x7b, 0x43, 0x54, 0x3c, 0x34, 0xa7, 0x01, 0x8c, 0xe0, 0x37, 0x1a, 0x29, 0x81, - 0x49, 0x51, 0x7f, 0x23, 0xa9, 0xa3, 0x10, 0xc7, 0xc7, 0x48, 0x40, 0x48, 0xe4, 0x63, 0x11, 0x57, - 0x7c, 0xfa, 0x40, 0x7c, 0x49, 0xa2, 0x40, 0x14, 0xed, 0xd6, 0xb6, 0xb1, 0x87, 0xda, 0x09, 0x81, - 0xf0, 0x7f, 0x0b, 0x81, 0x08, 0x08, 0x25, 0x76, 0x5f, 0xe1, 0xf8, 0x18, 0x85, 0xfb, 0x4a, 0x1c, - 0xc1, 0xb1, 0x04, 0x3b, 0xf0, 0xba, 0x1e, 0xba, 0x9e, 0x79, 0x97, 0xa8, 0x58, 0x43, 0x93, 0x4d, - 0x62, 0x4d, 0xb6, 0xa1, 0x3a, 0x16, 0x52, 0xf6, 0x20, 0x9d, 0xce, 0xa6, 0xd1, 0xb1, 0xf4, 0x2d, - 0x3a, 0x7d, 0xa1, 0xbf, 0x4f, 0x86, 0x13, 0xc1, 0x29, 0xe0, 0x3a, 0x72, 0x17, 0x75, 0x67, 0xfb, - 0xbc, 0xa5, 0xdb, 0x6d, 0xf6, 0xe2, 0xe0, 0xa1, 0x4f, 0xfc, 0xa9, 0x5f, 0x64, 0x41, 0xa8, 0xf2, - 0x20, 0xf4, 0x75, 0x15, 0xed, 0xcb, 0xcb, 0x28, 0x3a, 0x99, 0x58, 0x6f, 0xd6, 0xdf, 0x0a, 0xc0, - 0x7a, 0x3a, 0x07, 0xd6, 0x9d, 0xc3, 0xb2, 0x98, 0x3e, 0x70, 0xbf, 0x46, 0x46, 0x04, 0xc6, 0xab, - 0xf9, 0x3e, 0x51, 0xc0, 0x22, 0xbc, 0x5a, 0xe5, 0x48, 0xaf, 0xd6, 0xa1, 0xc6, 0x88, 0x81, 0x1e, - 0xc9, 0xe9, 0x8e, 0x11, 0x87, 0xe8, 0x6d, 0xfc, 0x2e, 0x19, 0x0a, 0x38, 0x0c, 0x04, 0xe3, 0xf1, - 0xad, 0xde, 0x2f, 0x8a, 0xce, 0x3e, 0xef, 0xf2, 0x89, 0xa4, 0xde, 0xe5, 0xea, 0x3b, 0x93, 0xfa, - 0x90, 0xf7, 0x72, 0x3b, 0x12, 0xc4, 0x12, 0xb9, 0x88, 0x0f, 0xe0, 0x20, 0x7d, 0xd0, 0x7e, 0x41, - 0x06, 0xf0, 0x1a, 0x34, 0x3d, 0xfb, 0xf0, 0x0c, 0x51, 0xb8, 0x6e, 0x66, 0xfd, 0xea, 0x3d, 0xa0, - 0x4e, 0xf4, 0x00, 0x45, 0x28, 0x86, 0xa7, 0x2a, 0x1e, 0x4e, 0xea, 0x5b, 0x19, 0x72, 0x35, 0x12, - 0x58, 0x12, 0x79, 0x5b, 0x46, 0x96, 0x9d, 0x3e, 0x20, 0xff, 0x5d, 0x82, 0x5c, 0xc3, 0xaa, 0x23, - 0xf7, 0xe0, 0xa6, 0x40, 0xe2, 0x63, 0xfb, 0xb8, 0xdc, 0x51, 0x1c, 0xdb, 0xef, 0x47, 0x28, 0x7d, - 0xd1, 0xbd, 0x57, 0x82, 0x99, 0x86, 0x55, 0x0a, 0x16, 0xa7, 0xc4, 0x7d, 0x55, 0xc5, 0x6f, 0x63, - 0x0c, 0x2a, 0x18, 0x16, 0x73, 0xa0, 0xdb, 0x18, 0x07, 0xd3, 0x4b, 0x5f, 0x6e, 0xb7, 0xc1, 0xd1, - 0x0d, 0xb3, 0x6d, 0x69, 0xa8, 0x6d, 0xd1, 0x95, 0x6e, 0x45, 0x81, 0xec, 0xae, 0xd9, 0xb6, 0x30, - 0xcb, 0x39, 0x0d, 0x3f, 0x7b, 0x69, 0x36, 0x6a, 0x5b, 0xd4, 0x37, 0x00, 0x3f, 0xab, 0xdf, 0x90, - 0x21, 0xeb, 0xfd, 0x2b, 0x2e, 0xea, 0x77, 0xc9, 0x09, 0x03, 0x11, 0x78, 0xe4, 0x47, 0x62, 0x09, - 0xdd, 0xc5, 0xac, 0xfd, 0x13, 0x0f, 0xd6, 0x6b, 0xa3, 0xca, 0x63, 0x44, 0x11, 0xae, 0xf9, 0x2b, - 0xa7, 0x60, 0xe2, 0x7c, 0xc7, 0x6a, 0x5d, 0x08, 0xcf, 0xcb, 0xd3, 0x57, 0xe5, 0x46, 0xc8, 0xd9, - 0xba, 0xb9, 0x85, 0xe8, 0x9e, 0xc2, 0xf1, 0x9e, 0xbe, 0x10, 0x7b, 0xbd, 0x68, 0x24, 0x8b, 0xfa, - 0xce, 0x24, 0x21, 0x10, 0xfa, 0x54, 0x3e, 0x99, 0x3e, 0x2c, 0x0e, 0x71, 0xb2, 0xac, 0x00, 0x33, - 0xa5, 0x22, 0xb9, 0xf7, 0x74, 0xad, 0x76, 0xb6, 0x5c, 0x90, 0x31, 0xcc, 0x9e, 0x4c, 0x52, 0x84, - 0xd9, 0x23, 0xff, 0x23, 0x0b, 0x73, 0x9f, 0xca, 0x1f, 0x06, 0xcc, 0x9f, 0x96, 0x60, 0x76, 0xd5, - 0x70, 0xdc, 0x28, 0x6f, 0xff, 0x98, 0x28, 0x70, 0x2f, 0x49, 0x6a, 0x2a, 0x73, 0xe5, 0x08, 0x87, - 0x7f, 0x4b, 0x64, 0x0e, 0xc7, 0x15, 0x31, 0x9e, 0x63, 0x29, 0x98, 0x03, 0x72, 0x57, 0xa1, 0xb0, - 0x24, 0x13, 0x1b, 0x4a, 0x61, 0x21, 0xe3, 0x37, 0x94, 0x22, 0xcb, 0x4e, 0x5f, 0xbe, 0xdf, 0x90, - 0xe0, 0x98, 0x57, 0x7c, 0xdc, 0xb2, 0x54, 0xb4, 0x98, 0x07, 0x2e, 0x4b, 0x25, 0x5e, 0x19, 0xdf, - 0xc7, 0xcb, 0x28, 0x56, 0xc6, 0x07, 0x11, 0x1d, 0xb3, 0x98, 0x23, 0x96, 0x61, 0x07, 0x89, 0x39, - 0x66, 0x19, 0x76, 0x78, 0x31, 0xc7, 0x2f, 0xc5, 0x0e, 0x29, 0xe6, 0x43, 0x5b, 0x60, 0xfd, 0x75, - 0x39, 0x10, 0x73, 0xe4, 0xda, 0x46, 0x8c, 0x98, 0x13, 0x9f, 0xd8, 0x55, 0xdf, 0x3d, 0xa4, 0xe0, - 0x47, 0xbc, 0xbe, 0x31, 0x0c, 0x4c, 0x87, 0xb8, 0xc6, 0xf1, 0x4a, 0x19, 0xe6, 0x28, 0x17, 0xfd, - 0xa7, 0xcc, 0x31, 0x18, 0x25, 0x9e, 0x32, 0x27, 0x3e, 0x03, 0xc4, 0x73, 0x36, 0xfe, 0x33, 0x40, - 0xb1, 0xe5, 0xa7, 0x0f, 0xce, 0x37, 0xb3, 0x70, 0xd2, 0x63, 0x61, 0xcd, 0x6a, 0x1b, 0x9b, 0x97, - 0x08, 0x17, 0x67, 0xf5, 0xce, 0x2e, 0x72, 0xd4, 0x0f, 0x48, 0xa2, 0x28, 0xfd, 0x27, 0x00, 0xab, - 0x8b, 0x6c, 0x12, 0x48, 0x8d, 0x02, 0x75, 0x47, 0x54, 0x65, 0xf7, 0x97, 0x14, 0x04, 0x45, 0xaf, - 0xf9, 0x44, 0x34, 0x86, 0x9e, 0x67, 0x15, 0x4e, 0x05, 0x5f, 0x7a, 0x1d, 0x3c, 0x32, 0xfb, 0x1d, - 0x3c, 0x6e, 0x00, 0x59, 0x6f, 0xb7, 0x03, 0xa8, 0x7a, 0x37, 0xb3, 0x71, 0x99, 0x9a, 0x97, 0xc5, - 0xcb, 0xe9, 0xa0, 0xf0, 0x68, 0x5e, 0x44, 0x4e, 0x07, 0xb9, 0xca, 0x3c, 0xe4, 0xc9, 0x0d, 0x82, - 0xc1, 0x8a, 0x7e, 0xff, 0xcc, 0x34, 0x17, 0x6f, 0xda, 0xd5, 0x78, 0x35, 0xbc, 0x2d, 0x91, 0x64, - 0xfa, 0xf5, 0xd3, 0xa1, 0x9d, 0xac, 0x71, 0x0a, 0xf6, 0xb4, 0xa1, 0x29, 0x8f, 0x67, 0x37, 0xac, - 0xd8, 0xed, 0x76, 0x2e, 0x35, 0x68, 0xf0, 0x95, 0x44, 0xbb, 0x61, 0x4c, 0x0c, 0x17, 0xa9, 0x37, - 0x86, 0x4b, 0xf2, 0xdd, 0x30, 0x8e, 0x8f, 0x51, 0xec, 0x86, 0xc5, 0x11, 0x1c, 0xc3, 0x7a, 0x64, - 0x8e, 0x58, 0xcd, 0x34, 0x46, 0xed, 0x5b, 0xfa, 0x1f, 0x42, 0x03, 0xde, 0xd9, 0xa5, 0x5f, 0xf8, - 0xda, 0xd8, 0xd8, 0xdc, 0xca, 0x13, 0x21, 0xbf, 0x69, 0xd9, 0x3b, 0xba, 0xbf, 0x71, 0xdf, 0x7b, - 0x52, 0x84, 0xc6, 0x85, 0x5d, 0xc2, 0x79, 0x34, 0x9a, 0xd7, 0x9b, 0x8f, 0x3c, 0xcb, 0xe8, 0xd2, - 0xa8, 0x8b, 0xde, 0xa3, 0x72, 0x1d, 0xcc, 0xd2, 0xe0, 0x8b, 0x55, 0xe4, 0xb8, 0xa8, 0x4d, 0x23, - 0x56, 0xf0, 0x89, 0xca, 0x19, 0x98, 0xa1, 0x09, 0x4b, 0x46, 0x07, 0x39, 0x34, 0x68, 0x05, 0x97, - 0xa6, 0x9c, 0x84, 0xbc, 0xe1, 0xdc, 0xe3, 0x58, 0x26, 0xf6, 0xff, 0x9f, 0xd4, 0xe8, 0x9b, 0x72, - 0x03, 0x1c, 0xa5, 0xf9, 0x02, 0x63, 0x95, 0x1c, 0xd8, 0xe9, 0x4d, 0x56, 0x3f, 0x3f, 0xcc, 0xc4, - 0x21, 0x71, 0x3c, 0x5e, 0x0f, 0x85, 0xdd, 0x56, 0x0b, 0xa1, 0x36, 0x3d, 0xd9, 0xe4, 0xbf, 0x26, - 0x8c, 0xd4, 0x9b, 0x78, 0x9a, 0x71, 0x48, 0xa1, 0x7a, 0x3f, 0x7a, 0x02, 0xf2, 0xe4, 0xda, 0x0b, - 0xf5, 0xe5, 0x73, 0x7d, 0x95, 0x71, 0x8e, 0x57, 0xc6, 0x0d, 0x98, 0x31, 0x2d, 0xaf, 0xb8, 0x75, - 0xdd, 0xd6, 0x77, 0x9c, 0xb8, 0x55, 0x44, 0x42, 0x37, 0x18, 0x32, 0xaa, 0xcc, 0x6f, 0x2b, 0x47, - 0x34, 0x8e, 0x8c, 0xf2, 0xbf, 0xc1, 0xd1, 0xf3, 0x34, 0x02, 0x80, 0x43, 0x29, 0x4b, 0xd1, 0x3e, - 0x76, 0x3d, 0x94, 0x17, 0xf8, 0x3f, 0x57, 0x8e, 0x68, 0xbd, 0xc4, 0x94, 0x9f, 0x82, 0x39, 0xef, - 0xb5, 0x6d, 0x5d, 0xf4, 0x19, 0x97, 0xa3, 0x0d, 0x8d, 0x1e, 0xf2, 0x6b, 0xdc, 0x8f, 0x2b, 0x47, - 0xb4, 0x1e, 0x52, 0x4a, 0x0d, 0x60, 0xdb, 0xdd, 0xe9, 0x50, 0xc2, 0xd9, 0x68, 0x95, 0xec, 0x21, - 0xbc, 0x12, 0xfc, 0xb4, 0x72, 0x44, 0x63, 0x48, 0x28, 0xab, 0x30, 0xe5, 0x3e, 0xe0, 0x52, 0x7a, - 0xb9, 0xe8, 0xcd, 0xed, 0x1e, 0x7a, 0x0d, 0xff, 0x9f, 0x95, 0x23, 0x5a, 0x48, 0x40, 0xa9, 0xc0, - 0x64, 0xf7, 0x3c, 0x25, 0x96, 0xef, 0x73, 0x01, 0x7a, 0x7f, 0x62, 0xeb, 0xe7, 0x03, 0x5a, 0xc1, - 0xef, 0x1e, 0x63, 0x2d, 0x67, 0x8f, 0xd2, 0x9a, 0x10, 0x66, 0xac, 0xe4, 0xff, 0xe3, 0x31, 0x16, - 0x10, 0x50, 0x2a, 0x30, 0xe5, 0x98, 0x7a, 0xd7, 0xd9, 0xb6, 0x5c, 0xe7, 0xd4, 0x64, 0x8f, 0x1f, - 0x64, 0x34, 0xb5, 0x3a, 0xfd, 0x47, 0x0b, 0xff, 0x56, 0x9e, 0x08, 0x27, 0x76, 0xf1, 0xf5, 0xa1, - 0xe5, 0x07, 0x0c, 0xc7, 0x35, 0xcc, 0x2d, 0x3f, 0x86, 0x2c, 0xe9, 0x4d, 0xfa, 0x7f, 0x54, 0xe6, - 0xe9, 0x89, 0x28, 0xc0, 0x6d, 0x53, 0xed, 0xdd, 0x8c, 0x23, 0xc5, 0x32, 0x07, 0xa1, 0x9e, 0x0a, - 0x59, 0xef, 0x13, 0x3e, 0xb3, 0x39, 0xd7, 0x7f, 0xa1, 0xaf, 0x57, 0x77, 0x70, 0x03, 0xf6, 0x7e, - 0xf2, 0xc6, 0x46, 0xd3, 0x5a, 0xb7, 0xad, 0x2d, 0x1b, 0x39, 0x0e, 0x75, 0x38, 0x64, 0x52, 0xbc, - 0x06, 0x6e, 0x38, 0xe4, 0xe2, 0xf8, 0xd0, 0xdf, 0x9d, 0x4d, 0x22, 0xb3, 0xcd, 0x2a, 0xba, 0x88, - 0x1d, 0x82, 0xf1, 0xf9, 0x1b, 0x3c, 0xdb, 0xf4, 0x53, 0xd4, 0xeb, 0x61, 0x86, 0x6d, 0x64, 0xe4, - 0xee, 0x2c, 0x23, 0xb4, 0xbd, 0xe8, 0x9b, 0x7a, 0x1d, 0xcc, 0xf1, 0x3a, 0xcd, 0x0c, 0x31, 0xb2, - 0xdf, 0x15, 0xaa, 0xd7, 0xc2, 0xd1, 0x9e, 0x86, 0xe5, 0xc7, 0x14, 0xc9, 0x84, 0x31, 0x45, 0xae, - 0x01, 0x08, 0xb5, 0xb8, 0x2f, 0x99, 0xab, 0x61, 0x2a, 0xd0, 0xcb, 0xbe, 0x19, 0xbe, 0x96, 0x81, - 0x49, 0x5f, 0xd9, 0xfa, 0x65, 0xf0, 0xc6, 0x17, 0x93, 0xd9, 0x40, 0xa0, 0xd3, 0x6c, 0x2e, 0xcd, - 0x1b, 0x47, 0x42, 0xb7, 0xdd, 0x86, 0xe1, 0x76, 0xfc, 0xa3, 0x6f, 0xbd, 0xc9, 0xca, 0x3a, 0x80, - 0x81, 0x31, 0x6a, 0x84, 0x67, 0xe1, 0x6e, 0x49, 0xd0, 0x1e, 0x88, 0x3e, 0x30, 0x34, 0xce, 0xfc, - 0x18, 0x3d, 0xa8, 0x36, 0x05, 0xb9, 0xfa, 0x7a, 0xb1, 0x54, 0x2e, 0x1c, 0x51, 0xe6, 0x00, 0xca, - 0xcf, 0x58, 0x2f, 0x6b, 0x95, 0x72, 0xb5, 0x54, 0x2e, 0x64, 0xd4, 0x57, 0x49, 0x30, 0x15, 0x34, - 0x82, 0xbe, 0x95, 0x2c, 0x53, 0xd5, 0x1a, 0x78, 0x3d, 0xd1, 0xfe, 0x46, 0xc5, 0x2a, 0xd9, 0x53, - 0xe0, 0xf2, 0x5d, 0x07, 0x2d, 0x19, 0xb6, 0xe3, 0x6a, 0xd6, 0xc5, 0x25, 0xcb, 0x0e, 0xa2, 0x26, - 0xfb, 0xd7, 0xf4, 0x47, 0x7c, 0xf6, 0x2c, 0x8a, 0x36, 0xc2, 0x87, 0xa2, 0x90, 0x4d, 0x57, 0x86, - 0xc3, 0x04, 0x8f, 0xae, 0x4b, 0xee, 0xc5, 0x77, 0x90, 0x66, 0x5d, 0x74, 0x8a, 0x66, 0xbb, 0x64, - 0x75, 0x76, 0x77, 0x4c, 0x87, 0xda, 0x04, 0x51, 0x9f, 0x3d, 0xe9, 0xe0, 0xcb, 0xc7, 0xe6, 0x00, - 0x4a, 0xb5, 0xd5, 0xd5, 0x72, 0xa9, 0x51, 0xa9, 0x55, 0x0b, 0x47, 0x3c, 0x69, 0x35, 0x8a, 0x0b, - 0xab, 0x9e, 0x74, 0x7e, 0x1a, 0x26, 0xfd, 0x36, 0x4d, 0xc3, 0xa0, 0x64, 0xfc, 0x30, 0x28, 0x4a, - 0x11, 0x26, 0xfd, 0x56, 0x4e, 0x47, 0x84, 0x47, 0xf7, 0x1e, 0x7b, 0xdd, 0xd1, 0x6d, 0x17, 0xfb, - 0x4b, 0xfb, 0x44, 0x16, 0x74, 0x07, 0x69, 0xc1, 0x6f, 0x67, 0x1e, 0x47, 0x39, 0x50, 0x60, 0xae, - 0xb8, 0xba, 0xda, 0xac, 0x69, 0xcd, 0x6a, 0xad, 0xb1, 0x52, 0xa9, 0x2e, 0x93, 0x11, 0xb2, 0xb2, - 0x5c, 0xad, 0x69, 0x65, 0x32, 0x40, 0xd6, 0x0b, 0x19, 0x72, 0xf9, 0xdd, 0xc2, 0x24, 0xe4, 0xbb, - 0x58, 0xba, 0xea, 0x97, 0xe5, 0x84, 0xe7, 0xdd, 0x03, 0x9c, 0x22, 0xae, 0xe7, 0xe2, 0x7c, 0xce, - 0xa5, 0x3e, 0x67, 0x42, 0xcf, 0xc0, 0x0c, 0xb1, 0xe5, 0x1c, 0xbc, 0x7c, 0x4f, 0x6f, 0xb8, 0xe5, - 0xd2, 0xd4, 0x8f, 0x4b, 0x09, 0x0e, 0xc1, 0xf7, 0xe5, 0x28, 0x99, 0x71, 0xf1, 0x67, 0xc3, 0x5c, - 0x76, 0xa7, 0xc0, 0x5c, 0xa5, 0xda, 0x28, 0x6b, 0xd5, 0xe2, 0x2a, 0xcd, 0x22, 0x2b, 0xa7, 0xe0, - 0x78, 0xb5, 0x46, 0x63, 0xfa, 0xd5, 0xf1, 0xb5, 0xda, 0x6b, 0xeb, 0x35, 0xad, 0x51, 0xc8, 0x29, - 0x27, 0x41, 0x21, 0xcf, 0xdc, 0xad, 0xf5, 0x79, 0xe5, 0x31, 0x70, 0xed, 0x6a, 0x65, 0xad, 0xd2, - 0x68, 0xd6, 0x96, 0x9a, 0x5a, 0xed, 0x5c, 0xdd, 0x43, 0x50, 0x2b, 0xaf, 0x16, 0x3d, 0x45, 0x62, - 0x2e, 0xc1, 0x9b, 0x50, 0x2e, 0x83, 0xa3, 0xf8, 0x82, 0x4b, 0x7c, 0xf3, 0x3d, 0x29, 0x6f, 0x52, - 0xb9, 0x0a, 0x4e, 0x55, 0xaa, 0xf5, 0x8d, 0xa5, 0xa5, 0x4a, 0xa9, 0x52, 0xae, 0x36, 0x9a, 0xeb, - 0x65, 0x6d, 0xad, 0x52, 0xaf, 0x7b, 0xff, 0x16, 0xa6, 0xf0, 0x15, 0x63, 0xa4, 0xcf, 0x54, 0xdf, - 0x2f, 0xc3, 0xec, 0x59, 0xbd, 0x63, 0x78, 0x03, 0x05, 0xbe, 0x7b, 0xb0, 0xe7, 0xb8, 0x88, 0x8b, - 0xef, 0x28, 0xa4, 0x0e, 0xe7, 0xf8, 0x45, 0xfd, 0x39, 0x39, 0xe1, 0x71, 0x11, 0x0a, 0x04, 0x29, - 0x71, 0x9e, 0x2b, 0x2d, 0x62, 0x72, 0xf3, 0x06, 0x29, 0xc1, 0x71, 0x11, 0x71, 0xf2, 0xc9, 0xc0, - 0x7f, 0xf5, 0xa8, 0xc0, 0x2f, 0xc0, 0xcc, 0x46, 0xb5, 0xb8, 0xd1, 0x58, 0xa9, 0x69, 0x95, 0x9f, - 0xc4, 0xd1, 0xc6, 0x67, 0x61, 0x6a, 0xa9, 0xa6, 0x2d, 0x54, 0x16, 0x17, 0xcb, 0xd5, 0x42, 0x4e, - 0xb9, 0x1c, 0x2e, 0xab, 0x97, 0xb5, 0xb3, 0x95, 0x52, 0xb9, 0xb9, 0x51, 0x2d, 0x9e, 0x2d, 0x56, - 0x56, 0x71, 0x1f, 0x91, 0x8f, 0xb9, 0x37, 0x71, 0x42, 0xfd, 0x99, 0x2c, 0x00, 0xa9, 0xba, 0x67, - 0x49, 0xb3, 0xb7, 0xeb, 0xfd, 0x79, 0xd2, 0x49, 0x43, 0x48, 0x26, 0xa2, 0xfd, 0x56, 0x60, 0xd2, - 0xa6, 0x1f, 0xe8, 0xf2, 0xc9, 0x20, 0x3a, 0xe4, 0xd1, 0xa7, 0xa6, 0x05, 0xbf, 0xab, 0x1f, 0x48, - 0x32, 0x47, 0x88, 0x64, 0x2c, 0x19, 0x92, 0x4b, 0xa3, 0x01, 0x52, 0x7d, 0x71, 0x06, 0xe6, 0xf8, - 0x8a, 0x79, 0x95, 0xc0, 0xc6, 0x94, 0x58, 0x25, 0xf8, 0x9f, 0x19, 0x23, 0xeb, 0xcc, 0x13, 0xe8, - 0x70, 0x0a, 0x7e, 0xcb, 0x24, 0x27, 0xbf, 0x7d, 0x8b, 0xa5, 0x90, 0xf1, 0x98, 0xf7, 0x8c, 0x0e, - 0x72, 0xb5, 0x7a, 0xe3, 0x01, 0xb7, 0x20, 0xab, 0x5f, 0x93, 0x61, 0x96, 0xbb, 0xbe, 0x4f, 0x7d, - 0x43, 0x46, 0xe4, 0x6a, 0x2d, 0xe6, 0x62, 0xc0, 0xcc, 0x41, 0x2f, 0x06, 0x3c, 0x73, 0x33, 0x4c, - 0xd0, 0x34, 0x2c, 0xdf, 0x5a, 0xd5, 0x33, 0x05, 0x8e, 0xc2, 0xf4, 0x72, 0xb9, 0xd1, 0xac, 0x37, - 0x8a, 0x5a, 0xa3, 0xbc, 0x58, 0xc8, 0x78, 0x03, 0x5f, 0x79, 0x6d, 0xbd, 0x71, 0x5f, 0x41, 0x4a, - 0xee, 0x81, 0xd7, 0xcb, 0xc8, 0x98, 0x3d, 0xf0, 0xe2, 0x8a, 0x4f, 0x7f, 0xae, 0xfa, 0x59, 0x19, - 0x0a, 0x84, 0x83, 0xf2, 0x03, 0x5d, 0x64, 0x1b, 0xc8, 0x6c, 0x21, 0xf5, 0x82, 0x48, 0xc4, 0xcf, - 0x7d, 0xb1, 0xf0, 0x70, 0x7f, 0xce, 0x58, 0x89, 0xe4, 0xa5, 0xc7, 0xc0, 0xce, 0xee, 0x33, 0xb0, - 0x3f, 0x93, 0xd4, 0x05, 0xaf, 0x97, 0xdd, 0x91, 0x40, 0xf6, 0xa9, 0x24, 0x2e, 0x78, 0x03, 0x38, - 0x18, 0x4b, 0x20, 0xdf, 0x88, 0xf1, 0xb7, 0x20, 0xab, 0x2f, 0x92, 0xe1, 0xe8, 0xa2, 0xee, 0xa2, - 0x85, 0x4b, 0x0d, 0x63, 0x07, 0x39, 0xae, 0xbe, 0xd3, 0x8d, 0xb8, 0x12, 0x2f, 0xb3, 0xef, 0x4a, - 0x3c, 0xd7, 0xff, 0x03, 0x73, 0x2a, 0x6b, 0x61, 0x82, 0xfa, 0x9e, 0xa4, 0x87, 0xf6, 0x7a, 0x78, - 0x18, 0x59, 0xb4, 0xdd, 0x64, 0x87, 0xf1, 0xe2, 0xb9, 0x18, 0xc3, 0x0d, 0xb5, 0x53, 0x50, 0x20, - 0xac, 0x30, 0x5e, 0x66, 0xbf, 0x4c, 0x6f, 0x91, 0x6c, 0x26, 0x08, 0xea, 0xe7, 0x87, 0x49, 0x90, - 0xf8, 0x30, 0x09, 0xdc, 0xa2, 0xa5, 0xdc, 0xeb, 0x19, 0x90, 0xb4, 0x33, 0x64, 0x5c, 0xca, 0xa2, - 0xe3, 0xa8, 0xa6, 0xd7, 0x19, 0xc6, 0x16, 0x3f, 0x9e, 0x9b, 0xce, 0xe8, 0x5d, 0x86, 0x65, 0x51, - 0x64, 0xe2, 0x2f, 0x74, 0x4c, 0xea, 0x5f, 0xcc, 0xb9, 0xf4, 0xc5, 0xdc, 0x72, 0x98, 0x9e, 0x7f, - 0xf1, 0x20, 0x0e, 0xd2, 0x47, 0xe1, 0x07, 0x12, 0x64, 0xeb, 0x96, 0xed, 0x8e, 0x0a, 0x83, 0xa4, - 0x7b, 0xa2, 0x8c, 0x04, 0xea, 0xd1, 0x73, 0xce, 0xf4, 0xf6, 0x44, 0xe3, 0xcb, 0x1f, 0x43, 0x5c, - 0xc4, 0xa3, 0x30, 0x47, 0x38, 0x09, 0x2e, 0x0d, 0xf9, 0x37, 0x89, 0xf4, 0x57, 0xf7, 0x8a, 0x22, - 0x72, 0x06, 0x66, 0x98, 0x3d, 0xc9, 0xe0, 0xc2, 0x6c, 0x36, 0x4d, 0x7d, 0x33, 0x8b, 0xcb, 0x22, - 0x8f, 0x4b, 0xbf, 0x19, 0x77, 0x70, 0xef, 0xc6, 0xa8, 0x7a, 0xa6, 0x24, 0x21, 0x16, 0x63, 0x0a, - 0x4f, 0x1f, 0x91, 0x07, 0x65, 0xc8, 0x53, 0x9f, 0xb0, 0x91, 0x22, 0x90, 0xb4, 0x65, 0x04, 0x42, - 0x10, 0xf3, 0x1d, 0x93, 0x47, 0xdd, 0x32, 0xe2, 0xcb, 0x4f, 0x1f, 0x87, 0x7f, 0xa7, 0xce, 0x8e, - 0xc5, 0x3d, 0xdd, 0xe8, 0xe8, 0xe7, 0x3b, 0x09, 0x42, 0x1b, 0x7f, 0x3c, 0xe1, 0xf1, 0xae, 0xa0, - 0xaa, 0x5c, 0x79, 0x11, 0x12, 0xff, 0x09, 0x98, 0xb2, 0x83, 0x25, 0x49, 0xff, 0xf4, 0x7b, 0x8f, - 0xa3, 0x29, 0xfd, 0xae, 0x85, 0x39, 0x13, 0x9d, 0xe5, 0x12, 0xe2, 0x67, 0x2c, 0x67, 0x4f, 0xa6, - 0x8b, 0xed, 0xf6, 0x12, 0xd2, 0xdd, 0x5d, 0x1b, 0xb5, 0x13, 0x0d, 0x11, 0xbc, 0x88, 0xa6, 0x58, - 0x49, 0x70, 0xc1, 0x05, 0x57, 0x79, 0x74, 0x9e, 0x34, 0xa0, 0x37, 0xf0, 0x79, 0x19, 0x49, 0x97, - 0xf4, 0xf6, 0x00, 0x92, 0x1a, 0x07, 0xc9, 0x53, 0x87, 0x63, 0x22, 0x7d, 0x40, 0x7e, 0x55, 0x86, - 0x39, 0x62, 0x27, 0x8c, 0x1a, 0x93, 0xdf, 0x4d, 0xe8, 0x43, 0xc2, 0x5c, 0xcb, 0xc4, 0xb2, 0x33, - 0x12, 0x58, 0x92, 0x78, 0x9c, 0x88, 0xf1, 0x91, 0x3e, 0x32, 0x9f, 0xcf, 0x03, 0x30, 0x7e, 0x81, - 0x1f, 0xcf, 0x87, 0x81, 0xfe, 0xd4, 0x77, 0xd2, 0xf9, 0x47, 0x9d, 0x8b, 0x3a, 0xcd, 0xf8, 0xfc, - 0x05, 0x1b, 0x52, 0x7c, 0xa2, 0xd0, 0xa8, 0xf2, 0x67, 0x09, 0x6d, 0x5e, 0xea, 0x95, 0x37, 0x70, - 0x70, 0x1f, 0xb2, 0x97, 0xfb, 0x44, 0x02, 0xe3, 0x77, 0x10, 0x2b, 0xc9, 0x50, 0x5b, 0x1d, 0x62, - 0x66, 0x7f, 0x0a, 0x8e, 0x6b, 0xe5, 0xe2, 0x62, 0xad, 0xba, 0x7a, 0x1f, 0x7b, 0x47, 0x4f, 0x41, - 0x66, 0x27, 0x27, 0xa9, 0xc0, 0xf6, 0xc6, 0x84, 0x7d, 0x20, 0x2f, 0xab, 0xb8, 0xd9, 0x0a, 0xb3, - 0xb8, 0x32, 0xb8, 0x57, 0x13, 0x20, 0x7b, 0x98, 0x28, 0x3c, 0x08, 0x4c, 0x33, 0x7a, 0x81, 0x0c, - 0x85, 0xf0, 0x9a, 0x78, 0x7a, 0x19, 0x5b, 0x8d, 0x77, 0x1b, 0xec, 0x92, 0xfd, 0xa7, 0xd0, 0x6d, - 0xd0, 0x4f, 0x50, 0xae, 0x87, 0xb9, 0xd6, 0x36, 0x6a, 0x5d, 0xa8, 0x98, 0xfe, 0xbe, 0x3a, 0xd9, - 0x84, 0xed, 0x49, 0xe5, 0x81, 0xb9, 0x97, 0x07, 0x86, 0x9f, 0x44, 0x73, 0x83, 0x34, 0xcb, 0x54, - 0x04, 0x2e, 0x7f, 0x10, 0xe0, 0x52, 0xe5, 0x70, 0xb9, 0x7d, 0x28, 0xaa, 0xc9, 0x60, 0xa9, 0x0e, - 0x01, 0x8b, 0x0a, 0x27, 0x6b, 0xeb, 0x8d, 0x4a, 0xad, 0xda, 0xdc, 0xa8, 0x97, 0x17, 0x9b, 0x0b, - 0x3e, 0x38, 0xf5, 0x82, 0xac, 0x7e, 0x4b, 0x82, 0x09, 0xc2, 0x96, 0xd3, 0x73, 0xad, 0x7b, 0xbc, - 0xbf, 0xa4, 0xfa, 0x0e, 0xe1, 0xe8, 0x07, 0x81, 0x20, 0x68, 0x39, 0x11, 0xfd, 0xd4, 0x53, 0x60, - 0x82, 0x80, 0xec, 0xaf, 0x68, 0x9d, 0x8e, 0xe8, 0xa5, 0x28, 0x19, 0xcd, 0xcf, 0x2e, 0x18, 0x09, - 0x61, 0x00, 0x1b, 0xe9, 0x8f, 0x2c, 0xcf, 0xce, 0x12, 0x33, 0xf8, 0x9c, 0xe1, 0x6e, 0x63, 0x77, - 0x4a, 0xf5, 0xe9, 0x22, 0xcb, 0x8b, 0x37, 0x41, 0x6e, 0xcf, 0xcb, 0x3d, 0xc0, 0x35, 0x95, 0x64, - 0x52, 0x5f, 0x2d, 0x1c, 0x78, 0x93, 0xd3, 0xcf, 0x80, 0xa7, 0x08, 0x70, 0xd6, 0x20, 0xdb, 0x31, - 0x1c, 0x97, 0x8e, 0x1f, 0xb7, 0x25, 0x22, 0xe4, 0x3f, 0x54, 0x5c, 0xb4, 0xa3, 0x61, 0x32, 0xea, - 0x3d, 0x30, 0xc3, 0xa6, 0x0a, 0xb8, 0xe7, 0x9e, 0x82, 0x09, 0x7a, 0x6c, 0x8c, 0x2e, 0xb1, 0xfa, - 0xaf, 0x82, 0xcb, 0x9a, 0x42, 0xb5, 0x4d, 0x5f, 0x07, 0xfe, 0xdf, 0xa3, 0x30, 0xb1, 0x62, 0x38, - 0xae, 0x65, 0x5f, 0x52, 0x1f, 0xce, 0xc0, 0xc4, 0x59, 0x64, 0x3b, 0x86, 0x65, 0xee, 0x73, 0x35, - 0xb8, 0x06, 0xa6, 0xbb, 0x36, 0xda, 0x33, 0xac, 0x5d, 0x27, 0x5c, 0x9c, 0x61, 0x93, 0x14, 0x15, - 0x26, 0xf5, 0x5d, 0x77, 0xdb, 0xb2, 0xc3, 0x68, 0x13, 0xfe, 0xbb, 0x72, 0x1a, 0x80, 0x3c, 0x57, - 0xf5, 0x1d, 0x44, 0x1d, 0x28, 0x98, 0x14, 0x45, 0x81, 0xac, 0x6b, 0xec, 0x20, 0x1a, 0x7e, 0x16, - 0x3f, 0x7b, 0x02, 0xc6, 0xa1, 0xdc, 0x68, 0xc8, 0x3c, 0x59, 0xf3, 0x5f, 0xd5, 0x2f, 0xca, 0x30, - 0xbd, 0x8c, 0x5c, 0xca, 0xaa, 0xa3, 0xbe, 0x24, 0x23, 0x74, 0xe3, 0x83, 0x37, 0xc6, 0x76, 0x74, - 0xc7, 0xff, 0x2f, 0x58, 0x82, 0xe5, 0x13, 0xc3, 0x58, 0xb8, 0x32, 0x1b, 0x08, 0x1b, 0x07, 0x46, - 0x73, 0x2b, 0xc4, 0xef, 0x92, 0x66, 0xa6, 0x9b, 0x20, 0xfb, 0x3f, 0xa8, 0xef, 0x95, 0x44, 0x0f, - 0x15, 0x53, 0xd9, 0xcf, 0x33, 0xf5, 0x89, 0xec, 0x8e, 0x26, 0xf7, 0x68, 0x8e, 0x7d, 0x31, 0xce, - 0x59, 0x4a, 0x94, 0x8c, 0x16, 0xe4, 0x16, 0x3c, 0x8e, 0x3c, 0x98, 0x93, 0xf4, 0xb5, 0xf1, 0x7b, - 0x32, 0x4c, 0xd7, 0xb7, 0xad, 0x8b, 0xbe, 0x1c, 0x7f, 0x5a, 0x0c, 0xd8, 0xab, 0x60, 0x6a, 0xaf, - 0x07, 0xd4, 0x30, 0x21, 0xfa, 0x0e, 0x76, 0xf5, 0xf9, 0x72, 0x52, 0x98, 0x18, 0xe6, 0x46, 0x7e, - 0x43, 0xba, 0xf2, 0x24, 0x98, 0xa0, 0x5c, 0xd3, 0x25, 0x97, 0x78, 0x80, 0xfd, 0xcc, 0x6c, 0x05, - 0xb3, 0x7c, 0x05, 0x93, 0x21, 0x1f, 0x5d, 0xb9, 0xf4, 0x91, 0xff, 0x63, 0x09, 0x07, 0xa3, 0xf0, - 0x81, 0x2f, 0x8d, 0x00, 0x78, 0xf5, 0xfb, 0x19, 0xd1, 0x85, 0xc9, 0x40, 0x02, 0x01, 0x07, 0x07, - 0xba, 0xcd, 0x65, 0x20, 0xb9, 0xf4, 0xe5, 0xf9, 0xaa, 0x2c, 0xcc, 0x2c, 0x1a, 0x9b, 0x9b, 0x41, - 0x27, 0xf9, 0x52, 0xc1, 0x4e, 0x32, 0xda, 0x1d, 0xc0, 0xb3, 0x73, 0x77, 0x6d, 0x1b, 0x99, 0x7e, - 0xa5, 0x68, 0x73, 0xea, 0x49, 0x55, 0x6e, 0x80, 0xa3, 0xfe, 0xb8, 0xc0, 0x76, 0x94, 0x53, 0x5a, - 0x6f, 0xb2, 0xfa, 0x5d, 0xe1, 0x5d, 0x2d, 0x5f, 0xa2, 0x6c, 0x95, 0x22, 0x1a, 0xe0, 0x1d, 0x30, - 0xbb, 0x4d, 0x72, 0xe3, 0xa9, 0xbf, 0xdf, 0x59, 0x9e, 0xec, 0x09, 0xf6, 0xbb, 0x86, 0x1c, 0x47, - 0xdf, 0x42, 0x1a, 0x9f, 0xb9, 0xa7, 0xf9, 0xca, 0x49, 0xae, 0xae, 0x12, 0xdb, 0x20, 0x13, 0xa8, - 0xc9, 0x18, 0xb4, 0xe3, 0x0c, 0x64, 0x97, 0x8c, 0x0e, 0x52, 0x5f, 0x28, 0xc1, 0x94, 0x86, 0x5a, - 0x96, 0xd9, 0xf2, 0xde, 0x18, 0xe7, 0xa0, 0x7f, 0xcc, 0x88, 0x5e, 0xd9, 0xe8, 0xd1, 0x99, 0x0f, - 0x68, 0x44, 0xb4, 0x1b, 0xb1, 0xab, 0x19, 0x63, 0x49, 0x8d, 0xe1, 0x82, 0x0d, 0x6f, 0xea, 0xb1, - 0xb9, 0xd9, 0xb1, 0x74, 0x6e, 0xf1, 0xab, 0xd7, 0x14, 0xba, 0x11, 0x0a, 0xfe, 0x19, 0x0f, 0xcb, - 0x5d, 0x37, 0x4c, 0x33, 0x38, 0x44, 0xbc, 0x2f, 0x9d, 0xdf, 0xb7, 0x8d, 0x8d, 0xc3, 0x82, 0xeb, - 0x4e, 0x4b, 0x8f, 0xd0, 0xec, 0xeb, 0x61, 0xee, 0xfc, 0x25, 0x17, 0x39, 0x34, 0x17, 0x2d, 0x36, - 0xab, 0xf5, 0xa4, 0x32, 0x51, 0x94, 0xe3, 0xe2, 0xb5, 0xc4, 0x14, 0x98, 0x4c, 0xd4, 0x2b, 0x43, - 0xcc, 0x00, 0x8f, 0x43, 0xa1, 0x5a, 0x5b, 0x2c, 0x63, 0x5f, 0x35, 0xdf, 0xfb, 0x67, 0x4b, 0x7d, - 0x99, 0x0c, 0x33, 0xd8, 0x99, 0xc4, 0x47, 0xe1, 0x5a, 0x81, 0xf9, 0x88, 0xfa, 0x15, 0x61, 0x3f, - 0x36, 0x5c, 0x65, 0xb6, 0x80, 0x68, 0x41, 0x6f, 0x1a, 0x9d, 0x5e, 0x41, 0xe7, 0xb4, 0x9e, 0xd4, - 0x3e, 0x80, 0xc8, 0x7d, 0x01, 0xf9, 0x6d, 0x21, 0x67, 0xb6, 0x41, 0xdc, 0x1d, 0x16, 0x2a, 0xbf, - 0x23, 0xc3, 0xb4, 0x37, 0x49, 0xf1, 0x41, 0xa9, 0x71, 0xa0, 0x58, 0x66, 0xe7, 0x52, 0xb8, 0x2c, - 0xe2, 0xbf, 0x26, 0x6a, 0x24, 0x7f, 0x29, 0x3c, 0x73, 0xc7, 0x22, 0x62, 0x78, 0x19, 0x13, 0x7e, - 0x1f, 0x14, 0x9a, 0xcf, 0x0f, 0x60, 0xee, 0xb0, 0xe0, 0xfb, 0x46, 0x0e, 0xf2, 0x1b, 0x5d, 0x8c, - 0xdc, 0xab, 0x65, 0x91, 0x88, 0xe4, 0xfb, 0x0e, 0x32, 0x78, 0x66, 0x56, 0xc7, 0x6a, 0xe9, 0x9d, - 0xf5, 0xf0, 0x44, 0x58, 0x98, 0xa0, 0xdc, 0x4e, 0x7d, 0x1b, 0xc9, 0x71, 0xba, 0xeb, 0x63, 0x83, - 0x75, 0x63, 0x19, 0x31, 0x87, 0x46, 0x6e, 0x82, 0x63, 0x6d, 0xc3, 0xd1, 0xcf, 0x77, 0x50, 0xd9, - 0x6c, 0xd9, 0x97, 0x88, 0x38, 0xe8, 0xb4, 0x6a, 0xdf, 0x07, 0xe5, 0x4e, 0xc8, 0x39, 0xee, 0xa5, - 0x0e, 0x99, 0x27, 0xb2, 0x67, 0x4c, 0x22, 0x8b, 0xaa, 0x7b, 0xd9, 0x35, 0xf2, 0x17, 0xeb, 0xa2, - 0x34, 0x21, 0x78, 0x5f, 0xf3, 0x13, 0x20, 0x6f, 0xd9, 0xc6, 0x96, 0x41, 0xee, 0xdf, 0x99, 0xdb, - 0x17, 0x93, 0x8e, 0x98, 0x02, 0x35, 0x9c, 0x45, 0xa3, 0x59, 0x95, 0x27, 0xc1, 0x94, 0xb1, 0xa3, - 0x6f, 0xa1, 0x7b, 0x0d, 0x93, 0x9c, 0xd8, 0x9b, 0xbb, 0xf5, 0xd4, 0xbe, 0xe3, 0x33, 0xf4, 0xbb, - 0x16, 0x66, 0x55, 0x3f, 0x28, 0x89, 0x06, 0xce, 0xc1, 0x75, 0x23, 0xa0, 0x8e, 0xe5, 0xde, 0x6a, - 0xf5, 0x75, 0x42, 0x21, 0x6d, 0xa2, 0xd9, 0x4a, 0x7f, 0xf0, 0xfe, 0x82, 0x04, 0x93, 0x8b, 0xd6, - 0x45, 0x13, 0x2b, 0xfa, 0x6d, 0x62, 0xb6, 0x6e, 0x9f, 0x43, 0x8e, 0xfc, 0xb5, 0x90, 0xb1, 0x27, - 0x1a, 0x70, 0x6d, 0xfd, 0x22, 0x23, 0x60, 0x88, 0x6d, 0x39, 0x82, 0x97, 0xf5, 0xc5, 0x95, 0x93, - 0xbe, 0x5c, 0xff, 0x44, 0x86, 0xec, 0xa2, 0x6d, 0x75, 0xd5, 0xb7, 0x67, 0x12, 0xb8, 0x2c, 0xb4, - 0x6d, 0xab, 0xdb, 0xc0, 0xb7, 0x6d, 0x85, 0xc7, 0x38, 0xd8, 0x34, 0xe5, 0x36, 0x98, 0xec, 0x5a, - 0x8e, 0xe1, 0xfa, 0xd3, 0x88, 0xb9, 0x5b, 0x1f, 0xd5, 0xb7, 0x35, 0xaf, 0xd3, 0x4c, 0x5a, 0x90, - 0xdd, 0xeb, 0xb5, 0xb1, 0x08, 0x3d, 0xb9, 0x78, 0x62, 0xf4, 0x6f, 0x1c, 0xeb, 0x49, 0x55, 0x5f, - 0xce, 0x22, 0xf9, 0x54, 0x1e, 0xc9, 0x47, 0xf7, 0x91, 0xb0, 0x6d, 0x75, 0x47, 0xb2, 0xc9, 0xf8, - 0x9a, 0x00, 0xd5, 0xa7, 0x71, 0xa8, 0xde, 0x28, 0x54, 0x66, 0xfa, 0x88, 0x7e, 0x30, 0x0b, 0x80, - 0xcd, 0x8c, 0x0d, 0x6f, 0x02, 0x24, 0x66, 0x63, 0x3d, 0x37, 0xcb, 0xc8, 0xb2, 0xc8, 0xcb, 0xf2, - 0xb1, 0x11, 0x56, 0x0c, 0x26, 0x1f, 0x21, 0xd1, 0x22, 0xe4, 0x76, 0xbd, 0xcf, 0x54, 0xa2, 0x82, - 0x24, 0xf0, 0xab, 0x46, 0xfe, 0x54, 0xff, 0x38, 0x03, 0x39, 0x9c, 0xa0, 0x9c, 0x06, 0xc0, 0x03, - 0x3b, 0x39, 0x10, 0x94, 0xc1, 0x43, 0x38, 0x93, 0x82, 0xb5, 0xd5, 0x68, 0xd3, 0xcf, 0xc4, 0x64, - 0x0e, 0x13, 0xbc, 0xbf, 0xf1, 0x70, 0x8f, 0x69, 0x51, 0x03, 0x80, 0x49, 0xf1, 0xfe, 0xc6, 0x6f, - 0xab, 0x68, 0x93, 0x04, 0x42, 0xce, 0x6a, 0x61, 0x42, 0xf0, 0xf7, 0x6a, 0x70, 0x7d, 0x96, 0xff, - 0x37, 0x4e, 0xf1, 0x26, 0xc3, 0x58, 0x2d, 0x17, 0xc2, 0x22, 0xf2, 0x38, 0x53, 0x6f, 0xb2, 0xfa, - 0xc6, 0x40, 0x6d, 0x16, 0x39, 0xb5, 0xb9, 0x25, 0x81, 0x78, 0xd3, 0x57, 0x9e, 0xaf, 0xe5, 0x60, - 0xaa, 0x6a, 0xb5, 0xa9, 0xee, 0x30, 0x13, 0xc6, 0x4f, 0xe5, 0x12, 0x4d, 0x18, 0x03, 0x1a, 0x11, - 0x0a, 0x72, 0x37, 0xaf, 0x20, 0x62, 0x14, 0x58, 0xfd, 0x50, 0x16, 0x20, 0x8f, 0xb5, 0x77, 0xff, - 0xbd, 0x4c, 0x71, 0x24, 0xb0, 0x68, 0x35, 0xfa, 0xe7, 0x7f, 0x38, 0x1d, 0xfb, 0xaf, 0x90, 0xc3, - 0x15, 0x8c, 0xd9, 0xdd, 0xe1, 0x2b, 0x2a, 0xc5, 0x57, 0x54, 0x8e, 0xaf, 0x68, 0xb6, 0xb7, 0xa2, - 0x49, 0xd6, 0x01, 0xa2, 0x34, 0x24, 0x7d, 0x1d, 0xff, 0x87, 0x09, 0x80, 0xaa, 0xbe, 0x67, 0x6c, - 0x91, 0xdd, 0xe1, 0x2f, 0xfa, 0xf3, 0x1f, 0xba, 0x8f, 0xfb, 0x0b, 0xcc, 0x40, 0x78, 0x1b, 0x4c, - 0xd0, 0x71, 0x8f, 0x56, 0xe4, 0x6a, 0xae, 0x22, 0x21, 0x15, 0x62, 0x96, 0x3e, 0xe0, 0x6a, 0x7e, - 0x7e, 0xee, 0x0a, 0x59, 0xa9, 0xe7, 0x0a, 0xd9, 0xfe, 0x7b, 0x10, 0x11, 0x17, 0xcb, 0xaa, 0xef, - 0x13, 0xf6, 0xe8, 0x67, 0xf8, 0x61, 0x6a, 0x14, 0xd1, 0x04, 0x9f, 0x00, 0x13, 0x56, 0xb0, 0xa1, - 0x2d, 0x47, 0xae, 0x83, 0x55, 0xcc, 0x4d, 0x4b, 0xf3, 0x73, 0x0a, 0x6e, 0x7e, 0x09, 0xf1, 0x31, - 0x96, 0x43, 0x33, 0x27, 0x97, 0xfd, 0xa0, 0x52, 0x5e, 0x3d, 0xce, 0x19, 0xee, 0xf6, 0xaa, 0x61, - 0x5e, 0x70, 0xd4, 0xff, 0x2c, 0x66, 0x41, 0x32, 0xf8, 0x4b, 0xc9, 0xf0, 0xe7, 0x63, 0x76, 0xd4, - 0x79, 0xd4, 0xee, 0x8c, 0xa2, 0xd2, 0x9f, 0xdb, 0x08, 0x00, 0x6f, 0x87, 0x3c, 0x61, 0x94, 0x76, - 0xa2, 0x67, 0x22, 0xf1, 0x0b, 0x28, 0x69, 0xf4, 0x0f, 0xf5, 0xbd, 0x01, 0x8e, 0x67, 0x39, 0x1c, - 0x17, 0x0e, 0xc4, 0x59, 0xea, 0x90, 0x9e, 0x79, 0x3c, 0x4c, 0x50, 0x49, 0x2b, 0x73, 0x6c, 0x2b, - 0x2e, 0x1c, 0x51, 0x00, 0xf2, 0x6b, 0xd6, 0x1e, 0x6a, 0x58, 0x85, 0x8c, 0xf7, 0xec, 0xf1, 0xd7, - 0xb0, 0x0a, 0x92, 0xfa, 0xda, 0x49, 0x98, 0x0c, 0xa2, 0xf9, 0x7c, 0x41, 0x82, 0x42, 0xc9, 0x46, - 0xba, 0x8b, 0x96, 0x6c, 0x6b, 0x87, 0xd4, 0x48, 0xdc, 0x3b, 0xf4, 0x57, 0x85, 0x5d, 0x3c, 0x82, - 0x28, 0x3b, 0xbd, 0x85, 0x45, 0x60, 0x49, 0x16, 0x21, 0x25, 0x7f, 0x11, 0x52, 0x7d, 0x9b, 0x90, - 0xcb, 0x87, 0x68, 0x29, 0xe9, 0x37, 0xb5, 0xcf, 0x48, 0x90, 0x2b, 0x75, 0x2c, 0x13, 0xb1, 0x47, - 0x98, 0x06, 0x9e, 0x95, 0xe9, 0xbf, 0x13, 0xa1, 0x3e, 0x5b, 0x12, 0xb5, 0x35, 0x42, 0x01, 0x78, - 0x65, 0x0b, 0xca, 0x56, 0x6c, 0x90, 0x8a, 0x25, 0x9d, 0xbe, 0x40, 0xbf, 0x25, 0xc1, 0x14, 0x89, - 0x8b, 0x53, 0xec, 0x74, 0xd4, 0x47, 0x85, 0x42, 0xed, 0x13, 0x11, 0x49, 0xfd, 0x6d, 0x61, 0x17, - 0xfd, 0xa0, 0x56, 0x01, 0xed, 0x04, 0x01, 0x82, 0x92, 0x79, 0x8c, 0x8b, 0xed, 0xa5, 0x0d, 0x64, - 0x28, 0x7d, 0x51, 0xff, 0xb9, 0xe4, 0x19, 0x00, 0xe6, 0x85, 0x75, 0x1b, 0xed, 0x19, 0xe8, 0xa2, - 0x7a, 0x65, 0x28, 0xec, 0xfd, 0x41, 0x3f, 0xde, 0x22, 0xbc, 0x88, 0xc3, 0x90, 0x8c, 0xdc, 0xca, - 0x9a, 0xee, 0x84, 0x99, 0x68, 0x2f, 0xde, 0x1b, 0x89, 0x85, 0x21, 0xa3, 0xb1, 0xd9, 0x05, 0xd7, - 0x6c, 0xa2, 0xb9, 0x48, 0x5f, 0xb0, 0x1f, 0x99, 0x80, 0xc9, 0x0d, 0xd3, 0xe9, 0x76, 0x74, 0x67, - 0x5b, 0xfd, 0x37, 0x19, 0xf2, 0xe4, 0x36, 0x30, 0xf5, 0x27, 0xb8, 0xd8, 0x02, 0xcf, 0xdc, 0x45, - 0xb6, 0xef, 0x82, 0x43, 0x5e, 0xfa, 0x5f, 0x56, 0xae, 0x7e, 0x50, 0x16, 0x9d, 0xa4, 0xfa, 0x85, - 0x32, 0xd7, 0xc2, 0xf7, 0x3f, 0xce, 0xde, 0x35, 0x5a, 0xee, 0xae, 0x1d, 0x5c, 0x7d, 0xfd, 0x38, - 0x31, 0x2a, 0xeb, 0xe4, 0x2f, 0x2d, 0xf8, 0x5d, 0xd5, 0x61, 0x82, 0x26, 0xee, 0xdb, 0x4e, 0xda, - 0x7f, 0xfe, 0xf6, 0x24, 0xe4, 0x75, 0xdb, 0x35, 0x1c, 0x97, 0x6e, 0xb0, 0xd2, 0x37, 0xaf, 0xbb, - 0x24, 0x4f, 0x1b, 0x76, 0xc7, 0x8f, 0x42, 0x12, 0x24, 0xa8, 0xbf, 0x23, 0x34, 0x7f, 0x8c, 0xaf, - 0x79, 0x32, 0xc8, 0xef, 0x1d, 0x62, 0x8d, 0xfa, 0x72, 0xb8, 0x4c, 0x2b, 0x36, 0xca, 0x4d, 0x12, - 0xb4, 0x22, 0x88, 0x4f, 0xd1, 0x56, 0xdf, 0x23, 0x33, 0xeb, 0x77, 0x97, 0xb8, 0x31, 0x82, 0x4a, - 0x31, 0x1c, 0x23, 0x82, 0x84, 0x98, 0xdd, 0x6a, 0x6e, 0x11, 0x56, 0x16, 0x5f, 0x84, 0xfd, 0x4d, - 0xe1, 0xdd, 0xa4, 0x40, 0x94, 0x03, 0xd6, 0x00, 0xe3, 0x6e, 0x0b, 0xfa, 0x90, 0xd0, 0xce, 0xd0, - 0xa0, 0x92, 0x0e, 0x11, 0xb6, 0x37, 0x4f, 0xc0, 0xc4, 0xb2, 0xde, 0xe9, 0x20, 0xfb, 0x92, 0x37, - 0x24, 0x15, 0x7c, 0x0e, 0xd7, 0x74, 0xd3, 0xd8, 0x44, 0x8e, 0x1b, 0xdf, 0x59, 0xbe, 0x4f, 0x38, - 0x12, 0x2d, 0x2d, 0x63, 0xbe, 0x97, 0x7e, 0x84, 0xcc, 0x6f, 0x86, 0xac, 0x61, 0x6e, 0x5a, 0xb4, - 0xcb, 0xec, 0x5d, 0xb5, 0xf7, 0x7f, 0xc6, 0x53, 0x17, 0x9c, 0x51, 0x30, 0x18, 0xad, 0x20, 0x17, - 0xe9, 0xf7, 0x9c, 0xbf, 0x95, 0x85, 0x59, 0x9f, 0x89, 0x8a, 0xd9, 0x46, 0x0f, 0xb0, 0x4b, 0x31, - 0x2f, 0xcb, 0x8a, 0x1e, 0x07, 0xeb, 0xad, 0x0f, 0x26, 0x15, 0x21, 0xd2, 0x06, 0x40, 0x4b, 0x77, - 0xd1, 0x96, 0x65, 0x1b, 0x41, 0x7f, 0xf8, 0xc4, 0x24, 0xd4, 0x4a, 0xe4, 0xef, 0x4b, 0x1a, 0x43, - 0x47, 0xb9, 0x13, 0xa6, 0x51, 0x70, 0xfe, 0xde, 0x5f, 0xaa, 0x89, 0xc5, 0x8b, 0xcd, 0xaf, 0xfe, - 0xb9, 0xd0, 0xa9, 0x33, 0x91, 0x6a, 0x26, 0xc3, 0xac, 0x39, 0x5c, 0x1b, 0xda, 0xa8, 0xae, 0x15, - 0xb5, 0xfa, 0x4a, 0x71, 0x75, 0xb5, 0x52, 0x5d, 0x0e, 0x02, 0xbf, 0x28, 0x30, 0xb7, 0x58, 0x3b, - 0x57, 0x65, 0x22, 0xf3, 0x64, 0xd5, 0x75, 0x98, 0xf4, 0xe5, 0xd5, 0xcf, 0x17, 0x93, 0x95, 0x19, - 0xf5, 0xc5, 0x64, 0x92, 0x3c, 0xe3, 0xcc, 0x68, 0x05, 0x0e, 0x3a, 0xf8, 0x59, 0xfd, 0x43, 0x1d, - 0x72, 0x78, 0x4d, 0x5d, 0x7d, 0x17, 0xde, 0x06, 0xec, 0x76, 0xf4, 0x16, 0x52, 0x77, 0x12, 0x58, - 0xe3, 0xfe, 0xd5, 0x08, 0xd2, 0xbe, 0xab, 0x11, 0xf0, 0x23, 0xb5, 0xfa, 0x8e, 0xf7, 0x5b, 0xc7, - 0xd7, 0x48, 0x16, 0xfe, 0x80, 0x56, 0xec, 0xee, 0x0a, 0x59, 0xfe, 0xa7, 0x6c, 0x46, 0xa8, 0x64, - 0x34, 0x4f, 0xc9, 0x2c, 0x51, 0xb1, 0x7d, 0x98, 0x38, 0x8e, 0xc6, 0x70, 0x7d, 0x77, 0x16, 0x72, - 0xf5, 0x6e, 0xc7, 0x70, 0xd5, 0x57, 0x4a, 0x23, 0xc1, 0x8c, 0x5c, 0x67, 0x21, 0x0f, 0xbc, 0xce, - 0x22, 0xdc, 0x75, 0xcd, 0x0a, 0xec, 0xba, 0x36, 0xd0, 0x03, 0x2e, 0xbf, 0xeb, 0x7a, 0x1b, 0x0d, - 0xde, 0x46, 0xf6, 0x6c, 0x1f, 0xdd, 0x47, 0xa4, 0xb8, 0x5a, 0x7d, 0xa2, 0x02, 0x9e, 0x79, 0x3c, - 0x0d, 0x4e, 0x06, 0x90, 0x5f, 0xa8, 0x35, 0x1a, 0xb5, 0xb5, 0xc2, 0x11, 0x1c, 0xd5, 0xa6, 0xb6, - 0x4e, 0x42, 0xc5, 0x54, 0xaa, 0xd5, 0xb2, 0x56, 0x90, 0x70, 0xb8, 0xb4, 0x4a, 0x63, 0xb5, 0x5c, - 0x90, 0xf9, 0xd8, 0xe6, 0xb1, 0xe6, 0x37, 0x5f, 0x76, 0x9a, 0xea, 0x25, 0x66, 0x88, 0x47, 0xf3, - 0x93, 0xbe, 0x72, 0xfd, 0x8a, 0x0c, 0xb9, 0x35, 0x64, 0x6f, 0x21, 0xf5, 0x99, 0x09, 0x36, 0xf9, - 0x36, 0x0d, 0xdb, 0x21, 0xc1, 0xe5, 0xc2, 0x4d, 0x3e, 0x36, 0x4d, 0xb9, 0x0e, 0x66, 0x1d, 0xd4, - 0xb2, 0xcc, 0xb6, 0x9f, 0x89, 0xf4, 0x47, 0x7c, 0x22, 0x7f, 0xaf, 0xbc, 0x00, 0x64, 0x98, 0xd1, - 0x91, 0xec, 0xd4, 0x25, 0x01, 0xa6, 0x5f, 0xa9, 0xe9, 0x03, 0xf3, 0x5d, 0xd9, 0xfb, 0xa9, 0x7b, - 0x49, 0x7d, 0x85, 0xf0, 0xee, 0xeb, 0x4d, 0x90, 0xc7, 0x6a, 0xea, 0x8f, 0xd1, 0xfd, 0xfb, 0x63, - 0x9a, 0x47, 0x59, 0x80, 0x63, 0x0e, 0xea, 0xa0, 0x96, 0x8b, 0xda, 0x5e, 0xd3, 0xd5, 0x06, 0x76, - 0x0a, 0xfb, 0xb3, 0xab, 0x7f, 0xca, 0x02, 0x78, 0x07, 0x0f, 0xe0, 0xf5, 0x7d, 0x44, 0xe9, 0x55, - 0x28, 0xda, 0x56, 0xf6, 0xaa, 0x51, 0xef, 0x58, 0xc1, 0xa2, 0xb8, 0xff, 0xee, 0x7d, 0xdb, 0x76, - 0x77, 0x3a, 0xf8, 0x1b, 0x3d, 0x60, 0xe0, 0xbf, 0x2b, 0xf3, 0x30, 0xa1, 0x9b, 0x97, 0xf0, 0xa7, - 0x6c, 0x4c, 0xad, 0xfd, 0x4c, 0xea, 0x6b, 0x03, 0xe4, 0xef, 0xe2, 0x90, 0x7f, 0xac, 0x18, 0xbb, - 0xe9, 0x03, 0xff, 0x73, 0x13, 0x90, 0x5b, 0xd7, 0x1d, 0x17, 0xa9, 0xff, 0x8f, 0x2c, 0x8a, 0xfc, - 0xf5, 0x30, 0xb7, 0x69, 0xb5, 0x76, 0x1d, 0xd4, 0xe6, 0x1b, 0x65, 0x4f, 0xea, 0x28, 0x30, 0x57, - 0x6e, 0x84, 0x82, 0x9f, 0x48, 0xc9, 0xfa, 0xdb, 0xf0, 0xfb, 0xd2, 0x71, 0xa4, 0x6c, 0x67, 0x5d, - 0xb7, 0xdd, 0xda, 0x26, 0x4e, 0x0b, 0x22, 0x65, 0xb3, 0x89, 0x1c, 0xf4, 0xf9, 0x18, 0xe8, 0x27, - 0xa2, 0xa1, 0x9f, 0x14, 0x80, 0x5e, 0x29, 0xc2, 0xe4, 0xa6, 0xd1, 0x41, 0xf8, 0x87, 0x29, 0xfc, - 0x43, 0xbf, 0x31, 0x09, 0xcb, 0x3e, 0x18, 0x93, 0x96, 0x8c, 0x0e, 0xd2, 0x82, 0xdf, 0xfc, 0x89, - 0x0c, 0x84, 0x13, 0x99, 0x55, 0xe2, 0x4f, 0xeb, 0x19, 0x5e, 0xa6, 0xbe, 0x83, 0xfc, 0xc5, 0x37, - 0x93, 0x1e, 0x6e, 0x69, 0xeb, 0xae, 0x8e, 0xc1, 0x98, 0xd1, 0xf0, 0x33, 0xef, 0x17, 0x22, 0xf7, - 0xfa, 0x85, 0x3c, 0x4f, 0x4e, 0xd6, 0x23, 0xfa, 0xcc, 0x46, 0xb4, 0xa8, 0xf3, 0x3e, 0x40, 0xc4, - 0x52, 0x0c, 0xde, 0x3d, 0x60, 0x5a, 0xba, 0x8d, 0xdc, 0x75, 0xd6, 0x13, 0x23, 0xa7, 0xf1, 0x89, - 0xd8, 0x95, 0xcf, 0xa9, 0xeb, 0x3b, 0x08, 0x17, 0x56, 0xf2, 0xbe, 0x51, 0x17, 0xad, 0x7d, 0xe9, - 0x61, 0xff, 0x9b, 0x1b, 0x75, 0xff, 0xdb, 0xaf, 0x8e, 0xe9, 0x37, 0xc3, 0x37, 0x64, 0x41, 0x2e, - 0xed, 0xba, 0x8f, 0xe8, 0xee, 0xf7, 0x07, 0xc2, 0x7e, 0x2e, 0xb4, 0x3f, 0x8b, 0xbc, 0x48, 0x7e, - 0x4c, 0xbd, 0x6f, 0x42, 0x2d, 0x11, 0xf3, 0xa7, 0x89, 0xaa, 0x5b, 0xfa, 0x3a, 0xf2, 0x76, 0x39, - 0x70, 0xb0, 0x7c, 0x30, 0x73, 0x70, 0xd3, 0x5c, 0x25, 0xfd, 0x13, 0xd3, 0x33, 0x04, 0xef, 0x7e, - 0xc7, 0x93, 0xe5, 0x62, 0xf5, 0xe1, 0xed, 0x75, 0x2c, 0xca, 0x19, 0x8d, 0xbc, 0xa8, 0xaf, 0x12, - 0x76, 0x3b, 0x27, 0x62, 0x8b, 0x75, 0x25, 0x4c, 0x66, 0x53, 0x89, 0x5d, 0x16, 0x1a, 0x53, 0x6c, - 0xfa, 0x80, 0x7d, 0x87, 0x75, 0x15, 0x2c, 0x1e, 0x18, 0x31, 0xf5, 0x75, 0xc2, 0xdb, 0x51, 0xa4, - 0xda, 0x03, 0xd6, 0x0b, 0x93, 0xc9, 0x5b, 0x6c, 0xb3, 0x2a, 0xb6, 0xe0, 0xf4, 0x25, 0xfe, 0x6d, - 0x19, 0xf2, 0x64, 0x0b, 0x52, 0x7d, 0x6b, 0x26, 0xc1, 0x2d, 0xeb, 0x2e, 0xef, 0x42, 0x18, 0xbc, - 0x27, 0x59, 0x73, 0xe0, 0x5c, 0x0d, 0xb3, 0x89, 0x5c, 0x0d, 0xf9, 0x73, 0x9c, 0x02, 0xed, 0x88, - 0xd4, 0x31, 0xe5, 0xe9, 0x64, 0x92, 0x16, 0xd6, 0x97, 0xa1, 0xf4, 0xf1, 0x7e, 0x41, 0x0e, 0x66, - 0x48, 0xd1, 0xe7, 0x8c, 0xf6, 0x16, 0x72, 0xd5, 0xf7, 0x48, 0x3f, 0x3c, 0xa8, 0x2b, 0x55, 0x98, - 0xb9, 0x88, 0xd9, 0x5e, 0xd5, 0x2f, 0x59, 0xbb, 0x2e, 0x5d, 0xb9, 0xb8, 0x31, 0x76, 0xdd, 0x83, - 0xd4, 0x73, 0x9e, 0xfc, 0xa1, 0x71, 0xff, 0x7b, 0x32, 0x26, 0x0b, 0xfe, 0xc4, 0x81, 0x2b, 0x8f, - 0x8d, 0x2c, 0x36, 0x49, 0x39, 0x09, 0xf9, 0x3d, 0x03, 0x5d, 0xac, 0xb4, 0xa9, 0x75, 0x4b, 0xdf, - 0xd4, 0xdf, 0x13, 0xde, 0xb7, 0x65, 0xe1, 0xa6, 0xbc, 0xa4, 0xab, 0x85, 0x62, 0xbb, 0xb7, 0x03, - 0xd9, 0x1a, 0xc3, 0x99, 0x62, 0xfe, 0x32, 0xce, 0x52, 0x02, 0x45, 0x8c, 0x32, 0x9c, 0xf9, 0x50, - 0x1e, 0xb1, 0x27, 0x56, 0x88, 0x00, 0x46, 0x7c, 0x4f, 0xa7, 0x58, 0x7c, 0x89, 0x01, 0x45, 0xa7, - 0x2f, 0xf9, 0x37, 0xca, 0x30, 0x55, 0x47, 0xee, 0x92, 0x81, 0x3a, 0x6d, 0x47, 0xb5, 0x0f, 0x6e, - 0x1a, 0xdd, 0x0c, 0xf9, 0x4d, 0x4c, 0x6c, 0xd0, 0xb9, 0x05, 0x9a, 0x4d, 0x7d, 0x83, 0x24, 0xba, - 0x23, 0x4c, 0x57, 0xdf, 0x7c, 0x6e, 0x47, 0x02, 0x93, 0x98, 0x47, 0x6f, 0x7c, 0xc9, 0x63, 0x08, - 0x6c, 0x2b, 0xc3, 0x0c, 0xbd, 0xbd, 0xaf, 0xd8, 0x31, 0xb6, 0x4c, 0x75, 0x77, 0x04, 0x2d, 0x44, - 0xb9, 0x05, 0x72, 0xba, 0x47, 0x8d, 0x6e, 0xbd, 0xaa, 0x7d, 0x3b, 0x4f, 0x5c, 0x9e, 0x46, 0x32, - 0x26, 0x08, 0x23, 0x19, 0x2a, 0xb6, 0xcf, 0xf3, 0x18, 0xc3, 0x48, 0x0e, 0x2c, 0x3c, 0x7d, 0xc4, - 0xbe, 0x2a, 0xc3, 0x71, 0xca, 0xc0, 0x59, 0x64, 0xbb, 0x46, 0x4b, 0xef, 0x10, 0xe4, 0x5e, 0x9c, - 0x19, 0x05, 0x74, 0x2b, 0x30, 0xbb, 0xc7, 0x92, 0xa5, 0x10, 0x9e, 0xe9, 0x0b, 0x21, 0xc7, 0x80, - 0xc6, 0xff, 0x98, 0x20, 0x1c, 0x1f, 0x27, 0x55, 0x8e, 0xe6, 0x18, 0xc3, 0xf1, 0x09, 0x33, 0x91, - 0x3e, 0xc4, 0x2f, 0xa7, 0xa1, 0x79, 0xc2, 0xee, 0xf3, 0x8b, 0xc2, 0xd8, 0x6e, 0xc0, 0x34, 0xc6, - 0x92, 0xfc, 0x48, 0x97, 0x21, 0x62, 0x94, 0x38, 0xe8, 0x77, 0xe8, 0x85, 0x61, 0xc1, 0xbf, 0x1a, - 0x4b, 0x47, 0x3d, 0x07, 0x10, 0x7e, 0x62, 0x3b, 0xe9, 0x4c, 0x54, 0x27, 0x2d, 0x89, 0x75, 0xd2, - 0x6f, 0x11, 0x0e, 0x96, 0xd2, 0x9f, 0xed, 0x83, 0xab, 0x87, 0x58, 0x98, 0x8c, 0xc1, 0xa5, 0xa7, - 0xaf, 0x17, 0xaf, 0xcd, 0xf6, 0x5e, 0xd3, 0xfe, 0xf1, 0x91, 0xcc, 0xa7, 0xd8, 0xfe, 0x40, 0xee, - 0xe9, 0x0f, 0x0e, 0x60, 0x49, 0xdf, 0x00, 0x47, 0x49, 0x11, 0xa5, 0x80, 0xad, 0x1c, 0x09, 0x05, - 0xd1, 0x93, 0xac, 0x7e, 0x62, 0x08, 0x25, 0x18, 0x74, 0x87, 0x7c, 0x5c, 0x27, 0x97, 0xcc, 0xd8, - 0x4d, 0xaa, 0x20, 0x87, 0x77, 0xf5, 0xfc, 0xb7, 0xb2, 0xc4, 0xda, 0xdd, 0xc0, 0x77, 0xba, 0xa9, - 0x7f, 0x91, 0x1d, 0xc5, 0x88, 0x70, 0x37, 0x64, 0xb1, 0x8b, 0xbb, 0x1c, 0xb9, 0xa4, 0x11, 0x16, - 0x19, 0x5e, 0xb8, 0x87, 0x1e, 0x70, 0x57, 0x8e, 0x68, 0xf8, 0x4f, 0xe5, 0x46, 0x38, 0x7a, 0x5e, - 0x6f, 0x5d, 0xd8, 0xb2, 0xad, 0x5d, 0x7c, 0xfb, 0x95, 0x45, 0xaf, 0xd1, 0xc2, 0xd7, 0x11, 0xf2, - 0x1f, 0x94, 0x5b, 0x7d, 0xd3, 0x21, 0x37, 0xc8, 0x74, 0x58, 0x39, 0x42, 0x8d, 0x07, 0xe5, 0xf1, - 0x41, 0xa7, 0x93, 0x8f, 0xed, 0x74, 0x56, 0x8e, 0xf8, 0xdd, 0x8e, 0xb2, 0x08, 0x93, 0x6d, 0x63, - 0x0f, 0x6f, 0x55, 0xe3, 0x59, 0xd7, 0xa0, 0xa3, 0xcb, 0x8b, 0xc6, 0x1e, 0xd9, 0xd8, 0x5e, 0x39, - 0xa2, 0x05, 0x7f, 0x2a, 0xcb, 0x30, 0x85, 0xb7, 0x05, 0x30, 0x99, 0xc9, 0x44, 0xc7, 0x92, 0x57, - 0x8e, 0x68, 0xe1, 0xbf, 0x9e, 0xf5, 0x91, 0xc5, 0x67, 0x3f, 0xee, 0xf2, 0xb7, 0xdb, 0x33, 0x89, - 0xb6, 0xdb, 0x3d, 0x59, 0x90, 0x0d, 0xf7, 0x93, 0x90, 0x6b, 0x61, 0x09, 0x4b, 0x54, 0xc2, 0xe4, - 0x55, 0xb9, 0x03, 0xb2, 0x3b, 0xba, 0xed, 0x4f, 0x9e, 0xaf, 0x1f, 0x4c, 0x77, 0x4d, 0xb7, 0x2f, - 0x78, 0x08, 0x7a, 0x7f, 0x2d, 0x4c, 0x40, 0x0e, 0x0b, 0x2e, 0x78, 0x50, 0xdf, 0x9e, 0x25, 0x66, - 0x48, 0xc9, 0x32, 0xbd, 0x61, 0xbf, 0x61, 0xf9, 0x07, 0x64, 0x7e, 0x2f, 0x33, 0x1a, 0x0b, 0xb2, - 0xef, 0xbd, 0xe6, 0x72, 0xe4, 0xbd, 0xe6, 0x3d, 0x17, 0xec, 0x66, 0x7b, 0x2f, 0xd8, 0x0d, 0x97, - 0x0f, 0x72, 0x83, 0x1d, 0x55, 0xfe, 0x74, 0x08, 0xd3, 0xa5, 0x57, 0x10, 0xd1, 0x33, 0xf0, 0x8e, - 0x61, 0x32, 0x75, 0xf6, 0x5f, 0x13, 0x76, 0x4a, 0x49, 0x8d, 0x9a, 0x01, 0xec, 0xa5, 0xdf, 0x37, - 0xfd, 0x46, 0x16, 0x4e, 0x91, 0x6b, 0x9c, 0xf7, 0x50, 0xc3, 0xe2, 0xef, 0x9b, 0x54, 0xff, 0x68, - 0x24, 0x4a, 0xd3, 0x67, 0xc0, 0x91, 0xfb, 0x0e, 0x38, 0xfb, 0x0e, 0x29, 0x67, 0x07, 0x1c, 0x52, - 0xce, 0x25, 0x5b, 0x39, 0xfc, 0x30, 0xab, 0x3f, 0xeb, 0xbc, 0xfe, 0xdc, 0x1e, 0x01, 0x50, 0x3f, - 0xb9, 0x8c, 0xc4, 0xbe, 0x79, 0x57, 0xa0, 0x29, 0x75, 0x4e, 0x53, 0xee, 0x1a, 0x9e, 0x91, 0xf4, - 0xb5, 0xe5, 0x77, 0xb3, 0x70, 0x59, 0xc8, 0x4c, 0x15, 0x5d, 0xa4, 0x8a, 0xf2, 0x85, 0x91, 0x28, - 0x4a, 0xf2, 0x18, 0x08, 0x69, 0x6b, 0xcc, 0x1f, 0x0b, 0x9f, 0x1d, 0xea, 0x05, 0x2a, 0x90, 0x4d, - 0x84, 0xb2, 0x9c, 0x84, 0x3c, 0xe9, 0x61, 0x28, 0x34, 0xf4, 0x2d, 0x61, 0x77, 0x23, 0x76, 0xe2, - 0x48, 0x94, 0xb7, 0x31, 0xe8, 0x0f, 0x5d, 0xd7, 0x68, 0xec, 0xda, 0x66, 0xc5, 0x74, 0x2d, 0xf5, - 0x67, 0x47, 0xa2, 0x38, 0x81, 0x37, 0x9c, 0x3c, 0x8c, 0x37, 0xdc, 0x50, 0xab, 0x1c, 0x7e, 0x0d, - 0x0e, 0x65, 0x95, 0x23, 0xa2, 0xf0, 0xf4, 0xf1, 0x7b, 0xa7, 0x0c, 0x27, 0xe9, 0x64, 0x6b, 0x81, - 0xb7, 0x10, 0xd5, 0xfb, 0x46, 0x01, 0xe4, 0x71, 0xdf, 0x4c, 0xa2, 0xb7, 0x9c, 0xe1, 0x17, 0xfe, - 0xa4, 0x54, 0xec, 0xfd, 0x0e, 0xdc, 0x74, 0xb0, 0x87, 0xc3, 0x91, 0x20, 0x25, 0x76, 0xad, 0x43, - 0x02, 0x36, 0xd2, 0xc7, 0xec, 0xa5, 0x32, 0xe4, 0xe9, 0xf5, 0xfd, 0x1b, 0xa9, 0x38, 0x4c, 0xf0, - 0x51, 0x9e, 0x05, 0x76, 0xe4, 0x12, 0x5f, 0x72, 0x9f, 0xde, 0x5e, 0xdc, 0x21, 0xdd, 0x62, 0xff, - 0x5d, 0x09, 0xa6, 0xeb, 0xc8, 0x2d, 0xe9, 0xb6, 0x6d, 0xe8, 0x5b, 0xa3, 0xf2, 0xf8, 0x16, 0xf5, - 0x1e, 0x56, 0xbf, 0x97, 0x11, 0x3d, 0x4f, 0x13, 0x2c, 0x84, 0xfb, 0xac, 0x46, 0xc4, 0x12, 0x7c, - 0x58, 0xe8, 0xcc, 0xcc, 0x20, 0x6a, 0x63, 0xf0, 0xd8, 0x96, 0x60, 0xc2, 0x3f, 0x8b, 0x77, 0x33, - 0x77, 0x3e, 0x73, 0xdb, 0xdd, 0xf1, 0x8f, 0xc1, 0xe0, 0xe7, 0xfd, 0x67, 0xc0, 0xd4, 0xd7, 0x24, - 0x74, 0x94, 0x8f, 0x3f, 0x48, 0x98, 0xac, 0x8d, 0x25, 0x71, 0x87, 0x3f, 0xac, 0xa3, 0x83, 0xbf, - 0x3d, 0x41, 0x97, 0x23, 0x57, 0x75, 0x17, 0x3d, 0xa0, 0x7e, 0x51, 0x86, 0x89, 0x3a, 0x72, 0xbd, - 0xf1, 0x96, 0xbb, 0xdc, 0x74, 0x58, 0x0d, 0x57, 0x98, 0x15, 0x8f, 0x29, 0xba, 0x86, 0x71, 0x0f, - 0x4c, 0x75, 0x6d, 0xab, 0x85, 0x1c, 0x87, 0xae, 0x5e, 0xb0, 0x8e, 0x6a, 0xfd, 0x46, 0x7f, 0xcc, - 0xda, 0xfc, 0xba, 0xff, 0x8f, 0x16, 0xfe, 0x9e, 0xd4, 0x0c, 0x20, 0x94, 0x68, 0x05, 0xc7, 0x6d, - 0x06, 0xc4, 0x15, 0x9e, 0x3e, 0xd0, 0x9f, 0x93, 0x61, 0xa6, 0x8e, 0xdc, 0x40, 0x8a, 0x09, 0x36, - 0x39, 0xa2, 0xe1, 0xe5, 0xa0, 0x94, 0x0f, 0x06, 0xa5, 0xf8, 0xd5, 0x80, 0xbc, 0x34, 0x03, 0x62, - 0x63, 0xbc, 0x1a, 0x50, 0x8c, 0x83, 0x31, 0x1c, 0x5f, 0x7b, 0x34, 0x4c, 0x61, 0x5e, 0x70, 0x83, - 0xfd, 0xf9, 0x6c, 0xd8, 0x78, 0xbf, 0x94, 0x52, 0xe3, 0xbd, 0x13, 0x72, 0x3b, 0xba, 0x7d, 0xc1, - 0xc1, 0x0d, 0x77, 0x5a, 0xc4, 0x6c, 0x5f, 0xf3, 0xb2, 0x6b, 0xe4, 0xaf, 0xfe, 0x7e, 0x9a, 0xb9, - 0x64, 0x7e, 0x9a, 0x0f, 0x4b, 0x89, 0x46, 0x42, 0x32, 0x77, 0x18, 0x61, 0x93, 0x4f, 0x30, 0x6e, - 0xc6, 0x94, 0x9d, 0xbe, 0x72, 0xbc, 0x58, 0x86, 0x49, 0x6f, 0xdc, 0xc6, 0xf6, 0xf8, 0xb9, 0x83, - 0xab, 0x43, 0x7f, 0x43, 0x3f, 0x61, 0x0f, 0xec, 0x4b, 0x64, 0x74, 0xe6, 0x7d, 0x82, 0x1e, 0x38, - 0xae, 0xf0, 0xf4, 0xf1, 0x78, 0x37, 0xc1, 0x03, 0xb7, 0x07, 0xf5, 0x4d, 0x32, 0xc8, 0xcb, 0xc8, - 0x1d, 0xb7, 0x15, 0xf9, 0x0e, 0xe1, 0x10, 0x47, 0x9c, 0xc0, 0x30, 0xcf, 0xf3, 0xcb, 0x68, 0x34, - 0x0d, 0x48, 0x2c, 0xb6, 0x91, 0x10, 0x03, 0xe9, 0xa3, 0xf6, 0x7e, 0x82, 0x1a, 0xd9, 0x5c, 0xf8, - 0x99, 0x11, 0xf4, 0xaa, 0xe3, 0x5d, 0xf8, 0xf0, 0x05, 0x88, 0x69, 0x1c, 0x56, 0x7b, 0xeb, 0x57, - 0xf8, 0x58, 0xae, 0xe2, 0x03, 0xaf, 0xb1, 0x6f, 0xa3, 0xd6, 0x05, 0xd4, 0x56, 0x7f, 0xea, 0xe0, - 0xd0, 0x9d, 0x82, 0x89, 0x16, 0xa1, 0x86, 0xc1, 0x9b, 0xd4, 0xfc, 0xd7, 0x04, 0xf7, 0x4a, 0xf3, - 0x1d, 0x11, 0xf9, 0x7d, 0x8c, 0xf7, 0x4a, 0x0b, 0x14, 0x3f, 0x06, 0xb3, 0x85, 0xcc, 0x32, 0x2a, - 0x2d, 0xcb, 0x54, 0xff, 0xcb, 0xc1, 0x61, 0xb9, 0x0a, 0xa6, 0x8c, 0x96, 0x65, 0xe2, 0x30, 0x14, - 0xfe, 0x21, 0xa0, 0x20, 0xc1, 0xff, 0x5a, 0xde, 0xb1, 0xee, 0x37, 0xe8, 0xae, 0x79, 0x98, 0x30, - 0xac, 0x31, 0xe1, 0xb1, 0x7e, 0x58, 0xc6, 0x44, 0x9f, 0xb2, 0xd3, 0x87, 0xec, 0x13, 0xa1, 0x77, - 0x1b, 0xe9, 0x0a, 0x1f, 0x11, 0xab, 0xc0, 0xc3, 0x0c, 0x67, 0x6c, 0x2d, 0x0e, 0x65, 0x38, 0x8b, - 0x61, 0x60, 0x0c, 0x37, 0x56, 0x84, 0x38, 0xa6, 0xbe, 0x06, 0x7c, 0x00, 0x74, 0x46, 0x67, 0x1e, - 0x0e, 0x89, 0xce, 0xe1, 0x98, 0x88, 0x1f, 0xa2, 0x21, 0x32, 0xa9, 0xc5, 0xa3, 0xfe, 0xd7, 0x51, - 0x80, 0x73, 0xfb, 0x30, 0xfe, 0x0a, 0xc4, 0x5b, 0x21, 0xc1, 0x8d, 0xd8, 0xfb, 0x24, 0xe8, 0x51, - 0x19, 0xe3, 0x5d, 0xf1, 0x22, 0xe5, 0xa7, 0x0f, 0xe0, 0x8b, 0x64, 0x98, 0xc3, 0x3e, 0x02, 0x1d, - 0xa4, 0xdb, 0xa4, 0xa3, 0x1c, 0x89, 0xa3, 0xfc, 0xbb, 0x85, 0x03, 0xfc, 0xf0, 0x72, 0x08, 0xf9, - 0x18, 0x09, 0x14, 0x62, 0xd1, 0x7d, 0x04, 0x59, 0x18, 0xcb, 0x36, 0x4a, 0x21, 0x60, 0x81, 0xaa, - 0xf8, 0x68, 0xf0, 0x48, 0xe8, 0x91, 0xcb, 0x0b, 0xc3, 0x6f, 0x6c, 0x63, 0xf6, 0xc8, 0x15, 0x61, - 0x22, 0x7d, 0x4c, 0xde, 0x74, 0x0b, 0x5d, 0x70, 0x6e, 0xe0, 0x0b, 0xe3, 0x5f, 0x97, 0x0d, 0x4e, - 0xb4, 0x7d, 0x6e, 0x24, 0x1e, 0x98, 0x07, 0x08, 0x88, 0xaf, 0x40, 0xd6, 0xb6, 0x2e, 0x92, 0xa5, - 0xad, 0x59, 0x0d, 0x3f, 0x93, 0xeb, 0x29, 0x3b, 0xbb, 0x3b, 0x26, 0x39, 0x19, 0x3a, 0xab, 0xf9, - 0xaf, 0xca, 0x75, 0x30, 0x7b, 0xd1, 0x70, 0xb7, 0x57, 0x90, 0xde, 0x46, 0xb6, 0x66, 0x5d, 0xc4, - 0x1e, 0x73, 0x93, 0x1a, 0x9f, 0xc8, 0xfb, 0xaf, 0x08, 0xd8, 0x97, 0xf8, 0x16, 0xf9, 0xb1, 0x1c, - 0x7f, 0x4b, 0x62, 0x79, 0x46, 0x73, 0x95, 0xbe, 0xc2, 0x7c, 0x40, 0x86, 0x29, 0xcd, 0xba, 0x48, - 0x95, 0xe4, 0xff, 0x38, 0x5c, 0x1d, 0x49, 0x3c, 0xd1, 0xc3, 0x92, 0x0b, 0xd8, 0x1f, 0xfb, 0x44, - 0x2f, 0xb6, 0xf8, 0xb1, 0x9c, 0x5c, 0x9a, 0xd1, 0xac, 0x8b, 0x75, 0xe4, 0x92, 0x16, 0xa1, 0x36, - 0x47, 0xe4, 0x64, 0x6d, 0x38, 0x84, 0x20, 0x9d, 0x87, 0x07, 0xef, 0x49, 0x77, 0x11, 0x02, 0x01, - 0x05, 0x2c, 0x8e, 0x7b, 0x17, 0x61, 0x20, 0x07, 0x63, 0x88, 0x91, 0x22, 0xc3, 0xb4, 0x66, 0x5d, - 0xf4, 0x86, 0x86, 0x25, 0xa3, 0xd3, 0x19, 0xcd, 0x08, 0x99, 0xd4, 0xf8, 0xf7, 0xc5, 0xe0, 0x73, - 0x31, 0x76, 0xe3, 0x7f, 0x00, 0x03, 0xe9, 0xc3, 0xf0, 0x3c, 0xd2, 0x58, 0xfc, 0x11, 0xda, 0x1c, - 0x0d, 0x0e, 0xc3, 0x36, 0x88, 0x80, 0x8d, 0x43, 0x6b, 0x10, 0x51, 0x1c, 0x8c, 0x65, 0xe7, 0x64, - 0xae, 0x84, 0x87, 0xf9, 0xd1, 0xb6, 0x89, 0xf7, 0x26, 0x73, 0x4d, 0xa4, 0xc3, 0x2e, 0xc7, 0xc8, - 0x48, 0xd0, 0x48, 0xe0, 0x82, 0x28, 0xc0, 0x43, 0xfa, 0x78, 0x7c, 0x54, 0x86, 0x19, 0xc2, 0xc2, - 0x23, 0xc4, 0x0a, 0x18, 0xaa, 0x51, 0xb1, 0x35, 0x38, 0x9c, 0x46, 0x15, 0xc3, 0xc1, 0x58, 0x6e, - 0x05, 0xf5, 0xec, 0xb8, 0x21, 0x8e, 0x8f, 0x47, 0x21, 0x38, 0xb4, 0x31, 0x36, 0xc2, 0x23, 0xe4, - 0xc3, 0x18, 0x63, 0x87, 0x74, 0x8c, 0xfc, 0x79, 0x41, 0x2b, 0x1a, 0x25, 0x06, 0x07, 0x68, 0x0a, - 0x23, 0x84, 0x61, 0xc8, 0xa6, 0x70, 0x48, 0x48, 0x7c, 0x4d, 0x06, 0x20, 0x0c, 0xac, 0x59, 0x7b, - 0xf8, 0x32, 0x9f, 0x11, 0x74, 0x67, 0xbd, 0x6e, 0xf5, 0xf2, 0x00, 0xb7, 0xfa, 0x84, 0x21, 0x5c, - 0x92, 0xae, 0x04, 0x32, 0x52, 0xf6, 0x2a, 0x39, 0xf6, 0x95, 0xc0, 0xf8, 0xf2, 0xd3, 0xc7, 0xf8, - 0x2b, 0xc4, 0x9a, 0x0b, 0x0f, 0x98, 0xfe, 0xda, 0x48, 0x50, 0x66, 0x66, 0xff, 0x32, 0x3f, 0xfb, - 0x3f, 0x00, 0xb6, 0xc3, 0xda, 0x88, 0x83, 0x0e, 0x8e, 0xa6, 0x6f, 0x23, 0x1e, 0xde, 0x01, 0xd1, - 0x9f, 0xc9, 0xc2, 0x51, 0xda, 0x89, 0xfc, 0x30, 0x40, 0x9c, 0xf0, 0x1c, 0x1e, 0xd7, 0x49, 0x0e, - 0x40, 0x79, 0x54, 0x0b, 0x52, 0x49, 0x96, 0x32, 0x05, 0xd8, 0x1b, 0xcb, 0xea, 0x46, 0xbe, 0xfc, - 0x40, 0x57, 0x37, 0xdb, 0xe2, 0xe1, 0x7e, 0x07, 0x00, 0xef, 0xaf, 0x35, 0xca, 0xfc, 0x5a, 0x63, - 0x9f, 0x95, 0xc9, 0xc4, 0x3b, 0xd7, 0x58, 0x64, 0x84, 0xdd, 0xb1, 0xef, 0x5c, 0x47, 0x97, 0x9d, - 0x3e, 0x4a, 0xef, 0x95, 0x21, 0x5b, 0xb7, 0x6c, 0x57, 0x7d, 0x7e, 0x92, 0xd6, 0x49, 0x24, 0x1f, - 0x82, 0xe4, 0xbf, 0x2b, 0x25, 0xee, 0x96, 0xe6, 0x9b, 0xe3, 0x8f, 0x3a, 0xeb, 0xae, 0x8e, 0xbd, - 0xba, 0xbd, 0xf2, 0x99, 0xeb, 0x9a, 0x93, 0xc6, 0xd3, 0x21, 0xf2, 0xab, 0x47, 0x1f, 0xc0, 0x48, - 0x2d, 0x9e, 0x4e, 0x64, 0xc9, 0xe9, 0xe3, 0xf6, 0xd0, 0x51, 0xea, 0xdb, 0xba, 0x64, 0x74, 0x90, - 0xfa, 0x7c, 0xe2, 0x32, 0x52, 0xd5, 0x77, 0x90, 0xf8, 0x91, 0x98, 0x58, 0xd7, 0x56, 0x1c, 0x5f, - 0x56, 0x0e, 0xe3, 0xcb, 0x26, 0x6d, 0x50, 0xe4, 0x00, 0x3a, 0x61, 0x69, 0xdc, 0x0d, 0x2a, 0xa6, - 0xec, 0xb1, 0xc4, 0xe9, 0x3c, 0x56, 0x47, 0x2e, 0x31, 0x2a, 0x6b, 0xfe, 0x0d, 0x2c, 0x3f, 0x3d, - 0x92, 0x88, 0x9d, 0xc1, 0x05, 0x2f, 0x72, 0xcf, 0x05, 0x2f, 0x1f, 0x60, 0xc1, 0x59, 0xe3, 0xc1, - 0x79, 0x72, 0xb4, 0x80, 0x78, 0x26, 0x47, 0x02, 0xd3, 0x3b, 0x02, 0x98, 0xd6, 0x39, 0x98, 0xee, - 0x18, 0x92, 0x8b, 0xf4, 0x01, 0xfb, 0xc5, 0x1c, 0x1c, 0x25, 0x93, 0xfe, 0xa2, 0xd9, 0xa6, 0x11, - 0x56, 0xdf, 0x2a, 0x1d, 0xf2, 0x66, 0xdb, 0xfe, 0x10, 0xac, 0x5c, 0x2c, 0xe7, 0x5c, 0xef, 0xed, - 0xf8, 0x0b, 0x24, 0x9c, 0xab, 0xd7, 0x89, 0xe2, 0x9d, 0x36, 0xf1, 0x1b, 0xf2, 0x83, 0xff, 0xf8, - 0xbb, 0x8c, 0x26, 0xc4, 0xef, 0x32, 0xfa, 0x93, 0x64, 0xeb, 0x76, 0xb8, 0xe8, 0x1e, 0x81, 0xa7, - 0x6c, 0x3b, 0x25, 0x58, 0xd1, 0x13, 0xe0, 0xee, 0x47, 0xc3, 0x9d, 0x2c, 0x8c, 0x20, 0x32, 0xa4, - 0x3b, 0x19, 0x26, 0x70, 0x98, 0xee, 0x64, 0x83, 0x18, 0x18, 0xc3, 0xad, 0xf6, 0x39, 0xba, 0x9b, - 0x8f, 0xdb, 0x8d, 0xfa, 0x57, 0x52, 0xea, 0xa3, 0xf4, 0xf7, 0x33, 0x89, 0xfc, 0x9f, 0x31, 0x5f, - 0xf1, 0xc3, 0x74, 0x12, 0x8f, 0xe6, 0x38, 0x72, 0x63, 0x58, 0x37, 0x92, 0xb0, 0x2f, 0xfa, 0x39, - 0xa3, 0xed, 0x6e, 0x8f, 0xe8, 0x44, 0xc7, 0x45, 0x8f, 0x96, 0x7f, 0x3d, 0x32, 0x7e, 0x51, 0xff, - 0x35, 0x93, 0x28, 0x84, 0x54, 0x20, 0x12, 0xcc, 0x56, 0x84, 0x88, 0x13, 0x04, 0x7e, 0x8a, 0xa5, - 0x37, 0x46, 0x8d, 0x3e, 0x6b, 0xb4, 0x91, 0xf5, 0x08, 0xd4, 0x68, 0xcc, 0xd7, 0xe8, 0x34, 0x3a, - 0x8e, 0xdc, 0x8f, 0xa8, 0x46, 0x07, 0x22, 0x19, 0x91, 0x46, 0xc7, 0xd2, 0x4b, 0x5f, 0xc6, 0xaf, - 0x99, 0xa1, 0x13, 0xa9, 0x55, 0xc3, 0xbc, 0xa0, 0xfe, 0x73, 0xde, 0xbf, 0x98, 0xf9, 0x9c, 0xe1, - 0x6e, 0xd3, 0x58, 0x30, 0xbf, 0x2b, 0x7c, 0x37, 0xca, 0x10, 0xf1, 0x5e, 0xf8, 0x70, 0x52, 0xb9, - 0x7d, 0xe1, 0xa4, 0x8a, 0x30, 0x6b, 0x98, 0x2e, 0xb2, 0x4d, 0xbd, 0xb3, 0xd4, 0xd1, 0xb7, 0x9c, - 0x53, 0x13, 0x7d, 0x2f, 0xaf, 0xab, 0x30, 0x79, 0x34, 0xfe, 0x0f, 0xf6, 0xfa, 0xca, 0x49, 0xfe, - 0xfa, 0xca, 0x88, 0xe8, 0x57, 0x53, 0xd1, 0xd1, 0xaf, 0x82, 0xe8, 0x56, 0x30, 0x38, 0x38, 0xb6, - 0xa8, 0x6d, 0x9c, 0x30, 0xdc, 0xdf, 0xcd, 0x82, 0x51, 0xd8, 0x82, 0xd0, 0x8f, 0xaf, 0x97, 0x13, - 0xad, 0xee, 0x79, 0x8a, 0x30, 0xdf, 0xab, 0x04, 0x89, 0x2d, 0x54, 0xb6, 0xf2, 0x72, 0x4f, 0xe5, - 0x03, 0x93, 0x27, 0x2b, 0x60, 0xf2, 0xb0, 0x4a, 0x95, 0x13, 0x53, 0xaa, 0x24, 0x8b, 0x85, 0x22, - 0xb5, 0x1d, 0xc3, 0x69, 0xa4, 0x1c, 0x1c, 0xf3, 0xa3, 0xdd, 0x76, 0xbb, 0x48, 0xb7, 0x75, 0xb3, - 0x85, 0xd4, 0x4f, 0x48, 0xa3, 0x30, 0x7b, 0x97, 0x60, 0xd2, 0x68, 0x59, 0x66, 0xdd, 0x78, 0x96, - 0x7f, 0xb9, 0x5c, 0x7c, 0x90, 0x75, 0x2c, 0x91, 0x0a, 0xfd, 0x43, 0x0b, 0xfe, 0x55, 0x2a, 0x30, - 0xd5, 0xd2, 0xed, 0x36, 0x09, 0xc2, 0x97, 0xeb, 0xb9, 0xc8, 0x29, 0x92, 0x50, 0xc9, 0xff, 0x45, - 0x0b, 0xff, 0x56, 0x6a, 0xbc, 0x10, 0xf3, 0x3d, 0xd1, 0x3c, 0x22, 0x89, 0x2d, 0x86, 0x3f, 0x71, - 0x32, 0xf7, 0xa4, 0x63, 0xa3, 0x0e, 0xbe, 0x83, 0x9e, 0xf4, 0x10, 0x53, 0x5a, 0x98, 0x90, 0x74, - 0x79, 0x00, 0x17, 0xb5, 0x0f, 0x8d, 0x71, 0x2f, 0x0f, 0x08, 0x71, 0x91, 0xbe, 0x66, 0xbe, 0x2b, - 0x0f, 0xb3, 0xa4, 0x57, 0xa3, 0xe2, 0x54, 0x5f, 0x84, 0xaf, 0x90, 0x76, 0xef, 0x45, 0x97, 0xd4, - 0xfa, 0xc1, 0xc7, 0xe4, 0x02, 0xc8, 0x17, 0x82, 0x80, 0x83, 0xde, 0x63, 0xd2, 0x7d, 0x7b, 0x9f, - 0xaf, 0x79, 0xc2, 0xd3, 0xb8, 0xf7, 0xed, 0xe3, 0x8b, 0x4f, 0x1f, 0x9f, 0x5f, 0x92, 0x41, 0x2e, - 0xb6, 0xdb, 0x6a, 0xeb, 0xe0, 0x50, 0x5c, 0x03, 0xd3, 0x7e, 0x9b, 0x09, 0x63, 0x40, 0xb2, 0x49, - 0x49, 0x17, 0x41, 0x03, 0xd9, 0x14, 0xdb, 0x63, 0xdf, 0x55, 0x88, 0x29, 0x3b, 0x7d, 0x50, 0x7e, - 0x6d, 0x82, 0x36, 0x9a, 0x05, 0xcb, 0xba, 0x80, 0x8f, 0xca, 0x3c, 0x5f, 0x86, 0xdc, 0x12, 0x72, - 0x5b, 0xdb, 0x23, 0x6a, 0x33, 0xbb, 0x76, 0xc7, 0x6f, 0x33, 0xfb, 0xee, 0xc3, 0x1f, 0x6c, 0xc3, - 0xfa, 0x6c, 0xcd, 0x63, 0x96, 0xc6, 0x1d, 0xdd, 0x39, 0xb6, 0xf4, 0xf4, 0xc1, 0xf9, 0x57, 0x19, - 0xe6, 0x82, 0x15, 0x2e, 0x82, 0xc9, 0x2f, 0x66, 0x1e, 0x69, 0xeb, 0x9d, 0xea, 0x17, 0x92, 0x85, - 0x48, 0x0b, 0x64, 0xca, 0xd7, 0x2c, 0xe5, 0x85, 0xc5, 0x04, 0xc1, 0xd3, 0xc4, 0x18, 0x1c, 0xc3, - 0x0c, 0x5e, 0x86, 0x49, 0xcc, 0xd0, 0xa2, 0xb1, 0x87, 0x5d, 0x07, 0xb9, 0x85, 0xc6, 0x67, 0x8f, - 0x64, 0xa1, 0xf1, 0x0e, 0x7e, 0xa1, 0x51, 0x30, 0xe2, 0xb1, 0xbf, 0xce, 0x98, 0xd0, 0x97, 0xc6, - 0xfb, 0x7f, 0xe4, 0xcb, 0x8c, 0x09, 0x7c, 0x69, 0x06, 0x94, 0x9f, 0x3e, 0xa2, 0xaf, 0xff, 0x4f, - 0xb4, 0xb3, 0xf5, 0x37, 0x54, 0xd5, 0xff, 0xeb, 0x18, 0x64, 0xcf, 0x7a, 0x0f, 0xff, 0x23, 0xbc, - 0x11, 0xeb, 0x15, 0x23, 0x08, 0xce, 0xf0, 0x34, 0xc8, 0x7a, 0xf4, 0xe9, 0xb4, 0xe5, 0x46, 0xb1, - 0xdd, 0x5d, 0x8f, 0x11, 0x0d, 0xff, 0xa7, 0x9c, 0x84, 0xbc, 0x63, 0xed, 0xda, 0x2d, 0xcf, 0x7c, - 0xf6, 0x34, 0x86, 0xbe, 0x25, 0x0d, 0x4a, 0xca, 0x91, 0x9e, 0x1f, 0x9d, 0xcb, 0x28, 0x73, 0x41, - 0x92, 0xcc, 0x5d, 0x90, 0x94, 0x60, 0xff, 0x40, 0x80, 0xb7, 0xf4, 0x35, 0xe2, 0xaf, 0xf0, 0x5d, - 0x81, 0xed, 0x51, 0xc1, 0x1e, 0x21, 0x96, 0x83, 0xaa, 0x43, 0x52, 0x87, 0x6f, 0x5e, 0xb4, 0x41, - 0x1c, 0xf8, 0xb1, 0x3a, 0x7c, 0x0b, 0xf0, 0x30, 0x96, 0x53, 0xea, 0x79, 0xea, 0xa4, 0x7a, 0xdf, - 0x28, 0xd1, 0xcd, 0x72, 0x4a, 0x7f, 0x20, 0x74, 0x46, 0xe8, 0xbc, 0x3a, 0x34, 0x3a, 0x87, 0xe4, - 0xbe, 0xfa, 0xfb, 0x32, 0x8e, 0x84, 0xe9, 0x1b, 0x39, 0xe2, 0x17, 0x1d, 0x25, 0x86, 0xc8, 0x1b, - 0x83, 0xb9, 0x38, 0xd0, 0xb3, 0xc3, 0x87, 0x06, 0xe7, 0x45, 0xc7, 0xf0, 0x3f, 0xee, 0xd0, 0xe0, - 0xa2, 0x8c, 0xa4, 0x0f, 0xe4, 0xaf, 0x93, 0x8b, 0xc5, 0x8a, 0x2d, 0xd7, 0xd8, 0x1b, 0x71, 0x4b, - 0xe3, 0x87, 0x97, 0x84, 0xd1, 0x80, 0xf7, 0x49, 0x88, 0x70, 0x38, 0xee, 0x68, 0xc0, 0x62, 0x6c, - 0xa4, 0x0f, 0xd3, 0xdf, 0xe6, 0x3d, 0xe9, 0xd1, 0xb5, 0x99, 0x37, 0xd1, 0xd5, 0x00, 0x74, 0x70, - 0xb4, 0xce, 0xc0, 0x0c, 0x33, 0xf5, 0xf7, 0x2f, 0xac, 0xe1, 0xd2, 0x92, 0x1e, 0x74, 0x0f, 0x44, - 0x36, 0xf2, 0x85, 0x81, 0x04, 0x0b, 0xbe, 0x22, 0x4c, 0x8c, 0xe5, 0x3e, 0x38, 0x7f, 0x0c, 0x1b, - 0x13, 0x56, 0xbf, 0xcb, 0x62, 0x55, 0xe3, 0xb1, 0xba, 0x4d, 0x44, 0x4c, 0x62, 0x63, 0x9a, 0xd0, - 0xbc, 0xf1, 0x9d, 0x01, 0x5c, 0x1a, 0x07, 0xd7, 0xd3, 0x86, 0xe6, 0x23, 0x7d, 0xc4, 0x5e, 0x49, - 0xba, 0xc3, 0x3a, 0x31, 0xd9, 0x47, 0xd3, 0x1d, 0xd2, 0xd9, 0x80, 0xcc, 0xcd, 0x06, 0x12, 0xfa, - 0xdb, 0x87, 0x6e, 0xa4, 0x3e, 0x73, 0x83, 0x20, 0xca, 0x8e, 0xd8, 0xdf, 0x7e, 0x20, 0x07, 0xe9, - 0x83, 0xf3, 0x8f, 0x32, 0xc0, 0xb2, 0x6d, 0xed, 0x76, 0x6b, 0x76, 0x1b, 0xd9, 0xea, 0xdf, 0x84, - 0x13, 0x80, 0x97, 0x8d, 0x60, 0x02, 0xb0, 0x0e, 0xb0, 0x15, 0x10, 0xa7, 0x1a, 0x7e, 0x8b, 0x98, - 0xb9, 0x1f, 0x32, 0xa5, 0x31, 0x34, 0xf8, 0x2b, 0x67, 0x9f, 0xce, 0x63, 0x1c, 0xd7, 0x67, 0x85, - 0xe4, 0x46, 0x39, 0x01, 0x78, 0x77, 0x80, 0x75, 0x83, 0xc3, 0xfa, 0xee, 0x03, 0x70, 0x92, 0x3e, - 0xe6, 0xff, 0x34, 0x01, 0xd3, 0x64, 0xbb, 0x8e, 0xc8, 0xf4, 0xef, 0x43, 0xd0, 0x7f, 0x6d, 0x04, - 0xa0, 0x6f, 0xc0, 0x8c, 0x15, 0x52, 0x27, 0x7d, 0x2a, 0xbb, 0x00, 0x13, 0x0b, 0x3b, 0xc3, 0x97, - 0xc6, 0x91, 0x51, 0x3f, 0xc6, 0x22, 0xaf, 0xf1, 0xc8, 0xdf, 0x11, 0x23, 0x6f, 0x86, 0xe2, 0x28, - 0xa1, 0x7f, 0x4f, 0x00, 0xfd, 0x06, 0x07, 0x7d, 0xf1, 0x20, 0xac, 0x8c, 0x21, 0xdc, 0xbe, 0x0c, - 0x59, 0x7c, 0x3a, 0xee, 0x37, 0x52, 0x9c, 0xdf, 0x9f, 0x82, 0x09, 0xdc, 0x64, 0x83, 0x79, 0x87, - 0xff, 0xea, 0x7d, 0xd1, 0x37, 0x5d, 0x64, 0x07, 0x1e, 0x0b, 0xfe, 0xab, 0xc7, 0x83, 0xef, 0x95, - 0xec, 0x9c, 0xca, 0x93, 0x8d, 0xc8, 0x20, 0x61, 0xe8, 0x49, 0x09, 0x2b, 0xf1, 0x91, 0x9d, 0x97, - 0x1b, 0x66, 0x52, 0x32, 0x80, 0x91, 0xf4, 0x81, 0xff, 0x8b, 0x2c, 0x9c, 0x22, 0xab, 0x4a, 0x4b, - 0xb6, 0xb5, 0xd3, 0x73, 0xbb, 0x95, 0x71, 0x70, 0x5d, 0xb8, 0x1e, 0xe6, 0x5c, 0xce, 0x1f, 0x9b, - 0xea, 0x44, 0x4f, 0xaa, 0xfa, 0xa7, 0xac, 0x4f, 0xc5, 0x33, 0x78, 0x24, 0x17, 0x62, 0x04, 0x18, - 0xc5, 0x7b, 0xe2, 0x85, 0x7a, 0x41, 0x46, 0x99, 0x45, 0x2a, 0x79, 0xa8, 0x35, 0xcb, 0x40, 0xa7, - 0x72, 0x22, 0x3a, 0xf5, 0xc1, 0x40, 0xa7, 0x7e, 0x8a, 0xd3, 0xa9, 0xe5, 0x83, 0x8b, 0x24, 0x7d, - 0xdd, 0x7a, 0x5d, 0xb0, 0x31, 0x14, 0x6c, 0xdb, 0xed, 0xa4, 0xb0, 0x59, 0xc7, 0xfa, 0x23, 0x65, - 0x39, 0x7f, 0x24, 0xfe, 0x3e, 0x8a, 0x04, 0x33, 0x61, 0x9e, 0xeb, 0x08, 0x5d, 0x9a, 0x03, 0xc9, - 0xf0, 0xb9, 0x93, 0x8c, 0xf6, 0x50, 0x73, 0xdd, 0xd8, 0x82, 0xc6, 0xb0, 0xb6, 0x34, 0x07, 0xf9, - 0x25, 0xa3, 0xe3, 0x22, 0x5b, 0xfd, 0x0a, 0x9d, 0xe9, 0xbe, 0x2e, 0xc5, 0x01, 0x60, 0x11, 0xf2, - 0x9b, 0xb8, 0x34, 0x6a, 0x32, 0xdf, 0x24, 0xd6, 0x7a, 0x08, 0x87, 0x1a, 0xfd, 0x37, 0x69, 0x74, - 0xbe, 0x1e, 0x32, 0x23, 0x9b, 0x22, 0x27, 0x88, 0xce, 0x37, 0x98, 0x85, 0xb1, 0x5c, 0x4c, 0x95, - 0xd7, 0xd0, 0x8e, 0x37, 0xc6, 0x5f, 0x48, 0x0f, 0xe1, 0x02, 0xc8, 0x46, 0xdb, 0xc1, 0x9d, 0xe3, - 0x94, 0xe6, 0x3d, 0x26, 0xf5, 0x15, 0xea, 0x15, 0x15, 0x61, 0x79, 0xdc, 0xbe, 0x42, 0x42, 0x5c, - 0xa4, 0x8f, 0xd9, 0xf7, 0xb1, 0xa3, 0x68, 0xb7, 0xa3, 0xb7, 0x90, 0xc7, 0x7d, 0x6a, 0xa8, 0x91, - 0x9e, 0x2c, 0xeb, 0xf7, 0x64, 0x4c, 0x3b, 0xcd, 0x1d, 0xa0, 0x9d, 0x0e, 0xbb, 0x0c, 0x19, 0xc8, - 0x1c, 0x57, 0xfc, 0xd0, 0x96, 0x21, 0x63, 0xd9, 0x18, 0xc3, 0xb5, 0xa3, 0xfe, 0x41, 0xda, 0xb1, - 0xb6, 0xd6, 0x61, 0x37, 0x69, 0xa8, 0xb0, 0x46, 0x76, 0x68, 0x76, 0x98, 0x4d, 0x9a, 0x68, 0x1e, - 0xc6, 0x80, 0xd6, 0x1c, 0x45, 0xeb, 0xf3, 0x74, 0x18, 0x4d, 0x79, 0x9f, 0xd4, 0xb1, 0x6c, 0x37, - 0xd9, 0x3e, 0xa9, 0xc7, 0x9d, 0x86, 0xff, 0x4b, 0x7a, 0xf0, 0x8a, 0x3f, 0x57, 0x3d, 0xaa, 0xe1, - 0x33, 0xc1, 0xc1, 0xab, 0x41, 0x0c, 0xa4, 0x0f, 0xef, 0xdb, 0x0e, 0x69, 0xf0, 0x1c, 0xb6, 0x39, - 0xd2, 0x36, 0x30, 0xb2, 0xa1, 0x73, 0x98, 0xe6, 0x18, 0xcd, 0x43, 0xfa, 0x78, 0x7d, 0x87, 0x19, - 0x38, 0xdf, 0x32, 0xc6, 0x81, 0xd3, 0x6f, 0x99, 0xb9, 0x21, 0x5b, 0xe6, 0xb0, 0xfb, 0x3f, 0x54, - 0xd6, 0xa3, 0x1b, 0x30, 0x87, 0xd9, 0xff, 0x89, 0x61, 0x22, 0x7d, 0xc4, 0xdf, 0x2a, 0x43, 0xae, - 0x3e, 0xfe, 0xf1, 0x72, 0xd8, 0xb9, 0x08, 0x96, 0x55, 0x7d, 0x64, 0xc3, 0xe5, 0x30, 0x73, 0x91, - 0x48, 0x16, 0xc6, 0x10, 0x78, 0xff, 0x28, 0xcc, 0xe0, 0x25, 0x11, 0x7f, 0x9b, 0xf5, 0x3b, 0x74, - 0xd4, 0x7c, 0x38, 0xc5, 0xb6, 0x7a, 0x0f, 0x4c, 0xfa, 0xfb, 0x77, 0x74, 0xe4, 0x9c, 0x17, 0x6b, - 0x9f, 0x3e, 0x97, 0x5a, 0xf0, 0xff, 0x81, 0x9c, 0x21, 0x46, 0xbe, 0x57, 0x3b, 0xac, 0x33, 0xc4, - 0xa1, 0xee, 0xd7, 0xfe, 0x49, 0x38, 0xa2, 0xfe, 0x97, 0xf4, 0x30, 0xef, 0xdd, 0xc7, 0xcd, 0xf6, - 0xd9, 0xc7, 0xfd, 0x04, 0x8b, 0x65, 0x9d, 0xc7, 0xf2, 0x4e, 0x51, 0x11, 0x8e, 0x70, 0xac, 0x7d, - 0x6f, 0x00, 0xe7, 0x59, 0x0e, 0xce, 0x85, 0x03, 0xf1, 0x32, 0x86, 0x83, 0x8f, 0xd9, 0x70, 0xcc, - 0xfd, 0x64, 0x8a, 0xed, 0xb8, 0xe7, 0x54, 0x45, 0x76, 0xdf, 0xa9, 0x0a, 0xae, 0xa5, 0xe7, 0x0e, - 0xd8, 0xd2, 0x3f, 0xc9, 0x6a, 0x47, 0x83, 0xd7, 0x8e, 0xa7, 0x89, 0x23, 0x32, 0xba, 0x91, 0xf9, - 0x7d, 0x81, 0x7a, 0x9c, 0xe3, 0xd4, 0xa3, 0x74, 0x30, 0x66, 0xd2, 0xd7, 0x8f, 0x3f, 0xf0, 0x27, - 0xb4, 0x87, 0xdc, 0xde, 0x87, 0xdd, 0x2a, 0xe6, 0x84, 0x38, 0xb2, 0x91, 0x7b, 0x98, 0xad, 0xe2, - 0x41, 0x9c, 0x8c, 0x21, 0x16, 0xdb, 0x2c, 0x4c, 0x63, 0x9e, 0xce, 0x19, 0xed, 0x2d, 0xe4, 0xaa, - 0xaf, 0x27, 0x3e, 0x8a, 0x7e, 0xe4, 0xcb, 0x11, 0x85, 0x27, 0x8a, 0x3a, 0xef, 0x9a, 0xd4, 0xa3, - 0x83, 0x30, 0x39, 0xcf, 0x30, 0x38, 0xee, 0x08, 0x8a, 0x03, 0x39, 0x48, 0x1f, 0xb2, 0x8f, 0x11, - 0x77, 0x9b, 0x55, 0xfd, 0x92, 0xb5, 0xeb, 0xaa, 0x0f, 0x8e, 0xa0, 0x83, 0x5e, 0x80, 0x7c, 0x07, - 0x53, 0xa3, 0xc7, 0x32, 0xe2, 0xa7, 0x3b, 0x54, 0x04, 0xa4, 0x7c, 0x8d, 0xfe, 0x99, 0xf4, 0x6c, - 0x46, 0x28, 0x47, 0x42, 0x67, 0xdc, 0x67, 0x33, 0x06, 0x94, 0x3f, 0x96, 0x3b, 0x76, 0x26, 0xbd, - 0xd2, 0x8d, 0x1d, 0xc3, 0x1d, 0x51, 0x04, 0x87, 0x8e, 0x47, 0xcb, 0x8f, 0xe0, 0x80, 0x5f, 0x92, - 0x9e, 0x18, 0x65, 0xa4, 0xe2, 0xfd, 0x3e, 0xee, 0x13, 0xa3, 0xf1, 0xc5, 0xa7, 0x8f, 0xc9, 0xaf, - 0x90, 0x96, 0x75, 0x96, 0x38, 0xdf, 0xa6, 0xe8, 0xd7, 0x3b, 0x74, 0x63, 0x21, 0xac, 0x1d, 0x5e, - 0x63, 0xe9, 0x5b, 0x7e, 0xfa, 0xc0, 0xfc, 0xb7, 0x1f, 0x87, 0xdc, 0x22, 0x3a, 0xbf, 0xbb, 0xa5, - 0xde, 0x01, 0x93, 0x0d, 0x1b, 0xa1, 0x8a, 0xb9, 0x69, 0x79, 0xd2, 0x75, 0xbd, 0x67, 0x1f, 0x12, - 0xfa, 0xe6, 0xe1, 0xb1, 0x8d, 0xf4, 0x76, 0x78, 0xfe, 0xcc, 0x7f, 0x55, 0x5f, 0x21, 0x41, 0xb6, - 0xee, 0xea, 0xae, 0x3a, 0x15, 0x60, 0xab, 0x3e, 0xc8, 0x62, 0x71, 0x07, 0x8f, 0xc5, 0xf5, 0x9c, - 0x2c, 0x30, 0x07, 0xf3, 0xde, 0xff, 0x11, 0x00, 0xa8, 0x30, 0x79, 0xbf, 0x63, 0x99, 0x5e, 0x0e, - 0xff, 0x08, 0xa4, 0xff, 0xae, 0xbe, 0x36, 0x10, 0xf7, 0x5d, 0x9c, 0xb8, 0x1f, 0x2b, 0x56, 0xc4, - 0x18, 0x56, 0xda, 0x24, 0x98, 0xf2, 0x44, 0xbb, 0x82, 0xf4, 0xb6, 0xa3, 0xfe, 0x58, 0xa8, 0xfc, - 0x11, 0x62, 0x56, 0x3f, 0x24, 0x1c, 0x8c, 0x93, 0xd4, 0x2a, 0x20, 0x1e, 0xed, 0xd1, 0xe1, 0x6f, - 0xfe, 0x4b, 0x7c, 0x30, 0x92, 0x9b, 0x21, 0x6b, 0x98, 0x9b, 0x16, 0xf5, 0x2f, 0xbc, 0x32, 0x82, - 0xb6, 0xa7, 0x13, 0x1a, 0xce, 0x28, 0x18, 0xa9, 0x33, 0x9e, 0xad, 0xb1, 0x5c, 0x7a, 0x97, 0xf5, - 0x4a, 0x57, 0xff, 0xf7, 0x81, 0xc2, 0x56, 0x14, 0xc8, 0x76, 0x75, 0x77, 0x9b, 0x16, 0x8d, 0x9f, - 0x3d, 0x1b, 0x79, 0xd7, 0xd4, 0x4d, 0xcb, 0xbc, 0xb4, 0x63, 0x3c, 0x2b, 0xb8, 0x5b, 0x97, 0x4b, - 0xf3, 0x38, 0xdf, 0x42, 0x26, 0xb2, 0x75, 0x17, 0xd5, 0xf7, 0xb6, 0xf0, 0x1c, 0x6b, 0x52, 0x63, - 0x93, 0x12, 0xeb, 0xbf, 0xc7, 0x71, 0xb4, 0xfe, 0x6f, 0x1a, 0x1d, 0x84, 0x23, 0x35, 0x51, 0xfd, - 0xf7, 0xdf, 0x13, 0xe9, 0x7f, 0x9f, 0x22, 0xd2, 0x47, 0xe3, 0xdf, 0x24, 0x98, 0xa9, 0x7b, 0x0a, - 0x57, 0xdf, 0xdd, 0xd9, 0xd1, 0xed, 0x4b, 0xea, 0xb5, 0x21, 0x2a, 0x8c, 0x6a, 0x66, 0x78, 0xbf, - 0x94, 0xdf, 0x17, 0xbe, 0x56, 0x9a, 0x36, 0x6d, 0xa6, 0x84, 0xc4, 0xed, 0xe0, 0xf1, 0x90, 0xf3, - 0xd4, 0xdb, 0xf7, 0xb8, 0x8c, 0x6d, 0x08, 0x24, 0xa7, 0x60, 0x44, 0xab, 0x81, 0xbc, 0x8d, 0x21, - 0x9a, 0x86, 0x04, 0x47, 0xeb, 0xae, 0xde, 0xba, 0xb0, 0x6c, 0xd9, 0xd6, 0xae, 0x6b, 0x98, 0xc8, - 0x51, 0x1f, 0x15, 0x22, 0xe0, 0xeb, 0x7f, 0x26, 0xd4, 0x7f, 0xf5, 0xdf, 0x33, 0xa2, 0xa3, 0x68, - 0xd0, 0xad, 0xb2, 0xe4, 0x23, 0x02, 0x54, 0x89, 0x8d, 0x8b, 0x22, 0x14, 0xd3, 0x17, 0xda, 0x5b, - 0x64, 0x28, 0x94, 0x1f, 0xe8, 0x5a, 0xb6, 0xbb, 0x6a, 0xb5, 0xf4, 0x8e, 0xe3, 0x5a, 0x36, 0x52, - 0x6b, 0xb1, 0x52, 0xf3, 0x7a, 0x98, 0xb6, 0xd5, 0x0a, 0x07, 0x47, 0xfa, 0xc6, 0xaa, 0x9d, 0xcc, - 0xeb, 0xf8, 0xc7, 0x84, 0x77, 0x19, 0x89, 0x54, 0x7a, 0x39, 0x8a, 0xd0, 0xf3, 0x7e, 0x5d, 0x5a, - 0xb2, 0xc3, 0x12, 0x62, 0x3b, 0x8f, 0x42, 0x4c, 0x8d, 0x61, 0xa9, 0x5c, 0x82, 0xd9, 0xfa, 0xee, - 0xf9, 0x80, 0x88, 0xc3, 0x1a, 0x21, 0x6f, 0x10, 0x8e, 0x52, 0x41, 0x15, 0x8f, 0x25, 0x14, 0x21, - 0xdf, 0xeb, 0x60, 0xd6, 0x61, 0xb3, 0x51, 0xbc, 0xf9, 0x44, 0xc1, 0xe8, 0x14, 0x83, 0x4b, 0x4d, - 0x5f, 0x80, 0xef, 0x93, 0x60, 0xb6, 0xd6, 0x45, 0x26, 0x6a, 0x13, 0x2f, 0x48, 0x4e, 0x80, 0xaf, - 0x48, 0x28, 0x40, 0x8e, 0x50, 0x84, 0x00, 0x43, 0x8f, 0xe5, 0x45, 0x5f, 0x78, 0x61, 0x42, 0x22, - 0xc1, 0xc5, 0x95, 0x96, 0xbe, 0xe0, 0xbe, 0x2c, 0xc1, 0xb4, 0xb6, 0x6b, 0xae, 0xdb, 0x96, 0x37, - 0x1a, 0xdb, 0xea, 0x9d, 0x61, 0x07, 0x71, 0x13, 0x1c, 0x6b, 0xef, 0xda, 0x78, 0xfd, 0xa9, 0x62, - 0xd6, 0x51, 0xcb, 0x32, 0xdb, 0x0e, 0xae, 0x47, 0x4e, 0xdb, 0xff, 0xe1, 0xf6, 0xec, 0xf3, 0xbf, - 0x29, 0x67, 0xd4, 0x17, 0x09, 0x87, 0xba, 0x21, 0x95, 0x67, 0x8a, 0x16, 0xef, 0x09, 0x04, 0x03, - 0xda, 0x0c, 0x2a, 0x21, 0x7d, 0xe1, 0x7e, 0x5e, 0x02, 0xa5, 0xd8, 0x6a, 0x59, 0xbb, 0xa6, 0x5b, - 0x47, 0x1d, 0xd4, 0x72, 0x1b, 0xb6, 0xde, 0x42, 0xac, 0xfd, 0x5c, 0x00, 0xb9, 0x6d, 0xd8, 0xb4, - 0x0f, 0xf6, 0x1e, 0xa9, 0x1c, 0x5f, 0x21, 0xbc, 0xe3, 0x48, 0x6a, 0xb9, 0xbf, 0x94, 0x04, 0xe2, - 0x14, 0xdb, 0x57, 0x14, 0x2c, 0x28, 0x7d, 0xa9, 0x7e, 0x52, 0x82, 0x29, 0xbf, 0xc7, 0xde, 0x12, - 0x11, 0xe6, 0xaf, 0x24, 0x9c, 0x8c, 0x04, 0xc4, 0x13, 0xc8, 0xf0, 0x5d, 0x09, 0x66, 0x15, 0x51, - 0xf4, 0x93, 0x89, 0xae, 0x98, 0x5c, 0x74, 0xde, 0x6b, 0xb5, 0xd6, 0x5c, 0xaa, 0xad, 0x2e, 0x96, - 0xb5, 0x82, 0xac, 0x7e, 0x45, 0x82, 0xec, 0xba, 0x61, 0x6e, 0xb1, 0xd1, 0x95, 0x8e, 0x7b, 0x76, - 0x64, 0x1b, 0x3d, 0x40, 0x5b, 0x3a, 0x79, 0x51, 0x6e, 0x85, 0xe3, 0xe6, 0xee, 0xce, 0x79, 0x64, - 0xd7, 0x36, 0xf1, 0x28, 0xeb, 0x34, 0xac, 0x3a, 0x32, 0x89, 0x11, 0x9a, 0xd3, 0xfa, 0x7e, 0xe3, - 0x4d, 0x30, 0x81, 0xc9, 0x83, 0xc7, 0x49, 0x84, 0xc4, 0x03, 0xa6, 0x24, 0x86, 0xa9, 0x44, 0xd3, - 0x86, 0x3e, 0xc4, 0xd3, 0xd7, 0xd4, 0x3f, 0xcc, 0xc1, 0x89, 0xa2, 0x79, 0x09, 0xdb, 0x14, 0xa4, - 0x83, 0x2f, 0x6d, 0xeb, 0xe6, 0x16, 0xc2, 0x03, 0x44, 0x20, 0x71, 0x36, 0x44, 0x7f, 0x86, 0x0f, - 0xd1, 0xaf, 0x68, 0x30, 0x61, 0xd9, 0x6d, 0x64, 0x2f, 0x5c, 0xc2, 0x3c, 0xf5, 0x2e, 0x3b, 0xd3, - 0x36, 0xd9, 0xaf, 0x88, 0x79, 0x4a, 0x7e, 0xbe, 0x46, 0xfe, 0xd7, 0x7c, 0x42, 0x67, 0x6e, 0x82, - 0x09, 0x9a, 0xa6, 0xcc, 0xc0, 0x64, 0x4d, 0x5b, 0x2c, 0x6b, 0xcd, 0xca, 0x62, 0xe1, 0x88, 0x72, - 0x19, 0x1c, 0xad, 0x34, 0xca, 0x5a, 0xb1, 0x51, 0xa9, 0x55, 0x9b, 0x38, 0xbd, 0x90, 0x51, 0x9f, - 0x97, 0x15, 0xf5, 0xec, 0x8d, 0x67, 0xa6, 0x1f, 0xac, 0x1a, 0x4c, 0xb4, 0x48, 0x06, 0x3c, 0x84, - 0x4e, 0x27, 0xaa, 0x1d, 0x25, 0x48, 0x12, 0x34, 0x9f, 0x90, 0x72, 0x1a, 0xe0, 0xa2, 0x6d, 0x99, - 0x5b, 0xe1, 0xa9, 0xc3, 0x49, 0x8d, 0x49, 0x51, 0x1f, 0xcc, 0x40, 0x9e, 0xfc, 0x83, 0xaf, 0x24, - 0xc1, 0x4f, 0xa1, 0xe0, 0xfd, 0x77, 0xcf, 0xe2, 0xc5, 0xf2, 0x0a, 0x27, 0x5a, 0xf4, 0xd5, 0xd3, - 0x45, 0x22, 0x03, 0x62, 0x09, 0xd3, 0xaa, 0xdc, 0x0c, 0x79, 0xf2, 0x2f, 0xf5, 0x3a, 0x88, 0x0e, - 0x2f, 0x4a, 0xb2, 0x09, 0xfa, 0x29, 0x8b, 0xcb, 0x34, 0x7d, 0x6d, 0xfe, 0xb0, 0x04, 0x93, 0x55, - 0xe4, 0x96, 0xb6, 0x51, 0xeb, 0x82, 0xfa, 0x18, 0x7e, 0x01, 0xb4, 0x63, 0x20, 0xd3, 0xbd, 0x6f, - 0xa7, 0x13, 0x2c, 0x80, 0xfa, 0x09, 0xea, 0x0b, 0xd8, 0xce, 0xf7, 0x6e, 0x5e, 0x7f, 0x6e, 0xec, - 0x53, 0x57, 0xbf, 0x84, 0x08, 0x95, 0x39, 0x09, 0x79, 0x1b, 0x39, 0xbb, 0x1d, 0x7f, 0x11, 0x8d, - 0xbe, 0xa9, 0x0f, 0x05, 0xe2, 0x2c, 0x71, 0xe2, 0xbc, 0x59, 0xbc, 0x88, 0x31, 0xc4, 0x2b, 0xcd, - 0xc2, 0x44, 0xc5, 0x34, 0x5c, 0x43, 0xef, 0xa8, 0x2f, 0xca, 0xc2, 0x6c, 0x1d, 0xb9, 0xeb, 0xba, - 0xad, 0xef, 0x20, 0x17, 0xd9, 0x8e, 0xfa, 0x3d, 0xbe, 0x4f, 0xe8, 0x76, 0x74, 0x77, 0xd3, 0xb2, - 0x77, 0x7c, 0xd5, 0xf4, 0xdf, 0x3d, 0xd5, 0xdc, 0x43, 0xb6, 0x13, 0xf2, 0xe5, 0xbf, 0x7a, 0x5f, - 0x2e, 0x5a, 0xf6, 0x05, 0x6f, 0x10, 0xa4, 0xd3, 0x34, 0xfa, 0xea, 0xd1, 0xeb, 0x58, 0x5b, 0xab, - 0x68, 0x0f, 0xf9, 0xe1, 0xd2, 0x82, 0x77, 0x6f, 0x2e, 0xd0, 0xb6, 0xaa, 0x96, 0xeb, 0x75, 0xda, - 0xab, 0xd6, 0x16, 0x89, 0x17, 0x3b, 0xa9, 0xf1, 0x89, 0x61, 0x2e, 0x7d, 0x0f, 0xe1, 0x5c, 0x79, - 0x36, 0x17, 0x4d, 0x54, 0xe6, 0x41, 0x09, 0x7e, 0x6b, 0xa0, 0x0e, 0xda, 0x41, 0xae, 0x7d, 0x09, - 0x5f, 0x0b, 0x31, 0xa9, 0xf5, 0xf9, 0x42, 0x07, 0x68, 0xf1, 0xc9, 0x3a, 0x95, 0xde, 0x3c, 0x27, - 0xb9, 0x03, 0x4d, 0xd6, 0x45, 0x28, 0x8e, 0xe5, 0xda, 0x2b, 0xd9, 0xb3, 0x66, 0x5e, 0x25, 0x43, - 0x16, 0x0f, 0x9e, 0x6f, 0xcd, 0x70, 0x2b, 0x4c, 0x3b, 0xc8, 0x71, 0xf4, 0x2d, 0xe4, 0xaf, 0x30, - 0xd1, 0x57, 0xe5, 0x36, 0xc8, 0x75, 0x30, 0xa6, 0x64, 0x70, 0xb8, 0x96, 0xab, 0x99, 0x67, 0x60, - 0x78, 0xb4, 0x82, 0x91, 0x00, 0xc3, 0xad, 0x91, 0x3f, 0xce, 0xdc, 0x03, 0x39, 0x02, 0xff, 0x14, - 0xe4, 0x16, 0xcb, 0x0b, 0x1b, 0xcb, 0x85, 0x23, 0xde, 0xa3, 0xcf, 0xdf, 0x14, 0xe4, 0x96, 0x8a, - 0x8d, 0xe2, 0x6a, 0x41, 0xf2, 0xea, 0x51, 0xa9, 0x2e, 0xd5, 0x0a, 0xb2, 0x97, 0xb8, 0x5e, 0xac, - 0x56, 0x4a, 0x85, 0xac, 0x32, 0x0d, 0x13, 0xe7, 0x8a, 0x5a, 0xb5, 0x52, 0x5d, 0x2e, 0xe4, 0xd4, - 0xbf, 0x65, 0xf1, 0xbb, 0x9d, 0xc7, 0xef, 0xba, 0x28, 0x9e, 0xfa, 0x41, 0xf6, 0xea, 0x00, 0xb2, - 0x3b, 0x39, 0xc8, 0x7e, 0x5c, 0x84, 0xc8, 0x18, 0xdc, 0x99, 0xf2, 0x30, 0xb1, 0x6e, 0x5b, 0x2d, - 0xe4, 0x38, 0xea, 0xaf, 0x4a, 0x90, 0x2f, 0xe9, 0x66, 0x0b, 0x75, 0xd4, 0x2b, 0x42, 0xa8, 0x88, - 0xab, 0x68, 0x26, 0x38, 0x2d, 0xf6, 0x8f, 0x19, 0xd1, 0xde, 0x8f, 0xd2, 0x9d, 0x27, 0x34, 0x23, - 0xe4, 0x23, 0xd6, 0xcb, 0xc5, 0x92, 0x1a, 0xc3, 0xd5, 0x38, 0x12, 0x4c, 0xd1, 0xd5, 0x80, 0xf3, - 0x88, 0x9d, 0x87, 0x7f, 0x2f, 0x23, 0x3a, 0x39, 0xf4, 0x6b, 0x10, 0x90, 0x89, 0x90, 0x87, 0xd8, - 0x44, 0x70, 0x10, 0xb5, 0x31, 0x6c, 0x1e, 0x4a, 0x30, 0xbd, 0x61, 0x3a, 0xfd, 0x84, 0x22, 0x1e, - 0x47, 0xdf, 0xaf, 0x06, 0x43, 0xe8, 0x40, 0x71, 0xf4, 0x07, 0xd3, 0x4b, 0x5f, 0x30, 0xdf, 0xcb, - 0xc0, 0xf1, 0x65, 0x64, 0x22, 0xdb, 0x68, 0x91, 0x1a, 0xf8, 0x92, 0xb8, 0x93, 0x97, 0xc4, 0x63, - 0x38, 0xce, 0xfb, 0xfd, 0xc1, 0x4b, 0xe0, 0x75, 0x81, 0x04, 0xee, 0xe6, 0x24, 0x70, 0x93, 0x20, - 0x9d, 0x31, 0xdc, 0x87, 0x3e, 0x05, 0x33, 0x55, 0xcb, 0x35, 0x36, 0x8d, 0x16, 0xf1, 0x41, 0x7b, - 0xa5, 0x0c, 0xd9, 0x55, 0xc3, 0x71, 0xd5, 0x62, 0xd8, 0x9d, 0x5c, 0x03, 0xd3, 0x86, 0xd9, 0xea, - 0xec, 0xb6, 0x91, 0x86, 0x74, 0xd2, 0xaf, 0x4c, 0x6a, 0x6c, 0x52, 0xb8, 0xb5, 0xef, 0xb1, 0x25, - 0xfb, 0x5b, 0xfb, 0x9f, 0x11, 0x5e, 0x86, 0x61, 0x59, 0xc0, 0x01, 0x29, 0x23, 0xec, 0xae, 0x22, - 0xcc, 0x9a, 0x4c, 0x56, 0xdf, 0x60, 0xef, 0xbd, 0x50, 0x80, 0x25, 0xa7, 0xf1, 0x7f, 0xa8, 0x1f, - 0x10, 0x6a, 0xac, 0x83, 0x18, 0x4a, 0x86, 0xcc, 0xd2, 0x10, 0x93, 0x64, 0x05, 0xe6, 0x2a, 0xd5, - 0x46, 0x59, 0xab, 0x16, 0x57, 0x69, 0x16, 0x59, 0xfd, 0x37, 0x09, 0x72, 0x1a, 0xea, 0x76, 0x2e, - 0xb1, 0x11, 0xa3, 0xa9, 0xa3, 0x78, 0x26, 0x70, 0x14, 0x57, 0x96, 0x00, 0xf4, 0x96, 0x57, 0x30, - 0xbe, 0x52, 0x4b, 0xea, 0x1b, 0xc7, 0x94, 0xab, 0x60, 0x31, 0xc8, 0xad, 0x31, 0x7f, 0xaa, 0x2f, - 0x16, 0xde, 0x39, 0xe2, 0xa8, 0x61, 0x0e, 0x23, 0xfa, 0x84, 0x0f, 0x0a, 0x6d, 0xf6, 0x0c, 0x24, - 0x77, 0x38, 0xe2, 0xff, 0xaa, 0x04, 0xd9, 0x86, 0xd7, 0x5b, 0x32, 0x1d, 0xe7, 0x1f, 0x0d, 0xa7, - 0xe3, 0x1e, 0x99, 0x08, 0x1d, 0xbf, 0x0b, 0x66, 0x58, 0x8d, 0xa5, 0xae, 0x12, 0xb1, 0x2a, 0xce, - 0xfd, 0x30, 0x8c, 0x86, 0xf7, 0x61, 0xe7, 0x70, 0x44, 0xfc, 0xa9, 0xc7, 0x02, 0xac, 0xa1, 0x9d, - 0xf3, 0xc8, 0x76, 0xb6, 0x8d, 0xae, 0xfa, 0x77, 0x32, 0x4c, 0x2d, 0x23, 0xb7, 0xee, 0xea, 0xee, - 0xae, 0xd3, 0xb3, 0xdd, 0x69, 0x5a, 0x25, 0xbd, 0xb5, 0x8d, 0x68, 0x77, 0xe4, 0xbf, 0xaa, 0xef, - 0x91, 0x45, 0xfd, 0x89, 0xc2, 0x72, 0xe6, 0x83, 0x32, 0x22, 0x30, 0x79, 0x1c, 0x64, 0xdb, 0xba, - 0xab, 0x53, 0x2c, 0xae, 0xe8, 0xc1, 0x22, 0x24, 0xa4, 0xe1, 0x6c, 0xea, 0x6f, 0x49, 0x22, 0x0e, - 0x45, 0x02, 0xe5, 0x27, 0x03, 0xe1, 0x03, 0x99, 0x21, 0x50, 0x38, 0x06, 0xb3, 0xd5, 0x5a, 0xa3, - 0xb9, 0x5a, 0x5b, 0x5e, 0x2e, 0x7b, 0xa9, 0x05, 0x59, 0x39, 0x09, 0xca, 0x7a, 0xf1, 0xbe, 0xb5, - 0x72, 0xb5, 0xd1, 0xac, 0xd6, 0x16, 0xcb, 0xf4, 0xcf, 0xac, 0x72, 0x14, 0xa6, 0x4b, 0xc5, 0xd2, - 0x8a, 0x9f, 0x90, 0x53, 0x4e, 0xc1, 0xf1, 0xb5, 0xf2, 0xda, 0x42, 0x59, 0xab, 0xaf, 0x54, 0xd6, - 0x9b, 0x1e, 0x99, 0xa5, 0xda, 0x46, 0x75, 0xb1, 0x90, 0x57, 0x54, 0x38, 0xc9, 0x7c, 0x39, 0xa7, - 0xd5, 0xaa, 0xcb, 0xcd, 0x7a, 0xa3, 0xd8, 0x28, 0x17, 0x26, 0x94, 0xcb, 0xe0, 0x68, 0xa9, 0x58, - 0xc5, 0xd9, 0x4b, 0xb5, 0x6a, 0xb5, 0x5c, 0x6a, 0x14, 0x26, 0xd5, 0x7f, 0xcf, 0xc2, 0x74, 0xc5, - 0xa9, 0xea, 0x3b, 0xe8, 0xac, 0xde, 0x31, 0xda, 0xea, 0x8b, 0x98, 0x99, 0xc7, 0x75, 0x30, 0x6b, - 0x93, 0x47, 0xd4, 0x6e, 0x18, 0x88, 0xa0, 0x39, 0xab, 0xf1, 0x89, 0xde, 0x9c, 0xdc, 0xc4, 0x04, - 0xfc, 0x39, 0x39, 0x79, 0x53, 0x16, 0x00, 0xc8, 0x53, 0x23, 0xbc, 0xdc, 0xf5, 0x4c, 0x6f, 0x6b, - 0xd2, 0x77, 0x90, 0x83, 0xec, 0x3d, 0xa3, 0x85, 0xfc, 0x9c, 0x1a, 0xf3, 0x97, 0xfa, 0x35, 0x59, - 0x74, 0x7f, 0x91, 0x01, 0x95, 0xa9, 0x4e, 0x44, 0x6f, 0xf8, 0x42, 0x59, 0x64, 0x77, 0x50, 0x88, - 0x64, 0x32, 0x4d, 0x79, 0xa9, 0x34, 0xdc, 0xb2, 0x6d, 0xa3, 0x56, 0x6b, 0xd6, 0x57, 0x6a, 0x5a, - 0xa3, 0x20, 0x2b, 0x33, 0x30, 0xe9, 0xbd, 0xae, 0xd6, 0xaa, 0xcb, 0x85, 0xac, 0x72, 0x02, 0x8e, - 0xad, 0x14, 0xeb, 0xcd, 0x4a, 0xf5, 0x6c, 0x71, 0xb5, 0xb2, 0xd8, 0x2c, 0xad, 0x14, 0xb5, 0x7a, - 0x21, 0xa7, 0x5c, 0x01, 0x27, 0x1a, 0x95, 0xb2, 0xd6, 0x5c, 0x2a, 0x17, 0x1b, 0x1b, 0x5a, 0xb9, - 0xde, 0xac, 0xd6, 0x9a, 0xd5, 0xe2, 0x5a, 0xb9, 0x90, 0xf7, 0x9a, 0x3f, 0xfe, 0x14, 0xaa, 0xcd, - 0xc4, 0x7e, 0x65, 0x9c, 0x8c, 0x50, 0xc6, 0xa9, 0x5e, 0x65, 0x04, 0x56, 0xad, 0xb4, 0x72, 0xbd, - 0xac, 0x9d, 0x2d, 0x17, 0xa6, 0xfb, 0xe9, 0xda, 0x8c, 0x72, 0x1c, 0x0a, 0x1e, 0x0f, 0xcd, 0x4a, - 0xdd, 0xcf, 0xb9, 0x58, 0x98, 0x55, 0x3f, 0x99, 0x87, 0x93, 0x1a, 0xda, 0x32, 0x1c, 0x17, 0xd9, - 0xeb, 0xfa, 0xa5, 0x1d, 0x64, 0xba, 0x7e, 0x27, 0xff, 0x3f, 0x13, 0x2b, 0xe3, 0x1a, 0xcc, 0x76, - 0x09, 0x8d, 0x35, 0xe4, 0x6e, 0x5b, 0x6d, 0x3a, 0x0a, 0x3f, 0x26, 0xb2, 0xe7, 0x98, 0x5f, 0x67, - 0xb3, 0x6b, 0xfc, 0xdf, 0x8c, 0x6e, 0xcb, 0x31, 0xba, 0x9d, 0x1d, 0x46, 0xb7, 0x95, 0xab, 0x60, - 0x6a, 0xd7, 0x41, 0x76, 0x79, 0x47, 0x37, 0x3a, 0xfe, 0xe5, 0x9c, 0x41, 0x82, 0xfa, 0xce, 0xac, - 0xe8, 0x89, 0x15, 0xa6, 0x2e, 0xfd, 0xc5, 0x18, 0xd1, 0xb7, 0x9e, 0x06, 0xa0, 0x95, 0xdd, 0xb0, - 0x3b, 0x54, 0x59, 0x99, 0x14, 0x8f, 0xbf, 0xf3, 0x46, 0xa7, 0x63, 0x98, 0x5b, 0xc1, 0xbe, 0x7f, - 0x98, 0xa0, 0xbe, 0x54, 0x16, 0x39, 0xc1, 0x92, 0x94, 0xb7, 0x64, 0xad, 0xe9, 0xc5, 0xd2, 0x98, - 0xfb, 0xdd, 0xfd, 0x4d, 0x27, 0xaf, 0x14, 0x60, 0x06, 0xa7, 0xd1, 0x16, 0x58, 0x98, 0xf0, 0xfa, - 0x60, 0x9f, 0xdc, 0x5a, 0xb9, 0xb1, 0x52, 0x5b, 0x0c, 0xbe, 0x4d, 0x7a, 0x24, 0x3d, 0x66, 0x8a, - 0xd5, 0xfb, 0x70, 0x6b, 0x9c, 0x52, 0x1e, 0x05, 0x57, 0x30, 0x1d, 0x76, 0x71, 0x55, 0x2b, 0x17, - 0x17, 0xef, 0x6b, 0x96, 0x9f, 0x51, 0xa9, 0x37, 0xea, 0x7c, 0xe3, 0xf2, 0xdb, 0xd1, 0xb4, 0xc7, - 0x6f, 0x79, 0xad, 0x58, 0x59, 0xa5, 0xfd, 0xfb, 0x52, 0x4d, 0x5b, 0x2b, 0x36, 0x0a, 0x33, 0xea, - 0xab, 0x64, 0x28, 0x2c, 0x23, 0x77, 0xdd, 0xb2, 0x5d, 0xbd, 0xb3, 0x6a, 0x98, 0x17, 0x36, 0xec, - 0x0e, 0x37, 0xd9, 0x14, 0x0e, 0xd3, 0xc1, 0x0f, 0x91, 0x1c, 0xc1, 0xe8, 0x1d, 0xf1, 0x2e, 0xce, - 0x16, 0x2a, 0x53, 0x98, 0xa0, 0x3e, 0x5b, 0x12, 0x59, 0xee, 0x16, 0x2f, 0x35, 0x99, 0x9e, 0x3c, - 0x67, 0xdc, 0xe3, 0x73, 0x1f, 0xd4, 0xf2, 0xea, 0xf3, 0xb3, 0x30, 0xb9, 0x64, 0x98, 0x7a, 0xc7, - 0x78, 0x16, 0x17, 0xbf, 0x34, 0xec, 0x63, 0x32, 0x31, 0x7d, 0x8c, 0x34, 0xd4, 0xf8, 0xf9, 0xcb, - 0xb2, 0xe8, 0xf2, 0x02, 0x23, 0x7b, 0x9f, 0xc9, 0x88, 0xc1, 0xf3, 0x23, 0x92, 0xc8, 0xf2, 0xc2, - 0x60, 0x7a, 0xc9, 0x30, 0xfc, 0xf4, 0x0f, 0x87, 0x8d, 0xd5, 0xd3, 0xbe, 0x27, 0xfb, 0xa9, 0xc2, - 0x94, 0xfa, 0x67, 0x32, 0xa8, 0xcb, 0xc8, 0x3d, 0x8b, 0xec, 0x60, 0x2a, 0x80, 0x7b, 0x7d, 0x6a, - 0x6f, 0x33, 0x4d, 0xf6, 0xad, 0x2c, 0x80, 0xe7, 0x78, 0x00, 0x8b, 0x31, 0x8d, 0x27, 0x82, 0x74, - 0x44, 0xe3, 0xad, 0x40, 0xde, 0xc1, 0xdf, 0xa9, 0x9a, 0x3d, 0x3e, 0x7a, 0xb8, 0xc4, 0xc4, 0x58, - 0xea, 0x84, 0xb0, 0x46, 0x09, 0xa8, 0xdf, 0x0f, 0x26, 0x41, 0x3f, 0xc9, 0x69, 0xc7, 0xd2, 0x81, - 0x99, 0x4d, 0xa6, 0x2f, 0x76, 0xba, 0xea, 0xd2, 0xcf, 0xbe, 0x51, 0x3f, 0x92, 0x83, 0xe3, 0xfd, - 0xaa, 0xa3, 0xfe, 0x76, 0x86, 0xdb, 0x61, 0x47, 0x78, 0xc8, 0xcf, 0xd0, 0x0d, 0x44, 0xef, 0x45, - 0x79, 0x22, 0x9c, 0x08, 0x96, 0xe1, 0x1a, 0x56, 0x15, 0x5d, 0x74, 0x3a, 0xc8, 0x75, 0x91, 0x8d, - 0xab, 0x36, 0xa9, 0xf5, 0xff, 0xa8, 0x3c, 0x05, 0x2e, 0x37, 0x4c, 0xc7, 0x68, 0x23, 0xbb, 0x61, - 0x74, 0x9d, 0xa2, 0xd9, 0x6e, 0xec, 0xba, 0x96, 0x6d, 0xe8, 0xf4, 0x2a, 0xc9, 0x49, 0x2d, 0xea, - 0xb3, 0x72, 0x23, 0x14, 0x0c, 0xa7, 0x66, 0x9e, 0xb7, 0x74, 0xbb, 0x6d, 0x98, 0x5b, 0xab, 0x86, - 0xe3, 0x52, 0x0f, 0xe0, 0x7d, 0xe9, 0xea, 0xdf, 0xcb, 0xa2, 0x87, 0xe9, 0x06, 0xc0, 0x1a, 0xd1, - 0xa1, 0xbc, 0x40, 0x16, 0x39, 0x1e, 0x97, 0x8c, 0x76, 0x32, 0x65, 0x79, 0xde, 0xb8, 0x0d, 0x89, - 0xfe, 0x23, 0x38, 0xee, 0x5a, 0x48, 0xba, 0x6f, 0x08, 0x9c, 0x2d, 0x6b, 0x95, 0xa5, 0x4a, 0xd9, - 0x33, 0x2b, 0x4e, 0xc0, 0xb1, 0xf0, 0xdb, 0xe2, 0x7d, 0xcd, 0x7a, 0xb9, 0xda, 0x28, 0x4c, 0x7a, - 0xfd, 0x14, 0x49, 0x5e, 0x2a, 0x56, 0x56, 0xcb, 0x8b, 0xcd, 0x46, 0xcd, 0xfb, 0xb2, 0x38, 0x9c, - 0x69, 0xa1, 0x3e, 0x98, 0x85, 0xa3, 0x58, 0xb6, 0x97, 0xb0, 0x54, 0x3d, 0xa1, 0xf4, 0xf8, 0xda, - 0x06, 0x00, 0x4d, 0x11, 0xf1, 0xaa, 0x9f, 0x13, 0xbe, 0x29, 0x93, 0x81, 0xb0, 0xa7, 0x8c, 0x08, - 0xcd, 0xf8, 0x9e, 0x24, 0x12, 0xa1, 0x42, 0x98, 0x6c, 0x32, 0xa5, 0xf8, 0x97, 0x71, 0x8f, 0x38, - 0xd1, 0xe0, 0x63, 0x2b, 0xb3, 0x84, 0x7f, 0x7e, 0xc6, 0x7a, 0x45, 0xc3, 0xea, 0x30, 0x07, 0x80, - 0x53, 0xb0, 0x06, 0x11, 0x3d, 0xe8, 0x3b, 0x5e, 0x45, 0xe9, 0x41, 0xb1, 0xd4, 0xa8, 0x9c, 0x2d, - 0x47, 0xe9, 0xc1, 0x67, 0x65, 0x98, 0x5c, 0x46, 0xae, 0x37, 0xa7, 0x72, 0xd4, 0xa7, 0x0a, 0xac, - 0xff, 0x78, 0x66, 0x4c, 0xc7, 0x6a, 0xe9, 0x9d, 0x60, 0x19, 0x80, 0xbc, 0xa9, 0xcf, 0x1d, 0xc6, - 0x04, 0xf1, 0x8b, 0x8e, 0x18, 0xaf, 0x9e, 0x0c, 0x39, 0xd7, 0xfb, 0x4c, 0x97, 0xa1, 0x7f, 0x2c, - 0x72, 0xb8, 0xf2, 0x88, 0x2c, 0xea, 0xae, 0xae, 0x91, 0xfc, 0xcc, 0xe8, 0x24, 0x68, 0xbb, 0x44, - 0x30, 0xf2, 0xc3, 0x68, 0x7f, 0xfe, 0xad, 0x0c, 0x27, 0x48, 0xfb, 0x28, 0x76, 0xbb, 0x75, 0xd7, - 0xb2, 0x91, 0x86, 0x5a, 0xc8, 0xe8, 0xba, 0x3d, 0xeb, 0x7b, 0x36, 0x49, 0xf5, 0x37, 0x9b, 0xe9, - 0xab, 0xfa, 0x26, 0x59, 0x34, 0x06, 0xf3, 0xbe, 0xf6, 0xd8, 0x53, 0x5e, 0x44, 0x63, 0xff, 0x84, - 0x24, 0x12, 0x55, 0x39, 0x21, 0xf1, 0x64, 0x40, 0x7d, 0xf4, 0x10, 0x80, 0xf2, 0x57, 0x6e, 0xb4, - 0x72, 0xa9, 0x5c, 0x59, 0xf7, 0x06, 0x81, 0xab, 0xe1, 0xca, 0xf5, 0x0d, 0xad, 0xb4, 0x52, 0xac, - 0x97, 0x9b, 0x5a, 0x79, 0xb9, 0x52, 0x6f, 0x50, 0xa7, 0x2c, 0xf2, 0xd7, 0x84, 0x72, 0x15, 0x9c, - 0xaa, 0x6f, 0x2c, 0xd4, 0x4b, 0x5a, 0x65, 0x1d, 0xa7, 0x6b, 0xe5, 0x6a, 0xf9, 0x1c, 0xfd, 0x3a, - 0xa9, 0x7e, 0xa8, 0x00, 0xd3, 0xde, 0x04, 0xa0, 0x4e, 0xe6, 0x05, 0xea, 0xb7, 0xb3, 0x30, 0xad, - 0x21, 0xc7, 0xea, 0xec, 0xe1, 0x39, 0xc2, 0xb8, 0xa6, 0x1e, 0xdf, 0x95, 0x45, 0xcf, 0x6f, 0x33, - 0xcc, 0xce, 0x33, 0x8c, 0x46, 0x4f, 0x34, 0xf5, 0x3d, 0xdd, 0xe8, 0xe8, 0xe7, 0x69, 0x57, 0x33, - 0xa9, 0x85, 0x09, 0xca, 0x3c, 0x28, 0xd6, 0x45, 0x13, 0xd9, 0xf5, 0xd6, 0xc5, 0xb2, 0xbb, 0x5d, - 0x6c, 0xb7, 0x6d, 0xe4, 0x38, 0x74, 0xf5, 0xa2, 0xcf, 0x17, 0xe5, 0x06, 0x38, 0x8a, 0x53, 0x99, - 0xcc, 0xc4, 0x41, 0xa6, 0x37, 0x39, 0xc8, 0x59, 0x34, 0x2f, 0xf9, 0x39, 0x73, 0x4c, 0xce, 0x30, - 0x99, 0x3d, 0x2e, 0x91, 0xe7, 0x4f, 0xe9, 0x5c, 0x03, 0xd3, 0xa6, 0xbe, 0x83, 0xca, 0x0f, 0x74, - 0x0d, 0x1b, 0x39, 0xd8, 0x31, 0x46, 0xd6, 0xd8, 0x24, 0xf5, 0x23, 0x42, 0xe7, 0xcd, 0xc5, 0x24, - 0x96, 0x4c, 0xf7, 0x97, 0x87, 0x50, 0xfd, 0x3e, 0xfd, 0x8c, 0xac, 0x7e, 0x48, 0x86, 0x19, 0xca, - 0x54, 0xd1, 0xbc, 0x54, 0x69, 0xab, 0x57, 0x73, 0xc6, 0xaf, 0xee, 0xa5, 0xf9, 0xc6, 0x2f, 0x7e, - 0x51, 0x7f, 0x5e, 0x16, 0x75, 0x77, 0xee, 0x53, 0x71, 0x5c, 0x46, 0xb4, 0xe3, 0xe8, 0xa6, 0xb5, - 0x4b, 0x1d, 0x55, 0x27, 0x35, 0xf2, 0x92, 0xe6, 0xa2, 0x9e, 0xfa, 0x7b, 0x42, 0xce, 0xd4, 0x82, - 0xd5, 0x38, 0x24, 0x00, 0x3f, 0x25, 0xc3, 0x1c, 0xe5, 0xaa, 0x4e, 0xcf, 0xf9, 0x08, 0x1d, 0x78, - 0xfb, 0x45, 0x61, 0x43, 0xb0, 0x4f, 0xfd, 0x69, 0x49, 0x8f, 0x18, 0x20, 0x3f, 0x26, 0x14, 0x1c, - 0x4d, 0xb8, 0x22, 0x87, 0x04, 0xe5, 0xbb, 0xb2, 0x30, 0xbd, 0xe1, 0x20, 0x9b, 0xfa, 0xed, 0xab, - 0x0f, 0x65, 0x41, 0x5e, 0x46, 0xdc, 0x46, 0xea, 0x4b, 0x84, 0x3d, 0x7c, 0xd9, 0xca, 0x32, 0x44, - 0x3d, 0x1b, 0x29, 0x02, 0xb6, 0xeb, 0x61, 0x8e, 0x88, 0xb4, 0xe8, 0xba, 0x9e, 0x91, 0xe8, 0x7b, - 0xd3, 0xf6, 0xa4, 0x8e, 0x62, 0xab, 0x08, 0x97, 0xe5, 0x65, 0x29, 0x79, 0x3c, 0xad, 0xa2, 0x4d, - 0x32, 0x9f, 0xcd, 0x6a, 0x3d, 0xa9, 0xca, 0x2d, 0x70, 0x99, 0xd5, 0x45, 0xe4, 0xfc, 0x0a, 0x93, - 0x39, 0x87, 0x33, 0xf7, 0xfb, 0xa4, 0x7e, 0x5b, 0xc8, 0x57, 0x57, 0x5c, 0x3a, 0xc9, 0x74, 0xa1, - 0x3b, 0x1a, 0x93, 0xe4, 0x38, 0x14, 0xbc, 0x1c, 0x78, 0xff, 0x45, 0x2b, 0xd7, 0x6b, 0xab, 0x67, - 0xcb, 0xfd, 0x97, 0x31, 0x72, 0xea, 0xf3, 0x64, 0x98, 0x5a, 0xb0, 0x2d, 0xbd, 0xdd, 0xd2, 0x1d, - 0x57, 0xfd, 0xbe, 0x04, 0x33, 0xeb, 0xfa, 0xa5, 0x8e, 0xa5, 0xb7, 0xb1, 0x7f, 0x7f, 0x4f, 0x5f, - 0xd0, 0x25, 0x9f, 0xfc, 0xbe, 0x80, 0xbe, 0xf2, 0x07, 0x03, 0x83, 0xa3, 0x7b, 0x19, 0x91, 0x0b, - 0x35, 0x83, 0x6d, 0x3e, 0xa9, 0x5f, 0xb0, 0x52, 0x9f, 0xaf, 0x79, 0x96, 0xa7, 0x08, 0x8b, 0xf2, - 0x43, 0x62, 0xe1, 0x47, 0x45, 0x48, 0x1e, 0xce, 0xae, 0xfc, 0xf3, 0x27, 0x21, 0xbf, 0x88, 0xb0, - 0x15, 0xf7, 0xdf, 0x25, 0x98, 0xa8, 0x23, 0x17, 0x5b, 0x70, 0xb7, 0x71, 0x9e, 0xc2, 0x6d, 0x9c, - 0x21, 0x74, 0x62, 0xf7, 0xdf, 0xbd, 0xc9, 0x3a, 0x73, 0xde, 0x1a, 0x3f, 0x27, 0xf0, 0x48, 0x24, - 0xe5, 0xce, 0xd3, 0x32, 0x0f, 0xe4, 0x91, 0x18, 0x4b, 0x2a, 0x7d, 0x5f, 0xab, 0xf7, 0x48, 0xd4, - 0xb5, 0x8a, 0xe9, 0xf5, 0x5e, 0xcf, 0xea, 0x67, 0xac, 0xb7, 0x19, 0x65, 0x3e, 0xc6, 0x39, 0xea, - 0x09, 0x30, 0x41, 0x64, 0xee, 0xcf, 0x47, 0x7b, 0xfd, 0x14, 0x08, 0x09, 0x7c, 0xf6, 0xda, 0xcf, - 0x29, 0xe8, 0xa2, 0x16, 0x5d, 0xf8, 0x58, 0x62, 0x10, 0xcc, 0x54, 0x91, 0x7b, 0xd1, 0xb2, 0x2f, - 0xd4, 0x5d, 0xdd, 0x45, 0xea, 0xbf, 0x48, 0x20, 0xd7, 0x91, 0xcb, 0x46, 0x3f, 0xa9, 0xc2, 0x31, - 0x52, 0x21, 0x9a, 0x11, 0xf7, 0xdf, 0xa4, 0x22, 0xd7, 0xf4, 0x15, 0x02, 0x93, 0x4f, 0xdb, 0xff, - 0xab, 0xfa, 0xab, 0x7d, 0x83, 0x3e, 0x49, 0x7d, 0x26, 0x0d, 0x54, 0x32, 0x2c, 0x83, 0x9e, 0x82, - 0x45, 0xe8, 0xe9, 0x87, 0x85, 0xcc, 0x6a, 0x31, 0x9a, 0x87, 0xd3, 0x15, 0x7c, 0xec, 0x0a, 0xc8, - 0x96, 0xb6, 0x75, 0x57, 0x7d, 0xb7, 0x0c, 0x50, 0x6c, 0xb7, 0xd7, 0x88, 0x0f, 0x38, 0xeb, 0x90, - 0x76, 0x06, 0x66, 0x5a, 0xdb, 0x7a, 0x78, 0xb7, 0x09, 0xe9, 0x0f, 0xb8, 0x34, 0xe5, 0x89, 0xa1, - 0x33, 0x39, 0x91, 0xaa, 0xda, 0x03, 0x93, 0x57, 0x06, 0xa5, 0x1d, 0x38, 0x9a, 0xf3, 0xa1, 0x30, - 0x63, 0x8f, 0xd0, 0x79, 0xbf, 0xcf, 0x87, 0xec, 0x45, 0xcf, 0xe1, 0x28, 0xe9, 0xe0, 0x80, 0x4d, - 0x98, 0x90, 0xf0, 0xa4, 0xb7, 0x58, 0x40, 0x8f, 0x78, 0xbe, 0xc6, 0x12, 0xba, 0x56, 0x29, 0xb7, - 0x0d, 0x5f, 0xb4, 0x34, 0x60, 0x96, 0xfa, 0xe2, 0x4c, 0x32, 0xf8, 0xe2, 0x05, 0x77, 0x37, 0xcc, - 0xa2, 0xb6, 0xe1, 0x22, 0xbf, 0x96, 0x54, 0x80, 0x71, 0x10, 0xf3, 0x3f, 0xa8, 0xcf, 0x11, 0x0e, - 0xba, 0x86, 0x05, 0xba, 0xbf, 0x46, 0x11, 0xed, 0x4f, 0x2c, 0x8c, 0x9a, 0x18, 0xcd, 0xf4, 0xc1, - 0x7a, 0xae, 0x0c, 0x27, 0x1a, 0xd6, 0xd6, 0x56, 0x07, 0xf9, 0x62, 0x42, 0xc4, 0x3b, 0x53, 0xd5, - 0x47, 0x09, 0x17, 0xde, 0x09, 0xb2, 0xee, 0x37, 0x82, 0xa3, 0x64, 0xde, 0x0b, 0x7f, 0x62, 0x2a, - 0x76, 0x16, 0x85, 0xc5, 0xd5, 0x97, 0xcf, 0x08, 0x14, 0xc4, 0x02, 0x3e, 0x0b, 0x93, 0x4d, 0x1f, - 0x88, 0x2f, 0x49, 0x30, 0x4b, 0x6e, 0xae, 0xf4, 0x15, 0xf4, 0xde, 0x11, 0x02, 0xa0, 0x7e, 0x3f, - 0x23, 0xea, 0x67, 0x8b, 0x65, 0xc2, 0x71, 0x12, 0x21, 0x62, 0xb1, 0xa0, 0x2a, 0x03, 0xc9, 0xa5, - 0x2f, 0xda, 0x3f, 0x96, 0x61, 0x7a, 0x19, 0xf9, 0x2d, 0xcd, 0x49, 0xdc, 0x13, 0x9d, 0x81, 0x19, - 0x7c, 0x7d, 0x5b, 0x8d, 0x1e, 0x93, 0x24, 0xab, 0x66, 0x5c, 0x9a, 0x72, 0x1d, 0xcc, 0x9e, 0x47, - 0x9b, 0x96, 0x8d, 0x6a, 0xdc, 0x59, 0x4a, 0x3e, 0x31, 0x22, 0x3c, 0x1d, 0x17, 0x07, 0x6d, 0x81, - 0xc7, 0xe6, 0xa6, 0xfd, 0xc2, 0x64, 0xaa, 0x12, 0x31, 0xe6, 0x3c, 0x09, 0x26, 0x29, 0xf2, 0xbe, - 0x99, 0x16, 0xd7, 0x2f, 0x06, 0x79, 0xd5, 0x5f, 0x0f, 0x10, 0x2d, 0x73, 0x88, 0x3e, 0x3e, 0x09, - 0x13, 0x63, 0xb9, 0xdf, 0xbd, 0xc0, 0x94, 0xbf, 0x70, 0xa9, 0xd2, 0x76, 0xd4, 0xb5, 0x64, 0x98, - 0x9e, 0x06, 0x08, 0x1a, 0x87, 0x1f, 0xd6, 0x82, 0x49, 0xe1, 0x23, 0xd7, 0xc7, 0x1e, 0xd4, 0xeb, - 0x15, 0x07, 0x66, 0x67, 0xc4, 0xc0, 0x88, 0x1d, 0xf0, 0x13, 0xe1, 0x24, 0x7d, 0x74, 0x3e, 0x23, - 0xc3, 0x89, 0xe0, 0xfc, 0xd1, 0xaa, 0xee, 0x84, 0xed, 0xae, 0x94, 0x0c, 0x22, 0xee, 0xc0, 0x47, - 0xd0, 0x58, 0xbe, 0x93, 0x6c, 0xcc, 0xe8, 0xcb, 0xc9, 0x68, 0xd1, 0x51, 0x6e, 0x82, 0x63, 0xe6, - 0xee, 0x4e, 0x20, 0x75, 0xdc, 0xe2, 0x69, 0x0b, 0xdf, 0xff, 0x21, 0xc9, 0xc8, 0x24, 0xc2, 0xfc, - 0x58, 0xe6, 0x94, 0xdc, 0x91, 0xae, 0xc7, 0x25, 0x82, 0x51, 0xfd, 0xe7, 0x4c, 0xa2, 0xde, 0x6d, - 0xf0, 0x99, 0xaf, 0x04, 0xbd, 0xd4, 0x21, 0x1e, 0xf8, 0x3a, 0x33, 0x01, 0xb9, 0xf2, 0x4e, 0xd7, - 0xbd, 0x74, 0xe6, 0xd1, 0x30, 0x5b, 0x77, 0x6d, 0xa4, 0xef, 0x30, 0x3b, 0x03, 0xae, 0x75, 0x01, - 0x99, 0xfe, 0xce, 0x00, 0x7e, 0xb9, 0xfd, 0x36, 0x98, 0x30, 0xad, 0xa6, 0xbe, 0xeb, 0x6e, 0x2b, - 0x57, 0xef, 0x3b, 0x52, 0x4f, 0xc1, 0xaf, 0xd1, 0x18, 0x46, 0x5f, 0xbb, 0x03, 0xaf, 0x0d, 0xe7, - 0x4d, 0xab, 0xb8, 0xeb, 0x6e, 0x2f, 0x5c, 0xf5, 0xa9, 0xbf, 0x39, 0x9d, 0xf9, 0xec, 0xdf, 0x9c, - 0xce, 0x7c, 0xf5, 0x6f, 0x4e, 0x67, 0x7e, 0xf1, 0xeb, 0xa7, 0x8f, 0x7c, 0xf6, 0xeb, 0xa7, 0x8f, - 0x7c, 0xe9, 0xeb, 0xa7, 0x8f, 0xfc, 0xa4, 0xd4, 0x3d, 0x7f, 0x3e, 0x8f, 0xa9, 0x3c, 0xe1, 0xff, - 0x0f, 0x00, 0x00, 0xff, 0xff, 0xe2, 0xbc, 0xff, 0xf5, 0x44, 0x00, 0x02, 0x00, + 0x72, 0x5a, 0xb6, 0xd1, 0x75, 0x2d, 0x9b, 0xe4, 0x38, 0xf3, 0xf2, 0x9f, 0x9d, 0x04, 0x59, 0xeb, + 0xb6, 0xd4, 0xef, 0x4c, 0x80, 0x5c, 0xec, 0x76, 0xd5, 0x8f, 0x4b, 0x00, 0xcb, 0xc8, 0x3d, 0x8b, + 0x6c, 0xc7, 0xb0, 0x4c, 0xf5, 0x28, 0x4c, 0x68, 0xe8, 0x19, 0xbb, 0xc8, 0x71, 0x6f, 0xcf, 0x3e, + 0xef, 0x1b, 0x72, 0x46, 0x7d, 0x58, 0x82, 0x49, 0x0d, 0x39, 0x5d, 0xcb, 0x74, 0x90, 0x72, 0x37, + 0xe4, 0x90, 0x6d, 0x5b, 0xf6, 0xa9, 0xcc, 0x35, 0x99, 0x1b, 0xa6, 0x6f, 0xbd, 0x71, 0x9e, 0x56, + 0x7f, 0x5e, 0xeb, 0xb6, 0xe6, 0x8b, 0xdd, 0xee, 0x7c, 0x48, 0x69, 0xde, 0xff, 0x69, 0xbe, 0xec, + 0xfd, 0xa1, 0x91, 0x1f, 0x95, 0x53, 0x30, 0xb1, 0x47, 0x32, 0x9c, 0x92, 0xae, 0xc9, 0xdc, 0x30, + 0xa5, 0xf9, 0xaf, 0xde, 0x97, 0x36, 0x72, 0x75, 0xa3, 0xe3, 0x9c, 0x92, 0xc9, 0x17, 0xfa, 0xaa, + 0x3e, 0x94, 0x81, 0x1c, 0x26, 0xa2, 0x94, 0x20, 0xdb, 0xb2, 0xda, 0x08, 0x17, 0x3f, 0x77, 0xeb, + 0xcd, 0xe2, 0xc5, 0xcf, 0x97, 0xac, 0x36, 0xd2, 0xf0, 0xcf, 0xca, 0x35, 0x30, 0xed, 0x8b, 0x25, + 0x64, 0x83, 0x4d, 0x3a, 0x73, 0x2b, 0x64, 0xbd, 0xfc, 0xca, 0x24, 0x64, 0xab, 0x1b, 0xab, 0xab, + 0x85, 0x23, 0xca, 0x31, 0x98, 0xdd, 0xa8, 0xde, 0x5b, 0xad, 0x9d, 0xab, 0x36, 0xcb, 0x9a, 0x56, + 0xd3, 0x0a, 0x19, 0x65, 0x16, 0xa6, 0x16, 0x8a, 0x8b, 0xcd, 0x4a, 0x75, 0x7d, 0xa3, 0x51, 0x90, + 0xd4, 0xd7, 0xc8, 0x30, 0x57, 0x47, 0xee, 0x22, 0xda, 0x33, 0x5a, 0xa8, 0xee, 0xea, 0x2e, 0x52, + 0x5f, 0x9c, 0x09, 0x84, 0xa9, 0x6c, 0x78, 0x85, 0x06, 0x9f, 0x68, 0x05, 0x9e, 0xb0, 0xaf, 0x02, + 0x3c, 0x85, 0x79, 0xfa, 0xf7, 0x3c, 0x93, 0xa6, 0xb1, 0x74, 0xce, 0x3c, 0x0e, 0xa6, 0x99, 0x6f, + 0xca, 0x1c, 0xc0, 0x42, 0xb1, 0x74, 0xef, 0xb2, 0x56, 0xdb, 0xa8, 0x2e, 0x16, 0x8e, 0x78, 0xef, + 0x4b, 0x35, 0xad, 0x4c, 0xdf, 0x33, 0xea, 0xf7, 0x32, 0x0c, 0x98, 0x8b, 0x3c, 0x98, 0xf3, 0x83, + 0x99, 0xe9, 0x03, 0xa8, 0xfa, 0xc6, 0x00, 0x9c, 0x65, 0x0e, 0x9c, 0x27, 0x24, 0x23, 0x97, 0x3e, + 0x40, 0x0f, 0x4a, 0x30, 0x59, 0xdf, 0xde, 0x75, 0xdb, 0xd6, 0x45, 0x53, 0x9d, 0x0a, 0x90, 0x51, + 0xbf, 0xc5, 0xca, 0xe4, 0xa9, 0xbc, 0x4c, 0x6e, 0xd8, 0x5f, 0x09, 0x4a, 0x21, 0x42, 0x1a, 0xaf, + 0x0b, 0xa4, 0x51, 0xe4, 0xa4, 0xf1, 0x38, 0x51, 0x42, 0xe9, 0xcb, 0xe1, 0x15, 0x4f, 0x86, 0x5c, + 0xbd, 0xab, 0xb7, 0x90, 0xfa, 0xc7, 0x32, 0xcc, 0xac, 0x22, 0x7d, 0x0f, 0x15, 0xbb, 0x5d, 0xdb, + 0xda, 0x43, 0x6a, 0x29, 0xd4, 0xd7, 0x53, 0x30, 0xe1, 0x78, 0x99, 0x2a, 0x6d, 0x5c, 0x83, 0x29, + 0xcd, 0x7f, 0x55, 0x4e, 0x03, 0x18, 0x6d, 0x64, 0xba, 0x86, 0x6b, 0x20, 0xe7, 0x94, 0x74, 0x8d, + 0x7c, 0xc3, 0x94, 0xc6, 0xa4, 0xa8, 0xdf, 0x91, 0x44, 0x75, 0x0c, 0x73, 0x31, 0xcf, 0x72, 0x10, + 0x21, 0xd5, 0x37, 0x48, 0x22, 0x3a, 0x36, 0x90, 0x5c, 0x32, 0xd9, 0xbe, 0x2d, 0x93, 0x5c, 0xb8, + 0x5e, 0x8e, 0x6a, 0xad, 0x59, 0xdf, 0x28, 0xad, 0x34, 0xeb, 0xeb, 0xc5, 0x52, 0xb9, 0x80, 0x94, + 0xe3, 0x50, 0xc0, 0x8f, 0xcd, 0x4a, 0xbd, 0xb9, 0x58, 0x5e, 0x2d, 0x37, 0xca, 0x8b, 0x85, 0x4d, + 0x45, 0x81, 0x39, 0xad, 0xfc, 0xb4, 0x8d, 0x72, 0xbd, 0xd1, 0x5c, 0x2a, 0x56, 0x56, 0xcb, 0x8b, + 0x85, 0x2d, 0xef, 0xe7, 0xd5, 0xca, 0x5a, 0xa5, 0xd1, 0xd4, 0xca, 0xc5, 0xd2, 0x4a, 0x79, 0xb1, + 0xb0, 0xad, 0x5c, 0x0e, 0x97, 0x55, 0x6b, 0xcd, 0xe2, 0xfa, 0xba, 0x56, 0x3b, 0x5b, 0x6e, 0xd2, + 0x3f, 0xea, 0x05, 0x83, 0x14, 0xd4, 0x68, 0xd6, 0x57, 0x8a, 0x5a, 0xb9, 0xb8, 0xb0, 0x5a, 0x2e, + 0xdc, 0xaf, 0x3e, 0x5b, 0x86, 0xd9, 0x35, 0xfd, 0x02, 0xaa, 0x6f, 0xeb, 0x36, 0xd2, 0xcf, 0x77, + 0x90, 0x7a, 0xad, 0x00, 0x9e, 0xea, 0x1f, 0xb3, 0x78, 0x95, 0x79, 0xbc, 0x6e, 0xee, 0x23, 0x60, + 0xae, 0x88, 0x08, 0xc0, 0xfe, 0x67, 0xd0, 0x0c, 0x56, 0x38, 0xc0, 0x9e, 0x98, 0x90, 0x5e, 0x32, + 0xc4, 0x7e, 0xee, 0x11, 0x80, 0x98, 0xfa, 0x65, 0x19, 0xe6, 0x2a, 0xe6, 0x9e, 0xe1, 0xa2, 0x65, + 0x64, 0x22, 0xdb, 0x1b, 0x07, 0x84, 0x60, 0x78, 0x58, 0x66, 0x60, 0x58, 0xe2, 0x61, 0xb8, 0xa5, + 0x8f, 0xd8, 0xf8, 0x32, 0x22, 0x46, 0xdb, 0xab, 0x60, 0xca, 0xc0, 0xf9, 0x4a, 0x46, 0x9b, 0x4a, + 0x2c, 0x4c, 0x50, 0xae, 0x83, 0x59, 0xf2, 0xb2, 0x64, 0x74, 0xd0, 0xbd, 0xe8, 0x12, 0x1d, 0x77, + 0xf9, 0x44, 0xf5, 0x17, 0x82, 0xc6, 0x57, 0xe1, 0xb0, 0xfc, 0x89, 0xa4, 0x4c, 0x25, 0x03, 0xf3, + 0x65, 0x8f, 0x84, 0xe6, 0xb7, 0xaf, 0x95, 0x19, 0xea, 0xf7, 0x25, 0x98, 0xae, 0xbb, 0x56, 0xd7, + 0x53, 0x59, 0xc3, 0xdc, 0x12, 0x03, 0xf7, 0x93, 0x6c, 0x1b, 0x2b, 0xf1, 0xe0, 0x3e, 0xae, 0x8f, + 0x1c, 0x99, 0x02, 0x22, 0x5a, 0xd8, 0x77, 0x82, 0x16, 0xb6, 0xc4, 0xa1, 0x72, 0x6b, 0x22, 0x6a, + 0x3f, 0x84, 0xed, 0xeb, 0x65, 0x32, 0x14, 0x7c, 0x35, 0x73, 0x4b, 0xbb, 0xb6, 0x8d, 0x4c, 0x57, + 0x0c, 0x84, 0xbf, 0x62, 0x41, 0x58, 0xe1, 0x41, 0xb8, 0x35, 0x46, 0x99, 0xfd, 0x52, 0x52, 0x6c, + 0x63, 0x1f, 0x0e, 0xd0, 0xbc, 0x97, 0x43, 0xf3, 0x27, 0x93, 0xb3, 0x95, 0x0c, 0xd2, 0x95, 0x21, + 0x10, 0x3d, 0x0e, 0x05, 0x6f, 0x4c, 0x2a, 0x35, 0x2a, 0x67, 0xcb, 0xcd, 0x4a, 0xf5, 0x6c, 0xa5, + 0x51, 0x2e, 0x20, 0xf5, 0xa5, 0x32, 0xcc, 0x10, 0xd6, 0x34, 0xb4, 0x67, 0x5d, 0x10, 0xec, 0xf5, + 0xbe, 0x9c, 0xd0, 0x58, 0x60, 0x4b, 0x88, 0x68, 0x19, 0x2f, 0x48, 0x60, 0x2c, 0xc4, 0x90, 0x7b, + 0x24, 0xf5, 0x56, 0xfb, 0x9a, 0xc1, 0x56, 0x9f, 0xd6, 0xd2, 0xb7, 0xb7, 0x7a, 0x59, 0x16, 0x80, + 0x54, 0xf2, 0xac, 0x81, 0x2e, 0xaa, 0x6b, 0x21, 0x26, 0x9c, 0xda, 0x66, 0x06, 0xaa, 0xad, 0xd4, + 0x4f, 0x6d, 0xdf, 0xc7, 0x8e, 0x59, 0x0b, 0x3c, 0x7a, 0x37, 0x45, 0x8a, 0xdb, 0xe3, 0x24, 0x7a, + 0x76, 0xe8, 0x2b, 0x8a, 0xc4, 0x5b, 0x9d, 0x57, 0xc1, 0x14, 0x7e, 0xac, 0xea, 0x3b, 0x88, 0xb6, + 0xa1, 0x30, 0x41, 0x39, 0x03, 0x33, 0x24, 0x63, 0xcb, 0x32, 0xbd, 0xfa, 0x64, 0x71, 0x06, 0x2e, + 0xcd, 0x03, 0xb1, 0x65, 0x23, 0xdd, 0xb5, 0x6c, 0x4c, 0x23, 0x47, 0x40, 0x64, 0x92, 0xd4, 0x6f, + 0x06, 0xad, 0xb0, 0xcc, 0x69, 0xce, 0xe3, 0x93, 0x54, 0x25, 0x99, 0xde, 0xec, 0x0d, 0xd7, 0xfe, + 0x48, 0xab, 0x6b, 0x7a, 0x68, 0x2f, 0xe1, 0xa9, 0x1d, 0x52, 0x4e, 0x82, 0x42, 0x53, 0xbd, 0xbc, + 0xa5, 0x5a, 0xb5, 0x51, 0xae, 0x36, 0x0a, 0x9b, 0x7d, 0x35, 0x6a, 0x4b, 0x7d, 0x43, 0x16, 0xb2, + 0xf7, 0x58, 0x86, 0xa9, 0x3e, 0x98, 0xe1, 0x54, 0xc2, 0x44, 0xee, 0x45, 0xcb, 0xbe, 0x10, 0x34, + 0xd4, 0x30, 0x21, 0x1e, 0x9b, 0x50, 0x95, 0xe4, 0x81, 0xaa, 0x94, 0xed, 0xa7, 0x4a, 0xbf, 0xcc, + 0xaa, 0xd2, 0x1d, 0xbc, 0x2a, 0x5d, 0xdf, 0x47, 0xfe, 0x1e, 0xf3, 0x11, 0x1d, 0xc0, 0x27, 0x82, + 0x0e, 0xe0, 0x2e, 0x0e, 0xc6, 0xc7, 0x8a, 0x91, 0x49, 0x06, 0xe0, 0x97, 0x52, 0x6d, 0xf8, 0xfd, + 0xa0, 0xde, 0x8a, 0x80, 0x7a, 0xbb, 0x4f, 0x9f, 0x60, 0xec, 0xef, 0x3a, 0xee, 0xdf, 0xdf, 0x4d, + 0x5c, 0x50, 0x4e, 0xc0, 0xb1, 0xc5, 0xca, 0xd2, 0x52, 0x59, 0x2b, 0x57, 0x1b, 0xcd, 0x6a, 0xb9, + 0x71, 0xae, 0xa6, 0xdd, 0x5b, 0xe8, 0xa8, 0x0f, 0xc9, 0x00, 0x9e, 0x84, 0x4a, 0xba, 0xd9, 0x42, + 0x1d, 0xb1, 0x1e, 0xfd, 0xff, 0x96, 0x92, 0xf5, 0x09, 0x21, 0xfd, 0x08, 0x38, 0x5f, 0x2d, 0x89, + 0xb7, 0xca, 0x48, 0x62, 0xc9, 0x40, 0x7d, 0xcb, 0x23, 0xc1, 0xf6, 0xbc, 0x0c, 0x8e, 0xfa, 0xf4, + 0x68, 0xf6, 0xfe, 0xd3, 0xbe, 0xb7, 0x67, 0x61, 0x8e, 0xc2, 0xe2, 0xcf, 0xe3, 0x9f, 0x97, 0x11, + 0x99, 0xc8, 0xab, 0x30, 0x49, 0xa7, 0xed, 0x7e, 0xf7, 0x1e, 0xbc, 0x2b, 0xcb, 0x30, 0xdd, 0x45, + 0xf6, 0x8e, 0xe1, 0x38, 0x86, 0x65, 0x92, 0x05, 0xb9, 0xb9, 0x5b, 0x1f, 0x1d, 0x48, 0x1c, 0xaf, + 0x5d, 0xce, 0xaf, 0xeb, 0xb6, 0x6b, 0xb4, 0x8c, 0xae, 0x6e, 0xba, 0xeb, 0x61, 0x66, 0x8d, 0xfd, + 0x53, 0x7d, 0x49, 0xc2, 0x69, 0x0d, 0x5f, 0x93, 0x08, 0x95, 0xf8, 0xdd, 0x04, 0x53, 0x92, 0x58, + 0x82, 0xc9, 0xd4, 0xe2, 0xe3, 0xa9, 0xaa, 0x45, 0x1f, 0xbc, 0xb7, 0x94, 0x2b, 0xe0, 0x44, 0xa5, + 0x5a, 0xaa, 0x69, 0x5a, 0xb9, 0xd4, 0x68, 0xae, 0x97, 0xb5, 0xb5, 0x4a, 0xbd, 0x5e, 0xa9, 0x55, + 0xeb, 0x07, 0x69, 0xed, 0xea, 0xa7, 0xe4, 0x40, 0x63, 0x16, 0x51, 0xab, 0x63, 0x98, 0x48, 0xbd, + 0xeb, 0x80, 0x0a, 0xc3, 0xaf, 0xfa, 0x88, 0xe3, 0x4c, 0xcb, 0x8f, 0xc0, 0xf9, 0xf5, 0xc9, 0x71, + 0xee, 0x4f, 0xf0, 0x3f, 0x70, 0xf3, 0xff, 0xb2, 0x0c, 0xc7, 0x98, 0x86, 0xa8, 0xa1, 0x9d, 0x91, + 0xad, 0xe4, 0xfd, 0x1c, 0xdb, 0x76, 0x2b, 0x3c, 0xa6, 0xfd, 0xac, 0xe9, 0x7d, 0x6c, 0x44, 0xc0, + 0xfa, 0x96, 0x00, 0xd6, 0x55, 0x0e, 0xd6, 0x27, 0x0f, 0x41, 0x33, 0x19, 0xb2, 0xbf, 0x9d, 0x2a, + 0xb2, 0x57, 0xc0, 0x89, 0xf5, 0xa2, 0xd6, 0xa8, 0x94, 0x2a, 0xeb, 0x45, 0x6f, 0x1c, 0x65, 0x86, + 0xec, 0x08, 0x73, 0x9d, 0x07, 0xbd, 0x2f, 0xbe, 0x1f, 0xca, 0xc2, 0x55, 0xfd, 0x3b, 0xda, 0xd2, + 0xb6, 0x6e, 0x6e, 0x21, 0xd5, 0x10, 0x81, 0x7a, 0x11, 0x26, 0x5a, 0x38, 0x3b, 0xc1, 0x99, 0xdd, + 0xba, 0x89, 0xe9, 0xcb, 0x49, 0x09, 0x9a, 0xff, 0xab, 0xfa, 0x2e, 0x56, 0x21, 0x1a, 0xbc, 0x42, + 0x3c, 0x35, 0x1e, 0xbc, 0x7d, 0x7c, 0x47, 0xe8, 0xc6, 0x67, 0x02, 0xdd, 0x38, 0xc7, 0xe9, 0x46, + 0xe9, 0x60, 0xe4, 0x93, 0xa9, 0xc9, 0x1f, 0x3d, 0x12, 0x3a, 0x80, 0x48, 0x6d, 0x32, 0xa2, 0x47, + 0x85, 0xbe, 0xdd, 0xfd, 0x6b, 0x65, 0xc8, 0x2f, 0xa2, 0x0e, 0x12, 0x5d, 0x89, 0xfc, 0xb6, 0x24, + 0xba, 0x21, 0x42, 0x60, 0x20, 0xb4, 0xa3, 0x57, 0x47, 0x5c, 0x63, 0x07, 0x39, 0xae, 0xbe, 0xd3, + 0xc5, 0xa2, 0x96, 0xb5, 0x30, 0x41, 0xfd, 0x79, 0x49, 0x64, 0xbb, 0x24, 0xa6, 0x98, 0xff, 0x18, + 0x6b, 0x8a, 0x9f, 0x93, 0x60, 0xb2, 0x8e, 0xdc, 0x9a, 0xdd, 0x46, 0xb6, 0x5a, 0x0f, 0x31, 0xba, + 0x06, 0xa6, 0x31, 0x28, 0xde, 0x34, 0x33, 0xc0, 0x89, 0x4d, 0x52, 0xae, 0x87, 0xb9, 0xe0, 0x15, + 0xff, 0x4e, 0xbb, 0xf1, 0x9e, 0x54, 0xf5, 0x9f, 0x32, 0xa2, 0xbb, 0xb8, 0x74, 0xc9, 0x90, 0x72, + 0x13, 0xd1, 0x4a, 0xc5, 0x76, 0x64, 0x63, 0x49, 0xa5, 0xbf, 0xd1, 0xf5, 0x0e, 0x09, 0x60, 0xc3, + 0x74, 0x7c, 0xb9, 0x3e, 0x36, 0x81, 0x5c, 0xd5, 0x7f, 0xc9, 0x24, 0x9b, 0xc5, 0x84, 0xe5, 0x44, + 0x48, 0xec, 0x37, 0x12, 0xac, 0x2d, 0x44, 0x12, 0x4b, 0x5f, 0x66, 0x5f, 0x9b, 0x83, 0xfc, 0x39, + 0xbd, 0xd3, 0x41, 0xae, 0xfa, 0x75, 0x09, 0xf2, 0x25, 0x1b, 0xe9, 0x2e, 0x62, 0x45, 0xa7, 0xc2, + 0xa4, 0x6d, 0x59, 0xee, 0xba, 0xee, 0x6e, 0x53, 0xb9, 0x05, 0xef, 0xd4, 0x61, 0xe0, 0xb7, 0xd8, + 0xee, 0xe3, 0x2e, 0x5e, 0x74, 0x3f, 0xce, 0xd5, 0x96, 0x14, 0x34, 0x4f, 0x0a, 0x89, 0xe8, 0x3f, + 0x54, 0x98, 0xdc, 0x31, 0xd1, 0x8e, 0x65, 0x1a, 0x2d, 0xdf, 0xe6, 0xf4, 0xdf, 0xd5, 0x8f, 0x04, + 0x32, 0x5d, 0xe0, 0x64, 0x3a, 0x2f, 0x5c, 0x4a, 0x32, 0x81, 0xd6, 0x87, 0xe8, 0x3d, 0xae, 0x86, + 0x2b, 0x49, 0x67, 0xd0, 0x6c, 0xd4, 0x9a, 0x25, 0xad, 0x5c, 0x6c, 0x94, 0x9b, 0xab, 0xb5, 0x52, + 0x71, 0xb5, 0xa9, 0x95, 0xd7, 0x6b, 0x05, 0xa4, 0xfe, 0xbd, 0xe4, 0x09, 0xb7, 0x65, 0xed, 0x21, + 0x5b, 0x5d, 0x16, 0x92, 0x73, 0x9c, 0x4c, 0x28, 0x06, 0xbf, 0x2c, 0xec, 0xb4, 0x41, 0xa5, 0x43, + 0x39, 0x88, 0x50, 0xde, 0x8f, 0x0a, 0x35, 0xf7, 0x58, 0x52, 0x8f, 0x00, 0x49, 0xff, 0x0f, 0x09, + 0x26, 0x4a, 0x96, 0xb9, 0x87, 0x6c, 0x97, 0x9d, 0xef, 0xb0, 0xd2, 0xcc, 0xf0, 0xd2, 0xf4, 0x06, + 0x49, 0x64, 0xba, 0xb6, 0xd5, 0xf5, 0x27, 0x3c, 0xfe, 0xab, 0xfa, 0xa6, 0xa4, 0x12, 0xa6, 0x25, + 0x47, 0x2f, 0x7c, 0xf6, 0x2f, 0x88, 0x63, 0x4f, 0xee, 0x69, 0x00, 0x0f, 0x25, 0xc1, 0xa5, 0x3f, + 0x03, 0xe9, 0x77, 0x29, 0x5f, 0x91, 0x61, 0x96, 0x34, 0xbe, 0x3a, 0xc2, 0x16, 0x9a, 0x5a, 0x63, + 0x97, 0x1c, 0x7b, 0x84, 0xbf, 0x72, 0x84, 0x13, 0x7f, 0x5e, 0xef, 0x76, 0x83, 0xe5, 0xe7, 0x95, + 0x23, 0x1a, 0x7d, 0x27, 0x6a, 0xbe, 0x90, 0x87, 0xac, 0xbe, 0xeb, 0x6e, 0xab, 0xdf, 0x17, 0x9e, + 0x7c, 0x72, 0x9d, 0x01, 0xe5, 0x27, 0x02, 0x92, 0xe3, 0x90, 0x73, 0xad, 0x0b, 0xc8, 0x97, 0x03, + 0x79, 0xf1, 0xe0, 0xd0, 0xbb, 0xdd, 0x06, 0xfe, 0x40, 0xe1, 0xf0, 0xdf, 0x3d, 0x5b, 0x47, 0x6f, + 0xb5, 0xac, 0x5d, 0xd3, 0xad, 0xf8, 0x4b, 0xd0, 0x61, 0x82, 0xfa, 0xc5, 0x8c, 0xc8, 0x64, 0x56, + 0x80, 0xc1, 0x64, 0x90, 0x9d, 0x1f, 0xa2, 0x29, 0xcd, 0xc3, 0x8d, 0xc5, 0xf5, 0xf5, 0x66, 0xa3, + 0x76, 0x6f, 0xb9, 0x1a, 0x1a, 0x9e, 0xcd, 0x4a, 0xb5, 0xd9, 0x58, 0x29, 0x37, 0x4b, 0x1b, 0x1a, + 0x5e, 0x27, 0x2c, 0x96, 0x4a, 0xb5, 0x8d, 0x6a, 0xa3, 0x80, 0xd4, 0xb7, 0x4a, 0x30, 0x53, 0xea, + 0x58, 0x4e, 0x80, 0xf0, 0xd5, 0x21, 0xc2, 0x81, 0x18, 0x33, 0x8c, 0x18, 0xd5, 0x7f, 0xcb, 0x88, + 0x3a, 0x1d, 0xf8, 0x02, 0x61, 0xc8, 0x47, 0xf4, 0x52, 0x6f, 0x12, 0x72, 0x3a, 0x18, 0x4c, 0x2f, + 0xfd, 0x26, 0xf1, 0xff, 0xdd, 0x05, 0x13, 0x45, 0xa2, 0x18, 0xea, 0xdf, 0x64, 0x20, 0x5f, 0xb2, + 0xcc, 0x4d, 0x63, 0xcb, 0x33, 0xe6, 0x90, 0xa9, 0x9f, 0xef, 0xa0, 0x45, 0xdd, 0xd5, 0xf7, 0x0c, + 0x74, 0x11, 0x57, 0x60, 0x52, 0xeb, 0x49, 0xf5, 0x98, 0xa2, 0x29, 0xe8, 0xfc, 0xee, 0x16, 0x66, + 0x6a, 0x52, 0x63, 0x93, 0x94, 0x27, 0xc3, 0xe5, 0xe4, 0x75, 0xdd, 0x46, 0x36, 0xea, 0x20, 0xdd, + 0x41, 0xde, 0xb4, 0xc8, 0x44, 0x1d, 0xac, 0xb4, 0x93, 0x5a, 0xd4, 0x67, 0xe5, 0x0c, 0xcc, 0x90, + 0x4f, 0xd8, 0x14, 0x71, 0xb0, 0x1a, 0x4f, 0x6a, 0x5c, 0x9a, 0xf2, 0x38, 0xc8, 0xa1, 0x07, 0x5c, + 0x5b, 0x3f, 0xd5, 0xc6, 0x78, 0x5d, 0x3e, 0x4f, 0xbc, 0x0e, 0xe7, 0x7d, 0xaf, 0xc3, 0xf9, 0x3a, + 0xf6, 0x49, 0xd4, 0x48, 0x2e, 0xf5, 0x55, 0x93, 0x81, 0x21, 0xf1, 0x03, 0x29, 0x54, 0x0c, 0x05, + 0xb2, 0xa6, 0xbe, 0x83, 0xa8, 0x5e, 0xe0, 0x67, 0xe5, 0x46, 0x38, 0xaa, 0xef, 0xe9, 0xae, 0x6e, + 0xaf, 0x5a, 0x2d, 0xbd, 0x83, 0x07, 0x3f, 0xbf, 0xe5, 0xf7, 0x7e, 0xc0, 0x3b, 0x42, 0xae, 0x65, + 0x23, 0x9c, 0xcb, 0xdf, 0x11, 0xf2, 0x13, 0x3c, 0xea, 0x46, 0xcb, 0x32, 0x31, 0xff, 0xb2, 0x86, + 0x9f, 0x3d, 0xa9, 0xb4, 0x0d, 0xc7, 0xab, 0x08, 0xa6, 0x52, 0x25, 0x5b, 0x1b, 0xf5, 0x4b, 0x66, + 0x0b, 0xef, 0x06, 0x4d, 0x6a, 0x51, 0x9f, 0x95, 0x05, 0x98, 0xa6, 0x1b, 0x21, 0x6b, 0x9e, 0x5e, + 0xe5, 0xb1, 0x5e, 0x5d, 0xc3, 0xfb, 0x74, 0x11, 0x3c, 0xe7, 0xab, 0x61, 0x3e, 0x8d, 0xfd, 0x49, + 0xb9, 0x1b, 0xae, 0xa4, 0xaf, 0xa5, 0x5d, 0xc7, 0xb5, 0x76, 0x08, 0xe8, 0x4b, 0x46, 0x87, 0xd4, + 0x60, 0x02, 0xd7, 0x20, 0x2e, 0x8b, 0x72, 0x2b, 0x1c, 0xef, 0xda, 0x68, 0x13, 0xd9, 0xf7, 0xe9, + 0x3b, 0xbb, 0x0f, 0x34, 0x6c, 0xdd, 0x74, 0xba, 0x96, 0xed, 0x9e, 0x9a, 0xc4, 0xcc, 0xf7, 0xfd, + 0x46, 0x3b, 0xca, 0x49, 0xc8, 0x13, 0xf1, 0xa9, 0x2f, 0xce, 0x09, 0xbb, 0x73, 0xd2, 0x0a, 0xc5, + 0x9a, 0x67, 0xb7, 0xc0, 0x04, 0xed, 0xe1, 0x30, 0x50, 0xd3, 0xb7, 0x9e, 0xec, 0x59, 0x57, 0xa0, + 0x54, 0x34, 0x3f, 0x9b, 0xf2, 0x04, 0xc8, 0xb7, 0x70, 0xb5, 0x30, 0x66, 0xd3, 0xb7, 0x5e, 0xd9, + 0xbf, 0x50, 0x9c, 0x45, 0xa3, 0x59, 0xd5, 0xbf, 0x94, 0x85, 0x3c, 0x40, 0xe3, 0x38, 0x4e, 0xd6, + 0xaa, 0xbf, 0x29, 0x0d, 0xd1, 0x6d, 0xde, 0x04, 0x37, 0xd0, 0x3e, 0x91, 0xda, 0x1f, 0x8b, 0xcd, + 0x85, 0x0d, 0x7f, 0x32, 0xe8, 0x59, 0x25, 0xf5, 0x46, 0x51, 0xf3, 0x66, 0xf2, 0x8b, 0xde, 0x24, + 0xf2, 0x46, 0xb8, 0x7e, 0x40, 0xee, 0x72, 0xa3, 0x59, 0x2d, 0xae, 0x95, 0x0b, 0x9b, 0xbc, 0x6d, + 0x53, 0x6f, 0xd4, 0xd6, 0x9b, 0xda, 0x46, 0xb5, 0x5a, 0xa9, 0x2e, 0x13, 0x62, 0x9e, 0x49, 0x78, + 0x32, 0xcc, 0x70, 0x4e, 0xab, 0x34, 0xca, 0xcd, 0x52, 0xad, 0xba, 0x54, 0x59, 0x2e, 0x18, 0x83, + 0x0c, 0xa3, 0xfb, 0x95, 0x6b, 0xe0, 0x2a, 0x8e, 0x93, 0x4a, 0xad, 0xea, 0xcd, 0x6c, 0x4b, 0xc5, + 0x6a, 0xa9, 0xec, 0x4d, 0x63, 0x2f, 0x28, 0x2a, 0x9c, 0x20, 0xe4, 0x9a, 0x4b, 0x95, 0x55, 0x76, + 0x33, 0xea, 0x93, 0x19, 0xe5, 0x14, 0x5c, 0xc6, 0x7e, 0xab, 0x54, 0xcf, 0x16, 0x57, 0x2b, 0x8b, + 0x85, 0x3f, 0xcc, 0x28, 0xd7, 0xc1, 0xd5, 0xdc, 0x5f, 0x64, 0x5f, 0xa9, 0x59, 0x59, 0x6c, 0xae, + 0x55, 0xea, 0x6b, 0xc5, 0x46, 0x69, 0xa5, 0xf0, 0x29, 0x3c, 0x5f, 0x08, 0x0c, 0x60, 0xc6, 0x2d, + 0xf3, 0x65, 0xec, 0x98, 0x5e, 0xe4, 0x15, 0xf5, 0xb1, 0x7d, 0x61, 0x8f, 0xb7, 0x61, 0x3f, 0x1e, + 0x8c, 0x0e, 0x8b, 0x9c, 0x0a, 0xdd, 0x92, 0x80, 0x56, 0x32, 0x1d, 0x6a, 0x0c, 0xa1, 0x42, 0xd7, + 0xc0, 0x55, 0xd5, 0x32, 0x41, 0x4a, 0x2b, 0x97, 0x6a, 0x67, 0xcb, 0x5a, 0xf3, 0x5c, 0x71, 0x75, + 0xb5, 0xdc, 0x68, 0x2e, 0x55, 0xb4, 0x7a, 0xa3, 0xb0, 0xa9, 0xfe, 0x8b, 0x14, 0xac, 0xe6, 0x30, + 0xd2, 0xfa, 0x1b, 0x29, 0x69, 0xb3, 0x8e, 0x5d, 0xb5, 0xf9, 0x09, 0xc8, 0x3b, 0xae, 0xee, 0xee, + 0x3a, 0xb4, 0x55, 0x3f, 0xaa, 0x7f, 0xab, 0x9e, 0xaf, 0xe3, 0x4c, 0x1a, 0xcd, 0xac, 0xfe, 0x65, + 0x26, 0x49, 0x33, 0x1d, 0xc1, 0x82, 0x8e, 0x31, 0x84, 0x88, 0x4f, 0x83, 0xea, 0x6b, 0x7b, 0xa5, + 0xde, 0x2c, 0xae, 0x6a, 0xe5, 0xe2, 0xe2, 0x7d, 0xc1, 0x32, 0x0e, 0x52, 0x4e, 0xc0, 0xb1, 0x8d, + 0x6a, 0x71, 0x61, 0xb5, 0x8c, 0x9b, 0x4b, 0xad, 0x5a, 0x2d, 0x97, 0x3c, 0xb9, 0xff, 0x3c, 0xde, + 0x34, 0xf1, 0x2c, 0x68, 0xcc, 0xb7, 0x67, 0xe5, 0x30, 0xf2, 0xff, 0x86, 0xb0, 0x6f, 0x51, 0xa8, + 0x61, 0x2c, 0xad, 0xd1, 0xe2, 0xf0, 0x45, 0x21, 0x77, 0x22, 0x21, 0x4e, 0x92, 0xe1, 0xf1, 0x9f, + 0x87, 0xc0, 0xe3, 0x04, 0x1c, 0x63, 0xf1, 0xc0, 0x6e, 0x45, 0xd1, 0x30, 0x7c, 0x4e, 0x82, 0x89, + 0x35, 0x63, 0x0b, 0xfb, 0x55, 0x3e, 0x25, 0x34, 0x26, 0xe6, 0x40, 0x0a, 0xdc, 0x58, 0x24, 0xa3, + 0xcd, 0x4d, 0x9f, 0xa5, 0xbe, 0xcb, 0x14, 0x2f, 0x48, 0xdc, 0xbf, 0xd0, 0x62, 0x23, 0xfa, 0x97, + 0x0f, 0x24, 0xea, 0x5f, 0xfa, 0xd3, 0x4a, 0x26, 0xec, 0xca, 0xc1, 0x84, 0xcd, 0x38, 0x8f, 0xa8, + 0xef, 0x94, 0x60, 0x96, 0xb2, 0x44, 0xf7, 0xfa, 0xaf, 0x8e, 0x94, 0x2d, 0x95, 0xdf, 0x0f, 0x58, + 0x0b, 0x7e, 0x99, 0x97, 0xdf, 0xe3, 0xe3, 0xea, 0x1c, 0xbb, 0xd9, 0xff, 0xe6, 0x40, 0x8a, 0xf7, + 0x70, 0x52, 0x7c, 0x52, 0x62, 0x8a, 0xe9, 0x5b, 0xf1, 0xcf, 0x9a, 0x82, 0x7c, 0x1d, 0x75, 0x50, + 0xcb, 0x55, 0xdf, 0x2e, 0x0d, 0xa5, 0x8a, 0x71, 0x16, 0xa9, 0x9c, 0xc8, 0x22, 0xcd, 0xa6, 0x60, + 0x91, 0xe6, 0x86, 0xb7, 0x48, 0xf3, 0x83, 0x2c, 0x52, 0xf5, 0x63, 0xf9, 0xa4, 0x03, 0x16, 0x11, + 0xf5, 0xe1, 0xda, 0xa1, 0xbf, 0x98, 0x4b, 0x32, 0xc0, 0xf5, 0xe5, 0x38, 0x99, 0x5e, 0xbe, 0x3a, + 0x9b, 0xc2, 0x4a, 0x98, 0x72, 0x2d, 0x5c, 0x1d, 0xbe, 0x37, 0xcb, 0x4f, 0xaf, 0xd4, 0x1b, 0x75, + 0x6c, 0x7c, 0x96, 0x6a, 0x9a, 0xb6, 0xb1, 0x4e, 0xb6, 0x33, 0x4e, 0x82, 0x12, 0x52, 0xd1, 0x36, + 0xaa, 0xc4, 0xd4, 0xdc, 0xe2, 0xa9, 0x2f, 0x55, 0xaa, 0x8b, 0xcd, 0xa0, 0xfb, 0xae, 0x2e, 0xd5, + 0x0a, 0xdb, 0xca, 0x3c, 0xdc, 0xc8, 0x50, 0xf7, 0xba, 0x19, 0x5a, 0x42, 0xb1, 0xba, 0xd8, 0x5c, + 0xab, 0x96, 0xd7, 0x6a, 0xd5, 0x4a, 0x09, 0xa7, 0xd7, 0xcb, 0x8d, 0x82, 0xe1, 0xd9, 0x3c, 0x3d, + 0xc6, 0x6d, 0xbd, 0x5c, 0xd4, 0x4a, 0x2b, 0x65, 0x8d, 0x14, 0x79, 0xbf, 0x72, 0x3d, 0x9c, 0x29, + 0x56, 0x6b, 0x0d, 0x2f, 0xa5, 0x58, 0xbd, 0xaf, 0x71, 0xdf, 0x7a, 0xb9, 0xb9, 0xae, 0xd5, 0x4a, + 0xe5, 0x7a, 0xdd, 0x1b, 0x32, 0xa8, 0x29, 0x5c, 0xe8, 0x28, 0x4f, 0x85, 0xdb, 0x19, 0xd6, 0xca, + 0x0d, 0xbc, 0x77, 0xbe, 0x56, 0xc3, 0xee, 0x53, 0x8b, 0xe5, 0xe6, 0x4a, 0xb1, 0xde, 0xac, 0x54, + 0x4b, 0xb5, 0xb5, 0xf5, 0x62, 0xa3, 0xe2, 0x8d, 0x2c, 0xeb, 0x5a, 0xad, 0x51, 0x6b, 0x9e, 0x2d, + 0x6b, 0xf5, 0x4a, 0xad, 0x5a, 0x30, 0xbd, 0x2a, 0x33, 0x43, 0x91, 0x6f, 0x12, 0x58, 0xca, 0x55, + 0x70, 0xca, 0x4f, 0x5f, 0xad, 0x79, 0x82, 0x66, 0x8c, 0xe3, 0x2e, 0x6b, 0x50, 0xd4, 0x1b, 0x35, + 0x8d, 0x98, 0xc7, 0x6b, 0x95, 0x65, 0xcd, 0xb3, 0xe9, 0x0b, 0xcf, 0x48, 0xd5, 0x78, 0xfe, 0x57, + 0x09, 0xb2, 0x75, 0xd7, 0xea, 0xaa, 0x3f, 0x1e, 0x76, 0x40, 0xa7, 0x01, 0x6c, 0xbc, 0x55, 0xbe, + 0xa8, 0xbb, 0x3a, 0x5d, 0x42, 0x60, 0x52, 0xd4, 0x3f, 0x10, 0xde, 0xdf, 0x0b, 0xcd, 0x0b, 0xab, + 0x1b, 0xd1, 0x61, 0x7f, 0x4f, 0xec, 0xc0, 0x53, 0x34, 0xa1, 0x64, 0xed, 0xe1, 0x05, 0xc3, 0xec, + 0xe0, 0xa9, 0x70, 0x92, 0x81, 0xd5, 0x93, 0xbf, 0xaf, 0x32, 0x48, 0xb9, 0x1c, 0x2e, 0xeb, 0x51, + 0x3e, 0xac, 0x73, 0x9b, 0xca, 0x8f, 0xc1, 0xa3, 0x18, 0xf5, 0x2f, 0xaf, 0xd5, 0xce, 0x96, 0x03, + 0x45, 0x5f, 0x2c, 0x36, 0x8a, 0x85, 0x2d, 0xf5, 0x73, 0x32, 0x64, 0xd7, 0xac, 0xbd, 0xde, 0x6d, + 0x55, 0x13, 0x5d, 0x64, 0x96, 0xed, 0xfd, 0x57, 0xfe, 0x80, 0x87, 0x90, 0xd8, 0xd7, 0xa2, 0x5d, + 0x28, 0xbe, 0x28, 0x25, 0x11, 0xfb, 0xda, 0x41, 0xfd, 0x26, 0xfe, 0x61, 0x18, 0xb1, 0x47, 0x88, + 0x16, 0x29, 0x67, 0xe0, 0x74, 0xf8, 0xa1, 0xb2, 0x58, 0xae, 0x36, 0x2a, 0x4b, 0xf7, 0x85, 0xc2, + 0xad, 0x68, 0x42, 0xe2, 0x1f, 0xd4, 0xcd, 0xc5, 0x4f, 0x8a, 0x4f, 0xc1, 0xf1, 0xf0, 0xdb, 0x72, + 0xb9, 0xe1, 0x7f, 0xb9, 0x5f, 0x7d, 0x30, 0x07, 0x33, 0xa4, 0xdb, 0xdf, 0xe8, 0xb6, 0x3d, 0x33, + 0xf3, 0x09, 0x21, 0xba, 0x37, 0xc0, 0xd1, 0xca, 0xfa, 0x52, 0xbd, 0xee, 0x5a, 0xb6, 0xbe, 0x85, + 0x8a, 0xed, 0xb6, 0x4d, 0xa5, 0xd5, 0x9b, 0xac, 0xbe, 0x47, 0x78, 0x49, 0x9a, 0x1f, 0x6a, 0x48, + 0x99, 0x11, 0xa8, 0x7f, 0x45, 0x68, 0x09, 0x59, 0x80, 0x60, 0x32, 0xf4, 0xef, 0x1f, 0x71, 0x9b, + 0x8b, 0xc6, 0x65, 0xf3, 0xcc, 0x73, 0x25, 0x98, 0x6a, 0x18, 0x3b, 0xe8, 0x99, 0x96, 0x89, 0x1c, + 0x65, 0x02, 0xe4, 0xe5, 0xb5, 0x46, 0xe1, 0x88, 0xf7, 0xe0, 0xd9, 0xff, 0x19, 0xfc, 0x50, 0xf6, + 0x0a, 0xf0, 0x1e, 0x8a, 0x8d, 0x82, 0xec, 0x3d, 0xac, 0x95, 0x1b, 0x85, 0xac, 0xf7, 0x50, 0x2d, + 0x37, 0x0a, 0x39, 0xef, 0x61, 0x7d, 0xb5, 0x51, 0xc8, 0x7b, 0x0f, 0x95, 0x7a, 0xa3, 0x30, 0xe1, + 0x3d, 0x2c, 0xd4, 0x1b, 0x85, 0x49, 0xef, 0xe1, 0x6c, 0xbd, 0x51, 0x98, 0xf2, 0x1e, 0x4a, 0x8d, + 0x46, 0x01, 0xbc, 0x87, 0x7b, 0xea, 0x8d, 0xc2, 0xb4, 0xf7, 0x50, 0x2c, 0x35, 0x0a, 0x33, 0xf8, + 0xa1, 0xdc, 0x28, 0xcc, 0x7a, 0x0f, 0xf5, 0x7a, 0xa3, 0x30, 0x87, 0x29, 0xd7, 0x1b, 0x85, 0xa3, + 0xb8, 0xac, 0x4a, 0xa3, 0x50, 0xf0, 0x1e, 0x56, 0xea, 0x8d, 0xc2, 0x31, 0x9c, 0xb9, 0xde, 0x28, + 0x28, 0xb8, 0xd0, 0x7a, 0xa3, 0x70, 0x19, 0xce, 0x53, 0x6f, 0x14, 0x8e, 0xe3, 0x22, 0xea, 0x8d, + 0xc2, 0x09, 0xcc, 0x46, 0xb9, 0x51, 0x38, 0x89, 0xf3, 0x68, 0x8d, 0xc2, 0xe5, 0xf8, 0x53, 0xb5, + 0x51, 0x38, 0x85, 0x19, 0x2b, 0x37, 0x0a, 0x57, 0xe0, 0x07, 0xad, 0x51, 0x50, 0xf1, 0xa7, 0x62, + 0xa3, 0x70, 0xa5, 0xfa, 0x28, 0x98, 0x5a, 0x46, 0x2e, 0x01, 0x51, 0x2d, 0x80, 0xbc, 0x8c, 0x5c, + 0x76, 0xc6, 0xf9, 0x35, 0x19, 0x2e, 0xa7, 0xab, 0x14, 0x4b, 0xb6, 0xb5, 0xb3, 0x8a, 0xb6, 0xf4, + 0xd6, 0xa5, 0xf2, 0x03, 0x9e, 0x89, 0xc5, 0xba, 0x10, 0x28, 0x90, 0xed, 0x86, 0x9d, 0x11, 0x7e, + 0x8e, 0xb5, 0x48, 0xfd, 0x75, 0x53, 0x39, 0x5c, 0x37, 0xa5, 0x16, 0xdb, 0x3f, 0xb3, 0x1a, 0xcd, + 0x6d, 0x75, 0x64, 0x7a, 0xb6, 0x3a, 0xbc, 0x66, 0xd2, 0x45, 0xb6, 0x63, 0x99, 0x7a, 0xa7, 0x4e, + 0x7d, 0x4c, 0xc8, 0x02, 0x6d, 0x6f, 0xb2, 0xf2, 0x34, 0xbf, 0x65, 0x10, 0xab, 0xed, 0x29, 0x71, + 0x8b, 0x31, 0xbd, 0xd5, 0x8c, 0x68, 0x24, 0x9f, 0x0a, 0x1a, 0x49, 0x83, 0x6b, 0x24, 0x77, 0x1f, + 0x80, 0xf6, 0x58, 0x26, 0x66, 0xa1, 0x07, 0xb6, 0xbf, 0xb3, 0x22, 0x7b, 0xd3, 0xdd, 0x93, 0x65, + 0xb3, 0xdf, 0x0c, 0x80, 0xd5, 0x85, 0xb7, 0xb2, 0xd0, 0xac, 0xf3, 0x22, 0xbd, 0xbd, 0x6f, 0xb5, + 0xfb, 0xd3, 0x8c, 0x90, 0xe8, 0xa7, 0x03, 0x89, 0xd6, 0x39, 0x89, 0xde, 0x35, 0x3c, 0xe9, 0x64, + 0x02, 0xad, 0x8e, 0xb4, 0x03, 0xca, 0xaa, 0xdf, 0xcc, 0xc2, 0xa3, 0x88, 0x9b, 0x18, 0xe5, 0x90, + 0xb4, 0xb2, 0xa2, 0xd9, 0xd6, 0x90, 0xe3, 0xea, 0xb6, 0xcb, 0x1d, 0xdd, 0xef, 0x99, 0x6a, 0x65, + 0x52, 0x98, 0x6a, 0x49, 0x03, 0xa7, 0x5a, 0xea, 0xbb, 0x59, 0xf3, 0xe1, 0x1c, 0x8f, 0x71, 0xb1, + 0x7f, 0xff, 0x1f, 0x57, 0xc3, 0x28, 0xa8, 0x03, 0xbb, 0xe2, 0xa7, 0x38, 0xa8, 0x97, 0x0e, 0x5c, + 0x42, 0x32, 0xc4, 0xff, 0x60, 0xb4, 0x76, 0x5e, 0x96, 0xfd, 0xc6, 0x1b, 0x25, 0x85, 0x76, 0xaa, + 0x06, 0xfa, 0x67, 0x26, 0x60, 0x0a, 0xb7, 0x85, 0x55, 0xc3, 0xbc, 0xa0, 0x3e, 0x24, 0xc3, 0x4c, + 0x15, 0x5d, 0x2c, 0x6d, 0xeb, 0x9d, 0x0e, 0x32, 0xb7, 0x10, 0x6b, 0xb6, 0x9f, 0x82, 0x09, 0xbd, + 0xdb, 0xad, 0x86, 0x5b, 0x62, 0xfe, 0x2b, 0xed, 0x7f, 0xbf, 0xd1, 0xb7, 0x91, 0x67, 0x62, 0x1a, + 0x79, 0x50, 0xee, 0x3c, 0x5b, 0x66, 0xc4, 0x0c, 0xfa, 0x1a, 0x98, 0x6e, 0xf9, 0x59, 0x82, 0x23, + 0x3e, 0x6c, 0x92, 0xfa, 0x77, 0x89, 0xba, 0x01, 0xa1, 0xc2, 0x93, 0x29, 0x05, 0x1a, 0xb1, 0x1d, + 0x72, 0x02, 0x8e, 0x35, 0x6a, 0xb5, 0xe6, 0x5a, 0xb1, 0x7a, 0x5f, 0x78, 0xb4, 0x7e, 0x53, 0x7d, + 0x75, 0x16, 0xe6, 0xea, 0x56, 0x67, 0x0f, 0x85, 0x30, 0x55, 0x38, 0xdf, 0x31, 0x56, 0x4e, 0x99, + 0x7d, 0x72, 0x52, 0x4e, 0x42, 0x5e, 0x37, 0x9d, 0x8b, 0xc8, 0xb7, 0x0d, 0xe9, 0x1b, 0x85, 0xf1, + 0x43, 0x6c, 0x3b, 0xd6, 0x78, 0x18, 0xef, 0x18, 0x20, 0x49, 0x9e, 0xab, 0x08, 0x20, 0xcf, 0xc0, + 0x8c, 0x43, 0xf6, 0xb5, 0x1b, 0x8c, 0xfb, 0x02, 0x97, 0x86, 0x59, 0x24, 0x8e, 0x15, 0x32, 0x65, + 0x11, 0xbf, 0xa9, 0x0f, 0x05, 0xcd, 0x7f, 0x83, 0x83, 0xb8, 0x78, 0x10, 0xc6, 0x92, 0x81, 0xfc, + 0xda, 0x51, 0xcf, 0xf0, 0x4e, 0xc1, 0x71, 0xda, 0x6a, 0x9b, 0xa5, 0x95, 0xe2, 0xea, 0x6a, 0xb9, + 0xba, 0x5c, 0x6e, 0x56, 0x16, 0xc9, 0xae, 0x5a, 0x98, 0x52, 0x6c, 0x34, 0xca, 0x6b, 0xeb, 0x8d, + 0x7a, 0xb3, 0xfc, 0xf4, 0x52, 0xb9, 0xbc, 0x88, 0xbd, 0x37, 0xf1, 0xf1, 0x2b, 0xdf, 0xcf, 0xb6, + 0x58, 0xad, 0x9f, 0x2b, 0x6b, 0x85, 0xed, 0x33, 0x45, 0x98, 0x66, 0xfa, 0x79, 0x8f, 0xbb, 0x45, + 0xb4, 0xa9, 0xef, 0x76, 0xa8, 0xad, 0x56, 0x38, 0xe2, 0x71, 0x87, 0x65, 0x53, 0x33, 0x3b, 0x97, + 0x0a, 0x19, 0xa5, 0x00, 0x33, 0x6c, 0x97, 0x5e, 0x90, 0xd4, 0x77, 0x5c, 0x05, 0x53, 0xe7, 0x2c, + 0xfb, 0x02, 0x76, 0x39, 0x54, 0xdf, 0x4f, 0x42, 0xf0, 0xf8, 0x87, 0x99, 0x99, 0x81, 0xfd, 0xb5, + 0xe2, 0x8e, 0x2d, 0x3e, 0xb5, 0xf9, 0x81, 0x07, 0x96, 0xaf, 0x81, 0xe9, 0x8b, 0x7e, 0xee, 0xb0, + 0xa5, 0x33, 0x49, 0xea, 0x7f, 0x13, 0x73, 0x55, 0x19, 0x5c, 0x64, 0xfa, 0x8b, 0xb0, 0x6f, 0x97, + 0x20, 0xbf, 0x8c, 0xdc, 0x62, 0xa7, 0xc3, 0xca, 0xed, 0xe5, 0xc2, 0x87, 0xd0, 0xb8, 0x4a, 0x14, + 0x3b, 0x9d, 0xe8, 0x46, 0xc5, 0x08, 0xc8, 0x3f, 0x2c, 0xc1, 0xa5, 0x09, 0xba, 0x78, 0x0e, 0x28, + 0x30, 0x7d, 0x89, 0x7d, 0x44, 0x0e, 0xdc, 0x31, 0x1e, 0x66, 0xac, 0x9c, 0xc7, 0x87, 0xe1, 0x97, + 0x32, 0xf1, 0x6e, 0x1d, 0x7e, 0x3e, 0xe5, 0x5e, 0x98, 0xd8, 0x75, 0x50, 0x49, 0x77, 0x10, 0xe6, + 0xad, 0xb7, 0xa6, 0xb5, 0xf3, 0xf7, 0xa3, 0x96, 0x3b, 0x5f, 0xd9, 0xf1, 0x0c, 0xea, 0x0d, 0x92, + 0x31, 0x88, 0x68, 0x44, 0xdf, 0x35, 0x9f, 0x82, 0x37, 0x29, 0xb9, 0x68, 0xb8, 0xdb, 0xa5, 0x6d, + 0xdd, 0xa5, 0x6b, 0xdf, 0xc1, 0xbb, 0xfa, 0xe2, 0x21, 0xe0, 0x8c, 0x75, 0x5b, 0x88, 0x3c, 0xcb, + 0x9a, 0x18, 0xc4, 0x11, 0xf8, 0x1a, 0x0c, 0x03, 0xe2, 0x3f, 0x4a, 0x90, 0xad, 0x75, 0x91, 0x29, + 0x7c, 0x70, 0x2b, 0x90, 0xad, 0xd4, 0x23, 0xdb, 0x87, 0xc4, 0x1d, 0x19, 0x83, 0x4a, 0x7b, 0x25, + 0x47, 0x48, 0xf6, 0x66, 0xc8, 0x1a, 0xe6, 0xa6, 0x45, 0x0d, 0xd3, 0x2b, 0x23, 0xf6, 0x2b, 0x2b, + 0xe6, 0xa6, 0xa5, 0xe1, 0x8c, 0xa2, 0x3e, 0x8c, 0x71, 0x65, 0xa7, 0x2f, 0xee, 0x6f, 0x4d, 0x42, + 0x9e, 0xa8, 0xb3, 0xfa, 0x32, 0x19, 0xe4, 0x62, 0xbb, 0x1d, 0x21, 0x78, 0x69, 0x9f, 0xe0, 0x2d, + 0xfc, 0x5b, 0x80, 0x49, 0xf0, 0xce, 0xc7, 0xdd, 0x11, 0xec, 0xdb, 0x69, 0x93, 0x2a, 0xb6, 0xdb, + 0xd1, 0xee, 0xd2, 0x41, 0x81, 0x12, 0x5f, 0x20, 0xdb, 0xc2, 0x65, 0xb1, 0x16, 0x9e, 0x78, 0x20, + 0x88, 0xe4, 0x2f, 0x7d, 0x88, 0xfe, 0x59, 0x82, 0x89, 0x55, 0xc3, 0x71, 0x3d, 0x6c, 0x8a, 0x22, + 0xd8, 0x5c, 0x05, 0x53, 0xbe, 0x68, 0xbc, 0x2e, 0xcf, 0xeb, 0xcf, 0xc3, 0x04, 0xf5, 0x0d, 0x2c, + 0x3a, 0xf7, 0xf0, 0xe8, 0x3c, 0x31, 0xbe, 0xf6, 0x94, 0x8b, 0xe8, 0x03, 0x31, 0x61, 0xb1, 0x52, + 0x6f, 0xb1, 0xbf, 0x15, 0x08, 0x7c, 0x8d, 0x13, 0xf8, 0x6d, 0xc3, 0x14, 0x99, 0xbe, 0xd0, 0x3f, + 0x2f, 0x01, 0x78, 0x65, 0xd3, 0x53, 0x87, 0x8f, 0xe1, 0x62, 0x09, 0xc4, 0x48, 0xf7, 0xd5, 0xac, + 0x74, 0xd7, 0x78, 0xe9, 0xfe, 0xe4, 0xe0, 0xaa, 0xc6, 0x9d, 0x2e, 0x54, 0x0a, 0x20, 0x1b, 0x81, + 0x68, 0xbd, 0x47, 0xf5, 0xed, 0x81, 0x50, 0xd7, 0x39, 0xa1, 0xde, 0x31, 0x64, 0x49, 0xe9, 0xcb, + 0xf5, 0xaf, 0x24, 0x98, 0xa8, 0x23, 0xd7, 0xeb, 0x26, 0xd5, 0xb3, 0x22, 0x3d, 0x3c, 0xd3, 0xb6, + 0x25, 0xc1, 0xb6, 0xfd, 0xdd, 0x8c, 0x68, 0x4c, 0xa2, 0x50, 0x32, 0x94, 0xa7, 0x88, 0xc5, 0x83, + 0x87, 0x85, 0x62, 0x12, 0x0d, 0xa2, 0x96, 0xbe, 0x74, 0xdf, 0x2a, 0x05, 0x1b, 0xf7, 0xfc, 0xa1, + 0x20, 0xd6, 0x2c, 0xce, 0xec, 0x37, 0x8b, 0xc5, 0x0f, 0x05, 0xb1, 0x75, 0x8c, 0xde, 0xb5, 0x4e, + 0x6c, 0x6c, 0x8c, 0x60, 0x43, 0x79, 0x18, 0x79, 0x3d, 0x5b, 0x86, 0x3c, 0x5d, 0x59, 0xbe, 0x2b, + 0x7e, 0x65, 0x79, 0xf0, 0xd4, 0xe2, 0x7d, 0x43, 0x98, 0x72, 0x71, 0xcb, 0xbd, 0x01, 0x1b, 0x12, + 0xc3, 0xc6, 0x4d, 0x90, 0xc3, 0x41, 0x53, 0xe9, 0x38, 0x17, 0xfa, 0x02, 0xf8, 0x24, 0xca, 0xde, + 0x57, 0x8d, 0x64, 0x4a, 0x8c, 0xc2, 0x08, 0x56, 0x88, 0x87, 0x41, 0xe1, 0xdd, 0x9f, 0xcb, 0x04, + 0x46, 0xc8, 0xfb, 0xb2, 0xd4, 0xfc, 0xfb, 0x04, 0x1f, 0xbe, 0xa5, 0x65, 0x99, 0x2e, 0x7a, 0x80, + 0x59, 0x93, 0x0f, 0x12, 0x62, 0x2d, 0x83, 0x53, 0x30, 0xe1, 0xda, 0xec, 0x3a, 0xbd, 0xff, 0xca, + 0xf6, 0x38, 0x39, 0xbe, 0xc7, 0xa9, 0xc2, 0x19, 0xc3, 0x6c, 0x75, 0x76, 0xdb, 0x48, 0x43, 0x1d, + 0xdd, 0xab, 0x95, 0x53, 0x74, 0x16, 0x51, 0x17, 0x99, 0x6d, 0x64, 0xba, 0x84, 0x4f, 0xdf, 0x7d, + 0x5c, 0x20, 0xa7, 0xfa, 0x75, 0x56, 0x31, 0xee, 0xe4, 0x15, 0xe3, 0x31, 0xfd, 0xe6, 0x15, 0x31, + 0x46, 0xe8, 0x6d, 0x00, 0xa4, 0x6e, 0x67, 0x0d, 0x74, 0x91, 0x76, 0x88, 0x57, 0xf4, 0x98, 0xa2, + 0xb5, 0x20, 0x83, 0xc6, 0x64, 0x56, 0xbf, 0x1c, 0x28, 0xc3, 0xdd, 0x9c, 0x32, 0xdc, 0x24, 0xc8, + 0x42, 0x32, 0x3d, 0xe8, 0x0e, 0xb1, 0xd6, 0x31, 0x0b, 0x53, 0xe1, 0x0a, 0xa5, 0xac, 0x5c, 0x01, + 0x27, 0x7c, 0x9f, 0x88, 0x6a, 0xb9, 0xbc, 0x58, 0x6f, 0x6e, 0xac, 0x2f, 0x6b, 0xc5, 0xc5, 0x72, + 0x01, 0x14, 0x05, 0xe6, 0x6a, 0x0b, 0xf7, 0x94, 0x4b, 0x8d, 0xc0, 0x95, 0x21, 0xab, 0xfe, 0x85, + 0x04, 0x39, 0x7c, 0xf6, 0x41, 0xfd, 0x99, 0x11, 0x69, 0x8e, 0xc3, 0xed, 0xf0, 0x04, 0x13, 0x29, + 0xf1, 0xb0, 0xaa, 0x54, 0x98, 0x98, 0xab, 0x03, 0x85, 0x55, 0x8d, 0x21, 0x94, 0x7e, 0xf3, 0xf4, + 0x9a, 0x64, 0x7d, 0xdb, 0xba, 0xf8, 0xa3, 0xdc, 0x24, 0xbd, 0xfa, 0x1f, 0x72, 0x93, 0xec, 0xc3, + 0xc2, 0xd8, 0x9b, 0x64, 0x9f, 0x76, 0x17, 0xd3, 0x4c, 0xd5, 0x67, 0xe5, 0x82, 0x05, 0x99, 0xe7, + 0x4a, 0x07, 0x5a, 0x90, 0x29, 0xc2, 0xac, 0x61, 0xba, 0xc8, 0x36, 0xf5, 0xce, 0x52, 0x47, 0xdf, + 0xf2, 0x63, 0x3d, 0xf4, 0xce, 0xc2, 0x2b, 0x4c, 0x1e, 0x8d, 0xff, 0x43, 0x39, 0x0d, 0xe0, 0xa2, + 0x9d, 0x6e, 0x47, 0x77, 0x43, 0xd5, 0x63, 0x52, 0x58, 0xed, 0xcb, 0xf2, 0xda, 0x77, 0x0b, 0x5c, + 0x46, 0x40, 0x6b, 0x5c, 0xea, 0xa2, 0x0d, 0xd3, 0x78, 0xc6, 0x2e, 0x8e, 0xf6, 0x45, 0x74, 0xb4, + 0xdf, 0x27, 0x6e, 0x59, 0x22, 0xdf, 0xb3, 0x2c, 0xf1, 0x8f, 0xc2, 0xa7, 0x88, 0xfd, 0x56, 0x3f, + 0xe0, 0x14, 0x71, 0xd0, 0xd2, 0xe4, 0x9e, 0x96, 0x16, 0x18, 0x0b, 0x59, 0x01, 0x63, 0x81, 0x45, + 0x25, 0x27, 0x68, 0x68, 0xbf, 0x5e, 0xe8, 0x98, 0x72, 0x5c, 0x35, 0xc6, 0x30, 0x91, 0x93, 0x61, + 0x8e, 0x14, 0xbd, 0x60, 0x59, 0x17, 0x76, 0x74, 0xfb, 0x82, 0x6a, 0x1f, 0x48, 0x15, 0x63, 0xd7, + 0x44, 0x22, 0x17, 0xfa, 0x3e, 0x2d, 0x89, 0x3a, 0x15, 0x73, 0xe2, 0xf2, 0x79, 0x1e, 0xcf, 0xa2, + 0x88, 0x98, 0x8f, 0xb2, 0x08, 0x83, 0xe9, 0xe3, 0xfa, 0x47, 0x01, 0xae, 0x7e, 0x47, 0xcf, 0xce, + 0x27, 0x47, 0x89, 0xab, 0xfa, 0x95, 0xe1, 0xb0, 0xf3, 0xf9, 0x1a, 0x02, 0xbb, 0x02, 0xc8, 0x17, + 0x82, 0x2d, 0x2c, 0xef, 0x91, 0xad, 0x50, 0x36, 0x3d, 0x34, 0x23, 0x58, 0x1e, 0x0b, 0x9a, 0xc7, + 0x79, 0x16, 0x6a, 0xdd, 0x54, 0x31, 0xfd, 0x92, 0xf0, 0x3a, 0x4d, 0x5f, 0x01, 0x11, 0xee, 0xc6, + 0xd3, 0x2a, 0xc5, 0x16, 0x79, 0xc4, 0xd9, 0x4c, 0x1f, 0xcd, 0x17, 0xe5, 0x60, 0xca, 0x3f, 0xe7, + 0x8d, 0xaf, 0x21, 0x08, 0x30, 0x3c, 0x09, 0x79, 0xc7, 0xda, 0xb5, 0x5b, 0x88, 0xae, 0x9c, 0xd1, + 0xb7, 0x21, 0x56, 0x79, 0x06, 0x8e, 0xe7, 0xfb, 0x4c, 0x86, 0x6c, 0x62, 0x93, 0x21, 0xda, 0x20, + 0x8d, 0x1b, 0xe0, 0x5f, 0x2c, 0x1c, 0x3b, 0x96, 0xc3, 0xac, 0x8e, 0xdc, 0x47, 0xe2, 0x18, 0xff, + 0xfb, 0x42, 0x6b, 0x08, 0x03, 0x6a, 0x92, 0x4c, 0xe5, 0x6a, 0x43, 0x18, 0xaa, 0x57, 0xc2, 0xe5, + 0x7e, 0x0e, 0x6a, 0xa1, 0x62, 0x8b, 0x74, 0x43, 0x5b, 0x2d, 0xc8, 0xea, 0xb3, 0xb3, 0x50, 0x20, + 0xac, 0xd5, 0x02, 0x63, 0x4d, 0x7d, 0x79, 0xe6, 0xb0, 0x2d, 0xd2, 0xe8, 0x29, 0xe6, 0x67, 0x25, + 0xd1, 0xf8, 0x74, 0x9c, 0xe0, 0xc3, 0xda, 0x45, 0x68, 0xd2, 0x10, 0xcd, 0x2c, 0x46, 0xf9, 0xd4, + 0xdf, 0xcc, 0x88, 0x84, 0xbb, 0x13, 0x63, 0x31, 0xfd, 0x5e, 0xe9, 0x0b, 0x59, 0x3f, 0x5c, 0xc7, + 0x92, 0x6d, 0xed, 0x6c, 0xd8, 0x1d, 0xf5, 0xff, 0x14, 0x8a, 0x26, 0x1a, 0x61, 0xfe, 0x4b, 0xd1, + 0xe6, 0x7f, 0x01, 0xe4, 0x5d, 0xbb, 0xe3, 0x0f, 0xdf, 0xbb, 0x76, 0x67, 0x88, 0xe1, 0x5b, 0xb9, + 0x1e, 0xe6, 0xf4, 0x76, 0x7b, 0x5d, 0xdf, 0x42, 0x25, 0x6f, 0x5e, 0x6d, 0xba, 0xf4, 0x28, 0x7f, + 0x4f, 0x6a, 0x6c, 0x57, 0xf4, 0x75, 0xe1, 0x9d, 0x38, 0x0e, 0x24, 0x2a, 0x9f, 0xb1, 0x0c, 0x6f, + 0xde, 0x90, 0xd0, 0xda, 0xd6, 0xc3, 0xc0, 0x22, 0xf4, 0x4d, 0x70, 0x87, 0x4e, 0x80, 0xef, 0xf4, + 0x35, 0xeb, 0x77, 0x25, 0x98, 0xf0, 0xe4, 0x5d, 0x6c, 0xb7, 0xd5, 0x47, 0x73, 0xf1, 0x77, 0x22, + 0xf7, 0x48, 0x9f, 0x2f, 0xbc, 0x39, 0xed, 0xd7, 0x90, 0xd0, 0x8f, 0xc0, 0x24, 0x14, 0xa2, 0xc4, + 0x09, 0x51, 0x6c, 0x0f, 0x3a, 0xb6, 0x88, 0xf4, 0xc5, 0xf7, 0x29, 0x09, 0x66, 0xfd, 0x79, 0xc4, + 0x12, 0x72, 0x5b, 0xdb, 0xea, 0x6d, 0xa2, 0x0b, 0x4d, 0xb4, 0xa5, 0x49, 0x41, 0x4b, 0x53, 0xbf, + 0x9f, 0x49, 0xa8, 0xf2, 0x5c, 0xc9, 0x11, 0xab, 0x74, 0x89, 0x74, 0x31, 0x8e, 0x60, 0xfa, 0xc2, + 0xfc, 0xb2, 0x04, 0xd0, 0xb0, 0x82, 0xb9, 0xee, 0x01, 0x24, 0xf9, 0x52, 0xe1, 0xab, 0x3d, 0x68, + 0xc5, 0xc3, 0x62, 0x93, 0xf7, 0x1c, 0x82, 0x5b, 0x6c, 0x83, 0x4a, 0x1a, 0x4b, 0x5b, 0x9f, 0x5a, + 0xdc, 0xed, 0x76, 0x8c, 0x96, 0xee, 0xf6, 0xee, 0x0b, 0x47, 0x8b, 0x17, 0xdf, 0xd1, 0x95, 0xc8, + 0x28, 0x0c, 0xca, 0x88, 0x90, 0x25, 0x39, 0x8c, 0x2b, 0xf9, 0x87, 0x71, 0x05, 0xf7, 0x7a, 0x06, + 0x10, 0x1f, 0x83, 0x7a, 0xca, 0x70, 0xb4, 0xd6, 0x45, 0xe6, 0x82, 0x8d, 0xf4, 0x76, 0xcb, 0xde, + 0xdd, 0x39, 0xef, 0xb0, 0x4e, 0x0d, 0xf1, 0x3a, 0xca, 0x2c, 0x1d, 0x4b, 0xdc, 0xd2, 0xb1, 0xfa, + 0x1c, 0x59, 0x34, 0x4a, 0x01, 0xb3, 0xc1, 0xc1, 0xf0, 0x30, 0xc4, 0x50, 0x97, 0x68, 0x2b, 0xae, + 0x67, 0x95, 0x38, 0x9b, 0x64, 0x95, 0xf8, 0x2d, 0x42, 0x31, 0x0f, 0x84, 0xea, 0x35, 0x96, 0x1d, + 0xd5, 0xb9, 0x3a, 0x72, 0x23, 0xe0, 0xbd, 0x0e, 0x66, 0xcf, 0x87, 0x5f, 0x02, 0x88, 0xf9, 0xc4, + 0x3e, 0x7e, 0x0e, 0x6f, 0x4d, 0xba, 0x02, 0xc3, 0xb3, 0x10, 0x81, 0x6e, 0x80, 0xa0, 0x24, 0xb2, + 0x99, 0x9a, 0x68, 0x39, 0x25, 0xb6, 0xfc, 0xf4, 0x51, 0xf8, 0x98, 0x04, 0xd3, 0xf8, 0xe6, 0xb1, + 0x85, 0x4b, 0xd8, 0x3b, 0x5f, 0xd0, 0x28, 0x79, 0x11, 0x2b, 0x66, 0x05, 0xb2, 0x1d, 0xc3, 0xbc, + 0xe0, 0xef, 0x82, 0x7b, 0xcf, 0xe1, 0x3d, 0x36, 0x52, 0x9f, 0x7b, 0x6c, 0x82, 0x7d, 0x8a, 0xa0, + 0xdc, 0x03, 0x5d, 0xac, 0x38, 0x90, 0x5c, 0xfa, 0x62, 0xfc, 0xfb, 0x2c, 0xe4, 0xeb, 0x48, 0xb7, + 0x5b, 0xdb, 0xea, 0xfb, 0xa4, 0xbe, 0x53, 0x85, 0x49, 0x7e, 0xaa, 0xb0, 0x04, 0x13, 0x9b, 0x46, + 0xc7, 0x45, 0x36, 0xf1, 0x0c, 0x62, 0xbb, 0x76, 0xd2, 0xc4, 0x17, 0x3a, 0x56, 0xeb, 0xc2, 0x3c, + 0x35, 0xdd, 0xe7, 0xfd, 0xb8, 0x67, 0xf3, 0x4b, 0xf8, 0x27, 0xcd, 0xff, 0xd9, 0x33, 0x08, 0x1d, + 0xcb, 0x76, 0xa3, 0x42, 0x5a, 0x47, 0x50, 0xa9, 0x5b, 0xb6, 0xab, 0x91, 0x1f, 0x3d, 0x98, 0x37, + 0x77, 0x3b, 0x9d, 0x06, 0x7a, 0xc0, 0xf5, 0xa7, 0x6d, 0xfe, 0xbb, 0x67, 0x2c, 0x5a, 0x9b, 0x9b, + 0x0e, 0x22, 0x8b, 0x06, 0x39, 0x8d, 0xbe, 0x29, 0xc7, 0x21, 0xd7, 0x31, 0x76, 0x0c, 0x32, 0xd1, + 0xc8, 0x69, 0xe4, 0x45, 0xb9, 0x11, 0x0a, 0xe1, 0x1c, 0x87, 0x30, 0x7a, 0x2a, 0x8f, 0x9b, 0xe6, + 0xbe, 0x74, 0x4f, 0x67, 0x2e, 0xa0, 0x4b, 0xce, 0xa9, 0x09, 0xfc, 0x1d, 0x3f, 0xf3, 0x6e, 0x98, + 0x22, 0xfb, 0x1d, 0x44, 0xe2, 0xd1, 0x33, 0x58, 0x1b, 0xb5, 0x2c, 0xbb, 0xed, 0xcb, 0x26, 0x7a, + 0x82, 0x41, 0xf3, 0x25, 0xdb, 0xa5, 0xe8, 0x5b, 0xf8, 0x18, 0x5c, 0x20, 0xf2, 0x5e, 0xb7, 0xe9, + 0x15, 0x7d, 0xce, 0x70, 0xb7, 0xd7, 0x90, 0xab, 0xab, 0x7f, 0x2f, 0xf7, 0xd5, 0xb8, 0xe9, 0xff, + 0xa5, 0x71, 0x03, 0x34, 0x8e, 0x84, 0x09, 0x70, 0x77, 0x6d, 0xd3, 0x93, 0x23, 0x8d, 0x21, 0xc7, + 0xa4, 0x28, 0x77, 0xc0, 0x15, 0xe1, 0x9b, 0xbf, 0x54, 0xba, 0x48, 0xa7, 0xad, 0x53, 0x38, 0x7b, + 0x74, 0x06, 0x65, 0x1d, 0xae, 0x25, 0x1f, 0x57, 0x1a, 0x6b, 0xab, 0x2b, 0xc6, 0xd6, 0x76, 0xc7, + 0xd8, 0xda, 0x76, 0x9d, 0x8a, 0xe9, 0xb8, 0x48, 0x6f, 0xd7, 0x36, 0x35, 0x12, 0x8c, 0x1e, 0x30, + 0x1d, 0x91, 0xac, 0xbc, 0xe7, 0x90, 0xd8, 0xe8, 0xc6, 0x6a, 0x4a, 0x44, 0x4b, 0x79, 0x92, 0xd7, + 0x52, 0x9c, 0xdd, 0x4e, 0x80, 0xe9, 0x55, 0x3d, 0x98, 0x86, 0xaa, 0xbe, 0xdb, 0xc1, 0xcd, 0x05, + 0x67, 0x4e, 0x3a, 0xce, 0xc5, 0x70, 0x32, 0x86, 0x70, 0x93, 0x79, 0xc8, 0x2d, 0xdb, 0x7a, 0x77, + 0x5b, 0x7d, 0x36, 0xd3, 0x3f, 0x8f, 0xaa, 0x4d, 0x04, 0xda, 0x29, 0x0d, 0xd2, 0x4e, 0x79, 0x80, + 0x76, 0x66, 0x19, 0xed, 0x8c, 0x5e, 0x54, 0x3e, 0x03, 0x33, 0x2d, 0xab, 0xd3, 0x41, 0x2d, 0x4f, + 0x1e, 0x95, 0x36, 0x5e, 0xcd, 0x99, 0xd2, 0xb8, 0x34, 0x1c, 0x1b, 0x12, 0xb9, 0x75, 0xb2, 0x86, + 0x4e, 0x94, 0x3e, 0x4c, 0x50, 0x5f, 0x2e, 0x41, 0xb6, 0xdc, 0xde, 0x42, 0xdc, 0x3a, 0x7b, 0x86, + 0x59, 0x67, 0x3f, 0x09, 0x79, 0x57, 0xb7, 0xb7, 0x90, 0xeb, 0xaf, 0x13, 0x90, 0xb7, 0x20, 0x64, + 0xa5, 0xcc, 0x84, 0xac, 0xfc, 0x49, 0xc8, 0x7a, 0x32, 0xa3, 0x11, 0x78, 0xae, 0xed, 0x07, 0x3f, + 0x96, 0xfd, 0xbc, 0x57, 0xe2, 0xbc, 0x57, 0x6b, 0x0d, 0xff, 0xd0, 0x8b, 0x75, 0x6e, 0x1f, 0xd6, + 0xf8, 0x5e, 0xad, 0x96, 0x65, 0x56, 0x76, 0xf4, 0x2d, 0x44, 0xab, 0x19, 0x26, 0xf8, 0x5f, 0xcb, + 0x3b, 0xd6, 0xfd, 0x06, 0x8d, 0x1e, 0x19, 0x26, 0x78, 0x55, 0xd8, 0x36, 0xda, 0x6d, 0x64, 0xd2, + 0x96, 0x4d, 0xdf, 0xce, 0x9c, 0x86, 0xac, 0xc7, 0x83, 0xa7, 0x3f, 0x9e, 0xb1, 0x50, 0x38, 0xa2, + 0xcc, 0x78, 0xcd, 0x8a, 0x34, 0xde, 0x42, 0x86, 0x5f, 0x53, 0x15, 0x71, 0xdb, 0x21, 0x95, 0xeb, + 0xdf, 0xb8, 0x1e, 0x07, 0x39, 0xd3, 0x6a, 0xa3, 0x81, 0x83, 0x10, 0xc9, 0xa5, 0x3c, 0x11, 0x72, + 0xa8, 0xed, 0xf5, 0x0a, 0x32, 0xce, 0x7e, 0x3a, 0x5e, 0x96, 0x1a, 0xc9, 0x9c, 0xcc, 0x37, 0xa8, + 0x1f, 0xb7, 0xe9, 0x37, 0xc0, 0x5f, 0x98, 0x80, 0xa3, 0xa4, 0x0f, 0xa8, 0xef, 0x9e, 0xf7, 0x48, + 0x9d, 0x47, 0xea, 0xc3, 0xfd, 0x07, 0xae, 0xa3, 0xbc, 0xb2, 0x1f, 0x87, 0x9c, 0xb3, 0x7b, 0x3e, + 0x30, 0x42, 0xc9, 0x0b, 0xdb, 0x74, 0xa5, 0x91, 0x0c, 0x67, 0xf2, 0xb0, 0xc3, 0x19, 0x37, 0x34, + 0xc9, 0x7e, 0xe3, 0x0f, 0x07, 0xb2, 0x3c, 0x4e, 0xf6, 0x07, 0xb2, 0x7e, 0xc3, 0xd0, 0x29, 0x98, + 0xd0, 0x37, 0x5d, 0x64, 0x87, 0x66, 0x22, 0x7d, 0xf5, 0x86, 0xca, 0xf3, 0x68, 0xd3, 0xb2, 0x3d, + 0xb1, 0x4c, 0x91, 0xa1, 0xd2, 0x7f, 0x67, 0x5a, 0x2e, 0x70, 0x3b, 0x64, 0x37, 0xc1, 0x31, 0xd3, + 0x5a, 0x44, 0x5d, 0x2a, 0x67, 0x82, 0xe2, 0x2c, 0x6e, 0x01, 0xfb, 0x3f, 0xec, 0xeb, 0x4a, 0xe6, + 0xf6, 0x77, 0x25, 0xea, 0x67, 0x92, 0xce, 0x99, 0x7b, 0x80, 0x1e, 0x99, 0x85, 0xa6, 0x3c, 0x05, + 0x66, 0xda, 0xd4, 0x45, 0xab, 0x65, 0x04, 0xad, 0x24, 0xf2, 0x3f, 0x2e, 0x73, 0xa8, 0x48, 0x59, + 0x56, 0x91, 0x96, 0x61, 0x12, 0x1f, 0xc8, 0xf1, 0x34, 0x29, 0xd7, 0x13, 0xfa, 0x0e, 0x4f, 0xeb, + 0x82, 0x4a, 0x31, 0x62, 0x9b, 0x2f, 0xd1, 0x5f, 0xb4, 0xe0, 0xe7, 0x64, 0xb3, 0xef, 0x78, 0x09, + 0xa5, 0xdf, 0x1c, 0x7f, 0x2b, 0x0f, 0x57, 0x94, 0x6c, 0xcb, 0x71, 0x70, 0x14, 0x8a, 0xde, 0x86, + 0xf9, 0x26, 0x89, 0x0b, 0x5e, 0xfd, 0x88, 0x6e, 0x7e, 0xfd, 0x1a, 0xd4, 0xf8, 0x9a, 0xc6, 0xd7, + 0x85, 0x8f, 0x32, 0x07, 0xfb, 0x0f, 0x11, 0x42, 0xff, 0xd1, 0x68, 0x24, 0xef, 0xce, 0x88, 0x9c, + 0xae, 0x4e, 0x28, 0xab, 0xf4, 0x9b, 0xcb, 0x97, 0x24, 0xb8, 0xb2, 0x97, 0x9b, 0x0d, 0xd3, 0x09, + 0x1a, 0xcc, 0xd5, 0x03, 0xda, 0x0b, 0x7f, 0x1a, 0x37, 0xf6, 0xda, 0xa8, 0x88, 0xba, 0x33, 0xa5, + 0x45, 0x2c, 0x96, 0xbc, 0x37, 0x23, 0x72, 0x6d, 0x54, 0x62, 0xf2, 0xe9, 0x0b, 0xf7, 0xb3, 0x59, + 0x38, 0xba, 0x6c, 0x5b, 0xbb, 0x5d, 0x27, 0xec, 0x81, 0xfe, 0xa6, 0xff, 0x86, 0x6b, 0x5e, 0xc4, + 0x34, 0xb8, 0x06, 0xa6, 0x6d, 0x6a, 0xcd, 0x85, 0xdb, 0xaf, 0x6c, 0x12, 0xdb, 0x7b, 0xc9, 0x07, + 0xe9, 0xbd, 0xc2, 0x7e, 0x26, 0xcb, 0xf5, 0x33, 0xbd, 0x3d, 0x47, 0xae, 0x4f, 0xcf, 0xf1, 0xd7, + 0x52, 0xc2, 0x41, 0xb5, 0x47, 0x44, 0x11, 0xfd, 0x45, 0x09, 0xf2, 0x5b, 0x38, 0x23, 0xed, 0x2e, + 0x1e, 0x2b, 0x56, 0x33, 0x4c, 0x5c, 0xa3, 0xbf, 0x86, 0x72, 0x95, 0x59, 0x1d, 0x4e, 0x34, 0xc0, + 0xc5, 0x73, 0x9b, 0xbe, 0x52, 0x3d, 0x94, 0x85, 0x99, 0xa0, 0xf4, 0x4a, 0xdb, 0x51, 0x5f, 0xd4, + 0x5f, 0xa3, 0x66, 0x45, 0x34, 0x6a, 0xdf, 0x3a, 0x73, 0x30, 0xea, 0xc8, 0xcc, 0xa8, 0xd3, 0x77, + 0x74, 0x99, 0x89, 0x18, 0x5d, 0xd4, 0x67, 0xc9, 0xa2, 0xd7, 0x3f, 0xf0, 0x5d, 0x2b, 0xae, 0xcd, + 0x23, 0x79, 0xb0, 0x10, 0xbc, 0x84, 0x62, 0x70, 0xad, 0xd2, 0x57, 0x92, 0x0f, 0x4a, 0x70, 0x6c, + 0x7f, 0x67, 0xfe, 0x63, 0xbc, 0x17, 0x9a, 0x57, 0x27, 0x27, 0xf0, 0x42, 0xc3, 0x6f, 0xfc, 0x26, + 0x5d, 0xec, 0xd1, 0x58, 0xce, 0xde, 0x1b, 0xdc, 0x89, 0x8b, 0x1d, 0x7e, 0x15, 0x24, 0x9a, 0xbe, + 0x00, 0x7f, 0x45, 0x86, 0xa9, 0x3a, 0x72, 0x57, 0xf5, 0x4b, 0xd6, 0xae, 0xab, 0xea, 0xa2, 0xdb, + 0x73, 0x4f, 0x86, 0x7c, 0x07, 0xff, 0x42, 0x6f, 0xd5, 0xbd, 0xa6, 0xef, 0xfe, 0x16, 0xf6, 0xfd, + 0x21, 0xa4, 0x35, 0x9a, 0x9f, 0x3f, 0x93, 0x2c, 0xb2, 0x3b, 0x1a, 0x70, 0x37, 0x92, 0xad, 0x9d, + 0x44, 0x7b, 0xa7, 0x51, 0x45, 0xa7, 0x0f, 0xcb, 0x73, 0x64, 0x98, 0xad, 0x23, 0xb7, 0xe2, 0x2c, + 0xe9, 0x7b, 0x96, 0x6d, 0xb8, 0x88, 0xbd, 0x56, 0x2b, 0x1e, 0x9a, 0xd3, 0x00, 0x46, 0xf0, 0x1b, + 0x8d, 0x94, 0xc0, 0xa4, 0xa8, 0xbf, 0x99, 0xd4, 0x51, 0x88, 0xe3, 0x63, 0x24, 0x20, 0x24, 0xf2, + 0xb1, 0x88, 0x2b, 0x3e, 0x7d, 0x20, 0xbe, 0x28, 0x51, 0x20, 0x8a, 0x76, 0x6b, 0xdb, 0xd8, 0x43, + 0xed, 0x84, 0x40, 0xf8, 0xbf, 0x85, 0x40, 0x04, 0x84, 0x12, 0xbb, 0xaf, 0x70, 0x7c, 0x8c, 0xc2, + 0x7d, 0x25, 0x8e, 0xe0, 0x58, 0x82, 0x1d, 0x78, 0x5d, 0x0f, 0x5d, 0xcf, 0xbc, 0x4b, 0x54, 0xac, + 0xa1, 0xc9, 0x26, 0xb1, 0x26, 0xdb, 0x50, 0x1d, 0x0b, 0x29, 0x7b, 0x90, 0x4e, 0x67, 0xd3, 0xe8, + 0x58, 0xfa, 0x16, 0x9d, 0xbe, 0xd0, 0xdf, 0x2b, 0xc3, 0x89, 0xe0, 0x14, 0x70, 0x1d, 0xb9, 0x8b, + 0xba, 0xb3, 0x7d, 0xde, 0xd2, 0xed, 0x36, 0x7b, 0xdb, 0xf2, 0xd0, 0x27, 0xfe, 0xd4, 0x2f, 0xb0, + 0x20, 0x54, 0x79, 0x10, 0xfa, 0xba, 0x8a, 0xf6, 0xe5, 0x65, 0x14, 0x9d, 0x4c, 0xac, 0x37, 0xeb, + 0x6f, 0x07, 0x60, 0x3d, 0x8d, 0x03, 0xeb, 0xce, 0x61, 0x59, 0x4c, 0x1f, 0xb8, 0x5f, 0x27, 0x23, + 0x02, 0xe3, 0xd5, 0x7c, 0x9f, 0x28, 0x60, 0x11, 0x5e, 0xad, 0x72, 0xa4, 0x57, 0xeb, 0x50, 0x63, + 0xc4, 0x40, 0x8f, 0xe4, 0x74, 0xc7, 0x88, 0x43, 0xf4, 0x36, 0x7e, 0xa7, 0x0c, 0x05, 0x1c, 0x06, + 0x82, 0xf1, 0xf8, 0x56, 0xef, 0x17, 0x45, 0x67, 0x9f, 0x77, 0xf9, 0x44, 0x52, 0xef, 0x72, 0xf5, + 0x1d, 0x49, 0x7d, 0xc8, 0x7b, 0xb9, 0x1d, 0x09, 0x62, 0x89, 0x5c, 0xc4, 0x07, 0x70, 0x90, 0x3e, + 0x68, 0xbf, 0x28, 0x03, 0x78, 0x0d, 0x9a, 0x9e, 0x7d, 0x78, 0xba, 0x28, 0x5c, 0x37, 0xb3, 0x7e, + 0xf5, 0x1e, 0x50, 0x27, 0x7a, 0x80, 0x22, 0x14, 0xc3, 0x53, 0x15, 0x0f, 0x27, 0xf5, 0xad, 0x0c, + 0xb9, 0x1a, 0x09, 0x2c, 0x89, 0xbc, 0x2d, 0x23, 0xcb, 0x4e, 0x1f, 0x90, 0xff, 0x2e, 0x41, 0xae, + 0x61, 0xd5, 0x91, 0x7b, 0x70, 0x53, 0x20, 0xf1, 0xb1, 0x7d, 0x5c, 0xee, 0x28, 0x8e, 0xed, 0xf7, + 0x23, 0x94, 0xbe, 0xe8, 0xde, 0x23, 0xc1, 0x4c, 0xc3, 0x2a, 0x05, 0x8b, 0x53, 0xe2, 0xbe, 0xaa, + 0xe2, 0x57, 0x58, 0x06, 0x15, 0x0c, 0x8b, 0x39, 0xd0, 0x15, 0x96, 0x83, 0xe9, 0xa5, 0x2f, 0xb7, + 0xdb, 0xe0, 0xe8, 0x86, 0xd9, 0xb6, 0x34, 0xd4, 0xb6, 0xe8, 0x4a, 0xb7, 0xa2, 0x40, 0x76, 0xd7, + 0x6c, 0x5b, 0x98, 0xe5, 0x9c, 0x86, 0x9f, 0xbd, 0x34, 0x1b, 0xb5, 0x2d, 0xea, 0x1b, 0x80, 0x9f, + 0xd5, 0xaf, 0xcb, 0x90, 0xf5, 0xfe, 0x15, 0x17, 0xf5, 0x3b, 0xe5, 0x84, 0x81, 0x08, 0x3c, 0xf2, + 0x23, 0xb1, 0x84, 0xee, 0x62, 0xd6, 0xfe, 0x89, 0x07, 0xeb, 0xb5, 0x51, 0xe5, 0x31, 0xa2, 0x08, + 0xd7, 0xfc, 0x95, 0x53, 0x30, 0x71, 0xbe, 0x63, 0xb5, 0x2e, 0x84, 0xe7, 0xe5, 0xe9, 0xab, 0x72, + 0x23, 0xe4, 0x6c, 0xdd, 0xdc, 0x42, 0x74, 0x4f, 0xe1, 0x78, 0x4f, 0x5f, 0x88, 0xbd, 0x5e, 0x34, + 0x92, 0x45, 0x7d, 0x47, 0x92, 0x10, 0x08, 0x7d, 0x2a, 0x9f, 0x4c, 0x1f, 0x16, 0x87, 0x38, 0x59, + 0x56, 0x80, 0x99, 0x52, 0x91, 0x5c, 0x16, 0xbb, 0x56, 0x3b, 0x5b, 0x2e, 0xc8, 0x18, 0x66, 0x4f, + 0x26, 0x29, 0xc2, 0xec, 0x91, 0xff, 0x91, 0x85, 0xb9, 0x4f, 0xe5, 0x0f, 0x03, 0xe6, 0x4f, 0x49, + 0x30, 0xbb, 0x6a, 0x38, 0x6e, 0x94, 0xb7, 0x7f, 0x4c, 0x14, 0xb8, 0x17, 0x27, 0x35, 0x95, 0xb9, + 0x72, 0x84, 0xc3, 0xbf, 0x25, 0x32, 0x87, 0xe3, 0x8a, 0x18, 0xcf, 0xb1, 0x14, 0xcc, 0x01, 0xb9, + 0xe0, 0x51, 0x58, 0x92, 0x89, 0x0d, 0xa5, 0xb0, 0x90, 0xf1, 0x1b, 0x4a, 0x91, 0x65, 0xa7, 0x2f, + 0xdf, 0xaf, 0x4b, 0x70, 0xcc, 0x2b, 0x3e, 0x6e, 0x59, 0x2a, 0x5a, 0xcc, 0x03, 0x97, 0xa5, 0x12, + 0xaf, 0x8c, 0xef, 0xe3, 0x65, 0x14, 0x2b, 0xe3, 0x83, 0x88, 0x8e, 0x59, 0xcc, 0x11, 0xcb, 0xb0, + 0x83, 0xc4, 0x1c, 0xb3, 0x0c, 0x3b, 0xbc, 0x98, 0xe3, 0x97, 0x62, 0x87, 0x14, 0xf3, 0xa1, 0x2d, + 0xb0, 0xfe, 0x86, 0x1c, 0x88, 0x39, 0x72, 0x6d, 0x23, 0x46, 0xcc, 0x89, 0x4f, 0xec, 0xaa, 0xef, + 0x1a, 0x52, 0xf0, 0x23, 0x5e, 0xdf, 0x18, 0x06, 0xa6, 0x43, 0x5c, 0xe3, 0x78, 0x85, 0x0c, 0x73, + 0x94, 0x8b, 0xfe, 0x53, 0xe6, 0x18, 0x8c, 0x12, 0x4f, 0x99, 0x13, 0x9f, 0x01, 0xe2, 0x39, 0x1b, + 0xff, 0x19, 0xa0, 0xd8, 0xf2, 0xd3, 0x07, 0xe7, 0x1b, 0x59, 0x38, 0xe9, 0xb1, 0xb0, 0x66, 0xb5, + 0x8d, 0xcd, 0x4b, 0x84, 0x8b, 0xb3, 0x7a, 0x67, 0x17, 0x39, 0xea, 0xfb, 0x25, 0x51, 0x94, 0xfe, + 0x13, 0x80, 0xd5, 0x45, 0x36, 0x09, 0xa4, 0x46, 0x81, 0xba, 0x23, 0xaa, 0xb2, 0xfb, 0x4b, 0x0a, + 0x82, 0xa2, 0xd7, 0x7c, 0x22, 0x1a, 0x43, 0xcf, 0xb3, 0x0a, 0xa7, 0x82, 0x2f, 0xbd, 0x0e, 0x1e, + 0x99, 0xfd, 0x0e, 0x1e, 0x37, 0x80, 0xac, 0xb7, 0xdb, 0x01, 0x54, 0xbd, 0x9b, 0xd9, 0xb8, 0x4c, + 0xcd, 0xcb, 0xe2, 0xe5, 0x74, 0x50, 0x78, 0x34, 0x2f, 0x22, 0xa7, 0x83, 0x5c, 0x65, 0x1e, 0xf2, + 0xe4, 0x06, 0xc1, 0x60, 0x45, 0xbf, 0x7f, 0x66, 0x9a, 0x8b, 0x37, 0xed, 0x6a, 0xbc, 0x1a, 0xde, + 0x96, 0x48, 0x32, 0xfd, 0xfa, 0xe9, 0xd0, 0x4e, 0xd6, 0x38, 0x05, 0x7b, 0xea, 0xd0, 0x94, 0xc7, + 0xb3, 0x1b, 0x56, 0xec, 0x76, 0x3b, 0x97, 0x1a, 0x34, 0xf8, 0x4a, 0xa2, 0xdd, 0x30, 0x26, 0x86, + 0x8b, 0xd4, 0x1b, 0xc3, 0x25, 0xf9, 0x6e, 0x18, 0xc7, 0xc7, 0x28, 0x76, 0xc3, 0xe2, 0x08, 0x8e, + 0x61, 0x3d, 0x32, 0x47, 0xac, 0x66, 0x1a, 0xa3, 0xf6, 0xcd, 0xfd, 0x0f, 0xa1, 0x01, 0xef, 0xec, + 0xd2, 0x2f, 0x7c, 0x6d, 0x6c, 0x6c, 0x6e, 0xe5, 0x89, 0x90, 0xdf, 0xb4, 0xec, 0x1d, 0xdd, 0xdf, + 0xb8, 0xef, 0x3d, 0x29, 0x42, 0xe3, 0xc2, 0x2e, 0xe1, 0x3c, 0x1a, 0xcd, 0xeb, 0xcd, 0x47, 0x9e, + 0x69, 0x74, 0x69, 0xd4, 0x45, 0xef, 0x51, 0xb9, 0x0e, 0x66, 0x69, 0xf0, 0xc5, 0x2a, 0x72, 0x5c, + 0xd4, 0xa6, 0x11, 0x2b, 0xf8, 0x44, 0xe5, 0x0c, 0xcc, 0xd0, 0x84, 0x25, 0xa3, 0x83, 0x1c, 0x1a, + 0xb4, 0x82, 0x4b, 0x53, 0x4e, 0x42, 0xde, 0x70, 0xee, 0x71, 0x2c, 0x13, 0xfb, 0xff, 0x4f, 0x6a, + 0xf4, 0x4d, 0xb9, 0x01, 0x8e, 0xd2, 0x7c, 0x81, 0xb1, 0x4a, 0x0e, 0xec, 0xf4, 0x26, 0xab, 0x9f, + 0x1b, 0x66, 0xe2, 0x90, 0x38, 0x1e, 0xaf, 0x87, 0xc2, 0x6e, 0xab, 0x85, 0x50, 0x9b, 0x9e, 0x6c, + 0xf2, 0x5f, 0x13, 0x46, 0xea, 0x4d, 0x3c, 0xcd, 0x38, 0xa4, 0x50, 0xbd, 0x1f, 0x39, 0x01, 0x79, + 0x72, 0xed, 0x85, 0xfa, 0xb2, 0xb9, 0xbe, 0xca, 0x38, 0xc7, 0x2b, 0xe3, 0x06, 0xcc, 0x98, 0x96, + 0x57, 0xdc, 0xba, 0x6e, 0xeb, 0x3b, 0x4e, 0xdc, 0x2a, 0x22, 0xa1, 0x1b, 0x0c, 0x19, 0x55, 0xe6, + 0xb7, 0x95, 0x23, 0x1a, 0x47, 0x46, 0xf9, 0xdf, 0xe0, 0xe8, 0x79, 0x1a, 0x01, 0xc0, 0xa1, 0x94, + 0xa5, 0x68, 0x1f, 0xbb, 0x1e, 0xca, 0x0b, 0xfc, 0x9f, 0x2b, 0x47, 0xb4, 0x5e, 0x62, 0xca, 0x4f, + 0xc3, 0x9c, 0xf7, 0xda, 0xb6, 0x2e, 0xfa, 0x8c, 0xcb, 0xd1, 0x86, 0x46, 0x0f, 0xf9, 0x35, 0xee, + 0xc7, 0x95, 0x23, 0x5a, 0x0f, 0x29, 0xa5, 0x06, 0xb0, 0xed, 0xee, 0x74, 0x28, 0xe1, 0x6c, 0xb4, + 0x4a, 0xf6, 0x10, 0x5e, 0x09, 0x7e, 0x5a, 0x39, 0xa2, 0x31, 0x24, 0x94, 0x55, 0x98, 0x72, 0x1f, + 0x70, 0x29, 0xbd, 0x5c, 0xf4, 0xe6, 0x76, 0x0f, 0xbd, 0x86, 0xff, 0xcf, 0xca, 0x11, 0x2d, 0x24, + 0xa0, 0x54, 0x60, 0xb2, 0x7b, 0x9e, 0x12, 0xcb, 0xf7, 0xb9, 0x35, 0xbe, 0x3f, 0xb1, 0xf5, 0xf3, + 0x01, 0xad, 0xe0, 0x77, 0x8f, 0xb1, 0x96, 0xb3, 0x47, 0x69, 0x4d, 0x08, 0x33, 0x56, 0xf2, 0xff, + 0xf1, 0x18, 0x0b, 0x08, 0x28, 0x15, 0x98, 0x72, 0x4c, 0xbd, 0xeb, 0x6c, 0x5b, 0xae, 0x73, 0x6a, + 0xb2, 0xc7, 0x0f, 0x32, 0x9a, 0x5a, 0x9d, 0xfe, 0xa3, 0x85, 0x7f, 0x2b, 0x4f, 0x84, 0x13, 0xbb, + 0xf8, 0xfa, 0xd0, 0xf2, 0x03, 0x86, 0xe3, 0x1a, 0xe6, 0x96, 0x1f, 0x43, 0x96, 0xf4, 0x26, 0xfd, + 0x3f, 0x2a, 0xf3, 0xf4, 0x44, 0x14, 0xe0, 0xb6, 0xa9, 0xf6, 0x6e, 0xc6, 0x91, 0x62, 0x99, 0x83, + 0x50, 0x4f, 0x81, 0xac, 0xf7, 0x09, 0x9f, 0xd9, 0x9c, 0xeb, 0xbf, 0xd0, 0xd7, 0xab, 0x3b, 0xb8, + 0x01, 0x7b, 0x3f, 0x79, 0x63, 0xa3, 0x69, 0xad, 0xdb, 0xd6, 0x96, 0x8d, 0x1c, 0x87, 0x3a, 0x1c, + 0x32, 0x29, 0x5e, 0x03, 0x37, 0x1c, 0x72, 0x4f, 0x7c, 0xe8, 0xef, 0xce, 0x26, 0x91, 0xd9, 0x66, + 0x15, 0x5d, 0xc4, 0x0e, 0xc1, 0xf8, 0xfc, 0x0d, 0x9e, 0x6d, 0xfa, 0x29, 0xea, 0xf5, 0x30, 0xc3, + 0x36, 0x32, 0x72, 0x77, 0x96, 0x11, 0xda, 0x5e, 0xf4, 0x4d, 0xbd, 0x0e, 0xe6, 0x78, 0x9d, 0x66, + 0x86, 0x18, 0xd9, 0xef, 0x0a, 0xd5, 0x6b, 0xe1, 0x68, 0x4f, 0xc3, 0xf2, 0x63, 0x8a, 0x64, 0xc2, + 0x98, 0x22, 0xd7, 0x00, 0x84, 0x5a, 0xdc, 0x97, 0xcc, 0xd5, 0x30, 0x15, 0xe8, 0x65, 0xdf, 0x0c, + 0x5f, 0xcd, 0xc0, 0xa4, 0xaf, 0x6c, 0xfd, 0x32, 0x78, 0xe3, 0x8b, 0xc9, 0x6c, 0x20, 0xd0, 0x69, + 0x36, 0x97, 0xe6, 0x8d, 0x23, 0xa1, 0xdb, 0x6e, 0xc3, 0x70, 0x3b, 0xfe, 0xd1, 0xb7, 0xde, 0x64, + 0x65, 0x1d, 0xc0, 0xc0, 0x18, 0x35, 0xc2, 0xb3, 0x70, 0xb7, 0x24, 0x68, 0x0f, 0x44, 0x1f, 0x18, + 0x1a, 0x67, 0x7e, 0x8c, 0x1e, 0x54, 0x9b, 0x82, 0x5c, 0x7d, 0xbd, 0x58, 0x2a, 0x17, 0x8e, 0x28, + 0x73, 0x00, 0xe5, 0xa7, 0xaf, 0x97, 0xb5, 0x4a, 0xb9, 0x5a, 0x2a, 0x17, 0x32, 0xea, 0x2b, 0x25, + 0x98, 0x0a, 0x1a, 0x41, 0xdf, 0x4a, 0x96, 0xa9, 0x6a, 0x0d, 0xbc, 0x9e, 0x68, 0x7f, 0xa3, 0x62, + 0x95, 0xec, 0xc9, 0x70, 0xf9, 0xae, 0x83, 0x96, 0x0c, 0xdb, 0x71, 0x35, 0xeb, 0xe2, 0x92, 0x65, + 0x07, 0x51, 0x93, 0xfd, 0x6b, 0xfa, 0x23, 0x3e, 0x7b, 0x16, 0x45, 0x1b, 0xe1, 0x43, 0x51, 0xc8, + 0xa6, 0x2b, 0xc3, 0x61, 0x82, 0x47, 0xd7, 0x25, 0xf7, 0xe2, 0x3b, 0x48, 0xb3, 0x2e, 0x3a, 0x45, + 0xb3, 0x5d, 0xb2, 0x3a, 0xbb, 0x3b, 0xa6, 0x43, 0x6d, 0x82, 0xa8, 0xcf, 0x9e, 0x74, 0xf0, 0xe5, + 0x63, 0x73, 0x00, 0xa5, 0xda, 0xea, 0x6a, 0xb9, 0xd4, 0xa8, 0xd4, 0xaa, 0x85, 0x23, 0x9e, 0xb4, + 0x1a, 0xc5, 0x85, 0x55, 0x4f, 0x3a, 0x3f, 0x03, 0x93, 0x7e, 0x9b, 0xa6, 0x61, 0x50, 0x32, 0x7e, + 0x18, 0x14, 0xa5, 0x08, 0x93, 0x7e, 0x2b, 0xa7, 0x23, 0xc2, 0xa3, 0x7b, 0x8f, 0xbd, 0xee, 0xe8, + 0xb6, 0x8b, 0xfd, 0xa5, 0x7d, 0x22, 0x0b, 0xba, 0x83, 0xb4, 0xe0, 0xb7, 0x33, 0x8f, 0xa3, 0x1c, + 0x28, 0x30, 0x57, 0x5c, 0x5d, 0x6d, 0xd6, 0xb4, 0x66, 0xb5, 0xd6, 0x58, 0xa9, 0x54, 0x97, 0xc9, + 0x08, 0x59, 0x59, 0xae, 0xd6, 0xb4, 0x32, 0x19, 0x20, 0xeb, 0x85, 0x0c, 0xb9, 0xfc, 0x6e, 0x61, + 0x12, 0xf2, 0x5d, 0x2c, 0x5d, 0xf5, 0x4b, 0x72, 0xc2, 0xf3, 0xee, 0x01, 0x4e, 0x11, 0xd7, 0x73, + 0x71, 0x3e, 0xe7, 0x52, 0x9f, 0x33, 0xa1, 0x67, 0x60, 0x86, 0xd8, 0x72, 0x0e, 0x5e, 0xbe, 0xa7, + 0x37, 0xdc, 0x72, 0x69, 0xea, 0xc7, 0xa4, 0x04, 0x87, 0xe0, 0xfb, 0x72, 0x94, 0xcc, 0xb8, 0xf8, + 0xf3, 0x61, 0x2e, 0xbb, 0x53, 0x60, 0xae, 0x52, 0x6d, 0x94, 0xb5, 0x6a, 0x71, 0x95, 0x66, 0x91, + 0x95, 0x53, 0x70, 0xbc, 0x5a, 0xa3, 0x31, 0xfd, 0xea, 0xf8, 0x5a, 0xed, 0xb5, 0xf5, 0x9a, 0xd6, + 0x28, 0xe4, 0x94, 0x93, 0xa0, 0x90, 0x67, 0xee, 0xd6, 0xfa, 0xbc, 0xf2, 0x18, 0xb8, 0x76, 0xb5, + 0xb2, 0x56, 0x69, 0x34, 0x6b, 0x4b, 0x4d, 0xad, 0x76, 0xae, 0xee, 0x21, 0xa8, 0x95, 0x57, 0x8b, + 0x9e, 0x22, 0x31, 0x97, 0xe0, 0x4d, 0x28, 0x97, 0xc1, 0x51, 0x7c, 0xc1, 0x25, 0xbe, 0xf9, 0x9e, + 0x94, 0x37, 0xa9, 0x5c, 0x05, 0xa7, 0x2a, 0xd5, 0xfa, 0xc6, 0xd2, 0x52, 0xa5, 0x54, 0x29, 0x57, + 0x1b, 0xcd, 0xf5, 0xb2, 0xb6, 0x56, 0xa9, 0xd7, 0xbd, 0x7f, 0x0b, 0x53, 0xf8, 0x8a, 0x31, 0xd2, + 0x67, 0xaa, 0xef, 0x93, 0x61, 0xf6, 0xac, 0xde, 0x31, 0xbc, 0x81, 0x02, 0xdf, 0x3d, 0xd8, 0x73, + 0x5c, 0xc4, 0xc5, 0x77, 0x14, 0x52, 0x87, 0x73, 0xfc, 0xa2, 0xfe, 0xbc, 0x9c, 0xf0, 0xb8, 0x08, + 0x05, 0x82, 0x94, 0x38, 0xcf, 0x95, 0x16, 0x31, 0xb9, 0x79, 0xbd, 0x94, 0xe0, 0xb8, 0x88, 0x38, + 0xf9, 0x64, 0xe0, 0xbf, 0x6a, 0x54, 0xe0, 0x17, 0x60, 0x66, 0xa3, 0x5a, 0xdc, 0x68, 0xac, 0xd4, + 0xb4, 0xca, 0x4f, 0xe1, 0x68, 0xe3, 0xb3, 0x30, 0xb5, 0x54, 0xd3, 0x16, 0x2a, 0x8b, 0x8b, 0xe5, + 0x6a, 0x21, 0xa7, 0x5c, 0x0e, 0x97, 0xd5, 0xcb, 0xda, 0xd9, 0x4a, 0xa9, 0xdc, 0xdc, 0xa8, 0x16, + 0xcf, 0x16, 0x2b, 0xab, 0xb8, 0x8f, 0xc8, 0xc7, 0xdc, 0x9b, 0x38, 0xa1, 0xfe, 0x6c, 0x16, 0x80, + 0x54, 0xdd, 0xb3, 0xa4, 0xd9, 0xdb, 0xf5, 0xfe, 0x22, 0xe9, 0xa4, 0x21, 0x24, 0x13, 0xd1, 0x7e, + 0x2b, 0x30, 0x69, 0xd3, 0x0f, 0x74, 0xf9, 0x64, 0x10, 0x1d, 0xf2, 0xe8, 0x53, 0xd3, 0x82, 0xdf, + 0xd5, 0xf7, 0x27, 0x99, 0x23, 0x44, 0x32, 0x96, 0x0c, 0xc9, 0xa5, 0xd1, 0x00, 0xa9, 0xbe, 0x28, + 0x03, 0x73, 0x7c, 0xc5, 0xbc, 0x4a, 0x60, 0x63, 0x4a, 0xac, 0x12, 0xfc, 0xcf, 0x8c, 0x91, 0x75, + 0xe6, 0x09, 0x74, 0x38, 0x05, 0xbf, 0x65, 0x92, 0x93, 0xdf, 0xbe, 0xc5, 0x52, 0xc8, 0x78, 0xcc, + 0x7b, 0x46, 0x07, 0xb9, 0x5a, 0xbd, 0xf1, 0x80, 0x5b, 0x90, 0xd5, 0xaf, 0xca, 0x30, 0xcb, 0x5d, + 0xdf, 0xa7, 0xbe, 0x3e, 0x23, 0x72, 0xb5, 0x16, 0x73, 0x31, 0x60, 0xe6, 0xa0, 0x17, 0x03, 0x9e, + 0xb9, 0x19, 0x26, 0x68, 0x1a, 0x96, 0x6f, 0xad, 0xea, 0x99, 0x02, 0x47, 0x61, 0x7a, 0xb9, 0xdc, + 0x68, 0xd6, 0x1b, 0x45, 0xad, 0x51, 0x5e, 0x2c, 0x64, 0xbc, 0x81, 0xaf, 0xbc, 0xb6, 0xde, 0xb8, + 0xaf, 0x20, 0x25, 0xf7, 0xc0, 0xeb, 0x65, 0x64, 0xcc, 0x1e, 0x78, 0x71, 0xc5, 0xa7, 0x3f, 0x57, + 0xfd, 0x8c, 0x0c, 0x05, 0xc2, 0x41, 0xf9, 0x81, 0x2e, 0xb2, 0x0d, 0x64, 0xb6, 0x90, 0x7a, 0x41, + 0x24, 0xe2, 0xe7, 0xbe, 0x58, 0x78, 0xb8, 0x3f, 0x67, 0xac, 0x44, 0xf2, 0xd2, 0x63, 0x60, 0x67, + 0xf7, 0x19, 0xd8, 0x9f, 0x4e, 0xea, 0x82, 0xd7, 0xcb, 0xee, 0x48, 0x20, 0xfb, 0x64, 0x12, 0x17, + 0xbc, 0x01, 0x1c, 0x8c, 0x25, 0x90, 0x6f, 0xc4, 0xf8, 0x5b, 0x90, 0xd5, 0x17, 0xca, 0x70, 0x74, + 0x51, 0x77, 0xd1, 0xc2, 0xa5, 0x86, 0xb1, 0x83, 0x1c, 0x57, 0xdf, 0xe9, 0x46, 0x5c, 0x89, 0x97, + 0xd9, 0x77, 0x25, 0x9e, 0xeb, 0xff, 0x81, 0x39, 0x95, 0xb5, 0x30, 0x41, 0x7d, 0x77, 0xd2, 0x43, + 0x7b, 0x3d, 0x3c, 0x8c, 0x2c, 0xda, 0x6e, 0xb2, 0xc3, 0x78, 0xf1, 0x5c, 0x8c, 0xe1, 0x86, 0xda, + 0x29, 0x28, 0x10, 0x56, 0x18, 0x2f, 0xb3, 0x5f, 0xa1, 0xb7, 0x48, 0x36, 0x13, 0x04, 0xf5, 0xf3, + 0xc3, 0x24, 0x48, 0x7c, 0x98, 0x04, 0x6e, 0xd1, 0x52, 0xee, 0xf5, 0x0c, 0x48, 0xda, 0x19, 0x32, + 0x2e, 0x65, 0xd1, 0x71, 0x54, 0xd3, 0xeb, 0x0c, 0x63, 0x8b, 0x1f, 0xcf, 0x4d, 0x67, 0xf4, 0x2e, + 0xc3, 0xb2, 0x28, 0x32, 0xf1, 0x17, 0x3a, 0x26, 0xf5, 0x2f, 0xe6, 0x5c, 0xfa, 0x62, 0x6e, 0x39, + 0x4c, 0xcf, 0xbf, 0x78, 0x10, 0x07, 0xe9, 0xa3, 0xf0, 0x7d, 0x09, 0xb2, 0x75, 0xcb, 0x76, 0x47, + 0x85, 0x41, 0xd2, 0x3d, 0x51, 0x46, 0x02, 0xf5, 0xe8, 0x39, 0x67, 0x7a, 0x7b, 0xa2, 0xf1, 0xe5, + 0x8f, 0x21, 0x2e, 0xe2, 0x51, 0x98, 0x23, 0x9c, 0x04, 0x97, 0x86, 0xfc, 0xbb, 0x44, 0xfa, 0xab, + 0x7b, 0x45, 0x11, 0x39, 0x03, 0x33, 0xcc, 0x9e, 0x64, 0x70, 0x61, 0x36, 0x9b, 0xa6, 0xbe, 0x89, + 0xc5, 0x65, 0x91, 0xc7, 0xa5, 0xdf, 0x8c, 0x3b, 0xb8, 0x77, 0x63, 0x54, 0x3d, 0x53, 0x92, 0x10, + 0x8b, 0x31, 0x85, 0xa7, 0x8f, 0xc8, 0x83, 0x32, 0xe4, 0xa9, 0x4f, 0xd8, 0x48, 0x11, 0x48, 0xda, + 0x32, 0x02, 0x21, 0x88, 0xf9, 0x8e, 0xc9, 0xa3, 0x6e, 0x19, 0xf1, 0xe5, 0xa7, 0x8f, 0xc3, 0x0f, + 0xa8, 0xb3, 0x63, 0x71, 0x4f, 0x37, 0x3a, 0xfa, 0xf9, 0x4e, 0x82, 0xd0, 0xc6, 0x1f, 0x4b, 0x78, + 0xbc, 0x2b, 0xa8, 0x2a, 0x57, 0x5e, 0x84, 0xc4, 0x7f, 0x02, 0xa6, 0xec, 0x60, 0x49, 0xd2, 0x3f, + 0xfd, 0xde, 0xe3, 0x68, 0x4a, 0xbf, 0x6b, 0x61, 0xce, 0x44, 0x67, 0xb9, 0x84, 0xf8, 0x19, 0xcb, + 0xd9, 0x93, 0xe9, 0x62, 0xbb, 0xbd, 0x84, 0x74, 0x77, 0xd7, 0x46, 0xed, 0x44, 0x43, 0x04, 0x2f, + 0xa2, 0x29, 0x56, 0x12, 0x5c, 0x70, 0xc1, 0x55, 0x1e, 0x9d, 0x27, 0x0d, 0xe8, 0x0d, 0x7c, 0x5e, + 0x46, 0xd2, 0x25, 0xbd, 0x2d, 0x80, 0xa4, 0xc6, 0x41, 0xf2, 0x94, 0xe1, 0x98, 0x48, 0x1f, 0x90, + 0x5f, 0x93, 0x61, 0x8e, 0xd8, 0x09, 0xa3, 0xc6, 0xe4, 0xf7, 0x12, 0xfa, 0x90, 0x30, 0xd7, 0x32, + 0xb1, 0xec, 0x8c, 0x04, 0x96, 0x24, 0x1e, 0x27, 0x62, 0x7c, 0xa4, 0x8f, 0xcc, 0xe7, 0xf2, 0x00, + 0x8c, 0x5f, 0xe0, 0xc7, 0xf2, 0x61, 0xa0, 0x3f, 0xf5, 0x1d, 0x74, 0xfe, 0x51, 0xe7, 0xa2, 0x4e, + 0x33, 0x3e, 0x7f, 0xc1, 0x86, 0x14, 0x9f, 0x28, 0x34, 0xaa, 0xfc, 0x79, 0x42, 0x9b, 0x97, 0x7a, + 0xe5, 0x0d, 0x1c, 0xdc, 0x87, 0xec, 0xe5, 0x3e, 0x9e, 0xc0, 0xf8, 0x1d, 0xc4, 0x4a, 0x32, 0xd4, + 0x56, 0x87, 0x98, 0xd9, 0x9f, 0x82, 0xe3, 0x5a, 0xb9, 0xb8, 0x58, 0xab, 0xae, 0xde, 0xc7, 0xde, + 0xd1, 0x53, 0x90, 0xd9, 0xc9, 0x49, 0x2a, 0xb0, 0xbd, 0x21, 0x61, 0x1f, 0xc8, 0xcb, 0x2a, 0x6e, + 0xb6, 0xc2, 0x2c, 0xae, 0x0c, 0xee, 0xd5, 0x04, 0xc8, 0x1e, 0x26, 0x0a, 0x0f, 0x02, 0xd3, 0x8c, + 0x9e, 0x2f, 0x43, 0x21, 0xbc, 0x26, 0x9e, 0x5e, 0xc6, 0x56, 0xe3, 0xdd, 0x06, 0xbb, 0x64, 0xff, + 0x29, 0x74, 0x1b, 0xf4, 0x13, 0x94, 0xeb, 0x61, 0xae, 0xb5, 0x8d, 0x5a, 0x17, 0x2a, 0xa6, 0xbf, + 0xaf, 0x4e, 0x36, 0x61, 0x7b, 0x52, 0x79, 0x60, 0xee, 0xe5, 0x81, 0xe1, 0x27, 0xd1, 0xdc, 0x20, + 0xcd, 0x32, 0x15, 0x81, 0xcb, 0x1f, 0x06, 0xb8, 0x54, 0x39, 0x5c, 0x6e, 0x1f, 0x8a, 0x6a, 0x32, + 0x58, 0xaa, 0x43, 0xc0, 0xa2, 0xc2, 0xc9, 0xda, 0x7a, 0xa3, 0x52, 0xab, 0x36, 0x37, 0xea, 0xe5, + 0xc5, 0xe6, 0x82, 0x0f, 0x4e, 0xbd, 0x20, 0xab, 0xdf, 0x94, 0x60, 0x82, 0xb0, 0xe5, 0xf4, 0x5c, + 0xeb, 0x1e, 0xef, 0x2f, 0xa9, 0xbe, 0x5d, 0x38, 0xfa, 0x41, 0x20, 0x08, 0x5a, 0x4e, 0x44, 0x3f, + 0xf5, 0x64, 0x98, 0x20, 0x20, 0xfb, 0x2b, 0x5a, 0xa7, 0x23, 0x7a, 0x29, 0x4a, 0x46, 0xf3, 0xb3, + 0x0b, 0x46, 0x42, 0x18, 0xc0, 0x46, 0xfa, 0x23, 0xcb, 0xb3, 0xb2, 0xc4, 0x0c, 0x3e, 0x67, 0xb8, + 0xdb, 0xd8, 0x9d, 0x52, 0x7d, 0x9a, 0xc8, 0xf2, 0xe2, 0x4d, 0x90, 0xdb, 0xf3, 0x72, 0x0f, 0x70, + 0x4d, 0x25, 0x99, 0xd4, 0x57, 0x09, 0x07, 0xde, 0xe4, 0xf4, 0x33, 0xe0, 0x29, 0x02, 0x9c, 0x35, + 0xc8, 0x76, 0x0c, 0xc7, 0xa5, 0xe3, 0xc7, 0x6d, 0x89, 0x08, 0xf9, 0x0f, 0x15, 0x17, 0xed, 0x68, + 0x98, 0x8c, 0x7a, 0x0f, 0xcc, 0xb0, 0xa9, 0x02, 0xee, 0xb9, 0xa7, 0x60, 0x82, 0x1e, 0x1b, 0xa3, + 0x4b, 0xac, 0xfe, 0xab, 0xe0, 0xb2, 0xa6, 0x50, 0x6d, 0xd3, 0xd7, 0x81, 0xff, 0xf7, 0x28, 0x4c, + 0xac, 0x18, 0x8e, 0x6b, 0xd9, 0x97, 0xd4, 0x87, 0x33, 0x30, 0x71, 0x16, 0xd9, 0x8e, 0x61, 0x99, + 0xfb, 0x5c, 0x0d, 0xae, 0x81, 0xe9, 0xae, 0x8d, 0xf6, 0x0c, 0x6b, 0xd7, 0x09, 0x17, 0x67, 0xd8, + 0x24, 0x45, 0x85, 0x49, 0x7d, 0xd7, 0xdd, 0xb6, 0xec, 0x30, 0xda, 0x84, 0xff, 0xae, 0x9c, 0x06, + 0x20, 0xcf, 0x55, 0x7d, 0x07, 0x51, 0x07, 0x0a, 0x26, 0x45, 0x51, 0x20, 0xeb, 0x1a, 0x3b, 0x88, + 0x86, 0x9f, 0xc5, 0xcf, 0x9e, 0x80, 0x71, 0x28, 0x37, 0x1a, 0x32, 0x4f, 0xd6, 0xfc, 0x57, 0xf5, + 0x0b, 0x32, 0x4c, 0x2f, 0x23, 0x97, 0xb2, 0xea, 0xa8, 0x2f, 0xce, 0x08, 0xdd, 0xf8, 0xe0, 0x8d, + 0xb1, 0x1d, 0xdd, 0xf1, 0xff, 0x0b, 0x96, 0x60, 0xf9, 0xc4, 0x30, 0x16, 0xae, 0xcc, 0x06, 0xc2, + 0xc6, 0x81, 0xd1, 0xdc, 0x0a, 0xf1, 0xbb, 0xa4, 0x99, 0xe9, 0x26, 0xc8, 0xfe, 0x0f, 0xea, 0x7b, + 0x24, 0xd1, 0x43, 0xc5, 0x54, 0xf6, 0xf3, 0x4c, 0x7d, 0x22, 0xbb, 0xa3, 0xc9, 0x3d, 0x9a, 0x63, + 0x5f, 0x8c, 0x73, 0x96, 0x12, 0x25, 0xa3, 0x05, 0xb9, 0x05, 0x8f, 0x23, 0x0f, 0xe6, 0x24, 0x7d, + 0x6d, 0xfc, 0xae, 0x0c, 0xd3, 0xf5, 0x6d, 0xeb, 0xa2, 0x2f, 0xc7, 0x9f, 0x11, 0x03, 0xf6, 0x2a, + 0x98, 0xda, 0xeb, 0x01, 0x35, 0x4c, 0x88, 0xbe, 0x83, 0x5d, 0x7d, 0x9e, 0x9c, 0x14, 0x26, 0x86, + 0xb9, 0x91, 0xdf, 0x90, 0xae, 0x3c, 0x09, 0x26, 0x28, 0xd7, 0x74, 0xc9, 0x25, 0x1e, 0x60, 0x3f, + 0x33, 0x5b, 0xc1, 0x2c, 0x5f, 0xc1, 0x64, 0xc8, 0x47, 0x57, 0x2e, 0x7d, 0xe4, 0xff, 0x44, 0xc2, + 0xc1, 0x28, 0x7c, 0xe0, 0x4b, 0x23, 0x00, 0x5e, 0xfd, 0x5e, 0x46, 0x74, 0x61, 0x32, 0x90, 0x40, + 0xc0, 0xc1, 0x81, 0x6e, 0x73, 0x19, 0x48, 0x2e, 0x7d, 0x79, 0xbe, 0x32, 0x0b, 0x33, 0x8b, 0xc6, + 0xe6, 0x66, 0xd0, 0x49, 0xbe, 0x44, 0xb0, 0x93, 0x8c, 0x76, 0x07, 0xf0, 0xec, 0xdc, 0x5d, 0xdb, + 0x46, 0xa6, 0x5f, 0x29, 0xda, 0x9c, 0x7a, 0x52, 0x95, 0x1b, 0xe0, 0xa8, 0x3f, 0x2e, 0xb0, 0x1d, + 0xe5, 0x94, 0xd6, 0x9b, 0xac, 0x7e, 0x47, 0x78, 0x57, 0xcb, 0x97, 0x28, 0x5b, 0xa5, 0x88, 0x06, + 0x78, 0x07, 0xcc, 0x6e, 0x93, 0xdc, 0x78, 0xea, 0xef, 0x77, 0x96, 0x27, 0x7b, 0x82, 0xfd, 0xae, + 0x21, 0xc7, 0xd1, 0xb7, 0x90, 0xc6, 0x67, 0xee, 0x69, 0xbe, 0x72, 0x92, 0xab, 0xab, 0xc4, 0x36, + 0xc8, 0x04, 0x6a, 0x32, 0x06, 0xed, 0x38, 0x03, 0xd9, 0x25, 0xa3, 0x83, 0xd4, 0x17, 0x48, 0x30, + 0xa5, 0xa1, 0x96, 0x65, 0xb6, 0xbc, 0x37, 0xc6, 0x39, 0xe8, 0x9f, 0x32, 0xa2, 0x57, 0x36, 0x7a, + 0x74, 0xe6, 0x03, 0x1a, 0x11, 0xed, 0x46, 0xec, 0x6a, 0xc6, 0x58, 0x52, 0x63, 0xb8, 0x60, 0xc3, + 0x9b, 0x7a, 0x6c, 0x6e, 0x76, 0x2c, 0x9d, 0x5b, 0xfc, 0xea, 0x35, 0x85, 0x6e, 0x84, 0x82, 0x7f, + 0xc6, 0xc3, 0x72, 0xd7, 0x0d, 0xd3, 0x0c, 0x0e, 0x11, 0xef, 0x4b, 0xe7, 0xf7, 0x6d, 0x63, 0xe3, + 0xb0, 0xe0, 0xba, 0xd3, 0xd2, 0x23, 0x34, 0xfb, 0x7a, 0x98, 0x3b, 0x7f, 0xc9, 0x45, 0x0e, 0xcd, + 0x45, 0x8b, 0xcd, 0x6a, 0x3d, 0xa9, 0x4c, 0x14, 0xe5, 0xb8, 0x78, 0x2d, 0x31, 0x05, 0x26, 0x13, + 0xf5, 0xca, 0x10, 0x33, 0xc0, 0xe3, 0x50, 0xa8, 0xd6, 0x16, 0xcb, 0xd8, 0x57, 0xcd, 0xf7, 0xfe, + 0xd9, 0x52, 0x5f, 0x2a, 0xc3, 0x0c, 0x76, 0x26, 0xf1, 0x51, 0xb8, 0x56, 0x60, 0x3e, 0xa2, 0x7e, + 0x59, 0xd8, 0x8f, 0x0d, 0x57, 0x99, 0x2d, 0x20, 0x5a, 0xd0, 0x9b, 0x46, 0xa7, 0x57, 0xd0, 0x39, + 0xad, 0x27, 0xb5, 0x0f, 0x20, 0x72, 0x5f, 0x40, 0x7e, 0x47, 0xc8, 0x99, 0x6d, 0x10, 0x77, 0x87, + 0x85, 0xca, 0xef, 0xca, 0x30, 0xed, 0x4d, 0x52, 0x7c, 0x50, 0x6a, 0x1c, 0x28, 0x96, 0xd9, 0xb9, + 0x14, 0x2e, 0x8b, 0xf8, 0xaf, 0x89, 0x1a, 0xc9, 0x5f, 0x09, 0xcf, 0xdc, 0xb1, 0x88, 0x18, 0x5e, + 0xc6, 0x84, 0xdf, 0x07, 0x84, 0xe6, 0xf3, 0x03, 0x98, 0x3b, 0x2c, 0xf8, 0xbe, 0x9e, 0x83, 0xfc, + 0x46, 0x17, 0x23, 0xf7, 0x2a, 0x59, 0x24, 0x22, 0xf9, 0xbe, 0x83, 0x0c, 0x9e, 0x99, 0xd5, 0xb1, + 0x5a, 0x7a, 0x67, 0x3d, 0x3c, 0x11, 0x16, 0x26, 0x28, 0xb7, 0x53, 0xdf, 0x46, 0x72, 0x9c, 0xee, + 0xfa, 0xd8, 0x60, 0xdd, 0x58, 0x46, 0xcc, 0xa1, 0x91, 0x9b, 0xe0, 0x58, 0xdb, 0x70, 0xf4, 0xf3, + 0x1d, 0x54, 0x36, 0x5b, 0xf6, 0x25, 0x22, 0x0e, 0x3a, 0xad, 0xda, 0xf7, 0x41, 0xb9, 0x13, 0x72, + 0x8e, 0x7b, 0xa9, 0x43, 0xe6, 0x89, 0xec, 0x19, 0x93, 0xc8, 0xa2, 0xea, 0x5e, 0x76, 0x8d, 0xfc, + 0xc5, 0xba, 0x28, 0x4d, 0x08, 0xde, 0xd7, 0xfc, 0x04, 0xc8, 0x5b, 0xb6, 0xb1, 0x65, 0x90, 0xfb, + 0x77, 0xe6, 0xf6, 0xc5, 0xa4, 0x23, 0xa6, 0x40, 0x0d, 0x67, 0xd1, 0x68, 0x56, 0xe5, 0x49, 0x30, + 0x65, 0xec, 0xe8, 0x5b, 0xe8, 0x5e, 0xc3, 0x24, 0x27, 0xf6, 0xe6, 0x6e, 0x3d, 0xb5, 0xef, 0xf8, + 0x0c, 0xfd, 0xae, 0x85, 0x59, 0xd5, 0x0f, 0x48, 0xa2, 0x81, 0x73, 0x70, 0xdd, 0x08, 0xa8, 0x63, + 0xb9, 0xb7, 0x5a, 0x7d, 0xad, 0x50, 0x48, 0x9b, 0x68, 0xb6, 0xd2, 0x1f, 0xbc, 0x3f, 0x2f, 0xc1, + 0xe4, 0xa2, 0x75, 0xd1, 0xc4, 0x8a, 0x7e, 0x9b, 0x98, 0xad, 0xdb, 0xe7, 0x90, 0x23, 0x7f, 0x2d, + 0x64, 0xec, 0x89, 0x06, 0x5c, 0x5b, 0xbf, 0xc8, 0x08, 0x18, 0x62, 0x5b, 0x8e, 0xe0, 0x65, 0x7d, + 0x71, 0xe5, 0xa4, 0x2f, 0xd7, 0x3f, 0x95, 0x21, 0xbb, 0x68, 0x5b, 0x5d, 0xf5, 0x6d, 0x99, 0x04, + 0x2e, 0x0b, 0x6d, 0xdb, 0xea, 0x36, 0xf0, 0x6d, 0x5b, 0xe1, 0x31, 0x0e, 0x36, 0x4d, 0xb9, 0x0d, + 0x26, 0xbb, 0x96, 0x63, 0xb8, 0xfe, 0x34, 0x62, 0xee, 0xd6, 0x47, 0xf5, 0x6d, 0xcd, 0xeb, 0x34, + 0x93, 0x16, 0x64, 0xf7, 0x7a, 0x6d, 0x2c, 0x42, 0x4f, 0x2e, 0x9e, 0x18, 0xfd, 0x1b, 0xc7, 0x7a, + 0x52, 0xd5, 0x97, 0xb1, 0x48, 0x3e, 0x85, 0x47, 0xf2, 0xd1, 0x7d, 0x24, 0x6c, 0x5b, 0xdd, 0x91, + 0x6c, 0x32, 0xbe, 0x3a, 0x40, 0xf5, 0xa9, 0x1c, 0xaa, 0x37, 0x0a, 0x95, 0x99, 0x3e, 0xa2, 0x1f, + 0xc8, 0x02, 0x60, 0x33, 0x63, 0xc3, 0x9b, 0x00, 0x89, 0xd9, 0x58, 0xcf, 0xc9, 0x32, 0xb2, 0x2c, + 0xf2, 0xb2, 0x7c, 0x6c, 0x84, 0x15, 0x83, 0xc9, 0x47, 0x48, 0xb4, 0x08, 0xb9, 0x5d, 0xef, 0x33, + 0x95, 0xa8, 0x20, 0x09, 0xfc, 0xaa, 0x91, 0x3f, 0xd5, 0x3f, 0xc9, 0x40, 0x0e, 0x27, 0x28, 0xa7, + 0x01, 0xf0, 0xc0, 0x4e, 0x0e, 0x04, 0x65, 0xf0, 0x10, 0xce, 0xa4, 0x60, 0x6d, 0x35, 0xda, 0xf4, + 0x33, 0x31, 0x99, 0xc3, 0x04, 0xef, 0x6f, 0x3c, 0xdc, 0x63, 0x5a, 0xd4, 0x00, 0x60, 0x52, 0xbc, + 0xbf, 0xf1, 0xdb, 0x2a, 0xda, 0x24, 0x81, 0x90, 0xb3, 0x5a, 0x98, 0x10, 0xfc, 0xbd, 0x1a, 0x5c, + 0x9f, 0xe5, 0xff, 0x8d, 0x53, 0xbc, 0xc9, 0x30, 0x56, 0xcb, 0x85, 0xb0, 0x88, 0x3c, 0xce, 0xd4, + 0x9b, 0xac, 0xbe, 0x21, 0x50, 0x9b, 0x45, 0x4e, 0x6d, 0x6e, 0x49, 0x20, 0xde, 0xf4, 0x95, 0xe7, + 0xab, 0x39, 0x98, 0xaa, 0x5a, 0x6d, 0xaa, 0x3b, 0xcc, 0x84, 0xf1, 0x93, 0xb9, 0x44, 0x13, 0xc6, + 0x80, 0x46, 0x84, 0x82, 0xdc, 0xcd, 0x2b, 0x88, 0x18, 0x05, 0x56, 0x3f, 0x94, 0x05, 0xc8, 0x63, + 0xed, 0xdd, 0x7f, 0x2f, 0x53, 0x1c, 0x09, 0x2c, 0x5a, 0x8d, 0xfe, 0xf9, 0x1f, 0x4e, 0xc7, 0xfe, + 0x2b, 0xe4, 0x70, 0x05, 0x63, 0x76, 0x77, 0xf8, 0x8a, 0x4a, 0xf1, 0x15, 0x95, 0xe3, 0x2b, 0x9a, + 0xed, 0xad, 0x68, 0x92, 0x75, 0x80, 0x28, 0x0d, 0x49, 0x5f, 0xc7, 0xff, 0x71, 0x02, 0xa0, 0xaa, + 0xef, 0x19, 0x5b, 0x64, 0x77, 0xf8, 0x0b, 0xfe, 0xfc, 0x87, 0xee, 0xe3, 0xfe, 0x22, 0x33, 0x10, + 0xde, 0x06, 0x13, 0x74, 0xdc, 0xa3, 0x15, 0xb9, 0x9a, 0xab, 0x48, 0x48, 0x85, 0x98, 0xa5, 0x0f, + 0xb8, 0x9a, 0x9f, 0x9f, 0xbb, 0x42, 0x56, 0xea, 0xb9, 0x42, 0xb6, 0xff, 0x1e, 0x44, 0xc4, 0xc5, + 0xb2, 0xea, 0x7b, 0x85, 0x3d, 0xfa, 0x19, 0x7e, 0x98, 0x1a, 0x45, 0x34, 0xc1, 0x27, 0xc0, 0x84, + 0x15, 0x6c, 0x68, 0xcb, 0x91, 0xeb, 0x60, 0x15, 0x73, 0xd3, 0xd2, 0xfc, 0x9c, 0x82, 0x9b, 0x5f, + 0x42, 0x7c, 0x8c, 0xe5, 0xd0, 0xcc, 0xc9, 0x65, 0x3f, 0xa8, 0x94, 0x57, 0x8f, 0x73, 0x86, 0xbb, + 0xbd, 0x6a, 0x98, 0x17, 0x1c, 0xf5, 0x3f, 0x8b, 0x59, 0x90, 0x0c, 0xfe, 0x52, 0x32, 0xfc, 0xf9, + 0x98, 0x1d, 0x75, 0x1e, 0xb5, 0x3b, 0xa3, 0xa8, 0xf4, 0xe7, 0x36, 0x02, 0xc0, 0xdb, 0x21, 0x4f, + 0x18, 0xa5, 0x9d, 0xe8, 0x99, 0x48, 0xfc, 0x02, 0x4a, 0x1a, 0xfd, 0x43, 0x7d, 0x4f, 0x80, 0xe3, + 0x59, 0x0e, 0xc7, 0x85, 0x03, 0x71, 0x96, 0x3a, 0xa4, 0x67, 0x1e, 0x0f, 0x13, 0x54, 0xd2, 0xca, + 0x1c, 0xdb, 0x8a, 0x0b, 0x47, 0x14, 0x80, 0xfc, 0x9a, 0xb5, 0x87, 0x1a, 0x56, 0x21, 0xe3, 0x3d, + 0x7b, 0xfc, 0x35, 0xac, 0x82, 0xa4, 0xbe, 0x66, 0x12, 0x26, 0x83, 0x68, 0x3e, 0x9f, 0x97, 0xa0, + 0x50, 0xb2, 0x91, 0xee, 0xa2, 0x25, 0xdb, 0xda, 0x21, 0x35, 0x12, 0xf7, 0x0e, 0xfd, 0x35, 0x61, + 0x17, 0x8f, 0x20, 0xca, 0x4e, 0x6f, 0x61, 0x11, 0x58, 0x92, 0x45, 0x48, 0xc9, 0x5f, 0x84, 0x54, + 0xdf, 0x2a, 0xe4, 0xf2, 0x21, 0x5a, 0x4a, 0xfa, 0x4d, 0xed, 0xd3, 0x12, 0xe4, 0x4a, 0x1d, 0xcb, + 0x44, 0xec, 0x11, 0xa6, 0x81, 0x67, 0x65, 0xfa, 0xef, 0x44, 0xa8, 0xcf, 0x92, 0x44, 0x6d, 0x8d, + 0x50, 0x00, 0x5e, 0xd9, 0x82, 0xb2, 0x15, 0x1b, 0xa4, 0x62, 0x49, 0xa7, 0x2f, 0xd0, 0x6f, 0x4a, + 0x30, 0x45, 0xe2, 0xe2, 0x14, 0x3b, 0x1d, 0xf5, 0x51, 0xa1, 0x50, 0xfb, 0x44, 0x44, 0x52, 0x7f, + 0x47, 0xd8, 0x45, 0x3f, 0xa8, 0x55, 0x40, 0x3b, 0x41, 0x80, 0xa0, 0x64, 0x1e, 0xe3, 0x62, 0x7b, + 0x69, 0x03, 0x19, 0x4a, 0x5f, 0xd4, 0x7f, 0x21, 0x79, 0x06, 0x80, 0x79, 0x61, 0xdd, 0x46, 0x7b, + 0x06, 0xba, 0xa8, 0x5e, 0x19, 0x0a, 0x7b, 0x7f, 0xd0, 0x8f, 0x37, 0x0b, 0x2f, 0xe2, 0x30, 0x24, + 0x23, 0xb7, 0xb2, 0xa6, 0x3b, 0x61, 0x26, 0xda, 0x8b, 0xf7, 0x46, 0x62, 0x61, 0xc8, 0x68, 0x6c, + 0x76, 0xc1, 0x35, 0x9b, 0x68, 0x2e, 0xd2, 0x17, 0xec, 0x87, 0x27, 0x60, 0x72, 0xc3, 0x74, 0xba, + 0x1d, 0xdd, 0xd9, 0x56, 0xff, 0x5d, 0x86, 0x3c, 0xb9, 0x0d, 0x4c, 0xfd, 0x09, 0x2e, 0xb6, 0xc0, + 0x33, 0x76, 0x91, 0xed, 0xbb, 0xe0, 0x90, 0x97, 0xfe, 0x97, 0x95, 0xab, 0x1f, 0x90, 0x45, 0x27, + 0xa9, 0x7e, 0xa1, 0xcc, 0xb5, 0xf0, 0xfd, 0x8f, 0xb3, 0x77, 0x8d, 0x96, 0xbb, 0x6b, 0x07, 0x57, + 0x5f, 0x3f, 0x4e, 0x8c, 0xca, 0x3a, 0xf9, 0x4b, 0x0b, 0x7e, 0x57, 0x75, 0x98, 0xa0, 0x89, 0xfb, + 0xb6, 0x93, 0xf6, 0x9f, 0xbf, 0x3d, 0x09, 0x79, 0xdd, 0x76, 0x0d, 0xc7, 0xa5, 0x1b, 0xac, 0xf4, + 0xcd, 0xeb, 0x2e, 0xc9, 0xd3, 0x86, 0xdd, 0xf1, 0xa3, 0x90, 0x04, 0x09, 0xea, 0xef, 0x0a, 0xcd, + 0x1f, 0xe3, 0x6b, 0x9e, 0x0c, 0xf2, 0x7b, 0x87, 0x58, 0xa3, 0xbe, 0x1c, 0x2e, 0xd3, 0x8a, 0x8d, + 0x72, 0x93, 0x04, 0xad, 0x08, 0xe2, 0x53, 0xb4, 0xd5, 0x77, 0xcb, 0xcc, 0xfa, 0xdd, 0x25, 0x6e, + 0x8c, 0xa0, 0x52, 0x0c, 0xc7, 0x88, 0x20, 0x21, 0x66, 0xb7, 0x9a, 0x5b, 0x84, 0x95, 0xc5, 0x17, + 0x61, 0x7f, 0x4b, 0x78, 0x37, 0x29, 0x10, 0xe5, 0x80, 0x35, 0xc0, 0xb8, 0xdb, 0x82, 0x3e, 0x28, + 0xb4, 0x33, 0x34, 0xa8, 0xa4, 0x43, 0x84, 0xed, 0x4d, 0x13, 0x30, 0xb1, 0xac, 0x77, 0x3a, 0xc8, + 0xbe, 0xe4, 0x0d, 0x49, 0x05, 0x9f, 0xc3, 0x35, 0xdd, 0x34, 0x36, 0x91, 0xe3, 0xc6, 0x77, 0x96, + 0xef, 0x15, 0x8e, 0x44, 0x4b, 0xcb, 0x98, 0xef, 0xa5, 0x1f, 0x21, 0xf3, 0x9b, 0x21, 0x6b, 0x98, + 0x9b, 0x16, 0xed, 0x32, 0x7b, 0x57, 0xed, 0xfd, 0x9f, 0xf1, 0xd4, 0x05, 0x67, 0x14, 0x0c, 0x46, + 0x2b, 0xc8, 0x45, 0xfa, 0x3d, 0xe7, 0x6f, 0x67, 0x61, 0xd6, 0x67, 0xa2, 0x62, 0xb6, 0xd1, 0x03, + 0xec, 0x52, 0xcc, 0x4b, 0xb3, 0xa2, 0xc7, 0xc1, 0x7a, 0xeb, 0x83, 0x49, 0x45, 0x88, 0xb4, 0x01, + 0xd0, 0xd2, 0x5d, 0xb4, 0x65, 0xd9, 0x46, 0xd0, 0x1f, 0x3e, 0x31, 0x09, 0xb5, 0x12, 0xf9, 0xfb, + 0x92, 0xc6, 0xd0, 0x51, 0xee, 0x84, 0x69, 0x14, 0x9c, 0xbf, 0xf7, 0x97, 0x6a, 0x62, 0xf1, 0x62, + 0xf3, 0xab, 0x7f, 0x21, 0x74, 0xea, 0x4c, 0xa4, 0x9a, 0xc9, 0x30, 0x6b, 0x0e, 0xd7, 0x86, 0x36, + 0xaa, 0x6b, 0x45, 0xad, 0xbe, 0x52, 0x5c, 0x5d, 0xad, 0x54, 0x97, 0x83, 0xc0, 0x2f, 0x0a, 0xcc, + 0x2d, 0xd6, 0xce, 0x55, 0x99, 0xc8, 0x3c, 0x59, 0x75, 0x1d, 0x26, 0x7d, 0x79, 0xf5, 0xf3, 0xc5, + 0x64, 0x65, 0x46, 0x7d, 0x31, 0x99, 0x24, 0xcf, 0x38, 0x33, 0x5a, 0x81, 0x83, 0x0e, 0x7e, 0x56, + 0xff, 0x48, 0x87, 0x1c, 0x5e, 0x53, 0x57, 0xdf, 0x89, 0xb7, 0x01, 0xbb, 0x1d, 0xbd, 0x85, 0xd4, + 0x9d, 0x04, 0xd6, 0xb8, 0x7f, 0x35, 0x82, 0xb4, 0xef, 0x6a, 0x04, 0xfc, 0x48, 0xad, 0xbe, 0xe3, + 0xfd, 0xd6, 0xf1, 0x35, 0x92, 0x85, 0x3f, 0xa0, 0x15, 0xbb, 0xbb, 0x42, 0x96, 0xff, 0x29, 0x9b, + 0x11, 0x2a, 0x19, 0xcd, 0x53, 0x32, 0x4b, 0x54, 0x6c, 0x1f, 0x26, 0x8e, 0xa3, 0x31, 0x5c, 0xdf, + 0x9d, 0x85, 0x5c, 0xbd, 0xdb, 0x31, 0x5c, 0xf5, 0x15, 0xd2, 0x48, 0x30, 0x23, 0xd7, 0x59, 0xc8, + 0x03, 0xaf, 0xb3, 0x08, 0x77, 0x5d, 0xb3, 0x02, 0xbb, 0xae, 0x0d, 0xf4, 0x80, 0xcb, 0xef, 0xba, + 0xde, 0x46, 0x83, 0xb7, 0x91, 0x3d, 0xdb, 0x47, 0xf7, 0x11, 0x29, 0xae, 0x56, 0x9f, 0xa8, 0x80, + 0x67, 0x1e, 0x4f, 0x83, 0x93, 0x01, 0xe4, 0x17, 0x6a, 0x8d, 0x46, 0x6d, 0xad, 0x70, 0x04, 0x47, + 0xb5, 0xa9, 0xad, 0x93, 0x50, 0x31, 0x95, 0x6a, 0xb5, 0xac, 0x15, 0x24, 0x1c, 0x2e, 0xad, 0xd2, + 0x58, 0x2d, 0x17, 0x64, 0x3e, 0xb6, 0x79, 0xac, 0xf9, 0xcd, 0x97, 0x9d, 0xa6, 0x7a, 0x89, 0x19, + 0xe2, 0xd1, 0xfc, 0xa4, 0xaf, 0x5c, 0xbf, 0x2a, 0x43, 0x6e, 0x0d, 0xd9, 0x5b, 0x48, 0x7d, 0x46, + 0x82, 0x4d, 0xbe, 0x4d, 0xc3, 0x76, 0x48, 0x70, 0xb9, 0x70, 0x93, 0x8f, 0x4d, 0x53, 0xae, 0x83, + 0x59, 0x07, 0xb5, 0x2c, 0xb3, 0xed, 0x67, 0x22, 0xfd, 0x11, 0x9f, 0xc8, 0xdf, 0x2b, 0x2f, 0x00, + 0x19, 0x66, 0x74, 0x24, 0x3b, 0x75, 0x49, 0x80, 0xe9, 0x57, 0x6a, 0xfa, 0xc0, 0x7c, 0x47, 0xf6, + 0x7e, 0xea, 0x5e, 0x52, 0x5f, 0x2e, 0xbc, 0xfb, 0x7a, 0x13, 0xe4, 0xb1, 0x9a, 0xfa, 0x63, 0x74, + 0xff, 0xfe, 0x98, 0xe6, 0x51, 0x16, 0xe0, 0x98, 0x83, 0x3a, 0xa8, 0xe5, 0xa2, 0xb6, 0xd7, 0x74, + 0xb5, 0x81, 0x9d, 0xc2, 0xfe, 0xec, 0xea, 0x9f, 0xb1, 0x00, 0xde, 0xc1, 0x03, 0x78, 0x7d, 0x1f, + 0x51, 0x7a, 0x15, 0x8a, 0xb6, 0x95, 0xbd, 0x6a, 0xd4, 0x3b, 0x56, 0xb0, 0x28, 0xee, 0xbf, 0x7b, + 0xdf, 0xb6, 0xdd, 0x9d, 0x0e, 0xfe, 0x46, 0x0f, 0x18, 0xf8, 0xef, 0xca, 0x3c, 0x4c, 0xe8, 0xe6, + 0x25, 0xfc, 0x29, 0x1b, 0x53, 0x6b, 0x3f, 0x93, 0xfa, 0x9a, 0x00, 0xf9, 0xbb, 0x38, 0xe4, 0x1f, + 0x2b, 0xc6, 0x6e, 0xfa, 0xc0, 0xff, 0xfc, 0x04, 0xe4, 0xd6, 0x75, 0xc7, 0x45, 0xea, 0xff, 0x23, + 0x8b, 0x22, 0x7f, 0x3d, 0xcc, 0x6d, 0x5a, 0xad, 0x5d, 0x07, 0xb5, 0xf9, 0x46, 0xd9, 0x93, 0x3a, + 0x0a, 0xcc, 0x95, 0x1b, 0xa1, 0xe0, 0x27, 0x52, 0xb2, 0xfe, 0x36, 0xfc, 0xbe, 0x74, 0x1c, 0x29, + 0xdb, 0x59, 0xd7, 0x6d, 0xb7, 0xb6, 0x89, 0xd3, 0x82, 0x48, 0xd9, 0x6c, 0x22, 0x07, 0x7d, 0x3e, + 0x06, 0xfa, 0x89, 0x68, 0xe8, 0x27, 0x05, 0xa0, 0x57, 0x8a, 0x30, 0xb9, 0x69, 0x74, 0x10, 0xfe, + 0x61, 0x0a, 0xff, 0xd0, 0x6f, 0x4c, 0xc2, 0xb2, 0x0f, 0xc6, 0xa4, 0x25, 0xa3, 0x83, 0xb4, 0xe0, + 0x37, 0x7f, 0x22, 0x03, 0xe1, 0x44, 0x66, 0x95, 0xf8, 0xd3, 0x7a, 0x86, 0x97, 0xa9, 0xef, 0x20, + 0x7f, 0xf1, 0xcd, 0xa4, 0x87, 0x5b, 0xda, 0xba, 0xab, 0x63, 0x30, 0x66, 0x34, 0xfc, 0xcc, 0xfb, + 0x85, 0xc8, 0xbd, 0x7e, 0x21, 0xcf, 0x95, 0x93, 0xf5, 0x88, 0x3e, 0xb3, 0x11, 0x2d, 0xea, 0xbc, + 0x0f, 0x10, 0xb1, 0x14, 0x83, 0x77, 0x0f, 0x98, 0x96, 0x6e, 0x23, 0x77, 0x9d, 0xf5, 0xc4, 0xc8, + 0x69, 0x7c, 0x22, 0x76, 0xe5, 0x73, 0xea, 0xfa, 0x0e, 0xc2, 0x85, 0x95, 0xbc, 0x6f, 0xd4, 0x45, + 0x6b, 0x5f, 0x7a, 0xd8, 0xff, 0xe6, 0x46, 0xdd, 0xff, 0xf6, 0xab, 0x63, 0xfa, 0xcd, 0xf0, 0xf5, + 0x59, 0x90, 0x4b, 0xbb, 0xee, 0x23, 0xba, 0xfb, 0xfd, 0xbe, 0xb0, 0x9f, 0x0b, 0xed, 0xcf, 0x22, + 0x2f, 0x92, 0x1f, 0x53, 0xef, 0x9b, 0x50, 0x4b, 0xc4, 0xfc, 0x69, 0xa2, 0xea, 0x96, 0xbe, 0x8e, + 0xbc, 0x4d, 0x0e, 0x1c, 0x2c, 0x1f, 0xcc, 0x1c, 0xdc, 0x34, 0x57, 0x49, 0xff, 0xc4, 0xf4, 0x0c, + 0xc1, 0xbb, 0xdf, 0xf1, 0x64, 0xb9, 0x58, 0x7d, 0x78, 0x7b, 0x1d, 0x8b, 0x72, 0x46, 0x23, 0x2f, + 0xea, 0x2b, 0x85, 0xdd, 0xce, 0x89, 0xd8, 0x62, 0x5d, 0x09, 0x93, 0xd9, 0x54, 0x62, 0x97, 0x85, + 0xc6, 0x14, 0x9b, 0x3e, 0x60, 0xdf, 0x66, 0x5d, 0x05, 0x8b, 0x07, 0x46, 0x4c, 0x7d, 0xad, 0xf0, + 0x76, 0x14, 0xa9, 0xf6, 0x80, 0xf5, 0xc2, 0x64, 0xf2, 0x16, 0xdb, 0xac, 0x8a, 0x2d, 0x38, 0x7d, + 0x89, 0x7f, 0x4b, 0x86, 0x3c, 0xd9, 0x82, 0x54, 0xdf, 0x92, 0x49, 0x70, 0xcb, 0xba, 0xcb, 0xbb, + 0x10, 0x06, 0xef, 0x49, 0xd6, 0x1c, 0x38, 0x57, 0xc3, 0x6c, 0x22, 0x57, 0x43, 0xfe, 0x1c, 0xa7, + 0x40, 0x3b, 0x22, 0x75, 0x4c, 0x79, 0x3a, 0x99, 0xa4, 0x85, 0xf5, 0x65, 0x28, 0x7d, 0xbc, 0x9f, + 0x9f, 0x83, 0x19, 0x52, 0xf4, 0x39, 0xa3, 0xbd, 0x85, 0x5c, 0xf5, 0xdd, 0xd2, 0x0f, 0x0f, 0xea, + 0x4a, 0x15, 0x66, 0x2e, 0x62, 0xb6, 0x57, 0xf5, 0x4b, 0xd6, 0xae, 0x4b, 0x57, 0x2e, 0x6e, 0x8c, + 0x5d, 0xf7, 0x20, 0xf5, 0x9c, 0x27, 0x7f, 0x68, 0xdc, 0xff, 0x9e, 0x8c, 0xc9, 0x82, 0x3f, 0x71, + 0xe0, 0xca, 0x63, 0x23, 0x8b, 0x4d, 0x52, 0x4e, 0x42, 0x7e, 0xcf, 0x40, 0x17, 0x2b, 0x6d, 0x6a, + 0xdd, 0xd2, 0x37, 0xf5, 0xf7, 0x85, 0xf7, 0x6d, 0x59, 0xb8, 0x29, 0x2f, 0xe9, 0x6a, 0xa1, 0xd8, + 0xee, 0xed, 0x40, 0xb6, 0xc6, 0x70, 0xa6, 0x98, 0xbf, 0x8c, 0xb3, 0x94, 0x40, 0x11, 0xa3, 0x0c, + 0x67, 0x3e, 0x94, 0x47, 0xec, 0x89, 0x15, 0x22, 0x80, 0x11, 0xdf, 0xd3, 0x29, 0x16, 0x5f, 0x62, + 0x40, 0xd1, 0xe9, 0x4b, 0xfe, 0x0d, 0x32, 0x4c, 0xd5, 0x91, 0xbb, 0x64, 0xa0, 0x4e, 0xdb, 0x51, + 0xed, 0x83, 0x9b, 0x46, 0x37, 0x43, 0x7e, 0x13, 0x13, 0x1b, 0x74, 0x6e, 0x81, 0x66, 0x53, 0x5f, + 0x2f, 0x89, 0xee, 0x08, 0xd3, 0xd5, 0x37, 0x9f, 0xdb, 0x91, 0xc0, 0x24, 0xe6, 0xd1, 0x1b, 0x5f, + 0xf2, 0x18, 0x02, 0xdb, 0xca, 0x30, 0x43, 0x6f, 0xef, 0x2b, 0x76, 0x8c, 0x2d, 0x53, 0xdd, 0x1d, + 0x41, 0x0b, 0x51, 0x6e, 0x81, 0x9c, 0xee, 0x51, 0xa3, 0x5b, 0xaf, 0x6a, 0xdf, 0xce, 0x13, 0x97, + 0xa7, 0x91, 0x8c, 0x09, 0xc2, 0x48, 0x86, 0x8a, 0xed, 0xf3, 0x3c, 0xc6, 0x30, 0x92, 0x03, 0x0b, + 0x4f, 0x1f, 0xb1, 0xaf, 0xc8, 0x70, 0x9c, 0x32, 0x70, 0x16, 0xd9, 0xae, 0xd1, 0xd2, 0x3b, 0x04, + 0xb9, 0x17, 0x65, 0x46, 0x01, 0xdd, 0x0a, 0xcc, 0xee, 0xb1, 0x64, 0x29, 0x84, 0x67, 0xfa, 0x42, + 0xc8, 0x31, 0xa0, 0xf1, 0x3f, 0x26, 0x08, 0xc7, 0xc7, 0x49, 0x95, 0xa3, 0x39, 0xc6, 0x70, 0x7c, + 0xc2, 0x4c, 0xa4, 0x0f, 0xf1, 0xcb, 0x68, 0x68, 0x9e, 0xb0, 0xfb, 0xfc, 0x82, 0x30, 0xb6, 0x1b, + 0x30, 0x8d, 0xb1, 0x24, 0x3f, 0xd2, 0x65, 0x88, 0x18, 0x25, 0x0e, 0xfa, 0x1d, 0x7a, 0x61, 0x58, + 0xf0, 0xaf, 0xc6, 0xd2, 0x51, 0xcf, 0x01, 0x84, 0x9f, 0xd8, 0x4e, 0x3a, 0x13, 0xd5, 0x49, 0x4b, + 0x62, 0x9d, 0xf4, 0x9b, 0x85, 0x83, 0xa5, 0xf4, 0x67, 0xfb, 0xe0, 0xea, 0x21, 0x16, 0x26, 0x63, + 0x70, 0xe9, 0xe9, 0xeb, 0xc5, 0x6b, 0xb2, 0xbd, 0xd7, 0xb4, 0x7f, 0x6c, 0x24, 0xf3, 0x29, 0xb6, + 0x3f, 0x90, 0x7b, 0xfa, 0x83, 0x03, 0x58, 0xd2, 0x37, 0xc0, 0x51, 0x52, 0x44, 0x29, 0x60, 0x2b, + 0x47, 0x42, 0x41, 0xf4, 0x24, 0xab, 0x1f, 0x1f, 0x42, 0x09, 0x06, 0xdd, 0x21, 0x1f, 0xd7, 0xc9, + 0x25, 0x33, 0x76, 0x93, 0x2a, 0xc8, 0xe1, 0x5d, 0x3d, 0xff, 0xcd, 0x2c, 0xb1, 0x76, 0x37, 0xf0, + 0x9d, 0x6e, 0xea, 0x5f, 0x66, 0x47, 0x31, 0x22, 0xdc, 0x0d, 0x59, 0xec, 0xe2, 0x2e, 0x47, 0x2e, + 0x69, 0x84, 0x45, 0x86, 0x17, 0xee, 0xa1, 0x07, 0xdc, 0x95, 0x23, 0x1a, 0xfe, 0x53, 0xb9, 0x11, + 0x8e, 0x9e, 0xd7, 0x5b, 0x17, 0xb6, 0x6c, 0x6b, 0x17, 0xdf, 0x7e, 0x65, 0xd1, 0x6b, 0xb4, 0xf0, + 0x75, 0x84, 0xfc, 0x07, 0xe5, 0x56, 0xdf, 0x74, 0xc8, 0x0d, 0x32, 0x1d, 0x56, 0x8e, 0x50, 0xe3, + 0x41, 0x79, 0x7c, 0xd0, 0xe9, 0xe4, 0x63, 0x3b, 0x9d, 0x95, 0x23, 0x7e, 0xb7, 0xa3, 0x2c, 0xc2, + 0x64, 0xdb, 0xd8, 0xc3, 0x5b, 0xd5, 0x78, 0xd6, 0x35, 0xe8, 0xe8, 0xf2, 0xa2, 0xb1, 0x47, 0x36, + 0xb6, 0x57, 0x8e, 0x68, 0xc1, 0x9f, 0xca, 0x32, 0x4c, 0xe1, 0x6d, 0x01, 0x4c, 0x66, 0x32, 0xd1, + 0xb1, 0xe4, 0x95, 0x23, 0x5a, 0xf8, 0xaf, 0x67, 0x7d, 0x64, 0xf1, 0xd9, 0x8f, 0xbb, 0xfc, 0xed, + 0xf6, 0x4c, 0xa2, 0xed, 0x76, 0x4f, 0x16, 0x64, 0xc3, 0xfd, 0x24, 0xe4, 0x5a, 0x58, 0xc2, 0x12, + 0x95, 0x30, 0x79, 0x55, 0xee, 0x80, 0xec, 0x8e, 0x6e, 0xfb, 0x93, 0xe7, 0xeb, 0x07, 0xd3, 0x5d, + 0xd3, 0xed, 0x0b, 0x1e, 0x82, 0xde, 0x5f, 0x0b, 0x13, 0x90, 0xc3, 0x82, 0x0b, 0x1e, 0xd4, 0xb7, + 0x65, 0x89, 0x19, 0x52, 0xb2, 0x4c, 0x6f, 0xd8, 0x6f, 0x58, 0xfe, 0x01, 0x99, 0xdf, 0xcf, 0x8c, + 0xc6, 0x82, 0xec, 0x7b, 0xaf, 0xb9, 0x1c, 0x79, 0xaf, 0x79, 0xcf, 0x05, 0xbb, 0xd9, 0xde, 0x0b, + 0x76, 0xc3, 0xe5, 0x83, 0xdc, 0x60, 0x47, 0x95, 0x3f, 0x1b, 0xc2, 0x74, 0xe9, 0x15, 0x44, 0xf4, + 0x0c, 0xbc, 0x63, 0x98, 0x4c, 0x9d, 0xfd, 0xd7, 0x84, 0x9d, 0x52, 0x52, 0xa3, 0x66, 0x00, 0x7b, + 0xe9, 0xf7, 0x4d, 0xbf, 0x99, 0x85, 0x53, 0xe4, 0x1a, 0xe7, 0x3d, 0xd4, 0xb0, 0xf8, 0xfb, 0x26, + 0xd5, 0x3f, 0x1e, 0x89, 0xd2, 0xf4, 0x19, 0x70, 0xe4, 0xbe, 0x03, 0xce, 0xbe, 0x43, 0xca, 0xd9, + 0x01, 0x87, 0x94, 0x73, 0xc9, 0x56, 0x0e, 0x3f, 0xc4, 0xea, 0xcf, 0x3a, 0xaf, 0x3f, 0xb7, 0x47, + 0x00, 0xd4, 0x4f, 0x2e, 0x23, 0xb1, 0x6f, 0xde, 0x19, 0x68, 0x4a, 0x9d, 0xd3, 0x94, 0xbb, 0x86, + 0x67, 0x24, 0x7d, 0x6d, 0xf9, 0xbd, 0x2c, 0x5c, 0x16, 0x32, 0x53, 0x45, 0x17, 0xa9, 0xa2, 0x7c, + 0x7e, 0x24, 0x8a, 0x92, 0x3c, 0x06, 0x42, 0xda, 0x1a, 0xf3, 0x27, 0xc2, 0x67, 0x87, 0x7a, 0x81, + 0x0a, 0x64, 0x13, 0xa1, 0x2c, 0x27, 0x21, 0x4f, 0x7a, 0x18, 0x0a, 0x0d, 0x7d, 0x4b, 0xd8, 0xdd, + 0x88, 0x9d, 0x38, 0x12, 0xe5, 0x6d, 0x0c, 0xfa, 0x43, 0xd7, 0x35, 0x1a, 0xbb, 0xb6, 0x59, 0x31, + 0x5d, 0x4b, 0xfd, 0xb9, 0x91, 0x28, 0x4e, 0xe0, 0x0d, 0x27, 0x0f, 0xe3, 0x0d, 0x37, 0xd4, 0x2a, + 0x87, 0x5f, 0x83, 0x43, 0x59, 0xe5, 0x88, 0x28, 0x3c, 0x7d, 0xfc, 0xde, 0x21, 0xc3, 0x49, 0x3a, + 0xd9, 0x5a, 0xe0, 0x2d, 0x44, 0xf5, 0xbe, 0x51, 0x00, 0x79, 0xdc, 0x37, 0x93, 0xe8, 0x2d, 0x67, + 0xf8, 0x85, 0x3f, 0x29, 0x15, 0x7b, 0xbf, 0x03, 0x37, 0x1d, 0xec, 0xe1, 0x70, 0x24, 0x48, 0x89, + 0x5d, 0xeb, 0x90, 0x80, 0x8d, 0xf4, 0x31, 0x7b, 0x89, 0x0c, 0x79, 0x7a, 0x7d, 0xff, 0x46, 0x2a, + 0x0e, 0x13, 0x7c, 0x94, 0x67, 0x81, 0x1d, 0xb9, 0xc4, 0x97, 0xdc, 0xa7, 0xb7, 0x17, 0x77, 0x48, + 0xb7, 0xd8, 0x7f, 0x47, 0x82, 0xe9, 0x3a, 0x72, 0x4b, 0xba, 0x6d, 0x1b, 0xfa, 0xd6, 0xa8, 0x3c, + 0xbe, 0x45, 0xbd, 0x87, 0xd5, 0xef, 0x66, 0x44, 0xcf, 0xd3, 0x04, 0x0b, 0xe1, 0x3e, 0xab, 0x11, + 0xb1, 0x04, 0x1f, 0x16, 0x3a, 0x33, 0x33, 0x88, 0xda, 0x18, 0x3c, 0xb6, 0x25, 0x98, 0xf0, 0xcf, + 0xe2, 0xdd, 0xcc, 0x9d, 0xcf, 0xdc, 0x76, 0x77, 0xfc, 0x63, 0x30, 0xf8, 0x79, 0xff, 0x19, 0x30, + 0xf5, 0xd5, 0x09, 0x1d, 0xe5, 0xe3, 0x0f, 0x12, 0x26, 0x6b, 0x63, 0x49, 0xdc, 0xe1, 0x0f, 0xeb, + 0xe8, 0xe0, 0xef, 0x4c, 0xd0, 0xe5, 0xc8, 0x55, 0xdd, 0x45, 0x0f, 0xa8, 0x5f, 0x90, 0x61, 0xa2, + 0x8e, 0x5c, 0x6f, 0xbc, 0xe5, 0x2e, 0x37, 0x1d, 0x56, 0xc3, 0x15, 0x66, 0xc5, 0x63, 0x8a, 0xae, + 0x61, 0xdc, 0x03, 0x53, 0x5d, 0xdb, 0x6a, 0x21, 0xc7, 0xa1, 0xab, 0x17, 0xac, 0xa3, 0x5a, 0xbf, + 0xd1, 0x1f, 0xb3, 0x36, 0xbf, 0xee, 0xff, 0xa3, 0x85, 0xbf, 0x27, 0x35, 0x03, 0x08, 0x25, 0x5a, + 0xc1, 0x71, 0x9b, 0x01, 0x71, 0x85, 0xa7, 0x0f, 0xf4, 0x67, 0x65, 0x98, 0xa9, 0x23, 0x37, 0x90, + 0x62, 0x82, 0x4d, 0x8e, 0x68, 0x78, 0x39, 0x28, 0xe5, 0x83, 0x41, 0x29, 0x7e, 0x35, 0x20, 0x2f, + 0xcd, 0x80, 0xd8, 0x18, 0xaf, 0x06, 0x14, 0xe3, 0x60, 0x0c, 0xc7, 0xd7, 0x1e, 0x0d, 0x53, 0x98, + 0x17, 0xdc, 0x60, 0x7f, 0x21, 0x1b, 0x36, 0xde, 0x2f, 0xa6, 0xd4, 0x78, 0xef, 0x84, 0xdc, 0x8e, + 0x6e, 0x5f, 0x70, 0x70, 0xc3, 0x9d, 0x16, 0x31, 0xdb, 0xd7, 0xbc, 0xec, 0x1a, 0xf9, 0xab, 0xbf, + 0x9f, 0x66, 0x2e, 0x99, 0x9f, 0xe6, 0xc3, 0x52, 0xa2, 0x91, 0x90, 0xcc, 0x1d, 0x46, 0xd8, 0xe4, + 0x13, 0x8c, 0x9b, 0x31, 0x65, 0xa7, 0xaf, 0x1c, 0x2f, 0x92, 0x61, 0xd2, 0x1b, 0xb7, 0xb1, 0x3d, + 0x7e, 0xee, 0xe0, 0xea, 0xd0, 0xdf, 0xd0, 0x4f, 0xd8, 0x03, 0xfb, 0x12, 0x19, 0x9d, 0x79, 0x9f, + 0xa0, 0x07, 0x8e, 0x2b, 0x3c, 0x7d, 0x3c, 0xde, 0x45, 0xf0, 0xc0, 0xed, 0x41, 0x7d, 0xa3, 0x0c, + 0xf2, 0x32, 0x72, 0xc7, 0x6d, 0x45, 0xbe, 0x5d, 0x38, 0xc4, 0x11, 0x27, 0x30, 0xcc, 0xf3, 0xfc, + 0x32, 0x1a, 0x4d, 0x03, 0x12, 0x8b, 0x6d, 0x24, 0xc4, 0x40, 0xfa, 0xa8, 0xbd, 0x8f, 0xa0, 0x46, + 0x36, 0x17, 0x7e, 0x76, 0x04, 0xbd, 0xea, 0x78, 0x17, 0x3e, 0x7c, 0x01, 0x62, 0x1a, 0x87, 0xd5, + 0xde, 0xfa, 0x15, 0x3e, 0x96, 0xab, 0xf8, 0xc0, 0x6b, 0xec, 0xdb, 0xa8, 0x75, 0x01, 0xb5, 0xd5, + 0x9f, 0x3e, 0x38, 0x74, 0xa7, 0x60, 0xa2, 0x45, 0xa8, 0x61, 0xf0, 0x26, 0x35, 0xff, 0x35, 0xc1, + 0xbd, 0xd2, 0x7c, 0x47, 0x44, 0x7e, 0x1f, 0xe3, 0xbd, 0xd2, 0x02, 0xc5, 0x8f, 0xc1, 0x6c, 0x21, + 0xb3, 0x8c, 0x4a, 0xcb, 0x32, 0xd5, 0xff, 0x72, 0x70, 0x58, 0xae, 0x82, 0x29, 0xa3, 0x65, 0x99, + 0x38, 0x0c, 0x85, 0x7f, 0x08, 0x28, 0x48, 0xf0, 0xbf, 0x96, 0x77, 0xac, 0xfb, 0x0d, 0xba, 0x6b, + 0x1e, 0x26, 0x0c, 0x6b, 0x4c, 0x78, 0xac, 0x1f, 0x96, 0x31, 0xd1, 0xa7, 0xec, 0xf4, 0x21, 0xfb, + 0x78, 0xe8, 0xdd, 0x46, 0xba, 0xc2, 0x47, 0xc4, 0x2a, 0xf0, 0x30, 0xc3, 0x19, 0x5b, 0x8b, 0x43, + 0x19, 0xce, 0x62, 0x18, 0x18, 0xc3, 0x8d, 0x15, 0x21, 0x8e, 0xa9, 0xaf, 0x01, 0x1f, 0x00, 0x9d, + 0xd1, 0x99, 0x87, 0x43, 0xa2, 0x73, 0x38, 0x26, 0xe2, 0x07, 0x69, 0x88, 0x4c, 0x6a, 0xf1, 0xa8, + 0xff, 0x75, 0x14, 0xe0, 0xdc, 0x3e, 0x8c, 0xbf, 0x02, 0xf1, 0x56, 0x48, 0x70, 0x23, 0xf6, 0x3e, + 0x09, 0x7a, 0x54, 0xc6, 0x78, 0x57, 0xbc, 0x48, 0xf9, 0xe9, 0x03, 0xf8, 0x42, 0x19, 0xe6, 0xb0, + 0x8f, 0x40, 0x07, 0xe9, 0x36, 0xe9, 0x28, 0x47, 0xe2, 0x28, 0xff, 0x2e, 0xe1, 0x00, 0x3f, 0xbc, + 0x1c, 0x42, 0x3e, 0x46, 0x02, 0x85, 0x58, 0x74, 0x1f, 0x41, 0x16, 0xc6, 0xb2, 0x8d, 0x52, 0x08, + 0x58, 0xa0, 0x2a, 0x3e, 0x1a, 0x3c, 0x12, 0x7a, 0xe4, 0xf2, 0xc2, 0xf0, 0x1b, 0xdb, 0x98, 0x3d, + 0x72, 0x45, 0x98, 0x48, 0x1f, 0x93, 0x37, 0xde, 0x42, 0x17, 0x9c, 0x1b, 0xf8, 0xc2, 0xf8, 0xd7, + 0x66, 0x83, 0x13, 0x6d, 0x9f, 0x1d, 0x89, 0x07, 0xe6, 0x01, 0x02, 0xe2, 0x2b, 0x90, 0xb5, 0xad, + 0x8b, 0x64, 0x69, 0x6b, 0x56, 0xc3, 0xcf, 0xe4, 0x7a, 0xca, 0xce, 0xee, 0x8e, 0x49, 0x4e, 0x86, + 0xce, 0x6a, 0xfe, 0xab, 0x72, 0x1d, 0xcc, 0x5e, 0x34, 0xdc, 0xed, 0x15, 0xa4, 0xb7, 0x91, 0xad, + 0x59, 0x17, 0xb1, 0xc7, 0xdc, 0xa4, 0xc6, 0x27, 0xf2, 0xfe, 0x2b, 0x02, 0xf6, 0x25, 0xbe, 0x45, + 0x7e, 0x2c, 0xc7, 0xdf, 0x92, 0x58, 0x9e, 0xd1, 0x5c, 0xa5, 0xaf, 0x30, 0xef, 0x97, 0x61, 0x4a, + 0xb3, 0x2e, 0x52, 0x25, 0xf9, 0x3f, 0x0e, 0x57, 0x47, 0x12, 0x4f, 0xf4, 0xb0, 0xe4, 0x02, 0xf6, + 0xc7, 0x3e, 0xd1, 0x8b, 0x2d, 0x7e, 0x2c, 0x27, 0x97, 0x66, 0x34, 0xeb, 0x62, 0x1d, 0xb9, 0xa4, + 0x45, 0xa8, 0xcd, 0x11, 0x39, 0x59, 0x1b, 0x0e, 0x21, 0x48, 0xe7, 0xe1, 0xc1, 0x7b, 0xd2, 0x5d, + 0x84, 0x40, 0x40, 0x01, 0x8b, 0xe3, 0xde, 0x45, 0x18, 0xc8, 0xc1, 0x18, 0x62, 0xa4, 0xc8, 0x30, + 0xad, 0x59, 0x17, 0xbd, 0xa1, 0x61, 0xc9, 0xe8, 0x74, 0x46, 0x33, 0x42, 0x26, 0x35, 0xfe, 0x7d, + 0x31, 0xf8, 0x5c, 0x8c, 0xdd, 0xf8, 0x1f, 0xc0, 0x40, 0xfa, 0x30, 0x3c, 0x97, 0x34, 0x16, 0x7f, + 0x84, 0x36, 0x47, 0x83, 0xc3, 0xb0, 0x0d, 0x22, 0x60, 0xe3, 0xd0, 0x1a, 0x44, 0x14, 0x07, 0x63, + 0xd9, 0x39, 0x99, 0x2b, 0xe1, 0x61, 0x7e, 0xb4, 0x6d, 0xe2, 0x3d, 0xc9, 0x5c, 0x13, 0xe9, 0xb0, + 0xcb, 0x31, 0x32, 0x12, 0x34, 0x12, 0xb8, 0x20, 0x0a, 0xf0, 0x90, 0x3e, 0x1e, 0x1f, 0x91, 0x61, + 0x86, 0xb0, 0xf0, 0x08, 0xb1, 0x02, 0x86, 0x6a, 0x54, 0x6c, 0x0d, 0x0e, 0xa7, 0x51, 0xc5, 0x70, + 0x30, 0x96, 0x5b, 0x41, 0x3d, 0x3b, 0x6e, 0x88, 0xe3, 0xe3, 0x51, 0x08, 0x0e, 0x6d, 0x8c, 0x8d, + 0xf0, 0x08, 0xf9, 0x30, 0xc6, 0xd8, 0x21, 0x1d, 0x23, 0x7f, 0x6e, 0xd0, 0x8a, 0x46, 0x89, 0xc1, + 0x01, 0x9a, 0xc2, 0x08, 0x61, 0x18, 0xb2, 0x29, 0x1c, 0x12, 0x12, 0x5f, 0x95, 0x01, 0x08, 0x03, + 0x6b, 0xd6, 0x1e, 0xbe, 0xcc, 0x67, 0x04, 0xdd, 0x59, 0xaf, 0x5b, 0xbd, 0x3c, 0xc0, 0xad, 0x3e, + 0x61, 0x08, 0x97, 0xa4, 0x2b, 0x81, 0x8c, 0x94, 0xbd, 0x4a, 0x8e, 0x7d, 0x25, 0x30, 0xbe, 0xfc, + 0xf4, 0x31, 0xfe, 0x32, 0xb1, 0xe6, 0xc2, 0x03, 0xa6, 0xbf, 0x3e, 0x12, 0x94, 0x99, 0xd9, 0xbf, + 0xcc, 0xcf, 0xfe, 0x0f, 0x80, 0xed, 0xb0, 0x36, 0xe2, 0xa0, 0x83, 0xa3, 0xe9, 0xdb, 0x88, 0x87, + 0x77, 0x40, 0xf4, 0x67, 0xb3, 0x70, 0x94, 0x76, 0x22, 0x3f, 0x0c, 0x10, 0x27, 0x3c, 0x87, 0xc7, + 0x75, 0x92, 0x03, 0x50, 0x1e, 0xd5, 0x82, 0x54, 0x92, 0xa5, 0x4c, 0x01, 0xf6, 0xc6, 0xb2, 0xba, + 0x91, 0x2f, 0x3f, 0xd0, 0xd5, 0xcd, 0xb6, 0x78, 0xb8, 0xdf, 0x01, 0xc0, 0xfb, 0x6b, 0x8d, 0x32, + 0xbf, 0xd6, 0xd8, 0x67, 0x65, 0x32, 0xf1, 0xce, 0x35, 0x16, 0x19, 0x61, 0x77, 0xec, 0x3b, 0xd7, + 0xd1, 0x65, 0xa7, 0x8f, 0xd2, 0x7b, 0x64, 0xc8, 0xd6, 0x2d, 0xdb, 0x55, 0x9f, 0x97, 0xa4, 0x75, + 0x12, 0xc9, 0x87, 0x20, 0xf9, 0xef, 0x4a, 0x89, 0xbb, 0xa5, 0xf9, 0xe6, 0xf8, 0xa3, 0xce, 0xba, + 0xab, 0x63, 0xaf, 0x6e, 0xaf, 0x7c, 0xe6, 0xba, 0xe6, 0xa4, 0xf1, 0x74, 0x88, 0xfc, 0xea, 0xd1, + 0x07, 0x30, 0x52, 0x8b, 0xa7, 0x13, 0x59, 0x72, 0xfa, 0xb8, 0x3d, 0x74, 0x94, 0xfa, 0xb6, 0x2e, + 0x19, 0x1d, 0xa4, 0x3e, 0x8f, 0xb8, 0x8c, 0x54, 0xf5, 0x1d, 0x24, 0x7e, 0x24, 0x26, 0xd6, 0xb5, + 0x15, 0xc7, 0x97, 0x95, 0xc3, 0xf8, 0xb2, 0x49, 0x1b, 0x14, 0x39, 0x80, 0x4e, 0x58, 0x1a, 0x77, + 0x83, 0x8a, 0x29, 0x7b, 0x2c, 0x71, 0x3a, 0x8f, 0xd5, 0x91, 0x4b, 0x8c, 0xca, 0x9a, 0x7f, 0x03, + 0xcb, 0xcf, 0x8c, 0x24, 0x62, 0x67, 0x70, 0xc1, 0x8b, 0xdc, 0x73, 0xc1, 0xcb, 0xfb, 0x59, 0x70, + 0xd6, 0x78, 0x70, 0x7e, 0x32, 0x5a, 0x40, 0x3c, 0x93, 0x23, 0x81, 0xe9, 0xed, 0x01, 0x4c, 0xeb, + 0x1c, 0x4c, 0x77, 0x0c, 0xc9, 0x45, 0xfa, 0x80, 0xfd, 0x52, 0x0e, 0x8e, 0x92, 0x49, 0x7f, 0xd1, + 0x6c, 0xd3, 0x08, 0xab, 0x6f, 0x91, 0x0e, 0x79, 0xb3, 0x6d, 0x7f, 0x08, 0x56, 0x2e, 0x96, 0x73, + 0xae, 0xf7, 0x76, 0xfc, 0x05, 0x12, 0xce, 0xd5, 0xeb, 0x44, 0xf1, 0x4e, 0x9b, 0xf8, 0x0d, 0xf9, + 0xc1, 0x7f, 0xfc, 0x5d, 0x46, 0x13, 0xe2, 0x77, 0x19, 0xfd, 0x69, 0xb2, 0x75, 0x3b, 0x5c, 0x74, + 0x8f, 0xc0, 0x53, 0xb6, 0x9d, 0x12, 0xac, 0xe8, 0x09, 0x70, 0xf7, 0xa3, 0xe1, 0x4e, 0x16, 0x46, + 0x10, 0x19, 0xd2, 0x9d, 0x0c, 0x13, 0x38, 0x4c, 0x77, 0xb2, 0x41, 0x0c, 0x8c, 0xe1, 0x56, 0xfb, + 0x1c, 0xdd, 0xcd, 0xc7, 0xed, 0x46, 0xfd, 0x6b, 0x29, 0xf5, 0x51, 0xfa, 0x7b, 0x99, 0x44, 0xfe, + 0xcf, 0x98, 0xaf, 0xf8, 0x61, 0x3a, 0x89, 0x47, 0x73, 0x1c, 0xb9, 0x31, 0xac, 0x1b, 0x49, 0xd8, + 0x17, 0xfd, 0x9c, 0xd1, 0x76, 0xb7, 0x47, 0x74, 0xa2, 0xe3, 0xa2, 0x47, 0xcb, 0xbf, 0x1e, 0x19, + 0xbf, 0xa8, 0xff, 0x96, 0x49, 0x14, 0x42, 0x2a, 0x10, 0x09, 0x66, 0x2b, 0x42, 0xc4, 0x09, 0x02, + 0x3f, 0xc5, 0xd2, 0x1b, 0xa3, 0x46, 0x9f, 0x35, 0xda, 0xc8, 0x7a, 0x04, 0x6a, 0x34, 0xe6, 0x6b, + 0x74, 0x1a, 0x1d, 0x47, 0xee, 0x47, 0x54, 0xa3, 0x03, 0x91, 0x8c, 0x48, 0xa3, 0x63, 0xe9, 0xa5, + 0x2f, 0xe3, 0x57, 0xcf, 0xd0, 0x89, 0xd4, 0xaa, 0x61, 0x5e, 0x50, 0xff, 0x25, 0xef, 0x5f, 0xcc, + 0x7c, 0xce, 0x70, 0xb7, 0x69, 0x2c, 0x98, 0xdf, 0x13, 0xbe, 0x1b, 0x65, 0x88, 0x78, 0x2f, 0x7c, + 0x38, 0xa9, 0xdc, 0xbe, 0x70, 0x52, 0x45, 0x98, 0x35, 0x4c, 0x17, 0xd9, 0xa6, 0xde, 0x59, 0xea, + 0xe8, 0x5b, 0xce, 0xa9, 0x89, 0xbe, 0x97, 0xd7, 0x55, 0x98, 0x3c, 0x1a, 0xff, 0x07, 0x7b, 0x7d, + 0xe5, 0x24, 0x7f, 0x7d, 0x65, 0x44, 0xf4, 0xab, 0xa9, 0xe8, 0xe8, 0x57, 0x41, 0x74, 0x2b, 0x18, + 0x1c, 0x1c, 0x5b, 0xd4, 0x36, 0x4e, 0x18, 0xee, 0xef, 0x66, 0xc1, 0x28, 0x6c, 0x41, 0xe8, 0xc7, + 0xd7, 0xc9, 0x89, 0x56, 0xf7, 0x3c, 0x45, 0x98, 0xef, 0x55, 0x82, 0xc4, 0x16, 0x2a, 0x5b, 0x79, + 0xb9, 0xa7, 0xf2, 0x81, 0xc9, 0x93, 0x15, 0x30, 0x79, 0x58, 0xa5, 0xca, 0x89, 0x29, 0x55, 0x92, + 0xc5, 0x42, 0x91, 0xda, 0x8e, 0xe1, 0x34, 0x52, 0x0e, 0x8e, 0xf9, 0xd1, 0x6e, 0xbb, 0x5d, 0xa4, + 0xdb, 0xba, 0xd9, 0x42, 0xea, 0xc7, 0xa5, 0x51, 0x98, 0xbd, 0x4b, 0x30, 0x69, 0xb4, 0x2c, 0xb3, + 0x6e, 0x3c, 0xd3, 0xbf, 0x5c, 0x2e, 0x3e, 0xc8, 0x3a, 0x96, 0x48, 0x85, 0xfe, 0xa1, 0x05, 0xff, + 0x2a, 0x15, 0x98, 0x6a, 0xe9, 0x76, 0x9b, 0x04, 0xe1, 0xcb, 0xf5, 0x5c, 0xe4, 0x14, 0x49, 0xa8, + 0xe4, 0xff, 0xa2, 0x85, 0x7f, 0x2b, 0x35, 0x5e, 0x88, 0xf9, 0x9e, 0x68, 0x1e, 0x91, 0xc4, 0x16, + 0xc3, 0x9f, 0x38, 0x99, 0x7b, 0xd2, 0xb1, 0x51, 0x07, 0xdf, 0x41, 0x4f, 0x7a, 0x88, 0x29, 0x2d, + 0x4c, 0x48, 0xba, 0x3c, 0x80, 0x8b, 0xda, 0x87, 0xc6, 0xb8, 0x97, 0x07, 0x84, 0xb8, 0x48, 0x5f, + 0x33, 0xdf, 0x99, 0x87, 0x59, 0xd2, 0xab, 0x51, 0x71, 0xaa, 0x2f, 0xc4, 0x57, 0x48, 0xbb, 0xf7, + 0xa2, 0x4b, 0x6a, 0xfd, 0xe0, 0x63, 0x72, 0x01, 0xe4, 0x0b, 0x41, 0xc0, 0x41, 0xef, 0x31, 0xe9, + 0xbe, 0xbd, 0xcf, 0xd7, 0x3c, 0xe1, 0x69, 0xdc, 0xfb, 0xf6, 0xf1, 0xc5, 0xa7, 0x8f, 0xcf, 0x2f, + 0xcb, 0x20, 0x17, 0xdb, 0x6d, 0xb5, 0x75, 0x70, 0x28, 0xae, 0x81, 0x69, 0xbf, 0xcd, 0x84, 0x31, + 0x20, 0xd9, 0xa4, 0xa4, 0x8b, 0xa0, 0x81, 0x6c, 0x8a, 0xed, 0xb1, 0xef, 0x2a, 0xc4, 0x94, 0x9d, + 0x3e, 0x28, 0xbf, 0x3e, 0x41, 0x1b, 0xcd, 0x82, 0x65, 0x5d, 0xc0, 0x47, 0x65, 0x9e, 0x27, 0x43, + 0x6e, 0x09, 0xb9, 0xad, 0xed, 0x11, 0xb5, 0x99, 0x5d, 0xbb, 0xe3, 0xb7, 0x99, 0x7d, 0xf7, 0xe1, + 0x0f, 0xb6, 0x61, 0x7d, 0xb6, 0xe6, 0x31, 0x4b, 0xe3, 0x8e, 0xee, 0x1c, 0x5b, 0x7a, 0xfa, 0xe0, + 0xfc, 0x9b, 0x0c, 0x73, 0xc1, 0x0a, 0x17, 0xc1, 0xe4, 0x97, 0x32, 0x8f, 0xb4, 0xf5, 0x4e, 0xf5, + 0xf3, 0xc9, 0x42, 0xa4, 0x05, 0x32, 0xe5, 0x6b, 0x96, 0xf2, 0xc2, 0x62, 0x82, 0xe0, 0x69, 0x62, + 0x0c, 0x8e, 0x61, 0x06, 0x2f, 0xc3, 0x24, 0x66, 0x68, 0xd1, 0xd8, 0xc3, 0xae, 0x83, 0xdc, 0x42, + 0xe3, 0xb3, 0x46, 0xb2, 0xd0, 0x78, 0x07, 0xbf, 0xd0, 0x28, 0x18, 0xf1, 0xd8, 0x5f, 0x67, 0x4c, + 0xe8, 0x4b, 0xe3, 0xfd, 0x3f, 0xf2, 0x65, 0xc6, 0x04, 0xbe, 0x34, 0x03, 0xca, 0x4f, 0x1f, 0xd1, + 0xd7, 0xfd, 0x27, 0xda, 0xd9, 0xfa, 0x1b, 0xaa, 0xea, 0xff, 0x75, 0x0c, 0xb2, 0x67, 0xbd, 0x87, + 0xff, 0x11, 0xde, 0x88, 0xf5, 0xf2, 0x11, 0x04, 0x67, 0x78, 0x2a, 0x64, 0x3d, 0xfa, 0x74, 0xda, + 0x72, 0xa3, 0xd8, 0xee, 0xae, 0xc7, 0x88, 0x86, 0xff, 0x53, 0x4e, 0x42, 0xde, 0xb1, 0x76, 0xed, + 0x96, 0x67, 0x3e, 0x7b, 0x1a, 0x43, 0xdf, 0x92, 0x06, 0x25, 0xe5, 0x48, 0xcf, 0x8f, 0xce, 0x65, + 0x94, 0xb9, 0x20, 0x49, 0xe6, 0x2e, 0x48, 0x4a, 0xb0, 0x7f, 0x20, 0xc0, 0x5b, 0xfa, 0x1a, 0xf1, + 0xd7, 0xf8, 0xae, 0xc0, 0xf6, 0xa8, 0x60, 0x8f, 0x10, 0xcb, 0x41, 0xd5, 0x21, 0xa9, 0xc3, 0x37, + 0x2f, 0xda, 0x20, 0x0e, 0xfc, 0x58, 0x1d, 0xbe, 0x05, 0x78, 0x18, 0xcb, 0x29, 0xf5, 0x3c, 0x75, + 0x52, 0xbd, 0x6f, 0x94, 0xe8, 0x66, 0x39, 0xa5, 0x3f, 0x10, 0x3a, 0x23, 0x74, 0x5e, 0x1d, 0x1a, + 0x9d, 0x43, 0x72, 0x5f, 0xfd, 0x03, 0x19, 0x47, 0xc2, 0xf4, 0x8d, 0x1c, 0xf1, 0x8b, 0x8e, 0x12, + 0x43, 0xe4, 0x8d, 0xc1, 0x5c, 0x1c, 0xe8, 0xd9, 0xe1, 0x43, 0x83, 0xf3, 0xa2, 0x63, 0xf8, 0x1f, + 0x77, 0x68, 0x70, 0x51, 0x46, 0xd2, 0x07, 0xf2, 0x37, 0xc8, 0xc5, 0x62, 0xc5, 0x96, 0x6b, 0xec, + 0x8d, 0xb8, 0xa5, 0xf1, 0xc3, 0x4b, 0xc2, 0x68, 0xc0, 0xfb, 0x24, 0x44, 0x38, 0x1c, 0x77, 0x34, + 0x60, 0x31, 0x36, 0xd2, 0x87, 0xe9, 0xef, 0xf2, 0x9e, 0xf4, 0xe8, 0xda, 0xcc, 0x1b, 0xe9, 0x6a, + 0x00, 0x3a, 0x38, 0x5a, 0x67, 0x60, 0x86, 0x99, 0xfa, 0xfb, 0x17, 0xd6, 0x70, 0x69, 0x49, 0x0f, + 0xba, 0x07, 0x22, 0x1b, 0xf9, 0xc2, 0x40, 0x82, 0x05, 0x5f, 0x11, 0x26, 0xc6, 0x72, 0x1f, 0x9c, + 0x3f, 0x86, 0x8d, 0x09, 0xab, 0xdf, 0x63, 0xb1, 0xaa, 0xf1, 0x58, 0xdd, 0x26, 0x22, 0x26, 0xb1, + 0x31, 0x4d, 0x68, 0xde, 0xf8, 0x8e, 0x00, 0x2e, 0x8d, 0x83, 0xeb, 0xa9, 0x43, 0xf3, 0x91, 0x3e, + 0x62, 0xaf, 0x20, 0xdd, 0x61, 0x9d, 0x98, 0xec, 0xa3, 0xe9, 0x0e, 0xe9, 0x6c, 0x40, 0xe6, 0x66, + 0x03, 0x09, 0xfd, 0xed, 0x43, 0x37, 0x52, 0x9f, 0xb9, 0x41, 0x10, 0x65, 0x47, 0xec, 0x6f, 0x3f, + 0x90, 0x83, 0xf4, 0xc1, 0xf9, 0x27, 0x19, 0x60, 0xd9, 0xb6, 0x76, 0xbb, 0x35, 0xbb, 0x8d, 0x6c, + 0xf5, 0x6f, 0xc3, 0x09, 0xc0, 0x4b, 0x47, 0x30, 0x01, 0x58, 0x07, 0xd8, 0x0a, 0x88, 0x53, 0x0d, + 0xbf, 0x45, 0xcc, 0xdc, 0x0f, 0x99, 0xd2, 0x18, 0x1a, 0xfc, 0x95, 0xb3, 0x4f, 0xe3, 0x31, 0x8e, + 0xeb, 0xb3, 0x42, 0x72, 0xa3, 0x9c, 0x00, 0xbc, 0x2b, 0xc0, 0xba, 0xc1, 0x61, 0x7d, 0xf7, 0x01, + 0x38, 0x49, 0x1f, 0xf3, 0x7f, 0x9e, 0x80, 0x69, 0xb2, 0x5d, 0x47, 0x64, 0xfa, 0x0f, 0x21, 0xe8, + 0xbf, 0x3e, 0x02, 0xd0, 0x37, 0x60, 0xc6, 0x0a, 0xa9, 0x93, 0x3e, 0x95, 0x5d, 0x80, 0x89, 0x85, + 0x9d, 0xe1, 0x4b, 0xe3, 0xc8, 0xa8, 0x1f, 0x65, 0x91, 0xd7, 0x78, 0xe4, 0xef, 0x88, 0x91, 0x37, + 0x43, 0x71, 0x94, 0xd0, 0xbf, 0x3b, 0x80, 0x7e, 0x83, 0x83, 0xbe, 0x78, 0x10, 0x56, 0xc6, 0x10, + 0x6e, 0x5f, 0x86, 0x2c, 0x3e, 0x1d, 0xf7, 0x9b, 0x29, 0xce, 0xef, 0x4f, 0xc1, 0x04, 0x6e, 0xb2, + 0xc1, 0xbc, 0xc3, 0x7f, 0xf5, 0xbe, 0xe8, 0x9b, 0x2e, 0xb2, 0x03, 0x8f, 0x05, 0xff, 0xd5, 0xe3, + 0xc1, 0xf7, 0x4a, 0x76, 0x4e, 0xe5, 0xc9, 0x46, 0x64, 0x90, 0x30, 0xf4, 0xa4, 0x84, 0x95, 0xf8, + 0xc8, 0xce, 0xcb, 0x0d, 0x33, 0x29, 0x19, 0xc0, 0x48, 0xfa, 0xc0, 0xff, 0x65, 0x16, 0x4e, 0x91, + 0x55, 0xa5, 0x25, 0xdb, 0xda, 0xe9, 0xb9, 0xdd, 0xca, 0x38, 0xb8, 0x2e, 0x5c, 0x0f, 0x73, 0x2e, + 0xe7, 0x8f, 0x4d, 0x75, 0xa2, 0x27, 0x55, 0xfd, 0x33, 0xd6, 0xa7, 0xe2, 0xe9, 0x3c, 0x92, 0x0b, + 0x31, 0x02, 0x8c, 0xe2, 0x3d, 0xf1, 0x42, 0xbd, 0x20, 0xa3, 0xcc, 0x22, 0x95, 0x3c, 0xd4, 0x9a, + 0x65, 0xa0, 0x53, 0x39, 0x11, 0x9d, 0xfa, 0x40, 0xa0, 0x53, 0x3f, 0xcd, 0xe9, 0xd4, 0xf2, 0xc1, + 0x45, 0x92, 0xbe, 0x6e, 0xbd, 0x36, 0xd8, 0x18, 0x0a, 0xb6, 0xed, 0x76, 0x52, 0xd8, 0xac, 0x63, + 0xfd, 0x91, 0xb2, 0x9c, 0x3f, 0x12, 0x7f, 0x1f, 0x45, 0x82, 0x99, 0x30, 0xcf, 0x75, 0x84, 0x2e, + 0xcd, 0x81, 0x64, 0xf8, 0xdc, 0x49, 0x46, 0x7b, 0xa8, 0xb9, 0x6e, 0x6c, 0x41, 0x63, 0x58, 0x5b, + 0x9a, 0x83, 0xfc, 0x92, 0xd1, 0x71, 0x91, 0xad, 0x7e, 0x99, 0xce, 0x74, 0x5f, 0x9b, 0xe2, 0x00, + 0xb0, 0x08, 0xf9, 0x4d, 0x5c, 0x1a, 0x35, 0x99, 0x6f, 0x12, 0x6b, 0x3d, 0x84, 0x43, 0x8d, 0xfe, + 0x9b, 0x34, 0x3a, 0x5f, 0x0f, 0x99, 0x91, 0x4d, 0x91, 0x13, 0x44, 0xe7, 0x1b, 0xcc, 0xc2, 0x58, + 0x2e, 0xa6, 0xca, 0x6b, 0x68, 0xc7, 0x1b, 0xe3, 0x2f, 0xa4, 0x87, 0x70, 0x01, 0x64, 0xa3, 0xed, + 0xe0, 0xce, 0x71, 0x4a, 0xf3, 0x1e, 0x93, 0xfa, 0x0a, 0xf5, 0x8a, 0x8a, 0xb0, 0x3c, 0x6e, 0x5f, + 0x21, 0x21, 0x2e, 0xd2, 0xc7, 0xec, 0x7b, 0xd8, 0x51, 0xb4, 0xdb, 0xd1, 0x5b, 0xc8, 0xe3, 0x3e, + 0x35, 0xd4, 0x48, 0x4f, 0x96, 0xf5, 0x7b, 0x32, 0xa6, 0x9d, 0xe6, 0x0e, 0xd0, 0x4e, 0x87, 0x5d, + 0x86, 0x0c, 0x64, 0x8e, 0x2b, 0x7e, 0x68, 0xcb, 0x90, 0xb1, 0x6c, 0x8c, 0xe1, 0xda, 0x51, 0xff, + 0x20, 0xed, 0x58, 0x5b, 0xeb, 0xb0, 0x9b, 0x34, 0x54, 0x58, 0x23, 0x3b, 0x34, 0x3b, 0xcc, 0x26, + 0x4d, 0x34, 0x0f, 0x63, 0x40, 0x6b, 0x8e, 0xa2, 0xf5, 0x39, 0x3a, 0x8c, 0xa6, 0xbc, 0x4f, 0xea, + 0x58, 0xb6, 0x9b, 0x6c, 0x9f, 0xd4, 0xe3, 0x4e, 0xc3, 0xff, 0x25, 0x3d, 0x78, 0xc5, 0x9f, 0xab, + 0x1e, 0xd5, 0xf0, 0x99, 0xe0, 0xe0, 0xd5, 0x20, 0x06, 0xd2, 0x87, 0xf7, 0xad, 0x87, 0x34, 0x78, + 0x0e, 0xdb, 0x1c, 0x69, 0x1b, 0x18, 0xd9, 0xd0, 0x39, 0x4c, 0x73, 0x8c, 0xe6, 0x21, 0x7d, 0xbc, + 0xbe, 0xcd, 0x0c, 0x9c, 0x6f, 0x1e, 0xe3, 0xc0, 0xe9, 0xb7, 0xcc, 0xdc, 0x90, 0x2d, 0x73, 0xd8, + 0xfd, 0x1f, 0x2a, 0xeb, 0xd1, 0x0d, 0x98, 0xc3, 0xec, 0xff, 0xc4, 0x30, 0x91, 0x3e, 0xe2, 0x6f, + 0x91, 0x21, 0x57, 0x1f, 0xff, 0x78, 0x39, 0xec, 0x5c, 0x04, 0xcb, 0xaa, 0x3e, 0xb2, 0xe1, 0x72, + 0x98, 0xb9, 0x48, 0x24, 0x0b, 0x63, 0x08, 0xbc, 0x7f, 0x14, 0x66, 0xf0, 0x92, 0x88, 0xbf, 0xcd, + 0xfa, 0x6d, 0x3a, 0x6a, 0x3e, 0x9c, 0x62, 0x5b, 0xbd, 0x07, 0x26, 0xfd, 0xfd, 0x3b, 0x3a, 0x72, + 0xce, 0x8b, 0xb5, 0x4f, 0x9f, 0x4b, 0x2d, 0xf8, 0xff, 0x40, 0xce, 0x10, 0x23, 0xdf, 0xab, 0x1d, + 0xd6, 0x19, 0xe2, 0x50, 0xf7, 0x6b, 0xff, 0x34, 0x1c, 0x51, 0xff, 0x4b, 0x7a, 0x98, 0xf7, 0xee, + 0xe3, 0x66, 0xfb, 0xec, 0xe3, 0x7e, 0x9c, 0xc5, 0xb2, 0xce, 0x63, 0x79, 0xa7, 0xa8, 0x08, 0x47, + 0x38, 0xd6, 0xbe, 0x27, 0x80, 0xf3, 0x2c, 0x07, 0xe7, 0xc2, 0x81, 0x78, 0x19, 0xc3, 0xc1, 0xc7, + 0x6c, 0x38, 0xe6, 0x7e, 0x22, 0xc5, 0x76, 0xdc, 0x73, 0xaa, 0x22, 0xbb, 0xef, 0x54, 0x05, 0xd7, + 0xd2, 0x73, 0x07, 0x6c, 0xe9, 0x9f, 0x60, 0xb5, 0xa3, 0xc1, 0x6b, 0xc7, 0x53, 0xc5, 0x11, 0x19, + 0xdd, 0xc8, 0xfc, 0xde, 0x40, 0x3d, 0xce, 0x71, 0xea, 0x51, 0x3a, 0x18, 0x33, 0xe9, 0xeb, 0xc7, + 0x1f, 0xfa, 0x13, 0xda, 0x43, 0x6e, 0xef, 0xc3, 0x6e, 0x15, 0x73, 0x42, 0x1c, 0xd9, 0xc8, 0x3d, + 0xcc, 0x56, 0xf1, 0x20, 0x4e, 0xc6, 0x10, 0x8b, 0x6d, 0x16, 0xa6, 0x31, 0x4f, 0xe7, 0x8c, 0xf6, + 0x16, 0x72, 0xd5, 0xd7, 0x11, 0x1f, 0x45, 0x3f, 0xf2, 0xe5, 0x88, 0xc2, 0x13, 0x45, 0x9d, 0x77, + 0x4d, 0xea, 0xd1, 0x41, 0x98, 0x9c, 0x67, 0x18, 0x1c, 0x77, 0x04, 0xc5, 0x81, 0x1c, 0xa4, 0x0f, + 0xd9, 0x47, 0x89, 0xbb, 0xcd, 0xaa, 0x7e, 0xc9, 0xda, 0x75, 0xd5, 0x07, 0x47, 0xd0, 0x41, 0x2f, + 0x40, 0xbe, 0x83, 0xa9, 0xd1, 0x63, 0x19, 0xf1, 0xd3, 0x1d, 0x2a, 0x02, 0x52, 0xbe, 0x46, 0xff, + 0x4c, 0x7a, 0x36, 0x23, 0x94, 0x23, 0xa1, 0x33, 0xee, 0xb3, 0x19, 0x03, 0xca, 0x1f, 0xcb, 0x1d, + 0x3b, 0x93, 0x5e, 0xe9, 0xc6, 0x8e, 0xe1, 0x8e, 0x28, 0x82, 0x43, 0xc7, 0xa3, 0xe5, 0x47, 0x70, + 0xc0, 0x2f, 0x49, 0x4f, 0x8c, 0x32, 0x52, 0xf1, 0x7e, 0x1f, 0xf7, 0x89, 0xd1, 0xf8, 0xe2, 0xd3, + 0xc7, 0xe4, 0x57, 0x49, 0xcb, 0x3a, 0x4b, 0x9c, 0x6f, 0x53, 0xf4, 0xeb, 0x1d, 0xba, 0xb1, 0x10, + 0xd6, 0x0e, 0xaf, 0xb1, 0xf4, 0x2d, 0x3f, 0x7d, 0x60, 0xfe, 0xdb, 0x8f, 0x43, 0x6e, 0x11, 0x9d, + 0xdf, 0xdd, 0x52, 0xef, 0x80, 0xc9, 0x86, 0x8d, 0x50, 0xc5, 0xdc, 0xb4, 0x3c, 0xe9, 0xba, 0xde, + 0xb3, 0x0f, 0x09, 0x7d, 0xf3, 0xf0, 0xd8, 0x46, 0x7a, 0x3b, 0x3c, 0x7f, 0xe6, 0xbf, 0xaa, 0x2f, + 0x97, 0x20, 0x5b, 0x77, 0x75, 0x57, 0x9d, 0x0a, 0xb0, 0x55, 0x1f, 0x64, 0xb1, 0xb8, 0x83, 0xc7, + 0xe2, 0x7a, 0x4e, 0x16, 0x98, 0x83, 0x79, 0xef, 0xff, 0x08, 0x00, 0x54, 0x98, 0xbc, 0xdf, 0xb1, + 0x4c, 0x2f, 0x87, 0x7f, 0x04, 0xd2, 0x7f, 0x57, 0x5f, 0x13, 0x88, 0xfb, 0x2e, 0x4e, 0xdc, 0x8f, + 0x15, 0x2b, 0x62, 0x0c, 0x2b, 0x6d, 0x12, 0x4c, 0x79, 0xa2, 0x5d, 0x41, 0x7a, 0xdb, 0x51, 0x7f, + 0x2c, 0x54, 0xfe, 0x08, 0x31, 0xab, 0x1f, 0x14, 0x0e, 0xc6, 0x49, 0x6a, 0x15, 0x10, 0x8f, 0xf6, + 0xe8, 0xf0, 0x37, 0xff, 0x25, 0x3e, 0x18, 0xc9, 0xcd, 0x90, 0x35, 0xcc, 0x4d, 0x8b, 0xfa, 0x17, + 0x5e, 0x19, 0x41, 0xdb, 0xd3, 0x09, 0x0d, 0x67, 0x14, 0x8c, 0xd4, 0x19, 0xcf, 0xd6, 0x58, 0x2e, + 0xbd, 0xcb, 0x7a, 0xa5, 0xab, 0xff, 0xfb, 0x40, 0x61, 0x2b, 0x0a, 0x64, 0xbb, 0xba, 0xbb, 0x4d, + 0x8b, 0xc6, 0xcf, 0x9e, 0x8d, 0xbc, 0x6b, 0xea, 0xa6, 0x65, 0x5e, 0xda, 0x31, 0x9e, 0x19, 0xdc, + 0xad, 0xcb, 0xa5, 0x79, 0x9c, 0x6f, 0x21, 0x13, 0xd9, 0xba, 0x8b, 0xea, 0x7b, 0x5b, 0x78, 0x8e, + 0x35, 0xa9, 0xb1, 0x49, 0x89, 0xf5, 0xdf, 0xe3, 0x38, 0x5a, 0xff, 0x37, 0x8d, 0x0e, 0xc2, 0x91, + 0x9a, 0xa8, 0xfe, 0xfb, 0xef, 0x89, 0xf4, 0xbf, 0x4f, 0x11, 0xe9, 0xa3, 0xf1, 0xef, 0x12, 0xcc, + 0xd4, 0x3d, 0x85, 0xab, 0xef, 0xee, 0xec, 0xe8, 0xf6, 0x25, 0xf5, 0xda, 0x10, 0x15, 0x46, 0x35, + 0x33, 0xbc, 0x5f, 0xca, 0x1f, 0x08, 0x5f, 0x2b, 0x4d, 0x9b, 0x36, 0x53, 0x42, 0xe2, 0x76, 0xf0, + 0x78, 0xc8, 0x79, 0xea, 0xed, 0x7b, 0x5c, 0xc6, 0x36, 0x04, 0x92, 0x53, 0x30, 0xa2, 0xd5, 0x40, + 0xde, 0xc6, 0x10, 0x4d, 0x43, 0x82, 0xa3, 0x75, 0x57, 0x6f, 0x5d, 0x58, 0xb6, 0x6c, 0x6b, 0xd7, + 0x35, 0x4c, 0xe4, 0xa8, 0x8f, 0x0a, 0x11, 0xf0, 0xf5, 0x3f, 0x13, 0xea, 0xbf, 0xfa, 0x83, 0x8c, + 0xe8, 0x28, 0x1a, 0x74, 0xab, 0x2c, 0xf9, 0x88, 0x00, 0x55, 0x62, 0xe3, 0xa2, 0x08, 0xc5, 0xf4, + 0x85, 0xf6, 0x66, 0x19, 0x0a, 0xe5, 0x07, 0xba, 0x96, 0xed, 0xae, 0x5a, 0x2d, 0xbd, 0xe3, 0xb8, + 0x96, 0x8d, 0xd4, 0x5a, 0xac, 0xd4, 0xbc, 0x1e, 0xa6, 0x6d, 0xb5, 0xc2, 0xc1, 0x91, 0xbe, 0xb1, + 0x6a, 0x27, 0xf3, 0x3a, 0xfe, 0x51, 0xe1, 0x5d, 0x46, 0x22, 0x95, 0x5e, 0x8e, 0x22, 0xf4, 0xbc, + 0x5f, 0x97, 0x96, 0xec, 0xb0, 0x84, 0xd8, 0xce, 0xa3, 0x10, 0x53, 0x63, 0x58, 0x2a, 0x97, 0x60, + 0xb6, 0xbe, 0x7b, 0x3e, 0x20, 0xe2, 0xb0, 0x46, 0xc8, 0xeb, 0x85, 0xa3, 0x54, 0x50, 0xc5, 0x63, + 0x09, 0x45, 0xc8, 0xf7, 0x3a, 0x98, 0x75, 0xd8, 0x6c, 0x14, 0x6f, 0x3e, 0x51, 0x30, 0x3a, 0xc5, + 0xe0, 0x52, 0xd3, 0x17, 0xe0, 0x7b, 0x25, 0x98, 0xad, 0x75, 0x91, 0x89, 0xda, 0xc4, 0x0b, 0x92, + 0x13, 0xe0, 0xcb, 0x13, 0x0a, 0x90, 0x23, 0x14, 0x21, 0xc0, 0xd0, 0x63, 0x79, 0xd1, 0x17, 0x5e, + 0x98, 0x90, 0x48, 0x70, 0x71, 0xa5, 0xa5, 0x2f, 0xb8, 0x2f, 0x49, 0x30, 0xad, 0xed, 0x9a, 0xeb, + 0xb6, 0xe5, 0x8d, 0xc6, 0xb6, 0x7a, 0x67, 0xd8, 0x41, 0xdc, 0x04, 0xc7, 0xda, 0xbb, 0x36, 0x5e, + 0x7f, 0xaa, 0x98, 0x75, 0xd4, 0xb2, 0xcc, 0xb6, 0x83, 0xeb, 0x91, 0xd3, 0xf6, 0x7f, 0xb8, 0x3d, + 0xfb, 0xbc, 0x6f, 0xc8, 0x19, 0xf5, 0x85, 0xc2, 0xa1, 0x6e, 0x48, 0xe5, 0x99, 0xa2, 0xc5, 0x7b, + 0x02, 0xc1, 0x80, 0x36, 0x83, 0x4a, 0x48, 0x5f, 0xb8, 0x9f, 0x93, 0x40, 0x29, 0xb6, 0x5a, 0xd6, + 0xae, 0xe9, 0xd6, 0x51, 0x07, 0xb5, 0xdc, 0x86, 0xad, 0xb7, 0x10, 0x6b, 0x3f, 0x17, 0x40, 0x6e, + 0x1b, 0x36, 0xed, 0x83, 0xbd, 0x47, 0x2a, 0xc7, 0x97, 0x0b, 0xef, 0x38, 0x92, 0x5a, 0xee, 0x2f, + 0x25, 0x81, 0x38, 0xc5, 0xf6, 0x15, 0x05, 0x0b, 0x4a, 0x5f, 0xaa, 0x9f, 0x90, 0x60, 0xca, 0xef, + 0xb1, 0xb7, 0x44, 0x84, 0xf9, 0xab, 0x09, 0x27, 0x23, 0x01, 0xf1, 0x04, 0x32, 0x7c, 0x67, 0x82, + 0x59, 0x45, 0x14, 0xfd, 0x64, 0xa2, 0x2b, 0x26, 0x17, 0x9d, 0xf7, 0x5a, 0xad, 0x35, 0x97, 0x6a, + 0xab, 0x8b, 0x65, 0xad, 0x20, 0xab, 0x5f, 0x96, 0x20, 0xbb, 0x6e, 0x98, 0x5b, 0x6c, 0x74, 0xa5, + 0xe3, 0x9e, 0x1d, 0xd9, 0x46, 0x0f, 0xd0, 0x96, 0x4e, 0x5e, 0x94, 0x5b, 0xe1, 0xb8, 0xb9, 0xbb, + 0x73, 0x1e, 0xd9, 0xb5, 0x4d, 0x3c, 0xca, 0x3a, 0x0d, 0xab, 0x8e, 0x4c, 0x62, 0x84, 0xe6, 0xb4, + 0xbe, 0xdf, 0x78, 0x13, 0x4c, 0x60, 0xf2, 0xe0, 0x71, 0x12, 0x21, 0xf1, 0x80, 0x29, 0x89, 0x61, + 0x2a, 0xd1, 0xb4, 0xa1, 0x0f, 0xf1, 0xf4, 0x35, 0xf5, 0x8f, 0x72, 0x70, 0xa2, 0x68, 0x5e, 0xc2, + 0x36, 0x05, 0xe9, 0xe0, 0x4b, 0xdb, 0xba, 0xb9, 0x85, 0xf0, 0x00, 0x11, 0x48, 0x9c, 0x0d, 0xd1, + 0x9f, 0xe1, 0x43, 0xf4, 0x2b, 0x1a, 0x4c, 0x58, 0x76, 0x1b, 0xd9, 0x0b, 0x97, 0x30, 0x4f, 0xbd, + 0xcb, 0xce, 0xb4, 0x4d, 0xf6, 0x2b, 0x62, 0x9e, 0x92, 0x9f, 0xaf, 0x91, 0xff, 0x35, 0x9f, 0xd0, + 0x99, 0x9b, 0x60, 0x82, 0xa6, 0x29, 0x33, 0x30, 0x59, 0xd3, 0x16, 0xcb, 0x5a, 0xb3, 0xb2, 0x58, + 0x38, 0xa2, 0x5c, 0x06, 0x47, 0x2b, 0x8d, 0xb2, 0x56, 0x6c, 0x54, 0x6a, 0xd5, 0x26, 0x4e, 0x2f, + 0x64, 0xd4, 0xe7, 0x66, 0x45, 0x3d, 0x7b, 0xe3, 0x99, 0xe9, 0x07, 0xab, 0x06, 0x13, 0x2d, 0x92, + 0x01, 0x0f, 0xa1, 0xd3, 0x89, 0x6a, 0x47, 0x09, 0x92, 0x04, 0xcd, 0x27, 0xa4, 0x9c, 0x06, 0xb8, + 0x68, 0x5b, 0xe6, 0x56, 0x78, 0xea, 0x70, 0x52, 0x63, 0x52, 0xd4, 0x07, 0x33, 0x90, 0x27, 0xff, + 0xe0, 0x2b, 0x49, 0xf0, 0x53, 0x28, 0x78, 0xff, 0xdd, 0xb3, 0x78, 0xb1, 0xbc, 0xc2, 0x89, 0x16, + 0x7d, 0xf5, 0x74, 0x91, 0xc8, 0x80, 0x58, 0xc2, 0xb4, 0x2a, 0x37, 0x43, 0x9e, 0xfc, 0x4b, 0xbd, + 0x0e, 0xa2, 0xc3, 0x8b, 0x92, 0x6c, 0x82, 0x7e, 0xca, 0xe2, 0x32, 0x4d, 0x5f, 0x9b, 0x3f, 0x24, + 0xc1, 0x64, 0x15, 0xb9, 0xa5, 0x6d, 0xd4, 0xba, 0xa0, 0x3e, 0x86, 0x5f, 0x00, 0xed, 0x18, 0xc8, + 0x74, 0xef, 0xdb, 0xe9, 0x04, 0x0b, 0xa0, 0x7e, 0x82, 0xfa, 0x7c, 0xb6, 0xf3, 0xbd, 0x9b, 0xd7, + 0x9f, 0x1b, 0xfb, 0xd4, 0xd5, 0x2f, 0x21, 0x42, 0x65, 0x4e, 0x42, 0xde, 0x46, 0xce, 0x6e, 0xc7, + 0x5f, 0x44, 0xa3, 0x6f, 0xea, 0x43, 0x81, 0x38, 0x4b, 0x9c, 0x38, 0x6f, 0x16, 0x2f, 0x62, 0x0c, + 0xf1, 0x4a, 0xb3, 0x30, 0x51, 0x31, 0x0d, 0xd7, 0xd0, 0x3b, 0xea, 0x0b, 0xb3, 0x30, 0x5b, 0x47, + 0xee, 0xba, 0x6e, 0xeb, 0x3b, 0xc8, 0x45, 0xb6, 0xa3, 0x7e, 0x97, 0xef, 0x13, 0xba, 0x1d, 0xdd, + 0xdd, 0xb4, 0xec, 0x1d, 0x5f, 0x35, 0xfd, 0x77, 0x4f, 0x35, 0xf7, 0x90, 0xed, 0x84, 0x7c, 0xf9, + 0xaf, 0xde, 0x97, 0x8b, 0x96, 0x7d, 0xc1, 0x1b, 0x04, 0xe9, 0x34, 0x8d, 0xbe, 0x7a, 0xf4, 0x3a, + 0xd6, 0xd6, 0x2a, 0xda, 0x43, 0x7e, 0xb8, 0xb4, 0xe0, 0xdd, 0x9b, 0x0b, 0xb4, 0xad, 0xaa, 0xe5, + 0x7a, 0x9d, 0xf6, 0xaa, 0xb5, 0x45, 0xe2, 0xc5, 0x4e, 0x6a, 0x7c, 0x62, 0x98, 0x4b, 0xdf, 0x43, + 0x38, 0x57, 0x9e, 0xcd, 0x45, 0x13, 0x95, 0x79, 0x50, 0x82, 0xdf, 0x1a, 0xa8, 0x83, 0x76, 0x90, + 0x6b, 0x5f, 0xc2, 0xd7, 0x42, 0x4c, 0x6a, 0x7d, 0xbe, 0xd0, 0x01, 0x5a, 0x7c, 0xb2, 0x4e, 0xa5, + 0x37, 0xcf, 0x49, 0xee, 0x40, 0x93, 0x75, 0x11, 0x8a, 0x63, 0xb9, 0xf6, 0x4a, 0xf6, 0xac, 0x99, + 0x57, 0xca, 0x90, 0xc5, 0x83, 0xe7, 0x5b, 0x32, 0xdc, 0x0a, 0xd3, 0x0e, 0x72, 0x1c, 0x7d, 0x0b, + 0xf9, 0x2b, 0x4c, 0xf4, 0x55, 0xb9, 0x0d, 0x72, 0x1d, 0x8c, 0x29, 0x19, 0x1c, 0xae, 0xe5, 0x6a, + 0xe6, 0x19, 0x18, 0x1e, 0xad, 0x60, 0x24, 0xc0, 0x70, 0x6b, 0xe4, 0x8f, 0x33, 0xf7, 0x40, 0x8e, + 0xc0, 0x3f, 0x05, 0xb9, 0xc5, 0xf2, 0xc2, 0xc6, 0x72, 0xe1, 0x88, 0xf7, 0xe8, 0xf3, 0x37, 0x05, + 0xb9, 0xa5, 0x62, 0xa3, 0xb8, 0x5a, 0x90, 0xbc, 0x7a, 0x54, 0xaa, 0x4b, 0xb5, 0x82, 0xec, 0x25, + 0xae, 0x17, 0xab, 0x95, 0x52, 0x21, 0xab, 0x4c, 0xc3, 0xc4, 0xb9, 0xa2, 0x56, 0xad, 0x54, 0x97, + 0x0b, 0x39, 0xf5, 0xef, 0x58, 0xfc, 0x6e, 0xe7, 0xf1, 0xbb, 0x2e, 0x8a, 0xa7, 0x7e, 0x90, 0xbd, + 0x2a, 0x80, 0xec, 0x4e, 0x0e, 0xb2, 0x1f, 0x17, 0x21, 0x32, 0x06, 0x77, 0xa6, 0x3c, 0x4c, 0xac, + 0xdb, 0x56, 0x0b, 0x39, 0x8e, 0xfa, 0x6b, 0x12, 0xe4, 0x4b, 0xba, 0xd9, 0x42, 0x1d, 0xf5, 0x8a, + 0x10, 0x2a, 0xe2, 0x2a, 0x9a, 0x09, 0x4e, 0x8b, 0xfd, 0x53, 0x46, 0xb4, 0xf7, 0xa3, 0x74, 0xe7, + 0x09, 0xcd, 0x08, 0xf9, 0x88, 0xf5, 0x72, 0xb1, 0xa4, 0xc6, 0x70, 0x35, 0x8e, 0x04, 0x53, 0x74, + 0x35, 0xe0, 0x3c, 0x62, 0xe7, 0xe1, 0xdf, 0xcd, 0x88, 0x4e, 0x0e, 0xfd, 0x1a, 0x04, 0x64, 0x22, + 0xe4, 0x21, 0x36, 0x11, 0x1c, 0x44, 0x6d, 0x0c, 0x9b, 0x87, 0x12, 0x4c, 0x6f, 0x98, 0x4e, 0x3f, + 0xa1, 0x88, 0xc7, 0xd1, 0xf7, 0xab, 0xc1, 0x10, 0x3a, 0x50, 0x1c, 0xfd, 0xc1, 0xf4, 0xd2, 0x17, + 0xcc, 0x77, 0x33, 0x70, 0x7c, 0x19, 0x99, 0xc8, 0x36, 0x5a, 0xa4, 0x06, 0xbe, 0x24, 0xee, 0xe4, + 0x25, 0xf1, 0x18, 0x8e, 0xf3, 0x7e, 0x7f, 0xf0, 0x12, 0x78, 0x6d, 0x20, 0x81, 0xbb, 0x39, 0x09, + 0xdc, 0x24, 0x48, 0x67, 0x0c, 0xf7, 0xa1, 0x4f, 0xc1, 0x4c, 0xd5, 0x72, 0x8d, 0x4d, 0xa3, 0x45, + 0x7c, 0xd0, 0x5e, 0x21, 0x43, 0x76, 0xd5, 0x70, 0x5c, 0xb5, 0x18, 0x76, 0x27, 0xd7, 0xc0, 0xb4, + 0x61, 0xb6, 0x3a, 0xbb, 0x6d, 0xa4, 0x21, 0x9d, 0xf4, 0x2b, 0x93, 0x1a, 0x9b, 0x14, 0x6e, 0xed, + 0x7b, 0x6c, 0xc9, 0xfe, 0xd6, 0xfe, 0xa7, 0x85, 0x97, 0x61, 0x58, 0x16, 0x70, 0x40, 0xca, 0x08, + 0xbb, 0xab, 0x08, 0xb3, 0x26, 0x93, 0xd5, 0x37, 0xd8, 0x7b, 0x2f, 0x14, 0x60, 0xc9, 0x69, 0xfc, + 0x1f, 0xea, 0xfb, 0x85, 0x1a, 0xeb, 0x20, 0x86, 0x92, 0x21, 0xb3, 0x34, 0xc4, 0x24, 0x59, 0x81, + 0xb9, 0x4a, 0xb5, 0x51, 0xd6, 0xaa, 0xc5, 0x55, 0x9a, 0x45, 0x56, 0xff, 0x5d, 0x82, 0x9c, 0x86, + 0xba, 0x9d, 0x4b, 0x6c, 0xc4, 0x68, 0xea, 0x28, 0x9e, 0x09, 0x1c, 0xc5, 0x95, 0x25, 0x00, 0xbd, + 0xe5, 0x15, 0x8c, 0xaf, 0xd4, 0x92, 0xfa, 0xc6, 0x31, 0xe5, 0x2a, 0x58, 0x0c, 0x72, 0x6b, 0xcc, + 0x9f, 0xea, 0x8b, 0x84, 0x77, 0x8e, 0x38, 0x6a, 0x98, 0xc3, 0x88, 0x3e, 0xe1, 0x03, 0x42, 0x9b, + 0x3d, 0x03, 0xc9, 0x1d, 0x8e, 0xf8, 0xbf, 0x22, 0x41, 0xb6, 0xe1, 0xf5, 0x96, 0x4c, 0xc7, 0xf9, + 0xc7, 0xc3, 0xe9, 0xb8, 0x47, 0x26, 0x42, 0xc7, 0xef, 0x82, 0x19, 0x56, 0x63, 0xa9, 0xab, 0x44, + 0xac, 0x8a, 0x73, 0x3f, 0x0c, 0xa3, 0xe1, 0x7d, 0xd8, 0x39, 0x1c, 0x11, 0x7f, 0xf2, 0xb1, 0x00, + 0x6b, 0x68, 0xe7, 0x3c, 0xb2, 0x9d, 0x6d, 0xa3, 0xab, 0xfe, 0xbd, 0x0c, 0x53, 0xcb, 0xc8, 0xad, + 0xbb, 0xba, 0xbb, 0xeb, 0xf4, 0x6c, 0x77, 0x9a, 0x56, 0x49, 0x6f, 0x6d, 0x23, 0xda, 0x1d, 0xf9, + 0xaf, 0xea, 0xbb, 0x65, 0x51, 0x7f, 0xa2, 0xb0, 0x9c, 0xf9, 0xa0, 0x8c, 0x08, 0x4c, 0x1e, 0x07, + 0xd9, 0xb6, 0xee, 0xea, 0x14, 0x8b, 0x2b, 0x7a, 0xb0, 0x08, 0x09, 0x69, 0x38, 0x9b, 0xfa, 0xdb, + 0x92, 0x88, 0x43, 0x91, 0x40, 0xf9, 0xc9, 0x40, 0x78, 0x7f, 0x66, 0x08, 0x14, 0x8e, 0xc1, 0x6c, + 0xb5, 0xd6, 0x68, 0xae, 0xd6, 0x96, 0x97, 0xcb, 0x5e, 0x6a, 0x41, 0x56, 0x4e, 0x82, 0xb2, 0x5e, + 0xbc, 0x6f, 0xad, 0x5c, 0x6d, 0x34, 0xab, 0xb5, 0xc5, 0x32, 0xfd, 0x33, 0xab, 0x1c, 0x85, 0xe9, + 0x52, 0xb1, 0xb4, 0xe2, 0x27, 0xe4, 0x94, 0x53, 0x70, 0x7c, 0xad, 0xbc, 0xb6, 0x50, 0xd6, 0xea, + 0x2b, 0x95, 0xf5, 0xa6, 0x47, 0x66, 0xa9, 0xb6, 0x51, 0x5d, 0x2c, 0xe4, 0x15, 0x15, 0x4e, 0x32, + 0x5f, 0xce, 0x69, 0xb5, 0xea, 0x72, 0xb3, 0xde, 0x28, 0x36, 0xca, 0x85, 0x09, 0xe5, 0x32, 0x38, + 0x5a, 0x2a, 0x56, 0x71, 0xf6, 0x52, 0xad, 0x5a, 0x2d, 0x97, 0x1a, 0x85, 0x49, 0xf5, 0x07, 0x59, + 0x98, 0xae, 0x38, 0x55, 0x7d, 0x07, 0x9d, 0xd5, 0x3b, 0x46, 0x5b, 0x7d, 0x21, 0x33, 0xf3, 0xb8, + 0x0e, 0x66, 0x6d, 0xf2, 0x88, 0xda, 0x0d, 0x03, 0x11, 0x34, 0x67, 0x35, 0x3e, 0xd1, 0x9b, 0x93, + 0x9b, 0x98, 0x80, 0x3f, 0x27, 0x27, 0x6f, 0xca, 0x02, 0x00, 0x79, 0x6a, 0x84, 0x97, 0xbb, 0x9e, + 0xe9, 0x6d, 0x4d, 0xfa, 0x0e, 0x72, 0x90, 0xbd, 0x67, 0xb4, 0x90, 0x9f, 0x53, 0x63, 0xfe, 0x52, + 0xbf, 0x2a, 0x8b, 0xee, 0x2f, 0x32, 0xa0, 0x32, 0xd5, 0x89, 0xe8, 0x0d, 0x5f, 0x20, 0x8b, 0xec, + 0x0e, 0x0a, 0x91, 0x4c, 0xa6, 0x29, 0x2f, 0x91, 0x86, 0x5b, 0xb6, 0x6d, 0xd4, 0x6a, 0xcd, 0xfa, + 0x4a, 0x4d, 0x6b, 0x14, 0x64, 0x65, 0x06, 0x26, 0xbd, 0xd7, 0xd5, 0x5a, 0x75, 0xb9, 0x90, 0x55, + 0x4e, 0xc0, 0xb1, 0x95, 0x62, 0xbd, 0x59, 0xa9, 0x9e, 0x2d, 0xae, 0x56, 0x16, 0x9b, 0xa5, 0x95, + 0xa2, 0x56, 0x2f, 0xe4, 0x94, 0x2b, 0xe0, 0x44, 0xa3, 0x52, 0xd6, 0x9a, 0x4b, 0xe5, 0x62, 0x63, + 0x43, 0x2b, 0xd7, 0x9b, 0xd5, 0x5a, 0xb3, 0x5a, 0x5c, 0x2b, 0x17, 0xf2, 0x5e, 0xf3, 0xc7, 0x9f, + 0x42, 0xb5, 0x99, 0xd8, 0xaf, 0x8c, 0x93, 0x11, 0xca, 0x38, 0xd5, 0xab, 0x8c, 0xc0, 0xaa, 0x95, + 0x56, 0xae, 0x97, 0xb5, 0xb3, 0xe5, 0xc2, 0x74, 0x3f, 0x5d, 0x9b, 0x51, 0x8e, 0x43, 0xc1, 0xe3, + 0xa1, 0x59, 0xa9, 0xfb, 0x39, 0x17, 0x0b, 0xb3, 0xea, 0x27, 0xf2, 0x70, 0x52, 0x43, 0x5b, 0x86, + 0xe3, 0x22, 0x7b, 0x5d, 0xbf, 0xb4, 0x83, 0x4c, 0xd7, 0xef, 0xe4, 0xff, 0x67, 0x62, 0x65, 0x5c, + 0x83, 0xd9, 0x2e, 0xa1, 0xb1, 0x86, 0xdc, 0x6d, 0xab, 0x4d, 0x47, 0xe1, 0xc7, 0x44, 0xf6, 0x1c, + 0xf3, 0xeb, 0x6c, 0x76, 0x8d, 0xff, 0x9b, 0xd1, 0x6d, 0x39, 0x46, 0xb7, 0xb3, 0xc3, 0xe8, 0xb6, + 0x72, 0x15, 0x4c, 0xed, 0x3a, 0xc8, 0x2e, 0xef, 0xe8, 0x46, 0xc7, 0xbf, 0x9c, 0x33, 0x48, 0x50, + 0xdf, 0x91, 0x15, 0x3d, 0xb1, 0xc2, 0xd4, 0xa5, 0xbf, 0x18, 0x23, 0xfa, 0xd6, 0xd3, 0x00, 0xb4, + 0xb2, 0x1b, 0x76, 0x87, 0x2a, 0x2b, 0x93, 0xe2, 0xf1, 0x77, 0xde, 0xe8, 0x74, 0x0c, 0x73, 0x2b, + 0xd8, 0xf7, 0x0f, 0x13, 0xd4, 0x97, 0xc8, 0x22, 0x27, 0x58, 0x92, 0xf2, 0x96, 0xac, 0x35, 0xbd, + 0x48, 0x1a, 0x73, 0xbf, 0xbb, 0xbf, 0xe9, 0xe4, 0x95, 0x02, 0xcc, 0xe0, 0x34, 0xda, 0x02, 0x0b, + 0x13, 0x5e, 0x1f, 0xec, 0x93, 0x5b, 0x2b, 0x37, 0x56, 0x6a, 0x8b, 0xc1, 0xb7, 0x49, 0x8f, 0xa4, + 0xc7, 0x4c, 0xb1, 0x7a, 0x1f, 0x6e, 0x8d, 0x53, 0xca, 0xa3, 0xe0, 0x0a, 0xa6, 0xc3, 0x2e, 0xae, + 0x6a, 0xe5, 0xe2, 0xe2, 0x7d, 0xcd, 0xf2, 0xd3, 0x2b, 0xf5, 0x46, 0x9d, 0x6f, 0x5c, 0x7e, 0x3b, + 0x9a, 0xf6, 0xf8, 0x2d, 0xaf, 0x15, 0x2b, 0xab, 0xb4, 0x7f, 0x5f, 0xaa, 0x69, 0x6b, 0xc5, 0x46, + 0x61, 0x46, 0x7d, 0xa5, 0x0c, 0x85, 0x65, 0xe4, 0xae, 0x5b, 0xb6, 0xab, 0x77, 0x56, 0x0d, 0xf3, + 0xc2, 0x86, 0xdd, 0xe1, 0x26, 0x9b, 0xc2, 0x61, 0x3a, 0xf8, 0x21, 0x92, 0x23, 0x18, 0xbd, 0x23, + 0xde, 0xc5, 0xd9, 0x42, 0x65, 0x0a, 0x13, 0xd4, 0x67, 0x49, 0x22, 0xcb, 0xdd, 0xe2, 0xa5, 0x26, + 0xd3, 0x93, 0x67, 0x8f, 0x7b, 0x7c, 0xee, 0x83, 0x5a, 0x5e, 0x7d, 0x5e, 0x16, 0x26, 0x97, 0x0c, + 0x53, 0xef, 0x18, 0xcf, 0xe4, 0xe2, 0x97, 0x86, 0x7d, 0x4c, 0x26, 0xa6, 0x8f, 0x91, 0x86, 0x1a, + 0x3f, 0x7f, 0x45, 0x16, 0x5d, 0x5e, 0x60, 0x64, 0xef, 0x33, 0x19, 0x31, 0x78, 0x7e, 0x58, 0x12, + 0x59, 0x5e, 0x18, 0x4c, 0x2f, 0x19, 0x86, 0x9f, 0xfa, 0xe1, 0xb0, 0xb1, 0x7a, 0xda, 0xf7, 0x64, + 0x3f, 0x55, 0x98, 0x52, 0xff, 0x5c, 0x06, 0x75, 0x19, 0xb9, 0x67, 0x91, 0x1d, 0x4c, 0x05, 0x70, + 0xaf, 0x4f, 0xed, 0x6d, 0xa6, 0xc9, 0xbe, 0x85, 0x05, 0xf0, 0x1c, 0x0f, 0x60, 0x31, 0xa6, 0xf1, + 0x44, 0x90, 0x8e, 0x68, 0xbc, 0x15, 0xc8, 0x3b, 0xf8, 0x3b, 0x55, 0xb3, 0xc7, 0x47, 0x0f, 0x97, + 0x98, 0x18, 0x4b, 0x9d, 0x10, 0xd6, 0x28, 0x01, 0xf5, 0x7b, 0xc1, 0x24, 0xe8, 0xa7, 0x38, 0xed, + 0x58, 0x3a, 0x30, 0xb3, 0xc9, 0xf4, 0xc5, 0x4e, 0x57, 0x5d, 0xfa, 0xd9, 0x37, 0xea, 0x87, 0x73, + 0x70, 0xbc, 0x5f, 0x75, 0xd4, 0xdf, 0xc9, 0x70, 0x3b, 0xec, 0x08, 0x0f, 0xf9, 0x19, 0xba, 0x81, + 0xe8, 0xbd, 0x28, 0x4f, 0x84, 0x13, 0xc1, 0x32, 0x5c, 0xc3, 0xaa, 0xa2, 0x8b, 0x4e, 0x07, 0xb9, + 0x2e, 0xb2, 0x71, 0xd5, 0x26, 0xb5, 0xfe, 0x1f, 0x95, 0x27, 0xc3, 0xe5, 0x86, 0xe9, 0x18, 0x6d, + 0x64, 0x37, 0x8c, 0xae, 0x53, 0x34, 0xdb, 0x8d, 0x5d, 0xd7, 0xb2, 0x0d, 0x9d, 0x5e, 0x25, 0x39, + 0xa9, 0x45, 0x7d, 0x56, 0x6e, 0x84, 0x82, 0xe1, 0xd4, 0xcc, 0xf3, 0x96, 0x6e, 0xb7, 0x0d, 0x73, + 0x6b, 0xd5, 0x70, 0x5c, 0xea, 0x01, 0xbc, 0x2f, 0x5d, 0xfd, 0x07, 0x59, 0xf4, 0x30, 0xdd, 0x00, + 0x58, 0x23, 0x3a, 0x94, 0xe7, 0xcb, 0x22, 0xc7, 0xe3, 0x92, 0xd1, 0x4e, 0xa6, 0x2c, 0xcf, 0x1d, + 0xb7, 0x21, 0xd1, 0x7f, 0x04, 0xc7, 0x5d, 0x0b, 0x49, 0xf7, 0x0d, 0x81, 0xb3, 0x65, 0xad, 0xb2, + 0x54, 0x29, 0x7b, 0x66, 0xc5, 0x09, 0x38, 0x16, 0x7e, 0x5b, 0xbc, 0xaf, 0x59, 0x2f, 0x57, 0x1b, + 0x85, 0x49, 0xaf, 0x9f, 0x22, 0xc9, 0x4b, 0xc5, 0xca, 0x6a, 0x79, 0xb1, 0xd9, 0xa8, 0x79, 0x5f, + 0x16, 0x87, 0x33, 0x2d, 0xd4, 0x07, 0xb3, 0x70, 0x14, 0xcb, 0xf6, 0x12, 0x96, 0xaa, 0x27, 0x94, + 0x1e, 0x5f, 0xdb, 0x00, 0xa0, 0x29, 0x22, 0x5e, 0xf5, 0xb3, 0xc2, 0x37, 0x65, 0x32, 0x10, 0xf6, + 0x94, 0x11, 0xa1, 0x19, 0xdf, 0x95, 0x44, 0x22, 0x54, 0x08, 0x93, 0x4d, 0xa6, 0x14, 0xff, 0x3a, + 0xee, 0x11, 0x27, 0x1a, 0x7c, 0x6c, 0x65, 0x96, 0xf0, 0xcf, 0x4f, 0x5f, 0xaf, 0x68, 0x58, 0x1d, + 0xe6, 0x00, 0x70, 0x0a, 0xd6, 0x20, 0xa2, 0x07, 0x7d, 0xc7, 0xab, 0x28, 0x3d, 0x28, 0x96, 0x1a, + 0x95, 0xb3, 0xe5, 0x28, 0x3d, 0xf8, 0x8c, 0x0c, 0x93, 0xcb, 0xc8, 0xf5, 0xe6, 0x54, 0x8e, 0xfa, + 0x14, 0x81, 0xf5, 0x1f, 0xcf, 0x8c, 0xe9, 0x58, 0x2d, 0xbd, 0x13, 0x2c, 0x03, 0x90, 0x37, 0xf5, + 0x39, 0xc3, 0x98, 0x20, 0x7e, 0xd1, 0x11, 0xe3, 0xd5, 0x4f, 0x42, 0xce, 0xf5, 0x3e, 0xd3, 0x65, + 0xe8, 0x1f, 0x8b, 0x1c, 0xae, 0x3c, 0x22, 0x8b, 0xba, 0xab, 0x6b, 0x24, 0x3f, 0x33, 0x3a, 0x09, + 0xda, 0x2e, 0x11, 0x8c, 0xfc, 0x30, 0xda, 0x9f, 0x7f, 0x27, 0xc3, 0x09, 0xd2, 0x3e, 0x8a, 0xdd, + 0x6e, 0xdd, 0xb5, 0x6c, 0xa4, 0xa1, 0x16, 0x32, 0xba, 0x6e, 0xcf, 0xfa, 0x9e, 0x4d, 0x52, 0xfd, + 0xcd, 0x66, 0xfa, 0xaa, 0xbe, 0x51, 0x16, 0x8d, 0xc1, 0xbc, 0xaf, 0x3d, 0xf6, 0x94, 0x17, 0xd1, + 0xd8, 0x3f, 0x2e, 0x89, 0x44, 0x55, 0x4e, 0x48, 0x3c, 0x19, 0x50, 0x1f, 0x39, 0x04, 0xa0, 0xfc, + 0x95, 0x1b, 0xad, 0x5c, 0x2a, 0x57, 0xd6, 0xbd, 0x41, 0xe0, 0x6a, 0xb8, 0x72, 0x7d, 0x43, 0x2b, + 0xad, 0x14, 0xeb, 0xe5, 0xa6, 0x56, 0x5e, 0xae, 0xd4, 0x1b, 0xd4, 0x29, 0x8b, 0xfc, 0x35, 0xa1, + 0x5c, 0x05, 0xa7, 0xea, 0x1b, 0x0b, 0xf5, 0x92, 0x56, 0x59, 0xc7, 0xe9, 0x5a, 0xb9, 0x5a, 0x3e, + 0x47, 0xbf, 0x4e, 0xaa, 0x1f, 0x2c, 0xc0, 0xb4, 0x37, 0x01, 0xa8, 0x93, 0x79, 0x81, 0xfa, 0xad, + 0x2c, 0x4c, 0x6b, 0xc8, 0xb1, 0x3a, 0x7b, 0x78, 0x8e, 0x30, 0xae, 0xa9, 0xc7, 0x77, 0x64, 0xd1, + 0xf3, 0xdb, 0x0c, 0xb3, 0xf3, 0x0c, 0xa3, 0xd1, 0x13, 0x4d, 0x7d, 0x4f, 0x37, 0x3a, 0xfa, 0x79, + 0xda, 0xd5, 0x4c, 0x6a, 0x61, 0x82, 0x32, 0x0f, 0x8a, 0x75, 0xd1, 0x44, 0x76, 0xbd, 0x75, 0xb1, + 0xec, 0x6e, 0x17, 0xdb, 0x6d, 0x1b, 0x39, 0x0e, 0x5d, 0xbd, 0xe8, 0xf3, 0x45, 0xb9, 0x01, 0x8e, + 0xe2, 0x54, 0x26, 0x33, 0x71, 0x90, 0xe9, 0x4d, 0x0e, 0x72, 0x16, 0xcd, 0x4b, 0x7e, 0xce, 0x1c, + 0x93, 0x33, 0x4c, 0x66, 0x8f, 0x4b, 0xe4, 0xf9, 0x53, 0x3a, 0xd7, 0xc0, 0xb4, 0xa9, 0xef, 0xa0, + 0xf2, 0x03, 0x5d, 0xc3, 0x46, 0x0e, 0x76, 0x8c, 0x91, 0x35, 0x36, 0x49, 0xfd, 0xb0, 0xd0, 0x79, + 0x73, 0x31, 0x89, 0x25, 0xd3, 0xfd, 0xe5, 0x21, 0x54, 0xbf, 0x4f, 0x3f, 0x23, 0xab, 0x1f, 0x94, + 0x61, 0x86, 0x32, 0x55, 0x34, 0x2f, 0x55, 0xda, 0xea, 0xd5, 0x9c, 0xf1, 0xab, 0x7b, 0x69, 0xbe, + 0xf1, 0x8b, 0x5f, 0xd4, 0x5f, 0x90, 0x45, 0xdd, 0x9d, 0xfb, 0x54, 0x1c, 0x97, 0x11, 0xed, 0x38, + 0xba, 0x69, 0xed, 0x52, 0x47, 0xd5, 0x49, 0x8d, 0xbc, 0xa4, 0xb9, 0xa8, 0xa7, 0xfe, 0xbe, 0x90, + 0x33, 0xb5, 0x60, 0x35, 0x0e, 0x09, 0xc0, 0x4f, 0xca, 0x30, 0x47, 0xb9, 0xaa, 0xd3, 0x73, 0x3e, + 0x42, 0x07, 0xde, 0x7e, 0x49, 0xd8, 0x10, 0xec, 0x53, 0x7f, 0x5a, 0xd2, 0x23, 0x06, 0xc8, 0x8f, + 0x0a, 0x05, 0x47, 0x13, 0xae, 0xc8, 0x21, 0x41, 0xf9, 0xce, 0x2c, 0x4c, 0x6f, 0x38, 0xc8, 0xa6, + 0x7e, 0xfb, 0xea, 0x43, 0x59, 0x90, 0x97, 0x11, 0xb7, 0x91, 0xfa, 0x62, 0x61, 0x0f, 0x5f, 0xb6, + 0xb2, 0x0c, 0x51, 0xcf, 0x46, 0x8a, 0x80, 0xed, 0x7a, 0x98, 0x23, 0x22, 0x2d, 0xba, 0xae, 0x67, + 0x24, 0xfa, 0xde, 0xb4, 0x3d, 0xa9, 0xa3, 0xd8, 0x2a, 0xc2, 0x65, 0x79, 0x59, 0x4a, 0x1e, 0x4f, + 0xab, 0x68, 0x93, 0xcc, 0x67, 0xb3, 0x5a, 0x4f, 0xaa, 0x72, 0x0b, 0x5c, 0x66, 0x75, 0x11, 0x39, + 0xbf, 0xc2, 0x64, 0xce, 0xe1, 0xcc, 0xfd, 0x3e, 0xa9, 0xdf, 0x12, 0xf2, 0xd5, 0x15, 0x97, 0x4e, + 0x32, 0x5d, 0xe8, 0x8e, 0xc6, 0x24, 0x39, 0x0e, 0x05, 0x2f, 0x07, 0xde, 0x7f, 0xd1, 0xca, 0xf5, + 0xda, 0xea, 0xd9, 0x72, 0xff, 0x65, 0x8c, 0x9c, 0xfa, 0x5c, 0x19, 0xa6, 0x16, 0x6c, 0x4b, 0x6f, + 0xb7, 0x74, 0xc7, 0x55, 0xbf, 0x27, 0xc1, 0xcc, 0xba, 0x7e, 0xa9, 0x63, 0xe9, 0x6d, 0xec, 0xdf, + 0xdf, 0xd3, 0x17, 0x74, 0xc9, 0x27, 0xbf, 0x2f, 0xa0, 0xaf, 0xfc, 0xc1, 0xc0, 0xe0, 0xe8, 0x5e, + 0x46, 0xe4, 0x42, 0xcd, 0x60, 0x9b, 0x4f, 0xea, 0x17, 0xac, 0xd4, 0xe7, 0x6b, 0x9e, 0xe5, 0x29, + 0xc2, 0xa2, 0xfc, 0xa0, 0x58, 0xf8, 0x51, 0x11, 0x92, 0x87, 0xb3, 0x2b, 0xff, 0xbc, 0x49, 0xc8, + 0x2f, 0x22, 0x6c, 0xc5, 0xfd, 0x77, 0x09, 0x26, 0xea, 0xc8, 0xc5, 0x16, 0xdc, 0x6d, 0x9c, 0xa7, + 0x70, 0x1b, 0x67, 0x08, 0x9d, 0xd8, 0xfd, 0x77, 0x6f, 0xb2, 0xce, 0x9c, 0xb7, 0xc6, 0xcf, 0x09, + 0x3c, 0x12, 0x49, 0xb9, 0xf3, 0xb4, 0xcc, 0x03, 0x79, 0x24, 0xc6, 0x92, 0x4a, 0xdf, 0xd7, 0xea, + 0xdd, 0x12, 0x75, 0xad, 0x62, 0x7a, 0xbd, 0xd7, 0xb1, 0xfa, 0x19, 0xeb, 0x6d, 0x46, 0x99, 0x8f, + 0x71, 0x8e, 0x7a, 0x02, 0x4c, 0x10, 0x99, 0xfb, 0xf3, 0xd1, 0x5e, 0x3f, 0x05, 0x42, 0x02, 0x9f, + 0xbd, 0xf6, 0x73, 0x0a, 0xba, 0xa8, 0x45, 0x17, 0x3e, 0x96, 0x18, 0x04, 0x33, 0x55, 0xe4, 0x5e, + 0xb4, 0xec, 0x0b, 0x75, 0x57, 0x77, 0x91, 0xfa, 0xaf, 0x12, 0xc8, 0x75, 0xe4, 0xb2, 0xd1, 0x4f, + 0xaa, 0x70, 0x8c, 0x54, 0x88, 0x66, 0xc4, 0xfd, 0x37, 0xa9, 0xc8, 0x35, 0x7d, 0x85, 0xc0, 0xe4, + 0xd3, 0xf6, 0xff, 0xaa, 0xfe, 0x5a, 0xdf, 0xa0, 0x4f, 0x52, 0x9f, 0x49, 0x03, 0x95, 0x0c, 0xcb, + 0xa0, 0xa7, 0x60, 0x11, 0x7a, 0xfa, 0x21, 0x21, 0xb3, 0x5a, 0x8c, 0xe6, 0xe1, 0x74, 0x05, 0x1f, + 0xbd, 0x02, 0xb2, 0xa5, 0x6d, 0xdd, 0x55, 0xdf, 0x25, 0x03, 0x14, 0xdb, 0xed, 0x35, 0xe2, 0x03, + 0xce, 0x3a, 0xa4, 0x9d, 0x81, 0x99, 0xd6, 0xb6, 0x1e, 0xde, 0x6d, 0x42, 0xfa, 0x03, 0x2e, 0x4d, + 0x79, 0x62, 0xe8, 0x4c, 0x4e, 0xa4, 0xaa, 0xf6, 0xc0, 0xe4, 0x95, 0x41, 0x69, 0x07, 0x8e, 0xe6, + 0x7c, 0x28, 0xcc, 0xd8, 0x23, 0x74, 0xde, 0xef, 0xf3, 0x21, 0x7b, 0xd1, 0x73, 0x38, 0x4a, 0x3a, + 0x38, 0x60, 0x13, 0x26, 0x24, 0x3c, 0xe9, 0x2d, 0x16, 0xd0, 0x23, 0x9e, 0xaf, 0xb1, 0x84, 0xae, + 0x55, 0xca, 0x6d, 0xc3, 0x17, 0x2d, 0x0d, 0x98, 0xa5, 0xbe, 0x28, 0x93, 0x0c, 0xbe, 0x78, 0xc1, + 0xdd, 0x0d, 0xb3, 0xa8, 0x6d, 0xb8, 0xc8, 0xaf, 0x25, 0x15, 0x60, 0x1c, 0xc4, 0xfc, 0x0f, 0xea, + 0xb3, 0x85, 0x83, 0xae, 0x61, 0x81, 0xee, 0xaf, 0x51, 0x44, 0xfb, 0x13, 0x0b, 0xa3, 0x26, 0x46, + 0x33, 0x7d, 0xb0, 0x9e, 0x23, 0xc3, 0x89, 0x86, 0xb5, 0xb5, 0xd5, 0x41, 0xbe, 0x98, 0x10, 0xf1, + 0xce, 0x54, 0xf5, 0x51, 0xc2, 0x85, 0x77, 0x82, 0xac, 0xfb, 0x8d, 0xe0, 0x28, 0x99, 0xf7, 0xc2, + 0x9f, 0x98, 0x8a, 0x9d, 0x45, 0x61, 0x71, 0xf5, 0xe5, 0x33, 0x02, 0x05, 0xb1, 0x80, 0xcf, 0xc2, + 0x64, 0xd3, 0x07, 0xe2, 0x8b, 0x12, 0xcc, 0x92, 0x9b, 0x2b, 0x7d, 0x05, 0xbd, 0x77, 0x84, 0x00, + 0xa8, 0xdf, 0xcb, 0x88, 0xfa, 0xd9, 0x62, 0x99, 0x70, 0x9c, 0x44, 0x88, 0x58, 0x2c, 0xa8, 0xca, + 0x40, 0x72, 0xe9, 0x8b, 0xf6, 0x4f, 0x64, 0x98, 0x5e, 0x46, 0x7e, 0x4b, 0x73, 0x12, 0xf7, 0x44, + 0x67, 0x60, 0x06, 0x5f, 0xdf, 0x56, 0xa3, 0xc7, 0x24, 0xc9, 0xaa, 0x19, 0x97, 0xa6, 0x5c, 0x07, + 0xb3, 0xe7, 0xd1, 0xa6, 0x65, 0xa3, 0x1a, 0x77, 0x96, 0x92, 0x4f, 0x8c, 0x08, 0x4f, 0xc7, 0xc5, + 0x41, 0x5b, 0xe0, 0xb1, 0xb9, 0x69, 0xbf, 0x30, 0x99, 0xaa, 0x44, 0x8c, 0x39, 0x4f, 0x82, 0x49, + 0x8a, 0xbc, 0x6f, 0xa6, 0xc5, 0xf5, 0x8b, 0x41, 0x5e, 0xf5, 0x37, 0x02, 0x44, 0xcb, 0x1c, 0xa2, + 0x8f, 0x4f, 0xc2, 0xc4, 0x58, 0xee, 0x77, 0x2f, 0x30, 0xe5, 0x2f, 0x5c, 0xaa, 0xb4, 0x1d, 0x75, + 0x2d, 0x19, 0xa6, 0xa7, 0x01, 0x82, 0xc6, 0xe1, 0x87, 0xb5, 0x60, 0x52, 0xf8, 0xc8, 0xf5, 0xb1, + 0x07, 0xf5, 0x7a, 0xc5, 0x81, 0xd9, 0x19, 0x31, 0x30, 0x62, 0x07, 0xfc, 0x44, 0x38, 0x49, 0x1f, + 0x9d, 0x4f, 0xcb, 0x70, 0x22, 0x38, 0x7f, 0xb4, 0xaa, 0x3b, 0x61, 0xbb, 0x2b, 0x25, 0x83, 0x88, + 0x3b, 0xf0, 0x11, 0x34, 0x96, 0x6f, 0x27, 0x1b, 0x33, 0xfa, 0x72, 0x32, 0x5a, 0x74, 0x94, 0x9b, + 0xe0, 0x98, 0xb9, 0xbb, 0x13, 0x48, 0x1d, 0xb7, 0x78, 0xda, 0xc2, 0xf7, 0x7f, 0x48, 0x32, 0x32, + 0x89, 0x30, 0x3f, 0x96, 0x39, 0x25, 0x77, 0xa4, 0xeb, 0x71, 0x89, 0x60, 0x54, 0xff, 0x25, 0x93, + 0xa8, 0x77, 0x1b, 0x7c, 0xe6, 0x2b, 0x41, 0x2f, 0x75, 0x88, 0x07, 0xbe, 0xce, 0x4c, 0x40, 0xae, + 0xbc, 0xd3, 0x75, 0x2f, 0x9d, 0x79, 0x34, 0xcc, 0xd6, 0x5d, 0x1b, 0xe9, 0x3b, 0xcc, 0xce, 0x80, + 0x6b, 0x5d, 0x40, 0xa6, 0xbf, 0x33, 0x80, 0x5f, 0x6e, 0xbf, 0x0d, 0x26, 0x4c, 0xab, 0xa9, 0xef, + 0xba, 0xdb, 0xca, 0xd5, 0xfb, 0x8e, 0xd4, 0x53, 0xf0, 0x6b, 0x34, 0x86, 0xd1, 0x57, 0xef, 0xc0, + 0x6b, 0xc3, 0x79, 0xd3, 0x2a, 0xee, 0xba, 0xdb, 0x0b, 0x57, 0x7d, 0xf2, 0x6f, 0x4f, 0x67, 0x3e, + 0xf3, 0xb7, 0xa7, 0x33, 0x5f, 0xf9, 0xdb, 0xd3, 0x99, 0x5f, 0xfa, 0xda, 0xe9, 0x23, 0x9f, 0xf9, + 0xda, 0xe9, 0x23, 0x5f, 0xfc, 0xda, 0xe9, 0x23, 0x3f, 0x25, 0x75, 0xcf, 0x9f, 0xcf, 0x63, 0x2a, + 0x4f, 0xf8, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0xb3, 0x27, 0x05, 0xb0, 0x79, 0x01, 0x02, 0x00, } func (m *Rpc) Marshal() (dAtA []byte, err error) { @@ -76298,6 +76509,129 @@ func (m *RpcAccountMigrateResponseError) MarshalToSizedBuffer(dAtA []byte) (int, return len(dAtA) - i, nil } +func (m *RpcAccountMigrateCancel) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcAccountMigrateCancel) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcAccountMigrateCancel) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *RpcAccountMigrateCancelRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcAccountMigrateCancelRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcAccountMigrateCancelRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Id) > 0 { + i -= len(m.Id) + copy(dAtA[i:], m.Id) + i = encodeVarintCommands(dAtA, i, uint64(len(m.Id))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *RpcAccountMigrateCancelResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcAccountMigrateCancelResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcAccountMigrateCancelResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Error != nil { + { + size, err := m.Error.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCommands(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *RpcAccountMigrateCancelResponseError) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcAccountMigrateCancelResponseError) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcAccountMigrateCancelResponseError) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Description) > 0 { + i -= len(m.Description) + copy(dAtA[i:], m.Description) + i = encodeVarintCommands(dAtA, i, uint64(len(m.Description))) + i-- + dAtA[i] = 0x12 + } + if m.Code != 0 { + i = encodeVarintCommands(dAtA, i, uint64(m.Code)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + func (m *RpcAccountSelect) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -118441,6 +118775,57 @@ func (m *RpcAccountMigrateResponseError) Size() (n int) { return n } +func (m *RpcAccountMigrateCancel) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *RpcAccountMigrateCancelRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Id) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + +func (m *RpcAccountMigrateCancelResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Error != nil { + l = m.Error.Size() + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + +func (m *RpcAccountMigrateCancelResponseError) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Code != 0 { + n += 1 + sovCommands(uint64(m.Code)) + } + l = len(m.Description) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + func (m *RpcAccountSelect) Size() (n int) { if m == nil { return 0 @@ -146414,6 +146799,325 @@ func (m *RpcAccountMigrateResponseError) Unmarshal(dAtA []byte) error { } return nil } +func (m *RpcAccountMigrateCancel) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MigrateCancel: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MigrateCancel: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcAccountMigrateCancelRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Request: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Request: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Id = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcAccountMigrateCancelResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Response: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Response: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Error == nil { + m.Error = &RpcAccountMigrateCancelResponseError{} + } + if err := m.Error.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcAccountMigrateCancelResponseError) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Error: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Error: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Code", wireType) + } + m.Code = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Code |= RpcAccountMigrateCancelResponseErrorCode(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *RpcAccountSelect) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/pb/protos/commands.proto b/pb/protos/commands.proto index 0c0b9d4bc..337c3be1d 100644 --- a/pb/protos/commands.proto +++ b/pb/protos/commands.proto @@ -836,6 +836,27 @@ message Rpc { } } + message MigrateCancel { + message Request { + option (no_auth) = true; + string id = 1; // Id of a selected account + } + + message Response { + Error error = 1; + message Error { + Code code = 1; + string description = 2; + + enum Code { + NULL = 0; // No error + UNKNOWN_ERROR = 1; // Any other errors + BAD_INPUT = 2; // Id or root path is wrong + } + } + } + } + message Select { /** * Front end to middleware request-to-launch-a specific account using account id and a root path diff --git a/pb/protos/service/service.proto b/pb/protos/service/service.proto index 050ace0c3..efe7d224f 100644 --- a/pb/protos/service/service.proto +++ b/pb/protos/service/service.proto @@ -37,6 +37,7 @@ service ClientCommands { // *** rpc AccountRecover (anytype.Rpc.Account.Recover.Request) returns (anytype.Rpc.Account.Recover.Response); rpc AccountMigrate (anytype.Rpc.Account.Migrate.Request) returns (anytype.Rpc.Account.Migrate.Response); + rpc AccountMigrateCancel (anytype.Rpc.Account.MigrateCancel.Request) returns (anytype.Rpc.Account.MigrateCancel.Response); rpc AccountCreate (anytype.Rpc.Account.Create.Request) returns (anytype.Rpc.Account.Create.Response); rpc AccountDelete (anytype.Rpc.Account.Delete.Request) returns (anytype.Rpc.Account.Delete.Response); rpc AccountRevertDeletion (anytype.Rpc.Account.RevertDeletion.Request) returns (anytype.Rpc.Account.RevertDeletion.Response); diff --git a/pb/service/service.pb.go b/pb/service/service.pb.go index 2dc406938..cf3091811 100644 --- a/pb/service/service.pb.go +++ b/pb/service/service.pb.go @@ -26,338 +26,340 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package func init() { proto.RegisterFile("pb/protos/service/service.proto", fileDescriptor_93a29dc403579097) } var fileDescriptor_93a29dc403579097 = []byte{ - // 5295 bytes of a gzipped FileDescriptorProto + // 5313 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x9d, 0x5b, 0x6f, 0x24, 0x49, 0x56, 0xf8, 0xc7, 0x2f, 0xff, 0xf9, 0x93, 0xcb, 0x0e, 0x50, 0x03, 0xc3, 0xec, 0xb0, 0xdb, 0xb7, 0xe9, 0xb6, 0xdd, 0x6d, 0xbb, 0xdc, 0xd3, 0x3d, 0x3d, 0xb3, 0xda, 0x45, 0x42, 0x6e, 0xbb, 0xed, 0x31, 0x6b, 0xbb, 0x8d, 0xab, 0xdc, 0x2d, 0x8d, 0x84, 0x44, 0x38, 0x2b, 0x5c, 0x4e, 0x9c, 0x95, 0x91, 0x9b, 0x19, 0x55, 0xee, 0x5a, 0x04, 0x02, 0x81, 0x40, 0x20, 0x10, 0x2b, 0x6e, 0xaf, 0x48, - 0x7c, 0x16, 0x1e, 0x78, 0xdc, 0x47, 0x1e, 0xd1, 0xcc, 0x1b, 0x9f, 0x02, 0x65, 0x64, 0x64, 0x5c, - 0x4e, 0x9e, 0x13, 0x99, 0xde, 0xa7, 0x6e, 0xd5, 0xf9, 0x9d, 0x73, 0xe2, 0x7a, 0xe2, 0x44, 0x64, - 0x64, 0x3a, 0xba, 0x9b, 0x5f, 0x6c, 0xe7, 0x85, 0x90, 0xa2, 0xdc, 0x2e, 0x79, 0xb1, 0x48, 0x62, - 0xde, 0xfc, 0x3b, 0x54, 0x3f, 0x0f, 0xde, 0x67, 0xd9, 0x52, 0x2e, 0x73, 0xfe, 0xc9, 0xc7, 0x96, - 0x8c, 0xc5, 0x6c, 0xc6, 0xb2, 0x49, 0x59, 0x23, 0x9f, 0x7c, 0x64, 0x25, 0x7c, 0xc1, 0x33, 0xa9, - 0x7f, 0x7f, 0xf6, 0x9f, 0xff, 0xbb, 0x12, 0x7d, 0xb0, 0x9b, 0x26, 0x3c, 0x93, 0xbb, 0x5a, 0x63, - 0xf0, 0x75, 0xf4, 0xdd, 0x9d, 0x3c, 0x3f, 0xe0, 0xf2, 0x0d, 0x2f, 0xca, 0x44, 0x64, 0x83, 0x4f, - 0x87, 0xda, 0xc1, 0xf0, 0x2c, 0x8f, 0x87, 0x3b, 0x79, 0x3e, 0xb4, 0xc2, 0xe1, 0x19, 0xff, 0xe9, - 0x9c, 0x97, 0xf2, 0x93, 0x87, 0x61, 0xa8, 0xcc, 0x45, 0x56, 0xf2, 0xc1, 0x65, 0xf4, 0x1b, 0x3b, - 0x79, 0x3e, 0xe2, 0x72, 0x8f, 0x57, 0x15, 0x18, 0x49, 0x26, 0xf9, 0x60, 0xad, 0xa5, 0xea, 0x03, - 0xc6, 0xc7, 0x7a, 0x37, 0xa8, 0xfd, 0x8c, 0xa3, 0xef, 0x54, 0x7e, 0xae, 0xe6, 0x72, 0x22, 0x6e, - 0xb2, 0xc1, 0xfd, 0xb6, 0xa2, 0x16, 0x19, 0xdb, 0x0f, 0x42, 0x88, 0xb6, 0xfa, 0x36, 0xfa, 0xd5, - 0xb7, 0x2c, 0x4d, 0xb9, 0xdc, 0x2d, 0x78, 0x55, 0x70, 0x5f, 0xa7, 0x16, 0x0d, 0x6b, 0x99, 0xb1, - 0xfb, 0x69, 0x90, 0xd1, 0x86, 0xbf, 0x8e, 0xbe, 0x5b, 0x4b, 0xce, 0x78, 0x2c, 0x16, 0xbc, 0x18, - 0xa0, 0x5a, 0x5a, 0x48, 0x34, 0x79, 0x0b, 0x82, 0xb6, 0x77, 0x45, 0xb6, 0xe0, 0x85, 0xc4, 0x6d, - 0x6b, 0x61, 0xd8, 0xb6, 0x85, 0xb4, 0xed, 0xbf, 0x5d, 0x89, 0xbe, 0xbf, 0x13, 0xc7, 0x62, 0x9e, - 0xc9, 0x23, 0x11, 0xb3, 0xf4, 0x28, 0xc9, 0xae, 0x4f, 0xf8, 0xcd, 0xee, 0x55, 0xc5, 0x67, 0x53, - 0x3e, 0x78, 0xee, 0xb7, 0x6a, 0x8d, 0x0e, 0x0d, 0x3b, 0x74, 0x61, 0xe3, 0xfb, 0xf3, 0xdb, 0x29, - 0xe9, 0xb2, 0xfc, 0xe3, 0x4a, 0x74, 0x07, 0x96, 0x65, 0x24, 0xd2, 0x05, 0xb7, 0xa5, 0x79, 0xd1, - 0x61, 0xd8, 0xc7, 0x4d, 0x79, 0xbe, 0xb8, 0xad, 0x9a, 0x2e, 0x51, 0x1a, 0x7d, 0xe8, 0x0e, 0x97, - 0x11, 0x2f, 0xd5, 0x74, 0x7a, 0x4c, 0x8f, 0x08, 0x8d, 0x18, 0xcf, 0x4f, 0xfa, 0xa0, 0xda, 0x5b, - 0x12, 0x0d, 0xb4, 0xb7, 0x54, 0x94, 0xc6, 0xd9, 0x3a, 0x6a, 0xc1, 0x21, 0x8c, 0xaf, 0xc7, 0x3d, - 0x48, 0xed, 0xea, 0x8f, 0xa2, 0x5f, 0x7b, 0x2b, 0x8a, 0xeb, 0x32, 0x67, 0x31, 0xd7, 0x53, 0xe1, - 0x91, 0xaf, 0xdd, 0x48, 0xe1, 0x6c, 0x58, 0xed, 0xc2, 0x9c, 0x41, 0xdb, 0x08, 0x5f, 0xe7, 0x1c, - 0xc6, 0x20, 0xab, 0x58, 0x09, 0xa9, 0x41, 0x0b, 0x21, 0x6d, 0xfb, 0x3a, 0x1a, 0x58, 0xdb, 0x17, - 0x7f, 0xcc, 0x63, 0xb9, 0x33, 0x99, 0xc0, 0x5e, 0xb1, 0xba, 0x8a, 0x18, 0xee, 0x4c, 0x26, 0x54, - 0xaf, 0xe0, 0xa8, 0x76, 0x76, 0x13, 0x7d, 0x04, 0x9c, 0x1d, 0x25, 0xa5, 0x72, 0xb8, 0x15, 0xb6, - 0xa2, 0x31, 0xe3, 0x74, 0xd8, 0x17, 0xd7, 0x8e, 0xff, 0x7c, 0x25, 0xfa, 0x1e, 0xe2, 0xf9, 0x8c, - 0xcf, 0xc4, 0x82, 0x0f, 0x9e, 0x76, 0x5b, 0xab, 0x49, 0xe3, 0xff, 0xb3, 0x5b, 0x68, 0x20, 0xc3, - 0x64, 0xc4, 0x53, 0x1e, 0x4b, 0x72, 0x98, 0xd4, 0xe2, 0xce, 0x61, 0x62, 0x30, 0x67, 0x86, 0x35, - 0xc2, 0x03, 0x2e, 0x77, 0xe7, 0x45, 0xc1, 0x33, 0x49, 0xf6, 0xa5, 0x45, 0x3a, 0xfb, 0xd2, 0x43, - 0x91, 0xfa, 0x1c, 0x70, 0xb9, 0x93, 0xa6, 0x64, 0x7d, 0x6a, 0x71, 0x67, 0x7d, 0x0c, 0xa6, 0x3d, - 0xc4, 0xd1, 0xaf, 0x3b, 0x2d, 0x26, 0x0f, 0xb3, 0x4b, 0x31, 0xa0, 0xdb, 0x42, 0xc9, 0x8d, 0x8f, - 0xb5, 0x4e, 0x0e, 0xa9, 0xc6, 0xab, 0x77, 0xb9, 0x28, 0xe8, 0x6e, 0xa9, 0xc5, 0x9d, 0xd5, 0x30, - 0x98, 0xf6, 0xf0, 0x87, 0xd1, 0x07, 0x3a, 0x4a, 0x36, 0xeb, 0xd9, 0x43, 0x34, 0x84, 0xc2, 0x05, - 0xed, 0x51, 0x07, 0xd5, 0x32, 0x7f, 0x9c, 0x4c, 0x8b, 0x2a, 0xfa, 0xe0, 0xe6, 0xb5, 0xb4, 0xc3, - 0xbc, 0xa5, 0x6c, 0xec, 0xd1, 0x32, 0x1d, 0xdb, 0x3e, 0x45, 0xf5, 0x40, 0x64, 0x7b, 0x18, 0x86, - 0x5a, 0xb6, 0xf7, 0x78, 0xca, 0x49, 0xdb, 0xb5, 0xb0, 0xc3, 0xb6, 0x81, 0xb4, 0xed, 0x22, 0xfa, - 0x2d, 0xd3, 0xea, 0xd5, 0x32, 0xad, 0xe4, 0xd5, 0x1a, 0xb0, 0x41, 0x34, 0xab, 0x0b, 0x19, 0x5f, - 0x9b, 0xfd, 0xe0, 0x56, 0x7d, 0xf4, 0x04, 0xc7, 0xeb, 0x03, 0xa6, 0xf7, 0xc3, 0x30, 0xa4, 0x6d, - 0xff, 0xdd, 0x4a, 0xf4, 0x03, 0x2d, 0x7b, 0x95, 0xb1, 0x8b, 0x94, 0xab, 0x15, 0xf7, 0x84, 0xcb, - 0x1b, 0x51, 0x5c, 0x8f, 0x96, 0x59, 0x4c, 0x64, 0x17, 0x38, 0xdc, 0x91, 0x5d, 0x90, 0x4a, 0x4e, - 0x42, 0xa9, 0x2b, 0x2a, 0x45, 0x0e, 0x13, 0xca, 0xa6, 0x06, 0x52, 0xe4, 0x54, 0x42, 0xe9, 0x23, - 0x2d, 0xab, 0xc7, 0x55, 0x54, 0xc6, 0xad, 0x1e, 0xbb, 0x61, 0xf8, 0x41, 0x08, 0xb1, 0x51, 0xb1, - 0x19, 0xc0, 0x22, 0xbb, 0x4c, 0xa6, 0xe7, 0xf9, 0xa4, 0x1a, 0xc6, 0x8f, 0xf1, 0x11, 0xea, 0x20, - 0x44, 0x54, 0x24, 0x50, 0xed, 0xed, 0x1f, 0x6c, 0xde, 0xa5, 0x67, 0xea, 0x7e, 0x21, 0x66, 0x47, - 0x7c, 0xca, 0xe2, 0xa5, 0x0e, 0x2f, 0x9f, 0x87, 0xe6, 0x35, 0xa4, 0x4d, 0x21, 0x5e, 0xdc, 0x52, - 0x4b, 0x97, 0xe7, 0xdf, 0x57, 0xa2, 0x87, 0x4d, 0xf5, 0xaf, 0x58, 0x36, 0xe5, 0xba, 0x3f, 0xeb, - 0xd2, 0xef, 0x64, 0x93, 0x33, 0x5e, 0x4a, 0x56, 0xc8, 0xc1, 0x8f, 0xf0, 0x4a, 0x86, 0x74, 0x4c, - 0xd9, 0x7e, 0xfc, 0x4b, 0xe9, 0xda, 0x5e, 0x1f, 0x55, 0x71, 0x53, 0x87, 0x00, 0xbf, 0xd7, 0x95, - 0x04, 0x06, 0x80, 0x07, 0x21, 0xc4, 0xf6, 0xba, 0x12, 0x1c, 0x66, 0x8b, 0x44, 0xf2, 0x03, 0x9e, - 0xf1, 0xa2, 0xdd, 0xeb, 0xb5, 0xaa, 0x8f, 0x10, 0xbd, 0x4e, 0xa0, 0x36, 0xd8, 0x78, 0xde, 0xcc, - 0xda, 0xbb, 0x11, 0x30, 0xd2, 0x5a, 0x7d, 0x37, 0xfb, 0xc1, 0x76, 0xf3, 0xe8, 0xf8, 0x3c, 0xe3, - 0x0b, 0x71, 0x0d, 0x37, 0x8f, 0xae, 0x89, 0x1a, 0x20, 0x36, 0x8f, 0x28, 0x68, 0x17, 0x48, 0xc7, - 0xcf, 0x9b, 0x84, 0xdf, 0x80, 0x05, 0xd2, 0x55, 0xae, 0xc4, 0xc4, 0x02, 0x89, 0x60, 0xda, 0xc3, - 0x49, 0xf4, 0x2b, 0x4a, 0xf8, 0xfb, 0x22, 0xc9, 0x06, 0x77, 0x11, 0xa5, 0x4a, 0x60, 0xac, 0xde, - 0xa3, 0x01, 0x50, 0xe2, 0xea, 0xd7, 0x5d, 0x96, 0xc5, 0x3c, 0x45, 0x4b, 0x6c, 0xc5, 0xc1, 0x12, - 0x7b, 0x98, 0xcd, 0x4c, 0x94, 0xb0, 0x8a, 0x5f, 0xa3, 0x2b, 0x56, 0x24, 0xd9, 0x74, 0x80, 0xe9, - 0x3a, 0x72, 0x22, 0x33, 0xc1, 0x38, 0x30, 0x84, 0xb5, 0xe2, 0x4e, 0x9e, 0x17, 0x55, 0x58, 0xc4, - 0x86, 0xb0, 0x8f, 0x04, 0x87, 0x70, 0x0b, 0xc5, 0xbd, 0xed, 0xf1, 0x38, 0x4d, 0xb2, 0xa0, 0x37, - 0x8d, 0xf4, 0xf1, 0x66, 0x51, 0x30, 0x78, 0x8f, 0x38, 0x5b, 0xf0, 0xa6, 0x66, 0x58, 0xcb, 0xb8, - 0x40, 0x70, 0xf0, 0x02, 0xd0, 0x6e, 0x03, 0x95, 0xf8, 0x98, 0x5d, 0xf3, 0xaa, 0x81, 0x79, 0xb5, - 0xae, 0x0d, 0x30, 0x7d, 0x8f, 0x20, 0xb6, 0x81, 0x38, 0xa9, 0x5d, 0xcd, 0xa3, 0x8f, 0x94, 0xfc, - 0x94, 0x15, 0x32, 0x89, 0x93, 0x9c, 0x65, 0xcd, 0xf6, 0x02, 0x9b, 0xd7, 0x2d, 0xca, 0xb8, 0xdc, - 0xea, 0x49, 0x6b, 0xb7, 0xff, 0xb6, 0x12, 0xdd, 0x87, 0x7e, 0x4f, 0x79, 0x31, 0x4b, 0xd4, 0x2e, - 0xb5, 0xac, 0x83, 0xf0, 0xe0, 0xcb, 0xb0, 0xd1, 0x96, 0x82, 0x29, 0xcd, 0x0f, 0x6f, 0xaf, 0x68, - 0x93, 0xa1, 0x91, 0xce, 0xdc, 0x5f, 0x17, 0x93, 0xd6, 0x29, 0xce, 0xa8, 0x49, 0xc7, 0x95, 0x90, - 0x48, 0x86, 0x5a, 0x10, 0x98, 0xe1, 0xe7, 0x59, 0xd9, 0x58, 0xc7, 0x66, 0xb8, 0x15, 0x07, 0x67, - 0xb8, 0x87, 0x69, 0x0f, 0x7f, 0x10, 0x45, 0xf5, 0x5e, 0x4e, 0xed, 0xb7, 0xfd, 0x98, 0xa3, 0x37, - 0x79, 0xde, 0x66, 0xfb, 0x7e, 0x80, 0xb0, 0x0b, 0x5d, 0xfd, 0xbb, 0x3a, 0x46, 0x18, 0xa0, 0x1a, - 0x4a, 0x44, 0x2c, 0x74, 0x00, 0x81, 0x05, 0x1d, 0x5d, 0x89, 0x1b, 0xbc, 0xa0, 0x95, 0x24, 0x5c, - 0x50, 0x4d, 0xd8, 0x83, 0x3d, 0x5d, 0x50, 0xec, 0x60, 0xaf, 0x29, 0x46, 0xe8, 0x60, 0x0f, 0x32, - 0xda, 0xb0, 0x88, 0x7e, 0xd3, 0x35, 0xfc, 0x52, 0x88, 0xeb, 0x19, 0x2b, 0xae, 0x07, 0x4f, 0x68, - 0xe5, 0x86, 0x31, 0x8e, 0x36, 0x7a, 0xb1, 0x36, 0xa8, 0xb9, 0x0e, 0xab, 0x34, 0xe9, 0xbc, 0x48, - 0x41, 0x50, 0xf3, 0x6c, 0x68, 0x84, 0x08, 0x6a, 0x04, 0x6a, 0x47, 0xa5, 0xeb, 0x6d, 0xc4, 0xe1, - 0x56, 0xd2, 0x53, 0x1f, 0x71, 0x6a, 0x2b, 0x89, 0x60, 0x70, 0x08, 0x1d, 0x14, 0x2c, 0xbf, 0xc2, - 0x87, 0x90, 0x12, 0x85, 0x87, 0x50, 0x83, 0xc0, 0xfe, 0x1e, 0x71, 0x56, 0xc4, 0x57, 0x78, 0x7f, - 0xd7, 0xb2, 0x70, 0x7f, 0x1b, 0x06, 0xf6, 0x77, 0x2d, 0x78, 0x9b, 0xc8, 0xab, 0x63, 0x2e, 0x19, - 0xde, 0xdf, 0x3e, 0x13, 0xee, 0xef, 0x16, 0x6b, 0xf3, 0x30, 0xd7, 0xe1, 0x68, 0x7e, 0x51, 0xc6, - 0x45, 0x72, 0xc1, 0x07, 0x01, 0x2b, 0x06, 0x22, 0xf2, 0x30, 0x12, 0xd6, 0x3e, 0x7f, 0xbe, 0x12, - 0xdd, 0x6d, 0xba, 0x5d, 0x94, 0xa5, 0x8e, 0x79, 0xbe, 0xfb, 0x17, 0x78, 0xff, 0x12, 0x38, 0x71, - 0xd4, 0xda, 0x43, 0xcd, 0x59, 0x13, 0xf0, 0x22, 0x9d, 0x67, 0xa5, 0x29, 0xd4, 0x97, 0x7d, 0xac, - 0x3b, 0x0a, 0xc4, 0x9a, 0xd0, 0x4b, 0xd1, 0x2e, 0xc7, 0xba, 0x7f, 0x1a, 0xd9, 0xe1, 0xa4, 0x04, - 0xcb, 0x71, 0xd3, 0xde, 0x0e, 0x41, 0x2c, 0xc7, 0x38, 0x09, 0x87, 0xc2, 0x41, 0x21, 0xe6, 0x79, - 0xd9, 0x31, 0x14, 0x00, 0x14, 0x1e, 0x0a, 0x6d, 0x58, 0xfb, 0x7c, 0x17, 0xfd, 0xb6, 0x3b, 0xfc, - 0xdc, 0xc6, 0xde, 0xa2, 0xc7, 0x14, 0xd6, 0xc4, 0xc3, 0xbe, 0xb8, 0x4d, 0x48, 0x1b, 0xcf, 0x72, - 0x8f, 0x4b, 0x96, 0xa4, 0xe5, 0x60, 0x15, 0xb7, 0xd1, 0xc8, 0x89, 0x84, 0x14, 0xe3, 0x60, 0x7c, - 0xdb, 0x9b, 0xe7, 0x69, 0x12, 0xb7, 0x0f, 0xba, 0xb5, 0xae, 0x11, 0x87, 0xe3, 0x9b, 0x8b, 0xc1, - 0x78, 0x5d, 0x2d, 0xf9, 0xea, 0x3f, 0xe3, 0x65, 0xce, 0xf1, 0x78, 0xed, 0x21, 0xe1, 0x78, 0x0d, - 0x51, 0x58, 0x9f, 0x11, 0x97, 0x47, 0x6c, 0x29, 0xe6, 0x44, 0xbc, 0x36, 0xe2, 0x70, 0x7d, 0x5c, - 0xcc, 0xe6, 0x84, 0xc6, 0xc3, 0x61, 0x26, 0x79, 0x91, 0xb1, 0x74, 0x3f, 0x65, 0xd3, 0x72, 0x40, - 0xc4, 0x18, 0x9f, 0x22, 0x72, 0x42, 0x9a, 0x46, 0x9a, 0xf1, 0xb0, 0xdc, 0x67, 0x0b, 0x51, 0x24, - 0x92, 0x6e, 0x46, 0x8b, 0x74, 0x36, 0xa3, 0x87, 0xa2, 0xde, 0x76, 0x8a, 0xf8, 0x2a, 0x59, 0xf0, - 0x49, 0xc0, 0x5b, 0x83, 0xf4, 0xf0, 0xe6, 0xa0, 0x48, 0xa7, 0x8d, 0xc4, 0xbc, 0x88, 0x39, 0xd9, - 0x69, 0xb5, 0xb8, 0xb3, 0xd3, 0x0c, 0xa6, 0x3d, 0xfc, 0xd5, 0x4a, 0xf4, 0x3b, 0xb5, 0xd4, 0x3d, - 0x7d, 0xde, 0x63, 0xe5, 0xd5, 0x85, 0x60, 0xc5, 0x64, 0xf0, 0x19, 0x66, 0x07, 0x45, 0x8d, 0xeb, - 0x67, 0xb7, 0x51, 0x81, 0xcd, 0x7a, 0x94, 0x94, 0xce, 0x8c, 0x43, 0x9b, 0xd5, 0x43, 0xc2, 0xcd, - 0x0a, 0x51, 0x18, 0x40, 0x94, 0xbc, 0x3e, 0x8a, 0x59, 0x25, 0xf5, 0xfd, 0xf3, 0x98, 0xb5, 0x4e, - 0x0e, 0xc6, 0xc7, 0x4a, 0xe8, 0x8f, 0x96, 0x2d, 0xca, 0x06, 0x3e, 0x62, 0x86, 0x7d, 0x71, 0xd2, - 0xb3, 0x99, 0x15, 0x61, 0xcf, 0xad, 0x99, 0x31, 0xec, 0x8b, 0x13, 0x9e, 0x9d, 0xb0, 0x16, 0xf2, - 0x8c, 0x84, 0xb6, 0x61, 0x5f, 0x1c, 0x66, 0x5f, 0x9a, 0x69, 0xd6, 0x85, 0x27, 0x01, 0x3b, 0x70, - 0x6d, 0xd8, 0xe8, 0xc5, 0x6a, 0x87, 0x7f, 0xb3, 0x12, 0x7d, 0xdf, 0x7a, 0x3c, 0x16, 0x93, 0xe4, - 0x72, 0x59, 0x43, 0x6f, 0x58, 0x3a, 0xe7, 0xe5, 0xe0, 0x19, 0x65, 0xad, 0xcd, 0x9a, 0x12, 0x3c, - 0xbf, 0x95, 0x0e, 0x9c, 0x3b, 0x3b, 0x79, 0x9e, 0x2e, 0xc7, 0x7c, 0x96, 0xa7, 0xe4, 0xdc, 0xf1, - 0x90, 0xf0, 0xdc, 0x81, 0x28, 0xcc, 0xca, 0xc7, 0xa2, 0xca, 0xf9, 0xd1, 0xac, 0x5c, 0x89, 0xc2, - 0x59, 0x79, 0x83, 0xc0, 0x5c, 0x69, 0x2c, 0x76, 0x45, 0x9a, 0xf2, 0x58, 0xb6, 0x9f, 0x60, 0x1b, - 0x4d, 0x4b, 0x84, 0x73, 0x25, 0x40, 0xda, 0xd3, 0x98, 0x66, 0x0f, 0xc9, 0x0a, 0xfe, 0x72, 0x79, - 0x94, 0x64, 0xd7, 0x03, 0x3c, 0x2d, 0xb0, 0x00, 0x71, 0x1a, 0x83, 0x82, 0x70, 0xaf, 0x7a, 0x9e, - 0x4d, 0x04, 0xbe, 0x57, 0xad, 0x24, 0xe1, 0xbd, 0xaa, 0x26, 0xa0, 0xc9, 0x33, 0x4e, 0x99, 0xac, - 0x24, 0x61, 0x93, 0x9a, 0xc0, 0x42, 0xa1, 0x3e, 0xb3, 0x27, 0x43, 0x21, 0x38, 0xa5, 0x5f, 0xeb, - 0xe4, 0xe0, 0x08, 0x6d, 0x36, 0xad, 0xfb, 0x5c, 0xc6, 0x57, 0xf8, 0x08, 0xf5, 0x90, 0xf0, 0x08, - 0x85, 0x28, 0xac, 0xd2, 0x58, 0x98, 0x4d, 0xf7, 0x2a, 0x3e, 0x3e, 0x5a, 0x1b, 0xee, 0xb5, 0x4e, - 0x0e, 0x6e, 0x23, 0x0f, 0x67, 0xaa, 0xcd, 0xd0, 0x41, 0x5e, 0xcb, 0xc2, 0xdb, 0x48, 0xc3, 0xc0, - 0xd2, 0xd7, 0x82, 0xaa, 0x39, 0xf1, 0xd2, 0x5b, 0x79, 0xb8, 0xf4, 0x1e, 0xa7, 0x9d, 0xfc, 0x8b, - 0xd9, 0xc6, 0xd5, 0xd2, 0x13, 0x51, 0xcd, 0x91, 0x37, 0x2c, 0x4d, 0x26, 0x4c, 0xf2, 0xb1, 0xb8, - 0xe6, 0x19, 0xbe, 0x63, 0xd2, 0xa5, 0xad, 0xf9, 0xa1, 0xa7, 0x10, 0xde, 0x31, 0x85, 0x15, 0xe1, - 0x38, 0xa9, 0xe9, 0xf3, 0x92, 0xef, 0xb2, 0x92, 0x88, 0x64, 0x1e, 0x12, 0x1e, 0x27, 0x10, 0x85, - 0xf9, 0x6a, 0x2d, 0x7f, 0xf5, 0x2e, 0xe7, 0x45, 0xc2, 0xb3, 0x98, 0xe3, 0xf9, 0x2a, 0xa4, 0xc2, - 0xf9, 0x2a, 0x42, 0xc3, 0xbd, 0xda, 0x1e, 0x93, 0xfc, 0xe5, 0x72, 0x9c, 0xcc, 0x78, 0x29, 0xd9, - 0x2c, 0xc7, 0xf7, 0x6a, 0x00, 0x0a, 0xef, 0xd5, 0xda, 0x70, 0xeb, 0x68, 0xc8, 0x04, 0xc4, 0xf6, - 0xc5, 0x17, 0x48, 0x04, 0x2e, 0xbe, 0x10, 0x28, 0x6c, 0x58, 0x0b, 0xa0, 0x87, 0xc3, 0x2d, 0x2b, - 0xc1, 0xc3, 0x61, 0x9a, 0x6e, 0x1d, 0xb8, 0x19, 0x66, 0x54, 0x4d, 0xcd, 0x8e, 0xa2, 0x8f, 0xdc, - 0x29, 0xba, 0xd1, 0x8b, 0xc5, 0x4f, 0xf8, 0xce, 0x78, 0xca, 0xd4, 0xb2, 0x15, 0x38, 0x46, 0x6b, - 0x98, 0x3e, 0x27, 0x7c, 0x0e, 0xab, 0x1d, 0xfe, 0xc5, 0x4a, 0xf4, 0x09, 0xe6, 0xf1, 0x75, 0xae, - 0xfc, 0x3e, 0xed, 0xb6, 0x55, 0x93, 0xc4, 0xcd, 0x9e, 0xb0, 0x86, 0x2e, 0xc3, 0x9f, 0x44, 0x1f, - 0x37, 0x22, 0x7b, 0xf1, 0x47, 0x17, 0xc0, 0x4f, 0xda, 0x4c, 0xf9, 0x21, 0x67, 0xdc, 0x6f, 0xf7, - 0xe6, 0xed, 0x7e, 0xc8, 0x2f, 0x57, 0x09, 0xf6, 0x43, 0xc6, 0x86, 0x16, 0x13, 0xfb, 0x21, 0x04, - 0xb3, 0xb3, 0xd3, 0xad, 0xde, 0xdb, 0x44, 0x5e, 0xa9, 0x7c, 0x0b, 0xcc, 0x4e, 0xaf, 0xac, 0x06, - 0x22, 0x66, 0x27, 0x09, 0xc3, 0x8c, 0xa4, 0x01, 0xab, 0xb9, 0x89, 0xc5, 0x72, 0x63, 0xc8, 0x9d, - 0x99, 0xeb, 0xdd, 0x20, 0x1c, 0xaf, 0x8d, 0x58, 0x6f, 0x7d, 0x9e, 0x84, 0x2c, 0x80, 0xed, 0xcf, - 0x46, 0x2f, 0x56, 0x3b, 0xfc, 0xb3, 0xe8, 0x7b, 0xad, 0x8a, 0xed, 0x73, 0x26, 0xe7, 0x05, 0x9f, - 0x0c, 0xb6, 0x3b, 0xca, 0xdd, 0x80, 0xc6, 0xf5, 0xd3, 0xfe, 0x0a, 0xad, 0x1c, 0xbd, 0xe1, 0xea, - 0x61, 0x65, 0xca, 0xf0, 0x2c, 0x64, 0xd2, 0x67, 0x83, 0x39, 0x3a, 0xad, 0xd3, 0xda, 0x66, 0xbb, - 0xa3, 0x6b, 0x67, 0xc1, 0x92, 0x54, 0x3d, 0xa4, 0xfb, 0x2c, 0x64, 0xd4, 0x43, 0x83, 0xdb, 0x6c, - 0x52, 0xa5, 0x15, 0x99, 0xd5, 0x1c, 0x77, 0xb6, 0x67, 0x9b, 0x74, 0x24, 0x40, 0x76, 0x67, 0x5b, - 0x3d, 0x69, 0xed, 0x56, 0x36, 0x4b, 0x5e, 0xf5, 0xb3, 0x3b, 0xc8, 0x31, 0xaf, 0x5a, 0x15, 0x19, - 0xe9, 0x5b, 0x3d, 0x69, 0xed, 0xf5, 0x4f, 0xa3, 0x8f, 0xdb, 0x5e, 0xf5, 0x42, 0xb4, 0xdd, 0x69, - 0x0a, 0xac, 0x45, 0x4f, 0xfb, 0x2b, 0xd8, 0x2d, 0xcd, 0x57, 0x49, 0x29, 0x45, 0xb1, 0x1c, 0x5d, - 0x89, 0x9b, 0xe6, 0x42, 0xbd, 0x3f, 0x5b, 0x35, 0x30, 0x74, 0x08, 0x62, 0x4b, 0x83, 0x93, 0x2d, - 0x57, 0xf6, 0xe2, 0x7d, 0x49, 0xb8, 0x72, 0x88, 0x0e, 0x57, 0x3e, 0x69, 0x63, 0x55, 0x53, 0x2b, - 0xfb, 0x96, 0xc0, 0x1a, 0x5e, 0xd4, 0xf6, 0x9b, 0x02, 0xeb, 0xdd, 0xa0, 0xcd, 0x58, 0xb4, 0x78, - 0x2f, 0xb9, 0xbc, 0x34, 0x75, 0xc2, 0x4b, 0xea, 0x22, 0x44, 0xc6, 0x42, 0xa0, 0x36, 0xe9, 0xde, - 0x4f, 0x52, 0xae, 0x4e, 0xf4, 0x5f, 0x5f, 0x5e, 0xa6, 0x82, 0x4d, 0x40, 0xd2, 0x5d, 0x89, 0x87, - 0xae, 0x9c, 0x48, 0xba, 0x31, 0xce, 0x3e, 0x23, 0xae, 0xa4, 0x67, 0x3c, 0x16, 0x59, 0x9c, 0xa4, - 0xf0, 0x02, 0xa0, 0xd2, 0x34, 0x42, 0xe2, 0x19, 0x71, 0x0b, 0xb2, 0x0b, 0x63, 0x25, 0xaa, 0xa6, - 0x7d, 0x53, 0xfe, 0x47, 0x6d, 0x45, 0x47, 0x4c, 0x2c, 0x8c, 0x08, 0x66, 0xf7, 0x9e, 0x95, 0xf0, - 0x3c, 0x57, 0xc6, 0xef, 0xb5, 0xb5, 0x6a, 0x09, 0xb1, 0xf7, 0xf4, 0x09, 0xbb, 0x87, 0xaa, 0x7e, - 0xdf, 0x13, 0x37, 0x99, 0x32, 0xfa, 0xa0, 0xad, 0xd2, 0xc8, 0x88, 0x3d, 0x14, 0x64, 0xb4, 0xe1, - 0x9f, 0x44, 0xff, 0x5f, 0x19, 0x2e, 0x44, 0x3e, 0xb8, 0x83, 0x28, 0x14, 0xce, 0x5d, 0xbd, 0xbb, - 0xa4, 0xdc, 0x5e, 0x39, 0x35, 0x63, 0xe3, 0xbc, 0x64, 0x53, 0x78, 0xe5, 0xd4, 0xf6, 0xb8, 0x92, - 0x12, 0x57, 0x4e, 0xdb, 0x94, 0x3f, 0x2a, 0x4e, 0xc4, 0x44, 0x5b, 0x47, 0x6a, 0x68, 0x84, 0xa1, - 0x51, 0xe1, 0x42, 0x36, 0x99, 0x39, 0x61, 0x8b, 0x64, 0x6a, 0x16, 0x9c, 0x3a, 0x6e, 0x95, 0x20, - 0x99, 0xb1, 0xcc, 0xd0, 0x81, 0x88, 0x64, 0x86, 0x84, 0xb5, 0xcf, 0x7f, 0x5e, 0x89, 0xee, 0x59, - 0xe6, 0xa0, 0x39, 0xad, 0x3b, 0xcc, 0x2e, 0x45, 0x95, 0xfa, 0x1c, 0x25, 0xd9, 0x75, 0x39, 0xf8, - 0x82, 0x32, 0x89, 0xf3, 0xa6, 0x28, 0x5f, 0xde, 0x5a, 0xcf, 0x66, 0xad, 0xcd, 0x51, 0x96, 0x7d, - 0x9e, 0x5d, 0x6b, 0x80, 0xac, 0xd5, 0x9c, 0x78, 0x41, 0x8e, 0xc8, 0x5a, 0x43, 0xbc, 0xed, 0x62, - 0xe3, 0x3c, 0x15, 0x19, 0xec, 0x62, 0x6b, 0xa1, 0x12, 0x12, 0x5d, 0xdc, 0x82, 0x6c, 0x3c, 0x6e, - 0x44, 0xf5, 0xa9, 0xcb, 0x4e, 0x9a, 0x82, 0x78, 0x6c, 0x54, 0x0d, 0x40, 0xc4, 0x63, 0x14, 0xd4, - 0x7e, 0xce, 0xa2, 0xef, 0x54, 0x4d, 0x7a, 0x5a, 0xf0, 0x45, 0xc2, 0xe1, 0xd5, 0x0b, 0x47, 0x42, - 0xcc, 0x7f, 0x9f, 0xb0, 0x33, 0xeb, 0x3c, 0x2b, 0xf3, 0x94, 0x95, 0x57, 0xfa, 0x61, 0xbc, 0x5f, - 0xe7, 0x46, 0x08, 0x1f, 0xc7, 0x3f, 0xea, 0xa0, 0x6c, 0x50, 0x6f, 0x64, 0x26, 0xc4, 0xac, 0xe2, - 0xaa, 0xad, 0x30, 0xb3, 0xd6, 0xc9, 0xd9, 0x13, 0xef, 0x03, 0x96, 0xa6, 0xbc, 0x58, 0x36, 0xb2, - 0x63, 0x96, 0x25, 0x97, 0xbc, 0x94, 0xe0, 0xc4, 0x5b, 0x53, 0x43, 0x88, 0x11, 0x27, 0xde, 0x01, - 0xdc, 0x66, 0xf3, 0xc0, 0xf3, 0x61, 0x36, 0xe1, 0xef, 0x40, 0x36, 0x0f, 0xed, 0x28, 0x86, 0xc8, - 0xe6, 0x29, 0xd6, 0x9e, 0xfc, 0xbe, 0x4c, 0x45, 0x7c, 0xad, 0x97, 0x00, 0xbf, 0x83, 0x95, 0x04, - 0xae, 0x01, 0x0f, 0x42, 0x88, 0x5d, 0x04, 0x94, 0xe0, 0x8c, 0xe7, 0x29, 0x8b, 0xe1, 0xfd, 0x9b, - 0x5a, 0x47, 0xcb, 0x88, 0x45, 0x00, 0x32, 0xa0, 0xb8, 0xfa, 0x5e, 0x0f, 0x56, 0x5c, 0x70, 0xad, - 0xe7, 0x41, 0x08, 0xb1, 0xcb, 0xa0, 0x12, 0x8c, 0xf2, 0x34, 0x91, 0x60, 0x1a, 0xd4, 0x1a, 0x4a, - 0x42, 0x4c, 0x03, 0x9f, 0x00, 0x26, 0x8f, 0x79, 0x31, 0xe5, 0xa8, 0x49, 0x25, 0x09, 0x9a, 0x6c, - 0x08, 0x7b, 0xc9, 0xb4, 0xae, 0xbb, 0xc8, 0x97, 0xe0, 0x92, 0xa9, 0xae, 0x96, 0xc8, 0x97, 0xc4, - 0x25, 0x53, 0x0f, 0x00, 0x45, 0x3c, 0x65, 0xa5, 0xc4, 0x8b, 0xa8, 0x24, 0xc1, 0x22, 0x36, 0x84, - 0x5d, 0xa3, 0xeb, 0x22, 0xce, 0x25, 0x58, 0xa3, 0x75, 0x01, 0x9c, 0x27, 0xd0, 0x77, 0x49, 0xb9, - 0x8d, 0x24, 0x75, 0xaf, 0x70, 0xb9, 0x9f, 0xf0, 0x74, 0x52, 0x82, 0x48, 0xa2, 0xdb, 0xbd, 0x91, - 0x12, 0x91, 0xa4, 0x4d, 0x81, 0xa1, 0xa4, 0xcf, 0xc7, 0xb1, 0xda, 0x81, 0xa3, 0xf1, 0x07, 0x21, - 0xc4, 0xc6, 0xa7, 0xa6, 0xd0, 0xbb, 0xac, 0x28, 0x92, 0x6a, 0xf1, 0x5f, 0xc5, 0x0b, 0xd4, 0xc8, - 0x89, 0xf8, 0x84, 0x71, 0x60, 0x7a, 0x35, 0x81, 0x1b, 0x2b, 0x18, 0x0c, 0xdd, 0x9f, 0x06, 0x19, - 0x9b, 0x71, 0x2a, 0x89, 0xf3, 0x08, 0x15, 0x6b, 0x4d, 0xe4, 0x09, 0xea, 0x6a, 0x17, 0xe6, 0xbc, - 0x04, 0x62, 0x5c, 0x1c, 0x8b, 0x05, 0x1f, 0x8b, 0x57, 0xef, 0x92, 0x52, 0x26, 0xd9, 0x54, 0xaf, - 0xdc, 0xcf, 0x09, 0x4b, 0x18, 0x4c, 0xbc, 0x04, 0xd2, 0xa9, 0x64, 0x13, 0x08, 0x50, 0x96, 0x13, - 0x7e, 0x83, 0x26, 0x10, 0xd0, 0xa2, 0xe1, 0x88, 0x04, 0x22, 0xc4, 0xdb, 0x73, 0x14, 0xe3, 0x5c, - 0xbf, 0x88, 0x3b, 0x16, 0x4d, 0x2e, 0x47, 0x59, 0x83, 0x20, 0xb1, 0x95, 0x0d, 0x2a, 0xd8, 0xfd, - 0xa5, 0xf1, 0x6f, 0xa7, 0xd8, 0x3a, 0x61, 0xa7, 0x3d, 0xcd, 0x1e, 0xf7, 0x20, 0x11, 0x57, 0xf6, - 0x1e, 0x00, 0xe5, 0xaa, 0x7d, 0x0d, 0xe0, 0x71, 0x0f, 0xd2, 0x39, 0x93, 0x71, 0xab, 0xf5, 0x92, - 0xc5, 0xd7, 0xd3, 0x42, 0xcc, 0xb3, 0xc9, 0xae, 0x48, 0x45, 0x01, 0xce, 0x64, 0xbc, 0x52, 0x03, - 0x94, 0x38, 0x93, 0xe9, 0x50, 0xb1, 0x19, 0x9c, 0x5b, 0x8a, 0x9d, 0x34, 0x99, 0xc2, 0x1d, 0xb5, - 0x67, 0x48, 0x01, 0x44, 0x06, 0x87, 0x82, 0xc8, 0x20, 0xaa, 0x77, 0xdc, 0x32, 0x89, 0x59, 0x5a, - 0xfb, 0xdb, 0xa6, 0xcd, 0x78, 0x60, 0xe7, 0x20, 0x42, 0x14, 0x90, 0x7a, 0x8e, 0xe7, 0x45, 0x76, - 0x98, 0x49, 0x41, 0xd6, 0xb3, 0x01, 0x3a, 0xeb, 0xe9, 0x80, 0x20, 0xac, 0x8e, 0xf9, 0xbb, 0xaa, - 0x34, 0xd5, 0x3f, 0x58, 0x58, 0xad, 0x7e, 0x1f, 0x6a, 0x79, 0x28, 0xac, 0x02, 0x0e, 0x54, 0x46, - 0x3b, 0xa9, 0x07, 0x4c, 0x40, 0xdb, 0x1f, 0x26, 0xeb, 0xdd, 0x20, 0xee, 0x67, 0x24, 0x97, 0x29, - 0x0f, 0xf9, 0x51, 0x40, 0x1f, 0x3f, 0x0d, 0x68, 0x8f, 0x5b, 0xbc, 0xfa, 0x5c, 0xf1, 0xf8, 0xba, - 0x75, 0xad, 0xc9, 0x2f, 0x68, 0x8d, 0x10, 0xc7, 0x2d, 0x04, 0x8a, 0x77, 0xd1, 0x61, 0x2c, 0xb2, - 0x50, 0x17, 0x55, 0xf2, 0x3e, 0x5d, 0xa4, 0x39, 0xbb, 0xf9, 0x35, 0x52, 0x3d, 0x32, 0xeb, 0x6e, - 0xda, 0x20, 0x2c, 0xb8, 0x10, 0xb1, 0xf9, 0x25, 0x61, 0x9b, 0x93, 0x43, 0x9f, 0xc7, 0xed, 0x3b, - 0xdf, 0x2d, 0x2b, 0xc7, 0xf4, 0x9d, 0x6f, 0x8a, 0xa5, 0x2b, 0x59, 0x8f, 0x91, 0x0e, 0x2b, 0xfe, - 0x38, 0xd9, 0xec, 0x07, 0xdb, 0x2d, 0x8f, 0xe7, 0x73, 0x37, 0xe5, 0xac, 0xa8, 0xbd, 0x6e, 0x05, - 0x0c, 0x59, 0x8c, 0xd8, 0xf2, 0x04, 0x70, 0x10, 0xc2, 0x3c, 0xcf, 0xbb, 0x22, 0x93, 0x3c, 0x93, - 0x58, 0x08, 0xf3, 0x8d, 0x69, 0x30, 0x14, 0xc2, 0x28, 0x05, 0x30, 0x6e, 0xd5, 0x79, 0x10, 0x97, - 0x27, 0x6c, 0x86, 0x66, 0x6c, 0xf5, 0x59, 0x4f, 0x2d, 0x0f, 0x8d, 0x5b, 0xc0, 0x39, 0x0f, 0xf9, - 0x5c, 0x2f, 0x63, 0x56, 0x4c, 0xcd, 0xe9, 0xc6, 0x64, 0xf0, 0x94, 0xb6, 0xe3, 0x93, 0xc4, 0x43, - 0xbe, 0xb0, 0x06, 0x08, 0x3b, 0x87, 0x33, 0x36, 0x35, 0x35, 0x45, 0x6a, 0xa0, 0xe4, 0xad, 0xaa, - 0xae, 0x77, 0x83, 0xc0, 0xcf, 0x9b, 0x64, 0xc2, 0x45, 0xc0, 0x8f, 0x92, 0xf7, 0xf1, 0x03, 0x41, - 0x90, 0xbd, 0x55, 0xf5, 0xae, 0x77, 0x74, 0x3b, 0xd9, 0x44, 0xef, 0x63, 0x87, 0x44, 0xf3, 0x00, - 0x2e, 0x94, 0xbd, 0x11, 0x3c, 0x98, 0xa3, 0xcd, 0x01, 0x6d, 0x68, 0x8e, 0x9a, 0xf3, 0xd7, 0x3e, - 0x73, 0x14, 0x83, 0xb5, 0xcf, 0x9f, 0xe9, 0x39, 0xba, 0xc7, 0x24, 0xab, 0xf2, 0xf6, 0x37, 0x09, - 0xbf, 0xd1, 0x1b, 0x61, 0xa4, 0xbe, 0x0d, 0x35, 0x54, 0xaf, 0x2a, 0x82, 0x5d, 0xf1, 0x76, 0x6f, - 0x3e, 0xe0, 0x5b, 0xef, 0x10, 0x3a, 0x7d, 0x83, 0xad, 0xc2, 0x76, 0x6f, 0x3e, 0xe0, 0x5b, 0xbf, - 0x03, 0xdd, 0xe9, 0x1b, 0xbc, 0x08, 0xbd, 0xdd, 0x9b, 0xd7, 0xbe, 0xff, 0xb2, 0x99, 0xb8, 0xae, - 0xf3, 0x2a, 0x0f, 0x8b, 0x65, 0xb2, 0xe0, 0x58, 0x3a, 0xe9, 0xdb, 0x33, 0x68, 0x28, 0x9d, 0xa4, - 0x55, 0x9c, 0xef, 0xf2, 0x60, 0xa5, 0x38, 0x15, 0x65, 0xa2, 0x1e, 0xd2, 0x3f, 0xef, 0x61, 0xb4, - 0x81, 0x43, 0x9b, 0xa6, 0x90, 0x92, 0x7d, 0xdc, 0xe8, 0xa1, 0xf6, 0x16, 0xf3, 0x66, 0xc0, 0x5e, - 0xfb, 0x32, 0xf3, 0x56, 0x4f, 0xda, 0x3e, 0xf8, 0xf3, 0x18, 0xf7, 0x89, 0x63, 0xa8, 0x57, 0xd1, - 0x87, 0x8e, 0x4f, 0xfb, 0x2b, 0x68, 0xf7, 0x7f, 0xdd, 0xec, 0x2b, 0xa0, 0x7f, 0x3d, 0x09, 0x9e, - 0xf5, 0xb1, 0x08, 0x26, 0xc2, 0xf3, 0x5b, 0xe9, 0xe8, 0x82, 0xfc, 0x7d, 0xb3, 0x81, 0x6e, 0x50, - 0xf5, 0x2e, 0x87, 0x7a, 0xf7, 0x4f, 0xcf, 0x89, 0x50, 0xb7, 0x5a, 0x18, 0xce, 0x8c, 0x17, 0xb7, - 0xd4, 0x72, 0xbe, 0xd2, 0xe4, 0xc1, 0xfa, 0x9d, 0x43, 0xa7, 0x3c, 0x21, 0xcb, 0x0e, 0x0d, 0x0b, - 0xf4, 0xc5, 0x6d, 0xd5, 0xa8, 0xb9, 0xe2, 0xc0, 0xea, 0xab, 0x0c, 0xcf, 0x7b, 0x1a, 0xf6, 0xbe, - 0xd3, 0xf0, 0xf9, 0xed, 0x94, 0x74, 0x59, 0xfe, 0x63, 0x25, 0x7a, 0xe4, 0xb1, 0xf6, 0x79, 0x02, - 0x38, 0xf5, 0xf8, 0x71, 0xc0, 0x3e, 0xa5, 0x64, 0x0a, 0xf7, 0xbb, 0xbf, 0x9c, 0xb2, 0xfd, 0xa4, - 0x91, 0xa7, 0xb2, 0x9f, 0xa4, 0x92, 0x17, 0xed, 0x4f, 0x1a, 0xf9, 0x76, 0x6b, 0x6a, 0x48, 0x7f, - 0xd2, 0x28, 0x80, 0x3b, 0x9f, 0x34, 0x42, 0x3c, 0xa3, 0x9f, 0x34, 0x42, 0xad, 0x05, 0x3f, 0x69, - 0x14, 0xd6, 0xa0, 0xc2, 0x7b, 0x53, 0x84, 0xfa, 0xdc, 0xba, 0x97, 0x45, 0xff, 0x18, 0xfb, 0xd9, - 0x6d, 0x54, 0x88, 0x05, 0xae, 0xe6, 0xd4, 0x3d, 0xb7, 0x1e, 0x6d, 0xea, 0xdd, 0x75, 0xdb, 0xee, - 0xcd, 0x6b, 0xdf, 0x3f, 0xd5, 0xbb, 0x1b, 0x13, 0xce, 0x45, 0xa1, 0x3e, 0x67, 0xb5, 0x11, 0x0a, - 0xcf, 0x95, 0x05, 0xb7, 0xe7, 0x37, 0xfb, 0xc1, 0x44, 0x75, 0x2b, 0x42, 0x77, 0xfa, 0xb0, 0xcb, - 0x10, 0xe8, 0xf2, 0xed, 0xde, 0x3c, 0xb1, 0x8c, 0xd4, 0xbe, 0xeb, 0xde, 0xee, 0x61, 0xcc, 0xef, - 0xeb, 0xa7, 0xfd, 0x15, 0xb4, 0xfb, 0x85, 0x4e, 0x1b, 0x5d, 0xf7, 0xaa, 0x9f, 0xb7, 0xba, 0x4c, - 0x8d, 0xbc, 0x6e, 0x1e, 0xf6, 0xc5, 0x43, 0x09, 0x84, 0xbb, 0x84, 0x76, 0x25, 0x10, 0xe8, 0x32, - 0xfa, 0xf9, 0xed, 0x94, 0x74, 0x59, 0xfe, 0x69, 0x25, 0xba, 0x4b, 0x96, 0x45, 0x8f, 0x83, 0x2f, - 0xfa, 0x5a, 0x06, 0xe3, 0xe1, 0xcb, 0x5b, 0xeb, 0xe9, 0x42, 0xfd, 0xeb, 0x4a, 0x74, 0x2f, 0x50, - 0xa8, 0x7a, 0x80, 0xdc, 0xc2, 0xba, 0x3f, 0x50, 0x7e, 0x78, 0x7b, 0x45, 0x6a, 0xb9, 0x77, 0xf1, - 0x51, 0xfb, 0x63, 0x3c, 0x01, 0xdb, 0x23, 0xfa, 0x63, 0x3c, 0xdd, 0x5a, 0xf0, 0x90, 0x87, 0x5d, - 0x34, 0x9b, 0x2e, 0xf4, 0x90, 0x47, 0xdd, 0x50, 0x03, 0x7b, 0x8e, 0xb5, 0x4e, 0x0e, 0x73, 0xf2, - 0xea, 0x5d, 0xce, 0xb2, 0x09, 0xed, 0xa4, 0x96, 0x77, 0x3b, 0x31, 0x1c, 0x3c, 0x1c, 0xab, 0xa4, - 0x67, 0xa2, 0xd9, 0x48, 0x3d, 0xa6, 0xf4, 0x0d, 0x12, 0x3c, 0x1c, 0x6b, 0xa1, 0x84, 0x37, 0x9d, - 0x35, 0x86, 0xbc, 0x81, 0x64, 0xf1, 0x49, 0x1f, 0x14, 0xa4, 0xe8, 0xc6, 0x9b, 0x39, 0x73, 0xdf, - 0x0c, 0x59, 0x69, 0x9d, 0xbb, 0x6f, 0xf5, 0xa4, 0x09, 0xb7, 0x23, 0x2e, 0xbf, 0xe2, 0x6c, 0xc2, - 0x8b, 0xa0, 0x5b, 0x43, 0xf5, 0x72, 0xeb, 0xd2, 0x98, 0xdb, 0x5d, 0x91, 0xce, 0x67, 0x99, 0xee, - 0x4c, 0xd2, 0xad, 0x4b, 0x75, 0xbb, 0x05, 0x34, 0x3c, 0x16, 0xb4, 0x6e, 0x55, 0x7a, 0xf9, 0x24, - 0x6c, 0xc6, 0xcb, 0x2a, 0x37, 0x7a, 0xb1, 0x74, 0x3d, 0xf5, 0x30, 0xea, 0xa8, 0x27, 0x18, 0x49, - 0x5b, 0x3d, 0x69, 0x78, 0x3e, 0xe7, 0xb8, 0x35, 0xe3, 0x69, 0xbb, 0xc3, 0x56, 0x6b, 0x48, 0x3d, - 0xed, 0xaf, 0x00, 0x4f, 0x43, 0xf5, 0xa8, 0x3a, 0x4a, 0x4a, 0xb9, 0x9f, 0xa4, 0xe9, 0x60, 0x23, - 0x30, 0x4c, 0x1a, 0x28, 0x78, 0x1a, 0x8a, 0xc0, 0xc4, 0x48, 0x6e, 0x4e, 0x0f, 0xb3, 0x41, 0x97, - 0x1d, 0x45, 0xf5, 0x1a, 0xc9, 0x2e, 0x0d, 0x4e, 0xb4, 0x9c, 0xa6, 0x36, 0xb5, 0x1d, 0x86, 0x1b, - 0xae, 0x55, 0xe1, 0xed, 0xde, 0x3c, 0x78, 0xdc, 0xae, 0x28, 0xb5, 0xb2, 0x3c, 0xa4, 0x4c, 0x78, - 0x2b, 0xc9, 0xa3, 0x0e, 0x0a, 0x9c, 0x0a, 0xd6, 0xd3, 0xe8, 0x6d, 0x32, 0x99, 0x72, 0x89, 0x3e, - 0x29, 0x72, 0x81, 0xe0, 0x93, 0x22, 0x00, 0x82, 0xae, 0xab, 0x7f, 0x37, 0xc7, 0xa1, 0x87, 0x13, - 0xac, 0xeb, 0xb4, 0xb2, 0x43, 0x85, 0xba, 0x0e, 0xa5, 0x41, 0x34, 0x30, 0x6e, 0xf5, 0xeb, 0xf8, - 0x4f, 0x42, 0x66, 0xc0, 0x3b, 0xf9, 0x1b, 0xbd, 0x58, 0xb0, 0xa2, 0x58, 0x87, 0xc9, 0x2c, 0x91, - 0xd8, 0x8a, 0xe2, 0xd8, 0xa8, 0x90, 0xd0, 0x8a, 0xd2, 0x46, 0xa9, 0xea, 0x55, 0x39, 0xc2, 0xe1, - 0x24, 0x5c, 0xbd, 0x9a, 0xe9, 0x57, 0x3d, 0xc3, 0xb6, 0x1e, 0x6c, 0x66, 0x66, 0xc8, 0xc8, 0x2b, - 0xbd, 0x59, 0x46, 0xc6, 0xb6, 0x7a, 0x4d, 0x13, 0x82, 0xa1, 0xa8, 0x43, 0x29, 0xc0, 0x03, 0xfb, - 0x8a, 0x6b, 0x9e, 0xbd, 0xe6, 0x39, 0x67, 0x05, 0xcb, 0x62, 0x74, 0x73, 0xaa, 0x0c, 0xb6, 0xc8, - 0xd0, 0xe6, 0x94, 0xd4, 0x00, 0x8f, 0xcd, 0xfd, 0x17, 0x2c, 0x91, 0xa9, 0x60, 0xde, 0x64, 0xf4, - 0xdf, 0xaf, 0x7c, 0xdc, 0x83, 0x84, 0x8f, 0xcd, 0x1b, 0xc0, 0x1c, 0x7c, 0xd7, 0x4e, 0x3f, 0x0b, - 0x98, 0xf2, 0xd1, 0xd0, 0x46, 0x98, 0x56, 0x01, 0x83, 0xda, 0x24, 0xb8, 0x5c, 0xfe, 0x84, 0x2f, - 0xb1, 0x41, 0x6d, 0xf3, 0x53, 0x85, 0x84, 0x06, 0x75, 0x1b, 0x05, 0x79, 0xa6, 0xbb, 0x0f, 0x5a, - 0x0d, 0xe8, 0xbb, 0x5b, 0x9f, 0xb5, 0x4e, 0x0e, 0xcc, 0x9c, 0xbd, 0x64, 0xe1, 0x3d, 0x27, 0x40, - 0x0a, 0xba, 0x97, 0x2c, 0xf0, 0xc7, 0x04, 0x1b, 0xbd, 0x58, 0xf8, 0x48, 0x9e, 0x49, 0xfe, 0xae, - 0x79, 0x56, 0x8e, 0x14, 0x57, 0xc9, 0x5b, 0x0f, 0xcb, 0xd7, 0xbb, 0x41, 0x7b, 0x01, 0xf6, 0xb4, - 0x10, 0x31, 0x2f, 0x4b, 0xfd, 0x85, 0x42, 0xff, 0x86, 0x91, 0x96, 0x0d, 0xc1, 0xf7, 0x09, 0x1f, - 0x86, 0x21, 0xdb, 0x33, 0x5a, 0x64, 0xbf, 0x7a, 0xb3, 0x8a, 0x6a, 0xb6, 0x3f, 0x78, 0xb3, 0xd6, - 0xc9, 0xd9, 0xe9, 0xa5, 0xa5, 0xee, 0x67, 0x6e, 0xd6, 0x51, 0x75, 0xec, 0x0b, 0x37, 0x8f, 0x7b, - 0x90, 0xda, 0xd5, 0x57, 0xd1, 0xfb, 0x47, 0x62, 0x3a, 0xe2, 0xd9, 0x64, 0xf0, 0x03, 0xff, 0x0a, - 0xad, 0x98, 0x0e, 0xab, 0x9f, 0x8d, 0xd1, 0x3b, 0x94, 0xd8, 0x5e, 0x02, 0xdc, 0xe3, 0x17, 0xf3, - 0xe9, 0x48, 0x32, 0x09, 0x2e, 0x01, 0xaa, 0xdf, 0x87, 0x95, 0x80, 0xb8, 0x04, 0xe8, 0x01, 0xc0, - 0xde, 0xb8, 0xe0, 0x1c, 0xb5, 0x57, 0x09, 0x82, 0xf6, 0x34, 0x60, 0xb3, 0x08, 0x63, 0xaf, 0x4a, - 0xd4, 0xe1, 0xa5, 0x3d, 0xab, 0xa3, 0xa4, 0x44, 0x16, 0xd1, 0xa6, 0xec, 0xe0, 0xae, 0xab, 0xaf, - 0xbe, 0x3a, 0x32, 0x9f, 0xcd, 0x58, 0xb1, 0x04, 0x83, 0x5b, 0xd7, 0xd2, 0x01, 0x88, 0xc1, 0x8d, - 0x82, 0x76, 0xd6, 0x36, 0xcd, 0x1c, 0x5f, 0x1f, 0x88, 0x42, 0xcc, 0x65, 0x92, 0x71, 0xf8, 0xe5, - 0x09, 0xd3, 0xa0, 0x2e, 0x43, 0xcc, 0x5a, 0x8a, 0xb5, 0x59, 0xae, 0x22, 0xea, 0xfb, 0x84, 0xea, - 0xbb, 0xc5, 0xa5, 0x14, 0x05, 0x7c, 0x9e, 0x58, 0x5b, 0x81, 0x10, 0x91, 0xe5, 0x92, 0x30, 0xe8, - 0xfb, 0xd3, 0x24, 0x9b, 0xa2, 0x7d, 0x7f, 0xea, 0x7e, 0xf5, 0xf3, 0x1e, 0x0d, 0xd8, 0x09, 0x55, - 0x37, 0x5a, 0x3d, 0x01, 0xf4, 0xbb, 0x9c, 0x68, 0xa3, 0xbb, 0x04, 0x31, 0xa1, 0x70, 0x12, 0xb8, - 0x7a, 0x9d, 0xf3, 0x8c, 0x4f, 0x9a, 0x5b, 0x73, 0x98, 0x2b, 0x8f, 0x08, 0xba, 0x82, 0xa4, 0x8d, - 0x45, 0x4a, 0x7e, 0x36, 0xcf, 0x4e, 0x0b, 0x71, 0x99, 0xa4, 0xbc, 0x00, 0xb1, 0xa8, 0x56, 0x77, - 0xe4, 0x44, 0x2c, 0xc2, 0x38, 0x7b, 0xfd, 0x42, 0x49, 0xbd, 0x8f, 0x6f, 0x8f, 0x0b, 0x16, 0xc3, - 0xeb, 0x17, 0xb5, 0x8d, 0x36, 0x46, 0x9c, 0x0c, 0x06, 0x70, 0x27, 0xd1, 0xa9, 0x5d, 0x67, 0x4b, - 0x35, 0x3e, 0xf4, 0xbb, 0x84, 0xea, 0x5b, 0x98, 0x25, 0x48, 0x74, 0xb4, 0x39, 0x8c, 0x24, 0x12, - 0x9d, 0xb0, 0x86, 0x5d, 0x4a, 0x14, 0x77, 0xa2, 0xaf, 0x15, 0x81, 0xa5, 0xa4, 0xb6, 0xd1, 0x08, - 0x89, 0xa5, 0xa4, 0x05, 0x81, 0x80, 0xd4, 0x4c, 0x83, 0x29, 0x1a, 0x90, 0x8c, 0x34, 0x18, 0x90, - 0x5c, 0xca, 0x06, 0x8a, 0xc3, 0x2c, 0x91, 0x09, 0x4b, 0x47, 0x5c, 0x9e, 0xb2, 0x82, 0xcd, 0xb8, - 0xe4, 0x05, 0x0c, 0x14, 0x1a, 0x19, 0x7a, 0x0c, 0x11, 0x28, 0x28, 0x56, 0x3b, 0xfc, 0xbd, 0xe8, - 0xc3, 0x6a, 0xdd, 0xe7, 0x99, 0xfe, 0x2b, 0x1e, 0xaf, 0xd4, 0x9f, 0xff, 0x19, 0x7c, 0x64, 0x6c, - 0x8c, 0x64, 0xc1, 0xd9, 0xac, 0xb1, 0xfd, 0x81, 0xf9, 0x5d, 0x81, 0x4f, 0x57, 0xaa, 0xf1, 0x7c, - 0x22, 0x64, 0x72, 0x59, 0x6d, 0xb3, 0xf5, 0x1b, 0x44, 0x60, 0x3c, 0xbb, 0xe2, 0x61, 0xe0, 0x5b, - 0x14, 0x18, 0x67, 0xe3, 0xb4, 0x2b, 0x3d, 0xe3, 0x79, 0x0a, 0xe3, 0xb4, 0xa7, 0xad, 0x00, 0x22, - 0x4e, 0xa3, 0xa0, 0x9d, 0x9c, 0xae, 0x78, 0xcc, 0xc3, 0x95, 0x19, 0xf3, 0x7e, 0x95, 0x19, 0x7b, - 0x2f, 0x65, 0xa4, 0xd1, 0x87, 0xc7, 0x7c, 0x76, 0xc1, 0x8b, 0xf2, 0x2a, 0xc9, 0x0f, 0xaa, 0x84, - 0x8b, 0xc9, 0x39, 0x7c, 0x6d, 0xd1, 0x12, 0x43, 0x83, 0x10, 0x59, 0x29, 0x81, 0xda, 0x95, 0xc0, - 0x02, 0x87, 0xe5, 0x09, 0x9b, 0x71, 0xf5, 0x65, 0x0d, 0xb0, 0x12, 0x38, 0x46, 0x1c, 0x88, 0x58, - 0x09, 0x48, 0xd8, 0x79, 0xbf, 0xcb, 0x32, 0x67, 0x7c, 0x5a, 0x8d, 0xb0, 0xe2, 0x94, 0x2d, 0x67, - 0x3c, 0x93, 0xda, 0x24, 0x38, 0x93, 0x77, 0x4c, 0xe2, 0x3c, 0x71, 0x26, 0xdf, 0x47, 0xcf, 0x09, - 0x4d, 0x5e, 0xc3, 0x9f, 0x8a, 0x42, 0xd6, 0x7f, 0xa3, 0xe7, 0xbc, 0x48, 0x41, 0x68, 0xf2, 0x1b, - 0xd5, 0x23, 0x89, 0xd0, 0x14, 0xd6, 0x70, 0xbe, 0x3e, 0xef, 0x95, 0xe1, 0x0d, 0x2f, 0xcc, 0x38, - 0x79, 0x35, 0x63, 0x49, 0xaa, 0x47, 0xc3, 0x8f, 0x02, 0xb6, 0x09, 0x1d, 0xe2, 0xeb, 0xf3, 0x7d, - 0x75, 0x9d, 0xef, 0xf5, 0x87, 0x4b, 0x08, 0x1e, 0x11, 0x74, 0xd8, 0x27, 0x1e, 0x11, 0x74, 0x6b, - 0xd9, 0x9d, 0xbb, 0x65, 0x15, 0xb7, 0x54, 0xc4, 0xae, 0x98, 0xc0, 0xf3, 0x42, 0xc7, 0x26, 0x00, - 0x89, 0x9d, 0x7b, 0x50, 0xc1, 0xa6, 0x06, 0x16, 0xdb, 0x4f, 0x32, 0x96, 0x26, 0x3f, 0x83, 0x69, - 0xbd, 0x63, 0xa7, 0x21, 0x88, 0xd4, 0x00, 0x27, 0x31, 0x57, 0x07, 0x5c, 0x8e, 0x93, 0x2a, 0xf4, - 0xaf, 0x07, 0xda, 0x4d, 0x11, 0xdd, 0xae, 0x1c, 0xd2, 0xf9, 0x46, 0x2b, 0x6c, 0xd6, 0x9d, 0x3c, - 0x1f, 0x55, 0xab, 0xea, 0x19, 0x8f, 0x79, 0x92, 0xcb, 0xc1, 0x8b, 0x70, 0x5b, 0x01, 0x9c, 0xb8, - 0x68, 0xd1, 0x43, 0xcd, 0x79, 0x7c, 0x5f, 0xc5, 0x92, 0x51, 0xfd, 0xc7, 0xeb, 0xce, 0x4b, 0x5e, - 0xe8, 0x44, 0xe3, 0x80, 0x4b, 0x30, 0x3b, 0x1d, 0x6e, 0xe8, 0x80, 0x55, 0x45, 0x89, 0xd9, 0x19, - 0xd6, 0xb0, 0x87, 0x7d, 0x0e, 0x77, 0xc6, 0x4b, 0x91, 0x2e, 0xb8, 0xba, 0x6f, 0xb8, 0x49, 0x1a, - 0x73, 0x28, 0xe2, 0xb0, 0x8f, 0xa6, 0x6d, 0xb6, 0xd6, 0x76, 0xbb, 0x93, 0x2d, 0x0f, 0xe1, 0x95, - 0x09, 0xc4, 0x92, 0xc2, 0x88, 0x6c, 0x2d, 0x80, 0x3b, 0x87, 0xe1, 0x85, 0x60, 0x93, 0x98, 0x95, - 0xf2, 0x94, 0x2d, 0x53, 0xc1, 0x26, 0x6a, 0x5d, 0x87, 0x87, 0xe1, 0x0d, 0x33, 0x74, 0x21, 0xea, - 0x30, 0x9c, 0x82, 0xdd, 0xec, 0x4c, 0xfd, 0x4d, 0x3e, 0x7d, 0x97, 0x13, 0x66, 0x67, 0xaa, 0xbc, - 0xf0, 0x1e, 0xe7, 0xc3, 0x30, 0x64, 0xdf, 0x41, 0xab, 0x45, 0x2a, 0x0d, 0xb9, 0x87, 0xe9, 0x78, - 0x09, 0xc8, 0xfd, 0x00, 0x61, 0xbf, 0x4b, 0x51, 0xff, 0xde, 0xfc, 0xdd, 0x17, 0xa9, 0xbf, 0x64, - 0xbd, 0x89, 0xe9, 0xba, 0xd0, 0xd0, 0xfd, 0xc0, 0xdd, 0x56, 0x4f, 0xda, 0xa6, 0x99, 0xbb, 0x57, - 0x4c, 0xee, 0x4c, 0x26, 0xc7, 0xbc, 0x44, 0x5e, 0x28, 0xaf, 0x84, 0x43, 0x2b, 0x25, 0xd2, 0xcc, - 0x36, 0x65, 0x07, 0x7a, 0x25, 0x7b, 0x35, 0x49, 0xa4, 0x96, 0x35, 0x37, 0xa4, 0x37, 0xdb, 0x06, - 0xda, 0x14, 0x51, 0x2b, 0x9a, 0xb6, 0xb1, 0xbc, 0x62, 0xc6, 0x62, 0x3a, 0x4d, 0xb9, 0x86, 0xce, - 0x38, 0xab, 0x3f, 0xe4, 0xb7, 0xdd, 0xb6, 0x85, 0x82, 0x44, 0x2c, 0x0f, 0x2a, 0xd8, 0x34, 0xb2, - 0xc2, 0xea, 0x47, 0x52, 0x4d, 0xc3, 0xae, 0xb5, 0xcd, 0x78, 0x00, 0x91, 0x46, 0xa2, 0xa0, 0x7d, - 0xef, 0xad, 0x12, 0x1f, 0xf0, 0xa6, 0x25, 0xe0, 0x27, 0x88, 0x94, 0xb2, 0x23, 0x26, 0xde, 0x7b, - 0x43, 0x30, 0xbb, 0x4f, 0x00, 0x1e, 0x5e, 0x2e, 0x0f, 0x27, 0x70, 0x9f, 0x00, 0xf5, 0x15, 0x43, - 0xec, 0x13, 0x28, 0xd6, 0xef, 0x3a, 0x73, 0xee, 0x75, 0xc4, 0x4a, 0x5b, 0x39, 0xa4, 0xeb, 0x50, - 0x30, 0xd4, 0x75, 0x94, 0x82, 0xdf, 0xa4, 0xee, 0xd1, 0x1a, 0xd2, 0xa4, 0xd8, 0xb9, 0xda, 0x6a, - 0x17, 0x66, 0xe3, 0x92, 0xd9, 0x4f, 0xaa, 0x2b, 0x4b, 0xf8, 0x17, 0xfc, 0x6b, 0x21, 0x11, 0x97, - 0x5a, 0x50, 0x6d, 0xfb, 0xe5, 0xfd, 0xff, 0xfa, 0xe6, 0xce, 0xca, 0x2f, 0xbe, 0xb9, 0xb3, 0xf2, - 0x3f, 0xdf, 0xdc, 0x59, 0xf9, 0xf9, 0xb7, 0x77, 0xde, 0xfb, 0xc5, 0xb7, 0x77, 0xde, 0xfb, 0xef, - 0x6f, 0xef, 0xbc, 0xf7, 0xf5, 0xfb, 0xfa, 0x6f, 0xb5, 0x5e, 0xfc, 0x3f, 0xf5, 0x17, 0x57, 0x9f, - 0xff, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x20, 0x36, 0x1c, 0xcb, 0xcf, 0x75, 0x00, 0x00, + 0x7c, 0x07, 0xbe, 0x03, 0x8f, 0xfb, 0xc8, 0x23, 0x9a, 0x79, 0xe4, 0x4b, 0xa0, 0x8c, 0x8c, 0x8c, + 0xcb, 0xc9, 0x73, 0x22, 0xd3, 0xfb, 0xd4, 0xad, 0x3a, 0xbf, 0x73, 0x4e, 0x5c, 0x4f, 0x9c, 0x88, + 0x8c, 0x4c, 0x47, 0x77, 0xf3, 0x8b, 0xed, 0xbc, 0x10, 0x52, 0x94, 0xdb, 0x25, 0x2f, 0x16, 0x49, + 0xcc, 0x9b, 0x7f, 0x87, 0xea, 0xe7, 0xc1, 0xfb, 0x2c, 0x5b, 0xca, 0x65, 0xce, 0x3f, 0xf9, 0xd8, + 0x92, 0xb1, 0x98, 0xcd, 0x58, 0x36, 0x29, 0x6b, 0xe4, 0x93, 0x8f, 0xac, 0x84, 0x2f, 0x78, 0x26, + 0xf5, 0xef, 0xcf, 0xfe, 0xf3, 0x7f, 0x57, 0xa2, 0x0f, 0x76, 0xd3, 0x84, 0x67, 0x72, 0x57, 0x6b, + 0x0c, 0xbe, 0x8e, 0xbe, 0xbb, 0x93, 0xe7, 0x07, 0x5c, 0xbe, 0xe1, 0x45, 0x99, 0x88, 0x6c, 0xf0, + 0xe9, 0x50, 0x3b, 0x18, 0x9e, 0xe5, 0xf1, 0x70, 0x27, 0xcf, 0x87, 0x56, 0x38, 0x3c, 0xe3, 0x3f, + 0x9d, 0xf3, 0x52, 0x7e, 0xf2, 0x30, 0x0c, 0x95, 0xb9, 0xc8, 0x4a, 0x3e, 0xb8, 0x8c, 0x7e, 0x63, + 0x27, 0xcf, 0x47, 0x5c, 0xee, 0xf1, 0xaa, 0x02, 0x23, 0xc9, 0x24, 0x1f, 0xac, 0xb5, 0x54, 0x7d, + 0xc0, 0xf8, 0x58, 0xef, 0x06, 0xb5, 0x9f, 0x71, 0xf4, 0x9d, 0xca, 0xcf, 0xd5, 0x5c, 0x4e, 0xc4, + 0x4d, 0x36, 0xb8, 0xdf, 0x56, 0xd4, 0x22, 0x63, 0xfb, 0x41, 0x08, 0xd1, 0x56, 0xdf, 0x46, 0xbf, + 0xfa, 0x96, 0xa5, 0x29, 0x97, 0xbb, 0x05, 0xaf, 0x0a, 0xee, 0xeb, 0xd4, 0xa2, 0x61, 0x2d, 0x33, + 0x76, 0x3f, 0x0d, 0x32, 0xda, 0xf0, 0xd7, 0xd1, 0x77, 0x6b, 0xc9, 0x19, 0x8f, 0xc5, 0x82, 0x17, + 0x03, 0x54, 0x4b, 0x0b, 0x89, 0x26, 0x6f, 0x41, 0xd0, 0xf6, 0xae, 0xc8, 0x16, 0xbc, 0x90, 0xb8, + 0x6d, 0x2d, 0x0c, 0xdb, 0xb6, 0x90, 0xb6, 0xfd, 0xb7, 0x2b, 0xd1, 0xf7, 0x77, 0xe2, 0x58, 0xcc, + 0x33, 0x79, 0x24, 0x62, 0x96, 0x1e, 0x25, 0xd9, 0xf5, 0x09, 0xbf, 0xd9, 0xbd, 0xaa, 0xf8, 0x6c, + 0xca, 0x07, 0xcf, 0xfd, 0x56, 0xad, 0xd1, 0xa1, 0x61, 0x87, 0x2e, 0x6c, 0x7c, 0x7f, 0x7e, 0x3b, + 0x25, 0x5d, 0x96, 0x7f, 0x5c, 0x89, 0xee, 0xc0, 0xb2, 0x8c, 0x44, 0xba, 0xe0, 0xb6, 0x34, 0x2f, + 0x3a, 0x0c, 0xfb, 0xb8, 0x29, 0xcf, 0x17, 0xb7, 0x55, 0xd3, 0x25, 0x4a, 0xa3, 0x0f, 0xdd, 0xe1, + 0x32, 0xe2, 0xa5, 0x9a, 0x4e, 0x8f, 0xe9, 0x11, 0xa1, 0x11, 0xe3, 0xf9, 0x49, 0x1f, 0x54, 0x7b, + 0x4b, 0xa2, 0x81, 0xf6, 0x96, 0x8a, 0xd2, 0x38, 0x5b, 0x47, 0x2d, 0x38, 0x84, 0xf1, 0xf5, 0xb8, + 0x07, 0xa9, 0x5d, 0xfd, 0x51, 0xf4, 0x6b, 0x6f, 0x45, 0x71, 0x5d, 0xe6, 0x2c, 0xe6, 0x7a, 0x2a, + 0x3c, 0xf2, 0xb5, 0x1b, 0x29, 0x9c, 0x0d, 0xab, 0x5d, 0x98, 0x33, 0x68, 0x1b, 0xe1, 0xeb, 0x9c, + 0xc3, 0x18, 0x64, 0x15, 0x2b, 0x21, 0x35, 0x68, 0x21, 0xa4, 0x6d, 0x5f, 0x47, 0x03, 0x6b, 0xfb, + 0xe2, 0x8f, 0x79, 0x2c, 0x77, 0x26, 0x13, 0xd8, 0x2b, 0x56, 0x57, 0x11, 0xc3, 0x9d, 0xc9, 0x84, + 0xea, 0x15, 0x1c, 0xd5, 0xce, 0x6e, 0xa2, 0x8f, 0x80, 0xb3, 0xa3, 0xa4, 0x54, 0x0e, 0xb7, 0xc2, + 0x56, 0x34, 0x66, 0x9c, 0x0e, 0xfb, 0xe2, 0xda, 0xf1, 0x9f, 0xaf, 0x44, 0xdf, 0x43, 0x3c, 0x9f, + 0xf1, 0x99, 0x58, 0xf0, 0xc1, 0xd3, 0x6e, 0x6b, 0x35, 0x69, 0xfc, 0x7f, 0x76, 0x0b, 0x0d, 0x64, + 0x98, 0x8c, 0x78, 0xca, 0x63, 0x49, 0x0e, 0x93, 0x5a, 0xdc, 0x39, 0x4c, 0x0c, 0xe6, 0xcc, 0xb0, + 0x46, 0x78, 0xc0, 0xe5, 0xee, 0xbc, 0x28, 0x78, 0x26, 0xc9, 0xbe, 0xb4, 0x48, 0x67, 0x5f, 0x7a, + 0x28, 0x52, 0x9f, 0x03, 0x2e, 0x77, 0xd2, 0x94, 0xac, 0x4f, 0x2d, 0xee, 0xac, 0x8f, 0xc1, 0xb4, + 0x87, 0x38, 0xfa, 0x75, 0xa7, 0xc5, 0xe4, 0x61, 0x76, 0x29, 0x06, 0x74, 0x5b, 0x28, 0xb9, 0xf1, + 0xb1, 0xd6, 0xc9, 0x21, 0xd5, 0x78, 0xf5, 0x2e, 0x17, 0x05, 0xdd, 0x2d, 0xb5, 0xb8, 0xb3, 0x1a, + 0x06, 0xd3, 0x1e, 0xfe, 0x30, 0xfa, 0x40, 0x47, 0xc9, 0x66, 0x3d, 0x7b, 0x88, 0x86, 0x50, 0xb8, + 0xa0, 0x3d, 0xea, 0xa0, 0x5a, 0xe6, 0x8f, 0x93, 0x69, 0x51, 0x45, 0x1f, 0xdc, 0xbc, 0x96, 0x76, + 0x98, 0xb7, 0x94, 0x36, 0x2f, 0xa2, 0xdf, 0xf4, 0xcd, 0xef, 0xb2, 0x2c, 0xe6, 0xe9, 0xe0, 0x49, + 0x48, 0xbd, 0x66, 0x8c, 0xab, 0x8d, 0x5e, 0xac, 0x0d, 0x76, 0x9a, 0xd0, 0xc1, 0xf4, 0x53, 0x54, + 0x1b, 0x84, 0xd2, 0x87, 0x61, 0xa8, 0x65, 0x7b, 0x8f, 0xa7, 0x9c, 0xb4, 0x5d, 0x0b, 0x3b, 0x6c, + 0x1b, 0x48, 0xdb, 0x2e, 0xa2, 0xdf, 0x32, 0xdd, 0x5c, 0xe5, 0x05, 0x4a, 0x5e, 0x2d, 0x3a, 0x1b, + 0x44, 0x3f, 0xba, 0x90, 0xf1, 0xb5, 0xd9, 0x0f, 0x6e, 0xd5, 0x47, 0x47, 0x14, 0xbc, 0x3e, 0x20, + 0x9e, 0x3c, 0x0c, 0x43, 0xda, 0xf6, 0xdf, 0xad, 0x44, 0x3f, 0xd0, 0xb2, 0x57, 0x19, 0xbb, 0x48, + 0xb9, 0x5a, 0xe2, 0x4f, 0xb8, 0xbc, 0x11, 0xc5, 0xf5, 0x68, 0x99, 0xc5, 0x44, 0x3a, 0x83, 0xc3, + 0x1d, 0xe9, 0x0c, 0xa9, 0xe4, 0x64, 0xb0, 0xba, 0xa2, 0x52, 0xe4, 0x30, 0x83, 0x6d, 0x6a, 0x20, + 0x45, 0x4e, 0x65, 0xb0, 0x3e, 0xd2, 0xb2, 0x7a, 0x5c, 0x2d, 0x03, 0xb8, 0xd5, 0x63, 0x37, 0xee, + 0x3f, 0x08, 0x21, 0x36, 0x0c, 0x37, 0x03, 0x58, 0x64, 0x97, 0xc9, 0xf4, 0x3c, 0x9f, 0x54, 0xc3, + 0xf8, 0x31, 0x3e, 0x42, 0x1d, 0x84, 0x08, 0xc3, 0x04, 0xaa, 0xbd, 0xfd, 0x83, 0x4d, 0xf4, 0x74, + 0x68, 0xd8, 0x2f, 0xc4, 0xec, 0x88, 0x4f, 0x59, 0xbc, 0xd4, 0xf1, 0xec, 0xf3, 0x50, 0x20, 0x81, + 0xb4, 0x29, 0xc4, 0x8b, 0x5b, 0x6a, 0xe9, 0xf2, 0xfc, 0xfb, 0x4a, 0xf4, 0xb0, 0xa9, 0xfe, 0x15, + 0xcb, 0xa6, 0x5c, 0xf7, 0x67, 0x5d, 0xfa, 0x9d, 0x6c, 0x72, 0xc6, 0x4b, 0xc9, 0x0a, 0x39, 0xf8, + 0x11, 0x5e, 0xc9, 0x90, 0x8e, 0x29, 0xdb, 0x8f, 0x7f, 0x29, 0x5d, 0xdb, 0xeb, 0xa3, 0x2a, 0x50, + 0xeb, 0x10, 0xe0, 0xf7, 0xba, 0x92, 0xc0, 0x00, 0xf0, 0x20, 0x84, 0xd8, 0x5e, 0x57, 0x82, 0xc3, + 0x6c, 0x91, 0x48, 0x7e, 0xc0, 0x33, 0x5e, 0xb4, 0x7b, 0xbd, 0x56, 0xf5, 0x11, 0xa2, 0xd7, 0x09, + 0xd4, 0x06, 0x1b, 0xcf, 0x9b, 0x59, 0xec, 0x37, 0x02, 0x46, 0x5a, 0xcb, 0xfd, 0x66, 0x3f, 0xd8, + 0xee, 0x56, 0x1d, 0x9f, 0x67, 0x7c, 0x21, 0xae, 0xe1, 0x6e, 0xd5, 0x35, 0x51, 0x03, 0xc4, 0x6e, + 0x15, 0x05, 0xed, 0x8a, 0xec, 0xf8, 0x79, 0x93, 0xf0, 0x1b, 0xb0, 0x22, 0xbb, 0xca, 0x95, 0x98, + 0x58, 0x91, 0x11, 0x4c, 0x7b, 0x38, 0x89, 0x7e, 0x45, 0x09, 0x7f, 0x5f, 0x24, 0xd9, 0xe0, 0x2e, + 0xa2, 0x54, 0x09, 0x8c, 0xd5, 0x7b, 0x34, 0x00, 0x4a, 0x5c, 0xfd, 0xaa, 0x97, 0xc7, 0x47, 0x84, + 0x12, 0x58, 0x19, 0x57, 0xbb, 0x30, 0x9b, 0x0a, 0x29, 0x61, 0x15, 0xbf, 0x46, 0x57, 0xac, 0x48, + 0xb2, 0xe9, 0x00, 0xd3, 0x75, 0xe4, 0x44, 0x2a, 0x84, 0x71, 0x60, 0x08, 0x6b, 0xc5, 0x9d, 0x3c, + 0x2f, 0xaa, 0xb0, 0x88, 0x0d, 0x61, 0x1f, 0x09, 0x0e, 0xe1, 0x16, 0x8a, 0x7b, 0xdb, 0xe3, 0x71, + 0x9a, 0x64, 0x41, 0x6f, 0x1a, 0xe9, 0xe3, 0xcd, 0xa2, 0x60, 0xf0, 0x1e, 0x71, 0xb6, 0xe0, 0x4d, + 0xcd, 0xb0, 0x96, 0x71, 0x81, 0xe0, 0xe0, 0x05, 0xa0, 0xdd, 0x77, 0x2a, 0xf1, 0x31, 0xbb, 0xe6, + 0x55, 0x03, 0xf3, 0x6a, 0x5d, 0x1b, 0x60, 0xfa, 0x1e, 0x41, 0xec, 0x3b, 0x71, 0x52, 0xbb, 0x9a, + 0x47, 0x1f, 0x29, 0xf9, 0x29, 0x2b, 0x64, 0x12, 0x27, 0x39, 0xcb, 0x9a, 0xfd, 0x0c, 0x36, 0xaf, + 0x5b, 0x94, 0x71, 0xb9, 0xd5, 0x93, 0xd6, 0x6e, 0xff, 0x6d, 0x25, 0xba, 0x0f, 0xfd, 0x9e, 0xf2, + 0x62, 0x96, 0xa8, 0x6d, 0x71, 0x59, 0x07, 0xe1, 0xc1, 0x97, 0x61, 0xa3, 0x2d, 0x05, 0x53, 0x9a, + 0x1f, 0xde, 0x5e, 0xd1, 0x26, 0x43, 0x23, 0xbd, 0x55, 0x78, 0x5d, 0x4c, 0x5a, 0xc7, 0x46, 0xa3, + 0x26, 0xff, 0x57, 0x42, 0x22, 0x19, 0x6a, 0x41, 0x60, 0x86, 0x9f, 0x67, 0x65, 0x63, 0x1d, 0x9b, + 0xe1, 0x56, 0x1c, 0x9c, 0xe1, 0x1e, 0xa6, 0x3d, 0xfc, 0x41, 0x14, 0xd5, 0x9b, 0x47, 0xb5, 0xc1, + 0xf7, 0x63, 0x8e, 0xde, 0x55, 0x7a, 0xbb, 0xfb, 0xfb, 0x01, 0xc2, 0x2e, 0x74, 0xf5, 0xef, 0xea, + 0xdc, 0x62, 0x80, 0x6a, 0x28, 0x11, 0xb1, 0xd0, 0x01, 0x04, 0x16, 0x74, 0x74, 0x25, 0x6e, 0xf0, + 0x82, 0x56, 0x92, 0x70, 0x41, 0x35, 0x61, 0x4f, 0x12, 0x75, 0x41, 0xb1, 0x93, 0xc4, 0xa6, 0x18, + 0xa1, 0x93, 0x44, 0xc8, 0xd8, 0xcd, 0x8b, 0x6b, 0xf8, 0xa5, 0x10, 0xd7, 0x33, 0x56, 0x5c, 0x83, + 0xcd, 0x8b, 0xa7, 0xdc, 0x30, 0xc4, 0xe6, 0x85, 0x62, 0x6d, 0x50, 0x73, 0x1d, 0x56, 0x69, 0xd2, + 0x79, 0x91, 0x82, 0xa0, 0xe6, 0xd9, 0xd0, 0x08, 0x11, 0xd4, 0x08, 0xd4, 0x8e, 0x4a, 0xd7, 0xdb, + 0x88, 0xc3, 0xbd, 0xab, 0xa7, 0x3e, 0xe2, 0xd4, 0xde, 0x15, 0xc1, 0xe0, 0x10, 0x3a, 0x28, 0x58, + 0x7e, 0x85, 0x0f, 0x21, 0x25, 0x0a, 0x0f, 0xa1, 0x06, 0x81, 0xfd, 0x3d, 0xe2, 0xac, 0x88, 0xaf, + 0xf0, 0xfe, 0xae, 0x65, 0xe1, 0xfe, 0x36, 0x0c, 0xec, 0xef, 0x5a, 0xf0, 0x36, 0x91, 0x57, 0xc7, + 0x5c, 0x32, 0xbc, 0xbf, 0x7d, 0x26, 0xdc, 0xdf, 0x2d, 0xd6, 0xe6, 0x61, 0xae, 0xc3, 0xd1, 0xfc, + 0xa2, 0x8c, 0x8b, 0xe4, 0x82, 0x0f, 0x02, 0x56, 0x0c, 0x44, 0xe4, 0x61, 0x24, 0xac, 0x7d, 0xfe, + 0x7c, 0x25, 0xba, 0xdb, 0x74, 0xbb, 0x28, 0x4b, 0x1d, 0xf3, 0x7c, 0xf7, 0x2f, 0xf0, 0xfe, 0x25, + 0x70, 0xe2, 0x6c, 0xb7, 0x87, 0x9a, 0xb3, 0x26, 0xe0, 0x45, 0x3a, 0xcf, 0x4a, 0x53, 0xa8, 0x2f, + 0xfb, 0x58, 0x77, 0x14, 0x88, 0x35, 0xa1, 0x97, 0xa2, 0x5d, 0x8e, 0x75, 0xff, 0x34, 0xb2, 0xc3, + 0x49, 0x09, 0x96, 0xe3, 0xa6, 0xbd, 0x1d, 0x82, 0x58, 0x8e, 0x71, 0x12, 0x0e, 0x85, 0x83, 0x42, + 0xcc, 0xf3, 0xb2, 0x63, 0x28, 0x00, 0x28, 0x3c, 0x14, 0xda, 0xb0, 0xf6, 0xf9, 0x2e, 0xfa, 0x6d, + 0x77, 0xf8, 0xb9, 0x8d, 0xbd, 0x45, 0x8f, 0x29, 0xac, 0x89, 0x87, 0x7d, 0x71, 0x9b, 0x90, 0x36, + 0x9e, 0xe5, 0x1e, 0x97, 0x2c, 0x49, 0xcb, 0xc1, 0x2a, 0x6e, 0xa3, 0x91, 0x13, 0x09, 0x29, 0xc6, + 0xc1, 0xf8, 0xb6, 0x37, 0xcf, 0xd3, 0x24, 0x6e, 0x9f, 0xac, 0x6b, 0x5d, 0x23, 0x0e, 0xc7, 0x37, + 0x17, 0x83, 0xf1, 0xba, 0x5a, 0xf2, 0xd5, 0x7f, 0xc6, 0xcb, 0x9c, 0xe3, 0xf1, 0xda, 0x43, 0xc2, + 0xf1, 0x1a, 0xa2, 0xb0, 0x3e, 0x23, 0x2e, 0x8f, 0xd8, 0x52, 0xcc, 0x89, 0x78, 0x6d, 0xc4, 0xe1, + 0xfa, 0xb8, 0x98, 0xcd, 0x09, 0x8d, 0x87, 0xc3, 0x4c, 0xf2, 0x22, 0x63, 0xe9, 0x7e, 0xca, 0xa6, + 0xe5, 0x80, 0x88, 0x31, 0x3e, 0x45, 0xe4, 0x84, 0x34, 0x8d, 0x34, 0xe3, 0x61, 0xb9, 0xcf, 0x16, + 0xa2, 0x48, 0x24, 0xdd, 0x8c, 0x16, 0xe9, 0x6c, 0x46, 0x0f, 0x45, 0xbd, 0xed, 0x14, 0xf1, 0x55, + 0xb2, 0xe0, 0x93, 0x80, 0xb7, 0x06, 0xe9, 0xe1, 0xcd, 0x41, 0x91, 0x4e, 0x1b, 0x89, 0x79, 0x11, + 0x73, 0xb2, 0xd3, 0x6a, 0x71, 0x67, 0xa7, 0x19, 0x4c, 0x7b, 0xf8, 0xab, 0x95, 0xe8, 0x77, 0x6a, + 0xa9, 0x7b, 0xdc, 0xbd, 0xc7, 0xca, 0xab, 0x0b, 0xc1, 0x8a, 0xc9, 0xe0, 0x33, 0xcc, 0x0e, 0x8a, + 0x1a, 0xd7, 0xcf, 0x6e, 0xa3, 0x02, 0x9b, 0xf5, 0x28, 0x29, 0x9d, 0x19, 0x87, 0x36, 0xab, 0x87, + 0x84, 0x9b, 0x15, 0xa2, 0x30, 0x80, 0x28, 0x79, 0x7d, 0x14, 0xb3, 0x4a, 0xea, 0xfb, 0xe7, 0x31, + 0x6b, 0x9d, 0x1c, 0x8c, 0x8f, 0x95, 0xd0, 0x1f, 0x2d, 0x5b, 0x94, 0x0d, 0x7c, 0xc4, 0x0c, 0xfb, + 0xe2, 0xa4, 0x67, 0x33, 0x2b, 0xc2, 0x9e, 0x5b, 0x33, 0x63, 0xd8, 0x17, 0x27, 0x3c, 0x3b, 0x61, + 0x2d, 0xe4, 0x19, 0x09, 0x6d, 0xc3, 0xbe, 0x38, 0xcc, 0xbe, 0x34, 0xd3, 0xac, 0x0b, 0x4f, 0x02, + 0x76, 0xe0, 0xda, 0xb0, 0xd1, 0x8b, 0xd5, 0x0e, 0xff, 0x66, 0x25, 0xfa, 0xbe, 0xf5, 0x78, 0x2c, + 0x26, 0xc9, 0xe5, 0xb2, 0x86, 0xde, 0xb0, 0x74, 0xce, 0xcb, 0xc1, 0x33, 0xca, 0x5a, 0x9b, 0x35, + 0x25, 0x78, 0x7e, 0x2b, 0x1d, 0x38, 0x77, 0x76, 0xf2, 0x3c, 0x5d, 0x8e, 0xf9, 0x2c, 0x4f, 0xc9, + 0xb9, 0xe3, 0x21, 0xe1, 0xb9, 0x03, 0x51, 0x98, 0x95, 0x8f, 0x45, 0x95, 0xf3, 0xa3, 0x59, 0xb9, + 0x12, 0x85, 0xb3, 0xf2, 0x06, 0x81, 0xb9, 0xd2, 0x58, 0xec, 0x8a, 0x34, 0xe5, 0xb1, 0x6c, 0x3f, + 0x32, 0x37, 0x9a, 0x96, 0x08, 0xe7, 0x4a, 0x80, 0xb4, 0xa7, 0x31, 0xcd, 0x1e, 0x92, 0x15, 0xfc, + 0xe5, 0xf2, 0x28, 0xc9, 0xae, 0x07, 0x78, 0x5a, 0x60, 0x01, 0xe2, 0x34, 0x06, 0x05, 0xe1, 0x5e, + 0xf5, 0x3c, 0x9b, 0x08, 0x7c, 0xaf, 0x5a, 0x49, 0xc2, 0x7b, 0x55, 0x4d, 0x40, 0x93, 0x67, 0x9c, + 0x32, 0x59, 0x49, 0xc2, 0x26, 0x35, 0x81, 0x85, 0x42, 0x7d, 0x66, 0x4f, 0x86, 0x42, 0x70, 0x4a, + 0xbf, 0xd6, 0xc9, 0xc1, 0x11, 0xda, 0x6c, 0x5a, 0xf7, 0xb9, 0x8c, 0xaf, 0xf0, 0x11, 0xea, 0x21, + 0xe1, 0x11, 0x0a, 0x51, 0x58, 0xa5, 0xb1, 0x30, 0x9b, 0xee, 0x55, 0x7c, 0x7c, 0xb4, 0x36, 0xdc, + 0x6b, 0x9d, 0x1c, 0xdc, 0x46, 0x1e, 0xce, 0x54, 0x9b, 0xa1, 0x83, 0xbc, 0x96, 0x85, 0xb7, 0x91, + 0x86, 0x81, 0xa5, 0xaf, 0x05, 0x55, 0x73, 0xe2, 0xa5, 0xb7, 0xf2, 0x70, 0xe9, 0x3d, 0x4e, 0x3b, + 0xf9, 0x17, 0xb3, 0x8d, 0xab, 0xa5, 0x27, 0xa2, 0x9a, 0x23, 0x6f, 0x58, 0x9a, 0x4c, 0x98, 0xe4, + 0x63, 0x71, 0xcd, 0x33, 0x7c, 0xc7, 0xa4, 0x4b, 0x5b, 0xf3, 0x43, 0x4f, 0x21, 0xbc, 0x63, 0x0a, + 0x2b, 0xc2, 0x71, 0x52, 0xd3, 0xe7, 0x25, 0xdf, 0x65, 0x25, 0x11, 0xc9, 0x3c, 0x24, 0x3c, 0x4e, + 0x20, 0x0a, 0xf3, 0xd5, 0x5a, 0xfe, 0xea, 0x5d, 0xce, 0x8b, 0x84, 0x67, 0x31, 0xc7, 0xf3, 0x55, + 0x48, 0x85, 0xf3, 0x55, 0x84, 0x86, 0x7b, 0xb5, 0x3d, 0x26, 0xf9, 0xcb, 0xe5, 0x38, 0x99, 0xf1, + 0x52, 0xb2, 0x59, 0x8e, 0xef, 0xd5, 0x00, 0x14, 0xde, 0xab, 0xb5, 0xe1, 0xd6, 0xd1, 0x90, 0x09, + 0x88, 0xed, 0x9b, 0x36, 0x90, 0x08, 0xdc, 0xb4, 0x21, 0x50, 0xd8, 0xb0, 0x16, 0x40, 0x0f, 0x87, + 0x5b, 0x56, 0x82, 0x87, 0xc3, 0x34, 0xdd, 0x3a, 0x70, 0x33, 0xcc, 0xa8, 0x9a, 0x9a, 0x1d, 0x45, + 0x1f, 0xb9, 0x53, 0x74, 0xa3, 0x17, 0x8b, 0x9f, 0xf0, 0x9d, 0xf1, 0x94, 0xa9, 0x65, 0x2b, 0x70, + 0x8c, 0xd6, 0x30, 0x7d, 0x4e, 0xf8, 0x1c, 0x56, 0x3b, 0xfc, 0x8b, 0x95, 0xe8, 0x13, 0xcc, 0xe3, + 0xeb, 0x5c, 0xf9, 0x7d, 0xda, 0x6d, 0xab, 0x26, 0x89, 0xab, 0x44, 0x61, 0x0d, 0x5d, 0x86, 0x3f, + 0x89, 0x3e, 0x6e, 0x44, 0xf6, 0xa6, 0x91, 0x2e, 0x80, 0x9f, 0xb4, 0x99, 0xf2, 0x43, 0xce, 0xb8, + 0xdf, 0xee, 0xcd, 0xdb, 0xfd, 0x90, 0x5f, 0xae, 0x12, 0xec, 0x87, 0x8c, 0x0d, 0x2d, 0x26, 0xf6, + 0x43, 0x08, 0x66, 0x67, 0xa7, 0x5b, 0xbd, 0xb7, 0x89, 0xbc, 0x52, 0xf9, 0x16, 0x98, 0x9d, 0x5e, + 0x59, 0x0d, 0x44, 0xcc, 0x4e, 0x12, 0x86, 0x19, 0x49, 0x03, 0x56, 0x73, 0x13, 0x8b, 0xe5, 0xc6, + 0x90, 0x3b, 0x33, 0xd7, 0xbb, 0x41, 0x38, 0x5e, 0x1b, 0xb1, 0xde, 0xfa, 0x3c, 0x09, 0x59, 0x00, + 0xdb, 0x9f, 0x8d, 0x5e, 0xac, 0x76, 0xf8, 0x67, 0xd1, 0xf7, 0x5a, 0x15, 0xdb, 0xe7, 0x4c, 0xce, + 0x0b, 0x3e, 0x19, 0x6c, 0x77, 0x94, 0xbb, 0x01, 0x8d, 0xeb, 0xa7, 0xfd, 0x15, 0x5a, 0x39, 0x7a, + 0xc3, 0xd5, 0xc3, 0xca, 0x94, 0xe1, 0x59, 0xc8, 0xa4, 0xcf, 0x06, 0x73, 0x74, 0x5a, 0xa7, 0xb5, + 0xcd, 0x76, 0x47, 0xd7, 0xce, 0x82, 0x25, 0xa9, 0x7a, 0x48, 0xf7, 0x59, 0xc8, 0xa8, 0x87, 0x06, + 0xb7, 0xd9, 0xa4, 0x4a, 0x2b, 0x32, 0xab, 0x39, 0xee, 0x6c, 0xcf, 0x36, 0xe9, 0x48, 0x80, 0xec, + 0xce, 0xb6, 0x7a, 0xd2, 0xda, 0xad, 0x6c, 0x96, 0xbc, 0xea, 0x67, 0x77, 0x90, 0x63, 0x5e, 0xb5, + 0x2a, 0x32, 0xd2, 0xb7, 0x7a, 0xd2, 0xda, 0xeb, 0x9f, 0x46, 0x1f, 0xb7, 0xbd, 0xea, 0x85, 0x68, + 0xbb, 0xd3, 0x14, 0x58, 0x8b, 0x9e, 0xf6, 0x57, 0xb0, 0x5b, 0x9a, 0xaf, 0x92, 0x52, 0x8a, 0x62, + 0x39, 0xba, 0x12, 0x37, 0xcd, 0x0d, 0x7e, 0x7f, 0xb6, 0x6a, 0x60, 0xe8, 0x10, 0xc4, 0x96, 0x06, + 0x27, 0x5b, 0xae, 0xec, 0x4d, 0xff, 0x92, 0x70, 0xe5, 0x10, 0x1d, 0xae, 0x7c, 0xd2, 0xc6, 0xaa, + 0xa6, 0x56, 0xf6, 0xb5, 0x84, 0x35, 0xbc, 0xa8, 0xed, 0x57, 0x13, 0xd6, 0xbb, 0x41, 0x9b, 0xb1, + 0x68, 0xf1, 0x5e, 0x72, 0x79, 0x69, 0xea, 0x84, 0x97, 0xd4, 0x45, 0x88, 0x8c, 0x85, 0x40, 0x6d, + 0xd2, 0xbd, 0x9f, 0xa4, 0x5c, 0x9d, 0xe8, 0xbf, 0xbe, 0xbc, 0x4c, 0x05, 0x9b, 0x80, 0xa4, 0xbb, + 0x12, 0x0f, 0x5d, 0x39, 0x91, 0x74, 0x63, 0x9c, 0x7d, 0x46, 0x5c, 0x49, 0xcf, 0x78, 0x2c, 0xb2, + 0x38, 0x49, 0xe1, 0x05, 0x40, 0xa5, 0x69, 0x84, 0xc4, 0x33, 0xe2, 0x16, 0x64, 0x17, 0xc6, 0x4a, + 0x54, 0x4d, 0xfb, 0xa6, 0xfc, 0x8f, 0xda, 0x8a, 0x8e, 0x98, 0x58, 0x18, 0x11, 0xcc, 0xee, 0x3d, + 0x2b, 0xe1, 0x79, 0xae, 0x8c, 0xdf, 0x6b, 0x6b, 0xd5, 0x12, 0x62, 0xef, 0xe9, 0x13, 0x76, 0x0f, + 0x55, 0xfd, 0xbe, 0x27, 0x6e, 0x32, 0x65, 0xf4, 0x41, 0x5b, 0xa5, 0x91, 0x11, 0x7b, 0x28, 0xc8, + 0x68, 0xc3, 0x3f, 0x89, 0xfe, 0xbf, 0x32, 0x5c, 0x88, 0x7c, 0x70, 0x07, 0x51, 0x28, 0x9c, 0xbb, + 0x7a, 0x77, 0x49, 0xb9, 0xbd, 0xe3, 0x6a, 0xc6, 0xc6, 0x79, 0xc9, 0xa6, 0xf0, 0x8e, 0xab, 0xed, + 0x71, 0x25, 0x25, 0xee, 0xb8, 0xb6, 0x29, 0x7f, 0x54, 0x9c, 0x88, 0x89, 0xb6, 0x8e, 0xd4, 0xd0, + 0x08, 0x43, 0xa3, 0xc2, 0x85, 0x6c, 0x32, 0x73, 0xc2, 0x16, 0xc9, 0xd4, 0x2c, 0x38, 0x75, 0xdc, + 0x2a, 0x41, 0x32, 0x63, 0x99, 0xa1, 0x03, 0x11, 0xc9, 0x0c, 0x09, 0x6b, 0x9f, 0xff, 0xbc, 0x12, + 0xdd, 0xb3, 0xcc, 0x41, 0x73, 0x5a, 0x77, 0x98, 0x5d, 0x8a, 0x2a, 0xf5, 0x39, 0x4a, 0xb2, 0xeb, + 0x72, 0xf0, 0x05, 0x65, 0x12, 0xe7, 0x4d, 0x51, 0xbe, 0xbc, 0xb5, 0x9e, 0xcd, 0x5a, 0x9b, 0xa3, + 0x2c, 0xfb, 0x3c, 0xbb, 0xd6, 0x00, 0x59, 0xab, 0x39, 0xf1, 0x82, 0x1c, 0x91, 0xb5, 0x86, 0x78, + 0xdb, 0xc5, 0xc6, 0x79, 0x2a, 0x32, 0xd8, 0xc5, 0xd6, 0x42, 0x25, 0x24, 0xba, 0xb8, 0x05, 0xd9, + 0x78, 0xdc, 0x88, 0xea, 0x53, 0x97, 0x9d, 0x34, 0x05, 0xf1, 0xd8, 0xa8, 0x1a, 0x80, 0x88, 0xc7, + 0x28, 0xa8, 0xfd, 0x9c, 0x45, 0xdf, 0xa9, 0x9a, 0xf4, 0xb4, 0xe0, 0x8b, 0x84, 0xc3, 0xab, 0x17, + 0x8e, 0x84, 0x98, 0xff, 0x3e, 0x61, 0x67, 0xd6, 0x79, 0x56, 0xe6, 0x29, 0x2b, 0xaf, 0xf4, 0xc3, + 0x78, 0xbf, 0xce, 0x8d, 0x10, 0x3e, 0x8e, 0x7f, 0xd4, 0x41, 0xd9, 0xa0, 0xde, 0xc8, 0x4c, 0x88, + 0x59, 0xc5, 0x55, 0x5b, 0x61, 0x66, 0xad, 0x93, 0xb3, 0x27, 0xde, 0x07, 0x2c, 0x4d, 0x79, 0xb1, + 0x6c, 0x64, 0xc7, 0x2c, 0x4b, 0x2e, 0x79, 0x29, 0xc1, 0x89, 0xb7, 0xa6, 0x86, 0x10, 0x23, 0x4e, + 0xbc, 0x03, 0xb8, 0xcd, 0xe6, 0x81, 0xe7, 0xc3, 0x6c, 0xc2, 0xdf, 0x81, 0x6c, 0x1e, 0xda, 0x51, + 0x0c, 0x91, 0xcd, 0x53, 0xac, 0x3d, 0xf9, 0x7d, 0x99, 0x8a, 0xf8, 0x5a, 0x2f, 0x01, 0x7e, 0x07, + 0x2b, 0x09, 0x5c, 0x03, 0x1e, 0x84, 0x10, 0xbb, 0x08, 0x28, 0xc1, 0x19, 0xcf, 0x53, 0x16, 0xc3, + 0xfb, 0x37, 0xb5, 0x8e, 0x96, 0x11, 0x8b, 0x00, 0x64, 0x40, 0x71, 0xf5, 0xbd, 0x1e, 0xac, 0xb8, + 0xe0, 0x5a, 0xcf, 0x83, 0x10, 0x62, 0x97, 0x41, 0x25, 0x18, 0xe5, 0x69, 0x22, 0xc1, 0x34, 0xa8, + 0x35, 0x94, 0x84, 0x98, 0x06, 0x3e, 0x01, 0x4c, 0x1e, 0xf3, 0x62, 0xca, 0x51, 0x93, 0x4a, 0x12, + 0x34, 0xd9, 0x10, 0xf6, 0x92, 0x69, 0x5d, 0x77, 0x91, 0x2f, 0xc1, 0x25, 0x53, 0x5d, 0x2d, 0x91, + 0x2f, 0x89, 0x4b, 0xa6, 0x1e, 0x00, 0x8a, 0x78, 0xca, 0x4a, 0x89, 0x17, 0x51, 0x49, 0x82, 0x45, + 0x6c, 0x08, 0xbb, 0x46, 0xd7, 0x45, 0x9c, 0x4b, 0xb0, 0x46, 0xeb, 0x02, 0x38, 0x4f, 0xa0, 0xef, + 0x92, 0x72, 0x1b, 0x49, 0xea, 0x5e, 0xe1, 0x72, 0x3f, 0xe1, 0xe9, 0xa4, 0x04, 0x91, 0x44, 0xb7, + 0x7b, 0x23, 0x25, 0x22, 0x49, 0x9b, 0x02, 0x43, 0x49, 0x9f, 0x8f, 0x63, 0xb5, 0x03, 0x47, 0xe3, + 0x0f, 0x42, 0x88, 0x8d, 0x4f, 0x4d, 0xa1, 0x77, 0x59, 0x51, 0x24, 0xd5, 0xe2, 0xbf, 0x8a, 0x17, + 0xa8, 0x91, 0x13, 0xf1, 0x09, 0xe3, 0xc0, 0xf4, 0x6a, 0x02, 0x37, 0x56, 0x30, 0x18, 0xba, 0x3f, + 0x0d, 0x32, 0x36, 0xe3, 0x54, 0x12, 0xe7, 0x11, 0x2a, 0xd6, 0x9a, 0xc8, 0x13, 0xd4, 0xd5, 0x2e, + 0xcc, 0x79, 0x09, 0xc4, 0xb8, 0x38, 0x16, 0x0b, 0x3e, 0x16, 0xaf, 0xde, 0x25, 0xa5, 0x4c, 0xb2, + 0xa9, 0x5e, 0xb9, 0x9f, 0x13, 0x96, 0x30, 0x98, 0x78, 0x09, 0xa4, 0x53, 0xc9, 0x26, 0x10, 0xa0, + 0x2c, 0x27, 0xfc, 0x06, 0x4d, 0x20, 0xa0, 0x45, 0xc3, 0x11, 0x09, 0x44, 0x88, 0xb7, 0xe7, 0x28, + 0xc6, 0xb9, 0x7e, 0xf3, 0x77, 0x2c, 0x9a, 0x5c, 0x8e, 0xb2, 0x06, 0x41, 0x62, 0x2b, 0x1b, 0x54, + 0xb0, 0xfb, 0x4b, 0xe3, 0xdf, 0x4e, 0xb1, 0x75, 0xc2, 0x4e, 0x7b, 0x9a, 0x3d, 0xee, 0x41, 0x22, + 0xae, 0xec, 0x3d, 0x00, 0xca, 0x55, 0xfb, 0x1a, 0xc0, 0xe3, 0x1e, 0xa4, 0x73, 0x26, 0xe3, 0x56, + 0xeb, 0x25, 0x8b, 0xaf, 0xa7, 0x85, 0x98, 0x67, 0x93, 0x5d, 0x91, 0x8a, 0x02, 0x9c, 0xc9, 0x78, + 0xa5, 0x06, 0x28, 0x71, 0x26, 0xd3, 0xa1, 0x62, 0x33, 0x38, 0xb7, 0x14, 0x3b, 0x69, 0x32, 0x85, + 0x3b, 0x6a, 0xcf, 0x90, 0x02, 0x88, 0x0c, 0x0e, 0x05, 0x91, 0x41, 0x54, 0xef, 0xb8, 0x65, 0x12, + 0xb3, 0xb4, 0xf6, 0xb7, 0x4d, 0x9b, 0xf1, 0xc0, 0xce, 0x41, 0x84, 0x28, 0x20, 0xf5, 0x1c, 0xcf, + 0x8b, 0xec, 0x30, 0x93, 0x82, 0xac, 0x67, 0x03, 0x74, 0xd6, 0xd3, 0x01, 0x41, 0x58, 0x1d, 0xf3, + 0x77, 0x55, 0x69, 0xaa, 0x7f, 0xb0, 0xb0, 0x5a, 0xfd, 0x3e, 0xd4, 0xf2, 0x50, 0x58, 0x05, 0x1c, + 0xa8, 0x8c, 0x76, 0x52, 0x0f, 0x98, 0x80, 0xb6, 0x3f, 0x4c, 0xd6, 0xbb, 0x41, 0xdc, 0xcf, 0x48, + 0x2e, 0x53, 0x1e, 0xf2, 0xa3, 0x80, 0x3e, 0x7e, 0x1a, 0xd0, 0x1e, 0xb7, 0x78, 0xf5, 0xb9, 0xe2, + 0xf1, 0x75, 0xeb, 0x5a, 0x93, 0x5f, 0xd0, 0x1a, 0x21, 0x8e, 0x5b, 0x08, 0x14, 0xef, 0xa2, 0xc3, + 0x58, 0x64, 0xa1, 0x2e, 0xaa, 0xe4, 0x7d, 0xba, 0x48, 0x73, 0x76, 0xf3, 0x6b, 0xa4, 0x7a, 0x64, + 0xd6, 0xdd, 0xb4, 0x41, 0x58, 0x70, 0x21, 0x62, 0xf3, 0x4b, 0xc2, 0x36, 0x27, 0x87, 0x3e, 0x8f, + 0xdb, 0x77, 0xbe, 0x5b, 0x56, 0x8e, 0xe9, 0x3b, 0xdf, 0x14, 0x4b, 0x57, 0xb2, 0x1e, 0x23, 0x1d, + 0x56, 0xfc, 0x71, 0xb2, 0xd9, 0x0f, 0xb6, 0x5b, 0x1e, 0xcf, 0xe7, 0x6e, 0xca, 0x59, 0x51, 0x7b, + 0xdd, 0x0a, 0x18, 0xb2, 0x18, 0xb1, 0xe5, 0x09, 0xe0, 0x20, 0x84, 0x79, 0x9e, 0x77, 0x45, 0x26, + 0x79, 0x26, 0xb1, 0x10, 0xe6, 0x1b, 0xd3, 0x60, 0x28, 0x84, 0x51, 0x0a, 0x60, 0xdc, 0xaa, 0xf3, + 0x20, 0x2e, 0x4f, 0xd8, 0x0c, 0xcd, 0xd8, 0xea, 0xb3, 0x9e, 0x5a, 0x1e, 0x1a, 0xb7, 0x80, 0x73, + 0x1e, 0xf2, 0xb9, 0x5e, 0xc6, 0xac, 0x98, 0x9a, 0xd3, 0x8d, 0xc9, 0xe0, 0x29, 0x6d, 0xc7, 0x27, + 0x89, 0x87, 0x7c, 0x61, 0x0d, 0x10, 0x76, 0x0e, 0x67, 0x6c, 0x6a, 0x6a, 0x8a, 0xd4, 0x40, 0xc9, + 0x5b, 0x55, 0x5d, 0xef, 0x06, 0x81, 0x9f, 0x37, 0xc9, 0x84, 0x8b, 0x80, 0x1f, 0x25, 0xef, 0xe3, + 0x07, 0x82, 0x20, 0x7b, 0xab, 0xea, 0x5d, 0xef, 0xe8, 0x76, 0xb2, 0x89, 0xde, 0xc7, 0x0e, 0x89, + 0xe6, 0x01, 0x5c, 0x28, 0x7b, 0x23, 0x78, 0x30, 0x47, 0x9b, 0x03, 0xda, 0xd0, 0x1c, 0x35, 0xe7, + 0xaf, 0x7d, 0xe6, 0x28, 0x06, 0x6b, 0x9f, 0x3f, 0xd3, 0x73, 0x74, 0x8f, 0x49, 0x56, 0xe5, 0xed, + 0x6f, 0x12, 0x7e, 0xa3, 0x37, 0xc2, 0x48, 0x7d, 0x1b, 0x6a, 0xa8, 0x5e, 0x55, 0x04, 0xbb, 0xe2, + 0xed, 0xde, 0x7c, 0xc0, 0xb7, 0xde, 0x21, 0x74, 0xfa, 0x06, 0x5b, 0x85, 0xed, 0xde, 0x7c, 0xc0, + 0xb7, 0x7e, 0x07, 0xba, 0xd3, 0x37, 0x78, 0x11, 0x7a, 0xbb, 0x37, 0xaf, 0x7d, 0xff, 0x65, 0x33, + 0x71, 0x5d, 0xe7, 0x55, 0x1e, 0x16, 0xcb, 0x64, 0xc1, 0xb1, 0x74, 0xd2, 0xb7, 0x67, 0xd0, 0x50, + 0x3a, 0x49, 0xab, 0x38, 0x1f, 0x02, 0xc2, 0x4a, 0x71, 0x2a, 0xca, 0x44, 0x3d, 0xa4, 0x7f, 0xde, + 0xc3, 0x68, 0x03, 0x87, 0x36, 0x4d, 0x21, 0x25, 0xfb, 0xb8, 0xd1, 0x43, 0xed, 0x2d, 0xe6, 0xcd, + 0x80, 0xbd, 0xf6, 0x65, 0xe6, 0xad, 0x9e, 0xb4, 0x7d, 0xf0, 0xe7, 0x31, 0xee, 0x13, 0xc7, 0x50, + 0xaf, 0xa2, 0x0f, 0x1d, 0x9f, 0xf6, 0x57, 0xd0, 0xee, 0xff, 0xba, 0xd9, 0x57, 0x40, 0xff, 0x7a, + 0x12, 0x3c, 0xeb, 0x63, 0x11, 0x4c, 0x84, 0xe7, 0xb7, 0xd2, 0xd1, 0x05, 0xf9, 0xfb, 0x66, 0x03, + 0xdd, 0xa0, 0xea, 0x5d, 0x0e, 0xf5, 0xee, 0x9f, 0x9e, 0x13, 0xa1, 0x6e, 0xb5, 0x30, 0x9c, 0x19, + 0x2f, 0x6e, 0xa9, 0xe5, 0x7c, 0x16, 0xca, 0x83, 0xf5, 0x3b, 0x87, 0x4e, 0x79, 0x42, 0x96, 0x1d, + 0x1a, 0x16, 0xe8, 0x8b, 0xdb, 0xaa, 0x51, 0x73, 0xc5, 0x81, 0xd5, 0x57, 0x19, 0x9e, 0xf7, 0x34, + 0xec, 0x7d, 0xa7, 0xe1, 0xf3, 0xdb, 0x29, 0xe9, 0xb2, 0xfc, 0xc7, 0x4a, 0xf4, 0xc8, 0x63, 0xed, + 0xf3, 0x04, 0x70, 0xea, 0xf1, 0xe3, 0x80, 0x7d, 0x4a, 0xc9, 0x14, 0xee, 0x77, 0x7f, 0x39, 0x65, + 0xfb, 0x0d, 0x25, 0x4f, 0x65, 0x3f, 0x49, 0x25, 0x2f, 0xda, 0xdf, 0x50, 0xf2, 0xed, 0xd6, 0xd4, + 0x90, 0xfe, 0x86, 0x52, 0x00, 0x77, 0xbe, 0xa1, 0x84, 0x78, 0x46, 0xbf, 0xa1, 0x84, 0x5a, 0x0b, + 0x7e, 0x43, 0x29, 0xac, 0x41, 0x85, 0xf7, 0xa6, 0x08, 0xf5, 0xb9, 0x75, 0x2f, 0x8b, 0xfe, 0x31, + 0xf6, 0xb3, 0xdb, 0xa8, 0x10, 0x0b, 0x5c, 0xcd, 0xa9, 0x7b, 0x6e, 0x3d, 0xda, 0xd4, 0xbb, 0xeb, + 0xb6, 0xdd, 0x9b, 0xd7, 0xbe, 0x7f, 0xaa, 0x77, 0x37, 0x26, 0x9c, 0x8b, 0x42, 0x7d, 0x3f, 0x6b, + 0x23, 0x14, 0x9e, 0x2b, 0x0b, 0x6e, 0xcf, 0x6f, 0xf6, 0x83, 0x89, 0xea, 0x56, 0x84, 0xee, 0xf4, + 0x61, 0x97, 0x21, 0xd0, 0xe5, 0xdb, 0xbd, 0x79, 0x62, 0x19, 0xa9, 0x7d, 0xd7, 0xbd, 0xdd, 0xc3, + 0x98, 0xdf, 0xd7, 0x4f, 0xfb, 0x2b, 0x68, 0xf7, 0x0b, 0x9d, 0x36, 0xba, 0xee, 0x55, 0x3f, 0x6f, + 0x75, 0x99, 0x1a, 0x79, 0xdd, 0x3c, 0xec, 0x8b, 0x87, 0x12, 0x08, 0x77, 0x09, 0xed, 0x4a, 0x20, + 0xd0, 0x65, 0xf4, 0xf3, 0xdb, 0x29, 0xe9, 0xb2, 0xfc, 0xd3, 0x4a, 0x74, 0x97, 0x2c, 0x8b, 0x1e, + 0x07, 0x5f, 0xf4, 0xb5, 0x0c, 0xc6, 0xc3, 0x97, 0xb7, 0xd6, 0xd3, 0x85, 0xfa, 0xd7, 0x95, 0xe8, + 0x5e, 0xa0, 0x50, 0xf5, 0x00, 0xb9, 0x85, 0x75, 0x7f, 0xa0, 0xfc, 0xf0, 0xf6, 0x8a, 0xd4, 0x72, + 0xef, 0xe2, 0xa3, 0xf6, 0xc7, 0x78, 0x02, 0xb6, 0x47, 0xf4, 0xc7, 0x78, 0xba, 0xb5, 0xe0, 0x21, + 0x0f, 0xbb, 0x68, 0x36, 0x5d, 0xe8, 0x21, 0x8f, 0xba, 0xa1, 0x06, 0xf6, 0x1c, 0x6b, 0x9d, 0x1c, + 0xe6, 0xe4, 0xd5, 0xbb, 0x9c, 0x65, 0x13, 0xda, 0x49, 0x2d, 0xef, 0x76, 0x62, 0x38, 0x78, 0x38, + 0x56, 0x49, 0xcf, 0x44, 0xb3, 0x91, 0x7a, 0x4c, 0xe9, 0x1b, 0x24, 0x78, 0x38, 0xd6, 0x42, 0x09, + 0x6f, 0x3a, 0x6b, 0x0c, 0x79, 0x03, 0xc9, 0xe2, 0x93, 0x3e, 0x28, 0x48, 0xd1, 0x8d, 0x37, 0x73, + 0xe6, 0xbe, 0x19, 0xb2, 0xd2, 0x3a, 0x77, 0xdf, 0xea, 0x49, 0x13, 0x6e, 0x47, 0x5c, 0x7e, 0xc5, + 0xd9, 0x84, 0x17, 0x41, 0xb7, 0x86, 0xea, 0xe5, 0xd6, 0xa5, 0x31, 0xb7, 0xbb, 0x22, 0x9d, 0xcf, + 0x32, 0xdd, 0x99, 0xa4, 0x5b, 0x97, 0xea, 0x76, 0x0b, 0x68, 0x78, 0x2c, 0x68, 0xdd, 0xaa, 0xf4, + 0xf2, 0x49, 0xd8, 0x8c, 0x97, 0x55, 0x6e, 0xf4, 0x62, 0xe9, 0x7a, 0xea, 0x61, 0xd4, 0x51, 0x4f, + 0x30, 0x92, 0xb6, 0x7a, 0xd2, 0xf0, 0x7c, 0xce, 0x71, 0x6b, 0xc6, 0xd3, 0x76, 0x87, 0xad, 0xd6, + 0x90, 0x7a, 0xda, 0x5f, 0x01, 0x9e, 0x86, 0xea, 0x51, 0x75, 0x94, 0x94, 0x72, 0x3f, 0x49, 0xd3, + 0xc1, 0x46, 0x60, 0x98, 0x34, 0x50, 0xf0, 0x34, 0x14, 0x81, 0x89, 0x91, 0xdc, 0x9c, 0x1e, 0x66, + 0x83, 0x2e, 0x3b, 0x8a, 0xea, 0x35, 0x92, 0x5d, 0x1a, 0x9c, 0x68, 0x39, 0x4d, 0x6d, 0x6a, 0x3b, + 0x0c, 0x37, 0x5c, 0xab, 0xc2, 0xdb, 0xbd, 0x79, 0xf0, 0xb8, 0x5d, 0x51, 0x6a, 0x65, 0x79, 0x48, + 0x99, 0xf0, 0x56, 0x92, 0x47, 0x1d, 0x14, 0x38, 0x15, 0xac, 0xa7, 0xd1, 0xdb, 0x64, 0x32, 0xe5, + 0x12, 0x7d, 0x52, 0xe4, 0x02, 0xc1, 0x27, 0x45, 0x00, 0x04, 0x5d, 0x57, 0xff, 0x6e, 0x8e, 0x43, + 0x0f, 0x27, 0x58, 0xd7, 0x69, 0x65, 0x87, 0x0a, 0x75, 0x1d, 0x4a, 0x83, 0x68, 0x60, 0xdc, 0xea, + 0xd7, 0xf1, 0x9f, 0x84, 0xcc, 0x80, 0x77, 0xf2, 0x37, 0x7a, 0xb1, 0x60, 0x45, 0xb1, 0x0e, 0x93, + 0x59, 0x22, 0xb1, 0x15, 0xc5, 0xb1, 0x51, 0x21, 0xa1, 0x15, 0xa5, 0x8d, 0x52, 0xd5, 0xab, 0x72, + 0x84, 0xc3, 0x49, 0xb8, 0x7a, 0x35, 0xd3, 0xaf, 0x7a, 0x86, 0x6d, 0x3d, 0xd8, 0xcc, 0xcc, 0x90, + 0x91, 0x57, 0x7a, 0xb3, 0x8c, 0x8c, 0x6d, 0xf5, 0x9a, 0x26, 0x04, 0x43, 0x51, 0x87, 0x52, 0x80, + 0x07, 0xf6, 0x15, 0xd7, 0x3c, 0x7b, 0xcd, 0x73, 0xce, 0x0a, 0x96, 0xc5, 0xe8, 0xe6, 0x54, 0x19, + 0x6c, 0x91, 0xa1, 0xcd, 0x29, 0xa9, 0x01, 0x1e, 0x9b, 0xfb, 0x2f, 0x58, 0x22, 0x53, 0xc1, 0xbc, + 0xc9, 0xe8, 0xbf, 0x5f, 0xf9, 0xb8, 0x07, 0x09, 0x1f, 0x9b, 0x37, 0x80, 0x39, 0xf8, 0xae, 0x9d, + 0x7e, 0x16, 0x30, 0xe5, 0xa3, 0xa1, 0x8d, 0x30, 0xad, 0x02, 0x06, 0xb5, 0x49, 0x70, 0xb9, 0xfc, + 0x09, 0x5f, 0x62, 0x83, 0xda, 0xe6, 0xa7, 0x0a, 0x09, 0x0d, 0xea, 0x36, 0x0a, 0xf2, 0x4c, 0x77, + 0x1f, 0xb4, 0x1a, 0xd0, 0x77, 0xb7, 0x3e, 0x6b, 0x9d, 0x1c, 0x98, 0x39, 0x7b, 0xc9, 0xc2, 0x7b, + 0x4e, 0x80, 0x14, 0x74, 0x2f, 0x59, 0xe0, 0x8f, 0x09, 0x36, 0x7a, 0xb1, 0xf0, 0x91, 0x3c, 0x93, + 0xfc, 0x5d, 0xf3, 0xac, 0x1c, 0x29, 0xae, 0x92, 0xb7, 0x1e, 0x96, 0xaf, 0x77, 0x83, 0xf6, 0x02, + 0xec, 0x69, 0x21, 0x62, 0x5e, 0x96, 0xfa, 0x0b, 0x85, 0xfe, 0x0d, 0x23, 0x2d, 0x1b, 0x82, 0xef, + 0x13, 0x3e, 0x0c, 0x43, 0xb6, 0x67, 0xb4, 0xc8, 0x7e, 0xf5, 0x66, 0x15, 0xd5, 0x6c, 0x7f, 0xf0, + 0x66, 0xad, 0x93, 0xb3, 0xd3, 0x4b, 0x4b, 0xdd, 0xcf, 0xdc, 0xac, 0xa3, 0xea, 0xd8, 0x17, 0x6e, + 0x1e, 0xf7, 0x20, 0xb5, 0xab, 0xaf, 0xa2, 0xf7, 0x8f, 0xc4, 0x74, 0xc4, 0xb3, 0xc9, 0xe0, 0x07, + 0xfe, 0x15, 0x5a, 0x31, 0x1d, 0x56, 0x3f, 0x1b, 0xa3, 0x77, 0x28, 0xb1, 0xbd, 0x04, 0xb8, 0xc7, + 0x2f, 0xe6, 0xd3, 0x91, 0x64, 0x12, 0x5c, 0x02, 0x54, 0xbf, 0x0f, 0x2b, 0x01, 0x71, 0x09, 0xd0, + 0x03, 0x80, 0xbd, 0x71, 0xc1, 0x39, 0x6a, 0xaf, 0x12, 0x04, 0xed, 0x69, 0xc0, 0x66, 0x11, 0xc6, + 0x5e, 0x95, 0xa8, 0xc3, 0x4b, 0x7b, 0x56, 0x47, 0x49, 0x89, 0x2c, 0xa2, 0x4d, 0xd9, 0xc1, 0x5d, + 0x57, 0x5f, 0x7d, 0x75, 0x64, 0x3e, 0x9b, 0xb1, 0x62, 0x09, 0x06, 0xb7, 0xae, 0xa5, 0x03, 0x10, + 0x83, 0x1b, 0x05, 0xed, 0xac, 0x6d, 0x9a, 0x39, 0xbe, 0x3e, 0x10, 0x85, 0x98, 0xcb, 0x24, 0xe3, + 0xf0, 0xcb, 0x13, 0xa6, 0x41, 0x5d, 0x86, 0x98, 0xb5, 0x14, 0x6b, 0xb3, 0x5c, 0x45, 0xd4, 0xf7, + 0x09, 0xd5, 0x77, 0x8b, 0x4b, 0x29, 0x0a, 0xf8, 0x3c, 0xb1, 0xb6, 0x02, 0x21, 0x22, 0xcb, 0x25, + 0x61, 0xd0, 0xf7, 0xa7, 0x49, 0x36, 0x45, 0xfb, 0xfe, 0xd4, 0xfd, 0xea, 0xe7, 0x3d, 0x1a, 0xb0, + 0x13, 0xaa, 0x6e, 0xb4, 0x7a, 0x02, 0xe8, 0x77, 0x39, 0xd1, 0x46, 0x77, 0x09, 0x62, 0x42, 0xe1, + 0x24, 0x70, 0xf5, 0x3a, 0xe7, 0x19, 0x9f, 0x34, 0xb7, 0xe6, 0x30, 0x57, 0x1e, 0x11, 0x74, 0x05, + 0x49, 0x1b, 0x8b, 0x94, 0xfc, 0x6c, 0x9e, 0x9d, 0x16, 0xe2, 0x32, 0x49, 0x79, 0x01, 0x62, 0x51, + 0xad, 0xee, 0xc8, 0x89, 0x58, 0x84, 0x71, 0xf6, 0xfa, 0x85, 0x92, 0x7a, 0x1f, 0xdf, 0x1e, 0x17, + 0x2c, 0x86, 0xd7, 0x2f, 0x6a, 0x1b, 0x6d, 0x8c, 0x38, 0x19, 0x0c, 0xe0, 0x4e, 0xa2, 0x53, 0xbb, + 0xce, 0x96, 0x6a, 0x7c, 0xe8, 0x77, 0x09, 0xd5, 0xb7, 0x30, 0x4b, 0x90, 0xe8, 0x68, 0x73, 0x18, + 0x49, 0x24, 0x3a, 0x61, 0x0d, 0xbb, 0x94, 0x28, 0xee, 0x44, 0x5f, 0x2b, 0x02, 0x4b, 0x49, 0x6d, + 0xa3, 0x11, 0x12, 0x4b, 0x49, 0x0b, 0x02, 0x01, 0xa9, 0x99, 0x06, 0x53, 0x34, 0x20, 0x19, 0x69, + 0x30, 0x20, 0xb9, 0x94, 0x0d, 0x14, 0x87, 0x59, 0x22, 0x13, 0x96, 0x8e, 0xb8, 0x3c, 0x65, 0x05, + 0x9b, 0x71, 0xc9, 0x0b, 0x18, 0x28, 0x34, 0x32, 0xf4, 0x18, 0x22, 0x50, 0x50, 0xac, 0x76, 0xf8, + 0x7b, 0xd1, 0x87, 0xd5, 0xba, 0xcf, 0x33, 0xfd, 0x67, 0x43, 0x5e, 0xa9, 0xbf, 0x37, 0x34, 0xf8, + 0xc8, 0xd8, 0x18, 0xc9, 0x82, 0xb3, 0x59, 0x63, 0xfb, 0x03, 0xf3, 0xbb, 0x02, 0x9f, 0xae, 0x54, + 0xe3, 0xf9, 0x44, 0xc8, 0xe4, 0xb2, 0xda, 0x66, 0xeb, 0x37, 0x88, 0xc0, 0x78, 0x76, 0xc5, 0xc3, + 0xc0, 0xb7, 0x28, 0x30, 0xce, 0xc6, 0x69, 0x57, 0x7a, 0xc6, 0xf3, 0x14, 0xc6, 0x69, 0x4f, 0x5b, + 0x01, 0x44, 0x9c, 0x46, 0x41, 0x3b, 0x39, 0x5d, 0xf1, 0x98, 0x87, 0x2b, 0x33, 0xe6, 0xfd, 0x2a, + 0x33, 0xf6, 0x5e, 0xca, 0x48, 0xa3, 0x0f, 0x8f, 0xf9, 0xec, 0x82, 0x17, 0xe5, 0x55, 0x92, 0x1f, + 0x54, 0x09, 0x17, 0x93, 0x73, 0xf8, 0xda, 0xa2, 0x25, 0x86, 0x06, 0x21, 0xb2, 0x52, 0x02, 0xb5, + 0x2b, 0x81, 0x05, 0x0e, 0xcb, 0x13, 0x36, 0xe3, 0xea, 0xcb, 0x1a, 0x60, 0x25, 0x70, 0x8c, 0x38, + 0x10, 0xb1, 0x12, 0x90, 0xb0, 0xf3, 0x7e, 0x97, 0x65, 0xce, 0xf8, 0xb4, 0x1a, 0x61, 0xc5, 0x29, + 0x5b, 0xce, 0x78, 0x26, 0xb5, 0x49, 0x70, 0x26, 0xef, 0x98, 0xc4, 0x79, 0xe2, 0x4c, 0xbe, 0x8f, + 0x9e, 0x13, 0x9a, 0xbc, 0x86, 0x3f, 0x15, 0x85, 0xac, 0xff, 0x28, 0xd0, 0x79, 0x91, 0x82, 0xd0, + 0xe4, 0x37, 0xaa, 0x47, 0x12, 0xa1, 0x29, 0xac, 0xe1, 0x7c, 0x7d, 0xde, 0x2b, 0xc3, 0x1b, 0x5e, + 0x98, 0x71, 0xf2, 0x6a, 0xc6, 0x92, 0x54, 0x8f, 0x86, 0x1f, 0x05, 0x6c, 0x13, 0x3a, 0xc4, 0xd7, + 0xe7, 0xfb, 0xea, 0x3a, 0xdf, 0xeb, 0x0f, 0x97, 0x10, 0x3c, 0x22, 0xe8, 0xb0, 0x4f, 0x3c, 0x22, + 0xe8, 0xd6, 0xb2, 0x3b, 0x77, 0xcb, 0x2a, 0x6e, 0xa9, 0x88, 0x5d, 0x31, 0x81, 0xe7, 0x85, 0x8e, + 0x4d, 0x00, 0x12, 0x3b, 0xf7, 0xa0, 0x82, 0x4d, 0x0d, 0x2c, 0xb6, 0x9f, 0x64, 0x2c, 0x4d, 0x7e, + 0x06, 0xd3, 0x7a, 0xc7, 0x4e, 0x43, 0x10, 0xa9, 0x01, 0x4e, 0x62, 0xae, 0x0e, 0xb8, 0x1c, 0x27, + 0x55, 0xe8, 0x5f, 0x0f, 0xb4, 0x9b, 0x22, 0xba, 0x5d, 0x39, 0xa4, 0xf3, 0x8d, 0x56, 0xd8, 0xac, + 0x3b, 0x79, 0x3e, 0xaa, 0x56, 0xd5, 0x33, 0x1e, 0xf3, 0x24, 0x97, 0x83, 0x17, 0xe1, 0xb6, 0x02, + 0x38, 0x71, 0xd1, 0xa2, 0x87, 0x9a, 0xf3, 0xf8, 0xbe, 0x8a, 0x25, 0xa3, 0xfa, 0xaf, 0xe5, 0x9d, + 0x97, 0xbc, 0xd0, 0x89, 0xc6, 0x01, 0x97, 0x60, 0x76, 0x3a, 0xdc, 0xd0, 0x01, 0xab, 0x8a, 0x12, + 0xb3, 0x33, 0xac, 0x61, 0x0f, 0xfb, 0x1c, 0xee, 0x8c, 0x97, 0x22, 0x5d, 0x70, 0x75, 0xdf, 0x70, + 0x93, 0x34, 0xe6, 0x50, 0xc4, 0x61, 0x1f, 0x4d, 0xdb, 0x6c, 0xad, 0xed, 0x76, 0x27, 0x5b, 0x1e, + 0xc2, 0x2b, 0x13, 0x88, 0x25, 0x85, 0x11, 0xd9, 0x5a, 0x00, 0x77, 0x0e, 0xc3, 0x0b, 0xc1, 0x26, + 0x31, 0x2b, 0xe5, 0x29, 0x5b, 0xa6, 0x82, 0x4d, 0xd4, 0xba, 0x0e, 0x0f, 0xc3, 0x1b, 0x66, 0xe8, + 0x42, 0xd4, 0x61, 0x38, 0x05, 0xbb, 0xd9, 0x99, 0xfa, 0x23, 0x80, 0xfa, 0x2e, 0x27, 0xcc, 0xce, + 0x54, 0x79, 0xe1, 0x3d, 0xce, 0x87, 0x61, 0xc8, 0xbe, 0x83, 0x56, 0x8b, 0x54, 0x1a, 0x72, 0x0f, + 0xd3, 0xf1, 0x12, 0x90, 0xfb, 0x01, 0xc2, 0x7e, 0x97, 0xa2, 0xfe, 0xbd, 0xf9, 0xbb, 0x2f, 0x52, + 0x7f, 0xc9, 0x7a, 0x13, 0xd3, 0x75, 0xa1, 0xa1, 0xfb, 0x81, 0xbb, 0xad, 0x9e, 0xb4, 0x4d, 0x33, + 0x77, 0xaf, 0x98, 0xdc, 0x99, 0x4c, 0x8e, 0x79, 0x89, 0xbc, 0x50, 0x5e, 0x09, 0x87, 0x56, 0x4a, + 0xa4, 0x99, 0x6d, 0xca, 0x0e, 0xf4, 0x4a, 0xf6, 0x6a, 0x92, 0x48, 0x2d, 0x6b, 0x6e, 0x48, 0x6f, + 0xb6, 0x0d, 0xb4, 0x29, 0xa2, 0x56, 0x34, 0x6d, 0x63, 0x79, 0xc5, 0x8c, 0xc5, 0x74, 0x9a, 0x72, + 0x0d, 0x9d, 0x71, 0x56, 0x7f, 0xc8, 0x6f, 0xbb, 0x6d, 0x0b, 0x05, 0x89, 0x58, 0x1e, 0x54, 0xb0, + 0x69, 0x64, 0x85, 0xd5, 0x8f, 0xa4, 0x9a, 0x86, 0x5d, 0x6b, 0x9b, 0xf1, 0x00, 0x22, 0x8d, 0x44, + 0x41, 0xfb, 0xde, 0x5b, 0x25, 0x3e, 0xe0, 0x4d, 0x4b, 0xc0, 0x4f, 0x10, 0x29, 0x65, 0x47, 0x4c, + 0xbc, 0xf7, 0x86, 0x60, 0x76, 0x9f, 0x00, 0x3c, 0xbc, 0x5c, 0x1e, 0x4e, 0xe0, 0x3e, 0x01, 0xea, + 0x2b, 0x86, 0xd8, 0x27, 0x50, 0xac, 0xdf, 0x75, 0xe6, 0xdc, 0xeb, 0x88, 0x95, 0xb6, 0x72, 0x48, + 0xd7, 0xa1, 0x60, 0xa8, 0xeb, 0x28, 0x05, 0xbf, 0x49, 0xdd, 0xa3, 0x35, 0xa4, 0x49, 0xb1, 0x73, + 0xb5, 0xd5, 0x2e, 0xcc, 0xc6, 0x25, 0xb3, 0x9f, 0x54, 0x57, 0x96, 0xf0, 0x2f, 0xf8, 0xd7, 0x42, + 0x22, 0x2e, 0xb5, 0xa0, 0xda, 0xf6, 0xcb, 0xfb, 0xff, 0xf5, 0xcd, 0x9d, 0x95, 0x5f, 0x7c, 0x73, + 0x67, 0xe5, 0x7f, 0xbe, 0xb9, 0xb3, 0xf2, 0xf3, 0x6f, 0xef, 0xbc, 0xf7, 0x8b, 0x6f, 0xef, 0xbc, + 0xf7, 0xdf, 0xdf, 0xde, 0x79, 0xef, 0xeb, 0xf7, 0xf5, 0x1f, 0x87, 0xbd, 0xf8, 0x7f, 0xea, 0x4f, + 0xbc, 0x3e, 0xff, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xdc, 0x1c, 0x6a, 0xe3, 0x40, 0x76, 0x00, + 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -400,6 +402,7 @@ type ClientCommandsClient interface { // *** AccountRecover(ctx context.Context, in *pb.RpcAccountRecoverRequest, opts ...grpc.CallOption) (*pb.RpcAccountRecoverResponse, error) AccountMigrate(ctx context.Context, in *pb.RpcAccountMigrateRequest, opts ...grpc.CallOption) (*pb.RpcAccountMigrateResponse, error) + AccountMigrateCancel(ctx context.Context, in *pb.RpcAccountMigrateCancelRequest, opts ...grpc.CallOption) (*pb.RpcAccountMigrateCancelResponse, error) AccountCreate(ctx context.Context, in *pb.RpcAccountCreateRequest, opts ...grpc.CallOption) (*pb.RpcAccountCreateResponse, error) AccountDelete(ctx context.Context, in *pb.RpcAccountDeleteRequest, opts ...grpc.CallOption) (*pb.RpcAccountDeleteResponse, error) AccountRevertDeletion(ctx context.Context, in *pb.RpcAccountRevertDeletionRequest, opts ...grpc.CallOption) (*pb.RpcAccountRevertDeletionResponse, error) @@ -912,6 +915,15 @@ func (c *clientCommandsClient) AccountMigrate(ctx context.Context, in *pb.RpcAcc return out, nil } +func (c *clientCommandsClient) AccountMigrateCancel(ctx context.Context, in *pb.RpcAccountMigrateCancelRequest, opts ...grpc.CallOption) (*pb.RpcAccountMigrateCancelResponse, error) { + out := new(pb.RpcAccountMigrateCancelResponse) + err := c.cc.Invoke(ctx, "/anytype.ClientCommands/AccountMigrateCancel", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *clientCommandsClient) AccountCreate(ctx context.Context, in *pb.RpcAccountCreateRequest, opts ...grpc.CallOption) (*pb.RpcAccountCreateResponse, error) { out := new(pb.RpcAccountCreateResponse) err := c.cc.Invoke(ctx, "/anytype.ClientCommands/AccountCreate", in, out, opts...) @@ -3206,6 +3218,7 @@ type ClientCommandsServer interface { // *** AccountRecover(context.Context, *pb.RpcAccountRecoverRequest) *pb.RpcAccountRecoverResponse AccountMigrate(context.Context, *pb.RpcAccountMigrateRequest) *pb.RpcAccountMigrateResponse + AccountMigrateCancel(context.Context, *pb.RpcAccountMigrateCancelRequest) *pb.RpcAccountMigrateCancelResponse AccountCreate(context.Context, *pb.RpcAccountCreateRequest) *pb.RpcAccountCreateResponse AccountDelete(context.Context, *pb.RpcAccountDeleteRequest) *pb.RpcAccountDeleteResponse AccountRevertDeletion(context.Context, *pb.RpcAccountRevertDeletionRequest) *pb.RpcAccountRevertDeletionResponse @@ -3582,6 +3595,9 @@ func (*UnimplementedClientCommandsServer) AccountRecover(ctx context.Context, re func (*UnimplementedClientCommandsServer) AccountMigrate(ctx context.Context, req *pb.RpcAccountMigrateRequest) *pb.RpcAccountMigrateResponse { return nil } +func (*UnimplementedClientCommandsServer) AccountMigrateCancel(ctx context.Context, req *pb.RpcAccountMigrateCancelRequest) *pb.RpcAccountMigrateCancelResponse { + return nil +} func (*UnimplementedClientCommandsServer) AccountCreate(ctx context.Context, req *pb.RpcAccountCreateRequest) *pb.RpcAccountCreateResponse { return nil } @@ -4730,6 +4746,24 @@ func _ClientCommands_AccountMigrate_Handler(srv interface{}, ctx context.Context return interceptor(ctx, in, info, handler) } +func _ClientCommands_AccountMigrateCancel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(pb.RpcAccountMigrateCancelRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ClientCommandsServer).AccountMigrateCancel(ctx, in), nil + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/anytype.ClientCommands/AccountMigrateCancel", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ClientCommandsServer).AccountMigrateCancel(ctx, req.(*pb.RpcAccountMigrateCancelRequest)), nil + } + return interceptor(ctx, in, info, handler) +} + func _ClientCommands_AccountCreate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(pb.RpcAccountCreateRequest) if err := dec(in); err != nil { @@ -9308,6 +9342,10 @@ var _ClientCommands_serviceDesc = grpc.ServiceDesc{ MethodName: "AccountMigrate", Handler: _ClientCommands_AccountMigrate_Handler, }, + { + MethodName: "AccountMigrateCancel", + Handler: _ClientCommands_AccountMigrateCancel_Handler, + }, { MethodName: "AccountCreate", Handler: _ClientCommands_AccountCreate_Handler, diff --git a/space/spacecore/storage/migrator/migrator.go b/space/spacecore/storage/migrator/migrator.go index 03a3a1b2b..b0c6f7f84 100644 --- a/space/spacecore/storage/migrator/migrator.go +++ b/space/spacecore/storage/migrator/migrator.go @@ -86,6 +86,11 @@ func (m *migrator) Run(ctx context.Context) (err error) { if err != nil { return err } + select { + case <-ctx.Done(): + return ctx.Err() + default: + } } progress.SetTotal(total) for _, id := range allIds { @@ -101,6 +106,11 @@ func (m *migrator) Run(ctx context.Context) (err error) { if err != nil { return err } + select { + case <-ctx.Done(): + return ctx.Err() + default: + } } return renamePreserveExtension(m.oldPath, migratedName) } From 6e11423763bef5f2752a8ef0e982089bed96773b Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Thu, 9 Jan 2025 17:37:36 +0100 Subject: [PATCH 120/279] GO-4146 Fix old store ids --- space/spacecore/storage/sqlitestorage/sql.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/space/spacecore/storage/sqlitestorage/sql.go b/space/spacecore/storage/sqlitestorage/sql.go index 1ceca1233..43b6a8a4b 100644 --- a/space/spacecore/storage/sqlitestorage/sql.go +++ b/space/spacecore/storage/sqlitestorage/sql.go @@ -58,7 +58,7 @@ func initStmts(s *storageService) (err error) { if s.stmt.updateSpaceIsDeleted, err = s.writeDb.Prepare(`UPDATE spaces SET isDeleted = ? WHERE id = ?`); err != nil { return } - if s.stmt.treeIdsBySpace, err = s.readDb.Prepare(`SELECT id FROM trees WHERE spaceId = ? AND type != 1`); err != nil { + if s.stmt.treeIdsBySpace, err = s.readDb.Prepare(`SELECT id FROM trees WHERE spaceId = ? AND type != 1 AND deleteStatus IS NULL`); err != nil { return } if s.stmt.deleteTree, err = s.writeDb.Prepare(` From 8625ea14769b378d1e080cf0ec76e9ed17255b59 Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Thu, 9 Jan 2025 17:54:38 +0100 Subject: [PATCH 121/279] GO-4146 Update reindex counter --- core/indexer/reindex.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/indexer/reindex.go b/core/indexer/reindex.go index c68bc3e12..73acc20f6 100644 --- a/core/indexer/reindex.go +++ b/core/indexer/reindex.go @@ -35,7 +35,7 @@ const ( // ForceIdxRebuildCounter erases localstore indexes and reindex all type of objects // (no need to increase ForceObjectsReindexCounter & ForceFilesReindexCounter) - ForceIdxRebuildCounter int32 = 62 + ForceIdxRebuildCounter int32 = 63 // ForceFilestoreKeysReindexCounter reindex filestore keys in all objects ForceFilestoreKeysReindexCounter int32 = 2 From 3301bc428ae4765ef5729acd6d831c5dbc422733 Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Thu, 9 Jan 2025 18:33:59 +0100 Subject: [PATCH 122/279] GO-4146 Add migration canceled error code --- core/account.go | 1 + docs/proto.md | 3 +- pb/commands.pb.go | 2418 +++++++++++++++++++------------------- pb/protos/commands.proto | 1 + 4 files changed, 1215 insertions(+), 1208 deletions(-) diff --git a/core/account.go b/core/account.go index ce11ad5bd..ccc58a6d0 100644 --- a/core/account.go +++ b/core/account.go @@ -54,6 +54,7 @@ func (mw *Middleware) AccountMigrate(cctx context.Context, req *pb.RpcAccountMig code := mapErrorCode(err, errToCode(application.ErrBadInput, pb.RpcAccountMigrateResponseError_BAD_INPUT), errToCode(application.ErrAccountNotFound, pb.RpcAccountMigrateResponseError_ACCOUNT_NOT_FOUND), + errToCode(context.Canceled, pb.RpcAccountMigrateResponseError_CANCELED), ) return &pb.RpcAccountMigrateResponse{ Error: &pb.RpcAccountMigrateResponseError{ diff --git a/docs/proto.md b/docs/proto.md index 55910349d..a24c07009 100644 --- a/docs/proto.md +++ b/docs/proto.md @@ -20620,7 +20620,8 @@ Middleware-to-front-end response, that can contain a NULL error or a non-NULL er | NULL | 0 | No error | | UNKNOWN_ERROR | 1 | Any other errors | | BAD_INPUT | 2 | Id or root path is wrong | -| ACCOUNT_NOT_FOUND | 101 | TODO: [storage] Add specific error codes for migration problems | +| ACCOUNT_NOT_FOUND | 101 | | +| CANCELED | 102 | TODO: [storage] Add specific error codes for migration problems | diff --git a/pb/commands.pb.go b/pb/commands.pb.go index 919cdbf22..4f85b5668 100644 --- a/pb/commands.pb.go +++ b/pb/commands.pb.go @@ -1139,6 +1139,7 @@ const ( RpcAccountMigrateResponseError_UNKNOWN_ERROR RpcAccountMigrateResponseErrorCode = 1 RpcAccountMigrateResponseError_BAD_INPUT RpcAccountMigrateResponseErrorCode = 2 RpcAccountMigrateResponseError_ACCOUNT_NOT_FOUND RpcAccountMigrateResponseErrorCode = 101 + RpcAccountMigrateResponseError_CANCELED RpcAccountMigrateResponseErrorCode = 102 ) var RpcAccountMigrateResponseErrorCode_name = map[int32]string{ @@ -1146,6 +1147,7 @@ var RpcAccountMigrateResponseErrorCode_name = map[int32]string{ 1: "UNKNOWN_ERROR", 2: "BAD_INPUT", 101: "ACCOUNT_NOT_FOUND", + 102: "CANCELED", } var RpcAccountMigrateResponseErrorCode_value = map[string]int32{ @@ -1153,6 +1155,7 @@ var RpcAccountMigrateResponseErrorCode_value = map[string]int32{ "UNKNOWN_ERROR": 1, "BAD_INPUT": 2, "ACCOUNT_NOT_FOUND": 101, + "CANCELED": 102, } func (x RpcAccountMigrateResponseErrorCode) String() string { @@ -71206,1214 +71209,1215 @@ func init() { func init() { proto.RegisterFile("pb/protos/commands.proto", fileDescriptor_8261c968b2e6f45c) } var fileDescriptor_8261c968b2e6f45c = []byte{ - // 19312 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x7f, 0x9c, 0x23, 0x47, - 0x75, 0x2f, 0xba, 0xea, 0x96, 0x34, 0x33, 0x67, 0x7e, 0xac, 0xb6, 0xbd, 0xbb, 0x5e, 0xb7, 0xcd, + // 19323 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x7d, 0x98, 0x23, 0x47, + 0x79, 0x2f, 0xba, 0xea, 0x96, 0x34, 0x33, 0xef, 0x7c, 0xac, 0xb6, 0xbd, 0xbb, 0x5e, 0xb7, 0xcd, 0xda, 0x59, 0x1b, 0xe3, 0x18, 0x33, 0x36, 0x86, 0x10, 0x6c, 0x6c, 0x6c, 0x8d, 0x46, 0x33, 0x23, - 0x7b, 0x46, 0x1a, 0x5a, 0x9a, 0x5d, 0x9c, 0xdc, 0x3c, 0xdd, 0x5e, 0xa9, 0x66, 0xa6, 0xbd, 0x9a, - 0x6e, 0xd1, 0xdd, 0x33, 0xeb, 0xe5, 0x7d, 0xee, 0xbb, 0x21, 0xc4, 0xfc, 0x0c, 0x21, 0x84, 0x90, - 0x84, 0xdf, 0x60, 0x62, 0xb8, 0x90, 0x00, 0xe1, 0xf7, 0x85, 0x24, 0x40, 0xf8, 0x11, 0x08, 0x49, - 0x08, 0x81, 0x10, 0x08, 0x09, 0x2f, 0x10, 0x08, 0x21, 0xef, 0x13, 0x1e, 0x2f, 0x79, 0x37, 0x70, - 0x49, 0xc2, 0xe3, 0x7d, 0xba, 0xaa, 0xba, 0xbb, 0x4a, 0xa3, 0x6e, 0x55, 0x6b, 0xd4, 0x1a, 0x13, - 0xee, 0x7f, 0xdd, 0xd5, 0xd5, 0xa7, 0x4e, 0x9d, 0xef, 0xa9, 0xaa, 0x53, 0x55, 0xa7, 0x4e, 0xc1, - 0xa9, 0xee, 0xf9, 0x9b, 0xbb, 0xb6, 0xe5, 0x5a, 0xce, 0xcd, 0x2d, 0x6b, 0x67, 0x47, 0x37, 0xdb, - 0xce, 0x3c, 0x7e, 0x57, 0x26, 0x74, 0xf3, 0x92, 0x7b, 0xa9, 0x8b, 0xd4, 0xeb, 0xba, 0x17, 0xb6, - 0x6e, 0xee, 0x18, 0xe7, 0x6f, 0xee, 0x9e, 0xbf, 0x79, 0xc7, 0x6a, 0xa3, 0x8e, 0xff, 0x03, 0x7e, - 0xa1, 0xd9, 0xd5, 0x1b, 0xa2, 0x72, 0x75, 0xac, 0x96, 0xde, 0x71, 0x5c, 0xcb, 0x46, 0x34, 0xe7, - 0xc9, 0xb0, 0x48, 0xb4, 0x87, 0x4c, 0xd7, 0xa7, 0x70, 0xd5, 0x96, 0x65, 0x6d, 0x75, 0x10, 0xf9, - 0x76, 0x7e, 0x77, 0xf3, 0x66, 0xc7, 0xb5, 0x77, 0x5b, 0x2e, 0xfd, 0x7a, 0x4d, 0xef, 0xd7, 0x36, - 0x72, 0x5a, 0xb6, 0xd1, 0x75, 0x2d, 0x9b, 0xe4, 0x38, 0xf3, 0xf2, 0x9f, 0x9d, 0x04, 0x59, 0xeb, - 0xb6, 0xd4, 0xef, 0x4c, 0x80, 0x5c, 0xec, 0x76, 0xd5, 0x8f, 0x4b, 0x00, 0xcb, 0xc8, 0x3d, 0x8b, - 0x6c, 0xc7, 0xb0, 0x4c, 0xf5, 0x28, 0x4c, 0x68, 0xe8, 0x19, 0xbb, 0xc8, 0x71, 0x6f, 0xcf, 0x3e, - 0xef, 0x1b, 0x72, 0x46, 0x7d, 0x58, 0x82, 0x49, 0x0d, 0x39, 0x5d, 0xcb, 0x74, 0x90, 0x72, 0x37, - 0xe4, 0x90, 0x6d, 0x5b, 0xf6, 0xa9, 0xcc, 0x35, 0x99, 0x1b, 0xa6, 0x6f, 0xbd, 0x71, 0x9e, 0x56, - 0x7f, 0x5e, 0xeb, 0xb6, 0xe6, 0x8b, 0xdd, 0xee, 0x7c, 0x48, 0x69, 0xde, 0xff, 0x69, 0xbe, 0xec, - 0xfd, 0xa1, 0x91, 0x1f, 0x95, 0x53, 0x30, 0xb1, 0x47, 0x32, 0x9c, 0x92, 0xae, 0xc9, 0xdc, 0x30, - 0xa5, 0xf9, 0xaf, 0xde, 0x97, 0x36, 0x72, 0x75, 0xa3, 0xe3, 0x9c, 0x92, 0xc9, 0x17, 0xfa, 0xaa, - 0x3e, 0x94, 0x81, 0x1c, 0x26, 0xa2, 0x94, 0x20, 0xdb, 0xb2, 0xda, 0x08, 0x17, 0x3f, 0x77, 0xeb, - 0xcd, 0xe2, 0xc5, 0xcf, 0x97, 0xac, 0x36, 0xd2, 0xf0, 0xcf, 0xca, 0x35, 0x30, 0xed, 0x8b, 0x25, - 0x64, 0x83, 0x4d, 0x3a, 0x73, 0x2b, 0x64, 0xbd, 0xfc, 0xca, 0x24, 0x64, 0xab, 0x1b, 0xab, 0xab, - 0x85, 0x23, 0xca, 0x31, 0x98, 0xdd, 0xa8, 0xde, 0x5b, 0xad, 0x9d, 0xab, 0x36, 0xcb, 0x9a, 0x56, - 0xd3, 0x0a, 0x19, 0x65, 0x16, 0xa6, 0x16, 0x8a, 0x8b, 0xcd, 0x4a, 0x75, 0x7d, 0xa3, 0x51, 0x90, - 0xd4, 0xd7, 0xc8, 0x30, 0x57, 0x47, 0xee, 0x22, 0xda, 0x33, 0x5a, 0xa8, 0xee, 0xea, 0x2e, 0x52, - 0x5f, 0x9c, 0x09, 0x84, 0xa9, 0x6c, 0x78, 0x85, 0x06, 0x9f, 0x68, 0x05, 0x9e, 0xb0, 0xaf, 0x02, - 0x3c, 0x85, 0x79, 0xfa, 0xf7, 0x3c, 0x93, 0xa6, 0xb1, 0x74, 0xce, 0x3c, 0x0e, 0xa6, 0x99, 0x6f, - 0xca, 0x1c, 0xc0, 0x42, 0xb1, 0x74, 0xef, 0xb2, 0x56, 0xdb, 0xa8, 0x2e, 0x16, 0x8e, 0x78, 0xef, - 0x4b, 0x35, 0xad, 0x4c, 0xdf, 0x33, 0xea, 0xf7, 0x32, 0x0c, 0x98, 0x8b, 0x3c, 0x98, 0xf3, 0x83, - 0x99, 0xe9, 0x03, 0xa8, 0xfa, 0xc6, 0x00, 0x9c, 0x65, 0x0e, 0x9c, 0x27, 0x24, 0x23, 0x97, 0x3e, - 0x40, 0x0f, 0x4a, 0x30, 0x59, 0xdf, 0xde, 0x75, 0xdb, 0xd6, 0x45, 0x53, 0x9d, 0x0a, 0x90, 0x51, - 0xbf, 0xc5, 0xca, 0xe4, 0xa9, 0xbc, 0x4c, 0x6e, 0xd8, 0x5f, 0x09, 0x4a, 0x21, 0x42, 0x1a, 0xaf, - 0x0b, 0xa4, 0x51, 0xe4, 0xa4, 0xf1, 0x38, 0x51, 0x42, 0xe9, 0xcb, 0xe1, 0x15, 0x4f, 0x86, 0x5c, - 0xbd, 0xab, 0xb7, 0x90, 0xfa, 0xc7, 0x32, 0xcc, 0xac, 0x22, 0x7d, 0x0f, 0x15, 0xbb, 0x5d, 0xdb, - 0xda, 0x43, 0x6a, 0x29, 0xd4, 0xd7, 0x53, 0x30, 0xe1, 0x78, 0x99, 0x2a, 0x6d, 0x5c, 0x83, 0x29, - 0xcd, 0x7f, 0x55, 0x4e, 0x03, 0x18, 0x6d, 0x64, 0xba, 0x86, 0x6b, 0x20, 0xe7, 0x94, 0x74, 0x8d, - 0x7c, 0xc3, 0x94, 0xc6, 0xa4, 0xa8, 0xdf, 0x91, 0x44, 0x75, 0x0c, 0x73, 0x31, 0xcf, 0x72, 0x10, - 0x21, 0xd5, 0x37, 0x48, 0x22, 0x3a, 0x36, 0x90, 0x5c, 0x32, 0xd9, 0xbe, 0x2d, 0x93, 0x5c, 0xb8, - 0x5e, 0x8e, 0x6a, 0xad, 0x59, 0xdf, 0x28, 0xad, 0x34, 0xeb, 0xeb, 0xc5, 0x52, 0xb9, 0x80, 0x94, - 0xe3, 0x50, 0xc0, 0x8f, 0xcd, 0x4a, 0xbd, 0xb9, 0x58, 0x5e, 0x2d, 0x37, 0xca, 0x8b, 0x85, 0x4d, - 0x45, 0x81, 0x39, 0xad, 0xfc, 0xb4, 0x8d, 0x72, 0xbd, 0xd1, 0x5c, 0x2a, 0x56, 0x56, 0xcb, 0x8b, - 0x85, 0x2d, 0xef, 0xe7, 0xd5, 0xca, 0x5a, 0xa5, 0xd1, 0xd4, 0xca, 0xc5, 0xd2, 0x4a, 0x79, 0xb1, - 0xb0, 0xad, 0x5c, 0x0e, 0x97, 0x55, 0x6b, 0xcd, 0xe2, 0xfa, 0xba, 0x56, 0x3b, 0x5b, 0x6e, 0xd2, - 0x3f, 0xea, 0x05, 0x83, 0x14, 0xd4, 0x68, 0xd6, 0x57, 0x8a, 0x5a, 0xb9, 0xb8, 0xb0, 0x5a, 0x2e, - 0xdc, 0xaf, 0x3e, 0x5b, 0x86, 0xd9, 0x35, 0xfd, 0x02, 0xaa, 0x6f, 0xeb, 0x36, 0xd2, 0xcf, 0x77, - 0x90, 0x7a, 0xad, 0x00, 0x9e, 0xea, 0x1f, 0xb3, 0x78, 0x95, 0x79, 0xbc, 0x6e, 0xee, 0x23, 0x60, - 0xae, 0x88, 0x08, 0xc0, 0xfe, 0x67, 0xd0, 0x0c, 0x56, 0x38, 0xc0, 0x9e, 0x98, 0x90, 0x5e, 0x32, - 0xc4, 0x7e, 0xee, 0x11, 0x80, 0x98, 0xfa, 0x65, 0x19, 0xe6, 0x2a, 0xe6, 0x9e, 0xe1, 0xa2, 0x65, - 0x64, 0x22, 0xdb, 0x1b, 0x07, 0x84, 0x60, 0x78, 0x58, 0x66, 0x60, 0x58, 0xe2, 0x61, 0xb8, 0xa5, - 0x8f, 0xd8, 0xf8, 0x32, 0x22, 0x46, 0xdb, 0xab, 0x60, 0xca, 0xc0, 0xf9, 0x4a, 0x46, 0x9b, 0x4a, - 0x2c, 0x4c, 0x50, 0xae, 0x83, 0x59, 0xf2, 0xb2, 0x64, 0x74, 0xd0, 0xbd, 0xe8, 0x12, 0x1d, 0x77, - 0xf9, 0x44, 0xf5, 0x17, 0x82, 0xc6, 0x57, 0xe1, 0xb0, 0xfc, 0x89, 0xa4, 0x4c, 0x25, 0x03, 0xf3, - 0x65, 0x8f, 0x84, 0xe6, 0xb7, 0xaf, 0x95, 0x19, 0xea, 0xf7, 0x25, 0x98, 0xae, 0xbb, 0x56, 0xd7, - 0x53, 0x59, 0xc3, 0xdc, 0x12, 0x03, 0xf7, 0x93, 0x6c, 0x1b, 0x2b, 0xf1, 0xe0, 0x3e, 0xae, 0x8f, - 0x1c, 0x99, 0x02, 0x22, 0x5a, 0xd8, 0x77, 0x82, 0x16, 0xb6, 0xc4, 0xa1, 0x72, 0x6b, 0x22, 0x6a, - 0x3f, 0x84, 0xed, 0xeb, 0x65, 0x32, 0x14, 0x7c, 0x35, 0x73, 0x4b, 0xbb, 0xb6, 0x8d, 0x4c, 0x57, - 0x0c, 0x84, 0xbf, 0x62, 0x41, 0x58, 0xe1, 0x41, 0xb8, 0x35, 0x46, 0x99, 0xfd, 0x52, 0x52, 0x6c, - 0x63, 0x1f, 0x0e, 0xd0, 0xbc, 0x97, 0x43, 0xf3, 0x27, 0x93, 0xb3, 0x95, 0x0c, 0xd2, 0x95, 0x21, - 0x10, 0x3d, 0x0e, 0x05, 0x6f, 0x4c, 0x2a, 0x35, 0x2a, 0x67, 0xcb, 0xcd, 0x4a, 0xf5, 0x6c, 0xa5, - 0x51, 0x2e, 0x20, 0xf5, 0xa5, 0x32, 0xcc, 0x10, 0xd6, 0x34, 0xb4, 0x67, 0x5d, 0x10, 0xec, 0xf5, - 0xbe, 0x9c, 0xd0, 0x58, 0x60, 0x4b, 0x88, 0x68, 0x19, 0x2f, 0x48, 0x60, 0x2c, 0xc4, 0x90, 0x7b, - 0x24, 0xf5, 0x56, 0xfb, 0x9a, 0xc1, 0x56, 0x9f, 0xd6, 0xd2, 0xb7, 0xb7, 0x7a, 0x59, 0x16, 0x80, - 0x54, 0xf2, 0xac, 0x81, 0x2e, 0xaa, 0x6b, 0x21, 0x26, 0x9c, 0xda, 0x66, 0x06, 0xaa, 0xad, 0xd4, - 0x4f, 0x6d, 0xdf, 0xc7, 0x8e, 0x59, 0x0b, 0x3c, 0x7a, 0x37, 0x45, 0x8a, 0xdb, 0xe3, 0x24, 0x7a, - 0x76, 0xe8, 0x2b, 0x8a, 0xc4, 0x5b, 0x9d, 0x57, 0xc1, 0x14, 0x7e, 0xac, 0xea, 0x3b, 0x88, 0xb6, - 0xa1, 0x30, 0x41, 0x39, 0x03, 0x33, 0x24, 0x63, 0xcb, 0x32, 0xbd, 0xfa, 0x64, 0x71, 0x06, 0x2e, - 0xcd, 0x03, 0xb1, 0x65, 0x23, 0xdd, 0xb5, 0x6c, 0x4c, 0x23, 0x47, 0x40, 0x64, 0x92, 0xd4, 0x6f, - 0x06, 0xad, 0xb0, 0xcc, 0x69, 0xce, 0xe3, 0x93, 0x54, 0x25, 0x99, 0xde, 0xec, 0x0d, 0xd7, 0xfe, - 0x48, 0xab, 0x6b, 0x7a, 0x68, 0x2f, 0xe1, 0xa9, 0x1d, 0x52, 0x4e, 0x82, 0x42, 0x53, 0xbd, 0xbc, - 0xa5, 0x5a, 0xb5, 0x51, 0xae, 0x36, 0x0a, 0x9b, 0x7d, 0x35, 0x6a, 0x4b, 0x7d, 0x43, 0x16, 0xb2, - 0xf7, 0x58, 0x86, 0xa9, 0x3e, 0x98, 0xe1, 0x54, 0xc2, 0x44, 0xee, 0x45, 0xcb, 0xbe, 0x10, 0x34, - 0xd4, 0x30, 0x21, 0x1e, 0x9b, 0x50, 0x95, 0xe4, 0x81, 0xaa, 0x94, 0xed, 0xa7, 0x4a, 0xbf, 0xcc, - 0xaa, 0xd2, 0x1d, 0xbc, 0x2a, 0x5d, 0xdf, 0x47, 0xfe, 0x1e, 0xf3, 0x11, 0x1d, 0xc0, 0x27, 0x82, - 0x0e, 0xe0, 0x2e, 0x0e, 0xc6, 0xc7, 0x8a, 0x91, 0x49, 0x06, 0xe0, 0x97, 0x52, 0x6d, 0xf8, 0xfd, - 0xa0, 0xde, 0x8a, 0x80, 0x7a, 0xbb, 0x4f, 0x9f, 0x60, 0xec, 0xef, 0x3a, 0xee, 0xdf, 0xdf, 0x4d, - 0x5c, 0x50, 0x4e, 0xc0, 0xb1, 0xc5, 0xca, 0xd2, 0x52, 0x59, 0x2b, 0x57, 0x1b, 0xcd, 0x6a, 0xb9, - 0x71, 0xae, 0xa6, 0xdd, 0x5b, 0xe8, 0xa8, 0x0f, 0xc9, 0x00, 0x9e, 0x84, 0x4a, 0xba, 0xd9, 0x42, - 0x1d, 0xb1, 0x1e, 0xfd, 0xff, 0x96, 0x92, 0xf5, 0x09, 0x21, 0xfd, 0x08, 0x38, 0x5f, 0x2d, 0x89, - 0xb7, 0xca, 0x48, 0x62, 0xc9, 0x40, 0x7d, 0xcb, 0x23, 0xc1, 0xf6, 0xbc, 0x0c, 0x8e, 0xfa, 0xf4, - 0x68, 0xf6, 0xfe, 0xd3, 0xbe, 0xb7, 0x67, 0x61, 0x8e, 0xc2, 0xe2, 0xcf, 0xe3, 0x9f, 0x97, 0x11, - 0x99, 0xc8, 0xab, 0x30, 0x49, 0xa7, 0xed, 0x7e, 0xf7, 0x1e, 0xbc, 0x2b, 0xcb, 0x30, 0xdd, 0x45, - 0xf6, 0x8e, 0xe1, 0x38, 0x86, 0x65, 0x92, 0x05, 0xb9, 0xb9, 0x5b, 0x1f, 0x1d, 0x48, 0x1c, 0xaf, - 0x5d, 0xce, 0xaf, 0xeb, 0xb6, 0x6b, 0xb4, 0x8c, 0xae, 0x6e, 0xba, 0xeb, 0x61, 0x66, 0x8d, 0xfd, - 0x53, 0x7d, 0x49, 0xc2, 0x69, 0x0d, 0x5f, 0x93, 0x08, 0x95, 0xf8, 0xdd, 0x04, 0x53, 0x92, 0x58, - 0x82, 0xc9, 0xd4, 0xe2, 0xe3, 0xa9, 0xaa, 0x45, 0x1f, 0xbc, 0xb7, 0x94, 0x2b, 0xe0, 0x44, 0xa5, - 0x5a, 0xaa, 0x69, 0x5a, 0xb9, 0xd4, 0x68, 0xae, 0x97, 0xb5, 0xb5, 0x4a, 0xbd, 0x5e, 0xa9, 0x55, - 0xeb, 0x07, 0x69, 0xed, 0xea, 0xa7, 0xe4, 0x40, 0x63, 0x16, 0x51, 0xab, 0x63, 0x98, 0x48, 0xbd, - 0xeb, 0x80, 0x0a, 0xc3, 0xaf, 0xfa, 0x88, 0xe3, 0x4c, 0xcb, 0x8f, 0xc0, 0xf9, 0xf5, 0xc9, 0x71, - 0xee, 0x4f, 0xf0, 0x3f, 0x70, 0xf3, 0xff, 0xb2, 0x0c, 0xc7, 0x98, 0x86, 0xa8, 0xa1, 0x9d, 0x91, - 0xad, 0xe4, 0xfd, 0x1c, 0xdb, 0x76, 0x2b, 0x3c, 0xa6, 0xfd, 0xac, 0xe9, 0x7d, 0x6c, 0x44, 0xc0, - 0xfa, 0x96, 0x00, 0xd6, 0x55, 0x0e, 0xd6, 0x27, 0x0f, 0x41, 0x33, 0x19, 0xb2, 0xbf, 0x9d, 0x2a, - 0xb2, 0x57, 0xc0, 0x89, 0xf5, 0xa2, 0xd6, 0xa8, 0x94, 0x2a, 0xeb, 0x45, 0x6f, 0x1c, 0x65, 0x86, - 0xec, 0x08, 0x73, 0x9d, 0x07, 0xbd, 0x2f, 0xbe, 0x1f, 0xca, 0xc2, 0x55, 0xfd, 0x3b, 0xda, 0xd2, - 0xb6, 0x6e, 0x6e, 0x21, 0xd5, 0x10, 0x81, 0x7a, 0x11, 0x26, 0x5a, 0x38, 0x3b, 0xc1, 0x99, 0xdd, - 0xba, 0x89, 0xe9, 0xcb, 0x49, 0x09, 0x9a, 0xff, 0xab, 0xfa, 0x2e, 0x56, 0x21, 0x1a, 0xbc, 0x42, - 0x3c, 0x35, 0x1e, 0xbc, 0x7d, 0x7c, 0x47, 0xe8, 0xc6, 0x67, 0x02, 0xdd, 0x38, 0xc7, 0xe9, 0x46, - 0xe9, 0x60, 0xe4, 0x93, 0xa9, 0xc9, 0x1f, 0x3d, 0x12, 0x3a, 0x80, 0x48, 0x6d, 0x32, 0xa2, 0x47, - 0x85, 0xbe, 0xdd, 0xfd, 0x6b, 0x65, 0xc8, 0x2f, 0xa2, 0x0e, 0x12, 0x5d, 0x89, 0xfc, 0xb6, 0x24, - 0xba, 0x21, 0x42, 0x60, 0x20, 0xb4, 0xa3, 0x57, 0x47, 0x5c, 0x63, 0x07, 0x39, 0xae, 0xbe, 0xd3, - 0xc5, 0xa2, 0x96, 0xb5, 0x30, 0x41, 0xfd, 0x79, 0x49, 0x64, 0xbb, 0x24, 0xa6, 0x98, 0xff, 0x18, - 0x6b, 0x8a, 0x9f, 0x93, 0x60, 0xb2, 0x8e, 0xdc, 0x9a, 0xdd, 0x46, 0xb6, 0x5a, 0x0f, 0x31, 0xba, - 0x06, 0xa6, 0x31, 0x28, 0xde, 0x34, 0x33, 0xc0, 0x89, 0x4d, 0x52, 0xae, 0x87, 0xb9, 0xe0, 0x15, - 0xff, 0x4e, 0xbb, 0xf1, 0x9e, 0x54, 0xf5, 0x9f, 0x32, 0xa2, 0xbb, 0xb8, 0x74, 0xc9, 0x90, 0x72, - 0x13, 0xd1, 0x4a, 0xc5, 0x76, 0x64, 0x63, 0x49, 0xa5, 0xbf, 0xd1, 0xf5, 0x0e, 0x09, 0x60, 0xc3, - 0x74, 0x7c, 0xb9, 0x3e, 0x36, 0x81, 0x5c, 0xd5, 0x7f, 0xc9, 0x24, 0x9b, 0xc5, 0x84, 0xe5, 0x44, - 0x48, 0xec, 0x37, 0x12, 0xac, 0x2d, 0x44, 0x12, 0x4b, 0x5f, 0x66, 0x5f, 0x9b, 0x83, 0xfc, 0x39, - 0xbd, 0xd3, 0x41, 0xae, 0xfa, 0x75, 0x09, 0xf2, 0x25, 0x1b, 0xe9, 0x2e, 0x62, 0x45, 0xa7, 0xc2, - 0xa4, 0x6d, 0x59, 0xee, 0xba, 0xee, 0x6e, 0x53, 0xb9, 0x05, 0xef, 0xd4, 0x61, 0xe0, 0xb7, 0xd8, - 0xee, 0xe3, 0x2e, 0x5e, 0x74, 0x3f, 0xce, 0xd5, 0x96, 0x14, 0x34, 0x4f, 0x0a, 0x89, 0xe8, 0x3f, - 0x54, 0x98, 0xdc, 0x31, 0xd1, 0x8e, 0x65, 0x1a, 0x2d, 0xdf, 0xe6, 0xf4, 0xdf, 0xd5, 0x8f, 0x04, - 0x32, 0x5d, 0xe0, 0x64, 0x3a, 0x2f, 0x5c, 0x4a, 0x32, 0x81, 0xd6, 0x87, 0xe8, 0x3d, 0xae, 0x86, - 0x2b, 0x49, 0x67, 0xd0, 0x6c, 0xd4, 0x9a, 0x25, 0xad, 0x5c, 0x6c, 0x94, 0x9b, 0xab, 0xb5, 0x52, - 0x71, 0xb5, 0xa9, 0x95, 0xd7, 0x6b, 0x05, 0xa4, 0xfe, 0xbd, 0xe4, 0x09, 0xb7, 0x65, 0xed, 0x21, - 0x5b, 0x5d, 0x16, 0x92, 0x73, 0x9c, 0x4c, 0x28, 0x06, 0xbf, 0x2c, 0xec, 0xb4, 0x41, 0xa5, 0x43, - 0x39, 0x88, 0x50, 0xde, 0x8f, 0x0a, 0x35, 0xf7, 0x58, 0x52, 0x8f, 0x00, 0x49, 0xff, 0x0f, 0x09, - 0x26, 0x4a, 0x96, 0xb9, 0x87, 0x6c, 0x97, 0x9d, 0xef, 0xb0, 0xd2, 0xcc, 0xf0, 0xd2, 0xf4, 0x06, - 0x49, 0x64, 0xba, 0xb6, 0xd5, 0xf5, 0x27, 0x3c, 0xfe, 0xab, 0xfa, 0xa6, 0xa4, 0x12, 0xa6, 0x25, - 0x47, 0x2f, 0x7c, 0xf6, 0x2f, 0x88, 0x63, 0x4f, 0xee, 0x69, 0x00, 0x0f, 0x25, 0xc1, 0xa5, 0x3f, - 0x03, 0xe9, 0x77, 0x29, 0x5f, 0x91, 0x61, 0x96, 0x34, 0xbe, 0x3a, 0xc2, 0x16, 0x9a, 0x5a, 0x63, - 0x97, 0x1c, 0x7b, 0x84, 0xbf, 0x72, 0x84, 0x13, 0x7f, 0x5e, 0xef, 0x76, 0x83, 0xe5, 0xe7, 0x95, - 0x23, 0x1a, 0x7d, 0x27, 0x6a, 0xbe, 0x90, 0x87, 0xac, 0xbe, 0xeb, 0x6e, 0xab, 0xdf, 0x17, 0x9e, - 0x7c, 0x72, 0x9d, 0x01, 0xe5, 0x27, 0x02, 0x92, 0xe3, 0x90, 0x73, 0xad, 0x0b, 0xc8, 0x97, 0x03, - 0x79, 0xf1, 0xe0, 0xd0, 0xbb, 0xdd, 0x06, 0xfe, 0x40, 0xe1, 0xf0, 0xdf, 0x3d, 0x5b, 0x47, 0x6f, - 0xb5, 0xac, 0x5d, 0xd3, 0xad, 0xf8, 0x4b, 0xd0, 0x61, 0x82, 0xfa, 0xc5, 0x8c, 0xc8, 0x64, 0x56, - 0x80, 0xc1, 0x64, 0x90, 0x9d, 0x1f, 0xa2, 0x29, 0xcd, 0xc3, 0x8d, 0xc5, 0xf5, 0xf5, 0x66, 0xa3, - 0x76, 0x6f, 0xb9, 0x1a, 0x1a, 0x9e, 0xcd, 0x4a, 0xb5, 0xd9, 0x58, 0x29, 0x37, 0x4b, 0x1b, 0x1a, - 0x5e, 0x27, 0x2c, 0x96, 0x4a, 0xb5, 0x8d, 0x6a, 0xa3, 0x80, 0xd4, 0xb7, 0x4a, 0x30, 0x53, 0xea, - 0x58, 0x4e, 0x80, 0xf0, 0xd5, 0x21, 0xc2, 0x81, 0x18, 0x33, 0x8c, 0x18, 0xd5, 0x7f, 0xcb, 0x88, - 0x3a, 0x1d, 0xf8, 0x02, 0x61, 0xc8, 0x47, 0xf4, 0x52, 0x6f, 0x12, 0x72, 0x3a, 0x18, 0x4c, 0x2f, - 0xfd, 0x26, 0xf1, 0xff, 0xdd, 0x05, 0x13, 0x45, 0xa2, 0x18, 0xea, 0xdf, 0x64, 0x20, 0x5f, 0xb2, - 0xcc, 0x4d, 0x63, 0xcb, 0x33, 0xe6, 0x90, 0xa9, 0x9f, 0xef, 0xa0, 0x45, 0xdd, 0xd5, 0xf7, 0x0c, - 0x74, 0x11, 0x57, 0x60, 0x52, 0xeb, 0x49, 0xf5, 0x98, 0xa2, 0x29, 0xe8, 0xfc, 0xee, 0x16, 0x66, - 0x6a, 0x52, 0x63, 0x93, 0x94, 0x27, 0xc3, 0xe5, 0xe4, 0x75, 0xdd, 0x46, 0x36, 0xea, 0x20, 0xdd, - 0x41, 0xde, 0xb4, 0xc8, 0x44, 0x1d, 0xac, 0xb4, 0x93, 0x5a, 0xd4, 0x67, 0xe5, 0x0c, 0xcc, 0x90, - 0x4f, 0xd8, 0x14, 0x71, 0xb0, 0x1a, 0x4f, 0x6a, 0x5c, 0x9a, 0xf2, 0x38, 0xc8, 0xa1, 0x07, 0x5c, - 0x5b, 0x3f, 0xd5, 0xc6, 0x78, 0x5d, 0x3e, 0x4f, 0xbc, 0x0e, 0xe7, 0x7d, 0xaf, 0xc3, 0xf9, 0x3a, - 0xf6, 0x49, 0xd4, 0x48, 0x2e, 0xf5, 0x55, 0x93, 0x81, 0x21, 0xf1, 0x03, 0x29, 0x54, 0x0c, 0x05, - 0xb2, 0xa6, 0xbe, 0x83, 0xa8, 0x5e, 0xe0, 0x67, 0xe5, 0x46, 0x38, 0xaa, 0xef, 0xe9, 0xae, 0x6e, - 0xaf, 0x5a, 0x2d, 0xbd, 0x83, 0x07, 0x3f, 0xbf, 0xe5, 0xf7, 0x7e, 0xc0, 0x3b, 0x42, 0xae, 0x65, - 0x23, 0x9c, 0xcb, 0xdf, 0x11, 0xf2, 0x13, 0x3c, 0xea, 0x46, 0xcb, 0x32, 0x31, 0xff, 0xb2, 0x86, - 0x9f, 0x3d, 0xa9, 0xb4, 0x0d, 0xc7, 0xab, 0x08, 0xa6, 0x52, 0x25, 0x5b, 0x1b, 0xf5, 0x4b, 0x66, - 0x0b, 0xef, 0x06, 0x4d, 0x6a, 0x51, 0x9f, 0x95, 0x05, 0x98, 0xa6, 0x1b, 0x21, 0x6b, 0x9e, 0x5e, - 0xe5, 0xb1, 0x5e, 0x5d, 0xc3, 0xfb, 0x74, 0x11, 0x3c, 0xe7, 0xab, 0x61, 0x3e, 0x8d, 0xfd, 0x49, - 0xb9, 0x1b, 0xae, 0xa4, 0xaf, 0xa5, 0x5d, 0xc7, 0xb5, 0x76, 0x08, 0xe8, 0x4b, 0x46, 0x87, 0xd4, - 0x60, 0x02, 0xd7, 0x20, 0x2e, 0x8b, 0x72, 0x2b, 0x1c, 0xef, 0xda, 0x68, 0x13, 0xd9, 0xf7, 0xe9, - 0x3b, 0xbb, 0x0f, 0x34, 0x6c, 0xdd, 0x74, 0xba, 0x96, 0xed, 0x9e, 0x9a, 0xc4, 0xcc, 0xf7, 0xfd, - 0x46, 0x3b, 0xca, 0x49, 0xc8, 0x13, 0xf1, 0xa9, 0x2f, 0xce, 0x09, 0xbb, 0x73, 0xd2, 0x0a, 0xc5, - 0x9a, 0x67, 0xb7, 0xc0, 0x04, 0xed, 0xe1, 0x30, 0x50, 0xd3, 0xb7, 0x9e, 0xec, 0x59, 0x57, 0xa0, - 0x54, 0x34, 0x3f, 0x9b, 0xf2, 0x04, 0xc8, 0xb7, 0x70, 0xb5, 0x30, 0x66, 0xd3, 0xb7, 0x5e, 0xd9, - 0xbf, 0x50, 0x9c, 0x45, 0xa3, 0x59, 0xd5, 0xbf, 0x94, 0x85, 0x3c, 0x40, 0xe3, 0x38, 0x4e, 0xd6, - 0xaa, 0xbf, 0x29, 0x0d, 0xd1, 0x6d, 0xde, 0x04, 0x37, 0xd0, 0x3e, 0x91, 0xda, 0x1f, 0x8b, 0xcd, - 0x85, 0x0d, 0x7f, 0x32, 0xe8, 0x59, 0x25, 0xf5, 0x46, 0x51, 0xf3, 0x66, 0xf2, 0x8b, 0xde, 0x24, - 0xf2, 0x46, 0xb8, 0x7e, 0x40, 0xee, 0x72, 0xa3, 0x59, 0x2d, 0xae, 0x95, 0x0b, 0x9b, 0xbc, 0x6d, - 0x53, 0x6f, 0xd4, 0xd6, 0x9b, 0xda, 0x46, 0xb5, 0x5a, 0xa9, 0x2e, 0x13, 0x62, 0x9e, 0x49, 0x78, - 0x32, 0xcc, 0x70, 0x4e, 0xab, 0x34, 0xca, 0xcd, 0x52, 0xad, 0xba, 0x54, 0x59, 0x2e, 0x18, 0x83, - 0x0c, 0xa3, 0xfb, 0x95, 0x6b, 0xe0, 0x2a, 0x8e, 0x93, 0x4a, 0xad, 0xea, 0xcd, 0x6c, 0x4b, 0xc5, - 0x6a, 0xa9, 0xec, 0x4d, 0x63, 0x2f, 0x28, 0x2a, 0x9c, 0x20, 0xe4, 0x9a, 0x4b, 0x95, 0x55, 0x76, - 0x33, 0xea, 0x93, 0x19, 0xe5, 0x14, 0x5c, 0xc6, 0x7e, 0xab, 0x54, 0xcf, 0x16, 0x57, 0x2b, 0x8b, - 0x85, 0x3f, 0xcc, 0x28, 0xd7, 0xc1, 0xd5, 0xdc, 0x5f, 0x64, 0x5f, 0xa9, 0x59, 0x59, 0x6c, 0xae, - 0x55, 0xea, 0x6b, 0xc5, 0x46, 0x69, 0xa5, 0xf0, 0x29, 0x3c, 0x5f, 0x08, 0x0c, 0x60, 0xc6, 0x2d, - 0xf3, 0x65, 0xec, 0x98, 0x5e, 0xe4, 0x15, 0xf5, 0xb1, 0x7d, 0x61, 0x8f, 0xb7, 0x61, 0x3f, 0x1e, - 0x8c, 0x0e, 0x8b, 0x9c, 0x0a, 0xdd, 0x92, 0x80, 0x56, 0x32, 0x1d, 0x6a, 0x0c, 0xa1, 0x42, 0xd7, - 0xc0, 0x55, 0xd5, 0x32, 0x41, 0x4a, 0x2b, 0x97, 0x6a, 0x67, 0xcb, 0x5a, 0xf3, 0x5c, 0x71, 0x75, - 0xb5, 0xdc, 0x68, 0x2e, 0x55, 0xb4, 0x7a, 0xa3, 0xb0, 0xa9, 0xfe, 0x8b, 0x14, 0xac, 0xe6, 0x30, - 0xd2, 0xfa, 0x1b, 0x29, 0x69, 0xb3, 0x8e, 0x5d, 0xb5, 0xf9, 0x09, 0xc8, 0x3b, 0xae, 0xee, 0xee, - 0x3a, 0xb4, 0x55, 0x3f, 0xaa, 0x7f, 0xab, 0x9e, 0xaf, 0xe3, 0x4c, 0x1a, 0xcd, 0xac, 0xfe, 0x65, - 0x26, 0x49, 0x33, 0x1d, 0xc1, 0x82, 0x8e, 0x31, 0x84, 0x88, 0x4f, 0x83, 0xea, 0x6b, 0x7b, 0xa5, - 0xde, 0x2c, 0xae, 0x6a, 0xe5, 0xe2, 0xe2, 0x7d, 0xc1, 0x32, 0x0e, 0x52, 0x4e, 0xc0, 0xb1, 0x8d, - 0x6a, 0x71, 0x61, 0xb5, 0x8c, 0x9b, 0x4b, 0xad, 0x5a, 0x2d, 0x97, 0x3c, 0xb9, 0xff, 0x3c, 0xde, - 0x34, 0xf1, 0x2c, 0x68, 0xcc, 0xb7, 0x67, 0xe5, 0x30, 0xf2, 0xff, 0x86, 0xb0, 0x6f, 0x51, 0xa8, - 0x61, 0x2c, 0xad, 0xd1, 0xe2, 0xf0, 0x45, 0x21, 0x77, 0x22, 0x21, 0x4e, 0x92, 0xe1, 0xf1, 0x9f, - 0x87, 0xc0, 0xe3, 0x04, 0x1c, 0x63, 0xf1, 0xc0, 0x6e, 0x45, 0xd1, 0x30, 0x7c, 0x4e, 0x82, 0x89, - 0x35, 0x63, 0x0b, 0xfb, 0x55, 0x3e, 0x25, 0x34, 0x26, 0xe6, 0x40, 0x0a, 0xdc, 0x58, 0x24, 0xa3, - 0xcd, 0x4d, 0x9f, 0xa5, 0xbe, 0xcb, 0x14, 0x2f, 0x48, 0xdc, 0xbf, 0xd0, 0x62, 0x23, 0xfa, 0x97, - 0x0f, 0x24, 0xea, 0x5f, 0xfa, 0xd3, 0x4a, 0x26, 0xec, 0xca, 0xc1, 0x84, 0xcd, 0x38, 0x8f, 0xa8, - 0xef, 0x94, 0x60, 0x96, 0xb2, 0x44, 0xf7, 0xfa, 0xaf, 0x8e, 0x94, 0x2d, 0x95, 0xdf, 0x0f, 0x58, - 0x0b, 0x7e, 0x99, 0x97, 0xdf, 0xe3, 0xe3, 0xea, 0x1c, 0xbb, 0xd9, 0xff, 0xe6, 0x40, 0x8a, 0xf7, - 0x70, 0x52, 0x7c, 0x52, 0x62, 0x8a, 0xe9, 0x5b, 0xf1, 0xcf, 0x9a, 0x82, 0x7c, 0x1d, 0x75, 0x50, - 0xcb, 0x55, 0xdf, 0x2e, 0x0d, 0xa5, 0x8a, 0x71, 0x16, 0xa9, 0x9c, 0xc8, 0x22, 0xcd, 0xa6, 0x60, - 0x91, 0xe6, 0x86, 0xb7, 0x48, 0xf3, 0x83, 0x2c, 0x52, 0xf5, 0x63, 0xf9, 0xa4, 0x03, 0x16, 0x11, - 0xf5, 0xe1, 0xda, 0xa1, 0xbf, 0x98, 0x4b, 0x32, 0xc0, 0xf5, 0xe5, 0x38, 0x99, 0x5e, 0xbe, 0x3a, - 0x9b, 0xc2, 0x4a, 0x98, 0x72, 0x2d, 0x5c, 0x1d, 0xbe, 0x37, 0xcb, 0x4f, 0xaf, 0xd4, 0x1b, 0x75, - 0x6c, 0x7c, 0x96, 0x6a, 0x9a, 0xb6, 0xb1, 0x4e, 0xb6, 0x33, 0x4e, 0x82, 0x12, 0x52, 0xd1, 0x36, - 0xaa, 0xc4, 0xd4, 0xdc, 0xe2, 0xa9, 0x2f, 0x55, 0xaa, 0x8b, 0xcd, 0xa0, 0xfb, 0xae, 0x2e, 0xd5, - 0x0a, 0xdb, 0xca, 0x3c, 0xdc, 0xc8, 0x50, 0xf7, 0xba, 0x19, 0x5a, 0x42, 0xb1, 0xba, 0xd8, 0x5c, - 0xab, 0x96, 0xd7, 0x6a, 0xd5, 0x4a, 0x09, 0xa7, 0xd7, 0xcb, 0x8d, 0x82, 0xe1, 0xd9, 0x3c, 0x3d, - 0xc6, 0x6d, 0xbd, 0x5c, 0xd4, 0x4a, 0x2b, 0x65, 0x8d, 0x14, 0x79, 0xbf, 0x72, 0x3d, 0x9c, 0x29, - 0x56, 0x6b, 0x0d, 0x2f, 0xa5, 0x58, 0xbd, 0xaf, 0x71, 0xdf, 0x7a, 0xb9, 0xb9, 0xae, 0xd5, 0x4a, - 0xe5, 0x7a, 0xdd, 0x1b, 0x32, 0xa8, 0x29, 0x5c, 0xe8, 0x28, 0x4f, 0x85, 0xdb, 0x19, 0xd6, 0xca, - 0x0d, 0xbc, 0x77, 0xbe, 0x56, 0xc3, 0xee, 0x53, 0x8b, 0xe5, 0xe6, 0x4a, 0xb1, 0xde, 0xac, 0x54, - 0x4b, 0xb5, 0xb5, 0xf5, 0x62, 0xa3, 0xe2, 0x8d, 0x2c, 0xeb, 0x5a, 0xad, 0x51, 0x6b, 0x9e, 0x2d, - 0x6b, 0xf5, 0x4a, 0xad, 0x5a, 0x30, 0xbd, 0x2a, 0x33, 0x43, 0x91, 0x6f, 0x12, 0x58, 0xca, 0x55, - 0x70, 0xca, 0x4f, 0x5f, 0xad, 0x79, 0x82, 0x66, 0x8c, 0xe3, 0x2e, 0x6b, 0x50, 0xd4, 0x1b, 0x35, - 0x8d, 0x98, 0xc7, 0x6b, 0x95, 0x65, 0xcd, 0xb3, 0xe9, 0x0b, 0xcf, 0x48, 0xd5, 0x78, 0xfe, 0x57, - 0x09, 0xb2, 0x75, 0xd7, 0xea, 0xaa, 0x3f, 0x1e, 0x76, 0x40, 0xa7, 0x01, 0x6c, 0xbc, 0x55, 0xbe, - 0xa8, 0xbb, 0x3a, 0x5d, 0x42, 0x60, 0x52, 0xd4, 0x3f, 0x10, 0xde, 0xdf, 0x0b, 0xcd, 0x0b, 0xab, - 0x1b, 0xd1, 0x61, 0x7f, 0x4f, 0xec, 0xc0, 0x53, 0x34, 0xa1, 0x64, 0xed, 0xe1, 0x05, 0xc3, 0xec, - 0xe0, 0xa9, 0x70, 0x92, 0x81, 0xd5, 0x93, 0xbf, 0xaf, 0x32, 0x48, 0xb9, 0x1c, 0x2e, 0xeb, 0x51, - 0x3e, 0xac, 0x73, 0x9b, 0xca, 0x8f, 0xc1, 0xa3, 0x18, 0xf5, 0x2f, 0xaf, 0xd5, 0xce, 0x96, 0x03, - 0x45, 0x5f, 0x2c, 0x36, 0x8a, 0x85, 0x2d, 0xf5, 0x73, 0x32, 0x64, 0xd7, 0xac, 0xbd, 0xde, 0x6d, - 0x55, 0x13, 0x5d, 0x64, 0x96, 0xed, 0xfd, 0x57, 0xfe, 0x80, 0x87, 0x90, 0xd8, 0xd7, 0xa2, 0x5d, - 0x28, 0xbe, 0x28, 0x25, 0x11, 0xfb, 0xda, 0x41, 0xfd, 0x26, 0xfe, 0x61, 0x18, 0xb1, 0x47, 0x88, - 0x16, 0x29, 0x67, 0xe0, 0x74, 0xf8, 0xa1, 0xb2, 0x58, 0xae, 0x36, 0x2a, 0x4b, 0xf7, 0x85, 0xc2, - 0xad, 0x68, 0x42, 0xe2, 0x1f, 0xd4, 0xcd, 0xc5, 0x4f, 0x8a, 0x4f, 0xc1, 0xf1, 0xf0, 0xdb, 0x72, - 0xb9, 0xe1, 0x7f, 0xb9, 0x5f, 0x7d, 0x30, 0x07, 0x33, 0xa4, 0xdb, 0xdf, 0xe8, 0xb6, 0x3d, 0x33, - 0xf3, 0x09, 0x21, 0xba, 0x37, 0xc0, 0xd1, 0xca, 0xfa, 0x52, 0xbd, 0xee, 0x5a, 0xb6, 0xbe, 0x85, - 0x8a, 0xed, 0xb6, 0x4d, 0xa5, 0xd5, 0x9b, 0xac, 0xbe, 0x47, 0x78, 0x49, 0x9a, 0x1f, 0x6a, 0x48, - 0x99, 0x11, 0xa8, 0x7f, 0x45, 0x68, 0x09, 0x59, 0x80, 0x60, 0x32, 0xf4, 0xef, 0x1f, 0x71, 0x9b, - 0x8b, 0xc6, 0x65, 0xf3, 0xcc, 0x73, 0x25, 0x98, 0x6a, 0x18, 0x3b, 0xe8, 0x99, 0x96, 0x89, 0x1c, - 0x65, 0x02, 0xe4, 0xe5, 0xb5, 0x46, 0xe1, 0x88, 0xf7, 0xe0, 0xd9, 0xff, 0x19, 0xfc, 0x50, 0xf6, - 0x0a, 0xf0, 0x1e, 0x8a, 0x8d, 0x82, 0xec, 0x3d, 0xac, 0x95, 0x1b, 0x85, 0xac, 0xf7, 0x50, 0x2d, - 0x37, 0x0a, 0x39, 0xef, 0x61, 0x7d, 0xb5, 0x51, 0xc8, 0x7b, 0x0f, 0x95, 0x7a, 0xa3, 0x30, 0xe1, - 0x3d, 0x2c, 0xd4, 0x1b, 0x85, 0x49, 0xef, 0xe1, 0x6c, 0xbd, 0x51, 0x98, 0xf2, 0x1e, 0x4a, 0x8d, - 0x46, 0x01, 0xbc, 0x87, 0x7b, 0xea, 0x8d, 0xc2, 0xb4, 0xf7, 0x50, 0x2c, 0x35, 0x0a, 0x33, 0xf8, - 0xa1, 0xdc, 0x28, 0xcc, 0x7a, 0x0f, 0xf5, 0x7a, 0xa3, 0x30, 0x87, 0x29, 0xd7, 0x1b, 0x85, 0xa3, - 0xb8, 0xac, 0x4a, 0xa3, 0x50, 0xf0, 0x1e, 0x56, 0xea, 0x8d, 0xc2, 0x31, 0x9c, 0xb9, 0xde, 0x28, - 0x28, 0xb8, 0xd0, 0x7a, 0xa3, 0x70, 0x19, 0xce, 0x53, 0x6f, 0x14, 0x8e, 0xe3, 0x22, 0xea, 0x8d, - 0xc2, 0x09, 0xcc, 0x46, 0xb9, 0x51, 0x38, 0x89, 0xf3, 0x68, 0x8d, 0xc2, 0xe5, 0xf8, 0x53, 0xb5, - 0x51, 0x38, 0x85, 0x19, 0x2b, 0x37, 0x0a, 0x57, 0xe0, 0x07, 0xad, 0x51, 0x50, 0xf1, 0xa7, 0x62, - 0xa3, 0x70, 0xa5, 0xfa, 0x28, 0x98, 0x5a, 0x46, 0x2e, 0x01, 0x51, 0x2d, 0x80, 0xbc, 0x8c, 0x5c, - 0x76, 0xc6, 0xf9, 0x35, 0x19, 0x2e, 0xa7, 0xab, 0x14, 0x4b, 0xb6, 0xb5, 0xb3, 0x8a, 0xb6, 0xf4, - 0xd6, 0xa5, 0xf2, 0x03, 0x9e, 0x89, 0xc5, 0xba, 0x10, 0x28, 0x90, 0xed, 0x86, 0x9d, 0x11, 0x7e, - 0x8e, 0xb5, 0x48, 0xfd, 0x75, 0x53, 0x39, 0x5c, 0x37, 0xa5, 0x16, 0xdb, 0x3f, 0xb3, 0x1a, 0xcd, - 0x6d, 0x75, 0x64, 0x7a, 0xb6, 0x3a, 0xbc, 0x66, 0xd2, 0x45, 0xb6, 0x63, 0x99, 0x7a, 0xa7, 0x4e, - 0x7d, 0x4c, 0xc8, 0x02, 0x6d, 0x6f, 0xb2, 0xf2, 0x34, 0xbf, 0x65, 0x10, 0xab, 0xed, 0x29, 0x71, - 0x8b, 0x31, 0xbd, 0xd5, 0x8c, 0x68, 0x24, 0x9f, 0x0a, 0x1a, 0x49, 0x83, 0x6b, 0x24, 0x77, 0x1f, - 0x80, 0xf6, 0x58, 0x26, 0x66, 0xa1, 0x07, 0xb6, 0xbf, 0xb3, 0x22, 0x7b, 0xd3, 0xdd, 0x93, 0x65, - 0xb3, 0xdf, 0x0c, 0x80, 0xd5, 0x85, 0xb7, 0xb2, 0xd0, 0xac, 0xf3, 0x22, 0xbd, 0xbd, 0x6f, 0xb5, - 0xfb, 0xd3, 0x8c, 0x90, 0xe8, 0xa7, 0x03, 0x89, 0xd6, 0x39, 0x89, 0xde, 0x35, 0x3c, 0xe9, 0x64, - 0x02, 0xad, 0x8e, 0xb4, 0x03, 0xca, 0xaa, 0xdf, 0xcc, 0xc2, 0xa3, 0x88, 0x9b, 0x18, 0xe5, 0x90, - 0xb4, 0xb2, 0xa2, 0xd9, 0xd6, 0x90, 0xe3, 0xea, 0xb6, 0xcb, 0x1d, 0xdd, 0xef, 0x99, 0x6a, 0x65, - 0x52, 0x98, 0x6a, 0x49, 0x03, 0xa7, 0x5a, 0xea, 0xbb, 0x59, 0xf3, 0xe1, 0x1c, 0x8f, 0x71, 0xb1, - 0x7f, 0xff, 0x1f, 0x57, 0xc3, 0x28, 0xa8, 0x03, 0xbb, 0xe2, 0xa7, 0x38, 0xa8, 0x97, 0x0e, 0x5c, - 0x42, 0x32, 0xc4, 0xff, 0x60, 0xb4, 0x76, 0x5e, 0x96, 0xfd, 0xc6, 0x1b, 0x25, 0x85, 0x76, 0xaa, - 0x06, 0xfa, 0x67, 0x26, 0x60, 0x0a, 0xb7, 0x85, 0x55, 0xc3, 0xbc, 0xa0, 0x3e, 0x24, 0xc3, 0x4c, - 0x15, 0x5d, 0x2c, 0x6d, 0xeb, 0x9d, 0x0e, 0x32, 0xb7, 0x10, 0x6b, 0xb6, 0x9f, 0x82, 0x09, 0xbd, - 0xdb, 0xad, 0x86, 0x5b, 0x62, 0xfe, 0x2b, 0xed, 0x7f, 0xbf, 0xd1, 0xb7, 0x91, 0x67, 0x62, 0x1a, - 0x79, 0x50, 0xee, 0x3c, 0x5b, 0x66, 0xc4, 0x0c, 0xfa, 0x1a, 0x98, 0x6e, 0xf9, 0x59, 0x82, 0x23, - 0x3e, 0x6c, 0x92, 0xfa, 0x77, 0x89, 0xba, 0x01, 0xa1, 0xc2, 0x93, 0x29, 0x05, 0x1a, 0xb1, 0x1d, - 0x72, 0x02, 0x8e, 0x35, 0x6a, 0xb5, 0xe6, 0x5a, 0xb1, 0x7a, 0x5f, 0x78, 0xb4, 0x7e, 0x53, 0x7d, - 0x75, 0x16, 0xe6, 0xea, 0x56, 0x67, 0x0f, 0x85, 0x30, 0x55, 0x38, 0xdf, 0x31, 0x56, 0x4e, 0x99, - 0x7d, 0x72, 0x52, 0x4e, 0x42, 0x5e, 0x37, 0x9d, 0x8b, 0xc8, 0xb7, 0x0d, 0xe9, 0x1b, 0x85, 0xf1, - 0x43, 0x6c, 0x3b, 0xd6, 0x78, 0x18, 0xef, 0x18, 0x20, 0x49, 0x9e, 0xab, 0x08, 0x20, 0xcf, 0xc0, - 0x8c, 0x43, 0xf6, 0xb5, 0x1b, 0x8c, 0xfb, 0x02, 0x97, 0x86, 0x59, 0x24, 0x8e, 0x15, 0x32, 0x65, - 0x11, 0xbf, 0xa9, 0x0f, 0x05, 0xcd, 0x7f, 0x83, 0x83, 0xb8, 0x78, 0x10, 0xc6, 0x92, 0x81, 0xfc, - 0xda, 0x51, 0xcf, 0xf0, 0x4e, 0xc1, 0x71, 0xda, 0x6a, 0x9b, 0xa5, 0x95, 0xe2, 0xea, 0x6a, 0xb9, - 0xba, 0x5c, 0x6e, 0x56, 0x16, 0xc9, 0xae, 0x5a, 0x98, 0x52, 0x6c, 0x34, 0xca, 0x6b, 0xeb, 0x8d, - 0x7a, 0xb3, 0xfc, 0xf4, 0x52, 0xb9, 0xbc, 0x88, 0xbd, 0x37, 0xf1, 0xf1, 0x2b, 0xdf, 0xcf, 0xb6, - 0x58, 0xad, 0x9f, 0x2b, 0x6b, 0x85, 0xed, 0x33, 0x45, 0x98, 0x66, 0xfa, 0x79, 0x8f, 0xbb, 0x45, - 0xb4, 0xa9, 0xef, 0x76, 0xa8, 0xad, 0x56, 0x38, 0xe2, 0x71, 0x87, 0x65, 0x53, 0x33, 0x3b, 0x97, - 0x0a, 0x19, 0xa5, 0x00, 0x33, 0x6c, 0x97, 0x5e, 0x90, 0xd4, 0x77, 0x5c, 0x05, 0x53, 0xe7, 0x2c, - 0xfb, 0x02, 0x76, 0x39, 0x54, 0xdf, 0x4f, 0x42, 0xf0, 0xf8, 0x87, 0x99, 0x99, 0x81, 0xfd, 0xb5, - 0xe2, 0x8e, 0x2d, 0x3e, 0xb5, 0xf9, 0x81, 0x07, 0x96, 0xaf, 0x81, 0xe9, 0x8b, 0x7e, 0xee, 0xb0, - 0xa5, 0x33, 0x49, 0xea, 0x7f, 0x13, 0x73, 0x55, 0x19, 0x5c, 0x64, 0xfa, 0x8b, 0xb0, 0x6f, 0x97, - 0x20, 0xbf, 0x8c, 0xdc, 0x62, 0xa7, 0xc3, 0xca, 0xed, 0xe5, 0xc2, 0x87, 0xd0, 0xb8, 0x4a, 0x14, - 0x3b, 0x9d, 0xe8, 0x46, 0xc5, 0x08, 0xc8, 0x3f, 0x2c, 0xc1, 0xa5, 0x09, 0xba, 0x78, 0x0e, 0x28, - 0x30, 0x7d, 0x89, 0x7d, 0x44, 0x0e, 0xdc, 0x31, 0x1e, 0x66, 0xac, 0x9c, 0xc7, 0x87, 0xe1, 0x97, - 0x32, 0xf1, 0x6e, 0x1d, 0x7e, 0x3e, 0xe5, 0x5e, 0x98, 0xd8, 0x75, 0x50, 0x49, 0x77, 0x10, 0xe6, - 0xad, 0xb7, 0xa6, 0xb5, 0xf3, 0xf7, 0xa3, 0x96, 0x3b, 0x5f, 0xd9, 0xf1, 0x0c, 0xea, 0x0d, 0x92, - 0x31, 0x88, 0x68, 0x44, 0xdf, 0x35, 0x9f, 0x82, 0x37, 0x29, 0xb9, 0x68, 0xb8, 0xdb, 0xa5, 0x6d, - 0xdd, 0xa5, 0x6b, 0xdf, 0xc1, 0xbb, 0xfa, 0xe2, 0x21, 0xe0, 0x8c, 0x75, 0x5b, 0x88, 0x3c, 0xcb, - 0x9a, 0x18, 0xc4, 0x11, 0xf8, 0x1a, 0x0c, 0x03, 0xe2, 0x3f, 0x4a, 0x90, 0xad, 0x75, 0x91, 0x29, - 0x7c, 0x70, 0x2b, 0x90, 0xad, 0xd4, 0x23, 0xdb, 0x87, 0xc4, 0x1d, 0x19, 0x83, 0x4a, 0x7b, 0x25, - 0x47, 0x48, 0xf6, 0x66, 0xc8, 0x1a, 0xe6, 0xa6, 0x45, 0x0d, 0xd3, 0x2b, 0x23, 0xf6, 0x2b, 0x2b, - 0xe6, 0xa6, 0xa5, 0xe1, 0x8c, 0xa2, 0x3e, 0x8c, 0x71, 0x65, 0xa7, 0x2f, 0xee, 0x6f, 0x4d, 0x42, - 0x9e, 0xa8, 0xb3, 0xfa, 0x32, 0x19, 0xe4, 0x62, 0xbb, 0x1d, 0x21, 0x78, 0x69, 0x9f, 0xe0, 0x2d, - 0xfc, 0x5b, 0x80, 0x49, 0xf0, 0xce, 0xc7, 0xdd, 0x11, 0xec, 0xdb, 0x69, 0x93, 0x2a, 0xb6, 0xdb, - 0xd1, 0xee, 0xd2, 0x41, 0x81, 0x12, 0x5f, 0x20, 0xdb, 0xc2, 0x65, 0xb1, 0x16, 0x9e, 0x78, 0x20, - 0x88, 0xe4, 0x2f, 0x7d, 0x88, 0xfe, 0x59, 0x82, 0x89, 0x55, 0xc3, 0x71, 0x3d, 0x6c, 0x8a, 0x22, - 0xd8, 0x5c, 0x05, 0x53, 0xbe, 0x68, 0xbc, 0x2e, 0xcf, 0xeb, 0xcf, 0xc3, 0x04, 0xf5, 0x0d, 0x2c, - 0x3a, 0xf7, 0xf0, 0xe8, 0x3c, 0x31, 0xbe, 0xf6, 0x94, 0x8b, 0xe8, 0x03, 0x31, 0x61, 0xb1, 0x52, - 0x6f, 0xb1, 0xbf, 0x15, 0x08, 0x7c, 0x8d, 0x13, 0xf8, 0x6d, 0xc3, 0x14, 0x99, 0xbe, 0xd0, 0x3f, - 0x2f, 0x01, 0x78, 0x65, 0xd3, 0x53, 0x87, 0x8f, 0xe1, 0x62, 0x09, 0xc4, 0x48, 0xf7, 0xd5, 0xac, - 0x74, 0xd7, 0x78, 0xe9, 0xfe, 0xe4, 0xe0, 0xaa, 0xc6, 0x9d, 0x2e, 0x54, 0x0a, 0x20, 0x1b, 0x81, - 0x68, 0xbd, 0x47, 0xf5, 0xed, 0x81, 0x50, 0xd7, 0x39, 0xa1, 0xde, 0x31, 0x64, 0x49, 0xe9, 0xcb, - 0xf5, 0xaf, 0x24, 0x98, 0xa8, 0x23, 0xd7, 0xeb, 0x26, 0xd5, 0xb3, 0x22, 0x3d, 0x3c, 0xd3, 0xb6, - 0x25, 0xc1, 0xb6, 0xfd, 0xdd, 0x8c, 0x68, 0x4c, 0xa2, 0x50, 0x32, 0x94, 0xa7, 0x88, 0xc5, 0x83, - 0x87, 0x85, 0x62, 0x12, 0x0d, 0xa2, 0x96, 0xbe, 0x74, 0xdf, 0x2a, 0x05, 0x1b, 0xf7, 0xfc, 0xa1, - 0x20, 0xd6, 0x2c, 0xce, 0xec, 0x37, 0x8b, 0xc5, 0x0f, 0x05, 0xb1, 0x75, 0x8c, 0xde, 0xb5, 0x4e, - 0x6c, 0x6c, 0x8c, 0x60, 0x43, 0x79, 0x18, 0x79, 0x3d, 0x5b, 0x86, 0x3c, 0x5d, 0x59, 0xbe, 0x2b, - 0x7e, 0x65, 0x79, 0xf0, 0xd4, 0xe2, 0x7d, 0x43, 0x98, 0x72, 0x71, 0xcb, 0xbd, 0x01, 0x1b, 0x12, - 0xc3, 0xc6, 0x4d, 0x90, 0xc3, 0x41, 0x53, 0xe9, 0x38, 0x17, 0xfa, 0x02, 0xf8, 0x24, 0xca, 0xde, - 0x57, 0x8d, 0x64, 0x4a, 0x8c, 0xc2, 0x08, 0x56, 0x88, 0x87, 0x41, 0xe1, 0xdd, 0x9f, 0xcb, 0x04, - 0x46, 0xc8, 0xfb, 0xb2, 0xd4, 0xfc, 0xfb, 0x04, 0x1f, 0xbe, 0xa5, 0x65, 0x99, 0x2e, 0x7a, 0x80, - 0x59, 0x93, 0x0f, 0x12, 0x62, 0x2d, 0x83, 0x53, 0x30, 0xe1, 0xda, 0xec, 0x3a, 0xbd, 0xff, 0xca, - 0xf6, 0x38, 0x39, 0xbe, 0xc7, 0xa9, 0xc2, 0x19, 0xc3, 0x6c, 0x75, 0x76, 0xdb, 0x48, 0x43, 0x1d, - 0xdd, 0xab, 0x95, 0x53, 0x74, 0x16, 0x51, 0x17, 0x99, 0x6d, 0x64, 0xba, 0x84, 0x4f, 0xdf, 0x7d, - 0x5c, 0x20, 0xa7, 0xfa, 0x75, 0x56, 0x31, 0xee, 0xe4, 0x15, 0xe3, 0x31, 0xfd, 0xe6, 0x15, 0x31, - 0x46, 0xe8, 0x6d, 0x00, 0xa4, 0x6e, 0x67, 0x0d, 0x74, 0x91, 0x76, 0x88, 0x57, 0xf4, 0x98, 0xa2, - 0xb5, 0x20, 0x83, 0xc6, 0x64, 0x56, 0xbf, 0x1c, 0x28, 0xc3, 0xdd, 0x9c, 0x32, 0xdc, 0x24, 0xc8, - 0x42, 0x32, 0x3d, 0xe8, 0x0e, 0xb1, 0xd6, 0x31, 0x0b, 0x53, 0xe1, 0x0a, 0xa5, 0xac, 0x5c, 0x01, - 0x27, 0x7c, 0x9f, 0x88, 0x6a, 0xb9, 0xbc, 0x58, 0x6f, 0x6e, 0xac, 0x2f, 0x6b, 0xc5, 0xc5, 0x72, - 0x01, 0x14, 0x05, 0xe6, 0x6a, 0x0b, 0xf7, 0x94, 0x4b, 0x8d, 0xc0, 0x95, 0x21, 0xab, 0xfe, 0x85, - 0x04, 0x39, 0x7c, 0xf6, 0x41, 0xfd, 0x99, 0x11, 0x69, 0x8e, 0xc3, 0xed, 0xf0, 0x04, 0x13, 0x29, - 0xf1, 0xb0, 0xaa, 0x54, 0x98, 0x98, 0xab, 0x03, 0x85, 0x55, 0x8d, 0x21, 0x94, 0x7e, 0xf3, 0xf4, - 0x9a, 0x64, 0x7d, 0xdb, 0xba, 0xf8, 0xa3, 0xdc, 0x24, 0xbd, 0xfa, 0x1f, 0x72, 0x93, 0xec, 0xc3, - 0xc2, 0xd8, 0x9b, 0x64, 0x9f, 0x76, 0x17, 0xd3, 0x4c, 0xd5, 0x67, 0xe5, 0x82, 0x05, 0x99, 0xe7, - 0x4a, 0x07, 0x5a, 0x90, 0x29, 0xc2, 0xac, 0x61, 0xba, 0xc8, 0x36, 0xf5, 0xce, 0x52, 0x47, 0xdf, - 0xf2, 0x63, 0x3d, 0xf4, 0xce, 0xc2, 0x2b, 0x4c, 0x1e, 0x8d, 0xff, 0x43, 0x39, 0x0d, 0xe0, 0xa2, - 0x9d, 0x6e, 0x47, 0x77, 0x43, 0xd5, 0x63, 0x52, 0x58, 0xed, 0xcb, 0xf2, 0xda, 0x77, 0x0b, 0x5c, - 0x46, 0x40, 0x6b, 0x5c, 0xea, 0xa2, 0x0d, 0xd3, 0x78, 0xc6, 0x2e, 0x8e, 0xf6, 0x45, 0x74, 0xb4, - 0xdf, 0x27, 0x6e, 0x59, 0x22, 0xdf, 0xb3, 0x2c, 0xf1, 0x8f, 0xc2, 0xa7, 0x88, 0xfd, 0x56, 0x3f, - 0xe0, 0x14, 0x71, 0xd0, 0xd2, 0xe4, 0x9e, 0x96, 0x16, 0x18, 0x0b, 0x59, 0x01, 0x63, 0x81, 0x45, - 0x25, 0x27, 0x68, 0x68, 0xbf, 0x5e, 0xe8, 0x98, 0x72, 0x5c, 0x35, 0xc6, 0x30, 0x91, 0x93, 0x61, - 0x8e, 0x14, 0xbd, 0x60, 0x59, 0x17, 0x76, 0x74, 0xfb, 0x82, 0x6a, 0x1f, 0x48, 0x15, 0x63, 0xd7, - 0x44, 0x22, 0x17, 0xfa, 0x3e, 0x2d, 0x89, 0x3a, 0x15, 0x73, 0xe2, 0xf2, 0x79, 0x1e, 0xcf, 0xa2, - 0x88, 0x98, 0x8f, 0xb2, 0x08, 0x83, 0xe9, 0xe3, 0xfa, 0x47, 0x01, 0xae, 0x7e, 0x47, 0xcf, 0xce, - 0x27, 0x47, 0x89, 0xab, 0xfa, 0x95, 0xe1, 0xb0, 0xf3, 0xf9, 0x1a, 0x02, 0xbb, 0x02, 0xc8, 0x17, - 0x82, 0x2d, 0x2c, 0xef, 0x91, 0xad, 0x50, 0x36, 0x3d, 0x34, 0x23, 0x58, 0x1e, 0x0b, 0x9a, 0xc7, - 0x79, 0x16, 0x6a, 0xdd, 0x54, 0x31, 0xfd, 0x92, 0xf0, 0x3a, 0x4d, 0x5f, 0x01, 0x11, 0xee, 0xc6, - 0xd3, 0x2a, 0xc5, 0x16, 0x79, 0xc4, 0xd9, 0x4c, 0x1f, 0xcd, 0x17, 0xe5, 0x60, 0xca, 0x3f, 0xe7, - 0x8d, 0xaf, 0x21, 0x08, 0x30, 0x3c, 0x09, 0x79, 0xc7, 0xda, 0xb5, 0x5b, 0x88, 0xae, 0x9c, 0xd1, - 0xb7, 0x21, 0x56, 0x79, 0x06, 0x8e, 0xe7, 0xfb, 0x4c, 0x86, 0x6c, 0x62, 0x93, 0x21, 0xda, 0x20, - 0x8d, 0x1b, 0xe0, 0x5f, 0x2c, 0x1c, 0x3b, 0x96, 0xc3, 0xac, 0x8e, 0xdc, 0x47, 0xe2, 0x18, 0xff, - 0xfb, 0x42, 0x6b, 0x08, 0x03, 0x6a, 0x92, 0x4c, 0xe5, 0x6a, 0x43, 0x18, 0xaa, 0x57, 0xc2, 0xe5, - 0x7e, 0x0e, 0x6a, 0xa1, 0x62, 0x8b, 0x74, 0x43, 0x5b, 0x2d, 0xc8, 0xea, 0xb3, 0xb3, 0x50, 0x20, - 0xac, 0xd5, 0x02, 0x63, 0x4d, 0x7d, 0x79, 0xe6, 0xb0, 0x2d, 0xd2, 0xe8, 0x29, 0xe6, 0x67, 0x25, - 0xd1, 0xf8, 0x74, 0x9c, 0xe0, 0xc3, 0xda, 0x45, 0x68, 0xd2, 0x10, 0xcd, 0x2c, 0x46, 0xf9, 0xd4, - 0xdf, 0xcc, 0x88, 0x84, 0xbb, 0x13, 0x63, 0x31, 0xfd, 0x5e, 0xe9, 0x0b, 0x59, 0x3f, 0x5c, 0xc7, - 0x92, 0x6d, 0xed, 0x6c, 0xd8, 0x1d, 0xf5, 0xff, 0x14, 0x8a, 0x26, 0x1a, 0x61, 0xfe, 0x4b, 0xd1, - 0xe6, 0x7f, 0x01, 0xe4, 0x5d, 0xbb, 0xe3, 0x0f, 0xdf, 0xbb, 0x76, 0x67, 0x88, 0xe1, 0x5b, 0xb9, - 0x1e, 0xe6, 0xf4, 0x76, 0x7b, 0x5d, 0xdf, 0x42, 0x25, 0x6f, 0x5e, 0x6d, 0xba, 0xf4, 0x28, 0x7f, - 0x4f, 0x6a, 0x6c, 0x57, 0xf4, 0x75, 0xe1, 0x9d, 0x38, 0x0e, 0x24, 0x2a, 0x9f, 0xb1, 0x0c, 0x6f, - 0xde, 0x90, 0xd0, 0xda, 0xd6, 0xc3, 0xc0, 0x22, 0xf4, 0x4d, 0x70, 0x87, 0x4e, 0x80, 0xef, 0xf4, - 0x35, 0xeb, 0x77, 0x25, 0x98, 0xf0, 0xe4, 0x5d, 0x6c, 0xb7, 0xd5, 0x47, 0x73, 0xf1, 0x77, 0x22, - 0xf7, 0x48, 0x9f, 0x2f, 0xbc, 0x39, 0xed, 0xd7, 0x90, 0xd0, 0x8f, 0xc0, 0x24, 0x14, 0xa2, 0xc4, - 0x09, 0x51, 0x6c, 0x0f, 0x3a, 0xb6, 0x88, 0xf4, 0xc5, 0xf7, 0x29, 0x09, 0x66, 0xfd, 0x79, 0xc4, - 0x12, 0x72, 0x5b, 0xdb, 0xea, 0x6d, 0xa2, 0x0b, 0x4d, 0xb4, 0xa5, 0x49, 0x41, 0x4b, 0x53, 0xbf, - 0x9f, 0x49, 0xa8, 0xf2, 0x5c, 0xc9, 0x11, 0xab, 0x74, 0x89, 0x74, 0x31, 0x8e, 0x60, 0xfa, 0xc2, - 0xfc, 0xb2, 0x04, 0xd0, 0xb0, 0x82, 0xb9, 0xee, 0x01, 0x24, 0xf9, 0x52, 0xe1, 0xab, 0x3d, 0x68, - 0xc5, 0xc3, 0x62, 0x93, 0xf7, 0x1c, 0x82, 0x5b, 0x6c, 0x83, 0x4a, 0x1a, 0x4b, 0x5b, 0x9f, 0x5a, - 0xdc, 0xed, 0x76, 0x8c, 0x96, 0xee, 0xf6, 0xee, 0x0b, 0x47, 0x8b, 0x17, 0xdf, 0xd1, 0x95, 0xc8, - 0x28, 0x0c, 0xca, 0x88, 0x90, 0x25, 0x39, 0x8c, 0x2b, 0xf9, 0x87, 0x71, 0x05, 0xf7, 0x7a, 0x06, - 0x10, 0x1f, 0x83, 0x7a, 0xca, 0x70, 0xb4, 0xd6, 0x45, 0xe6, 0x82, 0x8d, 0xf4, 0x76, 0xcb, 0xde, - 0xdd, 0x39, 0xef, 0xb0, 0x4e, 0x0d, 0xf1, 0x3a, 0xca, 0x2c, 0x1d, 0x4b, 0xdc, 0xd2, 0xb1, 0xfa, - 0x1c, 0x59, 0x34, 0x4a, 0x01, 0xb3, 0xc1, 0xc1, 0xf0, 0x30, 0xc4, 0x50, 0x97, 0x68, 0x2b, 0xae, - 0x67, 0x95, 0x38, 0x9b, 0x64, 0x95, 0xf8, 0x2d, 0x42, 0x31, 0x0f, 0x84, 0xea, 0x35, 0x96, 0x1d, - 0xd5, 0xb9, 0x3a, 0x72, 0x23, 0xe0, 0xbd, 0x0e, 0x66, 0xcf, 0x87, 0x5f, 0x02, 0x88, 0xf9, 0xc4, - 0x3e, 0x7e, 0x0e, 0x6f, 0x4d, 0xba, 0x02, 0xc3, 0xb3, 0x10, 0x81, 0x6e, 0x80, 0xa0, 0x24, 0xb2, - 0x99, 0x9a, 0x68, 0x39, 0x25, 0xb6, 0xfc, 0xf4, 0x51, 0xf8, 0x98, 0x04, 0xd3, 0xf8, 0xe6, 0xb1, - 0x85, 0x4b, 0xd8, 0x3b, 0x5f, 0xd0, 0x28, 0x79, 0x11, 0x2b, 0x66, 0x05, 0xb2, 0x1d, 0xc3, 0xbc, - 0xe0, 0xef, 0x82, 0x7b, 0xcf, 0xe1, 0x3d, 0x36, 0x52, 0x9f, 0x7b, 0x6c, 0x82, 0x7d, 0x8a, 0xa0, - 0xdc, 0x03, 0x5d, 0xac, 0x38, 0x90, 0x5c, 0xfa, 0x62, 0xfc, 0xfb, 0x2c, 0xe4, 0xeb, 0x48, 0xb7, - 0x5b, 0xdb, 0xea, 0xfb, 0xa4, 0xbe, 0x53, 0x85, 0x49, 0x7e, 0xaa, 0xb0, 0x04, 0x13, 0x9b, 0x46, - 0xc7, 0x45, 0x36, 0xf1, 0x0c, 0x62, 0xbb, 0x76, 0xd2, 0xc4, 0x17, 0x3a, 0x56, 0xeb, 0xc2, 0x3c, - 0x35, 0xdd, 0xe7, 0xfd, 0xb8, 0x67, 0xf3, 0x4b, 0xf8, 0x27, 0xcd, 0xff, 0xd9, 0x33, 0x08, 0x1d, - 0xcb, 0x76, 0xa3, 0x42, 0x5a, 0x47, 0x50, 0xa9, 0x5b, 0xb6, 0xab, 0x91, 0x1f, 0x3d, 0x98, 0x37, - 0x77, 0x3b, 0x9d, 0x06, 0x7a, 0xc0, 0xf5, 0xa7, 0x6d, 0xfe, 0xbb, 0x67, 0x2c, 0x5a, 0x9b, 0x9b, - 0x0e, 0x22, 0x8b, 0x06, 0x39, 0x8d, 0xbe, 0x29, 0xc7, 0x21, 0xd7, 0x31, 0x76, 0x0c, 0x32, 0xd1, - 0xc8, 0x69, 0xe4, 0x45, 0xb9, 0x11, 0x0a, 0xe1, 0x1c, 0x87, 0x30, 0x7a, 0x2a, 0x8f, 0x9b, 0xe6, - 0xbe, 0x74, 0x4f, 0x67, 0x2e, 0xa0, 0x4b, 0xce, 0xa9, 0x09, 0xfc, 0x1d, 0x3f, 0xf3, 0x6e, 0x98, - 0x22, 0xfb, 0x1d, 0x44, 0xe2, 0xd1, 0x33, 0x58, 0x1b, 0xb5, 0x2c, 0xbb, 0xed, 0xcb, 0x26, 0x7a, - 0x82, 0x41, 0xf3, 0x25, 0xdb, 0xa5, 0xe8, 0x5b, 0xf8, 0x18, 0x5c, 0x20, 0xf2, 0x5e, 0xb7, 0xe9, - 0x15, 0x7d, 0xce, 0x70, 0xb7, 0xd7, 0x90, 0xab, 0xab, 0x7f, 0x2f, 0xf7, 0xd5, 0xb8, 0xe9, 0xff, - 0xa5, 0x71, 0x03, 0x34, 0x8e, 0x84, 0x09, 0x70, 0x77, 0x6d, 0xd3, 0x93, 0x23, 0x8d, 0x21, 0xc7, - 0xa4, 0x28, 0x77, 0xc0, 0x15, 0xe1, 0x9b, 0xbf, 0x54, 0xba, 0x48, 0xa7, 0xad, 0x53, 0x38, 0x7b, - 0x74, 0x06, 0x65, 0x1d, 0xae, 0x25, 0x1f, 0x57, 0x1a, 0x6b, 0xab, 0x2b, 0xc6, 0xd6, 0x76, 0xc7, - 0xd8, 0xda, 0x76, 0x9d, 0x8a, 0xe9, 0xb8, 0x48, 0x6f, 0xd7, 0x36, 0x35, 0x12, 0x8c, 0x1e, 0x30, - 0x1d, 0x91, 0xac, 0xbc, 0xe7, 0x90, 0xd8, 0xe8, 0xc6, 0x6a, 0x4a, 0x44, 0x4b, 0x79, 0x92, 0xd7, - 0x52, 0x9c, 0xdd, 0x4e, 0x80, 0xe9, 0x55, 0x3d, 0x98, 0x86, 0xaa, 0xbe, 0xdb, 0xc1, 0xcd, 0x05, - 0x67, 0x4e, 0x3a, 0xce, 0xc5, 0x70, 0x32, 0x86, 0x70, 0x93, 0x79, 0xc8, 0x2d, 0xdb, 0x7a, 0x77, - 0x5b, 0x7d, 0x36, 0xd3, 0x3f, 0x8f, 0xaa, 0x4d, 0x04, 0xda, 0x29, 0x0d, 0xd2, 0x4e, 0x79, 0x80, - 0x76, 0x66, 0x19, 0xed, 0x8c, 0x5e, 0x54, 0x3e, 0x03, 0x33, 0x2d, 0xab, 0xd3, 0x41, 0x2d, 0x4f, - 0x1e, 0x95, 0x36, 0x5e, 0xcd, 0x99, 0xd2, 0xb8, 0x34, 0x1c, 0x1b, 0x12, 0xb9, 0x75, 0xb2, 0x86, - 0x4e, 0x94, 0x3e, 0x4c, 0x50, 0x5f, 0x2e, 0x41, 0xb6, 0xdc, 0xde, 0x42, 0xdc, 0x3a, 0x7b, 0x86, - 0x59, 0x67, 0x3f, 0x09, 0x79, 0x57, 0xb7, 0xb7, 0x90, 0xeb, 0xaf, 0x13, 0x90, 0xb7, 0x20, 0x64, - 0xa5, 0xcc, 0x84, 0xac, 0xfc, 0x49, 0xc8, 0x7a, 0x32, 0xa3, 0x11, 0x78, 0xae, 0xed, 0x07, 0x3f, - 0x96, 0xfd, 0xbc, 0x57, 0xe2, 0xbc, 0x57, 0x6b, 0x0d, 0xff, 0xd0, 0x8b, 0x75, 0x6e, 0x1f, 0xd6, - 0xf8, 0x5e, 0xad, 0x96, 0x65, 0x56, 0x76, 0xf4, 0x2d, 0x44, 0xab, 0x19, 0x26, 0xf8, 0x5f, 0xcb, - 0x3b, 0xd6, 0xfd, 0x06, 0x8d, 0x1e, 0x19, 0x26, 0x78, 0x55, 0xd8, 0x36, 0xda, 0x6d, 0x64, 0xd2, - 0x96, 0x4d, 0xdf, 0xce, 0x9c, 0x86, 0xac, 0xc7, 0x83, 0xa7, 0x3f, 0x9e, 0xb1, 0x50, 0x38, 0xa2, - 0xcc, 0x78, 0xcd, 0x8a, 0x34, 0xde, 0x42, 0x86, 0x5f, 0x53, 0x15, 0x71, 0xdb, 0x21, 0x95, 0xeb, - 0xdf, 0xb8, 0x1e, 0x07, 0x39, 0xd3, 0x6a, 0xa3, 0x81, 0x83, 0x10, 0xc9, 0xa5, 0x3c, 0x11, 0x72, - 0xa8, 0xed, 0xf5, 0x0a, 0x32, 0xce, 0x7e, 0x3a, 0x5e, 0x96, 0x1a, 0xc9, 0x9c, 0xcc, 0x37, 0xa8, - 0x1f, 0xb7, 0xe9, 0x37, 0xc0, 0x5f, 0x98, 0x80, 0xa3, 0xa4, 0x0f, 0xa8, 0xef, 0x9e, 0xf7, 0x48, - 0x9d, 0x47, 0xea, 0xc3, 0xfd, 0x07, 0xae, 0xa3, 0xbc, 0xb2, 0x1f, 0x87, 0x9c, 0xb3, 0x7b, 0x3e, - 0x30, 0x42, 0xc9, 0x0b, 0xdb, 0x74, 0xa5, 0x91, 0x0c, 0x67, 0xf2, 0xb0, 0xc3, 0x19, 0x37, 0x34, - 0xc9, 0x7e, 0xe3, 0x0f, 0x07, 0xb2, 0x3c, 0x4e, 0xf6, 0x07, 0xb2, 0x7e, 0xc3, 0xd0, 0x29, 0x98, - 0xd0, 0x37, 0x5d, 0x64, 0x87, 0x66, 0x22, 0x7d, 0xf5, 0x86, 0xca, 0xf3, 0x68, 0xd3, 0xb2, 0x3d, - 0xb1, 0x4c, 0x91, 0xa1, 0xd2, 0x7f, 0x67, 0x5a, 0x2e, 0x70, 0x3b, 0x64, 0x37, 0xc1, 0x31, 0xd3, - 0x5a, 0x44, 0x5d, 0x2a, 0x67, 0x82, 0xe2, 0x2c, 0x6e, 0x01, 0xfb, 0x3f, 0xec, 0xeb, 0x4a, 0xe6, - 0xf6, 0x77, 0x25, 0xea, 0x67, 0x92, 0xce, 0x99, 0x7b, 0x80, 0x1e, 0x99, 0x85, 0xa6, 0x3c, 0x05, - 0x66, 0xda, 0xd4, 0x45, 0xab, 0x65, 0x04, 0xad, 0x24, 0xf2, 0x3f, 0x2e, 0x73, 0xa8, 0x48, 0x59, - 0x56, 0x91, 0x96, 0x61, 0x12, 0x1f, 0xc8, 0xf1, 0x34, 0x29, 0xd7, 0x13, 0xfa, 0x0e, 0x4f, 0xeb, - 0x82, 0x4a, 0x31, 0x62, 0x9b, 0x2f, 0xd1, 0x5f, 0xb4, 0xe0, 0xe7, 0x64, 0xb3, 0xef, 0x78, 0x09, - 0xa5, 0xdf, 0x1c, 0x7f, 0x2b, 0x0f, 0x57, 0x94, 0x6c, 0xcb, 0x71, 0x70, 0x14, 0x8a, 0xde, 0x86, - 0xf9, 0x26, 0x89, 0x0b, 0x5e, 0xfd, 0x88, 0x6e, 0x7e, 0xfd, 0x1a, 0xd4, 0xf8, 0x9a, 0xc6, 0xd7, - 0x85, 0x8f, 0x32, 0x07, 0xfb, 0x0f, 0x11, 0x42, 0xff, 0xd1, 0x68, 0x24, 0xef, 0xce, 0x88, 0x9c, - 0xae, 0x4e, 0x28, 0xab, 0xf4, 0x9b, 0xcb, 0x97, 0x24, 0xb8, 0xb2, 0x97, 0x9b, 0x0d, 0xd3, 0x09, - 0x1a, 0xcc, 0xd5, 0x03, 0xda, 0x0b, 0x7f, 0x1a, 0x37, 0xf6, 0xda, 0xa8, 0x88, 0xba, 0x33, 0xa5, - 0x45, 0x2c, 0x96, 0xbc, 0x37, 0x23, 0x72, 0x6d, 0x54, 0x62, 0xf2, 0xe9, 0x0b, 0xf7, 0xb3, 0x59, - 0x38, 0xba, 0x6c, 0x5b, 0xbb, 0x5d, 0x27, 0xec, 0x81, 0xfe, 0xa6, 0xff, 0x86, 0x6b, 0x5e, 0xc4, - 0x34, 0xb8, 0x06, 0xa6, 0x6d, 0x6a, 0xcd, 0x85, 0xdb, 0xaf, 0x6c, 0x12, 0xdb, 0x7b, 0xc9, 0x07, - 0xe9, 0xbd, 0xc2, 0x7e, 0x26, 0xcb, 0xf5, 0x33, 0xbd, 0x3d, 0x47, 0xae, 0x4f, 0xcf, 0xf1, 0xd7, - 0x52, 0xc2, 0x41, 0xb5, 0x47, 0x44, 0x11, 0xfd, 0x45, 0x09, 0xf2, 0x5b, 0x38, 0x23, 0xed, 0x2e, - 0x1e, 0x2b, 0x56, 0x33, 0x4c, 0x5c, 0xa3, 0xbf, 0x86, 0x72, 0x95, 0x59, 0x1d, 0x4e, 0x34, 0xc0, - 0xc5, 0x73, 0x9b, 0xbe, 0x52, 0x3d, 0x94, 0x85, 0x99, 0xa0, 0xf4, 0x4a, 0xdb, 0x51, 0x5f, 0xd4, - 0x5f, 0xa3, 0x66, 0x45, 0x34, 0x6a, 0xdf, 0x3a, 0x73, 0x30, 0xea, 0xc8, 0xcc, 0xa8, 0xd3, 0x77, - 0x74, 0x99, 0x89, 0x18, 0x5d, 0xd4, 0x67, 0xc9, 0xa2, 0xd7, 0x3f, 0xf0, 0x5d, 0x2b, 0xae, 0xcd, - 0x23, 0x79, 0xb0, 0x10, 0xbc, 0x84, 0x62, 0x70, 0xad, 0xd2, 0x57, 0x92, 0x0f, 0x4a, 0x70, 0x6c, - 0x7f, 0x67, 0xfe, 0x63, 0xbc, 0x17, 0x9a, 0x57, 0x27, 0x27, 0xf0, 0x42, 0xc3, 0x6f, 0xfc, 0x26, - 0x5d, 0xec, 0xd1, 0x58, 0xce, 0xde, 0x1b, 0xdc, 0x89, 0x8b, 0x1d, 0x7e, 0x15, 0x24, 0x9a, 0xbe, - 0x00, 0x7f, 0x45, 0x86, 0xa9, 0x3a, 0x72, 0x57, 0xf5, 0x4b, 0xd6, 0xae, 0xab, 0xea, 0xa2, 0xdb, - 0x73, 0x4f, 0x86, 0x7c, 0x07, 0xff, 0x42, 0x6f, 0xd5, 0xbd, 0xa6, 0xef, 0xfe, 0x16, 0xf6, 0xfd, - 0x21, 0xa4, 0x35, 0x9a, 0x9f, 0x3f, 0x93, 0x2c, 0xb2, 0x3b, 0x1a, 0x70, 0x37, 0x92, 0xad, 0x9d, - 0x44, 0x7b, 0xa7, 0x51, 0x45, 0xa7, 0x0f, 0xcb, 0x73, 0x64, 0x98, 0xad, 0x23, 0xb7, 0xe2, 0x2c, - 0xe9, 0x7b, 0x96, 0x6d, 0xb8, 0x88, 0xbd, 0x56, 0x2b, 0x1e, 0x9a, 0xd3, 0x00, 0x46, 0xf0, 0x1b, - 0x8d, 0x94, 0xc0, 0xa4, 0xa8, 0xbf, 0x99, 0xd4, 0x51, 0x88, 0xe3, 0x63, 0x24, 0x20, 0x24, 0xf2, - 0xb1, 0x88, 0x2b, 0x3e, 0x7d, 0x20, 0xbe, 0x28, 0x51, 0x20, 0x8a, 0x76, 0x6b, 0xdb, 0xd8, 0x43, - 0xed, 0x84, 0x40, 0xf8, 0xbf, 0x85, 0x40, 0x04, 0x84, 0x12, 0xbb, 0xaf, 0x70, 0x7c, 0x8c, 0xc2, - 0x7d, 0x25, 0x8e, 0xe0, 0x58, 0x82, 0x1d, 0x78, 0x5d, 0x0f, 0x5d, 0xcf, 0xbc, 0x4b, 0x54, 0xac, - 0xa1, 0xc9, 0x26, 0xb1, 0x26, 0xdb, 0x50, 0x1d, 0x0b, 0x29, 0x7b, 0x90, 0x4e, 0x67, 0xd3, 0xe8, - 0x58, 0xfa, 0x16, 0x9d, 0xbe, 0xd0, 0xdf, 0x2b, 0xc3, 0x89, 0xe0, 0x14, 0x70, 0x1d, 0xb9, 0x8b, - 0xba, 0xb3, 0x7d, 0xde, 0xd2, 0xed, 0x36, 0x7b, 0xdb, 0xf2, 0xd0, 0x27, 0xfe, 0xd4, 0x2f, 0xb0, - 0x20, 0x54, 0x79, 0x10, 0xfa, 0xba, 0x8a, 0xf6, 0xe5, 0x65, 0x14, 0x9d, 0x4c, 0xac, 0x37, 0xeb, - 0x6f, 0x07, 0x60, 0x3d, 0x8d, 0x03, 0xeb, 0xce, 0x61, 0x59, 0x4c, 0x1f, 0xb8, 0x5f, 0x27, 0x23, - 0x02, 0xe3, 0xd5, 0x7c, 0x9f, 0x28, 0x60, 0x11, 0x5e, 0xad, 0x72, 0xa4, 0x57, 0xeb, 0x50, 0x63, - 0xc4, 0x40, 0x8f, 0xe4, 0x74, 0xc7, 0x88, 0x43, 0xf4, 0x36, 0x7e, 0xa7, 0x0c, 0x05, 0x1c, 0x06, - 0x82, 0xf1, 0xf8, 0x56, 0xef, 0x17, 0x45, 0x67, 0x9f, 0x77, 0xf9, 0x44, 0x52, 0xef, 0x72, 0xf5, - 0x1d, 0x49, 0x7d, 0xc8, 0x7b, 0xb9, 0x1d, 0x09, 0x62, 0x89, 0x5c, 0xc4, 0x07, 0x70, 0x90, 0x3e, - 0x68, 0xbf, 0x28, 0x03, 0x78, 0x0d, 0x9a, 0x9e, 0x7d, 0x78, 0xba, 0x28, 0x5c, 0x37, 0xb3, 0x7e, - 0xf5, 0x1e, 0x50, 0x27, 0x7a, 0x80, 0x22, 0x14, 0xc3, 0x53, 0x15, 0x0f, 0x27, 0xf5, 0xad, 0x0c, - 0xb9, 0x1a, 0x09, 0x2c, 0x89, 0xbc, 0x2d, 0x23, 0xcb, 0x4e, 0x1f, 0x90, 0xff, 0x2e, 0x41, 0xae, - 0x61, 0xd5, 0x91, 0x7b, 0x70, 0x53, 0x20, 0xf1, 0xb1, 0x7d, 0x5c, 0xee, 0x28, 0x8e, 0xed, 0xf7, - 0x23, 0x94, 0xbe, 0xe8, 0xde, 0x23, 0xc1, 0x4c, 0xc3, 0x2a, 0x05, 0x8b, 0x53, 0xe2, 0xbe, 0xaa, - 0xe2, 0x57, 0x58, 0x06, 0x15, 0x0c, 0x8b, 0x39, 0xd0, 0x15, 0x96, 0x83, 0xe9, 0xa5, 0x2f, 0xb7, - 0xdb, 0xe0, 0xe8, 0x86, 0xd9, 0xb6, 0x34, 0xd4, 0xb6, 0xe8, 0x4a, 0xb7, 0xa2, 0x40, 0x76, 0xd7, - 0x6c, 0x5b, 0x98, 0xe5, 0x9c, 0x86, 0x9f, 0xbd, 0x34, 0x1b, 0xb5, 0x2d, 0xea, 0x1b, 0x80, 0x9f, - 0xd5, 0xaf, 0xcb, 0x90, 0xf5, 0xfe, 0x15, 0x17, 0xf5, 0x3b, 0xe5, 0x84, 0x81, 0x08, 0x3c, 0xf2, - 0x23, 0xb1, 0x84, 0xee, 0x62, 0xd6, 0xfe, 0x89, 0x07, 0xeb, 0xb5, 0x51, 0xe5, 0x31, 0xa2, 0x08, - 0xd7, 0xfc, 0x95, 0x53, 0x30, 0x71, 0xbe, 0x63, 0xb5, 0x2e, 0x84, 0xe7, 0xe5, 0xe9, 0xab, 0x72, - 0x23, 0xe4, 0x6c, 0xdd, 0xdc, 0x42, 0x74, 0x4f, 0xe1, 0x78, 0x4f, 0x5f, 0x88, 0xbd, 0x5e, 0x34, - 0x92, 0x45, 0x7d, 0x47, 0x92, 0x10, 0x08, 0x7d, 0x2a, 0x9f, 0x4c, 0x1f, 0x16, 0x87, 0x38, 0x59, - 0x56, 0x80, 0x99, 0x52, 0x91, 0x5c, 0x16, 0xbb, 0x56, 0x3b, 0x5b, 0x2e, 0xc8, 0x18, 0x66, 0x4f, - 0x26, 0x29, 0xc2, 0xec, 0x91, 0xff, 0x91, 0x85, 0xb9, 0x4f, 0xe5, 0x0f, 0x03, 0xe6, 0x4f, 0x49, - 0x30, 0xbb, 0x6a, 0x38, 0x6e, 0x94, 0xb7, 0x7f, 0x4c, 0x14, 0xb8, 0x17, 0x27, 0x35, 0x95, 0xb9, - 0x72, 0x84, 0xc3, 0xbf, 0x25, 0x32, 0x87, 0xe3, 0x8a, 0x18, 0xcf, 0xb1, 0x14, 0xcc, 0x01, 0xb9, - 0xe0, 0x51, 0x58, 0x92, 0x89, 0x0d, 0xa5, 0xb0, 0x90, 0xf1, 0x1b, 0x4a, 0x91, 0x65, 0xa7, 0x2f, - 0xdf, 0xaf, 0x4b, 0x70, 0xcc, 0x2b, 0x3e, 0x6e, 0x59, 0x2a, 0x5a, 0xcc, 0x03, 0x97, 0xa5, 0x12, - 0xaf, 0x8c, 0xef, 0xe3, 0x65, 0x14, 0x2b, 0xe3, 0x83, 0x88, 0x8e, 0x59, 0xcc, 0x11, 0xcb, 0xb0, - 0x83, 0xc4, 0x1c, 0xb3, 0x0c, 0x3b, 0xbc, 0x98, 0xe3, 0x97, 0x62, 0x87, 0x14, 0xf3, 0xa1, 0x2d, - 0xb0, 0xfe, 0x86, 0x1c, 0x88, 0x39, 0x72, 0x6d, 0x23, 0x46, 0xcc, 0x89, 0x4f, 0xec, 0xaa, 0xef, - 0x1a, 0x52, 0xf0, 0x23, 0x5e, 0xdf, 0x18, 0x06, 0xa6, 0x43, 0x5c, 0xe3, 0x78, 0x85, 0x0c, 0x73, - 0x94, 0x8b, 0xfe, 0x53, 0xe6, 0x18, 0x8c, 0x12, 0x4f, 0x99, 0x13, 0x9f, 0x01, 0xe2, 0x39, 0x1b, - 0xff, 0x19, 0xa0, 0xd8, 0xf2, 0xd3, 0x07, 0xe7, 0x1b, 0x59, 0x38, 0xe9, 0xb1, 0xb0, 0x66, 0xb5, - 0x8d, 0xcd, 0x4b, 0x84, 0x8b, 0xb3, 0x7a, 0x67, 0x17, 0x39, 0xea, 0xfb, 0x25, 0x51, 0x94, 0xfe, - 0x13, 0x80, 0xd5, 0x45, 0x36, 0x09, 0xa4, 0x46, 0x81, 0xba, 0x23, 0xaa, 0xb2, 0xfb, 0x4b, 0x0a, - 0x82, 0xa2, 0xd7, 0x7c, 0x22, 0x1a, 0x43, 0xcf, 0xb3, 0x0a, 0xa7, 0x82, 0x2f, 0xbd, 0x0e, 0x1e, - 0x99, 0xfd, 0x0e, 0x1e, 0x37, 0x80, 0xac, 0xb7, 0xdb, 0x01, 0x54, 0xbd, 0x9b, 0xd9, 0xb8, 0x4c, - 0xcd, 0xcb, 0xe2, 0xe5, 0x74, 0x50, 0x78, 0x34, 0x2f, 0x22, 0xa7, 0x83, 0x5c, 0x65, 0x1e, 0xf2, - 0xe4, 0x06, 0xc1, 0x60, 0x45, 0xbf, 0x7f, 0x66, 0x9a, 0x8b, 0x37, 0xed, 0x6a, 0xbc, 0x1a, 0xde, - 0x96, 0x48, 0x32, 0xfd, 0xfa, 0xe9, 0xd0, 0x4e, 0xd6, 0x38, 0x05, 0x7b, 0xea, 0xd0, 0x94, 0xc7, - 0xb3, 0x1b, 0x56, 0xec, 0x76, 0x3b, 0x97, 0x1a, 0x34, 0xf8, 0x4a, 0xa2, 0xdd, 0x30, 0x26, 0x86, - 0x8b, 0xd4, 0x1b, 0xc3, 0x25, 0xf9, 0x6e, 0x18, 0xc7, 0xc7, 0x28, 0x76, 0xc3, 0xe2, 0x08, 0x8e, - 0x61, 0x3d, 0x32, 0x47, 0xac, 0x66, 0x1a, 0xa3, 0xf6, 0xcd, 0xfd, 0x0f, 0xa1, 0x01, 0xef, 0xec, - 0xd2, 0x2f, 0x7c, 0x6d, 0x6c, 0x6c, 0x6e, 0xe5, 0x89, 0x90, 0xdf, 0xb4, 0xec, 0x1d, 0xdd, 0xdf, - 0xb8, 0xef, 0x3d, 0x29, 0x42, 0xe3, 0xc2, 0x2e, 0xe1, 0x3c, 0x1a, 0xcd, 0xeb, 0xcd, 0x47, 0x9e, - 0x69, 0x74, 0x69, 0xd4, 0x45, 0xef, 0x51, 0xb9, 0x0e, 0x66, 0x69, 0xf0, 0xc5, 0x2a, 0x72, 0x5c, - 0xd4, 0xa6, 0x11, 0x2b, 0xf8, 0x44, 0xe5, 0x0c, 0xcc, 0xd0, 0x84, 0x25, 0xa3, 0x83, 0x1c, 0x1a, - 0xb4, 0x82, 0x4b, 0x53, 0x4e, 0x42, 0xde, 0x70, 0xee, 0x71, 0x2c, 0x13, 0xfb, 0xff, 0x4f, 0x6a, - 0xf4, 0x4d, 0xb9, 0x01, 0x8e, 0xd2, 0x7c, 0x81, 0xb1, 0x4a, 0x0e, 0xec, 0xf4, 0x26, 0xab, 0x9f, - 0x1b, 0x66, 0xe2, 0x90, 0x38, 0x1e, 0xaf, 0x87, 0xc2, 0x6e, 0xab, 0x85, 0x50, 0x9b, 0x9e, 0x6c, - 0xf2, 0x5f, 0x13, 0x46, 0xea, 0x4d, 0x3c, 0xcd, 0x38, 0xa4, 0x50, 0xbd, 0x1f, 0x39, 0x01, 0x79, - 0x72, 0xed, 0x85, 0xfa, 0xb2, 0xb9, 0xbe, 0xca, 0x38, 0xc7, 0x2b, 0xe3, 0x06, 0xcc, 0x98, 0x96, - 0x57, 0xdc, 0xba, 0x6e, 0xeb, 0x3b, 0x4e, 0xdc, 0x2a, 0x22, 0xa1, 0x1b, 0x0c, 0x19, 0x55, 0xe6, - 0xb7, 0x95, 0x23, 0x1a, 0x47, 0x46, 0xf9, 0xdf, 0xe0, 0xe8, 0x79, 0x1a, 0x01, 0xc0, 0xa1, 0x94, - 0xa5, 0x68, 0x1f, 0xbb, 0x1e, 0xca, 0x0b, 0xfc, 0x9f, 0x2b, 0x47, 0xb4, 0x5e, 0x62, 0xca, 0x4f, - 0xc3, 0x9c, 0xf7, 0xda, 0xb6, 0x2e, 0xfa, 0x8c, 0xcb, 0xd1, 0x86, 0x46, 0x0f, 0xf9, 0x35, 0xee, - 0xc7, 0x95, 0x23, 0x5a, 0x0f, 0x29, 0xa5, 0x06, 0xb0, 0xed, 0xee, 0x74, 0x28, 0xe1, 0x6c, 0xb4, - 0x4a, 0xf6, 0x10, 0x5e, 0x09, 0x7e, 0x5a, 0x39, 0xa2, 0x31, 0x24, 0x94, 0x55, 0x98, 0x72, 0x1f, - 0x70, 0x29, 0xbd, 0x5c, 0xf4, 0xe6, 0x76, 0x0f, 0xbd, 0x86, 0xff, 0xcf, 0xca, 0x11, 0x2d, 0x24, - 0xa0, 0x54, 0x60, 0xb2, 0x7b, 0x9e, 0x12, 0xcb, 0xf7, 0xb9, 0x35, 0xbe, 0x3f, 0xb1, 0xf5, 0xf3, - 0x01, 0xad, 0xe0, 0x77, 0x8f, 0xb1, 0x96, 0xb3, 0x47, 0x69, 0x4d, 0x08, 0x33, 0x56, 0xf2, 0xff, - 0xf1, 0x18, 0x0b, 0x08, 0x28, 0x15, 0x98, 0x72, 0x4c, 0xbd, 0xeb, 0x6c, 0x5b, 0xae, 0x73, 0x6a, - 0xb2, 0xc7, 0x0f, 0x32, 0x9a, 0x5a, 0x9d, 0xfe, 0xa3, 0x85, 0x7f, 0x2b, 0x4f, 0x84, 0x13, 0xbb, - 0xf8, 0xfa, 0xd0, 0xf2, 0x03, 0x86, 0xe3, 0x1a, 0xe6, 0x96, 0x1f, 0x43, 0x96, 0xf4, 0x26, 0xfd, - 0x3f, 0x2a, 0xf3, 0xf4, 0x44, 0x14, 0xe0, 0xb6, 0xa9, 0xf6, 0x6e, 0xc6, 0x91, 0x62, 0x99, 0x83, - 0x50, 0x4f, 0x81, 0xac, 0xf7, 0x09, 0x9f, 0xd9, 0x9c, 0xeb, 0xbf, 0xd0, 0xd7, 0xab, 0x3b, 0xb8, - 0x01, 0x7b, 0x3f, 0x79, 0x63, 0xa3, 0x69, 0xad, 0xdb, 0xd6, 0x96, 0x8d, 0x1c, 0x87, 0x3a, 0x1c, - 0x32, 0x29, 0x5e, 0x03, 0x37, 0x1c, 0x72, 0x4f, 0x7c, 0xe8, 0xef, 0xce, 0x26, 0x91, 0xd9, 0x66, - 0x15, 0x5d, 0xc4, 0x0e, 0xc1, 0xf8, 0xfc, 0x0d, 0x9e, 0x6d, 0xfa, 0x29, 0xea, 0xf5, 0x30, 0xc3, - 0x36, 0x32, 0x72, 0x77, 0x96, 0x11, 0xda, 0x5e, 0xf4, 0x4d, 0xbd, 0x0e, 0xe6, 0x78, 0x9d, 0x66, - 0x86, 0x18, 0xd9, 0xef, 0x0a, 0xd5, 0x6b, 0xe1, 0x68, 0x4f, 0xc3, 0xf2, 0x63, 0x8a, 0x64, 0xc2, - 0x98, 0x22, 0xd7, 0x00, 0x84, 0x5a, 0xdc, 0x97, 0xcc, 0xd5, 0x30, 0x15, 0xe8, 0x65, 0xdf, 0x0c, - 0x5f, 0xcd, 0xc0, 0xa4, 0xaf, 0x6c, 0xfd, 0x32, 0x78, 0xe3, 0x8b, 0xc9, 0x6c, 0x20, 0xd0, 0x69, - 0x36, 0x97, 0xe6, 0x8d, 0x23, 0xa1, 0xdb, 0x6e, 0xc3, 0x70, 0x3b, 0xfe, 0xd1, 0xb7, 0xde, 0x64, - 0x65, 0x1d, 0xc0, 0xc0, 0x18, 0x35, 0xc2, 0xb3, 0x70, 0xb7, 0x24, 0x68, 0x0f, 0x44, 0x1f, 0x18, - 0x1a, 0x67, 0x7e, 0x8c, 0x1e, 0x54, 0x9b, 0x82, 0x5c, 0x7d, 0xbd, 0x58, 0x2a, 0x17, 0x8e, 0x28, - 0x73, 0x00, 0xe5, 0xa7, 0xaf, 0x97, 0xb5, 0x4a, 0xb9, 0x5a, 0x2a, 0x17, 0x32, 0xea, 0x2b, 0x25, - 0x98, 0x0a, 0x1a, 0x41, 0xdf, 0x4a, 0x96, 0xa9, 0x6a, 0x0d, 0xbc, 0x9e, 0x68, 0x7f, 0xa3, 0x62, - 0x95, 0xec, 0xc9, 0x70, 0xf9, 0xae, 0x83, 0x96, 0x0c, 0xdb, 0x71, 0x35, 0xeb, 0xe2, 0x92, 0x65, - 0x07, 0x51, 0x93, 0xfd, 0x6b, 0xfa, 0x23, 0x3e, 0x7b, 0x16, 0x45, 0x1b, 0xe1, 0x43, 0x51, 0xc8, - 0xa6, 0x2b, 0xc3, 0x61, 0x82, 0x47, 0xd7, 0x25, 0xf7, 0xe2, 0x3b, 0x48, 0xb3, 0x2e, 0x3a, 0x45, - 0xb3, 0x5d, 0xb2, 0x3a, 0xbb, 0x3b, 0xa6, 0x43, 0x6d, 0x82, 0xa8, 0xcf, 0x9e, 0x74, 0xf0, 0xe5, - 0x63, 0x73, 0x00, 0xa5, 0xda, 0xea, 0x6a, 0xb9, 0xd4, 0xa8, 0xd4, 0xaa, 0x85, 0x23, 0x9e, 0xb4, - 0x1a, 0xc5, 0x85, 0x55, 0x4f, 0x3a, 0x3f, 0x03, 0x93, 0x7e, 0x9b, 0xa6, 0x61, 0x50, 0x32, 0x7e, - 0x18, 0x14, 0xa5, 0x08, 0x93, 0x7e, 0x2b, 0xa7, 0x23, 0xc2, 0xa3, 0x7b, 0x8f, 0xbd, 0xee, 0xe8, - 0xb6, 0x8b, 0xfd, 0xa5, 0x7d, 0x22, 0x0b, 0xba, 0x83, 0xb4, 0xe0, 0xb7, 0x33, 0x8f, 0xa3, 0x1c, - 0x28, 0x30, 0x57, 0x5c, 0x5d, 0x6d, 0xd6, 0xb4, 0x66, 0xb5, 0xd6, 0x58, 0xa9, 0x54, 0x97, 0xc9, - 0x08, 0x59, 0x59, 0xae, 0xd6, 0xb4, 0x32, 0x19, 0x20, 0xeb, 0x85, 0x0c, 0xb9, 0xfc, 0x6e, 0x61, - 0x12, 0xf2, 0x5d, 0x2c, 0x5d, 0xf5, 0x4b, 0x72, 0xc2, 0xf3, 0xee, 0x01, 0x4e, 0x11, 0xd7, 0x73, - 0x71, 0x3e, 0xe7, 0x52, 0x9f, 0x33, 0xa1, 0x67, 0x60, 0x86, 0xd8, 0x72, 0x0e, 0x5e, 0xbe, 0xa7, - 0x37, 0xdc, 0x72, 0x69, 0xea, 0xc7, 0xa4, 0x04, 0x87, 0xe0, 0xfb, 0x72, 0x94, 0xcc, 0xb8, 0xf8, - 0xf3, 0x61, 0x2e, 0xbb, 0x53, 0x60, 0xae, 0x52, 0x6d, 0x94, 0xb5, 0x6a, 0x71, 0x95, 0x66, 0x91, - 0x95, 0x53, 0x70, 0xbc, 0x5a, 0xa3, 0x31, 0xfd, 0xea, 0xf8, 0x5a, 0xed, 0xb5, 0xf5, 0x9a, 0xd6, - 0x28, 0xe4, 0x94, 0x93, 0xa0, 0x90, 0x67, 0xee, 0xd6, 0xfa, 0xbc, 0xf2, 0x18, 0xb8, 0x76, 0xb5, - 0xb2, 0x56, 0x69, 0x34, 0x6b, 0x4b, 0x4d, 0xad, 0x76, 0xae, 0xee, 0x21, 0xa8, 0x95, 0x57, 0x8b, - 0x9e, 0x22, 0x31, 0x97, 0xe0, 0x4d, 0x28, 0x97, 0xc1, 0x51, 0x7c, 0xc1, 0x25, 0xbe, 0xf9, 0x9e, - 0x94, 0x37, 0xa9, 0x5c, 0x05, 0xa7, 0x2a, 0xd5, 0xfa, 0xc6, 0xd2, 0x52, 0xa5, 0x54, 0x29, 0x57, - 0x1b, 0xcd, 0xf5, 0xb2, 0xb6, 0x56, 0xa9, 0xd7, 0xbd, 0x7f, 0x0b, 0x53, 0xf8, 0x8a, 0x31, 0xd2, - 0x67, 0xaa, 0xef, 0x93, 0x61, 0xf6, 0xac, 0xde, 0x31, 0xbc, 0x81, 0x02, 0xdf, 0x3d, 0xd8, 0x73, - 0x5c, 0xc4, 0xc5, 0x77, 0x14, 0x52, 0x87, 0x73, 0xfc, 0xa2, 0xfe, 0xbc, 0x9c, 0xf0, 0xb8, 0x08, - 0x05, 0x82, 0x94, 0x38, 0xcf, 0x95, 0x16, 0x31, 0xb9, 0x79, 0xbd, 0x94, 0xe0, 0xb8, 0x88, 0x38, - 0xf9, 0x64, 0xe0, 0xbf, 0x6a, 0x54, 0xe0, 0x17, 0x60, 0x66, 0xa3, 0x5a, 0xdc, 0x68, 0xac, 0xd4, - 0xb4, 0xca, 0x4f, 0xe1, 0x68, 0xe3, 0xb3, 0x30, 0xb5, 0x54, 0xd3, 0x16, 0x2a, 0x8b, 0x8b, 0xe5, - 0x6a, 0x21, 0xa7, 0x5c, 0x0e, 0x97, 0xd5, 0xcb, 0xda, 0xd9, 0x4a, 0xa9, 0xdc, 0xdc, 0xa8, 0x16, - 0xcf, 0x16, 0x2b, 0xab, 0xb8, 0x8f, 0xc8, 0xc7, 0xdc, 0x9b, 0x38, 0xa1, 0xfe, 0x6c, 0x16, 0x80, - 0x54, 0xdd, 0xb3, 0xa4, 0xd9, 0xdb, 0xf5, 0xfe, 0x22, 0xe9, 0xa4, 0x21, 0x24, 0x13, 0xd1, 0x7e, - 0x2b, 0x30, 0x69, 0xd3, 0x0f, 0x74, 0xf9, 0x64, 0x10, 0x1d, 0xf2, 0xe8, 0x53, 0xd3, 0x82, 0xdf, - 0xd5, 0xf7, 0x27, 0x99, 0x23, 0x44, 0x32, 0x96, 0x0c, 0xc9, 0xa5, 0xd1, 0x00, 0xa9, 0xbe, 0x28, - 0x03, 0x73, 0x7c, 0xc5, 0xbc, 0x4a, 0x60, 0x63, 0x4a, 0xac, 0x12, 0xfc, 0xcf, 0x8c, 0x91, 0x75, - 0xe6, 0x09, 0x74, 0x38, 0x05, 0xbf, 0x65, 0x92, 0x93, 0xdf, 0xbe, 0xc5, 0x52, 0xc8, 0x78, 0xcc, - 0x7b, 0x46, 0x07, 0xb9, 0x5a, 0xbd, 0xf1, 0x80, 0x5b, 0x90, 0xd5, 0xaf, 0xca, 0x30, 0xcb, 0x5d, - 0xdf, 0xa7, 0xbe, 0x3e, 0x23, 0x72, 0xb5, 0x16, 0x73, 0x31, 0x60, 0xe6, 0xa0, 0x17, 0x03, 0x9e, - 0xb9, 0x19, 0x26, 0x68, 0x1a, 0x96, 0x6f, 0xad, 0xea, 0x99, 0x02, 0x47, 0x61, 0x7a, 0xb9, 0xdc, - 0x68, 0xd6, 0x1b, 0x45, 0xad, 0x51, 0x5e, 0x2c, 0x64, 0xbc, 0x81, 0xaf, 0xbc, 0xb6, 0xde, 0xb8, - 0xaf, 0x20, 0x25, 0xf7, 0xc0, 0xeb, 0x65, 0x64, 0xcc, 0x1e, 0x78, 0x71, 0xc5, 0xa7, 0x3f, 0x57, - 0xfd, 0x8c, 0x0c, 0x05, 0xc2, 0x41, 0xf9, 0x81, 0x2e, 0xb2, 0x0d, 0x64, 0xb6, 0x90, 0x7a, 0x41, - 0x24, 0xe2, 0xe7, 0xbe, 0x58, 0x78, 0xb8, 0x3f, 0x67, 0xac, 0x44, 0xf2, 0xd2, 0x63, 0x60, 0x67, - 0xf7, 0x19, 0xd8, 0x9f, 0x4e, 0xea, 0x82, 0xd7, 0xcb, 0xee, 0x48, 0x20, 0xfb, 0x64, 0x12, 0x17, - 0xbc, 0x01, 0x1c, 0x8c, 0x25, 0x90, 0x6f, 0xc4, 0xf8, 0x5b, 0x90, 0xd5, 0x17, 0xca, 0x70, 0x74, - 0x51, 0x77, 0xd1, 0xc2, 0xa5, 0x86, 0xb1, 0x83, 0x1c, 0x57, 0xdf, 0xe9, 0x46, 0x5c, 0x89, 0x97, - 0xd9, 0x77, 0x25, 0x9e, 0xeb, 0xff, 0x81, 0x39, 0x95, 0xb5, 0x30, 0x41, 0x7d, 0x77, 0xd2, 0x43, - 0x7b, 0x3d, 0x3c, 0x8c, 0x2c, 0xda, 0x6e, 0xb2, 0xc3, 0x78, 0xf1, 0x5c, 0x8c, 0xe1, 0x86, 0xda, - 0x29, 0x28, 0x10, 0x56, 0x18, 0x2f, 0xb3, 0x5f, 0xa1, 0xb7, 0x48, 0x36, 0x13, 0x04, 0xf5, 0xf3, - 0xc3, 0x24, 0x48, 0x7c, 0x98, 0x04, 0x6e, 0xd1, 0x52, 0xee, 0xf5, 0x0c, 0x48, 0xda, 0x19, 0x32, - 0x2e, 0x65, 0xd1, 0x71, 0x54, 0xd3, 0xeb, 0x0c, 0x63, 0x8b, 0x1f, 0xcf, 0x4d, 0x67, 0xf4, 0x2e, - 0xc3, 0xb2, 0x28, 0x32, 0xf1, 0x17, 0x3a, 0x26, 0xf5, 0x2f, 0xe6, 0x5c, 0xfa, 0x62, 0x6e, 0x39, - 0x4c, 0xcf, 0xbf, 0x78, 0x10, 0x07, 0xe9, 0xa3, 0xf0, 0x7d, 0x09, 0xb2, 0x75, 0xcb, 0x76, 0x47, - 0x85, 0x41, 0xd2, 0x3d, 0x51, 0x46, 0x02, 0xf5, 0xe8, 0x39, 0x67, 0x7a, 0x7b, 0xa2, 0xf1, 0xe5, - 0x8f, 0x21, 0x2e, 0xe2, 0x51, 0x98, 0x23, 0x9c, 0x04, 0x97, 0x86, 0xfc, 0xbb, 0x44, 0xfa, 0xab, - 0x7b, 0x45, 0x11, 0x39, 0x03, 0x33, 0xcc, 0x9e, 0x64, 0x70, 0x61, 0x36, 0x9b, 0xa6, 0xbe, 0x89, - 0xc5, 0x65, 0x91, 0xc7, 0xa5, 0xdf, 0x8c, 0x3b, 0xb8, 0x77, 0x63, 0x54, 0x3d, 0x53, 0x92, 0x10, - 0x8b, 0x31, 0x85, 0xa7, 0x8f, 0xc8, 0x83, 0x32, 0xe4, 0xa9, 0x4f, 0xd8, 0x48, 0x11, 0x48, 0xda, - 0x32, 0x02, 0x21, 0x88, 0xf9, 0x8e, 0xc9, 0xa3, 0x6e, 0x19, 0xf1, 0xe5, 0xa7, 0x8f, 0xc3, 0x0f, - 0xa8, 0xb3, 0x63, 0x71, 0x4f, 0x37, 0x3a, 0xfa, 0xf9, 0x4e, 0x82, 0xd0, 0xc6, 0x1f, 0x4b, 0x78, - 0xbc, 0x2b, 0xa8, 0x2a, 0x57, 0x5e, 0x84, 0xc4, 0x7f, 0x02, 0xa6, 0xec, 0x60, 0x49, 0xd2, 0x3f, - 0xfd, 0xde, 0xe3, 0x68, 0x4a, 0xbf, 0x6b, 0x61, 0xce, 0x44, 0x67, 0xb9, 0x84, 0xf8, 0x19, 0xcb, - 0xd9, 0x93, 0xe9, 0x62, 0xbb, 0xbd, 0x84, 0x74, 0x77, 0xd7, 0x46, 0xed, 0x44, 0x43, 0x04, 0x2f, - 0xa2, 0x29, 0x56, 0x12, 0x5c, 0x70, 0xc1, 0x55, 0x1e, 0x9d, 0x27, 0x0d, 0xe8, 0x0d, 0x7c, 0x5e, - 0x46, 0xd2, 0x25, 0xbd, 0x2d, 0x80, 0xa4, 0xc6, 0x41, 0xf2, 0x94, 0xe1, 0x98, 0x48, 0x1f, 0x90, - 0x5f, 0x93, 0x61, 0x8e, 0xd8, 0x09, 0xa3, 0xc6, 0xe4, 0xf7, 0x12, 0xfa, 0x90, 0x30, 0xd7, 0x32, - 0xb1, 0xec, 0x8c, 0x04, 0x96, 0x24, 0x1e, 0x27, 0x62, 0x7c, 0xa4, 0x8f, 0xcc, 0xe7, 0xf2, 0x00, - 0x8c, 0x5f, 0xe0, 0xc7, 0xf2, 0x61, 0xa0, 0x3f, 0xf5, 0x1d, 0x74, 0xfe, 0x51, 0xe7, 0xa2, 0x4e, - 0x33, 0x3e, 0x7f, 0xc1, 0x86, 0x14, 0x9f, 0x28, 0x34, 0xaa, 0xfc, 0x79, 0x42, 0x9b, 0x97, 0x7a, - 0xe5, 0x0d, 0x1c, 0xdc, 0x87, 0xec, 0xe5, 0x3e, 0x9e, 0xc0, 0xf8, 0x1d, 0xc4, 0x4a, 0x32, 0xd4, - 0x56, 0x87, 0x98, 0xd9, 0x9f, 0x82, 0xe3, 0x5a, 0xb9, 0xb8, 0x58, 0xab, 0xae, 0xde, 0xc7, 0xde, - 0xd1, 0x53, 0x90, 0xd9, 0xc9, 0x49, 0x2a, 0xb0, 0xbd, 0x21, 0x61, 0x1f, 0xc8, 0xcb, 0x2a, 0x6e, - 0xb6, 0xc2, 0x2c, 0xae, 0x0c, 0xee, 0xd5, 0x04, 0xc8, 0x1e, 0x26, 0x0a, 0x0f, 0x02, 0xd3, 0x8c, - 0x9e, 0x2f, 0x43, 0x21, 0xbc, 0x26, 0x9e, 0x5e, 0xc6, 0x56, 0xe3, 0xdd, 0x06, 0xbb, 0x64, 0xff, - 0x29, 0x74, 0x1b, 0xf4, 0x13, 0x94, 0xeb, 0x61, 0xae, 0xb5, 0x8d, 0x5a, 0x17, 0x2a, 0xa6, 0xbf, - 0xaf, 0x4e, 0x36, 0x61, 0x7b, 0x52, 0x79, 0x60, 0xee, 0xe5, 0x81, 0xe1, 0x27, 0xd1, 0xdc, 0x20, - 0xcd, 0x32, 0x15, 0x81, 0xcb, 0x1f, 0x06, 0xb8, 0x54, 0x39, 0x5c, 0x6e, 0x1f, 0x8a, 0x6a, 0x32, - 0x58, 0xaa, 0x43, 0xc0, 0xa2, 0xc2, 0xc9, 0xda, 0x7a, 0xa3, 0x52, 0xab, 0x36, 0x37, 0xea, 0xe5, - 0xc5, 0xe6, 0x82, 0x0f, 0x4e, 0xbd, 0x20, 0xab, 0xdf, 0x94, 0x60, 0x82, 0xb0, 0xe5, 0xf4, 0x5c, - 0xeb, 0x1e, 0xef, 0x2f, 0xa9, 0xbe, 0x5d, 0x38, 0xfa, 0x41, 0x20, 0x08, 0x5a, 0x4e, 0x44, 0x3f, - 0xf5, 0x64, 0x98, 0x20, 0x20, 0xfb, 0x2b, 0x5a, 0xa7, 0x23, 0x7a, 0x29, 0x4a, 0x46, 0xf3, 0xb3, - 0x0b, 0x46, 0x42, 0x18, 0xc0, 0x46, 0xfa, 0x23, 0xcb, 0xb3, 0xb2, 0xc4, 0x0c, 0x3e, 0x67, 0xb8, - 0xdb, 0xd8, 0x9d, 0x52, 0x7d, 0x9a, 0xc8, 0xf2, 0xe2, 0x4d, 0x90, 0xdb, 0xf3, 0x72, 0x0f, 0x70, - 0x4d, 0x25, 0x99, 0xd4, 0x57, 0x09, 0x07, 0xde, 0xe4, 0xf4, 0x33, 0xe0, 0x29, 0x02, 0x9c, 0x35, - 0xc8, 0x76, 0x0c, 0xc7, 0xa5, 0xe3, 0xc7, 0x6d, 0x89, 0x08, 0xf9, 0x0f, 0x15, 0x17, 0xed, 0x68, - 0x98, 0x8c, 0x7a, 0x0f, 0xcc, 0xb0, 0xa9, 0x02, 0xee, 0xb9, 0xa7, 0x60, 0x82, 0x1e, 0x1b, 0xa3, - 0x4b, 0xac, 0xfe, 0xab, 0xe0, 0xb2, 0xa6, 0x50, 0x6d, 0xd3, 0xd7, 0x81, 0xff, 0xf7, 0x28, 0x4c, - 0xac, 0x18, 0x8e, 0x6b, 0xd9, 0x97, 0xd4, 0x87, 0x33, 0x30, 0x71, 0x16, 0xd9, 0x8e, 0x61, 0x99, - 0xfb, 0x5c, 0x0d, 0xae, 0x81, 0xe9, 0xae, 0x8d, 0xf6, 0x0c, 0x6b, 0xd7, 0x09, 0x17, 0x67, 0xd8, - 0x24, 0x45, 0x85, 0x49, 0x7d, 0xd7, 0xdd, 0xb6, 0xec, 0x30, 0xda, 0x84, 0xff, 0xae, 0x9c, 0x06, - 0x20, 0xcf, 0x55, 0x7d, 0x07, 0x51, 0x07, 0x0a, 0x26, 0x45, 0x51, 0x20, 0xeb, 0x1a, 0x3b, 0x88, - 0x86, 0x9f, 0xc5, 0xcf, 0x9e, 0x80, 0x71, 0x28, 0x37, 0x1a, 0x32, 0x4f, 0xd6, 0xfc, 0x57, 0xf5, - 0x0b, 0x32, 0x4c, 0x2f, 0x23, 0x97, 0xb2, 0xea, 0xa8, 0x2f, 0xce, 0x08, 0xdd, 0xf8, 0xe0, 0x8d, - 0xb1, 0x1d, 0xdd, 0xf1, 0xff, 0x0b, 0x96, 0x60, 0xf9, 0xc4, 0x30, 0x16, 0xae, 0xcc, 0x06, 0xc2, - 0xc6, 0x81, 0xd1, 0xdc, 0x0a, 0xf1, 0xbb, 0xa4, 0x99, 0xe9, 0x26, 0xc8, 0xfe, 0x0f, 0xea, 0x7b, - 0x24, 0xd1, 0x43, 0xc5, 0x54, 0xf6, 0xf3, 0x4c, 0x7d, 0x22, 0xbb, 0xa3, 0xc9, 0x3d, 0x9a, 0x63, - 0x5f, 0x8c, 0x73, 0x96, 0x12, 0x25, 0xa3, 0x05, 0xb9, 0x05, 0x8f, 0x23, 0x0f, 0xe6, 0x24, 0x7d, - 0x6d, 0xfc, 0xae, 0x0c, 0xd3, 0xf5, 0x6d, 0xeb, 0xa2, 0x2f, 0xc7, 0x9f, 0x11, 0x03, 0xf6, 0x2a, - 0x98, 0xda, 0xeb, 0x01, 0x35, 0x4c, 0x88, 0xbe, 0x83, 0x5d, 0x7d, 0x9e, 0x9c, 0x14, 0x26, 0x86, - 0xb9, 0x91, 0xdf, 0x90, 0xae, 0x3c, 0x09, 0x26, 0x28, 0xd7, 0x74, 0xc9, 0x25, 0x1e, 0x60, 0x3f, - 0x33, 0x5b, 0xc1, 0x2c, 0x5f, 0xc1, 0x64, 0xc8, 0x47, 0x57, 0x2e, 0x7d, 0xe4, 0xff, 0x44, 0xc2, - 0xc1, 0x28, 0x7c, 0xe0, 0x4b, 0x23, 0x00, 0x5e, 0xfd, 0x5e, 0x46, 0x74, 0x61, 0x32, 0x90, 0x40, - 0xc0, 0xc1, 0x81, 0x6e, 0x73, 0x19, 0x48, 0x2e, 0x7d, 0x79, 0xbe, 0x32, 0x0b, 0x33, 0x8b, 0xc6, - 0xe6, 0x66, 0xd0, 0x49, 0xbe, 0x44, 0xb0, 0x93, 0x8c, 0x76, 0x07, 0xf0, 0xec, 0xdc, 0x5d, 0xdb, - 0x46, 0xa6, 0x5f, 0x29, 0xda, 0x9c, 0x7a, 0x52, 0x95, 0x1b, 0xe0, 0xa8, 0x3f, 0x2e, 0xb0, 0x1d, - 0xe5, 0x94, 0xd6, 0x9b, 0xac, 0x7e, 0x47, 0x78, 0x57, 0xcb, 0x97, 0x28, 0x5b, 0xa5, 0x88, 0x06, - 0x78, 0x07, 0xcc, 0x6e, 0x93, 0xdc, 0x78, 0xea, 0xef, 0x77, 0x96, 0x27, 0x7b, 0x82, 0xfd, 0xae, - 0x21, 0xc7, 0xd1, 0xb7, 0x90, 0xc6, 0x67, 0xee, 0x69, 0xbe, 0x72, 0x92, 0xab, 0xab, 0xc4, 0x36, - 0xc8, 0x04, 0x6a, 0x32, 0x06, 0xed, 0x38, 0x03, 0xd9, 0x25, 0xa3, 0x83, 0xd4, 0x17, 0x48, 0x30, - 0xa5, 0xa1, 0x96, 0x65, 0xb6, 0xbc, 0x37, 0xc6, 0x39, 0xe8, 0x9f, 0x32, 0xa2, 0x57, 0x36, 0x7a, - 0x74, 0xe6, 0x03, 0x1a, 0x11, 0xed, 0x46, 0xec, 0x6a, 0xc6, 0x58, 0x52, 0x63, 0xb8, 0x60, 0xc3, - 0x9b, 0x7a, 0x6c, 0x6e, 0x76, 0x2c, 0x9d, 0x5b, 0xfc, 0xea, 0x35, 0x85, 0x6e, 0x84, 0x82, 0x7f, - 0xc6, 0xc3, 0x72, 0xd7, 0x0d, 0xd3, 0x0c, 0x0e, 0x11, 0xef, 0x4b, 0xe7, 0xf7, 0x6d, 0x63, 0xe3, - 0xb0, 0xe0, 0xba, 0xd3, 0xd2, 0x23, 0x34, 0xfb, 0x7a, 0x98, 0x3b, 0x7f, 0xc9, 0x45, 0x0e, 0xcd, - 0x45, 0x8b, 0xcd, 0x6a, 0x3d, 0xa9, 0x4c, 0x14, 0xe5, 0xb8, 0x78, 0x2d, 0x31, 0x05, 0x26, 0x13, - 0xf5, 0xca, 0x10, 0x33, 0xc0, 0xe3, 0x50, 0xa8, 0xd6, 0x16, 0xcb, 0xd8, 0x57, 0xcd, 0xf7, 0xfe, - 0xd9, 0x52, 0x5f, 0x2a, 0xc3, 0x0c, 0x76, 0x26, 0xf1, 0x51, 0xb8, 0x56, 0x60, 0x3e, 0xa2, 0x7e, - 0x59, 0xd8, 0x8f, 0x0d, 0x57, 0x99, 0x2d, 0x20, 0x5a, 0xd0, 0x9b, 0x46, 0xa7, 0x57, 0xd0, 0x39, - 0xad, 0x27, 0xb5, 0x0f, 0x20, 0x72, 0x5f, 0x40, 0x7e, 0x47, 0xc8, 0x99, 0x6d, 0x10, 0x77, 0x87, - 0x85, 0xca, 0xef, 0xca, 0x30, 0xed, 0x4d, 0x52, 0x7c, 0x50, 0x6a, 0x1c, 0x28, 0x96, 0xd9, 0xb9, - 0x14, 0x2e, 0x8b, 0xf8, 0xaf, 0x89, 0x1a, 0xc9, 0x5f, 0x09, 0xcf, 0xdc, 0xb1, 0x88, 0x18, 0x5e, - 0xc6, 0x84, 0xdf, 0x07, 0x84, 0xe6, 0xf3, 0x03, 0x98, 0x3b, 0x2c, 0xf8, 0xbe, 0x9e, 0x83, 0xfc, - 0x46, 0x17, 0x23, 0xf7, 0x2a, 0x59, 0x24, 0x22, 0xf9, 0xbe, 0x83, 0x0c, 0x9e, 0x99, 0xd5, 0xb1, - 0x5a, 0x7a, 0x67, 0x3d, 0x3c, 0x11, 0x16, 0x26, 0x28, 0xb7, 0x53, 0xdf, 0x46, 0x72, 0x9c, 0xee, - 0xfa, 0xd8, 0x60, 0xdd, 0x58, 0x46, 0xcc, 0xa1, 0x91, 0x9b, 0xe0, 0x58, 0xdb, 0x70, 0xf4, 0xf3, - 0x1d, 0x54, 0x36, 0x5b, 0xf6, 0x25, 0x22, 0x0e, 0x3a, 0xad, 0xda, 0xf7, 0x41, 0xb9, 0x13, 0x72, - 0x8e, 0x7b, 0xa9, 0x43, 0xe6, 0x89, 0xec, 0x19, 0x93, 0xc8, 0xa2, 0xea, 0x5e, 0x76, 0x8d, 0xfc, - 0xc5, 0xba, 0x28, 0x4d, 0x08, 0xde, 0xd7, 0xfc, 0x04, 0xc8, 0x5b, 0xb6, 0xb1, 0x65, 0x90, 0xfb, - 0x77, 0xe6, 0xf6, 0xc5, 0xa4, 0x23, 0xa6, 0x40, 0x0d, 0x67, 0xd1, 0x68, 0x56, 0xe5, 0x49, 0x30, - 0x65, 0xec, 0xe8, 0x5b, 0xe8, 0x5e, 0xc3, 0x24, 0x27, 0xf6, 0xe6, 0x6e, 0x3d, 0xb5, 0xef, 0xf8, - 0x0c, 0xfd, 0xae, 0x85, 0x59, 0xd5, 0x0f, 0x48, 0xa2, 0x81, 0x73, 0x70, 0xdd, 0x08, 0xa8, 0x63, - 0xb9, 0xb7, 0x5a, 0x7d, 0xad, 0x50, 0x48, 0x9b, 0x68, 0xb6, 0xd2, 0x1f, 0xbc, 0x3f, 0x2f, 0xc1, - 0xe4, 0xa2, 0x75, 0xd1, 0xc4, 0x8a, 0x7e, 0x9b, 0x98, 0xad, 0xdb, 0xe7, 0x90, 0x23, 0x7f, 0x2d, - 0x64, 0xec, 0x89, 0x06, 0x5c, 0x5b, 0xbf, 0xc8, 0x08, 0x18, 0x62, 0x5b, 0x8e, 0xe0, 0x65, 0x7d, - 0x71, 0xe5, 0xa4, 0x2f, 0xd7, 0x3f, 0x95, 0x21, 0xbb, 0x68, 0x5b, 0x5d, 0xf5, 0x6d, 0x99, 0x04, - 0x2e, 0x0b, 0x6d, 0xdb, 0xea, 0x36, 0xf0, 0x6d, 0x5b, 0xe1, 0x31, 0x0e, 0x36, 0x4d, 0xb9, 0x0d, - 0x26, 0xbb, 0x96, 0x63, 0xb8, 0xfe, 0x34, 0x62, 0xee, 0xd6, 0x47, 0xf5, 0x6d, 0xcd, 0xeb, 0x34, - 0x93, 0x16, 0x64, 0xf7, 0x7a, 0x6d, 0x2c, 0x42, 0x4f, 0x2e, 0x9e, 0x18, 0xfd, 0x1b, 0xc7, 0x7a, - 0x52, 0xd5, 0x97, 0xb1, 0x48, 0x3e, 0x85, 0x47, 0xf2, 0xd1, 0x7d, 0x24, 0x6c, 0x5b, 0xdd, 0x91, - 0x6c, 0x32, 0xbe, 0x3a, 0x40, 0xf5, 0xa9, 0x1c, 0xaa, 0x37, 0x0a, 0x95, 0x99, 0x3e, 0xa2, 0x1f, - 0xc8, 0x02, 0x60, 0x33, 0x63, 0xc3, 0x9b, 0x00, 0x89, 0xd9, 0x58, 0xcf, 0xc9, 0x32, 0xb2, 0x2c, - 0xf2, 0xb2, 0x7c, 0x6c, 0x84, 0x15, 0x83, 0xc9, 0x47, 0x48, 0xb4, 0x08, 0xb9, 0x5d, 0xef, 0x33, - 0x95, 0xa8, 0x20, 0x09, 0xfc, 0xaa, 0x91, 0x3f, 0xd5, 0x3f, 0xc9, 0x40, 0x0e, 0x27, 0x28, 0xa7, - 0x01, 0xf0, 0xc0, 0x4e, 0x0e, 0x04, 0x65, 0xf0, 0x10, 0xce, 0xa4, 0x60, 0x6d, 0x35, 0xda, 0xf4, - 0x33, 0x31, 0x99, 0xc3, 0x04, 0xef, 0x6f, 0x3c, 0xdc, 0x63, 0x5a, 0xd4, 0x00, 0x60, 0x52, 0xbc, - 0xbf, 0xf1, 0xdb, 0x2a, 0xda, 0x24, 0x81, 0x90, 0xb3, 0x5a, 0x98, 0x10, 0xfc, 0xbd, 0x1a, 0x5c, - 0x9f, 0xe5, 0xff, 0x8d, 0x53, 0xbc, 0xc9, 0x30, 0x56, 0xcb, 0x85, 0xb0, 0x88, 0x3c, 0xce, 0xd4, - 0x9b, 0xac, 0xbe, 0x21, 0x50, 0x9b, 0x45, 0x4e, 0x6d, 0x6e, 0x49, 0x20, 0xde, 0xf4, 0x95, 0xe7, - 0xab, 0x39, 0x98, 0xaa, 0x5a, 0x6d, 0xaa, 0x3b, 0xcc, 0x84, 0xf1, 0x93, 0xb9, 0x44, 0x13, 0xc6, - 0x80, 0x46, 0x84, 0x82, 0xdc, 0xcd, 0x2b, 0x88, 0x18, 0x05, 0x56, 0x3f, 0x94, 0x05, 0xc8, 0x63, - 0xed, 0xdd, 0x7f, 0x2f, 0x53, 0x1c, 0x09, 0x2c, 0x5a, 0x8d, 0xfe, 0xf9, 0x1f, 0x4e, 0xc7, 0xfe, - 0x2b, 0xe4, 0x70, 0x05, 0x63, 0x76, 0x77, 0xf8, 0x8a, 0x4a, 0xf1, 0x15, 0x95, 0xe3, 0x2b, 0x9a, - 0xed, 0xad, 0x68, 0x92, 0x75, 0x80, 0x28, 0x0d, 0x49, 0x5f, 0xc7, 0xff, 0x71, 0x02, 0xa0, 0xaa, - 0xef, 0x19, 0x5b, 0x64, 0x77, 0xf8, 0x0b, 0xfe, 0xfc, 0x87, 0xee, 0xe3, 0xfe, 0x22, 0x33, 0x10, - 0xde, 0x06, 0x13, 0x74, 0xdc, 0xa3, 0x15, 0xb9, 0x9a, 0xab, 0x48, 0x48, 0x85, 0x98, 0xa5, 0x0f, - 0xb8, 0x9a, 0x9f, 0x9f, 0xbb, 0x42, 0x56, 0xea, 0xb9, 0x42, 0xb6, 0xff, 0x1e, 0x44, 0xc4, 0xc5, - 0xb2, 0xea, 0x7b, 0x85, 0x3d, 0xfa, 0x19, 0x7e, 0x98, 0x1a, 0x45, 0x34, 0xc1, 0x27, 0xc0, 0x84, - 0x15, 0x6c, 0x68, 0xcb, 0x91, 0xeb, 0x60, 0x15, 0x73, 0xd3, 0xd2, 0xfc, 0x9c, 0x82, 0x9b, 0x5f, - 0x42, 0x7c, 0x8c, 0xe5, 0xd0, 0xcc, 0xc9, 0x65, 0x3f, 0xa8, 0x94, 0x57, 0x8f, 0x73, 0x86, 0xbb, - 0xbd, 0x6a, 0x98, 0x17, 0x1c, 0xf5, 0x3f, 0x8b, 0x59, 0x90, 0x0c, 0xfe, 0x52, 0x32, 0xfc, 0xf9, - 0x98, 0x1d, 0x75, 0x1e, 0xb5, 0x3b, 0xa3, 0xa8, 0xf4, 0xe7, 0x36, 0x02, 0xc0, 0xdb, 0x21, 0x4f, - 0x18, 0xa5, 0x9d, 0xe8, 0x99, 0x48, 0xfc, 0x02, 0x4a, 0x1a, 0xfd, 0x43, 0x7d, 0x4f, 0x80, 0xe3, - 0x59, 0x0e, 0xc7, 0x85, 0x03, 0x71, 0x96, 0x3a, 0xa4, 0x67, 0x1e, 0x0f, 0x13, 0x54, 0xd2, 0xca, - 0x1c, 0xdb, 0x8a, 0x0b, 0x47, 0x14, 0x80, 0xfc, 0x9a, 0xb5, 0x87, 0x1a, 0x56, 0x21, 0xe3, 0x3d, - 0x7b, 0xfc, 0x35, 0xac, 0x82, 0xa4, 0xbe, 0x66, 0x12, 0x26, 0x83, 0x68, 0x3e, 0x9f, 0x97, 0xa0, - 0x50, 0xb2, 0x91, 0xee, 0xa2, 0x25, 0xdb, 0xda, 0x21, 0x35, 0x12, 0xf7, 0x0e, 0xfd, 0x35, 0x61, - 0x17, 0x8f, 0x20, 0xca, 0x4e, 0x6f, 0x61, 0x11, 0x58, 0x92, 0x45, 0x48, 0xc9, 0x5f, 0x84, 0x54, - 0xdf, 0x2a, 0xe4, 0xf2, 0x21, 0x5a, 0x4a, 0xfa, 0x4d, 0xed, 0xd3, 0x12, 0xe4, 0x4a, 0x1d, 0xcb, - 0x44, 0xec, 0x11, 0xa6, 0x81, 0x67, 0x65, 0xfa, 0xef, 0x44, 0xa8, 0xcf, 0x92, 0x44, 0x6d, 0x8d, - 0x50, 0x00, 0x5e, 0xd9, 0x82, 0xb2, 0x15, 0x1b, 0xa4, 0x62, 0x49, 0xa7, 0x2f, 0xd0, 0x6f, 0x4a, - 0x30, 0x45, 0xe2, 0xe2, 0x14, 0x3b, 0x1d, 0xf5, 0x51, 0xa1, 0x50, 0xfb, 0x44, 0x44, 0x52, 0x7f, - 0x47, 0xd8, 0x45, 0x3f, 0xa8, 0x55, 0x40, 0x3b, 0x41, 0x80, 0xa0, 0x64, 0x1e, 0xe3, 0x62, 0x7b, - 0x69, 0x03, 0x19, 0x4a, 0x5f, 0xd4, 0x7f, 0x21, 0x79, 0x06, 0x80, 0x79, 0x61, 0xdd, 0x46, 0x7b, - 0x06, 0xba, 0xa8, 0x5e, 0x19, 0x0a, 0x7b, 0x7f, 0xd0, 0x8f, 0x37, 0x0b, 0x2f, 0xe2, 0x30, 0x24, - 0x23, 0xb7, 0xb2, 0xa6, 0x3b, 0x61, 0x26, 0xda, 0x8b, 0xf7, 0x46, 0x62, 0x61, 0xc8, 0x68, 0x6c, - 0x76, 0xc1, 0x35, 0x9b, 0x68, 0x2e, 0xd2, 0x17, 0xec, 0x87, 0x27, 0x60, 0x72, 0xc3, 0x74, 0xba, - 0x1d, 0xdd, 0xd9, 0x56, 0xff, 0x5d, 0x86, 0x3c, 0xb9, 0x0d, 0x4c, 0xfd, 0x09, 0x2e, 0xb6, 0xc0, - 0x33, 0x76, 0x91, 0xed, 0xbb, 0xe0, 0x90, 0x97, 0xfe, 0x97, 0x95, 0xab, 0x1f, 0x90, 0x45, 0x27, - 0xa9, 0x7e, 0xa1, 0xcc, 0xb5, 0xf0, 0xfd, 0x8f, 0xb3, 0x77, 0x8d, 0x96, 0xbb, 0x6b, 0x07, 0x57, - 0x5f, 0x3f, 0x4e, 0x8c, 0xca, 0x3a, 0xf9, 0x4b, 0x0b, 0x7e, 0x57, 0x75, 0x98, 0xa0, 0x89, 0xfb, - 0xb6, 0x93, 0xf6, 0x9f, 0xbf, 0x3d, 0x09, 0x79, 0xdd, 0x76, 0x0d, 0xc7, 0xa5, 0x1b, 0xac, 0xf4, - 0xcd, 0xeb, 0x2e, 0xc9, 0xd3, 0x86, 0xdd, 0xf1, 0xa3, 0x90, 0x04, 0x09, 0xea, 0xef, 0x0a, 0xcd, - 0x1f, 0xe3, 0x6b, 0x9e, 0x0c, 0xf2, 0x7b, 0x87, 0x58, 0xa3, 0xbe, 0x1c, 0x2e, 0xd3, 0x8a, 0x8d, - 0x72, 0x93, 0x04, 0xad, 0x08, 0xe2, 0x53, 0xb4, 0xd5, 0x77, 0xcb, 0xcc, 0xfa, 0xdd, 0x25, 0x6e, - 0x8c, 0xa0, 0x52, 0x0c, 0xc7, 0x88, 0x20, 0x21, 0x66, 0xb7, 0x9a, 0x5b, 0x84, 0x95, 0xc5, 0x17, - 0x61, 0x7f, 0x4b, 0x78, 0x37, 0x29, 0x10, 0xe5, 0x80, 0x35, 0xc0, 0xb8, 0xdb, 0x82, 0x3e, 0x28, - 0xb4, 0x33, 0x34, 0xa8, 0xa4, 0x43, 0x84, 0xed, 0x4d, 0x13, 0x30, 0xb1, 0xac, 0x77, 0x3a, 0xc8, - 0xbe, 0xe4, 0x0d, 0x49, 0x05, 0x9f, 0xc3, 0x35, 0xdd, 0x34, 0x36, 0x91, 0xe3, 0xc6, 0x77, 0x96, - 0xef, 0x15, 0x8e, 0x44, 0x4b, 0xcb, 0x98, 0xef, 0xa5, 0x1f, 0x21, 0xf3, 0x9b, 0x21, 0x6b, 0x98, - 0x9b, 0x16, 0xed, 0x32, 0x7b, 0x57, 0xed, 0xfd, 0x9f, 0xf1, 0xd4, 0x05, 0x67, 0x14, 0x0c, 0x46, - 0x2b, 0xc8, 0x45, 0xfa, 0x3d, 0xe7, 0x6f, 0x67, 0x61, 0xd6, 0x67, 0xa2, 0x62, 0xb6, 0xd1, 0x03, - 0xec, 0x52, 0xcc, 0x4b, 0xb3, 0xa2, 0xc7, 0xc1, 0x7a, 0xeb, 0x83, 0x49, 0x45, 0x88, 0xb4, 0x01, - 0xd0, 0xd2, 0x5d, 0xb4, 0x65, 0xd9, 0x46, 0xd0, 0x1f, 0x3e, 0x31, 0x09, 0xb5, 0x12, 0xf9, 0xfb, - 0x92, 0xc6, 0xd0, 0x51, 0xee, 0x84, 0x69, 0x14, 0x9c, 0xbf, 0xf7, 0x97, 0x6a, 0x62, 0xf1, 0x62, - 0xf3, 0xab, 0x7f, 0x21, 0x74, 0xea, 0x4c, 0xa4, 0x9a, 0xc9, 0x30, 0x6b, 0x0e, 0xd7, 0x86, 0x36, - 0xaa, 0x6b, 0x45, 0xad, 0xbe, 0x52, 0x5c, 0x5d, 0xad, 0x54, 0x97, 0x83, 0xc0, 0x2f, 0x0a, 0xcc, - 0x2d, 0xd6, 0xce, 0x55, 0x99, 0xc8, 0x3c, 0x59, 0x75, 0x1d, 0x26, 0x7d, 0x79, 0xf5, 0xf3, 0xc5, - 0x64, 0x65, 0x46, 0x7d, 0x31, 0x99, 0x24, 0xcf, 0x38, 0x33, 0x5a, 0x81, 0x83, 0x0e, 0x7e, 0x56, - 0xff, 0x48, 0x87, 0x1c, 0x5e, 0x53, 0x57, 0xdf, 0x89, 0xb7, 0x01, 0xbb, 0x1d, 0xbd, 0x85, 0xd4, - 0x9d, 0x04, 0xd6, 0xb8, 0x7f, 0x35, 0x82, 0xb4, 0xef, 0x6a, 0x04, 0xfc, 0x48, 0xad, 0xbe, 0xe3, - 0xfd, 0xd6, 0xf1, 0x35, 0x92, 0x85, 0x3f, 0xa0, 0x15, 0xbb, 0xbb, 0x42, 0x96, 0xff, 0x29, 0x9b, - 0x11, 0x2a, 0x19, 0xcd, 0x53, 0x32, 0x4b, 0x54, 0x6c, 0x1f, 0x26, 0x8e, 0xa3, 0x31, 0x5c, 0xdf, - 0x9d, 0x85, 0x5c, 0xbd, 0xdb, 0x31, 0x5c, 0xf5, 0x15, 0xd2, 0x48, 0x30, 0x23, 0xd7, 0x59, 0xc8, - 0x03, 0xaf, 0xb3, 0x08, 0x77, 0x5d, 0xb3, 0x02, 0xbb, 0xae, 0x0d, 0xf4, 0x80, 0xcb, 0xef, 0xba, - 0xde, 0x46, 0x83, 0xb7, 0x91, 0x3d, 0xdb, 0x47, 0xf7, 0x11, 0x29, 0xae, 0x56, 0x9f, 0xa8, 0x80, - 0x67, 0x1e, 0x4f, 0x83, 0x93, 0x01, 0xe4, 0x17, 0x6a, 0x8d, 0x46, 0x6d, 0xad, 0x70, 0x04, 0x47, - 0xb5, 0xa9, 0xad, 0x93, 0x50, 0x31, 0x95, 0x6a, 0xb5, 0xac, 0x15, 0x24, 0x1c, 0x2e, 0xad, 0xd2, - 0x58, 0x2d, 0x17, 0x64, 0x3e, 0xb6, 0x79, 0xac, 0xf9, 0xcd, 0x97, 0x9d, 0xa6, 0x7a, 0x89, 0x19, - 0xe2, 0xd1, 0xfc, 0xa4, 0xaf, 0x5c, 0xbf, 0x2a, 0x43, 0x6e, 0x0d, 0xd9, 0x5b, 0x48, 0x7d, 0x46, - 0x82, 0x4d, 0xbe, 0x4d, 0xc3, 0x76, 0x48, 0x70, 0xb9, 0x70, 0x93, 0x8f, 0x4d, 0x53, 0xae, 0x83, - 0x59, 0x07, 0xb5, 0x2c, 0xb3, 0xed, 0x67, 0x22, 0xfd, 0x11, 0x9f, 0xc8, 0xdf, 0x2b, 0x2f, 0x00, - 0x19, 0x66, 0x74, 0x24, 0x3b, 0x75, 0x49, 0x80, 0xe9, 0x57, 0x6a, 0xfa, 0xc0, 0x7c, 0x47, 0xf6, - 0x7e, 0xea, 0x5e, 0x52, 0x5f, 0x2e, 0xbc, 0xfb, 0x7a, 0x13, 0xe4, 0xb1, 0x9a, 0xfa, 0x63, 0x74, - 0xff, 0xfe, 0x98, 0xe6, 0x51, 0x16, 0xe0, 0x98, 0x83, 0x3a, 0xa8, 0xe5, 0xa2, 0xb6, 0xd7, 0x74, - 0xb5, 0x81, 0x9d, 0xc2, 0xfe, 0xec, 0xea, 0x9f, 0xb1, 0x00, 0xde, 0xc1, 0x03, 0x78, 0x7d, 0x1f, - 0x51, 0x7a, 0x15, 0x8a, 0xb6, 0x95, 0xbd, 0x6a, 0xd4, 0x3b, 0x56, 0xb0, 0x28, 0xee, 0xbf, 0x7b, - 0xdf, 0xb6, 0xdd, 0x9d, 0x0e, 0xfe, 0x46, 0x0f, 0x18, 0xf8, 0xef, 0xca, 0x3c, 0x4c, 0xe8, 0xe6, - 0x25, 0xfc, 0x29, 0x1b, 0x53, 0x6b, 0x3f, 0x93, 0xfa, 0x9a, 0x00, 0xf9, 0xbb, 0x38, 0xe4, 0x1f, - 0x2b, 0xc6, 0x6e, 0xfa, 0xc0, 0xff, 0xfc, 0x04, 0xe4, 0xd6, 0x75, 0xc7, 0x45, 0xea, 0xff, 0x23, - 0x8b, 0x22, 0x7f, 0x3d, 0xcc, 0x6d, 0x5a, 0xad, 0x5d, 0x07, 0xb5, 0xf9, 0x46, 0xd9, 0x93, 0x3a, - 0x0a, 0xcc, 0x95, 0x1b, 0xa1, 0xe0, 0x27, 0x52, 0xb2, 0xfe, 0x36, 0xfc, 0xbe, 0x74, 0x1c, 0x29, - 0xdb, 0x59, 0xd7, 0x6d, 0xb7, 0xb6, 0x89, 0xd3, 0x82, 0x48, 0xd9, 0x6c, 0x22, 0x07, 0x7d, 0x3e, - 0x06, 0xfa, 0x89, 0x68, 0xe8, 0x27, 0x05, 0xa0, 0x57, 0x8a, 0x30, 0xb9, 0x69, 0x74, 0x10, 0xfe, - 0x61, 0x0a, 0xff, 0xd0, 0x6f, 0x4c, 0xc2, 0xb2, 0x0f, 0xc6, 0xa4, 0x25, 0xa3, 0x83, 0xb4, 0xe0, - 0x37, 0x7f, 0x22, 0x03, 0xe1, 0x44, 0x66, 0x95, 0xf8, 0xd3, 0x7a, 0x86, 0x97, 0xa9, 0xef, 0x20, - 0x7f, 0xf1, 0xcd, 0xa4, 0x87, 0x5b, 0xda, 0xba, 0xab, 0x63, 0x30, 0x66, 0x34, 0xfc, 0xcc, 0xfb, - 0x85, 0xc8, 0xbd, 0x7e, 0x21, 0xcf, 0x95, 0x93, 0xf5, 0x88, 0x3e, 0xb3, 0x11, 0x2d, 0xea, 0xbc, - 0x0f, 0x10, 0xb1, 0x14, 0x83, 0x77, 0x0f, 0x98, 0x96, 0x6e, 0x23, 0x77, 0x9d, 0xf5, 0xc4, 0xc8, - 0x69, 0x7c, 0x22, 0x76, 0xe5, 0x73, 0xea, 0xfa, 0x0e, 0xc2, 0x85, 0x95, 0xbc, 0x6f, 0xd4, 0x45, - 0x6b, 0x5f, 0x7a, 0xd8, 0xff, 0xe6, 0x46, 0xdd, 0xff, 0xf6, 0xab, 0x63, 0xfa, 0xcd, 0xf0, 0xf5, - 0x59, 0x90, 0x4b, 0xbb, 0xee, 0x23, 0xba, 0xfb, 0xfd, 0xbe, 0xb0, 0x9f, 0x0b, 0xed, 0xcf, 0x22, - 0x2f, 0x92, 0x1f, 0x53, 0xef, 0x9b, 0x50, 0x4b, 0xc4, 0xfc, 0x69, 0xa2, 0xea, 0x96, 0xbe, 0x8e, - 0xbc, 0x4d, 0x0e, 0x1c, 0x2c, 0x1f, 0xcc, 0x1c, 0xdc, 0x34, 0x57, 0x49, 0xff, 0xc4, 0xf4, 0x0c, - 0xc1, 0xbb, 0xdf, 0xf1, 0x64, 0xb9, 0x58, 0x7d, 0x78, 0x7b, 0x1d, 0x8b, 0x72, 0x46, 0x23, 0x2f, - 0xea, 0x2b, 0x85, 0xdd, 0xce, 0x89, 0xd8, 0x62, 0x5d, 0x09, 0x93, 0xd9, 0x54, 0x62, 0x97, 0x85, - 0xc6, 0x14, 0x9b, 0x3e, 0x60, 0xdf, 0x66, 0x5d, 0x05, 0x8b, 0x07, 0x46, 0x4c, 0x7d, 0xad, 0xf0, - 0x76, 0x14, 0xa9, 0xf6, 0x80, 0xf5, 0xc2, 0x64, 0xf2, 0x16, 0xdb, 0xac, 0x8a, 0x2d, 0x38, 0x7d, - 0x89, 0x7f, 0x4b, 0x86, 0x3c, 0xd9, 0x82, 0x54, 0xdf, 0x92, 0x49, 0x70, 0xcb, 0xba, 0xcb, 0xbb, - 0x10, 0x06, 0xef, 0x49, 0xd6, 0x1c, 0x38, 0x57, 0xc3, 0x6c, 0x22, 0x57, 0x43, 0xfe, 0x1c, 0xa7, - 0x40, 0x3b, 0x22, 0x75, 0x4c, 0x79, 0x3a, 0x99, 0xa4, 0x85, 0xf5, 0x65, 0x28, 0x7d, 0xbc, 0x9f, - 0x9f, 0x83, 0x19, 0x52, 0xf4, 0x39, 0xa3, 0xbd, 0x85, 0x5c, 0xf5, 0xdd, 0xd2, 0x0f, 0x0f, 0xea, - 0x4a, 0x15, 0x66, 0x2e, 0x62, 0xb6, 0x57, 0xf5, 0x4b, 0xd6, 0xae, 0x4b, 0x57, 0x2e, 0x6e, 0x8c, - 0x5d, 0xf7, 0x20, 0xf5, 0x9c, 0x27, 0x7f, 0x68, 0xdc, 0xff, 0x9e, 0x8c, 0xc9, 0x82, 0x3f, 0x71, - 0xe0, 0xca, 0x63, 0x23, 0x8b, 0x4d, 0x52, 0x4e, 0x42, 0x7e, 0xcf, 0x40, 0x17, 0x2b, 0x6d, 0x6a, - 0xdd, 0xd2, 0x37, 0xf5, 0xf7, 0x85, 0xf7, 0x6d, 0x59, 0xb8, 0x29, 0x2f, 0xe9, 0x6a, 0xa1, 0xd8, - 0xee, 0xed, 0x40, 0xb6, 0xc6, 0x70, 0xa6, 0x98, 0xbf, 0x8c, 0xb3, 0x94, 0x40, 0x11, 0xa3, 0x0c, - 0x67, 0x3e, 0x94, 0x47, 0xec, 0x89, 0x15, 0x22, 0x80, 0x11, 0xdf, 0xd3, 0x29, 0x16, 0x5f, 0x62, - 0x40, 0xd1, 0xe9, 0x4b, 0xfe, 0x0d, 0x32, 0x4c, 0xd5, 0x91, 0xbb, 0x64, 0xa0, 0x4e, 0xdb, 0x51, - 0xed, 0x83, 0x9b, 0x46, 0x37, 0x43, 0x7e, 0x13, 0x13, 0x1b, 0x74, 0x6e, 0x81, 0x66, 0x53, 0x5f, - 0x2f, 0x89, 0xee, 0x08, 0xd3, 0xd5, 0x37, 0x9f, 0xdb, 0x91, 0xc0, 0x24, 0xe6, 0xd1, 0x1b, 0x5f, - 0xf2, 0x18, 0x02, 0xdb, 0xca, 0x30, 0x43, 0x6f, 0xef, 0x2b, 0x76, 0x8c, 0x2d, 0x53, 0xdd, 0x1d, - 0x41, 0x0b, 0x51, 0x6e, 0x81, 0x9c, 0xee, 0x51, 0xa3, 0x5b, 0xaf, 0x6a, 0xdf, 0xce, 0x13, 0x97, - 0xa7, 0x91, 0x8c, 0x09, 0xc2, 0x48, 0x86, 0x8a, 0xed, 0xf3, 0x3c, 0xc6, 0x30, 0x92, 0x03, 0x0b, - 0x4f, 0x1f, 0xb1, 0xaf, 0xc8, 0x70, 0x9c, 0x32, 0x70, 0x16, 0xd9, 0xae, 0xd1, 0xd2, 0x3b, 0x04, - 0xb9, 0x17, 0x65, 0x46, 0x01, 0xdd, 0x0a, 0xcc, 0xee, 0xb1, 0x64, 0x29, 0x84, 0x67, 0xfa, 0x42, - 0xc8, 0x31, 0xa0, 0xf1, 0x3f, 0x26, 0x08, 0xc7, 0xc7, 0x49, 0x95, 0xa3, 0x39, 0xc6, 0x70, 0x7c, - 0xc2, 0x4c, 0xa4, 0x0f, 0xf1, 0xcb, 0x68, 0x68, 0x9e, 0xb0, 0xfb, 0xfc, 0x82, 0x30, 0xb6, 0x1b, - 0x30, 0x8d, 0xb1, 0x24, 0x3f, 0xd2, 0x65, 0x88, 0x18, 0x25, 0x0e, 0xfa, 0x1d, 0x7a, 0x61, 0x58, - 0xf0, 0xaf, 0xc6, 0xd2, 0x51, 0xcf, 0x01, 0x84, 0x9f, 0xd8, 0x4e, 0x3a, 0x13, 0xd5, 0x49, 0x4b, - 0x62, 0x9d, 0xf4, 0x9b, 0x85, 0x83, 0xa5, 0xf4, 0x67, 0xfb, 0xe0, 0xea, 0x21, 0x16, 0x26, 0x63, - 0x70, 0xe9, 0xe9, 0xeb, 0xc5, 0x6b, 0xb2, 0xbd, 0xd7, 0xb4, 0x7f, 0x6c, 0x24, 0xf3, 0x29, 0xb6, - 0x3f, 0x90, 0x7b, 0xfa, 0x83, 0x03, 0x58, 0xd2, 0x37, 0xc0, 0x51, 0x52, 0x44, 0x29, 0x60, 0x2b, - 0x47, 0x42, 0x41, 0xf4, 0x24, 0xab, 0x1f, 0x1f, 0x42, 0x09, 0x06, 0xdd, 0x21, 0x1f, 0xd7, 0xc9, - 0x25, 0x33, 0x76, 0x93, 0x2a, 0xc8, 0xe1, 0x5d, 0x3d, 0xff, 0xcd, 0x2c, 0xb1, 0x76, 0x37, 0xf0, - 0x9d, 0x6e, 0xea, 0x5f, 0x66, 0x47, 0x31, 0x22, 0xdc, 0x0d, 0x59, 0xec, 0xe2, 0x2e, 0x47, 0x2e, - 0x69, 0x84, 0x45, 0x86, 0x17, 0xee, 0xa1, 0x07, 0xdc, 0x95, 0x23, 0x1a, 0xfe, 0x53, 0xb9, 0x11, - 0x8e, 0x9e, 0xd7, 0x5b, 0x17, 0xb6, 0x6c, 0x6b, 0x17, 0xdf, 0x7e, 0x65, 0xd1, 0x6b, 0xb4, 0xf0, - 0x75, 0x84, 0xfc, 0x07, 0xe5, 0x56, 0xdf, 0x74, 0xc8, 0x0d, 0x32, 0x1d, 0x56, 0x8e, 0x50, 0xe3, - 0x41, 0x79, 0x7c, 0xd0, 0xe9, 0xe4, 0x63, 0x3b, 0x9d, 0x95, 0x23, 0x7e, 0xb7, 0xa3, 0x2c, 0xc2, - 0x64, 0xdb, 0xd8, 0xc3, 0x5b, 0xd5, 0x78, 0xd6, 0x35, 0xe8, 0xe8, 0xf2, 0xa2, 0xb1, 0x47, 0x36, - 0xb6, 0x57, 0x8e, 0x68, 0xc1, 0x9f, 0xca, 0x32, 0x4c, 0xe1, 0x6d, 0x01, 0x4c, 0x66, 0x32, 0xd1, - 0xb1, 0xe4, 0x95, 0x23, 0x5a, 0xf8, 0xaf, 0x67, 0x7d, 0x64, 0xf1, 0xd9, 0x8f, 0xbb, 0xfc, 0xed, - 0xf6, 0x4c, 0xa2, 0xed, 0x76, 0x4f, 0x16, 0x64, 0xc3, 0xfd, 0x24, 0xe4, 0x5a, 0x58, 0xc2, 0x12, - 0x95, 0x30, 0x79, 0x55, 0xee, 0x80, 0xec, 0x8e, 0x6e, 0xfb, 0x93, 0xe7, 0xeb, 0x07, 0xd3, 0x5d, - 0xd3, 0xed, 0x0b, 0x1e, 0x82, 0xde, 0x5f, 0x0b, 0x13, 0x90, 0xc3, 0x82, 0x0b, 0x1e, 0xd4, 0xb7, - 0x65, 0x89, 0x19, 0x52, 0xb2, 0x4c, 0x6f, 0xd8, 0x6f, 0x58, 0xfe, 0x01, 0x99, 0xdf, 0xcf, 0x8c, - 0xc6, 0x82, 0xec, 0x7b, 0xaf, 0xb9, 0x1c, 0x79, 0xaf, 0x79, 0xcf, 0x05, 0xbb, 0xd9, 0xde, 0x0b, - 0x76, 0xc3, 0xe5, 0x83, 0xdc, 0x60, 0x47, 0x95, 0x3f, 0x1b, 0xc2, 0x74, 0xe9, 0x15, 0x44, 0xf4, - 0x0c, 0xbc, 0x63, 0x98, 0x4c, 0x9d, 0xfd, 0xd7, 0x84, 0x9d, 0x52, 0x52, 0xa3, 0x66, 0x00, 0x7b, - 0xe9, 0xf7, 0x4d, 0xbf, 0x99, 0x85, 0x53, 0xe4, 0x1a, 0xe7, 0x3d, 0xd4, 0xb0, 0xf8, 0xfb, 0x26, - 0xd5, 0x3f, 0x1e, 0x89, 0xd2, 0xf4, 0x19, 0x70, 0xe4, 0xbe, 0x03, 0xce, 0xbe, 0x43, 0xca, 0xd9, - 0x01, 0x87, 0x94, 0x73, 0xc9, 0x56, 0x0e, 0x3f, 0xc4, 0xea, 0xcf, 0x3a, 0xaf, 0x3f, 0xb7, 0x47, - 0x00, 0xd4, 0x4f, 0x2e, 0x23, 0xb1, 0x6f, 0xde, 0x19, 0x68, 0x4a, 0x9d, 0xd3, 0x94, 0xbb, 0x86, - 0x67, 0x24, 0x7d, 0x6d, 0xf9, 0xbd, 0x2c, 0x5c, 0x16, 0x32, 0x53, 0x45, 0x17, 0xa9, 0xa2, 0x7c, - 0x7e, 0x24, 0x8a, 0x92, 0x3c, 0x06, 0x42, 0xda, 0x1a, 0xf3, 0x27, 0xc2, 0x67, 0x87, 0x7a, 0x81, - 0x0a, 0x64, 0x13, 0xa1, 0x2c, 0x27, 0x21, 0x4f, 0x7a, 0x18, 0x0a, 0x0d, 0x7d, 0x4b, 0xd8, 0xdd, - 0x88, 0x9d, 0x38, 0x12, 0xe5, 0x6d, 0x0c, 0xfa, 0x43, 0xd7, 0x35, 0x1a, 0xbb, 0xb6, 0x59, 0x31, - 0x5d, 0x4b, 0xfd, 0xb9, 0x91, 0x28, 0x4e, 0xe0, 0x0d, 0x27, 0x0f, 0xe3, 0x0d, 0x37, 0xd4, 0x2a, - 0x87, 0x5f, 0x83, 0x43, 0x59, 0xe5, 0x88, 0x28, 0x3c, 0x7d, 0xfc, 0xde, 0x21, 0xc3, 0x49, 0x3a, - 0xd9, 0x5a, 0xe0, 0x2d, 0x44, 0xf5, 0xbe, 0x51, 0x00, 0x79, 0xdc, 0x37, 0x93, 0xe8, 0x2d, 0x67, - 0xf8, 0x85, 0x3f, 0x29, 0x15, 0x7b, 0xbf, 0x03, 0x37, 0x1d, 0xec, 0xe1, 0x70, 0x24, 0x48, 0x89, - 0x5d, 0xeb, 0x90, 0x80, 0x8d, 0xf4, 0x31, 0x7b, 0x89, 0x0c, 0x79, 0x7a, 0x7d, 0xff, 0x46, 0x2a, - 0x0e, 0x13, 0x7c, 0x94, 0x67, 0x81, 0x1d, 0xb9, 0xc4, 0x97, 0xdc, 0xa7, 0xb7, 0x17, 0x77, 0x48, - 0xb7, 0xd8, 0x7f, 0x47, 0x82, 0xe9, 0x3a, 0x72, 0x4b, 0xba, 0x6d, 0x1b, 0xfa, 0xd6, 0xa8, 0x3c, - 0xbe, 0x45, 0xbd, 0x87, 0xd5, 0xef, 0x66, 0x44, 0xcf, 0xd3, 0x04, 0x0b, 0xe1, 0x3e, 0xab, 0x11, - 0xb1, 0x04, 0x1f, 0x16, 0x3a, 0x33, 0x33, 0x88, 0xda, 0x18, 0x3c, 0xb6, 0x25, 0x98, 0xf0, 0xcf, - 0xe2, 0xdd, 0xcc, 0x9d, 0xcf, 0xdc, 0x76, 0x77, 0xfc, 0x63, 0x30, 0xf8, 0x79, 0xff, 0x19, 0x30, - 0xf5, 0xd5, 0x09, 0x1d, 0xe5, 0xe3, 0x0f, 0x12, 0x26, 0x6b, 0x63, 0x49, 0xdc, 0xe1, 0x0f, 0xeb, - 0xe8, 0xe0, 0xef, 0x4c, 0xd0, 0xe5, 0xc8, 0x55, 0xdd, 0x45, 0x0f, 0xa8, 0x5f, 0x90, 0x61, 0xa2, - 0x8e, 0x5c, 0x6f, 0xbc, 0xe5, 0x2e, 0x37, 0x1d, 0x56, 0xc3, 0x15, 0x66, 0xc5, 0x63, 0x8a, 0xae, - 0x61, 0xdc, 0x03, 0x53, 0x5d, 0xdb, 0x6a, 0x21, 0xc7, 0xa1, 0xab, 0x17, 0xac, 0xa3, 0x5a, 0xbf, - 0xd1, 0x1f, 0xb3, 0x36, 0xbf, 0xee, 0xff, 0xa3, 0x85, 0xbf, 0x27, 0x35, 0x03, 0x08, 0x25, 0x5a, - 0xc1, 0x71, 0x9b, 0x01, 0x71, 0x85, 0xa7, 0x0f, 0xf4, 0x67, 0x65, 0x98, 0xa9, 0x23, 0x37, 0x90, - 0x62, 0x82, 0x4d, 0x8e, 0x68, 0x78, 0x39, 0x28, 0xe5, 0x83, 0x41, 0x29, 0x7e, 0x35, 0x20, 0x2f, - 0xcd, 0x80, 0xd8, 0x18, 0xaf, 0x06, 0x14, 0xe3, 0x60, 0x0c, 0xc7, 0xd7, 0x1e, 0x0d, 0x53, 0x98, - 0x17, 0xdc, 0x60, 0x7f, 0x21, 0x1b, 0x36, 0xde, 0x2f, 0xa6, 0xd4, 0x78, 0xef, 0x84, 0xdc, 0x8e, - 0x6e, 0x5f, 0x70, 0x70, 0xc3, 0x9d, 0x16, 0x31, 0xdb, 0xd7, 0xbc, 0xec, 0x1a, 0xf9, 0xab, 0xbf, - 0x9f, 0x66, 0x2e, 0x99, 0x9f, 0xe6, 0xc3, 0x52, 0xa2, 0x91, 0x90, 0xcc, 0x1d, 0x46, 0xd8, 0xe4, - 0x13, 0x8c, 0x9b, 0x31, 0x65, 0xa7, 0xaf, 0x1c, 0x2f, 0x92, 0x61, 0xd2, 0x1b, 0xb7, 0xb1, 0x3d, - 0x7e, 0xee, 0xe0, 0xea, 0xd0, 0xdf, 0xd0, 0x4f, 0xd8, 0x03, 0xfb, 0x12, 0x19, 0x9d, 0x79, 0x9f, - 0xa0, 0x07, 0x8e, 0x2b, 0x3c, 0x7d, 0x3c, 0xde, 0x45, 0xf0, 0xc0, 0xed, 0x41, 0x7d, 0xa3, 0x0c, - 0xf2, 0x32, 0x72, 0xc7, 0x6d, 0x45, 0xbe, 0x5d, 0x38, 0xc4, 0x11, 0x27, 0x30, 0xcc, 0xf3, 0xfc, - 0x32, 0x1a, 0x4d, 0x03, 0x12, 0x8b, 0x6d, 0x24, 0xc4, 0x40, 0xfa, 0xa8, 0xbd, 0x8f, 0xa0, 0x46, - 0x36, 0x17, 0x7e, 0x76, 0x04, 0xbd, 0xea, 0x78, 0x17, 0x3e, 0x7c, 0x01, 0x62, 0x1a, 0x87, 0xd5, - 0xde, 0xfa, 0x15, 0x3e, 0x96, 0xab, 0xf8, 0xc0, 0x6b, 0xec, 0xdb, 0xa8, 0x75, 0x01, 0xb5, 0xd5, - 0x9f, 0x3e, 0x38, 0x74, 0xa7, 0x60, 0xa2, 0x45, 0xa8, 0x61, 0xf0, 0x26, 0x35, 0xff, 0x35, 0xc1, - 0xbd, 0xd2, 0x7c, 0x47, 0x44, 0x7e, 0x1f, 0xe3, 0xbd, 0xd2, 0x02, 0xc5, 0x8f, 0xc1, 0x6c, 0x21, - 0xb3, 0x8c, 0x4a, 0xcb, 0x32, 0xd5, 0xff, 0x72, 0x70, 0x58, 0xae, 0x82, 0x29, 0xa3, 0x65, 0x99, - 0x38, 0x0c, 0x85, 0x7f, 0x08, 0x28, 0x48, 0xf0, 0xbf, 0x96, 0x77, 0xac, 0xfb, 0x0d, 0xba, 0x6b, - 0x1e, 0x26, 0x0c, 0x6b, 0x4c, 0x78, 0xac, 0x1f, 0x96, 0x31, 0xd1, 0xa7, 0xec, 0xf4, 0x21, 0xfb, - 0x78, 0xe8, 0xdd, 0x46, 0xba, 0xc2, 0x47, 0xc4, 0x2a, 0xf0, 0x30, 0xc3, 0x19, 0x5b, 0x8b, 0x43, - 0x19, 0xce, 0x62, 0x18, 0x18, 0xc3, 0x8d, 0x15, 0x21, 0x8e, 0xa9, 0xaf, 0x01, 0x1f, 0x00, 0x9d, - 0xd1, 0x99, 0x87, 0x43, 0xa2, 0x73, 0x38, 0x26, 0xe2, 0x07, 0x69, 0x88, 0x4c, 0x6a, 0xf1, 0xa8, - 0xff, 0x75, 0x14, 0xe0, 0xdc, 0x3e, 0x8c, 0xbf, 0x02, 0xf1, 0x56, 0x48, 0x70, 0x23, 0xf6, 0x3e, - 0x09, 0x7a, 0x54, 0xc6, 0x78, 0x57, 0xbc, 0x48, 0xf9, 0xe9, 0x03, 0xf8, 0x42, 0x19, 0xe6, 0xb0, - 0x8f, 0x40, 0x07, 0xe9, 0x36, 0xe9, 0x28, 0x47, 0xe2, 0x28, 0xff, 0x2e, 0xe1, 0x00, 0x3f, 0xbc, - 0x1c, 0x42, 0x3e, 0x46, 0x02, 0x85, 0x58, 0x74, 0x1f, 0x41, 0x16, 0xc6, 0xb2, 0x8d, 0x52, 0x08, - 0x58, 0xa0, 0x2a, 0x3e, 0x1a, 0x3c, 0x12, 0x7a, 0xe4, 0xf2, 0xc2, 0xf0, 0x1b, 0xdb, 0x98, 0x3d, - 0x72, 0x45, 0x98, 0x48, 0x1f, 0x93, 0x37, 0xde, 0x42, 0x17, 0x9c, 0x1b, 0xf8, 0xc2, 0xf8, 0xd7, - 0x66, 0x83, 0x13, 0x6d, 0x9f, 0x1d, 0x89, 0x07, 0xe6, 0x01, 0x02, 0xe2, 0x2b, 0x90, 0xb5, 0xad, - 0x8b, 0x64, 0x69, 0x6b, 0x56, 0xc3, 0xcf, 0xe4, 0x7a, 0xca, 0xce, 0xee, 0x8e, 0x49, 0x4e, 0x86, - 0xce, 0x6a, 0xfe, 0xab, 0x72, 0x1d, 0xcc, 0x5e, 0x34, 0xdc, 0xed, 0x15, 0xa4, 0xb7, 0x91, 0xad, - 0x59, 0x17, 0xb1, 0xc7, 0xdc, 0xa4, 0xc6, 0x27, 0xf2, 0xfe, 0x2b, 0x02, 0xf6, 0x25, 0xbe, 0x45, - 0x7e, 0x2c, 0xc7, 0xdf, 0x92, 0x58, 0x9e, 0xd1, 0x5c, 0xa5, 0xaf, 0x30, 0xef, 0x97, 0x61, 0x4a, - 0xb3, 0x2e, 0x52, 0x25, 0xf9, 0x3f, 0x0e, 0x57, 0x47, 0x12, 0x4f, 0xf4, 0xb0, 0xe4, 0x02, 0xf6, - 0xc7, 0x3e, 0xd1, 0x8b, 0x2d, 0x7e, 0x2c, 0x27, 0x97, 0x66, 0x34, 0xeb, 0x62, 0x1d, 0xb9, 0xa4, - 0x45, 0xa8, 0xcd, 0x11, 0x39, 0x59, 0x1b, 0x0e, 0x21, 0x48, 0xe7, 0xe1, 0xc1, 0x7b, 0xd2, 0x5d, - 0x84, 0x40, 0x40, 0x01, 0x8b, 0xe3, 0xde, 0x45, 0x18, 0xc8, 0xc1, 0x18, 0x62, 0xa4, 0xc8, 0x30, - 0xad, 0x59, 0x17, 0xbd, 0xa1, 0x61, 0xc9, 0xe8, 0x74, 0x46, 0x33, 0x42, 0x26, 0x35, 0xfe, 0x7d, - 0x31, 0xf8, 0x5c, 0x8c, 0xdd, 0xf8, 0x1f, 0xc0, 0x40, 0xfa, 0x30, 0x3c, 0x97, 0x34, 0x16, 0x7f, - 0x84, 0x36, 0x47, 0x83, 0xc3, 0xb0, 0x0d, 0x22, 0x60, 0xe3, 0xd0, 0x1a, 0x44, 0x14, 0x07, 0x63, - 0xd9, 0x39, 0x99, 0x2b, 0xe1, 0x61, 0x7e, 0xb4, 0x6d, 0xe2, 0x3d, 0xc9, 0x5c, 0x13, 0xe9, 0xb0, - 0xcb, 0x31, 0x32, 0x12, 0x34, 0x12, 0xb8, 0x20, 0x0a, 0xf0, 0x90, 0x3e, 0x1e, 0x1f, 0x91, 0x61, - 0x86, 0xb0, 0xf0, 0x08, 0xb1, 0x02, 0x86, 0x6a, 0x54, 0x6c, 0x0d, 0x0e, 0xa7, 0x51, 0xc5, 0x70, - 0x30, 0x96, 0x5b, 0x41, 0x3d, 0x3b, 0x6e, 0x88, 0xe3, 0xe3, 0x51, 0x08, 0x0e, 0x6d, 0x8c, 0x8d, - 0xf0, 0x08, 0xf9, 0x30, 0xc6, 0xd8, 0x21, 0x1d, 0x23, 0x7f, 0x6e, 0xd0, 0x8a, 0x46, 0x89, 0xc1, - 0x01, 0x9a, 0xc2, 0x08, 0x61, 0x18, 0xb2, 0x29, 0x1c, 0x12, 0x12, 0x5f, 0x95, 0x01, 0x08, 0x03, - 0x6b, 0xd6, 0x1e, 0xbe, 0xcc, 0x67, 0x04, 0xdd, 0x59, 0xaf, 0x5b, 0xbd, 0x3c, 0xc0, 0xad, 0x3e, - 0x61, 0x08, 0x97, 0xa4, 0x2b, 0x81, 0x8c, 0x94, 0xbd, 0x4a, 0x8e, 0x7d, 0x25, 0x30, 0xbe, 0xfc, - 0xf4, 0x31, 0xfe, 0x32, 0xb1, 0xe6, 0xc2, 0x03, 0xa6, 0xbf, 0x3e, 0x12, 0x94, 0x99, 0xd9, 0xbf, - 0xcc, 0xcf, 0xfe, 0x0f, 0x80, 0xed, 0xb0, 0x36, 0xe2, 0xa0, 0x83, 0xa3, 0xe9, 0xdb, 0x88, 0x87, - 0x77, 0x40, 0xf4, 0x67, 0xb3, 0x70, 0x94, 0x76, 0x22, 0x3f, 0x0c, 0x10, 0x27, 0x3c, 0x87, 0xc7, - 0x75, 0x92, 0x03, 0x50, 0x1e, 0xd5, 0x82, 0x54, 0x92, 0xa5, 0x4c, 0x01, 0xf6, 0xc6, 0xb2, 0xba, - 0x91, 0x2f, 0x3f, 0xd0, 0xd5, 0xcd, 0xb6, 0x78, 0xb8, 0xdf, 0x01, 0xc0, 0xfb, 0x6b, 0x8d, 0x32, - 0xbf, 0xd6, 0xd8, 0x67, 0x65, 0x32, 0xf1, 0xce, 0x35, 0x16, 0x19, 0x61, 0x77, 0xec, 0x3b, 0xd7, - 0xd1, 0x65, 0xa7, 0x8f, 0xd2, 0x7b, 0x64, 0xc8, 0xd6, 0x2d, 0xdb, 0x55, 0x9f, 0x97, 0xa4, 0x75, - 0x12, 0xc9, 0x87, 0x20, 0xf9, 0xef, 0x4a, 0x89, 0xbb, 0xa5, 0xf9, 0xe6, 0xf8, 0xa3, 0xce, 0xba, - 0xab, 0x63, 0xaf, 0x6e, 0xaf, 0x7c, 0xe6, 0xba, 0xe6, 0xa4, 0xf1, 0x74, 0x88, 0xfc, 0xea, 0xd1, - 0x07, 0x30, 0x52, 0x8b, 0xa7, 0x13, 0x59, 0x72, 0xfa, 0xb8, 0x3d, 0x74, 0x94, 0xfa, 0xb6, 0x2e, - 0x19, 0x1d, 0xa4, 0x3e, 0x8f, 0xb8, 0x8c, 0x54, 0xf5, 0x1d, 0x24, 0x7e, 0x24, 0x26, 0xd6, 0xb5, - 0x15, 0xc7, 0x97, 0x95, 0xc3, 0xf8, 0xb2, 0x49, 0x1b, 0x14, 0x39, 0x80, 0x4e, 0x58, 0x1a, 0x77, - 0x83, 0x8a, 0x29, 0x7b, 0x2c, 0x71, 0x3a, 0x8f, 0xd5, 0x91, 0x4b, 0x8c, 0xca, 0x9a, 0x7f, 0x03, - 0xcb, 0xcf, 0x8c, 0x24, 0x62, 0x67, 0x70, 0xc1, 0x8b, 0xdc, 0x73, 0xc1, 0xcb, 0xfb, 0x59, 0x70, - 0xd6, 0x78, 0x70, 0x7e, 0x32, 0x5a, 0x40, 0x3c, 0x93, 0x23, 0x81, 0xe9, 0xed, 0x01, 0x4c, 0xeb, - 0x1c, 0x4c, 0x77, 0x0c, 0xc9, 0x45, 0xfa, 0x80, 0xfd, 0x52, 0x0e, 0x8e, 0x92, 0x49, 0x7f, 0xd1, - 0x6c, 0xd3, 0x08, 0xab, 0x6f, 0x91, 0x0e, 0x79, 0xb3, 0x6d, 0x7f, 0x08, 0x56, 0x2e, 0x96, 0x73, - 0xae, 0xf7, 0x76, 0xfc, 0x05, 0x12, 0xce, 0xd5, 0xeb, 0x44, 0xf1, 0x4e, 0x9b, 0xf8, 0x0d, 0xf9, - 0xc1, 0x7f, 0xfc, 0x5d, 0x46, 0x13, 0xe2, 0x77, 0x19, 0xfd, 0x69, 0xb2, 0x75, 0x3b, 0x5c, 0x74, - 0x8f, 0xc0, 0x53, 0xb6, 0x9d, 0x12, 0xac, 0xe8, 0x09, 0x70, 0xf7, 0xa3, 0xe1, 0x4e, 0x16, 0x46, - 0x10, 0x19, 0xd2, 0x9d, 0x0c, 0x13, 0x38, 0x4c, 0x77, 0xb2, 0x41, 0x0c, 0x8c, 0xe1, 0x56, 0xfb, - 0x1c, 0xdd, 0xcd, 0xc7, 0xed, 0x46, 0xfd, 0x6b, 0x29, 0xf5, 0x51, 0xfa, 0x7b, 0x99, 0x44, 0xfe, - 0xcf, 0x98, 0xaf, 0xf8, 0x61, 0x3a, 0x89, 0x47, 0x73, 0x1c, 0xb9, 0x31, 0xac, 0x1b, 0x49, 0xd8, - 0x17, 0xfd, 0x9c, 0xd1, 0x76, 0xb7, 0x47, 0x74, 0xa2, 0xe3, 0xa2, 0x47, 0xcb, 0xbf, 0x1e, 0x19, - 0xbf, 0xa8, 0xff, 0x96, 0x49, 0x14, 0x42, 0x2a, 0x10, 0x09, 0x66, 0x2b, 0x42, 0xc4, 0x09, 0x02, - 0x3f, 0xc5, 0xd2, 0x1b, 0xa3, 0x46, 0x9f, 0x35, 0xda, 0xc8, 0x7a, 0x04, 0x6a, 0x34, 0xe6, 0x6b, - 0x74, 0x1a, 0x1d, 0x47, 0xee, 0x47, 0x54, 0xa3, 0x03, 0x91, 0x8c, 0x48, 0xa3, 0x63, 0xe9, 0xa5, - 0x2f, 0xe3, 0x57, 0xcf, 0xd0, 0x89, 0xd4, 0xaa, 0x61, 0x5e, 0x50, 0xff, 0x25, 0xef, 0x5f, 0xcc, - 0x7c, 0xce, 0x70, 0xb7, 0x69, 0x2c, 0x98, 0xdf, 0x13, 0xbe, 0x1b, 0x65, 0x88, 0x78, 0x2f, 0x7c, - 0x38, 0xa9, 0xdc, 0xbe, 0x70, 0x52, 0x45, 0x98, 0x35, 0x4c, 0x17, 0xd9, 0xa6, 0xde, 0x59, 0xea, - 0xe8, 0x5b, 0xce, 0xa9, 0x89, 0xbe, 0x97, 0xd7, 0x55, 0x98, 0x3c, 0x1a, 0xff, 0x07, 0x7b, 0x7d, - 0xe5, 0x24, 0x7f, 0x7d, 0x65, 0x44, 0xf4, 0xab, 0xa9, 0xe8, 0xe8, 0x57, 0x41, 0x74, 0x2b, 0x18, - 0x1c, 0x1c, 0x5b, 0xd4, 0x36, 0x4e, 0x18, 0xee, 0xef, 0x66, 0xc1, 0x28, 0x6c, 0x41, 0xe8, 0xc7, - 0xd7, 0xc9, 0x89, 0x56, 0xf7, 0x3c, 0x45, 0x98, 0xef, 0x55, 0x82, 0xc4, 0x16, 0x2a, 0x5b, 0x79, - 0xb9, 0xa7, 0xf2, 0x81, 0xc9, 0x93, 0x15, 0x30, 0x79, 0x58, 0xa5, 0xca, 0x89, 0x29, 0x55, 0x92, - 0xc5, 0x42, 0x91, 0xda, 0x8e, 0xe1, 0x34, 0x52, 0x0e, 0x8e, 0xf9, 0xd1, 0x6e, 0xbb, 0x5d, 0xa4, - 0xdb, 0xba, 0xd9, 0x42, 0xea, 0xc7, 0xa5, 0x51, 0x98, 0xbd, 0x4b, 0x30, 0x69, 0xb4, 0x2c, 0xb3, - 0x6e, 0x3c, 0xd3, 0xbf, 0x5c, 0x2e, 0x3e, 0xc8, 0x3a, 0x96, 0x48, 0x85, 0xfe, 0xa1, 0x05, 0xff, - 0x2a, 0x15, 0x98, 0x6a, 0xe9, 0x76, 0x9b, 0x04, 0xe1, 0xcb, 0xf5, 0x5c, 0xe4, 0x14, 0x49, 0xa8, - 0xe4, 0xff, 0xa2, 0x85, 0x7f, 0x2b, 0x35, 0x5e, 0x88, 0xf9, 0x9e, 0x68, 0x1e, 0x91, 0xc4, 0x16, - 0xc3, 0x9f, 0x38, 0x99, 0x7b, 0xd2, 0xb1, 0x51, 0x07, 0xdf, 0x41, 0x4f, 0x7a, 0x88, 0x29, 0x2d, - 0x4c, 0x48, 0xba, 0x3c, 0x80, 0x8b, 0xda, 0x87, 0xc6, 0xb8, 0x97, 0x07, 0x84, 0xb8, 0x48, 0x5f, - 0x33, 0xdf, 0x99, 0x87, 0x59, 0xd2, 0xab, 0x51, 0x71, 0xaa, 0x2f, 0xc4, 0x57, 0x48, 0xbb, 0xf7, - 0xa2, 0x4b, 0x6a, 0xfd, 0xe0, 0x63, 0x72, 0x01, 0xe4, 0x0b, 0x41, 0xc0, 0x41, 0xef, 0x31, 0xe9, - 0xbe, 0xbd, 0xcf, 0xd7, 0x3c, 0xe1, 0x69, 0xdc, 0xfb, 0xf6, 0xf1, 0xc5, 0xa7, 0x8f, 0xcf, 0x2f, - 0xcb, 0x20, 0x17, 0xdb, 0x6d, 0xb5, 0x75, 0x70, 0x28, 0xae, 0x81, 0x69, 0xbf, 0xcd, 0x84, 0x31, - 0x20, 0xd9, 0xa4, 0xa4, 0x8b, 0xa0, 0x81, 0x6c, 0x8a, 0xed, 0xb1, 0xef, 0x2a, 0xc4, 0x94, 0x9d, - 0x3e, 0x28, 0xbf, 0x3e, 0x41, 0x1b, 0xcd, 0x82, 0x65, 0x5d, 0xc0, 0x47, 0x65, 0x9e, 0x27, 0x43, - 0x6e, 0x09, 0xb9, 0xad, 0xed, 0x11, 0xb5, 0x99, 0x5d, 0xbb, 0xe3, 0xb7, 0x99, 0x7d, 0xf7, 0xe1, - 0x0f, 0xb6, 0x61, 0x7d, 0xb6, 0xe6, 0x31, 0x4b, 0xe3, 0x8e, 0xee, 0x1c, 0x5b, 0x7a, 0xfa, 0xe0, - 0xfc, 0x9b, 0x0c, 0x73, 0xc1, 0x0a, 0x17, 0xc1, 0xe4, 0x97, 0x32, 0x8f, 0xb4, 0xf5, 0x4e, 0xf5, - 0xf3, 0xc9, 0x42, 0xa4, 0x05, 0x32, 0xe5, 0x6b, 0x96, 0xf2, 0xc2, 0x62, 0x82, 0xe0, 0x69, 0x62, - 0x0c, 0x8e, 0x61, 0x06, 0x2f, 0xc3, 0x24, 0x66, 0x68, 0xd1, 0xd8, 0xc3, 0xae, 0x83, 0xdc, 0x42, - 0xe3, 0xb3, 0x46, 0xb2, 0xd0, 0x78, 0x07, 0xbf, 0xd0, 0x28, 0x18, 0xf1, 0xd8, 0x5f, 0x67, 0x4c, - 0xe8, 0x4b, 0xe3, 0xfd, 0x3f, 0xf2, 0x65, 0xc6, 0x04, 0xbe, 0x34, 0x03, 0xca, 0x4f, 0x1f, 0xd1, - 0xd7, 0xfd, 0x27, 0xda, 0xd9, 0xfa, 0x1b, 0xaa, 0xea, 0xff, 0x75, 0x0c, 0xb2, 0x67, 0xbd, 0x87, - 0xff, 0x11, 0xde, 0x88, 0xf5, 0xf2, 0x11, 0x04, 0x67, 0x78, 0x2a, 0x64, 0x3d, 0xfa, 0x74, 0xda, - 0x72, 0xa3, 0xd8, 0xee, 0xae, 0xc7, 0x88, 0x86, 0xff, 0x53, 0x4e, 0x42, 0xde, 0xb1, 0x76, 0xed, - 0x96, 0x67, 0x3e, 0x7b, 0x1a, 0x43, 0xdf, 0x92, 0x06, 0x25, 0xe5, 0x48, 0xcf, 0x8f, 0xce, 0x65, - 0x94, 0xb9, 0x20, 0x49, 0xe6, 0x2e, 0x48, 0x4a, 0xb0, 0x7f, 0x20, 0xc0, 0x5b, 0xfa, 0x1a, 0xf1, - 0xd7, 0xf8, 0xae, 0xc0, 0xf6, 0xa8, 0x60, 0x8f, 0x10, 0xcb, 0x41, 0xd5, 0x21, 0xa9, 0xc3, 0x37, - 0x2f, 0xda, 0x20, 0x0e, 0xfc, 0x58, 0x1d, 0xbe, 0x05, 0x78, 0x18, 0xcb, 0x29, 0xf5, 0x3c, 0x75, - 0x52, 0xbd, 0x6f, 0x94, 0xe8, 0x66, 0x39, 0xa5, 0x3f, 0x10, 0x3a, 0x23, 0x74, 0x5e, 0x1d, 0x1a, - 0x9d, 0x43, 0x72, 0x5f, 0xfd, 0x03, 0x19, 0x47, 0xc2, 0xf4, 0x8d, 0x1c, 0xf1, 0x8b, 0x8e, 0x12, - 0x43, 0xe4, 0x8d, 0xc1, 0x5c, 0x1c, 0xe8, 0xd9, 0xe1, 0x43, 0x83, 0xf3, 0xa2, 0x63, 0xf8, 0x1f, - 0x77, 0x68, 0x70, 0x51, 0x46, 0xd2, 0x07, 0xf2, 0x37, 0xc8, 0xc5, 0x62, 0xc5, 0x96, 0x6b, 0xec, - 0x8d, 0xb8, 0xa5, 0xf1, 0xc3, 0x4b, 0xc2, 0x68, 0xc0, 0xfb, 0x24, 0x44, 0x38, 0x1c, 0x77, 0x34, - 0x60, 0x31, 0x36, 0xd2, 0x87, 0xe9, 0xef, 0xf2, 0x9e, 0xf4, 0xe8, 0xda, 0xcc, 0x1b, 0xe9, 0x6a, - 0x00, 0x3a, 0x38, 0x5a, 0x67, 0x60, 0x86, 0x99, 0xfa, 0xfb, 0x17, 0xd6, 0x70, 0x69, 0x49, 0x0f, - 0xba, 0x07, 0x22, 0x1b, 0xf9, 0xc2, 0x40, 0x82, 0x05, 0x5f, 0x11, 0x26, 0xc6, 0x72, 0x1f, 0x9c, - 0x3f, 0x86, 0x8d, 0x09, 0xab, 0xdf, 0x63, 0xb1, 0xaa, 0xf1, 0x58, 0xdd, 0x26, 0x22, 0x26, 0xb1, - 0x31, 0x4d, 0x68, 0xde, 0xf8, 0x8e, 0x00, 0x2e, 0x8d, 0x83, 0xeb, 0xa9, 0x43, 0xf3, 0x91, 0x3e, - 0x62, 0xaf, 0x20, 0xdd, 0x61, 0x9d, 0x98, 0xec, 0xa3, 0xe9, 0x0e, 0xe9, 0x6c, 0x40, 0xe6, 0x66, - 0x03, 0x09, 0xfd, 0xed, 0x43, 0x37, 0x52, 0x9f, 0xb9, 0x41, 0x10, 0x65, 0x47, 0xec, 0x6f, 0x3f, - 0x90, 0x83, 0xf4, 0xc1, 0xf9, 0x27, 0x19, 0x60, 0xd9, 0xb6, 0x76, 0xbb, 0x35, 0xbb, 0x8d, 0x6c, - 0xf5, 0x6f, 0xc3, 0x09, 0xc0, 0x4b, 0x47, 0x30, 0x01, 0x58, 0x07, 0xd8, 0x0a, 0x88, 0x53, 0x0d, - 0xbf, 0x45, 0xcc, 0xdc, 0x0f, 0x99, 0xd2, 0x18, 0x1a, 0xfc, 0x95, 0xb3, 0x4f, 0xe3, 0x31, 0x8e, - 0xeb, 0xb3, 0x42, 0x72, 0xa3, 0x9c, 0x00, 0xbc, 0x2b, 0xc0, 0xba, 0xc1, 0x61, 0x7d, 0xf7, 0x01, - 0x38, 0x49, 0x1f, 0xf3, 0x7f, 0x9e, 0x80, 0x69, 0xb2, 0x5d, 0x47, 0x64, 0xfa, 0x0f, 0x21, 0xe8, - 0xbf, 0x3e, 0x02, 0xd0, 0x37, 0x60, 0xc6, 0x0a, 0xa9, 0x93, 0x3e, 0x95, 0x5d, 0x80, 0x89, 0x85, - 0x9d, 0xe1, 0x4b, 0xe3, 0xc8, 0xa8, 0x1f, 0x65, 0x91, 0xd7, 0x78, 0xe4, 0xef, 0x88, 0x91, 0x37, - 0x43, 0x71, 0x94, 0xd0, 0xbf, 0x3b, 0x80, 0x7e, 0x83, 0x83, 0xbe, 0x78, 0x10, 0x56, 0xc6, 0x10, - 0x6e, 0x5f, 0x86, 0x2c, 0x3e, 0x1d, 0xf7, 0x9b, 0x29, 0xce, 0xef, 0x4f, 0xc1, 0x04, 0x6e, 0xb2, - 0xc1, 0xbc, 0xc3, 0x7f, 0xf5, 0xbe, 0xe8, 0x9b, 0x2e, 0xb2, 0x03, 0x8f, 0x05, 0xff, 0xd5, 0xe3, - 0xc1, 0xf7, 0x4a, 0x76, 0x4e, 0xe5, 0xc9, 0x46, 0x64, 0x90, 0x30, 0xf4, 0xa4, 0x84, 0x95, 0xf8, - 0xc8, 0xce, 0xcb, 0x0d, 0x33, 0x29, 0x19, 0xc0, 0x48, 0xfa, 0xc0, 0xff, 0x65, 0x16, 0x4e, 0x91, - 0x55, 0xa5, 0x25, 0xdb, 0xda, 0xe9, 0xb9, 0xdd, 0xca, 0x38, 0xb8, 0x2e, 0x5c, 0x0f, 0x73, 0x2e, - 0xe7, 0x8f, 0x4d, 0x75, 0xa2, 0x27, 0x55, 0xfd, 0x33, 0xd6, 0xa7, 0xe2, 0xe9, 0x3c, 0x92, 0x0b, - 0x31, 0x02, 0x8c, 0xe2, 0x3d, 0xf1, 0x42, 0xbd, 0x20, 0xa3, 0xcc, 0x22, 0x95, 0x3c, 0xd4, 0x9a, - 0x65, 0xa0, 0x53, 0x39, 0x11, 0x9d, 0xfa, 0x40, 0xa0, 0x53, 0x3f, 0xcd, 0xe9, 0xd4, 0xf2, 0xc1, - 0x45, 0x92, 0xbe, 0x6e, 0xbd, 0x36, 0xd8, 0x18, 0x0a, 0xb6, 0xed, 0x76, 0x52, 0xd8, 0xac, 0x63, - 0xfd, 0x91, 0xb2, 0x9c, 0x3f, 0x12, 0x7f, 0x1f, 0x45, 0x82, 0x99, 0x30, 0xcf, 0x75, 0x84, 0x2e, - 0xcd, 0x81, 0x64, 0xf8, 0xdc, 0x49, 0x46, 0x7b, 0xa8, 0xb9, 0x6e, 0x6c, 0x41, 0x63, 0x58, 0x5b, - 0x9a, 0x83, 0xfc, 0x92, 0xd1, 0x71, 0x91, 0xad, 0x7e, 0x99, 0xce, 0x74, 0x5f, 0x9b, 0xe2, 0x00, - 0xb0, 0x08, 0xf9, 0x4d, 0x5c, 0x1a, 0x35, 0x99, 0x6f, 0x12, 0x6b, 0x3d, 0x84, 0x43, 0x8d, 0xfe, - 0x9b, 0x34, 0x3a, 0x5f, 0x0f, 0x99, 0x91, 0x4d, 0x91, 0x13, 0x44, 0xe7, 0x1b, 0xcc, 0xc2, 0x58, - 0x2e, 0xa6, 0xca, 0x6b, 0x68, 0xc7, 0x1b, 0xe3, 0x2f, 0xa4, 0x87, 0x70, 0x01, 0x64, 0xa3, 0xed, - 0xe0, 0xce, 0x71, 0x4a, 0xf3, 0x1e, 0x93, 0xfa, 0x0a, 0xf5, 0x8a, 0x8a, 0xb0, 0x3c, 0x6e, 0x5f, - 0x21, 0x21, 0x2e, 0xd2, 0xc7, 0xec, 0x7b, 0xd8, 0x51, 0xb4, 0xdb, 0xd1, 0x5b, 0xc8, 0xe3, 0x3e, - 0x35, 0xd4, 0x48, 0x4f, 0x96, 0xf5, 0x7b, 0x32, 0xa6, 0x9d, 0xe6, 0x0e, 0xd0, 0x4e, 0x87, 0x5d, - 0x86, 0x0c, 0x64, 0x8e, 0x2b, 0x7e, 0x68, 0xcb, 0x90, 0xb1, 0x6c, 0x8c, 0xe1, 0xda, 0x51, 0xff, - 0x20, 0xed, 0x58, 0x5b, 0xeb, 0xb0, 0x9b, 0x34, 0x54, 0x58, 0x23, 0x3b, 0x34, 0x3b, 0xcc, 0x26, - 0x4d, 0x34, 0x0f, 0x63, 0x40, 0x6b, 0x8e, 0xa2, 0xf5, 0x39, 0x3a, 0x8c, 0xa6, 0xbc, 0x4f, 0xea, - 0x58, 0xb6, 0x9b, 0x6c, 0x9f, 0xd4, 0xe3, 0x4e, 0xc3, 0xff, 0x25, 0x3d, 0x78, 0xc5, 0x9f, 0xab, - 0x1e, 0xd5, 0xf0, 0x99, 0xe0, 0xe0, 0xd5, 0x20, 0x06, 0xd2, 0x87, 0xf7, 0xad, 0x87, 0x34, 0x78, - 0x0e, 0xdb, 0x1c, 0x69, 0x1b, 0x18, 0xd9, 0xd0, 0x39, 0x4c, 0x73, 0x8c, 0xe6, 0x21, 0x7d, 0xbc, - 0xbe, 0xcd, 0x0c, 0x9c, 0x6f, 0x1e, 0xe3, 0xc0, 0xe9, 0xb7, 0xcc, 0xdc, 0x90, 0x2d, 0x73, 0xd8, - 0xfd, 0x1f, 0x2a, 0xeb, 0xd1, 0x0d, 0x98, 0xc3, 0xec, 0xff, 0xc4, 0x30, 0x91, 0x3e, 0xe2, 0x6f, - 0x91, 0x21, 0x57, 0x1f, 0xff, 0x78, 0x39, 0xec, 0x5c, 0x04, 0xcb, 0xaa, 0x3e, 0xb2, 0xe1, 0x72, - 0x98, 0xb9, 0x48, 0x24, 0x0b, 0x63, 0x08, 0xbc, 0x7f, 0x14, 0x66, 0xf0, 0x92, 0x88, 0xbf, 0xcd, - 0xfa, 0x6d, 0x3a, 0x6a, 0x3e, 0x9c, 0x62, 0x5b, 0xbd, 0x07, 0x26, 0xfd, 0xfd, 0x3b, 0x3a, 0x72, - 0xce, 0x8b, 0xb5, 0x4f, 0x9f, 0x4b, 0x2d, 0xf8, 0xff, 0x40, 0xce, 0x10, 0x23, 0xdf, 0xab, 0x1d, - 0xd6, 0x19, 0xe2, 0x50, 0xf7, 0x6b, 0xff, 0x34, 0x1c, 0x51, 0xff, 0x4b, 0x7a, 0x98, 0xf7, 0xee, - 0xe3, 0x66, 0xfb, 0xec, 0xe3, 0x7e, 0x9c, 0xc5, 0xb2, 0xce, 0x63, 0x79, 0xa7, 0xa8, 0x08, 0x47, - 0x38, 0xd6, 0xbe, 0x27, 0x80, 0xf3, 0x2c, 0x07, 0xe7, 0xc2, 0x81, 0x78, 0x19, 0xc3, 0xc1, 0xc7, - 0x6c, 0x38, 0xe6, 0x7e, 0x22, 0xc5, 0x76, 0xdc, 0x73, 0xaa, 0x22, 0xbb, 0xef, 0x54, 0x05, 0xd7, - 0xd2, 0x73, 0x07, 0x6c, 0xe9, 0x9f, 0x60, 0xb5, 0xa3, 0xc1, 0x6b, 0xc7, 0x53, 0xc5, 0x11, 0x19, - 0xdd, 0xc8, 0xfc, 0xde, 0x40, 0x3d, 0xce, 0x71, 0xea, 0x51, 0x3a, 0x18, 0x33, 0xe9, 0xeb, 0xc7, - 0x1f, 0xfa, 0x13, 0xda, 0x43, 0x6e, 0xef, 0xc3, 0x6e, 0x15, 0x73, 0x42, 0x1c, 0xd9, 0xc8, 0x3d, - 0xcc, 0x56, 0xf1, 0x20, 0x4e, 0xc6, 0x10, 0x8b, 0x6d, 0x16, 0xa6, 0x31, 0x4f, 0xe7, 0x8c, 0xf6, - 0x16, 0x72, 0xd5, 0xd7, 0x11, 0x1f, 0x45, 0x3f, 0xf2, 0xe5, 0x88, 0xc2, 0x13, 0x45, 0x9d, 0x77, - 0x4d, 0xea, 0xd1, 0x41, 0x98, 0x9c, 0x67, 0x18, 0x1c, 0x77, 0x04, 0xc5, 0x81, 0x1c, 0xa4, 0x0f, - 0xd9, 0x47, 0x89, 0xbb, 0xcd, 0xaa, 0x7e, 0xc9, 0xda, 0x75, 0xd5, 0x07, 0x47, 0xd0, 0x41, 0x2f, - 0x40, 0xbe, 0x83, 0xa9, 0xd1, 0x63, 0x19, 0xf1, 0xd3, 0x1d, 0x2a, 0x02, 0x52, 0xbe, 0x46, 0xff, - 0x4c, 0x7a, 0x36, 0x23, 0x94, 0x23, 0xa1, 0x33, 0xee, 0xb3, 0x19, 0x03, 0xca, 0x1f, 0xcb, 0x1d, - 0x3b, 0x93, 0x5e, 0xe9, 0xc6, 0x8e, 0xe1, 0x8e, 0x28, 0x82, 0x43, 0xc7, 0xa3, 0xe5, 0x47, 0x70, - 0xc0, 0x2f, 0x49, 0x4f, 0x8c, 0x32, 0x52, 0xf1, 0x7e, 0x1f, 0xf7, 0x89, 0xd1, 0xf8, 0xe2, 0xd3, - 0xc7, 0xe4, 0x57, 0x49, 0xcb, 0x3a, 0x4b, 0x9c, 0x6f, 0x53, 0xf4, 0xeb, 0x1d, 0xba, 0xb1, 0x10, - 0xd6, 0x0e, 0xaf, 0xb1, 0xf4, 0x2d, 0x3f, 0x7d, 0x60, 0xfe, 0xdb, 0x8f, 0x43, 0x6e, 0x11, 0x9d, - 0xdf, 0xdd, 0x52, 0xef, 0x80, 0xc9, 0x86, 0x8d, 0x50, 0xc5, 0xdc, 0xb4, 0x3c, 0xe9, 0xba, 0xde, - 0xb3, 0x0f, 0x09, 0x7d, 0xf3, 0xf0, 0xd8, 0x46, 0x7a, 0x3b, 0x3c, 0x7f, 0xe6, 0xbf, 0xaa, 0x2f, - 0x97, 0x20, 0x5b, 0x77, 0x75, 0x57, 0x9d, 0x0a, 0xb0, 0x55, 0x1f, 0x64, 0xb1, 0xb8, 0x83, 0xc7, - 0xe2, 0x7a, 0x4e, 0x16, 0x98, 0x83, 0x79, 0xef, 0xff, 0x08, 0x00, 0x54, 0x98, 0xbc, 0xdf, 0xb1, - 0x4c, 0x2f, 0x87, 0x7f, 0x04, 0xd2, 0x7f, 0x57, 0x5f, 0x13, 0x88, 0xfb, 0x2e, 0x4e, 0xdc, 0x8f, - 0x15, 0x2b, 0x62, 0x0c, 0x2b, 0x6d, 0x12, 0x4c, 0x79, 0xa2, 0x5d, 0x41, 0x7a, 0xdb, 0x51, 0x7f, - 0x2c, 0x54, 0xfe, 0x08, 0x31, 0xab, 0x1f, 0x14, 0x0e, 0xc6, 0x49, 0x6a, 0x15, 0x10, 0x8f, 0xf6, - 0xe8, 0xf0, 0x37, 0xff, 0x25, 0x3e, 0x18, 0xc9, 0xcd, 0x90, 0x35, 0xcc, 0x4d, 0x8b, 0xfa, 0x17, - 0x5e, 0x19, 0x41, 0xdb, 0xd3, 0x09, 0x0d, 0x67, 0x14, 0x8c, 0xd4, 0x19, 0xcf, 0xd6, 0x58, 0x2e, - 0xbd, 0xcb, 0x7a, 0xa5, 0xab, 0xff, 0xfb, 0x40, 0x61, 0x2b, 0x0a, 0x64, 0xbb, 0xba, 0xbb, 0x4d, - 0x8b, 0xc6, 0xcf, 0x9e, 0x8d, 0xbc, 0x6b, 0xea, 0xa6, 0x65, 0x5e, 0xda, 0x31, 0x9e, 0x19, 0xdc, - 0xad, 0xcb, 0xa5, 0x79, 0x9c, 0x6f, 0x21, 0x13, 0xd9, 0xba, 0x8b, 0xea, 0x7b, 0x5b, 0x78, 0x8e, - 0x35, 0xa9, 0xb1, 0x49, 0x89, 0xf5, 0xdf, 0xe3, 0x38, 0x5a, 0xff, 0x37, 0x8d, 0x0e, 0xc2, 0x91, - 0x9a, 0xa8, 0xfe, 0xfb, 0xef, 0x89, 0xf4, 0xbf, 0x4f, 0x11, 0xe9, 0xa3, 0xf1, 0xef, 0x12, 0xcc, - 0xd4, 0x3d, 0x85, 0xab, 0xef, 0xee, 0xec, 0xe8, 0xf6, 0x25, 0xf5, 0xda, 0x10, 0x15, 0x46, 0x35, - 0x33, 0xbc, 0x5f, 0xca, 0x1f, 0x08, 0x5f, 0x2b, 0x4d, 0x9b, 0x36, 0x53, 0x42, 0xe2, 0x76, 0xf0, - 0x78, 0xc8, 0x79, 0xea, 0xed, 0x7b, 0x5c, 0xc6, 0x36, 0x04, 0x92, 0x53, 0x30, 0xa2, 0xd5, 0x40, - 0xde, 0xc6, 0x10, 0x4d, 0x43, 0x82, 0xa3, 0x75, 0x57, 0x6f, 0x5d, 0x58, 0xb6, 0x6c, 0x6b, 0xd7, - 0x35, 0x4c, 0xe4, 0xa8, 0x8f, 0x0a, 0x11, 0xf0, 0xf5, 0x3f, 0x13, 0xea, 0xbf, 0xfa, 0x83, 0x8c, - 0xe8, 0x28, 0x1a, 0x74, 0xab, 0x2c, 0xf9, 0x88, 0x00, 0x55, 0x62, 0xe3, 0xa2, 0x08, 0xc5, 0xf4, - 0x85, 0xf6, 0x66, 0x19, 0x0a, 0xe5, 0x07, 0xba, 0x96, 0xed, 0xae, 0x5a, 0x2d, 0xbd, 0xe3, 0xb8, - 0x96, 0x8d, 0xd4, 0x5a, 0xac, 0xd4, 0xbc, 0x1e, 0xa6, 0x6d, 0xb5, 0xc2, 0xc1, 0x91, 0xbe, 0xb1, - 0x6a, 0x27, 0xf3, 0x3a, 0xfe, 0x51, 0xe1, 0x5d, 0x46, 0x22, 0x95, 0x5e, 0x8e, 0x22, 0xf4, 0xbc, - 0x5f, 0x97, 0x96, 0xec, 0xb0, 0x84, 0xd8, 0xce, 0xa3, 0x10, 0x53, 0x63, 0x58, 0x2a, 0x97, 0x60, - 0xb6, 0xbe, 0x7b, 0x3e, 0x20, 0xe2, 0xb0, 0x46, 0xc8, 0xeb, 0x85, 0xa3, 0x54, 0x50, 0xc5, 0x63, - 0x09, 0x45, 0xc8, 0xf7, 0x3a, 0x98, 0x75, 0xd8, 0x6c, 0x14, 0x6f, 0x3e, 0x51, 0x30, 0x3a, 0xc5, - 0xe0, 0x52, 0xd3, 0x17, 0xe0, 0x7b, 0x25, 0x98, 0xad, 0x75, 0x91, 0x89, 0xda, 0xc4, 0x0b, 0x92, - 0x13, 0xe0, 0xcb, 0x13, 0x0a, 0x90, 0x23, 0x14, 0x21, 0xc0, 0xd0, 0x63, 0x79, 0xd1, 0x17, 0x5e, - 0x98, 0x90, 0x48, 0x70, 0x71, 0xa5, 0xa5, 0x2f, 0xb8, 0x2f, 0x49, 0x30, 0xad, 0xed, 0x9a, 0xeb, - 0xb6, 0xe5, 0x8d, 0xc6, 0xb6, 0x7a, 0x67, 0xd8, 0x41, 0xdc, 0x04, 0xc7, 0xda, 0xbb, 0x36, 0x5e, - 0x7f, 0xaa, 0x98, 0x75, 0xd4, 0xb2, 0xcc, 0xb6, 0x83, 0xeb, 0x91, 0xd3, 0xf6, 0x7f, 0xb8, 0x3d, - 0xfb, 0xbc, 0x6f, 0xc8, 0x19, 0xf5, 0x85, 0xc2, 0xa1, 0x6e, 0x48, 0xe5, 0x99, 0xa2, 0xc5, 0x7b, - 0x02, 0xc1, 0x80, 0x36, 0x83, 0x4a, 0x48, 0x5f, 0xb8, 0x9f, 0x93, 0x40, 0x29, 0xb6, 0x5a, 0xd6, - 0xae, 0xe9, 0xd6, 0x51, 0x07, 0xb5, 0xdc, 0x86, 0xad, 0xb7, 0x10, 0x6b, 0x3f, 0x17, 0x40, 0x6e, - 0x1b, 0x36, 0xed, 0x83, 0xbd, 0x47, 0x2a, 0xc7, 0x97, 0x0b, 0xef, 0x38, 0x92, 0x5a, 0xee, 0x2f, - 0x25, 0x81, 0x38, 0xc5, 0xf6, 0x15, 0x05, 0x0b, 0x4a, 0x5f, 0xaa, 0x9f, 0x90, 0x60, 0xca, 0xef, - 0xb1, 0xb7, 0x44, 0x84, 0xf9, 0xab, 0x09, 0x27, 0x23, 0x01, 0xf1, 0x04, 0x32, 0x7c, 0x67, 0x82, - 0x59, 0x45, 0x14, 0xfd, 0x64, 0xa2, 0x2b, 0x26, 0x17, 0x9d, 0xf7, 0x5a, 0xad, 0x35, 0x97, 0x6a, - 0xab, 0x8b, 0x65, 0xad, 0x20, 0xab, 0x5f, 0x96, 0x20, 0xbb, 0x6e, 0x98, 0x5b, 0x6c, 0x74, 0xa5, - 0xe3, 0x9e, 0x1d, 0xd9, 0x46, 0x0f, 0xd0, 0x96, 0x4e, 0x5e, 0x94, 0x5b, 0xe1, 0xb8, 0xb9, 0xbb, - 0x73, 0x1e, 0xd9, 0xb5, 0x4d, 0x3c, 0xca, 0x3a, 0x0d, 0xab, 0x8e, 0x4c, 0x62, 0x84, 0xe6, 0xb4, - 0xbe, 0xdf, 0x78, 0x13, 0x4c, 0x60, 0xf2, 0xe0, 0x71, 0x12, 0x21, 0xf1, 0x80, 0x29, 0x89, 0x61, - 0x2a, 0xd1, 0xb4, 0xa1, 0x0f, 0xf1, 0xf4, 0x35, 0xf5, 0x8f, 0x72, 0x70, 0xa2, 0x68, 0x5e, 0xc2, - 0x36, 0x05, 0xe9, 0xe0, 0x4b, 0xdb, 0xba, 0xb9, 0x85, 0xf0, 0x00, 0x11, 0x48, 0x9c, 0x0d, 0xd1, - 0x9f, 0xe1, 0x43, 0xf4, 0x2b, 0x1a, 0x4c, 0x58, 0x76, 0x1b, 0xd9, 0x0b, 0x97, 0x30, 0x4f, 0xbd, - 0xcb, 0xce, 0xb4, 0x4d, 0xf6, 0x2b, 0x62, 0x9e, 0x92, 0x9f, 0xaf, 0x91, 0xff, 0x35, 0x9f, 0xd0, - 0x99, 0x9b, 0x60, 0x82, 0xa6, 0x29, 0x33, 0x30, 0x59, 0xd3, 0x16, 0xcb, 0x5a, 0xb3, 0xb2, 0x58, - 0x38, 0xa2, 0x5c, 0x06, 0x47, 0x2b, 0x8d, 0xb2, 0x56, 0x6c, 0x54, 0x6a, 0xd5, 0x26, 0x4e, 0x2f, - 0x64, 0xd4, 0xe7, 0x66, 0x45, 0x3d, 0x7b, 0xe3, 0x99, 0xe9, 0x07, 0xab, 0x06, 0x13, 0x2d, 0x92, - 0x01, 0x0f, 0xa1, 0xd3, 0x89, 0x6a, 0x47, 0x09, 0x92, 0x04, 0xcd, 0x27, 0xa4, 0x9c, 0x06, 0xb8, - 0x68, 0x5b, 0xe6, 0x56, 0x78, 0xea, 0x70, 0x52, 0x63, 0x52, 0xd4, 0x07, 0x33, 0x90, 0x27, 0xff, - 0xe0, 0x2b, 0x49, 0xf0, 0x53, 0x28, 0x78, 0xff, 0xdd, 0xb3, 0x78, 0xb1, 0xbc, 0xc2, 0x89, 0x16, - 0x7d, 0xf5, 0x74, 0x91, 0xc8, 0x80, 0x58, 0xc2, 0xb4, 0x2a, 0x37, 0x43, 0x9e, 0xfc, 0x4b, 0xbd, - 0x0e, 0xa2, 0xc3, 0x8b, 0x92, 0x6c, 0x82, 0x7e, 0xca, 0xe2, 0x32, 0x4d, 0x5f, 0x9b, 0x3f, 0x24, - 0xc1, 0x64, 0x15, 0xb9, 0xa5, 0x6d, 0xd4, 0xba, 0xa0, 0x3e, 0x86, 0x5f, 0x00, 0xed, 0x18, 0xc8, - 0x74, 0xef, 0xdb, 0xe9, 0x04, 0x0b, 0xa0, 0x7e, 0x82, 0xfa, 0x7c, 0xb6, 0xf3, 0xbd, 0x9b, 0xd7, - 0x9f, 0x1b, 0xfb, 0xd4, 0xd5, 0x2f, 0x21, 0x42, 0x65, 0x4e, 0x42, 0xde, 0x46, 0xce, 0x6e, 0xc7, - 0x5f, 0x44, 0xa3, 0x6f, 0xea, 0x43, 0x81, 0x38, 0x4b, 0x9c, 0x38, 0x6f, 0x16, 0x2f, 0x62, 0x0c, - 0xf1, 0x4a, 0xb3, 0x30, 0x51, 0x31, 0x0d, 0xd7, 0xd0, 0x3b, 0xea, 0x0b, 0xb3, 0x30, 0x5b, 0x47, - 0xee, 0xba, 0x6e, 0xeb, 0x3b, 0xc8, 0x45, 0xb6, 0xa3, 0x7e, 0x97, 0xef, 0x13, 0xba, 0x1d, 0xdd, - 0xdd, 0xb4, 0xec, 0x1d, 0x5f, 0x35, 0xfd, 0x77, 0x4f, 0x35, 0xf7, 0x90, 0xed, 0x84, 0x7c, 0xf9, - 0xaf, 0xde, 0x97, 0x8b, 0x96, 0x7d, 0xc1, 0x1b, 0x04, 0xe9, 0x34, 0x8d, 0xbe, 0x7a, 0xf4, 0x3a, - 0xd6, 0xd6, 0x2a, 0xda, 0x43, 0x7e, 0xb8, 0xb4, 0xe0, 0xdd, 0x9b, 0x0b, 0xb4, 0xad, 0xaa, 0xe5, - 0x7a, 0x9d, 0xf6, 0xaa, 0xb5, 0x45, 0xe2, 0xc5, 0x4e, 0x6a, 0x7c, 0x62, 0x98, 0x4b, 0xdf, 0x43, - 0x38, 0x57, 0x9e, 0xcd, 0x45, 0x13, 0x95, 0x79, 0x50, 0x82, 0xdf, 0x1a, 0xa8, 0x83, 0x76, 0x90, - 0x6b, 0x5f, 0xc2, 0xd7, 0x42, 0x4c, 0x6a, 0x7d, 0xbe, 0xd0, 0x01, 0x5a, 0x7c, 0xb2, 0x4e, 0xa5, - 0x37, 0xcf, 0x49, 0xee, 0x40, 0x93, 0x75, 0x11, 0x8a, 0x63, 0xb9, 0xf6, 0x4a, 0xf6, 0xac, 0x99, - 0x57, 0xca, 0x90, 0xc5, 0x83, 0xe7, 0x5b, 0x32, 0xdc, 0x0a, 0xd3, 0x0e, 0x72, 0x1c, 0x7d, 0x0b, - 0xf9, 0x2b, 0x4c, 0xf4, 0x55, 0xb9, 0x0d, 0x72, 0x1d, 0x8c, 0x29, 0x19, 0x1c, 0xae, 0xe5, 0x6a, - 0xe6, 0x19, 0x18, 0x1e, 0xad, 0x60, 0x24, 0xc0, 0x70, 0x6b, 0xe4, 0x8f, 0x33, 0xf7, 0x40, 0x8e, - 0xc0, 0x3f, 0x05, 0xb9, 0xc5, 0xf2, 0xc2, 0xc6, 0x72, 0xe1, 0x88, 0xf7, 0xe8, 0xf3, 0x37, 0x05, - 0xb9, 0xa5, 0x62, 0xa3, 0xb8, 0x5a, 0x90, 0xbc, 0x7a, 0x54, 0xaa, 0x4b, 0xb5, 0x82, 0xec, 0x25, - 0xae, 0x17, 0xab, 0x95, 0x52, 0x21, 0xab, 0x4c, 0xc3, 0xc4, 0xb9, 0xa2, 0x56, 0xad, 0x54, 0x97, - 0x0b, 0x39, 0xf5, 0xef, 0x58, 0xfc, 0x6e, 0xe7, 0xf1, 0xbb, 0x2e, 0x8a, 0xa7, 0x7e, 0x90, 0xbd, - 0x2a, 0x80, 0xec, 0x4e, 0x0e, 0xb2, 0x1f, 0x17, 0x21, 0x32, 0x06, 0x77, 0xa6, 0x3c, 0x4c, 0xac, - 0xdb, 0x56, 0x0b, 0x39, 0x8e, 0xfa, 0x6b, 0x12, 0xe4, 0x4b, 0xba, 0xd9, 0x42, 0x1d, 0xf5, 0x8a, - 0x10, 0x2a, 0xe2, 0x2a, 0x9a, 0x09, 0x4e, 0x8b, 0xfd, 0x53, 0x46, 0xb4, 0xf7, 0xa3, 0x74, 0xe7, - 0x09, 0xcd, 0x08, 0xf9, 0x88, 0xf5, 0x72, 0xb1, 0xa4, 0xc6, 0x70, 0x35, 0x8e, 0x04, 0x53, 0x74, - 0x35, 0xe0, 0x3c, 0x62, 0xe7, 0xe1, 0xdf, 0xcd, 0x88, 0x4e, 0x0e, 0xfd, 0x1a, 0x04, 0x64, 0x22, - 0xe4, 0x21, 0x36, 0x11, 0x1c, 0x44, 0x6d, 0x0c, 0x9b, 0x87, 0x12, 0x4c, 0x6f, 0x98, 0x4e, 0x3f, - 0xa1, 0x88, 0xc7, 0xd1, 0xf7, 0xab, 0xc1, 0x10, 0x3a, 0x50, 0x1c, 0xfd, 0xc1, 0xf4, 0xd2, 0x17, - 0xcc, 0x77, 0x33, 0x70, 0x7c, 0x19, 0x99, 0xc8, 0x36, 0x5a, 0xa4, 0x06, 0xbe, 0x24, 0xee, 0xe4, - 0x25, 0xf1, 0x18, 0x8e, 0xf3, 0x7e, 0x7f, 0xf0, 0x12, 0x78, 0x6d, 0x20, 0x81, 0xbb, 0x39, 0x09, - 0xdc, 0x24, 0x48, 0x67, 0x0c, 0xf7, 0xa1, 0x4f, 0xc1, 0x4c, 0xd5, 0x72, 0x8d, 0x4d, 0xa3, 0x45, - 0x7c, 0xd0, 0x5e, 0x21, 0x43, 0x76, 0xd5, 0x70, 0x5c, 0xb5, 0x18, 0x76, 0x27, 0xd7, 0xc0, 0xb4, - 0x61, 0xb6, 0x3a, 0xbb, 0x6d, 0xa4, 0x21, 0x9d, 0xf4, 0x2b, 0x93, 0x1a, 0x9b, 0x14, 0x6e, 0xed, - 0x7b, 0x6c, 0xc9, 0xfe, 0xd6, 0xfe, 0xa7, 0x85, 0x97, 0x61, 0x58, 0x16, 0x70, 0x40, 0xca, 0x08, - 0xbb, 0xab, 0x08, 0xb3, 0x26, 0x93, 0xd5, 0x37, 0xd8, 0x7b, 0x2f, 0x14, 0x60, 0xc9, 0x69, 0xfc, - 0x1f, 0xea, 0xfb, 0x85, 0x1a, 0xeb, 0x20, 0x86, 0x92, 0x21, 0xb3, 0x34, 0xc4, 0x24, 0x59, 0x81, - 0xb9, 0x4a, 0xb5, 0x51, 0xd6, 0xaa, 0xc5, 0x55, 0x9a, 0x45, 0x56, 0xff, 0x5d, 0x82, 0x9c, 0x86, - 0xba, 0x9d, 0x4b, 0x6c, 0xc4, 0x68, 0xea, 0x28, 0x9e, 0x09, 0x1c, 0xc5, 0x95, 0x25, 0x00, 0xbd, - 0xe5, 0x15, 0x8c, 0xaf, 0xd4, 0x92, 0xfa, 0xc6, 0x31, 0xe5, 0x2a, 0x58, 0x0c, 0x72, 0x6b, 0xcc, - 0x9f, 0xea, 0x8b, 0x84, 0x77, 0x8e, 0x38, 0x6a, 0x98, 0xc3, 0x88, 0x3e, 0xe1, 0x03, 0x42, 0x9b, - 0x3d, 0x03, 0xc9, 0x1d, 0x8e, 0xf8, 0xbf, 0x22, 0x41, 0xb6, 0xe1, 0xf5, 0x96, 0x4c, 0xc7, 0xf9, - 0xc7, 0xc3, 0xe9, 0xb8, 0x47, 0x26, 0x42, 0xc7, 0xef, 0x82, 0x19, 0x56, 0x63, 0xa9, 0xab, 0x44, - 0xac, 0x8a, 0x73, 0x3f, 0x0c, 0xa3, 0xe1, 0x7d, 0xd8, 0x39, 0x1c, 0x11, 0x7f, 0xf2, 0xb1, 0x00, - 0x6b, 0x68, 0xe7, 0x3c, 0xb2, 0x9d, 0x6d, 0xa3, 0xab, 0xfe, 0xbd, 0x0c, 0x53, 0xcb, 0xc8, 0xad, - 0xbb, 0xba, 0xbb, 0xeb, 0xf4, 0x6c, 0x77, 0x9a, 0x56, 0x49, 0x6f, 0x6d, 0x23, 0xda, 0x1d, 0xf9, - 0xaf, 0xea, 0xbb, 0x65, 0x51, 0x7f, 0xa2, 0xb0, 0x9c, 0xf9, 0xa0, 0x8c, 0x08, 0x4c, 0x1e, 0x07, - 0xd9, 0xb6, 0xee, 0xea, 0x14, 0x8b, 0x2b, 0x7a, 0xb0, 0x08, 0x09, 0x69, 0x38, 0x9b, 0xfa, 0xdb, - 0x92, 0x88, 0x43, 0x91, 0x40, 0xf9, 0xc9, 0x40, 0x78, 0x7f, 0x66, 0x08, 0x14, 0x8e, 0xc1, 0x6c, - 0xb5, 0xd6, 0x68, 0xae, 0xd6, 0x96, 0x97, 0xcb, 0x5e, 0x6a, 0x41, 0x56, 0x4e, 0x82, 0xb2, 0x5e, - 0xbc, 0x6f, 0xad, 0x5c, 0x6d, 0x34, 0xab, 0xb5, 0xc5, 0x32, 0xfd, 0x33, 0xab, 0x1c, 0x85, 0xe9, - 0x52, 0xb1, 0xb4, 0xe2, 0x27, 0xe4, 0x94, 0x53, 0x70, 0x7c, 0xad, 0xbc, 0xb6, 0x50, 0xd6, 0xea, - 0x2b, 0x95, 0xf5, 0xa6, 0x47, 0x66, 0xa9, 0xb6, 0x51, 0x5d, 0x2c, 0xe4, 0x15, 0x15, 0x4e, 0x32, - 0x5f, 0xce, 0x69, 0xb5, 0xea, 0x72, 0xb3, 0xde, 0x28, 0x36, 0xca, 0x85, 0x09, 0xe5, 0x32, 0x38, - 0x5a, 0x2a, 0x56, 0x71, 0xf6, 0x52, 0xad, 0x5a, 0x2d, 0x97, 0x1a, 0x85, 0x49, 0xf5, 0x07, 0x59, - 0x98, 0xae, 0x38, 0x55, 0x7d, 0x07, 0x9d, 0xd5, 0x3b, 0x46, 0x5b, 0x7d, 0x21, 0x33, 0xf3, 0xb8, - 0x0e, 0x66, 0x6d, 0xf2, 0x88, 0xda, 0x0d, 0x03, 0x11, 0x34, 0x67, 0x35, 0x3e, 0xd1, 0x9b, 0x93, - 0x9b, 0x98, 0x80, 0x3f, 0x27, 0x27, 0x6f, 0xca, 0x02, 0x00, 0x79, 0x6a, 0x84, 0x97, 0xbb, 0x9e, - 0xe9, 0x6d, 0x4d, 0xfa, 0x0e, 0x72, 0x90, 0xbd, 0x67, 0xb4, 0x90, 0x9f, 0x53, 0x63, 0xfe, 0x52, - 0xbf, 0x2a, 0x8b, 0xee, 0x2f, 0x32, 0xa0, 0x32, 0xd5, 0x89, 0xe8, 0x0d, 0x5f, 0x20, 0x8b, 0xec, - 0x0e, 0x0a, 0x91, 0x4c, 0xa6, 0x29, 0x2f, 0x91, 0x86, 0x5b, 0xb6, 0x6d, 0xd4, 0x6a, 0xcd, 0xfa, - 0x4a, 0x4d, 0x6b, 0x14, 0x64, 0x65, 0x06, 0x26, 0xbd, 0xd7, 0xd5, 0x5a, 0x75, 0xb9, 0x90, 0x55, - 0x4e, 0xc0, 0xb1, 0x95, 0x62, 0xbd, 0x59, 0xa9, 0x9e, 0x2d, 0xae, 0x56, 0x16, 0x9b, 0xa5, 0x95, - 0xa2, 0x56, 0x2f, 0xe4, 0x94, 0x2b, 0xe0, 0x44, 0xa3, 0x52, 0xd6, 0x9a, 0x4b, 0xe5, 0x62, 0x63, - 0x43, 0x2b, 0xd7, 0x9b, 0xd5, 0x5a, 0xb3, 0x5a, 0x5c, 0x2b, 0x17, 0xf2, 0x5e, 0xf3, 0xc7, 0x9f, - 0x42, 0xb5, 0x99, 0xd8, 0xaf, 0x8c, 0x93, 0x11, 0xca, 0x38, 0xd5, 0xab, 0x8c, 0xc0, 0xaa, 0x95, - 0x56, 0xae, 0x97, 0xb5, 0xb3, 0xe5, 0xc2, 0x74, 0x3f, 0x5d, 0x9b, 0x51, 0x8e, 0x43, 0xc1, 0xe3, - 0xa1, 0x59, 0xa9, 0xfb, 0x39, 0x17, 0x0b, 0xb3, 0xea, 0x27, 0xf2, 0x70, 0x52, 0x43, 0x5b, 0x86, - 0xe3, 0x22, 0x7b, 0x5d, 0xbf, 0xb4, 0x83, 0x4c, 0xd7, 0xef, 0xe4, 0xff, 0x67, 0x62, 0x65, 0x5c, - 0x83, 0xd9, 0x2e, 0xa1, 0xb1, 0x86, 0xdc, 0x6d, 0xab, 0x4d, 0x47, 0xe1, 0xc7, 0x44, 0xf6, 0x1c, - 0xf3, 0xeb, 0x6c, 0x76, 0x8d, 0xff, 0x9b, 0xd1, 0x6d, 0x39, 0x46, 0xb7, 0xb3, 0xc3, 0xe8, 0xb6, - 0x72, 0x15, 0x4c, 0xed, 0x3a, 0xc8, 0x2e, 0xef, 0xe8, 0x46, 0xc7, 0xbf, 0x9c, 0x33, 0x48, 0x50, - 0xdf, 0x91, 0x15, 0x3d, 0xb1, 0xc2, 0xd4, 0xa5, 0xbf, 0x18, 0x23, 0xfa, 0xd6, 0xd3, 0x00, 0xb4, - 0xb2, 0x1b, 0x76, 0x87, 0x2a, 0x2b, 0x93, 0xe2, 0xf1, 0x77, 0xde, 0xe8, 0x74, 0x0c, 0x73, 0x2b, - 0xd8, 0xf7, 0x0f, 0x13, 0xd4, 0x97, 0xc8, 0x22, 0x27, 0x58, 0x92, 0xf2, 0x96, 0xac, 0x35, 0xbd, - 0x48, 0x1a, 0x73, 0xbf, 0xbb, 0xbf, 0xe9, 0xe4, 0x95, 0x02, 0xcc, 0xe0, 0x34, 0xda, 0x02, 0x0b, - 0x13, 0x5e, 0x1f, 0xec, 0x93, 0x5b, 0x2b, 0x37, 0x56, 0x6a, 0x8b, 0xc1, 0xb7, 0x49, 0x8f, 0xa4, - 0xc7, 0x4c, 0xb1, 0x7a, 0x1f, 0x6e, 0x8d, 0x53, 0xca, 0xa3, 0xe0, 0x0a, 0xa6, 0xc3, 0x2e, 0xae, - 0x6a, 0xe5, 0xe2, 0xe2, 0x7d, 0xcd, 0xf2, 0xd3, 0x2b, 0xf5, 0x46, 0x9d, 0x6f, 0x5c, 0x7e, 0x3b, - 0x9a, 0xf6, 0xf8, 0x2d, 0xaf, 0x15, 0x2b, 0xab, 0xb4, 0x7f, 0x5f, 0xaa, 0x69, 0x6b, 0xc5, 0x46, - 0x61, 0x46, 0x7d, 0xa5, 0x0c, 0x85, 0x65, 0xe4, 0xae, 0x5b, 0xb6, 0xab, 0x77, 0x56, 0x0d, 0xf3, - 0xc2, 0x86, 0xdd, 0xe1, 0x26, 0x9b, 0xc2, 0x61, 0x3a, 0xf8, 0x21, 0x92, 0x23, 0x18, 0xbd, 0x23, - 0xde, 0xc5, 0xd9, 0x42, 0x65, 0x0a, 0x13, 0xd4, 0x67, 0x49, 0x22, 0xcb, 0xdd, 0xe2, 0xa5, 0x26, - 0xd3, 0x93, 0x67, 0x8f, 0x7b, 0x7c, 0xee, 0x83, 0x5a, 0x5e, 0x7d, 0x5e, 0x16, 0x26, 0x97, 0x0c, - 0x53, 0xef, 0x18, 0xcf, 0xe4, 0xe2, 0x97, 0x86, 0x7d, 0x4c, 0x26, 0xa6, 0x8f, 0x91, 0x86, 0x1a, - 0x3f, 0x7f, 0x45, 0x16, 0x5d, 0x5e, 0x60, 0x64, 0xef, 0x33, 0x19, 0x31, 0x78, 0x7e, 0x58, 0x12, - 0x59, 0x5e, 0x18, 0x4c, 0x2f, 0x19, 0x86, 0x9f, 0xfa, 0xe1, 0xb0, 0xb1, 0x7a, 0xda, 0xf7, 0x64, - 0x3f, 0x55, 0x98, 0x52, 0xff, 0x5c, 0x06, 0x75, 0x19, 0xb9, 0x67, 0x91, 0x1d, 0x4c, 0x05, 0x70, - 0xaf, 0x4f, 0xed, 0x6d, 0xa6, 0xc9, 0xbe, 0x85, 0x05, 0xf0, 0x1c, 0x0f, 0x60, 0x31, 0xa6, 0xf1, - 0x44, 0x90, 0x8e, 0x68, 0xbc, 0x15, 0xc8, 0x3b, 0xf8, 0x3b, 0x55, 0xb3, 0xc7, 0x47, 0x0f, 0x97, - 0x98, 0x18, 0x4b, 0x9d, 0x10, 0xd6, 0x28, 0x01, 0xf5, 0x7b, 0xc1, 0x24, 0xe8, 0xa7, 0x38, 0xed, - 0x58, 0x3a, 0x30, 0xb3, 0xc9, 0xf4, 0xc5, 0x4e, 0x57, 0x5d, 0xfa, 0xd9, 0x37, 0xea, 0x87, 0x73, - 0x70, 0xbc, 0x5f, 0x75, 0xd4, 0xdf, 0xc9, 0x70, 0x3b, 0xec, 0x08, 0x0f, 0xf9, 0x19, 0xba, 0x81, - 0xe8, 0xbd, 0x28, 0x4f, 0x84, 0x13, 0xc1, 0x32, 0x5c, 0xc3, 0xaa, 0xa2, 0x8b, 0x4e, 0x07, 0xb9, - 0x2e, 0xb2, 0x71, 0xd5, 0x26, 0xb5, 0xfe, 0x1f, 0x95, 0x27, 0xc3, 0xe5, 0x86, 0xe9, 0x18, 0x6d, - 0x64, 0x37, 0x8c, 0xae, 0x53, 0x34, 0xdb, 0x8d, 0x5d, 0xd7, 0xb2, 0x0d, 0x9d, 0x5e, 0x25, 0x39, - 0xa9, 0x45, 0x7d, 0x56, 0x6e, 0x84, 0x82, 0xe1, 0xd4, 0xcc, 0xf3, 0x96, 0x6e, 0xb7, 0x0d, 0x73, - 0x6b, 0xd5, 0x70, 0x5c, 0xea, 0x01, 0xbc, 0x2f, 0x5d, 0xfd, 0x07, 0x59, 0xf4, 0x30, 0xdd, 0x00, - 0x58, 0x23, 0x3a, 0x94, 0xe7, 0xcb, 0x22, 0xc7, 0xe3, 0x92, 0xd1, 0x4e, 0xa6, 0x2c, 0xcf, 0x1d, - 0xb7, 0x21, 0xd1, 0x7f, 0x04, 0xc7, 0x5d, 0x0b, 0x49, 0xf7, 0x0d, 0x81, 0xb3, 0x65, 0xad, 0xb2, - 0x54, 0x29, 0x7b, 0x66, 0xc5, 0x09, 0x38, 0x16, 0x7e, 0x5b, 0xbc, 0xaf, 0x59, 0x2f, 0x57, 0x1b, - 0x85, 0x49, 0xaf, 0x9f, 0x22, 0xc9, 0x4b, 0xc5, 0xca, 0x6a, 0x79, 0xb1, 0xd9, 0xa8, 0x79, 0x5f, - 0x16, 0x87, 0x33, 0x2d, 0xd4, 0x07, 0xb3, 0x70, 0x14, 0xcb, 0xf6, 0x12, 0x96, 0xaa, 0x27, 0x94, - 0x1e, 0x5f, 0xdb, 0x00, 0xa0, 0x29, 0x22, 0x5e, 0xf5, 0xb3, 0xc2, 0x37, 0x65, 0x32, 0x10, 0xf6, - 0x94, 0x11, 0xa1, 0x19, 0xdf, 0x95, 0x44, 0x22, 0x54, 0x08, 0x93, 0x4d, 0xa6, 0x14, 0xff, 0x3a, - 0xee, 0x11, 0x27, 0x1a, 0x7c, 0x6c, 0x65, 0x96, 0xf0, 0xcf, 0x4f, 0x5f, 0xaf, 0x68, 0x58, 0x1d, - 0xe6, 0x00, 0x70, 0x0a, 0xd6, 0x20, 0xa2, 0x07, 0x7d, 0xc7, 0xab, 0x28, 0x3d, 0x28, 0x96, 0x1a, - 0x95, 0xb3, 0xe5, 0x28, 0x3d, 0xf8, 0x8c, 0x0c, 0x93, 0xcb, 0xc8, 0xf5, 0xe6, 0x54, 0x8e, 0xfa, - 0x14, 0x81, 0xf5, 0x1f, 0xcf, 0x8c, 0xe9, 0x58, 0x2d, 0xbd, 0x13, 0x2c, 0x03, 0x90, 0x37, 0xf5, - 0x39, 0xc3, 0x98, 0x20, 0x7e, 0xd1, 0x11, 0xe3, 0xd5, 0x4f, 0x42, 0xce, 0xf5, 0x3e, 0xd3, 0x65, - 0xe8, 0x1f, 0x8b, 0x1c, 0xae, 0x3c, 0x22, 0x8b, 0xba, 0xab, 0x6b, 0x24, 0x3f, 0x33, 0x3a, 0x09, - 0xda, 0x2e, 0x11, 0x8c, 0xfc, 0x30, 0xda, 0x9f, 0x7f, 0x27, 0xc3, 0x09, 0xd2, 0x3e, 0x8a, 0xdd, - 0x6e, 0xdd, 0xb5, 0x6c, 0xa4, 0xa1, 0x16, 0x32, 0xba, 0x6e, 0xcf, 0xfa, 0x9e, 0x4d, 0x52, 0xfd, - 0xcd, 0x66, 0xfa, 0xaa, 0xbe, 0x51, 0x16, 0x8d, 0xc1, 0xbc, 0xaf, 0x3d, 0xf6, 0x94, 0x17, 0xd1, - 0xd8, 0x3f, 0x2e, 0x89, 0x44, 0x55, 0x4e, 0x48, 0x3c, 0x19, 0x50, 0x1f, 0x39, 0x04, 0xa0, 0xfc, - 0x95, 0x1b, 0xad, 0x5c, 0x2a, 0x57, 0xd6, 0xbd, 0x41, 0xe0, 0x6a, 0xb8, 0x72, 0x7d, 0x43, 0x2b, - 0xad, 0x14, 0xeb, 0xe5, 0xa6, 0x56, 0x5e, 0xae, 0xd4, 0x1b, 0xd4, 0x29, 0x8b, 0xfc, 0x35, 0xa1, - 0x5c, 0x05, 0xa7, 0xea, 0x1b, 0x0b, 0xf5, 0x92, 0x56, 0x59, 0xc7, 0xe9, 0x5a, 0xb9, 0x5a, 0x3e, - 0x47, 0xbf, 0x4e, 0xaa, 0x1f, 0x2c, 0xc0, 0xb4, 0x37, 0x01, 0xa8, 0x93, 0x79, 0x81, 0xfa, 0xad, - 0x2c, 0x4c, 0x6b, 0xc8, 0xb1, 0x3a, 0x7b, 0x78, 0x8e, 0x30, 0xae, 0xa9, 0xc7, 0x77, 0x64, 0xd1, - 0xf3, 0xdb, 0x0c, 0xb3, 0xf3, 0x0c, 0xa3, 0xd1, 0x13, 0x4d, 0x7d, 0x4f, 0x37, 0x3a, 0xfa, 0x79, - 0xda, 0xd5, 0x4c, 0x6a, 0x61, 0x82, 0x32, 0x0f, 0x8a, 0x75, 0xd1, 0x44, 0x76, 0xbd, 0x75, 0xb1, - 0xec, 0x6e, 0x17, 0xdb, 0x6d, 0x1b, 0x39, 0x0e, 0x5d, 0xbd, 0xe8, 0xf3, 0x45, 0xb9, 0x01, 0x8e, - 0xe2, 0x54, 0x26, 0x33, 0x71, 0x90, 0xe9, 0x4d, 0x0e, 0x72, 0x16, 0xcd, 0x4b, 0x7e, 0xce, 0x1c, - 0x93, 0x33, 0x4c, 0x66, 0x8f, 0x4b, 0xe4, 0xf9, 0x53, 0x3a, 0xd7, 0xc0, 0xb4, 0xa9, 0xef, 0xa0, - 0xf2, 0x03, 0x5d, 0xc3, 0x46, 0x0e, 0x76, 0x8c, 0x91, 0x35, 0x36, 0x49, 0xfd, 0xb0, 0xd0, 0x79, - 0x73, 0x31, 0x89, 0x25, 0xd3, 0xfd, 0xe5, 0x21, 0x54, 0xbf, 0x4f, 0x3f, 0x23, 0xab, 0x1f, 0x94, - 0x61, 0x86, 0x32, 0x55, 0x34, 0x2f, 0x55, 0xda, 0xea, 0xd5, 0x9c, 0xf1, 0xab, 0x7b, 0x69, 0xbe, - 0xf1, 0x8b, 0x5f, 0xd4, 0x5f, 0x90, 0x45, 0xdd, 0x9d, 0xfb, 0x54, 0x1c, 0x97, 0x11, 0xed, 0x38, - 0xba, 0x69, 0xed, 0x52, 0x47, 0xd5, 0x49, 0x8d, 0xbc, 0xa4, 0xb9, 0xa8, 0xa7, 0xfe, 0xbe, 0x90, - 0x33, 0xb5, 0x60, 0x35, 0x0e, 0x09, 0xc0, 0x4f, 0xca, 0x30, 0x47, 0xb9, 0xaa, 0xd3, 0x73, 0x3e, - 0x42, 0x07, 0xde, 0x7e, 0x49, 0xd8, 0x10, 0xec, 0x53, 0x7f, 0x5a, 0xd2, 0x23, 0x06, 0xc8, 0x8f, - 0x0a, 0x05, 0x47, 0x13, 0xae, 0xc8, 0x21, 0x41, 0xf9, 0xce, 0x2c, 0x4c, 0x6f, 0x38, 0xc8, 0xa6, - 0x7e, 0xfb, 0xea, 0x43, 0x59, 0x90, 0x97, 0x11, 0xb7, 0x91, 0xfa, 0x62, 0x61, 0x0f, 0x5f, 0xb6, - 0xb2, 0x0c, 0x51, 0xcf, 0x46, 0x8a, 0x80, 0xed, 0x7a, 0x98, 0x23, 0x22, 0x2d, 0xba, 0xae, 0x67, - 0x24, 0xfa, 0xde, 0xb4, 0x3d, 0xa9, 0xa3, 0xd8, 0x2a, 0xc2, 0x65, 0x79, 0x59, 0x4a, 0x1e, 0x4f, - 0xab, 0x68, 0x93, 0xcc, 0x67, 0xb3, 0x5a, 0x4f, 0xaa, 0x72, 0x0b, 0x5c, 0x66, 0x75, 0x11, 0x39, - 0xbf, 0xc2, 0x64, 0xce, 0xe1, 0xcc, 0xfd, 0x3e, 0xa9, 0xdf, 0x12, 0xf2, 0xd5, 0x15, 0x97, 0x4e, - 0x32, 0x5d, 0xe8, 0x8e, 0xc6, 0x24, 0x39, 0x0e, 0x05, 0x2f, 0x07, 0xde, 0x7f, 0xd1, 0xca, 0xf5, - 0xda, 0xea, 0xd9, 0x72, 0xff, 0x65, 0x8c, 0x9c, 0xfa, 0x5c, 0x19, 0xa6, 0x16, 0x6c, 0x4b, 0x6f, - 0xb7, 0x74, 0xc7, 0x55, 0xbf, 0x27, 0xc1, 0xcc, 0xba, 0x7e, 0xa9, 0x63, 0xe9, 0x6d, 0xec, 0xdf, - 0xdf, 0xd3, 0x17, 0x74, 0xc9, 0x27, 0xbf, 0x2f, 0xa0, 0xaf, 0xfc, 0xc1, 0xc0, 0xe0, 0xe8, 0x5e, - 0x46, 0xe4, 0x42, 0xcd, 0x60, 0x9b, 0x4f, 0xea, 0x17, 0xac, 0xd4, 0xe7, 0x6b, 0x9e, 0xe5, 0x29, - 0xc2, 0xa2, 0xfc, 0xa0, 0x58, 0xf8, 0x51, 0x11, 0x92, 0x87, 0xb3, 0x2b, 0xff, 0xbc, 0x49, 0xc8, - 0x2f, 0x22, 0x6c, 0xc5, 0xfd, 0x77, 0x09, 0x26, 0xea, 0xc8, 0xc5, 0x16, 0xdc, 0x6d, 0x9c, 0xa7, - 0x70, 0x1b, 0x67, 0x08, 0x9d, 0xd8, 0xfd, 0x77, 0x6f, 0xb2, 0xce, 0x9c, 0xb7, 0xc6, 0xcf, 0x09, - 0x3c, 0x12, 0x49, 0xb9, 0xf3, 0xb4, 0xcc, 0x03, 0x79, 0x24, 0xc6, 0x92, 0x4a, 0xdf, 0xd7, 0xea, - 0xdd, 0x12, 0x75, 0xad, 0x62, 0x7a, 0xbd, 0xd7, 0xb1, 0xfa, 0x19, 0xeb, 0x6d, 0x46, 0x99, 0x8f, - 0x71, 0x8e, 0x7a, 0x02, 0x4c, 0x10, 0x99, 0xfb, 0xf3, 0xd1, 0x5e, 0x3f, 0x05, 0x42, 0x02, 0x9f, - 0xbd, 0xf6, 0x73, 0x0a, 0xba, 0xa8, 0x45, 0x17, 0x3e, 0x96, 0x18, 0x04, 0x33, 0x55, 0xe4, 0x5e, - 0xb4, 0xec, 0x0b, 0x75, 0x57, 0x77, 0x91, 0xfa, 0xaf, 0x12, 0xc8, 0x75, 0xe4, 0xb2, 0xd1, 0x4f, - 0xaa, 0x70, 0x8c, 0x54, 0x88, 0x66, 0xc4, 0xfd, 0x37, 0xa9, 0xc8, 0x35, 0x7d, 0x85, 0xc0, 0xe4, - 0xd3, 0xf6, 0xff, 0xaa, 0xfe, 0x5a, 0xdf, 0xa0, 0x4f, 0x52, 0x9f, 0x49, 0x03, 0x95, 0x0c, 0xcb, - 0xa0, 0xa7, 0x60, 0x11, 0x7a, 0xfa, 0x21, 0x21, 0xb3, 0x5a, 0x8c, 0xe6, 0xe1, 0x74, 0x05, 0x1f, - 0xbd, 0x02, 0xb2, 0xa5, 0x6d, 0xdd, 0x55, 0xdf, 0x25, 0x03, 0x14, 0xdb, 0xed, 0x35, 0xe2, 0x03, - 0xce, 0x3a, 0xa4, 0x9d, 0x81, 0x99, 0xd6, 0xb6, 0x1e, 0xde, 0x6d, 0x42, 0xfa, 0x03, 0x2e, 0x4d, - 0x79, 0x62, 0xe8, 0x4c, 0x4e, 0xa4, 0xaa, 0xf6, 0xc0, 0xe4, 0x95, 0x41, 0x69, 0x07, 0x8e, 0xe6, - 0x7c, 0x28, 0xcc, 0xd8, 0x23, 0x74, 0xde, 0xef, 0xf3, 0x21, 0x7b, 0xd1, 0x73, 0x38, 0x4a, 0x3a, - 0x38, 0x60, 0x13, 0x26, 0x24, 0x3c, 0xe9, 0x2d, 0x16, 0xd0, 0x23, 0x9e, 0xaf, 0xb1, 0x84, 0xae, - 0x55, 0xca, 0x6d, 0xc3, 0x17, 0x2d, 0x0d, 0x98, 0xa5, 0xbe, 0x28, 0x93, 0x0c, 0xbe, 0x78, 0xc1, - 0xdd, 0x0d, 0xb3, 0xa8, 0x6d, 0xb8, 0xc8, 0xaf, 0x25, 0x15, 0x60, 0x1c, 0xc4, 0xfc, 0x0f, 0xea, - 0xb3, 0x85, 0x83, 0xae, 0x61, 0x81, 0xee, 0xaf, 0x51, 0x44, 0xfb, 0x13, 0x0b, 0xa3, 0x26, 0x46, - 0x33, 0x7d, 0xb0, 0x9e, 0x23, 0xc3, 0x89, 0x86, 0xb5, 0xb5, 0xd5, 0x41, 0xbe, 0x98, 0x10, 0xf1, - 0xce, 0x54, 0xf5, 0x51, 0xc2, 0x85, 0x77, 0x82, 0xac, 0xfb, 0x8d, 0xe0, 0x28, 0x99, 0xf7, 0xc2, - 0x9f, 0x98, 0x8a, 0x9d, 0x45, 0x61, 0x71, 0xf5, 0xe5, 0x33, 0x02, 0x05, 0xb1, 0x80, 0xcf, 0xc2, - 0x64, 0xd3, 0x07, 0xe2, 0x8b, 0x12, 0xcc, 0x92, 0x9b, 0x2b, 0x7d, 0x05, 0xbd, 0x77, 0x84, 0x00, - 0xa8, 0xdf, 0xcb, 0x88, 0xfa, 0xd9, 0x62, 0x99, 0x70, 0x9c, 0x44, 0x88, 0x58, 0x2c, 0xa8, 0xca, - 0x40, 0x72, 0xe9, 0x8b, 0xf6, 0x4f, 0x64, 0x98, 0x5e, 0x46, 0x7e, 0x4b, 0x73, 0x12, 0xf7, 0x44, - 0x67, 0x60, 0x06, 0x5f, 0xdf, 0x56, 0xa3, 0xc7, 0x24, 0xc9, 0xaa, 0x19, 0x97, 0xa6, 0x5c, 0x07, - 0xb3, 0xe7, 0xd1, 0xa6, 0x65, 0xa3, 0x1a, 0x77, 0x96, 0x92, 0x4f, 0x8c, 0x08, 0x4f, 0xc7, 0xc5, - 0x41, 0x5b, 0xe0, 0xb1, 0xb9, 0x69, 0xbf, 0x30, 0x99, 0xaa, 0x44, 0x8c, 0x39, 0x4f, 0x82, 0x49, - 0x8a, 0xbc, 0x6f, 0xa6, 0xc5, 0xf5, 0x8b, 0x41, 0x5e, 0xf5, 0x37, 0x02, 0x44, 0xcb, 0x1c, 0xa2, - 0x8f, 0x4f, 0xc2, 0xc4, 0x58, 0xee, 0x77, 0x2f, 0x30, 0xe5, 0x2f, 0x5c, 0xaa, 0xb4, 0x1d, 0x75, - 0x2d, 0x19, 0xa6, 0xa7, 0x01, 0x82, 0xc6, 0xe1, 0x87, 0xb5, 0x60, 0x52, 0xf8, 0xc8, 0xf5, 0xb1, - 0x07, 0xf5, 0x7a, 0xc5, 0x81, 0xd9, 0x19, 0x31, 0x30, 0x62, 0x07, 0xfc, 0x44, 0x38, 0x49, 0x1f, - 0x9d, 0x4f, 0xcb, 0x70, 0x22, 0x38, 0x7f, 0xb4, 0xaa, 0x3b, 0x61, 0xbb, 0x2b, 0x25, 0x83, 0x88, - 0x3b, 0xf0, 0x11, 0x34, 0x96, 0x6f, 0x27, 0x1b, 0x33, 0xfa, 0x72, 0x32, 0x5a, 0x74, 0x94, 0x9b, - 0xe0, 0x98, 0xb9, 0xbb, 0x13, 0x48, 0x1d, 0xb7, 0x78, 0xda, 0xc2, 0xf7, 0x7f, 0x48, 0x32, 0x32, - 0x89, 0x30, 0x3f, 0x96, 0x39, 0x25, 0x77, 0xa4, 0xeb, 0x71, 0x89, 0x60, 0x54, 0xff, 0x25, 0x93, - 0xa8, 0x77, 0x1b, 0x7c, 0xe6, 0x2b, 0x41, 0x2f, 0x75, 0x88, 0x07, 0xbe, 0xce, 0x4c, 0x40, 0xae, - 0xbc, 0xd3, 0x75, 0x2f, 0x9d, 0x79, 0x34, 0xcc, 0xd6, 0x5d, 0x1b, 0xe9, 0x3b, 0xcc, 0xce, 0x80, - 0x6b, 0x5d, 0x40, 0xa6, 0xbf, 0x33, 0x80, 0x5f, 0x6e, 0xbf, 0x0d, 0x26, 0x4c, 0xab, 0xa9, 0xef, - 0xba, 0xdb, 0xca, 0xd5, 0xfb, 0x8e, 0xd4, 0x53, 0xf0, 0x6b, 0x34, 0x86, 0xd1, 0x57, 0xef, 0xc0, - 0x6b, 0xc3, 0x79, 0xd3, 0x2a, 0xee, 0xba, 0xdb, 0x0b, 0x57, 0x7d, 0xf2, 0x6f, 0x4f, 0x67, 0x3e, - 0xf3, 0xb7, 0xa7, 0x33, 0x5f, 0xf9, 0xdb, 0xd3, 0x99, 0x5f, 0xfa, 0xda, 0xe9, 0x23, 0x9f, 0xf9, - 0xda, 0xe9, 0x23, 0x5f, 0xfc, 0xda, 0xe9, 0x23, 0x3f, 0x25, 0x75, 0xcf, 0x9f, 0xcf, 0x63, 0x2a, - 0x4f, 0xf8, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0xb3, 0x27, 0x05, 0xb0, 0x79, 0x01, 0x02, 0x00, + 0x7b, 0x46, 0x1a, 0x5a, 0x9a, 0x5d, 0x9c, 0x9c, 0x5c, 0x9d, 0x5e, 0xa9, 0x66, 0xa6, 0xbd, 0x9a, + 0x6e, 0xd1, 0xdd, 0x33, 0xeb, 0xe5, 0x3e, 0xe7, 0x9e, 0x10, 0x62, 0x3e, 0x42, 0x08, 0x21, 0x84, + 0x84, 0xef, 0x0f, 0x13, 0xc3, 0x81, 0x04, 0x08, 0xdf, 0x07, 0x92, 0x00, 0xe1, 0x23, 0x10, 0x92, + 0x10, 0x02, 0x21, 0x10, 0x12, 0x6e, 0x20, 0x10, 0x42, 0xee, 0x13, 0x2e, 0x37, 0xb9, 0x27, 0x70, + 0x48, 0xc2, 0xe5, 0x3e, 0x5d, 0x55, 0xdd, 0x5d, 0xa5, 0x51, 0xb7, 0xaa, 0x35, 0x6a, 0x8d, 0x09, + 0xe7, 0xbf, 0xee, 0xea, 0xea, 0xb7, 0xde, 0x7a, 0x7f, 0x6f, 0x55, 0xbd, 0x55, 0xf5, 0xd6, 0x5b, + 0x70, 0xaa, 0x7b, 0xfe, 0xe6, 0xae, 0x6d, 0xb9, 0x96, 0x73, 0x73, 0xcb, 0xda, 0xd9, 0xd1, 0xcd, + 0xb6, 0x33, 0x8f, 0xdf, 0x95, 0x09, 0xdd, 0xbc, 0xe4, 0x5e, 0xea, 0x22, 0xf5, 0xba, 0xee, 0x85, + 0xad, 0x9b, 0x3b, 0xc6, 0xf9, 0x9b, 0xbb, 0xe7, 0x6f, 0xde, 0xb1, 0xda, 0xa8, 0xe3, 0xff, 0x80, + 0x5f, 0x68, 0x76, 0xf5, 0x86, 0xa8, 0x5c, 0x1d, 0xab, 0xa5, 0x77, 0x1c, 0xd7, 0xb2, 0x11, 0xcd, + 0x79, 0x32, 0x2c, 0x12, 0xed, 0x21, 0xd3, 0xf5, 0x29, 0x5c, 0xb5, 0x65, 0x59, 0x5b, 0x1d, 0x44, + 0xbe, 0x9d, 0xdf, 0xdd, 0xbc, 0xd9, 0x71, 0xed, 0xdd, 0x96, 0x4b, 0xbf, 0x5e, 0xd3, 0xfb, 0xb5, + 0x8d, 0x9c, 0x96, 0x6d, 0x74, 0x5d, 0xcb, 0x26, 0x39, 0xce, 0xbc, 0xe9, 0x67, 0x27, 0x41, 0xd6, + 0xba, 0x2d, 0xf5, 0x3b, 0x13, 0x20, 0x17, 0xbb, 0x5d, 0xf5, 0xe3, 0x12, 0xc0, 0x32, 0x72, 0xcf, + 0x22, 0xdb, 0x31, 0x2c, 0x53, 0x3d, 0x0a, 0x13, 0x1a, 0x7a, 0xc6, 0x2e, 0x72, 0xdc, 0xdb, 0xb3, + 0xcf, 0xfb, 0x86, 0x9c, 0x51, 0x1f, 0x96, 0x60, 0x52, 0x43, 0x4e, 0xd7, 0x32, 0x1d, 0xa4, 0xdc, + 0x0d, 0x39, 0x64, 0xdb, 0x96, 0x7d, 0x2a, 0x73, 0x4d, 0xe6, 0x86, 0xe9, 0x5b, 0x6f, 0x9c, 0xa7, + 0xd5, 0x9f, 0xd7, 0xba, 0xad, 0xf9, 0x62, 0xb7, 0x3b, 0x1f, 0x52, 0x9a, 0xf7, 0x7f, 0x9a, 0x2f, + 0x7b, 0x7f, 0x68, 0xe4, 0x47, 0xe5, 0x14, 0x4c, 0xec, 0x91, 0x0c, 0xa7, 0xa4, 0x6b, 0x32, 0x37, + 0x4c, 0x69, 0xfe, 0xab, 0xf7, 0xa5, 0x8d, 0x5c, 0xdd, 0xe8, 0x38, 0xa7, 0x64, 0xf2, 0x85, 0xbe, + 0xaa, 0x0f, 0x65, 0x20, 0x87, 0x89, 0x28, 0x25, 0xc8, 0xb6, 0xac, 0x36, 0xc2, 0xc5, 0xcf, 0xdd, + 0x7a, 0xb3, 0x78, 0xf1, 0xf3, 0x25, 0xab, 0x8d, 0x34, 0xfc, 0xb3, 0x72, 0x0d, 0x4c, 0xfb, 0x62, + 0x09, 0xd9, 0x60, 0x93, 0xce, 0xdc, 0x0a, 0x59, 0x2f, 0xbf, 0x32, 0x09, 0xd9, 0xea, 0xc6, 0xea, + 0x6a, 0xe1, 0x88, 0x72, 0x0c, 0x66, 0x37, 0xaa, 0xf7, 0x56, 0x6b, 0xe7, 0xaa, 0xcd, 0xb2, 0xa6, + 0xd5, 0xb4, 0x42, 0x46, 0x99, 0x85, 0xa9, 0x85, 0xe2, 0x62, 0xb3, 0x52, 0x5d, 0xdf, 0x68, 0x14, + 0x24, 0xf5, 0x35, 0x32, 0xcc, 0xd5, 0x91, 0xbb, 0x88, 0xf6, 0x8c, 0x16, 0xaa, 0xbb, 0xba, 0x8b, + 0xd4, 0x17, 0x65, 0x02, 0x61, 0x2a, 0x1b, 0x5e, 0xa1, 0xc1, 0x27, 0x5a, 0x81, 0x27, 0xec, 0xab, + 0x00, 0x4f, 0x61, 0x9e, 0xfe, 0x3d, 0xcf, 0xa4, 0x69, 0x2c, 0x9d, 0x33, 0x8f, 0x83, 0x69, 0xe6, + 0x9b, 0x32, 0x07, 0xb0, 0x50, 0x2c, 0xdd, 0xbb, 0xac, 0xd5, 0x36, 0xaa, 0x8b, 0x85, 0x23, 0xde, + 0xfb, 0x52, 0x4d, 0x2b, 0xd3, 0xf7, 0x8c, 0xfa, 0xbd, 0x0c, 0x03, 0xe6, 0x22, 0x0f, 0xe6, 0xfc, + 0x60, 0x66, 0xfa, 0x00, 0xaa, 0xbe, 0x31, 0x00, 0x67, 0x99, 0x03, 0xe7, 0x09, 0xc9, 0xc8, 0xa5, + 0x0f, 0xd0, 0x83, 0x12, 0x4c, 0xd6, 0xb7, 0x77, 0xdd, 0xb6, 0x75, 0xd1, 0x54, 0xa7, 0x02, 0x64, + 0xd4, 0x6f, 0xb1, 0x32, 0x79, 0x2a, 0x2f, 0x93, 0x1b, 0xf6, 0x57, 0x82, 0x52, 0x88, 0x90, 0xc6, + 0xeb, 0x02, 0x69, 0x14, 0x39, 0x69, 0x3c, 0x4e, 0x94, 0x50, 0xfa, 0x72, 0x78, 0xc5, 0x93, 0x21, + 0x57, 0xef, 0xea, 0x2d, 0xa4, 0xfe, 0xb1, 0x0c, 0x33, 0xab, 0x48, 0xdf, 0x43, 0xc5, 0x6e, 0xd7, + 0xb6, 0xf6, 0x90, 0x5a, 0x0a, 0xf5, 0xf5, 0x14, 0x4c, 0x38, 0x5e, 0xa6, 0x4a, 0x1b, 0xd7, 0x60, + 0x4a, 0xf3, 0x5f, 0x95, 0xd3, 0x00, 0x46, 0x1b, 0x99, 0xae, 0xe1, 0x1a, 0xc8, 0x39, 0x25, 0x5d, + 0x23, 0xdf, 0x30, 0xa5, 0x31, 0x29, 0xea, 0x77, 0x24, 0x51, 0x1d, 0xc3, 0x5c, 0xcc, 0xb3, 0x1c, + 0x44, 0x48, 0xf5, 0x0d, 0x92, 0x88, 0x8e, 0x0d, 0x24, 0x97, 0x4c, 0xb6, 0x6f, 0xcb, 0x24, 0x17, + 0xae, 0x97, 0xa3, 0x5a, 0x6b, 0xd6, 0x37, 0x4a, 0x2b, 0xcd, 0xfa, 0x7a, 0xb1, 0x54, 0x2e, 0x20, + 0xe5, 0x38, 0x14, 0xf0, 0x63, 0xb3, 0x52, 0x6f, 0x2e, 0x96, 0x57, 0xcb, 0x8d, 0xf2, 0x62, 0x61, + 0x53, 0x51, 0x60, 0x4e, 0x2b, 0x3f, 0x6d, 0xa3, 0x5c, 0x6f, 0x34, 0x97, 0x8a, 0x95, 0xd5, 0xf2, + 0x62, 0x61, 0xcb, 0xfb, 0x79, 0xb5, 0xb2, 0x56, 0x69, 0x34, 0xb5, 0x72, 0xb1, 0xb4, 0x52, 0x5e, + 0x2c, 0x6c, 0x2b, 0x97, 0xc3, 0x65, 0xd5, 0x5a, 0xb3, 0xb8, 0xbe, 0xae, 0xd5, 0xce, 0x96, 0x9b, + 0xf4, 0x8f, 0x7a, 0xc1, 0x20, 0x05, 0x35, 0x9a, 0xf5, 0x95, 0xa2, 0x56, 0x2e, 0x2e, 0xac, 0x96, + 0x0b, 0xf7, 0xab, 0xcf, 0x96, 0x61, 0x76, 0x4d, 0xbf, 0x80, 0xea, 0xdb, 0xba, 0x8d, 0xf4, 0xf3, + 0x1d, 0xa4, 0x5e, 0x2b, 0x80, 0xa7, 0xfa, 0xc7, 0x2c, 0x5e, 0x65, 0x1e, 0xaf, 0x9b, 0xfb, 0x08, + 0x98, 0x2b, 0x22, 0x02, 0xb0, 0xff, 0x19, 0x34, 0x83, 0x15, 0x0e, 0xb0, 0x27, 0x26, 0xa4, 0x97, + 0x0c, 0xb1, 0x9f, 0x7b, 0x04, 0x20, 0xa6, 0x7e, 0x59, 0x86, 0xb9, 0x8a, 0xb9, 0x67, 0xb8, 0x68, + 0x19, 0x99, 0xc8, 0xf6, 0xc6, 0x01, 0x21, 0x18, 0x1e, 0x96, 0x19, 0x18, 0x96, 0x78, 0x18, 0x6e, + 0xe9, 0x23, 0x36, 0xbe, 0x8c, 0x88, 0xd1, 0xf6, 0x2a, 0x98, 0x32, 0x70, 0xbe, 0x92, 0xd1, 0xa6, + 0x12, 0x0b, 0x13, 0x94, 0xeb, 0x60, 0x96, 0xbc, 0x2c, 0x19, 0x1d, 0x74, 0x2f, 0xba, 0x44, 0xc7, + 0x5d, 0x3e, 0x51, 0xfd, 0xc5, 0xa0, 0xf1, 0x55, 0x38, 0x2c, 0x7f, 0x22, 0x29, 0x53, 0xc9, 0xc0, + 0x7c, 0xe9, 0x23, 0xa1, 0xf9, 0xed, 0x6b, 0x65, 0x86, 0xfa, 0x7d, 0x09, 0xa6, 0xeb, 0xae, 0xd5, + 0xf5, 0x54, 0xd6, 0x30, 0xb7, 0xc4, 0xc0, 0xfd, 0x24, 0xdb, 0xc6, 0x4a, 0x3c, 0xb8, 0x8f, 0xeb, + 0x23, 0x47, 0xa6, 0x80, 0x88, 0x16, 0xf6, 0x9d, 0xa0, 0x85, 0x2d, 0x71, 0xa8, 0xdc, 0x9a, 0x88, + 0xda, 0x0f, 0x61, 0xfb, 0x7a, 0xa9, 0x0c, 0x05, 0x5f, 0xcd, 0xdc, 0xd2, 0xae, 0x6d, 0x23, 0xd3, + 0x15, 0x03, 0xe1, 0xaf, 0x58, 0x10, 0x56, 0x78, 0x10, 0x6e, 0x8d, 0x51, 0x66, 0xbf, 0x94, 0x14, + 0xdb, 0xd8, 0x87, 0x03, 0x34, 0xef, 0xe5, 0xd0, 0xfc, 0xc9, 0xe4, 0x6c, 0x25, 0x83, 0x74, 0x65, + 0x08, 0x44, 0x8f, 0x43, 0xc1, 0x1b, 0x93, 0x4a, 0x8d, 0xca, 0xd9, 0x72, 0xb3, 0x52, 0x3d, 0x5b, + 0x69, 0x94, 0x0b, 0x48, 0x7d, 0x89, 0x0c, 0x33, 0x84, 0x35, 0x0d, 0xed, 0x59, 0x17, 0x04, 0x7b, + 0xbd, 0x2f, 0x27, 0x34, 0x16, 0xd8, 0x12, 0x22, 0x5a, 0xc6, 0x2f, 0x24, 0x30, 0x16, 0x62, 0xc8, + 0x3d, 0x92, 0x7a, 0xab, 0x7d, 0xcd, 0x60, 0xab, 0x4f, 0x6b, 0xe9, 0xdb, 0x5b, 0xbd, 0x34, 0x0b, + 0x40, 0x2a, 0x79, 0xd6, 0x40, 0x17, 0xd5, 0xb5, 0x10, 0x13, 0x4e, 0x6d, 0x33, 0x03, 0xd5, 0x56, + 0xea, 0xa7, 0xb6, 0xef, 0x63, 0xc7, 0xac, 0x05, 0x1e, 0xbd, 0x9b, 0x22, 0xc5, 0xed, 0x71, 0x12, + 0x3d, 0x3b, 0xf4, 0x15, 0x45, 0xe2, 0xad, 0xce, 0xab, 0x60, 0x0a, 0x3f, 0x56, 0xf5, 0x1d, 0x44, + 0xdb, 0x50, 0x98, 0xa0, 0x9c, 0x81, 0x19, 0x92, 0xb1, 0x65, 0x99, 0x5e, 0x7d, 0xb2, 0x38, 0x03, + 0x97, 0xe6, 0x81, 0xd8, 0xb2, 0x91, 0xee, 0x5a, 0x36, 0xa6, 0x91, 0x23, 0x20, 0x32, 0x49, 0xea, + 0x37, 0x83, 0x56, 0x58, 0xe6, 0x34, 0xe7, 0xf1, 0x49, 0xaa, 0x92, 0x4c, 0x6f, 0xf6, 0x86, 0x6b, + 0x7f, 0xa4, 0xd5, 0x35, 0x3d, 0xb4, 0x97, 0xf0, 0xd4, 0x0e, 0x29, 0x27, 0x41, 0xa1, 0xa9, 0x5e, + 0xde, 0x52, 0xad, 0xda, 0x28, 0x57, 0x1b, 0x85, 0xcd, 0xbe, 0x1a, 0xb5, 0xa5, 0xbe, 0x21, 0x0b, + 0xd9, 0x7b, 0x2c, 0xc3, 0x54, 0x1f, 0xcc, 0x70, 0x2a, 0x61, 0x22, 0xf7, 0xa2, 0x65, 0x5f, 0x08, + 0x1a, 0x6a, 0x98, 0x10, 0x8f, 0x4d, 0xa8, 0x4a, 0xf2, 0x40, 0x55, 0xca, 0xf6, 0x53, 0xa5, 0x5f, + 0x61, 0x55, 0xe9, 0x0e, 0x5e, 0x95, 0xae, 0xef, 0x23, 0x7f, 0x8f, 0xf9, 0x88, 0x0e, 0xe0, 0x13, + 0x41, 0x07, 0x70, 0x17, 0x07, 0xe3, 0x63, 0xc5, 0xc8, 0x24, 0x03, 0xf0, 0x4b, 0xa9, 0x36, 0xfc, + 0x7e, 0x50, 0x6f, 0x45, 0x40, 0xbd, 0xdd, 0xa7, 0x4f, 0x30, 0xf6, 0x77, 0x1d, 0xf7, 0xef, 0xef, + 0x26, 0x2e, 0x28, 0x27, 0xe0, 0xd8, 0x62, 0x65, 0x69, 0xa9, 0xac, 0x95, 0xab, 0x8d, 0x66, 0xb5, + 0xdc, 0x38, 0x57, 0xd3, 0xee, 0x2d, 0x74, 0xd4, 0x87, 0x64, 0x00, 0x4f, 0x42, 0x25, 0xdd, 0x6c, + 0xa1, 0x8e, 0x58, 0x8f, 0xfe, 0x7f, 0x4b, 0xc9, 0xfa, 0x84, 0x90, 0x7e, 0x04, 0x9c, 0xaf, 0x96, + 0xc4, 0x5b, 0x65, 0x24, 0xb1, 0x64, 0xa0, 0xbe, 0xe5, 0x91, 0x60, 0x7b, 0x5e, 0x06, 0x47, 0x7d, + 0x7a, 0x34, 0x7b, 0xff, 0x69, 0xdf, 0xdb, 0xb3, 0x30, 0x47, 0x61, 0xf1, 0xe7, 0xf1, 0xcf, 0xcb, + 0x88, 0x4c, 0xe4, 0x55, 0x98, 0xa4, 0xd3, 0x76, 0xbf, 0x7b, 0x0f, 0xde, 0x95, 0x65, 0x98, 0xee, + 0x22, 0x7b, 0xc7, 0x70, 0x1c, 0xc3, 0x32, 0xc9, 0x82, 0xdc, 0xdc, 0xad, 0x8f, 0x0e, 0x24, 0x8e, + 0xd7, 0x2e, 0xe7, 0xd7, 0x75, 0xdb, 0x35, 0x5a, 0x46, 0x57, 0x37, 0xdd, 0xf5, 0x30, 0xb3, 0xc6, + 0xfe, 0xa9, 0xbe, 0x38, 0xe1, 0xb4, 0x86, 0xaf, 0x49, 0x84, 0x4a, 0xfc, 0x6e, 0x82, 0x29, 0x49, + 0x2c, 0xc1, 0x64, 0x6a, 0xf1, 0xf1, 0x54, 0xd5, 0xa2, 0x0f, 0xde, 0x5b, 0xca, 0x15, 0x70, 0xa2, + 0x52, 0x2d, 0xd5, 0x34, 0xad, 0x5c, 0x6a, 0x34, 0xd7, 0xcb, 0xda, 0x5a, 0xa5, 0x5e, 0xaf, 0xd4, + 0xaa, 0xf5, 0x83, 0xb4, 0x76, 0xf5, 0x53, 0x72, 0xa0, 0x31, 0x8b, 0xa8, 0xd5, 0x31, 0x4c, 0xa4, + 0xde, 0x75, 0x40, 0x85, 0xe1, 0x57, 0x7d, 0xc4, 0x71, 0xa6, 0xe5, 0x47, 0xe0, 0xfc, 0xfa, 0xe4, + 0x38, 0xf7, 0x27, 0xf8, 0x1f, 0xb8, 0xf9, 0x7f, 0x59, 0x86, 0x63, 0x4c, 0x43, 0xd4, 0xd0, 0xce, + 0xc8, 0x56, 0xf2, 0x7e, 0x8e, 0x6d, 0xbb, 0x15, 0x1e, 0xd3, 0x7e, 0xd6, 0xf4, 0x3e, 0x36, 0x22, + 0x60, 0x7d, 0x4b, 0x00, 0xeb, 0x2a, 0x07, 0xeb, 0x93, 0x87, 0xa0, 0x99, 0x0c, 0xd9, 0xdf, 0x4e, + 0x15, 0xd9, 0x2b, 0xe0, 0xc4, 0x7a, 0x51, 0x6b, 0x54, 0x4a, 0x95, 0xf5, 0xa2, 0x37, 0x8e, 0x32, + 0x43, 0x76, 0x84, 0xb9, 0xce, 0x83, 0xde, 0x17, 0xdf, 0x0f, 0x65, 0xe1, 0xaa, 0xfe, 0x1d, 0x6d, + 0x69, 0x5b, 0x37, 0xb7, 0x90, 0x6a, 0x88, 0x40, 0xbd, 0x08, 0x13, 0x2d, 0x9c, 0x9d, 0xe0, 0xcc, + 0x6e, 0xdd, 0xc4, 0xf4, 0xe5, 0xa4, 0x04, 0xcd, 0xff, 0x55, 0x7d, 0x17, 0xab, 0x10, 0x0d, 0x5e, + 0x21, 0x9e, 0x1a, 0x0f, 0xde, 0x3e, 0xbe, 0x23, 0x74, 0xe3, 0x33, 0x81, 0x6e, 0x9c, 0xe3, 0x74, + 0xa3, 0x74, 0x30, 0xf2, 0xc9, 0xd4, 0xe4, 0x8f, 0x1e, 0x09, 0x1d, 0x40, 0xa4, 0x36, 0x19, 0xd1, + 0xa3, 0x42, 0xdf, 0xee, 0xfe, 0xb5, 0x32, 0xe4, 0x17, 0x51, 0x07, 0x89, 0xae, 0x44, 0x7e, 0x5b, + 0x12, 0xdd, 0x10, 0x21, 0x30, 0x10, 0xda, 0xd1, 0xab, 0x23, 0xae, 0xb1, 0x83, 0x1c, 0x57, 0xdf, + 0xe9, 0x62, 0x51, 0xcb, 0x5a, 0x98, 0xa0, 0xfe, 0xbc, 0x24, 0xb2, 0x5d, 0x12, 0x53, 0xcc, 0x7f, + 0x8c, 0x35, 0xc5, 0xcf, 0x49, 0x30, 0x59, 0x47, 0x6e, 0xcd, 0x6e, 0x23, 0x5b, 0xad, 0x87, 0x18, + 0x5d, 0x03, 0xd3, 0x18, 0x14, 0x6f, 0x9a, 0x19, 0xe0, 0xc4, 0x26, 0x29, 0xd7, 0xc3, 0x5c, 0xf0, + 0x8a, 0x7f, 0xa7, 0xdd, 0x78, 0x4f, 0xaa, 0xfa, 0x4f, 0x19, 0xd1, 0x5d, 0x5c, 0xba, 0x64, 0x48, + 0xb9, 0x89, 0x68, 0xa5, 0x62, 0x3b, 0xb2, 0xb1, 0xa4, 0xd2, 0xdf, 0xe8, 0x7a, 0x87, 0x04, 0xb0, + 0x61, 0x3a, 0xbe, 0x5c, 0x1f, 0x9b, 0x40, 0xae, 0xea, 0xbf, 0x64, 0x92, 0xcd, 0x62, 0xc2, 0x72, + 0x22, 0x24, 0xf6, 0x1b, 0x09, 0xd6, 0x16, 0x22, 0x89, 0xa5, 0x2f, 0xb3, 0xaf, 0xcd, 0x41, 0xfe, + 0x9c, 0xde, 0xe9, 0x20, 0x57, 0xfd, 0xba, 0x04, 0xf9, 0x92, 0x8d, 0x74, 0x17, 0xb1, 0xa2, 0x53, + 0x61, 0xd2, 0xb6, 0x2c, 0x77, 0x5d, 0x77, 0xb7, 0xa9, 0xdc, 0x82, 0x77, 0xea, 0x30, 0xf0, 0x5b, + 0x6c, 0xf7, 0x71, 0x17, 0x2f, 0xba, 0x1f, 0xe7, 0x6a, 0x4b, 0x0a, 0x9a, 0x27, 0x85, 0x44, 0xf4, + 0x1f, 0x2a, 0x4c, 0xee, 0x98, 0x68, 0xc7, 0x32, 0x8d, 0x96, 0x6f, 0x73, 0xfa, 0xef, 0xea, 0x47, + 0x02, 0x99, 0x2e, 0x70, 0x32, 0x9d, 0x17, 0x2e, 0x25, 0x99, 0x40, 0xeb, 0x43, 0xf4, 0x1e, 0x57, + 0xc3, 0x95, 0xa4, 0x33, 0x68, 0x36, 0x6a, 0xcd, 0x92, 0x56, 0x2e, 0x36, 0xca, 0xcd, 0xd5, 0x5a, + 0xa9, 0xb8, 0xda, 0xd4, 0xca, 0xeb, 0xb5, 0x02, 0x52, 0xff, 0x5e, 0xf2, 0x84, 0xdb, 0xb2, 0xf6, + 0x90, 0xad, 0x2e, 0x0b, 0xc9, 0x39, 0x4e, 0x26, 0x14, 0x83, 0x5f, 0x11, 0x76, 0xda, 0xa0, 0xd2, + 0xa1, 0x1c, 0x44, 0x28, 0xef, 0x47, 0x85, 0x9a, 0x7b, 0x2c, 0xa9, 0x47, 0x80, 0xa4, 0xff, 0x87, + 0x04, 0x13, 0x25, 0xcb, 0xdc, 0x43, 0xb6, 0xcb, 0xce, 0x77, 0x58, 0x69, 0x66, 0x78, 0x69, 0x7a, + 0x83, 0x24, 0x32, 0x5d, 0xdb, 0xea, 0xfa, 0x13, 0x1e, 0xff, 0x55, 0x7d, 0x53, 0x52, 0x09, 0xd3, + 0x92, 0xa3, 0x17, 0x3e, 0xfb, 0x17, 0xc4, 0xb1, 0x27, 0xf7, 0x34, 0x80, 0x87, 0x92, 0xe0, 0xd2, + 0x9f, 0x81, 0xf4, 0xbb, 0x94, 0xaf, 0xc8, 0x30, 0x4b, 0x1a, 0x5f, 0x1d, 0x61, 0x0b, 0x4d, 0xad, + 0xb1, 0x4b, 0x8e, 0x3d, 0xc2, 0x5f, 0x39, 0xc2, 0x89, 0x3f, 0xaf, 0x77, 0xbb, 0xc1, 0xf2, 0xf3, + 0xca, 0x11, 0x8d, 0xbe, 0x13, 0x35, 0x5f, 0xc8, 0x43, 0x56, 0xdf, 0x75, 0xb7, 0xd5, 0xef, 0x0b, + 0x4f, 0x3e, 0xb9, 0xce, 0x80, 0xf2, 0x13, 0x01, 0xc9, 0x71, 0xc8, 0xb9, 0xd6, 0x05, 0xe4, 0xcb, + 0x81, 0xbc, 0x78, 0x70, 0xe8, 0xdd, 0x6e, 0x03, 0x7f, 0xa0, 0x70, 0xf8, 0xef, 0x9e, 0xad, 0xa3, + 0xb7, 0x5a, 0xd6, 0xae, 0xe9, 0x56, 0xfc, 0x25, 0xe8, 0x30, 0x41, 0xfd, 0x62, 0x46, 0x64, 0x32, + 0x2b, 0xc0, 0x60, 0x32, 0xc8, 0xce, 0x0f, 0xd1, 0x94, 0xe6, 0xe1, 0xc6, 0xe2, 0xfa, 0x7a, 0xb3, + 0x51, 0xbb, 0xb7, 0x5c, 0x0d, 0x0d, 0xcf, 0x66, 0xa5, 0xda, 0x6c, 0xac, 0x94, 0x9b, 0xa5, 0x0d, + 0x0d, 0xaf, 0x13, 0x16, 0x4b, 0xa5, 0xda, 0x46, 0xb5, 0x51, 0x40, 0xea, 0x5b, 0x25, 0x98, 0x29, + 0x75, 0x2c, 0x27, 0x40, 0xf8, 0xea, 0x10, 0xe1, 0x40, 0x8c, 0x19, 0x46, 0x8c, 0xea, 0xbf, 0x65, + 0x44, 0x9d, 0x0e, 0x7c, 0x81, 0x30, 0xe4, 0x23, 0x7a, 0xa9, 0x37, 0x09, 0x39, 0x1d, 0x0c, 0xa6, + 0x97, 0x7e, 0x93, 0xf8, 0xc5, 0xbb, 0x61, 0xa2, 0x48, 0x14, 0x43, 0xfd, 0x9b, 0x0c, 0xe4, 0x4b, + 0x96, 0xb9, 0x69, 0x6c, 0x79, 0xc6, 0x1c, 0x32, 0xf5, 0xf3, 0x1d, 0xb4, 0xa8, 0xbb, 0xfa, 0x9e, + 0x81, 0x2e, 0xe2, 0x0a, 0x4c, 0x6a, 0x3d, 0xa9, 0x1e, 0x53, 0x34, 0x05, 0x9d, 0xdf, 0xdd, 0xc2, + 0x4c, 0x4d, 0x6a, 0x6c, 0x92, 0xf2, 0x64, 0xb8, 0x9c, 0xbc, 0xae, 0xdb, 0xc8, 0x46, 0x1d, 0xa4, + 0x3b, 0xc8, 0x9b, 0x16, 0x99, 0xa8, 0x83, 0x95, 0x76, 0x52, 0x8b, 0xfa, 0xac, 0x9c, 0x81, 0x19, + 0xf2, 0x09, 0x9b, 0x22, 0x0e, 0x56, 0xe3, 0x49, 0x8d, 0x4b, 0x53, 0x1e, 0x07, 0x39, 0xf4, 0x80, + 0x6b, 0xeb, 0xa7, 0xda, 0x18, 0xaf, 0xcb, 0xe7, 0x89, 0xd7, 0xe1, 0xbc, 0xef, 0x75, 0x38, 0x5f, + 0xc7, 0x3e, 0x89, 0x1a, 0xc9, 0xa5, 0xbe, 0x6a, 0x32, 0x30, 0x24, 0x7e, 0x20, 0x85, 0x8a, 0xa1, + 0x40, 0xd6, 0xd4, 0x77, 0x10, 0xd5, 0x0b, 0xfc, 0xac, 0xdc, 0x08, 0x47, 0xf5, 0x3d, 0xdd, 0xd5, + 0xed, 0x55, 0xab, 0xa5, 0x77, 0xf0, 0xe0, 0xe7, 0xb7, 0xfc, 0xde, 0x0f, 0x78, 0x47, 0xc8, 0xb5, + 0x6c, 0x84, 0x73, 0xf9, 0x3b, 0x42, 0x7e, 0x82, 0x47, 0xdd, 0x68, 0x59, 0x26, 0xe6, 0x5f, 0xd6, + 0xf0, 0xb3, 0x27, 0x95, 0xb6, 0xe1, 0x78, 0x15, 0xc1, 0x54, 0xaa, 0x64, 0x6b, 0xa3, 0x7e, 0xc9, + 0x6c, 0xe1, 0xdd, 0xa0, 0x49, 0x2d, 0xea, 0xb3, 0xb2, 0x00, 0xd3, 0x74, 0x23, 0x64, 0xcd, 0xd3, + 0xab, 0x3c, 0xd6, 0xab, 0x6b, 0x78, 0x9f, 0x2e, 0x82, 0xe7, 0x7c, 0x35, 0xcc, 0xa7, 0xb1, 0x3f, + 0x29, 0x77, 0xc3, 0x95, 0xf4, 0xb5, 0xb4, 0xeb, 0xb8, 0xd6, 0x0e, 0x01, 0x7d, 0xc9, 0xe8, 0x90, + 0x1a, 0x4c, 0xe0, 0x1a, 0xc4, 0x65, 0x51, 0x6e, 0x85, 0xe3, 0x5d, 0x1b, 0x6d, 0x22, 0xfb, 0x3e, + 0x7d, 0x67, 0xf7, 0x81, 0x86, 0xad, 0x9b, 0x4e, 0xd7, 0xb2, 0xdd, 0x53, 0x93, 0x98, 0xf9, 0xbe, + 0xdf, 0x68, 0x47, 0x39, 0x09, 0x79, 0x22, 0x3e, 0xf5, 0x45, 0x39, 0x61, 0x77, 0x4e, 0x5a, 0xa1, + 0x58, 0xf3, 0xec, 0x16, 0x98, 0xa0, 0x3d, 0x1c, 0x06, 0x6a, 0xfa, 0xd6, 0x93, 0x3d, 0xeb, 0x0a, + 0x94, 0x8a, 0xe6, 0x67, 0x53, 0x9e, 0x00, 0xf9, 0x16, 0xae, 0x16, 0xc6, 0x6c, 0xfa, 0xd6, 0x2b, + 0xfb, 0x17, 0x8a, 0xb3, 0x68, 0x34, 0xab, 0xfa, 0x97, 0xb2, 0x90, 0x07, 0x68, 0x1c, 0xc7, 0xc9, + 0x5a, 0xf5, 0x37, 0xa5, 0x21, 0xba, 0xcd, 0x9b, 0xe0, 0x06, 0xda, 0x27, 0x52, 0xfb, 0x63, 0xb1, + 0xb9, 0xb0, 0xe1, 0x4f, 0x06, 0x3d, 0xab, 0xa4, 0xde, 0x28, 0x6a, 0xde, 0x4c, 0x7e, 0xd1, 0x9b, + 0x44, 0xde, 0x08, 0xd7, 0x0f, 0xc8, 0x5d, 0x6e, 0x34, 0xab, 0xc5, 0xb5, 0x72, 0x61, 0x93, 0xb7, + 0x6d, 0xea, 0x8d, 0xda, 0x7a, 0x53, 0xdb, 0xa8, 0x56, 0x2b, 0xd5, 0x65, 0x42, 0xcc, 0x33, 0x09, + 0x4f, 0x86, 0x19, 0xce, 0x69, 0x95, 0x46, 0xb9, 0x59, 0xaa, 0x55, 0x97, 0x2a, 0xcb, 0x05, 0x63, + 0x90, 0x61, 0x74, 0xbf, 0x72, 0x0d, 0x5c, 0xc5, 0x71, 0x52, 0xa9, 0x55, 0xbd, 0x99, 0x6d, 0xa9, + 0x58, 0x2d, 0x95, 0xbd, 0x69, 0xec, 0x05, 0x45, 0x85, 0x13, 0x84, 0x5c, 0x73, 0xa9, 0xb2, 0xca, + 0x6e, 0x46, 0x7d, 0x32, 0xa3, 0x9c, 0x82, 0xcb, 0xd8, 0x6f, 0x95, 0xea, 0xd9, 0xe2, 0x6a, 0x65, + 0xb1, 0xf0, 0x87, 0x19, 0xe5, 0x3a, 0xb8, 0x9a, 0xfb, 0x8b, 0xec, 0x2b, 0x35, 0x2b, 0x8b, 0xcd, + 0xb5, 0x4a, 0x7d, 0xad, 0xd8, 0x28, 0xad, 0x14, 0x3e, 0x85, 0xe7, 0x0b, 0x81, 0x01, 0xcc, 0xb8, + 0x65, 0xbe, 0x94, 0x1d, 0xd3, 0x8b, 0xbc, 0xa2, 0x3e, 0xb6, 0x2f, 0xec, 0xf1, 0x36, 0xec, 0xc7, + 0x83, 0xd1, 0x61, 0x91, 0x53, 0xa1, 0x5b, 0x12, 0xd0, 0x4a, 0xa6, 0x43, 0x8d, 0x21, 0x54, 0xe8, + 0x1a, 0xb8, 0xaa, 0x5a, 0x26, 0x48, 0x69, 0xe5, 0x52, 0xed, 0x6c, 0x59, 0x6b, 0x9e, 0x2b, 0xae, + 0xae, 0x96, 0x1b, 0xcd, 0xa5, 0x8a, 0x56, 0x6f, 0x14, 0x36, 0xd5, 0x7f, 0x91, 0x82, 0xd5, 0x1c, + 0x46, 0x5a, 0x7f, 0x23, 0x25, 0x6d, 0xd6, 0xb1, 0xab, 0x36, 0x3f, 0x01, 0x79, 0xc7, 0xd5, 0xdd, + 0x5d, 0x87, 0xb6, 0xea, 0x47, 0xf5, 0x6f, 0xd5, 0xf3, 0x75, 0x9c, 0x49, 0xa3, 0x99, 0xd5, 0xbf, + 0xcc, 0x24, 0x69, 0xa6, 0x23, 0x58, 0xd0, 0x31, 0x86, 0x10, 0xf1, 0x69, 0x50, 0x7d, 0x6d, 0xaf, + 0xd4, 0x9b, 0xc5, 0x55, 0xad, 0x5c, 0x5c, 0xbc, 0x2f, 0x58, 0xc6, 0x41, 0xca, 0x09, 0x38, 0xb6, + 0x51, 0x2d, 0x2e, 0xac, 0x96, 0x71, 0x73, 0xa9, 0x55, 0xab, 0xe5, 0x92, 0x27, 0xf7, 0x9f, 0xc7, + 0x9b, 0x26, 0x9e, 0x05, 0x8d, 0xf9, 0xf6, 0xac, 0x1c, 0x46, 0xfe, 0xdf, 0x10, 0xf6, 0x2d, 0x0a, + 0x35, 0x8c, 0xa5, 0x35, 0x5a, 0x1c, 0xbe, 0x28, 0xe4, 0x4e, 0x24, 0xc4, 0x49, 0x32, 0x3c, 0xfe, + 0xf3, 0x10, 0x78, 0x9c, 0x80, 0x63, 0x2c, 0x1e, 0xd8, 0xad, 0x28, 0x1a, 0x86, 0xaf, 0x4a, 0x30, + 0xb1, 0x66, 0x6c, 0x61, 0xbf, 0xca, 0xa7, 0x84, 0xc6, 0xc4, 0x1c, 0x48, 0x81, 0x1b, 0x8b, 0x64, + 0xb4, 0xb9, 0xe9, 0xb3, 0xd4, 0x77, 0x99, 0xe2, 0x65, 0x89, 0xfb, 0x17, 0x5a, 0x6c, 0x44, 0xff, + 0xf2, 0xc9, 0x44, 0xfd, 0x4b, 0x7f, 0x5a, 0xc9, 0x84, 0x7d, 0xee, 0x60, 0xc2, 0x66, 0x9d, 0x47, + 0x66, 0x60, 0x32, 0xe8, 0xed, 0x37, 0xd5, 0x77, 0x4a, 0x30, 0x4b, 0x19, 0xa4, 0x3b, 0xff, 0x57, + 0x47, 0x4a, 0x9a, 0x4a, 0xf3, 0x07, 0xac, 0x3d, 0xbf, 0xcc, 0x4b, 0xf3, 0xf1, 0x71, 0x12, 0x88, + 0xdd, 0xfa, 0x7f, 0x73, 0x20, 0xd3, 0x7b, 0x38, 0x99, 0x3e, 0x29, 0x31, 0xc5, 0xf4, 0x6d, 0xfa, + 0x67, 0x4d, 0x41, 0xbe, 0x8e, 0x3a, 0xa8, 0xe5, 0xaa, 0x6f, 0x97, 0x86, 0x52, 0xcc, 0x38, 0xfb, + 0x54, 0x4e, 0x64, 0x9f, 0x66, 0x53, 0xb0, 0x4f, 0x73, 0xc3, 0xdb, 0xa7, 0xf9, 0x41, 0xf6, 0xa9, + 0xfa, 0xb1, 0x7c, 0xd2, 0xe1, 0x8b, 0x88, 0xfa, 0x70, 0xad, 0xd2, 0x5f, 0xca, 0x25, 0x19, 0xee, + 0xfa, 0x72, 0x9c, 0x4c, 0x2f, 0x5f, 0x9d, 0x4d, 0x61, 0x5d, 0x4c, 0xb9, 0x16, 0xae, 0x0e, 0xdf, + 0x9b, 0xe5, 0xa7, 0x57, 0xea, 0x8d, 0x3a, 0x36, 0x45, 0x4b, 0x35, 0x4d, 0xdb, 0x58, 0x27, 0x9b, + 0x1b, 0x27, 0x41, 0x09, 0xa9, 0x68, 0x1b, 0x55, 0x62, 0x78, 0x6e, 0xf1, 0xd4, 0x97, 0x2a, 0xd5, + 0xc5, 0x66, 0xd0, 0x99, 0x57, 0x97, 0x6a, 0x85, 0x6d, 0x65, 0x1e, 0x6e, 0x64, 0xa8, 0x7b, 0x9d, + 0x0e, 0x2d, 0xa1, 0x58, 0x5d, 0x6c, 0xae, 0x55, 0xcb, 0x6b, 0xb5, 0x6a, 0xa5, 0x84, 0xd3, 0xeb, + 0xe5, 0x46, 0xc1, 0xf0, 0x2c, 0xa0, 0x1e, 0x53, 0xb7, 0x5e, 0x2e, 0x6a, 0xa5, 0x95, 0xb2, 0x46, + 0x8a, 0xbc, 0x5f, 0xb9, 0x1e, 0xce, 0x14, 0xab, 0xb5, 0x86, 0x97, 0x52, 0xac, 0xde, 0xd7, 0xb8, + 0x6f, 0xbd, 0xdc, 0x5c, 0xd7, 0x6a, 0xa5, 0x72, 0xbd, 0xee, 0x0d, 0x20, 0xd4, 0x30, 0x2e, 0x74, + 0x94, 0xa7, 0xc2, 0xed, 0x0c, 0x6b, 0xe5, 0x06, 0xde, 0x49, 0x5f, 0xab, 0x61, 0x67, 0xaa, 0xc5, + 0x72, 0x73, 0xa5, 0x58, 0x6f, 0x56, 0xaa, 0xa5, 0xda, 0xda, 0x7a, 0xb1, 0x51, 0xf1, 0xc6, 0x99, + 0x75, 0xad, 0xd6, 0xa8, 0x35, 0xcf, 0x96, 0xb5, 0x7a, 0xa5, 0x56, 0x2d, 0x98, 0x5e, 0x95, 0x99, + 0x81, 0xc9, 0x37, 0x10, 0x2c, 0xe5, 0x2a, 0x38, 0xe5, 0xa7, 0xaf, 0xd6, 0x3c, 0x41, 0x33, 0xa6, + 0x72, 0x97, 0x35, 0x2f, 0xea, 0x8d, 0x9a, 0x46, 0x8c, 0xe5, 0xb5, 0xca, 0xb2, 0xe6, 0x59, 0xf8, + 0x85, 0x67, 0xa4, 0x6a, 0x4a, 0xff, 0xab, 0x04, 0xd9, 0xba, 0x6b, 0x75, 0xd5, 0x1f, 0x0f, 0x3b, + 0xa0, 0xd3, 0x00, 0x36, 0xde, 0x38, 0x5f, 0xd4, 0x5d, 0x9d, 0x2e, 0x28, 0x30, 0x29, 0xea, 0x1f, + 0x08, 0xef, 0xf6, 0x85, 0xc6, 0x86, 0xd5, 0x8d, 0xe8, 0xb0, 0xbf, 0x27, 0x76, 0xfc, 0x29, 0x9a, + 0x50, 0xb2, 0xf6, 0xf0, 0x0b, 0xc3, 0xec, 0xe7, 0xa9, 0x70, 0x92, 0x81, 0xd5, 0x93, 0xbf, 0xaf, + 0x32, 0x48, 0xb9, 0x1c, 0x2e, 0xeb, 0x51, 0x3e, 0xac, 0x73, 0x9b, 0xca, 0x8f, 0xc1, 0xa3, 0x18, + 0xf5, 0x2f, 0xaf, 0xd5, 0xce, 0x96, 0x03, 0x45, 0x5f, 0x2c, 0x36, 0x8a, 0x85, 0x2d, 0xf5, 0x73, + 0x32, 0x64, 0xd7, 0xac, 0xbd, 0xde, 0x4d, 0x56, 0x13, 0x5d, 0x64, 0x16, 0xf1, 0xfd, 0x57, 0xfe, + 0xb8, 0x87, 0x90, 0xd8, 0xd7, 0xa2, 0x1d, 0x2a, 0xbe, 0x28, 0x25, 0x11, 0xfb, 0xda, 0x41, 0xbd, + 0x28, 0xfe, 0x61, 0x18, 0xb1, 0x47, 0x88, 0x16, 0x29, 0x67, 0xe0, 0x74, 0xf8, 0xa1, 0xb2, 0x58, + 0xae, 0x36, 0x2a, 0x4b, 0xf7, 0x85, 0xc2, 0xad, 0x68, 0x42, 0xe2, 0x1f, 0xd4, 0xcd, 0xc5, 0x4f, + 0x91, 0x4f, 0xc1, 0xf1, 0xf0, 0xdb, 0x72, 0xb9, 0xe1, 0x7f, 0xb9, 0x5f, 0x7d, 0x30, 0x07, 0x33, + 0xa4, 0xdb, 0xdf, 0xe8, 0xb6, 0x3d, 0xa3, 0xf3, 0x09, 0x21, 0xba, 0x37, 0xc0, 0xd1, 0xca, 0xfa, + 0x52, 0xbd, 0xee, 0x5a, 0xb6, 0xbe, 0x85, 0x8a, 0xed, 0xb6, 0x4d, 0xa5, 0xd5, 0x9b, 0xac, 0xbe, + 0x47, 0x78, 0x81, 0x9a, 0x1f, 0x6a, 0x48, 0x99, 0x11, 0xa8, 0x7f, 0x45, 0x68, 0x41, 0x59, 0x80, + 0x60, 0x32, 0xf4, 0xef, 0x1f, 0x71, 0x9b, 0x8b, 0xc6, 0x65, 0xf3, 0xcc, 0x73, 0x25, 0x98, 0x6a, + 0x18, 0x3b, 0xe8, 0x99, 0x96, 0x89, 0x1c, 0x65, 0x02, 0xe4, 0xe5, 0xb5, 0x46, 0xe1, 0x88, 0xf7, + 0xe0, 0xcd, 0x06, 0x32, 0xf8, 0xa1, 0xec, 0x15, 0xe0, 0x3d, 0x14, 0x1b, 0x05, 0xd9, 0x7b, 0x58, + 0x2b, 0x37, 0x0a, 0x59, 0xef, 0xa1, 0x5a, 0x6e, 0x14, 0x72, 0xde, 0xc3, 0xfa, 0x6a, 0xa3, 0x90, + 0xf7, 0x1e, 0x2a, 0xf5, 0x46, 0x61, 0xc2, 0x7b, 0x58, 0xa8, 0x37, 0x0a, 0x93, 0xde, 0xc3, 0xd9, + 0x7a, 0xa3, 0x30, 0xe5, 0x3d, 0x94, 0x1a, 0x8d, 0x02, 0x78, 0x0f, 0xf7, 0xd4, 0x1b, 0x85, 0x69, + 0xef, 0xa1, 0x58, 0x6a, 0x14, 0x66, 0xf0, 0x43, 0xb9, 0x51, 0x98, 0xf5, 0x1e, 0xea, 0xf5, 0x46, + 0x61, 0x0e, 0x53, 0xae, 0x37, 0x0a, 0x47, 0x71, 0x59, 0x95, 0x46, 0xa1, 0xe0, 0x3d, 0xac, 0xd4, + 0x1b, 0x85, 0x63, 0x38, 0x73, 0xbd, 0x51, 0x50, 0x70, 0xa1, 0xf5, 0x46, 0xe1, 0x32, 0x9c, 0xa7, + 0xde, 0x28, 0x1c, 0xc7, 0x45, 0xd4, 0x1b, 0x85, 0x13, 0x98, 0x8d, 0x72, 0xa3, 0x70, 0x12, 0xe7, + 0xd1, 0x1a, 0x85, 0xcb, 0xf1, 0xa7, 0x6a, 0xa3, 0x70, 0x0a, 0x33, 0x56, 0x6e, 0x14, 0xae, 0xc0, + 0x0f, 0x5a, 0xa3, 0xa0, 0xe2, 0x4f, 0xc5, 0x46, 0xe1, 0x4a, 0xf5, 0x51, 0x30, 0xb5, 0x8c, 0x5c, + 0x02, 0xa2, 0x5a, 0x00, 0x79, 0x19, 0xb9, 0xec, 0xfc, 0xf3, 0x6b, 0x32, 0x5c, 0x4e, 0xd7, 0x2c, + 0x96, 0x6c, 0x6b, 0x67, 0x15, 0x6d, 0xe9, 0xad, 0x4b, 0xe5, 0x07, 0x3c, 0x13, 0x8b, 0x75, 0x28, + 0x50, 0x20, 0xdb, 0x0d, 0x3b, 0x23, 0xfc, 0x1c, 0x6b, 0x91, 0xfa, 0xab, 0xa8, 0x72, 0xb8, 0x8a, + 0x4a, 0x2d, 0xb6, 0x7f, 0x66, 0x35, 0x9a, 0xdb, 0xf8, 0xc8, 0xf4, 0x6c, 0x7c, 0x78, 0xcd, 0xa4, + 0x8b, 0x6c, 0xc7, 0x32, 0xf5, 0x4e, 0x9d, 0x7a, 0x9c, 0x90, 0xe5, 0xda, 0xde, 0x64, 0xe5, 0x69, + 0x7e, 0xcb, 0x20, 0x56, 0xdb, 0x53, 0xe2, 0x96, 0x66, 0x7a, 0xab, 0x19, 0xd1, 0x48, 0x3e, 0x15, + 0x34, 0x92, 0x06, 0xd7, 0x48, 0xee, 0x3e, 0x00, 0xed, 0x64, 0xed, 0xa5, 0x32, 0xdc, 0x34, 0x2d, + 0xf4, 0xc7, 0xf6, 0xf7, 0x59, 0x64, 0xf5, 0x73, 0x12, 0x9c, 0x2c, 0x9b, 0xfd, 0x66, 0x00, 0xac, + 0x2e, 0xbc, 0x95, 0x85, 0x66, 0x9d, 0x17, 0xe9, 0xed, 0x7d, 0xab, 0xdd, 0x9f, 0x66, 0x84, 0x44, + 0x3f, 0x1d, 0x48, 0xb4, 0xce, 0x49, 0xf4, 0xae, 0xe1, 0x49, 0x27, 0x13, 0x68, 0x75, 0xa4, 0x1d, + 0x50, 0x56, 0xfd, 0x66, 0x16, 0x1e, 0x45, 0x9c, 0xc6, 0x28, 0x87, 0xa4, 0x95, 0x15, 0xcd, 0xb6, + 0x86, 0x1c, 0x57, 0xb7, 0x5d, 0xee, 0x20, 0x7f, 0xcf, 0x54, 0x2b, 0x93, 0xc2, 0x54, 0x4b, 0x1a, + 0x38, 0xd5, 0x52, 0xdf, 0xcd, 0x9a, 0x0f, 0xe7, 0x78, 0x8c, 0x8b, 0xfd, 0xfb, 0xff, 0xb8, 0x1a, + 0x46, 0x41, 0x1d, 0xd8, 0x15, 0x3f, 0xc5, 0x41, 0xbd, 0x74, 0xe0, 0x12, 0x92, 0x21, 0xfe, 0x07, + 0xa3, 0xb5, 0xf3, 0xb2, 0xec, 0x37, 0xde, 0x28, 0x29, 0xb4, 0x53, 0x35, 0xd0, 0x3f, 0x33, 0x01, + 0x53, 0xb8, 0x2d, 0xac, 0x1a, 0xe6, 0x05, 0xf5, 0x21, 0x19, 0x66, 0xaa, 0xe8, 0x62, 0x69, 0x5b, + 0xef, 0x74, 0x90, 0xb9, 0x85, 0x58, 0xb3, 0xfd, 0x14, 0x4c, 0xe8, 0xdd, 0x6e, 0x35, 0xdc, 0x20, + 0xf3, 0x5f, 0x69, 0xff, 0xfb, 0x8d, 0xbe, 0x8d, 0x3c, 0x13, 0xd3, 0xc8, 0x83, 0x72, 0xe7, 0xd9, + 0x32, 0x23, 0x66, 0xd0, 0xd7, 0xc0, 0x74, 0xcb, 0xcf, 0x12, 0x1c, 0xf8, 0x61, 0x93, 0xd4, 0xbf, + 0x4b, 0xd4, 0x0d, 0x08, 0x15, 0x9e, 0x4c, 0x29, 0xd0, 0x88, 0xed, 0x90, 0x13, 0x70, 0xac, 0x51, + 0xab, 0x35, 0xd7, 0x8a, 0xd5, 0xfb, 0xc2, 0x83, 0xf6, 0x9b, 0xea, 0xab, 0xb3, 0x30, 0x57, 0xb7, + 0x3a, 0x7b, 0x28, 0x84, 0xa9, 0xc2, 0x79, 0x92, 0xb1, 0x72, 0xca, 0xec, 0x93, 0x93, 0x72, 0x12, + 0xf2, 0xba, 0xe9, 0x5c, 0x44, 0xbe, 0x6d, 0x48, 0xdf, 0x28, 0x8c, 0x1f, 0x62, 0xdb, 0xb1, 0xc6, + 0xc3, 0x78, 0xc7, 0x00, 0x49, 0xf2, 0x5c, 0x45, 0x00, 0x79, 0x06, 0x66, 0x1c, 0xb2, 0xcb, 0xdd, + 0x60, 0x9c, 0x19, 0xb8, 0x34, 0xcc, 0x22, 0x71, 0xb3, 0x90, 0x29, 0x8b, 0xf8, 0x4d, 0x7d, 0x28, + 0x68, 0xfe, 0x1b, 0x1c, 0xc4, 0xc5, 0x83, 0x30, 0x96, 0x0c, 0xe4, 0xd7, 0x8e, 0x7a, 0x86, 0x77, + 0x0a, 0x8e, 0xd3, 0x56, 0xdb, 0x2c, 0xad, 0x14, 0x57, 0x57, 0xcb, 0xd5, 0xe5, 0x72, 0xb3, 0xb2, + 0x48, 0xf6, 0xd8, 0xc2, 0x94, 0x62, 0xa3, 0x51, 0x5e, 0x5b, 0x6f, 0xd4, 0x9b, 0xe5, 0xa7, 0x97, + 0xca, 0xe5, 0x45, 0xec, 0xcb, 0x89, 0x0f, 0x63, 0xf9, 0x5e, 0xb7, 0xc5, 0x6a, 0xfd, 0x5c, 0x59, + 0x2b, 0x6c, 0x9f, 0x29, 0xc2, 0x34, 0xd3, 0xcf, 0x7b, 0xdc, 0x2d, 0xa2, 0x4d, 0x7d, 0xb7, 0x43, + 0x6d, 0xb5, 0xc2, 0x11, 0x8f, 0x3b, 0x2c, 0x9b, 0x9a, 0xd9, 0xb9, 0x54, 0xc8, 0x28, 0x05, 0x98, + 0x61, 0xbb, 0xf4, 0x82, 0xa4, 0xbe, 0xe3, 0x2a, 0x98, 0x3a, 0x67, 0xd9, 0x17, 0xb0, 0x03, 0xa2, + 0xfa, 0x7e, 0x12, 0x90, 0xc7, 0x3f, 0xda, 0xcc, 0x0c, 0xec, 0xaf, 0x15, 0x77, 0x73, 0xf1, 0xa9, + 0xcd, 0x0f, 0x3c, 0xbe, 0x7c, 0x0d, 0x4c, 0x5f, 0xf4, 0x73, 0x87, 0x2d, 0x9d, 0x49, 0x52, 0xff, + 0x9b, 0x98, 0xe3, 0xca, 0xe0, 0x22, 0xd3, 0x5f, 0x84, 0x7d, 0xbb, 0x04, 0xf9, 0x65, 0xe4, 0x16, + 0x3b, 0x1d, 0x56, 0x6e, 0x2f, 0x17, 0x3e, 0x92, 0xc6, 0x55, 0xa2, 0xd8, 0xe9, 0x44, 0x37, 0x2a, + 0x46, 0x40, 0xfe, 0xd1, 0x09, 0x2e, 0x4d, 0xd0, 0xe1, 0x73, 0x40, 0x81, 0xe9, 0x4b, 0xec, 0x23, + 0x72, 0xe0, 0x9c, 0xf1, 0x30, 0x63, 0xe5, 0x3c, 0x3e, 0x0c, 0xc6, 0x94, 0x89, 0x77, 0xf2, 0xf0, + 0xf3, 0x29, 0xf7, 0xc2, 0xc4, 0xae, 0x83, 0x4a, 0xba, 0x83, 0x30, 0x6f, 0xbd, 0x35, 0xad, 0x9d, + 0xbf, 0x1f, 0xb5, 0xdc, 0xf9, 0xca, 0x8e, 0x67, 0x50, 0x6f, 0x90, 0x8c, 0x41, 0x7c, 0x23, 0xfa, + 0xae, 0xf9, 0x14, 0xbc, 0x49, 0xc9, 0x45, 0xc3, 0xdd, 0x2e, 0x6d, 0xeb, 0x2e, 0x5d, 0xfb, 0x0e, + 0xde, 0xd5, 0x17, 0x0d, 0x01, 0x67, 0xac, 0x13, 0x43, 0xe4, 0xc9, 0xd6, 0xc4, 0x20, 0x8e, 0xc0, + 0xf3, 0x60, 0x18, 0x10, 0xff, 0x51, 0x82, 0x6c, 0xad, 0x8b, 0x4c, 0xe1, 0x63, 0x5c, 0x81, 0x6c, + 0xa5, 0x1e, 0xd9, 0x3e, 0x24, 0xee, 0xd6, 0x18, 0x54, 0xda, 0x2b, 0x39, 0x42, 0xb2, 0x37, 0x43, + 0xd6, 0x30, 0x37, 0x2d, 0x6a, 0x98, 0x5e, 0x19, 0xb1, 0x7b, 0x59, 0x31, 0x37, 0x2d, 0x0d, 0x67, + 0x14, 0xf5, 0x68, 0x8c, 0x2b, 0x3b, 0x7d, 0x71, 0x7f, 0x6b, 0x12, 0xf2, 0x44, 0x9d, 0xd5, 0x97, + 0xca, 0x20, 0x17, 0xdb, 0xed, 0x08, 0xc1, 0x4b, 0xfb, 0x04, 0x6f, 0xe1, 0xdf, 0x02, 0x4c, 0x82, + 0x77, 0x3e, 0x0a, 0x8f, 0x60, 0xdf, 0x4e, 0x9b, 0x54, 0xb1, 0xdd, 0x8e, 0x76, 0x9e, 0x0e, 0x0a, + 0x94, 0xf8, 0x02, 0xd9, 0x16, 0x2e, 0x8b, 0xb5, 0xf0, 0xc4, 0x03, 0x41, 0x24, 0x7f, 0xe9, 0x43, + 0xf4, 0xcf, 0x12, 0x4c, 0xac, 0x1a, 0x8e, 0xeb, 0x61, 0x53, 0x14, 0xc1, 0xe6, 0x2a, 0x98, 0xf2, + 0x45, 0xe3, 0x75, 0x79, 0x5e, 0x7f, 0x1e, 0x26, 0xa8, 0x6f, 0x60, 0xd1, 0xb9, 0x87, 0x47, 0xe7, + 0x89, 0xf1, 0xb5, 0xa7, 0x5c, 0x44, 0x1f, 0x8f, 0x09, 0x8b, 0x95, 0x7a, 0x8b, 0xfd, 0xad, 0x40, + 0xe0, 0x6b, 0x9c, 0xc0, 0x6f, 0x1b, 0xa6, 0xc8, 0xf4, 0x85, 0xfe, 0x79, 0x09, 0xc0, 0x2b, 0x9b, + 0x9e, 0x41, 0x7c, 0x0c, 0x17, 0x59, 0x20, 0x46, 0xba, 0xaf, 0x66, 0xa5, 0xbb, 0xc6, 0x4b, 0xf7, + 0x27, 0x07, 0x57, 0x35, 0xee, 0xac, 0xa1, 0x52, 0x00, 0xd9, 0x08, 0x44, 0xeb, 0x3d, 0xaa, 0x6f, + 0x0f, 0x84, 0xba, 0xce, 0x09, 0xf5, 0x8e, 0x21, 0x4b, 0x4a, 0x5f, 0xae, 0x7f, 0x25, 0xc1, 0x44, + 0x1d, 0xb9, 0x5e, 0x37, 0xa9, 0x9e, 0x15, 0xe9, 0xe1, 0x99, 0xb6, 0x2d, 0x09, 0xb6, 0xed, 0xef, + 0x66, 0x44, 0x23, 0x14, 0x85, 0x92, 0xa1, 0x3c, 0x45, 0x2c, 0x1e, 0x3c, 0x2c, 0x14, 0xa1, 0x68, + 0x10, 0xb5, 0xf4, 0xa5, 0xfb, 0x56, 0x29, 0xd8, 0xb8, 0xe7, 0x8f, 0x08, 0xb1, 0x66, 0x71, 0x66, + 0xbf, 0x59, 0x2c, 0x7e, 0x44, 0x88, 0xad, 0x63, 0xf4, 0xae, 0x75, 0x62, 0x63, 0x63, 0x04, 0x1b, + 0xca, 0xc3, 0xc8, 0xeb, 0xd9, 0x32, 0xe4, 0xe9, 0xca, 0xf2, 0x5d, 0xf1, 0x2b, 0xcb, 0x83, 0xa7, + 0x16, 0xef, 0x1b, 0xc2, 0x94, 0x8b, 0x5b, 0xee, 0x0d, 0xd8, 0x90, 0x18, 0x36, 0x6e, 0x82, 0x1c, + 0x0e, 0xa1, 0x4a, 0xc7, 0xb9, 0xd0, 0x17, 0xc0, 0x27, 0x51, 0xf6, 0xbe, 0x6a, 0x24, 0x53, 0x62, + 0x14, 0x46, 0xb0, 0x42, 0x3c, 0x0c, 0x0a, 0xef, 0xfe, 0x5c, 0x26, 0x30, 0x42, 0xde, 0x97, 0xa5, + 0xe6, 0xdf, 0x27, 0xf8, 0x60, 0x2e, 0x2d, 0xcb, 0x74, 0xd1, 0x03, 0xcc, 0x9a, 0x7c, 0x90, 0x10, + 0x6b, 0x19, 0x9c, 0x82, 0x09, 0xd7, 0x66, 0xd7, 0xe9, 0xfd, 0x57, 0xb6, 0xc7, 0xc9, 0xf1, 0x3d, + 0x4e, 0x15, 0xce, 0x18, 0x66, 0xab, 0xb3, 0xdb, 0x46, 0x1a, 0xea, 0xe8, 0x5e, 0xad, 0x9c, 0xa2, + 0xb3, 0x88, 0xba, 0xc8, 0x6c, 0x23, 0xd3, 0x25, 0x7c, 0xfa, 0xce, 0xe4, 0x02, 0x39, 0xd5, 0xaf, + 0xb3, 0x8a, 0x71, 0x27, 0xaf, 0x18, 0x8f, 0xe9, 0x37, 0xaf, 0x88, 0x31, 0x42, 0x6f, 0x03, 0x20, + 0x75, 0x3b, 0x6b, 0xa0, 0x8b, 0xb4, 0x43, 0xbc, 0xa2, 0xc7, 0x14, 0xad, 0x05, 0x19, 0x34, 0x26, + 0xb3, 0xfa, 0xe5, 0x40, 0x19, 0xee, 0xe6, 0x94, 0xe1, 0x26, 0x41, 0x16, 0x92, 0xe9, 0x41, 0x77, + 0x88, 0xb5, 0x8e, 0x59, 0x98, 0x0a, 0x57, 0x28, 0x65, 0xe5, 0x0a, 0x38, 0xe1, 0xfb, 0x44, 0x54, + 0xcb, 0xe5, 0xc5, 0x7a, 0x73, 0x63, 0x7d, 0x59, 0x2b, 0x2e, 0x96, 0x0b, 0xa0, 0x28, 0x30, 0x57, + 0x5b, 0xb8, 0xa7, 0x5c, 0x6a, 0x04, 0xae, 0x0c, 0x59, 0xf5, 0x2f, 0x24, 0xc8, 0xe1, 0x93, 0x10, + 0xea, 0xcf, 0x8c, 0x48, 0x73, 0x1c, 0x6e, 0x87, 0x27, 0x98, 0x48, 0x89, 0x07, 0x59, 0xa5, 0xc2, + 0xc4, 0x5c, 0x1d, 0x28, 0xc8, 0x6a, 0x0c, 0xa1, 0xf4, 0x9b, 0xa7, 0xd7, 0x24, 0xeb, 0xdb, 0xd6, + 0xc5, 0x1f, 0xe5, 0x26, 0xe9, 0xd5, 0xff, 0x90, 0x9b, 0x64, 0x1f, 0x16, 0xc6, 0xde, 0x24, 0xfb, + 0xb4, 0xbb, 0x98, 0x66, 0xaa, 0x3e, 0x2b, 0x17, 0x2c, 0xc8, 0x3c, 0x57, 0x3a, 0xd0, 0x82, 0x4c, + 0x11, 0x66, 0x0d, 0xd3, 0x45, 0xb6, 0xa9, 0x77, 0x96, 0x3a, 0xfa, 0x96, 0x1f, 0xf9, 0xa1, 0x77, + 0x16, 0x5e, 0x61, 0xf2, 0x68, 0xfc, 0x1f, 0xca, 0x69, 0x00, 0x17, 0xed, 0x74, 0x3b, 0xba, 0x1b, + 0xaa, 0x1e, 0x93, 0xc2, 0x6a, 0x5f, 0x96, 0xd7, 0xbe, 0x5b, 0xe0, 0x32, 0x02, 0x5a, 0xe3, 0x52, + 0x17, 0x6d, 0x98, 0xc6, 0x33, 0x76, 0x71, 0xec, 0x2f, 0xa2, 0xa3, 0xfd, 0x3e, 0x71, 0xcb, 0x12, + 0xf9, 0x9e, 0x65, 0x89, 0x7f, 0x14, 0x3e, 0x53, 0xec, 0xb7, 0xfa, 0x01, 0x67, 0x8a, 0x83, 0x96, + 0x26, 0xf7, 0xb4, 0xb4, 0xc0, 0x58, 0xc8, 0x0a, 0x18, 0x0b, 0x2c, 0x2a, 0x39, 0x41, 0x43, 0xfb, + 0xf5, 0x42, 0x87, 0x96, 0xe3, 0xaa, 0x31, 0x86, 0x89, 0x9c, 0x0c, 0x73, 0xa4, 0xe8, 0x05, 0xcb, + 0xba, 0xb0, 0xa3, 0xdb, 0x17, 0x54, 0xfb, 0x40, 0xaa, 0x18, 0xbb, 0x26, 0x12, 0xb9, 0xd0, 0xf7, + 0x69, 0x49, 0xd4, 0xa9, 0x98, 0x13, 0x97, 0xcf, 0xf3, 0x78, 0x16, 0x45, 0xc4, 0x7c, 0x94, 0x45, + 0x18, 0x4c, 0x1f, 0xd7, 0x3f, 0x0a, 0x70, 0xf5, 0x3b, 0x7a, 0x76, 0x3e, 0x39, 0x4a, 0x5c, 0xd5, + 0xaf, 0x0c, 0x87, 0x9d, 0xcf, 0xd7, 0x10, 0xd8, 0x15, 0x40, 0xbe, 0x10, 0x6c, 0x61, 0x79, 0x8f, + 0x6c, 0x85, 0xb2, 0xe9, 0xa1, 0x19, 0xc1, 0xf2, 0x58, 0xd0, 0x3c, 0xce, 0xb3, 0x50, 0xeb, 0xa6, + 0x8a, 0xe9, 0x97, 0x84, 0xd7, 0x69, 0xfa, 0x0a, 0x88, 0x70, 0x37, 0x9e, 0x56, 0x29, 0xb6, 0xc8, + 0x23, 0xce, 0x66, 0xfa, 0x68, 0xbe, 0x30, 0x07, 0x53, 0xfe, 0xa9, 0x6f, 0x7c, 0x29, 0x41, 0x80, + 0xe1, 0x49, 0xc8, 0x3b, 0xd6, 0xae, 0xdd, 0x42, 0x74, 0xe5, 0x8c, 0xbe, 0x0d, 0xb1, 0xca, 0x33, + 0x70, 0x3c, 0xdf, 0x67, 0x32, 0x64, 0x13, 0x9b, 0x0c, 0xd1, 0x06, 0x69, 0xdc, 0x00, 0xff, 0x22, + 0xe1, 0x48, 0xb2, 0x1c, 0x66, 0x75, 0xe4, 0x3e, 0x12, 0xc7, 0xf8, 0xdf, 0x17, 0x5a, 0x43, 0x18, + 0x50, 0x93, 0x64, 0x2a, 0x57, 0x1b, 0xc2, 0x50, 0xbd, 0x12, 0x2e, 0xf7, 0x73, 0x50, 0x0b, 0x15, + 0x5b, 0xa4, 0x1b, 0xda, 0x6a, 0x41, 0x56, 0x9f, 0x9d, 0x85, 0x02, 0x61, 0xad, 0x16, 0x18, 0x6b, + 0xea, 0xcb, 0x33, 0x87, 0x6d, 0x91, 0x46, 0x4f, 0x31, 0x3f, 0x2b, 0x89, 0x46, 0xab, 0xe3, 0x04, + 0x1f, 0xd6, 0x2e, 0x42, 0x93, 0x86, 0x68, 0x66, 0x31, 0xca, 0xa7, 0xfe, 0x66, 0x46, 0x24, 0xf8, + 0x9d, 0x18, 0x8b, 0xe9, 0xf7, 0x4a, 0x5f, 0xc8, 0xfa, 0xc1, 0x3b, 0x96, 0x6c, 0x6b, 0x67, 0xc3, + 0xee, 0xa8, 0xff, 0xa7, 0x50, 0x6c, 0xd1, 0x08, 0xf3, 0x5f, 0x8a, 0x36, 0xff, 0x0b, 0x20, 0xef, + 0xda, 0x1d, 0x7f, 0xf8, 0xde, 0xb5, 0x3b, 0x43, 0x0c, 0xdf, 0xca, 0xf5, 0x30, 0xa7, 0xb7, 0xdb, + 0xeb, 0xfa, 0x16, 0x2a, 0x79, 0xf3, 0x6a, 0xd3, 0xa5, 0x07, 0xfb, 0x7b, 0x52, 0x63, 0xbb, 0xa2, + 0xaf, 0x0b, 0xef, 0xc4, 0x71, 0x20, 0x51, 0xf9, 0x8c, 0x65, 0x78, 0xf3, 0x86, 0x84, 0xd6, 0xb6, + 0x1e, 0x86, 0x19, 0xa1, 0x6f, 0x82, 0x3b, 0x74, 0x02, 0x7c, 0xa7, 0xaf, 0x59, 0xbf, 0x2b, 0xc1, + 0x84, 0x27, 0xef, 0x62, 0xbb, 0xad, 0x3e, 0x9a, 0x8b, 0xc6, 0x13, 0xb9, 0x47, 0xfa, 0x7c, 0xe1, + 0xcd, 0x69, 0xbf, 0x86, 0x84, 0x7e, 0x04, 0x26, 0xa1, 0x10, 0x25, 0x4e, 0x88, 0x62, 0x7b, 0xd0, + 0xb1, 0x45, 0xa4, 0x2f, 0xbe, 0x4f, 0x49, 0x30, 0xeb, 0xcf, 0x23, 0x96, 0x90, 0xdb, 0xda, 0x56, + 0x6f, 0x13, 0x5d, 0x68, 0xa2, 0x2d, 0x4d, 0x0a, 0x5a, 0x9a, 0xfa, 0xfd, 0x4c, 0x42, 0x95, 0xe7, + 0x4a, 0x8e, 0x58, 0xa5, 0x4b, 0xa4, 0x8b, 0x71, 0x04, 0xd3, 0x17, 0xe6, 0x97, 0x25, 0x80, 0x86, + 0x15, 0xcc, 0x75, 0x0f, 0x20, 0xc9, 0x97, 0x08, 0x5f, 0xf4, 0x41, 0x2b, 0x1e, 0x16, 0x9b, 0xbc, + 0xe7, 0x10, 0xdc, 0x62, 0x1b, 0x54, 0xd2, 0x58, 0xda, 0xfa, 0xd4, 0xe2, 0x6e, 0xb7, 0x63, 0xb4, + 0x74, 0xb7, 0x77, 0x5f, 0x38, 0x5a, 0xbc, 0xf8, 0xc6, 0xae, 0x44, 0x46, 0x61, 0x50, 0x46, 0x84, + 0x2c, 0xc9, 0x61, 0x5c, 0xc9, 0x3f, 0x8c, 0x2b, 0xb8, 0xd7, 0x33, 0x80, 0xf8, 0x18, 0xd4, 0x53, + 0x86, 0xa3, 0xb5, 0x2e, 0x32, 0x17, 0x6c, 0xa4, 0xb7, 0x5b, 0xf6, 0xee, 0xce, 0x79, 0x87, 0x75, + 0x6a, 0x88, 0xd7, 0x51, 0x66, 0xe9, 0x58, 0xe2, 0x96, 0x8e, 0xd5, 0xe7, 0xc8, 0xa2, 0x31, 0x0b, + 0x98, 0x0d, 0x0e, 0x86, 0x87, 0x21, 0x86, 0xba, 0x44, 0x5b, 0x71, 0x3d, 0xab, 0xc4, 0xd9, 0x24, + 0xab, 0xc4, 0x6f, 0x11, 0x8a, 0x80, 0x20, 0x54, 0xaf, 0xb1, 0xec, 0xa8, 0xce, 0xd5, 0x91, 0x1b, + 0x01, 0xef, 0x75, 0x30, 0x7b, 0x3e, 0xfc, 0x12, 0x40, 0xcc, 0x27, 0xf6, 0xf1, 0x73, 0x78, 0x6b, + 0xd2, 0x15, 0x18, 0x9e, 0x85, 0x08, 0x74, 0x03, 0x04, 0x25, 0x91, 0xcd, 0xd4, 0x44, 0xcb, 0x29, + 0xb1, 0xe5, 0xa7, 0x8f, 0xc2, 0xc7, 0x24, 0x98, 0xc6, 0xf7, 0x90, 0x2d, 0x5c, 0xc2, 0xde, 0xf9, + 0x82, 0x46, 0xc9, 0x0b, 0x59, 0x31, 0x2b, 0x90, 0xed, 0x18, 0xe6, 0x05, 0x7f, 0x17, 0xdc, 0x7b, + 0x0e, 0x6f, 0xb5, 0x91, 0xfa, 0xdc, 0x6a, 0x13, 0xec, 0x53, 0x04, 0xe5, 0x1e, 0xe8, 0x9a, 0xc5, + 0x81, 0xe4, 0xd2, 0x17, 0xe3, 0xdf, 0x67, 0x21, 0x5f, 0x47, 0xba, 0xdd, 0xda, 0x56, 0xdf, 0x27, + 0xf5, 0x9d, 0x2a, 0x4c, 0xf2, 0x53, 0x85, 0x25, 0x98, 0xd8, 0x34, 0x3a, 0x2e, 0xb2, 0x89, 0x67, + 0x10, 0xdb, 0xb5, 0x93, 0x26, 0xbe, 0xd0, 0xb1, 0x5a, 0x17, 0xe6, 0xa9, 0xe9, 0x3e, 0xef, 0x47, + 0x41, 0x9b, 0x5f, 0xc2, 0x3f, 0x69, 0xfe, 0xcf, 0x9e, 0x41, 0xe8, 0x58, 0xb6, 0x1b, 0x15, 0xe0, + 0x3a, 0x82, 0x4a, 0xdd, 0xb2, 0x5d, 0x8d, 0xfc, 0xe8, 0xc1, 0xbc, 0xb9, 0xdb, 0xe9, 0x34, 0xd0, + 0x03, 0xae, 0x3f, 0x6d, 0xf3, 0xdf, 0x3d, 0x63, 0xd1, 0xda, 0xdc, 0x74, 0x10, 0x59, 0x34, 0xc8, + 0x69, 0xf4, 0x4d, 0x39, 0x0e, 0xb9, 0x8e, 0xb1, 0x63, 0x90, 0x89, 0x46, 0x4e, 0x23, 0x2f, 0xca, + 0x8d, 0x50, 0x08, 0xe7, 0x38, 0x84, 0xd1, 0x53, 0x79, 0xdc, 0x34, 0xf7, 0xa5, 0x7b, 0x3a, 0x73, + 0x01, 0x5d, 0x72, 0x4e, 0x4d, 0xe0, 0xef, 0xf8, 0x99, 0x77, 0xc3, 0x14, 0xd9, 0xef, 0x20, 0x12, + 0x8f, 0x9e, 0xc1, 0xda, 0xa8, 0x65, 0xd9, 0x6d, 0x5f, 0x36, 0xd1, 0x13, 0x0c, 0x9a, 0x2f, 0xd9, + 0x2e, 0x45, 0xdf, 0xc2, 0xc7, 0xe0, 0x02, 0x91, 0xf7, 0xba, 0x4d, 0xaf, 0xe8, 0x73, 0x86, 0xbb, + 0xbd, 0x86, 0x5c, 0x5d, 0xfd, 0x7b, 0xb9, 0xaf, 0xc6, 0x4d, 0xff, 0x2f, 0x8d, 0x1b, 0xa0, 0x71, + 0x24, 0x4c, 0x80, 0xbb, 0x6b, 0x9b, 0x9e, 0x1c, 0x69, 0x44, 0x39, 0x26, 0x45, 0xb9, 0x03, 0xae, + 0x08, 0xdf, 0xfc, 0xa5, 0xd2, 0x45, 0x3a, 0x6d, 0x9d, 0xc2, 0xd9, 0xa3, 0x33, 0x28, 0xeb, 0x70, + 0x2d, 0xf9, 0xb8, 0xd2, 0x58, 0x5b, 0x5d, 0x31, 0xb6, 0xb6, 0x3b, 0xc6, 0xd6, 0xb6, 0xeb, 0x54, + 0x4c, 0xc7, 0x45, 0x7a, 0xbb, 0xb6, 0xa9, 0x91, 0xd0, 0xf4, 0x80, 0xe9, 0x88, 0x64, 0xe5, 0x3d, + 0x87, 0xc4, 0x46, 0x37, 0x56, 0x53, 0x22, 0x5a, 0xca, 0x93, 0xbc, 0x96, 0xe2, 0xec, 0x76, 0x02, + 0x4c, 0xaf, 0xea, 0xc1, 0x34, 0x54, 0xf5, 0xdd, 0x0e, 0x6e, 0x2e, 0x38, 0x73, 0xd2, 0x71, 0x2e, + 0x86, 0x93, 0xf4, 0x9b, 0xcd, 0xff, 0x97, 0x87, 0xdc, 0xb2, 0xad, 0x77, 0xb7, 0xd5, 0x67, 0x33, + 0xfd, 0xf3, 0xa8, 0xda, 0x44, 0xa0, 0x9d, 0xd2, 0x20, 0xed, 0x94, 0x07, 0x68, 0x67, 0x96, 0xd1, + 0xce, 0xe8, 0x45, 0xe5, 0x33, 0x30, 0xd3, 0xb2, 0x3a, 0x1d, 0xd4, 0xf2, 0xe4, 0x51, 0x69, 0xe3, + 0xd5, 0x9c, 0x29, 0x8d, 0x4b, 0xc3, 0x91, 0x22, 0x91, 0x5b, 0x27, 0x6b, 0xe8, 0x44, 0xe9, 0xc3, + 0x04, 0xf5, 0xe5, 0x12, 0x64, 0xcb, 0xed, 0x2d, 0xc4, 0xad, 0xb3, 0x67, 0x98, 0x75, 0xf6, 0x93, + 0x90, 0x77, 0x75, 0x7b, 0x0b, 0xb9, 0xfe, 0x3a, 0x01, 0x79, 0x0b, 0x02, 0x58, 0xca, 0x4c, 0x00, + 0xcb, 0x9f, 0x84, 0xac, 0x27, 0x33, 0x1a, 0x81, 0xe7, 0xda, 0x7e, 0xf0, 0x63, 0xd9, 0xcf, 0x7b, + 0x25, 0xce, 0x7b, 0xb5, 0xd6, 0xf0, 0x0f, 0xbd, 0x58, 0xe7, 0xf6, 0x61, 0x8d, 0x6f, 0xd9, 0x6a, + 0x59, 0x66, 0x65, 0x47, 0xdf, 0x42, 0xb4, 0x9a, 0x61, 0x82, 0xff, 0xb5, 0xbc, 0x63, 0xdd, 0x6f, + 0xd0, 0x58, 0x92, 0x61, 0x82, 0x57, 0x85, 0x6d, 0xa3, 0xdd, 0x46, 0x26, 0x6d, 0xd9, 0xf4, 0xed, + 0xcc, 0x69, 0xc8, 0x7a, 0x3c, 0x78, 0xfa, 0xe3, 0x19, 0x0b, 0x85, 0x23, 0xca, 0x8c, 0xd7, 0xac, + 0x48, 0xe3, 0x2d, 0x64, 0xf8, 0x35, 0x55, 0x11, 0xb7, 0x1d, 0x52, 0xb9, 0xfe, 0x8d, 0xeb, 0x71, + 0x90, 0x33, 0xad, 0x36, 0x1a, 0x38, 0x08, 0x91, 0x5c, 0xca, 0x13, 0x21, 0x87, 0xda, 0x5e, 0xaf, + 0x20, 0xe3, 0xec, 0xa7, 0xe3, 0x65, 0xa9, 0x91, 0xcc, 0xc9, 0x7c, 0x83, 0xfa, 0x71, 0x3b, 0x86, + 0xe8, 0xaf, 0x13, 0x70, 0x94, 0xf4, 0x01, 0xf5, 0xdd, 0xf3, 0x1e, 0xa9, 0xf3, 0x48, 0x7d, 0xb8, + 0xff, 0xc0, 0x75, 0x94, 0x57, 0xf6, 0xe3, 0x90, 0x73, 0x76, 0xcf, 0x07, 0x46, 0x28, 0x79, 0x61, + 0x9b, 0xae, 0x34, 0x92, 0xe1, 0x4c, 0x1e, 0x76, 0x38, 0xe3, 0x86, 0x26, 0xd9, 0x6f, 0xfc, 0xe1, + 0x40, 0x96, 0xc7, 0xc9, 0xfe, 0x40, 0xd6, 0x6f, 0x18, 0x3a, 0x05, 0x13, 0xfa, 0xa6, 0x8b, 0xec, + 0xd0, 0x4c, 0xa4, 0xaf, 0xde, 0x50, 0x79, 0x1e, 0x6d, 0x5a, 0xb6, 0x27, 0x96, 0x29, 0x32, 0x54, + 0xfa, 0xef, 0x4c, 0xcb, 0x05, 0x6e, 0x87, 0xec, 0x26, 0x38, 0x66, 0x5a, 0x8b, 0xa8, 0x4b, 0xe5, + 0x4c, 0x50, 0x9c, 0xc5, 0x2d, 0x60, 0xff, 0x87, 0x7d, 0x5d, 0xc9, 0xdc, 0xfe, 0xae, 0x44, 0xfd, + 0x4c, 0xd2, 0x39, 0x73, 0x0f, 0xd0, 0x23, 0xb3, 0xd0, 0x94, 0xa7, 0xc0, 0x4c, 0x9b, 0xba, 0x68, + 0xb5, 0x8c, 0xa0, 0x95, 0x44, 0xfe, 0xc7, 0x65, 0x0e, 0x15, 0x29, 0xcb, 0x2a, 0xd2, 0x32, 0x4c, + 0xe2, 0x03, 0x39, 0x9e, 0x26, 0xe5, 0x7a, 0x02, 0xe1, 0xe1, 0x69, 0x5d, 0x50, 0x29, 0x46, 0x6c, + 0xf3, 0x25, 0xfa, 0x8b, 0x16, 0xfc, 0x9c, 0x6c, 0xf6, 0x1d, 0x2f, 0xa1, 0xf4, 0x9b, 0xe3, 0x6f, + 0xe5, 0xe1, 0x8a, 0x92, 0x6d, 0x39, 0x0e, 0x8e, 0x42, 0xd1, 0xdb, 0x30, 0xdf, 0x24, 0x71, 0xa1, + 0xac, 0x1f, 0xd1, 0xcd, 0xaf, 0x5f, 0x83, 0x1a, 0x5f, 0xd3, 0xf8, 0xba, 0xf0, 0x51, 0xe6, 0x60, + 0xff, 0x21, 0x42, 0xe8, 0x3f, 0x1a, 0x8d, 0xe4, 0xdd, 0x19, 0x91, 0xd3, 0xd5, 0x09, 0x65, 0x95, + 0x7e, 0x73, 0xf9, 0x92, 0x04, 0x57, 0xf6, 0x72, 0xb3, 0x61, 0x3a, 0x41, 0x83, 0xb9, 0x7a, 0x40, + 0x7b, 0xe1, 0x4f, 0xe3, 0xc6, 0x5e, 0x22, 0x15, 0x51, 0x77, 0xa6, 0xb4, 0x88, 0xc5, 0x92, 0xf7, + 0x66, 0x44, 0x2e, 0x91, 0x4a, 0x4c, 0x3e, 0x7d, 0xe1, 0x7e, 0x36, 0x0b, 0x47, 0x97, 0x6d, 0x6b, + 0xb7, 0xeb, 0x84, 0x3d, 0xd0, 0xdf, 0xf4, 0xdf, 0x70, 0xcd, 0x8b, 0x98, 0x06, 0xd7, 0xc0, 0xb4, + 0x4d, 0xad, 0xb9, 0x70, 0xfb, 0x95, 0x4d, 0x62, 0x7b, 0x2f, 0xf9, 0x20, 0xbd, 0x57, 0xd8, 0xcf, + 0x64, 0xb9, 0x7e, 0xa6, 0xb7, 0xe7, 0xc8, 0xf5, 0xe9, 0x39, 0xfe, 0x5a, 0x4a, 0x38, 0xa8, 0xf6, + 0x88, 0x28, 0xa2, 0xbf, 0x28, 0x41, 0x7e, 0x0b, 0x67, 0xa4, 0xdd, 0xc5, 0x63, 0xc5, 0x6a, 0x86, + 0x89, 0x6b, 0xf4, 0xd7, 0x50, 0xae, 0x32, 0xab, 0xc3, 0x89, 0x06, 0xb8, 0x78, 0x6e, 0xd3, 0x57, + 0xaa, 0x87, 0xb2, 0x30, 0x13, 0x94, 0x5e, 0x69, 0x3b, 0xea, 0x0b, 0xfb, 0x6b, 0xd4, 0xac, 0x88, + 0x46, 0xed, 0x5b, 0x67, 0x0e, 0x46, 0x1d, 0x99, 0x19, 0x75, 0xfa, 0x8e, 0x2e, 0x33, 0x11, 0xa3, + 0x8b, 0xfa, 0x2c, 0x59, 0xf4, 0x32, 0x08, 0xbe, 0x6b, 0xc5, 0xb5, 0x79, 0x24, 0x0f, 0x16, 0x82, + 0x57, 0x52, 0x0c, 0xae, 0x55, 0xfa, 0x4a, 0xf2, 0x41, 0x09, 0x8e, 0xed, 0xef, 0xcc, 0x7f, 0x8c, + 0xf7, 0x42, 0xf3, 0xea, 0xe4, 0x04, 0x5e, 0x68, 0xf8, 0x8d, 0xdf, 0xa4, 0x8b, 0x3d, 0x1a, 0xcb, + 0xd9, 0x7b, 0x83, 0x3b, 0x71, 0xb1, 0xc3, 0xaf, 0x82, 0x44, 0xd3, 0x17, 0xe0, 0xaf, 0xca, 0x30, + 0x55, 0x47, 0xee, 0xaa, 0x7e, 0xc9, 0xda, 0x75, 0x55, 0x5d, 0x74, 0x7b, 0xee, 0xc9, 0x90, 0xef, + 0xe0, 0x5f, 0xe8, 0x1d, 0xbb, 0xd7, 0xf4, 0xdd, 0xdf, 0xc2, 0xbe, 0x3f, 0x84, 0xb4, 0x46, 0xf3, + 0xf3, 0x67, 0x92, 0x45, 0x76, 0x47, 0x03, 0xee, 0x46, 0xb2, 0xb5, 0x93, 0x68, 0xef, 0x34, 0xaa, + 0xe8, 0xf4, 0x61, 0x79, 0x8e, 0x0c, 0xb3, 0x75, 0xe4, 0x56, 0x9c, 0x25, 0x7d, 0xcf, 0xb2, 0x0d, + 0x17, 0xb1, 0x97, 0x6c, 0xc5, 0x43, 0x73, 0x1a, 0xc0, 0x08, 0x7e, 0xa3, 0x91, 0x12, 0x98, 0x14, + 0xf5, 0x37, 0x93, 0x3a, 0x0a, 0x71, 0x7c, 0x8c, 0x04, 0x84, 0x44, 0x3e, 0x16, 0x71, 0xc5, 0xa7, + 0x0f, 0xc4, 0x17, 0x25, 0x0a, 0x44, 0xd1, 0x6e, 0x6d, 0x1b, 0x7b, 0xa8, 0x9d, 0x10, 0x08, 0xff, + 0xb7, 0x10, 0x88, 0x80, 0x50, 0x62, 0xf7, 0x15, 0x8e, 0x8f, 0x51, 0xb8, 0xaf, 0xc4, 0x11, 0x1c, + 0x4b, 0xb0, 0x03, 0xaf, 0xeb, 0xa1, 0xeb, 0x99, 0x77, 0x89, 0x8a, 0x35, 0x34, 0xd9, 0x24, 0xd6, + 0x64, 0x1b, 0xaa, 0x63, 0x21, 0x65, 0x0f, 0xd2, 0xe9, 0x6c, 0x1a, 0x1d, 0x4b, 0xdf, 0xa2, 0xd3, + 0x17, 0xfa, 0x7b, 0x65, 0x38, 0x11, 0x9c, 0x02, 0xae, 0x23, 0x77, 0x51, 0x77, 0xb6, 0xcf, 0x5b, + 0xba, 0xdd, 0x66, 0xef, 0x5e, 0x1e, 0xfa, 0xc4, 0x9f, 0xfa, 0x05, 0x16, 0x84, 0x2a, 0x0f, 0x42, + 0x5f, 0x57, 0xd1, 0xbe, 0xbc, 0x8c, 0xa2, 0x93, 0x89, 0xf5, 0x66, 0xfd, 0xed, 0x00, 0xac, 0xa7, + 0x71, 0x60, 0xdd, 0x39, 0x2c, 0x8b, 0xe9, 0x03, 0xf7, 0x32, 0x32, 0x22, 0x30, 0x5e, 0xcd, 0xf7, + 0x89, 0x02, 0x16, 0xe1, 0xd5, 0x2a, 0x47, 0x7a, 0xb5, 0x0e, 0x35, 0x46, 0x0c, 0xf4, 0x48, 0x4e, + 0x77, 0x8c, 0x38, 0x44, 0x6f, 0xe3, 0x77, 0xca, 0x50, 0xc0, 0x61, 0x20, 0x18, 0x8f, 0x6f, 0xf5, + 0x7e, 0x51, 0x74, 0xf6, 0x79, 0x97, 0x4f, 0x24, 0xf5, 0x2e, 0x57, 0xdf, 0x91, 0xd4, 0x87, 0xbc, + 0x97, 0xdb, 0x91, 0x20, 0x96, 0xc8, 0x45, 0x7c, 0x00, 0x07, 0xe9, 0x83, 0xf6, 0x4b, 0x32, 0x80, + 0xd7, 0xa0, 0xe9, 0xd9, 0x87, 0xa7, 0x8b, 0xc2, 0x75, 0x33, 0xeb, 0x57, 0xef, 0x01, 0x75, 0xa2, + 0x07, 0x28, 0x42, 0x31, 0x3c, 0x55, 0xf1, 0x70, 0x52, 0xdf, 0xca, 0x90, 0xab, 0x91, 0xc0, 0x92, + 0xc8, 0xdb, 0x32, 0xb2, 0xec, 0xf4, 0x01, 0xf9, 0xef, 0x12, 0xe4, 0x1a, 0x56, 0x1d, 0xb9, 0x07, + 0x37, 0x05, 0x12, 0x1f, 0xdb, 0xc7, 0xe5, 0x8e, 0xe2, 0xd8, 0x7e, 0x3f, 0x42, 0xe9, 0x8b, 0xee, + 0x3d, 0x12, 0xcc, 0x34, 0xac, 0x52, 0xb0, 0x38, 0x25, 0xee, 0xab, 0x2a, 0x7e, 0xa1, 0x65, 0x50, + 0xc1, 0xb0, 0x98, 0x03, 0x5d, 0x68, 0x39, 0x98, 0x5e, 0xfa, 0x72, 0xbb, 0x0d, 0x8e, 0x6e, 0x98, + 0x6d, 0x4b, 0x43, 0x6d, 0x8b, 0xae, 0x74, 0x2b, 0x0a, 0x64, 0x77, 0xcd, 0xb6, 0x85, 0x59, 0xce, + 0x69, 0xf8, 0xd9, 0x4b, 0xb3, 0x51, 0xdb, 0xa2, 0xbe, 0x01, 0xf8, 0x59, 0xfd, 0xba, 0x0c, 0x59, + 0xef, 0x5f, 0x71, 0x51, 0xbf, 0x53, 0x4e, 0x18, 0x88, 0xc0, 0x23, 0x3f, 0x12, 0x4b, 0xe8, 0x2e, + 0x66, 0xed, 0x9f, 0x78, 0xb0, 0x5e, 0x1b, 0x55, 0x1e, 0x23, 0x8a, 0x70, 0xcd, 0x5f, 0x39, 0x05, + 0x13, 0xe7, 0x3b, 0x56, 0xeb, 0x42, 0x78, 0x5e, 0x9e, 0xbe, 0x2a, 0x37, 0x42, 0xce, 0xd6, 0xcd, + 0x2d, 0x44, 0xf7, 0x14, 0x8e, 0xf7, 0xf4, 0x85, 0xd8, 0xeb, 0x45, 0x23, 0x59, 0xd4, 0x77, 0x24, + 0x09, 0x81, 0xd0, 0xa7, 0xf2, 0xc9, 0xf4, 0x61, 0x71, 0x88, 0x93, 0x65, 0x05, 0x98, 0x29, 0x15, + 0xc9, 0xd5, 0xb1, 0x6b, 0xb5, 0xb3, 0xe5, 0x82, 0x8c, 0x61, 0xf6, 0x64, 0x92, 0x22, 0xcc, 0x1e, + 0xf9, 0x1f, 0x59, 0x98, 0xfb, 0x54, 0xfe, 0x30, 0x60, 0xfe, 0x94, 0x04, 0xb3, 0xab, 0x86, 0xe3, + 0x46, 0x79, 0xfb, 0xc7, 0x44, 0x81, 0x7b, 0x51, 0x52, 0x53, 0x99, 0x2b, 0x47, 0x38, 0xfc, 0x5b, + 0x22, 0x73, 0x38, 0xae, 0x88, 0xf1, 0x1c, 0x4b, 0xc1, 0x1c, 0x90, 0xeb, 0x1e, 0x85, 0x25, 0x99, + 0xd8, 0x50, 0x0a, 0x0b, 0x19, 0xbf, 0xa1, 0x14, 0x59, 0x76, 0xfa, 0xf2, 0xfd, 0xba, 0x04, 0xc7, + 0xbc, 0xe2, 0xe3, 0x96, 0xa5, 0xa2, 0xc5, 0x3c, 0x70, 0x59, 0x2a, 0xf1, 0xca, 0xf8, 0x3e, 0x5e, + 0x46, 0xb1, 0x32, 0x3e, 0x88, 0xe8, 0x98, 0xc5, 0x1c, 0xb1, 0x0c, 0x3b, 0x48, 0xcc, 0x31, 0xcb, + 0xb0, 0xc3, 0x8b, 0x39, 0x7e, 0x29, 0x76, 0x48, 0x31, 0x1f, 0xda, 0x02, 0xeb, 0x6f, 0xc8, 0x81, + 0x98, 0x23, 0xd7, 0x36, 0x62, 0xc4, 0x9c, 0xf8, 0xc4, 0xae, 0xfa, 0xae, 0x21, 0x05, 0x3f, 0xe2, + 0xf5, 0x8d, 0x61, 0x60, 0x3a, 0xc4, 0x35, 0x8e, 0x57, 0xc8, 0x30, 0x47, 0xb9, 0xe8, 0x3f, 0x65, + 0x8e, 0xc1, 0x28, 0xf1, 0x94, 0x39, 0xf1, 0x19, 0x20, 0x9e, 0xb3, 0xf1, 0x9f, 0x01, 0x8a, 0x2d, + 0x3f, 0x7d, 0x70, 0xbe, 0x91, 0x85, 0x93, 0x1e, 0x0b, 0x6b, 0x56, 0xdb, 0xd8, 0xbc, 0x44, 0xb8, + 0x38, 0xab, 0x77, 0x76, 0x91, 0xa3, 0xbe, 0x5f, 0x12, 0x45, 0xe9, 0x3f, 0x01, 0x58, 0x5d, 0x64, + 0x93, 0x40, 0x6a, 0x14, 0xa8, 0x3b, 0xa2, 0x2a, 0xbb, 0xbf, 0xa4, 0x20, 0x28, 0x7a, 0xcd, 0x27, + 0xa2, 0x31, 0xf4, 0x3c, 0xab, 0x70, 0x2a, 0xf8, 0xd2, 0xeb, 0xe0, 0x91, 0xd9, 0xef, 0xe0, 0x71, + 0x03, 0xc8, 0x7a, 0xbb, 0x1d, 0x40, 0xd5, 0xbb, 0x99, 0x8d, 0xcb, 0xd4, 0xbc, 0x2c, 0x5e, 0x4e, + 0x07, 0x85, 0x47, 0xf3, 0x22, 0x72, 0x3a, 0xc8, 0x55, 0xe6, 0x21, 0x4f, 0x6e, 0x10, 0x0c, 0x56, + 0xf4, 0xfb, 0x67, 0xa6, 0xb9, 0x78, 0xd3, 0xae, 0xc6, 0xab, 0xe1, 0x6d, 0x89, 0x24, 0xd3, 0xaf, + 0x9f, 0x0e, 0xed, 0x64, 0x8d, 0x53, 0xb0, 0xa7, 0x0e, 0x4d, 0x79, 0x3c, 0xbb, 0x61, 0xc5, 0x6e, + 0xb7, 0x73, 0xa9, 0x41, 0x83, 0xaf, 0x24, 0xda, 0x0d, 0x63, 0x62, 0xb8, 0x48, 0xbd, 0x31, 0x5c, + 0x92, 0xef, 0x86, 0x71, 0x7c, 0x8c, 0x62, 0x37, 0x2c, 0x8e, 0xe0, 0x18, 0xd6, 0x23, 0x73, 0xc4, + 0x6a, 0xa6, 0x31, 0x6a, 0xdf, 0xdc, 0xff, 0x10, 0x1a, 0xf0, 0xce, 0x2e, 0xfd, 0xc2, 0xd7, 0xc6, + 0xc6, 0xe6, 0x56, 0x9e, 0x08, 0xf9, 0x4d, 0xcb, 0xde, 0xd1, 0xfd, 0x8d, 0xfb, 0xde, 0x93, 0x22, + 0x34, 0x2e, 0xec, 0x12, 0xce, 0xa3, 0xd1, 0xbc, 0xde, 0x7c, 0xe4, 0x99, 0x46, 0x97, 0x46, 0x5d, + 0xf4, 0x1e, 0x95, 0xeb, 0x60, 0x96, 0x06, 0x5f, 0xac, 0x22, 0xc7, 0x45, 0x6d, 0x1a, 0xb1, 0x82, + 0x4f, 0x54, 0xce, 0xc0, 0x0c, 0x4d, 0x58, 0x32, 0x3a, 0xc8, 0xa1, 0x41, 0x2b, 0xb8, 0x34, 0xe5, + 0x24, 0xe4, 0x0d, 0xe7, 0x1e, 0xc7, 0x32, 0xb1, 0xff, 0xff, 0xa4, 0x46, 0xdf, 0x94, 0x1b, 0xe0, + 0x28, 0xcd, 0x17, 0x18, 0xab, 0xe4, 0xc0, 0x4e, 0x6f, 0xb2, 0xfa, 0xb9, 0x61, 0x26, 0x0e, 0x89, + 0xe3, 0xf1, 0x7a, 0x28, 0xec, 0xb6, 0x5a, 0x08, 0xb5, 0xe9, 0xc9, 0x26, 0xff, 0x35, 0x61, 0xa4, + 0xde, 0xc4, 0xd3, 0x8c, 0x43, 0x0a, 0xd5, 0xfb, 0x91, 0x13, 0x90, 0x27, 0xd7, 0x5e, 0xa8, 0x2f, + 0x9d, 0xeb, 0xab, 0x8c, 0x73, 0xbc, 0x32, 0x6e, 0xc0, 0x8c, 0x69, 0x79, 0xc5, 0xad, 0xeb, 0xb6, + 0xbe, 0xe3, 0xc4, 0xad, 0x22, 0x12, 0xba, 0xc1, 0x90, 0x51, 0x65, 0x7e, 0x5b, 0x39, 0xa2, 0x71, + 0x64, 0x94, 0xff, 0x0d, 0x8e, 0x9e, 0xa7, 0x11, 0x00, 0x1c, 0x4a, 0x59, 0x8a, 0xf6, 0xb1, 0xeb, + 0xa1, 0xbc, 0xc0, 0xff, 0xb9, 0x72, 0x44, 0xeb, 0x25, 0xa6, 0xfc, 0x34, 0xcc, 0x79, 0xaf, 0x6d, + 0xeb, 0xa2, 0xcf, 0xb8, 0x1c, 0x6d, 0x68, 0xf4, 0x90, 0x5f, 0xe3, 0x7e, 0x5c, 0x39, 0xa2, 0xf5, + 0x90, 0x52, 0x6a, 0x00, 0xdb, 0xee, 0x4e, 0x87, 0x12, 0xce, 0x46, 0xab, 0x64, 0x0f, 0xe1, 0x95, + 0xe0, 0xa7, 0x95, 0x23, 0x1a, 0x43, 0x42, 0x59, 0x85, 0x29, 0xf7, 0x01, 0x97, 0xd2, 0xcb, 0x45, + 0x6f, 0x6e, 0xf7, 0xd0, 0x6b, 0xf8, 0xff, 0xac, 0x1c, 0xd1, 0x42, 0x02, 0x4a, 0x05, 0x26, 0xbb, + 0xe7, 0x29, 0xb1, 0x7c, 0x9f, 0x3b, 0xe4, 0xfb, 0x13, 0x5b, 0x3f, 0x1f, 0xd0, 0x0a, 0x7e, 0xf7, + 0x18, 0x6b, 0x39, 0x7b, 0x94, 0xd6, 0x84, 0x30, 0x63, 0x25, 0xff, 0x1f, 0x8f, 0xb1, 0x80, 0x80, + 0x52, 0x81, 0x29, 0xc7, 0xd4, 0xbb, 0xce, 0xb6, 0xe5, 0x3a, 0xa7, 0x26, 0x7b, 0xfc, 0x20, 0xa3, + 0xa9, 0xd5, 0xe9, 0x3f, 0x5a, 0xf8, 0xb7, 0xf2, 0x44, 0x38, 0xb1, 0x8b, 0xaf, 0x0f, 0x2d, 0x3f, + 0x60, 0x38, 0xae, 0x61, 0x6e, 0xf9, 0x31, 0x64, 0x49, 0x6f, 0xd2, 0xff, 0xa3, 0x32, 0x4f, 0x4f, + 0x44, 0x01, 0x6e, 0x9b, 0x6a, 0xef, 0x66, 0x1c, 0x29, 0x96, 0x39, 0x08, 0xf5, 0x14, 0xc8, 0x7a, + 0x9f, 0xf0, 0x99, 0xcd, 0xb9, 0xfe, 0x0b, 0x7d, 0xbd, 0xba, 0x83, 0x1b, 0xb0, 0xf7, 0x93, 0x37, + 0x36, 0x9a, 0xd6, 0xba, 0x6d, 0x6d, 0xd9, 0xc8, 0x71, 0xa8, 0xc3, 0x21, 0x93, 0xe2, 0x35, 0x70, + 0xc3, 0x21, 0xf7, 0xc4, 0x87, 0xfe, 0xee, 0x6c, 0x12, 0x99, 0x6d, 0x56, 0xd1, 0x45, 0xec, 0x10, + 0x8c, 0xcf, 0xdf, 0xe0, 0xd9, 0xa6, 0x9f, 0xa2, 0x5e, 0x0f, 0x33, 0x6c, 0x23, 0x23, 0x77, 0x67, + 0x19, 0xa1, 0xed, 0x45, 0xdf, 0xd4, 0xeb, 0x60, 0x8e, 0xd7, 0x69, 0x66, 0x88, 0x91, 0xfd, 0xae, + 0x50, 0xbd, 0x16, 0x8e, 0xf6, 0x34, 0x2c, 0x3f, 0xa6, 0x48, 0x26, 0x8c, 0x29, 0x72, 0x0d, 0x40, + 0xa8, 0xc5, 0x7d, 0xc9, 0x5c, 0x0d, 0x53, 0x81, 0x5e, 0xf6, 0xcd, 0xf0, 0xd5, 0x0c, 0x4c, 0xfa, + 0xca, 0xd6, 0x2f, 0x83, 0x37, 0xbe, 0x98, 0xcc, 0x06, 0x02, 0x9d, 0x66, 0x73, 0x69, 0xde, 0x38, + 0x12, 0xba, 0xed, 0x36, 0x0c, 0xb7, 0xe3, 0x1f, 0x7d, 0xeb, 0x4d, 0x56, 0xd6, 0x01, 0x0c, 0x8c, + 0x51, 0x23, 0x3c, 0x0b, 0x77, 0x4b, 0x82, 0xf6, 0x40, 0xf4, 0x81, 0xa1, 0x71, 0xe6, 0xc7, 0xe8, + 0x41, 0xb5, 0x29, 0xc8, 0xd5, 0xd7, 0x8b, 0xa5, 0x72, 0xe1, 0x88, 0x32, 0x07, 0x50, 0x7e, 0xfa, + 0x7a, 0x59, 0xab, 0x94, 0xab, 0xa5, 0x72, 0x21, 0xa3, 0xbe, 0x52, 0x82, 0xa9, 0xa0, 0x11, 0xf4, + 0xad, 0x64, 0x99, 0xaa, 0xd6, 0xc0, 0xeb, 0x89, 0xf6, 0x37, 0x2a, 0x56, 0xc9, 0x9e, 0x0c, 0x97, + 0xef, 0x3a, 0x68, 0xc9, 0xb0, 0x1d, 0x57, 0xb3, 0x2e, 0x2e, 0x59, 0x76, 0x10, 0x35, 0xd9, 0xbf, + 0xa6, 0x3f, 0xe2, 0xb3, 0x67, 0x51, 0xb4, 0x11, 0x3e, 0x14, 0x85, 0x6c, 0xba, 0x32, 0x1c, 0x26, + 0x78, 0x74, 0x5d, 0x72, 0x2f, 0xbe, 0x83, 0x34, 0xeb, 0xa2, 0x53, 0x34, 0xdb, 0x25, 0xab, 0xb3, + 0xbb, 0x63, 0x3a, 0xd4, 0x26, 0x88, 0xfa, 0xec, 0x49, 0x07, 0x5f, 0x3e, 0x36, 0x07, 0x50, 0xaa, + 0xad, 0xae, 0x96, 0x4b, 0x8d, 0x4a, 0xad, 0x5a, 0x38, 0xe2, 0x49, 0xab, 0x51, 0x5c, 0x58, 0xf5, + 0xa4, 0xf3, 0x33, 0x30, 0xe9, 0xb7, 0x69, 0x1a, 0x06, 0x25, 0xe3, 0x87, 0x41, 0x51, 0x8a, 0x30, + 0xe9, 0xb7, 0x72, 0x3a, 0x22, 0x3c, 0xba, 0xf7, 0xd8, 0xeb, 0x8e, 0x6e, 0xbb, 0xd8, 0x5f, 0xda, + 0x27, 0xb2, 0xa0, 0x3b, 0x48, 0x0b, 0x7e, 0x3b, 0xf3, 0x38, 0xca, 0x81, 0x02, 0x73, 0xc5, 0xd5, + 0xd5, 0x66, 0x4d, 0x6b, 0x56, 0x6b, 0x8d, 0x95, 0x4a, 0x75, 0x99, 0x8c, 0x90, 0x95, 0xe5, 0x6a, + 0x4d, 0x2b, 0x93, 0x01, 0xb2, 0x5e, 0xc8, 0x90, 0xcb, 0xef, 0x16, 0x26, 0x21, 0xdf, 0xc5, 0xd2, + 0x55, 0xbf, 0x24, 0x27, 0x3c, 0xef, 0x1e, 0xe0, 0x14, 0x71, 0x3d, 0x17, 0xe7, 0x73, 0x2e, 0xf5, + 0x39, 0x13, 0x7a, 0x06, 0x66, 0x88, 0x2d, 0xe7, 0xe0, 0xe5, 0x7b, 0x7a, 0xc3, 0x2d, 0x97, 0xa6, + 0x7e, 0x4c, 0x4a, 0x70, 0x08, 0xbe, 0x2f, 0x47, 0xc9, 0x8c, 0x8b, 0x3f, 0x1f, 0xe6, 0xb2, 0x3b, + 0x05, 0xe6, 0x2a, 0xd5, 0x46, 0x59, 0xab, 0x16, 0x57, 0x69, 0x16, 0x59, 0x39, 0x05, 0xc7, 0xab, + 0x35, 0x1a, 0xd3, 0xaf, 0x8e, 0xaf, 0xd5, 0x5e, 0x5b, 0xaf, 0x69, 0x8d, 0x42, 0x4e, 0x39, 0x09, + 0x0a, 0x79, 0xe6, 0x6e, 0xad, 0xcf, 0x2b, 0x8f, 0x81, 0x6b, 0x57, 0x2b, 0x6b, 0x95, 0x46, 0xb3, + 0xb6, 0xd4, 0xd4, 0x6a, 0xe7, 0xea, 0x1e, 0x82, 0x5a, 0x79, 0xb5, 0xe8, 0x29, 0x12, 0x73, 0x09, + 0xde, 0x84, 0x72, 0x19, 0x1c, 0xc5, 0x17, 0x5c, 0xe2, 0x9b, 0xef, 0x49, 0x79, 0x93, 0xca, 0x55, + 0x70, 0xaa, 0x52, 0xad, 0x6f, 0x2c, 0x2d, 0x55, 0x4a, 0x95, 0x72, 0xb5, 0xd1, 0x5c, 0x2f, 0x6b, + 0x6b, 0x95, 0x7a, 0xdd, 0xfb, 0xb7, 0x30, 0x85, 0xaf, 0x18, 0x23, 0x7d, 0xa6, 0xfa, 0x3e, 0x19, + 0x66, 0xcf, 0xea, 0x1d, 0xc3, 0x1b, 0x28, 0xf0, 0xdd, 0x83, 0x3d, 0xc7, 0x45, 0x5c, 0x7c, 0x47, + 0x21, 0x75, 0x38, 0xc7, 0x2f, 0xea, 0xcf, 0xcb, 0x09, 0x8f, 0x8b, 0x50, 0x20, 0x48, 0x89, 0xf3, + 0x5c, 0x69, 0x11, 0x93, 0x9b, 0xd7, 0x4b, 0x09, 0x8e, 0x8b, 0x88, 0x93, 0x4f, 0x06, 0xfe, 0xab, + 0x46, 0x05, 0x7e, 0x01, 0x66, 0x36, 0xaa, 0xc5, 0x8d, 0xc6, 0x4a, 0x4d, 0xab, 0xfc, 0x14, 0x8e, + 0x36, 0x3e, 0x0b, 0x53, 0x4b, 0x35, 0x6d, 0xa1, 0xb2, 0xb8, 0x58, 0xae, 0x16, 0x72, 0xca, 0xe5, + 0x70, 0x59, 0xbd, 0xac, 0x9d, 0xad, 0x94, 0xca, 0xcd, 0x8d, 0x6a, 0xf1, 0x6c, 0xb1, 0xb2, 0x8a, + 0xfb, 0x88, 0x7c, 0xcc, 0xbd, 0x89, 0x13, 0xea, 0xcf, 0x66, 0x01, 0x48, 0xd5, 0x3d, 0x4b, 0x9a, + 0xbd, 0x5d, 0xef, 0x2f, 0x92, 0x4e, 0x1a, 0x42, 0x32, 0x11, 0xed, 0xb7, 0x02, 0x93, 0x36, 0xfd, + 0x40, 0x97, 0x4f, 0x06, 0xd1, 0x21, 0x8f, 0x3e, 0x35, 0x2d, 0xf8, 0x5d, 0x7d, 0x7f, 0x92, 0x39, + 0x42, 0x24, 0x63, 0xc9, 0x90, 0x5c, 0x1a, 0x0d, 0x90, 0xea, 0x0b, 0x33, 0x30, 0xc7, 0x57, 0xcc, + 0xab, 0x04, 0x36, 0xa6, 0xc4, 0x2a, 0xc1, 0xff, 0xcc, 0x18, 0x59, 0x67, 0x9e, 0x40, 0x87, 0x53, + 0xf0, 0x5b, 0x26, 0x39, 0xf9, 0xed, 0x5b, 0x2c, 0x85, 0x8c, 0xc7, 0xbc, 0x67, 0x74, 0x90, 0xab, + 0xd5, 0x1b, 0x0f, 0xb8, 0x05, 0x59, 0xfd, 0xaa, 0x0c, 0xb3, 0xdc, 0xf5, 0x7d, 0xea, 0xeb, 0x33, + 0x22, 0x57, 0x6b, 0x31, 0x17, 0x03, 0x66, 0x0e, 0x7a, 0x31, 0xe0, 0x99, 0x9b, 0x61, 0x82, 0xa6, + 0x61, 0xf9, 0xd6, 0xaa, 0x9e, 0x29, 0x70, 0x14, 0xa6, 0x97, 0xcb, 0x8d, 0x66, 0xbd, 0x51, 0xd4, + 0x1a, 0xe5, 0xc5, 0x42, 0xc6, 0x1b, 0xf8, 0xca, 0x6b, 0xeb, 0x8d, 0xfb, 0x0a, 0x52, 0x72, 0x0f, + 0xbc, 0x5e, 0x46, 0xc6, 0xec, 0x81, 0x17, 0x57, 0x7c, 0xfa, 0x73, 0xd5, 0xcf, 0xc8, 0x50, 0x20, + 0x1c, 0x94, 0x1f, 0xe8, 0x22, 0xdb, 0x40, 0x66, 0x0b, 0xa9, 0x17, 0x44, 0x22, 0x7e, 0xee, 0x8b, + 0x85, 0x87, 0xfb, 0x73, 0xc6, 0x4a, 0x24, 0x2f, 0x3d, 0x06, 0x76, 0x76, 0x9f, 0x81, 0xfd, 0xe9, + 0xa4, 0x2e, 0x78, 0xbd, 0xec, 0x8e, 0x04, 0xb2, 0x4f, 0x26, 0x71, 0xc1, 0x1b, 0xc0, 0xc1, 0x58, + 0x02, 0xf9, 0x46, 0x8c, 0xbf, 0x05, 0x59, 0x7d, 0x81, 0x0c, 0x47, 0x17, 0x75, 0x17, 0x2d, 0x5c, + 0x6a, 0x18, 0x3b, 0xc8, 0x71, 0xf5, 0x9d, 0x6e, 0xc4, 0x95, 0x78, 0x99, 0x7d, 0x57, 0xe2, 0xb9, + 0xfe, 0x1f, 0x98, 0x53, 0x59, 0x0b, 0x13, 0xd4, 0x77, 0x27, 0x3d, 0xb4, 0xd7, 0xc3, 0xc3, 0xc8, + 0xa2, 0xed, 0x26, 0x3b, 0x8c, 0x17, 0xcf, 0xc5, 0x18, 0x6e, 0xa8, 0x9d, 0x82, 0x02, 0x61, 0x85, + 0xf1, 0x32, 0xfb, 0x55, 0x7a, 0x8b, 0x64, 0x33, 0x41, 0x50, 0x3f, 0x3f, 0x4c, 0x82, 0xc4, 0x87, + 0x49, 0xe0, 0x16, 0x2d, 0xe5, 0x5e, 0xcf, 0x80, 0xa4, 0x9d, 0x21, 0xe3, 0x52, 0x16, 0x1d, 0x47, + 0x35, 0xbd, 0xce, 0x30, 0xb6, 0xf8, 0xf1, 0xdc, 0x74, 0x46, 0xef, 0x32, 0x2c, 0x8b, 0x22, 0x13, + 0x7f, 0xa1, 0x63, 0x52, 0xff, 0x62, 0xce, 0xa5, 0x2f, 0xe6, 0x96, 0xc3, 0xf4, 0xfc, 0x8b, 0x07, + 0x71, 0x90, 0x3e, 0x0a, 0xdf, 0x97, 0x20, 0x5b, 0xb7, 0x6c, 0x77, 0x54, 0x18, 0x24, 0xdd, 0x13, + 0x65, 0x24, 0x50, 0x8f, 0x9e, 0x73, 0xa6, 0xb7, 0x27, 0x1a, 0x5f, 0xfe, 0x18, 0xe2, 0x22, 0x1e, + 0x85, 0x39, 0xc2, 0x49, 0x70, 0x69, 0xc8, 0xbf, 0x4b, 0xa4, 0xbf, 0xba, 0x57, 0x14, 0x91, 0x33, + 0x30, 0xc3, 0xec, 0x49, 0x06, 0x17, 0x66, 0xb3, 0x69, 0xea, 0x9b, 0x58, 0x5c, 0x16, 0x79, 0x5c, + 0xfa, 0xcd, 0xb8, 0x83, 0x7b, 0x37, 0x46, 0xd5, 0x33, 0x25, 0x09, 0xb1, 0x18, 0x53, 0x78, 0xfa, + 0x88, 0x3c, 0x28, 0x43, 0x9e, 0xfa, 0x84, 0x8d, 0x14, 0x81, 0xa4, 0x2d, 0x23, 0x10, 0x82, 0x98, + 0xef, 0x98, 0x3c, 0xea, 0x96, 0x11, 0x5f, 0x7e, 0xfa, 0x38, 0xfc, 0x80, 0x3a, 0x3b, 0x16, 0xf7, + 0x74, 0xa3, 0xa3, 0x9f, 0xef, 0x24, 0x08, 0x6d, 0xfc, 0xb1, 0x84, 0xc7, 0xbb, 0x82, 0xaa, 0x72, + 0xe5, 0x45, 0x48, 0xfc, 0x27, 0x60, 0xca, 0x0e, 0x96, 0x24, 0xfd, 0xd3, 0xef, 0x3d, 0x8e, 0xa6, + 0xf4, 0xbb, 0x16, 0xe6, 0x4c, 0x74, 0x96, 0x4b, 0x88, 0x9f, 0xb1, 0x9c, 0x3d, 0x99, 0x2e, 0xb6, + 0xdb, 0x4b, 0x48, 0x77, 0x77, 0x6d, 0xd4, 0x4e, 0x34, 0x44, 0xf0, 0x22, 0x9a, 0x62, 0x25, 0xc1, + 0x05, 0x17, 0x5c, 0xe5, 0xd1, 0x79, 0xd2, 0x80, 0xde, 0xc0, 0xe7, 0x65, 0x24, 0x5d, 0xd2, 0xdb, + 0x02, 0x48, 0x6a, 0x1c, 0x24, 0x4f, 0x19, 0x8e, 0x89, 0xf4, 0x01, 0xf9, 0x75, 0x19, 0xe6, 0x88, + 0x9d, 0x30, 0x6a, 0x4c, 0x7e, 0x2f, 0xa1, 0x0f, 0x09, 0x73, 0x2d, 0x13, 0xcb, 0xce, 0x48, 0x60, + 0x49, 0xe2, 0x71, 0x22, 0xc6, 0x47, 0xfa, 0xc8, 0x7c, 0x2e, 0x0f, 0xc0, 0xf8, 0x05, 0x7e, 0x2c, + 0x1f, 0x06, 0xfa, 0x53, 0xdf, 0x41, 0xe7, 0x1f, 0x75, 0x2e, 0xea, 0x34, 0xe3, 0xf3, 0x17, 0x6c, + 0x48, 0xf1, 0x89, 0x42, 0xa3, 0xca, 0x9f, 0x27, 0xb4, 0x79, 0xa9, 0x57, 0xde, 0xc0, 0xc1, 0x7d, + 0xc8, 0x5e, 0xee, 0xe3, 0x09, 0x8c, 0xdf, 0x41, 0xac, 0x24, 0x43, 0x6d, 0x75, 0x88, 0x99, 0xfd, + 0x29, 0x38, 0xae, 0x95, 0x8b, 0x8b, 0xb5, 0xea, 0xea, 0x7d, 0xec, 0x1d, 0x3d, 0x05, 0x99, 0x9d, + 0x9c, 0xa4, 0x02, 0xdb, 0x1b, 0x12, 0xf6, 0x81, 0xbc, 0xac, 0xe2, 0x66, 0x2b, 0xcc, 0xe2, 0xca, + 0xe0, 0x5e, 0x4d, 0x80, 0xec, 0x61, 0xa2, 0xf0, 0x20, 0x30, 0xcd, 0xe8, 0xf9, 0x32, 0x14, 0xc2, + 0x6b, 0xe2, 0xe9, 0x65, 0x6c, 0x35, 0xde, 0x6d, 0xb0, 0x4b, 0xf6, 0x9f, 0x42, 0xb7, 0x41, 0x3f, + 0x41, 0xb9, 0x1e, 0xe6, 0x5a, 0xdb, 0xa8, 0x75, 0xa1, 0x62, 0xfa, 0xfb, 0xea, 0x64, 0x13, 0xb6, + 0x27, 0x95, 0x07, 0xe6, 0x5e, 0x1e, 0x18, 0x7e, 0x12, 0xcd, 0x0d, 0xd2, 0x2c, 0x53, 0x11, 0xb8, + 0xfc, 0x61, 0x80, 0x4b, 0x95, 0xc3, 0xe5, 0xf6, 0xa1, 0xa8, 0x26, 0x83, 0xa5, 0x3a, 0x04, 0x2c, + 0x2a, 0x9c, 0xac, 0xad, 0x37, 0x2a, 0xb5, 0x6a, 0x73, 0xa3, 0x5e, 0x5e, 0x6c, 0x2e, 0xf8, 0xe0, + 0xd4, 0x0b, 0xb2, 0xfa, 0x4d, 0x09, 0x26, 0x08, 0x5b, 0x4e, 0xcf, 0xb5, 0xee, 0xf1, 0xfe, 0x92, + 0xea, 0xdb, 0x85, 0xa3, 0x1f, 0x04, 0x82, 0xa0, 0xe5, 0x44, 0xf4, 0x53, 0x4f, 0x86, 0x09, 0x02, + 0xb2, 0xbf, 0xa2, 0x75, 0x3a, 0xa2, 0x97, 0xa2, 0x64, 0x34, 0x3f, 0xbb, 0x60, 0x24, 0x84, 0x01, + 0x6c, 0xa4, 0x3f, 0xb2, 0x3c, 0x2b, 0x4b, 0xcc, 0xe0, 0x73, 0x86, 0xbb, 0x8d, 0xdd, 0x29, 0xd5, + 0xa7, 0x89, 0x2c, 0x2f, 0xde, 0x04, 0xb9, 0x3d, 0x2f, 0xf7, 0x00, 0xd7, 0x54, 0x92, 0x49, 0x7d, + 0x95, 0x70, 0xe0, 0x4d, 0x4e, 0x3f, 0x03, 0x9e, 0x22, 0xc0, 0x59, 0x83, 0x6c, 0xc7, 0x70, 0x5c, + 0x3a, 0x7e, 0xdc, 0x96, 0x88, 0x90, 0xff, 0x50, 0x71, 0xd1, 0x8e, 0x86, 0xc9, 0xa8, 0xf7, 0xc0, + 0x0c, 0x9b, 0x2a, 0xe0, 0x9e, 0x7b, 0x0a, 0x26, 0xe8, 0xb1, 0x31, 0xba, 0xc4, 0xea, 0xbf, 0x0a, + 0x2e, 0x6b, 0x0a, 0xd5, 0x36, 0x7d, 0x1d, 0xf8, 0x7f, 0x8f, 0xc2, 0xc4, 0x8a, 0xe1, 0xb8, 0x96, + 0x7d, 0x49, 0x7d, 0x38, 0x03, 0x13, 0x67, 0x91, 0xed, 0x18, 0x96, 0xb9, 0xcf, 0xd5, 0xe0, 0x1a, + 0x98, 0xee, 0xda, 0x68, 0xcf, 0xb0, 0x76, 0x9d, 0x70, 0x71, 0x86, 0x4d, 0x52, 0x54, 0x98, 0xd4, + 0x77, 0xdd, 0x6d, 0xcb, 0x0e, 0xa3, 0x4d, 0xf8, 0xef, 0xca, 0x69, 0x00, 0xf2, 0x5c, 0xd5, 0x77, + 0x10, 0x75, 0xa0, 0x60, 0x52, 0x14, 0x05, 0xb2, 0xae, 0xb1, 0x83, 0x68, 0xf8, 0x59, 0xfc, 0xec, + 0x09, 0x18, 0x87, 0x72, 0xa3, 0x21, 0xf3, 0x64, 0xcd, 0x7f, 0x55, 0xbf, 0x20, 0xc3, 0xf4, 0x32, + 0x72, 0x29, 0xab, 0x8e, 0xfa, 0xa2, 0x8c, 0xd0, 0x8d, 0x0f, 0xde, 0x18, 0xdb, 0xd1, 0x1d, 0xff, + 0xbf, 0x60, 0x09, 0x96, 0x4f, 0x0c, 0x63, 0xe1, 0xca, 0x6c, 0x20, 0x6c, 0x1c, 0x18, 0xcd, 0xad, + 0x10, 0xbf, 0x4b, 0x9a, 0x99, 0x6e, 0x82, 0xec, 0xff, 0xa0, 0xbe, 0x47, 0x12, 0x3d, 0x54, 0x4c, + 0x65, 0x3f, 0xcf, 0xd4, 0x27, 0xb2, 0x3b, 0x9a, 0xdc, 0xa3, 0x39, 0xf6, 0xc5, 0x38, 0x67, 0x29, + 0x51, 0x32, 0x5a, 0x90, 0x5b, 0xf0, 0x38, 0xf2, 0x60, 0x4e, 0xd2, 0xd7, 0xc6, 0xef, 0xca, 0x30, + 0x5d, 0xdf, 0xb6, 0x2e, 0xfa, 0x72, 0xfc, 0x19, 0x31, 0x60, 0xaf, 0x82, 0xa9, 0xbd, 0x1e, 0x50, + 0xc3, 0x84, 0xe8, 0x3b, 0xd8, 0xd5, 0xe7, 0xc9, 0x49, 0x61, 0x62, 0x98, 0x1b, 0xf9, 0x0d, 0xe9, + 0xca, 0x93, 0x60, 0x82, 0x72, 0x4d, 0x97, 0x5c, 0xe2, 0x01, 0xf6, 0x33, 0xb3, 0x15, 0xcc, 0xf2, + 0x15, 0x4c, 0x86, 0x7c, 0x74, 0xe5, 0xd2, 0x47, 0xfe, 0x4f, 0x24, 0x1c, 0x8c, 0xc2, 0x07, 0xbe, + 0x34, 0x02, 0xe0, 0xd5, 0xef, 0x65, 0x44, 0x17, 0x26, 0x03, 0x09, 0x04, 0x1c, 0x1c, 0xe8, 0x36, + 0x97, 0x81, 0xe4, 0xd2, 0x97, 0xe7, 0x2b, 0xb3, 0x30, 0xb3, 0x68, 0x6c, 0x6e, 0x06, 0x9d, 0xe4, + 0x8b, 0x05, 0x3b, 0xc9, 0x68, 0x77, 0x00, 0xcf, 0xce, 0xdd, 0xb5, 0x6d, 0x64, 0xfa, 0x95, 0xa2, + 0xcd, 0xa9, 0x27, 0x55, 0xb9, 0x01, 0x8e, 0xfa, 0xe3, 0x02, 0xdb, 0x51, 0x4e, 0x69, 0xbd, 0xc9, + 0xea, 0x77, 0x84, 0x77, 0xb5, 0x7c, 0x89, 0xb2, 0x55, 0x8a, 0x68, 0x80, 0x77, 0xc0, 0xec, 0x36, + 0xc9, 0x8d, 0xa7, 0xfe, 0x7e, 0x67, 0x79, 0xb2, 0x27, 0xd8, 0xef, 0x1a, 0x72, 0x1c, 0x7d, 0x0b, + 0x69, 0x7c, 0xe6, 0x9e, 0xe6, 0x2b, 0x27, 0xb9, 0xba, 0x4a, 0x6c, 0x83, 0x4c, 0xa0, 0x26, 0x63, + 0xd0, 0x8e, 0x33, 0x90, 0x5d, 0x32, 0x3a, 0x48, 0xfd, 0x05, 0x09, 0xa6, 0x34, 0xd4, 0xb2, 0xcc, + 0x96, 0xf7, 0xc6, 0x38, 0x07, 0xfd, 0x53, 0x46, 0xf4, 0xca, 0x46, 0x8f, 0xce, 0x7c, 0x40, 0x23, + 0xa2, 0xdd, 0x88, 0x5d, 0xcd, 0x18, 0x4b, 0x6a, 0x0c, 0x17, 0x6c, 0x78, 0x53, 0x8f, 0xcd, 0xcd, + 0x8e, 0xa5, 0x73, 0x8b, 0x5f, 0xbd, 0xa6, 0xd0, 0x8d, 0x50, 0xf0, 0xcf, 0x78, 0x58, 0xee, 0xba, + 0x61, 0x9a, 0xc1, 0x21, 0xe2, 0x7d, 0xe9, 0xfc, 0xbe, 0x6d, 0x6c, 0x1c, 0x16, 0x5c, 0x77, 0x5a, + 0x7a, 0x84, 0x66, 0x5f, 0x0f, 0x73, 0xe7, 0x2f, 0xb9, 0xc8, 0xa1, 0xb9, 0x68, 0xb1, 0x59, 0xad, + 0x27, 0x95, 0x89, 0xa2, 0x1c, 0x17, 0xaf, 0x25, 0xa6, 0xc0, 0x64, 0xa2, 0x5e, 0x19, 0x62, 0x06, + 0x78, 0x1c, 0x0a, 0xd5, 0xda, 0x62, 0x19, 0xfb, 0xaa, 0xf9, 0xde, 0x3f, 0x5b, 0xea, 0x4b, 0x64, + 0x98, 0xc1, 0xce, 0x24, 0x3e, 0x0a, 0xd7, 0x0a, 0xcc, 0x47, 0xd4, 0x2f, 0x0b, 0xfb, 0xb1, 0xe1, + 0x2a, 0xb3, 0x05, 0x44, 0x0b, 0x7a, 0xd3, 0xe8, 0xf4, 0x0a, 0x3a, 0xa7, 0xf5, 0xa4, 0xf6, 0x01, + 0x44, 0xee, 0x0b, 0xc8, 0xef, 0x08, 0x39, 0xb3, 0x0d, 0xe2, 0xee, 0xb0, 0x50, 0xf9, 0x5d, 0x19, + 0xa6, 0xbd, 0x49, 0x8a, 0x0f, 0x4a, 0x8d, 0x03, 0xc5, 0x32, 0x3b, 0x97, 0xc2, 0x65, 0x11, 0xff, + 0x35, 0x51, 0x23, 0xf9, 0x2b, 0xe1, 0x99, 0x3b, 0x16, 0x11, 0xc3, 0xcb, 0x98, 0xf0, 0xfb, 0x80, + 0xd0, 0x7c, 0x7e, 0x00, 0x73, 0x87, 0x05, 0xdf, 0xd7, 0x73, 0x90, 0xdf, 0xe8, 0x62, 0xe4, 0x5e, + 0x25, 0x8b, 0x44, 0x24, 0xdf, 0x77, 0x90, 0xc1, 0x33, 0xb3, 0x3a, 0x56, 0x4b, 0xef, 0xac, 0x87, + 0x27, 0xc2, 0xc2, 0x04, 0xe5, 0x76, 0xea, 0xdb, 0x48, 0x8e, 0xd3, 0x5d, 0x1f, 0x1b, 0xac, 0x1b, + 0xcb, 0x88, 0x39, 0x34, 0x72, 0x13, 0x1c, 0x6b, 0x1b, 0x8e, 0x7e, 0xbe, 0x83, 0xca, 0x66, 0xcb, + 0xbe, 0x44, 0xc4, 0x41, 0xa7, 0x55, 0xfb, 0x3e, 0x28, 0x77, 0x42, 0xce, 0x71, 0x2f, 0x75, 0xc8, + 0x3c, 0x91, 0x3d, 0x63, 0x12, 0x59, 0x54, 0xdd, 0xcb, 0xae, 0x91, 0xbf, 0x58, 0x17, 0xa5, 0x09, + 0xc1, 0xfb, 0x9a, 0x9f, 0x00, 0x79, 0xcb, 0x36, 0xb6, 0x0c, 0x72, 0xff, 0xce, 0xdc, 0xbe, 0x98, + 0x74, 0xc4, 0x14, 0xa8, 0xe1, 0x2c, 0x1a, 0xcd, 0xaa, 0x3c, 0x09, 0xa6, 0x8c, 0x1d, 0x7d, 0x0b, + 0xdd, 0x6b, 0x98, 0xe4, 0xc4, 0xde, 0xdc, 0xad, 0xa7, 0xf6, 0x1d, 0x9f, 0xa1, 0xdf, 0xb5, 0x30, + 0xab, 0xfa, 0x01, 0x49, 0x34, 0x70, 0x0e, 0xae, 0x1b, 0x01, 0x75, 0x2c, 0xf7, 0x56, 0xab, 0xaf, + 0x15, 0x0a, 0x69, 0x13, 0xcd, 0x56, 0xfa, 0x83, 0xf7, 0xe7, 0x25, 0x98, 0x5c, 0xb4, 0x2e, 0x9a, + 0x58, 0xd1, 0x6f, 0x13, 0xb3, 0x75, 0xfb, 0x1c, 0x72, 0xe4, 0xaf, 0x85, 0x8c, 0x3d, 0xd1, 0x80, + 0x6b, 0xeb, 0x17, 0x19, 0x01, 0x43, 0x6c, 0xcb, 0x11, 0xbc, 0xac, 0x2f, 0xae, 0x9c, 0xf4, 0xe5, + 0xfa, 0xa7, 0x32, 0x64, 0x17, 0x6d, 0xab, 0xab, 0xbe, 0x2d, 0x93, 0xc0, 0x65, 0xa1, 0x6d, 0x5b, + 0xdd, 0x06, 0xbe, 0x6d, 0x2b, 0x3c, 0xc6, 0xc1, 0xa6, 0x29, 0xb7, 0xc1, 0x64, 0xd7, 0x72, 0x0c, + 0xd7, 0x9f, 0x46, 0xcc, 0xdd, 0xfa, 0xa8, 0xbe, 0xad, 0x79, 0x9d, 0x66, 0xd2, 0x82, 0xec, 0x5e, + 0xaf, 0x8d, 0x45, 0xe8, 0xc9, 0xc5, 0x13, 0xa3, 0x7f, 0xe3, 0x58, 0x4f, 0xaa, 0xfa, 0x52, 0x16, + 0xc9, 0xa7, 0xf0, 0x48, 0x3e, 0xba, 0x8f, 0x84, 0x6d, 0xab, 0x3b, 0x92, 0x4d, 0xc6, 0x57, 0x07, + 0xa8, 0x3e, 0x95, 0x43, 0xf5, 0x46, 0xa1, 0x32, 0xd3, 0x47, 0xf4, 0x03, 0x59, 0x00, 0x6c, 0x66, + 0x6c, 0x78, 0x13, 0x20, 0x31, 0x1b, 0xeb, 0x39, 0x59, 0x46, 0x96, 0x45, 0x5e, 0x96, 0x8f, 0x8d, + 0xb0, 0x62, 0x30, 0xf9, 0x08, 0x89, 0x16, 0x21, 0xb7, 0xeb, 0x7d, 0xa6, 0x12, 0x15, 0x24, 0x81, + 0x5f, 0x35, 0xf2, 0xa7, 0xfa, 0x27, 0x19, 0xc8, 0xe1, 0x04, 0xe5, 0x34, 0x00, 0x1e, 0xd8, 0xc9, + 0x81, 0xa0, 0x0c, 0x1e, 0xc2, 0x99, 0x14, 0xac, 0xad, 0x46, 0x9b, 0x7e, 0x26, 0x26, 0x73, 0x98, + 0xe0, 0xfd, 0x8d, 0x87, 0x7b, 0x4c, 0x8b, 0x1a, 0x00, 0x4c, 0x8a, 0xf7, 0x37, 0x7e, 0x5b, 0x45, + 0x9b, 0x24, 0x10, 0x72, 0x56, 0x0b, 0x13, 0x82, 0xbf, 0x57, 0x83, 0xeb, 0xb3, 0xfc, 0xbf, 0x71, + 0x8a, 0x37, 0x19, 0xc6, 0x6a, 0xb9, 0x10, 0x16, 0x91, 0xc7, 0x99, 0x7a, 0x93, 0xd5, 0x37, 0x04, + 0x6a, 0xb3, 0xc8, 0xa9, 0xcd, 0x2d, 0x09, 0xc4, 0x9b, 0xbe, 0xf2, 0x7c, 0x35, 0x07, 0x53, 0x55, + 0xab, 0x4d, 0x75, 0x87, 0x99, 0x30, 0x7e, 0x32, 0x97, 0x68, 0xc2, 0x18, 0xd0, 0x88, 0x50, 0x90, + 0xbb, 0x79, 0x05, 0x11, 0xa3, 0xc0, 0xea, 0x87, 0xb2, 0x00, 0x79, 0xac, 0xbd, 0xfb, 0xef, 0x65, + 0x8a, 0x23, 0x81, 0x45, 0xab, 0xd1, 0x3f, 0xff, 0xc3, 0xe9, 0xd8, 0x7f, 0x85, 0x1c, 0xae, 0x60, + 0xcc, 0xee, 0x0e, 0x5f, 0x51, 0x29, 0xbe, 0xa2, 0x72, 0x7c, 0x45, 0xb3, 0xbd, 0x15, 0x4d, 0xb2, + 0x0e, 0x10, 0xa5, 0x21, 0xe9, 0xeb, 0xf8, 0x3f, 0x4e, 0x00, 0x54, 0xf5, 0x3d, 0x63, 0x8b, 0xec, + 0x0e, 0x7f, 0xc1, 0x9f, 0xff, 0xd0, 0x7d, 0xdc, 0x5f, 0x62, 0x06, 0xc2, 0xdb, 0x60, 0x82, 0x8e, + 0x7b, 0xb4, 0x22, 0x57, 0x73, 0x15, 0x09, 0xa9, 0x10, 0xb3, 0xf4, 0x01, 0x57, 0xf3, 0xf3, 0x73, + 0x57, 0xc8, 0x4a, 0x3d, 0x57, 0xc8, 0xf6, 0xdf, 0x83, 0x88, 0xb8, 0x58, 0x56, 0x7d, 0xaf, 0xb0, + 0x47, 0x3f, 0xc3, 0x0f, 0x53, 0xa3, 0x88, 0x26, 0xf8, 0x04, 0x98, 0xb0, 0x82, 0x0d, 0x6d, 0x39, + 0x72, 0x1d, 0xac, 0x62, 0x6e, 0x5a, 0x9a, 0x9f, 0x53, 0x70, 0xf3, 0x4b, 0x88, 0x8f, 0xb1, 0x1c, + 0x9a, 0x39, 0xb9, 0xec, 0x07, 0x95, 0xf2, 0xea, 0x71, 0xce, 0x70, 0xb7, 0x57, 0x0d, 0xf3, 0x82, + 0xa3, 0xfe, 0x67, 0x31, 0x0b, 0x92, 0xc1, 0x5f, 0x4a, 0x86, 0x3f, 0x1f, 0xb3, 0xa3, 0xce, 0xa3, + 0x76, 0x67, 0x14, 0x95, 0xfe, 0xdc, 0x46, 0x00, 0x78, 0x3b, 0xe4, 0x09, 0xa3, 0xb4, 0x13, 0x3d, + 0x13, 0x89, 0x5f, 0x40, 0x49, 0xa3, 0x7f, 0xa8, 0xef, 0x09, 0x70, 0x3c, 0xcb, 0xe1, 0xb8, 0x70, + 0x20, 0xce, 0x52, 0x87, 0xf4, 0xcc, 0xe3, 0x61, 0x82, 0x4a, 0x5a, 0x99, 0x63, 0x5b, 0x71, 0xe1, + 0x88, 0x02, 0x90, 0x5f, 0xb3, 0xf6, 0x50, 0xc3, 0x2a, 0x64, 0xbc, 0x67, 0x8f, 0xbf, 0x86, 0x55, + 0x90, 0xd4, 0xd7, 0x4c, 0xc2, 0x64, 0x10, 0xcd, 0xe7, 0xf3, 0x12, 0x14, 0x4a, 0x36, 0xd2, 0x5d, + 0xb4, 0x64, 0x5b, 0x3b, 0xa4, 0x46, 0xe2, 0xde, 0xa1, 0xbf, 0x2e, 0xec, 0xe2, 0x11, 0x44, 0xd9, + 0xe9, 0x2d, 0x2c, 0x02, 0x4b, 0xb2, 0x08, 0x29, 0xf9, 0x8b, 0x90, 0xea, 0x5b, 0x85, 0x5c, 0x3e, + 0x44, 0x4b, 0x49, 0xbf, 0xa9, 0x7d, 0x5a, 0x82, 0x5c, 0xa9, 0x63, 0x99, 0x88, 0x3d, 0xc2, 0x34, + 0xf0, 0xac, 0x4c, 0xff, 0x9d, 0x08, 0xf5, 0x59, 0x92, 0xa8, 0xad, 0x11, 0x0a, 0xc0, 0x2b, 0x5b, + 0x50, 0xb6, 0x62, 0x83, 0x54, 0x2c, 0xe9, 0xf4, 0x05, 0xfa, 0x4d, 0x09, 0xa6, 0x48, 0x5c, 0x9c, + 0x62, 0xa7, 0xa3, 0x3e, 0x2a, 0x14, 0x6a, 0x9f, 0x88, 0x48, 0xea, 0xef, 0x08, 0xbb, 0xe8, 0x07, + 0xb5, 0x0a, 0x68, 0x27, 0x08, 0x10, 0x94, 0xcc, 0x63, 0x5c, 0x6c, 0x2f, 0x6d, 0x20, 0x43, 0xe9, + 0x8b, 0xfa, 0x2f, 0x24, 0xcf, 0x00, 0x30, 0x2f, 0xac, 0xdb, 0x68, 0xcf, 0x40, 0x17, 0xd5, 0x2b, + 0x43, 0x61, 0xef, 0x0f, 0xfa, 0xf1, 0x66, 0xe1, 0x45, 0x1c, 0x86, 0x64, 0xe4, 0x56, 0xd6, 0x74, + 0x27, 0xcc, 0x44, 0x7b, 0xf1, 0xde, 0x48, 0x2c, 0x0c, 0x19, 0x8d, 0xcd, 0x2e, 0xb8, 0x66, 0x13, + 0xcd, 0x45, 0xfa, 0x82, 0xfd, 0xf0, 0x04, 0x4c, 0x6e, 0x98, 0x4e, 0xb7, 0xa3, 0x3b, 0xdb, 0xea, + 0xbf, 0xcb, 0x90, 0x27, 0xb7, 0x81, 0xa9, 0x3f, 0xc1, 0xc5, 0x16, 0x78, 0xc6, 0x2e, 0xb2, 0x7d, + 0x17, 0x1c, 0xf2, 0xd2, 0xff, 0xb2, 0x72, 0xf5, 0x03, 0xb2, 0xe8, 0x24, 0xd5, 0x2f, 0x94, 0xb9, + 0x16, 0xbe, 0xff, 0x71, 0xf6, 0xae, 0xd1, 0x72, 0x77, 0xed, 0xe0, 0xea, 0xeb, 0xc7, 0x89, 0x51, + 0x59, 0x27, 0x7f, 0x69, 0xc1, 0xef, 0xaa, 0x0e, 0x13, 0x34, 0x71, 0xdf, 0x76, 0xd2, 0xfe, 0xf3, + 0xb7, 0x27, 0x21, 0xaf, 0xdb, 0xae, 0xe1, 0xb8, 0x74, 0x83, 0x95, 0xbe, 0x79, 0xdd, 0x25, 0x79, + 0xda, 0xb0, 0x3b, 0x7e, 0x14, 0x92, 0x20, 0x41, 0xfd, 0x5d, 0xa1, 0xf9, 0x63, 0x7c, 0xcd, 0x93, + 0x41, 0x7e, 0xef, 0x10, 0x6b, 0xd4, 0x97, 0xc3, 0x65, 0x5a, 0xb1, 0x51, 0x6e, 0x92, 0xa0, 0x15, + 0x41, 0x7c, 0x8a, 0xb6, 0xfa, 0x6e, 0x99, 0x59, 0xbf, 0xbb, 0xc4, 0x8d, 0x11, 0x54, 0x8a, 0xe1, + 0x18, 0x11, 0x24, 0xc4, 0xec, 0x56, 0x73, 0x8b, 0xb0, 0xb2, 0xf8, 0x22, 0xec, 0x6f, 0x09, 0xef, + 0x26, 0x05, 0xa2, 0x1c, 0xb0, 0x06, 0x18, 0x77, 0x5b, 0xd0, 0x07, 0x85, 0x76, 0x86, 0x06, 0x95, + 0x74, 0x88, 0xb0, 0xbd, 0x69, 0x02, 0x26, 0x96, 0xf5, 0x4e, 0x07, 0xd9, 0x97, 0xbc, 0x21, 0xa9, + 0xe0, 0x73, 0xb8, 0xa6, 0x9b, 0xc6, 0x26, 0x72, 0xdc, 0xf8, 0xce, 0xf2, 0xbd, 0xc2, 0x91, 0x68, + 0x69, 0x19, 0xf3, 0xbd, 0xf4, 0x23, 0x64, 0x7e, 0x33, 0x64, 0x0d, 0x73, 0xd3, 0xa2, 0x5d, 0x66, + 0xef, 0xaa, 0xbd, 0xff, 0x33, 0x9e, 0xba, 0xe0, 0x8c, 0x82, 0xc1, 0x68, 0x05, 0xb9, 0x48, 0xbf, + 0xe7, 0xfc, 0xed, 0x2c, 0xcc, 0xfa, 0x4c, 0x54, 0xcc, 0x36, 0x7a, 0x80, 0x5d, 0x8a, 0x79, 0x49, + 0x56, 0xf4, 0x38, 0x58, 0x6f, 0x7d, 0x30, 0xa9, 0x08, 0x91, 0x36, 0x00, 0x5a, 0xba, 0x8b, 0xb6, + 0x2c, 0xdb, 0x08, 0xfa, 0xc3, 0x27, 0x26, 0xa1, 0x56, 0x22, 0x7f, 0x5f, 0xd2, 0x18, 0x3a, 0xca, + 0x9d, 0x30, 0x8d, 0x82, 0xf3, 0xf7, 0xfe, 0x52, 0x4d, 0x2c, 0x5e, 0x6c, 0x7e, 0xf5, 0x2f, 0x84, + 0x4e, 0x9d, 0x89, 0x54, 0x33, 0x19, 0x66, 0xcd, 0xe1, 0xda, 0xd0, 0x46, 0x75, 0xad, 0xa8, 0xd5, + 0x57, 0x8a, 0xab, 0xab, 0x95, 0xea, 0x72, 0x10, 0xf8, 0x45, 0x81, 0xb9, 0xc5, 0xda, 0xb9, 0x2a, + 0x13, 0x99, 0x27, 0xab, 0xae, 0xc3, 0xa4, 0x2f, 0xaf, 0x7e, 0xbe, 0x98, 0xac, 0xcc, 0xa8, 0x2f, + 0x26, 0x93, 0xe4, 0x19, 0x67, 0x46, 0x2b, 0x70, 0xd0, 0xc1, 0xcf, 0xea, 0x1f, 0xe9, 0x90, 0xc3, + 0x6b, 0xea, 0xea, 0x3b, 0xf1, 0x36, 0x60, 0xb7, 0xa3, 0xb7, 0x90, 0xba, 0x93, 0xc0, 0x1a, 0xf7, + 0xaf, 0x46, 0x90, 0xf6, 0x5d, 0x8d, 0x80, 0x1f, 0xa9, 0xd5, 0x77, 0xbc, 0xdf, 0x3a, 0xbe, 0x46, + 0xb2, 0xf0, 0x07, 0xb4, 0x62, 0x77, 0x57, 0xc8, 0xf2, 0x3f, 0x65, 0x33, 0x42, 0x25, 0xa3, 0x79, + 0x4a, 0x66, 0x89, 0x8a, 0xed, 0xc3, 0xc4, 0x71, 0x34, 0x86, 0xeb, 0xbb, 0xb3, 0x90, 0xab, 0x77, + 0x3b, 0x86, 0xab, 0xbe, 0x42, 0x1a, 0x09, 0x66, 0xe4, 0x3a, 0x0b, 0x79, 0xe0, 0x75, 0x16, 0xe1, + 0xae, 0x6b, 0x56, 0x60, 0xd7, 0xb5, 0x81, 0x1e, 0x70, 0xf9, 0x5d, 0xd7, 0xdb, 0x68, 0xf0, 0x36, + 0xb2, 0x67, 0xfb, 0xe8, 0x3e, 0x22, 0xc5, 0xd5, 0xea, 0x13, 0x15, 0xf0, 0xcc, 0xe3, 0x69, 0x70, + 0x32, 0x80, 0xfc, 0x42, 0xad, 0xd1, 0xa8, 0xad, 0x15, 0x8e, 0xe0, 0xa8, 0x36, 0xb5, 0x75, 0x12, + 0x2a, 0xa6, 0x52, 0xad, 0x96, 0xb5, 0x82, 0x84, 0xc3, 0xa5, 0x55, 0x1a, 0xab, 0xe5, 0x82, 0xcc, + 0xc7, 0x36, 0x8f, 0x35, 0xbf, 0xf9, 0xb2, 0xd3, 0x54, 0x2f, 0x31, 0x43, 0x3c, 0x9a, 0x9f, 0xf4, + 0x95, 0xeb, 0xd7, 0x64, 0xc8, 0xad, 0x21, 0x7b, 0x0b, 0xa9, 0xcf, 0x48, 0xb0, 0xc9, 0xb7, 0x69, + 0xd8, 0x0e, 0x09, 0x2e, 0x17, 0x6e, 0xf2, 0xb1, 0x69, 0xca, 0x75, 0x30, 0xeb, 0xa0, 0x96, 0x65, + 0xb6, 0xfd, 0x4c, 0xa4, 0x3f, 0xe2, 0x13, 0xf9, 0x7b, 0xe5, 0x05, 0x20, 0xc3, 0x8c, 0x8e, 0x64, + 0xa7, 0x2e, 0x09, 0x30, 0xfd, 0x4a, 0x4d, 0x1f, 0x98, 0xef, 0xc8, 0xde, 0x4f, 0xdd, 0x4b, 0xea, + 0xcb, 0x85, 0x77, 0x5f, 0x6f, 0x82, 0x3c, 0x56, 0x53, 0x7f, 0x8c, 0xee, 0xdf, 0x1f, 0xd3, 0x3c, + 0xca, 0x02, 0x1c, 0x73, 0x50, 0x07, 0xb5, 0x5c, 0xd4, 0xf6, 0x9a, 0xae, 0x36, 0xb0, 0x53, 0xd8, + 0x9f, 0x5d, 0xfd, 0x33, 0x16, 0xc0, 0x3b, 0x78, 0x00, 0xaf, 0xef, 0x23, 0x4a, 0xaf, 0x42, 0xd1, + 0xb6, 0xb2, 0x57, 0x8d, 0x7a, 0xc7, 0x0a, 0x16, 0xc5, 0xfd, 0x77, 0xef, 0xdb, 0xb6, 0xbb, 0xd3, + 0xc1, 0xdf, 0xe8, 0x01, 0x03, 0xff, 0x5d, 0x99, 0x87, 0x09, 0xdd, 0xbc, 0x84, 0x3f, 0x65, 0x63, + 0x6a, 0xed, 0x67, 0x52, 0x5f, 0x13, 0x20, 0x7f, 0x17, 0x87, 0xfc, 0x63, 0xc5, 0xd8, 0x4d, 0x1f, + 0xf8, 0x9f, 0x9f, 0x80, 0xdc, 0xba, 0xee, 0xb8, 0x48, 0xfd, 0x7f, 0x64, 0x51, 0xe4, 0xaf, 0x87, + 0xb9, 0x4d, 0xab, 0xb5, 0xeb, 0xa0, 0x36, 0xdf, 0x28, 0x7b, 0x52, 0x47, 0x81, 0xb9, 0x72, 0x23, + 0x14, 0xfc, 0x44, 0x4a, 0xd6, 0xdf, 0x86, 0xdf, 0x97, 0x8e, 0x23, 0x65, 0x3b, 0xeb, 0xba, 0xed, + 0xd6, 0x36, 0x71, 0x5a, 0x10, 0x29, 0x9b, 0x4d, 0xe4, 0xa0, 0xcf, 0xc7, 0x40, 0x3f, 0x11, 0x0d, + 0xfd, 0xa4, 0x00, 0xf4, 0x4a, 0x11, 0x26, 0x37, 0x8d, 0x0e, 0xc2, 0x3f, 0x4c, 0xe1, 0x1f, 0xfa, + 0x8d, 0x49, 0x58, 0xf6, 0xc1, 0x98, 0xb4, 0x64, 0x74, 0x90, 0x16, 0xfc, 0xe6, 0x4f, 0x64, 0x20, + 0x9c, 0xc8, 0xac, 0x12, 0x7f, 0x5a, 0xcf, 0xf0, 0x32, 0xf5, 0x1d, 0xe4, 0x2f, 0xbe, 0x99, 0xf4, + 0x70, 0x4b, 0x5b, 0x77, 0x75, 0x0c, 0xc6, 0x8c, 0x86, 0x9f, 0x79, 0xbf, 0x10, 0xb9, 0xd7, 0x2f, + 0xe4, 0xb9, 0x72, 0xb2, 0x1e, 0xd1, 0x67, 0x36, 0xa2, 0x45, 0x9d, 0xf7, 0x01, 0x22, 0x96, 0x62, + 0xf0, 0xee, 0x01, 0xd3, 0xd2, 0x6d, 0xe4, 0xae, 0xb3, 0x9e, 0x18, 0x39, 0x8d, 0x4f, 0xc4, 0xae, + 0x7c, 0x4e, 0x5d, 0xdf, 0x41, 0xb8, 0xb0, 0x92, 0xf7, 0x8d, 0xba, 0x68, 0xed, 0x4b, 0x0f, 0xfb, + 0xdf, 0xdc, 0xa8, 0xfb, 0xdf, 0x7e, 0x75, 0x4c, 0xbf, 0x19, 0xbe, 0x3e, 0x0b, 0x72, 0x69, 0xd7, + 0x7d, 0x44, 0x77, 0xbf, 0xdf, 0x17, 0xf6, 0x73, 0xa1, 0xfd, 0x59, 0xe4, 0x45, 0xf2, 0x63, 0xea, + 0x7d, 0x13, 0x6a, 0x89, 0x98, 0x3f, 0x4d, 0x54, 0xdd, 0xd2, 0xd7, 0x91, 0xb7, 0xc9, 0x81, 0x83, + 0xe5, 0x83, 0x99, 0x83, 0x9b, 0xe6, 0x2a, 0xe9, 0x9f, 0x98, 0x9e, 0x21, 0x78, 0xf7, 0x3b, 0x9e, + 0x2c, 0x17, 0xab, 0x0f, 0x6f, 0xaf, 0x63, 0x51, 0xce, 0x68, 0xe4, 0x45, 0x7d, 0xa5, 0xb0, 0xdb, + 0x39, 0x11, 0x5b, 0xac, 0x2b, 0x61, 0x32, 0x9b, 0x4a, 0xec, 0xb2, 0xd0, 0x98, 0x62, 0xd3, 0x07, + 0xec, 0xdb, 0xac, 0xab, 0x60, 0xf1, 0xc0, 0x88, 0xa9, 0xaf, 0x15, 0xde, 0x8e, 0x22, 0xd5, 0x1e, + 0xb0, 0x5e, 0x98, 0x4c, 0xde, 0x62, 0x9b, 0x55, 0xb1, 0x05, 0xa7, 0x2f, 0xf1, 0x6f, 0xc9, 0x90, + 0x27, 0x5b, 0x90, 0xea, 0x5b, 0x32, 0x09, 0x6e, 0x59, 0x77, 0x79, 0x17, 0xc2, 0xe0, 0x3d, 0xc9, + 0x9a, 0x03, 0xe7, 0x6a, 0x98, 0x4d, 0xe4, 0x6a, 0xc8, 0x9f, 0xe3, 0x14, 0x68, 0x47, 0xa4, 0x8e, + 0x29, 0x4f, 0x27, 0x93, 0xb4, 0xb0, 0xbe, 0x0c, 0xa5, 0x8f, 0xf7, 0xf3, 0x73, 0x30, 0x43, 0x8a, + 0x3e, 0x67, 0xb4, 0xb7, 0x90, 0xab, 0xbe, 0x5b, 0xfa, 0xe1, 0x41, 0x5d, 0xa9, 0xc2, 0xcc, 0x45, + 0xcc, 0xf6, 0xaa, 0x7e, 0xc9, 0xda, 0x75, 0xe9, 0xca, 0xc5, 0x8d, 0xb1, 0xeb, 0x1e, 0xa4, 0x9e, + 0xf3, 0xe4, 0x0f, 0x8d, 0xfb, 0xdf, 0x93, 0x31, 0x59, 0xf0, 0x27, 0x0e, 0x5c, 0x79, 0x6c, 0x64, + 0xb1, 0x49, 0xca, 0x49, 0xc8, 0xef, 0x19, 0xe8, 0x62, 0xa5, 0x4d, 0xad, 0x5b, 0xfa, 0xa6, 0xfe, + 0xbe, 0xf0, 0xbe, 0x2d, 0x0b, 0x37, 0xe5, 0x25, 0x5d, 0x2d, 0x14, 0xdb, 0xbd, 0x1d, 0xc8, 0xd6, + 0x18, 0xce, 0x14, 0xf3, 0x97, 0x71, 0x96, 0x12, 0x28, 0x62, 0x94, 0xe1, 0xcc, 0x87, 0xf2, 0x88, + 0x3d, 0xb1, 0x42, 0x04, 0x30, 0xe2, 0x7b, 0x3a, 0xc5, 0xe2, 0x4b, 0x0c, 0x28, 0x3a, 0x7d, 0xc9, + 0xbf, 0x41, 0x86, 0xa9, 0x3a, 0x72, 0x97, 0x0c, 0xd4, 0x69, 0x3b, 0xaa, 0x7d, 0x70, 0xd3, 0xe8, + 0x66, 0xc8, 0x6f, 0x62, 0x62, 0x83, 0xce, 0x2d, 0xd0, 0x6c, 0xea, 0xeb, 0x25, 0xd1, 0x1d, 0x61, + 0xba, 0xfa, 0xe6, 0x73, 0x3b, 0x12, 0x98, 0xc4, 0x3c, 0x7a, 0xe3, 0x4b, 0x1e, 0x43, 0x60, 0x5b, + 0x19, 0x66, 0xe8, 0xed, 0x7d, 0xc5, 0x8e, 0xb1, 0x65, 0xaa, 0xbb, 0x23, 0x68, 0x21, 0xca, 0x2d, + 0x90, 0xd3, 0x3d, 0x6a, 0x74, 0xeb, 0x55, 0xed, 0xdb, 0x79, 0xe2, 0xf2, 0x34, 0x92, 0x31, 0x41, + 0x18, 0xc9, 0x50, 0xb1, 0x7d, 0x9e, 0xc7, 0x18, 0x46, 0x72, 0x60, 0xe1, 0xe9, 0x23, 0xf6, 0x15, + 0x19, 0x8e, 0x53, 0x06, 0xce, 0x22, 0xdb, 0x35, 0x5a, 0x7a, 0x87, 0x20, 0xf7, 0xc2, 0xcc, 0x28, + 0xa0, 0x5b, 0x81, 0xd9, 0x3d, 0x96, 0x2c, 0x85, 0xf0, 0x4c, 0x5f, 0x08, 0x39, 0x06, 0x34, 0xfe, + 0xc7, 0x04, 0xe1, 0xf8, 0x38, 0xa9, 0x72, 0x34, 0xc7, 0x18, 0x8e, 0x4f, 0x98, 0x89, 0xf4, 0x21, + 0x7e, 0x29, 0x0d, 0xcd, 0x13, 0x76, 0x9f, 0x5f, 0x10, 0xc6, 0x76, 0x03, 0xa6, 0x31, 0x96, 0xe4, + 0x47, 0xba, 0x0c, 0x11, 0xa3, 0xc4, 0x41, 0xbf, 0x43, 0x2f, 0x0c, 0x0b, 0xfe, 0xd5, 0x58, 0x3a, + 0xea, 0x39, 0x80, 0xf0, 0x13, 0xdb, 0x49, 0x67, 0xa2, 0x3a, 0x69, 0x49, 0xac, 0x93, 0x7e, 0xb3, + 0x70, 0xb0, 0x94, 0xfe, 0x6c, 0x1f, 0x5c, 0x3d, 0xc4, 0xc2, 0x64, 0x0c, 0x2e, 0x3d, 0x7d, 0xbd, + 0x78, 0x4d, 0xb6, 0xf7, 0x9a, 0xf6, 0x8f, 0x8d, 0x64, 0x3e, 0xc5, 0xf6, 0x07, 0x72, 0x4f, 0x7f, + 0x70, 0x00, 0x4b, 0xfa, 0x06, 0x38, 0x4a, 0x8a, 0x28, 0x05, 0x6c, 0xe5, 0x48, 0x28, 0x88, 0x9e, + 0x64, 0xf5, 0xe3, 0x43, 0x28, 0xc1, 0xa0, 0x3b, 0xe4, 0xe3, 0x3a, 0xb9, 0x64, 0xc6, 0x6e, 0x52, + 0x05, 0x39, 0xbc, 0xab, 0xe7, 0xbf, 0x99, 0x25, 0xd6, 0xee, 0x06, 0xbe, 0xd3, 0x4d, 0xfd, 0xcb, + 0xec, 0x28, 0x46, 0x84, 0xbb, 0x21, 0x8b, 0x5d, 0xdc, 0xe5, 0xc8, 0x25, 0x8d, 0xb0, 0xc8, 0xf0, + 0xc2, 0x3d, 0xf4, 0x80, 0xbb, 0x72, 0x44, 0xc3, 0x7f, 0x2a, 0x37, 0xc2, 0xd1, 0xf3, 0x7a, 0xeb, + 0xc2, 0x96, 0x6d, 0xed, 0xe2, 0xdb, 0xaf, 0x2c, 0x7a, 0x8d, 0x16, 0xbe, 0x8e, 0x90, 0xff, 0xa0, + 0xdc, 0xea, 0x9b, 0x0e, 0xb9, 0x41, 0xa6, 0xc3, 0xca, 0x11, 0x6a, 0x3c, 0x28, 0x8f, 0x0f, 0x3a, + 0x9d, 0x7c, 0x6c, 0xa7, 0xb3, 0x72, 0xc4, 0xef, 0x76, 0x94, 0x45, 0x98, 0x6c, 0x1b, 0x7b, 0x78, + 0xab, 0x1a, 0xcf, 0xba, 0x06, 0x1d, 0x5d, 0x5e, 0x34, 0xf6, 0xc8, 0xc6, 0xf6, 0xca, 0x11, 0x2d, + 0xf8, 0x53, 0x59, 0x86, 0x29, 0xbc, 0x2d, 0x80, 0xc9, 0x4c, 0x26, 0x3a, 0x96, 0xbc, 0x72, 0x44, + 0x0b, 0xff, 0xf5, 0xac, 0x8f, 0x2c, 0x3e, 0xfb, 0x71, 0x97, 0xbf, 0xdd, 0x9e, 0x49, 0xb4, 0xdd, + 0xee, 0xc9, 0x82, 0x6c, 0xb8, 0x9f, 0x84, 0x5c, 0x0b, 0x4b, 0x58, 0xa2, 0x12, 0x26, 0xaf, 0xca, + 0x1d, 0x90, 0xdd, 0xd1, 0x6d, 0x7f, 0xf2, 0x7c, 0xfd, 0x60, 0xba, 0x6b, 0xba, 0x7d, 0xc1, 0x43, + 0xd0, 0xfb, 0x6b, 0x61, 0x02, 0x72, 0x58, 0x70, 0xc1, 0x83, 0xfa, 0xb6, 0x2c, 0x31, 0x43, 0x4a, + 0x96, 0xe9, 0x0d, 0xfb, 0x0d, 0xcb, 0x3f, 0x20, 0xf3, 0xfb, 0x99, 0xd1, 0x58, 0x90, 0x7d, 0xef, + 0x35, 0x97, 0x23, 0xef, 0x35, 0xef, 0xb9, 0x60, 0x37, 0xdb, 0x7b, 0xc1, 0x6e, 0xb8, 0x7c, 0x90, + 0x1b, 0xec, 0xa8, 0xf2, 0x67, 0x43, 0x98, 0x2e, 0xbd, 0x82, 0x88, 0x9e, 0x81, 0x77, 0x0c, 0x93, + 0xa9, 0xb3, 0xff, 0x9a, 0xb0, 0x53, 0x4a, 0x6a, 0xd4, 0x0c, 0x60, 0x2f, 0xfd, 0xbe, 0xe9, 0x37, + 0xb3, 0x70, 0x8a, 0x5c, 0xe3, 0xbc, 0x87, 0x1a, 0x16, 0x7f, 0xdf, 0xa4, 0xfa, 0xc7, 0x23, 0x51, + 0x9a, 0x3e, 0x03, 0x8e, 0xdc, 0x77, 0xc0, 0xd9, 0x77, 0x48, 0x39, 0x3b, 0xe0, 0x90, 0x72, 0x2e, + 0xd9, 0xca, 0xe1, 0x87, 0x58, 0xfd, 0x59, 0xe7, 0xf5, 0xe7, 0xf6, 0x08, 0x80, 0xfa, 0xc9, 0x65, + 0x24, 0xf6, 0xcd, 0x3b, 0x03, 0x4d, 0xa9, 0x73, 0x9a, 0x72, 0xd7, 0xf0, 0x8c, 0xa4, 0xaf, 0x2d, + 0xbf, 0x97, 0x85, 0xcb, 0x42, 0x66, 0xaa, 0xe8, 0x22, 0x55, 0x94, 0xcf, 0x8f, 0x44, 0x51, 0x92, + 0xc7, 0x40, 0x48, 0x5b, 0x63, 0xfe, 0x44, 0xf8, 0xec, 0x50, 0x2f, 0x50, 0x81, 0x6c, 0x22, 0x94, + 0xe5, 0x24, 0xe4, 0x49, 0x0f, 0x43, 0xa1, 0xa1, 0x6f, 0x09, 0xbb, 0x1b, 0xb1, 0x13, 0x47, 0xa2, + 0xbc, 0x8d, 0x41, 0x7f, 0xe8, 0xba, 0x46, 0x63, 0xd7, 0x36, 0x2b, 0xa6, 0x6b, 0xa9, 0x3f, 0x37, + 0x12, 0xc5, 0x09, 0xbc, 0xe1, 0xe4, 0x61, 0xbc, 0xe1, 0x86, 0x5a, 0xe5, 0xf0, 0x6b, 0x70, 0x28, + 0xab, 0x1c, 0x11, 0x85, 0xa7, 0x8f, 0xdf, 0x3b, 0x64, 0x38, 0x49, 0x27, 0x5b, 0x0b, 0xbc, 0x85, + 0xa8, 0xde, 0x37, 0x0a, 0x20, 0x8f, 0xfb, 0x66, 0x12, 0xbd, 0xe5, 0x0c, 0xbf, 0xf0, 0x27, 0xa5, + 0x62, 0xef, 0x77, 0xe0, 0xa6, 0x83, 0x3d, 0x1c, 0x8e, 0x04, 0x29, 0xb1, 0x6b, 0x1d, 0x12, 0xb0, + 0x91, 0x3e, 0x66, 0x2f, 0x96, 0x21, 0x4f, 0xaf, 0xef, 0xdf, 0x48, 0xc5, 0x61, 0x82, 0x8f, 0xf2, + 0x2c, 0xb0, 0x23, 0x97, 0xf8, 0x92, 0xfb, 0xf4, 0xf6, 0xe2, 0x0e, 0xe9, 0x16, 0xfb, 0xef, 0x48, + 0x30, 0x5d, 0x47, 0x6e, 0x49, 0xb7, 0x6d, 0x43, 0xdf, 0x1a, 0x95, 0xc7, 0xb7, 0xa8, 0xf7, 0xb0, + 0xfa, 0xdd, 0x8c, 0xe8, 0x79, 0x9a, 0x60, 0x21, 0xdc, 0x67, 0x35, 0x22, 0x96, 0xe0, 0xc3, 0x42, + 0x67, 0x66, 0x06, 0x51, 0x1b, 0x83, 0xc7, 0xb6, 0x04, 0x13, 0xfe, 0x59, 0xbc, 0x9b, 0xb9, 0xf3, + 0x99, 0xdb, 0xee, 0x8e, 0x7f, 0x0c, 0x06, 0x3f, 0xef, 0x3f, 0x03, 0xa6, 0xbe, 0x3a, 0xa1, 0xa3, + 0x7c, 0xfc, 0x41, 0xc2, 0x64, 0x6d, 0x2c, 0x89, 0x3b, 0xfc, 0x61, 0x1d, 0x1d, 0xfc, 0x9d, 0x09, + 0xba, 0x1c, 0xb9, 0xaa, 0xbb, 0xe8, 0x01, 0xf5, 0x0b, 0x32, 0x4c, 0xd4, 0x91, 0xeb, 0x8d, 0xb7, + 0xdc, 0xe5, 0xa6, 0xc3, 0x6a, 0xb8, 0xc2, 0xac, 0x78, 0x4c, 0xd1, 0x35, 0x8c, 0x7b, 0x60, 0xaa, + 0x6b, 0x5b, 0x2d, 0xe4, 0x38, 0x74, 0xf5, 0x82, 0x75, 0x54, 0xeb, 0x37, 0xfa, 0x63, 0xd6, 0xe6, + 0xd7, 0xfd, 0x7f, 0xb4, 0xf0, 0xf7, 0xa4, 0x66, 0x00, 0xa1, 0x44, 0x2b, 0x38, 0x6e, 0x33, 0x20, + 0xae, 0xf0, 0xf4, 0x81, 0xfe, 0xac, 0x0c, 0x33, 0x75, 0xe4, 0x06, 0x52, 0x4c, 0xb0, 0xc9, 0x11, + 0x0d, 0x2f, 0x07, 0xa5, 0x7c, 0x30, 0x28, 0xc5, 0xaf, 0x06, 0xe4, 0xa5, 0x19, 0x10, 0x1b, 0xe3, + 0xd5, 0x80, 0x62, 0x1c, 0x8c, 0xe1, 0xf8, 0xda, 0xa3, 0x61, 0x0a, 0xf3, 0x82, 0x1b, 0xec, 0x2f, + 0x66, 0xc3, 0xc6, 0xfb, 0xc5, 0x94, 0x1a, 0xef, 0x9d, 0x90, 0xdb, 0xd1, 0xed, 0x0b, 0x0e, 0x6e, + 0xb8, 0xd3, 0x22, 0x66, 0xfb, 0x9a, 0x97, 0x5d, 0x23, 0x7f, 0xf5, 0xf7, 0xd3, 0xcc, 0x25, 0xf3, + 0xd3, 0x7c, 0x58, 0x4a, 0x34, 0x12, 0x92, 0xb9, 0xc3, 0x08, 0x9b, 0x7c, 0x82, 0x71, 0x33, 0xa6, + 0xec, 0xf4, 0x95, 0xe3, 0x85, 0x32, 0x4c, 0x7a, 0xe3, 0x36, 0xb6, 0xc7, 0xcf, 0x1d, 0x5c, 0x1d, + 0xfa, 0x1b, 0xfa, 0x09, 0x7b, 0x60, 0x5f, 0x22, 0xa3, 0x33, 0xef, 0x13, 0xf4, 0xc0, 0x71, 0x85, + 0xa7, 0x8f, 0xc7, 0xbb, 0x08, 0x1e, 0xb8, 0x3d, 0xa8, 0x6f, 0x94, 0x41, 0x5e, 0x46, 0xee, 0xb8, + 0xad, 0xc8, 0xb7, 0x0b, 0x87, 0x38, 0xe2, 0x04, 0x86, 0x79, 0x9e, 0x5f, 0x46, 0xa3, 0x69, 0x40, + 0x62, 0xb1, 0x8d, 0x84, 0x18, 0x48, 0x1f, 0xb5, 0xf7, 0x11, 0xd4, 0xc8, 0xe6, 0xc2, 0xcf, 0x8e, + 0xa0, 0x57, 0x1d, 0xef, 0xc2, 0x87, 0x2f, 0x40, 0x4c, 0xe3, 0xb0, 0xda, 0x5b, 0xbf, 0xc2, 0xc7, + 0x72, 0x15, 0x1f, 0x78, 0x8d, 0x7d, 0x1b, 0xb5, 0x2e, 0xa0, 0xb6, 0xfa, 0xd3, 0x07, 0x87, 0xee, + 0x14, 0x4c, 0xb4, 0x08, 0x35, 0x0c, 0xde, 0xa4, 0xe6, 0xbf, 0x26, 0xb8, 0x57, 0x9a, 0xef, 0x88, + 0xc8, 0xef, 0x63, 0xbc, 0x57, 0x5a, 0xa0, 0xf8, 0x31, 0x98, 0x2d, 0x64, 0x96, 0x51, 0x69, 0x59, + 0xa6, 0xfa, 0x5f, 0x0e, 0x0e, 0xcb, 0x55, 0x30, 0x65, 0xb4, 0x2c, 0x13, 0x87, 0xa1, 0xf0, 0x0f, + 0x01, 0x05, 0x09, 0xfe, 0xd7, 0xf2, 0x8e, 0x75, 0xbf, 0x41, 0x77, 0xcd, 0xc3, 0x84, 0x61, 0x8d, + 0x09, 0x8f, 0xf5, 0xc3, 0x32, 0x26, 0xfa, 0x94, 0x9d, 0x3e, 0x64, 0x1f, 0x0f, 0xbd, 0xdb, 0x48, + 0x57, 0xf8, 0x88, 0x58, 0x05, 0x1e, 0x66, 0x38, 0x63, 0x6b, 0x71, 0x28, 0xc3, 0x59, 0x0c, 0x03, + 0x63, 0xb8, 0xb1, 0x22, 0xc4, 0x31, 0xf5, 0x35, 0xe0, 0x03, 0xa0, 0x33, 0x3a, 0xf3, 0x70, 0x48, + 0x74, 0x0e, 0xc7, 0x44, 0xfc, 0x20, 0x0d, 0x91, 0x49, 0x2d, 0x1e, 0xf5, 0xbf, 0x8e, 0x02, 0x9c, + 0xdb, 0x87, 0xf1, 0x57, 0x20, 0xde, 0x0a, 0x09, 0x6e, 0xc4, 0xde, 0x27, 0x41, 0x8f, 0xca, 0x18, + 0xef, 0x8a, 0x17, 0x29, 0x3f, 0x7d, 0x00, 0x5f, 0x20, 0xc3, 0x1c, 0xf6, 0x11, 0xe8, 0x20, 0xdd, + 0x26, 0x1d, 0xe5, 0x48, 0x1c, 0xe5, 0xdf, 0x25, 0x1c, 0xe0, 0x87, 0x97, 0x43, 0xc8, 0xc7, 0x48, + 0xa0, 0x10, 0x8b, 0xee, 0x23, 0xc8, 0xc2, 0x58, 0xb6, 0x51, 0x0a, 0x01, 0x0b, 0x54, 0xc5, 0x47, + 0x83, 0x47, 0x42, 0x8f, 0x5c, 0x5e, 0x18, 0x7e, 0x63, 0x1b, 0xb3, 0x47, 0xae, 0x08, 0x13, 0xe9, + 0x63, 0xf2, 0xc6, 0x5b, 0xe8, 0x82, 0x73, 0x03, 0x5f, 0x18, 0xff, 0xda, 0x6c, 0x70, 0xa2, 0xed, + 0xb3, 0x23, 0xf1, 0xc0, 0x3c, 0x40, 0x40, 0x7c, 0x05, 0xb2, 0xb6, 0x75, 0x91, 0x2c, 0x6d, 0xcd, + 0x6a, 0xf8, 0x99, 0x5c, 0x4f, 0xd9, 0xd9, 0xdd, 0x31, 0xc9, 0xc9, 0xd0, 0x59, 0xcd, 0x7f, 0x55, + 0xae, 0x83, 0xd9, 0x8b, 0x86, 0xbb, 0xbd, 0x82, 0xf4, 0x36, 0xb2, 0x35, 0xeb, 0x22, 0xf6, 0x98, + 0x9b, 0xd4, 0xf8, 0x44, 0xde, 0x7f, 0x45, 0xc0, 0xbe, 0xc4, 0xb7, 0xc8, 0x8f, 0xe5, 0xf8, 0x5b, + 0x12, 0xcb, 0x33, 0x9a, 0xab, 0xf4, 0x15, 0xe6, 0xfd, 0x32, 0x4c, 0x69, 0xd6, 0x45, 0xaa, 0x24, + 0xff, 0xc7, 0xe1, 0xea, 0x48, 0xe2, 0x89, 0x1e, 0x96, 0x5c, 0xc0, 0xfe, 0xd8, 0x27, 0x7a, 0xb1, + 0xc5, 0x8f, 0xe5, 0xe4, 0xd2, 0x8c, 0x66, 0x5d, 0xac, 0x23, 0x97, 0xb4, 0x08, 0xb5, 0x39, 0x22, + 0x27, 0x6b, 0xc3, 0x21, 0x04, 0xe9, 0x3c, 0x3c, 0x78, 0x4f, 0xba, 0x8b, 0x10, 0x08, 0x28, 0x60, + 0x71, 0xdc, 0xbb, 0x08, 0x03, 0x39, 0x18, 0x43, 0x8c, 0x14, 0x19, 0xa6, 0x35, 0xeb, 0xa2, 0x37, + 0x34, 0x2c, 0x19, 0x9d, 0xce, 0x68, 0x46, 0xc8, 0xa4, 0xc6, 0xbf, 0x2f, 0x06, 0x9f, 0x8b, 0xb1, + 0x1b, 0xff, 0x03, 0x18, 0x48, 0x1f, 0x86, 0xe7, 0x92, 0xc6, 0xe2, 0x8f, 0xd0, 0xe6, 0x68, 0x70, + 0x18, 0xb6, 0x41, 0x04, 0x6c, 0x1c, 0x5a, 0x83, 0x88, 0xe2, 0x60, 0x2c, 0x3b, 0x27, 0x73, 0x25, + 0x3c, 0xcc, 0x8f, 0xb6, 0x4d, 0xbc, 0x27, 0x99, 0x6b, 0x22, 0x1d, 0x76, 0x39, 0x46, 0x46, 0x82, + 0x46, 0x02, 0x17, 0x44, 0x01, 0x1e, 0xd2, 0xc7, 0xe3, 0x23, 0x32, 0xcc, 0x10, 0x16, 0x1e, 0x21, + 0x56, 0xc0, 0x50, 0x8d, 0x8a, 0xad, 0xc1, 0xe1, 0x34, 0xaa, 0x18, 0x0e, 0xc6, 0x72, 0x2b, 0xa8, + 0x67, 0xc7, 0x0d, 0x71, 0x7c, 0x3c, 0x0a, 0xc1, 0xa1, 0x8d, 0xb1, 0x11, 0x1e, 0x21, 0x1f, 0xc6, + 0x18, 0x3b, 0xa4, 0x63, 0xe4, 0xcf, 0x0d, 0x5a, 0xd1, 0x28, 0x31, 0x38, 0x40, 0x53, 0x18, 0x21, + 0x0c, 0x43, 0x36, 0x85, 0x43, 0x42, 0xe2, 0xab, 0x32, 0x00, 0x61, 0x60, 0xcd, 0xda, 0xc3, 0x97, + 0xf9, 0x8c, 0xa0, 0x3b, 0xeb, 0x75, 0xab, 0x97, 0x07, 0xb8, 0xd5, 0x27, 0x0c, 0xe1, 0x92, 0x74, + 0x25, 0x90, 0x91, 0xb2, 0x57, 0xc9, 0xb1, 0xaf, 0x04, 0xc6, 0x97, 0x9f, 0x3e, 0xc6, 0x5f, 0x26, + 0xd6, 0x5c, 0x78, 0xc0, 0xf4, 0x65, 0x23, 0x41, 0x99, 0x99, 0xfd, 0xcb, 0xfc, 0xec, 0xff, 0x00, + 0xd8, 0x0e, 0x6b, 0x23, 0x0e, 0x3a, 0x38, 0x9a, 0xbe, 0x8d, 0x78, 0x78, 0x07, 0x44, 0x7f, 0x36, + 0x0b, 0x47, 0x69, 0x27, 0xf2, 0xc3, 0x00, 0x71, 0xc2, 0x73, 0x78, 0x5c, 0x27, 0x39, 0x00, 0xe5, + 0x51, 0x2d, 0x48, 0x25, 0x59, 0xca, 0x14, 0x60, 0x6f, 0x2c, 0xab, 0x1b, 0xf9, 0xf2, 0x03, 0x5d, + 0xdd, 0x6c, 0x8b, 0x87, 0xfb, 0x1d, 0x00, 0xbc, 0xbf, 0xd6, 0x28, 0xf3, 0x6b, 0x8d, 0x7d, 0x56, + 0x26, 0x13, 0xef, 0x5c, 0x63, 0x91, 0x11, 0x76, 0xc7, 0xbe, 0x73, 0x1d, 0x5d, 0x76, 0xfa, 0x28, + 0xbd, 0x47, 0x86, 0x6c, 0xdd, 0xb2, 0x5d, 0xf5, 0x79, 0x49, 0x5a, 0x27, 0x91, 0x7c, 0x08, 0x92, + 0xff, 0xae, 0x94, 0xb8, 0x5b, 0x9a, 0x6f, 0x8e, 0x3f, 0xea, 0xac, 0xbb, 0x3a, 0xf6, 0xea, 0xf6, + 0xca, 0x67, 0xae, 0x6b, 0x4e, 0x1a, 0x4f, 0x87, 0xc8, 0xaf, 0x1e, 0x7d, 0x00, 0x23, 0xb5, 0x78, + 0x3a, 0x91, 0x25, 0xa7, 0x8f, 0xdb, 0x43, 0x47, 0xa9, 0x6f, 0xeb, 0x92, 0xd1, 0x41, 0xea, 0xf3, + 0x88, 0xcb, 0x48, 0x55, 0xdf, 0x41, 0xe2, 0x47, 0x62, 0x62, 0x5d, 0x5b, 0x71, 0x7c, 0x59, 0x39, + 0x8c, 0x2f, 0x9b, 0xb4, 0x41, 0x91, 0x03, 0xe8, 0x84, 0xa5, 0x71, 0x37, 0xa8, 0x98, 0xb2, 0xc7, + 0x12, 0xa7, 0xf3, 0x58, 0x1d, 0xb9, 0xc4, 0xa8, 0xac, 0xf9, 0x37, 0xb0, 0xfc, 0xcc, 0x48, 0x22, + 0x76, 0x06, 0x17, 0xbc, 0xc8, 0x3d, 0x17, 0xbc, 0xbc, 0x9f, 0x05, 0x67, 0x8d, 0x07, 0xe7, 0x27, + 0xa3, 0x05, 0xc4, 0x33, 0x39, 0x12, 0x98, 0xde, 0x1e, 0xc0, 0xb4, 0xce, 0xc1, 0x74, 0xc7, 0x90, + 0x5c, 0xa4, 0x0f, 0xd8, 0x2f, 0xe7, 0xe0, 0x28, 0x99, 0xf4, 0x17, 0xcd, 0x36, 0x8d, 0xb0, 0xfa, + 0x16, 0xe9, 0x90, 0x37, 0xdb, 0xf6, 0x87, 0x60, 0xe5, 0x62, 0x39, 0xe7, 0x7a, 0x6f, 0xc7, 0x5f, + 0x20, 0xe1, 0x5c, 0xbd, 0x4e, 0x14, 0xef, 0xb4, 0x89, 0xdf, 0x90, 0x1f, 0xfc, 0xc7, 0xdf, 0x65, + 0x34, 0x21, 0x7e, 0x97, 0xd1, 0x9f, 0x26, 0x5b, 0xb7, 0xc3, 0x45, 0xf7, 0x08, 0x3c, 0x65, 0xdb, + 0x29, 0xc1, 0x8a, 0x9e, 0x00, 0x77, 0x3f, 0x1a, 0xee, 0x64, 0x61, 0x04, 0x91, 0x21, 0xdd, 0xc9, + 0x30, 0x81, 0xc3, 0x74, 0x27, 0x1b, 0xc4, 0xc0, 0x18, 0x6e, 0xb5, 0xcf, 0xd1, 0xdd, 0x7c, 0xdc, + 0x6e, 0xd4, 0xbf, 0x96, 0x52, 0x1f, 0xa5, 0xbf, 0x97, 0x49, 0xe4, 0xff, 0x8c, 0xf9, 0x8a, 0x1f, + 0xa6, 0x93, 0x78, 0x34, 0xc7, 0x91, 0x1b, 0xc3, 0xba, 0x91, 0x84, 0x7d, 0xd1, 0xcf, 0x19, 0x6d, + 0x77, 0x7b, 0x44, 0x27, 0x3a, 0x2e, 0x7a, 0xb4, 0xfc, 0xeb, 0x91, 0xf1, 0x8b, 0xfa, 0x6f, 0x99, + 0x44, 0x21, 0xa4, 0x02, 0x91, 0x60, 0xb6, 0x22, 0x44, 0x9c, 0x20, 0xf0, 0x53, 0x2c, 0xbd, 0x31, + 0x6a, 0xf4, 0x59, 0xa3, 0x8d, 0xac, 0x47, 0xa0, 0x46, 0x63, 0xbe, 0x46, 0xa7, 0xd1, 0x71, 0xe4, + 0x7e, 0x44, 0x35, 0x3a, 0x10, 0xc9, 0x88, 0x34, 0x3a, 0x96, 0x5e, 0xfa, 0x32, 0x7e, 0xf5, 0x0c, + 0x9d, 0x48, 0xad, 0x1a, 0xe6, 0x05, 0xf5, 0x5f, 0xf2, 0xfe, 0xc5, 0xcc, 0xe7, 0x0c, 0x77, 0x9b, + 0xc6, 0x82, 0xf9, 0x3d, 0xe1, 0xbb, 0x51, 0x86, 0x88, 0xf7, 0xc2, 0x87, 0x93, 0xca, 0xed, 0x0b, + 0x27, 0x55, 0x84, 0x59, 0xc3, 0x74, 0x91, 0x6d, 0xea, 0x9d, 0xa5, 0x8e, 0xbe, 0xe5, 0x9c, 0x9a, + 0xe8, 0x7b, 0x79, 0x5d, 0x85, 0xc9, 0xa3, 0xf1, 0x7f, 0xb0, 0xd7, 0x57, 0x4e, 0xf2, 0xd7, 0x57, + 0x46, 0x44, 0xbf, 0x9a, 0x8a, 0x8e, 0x7e, 0x15, 0x44, 0xb7, 0x82, 0xc1, 0xc1, 0xb1, 0x45, 0x6d, + 0xe3, 0x84, 0xe1, 0xfe, 0x6e, 0x16, 0x8c, 0xc2, 0x16, 0x84, 0x7e, 0x7c, 0x9d, 0x9c, 0x68, 0x75, + 0xcf, 0x53, 0x84, 0xf9, 0x5e, 0x25, 0x48, 0x6c, 0xa1, 0xb2, 0x95, 0x97, 0x7b, 0x2a, 0x1f, 0x98, + 0x3c, 0x59, 0x01, 0x93, 0x87, 0x55, 0xaa, 0x9c, 0x98, 0x52, 0x25, 0x59, 0x2c, 0x14, 0xa9, 0xed, + 0x18, 0x4e, 0x23, 0xe5, 0xe0, 0x98, 0x1f, 0xed, 0xb6, 0xdb, 0x45, 0xba, 0xad, 0x9b, 0x2d, 0xa4, + 0x7e, 0x5c, 0x1a, 0x85, 0xd9, 0xbb, 0x04, 0x93, 0x46, 0xcb, 0x32, 0xeb, 0xc6, 0x33, 0xfd, 0xcb, + 0xe5, 0xe2, 0x83, 0xac, 0x63, 0x89, 0x54, 0xe8, 0x1f, 0x5a, 0xf0, 0xaf, 0x52, 0x81, 0xa9, 0x96, + 0x6e, 0xb7, 0x49, 0x10, 0xbe, 0x5c, 0xcf, 0x45, 0x4e, 0x91, 0x84, 0x4a, 0xfe, 0x2f, 0x5a, 0xf8, + 0xb7, 0x52, 0xe3, 0x85, 0x98, 0xef, 0x89, 0xe6, 0x11, 0x49, 0x6c, 0x31, 0xfc, 0x89, 0x93, 0xb9, + 0x27, 0x1d, 0x1b, 0x75, 0xf0, 0x1d, 0xf4, 0xa4, 0x87, 0x98, 0xd2, 0xc2, 0x84, 0xa4, 0xcb, 0x03, + 0xb8, 0xa8, 0x7d, 0x68, 0x8c, 0x7b, 0x79, 0x40, 0x88, 0x8b, 0xf4, 0x35, 0xf3, 0x9d, 0x79, 0x98, + 0x25, 0xbd, 0x1a, 0x15, 0xa7, 0xfa, 0x02, 0x7c, 0x85, 0xb4, 0x7b, 0x2f, 0xba, 0xa4, 0xd6, 0x0f, + 0x3e, 0x26, 0x17, 0x40, 0xbe, 0x10, 0x04, 0x1c, 0xf4, 0x1e, 0x93, 0xee, 0xdb, 0xfb, 0x7c, 0xcd, + 0x13, 0x9e, 0xc6, 0xbd, 0x6f, 0x1f, 0x5f, 0x7c, 0xfa, 0xf8, 0xfc, 0x8a, 0x0c, 0x72, 0xb1, 0xdd, + 0x56, 0x5b, 0x07, 0x87, 0xe2, 0x1a, 0x98, 0xf6, 0xdb, 0x4c, 0x18, 0x03, 0x92, 0x4d, 0x4a, 0xba, + 0x08, 0x1a, 0xc8, 0xa6, 0xd8, 0x1e, 0xfb, 0xae, 0x42, 0x4c, 0xd9, 0xe9, 0x83, 0xf2, 0xb2, 0x09, + 0xda, 0x68, 0x16, 0x2c, 0xeb, 0x02, 0x3e, 0x2a, 0xf3, 0x3c, 0x19, 0x72, 0x4b, 0xc8, 0x6d, 0x6d, + 0x8f, 0xa8, 0xcd, 0xec, 0xda, 0x1d, 0xbf, 0xcd, 0xec, 0xbb, 0x0f, 0x7f, 0xb0, 0x0d, 0xeb, 0xb3, + 0x35, 0x8f, 0x59, 0x1a, 0x77, 0x74, 0xe7, 0xd8, 0xd2, 0xd3, 0x07, 0xe7, 0xdf, 0x64, 0x98, 0x0b, + 0x56, 0xb8, 0x08, 0x26, 0xbf, 0x9c, 0x79, 0xa4, 0xad, 0x77, 0xaa, 0x9f, 0x4f, 0x16, 0x22, 0x2d, + 0x90, 0x29, 0x5f, 0xb3, 0x94, 0x17, 0x16, 0x13, 0x04, 0x4f, 0x13, 0x63, 0x70, 0x0c, 0x33, 0x78, + 0x19, 0x26, 0x31, 0x43, 0x8b, 0xc6, 0x1e, 0x76, 0x1d, 0xe4, 0x16, 0x1a, 0x9f, 0x35, 0x92, 0x85, + 0xc6, 0x3b, 0xf8, 0x85, 0x46, 0xc1, 0x88, 0xc7, 0xfe, 0x3a, 0x63, 0x42, 0x5f, 0x1a, 0xef, 0xff, + 0x91, 0x2f, 0x33, 0x26, 0xf0, 0xa5, 0x19, 0x50, 0x7e, 0xfa, 0x88, 0xbe, 0xee, 0x3f, 0xd1, 0xce, + 0xd6, 0xdf, 0x50, 0x55, 0xff, 0xaf, 0x63, 0x90, 0x3d, 0xeb, 0x3d, 0xfc, 0x8f, 0xf0, 0x46, 0xac, + 0x97, 0x8f, 0x20, 0x38, 0xc3, 0x53, 0x21, 0xeb, 0xd1, 0xa7, 0xd3, 0x96, 0x1b, 0xc5, 0x76, 0x77, + 0x3d, 0x46, 0x34, 0xfc, 0x9f, 0x72, 0x12, 0xf2, 0x8e, 0xb5, 0x6b, 0xb7, 0x3c, 0xf3, 0xd9, 0xd3, + 0x18, 0xfa, 0x96, 0x34, 0x28, 0x29, 0x47, 0x7a, 0x7e, 0x74, 0x2e, 0xa3, 0xcc, 0x05, 0x49, 0x32, + 0x77, 0x41, 0x52, 0x82, 0xfd, 0x03, 0x01, 0xde, 0xd2, 0xd7, 0x88, 0xbf, 0xc6, 0x77, 0x05, 0xb6, + 0x47, 0x05, 0x7b, 0x84, 0x58, 0x0e, 0xaa, 0x0e, 0x49, 0x1d, 0xbe, 0x79, 0xd1, 0x06, 0x71, 0xe0, + 0xc7, 0xea, 0xf0, 0x2d, 0xc0, 0xc3, 0x58, 0x4e, 0xa9, 0xe7, 0xa9, 0x93, 0xea, 0x7d, 0xa3, 0x44, + 0x37, 0xcb, 0x29, 0xfd, 0x81, 0xd0, 0x19, 0xa1, 0xf3, 0xea, 0xd0, 0xe8, 0x1c, 0x92, 0xfb, 0xea, + 0x1f, 0xc8, 0x38, 0x12, 0xa6, 0x6f, 0xe4, 0x88, 0x5f, 0x74, 0x94, 0x18, 0x22, 0x6f, 0x0c, 0xe6, + 0xe2, 0x40, 0xcf, 0x0e, 0x1f, 0x1a, 0x9c, 0x17, 0x1d, 0xc3, 0xff, 0xb8, 0x43, 0x83, 0x8b, 0x32, + 0x92, 0x3e, 0x90, 0xbf, 0x41, 0x2e, 0x16, 0x2b, 0xb6, 0x5c, 0x63, 0x6f, 0xc4, 0x2d, 0x8d, 0x1f, + 0x5e, 0x12, 0x46, 0x03, 0xde, 0x27, 0x21, 0xc2, 0xe1, 0xb8, 0xa3, 0x01, 0x8b, 0xb1, 0x91, 0x3e, + 0x4c, 0x7f, 0x97, 0xf7, 0xa4, 0x47, 0xd7, 0x66, 0xde, 0x48, 0x57, 0x03, 0xd0, 0xc1, 0xd1, 0x3a, + 0x03, 0x33, 0xcc, 0xd4, 0xdf, 0xbf, 0xb0, 0x86, 0x4b, 0x4b, 0x7a, 0xd0, 0x3d, 0x10, 0xd9, 0xc8, + 0x17, 0x06, 0x12, 0x2c, 0xf8, 0x8a, 0x30, 0x31, 0x96, 0xfb, 0xe0, 0xfc, 0x31, 0x6c, 0x4c, 0x58, + 0xfd, 0x1e, 0x8b, 0x55, 0x8d, 0xc7, 0xea, 0x36, 0x11, 0x31, 0x89, 0x8d, 0x69, 0x42, 0xf3, 0xc6, + 0x77, 0x04, 0x70, 0x69, 0x1c, 0x5c, 0x4f, 0x1d, 0x9a, 0x8f, 0xf4, 0x11, 0x7b, 0x05, 0xe9, 0x0e, + 0xeb, 0xc4, 0x64, 0x1f, 0x4d, 0x77, 0x48, 0x67, 0x03, 0x32, 0x37, 0x1b, 0x48, 0xe8, 0x6f, 0x1f, + 0xba, 0x91, 0xfa, 0xcc, 0x0d, 0x82, 0x28, 0x3b, 0x62, 0x7f, 0xfb, 0x81, 0x1c, 0xa4, 0x0f, 0xce, + 0x3f, 0xc9, 0x00, 0xcb, 0xb6, 0xb5, 0xdb, 0xad, 0xd9, 0x6d, 0x64, 0xab, 0x7f, 0x1b, 0x4e, 0x00, + 0x5e, 0x32, 0x82, 0x09, 0xc0, 0x3a, 0xc0, 0x56, 0x40, 0x9c, 0x6a, 0xf8, 0x2d, 0x62, 0xe6, 0x7e, + 0xc8, 0x94, 0xc6, 0xd0, 0xe0, 0xaf, 0x9c, 0x7d, 0x1a, 0x8f, 0x71, 0x5c, 0x9f, 0x15, 0x92, 0x1b, + 0xe5, 0x04, 0xe0, 0x5d, 0x01, 0xd6, 0x0d, 0x0e, 0xeb, 0xbb, 0x0f, 0xc0, 0x49, 0xfa, 0x98, 0xff, + 0xf3, 0x04, 0x4c, 0x93, 0xed, 0x3a, 0x22, 0xd3, 0x7f, 0x08, 0x41, 0x7f, 0xd9, 0x08, 0x40, 0xdf, + 0x80, 0x19, 0x2b, 0xa4, 0x4e, 0xfa, 0x54, 0x76, 0x01, 0x26, 0x16, 0x76, 0x86, 0x2f, 0x8d, 0x23, + 0xa3, 0x7e, 0x94, 0x45, 0x5e, 0xe3, 0x91, 0xbf, 0x23, 0x46, 0xde, 0x0c, 0xc5, 0x51, 0x42, 0xff, + 0xee, 0x00, 0xfa, 0x0d, 0x0e, 0xfa, 0xe2, 0x41, 0x58, 0x19, 0x43, 0xb8, 0x7d, 0x19, 0xb2, 0xf8, + 0x74, 0xdc, 0x6f, 0xa6, 0x38, 0xbf, 0x3f, 0x05, 0x13, 0xb8, 0xc9, 0x06, 0xf3, 0x0e, 0xff, 0xd5, + 0xfb, 0xa2, 0x6f, 0xba, 0xc8, 0x0e, 0x3c, 0x16, 0xfc, 0x57, 0x8f, 0x07, 0xdf, 0x2b, 0xd9, 0x39, + 0x95, 0x27, 0x1b, 0x91, 0x41, 0xc2, 0xd0, 0x93, 0x12, 0x56, 0xe2, 0x23, 0x3b, 0x2f, 0x37, 0xcc, + 0xa4, 0x64, 0x00, 0x23, 0xe9, 0x03, 0xff, 0x97, 0x59, 0x38, 0x45, 0x56, 0x95, 0x96, 0x6c, 0x6b, + 0xa7, 0xe7, 0x76, 0x2b, 0xe3, 0xe0, 0xba, 0x70, 0x3d, 0xcc, 0xb9, 0x9c, 0x3f, 0x36, 0xd5, 0x89, + 0x9e, 0x54, 0xf5, 0xcf, 0x58, 0x9f, 0x8a, 0xa7, 0xf3, 0x48, 0x2e, 0xc4, 0x08, 0x30, 0x8a, 0xf7, + 0xc4, 0x0b, 0xf5, 0x82, 0x8c, 0x32, 0x8b, 0x54, 0xf2, 0x50, 0x6b, 0x96, 0x81, 0x4e, 0xe5, 0x44, + 0x74, 0xea, 0x03, 0x81, 0x4e, 0xfd, 0x34, 0xa7, 0x53, 0xcb, 0x07, 0x17, 0x49, 0xfa, 0xba, 0xf5, + 0xda, 0x60, 0x63, 0x28, 0xd8, 0xb6, 0xdb, 0x49, 0x61, 0xb3, 0x8e, 0xf5, 0x47, 0xca, 0x72, 0xfe, + 0x48, 0xfc, 0x7d, 0x14, 0x09, 0x66, 0xc2, 0x3c, 0xd7, 0x11, 0xba, 0x34, 0x07, 0x92, 0xe1, 0x73, + 0x27, 0x19, 0xed, 0xa1, 0xe6, 0xba, 0xb1, 0x05, 0x8d, 0x61, 0x6d, 0x69, 0x0e, 0xf2, 0x4b, 0x46, + 0xc7, 0x45, 0xb6, 0xfa, 0x65, 0x3a, 0xd3, 0x7d, 0x6d, 0x8a, 0x03, 0xc0, 0x22, 0xe4, 0x37, 0x71, + 0x69, 0xd4, 0x64, 0xbe, 0x49, 0xac, 0xf5, 0x10, 0x0e, 0x35, 0xfa, 0x6f, 0xd2, 0xe8, 0x7c, 0x3d, + 0x64, 0x46, 0x36, 0x45, 0x4e, 0x10, 0x9d, 0x6f, 0x30, 0x0b, 0x63, 0xb9, 0x98, 0x2a, 0xaf, 0xa1, + 0x1d, 0x6f, 0x8c, 0xbf, 0x90, 0x1e, 0xc2, 0x05, 0x90, 0x8d, 0xb6, 0x83, 0x3b, 0xc7, 0x29, 0xcd, + 0x7b, 0x4c, 0xea, 0x2b, 0xd4, 0x2b, 0x2a, 0xc2, 0xf2, 0xb8, 0x7d, 0x85, 0x84, 0xb8, 0x48, 0x1f, + 0xb3, 0xef, 0x61, 0x47, 0xd1, 0x6e, 0x47, 0x6f, 0x21, 0x8f, 0xfb, 0xd4, 0x50, 0x23, 0x3d, 0x59, + 0xd6, 0xef, 0xc9, 0x98, 0x76, 0x9a, 0x3b, 0x40, 0x3b, 0x1d, 0x76, 0x19, 0x32, 0x90, 0x39, 0xae, + 0xf8, 0xa1, 0x2d, 0x43, 0xc6, 0xb2, 0x31, 0x86, 0x6b, 0x47, 0xfd, 0x83, 0xb4, 0x63, 0x6d, 0xad, + 0xc3, 0x6e, 0xd2, 0x50, 0x61, 0x8d, 0xec, 0xd0, 0xec, 0x30, 0x9b, 0x34, 0xd1, 0x3c, 0x8c, 0x01, + 0xad, 0x39, 0x8a, 0xd6, 0xe7, 0xe8, 0x30, 0x9a, 0xf2, 0x3e, 0xa9, 0x63, 0xd9, 0x6e, 0xb2, 0x7d, + 0x52, 0x8f, 0x3b, 0x0d, 0xff, 0x97, 0xf4, 0xe0, 0x15, 0x7f, 0xae, 0x7a, 0x54, 0xc3, 0x67, 0x82, + 0x83, 0x57, 0x83, 0x18, 0x48, 0x1f, 0xde, 0xb7, 0x1e, 0xd2, 0xe0, 0x39, 0x6c, 0x73, 0xa4, 0x6d, + 0x60, 0x64, 0x43, 0xe7, 0x30, 0xcd, 0x31, 0x9a, 0x87, 0xf4, 0xf1, 0xfa, 0x36, 0x33, 0x70, 0xbe, + 0x79, 0x8c, 0x03, 0xa7, 0xdf, 0x32, 0x73, 0x43, 0xb6, 0xcc, 0x61, 0xf7, 0x7f, 0xa8, 0xac, 0x47, + 0x37, 0x60, 0x0e, 0xb3, 0xff, 0x13, 0xc3, 0x44, 0xfa, 0x88, 0xbf, 0x45, 0x86, 0x5c, 0x7d, 0xfc, + 0xe3, 0xe5, 0xb0, 0x73, 0x11, 0x2c, 0xab, 0xfa, 0xc8, 0x86, 0xcb, 0x61, 0xe6, 0x22, 0x91, 0x2c, + 0x8c, 0x21, 0xf0, 0xfe, 0x51, 0x98, 0xc1, 0x4b, 0x22, 0xfe, 0x36, 0xeb, 0xb7, 0xe9, 0xa8, 0xf9, + 0x70, 0x8a, 0x6d, 0xf5, 0x1e, 0x98, 0xf4, 0xf7, 0xef, 0xe8, 0xc8, 0x39, 0x2f, 0xd6, 0x3e, 0x7d, + 0x2e, 0xb5, 0xe0, 0xff, 0x03, 0x39, 0x43, 0x8c, 0x7c, 0xaf, 0x76, 0x58, 0x67, 0x88, 0x43, 0xdd, + 0xaf, 0xfd, 0xd3, 0x70, 0x44, 0xfd, 0x2f, 0xe9, 0x61, 0xde, 0xbb, 0x8f, 0x9b, 0xed, 0xb3, 0x8f, + 0xfb, 0x71, 0x16, 0xcb, 0x3a, 0x8f, 0xe5, 0x9d, 0xa2, 0x22, 0x1c, 0xe1, 0x58, 0xfb, 0x9e, 0x00, + 0xce, 0xb3, 0x1c, 0x9c, 0x0b, 0x07, 0xe2, 0x65, 0x0c, 0x07, 0x1f, 0xb3, 0xe1, 0x98, 0xfb, 0x89, + 0x14, 0xdb, 0x71, 0xcf, 0xa9, 0x8a, 0xec, 0xbe, 0x53, 0x15, 0x5c, 0x4b, 0xcf, 0x1d, 0xb0, 0xa5, + 0x7f, 0x82, 0xd5, 0x8e, 0x06, 0xaf, 0x1d, 0x4f, 0x15, 0x47, 0x64, 0x74, 0x23, 0xf3, 0x7b, 0x03, + 0xf5, 0x38, 0xc7, 0xa9, 0x47, 0xe9, 0x60, 0xcc, 0xa4, 0xaf, 0x1f, 0x7f, 0xe8, 0x4f, 0x68, 0x0f, + 0xb9, 0xbd, 0x0f, 0xbb, 0x55, 0xcc, 0x09, 0x71, 0x64, 0x23, 0xf7, 0x30, 0x5b, 0xc5, 0x83, 0x38, + 0x19, 0x43, 0x2c, 0xb6, 0x59, 0x98, 0xc6, 0x3c, 0x9d, 0x33, 0xda, 0x5b, 0xc8, 0x55, 0x5f, 0x47, + 0x7c, 0x14, 0xfd, 0xc8, 0x97, 0x23, 0x0a, 0x4f, 0x14, 0x75, 0xde, 0x35, 0xa9, 0x47, 0x07, 0x61, + 0x72, 0x9e, 0x61, 0x70, 0xdc, 0x11, 0x14, 0x07, 0x72, 0x90, 0x3e, 0x64, 0x1f, 0x25, 0xee, 0x36, + 0xab, 0xfa, 0x25, 0x6b, 0xd7, 0x55, 0x1f, 0x1c, 0x41, 0x07, 0xbd, 0x00, 0xf9, 0x0e, 0xa6, 0x46, + 0x8f, 0x65, 0xc4, 0x4f, 0x77, 0xa8, 0x08, 0x48, 0xf9, 0x1a, 0xfd, 0x33, 0xe9, 0xd9, 0x8c, 0x50, + 0x8e, 0x84, 0xce, 0xb8, 0xcf, 0x66, 0x0c, 0x28, 0x7f, 0x2c, 0x77, 0xec, 0x4c, 0x7a, 0xa5, 0x1b, + 0x3b, 0x86, 0x3b, 0xa2, 0x08, 0x0e, 0x1d, 0x8f, 0x96, 0x1f, 0xc1, 0x01, 0xbf, 0x24, 0x3d, 0x31, + 0xca, 0x48, 0xc5, 0xfb, 0x7d, 0xdc, 0x27, 0x46, 0xe3, 0x8b, 0x4f, 0x1f, 0x93, 0x5f, 0x23, 0x2d, + 0xeb, 0x2c, 0x71, 0xbe, 0x4d, 0xd1, 0xaf, 0x77, 0xe8, 0xc6, 0x42, 0x58, 0x3b, 0xbc, 0xc6, 0xd2, + 0xb7, 0xfc, 0xf4, 0x81, 0xf9, 0x6f, 0x3f, 0x0e, 0xb9, 0x45, 0x74, 0x7e, 0x77, 0x4b, 0xbd, 0x03, + 0x26, 0x1b, 0x36, 0x42, 0x15, 0x73, 0xd3, 0xf2, 0xa4, 0xeb, 0x7a, 0xcf, 0x3e, 0x24, 0xf4, 0xcd, + 0xc3, 0x63, 0x1b, 0xe9, 0xed, 0xf0, 0xfc, 0x99, 0xff, 0xaa, 0xbe, 0x5c, 0x82, 0x6c, 0xdd, 0xd5, + 0x5d, 0x75, 0x2a, 0xc0, 0x56, 0x7d, 0x90, 0xc5, 0xe2, 0x0e, 0x1e, 0x8b, 0xeb, 0x39, 0x59, 0x60, + 0x0e, 0xe6, 0xbd, 0xff, 0x23, 0x00, 0x50, 0x61, 0xf2, 0x7e, 0xc7, 0x32, 0xbd, 0x1c, 0xfe, 0x11, + 0x48, 0xff, 0x5d, 0x7d, 0x4d, 0x20, 0xee, 0xbb, 0x38, 0x71, 0x3f, 0x56, 0xac, 0x88, 0x31, 0xac, + 0xb4, 0x49, 0x30, 0xe5, 0x89, 0x76, 0x05, 0xe9, 0x6d, 0x47, 0xfd, 0xb1, 0x50, 0xf9, 0x23, 0xc4, + 0xac, 0x7e, 0x50, 0x38, 0x18, 0x27, 0xa9, 0x55, 0x40, 0x3c, 0xda, 0xa3, 0xc3, 0xdf, 0xfc, 0x97, + 0xf8, 0x60, 0x24, 0x37, 0x43, 0xd6, 0x30, 0x37, 0x2d, 0xea, 0x5f, 0x78, 0x65, 0x04, 0x6d, 0x4f, + 0x27, 0x34, 0x9c, 0x51, 0x30, 0x52, 0x67, 0x3c, 0x5b, 0x63, 0xb9, 0xf4, 0x2e, 0xeb, 0x95, 0xae, + 0xfe, 0xef, 0x03, 0x85, 0xad, 0x28, 0x90, 0xed, 0xea, 0xee, 0x36, 0x2d, 0x1a, 0x3f, 0x7b, 0x36, + 0xf2, 0xae, 0xa9, 0x9b, 0x96, 0x79, 0x69, 0xc7, 0x78, 0x66, 0x70, 0xb7, 0x2e, 0x97, 0xe6, 0x71, + 0xbe, 0x85, 0x4c, 0x64, 0xeb, 0x2e, 0xaa, 0xef, 0x6d, 0xe1, 0x39, 0xd6, 0xa4, 0xc6, 0x26, 0x25, + 0xd6, 0x7f, 0x8f, 0xe3, 0x68, 0xfd, 0xdf, 0x34, 0x3a, 0x08, 0x47, 0x6a, 0xa2, 0xfa, 0xef, 0xbf, + 0x27, 0xd2, 0xff, 0x3e, 0x45, 0xa4, 0x8f, 0xc6, 0xbf, 0x4b, 0x30, 0x53, 0xf7, 0x14, 0xae, 0xbe, + 0xbb, 0xb3, 0xa3, 0xdb, 0x97, 0xd4, 0x6b, 0x43, 0x54, 0x18, 0xd5, 0xcc, 0xf0, 0x7e, 0x29, 0x7f, + 0x20, 0x7c, 0xad, 0x34, 0x6d, 0xda, 0x4c, 0x09, 0x89, 0xdb, 0xc1, 0xe3, 0x21, 0xe7, 0xa9, 0xb7, + 0xef, 0x71, 0x19, 0xdb, 0x10, 0x48, 0x4e, 0xc1, 0x88, 0x56, 0x03, 0x79, 0x1b, 0x43, 0x34, 0x0d, + 0x09, 0x8e, 0xd6, 0x5d, 0xbd, 0x75, 0x61, 0xd9, 0xb2, 0xad, 0x5d, 0xd7, 0x30, 0x91, 0xa3, 0x3e, + 0x2a, 0x44, 0xc0, 0xd7, 0xff, 0x4c, 0xa8, 0xff, 0xea, 0x0f, 0x32, 0xa2, 0xa3, 0x68, 0xd0, 0xad, + 0xb2, 0xe4, 0x23, 0x02, 0x54, 0x89, 0x8d, 0x8b, 0x22, 0x14, 0xd3, 0x17, 0xda, 0x9b, 0x65, 0x28, + 0x94, 0x1f, 0xe8, 0x5a, 0xb6, 0xbb, 0x6a, 0xb5, 0xf4, 0x8e, 0xe3, 0x5a, 0x36, 0x52, 0x6b, 0xb1, + 0x52, 0xf3, 0x7a, 0x98, 0xb6, 0xd5, 0x0a, 0x07, 0x47, 0xfa, 0xc6, 0xaa, 0x9d, 0xcc, 0xeb, 0xf8, + 0x47, 0x85, 0x77, 0x19, 0x89, 0x54, 0x7a, 0x39, 0x8a, 0xd0, 0xf3, 0x7e, 0x5d, 0x5a, 0xb2, 0xc3, + 0x12, 0x62, 0x3b, 0x8f, 0x42, 0x4c, 0x8d, 0x61, 0xa9, 0x5c, 0x82, 0xd9, 0xfa, 0xee, 0xf9, 0x80, + 0x88, 0xc3, 0x1a, 0x21, 0xaf, 0x17, 0x8e, 0x52, 0x41, 0x15, 0x8f, 0x25, 0x14, 0x21, 0xdf, 0xeb, + 0x60, 0xd6, 0x61, 0xb3, 0x51, 0xbc, 0xf9, 0x44, 0xc1, 0xe8, 0x14, 0x83, 0x4b, 0x4d, 0x5f, 0x80, + 0xef, 0x95, 0x60, 0xb6, 0xd6, 0x45, 0x26, 0x6a, 0x13, 0x2f, 0x48, 0x4e, 0x80, 0x2f, 0x4f, 0x28, + 0x40, 0x8e, 0x50, 0x84, 0x00, 0x43, 0x8f, 0xe5, 0x45, 0x5f, 0x78, 0x61, 0x42, 0x22, 0xc1, 0xc5, + 0x95, 0x96, 0xbe, 0xe0, 0xbe, 0x24, 0xc1, 0xb4, 0xb6, 0x6b, 0xae, 0xdb, 0x96, 0x37, 0x1a, 0xdb, + 0xea, 0x9d, 0x61, 0x07, 0x71, 0x13, 0x1c, 0x6b, 0xef, 0xda, 0x78, 0xfd, 0xa9, 0x62, 0xd6, 0x51, + 0xcb, 0x32, 0xdb, 0x0e, 0xae, 0x47, 0x4e, 0xdb, 0xff, 0xe1, 0xf6, 0xec, 0xf3, 0xbe, 0x21, 0x67, + 0xd4, 0x17, 0x08, 0x87, 0xba, 0x21, 0x95, 0x67, 0x8a, 0x16, 0xef, 0x09, 0x04, 0x03, 0xda, 0x0c, + 0x2a, 0x21, 0x7d, 0xe1, 0x7e, 0x4e, 0x02, 0xa5, 0xd8, 0x6a, 0x59, 0xbb, 0xa6, 0x5b, 0x47, 0x1d, + 0xd4, 0x72, 0x1b, 0xb6, 0xde, 0x42, 0xac, 0xfd, 0x5c, 0x00, 0xb9, 0x6d, 0xd8, 0xb4, 0x0f, 0xf6, + 0x1e, 0xa9, 0x1c, 0x5f, 0x2e, 0xbc, 0xe3, 0x48, 0x6a, 0xb9, 0xbf, 0x94, 0x04, 0xe2, 0x14, 0xdb, + 0x57, 0x14, 0x2c, 0x28, 0x7d, 0xa9, 0x7e, 0x42, 0x82, 0x29, 0xbf, 0xc7, 0xde, 0x12, 0x11, 0xe6, + 0xaf, 0x25, 0x9c, 0x8c, 0x04, 0xc4, 0x13, 0xc8, 0xf0, 0x9d, 0x09, 0x66, 0x15, 0x51, 0xf4, 0x93, + 0x89, 0xae, 0x98, 0x5c, 0x74, 0xde, 0x6b, 0xb5, 0xd6, 0x5c, 0xaa, 0xad, 0x2e, 0x96, 0xb5, 0x82, + 0xac, 0x7e, 0x59, 0x82, 0xec, 0xba, 0x61, 0x6e, 0xb1, 0xd1, 0x95, 0x8e, 0x7b, 0x76, 0x64, 0x1b, + 0x3d, 0x40, 0x5b, 0x3a, 0x79, 0x51, 0x6e, 0x85, 0xe3, 0xe6, 0xee, 0xce, 0x79, 0x64, 0xd7, 0x36, + 0xf1, 0x28, 0xeb, 0x34, 0xac, 0x3a, 0x32, 0x89, 0x11, 0x9a, 0xd3, 0xfa, 0x7e, 0xe3, 0x4d, 0x30, + 0x81, 0xc9, 0x83, 0xc7, 0x49, 0x84, 0xc4, 0x03, 0xa6, 0x24, 0x86, 0xa9, 0x44, 0xd3, 0x86, 0x3e, + 0xc4, 0xd3, 0xd7, 0xd4, 0x3f, 0xca, 0xc1, 0x89, 0xa2, 0x79, 0x09, 0xdb, 0x14, 0xa4, 0x83, 0x2f, + 0x6d, 0xeb, 0xe6, 0x16, 0xc2, 0x03, 0x44, 0x20, 0x71, 0x36, 0x44, 0x7f, 0x86, 0x0f, 0xd1, 0xaf, + 0x68, 0x30, 0x61, 0xd9, 0x6d, 0x64, 0x2f, 0x5c, 0xc2, 0x3c, 0xf5, 0x2e, 0x3b, 0xd3, 0x36, 0xd9, + 0xaf, 0x88, 0x79, 0x4a, 0x7e, 0xbe, 0x46, 0xfe, 0xd7, 0x7c, 0x42, 0x67, 0x6e, 0x82, 0x09, 0x9a, + 0xa6, 0xcc, 0xc0, 0x64, 0x4d, 0x5b, 0x2c, 0x6b, 0xcd, 0xca, 0x62, 0xe1, 0x88, 0x72, 0x19, 0x1c, + 0xad, 0x34, 0xca, 0x5a, 0xb1, 0x51, 0xa9, 0x55, 0x9b, 0x38, 0xbd, 0x90, 0x51, 0x9f, 0x9b, 0x15, + 0xf5, 0xec, 0x8d, 0x67, 0xa6, 0x1f, 0xac, 0x1a, 0x4c, 0xb4, 0x48, 0x06, 0x3c, 0x84, 0x4e, 0x27, + 0xaa, 0x1d, 0x25, 0x48, 0x12, 0x34, 0x9f, 0x90, 0x72, 0x1a, 0xe0, 0xa2, 0x6d, 0x99, 0x5b, 0xe1, + 0xa9, 0xc3, 0x49, 0x8d, 0x49, 0x51, 0x1f, 0xcc, 0x40, 0x9e, 0xfc, 0x83, 0xaf, 0x24, 0xc1, 0x4f, + 0xa1, 0xe0, 0xfd, 0x77, 0xcf, 0xe2, 0xc5, 0xf2, 0x0a, 0x27, 0x5a, 0xf4, 0xd5, 0xd3, 0x45, 0x22, + 0x03, 0x62, 0x09, 0xd3, 0xaa, 0xdc, 0x0c, 0x79, 0xf2, 0x2f, 0xf5, 0x3a, 0x88, 0x0e, 0x2f, 0x4a, + 0xb2, 0x09, 0xfa, 0x29, 0x8b, 0xcb, 0x34, 0x7d, 0x6d, 0xfe, 0x90, 0x04, 0x93, 0x55, 0xe4, 0x96, + 0xb6, 0x51, 0xeb, 0x82, 0xfa, 0x18, 0x7e, 0x01, 0xb4, 0x63, 0x20, 0xd3, 0xbd, 0x6f, 0xa7, 0x13, + 0x2c, 0x80, 0xfa, 0x09, 0xea, 0xf3, 0xd9, 0xce, 0xf7, 0x6e, 0x5e, 0x7f, 0x6e, 0xec, 0x53, 0x57, + 0xbf, 0x84, 0x08, 0x95, 0x39, 0x09, 0x79, 0x1b, 0x39, 0xbb, 0x1d, 0x7f, 0x11, 0x8d, 0xbe, 0xa9, + 0x0f, 0x05, 0xe2, 0x2c, 0x71, 0xe2, 0xbc, 0x59, 0xbc, 0x88, 0x31, 0xc4, 0x2b, 0xcd, 0xc2, 0x44, + 0xc5, 0x34, 0x5c, 0x43, 0xef, 0xa8, 0x2f, 0xc8, 0xc2, 0x6c, 0x1d, 0xb9, 0xeb, 0xba, 0xad, 0xef, + 0x20, 0x17, 0xd9, 0x8e, 0xfa, 0x5d, 0xbe, 0x4f, 0xe8, 0x76, 0x74, 0x77, 0xd3, 0xb2, 0x77, 0x7c, + 0xd5, 0xf4, 0xdf, 0x3d, 0xd5, 0xdc, 0x43, 0xb6, 0x13, 0xf2, 0xe5, 0xbf, 0x7a, 0x5f, 0x2e, 0x5a, + 0xf6, 0x05, 0x6f, 0x10, 0xa4, 0xd3, 0x34, 0xfa, 0xea, 0xd1, 0xeb, 0x58, 0x5b, 0xab, 0x68, 0x0f, + 0xf9, 0xe1, 0xd2, 0x82, 0x77, 0x6f, 0x2e, 0xd0, 0xb6, 0xaa, 0x96, 0xeb, 0x75, 0xda, 0xab, 0xd6, + 0x16, 0x89, 0x17, 0x3b, 0xa9, 0xf1, 0x89, 0x61, 0x2e, 0x7d, 0x0f, 0xe1, 0x5c, 0x79, 0x36, 0x17, + 0x4d, 0x54, 0xe6, 0x41, 0x09, 0x7e, 0x6b, 0xa0, 0x0e, 0xda, 0x41, 0xae, 0x7d, 0x09, 0x5f, 0x0b, + 0x31, 0xa9, 0xf5, 0xf9, 0x42, 0x07, 0x68, 0xf1, 0xc9, 0x3a, 0x95, 0xde, 0x3c, 0x27, 0xb9, 0x03, + 0x4d, 0xd6, 0x45, 0x28, 0x8e, 0xe5, 0xda, 0x2b, 0xd9, 0xb3, 0x66, 0x5e, 0x29, 0x43, 0x16, 0x0f, + 0x9e, 0x6f, 0xc9, 0x70, 0x2b, 0x4c, 0x3b, 0xc8, 0x71, 0xf4, 0x2d, 0xe4, 0xaf, 0x30, 0xd1, 0x57, + 0xe5, 0x36, 0xc8, 0x75, 0x30, 0xa6, 0x64, 0x70, 0xb8, 0x96, 0xab, 0x99, 0x67, 0x60, 0x78, 0xb4, + 0x82, 0x91, 0x00, 0xc3, 0xad, 0x91, 0x3f, 0xce, 0xdc, 0x03, 0x39, 0x02, 0xff, 0x14, 0xe4, 0x16, + 0xcb, 0x0b, 0x1b, 0xcb, 0x85, 0x23, 0xde, 0xa3, 0xcf, 0xdf, 0x14, 0xe4, 0x96, 0x8a, 0x8d, 0xe2, + 0x6a, 0x41, 0xf2, 0xea, 0x51, 0xa9, 0x2e, 0xd5, 0x0a, 0xb2, 0x97, 0xb8, 0x5e, 0xac, 0x56, 0x4a, + 0x85, 0xac, 0x32, 0x0d, 0x13, 0xe7, 0x8a, 0x5a, 0xb5, 0x52, 0x5d, 0x2e, 0xe4, 0xd4, 0xbf, 0x63, + 0xf1, 0xbb, 0x9d, 0xc7, 0xef, 0xba, 0x28, 0x9e, 0xfa, 0x41, 0xf6, 0xaa, 0x00, 0xb2, 0x3b, 0x39, + 0xc8, 0x7e, 0x5c, 0x84, 0xc8, 0x18, 0xdc, 0x99, 0xf2, 0x30, 0xb1, 0x6e, 0x5b, 0x2d, 0xe4, 0x38, + 0xea, 0xaf, 0x4b, 0x90, 0x2f, 0xe9, 0x66, 0x0b, 0x75, 0xd4, 0x2b, 0x42, 0xa8, 0x88, 0xab, 0x68, + 0x26, 0x38, 0x2d, 0xf6, 0x4f, 0x19, 0xd1, 0xde, 0x8f, 0xd2, 0x9d, 0x27, 0x34, 0x23, 0xe4, 0x23, + 0xd6, 0xcb, 0xc5, 0x92, 0x1a, 0xc3, 0xd5, 0x38, 0x12, 0x4c, 0xd1, 0xd5, 0x80, 0xf3, 0x88, 0x9d, + 0x87, 0x7f, 0x37, 0x23, 0x3a, 0x39, 0xf4, 0x6b, 0x10, 0x90, 0x89, 0x90, 0x87, 0xd8, 0x44, 0x70, + 0x10, 0xb5, 0x31, 0x6c, 0x1e, 0x4a, 0x30, 0xbd, 0x61, 0x3a, 0xfd, 0x84, 0x22, 0x1e, 0x47, 0xdf, + 0xaf, 0x06, 0x43, 0xe8, 0x40, 0x71, 0xf4, 0x07, 0xd3, 0x4b, 0x5f, 0x30, 0xdf, 0xcd, 0xc0, 0xf1, + 0x65, 0x64, 0x22, 0xdb, 0x68, 0x91, 0x1a, 0xf8, 0x92, 0xb8, 0x93, 0x97, 0xc4, 0x63, 0x38, 0xce, + 0xfb, 0xfd, 0xc1, 0x4b, 0xe0, 0xb5, 0x81, 0x04, 0xee, 0xe6, 0x24, 0x70, 0x93, 0x20, 0x9d, 0x31, + 0xdc, 0x87, 0x3e, 0x05, 0x33, 0x55, 0xcb, 0x35, 0x36, 0x8d, 0x16, 0xf1, 0x41, 0x7b, 0x85, 0x0c, + 0xd9, 0x55, 0xc3, 0x71, 0xd5, 0x62, 0xd8, 0x9d, 0x5c, 0x03, 0xd3, 0x86, 0xd9, 0xea, 0xec, 0xb6, + 0x91, 0x86, 0x74, 0xd2, 0xaf, 0x4c, 0x6a, 0x6c, 0x52, 0xb8, 0xb5, 0xef, 0xb1, 0x25, 0xfb, 0x5b, + 0xfb, 0x9f, 0x16, 0x5e, 0x86, 0x61, 0x59, 0xc0, 0x01, 0x29, 0x23, 0xec, 0xae, 0x22, 0xcc, 0x9a, + 0x4c, 0x56, 0xdf, 0x60, 0xef, 0xbd, 0x50, 0x80, 0x25, 0xa7, 0xf1, 0x7f, 0xa8, 0xef, 0x17, 0x6a, + 0xac, 0x83, 0x18, 0x4a, 0x86, 0xcc, 0xd2, 0x10, 0x93, 0x64, 0x05, 0xe6, 0x2a, 0xd5, 0x46, 0x59, + 0xab, 0x16, 0x57, 0x69, 0x16, 0x59, 0xfd, 0x77, 0x09, 0x72, 0x1a, 0xea, 0x76, 0x2e, 0xb1, 0x11, + 0xa3, 0xa9, 0xa3, 0x78, 0x26, 0x70, 0x14, 0x57, 0x96, 0x00, 0xf4, 0x96, 0x57, 0x30, 0xbe, 0x52, + 0x4b, 0xea, 0x1b, 0xc7, 0x94, 0xab, 0x60, 0x31, 0xc8, 0xad, 0x31, 0x7f, 0xaa, 0x2f, 0x14, 0xde, + 0x39, 0xe2, 0xa8, 0x61, 0x0e, 0x23, 0xfa, 0x84, 0x0f, 0x08, 0x6d, 0xf6, 0x0c, 0x24, 0x77, 0x38, + 0xe2, 0xff, 0x8a, 0x04, 0xd9, 0x86, 0xd7, 0x5b, 0x32, 0x1d, 0xe7, 0x1f, 0x0f, 0xa7, 0xe3, 0x1e, + 0x99, 0x08, 0x1d, 0xbf, 0x0b, 0x66, 0x58, 0x8d, 0xa5, 0xae, 0x12, 0xb1, 0x2a, 0xce, 0xfd, 0x30, + 0x8c, 0x86, 0xf7, 0x61, 0xe7, 0x70, 0x44, 0xfc, 0xc9, 0xc7, 0x02, 0xac, 0xa1, 0x9d, 0xf3, 0xc8, + 0x76, 0xb6, 0x8d, 0xae, 0xfa, 0xf7, 0x32, 0x4c, 0x2d, 0x23, 0xb7, 0xee, 0xea, 0xee, 0xae, 0xd3, + 0xb3, 0xdd, 0x69, 0x5a, 0x25, 0xbd, 0xb5, 0x8d, 0x68, 0x77, 0xe4, 0xbf, 0xaa, 0xef, 0x96, 0x45, + 0xfd, 0x89, 0xc2, 0x72, 0xe6, 0x83, 0x32, 0x22, 0x30, 0x79, 0x1c, 0x64, 0xdb, 0xba, 0xab, 0x53, + 0x2c, 0xae, 0xe8, 0xc1, 0x22, 0x24, 0xa4, 0xe1, 0x6c, 0xea, 0x6f, 0x4b, 0x22, 0x0e, 0x45, 0x02, + 0xe5, 0x27, 0x03, 0xe1, 0xfd, 0x99, 0x21, 0x50, 0x38, 0x06, 0xb3, 0xd5, 0x5a, 0xa3, 0xb9, 0x5a, + 0x5b, 0x5e, 0x2e, 0x7b, 0xa9, 0x05, 0x59, 0x39, 0x09, 0xca, 0x7a, 0xf1, 0xbe, 0xb5, 0x72, 0xb5, + 0xd1, 0xac, 0xd6, 0x16, 0xcb, 0xf4, 0xcf, 0xac, 0x72, 0x14, 0xa6, 0x4b, 0xc5, 0xd2, 0x8a, 0x9f, + 0x90, 0x53, 0x4e, 0xc1, 0xf1, 0xb5, 0xf2, 0xda, 0x42, 0x59, 0xab, 0xaf, 0x54, 0xd6, 0x9b, 0x1e, + 0x99, 0xa5, 0xda, 0x46, 0x75, 0xb1, 0x90, 0x57, 0x54, 0x38, 0xc9, 0x7c, 0x39, 0xa7, 0xd5, 0xaa, + 0xcb, 0xcd, 0x7a, 0xa3, 0xd8, 0x28, 0x17, 0x26, 0x94, 0xcb, 0xe0, 0x68, 0xa9, 0x58, 0xc5, 0xd9, + 0x4b, 0xb5, 0x6a, 0xb5, 0x5c, 0x6a, 0x14, 0x26, 0xd5, 0x1f, 0x64, 0x61, 0xba, 0xe2, 0x54, 0xf5, + 0x1d, 0x74, 0x56, 0xef, 0x18, 0x6d, 0xf5, 0x05, 0xcc, 0xcc, 0xe3, 0x3a, 0x98, 0xb5, 0xc9, 0x23, + 0x6a, 0x37, 0x0c, 0x44, 0xd0, 0x9c, 0xd5, 0xf8, 0x44, 0x6f, 0x4e, 0x6e, 0x62, 0x02, 0xfe, 0x9c, + 0x9c, 0xbc, 0x29, 0x0b, 0x00, 0xe4, 0xa9, 0x11, 0x5e, 0xee, 0x7a, 0xa6, 0xb7, 0x35, 0xe9, 0x3b, + 0xc8, 0x41, 0xf6, 0x9e, 0xd1, 0x42, 0x7e, 0x4e, 0x8d, 0xf9, 0x4b, 0xfd, 0xaa, 0x2c, 0xba, 0xbf, + 0xc8, 0x80, 0xca, 0x54, 0x27, 0xa2, 0x37, 0xfc, 0x05, 0x59, 0x64, 0x77, 0x50, 0x88, 0x64, 0x32, + 0x4d, 0x79, 0xb1, 0x34, 0xdc, 0xb2, 0x6d, 0xa3, 0x56, 0x6b, 0xd6, 0x57, 0x6a, 0x5a, 0xa3, 0x20, + 0x2b, 0x33, 0x30, 0xe9, 0xbd, 0xae, 0xd6, 0xaa, 0xcb, 0x85, 0xac, 0x72, 0x02, 0x8e, 0xad, 0x14, + 0xeb, 0xcd, 0x4a, 0xf5, 0x6c, 0x71, 0xb5, 0xb2, 0xd8, 0x2c, 0xad, 0x14, 0xb5, 0x7a, 0x21, 0xa7, + 0x5c, 0x01, 0x27, 0x1a, 0x95, 0xb2, 0xd6, 0x5c, 0x2a, 0x17, 0x1b, 0x1b, 0x5a, 0xb9, 0xde, 0xac, + 0xd6, 0x9a, 0xd5, 0xe2, 0x5a, 0xb9, 0x90, 0xf7, 0x9a, 0x3f, 0xfe, 0x14, 0xaa, 0xcd, 0xc4, 0x7e, + 0x65, 0x9c, 0x8c, 0x50, 0xc6, 0xa9, 0x5e, 0x65, 0x04, 0x56, 0xad, 0xb4, 0x72, 0xbd, 0xac, 0x9d, + 0x2d, 0x17, 0xa6, 0xfb, 0xe9, 0xda, 0x8c, 0x72, 0x1c, 0x0a, 0x1e, 0x0f, 0xcd, 0x4a, 0xdd, 0xcf, + 0xb9, 0x58, 0x98, 0x55, 0x3f, 0x91, 0x87, 0x93, 0x1a, 0xda, 0x32, 0x1c, 0x17, 0xd9, 0xeb, 0xfa, + 0xa5, 0x1d, 0x64, 0xba, 0x7e, 0x27, 0xff, 0x3f, 0x13, 0x2b, 0xe3, 0x1a, 0xcc, 0x76, 0x09, 0x8d, + 0x35, 0xe4, 0x6e, 0x5b, 0x6d, 0x3a, 0x0a, 0x3f, 0x26, 0xb2, 0xe7, 0x98, 0x5f, 0x67, 0xb3, 0x6b, + 0xfc, 0xdf, 0x8c, 0x6e, 0xcb, 0x31, 0xba, 0x9d, 0x1d, 0x46, 0xb7, 0x95, 0xab, 0x60, 0x6a, 0xd7, + 0x41, 0x76, 0x79, 0x47, 0x37, 0x3a, 0xfe, 0xe5, 0x9c, 0x41, 0x82, 0xfa, 0x8e, 0xac, 0xe8, 0x89, + 0x15, 0xa6, 0x2e, 0xfd, 0xc5, 0x18, 0xd1, 0xb7, 0x9e, 0x06, 0xa0, 0x95, 0xdd, 0xb0, 0x3b, 0x54, + 0x59, 0x99, 0x14, 0x8f, 0xbf, 0xf3, 0x46, 0xa7, 0x63, 0x98, 0x5b, 0xc1, 0xbe, 0x7f, 0x98, 0xa0, + 0xbe, 0x58, 0x16, 0x39, 0xc1, 0x92, 0x94, 0xb7, 0x64, 0xad, 0xe9, 0x85, 0xd2, 0x98, 0xfb, 0xdd, + 0xfd, 0x4d, 0x27, 0xaf, 0x14, 0x60, 0x06, 0xa7, 0xd1, 0x16, 0x58, 0x98, 0xf0, 0xfa, 0x60, 0x9f, + 0xdc, 0x5a, 0xb9, 0xb1, 0x52, 0x5b, 0x0c, 0xbe, 0x4d, 0x7a, 0x24, 0x3d, 0x66, 0x8a, 0xd5, 0xfb, + 0x70, 0x6b, 0x9c, 0x52, 0x1e, 0x05, 0x57, 0x30, 0x1d, 0x76, 0x71, 0x55, 0x2b, 0x17, 0x17, 0xef, + 0x6b, 0x96, 0x9f, 0x5e, 0xa9, 0x37, 0xea, 0x7c, 0xe3, 0xf2, 0xdb, 0xd1, 0xb4, 0xc7, 0x6f, 0x79, + 0xad, 0x58, 0x59, 0xa5, 0xfd, 0xfb, 0x52, 0x4d, 0x5b, 0x2b, 0x36, 0x0a, 0x33, 0xea, 0x2b, 0x65, + 0x28, 0x2c, 0x23, 0x77, 0xdd, 0xb2, 0x5d, 0xbd, 0xb3, 0x6a, 0x98, 0x17, 0x36, 0xec, 0x0e, 0x37, + 0xd9, 0x14, 0x0e, 0xd3, 0xc1, 0x0f, 0x91, 0x1c, 0xc1, 0xe8, 0x1d, 0xf1, 0x2e, 0xce, 0x16, 0x2a, + 0x53, 0x98, 0xa0, 0x3e, 0x4b, 0x12, 0x59, 0xee, 0x16, 0x2f, 0x35, 0x99, 0x9e, 0x3c, 0x7b, 0xdc, + 0xe3, 0x73, 0x1f, 0xd4, 0xf2, 0xea, 0xf3, 0xb2, 0x30, 0xb9, 0x64, 0x98, 0x7a, 0xc7, 0x78, 0x26, + 0x17, 0xbf, 0x34, 0xec, 0x63, 0x32, 0x31, 0x7d, 0x8c, 0x34, 0xd4, 0xf8, 0xf9, 0xab, 0xb2, 0xe8, + 0xf2, 0x02, 0x23, 0x7b, 0x9f, 0xc9, 0x88, 0xc1, 0xf3, 0xc3, 0x92, 0xc8, 0xf2, 0xc2, 0x60, 0x7a, + 0xc9, 0x30, 0xfc, 0xd4, 0x0f, 0x87, 0x8d, 0xd5, 0xd3, 0xbe, 0x27, 0xfb, 0xa9, 0xc2, 0x94, 0xfa, + 0xe7, 0x32, 0xa8, 0xcb, 0xc8, 0x3d, 0x8b, 0xec, 0x60, 0x2a, 0x80, 0x7b, 0x7d, 0x6a, 0x6f, 0x33, + 0x4d, 0xf6, 0x2d, 0x2c, 0x80, 0xe7, 0x78, 0x00, 0x8b, 0x31, 0x8d, 0x27, 0x82, 0x74, 0x44, 0xe3, + 0xad, 0x40, 0xde, 0xc1, 0xdf, 0xa9, 0x9a, 0x3d, 0x3e, 0x7a, 0xb8, 0xc4, 0xc4, 0x58, 0xea, 0x84, + 0xb0, 0x46, 0x09, 0xa8, 0xdf, 0x0b, 0x26, 0x41, 0x3f, 0xc5, 0x69, 0xc7, 0xd2, 0x81, 0x99, 0x4d, + 0xa6, 0x2f, 0x76, 0xba, 0xea, 0xd2, 0xcf, 0xbe, 0x51, 0x3f, 0x9c, 0x83, 0xe3, 0xfd, 0xaa, 0xa3, + 0xfe, 0x4e, 0x86, 0xdb, 0x61, 0x47, 0x78, 0xc8, 0xcf, 0xd0, 0x0d, 0x44, 0xef, 0x45, 0x79, 0x22, + 0x9c, 0x08, 0x96, 0xe1, 0x1a, 0x56, 0x15, 0x5d, 0x74, 0x3a, 0xc8, 0x75, 0x91, 0x8d, 0xab, 0x36, + 0xa9, 0xf5, 0xff, 0xa8, 0x3c, 0x19, 0x2e, 0x37, 0x4c, 0xc7, 0x68, 0x23, 0xbb, 0x61, 0x74, 0x9d, + 0xa2, 0xd9, 0x6e, 0xec, 0xba, 0x96, 0x6d, 0xe8, 0xf4, 0x2a, 0xc9, 0x49, 0x2d, 0xea, 0xb3, 0x72, + 0x23, 0x14, 0x0c, 0xa7, 0x66, 0x9e, 0xb7, 0x74, 0xbb, 0x6d, 0x98, 0x5b, 0xab, 0x86, 0xe3, 0x52, + 0x0f, 0xe0, 0x7d, 0xe9, 0xea, 0x3f, 0xc8, 0xa2, 0x87, 0xe9, 0x06, 0xc0, 0x1a, 0xd1, 0xa1, 0x3c, + 0x5f, 0x16, 0x39, 0x1e, 0x97, 0x8c, 0x76, 0x32, 0x65, 0x79, 0xee, 0xb8, 0x0d, 0x89, 0xfe, 0x23, + 0x38, 0xee, 0x5a, 0x48, 0xba, 0x6f, 0x08, 0x9c, 0x2d, 0x6b, 0x95, 0xa5, 0x4a, 0xd9, 0x33, 0x2b, + 0x4e, 0xc0, 0xb1, 0xf0, 0xdb, 0xe2, 0x7d, 0xcd, 0x7a, 0xb9, 0xda, 0x28, 0x4c, 0x7a, 0xfd, 0x14, + 0x49, 0x5e, 0x2a, 0x56, 0x56, 0xcb, 0x8b, 0xcd, 0x46, 0xcd, 0xfb, 0xb2, 0x38, 0x9c, 0x69, 0xa1, + 0x3e, 0x98, 0x85, 0xa3, 0x58, 0xb6, 0x97, 0xb0, 0x54, 0x3d, 0xa1, 0xf4, 0xf8, 0xda, 0x06, 0x00, + 0x4d, 0x11, 0xf1, 0xaa, 0x9f, 0x15, 0xbe, 0x29, 0x93, 0x81, 0xb0, 0xa7, 0x8c, 0x08, 0xcd, 0xf8, + 0xae, 0x24, 0x12, 0xa1, 0x42, 0x98, 0x6c, 0x32, 0xa5, 0xf8, 0xd7, 0x71, 0x8f, 0x38, 0xd1, 0xe0, + 0x63, 0x2b, 0xb3, 0x84, 0x7f, 0x7e, 0xfa, 0x7a, 0x45, 0xc3, 0xea, 0x30, 0x07, 0x80, 0x53, 0xb0, + 0x06, 0x11, 0x3d, 0xe8, 0x3b, 0x5e, 0x45, 0xe9, 0x41, 0xb1, 0xd4, 0xa8, 0x9c, 0x2d, 0x47, 0xe9, + 0xc1, 0x67, 0x64, 0x98, 0x5c, 0x46, 0xae, 0x37, 0xa7, 0x72, 0xd4, 0xa7, 0x08, 0xac, 0xff, 0x78, + 0x66, 0x4c, 0xc7, 0x6a, 0xe9, 0x9d, 0x60, 0x19, 0x80, 0xbc, 0xa9, 0xcf, 0x19, 0xc6, 0x04, 0xf1, + 0x8b, 0x8e, 0x18, 0xaf, 0x7e, 0x12, 0x72, 0xae, 0xf7, 0x99, 0x2e, 0x43, 0xff, 0x58, 0xe4, 0x70, + 0xe5, 0x11, 0x59, 0xd4, 0x5d, 0x5d, 0x23, 0xf9, 0x99, 0xd1, 0x49, 0xd0, 0x76, 0x89, 0x60, 0xe4, + 0x87, 0xd1, 0xfe, 0xfc, 0x3b, 0x19, 0x4e, 0x90, 0xf6, 0x51, 0xec, 0x76, 0xeb, 0xae, 0x65, 0x23, + 0x0d, 0xb5, 0x90, 0xd1, 0x75, 0x7b, 0xd6, 0xf7, 0x6c, 0x92, 0xea, 0x6f, 0x36, 0xd3, 0x57, 0xf5, + 0x8d, 0xb2, 0x68, 0x0c, 0xe6, 0x7d, 0xed, 0xb1, 0xa7, 0xbc, 0x88, 0xc6, 0xfe, 0x71, 0x49, 0x24, + 0xaa, 0x72, 0x42, 0xe2, 0xc9, 0x80, 0xfa, 0xc8, 0x21, 0x00, 0xe5, 0xaf, 0xdc, 0x68, 0xe5, 0x52, + 0xb9, 0xb2, 0xee, 0x0d, 0x02, 0x57, 0xc3, 0x95, 0xeb, 0x1b, 0x5a, 0x69, 0xa5, 0x58, 0x2f, 0x37, + 0xb5, 0xf2, 0x72, 0xa5, 0xde, 0xa0, 0x4e, 0x59, 0xe4, 0xaf, 0x09, 0xe5, 0x2a, 0x38, 0x55, 0xdf, + 0x58, 0xa8, 0x97, 0xb4, 0xca, 0x3a, 0x4e, 0xd7, 0xca, 0xd5, 0xf2, 0x39, 0xfa, 0x75, 0x52, 0xfd, + 0x60, 0x01, 0xa6, 0xbd, 0x09, 0x40, 0x9d, 0xcc, 0x0b, 0xd4, 0x6f, 0x65, 0x61, 0x5a, 0x43, 0x8e, + 0xd5, 0xd9, 0xc3, 0x73, 0x84, 0x71, 0x4d, 0x3d, 0xbe, 0x23, 0x8b, 0x9e, 0xdf, 0x66, 0x98, 0x9d, + 0x67, 0x18, 0x8d, 0x9e, 0x68, 0xea, 0x7b, 0xba, 0xd1, 0xd1, 0xcf, 0xd3, 0xae, 0x66, 0x52, 0x0b, + 0x13, 0x94, 0x79, 0x50, 0xac, 0x8b, 0x26, 0xb2, 0xeb, 0xad, 0x8b, 0x65, 0x77, 0xbb, 0xd8, 0x6e, + 0xdb, 0xc8, 0x71, 0xe8, 0xea, 0x45, 0x9f, 0x2f, 0xca, 0x0d, 0x70, 0x14, 0xa7, 0x32, 0x99, 0x89, + 0x83, 0x4c, 0x6f, 0x72, 0x90, 0xb3, 0x68, 0x5e, 0xf2, 0x73, 0xe6, 0x98, 0x9c, 0x61, 0x32, 0x7b, + 0x5c, 0x22, 0xcf, 0x9f, 0xd2, 0xb9, 0x06, 0xa6, 0x4d, 0x7d, 0x07, 0x95, 0x1f, 0xe8, 0x1a, 0x36, + 0x72, 0xb0, 0x63, 0x8c, 0xac, 0xb1, 0x49, 0xea, 0x87, 0x85, 0xce, 0x9b, 0x8b, 0x49, 0x2c, 0x99, + 0xee, 0x2f, 0x0f, 0xa1, 0xfa, 0x7d, 0xfa, 0x19, 0x59, 0xfd, 0xa0, 0x0c, 0x33, 0x94, 0xa9, 0xa2, + 0x79, 0xa9, 0xd2, 0x56, 0xaf, 0xe6, 0x8c, 0x5f, 0xdd, 0x4b, 0xf3, 0x8d, 0x5f, 0xfc, 0xa2, 0xfe, + 0xa2, 0x2c, 0xea, 0xee, 0xdc, 0xa7, 0xe2, 0xb8, 0x8c, 0x68, 0xc7, 0xd1, 0x4d, 0x6b, 0x97, 0x3a, + 0xaa, 0x4e, 0x6a, 0xe4, 0x25, 0xcd, 0x45, 0x3d, 0xf5, 0xf7, 0x85, 0x9c, 0xa9, 0x05, 0xab, 0x71, + 0x48, 0x00, 0x7e, 0x52, 0x86, 0x39, 0xca, 0x55, 0x9d, 0x9e, 0xf3, 0x11, 0x3a, 0xf0, 0xf6, 0xcb, + 0xc2, 0x86, 0x60, 0x9f, 0xfa, 0xd3, 0x92, 0x1e, 0x31, 0x40, 0x7e, 0x54, 0x28, 0x38, 0x9a, 0x70, + 0x45, 0x0e, 0x09, 0xca, 0x77, 0x66, 0x61, 0x7a, 0xc3, 0x41, 0x36, 0xf5, 0xdb, 0x57, 0x1f, 0xca, + 0x82, 0xbc, 0x8c, 0xb8, 0x8d, 0xd4, 0x17, 0x09, 0x7b, 0xf8, 0xb2, 0x95, 0x65, 0x88, 0x7a, 0x36, + 0x52, 0x04, 0x6c, 0xd7, 0xc3, 0x1c, 0x11, 0x69, 0xd1, 0x75, 0x3d, 0x23, 0xd1, 0xf7, 0xa6, 0xed, + 0x49, 0x1d, 0xc5, 0x56, 0x11, 0x2e, 0xcb, 0xcb, 0x52, 0xf2, 0x78, 0x5a, 0x45, 0x9b, 0x64, 0x3e, + 0x9b, 0xd5, 0x7a, 0x52, 0x95, 0x5b, 0xe0, 0x32, 0xab, 0x8b, 0xc8, 0xf9, 0x15, 0x26, 0x73, 0x0e, + 0x67, 0xee, 0xf7, 0x49, 0xfd, 0x96, 0x90, 0xaf, 0xae, 0xb8, 0x74, 0x92, 0xe9, 0x42, 0x77, 0x34, + 0x26, 0xc9, 0x71, 0x28, 0x78, 0x39, 0xf0, 0xfe, 0x8b, 0x56, 0xae, 0xd7, 0x56, 0xcf, 0x96, 0xfb, + 0x2f, 0x63, 0xe4, 0xd4, 0xe7, 0xca, 0x30, 0xb5, 0x60, 0x5b, 0x7a, 0xbb, 0xa5, 0x3b, 0xae, 0xfa, + 0x3d, 0x09, 0x66, 0xd6, 0xf5, 0x4b, 0x1d, 0x4b, 0x6f, 0x63, 0xff, 0xfe, 0x9e, 0xbe, 0xa0, 0x4b, + 0x3e, 0xf9, 0x7d, 0x01, 0x7d, 0xe5, 0x0f, 0x06, 0x06, 0x47, 0xf7, 0x32, 0x22, 0x17, 0x6a, 0x06, + 0xdb, 0x7c, 0x52, 0xbf, 0x60, 0xa5, 0x3e, 0x5f, 0xf3, 0x2c, 0x4f, 0x11, 0x16, 0xe5, 0x07, 0xc5, + 0xc2, 0x8f, 0x8a, 0x90, 0x3c, 0x9c, 0x5d, 0xf9, 0xe7, 0x4d, 0x42, 0x7e, 0x11, 0x61, 0x2b, 0xee, + 0xbf, 0x4b, 0x30, 0x51, 0x47, 0x2e, 0xb6, 0xe0, 0x6e, 0xe3, 0x3c, 0x85, 0xdb, 0x38, 0x43, 0xe8, + 0xc4, 0xee, 0xbf, 0x7b, 0x93, 0x75, 0xe6, 0xbc, 0x35, 0x7e, 0x4e, 0xe0, 0x91, 0x48, 0xca, 0x9d, + 0xa7, 0x65, 0x1e, 0xc8, 0x23, 0x31, 0x96, 0x54, 0xfa, 0xbe, 0x56, 0xef, 0x96, 0xa8, 0x6b, 0x15, + 0xd3, 0xeb, 0xbd, 0x8e, 0xd5, 0xcf, 0x58, 0x6f, 0x33, 0xca, 0x7c, 0x8c, 0x73, 0xd4, 0x13, 0x60, + 0x82, 0xc8, 0xdc, 0x9f, 0x8f, 0xf6, 0xfa, 0x29, 0x10, 0x12, 0xf8, 0xec, 0xb5, 0x9f, 0x53, 0xd0, + 0x45, 0x2d, 0xba, 0xf0, 0xb1, 0xc4, 0x20, 0x98, 0xa9, 0x22, 0xf7, 0xa2, 0x65, 0x5f, 0xa8, 0xbb, + 0xba, 0x8b, 0xd4, 0x7f, 0x95, 0x40, 0xae, 0x23, 0x97, 0x8d, 0x7e, 0x52, 0x85, 0x63, 0xa4, 0x42, + 0x34, 0x23, 0xee, 0xbf, 0x49, 0x45, 0xae, 0xe9, 0x2b, 0x04, 0x26, 0x9f, 0xb6, 0xff, 0x57, 0xf5, + 0xd7, 0xfb, 0x06, 0x7d, 0x92, 0xfa, 0x4c, 0x1a, 0xa8, 0x64, 0x58, 0x06, 0x3d, 0x05, 0x8b, 0xd0, + 0xd3, 0x0f, 0x09, 0x99, 0xd5, 0x62, 0x34, 0x0f, 0xa7, 0x2b, 0xf8, 0xe8, 0x15, 0x90, 0x2d, 0x6d, + 0xeb, 0xae, 0xfa, 0x2e, 0x19, 0xa0, 0xd8, 0x6e, 0xaf, 0x11, 0x1f, 0x70, 0xd6, 0x21, 0xed, 0x0c, + 0xcc, 0xb4, 0xb6, 0xf5, 0xf0, 0x6e, 0x13, 0xd2, 0x1f, 0x70, 0x69, 0xca, 0x13, 0x43, 0x67, 0x72, + 0x22, 0x55, 0xb5, 0x07, 0x26, 0xaf, 0x0c, 0x4a, 0x3b, 0x70, 0x34, 0xe7, 0x43, 0x61, 0xc6, 0x1e, + 0xa1, 0xf3, 0x7e, 0x9f, 0x0f, 0xd9, 0x8b, 0x9e, 0xc3, 0x51, 0xd2, 0xc1, 0x01, 0x9b, 0x30, 0x21, + 0xe1, 0x49, 0x6f, 0xb1, 0x80, 0x1e, 0xf1, 0x7c, 0x8d, 0x25, 0x74, 0xad, 0x52, 0x6e, 0x1b, 0xbe, + 0x68, 0x69, 0xc0, 0x2c, 0xf5, 0x85, 0x99, 0x64, 0xf0, 0xc5, 0x0b, 0xee, 0x6e, 0x98, 0x45, 0x6d, + 0xc3, 0x45, 0x7e, 0x2d, 0xa9, 0x00, 0xe3, 0x20, 0xe6, 0x7f, 0x50, 0x9f, 0x2d, 0x1c, 0x74, 0x0d, + 0x0b, 0x74, 0x7f, 0x8d, 0x22, 0xda, 0x9f, 0x58, 0x18, 0x35, 0x31, 0x9a, 0xe9, 0x83, 0xf5, 0x1c, + 0x19, 0x4e, 0x34, 0xac, 0xad, 0xad, 0x0e, 0xf2, 0xc5, 0x84, 0x88, 0x77, 0xa6, 0xaa, 0x8f, 0x12, + 0x2e, 0xbc, 0x13, 0x64, 0xdd, 0x6f, 0x04, 0x47, 0xc9, 0xbc, 0x17, 0xfe, 0xc4, 0x54, 0xec, 0x2c, + 0x0a, 0x8b, 0xab, 0x2f, 0x9f, 0x11, 0x28, 0x88, 0x05, 0x7c, 0x16, 0x26, 0x9b, 0x3e, 0x10, 0x5f, + 0x94, 0x60, 0x96, 0xdc, 0x5c, 0xe9, 0x2b, 0xe8, 0xbd, 0x23, 0x04, 0x40, 0xfd, 0x5e, 0x46, 0xd4, + 0xcf, 0x16, 0xcb, 0x84, 0xe3, 0x24, 0x42, 0xc4, 0x62, 0x41, 0x55, 0x06, 0x92, 0x4b, 0x5f, 0xb4, + 0x7f, 0x22, 0xc3, 0xf4, 0x32, 0xf2, 0x5b, 0x9a, 0x93, 0xb8, 0x27, 0x3a, 0x03, 0x33, 0xf8, 0xfa, + 0xb6, 0x1a, 0x3d, 0x26, 0x49, 0x56, 0xcd, 0xb8, 0x34, 0xe5, 0x3a, 0x98, 0x3d, 0x8f, 0x36, 0x2d, + 0x1b, 0xd5, 0xb8, 0xb3, 0x94, 0x7c, 0x62, 0x44, 0x78, 0x3a, 0x2e, 0x0e, 0xda, 0x02, 0x8f, 0xcd, + 0x4d, 0xfb, 0x85, 0xc9, 0x54, 0x25, 0x62, 0xcc, 0x79, 0x12, 0x4c, 0x52, 0xe4, 0x7d, 0x33, 0x2d, + 0xae, 0x5f, 0x0c, 0xf2, 0xaa, 0xbf, 0x11, 0x20, 0x5a, 0xe6, 0x10, 0x7d, 0x7c, 0x12, 0x26, 0xc6, + 0x72, 0xbf, 0x7b, 0x81, 0x29, 0x7f, 0xe1, 0x52, 0xa5, 0xed, 0xa8, 0x6b, 0xc9, 0x30, 0x3d, 0x0d, + 0x10, 0x34, 0x0e, 0x3f, 0xac, 0x05, 0x93, 0xc2, 0x47, 0xae, 0x8f, 0x3d, 0xa8, 0xd7, 0x2b, 0x0e, + 0xcc, 0xce, 0x88, 0x81, 0x11, 0x3b, 0xe0, 0x27, 0xc2, 0x49, 0xfa, 0xe8, 0x7c, 0x5a, 0x86, 0x13, + 0xc1, 0xf9, 0xa3, 0x55, 0xdd, 0x09, 0xdb, 0x5d, 0x29, 0x19, 0x44, 0xdc, 0x81, 0x8f, 0xa0, 0xb1, + 0x7c, 0x3b, 0xd9, 0x98, 0xd1, 0x97, 0x93, 0xd1, 0xa2, 0xa3, 0xdc, 0x04, 0xc7, 0xcc, 0xdd, 0x9d, + 0x40, 0xea, 0xb8, 0xc5, 0xd3, 0x16, 0xbe, 0xff, 0x43, 0x92, 0x91, 0x49, 0x84, 0xf9, 0xb1, 0xcc, + 0x29, 0xb9, 0x23, 0x5d, 0x8f, 0x4b, 0x04, 0xa3, 0xfa, 0x2f, 0x99, 0x44, 0xbd, 0xdb, 0xe0, 0x33, + 0x5f, 0x09, 0x7a, 0xa9, 0x43, 0x3c, 0xf0, 0x75, 0x66, 0x02, 0x72, 0xe5, 0x9d, 0xae, 0x7b, 0xe9, + 0xcc, 0xa3, 0x61, 0xb6, 0xee, 0xda, 0x48, 0xdf, 0x61, 0x76, 0x06, 0x5c, 0xeb, 0x02, 0x32, 0xfd, + 0x9d, 0x01, 0xfc, 0x72, 0xfb, 0x6d, 0x30, 0x61, 0x5a, 0x4d, 0x7d, 0xd7, 0xdd, 0x56, 0xae, 0xde, + 0x77, 0xa4, 0x9e, 0x82, 0x5f, 0xa3, 0x31, 0x8c, 0xbe, 0x7a, 0x07, 0x5e, 0x1b, 0xce, 0x9b, 0x56, + 0x71, 0xd7, 0xdd, 0x5e, 0xb8, 0xea, 0x93, 0x7f, 0x7b, 0x3a, 0xf3, 0x99, 0xbf, 0x3d, 0x9d, 0xf9, + 0xca, 0xdf, 0x9e, 0xce, 0xfc, 0xf2, 0xd7, 0x4e, 0x1f, 0xf9, 0xcc, 0xd7, 0x4e, 0x1f, 0xf9, 0xe2, + 0xd7, 0x4e, 0x1f, 0xf9, 0x29, 0xa9, 0x7b, 0xfe, 0x7c, 0x1e, 0x53, 0x79, 0xc2, 0xff, 0x1f, 0x00, + 0x00, 0xff, 0xff, 0xf9, 0xe8, 0x43, 0xba, 0x87, 0x01, 0x02, 0x00, } func (m *Rpc) Marshal() (dAtA []byte, err error) { diff --git a/pb/protos/commands.proto b/pb/protos/commands.proto index 337c3be1d..69f07180e 100644 --- a/pb/protos/commands.proto +++ b/pb/protos/commands.proto @@ -830,6 +830,7 @@ message Rpc { BAD_INPUT = 2; // Id or root path is wrong ACCOUNT_NOT_FOUND = 101; + CANCELED = 102; // TODO: [storage] Add specific error codes for migration problems } } From c380ce2f4212f7c895d7ffe272d4d84d25731004 Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Thu, 9 Jan 2025 20:08:09 +0100 Subject: [PATCH 123/279] GO-4146 Use orders from store --- core/block/editor/storestate/tx.go | 4 - core/block/source/store.go | 7 +- core/block/source/store_apply.go | 111 +------------------ go.mod | 2 +- go.sum | 4 +- space/spacecore/storage/migrator/migrator.go | 25 ++++- 6 files changed, 35 insertions(+), 118 deletions(-) diff --git a/core/block/editor/storestate/tx.go b/core/block/editor/storestate/tx.go index daa5e750d..223e7d011 100644 --- a/core/block/editor/storestate/tx.go +++ b/core/block/editor/storestate/tx.go @@ -47,10 +47,6 @@ func (stx *StoreStateTx) NextOrder(prev string) string { return lexId.Next(prev) } -func (stx *StoreStateTx) NextBeforeOrder(prev string, before string) (string, error) { - return lexId.NextBefore(prev, before) -} - func (stx *StoreStateTx) SetOrder(changeId, order string) (err error) { stx.arena.Reset() obj := stx.arena.NewObject() diff --git a/core/block/source/store.go b/core/block/source/store.go index ac1874520..4c49e155f 100644 --- a/core/block/source/store.go +++ b/core/block/source/store.go @@ -11,7 +11,6 @@ import ( "github.com/anyproto/any-sync/commonspace/object/tree/objecttree" "github.com/anyproto/any-sync/commonspace/object/tree/synctree" "github.com/anyproto/any-sync/commonspace/object/tree/synctree/updatelistener" - "github.com/anyproto/any-sync/commonspace/object/tree/treechangeproto" "github.com/gogo/protobuf/proto" "github.com/golang/snappy" @@ -132,11 +131,11 @@ func (s *store) PushStoreChange(ctx context.Context, params PushStoreChangeParam IsEncrypted: true, DataType: dataType, Timestamp: params.Time.Unix(), - }, func(change *treechangeproto.RawTreeChangeWithId) error { - order := tx.NextOrder(tx.GetMaxOrder()) + }, func(change objecttree.StorageChange) error { + // TODO: get order here err = tx.ApplyChangeSet(storestate.ChangeSet{ Id: change.Id, - Order: order, + Order: change.OrderId, Changes: params.Changes, Creator: s.accountService.AccountID(), Timestamp: params.Time.Unix(), diff --git a/core/block/source/store_apply.go b/core/block/source/store_apply.go index 94bacd243..b8ef83e84 100644 --- a/core/block/source/store_apply.go +++ b/core/block/source/store_apply.go @@ -24,62 +24,14 @@ type storeApply struct { } func (a *storeApply) Apply() (err error) { - maxOrder := a.tx.GetMaxOrder() - isEmpty := maxOrder == "" iterErr := a.ot.IterateRoot(UnmarshalStoreChange, func(change *objecttree.Change) bool { // not a new change - remember and continue - if !a.allIsNew && !change.IsNew && !isEmpty { - a.prevChange = change - a.prevOrder = "" + if !a.allIsNew && !change.IsNew { return true } - currOrder, curOrdErr := a.tx.GetOrder(change.Id) - if curOrdErr != nil { - if !errors.Is(curOrdErr, storestate.ErrOrderNotFound) { - err = curOrdErr - return false - } - } else { - // change has been handled before - a.prevChange = change - a.prevOrder = currOrder - return true - } - - prevOrder, prevOrdErr := a.getPrevOrder() - if prevOrdErr != nil { - if !errors.Is(prevOrdErr, storestate.ErrOrderNotFound) { - err = prevOrdErr - return false - } - if !isEmpty { - // it should not happen, consistency with tree and store broken - err = fmt.Errorf("unable to find previous order") - return false - } - } - - if prevOrder == a.tx.GetMaxOrder() { - // insert on top - just create next id - currOrder = a.tx.NextOrder(prevOrder) - } else { - // insert in the middle - find next order and create id between - nextOrder, nextOrdErr := a.findNextOrder(change.Id) - if nextOrdErr != nil { - // it should not happen, consistency with tree and store broken - err = errors.Join(nextOrdErr, fmt.Errorf("unable to find next order")) - return false - } - if currOrder, err = a.tx.NextBeforeOrder(prevOrder, nextOrder); err != nil { - return false - } - } - - if err = a.applyChange(change, currOrder); err != nil { + if err = a.applyChange(change); err != nil { return false } - a.prevOrder = currOrder - a.prevChange = change return true }) if err == nil && iterErr != nil { @@ -88,18 +40,18 @@ func (a *storeApply) Apply() (err error) { return } -func (a *storeApply) applyChange(change *objecttree.Change, order string) (err error) { +func (a *storeApply) applyChange(change *objecttree.Change) (err error) { storeChange, ok := change.Model.(*pb.StoreChange) if !ok { // if it is root if _, ok := change.Model.(*treechangeproto.TreeChangeInfo); ok { - return a.tx.SetOrder(change.Id, order) + return a.tx.SetOrder(change.Id, change.OrderId) } return fmt.Errorf("unexpected change content type: %T", change.Model) } set := storestate.ChangeSet{ Id: change.Id, - Order: order, + Order: change.OrderId, Changes: storeChange.ChangeSet, Creator: change.Identity.Account(), Timestamp: change.Timestamp, @@ -111,56 +63,3 @@ func (a *storeApply) applyChange(change *objecttree.Change, order string) (err e } return err } - -func (a *storeApply) getPrevOrder() (order string, err error) { - if a.prevOrder != "" { - return a.prevOrder, nil - } - if a.prevChange == nil { - return "", nil - } - if order, err = a.tx.GetOrder(a.prevChange.Id); err != nil { - return - } - a.prevOrder = order - return -} - -func (a *storeApply) findNextOrder(changeId string) (order string, err error) { - if order = a.findNextInCache(changeId); order != "" { - return - } - - a.nextCacheChange = map[string]struct{}{} - iterErr := a.ot.IterateFrom(changeId, UnmarshalStoreChange, func(change *objecttree.Change) bool { - order, err = a.tx.GetOrder(change.Id) - if err != nil { - if errors.Is(err, storestate.ErrOrderNotFound) { - // no order - remember id and move forward - a.nextCacheChange[change.Id] = struct{}{} - return true - } else { - return false - } - } - // order found - a.nextCachedOrder = order - return false - }) - if err == nil && iterErr != nil { - return "", iterErr - } - return -} - -func (a *storeApply) findNextInCache(changeId string) (order string) { - if a.nextCacheChange == nil { - return "" - } - if _, ok := a.nextCacheChange[changeId]; ok { - return a.nextCachedOrder - } - a.nextCachedOrder = "" - a.nextCacheChange = nil - return "" -} diff --git a/go.mod b/go.mod index dc6509995..8b5cba5b9 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( github.com/VividCortex/ewma v1.2.0 github.com/adrium/goheif v0.0.0-20230113233934-ca402e77a786 github.com/anyproto/any-store v0.1.4-0.20241211133419-d0c2df992842 - github.com/anyproto/any-sync v0.6.0-alpha.2.0.20250108173313-b97ff65643b9 + github.com/anyproto/any-sync v0.6.0-alpha.2.0.20250109185650-915d7d0384be github.com/anyproto/go-chash v0.1.0 github.com/anyproto/go-naturaldate/v2 v2.0.2-0.20230524105841-9829cfd13438 github.com/anyproto/go-slip10 v1.0.0 diff --git a/go.sum b/go.sum index b1bcccb76..52567bbad 100644 --- a/go.sum +++ b/go.sum @@ -78,8 +78,8 @@ github.com/andybalholm/cascadia v1.3.2 h1:3Xi6Dw5lHF15JtdcmAHD3i1+T8plmv7BQ/nsVi github.com/andybalholm/cascadia v1.3.2/go.mod h1:7gtRlve5FxPPgIgX36uWBX58OdBsSS6lUvCFb+h7KvU= github.com/anyproto/any-store v0.1.4-0.20241211133419-d0c2df992842 h1:2hJRYJ4+AjOSiy3Sf84XyU/ki8zE/+Tp6IdhqZZHBaY= github.com/anyproto/any-store v0.1.4-0.20241211133419-d0c2df992842/go.mod h1:6/0OUKgSMWF/vYGoGYzQOl2CII5OdiuXbQlGDXYcNYc= -github.com/anyproto/any-sync v0.6.0-alpha.2.0.20250108173313-b97ff65643b9 h1:1dCsfj6C/E2tTxVqDMHyZXrA5mV6n5LmIuxRAHL0QzQ= -github.com/anyproto/any-sync v0.6.0-alpha.2.0.20250108173313-b97ff65643b9/go.mod h1:Mw8DVuLGNKk2ffEFdJT2AX40ZEv5FzYoVGe8Va0Z7mw= +github.com/anyproto/any-sync v0.6.0-alpha.2.0.20250109185650-915d7d0384be h1:JqXFWbUYPovdkf8H9gqsc85jIUsAHKYjgMeoSqUkdqA= +github.com/anyproto/any-sync v0.6.0-alpha.2.0.20250109185650-915d7d0384be/go.mod h1:Mw8DVuLGNKk2ffEFdJT2AX40ZEv5FzYoVGe8Va0Z7mw= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580 h1:Ba80IlCCxkZ9H1GF+7vFu/TSpPvbpDCxXJ5ogc4euYc= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580/go.mod h1:T/uWAYxrXdaXw64ihI++9RMbKTCpKd/yE9+saARew7k= github.com/anyproto/go-chash v0.1.0 h1:I9meTPjXFRfXZHRJzjOHC/XF7Q5vzysKkiT/grsogXY= diff --git a/space/spacecore/storage/migrator/migrator.go b/space/spacecore/storage/migrator/migrator.go index b0c6f7f84..7becbca03 100644 --- a/space/spacecore/storage/migrator/migrator.go +++ b/space/spacecore/storage/migrator/migrator.go @@ -6,6 +6,7 @@ import ( "fmt" "os" "path/filepath" + "strings" "github.com/anyproto/any-sync/app" @@ -19,7 +20,11 @@ import ( const CName = "client.storage.migration" -const migratedName = "space_store_migrated" +const ( + migratedName = "space_store_migrated" + objectStoreFolder = "objectstore" + crdtDb = "crdt" +) type migrator struct { storage oldstorage.ClientStorage @@ -112,6 +117,10 @@ func (m *migrator) Run(ctx context.Context) (err error) { default: } } + err = removeFilesWithPrefix(filepath.Join(filepath.Dir(m.path), objectStoreFolder), crdtDb) + if err != nil { + return nil + } return renamePreserveExtension(m.oldPath, migratedName) } @@ -127,3 +136,17 @@ func renamePreserveExtension(oldPath, newName string) error { } return nil } + +func removeFilesWithPrefix(rootDir, prefix string) error { + return filepath.Walk(rootDir, func(path string, info os.FileInfo, err error) error { + if err != nil { + return err + } + if !info.IsDir() && strings.HasPrefix(info.Name(), prefix) { + if removeErr := os.Remove(path); removeErr != nil { + return removeErr + } + } + return nil + }) +} From aeed6dcaa2ad8c2eed5078f6d4204131ac7139cb Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Thu, 9 Jan 2025 23:08:41 +0100 Subject: [PATCH 124/279] GO-4459: Return recommended layout for object type --- cmd/api/object/model.go | 11 ++++++----- cmd/api/object/service.go | 13 +++++++------ 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/cmd/api/object/model.go b/cmd/api/object/model.go index faa4cb350..8c9eac48e 100644 --- a/cmd/api/object/model.go +++ b/cmd/api/object/model.go @@ -75,11 +75,12 @@ type Tag struct { } type ObjectType struct { - Type string `json:"type" example:"object_type"` - Id string `json:"id" example:"bafyreigyb6l5szohs32ts26ku2j42yd65e6hqy2u3gtzgdwqv6hzftsetu"` - UniqueKey string `json:"unique_key" example:"ot-page"` - Name string `json:"name" example:"Page"` - Icon string `json:"icon" example:"📄"` + Type string `json:"type" example:"object_type"` + Id string `json:"id" example:"bafyreigyb6l5szohs32ts26ku2j42yd65e6hqy2u3gtzgdwqv6hzftsetu"` + UniqueKey string `json:"unique_key" example:"ot-page"` + Name string `json:"name" example:"Page"` + Icon string `json:"icon" example:"📄"` + RecommendedLayout string `json:"recommended_layout" example:"todo"` } type ObjectTemplate struct { diff --git a/cmd/api/object/service.go b/cmd/api/object/service.go index e482ca803..320815100 100644 --- a/cmd/api/object/service.go +++ b/cmd/api/object/service.go @@ -294,7 +294,7 @@ func (s *ObjectService) ListTypes(ctx context.Context, spaceId string, offset in Type: model.BlockContentDataviewSort_Asc, }, }, - Keys: []string{"id", "uniqueKey", "name", "iconEmoji"}, + Keys: []string{"id", "uniqueKey", "name", "iconEmoji", "recommendedLayout"}, }) if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { @@ -311,11 +311,12 @@ func (s *ObjectService) ListTypes(ctx context.Context, spaceId string, offset in for _, record := range paginatedTypes { objectTypes = append(objectTypes, ObjectType{ - Type: "object_type", - Id: record.Fields["id"].GetStringValue(), - UniqueKey: record.Fields["uniqueKey"].GetStringValue(), - Name: record.Fields["name"].GetStringValue(), - Icon: record.Fields["iconEmoji"].GetStringValue(), + Type: "object_type", + Id: record.Fields["id"].GetStringValue(), + UniqueKey: record.Fields["uniqueKey"].GetStringValue(), + Name: record.Fields["name"].GetStringValue(), + Icon: record.Fields["iconEmoji"].GetStringValue(), + RecommendedLayout: model.ObjectTypeLayout_name[int32(record.Fields["recommendedLayout"].GetNumberValue())], }) } return objectTypes, total, hasMore, nil From 800e12c9662494c5218fd7e137d3dfbe6652fe51 Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Fri, 10 Jan 2025 12:45:48 +0100 Subject: [PATCH 125/279] GO-4146 Add method for binds --- space/spacecore/oldstorage/storage.go | 1 + space/spacecore/storage/badgerstorage/storageservice.go | 4 ++++ space/spacecore/storage/sqlitestorage/service.go | 4 ++++ 3 files changed, 9 insertions(+) diff --git a/space/spacecore/oldstorage/storage.go b/space/spacecore/oldstorage/storage.go index 5e94ac5e1..548e54f4b 100644 --- a/space/spacecore/oldstorage/storage.go +++ b/space/spacecore/oldstorage/storage.go @@ -24,6 +24,7 @@ const ( type ClientStorage interface { oldstorage.SpaceStorageProvider app.ComponentRunnable + GetBinds(spaceId string) ([]string, error) AllSpaceIds() (ids []string, err error) DeleteSpaceStorage(ctx context.Context, spaceId string) error } diff --git a/space/spacecore/storage/badgerstorage/storageservice.go b/space/spacecore/storage/badgerstorage/storageservice.go index c4e3f80bc..13ed3b590 100644 --- a/space/spacecore/storage/badgerstorage/storageservice.go +++ b/space/spacecore/storage/badgerstorage/storageservice.go @@ -167,6 +167,10 @@ func (s *storageService) GetSpaceID(objectID string) (spaceID string, err error) return spaceID, err } +func (s *storageService) GetBinds(spaceId string) ([]string, error) { + return nil, nil +} + func (s *storageService) BindSpaceID(spaceID, objectID string) (err error) { return badgerhelper.SetValue(s.db, s.keys.BindObjectIDKey(objectID), []byte(spaceID)) } diff --git a/space/spacecore/storage/sqlitestorage/service.go b/space/spacecore/storage/sqlitestorage/service.go index 2d79d5bfe..dd3d5e6f7 100644 --- a/space/spacecore/storage/sqlitestorage/service.go +++ b/space/spacecore/storage/sqlitestorage/service.go @@ -292,6 +292,10 @@ func (s *storageService) GetSpaceID(objectID string) (spaceID string, err error) return } +func (s *storageService) GetBinds(spaceId string) ([]string, error) { + return nil, nil +} + func (s *storageService) BindSpaceID(spaceID, objectID string) (err error) { _, err = s.stmt.upsertBind.Exec(objectID, spaceID, spaceID) return From 836da9d006c7602f934bd7339c02102d7d22fbe4 Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Fri, 10 Jan 2025 12:47:15 +0100 Subject: [PATCH 126/279] GO-4146 Not reindex full --- core/indexer/reindex.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/indexer/reindex.go b/core/indexer/reindex.go index 73acc20f6..c68bc3e12 100644 --- a/core/indexer/reindex.go +++ b/core/indexer/reindex.go @@ -35,7 +35,7 @@ const ( // ForceIdxRebuildCounter erases localstore indexes and reindex all type of objects // (no need to increase ForceObjectsReindexCounter & ForceFilesReindexCounter) - ForceIdxRebuildCounter int32 = 63 + ForceIdxRebuildCounter int32 = 62 // ForceFilestoreKeysReindexCounter reindex filestore keys in all objects ForceFilestoreKeysReindexCounter int32 = 2 From f65526388eb478b2aa823732686f80388e79840b Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Fri, 10 Jan 2025 15:11:39 +0100 Subject: [PATCH 127/279] GO-4146 Update any-sync --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 86875f1c1..2dd1764c3 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( github.com/VividCortex/ewma v1.2.0 github.com/adrium/goheif v0.0.0-20230113233934-ca402e77a786 github.com/anyproto/any-store v0.1.4-0.20241211133419-d0c2df992842 - github.com/anyproto/any-sync v0.6.0-alpha.2.0.20250110132203-e1468c6539b2 + github.com/anyproto/any-sync v0.6.0-alpha.3 github.com/anyproto/go-chash v0.1.0 github.com/anyproto/go-naturaldate/v2 v2.0.2-0.20230524105841-9829cfd13438 github.com/anyproto/go-slip10 v1.0.0 diff --git a/go.sum b/go.sum index 652b5f8a0..4b912bee8 100644 --- a/go.sum +++ b/go.sum @@ -78,8 +78,8 @@ github.com/andybalholm/cascadia v1.3.2 h1:3Xi6Dw5lHF15JtdcmAHD3i1+T8plmv7BQ/nsVi github.com/andybalholm/cascadia v1.3.2/go.mod h1:7gtRlve5FxPPgIgX36uWBX58OdBsSS6lUvCFb+h7KvU= github.com/anyproto/any-store v0.1.4-0.20241211133419-d0c2df992842 h1:2hJRYJ4+AjOSiy3Sf84XyU/ki8zE/+Tp6IdhqZZHBaY= github.com/anyproto/any-store v0.1.4-0.20241211133419-d0c2df992842/go.mod h1:6/0OUKgSMWF/vYGoGYzQOl2CII5OdiuXbQlGDXYcNYc= -github.com/anyproto/any-sync v0.6.0-alpha.2.0.20250110132203-e1468c6539b2 h1:/Ib91cbwXmSShyitgSxQdTN2/ixG13xz+piP0VO3e4Q= -github.com/anyproto/any-sync v0.6.0-alpha.2.0.20250110132203-e1468c6539b2/go.mod h1:Mw8DVuLGNKk2ffEFdJT2AX40ZEv5FzYoVGe8Va0Z7mw= +github.com/anyproto/any-sync v0.6.0-alpha.3 h1:g0DU1V8eyHSnIyCvYjHmNDkLJbezXCGWqfxeX6ywJXs= +github.com/anyproto/any-sync v0.6.0-alpha.3/go.mod h1:Mw8DVuLGNKk2ffEFdJT2AX40ZEv5FzYoVGe8Va0Z7mw= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580 h1:Ba80IlCCxkZ9H1GF+7vFu/TSpPvbpDCxXJ5ogc4euYc= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580/go.mod h1:T/uWAYxrXdaXw64ihI++9RMbKTCpKd/yE9+saARew7k= github.com/anyproto/go-chash v0.1.0 h1:I9meTPjXFRfXZHRJzjOHC/XF7Q5vzysKkiT/grsogXY= From 50d69cb8d9bb08c6922fff58ad8cc5dffa2b57a2 Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Fri, 10 Jan 2025 15:14:11 +0100 Subject: [PATCH 128/279] GO-4146 Add not enough storage --- docs/proto.md | 3 +- pb/commands.pb.go | 2436 +++++++++++++++++++------------------- pb/protos/commands.proto | 1 + 3 files changed, 1223 insertions(+), 1217 deletions(-) diff --git a/docs/proto.md b/docs/proto.md index a24c07009..9c24d4d11 100644 --- a/docs/proto.md +++ b/docs/proto.md @@ -20621,7 +20621,8 @@ Middleware-to-front-end response, that can contain a NULL error or a non-NULL er | UNKNOWN_ERROR | 1 | Any other errors | | BAD_INPUT | 2 | Id or root path is wrong | | ACCOUNT_NOT_FOUND | 101 | | -| CANCELED | 102 | TODO: [storage] Add specific error codes for migration problems | +| CANCELED | 102 | | +| NOT_ENOUGH_STORAGE | 103 | TODO: [storage] Add specific error codes for migration problems | diff --git a/pb/commands.pb.go b/pb/commands.pb.go index 4f85b5668..6145b5c84 100644 --- a/pb/commands.pb.go +++ b/pb/commands.pb.go @@ -1135,11 +1135,12 @@ func (RpcAccountRevertDeletionResponseErrorCode) EnumDescriptor() ([]byte, []int type RpcAccountMigrateResponseErrorCode int32 const ( - RpcAccountMigrateResponseError_NULL RpcAccountMigrateResponseErrorCode = 0 - RpcAccountMigrateResponseError_UNKNOWN_ERROR RpcAccountMigrateResponseErrorCode = 1 - RpcAccountMigrateResponseError_BAD_INPUT RpcAccountMigrateResponseErrorCode = 2 - RpcAccountMigrateResponseError_ACCOUNT_NOT_FOUND RpcAccountMigrateResponseErrorCode = 101 - RpcAccountMigrateResponseError_CANCELED RpcAccountMigrateResponseErrorCode = 102 + RpcAccountMigrateResponseError_NULL RpcAccountMigrateResponseErrorCode = 0 + RpcAccountMigrateResponseError_UNKNOWN_ERROR RpcAccountMigrateResponseErrorCode = 1 + RpcAccountMigrateResponseError_BAD_INPUT RpcAccountMigrateResponseErrorCode = 2 + RpcAccountMigrateResponseError_ACCOUNT_NOT_FOUND RpcAccountMigrateResponseErrorCode = 101 + RpcAccountMigrateResponseError_CANCELED RpcAccountMigrateResponseErrorCode = 102 + RpcAccountMigrateResponseError_NOT_ENOUGH_STORAGE RpcAccountMigrateResponseErrorCode = 103 ) var RpcAccountMigrateResponseErrorCode_name = map[int32]string{ @@ -1148,14 +1149,16 @@ var RpcAccountMigrateResponseErrorCode_name = map[int32]string{ 2: "BAD_INPUT", 101: "ACCOUNT_NOT_FOUND", 102: "CANCELED", + 103: "NOT_ENOUGH_STORAGE", } var RpcAccountMigrateResponseErrorCode_value = map[string]int32{ - "NULL": 0, - "UNKNOWN_ERROR": 1, - "BAD_INPUT": 2, - "ACCOUNT_NOT_FOUND": 101, - "CANCELED": 102, + "NULL": 0, + "UNKNOWN_ERROR": 1, + "BAD_INPUT": 2, + "ACCOUNT_NOT_FOUND": 101, + "CANCELED": 102, + "NOT_ENOUGH_STORAGE": 103, } func (x RpcAccountMigrateResponseErrorCode) String() string { @@ -71209,1215 +71212,1216 @@ func init() { func init() { proto.RegisterFile("pb/protos/commands.proto", fileDescriptor_8261c968b2e6f45c) } var fileDescriptor_8261c968b2e6f45c = []byte{ - // 19323 bytes of a gzipped FileDescriptorProto + // 19338 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x7d, 0x98, 0x23, 0x47, 0x79, 0x2f, 0xba, 0xea, 0x96, 0x34, 0x33, 0xef, 0x7c, 0xac, 0xb6, 0xbd, 0xbb, 0x5e, 0xb7, 0xcd, - 0xda, 0x59, 0x1b, 0xe3, 0x18, 0x33, 0x36, 0x86, 0x10, 0x6c, 0x6c, 0x6c, 0x8d, 0x46, 0x33, 0x23, - 0x7b, 0x46, 0x1a, 0x5a, 0x9a, 0x5d, 0x9c, 0x9c, 0x5c, 0x9d, 0x5e, 0xa9, 0x66, 0xa6, 0xbd, 0x9a, - 0x6e, 0xd1, 0xdd, 0x33, 0xeb, 0xe5, 0x3e, 0xe7, 0x9e, 0x10, 0x62, 0x3e, 0x42, 0x08, 0x21, 0x84, - 0x84, 0xef, 0x0f, 0x13, 0xc3, 0x81, 0x04, 0x08, 0xdf, 0x07, 0x92, 0x00, 0xe1, 0x23, 0x10, 0x92, - 0x10, 0x02, 0x21, 0x10, 0x12, 0x6e, 0x20, 0x10, 0x42, 0xee, 0x13, 0x2e, 0x37, 0xb9, 0x27, 0x70, - 0x48, 0xc2, 0xe5, 0x3e, 0x5d, 0x55, 0xdd, 0x5d, 0xa5, 0x51, 0xb7, 0xaa, 0x35, 0x6a, 0x8d, 0x09, - 0xe7, 0xbf, 0xee, 0xea, 0xea, 0xb7, 0xde, 0x7a, 0x7f, 0x6f, 0x55, 0xbd, 0x55, 0xf5, 0xd6, 0x5b, - 0x70, 0xaa, 0x7b, 0xfe, 0xe6, 0xae, 0x6d, 0xb9, 0x96, 0x73, 0x73, 0xcb, 0xda, 0xd9, 0xd1, 0xcd, - 0xb6, 0x33, 0x8f, 0xdf, 0x95, 0x09, 0xdd, 0xbc, 0xe4, 0x5e, 0xea, 0x22, 0xf5, 0xba, 0xee, 0x85, - 0xad, 0x9b, 0x3b, 0xc6, 0xf9, 0x9b, 0xbb, 0xe7, 0x6f, 0xde, 0xb1, 0xda, 0xa8, 0xe3, 0xff, 0x80, - 0x5f, 0x68, 0x76, 0xf5, 0x86, 0xa8, 0x5c, 0x1d, 0xab, 0xa5, 0x77, 0x1c, 0xd7, 0xb2, 0x11, 0xcd, - 0x79, 0x32, 0x2c, 0x12, 0xed, 0x21, 0xd3, 0xf5, 0x29, 0x5c, 0xb5, 0x65, 0x59, 0x5b, 0x1d, 0x44, - 0xbe, 0x9d, 0xdf, 0xdd, 0xbc, 0xd9, 0x71, 0xed, 0xdd, 0x96, 0x4b, 0xbf, 0x5e, 0xd3, 0xfb, 0xb5, - 0x8d, 0x9c, 0x96, 0x6d, 0x74, 0x5d, 0xcb, 0x26, 0x39, 0xce, 0xbc, 0xe9, 0x67, 0x27, 0x41, 0xd6, - 0xba, 0x2d, 0xf5, 0x3b, 0x13, 0x20, 0x17, 0xbb, 0x5d, 0xf5, 0xe3, 0x12, 0xc0, 0x32, 0x72, 0xcf, - 0x22, 0xdb, 0x31, 0x2c, 0x53, 0x3d, 0x0a, 0x13, 0x1a, 0x7a, 0xc6, 0x2e, 0x72, 0xdc, 0xdb, 0xb3, - 0xcf, 0xfb, 0x86, 0x9c, 0x51, 0x1f, 0x96, 0x60, 0x52, 0x43, 0x4e, 0xd7, 0x32, 0x1d, 0xa4, 0xdc, - 0x0d, 0x39, 0x64, 0xdb, 0x96, 0x7d, 0x2a, 0x73, 0x4d, 0xe6, 0x86, 0xe9, 0x5b, 0x6f, 0x9c, 0xa7, - 0xd5, 0x9f, 0xd7, 0xba, 0xad, 0xf9, 0x62, 0xb7, 0x3b, 0x1f, 0x52, 0x9a, 0xf7, 0x7f, 0x9a, 0x2f, - 0x7b, 0x7f, 0x68, 0xe4, 0x47, 0xe5, 0x14, 0x4c, 0xec, 0x91, 0x0c, 0xa7, 0xa4, 0x6b, 0x32, 0x37, - 0x4c, 0x69, 0xfe, 0xab, 0xf7, 0xa5, 0x8d, 0x5c, 0xdd, 0xe8, 0x38, 0xa7, 0x64, 0xf2, 0x85, 0xbe, - 0xaa, 0x0f, 0x65, 0x20, 0x87, 0x89, 0x28, 0x25, 0xc8, 0xb6, 0xac, 0x36, 0xc2, 0xc5, 0xcf, 0xdd, - 0x7a, 0xb3, 0x78, 0xf1, 0xf3, 0x25, 0xab, 0x8d, 0x34, 0xfc, 0xb3, 0x72, 0x0d, 0x4c, 0xfb, 0x62, - 0x09, 0xd9, 0x60, 0x93, 0xce, 0xdc, 0x0a, 0x59, 0x2f, 0xbf, 0x32, 0x09, 0xd9, 0xea, 0xc6, 0xea, - 0x6a, 0xe1, 0x88, 0x72, 0x0c, 0x66, 0x37, 0xaa, 0xf7, 0x56, 0x6b, 0xe7, 0xaa, 0xcd, 0xb2, 0xa6, - 0xd5, 0xb4, 0x42, 0x46, 0x99, 0x85, 0xa9, 0x85, 0xe2, 0x62, 0xb3, 0x52, 0x5d, 0xdf, 0x68, 0x14, - 0x24, 0xf5, 0x35, 0x32, 0xcc, 0xd5, 0x91, 0xbb, 0x88, 0xf6, 0x8c, 0x16, 0xaa, 0xbb, 0xba, 0x8b, - 0xd4, 0x17, 0x65, 0x02, 0x61, 0x2a, 0x1b, 0x5e, 0xa1, 0xc1, 0x27, 0x5a, 0x81, 0x27, 0xec, 0xab, - 0x00, 0x4f, 0x61, 0x9e, 0xfe, 0x3d, 0xcf, 0xa4, 0x69, 0x2c, 0x9d, 0x33, 0x8f, 0x83, 0x69, 0xe6, - 0x9b, 0x32, 0x07, 0xb0, 0x50, 0x2c, 0xdd, 0xbb, 0xac, 0xd5, 0x36, 0xaa, 0x8b, 0x85, 0x23, 0xde, - 0xfb, 0x52, 0x4d, 0x2b, 0xd3, 0xf7, 0x8c, 0xfa, 0xbd, 0x0c, 0x03, 0xe6, 0x22, 0x0f, 0xe6, 0xfc, - 0x60, 0x66, 0xfa, 0x00, 0xaa, 0xbe, 0x31, 0x00, 0x67, 0x99, 0x03, 0xe7, 0x09, 0xc9, 0xc8, 0xa5, - 0x0f, 0xd0, 0x83, 0x12, 0x4c, 0xd6, 0xb7, 0x77, 0xdd, 0xb6, 0x75, 0xd1, 0x54, 0xa7, 0x02, 0x64, - 0xd4, 0x6f, 0xb1, 0x32, 0x79, 0x2a, 0x2f, 0x93, 0x1b, 0xf6, 0x57, 0x82, 0x52, 0x88, 0x90, 0xc6, - 0xeb, 0x02, 0x69, 0x14, 0x39, 0x69, 0x3c, 0x4e, 0x94, 0x50, 0xfa, 0x72, 0x78, 0xc5, 0x93, 0x21, - 0x57, 0xef, 0xea, 0x2d, 0xa4, 0xfe, 0xb1, 0x0c, 0x33, 0xab, 0x48, 0xdf, 0x43, 0xc5, 0x6e, 0xd7, - 0xb6, 0xf6, 0x90, 0x5a, 0x0a, 0xf5, 0xf5, 0x14, 0x4c, 0x38, 0x5e, 0xa6, 0x4a, 0x1b, 0xd7, 0x60, - 0x4a, 0xf3, 0x5f, 0x95, 0xd3, 0x00, 0x46, 0x1b, 0x99, 0xae, 0xe1, 0x1a, 0xc8, 0x39, 0x25, 0x5d, - 0x23, 0xdf, 0x30, 0xa5, 0x31, 0x29, 0xea, 0x77, 0x24, 0x51, 0x1d, 0xc3, 0x5c, 0xcc, 0xb3, 0x1c, - 0x44, 0x48, 0xf5, 0x0d, 0x92, 0x88, 0x8e, 0x0d, 0x24, 0x97, 0x4c, 0xb6, 0x6f, 0xcb, 0x24, 0x17, - 0xae, 0x97, 0xa3, 0x5a, 0x6b, 0xd6, 0x37, 0x4a, 0x2b, 0xcd, 0xfa, 0x7a, 0xb1, 0x54, 0x2e, 0x20, - 0xe5, 0x38, 0x14, 0xf0, 0x63, 0xb3, 0x52, 0x6f, 0x2e, 0x96, 0x57, 0xcb, 0x8d, 0xf2, 0x62, 0x61, - 0x53, 0x51, 0x60, 0x4e, 0x2b, 0x3f, 0x6d, 0xa3, 0x5c, 0x6f, 0x34, 0x97, 0x8a, 0x95, 0xd5, 0xf2, - 0x62, 0x61, 0xcb, 0xfb, 0x79, 0xb5, 0xb2, 0x56, 0x69, 0x34, 0xb5, 0x72, 0xb1, 0xb4, 0x52, 0x5e, - 0x2c, 0x6c, 0x2b, 0x97, 0xc3, 0x65, 0xd5, 0x5a, 0xb3, 0xb8, 0xbe, 0xae, 0xd5, 0xce, 0x96, 0x9b, - 0xf4, 0x8f, 0x7a, 0xc1, 0x20, 0x05, 0x35, 0x9a, 0xf5, 0x95, 0xa2, 0x56, 0x2e, 0x2e, 0xac, 0x96, - 0x0b, 0xf7, 0xab, 0xcf, 0x96, 0x61, 0x76, 0x4d, 0xbf, 0x80, 0xea, 0xdb, 0xba, 0x8d, 0xf4, 0xf3, - 0x1d, 0xa4, 0x5e, 0x2b, 0x80, 0xa7, 0xfa, 0xc7, 0x2c, 0x5e, 0x65, 0x1e, 0xaf, 0x9b, 0xfb, 0x08, - 0x98, 0x2b, 0x22, 0x02, 0xb0, 0xff, 0x19, 0x34, 0x83, 0x15, 0x0e, 0xb0, 0x27, 0x26, 0xa4, 0x97, - 0x0c, 0xb1, 0x9f, 0x7b, 0x04, 0x20, 0xa6, 0x7e, 0x59, 0x86, 0xb9, 0x8a, 0xb9, 0x67, 0xb8, 0x68, - 0x19, 0x99, 0xc8, 0xf6, 0xc6, 0x01, 0x21, 0x18, 0x1e, 0x96, 0x19, 0x18, 0x96, 0x78, 0x18, 0x6e, - 0xe9, 0x23, 0x36, 0xbe, 0x8c, 0x88, 0xd1, 0xf6, 0x2a, 0x98, 0x32, 0x70, 0xbe, 0x92, 0xd1, 0xa6, - 0x12, 0x0b, 0x13, 0x94, 0xeb, 0x60, 0x96, 0xbc, 0x2c, 0x19, 0x1d, 0x74, 0x2f, 0xba, 0x44, 0xc7, - 0x5d, 0x3e, 0x51, 0xfd, 0xc5, 0xa0, 0xf1, 0x55, 0x38, 0x2c, 0x7f, 0x22, 0x29, 0x53, 0xc9, 0xc0, - 0x7c, 0xe9, 0x23, 0xa1, 0xf9, 0xed, 0x6b, 0x65, 0x86, 0xfa, 0x7d, 0x09, 0xa6, 0xeb, 0xae, 0xd5, - 0xf5, 0x54, 0xd6, 0x30, 0xb7, 0xc4, 0xc0, 0xfd, 0x24, 0xdb, 0xc6, 0x4a, 0x3c, 0xb8, 0x8f, 0xeb, - 0x23, 0x47, 0xa6, 0x80, 0x88, 0x16, 0xf6, 0x9d, 0xa0, 0x85, 0x2d, 0x71, 0xa8, 0xdc, 0x9a, 0x88, - 0xda, 0x0f, 0x61, 0xfb, 0x7a, 0xa9, 0x0c, 0x05, 0x5f, 0xcd, 0xdc, 0xd2, 0xae, 0x6d, 0x23, 0xd3, - 0x15, 0x03, 0xe1, 0xaf, 0x58, 0x10, 0x56, 0x78, 0x10, 0x6e, 0x8d, 0x51, 0x66, 0xbf, 0x94, 0x14, - 0xdb, 0xd8, 0x87, 0x03, 0x34, 0xef, 0xe5, 0xd0, 0xfc, 0xc9, 0xe4, 0x6c, 0x25, 0x83, 0x74, 0x65, - 0x08, 0x44, 0x8f, 0x43, 0xc1, 0x1b, 0x93, 0x4a, 0x8d, 0xca, 0xd9, 0x72, 0xb3, 0x52, 0x3d, 0x5b, - 0x69, 0x94, 0x0b, 0x48, 0x7d, 0x89, 0x0c, 0x33, 0x84, 0x35, 0x0d, 0xed, 0x59, 0x17, 0x04, 0x7b, - 0xbd, 0x2f, 0x27, 0x34, 0x16, 0xd8, 0x12, 0x22, 0x5a, 0xc6, 0x2f, 0x24, 0x30, 0x16, 0x62, 0xc8, - 0x3d, 0x92, 0x7a, 0xab, 0x7d, 0xcd, 0x60, 0xab, 0x4f, 0x6b, 0xe9, 0xdb, 0x5b, 0xbd, 0x34, 0x0b, - 0x40, 0x2a, 0x79, 0xd6, 0x40, 0x17, 0xd5, 0xb5, 0x10, 0x13, 0x4e, 0x6d, 0x33, 0x03, 0xd5, 0x56, - 0xea, 0xa7, 0xb6, 0xef, 0x63, 0xc7, 0xac, 0x05, 0x1e, 0xbd, 0x9b, 0x22, 0xc5, 0xed, 0x71, 0x12, - 0x3d, 0x3b, 0xf4, 0x15, 0x45, 0xe2, 0xad, 0xce, 0xab, 0x60, 0x0a, 0x3f, 0x56, 0xf5, 0x1d, 0x44, - 0xdb, 0x50, 0x98, 0xa0, 0x9c, 0x81, 0x19, 0x92, 0xb1, 0x65, 0x99, 0x5e, 0x7d, 0xb2, 0x38, 0x03, - 0x97, 0xe6, 0x81, 0xd8, 0xb2, 0x91, 0xee, 0x5a, 0x36, 0xa6, 0x91, 0x23, 0x20, 0x32, 0x49, 0xea, - 0x37, 0x83, 0x56, 0x58, 0xe6, 0x34, 0xe7, 0xf1, 0x49, 0xaa, 0x92, 0x4c, 0x6f, 0xf6, 0x86, 0x6b, - 0x7f, 0xa4, 0xd5, 0x35, 0x3d, 0xb4, 0x97, 0xf0, 0xd4, 0x0e, 0x29, 0x27, 0x41, 0xa1, 0xa9, 0x5e, - 0xde, 0x52, 0xad, 0xda, 0x28, 0x57, 0x1b, 0x85, 0xcd, 0xbe, 0x1a, 0xb5, 0xa5, 0xbe, 0x21, 0x0b, - 0xd9, 0x7b, 0x2c, 0xc3, 0x54, 0x1f, 0xcc, 0x70, 0x2a, 0x61, 0x22, 0xf7, 0xa2, 0x65, 0x5f, 0x08, - 0x1a, 0x6a, 0x98, 0x10, 0x8f, 0x4d, 0xa8, 0x4a, 0xf2, 0x40, 0x55, 0xca, 0xf6, 0x53, 0xa5, 0x5f, - 0x61, 0x55, 0xe9, 0x0e, 0x5e, 0x95, 0xae, 0xef, 0x23, 0x7f, 0x8f, 0xf9, 0x88, 0x0e, 0xe0, 0x13, - 0x41, 0x07, 0x70, 0x17, 0x07, 0xe3, 0x63, 0xc5, 0xc8, 0x24, 0x03, 0xf0, 0x4b, 0xa9, 0x36, 0xfc, - 0x7e, 0x50, 0x6f, 0x45, 0x40, 0xbd, 0xdd, 0xa7, 0x4f, 0x30, 0xf6, 0x77, 0x1d, 0xf7, 0xef, 0xef, - 0x26, 0x2e, 0x28, 0x27, 0xe0, 0xd8, 0x62, 0x65, 0x69, 0xa9, 0xac, 0x95, 0xab, 0x8d, 0x66, 0xb5, - 0xdc, 0x38, 0x57, 0xd3, 0xee, 0x2d, 0x74, 0xd4, 0x87, 0x64, 0x00, 0x4f, 0x42, 0x25, 0xdd, 0x6c, - 0xa1, 0x8e, 0x58, 0x8f, 0xfe, 0x7f, 0x4b, 0xc9, 0xfa, 0x84, 0x90, 0x7e, 0x04, 0x9c, 0xaf, 0x96, - 0xc4, 0x5b, 0x65, 0x24, 0xb1, 0x64, 0xa0, 0xbe, 0xe5, 0x91, 0x60, 0x7b, 0x5e, 0x06, 0x47, 0x7d, - 0x7a, 0x34, 0x7b, 0xff, 0x69, 0xdf, 0xdb, 0xb3, 0x30, 0x47, 0x61, 0xf1, 0xe7, 0xf1, 0xcf, 0xcb, - 0x88, 0x4c, 0xe4, 0x55, 0x98, 0xa4, 0xd3, 0x76, 0xbf, 0x7b, 0x0f, 0xde, 0x95, 0x65, 0x98, 0xee, - 0x22, 0x7b, 0xc7, 0x70, 0x1c, 0xc3, 0x32, 0xc9, 0x82, 0xdc, 0xdc, 0xad, 0x8f, 0x0e, 0x24, 0x8e, - 0xd7, 0x2e, 0xe7, 0xd7, 0x75, 0xdb, 0x35, 0x5a, 0x46, 0x57, 0x37, 0xdd, 0xf5, 0x30, 0xb3, 0xc6, - 0xfe, 0xa9, 0xbe, 0x38, 0xe1, 0xb4, 0x86, 0xaf, 0x49, 0x84, 0x4a, 0xfc, 0x6e, 0x82, 0x29, 0x49, - 0x2c, 0xc1, 0x64, 0x6a, 0xf1, 0xf1, 0x54, 0xd5, 0xa2, 0x0f, 0xde, 0x5b, 0xca, 0x15, 0x70, 0xa2, - 0x52, 0x2d, 0xd5, 0x34, 0xad, 0x5c, 0x6a, 0x34, 0xd7, 0xcb, 0xda, 0x5a, 0xa5, 0x5e, 0xaf, 0xd4, - 0xaa, 0xf5, 0x83, 0xb4, 0x76, 0xf5, 0x53, 0x72, 0xa0, 0x31, 0x8b, 0xa8, 0xd5, 0x31, 0x4c, 0xa4, - 0xde, 0x75, 0x40, 0x85, 0xe1, 0x57, 0x7d, 0xc4, 0x71, 0xa6, 0xe5, 0x47, 0xe0, 0xfc, 0xfa, 0xe4, - 0x38, 0xf7, 0x27, 0xf8, 0x1f, 0xb8, 0xf9, 0x7f, 0x59, 0x86, 0x63, 0x4c, 0x43, 0xd4, 0xd0, 0xce, - 0xc8, 0x56, 0xf2, 0x7e, 0x8e, 0x6d, 0xbb, 0x15, 0x1e, 0xd3, 0x7e, 0xd6, 0xf4, 0x3e, 0x36, 0x22, - 0x60, 0x7d, 0x4b, 0x00, 0xeb, 0x2a, 0x07, 0xeb, 0x93, 0x87, 0xa0, 0x99, 0x0c, 0xd9, 0xdf, 0x4e, - 0x15, 0xd9, 0x2b, 0xe0, 0xc4, 0x7a, 0x51, 0x6b, 0x54, 0x4a, 0x95, 0xf5, 0xa2, 0x37, 0x8e, 0x32, - 0x43, 0x76, 0x84, 0xb9, 0xce, 0x83, 0xde, 0x17, 0xdf, 0x0f, 0x65, 0xe1, 0xaa, 0xfe, 0x1d, 0x6d, - 0x69, 0x5b, 0x37, 0xb7, 0x90, 0x6a, 0x88, 0x40, 0xbd, 0x08, 0x13, 0x2d, 0x9c, 0x9d, 0xe0, 0xcc, - 0x6e, 0xdd, 0xc4, 0xf4, 0xe5, 0xa4, 0x04, 0xcd, 0xff, 0x55, 0x7d, 0x17, 0xab, 0x10, 0x0d, 0x5e, - 0x21, 0x9e, 0x1a, 0x0f, 0xde, 0x3e, 0xbe, 0x23, 0x74, 0xe3, 0x33, 0x81, 0x6e, 0x9c, 0xe3, 0x74, - 0xa3, 0x74, 0x30, 0xf2, 0xc9, 0xd4, 0xe4, 0x8f, 0x1e, 0x09, 0x1d, 0x40, 0xa4, 0x36, 0x19, 0xd1, - 0xa3, 0x42, 0xdf, 0xee, 0xfe, 0xb5, 0x32, 0xe4, 0x17, 0x51, 0x07, 0x89, 0xae, 0x44, 0x7e, 0x5b, - 0x12, 0xdd, 0x10, 0x21, 0x30, 0x10, 0xda, 0xd1, 0xab, 0x23, 0xae, 0xb1, 0x83, 0x1c, 0x57, 0xdf, - 0xe9, 0x62, 0x51, 0xcb, 0x5a, 0x98, 0xa0, 0xfe, 0xbc, 0x24, 0xb2, 0x5d, 0x12, 0x53, 0xcc, 0x7f, - 0x8c, 0x35, 0xc5, 0xcf, 0x49, 0x30, 0x59, 0x47, 0x6e, 0xcd, 0x6e, 0x23, 0x5b, 0xad, 0x87, 0x18, - 0x5d, 0x03, 0xd3, 0x18, 0x14, 0x6f, 0x9a, 0x19, 0xe0, 0xc4, 0x26, 0x29, 0xd7, 0xc3, 0x5c, 0xf0, - 0x8a, 0x7f, 0xa7, 0xdd, 0x78, 0x4f, 0xaa, 0xfa, 0x4f, 0x19, 0xd1, 0x5d, 0x5c, 0xba, 0x64, 0x48, - 0xb9, 0x89, 0x68, 0xa5, 0x62, 0x3b, 0xb2, 0xb1, 0xa4, 0xd2, 0xdf, 0xe8, 0x7a, 0x87, 0x04, 0xb0, - 0x61, 0x3a, 0xbe, 0x5c, 0x1f, 0x9b, 0x40, 0xae, 0xea, 0xbf, 0x64, 0x92, 0xcd, 0x62, 0xc2, 0x72, - 0x22, 0x24, 0xf6, 0x1b, 0x09, 0xd6, 0x16, 0x22, 0x89, 0xa5, 0x2f, 0xb3, 0xaf, 0xcd, 0x41, 0xfe, - 0x9c, 0xde, 0xe9, 0x20, 0x57, 0xfd, 0xba, 0x04, 0xf9, 0x92, 0x8d, 0x74, 0x17, 0xb1, 0xa2, 0x53, - 0x61, 0xd2, 0xb6, 0x2c, 0x77, 0x5d, 0x77, 0xb7, 0xa9, 0xdc, 0x82, 0x77, 0xea, 0x30, 0xf0, 0x5b, - 0x6c, 0xf7, 0x71, 0x17, 0x2f, 0xba, 0x1f, 0xe7, 0x6a, 0x4b, 0x0a, 0x9a, 0x27, 0x85, 0x44, 0xf4, - 0x1f, 0x2a, 0x4c, 0xee, 0x98, 0x68, 0xc7, 0x32, 0x8d, 0x96, 0x6f, 0x73, 0xfa, 0xef, 0xea, 0x47, - 0x02, 0x99, 0x2e, 0x70, 0x32, 0x9d, 0x17, 0x2e, 0x25, 0x99, 0x40, 0xeb, 0x43, 0xf4, 0x1e, 0x57, - 0xc3, 0x95, 0xa4, 0x33, 0x68, 0x36, 0x6a, 0xcd, 0x92, 0x56, 0x2e, 0x36, 0xca, 0xcd, 0xd5, 0x5a, - 0xa9, 0xb8, 0xda, 0xd4, 0xca, 0xeb, 0xb5, 0x02, 0x52, 0xff, 0x5e, 0xf2, 0x84, 0xdb, 0xb2, 0xf6, - 0x90, 0xad, 0x2e, 0x0b, 0xc9, 0x39, 0x4e, 0x26, 0x14, 0x83, 0x5f, 0x11, 0x76, 0xda, 0xa0, 0xd2, - 0xa1, 0x1c, 0x44, 0x28, 0xef, 0x47, 0x85, 0x9a, 0x7b, 0x2c, 0xa9, 0x47, 0x80, 0xa4, 0xff, 0x87, - 0x04, 0x13, 0x25, 0xcb, 0xdc, 0x43, 0xb6, 0xcb, 0xce, 0x77, 0x58, 0x69, 0x66, 0x78, 0x69, 0x7a, - 0x83, 0x24, 0x32, 0x5d, 0xdb, 0xea, 0xfa, 0x13, 0x1e, 0xff, 0x55, 0x7d, 0x53, 0x52, 0x09, 0xd3, - 0x92, 0xa3, 0x17, 0x3e, 0xfb, 0x17, 0xc4, 0xb1, 0x27, 0xf7, 0x34, 0x80, 0x87, 0x92, 0xe0, 0xd2, - 0x9f, 0x81, 0xf4, 0xbb, 0x94, 0xaf, 0xc8, 0x30, 0x4b, 0x1a, 0x5f, 0x1d, 0x61, 0x0b, 0x4d, 0xad, - 0xb1, 0x4b, 0x8e, 0x3d, 0xc2, 0x5f, 0x39, 0xc2, 0x89, 0x3f, 0xaf, 0x77, 0xbb, 0xc1, 0xf2, 0xf3, - 0xca, 0x11, 0x8d, 0xbe, 0x13, 0x35, 0x5f, 0xc8, 0x43, 0x56, 0xdf, 0x75, 0xb7, 0xd5, 0xef, 0x0b, - 0x4f, 0x3e, 0xb9, 0xce, 0x80, 0xf2, 0x13, 0x01, 0xc9, 0x71, 0xc8, 0xb9, 0xd6, 0x05, 0xe4, 0xcb, - 0x81, 0xbc, 0x78, 0x70, 0xe8, 0xdd, 0x6e, 0x03, 0x7f, 0xa0, 0x70, 0xf8, 0xef, 0x9e, 0xad, 0xa3, - 0xb7, 0x5a, 0xd6, 0xae, 0xe9, 0x56, 0xfc, 0x25, 0xe8, 0x30, 0x41, 0xfd, 0x62, 0x46, 0x64, 0x32, - 0x2b, 0xc0, 0x60, 0x32, 0xc8, 0xce, 0x0f, 0xd1, 0x94, 0xe6, 0xe1, 0xc6, 0xe2, 0xfa, 0x7a, 0xb3, - 0x51, 0xbb, 0xb7, 0x5c, 0x0d, 0x0d, 0xcf, 0x66, 0xa5, 0xda, 0x6c, 0xac, 0x94, 0x9b, 0xa5, 0x0d, - 0x0d, 0xaf, 0x13, 0x16, 0x4b, 0xa5, 0xda, 0x46, 0xb5, 0x51, 0x40, 0xea, 0x5b, 0x25, 0x98, 0x29, - 0x75, 0x2c, 0x27, 0x40, 0xf8, 0xea, 0x10, 0xe1, 0x40, 0x8c, 0x19, 0x46, 0x8c, 0xea, 0xbf, 0x65, - 0x44, 0x9d, 0x0e, 0x7c, 0x81, 0x30, 0xe4, 0x23, 0x7a, 0xa9, 0x37, 0x09, 0x39, 0x1d, 0x0c, 0xa6, - 0x97, 0x7e, 0x93, 0xf8, 0xc5, 0xbb, 0x61, 0xa2, 0x48, 0x14, 0x43, 0xfd, 0x9b, 0x0c, 0xe4, 0x4b, - 0x96, 0xb9, 0x69, 0x6c, 0x79, 0xc6, 0x1c, 0x32, 0xf5, 0xf3, 0x1d, 0xb4, 0xa8, 0xbb, 0xfa, 0x9e, - 0x81, 0x2e, 0xe2, 0x0a, 0x4c, 0x6a, 0x3d, 0xa9, 0x1e, 0x53, 0x34, 0x05, 0x9d, 0xdf, 0xdd, 0xc2, - 0x4c, 0x4d, 0x6a, 0x6c, 0x92, 0xf2, 0x64, 0xb8, 0x9c, 0xbc, 0xae, 0xdb, 0xc8, 0x46, 0x1d, 0xa4, - 0x3b, 0xc8, 0x9b, 0x16, 0x99, 0xa8, 0x83, 0x95, 0x76, 0x52, 0x8b, 0xfa, 0xac, 0x9c, 0x81, 0x19, - 0xf2, 0x09, 0x9b, 0x22, 0x0e, 0x56, 0xe3, 0x49, 0x8d, 0x4b, 0x53, 0x1e, 0x07, 0x39, 0xf4, 0x80, - 0x6b, 0xeb, 0xa7, 0xda, 0x18, 0xaf, 0xcb, 0xe7, 0x89, 0xd7, 0xe1, 0xbc, 0xef, 0x75, 0x38, 0x5f, - 0xc7, 0x3e, 0x89, 0x1a, 0xc9, 0xa5, 0xbe, 0x6a, 0x32, 0x30, 0x24, 0x7e, 0x20, 0x85, 0x8a, 0xa1, - 0x40, 0xd6, 0xd4, 0x77, 0x10, 0xd5, 0x0b, 0xfc, 0xac, 0xdc, 0x08, 0x47, 0xf5, 0x3d, 0xdd, 0xd5, - 0xed, 0x55, 0xab, 0xa5, 0x77, 0xf0, 0xe0, 0xe7, 0xb7, 0xfc, 0xde, 0x0f, 0x78, 0x47, 0xc8, 0xb5, - 0x6c, 0x84, 0x73, 0xf9, 0x3b, 0x42, 0x7e, 0x82, 0x47, 0xdd, 0x68, 0x59, 0x26, 0xe6, 0x5f, 0xd6, - 0xf0, 0xb3, 0x27, 0x95, 0xb6, 0xe1, 0x78, 0x15, 0xc1, 0x54, 0xaa, 0x64, 0x6b, 0xa3, 0x7e, 0xc9, - 0x6c, 0xe1, 0xdd, 0xa0, 0x49, 0x2d, 0xea, 0xb3, 0xb2, 0x00, 0xd3, 0x74, 0x23, 0x64, 0xcd, 0xd3, - 0xab, 0x3c, 0xd6, 0xab, 0x6b, 0x78, 0x9f, 0x2e, 0x82, 0xe7, 0x7c, 0x35, 0xcc, 0xa7, 0xb1, 0x3f, - 0x29, 0x77, 0xc3, 0x95, 0xf4, 0xb5, 0xb4, 0xeb, 0xb8, 0xd6, 0x0e, 0x01, 0x7d, 0xc9, 0xe8, 0x90, - 0x1a, 0x4c, 0xe0, 0x1a, 0xc4, 0x65, 0x51, 0x6e, 0x85, 0xe3, 0x5d, 0x1b, 0x6d, 0x22, 0xfb, 0x3e, - 0x7d, 0x67, 0xf7, 0x81, 0x86, 0xad, 0x9b, 0x4e, 0xd7, 0xb2, 0xdd, 0x53, 0x93, 0x98, 0xf9, 0xbe, - 0xdf, 0x68, 0x47, 0x39, 0x09, 0x79, 0x22, 0x3e, 0xf5, 0x45, 0x39, 0x61, 0x77, 0x4e, 0x5a, 0xa1, - 0x58, 0xf3, 0xec, 0x16, 0x98, 0xa0, 0x3d, 0x1c, 0x06, 0x6a, 0xfa, 0xd6, 0x93, 0x3d, 0xeb, 0x0a, - 0x94, 0x8a, 0xe6, 0x67, 0x53, 0x9e, 0x00, 0xf9, 0x16, 0xae, 0x16, 0xc6, 0x6c, 0xfa, 0xd6, 0x2b, - 0xfb, 0x17, 0x8a, 0xb3, 0x68, 0x34, 0xab, 0xfa, 0x97, 0xb2, 0x90, 0x07, 0x68, 0x1c, 0xc7, 0xc9, - 0x5a, 0xf5, 0x37, 0xa5, 0x21, 0xba, 0xcd, 0x9b, 0xe0, 0x06, 0xda, 0x27, 0x52, 0xfb, 0x63, 0xb1, - 0xb9, 0xb0, 0xe1, 0x4f, 0x06, 0x3d, 0xab, 0xa4, 0xde, 0x28, 0x6a, 0xde, 0x4c, 0x7e, 0xd1, 0x9b, - 0x44, 0xde, 0x08, 0xd7, 0x0f, 0xc8, 0x5d, 0x6e, 0x34, 0xab, 0xc5, 0xb5, 0x72, 0x61, 0x93, 0xb7, - 0x6d, 0xea, 0x8d, 0xda, 0x7a, 0x53, 0xdb, 0xa8, 0x56, 0x2b, 0xd5, 0x65, 0x42, 0xcc, 0x33, 0x09, - 0x4f, 0x86, 0x19, 0xce, 0x69, 0x95, 0x46, 0xb9, 0x59, 0xaa, 0x55, 0x97, 0x2a, 0xcb, 0x05, 0x63, - 0x90, 0x61, 0x74, 0xbf, 0x72, 0x0d, 0x5c, 0xc5, 0x71, 0x52, 0xa9, 0x55, 0xbd, 0x99, 0x6d, 0xa9, - 0x58, 0x2d, 0x95, 0xbd, 0x69, 0xec, 0x05, 0x45, 0x85, 0x13, 0x84, 0x5c, 0x73, 0xa9, 0xb2, 0xca, - 0x6e, 0x46, 0x7d, 0x32, 0xa3, 0x9c, 0x82, 0xcb, 0xd8, 0x6f, 0x95, 0xea, 0xd9, 0xe2, 0x6a, 0x65, - 0xb1, 0xf0, 0x87, 0x19, 0xe5, 0x3a, 0xb8, 0x9a, 0xfb, 0x8b, 0xec, 0x2b, 0x35, 0x2b, 0x8b, 0xcd, - 0xb5, 0x4a, 0x7d, 0xad, 0xd8, 0x28, 0xad, 0x14, 0x3e, 0x85, 0xe7, 0x0b, 0x81, 0x01, 0xcc, 0xb8, - 0x65, 0xbe, 0x94, 0x1d, 0xd3, 0x8b, 0xbc, 0xa2, 0x3e, 0xb6, 0x2f, 0xec, 0xf1, 0x36, 0xec, 0xc7, - 0x83, 0xd1, 0x61, 0x91, 0x53, 0xa1, 0x5b, 0x12, 0xd0, 0x4a, 0xa6, 0x43, 0x8d, 0x21, 0x54, 0xe8, - 0x1a, 0xb8, 0xaa, 0x5a, 0x26, 0x48, 0x69, 0xe5, 0x52, 0xed, 0x6c, 0x59, 0x6b, 0x9e, 0x2b, 0xae, - 0xae, 0x96, 0x1b, 0xcd, 0xa5, 0x8a, 0x56, 0x6f, 0x14, 0x36, 0xd5, 0x7f, 0x91, 0x82, 0xd5, 0x1c, - 0x46, 0x5a, 0x7f, 0x23, 0x25, 0x6d, 0xd6, 0xb1, 0xab, 0x36, 0x3f, 0x01, 0x79, 0xc7, 0xd5, 0xdd, - 0x5d, 0x87, 0xb6, 0xea, 0x47, 0xf5, 0x6f, 0xd5, 0xf3, 0x75, 0x9c, 0x49, 0xa3, 0x99, 0xd5, 0xbf, - 0xcc, 0x24, 0x69, 0xa6, 0x23, 0x58, 0xd0, 0x31, 0x86, 0x10, 0xf1, 0x69, 0x50, 0x7d, 0x6d, 0xaf, - 0xd4, 0x9b, 0xc5, 0x55, 0xad, 0x5c, 0x5c, 0xbc, 0x2f, 0x58, 0xc6, 0x41, 0xca, 0x09, 0x38, 0xb6, - 0x51, 0x2d, 0x2e, 0xac, 0x96, 0x71, 0x73, 0xa9, 0x55, 0xab, 0xe5, 0x92, 0x27, 0xf7, 0x9f, 0xc7, - 0x9b, 0x26, 0x9e, 0x05, 0x8d, 0xf9, 0xf6, 0xac, 0x1c, 0x46, 0xfe, 0xdf, 0x10, 0xf6, 0x2d, 0x0a, - 0x35, 0x8c, 0xa5, 0x35, 0x5a, 0x1c, 0xbe, 0x28, 0xe4, 0x4e, 0x24, 0xc4, 0x49, 0x32, 0x3c, 0xfe, - 0xf3, 0x10, 0x78, 0x9c, 0x80, 0x63, 0x2c, 0x1e, 0xd8, 0xad, 0x28, 0x1a, 0x86, 0xaf, 0x4a, 0x30, - 0xb1, 0x66, 0x6c, 0x61, 0xbf, 0xca, 0xa7, 0x84, 0xc6, 0xc4, 0x1c, 0x48, 0x81, 0x1b, 0x8b, 0x64, - 0xb4, 0xb9, 0xe9, 0xb3, 0xd4, 0x77, 0x99, 0xe2, 0x65, 0x89, 0xfb, 0x17, 0x5a, 0x6c, 0x44, 0xff, - 0xf2, 0xc9, 0x44, 0xfd, 0x4b, 0x7f, 0x5a, 0xc9, 0x84, 0x7d, 0xee, 0x60, 0xc2, 0x66, 0x9d, 0x47, - 0x66, 0x60, 0x32, 0xe8, 0xed, 0x37, 0xd5, 0x77, 0x4a, 0x30, 0x4b, 0x19, 0xa4, 0x3b, 0xff, 0x57, - 0x47, 0x4a, 0x9a, 0x4a, 0xf3, 0x07, 0xac, 0x3d, 0xbf, 0xcc, 0x4b, 0xf3, 0xf1, 0x71, 0x12, 0x88, - 0xdd, 0xfa, 0x7f, 0x73, 0x20, 0xd3, 0x7b, 0x38, 0x99, 0x3e, 0x29, 0x31, 0xc5, 0xf4, 0x6d, 0xfa, - 0x67, 0x4d, 0x41, 0xbe, 0x8e, 0x3a, 0xa8, 0xe5, 0xaa, 0x6f, 0x97, 0x86, 0x52, 0xcc, 0x38, 0xfb, - 0x54, 0x4e, 0x64, 0x9f, 0x66, 0x53, 0xb0, 0x4f, 0x73, 0xc3, 0xdb, 0xa7, 0xf9, 0x41, 0xf6, 0xa9, - 0xfa, 0xb1, 0x7c, 0xd2, 0xe1, 0x8b, 0x88, 0xfa, 0x70, 0xad, 0xd2, 0x5f, 0xca, 0x25, 0x19, 0xee, - 0xfa, 0x72, 0x9c, 0x4c, 0x2f, 0x5f, 0x9d, 0x4d, 0x61, 0x5d, 0x4c, 0xb9, 0x16, 0xae, 0x0e, 0xdf, - 0x9b, 0xe5, 0xa7, 0x57, 0xea, 0x8d, 0x3a, 0x36, 0x45, 0x4b, 0x35, 0x4d, 0xdb, 0x58, 0x27, 0x9b, - 0x1b, 0x27, 0x41, 0x09, 0xa9, 0x68, 0x1b, 0x55, 0x62, 0x78, 0x6e, 0xf1, 0xd4, 0x97, 0x2a, 0xd5, - 0xc5, 0x66, 0xd0, 0x99, 0x57, 0x97, 0x6a, 0x85, 0x6d, 0x65, 0x1e, 0x6e, 0x64, 0xa8, 0x7b, 0x9d, - 0x0e, 0x2d, 0xa1, 0x58, 0x5d, 0x6c, 0xae, 0x55, 0xcb, 0x6b, 0xb5, 0x6a, 0xa5, 0x84, 0xd3, 0xeb, - 0xe5, 0x46, 0xc1, 0xf0, 0x2c, 0xa0, 0x1e, 0x53, 0xb7, 0x5e, 0x2e, 0x6a, 0xa5, 0x95, 0xb2, 0x46, - 0x8a, 0xbc, 0x5f, 0xb9, 0x1e, 0xce, 0x14, 0xab, 0xb5, 0x86, 0x97, 0x52, 0xac, 0xde, 0xd7, 0xb8, - 0x6f, 0xbd, 0xdc, 0x5c, 0xd7, 0x6a, 0xa5, 0x72, 0xbd, 0xee, 0x0d, 0x20, 0xd4, 0x30, 0x2e, 0x74, - 0x94, 0xa7, 0xc2, 0xed, 0x0c, 0x6b, 0xe5, 0x06, 0xde, 0x49, 0x5f, 0xab, 0x61, 0x67, 0xaa, 0xc5, - 0x72, 0x73, 0xa5, 0x58, 0x6f, 0x56, 0xaa, 0xa5, 0xda, 0xda, 0x7a, 0xb1, 0x51, 0xf1, 0xc6, 0x99, - 0x75, 0xad, 0xd6, 0xa8, 0x35, 0xcf, 0x96, 0xb5, 0x7a, 0xa5, 0x56, 0x2d, 0x98, 0x5e, 0x95, 0x99, - 0x81, 0xc9, 0x37, 0x10, 0x2c, 0xe5, 0x2a, 0x38, 0xe5, 0xa7, 0xaf, 0xd6, 0x3c, 0x41, 0x33, 0xa6, - 0x72, 0x97, 0x35, 0x2f, 0xea, 0x8d, 0x9a, 0x46, 0x8c, 0xe5, 0xb5, 0xca, 0xb2, 0xe6, 0x59, 0xf8, - 0x85, 0x67, 0xa4, 0x6a, 0x4a, 0xff, 0xab, 0x04, 0xd9, 0xba, 0x6b, 0x75, 0xd5, 0x1f, 0x0f, 0x3b, - 0xa0, 0xd3, 0x00, 0x36, 0xde, 0x38, 0x5f, 0xd4, 0x5d, 0x9d, 0x2e, 0x28, 0x30, 0x29, 0xea, 0x1f, - 0x08, 0xef, 0xf6, 0x85, 0xc6, 0x86, 0xd5, 0x8d, 0xe8, 0xb0, 0xbf, 0x27, 0x76, 0xfc, 0x29, 0x9a, - 0x50, 0xb2, 0xf6, 0xf0, 0x0b, 0xc3, 0xec, 0xe7, 0xa9, 0x70, 0x92, 0x81, 0xd5, 0x93, 0xbf, 0xaf, - 0x32, 0x48, 0xb9, 0x1c, 0x2e, 0xeb, 0x51, 0x3e, 0xac, 0x73, 0x9b, 0xca, 0x8f, 0xc1, 0xa3, 0x18, - 0xf5, 0x2f, 0xaf, 0xd5, 0xce, 0x96, 0x03, 0x45, 0x5f, 0x2c, 0x36, 0x8a, 0x85, 0x2d, 0xf5, 0x73, - 0x32, 0x64, 0xd7, 0xac, 0xbd, 0xde, 0x4d, 0x56, 0x13, 0x5d, 0x64, 0x16, 0xf1, 0xfd, 0x57, 0xfe, - 0xb8, 0x87, 0x90, 0xd8, 0xd7, 0xa2, 0x1d, 0x2a, 0xbe, 0x28, 0x25, 0x11, 0xfb, 0xda, 0x41, 0xbd, - 0x28, 0xfe, 0x61, 0x18, 0xb1, 0x47, 0x88, 0x16, 0x29, 0x67, 0xe0, 0x74, 0xf8, 0xa1, 0xb2, 0x58, - 0xae, 0x36, 0x2a, 0x4b, 0xf7, 0x85, 0xc2, 0xad, 0x68, 0x42, 0xe2, 0x1f, 0xd4, 0xcd, 0xc5, 0x4f, - 0x91, 0x4f, 0xc1, 0xf1, 0xf0, 0xdb, 0x72, 0xb9, 0xe1, 0x7f, 0xb9, 0x5f, 0x7d, 0x30, 0x07, 0x33, - 0xa4, 0xdb, 0xdf, 0xe8, 0xb6, 0x3d, 0xa3, 0xf3, 0x09, 0x21, 0xba, 0x37, 0xc0, 0xd1, 0xca, 0xfa, - 0x52, 0xbd, 0xee, 0x5a, 0xb6, 0xbe, 0x85, 0x8a, 0xed, 0xb6, 0x4d, 0xa5, 0xd5, 0x9b, 0xac, 0xbe, - 0x47, 0x78, 0x81, 0x9a, 0x1f, 0x6a, 0x48, 0x99, 0x11, 0xa8, 0x7f, 0x45, 0x68, 0x41, 0x59, 0x80, - 0x60, 0x32, 0xf4, 0xef, 0x1f, 0x71, 0x9b, 0x8b, 0xc6, 0x65, 0xf3, 0xcc, 0x73, 0x25, 0x98, 0x6a, - 0x18, 0x3b, 0xe8, 0x99, 0x96, 0x89, 0x1c, 0x65, 0x02, 0xe4, 0xe5, 0xb5, 0x46, 0xe1, 0x88, 0xf7, - 0xe0, 0xcd, 0x06, 0x32, 0xf8, 0xa1, 0xec, 0x15, 0xe0, 0x3d, 0x14, 0x1b, 0x05, 0xd9, 0x7b, 0x58, - 0x2b, 0x37, 0x0a, 0x59, 0xef, 0xa1, 0x5a, 0x6e, 0x14, 0x72, 0xde, 0xc3, 0xfa, 0x6a, 0xa3, 0x90, - 0xf7, 0x1e, 0x2a, 0xf5, 0x46, 0x61, 0xc2, 0x7b, 0x58, 0xa8, 0x37, 0x0a, 0x93, 0xde, 0xc3, 0xd9, - 0x7a, 0xa3, 0x30, 0xe5, 0x3d, 0x94, 0x1a, 0x8d, 0x02, 0x78, 0x0f, 0xf7, 0xd4, 0x1b, 0x85, 0x69, - 0xef, 0xa1, 0x58, 0x6a, 0x14, 0x66, 0xf0, 0x43, 0xb9, 0x51, 0x98, 0xf5, 0x1e, 0xea, 0xf5, 0x46, - 0x61, 0x0e, 0x53, 0xae, 0x37, 0x0a, 0x47, 0x71, 0x59, 0x95, 0x46, 0xa1, 0xe0, 0x3d, 0xac, 0xd4, - 0x1b, 0x85, 0x63, 0x38, 0x73, 0xbd, 0x51, 0x50, 0x70, 0xa1, 0xf5, 0x46, 0xe1, 0x32, 0x9c, 0xa7, - 0xde, 0x28, 0x1c, 0xc7, 0x45, 0xd4, 0x1b, 0x85, 0x13, 0x98, 0x8d, 0x72, 0xa3, 0x70, 0x12, 0xe7, - 0xd1, 0x1a, 0x85, 0xcb, 0xf1, 0xa7, 0x6a, 0xa3, 0x70, 0x0a, 0x33, 0x56, 0x6e, 0x14, 0xae, 0xc0, - 0x0f, 0x5a, 0xa3, 0xa0, 0xe2, 0x4f, 0xc5, 0x46, 0xe1, 0x4a, 0xf5, 0x51, 0x30, 0xb5, 0x8c, 0x5c, - 0x02, 0xa2, 0x5a, 0x00, 0x79, 0x19, 0xb9, 0xec, 0xfc, 0xf3, 0x6b, 0x32, 0x5c, 0x4e, 0xd7, 0x2c, - 0x96, 0x6c, 0x6b, 0x67, 0x15, 0x6d, 0xe9, 0xad, 0x4b, 0xe5, 0x07, 0x3c, 0x13, 0x8b, 0x75, 0x28, - 0x50, 0x20, 0xdb, 0x0d, 0x3b, 0x23, 0xfc, 0x1c, 0x6b, 0x91, 0xfa, 0xab, 0xa8, 0x72, 0xb8, 0x8a, - 0x4a, 0x2d, 0xb6, 0x7f, 0x66, 0x35, 0x9a, 0xdb, 0xf8, 0xc8, 0xf4, 0x6c, 0x7c, 0x78, 0xcd, 0xa4, - 0x8b, 0x6c, 0xc7, 0x32, 0xf5, 0x4e, 0x9d, 0x7a, 0x9c, 0x90, 0xe5, 0xda, 0xde, 0x64, 0xe5, 0x69, - 0x7e, 0xcb, 0x20, 0x56, 0xdb, 0x53, 0xe2, 0x96, 0x66, 0x7a, 0xab, 0x19, 0xd1, 0x48, 0x3e, 0x15, - 0x34, 0x92, 0x06, 0xd7, 0x48, 0xee, 0x3e, 0x00, 0xed, 0x64, 0xed, 0xa5, 0x32, 0xdc, 0x34, 0x2d, - 0xf4, 0xc7, 0xf6, 0xf7, 0x59, 0x64, 0xf5, 0x73, 0x12, 0x9c, 0x2c, 0x9b, 0xfd, 0x66, 0x00, 0xac, - 0x2e, 0xbc, 0x95, 0x85, 0x66, 0x9d, 0x17, 0xe9, 0xed, 0x7d, 0xab, 0xdd, 0x9f, 0x66, 0x84, 0x44, - 0x3f, 0x1d, 0x48, 0xb4, 0xce, 0x49, 0xf4, 0xae, 0xe1, 0x49, 0x27, 0x13, 0x68, 0x75, 0xa4, 0x1d, - 0x50, 0x56, 0xfd, 0x66, 0x16, 0x1e, 0x45, 0x9c, 0xc6, 0x28, 0x87, 0xa4, 0x95, 0x15, 0xcd, 0xb6, - 0x86, 0x1c, 0x57, 0xb7, 0x5d, 0xee, 0x20, 0x7f, 0xcf, 0x54, 0x2b, 0x93, 0xc2, 0x54, 0x4b, 0x1a, - 0x38, 0xd5, 0x52, 0xdf, 0xcd, 0x9a, 0x0f, 0xe7, 0x78, 0x8c, 0x8b, 0xfd, 0xfb, 0xff, 0xb8, 0x1a, - 0x46, 0x41, 0x1d, 0xd8, 0x15, 0x3f, 0xc5, 0x41, 0xbd, 0x74, 0xe0, 0x12, 0x92, 0x21, 0xfe, 0x07, - 0xa3, 0xb5, 0xf3, 0xb2, 0xec, 0x37, 0xde, 0x28, 0x29, 0xb4, 0x53, 0x35, 0xd0, 0x3f, 0x33, 0x01, - 0x53, 0xb8, 0x2d, 0xac, 0x1a, 0xe6, 0x05, 0xf5, 0x21, 0x19, 0x66, 0xaa, 0xe8, 0x62, 0x69, 0x5b, - 0xef, 0x74, 0x90, 0xb9, 0x85, 0x58, 0xb3, 0xfd, 0x14, 0x4c, 0xe8, 0xdd, 0x6e, 0x35, 0xdc, 0x20, - 0xf3, 0x5f, 0x69, 0xff, 0xfb, 0x8d, 0xbe, 0x8d, 0x3c, 0x13, 0xd3, 0xc8, 0x83, 0x72, 0xe7, 0xd9, - 0x32, 0x23, 0x66, 0xd0, 0xd7, 0xc0, 0x74, 0xcb, 0xcf, 0x12, 0x1c, 0xf8, 0x61, 0x93, 0xd4, 0xbf, - 0x4b, 0xd4, 0x0d, 0x08, 0x15, 0x9e, 0x4c, 0x29, 0xd0, 0x88, 0xed, 0x90, 0x13, 0x70, 0xac, 0x51, - 0xab, 0x35, 0xd7, 0x8a, 0xd5, 0xfb, 0xc2, 0x83, 0xf6, 0x9b, 0xea, 0xab, 0xb3, 0x30, 0x57, 0xb7, - 0x3a, 0x7b, 0x28, 0x84, 0xa9, 0xc2, 0x79, 0x92, 0xb1, 0x72, 0xca, 0xec, 0x93, 0x93, 0x72, 0x12, - 0xf2, 0xba, 0xe9, 0x5c, 0x44, 0xbe, 0x6d, 0x48, 0xdf, 0x28, 0x8c, 0x1f, 0x62, 0xdb, 0xb1, 0xc6, - 0xc3, 0x78, 0xc7, 0x00, 0x49, 0xf2, 0x5c, 0x45, 0x00, 0x79, 0x06, 0x66, 0x1c, 0xb2, 0xcb, 0xdd, - 0x60, 0x9c, 0x19, 0xb8, 0x34, 0xcc, 0x22, 0x71, 0xb3, 0x90, 0x29, 0x8b, 0xf8, 0x4d, 0x7d, 0x28, - 0x68, 0xfe, 0x1b, 0x1c, 0xc4, 0xc5, 0x83, 0x30, 0x96, 0x0c, 0xe4, 0xd7, 0x8e, 0x7a, 0x86, 0x77, - 0x0a, 0x8e, 0xd3, 0x56, 0xdb, 0x2c, 0xad, 0x14, 0x57, 0x57, 0xcb, 0xd5, 0xe5, 0x72, 0xb3, 0xb2, - 0x48, 0xf6, 0xd8, 0xc2, 0x94, 0x62, 0xa3, 0x51, 0x5e, 0x5b, 0x6f, 0xd4, 0x9b, 0xe5, 0xa7, 0x97, - 0xca, 0xe5, 0x45, 0xec, 0xcb, 0x89, 0x0f, 0x63, 0xf9, 0x5e, 0xb7, 0xc5, 0x6a, 0xfd, 0x5c, 0x59, - 0x2b, 0x6c, 0x9f, 0x29, 0xc2, 0x34, 0xd3, 0xcf, 0x7b, 0xdc, 0x2d, 0xa2, 0x4d, 0x7d, 0xb7, 0x43, - 0x6d, 0xb5, 0xc2, 0x11, 0x8f, 0x3b, 0x2c, 0x9b, 0x9a, 0xd9, 0xb9, 0x54, 0xc8, 0x28, 0x05, 0x98, - 0x61, 0xbb, 0xf4, 0x82, 0xa4, 0xbe, 0xe3, 0x2a, 0x98, 0x3a, 0x67, 0xd9, 0x17, 0xb0, 0x03, 0xa2, - 0xfa, 0x7e, 0x12, 0x90, 0xc7, 0x3f, 0xda, 0xcc, 0x0c, 0xec, 0xaf, 0x15, 0x77, 0x73, 0xf1, 0xa9, - 0xcd, 0x0f, 0x3c, 0xbe, 0x7c, 0x0d, 0x4c, 0x5f, 0xf4, 0x73, 0x87, 0x2d, 0x9d, 0x49, 0x52, 0xff, - 0x9b, 0x98, 0xe3, 0xca, 0xe0, 0x22, 0xd3, 0x5f, 0x84, 0x7d, 0xbb, 0x04, 0xf9, 0x65, 0xe4, 0x16, - 0x3b, 0x1d, 0x56, 0x6e, 0x2f, 0x17, 0x3e, 0x92, 0xc6, 0x55, 0xa2, 0xd8, 0xe9, 0x44, 0x37, 0x2a, - 0x46, 0x40, 0xfe, 0xd1, 0x09, 0x2e, 0x4d, 0xd0, 0xe1, 0x73, 0x40, 0x81, 0xe9, 0x4b, 0xec, 0x23, - 0x72, 0xe0, 0x9c, 0xf1, 0x30, 0x63, 0xe5, 0x3c, 0x3e, 0x0c, 0xc6, 0x94, 0x89, 0x77, 0xf2, 0xf0, - 0xf3, 0x29, 0xf7, 0xc2, 0xc4, 0xae, 0x83, 0x4a, 0xba, 0x83, 0x30, 0x6f, 0xbd, 0x35, 0xad, 0x9d, - 0xbf, 0x1f, 0xb5, 0xdc, 0xf9, 0xca, 0x8e, 0x67, 0x50, 0x6f, 0x90, 0x8c, 0x41, 0x7c, 0x23, 0xfa, - 0xae, 0xf9, 0x14, 0xbc, 0x49, 0xc9, 0x45, 0xc3, 0xdd, 0x2e, 0x6d, 0xeb, 0x2e, 0x5d, 0xfb, 0x0e, - 0xde, 0xd5, 0x17, 0x0d, 0x01, 0x67, 0xac, 0x13, 0x43, 0xe4, 0xc9, 0xd6, 0xc4, 0x20, 0x8e, 0xc0, - 0xf3, 0x60, 0x18, 0x10, 0xff, 0x51, 0x82, 0x6c, 0xad, 0x8b, 0x4c, 0xe1, 0x63, 0x5c, 0x81, 0x6c, - 0xa5, 0x1e, 0xd9, 0x3e, 0x24, 0xee, 0xd6, 0x18, 0x54, 0xda, 0x2b, 0x39, 0x42, 0xb2, 0x37, 0x43, - 0xd6, 0x30, 0x37, 0x2d, 0x6a, 0x98, 0x5e, 0x19, 0xb1, 0x7b, 0x59, 0x31, 0x37, 0x2d, 0x0d, 0x67, - 0x14, 0xf5, 0x68, 0x8c, 0x2b, 0x3b, 0x7d, 0x71, 0x7f, 0x6b, 0x12, 0xf2, 0x44, 0x9d, 0xd5, 0x97, - 0xca, 0x20, 0x17, 0xdb, 0xed, 0x08, 0xc1, 0x4b, 0xfb, 0x04, 0x6f, 0xe1, 0xdf, 0x02, 0x4c, 0x82, - 0x77, 0x3e, 0x0a, 0x8f, 0x60, 0xdf, 0x4e, 0x9b, 0x54, 0xb1, 0xdd, 0x8e, 0x76, 0x9e, 0x0e, 0x0a, - 0x94, 0xf8, 0x02, 0xd9, 0x16, 0x2e, 0x8b, 0xb5, 0xf0, 0xc4, 0x03, 0x41, 0x24, 0x7f, 0xe9, 0x43, - 0xf4, 0xcf, 0x12, 0x4c, 0xac, 0x1a, 0x8e, 0xeb, 0x61, 0x53, 0x14, 0xc1, 0xe6, 0x2a, 0x98, 0xf2, - 0x45, 0xe3, 0x75, 0x79, 0x5e, 0x7f, 0x1e, 0x26, 0xa8, 0x6f, 0x60, 0xd1, 0xb9, 0x87, 0x47, 0xe7, - 0x89, 0xf1, 0xb5, 0xa7, 0x5c, 0x44, 0x1f, 0x8f, 0x09, 0x8b, 0x95, 0x7a, 0x8b, 0xfd, 0xad, 0x40, - 0xe0, 0x6b, 0x9c, 0xc0, 0x6f, 0x1b, 0xa6, 0xc8, 0xf4, 0x85, 0xfe, 0x79, 0x09, 0xc0, 0x2b, 0x9b, - 0x9e, 0x41, 0x7c, 0x0c, 0x17, 0x59, 0x20, 0x46, 0xba, 0xaf, 0x66, 0xa5, 0xbb, 0xc6, 0x4b, 0xf7, - 0x27, 0x07, 0x57, 0x35, 0xee, 0xac, 0xa1, 0x52, 0x00, 0xd9, 0x08, 0x44, 0xeb, 0x3d, 0xaa, 0x6f, - 0x0f, 0x84, 0xba, 0xce, 0x09, 0xf5, 0x8e, 0x21, 0x4b, 0x4a, 0x5f, 0xae, 0x7f, 0x25, 0xc1, 0x44, - 0x1d, 0xb9, 0x5e, 0x37, 0xa9, 0x9e, 0x15, 0xe9, 0xe1, 0x99, 0xb6, 0x2d, 0x09, 0xb6, 0xed, 0xef, - 0x66, 0x44, 0x23, 0x14, 0x85, 0x92, 0xa1, 0x3c, 0x45, 0x2c, 0x1e, 0x3c, 0x2c, 0x14, 0xa1, 0x68, - 0x10, 0xb5, 0xf4, 0xa5, 0xfb, 0x56, 0x29, 0xd8, 0xb8, 0xe7, 0x8f, 0x08, 0xb1, 0x66, 0x71, 0x66, - 0xbf, 0x59, 0x2c, 0x7e, 0x44, 0x88, 0xad, 0x63, 0xf4, 0xae, 0x75, 0x62, 0x63, 0x63, 0x04, 0x1b, - 0xca, 0xc3, 0xc8, 0xeb, 0xd9, 0x32, 0xe4, 0xe9, 0xca, 0xf2, 0x5d, 0xf1, 0x2b, 0xcb, 0x83, 0xa7, - 0x16, 0xef, 0x1b, 0xc2, 0x94, 0x8b, 0x5b, 0xee, 0x0d, 0xd8, 0x90, 0x18, 0x36, 0x6e, 0x82, 0x1c, - 0x0e, 0xa1, 0x4a, 0xc7, 0xb9, 0xd0, 0x17, 0xc0, 0x27, 0x51, 0xf6, 0xbe, 0x6a, 0x24, 0x53, 0x62, - 0x14, 0x46, 0xb0, 0x42, 0x3c, 0x0c, 0x0a, 0xef, 0xfe, 0x5c, 0x26, 0x30, 0x42, 0xde, 0x97, 0xa5, - 0xe6, 0xdf, 0x27, 0xf8, 0x60, 0x2e, 0x2d, 0xcb, 0x74, 0xd1, 0x03, 0xcc, 0x9a, 0x7c, 0x90, 0x10, - 0x6b, 0x19, 0x9c, 0x82, 0x09, 0xd7, 0x66, 0xd7, 0xe9, 0xfd, 0x57, 0xb6, 0xc7, 0xc9, 0xf1, 0x3d, - 0x4e, 0x15, 0xce, 0x18, 0x66, 0xab, 0xb3, 0xdb, 0x46, 0x1a, 0xea, 0xe8, 0x5e, 0xad, 0x9c, 0xa2, - 0xb3, 0x88, 0xba, 0xc8, 0x6c, 0x23, 0xd3, 0x25, 0x7c, 0xfa, 0xce, 0xe4, 0x02, 0x39, 0xd5, 0xaf, - 0xb3, 0x8a, 0x71, 0x27, 0xaf, 0x18, 0x8f, 0xe9, 0x37, 0xaf, 0x88, 0x31, 0x42, 0x6f, 0x03, 0x20, - 0x75, 0x3b, 0x6b, 0xa0, 0x8b, 0xb4, 0x43, 0xbc, 0xa2, 0xc7, 0x14, 0xad, 0x05, 0x19, 0x34, 0x26, - 0xb3, 0xfa, 0xe5, 0x40, 0x19, 0xee, 0xe6, 0x94, 0xe1, 0x26, 0x41, 0x16, 0x92, 0xe9, 0x41, 0x77, - 0x88, 0xb5, 0x8e, 0x59, 0x98, 0x0a, 0x57, 0x28, 0x65, 0xe5, 0x0a, 0x38, 0xe1, 0xfb, 0x44, 0x54, - 0xcb, 0xe5, 0xc5, 0x7a, 0x73, 0x63, 0x7d, 0x59, 0x2b, 0x2e, 0x96, 0x0b, 0xa0, 0x28, 0x30, 0x57, - 0x5b, 0xb8, 0xa7, 0x5c, 0x6a, 0x04, 0xae, 0x0c, 0x59, 0xf5, 0x2f, 0x24, 0xc8, 0xe1, 0x93, 0x10, - 0xea, 0xcf, 0x8c, 0x48, 0x73, 0x1c, 0x6e, 0x87, 0x27, 0x98, 0x48, 0x89, 0x07, 0x59, 0xa5, 0xc2, - 0xc4, 0x5c, 0x1d, 0x28, 0xc8, 0x6a, 0x0c, 0xa1, 0xf4, 0x9b, 0xa7, 0xd7, 0x24, 0xeb, 0xdb, 0xd6, - 0xc5, 0x1f, 0xe5, 0x26, 0xe9, 0xd5, 0xff, 0x90, 0x9b, 0x64, 0x1f, 0x16, 0xc6, 0xde, 0x24, 0xfb, - 0xb4, 0xbb, 0x98, 0x66, 0xaa, 0x3e, 0x2b, 0x17, 0x2c, 0xc8, 0x3c, 0x57, 0x3a, 0xd0, 0x82, 0x4c, - 0x11, 0x66, 0x0d, 0xd3, 0x45, 0xb6, 0xa9, 0x77, 0x96, 0x3a, 0xfa, 0x96, 0x1f, 0xf9, 0xa1, 0x77, - 0x16, 0x5e, 0x61, 0xf2, 0x68, 0xfc, 0x1f, 0xca, 0x69, 0x00, 0x17, 0xed, 0x74, 0x3b, 0xba, 0x1b, - 0xaa, 0x1e, 0x93, 0xc2, 0x6a, 0x5f, 0x96, 0xd7, 0xbe, 0x5b, 0xe0, 0x32, 0x02, 0x5a, 0xe3, 0x52, - 0x17, 0x6d, 0x98, 0xc6, 0x33, 0x76, 0x71, 0xec, 0x2f, 0xa2, 0xa3, 0xfd, 0x3e, 0x71, 0xcb, 0x12, - 0xf9, 0x9e, 0x65, 0x89, 0x7f, 0x14, 0x3e, 0x53, 0xec, 0xb7, 0xfa, 0x01, 0x67, 0x8a, 0x83, 0x96, - 0x26, 0xf7, 0xb4, 0xb4, 0xc0, 0x58, 0xc8, 0x0a, 0x18, 0x0b, 0x2c, 0x2a, 0x39, 0x41, 0x43, 0xfb, - 0xf5, 0x42, 0x87, 0x96, 0xe3, 0xaa, 0x31, 0x86, 0x89, 0x9c, 0x0c, 0x73, 0xa4, 0xe8, 0x05, 0xcb, - 0xba, 0xb0, 0xa3, 0xdb, 0x17, 0x54, 0xfb, 0x40, 0xaa, 0x18, 0xbb, 0x26, 0x12, 0xb9, 0xd0, 0xf7, - 0x69, 0x49, 0xd4, 0xa9, 0x98, 0x13, 0x97, 0xcf, 0xf3, 0x78, 0x16, 0x45, 0xc4, 0x7c, 0x94, 0x45, - 0x18, 0x4c, 0x1f, 0xd7, 0x3f, 0x0a, 0x70, 0xf5, 0x3b, 0x7a, 0x76, 0x3e, 0x39, 0x4a, 0x5c, 0xd5, - 0xaf, 0x0c, 0x87, 0x9d, 0xcf, 0xd7, 0x10, 0xd8, 0x15, 0x40, 0xbe, 0x10, 0x6c, 0x61, 0x79, 0x8f, - 0x6c, 0x85, 0xb2, 0xe9, 0xa1, 0x19, 0xc1, 0xf2, 0x58, 0xd0, 0x3c, 0xce, 0xb3, 0x50, 0xeb, 0xa6, - 0x8a, 0xe9, 0x97, 0x84, 0xd7, 0x69, 0xfa, 0x0a, 0x88, 0x70, 0x37, 0x9e, 0x56, 0x29, 0xb6, 0xc8, - 0x23, 0xce, 0x66, 0xfa, 0x68, 0xbe, 0x30, 0x07, 0x53, 0xfe, 0xa9, 0x6f, 0x7c, 0x29, 0x41, 0x80, - 0xe1, 0x49, 0xc8, 0x3b, 0xd6, 0xae, 0xdd, 0x42, 0x74, 0xe5, 0x8c, 0xbe, 0x0d, 0xb1, 0xca, 0x33, - 0x70, 0x3c, 0xdf, 0x67, 0x32, 0x64, 0x13, 0x9b, 0x0c, 0xd1, 0x06, 0x69, 0xdc, 0x00, 0xff, 0x22, - 0xe1, 0x48, 0xb2, 0x1c, 0x66, 0x75, 0xe4, 0x3e, 0x12, 0xc7, 0xf8, 0xdf, 0x17, 0x5a, 0x43, 0x18, - 0x50, 0x93, 0x64, 0x2a, 0x57, 0x1b, 0xc2, 0x50, 0xbd, 0x12, 0x2e, 0xf7, 0x73, 0x50, 0x0b, 0x15, - 0x5b, 0xa4, 0x1b, 0xda, 0x6a, 0x41, 0x56, 0x9f, 0x9d, 0x85, 0x02, 0x61, 0xad, 0x16, 0x18, 0x6b, - 0xea, 0xcb, 0x33, 0x87, 0x6d, 0x91, 0x46, 0x4f, 0x31, 0x3f, 0x2b, 0x89, 0x46, 0xab, 0xe3, 0x04, - 0x1f, 0xd6, 0x2e, 0x42, 0x93, 0x86, 0x68, 0x66, 0x31, 0xca, 0xa7, 0xfe, 0x66, 0x46, 0x24, 0xf8, - 0x9d, 0x18, 0x8b, 0xe9, 0xf7, 0x4a, 0x5f, 0xc8, 0xfa, 0xc1, 0x3b, 0x96, 0x6c, 0x6b, 0x67, 0xc3, - 0xee, 0xa8, 0xff, 0xa7, 0x50, 0x6c, 0xd1, 0x08, 0xf3, 0x5f, 0x8a, 0x36, 0xff, 0x0b, 0x20, 0xef, - 0xda, 0x1d, 0x7f, 0xf8, 0xde, 0xb5, 0x3b, 0x43, 0x0c, 0xdf, 0xca, 0xf5, 0x30, 0xa7, 0xb7, 0xdb, - 0xeb, 0xfa, 0x16, 0x2a, 0x79, 0xf3, 0x6a, 0xd3, 0xa5, 0x07, 0xfb, 0x7b, 0x52, 0x63, 0xbb, 0xa2, - 0xaf, 0x0b, 0xef, 0xc4, 0x71, 0x20, 0x51, 0xf9, 0x8c, 0x65, 0x78, 0xf3, 0x86, 0x84, 0xd6, 0xb6, - 0x1e, 0x86, 0x19, 0xa1, 0x6f, 0x82, 0x3b, 0x74, 0x02, 0x7c, 0xa7, 0xaf, 0x59, 0xbf, 0x2b, 0xc1, - 0x84, 0x27, 0xef, 0x62, 0xbb, 0xad, 0x3e, 0x9a, 0x8b, 0xc6, 0x13, 0xb9, 0x47, 0xfa, 0x7c, 0xe1, - 0xcd, 0x69, 0xbf, 0x86, 0x84, 0x7e, 0x04, 0x26, 0xa1, 0x10, 0x25, 0x4e, 0x88, 0x62, 0x7b, 0xd0, - 0xb1, 0x45, 0xa4, 0x2f, 0xbe, 0x4f, 0x49, 0x30, 0xeb, 0xcf, 0x23, 0x96, 0x90, 0xdb, 0xda, 0x56, - 0x6f, 0x13, 0x5d, 0x68, 0xa2, 0x2d, 0x4d, 0x0a, 0x5a, 0x9a, 0xfa, 0xfd, 0x4c, 0x42, 0x95, 0xe7, - 0x4a, 0x8e, 0x58, 0xa5, 0x4b, 0xa4, 0x8b, 0x71, 0x04, 0xd3, 0x17, 0xe6, 0x97, 0x25, 0x80, 0x86, - 0x15, 0xcc, 0x75, 0x0f, 0x20, 0xc9, 0x97, 0x08, 0x5f, 0xf4, 0x41, 0x2b, 0x1e, 0x16, 0x9b, 0xbc, - 0xe7, 0x10, 0xdc, 0x62, 0x1b, 0x54, 0xd2, 0x58, 0xda, 0xfa, 0xd4, 0xe2, 0x6e, 0xb7, 0x63, 0xb4, - 0x74, 0xb7, 0x77, 0x5f, 0x38, 0x5a, 0xbc, 0xf8, 0xc6, 0xae, 0x44, 0x46, 0x61, 0x50, 0x46, 0x84, - 0x2c, 0xc9, 0x61, 0x5c, 0xc9, 0x3f, 0x8c, 0x2b, 0xb8, 0xd7, 0x33, 0x80, 0xf8, 0x18, 0xd4, 0x53, - 0x86, 0xa3, 0xb5, 0x2e, 0x32, 0x17, 0x6c, 0xa4, 0xb7, 0x5b, 0xf6, 0xee, 0xce, 0x79, 0x87, 0x75, - 0x6a, 0x88, 0xd7, 0x51, 0x66, 0xe9, 0x58, 0xe2, 0x96, 0x8e, 0xd5, 0xe7, 0xc8, 0xa2, 0x31, 0x0b, - 0x98, 0x0d, 0x0e, 0x86, 0x87, 0x21, 0x86, 0xba, 0x44, 0x5b, 0x71, 0x3d, 0xab, 0xc4, 0xd9, 0x24, - 0xab, 0xc4, 0x6f, 0x11, 0x8a, 0x80, 0x20, 0x54, 0xaf, 0xb1, 0xec, 0xa8, 0xce, 0xd5, 0x91, 0x1b, - 0x01, 0xef, 0x75, 0x30, 0x7b, 0x3e, 0xfc, 0x12, 0x40, 0xcc, 0x27, 0xf6, 0xf1, 0x73, 0x78, 0x6b, - 0xd2, 0x15, 0x18, 0x9e, 0x85, 0x08, 0x74, 0x03, 0x04, 0x25, 0x91, 0xcd, 0xd4, 0x44, 0xcb, 0x29, - 0xb1, 0xe5, 0xa7, 0x8f, 0xc2, 0xc7, 0x24, 0x98, 0xc6, 0xf7, 0x90, 0x2d, 0x5c, 0xc2, 0xde, 0xf9, - 0x82, 0x46, 0xc9, 0x0b, 0x59, 0x31, 0x2b, 0x90, 0xed, 0x18, 0xe6, 0x05, 0x7f, 0x17, 0xdc, 0x7b, - 0x0e, 0x6f, 0xb5, 0x91, 0xfa, 0xdc, 0x6a, 0x13, 0xec, 0x53, 0x04, 0xe5, 0x1e, 0xe8, 0x9a, 0xc5, - 0x81, 0xe4, 0xd2, 0x17, 0xe3, 0xdf, 0x67, 0x21, 0x5f, 0x47, 0xba, 0xdd, 0xda, 0x56, 0xdf, 0x27, - 0xf5, 0x9d, 0x2a, 0x4c, 0xf2, 0x53, 0x85, 0x25, 0x98, 0xd8, 0x34, 0x3a, 0x2e, 0xb2, 0x89, 0x67, - 0x10, 0xdb, 0xb5, 0x93, 0x26, 0xbe, 0xd0, 0xb1, 0x5a, 0x17, 0xe6, 0xa9, 0xe9, 0x3e, 0xef, 0x47, - 0x41, 0x9b, 0x5f, 0xc2, 0x3f, 0x69, 0xfe, 0xcf, 0x9e, 0x41, 0xe8, 0x58, 0xb6, 0x1b, 0x15, 0xe0, - 0x3a, 0x82, 0x4a, 0xdd, 0xb2, 0x5d, 0x8d, 0xfc, 0xe8, 0xc1, 0xbc, 0xb9, 0xdb, 0xe9, 0x34, 0xd0, - 0x03, 0xae, 0x3f, 0x6d, 0xf3, 0xdf, 0x3d, 0x63, 0xd1, 0xda, 0xdc, 0x74, 0x10, 0x59, 0x34, 0xc8, - 0x69, 0xf4, 0x4d, 0x39, 0x0e, 0xb9, 0x8e, 0xb1, 0x63, 0x90, 0x89, 0x46, 0x4e, 0x23, 0x2f, 0xca, - 0x8d, 0x50, 0x08, 0xe7, 0x38, 0x84, 0xd1, 0x53, 0x79, 0xdc, 0x34, 0xf7, 0xa5, 0x7b, 0x3a, 0x73, - 0x01, 0x5d, 0x72, 0x4e, 0x4d, 0xe0, 0xef, 0xf8, 0x99, 0x77, 0xc3, 0x14, 0xd9, 0xef, 0x20, 0x12, - 0x8f, 0x9e, 0xc1, 0xda, 0xa8, 0x65, 0xd9, 0x6d, 0x5f, 0x36, 0xd1, 0x13, 0x0c, 0x9a, 0x2f, 0xd9, - 0x2e, 0x45, 0xdf, 0xc2, 0xc7, 0xe0, 0x02, 0x91, 0xf7, 0xba, 0x4d, 0xaf, 0xe8, 0x73, 0x86, 0xbb, - 0xbd, 0x86, 0x5c, 0x5d, 0xfd, 0x7b, 0xb9, 0xaf, 0xc6, 0x4d, 0xff, 0x2f, 0x8d, 0x1b, 0xa0, 0x71, - 0x24, 0x4c, 0x80, 0xbb, 0x6b, 0x9b, 0x9e, 0x1c, 0x69, 0x44, 0x39, 0x26, 0x45, 0xb9, 0x03, 0xae, - 0x08, 0xdf, 0xfc, 0xa5, 0xd2, 0x45, 0x3a, 0x6d, 0x9d, 0xc2, 0xd9, 0xa3, 0x33, 0x28, 0xeb, 0x70, - 0x2d, 0xf9, 0xb8, 0xd2, 0x58, 0x5b, 0x5d, 0x31, 0xb6, 0xb6, 0x3b, 0xc6, 0xd6, 0xb6, 0xeb, 0x54, - 0x4c, 0xc7, 0x45, 0x7a, 0xbb, 0xb6, 0xa9, 0x91, 0xd0, 0xf4, 0x80, 0xe9, 0x88, 0x64, 0xe5, 0x3d, - 0x87, 0xc4, 0x46, 0x37, 0x56, 0x53, 0x22, 0x5a, 0xca, 0x93, 0xbc, 0x96, 0xe2, 0xec, 0x76, 0x02, - 0x4c, 0xaf, 0xea, 0xc1, 0x34, 0x54, 0xf5, 0xdd, 0x0e, 0x6e, 0x2e, 0x38, 0x73, 0xd2, 0x71, 0x2e, - 0x86, 0x93, 0xf4, 0x9b, 0xcd, 0xff, 0x97, 0x87, 0xdc, 0xb2, 0xad, 0x77, 0xb7, 0xd5, 0x67, 0x33, - 0xfd, 0xf3, 0xa8, 0xda, 0x44, 0xa0, 0x9d, 0xd2, 0x20, 0xed, 0x94, 0x07, 0x68, 0x67, 0x96, 0xd1, - 0xce, 0xe8, 0x45, 0xe5, 0x33, 0x30, 0xd3, 0xb2, 0x3a, 0x1d, 0xd4, 0xf2, 0xe4, 0x51, 0x69, 0xe3, - 0xd5, 0x9c, 0x29, 0x8d, 0x4b, 0xc3, 0x91, 0x22, 0x91, 0x5b, 0x27, 0x6b, 0xe8, 0x44, 0xe9, 0xc3, - 0x04, 0xf5, 0xe5, 0x12, 0x64, 0xcb, 0xed, 0x2d, 0xc4, 0xad, 0xb3, 0x67, 0x98, 0x75, 0xf6, 0x93, - 0x90, 0x77, 0x75, 0x7b, 0x0b, 0xb9, 0xfe, 0x3a, 0x01, 0x79, 0x0b, 0x02, 0x58, 0xca, 0x4c, 0x00, - 0xcb, 0x9f, 0x84, 0xac, 0x27, 0x33, 0x1a, 0x81, 0xe7, 0xda, 0x7e, 0xf0, 0x63, 0xd9, 0xcf, 0x7b, - 0x25, 0xce, 0x7b, 0xb5, 0xd6, 0xf0, 0x0f, 0xbd, 0x58, 0xe7, 0xf6, 0x61, 0x8d, 0x6f, 0xd9, 0x6a, - 0x59, 0x66, 0x65, 0x47, 0xdf, 0x42, 0xb4, 0x9a, 0x61, 0x82, 0xff, 0xb5, 0xbc, 0x63, 0xdd, 0x6f, - 0xd0, 0x58, 0x92, 0x61, 0x82, 0x57, 0x85, 0x6d, 0xa3, 0xdd, 0x46, 0x26, 0x6d, 0xd9, 0xf4, 0xed, - 0xcc, 0x69, 0xc8, 0x7a, 0x3c, 0x78, 0xfa, 0xe3, 0x19, 0x0b, 0x85, 0x23, 0xca, 0x8c, 0xd7, 0xac, - 0x48, 0xe3, 0x2d, 0x64, 0xf8, 0x35, 0x55, 0x11, 0xb7, 0x1d, 0x52, 0xb9, 0xfe, 0x8d, 0xeb, 0x71, - 0x90, 0x33, 0xad, 0x36, 0x1a, 0x38, 0x08, 0x91, 0x5c, 0xca, 0x13, 0x21, 0x87, 0xda, 0x5e, 0xaf, - 0x20, 0xe3, 0xec, 0xa7, 0xe3, 0x65, 0xa9, 0x91, 0xcc, 0xc9, 0x7c, 0x83, 0xfa, 0x71, 0x3b, 0x86, - 0xe8, 0xaf, 0x13, 0x70, 0x94, 0xf4, 0x01, 0xf5, 0xdd, 0xf3, 0x1e, 0xa9, 0xf3, 0x48, 0x7d, 0xb8, - 0xff, 0xc0, 0x75, 0x94, 0x57, 0xf6, 0xe3, 0x90, 0x73, 0x76, 0xcf, 0x07, 0x46, 0x28, 0x79, 0x61, - 0x9b, 0xae, 0x34, 0x92, 0xe1, 0x4c, 0x1e, 0x76, 0x38, 0xe3, 0x86, 0x26, 0xd9, 0x6f, 0xfc, 0xe1, - 0x40, 0x96, 0xc7, 0xc9, 0xfe, 0x40, 0xd6, 0x6f, 0x18, 0x3a, 0x05, 0x13, 0xfa, 0xa6, 0x8b, 0xec, - 0xd0, 0x4c, 0xa4, 0xaf, 0xde, 0x50, 0x79, 0x1e, 0x6d, 0x5a, 0xb6, 0x27, 0x96, 0x29, 0x32, 0x54, - 0xfa, 0xef, 0x4c, 0xcb, 0x05, 0x6e, 0x87, 0xec, 0x26, 0x38, 0x66, 0x5a, 0x8b, 0xa8, 0x4b, 0xe5, - 0x4c, 0x50, 0x9c, 0xc5, 0x2d, 0x60, 0xff, 0x87, 0x7d, 0x5d, 0xc9, 0xdc, 0xfe, 0xae, 0x44, 0xfd, - 0x4c, 0xd2, 0x39, 0x73, 0x0f, 0xd0, 0x23, 0xb3, 0xd0, 0x94, 0xa7, 0xc0, 0x4c, 0x9b, 0xba, 0x68, - 0xb5, 0x8c, 0xa0, 0x95, 0x44, 0xfe, 0xc7, 0x65, 0x0e, 0x15, 0x29, 0xcb, 0x2a, 0xd2, 0x32, 0x4c, - 0xe2, 0x03, 0x39, 0x9e, 0x26, 0xe5, 0x7a, 0x02, 0xe1, 0xe1, 0x69, 0x5d, 0x50, 0x29, 0x46, 0x6c, - 0xf3, 0x25, 0xfa, 0x8b, 0x16, 0xfc, 0x9c, 0x6c, 0xf6, 0x1d, 0x2f, 0xa1, 0xf4, 0x9b, 0xe3, 0x6f, - 0xe5, 0xe1, 0x8a, 0x92, 0x6d, 0x39, 0x0e, 0x8e, 0x42, 0xd1, 0xdb, 0x30, 0xdf, 0x24, 0x71, 0xa1, - 0xac, 0x1f, 0xd1, 0xcd, 0xaf, 0x5f, 0x83, 0x1a, 0x5f, 0xd3, 0xf8, 0xba, 0xf0, 0x51, 0xe6, 0x60, - 0xff, 0x21, 0x42, 0xe8, 0x3f, 0x1a, 0x8d, 0xe4, 0xdd, 0x19, 0x91, 0xd3, 0xd5, 0x09, 0x65, 0x95, - 0x7e, 0x73, 0xf9, 0x92, 0x04, 0x57, 0xf6, 0x72, 0xb3, 0x61, 0x3a, 0x41, 0x83, 0xb9, 0x7a, 0x40, - 0x7b, 0xe1, 0x4f, 0xe3, 0xc6, 0x5e, 0x22, 0x15, 0x51, 0x77, 0xa6, 0xb4, 0x88, 0xc5, 0x92, 0xf7, - 0x66, 0x44, 0x2e, 0x91, 0x4a, 0x4c, 0x3e, 0x7d, 0xe1, 0x7e, 0x36, 0x0b, 0x47, 0x97, 0x6d, 0x6b, - 0xb7, 0xeb, 0x84, 0x3d, 0xd0, 0xdf, 0xf4, 0xdf, 0x70, 0xcd, 0x8b, 0x98, 0x06, 0xd7, 0xc0, 0xb4, - 0x4d, 0xad, 0xb9, 0x70, 0xfb, 0x95, 0x4d, 0x62, 0x7b, 0x2f, 0xf9, 0x20, 0xbd, 0x57, 0xd8, 0xcf, - 0x64, 0xb9, 0x7e, 0xa6, 0xb7, 0xe7, 0xc8, 0xf5, 0xe9, 0x39, 0xfe, 0x5a, 0x4a, 0x38, 0xa8, 0xf6, - 0x88, 0x28, 0xa2, 0xbf, 0x28, 0x41, 0x7e, 0x0b, 0x67, 0xa4, 0xdd, 0xc5, 0x63, 0xc5, 0x6a, 0x86, - 0x89, 0x6b, 0xf4, 0xd7, 0x50, 0xae, 0x32, 0xab, 0xc3, 0x89, 0x06, 0xb8, 0x78, 0x6e, 0xd3, 0x57, - 0xaa, 0x87, 0xb2, 0x30, 0x13, 0x94, 0x5e, 0x69, 0x3b, 0xea, 0x0b, 0xfb, 0x6b, 0xd4, 0xac, 0x88, - 0x46, 0xed, 0x5b, 0x67, 0x0e, 0x46, 0x1d, 0x99, 0x19, 0x75, 0xfa, 0x8e, 0x2e, 0x33, 0x11, 0xa3, - 0x8b, 0xfa, 0x2c, 0x59, 0xf4, 0x32, 0x08, 0xbe, 0x6b, 0xc5, 0xb5, 0x79, 0x24, 0x0f, 0x16, 0x82, - 0x57, 0x52, 0x0c, 0xae, 0x55, 0xfa, 0x4a, 0xf2, 0x41, 0x09, 0x8e, 0xed, 0xef, 0xcc, 0x7f, 0x8c, - 0xf7, 0x42, 0xf3, 0xea, 0xe4, 0x04, 0x5e, 0x68, 0xf8, 0x8d, 0xdf, 0xa4, 0x8b, 0x3d, 0x1a, 0xcb, - 0xd9, 0x7b, 0x83, 0x3b, 0x71, 0xb1, 0xc3, 0xaf, 0x82, 0x44, 0xd3, 0x17, 0xe0, 0xaf, 0xca, 0x30, - 0x55, 0x47, 0xee, 0xaa, 0x7e, 0xc9, 0xda, 0x75, 0x55, 0x5d, 0x74, 0x7b, 0xee, 0xc9, 0x90, 0xef, - 0xe0, 0x5f, 0xe8, 0x1d, 0xbb, 0xd7, 0xf4, 0xdd, 0xdf, 0xc2, 0xbe, 0x3f, 0x84, 0xb4, 0x46, 0xf3, - 0xf3, 0x67, 0x92, 0x45, 0x76, 0x47, 0x03, 0xee, 0x46, 0xb2, 0xb5, 0x93, 0x68, 0xef, 0x34, 0xaa, - 0xe8, 0xf4, 0x61, 0x79, 0x8e, 0x0c, 0xb3, 0x75, 0xe4, 0x56, 0x9c, 0x25, 0x7d, 0xcf, 0xb2, 0x0d, - 0x17, 0xb1, 0x97, 0x6c, 0xc5, 0x43, 0x73, 0x1a, 0xc0, 0x08, 0x7e, 0xa3, 0x91, 0x12, 0x98, 0x14, - 0xf5, 0x37, 0x93, 0x3a, 0x0a, 0x71, 0x7c, 0x8c, 0x04, 0x84, 0x44, 0x3e, 0x16, 0x71, 0xc5, 0xa7, - 0x0f, 0xc4, 0x17, 0x25, 0x0a, 0x44, 0xd1, 0x6e, 0x6d, 0x1b, 0x7b, 0xa8, 0x9d, 0x10, 0x08, 0xff, - 0xb7, 0x10, 0x88, 0x80, 0x50, 0x62, 0xf7, 0x15, 0x8e, 0x8f, 0x51, 0xb8, 0xaf, 0xc4, 0x11, 0x1c, - 0x4b, 0xb0, 0x03, 0xaf, 0xeb, 0xa1, 0xeb, 0x99, 0x77, 0x89, 0x8a, 0x35, 0x34, 0xd9, 0x24, 0xd6, - 0x64, 0x1b, 0xaa, 0x63, 0x21, 0x65, 0x0f, 0xd2, 0xe9, 0x6c, 0x1a, 0x1d, 0x4b, 0xdf, 0xa2, 0xd3, - 0x17, 0xfa, 0x7b, 0x65, 0x38, 0x11, 0x9c, 0x02, 0xae, 0x23, 0x77, 0x51, 0x77, 0xb6, 0xcf, 0x5b, - 0xba, 0xdd, 0x66, 0xef, 0x5e, 0x1e, 0xfa, 0xc4, 0x9f, 0xfa, 0x05, 0x16, 0x84, 0x2a, 0x0f, 0x42, - 0x5f, 0x57, 0xd1, 0xbe, 0xbc, 0x8c, 0xa2, 0x93, 0x89, 0xf5, 0x66, 0xfd, 0xed, 0x00, 0xac, 0xa7, - 0x71, 0x60, 0xdd, 0x39, 0x2c, 0x8b, 0xe9, 0x03, 0xf7, 0x32, 0x32, 0x22, 0x30, 0x5e, 0xcd, 0xf7, - 0x89, 0x02, 0x16, 0xe1, 0xd5, 0x2a, 0x47, 0x7a, 0xb5, 0x0e, 0x35, 0x46, 0x0c, 0xf4, 0x48, 0x4e, - 0x77, 0x8c, 0x38, 0x44, 0x6f, 0xe3, 0x77, 0xca, 0x50, 0xc0, 0x61, 0x20, 0x18, 0x8f, 0x6f, 0xf5, - 0x7e, 0x51, 0x74, 0xf6, 0x79, 0x97, 0x4f, 0x24, 0xf5, 0x2e, 0x57, 0xdf, 0x91, 0xd4, 0x87, 0xbc, - 0x97, 0xdb, 0x91, 0x20, 0x96, 0xc8, 0x45, 0x7c, 0x00, 0x07, 0xe9, 0x83, 0xf6, 0x4b, 0x32, 0x80, - 0xd7, 0xa0, 0xe9, 0xd9, 0x87, 0xa7, 0x8b, 0xc2, 0x75, 0x33, 0xeb, 0x57, 0xef, 0x01, 0x75, 0xa2, - 0x07, 0x28, 0x42, 0x31, 0x3c, 0x55, 0xf1, 0x70, 0x52, 0xdf, 0xca, 0x90, 0xab, 0x91, 0xc0, 0x92, - 0xc8, 0xdb, 0x32, 0xb2, 0xec, 0xf4, 0x01, 0xf9, 0xef, 0x12, 0xe4, 0x1a, 0x56, 0x1d, 0xb9, 0x07, - 0x37, 0x05, 0x12, 0x1f, 0xdb, 0xc7, 0xe5, 0x8e, 0xe2, 0xd8, 0x7e, 0x3f, 0x42, 0xe9, 0x8b, 0xee, - 0x3d, 0x12, 0xcc, 0x34, 0xac, 0x52, 0xb0, 0x38, 0x25, 0xee, 0xab, 0x2a, 0x7e, 0xa1, 0x65, 0x50, - 0xc1, 0xb0, 0x98, 0x03, 0x5d, 0x68, 0x39, 0x98, 0x5e, 0xfa, 0x72, 0xbb, 0x0d, 0x8e, 0x6e, 0x98, - 0x6d, 0x4b, 0x43, 0x6d, 0x8b, 0xae, 0x74, 0x2b, 0x0a, 0x64, 0x77, 0xcd, 0xb6, 0x85, 0x59, 0xce, - 0x69, 0xf8, 0xd9, 0x4b, 0xb3, 0x51, 0xdb, 0xa2, 0xbe, 0x01, 0xf8, 0x59, 0xfd, 0xba, 0x0c, 0x59, - 0xef, 0x5f, 0x71, 0x51, 0xbf, 0x53, 0x4e, 0x18, 0x88, 0xc0, 0x23, 0x3f, 0x12, 0x4b, 0xe8, 0x2e, - 0x66, 0xed, 0x9f, 0x78, 0xb0, 0x5e, 0x1b, 0x55, 0x1e, 0x23, 0x8a, 0x70, 0xcd, 0x5f, 0x39, 0x05, - 0x13, 0xe7, 0x3b, 0x56, 0xeb, 0x42, 0x78, 0x5e, 0x9e, 0xbe, 0x2a, 0x37, 0x42, 0xce, 0xd6, 0xcd, - 0x2d, 0x44, 0xf7, 0x14, 0x8e, 0xf7, 0xf4, 0x85, 0xd8, 0xeb, 0x45, 0x23, 0x59, 0xd4, 0x77, 0x24, - 0x09, 0x81, 0xd0, 0xa7, 0xf2, 0xc9, 0xf4, 0x61, 0x71, 0x88, 0x93, 0x65, 0x05, 0x98, 0x29, 0x15, - 0xc9, 0xd5, 0xb1, 0x6b, 0xb5, 0xb3, 0xe5, 0x82, 0x8c, 0x61, 0xf6, 0x64, 0x92, 0x22, 0xcc, 0x1e, - 0xf9, 0x1f, 0x59, 0x98, 0xfb, 0x54, 0xfe, 0x30, 0x60, 0xfe, 0x94, 0x04, 0xb3, 0xab, 0x86, 0xe3, - 0x46, 0x79, 0xfb, 0xc7, 0x44, 0x81, 0x7b, 0x51, 0x52, 0x53, 0x99, 0x2b, 0x47, 0x38, 0xfc, 0x5b, - 0x22, 0x73, 0x38, 0xae, 0x88, 0xf1, 0x1c, 0x4b, 0xc1, 0x1c, 0x90, 0xeb, 0x1e, 0x85, 0x25, 0x99, - 0xd8, 0x50, 0x0a, 0x0b, 0x19, 0xbf, 0xa1, 0x14, 0x59, 0x76, 0xfa, 0xf2, 0xfd, 0xba, 0x04, 0xc7, - 0xbc, 0xe2, 0xe3, 0x96, 0xa5, 0xa2, 0xc5, 0x3c, 0x70, 0x59, 0x2a, 0xf1, 0xca, 0xf8, 0x3e, 0x5e, - 0x46, 0xb1, 0x32, 0x3e, 0x88, 0xe8, 0x98, 0xc5, 0x1c, 0xb1, 0x0c, 0x3b, 0x48, 0xcc, 0x31, 0xcb, - 0xb0, 0xc3, 0x8b, 0x39, 0x7e, 0x29, 0x76, 0x48, 0x31, 0x1f, 0xda, 0x02, 0xeb, 0x6f, 0xc8, 0x81, - 0x98, 0x23, 0xd7, 0x36, 0x62, 0xc4, 0x9c, 0xf8, 0xc4, 0xae, 0xfa, 0xae, 0x21, 0x05, 0x3f, 0xe2, - 0xf5, 0x8d, 0x61, 0x60, 0x3a, 0xc4, 0x35, 0x8e, 0x57, 0xc8, 0x30, 0x47, 0xb9, 0xe8, 0x3f, 0x65, - 0x8e, 0xc1, 0x28, 0xf1, 0x94, 0x39, 0xf1, 0x19, 0x20, 0x9e, 0xb3, 0xf1, 0x9f, 0x01, 0x8a, 0x2d, - 0x3f, 0x7d, 0x70, 0xbe, 0x91, 0x85, 0x93, 0x1e, 0x0b, 0x6b, 0x56, 0xdb, 0xd8, 0xbc, 0x44, 0xb8, - 0x38, 0xab, 0x77, 0x76, 0x91, 0xa3, 0xbe, 0x5f, 0x12, 0x45, 0xe9, 0x3f, 0x01, 0x58, 0x5d, 0x64, - 0x93, 0x40, 0x6a, 0x14, 0xa8, 0x3b, 0xa2, 0x2a, 0xbb, 0xbf, 0xa4, 0x20, 0x28, 0x7a, 0xcd, 0x27, - 0xa2, 0x31, 0xf4, 0x3c, 0xab, 0x70, 0x2a, 0xf8, 0xd2, 0xeb, 0xe0, 0x91, 0xd9, 0xef, 0xe0, 0x71, - 0x03, 0xc8, 0x7a, 0xbb, 0x1d, 0x40, 0xd5, 0xbb, 0x99, 0x8d, 0xcb, 0xd4, 0xbc, 0x2c, 0x5e, 0x4e, - 0x07, 0x85, 0x47, 0xf3, 0x22, 0x72, 0x3a, 0xc8, 0x55, 0xe6, 0x21, 0x4f, 0x6e, 0x10, 0x0c, 0x56, - 0xf4, 0xfb, 0x67, 0xa6, 0xb9, 0x78, 0xd3, 0xae, 0xc6, 0xab, 0xe1, 0x6d, 0x89, 0x24, 0xd3, 0xaf, - 0x9f, 0x0e, 0xed, 0x64, 0x8d, 0x53, 0xb0, 0xa7, 0x0e, 0x4d, 0x79, 0x3c, 0xbb, 0x61, 0xc5, 0x6e, - 0xb7, 0x73, 0xa9, 0x41, 0x83, 0xaf, 0x24, 0xda, 0x0d, 0x63, 0x62, 0xb8, 0x48, 0xbd, 0x31, 0x5c, - 0x92, 0xef, 0x86, 0x71, 0x7c, 0x8c, 0x62, 0x37, 0x2c, 0x8e, 0xe0, 0x18, 0xd6, 0x23, 0x73, 0xc4, - 0x6a, 0xa6, 0x31, 0x6a, 0xdf, 0xdc, 0xff, 0x10, 0x1a, 0xf0, 0xce, 0x2e, 0xfd, 0xc2, 0xd7, 0xc6, - 0xc6, 0xe6, 0x56, 0x9e, 0x08, 0xf9, 0x4d, 0xcb, 0xde, 0xd1, 0xfd, 0x8d, 0xfb, 0xde, 0x93, 0x22, - 0x34, 0x2e, 0xec, 0x12, 0xce, 0xa3, 0xd1, 0xbc, 0xde, 0x7c, 0xe4, 0x99, 0x46, 0x97, 0x46, 0x5d, - 0xf4, 0x1e, 0x95, 0xeb, 0x60, 0x96, 0x06, 0x5f, 0xac, 0x22, 0xc7, 0x45, 0x6d, 0x1a, 0xb1, 0x82, - 0x4f, 0x54, 0xce, 0xc0, 0x0c, 0x4d, 0x58, 0x32, 0x3a, 0xc8, 0xa1, 0x41, 0x2b, 0xb8, 0x34, 0xe5, - 0x24, 0xe4, 0x0d, 0xe7, 0x1e, 0xc7, 0x32, 0xb1, 0xff, 0xff, 0xa4, 0x46, 0xdf, 0x94, 0x1b, 0xe0, - 0x28, 0xcd, 0x17, 0x18, 0xab, 0xe4, 0xc0, 0x4e, 0x6f, 0xb2, 0xfa, 0xb9, 0x61, 0x26, 0x0e, 0x89, - 0xe3, 0xf1, 0x7a, 0x28, 0xec, 0xb6, 0x5a, 0x08, 0xb5, 0xe9, 0xc9, 0x26, 0xff, 0x35, 0x61, 0xa4, - 0xde, 0xc4, 0xd3, 0x8c, 0x43, 0x0a, 0xd5, 0xfb, 0x91, 0x13, 0x90, 0x27, 0xd7, 0x5e, 0xa8, 0x2f, - 0x9d, 0xeb, 0xab, 0x8c, 0x73, 0xbc, 0x32, 0x6e, 0xc0, 0x8c, 0x69, 0x79, 0xc5, 0xad, 0xeb, 0xb6, - 0xbe, 0xe3, 0xc4, 0xad, 0x22, 0x12, 0xba, 0xc1, 0x90, 0x51, 0x65, 0x7e, 0x5b, 0x39, 0xa2, 0x71, - 0x64, 0x94, 0xff, 0x0d, 0x8e, 0x9e, 0xa7, 0x11, 0x00, 0x1c, 0x4a, 0x59, 0x8a, 0xf6, 0xb1, 0xeb, - 0xa1, 0xbc, 0xc0, 0xff, 0xb9, 0x72, 0x44, 0xeb, 0x25, 0xa6, 0xfc, 0x34, 0xcc, 0x79, 0xaf, 0x6d, - 0xeb, 0xa2, 0xcf, 0xb8, 0x1c, 0x6d, 0x68, 0xf4, 0x90, 0x5f, 0xe3, 0x7e, 0x5c, 0x39, 0xa2, 0xf5, - 0x90, 0x52, 0x6a, 0x00, 0xdb, 0xee, 0x4e, 0x87, 0x12, 0xce, 0x46, 0xab, 0x64, 0x0f, 0xe1, 0x95, - 0xe0, 0xa7, 0x95, 0x23, 0x1a, 0x43, 0x42, 0x59, 0x85, 0x29, 0xf7, 0x01, 0x97, 0xd2, 0xcb, 0x45, - 0x6f, 0x6e, 0xf7, 0xd0, 0x6b, 0xf8, 0xff, 0xac, 0x1c, 0xd1, 0x42, 0x02, 0x4a, 0x05, 0x26, 0xbb, - 0xe7, 0x29, 0xb1, 0x7c, 0x9f, 0x3b, 0xe4, 0xfb, 0x13, 0x5b, 0x3f, 0x1f, 0xd0, 0x0a, 0x7e, 0xf7, - 0x18, 0x6b, 0x39, 0x7b, 0x94, 0xd6, 0x84, 0x30, 0x63, 0x25, 0xff, 0x1f, 0x8f, 0xb1, 0x80, 0x80, - 0x52, 0x81, 0x29, 0xc7, 0xd4, 0xbb, 0xce, 0xb6, 0xe5, 0x3a, 0xa7, 0x26, 0x7b, 0xfc, 0x20, 0xa3, - 0xa9, 0xd5, 0xe9, 0x3f, 0x5a, 0xf8, 0xb7, 0xf2, 0x44, 0x38, 0xb1, 0x8b, 0xaf, 0x0f, 0x2d, 0x3f, - 0x60, 0x38, 0xae, 0x61, 0x6e, 0xf9, 0x31, 0x64, 0x49, 0x6f, 0xd2, 0xff, 0xa3, 0x32, 0x4f, 0x4f, - 0x44, 0x01, 0x6e, 0x9b, 0x6a, 0xef, 0x66, 0x1c, 0x29, 0x96, 0x39, 0x08, 0xf5, 0x14, 0xc8, 0x7a, - 0x9f, 0xf0, 0x99, 0xcd, 0xb9, 0xfe, 0x0b, 0x7d, 0xbd, 0xba, 0x83, 0x1b, 0xb0, 0xf7, 0x93, 0x37, - 0x36, 0x9a, 0xd6, 0xba, 0x6d, 0x6d, 0xd9, 0xc8, 0x71, 0xa8, 0xc3, 0x21, 0x93, 0xe2, 0x35, 0x70, - 0xc3, 0x21, 0xf7, 0xc4, 0x87, 0xfe, 0xee, 0x6c, 0x12, 0x99, 0x6d, 0x56, 0xd1, 0x45, 0xec, 0x10, - 0x8c, 0xcf, 0xdf, 0xe0, 0xd9, 0xa6, 0x9f, 0xa2, 0x5e, 0x0f, 0x33, 0x6c, 0x23, 0x23, 0x77, 0x67, - 0x19, 0xa1, 0xed, 0x45, 0xdf, 0xd4, 0xeb, 0x60, 0x8e, 0xd7, 0x69, 0x66, 0x88, 0x91, 0xfd, 0xae, - 0x50, 0xbd, 0x16, 0x8e, 0xf6, 0x34, 0x2c, 0x3f, 0xa6, 0x48, 0x26, 0x8c, 0x29, 0x72, 0x0d, 0x40, - 0xa8, 0xc5, 0x7d, 0xc9, 0x5c, 0x0d, 0x53, 0x81, 0x5e, 0xf6, 0xcd, 0xf0, 0xd5, 0x0c, 0x4c, 0xfa, - 0xca, 0xd6, 0x2f, 0x83, 0x37, 0xbe, 0x98, 0xcc, 0x06, 0x02, 0x9d, 0x66, 0x73, 0x69, 0xde, 0x38, - 0x12, 0xba, 0xed, 0x36, 0x0c, 0xb7, 0xe3, 0x1f, 0x7d, 0xeb, 0x4d, 0x56, 0xd6, 0x01, 0x0c, 0x8c, - 0x51, 0x23, 0x3c, 0x0b, 0x77, 0x4b, 0x82, 0xf6, 0x40, 0xf4, 0x81, 0xa1, 0x71, 0xe6, 0xc7, 0xe8, - 0x41, 0xb5, 0x29, 0xc8, 0xd5, 0xd7, 0x8b, 0xa5, 0x72, 0xe1, 0x88, 0x32, 0x07, 0x50, 0x7e, 0xfa, - 0x7a, 0x59, 0xab, 0x94, 0xab, 0xa5, 0x72, 0x21, 0xa3, 0xbe, 0x52, 0x82, 0xa9, 0xa0, 0x11, 0xf4, - 0xad, 0x64, 0x99, 0xaa, 0xd6, 0xc0, 0xeb, 0x89, 0xf6, 0x37, 0x2a, 0x56, 0xc9, 0x9e, 0x0c, 0x97, - 0xef, 0x3a, 0x68, 0xc9, 0xb0, 0x1d, 0x57, 0xb3, 0x2e, 0x2e, 0x59, 0x76, 0x10, 0x35, 0xd9, 0xbf, - 0xa6, 0x3f, 0xe2, 0xb3, 0x67, 0x51, 0xb4, 0x11, 0x3e, 0x14, 0x85, 0x6c, 0xba, 0x32, 0x1c, 0x26, - 0x78, 0x74, 0x5d, 0x72, 0x2f, 0xbe, 0x83, 0x34, 0xeb, 0xa2, 0x53, 0x34, 0xdb, 0x25, 0xab, 0xb3, - 0xbb, 0x63, 0x3a, 0xd4, 0x26, 0x88, 0xfa, 0xec, 0x49, 0x07, 0x5f, 0x3e, 0x36, 0x07, 0x50, 0xaa, - 0xad, 0xae, 0x96, 0x4b, 0x8d, 0x4a, 0xad, 0x5a, 0x38, 0xe2, 0x49, 0xab, 0x51, 0x5c, 0x58, 0xf5, - 0xa4, 0xf3, 0x33, 0x30, 0xe9, 0xb7, 0x69, 0x1a, 0x06, 0x25, 0xe3, 0x87, 0x41, 0x51, 0x8a, 0x30, - 0xe9, 0xb7, 0x72, 0x3a, 0x22, 0x3c, 0xba, 0xf7, 0xd8, 0xeb, 0x8e, 0x6e, 0xbb, 0xd8, 0x5f, 0xda, - 0x27, 0xb2, 0xa0, 0x3b, 0x48, 0x0b, 0x7e, 0x3b, 0xf3, 0x38, 0xca, 0x81, 0x02, 0x73, 0xc5, 0xd5, - 0xd5, 0x66, 0x4d, 0x6b, 0x56, 0x6b, 0x8d, 0x95, 0x4a, 0x75, 0x99, 0x8c, 0x90, 0x95, 0xe5, 0x6a, - 0x4d, 0x2b, 0x93, 0x01, 0xb2, 0x5e, 0xc8, 0x90, 0xcb, 0xef, 0x16, 0x26, 0x21, 0xdf, 0xc5, 0xd2, - 0x55, 0xbf, 0x24, 0x27, 0x3c, 0xef, 0x1e, 0xe0, 0x14, 0x71, 0x3d, 0x17, 0xe7, 0x73, 0x2e, 0xf5, - 0x39, 0x13, 0x7a, 0x06, 0x66, 0x88, 0x2d, 0xe7, 0xe0, 0xe5, 0x7b, 0x7a, 0xc3, 0x2d, 0x97, 0xa6, - 0x7e, 0x4c, 0x4a, 0x70, 0x08, 0xbe, 0x2f, 0x47, 0xc9, 0x8c, 0x8b, 0x3f, 0x1f, 0xe6, 0xb2, 0x3b, - 0x05, 0xe6, 0x2a, 0xd5, 0x46, 0x59, 0xab, 0x16, 0x57, 0x69, 0x16, 0x59, 0x39, 0x05, 0xc7, 0xab, - 0x35, 0x1a, 0xd3, 0xaf, 0x8e, 0xaf, 0xd5, 0x5e, 0x5b, 0xaf, 0x69, 0x8d, 0x42, 0x4e, 0x39, 0x09, - 0x0a, 0x79, 0xe6, 0x6e, 0xad, 0xcf, 0x2b, 0x8f, 0x81, 0x6b, 0x57, 0x2b, 0x6b, 0x95, 0x46, 0xb3, - 0xb6, 0xd4, 0xd4, 0x6a, 0xe7, 0xea, 0x1e, 0x82, 0x5a, 0x79, 0xb5, 0xe8, 0x29, 0x12, 0x73, 0x09, - 0xde, 0x84, 0x72, 0x19, 0x1c, 0xc5, 0x17, 0x5c, 0xe2, 0x9b, 0xef, 0x49, 0x79, 0x93, 0xca, 0x55, - 0x70, 0xaa, 0x52, 0xad, 0x6f, 0x2c, 0x2d, 0x55, 0x4a, 0x95, 0x72, 0xb5, 0xd1, 0x5c, 0x2f, 0x6b, - 0x6b, 0x95, 0x7a, 0xdd, 0xfb, 0xb7, 0x30, 0x85, 0xaf, 0x18, 0x23, 0x7d, 0xa6, 0xfa, 0x3e, 0x19, - 0x66, 0xcf, 0xea, 0x1d, 0xc3, 0x1b, 0x28, 0xf0, 0xdd, 0x83, 0x3d, 0xc7, 0x45, 0x5c, 0x7c, 0x47, - 0x21, 0x75, 0x38, 0xc7, 0x2f, 0xea, 0xcf, 0xcb, 0x09, 0x8f, 0x8b, 0x50, 0x20, 0x48, 0x89, 0xf3, - 0x5c, 0x69, 0x11, 0x93, 0x9b, 0xd7, 0x4b, 0x09, 0x8e, 0x8b, 0x88, 0x93, 0x4f, 0x06, 0xfe, 0xab, - 0x46, 0x05, 0x7e, 0x01, 0x66, 0x36, 0xaa, 0xc5, 0x8d, 0xc6, 0x4a, 0x4d, 0xab, 0xfc, 0x14, 0x8e, - 0x36, 0x3e, 0x0b, 0x53, 0x4b, 0x35, 0x6d, 0xa1, 0xb2, 0xb8, 0x58, 0xae, 0x16, 0x72, 0xca, 0xe5, - 0x70, 0x59, 0xbd, 0xac, 0x9d, 0xad, 0x94, 0xca, 0xcd, 0x8d, 0x6a, 0xf1, 0x6c, 0xb1, 0xb2, 0x8a, - 0xfb, 0x88, 0x7c, 0xcc, 0xbd, 0x89, 0x13, 0xea, 0xcf, 0x66, 0x01, 0x48, 0xd5, 0x3d, 0x4b, 0x9a, - 0xbd, 0x5d, 0xef, 0x2f, 0x92, 0x4e, 0x1a, 0x42, 0x32, 0x11, 0xed, 0xb7, 0x02, 0x93, 0x36, 0xfd, - 0x40, 0x97, 0x4f, 0x06, 0xd1, 0x21, 0x8f, 0x3e, 0x35, 0x2d, 0xf8, 0x5d, 0x7d, 0x7f, 0x92, 0x39, - 0x42, 0x24, 0x63, 0xc9, 0x90, 0x5c, 0x1a, 0x0d, 0x90, 0xea, 0x0b, 0x33, 0x30, 0xc7, 0x57, 0xcc, - 0xab, 0x04, 0x36, 0xa6, 0xc4, 0x2a, 0xc1, 0xff, 0xcc, 0x18, 0x59, 0x67, 0x9e, 0x40, 0x87, 0x53, - 0xf0, 0x5b, 0x26, 0x39, 0xf9, 0xed, 0x5b, 0x2c, 0x85, 0x8c, 0xc7, 0xbc, 0x67, 0x74, 0x90, 0xab, - 0xd5, 0x1b, 0x0f, 0xb8, 0x05, 0x59, 0xfd, 0xaa, 0x0c, 0xb3, 0xdc, 0xf5, 0x7d, 0xea, 0xeb, 0x33, - 0x22, 0x57, 0x6b, 0x31, 0x17, 0x03, 0x66, 0x0e, 0x7a, 0x31, 0xe0, 0x99, 0x9b, 0x61, 0x82, 0xa6, - 0x61, 0xf9, 0xd6, 0xaa, 0x9e, 0x29, 0x70, 0x14, 0xa6, 0x97, 0xcb, 0x8d, 0x66, 0xbd, 0x51, 0xd4, - 0x1a, 0xe5, 0xc5, 0x42, 0xc6, 0x1b, 0xf8, 0xca, 0x6b, 0xeb, 0x8d, 0xfb, 0x0a, 0x52, 0x72, 0x0f, - 0xbc, 0x5e, 0x46, 0xc6, 0xec, 0x81, 0x17, 0x57, 0x7c, 0xfa, 0x73, 0xd5, 0xcf, 0xc8, 0x50, 0x20, - 0x1c, 0x94, 0x1f, 0xe8, 0x22, 0xdb, 0x40, 0x66, 0x0b, 0xa9, 0x17, 0x44, 0x22, 0x7e, 0xee, 0x8b, - 0x85, 0x87, 0xfb, 0x73, 0xc6, 0x4a, 0x24, 0x2f, 0x3d, 0x06, 0x76, 0x76, 0x9f, 0x81, 0xfd, 0xe9, - 0xa4, 0x2e, 0x78, 0xbd, 0xec, 0x8e, 0x04, 0xb2, 0x4f, 0x26, 0x71, 0xc1, 0x1b, 0xc0, 0xc1, 0x58, - 0x02, 0xf9, 0x46, 0x8c, 0xbf, 0x05, 0x59, 0x7d, 0x81, 0x0c, 0x47, 0x17, 0x75, 0x17, 0x2d, 0x5c, - 0x6a, 0x18, 0x3b, 0xc8, 0x71, 0xf5, 0x9d, 0x6e, 0xc4, 0x95, 0x78, 0x99, 0x7d, 0x57, 0xe2, 0xb9, - 0xfe, 0x1f, 0x98, 0x53, 0x59, 0x0b, 0x13, 0xd4, 0x77, 0x27, 0x3d, 0xb4, 0xd7, 0xc3, 0xc3, 0xc8, - 0xa2, 0xed, 0x26, 0x3b, 0x8c, 0x17, 0xcf, 0xc5, 0x18, 0x6e, 0xa8, 0x9d, 0x82, 0x02, 0x61, 0x85, - 0xf1, 0x32, 0xfb, 0x55, 0x7a, 0x8b, 0x64, 0x33, 0x41, 0x50, 0x3f, 0x3f, 0x4c, 0x82, 0xc4, 0x87, - 0x49, 0xe0, 0x16, 0x2d, 0xe5, 0x5e, 0xcf, 0x80, 0xa4, 0x9d, 0x21, 0xe3, 0x52, 0x16, 0x1d, 0x47, - 0x35, 0xbd, 0xce, 0x30, 0xb6, 0xf8, 0xf1, 0xdc, 0x74, 0x46, 0xef, 0x32, 0x2c, 0x8b, 0x22, 0x13, - 0x7f, 0xa1, 0x63, 0x52, 0xff, 0x62, 0xce, 0xa5, 0x2f, 0xe6, 0x96, 0xc3, 0xf4, 0xfc, 0x8b, 0x07, - 0x71, 0x90, 0x3e, 0x0a, 0xdf, 0x97, 0x20, 0x5b, 0xb7, 0x6c, 0x77, 0x54, 0x18, 0x24, 0xdd, 0x13, - 0x65, 0x24, 0x50, 0x8f, 0x9e, 0x73, 0xa6, 0xb7, 0x27, 0x1a, 0x5f, 0xfe, 0x18, 0xe2, 0x22, 0x1e, - 0x85, 0x39, 0xc2, 0x49, 0x70, 0x69, 0xc8, 0xbf, 0x4b, 0xa4, 0xbf, 0xba, 0x57, 0x14, 0x91, 0x33, - 0x30, 0xc3, 0xec, 0x49, 0x06, 0x17, 0x66, 0xb3, 0x69, 0xea, 0x9b, 0x58, 0x5c, 0x16, 0x79, 0x5c, - 0xfa, 0xcd, 0xb8, 0x83, 0x7b, 0x37, 0x46, 0xd5, 0x33, 0x25, 0x09, 0xb1, 0x18, 0x53, 0x78, 0xfa, - 0x88, 0x3c, 0x28, 0x43, 0x9e, 0xfa, 0x84, 0x8d, 0x14, 0x81, 0xa4, 0x2d, 0x23, 0x10, 0x82, 0x98, - 0xef, 0x98, 0x3c, 0xea, 0x96, 0x11, 0x5f, 0x7e, 0xfa, 0x38, 0xfc, 0x80, 0x3a, 0x3b, 0x16, 0xf7, - 0x74, 0xa3, 0xa3, 0x9f, 0xef, 0x24, 0x08, 0x6d, 0xfc, 0xb1, 0x84, 0xc7, 0xbb, 0x82, 0xaa, 0x72, - 0xe5, 0x45, 0x48, 0xfc, 0x27, 0x60, 0xca, 0x0e, 0x96, 0x24, 0xfd, 0xd3, 0xef, 0x3d, 0x8e, 0xa6, - 0xf4, 0xbb, 0x16, 0xe6, 0x4c, 0x74, 0x96, 0x4b, 0x88, 0x9f, 0xb1, 0x9c, 0x3d, 0x99, 0x2e, 0xb6, - 0xdb, 0x4b, 0x48, 0x77, 0x77, 0x6d, 0xd4, 0x4e, 0x34, 0x44, 0xf0, 0x22, 0x9a, 0x62, 0x25, 0xc1, - 0x05, 0x17, 0x5c, 0xe5, 0xd1, 0x79, 0xd2, 0x80, 0xde, 0xc0, 0xe7, 0x65, 0x24, 0x5d, 0xd2, 0xdb, - 0x02, 0x48, 0x6a, 0x1c, 0x24, 0x4f, 0x19, 0x8e, 0x89, 0xf4, 0x01, 0xf9, 0x75, 0x19, 0xe6, 0x88, - 0x9d, 0x30, 0x6a, 0x4c, 0x7e, 0x2f, 0xa1, 0x0f, 0x09, 0x73, 0x2d, 0x13, 0xcb, 0xce, 0x48, 0x60, - 0x49, 0xe2, 0x71, 0x22, 0xc6, 0x47, 0xfa, 0xc8, 0x7c, 0x2e, 0x0f, 0xc0, 0xf8, 0x05, 0x7e, 0x2c, - 0x1f, 0x06, 0xfa, 0x53, 0xdf, 0x41, 0xe7, 0x1f, 0x75, 0x2e, 0xea, 0x34, 0xe3, 0xf3, 0x17, 0x6c, - 0x48, 0xf1, 0x89, 0x42, 0xa3, 0xca, 0x9f, 0x27, 0xb4, 0x79, 0xa9, 0x57, 0xde, 0xc0, 0xc1, 0x7d, - 0xc8, 0x5e, 0xee, 0xe3, 0x09, 0x8c, 0xdf, 0x41, 0xac, 0x24, 0x43, 0x6d, 0x75, 0x88, 0x99, 0xfd, - 0x29, 0x38, 0xae, 0x95, 0x8b, 0x8b, 0xb5, 0xea, 0xea, 0x7d, 0xec, 0x1d, 0x3d, 0x05, 0x99, 0x9d, - 0x9c, 0xa4, 0x02, 0xdb, 0x1b, 0x12, 0xf6, 0x81, 0xbc, 0xac, 0xe2, 0x66, 0x2b, 0xcc, 0xe2, 0xca, - 0xe0, 0x5e, 0x4d, 0x80, 0xec, 0x61, 0xa2, 0xf0, 0x20, 0x30, 0xcd, 0xe8, 0xf9, 0x32, 0x14, 0xc2, - 0x6b, 0xe2, 0xe9, 0x65, 0x6c, 0x35, 0xde, 0x6d, 0xb0, 0x4b, 0xf6, 0x9f, 0x42, 0xb7, 0x41, 0x3f, - 0x41, 0xb9, 0x1e, 0xe6, 0x5a, 0xdb, 0xa8, 0x75, 0xa1, 0x62, 0xfa, 0xfb, 0xea, 0x64, 0x13, 0xb6, - 0x27, 0x95, 0x07, 0xe6, 0x5e, 0x1e, 0x18, 0x7e, 0x12, 0xcd, 0x0d, 0xd2, 0x2c, 0x53, 0x11, 0xb8, - 0xfc, 0x61, 0x80, 0x4b, 0x95, 0xc3, 0xe5, 0xf6, 0xa1, 0xa8, 0x26, 0x83, 0xa5, 0x3a, 0x04, 0x2c, - 0x2a, 0x9c, 0xac, 0xad, 0x37, 0x2a, 0xb5, 0x6a, 0x73, 0xa3, 0x5e, 0x5e, 0x6c, 0x2e, 0xf8, 0xe0, - 0xd4, 0x0b, 0xb2, 0xfa, 0x4d, 0x09, 0x26, 0x08, 0x5b, 0x4e, 0xcf, 0xb5, 0xee, 0xf1, 0xfe, 0x92, - 0xea, 0xdb, 0x85, 0xa3, 0x1f, 0x04, 0x82, 0xa0, 0xe5, 0x44, 0xf4, 0x53, 0x4f, 0x86, 0x09, 0x02, - 0xb2, 0xbf, 0xa2, 0x75, 0x3a, 0xa2, 0x97, 0xa2, 0x64, 0x34, 0x3f, 0xbb, 0x60, 0x24, 0x84, 0x01, - 0x6c, 0xa4, 0x3f, 0xb2, 0x3c, 0x2b, 0x4b, 0xcc, 0xe0, 0x73, 0x86, 0xbb, 0x8d, 0xdd, 0x29, 0xd5, - 0xa7, 0x89, 0x2c, 0x2f, 0xde, 0x04, 0xb9, 0x3d, 0x2f, 0xf7, 0x00, 0xd7, 0x54, 0x92, 0x49, 0x7d, - 0x95, 0x70, 0xe0, 0x4d, 0x4e, 0x3f, 0x03, 0x9e, 0x22, 0xc0, 0x59, 0x83, 0x6c, 0xc7, 0x70, 0x5c, - 0x3a, 0x7e, 0xdc, 0x96, 0x88, 0x90, 0xff, 0x50, 0x71, 0xd1, 0x8e, 0x86, 0xc9, 0xa8, 0xf7, 0xc0, - 0x0c, 0x9b, 0x2a, 0xe0, 0x9e, 0x7b, 0x0a, 0x26, 0xe8, 0xb1, 0x31, 0xba, 0xc4, 0xea, 0xbf, 0x0a, - 0x2e, 0x6b, 0x0a, 0xd5, 0x36, 0x7d, 0x1d, 0xf8, 0x7f, 0x8f, 0xc2, 0xc4, 0x8a, 0xe1, 0xb8, 0x96, - 0x7d, 0x49, 0x7d, 0x38, 0x03, 0x13, 0x67, 0x91, 0xed, 0x18, 0x96, 0xb9, 0xcf, 0xd5, 0xe0, 0x1a, - 0x98, 0xee, 0xda, 0x68, 0xcf, 0xb0, 0x76, 0x9d, 0x70, 0x71, 0x86, 0x4d, 0x52, 0x54, 0x98, 0xd4, - 0x77, 0xdd, 0x6d, 0xcb, 0x0e, 0xa3, 0x4d, 0xf8, 0xef, 0xca, 0x69, 0x00, 0xf2, 0x5c, 0xd5, 0x77, - 0x10, 0x75, 0xa0, 0x60, 0x52, 0x14, 0x05, 0xb2, 0xae, 0xb1, 0x83, 0x68, 0xf8, 0x59, 0xfc, 0xec, - 0x09, 0x18, 0x87, 0x72, 0xa3, 0x21, 0xf3, 0x64, 0xcd, 0x7f, 0x55, 0xbf, 0x20, 0xc3, 0xf4, 0x32, - 0x72, 0x29, 0xab, 0x8e, 0xfa, 0xa2, 0x8c, 0xd0, 0x8d, 0x0f, 0xde, 0x18, 0xdb, 0xd1, 0x1d, 0xff, - 0xbf, 0x60, 0x09, 0x96, 0x4f, 0x0c, 0x63, 0xe1, 0xca, 0x6c, 0x20, 0x6c, 0x1c, 0x18, 0xcd, 0xad, - 0x10, 0xbf, 0x4b, 0x9a, 0x99, 0x6e, 0x82, 0xec, 0xff, 0xa0, 0xbe, 0x47, 0x12, 0x3d, 0x54, 0x4c, - 0x65, 0x3f, 0xcf, 0xd4, 0x27, 0xb2, 0x3b, 0x9a, 0xdc, 0xa3, 0x39, 0xf6, 0xc5, 0x38, 0x67, 0x29, - 0x51, 0x32, 0x5a, 0x90, 0x5b, 0xf0, 0x38, 0xf2, 0x60, 0x4e, 0xd2, 0xd7, 0xc6, 0xef, 0xca, 0x30, - 0x5d, 0xdf, 0xb6, 0x2e, 0xfa, 0x72, 0xfc, 0x19, 0x31, 0x60, 0xaf, 0x82, 0xa9, 0xbd, 0x1e, 0x50, - 0xc3, 0x84, 0xe8, 0x3b, 0xd8, 0xd5, 0xe7, 0xc9, 0x49, 0x61, 0x62, 0x98, 0x1b, 0xf9, 0x0d, 0xe9, - 0xca, 0x93, 0x60, 0x82, 0x72, 0x4d, 0x97, 0x5c, 0xe2, 0x01, 0xf6, 0x33, 0xb3, 0x15, 0xcc, 0xf2, - 0x15, 0x4c, 0x86, 0x7c, 0x74, 0xe5, 0xd2, 0x47, 0xfe, 0x4f, 0x24, 0x1c, 0x8c, 0xc2, 0x07, 0xbe, - 0x34, 0x02, 0xe0, 0xd5, 0xef, 0x65, 0x44, 0x17, 0x26, 0x03, 0x09, 0x04, 0x1c, 0x1c, 0xe8, 0x36, - 0x97, 0x81, 0xe4, 0xd2, 0x97, 0xe7, 0x2b, 0xb3, 0x30, 0xb3, 0x68, 0x6c, 0x6e, 0x06, 0x9d, 0xe4, - 0x8b, 0x05, 0x3b, 0xc9, 0x68, 0x77, 0x00, 0xcf, 0xce, 0xdd, 0xb5, 0x6d, 0x64, 0xfa, 0x95, 0xa2, - 0xcd, 0xa9, 0x27, 0x55, 0xb9, 0x01, 0x8e, 0xfa, 0xe3, 0x02, 0xdb, 0x51, 0x4e, 0x69, 0xbd, 0xc9, - 0xea, 0x77, 0x84, 0x77, 0xb5, 0x7c, 0x89, 0xb2, 0x55, 0x8a, 0x68, 0x80, 0x77, 0xc0, 0xec, 0x36, - 0xc9, 0x8d, 0xa7, 0xfe, 0x7e, 0x67, 0x79, 0xb2, 0x27, 0xd8, 0xef, 0x1a, 0x72, 0x1c, 0x7d, 0x0b, - 0x69, 0x7c, 0xe6, 0x9e, 0xe6, 0x2b, 0x27, 0xb9, 0xba, 0x4a, 0x6c, 0x83, 0x4c, 0xa0, 0x26, 0x63, - 0xd0, 0x8e, 0x33, 0x90, 0x5d, 0x32, 0x3a, 0x48, 0xfd, 0x05, 0x09, 0xa6, 0x34, 0xd4, 0xb2, 0xcc, - 0x96, 0xf7, 0xc6, 0x38, 0x07, 0xfd, 0x53, 0x46, 0xf4, 0xca, 0x46, 0x8f, 0xce, 0x7c, 0x40, 0x23, - 0xa2, 0xdd, 0x88, 0x5d, 0xcd, 0x18, 0x4b, 0x6a, 0x0c, 0x17, 0x6c, 0x78, 0x53, 0x8f, 0xcd, 0xcd, - 0x8e, 0xa5, 0x73, 0x8b, 0x5f, 0xbd, 0xa6, 0xd0, 0x8d, 0x50, 0xf0, 0xcf, 0x78, 0x58, 0xee, 0xba, - 0x61, 0x9a, 0xc1, 0x21, 0xe2, 0x7d, 0xe9, 0xfc, 0xbe, 0x6d, 0x6c, 0x1c, 0x16, 0x5c, 0x77, 0x5a, - 0x7a, 0x84, 0x66, 0x5f, 0x0f, 0x73, 0xe7, 0x2f, 0xb9, 0xc8, 0xa1, 0xb9, 0x68, 0xb1, 0x59, 0xad, - 0x27, 0x95, 0x89, 0xa2, 0x1c, 0x17, 0xaf, 0x25, 0xa6, 0xc0, 0x64, 0xa2, 0x5e, 0x19, 0x62, 0x06, - 0x78, 0x1c, 0x0a, 0xd5, 0xda, 0x62, 0x19, 0xfb, 0xaa, 0xf9, 0xde, 0x3f, 0x5b, 0xea, 0x4b, 0x64, - 0x98, 0xc1, 0xce, 0x24, 0x3e, 0x0a, 0xd7, 0x0a, 0xcc, 0x47, 0xd4, 0x2f, 0x0b, 0xfb, 0xb1, 0xe1, - 0x2a, 0xb3, 0x05, 0x44, 0x0b, 0x7a, 0xd3, 0xe8, 0xf4, 0x0a, 0x3a, 0xa7, 0xf5, 0xa4, 0xf6, 0x01, - 0x44, 0xee, 0x0b, 0xc8, 0xef, 0x08, 0x39, 0xb3, 0x0d, 0xe2, 0xee, 0xb0, 0x50, 0xf9, 0x5d, 0x19, - 0xa6, 0xbd, 0x49, 0x8a, 0x0f, 0x4a, 0x8d, 0x03, 0xc5, 0x32, 0x3b, 0x97, 0xc2, 0x65, 0x11, 0xff, - 0x35, 0x51, 0x23, 0xf9, 0x2b, 0xe1, 0x99, 0x3b, 0x16, 0x11, 0xc3, 0xcb, 0x98, 0xf0, 0xfb, 0x80, - 0xd0, 0x7c, 0x7e, 0x00, 0x73, 0x87, 0x05, 0xdf, 0xd7, 0x73, 0x90, 0xdf, 0xe8, 0x62, 0xe4, 0x5e, - 0x25, 0x8b, 0x44, 0x24, 0xdf, 0x77, 0x90, 0xc1, 0x33, 0xb3, 0x3a, 0x56, 0x4b, 0xef, 0xac, 0x87, - 0x27, 0xc2, 0xc2, 0x04, 0xe5, 0x76, 0xea, 0xdb, 0x48, 0x8e, 0xd3, 0x5d, 0x1f, 0x1b, 0xac, 0x1b, - 0xcb, 0x88, 0x39, 0x34, 0x72, 0x13, 0x1c, 0x6b, 0x1b, 0x8e, 0x7e, 0xbe, 0x83, 0xca, 0x66, 0xcb, - 0xbe, 0x44, 0xc4, 0x41, 0xa7, 0x55, 0xfb, 0x3e, 0x28, 0x77, 0x42, 0xce, 0x71, 0x2f, 0x75, 0xc8, - 0x3c, 0x91, 0x3d, 0x63, 0x12, 0x59, 0x54, 0xdd, 0xcb, 0xae, 0x91, 0xbf, 0x58, 0x17, 0xa5, 0x09, - 0xc1, 0xfb, 0x9a, 0x9f, 0x00, 0x79, 0xcb, 0x36, 0xb6, 0x0c, 0x72, 0xff, 0xce, 0xdc, 0xbe, 0x98, - 0x74, 0xc4, 0x14, 0xa8, 0xe1, 0x2c, 0x1a, 0xcd, 0xaa, 0x3c, 0x09, 0xa6, 0x8c, 0x1d, 0x7d, 0x0b, - 0xdd, 0x6b, 0x98, 0xe4, 0xc4, 0xde, 0xdc, 0xad, 0xa7, 0xf6, 0x1d, 0x9f, 0xa1, 0xdf, 0xb5, 0x30, - 0xab, 0xfa, 0x01, 0x49, 0x34, 0x70, 0x0e, 0xae, 0x1b, 0x01, 0x75, 0x2c, 0xf7, 0x56, 0xab, 0xaf, - 0x15, 0x0a, 0x69, 0x13, 0xcd, 0x56, 0xfa, 0x83, 0xf7, 0xe7, 0x25, 0x98, 0x5c, 0xb4, 0x2e, 0x9a, - 0x58, 0xd1, 0x6f, 0x13, 0xb3, 0x75, 0xfb, 0x1c, 0x72, 0xe4, 0xaf, 0x85, 0x8c, 0x3d, 0xd1, 0x80, - 0x6b, 0xeb, 0x17, 0x19, 0x01, 0x43, 0x6c, 0xcb, 0x11, 0xbc, 0xac, 0x2f, 0xae, 0x9c, 0xf4, 0xe5, - 0xfa, 0xa7, 0x32, 0x64, 0x17, 0x6d, 0xab, 0xab, 0xbe, 0x2d, 0x93, 0xc0, 0x65, 0xa1, 0x6d, 0x5b, - 0xdd, 0x06, 0xbe, 0x6d, 0x2b, 0x3c, 0xc6, 0xc1, 0xa6, 0x29, 0xb7, 0xc1, 0x64, 0xd7, 0x72, 0x0c, - 0xd7, 0x9f, 0x46, 0xcc, 0xdd, 0xfa, 0xa8, 0xbe, 0xad, 0x79, 0x9d, 0x66, 0xd2, 0x82, 0xec, 0x5e, - 0xaf, 0x8d, 0x45, 0xe8, 0xc9, 0xc5, 0x13, 0xa3, 0x7f, 0xe3, 0x58, 0x4f, 0xaa, 0xfa, 0x52, 0x16, - 0xc9, 0xa7, 0xf0, 0x48, 0x3e, 0xba, 0x8f, 0x84, 0x6d, 0xab, 0x3b, 0x92, 0x4d, 0xc6, 0x57, 0x07, - 0xa8, 0x3e, 0x95, 0x43, 0xf5, 0x46, 0xa1, 0x32, 0xd3, 0x47, 0xf4, 0x03, 0x59, 0x00, 0x6c, 0x66, - 0x6c, 0x78, 0x13, 0x20, 0x31, 0x1b, 0xeb, 0x39, 0x59, 0x46, 0x96, 0x45, 0x5e, 0x96, 0x8f, 0x8d, - 0xb0, 0x62, 0x30, 0xf9, 0x08, 0x89, 0x16, 0x21, 0xb7, 0xeb, 0x7d, 0xa6, 0x12, 0x15, 0x24, 0x81, - 0x5f, 0x35, 0xf2, 0xa7, 0xfa, 0x27, 0x19, 0xc8, 0xe1, 0x04, 0xe5, 0x34, 0x00, 0x1e, 0xd8, 0xc9, - 0x81, 0xa0, 0x0c, 0x1e, 0xc2, 0x99, 0x14, 0xac, 0xad, 0x46, 0x9b, 0x7e, 0x26, 0x26, 0x73, 0x98, - 0xe0, 0xfd, 0x8d, 0x87, 0x7b, 0x4c, 0x8b, 0x1a, 0x00, 0x4c, 0x8a, 0xf7, 0x37, 0x7e, 0x5b, 0x45, - 0x9b, 0x24, 0x10, 0x72, 0x56, 0x0b, 0x13, 0x82, 0xbf, 0x57, 0x83, 0xeb, 0xb3, 0xfc, 0xbf, 0x71, - 0x8a, 0x37, 0x19, 0xc6, 0x6a, 0xb9, 0x10, 0x16, 0x91, 0xc7, 0x99, 0x7a, 0x93, 0xd5, 0x37, 0x04, - 0x6a, 0xb3, 0xc8, 0xa9, 0xcd, 0x2d, 0x09, 0xc4, 0x9b, 0xbe, 0xf2, 0x7c, 0x35, 0x07, 0x53, 0x55, - 0xab, 0x4d, 0x75, 0x87, 0x99, 0x30, 0x7e, 0x32, 0x97, 0x68, 0xc2, 0x18, 0xd0, 0x88, 0x50, 0x90, - 0xbb, 0x79, 0x05, 0x11, 0xa3, 0xc0, 0xea, 0x87, 0xb2, 0x00, 0x79, 0xac, 0xbd, 0xfb, 0xef, 0x65, - 0x8a, 0x23, 0x81, 0x45, 0xab, 0xd1, 0x3f, 0xff, 0xc3, 0xe9, 0xd8, 0x7f, 0x85, 0x1c, 0xae, 0x60, - 0xcc, 0xee, 0x0e, 0x5f, 0x51, 0x29, 0xbe, 0xa2, 0x72, 0x7c, 0x45, 0xb3, 0xbd, 0x15, 0x4d, 0xb2, - 0x0e, 0x10, 0xa5, 0x21, 0xe9, 0xeb, 0xf8, 0x3f, 0x4e, 0x00, 0x54, 0xf5, 0x3d, 0x63, 0x8b, 0xec, - 0x0e, 0x7f, 0xc1, 0x9f, 0xff, 0xd0, 0x7d, 0xdc, 0x5f, 0x62, 0x06, 0xc2, 0xdb, 0x60, 0x82, 0x8e, - 0x7b, 0xb4, 0x22, 0x57, 0x73, 0x15, 0x09, 0xa9, 0x10, 0xb3, 0xf4, 0x01, 0x57, 0xf3, 0xf3, 0x73, - 0x57, 0xc8, 0x4a, 0x3d, 0x57, 0xc8, 0xf6, 0xdf, 0x83, 0x88, 0xb8, 0x58, 0x56, 0x7d, 0xaf, 0xb0, - 0x47, 0x3f, 0xc3, 0x0f, 0x53, 0xa3, 0x88, 0x26, 0xf8, 0x04, 0x98, 0xb0, 0x82, 0x0d, 0x6d, 0x39, - 0x72, 0x1d, 0xac, 0x62, 0x6e, 0x5a, 0x9a, 0x9f, 0x53, 0x70, 0xf3, 0x4b, 0x88, 0x8f, 0xb1, 0x1c, - 0x9a, 0x39, 0xb9, 0xec, 0x07, 0x95, 0xf2, 0xea, 0x71, 0xce, 0x70, 0xb7, 0x57, 0x0d, 0xf3, 0x82, - 0xa3, 0xfe, 0x67, 0x31, 0x0b, 0x92, 0xc1, 0x5f, 0x4a, 0x86, 0x3f, 0x1f, 0xb3, 0xa3, 0xce, 0xa3, - 0x76, 0x67, 0x14, 0x95, 0xfe, 0xdc, 0x46, 0x00, 0x78, 0x3b, 0xe4, 0x09, 0xa3, 0xb4, 0x13, 0x3d, - 0x13, 0x89, 0x5f, 0x40, 0x49, 0xa3, 0x7f, 0xa8, 0xef, 0x09, 0x70, 0x3c, 0xcb, 0xe1, 0xb8, 0x70, - 0x20, 0xce, 0x52, 0x87, 0xf4, 0xcc, 0xe3, 0x61, 0x82, 0x4a, 0x5a, 0x99, 0x63, 0x5b, 0x71, 0xe1, - 0x88, 0x02, 0x90, 0x5f, 0xb3, 0xf6, 0x50, 0xc3, 0x2a, 0x64, 0xbc, 0x67, 0x8f, 0xbf, 0x86, 0x55, - 0x90, 0xd4, 0xd7, 0x4c, 0xc2, 0x64, 0x10, 0xcd, 0xe7, 0xf3, 0x12, 0x14, 0x4a, 0x36, 0xd2, 0x5d, - 0xb4, 0x64, 0x5b, 0x3b, 0xa4, 0x46, 0xe2, 0xde, 0xa1, 0xbf, 0x2e, 0xec, 0xe2, 0x11, 0x44, 0xd9, - 0xe9, 0x2d, 0x2c, 0x02, 0x4b, 0xb2, 0x08, 0x29, 0xf9, 0x8b, 0x90, 0xea, 0x5b, 0x85, 0x5c, 0x3e, - 0x44, 0x4b, 0x49, 0xbf, 0xa9, 0x7d, 0x5a, 0x82, 0x5c, 0xa9, 0x63, 0x99, 0x88, 0x3d, 0xc2, 0x34, - 0xf0, 0xac, 0x4c, 0xff, 0x9d, 0x08, 0xf5, 0x59, 0x92, 0xa8, 0xad, 0x11, 0x0a, 0xc0, 0x2b, 0x5b, - 0x50, 0xb6, 0x62, 0x83, 0x54, 0x2c, 0xe9, 0xf4, 0x05, 0xfa, 0x4d, 0x09, 0xa6, 0x48, 0x5c, 0x9c, - 0x62, 0xa7, 0xa3, 0x3e, 0x2a, 0x14, 0x6a, 0x9f, 0x88, 0x48, 0xea, 0xef, 0x08, 0xbb, 0xe8, 0x07, - 0xb5, 0x0a, 0x68, 0x27, 0x08, 0x10, 0x94, 0xcc, 0x63, 0x5c, 0x6c, 0x2f, 0x6d, 0x20, 0x43, 0xe9, - 0x8b, 0xfa, 0x2f, 0x24, 0xcf, 0x00, 0x30, 0x2f, 0xac, 0xdb, 0x68, 0xcf, 0x40, 0x17, 0xd5, 0x2b, - 0x43, 0x61, 0xef, 0x0f, 0xfa, 0xf1, 0x66, 0xe1, 0x45, 0x1c, 0x86, 0x64, 0xe4, 0x56, 0xd6, 0x74, - 0x27, 0xcc, 0x44, 0x7b, 0xf1, 0xde, 0x48, 0x2c, 0x0c, 0x19, 0x8d, 0xcd, 0x2e, 0xb8, 0x66, 0x13, - 0xcd, 0x45, 0xfa, 0x82, 0xfd, 0xf0, 0x04, 0x4c, 0x6e, 0x98, 0x4e, 0xb7, 0xa3, 0x3b, 0xdb, 0xea, - 0xbf, 0xcb, 0x90, 0x27, 0xb7, 0x81, 0xa9, 0x3f, 0xc1, 0xc5, 0x16, 0x78, 0xc6, 0x2e, 0xb2, 0x7d, - 0x17, 0x1c, 0xf2, 0xd2, 0xff, 0xb2, 0x72, 0xf5, 0x03, 0xb2, 0xe8, 0x24, 0xd5, 0x2f, 0x94, 0xb9, - 0x16, 0xbe, 0xff, 0x71, 0xf6, 0xae, 0xd1, 0x72, 0x77, 0xed, 0xe0, 0xea, 0xeb, 0xc7, 0x89, 0x51, - 0x59, 0x27, 0x7f, 0x69, 0xc1, 0xef, 0xaa, 0x0e, 0x13, 0x34, 0x71, 0xdf, 0x76, 0xd2, 0xfe, 0xf3, - 0xb7, 0x27, 0x21, 0xaf, 0xdb, 0xae, 0xe1, 0xb8, 0x74, 0x83, 0x95, 0xbe, 0x79, 0xdd, 0x25, 0x79, - 0xda, 0xb0, 0x3b, 0x7e, 0x14, 0x92, 0x20, 0x41, 0xfd, 0x5d, 0xa1, 0xf9, 0x63, 0x7c, 0xcd, 0x93, - 0x41, 0x7e, 0xef, 0x10, 0x6b, 0xd4, 0x97, 0xc3, 0x65, 0x5a, 0xb1, 0x51, 0x6e, 0x92, 0xa0, 0x15, - 0x41, 0x7c, 0x8a, 0xb6, 0xfa, 0x6e, 0x99, 0x59, 0xbf, 0xbb, 0xc4, 0x8d, 0x11, 0x54, 0x8a, 0xe1, - 0x18, 0x11, 0x24, 0xc4, 0xec, 0x56, 0x73, 0x8b, 0xb0, 0xb2, 0xf8, 0x22, 0xec, 0x6f, 0x09, 0xef, - 0x26, 0x05, 0xa2, 0x1c, 0xb0, 0x06, 0x18, 0x77, 0x5b, 0xd0, 0x07, 0x85, 0x76, 0x86, 0x06, 0x95, - 0x74, 0x88, 0xb0, 0xbd, 0x69, 0x02, 0x26, 0x96, 0xf5, 0x4e, 0x07, 0xd9, 0x97, 0xbc, 0x21, 0xa9, - 0xe0, 0x73, 0xb8, 0xa6, 0x9b, 0xc6, 0x26, 0x72, 0xdc, 0xf8, 0xce, 0xf2, 0xbd, 0xc2, 0x91, 0x68, - 0x69, 0x19, 0xf3, 0xbd, 0xf4, 0x23, 0x64, 0x7e, 0x33, 0x64, 0x0d, 0x73, 0xd3, 0xa2, 0x5d, 0x66, - 0xef, 0xaa, 0xbd, 0xff, 0x33, 0x9e, 0xba, 0xe0, 0x8c, 0x82, 0xc1, 0x68, 0x05, 0xb9, 0x48, 0xbf, - 0xe7, 0xfc, 0xed, 0x2c, 0xcc, 0xfa, 0x4c, 0x54, 0xcc, 0x36, 0x7a, 0x80, 0x5d, 0x8a, 0x79, 0x49, - 0x56, 0xf4, 0x38, 0x58, 0x6f, 0x7d, 0x30, 0xa9, 0x08, 0x91, 0x36, 0x00, 0x5a, 0xba, 0x8b, 0xb6, - 0x2c, 0xdb, 0x08, 0xfa, 0xc3, 0x27, 0x26, 0xa1, 0x56, 0x22, 0x7f, 0x5f, 0xd2, 0x18, 0x3a, 0xca, - 0x9d, 0x30, 0x8d, 0x82, 0xf3, 0xf7, 0xfe, 0x52, 0x4d, 0x2c, 0x5e, 0x6c, 0x7e, 0xf5, 0x2f, 0x84, - 0x4e, 0x9d, 0x89, 0x54, 0x33, 0x19, 0x66, 0xcd, 0xe1, 0xda, 0xd0, 0x46, 0x75, 0xad, 0xa8, 0xd5, - 0x57, 0x8a, 0xab, 0xab, 0x95, 0xea, 0x72, 0x10, 0xf8, 0x45, 0x81, 0xb9, 0xc5, 0xda, 0xb9, 0x2a, - 0x13, 0x99, 0x27, 0xab, 0xae, 0xc3, 0xa4, 0x2f, 0xaf, 0x7e, 0xbe, 0x98, 0xac, 0xcc, 0xa8, 0x2f, - 0x26, 0x93, 0xe4, 0x19, 0x67, 0x46, 0x2b, 0x70, 0xd0, 0xc1, 0xcf, 0xea, 0x1f, 0xe9, 0x90, 0xc3, - 0x6b, 0xea, 0xea, 0x3b, 0xf1, 0x36, 0x60, 0xb7, 0xa3, 0xb7, 0x90, 0xba, 0x93, 0xc0, 0x1a, 0xf7, - 0xaf, 0x46, 0x90, 0xf6, 0x5d, 0x8d, 0x80, 0x1f, 0xa9, 0xd5, 0x77, 0xbc, 0xdf, 0x3a, 0xbe, 0x46, - 0xb2, 0xf0, 0x07, 0xb4, 0x62, 0x77, 0x57, 0xc8, 0xf2, 0x3f, 0x65, 0x33, 0x42, 0x25, 0xa3, 0x79, - 0x4a, 0x66, 0x89, 0x8a, 0xed, 0xc3, 0xc4, 0x71, 0x34, 0x86, 0xeb, 0xbb, 0xb3, 0x90, 0xab, 0x77, - 0x3b, 0x86, 0xab, 0xbe, 0x42, 0x1a, 0x09, 0x66, 0xe4, 0x3a, 0x0b, 0x79, 0xe0, 0x75, 0x16, 0xe1, - 0xae, 0x6b, 0x56, 0x60, 0xd7, 0xb5, 0x81, 0x1e, 0x70, 0xf9, 0x5d, 0xd7, 0xdb, 0x68, 0xf0, 0x36, - 0xb2, 0x67, 0xfb, 0xe8, 0x3e, 0x22, 0xc5, 0xd5, 0xea, 0x13, 0x15, 0xf0, 0xcc, 0xe3, 0x69, 0x70, - 0x32, 0x80, 0xfc, 0x42, 0xad, 0xd1, 0xa8, 0xad, 0x15, 0x8e, 0xe0, 0xa8, 0x36, 0xb5, 0x75, 0x12, - 0x2a, 0xa6, 0x52, 0xad, 0x96, 0xb5, 0x82, 0x84, 0xc3, 0xa5, 0x55, 0x1a, 0xab, 0xe5, 0x82, 0xcc, - 0xc7, 0x36, 0x8f, 0x35, 0xbf, 0xf9, 0xb2, 0xd3, 0x54, 0x2f, 0x31, 0x43, 0x3c, 0x9a, 0x9f, 0xf4, - 0x95, 0xeb, 0xd7, 0x64, 0xc8, 0xad, 0x21, 0x7b, 0x0b, 0xa9, 0xcf, 0x48, 0xb0, 0xc9, 0xb7, 0x69, - 0xd8, 0x0e, 0x09, 0x2e, 0x17, 0x6e, 0xf2, 0xb1, 0x69, 0xca, 0x75, 0x30, 0xeb, 0xa0, 0x96, 0x65, - 0xb6, 0xfd, 0x4c, 0xa4, 0x3f, 0xe2, 0x13, 0xf9, 0x7b, 0xe5, 0x05, 0x20, 0xc3, 0x8c, 0x8e, 0x64, - 0xa7, 0x2e, 0x09, 0x30, 0xfd, 0x4a, 0x4d, 0x1f, 0x98, 0xef, 0xc8, 0xde, 0x4f, 0xdd, 0x4b, 0xea, - 0xcb, 0x85, 0x77, 0x5f, 0x6f, 0x82, 0x3c, 0x56, 0x53, 0x7f, 0x8c, 0xee, 0xdf, 0x1f, 0xd3, 0x3c, - 0xca, 0x02, 0x1c, 0x73, 0x50, 0x07, 0xb5, 0x5c, 0xd4, 0xf6, 0x9a, 0xae, 0x36, 0xb0, 0x53, 0xd8, - 0x9f, 0x5d, 0xfd, 0x33, 0x16, 0xc0, 0x3b, 0x78, 0x00, 0xaf, 0xef, 0x23, 0x4a, 0xaf, 0x42, 0xd1, - 0xb6, 0xb2, 0x57, 0x8d, 0x7a, 0xc7, 0x0a, 0x16, 0xc5, 0xfd, 0x77, 0xef, 0xdb, 0xb6, 0xbb, 0xd3, - 0xc1, 0xdf, 0xe8, 0x01, 0x03, 0xff, 0x5d, 0x99, 0x87, 0x09, 0xdd, 0xbc, 0x84, 0x3f, 0x65, 0x63, - 0x6a, 0xed, 0x67, 0x52, 0x5f, 0x13, 0x20, 0x7f, 0x17, 0x87, 0xfc, 0x63, 0xc5, 0xd8, 0x4d, 0x1f, - 0xf8, 0x9f, 0x9f, 0x80, 0xdc, 0xba, 0xee, 0xb8, 0x48, 0xfd, 0x7f, 0x64, 0x51, 0xe4, 0xaf, 0x87, - 0xb9, 0x4d, 0xab, 0xb5, 0xeb, 0xa0, 0x36, 0xdf, 0x28, 0x7b, 0x52, 0x47, 0x81, 0xb9, 0x72, 0x23, - 0x14, 0xfc, 0x44, 0x4a, 0xd6, 0xdf, 0x86, 0xdf, 0x97, 0x8e, 0x23, 0x65, 0x3b, 0xeb, 0xba, 0xed, - 0xd6, 0x36, 0x71, 0x5a, 0x10, 0x29, 0x9b, 0x4d, 0xe4, 0xa0, 0xcf, 0xc7, 0x40, 0x3f, 0x11, 0x0d, - 0xfd, 0xa4, 0x00, 0xf4, 0x4a, 0x11, 0x26, 0x37, 0x8d, 0x0e, 0xc2, 0x3f, 0x4c, 0xe1, 0x1f, 0xfa, - 0x8d, 0x49, 0x58, 0xf6, 0xc1, 0x98, 0xb4, 0x64, 0x74, 0x90, 0x16, 0xfc, 0xe6, 0x4f, 0x64, 0x20, - 0x9c, 0xc8, 0xac, 0x12, 0x7f, 0x5a, 0xcf, 0xf0, 0x32, 0xf5, 0x1d, 0xe4, 0x2f, 0xbe, 0x99, 0xf4, - 0x70, 0x4b, 0x5b, 0x77, 0x75, 0x0c, 0xc6, 0x8c, 0x86, 0x9f, 0x79, 0xbf, 0x10, 0xb9, 0xd7, 0x2f, - 0xe4, 0xb9, 0x72, 0xb2, 0x1e, 0xd1, 0x67, 0x36, 0xa2, 0x45, 0x9d, 0xf7, 0x01, 0x22, 0x96, 0x62, - 0xf0, 0xee, 0x01, 0xd3, 0xd2, 0x6d, 0xe4, 0xae, 0xb3, 0x9e, 0x18, 0x39, 0x8d, 0x4f, 0xc4, 0xae, - 0x7c, 0x4e, 0x5d, 0xdf, 0x41, 0xb8, 0xb0, 0x92, 0xf7, 0x8d, 0xba, 0x68, 0xed, 0x4b, 0x0f, 0xfb, - 0xdf, 0xdc, 0xa8, 0xfb, 0xdf, 0x7e, 0x75, 0x4c, 0xbf, 0x19, 0xbe, 0x3e, 0x0b, 0x72, 0x69, 0xd7, - 0x7d, 0x44, 0x77, 0xbf, 0xdf, 0x17, 0xf6, 0x73, 0xa1, 0xfd, 0x59, 0xe4, 0x45, 0xf2, 0x63, 0xea, - 0x7d, 0x13, 0x6a, 0x89, 0x98, 0x3f, 0x4d, 0x54, 0xdd, 0xd2, 0xd7, 0x91, 0xb7, 0xc9, 0x81, 0x83, - 0xe5, 0x83, 0x99, 0x83, 0x9b, 0xe6, 0x2a, 0xe9, 0x9f, 0x98, 0x9e, 0x21, 0x78, 0xf7, 0x3b, 0x9e, - 0x2c, 0x17, 0xab, 0x0f, 0x6f, 0xaf, 0x63, 0x51, 0xce, 0x68, 0xe4, 0x45, 0x7d, 0xa5, 0xb0, 0xdb, - 0x39, 0x11, 0x5b, 0xac, 0x2b, 0x61, 0x32, 0x9b, 0x4a, 0xec, 0xb2, 0xd0, 0x98, 0x62, 0xd3, 0x07, - 0xec, 0xdb, 0xac, 0xab, 0x60, 0xf1, 0xc0, 0x88, 0xa9, 0xaf, 0x15, 0xde, 0x8e, 0x22, 0xd5, 0x1e, - 0xb0, 0x5e, 0x98, 0x4c, 0xde, 0x62, 0x9b, 0x55, 0xb1, 0x05, 0xa7, 0x2f, 0xf1, 0x6f, 0xc9, 0x90, - 0x27, 0x5b, 0x90, 0xea, 0x5b, 0x32, 0x09, 0x6e, 0x59, 0x77, 0x79, 0x17, 0xc2, 0xe0, 0x3d, 0xc9, - 0x9a, 0x03, 0xe7, 0x6a, 0x98, 0x4d, 0xe4, 0x6a, 0xc8, 0x9f, 0xe3, 0x14, 0x68, 0x47, 0xa4, 0x8e, - 0x29, 0x4f, 0x27, 0x93, 0xb4, 0xb0, 0xbe, 0x0c, 0xa5, 0x8f, 0xf7, 0xf3, 0x73, 0x30, 0x43, 0x8a, - 0x3e, 0x67, 0xb4, 0xb7, 0x90, 0xab, 0xbe, 0x5b, 0xfa, 0xe1, 0x41, 0x5d, 0xa9, 0xc2, 0xcc, 0x45, - 0xcc, 0xf6, 0xaa, 0x7e, 0xc9, 0xda, 0x75, 0xe9, 0xca, 0xc5, 0x8d, 0xb1, 0xeb, 0x1e, 0xa4, 0x9e, - 0xf3, 0xe4, 0x0f, 0x8d, 0xfb, 0xdf, 0x93, 0x31, 0x59, 0xf0, 0x27, 0x0e, 0x5c, 0x79, 0x6c, 0x64, - 0xb1, 0x49, 0xca, 0x49, 0xc8, 0xef, 0x19, 0xe8, 0x62, 0xa5, 0x4d, 0xad, 0x5b, 0xfa, 0xa6, 0xfe, - 0xbe, 0xf0, 0xbe, 0x2d, 0x0b, 0x37, 0xe5, 0x25, 0x5d, 0x2d, 0x14, 0xdb, 0xbd, 0x1d, 0xc8, 0xd6, - 0x18, 0xce, 0x14, 0xf3, 0x97, 0x71, 0x96, 0x12, 0x28, 0x62, 0x94, 0xe1, 0xcc, 0x87, 0xf2, 0x88, - 0x3d, 0xb1, 0x42, 0x04, 0x30, 0xe2, 0x7b, 0x3a, 0xc5, 0xe2, 0x4b, 0x0c, 0x28, 0x3a, 0x7d, 0xc9, - 0xbf, 0x41, 0x86, 0xa9, 0x3a, 0x72, 0x97, 0x0c, 0xd4, 0x69, 0x3b, 0xaa, 0x7d, 0x70, 0xd3, 0xe8, - 0x66, 0xc8, 0x6f, 0x62, 0x62, 0x83, 0xce, 0x2d, 0xd0, 0x6c, 0xea, 0xeb, 0x25, 0xd1, 0x1d, 0x61, - 0xba, 0xfa, 0xe6, 0x73, 0x3b, 0x12, 0x98, 0xc4, 0x3c, 0x7a, 0xe3, 0x4b, 0x1e, 0x43, 0x60, 0x5b, - 0x19, 0x66, 0xe8, 0xed, 0x7d, 0xc5, 0x8e, 0xb1, 0x65, 0xaa, 0xbb, 0x23, 0x68, 0x21, 0xca, 0x2d, - 0x90, 0xd3, 0x3d, 0x6a, 0x74, 0xeb, 0x55, 0xed, 0xdb, 0x79, 0xe2, 0xf2, 0x34, 0x92, 0x31, 0x41, - 0x18, 0xc9, 0x50, 0xb1, 0x7d, 0x9e, 0xc7, 0x18, 0x46, 0x72, 0x60, 0xe1, 0xe9, 0x23, 0xf6, 0x15, - 0x19, 0x8e, 0x53, 0x06, 0xce, 0x22, 0xdb, 0x35, 0x5a, 0x7a, 0x87, 0x20, 0xf7, 0xc2, 0xcc, 0x28, - 0xa0, 0x5b, 0x81, 0xd9, 0x3d, 0x96, 0x2c, 0x85, 0xf0, 0x4c, 0x5f, 0x08, 0x39, 0x06, 0x34, 0xfe, - 0xc7, 0x04, 0xe1, 0xf8, 0x38, 0xa9, 0x72, 0x34, 0xc7, 0x18, 0x8e, 0x4f, 0x98, 0x89, 0xf4, 0x21, - 0x7e, 0x29, 0x0d, 0xcd, 0x13, 0x76, 0x9f, 0x5f, 0x10, 0xc6, 0x76, 0x03, 0xa6, 0x31, 0x96, 0xe4, - 0x47, 0xba, 0x0c, 0x11, 0xa3, 0xc4, 0x41, 0xbf, 0x43, 0x2f, 0x0c, 0x0b, 0xfe, 0xd5, 0x58, 0x3a, - 0xea, 0x39, 0x80, 0xf0, 0x13, 0xdb, 0x49, 0x67, 0xa2, 0x3a, 0x69, 0x49, 0xac, 0x93, 0x7e, 0xb3, - 0x70, 0xb0, 0x94, 0xfe, 0x6c, 0x1f, 0x5c, 0x3d, 0xc4, 0xc2, 0x64, 0x0c, 0x2e, 0x3d, 0x7d, 0xbd, - 0x78, 0x4d, 0xb6, 0xf7, 0x9a, 0xf6, 0x8f, 0x8d, 0x64, 0x3e, 0xc5, 0xf6, 0x07, 0x72, 0x4f, 0x7f, - 0x70, 0x00, 0x4b, 0xfa, 0x06, 0x38, 0x4a, 0x8a, 0x28, 0x05, 0x6c, 0xe5, 0x48, 0x28, 0x88, 0x9e, - 0x64, 0xf5, 0xe3, 0x43, 0x28, 0xc1, 0xa0, 0x3b, 0xe4, 0xe3, 0x3a, 0xb9, 0x64, 0xc6, 0x6e, 0x52, - 0x05, 0x39, 0xbc, 0xab, 0xe7, 0xbf, 0x99, 0x25, 0xd6, 0xee, 0x06, 0xbe, 0xd3, 0x4d, 0xfd, 0xcb, - 0xec, 0x28, 0x46, 0x84, 0xbb, 0x21, 0x8b, 0x5d, 0xdc, 0xe5, 0xc8, 0x25, 0x8d, 0xb0, 0xc8, 0xf0, - 0xc2, 0x3d, 0xf4, 0x80, 0xbb, 0x72, 0x44, 0xc3, 0x7f, 0x2a, 0x37, 0xc2, 0xd1, 0xf3, 0x7a, 0xeb, - 0xc2, 0x96, 0x6d, 0xed, 0xe2, 0xdb, 0xaf, 0x2c, 0x7a, 0x8d, 0x16, 0xbe, 0x8e, 0x90, 0xff, 0xa0, - 0xdc, 0xea, 0x9b, 0x0e, 0xb9, 0x41, 0xa6, 0xc3, 0xca, 0x11, 0x6a, 0x3c, 0x28, 0x8f, 0x0f, 0x3a, - 0x9d, 0x7c, 0x6c, 0xa7, 0xb3, 0x72, 0xc4, 0xef, 0x76, 0x94, 0x45, 0x98, 0x6c, 0x1b, 0x7b, 0x78, - 0xab, 0x1a, 0xcf, 0xba, 0x06, 0x1d, 0x5d, 0x5e, 0x34, 0xf6, 0xc8, 0xc6, 0xf6, 0xca, 0x11, 0x2d, - 0xf8, 0x53, 0x59, 0x86, 0x29, 0xbc, 0x2d, 0x80, 0xc9, 0x4c, 0x26, 0x3a, 0x96, 0xbc, 0x72, 0x44, - 0x0b, 0xff, 0xf5, 0xac, 0x8f, 0x2c, 0x3e, 0xfb, 0x71, 0x97, 0xbf, 0xdd, 0x9e, 0x49, 0xb4, 0xdd, - 0xee, 0xc9, 0x82, 0x6c, 0xb8, 0x9f, 0x84, 0x5c, 0x0b, 0x4b, 0x58, 0xa2, 0x12, 0x26, 0xaf, 0xca, - 0x1d, 0x90, 0xdd, 0xd1, 0x6d, 0x7f, 0xf2, 0x7c, 0xfd, 0x60, 0xba, 0x6b, 0xba, 0x7d, 0xc1, 0x43, - 0xd0, 0xfb, 0x6b, 0x61, 0x02, 0x72, 0x58, 0x70, 0xc1, 0x83, 0xfa, 0xb6, 0x2c, 0x31, 0x43, 0x4a, - 0x96, 0xe9, 0x0d, 0xfb, 0x0d, 0xcb, 0x3f, 0x20, 0xf3, 0xfb, 0x99, 0xd1, 0x58, 0x90, 0x7d, 0xef, - 0x35, 0x97, 0x23, 0xef, 0x35, 0xef, 0xb9, 0x60, 0x37, 0xdb, 0x7b, 0xc1, 0x6e, 0xb8, 0x7c, 0x90, - 0x1b, 0xec, 0xa8, 0xf2, 0x67, 0x43, 0x98, 0x2e, 0xbd, 0x82, 0x88, 0x9e, 0x81, 0x77, 0x0c, 0x93, - 0xa9, 0xb3, 0xff, 0x9a, 0xb0, 0x53, 0x4a, 0x6a, 0xd4, 0x0c, 0x60, 0x2f, 0xfd, 0xbe, 0xe9, 0x37, - 0xb3, 0x70, 0x8a, 0x5c, 0xe3, 0xbc, 0x87, 0x1a, 0x16, 0x7f, 0xdf, 0xa4, 0xfa, 0xc7, 0x23, 0x51, - 0x9a, 0x3e, 0x03, 0x8e, 0xdc, 0x77, 0xc0, 0xd9, 0x77, 0x48, 0x39, 0x3b, 0xe0, 0x90, 0x72, 0x2e, - 0xd9, 0xca, 0xe1, 0x87, 0x58, 0xfd, 0x59, 0xe7, 0xf5, 0xe7, 0xf6, 0x08, 0x80, 0xfa, 0xc9, 0x65, - 0x24, 0xf6, 0xcd, 0x3b, 0x03, 0x4d, 0xa9, 0x73, 0x9a, 0x72, 0xd7, 0xf0, 0x8c, 0xa4, 0xaf, 0x2d, - 0xbf, 0x97, 0x85, 0xcb, 0x42, 0x66, 0xaa, 0xe8, 0x22, 0x55, 0x94, 0xcf, 0x8f, 0x44, 0x51, 0x92, - 0xc7, 0x40, 0x48, 0x5b, 0x63, 0xfe, 0x44, 0xf8, 0xec, 0x50, 0x2f, 0x50, 0x81, 0x6c, 0x22, 0x94, - 0xe5, 0x24, 0xe4, 0x49, 0x0f, 0x43, 0xa1, 0xa1, 0x6f, 0x09, 0xbb, 0x1b, 0xb1, 0x13, 0x47, 0xa2, - 0xbc, 0x8d, 0x41, 0x7f, 0xe8, 0xba, 0x46, 0x63, 0xd7, 0x36, 0x2b, 0xa6, 0x6b, 0xa9, 0x3f, 0x37, - 0x12, 0xc5, 0x09, 0xbc, 0xe1, 0xe4, 0x61, 0xbc, 0xe1, 0x86, 0x5a, 0xe5, 0xf0, 0x6b, 0x70, 0x28, - 0xab, 0x1c, 0x11, 0x85, 0xa7, 0x8f, 0xdf, 0x3b, 0x64, 0x38, 0x49, 0x27, 0x5b, 0x0b, 0xbc, 0x85, - 0xa8, 0xde, 0x37, 0x0a, 0x20, 0x8f, 0xfb, 0x66, 0x12, 0xbd, 0xe5, 0x0c, 0xbf, 0xf0, 0x27, 0xa5, - 0x62, 0xef, 0x77, 0xe0, 0xa6, 0x83, 0x3d, 0x1c, 0x8e, 0x04, 0x29, 0xb1, 0x6b, 0x1d, 0x12, 0xb0, - 0x91, 0x3e, 0x66, 0x2f, 0x96, 0x21, 0x4f, 0xaf, 0xef, 0xdf, 0x48, 0xc5, 0x61, 0x82, 0x8f, 0xf2, - 0x2c, 0xb0, 0x23, 0x97, 0xf8, 0x92, 0xfb, 0xf4, 0xf6, 0xe2, 0x0e, 0xe9, 0x16, 0xfb, 0xef, 0x48, - 0x30, 0x5d, 0x47, 0x6e, 0x49, 0xb7, 0x6d, 0x43, 0xdf, 0x1a, 0x95, 0xc7, 0xb7, 0xa8, 0xf7, 0xb0, - 0xfa, 0xdd, 0x8c, 0xe8, 0x79, 0x9a, 0x60, 0x21, 0xdc, 0x67, 0x35, 0x22, 0x96, 0xe0, 0xc3, 0x42, - 0x67, 0x66, 0x06, 0x51, 0x1b, 0x83, 0xc7, 0xb6, 0x04, 0x13, 0xfe, 0x59, 0xbc, 0x9b, 0xb9, 0xf3, - 0x99, 0xdb, 0xee, 0x8e, 0x7f, 0x0c, 0x06, 0x3f, 0xef, 0x3f, 0x03, 0xa6, 0xbe, 0x3a, 0xa1, 0xa3, - 0x7c, 0xfc, 0x41, 0xc2, 0x64, 0x6d, 0x2c, 0x89, 0x3b, 0xfc, 0x61, 0x1d, 0x1d, 0xfc, 0x9d, 0x09, - 0xba, 0x1c, 0xb9, 0xaa, 0xbb, 0xe8, 0x01, 0xf5, 0x0b, 0x32, 0x4c, 0xd4, 0x91, 0xeb, 0x8d, 0xb7, - 0xdc, 0xe5, 0xa6, 0xc3, 0x6a, 0xb8, 0xc2, 0xac, 0x78, 0x4c, 0xd1, 0x35, 0x8c, 0x7b, 0x60, 0xaa, - 0x6b, 0x5b, 0x2d, 0xe4, 0x38, 0x74, 0xf5, 0x82, 0x75, 0x54, 0xeb, 0x37, 0xfa, 0x63, 0xd6, 0xe6, - 0xd7, 0xfd, 0x7f, 0xb4, 0xf0, 0xf7, 0xa4, 0x66, 0x00, 0xa1, 0x44, 0x2b, 0x38, 0x6e, 0x33, 0x20, - 0xae, 0xf0, 0xf4, 0x81, 0xfe, 0xac, 0x0c, 0x33, 0x75, 0xe4, 0x06, 0x52, 0x4c, 0xb0, 0xc9, 0x11, - 0x0d, 0x2f, 0x07, 0xa5, 0x7c, 0x30, 0x28, 0xc5, 0xaf, 0x06, 0xe4, 0xa5, 0x19, 0x10, 0x1b, 0xe3, - 0xd5, 0x80, 0x62, 0x1c, 0x8c, 0xe1, 0xf8, 0xda, 0xa3, 0x61, 0x0a, 0xf3, 0x82, 0x1b, 0xec, 0x2f, - 0x66, 0xc3, 0xc6, 0xfb, 0xc5, 0x94, 0x1a, 0xef, 0x9d, 0x90, 0xdb, 0xd1, 0xed, 0x0b, 0x0e, 0x6e, - 0xb8, 0xd3, 0x22, 0x66, 0xfb, 0x9a, 0x97, 0x5d, 0x23, 0x7f, 0xf5, 0xf7, 0xd3, 0xcc, 0x25, 0xf3, - 0xd3, 0x7c, 0x58, 0x4a, 0x34, 0x12, 0x92, 0xb9, 0xc3, 0x08, 0x9b, 0x7c, 0x82, 0x71, 0x33, 0xa6, - 0xec, 0xf4, 0x95, 0xe3, 0x85, 0x32, 0x4c, 0x7a, 0xe3, 0x36, 0xb6, 0xc7, 0xcf, 0x1d, 0x5c, 0x1d, - 0xfa, 0x1b, 0xfa, 0x09, 0x7b, 0x60, 0x5f, 0x22, 0xa3, 0x33, 0xef, 0x13, 0xf4, 0xc0, 0x71, 0x85, - 0xa7, 0x8f, 0xc7, 0xbb, 0x08, 0x1e, 0xb8, 0x3d, 0xa8, 0x6f, 0x94, 0x41, 0x5e, 0x46, 0xee, 0xb8, - 0xad, 0xc8, 0xb7, 0x0b, 0x87, 0x38, 0xe2, 0x04, 0x86, 0x79, 0x9e, 0x5f, 0x46, 0xa3, 0x69, 0x40, - 0x62, 0xb1, 0x8d, 0x84, 0x18, 0x48, 0x1f, 0xb5, 0xf7, 0x11, 0xd4, 0xc8, 0xe6, 0xc2, 0xcf, 0x8e, - 0xa0, 0x57, 0x1d, 0xef, 0xc2, 0x87, 0x2f, 0x40, 0x4c, 0xe3, 0xb0, 0xda, 0x5b, 0xbf, 0xc2, 0xc7, - 0x72, 0x15, 0x1f, 0x78, 0x8d, 0x7d, 0x1b, 0xb5, 0x2e, 0xa0, 0xb6, 0xfa, 0xd3, 0x07, 0x87, 0xee, - 0x14, 0x4c, 0xb4, 0x08, 0x35, 0x0c, 0xde, 0xa4, 0xe6, 0xbf, 0x26, 0xb8, 0x57, 0x9a, 0xef, 0x88, - 0xc8, 0xef, 0x63, 0xbc, 0x57, 0x5a, 0xa0, 0xf8, 0x31, 0x98, 0x2d, 0x64, 0x96, 0x51, 0x69, 0x59, - 0xa6, 0xfa, 0x5f, 0x0e, 0x0e, 0xcb, 0x55, 0x30, 0x65, 0xb4, 0x2c, 0x13, 0x87, 0xa1, 0xf0, 0x0f, - 0x01, 0x05, 0x09, 0xfe, 0xd7, 0xf2, 0x8e, 0x75, 0xbf, 0x41, 0x77, 0xcd, 0xc3, 0x84, 0x61, 0x8d, - 0x09, 0x8f, 0xf5, 0xc3, 0x32, 0x26, 0xfa, 0x94, 0x9d, 0x3e, 0x64, 0x1f, 0x0f, 0xbd, 0xdb, 0x48, - 0x57, 0xf8, 0x88, 0x58, 0x05, 0x1e, 0x66, 0x38, 0x63, 0x6b, 0x71, 0x28, 0xc3, 0x59, 0x0c, 0x03, - 0x63, 0xb8, 0xb1, 0x22, 0xc4, 0x31, 0xf5, 0x35, 0xe0, 0x03, 0xa0, 0x33, 0x3a, 0xf3, 0x70, 0x48, - 0x74, 0x0e, 0xc7, 0x44, 0xfc, 0x20, 0x0d, 0x91, 0x49, 0x2d, 0x1e, 0xf5, 0xbf, 0x8e, 0x02, 0x9c, - 0xdb, 0x87, 0xf1, 0x57, 0x20, 0xde, 0x0a, 0x09, 0x6e, 0xc4, 0xde, 0x27, 0x41, 0x8f, 0xca, 0x18, - 0xef, 0x8a, 0x17, 0x29, 0x3f, 0x7d, 0x00, 0x5f, 0x20, 0xc3, 0x1c, 0xf6, 0x11, 0xe8, 0x20, 0xdd, - 0x26, 0x1d, 0xe5, 0x48, 0x1c, 0xe5, 0xdf, 0x25, 0x1c, 0xe0, 0x87, 0x97, 0x43, 0xc8, 0xc7, 0x48, - 0xa0, 0x10, 0x8b, 0xee, 0x23, 0xc8, 0xc2, 0x58, 0xb6, 0x51, 0x0a, 0x01, 0x0b, 0x54, 0xc5, 0x47, - 0x83, 0x47, 0x42, 0x8f, 0x5c, 0x5e, 0x18, 0x7e, 0x63, 0x1b, 0xb3, 0x47, 0xae, 0x08, 0x13, 0xe9, - 0x63, 0xf2, 0xc6, 0x5b, 0xe8, 0x82, 0x73, 0x03, 0x5f, 0x18, 0xff, 0xda, 0x6c, 0x70, 0xa2, 0xed, - 0xb3, 0x23, 0xf1, 0xc0, 0x3c, 0x40, 0x40, 0x7c, 0x05, 0xb2, 0xb6, 0x75, 0x91, 0x2c, 0x6d, 0xcd, - 0x6a, 0xf8, 0x99, 0x5c, 0x4f, 0xd9, 0xd9, 0xdd, 0x31, 0xc9, 0xc9, 0xd0, 0x59, 0xcd, 0x7f, 0x55, - 0xae, 0x83, 0xd9, 0x8b, 0x86, 0xbb, 0xbd, 0x82, 0xf4, 0x36, 0xb2, 0x35, 0xeb, 0x22, 0xf6, 0x98, - 0x9b, 0xd4, 0xf8, 0x44, 0xde, 0x7f, 0x45, 0xc0, 0xbe, 0xc4, 0xb7, 0xc8, 0x8f, 0xe5, 0xf8, 0x5b, - 0x12, 0xcb, 0x33, 0x9a, 0xab, 0xf4, 0x15, 0xe6, 0xfd, 0x32, 0x4c, 0x69, 0xd6, 0x45, 0xaa, 0x24, - 0xff, 0xc7, 0xe1, 0xea, 0x48, 0xe2, 0x89, 0x1e, 0x96, 0x5c, 0xc0, 0xfe, 0xd8, 0x27, 0x7a, 0xb1, - 0xc5, 0x8f, 0xe5, 0xe4, 0xd2, 0x8c, 0x66, 0x5d, 0xac, 0x23, 0x97, 0xb4, 0x08, 0xb5, 0x39, 0x22, - 0x27, 0x6b, 0xc3, 0x21, 0x04, 0xe9, 0x3c, 0x3c, 0x78, 0x4f, 0xba, 0x8b, 0x10, 0x08, 0x28, 0x60, - 0x71, 0xdc, 0xbb, 0x08, 0x03, 0x39, 0x18, 0x43, 0x8c, 0x14, 0x19, 0xa6, 0x35, 0xeb, 0xa2, 0x37, - 0x34, 0x2c, 0x19, 0x9d, 0xce, 0x68, 0x46, 0xc8, 0xa4, 0xc6, 0xbf, 0x2f, 0x06, 0x9f, 0x8b, 0xb1, - 0x1b, 0xff, 0x03, 0x18, 0x48, 0x1f, 0x86, 0xe7, 0x92, 0xc6, 0xe2, 0x8f, 0xd0, 0xe6, 0x68, 0x70, - 0x18, 0xb6, 0x41, 0x04, 0x6c, 0x1c, 0x5a, 0x83, 0x88, 0xe2, 0x60, 0x2c, 0x3b, 0x27, 0x73, 0x25, - 0x3c, 0xcc, 0x8f, 0xb6, 0x4d, 0xbc, 0x27, 0x99, 0x6b, 0x22, 0x1d, 0x76, 0x39, 0x46, 0x46, 0x82, - 0x46, 0x02, 0x17, 0x44, 0x01, 0x1e, 0xd2, 0xc7, 0xe3, 0x23, 0x32, 0xcc, 0x10, 0x16, 0x1e, 0x21, - 0x56, 0xc0, 0x50, 0x8d, 0x8a, 0xad, 0xc1, 0xe1, 0x34, 0xaa, 0x18, 0x0e, 0xc6, 0x72, 0x2b, 0xa8, - 0x67, 0xc7, 0x0d, 0x71, 0x7c, 0x3c, 0x0a, 0xc1, 0xa1, 0x8d, 0xb1, 0x11, 0x1e, 0x21, 0x1f, 0xc6, - 0x18, 0x3b, 0xa4, 0x63, 0xe4, 0xcf, 0x0d, 0x5a, 0xd1, 0x28, 0x31, 0x38, 0x40, 0x53, 0x18, 0x21, - 0x0c, 0x43, 0x36, 0x85, 0x43, 0x42, 0xe2, 0xab, 0x32, 0x00, 0x61, 0x60, 0xcd, 0xda, 0xc3, 0x97, - 0xf9, 0x8c, 0xa0, 0x3b, 0xeb, 0x75, 0xab, 0x97, 0x07, 0xb8, 0xd5, 0x27, 0x0c, 0xe1, 0x92, 0x74, - 0x25, 0x90, 0x91, 0xb2, 0x57, 0xc9, 0xb1, 0xaf, 0x04, 0xc6, 0x97, 0x9f, 0x3e, 0xc6, 0x5f, 0x26, - 0xd6, 0x5c, 0x78, 0xc0, 0xf4, 0x65, 0x23, 0x41, 0x99, 0x99, 0xfd, 0xcb, 0xfc, 0xec, 0xff, 0x00, - 0xd8, 0x0e, 0x6b, 0x23, 0x0e, 0x3a, 0x38, 0x9a, 0xbe, 0x8d, 0x78, 0x78, 0x07, 0x44, 0x7f, 0x36, - 0x0b, 0x47, 0x69, 0x27, 0xf2, 0xc3, 0x00, 0x71, 0xc2, 0x73, 0x78, 0x5c, 0x27, 0x39, 0x00, 0xe5, - 0x51, 0x2d, 0x48, 0x25, 0x59, 0xca, 0x14, 0x60, 0x6f, 0x2c, 0xab, 0x1b, 0xf9, 0xf2, 0x03, 0x5d, - 0xdd, 0x6c, 0x8b, 0x87, 0xfb, 0x1d, 0x00, 0xbc, 0xbf, 0xd6, 0x28, 0xf3, 0x6b, 0x8d, 0x7d, 0x56, - 0x26, 0x13, 0xef, 0x5c, 0x63, 0x91, 0x11, 0x76, 0xc7, 0xbe, 0x73, 0x1d, 0x5d, 0x76, 0xfa, 0x28, - 0xbd, 0x47, 0x86, 0x6c, 0xdd, 0xb2, 0x5d, 0xf5, 0x79, 0x49, 0x5a, 0x27, 0x91, 0x7c, 0x08, 0x92, - 0xff, 0xae, 0x94, 0xb8, 0x5b, 0x9a, 0x6f, 0x8e, 0x3f, 0xea, 0xac, 0xbb, 0x3a, 0xf6, 0xea, 0xf6, - 0xca, 0x67, 0xae, 0x6b, 0x4e, 0x1a, 0x4f, 0x87, 0xc8, 0xaf, 0x1e, 0x7d, 0x00, 0x23, 0xb5, 0x78, - 0x3a, 0x91, 0x25, 0xa7, 0x8f, 0xdb, 0x43, 0x47, 0xa9, 0x6f, 0xeb, 0x92, 0xd1, 0x41, 0xea, 0xf3, - 0x88, 0xcb, 0x48, 0x55, 0xdf, 0x41, 0xe2, 0x47, 0x62, 0x62, 0x5d, 0x5b, 0x71, 0x7c, 0x59, 0x39, - 0x8c, 0x2f, 0x9b, 0xb4, 0x41, 0x91, 0x03, 0xe8, 0x84, 0xa5, 0x71, 0x37, 0xa8, 0x98, 0xb2, 0xc7, - 0x12, 0xa7, 0xf3, 0x58, 0x1d, 0xb9, 0xc4, 0xa8, 0xac, 0xf9, 0x37, 0xb0, 0xfc, 0xcc, 0x48, 0x22, - 0x76, 0x06, 0x17, 0xbc, 0xc8, 0x3d, 0x17, 0xbc, 0xbc, 0x9f, 0x05, 0x67, 0x8d, 0x07, 0xe7, 0x27, - 0xa3, 0x05, 0xc4, 0x33, 0x39, 0x12, 0x98, 0xde, 0x1e, 0xc0, 0xb4, 0xce, 0xc1, 0x74, 0xc7, 0x90, - 0x5c, 0xa4, 0x0f, 0xd8, 0x2f, 0xe7, 0xe0, 0x28, 0x99, 0xf4, 0x17, 0xcd, 0x36, 0x8d, 0xb0, 0xfa, - 0x16, 0xe9, 0x90, 0x37, 0xdb, 0xf6, 0x87, 0x60, 0xe5, 0x62, 0x39, 0xe7, 0x7a, 0x6f, 0xc7, 0x5f, - 0x20, 0xe1, 0x5c, 0xbd, 0x4e, 0x14, 0xef, 0xb4, 0x89, 0xdf, 0x90, 0x1f, 0xfc, 0xc7, 0xdf, 0x65, - 0x34, 0x21, 0x7e, 0x97, 0xd1, 0x9f, 0x26, 0x5b, 0xb7, 0xc3, 0x45, 0xf7, 0x08, 0x3c, 0x65, 0xdb, - 0x29, 0xc1, 0x8a, 0x9e, 0x00, 0x77, 0x3f, 0x1a, 0xee, 0x64, 0x61, 0x04, 0x91, 0x21, 0xdd, 0xc9, - 0x30, 0x81, 0xc3, 0x74, 0x27, 0x1b, 0xc4, 0xc0, 0x18, 0x6e, 0xb5, 0xcf, 0xd1, 0xdd, 0x7c, 0xdc, - 0x6e, 0xd4, 0xbf, 0x96, 0x52, 0x1f, 0xa5, 0xbf, 0x97, 0x49, 0xe4, 0xff, 0x8c, 0xf9, 0x8a, 0x1f, - 0xa6, 0x93, 0x78, 0x34, 0xc7, 0x91, 0x1b, 0xc3, 0xba, 0x91, 0x84, 0x7d, 0xd1, 0xcf, 0x19, 0x6d, - 0x77, 0x7b, 0x44, 0x27, 0x3a, 0x2e, 0x7a, 0xb4, 0xfc, 0xeb, 0x91, 0xf1, 0x8b, 0xfa, 0x6f, 0x99, - 0x44, 0x21, 0xa4, 0x02, 0x91, 0x60, 0xb6, 0x22, 0x44, 0x9c, 0x20, 0xf0, 0x53, 0x2c, 0xbd, 0x31, - 0x6a, 0xf4, 0x59, 0xa3, 0x8d, 0xac, 0x47, 0xa0, 0x46, 0x63, 0xbe, 0x46, 0xa7, 0xd1, 0x71, 0xe4, - 0x7e, 0x44, 0x35, 0x3a, 0x10, 0xc9, 0x88, 0x34, 0x3a, 0x96, 0x5e, 0xfa, 0x32, 0x7e, 0xf5, 0x0c, - 0x9d, 0x48, 0xad, 0x1a, 0xe6, 0x05, 0xf5, 0x5f, 0xf2, 0xfe, 0xc5, 0xcc, 0xe7, 0x0c, 0x77, 0x9b, - 0xc6, 0x82, 0xf9, 0x3d, 0xe1, 0xbb, 0x51, 0x86, 0x88, 0xf7, 0xc2, 0x87, 0x93, 0xca, 0xed, 0x0b, - 0x27, 0x55, 0x84, 0x59, 0xc3, 0x74, 0x91, 0x6d, 0xea, 0x9d, 0xa5, 0x8e, 0xbe, 0xe5, 0x9c, 0x9a, - 0xe8, 0x7b, 0x79, 0x5d, 0x85, 0xc9, 0xa3, 0xf1, 0x7f, 0xb0, 0xd7, 0x57, 0x4e, 0xf2, 0xd7, 0x57, - 0x46, 0x44, 0xbf, 0x9a, 0x8a, 0x8e, 0x7e, 0x15, 0x44, 0xb7, 0x82, 0xc1, 0xc1, 0xb1, 0x45, 0x6d, - 0xe3, 0x84, 0xe1, 0xfe, 0x6e, 0x16, 0x8c, 0xc2, 0x16, 0x84, 0x7e, 0x7c, 0x9d, 0x9c, 0x68, 0x75, - 0xcf, 0x53, 0x84, 0xf9, 0x5e, 0x25, 0x48, 0x6c, 0xa1, 0xb2, 0x95, 0x97, 0x7b, 0x2a, 0x1f, 0x98, - 0x3c, 0x59, 0x01, 0x93, 0x87, 0x55, 0xaa, 0x9c, 0x98, 0x52, 0x25, 0x59, 0x2c, 0x14, 0xa9, 0xed, - 0x18, 0x4e, 0x23, 0xe5, 0xe0, 0x98, 0x1f, 0xed, 0xb6, 0xdb, 0x45, 0xba, 0xad, 0x9b, 0x2d, 0xa4, - 0x7e, 0x5c, 0x1a, 0x85, 0xd9, 0xbb, 0x04, 0x93, 0x46, 0xcb, 0x32, 0xeb, 0xc6, 0x33, 0xfd, 0xcb, - 0xe5, 0xe2, 0x83, 0xac, 0x63, 0x89, 0x54, 0xe8, 0x1f, 0x5a, 0xf0, 0xaf, 0x52, 0x81, 0xa9, 0x96, - 0x6e, 0xb7, 0x49, 0x10, 0xbe, 0x5c, 0xcf, 0x45, 0x4e, 0x91, 0x84, 0x4a, 0xfe, 0x2f, 0x5a, 0xf8, - 0xb7, 0x52, 0xe3, 0x85, 0x98, 0xef, 0x89, 0xe6, 0x11, 0x49, 0x6c, 0x31, 0xfc, 0x89, 0x93, 0xb9, - 0x27, 0x1d, 0x1b, 0x75, 0xf0, 0x1d, 0xf4, 0xa4, 0x87, 0x98, 0xd2, 0xc2, 0x84, 0xa4, 0xcb, 0x03, - 0xb8, 0xa8, 0x7d, 0x68, 0x8c, 0x7b, 0x79, 0x40, 0x88, 0x8b, 0xf4, 0x35, 0xf3, 0x9d, 0x79, 0x98, - 0x25, 0xbd, 0x1a, 0x15, 0xa7, 0xfa, 0x02, 0x7c, 0x85, 0xb4, 0x7b, 0x2f, 0xba, 0xa4, 0xd6, 0x0f, - 0x3e, 0x26, 0x17, 0x40, 0xbe, 0x10, 0x04, 0x1c, 0xf4, 0x1e, 0x93, 0xee, 0xdb, 0xfb, 0x7c, 0xcd, - 0x13, 0x9e, 0xc6, 0xbd, 0x6f, 0x1f, 0x5f, 0x7c, 0xfa, 0xf8, 0xfc, 0x8a, 0x0c, 0x72, 0xb1, 0xdd, - 0x56, 0x5b, 0x07, 0x87, 0xe2, 0x1a, 0x98, 0xf6, 0xdb, 0x4c, 0x18, 0x03, 0x92, 0x4d, 0x4a, 0xba, - 0x08, 0x1a, 0xc8, 0xa6, 0xd8, 0x1e, 0xfb, 0xae, 0x42, 0x4c, 0xd9, 0xe9, 0x83, 0xf2, 0xb2, 0x09, - 0xda, 0x68, 0x16, 0x2c, 0xeb, 0x02, 0x3e, 0x2a, 0xf3, 0x3c, 0x19, 0x72, 0x4b, 0xc8, 0x6d, 0x6d, - 0x8f, 0xa8, 0xcd, 0xec, 0xda, 0x1d, 0xbf, 0xcd, 0xec, 0xbb, 0x0f, 0x7f, 0xb0, 0x0d, 0xeb, 0xb3, - 0x35, 0x8f, 0x59, 0x1a, 0x77, 0x74, 0xe7, 0xd8, 0xd2, 0xd3, 0x07, 0xe7, 0xdf, 0x64, 0x98, 0x0b, - 0x56, 0xb8, 0x08, 0x26, 0xbf, 0x9c, 0x79, 0xa4, 0xad, 0x77, 0xaa, 0x9f, 0x4f, 0x16, 0x22, 0x2d, - 0x90, 0x29, 0x5f, 0xb3, 0x94, 0x17, 0x16, 0x13, 0x04, 0x4f, 0x13, 0x63, 0x70, 0x0c, 0x33, 0x78, - 0x19, 0x26, 0x31, 0x43, 0x8b, 0xc6, 0x1e, 0x76, 0x1d, 0xe4, 0x16, 0x1a, 0x9f, 0x35, 0x92, 0x85, - 0xc6, 0x3b, 0xf8, 0x85, 0x46, 0xc1, 0x88, 0xc7, 0xfe, 0x3a, 0x63, 0x42, 0x5f, 0x1a, 0xef, 0xff, - 0x91, 0x2f, 0x33, 0x26, 0xf0, 0xa5, 0x19, 0x50, 0x7e, 0xfa, 0x88, 0xbe, 0xee, 0x3f, 0xd1, 0xce, - 0xd6, 0xdf, 0x50, 0x55, 0xff, 0xaf, 0x63, 0x90, 0x3d, 0xeb, 0x3d, 0xfc, 0x8f, 0xf0, 0x46, 0xac, - 0x97, 0x8f, 0x20, 0x38, 0xc3, 0x53, 0x21, 0xeb, 0xd1, 0xa7, 0xd3, 0x96, 0x1b, 0xc5, 0x76, 0x77, - 0x3d, 0x46, 0x34, 0xfc, 0x9f, 0x72, 0x12, 0xf2, 0x8e, 0xb5, 0x6b, 0xb7, 0x3c, 0xf3, 0xd9, 0xd3, - 0x18, 0xfa, 0x96, 0x34, 0x28, 0x29, 0x47, 0x7a, 0x7e, 0x74, 0x2e, 0xa3, 0xcc, 0x05, 0x49, 0x32, - 0x77, 0x41, 0x52, 0x82, 0xfd, 0x03, 0x01, 0xde, 0xd2, 0xd7, 0x88, 0xbf, 0xc6, 0x77, 0x05, 0xb6, - 0x47, 0x05, 0x7b, 0x84, 0x58, 0x0e, 0xaa, 0x0e, 0x49, 0x1d, 0xbe, 0x79, 0xd1, 0x06, 0x71, 0xe0, - 0xc7, 0xea, 0xf0, 0x2d, 0xc0, 0xc3, 0x58, 0x4e, 0xa9, 0xe7, 0xa9, 0x93, 0xea, 0x7d, 0xa3, 0x44, - 0x37, 0xcb, 0x29, 0xfd, 0x81, 0xd0, 0x19, 0xa1, 0xf3, 0xea, 0xd0, 0xe8, 0x1c, 0x92, 0xfb, 0xea, - 0x1f, 0xc8, 0x38, 0x12, 0xa6, 0x6f, 0xe4, 0x88, 0x5f, 0x74, 0x94, 0x18, 0x22, 0x6f, 0x0c, 0xe6, - 0xe2, 0x40, 0xcf, 0x0e, 0x1f, 0x1a, 0x9c, 0x17, 0x1d, 0xc3, 0xff, 0xb8, 0x43, 0x83, 0x8b, 0x32, - 0x92, 0x3e, 0x90, 0xbf, 0x41, 0x2e, 0x16, 0x2b, 0xb6, 0x5c, 0x63, 0x6f, 0xc4, 0x2d, 0x8d, 0x1f, - 0x5e, 0x12, 0x46, 0x03, 0xde, 0x27, 0x21, 0xc2, 0xe1, 0xb8, 0xa3, 0x01, 0x8b, 0xb1, 0x91, 0x3e, - 0x4c, 0x7f, 0x97, 0xf7, 0xa4, 0x47, 0xd7, 0x66, 0xde, 0x48, 0x57, 0x03, 0xd0, 0xc1, 0xd1, 0x3a, - 0x03, 0x33, 0xcc, 0xd4, 0xdf, 0xbf, 0xb0, 0x86, 0x4b, 0x4b, 0x7a, 0xd0, 0x3d, 0x10, 0xd9, 0xc8, - 0x17, 0x06, 0x12, 0x2c, 0xf8, 0x8a, 0x30, 0x31, 0x96, 0xfb, 0xe0, 0xfc, 0x31, 0x6c, 0x4c, 0x58, - 0xfd, 0x1e, 0x8b, 0x55, 0x8d, 0xc7, 0xea, 0x36, 0x11, 0x31, 0x89, 0x8d, 0x69, 0x42, 0xf3, 0xc6, - 0x77, 0x04, 0x70, 0x69, 0x1c, 0x5c, 0x4f, 0x1d, 0x9a, 0x8f, 0xf4, 0x11, 0x7b, 0x05, 0xe9, 0x0e, - 0xeb, 0xc4, 0x64, 0x1f, 0x4d, 0x77, 0x48, 0x67, 0x03, 0x32, 0x37, 0x1b, 0x48, 0xe8, 0x6f, 0x1f, - 0xba, 0x91, 0xfa, 0xcc, 0x0d, 0x82, 0x28, 0x3b, 0x62, 0x7f, 0xfb, 0x81, 0x1c, 0xa4, 0x0f, 0xce, - 0x3f, 0xc9, 0x00, 0xcb, 0xb6, 0xb5, 0xdb, 0xad, 0xd9, 0x6d, 0x64, 0xab, 0x7f, 0x1b, 0x4e, 0x00, - 0x5e, 0x32, 0x82, 0x09, 0xc0, 0x3a, 0xc0, 0x56, 0x40, 0x9c, 0x6a, 0xf8, 0x2d, 0x62, 0xe6, 0x7e, - 0xc8, 0x94, 0xc6, 0xd0, 0xe0, 0xaf, 0x9c, 0x7d, 0x1a, 0x8f, 0x71, 0x5c, 0x9f, 0x15, 0x92, 0x1b, - 0xe5, 0x04, 0xe0, 0x5d, 0x01, 0xd6, 0x0d, 0x0e, 0xeb, 0xbb, 0x0f, 0xc0, 0x49, 0xfa, 0x98, 0xff, - 0xf3, 0x04, 0x4c, 0x93, 0xed, 0x3a, 0x22, 0xd3, 0x7f, 0x08, 0x41, 0x7f, 0xd9, 0x08, 0x40, 0xdf, - 0x80, 0x19, 0x2b, 0xa4, 0x4e, 0xfa, 0x54, 0x76, 0x01, 0x26, 0x16, 0x76, 0x86, 0x2f, 0x8d, 0x23, - 0xa3, 0x7e, 0x94, 0x45, 0x5e, 0xe3, 0x91, 0xbf, 0x23, 0x46, 0xde, 0x0c, 0xc5, 0x51, 0x42, 0xff, - 0xee, 0x00, 0xfa, 0x0d, 0x0e, 0xfa, 0xe2, 0x41, 0x58, 0x19, 0x43, 0xb8, 0x7d, 0x19, 0xb2, 0xf8, - 0x74, 0xdc, 0x6f, 0xa6, 0x38, 0xbf, 0x3f, 0x05, 0x13, 0xb8, 0xc9, 0x06, 0xf3, 0x0e, 0xff, 0xd5, - 0xfb, 0xa2, 0x6f, 0xba, 0xc8, 0x0e, 0x3c, 0x16, 0xfc, 0x57, 0x8f, 0x07, 0xdf, 0x2b, 0xd9, 0x39, - 0x95, 0x27, 0x1b, 0x91, 0x41, 0xc2, 0xd0, 0x93, 0x12, 0x56, 0xe2, 0x23, 0x3b, 0x2f, 0x37, 0xcc, - 0xa4, 0x64, 0x00, 0x23, 0xe9, 0x03, 0xff, 0x97, 0x59, 0x38, 0x45, 0x56, 0x95, 0x96, 0x6c, 0x6b, - 0xa7, 0xe7, 0x76, 0x2b, 0xe3, 0xe0, 0xba, 0x70, 0x3d, 0xcc, 0xb9, 0x9c, 0x3f, 0x36, 0xd5, 0x89, - 0x9e, 0x54, 0xf5, 0xcf, 0x58, 0x9f, 0x8a, 0xa7, 0xf3, 0x48, 0x2e, 0xc4, 0x08, 0x30, 0x8a, 0xf7, - 0xc4, 0x0b, 0xf5, 0x82, 0x8c, 0x32, 0x8b, 0x54, 0xf2, 0x50, 0x6b, 0x96, 0x81, 0x4e, 0xe5, 0x44, - 0x74, 0xea, 0x03, 0x81, 0x4e, 0xfd, 0x34, 0xa7, 0x53, 0xcb, 0x07, 0x17, 0x49, 0xfa, 0xba, 0xf5, - 0xda, 0x60, 0x63, 0x28, 0xd8, 0xb6, 0xdb, 0x49, 0x61, 0xb3, 0x8e, 0xf5, 0x47, 0xca, 0x72, 0xfe, - 0x48, 0xfc, 0x7d, 0x14, 0x09, 0x66, 0xc2, 0x3c, 0xd7, 0x11, 0xba, 0x34, 0x07, 0x92, 0xe1, 0x73, - 0x27, 0x19, 0xed, 0xa1, 0xe6, 0xba, 0xb1, 0x05, 0x8d, 0x61, 0x6d, 0x69, 0x0e, 0xf2, 0x4b, 0x46, - 0xc7, 0x45, 0xb6, 0xfa, 0x65, 0x3a, 0xd3, 0x7d, 0x6d, 0x8a, 0x03, 0xc0, 0x22, 0xe4, 0x37, 0x71, - 0x69, 0xd4, 0x64, 0xbe, 0x49, 0xac, 0xf5, 0x10, 0x0e, 0x35, 0xfa, 0x6f, 0xd2, 0xe8, 0x7c, 0x3d, - 0x64, 0x46, 0x36, 0x45, 0x4e, 0x10, 0x9d, 0x6f, 0x30, 0x0b, 0x63, 0xb9, 0x98, 0x2a, 0xaf, 0xa1, - 0x1d, 0x6f, 0x8c, 0xbf, 0x90, 0x1e, 0xc2, 0x05, 0x90, 0x8d, 0xb6, 0x83, 0x3b, 0xc7, 0x29, 0xcd, - 0x7b, 0x4c, 0xea, 0x2b, 0xd4, 0x2b, 0x2a, 0xc2, 0xf2, 0xb8, 0x7d, 0x85, 0x84, 0xb8, 0x48, 0x1f, - 0xb3, 0xef, 0x61, 0x47, 0xd1, 0x6e, 0x47, 0x6f, 0x21, 0x8f, 0xfb, 0xd4, 0x50, 0x23, 0x3d, 0x59, - 0xd6, 0xef, 0xc9, 0x98, 0x76, 0x9a, 0x3b, 0x40, 0x3b, 0x1d, 0x76, 0x19, 0x32, 0x90, 0x39, 0xae, - 0xf8, 0xa1, 0x2d, 0x43, 0xc6, 0xb2, 0x31, 0x86, 0x6b, 0x47, 0xfd, 0x83, 0xb4, 0x63, 0x6d, 0xad, - 0xc3, 0x6e, 0xd2, 0x50, 0x61, 0x8d, 0xec, 0xd0, 0xec, 0x30, 0x9b, 0x34, 0xd1, 0x3c, 0x8c, 0x01, - 0xad, 0x39, 0x8a, 0xd6, 0xe7, 0xe8, 0x30, 0x9a, 0xf2, 0x3e, 0xa9, 0x63, 0xd9, 0x6e, 0xb2, 0x7d, - 0x52, 0x8f, 0x3b, 0x0d, 0xff, 0x97, 0xf4, 0xe0, 0x15, 0x7f, 0xae, 0x7a, 0x54, 0xc3, 0x67, 0x82, - 0x83, 0x57, 0x83, 0x18, 0x48, 0x1f, 0xde, 0xb7, 0x1e, 0xd2, 0xe0, 0x39, 0x6c, 0x73, 0xa4, 0x6d, - 0x60, 0x64, 0x43, 0xe7, 0x30, 0xcd, 0x31, 0x9a, 0x87, 0xf4, 0xf1, 0xfa, 0x36, 0x33, 0x70, 0xbe, - 0x79, 0x8c, 0x03, 0xa7, 0xdf, 0x32, 0x73, 0x43, 0xb6, 0xcc, 0x61, 0xf7, 0x7f, 0xa8, 0xac, 0x47, - 0x37, 0x60, 0x0e, 0xb3, 0xff, 0x13, 0xc3, 0x44, 0xfa, 0x88, 0xbf, 0x45, 0x86, 0x5c, 0x7d, 0xfc, - 0xe3, 0xe5, 0xb0, 0x73, 0x11, 0x2c, 0xab, 0xfa, 0xc8, 0x86, 0xcb, 0x61, 0xe6, 0x22, 0x91, 0x2c, - 0x8c, 0x21, 0xf0, 0xfe, 0x51, 0x98, 0xc1, 0x4b, 0x22, 0xfe, 0x36, 0xeb, 0xb7, 0xe9, 0xa8, 0xf9, - 0x70, 0x8a, 0x6d, 0xf5, 0x1e, 0x98, 0xf4, 0xf7, 0xef, 0xe8, 0xc8, 0x39, 0x2f, 0xd6, 0x3e, 0x7d, - 0x2e, 0xb5, 0xe0, 0xff, 0x03, 0x39, 0x43, 0x8c, 0x7c, 0xaf, 0x76, 0x58, 0x67, 0x88, 0x43, 0xdd, - 0xaf, 0xfd, 0xd3, 0x70, 0x44, 0xfd, 0x2f, 0xe9, 0x61, 0xde, 0xbb, 0x8f, 0x9b, 0xed, 0xb3, 0x8f, - 0xfb, 0x71, 0x16, 0xcb, 0x3a, 0x8f, 0xe5, 0x9d, 0xa2, 0x22, 0x1c, 0xe1, 0x58, 0xfb, 0x9e, 0x00, - 0xce, 0xb3, 0x1c, 0x9c, 0x0b, 0x07, 0xe2, 0x65, 0x0c, 0x07, 0x1f, 0xb3, 0xe1, 0x98, 0xfb, 0x89, - 0x14, 0xdb, 0x71, 0xcf, 0xa9, 0x8a, 0xec, 0xbe, 0x53, 0x15, 0x5c, 0x4b, 0xcf, 0x1d, 0xb0, 0xa5, - 0x7f, 0x82, 0xd5, 0x8e, 0x06, 0xaf, 0x1d, 0x4f, 0x15, 0x47, 0x64, 0x74, 0x23, 0xf3, 0x7b, 0x03, - 0xf5, 0x38, 0xc7, 0xa9, 0x47, 0xe9, 0x60, 0xcc, 0xa4, 0xaf, 0x1f, 0x7f, 0xe8, 0x4f, 0x68, 0x0f, - 0xb9, 0xbd, 0x0f, 0xbb, 0x55, 0xcc, 0x09, 0x71, 0x64, 0x23, 0xf7, 0x30, 0x5b, 0xc5, 0x83, 0x38, - 0x19, 0x43, 0x2c, 0xb6, 0x59, 0x98, 0xc6, 0x3c, 0x9d, 0x33, 0xda, 0x5b, 0xc8, 0x55, 0x5f, 0x47, - 0x7c, 0x14, 0xfd, 0xc8, 0x97, 0x23, 0x0a, 0x4f, 0x14, 0x75, 0xde, 0x35, 0xa9, 0x47, 0x07, 0x61, - 0x72, 0x9e, 0x61, 0x70, 0xdc, 0x11, 0x14, 0x07, 0x72, 0x90, 0x3e, 0x64, 0x1f, 0x25, 0xee, 0x36, - 0xab, 0xfa, 0x25, 0x6b, 0xd7, 0x55, 0x1f, 0x1c, 0x41, 0x07, 0xbd, 0x00, 0xf9, 0x0e, 0xa6, 0x46, - 0x8f, 0x65, 0xc4, 0x4f, 0x77, 0xa8, 0x08, 0x48, 0xf9, 0x1a, 0xfd, 0x33, 0xe9, 0xd9, 0x8c, 0x50, - 0x8e, 0x84, 0xce, 0xb8, 0xcf, 0x66, 0x0c, 0x28, 0x7f, 0x2c, 0x77, 0xec, 0x4c, 0x7a, 0xa5, 0x1b, - 0x3b, 0x86, 0x3b, 0xa2, 0x08, 0x0e, 0x1d, 0x8f, 0x96, 0x1f, 0xc1, 0x01, 0xbf, 0x24, 0x3d, 0x31, - 0xca, 0x48, 0xc5, 0xfb, 0x7d, 0xdc, 0x27, 0x46, 0xe3, 0x8b, 0x4f, 0x1f, 0x93, 0x5f, 0x23, 0x2d, - 0xeb, 0x2c, 0x71, 0xbe, 0x4d, 0xd1, 0xaf, 0x77, 0xe8, 0xc6, 0x42, 0x58, 0x3b, 0xbc, 0xc6, 0xd2, - 0xb7, 0xfc, 0xf4, 0x81, 0xf9, 0x6f, 0x3f, 0x0e, 0xb9, 0x45, 0x74, 0x7e, 0x77, 0x4b, 0xbd, 0x03, - 0x26, 0x1b, 0x36, 0x42, 0x15, 0x73, 0xd3, 0xf2, 0xa4, 0xeb, 0x7a, 0xcf, 0x3e, 0x24, 0xf4, 0xcd, - 0xc3, 0x63, 0x1b, 0xe9, 0xed, 0xf0, 0xfc, 0x99, 0xff, 0xaa, 0xbe, 0x5c, 0x82, 0x6c, 0xdd, 0xd5, - 0x5d, 0x75, 0x2a, 0xc0, 0x56, 0x7d, 0x90, 0xc5, 0xe2, 0x0e, 0x1e, 0x8b, 0xeb, 0x39, 0x59, 0x60, - 0x0e, 0xe6, 0xbd, 0xff, 0x23, 0x00, 0x50, 0x61, 0xf2, 0x7e, 0xc7, 0x32, 0xbd, 0x1c, 0xfe, 0x11, - 0x48, 0xff, 0x5d, 0x7d, 0x4d, 0x20, 0xee, 0xbb, 0x38, 0x71, 0x3f, 0x56, 0xac, 0x88, 0x31, 0xac, - 0xb4, 0x49, 0x30, 0xe5, 0x89, 0x76, 0x05, 0xe9, 0x6d, 0x47, 0xfd, 0xb1, 0x50, 0xf9, 0x23, 0xc4, - 0xac, 0x7e, 0x50, 0x38, 0x18, 0x27, 0xa9, 0x55, 0x40, 0x3c, 0xda, 0xa3, 0xc3, 0xdf, 0xfc, 0x97, - 0xf8, 0x60, 0x24, 0x37, 0x43, 0xd6, 0x30, 0x37, 0x2d, 0xea, 0x5f, 0x78, 0x65, 0x04, 0x6d, 0x4f, - 0x27, 0x34, 0x9c, 0x51, 0x30, 0x52, 0x67, 0x3c, 0x5b, 0x63, 0xb9, 0xf4, 0x2e, 0xeb, 0x95, 0xae, - 0xfe, 0xef, 0x03, 0x85, 0xad, 0x28, 0x90, 0xed, 0xea, 0xee, 0x36, 0x2d, 0x1a, 0x3f, 0x7b, 0x36, - 0xf2, 0xae, 0xa9, 0x9b, 0x96, 0x79, 0x69, 0xc7, 0x78, 0x66, 0x70, 0xb7, 0x2e, 0x97, 0xe6, 0x71, - 0xbe, 0x85, 0x4c, 0x64, 0xeb, 0x2e, 0xaa, 0xef, 0x6d, 0xe1, 0x39, 0xd6, 0xa4, 0xc6, 0x26, 0x25, - 0xd6, 0x7f, 0x8f, 0xe3, 0x68, 0xfd, 0xdf, 0x34, 0x3a, 0x08, 0x47, 0x6a, 0xa2, 0xfa, 0xef, 0xbf, - 0x27, 0xd2, 0xff, 0x3e, 0x45, 0xa4, 0x8f, 0xc6, 0xbf, 0x4b, 0x30, 0x53, 0xf7, 0x14, 0xae, 0xbe, - 0xbb, 0xb3, 0xa3, 0xdb, 0x97, 0xd4, 0x6b, 0x43, 0x54, 0x18, 0xd5, 0xcc, 0xf0, 0x7e, 0x29, 0x7f, - 0x20, 0x7c, 0xad, 0x34, 0x6d, 0xda, 0x4c, 0x09, 0x89, 0xdb, 0xc1, 0xe3, 0x21, 0xe7, 0xa9, 0xb7, - 0xef, 0x71, 0x19, 0xdb, 0x10, 0x48, 0x4e, 0xc1, 0x88, 0x56, 0x03, 0x79, 0x1b, 0x43, 0x34, 0x0d, - 0x09, 0x8e, 0xd6, 0x5d, 0xbd, 0x75, 0x61, 0xd9, 0xb2, 0xad, 0x5d, 0xd7, 0x30, 0x91, 0xa3, 0x3e, - 0x2a, 0x44, 0xc0, 0xd7, 0xff, 0x4c, 0xa8, 0xff, 0xea, 0x0f, 0x32, 0xa2, 0xa3, 0x68, 0xd0, 0xad, - 0xb2, 0xe4, 0x23, 0x02, 0x54, 0x89, 0x8d, 0x8b, 0x22, 0x14, 0xd3, 0x17, 0xda, 0x9b, 0x65, 0x28, - 0x94, 0x1f, 0xe8, 0x5a, 0xb6, 0xbb, 0x6a, 0xb5, 0xf4, 0x8e, 0xe3, 0x5a, 0x36, 0x52, 0x6b, 0xb1, - 0x52, 0xf3, 0x7a, 0x98, 0xb6, 0xd5, 0x0a, 0x07, 0x47, 0xfa, 0xc6, 0xaa, 0x9d, 0xcc, 0xeb, 0xf8, - 0x47, 0x85, 0x77, 0x19, 0x89, 0x54, 0x7a, 0x39, 0x8a, 0xd0, 0xf3, 0x7e, 0x5d, 0x5a, 0xb2, 0xc3, - 0x12, 0x62, 0x3b, 0x8f, 0x42, 0x4c, 0x8d, 0x61, 0xa9, 0x5c, 0x82, 0xd9, 0xfa, 0xee, 0xf9, 0x80, - 0x88, 0xc3, 0x1a, 0x21, 0xaf, 0x17, 0x8e, 0x52, 0x41, 0x15, 0x8f, 0x25, 0x14, 0x21, 0xdf, 0xeb, - 0x60, 0xd6, 0x61, 0xb3, 0x51, 0xbc, 0xf9, 0x44, 0xc1, 0xe8, 0x14, 0x83, 0x4b, 0x4d, 0x5f, 0x80, - 0xef, 0x95, 0x60, 0xb6, 0xd6, 0x45, 0x26, 0x6a, 0x13, 0x2f, 0x48, 0x4e, 0x80, 0x2f, 0x4f, 0x28, - 0x40, 0x8e, 0x50, 0x84, 0x00, 0x43, 0x8f, 0xe5, 0x45, 0x5f, 0x78, 0x61, 0x42, 0x22, 0xc1, 0xc5, - 0x95, 0x96, 0xbe, 0xe0, 0xbe, 0x24, 0xc1, 0xb4, 0xb6, 0x6b, 0xae, 0xdb, 0x96, 0x37, 0x1a, 0xdb, - 0xea, 0x9d, 0x61, 0x07, 0x71, 0x13, 0x1c, 0x6b, 0xef, 0xda, 0x78, 0xfd, 0xa9, 0x62, 0xd6, 0x51, - 0xcb, 0x32, 0xdb, 0x0e, 0xae, 0x47, 0x4e, 0xdb, 0xff, 0xe1, 0xf6, 0xec, 0xf3, 0xbe, 0x21, 0x67, - 0xd4, 0x17, 0x08, 0x87, 0xba, 0x21, 0x95, 0x67, 0x8a, 0x16, 0xef, 0x09, 0x04, 0x03, 0xda, 0x0c, - 0x2a, 0x21, 0x7d, 0xe1, 0x7e, 0x4e, 0x02, 0xa5, 0xd8, 0x6a, 0x59, 0xbb, 0xa6, 0x5b, 0x47, 0x1d, - 0xd4, 0x72, 0x1b, 0xb6, 0xde, 0x42, 0xac, 0xfd, 0x5c, 0x00, 0xb9, 0x6d, 0xd8, 0xb4, 0x0f, 0xf6, - 0x1e, 0xa9, 0x1c, 0x5f, 0x2e, 0xbc, 0xe3, 0x48, 0x6a, 0xb9, 0xbf, 0x94, 0x04, 0xe2, 0x14, 0xdb, - 0x57, 0x14, 0x2c, 0x28, 0x7d, 0xa9, 0x7e, 0x42, 0x82, 0x29, 0xbf, 0xc7, 0xde, 0x12, 0x11, 0xe6, - 0xaf, 0x25, 0x9c, 0x8c, 0x04, 0xc4, 0x13, 0xc8, 0xf0, 0x9d, 0x09, 0x66, 0x15, 0x51, 0xf4, 0x93, - 0x89, 0xae, 0x98, 0x5c, 0x74, 0xde, 0x6b, 0xb5, 0xd6, 0x5c, 0xaa, 0xad, 0x2e, 0x96, 0xb5, 0x82, - 0xac, 0x7e, 0x59, 0x82, 0xec, 0xba, 0x61, 0x6e, 0xb1, 0xd1, 0x95, 0x8e, 0x7b, 0x76, 0x64, 0x1b, - 0x3d, 0x40, 0x5b, 0x3a, 0x79, 0x51, 0x6e, 0x85, 0xe3, 0xe6, 0xee, 0xce, 0x79, 0x64, 0xd7, 0x36, - 0xf1, 0x28, 0xeb, 0x34, 0xac, 0x3a, 0x32, 0x89, 0x11, 0x9a, 0xd3, 0xfa, 0x7e, 0xe3, 0x4d, 0x30, - 0x81, 0xc9, 0x83, 0xc7, 0x49, 0x84, 0xc4, 0x03, 0xa6, 0x24, 0x86, 0xa9, 0x44, 0xd3, 0x86, 0x3e, - 0xc4, 0xd3, 0xd7, 0xd4, 0x3f, 0xca, 0xc1, 0x89, 0xa2, 0x79, 0x09, 0xdb, 0x14, 0xa4, 0x83, 0x2f, - 0x6d, 0xeb, 0xe6, 0x16, 0xc2, 0x03, 0x44, 0x20, 0x71, 0x36, 0x44, 0x7f, 0x86, 0x0f, 0xd1, 0xaf, - 0x68, 0x30, 0x61, 0xd9, 0x6d, 0x64, 0x2f, 0x5c, 0xc2, 0x3c, 0xf5, 0x2e, 0x3b, 0xd3, 0x36, 0xd9, - 0xaf, 0x88, 0x79, 0x4a, 0x7e, 0xbe, 0x46, 0xfe, 0xd7, 0x7c, 0x42, 0x67, 0x6e, 0x82, 0x09, 0x9a, - 0xa6, 0xcc, 0xc0, 0x64, 0x4d, 0x5b, 0x2c, 0x6b, 0xcd, 0xca, 0x62, 0xe1, 0x88, 0x72, 0x19, 0x1c, - 0xad, 0x34, 0xca, 0x5a, 0xb1, 0x51, 0xa9, 0x55, 0x9b, 0x38, 0xbd, 0x90, 0x51, 0x9f, 0x9b, 0x15, - 0xf5, 0xec, 0x8d, 0x67, 0xa6, 0x1f, 0xac, 0x1a, 0x4c, 0xb4, 0x48, 0x06, 0x3c, 0x84, 0x4e, 0x27, - 0xaa, 0x1d, 0x25, 0x48, 0x12, 0x34, 0x9f, 0x90, 0x72, 0x1a, 0xe0, 0xa2, 0x6d, 0x99, 0x5b, 0xe1, - 0xa9, 0xc3, 0x49, 0x8d, 0x49, 0x51, 0x1f, 0xcc, 0x40, 0x9e, 0xfc, 0x83, 0xaf, 0x24, 0xc1, 0x4f, - 0xa1, 0xe0, 0xfd, 0x77, 0xcf, 0xe2, 0xc5, 0xf2, 0x0a, 0x27, 0x5a, 0xf4, 0xd5, 0xd3, 0x45, 0x22, - 0x03, 0x62, 0x09, 0xd3, 0xaa, 0xdc, 0x0c, 0x79, 0xf2, 0x2f, 0xf5, 0x3a, 0x88, 0x0e, 0x2f, 0x4a, - 0xb2, 0x09, 0xfa, 0x29, 0x8b, 0xcb, 0x34, 0x7d, 0x6d, 0xfe, 0x90, 0x04, 0x93, 0x55, 0xe4, 0x96, - 0xb6, 0x51, 0xeb, 0x82, 0xfa, 0x18, 0x7e, 0x01, 0xb4, 0x63, 0x20, 0xd3, 0xbd, 0x6f, 0xa7, 0x13, - 0x2c, 0x80, 0xfa, 0x09, 0xea, 0xf3, 0xd9, 0xce, 0xf7, 0x6e, 0x5e, 0x7f, 0x6e, 0xec, 0x53, 0x57, - 0xbf, 0x84, 0x08, 0x95, 0x39, 0x09, 0x79, 0x1b, 0x39, 0xbb, 0x1d, 0x7f, 0x11, 0x8d, 0xbe, 0xa9, - 0x0f, 0x05, 0xe2, 0x2c, 0x71, 0xe2, 0xbc, 0x59, 0xbc, 0x88, 0x31, 0xc4, 0x2b, 0xcd, 0xc2, 0x44, - 0xc5, 0x34, 0x5c, 0x43, 0xef, 0xa8, 0x2f, 0xc8, 0xc2, 0x6c, 0x1d, 0xb9, 0xeb, 0xba, 0xad, 0xef, - 0x20, 0x17, 0xd9, 0x8e, 0xfa, 0x5d, 0xbe, 0x4f, 0xe8, 0x76, 0x74, 0x77, 0xd3, 0xb2, 0x77, 0x7c, - 0xd5, 0xf4, 0xdf, 0x3d, 0xd5, 0xdc, 0x43, 0xb6, 0x13, 0xf2, 0xe5, 0xbf, 0x7a, 0x5f, 0x2e, 0x5a, - 0xf6, 0x05, 0x6f, 0x10, 0xa4, 0xd3, 0x34, 0xfa, 0xea, 0xd1, 0xeb, 0x58, 0x5b, 0xab, 0x68, 0x0f, - 0xf9, 0xe1, 0xd2, 0x82, 0x77, 0x6f, 0x2e, 0xd0, 0xb6, 0xaa, 0x96, 0xeb, 0x75, 0xda, 0xab, 0xd6, - 0x16, 0x89, 0x17, 0x3b, 0xa9, 0xf1, 0x89, 0x61, 0x2e, 0x7d, 0x0f, 0xe1, 0x5c, 0x79, 0x36, 0x17, - 0x4d, 0x54, 0xe6, 0x41, 0x09, 0x7e, 0x6b, 0xa0, 0x0e, 0xda, 0x41, 0xae, 0x7d, 0x09, 0x5f, 0x0b, - 0x31, 0xa9, 0xf5, 0xf9, 0x42, 0x07, 0x68, 0xf1, 0xc9, 0x3a, 0x95, 0xde, 0x3c, 0x27, 0xb9, 0x03, - 0x4d, 0xd6, 0x45, 0x28, 0x8e, 0xe5, 0xda, 0x2b, 0xd9, 0xb3, 0x66, 0x5e, 0x29, 0x43, 0x16, 0x0f, - 0x9e, 0x6f, 0xc9, 0x70, 0x2b, 0x4c, 0x3b, 0xc8, 0x71, 0xf4, 0x2d, 0xe4, 0xaf, 0x30, 0xd1, 0x57, - 0xe5, 0x36, 0xc8, 0x75, 0x30, 0xa6, 0x64, 0x70, 0xb8, 0x96, 0xab, 0x99, 0x67, 0x60, 0x78, 0xb4, - 0x82, 0x91, 0x00, 0xc3, 0xad, 0x91, 0x3f, 0xce, 0xdc, 0x03, 0x39, 0x02, 0xff, 0x14, 0xe4, 0x16, - 0xcb, 0x0b, 0x1b, 0xcb, 0x85, 0x23, 0xde, 0xa3, 0xcf, 0xdf, 0x14, 0xe4, 0x96, 0x8a, 0x8d, 0xe2, - 0x6a, 0x41, 0xf2, 0xea, 0x51, 0xa9, 0x2e, 0xd5, 0x0a, 0xb2, 0x97, 0xb8, 0x5e, 0xac, 0x56, 0x4a, - 0x85, 0xac, 0x32, 0x0d, 0x13, 0xe7, 0x8a, 0x5a, 0xb5, 0x52, 0x5d, 0x2e, 0xe4, 0xd4, 0xbf, 0x63, - 0xf1, 0xbb, 0x9d, 0xc7, 0xef, 0xba, 0x28, 0x9e, 0xfa, 0x41, 0xf6, 0xaa, 0x00, 0xb2, 0x3b, 0x39, - 0xc8, 0x7e, 0x5c, 0x84, 0xc8, 0x18, 0xdc, 0x99, 0xf2, 0x30, 0xb1, 0x6e, 0x5b, 0x2d, 0xe4, 0x38, - 0xea, 0xaf, 0x4b, 0x90, 0x2f, 0xe9, 0x66, 0x0b, 0x75, 0xd4, 0x2b, 0x42, 0xa8, 0x88, 0xab, 0x68, - 0x26, 0x38, 0x2d, 0xf6, 0x4f, 0x19, 0xd1, 0xde, 0x8f, 0xd2, 0x9d, 0x27, 0x34, 0x23, 0xe4, 0x23, - 0xd6, 0xcb, 0xc5, 0x92, 0x1a, 0xc3, 0xd5, 0x38, 0x12, 0x4c, 0xd1, 0xd5, 0x80, 0xf3, 0x88, 0x9d, - 0x87, 0x7f, 0x37, 0x23, 0x3a, 0x39, 0xf4, 0x6b, 0x10, 0x90, 0x89, 0x90, 0x87, 0xd8, 0x44, 0x70, - 0x10, 0xb5, 0x31, 0x6c, 0x1e, 0x4a, 0x30, 0xbd, 0x61, 0x3a, 0xfd, 0x84, 0x22, 0x1e, 0x47, 0xdf, - 0xaf, 0x06, 0x43, 0xe8, 0x40, 0x71, 0xf4, 0x07, 0xd3, 0x4b, 0x5f, 0x30, 0xdf, 0xcd, 0xc0, 0xf1, - 0x65, 0x64, 0x22, 0xdb, 0x68, 0x91, 0x1a, 0xf8, 0x92, 0xb8, 0x93, 0x97, 0xc4, 0x63, 0x38, 0xce, - 0xfb, 0xfd, 0xc1, 0x4b, 0xe0, 0xb5, 0x81, 0x04, 0xee, 0xe6, 0x24, 0x70, 0x93, 0x20, 0x9d, 0x31, - 0xdc, 0x87, 0x3e, 0x05, 0x33, 0x55, 0xcb, 0x35, 0x36, 0x8d, 0x16, 0xf1, 0x41, 0x7b, 0x85, 0x0c, - 0xd9, 0x55, 0xc3, 0x71, 0xd5, 0x62, 0xd8, 0x9d, 0x5c, 0x03, 0xd3, 0x86, 0xd9, 0xea, 0xec, 0xb6, - 0x91, 0x86, 0x74, 0xd2, 0xaf, 0x4c, 0x6a, 0x6c, 0x52, 0xb8, 0xb5, 0xef, 0xb1, 0x25, 0xfb, 0x5b, - 0xfb, 0x9f, 0x16, 0x5e, 0x86, 0x61, 0x59, 0xc0, 0x01, 0x29, 0x23, 0xec, 0xae, 0x22, 0xcc, 0x9a, - 0x4c, 0x56, 0xdf, 0x60, 0xef, 0xbd, 0x50, 0x80, 0x25, 0xa7, 0xf1, 0x7f, 0xa8, 0xef, 0x17, 0x6a, - 0xac, 0x83, 0x18, 0x4a, 0x86, 0xcc, 0xd2, 0x10, 0x93, 0x64, 0x05, 0xe6, 0x2a, 0xd5, 0x46, 0x59, - 0xab, 0x16, 0x57, 0x69, 0x16, 0x59, 0xfd, 0x77, 0x09, 0x72, 0x1a, 0xea, 0x76, 0x2e, 0xb1, 0x11, - 0xa3, 0xa9, 0xa3, 0x78, 0x26, 0x70, 0x14, 0x57, 0x96, 0x00, 0xf4, 0x96, 0x57, 0x30, 0xbe, 0x52, - 0x4b, 0xea, 0x1b, 0xc7, 0x94, 0xab, 0x60, 0x31, 0xc8, 0xad, 0x31, 0x7f, 0xaa, 0x2f, 0x14, 0xde, - 0x39, 0xe2, 0xa8, 0x61, 0x0e, 0x23, 0xfa, 0x84, 0x0f, 0x08, 0x6d, 0xf6, 0x0c, 0x24, 0x77, 0x38, - 0xe2, 0xff, 0x8a, 0x04, 0xd9, 0x86, 0xd7, 0x5b, 0x32, 0x1d, 0xe7, 0x1f, 0x0f, 0xa7, 0xe3, 0x1e, - 0x99, 0x08, 0x1d, 0xbf, 0x0b, 0x66, 0x58, 0x8d, 0xa5, 0xae, 0x12, 0xb1, 0x2a, 0xce, 0xfd, 0x30, - 0x8c, 0x86, 0xf7, 0x61, 0xe7, 0x70, 0x44, 0xfc, 0xc9, 0xc7, 0x02, 0xac, 0xa1, 0x9d, 0xf3, 0xc8, - 0x76, 0xb6, 0x8d, 0xae, 0xfa, 0xf7, 0x32, 0x4c, 0x2d, 0x23, 0xb7, 0xee, 0xea, 0xee, 0xae, 0xd3, - 0xb3, 0xdd, 0x69, 0x5a, 0x25, 0xbd, 0xb5, 0x8d, 0x68, 0x77, 0xe4, 0xbf, 0xaa, 0xef, 0x96, 0x45, - 0xfd, 0x89, 0xc2, 0x72, 0xe6, 0x83, 0x32, 0x22, 0x30, 0x79, 0x1c, 0x64, 0xdb, 0xba, 0xab, 0x53, - 0x2c, 0xae, 0xe8, 0xc1, 0x22, 0x24, 0xa4, 0xe1, 0x6c, 0xea, 0x6f, 0x4b, 0x22, 0x0e, 0x45, 0x02, - 0xe5, 0x27, 0x03, 0xe1, 0xfd, 0x99, 0x21, 0x50, 0x38, 0x06, 0xb3, 0xd5, 0x5a, 0xa3, 0xb9, 0x5a, - 0x5b, 0x5e, 0x2e, 0x7b, 0xa9, 0x05, 0x59, 0x39, 0x09, 0xca, 0x7a, 0xf1, 0xbe, 0xb5, 0x72, 0xb5, - 0xd1, 0xac, 0xd6, 0x16, 0xcb, 0xf4, 0xcf, 0xac, 0x72, 0x14, 0xa6, 0x4b, 0xc5, 0xd2, 0x8a, 0x9f, - 0x90, 0x53, 0x4e, 0xc1, 0xf1, 0xb5, 0xf2, 0xda, 0x42, 0x59, 0xab, 0xaf, 0x54, 0xd6, 0x9b, 0x1e, - 0x99, 0xa5, 0xda, 0x46, 0x75, 0xb1, 0x90, 0x57, 0x54, 0x38, 0xc9, 0x7c, 0x39, 0xa7, 0xd5, 0xaa, - 0xcb, 0xcd, 0x7a, 0xa3, 0xd8, 0x28, 0x17, 0x26, 0x94, 0xcb, 0xe0, 0x68, 0xa9, 0x58, 0xc5, 0xd9, - 0x4b, 0xb5, 0x6a, 0xb5, 0x5c, 0x6a, 0x14, 0x26, 0xd5, 0x1f, 0x64, 0x61, 0xba, 0xe2, 0x54, 0xf5, - 0x1d, 0x74, 0x56, 0xef, 0x18, 0x6d, 0xf5, 0x05, 0xcc, 0xcc, 0xe3, 0x3a, 0x98, 0xb5, 0xc9, 0x23, - 0x6a, 0x37, 0x0c, 0x44, 0xd0, 0x9c, 0xd5, 0xf8, 0x44, 0x6f, 0x4e, 0x6e, 0x62, 0x02, 0xfe, 0x9c, - 0x9c, 0xbc, 0x29, 0x0b, 0x00, 0xe4, 0xa9, 0x11, 0x5e, 0xee, 0x7a, 0xa6, 0xb7, 0x35, 0xe9, 0x3b, - 0xc8, 0x41, 0xf6, 0x9e, 0xd1, 0x42, 0x7e, 0x4e, 0x8d, 0xf9, 0x4b, 0xfd, 0xaa, 0x2c, 0xba, 0xbf, - 0xc8, 0x80, 0xca, 0x54, 0x27, 0xa2, 0x37, 0xfc, 0x05, 0x59, 0x64, 0x77, 0x50, 0x88, 0x64, 0x32, - 0x4d, 0x79, 0xb1, 0x34, 0xdc, 0xb2, 0x6d, 0xa3, 0x56, 0x6b, 0xd6, 0x57, 0x6a, 0x5a, 0xa3, 0x20, - 0x2b, 0x33, 0x30, 0xe9, 0xbd, 0xae, 0xd6, 0xaa, 0xcb, 0x85, 0xac, 0x72, 0x02, 0x8e, 0xad, 0x14, - 0xeb, 0xcd, 0x4a, 0xf5, 0x6c, 0x71, 0xb5, 0xb2, 0xd8, 0x2c, 0xad, 0x14, 0xb5, 0x7a, 0x21, 0xa7, - 0x5c, 0x01, 0x27, 0x1a, 0x95, 0xb2, 0xd6, 0x5c, 0x2a, 0x17, 0x1b, 0x1b, 0x5a, 0xb9, 0xde, 0xac, - 0xd6, 0x9a, 0xd5, 0xe2, 0x5a, 0xb9, 0x90, 0xf7, 0x9a, 0x3f, 0xfe, 0x14, 0xaa, 0xcd, 0xc4, 0x7e, - 0x65, 0x9c, 0x8c, 0x50, 0xc6, 0xa9, 0x5e, 0x65, 0x04, 0x56, 0xad, 0xb4, 0x72, 0xbd, 0xac, 0x9d, - 0x2d, 0x17, 0xa6, 0xfb, 0xe9, 0xda, 0x8c, 0x72, 0x1c, 0x0a, 0x1e, 0x0f, 0xcd, 0x4a, 0xdd, 0xcf, - 0xb9, 0x58, 0x98, 0x55, 0x3f, 0x91, 0x87, 0x93, 0x1a, 0xda, 0x32, 0x1c, 0x17, 0xd9, 0xeb, 0xfa, - 0xa5, 0x1d, 0x64, 0xba, 0x7e, 0x27, 0xff, 0x3f, 0x13, 0x2b, 0xe3, 0x1a, 0xcc, 0x76, 0x09, 0x8d, - 0x35, 0xe4, 0x6e, 0x5b, 0x6d, 0x3a, 0x0a, 0x3f, 0x26, 0xb2, 0xe7, 0x98, 0x5f, 0x67, 0xb3, 0x6b, - 0xfc, 0xdf, 0x8c, 0x6e, 0xcb, 0x31, 0xba, 0x9d, 0x1d, 0x46, 0xb7, 0x95, 0xab, 0x60, 0x6a, 0xd7, - 0x41, 0x76, 0x79, 0x47, 0x37, 0x3a, 0xfe, 0xe5, 0x9c, 0x41, 0x82, 0xfa, 0x8e, 0xac, 0xe8, 0x89, - 0x15, 0xa6, 0x2e, 0xfd, 0xc5, 0x18, 0xd1, 0xb7, 0x9e, 0x06, 0xa0, 0x95, 0xdd, 0xb0, 0x3b, 0x54, - 0x59, 0x99, 0x14, 0x8f, 0xbf, 0xf3, 0x46, 0xa7, 0x63, 0x98, 0x5b, 0xc1, 0xbe, 0x7f, 0x98, 0xa0, - 0xbe, 0x58, 0x16, 0x39, 0xc1, 0x92, 0x94, 0xb7, 0x64, 0xad, 0xe9, 0x85, 0xd2, 0x98, 0xfb, 0xdd, + 0xda, 0x59, 0x1b, 0xe3, 0x18, 0x33, 0x36, 0x86, 0x10, 0x6c, 0x6c, 0x6c, 0x8d, 0xa6, 0x67, 0x46, + 0xf6, 0x8c, 0x34, 0x69, 0x69, 0x76, 0x71, 0x72, 0x72, 0x75, 0x7a, 0xa5, 0x9a, 0x99, 0xf6, 0x6a, + 0xba, 0x45, 0xab, 0x67, 0xd6, 0xcb, 0x7d, 0xce, 0x3d, 0x21, 0xc4, 0x7c, 0x84, 0x10, 0x42, 0x08, + 0x49, 0xf8, 0x06, 0x83, 0xe1, 0x40, 0xc2, 0xf7, 0xd7, 0x81, 0x24, 0x40, 0xf8, 0x08, 0x84, 0x24, + 0x84, 0x40, 0x08, 0x84, 0x84, 0x1b, 0x08, 0x84, 0x90, 0xfb, 0x84, 0xcb, 0x4d, 0xee, 0x09, 0x1c, + 0x92, 0x70, 0xb9, 0x4f, 0x57, 0x55, 0x77, 0x57, 0x69, 0xd4, 0xad, 0x6a, 0x8d, 0x5a, 0x63, 0xc2, + 0xf9, 0xaf, 0xbb, 0xba, 0xfa, 0xad, 0xb7, 0xde, 0xdf, 0x5b, 0x55, 0x6f, 0x55, 0xbd, 0xf5, 0x16, + 0x9c, 0xea, 0x9c, 0xbf, 0xb9, 0xe3, 0xd8, 0xae, 0xdd, 0xbd, 0xb9, 0x69, 0xef, 0xec, 0x18, 0x56, + 0xab, 0x3b, 0x8f, 0xdf, 0x95, 0x09, 0xc3, 0xba, 0xe4, 0x5e, 0xea, 0x20, 0xf5, 0xba, 0xce, 0x85, + 0xad, 0x9b, 0xdb, 0xe6, 0xf9, 0x9b, 0x3b, 0xe7, 0x6f, 0xde, 0xb1, 0x5b, 0xa8, 0xed, 0xff, 0x80, + 0x5f, 0x68, 0x76, 0xf5, 0x86, 0xa8, 0x5c, 0x6d, 0xbb, 0x69, 0xb4, 0xbb, 0xae, 0xed, 0x20, 0x9a, + 0xf3, 0x64, 0x58, 0x24, 0xda, 0x43, 0x96, 0xeb, 0x53, 0xb8, 0x6a, 0xcb, 0xb6, 0xb7, 0xda, 0x88, + 0x7c, 0x3b, 0xbf, 0xbb, 0x79, 0x73, 0xd7, 0x75, 0x76, 0x9b, 0x2e, 0xfd, 0x7a, 0x4d, 0xef, 0xd7, + 0x16, 0xea, 0x36, 0x1d, 0xb3, 0xe3, 0xda, 0x0e, 0xc9, 0x71, 0xe6, 0x43, 0x3f, 0x37, 0x09, 0xb2, + 0xde, 0x69, 0xaa, 0xdf, 0x99, 0x00, 0xb9, 0xd8, 0xe9, 0xa8, 0x1f, 0x97, 0x00, 0x96, 0x91, 0x7b, + 0x16, 0x39, 0x5d, 0xd3, 0xb6, 0xd4, 0xa3, 0x30, 0xa1, 0xa3, 0xa7, 0xef, 0xa2, 0xae, 0x7b, 0x7b, + 0xf6, 0xb9, 0xdf, 0x90, 0x33, 0xea, 0xc3, 0x12, 0x4c, 0xea, 0xa8, 0xdb, 0xb1, 0xad, 0x2e, 0x52, + 0xee, 0x86, 0x1c, 0x72, 0x1c, 0xdb, 0x39, 0x95, 0xb9, 0x26, 0x73, 0xc3, 0xf4, 0xad, 0x37, 0xce, + 0xd3, 0xea, 0xcf, 0xeb, 0x9d, 0xe6, 0x7c, 0xb1, 0xd3, 0x99, 0x0f, 0x29, 0xcd, 0xfb, 0x3f, 0xcd, + 0x6b, 0xde, 0x1f, 0x3a, 0xf9, 0x51, 0x39, 0x05, 0x13, 0x7b, 0x24, 0xc3, 0x29, 0xe9, 0x9a, 0xcc, + 0x0d, 0x53, 0xba, 0xff, 0xea, 0x7d, 0x69, 0x21, 0xd7, 0x30, 0xdb, 0xdd, 0x53, 0x32, 0xf9, 0x42, + 0x5f, 0xd5, 0x87, 0x32, 0x90, 0xc3, 0x44, 0x94, 0x12, 0x64, 0x9b, 0x76, 0x0b, 0xe1, 0xe2, 0xe7, + 0x6e, 0xbd, 0x59, 0xbc, 0xf8, 0xf9, 0x92, 0xdd, 0x42, 0x3a, 0xfe, 0x59, 0xb9, 0x06, 0xa6, 0x7d, + 0xb1, 0x84, 0x6c, 0xb0, 0x49, 0x67, 0x6e, 0x85, 0xac, 0x97, 0x5f, 0x99, 0x84, 0x6c, 0x65, 0x63, + 0x75, 0xb5, 0x70, 0x44, 0x39, 0x06, 0xb3, 0x1b, 0x95, 0x7b, 0x2b, 0xd5, 0x73, 0x95, 0x86, 0xa6, + 0xeb, 0x55, 0xbd, 0x90, 0x51, 0x66, 0x61, 0x6a, 0xa1, 0xb8, 0xd8, 0x28, 0x57, 0xd6, 0x37, 0xea, + 0x05, 0x49, 0x7d, 0x95, 0x0c, 0x73, 0x35, 0xe4, 0x2e, 0xa2, 0x3d, 0xb3, 0x89, 0x6a, 0xae, 0xe1, + 0x22, 0xf5, 0x85, 0x99, 0x40, 0x98, 0xca, 0x86, 0x57, 0x68, 0xf0, 0x89, 0x56, 0xe0, 0x09, 0xfb, + 0x2a, 0xc0, 0x53, 0x98, 0xa7, 0x7f, 0xcf, 0x33, 0x69, 0x3a, 0x4b, 0xe7, 0xcc, 0xe3, 0x60, 0x9a, + 0xf9, 0xa6, 0xcc, 0x01, 0x2c, 0x14, 0x4b, 0xf7, 0x2e, 0xeb, 0xd5, 0x8d, 0xca, 0x62, 0xe1, 0x88, + 0xf7, 0xbe, 0x54, 0xd5, 0x35, 0xfa, 0x9e, 0x51, 0xbf, 0x97, 0x61, 0xc0, 0x5c, 0xe4, 0xc1, 0x9c, + 0x1f, 0xcc, 0x4c, 0x1f, 0x40, 0xd5, 0x37, 0x04, 0xe0, 0x2c, 0x73, 0xe0, 0x3c, 0x21, 0x19, 0xb9, + 0xf4, 0x01, 0x7a, 0x50, 0x82, 0xc9, 0xda, 0xf6, 0xae, 0xdb, 0xb2, 0x2f, 0x5a, 0xea, 0x54, 0x80, + 0x8c, 0xfa, 0x2d, 0x56, 0x26, 0x4f, 0xe5, 0x65, 0x72, 0xc3, 0xfe, 0x4a, 0x50, 0x0a, 0x11, 0xd2, + 0x78, 0x4d, 0x20, 0x8d, 0x22, 0x27, 0x8d, 0xc7, 0x89, 0x12, 0x4a, 0x5f, 0x0e, 0x2f, 0x7b, 0x32, + 0xe4, 0x6a, 0x1d, 0xa3, 0x89, 0xd4, 0x3f, 0x96, 0x61, 0x66, 0x15, 0x19, 0x7b, 0xa8, 0xd8, 0xe9, + 0x38, 0xf6, 0x1e, 0x52, 0x4b, 0xa1, 0xbe, 0x9e, 0x82, 0x89, 0xae, 0x97, 0xa9, 0xdc, 0xc2, 0x35, + 0x98, 0xd2, 0xfd, 0x57, 0xe5, 0x34, 0x80, 0xd9, 0x42, 0x96, 0x6b, 0xba, 0x26, 0xea, 0x9e, 0x92, + 0xae, 0x91, 0x6f, 0x98, 0xd2, 0x99, 0x14, 0xf5, 0x3b, 0x92, 0xa8, 0x8e, 0x61, 0x2e, 0xe6, 0x59, + 0x0e, 0x22, 0xa4, 0xfa, 0x3a, 0x49, 0x44, 0xc7, 0x06, 0x92, 0x4b, 0x26, 0xdb, 0xb7, 0x66, 0x92, + 0x0b, 0xd7, 0xcb, 0x51, 0xa9, 0x36, 0x6a, 0x1b, 0xa5, 0x95, 0x46, 0x6d, 0xbd, 0x58, 0xd2, 0x0a, + 0x48, 0x39, 0x0e, 0x05, 0xfc, 0xd8, 0x28, 0xd7, 0x1a, 0x8b, 0xda, 0xaa, 0x56, 0xd7, 0x16, 0x0b, + 0x9b, 0x8a, 0x02, 0x73, 0xba, 0xf6, 0x53, 0x1b, 0x5a, 0xad, 0xde, 0x58, 0x2a, 0x96, 0x57, 0xb5, + 0xc5, 0xc2, 0x96, 0xf7, 0xf3, 0x6a, 0x79, 0xad, 0x5c, 0x6f, 0xe8, 0x5a, 0xb1, 0xb4, 0xa2, 0x2d, + 0x16, 0xb6, 0x95, 0xcb, 0xe1, 0xb2, 0x4a, 0xb5, 0x51, 0x5c, 0x5f, 0xd7, 0xab, 0x67, 0xb5, 0x06, + 0xfd, 0xa3, 0x56, 0x30, 0x49, 0x41, 0xf5, 0x46, 0x6d, 0xa5, 0xa8, 0x6b, 0xc5, 0x85, 0x55, 0xad, + 0x70, 0xbf, 0xfa, 0x2c, 0x19, 0x66, 0xd7, 0x8c, 0x0b, 0xa8, 0xb6, 0x6d, 0x38, 0xc8, 0x38, 0xdf, + 0x46, 0xea, 0xb5, 0x02, 0x78, 0xaa, 0x7f, 0xcc, 0xe2, 0xa5, 0xf1, 0x78, 0xdd, 0xdc, 0x47, 0xc0, + 0x5c, 0x11, 0x11, 0x80, 0xfd, 0xcf, 0xa0, 0x19, 0xac, 0x70, 0x80, 0x3d, 0x31, 0x21, 0xbd, 0x64, + 0x88, 0xfd, 0xfc, 0x23, 0x00, 0x31, 0xf5, 0xcb, 0x32, 0xcc, 0x95, 0xad, 0x3d, 0xd3, 0x45, 0xcb, + 0xc8, 0x42, 0x8e, 0x37, 0x0e, 0x08, 0xc1, 0xf0, 0xb0, 0xcc, 0xc0, 0xb0, 0xc4, 0xc3, 0x70, 0x4b, + 0x1f, 0xb1, 0xf1, 0x65, 0x44, 0x8c, 0xb6, 0x57, 0xc1, 0x94, 0x89, 0xf3, 0x95, 0xcc, 0x16, 0x95, + 0x58, 0x98, 0xa0, 0x5c, 0x07, 0xb3, 0xe4, 0x65, 0xc9, 0x6c, 0xa3, 0x7b, 0xd1, 0x25, 0x3a, 0xee, + 0xf2, 0x89, 0xea, 0x2f, 0x05, 0x8d, 0xaf, 0xcc, 0x61, 0xf9, 0x13, 0x49, 0x99, 0x4a, 0x06, 0xe6, + 0x4b, 0x1e, 0x09, 0xcd, 0x6f, 0x5f, 0x2b, 0x33, 0xd5, 0xef, 0x4b, 0x30, 0x5d, 0x73, 0xed, 0x8e, + 0xa7, 0xb2, 0xa6, 0xb5, 0x25, 0x06, 0xee, 0x27, 0xd9, 0x36, 0x56, 0xe2, 0xc1, 0x7d, 0x5c, 0x1f, + 0x39, 0x32, 0x05, 0x44, 0xb4, 0xb0, 0xef, 0x04, 0x2d, 0x6c, 0x89, 0x43, 0xe5, 0xd6, 0x44, 0xd4, + 0x7e, 0x08, 0xdb, 0xd7, 0x4b, 0x64, 0x28, 0xf8, 0x6a, 0xe6, 0x96, 0x76, 0x1d, 0x07, 0x59, 0xae, + 0x18, 0x08, 0x7f, 0xc5, 0x82, 0xb0, 0xc2, 0x83, 0x70, 0x6b, 0x8c, 0x32, 0xfb, 0xa5, 0xa4, 0xd8, + 0xc6, 0x3e, 0x1c, 0xa0, 0x79, 0x2f, 0x87, 0xe6, 0x4f, 0x26, 0x67, 0x2b, 0x19, 0xa4, 0x2b, 0x43, + 0x20, 0x7a, 0x1c, 0x0a, 0xde, 0x98, 0x54, 0xaa, 0x97, 0xcf, 0x6a, 0x8d, 0x72, 0xe5, 0x6c, 0xb9, + 0xae, 0x15, 0x90, 0xfa, 0x62, 0x19, 0x66, 0x08, 0x6b, 0x3a, 0xda, 0xb3, 0x2f, 0x08, 0xf6, 0x7a, + 0x5f, 0x4e, 0x68, 0x2c, 0xb0, 0x25, 0x44, 0xb4, 0x8c, 0x5f, 0x4c, 0x60, 0x2c, 0xc4, 0x90, 0x7b, + 0x24, 0xf5, 0x56, 0xfb, 0x9a, 0xc1, 0x56, 0x9f, 0xd6, 0xd2, 0xb7, 0xb7, 0x7a, 0x49, 0x16, 0x80, + 0x54, 0xf2, 0xac, 0x89, 0x2e, 0xaa, 0x6b, 0x21, 0x26, 0x9c, 0xda, 0x66, 0x06, 0xaa, 0xad, 0xd4, + 0x4f, 0x6d, 0xdf, 0xc7, 0x8e, 0x59, 0x0b, 0x3c, 0x7a, 0x37, 0x45, 0x8a, 0xdb, 0xe3, 0x24, 0x7a, + 0x76, 0xe8, 0x2b, 0x8a, 0xc4, 0x5b, 0x9d, 0x57, 0xc1, 0x14, 0x7e, 0xac, 0x18, 0x3b, 0x88, 0xb6, + 0xa1, 0x30, 0x41, 0x39, 0x03, 0x33, 0x24, 0x63, 0xd3, 0xb6, 0xbc, 0xfa, 0x64, 0x71, 0x06, 0x2e, + 0xcd, 0x03, 0xb1, 0xe9, 0x20, 0xc3, 0xb5, 0x1d, 0x4c, 0x23, 0x47, 0x40, 0x64, 0x92, 0xd4, 0x6f, + 0x06, 0xad, 0x50, 0xe3, 0x34, 0xe7, 0xf1, 0x49, 0xaa, 0x92, 0x4c, 0x6f, 0xf6, 0x86, 0x6b, 0x7f, + 0xa4, 0xd5, 0x35, 0x3c, 0xb4, 0x97, 0xf0, 0xd4, 0x0e, 0x29, 0x27, 0x41, 0xa1, 0xa9, 0x5e, 0xde, + 0x52, 0xb5, 0x52, 0xd7, 0x2a, 0xf5, 0xc2, 0x66, 0x5f, 0x8d, 0xda, 0x52, 0x5f, 0x97, 0x85, 0xec, + 0x3d, 0xb6, 0x69, 0xa9, 0x0f, 0x66, 0x38, 0x95, 0xb0, 0x90, 0x7b, 0xd1, 0x76, 0x2e, 0x04, 0x0d, + 0x35, 0x4c, 0x88, 0xc7, 0x26, 0x54, 0x25, 0x79, 0xa0, 0x2a, 0x65, 0xfb, 0xa9, 0xd2, 0xaf, 0xb2, + 0xaa, 0x74, 0x07, 0xaf, 0x4a, 0xd7, 0xf7, 0x91, 0xbf, 0xc7, 0x7c, 0x44, 0x07, 0xf0, 0x89, 0xa0, + 0x03, 0xb8, 0x8b, 0x83, 0xf1, 0xb1, 0x62, 0x64, 0x92, 0x01, 0xf8, 0xa5, 0x54, 0x1b, 0x7e, 0x3f, + 0xa8, 0xb7, 0x22, 0xa0, 0xde, 0xee, 0xd3, 0x27, 0x98, 0xfb, 0xbb, 0x8e, 0xfb, 0xf7, 0x77, 0x13, + 0x17, 0x94, 0x13, 0x70, 0x6c, 0xb1, 0xbc, 0xb4, 0xa4, 0xe9, 0x5a, 0xa5, 0xde, 0xa8, 0x68, 0xf5, + 0x73, 0x55, 0xfd, 0xde, 0x42, 0x5b, 0x7d, 0x48, 0x06, 0xf0, 0x24, 0x54, 0x32, 0xac, 0x26, 0x6a, + 0x8b, 0xf5, 0xe8, 0xff, 0xb7, 0x94, 0xac, 0x4f, 0x08, 0xe9, 0x47, 0xc0, 0xf9, 0x4a, 0x49, 0xbc, + 0x55, 0x46, 0x12, 0x4b, 0x06, 0xea, 0x9b, 0x1f, 0x09, 0xb6, 0xe7, 0x65, 0x70, 0xd4, 0xa7, 0x47, + 0xb3, 0xf7, 0x9f, 0xf6, 0xbd, 0x2d, 0x0b, 0x73, 0x14, 0x16, 0x7f, 0x1e, 0xff, 0xdc, 0x8c, 0xc8, + 0x44, 0x5e, 0x85, 0x49, 0x3a, 0x6d, 0xf7, 0xbb, 0xf7, 0xe0, 0x5d, 0x59, 0x86, 0xe9, 0x0e, 0x72, + 0x76, 0xcc, 0x6e, 0xd7, 0xb4, 0x2d, 0xb2, 0x20, 0x37, 0x77, 0xeb, 0xa3, 0x03, 0x89, 0xe3, 0xb5, + 0xcb, 0xf9, 0x75, 0xc3, 0x71, 0xcd, 0xa6, 0xd9, 0x31, 0x2c, 0x77, 0x3d, 0xcc, 0xac, 0xb3, 0x7f, + 0xaa, 0x2f, 0x4a, 0x38, 0xad, 0xe1, 0x6b, 0x12, 0xa1, 0x12, 0xbf, 0x9b, 0x60, 0x4a, 0x12, 0x4b, + 0x30, 0x99, 0x5a, 0x7c, 0x3c, 0x55, 0xb5, 0xe8, 0x83, 0xf7, 0x96, 0x72, 0x05, 0x9c, 0x28, 0x57, + 0x4a, 0x55, 0x5d, 0xd7, 0x4a, 0xf5, 0xc6, 0xba, 0xa6, 0xaf, 0x95, 0x6b, 0xb5, 0x72, 0xb5, 0x52, + 0x3b, 0x48, 0x6b, 0x57, 0x3f, 0x25, 0x07, 0x1a, 0xb3, 0x88, 0x9a, 0x6d, 0xd3, 0x42, 0xea, 0x5d, + 0x07, 0x54, 0x18, 0x7e, 0xd5, 0x47, 0x1c, 0x67, 0x5a, 0x7e, 0x04, 0xce, 0xaf, 0x4d, 0x8e, 0x73, + 0x7f, 0x82, 0xff, 0x81, 0x9b, 0xff, 0x97, 0x65, 0x38, 0xc6, 0x34, 0x44, 0x1d, 0xed, 0x8c, 0x6c, + 0x25, 0xef, 0xe7, 0xd9, 0xb6, 0x5b, 0xe6, 0x31, 0xed, 0x67, 0x4d, 0xef, 0x63, 0x23, 0x02, 0xd6, + 0x37, 0x07, 0xb0, 0xae, 0x72, 0xb0, 0x3e, 0x79, 0x08, 0x9a, 0xc9, 0x90, 0x7d, 0x7b, 0xaa, 0xc8, + 0x5e, 0x01, 0x27, 0xd6, 0x8b, 0x7a, 0xbd, 0x5c, 0x2a, 0xaf, 0x17, 0xbd, 0x71, 0x94, 0x19, 0xb2, + 0x23, 0xcc, 0x75, 0x1e, 0xf4, 0xbe, 0xf8, 0x7e, 0x28, 0x0b, 0x57, 0xf5, 0xef, 0x68, 0x4b, 0xdb, + 0x86, 0xb5, 0x85, 0x54, 0x53, 0x04, 0xea, 0x45, 0x98, 0x68, 0xe2, 0xec, 0x04, 0x67, 0x76, 0xeb, + 0x26, 0xa6, 0x2f, 0x27, 0x25, 0xe8, 0xfe, 0xaf, 0xea, 0xbb, 0x58, 0x85, 0xa8, 0xf3, 0x0a, 0xf1, + 0xd4, 0x78, 0xf0, 0xf6, 0xf1, 0x1d, 0xa1, 0x1b, 0x9f, 0x09, 0x74, 0xe3, 0x1c, 0xa7, 0x1b, 0xa5, + 0x83, 0x91, 0x4f, 0xa6, 0x26, 0x7f, 0xf4, 0x48, 0xe8, 0x00, 0x22, 0xb5, 0xc9, 0x8c, 0x1e, 0x15, + 0xfa, 0x76, 0xf7, 0xaf, 0x96, 0x21, 0xbf, 0x88, 0xda, 0x48, 0x74, 0x25, 0xf2, 0xdb, 0x92, 0xe8, + 0x86, 0x08, 0x81, 0x81, 0xd0, 0x8e, 0x5e, 0x1d, 0x71, 0xcd, 0x1d, 0xd4, 0x75, 0x8d, 0x9d, 0x0e, + 0x16, 0xb5, 0xac, 0x87, 0x09, 0xea, 0x2f, 0x48, 0x22, 0xdb, 0x25, 0x31, 0xc5, 0xfc, 0xc7, 0x58, + 0x53, 0xfc, 0x9c, 0x04, 0x93, 0x35, 0xe4, 0x56, 0x9d, 0x16, 0x72, 0xd4, 0x5a, 0x88, 0xd1, 0x35, + 0x30, 0x8d, 0x41, 0xf1, 0xa6, 0x99, 0x01, 0x4e, 0x6c, 0x92, 0x72, 0x3d, 0xcc, 0x05, 0xaf, 0xf8, + 0x77, 0xda, 0x8d, 0xf7, 0xa4, 0xaa, 0xff, 0x94, 0x11, 0xdd, 0xc5, 0xa5, 0x4b, 0x86, 0x94, 0x9b, + 0x88, 0x56, 0x2a, 0xb6, 0x23, 0x1b, 0x4b, 0x2a, 0xfd, 0x8d, 0xae, 0x77, 0x48, 0x00, 0x1b, 0x56, + 0xd7, 0x97, 0xeb, 0x63, 0x13, 0xc8, 0x55, 0xfd, 0x97, 0x4c, 0xb2, 0x59, 0x4c, 0x58, 0x4e, 0x84, + 0xc4, 0x5e, 0x9f, 0x60, 0x6d, 0x21, 0x92, 0x58, 0xfa, 0x32, 0xfb, 0xda, 0x1c, 0xe4, 0xcf, 0x19, + 0xed, 0x36, 0x72, 0xd5, 0xaf, 0x4b, 0x90, 0x2f, 0x39, 0xc8, 0x70, 0x11, 0x2b, 0x3a, 0x15, 0x26, + 0x1d, 0xdb, 0x76, 0xd7, 0x0d, 0x77, 0x9b, 0xca, 0x2d, 0x78, 0xa7, 0x0e, 0x03, 0xbf, 0xcd, 0x76, + 0x1f, 0x77, 0xf1, 0xa2, 0xfb, 0x71, 0xae, 0xb6, 0xa4, 0xa0, 0x79, 0x52, 0x48, 0x44, 0xff, 0xa1, + 0xc2, 0xe4, 0x8e, 0x85, 0x76, 0x6c, 0xcb, 0x6c, 0xfa, 0x36, 0xa7, 0xff, 0xae, 0x7e, 0x24, 0x90, + 0xe9, 0x02, 0x27, 0xd3, 0x79, 0xe1, 0x52, 0x92, 0x09, 0xb4, 0x36, 0x44, 0xef, 0x71, 0x35, 0x5c, + 0x49, 0x3a, 0x83, 0x46, 0xbd, 0xda, 0x28, 0xe9, 0x5a, 0xb1, 0xae, 0x35, 0x56, 0xab, 0xa5, 0xe2, + 0x6a, 0x43, 0xd7, 0xd6, 0xab, 0x05, 0xa4, 0xfe, 0xbd, 0xe4, 0x09, 0xb7, 0x69, 0xef, 0x21, 0x47, + 0x5d, 0x16, 0x92, 0x73, 0x9c, 0x4c, 0x28, 0x06, 0xbf, 0x2a, 0xec, 0xb4, 0x41, 0xa5, 0x43, 0x39, + 0x88, 0x50, 0xde, 0x8f, 0x0a, 0x35, 0xf7, 0x58, 0x52, 0x8f, 0x00, 0x49, 0xff, 0x0f, 0x09, 0x26, + 0x4a, 0xb6, 0xb5, 0x87, 0x1c, 0x97, 0x9d, 0xef, 0xb0, 0xd2, 0xcc, 0xf0, 0xd2, 0xf4, 0x06, 0x49, + 0x64, 0xb9, 0x8e, 0xdd, 0xf1, 0x27, 0x3c, 0xfe, 0xab, 0xfa, 0xc6, 0xa4, 0x12, 0xa6, 0x25, 0x47, + 0x2f, 0x7c, 0xf6, 0x2f, 0x88, 0x63, 0x4f, 0xee, 0x69, 0x00, 0x0f, 0x25, 0xc1, 0xa5, 0x3f, 0x03, + 0xe9, 0x77, 0x29, 0x5f, 0x91, 0x61, 0x96, 0x34, 0xbe, 0x1a, 0xc2, 0x16, 0x9a, 0x5a, 0x65, 0x97, + 0x1c, 0x7b, 0x84, 0xbf, 0x72, 0x84, 0x13, 0x7f, 0xde, 0xe8, 0x74, 0x82, 0xe5, 0xe7, 0x95, 0x23, + 0x3a, 0x7d, 0x27, 0x6a, 0xbe, 0x90, 0x87, 0xac, 0xb1, 0xeb, 0x6e, 0xab, 0xdf, 0x17, 0x9e, 0x7c, + 0x72, 0x9d, 0x01, 0xe5, 0x27, 0x02, 0x92, 0xe3, 0x90, 0x73, 0xed, 0x0b, 0xc8, 0x97, 0x03, 0x79, + 0xf1, 0xe0, 0x30, 0x3a, 0x9d, 0x3a, 0xfe, 0x40, 0xe1, 0xf0, 0xdf, 0x3d, 0x5b, 0xc7, 0x68, 0x36, + 0xed, 0x5d, 0xcb, 0x2d, 0xfb, 0x4b, 0xd0, 0x61, 0x82, 0xfa, 0xc5, 0x8c, 0xc8, 0x64, 0x56, 0x80, + 0xc1, 0x64, 0x90, 0x9d, 0x1f, 0xa2, 0x29, 0xcd, 0xc3, 0x8d, 0xc5, 0xf5, 0xf5, 0x46, 0xbd, 0x7a, + 0xaf, 0x56, 0x09, 0x0d, 0xcf, 0x46, 0xb9, 0xd2, 0xa8, 0xaf, 0x68, 0x8d, 0xd2, 0x86, 0x8e, 0xd7, + 0x09, 0x8b, 0xa5, 0x52, 0x75, 0xa3, 0x52, 0x2f, 0x20, 0xf5, 0x2d, 0x12, 0xcc, 0x94, 0xda, 0x76, + 0x37, 0x40, 0xf8, 0xea, 0x10, 0xe1, 0x40, 0x8c, 0x19, 0x46, 0x8c, 0xea, 0xbf, 0x65, 0x44, 0x9d, + 0x0e, 0x7c, 0x81, 0x30, 0xe4, 0x23, 0x7a, 0xa9, 0x37, 0x0a, 0x39, 0x1d, 0x0c, 0xa6, 0x97, 0x7e, + 0x93, 0x78, 0xfd, 0xdd, 0x30, 0x51, 0x24, 0x8a, 0xa1, 0xfe, 0x4d, 0x06, 0xf2, 0x25, 0xdb, 0xda, + 0x34, 0xb7, 0x3c, 0x63, 0x0e, 0x59, 0xc6, 0xf9, 0x36, 0x5a, 0x34, 0x5c, 0x63, 0xcf, 0x44, 0x17, + 0x71, 0x05, 0x26, 0xf5, 0x9e, 0x54, 0x8f, 0x29, 0x9a, 0x82, 0xce, 0xef, 0x6e, 0x61, 0xa6, 0x26, + 0x75, 0x36, 0x49, 0x79, 0x32, 0x5c, 0x4e, 0x5e, 0xd7, 0x1d, 0xe4, 0xa0, 0x36, 0x32, 0xba, 0xc8, + 0x9b, 0x16, 0x59, 0xa8, 0x8d, 0x95, 0x76, 0x52, 0x8f, 0xfa, 0xac, 0x9c, 0x81, 0x19, 0xf2, 0x09, + 0x9b, 0x22, 0x5d, 0xac, 0xc6, 0x93, 0x3a, 0x97, 0xa6, 0x3c, 0x0e, 0x72, 0xe8, 0x01, 0xd7, 0x31, + 0x4e, 0xb5, 0x30, 0x5e, 0x97, 0xcf, 0x13, 0xaf, 0xc3, 0x79, 0xdf, 0xeb, 0x70, 0xbe, 0x86, 0x7d, + 0x12, 0x75, 0x92, 0x4b, 0x7d, 0xc5, 0x64, 0x60, 0x48, 0xfc, 0x40, 0x0a, 0x15, 0x43, 0x81, 0xac, + 0x65, 0xec, 0x20, 0xaa, 0x17, 0xf8, 0x59, 0xb9, 0x11, 0x8e, 0x1a, 0x7b, 0x86, 0x6b, 0x38, 0xab, + 0x76, 0xd3, 0x68, 0xe3, 0xc1, 0xcf, 0x6f, 0xf9, 0xbd, 0x1f, 0xf0, 0x8e, 0x90, 0x6b, 0x3b, 0x08, + 0xe7, 0xf2, 0x77, 0x84, 0xfc, 0x04, 0x8f, 0xba, 0xd9, 0xb4, 0x2d, 0xcc, 0xbf, 0xac, 0xe3, 0x67, + 0x4f, 0x2a, 0x2d, 0xb3, 0xeb, 0x55, 0x04, 0x53, 0xa9, 0x90, 0xad, 0x8d, 0xda, 0x25, 0xab, 0x89, + 0x77, 0x83, 0x26, 0xf5, 0xa8, 0xcf, 0xca, 0x02, 0x4c, 0xd3, 0x8d, 0x90, 0x35, 0x4f, 0xaf, 0xf2, + 0x58, 0xaf, 0xae, 0xe1, 0x7d, 0xba, 0x08, 0x9e, 0xf3, 0x95, 0x30, 0x9f, 0xce, 0xfe, 0xa4, 0xdc, + 0x0d, 0x57, 0xd2, 0xd7, 0xd2, 0x6e, 0xd7, 0xb5, 0x77, 0x08, 0xe8, 0x4b, 0x66, 0x9b, 0xd4, 0x60, + 0x02, 0xd7, 0x20, 0x2e, 0x8b, 0x72, 0x2b, 0x1c, 0xef, 0x38, 0x68, 0x13, 0x39, 0xf7, 0x19, 0x3b, + 0xbb, 0x0f, 0xd4, 0x1d, 0xc3, 0xea, 0x76, 0x6c, 0xc7, 0x3d, 0x35, 0x89, 0x99, 0xef, 0xfb, 0x8d, + 0x76, 0x94, 0x93, 0x90, 0x27, 0xe2, 0x53, 0x5f, 0x98, 0x13, 0x76, 0xe7, 0xa4, 0x15, 0x8a, 0x35, + 0xcf, 0x6e, 0x81, 0x09, 0xda, 0xc3, 0x61, 0xa0, 0xa6, 0x6f, 0x3d, 0xd9, 0xb3, 0xae, 0x40, 0xa9, + 0xe8, 0x7e, 0x36, 0xe5, 0x09, 0x90, 0x6f, 0xe2, 0x6a, 0x61, 0xcc, 0xa6, 0x6f, 0xbd, 0xb2, 0x7f, + 0xa1, 0x38, 0x8b, 0x4e, 0xb3, 0xaa, 0x7f, 0x29, 0x0b, 0x79, 0x80, 0xc6, 0x71, 0x9c, 0xac, 0x55, + 0x7f, 0x53, 0x1a, 0xa2, 0xdb, 0xbc, 0x09, 0x6e, 0xa0, 0x7d, 0x22, 0xb5, 0x3f, 0x16, 0x1b, 0x0b, + 0x1b, 0xfe, 0x64, 0xd0, 0xb3, 0x4a, 0x6a, 0xf5, 0xa2, 0xee, 0xcd, 0xe4, 0x17, 0xbd, 0x49, 0xe4, + 0x8d, 0x70, 0xfd, 0x80, 0xdc, 0x5a, 0xbd, 0x51, 0x29, 0xae, 0x69, 0x85, 0x4d, 0xde, 0xb6, 0xa9, + 0xd5, 0xab, 0xeb, 0x0d, 0x7d, 0xa3, 0x52, 0x29, 0x57, 0x96, 0x09, 0x31, 0xcf, 0x24, 0x3c, 0x19, + 0x66, 0x38, 0xa7, 0x97, 0xeb, 0x5a, 0xa3, 0x54, 0xad, 0x2c, 0x95, 0x97, 0x0b, 0xe6, 0x20, 0xc3, + 0xe8, 0x7e, 0xe5, 0x1a, 0xb8, 0x8a, 0xe3, 0xa4, 0x5c, 0xad, 0x78, 0x33, 0xdb, 0x52, 0xb1, 0x52, + 0xd2, 0xbc, 0x69, 0xec, 0x05, 0x45, 0x85, 0x13, 0x84, 0x5c, 0x63, 0xa9, 0xbc, 0xca, 0x6e, 0x46, + 0x7d, 0x32, 0xa3, 0x9c, 0x82, 0xcb, 0xd8, 0x6f, 0xe5, 0xca, 0xd9, 0xe2, 0x6a, 0x79, 0xb1, 0xf0, + 0x87, 0x19, 0xe5, 0x3a, 0xb8, 0x9a, 0xfb, 0x8b, 0xec, 0x2b, 0x35, 0xca, 0x8b, 0x8d, 0xb5, 0x72, + 0x6d, 0xad, 0x58, 0x2f, 0xad, 0x14, 0x3e, 0x85, 0xe7, 0x0b, 0x81, 0x01, 0xcc, 0xb8, 0x65, 0xbe, + 0x84, 0x1d, 0xd3, 0x8b, 0xbc, 0xa2, 0x3e, 0xb6, 0x2f, 0xec, 0xf1, 0x36, 0xec, 0xc7, 0x83, 0xd1, + 0x61, 0x91, 0x53, 0xa1, 0x5b, 0x12, 0xd0, 0x4a, 0xa6, 0x43, 0xf5, 0x21, 0x54, 0xe8, 0x1a, 0xb8, + 0xaa, 0xa2, 0x11, 0xa4, 0x74, 0xad, 0x54, 0x3d, 0xab, 0xe9, 0x8d, 0x73, 0xc5, 0xd5, 0x55, 0xad, + 0xde, 0x58, 0x2a, 0xeb, 0xb5, 0x7a, 0x61, 0x53, 0xfd, 0x17, 0x29, 0x58, 0xcd, 0x61, 0xa4, 0xf5, + 0x37, 0x52, 0xd2, 0x66, 0x1d, 0xbb, 0x6a, 0xf3, 0x13, 0x90, 0xef, 0xba, 0x86, 0xbb, 0xdb, 0xa5, + 0xad, 0xfa, 0x51, 0xfd, 0x5b, 0xf5, 0x7c, 0x0d, 0x67, 0xd2, 0x69, 0x66, 0xf5, 0x2f, 0x33, 0x49, + 0x9a, 0xe9, 0x08, 0x16, 0x74, 0xcc, 0x21, 0x44, 0x7c, 0x1a, 0x54, 0x5f, 0xdb, 0xcb, 0xb5, 0x46, + 0x71, 0x55, 0xd7, 0x8a, 0x8b, 0xf7, 0x05, 0xcb, 0x38, 0x48, 0x39, 0x01, 0xc7, 0x36, 0x2a, 0xc5, + 0x85, 0x55, 0x0d, 0x37, 0x97, 0x6a, 0xa5, 0xa2, 0x95, 0x3c, 0xb9, 0xff, 0x02, 0xde, 0x34, 0xf1, + 0x2c, 0x68, 0xcc, 0xb7, 0x67, 0xe5, 0x30, 0xf2, 0xff, 0x86, 0xb0, 0x6f, 0x51, 0xa8, 0x61, 0x2c, + 0xad, 0xd1, 0xe2, 0xf0, 0x45, 0x21, 0x77, 0x22, 0x21, 0x4e, 0x92, 0xe1, 0xf1, 0x9f, 0x87, 0xc0, + 0xe3, 0x04, 0x1c, 0x63, 0xf1, 0xc0, 0x6e, 0x45, 0xd1, 0x30, 0x7c, 0x4f, 0x82, 0x89, 0x35, 0x73, + 0x0b, 0xfb, 0x55, 0x3e, 0x25, 0x34, 0x26, 0xe6, 0x40, 0x0a, 0xdc, 0x58, 0x24, 0xb3, 0xc5, 0x4d, + 0x9f, 0xa5, 0xbe, 0xcb, 0x14, 0x6f, 0x4f, 0xdc, 0xbf, 0xd0, 0x62, 0x23, 0xfa, 0x97, 0xaf, 0x24, + 0xea, 0x5f, 0xfa, 0xd3, 0x4a, 0x26, 0x6c, 0xfb, 0x60, 0xc2, 0x66, 0x9d, 0x47, 0x66, 0x60, 0x32, + 0xe8, 0xed, 0x37, 0x95, 0x93, 0xa0, 0x78, 0x1f, 0xb5, 0x4a, 0x75, 0x63, 0x79, 0xc5, 0x1b, 0x6e, + 0xf4, 0xe2, 0xb2, 0x56, 0xd8, 0x52, 0xdf, 0x29, 0xc1, 0x2c, 0x65, 0x9c, 0x7a, 0x04, 0x5c, 0x1d, + 0x89, 0x00, 0x95, 0xf2, 0x0f, 0x58, 0x3b, 0x7f, 0x99, 0x97, 0xf2, 0xe3, 0xe3, 0x24, 0x13, 0xeb, + 0x12, 0xf0, 0xa6, 0x40, 0xd6, 0xf7, 0x70, 0xb2, 0x7e, 0x52, 0x62, 0x8a, 0xe9, 0xdb, 0xfa, 0xcf, + 0x9c, 0x82, 0x7c, 0x0d, 0xb5, 0x51, 0xd3, 0x55, 0xdf, 0x26, 0x0d, 0xa5, 0xb0, 0x71, 0x76, 0xab, + 0x9c, 0xc8, 0x6e, 0xcd, 0xa6, 0x60, 0xb7, 0xe6, 0x86, 0xb7, 0x5b, 0xf3, 0x83, 0xec, 0x56, 0xf5, + 0x63, 0xf9, 0xa4, 0xc3, 0x1a, 0x11, 0xf5, 0xe1, 0x5a, 0xab, 0xbf, 0x9c, 0x4b, 0x32, 0x0c, 0xf6, + 0xe5, 0x38, 0x99, 0x5e, 0xbe, 0x32, 0x9b, 0xc2, 0x7a, 0x99, 0x72, 0x2d, 0x5c, 0x1d, 0xbe, 0x37, + 0xb4, 0xa7, 0x95, 0x6b, 0xf5, 0x1a, 0x36, 0x51, 0x4b, 0x55, 0x5d, 0xdf, 0x58, 0xaf, 0xfb, 0x7d, + 0x45, 0x48, 0x45, 0xdf, 0xa8, 0x10, 0x83, 0x74, 0x8b, 0xa7, 0xbe, 0x54, 0xae, 0x2c, 0x36, 0x82, + 0x4e, 0xbe, 0xb2, 0x54, 0x2d, 0x6c, 0x2b, 0xf3, 0x70, 0x23, 0x43, 0x1d, 0xf7, 0x37, 0xa4, 0x84, + 0x62, 0x65, 0xb1, 0xb1, 0x56, 0xd1, 0xd6, 0xaa, 0x95, 0x72, 0x09, 0xa7, 0xd7, 0xb4, 0x7a, 0xc1, + 0xf4, 0x2c, 0xa3, 0x1e, 0x13, 0xb8, 0xa6, 0x15, 0xf5, 0xd2, 0x8a, 0xa6, 0x93, 0x22, 0xef, 0x57, + 0xae, 0x87, 0x33, 0xc5, 0x4a, 0xb5, 0xee, 0xa5, 0x14, 0x2b, 0xf7, 0xd5, 0xef, 0x5b, 0xd7, 0x1a, + 0xeb, 0x7a, 0xb5, 0xa4, 0xd5, 0x6a, 0xde, 0xc0, 0x42, 0x0d, 0xe6, 0x42, 0x5b, 0x79, 0x2a, 0xdc, + 0xce, 0xb0, 0xa6, 0xd5, 0xf1, 0x0e, 0xfb, 0x5a, 0x15, 0x3b, 0x59, 0x2d, 0x6a, 0x8d, 0x95, 0x62, + 0xad, 0x51, 0xae, 0x94, 0xaa, 0x6b, 0xeb, 0xc5, 0x7a, 0xd9, 0x1b, 0x7f, 0xd6, 0xf5, 0x6a, 0xbd, + 0xda, 0x38, 0xab, 0xe9, 0xb5, 0x72, 0xb5, 0x52, 0xb0, 0xbc, 0x2a, 0x33, 0x03, 0x96, 0x6f, 0x38, + 0xd8, 0xca, 0x55, 0x70, 0xca, 0x4f, 0x5f, 0xad, 0x7a, 0x82, 0x66, 0x4c, 0xe8, 0x0e, 0x6b, 0x76, + 0x78, 0x3d, 0x2a, 0x31, 0xa2, 0xd7, 0xca, 0xcb, 0xba, 0x67, 0xf9, 0x17, 0x9e, 0x9e, 0xaa, 0x89, + 0xfd, 0xaf, 0x12, 0x64, 0x6b, 0xae, 0xdd, 0x51, 0x7f, 0x3c, 0xec, 0x80, 0x4e, 0x03, 0x38, 0x78, + 0x43, 0x7d, 0xd1, 0x70, 0x0d, 0xba, 0xd0, 0xc0, 0xa4, 0xa8, 0x7f, 0x20, 0xbc, 0x0b, 0x18, 0x1a, + 0x21, 0x76, 0x27, 0xa2, 0xc3, 0xfe, 0x9e, 0xd8, 0xb1, 0xa8, 0x68, 0x42, 0xc9, 0xda, 0xc3, 0x2f, + 0x0e, 0xb3, 0xcf, 0xa7, 0xc2, 0x49, 0x06, 0x56, 0x4f, 0xfe, 0xbe, 0xca, 0x20, 0xe5, 0x72, 0xb8, + 0xac, 0x47, 0xf9, 0xb0, 0xce, 0x6d, 0x2a, 0x3f, 0x06, 0x8f, 0x62, 0xd4, 0x5f, 0x5b, 0xab, 0x9e, + 0xd5, 0x02, 0x45, 0x5f, 0x2c, 0xd6, 0x8b, 0x85, 0x2d, 0xf5, 0x73, 0x32, 0x64, 0xd7, 0xec, 0xbd, + 0xde, 0xcd, 0x57, 0x0b, 0x5d, 0x64, 0x16, 0xf7, 0xfd, 0x57, 0xfe, 0x18, 0x88, 0x90, 0xd8, 0xd7, + 0xa2, 0x1d, 0x2d, 0xbe, 0x28, 0x25, 0x11, 0xfb, 0xda, 0x41, 0xbd, 0x2b, 0xfe, 0x61, 0x18, 0xb1, + 0x47, 0x88, 0x16, 0x29, 0x67, 0xe0, 0x74, 0xf8, 0xa1, 0xbc, 0xa8, 0x55, 0xea, 0xe5, 0xa5, 0xfb, + 0x42, 0xe1, 0x96, 0x75, 0x21, 0xf1, 0x0f, 0xea, 0xe6, 0xe2, 0xa7, 0xce, 0xa7, 0xe0, 0x78, 0xf8, + 0x6d, 0x59, 0xab, 0xfb, 0x5f, 0xee, 0x57, 0x1f, 0xcc, 0xc1, 0x0c, 0xe9, 0xf6, 0x37, 0x3a, 0x2d, + 0xcf, 0x18, 0x7d, 0x42, 0x88, 0xee, 0x0d, 0x70, 0xb4, 0xbc, 0xbe, 0x54, 0xab, 0xb9, 0xb6, 0x63, + 0x6c, 0xa1, 0x62, 0xab, 0xe5, 0x50, 0x69, 0xf5, 0x26, 0xab, 0xef, 0x11, 0x5e, 0xb8, 0xe6, 0x87, + 0x1a, 0x52, 0xe6, 0x40, 0x4b, 0x34, 0x6e, 0xa1, 0x59, 0x80, 0x60, 0x32, 0xf4, 0xef, 0x1f, 0x71, + 0x9b, 0x8b, 0xc6, 0x65, 0xf3, 0xcc, 0x73, 0x24, 0x98, 0xaa, 0x9b, 0x3b, 0xe8, 0x19, 0xb6, 0x85, + 0xba, 0xca, 0x04, 0xc8, 0xcb, 0x6b, 0xf5, 0xc2, 0x11, 0xef, 0xc1, 0x9b, 0x25, 0x64, 0xf0, 0x83, + 0xe6, 0x15, 0xe0, 0x3d, 0x14, 0xeb, 0x05, 0xd9, 0x7b, 0x58, 0xd3, 0xea, 0x85, 0xac, 0xf7, 0x50, + 0xd1, 0xea, 0x85, 0x9c, 0xf7, 0xb0, 0xbe, 0x5a, 0x2f, 0xe4, 0xbd, 0x87, 0x72, 0xad, 0x5e, 0x98, + 0xf0, 0x1e, 0x16, 0x6a, 0xf5, 0xc2, 0xa4, 0xf7, 0x70, 0xb6, 0x56, 0x2f, 0x4c, 0x79, 0x0f, 0xa5, + 0x7a, 0xbd, 0x00, 0xde, 0xc3, 0x3d, 0xb5, 0x7a, 0x61, 0xda, 0x7b, 0x28, 0x96, 0xea, 0x85, 0x19, + 0xfc, 0xa0, 0xd5, 0x0b, 0xb3, 0xde, 0x43, 0xad, 0x56, 0x2f, 0xcc, 0x61, 0xca, 0xb5, 0x7a, 0xe1, + 0x28, 0x2e, 0xab, 0x5c, 0x2f, 0x14, 0xbc, 0x87, 0x95, 0x5a, 0xbd, 0x70, 0x0c, 0x67, 0xae, 0xd5, + 0x0b, 0x0a, 0x2e, 0xb4, 0x56, 0x2f, 0x5c, 0x86, 0xf3, 0xd4, 0xea, 0x85, 0xe3, 0xb8, 0x88, 0x5a, + 0xbd, 0x70, 0x02, 0xb3, 0xa1, 0xd5, 0x0b, 0x27, 0x71, 0x1e, 0xbd, 0x5e, 0xb8, 0x1c, 0x7f, 0xaa, + 0xd4, 0x0b, 0xa7, 0x30, 0x63, 0x5a, 0xbd, 0x70, 0x05, 0x7e, 0xd0, 0xeb, 0x05, 0x15, 0x7f, 0x2a, + 0xd6, 0x0b, 0x57, 0xaa, 0x8f, 0x82, 0xa9, 0x65, 0xe4, 0x12, 0x10, 0xd5, 0x02, 0xc8, 0xcb, 0xc8, + 0x65, 0xe7, 0xa5, 0x5f, 0x93, 0xe1, 0x72, 0xba, 0x96, 0xb1, 0xe4, 0xd8, 0x3b, 0xab, 0x68, 0xcb, + 0x68, 0x5e, 0xd2, 0x1e, 0xf0, 0x4c, 0x2c, 0xd6, 0xd1, 0x40, 0x81, 0x6c, 0x27, 0xec, 0x8c, 0xf0, + 0x73, 0xac, 0x45, 0xea, 0xaf, 0xae, 0xca, 0xe1, 0xea, 0x2a, 0xb5, 0xd8, 0xfe, 0x99, 0xd5, 0x68, + 0x6e, 0x43, 0x24, 0xd3, 0xb3, 0x21, 0xe2, 0x35, 0x93, 0x0e, 0x72, 0xba, 0xb6, 0x65, 0xb4, 0x6b, + 0xd4, 0x13, 0x85, 0x2c, 0xe3, 0xf6, 0x26, 0x2b, 0x3f, 0xe5, 0xb7, 0x0c, 0x62, 0xb5, 0x3d, 0x25, + 0x6e, 0xc9, 0xa6, 0xb7, 0x9a, 0x11, 0x8d, 0xe4, 0x53, 0x41, 0x23, 0xa9, 0x73, 0x8d, 0xe4, 0xee, + 0x03, 0xd0, 0x4e, 0xd6, 0x5e, 0xca, 0xc3, 0x4d, 0xdf, 0x42, 0x3f, 0x6d, 0x7f, 0xff, 0x45, 0x56, + 0x3f, 0x27, 0xc1, 0x49, 0xcd, 0xea, 0x37, 0x03, 0x60, 0x75, 0xe1, 0x2d, 0x2c, 0x34, 0xeb, 0xbc, + 0x48, 0x6f, 0xef, 0x5b, 0xed, 0xfe, 0x34, 0x23, 0x24, 0xfa, 0xe9, 0x40, 0xa2, 0x35, 0x4e, 0xa2, + 0x77, 0x0d, 0x4f, 0x3a, 0x99, 0x40, 0x2b, 0x23, 0xed, 0x80, 0xb2, 0xea, 0x37, 0xb3, 0xf0, 0x28, + 0xe2, 0x4c, 0x46, 0x39, 0x24, 0xad, 0xac, 0x68, 0xb5, 0x74, 0xd4, 0x75, 0x0d, 0xc7, 0xe5, 0x0e, + 0xf8, 0xf7, 0x4c, 0xb5, 0x32, 0x29, 0x4c, 0xb5, 0xa4, 0x81, 0x53, 0x2d, 0xf5, 0xdd, 0xac, 0xf9, + 0x70, 0x8e, 0xc7, 0xb8, 0xd8, 0xbf, 0xff, 0x8f, 0xab, 0x61, 0x14, 0xd4, 0x81, 0x5d, 0xf1, 0xd3, + 0x1c, 0xd4, 0x4b, 0x07, 0x2e, 0x21, 0x19, 0xe2, 0x7f, 0x30, 0x5a, 0x3b, 0x2f, 0xcb, 0x7e, 0xe3, + 0x8d, 0x92, 0x42, 0x2b, 0x55, 0x03, 0xfd, 0x33, 0x13, 0x30, 0x85, 0xdb, 0xc2, 0xaa, 0x69, 0x5d, + 0x50, 0x1f, 0x92, 0x61, 0xa6, 0x82, 0x2e, 0x96, 0xb6, 0x8d, 0x76, 0x1b, 0x59, 0x5b, 0x88, 0x35, + 0xdb, 0x4f, 0xc1, 0x84, 0xd1, 0xe9, 0x54, 0xc2, 0x8d, 0x33, 0xff, 0x95, 0xf6, 0xbf, 0xdf, 0xe8, + 0xdb, 0xc8, 0x33, 0x31, 0x8d, 0x3c, 0x28, 0x77, 0x9e, 0x2d, 0x33, 0x62, 0x06, 0x7d, 0x0d, 0x4c, + 0x37, 0xfd, 0x2c, 0xc1, 0x41, 0x20, 0x36, 0x49, 0xfd, 0xbb, 0x44, 0xdd, 0x80, 0x50, 0xe1, 0xc9, + 0x94, 0x02, 0x8d, 0xd8, 0x0e, 0x39, 0x01, 0xc7, 0xea, 0xd5, 0x6a, 0x63, 0xad, 0x58, 0xb9, 0x2f, + 0x3c, 0x80, 0xbf, 0xa9, 0xbe, 0x32, 0x0b, 0x73, 0x35, 0xbb, 0xbd, 0x87, 0x42, 0x98, 0xca, 0x9c, + 0x87, 0x19, 0x2b, 0xa7, 0xcc, 0x3e, 0x39, 0x29, 0x27, 0x21, 0x6f, 0x58, 0xdd, 0x8b, 0xc8, 0xb7, + 0x0d, 0xe9, 0x1b, 0x85, 0xf1, 0x43, 0x6c, 0x3b, 0xd6, 0x79, 0x18, 0xef, 0x18, 0x20, 0x49, 0x9e, + 0xab, 0x08, 0x20, 0xcf, 0xc0, 0x4c, 0x97, 0xec, 0x7e, 0xd7, 0x19, 0x27, 0x07, 0x2e, 0x0d, 0xb3, + 0x48, 0xdc, 0x2f, 0x64, 0xca, 0x22, 0x7e, 0x53, 0x1f, 0x0a, 0x9a, 0xff, 0x06, 0x07, 0x71, 0xf1, + 0x20, 0x8c, 0x25, 0x03, 0xf9, 0xd5, 0xa3, 0x9e, 0xe1, 0x9d, 0x82, 0xe3, 0xb4, 0xd5, 0x36, 0x4a, + 0x2b, 0xc5, 0xd5, 0x55, 0xad, 0xb2, 0xac, 0x35, 0xca, 0x8b, 0x64, 0xef, 0x2d, 0x4c, 0x29, 0xd6, + 0xeb, 0xda, 0xda, 0x7a, 0xbd, 0xd6, 0xd0, 0x9e, 0x56, 0xd2, 0xb4, 0x45, 0xec, 0xe3, 0x89, 0x0f, + 0x69, 0xf9, 0xde, 0xb8, 0xc5, 0x4a, 0xed, 0x9c, 0xa6, 0x17, 0xb6, 0xcf, 0x14, 0x61, 0x9a, 0xe9, + 0xe7, 0x3d, 0xee, 0x16, 0xd1, 0xa6, 0xb1, 0xdb, 0xa6, 0xb6, 0x5a, 0xe1, 0x88, 0xc7, 0x1d, 0x96, + 0x4d, 0xd5, 0x6a, 0x5f, 0x2a, 0x64, 0x94, 0x02, 0xcc, 0xb0, 0x5d, 0x7a, 0x41, 0x52, 0xdf, 0x71, + 0x15, 0x4c, 0x9d, 0xb3, 0x9d, 0x0b, 0xd8, 0x31, 0x51, 0x7d, 0x3f, 0x09, 0xd4, 0xe3, 0x1f, 0x79, + 0x66, 0x06, 0xf6, 0x57, 0x8b, 0xbb, 0xbf, 0xf8, 0xd4, 0xe6, 0x07, 0x1e, 0x6b, 0xbe, 0x06, 0xa6, + 0x2f, 0xfa, 0xb9, 0xc3, 0x96, 0xce, 0x24, 0xa9, 0xff, 0x4d, 0xcc, 0xa1, 0x65, 0x70, 0x91, 0xe9, + 0x2f, 0xc2, 0xbe, 0x4d, 0x82, 0xfc, 0x32, 0x72, 0x8b, 0xed, 0x36, 0x2b, 0xb7, 0x97, 0x0a, 0x1f, + 0x55, 0xe3, 0x2a, 0x51, 0x6c, 0xb7, 0xa3, 0x1b, 0x15, 0x23, 0x20, 0xff, 0x48, 0x05, 0x97, 0x26, + 0xe8, 0x08, 0x3a, 0xa0, 0xc0, 0xf4, 0x25, 0xf6, 0x11, 0x39, 0x70, 0xda, 0x78, 0x98, 0xb1, 0x72, + 0x1e, 0x1f, 0x06, 0x69, 0xca, 0xc4, 0x3b, 0x7f, 0xf8, 0xf9, 0x94, 0x7b, 0x61, 0x62, 0xb7, 0x8b, + 0x4a, 0x46, 0x17, 0x61, 0xde, 0x7a, 0x6b, 0x5a, 0x3d, 0x7f, 0x3f, 0x6a, 0xba, 0xf3, 0xe5, 0x1d, + 0xcf, 0xa0, 0xde, 0x20, 0x19, 0x83, 0xb8, 0x47, 0xf4, 0x5d, 0xf7, 0x29, 0x78, 0x93, 0x92, 0x8b, + 0xa6, 0xbb, 0x5d, 0xda, 0x36, 0x5c, 0xba, 0xf6, 0x1d, 0xbc, 0xab, 0x2f, 0x1c, 0x02, 0xce, 0x58, + 0xe7, 0x86, 0xc8, 0x13, 0xaf, 0x89, 0x41, 0x1c, 0x81, 0x47, 0xc2, 0x30, 0x20, 0xfe, 0xa3, 0x04, + 0xd9, 0x6a, 0x07, 0x59, 0xc2, 0xc7, 0xbb, 0x02, 0xd9, 0x4a, 0x3d, 0xb2, 0x7d, 0x48, 0xdc, 0xdd, + 0x31, 0xa8, 0xb4, 0x57, 0x72, 0x84, 0x64, 0x6f, 0x86, 0xac, 0x69, 0x6d, 0xda, 0xd4, 0x30, 0xbd, + 0x32, 0x62, 0x57, 0xb3, 0x6c, 0x6d, 0xda, 0x3a, 0xce, 0x28, 0xea, 0xe9, 0x18, 0x57, 0x76, 0xfa, + 0xe2, 0xfe, 0xd6, 0x24, 0xe4, 0x89, 0x3a, 0xab, 0x2f, 0x91, 0x41, 0x2e, 0xb6, 0x5a, 0x11, 0x82, + 0x97, 0xf6, 0x09, 0xde, 0xc6, 0xbf, 0x05, 0x98, 0x04, 0xef, 0x7c, 0x74, 0x1e, 0xc1, 0xbe, 0x9d, + 0x36, 0xa9, 0x62, 0xab, 0x15, 0xed, 0x54, 0x1d, 0x14, 0x28, 0xf1, 0x05, 0xb2, 0x2d, 0x5c, 0x16, + 0x6b, 0xe1, 0x89, 0x07, 0x82, 0x48, 0xfe, 0xd2, 0x87, 0xe8, 0x9f, 0x25, 0x98, 0x58, 0x35, 0xbb, + 0xae, 0x87, 0x4d, 0x51, 0x04, 0x9b, 0xab, 0x60, 0xca, 0x17, 0x8d, 0xd7, 0xe5, 0x79, 0xfd, 0x79, + 0x98, 0xa0, 0xbe, 0x8e, 0x45, 0xe7, 0x1e, 0x1e, 0x9d, 0x27, 0xc6, 0xd7, 0x9e, 0x72, 0x11, 0x7d, + 0x6c, 0x26, 0x2c, 0x56, 0xea, 0x2d, 0xf6, 0xb7, 0x03, 0x81, 0xaf, 0x71, 0x02, 0xbf, 0x6d, 0x98, + 0x22, 0xd3, 0x17, 0xfa, 0xe7, 0x25, 0x00, 0xaf, 0x6c, 0x7a, 0x36, 0xf1, 0x31, 0x5c, 0xc4, 0x81, + 0x18, 0xe9, 0xbe, 0x92, 0x95, 0xee, 0x1a, 0x2f, 0xdd, 0x9f, 0x1c, 0x5c, 0xd5, 0xb8, 0x33, 0x88, + 0x4a, 0x01, 0x64, 0x33, 0x10, 0xad, 0xf7, 0xa8, 0xbe, 0x2d, 0x10, 0xea, 0x3a, 0x27, 0xd4, 0x3b, + 0x86, 0x2c, 0x29, 0x7d, 0xb9, 0xfe, 0x95, 0x04, 0x13, 0x35, 0xe4, 0x7a, 0xdd, 0xa4, 0x7a, 0x56, + 0xa4, 0x87, 0x67, 0xda, 0xb6, 0x24, 0xd8, 0xb6, 0xbf, 0x9b, 0x11, 0x8d, 0x5c, 0x14, 0x4a, 0x86, + 0xf2, 0x14, 0xb1, 0x78, 0xf0, 0xb0, 0x50, 0xe4, 0xa2, 0x41, 0xd4, 0xd2, 0x97, 0xee, 0x5b, 0xa4, + 0x60, 0xe3, 0x9e, 0x3f, 0x3a, 0xc4, 0x9a, 0xc5, 0x99, 0xfd, 0x66, 0xb1, 0xf8, 0xd1, 0x21, 0xb6, + 0x8e, 0xd1, 0xbb, 0xd6, 0x89, 0x8d, 0x8d, 0x11, 0x6c, 0x28, 0x0f, 0x23, 0xaf, 0x67, 0xc9, 0x90, + 0xa7, 0x2b, 0xcb, 0x77, 0xc5, 0xaf, 0x2c, 0x0f, 0x9e, 0x5a, 0xbc, 0x6f, 0x08, 0x53, 0x2e, 0x6e, + 0xb9, 0x37, 0x60, 0x43, 0x62, 0xd8, 0xb8, 0x09, 0x72, 0x38, 0xb4, 0x2a, 0x1d, 0xe7, 0x42, 0x5f, + 0x00, 0x9f, 0x84, 0xe6, 0x7d, 0xd5, 0x49, 0xa6, 0xc4, 0x28, 0x8c, 0x60, 0x85, 0x78, 0x18, 0x14, + 0xde, 0xfd, 0xb9, 0x4c, 0x60, 0x84, 0xbc, 0x2f, 0x4b, 0xcd, 0xbf, 0x4f, 0xf0, 0x41, 0x5e, 0x9a, + 0xb6, 0xe5, 0xa2, 0x07, 0x98, 0x35, 0xf9, 0x20, 0x21, 0xd6, 0x32, 0x38, 0x05, 0x13, 0xae, 0xc3, + 0xae, 0xd3, 0xfb, 0xaf, 0x6c, 0x8f, 0x93, 0xe3, 0x7b, 0x9c, 0x0a, 0x9c, 0x31, 0xad, 0x66, 0x7b, + 0xb7, 0x85, 0x74, 0xd4, 0x36, 0xbc, 0x5a, 0x75, 0x8b, 0xdd, 0x45, 0xd4, 0x41, 0x56, 0x0b, 0x59, + 0x2e, 0xe1, 0xd3, 0x77, 0x32, 0x17, 0xc8, 0xa9, 0x7e, 0x9d, 0x55, 0x8c, 0x3b, 0x79, 0xc5, 0x78, + 0x4c, 0xbf, 0x79, 0x45, 0x8c, 0x11, 0x7a, 0x1b, 0x00, 0xa9, 0xdb, 0x59, 0x13, 0x5d, 0xa4, 0x1d, + 0xe2, 0x15, 0x3d, 0xa6, 0x68, 0x35, 0xc8, 0xa0, 0x33, 0x99, 0xd5, 0x2f, 0x07, 0xca, 0x70, 0x37, + 0xa7, 0x0c, 0x37, 0x09, 0xb2, 0x90, 0x4c, 0x0f, 0x3a, 0x43, 0xac, 0x75, 0xcc, 0xc2, 0x54, 0xb8, + 0x42, 0x29, 0x2b, 0x57, 0xc0, 0x09, 0xdf, 0x27, 0xa2, 0xa2, 0x69, 0x8b, 0xb5, 0xc6, 0xc6, 0xfa, + 0xb2, 0x5e, 0x5c, 0xd4, 0x0a, 0xa0, 0x28, 0x30, 0x57, 0x5d, 0xb8, 0x47, 0x2b, 0xd5, 0x03, 0x57, + 0x86, 0xac, 0xfa, 0x17, 0x12, 0xe4, 0xf0, 0x09, 0x09, 0xf5, 0x67, 0x47, 0xa4, 0x39, 0x5d, 0x6e, + 0x87, 0x27, 0x98, 0x48, 0x89, 0x07, 0x5f, 0xa5, 0xc2, 0xc4, 0x5c, 0x1d, 0x28, 0xf8, 0x6a, 0x0c, + 0xa1, 0xf4, 0x9b, 0xa7, 0xd7, 0x24, 0x6b, 0xdb, 0xf6, 0xc5, 0x1f, 0xe5, 0x26, 0xe9, 0xd5, 0xff, + 0x90, 0x9b, 0x64, 0x1f, 0x16, 0xc6, 0xde, 0x24, 0xfb, 0xb4, 0xbb, 0x98, 0x66, 0xaa, 0x3e, 0x33, + 0x17, 0x2c, 0xc8, 0x3c, 0x47, 0x3a, 0xd0, 0x82, 0x4c, 0x11, 0x66, 0x4d, 0xcb, 0x45, 0x8e, 0x65, + 0xb4, 0x97, 0xda, 0xc6, 0x96, 0x1f, 0x11, 0xa2, 0x77, 0x16, 0x5e, 0x66, 0xf2, 0xe8, 0xfc, 0x1f, + 0xca, 0x69, 0x00, 0x17, 0xed, 0x74, 0xda, 0x86, 0x1b, 0xaa, 0x1e, 0x93, 0xc2, 0x6a, 0x5f, 0x96, + 0xd7, 0xbe, 0x5b, 0xe0, 0x32, 0x02, 0x5a, 0xfd, 0x52, 0x07, 0x6d, 0x58, 0xe6, 0xd3, 0x77, 0x71, + 0x4c, 0x30, 0xa2, 0xa3, 0xfd, 0x3e, 0x71, 0xcb, 0x12, 0xf9, 0x9e, 0x65, 0x89, 0x7f, 0x14, 0x3e, + 0x6b, 0xec, 0xb7, 0xfa, 0x01, 0x67, 0x8d, 0x83, 0x96, 0x26, 0xf7, 0xb4, 0xb4, 0xc0, 0x58, 0xc8, + 0x0a, 0x18, 0x0b, 0x2c, 0x2a, 0x39, 0x41, 0x43, 0xfb, 0xb5, 0x42, 0x87, 0x99, 0xe3, 0xaa, 0x31, + 0x86, 0x89, 0x9c, 0x0c, 0x73, 0xa4, 0xe8, 0x05, 0xdb, 0xbe, 0xb0, 0x63, 0x38, 0x17, 0x54, 0xe7, + 0x40, 0xaa, 0x18, 0xbb, 0x26, 0x12, 0xb9, 0xd0, 0xf7, 0x69, 0x49, 0xd4, 0xa9, 0x98, 0x13, 0x97, + 0xcf, 0xf3, 0x78, 0x16, 0x45, 0xc4, 0x7c, 0x94, 0x45, 0x18, 0x4c, 0x1f, 0xd7, 0x3f, 0x0a, 0x70, + 0xf5, 0x3b, 0x7a, 0x76, 0x3e, 0x39, 0x4a, 0x5c, 0xd5, 0xaf, 0x0c, 0x87, 0x9d, 0xcf, 0xd7, 0x10, + 0xd8, 0x15, 0x40, 0xbe, 0x10, 0x6c, 0x61, 0x79, 0x8f, 0x6c, 0x85, 0xb2, 0xe9, 0xa1, 0x19, 0xc1, + 0xf2, 0x58, 0xd0, 0x3c, 0xce, 0xb3, 0x50, 0xed, 0xa4, 0x8a, 0xe9, 0x97, 0x84, 0xd7, 0x69, 0xfa, + 0x0a, 0x88, 0x70, 0x37, 0x9e, 0x56, 0x29, 0xb6, 0xc8, 0x23, 0xce, 0x66, 0xfa, 0x68, 0xbe, 0x20, + 0x07, 0x53, 0xfe, 0x69, 0x70, 0x7c, 0x59, 0x41, 0x80, 0xe1, 0x49, 0xc8, 0x77, 0xed, 0x5d, 0xa7, + 0x89, 0xe8, 0xca, 0x19, 0x7d, 0x1b, 0x62, 0x95, 0x67, 0xe0, 0x78, 0xbe, 0xcf, 0x64, 0xc8, 0x26, + 0x36, 0x19, 0xa2, 0x0d, 0xd2, 0xb8, 0x01, 0xfe, 0x85, 0xc2, 0x11, 0x66, 0x39, 0xcc, 0x6a, 0xc8, + 0x7d, 0x24, 0x8e, 0xf1, 0xbf, 0x2f, 0xb4, 0x86, 0x30, 0xa0, 0x26, 0xc9, 0x54, 0xae, 0x3a, 0x84, + 0xa1, 0x7a, 0x25, 0x5c, 0xee, 0xe7, 0xa0, 0x16, 0x2a, 0xb6, 0x48, 0x37, 0xf4, 0xd5, 0x82, 0xac, + 0x3e, 0x2b, 0x0b, 0x05, 0xc2, 0x5a, 0x35, 0x30, 0xd6, 0xd4, 0x97, 0x66, 0x0e, 0xdb, 0x22, 0x8d, + 0x9e, 0x62, 0x7e, 0x56, 0x12, 0x8d, 0x62, 0xc7, 0x09, 0x3e, 0xac, 0x5d, 0x84, 0x26, 0x0d, 0xd1, + 0xcc, 0x62, 0x94, 0x4f, 0xfd, 0xad, 0x8c, 0x48, 0x50, 0x3c, 0x31, 0x16, 0xd3, 0xef, 0x95, 0xbe, + 0x90, 0xf5, 0x83, 0x7a, 0x2c, 0x39, 0xf6, 0xce, 0x86, 0xd3, 0x56, 0xff, 0x4f, 0xa1, 0x98, 0xa3, + 0x11, 0xe6, 0xbf, 0x14, 0x6d, 0xfe, 0x17, 0x40, 0xde, 0x75, 0xda, 0xfe, 0xf0, 0xbd, 0xeb, 0xb4, + 0x87, 0x18, 0xbe, 0x95, 0xeb, 0x61, 0xce, 0x68, 0xb5, 0xd6, 0x8d, 0x2d, 0x54, 0xf2, 0xe6, 0xd5, + 0x96, 0x4b, 0x0f, 0xfc, 0xf7, 0xa4, 0xc6, 0x76, 0x45, 0x5f, 0x17, 0xde, 0x89, 0xe3, 0x40, 0xa2, + 0xf2, 0x19, 0xcb, 0xf0, 0xe6, 0x0d, 0x09, 0xcd, 0x6d, 0x23, 0x0c, 0x3f, 0x42, 0xdf, 0x04, 0x77, + 0xe8, 0x04, 0xf8, 0x4e, 0x5f, 0xb3, 0x7e, 0x57, 0x82, 0x09, 0x4f, 0xde, 0xc5, 0x56, 0x4b, 0x7d, + 0x34, 0x17, 0xa5, 0x27, 0x72, 0x8f, 0xf4, 0x79, 0xc2, 0x9b, 0xd3, 0x7e, 0x0d, 0x09, 0xfd, 0x08, + 0x4c, 0x42, 0x21, 0x4a, 0x9c, 0x10, 0xc5, 0xf6, 0xa0, 0x63, 0x8b, 0x48, 0x5f, 0x7c, 0x9f, 0x92, + 0x60, 0xd6, 0x9f, 0x47, 0x2c, 0x21, 0xb7, 0xb9, 0xad, 0xde, 0x26, 0xba, 0xd0, 0x44, 0x5b, 0x9a, + 0x14, 0xb4, 0x34, 0xf5, 0xfb, 0x99, 0x84, 0x2a, 0xcf, 0x95, 0x1c, 0xb1, 0x4a, 0x97, 0x48, 0x17, + 0xe3, 0x08, 0xa6, 0x2f, 0xcc, 0x2f, 0x4b, 0x00, 0x75, 0x3b, 0x98, 0xeb, 0x1e, 0x40, 0x92, 0x2f, + 0x16, 0xbe, 0x00, 0x84, 0x56, 0x3c, 0x2c, 0x36, 0x79, 0xcf, 0x21, 0xb8, 0xc5, 0x36, 0xa8, 0xa4, + 0xb1, 0xb4, 0xf5, 0xa9, 0xc5, 0xdd, 0x4e, 0xdb, 0x6c, 0x1a, 0x6e, 0xef, 0xbe, 0x70, 0xb4, 0x78, + 0xf1, 0x4d, 0x5e, 0x89, 0x8c, 0xc2, 0xa0, 0x8c, 0x08, 0x59, 0x92, 0xc3, 0xb8, 0x92, 0x7f, 0x18, + 0x57, 0x70, 0xaf, 0x67, 0x00, 0xf1, 0x31, 0xa8, 0xa7, 0x0c, 0x47, 0xab, 0x1d, 0x64, 0x2d, 0x38, + 0xc8, 0x68, 0x35, 0x9d, 0xdd, 0x9d, 0xf3, 0x5d, 0xd6, 0xa9, 0x21, 0x5e, 0x47, 0x99, 0xa5, 0x63, + 0x89, 0x5b, 0x3a, 0x56, 0x9f, 0x2d, 0x8b, 0xc6, 0x32, 0x60, 0x36, 0x38, 0x18, 0x1e, 0x86, 0x18, + 0xea, 0x12, 0x6d, 0xc5, 0xf5, 0xac, 0x12, 0x67, 0x93, 0xac, 0x12, 0xbf, 0x59, 0x28, 0x32, 0x82, + 0x50, 0xbd, 0xc6, 0xb2, 0xa3, 0x3a, 0x57, 0x43, 0x6e, 0x04, 0xbc, 0xd7, 0xc1, 0xec, 0xf9, 0xf0, + 0x4b, 0x00, 0x31, 0x9f, 0xd8, 0xc7, 0xcf, 0xe1, 0x2d, 0x49, 0x57, 0x60, 0x78, 0x16, 0x22, 0xd0, + 0x0d, 0x10, 0x94, 0x44, 0x36, 0x53, 0x13, 0x2d, 0xa7, 0xc4, 0x96, 0x9f, 0x3e, 0x0a, 0x1f, 0x93, + 0x60, 0x1a, 0xdf, 0x4f, 0xb6, 0x70, 0x09, 0x7b, 0xe7, 0x0b, 0x1a, 0x25, 0x2f, 0x60, 0xc5, 0xac, + 0x40, 0xb6, 0x6d, 0x5a, 0x17, 0xfc, 0x5d, 0x70, 0xef, 0x39, 0xbc, 0xed, 0x46, 0xea, 0x73, 0xdb, + 0x4d, 0xb0, 0x4f, 0x11, 0x94, 0x7b, 0xa0, 0xeb, 0x17, 0x07, 0x92, 0x4b, 0x5f, 0x8c, 0x7f, 0x9f, + 0x85, 0x7c, 0x0d, 0x19, 0x4e, 0x73, 0x5b, 0x7d, 0x9f, 0xd4, 0x77, 0xaa, 0x30, 0xc9, 0x4f, 0x15, + 0x96, 0x60, 0x62, 0xd3, 0x6c, 0xbb, 0xc8, 0x21, 0x9e, 0x41, 0x6c, 0xd7, 0x4e, 0x9a, 0xf8, 0x42, + 0xdb, 0x6e, 0x5e, 0x98, 0xa7, 0xa6, 0xfb, 0xbc, 0x1f, 0x1d, 0x6d, 0x7e, 0x09, 0xff, 0xa4, 0xfb, + 0x3f, 0x7b, 0x06, 0x61, 0xd7, 0x76, 0xdc, 0xa8, 0xc0, 0xd7, 0x11, 0x54, 0x6a, 0xb6, 0xe3, 0xea, + 0xe4, 0x47, 0x0f, 0xe6, 0xcd, 0xdd, 0x76, 0xbb, 0x8e, 0x1e, 0x70, 0xfd, 0x69, 0x9b, 0xff, 0xee, + 0x19, 0x8b, 0xf6, 0xe6, 0x66, 0x17, 0x91, 0x45, 0x83, 0x9c, 0x4e, 0xdf, 0x94, 0xe3, 0x90, 0x6b, + 0x9b, 0x3b, 0x26, 0x99, 0x68, 0xe4, 0x74, 0xf2, 0xa2, 0xdc, 0x08, 0x85, 0x70, 0x8e, 0x43, 0x18, + 0x3d, 0x95, 0xc7, 0x4d, 0x73, 0x5f, 0xba, 0xa7, 0x33, 0x17, 0xd0, 0xa5, 0xee, 0xa9, 0x09, 0xfc, + 0x1d, 0x3f, 0xf3, 0x6e, 0x98, 0x22, 0xfb, 0x1d, 0x44, 0xe2, 0xd1, 0x33, 0x58, 0x07, 0x35, 0x6d, + 0xa7, 0xe5, 0xcb, 0x26, 0x7a, 0x82, 0x41, 0xf3, 0x25, 0xdb, 0xa5, 0xe8, 0x5b, 0xf8, 0x18, 0x5c, + 0x20, 0xf2, 0x5e, 0xb7, 0xe9, 0x15, 0x7d, 0xce, 0x74, 0xb7, 0xd7, 0x90, 0x6b, 0xa8, 0x7f, 0x2f, + 0xf7, 0xd5, 0xb8, 0xe9, 0xff, 0xa5, 0x71, 0x03, 0x34, 0x8e, 0x84, 0x09, 0x70, 0x77, 0x1d, 0xcb, + 0x93, 0x23, 0x8d, 0x34, 0xc7, 0xa4, 0x28, 0x77, 0xc0, 0x15, 0xe1, 0x9b, 0xbf, 0x54, 0xba, 0x48, + 0xa7, 0xad, 0x53, 0x38, 0x7b, 0x74, 0x06, 0x65, 0x1d, 0xae, 0x25, 0x1f, 0x57, 0xea, 0x6b, 0xab, + 0x2b, 0xe6, 0xd6, 0x76, 0xdb, 0xdc, 0xda, 0x76, 0xbb, 0x65, 0xab, 0xeb, 0x22, 0xa3, 0x55, 0xdd, + 0xd4, 0x49, 0xc8, 0x7a, 0xc0, 0x74, 0x44, 0xb2, 0xf2, 0x9e, 0x43, 0x62, 0xa3, 0x1b, 0xab, 0x29, + 0x11, 0x2d, 0xe5, 0x49, 0x5e, 0x4b, 0xe9, 0xee, 0xb6, 0x03, 0x4c, 0xaf, 0xea, 0xc1, 0x34, 0x54, + 0xf5, 0xdd, 0x36, 0x6e, 0x2e, 0x38, 0x73, 0xd2, 0x71, 0x2e, 0x86, 0x93, 0xf4, 0x9b, 0xcd, 0xff, + 0x97, 0x87, 0xdc, 0xb2, 0x63, 0x74, 0xb6, 0xd5, 0x67, 0x31, 0xfd, 0xf3, 0xa8, 0xda, 0x44, 0xa0, + 0x9d, 0xd2, 0x20, 0xed, 0x94, 0x07, 0x68, 0x67, 0x96, 0xd1, 0xce, 0xe8, 0x45, 0xe5, 0x33, 0x30, + 0xd3, 0xb4, 0xdb, 0x6d, 0xd4, 0xf4, 0xe4, 0x51, 0x6e, 0xe1, 0xd5, 0x9c, 0x29, 0x9d, 0x4b, 0xc3, + 0x11, 0x24, 0x91, 0x5b, 0x23, 0x6b, 0xe8, 0x44, 0xe9, 0xc3, 0x04, 0xf5, 0xa5, 0x12, 0x64, 0xb5, + 0xd6, 0x16, 0xe2, 0xd6, 0xd9, 0x33, 0xcc, 0x3a, 0xfb, 0x49, 0xc8, 0xbb, 0x86, 0xb3, 0x85, 0x5c, + 0x7f, 0x9d, 0x80, 0xbc, 0x05, 0x81, 0x2d, 0x65, 0x26, 0xb0, 0xe5, 0x4f, 0x42, 0xd6, 0x93, 0x19, + 0x8d, 0xc0, 0x73, 0x6d, 0x3f, 0xf8, 0xb1, 0xec, 0xe7, 0xbd, 0x12, 0xe7, 0xbd, 0x5a, 0xeb, 0xf8, + 0x87, 0x5e, 0xac, 0x73, 0xfb, 0xb0, 0xc6, 0xb7, 0x6f, 0x35, 0x6d, 0xab, 0xbc, 0x63, 0x6c, 0x21, + 0x5a, 0xcd, 0x30, 0xc1, 0xff, 0xaa, 0xed, 0xd8, 0xf7, 0x9b, 0x34, 0xc6, 0x64, 0x98, 0xe0, 0x55, + 0x61, 0xdb, 0x6c, 0xb5, 0x90, 0x45, 0x5b, 0x36, 0x7d, 0x3b, 0x73, 0x1a, 0xb2, 0x1e, 0x0f, 0x9e, + 0xfe, 0x78, 0xc6, 0x42, 0xe1, 0x88, 0x32, 0xe3, 0x35, 0x2b, 0xd2, 0x78, 0x0b, 0x19, 0x7e, 0x4d, + 0x55, 0xc4, 0x6d, 0x87, 0x54, 0xae, 0x7f, 0xe3, 0x7a, 0x1c, 0xe4, 0x2c, 0xbb, 0x85, 0x06, 0x0e, + 0x42, 0x24, 0x97, 0xf2, 0x44, 0xc8, 0xa1, 0x96, 0xd7, 0x2b, 0xc8, 0x38, 0xfb, 0xe9, 0x78, 0x59, + 0xea, 0x24, 0x73, 0x32, 0xdf, 0xa0, 0x7e, 0xdc, 0xa6, 0xdf, 0x00, 0x7f, 0x69, 0x02, 0x8e, 0x92, + 0x3e, 0xa0, 0xb6, 0x7b, 0xde, 0x23, 0x75, 0x1e, 0xa9, 0x0f, 0xf7, 0x1f, 0xb8, 0x8e, 0xf2, 0xca, + 0x7e, 0x1c, 0x72, 0xdd, 0xdd, 0xf3, 0x81, 0x11, 0x4a, 0x5e, 0xd8, 0xa6, 0x2b, 0x8d, 0x64, 0x38, + 0x93, 0x87, 0x1d, 0xce, 0xb8, 0xa1, 0x49, 0xf6, 0x1b, 0x7f, 0x38, 0x90, 0xe5, 0x71, 0xb2, 0x3f, + 0x90, 0xf5, 0x1b, 0x86, 0x4e, 0xc1, 0x84, 0xb1, 0xe9, 0x22, 0x27, 0x34, 0x13, 0xe9, 0xab, 0x37, + 0x54, 0x9e, 0x47, 0x9b, 0xb6, 0xe3, 0x89, 0x65, 0x8a, 0x0c, 0x95, 0xfe, 0x3b, 0xd3, 0x72, 0x81, + 0xdb, 0x21, 0xbb, 0x09, 0x8e, 0x59, 0xf6, 0x22, 0xea, 0x50, 0x39, 0x13, 0x14, 0x67, 0x71, 0x0b, + 0xd8, 0xff, 0x61, 0x5f, 0x57, 0x32, 0xb7, 0xbf, 0x2b, 0x51, 0x3f, 0x93, 0x74, 0xce, 0xdc, 0x03, + 0xf4, 0xc8, 0x2c, 0x34, 0xe5, 0x29, 0x30, 0xd3, 0xa2, 0x2e, 0x5a, 0x4d, 0x33, 0x68, 0x25, 0x91, + 0xff, 0x71, 0x99, 0x43, 0x45, 0xca, 0xb2, 0x8a, 0xb4, 0x0c, 0x93, 0xf8, 0x40, 0x8e, 0xa7, 0x49, + 0xb9, 0x9e, 0x00, 0x79, 0x78, 0x5a, 0x17, 0x54, 0x8a, 0x11, 0xdb, 0x7c, 0x89, 0xfe, 0xa2, 0x07, + 0x3f, 0x27, 0x9b, 0x7d, 0xc7, 0x4b, 0x28, 0xfd, 0xe6, 0xf8, 0xdb, 0x79, 0xb8, 0xa2, 0xe4, 0xd8, + 0xdd, 0x2e, 0x8e, 0x42, 0xd1, 0xdb, 0x30, 0xdf, 0x28, 0x71, 0x21, 0xae, 0x1f, 0xd1, 0xcd, 0xaf, + 0x5f, 0x83, 0x1a, 0x5f, 0xd3, 0xf8, 0xba, 0xf0, 0x51, 0xe6, 0x60, 0xff, 0x21, 0x42, 0xe8, 0x3f, + 0x1a, 0x8d, 0xe4, 0xdd, 0x19, 0x91, 0xd3, 0xd5, 0x09, 0x65, 0x95, 0x7e, 0x73, 0xf9, 0x92, 0x04, + 0x57, 0xf6, 0x72, 0xb3, 0x61, 0x75, 0x83, 0x06, 0x73, 0xf5, 0x80, 0xf6, 0xc2, 0x9f, 0xc6, 0x8d, + 0xbd, 0x5c, 0x2a, 0xa2, 0xee, 0x4c, 0x69, 0x11, 0x8b, 0x25, 0xef, 0xcd, 0x88, 0x5c, 0x2e, 0x95, + 0x98, 0x7c, 0xfa, 0xc2, 0xfd, 0x6c, 0x16, 0x8e, 0x2e, 0x3b, 0xf6, 0x6e, 0xa7, 0x1b, 0xf6, 0x40, + 0x7f, 0xd3, 0x7f, 0xc3, 0x35, 0x2f, 0x62, 0x1a, 0x5c, 0x03, 0xd3, 0x0e, 0xb5, 0xe6, 0xc2, 0xed, + 0x57, 0x36, 0x89, 0xed, 0xbd, 0xe4, 0x83, 0xf4, 0x5e, 0x61, 0x3f, 0x93, 0xe5, 0xfa, 0x99, 0xde, + 0x9e, 0x23, 0xd7, 0xa7, 0xe7, 0xf8, 0x6b, 0x29, 0xe1, 0xa0, 0xda, 0x23, 0xa2, 0x88, 0xfe, 0xa2, + 0x04, 0xf9, 0x2d, 0x9c, 0x91, 0x76, 0x17, 0x8f, 0x15, 0xab, 0x19, 0x26, 0xae, 0xd3, 0x5f, 0x43, + 0xb9, 0xca, 0xac, 0x0e, 0x27, 0x1a, 0xe0, 0xe2, 0xb9, 0x4d, 0x5f, 0xa9, 0x1e, 0xca, 0xc2, 0x4c, + 0x50, 0x7a, 0xb9, 0xd5, 0x55, 0x5f, 0xd0, 0x5f, 0xa3, 0x66, 0x45, 0x34, 0x6a, 0xdf, 0x3a, 0x73, + 0x30, 0xea, 0xc8, 0xcc, 0xa8, 0xd3, 0x77, 0x74, 0x99, 0x89, 0x18, 0x5d, 0xd4, 0x67, 0xca, 0xa2, + 0x97, 0x44, 0xf0, 0x5d, 0x2b, 0xae, 0xcd, 0x23, 0x79, 0xb0, 0x10, 0xbc, 0xaa, 0x62, 0x70, 0xad, + 0xd2, 0x57, 0x92, 0x0f, 0x4a, 0x70, 0x6c, 0x7f, 0x67, 0xfe, 0x63, 0xbc, 0x17, 0x9a, 0x57, 0xa7, + 0x6e, 0xe0, 0x85, 0x86, 0xdf, 0xf8, 0x4d, 0xba, 0xd8, 0xa3, 0xb1, 0x9c, 0xbd, 0x37, 0xb8, 0x13, + 0x17, 0x3b, 0xfc, 0x2a, 0x48, 0x34, 0x7d, 0x01, 0xfe, 0x9a, 0x0c, 0x53, 0x35, 0xe4, 0xae, 0x1a, + 0x97, 0xec, 0x5d, 0x57, 0x35, 0x44, 0xb7, 0xe7, 0x9e, 0x0c, 0xf9, 0x36, 0xfe, 0x85, 0xde, 0xbd, + 0x7b, 0x4d, 0xdf, 0xfd, 0x2d, 0xec, 0xfb, 0x43, 0x48, 0xeb, 0x34, 0x3f, 0x7f, 0x26, 0x59, 0x64, + 0x77, 0x34, 0xe0, 0x6e, 0x24, 0x5b, 0x3b, 0x89, 0xf6, 0x4e, 0xa3, 0x8a, 0x4e, 0x1f, 0x96, 0x67, + 0xcb, 0x30, 0x5b, 0x43, 0x6e, 0xb9, 0xbb, 0x64, 0xec, 0xd9, 0x8e, 0xe9, 0x22, 0xf6, 0xf2, 0xad, + 0x78, 0x68, 0x4e, 0x03, 0x98, 0xc1, 0x6f, 0x34, 0x52, 0x02, 0x93, 0xa2, 0xfe, 0x56, 0x52, 0x47, + 0x21, 0x8e, 0x8f, 0x91, 0x80, 0x90, 0xc8, 0xc7, 0x22, 0xae, 0xf8, 0xf4, 0x81, 0xf8, 0xa2, 0x44, + 0x81, 0x28, 0x3a, 0xcd, 0x6d, 0x73, 0x0f, 0xb5, 0x12, 0x02, 0xe1, 0xff, 0x16, 0x02, 0x11, 0x10, + 0x4a, 0xec, 0xbe, 0xc2, 0xf1, 0x31, 0x0a, 0xf7, 0x95, 0x38, 0x82, 0x63, 0x09, 0x76, 0xe0, 0x75, + 0x3d, 0x74, 0x3d, 0xf3, 0x2e, 0x51, 0xb1, 0x86, 0x26, 0x9b, 0xc4, 0x9a, 0x6c, 0x43, 0x75, 0x2c, + 0xa4, 0xec, 0x41, 0x3a, 0x9d, 0x4d, 0xa3, 0x63, 0xe9, 0x5b, 0x74, 0xfa, 0x42, 0x7f, 0xaf, 0x0c, + 0x27, 0x82, 0x53, 0xc0, 0x35, 0xe4, 0x2e, 0x1a, 0xdd, 0xed, 0xf3, 0xb6, 0xe1, 0xb4, 0xd8, 0x3b, + 0x99, 0x87, 0x3e, 0xf1, 0xa7, 0x7e, 0x81, 0x05, 0xa1, 0xc2, 0x83, 0xd0, 0xd7, 0x55, 0xb4, 0x2f, + 0x2f, 0xa3, 0xe8, 0x64, 0x62, 0xbd, 0x59, 0xdf, 0x1e, 0x80, 0xf5, 0x53, 0x1c, 0x58, 0x77, 0x0e, + 0xcb, 0x62, 0xfa, 0xc0, 0xfd, 0x26, 0x19, 0x11, 0x18, 0xaf, 0xe6, 0xfb, 0x44, 0x01, 0x8b, 0xf0, + 0x6a, 0x95, 0x23, 0xbd, 0x5a, 0x87, 0x1a, 0x23, 0x06, 0x7a, 0x24, 0xa7, 0x3b, 0x46, 0x1c, 0xa2, + 0xb7, 0xf1, 0x3b, 0x65, 0x28, 0xe0, 0x30, 0x10, 0x8c, 0xc7, 0xb7, 0x7a, 0xbf, 0x28, 0x3a, 0xfb, + 0xbc, 0xcb, 0x27, 0x92, 0x7a, 0x97, 0xab, 0xef, 0x48, 0xea, 0x43, 0xde, 0xcb, 0xed, 0x48, 0x10, + 0x4b, 0xe4, 0x22, 0x3e, 0x80, 0x83, 0xf4, 0x41, 0xfb, 0x65, 0x19, 0xc0, 0x6b, 0xd0, 0xf4, 0xec, + 0xc3, 0xd3, 0x44, 0xe1, 0xba, 0x99, 0xf5, 0xab, 0xf7, 0x80, 0x3a, 0xd1, 0x03, 0x14, 0xa1, 0x18, + 0x9e, 0xaa, 0x78, 0x38, 0xa9, 0x6f, 0x65, 0xc8, 0xd5, 0x48, 0x60, 0x49, 0xe4, 0x6d, 0x19, 0x59, + 0x76, 0xfa, 0x80, 0xfc, 0x77, 0x09, 0x72, 0x75, 0xbb, 0x86, 0xdc, 0x83, 0x9b, 0x02, 0x89, 0x8f, + 0xed, 0xe3, 0x72, 0x47, 0x71, 0x6c, 0xbf, 0x1f, 0xa1, 0xf4, 0x45, 0xf7, 0x1e, 0x09, 0x66, 0xea, + 0x76, 0x29, 0x58, 0x9c, 0x12, 0xf7, 0x55, 0x15, 0xbf, 0xe8, 0x32, 0xa8, 0x60, 0x58, 0xcc, 0x81, + 0x2e, 0xba, 0x1c, 0x4c, 0x2f, 0x7d, 0xb9, 0xdd, 0x06, 0x47, 0x37, 0xac, 0x96, 0xad, 0xa3, 0x96, + 0x4d, 0x57, 0xba, 0x15, 0x05, 0xb2, 0xbb, 0x56, 0xcb, 0xc6, 0x2c, 0xe7, 0x74, 0xfc, 0xec, 0xa5, + 0x39, 0xa8, 0x65, 0x53, 0xdf, 0x00, 0xfc, 0xac, 0x7e, 0x5d, 0x86, 0xac, 0xf7, 0xaf, 0xb8, 0xa8, + 0xdf, 0x29, 0x27, 0x0c, 0x44, 0xe0, 0x91, 0x1f, 0x89, 0x25, 0x74, 0x17, 0xb3, 0xf6, 0x4f, 0x3c, + 0x58, 0xaf, 0x8d, 0x2a, 0x8f, 0x11, 0x45, 0xb8, 0xe6, 0xaf, 0x9c, 0x82, 0x89, 0xf3, 0x6d, 0xbb, + 0x79, 0x21, 0x3c, 0x2f, 0x4f, 0x5f, 0x95, 0x1b, 0x21, 0xe7, 0x18, 0xd6, 0x16, 0xa2, 0x7b, 0x0a, + 0xc7, 0x7b, 0xfa, 0x42, 0xec, 0xf5, 0xa2, 0x93, 0x2c, 0xea, 0x3b, 0x92, 0x84, 0x40, 0xe8, 0x53, + 0xf9, 0x64, 0xfa, 0xb0, 0x38, 0xc4, 0xc9, 0xb2, 0x02, 0xcc, 0x94, 0x8a, 0xe4, 0x4a, 0xd9, 0xb5, + 0xea, 0x59, 0xad, 0x20, 0x63, 0x98, 0x3d, 0x99, 0xa4, 0x08, 0xb3, 0x47, 0xfe, 0x47, 0x16, 0xe6, + 0x3e, 0x95, 0x3f, 0x0c, 0x98, 0x3f, 0x25, 0xc1, 0xec, 0xaa, 0xd9, 0x75, 0xa3, 0xbc, 0xfd, 0x63, + 0xa2, 0xc0, 0xbd, 0x30, 0xa9, 0xa9, 0xcc, 0x95, 0x23, 0x1c, 0xfe, 0x2d, 0x91, 0x39, 0x1c, 0x57, + 0xc4, 0x78, 0x8e, 0xa5, 0x60, 0x0e, 0xc8, 0x35, 0x90, 0xc2, 0x92, 0x4c, 0x6c, 0x28, 0x85, 0x85, + 0x8c, 0xdf, 0x50, 0x8a, 0x2c, 0x3b, 0x7d, 0xf9, 0x7e, 0x5d, 0x82, 0x63, 0x5e, 0xf1, 0x71, 0xcb, + 0x52, 0xd1, 0x62, 0x1e, 0xb8, 0x2c, 0x95, 0x78, 0x65, 0x7c, 0x1f, 0x2f, 0xa3, 0x58, 0x19, 0x1f, + 0x44, 0x74, 0xcc, 0x62, 0x8e, 0x58, 0x86, 0x1d, 0x24, 0xe6, 0x98, 0x65, 0xd8, 0xe1, 0xc5, 0x1c, + 0xbf, 0x14, 0x3b, 0xa4, 0x98, 0x0f, 0x6d, 0x81, 0xf5, 0xf5, 0x72, 0x20, 0xe6, 0xc8, 0xb5, 0x8d, + 0x18, 0x31, 0x27, 0x3e, 0xb1, 0xab, 0xbe, 0x6b, 0x48, 0xc1, 0x8f, 0x78, 0x7d, 0x63, 0x18, 0x98, + 0x0e, 0x71, 0x8d, 0xe3, 0x65, 0x32, 0xcc, 0x51, 0x2e, 0xfa, 0x4f, 0x99, 0x63, 0x30, 0x4a, 0x3c, + 0x65, 0x4e, 0x7c, 0x06, 0x88, 0xe7, 0x6c, 0xfc, 0x67, 0x80, 0x62, 0xcb, 0x4f, 0x1f, 0x9c, 0x6f, + 0x64, 0xe1, 0xa4, 0xc7, 0xc2, 0x9a, 0xdd, 0x32, 0x37, 0x2f, 0x11, 0x2e, 0xce, 0x1a, 0xed, 0x5d, + 0xd4, 0x55, 0xdf, 0x2f, 0x89, 0xa2, 0xf4, 0x9f, 0x00, 0xec, 0x0e, 0x72, 0x48, 0x20, 0x35, 0x0a, + 0xd4, 0x1d, 0x51, 0x95, 0xdd, 0x5f, 0x52, 0x10, 0x14, 0xbd, 0xea, 0x13, 0xd1, 0x19, 0x7a, 0x9e, + 0x55, 0x38, 0x15, 0x7c, 0xe9, 0x75, 0xf0, 0xc8, 0xec, 0x77, 0xf0, 0xb8, 0x01, 0x64, 0xa3, 0xd5, + 0x0a, 0xa0, 0xea, 0xdd, 0xcc, 0xc6, 0x65, 0xea, 0x5e, 0x16, 0x2f, 0x67, 0x17, 0x85, 0x47, 0xf3, + 0x22, 0x72, 0x76, 0x91, 0xab, 0xcc, 0x43, 0x9e, 0xdc, 0x20, 0x18, 0xac, 0xe8, 0xf7, 0xcf, 0x4c, + 0x73, 0xf1, 0xa6, 0x5d, 0x95, 0x57, 0xc3, 0xdb, 0x12, 0x49, 0xa6, 0x5f, 0x3f, 0x1d, 0xda, 0xc9, + 0x3a, 0xa7, 0x60, 0x4f, 0x1d, 0x9a, 0xf2, 0x78, 0x76, 0xc3, 0x8a, 0x9d, 0x4e, 0xfb, 0x52, 0x9d, + 0x06, 0x5f, 0x49, 0xb4, 0x1b, 0xc6, 0xc4, 0x70, 0x91, 0x7a, 0x63, 0xb8, 0x24, 0xdf, 0x0d, 0xe3, + 0xf8, 0x18, 0xc5, 0x6e, 0x58, 0x1c, 0xc1, 0x31, 0xac, 0x47, 0xe6, 0x88, 0xd5, 0x4c, 0x63, 0xd4, + 0xbe, 0xa9, 0xff, 0x21, 0x34, 0xe0, 0x9d, 0x5d, 0xfa, 0x85, 0xaf, 0x8d, 0x8d, 0xcd, 0xad, 0x3c, + 0x11, 0xf2, 0x9b, 0xb6, 0xb3, 0x63, 0xf8, 0x1b, 0xf7, 0xbd, 0x27, 0x45, 0x68, 0x5c, 0xd8, 0x25, + 0x9c, 0x47, 0xa7, 0x79, 0xbd, 0xf9, 0xc8, 0x33, 0xcc, 0x0e, 0x8d, 0xba, 0xe8, 0x3d, 0x2a, 0xd7, + 0xc1, 0x2c, 0x0d, 0xbe, 0x58, 0x41, 0x5d, 0x17, 0xb5, 0x68, 0xc4, 0x0a, 0x3e, 0x51, 0x39, 0x03, + 0x33, 0x34, 0x61, 0xc9, 0x6c, 0xa3, 0x2e, 0x0d, 0x5a, 0xc1, 0xa5, 0x29, 0x27, 0x21, 0x6f, 0x76, + 0xef, 0xe9, 0xda, 0x16, 0xf6, 0xff, 0x9f, 0xd4, 0xe9, 0x9b, 0x72, 0x03, 0x1c, 0xa5, 0xf9, 0x02, + 0x63, 0x95, 0x1c, 0xd8, 0xe9, 0x4d, 0x56, 0x3f, 0x37, 0xcc, 0xc4, 0x21, 0x71, 0x3c, 0x5e, 0x0f, + 0x85, 0xdd, 0x66, 0x13, 0xa1, 0x16, 0x3d, 0xd9, 0xe4, 0xbf, 0x26, 0x8c, 0xd4, 0x9b, 0x78, 0x9a, + 0x71, 0x48, 0xa1, 0x7a, 0x3f, 0x72, 0x02, 0xf2, 0xe4, 0xda, 0x0b, 0xf5, 0x25, 0x73, 0x7d, 0x95, + 0x71, 0x8e, 0x57, 0xc6, 0x0d, 0x98, 0xb1, 0x6c, 0xaf, 0xb8, 0x75, 0xc3, 0x31, 0x76, 0xba, 0x71, + 0xab, 0x88, 0x84, 0x6e, 0x30, 0x64, 0x54, 0x98, 0xdf, 0x56, 0x8e, 0xe8, 0x1c, 0x19, 0xe5, 0x7f, + 0x83, 0xa3, 0xe7, 0x69, 0x04, 0x80, 0x2e, 0xa5, 0x2c, 0x45, 0xfb, 0xd8, 0xf5, 0x50, 0x5e, 0xe0, + 0xff, 0x5c, 0x39, 0xa2, 0xf7, 0x12, 0x53, 0x7e, 0x06, 0xe6, 0xbc, 0xd7, 0x96, 0x7d, 0xd1, 0x67, + 0x5c, 0x8e, 0x36, 0x34, 0x7a, 0xc8, 0xaf, 0x71, 0x3f, 0xae, 0x1c, 0xd1, 0x7b, 0x48, 0x29, 0x55, + 0x80, 0x6d, 0x77, 0xa7, 0x4d, 0x09, 0x67, 0xa3, 0x55, 0xb2, 0x87, 0xf0, 0x4a, 0xf0, 0xd3, 0xca, + 0x11, 0x9d, 0x21, 0xa1, 0xac, 0xc2, 0x94, 0xfb, 0x80, 0x4b, 0xe9, 0xe5, 0xa2, 0x37, 0xb7, 0x7b, + 0xe8, 0xd5, 0xfd, 0x7f, 0x56, 0x8e, 0xe8, 0x21, 0x01, 0xa5, 0x0c, 0x93, 0x9d, 0xf3, 0x94, 0x58, + 0xbe, 0xcf, 0xdd, 0xf2, 0xfd, 0x89, 0xad, 0x9f, 0x0f, 0x68, 0x05, 0xbf, 0x7b, 0x8c, 0x35, 0xbb, + 0x7b, 0x94, 0xd6, 0x84, 0x30, 0x63, 0x25, 0xff, 0x1f, 0x8f, 0xb1, 0x80, 0x80, 0x52, 0x86, 0xa9, + 0xae, 0x65, 0x74, 0xba, 0xdb, 0xb6, 0xdb, 0x3d, 0x35, 0xd9, 0xe3, 0x07, 0x19, 0x4d, 0xad, 0x46, + 0xff, 0xd1, 0xc3, 0xbf, 0x95, 0x27, 0xc2, 0x89, 0x5d, 0x7c, 0x7d, 0xa8, 0xf6, 0x80, 0xd9, 0x75, + 0x4d, 0x6b, 0xcb, 0x8f, 0x21, 0x4b, 0x7a, 0x93, 0xfe, 0x1f, 0x95, 0x79, 0x7a, 0x22, 0x0a, 0x70, + 0xdb, 0x54, 0x7b, 0x37, 0xe3, 0x48, 0xb1, 0xcc, 0x41, 0xa8, 0xa7, 0x40, 0xd6, 0xfb, 0x84, 0xcf, + 0x6c, 0xce, 0xf5, 0x5f, 0xe8, 0xeb, 0xd5, 0x1d, 0xdc, 0x80, 0xbd, 0x9f, 0xbc, 0xb1, 0xd1, 0xb2, + 0xd7, 0x1d, 0x7b, 0xcb, 0x41, 0xdd, 0x2e, 0x75, 0x38, 0x64, 0x52, 0xbc, 0x06, 0x6e, 0x76, 0xc9, + 0x3d, 0xf1, 0xa1, 0xbf, 0x3b, 0x9b, 0x44, 0x66, 0x9b, 0x15, 0x74, 0x11, 0x3b, 0x04, 0xe3, 0xf3, + 0x37, 0x78, 0xb6, 0xe9, 0xa7, 0xa8, 0xd7, 0xc3, 0x0c, 0xdb, 0xc8, 0xc8, 0xdd, 0x59, 0x66, 0x68, + 0x7b, 0xd1, 0x37, 0xf5, 0x3a, 0x98, 0xe3, 0x75, 0x9a, 0x19, 0x62, 0x64, 0xbf, 0x2b, 0x54, 0xaf, + 0x85, 0xa3, 0x3d, 0x0d, 0xcb, 0x8f, 0x29, 0x92, 0x09, 0x63, 0x8a, 0x5c, 0x03, 0x10, 0x6a, 0x71, + 0x5f, 0x32, 0x57, 0xc3, 0x54, 0xa0, 0x97, 0x7d, 0x33, 0x7c, 0x35, 0x03, 0x93, 0xbe, 0xb2, 0xf5, + 0xcb, 0xe0, 0x8d, 0x2f, 0x16, 0xb3, 0x81, 0x40, 0xa7, 0xd9, 0x5c, 0x9a, 0x37, 0x8e, 0x84, 0x6e, + 0xbb, 0x75, 0xd3, 0x6d, 0xfb, 0x47, 0xdf, 0x7a, 0x93, 0x95, 0x75, 0x00, 0x13, 0x63, 0x54, 0x0f, + 0xcf, 0xc2, 0xdd, 0x92, 0xa0, 0x3d, 0x10, 0x7d, 0x60, 0x68, 0x9c, 0xf9, 0x31, 0x7a, 0x50, 0x6d, + 0x0a, 0x72, 0xb5, 0xf5, 0x62, 0x49, 0x2b, 0x1c, 0x51, 0xe6, 0x00, 0xb4, 0xa7, 0xad, 0x6b, 0x7a, + 0x59, 0xab, 0x94, 0xb4, 0x42, 0x46, 0x7d, 0xb9, 0x04, 0x53, 0x41, 0x23, 0xe8, 0x5b, 0x49, 0x8d, + 0xaa, 0xd6, 0xc0, 0xeb, 0x89, 0xf6, 0x37, 0x2a, 0x56, 0xc9, 0x9e, 0x0c, 0x97, 0xef, 0x76, 0xd1, + 0x92, 0xe9, 0x74, 0x5d, 0xdd, 0xbe, 0xb8, 0x64, 0x3b, 0x41, 0xd4, 0x64, 0xff, 0x9a, 0xfe, 0x88, + 0xcf, 0x9e, 0x45, 0xd1, 0x42, 0xf8, 0x50, 0x14, 0x72, 0xe8, 0xca, 0x70, 0x98, 0xe0, 0xd1, 0x75, + 0xc9, 0xbd, 0xf8, 0x5d, 0xa4, 0xdb, 0x17, 0xbb, 0x45, 0xab, 0x55, 0xb2, 0xdb, 0xbb, 0x3b, 0x56, + 0x97, 0xda, 0x04, 0x51, 0x9f, 0x3d, 0xe9, 0xe0, 0xcb, 0xc7, 0xe6, 0x00, 0x4a, 0xd5, 0xd5, 0x55, + 0xad, 0x54, 0x2f, 0x57, 0x2b, 0x85, 0x23, 0x9e, 0xb4, 0xea, 0xc5, 0x85, 0x55, 0x4f, 0x3a, 0x3f, + 0x0b, 0x93, 0x7e, 0x9b, 0xa6, 0x61, 0x50, 0x32, 0x7e, 0x18, 0x14, 0xa5, 0x08, 0x93, 0x7e, 0x2b, + 0xa7, 0x23, 0xc2, 0xa3, 0x7b, 0x8f, 0xbd, 0xee, 0x18, 0x8e, 0x8b, 0xfd, 0xa5, 0x7d, 0x22, 0x0b, + 0x46, 0x17, 0xe9, 0xc1, 0x6f, 0x67, 0x1e, 0x47, 0x39, 0x50, 0x60, 0xae, 0xb8, 0xba, 0xda, 0xa8, + 0xea, 0x8d, 0x4a, 0xb5, 0xbe, 0x52, 0xae, 0x2c, 0x93, 0x11, 0xb2, 0xbc, 0x5c, 0xa9, 0xea, 0x1a, + 0x19, 0x20, 0x6b, 0x85, 0x0c, 0xb9, 0xfc, 0x6e, 0x61, 0x12, 0xf2, 0x1d, 0x2c, 0x5d, 0xf5, 0x4b, + 0x72, 0xc2, 0xf3, 0xee, 0x01, 0x4e, 0x11, 0xd7, 0x73, 0x71, 0x3e, 0xe7, 0x52, 0x9f, 0x33, 0xa1, + 0x67, 0x60, 0x86, 0xd8, 0x72, 0x5d, 0xbc, 0x7c, 0x4f, 0x6f, 0xb8, 0xe5, 0xd2, 0xd4, 0x8f, 0x49, + 0x09, 0x0e, 0xc1, 0xf7, 0xe5, 0x28, 0x99, 0x71, 0xf1, 0xe7, 0xc3, 0x5c, 0x76, 0xa7, 0xc0, 0x5c, + 0xb9, 0x52, 0xd7, 0xf4, 0x4a, 0x71, 0x95, 0x66, 0x91, 0x95, 0x53, 0x70, 0xbc, 0x52, 0xa5, 0x31, + 0xfd, 0x6a, 0xf8, 0x5a, 0xed, 0xb5, 0xf5, 0xaa, 0x5e, 0x2f, 0xe4, 0x94, 0x93, 0xa0, 0x90, 0x67, + 0xee, 0xd6, 0xfa, 0xbc, 0xf2, 0x18, 0xb8, 0x76, 0xb5, 0xbc, 0x56, 0xae, 0x37, 0xaa, 0x4b, 0x0d, + 0xbd, 0x7a, 0xae, 0xe6, 0x21, 0xa8, 0x6b, 0xab, 0x45, 0x4f, 0x91, 0x98, 0x4b, 0xf0, 0x26, 0x94, + 0xcb, 0xe0, 0x28, 0xbe, 0xe0, 0x12, 0xdf, 0x7c, 0x4f, 0xca, 0x9b, 0x54, 0xae, 0x82, 0x53, 0xe5, + 0x4a, 0x6d, 0x63, 0x69, 0xa9, 0x5c, 0x2a, 0x6b, 0x95, 0x7a, 0x63, 0x5d, 0xd3, 0xd7, 0xca, 0xb5, + 0x9a, 0xf7, 0x6f, 0x61, 0x0a, 0x5f, 0x31, 0x46, 0xfa, 0x4c, 0xf5, 0x7d, 0x32, 0xcc, 0x9e, 0x35, + 0xda, 0xa6, 0x37, 0x50, 0xe0, 0xbb, 0x07, 0x7b, 0x8e, 0x8b, 0xb8, 0xf8, 0x8e, 0x42, 0xea, 0x70, + 0x8e, 0x5f, 0xd4, 0x5f, 0x90, 0x13, 0x1e, 0x17, 0xa1, 0x40, 0x90, 0x12, 0xe7, 0xb9, 0xd2, 0x22, + 0x26, 0x37, 0xaf, 0x95, 0x12, 0x1c, 0x17, 0x11, 0x27, 0x9f, 0x0c, 0xfc, 0x57, 0x8c, 0x0a, 0xfc, + 0x02, 0xcc, 0x6c, 0x54, 0x8a, 0x1b, 0xf5, 0x95, 0xaa, 0x5e, 0xfe, 0x69, 0x1c, 0x6d, 0x7c, 0x16, + 0xa6, 0x96, 0xaa, 0xfa, 0x42, 0x79, 0x71, 0x51, 0xab, 0x14, 0x72, 0xca, 0xe5, 0x70, 0x59, 0x4d, + 0xd3, 0xcf, 0x96, 0x4b, 0x5a, 0x63, 0xa3, 0x52, 0x3c, 0x5b, 0x2c, 0xaf, 0xe2, 0x3e, 0x22, 0x1f, + 0x73, 0x6f, 0xe2, 0x84, 0xfa, 0x73, 0x59, 0x00, 0x52, 0x75, 0xcf, 0x92, 0x66, 0x6f, 0xd7, 0xfb, + 0x8b, 0xa4, 0x93, 0x86, 0x90, 0x4c, 0x44, 0xfb, 0x2d, 0xc3, 0xa4, 0x43, 0x3f, 0xd0, 0xe5, 0x93, + 0x41, 0x74, 0xc8, 0xa3, 0x4f, 0x4d, 0x0f, 0x7e, 0x57, 0xdf, 0x9f, 0x64, 0x8e, 0x10, 0xc9, 0x58, + 0x32, 0x24, 0x97, 0x46, 0x03, 0xa4, 0xfa, 0x82, 0x0c, 0xcc, 0xf1, 0x15, 0xf3, 0x2a, 0x81, 0x8d, + 0x29, 0xb1, 0x4a, 0xf0, 0x3f, 0x33, 0x46, 0xd6, 0x99, 0x27, 0xd0, 0xe1, 0x14, 0xfc, 0x96, 0x49, + 0x4e, 0x7e, 0xfb, 0x16, 0x4b, 0x21, 0xe3, 0x31, 0xef, 0x19, 0x1d, 0xe4, 0x6a, 0xf5, 0xfa, 0x03, + 0x6e, 0x41, 0x56, 0xbf, 0x2a, 0xc3, 0x2c, 0x77, 0x7d, 0x9f, 0xfa, 0xda, 0x8c, 0xc8, 0xd5, 0x5a, + 0xcc, 0xc5, 0x80, 0x99, 0x83, 0x5e, 0x0c, 0x78, 0xe6, 0x66, 0x98, 0xa0, 0x69, 0x58, 0xbe, 0xd5, + 0x8a, 0x67, 0x0a, 0x1c, 0x85, 0xe9, 0x65, 0xad, 0xde, 0xa8, 0xd5, 0x8b, 0x7a, 0x5d, 0x5b, 0x2c, + 0x64, 0xbc, 0x81, 0x4f, 0x5b, 0x5b, 0xaf, 0xdf, 0x57, 0x90, 0x92, 0x7b, 0xe0, 0xf5, 0x32, 0x32, + 0x66, 0x0f, 0xbc, 0xb8, 0xe2, 0xd3, 0x9f, 0xab, 0x7e, 0x46, 0x86, 0x02, 0xe1, 0x40, 0x7b, 0xa0, + 0x83, 0x1c, 0x13, 0x59, 0x4d, 0xa4, 0x5e, 0x10, 0x89, 0xf8, 0xb9, 0x2f, 0x16, 0x1e, 0xee, 0xcf, + 0x19, 0x2b, 0x91, 0xbc, 0xf4, 0x18, 0xd8, 0xd9, 0x7d, 0x06, 0xf6, 0xa7, 0x93, 0xba, 0xe0, 0xf5, + 0xb2, 0x3b, 0x12, 0xc8, 0x3e, 0x99, 0xc4, 0x05, 0x6f, 0x00, 0x07, 0x63, 0x09, 0xe4, 0x1b, 0x31, + 0xfe, 0x16, 0x64, 0xf5, 0xf9, 0x32, 0x1c, 0x5d, 0x34, 0x5c, 0xb4, 0x70, 0xa9, 0x6e, 0xee, 0xa0, + 0xae, 0x6b, 0xec, 0x74, 0x22, 0xae, 0xc4, 0xcb, 0xec, 0xbb, 0x12, 0xcf, 0xf5, 0xff, 0xc0, 0x9c, + 0xca, 0x7a, 0x98, 0xa0, 0xbe, 0x3b, 0xe9, 0xa1, 0xbd, 0x1e, 0x1e, 0x46, 0x16, 0x6d, 0x37, 0xd9, + 0x61, 0xbc, 0x78, 0x2e, 0xc6, 0x70, 0x43, 0xed, 0x14, 0x14, 0x08, 0x2b, 0x8c, 0x97, 0xd9, 0xaf, + 0xd1, 0x5b, 0x24, 0x1b, 0x09, 0x82, 0xfa, 0xf9, 0x61, 0x12, 0x24, 0x3e, 0x4c, 0x02, 0xb7, 0x68, + 0x29, 0xf7, 0x7a, 0x06, 0x24, 0xed, 0x0c, 0x19, 0x97, 0xb2, 0xe8, 0x38, 0xaa, 0xe9, 0x75, 0x86, + 0xb1, 0xc5, 0x8f, 0xe7, 0xa6, 0x33, 0x7a, 0x97, 0xa1, 0x26, 0x8a, 0x4c, 0xfc, 0x85, 0x8e, 0x49, + 0xfd, 0x8b, 0x39, 0x97, 0xbe, 0x98, 0x5b, 0x0e, 0xd3, 0xf3, 0x2f, 0x1e, 0xc4, 0x41, 0xfa, 0x28, + 0x7c, 0x5f, 0x82, 0x6c, 0xcd, 0x76, 0xdc, 0x51, 0x61, 0x90, 0x74, 0x4f, 0x94, 0x91, 0x40, 0x2d, + 0x7a, 0xce, 0x99, 0xde, 0x9e, 0x68, 0x7c, 0xf9, 0x63, 0x88, 0x8b, 0x78, 0x14, 0xe6, 0x08, 0x27, + 0xc1, 0xa5, 0x21, 0xff, 0x2e, 0x91, 0xfe, 0xea, 0x5e, 0x51, 0x44, 0xce, 0xc0, 0x0c, 0xb3, 0x27, + 0x19, 0x5c, 0x98, 0xcd, 0xa6, 0xa9, 0x6f, 0x64, 0x71, 0x59, 0xe4, 0x71, 0xe9, 0x37, 0xe3, 0x0e, + 0xee, 0xdd, 0x18, 0x55, 0xcf, 0x94, 0x24, 0xc4, 0x62, 0x4c, 0xe1, 0xe9, 0x23, 0xf2, 0xa0, 0x0c, + 0x79, 0xea, 0x13, 0x36, 0x52, 0x04, 0x92, 0xb6, 0x8c, 0x40, 0x08, 0x62, 0xbe, 0x63, 0xf2, 0xa8, + 0x5b, 0x46, 0x7c, 0xf9, 0xe9, 0xe3, 0xf0, 0x03, 0xea, 0xec, 0x58, 0xdc, 0x33, 0xcc, 0xb6, 0x71, + 0xbe, 0x9d, 0x20, 0xb4, 0xf1, 0xc7, 0x12, 0x1e, 0xef, 0x0a, 0xaa, 0xca, 0x95, 0x17, 0x21, 0xf1, + 0x9f, 0x80, 0x29, 0x27, 0x58, 0x92, 0xf4, 0x4f, 0xbf, 0xf7, 0x38, 0x9a, 0xd2, 0xef, 0x7a, 0x98, + 0x33, 0xd1, 0x59, 0x2e, 0x21, 0x7e, 0xc6, 0x72, 0xf6, 0x64, 0xba, 0xd8, 0x6a, 0x2d, 0x21, 0xc3, + 0xdd, 0x75, 0x50, 0x2b, 0xd1, 0x10, 0xc1, 0x8b, 0x68, 0x8a, 0x95, 0x04, 0x17, 0x5c, 0x70, 0x95, + 0x47, 0xe7, 0x49, 0x03, 0x7a, 0x03, 0x9f, 0x97, 0x91, 0x74, 0x49, 0x6f, 0x0d, 0x20, 0xa9, 0x72, + 0x90, 0x3c, 0x65, 0x38, 0x26, 0xd2, 0x07, 0xe4, 0x37, 0x64, 0x98, 0x23, 0x76, 0xc2, 0xa8, 0x31, + 0xf9, 0xbd, 0x84, 0x3e, 0x24, 0xcc, 0xb5, 0x4c, 0x2c, 0x3b, 0x23, 0x81, 0x25, 0x89, 0xc7, 0x89, + 0x18, 0x1f, 0xe9, 0x23, 0xf3, 0xb9, 0x3c, 0x00, 0xe3, 0x17, 0xf8, 0xb1, 0x7c, 0x18, 0xe8, 0x4f, + 0x7d, 0x07, 0x9d, 0x7f, 0xd4, 0xb8, 0xa8, 0xd3, 0x8c, 0xcf, 0x5f, 0xb0, 0x21, 0xc5, 0x27, 0x0a, + 0x8d, 0x2a, 0x7f, 0x9e, 0xd0, 0xe6, 0xa5, 0x5e, 0x79, 0x03, 0x07, 0xf7, 0x21, 0x7b, 0xb9, 0x8f, + 0x27, 0x30, 0x7e, 0x07, 0xb1, 0x92, 0x0c, 0xb5, 0xd5, 0x21, 0x66, 0xf6, 0xa7, 0xe0, 0xb8, 0xae, + 0x15, 0x17, 0xab, 0x95, 0xd5, 0xfb, 0xd8, 0x3b, 0x7a, 0x0a, 0x32, 0x3b, 0x39, 0x49, 0x05, 0xb6, + 0xd7, 0x25, 0xec, 0x03, 0x79, 0x59, 0xc5, 0xcd, 0x56, 0x98, 0xc5, 0x95, 0xc1, 0xbd, 0x9a, 0x00, + 0xd9, 0xc3, 0x44, 0xe1, 0x41, 0x60, 0x9a, 0xd1, 0xf3, 0x64, 0x28, 0x84, 0xd7, 0xc4, 0xd3, 0xcb, + 0xd8, 0xaa, 0xbc, 0xdb, 0x60, 0x87, 0xec, 0x3f, 0x85, 0x6e, 0x83, 0x7e, 0x82, 0x72, 0x3d, 0xcc, + 0x35, 0xb7, 0x51, 0xf3, 0x42, 0xd9, 0xf2, 0xf7, 0xd5, 0xc9, 0x26, 0x6c, 0x4f, 0x2a, 0x0f, 0xcc, + 0xbd, 0x3c, 0x30, 0xfc, 0x24, 0x9a, 0x1b, 0xa4, 0x59, 0xa6, 0x22, 0x70, 0xf9, 0xc3, 0x00, 0x97, + 0x0a, 0x87, 0xcb, 0xed, 0x43, 0x51, 0x4d, 0x06, 0x4b, 0x65, 0x08, 0x58, 0x54, 0x38, 0x59, 0x5d, + 0xaf, 0x97, 0xab, 0x95, 0xc6, 0x46, 0x4d, 0x5b, 0x6c, 0x2c, 0xf8, 0xe0, 0xd4, 0x0a, 0xb2, 0xfa, + 0x4d, 0x09, 0x26, 0x08, 0x5b, 0xdd, 0x9e, 0x6b, 0xdd, 0xe3, 0xfd, 0x25, 0xd5, 0xb7, 0x09, 0x47, + 0x3f, 0x08, 0x04, 0x41, 0xcb, 0x89, 0xe8, 0xa7, 0x9e, 0x0c, 0x13, 0x04, 0x64, 0x7f, 0x45, 0xeb, + 0x74, 0x44, 0x2f, 0x45, 0xc9, 0xe8, 0x7e, 0x76, 0xc1, 0x48, 0x08, 0x03, 0xd8, 0x48, 0x7f, 0x64, + 0x79, 0x66, 0x96, 0x98, 0xc1, 0xe7, 0x4c, 0x77, 0x1b, 0xbb, 0x53, 0xaa, 0x3f, 0x25, 0xb2, 0xbc, + 0x78, 0x13, 0xe4, 0xf6, 0xbc, 0xdc, 0x03, 0x5c, 0x53, 0x49, 0x26, 0xf5, 0x15, 0xc2, 0x81, 0x37, + 0x39, 0xfd, 0x0c, 0x78, 0x8a, 0x00, 0x67, 0x0d, 0xb2, 0x6d, 0xb3, 0xeb, 0xd2, 0xf1, 0xe3, 0xb6, + 0x44, 0x84, 0xfc, 0x87, 0xb2, 0x8b, 0x76, 0x74, 0x4c, 0x46, 0xbd, 0x07, 0x66, 0xd8, 0x54, 0x01, + 0xf7, 0xdc, 0x53, 0x30, 0x41, 0x8f, 0x8d, 0xd1, 0x25, 0x56, 0xff, 0x55, 0x70, 0x59, 0x53, 0xa8, + 0xb6, 0xe9, 0xeb, 0xc0, 0xff, 0x7b, 0x14, 0x26, 0x56, 0xcc, 0xae, 0x6b, 0x3b, 0x97, 0xd4, 0x87, + 0x33, 0x30, 0x71, 0x16, 0x39, 0x5d, 0xd3, 0xb6, 0xf6, 0xb9, 0x1a, 0x5c, 0x03, 0xd3, 0x1d, 0x07, + 0xed, 0x99, 0xf6, 0x6e, 0x37, 0x5c, 0x9c, 0x61, 0x93, 0x14, 0x15, 0x26, 0x8d, 0x5d, 0x77, 0xdb, + 0x76, 0xc2, 0x68, 0x13, 0xfe, 0xbb, 0x72, 0x1a, 0x80, 0x3c, 0x57, 0x8c, 0x1d, 0x44, 0x1d, 0x28, + 0x98, 0x14, 0x45, 0x81, 0xac, 0x6b, 0xee, 0x20, 0x1a, 0x7e, 0x16, 0x3f, 0x7b, 0x02, 0xc6, 0xa1, + 0xdc, 0x68, 0xc8, 0x3c, 0x59, 0xf7, 0x5f, 0xd5, 0x2f, 0xc8, 0x30, 0xbd, 0x8c, 0x5c, 0xca, 0x6a, + 0x57, 0x7d, 0x61, 0x46, 0xe8, 0xc6, 0x07, 0x6f, 0x8c, 0x6d, 0x1b, 0x5d, 0xff, 0xbf, 0x60, 0x09, + 0x96, 0x4f, 0x0c, 0x63, 0xe1, 0xca, 0x6c, 0x20, 0x6c, 0x1c, 0x18, 0xcd, 0x2d, 0x13, 0xbf, 0x4b, + 0x9a, 0x99, 0x6e, 0x82, 0xec, 0xff, 0xa0, 0xbe, 0x47, 0x12, 0x3d, 0x54, 0x4c, 0x65, 0x3f, 0xcf, + 0xd4, 0x27, 0xb2, 0x3b, 0x9a, 0xdc, 0xa3, 0x39, 0xf6, 0xc5, 0x38, 0x67, 0x29, 0x51, 0x32, 0x7a, + 0x90, 0x5b, 0xf0, 0x38, 0xf2, 0x60, 0x4e, 0xd2, 0xd7, 0xc6, 0xef, 0xca, 0x30, 0x5d, 0xdb, 0xb6, + 0x2f, 0xfa, 0x72, 0xfc, 0x59, 0x31, 0x60, 0xaf, 0x82, 0xa9, 0xbd, 0x1e, 0x50, 0xc3, 0x84, 0xe8, + 0x3b, 0xd8, 0xd5, 0xe7, 0xca, 0x49, 0x61, 0x62, 0x98, 0x1b, 0xf9, 0x0d, 0xe9, 0xca, 0x93, 0x60, + 0x82, 0x72, 0x4d, 0x97, 0x5c, 0xe2, 0x01, 0xf6, 0x33, 0xb3, 0x15, 0xcc, 0xf2, 0x15, 0x4c, 0x86, + 0x7c, 0x74, 0xe5, 0xd2, 0x47, 0xfe, 0x4f, 0x24, 0x1c, 0x8c, 0xc2, 0x07, 0xbe, 0x34, 0x02, 0xe0, + 0xd5, 0xef, 0x65, 0x44, 0x17, 0x26, 0x03, 0x09, 0x04, 0x1c, 0x1c, 0xe8, 0x36, 0x97, 0x81, 0xe4, + 0xd2, 0x97, 0xe7, 0xcb, 0xb3, 0x30, 0xb3, 0x68, 0x6e, 0x6e, 0x06, 0x9d, 0xe4, 0x8b, 0x04, 0x3b, + 0xc9, 0x68, 0x77, 0x00, 0xcf, 0xce, 0xdd, 0x75, 0x1c, 0x64, 0xf9, 0x95, 0xa2, 0xcd, 0xa9, 0x27, + 0x55, 0xb9, 0x01, 0x8e, 0xfa, 0xe3, 0x02, 0xdb, 0x51, 0x4e, 0xe9, 0xbd, 0xc9, 0xea, 0x77, 0x84, + 0x77, 0xb5, 0x7c, 0x89, 0xb2, 0x55, 0x8a, 0x68, 0x80, 0x77, 0xc0, 0xec, 0x36, 0xc9, 0x8d, 0xa7, + 0xfe, 0x7e, 0x67, 0x79, 0xb2, 0x27, 0xd8, 0xef, 0x1a, 0xea, 0x76, 0x8d, 0x2d, 0xa4, 0xf3, 0x99, + 0x7b, 0x9a, 0xaf, 0x9c, 0xe4, 0xea, 0x2a, 0xb1, 0x0d, 0x32, 0x81, 0x9a, 0x8c, 0x41, 0x3b, 0xce, + 0x40, 0x76, 0xc9, 0x6c, 0x23, 0xf5, 0x17, 0x25, 0x98, 0xd2, 0x51, 0xd3, 0xb6, 0x9a, 0xde, 0x1b, + 0xe3, 0x1c, 0xf4, 0x4f, 0x19, 0xd1, 0x2b, 0x1b, 0x3d, 0x3a, 0xf3, 0x01, 0x8d, 0x88, 0x76, 0x23, + 0x76, 0x35, 0x63, 0x2c, 0xa9, 0x31, 0x5c, 0xb0, 0xe1, 0x4d, 0x3d, 0x36, 0x37, 0xdb, 0xb6, 0xc1, + 0x2d, 0x7e, 0xf5, 0x9a, 0x42, 0x37, 0x42, 0xc1, 0x3f, 0xe3, 0x61, 0xbb, 0xeb, 0xa6, 0x65, 0x05, + 0x87, 0x88, 0xf7, 0xa5, 0xf3, 0xfb, 0xb6, 0xb1, 0x71, 0x58, 0x70, 0xdd, 0x69, 0xe9, 0x11, 0x9a, + 0x7d, 0x3d, 0xcc, 0x9d, 0xbf, 0xe4, 0xa2, 0x2e, 0xcd, 0x45, 0x8b, 0xcd, 0xea, 0x3d, 0xa9, 0x4c, + 0x14, 0xe5, 0xb8, 0x78, 0x2d, 0x31, 0x05, 0x26, 0x13, 0xf5, 0xca, 0x10, 0x33, 0xc0, 0xe3, 0x50, + 0xa8, 0x54, 0x17, 0x35, 0xec, 0xab, 0xe6, 0x7b, 0xff, 0x6c, 0xa9, 0x2f, 0x96, 0x61, 0x06, 0x3b, + 0x93, 0xf8, 0x28, 0x5c, 0x2b, 0x30, 0x1f, 0x51, 0xbf, 0x2c, 0xec, 0xc7, 0x86, 0xab, 0xcc, 0x16, + 0x10, 0x2d, 0xe8, 0x4d, 0xb3, 0xdd, 0x2b, 0xe8, 0x9c, 0xde, 0x93, 0xda, 0x07, 0x10, 0xb9, 0x2f, + 0x20, 0xbf, 0x23, 0xe4, 0xcc, 0x36, 0x88, 0xbb, 0xc3, 0x42, 0xe5, 0x77, 0x65, 0x98, 0xf6, 0x26, + 0x29, 0x3e, 0x28, 0x55, 0x0e, 0x14, 0xdb, 0x6a, 0x5f, 0x0a, 0x97, 0x45, 0xfc, 0xd7, 0x44, 0x8d, + 0xe4, 0xaf, 0x84, 0x67, 0xee, 0x58, 0x44, 0x0c, 0x2f, 0x63, 0xc2, 0xef, 0x03, 0x42, 0xf3, 0xf9, + 0x01, 0xcc, 0x1d, 0x16, 0x7c, 0x5f, 0xcf, 0x41, 0x7e, 0xa3, 0x83, 0x91, 0x7b, 0x85, 0x2c, 0x12, + 0x91, 0x7c, 0xdf, 0x41, 0x06, 0xcf, 0xcc, 0x6a, 0xdb, 0x4d, 0xa3, 0xbd, 0x1e, 0x9e, 0x08, 0x0b, + 0x13, 0x94, 0xdb, 0xa9, 0x6f, 0x23, 0x39, 0x4e, 0x77, 0x7d, 0x6c, 0xb0, 0x6e, 0x2c, 0x23, 0xe6, + 0xd0, 0xc8, 0x4d, 0x70, 0xac, 0x65, 0x76, 0x8d, 0xf3, 0x6d, 0xa4, 0x59, 0x4d, 0xe7, 0x12, 0x11, + 0x07, 0x9d, 0x56, 0xed, 0xfb, 0xa0, 0xdc, 0x09, 0xb9, 0xae, 0x7b, 0xa9, 0x4d, 0xe6, 0x89, 0xec, + 0x19, 0x93, 0xc8, 0xa2, 0x6a, 0x5e, 0x76, 0x9d, 0xfc, 0xc5, 0xba, 0x28, 0x4d, 0x08, 0xde, 0xd7, + 0xfc, 0x04, 0xc8, 0xdb, 0x8e, 0xb9, 0x65, 0x92, 0xfb, 0x77, 0xe6, 0xf6, 0xc5, 0xa4, 0x23, 0xa6, + 0x40, 0x15, 0x67, 0xd1, 0x69, 0x56, 0xe5, 0x49, 0x30, 0x65, 0xee, 0x18, 0x5b, 0xe8, 0x5e, 0xd3, + 0x22, 0x27, 0xf6, 0xe6, 0x6e, 0x3d, 0xb5, 0xef, 0xf8, 0x0c, 0xfd, 0xae, 0x87, 0x59, 0xd5, 0x0f, + 0x48, 0xa2, 0x81, 0x73, 0x70, 0xdd, 0x08, 0xa8, 0x63, 0xb9, 0xb7, 0x5a, 0x7d, 0xb5, 0x50, 0x48, + 0x9b, 0x68, 0xb6, 0xd2, 0x1f, 0xbc, 0x3f, 0x2f, 0xc1, 0xe4, 0xa2, 0x7d, 0xd1, 0xc2, 0x8a, 0x7e, + 0x9b, 0x98, 0xad, 0xdb, 0xe7, 0x90, 0x23, 0x7f, 0x2d, 0x64, 0xec, 0x89, 0x06, 0x5c, 0x5b, 0xbf, + 0xc8, 0x08, 0x18, 0x62, 0x5b, 0x8e, 0xe0, 0x65, 0x7d, 0x71, 0xe5, 0xa4, 0x2f, 0xd7, 0x3f, 0x95, + 0x21, 0xbb, 0xe8, 0xd8, 0x1d, 0xf5, 0xad, 0x99, 0x04, 0x2e, 0x0b, 0x2d, 0xc7, 0xee, 0xd4, 0xf1, + 0x6d, 0x5b, 0xe1, 0x31, 0x0e, 0x36, 0x4d, 0xb9, 0x0d, 0x26, 0x3b, 0x76, 0xd7, 0x74, 0xfd, 0x69, + 0xc4, 0xdc, 0xad, 0x8f, 0xea, 0xdb, 0x9a, 0xd7, 0x69, 0x26, 0x3d, 0xc8, 0xee, 0xf5, 0xda, 0x58, + 0x84, 0x9e, 0x5c, 0x3c, 0x31, 0xfa, 0x37, 0x8e, 0xf5, 0xa4, 0xaa, 0x2f, 0x61, 0x91, 0x7c, 0x0a, + 0x8f, 0xe4, 0xa3, 0xfb, 0x48, 0xd8, 0xb1, 0x3b, 0x23, 0xd9, 0x64, 0x7c, 0x65, 0x80, 0xea, 0x53, + 0x39, 0x54, 0x6f, 0x14, 0x2a, 0x33, 0x7d, 0x44, 0x3f, 0x90, 0x05, 0xc0, 0x66, 0xc6, 0x86, 0x37, + 0x01, 0x12, 0xb3, 0xb1, 0x9e, 0x9d, 0x65, 0x64, 0x59, 0xe4, 0x65, 0xf9, 0xd8, 0x08, 0x2b, 0x06, + 0x93, 0x8f, 0x90, 0x68, 0x11, 0x72, 0xbb, 0xde, 0x67, 0x2a, 0x51, 0x41, 0x12, 0xf8, 0x55, 0x27, + 0x7f, 0xaa, 0x7f, 0x92, 0x81, 0x1c, 0x4e, 0x50, 0x4e, 0x03, 0xe0, 0x81, 0x9d, 0x1c, 0x08, 0xca, + 0xe0, 0x21, 0x9c, 0x49, 0xc1, 0xda, 0x6a, 0xb6, 0xe8, 0x67, 0x62, 0x32, 0x87, 0x09, 0xde, 0xdf, + 0x78, 0xb8, 0xc7, 0xb4, 0xa8, 0x01, 0xc0, 0xa4, 0x78, 0x7f, 0xe3, 0xb7, 0x55, 0xb4, 0x49, 0x02, + 0x21, 0x67, 0xf5, 0x30, 0x21, 0xf8, 0x7b, 0x35, 0xb8, 0x3e, 0xcb, 0xff, 0x1b, 0xa7, 0x78, 0x93, + 0x61, 0xac, 0x96, 0x0b, 0x61, 0x11, 0x79, 0x9c, 0xa9, 0x37, 0x59, 0x7d, 0x5d, 0xa0, 0x36, 0x8b, + 0x9c, 0xda, 0xdc, 0x92, 0x40, 0xbc, 0xe9, 0x2b, 0xcf, 0x57, 0x73, 0x30, 0x55, 0xb1, 0x5b, 0x54, + 0x77, 0x98, 0x09, 0xe3, 0x27, 0x73, 0x89, 0x26, 0x8c, 0x01, 0x8d, 0x08, 0x05, 0xb9, 0x9b, 0x57, + 0x10, 0x31, 0x0a, 0xac, 0x7e, 0x28, 0x0b, 0x90, 0xc7, 0xda, 0xbb, 0xff, 0x5e, 0xa6, 0x38, 0x12, + 0x58, 0xb4, 0x3a, 0xfd, 0xf3, 0x3f, 0x9c, 0x8e, 0xfd, 0x57, 0xc8, 0xe1, 0x0a, 0xc6, 0xec, 0xee, + 0xf0, 0x15, 0x95, 0xe2, 0x2b, 0x2a, 0xc7, 0x57, 0x34, 0xdb, 0x5b, 0xd1, 0x24, 0xeb, 0x00, 0x51, + 0x1a, 0x92, 0xbe, 0x8e, 0xff, 0xe3, 0x04, 0x40, 0xc5, 0xd8, 0x33, 0xb7, 0xc8, 0xee, 0xf0, 0x17, + 0xfc, 0xf9, 0x0f, 0xdd, 0xc7, 0xfd, 0x65, 0x66, 0x20, 0xbc, 0x0d, 0x26, 0xe8, 0xb8, 0x47, 0x2b, + 0x72, 0x35, 0x57, 0x91, 0x90, 0x0a, 0x31, 0x4b, 0x1f, 0x70, 0x75, 0x3f, 0x3f, 0x77, 0x85, 0xac, + 0xd4, 0x73, 0x85, 0x6c, 0xff, 0x3d, 0x88, 0x88, 0x8b, 0x65, 0xd5, 0xf7, 0x0a, 0x7b, 0xf4, 0x33, + 0xfc, 0x30, 0x35, 0x8a, 0x68, 0x82, 0x4f, 0x80, 0x09, 0x3b, 0xd8, 0xd0, 0x96, 0x23, 0xd7, 0xc1, + 0xca, 0xd6, 0xa6, 0xad, 0xfb, 0x39, 0x05, 0x37, 0xbf, 0x84, 0xf8, 0x18, 0xcb, 0xa1, 0x99, 0x93, + 0xcb, 0x7e, 0x50, 0x29, 0xaf, 0x1e, 0xe7, 0x4c, 0x77, 0x7b, 0xd5, 0xb4, 0x2e, 0x74, 0xd5, 0xff, + 0x2c, 0x66, 0x41, 0x32, 0xf8, 0x4b, 0xc9, 0xf0, 0xe7, 0x63, 0x76, 0xd4, 0x78, 0xd4, 0xee, 0x8c, + 0xa2, 0xd2, 0x9f, 0xdb, 0x08, 0x00, 0x6f, 0x87, 0x3c, 0x61, 0x94, 0x76, 0xa2, 0x67, 0x22, 0xf1, + 0x0b, 0x28, 0xe9, 0xf4, 0x0f, 0xf5, 0x3d, 0x01, 0x8e, 0x67, 0x39, 0x1c, 0x17, 0x0e, 0xc4, 0x59, + 0xea, 0x90, 0x9e, 0x79, 0x3c, 0x4c, 0x50, 0x49, 0x2b, 0x73, 0x6c, 0x2b, 0x2e, 0x1c, 0x51, 0x00, + 0xf2, 0x6b, 0xf6, 0x1e, 0xaa, 0xdb, 0x85, 0x8c, 0xf7, 0xec, 0xf1, 0x57, 0xb7, 0x0b, 0x92, 0xfa, + 0xaa, 0x49, 0x98, 0x0c, 0xa2, 0xf9, 0x7c, 0x5e, 0x82, 0x42, 0xc9, 0x41, 0x86, 0x8b, 0x96, 0x1c, + 0x7b, 0x87, 0xd4, 0x48, 0xdc, 0x3b, 0xf4, 0x37, 0x84, 0x5d, 0x3c, 0x82, 0x28, 0x3b, 0xbd, 0x85, + 0x45, 0x60, 0x49, 0x16, 0x21, 0x25, 0x7f, 0x11, 0x52, 0x7d, 0x8b, 0x90, 0xcb, 0x87, 0x68, 0x29, + 0xe9, 0x37, 0xb5, 0x4f, 0x4b, 0x90, 0x2b, 0xb5, 0x6d, 0x0b, 0xb1, 0x47, 0x98, 0x06, 0x9e, 0x95, + 0xe9, 0xbf, 0x13, 0xa1, 0x3e, 0x53, 0x12, 0xb5, 0x35, 0x42, 0x01, 0x78, 0x65, 0x0b, 0xca, 0x56, + 0x6c, 0x90, 0x8a, 0x25, 0x9d, 0xbe, 0x40, 0xbf, 0x29, 0xc1, 0x14, 0x89, 0x8b, 0x53, 0x6c, 0xb7, + 0xd5, 0x47, 0x85, 0x42, 0xed, 0x13, 0x11, 0x49, 0xfd, 0x1d, 0x61, 0x17, 0xfd, 0xa0, 0x56, 0x01, + 0xed, 0x04, 0x01, 0x82, 0x92, 0x79, 0x8c, 0x8b, 0xed, 0xa5, 0x0d, 0x64, 0x28, 0x7d, 0x51, 0xff, + 0x85, 0xe4, 0x19, 0x00, 0xd6, 0x85, 0x75, 0x07, 0xed, 0x99, 0xe8, 0xa2, 0x7a, 0x65, 0x28, 0xec, + 0xfd, 0x41, 0x3f, 0xde, 0x24, 0xbc, 0x88, 0xc3, 0x90, 0x8c, 0xdc, 0xca, 0x9a, 0x6e, 0x87, 0x99, + 0x68, 0x2f, 0xde, 0x1b, 0x89, 0x85, 0x21, 0xa3, 0xb3, 0xd9, 0x05, 0xd7, 0x6c, 0xa2, 0xb9, 0x48, + 0x5f, 0xb0, 0x1f, 0x9e, 0x80, 0xc9, 0x0d, 0xab, 0xdb, 0x69, 0x1b, 0xdd, 0x6d, 0xf5, 0xdf, 0x65, + 0xc8, 0x93, 0xdb, 0xc0, 0xd4, 0x9f, 0xe0, 0x62, 0x0b, 0x3c, 0x7d, 0x17, 0x39, 0xbe, 0x0b, 0x0e, + 0x79, 0xe9, 0x7f, 0x59, 0xb9, 0xfa, 0x01, 0x59, 0x74, 0x92, 0xea, 0x17, 0xca, 0x5c, 0x0b, 0xdf, + 0xff, 0x38, 0x7b, 0xc7, 0x6c, 0xba, 0xbb, 0x4e, 0x70, 0xf5, 0xf5, 0xe3, 0xc4, 0xa8, 0xac, 0x93, + 0xbf, 0xf4, 0xe0, 0x77, 0xd5, 0x80, 0x09, 0x9a, 0xb8, 0x6f, 0x3b, 0x69, 0xff, 0xf9, 0xdb, 0x93, + 0x90, 0x37, 0x1c, 0xd7, 0xec, 0xba, 0x74, 0x83, 0x95, 0xbe, 0x79, 0xdd, 0x25, 0x79, 0xda, 0x70, + 0xda, 0x7e, 0x14, 0x92, 0x20, 0x41, 0xfd, 0x5d, 0xa1, 0xf9, 0x63, 0x7c, 0xcd, 0x93, 0x41, 0x7e, + 0xef, 0x10, 0x6b, 0xd4, 0x97, 0xc3, 0x65, 0x7a, 0xb1, 0xae, 0x35, 0x48, 0xd0, 0x8a, 0x20, 0x3e, + 0x45, 0x4b, 0x7d, 0xb7, 0xcc, 0xac, 0xdf, 0x5d, 0xe2, 0xc6, 0x08, 0x2a, 0xc5, 0x70, 0x8c, 0x08, + 0x12, 0x62, 0x76, 0xab, 0xb9, 0x45, 0x58, 0x59, 0x7c, 0x11, 0xf6, 0xb7, 0x85, 0x77, 0x93, 0x02, + 0x51, 0x0e, 0x58, 0x03, 0x8c, 0xbb, 0x2d, 0xe8, 0x83, 0x42, 0x3b, 0x43, 0x83, 0x4a, 0x3a, 0x44, + 0xd8, 0xde, 0x38, 0x01, 0x13, 0xcb, 0x46, 0xbb, 0x8d, 0x9c, 0x4b, 0xde, 0x90, 0x54, 0xf0, 0x39, + 0x5c, 0x33, 0x2c, 0x73, 0x13, 0x75, 0xdd, 0xf8, 0xce, 0xf2, 0xbd, 0xc2, 0x91, 0x68, 0x69, 0x19, + 0xf3, 0xbd, 0xf4, 0x23, 0x64, 0x7e, 0x33, 0x64, 0x4d, 0x6b, 0xd3, 0xa6, 0x5d, 0x66, 0xef, 0xaa, + 0xbd, 0xff, 0x33, 0x9e, 0xba, 0xe0, 0x8c, 0x82, 0xc1, 0x68, 0x05, 0xb9, 0x48, 0xbf, 0xe7, 0x7c, + 0x7b, 0x16, 0x66, 0x7d, 0x26, 0xca, 0x56, 0x0b, 0x3d, 0xc0, 0x2e, 0xc5, 0xbc, 0x38, 0x2b, 0x7a, + 0x1c, 0xac, 0xb7, 0x3e, 0x98, 0x54, 0x84, 0x48, 0xeb, 0x00, 0x4d, 0xc3, 0x45, 0x5b, 0xb6, 0x63, + 0x06, 0xfd, 0xe1, 0x13, 0x93, 0x50, 0x2b, 0x91, 0xbf, 0x2f, 0xe9, 0x0c, 0x1d, 0xe5, 0x4e, 0x98, + 0x46, 0xc1, 0xf9, 0x7b, 0x7f, 0xa9, 0x26, 0x16, 0x2f, 0x36, 0xbf, 0xfa, 0x17, 0x42, 0xa7, 0xce, + 0x44, 0xaa, 0x99, 0x0c, 0xb3, 0xc6, 0x70, 0x6d, 0x68, 0xa3, 0xb2, 0x56, 0xd4, 0x6b, 0x2b, 0xc5, + 0xd5, 0xd5, 0x72, 0x65, 0x39, 0x08, 0xfc, 0xa2, 0xc0, 0xdc, 0x62, 0xf5, 0x5c, 0x85, 0x89, 0xcc, + 0x93, 0x55, 0xd7, 0x61, 0xd2, 0x97, 0x57, 0x3f, 0x5f, 0x4c, 0x56, 0x66, 0xd4, 0x17, 0x93, 0x49, + 0xf2, 0x8c, 0x33, 0xb3, 0x19, 0x38, 0xe8, 0xe0, 0x67, 0xf5, 0x8f, 0x0c, 0xc8, 0xe1, 0x35, 0x75, + 0xf5, 0x9d, 0x78, 0x1b, 0xb0, 0xd3, 0x36, 0x9a, 0x48, 0xdd, 0x49, 0x60, 0x8d, 0xfb, 0x57, 0x23, + 0x48, 0xfb, 0xae, 0x46, 0xc0, 0x8f, 0xd4, 0xea, 0x3b, 0xde, 0x6f, 0x1d, 0x5f, 0x27, 0x59, 0xf8, + 0x03, 0x5a, 0xb1, 0xbb, 0x2b, 0x64, 0xf9, 0x9f, 0xb2, 0x19, 0xa1, 0x92, 0xd1, 0x3c, 0x25, 0xb3, + 0x44, 0xc5, 0xf6, 0x61, 0xe2, 0x38, 0x1a, 0xc3, 0xf5, 0xdd, 0x59, 0xc8, 0xd5, 0x3a, 0x6d, 0xd3, + 0x55, 0x5f, 0x26, 0x8d, 0x04, 0x33, 0x72, 0x9d, 0x85, 0x3c, 0xf0, 0x3a, 0x8b, 0x70, 0xd7, 0x35, + 0x2b, 0xb0, 0xeb, 0x5a, 0x47, 0x0f, 0xb8, 0xfc, 0xae, 0xeb, 0x6d, 0x34, 0x78, 0x1b, 0xd9, 0xb3, + 0x7d, 0x74, 0x1f, 0x91, 0xe2, 0x6a, 0xf5, 0x89, 0x0a, 0x78, 0xe6, 0xf1, 0x34, 0x38, 0x19, 0x40, + 0x7e, 0xa1, 0x5a, 0xaf, 0x57, 0xd7, 0x0a, 0x47, 0x70, 0x54, 0x9b, 0xea, 0x3a, 0x09, 0x15, 0x53, + 0xae, 0x54, 0x34, 0xbd, 0x20, 0xe1, 0x70, 0x69, 0xe5, 0xfa, 0xaa, 0x56, 0x90, 0xf9, 0xd8, 0xe6, + 0xb1, 0xe6, 0x37, 0x5f, 0x76, 0x9a, 0xea, 0x25, 0x66, 0x88, 0x47, 0xf3, 0x93, 0xbe, 0x72, 0xfd, + 0xba, 0x0c, 0xb9, 0x35, 0xe4, 0x6c, 0x21, 0xf5, 0xe9, 0x09, 0x36, 0xf9, 0x36, 0x4d, 0xa7, 0x4b, + 0x82, 0xcb, 0x85, 0x9b, 0x7c, 0x6c, 0x9a, 0x72, 0x1d, 0xcc, 0x76, 0x51, 0xd3, 0xb6, 0x5a, 0x7e, + 0x26, 0xd2, 0x1f, 0xf1, 0x89, 0xfc, 0xbd, 0xf2, 0x02, 0x90, 0x61, 0x46, 0x47, 0xb2, 0x53, 0x97, + 0x04, 0x98, 0x7e, 0xa5, 0xa6, 0x0f, 0xcc, 0x77, 0x64, 0xef, 0xa7, 0xce, 0x25, 0xf5, 0xa5, 0xc2, + 0xbb, 0xaf, 0x37, 0x41, 0x1e, 0xab, 0xa9, 0x3f, 0x46, 0xf7, 0xef, 0x8f, 0x69, 0x1e, 0x65, 0x01, + 0x8e, 0x75, 0x51, 0x1b, 0x35, 0x5d, 0xd4, 0xf2, 0x9a, 0xae, 0x3e, 0xb0, 0x53, 0xd8, 0x9f, 0x5d, + 0xfd, 0x33, 0x16, 0xc0, 0x3b, 0x78, 0x00, 0xaf, 0xef, 0x23, 0x4a, 0xaf, 0x42, 0xd1, 0xb6, 0xb2, + 0x57, 0x8d, 0x5a, 0xdb, 0x0e, 0x16, 0xc5, 0xfd, 0x77, 0xef, 0xdb, 0xb6, 0xbb, 0xd3, 0xc6, 0xdf, + 0xe8, 0x01, 0x03, 0xff, 0x5d, 0x99, 0x87, 0x09, 0xc3, 0xba, 0x84, 0x3f, 0x65, 0x63, 0x6a, 0xed, + 0x67, 0x52, 0x5f, 0x15, 0x20, 0x7f, 0x17, 0x87, 0xfc, 0x63, 0xc5, 0xd8, 0x4d, 0x1f, 0xf8, 0x5f, + 0x98, 0x80, 0xdc, 0xba, 0xd1, 0x75, 0x91, 0xfa, 0xff, 0xc8, 0xa2, 0xc8, 0x5f, 0x0f, 0x73, 0x9b, + 0x76, 0x73, 0xb7, 0x8b, 0x5a, 0x7c, 0xa3, 0xec, 0x49, 0x1d, 0x05, 0xe6, 0xca, 0x8d, 0x50, 0xf0, + 0x13, 0x29, 0x59, 0x7f, 0x1b, 0x7e, 0x5f, 0x3a, 0x8e, 0x94, 0xdd, 0x5d, 0x37, 0x1c, 0xb7, 0xba, + 0x89, 0xd3, 0x82, 0x48, 0xd9, 0x6c, 0x22, 0x07, 0x7d, 0x3e, 0x06, 0xfa, 0x89, 0x68, 0xe8, 0x27, + 0x05, 0xa0, 0x57, 0x8a, 0x30, 0xb9, 0x69, 0xb6, 0x11, 0xfe, 0x61, 0x0a, 0xff, 0xd0, 0x6f, 0x4c, + 0xc2, 0xb2, 0x0f, 0xc6, 0xa4, 0x25, 0xb3, 0x8d, 0xf4, 0xe0, 0x37, 0x7f, 0x22, 0x03, 0xe1, 0x44, + 0x66, 0x95, 0xf8, 0xd3, 0x7a, 0x86, 0x97, 0x65, 0xec, 0x20, 0x7f, 0xf1, 0xcd, 0xa2, 0x87, 0x5b, + 0x5a, 0x86, 0x6b, 0x60, 0x30, 0x66, 0x74, 0xfc, 0xcc, 0xfb, 0x85, 0xc8, 0xbd, 0x7e, 0x21, 0xcf, + 0x91, 0x93, 0xf5, 0x88, 0x3e, 0xb3, 0x11, 0x2d, 0xea, 0xbc, 0x0f, 0x10, 0xb1, 0x14, 0x83, 0x77, + 0x0f, 0x98, 0xa6, 0xe1, 0x20, 0x77, 0x9d, 0xf5, 0xc4, 0xc8, 0xe9, 0x7c, 0x22, 0x76, 0xe5, 0xeb, + 0xd6, 0x8c, 0x1d, 0x84, 0x0b, 0x2b, 0x79, 0xdf, 0xa8, 0x8b, 0xd6, 0xbe, 0xf4, 0xb0, 0xff, 0xcd, + 0x8d, 0xba, 0xff, 0xed, 0x57, 0xc7, 0xf4, 0x9b, 0xe1, 0x6b, 0xb3, 0x20, 0x97, 0x76, 0xdd, 0x47, + 0x74, 0xf7, 0xfb, 0x7d, 0x61, 0x3f, 0x17, 0xda, 0x9f, 0x45, 0x5e, 0x24, 0x3f, 0xa6, 0xde, 0x37, + 0xa1, 0x96, 0x88, 0xf9, 0xd3, 0x44, 0xd5, 0x2d, 0x7d, 0x1d, 0x79, 0xab, 0x1c, 0x38, 0x58, 0x3e, + 0x98, 0x39, 0xb8, 0x69, 0xae, 0x92, 0xfe, 0x89, 0xe9, 0x19, 0x82, 0x77, 0xbf, 0xe3, 0xc9, 0x72, + 0xb1, 0xfa, 0xf0, 0xf6, 0x3a, 0x16, 0xe5, 0x8c, 0x4e, 0x5e, 0xd4, 0x97, 0x0b, 0xbb, 0x9d, 0x13, + 0xb1, 0xc5, 0xba, 0x12, 0x26, 0xb3, 0xa9, 0xc4, 0x2e, 0x0b, 0x8d, 0x29, 0x36, 0x7d, 0xc0, 0xbe, + 0xcd, 0xba, 0x0a, 0x16, 0x0f, 0x8c, 0x98, 0xfa, 0x6a, 0xe1, 0xed, 0x28, 0x52, 0xed, 0x01, 0xeb, + 0x85, 0xc9, 0xe4, 0x2d, 0xb6, 0x59, 0x15, 0x5b, 0x70, 0xfa, 0x12, 0xff, 0x96, 0x0c, 0x79, 0xb2, + 0x05, 0xa9, 0xbe, 0x39, 0x93, 0xe0, 0x96, 0x75, 0x97, 0x77, 0x21, 0x0c, 0xde, 0x93, 0xac, 0x39, + 0x70, 0xae, 0x86, 0xd9, 0x44, 0xae, 0x86, 0xfc, 0x39, 0x4e, 0x81, 0x76, 0x44, 0xea, 0x98, 0xf2, + 0x74, 0x32, 0x49, 0x0b, 0xeb, 0xcb, 0x50, 0xfa, 0x78, 0x3f, 0x2f, 0x07, 0x33, 0xa4, 0xe8, 0x73, + 0x66, 0x6b, 0x0b, 0xb9, 0xea, 0xbb, 0xa5, 0x1f, 0x1e, 0xd4, 0x95, 0x0a, 0xcc, 0x5c, 0xc4, 0x6c, + 0xaf, 0x1a, 0x97, 0xec, 0x5d, 0x97, 0xae, 0x5c, 0xdc, 0x18, 0xbb, 0xee, 0x41, 0xea, 0x39, 0x4f, + 0xfe, 0xd0, 0xb9, 0xff, 0x3d, 0x19, 0x93, 0x05, 0x7f, 0xe2, 0xc0, 0x95, 0xc7, 0x46, 0x16, 0x9b, + 0xa4, 0x9c, 0x84, 0xfc, 0x9e, 0x89, 0x2e, 0x96, 0x5b, 0xd4, 0xba, 0xa5, 0x6f, 0xea, 0xef, 0x0b, + 0xef, 0xdb, 0xb2, 0x70, 0x53, 0x5e, 0xd2, 0xd5, 0x42, 0xb1, 0xdd, 0xdb, 0x81, 0x6c, 0x8d, 0xe1, + 0x4c, 0x31, 0x7f, 0x19, 0x67, 0x29, 0x81, 0x22, 0x46, 0x19, 0xce, 0x7c, 0x28, 0x8f, 0xd8, 0x13, + 0x2b, 0x44, 0x00, 0x23, 0xbe, 0xa7, 0x53, 0x2c, 0xbe, 0xc4, 0x80, 0xa2, 0xd3, 0x97, 0xfc, 0xeb, + 0x64, 0x98, 0xaa, 0x21, 0x77, 0xc9, 0x44, 0xed, 0x56, 0x57, 0x75, 0x0e, 0x6e, 0x1a, 0xdd, 0x0c, + 0xf9, 0x4d, 0x4c, 0x6c, 0xd0, 0xb9, 0x05, 0x9a, 0x4d, 0x7d, 0xad, 0x24, 0xba, 0x23, 0x4c, 0x57, + 0xdf, 0x7c, 0x6e, 0x47, 0x02, 0x93, 0x98, 0x47, 0x6f, 0x7c, 0xc9, 0x63, 0x08, 0x6c, 0x2b, 0xc3, + 0x0c, 0xbd, 0xbd, 0xaf, 0xd8, 0x36, 0xb7, 0x2c, 0x75, 0x77, 0x04, 0x2d, 0x44, 0xb9, 0x05, 0x72, + 0x86, 0x47, 0x8d, 0x6e, 0xbd, 0xaa, 0x7d, 0x3b, 0x4f, 0x5c, 0x9e, 0x4e, 0x32, 0x26, 0x08, 0x23, + 0x19, 0x2a, 0xb6, 0xcf, 0xf3, 0x18, 0xc3, 0x48, 0x0e, 0x2c, 0x3c, 0x7d, 0xc4, 0xbe, 0x22, 0xc3, + 0x71, 0xca, 0xc0, 0x59, 0xe4, 0xb8, 0x66, 0xd3, 0x68, 0x13, 0xe4, 0x5e, 0x90, 0x19, 0x05, 0x74, + 0x2b, 0x30, 0xbb, 0xc7, 0x92, 0xa5, 0x10, 0x9e, 0xe9, 0x0b, 0x21, 0xc7, 0x80, 0xce, 0xff, 0x98, + 0x20, 0x1c, 0x1f, 0x27, 0x55, 0x8e, 0xe6, 0x18, 0xc3, 0xf1, 0x09, 0x33, 0x91, 0x3e, 0xc4, 0x2f, + 0xa1, 0xa1, 0x79, 0xc2, 0xee, 0xf3, 0x0b, 0xc2, 0xd8, 0x6e, 0xc0, 0x34, 0xc6, 0x92, 0xfc, 0x48, + 0x97, 0x21, 0x62, 0x94, 0x38, 0xe8, 0x77, 0xe8, 0x85, 0x61, 0xc1, 0xbf, 0x3a, 0x4b, 0x47, 0x3d, + 0x07, 0x10, 0x7e, 0x62, 0x3b, 0xe9, 0x4c, 0x54, 0x27, 0x2d, 0x89, 0x75, 0xd2, 0x6f, 0x12, 0x0e, + 0x96, 0xd2, 0x9f, 0xed, 0x83, 0xab, 0x87, 0x58, 0x98, 0x8c, 0xc1, 0xa5, 0xa7, 0xaf, 0x17, 0xaf, + 0xca, 0xf6, 0x5e, 0xd3, 0xfe, 0xb1, 0x91, 0xcc, 0xa7, 0xd8, 0xfe, 0x40, 0xee, 0xe9, 0x0f, 0x0e, + 0x60, 0x49, 0xdf, 0x00, 0x47, 0x49, 0x11, 0xa5, 0x80, 0xad, 0x1c, 0x09, 0x05, 0xd1, 0x93, 0xac, + 0x7e, 0x7c, 0x08, 0x25, 0x18, 0x74, 0x87, 0x7c, 0x5c, 0x27, 0x97, 0xcc, 0xd8, 0x4d, 0xaa, 0x20, + 0x87, 0x77, 0xf5, 0xfc, 0x37, 0xb3, 0xc4, 0xda, 0xdd, 0xc0, 0x77, 0xba, 0xa9, 0x7f, 0x99, 0x1d, + 0xc5, 0x88, 0x70, 0x37, 0x64, 0xb1, 0x8b, 0xbb, 0x1c, 0xb9, 0xa4, 0x11, 0x16, 0x19, 0x5e, 0xb8, + 0x87, 0x1e, 0x70, 0x57, 0x8e, 0xe8, 0xf8, 0x4f, 0xe5, 0x46, 0x38, 0x7a, 0xde, 0x68, 0x5e, 0xd8, + 0x72, 0xec, 0x5d, 0x7c, 0xfb, 0x95, 0x4d, 0xaf, 0xd1, 0xc2, 0xd7, 0x11, 0xf2, 0x1f, 0x94, 0x5b, + 0x7d, 0xd3, 0x21, 0x37, 0xc8, 0x74, 0x58, 0x39, 0x42, 0x8d, 0x07, 0xe5, 0xf1, 0x41, 0xa7, 0x93, + 0x8f, 0xed, 0x74, 0x56, 0x8e, 0xf8, 0xdd, 0x8e, 0xb2, 0x08, 0x93, 0x2d, 0x73, 0x0f, 0x6f, 0x55, + 0xe3, 0x59, 0xd7, 0xa0, 0xa3, 0xcb, 0x8b, 0xe6, 0x1e, 0xd9, 0xd8, 0x5e, 0x39, 0xa2, 0x07, 0x7f, + 0x2a, 0xcb, 0x30, 0x85, 0xb7, 0x05, 0x30, 0x99, 0xc9, 0x44, 0xc7, 0x92, 0x57, 0x8e, 0xe8, 0xe1, + 0xbf, 0x9e, 0xf5, 0x91, 0xc5, 0x67, 0x3f, 0xee, 0xf2, 0xb7, 0xdb, 0x33, 0x89, 0xb6, 0xdb, 0x3d, + 0x59, 0x90, 0x0d, 0xf7, 0x93, 0x90, 0x6b, 0x62, 0x09, 0x4b, 0x54, 0xc2, 0xe4, 0x55, 0xb9, 0x03, + 0xb2, 0x3b, 0x86, 0xe3, 0x4f, 0x9e, 0xaf, 0x1f, 0x4c, 0x77, 0xcd, 0x70, 0x2e, 0x78, 0x08, 0x7a, + 0x7f, 0x2d, 0x4c, 0x40, 0x0e, 0x0b, 0x2e, 0x78, 0x50, 0xdf, 0x9a, 0x25, 0x66, 0x48, 0xc9, 0xb6, + 0xbc, 0x61, 0xbf, 0x6e, 0xfb, 0x07, 0x64, 0x7e, 0x3f, 0x33, 0x1a, 0x0b, 0xb2, 0xef, 0xbd, 0xe6, + 0x72, 0xe4, 0xbd, 0xe6, 0x3d, 0x17, 0xec, 0x66, 0x7b, 0x2f, 0xd8, 0x0d, 0x97, 0x0f, 0x72, 0x83, + 0x1d, 0x55, 0xfe, 0x6c, 0x08, 0xd3, 0xa5, 0x57, 0x10, 0xd1, 0x33, 0xf0, 0xb6, 0x69, 0x31, 0x75, + 0xf6, 0x5f, 0x13, 0x76, 0x4a, 0x49, 0x8d, 0x9a, 0x01, 0xec, 0xa5, 0xdf, 0x37, 0xfd, 0x56, 0x16, + 0x4e, 0x91, 0x6b, 0x9c, 0xf7, 0x50, 0xdd, 0xe6, 0xef, 0x9b, 0x54, 0xff, 0x78, 0x24, 0x4a, 0xd3, + 0x67, 0xc0, 0x91, 0xfb, 0x0e, 0x38, 0xfb, 0x0e, 0x29, 0x67, 0x07, 0x1c, 0x52, 0xce, 0x25, 0x5b, + 0x39, 0xfc, 0x10, 0xab, 0x3f, 0xeb, 0xbc, 0xfe, 0xdc, 0x1e, 0x01, 0x50, 0x3f, 0xb9, 0x8c, 0xc4, + 0xbe, 0x79, 0x67, 0xa0, 0x29, 0x35, 0x4e, 0x53, 0xee, 0x1a, 0x9e, 0x91, 0xf4, 0xb5, 0xe5, 0xf7, + 0xb2, 0x70, 0x59, 0xc8, 0x4c, 0x05, 0x5d, 0xa4, 0x8a, 0xf2, 0xf9, 0x91, 0x28, 0x4a, 0xf2, 0x18, + 0x08, 0x69, 0x6b, 0xcc, 0x9f, 0x08, 0x9f, 0x1d, 0xea, 0x05, 0x2a, 0x90, 0x4d, 0x84, 0xb2, 0x9c, + 0x84, 0x3c, 0xe9, 0x61, 0x28, 0x34, 0xf4, 0x2d, 0x61, 0x77, 0x23, 0x76, 0xe2, 0x48, 0x94, 0xb7, + 0x31, 0xe8, 0x0f, 0x5d, 0xd7, 0xa8, 0xef, 0x3a, 0x56, 0xd9, 0x72, 0x6d, 0xf5, 0xe7, 0x47, 0xa2, + 0x38, 0x81, 0x37, 0x9c, 0x3c, 0x8c, 0x37, 0xdc, 0x50, 0xab, 0x1c, 0x7e, 0x0d, 0x0e, 0x65, 0x95, + 0x23, 0xa2, 0xf0, 0xf4, 0xf1, 0x7b, 0x87, 0x0c, 0x27, 0xe9, 0x64, 0x6b, 0x81, 0xb7, 0x10, 0xd5, + 0xfb, 0x46, 0x01, 0xe4, 0x71, 0xdf, 0x4c, 0xa2, 0xb7, 0x9c, 0xe1, 0x17, 0xfe, 0xa4, 0x54, 0xec, + 0xfd, 0x0e, 0xdc, 0x74, 0xb0, 0x87, 0xc3, 0x91, 0x20, 0x25, 0x76, 0xad, 0x43, 0x02, 0x36, 0xd2, + 0xc7, 0xec, 0x45, 0x32, 0xe4, 0xe9, 0xf5, 0xfd, 0x1b, 0xa9, 0x38, 0x4c, 0xf0, 0x51, 0x9e, 0x05, + 0x76, 0xe4, 0x12, 0x5f, 0x72, 0x9f, 0xde, 0x5e, 0xdc, 0x21, 0xdd, 0x62, 0xff, 0x1d, 0x09, 0xa6, + 0x6b, 0xc8, 0x2d, 0x19, 0x8e, 0x63, 0x1a, 0x5b, 0xa3, 0xf2, 0xf8, 0x16, 0xf5, 0x1e, 0x56, 0xbf, + 0x9b, 0x11, 0x3d, 0x4f, 0x13, 0x2c, 0x84, 0xfb, 0xac, 0x46, 0xc4, 0x12, 0x7c, 0x58, 0xe8, 0xcc, + 0xcc, 0x20, 0x6a, 0x63, 0xf0, 0xd8, 0x96, 0x60, 0xc2, 0x3f, 0x8b, 0x77, 0x33, 0x77, 0x3e, 0x73, + 0xdb, 0xdd, 0xf1, 0x8f, 0xc1, 0xe0, 0xe7, 0xfd, 0x67, 0xc0, 0xd4, 0x57, 0x26, 0x74, 0x94, 0x8f, + 0x3f, 0x48, 0x98, 0xac, 0x8d, 0x25, 0x71, 0x87, 0x3f, 0xac, 0xa3, 0x83, 0xbf, 0x33, 0x41, 0x97, + 0x23, 0x57, 0x0d, 0x17, 0x3d, 0xa0, 0x7e, 0x41, 0x86, 0x89, 0x1a, 0x72, 0xbd, 0xf1, 0x96, 0xbb, + 0xdc, 0x74, 0x58, 0x0d, 0x57, 0x98, 0x15, 0x8f, 0x29, 0xba, 0x86, 0x71, 0x0f, 0x4c, 0x75, 0x1c, + 0xbb, 0x89, 0xba, 0x5d, 0xba, 0x7a, 0xc1, 0x3a, 0xaa, 0xf5, 0x1b, 0xfd, 0x31, 0x6b, 0xf3, 0xeb, + 0xfe, 0x3f, 0x7a, 0xf8, 0x7b, 0x52, 0x33, 0x80, 0x50, 0xa2, 0x15, 0x1c, 0xb7, 0x19, 0x10, 0x57, + 0x78, 0xfa, 0x40, 0x7f, 0x56, 0x86, 0x99, 0x1a, 0x72, 0x03, 0x29, 0x26, 0xd8, 0xe4, 0x88, 0x86, + 0x97, 0x83, 0x52, 0x3e, 0x18, 0x94, 0xe2, 0x57, 0x03, 0xf2, 0xd2, 0x0c, 0x88, 0x8d, 0xf1, 0x6a, + 0x40, 0x31, 0x0e, 0xc6, 0x70, 0x7c, 0xed, 0xd1, 0x30, 0x85, 0x79, 0xc1, 0x0d, 0xf6, 0x97, 0xb2, + 0x61, 0xe3, 0xfd, 0x62, 0x4a, 0x8d, 0xf7, 0x4e, 0xc8, 0xed, 0x18, 0xce, 0x85, 0x2e, 0x6e, 0xb8, + 0xd3, 0x22, 0x66, 0xfb, 0x9a, 0x97, 0x5d, 0x27, 0x7f, 0xf5, 0xf7, 0xd3, 0xcc, 0x25, 0xf3, 0xd3, + 0x7c, 0x58, 0x4a, 0x34, 0x12, 0x92, 0xb9, 0xc3, 0x08, 0x9b, 0x7c, 0x82, 0x71, 0x33, 0xa6, 0xec, + 0xf4, 0x95, 0xe3, 0x05, 0x32, 0x4c, 0x7a, 0xe3, 0x36, 0xb6, 0xc7, 0xcf, 0x1d, 0x5c, 0x1d, 0xfa, + 0x1b, 0xfa, 0x09, 0x7b, 0x60, 0x5f, 0x22, 0xa3, 0x33, 0xef, 0x13, 0xf4, 0xc0, 0x71, 0x85, 0xa7, + 0x8f, 0xc7, 0xbb, 0x08, 0x1e, 0xb8, 0x3d, 0xa8, 0x6f, 0x90, 0x41, 0x5e, 0x46, 0xee, 0xb8, 0xad, + 0xc8, 0xb7, 0x09, 0x87, 0x38, 0xe2, 0x04, 0x86, 0x79, 0x9e, 0x5f, 0x46, 0xa3, 0x69, 0x40, 0x62, + 0xb1, 0x8d, 0x84, 0x18, 0x48, 0x1f, 0xb5, 0xf7, 0x11, 0xd4, 0xc8, 0xe6, 0xc2, 0xcf, 0x8d, 0xa0, + 0x57, 0x1d, 0xef, 0xc2, 0x87, 0x2f, 0x40, 0x4c, 0xe3, 0xb0, 0xda, 0x5b, 0xbf, 0xc2, 0xc7, 0x72, + 0x15, 0x1f, 0x78, 0x8d, 0x7d, 0x1b, 0x35, 0x2f, 0xa0, 0x96, 0xfa, 0x33, 0x07, 0x87, 0xee, 0x14, + 0x4c, 0x34, 0x09, 0x35, 0x0c, 0xde, 0xa4, 0xee, 0xbf, 0x26, 0xb8, 0x57, 0x9a, 0xef, 0x88, 0xc8, + 0xef, 0x63, 0xbc, 0x57, 0x5a, 0xa0, 0xf8, 0x31, 0x98, 0x2d, 0x64, 0x96, 0x51, 0x6e, 0xda, 0x96, + 0xfa, 0x5f, 0x0e, 0x0e, 0xcb, 0x55, 0x30, 0x65, 0x36, 0x6d, 0x0b, 0x87, 0xa1, 0xf0, 0x0f, 0x01, + 0x05, 0x09, 0xfe, 0x57, 0x6d, 0xc7, 0xbe, 0xdf, 0xa4, 0xbb, 0xe6, 0x61, 0xc2, 0xb0, 0xc6, 0x84, + 0xc7, 0xfa, 0x61, 0x19, 0x13, 0x7d, 0xca, 0x4e, 0x1f, 0xb2, 0x8f, 0x87, 0xde, 0x6d, 0xa4, 0x2b, + 0x7c, 0x44, 0xac, 0x02, 0x0f, 0x33, 0x9c, 0xb1, 0xb5, 0x38, 0x94, 0xe1, 0x2c, 0x86, 0x81, 0x31, + 0xdc, 0x58, 0x11, 0xe2, 0x98, 0xfa, 0x1a, 0xf0, 0x01, 0xd0, 0x19, 0x9d, 0x79, 0x38, 0x24, 0x3a, + 0x87, 0x63, 0x22, 0x7e, 0x90, 0x86, 0xc8, 0xa4, 0x16, 0x8f, 0xfa, 0x5f, 0x47, 0x01, 0xce, 0xed, + 0xc3, 0xf8, 0x2b, 0x10, 0x6f, 0x85, 0x04, 0x37, 0x62, 0xef, 0x93, 0xa0, 0x47, 0x65, 0x8c, 0x77, + 0xc5, 0x8b, 0x94, 0x9f, 0x3e, 0x80, 0xcf, 0x97, 0x61, 0x0e, 0xfb, 0x08, 0xb4, 0x91, 0xe1, 0x90, + 0x8e, 0x72, 0x24, 0x8e, 0xf2, 0xef, 0x12, 0x0e, 0xf0, 0xc3, 0xcb, 0x21, 0xe4, 0x63, 0x24, 0x50, + 0x88, 0x45, 0xf7, 0x11, 0x64, 0x61, 0x2c, 0xdb, 0x28, 0x85, 0x80, 0x05, 0xaa, 0xe2, 0xa3, 0xc1, + 0x23, 0xa1, 0x47, 0x2e, 0x2f, 0x0c, 0xbf, 0xb1, 0x8d, 0xd9, 0x23, 0x57, 0x84, 0x89, 0xf4, 0x31, + 0x79, 0xc3, 0x2d, 0x74, 0xc1, 0xb9, 0x8e, 0x2f, 0x8c, 0x7f, 0x75, 0x36, 0x38, 0xd1, 0xf6, 0xd9, + 0x91, 0x78, 0x60, 0x1e, 0x20, 0x20, 0xbe, 0x02, 0x59, 0xc7, 0xbe, 0x48, 0x96, 0xb6, 0x66, 0x75, + 0xfc, 0x4c, 0xae, 0xa7, 0x6c, 0xef, 0xee, 0x58, 0xe4, 0x64, 0xe8, 0xac, 0xee, 0xbf, 0x2a, 0xd7, + 0xc1, 0xec, 0x45, 0xd3, 0xdd, 0x5e, 0x41, 0x46, 0x0b, 0x39, 0xba, 0x7d, 0x11, 0x7b, 0xcc, 0x4d, + 0xea, 0x7c, 0x22, 0xef, 0xbf, 0x22, 0x60, 0x5f, 0xe2, 0x5b, 0xe4, 0xc7, 0x72, 0xfc, 0x2d, 0x89, + 0xe5, 0x19, 0xcd, 0x55, 0xfa, 0x0a, 0xf3, 0x7e, 0x19, 0xa6, 0x74, 0xfb, 0x22, 0x55, 0x92, 0xff, + 0xe3, 0x70, 0x75, 0x24, 0xf1, 0x44, 0x0f, 0x4b, 0x2e, 0x60, 0x7f, 0xec, 0x13, 0xbd, 0xd8, 0xe2, + 0xc7, 0x72, 0x72, 0x69, 0x46, 0xb7, 0x2f, 0xd6, 0x90, 0x4b, 0x5a, 0x84, 0xda, 0x18, 0x91, 0x93, + 0xb5, 0xd9, 0x25, 0x04, 0xe9, 0x3c, 0x3c, 0x78, 0x4f, 0xba, 0x8b, 0x10, 0x08, 0x28, 0x60, 0x71, + 0xdc, 0xbb, 0x08, 0x03, 0x39, 0x18, 0x43, 0x8c, 0x14, 0x19, 0xa6, 0x75, 0xfb, 0xa2, 0x37, 0x34, + 0x2c, 0x99, 0xed, 0xf6, 0x68, 0x46, 0xc8, 0xa4, 0xc6, 0xbf, 0x2f, 0x06, 0x9f, 0x8b, 0xb1, 0x1b, + 0xff, 0x03, 0x18, 0x48, 0x1f, 0x86, 0xe7, 0x90, 0xc6, 0xe2, 0x8f, 0xd0, 0xd6, 0x68, 0x70, 0x18, + 0xb6, 0x41, 0x04, 0x6c, 0x1c, 0x5a, 0x83, 0x88, 0xe2, 0x60, 0x2c, 0x3b, 0x27, 0x73, 0x25, 0x3c, + 0xcc, 0x8f, 0xb6, 0x4d, 0xbc, 0x27, 0x99, 0x6b, 0x22, 0x1d, 0x76, 0x39, 0x46, 0x46, 0x82, 0x46, + 0x02, 0x17, 0x44, 0x01, 0x1e, 0xd2, 0xc7, 0xe3, 0x23, 0x32, 0xcc, 0x10, 0x16, 0x1e, 0x21, 0x56, + 0xc0, 0x50, 0x8d, 0x8a, 0xad, 0xc1, 0xe1, 0x34, 0xaa, 0x18, 0x0e, 0xc6, 0x72, 0x2b, 0xa8, 0x67, + 0xc7, 0x0d, 0x71, 0x7c, 0x3c, 0x0a, 0xc1, 0xa1, 0x8d, 0xb1, 0x11, 0x1e, 0x21, 0x1f, 0xc6, 0x18, + 0x3b, 0xa4, 0x63, 0xe4, 0xcf, 0x09, 0x5a, 0xd1, 0x28, 0x31, 0x38, 0x40, 0x53, 0x18, 0x21, 0x0c, + 0x43, 0x36, 0x85, 0x43, 0x42, 0xe2, 0xab, 0x32, 0x00, 0x61, 0x60, 0xcd, 0xde, 0xc3, 0x97, 0xf9, + 0x8c, 0xa0, 0x3b, 0xeb, 0x75, 0xab, 0x97, 0x07, 0xb8, 0xd5, 0x27, 0x0c, 0xe1, 0x92, 0x74, 0x25, + 0x90, 0x91, 0xb2, 0x57, 0xc9, 0xb1, 0xaf, 0x04, 0xc6, 0x97, 0x9f, 0x3e, 0xc6, 0x5f, 0x26, 0xd6, + 0x5c, 0x78, 0xc0, 0xf4, 0x37, 0x47, 0x82, 0x32, 0x33, 0xfb, 0x97, 0xf9, 0xd9, 0xff, 0x01, 0xb0, + 0x1d, 0xd6, 0x46, 0x1c, 0x74, 0x70, 0x34, 0x7d, 0x1b, 0xf1, 0xf0, 0x0e, 0x88, 0xfe, 0x5c, 0x16, + 0x8e, 0xd2, 0x4e, 0xe4, 0x87, 0x01, 0xe2, 0x84, 0xe7, 0xf0, 0xb8, 0x4e, 0x72, 0x00, 0xca, 0xa3, + 0x5a, 0x90, 0x4a, 0xb2, 0x94, 0x29, 0xc0, 0xde, 0x58, 0x56, 0x37, 0xf2, 0xda, 0x03, 0x1d, 0xc3, + 0x6a, 0x89, 0x87, 0xfb, 0x1d, 0x00, 0xbc, 0xbf, 0xd6, 0x28, 0xf3, 0x6b, 0x8d, 0x7d, 0x56, 0x26, + 0x13, 0xef, 0x5c, 0x63, 0x91, 0x11, 0x76, 0xc7, 0xbe, 0x73, 0x1d, 0x5d, 0x76, 0xfa, 0x28, 0xbd, + 0x47, 0x86, 0x6c, 0xcd, 0x76, 0x5c, 0xf5, 0xb9, 0x49, 0x5a, 0x27, 0x91, 0x7c, 0x08, 0x92, 0xff, + 0xae, 0x94, 0xb8, 0x5b, 0x9a, 0x6f, 0x8e, 0x3f, 0xea, 0x6c, 0xb8, 0x06, 0xf6, 0xea, 0xf6, 0xca, + 0x67, 0xae, 0x6b, 0x4e, 0x1a, 0x4f, 0x87, 0xc8, 0xaf, 0x16, 0x7d, 0x00, 0x23, 0xb5, 0x78, 0x3a, + 0x91, 0x25, 0xa7, 0x8f, 0xdb, 0x43, 0x47, 0xa9, 0x6f, 0xeb, 0x92, 0xd9, 0x46, 0xea, 0x73, 0x89, + 0xcb, 0x48, 0xc5, 0xd8, 0x41, 0xe2, 0x47, 0x62, 0x62, 0x5d, 0x5b, 0x71, 0x7c, 0x59, 0x39, 0x8c, + 0x2f, 0x9b, 0xb4, 0x41, 0x91, 0x03, 0xe8, 0x84, 0xa5, 0x71, 0x37, 0xa8, 0x98, 0xb2, 0xc7, 0x12, + 0xa7, 0xf3, 0x58, 0x0d, 0xb9, 0xc4, 0xa8, 0xac, 0xfa, 0x37, 0xb0, 0xfc, 0xec, 0x48, 0x22, 0x76, + 0x06, 0x17, 0xbc, 0xc8, 0x3d, 0x17, 0xbc, 0xbc, 0x9f, 0x05, 0x67, 0x8d, 0x07, 0xe7, 0x27, 0xa3, + 0x05, 0xc4, 0x33, 0x39, 0x12, 0x98, 0xde, 0x16, 0xc0, 0xb4, 0xce, 0xc1, 0x74, 0xc7, 0x90, 0x5c, + 0xa4, 0x0f, 0xd8, 0xaf, 0xe4, 0xe0, 0x28, 0x99, 0xf4, 0x17, 0xad, 0x16, 0x8d, 0xb0, 0xfa, 0x66, + 0xe9, 0x90, 0x37, 0xdb, 0xf6, 0x87, 0x60, 0xe5, 0x62, 0x39, 0xe7, 0x7a, 0x6f, 0xc7, 0x5f, 0x20, + 0xe1, 0x5c, 0xbd, 0x4e, 0x14, 0xef, 0xb4, 0x89, 0xdf, 0x90, 0x1f, 0xfc, 0xc7, 0xdf, 0x65, 0x34, + 0x21, 0x7e, 0x97, 0xd1, 0x9f, 0x26, 0x5b, 0xb7, 0xc3, 0x45, 0xf7, 0x08, 0x3c, 0x65, 0xdb, 0x29, + 0xc1, 0x8a, 0x9e, 0x00, 0x77, 0x3f, 0x1a, 0xee, 0x64, 0x61, 0x04, 0x91, 0x21, 0xdd, 0xc9, 0x30, + 0x81, 0xc3, 0x74, 0x27, 0x1b, 0xc4, 0xc0, 0x18, 0x6e, 0xb5, 0xcf, 0xd1, 0xdd, 0x7c, 0xdc, 0x6e, + 0xd4, 0xbf, 0x96, 0x52, 0x1f, 0xa5, 0xbf, 0x97, 0x49, 0xe4, 0xff, 0x8c, 0xf9, 0x8a, 0x1f, 0xa6, + 0x93, 0x78, 0x34, 0xc7, 0x91, 0x1b, 0xc3, 0xba, 0x91, 0x84, 0x7d, 0xd1, 0xcf, 0x99, 0x2d, 0x77, + 0x7b, 0x44, 0x27, 0x3a, 0x2e, 0x7a, 0xb4, 0xfc, 0xeb, 0x91, 0xf1, 0x8b, 0xfa, 0x6f, 0x99, 0x44, + 0x21, 0xa4, 0x02, 0x91, 0x60, 0xb6, 0x22, 0x44, 0x9c, 0x20, 0xf0, 0x53, 0x2c, 0xbd, 0x31, 0x6a, + 0xf4, 0x59, 0xb3, 0x85, 0xec, 0x47, 0xa0, 0x46, 0x63, 0xbe, 0x46, 0xa7, 0xd1, 0x71, 0xe4, 0x7e, + 0x44, 0x35, 0x3a, 0x10, 0xc9, 0x88, 0x34, 0x3a, 0x96, 0x5e, 0xfa, 0x32, 0x7e, 0xe5, 0x0c, 0x9d, + 0x48, 0xad, 0x9a, 0xd6, 0x05, 0xf5, 0x5f, 0xf2, 0xfe, 0xc5, 0xcc, 0xe7, 0x4c, 0x77, 0x9b, 0xc6, + 0x82, 0xf9, 0x3d, 0xe1, 0xbb, 0x51, 0x86, 0x88, 0xf7, 0xc2, 0x87, 0x93, 0xca, 0xed, 0x0b, 0x27, + 0x55, 0x84, 0x59, 0xd3, 0x72, 0x91, 0x63, 0x19, 0xed, 0xa5, 0xb6, 0xb1, 0xd5, 0x3d, 0x35, 0xd1, + 0xf7, 0xf2, 0xba, 0x32, 0x93, 0x47, 0xe7, 0xff, 0x60, 0xaf, 0xaf, 0x9c, 0xe4, 0xaf, 0xaf, 0x8c, + 0x88, 0x7e, 0x35, 0x15, 0x1d, 0xfd, 0x2a, 0x88, 0x6e, 0x05, 0x83, 0x83, 0x63, 0x8b, 0xda, 0xc6, + 0x09, 0xc3, 0xfd, 0xdd, 0x2c, 0x18, 0x85, 0x2d, 0x08, 0xfd, 0xf8, 0x1a, 0x39, 0xd1, 0xea, 0x9e, + 0xa7, 0x08, 0xf3, 0xbd, 0x4a, 0x90, 0xd8, 0x42, 0x65, 0x2b, 0x2f, 0xf7, 0x54, 0x3e, 0x30, 0x79, + 0xb2, 0x02, 0x26, 0x0f, 0xab, 0x54, 0x39, 0x31, 0xa5, 0x4a, 0xb2, 0x58, 0x28, 0x52, 0xdb, 0x31, + 0x9c, 0x46, 0xca, 0xc1, 0x31, 0x3f, 0xda, 0x6d, 0xa7, 0x83, 0x0c, 0xc7, 0xb0, 0x9a, 0x48, 0xfd, + 0xb8, 0x34, 0x0a, 0xb3, 0x77, 0x09, 0x26, 0xcd, 0xa6, 0x6d, 0xd5, 0xcc, 0x67, 0xf8, 0x97, 0xcb, + 0xc5, 0x07, 0x59, 0xc7, 0x12, 0x29, 0xd3, 0x3f, 0xf4, 0xe0, 0x5f, 0xa5, 0x0c, 0x53, 0x4d, 0xc3, + 0x69, 0x91, 0x20, 0x7c, 0xb9, 0x9e, 0x8b, 0x9c, 0x22, 0x09, 0x95, 0xfc, 0x5f, 0xf4, 0xf0, 0x6f, + 0xa5, 0xca, 0x0b, 0x31, 0xdf, 0x13, 0xcd, 0x23, 0x92, 0xd8, 0x62, 0xf8, 0x13, 0x27, 0x73, 0x4f, + 0x3a, 0x0e, 0x6a, 0xe3, 0x3b, 0xe8, 0x49, 0x0f, 0x31, 0xa5, 0x87, 0x09, 0x49, 0x97, 0x07, 0x70, + 0x51, 0xfb, 0xd0, 0x18, 0xf7, 0xf2, 0x80, 0x10, 0x17, 0xe9, 0x6b, 0xe6, 0x3b, 0xf3, 0x30, 0x4b, + 0x7a, 0x35, 0x2a, 0x4e, 0xf5, 0xf9, 0xf8, 0x0a, 0x69, 0xf7, 0x5e, 0x74, 0x49, 0xad, 0x1d, 0x7c, + 0x4c, 0x2e, 0x80, 0x7c, 0x21, 0x08, 0x38, 0xe8, 0x3d, 0x26, 0xdd, 0xb7, 0xf7, 0xf9, 0x9a, 0x27, + 0x3c, 0x8d, 0x7b, 0xdf, 0x3e, 0xbe, 0xf8, 0xf4, 0xf1, 0xf9, 0x55, 0x19, 0xe4, 0x62, 0xab, 0xa5, + 0x36, 0x0f, 0x0e, 0xc5, 0x35, 0x30, 0xed, 0xb7, 0x99, 0x30, 0x06, 0x24, 0x9b, 0x94, 0x74, 0x11, + 0x34, 0x90, 0x4d, 0xb1, 0x35, 0xf6, 0x5d, 0x85, 0x98, 0xb2, 0xd3, 0x07, 0xe5, 0x37, 0x27, 0x68, + 0xa3, 0x59, 0xb0, 0xed, 0x0b, 0xf8, 0xa8, 0xcc, 0x73, 0x65, 0xc8, 0x2d, 0x21, 0xb7, 0xb9, 0x3d, + 0xa2, 0x36, 0xb3, 0xeb, 0xb4, 0xfd, 0x36, 0xb3, 0xef, 0x3e, 0xfc, 0xc1, 0x36, 0xac, 0xcf, 0xd6, + 0x3c, 0x66, 0x69, 0xdc, 0xd1, 0x9d, 0x63, 0x4b, 0x4f, 0x1f, 0x9c, 0x7f, 0x93, 0x61, 0x2e, 0x58, + 0xe1, 0x22, 0x98, 0xfc, 0x4a, 0xe6, 0x91, 0xb6, 0xde, 0xa9, 0x7e, 0x3e, 0x59, 0x88, 0xb4, 0x40, + 0xa6, 0x7c, 0xcd, 0x52, 0x5e, 0x58, 0x4c, 0x10, 0x3c, 0x4d, 0x8c, 0xc1, 0x31, 0xcc, 0xe0, 0x65, + 0x98, 0xc4, 0x0c, 0x2d, 0x9a, 0x7b, 0xd8, 0x75, 0x90, 0x5b, 0x68, 0x7c, 0xe6, 0x48, 0x16, 0x1a, + 0xef, 0xe0, 0x17, 0x1a, 0x05, 0x23, 0x1e, 0xfb, 0xeb, 0x8c, 0x09, 0x7d, 0x69, 0xbc, 0xff, 0x47, + 0xbe, 0xcc, 0x98, 0xc0, 0x97, 0x66, 0x40, 0xf9, 0xe9, 0x23, 0xfa, 0x9a, 0xff, 0x44, 0x3b, 0x5b, + 0x7f, 0x43, 0x55, 0xfd, 0xbf, 0x8e, 0x41, 0xf6, 0xac, 0xf7, 0xf0, 0x3f, 0xc2, 0x1b, 0xb1, 0x5e, + 0x3a, 0x82, 0xe0, 0x0c, 0x4f, 0x85, 0xac, 0x47, 0x9f, 0x4e, 0x5b, 0x6e, 0x14, 0xdb, 0xdd, 0xf5, + 0x18, 0xd1, 0xf1, 0x7f, 0xca, 0x49, 0xc8, 0x77, 0xed, 0x5d, 0xa7, 0xe9, 0x99, 0xcf, 0x9e, 0xc6, + 0xd0, 0xb7, 0xa4, 0x41, 0x49, 0x39, 0xd2, 0xf3, 0xa3, 0x73, 0x19, 0x65, 0x2e, 0x48, 0x92, 0xb9, + 0x0b, 0x92, 0x12, 0xec, 0x1f, 0x08, 0xf0, 0x96, 0xbe, 0x46, 0xfc, 0x35, 0xbe, 0x2b, 0xb0, 0x35, + 0x2a, 0xd8, 0x23, 0xc4, 0x72, 0x50, 0x75, 0x48, 0xea, 0xf0, 0xcd, 0x8b, 0x36, 0x88, 0x03, 0x3f, + 0x56, 0x87, 0x6f, 0x01, 0x1e, 0xc6, 0x72, 0x4a, 0x3d, 0x4f, 0x9d, 0x54, 0xef, 0x1b, 0x25, 0xba, + 0x59, 0x4e, 0xe9, 0x0f, 0x84, 0xce, 0x08, 0x9d, 0x57, 0x87, 0x46, 0xe7, 0x90, 0xdc, 0x57, 0xff, + 0x40, 0xc6, 0x91, 0x30, 0x7d, 0x23, 0x47, 0xfc, 0xa2, 0xa3, 0xc4, 0x10, 0x79, 0x63, 0x30, 0x17, + 0x07, 0x7a, 0x76, 0xf8, 0xd0, 0xe0, 0xbc, 0xe8, 0x18, 0xfe, 0xc7, 0x1d, 0x1a, 0x5c, 0x94, 0x91, + 0xf4, 0x81, 0x7c, 0x3d, 0xb9, 0x58, 0xac, 0xd8, 0x74, 0xcd, 0xbd, 0x11, 0xb7, 0x34, 0x7e, 0x78, + 0x49, 0x18, 0x0d, 0x78, 0x9f, 0x84, 0x08, 0x87, 0xe3, 0x8e, 0x06, 0x2c, 0xc6, 0x46, 0xfa, 0x30, + 0xfd, 0x5d, 0xde, 0x93, 0x1e, 0x5d, 0x9b, 0x79, 0x03, 0x5d, 0x0d, 0x40, 0x07, 0x47, 0xeb, 0x0c, + 0xcc, 0x30, 0x53, 0x7f, 0xff, 0xc2, 0x1a, 0x2e, 0x2d, 0xe9, 0x41, 0xf7, 0x40, 0x64, 0x23, 0x5f, + 0x18, 0x48, 0xb0, 0xe0, 0x2b, 0xc2, 0xc4, 0x58, 0xee, 0x83, 0xf3, 0xc7, 0xb0, 0x31, 0x61, 0xf5, + 0x7b, 0x2c, 0x56, 0x55, 0x1e, 0xab, 0xdb, 0x44, 0xc4, 0x24, 0x36, 0xa6, 0x09, 0xcd, 0x1b, 0xdf, + 0x11, 0xc0, 0xa5, 0x73, 0x70, 0x3d, 0x75, 0x68, 0x3e, 0xd2, 0x47, 0xec, 0x65, 0xa4, 0x3b, 0xac, + 0x11, 0x93, 0x7d, 0x34, 0xdd, 0x21, 0x9d, 0x0d, 0xc8, 0xdc, 0x6c, 0x20, 0xa1, 0xbf, 0x7d, 0xe8, + 0x46, 0xea, 0x33, 0x37, 0x08, 0xa2, 0xec, 0x88, 0xfd, 0xed, 0x07, 0x72, 0x90, 0x3e, 0x38, 0xff, + 0x24, 0x03, 0x2c, 0x3b, 0xf6, 0x6e, 0xa7, 0xea, 0xb4, 0x90, 0xa3, 0xfe, 0x6d, 0x38, 0x01, 0x78, + 0xf1, 0x08, 0x26, 0x00, 0xeb, 0x00, 0x5b, 0x01, 0x71, 0xaa, 0xe1, 0xb7, 0x88, 0x99, 0xfb, 0x21, + 0x53, 0x3a, 0x43, 0x83, 0xbf, 0x72, 0xf6, 0xa7, 0x78, 0x8c, 0xe3, 0xfa, 0xac, 0x90, 0xdc, 0x28, + 0x27, 0x00, 0xef, 0x0a, 0xb0, 0xae, 0x73, 0x58, 0xdf, 0x7d, 0x00, 0x4e, 0xd2, 0xc7, 0xfc, 0x9f, + 0x27, 0x60, 0x9a, 0x6c, 0xd7, 0x11, 0x99, 0xfe, 0x43, 0x08, 0xfa, 0x6f, 0x8e, 0x00, 0xf4, 0x0d, + 0x98, 0xb1, 0x43, 0xea, 0xa4, 0x4f, 0x65, 0x17, 0x60, 0x62, 0x61, 0x67, 0xf8, 0xd2, 0x39, 0x32, + 0xea, 0x47, 0x59, 0xe4, 0x75, 0x1e, 0xf9, 0x3b, 0x62, 0xe4, 0xcd, 0x50, 0x1c, 0x25, 0xf4, 0xef, + 0x0e, 0xa0, 0xdf, 0xe0, 0xa0, 0x2f, 0x1e, 0x84, 0x95, 0x31, 0x84, 0xdb, 0x97, 0x21, 0x8b, 0x4f, + 0xc7, 0xfd, 0x56, 0x8a, 0xf3, 0xfb, 0x53, 0x30, 0x81, 0x9b, 0x6c, 0x30, 0xef, 0xf0, 0x5f, 0xbd, + 0x2f, 0xc6, 0xa6, 0x8b, 0x9c, 0xc0, 0x63, 0xc1, 0x7f, 0xf5, 0x78, 0xf0, 0xbd, 0x92, 0xbb, 0xa7, + 0xf2, 0x64, 0x23, 0x32, 0x48, 0x18, 0x7a, 0x52, 0xc2, 0x4a, 0x7c, 0x64, 0xe7, 0xe5, 0x86, 0x99, + 0x94, 0x0c, 0x60, 0x24, 0x7d, 0xe0, 0xff, 0x32, 0x0b, 0xa7, 0xc8, 0xaa, 0xd2, 0x92, 0x63, 0xef, + 0xf4, 0xdc, 0x6e, 0x65, 0x1e, 0x5c, 0x17, 0xae, 0x87, 0x39, 0x97, 0xf3, 0xc7, 0xa6, 0x3a, 0xd1, + 0x93, 0xaa, 0xfe, 0x19, 0xeb, 0x53, 0xf1, 0x34, 0x1e, 0xc9, 0x85, 0x18, 0x01, 0x46, 0xf1, 0x9e, + 0x78, 0xa1, 0x5e, 0x90, 0x51, 0x66, 0x91, 0x4a, 0x1e, 0x6a, 0xcd, 0x32, 0xd0, 0xa9, 0x9c, 0x88, + 0x4e, 0x7d, 0x20, 0xd0, 0xa9, 0x9f, 0xe1, 0x74, 0x6a, 0xf9, 0xe0, 0x22, 0x49, 0x5f, 0xb7, 0x5e, + 0x1d, 0x6c, 0x0c, 0x05, 0xdb, 0x76, 0x3b, 0x29, 0x6c, 0xd6, 0xb1, 0xfe, 0x48, 0x59, 0xce, 0x1f, + 0x89, 0xbf, 0x8f, 0x22, 0xc1, 0x4c, 0x98, 0xe7, 0x3a, 0x42, 0x97, 0xe6, 0x40, 0x32, 0x7d, 0xee, + 0x24, 0xb3, 0x35, 0xd4, 0x5c, 0x37, 0xb6, 0xa0, 0x31, 0xac, 0x2d, 0xcd, 0x41, 0x7e, 0xc9, 0x6c, + 0xbb, 0xc8, 0x51, 0xbf, 0x4c, 0x67, 0xba, 0xaf, 0x4e, 0x71, 0x00, 0x58, 0x84, 0xfc, 0x26, 0x2e, + 0x8d, 0x9a, 0xcc, 0x37, 0x89, 0xb5, 0x1e, 0xc2, 0xa1, 0x4e, 0xff, 0x4d, 0x1a, 0x9d, 0xaf, 0x87, + 0xcc, 0xc8, 0xa6, 0xc8, 0x09, 0xa2, 0xf3, 0x0d, 0x66, 0x61, 0x2c, 0x17, 0x53, 0xe5, 0x75, 0xb4, + 0xe3, 0x8d, 0xf1, 0x17, 0xd2, 0x43, 0xb8, 0x00, 0xb2, 0xd9, 0xea, 0xe2, 0xce, 0x71, 0x4a, 0xf7, + 0x1e, 0x93, 0xfa, 0x0a, 0xf5, 0x8a, 0x8a, 0xb0, 0x3c, 0x6e, 0x5f, 0x21, 0x21, 0x2e, 0xd2, 0xc7, + 0xec, 0x7b, 0xd8, 0x51, 0xb4, 0xd3, 0x36, 0x9a, 0xc8, 0xe3, 0x3e, 0x35, 0xd4, 0x48, 0x4f, 0x96, + 0xf5, 0x7b, 0x32, 0xa6, 0x9d, 0xe6, 0x0e, 0xd0, 0x4e, 0x87, 0x5d, 0x86, 0x0c, 0x64, 0x8e, 0x2b, + 0x7e, 0x68, 0xcb, 0x90, 0xb1, 0x6c, 0x8c, 0xe1, 0xda, 0x51, 0xff, 0x20, 0xed, 0x58, 0x5b, 0xeb, + 0xb0, 0x9b, 0x34, 0x54, 0x58, 0x23, 0x3b, 0x34, 0x3b, 0xcc, 0x26, 0x4d, 0x34, 0x0f, 0x63, 0x40, + 0x6b, 0x8e, 0xa2, 0xf5, 0x39, 0x3a, 0x8c, 0xa6, 0xbc, 0x4f, 0xda, 0xb5, 0x1d, 0x37, 0xd9, 0x3e, + 0xa9, 0xc7, 0x9d, 0x8e, 0xff, 0x4b, 0x7a, 0xf0, 0x8a, 0x3f, 0x57, 0x3d, 0xaa, 0xe1, 0x33, 0xc1, + 0xc1, 0xab, 0x41, 0x0c, 0xa4, 0x0f, 0xef, 0x5b, 0x0e, 0x69, 0xf0, 0x1c, 0xb6, 0x39, 0xd2, 0x36, + 0x30, 0xb2, 0xa1, 0x73, 0x98, 0xe6, 0x18, 0xcd, 0x43, 0xfa, 0x78, 0x7d, 0x9b, 0x19, 0x38, 0xdf, + 0x34, 0xc6, 0x81, 0xd3, 0x6f, 0x99, 0xb9, 0x21, 0x5b, 0xe6, 0xb0, 0xfb, 0x3f, 0x54, 0xd6, 0xa3, + 0x1b, 0x30, 0x87, 0xd9, 0xff, 0x89, 0x61, 0x22, 0x7d, 0xc4, 0xdf, 0x2c, 0x43, 0xae, 0x36, 0xfe, + 0xf1, 0x72, 0xd8, 0xb9, 0x08, 0x96, 0x55, 0x6d, 0x64, 0xc3, 0xe5, 0x30, 0x73, 0x91, 0x48, 0x16, + 0xc6, 0x10, 0x78, 0xff, 0x28, 0xcc, 0xe0, 0x25, 0x11, 0x7f, 0x9b, 0xf5, 0xdb, 0x74, 0xd4, 0x7c, + 0x38, 0xc5, 0xb6, 0x7a, 0x0f, 0x4c, 0xfa, 0xfb, 0x77, 0x74, 0xe4, 0x9c, 0x17, 0x6b, 0x9f, 0x3e, + 0x97, 0x7a, 0xf0, 0xff, 0x81, 0x9c, 0x21, 0x46, 0xbe, 0x57, 0x3b, 0xac, 0x33, 0xc4, 0xa1, 0xee, + 0xd7, 0xfe, 0x69, 0x38, 0xa2, 0xfe, 0x97, 0xf4, 0x30, 0xef, 0xdd, 0xc7, 0xcd, 0xf6, 0xd9, 0xc7, + 0xfd, 0x38, 0x8b, 0x65, 0x8d, 0xc7, 0xf2, 0x4e, 0x51, 0x11, 0x8e, 0x70, 0xac, 0x7d, 0x4f, 0x00, + 0xe7, 0x59, 0x0e, 0xce, 0x85, 0x03, 0xf1, 0x32, 0x86, 0x83, 0x8f, 0xd9, 0x70, 0xcc, 0xfd, 0x44, + 0x8a, 0xed, 0xb8, 0xe7, 0x54, 0x45, 0x76, 0xdf, 0xa9, 0x0a, 0xae, 0xa5, 0xe7, 0x0e, 0xd8, 0xd2, + 0x3f, 0xc1, 0x6a, 0x47, 0x9d, 0xd7, 0x8e, 0xa7, 0x8a, 0x23, 0x32, 0xba, 0x91, 0xf9, 0xbd, 0x81, + 0x7a, 0x9c, 0xe3, 0xd4, 0xa3, 0x74, 0x30, 0x66, 0xd2, 0xd7, 0x8f, 0x3f, 0xf4, 0x27, 0xb4, 0x87, + 0xdc, 0xde, 0x87, 0xdd, 0x2a, 0xe6, 0x84, 0x38, 0xb2, 0x91, 0x7b, 0x98, 0xad, 0xe2, 0x41, 0x9c, + 0x8c, 0x21, 0x16, 0xdb, 0x2c, 0x4c, 0x63, 0x9e, 0xce, 0x99, 0xad, 0x2d, 0xe4, 0xaa, 0xaf, 0x21, + 0x3e, 0x8a, 0x7e, 0xe4, 0xcb, 0x11, 0x85, 0x27, 0x8a, 0x3a, 0xef, 0x9a, 0xd4, 0xa3, 0x83, 0x30, + 0x39, 0xcf, 0x30, 0x38, 0xee, 0x08, 0x8a, 0x03, 0x39, 0x48, 0x1f, 0xb2, 0x8f, 0x12, 0x77, 0x9b, + 0x55, 0xe3, 0x92, 0xbd, 0xeb, 0xaa, 0x0f, 0x8e, 0xa0, 0x83, 0x5e, 0x80, 0x7c, 0x1b, 0x53, 0xa3, + 0xc7, 0x32, 0xe2, 0xa7, 0x3b, 0x54, 0x04, 0xa4, 0x7c, 0x9d, 0xfe, 0x99, 0xf4, 0x6c, 0x46, 0x28, + 0x47, 0x42, 0x67, 0xdc, 0x67, 0x33, 0x06, 0x94, 0x3f, 0x96, 0x3b, 0x76, 0x26, 0xbd, 0xd2, 0xcd, + 0x1d, 0xd3, 0x1d, 0x51, 0x04, 0x87, 0xb6, 0x47, 0xcb, 0x8f, 0xe0, 0x80, 0x5f, 0x92, 0x9e, 0x18, + 0x65, 0xa4, 0xe2, 0xfd, 0x3e, 0xee, 0x13, 0xa3, 0xf1, 0xc5, 0xa7, 0x8f, 0xc9, 0xaf, 0x93, 0x96, + 0x75, 0x96, 0x38, 0xdf, 0xa6, 0xe8, 0xd7, 0x3b, 0x74, 0x63, 0x21, 0xac, 0x1d, 0x5e, 0x63, 0xe9, + 0x5b, 0x7e, 0xfa, 0xc0, 0xfc, 0xb7, 0x1f, 0x87, 0xdc, 0x22, 0x3a, 0xbf, 0xbb, 0xa5, 0xde, 0x01, + 0x93, 0x75, 0x07, 0xa1, 0xb2, 0xb5, 0x69, 0x7b, 0xd2, 0x75, 0xbd, 0x67, 0x1f, 0x12, 0xfa, 0xe6, + 0xe1, 0xb1, 0x8d, 0x8c, 0x56, 0x78, 0xfe, 0xcc, 0x7f, 0x55, 0x5f, 0x2a, 0x41, 0xb6, 0xe6, 0x1a, + 0xae, 0x3a, 0x15, 0x60, 0xab, 0x3e, 0xc8, 0x62, 0x71, 0x07, 0x8f, 0xc5, 0xf5, 0x9c, 0x2c, 0x30, + 0x07, 0xf3, 0xde, 0xff, 0x11, 0x00, 0xa8, 0x30, 0x79, 0x7f, 0xd7, 0xb6, 0xbc, 0x1c, 0xfe, 0x11, + 0x48, 0xff, 0x5d, 0x7d, 0x55, 0x20, 0xee, 0xbb, 0x38, 0x71, 0x3f, 0x56, 0xac, 0x88, 0x31, 0xac, + 0xb4, 0x49, 0x30, 0xe5, 0x89, 0x76, 0x05, 0x19, 0xad, 0xae, 0xfa, 0x63, 0xa1, 0xf2, 0x47, 0x88, + 0x59, 0xfd, 0xa0, 0x70, 0x30, 0x4e, 0x52, 0xab, 0x80, 0x78, 0xb4, 0x47, 0x87, 0xbf, 0xf9, 0x2f, + 0xf1, 0xc1, 0x48, 0x6e, 0x86, 0xac, 0x69, 0x6d, 0xda, 0xd4, 0xbf, 0xf0, 0xca, 0x08, 0xda, 0x9e, + 0x4e, 0xe8, 0x38, 0xa3, 0x60, 0xa4, 0xce, 0x78, 0xb6, 0xc6, 0x72, 0xe9, 0x5d, 0xd6, 0x2b, 0x5d, + 0xfd, 0xdf, 0x07, 0x0a, 0x5b, 0x51, 0x20, 0xdb, 0x31, 0xdc, 0x6d, 0x5a, 0x34, 0x7e, 0xf6, 0x6c, + 0xe4, 0x5d, 0xcb, 0xb0, 0x6c, 0xeb, 0xd2, 0x8e, 0xf9, 0x8c, 0xe0, 0x6e, 0x5d, 0x2e, 0xcd, 0xe3, + 0x7c, 0x0b, 0x59, 0xc8, 0x31, 0x5c, 0x54, 0xdb, 0xdb, 0xc2, 0x73, 0xac, 0x49, 0x9d, 0x4d, 0x4a, + 0xac, 0xff, 0x1e, 0xc7, 0xd1, 0xfa, 0xbf, 0x69, 0xb6, 0x11, 0x8e, 0xd4, 0x44, 0xf5, 0xdf, 0x7f, + 0x4f, 0xa4, 0xff, 0x7d, 0x8a, 0x48, 0x1f, 0x8d, 0x7f, 0x97, 0x60, 0xa6, 0xe6, 0x29, 0x5c, 0x6d, + 0x77, 0x67, 0xc7, 0x70, 0x2e, 0xa9, 0xd7, 0x86, 0xa8, 0x30, 0xaa, 0x99, 0xe1, 0xfd, 0x52, 0xfe, + 0x40, 0xf8, 0x5a, 0x69, 0xda, 0xb4, 0x99, 0x12, 0x12, 0xb7, 0x83, 0xc7, 0x43, 0xce, 0x53, 0x6f, + 0xdf, 0xe3, 0x32, 0xb6, 0x21, 0x90, 0x9c, 0x82, 0x11, 0xad, 0x06, 0xf2, 0x36, 0x86, 0x68, 0x1a, + 0x12, 0x1c, 0xad, 0xb9, 0x46, 0xf3, 0xc2, 0xb2, 0xed, 0xd8, 0xbb, 0xae, 0x69, 0xa1, 0xae, 0xfa, + 0xa8, 0x10, 0x01, 0x5f, 0xff, 0x33, 0xa1, 0xfe, 0xab, 0x3f, 0xc8, 0x88, 0x8e, 0xa2, 0x41, 0xb7, + 0xca, 0x92, 0x8f, 0x08, 0x50, 0x25, 0x36, 0x2e, 0x8a, 0x50, 0x4c, 0x5f, 0x68, 0x6f, 0x92, 0xa1, + 0xa0, 0x3d, 0xd0, 0xb1, 0x1d, 0x77, 0xd5, 0x6e, 0x1a, 0xed, 0xae, 0x6b, 0x3b, 0x48, 0xad, 0xc6, + 0x4a, 0xcd, 0xeb, 0x61, 0x5a, 0x76, 0x33, 0x1c, 0x1c, 0xe9, 0x1b, 0xab, 0x76, 0x32, 0xaf, 0xe3, + 0x1f, 0x15, 0xde, 0x65, 0x24, 0x52, 0xe9, 0xe5, 0x28, 0x42, 0xcf, 0xfb, 0x75, 0x69, 0xc9, 0x0e, + 0x4b, 0x88, 0xed, 0x3c, 0x0a, 0x31, 0x35, 0x86, 0xa5, 0x72, 0x09, 0x66, 0x6b, 0xbb, 0xe7, 0x03, + 0x22, 0x5d, 0xd6, 0x08, 0x79, 0xad, 0x70, 0x94, 0x0a, 0xaa, 0x78, 0x2c, 0xa1, 0x08, 0xf9, 0x5e, + 0x07, 0xb3, 0x5d, 0x36, 0x1b, 0xc5, 0x9b, 0x4f, 0x14, 0x8c, 0x4e, 0x31, 0xb8, 0xd4, 0xf4, 0x05, + 0xf8, 0x5e, 0x09, 0x66, 0xab, 0x1d, 0x64, 0xa1, 0x16, 0xf1, 0x82, 0xe4, 0x04, 0xf8, 0xd2, 0x84, + 0x02, 0xe4, 0x08, 0x45, 0x08, 0x30, 0xf4, 0x58, 0x5e, 0xf4, 0x85, 0x17, 0x26, 0x24, 0x12, 0x5c, + 0x5c, 0x69, 0xe9, 0x0b, 0xee, 0x4b, 0x12, 0x4c, 0xeb, 0xbb, 0xd6, 0xba, 0x63, 0x7b, 0xa3, 0xb1, + 0xa3, 0xde, 0x19, 0x76, 0x10, 0x37, 0xc1, 0xb1, 0xd6, 0xae, 0x83, 0xd7, 0x9f, 0xca, 0x56, 0x0d, + 0x35, 0x6d, 0xab, 0xd5, 0xc5, 0xf5, 0xc8, 0xe9, 0xfb, 0x3f, 0xdc, 0x9e, 0x7d, 0xee, 0x37, 0xe4, + 0x8c, 0xfa, 0x7c, 0xe1, 0x50, 0x37, 0xa4, 0xf2, 0x4c, 0xd1, 0xe2, 0x3d, 0x81, 0x60, 0x40, 0x9b, + 0x41, 0x25, 0xa4, 0x2f, 0xdc, 0xcf, 0x49, 0xa0, 0x14, 0x9b, 0x4d, 0x7b, 0xd7, 0x72, 0x6b, 0xa8, + 0x8d, 0x9a, 0x6e, 0xdd, 0x31, 0x9a, 0x88, 0xb5, 0x9f, 0x0b, 0x20, 0xb7, 0x4c, 0x87, 0xf6, 0xc1, + 0xde, 0x23, 0x95, 0xe3, 0x4b, 0x85, 0x77, 0x1c, 0x49, 0x2d, 0xf7, 0x97, 0x92, 0x40, 0x9c, 0x62, + 0xfb, 0x8a, 0x82, 0x05, 0xa5, 0x2f, 0xd5, 0x4f, 0x48, 0x30, 0xe5, 0xf7, 0xd8, 0x5b, 0x22, 0xc2, + 0xfc, 0xf5, 0x84, 0x93, 0x91, 0x80, 0x78, 0x02, 0x19, 0xbe, 0x33, 0xc1, 0xac, 0x22, 0x8a, 0x7e, + 0x32, 0xd1, 0x15, 0x93, 0x8b, 0xce, 0x7b, 0xad, 0x54, 0x1b, 0x4b, 0xd5, 0xd5, 0x45, 0x4d, 0x2f, + 0xc8, 0xea, 0x97, 0x25, 0xc8, 0xae, 0x9b, 0xd6, 0x16, 0x1b, 0x5d, 0xe9, 0xb8, 0x67, 0x47, 0xb6, + 0xd0, 0x03, 0xb4, 0xa5, 0x93, 0x17, 0xe5, 0x56, 0x38, 0x6e, 0xed, 0xee, 0x9c, 0x47, 0x4e, 0x75, + 0x13, 0x8f, 0xb2, 0xdd, 0xba, 0x5d, 0x43, 0x16, 0x31, 0x42, 0x73, 0x7a, 0xdf, 0x6f, 0xbc, 0x09, + 0x26, 0x30, 0x79, 0xf0, 0x38, 0x89, 0x90, 0x78, 0xc0, 0x94, 0xc4, 0x30, 0x95, 0x68, 0xda, 0xd0, + 0x87, 0x78, 0xfa, 0x9a, 0xfa, 0x47, 0x39, 0x38, 0x51, 0xb4, 0x2e, 0x61, 0x9b, 0x82, 0x74, 0xf0, + 0xa5, 0x6d, 0xc3, 0xda, 0x42, 0x78, 0x80, 0x08, 0x24, 0xce, 0x86, 0xe8, 0xcf, 0xf0, 0x21, 0xfa, + 0x15, 0x1d, 0x26, 0x6c, 0xa7, 0x85, 0x9c, 0x85, 0x4b, 0x98, 0xa7, 0xde, 0x65, 0x67, 0xda, 0x26, + 0xfb, 0x15, 0x31, 0x4f, 0xc9, 0xcf, 0x57, 0xc9, 0xff, 0xba, 0x4f, 0xe8, 0xcc, 0x4d, 0x30, 0x41, + 0xd3, 0x94, 0x19, 0x98, 0xac, 0xea, 0x8b, 0x9a, 0xde, 0x28, 0x2f, 0x16, 0x8e, 0x28, 0x97, 0xc1, + 0xd1, 0x72, 0x5d, 0xd3, 0x8b, 0xf5, 0x72, 0xb5, 0xd2, 0xc0, 0xe9, 0x85, 0x8c, 0xfa, 0x9c, 0xac, + 0xa8, 0x67, 0x6f, 0x3c, 0x33, 0xfd, 0x60, 0xd5, 0x61, 0xa2, 0x49, 0x32, 0xe0, 0x21, 0x74, 0x3a, + 0x51, 0xed, 0x28, 0x41, 0x92, 0xa0, 0xfb, 0x84, 0x94, 0xd3, 0x00, 0x17, 0x1d, 0xdb, 0xda, 0x0a, + 0x4f, 0x1d, 0x4e, 0xea, 0x4c, 0x8a, 0xfa, 0x60, 0x06, 0xf2, 0xe4, 0x1f, 0x7c, 0x25, 0x09, 0x7e, + 0x0a, 0x05, 0xef, 0xbf, 0x7b, 0x16, 0x2f, 0x96, 0x57, 0x38, 0xd1, 0xa2, 0xaf, 0x9e, 0x2e, 0x12, + 0x19, 0x10, 0x4b, 0x98, 0x56, 0xe5, 0x66, 0xc8, 0x93, 0x7f, 0xa9, 0xd7, 0x41, 0x74, 0x78, 0x51, + 0x92, 0x4d, 0xd0, 0x4f, 0x59, 0x5c, 0xa6, 0xe9, 0x6b, 0xf3, 0x87, 0x24, 0x98, 0xac, 0x20, 0xb7, + 0xb4, 0x8d, 0x9a, 0x17, 0xd4, 0xc7, 0xf0, 0x0b, 0xa0, 0x6d, 0x13, 0x59, 0xee, 0x7d, 0x3b, 0xed, + 0x60, 0x01, 0xd4, 0x4f, 0x50, 0x9f, 0xc7, 0x76, 0xbe, 0x77, 0xf3, 0xfa, 0x73, 0x63, 0x9f, 0xba, + 0xfa, 0x25, 0x44, 0xa8, 0xcc, 0x49, 0xc8, 0x3b, 0xa8, 0xbb, 0xdb, 0xf6, 0x17, 0xd1, 0xe8, 0x9b, + 0xfa, 0x50, 0x20, 0xce, 0x12, 0x27, 0xce, 0x9b, 0xc5, 0x8b, 0x18, 0x43, 0xbc, 0xd2, 0x2c, 0x4c, + 0x94, 0x2d, 0xd3, 0x35, 0x8d, 0xb6, 0xfa, 0xfc, 0x2c, 0xcc, 0xd6, 0x90, 0xbb, 0x6e, 0x38, 0xc6, + 0x0e, 0x72, 0x91, 0xd3, 0x55, 0xbf, 0xcb, 0xf7, 0x09, 0x9d, 0xb6, 0xe1, 0x6e, 0xda, 0xce, 0x8e, + 0xaf, 0x9a, 0xfe, 0xbb, 0xa7, 0x9a, 0x7b, 0xc8, 0xe9, 0x86, 0x7c, 0xf9, 0xaf, 0xde, 0x97, 0x8b, + 0xb6, 0x73, 0xc1, 0x1b, 0x04, 0xe9, 0x34, 0x8d, 0xbe, 0x7a, 0xf4, 0xda, 0xf6, 0xd6, 0x2a, 0xda, + 0x43, 0x7e, 0xb8, 0xb4, 0xe0, 0xdd, 0x9b, 0x0b, 0xb4, 0xec, 0x8a, 0xed, 0x7a, 0x9d, 0xf6, 0xaa, + 0xbd, 0x45, 0xe2, 0xc5, 0x4e, 0xea, 0x7c, 0x62, 0x98, 0xcb, 0xd8, 0x43, 0x38, 0x57, 0x9e, 0xcd, + 0x45, 0x13, 0x95, 0x79, 0x50, 0x82, 0xdf, 0xea, 0xa8, 0x8d, 0x76, 0x90, 0xeb, 0x5c, 0xc2, 0xd7, + 0x42, 0x4c, 0xea, 0x7d, 0xbe, 0xd0, 0x01, 0x5a, 0x7c, 0xb2, 0x4e, 0xa5, 0x37, 0xcf, 0x49, 0xee, + 0x40, 0x93, 0x75, 0x11, 0x8a, 0x63, 0xb9, 0xf6, 0x4a, 0xf6, 0xac, 0x99, 0x97, 0xcb, 0x90, 0xc5, + 0x83, 0xe7, 0x9b, 0x33, 0xdc, 0x0a, 0xd3, 0x0e, 0xea, 0x76, 0x8d, 0x2d, 0xe4, 0xaf, 0x30, 0xd1, + 0x57, 0xe5, 0x36, 0xc8, 0xb5, 0x31, 0xa6, 0x64, 0x70, 0xb8, 0x96, 0xab, 0x99, 0x67, 0x60, 0x78, + 0xb4, 0x82, 0x91, 0x00, 0xc3, 0xad, 0x93, 0x3f, 0xce, 0xdc, 0x03, 0x39, 0x02, 0xff, 0x14, 0xe4, + 0x16, 0xb5, 0x85, 0x8d, 0xe5, 0xc2, 0x11, 0xef, 0xd1, 0xe7, 0x6f, 0x0a, 0x72, 0x4b, 0xc5, 0x7a, + 0x71, 0xb5, 0x20, 0x79, 0xf5, 0x28, 0x57, 0x96, 0xaa, 0x05, 0xd9, 0x4b, 0x5c, 0x2f, 0x56, 0xca, + 0xa5, 0x42, 0x56, 0x99, 0x86, 0x89, 0x73, 0x45, 0xbd, 0x52, 0xae, 0x2c, 0x17, 0x72, 0xea, 0xdf, + 0xb1, 0xf8, 0xdd, 0xce, 0xe3, 0x77, 0x5d, 0x14, 0x4f, 0xfd, 0x20, 0x7b, 0x45, 0x00, 0xd9, 0x9d, + 0x1c, 0x64, 0x3f, 0x2e, 0x42, 0x64, 0x0c, 0xee, 0x4c, 0x79, 0x98, 0x58, 0x77, 0xec, 0x26, 0xea, + 0x76, 0xd5, 0xdf, 0x90, 0x20, 0x5f, 0x32, 0xac, 0x26, 0x6a, 0xab, 0x57, 0x84, 0x50, 0x11, 0x57, + 0xd1, 0x4c, 0x70, 0x5a, 0xec, 0x9f, 0x32, 0xa2, 0xbd, 0x1f, 0xa5, 0x3b, 0x4f, 0x68, 0x46, 0xc8, + 0x47, 0xac, 0x97, 0x8b, 0x25, 0x35, 0x86, 0xab, 0x71, 0x24, 0x98, 0xa2, 0xab, 0x01, 0xe7, 0x11, + 0x3b, 0x0f, 0xff, 0x6e, 0x46, 0x74, 0x72, 0xe8, 0xd7, 0x20, 0x20, 0x13, 0x21, 0x0f, 0xb1, 0x89, + 0xe0, 0x20, 0x6a, 0x63, 0xd8, 0x3c, 0x94, 0x60, 0x7a, 0xc3, 0xea, 0xf6, 0x13, 0x8a, 0x78, 0x1c, + 0x7d, 0xbf, 0x1a, 0x0c, 0xa1, 0x03, 0xc5, 0xd1, 0x1f, 0x4c, 0x2f, 0x7d, 0xc1, 0x7c, 0x37, 0x03, + 0xc7, 0x97, 0x91, 0x85, 0x1c, 0xb3, 0x49, 0x6a, 0xe0, 0x4b, 0xe2, 0x4e, 0x5e, 0x12, 0x8f, 0xe1, + 0x38, 0xef, 0xf7, 0x07, 0x2f, 0x81, 0x57, 0x07, 0x12, 0xb8, 0x9b, 0x93, 0xc0, 0x4d, 0x82, 0x74, + 0xc6, 0x70, 0x1f, 0xfa, 0x14, 0xcc, 0x54, 0x6c, 0xd7, 0xdc, 0x34, 0x9b, 0xc4, 0x07, 0xed, 0x65, + 0x32, 0x64, 0x57, 0xcd, 0xae, 0xab, 0x16, 0xc3, 0xee, 0xe4, 0x1a, 0x98, 0x36, 0xad, 0x66, 0x7b, + 0xb7, 0x85, 0x74, 0x64, 0x90, 0x7e, 0x65, 0x52, 0x67, 0x93, 0xc2, 0xad, 0x7d, 0x8f, 0x2d, 0xd9, + 0xdf, 0xda, 0xff, 0xb4, 0xf0, 0x32, 0x0c, 0xcb, 0x02, 0x0e, 0x48, 0x19, 0x61, 0x77, 0x15, 0x61, + 0xd6, 0x62, 0xb2, 0xfa, 0x06, 0x7b, 0xef, 0x85, 0x02, 0x2c, 0x39, 0x9d, 0xff, 0x43, 0x7d, 0xbf, + 0x50, 0x63, 0x1d, 0xc4, 0x50, 0x32, 0x64, 0x96, 0x86, 0x98, 0x24, 0x2b, 0x30, 0x57, 0xae, 0xd4, + 0x35, 0xbd, 0x52, 0x5c, 0xa5, 0x59, 0x64, 0xf5, 0xdf, 0x25, 0xc8, 0xe9, 0xa8, 0xd3, 0xbe, 0xc4, + 0x46, 0x8c, 0xa6, 0x8e, 0xe2, 0x99, 0xc0, 0x51, 0x5c, 0x59, 0x02, 0x30, 0x9a, 0x5e, 0xc1, 0xf8, + 0x4a, 0x2d, 0xa9, 0x6f, 0x1c, 0x53, 0xae, 0x82, 0xc5, 0x20, 0xb7, 0xce, 0xfc, 0xa9, 0xbe, 0x40, + 0x78, 0xe7, 0x88, 0xa3, 0x86, 0x39, 0x8c, 0xe8, 0x13, 0x3e, 0x20, 0xb4, 0xd9, 0x33, 0x90, 0xdc, + 0xe1, 0x88, 0xff, 0x2b, 0x12, 0x64, 0xeb, 0x5e, 0x6f, 0xc9, 0x74, 0x9c, 0x7f, 0x3c, 0x9c, 0x8e, + 0x7b, 0x64, 0x22, 0x74, 0xfc, 0x2e, 0x98, 0x61, 0x35, 0x96, 0xba, 0x4a, 0xc4, 0xaa, 0x38, 0xf7, + 0xc3, 0x30, 0x1a, 0xde, 0x87, 0x9d, 0xc3, 0x11, 0xf1, 0x27, 0x1f, 0x0b, 0xb0, 0x86, 0x76, 0xce, + 0x23, 0xa7, 0xbb, 0x6d, 0x76, 0xd4, 0xbf, 0x97, 0x61, 0x6a, 0x19, 0xb9, 0x35, 0xd7, 0x70, 0x77, + 0xbb, 0x3d, 0xdb, 0x9d, 0x96, 0x5d, 0x32, 0x9a, 0xdb, 0x88, 0x76, 0x47, 0xfe, 0xab, 0xfa, 0x6e, + 0x59, 0xd4, 0x9f, 0x28, 0x2c, 0x67, 0x3e, 0x28, 0x23, 0x02, 0x93, 0xc7, 0x41, 0xb6, 0x65, 0xb8, + 0x06, 0xc5, 0xe2, 0x8a, 0x1e, 0x2c, 0x42, 0x42, 0x3a, 0xce, 0xa6, 0xbe, 0x5d, 0x12, 0x71, 0x28, + 0x12, 0x28, 0x3f, 0x19, 0x08, 0xef, 0xcf, 0x0c, 0x81, 0xc2, 0x31, 0x98, 0xad, 0x54, 0xeb, 0x8d, + 0xd5, 0xea, 0xf2, 0xb2, 0xe6, 0xa5, 0x16, 0x64, 0xe5, 0x24, 0x28, 0xeb, 0xc5, 0xfb, 0xd6, 0xb4, + 0x4a, 0xbd, 0x51, 0xa9, 0x2e, 0x6a, 0xf4, 0xcf, 0xac, 0x72, 0x14, 0xa6, 0x4b, 0xc5, 0xd2, 0x8a, + 0x9f, 0x90, 0x53, 0x4e, 0xc1, 0xf1, 0x35, 0x6d, 0x6d, 0x41, 0xd3, 0x6b, 0x2b, 0xe5, 0xf5, 0x86, + 0x47, 0x66, 0xa9, 0xba, 0x51, 0x59, 0x2c, 0xe4, 0x15, 0x15, 0x4e, 0x32, 0x5f, 0xce, 0xe9, 0xd5, + 0xca, 0x72, 0xa3, 0x56, 0x2f, 0xd6, 0xb5, 0xc2, 0x84, 0x72, 0x19, 0x1c, 0x2d, 0x15, 0x2b, 0x38, + 0x7b, 0xa9, 0x5a, 0xa9, 0x68, 0xa5, 0x7a, 0x61, 0x52, 0xfd, 0x41, 0x16, 0xa6, 0xcb, 0xdd, 0x8a, + 0xb1, 0x83, 0xce, 0x1a, 0x6d, 0xb3, 0xa5, 0x3e, 0x9f, 0x99, 0x79, 0x5c, 0x07, 0xb3, 0x0e, 0x79, + 0x44, 0xad, 0xba, 0x89, 0x08, 0x9a, 0xb3, 0x3a, 0x9f, 0xe8, 0xcd, 0xc9, 0x2d, 0x4c, 0xc0, 0x9f, + 0x93, 0x93, 0x37, 0x65, 0x01, 0x80, 0x3c, 0xd5, 0xc3, 0xcb, 0x5d, 0xcf, 0xf4, 0xb6, 0x26, 0x63, + 0x07, 0x75, 0x91, 0xb3, 0x67, 0x36, 0x91, 0x9f, 0x53, 0x67, 0xfe, 0x52, 0xbf, 0x2a, 0x8b, 0xee, + 0x2f, 0x32, 0xa0, 0x32, 0xd5, 0x89, 0xe8, 0x0d, 0x7f, 0x51, 0x16, 0xd9, 0x1d, 0x14, 0x22, 0x99, + 0x4c, 0x53, 0x5e, 0x24, 0x0d, 0xb7, 0x6c, 0x5b, 0xaf, 0x56, 0x1b, 0xb5, 0x95, 0xaa, 0x5e, 0x2f, + 0xc8, 0xca, 0x0c, 0x4c, 0x7a, 0xaf, 0xab, 0xd5, 0xca, 0x72, 0x21, 0xab, 0x9c, 0x80, 0x63, 0x2b, + 0xc5, 0x5a, 0xa3, 0x5c, 0x39, 0x5b, 0x5c, 0x2d, 0x2f, 0x36, 0x4a, 0x2b, 0x45, 0xbd, 0x56, 0xc8, + 0x29, 0x57, 0xc0, 0x89, 0x7a, 0x59, 0xd3, 0x1b, 0x4b, 0x5a, 0xb1, 0xbe, 0xa1, 0x6b, 0xb5, 0x46, + 0xa5, 0xda, 0xa8, 0x14, 0xd7, 0xb4, 0x42, 0xde, 0x6b, 0xfe, 0xf8, 0x53, 0xa8, 0x36, 0x13, 0xfb, + 0x95, 0x71, 0x32, 0x42, 0x19, 0xa7, 0x7a, 0x95, 0x11, 0x58, 0xb5, 0xd2, 0xb5, 0x9a, 0xa6, 0x9f, + 0xd5, 0x0a, 0xd3, 0xfd, 0x74, 0x6d, 0x46, 0x39, 0x0e, 0x05, 0x8f, 0x87, 0x46, 0xb9, 0xe6, 0xe7, + 0x5c, 0x2c, 0xcc, 0xaa, 0x9f, 0xc8, 0xc3, 0x49, 0x1d, 0x6d, 0x99, 0x5d, 0x17, 0x39, 0xeb, 0xc6, + 0xa5, 0x1d, 0x64, 0xb9, 0x7e, 0x27, 0xff, 0x3f, 0x13, 0x2b, 0xe3, 0x1a, 0xcc, 0x76, 0x08, 0x8d, + 0x35, 0xe4, 0x6e, 0xdb, 0x2d, 0x3a, 0x0a, 0x3f, 0x26, 0xb2, 0xe7, 0x98, 0x5f, 0x67, 0xb3, 0xeb, + 0xfc, 0xdf, 0x8c, 0x6e, 0xcb, 0x31, 0xba, 0x9d, 0x1d, 0x46, 0xb7, 0x95, 0xab, 0x60, 0x6a, 0xb7, + 0x8b, 0x1c, 0x6d, 0xc7, 0x30, 0xdb, 0xfe, 0xe5, 0x9c, 0x41, 0x82, 0xfa, 0x8e, 0xac, 0xe8, 0x89, + 0x15, 0xa6, 0x2e, 0xfd, 0xc5, 0x18, 0xd1, 0xb7, 0x9e, 0x06, 0xa0, 0x95, 0xdd, 0x70, 0xda, 0x54, + 0x59, 0x99, 0x14, 0x8f, 0xbf, 0xf3, 0x66, 0xbb, 0x6d, 0x5a, 0x5b, 0xc1, 0xbe, 0x7f, 0x98, 0xa0, + 0xbe, 0x48, 0x16, 0x39, 0xc1, 0x92, 0x94, 0xb7, 0x64, 0xad, 0xe9, 0x05, 0xd2, 0x98, 0xfb, 0xdd, 0xfd, 0x4d, 0x27, 0xaf, 0x14, 0x60, 0x06, 0xa7, 0xd1, 0x16, 0x58, 0x98, 0xf0, 0xfa, 0x60, 0x9f, - 0xdc, 0x5a, 0xb9, 0xb1, 0x52, 0x5b, 0x0c, 0xbe, 0x4d, 0x7a, 0x24, 0x3d, 0x66, 0x8a, 0xd5, 0xfb, - 0x70, 0x6b, 0x9c, 0x52, 0x1e, 0x05, 0x57, 0x30, 0x1d, 0x76, 0x71, 0x55, 0x2b, 0x17, 0x17, 0xef, - 0x6b, 0x96, 0x9f, 0x5e, 0xa9, 0x37, 0xea, 0x7c, 0xe3, 0xf2, 0xdb, 0xd1, 0xb4, 0xc7, 0x6f, 0x79, - 0xad, 0x58, 0x59, 0xa5, 0xfd, 0xfb, 0x52, 0x4d, 0x5b, 0x2b, 0x36, 0x0a, 0x33, 0xea, 0x2b, 0x65, - 0x28, 0x2c, 0x23, 0x77, 0xdd, 0xb2, 0x5d, 0xbd, 0xb3, 0x6a, 0x98, 0x17, 0x36, 0xec, 0x0e, 0x37, - 0xd9, 0x14, 0x0e, 0xd3, 0xc1, 0x0f, 0x91, 0x1c, 0xc1, 0xe8, 0x1d, 0xf1, 0x2e, 0xce, 0x16, 0x2a, - 0x53, 0x98, 0xa0, 0x3e, 0x4b, 0x12, 0x59, 0xee, 0x16, 0x2f, 0x35, 0x99, 0x9e, 0x3c, 0x7b, 0xdc, - 0xe3, 0x73, 0x1f, 0xd4, 0xf2, 0xea, 0xf3, 0xb2, 0x30, 0xb9, 0x64, 0x98, 0x7a, 0xc7, 0x78, 0x26, - 0x17, 0xbf, 0x34, 0xec, 0x63, 0x32, 0x31, 0x7d, 0x8c, 0x34, 0xd4, 0xf8, 0xf9, 0xab, 0xb2, 0xe8, - 0xf2, 0x02, 0x23, 0x7b, 0x9f, 0xc9, 0x88, 0xc1, 0xf3, 0xc3, 0x92, 0xc8, 0xf2, 0xc2, 0x60, 0x7a, - 0xc9, 0x30, 0xfc, 0xd4, 0x0f, 0x87, 0x8d, 0xd5, 0xd3, 0xbe, 0x27, 0xfb, 0xa9, 0xc2, 0x94, 0xfa, - 0xe7, 0x32, 0xa8, 0xcb, 0xc8, 0x3d, 0x8b, 0xec, 0x60, 0x2a, 0x80, 0x7b, 0x7d, 0x6a, 0x6f, 0x33, - 0x4d, 0xf6, 0x2d, 0x2c, 0x80, 0xe7, 0x78, 0x00, 0x8b, 0x31, 0x8d, 0x27, 0x82, 0x74, 0x44, 0xe3, - 0xad, 0x40, 0xde, 0xc1, 0xdf, 0xa9, 0x9a, 0x3d, 0x3e, 0x7a, 0xb8, 0xc4, 0xc4, 0x58, 0xea, 0x84, - 0xb0, 0x46, 0x09, 0xa8, 0xdf, 0x0b, 0x26, 0x41, 0x3f, 0xc5, 0x69, 0xc7, 0xd2, 0x81, 0x99, 0x4d, - 0xa6, 0x2f, 0x76, 0xba, 0xea, 0xd2, 0xcf, 0xbe, 0x51, 0x3f, 0x9c, 0x83, 0xe3, 0xfd, 0xaa, 0xa3, - 0xfe, 0x4e, 0x86, 0xdb, 0x61, 0x47, 0x78, 0xc8, 0xcf, 0xd0, 0x0d, 0x44, 0xef, 0x45, 0x79, 0x22, - 0x9c, 0x08, 0x96, 0xe1, 0x1a, 0x56, 0x15, 0x5d, 0x74, 0x3a, 0xc8, 0x75, 0x91, 0x8d, 0xab, 0x36, - 0xa9, 0xf5, 0xff, 0xa8, 0x3c, 0x19, 0x2e, 0x37, 0x4c, 0xc7, 0x68, 0x23, 0xbb, 0x61, 0x74, 0x9d, - 0xa2, 0xd9, 0x6e, 0xec, 0xba, 0x96, 0x6d, 0xe8, 0xf4, 0x2a, 0xc9, 0x49, 0x2d, 0xea, 0xb3, 0x72, - 0x23, 0x14, 0x0c, 0xa7, 0x66, 0x9e, 0xb7, 0x74, 0xbb, 0x6d, 0x98, 0x5b, 0xab, 0x86, 0xe3, 0x52, - 0x0f, 0xe0, 0x7d, 0xe9, 0xea, 0x3f, 0xc8, 0xa2, 0x87, 0xe9, 0x06, 0xc0, 0x1a, 0xd1, 0xa1, 0x3c, - 0x5f, 0x16, 0x39, 0x1e, 0x97, 0x8c, 0x76, 0x32, 0x65, 0x79, 0xee, 0xb8, 0x0d, 0x89, 0xfe, 0x23, - 0x38, 0xee, 0x5a, 0x48, 0xba, 0x6f, 0x08, 0x9c, 0x2d, 0x6b, 0x95, 0xa5, 0x4a, 0xd9, 0x33, 0x2b, - 0x4e, 0xc0, 0xb1, 0xf0, 0xdb, 0xe2, 0x7d, 0xcd, 0x7a, 0xb9, 0xda, 0x28, 0x4c, 0x7a, 0xfd, 0x14, - 0x49, 0x5e, 0x2a, 0x56, 0x56, 0xcb, 0x8b, 0xcd, 0x46, 0xcd, 0xfb, 0xb2, 0x38, 0x9c, 0x69, 0xa1, - 0x3e, 0x98, 0x85, 0xa3, 0x58, 0xb6, 0x97, 0xb0, 0x54, 0x3d, 0xa1, 0xf4, 0xf8, 0xda, 0x06, 0x00, - 0x4d, 0x11, 0xf1, 0xaa, 0x9f, 0x15, 0xbe, 0x29, 0x93, 0x81, 0xb0, 0xa7, 0x8c, 0x08, 0xcd, 0xf8, - 0xae, 0x24, 0x12, 0xa1, 0x42, 0x98, 0x6c, 0x32, 0xa5, 0xf8, 0xd7, 0x71, 0x8f, 0x38, 0xd1, 0xe0, - 0x63, 0x2b, 0xb3, 0x84, 0x7f, 0x7e, 0xfa, 0x7a, 0x45, 0xc3, 0xea, 0x30, 0x07, 0x80, 0x53, 0xb0, - 0x06, 0x11, 0x3d, 0xe8, 0x3b, 0x5e, 0x45, 0xe9, 0x41, 0xb1, 0xd4, 0xa8, 0x9c, 0x2d, 0x47, 0xe9, - 0xc1, 0x67, 0x64, 0x98, 0x5c, 0x46, 0xae, 0x37, 0xa7, 0x72, 0xd4, 0xa7, 0x08, 0xac, 0xff, 0x78, - 0x66, 0x4c, 0xc7, 0x6a, 0xe9, 0x9d, 0x60, 0x19, 0x80, 0xbc, 0xa9, 0xcf, 0x19, 0xc6, 0x04, 0xf1, - 0x8b, 0x8e, 0x18, 0xaf, 0x7e, 0x12, 0x72, 0xae, 0xf7, 0x99, 0x2e, 0x43, 0xff, 0x58, 0xe4, 0x70, - 0xe5, 0x11, 0x59, 0xd4, 0x5d, 0x5d, 0x23, 0xf9, 0x99, 0xd1, 0x49, 0xd0, 0x76, 0x89, 0x60, 0xe4, - 0x87, 0xd1, 0xfe, 0xfc, 0x3b, 0x19, 0x4e, 0x90, 0xf6, 0x51, 0xec, 0x76, 0xeb, 0xae, 0x65, 0x23, - 0x0d, 0xb5, 0x90, 0xd1, 0x75, 0x7b, 0xd6, 0xf7, 0x6c, 0x92, 0xea, 0x6f, 0x36, 0xd3, 0x57, 0xf5, - 0x8d, 0xb2, 0x68, 0x0c, 0xe6, 0x7d, 0xed, 0xb1, 0xa7, 0xbc, 0x88, 0xc6, 0xfe, 0x71, 0x49, 0x24, - 0xaa, 0x72, 0x42, 0xe2, 0xc9, 0x80, 0xfa, 0xc8, 0x21, 0x00, 0xe5, 0xaf, 0xdc, 0x68, 0xe5, 0x52, - 0xb9, 0xb2, 0xee, 0x0d, 0x02, 0x57, 0xc3, 0x95, 0xeb, 0x1b, 0x5a, 0x69, 0xa5, 0x58, 0x2f, 0x37, - 0xb5, 0xf2, 0x72, 0xa5, 0xde, 0xa0, 0x4e, 0x59, 0xe4, 0xaf, 0x09, 0xe5, 0x2a, 0x38, 0x55, 0xdf, - 0x58, 0xa8, 0x97, 0xb4, 0xca, 0x3a, 0x4e, 0xd7, 0xca, 0xd5, 0xf2, 0x39, 0xfa, 0x75, 0x52, 0xfd, - 0x60, 0x01, 0xa6, 0xbd, 0x09, 0x40, 0x9d, 0xcc, 0x0b, 0xd4, 0x6f, 0x65, 0x61, 0x5a, 0x43, 0x8e, - 0xd5, 0xd9, 0xc3, 0x73, 0x84, 0x71, 0x4d, 0x3d, 0xbe, 0x23, 0x8b, 0x9e, 0xdf, 0x66, 0x98, 0x9d, - 0x67, 0x18, 0x8d, 0x9e, 0x68, 0xea, 0x7b, 0xba, 0xd1, 0xd1, 0xcf, 0xd3, 0xae, 0x66, 0x52, 0x0b, - 0x13, 0x94, 0x79, 0x50, 0xac, 0x8b, 0x26, 0xb2, 0xeb, 0xad, 0x8b, 0x65, 0x77, 0xbb, 0xd8, 0x6e, - 0xdb, 0xc8, 0x71, 0xe8, 0xea, 0x45, 0x9f, 0x2f, 0xca, 0x0d, 0x70, 0x14, 0xa7, 0x32, 0x99, 0x89, - 0x83, 0x4c, 0x6f, 0x72, 0x90, 0xb3, 0x68, 0x5e, 0xf2, 0x73, 0xe6, 0x98, 0x9c, 0x61, 0x32, 0x7b, - 0x5c, 0x22, 0xcf, 0x9f, 0xd2, 0xb9, 0x06, 0xa6, 0x4d, 0x7d, 0x07, 0x95, 0x1f, 0xe8, 0x1a, 0x36, - 0x72, 0xb0, 0x63, 0x8c, 0xac, 0xb1, 0x49, 0xea, 0x87, 0x85, 0xce, 0x9b, 0x8b, 0x49, 0x2c, 0x99, - 0xee, 0x2f, 0x0f, 0xa1, 0xfa, 0x7d, 0xfa, 0x19, 0x59, 0xfd, 0xa0, 0x0c, 0x33, 0x94, 0xa9, 0xa2, - 0x79, 0xa9, 0xd2, 0x56, 0xaf, 0xe6, 0x8c, 0x5f, 0xdd, 0x4b, 0xf3, 0x8d, 0x5f, 0xfc, 0xa2, 0xfe, - 0xa2, 0x2c, 0xea, 0xee, 0xdc, 0xa7, 0xe2, 0xb8, 0x8c, 0x68, 0xc7, 0xd1, 0x4d, 0x6b, 0x97, 0x3a, - 0xaa, 0x4e, 0x6a, 0xe4, 0x25, 0xcd, 0x45, 0x3d, 0xf5, 0xf7, 0x85, 0x9c, 0xa9, 0x05, 0xab, 0x71, - 0x48, 0x00, 0x7e, 0x52, 0x86, 0x39, 0xca, 0x55, 0x9d, 0x9e, 0xf3, 0x11, 0x3a, 0xf0, 0xf6, 0xcb, - 0xc2, 0x86, 0x60, 0x9f, 0xfa, 0xd3, 0x92, 0x1e, 0x31, 0x40, 0x7e, 0x54, 0x28, 0x38, 0x9a, 0x70, - 0x45, 0x0e, 0x09, 0xca, 0x77, 0x66, 0x61, 0x7a, 0xc3, 0x41, 0x36, 0xf5, 0xdb, 0x57, 0x1f, 0xca, - 0x82, 0xbc, 0x8c, 0xb8, 0x8d, 0xd4, 0x17, 0x09, 0x7b, 0xf8, 0xb2, 0x95, 0x65, 0x88, 0x7a, 0x36, - 0x52, 0x04, 0x6c, 0xd7, 0xc3, 0x1c, 0x11, 0x69, 0xd1, 0x75, 0x3d, 0x23, 0xd1, 0xf7, 0xa6, 0xed, - 0x49, 0x1d, 0xc5, 0x56, 0x11, 0x2e, 0xcb, 0xcb, 0x52, 0xf2, 0x78, 0x5a, 0x45, 0x9b, 0x64, 0x3e, - 0x9b, 0xd5, 0x7a, 0x52, 0x95, 0x5b, 0xe0, 0x32, 0xab, 0x8b, 0xc8, 0xf9, 0x15, 0x26, 0x73, 0x0e, - 0x67, 0xee, 0xf7, 0x49, 0xfd, 0x96, 0x90, 0xaf, 0xae, 0xb8, 0x74, 0x92, 0xe9, 0x42, 0x77, 0x34, - 0x26, 0xc9, 0x71, 0x28, 0x78, 0x39, 0xf0, 0xfe, 0x8b, 0x56, 0xae, 0xd7, 0x56, 0xcf, 0x96, 0xfb, - 0x2f, 0x63, 0xe4, 0xd4, 0xe7, 0xca, 0x30, 0xb5, 0x60, 0x5b, 0x7a, 0xbb, 0xa5, 0x3b, 0xae, 0xfa, - 0x3d, 0x09, 0x66, 0xd6, 0xf5, 0x4b, 0x1d, 0x4b, 0x6f, 0x63, 0xff, 0xfe, 0x9e, 0xbe, 0xa0, 0x4b, - 0x3e, 0xf9, 0x7d, 0x01, 0x7d, 0xe5, 0x0f, 0x06, 0x06, 0x47, 0xf7, 0x32, 0x22, 0x17, 0x6a, 0x06, - 0xdb, 0x7c, 0x52, 0xbf, 0x60, 0xa5, 0x3e, 0x5f, 0xf3, 0x2c, 0x4f, 0x11, 0x16, 0xe5, 0x07, 0xc5, - 0xc2, 0x8f, 0x8a, 0x90, 0x3c, 0x9c, 0x5d, 0xf9, 0xe7, 0x4d, 0x42, 0x7e, 0x11, 0x61, 0x2b, 0xee, - 0xbf, 0x4b, 0x30, 0x51, 0x47, 0x2e, 0xb6, 0xe0, 0x6e, 0xe3, 0x3c, 0x85, 0xdb, 0x38, 0x43, 0xe8, - 0xc4, 0xee, 0xbf, 0x7b, 0x93, 0x75, 0xe6, 0xbc, 0x35, 0x7e, 0x4e, 0xe0, 0x91, 0x48, 0xca, 0x9d, - 0xa7, 0x65, 0x1e, 0xc8, 0x23, 0x31, 0x96, 0x54, 0xfa, 0xbe, 0x56, 0xef, 0x96, 0xa8, 0x6b, 0x15, - 0xd3, 0xeb, 0xbd, 0x8e, 0xd5, 0xcf, 0x58, 0x6f, 0x33, 0xca, 0x7c, 0x8c, 0x73, 0xd4, 0x13, 0x60, - 0x82, 0xc8, 0xdc, 0x9f, 0x8f, 0xf6, 0xfa, 0x29, 0x10, 0x12, 0xf8, 0xec, 0xb5, 0x9f, 0x53, 0xd0, - 0x45, 0x2d, 0xba, 0xf0, 0xb1, 0xc4, 0x20, 0x98, 0xa9, 0x22, 0xf7, 0xa2, 0x65, 0x5f, 0xa8, 0xbb, - 0xba, 0x8b, 0xd4, 0x7f, 0x95, 0x40, 0xae, 0x23, 0x97, 0x8d, 0x7e, 0x52, 0x85, 0x63, 0xa4, 0x42, - 0x34, 0x23, 0xee, 0xbf, 0x49, 0x45, 0xae, 0xe9, 0x2b, 0x04, 0x26, 0x9f, 0xb6, 0xff, 0x57, 0xf5, - 0xd7, 0xfb, 0x06, 0x7d, 0x92, 0xfa, 0x4c, 0x1a, 0xa8, 0x64, 0x58, 0x06, 0x3d, 0x05, 0x8b, 0xd0, - 0xd3, 0x0f, 0x09, 0x99, 0xd5, 0x62, 0x34, 0x0f, 0xa7, 0x2b, 0xf8, 0xe8, 0x15, 0x90, 0x2d, 0x6d, - 0xeb, 0xae, 0xfa, 0x2e, 0x19, 0xa0, 0xd8, 0x6e, 0xaf, 0x11, 0x1f, 0x70, 0xd6, 0x21, 0xed, 0x0c, - 0xcc, 0xb4, 0xb6, 0xf5, 0xf0, 0x6e, 0x13, 0xd2, 0x1f, 0x70, 0x69, 0xca, 0x13, 0x43, 0x67, 0x72, - 0x22, 0x55, 0xb5, 0x07, 0x26, 0xaf, 0x0c, 0x4a, 0x3b, 0x70, 0x34, 0xe7, 0x43, 0x61, 0xc6, 0x1e, - 0xa1, 0xf3, 0x7e, 0x9f, 0x0f, 0xd9, 0x8b, 0x9e, 0xc3, 0x51, 0xd2, 0xc1, 0x01, 0x9b, 0x30, 0x21, - 0xe1, 0x49, 0x6f, 0xb1, 0x80, 0x1e, 0xf1, 0x7c, 0x8d, 0x25, 0x74, 0xad, 0x52, 0x6e, 0x1b, 0xbe, - 0x68, 0x69, 0xc0, 0x2c, 0xf5, 0x85, 0x99, 0x64, 0xf0, 0xc5, 0x0b, 0xee, 0x6e, 0x98, 0x45, 0x6d, - 0xc3, 0x45, 0x7e, 0x2d, 0xa9, 0x00, 0xe3, 0x20, 0xe6, 0x7f, 0x50, 0x9f, 0x2d, 0x1c, 0x74, 0x0d, - 0x0b, 0x74, 0x7f, 0x8d, 0x22, 0xda, 0x9f, 0x58, 0x18, 0x35, 0x31, 0x9a, 0xe9, 0x83, 0xf5, 0x1c, - 0x19, 0x4e, 0x34, 0xac, 0xad, 0xad, 0x0e, 0xf2, 0xc5, 0x84, 0x88, 0x77, 0xa6, 0xaa, 0x8f, 0x12, - 0x2e, 0xbc, 0x13, 0x64, 0xdd, 0x6f, 0x04, 0x47, 0xc9, 0xbc, 0x17, 0xfe, 0xc4, 0x54, 0xec, 0x2c, - 0x0a, 0x8b, 0xab, 0x2f, 0x9f, 0x11, 0x28, 0x88, 0x05, 0x7c, 0x16, 0x26, 0x9b, 0x3e, 0x10, 0x5f, - 0x94, 0x60, 0x96, 0xdc, 0x5c, 0xe9, 0x2b, 0xe8, 0xbd, 0x23, 0x04, 0x40, 0xfd, 0x5e, 0x46, 0xd4, - 0xcf, 0x16, 0xcb, 0x84, 0xe3, 0x24, 0x42, 0xc4, 0x62, 0x41, 0x55, 0x06, 0x92, 0x4b, 0x5f, 0xb4, - 0x7f, 0x22, 0xc3, 0xf4, 0x32, 0xf2, 0x5b, 0x9a, 0x93, 0xb8, 0x27, 0x3a, 0x03, 0x33, 0xf8, 0xfa, - 0xb6, 0x1a, 0x3d, 0x26, 0x49, 0x56, 0xcd, 0xb8, 0x34, 0xe5, 0x3a, 0x98, 0x3d, 0x8f, 0x36, 0x2d, - 0x1b, 0xd5, 0xb8, 0xb3, 0x94, 0x7c, 0x62, 0x44, 0x78, 0x3a, 0x2e, 0x0e, 0xda, 0x02, 0x8f, 0xcd, - 0x4d, 0xfb, 0x85, 0xc9, 0x54, 0x25, 0x62, 0xcc, 0x79, 0x12, 0x4c, 0x52, 0xe4, 0x7d, 0x33, 0x2d, - 0xae, 0x5f, 0x0c, 0xf2, 0xaa, 0xbf, 0x11, 0x20, 0x5a, 0xe6, 0x10, 0x7d, 0x7c, 0x12, 0x26, 0xc6, - 0x72, 0xbf, 0x7b, 0x81, 0x29, 0x7f, 0xe1, 0x52, 0xa5, 0xed, 0xa8, 0x6b, 0xc9, 0x30, 0x3d, 0x0d, - 0x10, 0x34, 0x0e, 0x3f, 0xac, 0x05, 0x93, 0xc2, 0x47, 0xae, 0x8f, 0x3d, 0xa8, 0xd7, 0x2b, 0x0e, - 0xcc, 0xce, 0x88, 0x81, 0x11, 0x3b, 0xe0, 0x27, 0xc2, 0x49, 0xfa, 0xe8, 0x7c, 0x5a, 0x86, 0x13, - 0xc1, 0xf9, 0xa3, 0x55, 0xdd, 0x09, 0xdb, 0x5d, 0x29, 0x19, 0x44, 0xdc, 0x81, 0x8f, 0xa0, 0xb1, - 0x7c, 0x3b, 0xd9, 0x98, 0xd1, 0x97, 0x93, 0xd1, 0xa2, 0xa3, 0xdc, 0x04, 0xc7, 0xcc, 0xdd, 0x9d, - 0x40, 0xea, 0xb8, 0xc5, 0xd3, 0x16, 0xbe, 0xff, 0x43, 0x92, 0x91, 0x49, 0x84, 0xf9, 0xb1, 0xcc, - 0x29, 0xb9, 0x23, 0x5d, 0x8f, 0x4b, 0x04, 0xa3, 0xfa, 0x2f, 0x99, 0x44, 0xbd, 0xdb, 0xe0, 0x33, - 0x5f, 0x09, 0x7a, 0xa9, 0x43, 0x3c, 0xf0, 0x75, 0x66, 0x02, 0x72, 0xe5, 0x9d, 0xae, 0x7b, 0xe9, - 0xcc, 0xa3, 0x61, 0xb6, 0xee, 0xda, 0x48, 0xdf, 0x61, 0x76, 0x06, 0x5c, 0xeb, 0x02, 0x32, 0xfd, - 0x9d, 0x01, 0xfc, 0x72, 0xfb, 0x6d, 0x30, 0x61, 0x5a, 0x4d, 0x7d, 0xd7, 0xdd, 0x56, 0xae, 0xde, - 0x77, 0xa4, 0x9e, 0x82, 0x5f, 0xa3, 0x31, 0x8c, 0xbe, 0x7a, 0x07, 0x5e, 0x1b, 0xce, 0x9b, 0x56, - 0x71, 0xd7, 0xdd, 0x5e, 0xb8, 0xea, 0x93, 0x7f, 0x7b, 0x3a, 0xf3, 0x99, 0xbf, 0x3d, 0x9d, 0xf9, - 0xca, 0xdf, 0x9e, 0xce, 0xfc, 0xf2, 0xd7, 0x4e, 0x1f, 0xf9, 0xcc, 0xd7, 0x4e, 0x1f, 0xf9, 0xe2, - 0xd7, 0x4e, 0x1f, 0xf9, 0x29, 0xa9, 0x7b, 0xfe, 0x7c, 0x1e, 0x53, 0x79, 0xc2, 0xff, 0x1f, 0x00, - 0x00, 0xff, 0xff, 0xf9, 0xe8, 0x43, 0xba, 0x87, 0x01, 0x02, 0x00, + 0xdc, 0x9a, 0x56, 0x5f, 0xa9, 0x2e, 0x06, 0xdf, 0x26, 0x3d, 0x92, 0x1e, 0x33, 0xc5, 0xca, 0x7d, + 0xb8, 0x35, 0x4e, 0x29, 0x8f, 0x82, 0x2b, 0x98, 0x0e, 0xbb, 0xb8, 0xaa, 0x6b, 0xc5, 0xc5, 0xfb, + 0x1a, 0xda, 0xd3, 0xca, 0xb5, 0x7a, 0x8d, 0x6f, 0x5c, 0x7e, 0x3b, 0x9a, 0xf6, 0xf8, 0xd5, 0xd6, + 0x8a, 0xe5, 0x55, 0xda, 0xbf, 0x2f, 0x55, 0xf5, 0xb5, 0x62, 0xbd, 0x30, 0xa3, 0xbe, 0x5c, 0x86, + 0xc2, 0x32, 0x72, 0xd7, 0x6d, 0xc7, 0x35, 0xda, 0xab, 0xa6, 0x75, 0x61, 0xc3, 0x69, 0x73, 0x93, + 0x4d, 0xe1, 0x30, 0x1d, 0xfc, 0x10, 0xc9, 0x11, 0x8c, 0xde, 0x11, 0xef, 0xe0, 0x6c, 0xa1, 0x32, + 0x85, 0x09, 0xea, 0x33, 0x25, 0x91, 0xe5, 0x6e, 0xf1, 0x52, 0x93, 0xe9, 0xc9, 0xb3, 0xc6, 0x3d, + 0x3e, 0xf7, 0x41, 0x2d, 0xaf, 0x3e, 0x37, 0x0b, 0x93, 0x4b, 0xa6, 0x65, 0xb4, 0xcd, 0x67, 0x70, + 0xf1, 0x4b, 0xc3, 0x3e, 0x26, 0x13, 0xd3, 0xc7, 0x48, 0x43, 0x8d, 0x9f, 0xbf, 0x26, 0x8b, 0x2e, + 0x2f, 0x30, 0xb2, 0xf7, 0x99, 0x8c, 0x18, 0x3c, 0x3f, 0x2c, 0x89, 0x2c, 0x2f, 0x0c, 0xa6, 0x97, + 0x0c, 0xc3, 0x4f, 0xfd, 0x70, 0xd8, 0x58, 0x3d, 0xed, 0x7b, 0xb2, 0x9f, 0x2a, 0x4c, 0xa9, 0x7f, + 0x2e, 0x83, 0xba, 0x8c, 0xdc, 0xb3, 0xc8, 0x09, 0xa6, 0x02, 0xb8, 0xd7, 0xa7, 0xf6, 0x36, 0xd3, + 0x64, 0xdf, 0xcc, 0x02, 0x78, 0x8e, 0x07, 0xb0, 0x18, 0xd3, 0x78, 0x22, 0x48, 0x47, 0x34, 0xde, + 0x32, 0xe4, 0xbb, 0xf8, 0x3b, 0x55, 0xb3, 0xc7, 0x47, 0x0f, 0x97, 0x98, 0x18, 0x4b, 0x9d, 0x10, + 0xd6, 0x29, 0x01, 0xf5, 0x7b, 0xc1, 0x24, 0xe8, 0xa7, 0x39, 0xed, 0x58, 0x3a, 0x30, 0xb3, 0xc9, + 0xf4, 0xc5, 0x49, 0x57, 0x5d, 0xfa, 0xd9, 0x37, 0xea, 0x87, 0x73, 0x70, 0xbc, 0x5f, 0x75, 0xd4, + 0xdf, 0xc9, 0x70, 0x3b, 0xec, 0x08, 0x0f, 0xf9, 0x19, 0xba, 0x81, 0xe8, 0xbd, 0x28, 0x4f, 0x84, + 0x13, 0xc1, 0x32, 0x5c, 0xdd, 0xae, 0xa0, 0x8b, 0xdd, 0x36, 0x72, 0x5d, 0xe4, 0xe0, 0xaa, 0x4d, + 0xea, 0xfd, 0x3f, 0x2a, 0x4f, 0x86, 0xcb, 0x4d, 0xab, 0x6b, 0xb6, 0x90, 0x53, 0x37, 0x3b, 0xdd, + 0xa2, 0xd5, 0xaa, 0xef, 0xba, 0xb6, 0x63, 0x1a, 0xf4, 0x2a, 0xc9, 0x49, 0x3d, 0xea, 0xb3, 0x72, + 0x23, 0x14, 0xcc, 0x6e, 0xd5, 0x3a, 0x6f, 0x1b, 0x4e, 0xcb, 0xb4, 0xb6, 0x56, 0xcd, 0xae, 0x4b, + 0x3d, 0x80, 0xf7, 0xa5, 0xab, 0xff, 0x20, 0x8b, 0x1e, 0xa6, 0x1b, 0x00, 0x6b, 0x44, 0x87, 0xf2, + 0x3c, 0x59, 0xe4, 0x78, 0x5c, 0x32, 0xda, 0xc9, 0x94, 0xe5, 0x39, 0xe3, 0x36, 0x24, 0xfa, 0x8f, + 0xe0, 0xb8, 0x6b, 0x21, 0xe9, 0xbe, 0x21, 0x70, 0x56, 0xd3, 0xcb, 0x4b, 0x65, 0xcd, 0x33, 0x2b, + 0x4e, 0xc0, 0xb1, 0xf0, 0xdb, 0xe2, 0x7d, 0x8d, 0x9a, 0x56, 0xa9, 0x17, 0x26, 0xbd, 0x7e, 0x8a, + 0x24, 0x2f, 0x15, 0xcb, 0xab, 0xda, 0x62, 0xa3, 0x5e, 0xf5, 0xbe, 0x2c, 0x0e, 0x67, 0x5a, 0xa8, + 0x0f, 0x66, 0xe1, 0x28, 0x96, 0xed, 0x25, 0x2c, 0x55, 0x4f, 0x28, 0x3d, 0xbe, 0xb6, 0x01, 0x40, + 0x53, 0x44, 0xbc, 0xea, 0x67, 0x85, 0x6f, 0xca, 0x64, 0x20, 0xec, 0x29, 0x23, 0x42, 0x33, 0xbe, + 0x2b, 0x89, 0x44, 0xa8, 0x10, 0x26, 0x9b, 0x4c, 0x29, 0xfe, 0x75, 0xdc, 0x23, 0x4e, 0x34, 0xf8, + 0xd8, 0xca, 0x2c, 0xe1, 0x9f, 0x9f, 0xb6, 0x5e, 0xd6, 0xb1, 0x3a, 0xcc, 0x01, 0xe0, 0x14, 0xac, + 0x41, 0x44, 0x0f, 0xfa, 0x8e, 0x57, 0x51, 0x7a, 0x50, 0x2c, 0xd5, 0xcb, 0x67, 0xb5, 0x28, 0x3d, + 0xf8, 0x8c, 0x0c, 0x93, 0xcb, 0xc8, 0xf5, 0xe6, 0x54, 0x5d, 0xf5, 0x29, 0x02, 0xeb, 0x3f, 0x9e, + 0x19, 0xd3, 0xb6, 0x9b, 0x46, 0x3b, 0x58, 0x06, 0x20, 0x6f, 0xea, 0xb3, 0x87, 0x31, 0x41, 0xfc, + 0xa2, 0x23, 0xc6, 0xab, 0x9f, 0x84, 0x9c, 0xeb, 0x7d, 0xa6, 0xcb, 0xd0, 0x3f, 0x16, 0x39, 0x5c, + 0x79, 0x44, 0x16, 0x0d, 0xd7, 0xd0, 0x49, 0x7e, 0x66, 0x74, 0x12, 0xb4, 0x5d, 0x22, 0x18, 0xf9, + 0x61, 0xb4, 0x3f, 0xff, 0x4e, 0x86, 0x13, 0xa4, 0x7d, 0x14, 0x3b, 0x9d, 0x9a, 0x6b, 0x3b, 0x48, + 0x47, 0x4d, 0x64, 0x76, 0xdc, 0x9e, 0xf5, 0x3d, 0x87, 0xa4, 0xfa, 0x9b, 0xcd, 0xf4, 0x55, 0x7d, + 0x83, 0x2c, 0x1a, 0x83, 0x79, 0x5f, 0x7b, 0xec, 0x29, 0x2f, 0xa2, 0xb1, 0x7f, 0x5c, 0x12, 0x89, + 0xaa, 0x9c, 0x90, 0x78, 0x32, 0xa0, 0x3e, 0x72, 0x08, 0x40, 0xf9, 0x2b, 0x37, 0xba, 0x56, 0xd2, + 0xca, 0xeb, 0xde, 0x20, 0x70, 0x35, 0x5c, 0xb9, 0xbe, 0xa1, 0x97, 0x56, 0x8a, 0x35, 0xad, 0xa1, + 0x6b, 0xcb, 0xe5, 0x5a, 0x9d, 0x3a, 0x65, 0x91, 0xbf, 0x26, 0x94, 0xab, 0xe0, 0x54, 0x6d, 0x63, + 0xa1, 0x56, 0xd2, 0xcb, 0xeb, 0x38, 0x5d, 0xd7, 0x2a, 0xda, 0x39, 0xfa, 0x75, 0x52, 0xfd, 0x60, + 0x01, 0xa6, 0xbd, 0x09, 0x40, 0x8d, 0xcc, 0x0b, 0xd4, 0x6f, 0x65, 0x61, 0x5a, 0x47, 0x5d, 0xbb, + 0xbd, 0x87, 0xe7, 0x08, 0xe3, 0x9a, 0x7a, 0x7c, 0x47, 0x16, 0x3d, 0xbf, 0xcd, 0x30, 0x3b, 0xcf, + 0x30, 0x1a, 0x3d, 0xd1, 0x34, 0xf6, 0x0c, 0xb3, 0x6d, 0x9c, 0xa7, 0x5d, 0xcd, 0xa4, 0x1e, 0x26, + 0x28, 0xf3, 0xa0, 0xd8, 0x17, 0x2d, 0xe4, 0xd4, 0x9a, 0x17, 0x35, 0x77, 0xbb, 0xd8, 0x6a, 0x39, + 0xa8, 0xdb, 0xa5, 0xab, 0x17, 0x7d, 0xbe, 0x28, 0x37, 0xc0, 0x51, 0x9c, 0xca, 0x64, 0x26, 0x0e, + 0x32, 0xbd, 0xc9, 0x41, 0xce, 0xa2, 0x75, 0xc9, 0xcf, 0x99, 0x63, 0x72, 0x86, 0xc9, 0xec, 0x71, + 0x89, 0x3c, 0x7f, 0x4a, 0xe7, 0x1a, 0x98, 0xb6, 0x8c, 0x1d, 0xa4, 0x3d, 0xd0, 0x31, 0x1d, 0xd4, + 0xc5, 0x8e, 0x31, 0xb2, 0xce, 0x26, 0xa9, 0x1f, 0x16, 0x3a, 0x6f, 0x2e, 0x26, 0xb1, 0x64, 0xba, + 0xbf, 0x3c, 0x84, 0xea, 0xf7, 0xe9, 0x67, 0x64, 0xf5, 0x83, 0x32, 0xcc, 0x50, 0xa6, 0x8a, 0xd6, + 0xa5, 0x72, 0x4b, 0xbd, 0x9a, 0x33, 0x7e, 0x0d, 0x2f, 0xcd, 0x37, 0x7e, 0xf1, 0x8b, 0xfa, 0x4b, + 0xb2, 0xa8, 0xbb, 0x73, 0x9f, 0x8a, 0xe3, 0x32, 0xa2, 0x1d, 0x47, 0x37, 0xed, 0x5d, 0xea, 0xa8, + 0x3a, 0xa9, 0x93, 0x97, 0x34, 0x17, 0xf5, 0xd4, 0xdf, 0x17, 0x72, 0xa6, 0x16, 0xac, 0xc6, 0x21, + 0x01, 0xf8, 0x49, 0x19, 0xe6, 0x28, 0x57, 0x35, 0x7a, 0xce, 0x47, 0xe8, 0xc0, 0xdb, 0xaf, 0x08, + 0x1b, 0x82, 0x7d, 0xea, 0x4f, 0x4b, 0x7a, 0xc4, 0x00, 0xf9, 0x51, 0xa1, 0xe0, 0x68, 0xc2, 0x15, + 0x39, 0x24, 0x28, 0xdf, 0x99, 0x85, 0xe9, 0x8d, 0x2e, 0x72, 0xa8, 0xdf, 0xbe, 0xfa, 0x50, 0x16, + 0xe4, 0x65, 0xc4, 0x6d, 0xa4, 0xbe, 0x50, 0xd8, 0xc3, 0x97, 0xad, 0x2c, 0x43, 0xd4, 0xb3, 0x91, + 0x22, 0x60, 0xbb, 0x1e, 0xe6, 0x88, 0x48, 0x8b, 0xae, 0xeb, 0x19, 0x89, 0xbe, 0x37, 0x6d, 0x4f, + 0xea, 0x28, 0xb6, 0x8a, 0x70, 0x59, 0x5e, 0x96, 0x92, 0xc7, 0xd3, 0x2a, 0xda, 0x24, 0xf3, 0xd9, + 0xac, 0xde, 0x93, 0xaa, 0xdc, 0x02, 0x97, 0xd9, 0x1d, 0x44, 0xce, 0xaf, 0x30, 0x99, 0x73, 0x38, + 0x73, 0xbf, 0x4f, 0xea, 0xb7, 0x84, 0x7c, 0x75, 0xc5, 0xa5, 0x93, 0x4c, 0x17, 0x3a, 0xa3, 0x31, + 0x49, 0x8e, 0x43, 0xc1, 0xcb, 0x81, 0xf7, 0x5f, 0x74, 0xad, 0x56, 0x5d, 0x3d, 0xab, 0xf5, 0x5f, + 0xc6, 0xc8, 0xa9, 0xcf, 0x91, 0x61, 0x6a, 0xc1, 0xb1, 0x8d, 0x56, 0xd3, 0xe8, 0xba, 0xea, 0xf7, + 0x24, 0x98, 0x59, 0x37, 0x2e, 0xb5, 0x6d, 0xa3, 0x85, 0xfd, 0xfb, 0x7b, 0xfa, 0x82, 0x0e, 0xf9, + 0xe4, 0xf7, 0x05, 0xf4, 0x95, 0x3f, 0x18, 0x18, 0x1c, 0xdd, 0xcb, 0x88, 0x5c, 0xa8, 0x19, 0x6c, + 0xf3, 0x49, 0xfd, 0x82, 0x95, 0xfa, 0x7c, 0xcd, 0xb3, 0x3c, 0x45, 0x58, 0x94, 0x1f, 0x14, 0x0b, + 0x3f, 0x2a, 0x42, 0xf2, 0x70, 0x76, 0xe5, 0x9f, 0x3b, 0x09, 0xf9, 0x45, 0x84, 0xad, 0xb8, 0xff, + 0x2e, 0xc1, 0x44, 0x0d, 0xb9, 0xd8, 0x82, 0xbb, 0x8d, 0xf3, 0x14, 0x6e, 0xe1, 0x0c, 0xa1, 0x13, + 0xbb, 0xff, 0xee, 0x4d, 0xd6, 0x99, 0xf3, 0xd6, 0xf8, 0x39, 0x81, 0x47, 0x22, 0x29, 0x77, 0x9e, + 0x96, 0x79, 0x20, 0x8f, 0xc4, 0x58, 0x52, 0xe9, 0xfb, 0x5a, 0xbd, 0x5b, 0xa2, 0xae, 0x55, 0x4c, + 0xaf, 0xf7, 0x1a, 0x56, 0x3f, 0x63, 0xbd, 0xcd, 0x28, 0xf3, 0x31, 0xce, 0x51, 0x4f, 0x80, 0x09, + 0x22, 0x73, 0x7f, 0x3e, 0xda, 0xeb, 0xa7, 0x40, 0x48, 0xe0, 0xb3, 0xd7, 0x7e, 0x4e, 0x41, 0x17, + 0xb5, 0xe8, 0xc2, 0xc7, 0x12, 0x83, 0x60, 0xa6, 0x82, 0xdc, 0x8b, 0xb6, 0x73, 0xa1, 0xe6, 0x1a, + 0x2e, 0x52, 0xff, 0x55, 0x02, 0xb9, 0x86, 0x5c, 0x36, 0xfa, 0x49, 0x05, 0x8e, 0x91, 0x0a, 0xd1, + 0x8c, 0xb8, 0xff, 0x26, 0x15, 0xb9, 0xa6, 0xaf, 0x10, 0x98, 0x7c, 0xfa, 0xfe, 0x5f, 0xd5, 0xdf, + 0xe8, 0x1b, 0xf4, 0x49, 0xea, 0x33, 0x69, 0xa0, 0x92, 0x61, 0x19, 0xf4, 0x14, 0x2c, 0x42, 0x4f, + 0x3f, 0x24, 0x64, 0x56, 0x8b, 0xd1, 0x3c, 0x9c, 0xae, 0xe0, 0xa3, 0x57, 0x40, 0xb6, 0xb4, 0x6d, + 0xb8, 0xea, 0xbb, 0x64, 0x80, 0x62, 0xab, 0xb5, 0x46, 0x7c, 0xc0, 0x59, 0x87, 0xb4, 0x33, 0x30, + 0xd3, 0xdc, 0x36, 0xc2, 0xbb, 0x4d, 0x48, 0x7f, 0xc0, 0xa5, 0x29, 0x4f, 0x0c, 0x9d, 0xc9, 0x89, + 0x54, 0xd5, 0x1e, 0x98, 0xbc, 0x32, 0x28, 0xed, 0xc0, 0xd1, 0x9c, 0x0f, 0x85, 0x19, 0x7b, 0x84, + 0xce, 0xfb, 0x7d, 0x3e, 0x64, 0x2f, 0x7a, 0x0e, 0x47, 0x49, 0x07, 0x07, 0x6c, 0xc2, 0x84, 0x84, + 0x27, 0xbd, 0xc5, 0x02, 0x7a, 0xc4, 0xf3, 0x35, 0x96, 0xd0, 0xb5, 0x8a, 0xd6, 0x32, 0x7d, 0xd1, + 0xd2, 0x80, 0x59, 0xea, 0x0b, 0x32, 0xc9, 0xe0, 0x8b, 0x17, 0xdc, 0xdd, 0x30, 0x8b, 0x5a, 0xa6, + 0x8b, 0xfc, 0x5a, 0x52, 0x01, 0xc6, 0x41, 0xcc, 0xff, 0xa0, 0x3e, 0x4b, 0x38, 0xe8, 0x1a, 0x16, + 0xe8, 0xfe, 0x1a, 0x45, 0xb4, 0x3f, 0xb1, 0x30, 0x6a, 0x62, 0x34, 0xd3, 0x07, 0xeb, 0xd9, 0x32, + 0x9c, 0xa8, 0xdb, 0x5b, 0x5b, 0x6d, 0xe4, 0x8b, 0x09, 0x11, 0xef, 0x4c, 0xd5, 0x18, 0x25, 0x5c, + 0x78, 0x27, 0xc8, 0xbe, 0xdf, 0x0c, 0x8e, 0x92, 0x79, 0x2f, 0xfc, 0x89, 0xa9, 0xd8, 0x59, 0x14, + 0x16, 0x57, 0x5f, 0x3e, 0x23, 0x50, 0x10, 0x0b, 0xf8, 0x2c, 0x4c, 0x36, 0x7d, 0x20, 0xbe, 0x28, + 0xc1, 0x2c, 0xb9, 0xb9, 0xd2, 0x57, 0xd0, 0x7b, 0x47, 0x08, 0x80, 0xfa, 0xbd, 0x8c, 0xa8, 0x9f, + 0x2d, 0x96, 0x09, 0xc7, 0x49, 0x84, 0x88, 0xc5, 0x82, 0xaa, 0x0c, 0x24, 0x97, 0xbe, 0x68, 0xff, + 0x44, 0x86, 0xe9, 0x65, 0xe4, 0xb7, 0xb4, 0x6e, 0xe2, 0x9e, 0xe8, 0x0c, 0xcc, 0xe0, 0xeb, 0xdb, + 0xaa, 0xf4, 0x98, 0x24, 0x59, 0x35, 0xe3, 0xd2, 0x94, 0xeb, 0x60, 0xf6, 0x3c, 0xda, 0xb4, 0x1d, + 0x54, 0xe5, 0xce, 0x52, 0xf2, 0x89, 0x11, 0xe1, 0xe9, 0xb8, 0x38, 0x68, 0x0b, 0x3c, 0x36, 0x37, + 0xed, 0x17, 0x26, 0x53, 0x95, 0x88, 0x31, 0xe7, 0x49, 0x30, 0x49, 0x91, 0xf7, 0xcd, 0xb4, 0xb8, + 0x7e, 0x31, 0xc8, 0xab, 0xbe, 0x3e, 0x40, 0x54, 0xe3, 0x10, 0x7d, 0x7c, 0x12, 0x26, 0xc6, 0x72, + 0xbf, 0x7b, 0x81, 0x29, 0x7f, 0xe1, 0x52, 0xb9, 0xd5, 0x55, 0xd7, 0x92, 0x61, 0x7a, 0x1a, 0x20, + 0x68, 0x1c, 0x7e, 0x58, 0x0b, 0x26, 0x85, 0x8f, 0x5c, 0x1f, 0x7b, 0x50, 0xaf, 0x57, 0x1c, 0x98, + 0x9d, 0x11, 0x03, 0x23, 0x76, 0xc0, 0x4f, 0x84, 0x93, 0xf4, 0xd1, 0xf9, 0xb4, 0x0c, 0x27, 0x82, + 0xf3, 0x47, 0xab, 0x46, 0x37, 0x6c, 0x77, 0xa5, 0x64, 0x10, 0x71, 0x07, 0x3e, 0x82, 0xc6, 0xf2, + 0xed, 0x64, 0x63, 0x46, 0x5f, 0x4e, 0x46, 0x8b, 0x8e, 0x72, 0x13, 0x1c, 0xb3, 0x76, 0x77, 0x02, + 0xa9, 0xe3, 0x16, 0x4f, 0x5b, 0xf8, 0xfe, 0x0f, 0x49, 0x46, 0x26, 0x11, 0xe6, 0xc7, 0x32, 0xa7, + 0xe4, 0x8e, 0x74, 0x3d, 0x2e, 0x11, 0x8c, 0xea, 0xbf, 0x64, 0x12, 0xf5, 0x6e, 0x83, 0xcf, 0x7c, + 0x25, 0xe8, 0xa5, 0x0e, 0xf1, 0xc0, 0xd7, 0x99, 0x09, 0xc8, 0x69, 0x3b, 0x1d, 0xf7, 0xd2, 0x99, + 0x47, 0xc3, 0x6c, 0xcd, 0x75, 0x90, 0xb1, 0xc3, 0xec, 0x0c, 0xb8, 0xf6, 0x05, 0x64, 0xf9, 0x3b, + 0x03, 0xf8, 0xe5, 0xf6, 0xdb, 0x60, 0xc2, 0xb2, 0x1b, 0xc6, 0xae, 0xbb, 0xad, 0x5c, 0xbd, 0xef, + 0x48, 0x3d, 0x05, 0xbf, 0x4a, 0x63, 0x18, 0x7d, 0xf5, 0x0e, 0xbc, 0x36, 0x9c, 0xb7, 0xec, 0xe2, + 0xae, 0xbb, 0xbd, 0x70, 0xd5, 0x27, 0xff, 0xf6, 0x74, 0xe6, 0x33, 0x7f, 0x7b, 0x3a, 0xf3, 0x95, + 0xbf, 0x3d, 0x9d, 0xf9, 0x95, 0xaf, 0x9d, 0x3e, 0xf2, 0x99, 0xaf, 0x9d, 0x3e, 0xf2, 0xc5, 0xaf, + 0x9d, 0x3e, 0xf2, 0xd3, 0x52, 0xe7, 0xfc, 0xf9, 0x3c, 0xa6, 0xf2, 0x84, 0xff, 0x3f, 0x00, 0x00, + 0xff, 0xff, 0x23, 0x5a, 0xda, 0x98, 0x9f, 0x01, 0x02, 0x00, } func (m *Rpc) Marshal() (dAtA []byte, err error) { diff --git a/pb/protos/commands.proto b/pb/protos/commands.proto index 69f07180e..ae962ebcf 100644 --- a/pb/protos/commands.proto +++ b/pb/protos/commands.proto @@ -831,6 +831,7 @@ message Rpc { ACCOUNT_NOT_FOUND = 101; CANCELED = 102; + NOT_ENOUGH_STORAGE = 103; // TODO: [storage] Add specific error codes for migration problems } } From 0b4805fe8e4b27f85e25df7904d6c1dcc81dbf74 Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Fri, 10 Jan 2025 15:23:53 +0100 Subject: [PATCH 129/279] GO-4146 Update any-sync --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 2dd1764c3..ffc8e7b3d 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( github.com/VividCortex/ewma v1.2.0 github.com/adrium/goheif v0.0.0-20230113233934-ca402e77a786 github.com/anyproto/any-store v0.1.4-0.20241211133419-d0c2df992842 - github.com/anyproto/any-sync v0.6.0-alpha.3 + github.com/anyproto/any-sync v0.6.0-alpha.4 github.com/anyproto/go-chash v0.1.0 github.com/anyproto/go-naturaldate/v2 v2.0.2-0.20230524105841-9829cfd13438 github.com/anyproto/go-slip10 v1.0.0 diff --git a/go.sum b/go.sum index 4b912bee8..7ab308401 100644 --- a/go.sum +++ b/go.sum @@ -78,8 +78,8 @@ github.com/andybalholm/cascadia v1.3.2 h1:3Xi6Dw5lHF15JtdcmAHD3i1+T8plmv7BQ/nsVi github.com/andybalholm/cascadia v1.3.2/go.mod h1:7gtRlve5FxPPgIgX36uWBX58OdBsSS6lUvCFb+h7KvU= github.com/anyproto/any-store v0.1.4-0.20241211133419-d0c2df992842 h1:2hJRYJ4+AjOSiy3Sf84XyU/ki8zE/+Tp6IdhqZZHBaY= github.com/anyproto/any-store v0.1.4-0.20241211133419-d0c2df992842/go.mod h1:6/0OUKgSMWF/vYGoGYzQOl2CII5OdiuXbQlGDXYcNYc= -github.com/anyproto/any-sync v0.6.0-alpha.3 h1:g0DU1V8eyHSnIyCvYjHmNDkLJbezXCGWqfxeX6ywJXs= -github.com/anyproto/any-sync v0.6.0-alpha.3/go.mod h1:Mw8DVuLGNKk2ffEFdJT2AX40ZEv5FzYoVGe8Va0Z7mw= +github.com/anyproto/any-sync v0.6.0-alpha.4 h1:b6v+jKwDUvkNcoa8mBTxWpJimLbJQCn7S5B8V7TYQtc= +github.com/anyproto/any-sync v0.6.0-alpha.4/go.mod h1:Mw8DVuLGNKk2ffEFdJT2AX40ZEv5FzYoVGe8Va0Z7mw= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580 h1:Ba80IlCCxkZ9H1GF+7vFu/TSpPvbpDCxXJ5ogc4euYc= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580/go.mod h1:T/uWAYxrXdaXw64ihI++9RMbKTCpKd/yE9+saARew7k= github.com/anyproto/go-chash v0.1.0 h1:I9meTPjXFRfXZHRJzjOHC/XF7Q5vzysKkiT/grsogXY= From e4149a72f6b6ce12eaa504eba05f632d5e881d71 Mon Sep 17 00:00:00 2001 From: AnastasiaShemyakinskaya Date: Fri, 10 Jan 2025 15:32:17 +0100 Subject: [PATCH 130/279] GO-4418: fix empty collection in case when archive has directory in root with files Signed-off-by: AnastasiaShemyakinskaya --- core/block/import/common/source/directory.go | 44 +++++++++++++++++++- core/block/import/common/source/zip.go | 9 +++- 2 files changed, 51 insertions(+), 2 deletions(-) diff --git a/core/block/import/common/source/directory.go b/core/block/import/common/source/directory.go index cdbf2b329..07fc805c6 100644 --- a/core/block/import/common/source/directory.go +++ b/core/block/import/common/source/directory.go @@ -4,6 +4,9 @@ import ( "io" "os" "path/filepath" + "slices" + "sort" + "strings" "github.com/samber/lo" @@ -13,6 +16,7 @@ import ( type Directory struct { fileReaders map[string]struct{} importPath string + rootDirs []string } func NewDirectory() *Directory { @@ -23,6 +27,9 @@ func (d *Directory) Initialize(importPath string) error { files := make(map[string]struct{}) err := filepath.Walk(importPath, func(path string, info os.FileInfo, err error) error { + if strings.HasPrefix(info.Name(), ".DS_Store") { + return nil + } if info != nil && !info.IsDir() { files[path] = struct{}{} } @@ -31,6 +38,7 @@ func (d *Directory) Initialize(importPath string) error { ) d.fileReaders = files d.importPath = importPath + d.rootDirs = findNonEmptyDirs(files) if err != nil { return err } @@ -80,7 +88,41 @@ func (d *Directory) CountFilesWithGivenExtensions(extension []string) int { } func (d *Directory) IsRootFile(fileName string) bool { - return filepath.Dir(fileName) == d.importPath + fileDir := filepath.Dir(fileName) + return fileDir == d.importPath || slices.Contains(d.rootDirs, fileDir) } func (d *Directory) Close() {} + +func findNonEmptyDirs(files map[string]struct{}) []string { + dirs := make([]string, 0, len(files)) + for file := range files { + dir := filepath.Dir(file) + if dir == "." { + return []string{dir} + } + dirs = append(dirs, dir) + } + sort.Strings(dirs) + var result []string + visited := make(map[string]bool) + + for _, dir := range dirs { + if isSubdirectoryOfAny(dir, result) { + continue + } + result = lo.Union(result, []string{dir}) + visited[dir] = true + } + + return result +} + +func isSubdirectoryOfAny(dir string, directories []string) bool { + for _, base := range directories { + if strings.HasPrefix(dir, base+string(filepath.Separator)) { + return true + } + } + return false +} diff --git a/core/block/import/common/source/zip.go b/core/block/import/common/source/zip.go index ef3b21fb1..3c7103f9e 100644 --- a/core/block/import/common/source/zip.go +++ b/core/block/import/common/source/zip.go @@ -5,6 +5,7 @@ import ( "fmt" "io" "path/filepath" + "slices" "strings" "github.com/samber/lo" @@ -20,6 +21,7 @@ type Zip struct { archiveReader *zip.ReadCloser fileReaders map[string]*zip.File originalToNormalizedNames map[string]string + rootDirs []string } func NewZip() *Zip { @@ -33,16 +35,20 @@ func (z *Zip) Initialize(importPath string) error { return err } fileReaders := make(map[string]*zip.File, len(archiveReader.File)) + filePaths := make(map[string]struct{}, len(archiveReader.File)) for i, f := range archiveReader.File { if strings.HasPrefix(f.Name, "__MACOSX/") { continue } normalizedName := normalizeName(f, i) fileReaders[normalizedName] = f + filePaths[normalizedName] = struct{}{} if normalizedName != f.Name { z.originalToNormalizedNames[f.Name] = normalizedName } } + + z.rootDirs = findNonEmptyDirs(filePaths) z.fileReaders = fileReaders return nil } @@ -101,7 +107,8 @@ func (z *Zip) Close() { } func (z *Zip) IsRootFile(fileName string) bool { - return filepath.Dir(fileName) == "." + fileDir := filepath.Dir(fileName) + return fileDir == "." || slices.Contains(z.rootDirs, fileDir) } func (z *Zip) GetFileOriginalName(fileName string) string { From eea4cdf9862cfecaa2f88be9af27ebbd02cda4ea Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Fri, 10 Jan 2025 15:43:20 +0100 Subject: [PATCH 131/279] GO-4146 Update any-sync and any-store --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index ffc8e7b3d..63c8cf339 100644 --- a/go.mod +++ b/go.mod @@ -7,8 +7,8 @@ require ( github.com/PuerkitoBio/goquery v1.10.0 github.com/VividCortex/ewma v1.2.0 github.com/adrium/goheif v0.0.0-20230113233934-ca402e77a786 - github.com/anyproto/any-store v0.1.4-0.20241211133419-d0c2df992842 - github.com/anyproto/any-sync v0.6.0-alpha.4 + github.com/anyproto/any-store v0.1.3 + github.com/anyproto/any-sync v0.6.0-alpha.4.0.20250110144031-69146203821a github.com/anyproto/go-chash v0.1.0 github.com/anyproto/go-naturaldate/v2 v2.0.2-0.20230524105841-9829cfd13438 github.com/anyproto/go-slip10 v1.0.0 diff --git a/go.sum b/go.sum index 7ab308401..eb505542c 100644 --- a/go.sum +++ b/go.sum @@ -76,10 +76,10 @@ github.com/alexbrainman/goissue34681 v0.0.0-20191006012335-3fc7a47baff5/go.mod h github.com/andybalholm/cascadia v1.3.1/go.mod h1:R4bJ1UQfqADjvDa4P6HZHLh/3OxWWEqc0Sk8XGwHqvA= github.com/andybalholm/cascadia v1.3.2 h1:3Xi6Dw5lHF15JtdcmAHD3i1+T8plmv7BQ/nsViSLyss= github.com/andybalholm/cascadia v1.3.2/go.mod h1:7gtRlve5FxPPgIgX36uWBX58OdBsSS6lUvCFb+h7KvU= -github.com/anyproto/any-store v0.1.4-0.20241211133419-d0c2df992842 h1:2hJRYJ4+AjOSiy3Sf84XyU/ki8zE/+Tp6IdhqZZHBaY= -github.com/anyproto/any-store v0.1.4-0.20241211133419-d0c2df992842/go.mod h1:6/0OUKgSMWF/vYGoGYzQOl2CII5OdiuXbQlGDXYcNYc= -github.com/anyproto/any-sync v0.6.0-alpha.4 h1:b6v+jKwDUvkNcoa8mBTxWpJimLbJQCn7S5B8V7TYQtc= -github.com/anyproto/any-sync v0.6.0-alpha.4/go.mod h1:Mw8DVuLGNKk2ffEFdJT2AX40ZEv5FzYoVGe8Va0Z7mw= +github.com/anyproto/any-store v0.1.3 h1:onWLP8tuWiUvYOyV3DoRODscTxAiGEjwQPm+NMxeq3M= +github.com/anyproto/any-store v0.1.3/go.mod h1:6/0OUKgSMWF/vYGoGYzQOl2CII5OdiuXbQlGDXYcNYc= +github.com/anyproto/any-sync v0.6.0-alpha.4.0.20250110144031-69146203821a h1:6FI1KZvKA6+rltMVYYA/gWYVT+ipDxlZRa5Ja9zmlq4= +github.com/anyproto/any-sync v0.6.0-alpha.4.0.20250110144031-69146203821a/go.mod h1:91ismOJy65b0sODYdZ0jAjKQouppbz8ans/gn+ytL90= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580 h1:Ba80IlCCxkZ9H1GF+7vFu/TSpPvbpDCxXJ5ogc4euYc= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580/go.mod h1:T/uWAYxrXdaXw64ihI++9RMbKTCpKd/yE9+saARew7k= github.com/anyproto/go-chash v0.1.0 h1:I9meTPjXFRfXZHRJzjOHC/XF7Q5vzysKkiT/grsogXY= From e404fab7f0faebc4732f11c8390c219afb168696 Mon Sep 17 00:00:00 2001 From: Sergey Date: Fri, 10 Jan 2025 15:43:55 +0100 Subject: [PATCH 132/279] GO-4825: WIP: migrate object => space bindings --- core/anytype/config/config.go | 8 ++ pkg/lib/localstore/objectstore/fixture.go | 5 +- pkg/lib/localstore/objectstore/service.go | 52 +++++++------ pkg/lib/localstore/objectstore/space.go | 48 ------------ .../objectstore/spaceresolverstore/store.go | 71 ++++++++++++++++++ space/spacecore/oldstorage/storage.go | 3 +- .../badgerstorage/spacestorage_test.go | 55 ++++++++++++++ .../storage/badgerstorage/storageservice.go | 33 ++++++++- space/spacecore/storage/migrator/migrator.go | 74 +++++++++++++++++-- .../storage/sqlitestorage/service.go | 20 ++++- .../storage/sqlitestorage/service_test.go | 28 +++++++ space/spacecore/storage/sqlitestorage/sql.go | 3 + 12 files changed, 315 insertions(+), 85 deletions(-) create mode 100644 pkg/lib/localstore/objectstore/spaceresolverstore/store.go diff --git a/core/anytype/config/config.go b/core/anytype/config/config.go index 21bb2fce6..a7aa81857 100644 --- a/core/anytype/config/config.go +++ b/core/anytype/config/config.go @@ -292,6 +292,14 @@ func (c *Config) FSConfig() (FSConfig, error) { return FSConfig{IPFSStorageAddr: res.CustomFileStorePath}, nil } +func (c *Config) GetRepoPath() string { + return c.RepoPath +} + +func (c *Config) GetObjectStorePath() string { + return filepath.Join(c.RepoPath, "objectstore") +} + func (c *Config) GetConfigPath() string { return filepath.Join(c.RepoPath, ConfigFileName) } diff --git a/pkg/lib/localstore/objectstore/fixture.go b/pkg/lib/localstore/objectstore/fixture.go index f8dee2952..9d39615a6 100644 --- a/pkg/lib/localstore/objectstore/fixture.go +++ b/pkg/lib/localstore/objectstore/fixture.go @@ -75,8 +75,6 @@ func (w *walletStub) Name() string { return wallet.CName } func NewStoreFixture(t testing.TB) *StoreFixture { ctx, cancel := context.WithCancel(context.Background()) - walletService := newWalletStub(t) - fullText := ftsearch.TantivyNew() testApp := &app.App{} @@ -84,7 +82,6 @@ func NewStoreFixture(t testing.TB) *StoreFixture { require.NoError(t, err) testApp.Register(dataStore) - testApp.Register(walletService) err = fullText.Init(testApp) require.NoError(t, err) err = fullText.Run(context.Background()) @@ -100,7 +97,7 @@ func NewStoreFixture(t testing.TB) *StoreFixture { fts: fullText, sourceService: &detailsFromId{}, arenaPool: &anyenc.ArenaPool{}, - repoPath: walletService.RepoPath(), + objectStorePath: t.TempDir(), oldStore: oldStore, spaceIndexes: map[string]spaceindex.Store{}, techSpaceIdProvider: &stubTechSpaceIdProvider{}, diff --git a/pkg/lib/localstore/objectstore/service.go b/pkg/lib/localstore/objectstore/service.go index 62697e292..f5bb9b8e8 100644 --- a/pkg/lib/localstore/objectstore/service.go +++ b/pkg/lib/localstore/objectstore/service.go @@ -14,12 +14,12 @@ import ( "github.com/anyproto/any-sync/coordinator/coordinatorproto" "golang.org/x/exp/maps" - "github.com/anyproto/anytype-heart/core/wallet" "github.com/anyproto/anytype-heart/pkg/lib/database" "github.com/anyproto/anytype-heart/pkg/lib/localstore/ftsearch" "github.com/anyproto/anytype-heart/pkg/lib/localstore/objectstore/anystorehelper" "github.com/anyproto/anytype-heart/pkg/lib/localstore/objectstore/oldstore" "github.com/anyproto/anytype-heart/pkg/lib/localstore/objectstore/spaceindex" + "github.com/anyproto/anytype-heart/pkg/lib/localstore/objectstore/spaceresolverstore" "github.com/anyproto/anytype-heart/pkg/lib/logging" "github.com/anyproto/anytype-heart/pkg/lib/pb/model" ) @@ -52,7 +52,7 @@ type ObjectStore interface { GetCrdtDb(spaceId string) anystore.DB SpaceNameGetter - SpaceIdBinder + spaceresolverstore.Store CrossSpace } @@ -79,6 +79,7 @@ type VirtualSpacesStore interface { } type configProvider interface { + GetObjectStorePath() string GetAnyStoreConfig() *anystore.Config } @@ -87,9 +88,11 @@ type TechSpaceIdProvider interface { } type dsObjectStore struct { - repoPath string - techSpaceId string - anyStoreConfig anystore.Config + spaceresolverstore.Store + + objectStorePath string + techSpaceId string + anyStoreConfig anystore.Config anyStore anystore.DB anyStoreLockRemove func() error @@ -98,7 +101,6 @@ type dsObjectStore struct { virtualSpaces anystore.Collection system anystore.Collection fulltextQueue anystore.Collection - bindId anystore.Collection arenaPool *anyenc.ArenaPool @@ -154,8 +156,10 @@ func (s *dsObjectStore) Init(a *app.App) (err error) { s.fts = fts.(ftsearch.FTSearch) } s.arenaPool = &anyenc.ArenaPool{} - s.repoPath = app.MustComponent[wallet.Wallet](a).RepoPath() - s.anyStoreConfig = *app.MustComponent[configProvider](a).GetAnyStoreConfig() + + cfg := app.MustComponent[configProvider](a) + s.objectStorePath = cfg.GetObjectStorePath() + s.anyStoreConfig = *cfg.GetAnyStoreConfig() s.setDefaultConfig() s.oldStore = app.MustComponent[oldstore.Service](a) s.techSpaceIdProvider = app.MustComponent[TechSpaceIdProvider](a) @@ -170,12 +174,23 @@ func (s *dsObjectStore) Name() (name string) { func (s *dsObjectStore) Run(ctx context.Context) error { s.techSpaceId = s.techSpaceIdProvider.TechSpaceId() - dbDir := s.storeRootDir() - err := ensureDirExists(dbDir) + err := ensureDirExists(s.objectStorePath) if err != nil { return err } - return s.openDatabase(ctx, filepath.Join(dbDir, "objects.db")) + err = s.openDatabase(ctx, filepath.Join(s.objectStorePath, "objects.db")) + if err != nil { + return fmt.Errorf("open db: %w", err) + } + + store, err := spaceresolverstore.New(s.componentCtx, s.anyStore) + if err != nil { + return fmt.Errorf("new space resolver store: %w", err) + } + + s.Store = store + + return err } func (s *dsObjectStore) setDefaultConfig() { @@ -186,10 +201,6 @@ func (s *dsObjectStore) setDefaultConfig() { s.anyStoreConfig.SQLiteConnectionOptions["synchronous"] = "off" } -func (s *dsObjectStore) storeRootDir() string { - return filepath.Join(s.repoPath, "objectstore") -} - func ensureDirExists(dir string) error { _, err := os.Stat(dir) if errors.Is(err, os.ErrNotExist) { @@ -222,10 +233,6 @@ func (s *dsObjectStore) openDatabase(ctx context.Context, path string) error { if err != nil { return errors.Join(store.Close(), fmt.Errorf("open virtualSpaces collection: %w", err)) } - bindId, err := store.Collection(ctx, "bindId") - if err != nil { - return errors.Join(store.Close(), fmt.Errorf("open bindId collection: %w", err)) - } s.anyStore = store s.anyStoreLockRemove = lockRemove @@ -234,7 +241,6 @@ func (s *dsObjectStore) openDatabase(ctx context.Context, path string) error { s.system = system s.indexerChecksums = indexerChecksums s.virtualSpaces = virtualSpaces - s.bindId = bindId return nil } @@ -245,7 +251,7 @@ func (s *dsObjectStore) preloadExistingObjectStores() error { var err error s.spaceStoreDirsCheck.Do(func() { var entries []os.DirEntry - entries, err = os.ReadDir(s.storeRootDir()) + entries, err = os.ReadDir(s.objectStorePath) s.Lock() defer s.Unlock() for _, entry := range entries { @@ -307,7 +313,7 @@ func (s *dsObjectStore) SpaceIndex(spaceId string) spaceindex.Store { func (s *dsObjectStore) getOrInitSpaceIndex(spaceId string) spaceindex.Store { store, ok := s.spaceIndexes[spaceId] if !ok { - dir := filepath.Join(s.storeRootDir(), spaceId) + dir := filepath.Join(s.objectStorePath, spaceId) err := ensureDirExists(dir) if err != nil { return spaceindex.NewInvalidStore(err) @@ -341,7 +347,7 @@ func (s *dsObjectStore) GetCrdtDb(spaceId string) anystore.DB { db, ok := s.crdtDbs[spaceId] if !ok { - dir := filepath.Join(s.storeRootDir(), spaceId) + dir := filepath.Join(s.objectStorePath, spaceId) err := ensureDirExists(dir) if err != nil { return nil diff --git a/pkg/lib/localstore/objectstore/space.go b/pkg/lib/localstore/objectstore/space.go index f2f50e646..f79771223 100644 --- a/pkg/lib/localstore/objectstore/space.go +++ b/pkg/lib/localstore/objectstore/space.go @@ -1,30 +1,16 @@ package objectstore import ( - "context" - "errors" - - anystore "github.com/anyproto/any-store" - "github.com/anyproto/any-store/anyenc" - "github.com/anyproto/any-store/query" - "github.com/anyproto/anytype-heart/core/domain" "github.com/anyproto/anytype-heart/pkg/lib/bundle" "github.com/anyproto/anytype-heart/pkg/lib/database" "github.com/anyproto/anytype-heart/pkg/lib/pb/model" ) -const bindKey = "b" - type SpaceNameGetter interface { GetSpaceName(spaceId string) string } -type SpaceIdBinder interface { - BindSpaceId(spaceId, objectId string) error - GetSpaceId(objectId string) (spaceId string, err error) -} - func (d *dsObjectStore) GetSpaceName(spaceId string) string { records, err := d.SpaceIndex(d.techSpaceId).Query(database.Query{ Filters: []database.FilterRequest{ @@ -49,37 +35,3 @@ func (d *dsObjectStore) GetSpaceName(spaceId string) string { } return spaceName } - -func (d *dsObjectStore) BindSpaceId(spaceId, objectId string) error { - return d.modifyBind(d.componentCtx, objectId, spaceId) -} - -func (d *dsObjectStore) GetSpaceId(objectId string) (spaceId string, err error) { - doc, err := d.bindId.FindId(d.componentCtx, objectId) - if err != nil { - if errors.Is(err, anystore.ErrDocNotFound) { - return "", domain.ErrObjectNotFound - } - return "", err - } - return doc.Value().GetString(bindKey), nil -} - -func (d *dsObjectStore) modifyBind(ctx context.Context, objectId, spaceId string) error { - tx, err := d.bindId.WriteTx(ctx) - if err != nil { - return err - } - arena := d.arenaPool.Get() - defer d.arenaPool.Put(arena) - mod := query.ModifyFunc(func(a *anyenc.Arena, v *anyenc.Value) (result *anyenc.Value, modified bool, err error) { - v.Set(bindKey, arena.NewString(spaceId)) - return v, true, nil - }) - _, err = d.bindId.UpsertId(tx.Context(), objectId, mod) - if err != nil { - tx.Rollback() - return err - } - return tx.Commit() -} diff --git a/pkg/lib/localstore/objectstore/spaceresolverstore/store.go b/pkg/lib/localstore/objectstore/spaceresolverstore/store.go new file mode 100644 index 000000000..568c10b03 --- /dev/null +++ b/pkg/lib/localstore/objectstore/spaceresolverstore/store.go @@ -0,0 +1,71 @@ +package spaceresolverstore + +import ( + "context" + "errors" + "fmt" + + anystore "github.com/anyproto/any-store" + "github.com/anyproto/any-store/anyenc" + "github.com/anyproto/any-store/query" + + "github.com/anyproto/anytype-heart/core/domain" +) + +const bindKey = "b" + +type Store interface { + BindSpaceId(spaceId, objectId string) error + GetSpaceId(objectId string) (spaceId string, err error) +} + +type dsObjectStore struct { + componentCtx context.Context + collection anystore.Collection + arenaPool *anyenc.ArenaPool +} + +func New(componentCtx context.Context, db anystore.DB) (Store, error) { + collection, err := db.Collection(componentCtx, "bindId") + if err != nil { + return nil, fmt.Errorf("open bindId collection: %w", err) + } + return &dsObjectStore{ + componentCtx: componentCtx, + arenaPool: &anyenc.ArenaPool{}, + collection: collection, + }, nil +} + +func (d *dsObjectStore) BindSpaceId(spaceId, objectId string) error { + return d.modifyBind(d.componentCtx, objectId, spaceId) +} + +func (d *dsObjectStore) GetSpaceId(objectId string) (spaceId string, err error) { + doc, err := d.collection.FindId(d.componentCtx, objectId) + if err != nil { + if errors.Is(err, anystore.ErrDocNotFound) { + return "", domain.ErrObjectNotFound + } + return "", err + } + return doc.Value().GetString(bindKey), nil +} + +func (d *dsObjectStore) modifyBind(ctx context.Context, objectId, spaceId string) error { + tx, err := d.collection.WriteTx(ctx) + if err != nil { + return err + } + arena := d.arenaPool.Get() + defer d.arenaPool.Put(arena) + mod := query.ModifyFunc(func(a *anyenc.Arena, v *anyenc.Value) (result *anyenc.Value, modified bool, err error) { + v.Set(bindKey, arena.NewString(spaceId)) + return v, true, nil + }) + _, err = d.collection.UpsertId(tx.Context(), objectId, mod) + if err != nil { + return errors.Join(err, tx.Rollback()) + } + return tx.Commit() +} diff --git a/space/spacecore/oldstorage/storage.go b/space/spacecore/oldstorage/storage.go index 548e54f4b..a22dbe0a6 100644 --- a/space/spacecore/oldstorage/storage.go +++ b/space/spacecore/oldstorage/storage.go @@ -24,7 +24,8 @@ const ( type ClientStorage interface { oldstorage.SpaceStorageProvider app.ComponentRunnable - GetBinds(spaceId string) ([]string, error) + // GetBoundObjectIds returns list of object ids bound (mapped) to space id + GetBoundObjectIds(spaceId string) ([]string, error) AllSpaceIds() (ids []string, err error) DeleteSpaceStorage(ctx context.Context, spaceId string) error } diff --git a/space/spacecore/storage/badgerstorage/spacestorage_test.go b/space/spacecore/storage/badgerstorage/spacestorage_test.go index cc17da6ae..9844fbb17 100644 --- a/space/spacecore/storage/badgerstorage/spacestorage_test.go +++ b/space/spacecore/storage/badgerstorage/spacestorage_test.go @@ -140,3 +140,58 @@ func TestSpaceStorage_StoredIds_BigTxn(t *testing.T) { require.NoError(t, err) require.Len(t, storedIds, 0) } + +func newServiceFixture(t *testing.T) *storageService { + fx := newFixture(t) + fx.open(t) + + t.Cleanup(func() { + fx.stop(t) + }) + + s := &storageService{ + db: fx.db, + keys: newStorageServiceKeys(), + lockedSpaces: map[string]*lockSpace{}, + } + return s +} + +func TestStorageService_BindSpaceID(t *testing.T) { + fx := newServiceFixture(t) + + err := fx.BindSpaceID("spaceId1", "objectId1") + require.NoError(t, err) + + spaceId, err := fx.GetSpaceID("objectId1") + require.NoError(t, err) + + require.Equal(t, spaceId, "spaceId1") +} + +func TestStorageService_GetBoundObjectIds(t *testing.T) { + t.Run("with no bindings", func(t *testing.T) { + fx := newServiceFixture(t) + + ids, err := fx.GetBoundObjectIds("spaceId") + require.NoError(t, err) + assert.Empty(t, ids) + }) + + t.Run("ok", func(t *testing.T) { + fx := newServiceFixture(t) + + spaceId := "spaceId1" + err := fx.BindSpaceID(spaceId, "objectId1") + require.NoError(t, err) + + err = fx.BindSpaceID(spaceId, "objectId2") + require.NoError(t, err) + + ids, err := fx.GetBoundObjectIds(spaceId) + require.NoError(t, err) + + assert.ElementsMatch(t, []string{"objectId1", "objectId2"}, ids) + }) + +} diff --git a/space/spacecore/storage/badgerstorage/storageservice.go b/space/spacecore/storage/badgerstorage/storageservice.go index 13ed3b590..fa0d2c55b 100644 --- a/space/spacecore/storage/badgerstorage/storageservice.go +++ b/space/spacecore/storage/badgerstorage/storageservice.go @@ -1,8 +1,10 @@ package badgerstorage import ( + "bytes" "context" "errors" + "fmt" "sync" "github.com/anyproto/any-sync/app" @@ -167,8 +169,35 @@ func (s *storageService) GetSpaceID(objectID string) (spaceID string, err error) return spaceID, err } -func (s *storageService) GetBinds(spaceId string) ([]string, error) { - return nil, nil +func (s *storageService) GetBoundObjectIds(spaceId string) (ids []string, err error) { + prefix := []byte("bind/") + spaceIdBytes := []byte(spaceId) + err = s.db.View(func(txn *badger.Txn) error { + opts := badger.DefaultIteratorOptions + opts.PrefetchValues = false + opts.Prefix = prefix + + it := txn.NewIterator(opts) + defer it.Close() + + for it.Rewind(); it.Valid(); it.Next() { + item := it.Item() + id := item.Key() + + err = item.Value(func(val []byte) error { + if bytes.Equal(spaceIdBytes, val) { + idStr := string(id) + ids = append(ids, idStr[len(prefix):]) + } + return nil + }) + if err != nil { + return fmt.Errorf("read value: %w", err) + } + } + return nil + }) + return } func (s *storageService) BindSpaceID(spaceID, objectID string) (err error) { diff --git a/space/spacecore/storage/migrator/migrator.go b/space/spacecore/storage/migrator/migrator.go index 7becbca03..1d6da0082 100644 --- a/space/spacecore/storage/migrator/migrator.go +++ b/space/spacecore/storage/migrator/migrator.go @@ -8,12 +8,15 @@ import ( "path/filepath" "strings" + anystore "github.com/anyproto/any-store" "github.com/anyproto/any-sync/app" "github.com/anyproto/any-sync/commonspace/spacestorage/migration" "github.com/anyproto/anytype-heart/core/block/process" "github.com/anyproto/anytype-heart/pb" + "github.com/anyproto/anytype-heart/pkg/lib/localstore/objectstore/anystorehelper" + "github.com/anyproto/anytype-heart/pkg/lib/localstore/objectstore/spaceresolverstore" "github.com/anyproto/anytype-heart/space/spacecore/oldstorage" "github.com/anyproto/anytype-heart/space/spacecore/storage" ) @@ -27,16 +30,18 @@ const ( ) type migrator struct { - storage oldstorage.ClientStorage - newStorage storage.ClientStorage - process process.Service - path string - oldPath string + storage oldstorage.ClientStorage + newStorage storage.ClientStorage + process process.Service + path string + oldPath string + objectStorePath string } type pathProvider interface { GetNewSpaceStorePath() string GetOldSpaceStorePath() string + GetObjectStorePath() string } func New() app.ComponentRunnable { @@ -47,6 +52,7 @@ func (m *migrator) Init(a *app.App) (err error) { cfg := a.MustComponent("config").(pathProvider) m.path = cfg.GetNewSpaceStorePath() m.oldPath = cfg.GetOldSpaceStorePath() + m.objectStorePath = cfg.GetObjectStorePath() m.storage = app.MustComponent[oldstorage.ClientStorage](a) m.newStorage = app.MustComponent[storage.ClientStorage](a) m.process = app.MustComponent[process.Service](a) @@ -111,12 +117,40 @@ func (m *migrator) Run(ctx context.Context) (err error) { if err != nil { return err } + select { case <-ctx.Done(): return ctx.Err() default: } } + + err = m.doObjectStoreDb(ctx, func(db anystore.DB) error { + resolverStore, err := spaceresolverstore.New(ctx, db) + if err != nil { + return fmt.Errorf("new resolver store: %w", err) + } + + for _, spaceId := range allIds { + objectIds, err := m.storage.GetBoundObjectIds(spaceId) + if err != nil { + return fmt.Errorf("get bound object ids: %w", err) + } + + for _, objectId := range objectIds { + fmt.Println(spaceId, " ==>> ", objectId) + err = resolverStore.BindSpaceId(spaceId, objectId) + if err != nil { + return fmt.Errorf("bind space id: %w", err) + } + } + } + return nil + }) + if err != nil { + return fmt.Errorf("migrate space id bindings: %w", err) + } + err = removeFilesWithPrefix(filepath.Join(filepath.Dir(m.path), objectStoreFolder), crdtDb) if err != nil { return nil @@ -124,6 +158,36 @@ func (m *migrator) Run(ctx context.Context) (err error) { return renamePreserveExtension(m.oldPath, migratedName) } +func (m *migrator) doObjectStoreDb(ctx context.Context, proc func(db anystore.DB) error) error { + // TODO cfg + cfg := &anystore.Config{} + + err := ensureDirExists(m.objectStorePath) + if err != nil { + return fmt.Errorf("ensure dir exists: %w", err) + } + + store, lockRemove, err := anystorehelper.OpenDatabaseWithLockCheck(ctx, m.objectStorePath, cfg) + if err != nil { + return fmt.Errorf("open database: %w", err) + } + + err = proc(store) + + return errors.Join(err, store.Close(), lockRemove()) +} + +func ensureDirExists(dir string) error { + _, err := os.Stat(dir) + if errors.Is(err, os.ErrNotExist) { + err = os.MkdirAll(dir, 0700) + if err != nil { + return fmt.Errorf("create db dir: %w", err) + } + } + return nil +} + func (m *migrator) Close(ctx context.Context) (err error) { return nil } diff --git a/space/spacecore/storage/sqlitestorage/service.go b/space/spacecore/storage/sqlitestorage/service.go index dd3d5e6f7..ea5bd787e 100644 --- a/space/spacecore/storage/sqlitestorage/service.go +++ b/space/spacecore/storage/sqlitestorage/service.go @@ -61,6 +61,7 @@ type storageService struct { spaceIds, spaceIsCreated, upsertBind, + getAllBinds, deleteSpace, deleteTreesBySpace, deleteChangesBySpace, @@ -292,8 +293,23 @@ func (s *storageService) GetSpaceID(objectID string) (spaceID string, err error) return } -func (s *storageService) GetBinds(spaceId string) ([]string, error) { - return nil, nil +func (s *storageService) GetBoundObjectIds(spaceId string) ([]string, error) { + rows, err := s.stmt.getAllBinds.Query(spaceId) + if err != nil { + return nil, err + } + defer func() { + err = errors.Join(rows.Close()) + }() + var ids []string + for rows.Next() { + var id string + if err = rows.Scan(&id); err != nil { + return nil, err + } + ids = append(ids, id) + } + return ids, nil } func (s *storageService) BindSpaceID(spaceID, objectID string) (err error) { diff --git a/space/spacecore/storage/sqlitestorage/service_test.go b/space/spacecore/storage/sqlitestorage/service_test.go index becd3eebe..a3cf4093b 100644 --- a/space/spacecore/storage/sqlitestorage/service_test.go +++ b/space/spacecore/storage/sqlitestorage/service_test.go @@ -28,6 +28,34 @@ func TestStorageService_BindSpaceID(t *testing.T) { assert.Equal(t, "spaceId2", spaceId) } +func TestStorageService_GetBoundObjectIds(t *testing.T) { + t.Run("no bindings", func(t *testing.T) { + fx := newFixture(t) + defer fx.finish(t) + + spaceId := "spaceId" + + ids, err := fx.GetBoundObjectIds(spaceId) + require.NoError(t, err) + + assert.Empty(t, ids) + }) + + t.Run("ok", func(t *testing.T) { + fx := newFixture(t) + defer fx.finish(t) + + spaceId := "spaceId" + require.NoError(t, fx.BindSpaceID(spaceId, "objectId1")) + require.NoError(t, fx.BindSpaceID(spaceId, "objectId2")) + + ids, err := fx.GetBoundObjectIds(spaceId) + require.NoError(t, err) + + assert.ElementsMatch(t, []string{"objectId1", "objectId2"}, ids) + }) +} + func TestStorageService_DeleteSpaceStorage(t *testing.T) { fx := newFixture(t) defer fx.finish(t) diff --git a/space/spacecore/storage/sqlitestorage/sql.go b/space/spacecore/storage/sqlitestorage/sql.go index 43b6a8a4b..0564abe55 100644 --- a/space/spacecore/storage/sqlitestorage/sql.go +++ b/space/spacecore/storage/sqlitestorage/sql.go @@ -112,6 +112,9 @@ func initStmts(s *storageService) (err error) { if s.stmt.upsertBind, err = s.writeDb.Prepare(`INSERT INTO binds (objectId, spaceId) VALUES (?, ?) ON CONFLICT (objectId) DO UPDATE SET spaceId = ?`); err != nil { return } + if s.stmt.getAllBinds, err = s.writeDb.Prepare(`SELECT objectId FROM binds WHERE spaceId = ?`); err != nil { + return + } if s.stmt.deleteSpace, err = s.writeDb.Prepare(`DELETE FROM spaces WHERE id = ?`); err != nil { return } From dcecc376aa1ce0c0b59f63924fac0d0430ecdfe7 Mon Sep 17 00:00:00 2001 From: Sergey Date: Fri, 10 Jan 2025 16:01:52 +0100 Subject: [PATCH 133/279] GO-4825: Fix objectstore path --- space/spacecore/storage/migrator/migrator.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/space/spacecore/storage/migrator/migrator.go b/space/spacecore/storage/migrator/migrator.go index 1d6da0082..f10880f66 100644 --- a/space/spacecore/storage/migrator/migrator.go +++ b/space/spacecore/storage/migrator/migrator.go @@ -167,7 +167,7 @@ func (m *migrator) doObjectStoreDb(ctx context.Context, proc func(db anystore.DB return fmt.Errorf("ensure dir exists: %w", err) } - store, lockRemove, err := anystorehelper.OpenDatabaseWithLockCheck(ctx, m.objectStorePath, cfg) + store, lockRemove, err := anystorehelper.OpenDatabaseWithLockCheck(ctx, filepath.Join(m.objectStorePath, "objects.db"), cfg) if err != nil { return fmt.Errorf("open database: %w", err) } From 68fbcfd5b05de8df5b0eb5d3e81ed745b1903340 Mon Sep 17 00:00:00 2001 From: Sergey Date: Fri, 10 Jan 2025 16:06:27 +0100 Subject: [PATCH 134/279] GO-4825: Remove debug code --- space/spacecore/storage/migrator/migrator.go | 1 - 1 file changed, 1 deletion(-) diff --git a/space/spacecore/storage/migrator/migrator.go b/space/spacecore/storage/migrator/migrator.go index f10880f66..4df6e5418 100644 --- a/space/spacecore/storage/migrator/migrator.go +++ b/space/spacecore/storage/migrator/migrator.go @@ -138,7 +138,6 @@ func (m *migrator) Run(ctx context.Context) (err error) { } for _, objectId := range objectIds { - fmt.Println(spaceId, " ==>> ", objectId) err = resolverStore.BindSpaceId(spaceId, objectId) if err != nil { return fmt.Errorf("bind space id: %w", err) From caa55f196671b34279f845b9685f113f6e3459e4 Mon Sep 17 00:00:00 2001 From: Sergey Date: Fri, 10 Jan 2025 16:47:31 +0100 Subject: [PATCH 135/279] GO-4825: Remove config dep --- core/anytype/config/config.go | 4 ---- pkg/lib/localstore/objectstore/fixture.go | 1 + pkg/lib/localstore/objectstore/service.go | 7 +++++-- space/spacecore/storage/migrator/migrator.go | 5 +++-- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/core/anytype/config/config.go b/core/anytype/config/config.go index a7aa81857..882ea943a 100644 --- a/core/anytype/config/config.go +++ b/core/anytype/config/config.go @@ -296,10 +296,6 @@ func (c *Config) GetRepoPath() string { return c.RepoPath } -func (c *Config) GetObjectStorePath() string { - return filepath.Join(c.RepoPath, "objectstore") -} - func (c *Config) GetConfigPath() string { return filepath.Join(c.RepoPath, ConfigFileName) } diff --git a/pkg/lib/localstore/objectstore/fixture.go b/pkg/lib/localstore/objectstore/fixture.go index 9d39615a6..c7ada1739 100644 --- a/pkg/lib/localstore/objectstore/fixture.go +++ b/pkg/lib/localstore/objectstore/fixture.go @@ -81,6 +81,7 @@ func NewStoreFixture(t testing.TB) *StoreFixture { dataStore, err := datastore.NewInMemory() require.NoError(t, err) + testApp.Register(newWalletStub(t)) testApp.Register(dataStore) err = fullText.Init(testApp) require.NoError(t, err) diff --git a/pkg/lib/localstore/objectstore/service.go b/pkg/lib/localstore/objectstore/service.go index f5bb9b8e8..5ca705227 100644 --- a/pkg/lib/localstore/objectstore/service.go +++ b/pkg/lib/localstore/objectstore/service.go @@ -14,6 +14,7 @@ import ( "github.com/anyproto/any-sync/coordinator/coordinatorproto" "golang.org/x/exp/maps" + "github.com/anyproto/anytype-heart/core/wallet" "github.com/anyproto/anytype-heart/pkg/lib/database" "github.com/anyproto/anytype-heart/pkg/lib/localstore/ftsearch" "github.com/anyproto/anytype-heart/pkg/lib/localstore/objectstore/anystorehelper" @@ -79,7 +80,6 @@ type VirtualSpacesStore interface { } type configProvider interface { - GetObjectStorePath() string GetAnyStoreConfig() *anystore.Config } @@ -149,6 +149,9 @@ func New() ObjectStore { func (s *dsObjectStore) Init(a *app.App) (err error) { s.sourceService = app.MustComponent[spaceindex.SourceDetailsFromID](a) + + repoPath := app.MustComponent[wallet.Wallet](a).RepoPath() + fts := a.Component(ftsearch.CName) if fts == nil { log.Warnf("init objectstore without fulltext") @@ -158,7 +161,7 @@ func (s *dsObjectStore) Init(a *app.App) (err error) { s.arenaPool = &anyenc.ArenaPool{} cfg := app.MustComponent[configProvider](a) - s.objectStorePath = cfg.GetObjectStorePath() + s.objectStorePath = filepath.Join(repoPath, "objectstore") s.anyStoreConfig = *cfg.GetAnyStoreConfig() s.setDefaultConfig() s.oldStore = app.MustComponent[oldstore.Service](a) diff --git a/space/spacecore/storage/migrator/migrator.go b/space/spacecore/storage/migrator/migrator.go index 4df6e5418..6429e909c 100644 --- a/space/spacecore/storage/migrator/migrator.go +++ b/space/spacecore/storage/migrator/migrator.go @@ -41,7 +41,8 @@ type migrator struct { type pathProvider interface { GetNewSpaceStorePath() string GetOldSpaceStorePath() string - GetObjectStorePath() string + GetRepoPath() string + GetAnyStoreConfig() *anystore.Config } func New() app.ComponentRunnable { @@ -52,7 +53,7 @@ func (m *migrator) Init(a *app.App) (err error) { cfg := a.MustComponent("config").(pathProvider) m.path = cfg.GetNewSpaceStorePath() m.oldPath = cfg.GetOldSpaceStorePath() - m.objectStorePath = cfg.GetObjectStorePath() + m.objectStorePath = filepath.Join(cfg.GetRepoPath(), "objectstore") m.storage = app.MustComponent[oldstorage.ClientStorage](a) m.newStorage = app.MustComponent[storage.ClientStorage](a) m.process = app.MustComponent[process.Service](a) From 646183810fcae7e53ac021465e59633892abb33f Mon Sep 17 00:00:00 2001 From: AnastasiaShemyakinskaya Date: Fri, 10 Jan 2025 17:04:11 +0100 Subject: [PATCH 136/279] GO-4818: add tests Signed-off-by: AnastasiaShemyakinskaya --- .../import/common/source/directory_test.go | 102 +++++++++++++++ core/block/import/common/source/zip_test.go | 119 ++++++++++++++++++ 2 files changed, 221 insertions(+) create mode 100644 core/block/import/common/source/directory_test.go create mode 100644 core/block/import/common/source/zip_test.go diff --git a/core/block/import/common/source/directory_test.go b/core/block/import/common/source/directory_test.go new file mode 100644 index 000000000..f4d33c7e0 --- /dev/null +++ b/core/block/import/common/source/directory_test.go @@ -0,0 +1,102 @@ +package source + +import ( + "os" + "path/filepath" + "testing" + + "github.com/stretchr/testify/assert" +) + +func createTestDir(tempDir string, files map[string]string) error { + for name, content := range files { + fullPath := filepath.Join(tempDir, name) + err := os.MkdirAll(filepath.Dir(fullPath), 0777) + if err != nil { + return err + } + file, err := os.Create(fullPath) + if err != nil { + return err + } + defer file.Close() + _, err = file.Write([]byte(content)) + if err != nil { + return err + } + } + return nil +} + +func TestDirectory_Initialize(t *testing.T) { + t.Run("success", func(t *testing.T) { + // given + files := map[string]string{ + "file1.txt": "test", + filepath.Join("folder", "file2.txt"): "test", + } + tempDir := t.TempDir() + err := createTestDir(tempDir, files) + defer os.RemoveAll(tempDir) + assert.NoError(t, err) + // when + directory := NewDirectory() + err = directory.Initialize(tempDir) + + // then + assert.NoError(t, err) + assert.Equal(t, tempDir, directory.importPath) + assert.Len(t, directory.fileReaders, 2) + expectedRoots := []string{tempDir} + assert.Equal(t, expectedRoots, directory.rootDirs) + }) + t.Run("directory with another dir inside", func(t *testing.T) { + // given + files := map[string]string{ + filepath.Join("folder", "file2.txt"): "test", + filepath.Join("folder", "file3.txt"): "test", + filepath.Join("folder", "folder1", "file4.txt"): "test", + } + + tempDir := t.TempDir() + err := createTestDir(tempDir, files) + assert.NoError(t, err) + defer os.RemoveAll(tempDir) + + // when + directory := NewDirectory() + err = directory.Initialize(tempDir) + + // then + assert.NoError(t, err) + assert.Equal(t, tempDir, directory.importPath) + assert.Len(t, directory.fileReaders, 3) + + expectedRoots := []string{filepath.Join(tempDir, "folder")} + assert.Equal(t, expectedRoots, directory.rootDirs) + }) + t.Run("directory with 2 dirs inside", func(t *testing.T) { + // given + files := map[string]string{ + filepath.Join("folder", "file2.txt"): "test", + filepath.Join("folder1", "folder2", "file4.txt"): "test", + } + + tempDir := t.TempDir() + err := createTestDir(tempDir, files) + assert.NoError(t, err) + defer os.RemoveAll(tempDir) + + // when + directory := NewDirectory() + err = directory.Initialize(tempDir) + + // then + assert.NoError(t, err) + assert.Equal(t, tempDir, directory.importPath) + assert.Len(t, directory.fileReaders, 2) + + expectedRoots := []string{filepath.Join(tempDir, "folder"), filepath.Join(tempDir, "folder1", "folder2")} + assert.Equal(t, expectedRoots, directory.rootDirs) + }) +} diff --git a/core/block/import/common/source/zip_test.go b/core/block/import/common/source/zip_test.go new file mode 100644 index 000000000..6578715f8 --- /dev/null +++ b/core/block/import/common/source/zip_test.go @@ -0,0 +1,119 @@ +package source + +import ( + "archive/zip" + "io/ioutil" + "os" + "path/filepath" + "testing" + + "github.com/stretchr/testify/assert" +) + +func createTestZip(t *testing.T, files map[string]string) (string, error) { + tmpFile, err := ioutil.TempFile(t.TempDir(), "test-*.zip") + if err != nil { + return "", err + } + defer tmpFile.Close() + + zipWriter := zip.NewWriter(tmpFile) + for name, content := range files { + writer, err := zipWriter.Create(name) + if err != nil { + return "", err + } + _, err = writer.Write([]byte(content)) + if err != nil { + return "", err + } + } + if err := zipWriter.Close(); err != nil { + return "", err + } + + return tmpFile.Name(), nil +} + +func TestZip_Initialize(t *testing.T) { + t.Run("success", func(t *testing.T) { + // given + files := map[string]string{ + "file1.txt": "test", + filepath.Join("folder", "file2.txt"): "test", + } + + zipPath, err := createTestZip(t, files) + assert.NoError(t, err) + defer os.Remove(zipPath) + + // when + zipInstance := NewZip() + err = zipInstance.Initialize(zipPath) + + // then + assert.NoError(t, err) + assert.NotNil(t, zipInstance.archiveReader) + assert.Len(t, zipInstance.fileReaders, 2) + + expectedRoots := []string{"."} + assert.Equal(t, expectedRoots, zipInstance.rootDirs) + }) + t.Run("zip files with dir inside", func(t *testing.T) { + // given + files := map[string]string{ + filepath.Join("folder", "file2.txt"): "test", + filepath.Join("folder", "file3.txt"): "test", + filepath.Join("folder", "folder1", "file4.txt"): "test", + } + + zipPath, err := createTestZip(t, files) + assert.NoError(t, err) + defer os.Remove(zipPath) + + // when + zipInstance := NewZip() + err = zipInstance.Initialize(zipPath) + + // then + assert.NoError(t, err) + assert.NotNil(t, zipInstance.archiveReader) + assert.Len(t, zipInstance.fileReaders, 3) + + expectedRoots := []string{"folder"} + assert.Equal(t, expectedRoots, zipInstance.rootDirs) + }) + t.Run("zip files with 2 dirs inside", func(t *testing.T) { + // given + files := map[string]string{ + filepath.Join("folder", "file2.txt"): "test", + filepath.Join("folder1", "folder2", "file4.txt"): "test", + } + + zipPath, err := createTestZip(t, files) + assert.NoError(t, err) + defer os.Remove(zipPath) + + // when + zipInstance := NewZip() + err = zipInstance.Initialize(zipPath) + + // then + assert.NoError(t, err) + assert.NotNil(t, zipInstance.archiveReader) + assert.Len(t, zipInstance.fileReaders, 2) + + expectedRoots := []string{"folder", filepath.Join("folder1", "folder2")} + assert.Equal(t, expectedRoots, zipInstance.rootDirs) + }) + t.Run("invalid path", func(t *testing.T) { + // given + zipInstance := NewZip() + + // when + err := zipInstance.Initialize("invalid_path.zip") + + // then + assert.Error(t, err) + }) +} From 4b21551fdd8b4d78af0ff72d8319aec8c34d4daa Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Fri, 10 Jan 2025 20:52:23 +0100 Subject: [PATCH 137/279] GO-4459: Fix object delete error handling --- cmd/api/object/handler.go | 2 +- cmd/api/object/service.go | 6 +++--- cmd/api/search/service.go | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/cmd/api/object/handler.go b/cmd/api/object/handler.go index c6f60d89f..cb2a224b3 100644 --- a/cmd/api/object/handler.go +++ b/cmd/api/object/handler.go @@ -103,7 +103,7 @@ func DeleteObjectHandler(s *ObjectService) gin.HandlerFunc { code := util.MapErrorCode(err, util.ErrToCode(ErrObjectNotFound, http.StatusNotFound), util.ErrToCode(ErrFailedRetrieveObject, http.StatusInternalServerError), - util.ErrToCode(ErrFailedDeleteObject, http.StatusInternalServerError), + util.ErrToCode(ErrFailedDeleteObject, http.StatusForbidden), ) if code != http.StatusOK { diff --git a/cmd/api/object/service.go b/cmd/api/object/service.go index 320815100..986cc7027 100644 --- a/cmd/api/object/service.go +++ b/cmd/api/object/service.go @@ -157,12 +157,12 @@ func (s *ObjectService) DeleteObject(ctx context.Context, spaceId string, object return Object{}, err } - resp := s.mw.ObjectListSetIsArchived(ctx, &pb.RpcObjectListSetIsArchivedRequest{ - ObjectIds: []string{objectId}, + resp := s.mw.ObjectSetIsArchived(ctx, &pb.RpcObjectSetIsArchivedRequest{ + ContextId: objectId, IsArchived: true, }) - if resp.Error.Code != pb.RpcObjectListSetIsArchivedResponseError_NULL { + if resp.Error.Code != pb.RpcObjectSetIsArchivedResponseError_NULL { return Object{}, ErrFailedDeleteObject } diff --git a/cmd/api/search/service.go b/cmd/api/search/service.go index 0014e7eaa..1d293f32d 100644 --- a/cmd/api/search/service.go +++ b/cmd/api/search/service.go @@ -59,7 +59,7 @@ func (s *SearchService) Search(ctx context.Context, searchQuery string, objectTy Sorts: []*model.BlockContentDataviewSort{{ RelationKey: bundle.RelationKeyLastModifiedDate.String(), Type: model.BlockContentDataviewSort_Desc, - Format: model.RelationFormat_longtext, + Format: model.RelationFormat_date, IncludeTime: true, EmptyPlacement: model.BlockContentDataviewSort_NotSpecified, }}, From 2cb03241f6e3f49fa1d310d602e7ef2906a4e76d Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Sat, 11 Jan 2025 18:44:30 +0100 Subject: [PATCH 138/279] GO-4459: Refactor pagination middleware --- cmd/api/pagination/pagination.go | 68 ++++++++++++++++++++++++++------ cmd/api/server/router.go | 29 +++++++------- 2 files changed, 69 insertions(+), 28 deletions(-) diff --git a/cmd/api/pagination/pagination.go b/cmd/api/pagination/pagination.go index 90fe9fc34..706756933 100644 --- a/cmd/api/pagination/pagination.go +++ b/cmd/api/pagination/pagination.go @@ -1,13 +1,52 @@ package pagination -import "github.com/gin-gonic/gin" +import ( + "fmt" + "net/http" + "strconv" -type Service[T any] interface { - RespondWithPagination(c *gin.Context, statusCode int, data []T, total int, offset int, limit int, hasMore bool) - Paginate(records []T, offset int, limit int) ([]T, bool) + "github.com/gin-gonic/gin" +) + +// Config holds pagination configuration options. +type Config struct { + DefaultPage int + DefaultPageSize int + MinPageSize int + MaxPageSize int } -// RespondWithPagination returns a json response with the paginated data and corresponding metadata +// New creates a Gin middleware for pagination with the provided Config. +func New(cfg Config) gin.HandlerFunc { + return func(c *gin.Context) { + page := getIntQueryParam(c, "offset", cfg.DefaultPage) + size := getIntQueryParam(c, "limit", cfg.DefaultPageSize) + + if size < cfg.MinPageSize || size > cfg.MaxPageSize { + c.AbortWithStatusJSON(http.StatusBadRequest, gin.H{ + "error": fmt.Sprintf("limit must be between %d and %d", cfg.MinPageSize, cfg.MaxPageSize), + }) + return + } + + c.Set("offset", page) + c.Set("limit", size) + + c.Next() + } +} + +// getIntQueryParam retrieves an integer query parameter or falls back to a default value. +func getIntQueryParam(c *gin.Context, key string, defaultValue int) int { + valStr := c.DefaultQuery(key, strconv.Itoa(defaultValue)) + val, err := strconv.Atoi(valStr) + if err != nil || val < 0 { + return defaultValue + } + return val +} + +// RespondWithPagination sends a paginated JSON response. func RespondWithPagination[T any](c *gin.Context, statusCode int, data []T, total int, offset int, limit int, hasMore bool) { c.JSON(statusCode, PaginatedResponse[T]{ Data: data, @@ -20,20 +59,23 @@ func RespondWithPagination[T any](c *gin.Context, statusCode int, data []T, tota }) } -// Paginate paginates the given records based on the offset and limit +// Paginate slices the records based on the offset and limit, and determines if more records are available. func Paginate[T any](records []T, offset int, limit int) ([]T, bool) { - total := len(records) - start := offset - end := offset + limit - - if start > total { - start = total + if offset < 0 || limit < 1 { + return []T{}, len(records) > 0 } + + total := len(records) + if offset > total { + offset = total + } + + end := offset + limit if end > total { end = total } - paginated := records[start:end] + paginated := records[offset:end] hasMore := end < total return paginated, hasMore diff --git a/cmd/api/server/router.go b/cmd/api/server/router.go index 9104b84cb..2cc5633a7 100644 --- a/cmd/api/server/router.go +++ b/cmd/api/server/router.go @@ -4,11 +4,11 @@ import ( "github.com/gin-gonic/gin" swaggerFiles "github.com/swaggo/files" ginSwagger "github.com/swaggo/gin-swagger" - "github.com/webstradev/gin-pagination/v2/pkg/pagination" "github.com/anyproto/anytype-heart/cmd/api/auth" "github.com/anyproto/anytype-heart/cmd/api/export" "github.com/anyproto/anytype-heart/cmd/api/object" + "github.com/anyproto/anytype-heart/cmd/api/pagination" "github.com/anyproto/anytype-heart/cmd/api/search" "github.com/anyproto/anytype-heart/cmd/api/space" ) @@ -18,20 +18,19 @@ func (s *Server) NewRouter() *gin.Engine { router := gin.Default() // Pagination middleware setup - paginator := pagination.New( - pagination.WithPageText("offset"), - pagination.WithSizeText("limit"), - pagination.WithDefaultPage(0), - pagination.WithDefaultPageSize(100), - pagination.WithMinPageSize(1), - pagination.WithMaxPageSize(1000), - ) + paginator := pagination.New(pagination.Config{ + DefaultPage: 0, + DefaultPageSize: 100, + MinPageSize: 1, + MaxPageSize: 1000, + }) // Swagger route router.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) // API routes v1 := router.Group("/v1") + v1.Use(paginator) v1.Use(s.initAccountInfo()) v1.Use(s.ensureAuthenticated()) { @@ -44,20 +43,20 @@ func (s *Server) NewRouter() *gin.Engine { v1.POST("/spaces/:space_id/objects/export/:format", export.GetSpaceExportHandler(s.exportService)) // Object - v1.GET("/spaces/:space_id/objects", paginator, object.GetObjectsHandler(s.objectService)) + v1.GET("/spaces/:space_id/objects", object.GetObjectsHandler(s.objectService)) v1.GET("/spaces/:space_id/objects/:object_id", object.GetObjectHandler(s.objectService)) v1.DELETE("/spaces/:space_id/objects/:object_id", object.DeleteObjectHandler(s.objectService)) - v1.GET("/spaces/:space_id/object_types", paginator, object.GetTypesHandler(s.objectService)) - v1.GET("/spaces/:space_id/object_types/:typeId/templates", paginator, object.GetTemplatesHandler(s.objectService)) + v1.GET("/spaces/:space_id/object_types", object.GetTypesHandler(s.objectService)) + v1.GET("/spaces/:space_id/object_types/:typeId/templates", object.GetTemplatesHandler(s.objectService)) v1.POST("/spaces/:space_id/objects", object.CreateObjectHandler(s.objectService)) v1.PUT("/spaces/:space_id/objects/:object_id", object.UpdateObjectHandler(s.objectService)) // Search - v1.GET("/search", paginator, search.SearchHandler(s.searchService)) + v1.GET("/search", search.SearchHandler(s.searchService)) // Space - v1.GET("/spaces", paginator, space.GetSpacesHandler(s.spaceService)) - v1.GET("/spaces/:space_id/members", paginator, space.GetMembersHandler(s.spaceService)) + v1.GET("/spaces", space.GetSpacesHandler(s.spaceService)) + v1.GET("/spaces/:space_id/members", space.GetMembersHandler(s.spaceService)) v1.POST("/spaces", space.CreateSpaceHandler(s.spaceService)) } From db30b1e0f55f7cf2400611f969962492d7f11197 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Sat, 11 Jan 2025 18:44:51 +0100 Subject: [PATCH 139/279] GO-4459: Add pagination tests --- cmd/api/pagination/pagination_test.go | 174 ++++++++++++++++++++++++-- 1 file changed, 167 insertions(+), 7 deletions(-) diff --git a/cmd/api/pagination/pagination_test.go b/cmd/api/pagination/pagination_test.go index c4bab3936..928f0eee1 100644 --- a/cmd/api/pagination/pagination_test.go +++ b/cmd/api/pagination/pagination_test.go @@ -1,10 +1,164 @@ package pagination import ( - "reflect" + "encoding/json" + "net/http" + "net/http/httptest" "testing" + + "github.com/gin-gonic/gin" + "github.com/stretchr/testify/assert" ) +func TestNew(t *testing.T) { + commonConfig := Config{ + DefaultPage: 0, + DefaultPageSize: 10, + MinPageSize: 1, + MaxPageSize: 50, + } + + tests := []struct { + name string + queryParams map[string]string + overrideConfig func(cfg Config) Config + expectedStatus int + expectedOffset int + expectedLimit int + }{ + { + name: "Valid offset and limit", + queryParams: map[string]string{ + "offset": "10", + "limit": "20", + }, + overrideConfig: nil, + expectedStatus: http.StatusOK, + expectedOffset: 10, + expectedLimit: 20, + }, + { + name: "Offset missing, use default", + queryParams: map[string]string{ + "limit": "20", + }, + overrideConfig: nil, + expectedStatus: http.StatusOK, + expectedOffset: 0, + expectedLimit: 20, + }, + { + name: "Limit missing, use default", + queryParams: map[string]string{ + "offset": "5", + }, + overrideConfig: nil, + expectedStatus: http.StatusOK, + expectedOffset: 5, + expectedLimit: 10, + }, + { + name: "Limit below minimum", + queryParams: map[string]string{ + "offset": "5", + "limit": "0", + }, + overrideConfig: nil, + expectedStatus: http.StatusBadRequest, + }, + { + name: "Limit above maximum", + queryParams: map[string]string{ + "offset": "5", + "limit": "100", + }, + overrideConfig: nil, + expectedStatus: http.StatusBadRequest, + }, + { + name: "Negative offset, use default", + queryParams: map[string]string{ + "offset": "-5", + "limit": "10", + }, + overrideConfig: nil, + expectedStatus: http.StatusOK, + expectedOffset: 0, + expectedLimit: 10, + }, + { + name: "Custom min and max page size", + queryParams: map[string]string{ + "offset": "5", + "limit": "15", + }, + overrideConfig: func(cfg Config) Config { + cfg.MinPageSize = 10 + cfg.MaxPageSize = 20 + return cfg + }, + expectedStatus: http.StatusOK, + expectedOffset: 5, + expectedLimit: 15, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + // Apply overrideConfig if provided + cfg := commonConfig + if tt.overrideConfig != nil { + cfg = tt.overrideConfig(cfg) + } + + // Set up Gin + gin.SetMode(gin.TestMode) + r := gin.New() + r.Use(New(cfg)) + + // Define a test endpoint + r.GET("/", func(c *gin.Context) { + offset, _ := c.Get("offset") + limit, _ := c.Get("limit") + + c.JSON(http.StatusOK, gin.H{ + "offset": offset, + "limit": limit, + }) + }) + + // Create a test request + req := httptest.NewRequest(http.MethodGet, "/", nil) + q := req.URL.Query() + for k, v := range tt.queryParams { + q.Add(k, v) + } + req.URL.RawQuery = q.Encode() + + // Perform the request + w := httptest.NewRecorder() + r.ServeHTTP(w, req) + + // Check the response + assert.Equal(t, tt.expectedStatus, w.Code) + + if w.Code == http.StatusOK { + var resp map[string]interface{} + err := json.Unmarshal(w.Body.Bytes(), &resp) + assert.NoError(t, err) + + // Validate offset and limit + if offset, ok := resp["offset"].(float64); ok { + assert.Equal(t, float64(tt.expectedOffset), offset) + } + if limit, ok := resp["limit"].(float64); ok { + assert.Equal(t, float64(tt.expectedLimit), limit) + } + } + }) + } +} + func TestPaginate(t *testing.T) { type args struct { records []int @@ -77,18 +231,24 @@ func TestPaginate(t *testing.T) { wantPaginated: []int{}, wantHasMore: true, // items remain: [2,3,4,5] }, + { + name: "Negative offset and limit (should return empty)", + args: args{ + records: []int{1, 2, 3, 4, 5}, + offset: -1, + limit: -1, + }, + wantPaginated: []int{}, + wantHasMore: true, // items remain: [1,2,3,4,5] + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { gotPaginated, gotHasMore := Paginate(tt.args.records, tt.args.offset, tt.args.limit) - if !reflect.DeepEqual(gotPaginated, tt.wantPaginated) { - t.Errorf("Paginate() gotPaginated = %v, want %v", gotPaginated, tt.wantPaginated) - } - if gotHasMore != tt.wantHasMore { - t.Errorf("Paginate() gotHasMore = %v, want %v", gotHasMore, tt.wantHasMore) - } + assert.Equal(t, tt.wantPaginated, gotPaginated, "Paginate() gotPaginated = %v, want %v", gotPaginated, tt.wantPaginated) + assert.Equal(t, tt.wantHasMore, gotHasMore, "Paginate() gotHasMore = %v, want %v", gotHasMore, tt.wantHasMore) }) } } From edc2219836d9a061fe44363129b5a79371558677 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Sat, 11 Jan 2025 18:48:18 +0100 Subject: [PATCH 140/279] GO-4459: Remove unused dependency --- go.mod | 3 +-- go.sum | 2 -- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/go.mod b/go.mod index 170d98496..7e842dc16 100644 --- a/go.mod +++ b/go.mod @@ -62,7 +62,6 @@ require ( github.com/kelseyhightower/envconfig v1.4.0 github.com/klauspost/compress v1.17.11 github.com/kovidgoyal/imaging v1.6.3 - github.com/libp2p/go-libp2p v0.37.0 github.com/libp2p/zeroconf/v2 v2.2.0 github.com/logrusorgru/aurora v2.0.3+incompatible github.com/magiconair/properties v1.8.9 @@ -96,7 +95,6 @@ require ( github.com/uber/jaeger-client-go v2.30.0+incompatible github.com/valyala/fastjson v1.6.4 github.com/vektra/mockery/v2 v2.47.0 - github.com/webstradev/gin-pagination/v2 v2.0.2 github.com/xeipuuv/gojsonschema v1.2.0 github.com/yuin/goldmark v1.7.8 github.com/zeebo/blake3 v0.2.4 @@ -215,6 +213,7 @@ require ( github.com/klauspost/cpuid/v2 v2.2.8 // indirect github.com/leodido/go-urn v1.4.0 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect + github.com/libp2p/go-libp2p v0.37.0 // indirect github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect github.com/mailru/easyjson v0.7.6 // indirect github.com/mattn/go-colorable v0.1.13 // indirect diff --git a/go.sum b/go.sum index 2586e14d0..62d1047a5 100644 --- a/go.sum +++ b/go.sum @@ -1055,8 +1055,6 @@ github.com/warpfork/go-testmark v0.12.1 h1:rMgCpJfwy1sJ50x0M0NgyphxYYPMOODIJHhsX github.com/warpfork/go-testmark v0.12.1/go.mod h1:kHwy7wfvGSPh1rQJYKayD4AbtNaeyZdcGi9tNJTaa5Y= github.com/warpfork/go-wish v0.0.0-20220906213052-39a1cc7a02d0 h1:GDDkbFiaK8jsSDJfjId/PEGEShv6ugrt4kYsC5UIDaQ= github.com/warpfork/go-wish v0.0.0-20220906213052-39a1cc7a02d0/go.mod h1:x6AKhvSSexNrVSrViXSHUEbICjmGXhtgABaHIySUSGw= -github.com/webstradev/gin-pagination/v2 v2.0.2 h1:CCbmxdvW3lJR5UJM972jlLgi6R0aU/fMyuj5CfULqz8= -github.com/webstradev/gin-pagination/v2 v2.0.2/go.mod h1:C/1SBe8wng4aKNt3+vWVaQJwi+blntO3JT/uy0LqJjE= github.com/whyrusleeping/chunker v0.0.0-20181014151217-fe64bd25879f h1:jQa4QT2UP9WYv2nzyawpKMOCl+Z/jW7djv2/J50lj9E= github.com/whyrusleeping/chunker v0.0.0-20181014151217-fe64bd25879f/go.mod h1:p9UJB6dDgdPgMJZs7UjUOdulKyRr9fqkS+6JKAInPy8= github.com/wlynxg/anet v0.0.5 h1:J3VJGi1gvo0JwZ/P1/Yc/8p63SoW98B5dHkYDmpgvvU= From 892d929683e8ab0f624679725e0335ef127e1305 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Sun, 12 Jan 2025 00:21:56 +0100 Subject: [PATCH 141/279] GO-4459: Refactor api into component runnable service --- cmd/api/main.go | 60 ---------- cmd/api/server/server.go | 69 ------------ cmd/grpcserver/grpc.go | 7 +- core/anytype/bootstrap.go | 4 +- {cmd => core}/api/auth/handler.go | 2 +- {cmd => core}/api/auth/model.go | 0 {cmd => core}/api/auth/service.go | 0 {cmd => core}/api/auth/service_test.go | 0 {cmd => core}/api/demo/api_demo.go | 0 {cmd => core}/api/docs/docs.go | 4 + {cmd => core}/api/docs/swagger.json | 4 + {cmd => core}/api/docs/swagger.yaml | 3 + {cmd => core}/api/export/handler.go | 2 +- {cmd => core}/api/export/model.go | 0 {cmd => core}/api/export/service.go | 0 {cmd => core}/api/object/handler.go | 4 +- {cmd => core}/api/object/model.go | 0 {cmd => core}/api/object/service.go | 4 +- {cmd => core}/api/object/service_test.go | 0 {cmd => core}/api/pagination/model.go | 0 {cmd => core}/api/pagination/pagination.go | 0 .../api/pagination/pagination_test.go | 0 {cmd => core}/api/search/handler.go | 6 +- {cmd => core}/api/search/service.go | 18 +-- {cmd => core}/api/search/service_test.go | 10 +- {cmd => core}/api/server/middleware.go | 8 +- {cmd => core}/api/server/router.go | 17 +-- core/api/server/server.go | 44 ++++++++ core/api/service.go | 104 ++++++++++++++++++ {cmd => core}/api/space/handler.go | 4 +- {cmd => core}/api/space/model.go | 0 {cmd => core}/api/space/service.go | 4 +- {cmd => core}/api/space/service_test.go | 0 {cmd => core}/api/util/error.go | 0 {cmd => core}/api/util/util.go | 0 35 files changed, 204 insertions(+), 174 deletions(-) delete mode 100644 cmd/api/main.go delete mode 100644 cmd/api/server/server.go rename {cmd => core}/api/auth/handler.go (97%) rename {cmd => core}/api/auth/model.go (100%) rename {cmd => core}/api/auth/service.go (100%) rename {cmd => core}/api/auth/service_test.go (100%) rename {cmd => core}/api/demo/api_demo.go (100%) rename {cmd => core}/api/docs/docs.go (99%) rename {cmd => core}/api/docs/swagger.json (99%) rename {cmd => core}/api/docs/swagger.yaml (99%) rename {cmd => core}/api/export/handler.go (97%) rename {cmd => core}/api/export/model.go (100%) rename {cmd => core}/api/export/service.go (100%) rename {cmd => core}/api/object/handler.go (99%) rename {cmd => core}/api/object/model.go (100%) rename {cmd => core}/api/object/service.go (99%) rename {cmd => core}/api/object/service_test.go (100%) rename {cmd => core}/api/pagination/model.go (100%) rename {cmd => core}/api/pagination/pagination.go (100%) rename {cmd => core}/api/pagination/pagination_test.go (100%) rename {cmd => core}/api/search/handler.go (91%) rename {cmd => core}/api/search/service.go (92%) rename {cmd => core}/api/search/service_test.go (96%) rename {cmd => core}/api/server/middleware.go (85%) rename {cmd => core}/api/server/router.go (81%) create mode 100644 core/api/server/server.go create mode 100644 core/api/service.go rename {cmd => core}/api/space/handler.go (97%) rename {cmd => core}/api/space/model.go (100%) rename {cmd => core}/api/space/service.go (98%) rename {cmd => core}/api/space/service_test.go (100%) rename {cmd => core}/api/util/error.go (100%) rename {cmd => core}/api/util/util.go (100%) diff --git a/cmd/api/main.go b/cmd/api/main.go deleted file mode 100644 index 8584c330e..000000000 --- a/cmd/api/main.go +++ /dev/null @@ -1,60 +0,0 @@ -package api - -import ( - "context" - "errors" - "fmt" - "net/http" - "os" - "os/signal" - "time" - - _ "github.com/anyproto/anytype-heart/cmd/api/docs" - "github.com/anyproto/anytype-heart/cmd/api/server" - "github.com/anyproto/anytype-heart/core" - "github.com/anyproto/anytype-heart/pb/service" -) - -const ( - serverShutdownTime = 5 * time.Second -) - -// RunApiServer starts the HTTP server and registers the API routes. -// -// @title Anytype API -// @version 1.0 -// @description This API allows interaction with Anytype resources such as spaces, objects, and object types. -// @termsOfService https://anytype.io/terms_of_use -// @contact.name Anytype Support -// @contact.url https://anytype.io/contact -// @contact.email support@anytype.io -// @license.name Any Source Available License 1.0 -// @license.url https://github.com/anyproto/anytype-ts/blob/main/LICENSE.md -// @host localhost:31009 -// @BasePath /v1 -// @securityDefinitions.basic BasicAuth -// @externalDocs.description OpenAPI -// @externalDocs.url https://swagger.io/resources/open-api/ -func RunApiServer(ctx context.Context, mw service.ClientCommandsServer, mwInternal core.MiddlewareInternal) { - // Create a new server instance including the router - srv := server.NewServer(mw, mwInternal) - - // Start the server in a goroutine so we can handle graceful shutdown - go func() { - if err := srv.ListenAndServe(); err != nil && !errors.Is(err, http.ErrServerClosed) { - fmt.Printf("API server error: %v\n", err) - } - }() - - // Graceful shutdown on CTRL+C / SIGINT - quit := make(chan os.Signal, 1) - signal.Notify(quit, os.Interrupt) - <-quit - - ctx, cancel := context.WithTimeout(context.Background(), serverShutdownTime) - defer cancel() - - if err := srv.Shutdown(ctx); err != nil { - fmt.Printf("API server shutdown failed: %v\n", err) - } -} diff --git a/cmd/api/server/server.go b/cmd/api/server/server.go deleted file mode 100644 index 3441e2965..000000000 --- a/cmd/api/server/server.go +++ /dev/null @@ -1,69 +0,0 @@ -package server - -import ( - "context" - "fmt" - "net/http" - "time" - - "github.com/gin-gonic/gin" - - "github.com/anyproto/anytype-heart/cmd/api/auth" - "github.com/anyproto/anytype-heart/cmd/api/export" - "github.com/anyproto/anytype-heart/cmd/api/object" - "github.com/anyproto/anytype-heart/cmd/api/search" - "github.com/anyproto/anytype-heart/cmd/api/space" - "github.com/anyproto/anytype-heart/core" - "github.com/anyproto/anytype-heart/pb/service" -) - -const ( - httpPort = ":31009" - readHeaderTimeout = 5 * time.Second -) - -// Server wraps the HTTP server and service logic. -type Server struct { - engine *gin.Engine - srv *http.Server - - mwInternal core.MiddlewareInternal - authService *auth.AuthService - exportService *export.ExportService - objectService *object.ObjectService - spaceService *space.SpaceService - searchService *search.SearchService -} - -// NewServer constructs a new Server with default config and sets up the routes. -func NewServer(mw service.ClientCommandsServer, mwInternal core.MiddlewareInternal) *Server { - s := &Server{ - mwInternal: mwInternal, - authService: auth.NewService(mw), - exportService: export.NewService(mw), - objectService: object.NewService(mw), - spaceService: space.NewService(mw), - } - - s.searchService = search.NewService(mw, s.spaceService, s.objectService) - s.engine = s.NewRouter() - s.srv = &http.Server{ - Addr: httpPort, - Handler: s.engine, - ReadHeaderTimeout: readHeaderTimeout, - } - - return s -} - -// ListenAndServe starts the HTTP server. -func (s *Server) ListenAndServe() error { - fmt.Printf("Starting API server on %s\n", httpPort) - return s.srv.ListenAndServe() -} - -// Shutdown gracefully stops the server. -func (s *Server) Shutdown(ctx context.Context) error { - fmt.Println("Shutting down API server...") - return s.srv.Shutdown(ctx) -} diff --git a/cmd/grpcserver/grpc.go b/cmd/grpcserver/grpc.go index 6e23abf88..987f6d1c9 100644 --- a/cmd/grpcserver/grpc.go +++ b/cmd/grpcserver/grpc.go @@ -30,8 +30,8 @@ import ( jaegercfg "github.com/uber/jaeger-client-go/config" "google.golang.org/grpc" - "github.com/anyproto/anytype-heart/cmd/api" "github.com/anyproto/anytype-heart/core" + "github.com/anyproto/anytype-heart/core/api" "github.com/anyproto/anytype-heart/core/event" "github.com/anyproto/anytype-heart/metrics" "github.com/anyproto/anytype-heart/pb" @@ -248,10 +248,7 @@ func main() { } // run rest api server - var mwInternal core.MiddlewareInternal = mw - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() - go api.RunApiServer(ctx, mw, mwInternal) + api.SetMiddlewareParams(mw) for { sig := <-signalChan diff --git a/core/anytype/bootstrap.go b/core/anytype/bootstrap.go index 26beb7b85..2f053ed09 100644 --- a/core/anytype/bootstrap.go +++ b/core/anytype/bootstrap.go @@ -34,6 +34,7 @@ import ( "github.com/anyproto/anytype-heart/core/acl" "github.com/anyproto/anytype-heart/core/anytype/account" "github.com/anyproto/anytype-heart/core/anytype/config" + "github.com/anyproto/anytype-heart/core/api" "github.com/anyproto/anytype-heart/core/block" "github.com/anyproto/anytype-heart/core/block/backlinks" "github.com/anyproto/anytype-heart/core/block/bookmark" @@ -317,7 +318,8 @@ func Bootstrap(a *app.App, components ...app.Component) { Register(paymentscache.New()). Register(peerstatus.New()). Register(lastused.New()). - Register(spaceview.New()) + Register(spaceview.New()). + Register(api.New()) } func MiddlewareVersion() string { diff --git a/cmd/api/auth/handler.go b/core/api/auth/handler.go similarity index 97% rename from cmd/api/auth/handler.go rename to core/api/auth/handler.go index 907218510..8193505f7 100644 --- a/cmd/api/auth/handler.go +++ b/core/api/auth/handler.go @@ -5,7 +5,7 @@ import ( "github.com/gin-gonic/gin" - "github.com/anyproto/anytype-heart/cmd/api/util" + "github.com/anyproto/anytype-heart/core/api/util" ) // DisplayCodeHandler generates a new challenge and returns the challenge ID diff --git a/cmd/api/auth/model.go b/core/api/auth/model.go similarity index 100% rename from cmd/api/auth/model.go rename to core/api/auth/model.go diff --git a/cmd/api/auth/service.go b/core/api/auth/service.go similarity index 100% rename from cmd/api/auth/service.go rename to core/api/auth/service.go diff --git a/cmd/api/auth/service_test.go b/core/api/auth/service_test.go similarity index 100% rename from cmd/api/auth/service_test.go rename to core/api/auth/service_test.go diff --git a/cmd/api/demo/api_demo.go b/core/api/demo/api_demo.go similarity index 100% rename from cmd/api/demo/api_demo.go rename to core/api/demo/api_demo.go diff --git a/cmd/api/docs/docs.go b/core/api/docs/docs.go similarity index 99% rename from cmd/api/docs/docs.go rename to core/api/docs/docs.go index bd37c0172..e4edc552b 100644 --- a/cmd/api/docs/docs.go +++ b/core/api/docs/docs.go @@ -1057,6 +1057,10 @@ const docTemplate = `{ "type": "string", "example": "Page" }, + "recommended_layout": { + "type": "string", + "example": "todo" + }, "type": { "type": "string", "example": "object_type" diff --git a/cmd/api/docs/swagger.json b/core/api/docs/swagger.json similarity index 99% rename from cmd/api/docs/swagger.json rename to core/api/docs/swagger.json index 7c882dc72..cb33fc852 100644 --- a/cmd/api/docs/swagger.json +++ b/core/api/docs/swagger.json @@ -1051,6 +1051,10 @@ "type": "string", "example": "Page" }, + "recommended_layout": { + "type": "string", + "example": "todo" + }, "type": { "type": "string", "example": "object_type" diff --git a/cmd/api/docs/swagger.yaml b/core/api/docs/swagger.yaml similarity index 99% rename from cmd/api/docs/swagger.yaml rename to core/api/docs/swagger.yaml index 6c2bc2bdc..c924ff003 100644 --- a/cmd/api/docs/swagger.yaml +++ b/core/api/docs/swagger.yaml @@ -133,6 +133,9 @@ definitions: name: example: Page type: string + recommended_layout: + example: todo + type: string type: example: object_type type: string diff --git a/cmd/api/export/handler.go b/core/api/export/handler.go similarity index 97% rename from cmd/api/export/handler.go rename to core/api/export/handler.go index 289b05122..d07f674bd 100644 --- a/cmd/api/export/handler.go +++ b/core/api/export/handler.go @@ -5,7 +5,7 @@ import ( "github.com/gin-gonic/gin" - "github.com/anyproto/anytype-heart/cmd/api/util" + "github.com/anyproto/anytype-heart/core/api/util" ) // GetObjectExportHandler exports an object to the specified format diff --git a/cmd/api/export/model.go b/core/api/export/model.go similarity index 100% rename from cmd/api/export/model.go rename to core/api/export/model.go diff --git a/cmd/api/export/service.go b/core/api/export/service.go similarity index 100% rename from cmd/api/export/service.go rename to core/api/export/service.go diff --git a/cmd/api/object/handler.go b/core/api/object/handler.go similarity index 99% rename from cmd/api/object/handler.go rename to core/api/object/handler.go index cb2a224b3..18facccf7 100644 --- a/cmd/api/object/handler.go +++ b/core/api/object/handler.go @@ -5,8 +5,8 @@ import ( "github.com/gin-gonic/gin" - "github.com/anyproto/anytype-heart/cmd/api/pagination" - "github.com/anyproto/anytype-heart/cmd/api/util" + "github.com/anyproto/anytype-heart/core/api/pagination" + "github.com/anyproto/anytype-heart/core/api/util" ) // GetObjectsHandler retrieves objects in a specific space diff --git a/cmd/api/object/model.go b/core/api/object/model.go similarity index 100% rename from cmd/api/object/model.go rename to core/api/object/model.go diff --git a/cmd/api/object/service.go b/core/api/object/service.go similarity index 99% rename from cmd/api/object/service.go rename to core/api/object/service.go index 986cc7027..e5f459687 100644 --- a/cmd/api/object/service.go +++ b/core/api/object/service.go @@ -6,8 +6,8 @@ import ( "github.com/gogo/protobuf/types" - "github.com/anyproto/anytype-heart/cmd/api/pagination" - "github.com/anyproto/anytype-heart/cmd/api/util" + "github.com/anyproto/anytype-heart/core/api/pagination" + "github.com/anyproto/anytype-heart/core/api/util" "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/pb/service" "github.com/anyproto/anytype-heart/pkg/lib/bundle" diff --git a/cmd/api/object/service_test.go b/core/api/object/service_test.go similarity index 100% rename from cmd/api/object/service_test.go rename to core/api/object/service_test.go diff --git a/cmd/api/pagination/model.go b/core/api/pagination/model.go similarity index 100% rename from cmd/api/pagination/model.go rename to core/api/pagination/model.go diff --git a/cmd/api/pagination/pagination.go b/core/api/pagination/pagination.go similarity index 100% rename from cmd/api/pagination/pagination.go rename to core/api/pagination/pagination.go diff --git a/cmd/api/pagination/pagination_test.go b/core/api/pagination/pagination_test.go similarity index 100% rename from cmd/api/pagination/pagination_test.go rename to core/api/pagination/pagination_test.go diff --git a/cmd/api/search/handler.go b/core/api/search/handler.go similarity index 91% rename from cmd/api/search/handler.go rename to core/api/search/handler.go index 78e17b764..efa19b326 100644 --- a/cmd/api/search/handler.go +++ b/core/api/search/handler.go @@ -5,9 +5,9 @@ import ( "github.com/gin-gonic/gin" - "github.com/anyproto/anytype-heart/cmd/api/pagination" - "github.com/anyproto/anytype-heart/cmd/api/space" - "github.com/anyproto/anytype-heart/cmd/api/util" + "github.com/anyproto/anytype-heart/core/api/pagination" + "github.com/anyproto/anytype-heart/core/api/space" + "github.com/anyproto/anytype-heart/core/api/util" ) // SearchHandler searches and retrieves objects across all the spaces diff --git a/cmd/api/search/service.go b/core/api/search/service.go similarity index 92% rename from cmd/api/search/service.go rename to core/api/search/service.go index 1d293f32d..54ca8a4de 100644 --- a/cmd/api/search/service.go +++ b/core/api/search/service.go @@ -6,10 +6,10 @@ import ( "sort" "strings" - "github.com/anyproto/anytype-heart/cmd/api/object" - "github.com/anyproto/anytype-heart/cmd/api/pagination" - "github.com/anyproto/anytype-heart/cmd/api/space" - "github.com/anyproto/anytype-heart/cmd/api/util" + object2 "github.com/anyproto/anytype-heart/core/api/object" + "github.com/anyproto/anytype-heart/core/api/pagination" + "github.com/anyproto/anytype-heart/core/api/space" + "github.com/anyproto/anytype-heart/core/api/util" "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/pb/service" "github.com/anyproto/anytype-heart/pkg/lib/bundle" @@ -23,22 +23,22 @@ var ( ) type Service interface { - Search(ctx context.Context, searchQuery string, objectTypes []string, offset, limit int) (objects []object.Object, total int, hasMore bool, err error) + Search(ctx context.Context, searchQuery string, objectTypes []string, offset, limit int) (objects []object2.Object, total int, hasMore bool, err error) } type SearchService struct { mw service.ClientCommandsServer spaceService *space.SpaceService - objectService *object.ObjectService + objectService *object2.ObjectService AccountInfo *model.AccountInfo } -func NewService(mw service.ClientCommandsServer, spaceService *space.SpaceService, objectService *object.ObjectService) *SearchService { +func NewService(mw service.ClientCommandsServer, spaceService *space.SpaceService, objectService *object2.ObjectService) *SearchService { return &SearchService{mw: mw, spaceService: spaceService, objectService: objectService} } // Search retrieves a paginated list of objects from all spaces that match the search parameters. -func (s *SearchService) Search(ctx context.Context, searchQuery string, objectTypes []string, offset, limit int) (objects []object.Object, total int, hasMore bool, err error) { +func (s *SearchService) Search(ctx context.Context, searchQuery string, objectTypes []string, offset, limit int) (objects []object2.Object, total int, hasMore bool, err error) { spaces, _, _, err := s.spaceService.ListSpaces(ctx, 0, 100) if err != nil { return nil, 0, false, err @@ -47,7 +47,7 @@ func (s *SearchService) Search(ctx context.Context, searchQuery string, objectTy baseFilters := s.prepareBaseFilters() queryFilters := s.prepareQueryFilter(searchQuery) - results := make([]object.Object, 0) + results := make([]object2.Object, 0) for _, space := range spaces { // Resolve object type IDs per space, as they are unique per space objectTypeFilters := s.prepareObjectTypeFilters(space.Id, objectTypes) diff --git a/cmd/api/search/service_test.go b/core/api/search/service_test.go similarity index 96% rename from cmd/api/search/service_test.go rename to core/api/search/service_test.go index bbc795c89..eba17ef4d 100644 --- a/cmd/api/search/service_test.go +++ b/core/api/search/service_test.go @@ -8,8 +8,8 @@ import ( "github.com/stretchr/testify/mock" "github.com/stretchr/testify/require" - "github.com/anyproto/anytype-heart/cmd/api/object" - "github.com/anyproto/anytype-heart/cmd/api/space" + object2 "github.com/anyproto/anytype-heart/core/api/object" + "github.com/anyproto/anytype-heart/core/api/space" "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/pb/service/mock_service" "github.com/anyproto/anytype-heart/pkg/lib/bundle" @@ -34,7 +34,7 @@ func newFixture(t *testing.T) *fixture { spaceService := space.NewService(mw) spaceService.AccountInfo = &model.AccountInfo{TechSpaceId: techSpaceId} - objectService := object.NewService(mw) + objectService := object2.NewService(mw) objectService.AccountInfo = &model.AccountInfo{TechSpaceId: techSpaceId} searchService := NewService(mw, spaceService, objectService) searchService.AccountInfo = &model.AccountInfo{ @@ -221,9 +221,9 @@ func TestSearchService_Search(t *testing.T) { } // check tags - tags := []object.Tag{} + tags := []object2.Tag{} for _, detail := range objects[0].Details { - if tagList, ok := detail.Details["tags"].([]object.Tag); ok { + if tagList, ok := detail.Details["tags"].([]object2.Tag); ok { for _, tag := range tagList { tags = append(tags, tag) } diff --git a/cmd/api/server/middleware.go b/core/api/server/middleware.go similarity index 85% rename from cmd/api/server/middleware.go rename to core/api/server/middleware.go index 6cefcd012..b88747337 100644 --- a/cmd/api/server/middleware.go +++ b/core/api/server/middleware.go @@ -5,22 +5,22 @@ import ( "fmt" "net/http" + "github.com/anyproto/any-sync/app" "github.com/gin-gonic/gin" "github.com/anyproto/anytype-heart/core/anytype/account" ) // initAccountInfo retrieves the account information from the account service. -func (s *Server) initAccountInfo() gin.HandlerFunc { +func (s *Server) initAccountInfo(a *app.App) gin.HandlerFunc { return func(c *gin.Context) { // TODO: consider not fetching account info on every request; currently used to avoid inconsistencies on logout/login - app := s.mwInternal.GetApp() - if app == nil { + if a == nil { c.AbortWithStatusJSON(http.StatusForbidden, gin.H{"error": "failed to get app instance"}) return } - accInfo, err := app.Component(account.CName).(account.Service).GetInfo(context.Background()) + accInfo, err := a.Component(account.CName).(account.Service).GetInfo(context.Background()) if err != nil { c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"error": fmt.Sprintf("failed to get account info: %v", err)}) return diff --git a/cmd/api/server/router.go b/core/api/server/router.go similarity index 81% rename from cmd/api/server/router.go rename to core/api/server/router.go index 2cc5633a7..5fa9ad842 100644 --- a/cmd/api/server/router.go +++ b/core/api/server/router.go @@ -1,20 +1,21 @@ package server import ( + "github.com/anyproto/any-sync/app" "github.com/gin-gonic/gin" swaggerFiles "github.com/swaggo/files" ginSwagger "github.com/swaggo/gin-swagger" - "github.com/anyproto/anytype-heart/cmd/api/auth" - "github.com/anyproto/anytype-heart/cmd/api/export" - "github.com/anyproto/anytype-heart/cmd/api/object" - "github.com/anyproto/anytype-heart/cmd/api/pagination" - "github.com/anyproto/anytype-heart/cmd/api/search" - "github.com/anyproto/anytype-heart/cmd/api/space" + "github.com/anyproto/anytype-heart/core/api/auth" + "github.com/anyproto/anytype-heart/core/api/export" + "github.com/anyproto/anytype-heart/core/api/object" + "github.com/anyproto/anytype-heart/core/api/pagination" + "github.com/anyproto/anytype-heart/core/api/search" + "github.com/anyproto/anytype-heart/core/api/space" ) // NewRouter builds and returns a *gin.Engine with all routes configured. -func (s *Server) NewRouter() *gin.Engine { +func (s *Server) NewRouter(a *app.App) *gin.Engine { router := gin.Default() // Pagination middleware setup @@ -31,7 +32,7 @@ func (s *Server) NewRouter() *gin.Engine { // API routes v1 := router.Group("/v1") v1.Use(paginator) - v1.Use(s.initAccountInfo()) + v1.Use(s.initAccountInfo(a)) v1.Use(s.ensureAuthenticated()) { // Auth diff --git a/core/api/server/server.go b/core/api/server/server.go new file mode 100644 index 000000000..3141fc2f1 --- /dev/null +++ b/core/api/server/server.go @@ -0,0 +1,44 @@ +package server + +import ( + "github.com/anyproto/any-sync/app" + "github.com/gin-gonic/gin" + + "github.com/anyproto/anytype-heart/core/api/auth" + "github.com/anyproto/anytype-heart/core/api/export" + "github.com/anyproto/anytype-heart/core/api/object" + "github.com/anyproto/anytype-heart/core/api/search" + "github.com/anyproto/anytype-heart/core/api/space" + "github.com/anyproto/anytype-heart/pb/service" +) + +// Server wraps the HTTP server and service logic. +type Server struct { + engine *gin.Engine + + authService *auth.AuthService + exportService *export.ExportService + objectService *object.ObjectService + spaceService *space.SpaceService + searchService *search.SearchService +} + +// NewServer constructs a new Server with default config and sets up the routes. +func NewServer(a *app.App, mw service.ClientCommandsServer) *Server { + s := &Server{ + authService: auth.NewService(mw), + exportService: export.NewService(mw), + objectService: object.NewService(mw), + spaceService: space.NewService(mw), + } + + s.searchService = search.NewService(mw, s.spaceService, s.objectService) + s.engine = s.NewRouter(a) + + return s +} + +// Engine returns the underlying gin.Engine. +func (s *Server) Engine() *gin.Engine { + return s.engine +} diff --git a/core/api/service.go b/core/api/service.go new file mode 100644 index 000000000..21715d6cf --- /dev/null +++ b/core/api/service.go @@ -0,0 +1,104 @@ +package api + +import ( + "context" + "fmt" + "net/http" + "time" + + "github.com/anyproto/any-sync/app" + + "github.com/anyproto/anytype-heart/core/api/server" + "github.com/anyproto/anytype-heart/pb/service" + "github.com/anyproto/anytype-heart/pkg/lib/logging" +) + +const ( + CName = "api" + httpPort = ":31009" + timeout = 5 * time.Second +) + +var ( + logger = logging.Logger(CName) + mwSrv service.ClientCommandsServer +) + +type Api interface { + app.ComponentRunnable +} + +type apiService struct { + srv *server.Server + httpSrv *http.Server + mw service.ClientCommandsServer +} + +func New() Api { + return &apiService{ + mw: mwSrv, + } +} + +func (s *apiService) Name() (name string) { + return CName +} + +// @title Anytype API +// @version 1.0 +// @description This API allows interaction with Anytype resources such as spaces, objects, and object types. +// @termsOfService https://anytype.io/terms_of_use +// @contact.name Anytype Support +// @contact.url https://anytype.io/contact +// @contact.email support@anytype.io +// @license.name Any Source Available License 1.0 +// @license.url https://github.com/anyproto/anytype-ts/blob/main/LICENSE.md +// @host localhost:31009 +// @BasePath /v1 +// @securityDefinitions.basic BasicAuth +// @externalDocs.description OpenAPI +// @externalDocs.url https://swagger.io/resources/open-api/ +func (s *apiService) Init(a *app.App) (err error) { + fmt.Println("Initializing API service...") + + s.srv = server.NewServer(a, s.mw) + s.httpSrv = &http.Server{ + Addr: httpPort, + Handler: s.srv.Engine(), + ReadHeaderTimeout: timeout, + } + + return nil +} + +func (s *apiService) Run(ctx context.Context) (err error) { + fmt.Printf("Starting API server on %s\n", s.httpSrv.Addr) + + go func() { + if err := s.httpSrv.ListenAndServe(); err != nil && err != http.ErrServerClosed { + fmt.Printf("API server ListenAndServe error: %v\n", err) + } + }() + + return nil +} + +func (s *apiService) Close(ctx context.Context) (err error) { + fmt.Println("Closing API service...") + + // Give the server a short time to finish ongoing requests. + shutdownCtx, cancel := context.WithTimeout(ctx, timeout) + defer cancel() + + if err := s.httpSrv.Shutdown(shutdownCtx); err != nil { + fmt.Printf("API server shutdown error: %v\n", err) + return err + } + + fmt.Println("API service stopped gracefully.") + return nil +} + +func SetMiddlewareParams(mw service.ClientCommandsServer) { + mwSrv = mw +} diff --git a/cmd/api/space/handler.go b/core/api/space/handler.go similarity index 97% rename from cmd/api/space/handler.go rename to core/api/space/handler.go index e50eec2f9..54679d78f 100644 --- a/cmd/api/space/handler.go +++ b/core/api/space/handler.go @@ -5,8 +5,8 @@ import ( "github.com/gin-gonic/gin" - "github.com/anyproto/anytype-heart/cmd/api/pagination" - "github.com/anyproto/anytype-heart/cmd/api/util" + "github.com/anyproto/anytype-heart/core/api/pagination" + "github.com/anyproto/anytype-heart/core/api/util" ) // GetSpacesHandler retrieves a list of spaces diff --git a/cmd/api/space/model.go b/core/api/space/model.go similarity index 100% rename from cmd/api/space/model.go rename to core/api/space/model.go diff --git a/cmd/api/space/service.go b/core/api/space/service.go similarity index 98% rename from cmd/api/space/service.go rename to core/api/space/service.go index 2e47c15d2..4b84baa5b 100644 --- a/cmd/api/space/service.go +++ b/core/api/space/service.go @@ -8,8 +8,8 @@ import ( "github.com/gogo/protobuf/types" - "github.com/anyproto/anytype-heart/cmd/api/pagination" - "github.com/anyproto/anytype-heart/cmd/api/util" + "github.com/anyproto/anytype-heart/core/api/pagination" + "github.com/anyproto/anytype-heart/core/api/util" "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/pb/service" "github.com/anyproto/anytype-heart/pkg/lib/bundle" diff --git a/cmd/api/space/service_test.go b/core/api/space/service_test.go similarity index 100% rename from cmd/api/space/service_test.go rename to core/api/space/service_test.go diff --git a/cmd/api/util/error.go b/core/api/util/error.go similarity index 100% rename from cmd/api/util/error.go rename to core/api/util/error.go diff --git a/cmd/api/util/util.go b/core/api/util/util.go similarity index 100% rename from cmd/api/util/util.go rename to core/api/util/util.go From 987f14bb85ee51a1bd17aa561d9dae880df2df46 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Sun, 12 Jan 2025 00:28:48 +0100 Subject: [PATCH 142/279] GO-4459: Fix lint --- cmd/grpcserver/grpc.go | 2 +- core/api/object/service.go | 8 ++++---- core/api/service.go | 34 +++++++++++++++++----------------- 3 files changed, 22 insertions(+), 22 deletions(-) diff --git a/cmd/grpcserver/grpc.go b/cmd/grpcserver/grpc.go index 987f6d1c9..d9e421a98 100644 --- a/cmd/grpcserver/grpc.go +++ b/cmd/grpcserver/grpc.go @@ -247,7 +247,7 @@ func main() { } } - // run rest api server + // pass mw to api service api.SetMiddlewareParams(mw) for { diff --git a/core/api/object/service.go b/core/api/object/service.go index e5f459687..f8f0c651e 100644 --- a/core/api/object/service.go +++ b/core/api/object/service.go @@ -204,7 +204,7 @@ func (s *ObjectService) CreateObject(ctx context.Context, spaceId string, reques }) if relAddFeatResp.Error.Code != pb.RpcObjectRelationAddFeaturedResponseError_NULL { - object, _ := s.GetObject(ctx, spaceId, resp.ObjectId) + object, _ := s.GetObject(ctx, spaceId, resp.ObjectId) // nolint:errcheck return object, ErrFailedSetRelationFeatured } } @@ -217,7 +217,7 @@ func (s *ObjectService) CreateObject(ctx context.Context, spaceId string, reques }) if bookmarkResp.Error.Code != pb.RpcObjectBookmarkFetchResponseError_NULL { - object, _ := s.GetObject(ctx, spaceId, resp.ObjectId) + object, _ := s.GetObject(ctx, spaceId, resp.ObjectId) // nolint:errcheck return object, ErrFailedFetchBookmark } } @@ -247,7 +247,7 @@ func (s *ObjectService) CreateObject(ctx context.Context, spaceId string, reques }) if blockCreateResp.Error.Code != pb.RpcBlockCreateResponseError_NULL { - object, _ := s.GetObject(ctx, spaceId, resp.ObjectId) + object, _ := s.GetObject(ctx, spaceId, resp.ObjectId) // nolint:errcheck return object, ErrFailedCreateObject } @@ -258,7 +258,7 @@ func (s *ObjectService) CreateObject(ctx context.Context, spaceId string, reques }) if blockPasteResp.Error.Code != pb.RpcBlockPasteResponseError_NULL { - object, _ := s.GetObject(ctx, spaceId, resp.ObjectId) + object, _ := s.GetObject(ctx, spaceId, resp.ObjectId) // nolint:errcheck return object, ErrFailedPasteBody } } diff --git a/core/api/service.go b/core/api/service.go index 21715d6cf..d7b1d1507 100644 --- a/core/api/service.go +++ b/core/api/service.go @@ -10,7 +10,6 @@ import ( "github.com/anyproto/anytype-heart/core/api/server" "github.com/anyproto/anytype-heart/pb/service" - "github.com/anyproto/anytype-heart/pkg/lib/logging" ) const ( @@ -20,8 +19,7 @@ const ( ) var ( - logger = logging.Logger(CName) - mwSrv service.ClientCommandsServer + mwSrv service.ClientCommandsServer ) type Api interface { @@ -44,20 +42,22 @@ func (s *apiService) Name() (name string) { return CName } -// @title Anytype API -// @version 1.0 -// @description This API allows interaction with Anytype resources such as spaces, objects, and object types. -// @termsOfService https://anytype.io/terms_of_use -// @contact.name Anytype Support -// @contact.url https://anytype.io/contact -// @contact.email support@anytype.io -// @license.name Any Source Available License 1.0 -// @license.url https://github.com/anyproto/anytype-ts/blob/main/LICENSE.md -// @host localhost:31009 -// @BasePath /v1 -// @securityDefinitions.basic BasicAuth -// @externalDocs.description OpenAPI -// @externalDocs.url https://swagger.io/resources/open-api/ +// Init initializes the API service. +// +// @title Anytype API +// @version 1.0 +// @description This API allows interaction with Anytype resources such as spaces, objects, and object types. +// @termsOfService https://anytype.io/terms_of_use +// @contact.name Anytype Support +// @contact.url https://anytype.io/contact +// @contact.email support@anytype.io +// @license.name Any Source Available License 1.0 +// @license.url https://github.com/anyproto/anytype-ts/blob/main/LICENSE.md +// @host localhost:31009 +// @BasePath /v1 +// @securityDefinitions.basic BasicAuth +// @externalDocs.description OpenAPI +// @externalDocs.url https://swagger.io/resources/open-api/ func (s *apiService) Init(a *app.App) (err error) { fmt.Println("Initializing API service...") From a019504b8f0ba6b2b60f93444092f41b08f9eee9 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Sun, 12 Jan 2025 23:33:03 +0100 Subject: [PATCH 143/279] GO-4459: Remove mw internal interface --- .mockery.yaml | 5 +- core/core.go | 4 -- core/mock_core/mock_MiddlewareInternal.go | 83 ----------------------- 3 files changed, 1 insertion(+), 91 deletions(-) delete mode 100644 core/mock_core/mock_MiddlewareInternal.go diff --git a/.mockery.yaml b/.mockery.yaml index ecc47af3e..35990d91a 100644 --- a/.mockery.yaml +++ b/.mockery.yaml @@ -227,7 +227,4 @@ packages: Service: github.com/anyproto/anytype-heart/pb/service: interfaces: - ClientCommandsServer: - github.com/anyproto/anytype-heart/core: - interfaces: - MiddlewareInternal: \ No newline at end of file + ClientCommandsServer: \ No newline at end of file diff --git a/core/core.go b/core/core.go index 0a913d74c..394167770 100644 --- a/core/core.go +++ b/core/core.go @@ -23,10 +23,6 @@ var ( ErrNotLoggedIn = errors.New("not logged in") ) -type MiddlewareInternal interface { - GetApp() *app.App -} - type Middleware struct { applicationService *application.Service } diff --git a/core/mock_core/mock_MiddlewareInternal.go b/core/mock_core/mock_MiddlewareInternal.go deleted file mode 100644 index 33f1ca692..000000000 --- a/core/mock_core/mock_MiddlewareInternal.go +++ /dev/null @@ -1,83 +0,0 @@ -// Code generated by mockery. DO NOT EDIT. - -package mock_core - -import ( - app "github.com/anyproto/any-sync/app" - - mock "github.com/stretchr/testify/mock" -) - -// MockMiddlewareInternal is an autogenerated mock type for the MiddlewareInternal type -type MockMiddlewareInternal struct { - mock.Mock -} - -type MockMiddlewareInternal_Expecter struct { - mock *mock.Mock -} - -func (_m *MockMiddlewareInternal) EXPECT() *MockMiddlewareInternal_Expecter { - return &MockMiddlewareInternal_Expecter{mock: &_m.Mock} -} - -// GetApp provides a mock function with given fields: -func (_m *MockMiddlewareInternal) GetApp() *app.App { - ret := _m.Called() - - if len(ret) == 0 { - panic("no return value specified for GetApp") - } - - var r0 *app.App - if rf, ok := ret.Get(0).(func() *app.App); ok { - r0 = rf() - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*app.App) - } - } - - return r0 -} - -// MockMiddlewareInternal_GetApp_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetApp' -type MockMiddlewareInternal_GetApp_Call struct { - *mock.Call -} - -// GetApp is a helper method to define mock.On call -func (_e *MockMiddlewareInternal_Expecter) GetApp() *MockMiddlewareInternal_GetApp_Call { - return &MockMiddlewareInternal_GetApp_Call{Call: _e.mock.On("GetApp")} -} - -func (_c *MockMiddlewareInternal_GetApp_Call) Run(run func()) *MockMiddlewareInternal_GetApp_Call { - _c.Call.Run(func(args mock.Arguments) { - run() - }) - return _c -} - -func (_c *MockMiddlewareInternal_GetApp_Call) Return(_a0 *app.App) *MockMiddlewareInternal_GetApp_Call { - _c.Call.Return(_a0) - return _c -} - -func (_c *MockMiddlewareInternal_GetApp_Call) RunAndReturn(run func() *app.App) *MockMiddlewareInternal_GetApp_Call { - _c.Call.Return(run) - return _c -} - -// NewMockMiddlewareInternal creates a new instance of MockMiddlewareInternal. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. -// The first argument is typically a *testing.T value. -func NewMockMiddlewareInternal(t interface { - mock.TestingT - Cleanup(func()) -}) *MockMiddlewareInternal { - mock := &MockMiddlewareInternal{} - mock.Mock.Test(t) - - t.Cleanup(func() { mock.AssertExpectations(t) }) - - return mock -} From 6f5910b84a80fe3be2b857f8d1fb0c323425cecd Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Mon, 13 Jan 2025 11:30:04 +0100 Subject: [PATCH 144/279] GO-4146 Update migrator --- go.mod | 2 +- go.sum | 4 ++-- space/spacecore/storage/migrator/migrator.go | 7 +------ 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index 63c8cf339..a2a101411 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( github.com/VividCortex/ewma v1.2.0 github.com/adrium/goheif v0.0.0-20230113233934-ca402e77a786 github.com/anyproto/any-store v0.1.3 - github.com/anyproto/any-sync v0.6.0-alpha.4.0.20250110144031-69146203821a + github.com/anyproto/any-sync v0.6.0-alpha.4.0.20250113102657-9e965782cca3 github.com/anyproto/go-chash v0.1.0 github.com/anyproto/go-naturaldate/v2 v2.0.2-0.20230524105841-9829cfd13438 github.com/anyproto/go-slip10 v1.0.0 diff --git a/go.sum b/go.sum index eb505542c..fcca0958f 100644 --- a/go.sum +++ b/go.sum @@ -78,8 +78,8 @@ github.com/andybalholm/cascadia v1.3.2 h1:3Xi6Dw5lHF15JtdcmAHD3i1+T8plmv7BQ/nsVi github.com/andybalholm/cascadia v1.3.2/go.mod h1:7gtRlve5FxPPgIgX36uWBX58OdBsSS6lUvCFb+h7KvU= github.com/anyproto/any-store v0.1.3 h1:onWLP8tuWiUvYOyV3DoRODscTxAiGEjwQPm+NMxeq3M= github.com/anyproto/any-store v0.1.3/go.mod h1:6/0OUKgSMWF/vYGoGYzQOl2CII5OdiuXbQlGDXYcNYc= -github.com/anyproto/any-sync v0.6.0-alpha.4.0.20250110144031-69146203821a h1:6FI1KZvKA6+rltMVYYA/gWYVT+ipDxlZRa5Ja9zmlq4= -github.com/anyproto/any-sync v0.6.0-alpha.4.0.20250110144031-69146203821a/go.mod h1:91ismOJy65b0sODYdZ0jAjKQouppbz8ans/gn+ytL90= +github.com/anyproto/any-sync v0.6.0-alpha.4.0.20250113102657-9e965782cca3 h1:gcUHUO05MMxhnQxjLMqycdkhYbCZwnJ9PNeWITQ8syw= +github.com/anyproto/any-sync v0.6.0-alpha.4.0.20250113102657-9e965782cca3/go.mod h1:91ismOJy65b0sODYdZ0jAjKQouppbz8ans/gn+ytL90= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580 h1:Ba80IlCCxkZ9H1GF+7vFu/TSpPvbpDCxXJ5ogc4euYc= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580/go.mod h1:T/uWAYxrXdaXw64ihI++9RMbKTCpKd/yE9+saARew7k= github.com/anyproto/go-chash v0.1.0 h1:I9meTPjXFRfXZHRJzjOHC/XF7Q5vzysKkiT/grsogXY= diff --git a/space/spacecore/storage/migrator/migrator.go b/space/spacecore/storage/migrator/migrator.go index 6429e909c..1fe3c47fe 100644 --- a/space/spacecore/storage/migrator/migrator.go +++ b/space/spacecore/storage/migrator/migrator.go @@ -106,7 +106,7 @@ func (m *migrator) Run(ctx context.Context) (err error) { } progress.SetTotal(total) for _, id := range allIds { - st, err := migrator.MigrateId(ctx, id, progress) + err := migrator.MigrateId(ctx, id, progress) if err != nil { if errors.Is(err, migration.ErrAlreadyMigrated) { progress.AddDone(totalMap[id]) @@ -114,11 +114,6 @@ func (m *migrator) Run(ctx context.Context) (err error) { } return err } - err = st.Close(ctx) - if err != nil { - return err - } - select { case <-ctx.Done(): return ctx.Err() From 9a9428f7cbadef49cf91f9dbb7658694385fe68d Mon Sep 17 00:00:00 2001 From: Sergey Date: Mon, 13 Jan 2025 13:19:05 +0100 Subject: [PATCH 145/279] GO-4146: WIP Tests --- .../storage/migrator/migrator_test.go | 116 ++++++++++++++++++ .../storage/migrator/testdata/spaceStore.db | Bin 0 -> 1572864 bytes 2 files changed, 116 insertions(+) create mode 100644 space/spacecore/storage/migrator/migrator_test.go create mode 100644 space/spacecore/storage/migrator/testdata/spaceStore.db diff --git a/space/spacecore/storage/migrator/migrator_test.go b/space/spacecore/storage/migrator/migrator_test.go new file mode 100644 index 000000000..f329902cc --- /dev/null +++ b/space/spacecore/storage/migrator/migrator_test.go @@ -0,0 +1,116 @@ +package migrator + +import ( + "context" + "io" + "os" + "testing" + + "github.com/anyproto/any-sync/app" + "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" + + "github.com/anyproto/anytype-heart/core/anytype/config" + "github.com/anyproto/anytype-heart/core/block/process" + "github.com/anyproto/anytype-heart/core/event/mock_event" + "github.com/anyproto/anytype-heart/core/wallet" + "github.com/anyproto/anytype-heart/pb" + "github.com/anyproto/anytype-heart/space/spacecore/oldstorage" + "github.com/anyproto/anytype-heart/space/spacecore/storage" + "github.com/anyproto/anytype-heart/tests/testutil" +) + +type fixture struct { + app *app.App + cfg *config.Config +} + +type quicPreferenceSetterStub struct { +} + +func (q *quicPreferenceSetterStub) Init(a *app.App) (err error) { + return nil +} + +func (q *quicPreferenceSetterStub) Name() (name string) { + return "quicPreferenceSetterStub" +} + +func (q *quicPreferenceSetterStub) PreferQuic(b bool) { +} + +func newFixture(t *testing.T) *fixture { + cfg := config.New() + cfg.SpaceStorageMode = storage.SpaceStorageModeSqlite + cfg.RepoPath = t.TempDir() + + fx := &fixture{ + cfg: cfg, + } + return fx +} + +func (fx *fixture) start(t *testing.T) { + walletService := wallet.NewWithRepoDirAndRandomKeys(fx.cfg.RepoPath) + oldStorage := oldstorage.New() + newStorage := storage.New() + processService := process.New() + eventSender := mock_event.NewMockSender(t) + eventSender.EXPECT().Broadcast(mock.Anything).Run(func(ev *pb.Event) { + t.Log(ev) + }).Maybe() + eventSender.EXPECT().BroadcastExceptSessions(mock.Anything, mock.Anything).Run(func(ev *pb.Event, exceptSessions []string) { + t.Log(ev) + }).Maybe() + migrator := New() + + ctx := context.Background() + testApp := &app.App{} + testApp.Register(testutil.PrepareMock(ctx, testApp, eventSender)) + testApp.Register(&quicPreferenceSetterStub{}) + testApp.Register(walletService) + testApp.Register(fx.cfg) + testApp.Register(oldStorage) + testApp.Register(newStorage) + testApp.Register(processService) + testApp.Register(migrator) + + fx.app = testApp + + err := testApp.Start(ctx) + require.NoError(t, err) +} + +func TestMigration(t *testing.T) { + t.Run("no old storage", func(t *testing.T) { + fx := newFixture(t) + + fx.start(t) + }) + + t.Run("with old data", func(t *testing.T) { + fx := newFixture(t) + + err := copyFile("testdata/spaceStore.db", fx.cfg.GetOldSpaceStorePath()) + require.NoError(t, err) + + // TODO Test object->space bindings were populated + + fx.start(t) + }) +} + +func copyFile(srcPath string, destPath string) error { + src, err := os.Open(srcPath) + if err != nil { + return err + } + defer src.Close() + dest, err := os.Create(destPath) + if err != nil { + return err + } + defer dest.Close() + _, err = io.Copy(dest, src) + return err +} diff --git a/space/spacecore/storage/migrator/testdata/spaceStore.db b/space/spacecore/storage/migrator/testdata/spaceStore.db new file mode 100644 index 0000000000000000000000000000000000000000..dfd79d40dcc06727293a2813acda16a5d1b76c75 GIT binary patch literal 1572864 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 aL+E$JBrn)sxp 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�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≪ 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ⅇL?rNN!o$Hm50fmJGY8<; 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 literal 0 HcmV?d00001 From 9f014a52479d6275172a5ab861a4f98b5a020979 Mon Sep 17 00:00:00 2001 From: Sergey Date: Mon, 13 Jan 2025 14:15:58 +0100 Subject: [PATCH 146/279] GO-4146: WIP Migrator finisher component --- core/anytype/bootstrap.go | 4 +- space/spacecore/storage/migrator/migrator.go | 46 +++------ .../storage/migratorfinisher/finisher.go | 96 +++++++++++++++++++ 3 files changed, 110 insertions(+), 36 deletions(-) create mode 100644 space/spacecore/storage/migratorfinisher/finisher.go diff --git a/core/anytype/bootstrap.go b/core/anytype/bootstrap.go index 40afbfeb9..071d3c298 100644 --- a/core/anytype/bootstrap.go +++ b/core/anytype/bootstrap.go @@ -112,6 +112,7 @@ import ( "github.com/anyproto/anytype-heart/space/spacecore/peerstore" "github.com/anyproto/anytype-heart/space/spacecore/storage" "github.com/anyproto/anytype-heart/space/spacecore/storage/migrator" + "github.com/anyproto/anytype-heart/space/spacecore/storage/migratorfinisher" "github.com/anyproto/anytype-heart/space/spacecore/typeprovider" "github.com/anyproto/anytype-heart/space/spacefactory" "github.com/anyproto/anytype-heart/space/virtualspaceservice" @@ -211,7 +212,8 @@ func BootstrapMigration(a *app.App, components ...app.Component) { for _, c := range components { a.Register(c) } - a.Register(clientds.New()). + a.Register(migratorfinisher.New()). + Register(clientds.New()). Register(oldstorage.New()). Register(storage.New()). Register(process.New()). diff --git a/space/spacecore/storage/migrator/migrator.go b/space/spacecore/storage/migrator/migrator.go index 1fe3c47fe..9bef16af4 100644 --- a/space/spacecore/storage/migrator/migrator.go +++ b/space/spacecore/storage/migrator/migrator.go @@ -6,7 +6,6 @@ import ( "fmt" "os" "path/filepath" - "strings" anystore "github.com/anyproto/any-store" "github.com/anyproto/any-sync/app" @@ -19,16 +18,11 @@ import ( "github.com/anyproto/anytype-heart/pkg/lib/localstore/objectstore/spaceresolverstore" "github.com/anyproto/anytype-heart/space/spacecore/oldstorage" "github.com/anyproto/anytype-heart/space/spacecore/storage" + "github.com/anyproto/anytype-heart/space/spacecore/storage/migratorfinisher" ) const CName = "client.storage.migration" -const ( - migratedName = "space_store_migrated" - objectStoreFolder = "objectstore" - crdtDb = "crdt" -) - type migrator struct { storage oldstorage.ClientStorage newStorage storage.ClientStorage @@ -36,6 +30,7 @@ type migrator struct { path string oldPath string objectStorePath string + finisher migratorfinisher.Service } type pathProvider interface { @@ -57,6 +52,7 @@ func (m *migrator) Init(a *app.App) (err error) { m.storage = app.MustComponent[oldstorage.ClientStorage](a) m.newStorage = app.MustComponent[storage.ClientStorage](a) m.process = app.MustComponent[process.Service](a) + m.finisher = app.MustComponent[migratorfinisher.Service](a) return nil } @@ -146,11 +142,14 @@ func (m *migrator) Run(ctx context.Context) (err error) { return fmt.Errorf("migrate space id bindings: %w", err) } - err = removeFilesWithPrefix(filepath.Join(filepath.Dir(m.path), objectStoreFolder), crdtDb) - if err != nil { - return nil - } - return renamePreserveExtension(m.oldPath, migratedName) + // TODO Maybe add some condition? + m.finisher.SetMigrationDone() + + return nil +} + +func (m *migrator) verify(ctx context.Context) error { + return fmt.Errorf("not implemented") } func (m *migrator) doObjectStoreDb(ctx context.Context, proc func(db anystore.DB) error) error { @@ -186,26 +185,3 @@ func ensureDirExists(dir string) error { func (m *migrator) Close(ctx context.Context) (err error) { return nil } - -func renamePreserveExtension(oldPath, newName string) error { - newPath := filepath.Join(filepath.Dir(oldPath), newName+filepath.Ext(oldPath)) - err := os.Rename(oldPath, newPath) - if err != nil { - return fmt.Errorf("failed to rename: %w", err) - } - return nil -} - -func removeFilesWithPrefix(rootDir, prefix string) error { - return filepath.Walk(rootDir, func(path string, info os.FileInfo, err error) error { - if err != nil { - return err - } - if !info.IsDir() && strings.HasPrefix(info.Name(), prefix) { - if removeErr := os.Remove(path); removeErr != nil { - return removeErr - } - } - return nil - }) -} diff --git a/space/spacecore/storage/migratorfinisher/finisher.go b/space/spacecore/storage/migratorfinisher/finisher.go new file mode 100644 index 000000000..506a26629 --- /dev/null +++ b/space/spacecore/storage/migratorfinisher/finisher.go @@ -0,0 +1,96 @@ +package migratorfinisher + +import ( + "context" + "fmt" + "os" + "path/filepath" + "strings" + + "github.com/anyproto/any-sync/app" +) + +const ( + migratedName = "space_store_migrated" + objectStoreFolder = "objectstore" + crdtDb = "crdt" +) + +const CName = "space.spacecore.storage.migratorfinisher" + +type finisher struct { + isMigrationDone bool + + newStorePath string + oldPath string +} + +type Service interface { + app.ComponentRunnable + SetMigrationDone() +} + +func New() Service { + return &finisher{} +} + +type pathProvider interface { + GetNewSpaceStorePath() string + GetOldSpaceStorePath() string +} + +func (f *finisher) Init(a *app.App) (err error) { + cfg := a.MustComponent("config").(pathProvider) + f.newStorePath = cfg.GetNewSpaceStorePath() + f.oldPath = cfg.GetOldSpaceStorePath() + return nil +} + +func (f *finisher) Name() (name string) { + return CName +} + +func (f *finisher) Run(ctx context.Context) (err error) { + return nil +} + +func (f *finisher) SetMigrationDone() { + f.isMigrationDone = true +} + +func (f *finisher) Close(ctx context.Context) error { + if !f.isMigrationDone { + return nil + } + err := f.removeCrdtIndexes() + if err != nil { + return nil + } + return f.renameOldStore() +} + +func (f *finisher) renameOldStore() error { + newName := migratedName + newPath := filepath.Join(filepath.Dir(f.oldPath), newName+filepath.Ext(f.oldPath)) + err := os.Rename(f.oldPath, newPath) + if err != nil { + return fmt.Errorf("failed to rename: %w", err) + } + return nil +} + +func (f *finisher) removeCrdtIndexes() error { + rootDir := filepath.Join(filepath.Dir(f.newStorePath), objectStoreFolder) + prefix := crdtDb + return filepath.Walk(rootDir, func(path string, info os.FileInfo, err error) error { + if err != nil { + return err + } + if !info.IsDir() && strings.HasPrefix(info.Name(), prefix) { + if removeErr := os.Remove(path); removeErr != nil { + return removeErr + } + } + return nil + }) +} From 378b991f5b4195f4ba45383148d3c00e611ecaa8 Mon Sep 17 00:00:00 2001 From: Sergey Date: Mon, 13 Jan 2025 16:06:46 +0100 Subject: [PATCH 147/279] GO-4146: WIP Migration verifier --- space/spacecore/storage/migrator/migrator.go | 116 ++++++++++++++++-- .../storage/migrator/migrator_test.go | 14 ++- .../storage/sqlitestorage/service.go | 1 + space/spacecore/storage/sqlitestorage/sql.go | 3 + space/spacecore/storage/sqlitestorage/tree.go | 15 ++- 5 files changed, 137 insertions(+), 12 deletions(-) diff --git a/space/spacecore/storage/migrator/migrator.go b/space/spacecore/storage/migrator/migrator.go index 9bef16af4..6ff97a6c8 100644 --- a/space/spacecore/storage/migrator/migrator.go +++ b/space/spacecore/storage/migrator/migrator.go @@ -9,6 +9,9 @@ import ( anystore "github.com/anyproto/any-store" "github.com/anyproto/any-sync/app" + "github.com/anyproto/any-sync/commonspace/object/tree/objecttree" + oldstorage2 "github.com/anyproto/any-sync/commonspace/spacestorage/oldstorage" + "golang.org/x/exp/slices" "github.com/anyproto/any-sync/commonspace/spacestorage/migration" @@ -24,7 +27,7 @@ import ( const CName = "client.storage.migration" type migrator struct { - storage oldstorage.ClientStorage + oldStorage oldstorage.ClientStorage newStorage storage.ClientStorage process process.Service path string @@ -49,7 +52,7 @@ func (m *migrator) Init(a *app.App) (err error) { m.path = cfg.GetNewSpaceStorePath() m.oldPath = cfg.GetOldSpaceStorePath() m.objectStorePath = filepath.Join(cfg.GetRepoPath(), "objectstore") - m.storage = app.MustComponent[oldstorage.ClientStorage](a) + m.oldStorage = app.MustComponent[oldstorage.ClientStorage](a) m.newStorage = app.MustComponent[storage.ClientStorage](a) m.process = app.MustComponent[process.Service](a) m.finisher = app.MustComponent[migratorfinisher.Service](a) @@ -70,8 +73,8 @@ func (m *migrator) Run(ctx context.Context) (err error) { defer func() { progress.Finish(err) }() - migrator := migration.NewSpaceMigrator(m.storage, m.newStorage, 40, m.path) - allIds, err := m.storage.AllSpaceIds() + migrator := migration.NewSpaceMigrator(m.oldStorage, m.newStorage, 40, m.path) + allIds, err := m.oldStorage.AllSpaceIds() if err != nil { return err } @@ -80,7 +83,7 @@ func (m *migrator) Run(ctx context.Context) (err error) { totalMap = make(map[string]int64) ) for _, id := range allIds { - store, err := m.storage.WaitSpaceStorage(ctx, id) + store, err := m.oldStorage.WaitSpaceStorage(ctx, id) if err != nil { return err } @@ -124,7 +127,7 @@ func (m *migrator) Run(ctx context.Context) (err error) { } for _, spaceId := range allIds { - objectIds, err := m.storage.GetBoundObjectIds(spaceId) + objectIds, err := m.oldStorage.GetBoundObjectIds(spaceId) if err != nil { return fmt.Errorf("get bound object ids: %w", err) } @@ -148,8 +151,105 @@ func (m *migrator) Run(ctx context.Context) (err error) { return nil } -func (m *migrator) verify(ctx context.Context) error { - return fmt.Errorf("not implemented") +func (m *migrator) verify(ctx context.Context, fast bool) error { + allSpaceIds, err := m.oldStorage.AllSpaceIds() + if err != nil { + return fmt.Errorf("list all space ids: %w", err) + } + for _, spaceId := range allSpaceIds { + err := m.verifySpace(ctx, spaceId, fast) + if err != nil { + return fmt.Errorf("verify space: %w", err) + } + } + return nil +} + +func (m *migrator) verifySpace(ctx context.Context, spaceId string, fast bool) error { + oldStore, err := m.oldStorage.WaitSpaceStorage(ctx, spaceId) + if err != nil { + return fmt.Errorf("open old store: %w", err) + } + + newStore, err := m.newStorage.WaitSpaceStorage(ctx, spaceId) + if err != nil { + return fmt.Errorf("open new store: %w", err) + } + newHeadStorage := newStore.HeadStorage() + + storedIds, err := oldStore.StoredIds() + if err != nil { + return err + } + + var bytesCompared int + for _, treeId := range storedIds { + + entry, err := newHeadStorage.GetEntry(ctx, treeId) + if err != nil { + return fmt.Errorf("get heads entry: %w", err) + } + fmt.Println(entry.Heads) + + oldTreeStorage, err := oldStore.TreeStorage(treeId) + if err != nil { + return fmt.Errorf("open old tree storage: %w", err) + } + oldHeads, err := oldTreeStorage.Heads() + if err != nil { + return fmt.Errorf("open old heads storage: %w", err) + } + if !slices.Equal(oldHeads, entry.Heads) { + return fmt.Errorf("old heads does not match tree storage") + } + + newTreeStorage, err := newStore.TreeStorage(ctx, treeId) + if err != nil { + return fmt.Errorf("open new tree storage: %w", err) + } + + if fast { + err = m.verifyTreeFast(ctx, oldTreeStorage, newTreeStorage) + if err != nil { + return fmt.Errorf("verify tree fast: %w", err) + } + } + + } + + fmt.Println(spaceId, "bytes compared", bytesCompared) + + err = oldStore.Close(ctx) + if err != nil { + return err + } + select { + case <-ctx.Done(): + return ctx.Err() + default: + } + return nil +} + +func (m *migrator) verifyTreeFast(ctx context.Context, oldTreeStorage oldstorage2.TreeStorage, newTreeStorage objecttree.Storage) error { + oldChangeIds, err := oldTreeStorage.GetAllChangeIds() + if err != nil { + return fmt.Errorf("get old change ids: %w", err) + } + + if len(oldChangeIds) == 0 { + return fmt.Errorf("old change ids is empty") + } + for _, oldChangeId := range oldChangeIds { + ok, err := newTreeStorage.Has(ctx, oldChangeId) + if err != nil { + return fmt.Errorf("get old change id: %w", err) + } + if !ok { + return fmt.Errorf("old change id does not exist") + } + } + return nil } func (m *migrator) doObjectStoreDb(ctx context.Context, proc func(db anystore.DB) error) error { diff --git a/space/spacecore/storage/migrator/migrator_test.go b/space/spacecore/storage/migrator/migrator_test.go index f329902cc..ba75f0515 100644 --- a/space/spacecore/storage/migrator/migrator_test.go +++ b/space/spacecore/storage/migrator/migrator_test.go @@ -17,12 +17,14 @@ import ( "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/space/spacecore/oldstorage" "github.com/anyproto/anytype-heart/space/spacecore/storage" + "github.com/anyproto/anytype-heart/space/spacecore/storage/migratorfinisher" "github.com/anyproto/anytype-heart/tests/testutil" ) type fixture struct { - app *app.App - cfg *config.Config + migrator *migrator + app *app.App + cfg *config.Config } type quicPreferenceSetterStub struct { @@ -62,10 +64,12 @@ func (fx *fixture) start(t *testing.T) { eventSender.EXPECT().BroadcastExceptSessions(mock.Anything, mock.Anything).Run(func(ev *pb.Event, exceptSessions []string) { t.Log(ev) }).Maybe() - migrator := New() + + migrator := New().(*migrator) ctx := context.Background() testApp := &app.App{} + testApp.Register(migratorfinisher.New()) testApp.Register(testutil.PrepareMock(ctx, testApp, eventSender)) testApp.Register(&quicPreferenceSetterStub{}) testApp.Register(walletService) @@ -76,6 +80,7 @@ func (fx *fixture) start(t *testing.T) { testApp.Register(migrator) fx.app = testApp + fx.migrator = migrator err := testApp.Start(ctx) require.NoError(t, err) @@ -97,6 +102,9 @@ func TestMigration(t *testing.T) { // TODO Test object->space bindings were populated fx.start(t) + + err = fx.migrator.verify(context.Background(), true) + require.NoError(t, err) }) } diff --git a/space/spacecore/storage/sqlitestorage/service.go b/space/spacecore/storage/sqlitestorage/service.go index ea5bd787e..1d315c571 100644 --- a/space/spacecore/storage/sqlitestorage/service.go +++ b/space/spacecore/storage/sqlitestorage/service.go @@ -52,6 +52,7 @@ type storageService struct { allTreeDelStatus, change, hasTree, + listChanges, hasChange, updateTreeHeads, deleteTree, diff --git a/space/spacecore/storage/sqlitestorage/sql.go b/space/spacecore/storage/sqlitestorage/sql.go index 0564abe55..74cffb528 100644 --- a/space/spacecore/storage/sqlitestorage/sql.go +++ b/space/spacecore/storage/sqlitestorage/sql.go @@ -88,6 +88,9 @@ func initStmts(s *storageService) (err error) { if s.stmt.hasChange, err = s.readDb.Prepare(`SELECT COUNT(*) FROM changes WHERE id = ? AND treeId = ?`); err != nil { return } + if s.stmt.listChanges, err = s.readDb.Prepare(`SELECT id FROM changes WHERE treeId = ?`); err != nil { + return + } if s.stmt.updateTreeHeads, err = s.writeDb.Prepare(`UPDATE trees SET heads = ? WHERE id = ?`); err != nil { return } diff --git a/space/spacecore/storage/sqlitestorage/tree.go b/space/spacecore/storage/sqlitestorage/tree.go index 9872d76e4..c3239f196 100644 --- a/space/spacecore/storage/sqlitestorage/tree.go +++ b/space/spacecore/storage/sqlitestorage/tree.go @@ -2,6 +2,7 @@ package sqlitestorage import ( "context" + "errors" "fmt" "sync" "sync/atomic" @@ -101,7 +102,19 @@ func (t *treeStorage) Heads() ([]string, error) { } func (t *treeStorage) GetAllChangeIds() (chs []string, err error) { - return nil, fmt.Errorf("get all change ids should not be called") + rows, err := t.service.stmt.listChanges.Query(t.treeId) + if err != nil { + return nil, replaceNoRowsErr(err, nil) + } + for rows.Next() { + var id string + err = rows.Scan(&id) + if err != nil { + return nil, errors.Join(rows.Close(), err) + } + chs = append(chs, id) + } + return chs, rows.Close() } func (t *treeStorage) SetHeads(heads []string) error { From 33eeb768b806b5d7c7da030d94031a72e11ee95d Mon Sep 17 00:00:00 2001 From: Sergey Date: Mon, 13 Jan 2025 16:27:11 +0100 Subject: [PATCH 148/279] GO-4146: WIP Migration verifier: full comparison --- space/spacecore/storage/migrator/migrator.go | 35 +++++++++++++++++++ .../storage/migrator/migrator_test.go | 22 +++++++++++- .../storage/sqlitestorage/service.go | 1 + space/spacecore/storage/sqlitestorage/sql.go | 3 ++ space/spacecore/storage/sqlitestorage/tree.go | 23 ++++++++++++ 5 files changed, 83 insertions(+), 1 deletion(-) diff --git a/space/spacecore/storage/migrator/migrator.go b/space/spacecore/storage/migrator/migrator.go index 6ff97a6c8..008175d9d 100644 --- a/space/spacecore/storage/migrator/migrator.go +++ b/space/spacecore/storage/migrator/migrator.go @@ -1,6 +1,7 @@ package migrator import ( + "bytes" "context" "errors" "fmt" @@ -8,6 +9,7 @@ import ( "path/filepath" anystore "github.com/anyproto/any-store" + "github.com/anyproto/any-store/anyenc" "github.com/anyproto/any-sync/app" "github.com/anyproto/any-sync/commonspace/object/tree/objecttree" oldstorage2 "github.com/anyproto/any-sync/commonspace/spacestorage/oldstorage" @@ -165,6 +167,10 @@ func (m *migrator) verify(ctx context.Context, fast bool) error { return nil } +type oldStoreChangesIterator interface { + IterateChanges(proc func(id string, rawChange []byte) error) error +} + func (m *migrator) verifySpace(ctx context.Context, spaceId string, fast bool) error { oldStore, err := m.oldStorage.WaitSpaceStorage(ctx, spaceId) if err != nil { @@ -182,6 +188,11 @@ func (m *migrator) verifySpace(ctx context.Context, spaceId string, fast bool) e return err } + newStoreCollection, err := newStore.AnyStore().Collection(ctx, "changes") + if err != nil { + return fmt.Errorf("get new store collection: %w", err) + } + var bytesCompared int for _, treeId := range storedIds { @@ -213,6 +224,11 @@ func (m *migrator) verifySpace(ctx context.Context, spaceId string, fast bool) e if err != nil { return fmt.Errorf("verify tree fast: %w", err) } + } else { + err = m.verifyTreeFull(ctx, newStoreCollection, oldTreeStorage) + if err != nil { + return fmt.Errorf("verify tree fast: %w", err) + } } } @@ -252,6 +268,25 @@ func (m *migrator) verifyTreeFast(ctx context.Context, oldTreeStorage oldstorage return nil } +func (m *migrator) verifyTreeFull(ctx context.Context, newStoreCollection anystore.Collection, oldTreeStorage oldstorage2.TreeStorage) error { + iterator, ok := oldTreeStorage.(oldStoreChangesIterator) + if !ok { + return fmt.Errorf("old tree storage doesn't implement iterator") + } + + anyParser := &anyenc.Parser{} + return iterator.IterateChanges(func(id string, oldChange []byte) error { + doc, err := newStoreCollection.FindIdWithParser(ctx, anyParser, id) + if err != nil { + return fmt.Errorf("get new store document: %w", err) + } + if !bytes.Equal(oldChange, doc.Value().GetBytes("r")) { + return fmt.Errorf("old tree change does not match tree storage") + } + return nil + }) +} + func (m *migrator) doObjectStoreDb(ctx context.Context, proc func(db anystore.DB) error) error { // TODO cfg cfg := &anystore.Config{} diff --git a/space/spacecore/storage/migrator/migrator_test.go b/space/spacecore/storage/migrator/migrator_test.go index ba75f0515..bbae04933 100644 --- a/space/spacecore/storage/migrator/migrator_test.go +++ b/space/spacecore/storage/migrator/migrator_test.go @@ -2,9 +2,11 @@ package migrator import ( "context" + "fmt" "io" "os" "testing" + "time" "github.com/anyproto/any-sync/app" "github.com/stretchr/testify/mock" @@ -93,7 +95,7 @@ func TestMigration(t *testing.T) { fx.start(t) }) - t.Run("with old data", func(t *testing.T) { + t.Run("with old data, fast verifier", func(t *testing.T) { fx := newFixture(t) err := copyFile("testdata/spaceStore.db", fx.cfg.GetOldSpaceStorePath()) @@ -103,7 +105,25 @@ func TestMigration(t *testing.T) { fx.start(t) + now := time.Now() err = fx.migrator.verify(context.Background(), true) + fmt.Println("FAST", time.Since(now)) + require.NoError(t, err) + }) + + t.Run("with old data, full verifier", func(t *testing.T) { + fx := newFixture(t) + + err := copyFile("testdata/spaceStore.db", fx.cfg.GetOldSpaceStorePath()) + require.NoError(t, err) + + // TODO Test object->space bindings were populated + + fx.start(t) + + now := time.Now() + err = fx.migrator.verify(context.Background(), false) + fmt.Println("FULL", time.Since(now)) require.NoError(t, err) }) } diff --git a/space/spacecore/storage/sqlitestorage/service.go b/space/spacecore/storage/sqlitestorage/service.go index 1d315c571..4ee6ad52b 100644 --- a/space/spacecore/storage/sqlitestorage/service.go +++ b/space/spacecore/storage/sqlitestorage/service.go @@ -53,6 +53,7 @@ type storageService struct { change, hasTree, listChanges, + iterateChanges, hasChange, updateTreeHeads, deleteTree, diff --git a/space/spacecore/storage/sqlitestorage/sql.go b/space/spacecore/storage/sqlitestorage/sql.go index 74cffb528..85459b1b8 100644 --- a/space/spacecore/storage/sqlitestorage/sql.go +++ b/space/spacecore/storage/sqlitestorage/sql.go @@ -91,6 +91,9 @@ func initStmts(s *storageService) (err error) { if s.stmt.listChanges, err = s.readDb.Prepare(`SELECT id FROM changes WHERE treeId = ?`); err != nil { return } + if s.stmt.iterateChanges, err = s.readDb.Prepare(`SELECT id, data FROM changes WHERE treeId = ?`); err != nil { + return + } if s.stmt.updateTreeHeads, err = s.writeDb.Prepare(`UPDATE trees SET heads = ? WHERE id = ?`); err != nil { return } diff --git a/space/spacecore/storage/sqlitestorage/tree.go b/space/spacecore/storage/sqlitestorage/tree.go index c3239f196..e749d6b67 100644 --- a/space/spacecore/storage/sqlitestorage/tree.go +++ b/space/spacecore/storage/sqlitestorage/tree.go @@ -117,6 +117,29 @@ func (t *treeStorage) GetAllChangeIds() (chs []string, err error) { return chs, rows.Close() } +func (t *treeStorage) IterateChanges(proc func(id string, rawChange []byte) error) error { + rows, err := t.service.stmt.iterateChanges.Query(t.treeId) + if err != nil { + return replaceNoRowsErr(err, nil) + } + + buf := make([]byte, 0, 1024) + for rows.Next() { + var id string + err = rows.Scan(&id, &buf) + if err != nil { + return errors.Join(rows.Close(), err) + } + + err = proc(id, buf) + if err != nil { + return errors.Join(rows.Close(), err) + } + buf = buf[:0] + } + return rows.Close() +} + func (t *treeStorage) SetHeads(heads []string) error { t.mu.Lock() defer t.mu.Unlock() From b30337493398e8d09b8c1a91e2f2d06a8f6ca755 Mon Sep 17 00:00:00 2001 From: Sergey Date: Mon, 13 Jan 2025 16:56:34 +0100 Subject: [PATCH 149/279] GO-4146: Refactor verifier --- space/spacecore/storage/migrator/migrator.go | 141 +------------- .../storage/migrator/migrator_test.go | 1 - space/spacecore/storage/migrator/verifier.go | 181 ++++++++++++++++++ 3 files changed, 186 insertions(+), 137 deletions(-) create mode 100644 space/spacecore/storage/migrator/verifier.go diff --git a/space/spacecore/storage/migrator/migrator.go b/space/spacecore/storage/migrator/migrator.go index 008175d9d..d99fe558a 100644 --- a/space/spacecore/storage/migrator/migrator.go +++ b/space/spacecore/storage/migrator/migrator.go @@ -1,7 +1,6 @@ package migrator import ( - "bytes" "context" "errors" "fmt" @@ -9,12 +8,7 @@ import ( "path/filepath" anystore "github.com/anyproto/any-store" - "github.com/anyproto/any-store/anyenc" "github.com/anyproto/any-sync/app" - "github.com/anyproto/any-sync/commonspace/object/tree/objecttree" - oldstorage2 "github.com/anyproto/any-sync/commonspace/spacestorage/oldstorage" - "golang.org/x/exp/slices" - "github.com/anyproto/any-sync/commonspace/spacestorage/migration" "github.com/anyproto/anytype-heart/core/block/process" @@ -154,137 +148,12 @@ func (m *migrator) Run(ctx context.Context) (err error) { } func (m *migrator) verify(ctx context.Context, fast bool) error { - allSpaceIds, err := m.oldStorage.AllSpaceIds() - if err != nil { - return fmt.Errorf("list all space ids: %w", err) + v := &verifier{ + fast: fast, + oldStorage: m.oldStorage, + newStorage: m.newStorage, } - for _, spaceId := range allSpaceIds { - err := m.verifySpace(ctx, spaceId, fast) - if err != nil { - return fmt.Errorf("verify space: %w", err) - } - } - return nil -} - -type oldStoreChangesIterator interface { - IterateChanges(proc func(id string, rawChange []byte) error) error -} - -func (m *migrator) verifySpace(ctx context.Context, spaceId string, fast bool) error { - oldStore, err := m.oldStorage.WaitSpaceStorage(ctx, spaceId) - if err != nil { - return fmt.Errorf("open old store: %w", err) - } - - newStore, err := m.newStorage.WaitSpaceStorage(ctx, spaceId) - if err != nil { - return fmt.Errorf("open new store: %w", err) - } - newHeadStorage := newStore.HeadStorage() - - storedIds, err := oldStore.StoredIds() - if err != nil { - return err - } - - newStoreCollection, err := newStore.AnyStore().Collection(ctx, "changes") - if err != nil { - return fmt.Errorf("get new store collection: %w", err) - } - - var bytesCompared int - for _, treeId := range storedIds { - - entry, err := newHeadStorage.GetEntry(ctx, treeId) - if err != nil { - return fmt.Errorf("get heads entry: %w", err) - } - fmt.Println(entry.Heads) - - oldTreeStorage, err := oldStore.TreeStorage(treeId) - if err != nil { - return fmt.Errorf("open old tree storage: %w", err) - } - oldHeads, err := oldTreeStorage.Heads() - if err != nil { - return fmt.Errorf("open old heads storage: %w", err) - } - if !slices.Equal(oldHeads, entry.Heads) { - return fmt.Errorf("old heads does not match tree storage") - } - - newTreeStorage, err := newStore.TreeStorage(ctx, treeId) - if err != nil { - return fmt.Errorf("open new tree storage: %w", err) - } - - if fast { - err = m.verifyTreeFast(ctx, oldTreeStorage, newTreeStorage) - if err != nil { - return fmt.Errorf("verify tree fast: %w", err) - } - } else { - err = m.verifyTreeFull(ctx, newStoreCollection, oldTreeStorage) - if err != nil { - return fmt.Errorf("verify tree fast: %w", err) - } - } - - } - - fmt.Println(spaceId, "bytes compared", bytesCompared) - - err = oldStore.Close(ctx) - if err != nil { - return err - } - select { - case <-ctx.Done(): - return ctx.Err() - default: - } - return nil -} - -func (m *migrator) verifyTreeFast(ctx context.Context, oldTreeStorage oldstorage2.TreeStorage, newTreeStorage objecttree.Storage) error { - oldChangeIds, err := oldTreeStorage.GetAllChangeIds() - if err != nil { - return fmt.Errorf("get old change ids: %w", err) - } - - if len(oldChangeIds) == 0 { - return fmt.Errorf("old change ids is empty") - } - for _, oldChangeId := range oldChangeIds { - ok, err := newTreeStorage.Has(ctx, oldChangeId) - if err != nil { - return fmt.Errorf("get old change id: %w", err) - } - if !ok { - return fmt.Errorf("old change id does not exist") - } - } - return nil -} - -func (m *migrator) verifyTreeFull(ctx context.Context, newStoreCollection anystore.Collection, oldTreeStorage oldstorage2.TreeStorage) error { - iterator, ok := oldTreeStorage.(oldStoreChangesIterator) - if !ok { - return fmt.Errorf("old tree storage doesn't implement iterator") - } - - anyParser := &anyenc.Parser{} - return iterator.IterateChanges(func(id string, oldChange []byte) error { - doc, err := newStoreCollection.FindIdWithParser(ctx, anyParser, id) - if err != nil { - return fmt.Errorf("get new store document: %w", err) - } - if !bytes.Equal(oldChange, doc.Value().GetBytes("r")) { - return fmt.Errorf("old tree change does not match tree storage") - } - return nil - }) + return v.verify(ctx) } func (m *migrator) doObjectStoreDb(ctx context.Context, proc func(db anystore.DB) error) error { diff --git a/space/spacecore/storage/migrator/migrator_test.go b/space/spacecore/storage/migrator/migrator_test.go index bbae04933..da920da1f 100644 --- a/space/spacecore/storage/migrator/migrator_test.go +++ b/space/spacecore/storage/migrator/migrator_test.go @@ -61,7 +61,6 @@ func (fx *fixture) start(t *testing.T) { processService := process.New() eventSender := mock_event.NewMockSender(t) eventSender.EXPECT().Broadcast(mock.Anything).Run(func(ev *pb.Event) { - t.Log(ev) }).Maybe() eventSender.EXPECT().BroadcastExceptSessions(mock.Anything, mock.Anything).Run(func(ev *pb.Event, exceptSessions []string) { t.Log(ev) diff --git a/space/spacecore/storage/migrator/verifier.go b/space/spacecore/storage/migrator/verifier.go new file mode 100644 index 000000000..968c3f0f0 --- /dev/null +++ b/space/spacecore/storage/migrator/verifier.go @@ -0,0 +1,181 @@ +package migrator + +import ( + "bytes" + "context" + "fmt" + "slices" + "time" + + anystore "github.com/anyproto/any-store" + "github.com/anyproto/any-store/anyenc" + "github.com/anyproto/any-sync/commonspace/object/tree/objecttree" + "github.com/anyproto/any-sync/commonspace/spacestorage" + oldstorage2 "github.com/anyproto/any-sync/commonspace/spacestorage/oldstorage" + + "github.com/anyproto/anytype-heart/space/spacecore/oldstorage" + "github.com/anyproto/anytype-heart/space/spacecore/storage" +) + +type verifier struct { + fast bool + oldStorage oldstorage.ClientStorage + newStorage storage.ClientStorage +} + +type errorEntry struct { + id string + err error +} + +type verificationReport struct { + spaceId string + + treesCompared int + errors []errorEntry + totalBytesCompared int + + duration time.Duration +} + +func (v *verifier) verify(ctx context.Context) error { + allSpaceIds, err := v.oldStorage.AllSpaceIds() + if err != nil { + return fmt.Errorf("list all space ids: %w", err) + } + for _, spaceId := range allSpaceIds { + report, err := v.verifySpace(ctx, spaceId) + if err != nil { + return fmt.Errorf("verify space: %w", err) + } + fmt.Printf("%#v\n%s\n", report, report.duration) + } + return nil +} + +type oldStoreChangesIterator interface { + IterateChanges(proc func(id string, rawChange []byte) error) error +} + +func (v *verifier) verifySpace(ctx context.Context, spaceId string) (*verificationReport, error) { + oldStore, err := v.oldStorage.WaitSpaceStorage(ctx, spaceId) + if err != nil { + return nil, fmt.Errorf("open old store: %w", err) + } + + newStore, err := v.newStorage.WaitSpaceStorage(ctx, spaceId) + if err != nil { + return nil, fmt.Errorf("open new store: %w", err) + } + + storedIds, err := oldStore.StoredIds() + if err != nil { + return nil, err + } + + newStoreCollection, err := newStore.AnyStore().Collection(ctx, "changes") + if err != nil { + return nil, fmt.Errorf("get new store collection: %w", err) + } + + report := &verificationReport{} + now := time.Now() + for _, treeId := range storedIds { + bytesCompared, err := v.verifyTree(ctx, oldStore, newStore, newStoreCollection, treeId) + if err != nil { + report.errors = append(report.errors, errorEntry{id: treeId, err: err}) + } + report.treesCompared++ + report.totalBytesCompared += bytesCompared + } + report.duration = time.Since(now) + + err = oldStore.Close(ctx) + if err != nil { + return nil, err + } + return report, nil +} + +func (v *verifier) verifyTree(ctx context.Context, oldStore oldstorage2.SpaceStorage, newStore spacestorage.SpaceStorage, newStoreCollection anystore.Collection, treeId string) (int, error) { + newHeadStorage := newStore.HeadStorage() + + entry, err := newHeadStorage.GetEntry(ctx, treeId) + if err != nil { + return 0, fmt.Errorf("get heads entry: %w", err) + } + + oldTreeStorage, err := oldStore.TreeStorage(treeId) + if err != nil { + return 0, fmt.Errorf("open old tree storage: %w", err) + } + oldHeads, err := oldTreeStorage.Heads() + if err != nil { + return 0, fmt.Errorf("open old heads storage: %w", err) + } + + if !slices.Equal(oldHeads, entry.Heads) { + return 0, fmt.Errorf("old heads does not match tree storage") + } + + newTreeStorage, err := newStore.TreeStorage(ctx, treeId) + if err != nil { + return 0, fmt.Errorf("open new tree storage: %w", err) + } + + var bytesCompared int + if v.fast { + err = v.verifyChangesFast(ctx, oldTreeStorage, newTreeStorage) + if err != nil { + return 0, fmt.Errorf("verify tree fast: %w", err) + } + } else { + bytesCompared, err = v.verifyChangesFull(ctx, newStoreCollection, oldTreeStorage) + if err != nil { + return 0, fmt.Errorf("verify tree fast: %w", err) + } + } + return bytesCompared, nil +} + +func (v *verifier) verifyChangesFast(ctx context.Context, oldTreeStorage oldstorage2.TreeStorage, newTreeStorage objecttree.Storage) error { + oldChangeIds, err := oldTreeStorage.GetAllChangeIds() + if err != nil { + return fmt.Errorf("get old change ids: %w", err) + } + + if len(oldChangeIds) == 0 { + return fmt.Errorf("old change ids is empty") + } + for _, oldChangeId := range oldChangeIds { + ok, err := newTreeStorage.Has(ctx, oldChangeId) + if err != nil { + return fmt.Errorf("get old change id: %w", err) + } + if !ok { + return fmt.Errorf("old change id does not exist") + } + } + return nil +} + +func (v *verifier) verifyChangesFull(ctx context.Context, newStoreCollection anystore.Collection, oldTreeStorage oldstorage2.TreeStorage) (int, error) { + iterator, ok := oldTreeStorage.(oldStoreChangesIterator) + if !ok { + return 0, fmt.Errorf("old tree storage doesn't implement iterator") + } + anyParser := &anyenc.Parser{} + var bytesCompared int + err := iterator.IterateChanges(func(id string, oldChange []byte) error { + bytesCompared += len(oldChange) + doc, err := newStoreCollection.FindIdWithParser(ctx, anyParser, id) + if err != nil { + return fmt.Errorf("get new store document: %w", err) + } + if !bytes.Equal(oldChange, doc.Value().GetBytes("r")) { + return fmt.Errorf("old tree change does not match tree storage") + } + return nil + }) + return bytesCompared, err +} From 61c716dbd57da0349e7abb66a22ffacbc8626fdc Mon Sep 17 00:00:00 2001 From: Sergey Date: Tue, 14 Jan 2025 17:40:39 +0100 Subject: [PATCH 150/279] GO-4146: Add new debug method --- core/block/debug.go | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/core/block/debug.go b/core/block/debug.go index 138cbd7a7..2b4d44db9 100644 --- a/core/block/debug.go +++ b/core/block/debug.go @@ -1,6 +1,7 @@ package block import ( + "context" "encoding/json" "fmt" "net/http" @@ -22,6 +23,7 @@ import ( func (s *Service) DebugRouter(r chi.Router) { r.Get("/objects", debug.JSONHandler(s.debugListObjects)) r.Get("/tree/{id}", debug.JSONHandler(s.debugTree)) + r.Get("/tree_in_space/{spaceId}/{id}", debug.JSONHandler(s.debugTreeInSpace)) r.Get("/objects_per_space/{spaceId}", debug.JSONHandler(s.debugListObjectsPerSpace)) r.Get("/objects/{id}", debug.JSONHandler(s.debugGetObject)) } @@ -122,6 +124,44 @@ func (s *Service) debugTree(req *http.Request) (debugTree, error) { return result, err } +// TODO Refactor +func (s *Service) debugTreeInSpace(req *http.Request) (debugTree, error) { + spaceId := chi.URLParam(req, "spaceId") + id := chi.URLParam(req, "id") + + result := debugTree{ + Id: id, + } + + spc, err := s.spaceService.Get(context.Background(), spaceId) + if err != nil { + return result, fmt.Errorf("get space: %w", err) + } + + err = spc.Do(id, func(sb smartblock.SmartBlock) error { + ot := sb.Tree() + return ot.IterateRoot(source.UnmarshalChange, func(change *objecttree.Change) bool { + change.Next = nil + raw, err := json.Marshal(change) + if err != nil { + log.Error("debug tree: marshal change", zap.Error(err)) + return false + } + ts := time.Unix(change.Timestamp, 0) + ch := debugChange{ + Change: raw, + Timestamp: ts.Format(time.RFC3339), + } + if change.Identity != nil { + ch.Identity = change.Identity.Account() + } + result.Changes = append(result.Changes, ch) + return true + }) + }) + return result, err +} + func (s *Service) getDebugObject(id string) (debugObject, error) { var obj debugObject err := cache.Do(s, id, func(sb smartblock.SmartBlock) error { From cca9d16c87098acbf42032c5aeec16922870c94e Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Tue, 14 Jan 2025 22:31:09 +0100 Subject: [PATCH 151/279] GO-4459: Move services --- core/api/demo/api_demo.go | 143 ------------------ core/api/server/router.go | 10 +- core/api/server/server.go | 10 +- core/api/{ => services}/auth/handler.go | 0 core/api/{ => services}/auth/model.go | 0 core/api/{ => services}/auth/service.go | 0 core/api/{ => services}/auth/service_test.go | 0 core/api/{ => services}/export/handler.go | 0 core/api/{ => services}/export/model.go | 0 core/api/{ => services}/export/service.go | 0 core/api/{ => services}/object/handler.go | 0 core/api/{ => services}/object/model.go | 0 core/api/{ => services}/object/service.go | 0 .../api/{ => services}/object/service_test.go | 0 core/api/{ => services}/search/handler.go | 2 +- core/api/{ => services}/search/service.go | 14 +- .../api/{ => services}/search/service_test.go | 10 +- core/api/{ => services}/space/handler.go | 0 core/api/{ => services}/space/model.go | 0 core/api/{ => services}/space/service.go | 0 core/api/{ => services}/space/service_test.go | 0 21 files changed, 23 insertions(+), 166 deletions(-) delete mode 100644 core/api/demo/api_demo.go rename core/api/{ => services}/auth/handler.go (100%) rename core/api/{ => services}/auth/model.go (100%) rename core/api/{ => services}/auth/service.go (100%) rename core/api/{ => services}/auth/service_test.go (100%) rename core/api/{ => services}/export/handler.go (100%) rename core/api/{ => services}/export/model.go (100%) rename core/api/{ => services}/export/service.go (100%) rename core/api/{ => services}/object/handler.go (100%) rename core/api/{ => services}/object/model.go (100%) rename core/api/{ => services}/object/service.go (100%) rename core/api/{ => services}/object/service_test.go (100%) rename core/api/{ => services}/search/handler.go (96%) rename core/api/{ => services}/search/service.go (94%) rename core/api/{ => services}/search/service_test.go (96%) rename core/api/{ => services}/space/handler.go (100%) rename core/api/{ => services}/space/model.go (100%) rename core/api/{ => services}/space/service.go (100%) rename core/api/{ => services}/space/service_test.go (100%) diff --git a/core/api/demo/api_demo.go b/core/api/demo/api_demo.go deleted file mode 100644 index 5901cd37c..000000000 --- a/core/api/demo/api_demo.go +++ /dev/null @@ -1,143 +0,0 @@ -package main - -import ( - "bytes" - "encoding/json" - "fmt" - "io" - "net/http" - "net/url" - "strings" - - "github.com/anyproto/anytype-heart/pkg/lib/logging" -) - -const ( - baseURL = "http://localhost:31009/v1" - // testSpaceId = "bafyreifymx5ucm3fdc7vupfg7wakdo5qelni3jvlmawlnvjcppurn2b3di.2lcu0r85yg10d" // dev (entry space) - // testSpaceId = "bafyreiezhzb4ggnhjwejmh67pd5grilk6jn3jt7y2rnfpbkjwekilreola.1t123w9f2lgn5" // LFLC - // testSpaceId = "bafyreiakofsfkgb7psju346cir2hit5hinhywaybi6vhp7hx4jw7hkngje.scoxzd7vu6rz" // HPI - // testObjectId = "bafyreidhtlbbspxecab6xf4pi5zyxcmvwy6lqzursbjouq5fxovh6y3xwu" // "Work Faster with Templates" - // testObjectId = "bafyreib3i5uq2tztocw3wrvhdugkwoxgg2xjh2jnl5retnyky66mr5b274" // Tag Test Page (in dev space) - // testTypeId = "bafyreie3djy4mcldt3hgeet6bnjay2iajdyi2fvx556n6wcxii7brlni3i" // Page (in dev space) - // chatSpaceId = "bafyreigryvrmerbtfswwz5kav2uq5dlvx3hl45kxn4nflg7lz46lneqs7m.2nvj2qik6ctdy" // Anytype Wiki space - // chatSpaceId = "bafyreiexhpzaf7uxzheubh7cjeusqukjnxfvvhh4at6bygljwvto2dttnm.2lcu0r85yg10d" // chat space -) - -var log = logging.Logger("rest-api") - -// ReplacePlaceholders replaces placeholders in the endpoint with actual values from parameters. -func ReplacePlaceholders(endpoint string, parameters map[string]interface{}) string { - for key, value := range parameters { - placeholder := fmt.Sprintf("{%s}", key) - encodedValue := url.QueryEscape(fmt.Sprintf("%v", value)) - endpoint = strings.ReplaceAll(endpoint, placeholder, encodedValue) - } - - // Parse the base URL + endpoint - u, err := url.Parse(baseURL + endpoint) - if err != nil { - log.Errorf("Failed to parse URL: %v\n", err) - return "" - } - - return u.String() -} - -func main() { - endpoints := []struct { - method string - endpoint string - parameters map[string]interface{} - body map[string]interface{} - }{ - // auth - // {"POST", "/auth/display_code", nil, nil}, - // {"POST", "/auth/token?challenge_id={challenge_id}&code={code}", map[string]interface{}{"challenge_id": "6738dfc5cda913aad90e8c2a", "code": "2931"}, nil}, - - // export - // {"GET", "/spaces/{space_id}/objects/{object_id}/export/{format}", map[string]interface{}{"space_id": testSpaceId, "object_id": testObjectId, "format": "markdown"}, nil}, - - // spaces - // {"POST", "/spaces", nil, map[string]interface{}{"name": "New Space"}}, - // {"GET", "/spaces?limit={limit}&offset={offset}", map[string]interface{}{"limit": 100, "offset": 0}, nil}, - // {"GET", "/spaces/{space_id}/members?limit={limit}&offset={offset}", map[string]interface{}{"space_id": testSpaceId, "limit": 100, "offset": 0}, nil}, - - // objects - // {"GET", "/spaces/{space_id}/objects?limit={limit}&offset={offset}", map[string]interface{}{"space_id": testSpaceId, "limit": 100, "offset": 0}, nil}, - // {"GET", "/spaces/{space_id}/objects/{object_id}", map[string]interface{}{"space_id": testSpaceId, "object_id": testObjectId}, nil}, - // {"DELETE", "/spaces/{space_id}/objects/{object_id}", map[string]interface{}{"space_id": "asd", "object_id": "asd"}, nil}, - // {"POST", "/spaces/{space_id}/objects", map[string]interface{}{"space_id": testSpaceId}, map[string]interface{}{"name": "New Object from demo", "icon": "💥", "template_id": "", "object_type_unique_key": "ot-page", "with_chat": false}}, - // {"PUT", "/spaces/{space_id}/objects/{object_id}", map[string]interface{}{"space_id": testSpaceId, "object_id": testObjectId}, map[string]interface{}{"name": "Updated Object"}}, - // {"GET", "/spaces/{space_id}/object_types?limit={limit}&offset={offset}", map[string]interface{}{"space_id": testSpaceId, "limit": 100, "offset": 0}, nil}, - // {"GET", "/spaces/{space_id}/object_types/{type_id}/templates?limit={limit}&offset={offset}", map[string]interface{}{"space_id": testSpaceId, "type_id": testTypeId, "limit": 100, "offset": 0}, nil}, - - // search - // {"GET", "/search?query={query}&object_types={object_types}&limit={limit}&offset={offset}", map[string]interface{}{"query": "new", "object_types": "", "limit": 100, "offset": 0}, nil}, - } - - for _, ep := range endpoints { - finalURL := ReplacePlaceholders(ep.endpoint, ep.parameters) - - var req *http.Request - var err error - - if ep.body != nil { - body, err := json.Marshal(ep.body) - if err != nil { - log.Errorf("Failed to marshal body for %s: %v\n", ep.endpoint, err) - continue - } - req, err = http.NewRequest(ep.method, finalURL, bytes.NewBuffer(body)) - if err != nil { - log.Errorf("Failed to create request for %s: %v\n", ep.endpoint, err) - } - req.Header.Set("Content-Type", "application/json") - } else { - req, err = http.NewRequest(ep.method, finalURL, nil) - } - - if err != nil { - log.Errorf("Failed to create request for %s: %v\n", ep.endpoint, err) - continue - } - - // Execute the HTTP request - client := &http.Client{} - resp, err := client.Do(req) - if err != nil { - log.Errorf("Failed to make request to %s: %v\n", finalURL, err.Error()) - continue - } - defer resp.Body.Close() - - // Check the status code - if resp.StatusCode != http.StatusOK { - body, err := io.ReadAll(resp.Body) - if err != nil { - log.Errorf("Failes to read response body for request to %s with code %d.", finalURL, resp.StatusCode) - continue - } - log.Errorf("Request to %s returned status code %d: %v\n", finalURL, resp.StatusCode, string(body)) - continue - } - - // Read the response - body, err := io.ReadAll(resp.Body) - if err != nil { - log.Errorf("Failed to read response body for %s: %v\n", ep.endpoint, err) - continue - } - - // Log the response - var prettyJSON bytes.Buffer - err = json.Indent(&prettyJSON, body, "", " ") - if err != nil { - log.Errorf("Failed to pretty print response body for %s: %v\n", ep.endpoint, err) - log.Infof("%s\n", string(body)) - continue - } - - log.Infof("Endpoint: %s, Status Code: %d, Body: %s\n", finalURL, resp.StatusCode, prettyJSON.String()) - } -} diff --git a/core/api/server/router.go b/core/api/server/router.go index 5fa9ad842..6ce14184d 100644 --- a/core/api/server/router.go +++ b/core/api/server/router.go @@ -6,12 +6,12 @@ import ( swaggerFiles "github.com/swaggo/files" ginSwagger "github.com/swaggo/gin-swagger" - "github.com/anyproto/anytype-heart/core/api/auth" - "github.com/anyproto/anytype-heart/core/api/export" - "github.com/anyproto/anytype-heart/core/api/object" "github.com/anyproto/anytype-heart/core/api/pagination" - "github.com/anyproto/anytype-heart/core/api/search" - "github.com/anyproto/anytype-heart/core/api/space" + "github.com/anyproto/anytype-heart/core/api/services/auth" + "github.com/anyproto/anytype-heart/core/api/services/export" + "github.com/anyproto/anytype-heart/core/api/services/object" + "github.com/anyproto/anytype-heart/core/api/services/search" + "github.com/anyproto/anytype-heart/core/api/services/space" ) // NewRouter builds and returns a *gin.Engine with all routes configured. diff --git a/core/api/server/server.go b/core/api/server/server.go index 3141fc2f1..578162f99 100644 --- a/core/api/server/server.go +++ b/core/api/server/server.go @@ -4,11 +4,11 @@ import ( "github.com/anyproto/any-sync/app" "github.com/gin-gonic/gin" - "github.com/anyproto/anytype-heart/core/api/auth" - "github.com/anyproto/anytype-heart/core/api/export" - "github.com/anyproto/anytype-heart/core/api/object" - "github.com/anyproto/anytype-heart/core/api/search" - "github.com/anyproto/anytype-heart/core/api/space" + "github.com/anyproto/anytype-heart/core/api/services/auth" + "github.com/anyproto/anytype-heart/core/api/services/export" + "github.com/anyproto/anytype-heart/core/api/services/object" + "github.com/anyproto/anytype-heart/core/api/services/search" + "github.com/anyproto/anytype-heart/core/api/services/space" "github.com/anyproto/anytype-heart/pb/service" ) diff --git a/core/api/auth/handler.go b/core/api/services/auth/handler.go similarity index 100% rename from core/api/auth/handler.go rename to core/api/services/auth/handler.go diff --git a/core/api/auth/model.go b/core/api/services/auth/model.go similarity index 100% rename from core/api/auth/model.go rename to core/api/services/auth/model.go diff --git a/core/api/auth/service.go b/core/api/services/auth/service.go similarity index 100% rename from core/api/auth/service.go rename to core/api/services/auth/service.go diff --git a/core/api/auth/service_test.go b/core/api/services/auth/service_test.go similarity index 100% rename from core/api/auth/service_test.go rename to core/api/services/auth/service_test.go diff --git a/core/api/export/handler.go b/core/api/services/export/handler.go similarity index 100% rename from core/api/export/handler.go rename to core/api/services/export/handler.go diff --git a/core/api/export/model.go b/core/api/services/export/model.go similarity index 100% rename from core/api/export/model.go rename to core/api/services/export/model.go diff --git a/core/api/export/service.go b/core/api/services/export/service.go similarity index 100% rename from core/api/export/service.go rename to core/api/services/export/service.go diff --git a/core/api/object/handler.go b/core/api/services/object/handler.go similarity index 100% rename from core/api/object/handler.go rename to core/api/services/object/handler.go diff --git a/core/api/object/model.go b/core/api/services/object/model.go similarity index 100% rename from core/api/object/model.go rename to core/api/services/object/model.go diff --git a/core/api/object/service.go b/core/api/services/object/service.go similarity index 100% rename from core/api/object/service.go rename to core/api/services/object/service.go diff --git a/core/api/object/service_test.go b/core/api/services/object/service_test.go similarity index 100% rename from core/api/object/service_test.go rename to core/api/services/object/service_test.go diff --git a/core/api/search/handler.go b/core/api/services/search/handler.go similarity index 96% rename from core/api/search/handler.go rename to core/api/services/search/handler.go index efa19b326..eb4528e94 100644 --- a/core/api/search/handler.go +++ b/core/api/services/search/handler.go @@ -6,7 +6,7 @@ import ( "github.com/gin-gonic/gin" "github.com/anyproto/anytype-heart/core/api/pagination" - "github.com/anyproto/anytype-heart/core/api/space" + "github.com/anyproto/anytype-heart/core/api/services/space" "github.com/anyproto/anytype-heart/core/api/util" ) diff --git a/core/api/search/service.go b/core/api/services/search/service.go similarity index 94% rename from core/api/search/service.go rename to core/api/services/search/service.go index 54ca8a4de..66fc04d55 100644 --- a/core/api/search/service.go +++ b/core/api/services/search/service.go @@ -6,9 +6,9 @@ import ( "sort" "strings" - object2 "github.com/anyproto/anytype-heart/core/api/object" "github.com/anyproto/anytype-heart/core/api/pagination" - "github.com/anyproto/anytype-heart/core/api/space" + "github.com/anyproto/anytype-heart/core/api/services/object" + "github.com/anyproto/anytype-heart/core/api/services/space" "github.com/anyproto/anytype-heart/core/api/util" "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/pb/service" @@ -23,22 +23,22 @@ var ( ) type Service interface { - Search(ctx context.Context, searchQuery string, objectTypes []string, offset, limit int) (objects []object2.Object, total int, hasMore bool, err error) + Search(ctx context.Context, searchQuery string, objectTypes []string, offset, limit int) (objects []object.Object, total int, hasMore bool, err error) } type SearchService struct { mw service.ClientCommandsServer spaceService *space.SpaceService - objectService *object2.ObjectService + objectService *object.ObjectService AccountInfo *model.AccountInfo } -func NewService(mw service.ClientCommandsServer, spaceService *space.SpaceService, objectService *object2.ObjectService) *SearchService { +func NewService(mw service.ClientCommandsServer, spaceService *space.SpaceService, objectService *object.ObjectService) *SearchService { return &SearchService{mw: mw, spaceService: spaceService, objectService: objectService} } // Search retrieves a paginated list of objects from all spaces that match the search parameters. -func (s *SearchService) Search(ctx context.Context, searchQuery string, objectTypes []string, offset, limit int) (objects []object2.Object, total int, hasMore bool, err error) { +func (s *SearchService) Search(ctx context.Context, searchQuery string, objectTypes []string, offset, limit int) (objects []object.Object, total int, hasMore bool, err error) { spaces, _, _, err := s.spaceService.ListSpaces(ctx, 0, 100) if err != nil { return nil, 0, false, err @@ -47,7 +47,7 @@ func (s *SearchService) Search(ctx context.Context, searchQuery string, objectTy baseFilters := s.prepareBaseFilters() queryFilters := s.prepareQueryFilter(searchQuery) - results := make([]object2.Object, 0) + results := make([]object.Object, 0) for _, space := range spaces { // Resolve object type IDs per space, as they are unique per space objectTypeFilters := s.prepareObjectTypeFilters(space.Id, objectTypes) diff --git a/core/api/search/service_test.go b/core/api/services/search/service_test.go similarity index 96% rename from core/api/search/service_test.go rename to core/api/services/search/service_test.go index eba17ef4d..fb6aaee6c 100644 --- a/core/api/search/service_test.go +++ b/core/api/services/search/service_test.go @@ -8,8 +8,8 @@ import ( "github.com/stretchr/testify/mock" "github.com/stretchr/testify/require" - object2 "github.com/anyproto/anytype-heart/core/api/object" - "github.com/anyproto/anytype-heart/core/api/space" + "github.com/anyproto/anytype-heart/core/api/services/object" + "github.com/anyproto/anytype-heart/core/api/services/space" "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/pb/service/mock_service" "github.com/anyproto/anytype-heart/pkg/lib/bundle" @@ -34,7 +34,7 @@ func newFixture(t *testing.T) *fixture { spaceService := space.NewService(mw) spaceService.AccountInfo = &model.AccountInfo{TechSpaceId: techSpaceId} - objectService := object2.NewService(mw) + objectService := object.NewService(mw) objectService.AccountInfo = &model.AccountInfo{TechSpaceId: techSpaceId} searchService := NewService(mw, spaceService, objectService) searchService.AccountInfo = &model.AccountInfo{ @@ -221,9 +221,9 @@ func TestSearchService_Search(t *testing.T) { } // check tags - tags := []object2.Tag{} + tags := []object.Tag{} for _, detail := range objects[0].Details { - if tagList, ok := detail.Details["tags"].([]object2.Tag); ok { + if tagList, ok := detail.Details["tags"].([]object.Tag); ok { for _, tag := range tagList { tags = append(tags, tag) } diff --git a/core/api/space/handler.go b/core/api/services/space/handler.go similarity index 100% rename from core/api/space/handler.go rename to core/api/services/space/handler.go diff --git a/core/api/space/model.go b/core/api/services/space/model.go similarity index 100% rename from core/api/space/model.go rename to core/api/services/space/model.go diff --git a/core/api/space/service.go b/core/api/services/space/service.go similarity index 100% rename from core/api/space/service.go rename to core/api/services/space/service.go diff --git a/core/api/space/service_test.go b/core/api/services/space/service_test.go similarity index 100% rename from core/api/space/service_test.go rename to core/api/services/space/service_test.go From 7000d44796b2c616cb44d316469963d56feeb7fc Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Tue, 14 Jan 2025 23:45:15 +0100 Subject: [PATCH 152/279] GO-4459: Add RPC to start and stop server --- clientlibrary/service/service.pb.go | 729 ++--- core/api/service.go | 77 +- docs/proto.md | 154 ++ pb/commands.pb.go | 3842 ++++++++++++++++++--------- pb/protos/commands.proto | 45 + pb/protos/service/service.proto | 4 + pb/service/service.pb.go | 729 ++--- 7 files changed, 3715 insertions(+), 1865 deletions(-) diff --git a/clientlibrary/service/service.pb.go b/clientlibrary/service/service.pb.go index 3cbe99da9..e57f17c9a 100644 --- a/clientlibrary/service/service.pb.go +++ b/clientlibrary/service/service.pb.go @@ -25,337 +25,340 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package func init() { proto.RegisterFile("pb/protos/service/service.proto", fileDescriptor_93a29dc403579097) } var fileDescriptor_93a29dc403579097 = []byte{ - // 5279 bytes of a gzipped FileDescriptorProto + // 5319 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x9d, 0x5b, 0x6f, 0x24, 0x49, - 0x56, 0xf8, 0xc7, 0x2f, 0xff, 0xf9, 0x93, 0xcb, 0x0e, 0x50, 0x03, 0xc3, 0xec, 0xb0, 0xdb, 0xb7, - 0xe9, 0xb6, 0xdd, 0x6d, 0xbb, 0xdc, 0xd3, 0x3d, 0x3d, 0xb3, 0xda, 0x45, 0x42, 0x6e, 0xbb, 0xed, - 0x31, 0x6b, 0xbb, 0x8d, 0xab, 0xdc, 0x2d, 0x8d, 0x84, 0x44, 0x38, 0x2b, 0x5c, 0x4e, 0x9c, 0x95, - 0x91, 0x9b, 0x19, 0x55, 0xee, 0x5a, 0x04, 0x02, 0x81, 0x40, 0x20, 0x10, 0x2b, 0x6e, 0xaf, 0x48, - 0x7c, 0x1a, 0x1e, 0xf7, 0x91, 0x47, 0x34, 0x23, 0x1e, 0xf8, 0x16, 0x28, 0x23, 0x23, 0xe3, 0x72, - 0xf2, 0x9c, 0xc8, 0xf4, 0x3e, 0x75, 0xab, 0xce, 0xef, 0x9c, 0x13, 0xd7, 0x13, 0x27, 0x22, 0x23, - 0xd3, 0xd1, 0xdd, 0xfc, 0x62, 0x3b, 0x2f, 0x84, 0x14, 0xe5, 0x76, 0xc9, 0x8b, 0x45, 0x12, 0xf3, - 0xe6, 0xdf, 0xa1, 0xfa, 0x79, 0xf0, 0x3e, 0xcb, 0x96, 0x72, 0x99, 0xf3, 0x4f, 0x3e, 0xb6, 0x64, - 0x2c, 0x66, 0x33, 0x96, 0x4d, 0xca, 0x1a, 0xf9, 0xe4, 0x23, 0x2b, 0xe1, 0x0b, 0x9e, 0x49, 0xfd, - 0xfb, 0xb3, 0xff, 0xf9, 0xdf, 0x95, 0xe8, 0x83, 0xdd, 0x34, 0xe1, 0x99, 0xdc, 0xd5, 0x1a, 0x83, - 0xaf, 0xa3, 0xef, 0xee, 0xe4, 0xf9, 0x01, 0x97, 0x6f, 0x78, 0x51, 0x26, 0x22, 0x1b, 0x7c, 0x3a, - 0xd4, 0x0e, 0x86, 0x67, 0x79, 0x3c, 0xdc, 0xc9, 0xf3, 0xa1, 0x15, 0x0e, 0xcf, 0xf8, 0x4f, 0xe7, - 0xbc, 0x94, 0x9f, 0x3c, 0x0c, 0x43, 0x65, 0x2e, 0xb2, 0x92, 0x0f, 0x2e, 0xa3, 0xdf, 0xd8, 0xc9, - 0xf3, 0x11, 0x97, 0x7b, 0xbc, 0xaa, 0xc0, 0x48, 0x32, 0xc9, 0x07, 0x6b, 0x2d, 0x55, 0x1f, 0x30, - 0x3e, 0xd6, 0xbb, 0x41, 0xed, 0x67, 0x1c, 0x7d, 0xa7, 0xf2, 0x73, 0x35, 0x97, 0x13, 0x71, 0x93, - 0x0d, 0xee, 0xb7, 0x15, 0xb5, 0xc8, 0xd8, 0x7e, 0x10, 0x42, 0xb4, 0xd5, 0xb7, 0xd1, 0xaf, 0xbe, + 0x56, 0xf8, 0xc7, 0x2f, 0xff, 0xf9, 0x93, 0xcb, 0x0e, 0x50, 0x03, 0xc3, 0xec, 0xb0, 0xdb, 0xdd, + 0xd3, 0x17, 0xdb, 0xdd, 0xb6, 0xcb, 0x3d, 0xdd, 0xd3, 0x33, 0xab, 0x5d, 0x24, 0xe4, 0xb6, 0xdb, + 0x1e, 0xb3, 0xb6, 0xdb, 0xb8, 0xca, 0xdd, 0xd2, 0x48, 0x48, 0x84, 0xb3, 0xc2, 0xe5, 0xc4, 0x59, + 0x19, 0xb9, 0x99, 0x51, 0xe5, 0xae, 0x45, 0x20, 0x10, 0x08, 0x04, 0x02, 0xb1, 0xe2, 0xf6, 0x0a, + 0xe2, 0xd3, 0xf0, 0xb8, 0x8f, 0x3c, 0xa2, 0x99, 0x47, 0xbe, 0x04, 0xca, 0xc8, 0xc8, 0xb8, 0x9c, + 0x3c, 0x27, 0x32, 0xbd, 0x4f, 0xdd, 0xf2, 0xf9, 0x9d, 0x73, 0xe2, 0x7a, 0xe2, 0x44, 0x64, 0x64, + 0x56, 0x74, 0x37, 0xbf, 0xd8, 0xce, 0x0b, 0x21, 0x45, 0xb9, 0x5d, 0xf2, 0x62, 0x91, 0xc4, 0xbc, + 0xf9, 0x77, 0xa8, 0xfe, 0x3c, 0x78, 0x9f, 0x65, 0x4b, 0xb9, 0xcc, 0xf9, 0x27, 0x1f, 0x5b, 0x32, + 0x16, 0xb3, 0x19, 0xcb, 0x26, 0x65, 0x8d, 0x7c, 0xf2, 0x91, 0x95, 0xf0, 0x05, 0xcf, 0xa4, 0xfe, + 0xfb, 0xb3, 0xff, 0xf8, 0xdf, 0x95, 0xe8, 0x83, 0xdd, 0x34, 0xe1, 0x99, 0xdc, 0xd5, 0x1a, 0x83, + 0xaf, 0xa3, 0xef, 0xee, 0xe4, 0xf9, 0x01, 0x97, 0x6f, 0x78, 0x51, 0x26, 0x22, 0x1b, 0x3c, 0x18, + 0x6a, 0x07, 0xc3, 0xb3, 0x3c, 0x1e, 0xee, 0xe4, 0xf9, 0xd0, 0x0a, 0x87, 0x67, 0xfc, 0xa7, 0x73, + 0x5e, 0xca, 0x4f, 0x1e, 0x86, 0xa1, 0x32, 0x17, 0x59, 0xc9, 0x07, 0x97, 0xd1, 0x6f, 0xec, 0xe4, + 0xf9, 0x88, 0xcb, 0x3d, 0x5e, 0x55, 0x60, 0x24, 0x99, 0xe4, 0x83, 0xb5, 0x96, 0xaa, 0x0f, 0x18, + 0x1f, 0xeb, 0xdd, 0xa0, 0xf6, 0x33, 0x8e, 0xbe, 0x53, 0xf9, 0xb9, 0x9a, 0xcb, 0x89, 0xb8, 0xc9, + 0x06, 0x9f, 0xb6, 0x15, 0xb5, 0xc8, 0xd8, 0xbe, 0x1f, 0x42, 0xb4, 0xd5, 0xb7, 0xd1, 0xaf, 0xbe, 0x65, 0x69, 0xca, 0xe5, 0x6e, 0xc1, 0xab, 0x82, 0xfb, 0x3a, 0xb5, 0x68, 0x58, 0xcb, 0x8c, 0xdd, - 0x4f, 0x83, 0x8c, 0x36, 0xfc, 0x75, 0xf4, 0xdd, 0x5a, 0x72, 0xc6, 0x63, 0xb1, 0xe0, 0xc5, 0x00, - 0xd5, 0xd2, 0x42, 0xa2, 0xc9, 0x5b, 0x10, 0xb4, 0xbd, 0x2b, 0xb2, 0x05, 0x2f, 0x24, 0x6e, 0x5b, - 0x0b, 0xc3, 0xb6, 0x2d, 0xa4, 0x6d, 0xff, 0xed, 0x4a, 0xf4, 0xfd, 0x9d, 0x38, 0x16, 0xf3, 0x4c, - 0x1e, 0x89, 0x98, 0xa5, 0x47, 0x49, 0x76, 0x7d, 0xc2, 0x6f, 0x76, 0xaf, 0x2a, 0x3e, 0x9b, 0xf2, - 0xc1, 0x73, 0xbf, 0x55, 0x6b, 0x74, 0x68, 0xd8, 0xa1, 0x0b, 0x1b, 0xdf, 0x9f, 0xdf, 0x4e, 0x49, - 0x97, 0xe5, 0x1f, 0x57, 0xa2, 0x3b, 0xb0, 0x2c, 0x23, 0x91, 0x2e, 0xb8, 0x2d, 0xcd, 0x8b, 0x0e, - 0xc3, 0x3e, 0x6e, 0xca, 0xf3, 0xc5, 0x6d, 0xd5, 0x74, 0x89, 0xd2, 0xe8, 0x43, 0x77, 0xb8, 0x8c, - 0x78, 0xa9, 0xa6, 0xd3, 0x63, 0x7a, 0x44, 0x68, 0xc4, 0x78, 0x7e, 0xd2, 0x07, 0xd5, 0xde, 0x92, - 0x68, 0xa0, 0xbd, 0xa5, 0xa2, 0x34, 0xce, 0xd6, 0x51, 0x0b, 0x0e, 0x61, 0x7c, 0x3d, 0xee, 0x41, - 0x6a, 0x57, 0x7f, 0x14, 0xfd, 0xda, 0x5b, 0x51, 0x5c, 0x97, 0x39, 0x8b, 0xb9, 0x9e, 0x0a, 0x8f, - 0x7c, 0xed, 0x46, 0x0a, 0x67, 0xc3, 0x6a, 0x17, 0xe6, 0x0c, 0xda, 0x46, 0xf8, 0x3a, 0xe7, 0x30, - 0x06, 0x59, 0xc5, 0x4a, 0x48, 0x0d, 0x5a, 0x08, 0x69, 0xdb, 0xd7, 0xd1, 0xc0, 0xda, 0xbe, 0xf8, - 0x63, 0x1e, 0xcb, 0x9d, 0xc9, 0x04, 0xf6, 0x8a, 0xd5, 0x55, 0xc4, 0x70, 0x67, 0x32, 0xa1, 0x7a, - 0x05, 0x47, 0xb5, 0xb3, 0x9b, 0xe8, 0x23, 0xe0, 0xec, 0x28, 0x29, 0x95, 0xc3, 0xad, 0xb0, 0x15, - 0x8d, 0x19, 0xa7, 0xc3, 0xbe, 0xb8, 0x76, 0xfc, 0xe7, 0x2b, 0xd1, 0xf7, 0x10, 0xcf, 0x67, 0x7c, - 0x26, 0x16, 0x7c, 0xf0, 0xb4, 0xdb, 0x5a, 0x4d, 0x1a, 0xff, 0x9f, 0xdd, 0x42, 0x03, 0x19, 0x26, - 0x23, 0x9e, 0xf2, 0x58, 0x92, 0xc3, 0xa4, 0x16, 0x77, 0x0e, 0x13, 0x83, 0x39, 0x33, 0xac, 0x11, - 0x1e, 0x70, 0xb9, 0x3b, 0x2f, 0x0a, 0x9e, 0x49, 0xb2, 0x2f, 0x2d, 0xd2, 0xd9, 0x97, 0x1e, 0x8a, - 0xd4, 0xe7, 0x80, 0xcb, 0x9d, 0x34, 0x25, 0xeb, 0x53, 0x8b, 0x3b, 0xeb, 0x63, 0x30, 0xed, 0x21, - 0x8e, 0x7e, 0xdd, 0x69, 0x31, 0x79, 0x98, 0x5d, 0x8a, 0x01, 0xdd, 0x16, 0x4a, 0x6e, 0x7c, 0xac, - 0x75, 0x72, 0x48, 0x35, 0x5e, 0xbd, 0xcb, 0x45, 0x41, 0x77, 0x4b, 0x2d, 0xee, 0xac, 0x86, 0xc1, - 0xb4, 0x87, 0x3f, 0x8c, 0x3e, 0xd0, 0x51, 0xb2, 0x59, 0xcf, 0x1e, 0xa2, 0x21, 0x14, 0x2e, 0x68, - 0x8f, 0x3a, 0x28, 0x1b, 0x1c, 0xb4, 0x4c, 0x07, 0x9f, 0x4f, 0x51, 0x3d, 0x10, 0x7a, 0x1e, 0x86, - 0xa1, 0x96, 0xed, 0x3d, 0x9e, 0x72, 0xd2, 0x76, 0x2d, 0xec, 0xb0, 0x6d, 0x20, 0x6d, 0xbb, 0x88, - 0x7e, 0xcb, 0x34, 0x4b, 0xb5, 0x8e, 0x2a, 0x79, 0x15, 0xa4, 0x37, 0x88, 0x7a, 0xbb, 0x90, 0xf1, - 0xb5, 0xd9, 0x0f, 0x6e, 0xd5, 0x47, 0xcf, 0x40, 0xbc, 0x3e, 0x60, 0xfe, 0x3d, 0x0c, 0x43, 0xda, - 0xf6, 0xdf, 0xad, 0x44, 0x3f, 0xd0, 0xb2, 0x57, 0x19, 0xbb, 0x48, 0xb9, 0x5a, 0x12, 0x4f, 0xb8, - 0xbc, 0x11, 0xc5, 0xf5, 0x68, 0x99, 0xc5, 0xc4, 0xf2, 0x8f, 0xc3, 0x1d, 0xcb, 0x3f, 0xa9, 0xe4, - 0x64, 0x7c, 0xba, 0xa2, 0x52, 0xe4, 0x30, 0xe3, 0x6b, 0x6a, 0x20, 0x45, 0x4e, 0x65, 0x7c, 0x3e, - 0xd2, 0xb2, 0x7a, 0x5c, 0x85, 0x4d, 0xdc, 0xea, 0xb1, 0x1b, 0x27, 0x1f, 0x84, 0x10, 0x1b, 0xb6, - 0x9a, 0x01, 0x2c, 0xb2, 0xcb, 0x64, 0x7a, 0x9e, 0x4f, 0xaa, 0x61, 0xfc, 0x18, 0x1f, 0xa1, 0x0e, - 0x42, 0x84, 0x2d, 0x02, 0xd5, 0xde, 0xfe, 0xc1, 0x26, 0x46, 0x7a, 0x2a, 0xed, 0x17, 0x62, 0x76, - 0xc4, 0xa7, 0x2c, 0x5e, 0xea, 0xf9, 0xff, 0x79, 0x68, 0xe2, 0x41, 0xda, 0x14, 0xe2, 0xc5, 0x2d, - 0xb5, 0x74, 0x79, 0xfe, 0x7d, 0x25, 0x7a, 0xd8, 0x54, 0xff, 0x8a, 0x65, 0x53, 0xae, 0xfb, 0xb3, - 0x2e, 0xfd, 0x4e, 0x36, 0x39, 0xe3, 0xa5, 0x64, 0x85, 0x1c, 0xfc, 0x08, 0xaf, 0x64, 0x48, 0xc7, - 0x94, 0xed, 0xc7, 0xbf, 0x94, 0xae, 0xed, 0xf5, 0x51, 0x15, 0xd8, 0x74, 0x08, 0xf0, 0x7b, 0x5d, - 0x49, 0x60, 0x00, 0x78, 0x10, 0x42, 0x6c, 0xaf, 0x2b, 0xc1, 0x61, 0xb6, 0x48, 0x24, 0x3f, 0xe0, - 0x19, 0x2f, 0xda, 0xbd, 0x5e, 0xab, 0xfa, 0x08, 0xd1, 0xeb, 0x04, 0x6a, 0x83, 0x8d, 0xe7, 0xcd, - 0x2c, 0x8e, 0x1b, 0x01, 0x23, 0xad, 0xe5, 0x71, 0xb3, 0x1f, 0x6c, 0x77, 0x77, 0x8e, 0xcf, 0x33, - 0xbe, 0x10, 0xd7, 0x70, 0x77, 0xe7, 0x9a, 0xa8, 0x01, 0x62, 0x77, 0x87, 0x82, 0x76, 0x05, 0x73, - 0xfc, 0xbc, 0x49, 0xf8, 0x0d, 0x58, 0xc1, 0x5c, 0xe5, 0x4a, 0x4c, 0xac, 0x60, 0x08, 0xa6, 0x3d, - 0x9c, 0x44, 0xbf, 0xa2, 0x84, 0xbf, 0x2f, 0x92, 0x6c, 0x70, 0x17, 0x51, 0xaa, 0x04, 0xc6, 0xea, - 0x3d, 0x1a, 0x00, 0x25, 0xae, 0x7e, 0xdd, 0x65, 0x59, 0xcc, 0x53, 0xb4, 0xc4, 0x56, 0x1c, 0x2c, - 0xb1, 0x87, 0xd9, 0xd4, 0x41, 0x09, 0xab, 0xf8, 0x35, 0xba, 0x62, 0x45, 0x92, 0x4d, 0x07, 0x98, - 0xae, 0x23, 0x27, 0x52, 0x07, 0x8c, 0x03, 0x43, 0x58, 0x2b, 0xee, 0xe4, 0x79, 0x51, 0x85, 0x45, - 0x6c, 0x08, 0xfb, 0x48, 0x70, 0x08, 0xb7, 0x50, 0xdc, 0xdb, 0x1e, 0x8f, 0xd3, 0x24, 0x0b, 0x7a, - 0xd3, 0x48, 0x1f, 0x6f, 0x16, 0x05, 0x83, 0xf7, 0x88, 0xb3, 0x05, 0x6f, 0x6a, 0x86, 0xb5, 0x8c, - 0x0b, 0x04, 0x07, 0x2f, 0x00, 0xed, 0x3e, 0x4d, 0x89, 0x8f, 0xd9, 0x35, 0xaf, 0x1a, 0x98, 0x57, - 0xeb, 0xda, 0x00, 0xd3, 0xf7, 0x08, 0x62, 0x9f, 0x86, 0x93, 0xda, 0xd5, 0x3c, 0xfa, 0x48, 0xc9, - 0x4f, 0x59, 0x21, 0x93, 0x38, 0xc9, 0x59, 0xd6, 0xe4, 0xff, 0xd8, 0xbc, 0x6e, 0x51, 0xc6, 0xe5, - 0x56, 0x4f, 0x5a, 0xbb, 0xfd, 0xb7, 0x95, 0xe8, 0x3e, 0xf4, 0x7b, 0xca, 0x8b, 0x59, 0xa2, 0xb6, + 0x07, 0x41, 0x46, 0x1b, 0xfe, 0x3a, 0xfa, 0x6e, 0x2d, 0x39, 0xe3, 0xb1, 0x58, 0xf0, 0x62, 0x80, + 0x6a, 0x69, 0x21, 0xd1, 0xe4, 0x2d, 0x08, 0xda, 0xde, 0x15, 0xd9, 0x82, 0x17, 0x12, 0xb7, 0xad, + 0x85, 0x61, 0xdb, 0x16, 0xd2, 0xb6, 0xff, 0x76, 0x25, 0xfa, 0xfe, 0x4e, 0x1c, 0x8b, 0x79, 0x26, + 0x8f, 0x44, 0xcc, 0xd2, 0xa3, 0x24, 0xbb, 0x3e, 0xe1, 0x37, 0xbb, 0x57, 0x15, 0x9f, 0x4d, 0xf9, + 0xe0, 0xb9, 0xdf, 0xaa, 0x35, 0x3a, 0x34, 0xec, 0xd0, 0x85, 0x8d, 0xef, 0xcf, 0x6f, 0xa7, 0xa4, + 0xcb, 0xf2, 0x8f, 0x2b, 0xd1, 0x1d, 0x58, 0x96, 0x91, 0x48, 0x17, 0xdc, 0x96, 0xe6, 0x45, 0x87, + 0x61, 0x1f, 0x37, 0xe5, 0xf9, 0xe2, 0xb6, 0x6a, 0xba, 0x44, 0x69, 0xf4, 0xa1, 0x3b, 0x5c, 0x46, + 0xbc, 0x54, 0xd3, 0xe9, 0x31, 0x3d, 0x22, 0x34, 0x62, 0x3c, 0x3f, 0xe9, 0x83, 0x6a, 0x6f, 0x49, + 0x34, 0xd0, 0xde, 0x52, 0x51, 0x1a, 0x67, 0xeb, 0xa8, 0x05, 0x87, 0x30, 0xbe, 0x1e, 0xf7, 0x20, + 0xb5, 0xab, 0x3f, 0x8a, 0x7e, 0xed, 0xad, 0x28, 0xae, 0xcb, 0x9c, 0xc5, 0x5c, 0x4f, 0x85, 0x47, + 0xbe, 0x76, 0x23, 0x85, 0xb3, 0x61, 0xb5, 0x0b, 0x73, 0x06, 0x6d, 0x23, 0x7c, 0x9d, 0x73, 0x18, + 0x83, 0xac, 0x62, 0x25, 0xa4, 0x06, 0x2d, 0x84, 0xb4, 0xed, 0xeb, 0x68, 0x60, 0x6d, 0x5f, 0xfc, + 0x31, 0x8f, 0xe5, 0xce, 0x64, 0x02, 0x7b, 0xc5, 0xea, 0x2a, 0x62, 0xb8, 0x33, 0x99, 0x50, 0xbd, + 0x82, 0xa3, 0xda, 0xd9, 0x4d, 0xf4, 0x11, 0x70, 0x76, 0x94, 0x94, 0xca, 0xe1, 0x56, 0xd8, 0x8a, + 0xc6, 0x8c, 0xd3, 0x61, 0x5f, 0x5c, 0x3b, 0xfe, 0xf3, 0x95, 0xe8, 0x7b, 0x88, 0xe7, 0x33, 0x3e, + 0x13, 0x0b, 0x3e, 0x78, 0xda, 0x6d, 0xad, 0x26, 0x8d, 0xff, 0xcf, 0x6e, 0xa1, 0x81, 0x0c, 0x93, + 0x11, 0x4f, 0x79, 0x2c, 0xc9, 0x61, 0x52, 0x8b, 0x3b, 0x87, 0x89, 0xc1, 0x9c, 0x19, 0xd6, 0x08, + 0x0f, 0xb8, 0xdc, 0x9d, 0x17, 0x05, 0xcf, 0x24, 0xd9, 0x97, 0x16, 0xe9, 0xec, 0x4b, 0x0f, 0x45, + 0xea, 0x73, 0xc0, 0xe5, 0x4e, 0x9a, 0x92, 0xf5, 0xa9, 0xc5, 0x9d, 0xf5, 0x31, 0x98, 0xf6, 0x10, + 0x47, 0xbf, 0xee, 0xb4, 0x98, 0x3c, 0xcc, 0x2e, 0xc5, 0x80, 0x6e, 0x0b, 0x25, 0x37, 0x3e, 0xd6, + 0x3a, 0x39, 0xa4, 0x1a, 0xaf, 0xde, 0xe5, 0xa2, 0xa0, 0xbb, 0xa5, 0x16, 0x77, 0x56, 0xc3, 0x60, + 0xda, 0xc3, 0x1f, 0x46, 0x1f, 0xe8, 0x28, 0xd9, 0xac, 0x67, 0x0f, 0xd1, 0x10, 0x0a, 0x17, 0xb4, + 0x47, 0x1d, 0x94, 0x0d, 0x0e, 0x5a, 0xa6, 0x83, 0xcf, 0x03, 0x54, 0x0f, 0x84, 0x9e, 0x87, 0x61, + 0xa8, 0x65, 0x7b, 0x8f, 0xa7, 0x9c, 0xb4, 0x5d, 0x0b, 0x3b, 0x6c, 0x1b, 0x48, 0xdb, 0x2e, 0xa2, + 0xdf, 0x32, 0xcd, 0x52, 0xad, 0xa3, 0x4a, 0x5e, 0x05, 0xe9, 0x0d, 0xa2, 0xde, 0x2e, 0x64, 0x7c, + 0x6d, 0xf6, 0x83, 0x5b, 0xf5, 0xd1, 0x33, 0x10, 0xaf, 0x0f, 0x98, 0x7f, 0x0f, 0xc3, 0x90, 0xb6, + 0xfd, 0x77, 0x2b, 0xd1, 0x0f, 0xb4, 0xec, 0x55, 0xc6, 0x2e, 0x52, 0xae, 0x96, 0xc4, 0x13, 0x2e, + 0x6f, 0x44, 0x71, 0x3d, 0x5a, 0x66, 0x31, 0xb1, 0xfc, 0xe3, 0x70, 0xc7, 0xf2, 0x4f, 0x2a, 0x39, + 0x19, 0x9f, 0xae, 0xa8, 0x14, 0x39, 0xcc, 0xf8, 0x9a, 0x1a, 0x48, 0x91, 0x53, 0x19, 0x9f, 0x8f, + 0xb4, 0xac, 0x1e, 0x57, 0x61, 0x13, 0xb7, 0x7a, 0xec, 0xc6, 0xc9, 0xfb, 0x21, 0xc4, 0x86, 0xad, + 0x66, 0x00, 0x8b, 0xec, 0x32, 0x99, 0x9e, 0xe7, 0x93, 0x6a, 0x18, 0x3f, 0xc6, 0x47, 0xa8, 0x83, + 0x10, 0x61, 0x8b, 0x40, 0xb5, 0xb7, 0x7f, 0xb0, 0x89, 0x91, 0x9e, 0x4a, 0xfb, 0x85, 0x98, 0x1d, + 0xf1, 0x29, 0x8b, 0x97, 0x7a, 0xfe, 0x7f, 0x1e, 0x9a, 0x78, 0x90, 0x36, 0x85, 0x78, 0x71, 0x4b, + 0x2d, 0x5d, 0x9e, 0x7f, 0x5f, 0x89, 0x1e, 0x36, 0xd5, 0xbf, 0x62, 0xd9, 0x94, 0xeb, 0xfe, 0xac, + 0x4b, 0xbf, 0x93, 0x4d, 0xce, 0x78, 0x29, 0x59, 0x21, 0x07, 0x3f, 0xc2, 0x2b, 0x19, 0xd2, 0x31, + 0x65, 0xfb, 0xf1, 0x2f, 0xa5, 0x6b, 0x7b, 0x7d, 0x54, 0x05, 0x36, 0x1d, 0x02, 0xfc, 0x5e, 0x57, + 0x12, 0x18, 0x00, 0xee, 0x87, 0x10, 0xdb, 0xeb, 0x4a, 0x70, 0x98, 0x2d, 0x12, 0xc9, 0x0f, 0x78, + 0xc6, 0x8b, 0x76, 0xaf, 0xd7, 0xaa, 0x3e, 0x42, 0xf4, 0x3a, 0x81, 0xda, 0x60, 0xe3, 0x79, 0x33, + 0x8b, 0xe3, 0x46, 0xc0, 0x48, 0x6b, 0x79, 0xdc, 0xec, 0x07, 0xdb, 0xdd, 0x9d, 0xe3, 0xf3, 0x8c, + 0x2f, 0xc4, 0x35, 0xdc, 0xdd, 0xb9, 0x26, 0x6a, 0x80, 0xd8, 0xdd, 0xa1, 0xa0, 0x5d, 0xc1, 0x1c, + 0x3f, 0x6f, 0x12, 0x7e, 0x03, 0x56, 0x30, 0x57, 0xb9, 0x12, 0x13, 0x2b, 0x18, 0x82, 0x69, 0x0f, + 0x27, 0xd1, 0xaf, 0x28, 0xe1, 0xef, 0x8b, 0x24, 0x1b, 0xdc, 0x45, 0x94, 0x2a, 0x81, 0xb1, 0x7a, + 0x8f, 0x06, 0x40, 0x89, 0xab, 0xbf, 0xee, 0xb2, 0x2c, 0xe6, 0x29, 0x5a, 0x62, 0x2b, 0x0e, 0x96, + 0xd8, 0xc3, 0x6c, 0xea, 0xa0, 0x84, 0x55, 0xfc, 0x1a, 0x5d, 0xb1, 0x22, 0xc9, 0xa6, 0x03, 0x4c, + 0xd7, 0x91, 0x13, 0xa9, 0x03, 0xc6, 0x81, 0x21, 0xac, 0x15, 0x77, 0xf2, 0xbc, 0xa8, 0xc2, 0x22, + 0x36, 0x84, 0x7d, 0x24, 0x38, 0x84, 0x5b, 0x28, 0xee, 0x6d, 0x8f, 0xc7, 0x69, 0x92, 0x05, 0xbd, + 0x69, 0xa4, 0x8f, 0x37, 0x8b, 0x82, 0xc1, 0x7b, 0xc4, 0xd9, 0x82, 0x37, 0x35, 0xc3, 0x5a, 0xc6, + 0x05, 0x82, 0x83, 0x17, 0x80, 0x76, 0x9f, 0xa6, 0xc4, 0xc7, 0xec, 0x9a, 0x57, 0x0d, 0xcc, 0xab, + 0x75, 0x6d, 0x80, 0xe9, 0x7b, 0x04, 0xb1, 0x4f, 0xc3, 0x49, 0xed, 0x6a, 0x1e, 0x7d, 0xa4, 0xe4, + 0xa7, 0xac, 0x90, 0x49, 0x9c, 0xe4, 0x2c, 0x6b, 0xf2, 0x7f, 0x6c, 0x5e, 0xb7, 0x28, 0xe3, 0x72, + 0xab, 0x27, 0xad, 0xdd, 0xfe, 0xdb, 0x4a, 0xf4, 0x29, 0xf4, 0x7b, 0xca, 0x8b, 0x59, 0xa2, 0xb6, 0x91, 0x65, 0x1d, 0x84, 0x07, 0x5f, 0x86, 0x8d, 0xb6, 0x14, 0x4c, 0x69, 0x7e, 0x78, 0x7b, 0x45, 0x9b, 0x0c, 0x8d, 0x74, 0x6a, 0xfd, 0xba, 0x98, 0xb4, 0x8e, 0x59, 0x46, 0x4d, 0xbe, 0xac, 0x84, 0x44, 0x32, 0xd4, 0x82, 0xc0, 0x0c, 0x3f, 0xcf, 0xca, 0xc6, 0x3a, 0x36, 0xc3, 0xad, 0x38, 0x38, 0xc3, 0x3d, 0x4c, 0x7b, 0xf8, 0x83, 0x28, 0xaa, 0x37, 0x5b, 0x6a, 0x43, 0xec, 0xc7, 0x1c, 0xbd, - 0x0b, 0xf3, 0x76, 0xc3, 0xf7, 0x03, 0x84, 0x5d, 0xe8, 0xea, 0xdf, 0xd5, 0x3e, 0x7f, 0x80, 0x6a, - 0x28, 0x11, 0xb1, 0xd0, 0x01, 0x04, 0x16, 0x74, 0x74, 0x25, 0x6e, 0xf0, 0x82, 0x56, 0x92, 0x70, - 0x41, 0x35, 0x61, 0x4f, 0xde, 0x74, 0x41, 0xb1, 0x93, 0xb7, 0xa6, 0x18, 0xa1, 0x93, 0x37, 0xc8, - 0x68, 0xc3, 0x22, 0xfa, 0x4d, 0xd7, 0xf0, 0x4b, 0x21, 0xae, 0x67, 0xac, 0xb8, 0x1e, 0x3c, 0xa1, - 0x95, 0x1b, 0xc6, 0x38, 0xda, 0xe8, 0xc5, 0xda, 0xa0, 0xe6, 0x3a, 0xac, 0xd2, 0xa4, 0xf3, 0x22, - 0x05, 0x41, 0xcd, 0xb3, 0xa1, 0x11, 0x22, 0xa8, 0x11, 0xa8, 0x1d, 0x95, 0xae, 0xb7, 0x11, 0x87, - 0x7b, 0x3d, 0x4f, 0x7d, 0xc4, 0xa9, 0xbd, 0x1e, 0x82, 0xc1, 0x21, 0x74, 0x50, 0xb0, 0xfc, 0x0a, - 0x1f, 0x42, 0x4a, 0x14, 0x1e, 0x42, 0x0d, 0x02, 0xfb, 0x7b, 0xc4, 0x59, 0x11, 0x5f, 0xe1, 0xfd, - 0x5d, 0xcb, 0xc2, 0xfd, 0x6d, 0x18, 0xd8, 0xdf, 0xb5, 0xe0, 0x6d, 0x22, 0xaf, 0x8e, 0xb9, 0x64, - 0x78, 0x7f, 0xfb, 0x4c, 0xb8, 0xbf, 0x5b, 0xac, 0xcd, 0xc3, 0x5c, 0x87, 0xa3, 0xf9, 0x45, 0x19, - 0x17, 0xc9, 0x05, 0x1f, 0x04, 0xac, 0x18, 0x88, 0xc8, 0xc3, 0x48, 0x58, 0xfb, 0xfc, 0xf9, 0x4a, - 0x74, 0xb7, 0xe9, 0x76, 0x51, 0x96, 0x3a, 0xe6, 0xf9, 0xee, 0x5f, 0xe0, 0xfd, 0x4b, 0xe0, 0xc4, - 0x59, 0x68, 0x0f, 0x35, 0x67, 0x4d, 0xc0, 0x8b, 0x74, 0x9e, 0x95, 0xa6, 0x50, 0x5f, 0xf6, 0xb1, - 0xee, 0x28, 0x10, 0x6b, 0x42, 0x2f, 0x45, 0xbb, 0x1c, 0xeb, 0xfe, 0x69, 0x64, 0x87, 0x93, 0x12, - 0x2c, 0xc7, 0x4d, 0x7b, 0x3b, 0x04, 0xb1, 0x1c, 0xe3, 0x24, 0x1c, 0x0a, 0x07, 0x85, 0x98, 0xe7, - 0x65, 0xc7, 0x50, 0x00, 0x50, 0x78, 0x28, 0xb4, 0x61, 0xed, 0xf3, 0x5d, 0xf4, 0xdb, 0xee, 0xf0, - 0x73, 0x1b, 0x7b, 0x8b, 0x1e, 0x53, 0x58, 0x13, 0x0f, 0xfb, 0xe2, 0x36, 0x21, 0x6d, 0x3c, 0xcb, - 0x3d, 0x2e, 0x59, 0x92, 0x96, 0x83, 0x55, 0xdc, 0x46, 0x23, 0x27, 0x12, 0x52, 0x8c, 0x83, 0xf1, - 0x6d, 0x6f, 0x9e, 0xa7, 0x49, 0xdc, 0x3e, 0x89, 0xd6, 0xba, 0x46, 0x1c, 0x8e, 0x6f, 0x2e, 0x06, - 0xe3, 0x75, 0xb5, 0xe4, 0xab, 0xff, 0x8c, 0x97, 0x39, 0xc7, 0xe3, 0xb5, 0x87, 0x84, 0xe3, 0x35, - 0x44, 0x61, 0x7d, 0x46, 0x5c, 0x1e, 0xb1, 0xa5, 0x98, 0x13, 0xf1, 0xda, 0x88, 0xc3, 0xf5, 0x71, - 0x31, 0x9b, 0x13, 0x1a, 0x0f, 0x87, 0x99, 0xe4, 0x45, 0xc6, 0xd2, 0xfd, 0x94, 0x4d, 0xcb, 0x01, - 0x11, 0x63, 0x7c, 0x8a, 0xc8, 0x09, 0x69, 0x1a, 0x69, 0xc6, 0xc3, 0x72, 0x9f, 0x2d, 0x44, 0x91, - 0x48, 0xba, 0x19, 0x2d, 0xd2, 0xd9, 0x8c, 0x1e, 0x8a, 0x7a, 0xdb, 0x29, 0xe2, 0xab, 0x64, 0xc1, - 0x27, 0x01, 0x6f, 0x0d, 0xd2, 0xc3, 0x9b, 0x83, 0x22, 0x9d, 0x36, 0x12, 0xf3, 0x22, 0xe6, 0x64, - 0xa7, 0xd5, 0xe2, 0xce, 0x4e, 0x33, 0x98, 0xf6, 0xf0, 0x57, 0x2b, 0xd1, 0xef, 0xd4, 0x52, 0xf7, - 0x78, 0x78, 0x8f, 0x95, 0x57, 0x17, 0x82, 0x15, 0x93, 0xc1, 0x67, 0x98, 0x1d, 0x14, 0x35, 0xae, - 0x9f, 0xdd, 0x46, 0x05, 0x36, 0xeb, 0x51, 0x52, 0x3a, 0x33, 0x0e, 0x6d, 0x56, 0x0f, 0x09, 0x37, - 0x2b, 0x44, 0x61, 0x00, 0x51, 0xf2, 0xfa, 0x28, 0x66, 0x95, 0xd4, 0xf7, 0xcf, 0x63, 0xd6, 0x3a, - 0x39, 0x18, 0x1f, 0x2b, 0xa1, 0x3f, 0x5a, 0xb6, 0x28, 0x1b, 0xf8, 0x88, 0x19, 0xf6, 0xc5, 0x49, - 0xcf, 0x66, 0x56, 0x84, 0x3d, 0xb7, 0x66, 0xc6, 0xb0, 0x2f, 0x4e, 0x78, 0x76, 0xc2, 0x5a, 0xc8, - 0x33, 0x12, 0xda, 0x86, 0x7d, 0x71, 0x98, 0x7d, 0x69, 0xa6, 0x59, 0x17, 0x9e, 0x04, 0xec, 0xc0, - 0xb5, 0x61, 0xa3, 0x17, 0xab, 0x1d, 0xfe, 0xcd, 0x4a, 0xf4, 0x7d, 0xeb, 0xf1, 0x58, 0x4c, 0x92, - 0xcb, 0x65, 0x0d, 0xbd, 0x61, 0xe9, 0x9c, 0x97, 0x83, 0x67, 0x94, 0xb5, 0x36, 0x6b, 0x4a, 0xf0, - 0xfc, 0x56, 0x3a, 0x70, 0xee, 0xec, 0xe4, 0x79, 0xba, 0x1c, 0xf3, 0x59, 0x9e, 0x92, 0x73, 0xc7, - 0x43, 0xc2, 0x73, 0x07, 0xa2, 0x30, 0x2b, 0x1f, 0x8b, 0x2a, 0xe7, 0x47, 0xb3, 0x72, 0x25, 0x0a, - 0x67, 0xe5, 0x0d, 0x02, 0x73, 0xa5, 0xb1, 0xd8, 0x15, 0x69, 0xca, 0x63, 0xd9, 0x7e, 0xc4, 0x6c, - 0x34, 0x2d, 0x11, 0xce, 0x95, 0x00, 0x69, 0x4f, 0x63, 0x9a, 0x3d, 0x24, 0x2b, 0xf8, 0xcb, 0xe5, - 0x51, 0x92, 0x5d, 0x0f, 0xf0, 0xb4, 0xc0, 0x02, 0xc4, 0x69, 0x0c, 0x0a, 0xc2, 0xbd, 0xea, 0x79, - 0x36, 0x11, 0xf8, 0x5e, 0xb5, 0x92, 0x84, 0xf7, 0xaa, 0x9a, 0x80, 0x26, 0xcf, 0x38, 0x65, 0xb2, - 0x92, 0x84, 0x4d, 0x6a, 0x02, 0x0b, 0x85, 0xfa, 0xcc, 0x9e, 0x0c, 0x85, 0xe0, 0x94, 0x7e, 0xad, - 0x93, 0x83, 0x23, 0xb4, 0xd9, 0xb4, 0xee, 0x73, 0x19, 0x5f, 0xe1, 0x23, 0xd4, 0x43, 0xc2, 0x23, - 0x14, 0xa2, 0xb0, 0x4a, 0x63, 0x61, 0x36, 0xdd, 0xab, 0xf8, 0xf8, 0x68, 0x6d, 0xb8, 0xd7, 0x3a, - 0x39, 0xb8, 0x8d, 0x3c, 0x9c, 0xa9, 0x36, 0x43, 0x07, 0x79, 0x2d, 0x0b, 0x6f, 0x23, 0x0d, 0x03, - 0x4b, 0x5f, 0x0b, 0xaa, 0xe6, 0xc4, 0x4b, 0x6f, 0xe5, 0xe1, 0xd2, 0x7b, 0x9c, 0x76, 0xf2, 0x2f, - 0x66, 0x1b, 0x57, 0x4b, 0x4f, 0x44, 0x35, 0x47, 0xde, 0xb0, 0x34, 0x99, 0x30, 0xc9, 0xc7, 0xe2, - 0x9a, 0x67, 0xf8, 0x8e, 0x49, 0x97, 0xb6, 0xe6, 0x87, 0x9e, 0x42, 0x78, 0xc7, 0x14, 0x56, 0x84, - 0xe3, 0xa4, 0xa6, 0xcf, 0x4b, 0xbe, 0xcb, 0x4a, 0x22, 0x92, 0x79, 0x48, 0x78, 0x9c, 0x40, 0x14, - 0xe6, 0xab, 0xb5, 0xfc, 0xd5, 0xbb, 0x9c, 0x17, 0x09, 0xcf, 0x62, 0x8e, 0xe7, 0xab, 0x90, 0x0a, - 0xe7, 0xab, 0x08, 0x0d, 0xf7, 0x6a, 0x7b, 0x4c, 0xf2, 0x97, 0xcb, 0x71, 0x32, 0xe3, 0xa5, 0x64, - 0xb3, 0x1c, 0xdf, 0xab, 0x01, 0x28, 0xbc, 0x57, 0x6b, 0xc3, 0xad, 0xa3, 0x21, 0x13, 0x10, 0xdb, - 0x37, 0x53, 0x20, 0x11, 0xb8, 0x99, 0x42, 0xa0, 0xb0, 0x61, 0x2d, 0x80, 0x1e, 0x0e, 0xb7, 0xac, - 0x04, 0x0f, 0x87, 0x69, 0xba, 0x75, 0xe0, 0x66, 0x98, 0x51, 0x35, 0x35, 0x3b, 0x8a, 0x3e, 0x72, - 0xa7, 0xe8, 0x46, 0x2f, 0x16, 0x3f, 0xe1, 0x3b, 0xe3, 0x29, 0x53, 0xcb, 0x56, 0xe0, 0x18, 0xad, - 0x61, 0xfa, 0x9c, 0xf0, 0x39, 0xac, 0x76, 0xf8, 0x17, 0x2b, 0xd1, 0x27, 0x98, 0xc7, 0xd7, 0xb9, - 0xf2, 0xfb, 0xb4, 0xdb, 0x56, 0x4d, 0x12, 0x57, 0x6f, 0xc2, 0x1a, 0xba, 0x0c, 0x7f, 0x12, 0x7d, - 0xdc, 0x88, 0xec, 0xcd, 0x1c, 0x5d, 0x00, 0x3f, 0x69, 0x33, 0xe5, 0x87, 0x9c, 0x71, 0xbf, 0xdd, - 0x9b, 0xb7, 0xfb, 0x21, 0xbf, 0x5c, 0x25, 0xd8, 0x0f, 0x19, 0x1b, 0x5a, 0x4c, 0xec, 0x87, 0x10, - 0xcc, 0xce, 0x4e, 0xb7, 0x7a, 0x6f, 0x13, 0x79, 0xa5, 0xf2, 0x2d, 0x30, 0x3b, 0xbd, 0xb2, 0x1a, - 0x88, 0x98, 0x9d, 0x24, 0x0c, 0x33, 0x92, 0x06, 0xac, 0xe6, 0x26, 0x16, 0xcb, 0x8d, 0x21, 0x77, - 0x66, 0xae, 0x77, 0x83, 0x70, 0xbc, 0x36, 0x62, 0xbd, 0xf5, 0x79, 0x12, 0xb2, 0x00, 0xb6, 0x3f, - 0x1b, 0xbd, 0x58, 0xed, 0xf0, 0xcf, 0xa2, 0xef, 0xb5, 0x2a, 0xb6, 0xcf, 0x99, 0x9c, 0x17, 0x7c, - 0x32, 0xd8, 0xee, 0x28, 0x77, 0x03, 0x1a, 0xd7, 0x4f, 0xfb, 0x2b, 0xb4, 0x72, 0xf4, 0x86, 0xab, - 0x87, 0x95, 0x29, 0xc3, 0xb3, 0x90, 0x49, 0x9f, 0x0d, 0xe6, 0xe8, 0xb4, 0x4e, 0x6b, 0x9b, 0xed, - 0x8e, 0xae, 0x9d, 0x05, 0x4b, 0x52, 0xf5, 0x90, 0xee, 0xb3, 0x90, 0x51, 0x0f, 0x0d, 0x6e, 0xb3, - 0x49, 0x95, 0x56, 0x64, 0x56, 0x73, 0xdc, 0xd9, 0x9e, 0x6d, 0xd2, 0x91, 0x00, 0xd9, 0x9d, 0x6d, - 0xf5, 0xa4, 0xb5, 0x5b, 0xd9, 0x2c, 0x79, 0xd5, 0xcf, 0xee, 0x20, 0xc7, 0xbc, 0x6a, 0x55, 0x64, - 0xa4, 0x6f, 0xf5, 0xa4, 0xb5, 0xd7, 0x3f, 0x8d, 0x3e, 0x6e, 0x7b, 0xd5, 0x0b, 0xd1, 0x76, 0xa7, - 0x29, 0xb0, 0x16, 0x3d, 0xed, 0xaf, 0x60, 0xb7, 0x34, 0x5f, 0x25, 0xa5, 0x14, 0xc5, 0x72, 0x74, - 0x25, 0x6e, 0x9a, 0x1b, 0xef, 0xfe, 0x6c, 0xd5, 0xc0, 0xd0, 0x21, 0x88, 0x2d, 0x0d, 0x4e, 0xb6, - 0x5c, 0xd9, 0x9b, 0xf1, 0x25, 0xe1, 0xca, 0x21, 0x3a, 0x5c, 0xf9, 0xa4, 0x8d, 0x55, 0x4d, 0xad, - 0xec, 0x35, 0xfe, 0x35, 0xbc, 0xa8, 0xed, 0xab, 0xfc, 0xeb, 0xdd, 0xa0, 0xcd, 0x58, 0xb4, 0x78, - 0x2f, 0xb9, 0xbc, 0x34, 0x75, 0xc2, 0x4b, 0xea, 0x22, 0x44, 0xc6, 0x42, 0xa0, 0x36, 0xe9, 0xde, - 0x4f, 0x52, 0xae, 0x4e, 0xf4, 0x5f, 0x5f, 0x5e, 0xa6, 0x82, 0x4d, 0x40, 0xd2, 0x5d, 0x89, 0x87, - 0xae, 0x9c, 0x48, 0xba, 0x31, 0xce, 0x3e, 0x23, 0xae, 0xa4, 0x67, 0x3c, 0x16, 0x59, 0x9c, 0xa4, - 0xf0, 0x02, 0xa0, 0xd2, 0x34, 0x42, 0xe2, 0x19, 0x71, 0x0b, 0xb2, 0x0b, 0x63, 0x25, 0xaa, 0xa6, - 0x7d, 0x53, 0xfe, 0x47, 0x6d, 0x45, 0x47, 0x4c, 0x2c, 0x8c, 0x08, 0x66, 0xf7, 0x9e, 0x95, 0xf0, - 0x3c, 0x57, 0xc6, 0xef, 0xb5, 0xb5, 0x6a, 0x09, 0xb1, 0xf7, 0xf4, 0x09, 0xbb, 0x87, 0xaa, 0x7e, - 0xdf, 0x13, 0x37, 0x99, 0x32, 0xfa, 0xa0, 0xad, 0xd2, 0xc8, 0x88, 0x3d, 0x14, 0x64, 0xb4, 0xe1, - 0x9f, 0x44, 0xff, 0x5f, 0x19, 0x2e, 0x44, 0x3e, 0xb8, 0x83, 0x28, 0x14, 0xce, 0x5d, 0xbd, 0xbb, - 0xa4, 0xdc, 0x5e, 0x39, 0x35, 0x63, 0xe3, 0xbc, 0x64, 0x53, 0x3e, 0x78, 0x48, 0xf4, 0xb8, 0x92, - 0x12, 0x57, 0x4e, 0xdb, 0x94, 0x3f, 0x2a, 0x4e, 0xc4, 0x44, 0x5b, 0x47, 0x6a, 0x68, 0x84, 0xa1, - 0x51, 0xe1, 0x42, 0x36, 0x99, 0x39, 0x61, 0x8b, 0x64, 0x6a, 0x16, 0x9c, 0x3a, 0x6e, 0x95, 0x20, - 0x99, 0xb1, 0xcc, 0xd0, 0x81, 0x88, 0x64, 0x86, 0x84, 0xb5, 0xcf, 0x7f, 0x5e, 0x89, 0xee, 0x59, - 0xe6, 0xa0, 0x39, 0xad, 0x3b, 0xcc, 0x2e, 0x45, 0x95, 0xfa, 0x1c, 0x25, 0xd9, 0x75, 0x39, 0xf8, - 0x82, 0x32, 0x89, 0xf3, 0xa6, 0x28, 0x5f, 0xde, 0x5a, 0xcf, 0x66, 0xad, 0xcd, 0x51, 0x96, 0x7d, - 0x9e, 0x5d, 0x6b, 0x80, 0xac, 0xd5, 0x9c, 0x78, 0x41, 0x8e, 0xc8, 0x5a, 0x43, 0xbc, 0xed, 0x62, - 0xe3, 0x3c, 0x15, 0x19, 0xec, 0x62, 0x6b, 0xa1, 0x12, 0x12, 0x5d, 0xdc, 0x82, 0x6c, 0x3c, 0x6e, - 0x44, 0xf5, 0xa9, 0xcb, 0x4e, 0x9a, 0x82, 0x78, 0x6c, 0x54, 0x0d, 0x40, 0xc4, 0x63, 0x14, 0xd4, - 0x7e, 0xce, 0xa2, 0xef, 0x54, 0x4d, 0x7a, 0x5a, 0xf0, 0x45, 0xc2, 0xe1, 0xd5, 0x0b, 0x47, 0x42, - 0xcc, 0x7f, 0x9f, 0xb0, 0x33, 0xeb, 0x3c, 0x2b, 0xf3, 0x94, 0x95, 0x57, 0xfa, 0x61, 0xbc, 0x5f, - 0xe7, 0x46, 0x08, 0x1f, 0xc7, 0x3f, 0xea, 0xa0, 0x6c, 0x50, 0x6f, 0x64, 0x26, 0xc4, 0xac, 0xe2, - 0xaa, 0xad, 0x30, 0xb3, 0xd6, 0xc9, 0xd9, 0x13, 0xef, 0x03, 0x96, 0xa6, 0xbc, 0x58, 0x36, 0xb2, - 0x63, 0x96, 0x25, 0x97, 0xbc, 0x94, 0xe0, 0xc4, 0x5b, 0x53, 0x43, 0x88, 0x11, 0x27, 0xde, 0x01, - 0xdc, 0x66, 0xf3, 0xc0, 0xf3, 0x61, 0x36, 0xe1, 0xef, 0x40, 0x36, 0x0f, 0xed, 0x28, 0x86, 0xc8, - 0xe6, 0x29, 0xd6, 0x9e, 0xfc, 0xbe, 0x4c, 0x45, 0x7c, 0xad, 0x97, 0x00, 0xbf, 0x83, 0x95, 0x04, - 0xae, 0x01, 0x0f, 0x42, 0x88, 0x5d, 0x04, 0x94, 0xe0, 0x8c, 0xe7, 0x29, 0x8b, 0xe1, 0xfd, 0x9b, - 0x5a, 0x47, 0xcb, 0x88, 0x45, 0x00, 0x32, 0xa0, 0xb8, 0xfa, 0x5e, 0x0f, 0x56, 0x5c, 0x70, 0xad, - 0xe7, 0x41, 0x08, 0xb1, 0xcb, 0xa0, 0x12, 0x8c, 0xf2, 0x34, 0x91, 0x60, 0x1a, 0xd4, 0x1a, 0x4a, - 0x42, 0x4c, 0x03, 0x9f, 0x00, 0x26, 0x8f, 0x79, 0x31, 0xe5, 0xa8, 0x49, 0x25, 0x09, 0x9a, 0x6c, - 0x08, 0x7b, 0xc9, 0xb4, 0xae, 0xbb, 0xc8, 0x97, 0xe0, 0x92, 0xa9, 0xae, 0x96, 0xc8, 0x97, 0xc4, - 0x25, 0x53, 0x0f, 0x00, 0x45, 0x3c, 0x65, 0xa5, 0xc4, 0x8b, 0xa8, 0x24, 0xc1, 0x22, 0x36, 0x84, - 0x5d, 0xa3, 0xeb, 0x22, 0xce, 0x25, 0x58, 0xa3, 0x75, 0x01, 0x9c, 0x27, 0xd0, 0x77, 0x49, 0xb9, - 0x8d, 0x24, 0x75, 0xaf, 0x70, 0xb9, 0x9f, 0xf0, 0x74, 0x52, 0x82, 0x48, 0xa2, 0xdb, 0xbd, 0x91, - 0x12, 0x91, 0xa4, 0x4d, 0x81, 0xa1, 0xa4, 0xcf, 0xc7, 0xb1, 0xda, 0x81, 0xa3, 0xf1, 0x07, 0x21, - 0xc4, 0xc6, 0xa7, 0xa6, 0xd0, 0xbb, 0xac, 0x28, 0x92, 0x6a, 0xf1, 0x5f, 0xc5, 0x0b, 0xd4, 0xc8, - 0x89, 0xf8, 0x84, 0x71, 0x60, 0x7a, 0x35, 0x81, 0x1b, 0x2b, 0x18, 0x0c, 0xdd, 0x9f, 0x06, 0x19, - 0x9b, 0x71, 0x2a, 0x89, 0xf3, 0x08, 0x15, 0x6b, 0x4d, 0xe4, 0x09, 0xea, 0x6a, 0x17, 0xe6, 0xbc, - 0x04, 0x62, 0x5c, 0x1c, 0x8b, 0x05, 0x1f, 0x8b, 0x57, 0xef, 0x92, 0x52, 0x26, 0xd9, 0x54, 0xaf, - 0xdc, 0xcf, 0x09, 0x4b, 0x18, 0x4c, 0xbc, 0x04, 0xd2, 0xa9, 0x64, 0x13, 0x08, 0x50, 0x96, 0x13, - 0x7e, 0x83, 0x26, 0x10, 0xd0, 0xa2, 0xe1, 0x88, 0x04, 0x22, 0xc4, 0xdb, 0x73, 0x14, 0xe3, 0x5c, - 0xbf, 0x29, 0x3b, 0x16, 0x4d, 0x2e, 0x47, 0x59, 0x83, 0x20, 0xb1, 0x95, 0x0d, 0x2a, 0xd8, 0xfd, - 0xa5, 0xf1, 0x6f, 0xa7, 0xd8, 0x3a, 0x61, 0xa7, 0x3d, 0xcd, 0x1e, 0xf7, 0x20, 0x11, 0x57, 0xf6, - 0x1e, 0x00, 0xe5, 0xaa, 0x7d, 0x0d, 0xe0, 0x71, 0x0f, 0xd2, 0x39, 0x93, 0x71, 0xab, 0xf5, 0x92, - 0xc5, 0xd7, 0xd3, 0x42, 0xcc, 0xb3, 0xc9, 0xae, 0x48, 0x45, 0x01, 0xce, 0x64, 0xbc, 0x52, 0x03, - 0x94, 0x38, 0x93, 0xe9, 0x50, 0xb1, 0x19, 0x9c, 0x5b, 0x8a, 0x9d, 0x34, 0x99, 0xc2, 0x1d, 0xb5, - 0x67, 0x48, 0x01, 0x44, 0x06, 0x87, 0x82, 0xc8, 0x20, 0xaa, 0x77, 0xdc, 0x32, 0x89, 0x59, 0x5a, - 0xfb, 0xdb, 0xa6, 0xcd, 0x78, 0x60, 0xe7, 0x20, 0x42, 0x14, 0x90, 0x7a, 0x8e, 0xe7, 0x45, 0x76, - 0x98, 0x49, 0x41, 0xd6, 0xb3, 0x01, 0x3a, 0xeb, 0xe9, 0x80, 0x20, 0xac, 0x8e, 0xf9, 0xbb, 0xaa, - 0x34, 0xd5, 0x3f, 0x58, 0x58, 0xad, 0x7e, 0x1f, 0x6a, 0x79, 0x28, 0xac, 0x02, 0x0e, 0x54, 0x46, - 0x3b, 0xa9, 0x07, 0x4c, 0x40, 0xdb, 0x1f, 0x26, 0xeb, 0xdd, 0x20, 0xee, 0x67, 0x24, 0x97, 0x29, - 0x0f, 0xf9, 0x51, 0x40, 0x1f, 0x3f, 0x0d, 0x68, 0x8f, 0x5b, 0xbc, 0xfa, 0x5c, 0xf1, 0xf8, 0xba, - 0x75, 0xad, 0xc9, 0x2f, 0x68, 0x8d, 0x10, 0xc7, 0x2d, 0x04, 0x8a, 0x77, 0xd1, 0x61, 0x2c, 0xb2, - 0x50, 0x17, 0x55, 0xf2, 0x3e, 0x5d, 0xa4, 0x39, 0xbb, 0xf9, 0x35, 0x52, 0x3d, 0x32, 0xeb, 0x6e, - 0xda, 0x20, 0x2c, 0xb8, 0x10, 0xb1, 0xf9, 0x25, 0x61, 0x9b, 0x93, 0x43, 0x9f, 0xc7, 0xed, 0x3b, - 0xdf, 0x2d, 0x2b, 0xc7, 0xf4, 0x9d, 0x6f, 0x8a, 0xa5, 0x2b, 0x59, 0x8f, 0x91, 0x0e, 0x2b, 0xfe, - 0x38, 0xd9, 0xec, 0x07, 0xdb, 0x2d, 0x8f, 0xe7, 0x73, 0x37, 0xe5, 0xac, 0xa8, 0xbd, 0x6e, 0x05, - 0x0c, 0x59, 0x8c, 0xd8, 0xf2, 0x04, 0x70, 0x10, 0xc2, 0x3c, 0xcf, 0xbb, 0x22, 0x93, 0x3c, 0x93, - 0x58, 0x08, 0xf3, 0x8d, 0x69, 0x30, 0x14, 0xc2, 0x28, 0x05, 0x30, 0x6e, 0xd5, 0x79, 0x10, 0x97, - 0x27, 0x6c, 0x86, 0x66, 0x6c, 0xf5, 0x59, 0x4f, 0x2d, 0x0f, 0x8d, 0x5b, 0xc0, 0x39, 0x0f, 0xf9, - 0x5c, 0x2f, 0x63, 0x56, 0x4c, 0xcd, 0xe9, 0xc6, 0x64, 0xf0, 0x94, 0xb6, 0xe3, 0x93, 0xc4, 0x43, - 0xbe, 0xb0, 0x06, 0x08, 0x3b, 0x87, 0x33, 0x36, 0x35, 0x35, 0x45, 0x6a, 0xa0, 0xe4, 0xad, 0xaa, - 0xae, 0x77, 0x83, 0xc0, 0xcf, 0x9b, 0x64, 0xc2, 0x45, 0xc0, 0x8f, 0x92, 0xf7, 0xf1, 0x03, 0x41, - 0x90, 0xbd, 0x55, 0xf5, 0xae, 0x77, 0x74, 0x3b, 0xd9, 0x44, 0xef, 0x63, 0x87, 0x44, 0xf3, 0x00, - 0x2e, 0x94, 0xbd, 0x11, 0x3c, 0x98, 0xa3, 0xcd, 0x01, 0x6d, 0x68, 0x8e, 0x9a, 0xf3, 0xd7, 0x3e, - 0x73, 0x14, 0x83, 0xb5, 0xcf, 0x9f, 0xe9, 0x39, 0xba, 0xc7, 0x24, 0xab, 0xf2, 0xf6, 0x37, 0x09, - 0xbf, 0xd1, 0x1b, 0x61, 0xa4, 0xbe, 0x0d, 0x35, 0x54, 0xaf, 0x2a, 0x82, 0x5d, 0xf1, 0x76, 0x6f, - 0x3e, 0xe0, 0x5b, 0xef, 0x10, 0x3a, 0x7d, 0x83, 0xad, 0xc2, 0x76, 0x6f, 0x3e, 0xe0, 0x5b, 0xbf, - 0x03, 0xdd, 0xe9, 0x1b, 0xbc, 0x08, 0xbd, 0xdd, 0x9b, 0xd7, 0xbe, 0xff, 0xb2, 0x99, 0xb8, 0xae, - 0xf3, 0x2a, 0x0f, 0x8b, 0x65, 0xb2, 0xe0, 0x58, 0x3a, 0xe9, 0xdb, 0x33, 0x68, 0x28, 0x9d, 0xa4, - 0x55, 0x9c, 0x0f, 0xe7, 0x60, 0xa5, 0x38, 0x15, 0x65, 0xa2, 0x1e, 0xd2, 0x3f, 0xef, 0x61, 0xb4, - 0x81, 0x43, 0x9b, 0xa6, 0x90, 0x92, 0x7d, 0xdc, 0xe8, 0xa1, 0xf6, 0x16, 0xf3, 0x66, 0xc0, 0x5e, - 0xfb, 0x32, 0xf3, 0x56, 0x4f, 0xda, 0x3e, 0xf8, 0xf3, 0x18, 0xf7, 0x89, 0x63, 0xa8, 0x57, 0xd1, - 0x87, 0x8e, 0x4f, 0xfb, 0x2b, 0x68, 0xf7, 0x7f, 0xdd, 0xec, 0x2b, 0xa0, 0x7f, 0x3d, 0x09, 0x9e, - 0xf5, 0xb1, 0x08, 0x26, 0xc2, 0xf3, 0x5b, 0xe9, 0xe8, 0x82, 0xfc, 0x7d, 0xb3, 0x81, 0x6e, 0x50, - 0xf5, 0x2e, 0x87, 0x7a, 0xf7, 0x4f, 0xcf, 0x89, 0x50, 0xb7, 0x5a, 0x18, 0xce, 0x8c, 0x17, 0xb7, - 0xd4, 0x72, 0x3e, 0xa3, 0xe4, 0xc1, 0xfa, 0x9d, 0x43, 0xa7, 0x3c, 0x21, 0xcb, 0x0e, 0x0d, 0x0b, - 0xf4, 0xc5, 0x6d, 0xd5, 0xa8, 0xb9, 0xe2, 0xc0, 0xea, 0xab, 0x0c, 0xcf, 0x7b, 0x1a, 0xf6, 0xbe, - 0xd3, 0xf0, 0xf9, 0xed, 0x94, 0x74, 0x59, 0xfe, 0x63, 0x25, 0x7a, 0xe4, 0xb1, 0xf6, 0x79, 0x02, - 0x38, 0xf5, 0xf8, 0x71, 0xc0, 0x3e, 0xa5, 0x64, 0x0a, 0xf7, 0xbb, 0xbf, 0x9c, 0xb2, 0xfd, 0xe6, - 0x90, 0xa7, 0xb2, 0x9f, 0xa4, 0x92, 0x17, 0xed, 0x6f, 0x0e, 0xf9, 0x76, 0x6b, 0x6a, 0x48, 0x7f, - 0x73, 0x28, 0x80, 0x3b, 0xdf, 0x1c, 0x42, 0x3c, 0xa3, 0xdf, 0x1c, 0x42, 0xad, 0x05, 0xbf, 0x39, - 0x14, 0xd6, 0xa0, 0xc2, 0x7b, 0x53, 0x84, 0xfa, 0xdc, 0xba, 0x97, 0x45, 0xff, 0x18, 0xfb, 0xd9, - 0x6d, 0x54, 0x88, 0x05, 0xae, 0xe6, 0xd4, 0x3d, 0xb7, 0x1e, 0x6d, 0xea, 0xdd, 0x75, 0xdb, 0xee, - 0xcd, 0x6b, 0xdf, 0x3f, 0xd5, 0xbb, 0x1b, 0x13, 0xce, 0x45, 0xa1, 0xbe, 0x37, 0xb5, 0x11, 0x0a, - 0xcf, 0x95, 0x05, 0xb7, 0xe7, 0x37, 0xfb, 0xc1, 0x44, 0x75, 0x2b, 0x42, 0x77, 0xfa, 0xb0, 0xcb, - 0x10, 0xe8, 0xf2, 0xed, 0xde, 0x3c, 0xb1, 0x8c, 0xd4, 0xbe, 0xeb, 0xde, 0xee, 0x61, 0xcc, 0xef, - 0xeb, 0xa7, 0xfd, 0x15, 0xb4, 0xfb, 0x85, 0x4e, 0x1b, 0x5d, 0xf7, 0xaa, 0x9f, 0xb7, 0xba, 0x4c, - 0x8d, 0xbc, 0x6e, 0x1e, 0xf6, 0xc5, 0x43, 0x09, 0x84, 0xbb, 0x84, 0x76, 0x25, 0x10, 0xe8, 0x32, - 0xfa, 0xf9, 0xed, 0x94, 0x74, 0x59, 0xfe, 0x69, 0x25, 0xba, 0x4b, 0x96, 0x45, 0x8f, 0x83, 0x2f, - 0xfa, 0x5a, 0x06, 0xe3, 0xe1, 0xcb, 0x5b, 0xeb, 0xe9, 0x42, 0xfd, 0xeb, 0x4a, 0x74, 0x2f, 0x50, - 0xa8, 0x7a, 0x80, 0xdc, 0xc2, 0xba, 0x3f, 0x50, 0x7e, 0x78, 0x7b, 0x45, 0x6a, 0xb9, 0x77, 0xf1, - 0x51, 0xfb, 0x63, 0x3c, 0x01, 0xdb, 0x23, 0xfa, 0x63, 0x3c, 0xdd, 0x5a, 0xf0, 0x90, 0x87, 0x5d, - 0x34, 0x9b, 0x2e, 0xf4, 0x90, 0x47, 0xdd, 0x50, 0x03, 0x7b, 0x8e, 0xb5, 0x4e, 0x0e, 0x73, 0xf2, - 0xea, 0x5d, 0xce, 0xb2, 0x09, 0xed, 0xa4, 0x96, 0x77, 0x3b, 0x31, 0x1c, 0x3c, 0x1c, 0xab, 0xa4, - 0x67, 0xa2, 0xd9, 0x48, 0x3d, 0xa6, 0xf4, 0x0d, 0x12, 0x3c, 0x1c, 0x6b, 0xa1, 0x84, 0x37, 0x9d, - 0x35, 0x86, 0xbc, 0x81, 0x64, 0xf1, 0x49, 0x1f, 0x14, 0xa4, 0xe8, 0xc6, 0x9b, 0x39, 0x73, 0xdf, - 0x0c, 0x59, 0x69, 0x9d, 0xbb, 0x6f, 0xf5, 0xa4, 0x09, 0xb7, 0x23, 0x2e, 0xbf, 0xe2, 0x6c, 0xc2, - 0x8b, 0xa0, 0x5b, 0x43, 0xf5, 0x72, 0xeb, 0xd2, 0x98, 0xdb, 0x5d, 0x91, 0xce, 0x67, 0x99, 0xee, - 0x4c, 0xd2, 0xad, 0x4b, 0x75, 0xbb, 0x05, 0x34, 0x3c, 0x16, 0xb4, 0x6e, 0x55, 0x7a, 0xf9, 0x24, - 0x6c, 0xc6, 0xcb, 0x2a, 0x37, 0x7a, 0xb1, 0x74, 0x3d, 0xf5, 0x30, 0xea, 0xa8, 0x27, 0x18, 0x49, - 0x5b, 0x3d, 0x69, 0x78, 0x3e, 0xe7, 0xb8, 0x35, 0xe3, 0x69, 0xbb, 0xc3, 0x56, 0x6b, 0x48, 0x3d, - 0xed, 0xaf, 0x00, 0x4f, 0x43, 0xf5, 0xa8, 0x3a, 0x4a, 0x4a, 0xb9, 0x9f, 0xa4, 0xe9, 0x60, 0x23, - 0x30, 0x4c, 0x1a, 0x28, 0x78, 0x1a, 0x8a, 0xc0, 0xc4, 0x48, 0x6e, 0x4e, 0x0f, 0xb3, 0x41, 0x97, - 0x1d, 0x45, 0xf5, 0x1a, 0xc9, 0x2e, 0x0d, 0x4e, 0xb4, 0x9c, 0xa6, 0x36, 0xb5, 0x1d, 0x86, 0x1b, - 0xae, 0x55, 0xe1, 0xed, 0xde, 0x3c, 0x78, 0xdc, 0xae, 0x28, 0xb5, 0xb2, 0x3c, 0xa4, 0x4c, 0x78, - 0x2b, 0xc9, 0xa3, 0x0e, 0x0a, 0x9c, 0x0a, 0xd6, 0xd3, 0xe8, 0x6d, 0x32, 0x99, 0x72, 0x89, 0x3e, - 0x29, 0x72, 0x81, 0xe0, 0x93, 0x22, 0x00, 0x82, 0xae, 0xab, 0x7f, 0x37, 0xc7, 0xa1, 0x87, 0x13, - 0xac, 0xeb, 0xb4, 0xb2, 0x43, 0x85, 0xba, 0x0e, 0xa5, 0x41, 0x34, 0x30, 0x6e, 0xf5, 0xeb, 0xf8, - 0x4f, 0x42, 0x66, 0xc0, 0x3b, 0xf9, 0x1b, 0xbd, 0x58, 0xb0, 0xa2, 0x58, 0x87, 0xc9, 0x2c, 0x91, - 0xd8, 0x8a, 0xe2, 0xd8, 0xa8, 0x90, 0xd0, 0x8a, 0xd2, 0x46, 0xa9, 0xea, 0x55, 0x39, 0xc2, 0xe1, - 0x24, 0x5c, 0xbd, 0x9a, 0xe9, 0x57, 0x3d, 0xc3, 0xb6, 0x1e, 0x6c, 0x66, 0x66, 0xc8, 0xc8, 0x2b, - 0xbd, 0x59, 0x46, 0xc6, 0xb6, 0x7a, 0x4d, 0x13, 0x82, 0xa1, 0xa8, 0x43, 0x29, 0xc0, 0x03, 0xfb, - 0x8a, 0x6b, 0x9e, 0xbd, 0xe6, 0x39, 0x67, 0x05, 0xcb, 0x62, 0x74, 0x73, 0xaa, 0x0c, 0xb6, 0xc8, - 0xd0, 0xe6, 0x94, 0xd4, 0x00, 0x8f, 0xcd, 0xfd, 0x17, 0x2c, 0x91, 0xa9, 0x60, 0xde, 0x64, 0xf4, - 0xdf, 0xaf, 0x7c, 0xdc, 0x83, 0x84, 0x8f, 0xcd, 0x1b, 0xc0, 0x1c, 0x7c, 0xd7, 0x4e, 0x3f, 0x0b, - 0x98, 0xf2, 0xd1, 0xd0, 0x46, 0x98, 0x56, 0x01, 0x83, 0xda, 0x24, 0xb8, 0x5c, 0xfe, 0x84, 0x2f, - 0xb1, 0x41, 0x6d, 0xf3, 0x53, 0x85, 0x84, 0x06, 0x75, 0x1b, 0x05, 0x79, 0xa6, 0xbb, 0x0f, 0x5a, - 0x0d, 0xe8, 0xbb, 0x5b, 0x9f, 0xb5, 0x4e, 0x0e, 0xcc, 0x9c, 0xbd, 0x64, 0xe1, 0x3d, 0x27, 0x40, - 0x0a, 0xba, 0x97, 0x2c, 0xf0, 0xc7, 0x04, 0x1b, 0xbd, 0x58, 0xf8, 0x48, 0x9e, 0x49, 0xfe, 0xae, - 0x79, 0x56, 0x8e, 0x14, 0x57, 0xc9, 0x5b, 0x0f, 0xcb, 0xd7, 0xbb, 0x41, 0x7b, 0x01, 0xf6, 0xb4, - 0x10, 0x31, 0x2f, 0x4b, 0xfd, 0x85, 0x42, 0xff, 0x86, 0x91, 0x96, 0x0d, 0xc1, 0xf7, 0x09, 0x1f, - 0x86, 0x21, 0xdb, 0x33, 0x5a, 0x64, 0xbf, 0x7a, 0xb3, 0x8a, 0x6a, 0xb6, 0x3f, 0x78, 0xb3, 0xd6, - 0xc9, 0xd9, 0xe9, 0xa5, 0xa5, 0xee, 0x67, 0x6e, 0xd6, 0x51, 0x75, 0xec, 0x0b, 0x37, 0x8f, 0x7b, - 0x90, 0xda, 0xd5, 0x57, 0xd1, 0xfb, 0x47, 0x62, 0x3a, 0xe2, 0xd9, 0x64, 0xf0, 0x03, 0xff, 0x0a, - 0xad, 0x98, 0x0e, 0xab, 0x9f, 0x8d, 0xd1, 0x3b, 0x94, 0xd8, 0x5e, 0x02, 0xdc, 0xe3, 0x17, 0xf3, - 0xe9, 0x48, 0x32, 0x09, 0x2e, 0x01, 0xaa, 0xdf, 0x87, 0x95, 0x80, 0xb8, 0x04, 0xe8, 0x01, 0xc0, - 0xde, 0xb8, 0xe0, 0x1c, 0xb5, 0x57, 0x09, 0x82, 0xf6, 0x34, 0x60, 0xb3, 0x08, 0x63, 0xaf, 0x4a, - 0xd4, 0xe1, 0xa5, 0x3d, 0xab, 0xa3, 0xa4, 0x44, 0x16, 0xd1, 0xa6, 0xec, 0xe0, 0xae, 0xab, 0xaf, - 0xbe, 0x3a, 0x32, 0x9f, 0xcd, 0x58, 0xb1, 0x04, 0x83, 0x5b, 0xd7, 0xd2, 0x01, 0x88, 0xc1, 0x8d, - 0x82, 0x76, 0xd6, 0x36, 0xcd, 0x1c, 0x5f, 0x1f, 0x88, 0x42, 0xcc, 0x65, 0x92, 0x71, 0xf8, 0xe5, - 0x09, 0xd3, 0xa0, 0x2e, 0x43, 0xcc, 0x5a, 0x8a, 0xb5, 0x59, 0xae, 0x22, 0xea, 0xfb, 0x84, 0xea, - 0xbb, 0xc5, 0xa5, 0x14, 0x05, 0x7c, 0x9e, 0x58, 0x5b, 0x81, 0x10, 0x91, 0xe5, 0x92, 0x30, 0xe8, - 0xfb, 0xd3, 0x24, 0x9b, 0xa2, 0x7d, 0x7f, 0xea, 0x7e, 0xf5, 0xf3, 0x1e, 0x0d, 0xd8, 0x09, 0x55, - 0x37, 0x5a, 0x3d, 0x01, 0xf4, 0xbb, 0x9c, 0x68, 0xa3, 0xbb, 0x04, 0x31, 0xa1, 0x70, 0x12, 0xb8, - 0x7a, 0x9d, 0xf3, 0x8c, 0x4f, 0x9a, 0x5b, 0x73, 0x98, 0x2b, 0x8f, 0x08, 0xba, 0x82, 0xa4, 0x8d, - 0x45, 0x4a, 0x7e, 0x36, 0xcf, 0x4e, 0x0b, 0x71, 0x99, 0xa4, 0xbc, 0x00, 0xb1, 0xa8, 0x56, 0x77, - 0xe4, 0x44, 0x2c, 0xc2, 0x38, 0x7b, 0xfd, 0x42, 0x49, 0xbd, 0x8f, 0x6f, 0x8f, 0x0b, 0x16, 0xc3, - 0xeb, 0x17, 0xb5, 0x8d, 0x36, 0x46, 0x9c, 0x0c, 0x06, 0x70, 0x27, 0xd1, 0xa9, 0x5d, 0x67, 0x4b, - 0x35, 0x3e, 0xf4, 0xbb, 0x84, 0xea, 0x5b, 0x98, 0x25, 0x48, 0x74, 0xb4, 0x39, 0x8c, 0x24, 0x12, - 0x9d, 0xb0, 0x86, 0x5d, 0x4a, 0x14, 0x77, 0xa2, 0xaf, 0x15, 0x81, 0xa5, 0xa4, 0xb6, 0xd1, 0x08, - 0x89, 0xa5, 0xa4, 0x05, 0x81, 0x80, 0xd4, 0x4c, 0x83, 0x29, 0x1a, 0x90, 0x8c, 0x34, 0x18, 0x90, - 0x5c, 0xca, 0x06, 0x8a, 0xc3, 0x2c, 0x91, 0x09, 0x4b, 0x47, 0x5c, 0x9e, 0xb2, 0x82, 0xcd, 0xb8, - 0xe4, 0x05, 0x0c, 0x14, 0x1a, 0x19, 0x7a, 0x0c, 0x11, 0x28, 0x28, 0x56, 0x3b, 0xfc, 0xbd, 0xe8, - 0xc3, 0x6a, 0xdd, 0xe7, 0x99, 0xfe, 0x33, 0x1b, 0xaf, 0xd4, 0xdf, 0xe7, 0x19, 0x7c, 0x64, 0x6c, - 0x8c, 0x64, 0xc1, 0xd9, 0xac, 0xb1, 0xfd, 0x81, 0xf9, 0x5d, 0x81, 0x4f, 0x57, 0xaa, 0xf1, 0x7c, - 0x22, 0x64, 0x72, 0x59, 0x6d, 0xb3, 0xf5, 0x1b, 0x44, 0x60, 0x3c, 0xbb, 0xe2, 0x61, 0xe0, 0x5b, - 0x14, 0x18, 0x67, 0xe3, 0xb4, 0x2b, 0x3d, 0xe3, 0x79, 0x0a, 0xe3, 0xb4, 0xa7, 0xad, 0x00, 0x22, - 0x4e, 0xa3, 0xa0, 0x9d, 0x9c, 0xae, 0x78, 0xcc, 0xc3, 0x95, 0x19, 0xf3, 0x7e, 0x95, 0x19, 0x7b, - 0x2f, 0x65, 0xa4, 0xd1, 0x87, 0xc7, 0x7c, 0x76, 0xc1, 0x8b, 0xf2, 0x2a, 0xc9, 0x0f, 0xaa, 0x84, - 0x8b, 0xc9, 0x39, 0x7c, 0x6d, 0xd1, 0x12, 0x43, 0x83, 0x10, 0x59, 0x29, 0x81, 0xda, 0x95, 0xc0, - 0x02, 0x87, 0xe5, 0x09, 0x9b, 0x71, 0xf5, 0x65, 0x0d, 0xb0, 0x12, 0x38, 0x46, 0x1c, 0x88, 0x58, - 0x09, 0x48, 0xd8, 0x79, 0xbf, 0xcb, 0x32, 0x67, 0x7c, 0x5a, 0x8d, 0xb0, 0xe2, 0x94, 0x2d, 0x67, - 0x3c, 0x93, 0xda, 0x24, 0x38, 0x93, 0x77, 0x4c, 0xe2, 0x3c, 0x71, 0x26, 0xdf, 0x47, 0xcf, 0x09, - 0x4d, 0x5e, 0xc3, 0x9f, 0x8a, 0x42, 0xd6, 0x7f, 0x44, 0xe7, 0xbc, 0x48, 0x41, 0x68, 0xf2, 0x1b, - 0xd5, 0x23, 0x89, 0xd0, 0x14, 0xd6, 0x70, 0xbe, 0x3e, 0xef, 0x95, 0xe1, 0x0d, 0x2f, 0xcc, 0x38, - 0x79, 0x35, 0x63, 0x49, 0xaa, 0x47, 0xc3, 0x8f, 0x02, 0xb6, 0x09, 0x1d, 0xe2, 0xeb, 0xf3, 0x7d, - 0x75, 0x9d, 0xef, 0xf5, 0x87, 0x4b, 0x08, 0x1e, 0x11, 0x74, 0xd8, 0x27, 0x1e, 0x11, 0x74, 0x6b, - 0xd9, 0x9d, 0xbb, 0x65, 0x15, 0xb7, 0x54, 0xc4, 0xae, 0x98, 0xc0, 0xf3, 0x42, 0xc7, 0x26, 0x00, - 0x89, 0x9d, 0x7b, 0x50, 0xc1, 0xa6, 0x06, 0x16, 0xdb, 0x4f, 0x32, 0x96, 0x26, 0x3f, 0x83, 0x69, - 0xbd, 0x63, 0xa7, 0x21, 0x88, 0xd4, 0x00, 0x27, 0x31, 0x57, 0x07, 0x5c, 0x8e, 0x93, 0x2a, 0xf4, - 0xaf, 0x07, 0xda, 0x4d, 0x11, 0xdd, 0xae, 0x1c, 0xd2, 0xf9, 0x46, 0x2b, 0x6c, 0xd6, 0x9d, 0x3c, - 0x1f, 0x55, 0xab, 0xea, 0x19, 0x8f, 0x79, 0x92, 0xcb, 0xc1, 0x8b, 0x70, 0x5b, 0x01, 0x9c, 0xb8, - 0x68, 0xd1, 0x43, 0xcd, 0x79, 0x7c, 0x5f, 0xc5, 0x92, 0x51, 0xfd, 0xd7, 0xe5, 0xce, 0x4b, 0x5e, - 0xe8, 0x44, 0xe3, 0x80, 0x4b, 0x30, 0x3b, 0x1d, 0x6e, 0xe8, 0x80, 0x55, 0x45, 0x89, 0xd9, 0x19, - 0xd6, 0xb0, 0x87, 0x7d, 0x0e, 0x77, 0xc6, 0x4b, 0x91, 0x2e, 0xb8, 0xba, 0x6f, 0xb8, 0x49, 0x1a, - 0x73, 0x28, 0xe2, 0xb0, 0x8f, 0xa6, 0x6d, 0xb6, 0xd6, 0x76, 0xbb, 0x93, 0x2d, 0x0f, 0xe1, 0x95, - 0x09, 0xc4, 0x92, 0xc2, 0x88, 0x6c, 0x2d, 0x80, 0x3b, 0x87, 0xe1, 0x85, 0x60, 0x93, 0x98, 0x95, - 0xf2, 0x94, 0x2d, 0x53, 0xc1, 0x26, 0x6a, 0x5d, 0x87, 0x87, 0xe1, 0x0d, 0x33, 0x74, 0x21, 0xea, - 0x30, 0x9c, 0x82, 0xdd, 0xec, 0x4c, 0xfd, 0xd1, 0x3c, 0x7d, 0x97, 0x13, 0x66, 0x67, 0xaa, 0xbc, - 0xf0, 0x1e, 0xe7, 0xc3, 0x30, 0x64, 0xdf, 0x41, 0xab, 0x45, 0x2a, 0x0d, 0xb9, 0x87, 0xe9, 0x78, - 0x09, 0xc8, 0xfd, 0x00, 0x61, 0xbf, 0x4b, 0x51, 0xff, 0xde, 0xfc, 0xdd, 0x17, 0xa9, 0xbf, 0x64, - 0xbd, 0x89, 0xe9, 0xba, 0xd0, 0xd0, 0xfd, 0xc0, 0xdd, 0x56, 0x4f, 0xda, 0xa6, 0x99, 0xbb, 0x57, - 0x4c, 0xee, 0x4c, 0x26, 0xc7, 0xbc, 0x44, 0x5e, 0x28, 0xaf, 0x84, 0x43, 0x2b, 0x25, 0xd2, 0xcc, - 0x36, 0x65, 0x07, 0x7a, 0x25, 0x7b, 0x35, 0x49, 0xa4, 0x96, 0x35, 0x37, 0xa4, 0x37, 0xdb, 0x06, - 0xda, 0x14, 0x51, 0x2b, 0x9a, 0xb6, 0xb1, 0xbc, 0x62, 0xc6, 0x62, 0x3a, 0x4d, 0xb9, 0x86, 0xce, - 0x38, 0xab, 0x3f, 0xe4, 0xb7, 0xdd, 0xb6, 0x85, 0x82, 0x44, 0x2c, 0x0f, 0x2a, 0xd8, 0x34, 0xb2, - 0xc2, 0xea, 0x47, 0x52, 0x4d, 0xc3, 0xae, 0xb5, 0xcd, 0x78, 0x00, 0x91, 0x46, 0xa2, 0xa0, 0x7d, - 0xef, 0xad, 0x12, 0x1f, 0xf0, 0xa6, 0x25, 0xe0, 0x27, 0x88, 0x94, 0xb2, 0x23, 0x26, 0xde, 0x7b, - 0x43, 0x30, 0xbb, 0x4f, 0x00, 0x1e, 0x5e, 0x2e, 0x0f, 0x27, 0x70, 0x9f, 0x00, 0xf5, 0x15, 0x43, - 0xec, 0x13, 0x28, 0xd6, 0xef, 0x3a, 0x73, 0xee, 0x75, 0xc4, 0x4a, 0x5b, 0x39, 0xa4, 0xeb, 0x50, - 0x30, 0xd4, 0x75, 0x94, 0x82, 0xdf, 0xa4, 0xee, 0xd1, 0x1a, 0xd2, 0xa4, 0xd8, 0xb9, 0xda, 0x6a, - 0x17, 0x66, 0xe3, 0x92, 0xd9, 0x4f, 0xaa, 0x2b, 0x4b, 0xf8, 0x17, 0xfc, 0x6b, 0x21, 0x11, 0x97, - 0x5a, 0x50, 0x6d, 0xfb, 0xe5, 0xfd, 0xff, 0xfc, 0xe6, 0xce, 0xca, 0x2f, 0xbe, 0xb9, 0xb3, 0xf2, - 0xdf, 0xdf, 0xdc, 0x59, 0xf9, 0xf9, 0xb7, 0x77, 0xde, 0xfb, 0xc5, 0xb7, 0x77, 0xde, 0xfb, 0xaf, - 0x6f, 0xef, 0xbc, 0xf7, 0xf5, 0xfb, 0xfa, 0x8f, 0xa9, 0x5e, 0xfc, 0x3f, 0xf5, 0x27, 0x51, 0x9f, - 0xff, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x39, 0xd6, 0xda, 0x85, 0x70, 0x75, 0x00, 0x00, + 0x0b, 0xf3, 0x76, 0xc3, 0x9f, 0x06, 0x08, 0xbb, 0xd0, 0xd5, 0x7f, 0x57, 0xfb, 0xfc, 0x01, 0xaa, + 0xa1, 0x44, 0xc4, 0x42, 0x07, 0x10, 0x58, 0xd0, 0xd1, 0x95, 0xb8, 0xc1, 0x0b, 0x5a, 0x49, 0xc2, + 0x05, 0xd5, 0x84, 0x3d, 0x79, 0xd3, 0x05, 0xc5, 0x4e, 0xde, 0x9a, 0x62, 0x84, 0x4e, 0xde, 0x20, + 0xa3, 0x0d, 0x8b, 0xe8, 0x37, 0x5d, 0xc3, 0x2f, 0x85, 0xb8, 0x9e, 0xb1, 0xe2, 0x7a, 0xf0, 0x84, + 0x56, 0x6e, 0x18, 0xe3, 0x68, 0xa3, 0x17, 0x6b, 0x83, 0x9a, 0xeb, 0xb0, 0x4a, 0x93, 0xce, 0x8b, + 0x14, 0x04, 0x35, 0xcf, 0x86, 0x46, 0x88, 0xa0, 0x46, 0xa0, 0x76, 0x54, 0xba, 0xde, 0x46, 0x1c, + 0xee, 0xf5, 0x3c, 0xf5, 0x11, 0xa7, 0xf6, 0x7a, 0x08, 0x06, 0x87, 0xd0, 0x41, 0xc1, 0xf2, 0x2b, + 0x7c, 0x08, 0x29, 0x51, 0x78, 0x08, 0x35, 0x08, 0xec, 0xef, 0x11, 0x67, 0x45, 0x7c, 0x85, 0xf7, + 0x77, 0x2d, 0x0b, 0xf7, 0xb7, 0x61, 0x60, 0x7f, 0xd7, 0x82, 0xb7, 0x89, 0xbc, 0x3a, 0xe6, 0x92, + 0xe1, 0xfd, 0xed, 0x33, 0xe1, 0xfe, 0x6e, 0xb1, 0x36, 0x0f, 0x73, 0x1d, 0x8e, 0xe6, 0x17, 0x65, + 0x5c, 0x24, 0x17, 0x7c, 0x10, 0xb0, 0x62, 0x20, 0x22, 0x0f, 0x23, 0x61, 0xed, 0xf3, 0xe7, 0x2b, + 0xd1, 0xdd, 0xa6, 0xdb, 0x45, 0x59, 0xea, 0x98, 0xe7, 0xbb, 0x7f, 0x81, 0xf7, 0x2f, 0x81, 0x13, + 0x67, 0xa1, 0x3d, 0xd4, 0x9c, 0x35, 0x01, 0x2f, 0xd2, 0x79, 0x56, 0x9a, 0x42, 0x7d, 0xd9, 0xc7, + 0xba, 0xa3, 0x40, 0xac, 0x09, 0xbd, 0x14, 0xed, 0x72, 0xac, 0xfb, 0xa7, 0x91, 0x1d, 0x4e, 0x4a, + 0xb0, 0x1c, 0x37, 0xed, 0xed, 0x10, 0xc4, 0x72, 0x8c, 0x93, 0x70, 0x28, 0x1c, 0x14, 0x62, 0x9e, + 0x97, 0x1d, 0x43, 0x01, 0x40, 0xe1, 0xa1, 0xd0, 0x86, 0xb5, 0xcf, 0x77, 0xd1, 0x6f, 0xbb, 0xc3, + 0xcf, 0x6d, 0xec, 0x2d, 0x7a, 0x4c, 0x61, 0x4d, 0x3c, 0xec, 0x8b, 0xdb, 0x84, 0xb4, 0xf1, 0x2c, + 0xf7, 0xb8, 0x64, 0x49, 0x5a, 0x0e, 0x56, 0x71, 0x1b, 0x8d, 0x9c, 0x48, 0x48, 0x31, 0x0e, 0xc6, + 0xb7, 0xbd, 0x79, 0x9e, 0x26, 0x71, 0xfb, 0x24, 0x5a, 0xeb, 0x1a, 0x71, 0x38, 0xbe, 0xb9, 0x18, + 0x8c, 0xd7, 0xd5, 0x92, 0xaf, 0xfe, 0x33, 0x5e, 0xe6, 0x1c, 0x8f, 0xd7, 0x1e, 0x12, 0x8e, 0xd7, + 0x10, 0x85, 0xf5, 0x19, 0x71, 0x79, 0xc4, 0x96, 0x62, 0x4e, 0xc4, 0x6b, 0x23, 0x0e, 0xd7, 0xc7, + 0xc5, 0x6c, 0x4e, 0x68, 0x3c, 0x1c, 0x66, 0x92, 0x17, 0x19, 0x4b, 0xf7, 0x53, 0x36, 0x2d, 0x07, + 0x44, 0x8c, 0xf1, 0x29, 0x22, 0x27, 0xa4, 0x69, 0xa4, 0x19, 0x0f, 0xcb, 0x7d, 0xb6, 0x10, 0x45, + 0x22, 0xe9, 0x66, 0xb4, 0x48, 0x67, 0x33, 0x7a, 0x28, 0xea, 0x6d, 0xa7, 0x88, 0xaf, 0x92, 0x05, + 0x9f, 0x04, 0xbc, 0x35, 0x48, 0x0f, 0x6f, 0x0e, 0x8a, 0x74, 0xda, 0x48, 0xcc, 0x8b, 0x98, 0x93, + 0x9d, 0x56, 0x8b, 0x3b, 0x3b, 0xcd, 0x60, 0xda, 0xc3, 0x5f, 0xad, 0x44, 0xbf, 0x53, 0x4b, 0xdd, + 0xe3, 0xe1, 0x3d, 0x56, 0x5e, 0x5d, 0x08, 0x56, 0x4c, 0x06, 0x9f, 0x61, 0x76, 0x50, 0xd4, 0xb8, + 0x7e, 0x76, 0x1b, 0x15, 0xd8, 0xac, 0x47, 0x49, 0xe9, 0xcc, 0x38, 0xb4, 0x59, 0x3d, 0x24, 0xdc, + 0xac, 0x10, 0x85, 0x01, 0x44, 0xc9, 0xeb, 0xa3, 0x98, 0x55, 0x52, 0xdf, 0x3f, 0x8f, 0x59, 0xeb, + 0xe4, 0x60, 0x7c, 0xac, 0x84, 0xfe, 0x68, 0xd9, 0xa2, 0x6c, 0xe0, 0x23, 0x66, 0xd8, 0x17, 0x27, + 0x3d, 0x9b, 0x59, 0x11, 0xf6, 0xdc, 0x9a, 0x19, 0xc3, 0xbe, 0x38, 0xe1, 0xd9, 0x09, 0x6b, 0x21, + 0xcf, 0x48, 0x68, 0x1b, 0xf6, 0xc5, 0x61, 0xf6, 0xa5, 0x99, 0x66, 0x5d, 0x78, 0x12, 0xb0, 0x03, + 0xd7, 0x86, 0x8d, 0x5e, 0xac, 0x76, 0xf8, 0x37, 0x2b, 0xd1, 0xf7, 0xad, 0xc7, 0x63, 0x31, 0x49, + 0x2e, 0x97, 0x35, 0xf4, 0x86, 0xa5, 0x73, 0x5e, 0x0e, 0x9e, 0x51, 0xd6, 0xda, 0xac, 0x29, 0xc1, + 0xf3, 0x5b, 0xe9, 0xc0, 0xb9, 0xb3, 0x93, 0xe7, 0xe9, 0x72, 0xcc, 0x67, 0x79, 0x4a, 0xce, 0x1d, + 0x0f, 0x09, 0xcf, 0x1d, 0x88, 0xc2, 0xac, 0x7c, 0x2c, 0xaa, 0x9c, 0x1f, 0xcd, 0xca, 0x95, 0x28, + 0x9c, 0x95, 0x37, 0x08, 0xcc, 0x95, 0xc6, 0x62, 0x57, 0xa4, 0x29, 0x8f, 0x65, 0xfb, 0x11, 0xb3, + 0xd1, 0xb4, 0x44, 0x38, 0x57, 0x02, 0xa4, 0x3d, 0x8d, 0x69, 0xf6, 0x90, 0xac, 0xe0, 0x2f, 0x97, + 0x47, 0x49, 0x76, 0x3d, 0xc0, 0xd3, 0x02, 0x0b, 0x10, 0xa7, 0x31, 0x28, 0x08, 0xf7, 0xaa, 0xe7, + 0xd9, 0x44, 0xe0, 0x7b, 0xd5, 0x4a, 0x12, 0xde, 0xab, 0x6a, 0x02, 0x9a, 0x3c, 0xe3, 0x94, 0xc9, + 0x4a, 0x12, 0x36, 0xa9, 0x09, 0x2c, 0x14, 0xea, 0x33, 0x7b, 0x32, 0x14, 0x82, 0x53, 0xfa, 0xb5, + 0x4e, 0x0e, 0x8e, 0xd0, 0x66, 0xd3, 0xba, 0xcf, 0x65, 0x7c, 0x85, 0x8f, 0x50, 0x0f, 0x09, 0x8f, + 0x50, 0x88, 0xc2, 0x2a, 0x8d, 0x85, 0xd9, 0x74, 0xaf, 0xe2, 0xe3, 0xa3, 0xb5, 0xe1, 0x5e, 0xeb, + 0xe4, 0xe0, 0x36, 0xf2, 0x70, 0xa6, 0xda, 0x0c, 0x1d, 0xe4, 0xb5, 0x2c, 0xbc, 0x8d, 0x34, 0x0c, + 0x2c, 0x7d, 0x2d, 0xa8, 0x9a, 0x13, 0x2f, 0xbd, 0x95, 0x87, 0x4b, 0xef, 0x71, 0xda, 0xc9, 0xbf, + 0x98, 0x6d, 0x5c, 0x2d, 0x3d, 0x11, 0xd5, 0x1c, 0x79, 0xc3, 0xd2, 0x64, 0xc2, 0x24, 0x1f, 0x8b, + 0x6b, 0x9e, 0xe1, 0x3b, 0x26, 0x5d, 0xda, 0x9a, 0x1f, 0x7a, 0x0a, 0xe1, 0x1d, 0x53, 0x58, 0x11, + 0x8e, 0x93, 0x9a, 0x3e, 0x2f, 0xf9, 0x2e, 0x2b, 0x89, 0x48, 0xe6, 0x21, 0xe1, 0x71, 0x02, 0x51, + 0x98, 0xaf, 0xd6, 0xf2, 0x57, 0xef, 0x72, 0x5e, 0x24, 0x3c, 0x8b, 0x39, 0x9e, 0xaf, 0x42, 0x2a, + 0x9c, 0xaf, 0x22, 0x34, 0xdc, 0xab, 0xed, 0x31, 0xc9, 0x5f, 0x2e, 0xc7, 0xc9, 0x8c, 0x97, 0x92, + 0xcd, 0x72, 0x7c, 0xaf, 0x06, 0xa0, 0xf0, 0x5e, 0xad, 0x0d, 0xb7, 0x8e, 0x86, 0x4c, 0x40, 0x6c, + 0xdf, 0x4c, 0x81, 0x44, 0xe0, 0x66, 0x0a, 0x81, 0xc2, 0x86, 0xb5, 0x00, 0x7a, 0x38, 0xdc, 0xb2, + 0x12, 0x3c, 0x1c, 0xa6, 0xe9, 0xd6, 0x81, 0x9b, 0x61, 0x46, 0xd5, 0xd4, 0xec, 0x28, 0xfa, 0xc8, + 0x9d, 0xa2, 0x1b, 0xbd, 0x58, 0xfc, 0x84, 0xef, 0x8c, 0xa7, 0x4c, 0x2d, 0x5b, 0x81, 0x63, 0xb4, + 0x86, 0xe9, 0x73, 0xc2, 0xe7, 0xb0, 0xda, 0xe1, 0x5f, 0xac, 0x44, 0x9f, 0x60, 0x1e, 0x5f, 0xe7, + 0xca, 0xef, 0xd3, 0x6e, 0x5b, 0x35, 0x49, 0x5c, 0xbd, 0x09, 0x6b, 0xe8, 0x32, 0xfc, 0x49, 0xf4, + 0x71, 0x23, 0xb2, 0x37, 0x73, 0x74, 0x01, 0xfc, 0xa4, 0xcd, 0x94, 0x1f, 0x72, 0xc6, 0xfd, 0x76, + 0x6f, 0xde, 0xee, 0x87, 0xfc, 0x72, 0x95, 0x60, 0x3f, 0x64, 0x6c, 0x68, 0x31, 0xb1, 0x1f, 0x42, + 0x30, 0x3b, 0x3b, 0xdd, 0xea, 0xbd, 0x4d, 0xe4, 0x95, 0xca, 0xb7, 0xc0, 0xec, 0xf4, 0xca, 0x6a, + 0x20, 0x62, 0x76, 0x92, 0x30, 0xcc, 0x48, 0x1a, 0xb0, 0x9a, 0x9b, 0x58, 0x2c, 0x37, 0x86, 0xdc, + 0x99, 0xb9, 0xde, 0x0d, 0xc2, 0xf1, 0xda, 0x88, 0xf5, 0xd6, 0xe7, 0x49, 0xc8, 0x02, 0xd8, 0xfe, + 0x6c, 0xf4, 0x62, 0xb5, 0xc3, 0x3f, 0x8b, 0xbe, 0xd7, 0xaa, 0xd8, 0x3e, 0x67, 0x72, 0x5e, 0xf0, + 0xc9, 0x60, 0xbb, 0xa3, 0xdc, 0x0d, 0x68, 0x5c, 0x3f, 0xed, 0xaf, 0xd0, 0xca, 0xd1, 0x1b, 0xae, + 0x1e, 0x56, 0xa6, 0x0c, 0xcf, 0x42, 0x26, 0x7d, 0x36, 0x98, 0xa3, 0xd3, 0x3a, 0xad, 0x6d, 0xb6, + 0x3b, 0xba, 0x76, 0x16, 0x2c, 0x49, 0xd5, 0x43, 0xba, 0xcf, 0x42, 0x46, 0x3d, 0x34, 0xb8, 0xcd, + 0x26, 0x55, 0x5a, 0x91, 0x59, 0xcd, 0x71, 0x67, 0x7b, 0xb6, 0x49, 0x47, 0x02, 0x64, 0x77, 0xb6, + 0xd5, 0x93, 0xd6, 0x6e, 0x65, 0xb3, 0xe4, 0x55, 0x7f, 0x76, 0x07, 0x39, 0xe6, 0x55, 0xab, 0x22, + 0x23, 0x7d, 0xab, 0x27, 0xad, 0xbd, 0xfe, 0x69, 0xf4, 0x71, 0xdb, 0xab, 0x5e, 0x88, 0xb6, 0x3b, + 0x4d, 0x81, 0xb5, 0xe8, 0x69, 0x7f, 0x05, 0xbb, 0xa5, 0xf9, 0x2a, 0x29, 0xa5, 0x28, 0x96, 0xa3, + 0x2b, 0x71, 0xd3, 0xdc, 0x78, 0xf7, 0x67, 0xab, 0x06, 0x86, 0x0e, 0x41, 0x6c, 0x69, 0x70, 0xb2, + 0xe5, 0xca, 0xde, 0x8c, 0x2f, 0x09, 0x57, 0x0e, 0xd1, 0xe1, 0xca, 0x27, 0x6d, 0xac, 0x6a, 0x6a, + 0x65, 0xaf, 0xf1, 0xaf, 0xe1, 0x45, 0x6d, 0x5f, 0xe5, 0x5f, 0xef, 0x06, 0x6d, 0xc6, 0xa2, 0xc5, + 0x7b, 0xc9, 0xe5, 0xa5, 0xa9, 0x13, 0x5e, 0x52, 0x17, 0x21, 0x32, 0x16, 0x02, 0xb5, 0x49, 0xf7, + 0x7e, 0x92, 0x72, 0x75, 0xa2, 0xff, 0xfa, 0xf2, 0x32, 0x15, 0x6c, 0x02, 0x92, 0xee, 0x4a, 0x3c, + 0x74, 0xe5, 0x44, 0xd2, 0x8d, 0x71, 0xf6, 0x19, 0x71, 0x25, 0x3d, 0xe3, 0xb1, 0xc8, 0xe2, 0x24, + 0x85, 0x17, 0x00, 0x95, 0xa6, 0x11, 0x12, 0xcf, 0x88, 0x5b, 0x90, 0x5d, 0x18, 0x2b, 0x51, 0x35, + 0xed, 0x9b, 0xf2, 0x3f, 0x6a, 0x2b, 0x3a, 0x62, 0x62, 0x61, 0x44, 0x30, 0xbb, 0xf7, 0xac, 0x84, + 0xe7, 0xb9, 0x32, 0x7e, 0xaf, 0xad, 0x55, 0x4b, 0x88, 0xbd, 0xa7, 0x4f, 0xd8, 0x3d, 0x54, 0xf5, + 0xf7, 0x3d, 0x71, 0x93, 0x29, 0xa3, 0xf7, 0xdb, 0x2a, 0x8d, 0x8c, 0xd8, 0x43, 0x41, 0x46, 0x1b, + 0xfe, 0x49, 0xf4, 0xff, 0x95, 0xe1, 0x42, 0xe4, 0x83, 0x3b, 0x88, 0x42, 0xe1, 0xdc, 0xd5, 0xbb, + 0x4b, 0xca, 0xed, 0x95, 0x53, 0x33, 0x36, 0xce, 0x4b, 0x36, 0xe5, 0x83, 0x87, 0x44, 0x8f, 0x2b, + 0x29, 0x71, 0xe5, 0xb4, 0x4d, 0xf9, 0xa3, 0xe2, 0x44, 0x4c, 0xb4, 0x75, 0xa4, 0x86, 0x46, 0x18, + 0x1a, 0x15, 0x2e, 0x64, 0x93, 0x99, 0x13, 0xb6, 0x48, 0xa6, 0x66, 0xc1, 0xa9, 0xe3, 0x56, 0x09, + 0x92, 0x19, 0xcb, 0x0c, 0x1d, 0x88, 0x48, 0x66, 0x48, 0x58, 0xfb, 0xfc, 0xe7, 0x95, 0xe8, 0x9e, + 0x65, 0x0e, 0x9a, 0xd3, 0xba, 0xc3, 0xec, 0x52, 0x54, 0xa9, 0xcf, 0x51, 0x92, 0x5d, 0x97, 0x83, + 0x2f, 0x28, 0x93, 0x38, 0x6f, 0x8a, 0xf2, 0xe5, 0xad, 0xf5, 0x6c, 0xd6, 0xda, 0x1c, 0x65, 0xd9, + 0xe7, 0xd9, 0xb5, 0x06, 0xc8, 0x5a, 0xcd, 0x89, 0x17, 0xe4, 0x88, 0xac, 0x35, 0xc4, 0xdb, 0x2e, + 0x36, 0xce, 0x53, 0x91, 0xc1, 0x2e, 0xb6, 0x16, 0x2a, 0x21, 0xd1, 0xc5, 0x2d, 0xc8, 0xc6, 0xe3, + 0x46, 0x54, 0x9f, 0xba, 0xec, 0xa4, 0x29, 0x88, 0xc7, 0x46, 0xd5, 0x00, 0x44, 0x3c, 0x46, 0x41, + 0xed, 0xe7, 0x2c, 0xfa, 0x4e, 0xd5, 0xa4, 0xa7, 0x05, 0x5f, 0x24, 0x1c, 0x5e, 0xbd, 0x70, 0x24, + 0xc4, 0xfc, 0xf7, 0x09, 0x3b, 0xb3, 0xce, 0xb3, 0x32, 0x4f, 0x59, 0x79, 0xa5, 0x1f, 0xc6, 0xfb, + 0x75, 0x6e, 0x84, 0xf0, 0x71, 0xfc, 0xa3, 0x0e, 0xca, 0x06, 0xf5, 0x46, 0x66, 0x42, 0xcc, 0x2a, + 0xae, 0xda, 0x0a, 0x33, 0x6b, 0x9d, 0x9c, 0x3d, 0xf1, 0x3e, 0x60, 0x69, 0xca, 0x8b, 0x65, 0x23, + 0x3b, 0x66, 0x59, 0x72, 0xc9, 0x4b, 0x09, 0x4e, 0xbc, 0x35, 0x35, 0x84, 0x18, 0x71, 0xe2, 0x1d, + 0xc0, 0x6d, 0x36, 0x0f, 0x3c, 0x1f, 0x66, 0x13, 0xfe, 0x0e, 0x64, 0xf3, 0xd0, 0x8e, 0x62, 0x88, + 0x6c, 0x9e, 0x62, 0xed, 0xc9, 0xef, 0xcb, 0x54, 0xc4, 0xd7, 0x7a, 0x09, 0xf0, 0x3b, 0x58, 0x49, + 0xe0, 0x1a, 0x70, 0x3f, 0x84, 0xd8, 0x45, 0x40, 0x09, 0xce, 0x78, 0x9e, 0xb2, 0x18, 0xde, 0xbf, + 0xa9, 0x75, 0xb4, 0x8c, 0x58, 0x04, 0x20, 0x03, 0x8a, 0xab, 0xef, 0xf5, 0x60, 0xc5, 0x05, 0xd7, + 0x7a, 0xee, 0x87, 0x10, 0xbb, 0x0c, 0x2a, 0xc1, 0x28, 0x4f, 0x13, 0x09, 0xa6, 0x41, 0xad, 0xa1, + 0x24, 0xc4, 0x34, 0xf0, 0x09, 0x60, 0xf2, 0x98, 0x17, 0x53, 0x8e, 0x9a, 0x54, 0x92, 0xa0, 0xc9, + 0x86, 0xb0, 0x97, 0x4c, 0xeb, 0xba, 0x8b, 0x7c, 0x09, 0x2e, 0x99, 0xea, 0x6a, 0x89, 0x7c, 0x49, + 0x5c, 0x32, 0xf5, 0x00, 0x50, 0xc4, 0x53, 0x56, 0x4a, 0xbc, 0x88, 0x4a, 0x12, 0x2c, 0x62, 0x43, + 0xd8, 0x35, 0xba, 0x2e, 0xe2, 0x5c, 0x82, 0x35, 0x5a, 0x17, 0xc0, 0x79, 0x02, 0x7d, 0x97, 0x94, + 0xdb, 0x48, 0x52, 0xf7, 0x0a, 0x97, 0xfb, 0x09, 0x4f, 0x27, 0x25, 0x88, 0x24, 0xba, 0xdd, 0x1b, + 0x29, 0x11, 0x49, 0xda, 0x14, 0x18, 0x4a, 0xfa, 0x7c, 0x1c, 0xab, 0x1d, 0x38, 0x1a, 0xbf, 0x1f, + 0x42, 0x6c, 0x7c, 0x6a, 0x0a, 0xbd, 0xcb, 0x8a, 0x22, 0xa9, 0x16, 0xff, 0x55, 0xbc, 0x40, 0x8d, + 0x9c, 0x88, 0x4f, 0x18, 0x07, 0xa6, 0x57, 0x13, 0xb8, 0xb1, 0x82, 0xc1, 0xd0, 0xfd, 0x20, 0xc8, + 0xd8, 0x8c, 0x53, 0x49, 0x9c, 0x47, 0xa8, 0x58, 0x6b, 0x22, 0x4f, 0x50, 0x57, 0xbb, 0x30, 0xe7, + 0x25, 0x10, 0xe3, 0xe2, 0x58, 0x2c, 0xf8, 0x58, 0xbc, 0x7a, 0x97, 0x94, 0x32, 0xc9, 0xa6, 0x7a, + 0xe5, 0x7e, 0x4e, 0x58, 0xc2, 0x60, 0xe2, 0x25, 0x90, 0x4e, 0x25, 0x9b, 0x40, 0x80, 0xb2, 0x9c, + 0xf0, 0x1b, 0x34, 0x81, 0x80, 0x16, 0x0d, 0x47, 0x24, 0x10, 0x21, 0xde, 0x9e, 0xa3, 0x18, 0xe7, + 0xfa, 0x4d, 0xd9, 0xb1, 0x68, 0x72, 0x39, 0xca, 0x1a, 0x04, 0x89, 0xad, 0x6c, 0x50, 0xc1, 0xee, + 0x2f, 0x8d, 0x7f, 0x3b, 0xc5, 0xd6, 0x09, 0x3b, 0xed, 0x69, 0xf6, 0xb8, 0x07, 0x89, 0xb8, 0xb2, + 0xf7, 0x00, 0x28, 0x57, 0xed, 0x6b, 0x00, 0x8f, 0x7b, 0x90, 0xce, 0x99, 0x8c, 0x5b, 0xad, 0x97, + 0x2c, 0xbe, 0x9e, 0x16, 0x62, 0x9e, 0x4d, 0x76, 0x45, 0x2a, 0x0a, 0x70, 0x26, 0xe3, 0x95, 0x1a, + 0xa0, 0xc4, 0x99, 0x4c, 0x87, 0x8a, 0xcd, 0xe0, 0xdc, 0x52, 0xec, 0xa4, 0xc9, 0x14, 0xee, 0xa8, + 0x3d, 0x43, 0x0a, 0x20, 0x32, 0x38, 0x14, 0x44, 0x06, 0x51, 0xbd, 0xe3, 0x96, 0x49, 0xcc, 0xd2, + 0xda, 0xdf, 0x36, 0x6d, 0xc6, 0x03, 0x3b, 0x07, 0x11, 0xa2, 0x80, 0xd4, 0x73, 0x3c, 0x2f, 0xb2, + 0xc3, 0x4c, 0x0a, 0xb2, 0x9e, 0x0d, 0xd0, 0x59, 0x4f, 0x07, 0x04, 0x61, 0x75, 0xcc, 0xdf, 0x55, + 0xa5, 0xa9, 0xfe, 0xc1, 0xc2, 0x6a, 0xf5, 0xf7, 0xa1, 0x96, 0x87, 0xc2, 0x2a, 0xe0, 0x40, 0x65, + 0xb4, 0x93, 0x7a, 0xc0, 0x04, 0xb4, 0xfd, 0x61, 0xb2, 0xde, 0x0d, 0xe2, 0x7e, 0x46, 0x72, 0x99, + 0xf2, 0x90, 0x1f, 0x05, 0xf4, 0xf1, 0xd3, 0x80, 0xf6, 0xb8, 0xc5, 0xab, 0xcf, 0x15, 0x8f, 0xaf, + 0x5b, 0xd7, 0x9a, 0xfc, 0x82, 0xd6, 0x08, 0x71, 0xdc, 0x42, 0xa0, 0x78, 0x17, 0x1d, 0xc6, 0x22, + 0x0b, 0x75, 0x51, 0x25, 0xef, 0xd3, 0x45, 0x9a, 0xb3, 0x9b, 0x5f, 0x23, 0xd5, 0x23, 0xb3, 0xee, + 0xa6, 0x0d, 0xc2, 0x82, 0x0b, 0x11, 0x9b, 0x5f, 0x12, 0xb6, 0x39, 0x39, 0xf4, 0x79, 0xdc, 0xbe, + 0xf3, 0xdd, 0xb2, 0x72, 0x4c, 0xdf, 0xf9, 0xa6, 0x58, 0xba, 0x92, 0xf5, 0x18, 0xe9, 0xb0, 0xe2, + 0x8f, 0x93, 0xcd, 0x7e, 0xb0, 0xdd, 0xf2, 0x78, 0x3e, 0x77, 0x53, 0xce, 0x8a, 0xda, 0xeb, 0x56, + 0xc0, 0x90, 0xc5, 0x88, 0x2d, 0x4f, 0x00, 0x07, 0x21, 0xcc, 0xf3, 0xbc, 0x2b, 0x32, 0xc9, 0x33, + 0x89, 0x85, 0x30, 0xdf, 0x98, 0x06, 0x43, 0x21, 0x8c, 0x52, 0x00, 0xe3, 0x56, 0x9d, 0x07, 0x71, + 0x79, 0xc2, 0x66, 0x68, 0xc6, 0x56, 0x9f, 0xf5, 0xd4, 0xf2, 0xd0, 0xb8, 0x05, 0x9c, 0xf3, 0x90, + 0xcf, 0xf5, 0x32, 0x66, 0xc5, 0xd4, 0x9c, 0x6e, 0x4c, 0x06, 0x4f, 0x69, 0x3b, 0x3e, 0x49, 0x3c, + 0xe4, 0x0b, 0x6b, 0x80, 0xb0, 0x73, 0x38, 0x63, 0x53, 0x53, 0x53, 0xa4, 0x06, 0x4a, 0xde, 0xaa, + 0xea, 0x7a, 0x37, 0x08, 0xfc, 0xbc, 0x49, 0x26, 0x5c, 0x04, 0xfc, 0x28, 0x79, 0x1f, 0x3f, 0x10, + 0x04, 0xd9, 0x5b, 0x55, 0xef, 0x7a, 0x47, 0xb7, 0x93, 0x4d, 0xf4, 0x3e, 0x76, 0x48, 0x34, 0x0f, + 0xe0, 0x42, 0xd9, 0x1b, 0xc1, 0x83, 0x39, 0xda, 0x1c, 0xd0, 0x86, 0xe6, 0xa8, 0x39, 0x7f, 0xed, + 0x33, 0x47, 0x31, 0x58, 0xfb, 0xfc, 0x99, 0x9e, 0xa3, 0x7b, 0x4c, 0xb2, 0x2a, 0x6f, 0x7f, 0x93, + 0xf0, 0x1b, 0xbd, 0x11, 0x46, 0xea, 0xdb, 0x50, 0x43, 0xf5, 0xaa, 0x22, 0xd8, 0x15, 0x6f, 0xf7, + 0xe6, 0x03, 0xbe, 0xf5, 0x0e, 0xa1, 0xd3, 0x37, 0xd8, 0x2a, 0x6c, 0xf7, 0xe6, 0x03, 0xbe, 0xf5, + 0x3b, 0xd0, 0x9d, 0xbe, 0xc1, 0x8b, 0xd0, 0xdb, 0xbd, 0x79, 0xed, 0xfb, 0x2f, 0x9b, 0x89, 0xeb, + 0x3a, 0xaf, 0xf2, 0xb0, 0x58, 0x26, 0x0b, 0x8e, 0xa5, 0x93, 0xbe, 0x3d, 0x83, 0x86, 0xd2, 0x49, + 0x5a, 0xc5, 0xf9, 0x70, 0x0e, 0x56, 0x8a, 0x53, 0x51, 0x26, 0xea, 0x21, 0xfd, 0xf3, 0x1e, 0x46, + 0x1b, 0x38, 0xb4, 0x69, 0x0a, 0x29, 0xd9, 0xc7, 0x8d, 0x1e, 0x6a, 0x6f, 0x31, 0x6f, 0x06, 0xec, + 0xb5, 0x2f, 0x33, 0x6f, 0xf5, 0xa4, 0xed, 0x83, 0x3f, 0x8f, 0x71, 0x9f, 0x38, 0x86, 0x7a, 0x15, + 0x7d, 0xe8, 0xf8, 0xb4, 0xbf, 0x82, 0x76, 0xff, 0xd7, 0xcd, 0xbe, 0x02, 0xfa, 0xd7, 0x93, 0xe0, + 0x59, 0x1f, 0x8b, 0x60, 0x22, 0x3c, 0xbf, 0x95, 0x8e, 0x2e, 0xc8, 0xdf, 0x37, 0x1b, 0xe8, 0x06, + 0x55, 0xef, 0x72, 0xa8, 0x77, 0xff, 0xf4, 0x9c, 0x08, 0x75, 0xab, 0x85, 0xe1, 0xcc, 0x78, 0x71, + 0x4b, 0x2d, 0xe7, 0x33, 0x4a, 0x1e, 0xac, 0xdf, 0x39, 0x74, 0xca, 0x13, 0xb2, 0xec, 0xd0, 0xb0, + 0x40, 0x5f, 0xdc, 0x56, 0x8d, 0x9a, 0x2b, 0x0e, 0xac, 0xbe, 0xca, 0xf0, 0xbc, 0xa7, 0x61, 0xef, + 0x3b, 0x0d, 0x9f, 0xdf, 0x4e, 0x49, 0x97, 0xe5, 0x3f, 0x57, 0xa2, 0x47, 0x1e, 0x6b, 0x9f, 0x27, + 0x80, 0x53, 0x8f, 0x1f, 0x07, 0xec, 0x53, 0x4a, 0xa6, 0x70, 0xbf, 0xfb, 0xcb, 0x29, 0xdb, 0x6f, + 0x0e, 0x79, 0x2a, 0xfb, 0x49, 0x2a, 0x79, 0xd1, 0xfe, 0xe6, 0x90, 0x6f, 0xb7, 0xa6, 0x86, 0xf4, + 0x37, 0x87, 0x02, 0xb8, 0xf3, 0xcd, 0x21, 0xc4, 0x33, 0xfa, 0xcd, 0x21, 0xd4, 0x5a, 0xf0, 0x9b, + 0x43, 0x61, 0x0d, 0x2a, 0xbc, 0x37, 0x45, 0xa8, 0xcf, 0xad, 0x7b, 0x59, 0xf4, 0x8f, 0xb1, 0x9f, + 0xdd, 0x46, 0x85, 0x58, 0xe0, 0x6a, 0x4e, 0xdd, 0x73, 0xeb, 0xd1, 0xa6, 0xde, 0x5d, 0xb7, 0xed, + 0xde, 0xbc, 0xf6, 0xfd, 0x53, 0xbd, 0xbb, 0x31, 0xe1, 0x5c, 0x14, 0xea, 0x7b, 0x53, 0x1b, 0xa1, + 0xf0, 0x5c, 0x59, 0x70, 0x7b, 0x7e, 0xb3, 0x1f, 0x4c, 0x54, 0xb7, 0x22, 0x74, 0xa7, 0x0f, 0xbb, + 0x0c, 0x81, 0x2e, 0xdf, 0xee, 0xcd, 0x13, 0xcb, 0x48, 0xed, 0xbb, 0xee, 0xed, 0x1e, 0xc6, 0xfc, + 0xbe, 0x7e, 0xda, 0x5f, 0x41, 0xbb, 0x5f, 0xe8, 0xb4, 0xd1, 0x75, 0xaf, 0xfa, 0x79, 0xab, 0xcb, + 0xd4, 0xc8, 0xeb, 0xe6, 0x61, 0x5f, 0x3c, 0x94, 0x40, 0xb8, 0x4b, 0x68, 0x57, 0x02, 0x81, 0x2e, + 0xa3, 0x9f, 0xdf, 0x4e, 0x49, 0x97, 0xe5, 0x9f, 0x56, 0xa2, 0xbb, 0x64, 0x59, 0xf4, 0x38, 0xf8, + 0xa2, 0xaf, 0x65, 0x30, 0x1e, 0xbe, 0xbc, 0xb5, 0x9e, 0x2e, 0xd4, 0xbf, 0xae, 0x44, 0xf7, 0x02, + 0x85, 0xaa, 0x07, 0xc8, 0x2d, 0xac, 0xfb, 0x03, 0xe5, 0x87, 0xb7, 0x57, 0xa4, 0x96, 0x7b, 0x17, + 0x1f, 0xb5, 0x3f, 0xc6, 0x13, 0xb0, 0x3d, 0xa2, 0x3f, 0xc6, 0xd3, 0xad, 0x05, 0x0f, 0x79, 0xd8, + 0x45, 0xb3, 0xe9, 0x42, 0x0f, 0x79, 0xd4, 0x0d, 0x35, 0xb0, 0xe7, 0x58, 0xeb, 0xe4, 0x30, 0x27, + 0xaf, 0xde, 0xe5, 0x2c, 0x9b, 0xd0, 0x4e, 0x6a, 0x79, 0xb7, 0x13, 0xc3, 0xc1, 0xc3, 0xb1, 0x4a, + 0x7a, 0x26, 0x9a, 0x8d, 0xd4, 0x63, 0x4a, 0xdf, 0x20, 0xc1, 0xc3, 0xb1, 0x16, 0x4a, 0x78, 0xd3, + 0x59, 0x63, 0xc8, 0x1b, 0x48, 0x16, 0x9f, 0xf4, 0x41, 0x41, 0x8a, 0x6e, 0xbc, 0x99, 0x33, 0xf7, + 0xcd, 0x90, 0x95, 0xd6, 0xb9, 0xfb, 0x56, 0x4f, 0x9a, 0x70, 0x3b, 0xe2, 0xf2, 0x2b, 0xce, 0x26, + 0xbc, 0x08, 0xba, 0x35, 0x54, 0x2f, 0xb7, 0x2e, 0x8d, 0xb9, 0xdd, 0x15, 0xe9, 0x7c, 0x96, 0xe9, + 0xce, 0x24, 0xdd, 0xba, 0x54, 0xb7, 0x5b, 0x40, 0xc3, 0x63, 0x41, 0xeb, 0x56, 0xa5, 0x97, 0x4f, + 0xc2, 0x66, 0xbc, 0xac, 0x72, 0xa3, 0x17, 0x4b, 0xd7, 0x53, 0x0f, 0xa3, 0x8e, 0x7a, 0x82, 0x91, + 0xb4, 0xd5, 0x93, 0x86, 0xe7, 0x73, 0x8e, 0x5b, 0x33, 0x9e, 0xb6, 0x3b, 0x6c, 0xb5, 0x86, 0xd4, + 0xd3, 0xfe, 0x0a, 0xf0, 0x34, 0x54, 0x8f, 0xaa, 0xa3, 0xa4, 0x94, 0xfb, 0x49, 0x9a, 0x0e, 0x36, + 0x02, 0xc3, 0xa4, 0x81, 0x82, 0xa7, 0xa1, 0x08, 0x4c, 0x8c, 0xe4, 0xe6, 0xf4, 0x30, 0x1b, 0x74, + 0xd9, 0x51, 0x54, 0xaf, 0x91, 0xec, 0xd2, 0xe0, 0x44, 0xcb, 0x69, 0x6a, 0x53, 0xdb, 0x61, 0xb8, + 0xe1, 0x5a, 0x15, 0xde, 0xee, 0xcd, 0x83, 0xc7, 0xed, 0x8a, 0x52, 0x2b, 0xcb, 0x43, 0xca, 0x84, + 0xb7, 0x92, 0x3c, 0xea, 0xa0, 0xc0, 0xa9, 0x60, 0x3d, 0x8d, 0xde, 0x26, 0x93, 0x29, 0x97, 0xe8, + 0x93, 0x22, 0x17, 0x08, 0x3e, 0x29, 0x02, 0x20, 0xe8, 0xba, 0xfa, 0xef, 0xe6, 0x38, 0xf4, 0x70, + 0x82, 0x75, 0x9d, 0x56, 0x76, 0xa8, 0x50, 0xd7, 0xa1, 0x34, 0x88, 0x06, 0xc6, 0xad, 0x7e, 0x1d, + 0xff, 0x49, 0xc8, 0x0c, 0x78, 0x27, 0x7f, 0xa3, 0x17, 0x0b, 0x56, 0x14, 0xeb, 0x30, 0x99, 0x25, + 0x12, 0x5b, 0x51, 0x1c, 0x1b, 0x15, 0x12, 0x5a, 0x51, 0xda, 0x28, 0x55, 0xbd, 0x2a, 0x47, 0x38, + 0x9c, 0x84, 0xab, 0x57, 0x33, 0xfd, 0xaa, 0x67, 0xd8, 0xd6, 0x83, 0xcd, 0xcc, 0x0c, 0x19, 0x79, + 0xa5, 0x37, 0xcb, 0xc8, 0xd8, 0x56, 0xaf, 0x69, 0x42, 0x30, 0x14, 0x75, 0x28, 0x05, 0x78, 0x60, + 0x5f, 0x71, 0xcd, 0xb3, 0xd7, 0x3c, 0xe7, 0xac, 0x60, 0x59, 0x8c, 0x6e, 0x4e, 0x95, 0xc1, 0x16, + 0x19, 0xda, 0x9c, 0x92, 0x1a, 0xe0, 0xb1, 0xb9, 0xff, 0x82, 0x25, 0x32, 0x15, 0xcc, 0x9b, 0x8c, + 0xfe, 0xfb, 0x95, 0x8f, 0x7b, 0x90, 0xf0, 0xb1, 0x79, 0x03, 0x98, 0x83, 0xef, 0xda, 0xe9, 0x67, + 0x01, 0x53, 0x3e, 0x1a, 0xda, 0x08, 0xd3, 0x2a, 0x60, 0x50, 0x9b, 0x04, 0x97, 0xcb, 0x9f, 0xf0, + 0x25, 0x36, 0xa8, 0x6d, 0x7e, 0xaa, 0x90, 0xd0, 0xa0, 0x6e, 0xa3, 0x20, 0xcf, 0x74, 0xf7, 0x41, + 0xab, 0x01, 0x7d, 0x77, 0xeb, 0xb3, 0xd6, 0xc9, 0x81, 0x99, 0xb3, 0x97, 0x2c, 0xbc, 0xe7, 0x04, + 0x48, 0x41, 0xf7, 0x92, 0x05, 0xfe, 0x98, 0x60, 0xa3, 0x17, 0x0b, 0x1f, 0xc9, 0x33, 0xc9, 0xdf, + 0x35, 0xcf, 0xca, 0x91, 0xe2, 0x2a, 0x79, 0xeb, 0x61, 0xf9, 0x7a, 0x37, 0x68, 0x2f, 0xc0, 0x9e, + 0x16, 0x22, 0xe6, 0x65, 0xa9, 0xbf, 0x50, 0xe8, 0xdf, 0x30, 0xd2, 0xb2, 0x21, 0xf8, 0x3e, 0xe1, + 0xc3, 0x30, 0x64, 0x7b, 0x46, 0x8b, 0xec, 0x57, 0x6f, 0x56, 0x51, 0xcd, 0xf6, 0x07, 0x6f, 0xd6, + 0x3a, 0x39, 0x3b, 0xbd, 0xb4, 0xd4, 0xfd, 0xcc, 0xcd, 0x3a, 0xaa, 0x8e, 0x7d, 0xe1, 0xe6, 0x71, + 0x0f, 0x52, 0xbb, 0xfa, 0x2a, 0x7a, 0xff, 0x48, 0x4c, 0x47, 0x3c, 0x9b, 0x0c, 0x7e, 0xe0, 0x5f, + 0xa1, 0x15, 0xd3, 0x61, 0xf5, 0x67, 0x63, 0xf4, 0x0e, 0x25, 0xb6, 0x97, 0x00, 0xf7, 0xf8, 0xc5, + 0x7c, 0x3a, 0x92, 0x4c, 0x82, 0x4b, 0x80, 0xea, 0xef, 0xc3, 0x4a, 0x40, 0x5c, 0x02, 0xf4, 0x00, + 0x60, 0x6f, 0x5c, 0x70, 0x8e, 0xda, 0xab, 0x04, 0x41, 0x7b, 0x1a, 0xb0, 0x59, 0x84, 0xb1, 0x57, + 0x25, 0xea, 0xf0, 0xd2, 0x9e, 0xd5, 0x51, 0x52, 0x22, 0x8b, 0x68, 0x53, 0x76, 0x70, 0xd7, 0xd5, + 0x57, 0x5f, 0x1d, 0x99, 0xcf, 0x66, 0xac, 0x58, 0x82, 0xc1, 0xad, 0x6b, 0xe9, 0x00, 0xc4, 0xe0, + 0x46, 0x41, 0x3b, 0x6b, 0x9b, 0x66, 0x8e, 0xaf, 0x0f, 0x44, 0x21, 0xe6, 0x32, 0xc9, 0x38, 0xfc, + 0xf2, 0x84, 0x69, 0x50, 0x97, 0x21, 0x66, 0x2d, 0xc5, 0xda, 0x2c, 0x57, 0x11, 0xf5, 0x7d, 0x42, + 0xf5, 0xdd, 0xe2, 0x52, 0x8a, 0x02, 0x3e, 0x4f, 0xac, 0xad, 0x40, 0x88, 0xc8, 0x72, 0x49, 0x18, + 0xf4, 0xfd, 0x69, 0x92, 0x4d, 0xd1, 0xbe, 0x3f, 0x75, 0xbf, 0xfa, 0x79, 0x8f, 0x06, 0xec, 0x84, + 0xaa, 0x1b, 0xad, 0x9e, 0x00, 0xfa, 0x5d, 0x4e, 0xb4, 0xd1, 0x5d, 0x82, 0x98, 0x50, 0x38, 0x09, + 0x5c, 0xbd, 0xce, 0x79, 0xc6, 0x27, 0xcd, 0xad, 0x39, 0xcc, 0x95, 0x47, 0x04, 0x5d, 0x41, 0xd2, + 0xc6, 0x22, 0x25, 0x3f, 0x9b, 0x67, 0xa7, 0x85, 0xb8, 0x4c, 0x52, 0x5e, 0x80, 0x58, 0x54, 0xab, + 0x3b, 0x72, 0x22, 0x16, 0x61, 0x9c, 0xbd, 0x7e, 0xa1, 0xa4, 0xde, 0xc7, 0xb7, 0xc7, 0x05, 0x8b, + 0xe1, 0xf5, 0x8b, 0xda, 0x46, 0x1b, 0x23, 0x4e, 0x06, 0x03, 0xb8, 0x93, 0xe8, 0xd4, 0xae, 0xb3, + 0xa5, 0x1a, 0x1f, 0xfa, 0x5d, 0x42, 0xf5, 0x2d, 0xcc, 0x12, 0x24, 0x3a, 0xda, 0x1c, 0x46, 0x12, + 0x89, 0x4e, 0x58, 0xc3, 0x2e, 0x25, 0x8a, 0x3b, 0xd1, 0xd7, 0x8a, 0xc0, 0x52, 0x52, 0xdb, 0x68, + 0x84, 0xc4, 0x52, 0xd2, 0x82, 0x40, 0x40, 0x6a, 0xa6, 0xc1, 0x14, 0x0d, 0x48, 0x46, 0x1a, 0x0c, + 0x48, 0x2e, 0x65, 0x03, 0xc5, 0x61, 0x96, 0xc8, 0x84, 0xa5, 0x23, 0x2e, 0x4f, 0x59, 0xc1, 0x66, + 0x5c, 0xf2, 0x02, 0x06, 0x0a, 0x8d, 0x0c, 0x3d, 0x86, 0x08, 0x14, 0x14, 0xab, 0x1d, 0xfe, 0x5e, + 0xf4, 0x61, 0xb5, 0xee, 0xf3, 0x4c, 0xff, 0xcc, 0xc6, 0x2b, 0xf5, 0xfb, 0x3c, 0x83, 0x8f, 0x8c, + 0x8d, 0x91, 0x2c, 0x38, 0x9b, 0x35, 0xb6, 0x3f, 0x30, 0x7f, 0x57, 0xe0, 0xd3, 0x95, 0x6a, 0x3c, + 0x9f, 0x08, 0x99, 0x5c, 0x56, 0xdb, 0x6c, 0xfd, 0x06, 0x11, 0x18, 0xcf, 0xae, 0x78, 0x18, 0xf8, + 0x16, 0x05, 0xc6, 0xd9, 0x38, 0xed, 0x4a, 0xcf, 0x78, 0x9e, 0xc2, 0x38, 0xed, 0x69, 0x2b, 0x80, + 0x88, 0xd3, 0x28, 0x68, 0x27, 0xa7, 0x2b, 0x1e, 0xf3, 0x70, 0x65, 0xc6, 0xbc, 0x5f, 0x65, 0xc6, + 0xde, 0x4b, 0x19, 0x69, 0xf4, 0xe1, 0x31, 0x9f, 0x5d, 0xf0, 0xa2, 0xbc, 0x4a, 0xf2, 0x83, 0x2a, + 0xe1, 0x62, 0x72, 0x0e, 0x5f, 0x5b, 0xb4, 0xc4, 0xd0, 0x20, 0x44, 0x56, 0x4a, 0xa0, 0x76, 0x25, + 0xb0, 0xc0, 0x61, 0x79, 0xc2, 0x66, 0x5c, 0x7d, 0x59, 0x03, 0xac, 0x04, 0x8e, 0x11, 0x07, 0x22, + 0x56, 0x02, 0x12, 0x76, 0xde, 0xef, 0xb2, 0xcc, 0x19, 0x9f, 0x56, 0x23, 0xac, 0x38, 0x65, 0xcb, + 0x19, 0xcf, 0xa4, 0x36, 0x09, 0xce, 0xe4, 0x1d, 0x93, 0x38, 0x4f, 0x9c, 0xc9, 0xf7, 0xd1, 0x73, + 0x42, 0x93, 0xd7, 0xf0, 0xa7, 0xa2, 0x90, 0xf5, 0x8f, 0xe8, 0x9c, 0x17, 0x29, 0x08, 0x4d, 0x7e, + 0xa3, 0x7a, 0x24, 0x11, 0x9a, 0xc2, 0x1a, 0xce, 0xd7, 0xe7, 0xbd, 0x32, 0xbc, 0xe1, 0x85, 0x19, + 0x27, 0xaf, 0x66, 0x2c, 0x49, 0xf5, 0x68, 0xf8, 0x51, 0xc0, 0x36, 0xa1, 0x43, 0x7c, 0x7d, 0xbe, + 0xaf, 0xae, 0xf3, 0xbd, 0xfe, 0x70, 0x09, 0xc1, 0x23, 0x82, 0x0e, 0xfb, 0xc4, 0x23, 0x82, 0x6e, + 0x2d, 0xbb, 0x73, 0xb7, 0xac, 0xe2, 0x96, 0x8a, 0xd8, 0x15, 0x13, 0x78, 0x5e, 0xe8, 0xd8, 0x04, + 0x20, 0xb1, 0x73, 0x0f, 0x2a, 0xd8, 0xd4, 0xc0, 0x62, 0xfb, 0x49, 0xc6, 0xd2, 0xe4, 0x67, 0x30, + 0xad, 0x77, 0xec, 0x34, 0x04, 0x91, 0x1a, 0xe0, 0x24, 0xe6, 0xea, 0x80, 0xcb, 0x71, 0x52, 0x85, + 0xfe, 0xf5, 0x40, 0xbb, 0x29, 0xa2, 0xdb, 0x95, 0x43, 0x3a, 0xdf, 0x68, 0x85, 0xcd, 0xba, 0x93, + 0xe7, 0xa3, 0x6a, 0x55, 0x3d, 0xe3, 0x31, 0x4f, 0x72, 0x39, 0x78, 0x11, 0x6e, 0x2b, 0x80, 0x13, + 0x17, 0x2d, 0x7a, 0xa8, 0x39, 0x8f, 0xef, 0xab, 0x58, 0x32, 0xaa, 0x7f, 0x5d, 0xee, 0xbc, 0xe4, + 0x85, 0x4e, 0x34, 0x0e, 0xb8, 0x04, 0xb3, 0xd3, 0xe1, 0x86, 0x0e, 0x58, 0x55, 0x94, 0x98, 0x9d, + 0x61, 0x0d, 0x7b, 0xd8, 0xe7, 0x70, 0x67, 0xbc, 0x14, 0xe9, 0x82, 0xab, 0xfb, 0x86, 0x9b, 0xa4, + 0x31, 0x87, 0x22, 0x0e, 0xfb, 0x68, 0xda, 0x66, 0x6b, 0x6d, 0xb7, 0x3b, 0xd9, 0xf2, 0x10, 0x5e, + 0x99, 0x40, 0x2c, 0x29, 0x8c, 0xc8, 0xd6, 0x02, 0xb8, 0x73, 0x18, 0x5e, 0x08, 0x36, 0x89, 0x59, + 0x29, 0x4f, 0xd9, 0x32, 0x15, 0x6c, 0xa2, 0xd6, 0x75, 0x78, 0x18, 0xde, 0x30, 0x43, 0x17, 0xa2, + 0x0e, 0xc3, 0x29, 0xd8, 0xcd, 0xce, 0xd4, 0x8f, 0xe6, 0xe9, 0xbb, 0x9c, 0x30, 0x3b, 0x53, 0xe5, + 0x85, 0xf7, 0x38, 0x1f, 0x86, 0x21, 0xfb, 0x0e, 0x5a, 0x2d, 0x52, 0x69, 0xc8, 0x3d, 0x4c, 0xc7, + 0x4b, 0x40, 0x3e, 0x0d, 0x10, 0xf6, 0xbb, 0x14, 0xf5, 0xdf, 0x9b, 0xdf, 0x7d, 0x91, 0xfa, 0x4b, + 0xd6, 0x9b, 0x98, 0xae, 0x0b, 0x0d, 0xdd, 0x0f, 0xdc, 0x6d, 0xf5, 0xa4, 0x6d, 0x9a, 0xb9, 0x7b, + 0xc5, 0xe4, 0xce, 0x64, 0x72, 0xcc, 0x4b, 0xe4, 0x85, 0xf2, 0x4a, 0x38, 0xb4, 0x52, 0x22, 0xcd, + 0x6c, 0x53, 0x76, 0xa0, 0x57, 0xb2, 0x57, 0x93, 0x44, 0x6a, 0x59, 0x73, 0x43, 0x7a, 0xb3, 0x6d, + 0xa0, 0x4d, 0x11, 0xb5, 0xa2, 0x69, 0x1b, 0xcb, 0x2b, 0x66, 0x2c, 0xa6, 0xd3, 0x94, 0x6b, 0xe8, + 0x8c, 0xb3, 0xfa, 0x43, 0x7e, 0xdb, 0x6d, 0x5b, 0x28, 0x48, 0xc4, 0xf2, 0xa0, 0x82, 0x4d, 0x23, + 0x2b, 0xac, 0x7e, 0x24, 0xd5, 0x34, 0xec, 0x5a, 0xdb, 0x8c, 0x07, 0x10, 0x69, 0x24, 0x0a, 0xda, + 0xf7, 0xde, 0x2a, 0xf1, 0x01, 0x6f, 0x5a, 0x02, 0x7e, 0x82, 0x48, 0x29, 0x3b, 0x62, 0xe2, 0xbd, + 0x37, 0x04, 0xb3, 0xfb, 0x04, 0xe0, 0xe1, 0xe5, 0xf2, 0x70, 0x02, 0xf7, 0x09, 0x50, 0x5f, 0x31, + 0xc4, 0x3e, 0x81, 0x62, 0xfd, 0xae, 0x33, 0xe7, 0x5e, 0x47, 0xac, 0xb4, 0x95, 0x43, 0xba, 0x0e, + 0x05, 0x43, 0x5d, 0x47, 0x29, 0xf8, 0x4d, 0xea, 0x1e, 0xad, 0x21, 0x4d, 0x8a, 0x9d, 0xab, 0xad, + 0x76, 0x61, 0x36, 0x2e, 0x99, 0xfd, 0xa4, 0xba, 0xb2, 0x84, 0x7f, 0xc1, 0xbf, 0x16, 0x12, 0x71, + 0xa9, 0x05, 0x39, 0x3f, 0x49, 0x96, 0x27, 0x23, 0xc9, 0x0a, 0x59, 0x05, 0xe4, 0xf6, 0x4f, 0x92, + 0xe5, 0xc9, 0xd0, 0x91, 0x52, 0x3f, 0x49, 0xd6, 0xa2, 0x9c, 0x9f, 0xd9, 0xaa, 0xcc, 0x8b, 0x5c, + 0x5b, 0x7f, 0x80, 0xe8, 0x35, 0x42, 0xf2, 0x37, 0x53, 0x01, 0x54, 0xdb, 0x7e, 0xf9, 0xe9, 0x7f, + 0x7d, 0x73, 0x67, 0xe5, 0x17, 0xdf, 0xdc, 0x59, 0xf9, 0x9f, 0x6f, 0xee, 0xac, 0xfc, 0xfc, 0xdb, + 0x3b, 0xef, 0xfd, 0xe2, 0xdb, 0x3b, 0xef, 0xfd, 0xf7, 0xb7, 0x77, 0xde, 0xfb, 0xfa, 0x7d, 0xfd, + 0x3b, 0xb0, 0x17, 0xff, 0x4f, 0xfd, 0x9a, 0xeb, 0xf3, 0xff, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x8e, + 0xa4, 0xab, 0x9b, 0x2b, 0x76, 0x00, 0x00, } // This is a compile-time assertion to ensure that this generated file @@ -696,6 +699,10 @@ type ClientCommandsHandler interface { ChatSubscribeLastMessages(context.Context, *pb.RpcChatSubscribeLastMessagesRequest) *pb.RpcChatSubscribeLastMessagesResponse ChatUnsubscribe(context.Context, *pb.RpcChatUnsubscribeRequest) *pb.RpcChatUnsubscribeResponse ObjectChatAdd(context.Context, *pb.RpcObjectChatAddRequest) *pb.RpcObjectChatAddResponse + // API + // *** + ApiStartServer(context.Context, *pb.RpcApiStartServerRequest) *pb.RpcApiStartServerResponse + ApiStopServer(context.Context, *pb.RpcApiStopServerRequest) *pb.RpcApiStopServerResponse } func registerClientCommandsHandler(srv ClientCommandsHandler) { @@ -6082,6 +6089,46 @@ func ObjectChatAdd(b []byte) (resp []byte) { return resp } +func ApiStartServer(b []byte) (resp []byte) { + defer func() { + if PanicHandler != nil { + if r := recover(); r != nil { + resp, _ = (&pb.RpcApiStartServerResponse{Error: &pb.RpcApiStartServerResponseError{Code: pb.RpcApiStartServerResponseError_UNKNOWN_ERROR, Description: "panic recovered"}}).Marshal() + PanicHandler(r) + } + } + }() + + in := new(pb.RpcApiStartServerRequest) + if err := in.Unmarshal(b); err != nil { + resp, _ = (&pb.RpcApiStartServerResponse{Error: &pb.RpcApiStartServerResponseError{Code: pb.RpcApiStartServerResponseError_BAD_INPUT, Description: err.Error()}}).Marshal() + return resp + } + + resp, _ = clientCommandsHandler.ApiStartServer(context.Background(), in).Marshal() + return resp +} + +func ApiStopServer(b []byte) (resp []byte) { + defer func() { + if PanicHandler != nil { + if r := recover(); r != nil { + resp, _ = (&pb.RpcApiStopServerResponse{Error: &pb.RpcApiStopServerResponseError{Code: pb.RpcApiStopServerResponseError_UNKNOWN_ERROR, Description: "panic recovered"}}).Marshal() + PanicHandler(r) + } + } + }() + + in := new(pb.RpcApiStopServerRequest) + if err := in.Unmarshal(b); err != nil { + resp, _ = (&pb.RpcApiStopServerResponse{Error: &pb.RpcApiStopServerResponseError{Code: pb.RpcApiStopServerResponseError_BAD_INPUT, Description: err.Error()}}).Marshal() + return resp + } + + resp, _ = clientCommandsHandler.ApiStopServer(context.Background(), in).Marshal() + return resp +} + var PanicHandler func(v interface{}) func CommandAsync(cmd string, data []byte, callback func(data []byte)) { @@ -6626,6 +6673,10 @@ func CommandAsync(cmd string, data []byte, callback func(data []byte)) { cd = ChatUnsubscribe(data) case "ObjectChatAdd": cd = ObjectChatAdd(data) + case "ApiStartServer": + cd = ApiStartServer(data) + case "ApiStopServer": + cd = ApiStopServer(data) default: log.Errorf("unknown command type: %s\n", cmd) } @@ -10414,3 +10465,31 @@ func (h *ClientCommandsHandlerProxy) ObjectChatAdd(ctx context.Context, req *pb. call, _ := actualCall(ctx, req) return call.(*pb.RpcObjectChatAddResponse) } +func (h *ClientCommandsHandlerProxy) ApiStartServer(ctx context.Context, req *pb.RpcApiStartServerRequest) *pb.RpcApiStartServerResponse { + actualCall := func(ctx context.Context, req any) (any, error) { + return h.client.ApiStartServer(ctx, req.(*pb.RpcApiStartServerRequest)), nil + } + for _, interceptor := range h.interceptors { + toCall := actualCall + currentInterceptor := interceptor + actualCall = func(ctx context.Context, req any) (any, error) { + return currentInterceptor(ctx, req, "ApiStartServer", toCall) + } + } + call, _ := actualCall(ctx, req) + return call.(*pb.RpcApiStartServerResponse) +} +func (h *ClientCommandsHandlerProxy) ApiStopServer(ctx context.Context, req *pb.RpcApiStopServerRequest) *pb.RpcApiStopServerResponse { + actualCall := func(ctx context.Context, req any) (any, error) { + return h.client.ApiStopServer(ctx, req.(*pb.RpcApiStopServerRequest)), nil + } + for _, interceptor := range h.interceptors { + toCall := actualCall + currentInterceptor := interceptor + actualCall = func(ctx context.Context, req any) (any, error) { + return currentInterceptor(ctx, req, "ApiStopServer", toCall) + } + } + call, _ := actualCall(ctx, req) + return call.(*pb.RpcApiStopServerResponse) +} diff --git a/core/api/service.go b/core/api/service.go index d7b1d1507..13ceeab58 100644 --- a/core/api/service.go +++ b/core/api/service.go @@ -2,8 +2,10 @@ package api import ( "context" + "errors" "fmt" "net/http" + "strings" "time" "github.com/anyproto/any-sync/app" @@ -19,10 +21,15 @@ const ( ) var ( - mwSrv service.ClientCommandsServer + mwSrv service.ClientCommandsServer + ErrPortAlreadyUsed = fmt.Errorf("port %s is already in use", httpPort) + ErrServerAlreadyStarted = fmt.Errorf("server already started") + ErrServerNotStarted = fmt.Errorf("server not started") ) type Api interface { + Start() error + Stop() error app.ComponentRunnable } @@ -59,24 +66,27 @@ func (s *apiService) Name() (name string) { // @externalDocs.description OpenAPI // @externalDocs.url https://swagger.io/resources/open-api/ func (s *apiService) Init(a *app.App) (err error) { - fmt.Println("Initializing API service...") - s.srv = server.NewServer(a, s.mw) + return nil +} + +func (s *apiService) Run(ctx context.Context) (err error) { + // TODO: remove once client takes responsibility s.httpSrv = &http.Server{ Addr: httpPort, Handler: s.srv.Engine(), ReadHeaderTimeout: timeout, } - return nil -} - -func (s *apiService) Run(ctx context.Context) (err error) { fmt.Printf("Starting API server on %s\n", s.httpSrv.Addr) go func() { - if err := s.httpSrv.ListenAndServe(); err != nil && err != http.ErrServerClosed { - fmt.Printf("API server ListenAndServe error: %v\n", err) + if err := s.httpSrv.ListenAndServe(); err != nil && !errors.Is(err, http.ErrServerClosed) { + if strings.Contains(err.Error(), "address already in use") { + fmt.Printf("API server ListenAndServe error: %v\n", ErrPortAlreadyUsed) + } else { + fmt.Printf("API server ListenAndServe error: %v\n", err) + } } }() @@ -84,18 +94,59 @@ func (s *apiService) Run(ctx context.Context) (err error) { } func (s *apiService) Close(ctx context.Context) (err error) { - fmt.Println("Closing API service...") + if s.httpSrv == nil { + return nil + } - // Give the server a short time to finish ongoing requests. shutdownCtx, cancel := context.WithTimeout(ctx, timeout) defer cancel() if err := s.httpSrv.Shutdown(shutdownCtx); err != nil { - fmt.Printf("API server shutdown error: %v\n", err) return err } - fmt.Println("API service stopped gracefully.") + return nil +} + +func (s *apiService) Start() error { + if s.httpSrv != nil { + return ErrServerAlreadyStarted + } + + s.httpSrv = &http.Server{ + Addr: httpPort, + Handler: s.srv.Engine(), + ReadHeaderTimeout: timeout, + } + + fmt.Printf("Starting API server on %s\n", s.httpSrv.Addr) + + go func() { + if err := s.httpSrv.ListenAndServe(); err != nil && !errors.Is(err, http.ErrServerClosed) { + if strings.Contains(err.Error(), "address already in use") { + fmt.Printf("API server ListenAndServe error: %v\n", ErrPortAlreadyUsed) + } else { + fmt.Printf("API server ListenAndServe error: %v\n", err) + } + } + }() + + return nil +} +func (s *apiService) Stop() error { + if s.httpSrv == nil { + return ErrServerNotStarted + } + + shutdownCtx, cancel := context.WithTimeout(context.Background(), timeout) + defer cancel() + + if err := s.httpSrv.Shutdown(shutdownCtx); err != nil { + return err + } + + // Clear the server reference to allow reinitialization + s.httpSrv = nil return nil } diff --git a/docs/proto.md b/docs/proto.md index c7d539e7e..1ff0ea3dd 100644 --- a/docs/proto.md +++ b/docs/proto.md @@ -107,6 +107,15 @@ - [Rpc.Account.Stop.Request](#anytype-Rpc-Account-Stop-Request) - [Rpc.Account.Stop.Response](#anytype-Rpc-Account-Stop-Response) - [Rpc.Account.Stop.Response.Error](#anytype-Rpc-Account-Stop-Response-Error) + - [Rpc.Api](#anytype-Rpc-Api) + - [Rpc.Api.StartServer](#anytype-Rpc-Api-StartServer) + - [Rpc.Api.StartServer.Request](#anytype-Rpc-Api-StartServer-Request) + - [Rpc.Api.StartServer.Response](#anytype-Rpc-Api-StartServer-Response) + - [Rpc.Api.StartServer.Response.Error](#anytype-Rpc-Api-StartServer-Response-Error) + - [Rpc.Api.StopServer](#anytype-Rpc-Api-StopServer) + - [Rpc.Api.StopServer.Request](#anytype-Rpc-Api-StopServer-Request) + - [Rpc.Api.StopServer.Response](#anytype-Rpc-Api-StopServer-Response) + - [Rpc.Api.StopServer.Response.Error](#anytype-Rpc-Api-StopServer-Response-Error) - [Rpc.App](#anytype-Rpc-App) - [Rpc.App.GetVersion](#anytype-Rpc-App-GetVersion) - [Rpc.App.GetVersion.Request](#anytype-Rpc-App-GetVersion-Request) @@ -1267,6 +1276,8 @@ - [Rpc.Account.RevertDeletion.Response.Error.Code](#anytype-Rpc-Account-RevertDeletion-Response-Error-Code) - [Rpc.Account.Select.Response.Error.Code](#anytype-Rpc-Account-Select-Response-Error-Code) - [Rpc.Account.Stop.Response.Error.Code](#anytype-Rpc-Account-Stop-Response-Error-Code) + - [Rpc.Api.StartServer.Response.Error.Code](#anytype-Rpc-Api-StartServer-Response-Error-Code) + - [Rpc.Api.StopServer.Response.Error.Code](#anytype-Rpc-Api-StopServer-Response-Error-Code) - [Rpc.App.GetVersion.Response.Error.Code](#anytype-Rpc-App-GetVersion-Response-Error-Code) - [Rpc.App.SetDeviceState.Request.DeviceState](#anytype-Rpc-App-SetDeviceState-Request-DeviceState) - [Rpc.App.SetDeviceState.Response.Error.Code](#anytype-Rpc-App-SetDeviceState-Response-Error-Code) @@ -2233,6 +2244,8 @@ | ChatSubscribeLastMessages | [Rpc.Chat.SubscribeLastMessages.Request](#anytype-Rpc-Chat-SubscribeLastMessages-Request) | [Rpc.Chat.SubscribeLastMessages.Response](#anytype-Rpc-Chat-SubscribeLastMessages-Response) | | | ChatUnsubscribe | [Rpc.Chat.Unsubscribe.Request](#anytype-Rpc-Chat-Unsubscribe-Request) | [Rpc.Chat.Unsubscribe.Response](#anytype-Rpc-Chat-Unsubscribe-Response) | | | ObjectChatAdd | [Rpc.Object.ChatAdd.Request](#anytype-Rpc-Object-ChatAdd-Request) | [Rpc.Object.ChatAdd.Response](#anytype-Rpc-Object-ChatAdd-Response) | | +| ApiStartServer | [Rpc.Api.StartServer.Request](#anytype-Rpc-Api-StartServer-Request) | [Rpc.Api.StartServer.Response](#anytype-Rpc-Api-StartServer-Response) | API *** | +| ApiStopServer | [Rpc.Api.StopServer.Request](#anytype-Rpc-Api-StopServer-Request) | [Rpc.Api.StopServer.Response](#anytype-Rpc-Api-StopServer-Response) | | @@ -3702,6 +3715,118 @@ Middleware-to-front-end response for an account stop request + + +### Rpc.Api + + + + + + + + + +### Rpc.Api.StartServer + + + + + + + + + +### Rpc.Api.StartServer.Request +empty + + + + + + + + +### Rpc.Api.StartServer.Response + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| error | [Rpc.Api.StartServer.Response.Error](#anytype-Rpc-Api-StartServer-Response-Error) | | | + + + + + + + + +### Rpc.Api.StartServer.Response.Error + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| code | [Rpc.Api.StartServer.Response.Error.Code](#anytype-Rpc-Api-StartServer-Response-Error-Code) | | | +| description | [string](#string) | | | + + + + + + + + +### Rpc.Api.StopServer + + + + + + + + + +### Rpc.Api.StopServer.Request +empty + + + + + + + + +### Rpc.Api.StopServer.Response + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| error | [Rpc.Api.StopServer.Response.Error](#anytype-Rpc-Api-StopServer-Response-Error) | | | + + + + + + + + +### Rpc.Api.StopServer.Response.Error + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| code | [Rpc.Api.StopServer.Response.Error.Code](#anytype-Rpc-Api-StopServer-Response-Error-Code) | | | +| description | [string](#string) | | | + + + + + + ### Rpc.App @@ -20602,6 +20727,35 @@ Middleware-to-front-end response, that can contain a NULL error or a non-NULL er + + +### Rpc.Api.StartServer.Response.Error.Code + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| NULL | 0 | | +| UNKNOWN_ERROR | 1 | | +| BAD_INPUT | 2 | | +| PORT_ALREADY_USED | 3 | | +| SERVER_ALREADY_STARTED | 4 | | + + + + + +### Rpc.Api.StopServer.Response.Error.Code + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| NULL | 0 | | +| UNKNOWN_ERROR | 1 | | +| BAD_INPUT | 2 | | +| SERVER_NOT_STARTED | 3 | | + + + ### Rpc.App.GetVersion.Response.Error.Code diff --git a/pb/commands.pb.go b/pb/commands.pb.go index 57d40ca5f..288670d9e 100644 --- a/pb/commands.pb.go +++ b/pb/commands.pb.go @@ -9034,6 +9034,71 @@ func (RpcChatUnsubscribeResponseErrorCode) EnumDescriptor() ([]byte, []int) { return fileDescriptor_8261c968b2e6f45c, []int{0, 40, 7, 1, 0, 0} } +type RpcApiStartServerResponseErrorCode int32 + +const ( + RpcApiStartServerResponseError_NULL RpcApiStartServerResponseErrorCode = 0 + RpcApiStartServerResponseError_UNKNOWN_ERROR RpcApiStartServerResponseErrorCode = 1 + RpcApiStartServerResponseError_BAD_INPUT RpcApiStartServerResponseErrorCode = 2 + RpcApiStartServerResponseError_PORT_ALREADY_USED RpcApiStartServerResponseErrorCode = 3 + RpcApiStartServerResponseError_SERVER_ALREADY_STARTED RpcApiStartServerResponseErrorCode = 4 +) + +var RpcApiStartServerResponseErrorCode_name = map[int32]string{ + 0: "NULL", + 1: "UNKNOWN_ERROR", + 2: "BAD_INPUT", + 3: "PORT_ALREADY_USED", + 4: "SERVER_ALREADY_STARTED", +} + +var RpcApiStartServerResponseErrorCode_value = map[string]int32{ + "NULL": 0, + "UNKNOWN_ERROR": 1, + "BAD_INPUT": 2, + "PORT_ALREADY_USED": 3, + "SERVER_ALREADY_STARTED": 4, +} + +func (x RpcApiStartServerResponseErrorCode) String() string { + return proto.EnumName(RpcApiStartServerResponseErrorCode_name, int32(x)) +} + +func (RpcApiStartServerResponseErrorCode) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 41, 0, 1, 0, 0} +} + +type RpcApiStopServerResponseErrorCode int32 + +const ( + RpcApiStopServerResponseError_NULL RpcApiStopServerResponseErrorCode = 0 + RpcApiStopServerResponseError_UNKNOWN_ERROR RpcApiStopServerResponseErrorCode = 1 + RpcApiStopServerResponseError_BAD_INPUT RpcApiStopServerResponseErrorCode = 2 + RpcApiStopServerResponseError_SERVER_NOT_STARTED RpcApiStopServerResponseErrorCode = 3 +) + +var RpcApiStopServerResponseErrorCode_name = map[int32]string{ + 0: "NULL", + 1: "UNKNOWN_ERROR", + 2: "BAD_INPUT", + 3: "SERVER_NOT_STARTED", +} + +var RpcApiStopServerResponseErrorCode_value = map[string]int32{ + "NULL": 0, + "UNKNOWN_ERROR": 1, + "BAD_INPUT": 2, + "SERVER_NOT_STARTED": 3, +} + +func (x RpcApiStopServerResponseErrorCode) String() string { + return proto.EnumName(RpcApiStopServerResponseErrorCode_name, int32(x)) +} + +func (RpcApiStopServerResponseErrorCode) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 41, 1, 1, 0, 0} +} + // Rpc is a namespace, that agregates all of the service commands between client and middleware. // Structure: Topic > Subtopic > Subsub... > Action > (Request, Response). // Request – message from a client. @@ -69181,6 +69246,378 @@ func (m *RpcChatUnsubscribeResponseError) GetDescription() string { return "" } +type RpcApi struct { +} + +func (m *RpcApi) Reset() { *m = RpcApi{} } +func (m *RpcApi) String() string { return proto.CompactTextString(m) } +func (*RpcApi) ProtoMessage() {} +func (*RpcApi) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 41} +} +func (m *RpcApi) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcApi) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcApi.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcApi) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcApi.Merge(m, src) +} +func (m *RpcApi) XXX_Size() int { + return m.Size() +} +func (m *RpcApi) XXX_DiscardUnknown() { + xxx_messageInfo_RpcApi.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcApi proto.InternalMessageInfo + +type RpcApiStartServer struct { +} + +func (m *RpcApiStartServer) Reset() { *m = RpcApiStartServer{} } +func (m *RpcApiStartServer) String() string { return proto.CompactTextString(m) } +func (*RpcApiStartServer) ProtoMessage() {} +func (*RpcApiStartServer) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 41, 0} +} +func (m *RpcApiStartServer) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcApiStartServer) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcApiStartServer.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcApiStartServer) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcApiStartServer.Merge(m, src) +} +func (m *RpcApiStartServer) XXX_Size() int { + return m.Size() +} +func (m *RpcApiStartServer) XXX_DiscardUnknown() { + xxx_messageInfo_RpcApiStartServer.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcApiStartServer proto.InternalMessageInfo + +type RpcApiStartServerRequest struct { +} + +func (m *RpcApiStartServerRequest) Reset() { *m = RpcApiStartServerRequest{} } +func (m *RpcApiStartServerRequest) String() string { return proto.CompactTextString(m) } +func (*RpcApiStartServerRequest) ProtoMessage() {} +func (*RpcApiStartServerRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 41, 0, 0} +} +func (m *RpcApiStartServerRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcApiStartServerRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcApiStartServerRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcApiStartServerRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcApiStartServerRequest.Merge(m, src) +} +func (m *RpcApiStartServerRequest) XXX_Size() int { + return m.Size() +} +func (m *RpcApiStartServerRequest) XXX_DiscardUnknown() { + xxx_messageInfo_RpcApiStartServerRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcApiStartServerRequest proto.InternalMessageInfo + +type RpcApiStartServerResponse struct { + Error *RpcApiStartServerResponseError `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` +} + +func (m *RpcApiStartServerResponse) Reset() { *m = RpcApiStartServerResponse{} } +func (m *RpcApiStartServerResponse) String() string { return proto.CompactTextString(m) } +func (*RpcApiStartServerResponse) ProtoMessage() {} +func (*RpcApiStartServerResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 41, 0, 1} +} +func (m *RpcApiStartServerResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcApiStartServerResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcApiStartServerResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcApiStartServerResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcApiStartServerResponse.Merge(m, src) +} +func (m *RpcApiStartServerResponse) XXX_Size() int { + return m.Size() +} +func (m *RpcApiStartServerResponse) XXX_DiscardUnknown() { + xxx_messageInfo_RpcApiStartServerResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcApiStartServerResponse proto.InternalMessageInfo + +func (m *RpcApiStartServerResponse) GetError() *RpcApiStartServerResponseError { + if m != nil { + return m.Error + } + return nil +} + +type RpcApiStartServerResponseError struct { + Code RpcApiStartServerResponseErrorCode `protobuf:"varint,1,opt,name=code,proto3,enum=anytype.RpcApiStartServerResponseErrorCode" json:"code,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` +} + +func (m *RpcApiStartServerResponseError) Reset() { *m = RpcApiStartServerResponseError{} } +func (m *RpcApiStartServerResponseError) String() string { return proto.CompactTextString(m) } +func (*RpcApiStartServerResponseError) ProtoMessage() {} +func (*RpcApiStartServerResponseError) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 41, 0, 1, 0} +} +func (m *RpcApiStartServerResponseError) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcApiStartServerResponseError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcApiStartServerResponseError.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcApiStartServerResponseError) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcApiStartServerResponseError.Merge(m, src) +} +func (m *RpcApiStartServerResponseError) XXX_Size() int { + return m.Size() +} +func (m *RpcApiStartServerResponseError) XXX_DiscardUnknown() { + xxx_messageInfo_RpcApiStartServerResponseError.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcApiStartServerResponseError proto.InternalMessageInfo + +func (m *RpcApiStartServerResponseError) GetCode() RpcApiStartServerResponseErrorCode { + if m != nil { + return m.Code + } + return RpcApiStartServerResponseError_NULL +} + +func (m *RpcApiStartServerResponseError) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +type RpcApiStopServer struct { +} + +func (m *RpcApiStopServer) Reset() { *m = RpcApiStopServer{} } +func (m *RpcApiStopServer) String() string { return proto.CompactTextString(m) } +func (*RpcApiStopServer) ProtoMessage() {} +func (*RpcApiStopServer) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 41, 1} +} +func (m *RpcApiStopServer) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcApiStopServer) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcApiStopServer.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcApiStopServer) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcApiStopServer.Merge(m, src) +} +func (m *RpcApiStopServer) XXX_Size() int { + return m.Size() +} +func (m *RpcApiStopServer) XXX_DiscardUnknown() { + xxx_messageInfo_RpcApiStopServer.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcApiStopServer proto.InternalMessageInfo + +type RpcApiStopServerRequest struct { +} + +func (m *RpcApiStopServerRequest) Reset() { *m = RpcApiStopServerRequest{} } +func (m *RpcApiStopServerRequest) String() string { return proto.CompactTextString(m) } +func (*RpcApiStopServerRequest) ProtoMessage() {} +func (*RpcApiStopServerRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 41, 1, 0} +} +func (m *RpcApiStopServerRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcApiStopServerRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcApiStopServerRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcApiStopServerRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcApiStopServerRequest.Merge(m, src) +} +func (m *RpcApiStopServerRequest) XXX_Size() int { + return m.Size() +} +func (m *RpcApiStopServerRequest) XXX_DiscardUnknown() { + xxx_messageInfo_RpcApiStopServerRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcApiStopServerRequest proto.InternalMessageInfo + +type RpcApiStopServerResponse struct { + Error *RpcApiStopServerResponseError `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` +} + +func (m *RpcApiStopServerResponse) Reset() { *m = RpcApiStopServerResponse{} } +func (m *RpcApiStopServerResponse) String() string { return proto.CompactTextString(m) } +func (*RpcApiStopServerResponse) ProtoMessage() {} +func (*RpcApiStopServerResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 41, 1, 1} +} +func (m *RpcApiStopServerResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcApiStopServerResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcApiStopServerResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcApiStopServerResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcApiStopServerResponse.Merge(m, src) +} +func (m *RpcApiStopServerResponse) XXX_Size() int { + return m.Size() +} +func (m *RpcApiStopServerResponse) XXX_DiscardUnknown() { + xxx_messageInfo_RpcApiStopServerResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcApiStopServerResponse proto.InternalMessageInfo + +func (m *RpcApiStopServerResponse) GetError() *RpcApiStopServerResponseError { + if m != nil { + return m.Error + } + return nil +} + +type RpcApiStopServerResponseError struct { + Code RpcApiStopServerResponseErrorCode `protobuf:"varint,1,opt,name=code,proto3,enum=anytype.RpcApiStopServerResponseErrorCode" json:"code,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` +} + +func (m *RpcApiStopServerResponseError) Reset() { *m = RpcApiStopServerResponseError{} } +func (m *RpcApiStopServerResponseError) String() string { return proto.CompactTextString(m) } +func (*RpcApiStopServerResponseError) ProtoMessage() {} +func (*RpcApiStopServerResponseError) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 41, 1, 1, 0} +} +func (m *RpcApiStopServerResponseError) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcApiStopServerResponseError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcApiStopServerResponseError.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcApiStopServerResponseError) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcApiStopServerResponseError.Merge(m, src) +} +func (m *RpcApiStopServerResponseError) XXX_Size() int { + return m.Size() +} +func (m *RpcApiStopServerResponseError) XXX_DiscardUnknown() { + xxx_messageInfo_RpcApiStopServerResponseError.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcApiStopServerResponseError proto.InternalMessageInfo + +func (m *RpcApiStopServerResponseError) GetCode() RpcApiStopServerResponseErrorCode { + if m != nil { + return m.Code + } + return RpcApiStopServerResponseError_NULL +} + +func (m *RpcApiStopServerResponseError) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + type Empty struct { } @@ -69564,6 +70001,8 @@ func init() { proto.RegisterEnum("anytype.RpcChatGetMessagesByIdsResponseErrorCode", RpcChatGetMessagesByIdsResponseErrorCode_name, RpcChatGetMessagesByIdsResponseErrorCode_value) proto.RegisterEnum("anytype.RpcChatSubscribeLastMessagesResponseErrorCode", RpcChatSubscribeLastMessagesResponseErrorCode_name, RpcChatSubscribeLastMessagesResponseErrorCode_value) proto.RegisterEnum("anytype.RpcChatUnsubscribeResponseErrorCode", RpcChatUnsubscribeResponseErrorCode_name, RpcChatUnsubscribeResponseErrorCode_value) + proto.RegisterEnum("anytype.RpcApiStartServerResponseErrorCode", RpcApiStartServerResponseErrorCode_name, RpcApiStartServerResponseErrorCode_value) + proto.RegisterEnum("anytype.RpcApiStopServerResponseErrorCode", RpcApiStopServerResponseErrorCode_name, RpcApiStopServerResponseErrorCode_value) proto.RegisterType((*Rpc)(nil), "anytype.Rpc") proto.RegisterType((*RpcApp)(nil), "anytype.Rpc.App") proto.RegisterType((*RpcAppGetVersion)(nil), "anytype.Rpc.App.GetVersion") @@ -70766,6 +71205,15 @@ func init() { proto.RegisterType((*RpcChatUnsubscribeRequest)(nil), "anytype.Rpc.Chat.Unsubscribe.Request") proto.RegisterType((*RpcChatUnsubscribeResponse)(nil), "anytype.Rpc.Chat.Unsubscribe.Response") proto.RegisterType((*RpcChatUnsubscribeResponseError)(nil), "anytype.Rpc.Chat.Unsubscribe.Response.Error") + proto.RegisterType((*RpcApi)(nil), "anytype.Rpc.Api") + proto.RegisterType((*RpcApiStartServer)(nil), "anytype.Rpc.Api.StartServer") + proto.RegisterType((*RpcApiStartServerRequest)(nil), "anytype.Rpc.Api.StartServer.Request") + proto.RegisterType((*RpcApiStartServerResponse)(nil), "anytype.Rpc.Api.StartServer.Response") + proto.RegisterType((*RpcApiStartServerResponseError)(nil), "anytype.Rpc.Api.StartServer.Response.Error") + proto.RegisterType((*RpcApiStopServer)(nil), "anytype.Rpc.Api.StopServer") + proto.RegisterType((*RpcApiStopServerRequest)(nil), "anytype.Rpc.Api.StopServer.Request") + proto.RegisterType((*RpcApiStopServerResponse)(nil), "anytype.Rpc.Api.StopServer.Response") + proto.RegisterType((*RpcApiStopServerResponseError)(nil), "anytype.Rpc.Api.StopServer.Response.Error") proto.RegisterType((*Empty)(nil), "anytype.Empty") proto.RegisterType((*StreamRequest)(nil), "anytype.StreamRequest") proto.RegisterExtension(E_NoAuth) @@ -70774,1209 +71222,1217 @@ func init() { func init() { proto.RegisterFile("pb/protos/commands.proto", fileDescriptor_8261c968b2e6f45c) } var fileDescriptor_8261c968b2e6f45c = []byte{ - // 19227 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x7f, 0x9c, 0x23, 0x47, - 0x75, 0x2f, 0xba, 0x52, 0x4b, 0x9a, 0x99, 0x33, 0x3f, 0x56, 0xdb, 0xde, 0x5d, 0xaf, 0xcb, 0x66, - 0x6d, 0xd6, 0xc6, 0x38, 0xc6, 0x8c, 0x8d, 0x21, 0x80, 0x8d, 0x8d, 0xad, 0xd1, 0x68, 0x66, 0x64, - 0xcf, 0x48, 0x43, 0x4b, 0xb3, 0x8b, 0x93, 0x9b, 0xa7, 0xdb, 0x2b, 0xd5, 0xcc, 0xb4, 0x57, 0xd3, - 0xad, 0xb4, 0x7a, 0x66, 0xbd, 0xbc, 0xcf, 0x7d, 0x37, 0x84, 0x98, 0x1f, 0x21, 0x5c, 0x42, 0x08, - 0x49, 0xf8, 0x0d, 0x06, 0xc3, 0x85, 0x04, 0x08, 0xbf, 0x2f, 0x24, 0x01, 0xc2, 0x8f, 0x40, 0x48, - 0x42, 0x08, 0x84, 0x40, 0x48, 0x78, 0x81, 0x40, 0x08, 0x79, 0x9f, 0x10, 0x5e, 0xf2, 0x6e, 0xe0, - 0x92, 0x84, 0x97, 0xf7, 0xe9, 0xaa, 0xea, 0xee, 0x2a, 0x8d, 0xba, 0x55, 0xad, 0x51, 0x6b, 0x4c, - 0x78, 0xff, 0x75, 0x57, 0x57, 0x9f, 0x3a, 0x75, 0xbe, 0xa7, 0xaa, 0x4e, 0x55, 0x9d, 0x3a, 0x05, + // 19346 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x7b, 0x98, 0x24, 0x47, + 0x75, 0x27, 0x3a, 0x95, 0x59, 0x55, 0xdd, 0x7d, 0xfa, 0x31, 0x35, 0xa9, 0x99, 0xd1, 0x28, 0x24, + 0x46, 0xf2, 0x48, 0x08, 0x59, 0x88, 0x96, 0x10, 0x18, 0x23, 0x21, 0x21, 0x55, 0x57, 0x67, 0x77, + 0x97, 0xd4, 0x5d, 0xd5, 0x64, 0x55, 0xcf, 0x20, 0xef, 0xfa, 0xd6, 0xe6, 0x54, 0x45, 0x77, 0xa7, + 0xa6, 0x3a, 0xb3, 0x9c, 0x95, 0xdd, 0xa3, 0xe1, 0x7e, 0x7b, 0xd7, 0x18, 0x8b, 0x87, 0x31, 0x8b, + 0x31, 0xc6, 0x36, 0x6f, 0x10, 0x08, 0x16, 0x6c, 0xc0, 0xbc, 0x17, 0x6c, 0xf3, 0xc6, 0x60, 0x6c, + 0x63, 0x0c, 0xe6, 0x61, 0x6c, 0xae, 0xc1, 0x60, 0x8c, 0xef, 0x67, 0x96, 0x6b, 0xdf, 0x35, 0x2c, + 0xb6, 0xb9, 0xdc, 0x2f, 0x23, 0x23, 0x33, 0x23, 0xaa, 0x2b, 0xb3, 0x22, 0xab, 0x2b, 0xab, 0x85, + 0xb9, 0xff, 0x65, 0x46, 0x46, 0x9e, 0x38, 0x71, 0x7e, 0x27, 0x22, 0x4e, 0x44, 0x9c, 0x38, 0x01, 0xa7, 0x3a, 0xe7, 0x6f, 0xee, 0xd8, 0x96, 0x63, 0x75, 0x6f, 0x6e, 0x5a, 0x3b, 0x3b, 0xba, 0xd9, - 0xea, 0xce, 0x93, 0x77, 0x75, 0x42, 0x37, 0x2f, 0x39, 0x97, 0x3a, 0x18, 0x5d, 0xd7, 0xb9, 0xb0, - 0x75, 0x73, 0xdb, 0x38, 0x7f, 0x73, 0xe7, 0xfc, 0xcd, 0x3b, 0x56, 0x0b, 0xb7, 0xbd, 0x1f, 0xc8, - 0x0b, 0xcb, 0x8e, 0x6e, 0x08, 0xcb, 0xd5, 0xb6, 0x9a, 0x7a, 0xbb, 0xeb, 0x58, 0x36, 0x66, 0x39, - 0x4f, 0x06, 0x45, 0xe2, 0x3d, 0x6c, 0x3a, 0x1e, 0x85, 0xab, 0xb6, 0x2c, 0x6b, 0xab, 0x8d, 0xe9, - 0xb7, 0xf3, 0xbb, 0x9b, 0x37, 0x77, 0x1d, 0x7b, 0xb7, 0xe9, 0xb0, 0xaf, 0xd7, 0xf4, 0x7e, 0x6d, - 0xe1, 0x6e, 0xd3, 0x36, 0x3a, 0x8e, 0x65, 0xd3, 0x1c, 0x67, 0xfe, 0xe1, 0x5f, 0x26, 0x40, 0xd1, - 0x3a, 0x4d, 0xf4, 0xdd, 0x09, 0x50, 0x0a, 0x9d, 0x0e, 0xfa, 0x44, 0x1a, 0x60, 0x19, 0x3b, 0x67, - 0xb1, 0xdd, 0x35, 0x2c, 0x13, 0x1d, 0x85, 0x09, 0x0d, 0xff, 0xf4, 0x2e, 0xee, 0x3a, 0xb7, 0x67, - 0x9e, 0xff, 0x4d, 0x25, 0x85, 0x1e, 0x4e, 0xc3, 0xa4, 0x86, 0xbb, 0x1d, 0xcb, 0xec, 0x62, 0xf5, - 0x6e, 0xc8, 0x62, 0xdb, 0xb6, 0xec, 0x53, 0xa9, 0x6b, 0x52, 0x37, 0x4c, 0xdf, 0x7a, 0xe3, 0x3c, - 0xab, 0xfe, 0xbc, 0xd6, 0x69, 0xce, 0x17, 0x3a, 0x9d, 0xf9, 0x80, 0xd2, 0xbc, 0xf7, 0xd3, 0x7c, - 0xc9, 0xfd, 0x43, 0xa3, 0x3f, 0xaa, 0xa7, 0x60, 0x62, 0x8f, 0x66, 0x38, 0x95, 0xbe, 0x26, 0x75, - 0xc3, 0x94, 0xe6, 0xbd, 0xba, 0x5f, 0x5a, 0xd8, 0xd1, 0x8d, 0x76, 0xf7, 0x94, 0x42, 0xbf, 0xb0, - 0x57, 0xf4, 0x50, 0x0a, 0xb2, 0x84, 0x88, 0x5a, 0x84, 0x4c, 0xd3, 0x6a, 0x61, 0x52, 0xfc, 0xdc, - 0xad, 0x37, 0xcb, 0x17, 0x3f, 0x5f, 0xb4, 0x5a, 0x58, 0x23, 0x3f, 0xab, 0xd7, 0xc0, 0xb4, 0x27, - 0x96, 0x80, 0x0d, 0x3e, 0xe9, 0xcc, 0xad, 0x90, 0x71, 0xf3, 0xab, 0x93, 0x90, 0xa9, 0x6c, 0xac, - 0xae, 0xe6, 0x8f, 0xa8, 0xc7, 0x60, 0x76, 0xa3, 0x72, 0x6f, 0xa5, 0x7a, 0xae, 0xd2, 0x28, 0x69, - 0x5a, 0x55, 0xcb, 0xa7, 0xd4, 0x59, 0x98, 0x5a, 0x28, 0x2c, 0x36, 0xca, 0x95, 0xf5, 0x8d, 0x7a, - 0x3e, 0x8d, 0x5e, 0xa3, 0xc0, 0x5c, 0x0d, 0x3b, 0x8b, 0x78, 0xcf, 0x68, 0xe2, 0x9a, 0xa3, 0x3b, - 0x18, 0xbd, 0x38, 0xe5, 0x0b, 0x53, 0xdd, 0x70, 0x0b, 0xf5, 0x3f, 0xb1, 0x0a, 0x3c, 0x71, 0x5f, - 0x05, 0x44, 0x0a, 0xf3, 0xec, 0xef, 0x79, 0x2e, 0x4d, 0xe3, 0xe9, 0x9c, 0x79, 0x3c, 0x4c, 0x73, - 0xdf, 0xd4, 0x39, 0x80, 0x85, 0x42, 0xf1, 0xde, 0x65, 0xad, 0xba, 0x51, 0x59, 0xcc, 0x1f, 0x71, - 0xdf, 0x97, 0xaa, 0x5a, 0x89, 0xbd, 0xa7, 0xd0, 0xf7, 0x53, 0x1c, 0x98, 0x8b, 0x22, 0x98, 0xf3, - 0x83, 0x99, 0xe9, 0x03, 0x28, 0x7a, 0x93, 0x0f, 0xce, 0xb2, 0x00, 0xce, 0x13, 0xe3, 0x91, 0x4b, - 0x1e, 0xa0, 0x07, 0xd3, 0x30, 0x59, 0xdb, 0xde, 0x75, 0x5a, 0xd6, 0x45, 0x13, 0x4d, 0xf9, 0xc8, - 0xa0, 0x6f, 0xf3, 0x32, 0x79, 0xba, 0x28, 0x93, 0x1b, 0xf6, 0x57, 0x82, 0x51, 0x08, 0x91, 0xc6, - 0xeb, 0x7c, 0x69, 0x14, 0x04, 0x69, 0x3c, 0x5e, 0x96, 0x50, 0xf2, 0x72, 0x78, 0xc5, 0x53, 0x21, - 0x5b, 0xeb, 0xe8, 0x4d, 0x8c, 0xfe, 0x50, 0x81, 0x99, 0x55, 0xac, 0xef, 0xe1, 0x42, 0xa7, 0x63, - 0x5b, 0x7b, 0x18, 0x15, 0x03, 0x7d, 0x3d, 0x05, 0x13, 0x5d, 0x37, 0x53, 0xb9, 0x45, 0x6a, 0x30, - 0xa5, 0x79, 0xaf, 0xea, 0x69, 0x00, 0xa3, 0x85, 0x4d, 0xc7, 0x70, 0x0c, 0xdc, 0x3d, 0x95, 0xbe, - 0x46, 0xb9, 0x61, 0x4a, 0xe3, 0x52, 0xd0, 0x77, 0xd3, 0xb2, 0x3a, 0x46, 0xb8, 0x98, 0xe7, 0x39, - 0x08, 0x91, 0xea, 0x1b, 0xd2, 0x32, 0x3a, 0x36, 0x90, 0x5c, 0x3c, 0xd9, 0xbe, 0x3d, 0x15, 0x5f, - 0xb8, 0x6e, 0x8e, 0x4a, 0xb5, 0x51, 0xdb, 0x28, 0xae, 0x34, 0x6a, 0xeb, 0x85, 0x62, 0x29, 0x8f, - 0xd5, 0xe3, 0x90, 0x27, 0x8f, 0x8d, 0x72, 0xad, 0xb1, 0x58, 0x5a, 0x2d, 0xd5, 0x4b, 0x8b, 0xf9, - 0x4d, 0x55, 0x85, 0x39, 0xad, 0xf4, 0x8c, 0x8d, 0x52, 0xad, 0xde, 0x58, 0x2a, 0x94, 0x57, 0x4b, - 0x8b, 0xf9, 0x2d, 0xf7, 0xe7, 0xd5, 0xf2, 0x5a, 0xb9, 0xde, 0xd0, 0x4a, 0x85, 0xe2, 0x4a, 0x69, - 0x31, 0xbf, 0xad, 0x5e, 0x0e, 0x97, 0x55, 0xaa, 0x8d, 0xc2, 0xfa, 0xba, 0x56, 0x3d, 0x5b, 0x6a, - 0xb0, 0x3f, 0x6a, 0x79, 0x83, 0x16, 0x54, 0x6f, 0xd4, 0x56, 0x0a, 0x5a, 0xa9, 0xb0, 0xb0, 0x5a, - 0xca, 0xdf, 0x8f, 0x9e, 0xa3, 0xc0, 0xec, 0x9a, 0x7e, 0x01, 0xd7, 0xb6, 0x75, 0x1b, 0xeb, 0xe7, - 0xdb, 0x18, 0x5d, 0x2b, 0x81, 0x27, 0xfa, 0x43, 0x1e, 0xaf, 0x92, 0x88, 0xd7, 0xcd, 0x7d, 0x04, - 0x2c, 0x14, 0x11, 0x02, 0xd8, 0xff, 0xf2, 0x9b, 0xc1, 0x8a, 0x00, 0xd8, 0x93, 0x62, 0xd2, 0x8b, - 0x87, 0xd8, 0xcf, 0x3e, 0x02, 0x10, 0x43, 0x5f, 0x51, 0x60, 0xae, 0x6c, 0xee, 0x19, 0x0e, 0x5e, - 0xc6, 0x26, 0xb6, 0xdd, 0x71, 0x40, 0x0a, 0x86, 0x87, 0x15, 0x0e, 0x86, 0x25, 0x11, 0x86, 0x5b, - 0xfa, 0x88, 0x4d, 0x2c, 0x23, 0x64, 0xb4, 0xbd, 0x0a, 0xa6, 0x0c, 0x92, 0xaf, 0x68, 0xb4, 0x98, - 0xc4, 0x82, 0x04, 0xf5, 0x3a, 0x98, 0xa5, 0x2f, 0x4b, 0x46, 0x1b, 0xdf, 0x8b, 0x2f, 0xb1, 0x71, - 0x57, 0x4c, 0x44, 0xbf, 0xe0, 0x37, 0xbe, 0xb2, 0x80, 0xe5, 0x8f, 0xc7, 0x65, 0x2a, 0x1e, 0x98, - 0x2f, 0x7b, 0x24, 0x34, 0xbf, 0x7d, 0xad, 0xcc, 0x40, 0x3f, 0x48, 0xc3, 0x74, 0xcd, 0xb1, 0x3a, - 0xae, 0xca, 0x1a, 0xe6, 0x96, 0x1c, 0xb8, 0x9f, 0xe2, 0xdb, 0x58, 0x51, 0x04, 0xf7, 0xf1, 0x7d, - 0xe4, 0xc8, 0x15, 0x10, 0xd2, 0xc2, 0xbe, 0xeb, 0xb7, 0xb0, 0x25, 0x01, 0x95, 0x5b, 0x63, 0x51, - 0xfb, 0x21, 0x6c, 0x5f, 0x2f, 0x53, 0x20, 0xef, 0xa9, 0x99, 0x53, 0xdc, 0xb5, 0x6d, 0x6c, 0x3a, - 0x72, 0x20, 0xfc, 0x05, 0x0f, 0xc2, 0x8a, 0x08, 0xc2, 0xad, 0x11, 0xca, 0xec, 0x95, 0x92, 0x60, - 0x1b, 0xfb, 0x88, 0x8f, 0xe6, 0xbd, 0x02, 0x9a, 0x4f, 0x89, 0xcf, 0x56, 0x3c, 0x48, 0x57, 0x86, - 0x40, 0xf4, 0x38, 0xe4, 0xdd, 0x31, 0xa9, 0x58, 0x2f, 0x9f, 0x2d, 0x35, 0xca, 0x95, 0xb3, 0xe5, - 0x7a, 0x29, 0x8f, 0xd1, 0x4b, 0x15, 0x98, 0xa1, 0xac, 0x69, 0x78, 0xcf, 0xba, 0x20, 0xd9, 0xeb, - 0x7d, 0x25, 0xa6, 0xb1, 0xc0, 0x97, 0x10, 0xd2, 0x32, 0x7e, 0x3e, 0x86, 0xb1, 0x10, 0x41, 0xee, - 0x91, 0xd4, 0x5b, 0xed, 0x6b, 0x06, 0x5b, 0x7d, 0x5a, 0x4b, 0xdf, 0xde, 0xea, 0x65, 0x19, 0x00, - 0x5a, 0xc9, 0xb3, 0x06, 0xbe, 0x88, 0xd6, 0x02, 0x4c, 0x04, 0xb5, 0x4d, 0x0d, 0x54, 0xdb, 0x74, - 0x3f, 0xb5, 0x7d, 0x3f, 0x3f, 0x66, 0x2d, 0x88, 0xe8, 0xdd, 0x14, 0x2a, 0x6e, 0x97, 0x93, 0xf0, - 0xd9, 0xa1, 0xa7, 0x28, 0x69, 0xd1, 0xea, 0xbc, 0x0a, 0xa6, 0xc8, 0x63, 0x45, 0xdf, 0xc1, 0xac, - 0x0d, 0x05, 0x09, 0xea, 0x19, 0x98, 0xa1, 0x19, 0x9b, 0x96, 0xe9, 0xd6, 0x27, 0x43, 0x32, 0x08, - 0x69, 0x2e, 0x88, 0x4d, 0x1b, 0xeb, 0x8e, 0x65, 0x13, 0x1a, 0x59, 0x0a, 0x22, 0x97, 0x84, 0xbe, - 0xe5, 0xb7, 0xc2, 0x92, 0xa0, 0x39, 0x4f, 0x88, 0x53, 0x95, 0x78, 0x7a, 0xb3, 0x37, 0x5c, 0xfb, - 0xa3, 0xad, 0xae, 0xe1, 0xa2, 0xbd, 0x44, 0xa6, 0x76, 0x58, 0x3d, 0x09, 0x2a, 0x4b, 0x75, 0xf3, - 0x16, 0xab, 0x95, 0x7a, 0xa9, 0x52, 0xcf, 0x6f, 0xf6, 0xd5, 0xa8, 0x2d, 0xf4, 0x86, 0x0c, 0x64, - 0xee, 0xb1, 0x0c, 0x13, 0x3d, 0x98, 0x12, 0x54, 0xc2, 0xc4, 0xce, 0x45, 0xcb, 0xbe, 0xe0, 0x37, - 0xd4, 0x20, 0x21, 0x1a, 0x9b, 0x40, 0x95, 0x94, 0x81, 0xaa, 0x94, 0xe9, 0xa7, 0x4a, 0xbf, 0xc4, - 0xab, 0xd2, 0x1d, 0xa2, 0x2a, 0x5d, 0xdf, 0x47, 0xfe, 0x2e, 0xf3, 0x21, 0x1d, 0xc0, 0x27, 0xfd, - 0x0e, 0xe0, 0x2e, 0x01, 0xc6, 0xc7, 0xc9, 0x91, 0x89, 0x07, 0xe0, 0x97, 0x13, 0x6d, 0xf8, 0xfd, - 0xa0, 0xde, 0x0a, 0x81, 0x7a, 0xbb, 0x4f, 0x9f, 0x60, 0xec, 0xef, 0x3a, 0xee, 0xdf, 0xdf, 0x4d, - 0x5c, 0x50, 0x4f, 0xc0, 0xb1, 0xc5, 0xf2, 0xd2, 0x52, 0x49, 0x2b, 0x55, 0xea, 0x8d, 0x4a, 0xa9, - 0x7e, 0xae, 0xaa, 0xdd, 0x9b, 0x6f, 0xa3, 0x87, 0x14, 0x00, 0x57, 0x42, 0x45, 0xdd, 0x6c, 0xe2, - 0xb6, 0x5c, 0x8f, 0xfe, 0x0f, 0xe9, 0x78, 0x7d, 0x42, 0x40, 0x3f, 0x04, 0xce, 0x57, 0xa7, 0xe5, - 0x5b, 0x65, 0x28, 0xb1, 0x78, 0xa0, 0xbe, 0xf5, 0x91, 0x60, 0x7b, 0x5e, 0x06, 0x47, 0x3d, 0x7a, - 0x2c, 0x7b, 0xff, 0x69, 0xdf, 0x3b, 0x32, 0x30, 0xc7, 0x60, 0xf1, 0xe6, 0xf1, 0xcf, 0x4f, 0xc9, - 0x4c, 0xe4, 0x11, 0x4c, 0xb2, 0x69, 0xbb, 0xd7, 0xbd, 0xfb, 0xef, 0xea, 0x32, 0x4c, 0x77, 0xb0, - 0xbd, 0x63, 0x74, 0xbb, 0x86, 0x65, 0xd2, 0x05, 0xb9, 0xb9, 0x5b, 0x1f, 0xe3, 0x4b, 0x9c, 0xac, - 0x5d, 0xce, 0xaf, 0xeb, 0xb6, 0x63, 0x34, 0x8d, 0x8e, 0x6e, 0x3a, 0xeb, 0x41, 0x66, 0x8d, 0xff, - 0x13, 0xbd, 0x24, 0xe6, 0xb4, 0x46, 0xac, 0x49, 0x88, 0x4a, 0xfc, 0x76, 0x8c, 0x29, 0x49, 0x24, - 0xc1, 0x78, 0x6a, 0xf1, 0x89, 0x44, 0xd5, 0xa2, 0x0f, 0xde, 0x5b, 0xea, 0x15, 0x70, 0xa2, 0x5c, - 0x29, 0x56, 0x35, 0xad, 0x54, 0xac, 0x37, 0xd6, 0x4b, 0xda, 0x5a, 0xb9, 0x56, 0x2b, 0x57, 0x2b, - 0xb5, 0x83, 0xb4, 0x76, 0xf4, 0x69, 0xc5, 0xd7, 0x98, 0x45, 0xdc, 0x6c, 0x1b, 0x26, 0x46, 0x77, - 0x1d, 0x50, 0x61, 0xc4, 0x55, 0x1f, 0x79, 0x9c, 0x59, 0xf9, 0x21, 0x38, 0xbf, 0x3e, 0x3e, 0xce, - 0xfd, 0x09, 0xfe, 0x07, 0x6e, 0xfe, 0x5f, 0x51, 0xe0, 0x18, 0xd7, 0x10, 0x35, 0xbc, 0x33, 0xb2, - 0x95, 0xbc, 0x9f, 0xe5, 0xdb, 0x6e, 0x59, 0xc4, 0xb4, 0x9f, 0x35, 0xbd, 0x8f, 0x8d, 0x10, 0x58, - 0xdf, 0xea, 0xc3, 0xba, 0x2a, 0xc0, 0xfa, 0xd4, 0x21, 0x68, 0xc6, 0x43, 0xf6, 0x37, 0x13, 0x45, - 0xf6, 0x0a, 0x38, 0xb1, 0x5e, 0xd0, 0xea, 0xe5, 0x62, 0x79, 0xbd, 0xe0, 0x8e, 0xa3, 0xdc, 0x90, - 0x1d, 0x62, 0xae, 0x8b, 0xa0, 0xf7, 0xc5, 0xf7, 0xc3, 0x19, 0xb8, 0xaa, 0x7f, 0x47, 0x5b, 0xdc, - 0xd6, 0xcd, 0x2d, 0x8c, 0x0c, 0x19, 0xa8, 0x17, 0x61, 0xa2, 0x49, 0xb2, 0x53, 0x9c, 0xf9, 0xad, - 0x9b, 0x88, 0xbe, 0x9c, 0x96, 0xa0, 0x79, 0xbf, 0xa2, 0x77, 0xf3, 0x0a, 0x51, 0x17, 0x15, 0xe2, - 0xe9, 0xd1, 0xe0, 0xed, 0xe3, 0x3b, 0x44, 0x37, 0x3e, 0xeb, 0xeb, 0xc6, 0x39, 0x41, 0x37, 0x8a, - 0x07, 0x23, 0x1f, 0x4f, 0x4d, 0xfe, 0xe0, 0x91, 0xd0, 0x01, 0x84, 0x6a, 0x93, 0x11, 0x3e, 0x2a, - 0xf4, 0xed, 0xee, 0x5f, 0xab, 0x40, 0x6e, 0x11, 0xb7, 0xb1, 0xec, 0x4a, 0xe4, 0x77, 0xd2, 0xb2, - 0x1b, 0x22, 0x14, 0x06, 0x4a, 0x3b, 0x7c, 0x75, 0xc4, 0x31, 0x76, 0x70, 0xd7, 0xd1, 0x77, 0x3a, - 0x44, 0xd4, 0x8a, 0x16, 0x24, 0xa0, 0x9f, 0x4b, 0xcb, 0x6c, 0x97, 0x44, 0x14, 0xf3, 0x1f, 0x63, - 0x4d, 0xf1, 0xf3, 0x69, 0x98, 0xac, 0x61, 0xa7, 0x6a, 0xb7, 0xb0, 0x8d, 0x6a, 0x01, 0x46, 0xd7, - 0xc0, 0x34, 0x01, 0xc5, 0x9d, 0x66, 0xfa, 0x38, 0xf1, 0x49, 0xea, 0xf5, 0x30, 0xe7, 0xbf, 0x92, - 0xdf, 0x59, 0x37, 0xde, 0x93, 0x8a, 0xfe, 0x31, 0x25, 0xbb, 0x8b, 0xcb, 0x96, 0x0c, 0x19, 0x37, - 0x21, 0xad, 0x54, 0x6e, 0x47, 0x36, 0x92, 0x54, 0xf2, 0x1b, 0x5d, 0xef, 0x4c, 0x03, 0x6c, 0x98, - 0x5d, 0x4f, 0xae, 0x8f, 0x8b, 0x21, 0x57, 0xf4, 0xcf, 0xa9, 0x78, 0xb3, 0x98, 0xa0, 0x9c, 0x10, - 0x89, 0xbd, 0x31, 0xc6, 0xda, 0x42, 0x28, 0xb1, 0xe4, 0x65, 0xf6, 0xf5, 0x39, 0xc8, 0x9d, 0xd3, - 0xdb, 0x6d, 0xec, 0xa0, 0x6f, 0xa4, 0x21, 0x57, 0xb4, 0xb1, 0xee, 0x60, 0x5e, 0x74, 0x08, 0x26, - 0x6d, 0xcb, 0x72, 0xd6, 0x75, 0x67, 0x9b, 0xc9, 0xcd, 0x7f, 0x67, 0x0e, 0x03, 0xbf, 0xc1, 0x77, - 0x1f, 0x77, 0x89, 0xa2, 0xfb, 0x31, 0xa1, 0xb6, 0xb4, 0xa0, 0x79, 0x5a, 0x48, 0x48, 0xff, 0x81, - 0x60, 0x72, 0xc7, 0xc4, 0x3b, 0x96, 0x69, 0x34, 0x3d, 0x9b, 0xd3, 0x7b, 0x47, 0x1f, 0xf5, 0x65, - 0xba, 0x20, 0xc8, 0x74, 0x5e, 0xba, 0x94, 0x78, 0x02, 0xad, 0x0d, 0xd1, 0x7b, 0x5c, 0x0d, 0x57, - 0xd2, 0xce, 0xa0, 0x51, 0xaf, 0x36, 0x8a, 0x5a, 0xa9, 0x50, 0x2f, 0x35, 0x56, 0xab, 0xc5, 0xc2, - 0x6a, 0x43, 0x2b, 0xad, 0x57, 0xf3, 0x18, 0xfd, 0x6d, 0xda, 0x15, 0x6e, 0xd3, 0xda, 0xc3, 0x36, - 0x5a, 0x96, 0x92, 0x73, 0x94, 0x4c, 0x18, 0x06, 0xbf, 0x24, 0xed, 0xb4, 0xc1, 0xa4, 0xc3, 0x38, - 0x08, 0x51, 0xde, 0x8f, 0x49, 0x35, 0xf7, 0x48, 0x52, 0x8f, 0x00, 0x49, 0xff, 0xcf, 0x34, 0x4c, - 0x14, 0x2d, 0x73, 0x0f, 0xdb, 0x0e, 0x3f, 0xdf, 0xe1, 0xa5, 0x99, 0x12, 0xa5, 0xe9, 0x0e, 0x92, - 0xd8, 0x74, 0x6c, 0xab, 0xe3, 0x4d, 0x78, 0xbc, 0x57, 0xf4, 0xe6, 0xb8, 0x12, 0x66, 0x25, 0x87, - 0x2f, 0x7c, 0xf6, 0x2f, 0x48, 0x60, 0x4f, 0xe9, 0x69, 0x00, 0x0f, 0xc5, 0xc1, 0xa5, 0x3f, 0x03, - 0xc9, 0x77, 0x29, 0x5f, 0x55, 0x60, 0x96, 0x36, 0xbe, 0x1a, 0x26, 0x16, 0x1a, 0xaa, 0xf2, 0x4b, - 0x8e, 0x3d, 0xc2, 0x5f, 0x39, 0x22, 0x88, 0x3f, 0xa7, 0x77, 0x3a, 0xfe, 0xf2, 0xf3, 0xca, 0x11, - 0x8d, 0xbd, 0x53, 0x35, 0x5f, 0xc8, 0x41, 0x46, 0xdf, 0x75, 0xb6, 0xd1, 0x0f, 0xa4, 0x27, 0x9f, - 0x42, 0x67, 0xc0, 0xf8, 0x09, 0x81, 0xe4, 0x38, 0x64, 0x1d, 0xeb, 0x02, 0xf6, 0xe4, 0x40, 0x5f, - 0x5c, 0x38, 0xf4, 0x4e, 0xa7, 0x4e, 0x3e, 0x30, 0x38, 0xbc, 0x77, 0xd7, 0xd6, 0xd1, 0x9b, 0x4d, - 0x6b, 0xd7, 0x74, 0xca, 0xde, 0x12, 0x74, 0x90, 0x80, 0xbe, 0x94, 0x92, 0x99, 0xcc, 0x4a, 0x30, - 0x18, 0x0f, 0xb2, 0xf3, 0x43, 0x34, 0xa5, 0x79, 0xb8, 0xb1, 0xb0, 0xbe, 0xde, 0xa8, 0x57, 0xef, - 0x2d, 0x55, 0x02, 0xc3, 0xb3, 0x51, 0xae, 0x34, 0xea, 0x2b, 0xa5, 0x46, 0x71, 0x43, 0x23, 0xeb, - 0x84, 0x85, 0x62, 0xb1, 0xba, 0x51, 0xa9, 0xe7, 0x31, 0x7a, 0x5b, 0x1a, 0x66, 0x8a, 0x6d, 0xab, - 0xeb, 0x23, 0x7c, 0x75, 0x80, 0xb0, 0x2f, 0xc6, 0x14, 0x27, 0x46, 0xf4, 0xaf, 0x29, 0x59, 0xa7, - 0x03, 0x4f, 0x20, 0x1c, 0xf9, 0x90, 0x5e, 0xea, 0xcd, 0x52, 0x4e, 0x07, 0x83, 0xe9, 0x25, 0xdf, - 0x24, 0x3e, 0x7f, 0x3b, 0x4c, 0x14, 0xa8, 0x62, 0xa0, 0xbf, 0x4a, 0x41, 0xae, 0x68, 0x99, 0x9b, - 0xc6, 0x96, 0x6b, 0xcc, 0x61, 0x53, 0x3f, 0xdf, 0xc6, 0x8b, 0xba, 0xa3, 0xef, 0x19, 0xf8, 0x22, - 0xa9, 0xc0, 0xa4, 0xd6, 0x93, 0xea, 0x32, 0xc5, 0x52, 0xf0, 0xf9, 0xdd, 0x2d, 0xc2, 0xd4, 0xa4, - 0xc6, 0x27, 0xa9, 0x4f, 0x85, 0xcb, 0xe9, 0xeb, 0xba, 0x8d, 0x6d, 0xdc, 0xc6, 0x7a, 0x17, 0xbb, - 0xd3, 0x22, 0x13, 0xb7, 0x89, 0xd2, 0x4e, 0x6a, 0x61, 0x9f, 0xd5, 0x33, 0x30, 0x43, 0x3f, 0x11, - 0x53, 0xa4, 0x4b, 0xd4, 0x78, 0x52, 0x13, 0xd2, 0xd4, 0xc7, 0x43, 0x16, 0x3f, 0xe0, 0xd8, 0xfa, - 0xa9, 0x16, 0xc1, 0xeb, 0xf2, 0x79, 0xea, 0x75, 0x38, 0xef, 0x79, 0x1d, 0xce, 0xd7, 0x88, 0x4f, - 0xa2, 0x46, 0x73, 0xa1, 0x57, 0x4d, 0xfa, 0x86, 0xc4, 0xbf, 0xa7, 0x03, 0xc5, 0x50, 0x21, 0x63, - 0xea, 0x3b, 0x98, 0xe9, 0x05, 0x79, 0x56, 0x6f, 0x84, 0xa3, 0xfa, 0x9e, 0xee, 0xe8, 0xf6, 0xaa, - 0xd5, 0xd4, 0xdb, 0x64, 0xf0, 0xf3, 0x5a, 0x7e, 0xef, 0x07, 0xb2, 0x23, 0xe4, 0x58, 0x36, 0x26, - 0xb9, 0xbc, 0x1d, 0x21, 0x2f, 0xc1, 0xa5, 0x6e, 0x34, 0x2d, 0x93, 0xf0, 0xaf, 0x68, 0xe4, 0xd9, - 0x95, 0x4a, 0xcb, 0xe8, 0xba, 0x15, 0x21, 0x54, 0x2a, 0x74, 0x6b, 0xa3, 0x76, 0xc9, 0x6c, 0x92, - 0xdd, 0xa0, 0x49, 0x2d, 0xec, 0xb3, 0xba, 0x00, 0xd3, 0x6c, 0x23, 0x64, 0xcd, 0xd5, 0xab, 0x1c, - 0xd1, 0xab, 0x6b, 0x44, 0x9f, 0x2e, 0x8a, 0xe7, 0x7c, 0x25, 0xc8, 0xa7, 0xf1, 0x3f, 0xa9, 0x77, - 0xc3, 0x95, 0xec, 0xb5, 0xb8, 0xdb, 0x75, 0xac, 0x1d, 0x0a, 0xfa, 0x92, 0xd1, 0xa6, 0x35, 0x98, - 0x20, 0x35, 0x88, 0xca, 0xa2, 0xde, 0x0a, 0xc7, 0x3b, 0x36, 0xde, 0xc4, 0xf6, 0x7d, 0xfa, 0xce, - 0xee, 0x03, 0x75, 0x5b, 0x37, 0xbb, 0x1d, 0xcb, 0x76, 0x4e, 0x4d, 0x12, 0xe6, 0xfb, 0x7e, 0x63, - 0x1d, 0xe5, 0x24, 0xe4, 0xa8, 0xf8, 0xd0, 0x8b, 0xb3, 0xd2, 0xee, 0x9c, 0xac, 0x42, 0x91, 0xe6, - 0xd9, 0x2d, 0x30, 0xc1, 0x7a, 0x38, 0x02, 0xd4, 0xf4, 0xad, 0x27, 0x7b, 0xd6, 0x15, 0x18, 0x15, - 0xcd, 0xcb, 0xa6, 0x3e, 0x11, 0x72, 0x4d, 0x52, 0x2d, 0x82, 0xd9, 0xf4, 0xad, 0x57, 0xf6, 0x2f, - 0x94, 0x64, 0xd1, 0x58, 0x56, 0xf4, 0xe7, 0x8a, 0x94, 0x07, 0x68, 0x14, 0xc7, 0xf1, 0x5a, 0xf5, - 0xb7, 0xd2, 0x43, 0x74, 0x9b, 0x37, 0xc1, 0x0d, 0xac, 0x4f, 0x64, 0xf6, 0xc7, 0x62, 0x63, 0x61, - 0xc3, 0x9b, 0x0c, 0xba, 0x56, 0x49, 0xad, 0x5e, 0xd0, 0xdc, 0x99, 0xfc, 0xa2, 0x3b, 0x89, 0xbc, - 0x11, 0xae, 0x1f, 0x90, 0xbb, 0x54, 0x6f, 0x54, 0x0a, 0x6b, 0xa5, 0xfc, 0xa6, 0x68, 0xdb, 0xd4, - 0xea, 0xd5, 0xf5, 0x86, 0xb6, 0x51, 0xa9, 0x94, 0x2b, 0xcb, 0x94, 0x98, 0x6b, 0x12, 0x9e, 0x0c, - 0x32, 0x9c, 0xd3, 0xca, 0xf5, 0x52, 0xa3, 0x58, 0xad, 0x2c, 0x95, 0x97, 0xf3, 0xc6, 0x20, 0xc3, - 0xe8, 0x7e, 0xf5, 0x1a, 0xb8, 0x4a, 0xe0, 0xa4, 0x5c, 0xad, 0xb8, 0x33, 0xdb, 0x62, 0xa1, 0x52, - 0x2c, 0xb9, 0xd3, 0xd8, 0x0b, 0x2a, 0x82, 0x13, 0x94, 0x5c, 0x63, 0xa9, 0xbc, 0xca, 0x6f, 0x46, - 0x7d, 0x2a, 0xa5, 0x9e, 0x82, 0xcb, 0xf8, 0x6f, 0xe5, 0xca, 0xd9, 0xc2, 0x6a, 0x79, 0x31, 0xff, - 0xfb, 0x29, 0xf5, 0x3a, 0xb8, 0x5a, 0xf8, 0x8b, 0xee, 0x2b, 0x35, 0xca, 0x8b, 0x8d, 0xb5, 0x72, - 0x6d, 0xad, 0x50, 0x2f, 0xae, 0xe4, 0x3f, 0x4d, 0xe6, 0x0b, 0xbe, 0x01, 0xcc, 0xb9, 0x65, 0xbe, - 0x8c, 0x1f, 0xd3, 0x0b, 0xa2, 0xa2, 0x3e, 0xae, 0x2f, 0xec, 0xd1, 0x36, 0xec, 0x27, 0xfc, 0xd1, - 0x61, 0x51, 0x50, 0xa1, 0x5b, 0x62, 0xd0, 0x8a, 0xa7, 0x43, 0xf5, 0x21, 0x54, 0xe8, 0x1a, 0xb8, - 0xaa, 0x52, 0xa2, 0x48, 0x69, 0xa5, 0x62, 0xf5, 0x6c, 0x49, 0x6b, 0x9c, 0x2b, 0xac, 0xae, 0x96, - 0xea, 0x8d, 0xa5, 0xb2, 0x56, 0xab, 0xe7, 0x37, 0xd1, 0x3f, 0xa7, 0xfd, 0xd5, 0x1c, 0x4e, 0x5a, - 0x7f, 0x95, 0x8e, 0xdb, 0xac, 0x23, 0x57, 0x6d, 0x7e, 0x1c, 0x72, 0x5d, 0x47, 0x77, 0x76, 0xbb, - 0xac, 0x55, 0x3f, 0xaa, 0x7f, 0xab, 0x9e, 0xaf, 0x91, 0x4c, 0x1a, 0xcb, 0x8c, 0xfe, 0x3c, 0x15, - 0xa7, 0x99, 0x8e, 0x60, 0x41, 0xc7, 0x18, 0x42, 0xc4, 0xa7, 0x01, 0x79, 0xda, 0x5e, 0xae, 0x35, - 0x0a, 0xab, 0x5a, 0xa9, 0xb0, 0x78, 0x9f, 0xbf, 0x8c, 0x83, 0xd5, 0x13, 0x70, 0x6c, 0xa3, 0x52, - 0x58, 0x58, 0x2d, 0x91, 0xe6, 0x52, 0xad, 0x54, 0x4a, 0x45, 0x57, 0xee, 0x3f, 0x47, 0x36, 0x4d, - 0x5c, 0x0b, 0x9a, 0xf0, 0xed, 0x5a, 0x39, 0x9c, 0xfc, 0xbf, 0x29, 0xed, 0x5b, 0x14, 0x68, 0x18, - 0x4f, 0x6b, 0xb4, 0x38, 0x7c, 0x49, 0xca, 0x9d, 0x48, 0x8a, 0x93, 0x78, 0x78, 0xfc, 0xe7, 0x21, - 0xf0, 0x38, 0x01, 0xc7, 0x78, 0x3c, 0x88, 0x5b, 0x51, 0x38, 0x0c, 0x5f, 0x9b, 0x84, 0x5c, 0x0d, - 0xb7, 0x71, 0xd3, 0x41, 0xef, 0xe0, 0x8c, 0x89, 0x39, 0x48, 0xfb, 0x6e, 0x2c, 0x69, 0xa3, 0x25, - 0x4c, 0x9f, 0xd3, 0x3d, 0xd3, 0xe7, 0x08, 0x33, 0x40, 0x89, 0x65, 0x06, 0x64, 0x12, 0x30, 0x03, - 0xb2, 0xc3, 0x9b, 0x01, 0xb9, 0x41, 0x66, 0x00, 0x7a, 0x63, 0x2e, 0x6e, 0x2f, 0x41, 0x45, 0x7d, - 0xb8, 0x83, 0xff, 0x3f, 0x64, 0xe2, 0xf4, 0x2a, 0x7d, 0x39, 0x8e, 0xa7, 0xc5, 0x3f, 0x50, 0x12, - 0x58, 0x7e, 0x50, 0xaf, 0x85, 0xab, 0x83, 0xf7, 0x46, 0xe9, 0x99, 0xe5, 0x5a, 0xbd, 0x46, 0x46, - 0xfc, 0x62, 0x55, 0xd3, 0x36, 0xd6, 0xe9, 0x1a, 0xf2, 0x49, 0x50, 0x03, 0x2a, 0xda, 0x46, 0x85, - 0x8e, 0xef, 0x5b, 0x22, 0xf5, 0xa5, 0x72, 0x65, 0xb1, 0xe1, 0xb7, 0x99, 0xca, 0x52, 0x35, 0xbf, - 0xed, 0x4e, 0xd9, 0x38, 0xea, 0xee, 0x00, 0xcd, 0x4a, 0x28, 0x54, 0x16, 0x1b, 0x6b, 0x95, 0xd2, - 0x5a, 0xb5, 0x52, 0x2e, 0x92, 0xf4, 0x5a, 0xa9, 0x9e, 0x37, 0xdc, 0x81, 0xa6, 0xc7, 0xa2, 0xa8, - 0x95, 0x0a, 0x5a, 0x71, 0xa5, 0xa4, 0xd1, 0x22, 0xef, 0x57, 0xaf, 0x87, 0x33, 0x85, 0x4a, 0xb5, - 0xee, 0xa6, 0x14, 0x2a, 0xf7, 0xd5, 0xef, 0x5b, 0x2f, 0x35, 0xd6, 0xb5, 0x6a, 0xb1, 0x54, 0xab, - 0xb9, 0xed, 0x94, 0xd9, 0x1f, 0xf9, 0xb6, 0xfa, 0x74, 0xb8, 0x9d, 0x63, 0xad, 0x54, 0x27, 0x1b, - 0x96, 0x6b, 0x55, 0xe2, 0xb3, 0xb2, 0x58, 0x6a, 0xac, 0x14, 0x6a, 0x8d, 0x72, 0xa5, 0x58, 0x5d, - 0x5b, 0x2f, 0xd4, 0xcb, 0x6e, 0x73, 0x5e, 0xd7, 0xaa, 0xf5, 0x6a, 0xe3, 0x6c, 0x49, 0xab, 0x95, - 0xab, 0x95, 0xbc, 0xe9, 0x56, 0x99, 0x6b, 0xff, 0x5e, 0x3f, 0x6c, 0xa9, 0x57, 0xc1, 0x29, 0x2f, - 0x7d, 0xb5, 0xea, 0x0a, 0x9a, 0xb3, 0x48, 0x3a, 0x89, 0x5a, 0x24, 0xff, 0x92, 0x86, 0x4c, 0xcd, - 0xb1, 0x3a, 0xe8, 0xc7, 0x82, 0x0e, 0xe6, 0x34, 0x80, 0x4d, 0xf6, 0x1f, 0xdd, 0x59, 0x18, 0x9b, - 0x97, 0x71, 0x29, 0xe8, 0xf7, 0xa4, 0x37, 0x4d, 0x82, 0x3e, 0xdb, 0xea, 0x84, 0xd8, 0x2a, 0xdf, - 0x97, 0x3b, 0x45, 0x12, 0x4e, 0x28, 0x9e, 0xbe, 0xff, 0xfc, 0x30, 0xdb, 0x22, 0x08, 0x4e, 0x72, - 0xb0, 0xb9, 0xf2, 0xf7, 0x54, 0x02, 0xab, 0x97, 0xc3, 0x65, 0x3d, 0xca, 0x45, 0x74, 0x6a, 0x53, - 0x7d, 0x34, 0x3c, 0x8a, 0x53, 0xef, 0xd2, 0x5a, 0xf5, 0x6c, 0xc9, 0x57, 0xe4, 0xc5, 0x42, 0xbd, - 0x90, 0xdf, 0x42, 0x9f, 0x57, 0x20, 0xb3, 0x66, 0xed, 0xf5, 0xee, 0x55, 0x99, 0xf8, 0x22, 0xb7, - 0x16, 0xea, 0xbd, 0x8a, 0x5e, 0xf3, 0x52, 0x62, 0x5f, 0x0b, 0xdf, 0x97, 0xfe, 0x52, 0x3a, 0x8e, - 0xd8, 0xd7, 0x0e, 0xba, 0x19, 0xfd, 0x77, 0xc3, 0x88, 0x3d, 0x44, 0xb4, 0x58, 0x3d, 0x03, 0xa7, - 0x83, 0x0f, 0xe5, 0xc5, 0x52, 0xa5, 0x5e, 0x5e, 0xba, 0x2f, 0x10, 0x6e, 0x59, 0x93, 0x12, 0xff, - 0xa0, 0x6e, 0x2c, 0x7a, 0xa6, 0x71, 0x0a, 0x8e, 0x07, 0xdf, 0x96, 0x4b, 0x75, 0xef, 0xcb, 0xfd, - 0xe8, 0xc1, 0x2c, 0xcc, 0xd0, 0x6e, 0x7d, 0xa3, 0xd3, 0xd2, 0x1d, 0x8c, 0x9e, 0x18, 0xa0, 0x7b, - 0x03, 0x1c, 0x2d, 0xaf, 0x2f, 0xd5, 0x6a, 0x8e, 0x65, 0xeb, 0x5b, 0xb8, 0xd0, 0x6a, 0xd9, 0x4c, - 0x5a, 0xbd, 0xc9, 0xe8, 0xbd, 0xd2, 0xeb, 0x7c, 0xe2, 0x50, 0x42, 0xcb, 0x0c, 0x41, 0xfd, 0xab, - 0x52, 0xeb, 0x72, 0x12, 0x04, 0xe3, 0xa1, 0x7f, 0xff, 0x88, 0xdb, 0x5c, 0x38, 0x2e, 0x9b, 0x67, - 0x9e, 0x97, 0x86, 0xa9, 0xba, 0xb1, 0x83, 0x9f, 0x65, 0x99, 0xb8, 0xab, 0x4e, 0x80, 0xb2, 0xbc, - 0x56, 0xcf, 0x1f, 0x71, 0x1f, 0x5c, 0xa3, 0x2a, 0x45, 0x1e, 0x4a, 0x6e, 0x01, 0xee, 0x43, 0xa1, - 0x9e, 0x57, 0xdc, 0x87, 0xb5, 0x52, 0x3d, 0x9f, 0x71, 0x1f, 0x2a, 0xa5, 0x7a, 0x3e, 0xeb, 0x3e, - 0xac, 0xaf, 0xd6, 0xf3, 0x39, 0xf7, 0xa1, 0x5c, 0xab, 0xe7, 0x27, 0xdc, 0x87, 0x85, 0x5a, 0x3d, - 0x3f, 0xe9, 0x3e, 0x9c, 0xad, 0xd5, 0xf3, 0x53, 0xee, 0x43, 0xb1, 0x5e, 0xcf, 0x83, 0xfb, 0x70, - 0x4f, 0xad, 0x9e, 0x9f, 0x76, 0x1f, 0x0a, 0xc5, 0x7a, 0x7e, 0x86, 0x3c, 0x94, 0xea, 0xf9, 0x59, - 0xf7, 0xa1, 0x56, 0xab, 0xe7, 0xe7, 0x08, 0xe5, 0x5a, 0x3d, 0x7f, 0x94, 0x94, 0x55, 0xae, 0xe7, - 0xf3, 0xee, 0xc3, 0x4a, 0xad, 0x9e, 0x3f, 0x46, 0x32, 0xd7, 0xea, 0x79, 0x95, 0x14, 0x5a, 0xab, - 0xe7, 0x2f, 0x23, 0x79, 0x6a, 0xf5, 0xfc, 0x71, 0x52, 0x44, 0xad, 0x9e, 0x3f, 0x41, 0xd8, 0x28, - 0xd5, 0xf3, 0x27, 0x49, 0x1e, 0xad, 0x9e, 0xbf, 0x9c, 0x7c, 0xaa, 0xd4, 0xf3, 0xa7, 0x08, 0x63, - 0xa5, 0x7a, 0xfe, 0x0a, 0xf2, 0xa0, 0xd5, 0xf3, 0x88, 0x7c, 0x2a, 0xd4, 0xf3, 0x57, 0xa2, 0x47, - 0xc1, 0xd4, 0x32, 0x76, 0x28, 0x88, 0x28, 0x0f, 0xca, 0x32, 0x76, 0x78, 0x33, 0xfe, 0xeb, 0x0a, - 0x5c, 0xce, 0xa6, 0x7e, 0x4b, 0xb6, 0xb5, 0xb3, 0x8a, 0xb7, 0xf4, 0xe6, 0xa5, 0xd2, 0x03, 0xae, - 0x09, 0xc5, 0xef, 0xcb, 0xaa, 0x90, 0xe9, 0x04, 0x9d, 0x11, 0x79, 0x8e, 0xb4, 0x38, 0xbd, 0xc5, - 0x28, 0x25, 0x58, 0x8c, 0x62, 0x16, 0xd9, 0x3f, 0xf1, 0x1a, 0x2d, 0xac, 0x1f, 0xa7, 0x7a, 0xd6, - 0x8f, 0xdd, 0x66, 0xd2, 0xc1, 0x76, 0xd7, 0x32, 0xf5, 0x76, 0x8d, 0x6d, 0xdc, 0xd3, 0x55, 0xaf, - 0xde, 0x64, 0xf5, 0x19, 0x5e, 0xcb, 0xa0, 0x56, 0xd9, 0xd3, 0xa2, 0x66, 0xb8, 0xbd, 0xd5, 0x0c, - 0x69, 0x24, 0x9f, 0xf6, 0x1b, 0x49, 0x5d, 0x68, 0x24, 0x77, 0x1f, 0x80, 0x76, 0xbc, 0xf6, 0x52, - 0x1e, 0x6e, 0x6a, 0x11, 0xb8, 0xb5, 0x7a, 0xcb, 0xd5, 0x0a, 0xfa, 0x7c, 0x1a, 0x4e, 0x96, 0xcc, - 0x7e, 0x16, 0x3e, 0xaf, 0x0b, 0x6f, 0xe3, 0xa1, 0x59, 0x17, 0x45, 0x7a, 0x7b, 0xdf, 0x6a, 0xf7, - 0xa7, 0x19, 0x22, 0xd1, 0xcf, 0xf8, 0x12, 0xad, 0x09, 0x12, 0xbd, 0x6b, 0x78, 0xd2, 0xf1, 0x04, - 0x5a, 0x19, 0x69, 0x07, 0x94, 0x41, 0xdf, 0xca, 0xc0, 0xa3, 0xa8, 0xef, 0x0d, 0xe3, 0x90, 0xb6, - 0xb2, 0x82, 0xd9, 0xd2, 0x70, 0xd7, 0xd1, 0x6d, 0x47, 0x38, 0x0f, 0xdd, 0x33, 0x95, 0x4a, 0x25, - 0x30, 0x95, 0x4a, 0x0f, 0x9c, 0x4a, 0xa1, 0xf7, 0xf0, 0xe6, 0xc3, 0x39, 0x11, 0xe3, 0x42, 0xff, - 0xfe, 0x3f, 0xaa, 0x86, 0x61, 0x50, 0xfb, 0x76, 0xc5, 0x4f, 0x08, 0x50, 0x2f, 0x1d, 0xb8, 0x84, - 0x78, 0x88, 0xff, 0xde, 0x68, 0xed, 0xbc, 0x0c, 0xff, 0x4d, 0x34, 0x4a, 0xf2, 0xad, 0x44, 0x0d, - 0xf4, 0xcf, 0x4e, 0xc0, 0x14, 0x69, 0x0b, 0xab, 0x86, 0x79, 0x01, 0x3d, 0xa4, 0xc0, 0x4c, 0x05, - 0x5f, 0x2c, 0x6e, 0xeb, 0xed, 0x36, 0x36, 0xb7, 0x30, 0x6f, 0xb6, 0x9f, 0x82, 0x09, 0xbd, 0xd3, - 0xa9, 0x04, 0xfb, 0x0c, 0xde, 0x2b, 0xeb, 0x7f, 0xbf, 0xd9, 0xb7, 0x91, 0xa7, 0x22, 0x1a, 0xb9, - 0x5f, 0xee, 0x3c, 0x5f, 0x66, 0xc8, 0x0c, 0xf9, 0x1a, 0x98, 0x6e, 0x7a, 0x59, 0xfc, 0x73, 0x13, - 0x7c, 0x12, 0xfa, 0x9b, 0x58, 0xdd, 0x80, 0x54, 0xe1, 0xf1, 0x94, 0x02, 0x8f, 0xd8, 0x0e, 0x39, - 0x01, 0xc7, 0xea, 0xd5, 0x6a, 0x63, 0xad, 0x50, 0xb9, 0x2f, 0x38, 0xaf, 0xbc, 0x89, 0x5e, 0x9d, - 0x81, 0xb9, 0x9a, 0xd5, 0xde, 0xc3, 0x01, 0x4c, 0x65, 0xc1, 0x21, 0x87, 0x97, 0x53, 0x6a, 0x9f, - 0x9c, 0xd4, 0x93, 0x90, 0xd3, 0xcd, 0xee, 0x45, 0xec, 0xd9, 0x86, 0xec, 0x8d, 0xc1, 0xf8, 0x61, - 0xbe, 0x1d, 0x6b, 0x22, 0x8c, 0x77, 0x0c, 0x90, 0xa4, 0xc8, 0x55, 0x08, 0x90, 0x67, 0x60, 0xa6, - 0x4b, 0x37, 0x0b, 0xeb, 0xdc, 0x9e, 0xb0, 0x90, 0x46, 0x58, 0xa4, 0xbb, 0xd5, 0x0a, 0x63, 0x91, - 0xbc, 0xa1, 0x87, 0xfc, 0xe6, 0xbf, 0x21, 0x40, 0x5c, 0x38, 0x08, 0x63, 0xf1, 0x40, 0x7e, 0xed, - 0xa8, 0x67, 0x78, 0xa7, 0xe0, 0x38, 0x6b, 0xb5, 0x8d, 0xe2, 0x4a, 0x61, 0x75, 0xb5, 0x54, 0x59, - 0x2e, 0x35, 0xca, 0x8b, 0x74, 0xab, 0x22, 0x48, 0x29, 0xd4, 0xeb, 0xa5, 0xb5, 0xf5, 0x7a, 0xad, - 0x51, 0x7a, 0x66, 0xb1, 0x54, 0x5a, 0x24, 0x2e, 0x71, 0xe4, 0x4c, 0x8b, 0xe7, 0xbc, 0x58, 0xa8, - 0xd4, 0xce, 0x95, 0xb4, 0xfc, 0xf6, 0x99, 0x02, 0x4c, 0x73, 0xfd, 0xbc, 0xcb, 0xdd, 0x22, 0xde, - 0xd4, 0x77, 0xdb, 0xcc, 0x56, 0xcb, 0x1f, 0x71, 0xb9, 0x23, 0xb2, 0xa9, 0x9a, 0xed, 0x4b, 0xf9, - 0x94, 0x9a, 0x87, 0x19, 0xbe, 0x4b, 0xcf, 0xa7, 0xd1, 0x3b, 0xaf, 0x82, 0xa9, 0x73, 0x96, 0x7d, - 0x81, 0xf8, 0x71, 0xa1, 0x0f, 0xd0, 0xb8, 0x26, 0xde, 0x09, 0x51, 0x6e, 0x60, 0x7f, 0xad, 0xbc, - 0xb7, 0x80, 0x47, 0x6d, 0x7e, 0xe0, 0x29, 0xd0, 0x6b, 0x60, 0xfa, 0xa2, 0x97, 0x3b, 0x68, 0xe9, - 0x5c, 0x12, 0xfa, 0xef, 0x72, 0xfb, 0xff, 0x83, 0x8b, 0x4c, 0x7e, 0x7f, 0xfa, 0x1d, 0x69, 0xc8, - 0x2d, 0x63, 0xa7, 0xd0, 0x6e, 0xf3, 0x72, 0x7b, 0xb9, 0xf4, 0xc9, 0x1e, 0xa1, 0x12, 0x85, 0x76, - 0x3b, 0xbc, 0x51, 0x71, 0x02, 0xf2, 0x3c, 0xd0, 0x85, 0x34, 0x49, 0xbf, 0xb9, 0x01, 0x05, 0x26, - 0x2f, 0xb1, 0x8f, 0x2a, 0xfe, 0x1e, 0xf7, 0xc3, 0x9c, 0x95, 0xf3, 0x84, 0x20, 0xa6, 0x4d, 0x2a, - 0x7a, 0xaf, 0xdc, 0xcb, 0xa7, 0xde, 0x0b, 0x13, 0xbb, 0x5d, 0x5c, 0xd4, 0xbb, 0x98, 0xf0, 0xd6, - 0x5b, 0xd3, 0xea, 0xf9, 0xfb, 0x71, 0xd3, 0x99, 0x2f, 0xef, 0xb8, 0x06, 0xf5, 0x06, 0xcd, 0xe8, - 0x87, 0x89, 0x61, 0xef, 0x9a, 0x47, 0xc1, 0x9d, 0x94, 0x5c, 0x34, 0x9c, 0xed, 0xe2, 0xb6, 0xee, - 0xb0, 0xb5, 0x6d, 0xff, 0x1d, 0xbd, 0x78, 0x08, 0x38, 0x23, 0xf7, 0x82, 0x43, 0x0f, 0x08, 0xc6, - 0x06, 0x71, 0x04, 0x1b, 0xb8, 0xc3, 0x80, 0xf8, 0xf7, 0x69, 0xc8, 0x54, 0x3b, 0xd8, 0x94, 0x3e, - 0x0d, 0xe3, 0xcb, 0x36, 0xdd, 0x23, 0xdb, 0x87, 0xe4, 0xbd, 0xc3, 0xfc, 0x4a, 0xbb, 0x25, 0x87, - 0x48, 0xf6, 0x66, 0xc8, 0x18, 0xe6, 0xa6, 0xc5, 0x0c, 0xd3, 0x2b, 0x43, 0x36, 0x81, 0xca, 0xe6, - 0xa6, 0xa5, 0x91, 0x8c, 0xb2, 0x8e, 0x61, 0x51, 0x65, 0x27, 0x2f, 0xee, 0x6f, 0x4f, 0x42, 0x8e, - 0xaa, 0x33, 0x7a, 0x99, 0x02, 0x4a, 0xa1, 0xd5, 0x0a, 0x11, 0x7c, 0x7a, 0x9f, 0xe0, 0x2d, 0xf2, - 0x9b, 0x8f, 0x89, 0xff, 0x2e, 0x06, 0x33, 0x91, 0xec, 0xdb, 0x59, 0x93, 0x2a, 0xb4, 0x5a, 0xe1, - 0x3e, 0xa8, 0x7e, 0x81, 0x69, 0xb1, 0x40, 0xbe, 0x85, 0x2b, 0x72, 0x2d, 0x3c, 0xf6, 0x40, 0x10, - 0xca, 0x5f, 0xf2, 0x10, 0xfd, 0x53, 0x1a, 0x26, 0x56, 0x8d, 0xae, 0xe3, 0x62, 0x53, 0x90, 0xc1, - 0xe6, 0x2a, 0x98, 0xf2, 0x44, 0xe3, 0x76, 0x79, 0x6e, 0x7f, 0x1e, 0x24, 0xa0, 0x37, 0xf0, 0xe8, - 0xdc, 0x23, 0xa2, 0xf3, 0xa4, 0xe8, 0xda, 0x33, 0x2e, 0xc2, 0x4f, 0x19, 0x04, 0xc5, 0xa6, 0x7b, - 0x8b, 0xfd, 0x0d, 0x5f, 0xe0, 0x6b, 0x82, 0xc0, 0x6f, 0x1b, 0xa6, 0xc8, 0xe4, 0x85, 0xfe, 0x85, - 0x34, 0x80, 0x5b, 0x36, 0x3b, 0xca, 0xf5, 0x58, 0xe1, 0x80, 0x76, 0x84, 0x74, 0x5f, 0xcd, 0x4b, - 0x77, 0x4d, 0x94, 0xee, 0x53, 0x06, 0x57, 0x35, 0xea, 0xc8, 0x96, 0x9a, 0x07, 0xc5, 0xf0, 0x45, - 0xeb, 0x3e, 0xa2, 0x77, 0xf8, 0x42, 0x5d, 0x17, 0x84, 0x7a, 0xc7, 0x90, 0x25, 0x25, 0x2f, 0xd7, - 0xbf, 0x48, 0xc3, 0x44, 0x0d, 0x3b, 0x6e, 0x37, 0x89, 0xce, 0xca, 0xf4, 0xf0, 0x5c, 0xdb, 0x4e, - 0x4b, 0xb6, 0xed, 0xef, 0xa5, 0x64, 0x03, 0xbd, 0x04, 0x92, 0x61, 0x3c, 0x85, 0x2c, 0x1e, 0x3c, - 0x2c, 0x15, 0xe8, 0x65, 0x10, 0xb5, 0xe4, 0xa5, 0xfb, 0xb6, 0xb4, 0xbf, 0x31, 0x2f, 0x9e, 0xb4, - 0xe0, 0xcd, 0xe2, 0xd4, 0x7e, 0xb3, 0x58, 0xfe, 0xa4, 0x05, 0x5f, 0xc7, 0xf0, 0x5d, 0xe9, 0xd8, - 0xc6, 0xc6, 0x08, 0x36, 0x8c, 0x87, 0x91, 0xd7, 0x73, 0x14, 0xc8, 0xb1, 0x95, 0xe5, 0xbb, 0xa2, - 0x57, 0x96, 0x07, 0x4f, 0x2d, 0xde, 0x3f, 0x84, 0x29, 0x17, 0xb5, 0xdc, 0xeb, 0xb3, 0x91, 0xe6, - 0xd8, 0xb8, 0x09, 0xb2, 0x24, 0x12, 0x25, 0x1b, 0xe7, 0x82, 0xbd, 0x7e, 0x8f, 0x44, 0xc9, 0xfd, - 0xaa, 0xd1, 0x4c, 0xb1, 0x51, 0x18, 0xc1, 0x0a, 0xf1, 0x30, 0x28, 0xbc, 0xe7, 0xf3, 0x29, 0xdf, - 0x08, 0x79, 0x7f, 0x86, 0x99, 0x7f, 0x9f, 0x14, 0x63, 0x62, 0x34, 0x2d, 0xd3, 0xc1, 0x0f, 0x70, - 0x6b, 0xf2, 0x7e, 0x42, 0xa4, 0x65, 0x70, 0x0a, 0x26, 0x1c, 0x9b, 0x5f, 0xa7, 0xf7, 0x5e, 0xf9, - 0x1e, 0x27, 0x2b, 0xf6, 0x38, 0x15, 0x38, 0x63, 0x98, 0xcd, 0xf6, 0x6e, 0x0b, 0x6b, 0xb8, 0xad, - 0xbb, 0xb5, 0xea, 0x16, 0xba, 0x8b, 0xb8, 0x83, 0xcd, 0x16, 0x36, 0x1d, 0xca, 0xa7, 0xe7, 0x93, - 0x2b, 0x91, 0x13, 0x7d, 0x83, 0x57, 0x8c, 0x3b, 0x45, 0xc5, 0x78, 0x6c, 0xbf, 0x79, 0x45, 0x84, - 0x11, 0x7a, 0x1b, 0x00, 0xad, 0xdb, 0x59, 0x03, 0x5f, 0x64, 0x1d, 0xe2, 0x15, 0x3d, 0xa6, 0x68, - 0xd5, 0xcf, 0xa0, 0x71, 0x99, 0xd1, 0x57, 0x7c, 0x65, 0xb8, 0x5b, 0x50, 0x86, 0x9b, 0x24, 0x59, - 0x88, 0xa7, 0x07, 0x9d, 0x21, 0xd6, 0x3a, 0x66, 0x61, 0x2a, 0x58, 0xa1, 0x54, 0xd4, 0x2b, 0xe0, - 0x84, 0xe7, 0xf3, 0x50, 0x29, 0x95, 0x16, 0x6b, 0x8d, 0x8d, 0xf5, 0x65, 0xad, 0xb0, 0x58, 0xca, - 0x83, 0xaa, 0xc2, 0x5c, 0x75, 0xe1, 0x9e, 0x52, 0xb1, 0xee, 0xbb, 0x2a, 0x64, 0xd0, 0x9f, 0xa5, - 0x21, 0x4b, 0x1c, 0xca, 0xd1, 0x4f, 0x8d, 0x48, 0x73, 0xba, 0xc2, 0x0e, 0x8f, 0x3f, 0x91, 0x92, - 0x8f, 0x55, 0xc9, 0x84, 0x49, 0xb8, 0x3a, 0x50, 0xac, 0xca, 0x08, 0x42, 0xc9, 0x37, 0x4f, 0xb7, - 0x49, 0xd6, 0xb6, 0xad, 0x8b, 0x3f, 0xca, 0x4d, 0xd2, 0xad, 0xff, 0x21, 0x37, 0xc9, 0x3e, 0x2c, - 0x8c, 0xbd, 0x49, 0xf6, 0x69, 0x77, 0x11, 0xcd, 0x14, 0x3d, 0x3b, 0xeb, 0x2f, 0xc8, 0x3c, 0x2f, - 0x7d, 0xa0, 0x05, 0x99, 0x02, 0xcc, 0x1a, 0xa6, 0x83, 0x6d, 0x53, 0x6f, 0x2f, 0xb5, 0xf5, 0x2d, - 0xef, 0x00, 0x7d, 0xef, 0x2c, 0xbc, 0xcc, 0xe5, 0xd1, 0xc4, 0x3f, 0xd4, 0xd3, 0x00, 0x0e, 0xde, - 0xe9, 0xb4, 0x75, 0x27, 0x50, 0x3d, 0x2e, 0x85, 0xd7, 0xbe, 0x8c, 0xa8, 0x7d, 0xb7, 0xc0, 0x65, - 0x14, 0xb4, 0xfa, 0xa5, 0x0e, 0xde, 0x30, 0x8d, 0x9f, 0xde, 0x25, 0x21, 0x94, 0xa8, 0x8e, 0xf6, - 0xfb, 0x24, 0x2c, 0x4b, 0xe4, 0x7a, 0x96, 0x25, 0xfe, 0x5e, 0xfa, 0x68, 0xa6, 0xd7, 0xea, 0x07, - 0x1c, 0xcd, 0xf4, 0x5b, 0x9a, 0xd2, 0xd3, 0xd2, 0x7c, 0x63, 0x21, 0x23, 0x61, 0x2c, 0xf0, 0xa8, - 0x64, 0x25, 0x0d, 0xed, 0xd7, 0x4b, 0x9d, 0xfd, 0x8c, 0xaa, 0xc6, 0x18, 0x26, 0x72, 0x0a, 0xcc, - 0xd1, 0xa2, 0x17, 0x2c, 0xeb, 0xc2, 0x8e, 0x6e, 0x5f, 0x40, 0xf6, 0x81, 0x54, 0x31, 0x72, 0x4d, - 0x24, 0x74, 0xa1, 0xef, 0x33, 0x3c, 0xea, 0xcb, 0x22, 0xea, 0x4f, 0x08, 0x17, 0x97, 0xc7, 0xf3, - 0x78, 0x16, 0x45, 0xde, 0xe2, 0xe3, 0x79, 0x8f, 0x80, 0xe7, 0x93, 0x63, 0x33, 0x98, 0x3c, 0xae, - 0x7f, 0xe0, 0xe3, 0xea, 0x75, 0xf4, 0xfc, 0x7c, 0x72, 0x94, 0xb8, 0xa2, 0xaf, 0x0e, 0x87, 0x9d, - 0xc7, 0xd7, 0x10, 0xd8, 0xe5, 0x41, 0xb9, 0xe0, 0x6f, 0x61, 0xb9, 0x8f, 0x7c, 0x85, 0x32, 0xc9, - 0xa1, 0x19, 0xc2, 0xf2, 0x58, 0xd0, 0x3c, 0x2e, 0xb2, 0x50, 0xed, 0x24, 0x8a, 0xe9, 0x97, 0xa5, - 0xd7, 0x69, 0xfa, 0x0a, 0x88, 0x72, 0x37, 0x9e, 0x56, 0x29, 0xb7, 0xc8, 0x23, 0xcf, 0x66, 0xf2, - 0x68, 0xbe, 0x28, 0x0b, 0x53, 0xde, 0xe1, 0x59, 0x12, 0xdb, 0xdd, 0xc7, 0xf0, 0x24, 0xe4, 0xba, - 0xd6, 0xae, 0xdd, 0xc4, 0x6c, 0xe5, 0x8c, 0xbd, 0x0d, 0xb1, 0xca, 0x33, 0x70, 0x3c, 0xdf, 0x67, - 0x32, 0x64, 0x62, 0x9b, 0x0c, 0xe1, 0x06, 0x69, 0xd4, 0x00, 0xff, 0x62, 0xe9, 0x80, 0x9c, 0x02, - 0x66, 0x35, 0xec, 0x3c, 0x12, 0xc7, 0xf8, 0xdf, 0x95, 0x5a, 0x43, 0x18, 0x50, 0x93, 0x78, 0x2a, - 0x57, 0x1d, 0xc2, 0x50, 0xbd, 0x12, 0x2e, 0xf7, 0x72, 0x30, 0x0b, 0x95, 0x58, 0xa4, 0x1b, 0xda, - 0x6a, 0x5e, 0x41, 0xcf, 0xc9, 0x40, 0x9e, 0xb2, 0x56, 0xf5, 0x8d, 0x35, 0xf4, 0xf2, 0xd4, 0x61, - 0x5b, 0xa4, 0xe1, 0x53, 0xcc, 0xcf, 0xa5, 0x65, 0x83, 0x7e, 0x09, 0x82, 0x0f, 0x6a, 0x17, 0xa2, - 0x49, 0x43, 0x34, 0xb3, 0x08, 0xe5, 0x43, 0xbf, 0x9e, 0x92, 0x89, 0x21, 0x26, 0xc7, 0x62, 0xf2, - 0xbd, 0xd2, 0x17, 0x33, 0x5e, 0x0c, 0x84, 0x25, 0xdb, 0xda, 0xd9, 0xb0, 0xdb, 0xe8, 0xff, 0x94, - 0x0a, 0xd1, 0x18, 0x62, 0xfe, 0xa7, 0xc3, 0xcd, 0xff, 0x3c, 0x28, 0xbb, 0x76, 0xdb, 0x1b, 0xbe, - 0x77, 0xed, 0xf6, 0x10, 0xc3, 0xb7, 0x7a, 0x3d, 0xcc, 0xe9, 0xad, 0xd6, 0xba, 0xbe, 0x85, 0x8b, - 0xee, 0xbc, 0xda, 0x74, 0xd8, 0xf9, 0xe8, 0x9e, 0xd4, 0xc8, 0xae, 0xe8, 0x1b, 0xd2, 0x3b, 0x71, - 0x02, 0x48, 0x4c, 0x3e, 0x63, 0x19, 0xde, 0xdc, 0x21, 0xa1, 0xb9, 0xad, 0x07, 0xd1, 0x1a, 0xd8, - 0x9b, 0xe4, 0x0e, 0x9d, 0x04, 0xdf, 0xc9, 0x6b, 0xd6, 0x6f, 0xa7, 0x61, 0xc2, 0x95, 0x77, 0xa1, - 0xd5, 0x42, 0x8f, 0x11, 0x82, 0x9a, 0x84, 0xee, 0x91, 0xbe, 0x40, 0x7a, 0x73, 0xda, 0xab, 0x21, - 0xa5, 0x1f, 0x82, 0x49, 0x20, 0xc4, 0xb4, 0x20, 0x44, 0xb9, 0x3d, 0xe8, 0xc8, 0x22, 0x92, 0x17, - 0xdf, 0xa7, 0xd3, 0x30, 0xeb, 0xcd, 0x23, 0x96, 0xb0, 0xd3, 0xdc, 0x46, 0xb7, 0xc9, 0x2e, 0x34, - 0xb1, 0x96, 0x96, 0xf6, 0x5b, 0x1a, 0xfa, 0x41, 0x2a, 0xa6, 0xca, 0x0b, 0x25, 0x87, 0xac, 0xd2, - 0xc5, 0xd2, 0xc5, 0x28, 0x82, 0xc9, 0x0b, 0xf3, 0x2b, 0x69, 0x80, 0xba, 0xe5, 0xcf, 0x75, 0x0f, - 0x20, 0xc9, 0x97, 0x4a, 0xdf, 0x97, 0xc0, 0x2a, 0x1e, 0x14, 0x1b, 0xbf, 0xe7, 0x90, 0xdc, 0x62, - 0x1b, 0x54, 0xd2, 0x58, 0xda, 0xfa, 0xd4, 0xe2, 0x6e, 0xa7, 0x6d, 0x34, 0x75, 0xa7, 0x77, 0x5f, - 0x38, 0x5c, 0xbc, 0xe4, 0xe2, 0xa3, 0x58, 0x46, 0xa1, 0x5f, 0x46, 0x88, 0x2c, 0xe9, 0x61, 0xdb, - 0xb4, 0x77, 0xd8, 0x56, 0x72, 0xaf, 0x67, 0x00, 0xf1, 0x31, 0xa8, 0xa7, 0x02, 0x47, 0xab, 0x1d, - 0x6c, 0x2e, 0xd8, 0x58, 0x6f, 0x35, 0xed, 0xdd, 0x9d, 0xf3, 0x5d, 0xde, 0xa9, 0x21, 0x5a, 0x47, - 0xb9, 0xa5, 0xe3, 0xb4, 0xb0, 0x74, 0x8c, 0x9e, 0xab, 0xc8, 0x1e, 0xfd, 0xe6, 0x36, 0x38, 0x38, - 0x1e, 0x86, 0x18, 0xea, 0x62, 0x6d, 0xc5, 0xf5, 0xac, 0x12, 0x67, 0xe2, 0xac, 0x12, 0xbf, 0x55, - 0xea, 0x20, 0xb9, 0x54, 0xbd, 0xc6, 0xb2, 0xa3, 0x3a, 0x57, 0xc3, 0x4e, 0x08, 0xbc, 0xd7, 0xc1, - 0xec, 0xf9, 0xe0, 0x8b, 0x0f, 0xb1, 0x98, 0xd8, 0xc7, 0xcf, 0xe1, 0x6d, 0x71, 0x57, 0x60, 0x44, - 0x16, 0x42, 0xd0, 0xf5, 0x11, 0x4c, 0xcb, 0x6c, 0xa6, 0xc6, 0x5a, 0x4e, 0x89, 0x2c, 0x3f, 0x79, - 0x14, 0x3e, 0x9e, 0x86, 0x69, 0x72, 0x9d, 0xd3, 0xc2, 0x25, 0xe2, 0x9d, 0x2f, 0x69, 0x94, 0xbc, - 0x88, 0x17, 0xb3, 0x0a, 0x99, 0xb6, 0x61, 0x5e, 0xf0, 0x76, 0xc1, 0xdd, 0xe7, 0xe0, 0x72, 0x90, - 0x74, 0x9f, 0xcb, 0x41, 0xfc, 0x7d, 0x0a, 0xbf, 0xdc, 0x03, 0xdd, 0x56, 0x37, 0x90, 0x5c, 0xf2, - 0x62, 0xfc, 0xdb, 0x0c, 0xe4, 0x6a, 0x58, 0xb7, 0x9b, 0xdb, 0xe8, 0xfd, 0xe9, 0xbe, 0x53, 0x85, - 0x49, 0x71, 0xaa, 0xb0, 0x04, 0x13, 0x9b, 0x46, 0xdb, 0xc1, 0x36, 0xf5, 0x0c, 0xe2, 0xbb, 0x76, - 0xda, 0xc4, 0x17, 0xda, 0x56, 0xf3, 0xc2, 0x3c, 0x33, 0xdd, 0xe7, 0xbd, 0x60, 0x52, 0xf3, 0x4b, - 0xe4, 0x27, 0xcd, 0xfb, 0xd9, 0x35, 0x08, 0xbb, 0x96, 0xed, 0x84, 0xc5, 0x09, 0x0e, 0xa1, 0x52, - 0xb3, 0x6c, 0x47, 0xa3, 0x3f, 0xba, 0x30, 0x6f, 0xee, 0xb6, 0xdb, 0x75, 0xfc, 0x80, 0xe3, 0x4d, - 0xdb, 0xbc, 0x77, 0xd7, 0x58, 0xb4, 0x36, 0x37, 0xbb, 0x98, 0x2e, 0x1a, 0x64, 0x35, 0xf6, 0xa6, - 0x1e, 0x87, 0x6c, 0xdb, 0xd8, 0x31, 0xe8, 0x44, 0x23, 0xab, 0xd1, 0x17, 0xf5, 0x46, 0xc8, 0x07, - 0x73, 0x1c, 0xca, 0xe8, 0xa9, 0x1c, 0x69, 0x9a, 0xfb, 0xd2, 0x5d, 0x9d, 0xb9, 0x80, 0x2f, 0x75, - 0x4f, 0x4d, 0x90, 0xef, 0xe4, 0x59, 0x74, 0xc3, 0x94, 0xd9, 0xef, 0xa0, 0x12, 0x0f, 0x9f, 0xc1, - 0xda, 0xb8, 0x69, 0xd9, 0x2d, 0x4f, 0x36, 0xe1, 0x13, 0x0c, 0x96, 0x2f, 0xde, 0x2e, 0x45, 0xdf, - 0xc2, 0xc7, 0xe0, 0x02, 0x91, 0x73, 0xbb, 0x4d, 0xb7, 0xe8, 0x73, 0x86, 0xb3, 0xbd, 0x86, 0x1d, - 0x1d, 0xfd, 0xad, 0xd2, 0x57, 0xe3, 0xa6, 0xff, 0x7f, 0x8d, 0x1b, 0xa0, 0x71, 0x34, 0x4c, 0x80, - 0xb3, 0x6b, 0x9b, 0xae, 0x1c, 0x59, 0x60, 0x2e, 0x2e, 0x45, 0xbd, 0x03, 0xae, 0x08, 0xde, 0xbc, - 0xa5, 0xd2, 0x45, 0x36, 0x6d, 0x9d, 0x22, 0xd9, 0xc3, 0x33, 0xa8, 0xeb, 0x70, 0x2d, 0xfd, 0xb8, - 0x52, 0x5f, 0x5b, 0x5d, 0x31, 0xb6, 0xb6, 0xdb, 0xc6, 0xd6, 0xb6, 0xd3, 0x2d, 0x9b, 0x5d, 0x07, - 0xeb, 0xad, 0xea, 0xa6, 0x46, 0x23, 0x7c, 0x03, 0xa1, 0x23, 0x93, 0x55, 0xf4, 0x1c, 0x92, 0x1b, - 0xdd, 0x78, 0x4d, 0x09, 0x69, 0x29, 0x4f, 0x76, 0x5b, 0x4a, 0x77, 0xb7, 0xed, 0x63, 0x7a, 0x55, - 0x0f, 0xa6, 0x81, 0xaa, 0xef, 0xb6, 0x49, 0x73, 0x21, 0x99, 0xe3, 0x8e, 0x73, 0x11, 0x9c, 0x24, - 0xdf, 0x6c, 0xfe, 0xdf, 0x1c, 0x64, 0x97, 0x6d, 0xbd, 0xb3, 0x8d, 0x9e, 0xc3, 0xf5, 0xcf, 0xa3, - 0x6a, 0x13, 0xbe, 0x76, 0xa6, 0x07, 0x69, 0xa7, 0x32, 0x40, 0x3b, 0x33, 0x9c, 0x76, 0x86, 0x2f, - 0x2a, 0x9f, 0x81, 0x99, 0xa6, 0xd5, 0x6e, 0xe3, 0xa6, 0x2b, 0x8f, 0x72, 0x8b, 0xac, 0xe6, 0x4c, - 0x69, 0x42, 0x1a, 0x09, 0xb8, 0x87, 0x9d, 0x1a, 0x5d, 0x43, 0xa7, 0x4a, 0x1f, 0x24, 0xa0, 0x97, - 0xa7, 0x21, 0x53, 0x6a, 0x6d, 0x61, 0x61, 0x9d, 0x3d, 0xc5, 0xad, 0xb3, 0x9f, 0x84, 0x9c, 0xa3, - 0xdb, 0x5b, 0xd8, 0xf1, 0xd6, 0x09, 0xe8, 0x9b, 0x1f, 0x07, 0x50, 0xe1, 0xe2, 0x00, 0x3e, 0x05, - 0x32, 0xae, 0xcc, 0x58, 0x84, 0x9d, 0x6b, 0xfb, 0xc1, 0x4f, 0x64, 0x3f, 0xef, 0x96, 0x38, 0xef, - 0xd6, 0x5a, 0x23, 0x3f, 0xf4, 0x62, 0x9d, 0xdd, 0x87, 0x35, 0xb9, 0xac, 0xa8, 0x69, 0x99, 0xe5, - 0x1d, 0x7d, 0x0b, 0xb3, 0x6a, 0x06, 0x09, 0xde, 0xd7, 0xd2, 0x8e, 0x75, 0xbf, 0xc1, 0x42, 0xf2, - 0x05, 0x09, 0x6e, 0x15, 0xb6, 0x8d, 0x56, 0x0b, 0x9b, 0xac, 0x65, 0xb3, 0xb7, 0x33, 0xa7, 0x21, - 0xe3, 0xf2, 0xe0, 0xea, 0x8f, 0x6b, 0x2c, 0xe4, 0x8f, 0xa8, 0x33, 0x6e, 0xb3, 0xa2, 0x8d, 0x37, - 0x9f, 0x12, 0xd7, 0x54, 0x65, 0xdc, 0x76, 0x68, 0xe5, 0xfa, 0x37, 0xae, 0xc7, 0x43, 0xd6, 0xb4, - 0x5a, 0x78, 0xe0, 0x20, 0x44, 0x73, 0xa9, 0x4f, 0x82, 0x2c, 0x6e, 0xb9, 0xbd, 0x82, 0x42, 0xb2, - 0x9f, 0x8e, 0x96, 0xa5, 0x46, 0x33, 0xc7, 0xf3, 0x0d, 0xea, 0xc7, 0x6d, 0xf2, 0x0d, 0xf0, 0x17, - 0x26, 0xe0, 0x28, 0xed, 0x03, 0x6a, 0xbb, 0xe7, 0x5d, 0x52, 0xe7, 0x31, 0x7a, 0xb8, 0xff, 0xc0, - 0x75, 0x54, 0x54, 0xf6, 0xe3, 0x90, 0xed, 0xee, 0x9e, 0xf7, 0x8d, 0x50, 0xfa, 0xc2, 0x37, 0xdd, - 0xf4, 0x48, 0x86, 0x33, 0x65, 0xd8, 0xe1, 0x4c, 0x18, 0x9a, 0x14, 0xaf, 0xf1, 0x07, 0x03, 0x59, - 0x8e, 0x24, 0x7b, 0x03, 0x59, 0xbf, 0x61, 0xe8, 0x14, 0x4c, 0xe8, 0x9b, 0x0e, 0xb6, 0x03, 0x33, - 0x91, 0xbd, 0xba, 0x43, 0xe5, 0x79, 0xbc, 0x69, 0xd9, 0xae, 0x58, 0xa6, 0xe8, 0x50, 0xe9, 0xbd, - 0x73, 0x2d, 0x17, 0x84, 0x1d, 0xb2, 0x9b, 0xe0, 0x98, 0x69, 0x2d, 0xe2, 0x0e, 0x93, 0x33, 0x45, - 0x71, 0x96, 0xb4, 0x80, 0xfd, 0x1f, 0xf6, 0x75, 0x25, 0x73, 0xfb, 0xbb, 0x12, 0xf4, 0xd9, 0xb8, - 0x73, 0xe6, 0x1e, 0xa0, 0x47, 0x66, 0xa1, 0xa9, 0x4f, 0x83, 0x99, 0x16, 0x73, 0xd1, 0x6a, 0x1a, - 0x7e, 0x2b, 0x09, 0xfd, 0x4f, 0xc8, 0x1c, 0x28, 0x52, 0x86, 0x57, 0xa4, 0x65, 0x98, 0x24, 0x07, - 0x72, 0x5c, 0x4d, 0xca, 0xf6, 0xc4, 0x2b, 0x24, 0xd3, 0x3a, 0xbf, 0x52, 0x9c, 0xd8, 0xe6, 0x8b, - 0xec, 0x17, 0xcd, 0xff, 0x39, 0xde, 0xec, 0x3b, 0x5a, 0x42, 0xc9, 0x37, 0xc7, 0xdf, 0xc8, 0xc1, - 0x15, 0x45, 0xdb, 0xea, 0x76, 0x49, 0x14, 0x8a, 0xde, 0x86, 0xf9, 0xe6, 0xb4, 0x10, 0x11, 0xf8, - 0x11, 0xdd, 0xfc, 0xfa, 0x35, 0xa8, 0xf1, 0x35, 0x8d, 0x6f, 0x48, 0x1f, 0x65, 0xf6, 0xf7, 0x1f, - 0x42, 0x84, 0xfe, 0xa3, 0xd1, 0x48, 0xde, 0x93, 0x92, 0x39, 0x5d, 0x1d, 0x53, 0x56, 0xc9, 0x37, - 0x97, 0x2f, 0xa7, 0xe1, 0xca, 0x5e, 0x6e, 0x36, 0xcc, 0xae, 0xdf, 0x60, 0xae, 0x1e, 0xd0, 0x5e, - 0xc4, 0xd3, 0xb8, 0x91, 0x77, 0xf1, 0x84, 0xd4, 0x9d, 0x2b, 0x2d, 0x64, 0xb1, 0xe4, 0x7d, 0x29, - 0x99, 0xbb, 0x78, 0x62, 0x93, 0x4f, 0x5e, 0xb8, 0x9f, 0xcb, 0xc0, 0xd1, 0x65, 0xdb, 0xda, 0xed, - 0x74, 0x83, 0x1e, 0xe8, 0xaf, 0xfa, 0x6f, 0xb8, 0xe6, 0x64, 0x4c, 0x83, 0x6b, 0x60, 0xda, 0x66, - 0xd6, 0x5c, 0xb0, 0xfd, 0xca, 0x27, 0xf1, 0xbd, 0x97, 0x72, 0x90, 0xde, 0x2b, 0xe8, 0x67, 0x32, - 0x42, 0x3f, 0xd3, 0xdb, 0x73, 0x64, 0xfb, 0xf4, 0x1c, 0x7f, 0x99, 0x8e, 0x39, 0xa8, 0xf6, 0x88, - 0x28, 0xa4, 0xbf, 0x28, 0x42, 0x6e, 0x8b, 0x64, 0x64, 0xdd, 0xc5, 0xe3, 0xe4, 0x6a, 0x46, 0x88, - 0x6b, 0xec, 0xd7, 0x40, 0xae, 0x0a, 0xaf, 0xc3, 0xb1, 0x06, 0xb8, 0x68, 0x6e, 0x93, 0x57, 0xaa, - 0x87, 0x32, 0x30, 0xe3, 0x97, 0x5e, 0x6e, 0x75, 0xd1, 0x8b, 0xfa, 0x6b, 0xd4, 0xac, 0x8c, 0x46, - 0xed, 0x5b, 0x67, 0xf6, 0x47, 0x1d, 0x85, 0x1b, 0x75, 0xfa, 0x8e, 0x2e, 0x33, 0x21, 0xa3, 0x0b, - 0x7a, 0xb6, 0x22, 0x1b, 0x53, 0x5f, 0xec, 0x5a, 0x49, 0x6d, 0x1e, 0xc9, 0x83, 0x85, 0x64, 0x64, - 0xff, 0xc1, 0xb5, 0x4a, 0x5e, 0x49, 0x3e, 0x94, 0x86, 0x63, 0xfb, 0x3b, 0xf3, 0x47, 0x8b, 0x5e, - 0x68, 0x6e, 0x9d, 0xba, 0xbe, 0x17, 0x1a, 0x79, 0x13, 0x37, 0xe9, 0x22, 0x8f, 0xc6, 0x0a, 0xf6, - 0xde, 0xe0, 0x4e, 0x5c, 0xee, 0xf0, 0xab, 0x24, 0xd1, 0xe4, 0x05, 0xf8, 0xcb, 0x0a, 0x4c, 0xd5, - 0xb0, 0xb3, 0xaa, 0x5f, 0xb2, 0x76, 0x1d, 0xa4, 0xcb, 0x6e, 0xcf, 0x3d, 0x15, 0x72, 0x6d, 0xf2, - 0x0b, 0xbb, 0xaa, 0xf4, 0x9a, 0xbe, 0xfb, 0x5b, 0xc4, 0xf7, 0x87, 0x92, 0xd6, 0x58, 0x7e, 0xf1, - 0x4c, 0xb2, 0xcc, 0xee, 0xa8, 0xcf, 0xdd, 0x48, 0xb6, 0x76, 0x62, 0xed, 0x9d, 0x86, 0x15, 0x9d, - 0x3c, 0x2c, 0xcf, 0x55, 0x60, 0xb6, 0x86, 0x9d, 0x72, 0x77, 0x49, 0xdf, 0xb3, 0x6c, 0xc3, 0xc1, - 0xfc, 0x5d, 0x45, 0xd1, 0xd0, 0x9c, 0x06, 0x30, 0xfc, 0xdf, 0x58, 0xa4, 0x04, 0x2e, 0x05, 0xfd, - 0x7a, 0x5c, 0x47, 0x21, 0x81, 0x8f, 0x91, 0x80, 0x10, 0xcb, 0xc7, 0x22, 0xaa, 0xf8, 0xe4, 0x81, - 0xf8, 0x52, 0x9a, 0x01, 0x51, 0xb0, 0x9b, 0xdb, 0xc6, 0x1e, 0x6e, 0xc5, 0x04, 0xc2, 0xfb, 0x2d, - 0x00, 0xc2, 0x27, 0x14, 0xdb, 0x7d, 0x45, 0xe0, 0x63, 0x14, 0xee, 0x2b, 0x51, 0x04, 0xc7, 0x12, - 0xec, 0xc0, 0xed, 0x7a, 0xd8, 0x7a, 0xe6, 0x5d, 0xb2, 0x62, 0x0d, 0x4c, 0xb6, 0x34, 0x6f, 0xb2, - 0x0d, 0xd5, 0xb1, 0xd0, 0xb2, 0x07, 0xe9, 0x74, 0x26, 0x89, 0x8e, 0xa5, 0x6f, 0xd1, 0xc9, 0x0b, - 0xfd, 0x7d, 0x0a, 0x9c, 0xf0, 0x4f, 0x01, 0xd7, 0xb0, 0xb3, 0xa8, 0x77, 0xb7, 0xcf, 0x5b, 0xba, - 0xdd, 0xe2, 0xaf, 0xb0, 0x1d, 0xfa, 0xc4, 0x1f, 0xfa, 0x22, 0x0f, 0x42, 0x45, 0x04, 0xa1, 0xaf, - 0xab, 0x68, 0x5f, 0x5e, 0x46, 0xd1, 0xc9, 0x44, 0x7a, 0xb3, 0xfe, 0xa6, 0x0f, 0xd6, 0x33, 0x04, - 0xb0, 0xee, 0x1c, 0x96, 0xc5, 0xe4, 0x81, 0xfb, 0x35, 0x3a, 0x22, 0x70, 0x5e, 0xcd, 0xf7, 0xc9, - 0x02, 0x16, 0xe2, 0xd5, 0xaa, 0x84, 0x7a, 0xb5, 0x0e, 0x35, 0x46, 0x0c, 0xf4, 0x48, 0x4e, 0x76, - 0x8c, 0x38, 0x44, 0x6f, 0xe3, 0x77, 0x29, 0x90, 0x27, 0x61, 0x20, 0x38, 0x8f, 0x6f, 0x74, 0xbf, - 0x2c, 0x3a, 0xfb, 0xbc, 0xcb, 0x27, 0xe2, 0x7a, 0x97, 0xa3, 0x77, 0xc6, 0xf5, 0x21, 0xef, 0xe5, - 0x76, 0x24, 0x88, 0xc5, 0x72, 0x11, 0x1f, 0xc0, 0x41, 0xf2, 0xa0, 0xfd, 0x37, 0x05, 0xc0, 0x6d, - 0xd0, 0xec, 0xec, 0xc3, 0x33, 0x65, 0xe1, 0xba, 0x99, 0xf7, 0xab, 0x77, 0x81, 0x3a, 0xd1, 0x03, - 0x14, 0xa5, 0x18, 0x9c, 0xaa, 0x78, 0x38, 0xae, 0x6f, 0x65, 0xc0, 0xd5, 0x48, 0x60, 0x89, 0xe5, - 0x6d, 0x19, 0x5a, 0x76, 0xf2, 0x80, 0xfc, 0x8f, 0x34, 0x64, 0xeb, 0x56, 0x0d, 0x3b, 0x07, 0x37, - 0x05, 0x62, 0x1f, 0xdb, 0x27, 0xe5, 0x8e, 0xe2, 0xd8, 0x7e, 0x3f, 0x42, 0xc9, 0x8b, 0xee, 0xbd, - 0x69, 0x98, 0xa9, 0x5b, 0x45, 0x7f, 0x71, 0x4a, 0xde, 0x57, 0x55, 0xfe, 0x5e, 0x40, 0xbf, 0x82, - 0x41, 0x31, 0x07, 0xba, 0x17, 0x70, 0x30, 0xbd, 0xe4, 0xe5, 0x76, 0x1b, 0x1c, 0xdd, 0x30, 0x5b, - 0x96, 0x86, 0x5b, 0x16, 0x5b, 0xe9, 0x56, 0x55, 0xc8, 0xec, 0x9a, 0x2d, 0x8b, 0xb0, 0x9c, 0xd5, - 0xc8, 0xb3, 0x9b, 0x66, 0xe3, 0x96, 0xc5, 0x7c, 0x03, 0xc8, 0x33, 0xfa, 0x86, 0x02, 0x19, 0xf7, - 0x5f, 0x79, 0x51, 0xbf, 0x4b, 0x89, 0x19, 0x88, 0xc0, 0x25, 0x3f, 0x12, 0x4b, 0xe8, 0x2e, 0x6e, - 0xed, 0x9f, 0x7a, 0xb0, 0x5e, 0x1b, 0x56, 0x1e, 0x27, 0x8a, 0x60, 0xcd, 0x5f, 0x3d, 0x05, 0x13, - 0xe7, 0xdb, 0x56, 0xf3, 0x42, 0x70, 0x5e, 0x9e, 0xbd, 0xaa, 0x37, 0x42, 0xd6, 0xd6, 0xcd, 0x2d, - 0xcc, 0xf6, 0x14, 0x8e, 0xf7, 0xf4, 0x85, 0xc4, 0xeb, 0x45, 0xa3, 0x59, 0xd0, 0x3b, 0xe3, 0x84, - 0x40, 0xe8, 0x53, 0xf9, 0x78, 0xfa, 0xb0, 0x38, 0xc4, 0xc9, 0xb2, 0x3c, 0xcc, 0x14, 0x0b, 0xf4, - 0x06, 0xce, 0xb5, 0xea, 0xd9, 0x52, 0x5e, 0x21, 0x30, 0xbb, 0x32, 0x49, 0x10, 0x66, 0x97, 0xfc, - 0x8f, 0x2c, 0xcc, 0x7d, 0x2a, 0x7f, 0x18, 0x30, 0x7f, 0x3a, 0x0d, 0xb3, 0xab, 0x46, 0xd7, 0x09, - 0xf3, 0xf6, 0x8f, 0x88, 0x02, 0xf7, 0xe2, 0xb8, 0xa6, 0xb2, 0x50, 0x8e, 0x74, 0xf8, 0xb7, 0x58, - 0xe6, 0x70, 0x54, 0x11, 0xe3, 0x39, 0x96, 0x42, 0x38, 0xa0, 0xb7, 0xe6, 0x49, 0x4b, 0x32, 0xb6, - 0xa1, 0x14, 0x14, 0x32, 0x7e, 0x43, 0x29, 0xb4, 0xec, 0xe4, 0xe5, 0xfb, 0x8d, 0x34, 0x1c, 0x73, - 0x8b, 0x8f, 0x5a, 0x96, 0x0a, 0x17, 0xf3, 0xc0, 0x65, 0xa9, 0xd8, 0x2b, 0xe3, 0xfb, 0x78, 0x19, - 0xc5, 0xca, 0xf8, 0x20, 0xa2, 0x63, 0x16, 0x73, 0xc8, 0x32, 0xec, 0x20, 0x31, 0x47, 0x2c, 0xc3, - 0x0e, 0x2f, 0xe6, 0xe8, 0xa5, 0xd8, 0x21, 0xc5, 0x7c, 0x68, 0x0b, 0xac, 0x6f, 0x54, 0x7c, 0x31, - 0x87, 0xae, 0x6d, 0x44, 0x88, 0x39, 0xf6, 0x89, 0x5d, 0xf4, 0xee, 0x21, 0x05, 0x3f, 0xe2, 0xf5, - 0x8d, 0x61, 0x60, 0x3a, 0xc4, 0x35, 0x8e, 0x57, 0x28, 0x30, 0xc7, 0xb8, 0xe8, 0x3f, 0x65, 0x8e, - 0xc0, 0x28, 0xf6, 0x94, 0x39, 0xf6, 0x19, 0x20, 0x91, 0xb3, 0xf1, 0x9f, 0x01, 0x8a, 0x2c, 0x3f, - 0x79, 0x70, 0xbe, 0x99, 0x81, 0x93, 0x2e, 0x0b, 0x6b, 0x56, 0xcb, 0xd8, 0xbc, 0x44, 0xb9, 0x38, - 0xab, 0xb7, 0x77, 0x71, 0x17, 0x7d, 0x20, 0x2d, 0x8b, 0xd2, 0x7f, 0x02, 0xb0, 0x3a, 0xd8, 0xa6, - 0x81, 0xd4, 0x18, 0x50, 0x77, 0x84, 0x55, 0x76, 0x7f, 0x49, 0x7e, 0x50, 0xf4, 0xaa, 0x47, 0x44, - 0xe3, 0xe8, 0xb9, 0x56, 0xe1, 0x94, 0xff, 0xa5, 0xd7, 0xc1, 0x23, 0xb5, 0xdf, 0xc1, 0xe3, 0x06, - 0x50, 0xf4, 0x56, 0xcb, 0x87, 0xaa, 0x77, 0x33, 0x9b, 0x94, 0xa9, 0xb9, 0x59, 0xdc, 0x9c, 0x5d, - 0x1c, 0x1c, 0xcd, 0x0b, 0xc9, 0xd9, 0xc5, 0x8e, 0x3a, 0x0f, 0x39, 0x7a, 0x83, 0xa0, 0xbf, 0xa2, - 0xdf, 0x3f, 0x33, 0xcb, 0x25, 0x9a, 0x76, 0x55, 0x51, 0x0d, 0x6f, 0x8b, 0x25, 0x99, 0x7e, 0xfd, - 0x74, 0x60, 0x27, 0x6b, 0x82, 0x82, 0x3d, 0x7d, 0x68, 0xca, 0xe3, 0xd9, 0x0d, 0x2b, 0x74, 0x3a, - 0xed, 0x4b, 0x75, 0x16, 0x7c, 0x25, 0xd6, 0x6e, 0x18, 0x17, 0xc3, 0x25, 0xdd, 0x1b, 0xc3, 0x25, - 0xfe, 0x6e, 0x98, 0xc0, 0xc7, 0x28, 0x76, 0xc3, 0xa2, 0x08, 0x8e, 0x61, 0x3d, 0x32, 0x4b, 0xad, - 0x66, 0x16, 0xa3, 0xf6, 0x2d, 0xfd, 0x0f, 0xa1, 0x81, 0xe8, 0xec, 0xd2, 0x2f, 0x7c, 0x6d, 0x64, - 0x6c, 0x6e, 0xf5, 0x49, 0x90, 0xdb, 0xb4, 0xec, 0x1d, 0xdd, 0xdb, 0xb8, 0xef, 0x3d, 0x29, 0xc2, - 0xe2, 0xc2, 0x2e, 0x91, 0x3c, 0x1a, 0xcb, 0xeb, 0xce, 0x47, 0x9e, 0x65, 0x74, 0x58, 0xd4, 0x45, - 0xf7, 0x51, 0xbd, 0x0e, 0x66, 0x59, 0xf0, 0xc5, 0x0a, 0xee, 0x3a, 0xb8, 0xc5, 0x22, 0x56, 0x88, - 0x89, 0xea, 0x19, 0x98, 0x61, 0x09, 0x4b, 0x46, 0x1b, 0x77, 0x59, 0xd0, 0x0a, 0x21, 0x4d, 0x3d, - 0x09, 0x39, 0xa3, 0x7b, 0x4f, 0xd7, 0x32, 0x89, 0xff, 0xff, 0xa4, 0xc6, 0xde, 0xd4, 0x1b, 0xe0, - 0x28, 0xcb, 0xe7, 0x1b, 0xab, 0xf4, 0xc0, 0x4e, 0x6f, 0x32, 0xfa, 0xfc, 0x30, 0x13, 0x87, 0xd8, - 0xf1, 0x78, 0x5d, 0x14, 0x76, 0x9b, 0x4d, 0x8c, 0x5b, 0xec, 0x64, 0x93, 0xf7, 0x1a, 0x33, 0x52, - 0x6f, 0xec, 0x69, 0xc6, 0x21, 0x85, 0xea, 0xfd, 0xe8, 0x09, 0xc8, 0xd1, 0x6b, 0x2f, 0xd0, 0xcb, - 0xe6, 0xfa, 0x2a, 0xe3, 0x9c, 0xa8, 0x8c, 0x1b, 0x30, 0x63, 0x5a, 0x6e, 0x71, 0xeb, 0xba, 0xad, - 0xef, 0x74, 0xa3, 0x56, 0x11, 0x29, 0x5d, 0x7f, 0xc8, 0xa8, 0x70, 0xbf, 0xad, 0x1c, 0xd1, 0x04, - 0x32, 0xea, 0xff, 0x06, 0x47, 0xcf, 0xb3, 0x08, 0x00, 0x5d, 0x46, 0x39, 0x1d, 0xee, 0x63, 0xd7, - 0x43, 0x79, 0x41, 0xfc, 0x73, 0xe5, 0x88, 0xd6, 0x4b, 0x4c, 0xfd, 0x49, 0x98, 0x73, 0x5f, 0x5b, - 0xd6, 0x45, 0x8f, 0x71, 0x25, 0xdc, 0xd0, 0xe8, 0x21, 0xbf, 0x26, 0xfc, 0xb8, 0x72, 0x44, 0xeb, - 0x21, 0xa5, 0x56, 0x01, 0xb6, 0x9d, 0x9d, 0x36, 0x23, 0x9c, 0x09, 0x57, 0xc9, 0x1e, 0xc2, 0x2b, - 0xfe, 0x4f, 0x2b, 0x47, 0x34, 0x8e, 0x84, 0xba, 0x0a, 0x53, 0xce, 0x03, 0x0e, 0xa3, 0x97, 0x0d, - 0xdf, 0xdc, 0xee, 0xa1, 0x57, 0xf7, 0xfe, 0x59, 0x39, 0xa2, 0x05, 0x04, 0xd4, 0x32, 0x4c, 0x76, - 0xce, 0x33, 0x62, 0xb9, 0x3e, 0x57, 0xfd, 0xf7, 0x27, 0xb6, 0x7e, 0xde, 0xa7, 0xe5, 0xff, 0xee, - 0x32, 0xd6, 0xec, 0xee, 0x31, 0x5a, 0x13, 0xd2, 0x8c, 0x15, 0xbd, 0x7f, 0x5c, 0xc6, 0x7c, 0x02, - 0x6a, 0x19, 0xa6, 0xba, 0xa6, 0xde, 0xe9, 0x6e, 0x5b, 0x4e, 0xf7, 0xd4, 0x64, 0x8f, 0x1f, 0x64, - 0x38, 0xb5, 0x1a, 0xfb, 0x47, 0x0b, 0xfe, 0x56, 0x9f, 0x04, 0x27, 0x76, 0xc9, 0xf5, 0xa1, 0xa5, - 0x07, 0x8c, 0xae, 0x63, 0x98, 0x5b, 0x5e, 0x0c, 0x59, 0xda, 0x9b, 0xf4, 0xff, 0xa8, 0xce, 0xb3, - 0x13, 0x51, 0x40, 0xda, 0x26, 0xea, 0xdd, 0x8c, 0xa3, 0xc5, 0x72, 0x07, 0xa1, 0x9e, 0x06, 0x19, - 0xf7, 0x13, 0x39, 0xb3, 0x39, 0xd7, 0x7f, 0xa1, 0xaf, 0x57, 0x77, 0x48, 0x03, 0x76, 0x7f, 0x72, - 0xc7, 0x46, 0xd3, 0x5a, 0xb7, 0xad, 0x2d, 0x1b, 0x77, 0xbb, 0xcc, 0xe1, 0x90, 0x4b, 0x71, 0x1b, - 0xb8, 0xd1, 0x5d, 0x33, 0xb6, 0xa8, 0xf5, 0xc4, 0xfc, 0xdd, 0xf9, 0x24, 0x3a, 0xdb, 0xac, 0xe0, - 0x8b, 0xc4, 0x21, 0x98, 0x9c, 0xbf, 0x21, 0xb3, 0x4d, 0x2f, 0x05, 0x5d, 0x0f, 0x33, 0x7c, 0x23, - 0xa3, 0x77, 0x67, 0x19, 0x81, 0xed, 0xc5, 0xde, 0xd0, 0x75, 0x30, 0x27, 0xea, 0x34, 0x37, 0xc4, - 0x28, 0x5e, 0x57, 0x88, 0xae, 0x85, 0xa3, 0x3d, 0x0d, 0xcb, 0x8b, 0x29, 0x92, 0x0a, 0x62, 0x8a, - 0x5c, 0x03, 0x10, 0x68, 0x71, 0x5f, 0x32, 0x57, 0xc3, 0x94, 0xaf, 0x97, 0x7d, 0x33, 0x7c, 0x2d, - 0x05, 0x93, 0x9e, 0xb2, 0xf5, 0xcb, 0xe0, 0x8e, 0x2f, 0x26, 0xb7, 0x81, 0xc0, 0xa6, 0xd9, 0x42, - 0x9a, 0x3b, 0x8e, 0x04, 0x6e, 0xbb, 0x75, 0xc3, 0x69, 0x7b, 0x47, 0xdf, 0x7a, 0x93, 0xd5, 0x75, - 0x00, 0x83, 0x60, 0x54, 0x0f, 0xce, 0xc2, 0xdd, 0x12, 0xa3, 0x3d, 0x50, 0x7d, 0xe0, 0x68, 0x9c, - 0x79, 0x34, 0x3b, 0xa8, 0x36, 0x05, 0xd9, 0xda, 0x7a, 0xa1, 0x58, 0xca, 0x1f, 0x51, 0xe7, 0x00, - 0x4a, 0xcf, 0x5c, 0x2f, 0x69, 0xe5, 0x52, 0xa5, 0x58, 0xca, 0xa7, 0xd0, 0x2b, 0xd3, 0x30, 0xe5, - 0x37, 0x82, 0xbe, 0x95, 0x2c, 0x31, 0xd5, 0x1a, 0x78, 0x3d, 0xd1, 0xfe, 0x46, 0xc5, 0x2b, 0xd9, - 0x53, 0xe1, 0xf2, 0xdd, 0x2e, 0x5e, 0x32, 0xec, 0xae, 0xa3, 0x59, 0x17, 0x97, 0x2c, 0xdb, 0x8f, - 0x9a, 0xec, 0x5d, 0xc3, 0x1f, 0xf2, 0xd9, 0xb5, 0x28, 0x5a, 0x98, 0x1c, 0x8a, 0xc2, 0x36, 0x5b, - 0x19, 0x0e, 0x12, 0x5c, 0xba, 0x0e, 0xbd, 0xf7, 0xbe, 0x8b, 0x35, 0xeb, 0x62, 0xb7, 0x60, 0xb6, - 0x8a, 0x56, 0x7b, 0x77, 0xc7, 0xec, 0x32, 0x9b, 0x20, 0xec, 0xb3, 0x2b, 0x1d, 0x72, 0xf9, 0xd8, - 0x1c, 0x40, 0xb1, 0xba, 0xba, 0x5a, 0x2a, 0xd6, 0xcb, 0xd5, 0x4a, 0xfe, 0x88, 0x2b, 0xad, 0x7a, - 0x61, 0x61, 0xd5, 0x95, 0xce, 0x4f, 0xc1, 0xa4, 0xd7, 0xa6, 0x59, 0x18, 0x94, 0x94, 0x17, 0x06, - 0x45, 0x2d, 0xc0, 0xa4, 0xd7, 0xca, 0xd9, 0x88, 0xf0, 0x98, 0xde, 0x63, 0xaf, 0x3b, 0xba, 0xed, - 0x10, 0x7f, 0x69, 0x8f, 0xc8, 0x82, 0xde, 0xc5, 0x9a, 0xff, 0xdb, 0x99, 0xc7, 0x33, 0x0e, 0x54, - 0x98, 0x2b, 0xac, 0xae, 0x36, 0xaa, 0x5a, 0xa3, 0x52, 0xad, 0xaf, 0x94, 0x2b, 0xcb, 0x74, 0x84, - 0x2c, 0x2f, 0x57, 0xaa, 0x5a, 0x89, 0x0e, 0x90, 0xb5, 0x7c, 0x8a, 0x5e, 0x7e, 0xb7, 0x30, 0x09, - 0xb9, 0x0e, 0x91, 0x2e, 0xfa, 0xb2, 0x12, 0xf3, 0xbc, 0xbb, 0x8f, 0x53, 0xc8, 0xf5, 0x5c, 0x82, - 0xcf, 0x79, 0xba, 0xcf, 0x99, 0xd0, 0x33, 0x30, 0x43, 0x6d, 0xb9, 0x2e, 0x59, 0xbe, 0x67, 0x37, - 0xdc, 0x0a, 0x69, 0xe8, 0xe3, 0xe9, 0x18, 0x87, 0xe0, 0xfb, 0x72, 0x14, 0xcf, 0xb8, 0xf8, 0xd3, - 0x61, 0x2e, 0xbb, 0x53, 0x61, 0xae, 0x5c, 0xa9, 0x97, 0xb4, 0x4a, 0x61, 0x95, 0x65, 0x51, 0xd4, - 0x53, 0x70, 0xbc, 0x52, 0x65, 0x31, 0xfd, 0x6a, 0xe4, 0x5a, 0xed, 0xb5, 0xf5, 0xaa, 0x56, 0xcf, - 0x67, 0xd5, 0x93, 0xa0, 0xd2, 0x67, 0xe1, 0x56, 0xfa, 0x9c, 0xfa, 0x58, 0xb8, 0x76, 0xb5, 0xbc, - 0x56, 0xae, 0x37, 0xaa, 0x4b, 0x0d, 0xad, 0x7a, 0xae, 0xe6, 0x22, 0xa8, 0x95, 0x56, 0x0b, 0xae, - 0x22, 0x71, 0x97, 0xe0, 0x4d, 0xa8, 0x97, 0xc1, 0x51, 0x72, 0xc1, 0x25, 0xb9, 0xd9, 0x9e, 0x96, - 0x37, 0xa9, 0x5e, 0x05, 0xa7, 0xca, 0x95, 0xda, 0xc6, 0xd2, 0x52, 0xb9, 0x58, 0x2e, 0x55, 0xea, - 0x8d, 0xf5, 0x92, 0xb6, 0x56, 0xae, 0xd5, 0xdc, 0x7f, 0xf3, 0x53, 0xe4, 0x8a, 0x31, 0xda, 0x67, - 0xa2, 0xf7, 0x2b, 0x30, 0x7b, 0x56, 0x6f, 0x1b, 0xee, 0x40, 0x41, 0xee, 0x1e, 0xec, 0x39, 0x2e, - 0xe2, 0x90, 0x3b, 0x0a, 0x99, 0xc3, 0x39, 0x79, 0x41, 0x3f, 0xa7, 0xc4, 0x3c, 0x2e, 0xc2, 0x80, - 0xa0, 0x25, 0xce, 0x0b, 0xa5, 0x85, 0x4c, 0x6e, 0x5e, 0x9f, 0x8e, 0x71, 0x5c, 0x44, 0x9e, 0x7c, - 0x3c, 0xf0, 0x5f, 0x35, 0x2a, 0xf0, 0xf3, 0x30, 0xb3, 0x51, 0x29, 0x6c, 0xd4, 0x57, 0xaa, 0x5a, - 0xf9, 0x27, 0x48, 0xb4, 0xf1, 0x59, 0x98, 0x5a, 0xaa, 0x6a, 0x0b, 0xe5, 0xc5, 0xc5, 0x52, 0x25, - 0x9f, 0x55, 0x2f, 0x87, 0xcb, 0x6a, 0x25, 0xed, 0x6c, 0xb9, 0x58, 0x6a, 0x6c, 0x54, 0x0a, 0x67, - 0x0b, 0xe5, 0x55, 0xd2, 0x47, 0xe4, 0x22, 0xee, 0x4d, 0x9c, 0x40, 0x3f, 0x93, 0x01, 0xa0, 0x55, - 0x77, 0x2d, 0x69, 0xfe, 0x76, 0xbd, 0x3f, 0x8b, 0x3b, 0x69, 0x08, 0xc8, 0x84, 0xb4, 0xdf, 0x32, - 0x4c, 0xda, 0xec, 0x03, 0x5b, 0x3e, 0x19, 0x44, 0x87, 0x3e, 0x7a, 0xd4, 0x34, 0xff, 0x77, 0xf4, - 0x81, 0x38, 0x73, 0x84, 0x50, 0xc6, 0xe2, 0x21, 0xb9, 0x34, 0x1a, 0x20, 0xd1, 0x8b, 0x52, 0x30, - 0x27, 0x56, 0xcc, 0xad, 0x04, 0x31, 0xa6, 0xe4, 0x2a, 0x21, 0xfe, 0xcc, 0x19, 0x59, 0x67, 0x9e, - 0xc8, 0x86, 0x53, 0xf0, 0x5a, 0x26, 0x3d, 0xf9, 0xed, 0x59, 0x2c, 0xf9, 0x94, 0xcb, 0xbc, 0x6b, - 0x74, 0xd0, 0xab, 0xd5, 0xeb, 0x0f, 0x38, 0x79, 0x05, 0x7d, 0x4d, 0x81, 0x59, 0xe1, 0xfa, 0x3e, - 0xf4, 0xfa, 0x94, 0xcc, 0xd5, 0x5a, 0xdc, 0xc5, 0x80, 0xa9, 0x83, 0x5e, 0x0c, 0x78, 0xe6, 0x66, - 0x98, 0x60, 0x69, 0x44, 0xbe, 0xd5, 0x8a, 0x6b, 0x0a, 0x1c, 0x85, 0xe9, 0xe5, 0x52, 0xbd, 0x51, - 0xab, 0x17, 0xb4, 0x7a, 0x69, 0x31, 0x9f, 0x72, 0x07, 0xbe, 0xd2, 0xda, 0x7a, 0xfd, 0xbe, 0x7c, - 0x3a, 0xbe, 0x07, 0x5e, 0x2f, 0x23, 0x63, 0xf6, 0xc0, 0x8b, 0x2a, 0x3e, 0xf9, 0xb9, 0xea, 0x67, - 0x15, 0xc8, 0x53, 0x0e, 0x4a, 0x0f, 0x74, 0xb0, 0x6d, 0x60, 0xb3, 0x89, 0xd1, 0x05, 0x99, 0x88, - 0x9f, 0xfb, 0x62, 0xe1, 0x91, 0xfe, 0x9c, 0xb3, 0x12, 0xe9, 0x4b, 0x8f, 0x81, 0x9d, 0xd9, 0x67, - 0x60, 0x7f, 0x26, 0xae, 0x0b, 0x5e, 0x2f, 0xbb, 0x23, 0x81, 0xec, 0x53, 0x71, 0x5c, 0xf0, 0x06, - 0x70, 0x30, 0x96, 0x40, 0xbe, 0x21, 0xe3, 0x6f, 0x5e, 0x41, 0x2f, 0x54, 0xe0, 0xe8, 0xa2, 0xee, - 0xe0, 0x85, 0x4b, 0x75, 0x63, 0x07, 0x77, 0x1d, 0x7d, 0xa7, 0x13, 0x72, 0x25, 0x5e, 0x6a, 0xdf, - 0x95, 0x78, 0x8e, 0xf7, 0x07, 0xe1, 0x54, 0xd1, 0x82, 0x04, 0xf4, 0x9e, 0xb8, 0x87, 0xf6, 0x7a, - 0x78, 0x18, 0x59, 0xb4, 0xdd, 0x78, 0x87, 0xf1, 0xa2, 0xb9, 0x18, 0xc3, 0x0d, 0xb5, 0x53, 0x90, - 0xa7, 0xac, 0x70, 0x5e, 0x66, 0xbf, 0xcc, 0x6e, 0x91, 0x6c, 0xc4, 0x08, 0xea, 0xe7, 0x85, 0x49, - 0x48, 0x8b, 0x61, 0x12, 0x84, 0x45, 0x4b, 0xa5, 0xd7, 0x33, 0x20, 0x6e, 0x67, 0xc8, 0xb9, 0x94, - 0x85, 0xc7, 0x51, 0x4d, 0xae, 0x33, 0x8c, 0x2c, 0x7e, 0x3c, 0x37, 0x9d, 0xb1, 0xbb, 0x0c, 0x4b, - 0xb2, 0xc8, 0x44, 0x5f, 0xe8, 0x18, 0xd7, 0xbf, 0x58, 0x70, 0xe9, 0x8b, 0xb8, 0xe5, 0x30, 0x39, - 0xff, 0xe2, 0x41, 0x1c, 0x24, 0x8f, 0xc2, 0x0f, 0xd2, 0x90, 0xa9, 0x59, 0xb6, 0x33, 0x2a, 0x0c, - 0xe2, 0xee, 0x89, 0x72, 0x12, 0xa8, 0x85, 0xcf, 0x39, 0x93, 0xdb, 0x13, 0x8d, 0x2e, 0x7f, 0x0c, - 0x71, 0x11, 0x8f, 0xc2, 0x1c, 0xe5, 0xc4, 0xbf, 0x34, 0xe4, 0xdf, 0xd2, 0xb4, 0xbf, 0xba, 0x57, - 0x16, 0x91, 0x33, 0x30, 0xc3, 0xed, 0x49, 0xfa, 0x17, 0x66, 0xf3, 0x69, 0xe8, 0xcd, 0x3c, 0x2e, - 0x8b, 0x22, 0x2e, 0xfd, 0x66, 0xdc, 0xfe, 0xbd, 0x1b, 0xa3, 0xea, 0x99, 0xe2, 0x84, 0x58, 0x8c, - 0x28, 0x3c, 0x79, 0x44, 0x1e, 0x54, 0x20, 0xc7, 0x7c, 0xc2, 0x46, 0x8a, 0x40, 0xdc, 0x96, 0xe1, - 0x0b, 0x41, 0xce, 0x77, 0x4c, 0x19, 0x75, 0xcb, 0x88, 0x2e, 0x3f, 0x79, 0x1c, 0xfe, 0x9d, 0x39, - 0x3b, 0x16, 0xf6, 0x74, 0xa3, 0xad, 0x9f, 0x6f, 0xc7, 0x08, 0x6d, 0xfc, 0xf1, 0x98, 0xc7, 0xbb, - 0xfc, 0xaa, 0x0a, 0xe5, 0x85, 0x48, 0xfc, 0xc7, 0x61, 0xca, 0xf6, 0x97, 0x24, 0xbd, 0xd3, 0xef, - 0x3d, 0x8e, 0xa6, 0xec, 0xbb, 0x16, 0xe4, 0x8c, 0x75, 0x96, 0x4b, 0x8a, 0x9f, 0xb1, 0x9c, 0x3d, - 0x99, 0x2e, 0xb4, 0x5a, 0x4b, 0x58, 0x77, 0x76, 0x6d, 0xdc, 0x8a, 0x35, 0x44, 0x88, 0x22, 0x9a, - 0xe2, 0x25, 0x21, 0x04, 0x17, 0x5c, 0x15, 0xd1, 0x79, 0xf2, 0x80, 0xde, 0xc0, 0xe3, 0x65, 0x24, - 0x5d, 0xd2, 0xdb, 0x7d, 0x48, 0xaa, 0x02, 0x24, 0x4f, 0x1b, 0x8e, 0x89, 0xe4, 0x01, 0xf9, 0x55, - 0x05, 0xe6, 0xa8, 0x9d, 0x30, 0x6a, 0x4c, 0x7e, 0x27, 0xa6, 0x0f, 0x09, 0x77, 0x2d, 0x13, 0xcf, - 0xce, 0x48, 0x60, 0x89, 0xe3, 0x71, 0x22, 0xc7, 0x47, 0xf2, 0xc8, 0x7c, 0x3e, 0x07, 0xc0, 0xf9, - 0x05, 0x7e, 0x3c, 0x17, 0x04, 0xfa, 0x43, 0xef, 0x64, 0xf3, 0x8f, 0x9a, 0x10, 0x75, 0x9a, 0xf3, - 0xf9, 0xf3, 0x37, 0xa4, 0xc4, 0x44, 0xa9, 0x51, 0xe5, 0x4f, 0x63, 0xda, 0xbc, 0xcc, 0x2b, 0x6f, - 0xe0, 0xe0, 0x3e, 0x64, 0x2f, 0xf7, 0x89, 0x18, 0xc6, 0xef, 0x20, 0x56, 0xe2, 0xa1, 0xb6, 0x3a, - 0xc4, 0xcc, 0xfe, 0x14, 0x1c, 0xd7, 0x4a, 0x85, 0xc5, 0x6a, 0x65, 0xf5, 0x3e, 0xfe, 0x8e, 0x9e, - 0xbc, 0xc2, 0x4f, 0x4e, 0x12, 0x81, 0xed, 0x0d, 0x31, 0xfb, 0x40, 0x51, 0x56, 0x51, 0xb3, 0x15, - 0x6e, 0x71, 0x65, 0x70, 0xaf, 0x26, 0x41, 0xf6, 0x30, 0x51, 0x78, 0x10, 0xb8, 0x66, 0xf4, 0x02, - 0x05, 0xf2, 0xc1, 0x35, 0xf1, 0xec, 0x32, 0xb6, 0xaa, 0xe8, 0x36, 0xd8, 0xa1, 0xfb, 0x4f, 0x81, - 0xdb, 0xa0, 0x97, 0xa0, 0x5e, 0x0f, 0x73, 0xcd, 0x6d, 0xdc, 0xbc, 0x50, 0x36, 0xbd, 0x7d, 0x75, - 0xba, 0x09, 0xdb, 0x93, 0x2a, 0x02, 0x73, 0xaf, 0x08, 0x8c, 0x38, 0x89, 0x16, 0x06, 0x69, 0x9e, - 0xa9, 0x10, 0x5c, 0x7e, 0xdf, 0xc7, 0xa5, 0x22, 0xe0, 0x72, 0xfb, 0x50, 0x54, 0xe3, 0xc1, 0x52, - 0x19, 0x02, 0x16, 0x04, 0x27, 0xab, 0xeb, 0xf5, 0x72, 0xb5, 0xd2, 0xd8, 0xa8, 0x95, 0x16, 0x1b, - 0x0b, 0x1e, 0x38, 0xb5, 0xbc, 0x82, 0xbe, 0x95, 0x86, 0x09, 0xca, 0x56, 0xb7, 0xe7, 0x5a, 0xf7, - 0x68, 0x7f, 0x49, 0xf4, 0x0e, 0xe9, 0xe8, 0x07, 0xbe, 0x20, 0x58, 0x39, 0x21, 0xfd, 0xd4, 0x53, - 0x61, 0x82, 0x82, 0xec, 0xad, 0x68, 0x9d, 0x0e, 0xe9, 0xa5, 0x18, 0x19, 0xcd, 0xcb, 0x2e, 0x19, - 0x09, 0x61, 0x00, 0x1b, 0xc9, 0x8f, 0x2c, 0xcf, 0xce, 0x50, 0x33, 0xf8, 0x9c, 0xe1, 0x6c, 0x13, - 0x77, 0x4a, 0xf4, 0x0c, 0x99, 0xe5, 0xc5, 0x9b, 0x20, 0xbb, 0xe7, 0xe6, 0x1e, 0xe0, 0x9a, 0x4a, - 0x33, 0xa1, 0x57, 0x49, 0x07, 0xde, 0x14, 0xf4, 0xd3, 0xe7, 0x29, 0x04, 0x9c, 0x35, 0xc8, 0xb4, - 0x8d, 0xae, 0xc3, 0xc6, 0x8f, 0xdb, 0x62, 0x11, 0xf2, 0x1e, 0xca, 0x0e, 0xde, 0xd1, 0x08, 0x19, - 0x74, 0x0f, 0xcc, 0xf0, 0xa9, 0x12, 0xee, 0xb9, 0xa7, 0x60, 0x82, 0x1d, 0x1b, 0x63, 0x4b, 0xac, - 0xde, 0xab, 0xe4, 0xb2, 0xa6, 0x54, 0x6d, 0x93, 0xd7, 0x81, 0xff, 0xe7, 0x28, 0x4c, 0xac, 0x18, - 0x5d, 0xc7, 0xb2, 0x2f, 0xa1, 0x87, 0x53, 0x30, 0x71, 0x16, 0xdb, 0x5d, 0xc3, 0x32, 0xf7, 0xb9, - 0x1a, 0x5c, 0x03, 0xd3, 0x1d, 0x1b, 0xef, 0x19, 0xd6, 0x6e, 0x37, 0x58, 0x9c, 0xe1, 0x93, 0x54, - 0x04, 0x93, 0xfa, 0xae, 0xb3, 0x6d, 0xd9, 0x41, 0xb4, 0x09, 0xef, 0x5d, 0x3d, 0x0d, 0x40, 0x9f, - 0x2b, 0xfa, 0x0e, 0x66, 0x0e, 0x14, 0x5c, 0x8a, 0xaa, 0x42, 0xc6, 0x31, 0x76, 0x30, 0x0b, 0x3f, - 0x4b, 0x9e, 0x5d, 0x01, 0x93, 0x50, 0x6e, 0x2c, 0x64, 0x9e, 0xa2, 0x79, 0xaf, 0xe8, 0x8b, 0x0a, - 0x4c, 0x2f, 0x63, 0x87, 0xb1, 0xda, 0x45, 0x2f, 0x4e, 0x49, 0xdd, 0xf8, 0xe0, 0x8e, 0xb1, 0x6d, - 0xbd, 0xeb, 0xfd, 0xe7, 0x2f, 0xc1, 0x8a, 0x89, 0x41, 0x2c, 0x5c, 0x85, 0x0f, 0x84, 0x4d, 0x02, - 0xa3, 0x39, 0x65, 0xea, 0x77, 0xc9, 0x32, 0xb3, 0x4d, 0x90, 0xfd, 0x1f, 0xd0, 0x7b, 0xd3, 0xb2, - 0x87, 0x8a, 0x99, 0xec, 0xe7, 0xb9, 0xfa, 0x84, 0x76, 0x47, 0x93, 0x7b, 0x2c, 0xc7, 0xbe, 0x18, - 0xe7, 0x3c, 0x25, 0x46, 0x46, 0xf3, 0x73, 0x4b, 0x1e, 0x47, 0x1e, 0xcc, 0x49, 0xf2, 0xda, 0xf8, - 0x3d, 0x05, 0xa6, 0x6b, 0xdb, 0xd6, 0x45, 0x4f, 0x8e, 0x3f, 0x25, 0x07, 0xec, 0x55, 0x30, 0xb5, - 0xd7, 0x03, 0x6a, 0x90, 0x10, 0x7e, 0x07, 0x3b, 0x7a, 0xbe, 0x12, 0x17, 0x26, 0x8e, 0xb9, 0x91, - 0xdf, 0x90, 0xae, 0x3e, 0x19, 0x26, 0x18, 0xd7, 0x6c, 0xc9, 0x25, 0x1a, 0x60, 0x2f, 0x33, 0x5f, - 0xc1, 0x8c, 0x58, 0xc1, 0x78, 0xc8, 0x87, 0x57, 0x2e, 0x79, 0xe4, 0xff, 0x28, 0x4d, 0x82, 0x51, - 0x78, 0xc0, 0x17, 0x47, 0x00, 0x3c, 0xfa, 0x7e, 0x4a, 0x76, 0x61, 0xd2, 0x97, 0x80, 0xcf, 0xc1, - 0x81, 0x6e, 0x73, 0x19, 0x48, 0x2e, 0x79, 0x79, 0xbe, 0x32, 0x03, 0x33, 0x8b, 0xc6, 0xe6, 0xa6, - 0xdf, 0x49, 0xbe, 0x44, 0xb2, 0x93, 0x0c, 0x77, 0x07, 0x70, 0xed, 0xdc, 0x5d, 0xdb, 0xc6, 0xa6, - 0x57, 0x29, 0xd6, 0x9c, 0x7a, 0x52, 0xd5, 0x1b, 0xe0, 0xa8, 0x37, 0x2e, 0xf0, 0x1d, 0xe5, 0x94, - 0xd6, 0x9b, 0x8c, 0xbe, 0x2b, 0xbd, 0xab, 0xe5, 0x49, 0x94, 0xaf, 0x52, 0x48, 0x03, 0xbc, 0x03, - 0x66, 0xb7, 0x69, 0x6e, 0x32, 0xf5, 0xf7, 0x3a, 0xcb, 0x93, 0x3d, 0xc1, 0x7e, 0xd7, 0x70, 0xb7, - 0xab, 0x6f, 0x61, 0x4d, 0xcc, 0xdc, 0xd3, 0x7c, 0x95, 0x38, 0x57, 0x57, 0xc9, 0x6d, 0x90, 0x49, - 0xd4, 0x64, 0x0c, 0xda, 0x71, 0x06, 0x32, 0x4b, 0x46, 0x1b, 0xa3, 0x9f, 0x4f, 0xc3, 0x94, 0x86, - 0x9b, 0x96, 0xd9, 0x74, 0xdf, 0x38, 0xe7, 0xa0, 0x7f, 0x4c, 0xc9, 0x5e, 0xd9, 0xe8, 0xd2, 0x99, - 0xf7, 0x69, 0x84, 0xb4, 0x1b, 0xb9, 0xab, 0x19, 0x23, 0x49, 0x8d, 0xe1, 0x82, 0x0d, 0x77, 0xea, - 0xb1, 0xb9, 0xd9, 0xb6, 0x74, 0x61, 0xf1, 0xab, 0xd7, 0x14, 0xba, 0x11, 0xf2, 0xde, 0x19, 0x0f, - 0xcb, 0x59, 0x37, 0x4c, 0xd3, 0x3f, 0x44, 0xbc, 0x2f, 0x5d, 0xdc, 0xb7, 0x8d, 0x8c, 0xc3, 0x42, - 0xea, 0xce, 0x4a, 0x0f, 0xd1, 0xec, 0xeb, 0x61, 0xee, 0xfc, 0x25, 0x07, 0x77, 0x59, 0x2e, 0x56, - 0x6c, 0x46, 0xeb, 0x49, 0xe5, 0xa2, 0x28, 0x47, 0xc5, 0x6b, 0x89, 0x28, 0x30, 0x9e, 0xa8, 0x57, - 0x86, 0x98, 0x01, 0x1e, 0x87, 0x7c, 0xa5, 0xba, 0x58, 0x22, 0xbe, 0x6a, 0x9e, 0xf7, 0xcf, 0x16, - 0x7a, 0xa9, 0x02, 0x33, 0xc4, 0x99, 0xc4, 0x43, 0xe1, 0x5a, 0x89, 0xf9, 0x08, 0xfa, 0x8a, 0xb4, - 0x1f, 0x1b, 0xa9, 0x32, 0x5f, 0x40, 0xb8, 0xa0, 0x37, 0x8d, 0x76, 0xaf, 0xa0, 0xb3, 0x5a, 0x4f, - 0x6a, 0x1f, 0x40, 0x94, 0xbe, 0x80, 0xfc, 0x96, 0x94, 0x33, 0xdb, 0x20, 0xee, 0x0e, 0x0b, 0x95, - 0xdf, 0x56, 0x60, 0xda, 0x9d, 0xa4, 0x78, 0xa0, 0x54, 0x05, 0x50, 0x2c, 0xb3, 0x7d, 0x29, 0x58, - 0x16, 0xf1, 0x5e, 0x63, 0x35, 0x92, 0xbf, 0x90, 0x9e, 0xb9, 0x13, 0x11, 0x71, 0xbc, 0x8c, 0x09, - 0xbf, 0x0f, 0x4a, 0xcd, 0xe7, 0x07, 0x30, 0x77, 0x58, 0xf0, 0x7d, 0x23, 0x0b, 0xb9, 0x8d, 0x0e, - 0x41, 0xee, 0x55, 0x8a, 0x4c, 0x44, 0xf2, 0x7d, 0x07, 0x19, 0x5c, 0x33, 0xab, 0x6d, 0x35, 0xf5, - 0xf6, 0x7a, 0x70, 0x22, 0x2c, 0x48, 0x50, 0x6f, 0x67, 0xbe, 0x8d, 0xf4, 0x38, 0xdd, 0xf5, 0x91, - 0xc1, 0xba, 0x89, 0x8c, 0xb8, 0x43, 0x23, 0x37, 0xc1, 0xb1, 0x96, 0xd1, 0xd5, 0xcf, 0xb7, 0x71, - 0xc9, 0x6c, 0xda, 0x97, 0xa8, 0x38, 0xd8, 0xb4, 0x6a, 0xdf, 0x07, 0xf5, 0x4e, 0xc8, 0x76, 0x9d, - 0x4b, 0x6d, 0x3a, 0x4f, 0xe4, 0xcf, 0x98, 0x84, 0x16, 0x55, 0x73, 0xb3, 0x6b, 0xf4, 0x2f, 0xde, - 0x45, 0x69, 0x42, 0xf2, 0xbe, 0xe6, 0x27, 0x42, 0xce, 0xb2, 0x8d, 0x2d, 0x83, 0xde, 0xbf, 0x33, - 0xb7, 0x2f, 0x26, 0x1d, 0x35, 0x05, 0xaa, 0x24, 0x8b, 0xc6, 0xb2, 0xaa, 0x4f, 0x86, 0x29, 0x63, - 0x47, 0xdf, 0xc2, 0xf7, 0x1a, 0x26, 0x3d, 0xb1, 0x37, 0x77, 0xeb, 0xa9, 0x7d, 0xc7, 0x67, 0xd8, - 0x77, 0x2d, 0xc8, 0x8a, 0x3e, 0x98, 0x96, 0x0d, 0x9c, 0x43, 0xea, 0x46, 0x41, 0x1d, 0xcb, 0xbd, - 0xd5, 0xe8, 0xb5, 0x52, 0x21, 0x6d, 0xc2, 0xd9, 0x4a, 0x7e, 0xf0, 0xfe, 0x42, 0x1a, 0x26, 0x17, - 0xad, 0x8b, 0x26, 0x51, 0xf4, 0xdb, 0xe4, 0x6c, 0xdd, 0x3e, 0x87, 0x1c, 0xc5, 0x6b, 0x21, 0x23, - 0x4f, 0x34, 0x90, 0xda, 0x7a, 0x45, 0x86, 0xc0, 0x10, 0xd9, 0x72, 0x24, 0x2f, 0xeb, 0x8b, 0x2a, - 0x27, 0x79, 0xb9, 0xfe, 0xb1, 0x02, 0x99, 0x45, 0xdb, 0xea, 0xa0, 0xb7, 0xa7, 0x62, 0xb8, 0x2c, - 0xb4, 0x6c, 0xab, 0x53, 0x27, 0xb7, 0x6d, 0x05, 0xc7, 0x38, 0xf8, 0x34, 0xf5, 0x36, 0x98, 0xec, - 0x58, 0x5d, 0xc3, 0xf1, 0xa6, 0x11, 0x73, 0xb7, 0x3e, 0xaa, 0x6f, 0x6b, 0x5e, 0x67, 0x99, 0x34, - 0x3f, 0xbb, 0xdb, 0x6b, 0x13, 0x11, 0xba, 0x72, 0x71, 0xc5, 0xe8, 0xdd, 0x38, 0xd6, 0x93, 0x8a, - 0x5e, 0xc6, 0x23, 0xf9, 0x34, 0x11, 0xc9, 0xc7, 0xf4, 0x91, 0xb0, 0x6d, 0x75, 0x46, 0xb2, 0xc9, - 0xf8, 0x6a, 0x1f, 0xd5, 0xa7, 0x0b, 0xa8, 0xde, 0x28, 0x55, 0x66, 0xf2, 0x88, 0x7e, 0x30, 0x03, - 0x40, 0xcc, 0x8c, 0x0d, 0x77, 0x02, 0x24, 0x67, 0x63, 0x3d, 0x37, 0xc3, 0xc9, 0xb2, 0x20, 0xca, - 0xf2, 0x71, 0x21, 0x56, 0x0c, 0x21, 0x1f, 0x22, 0xd1, 0x02, 0x64, 0x77, 0xdd, 0xcf, 0x4c, 0xa2, - 0x92, 0x24, 0xc8, 0xab, 0x46, 0xff, 0x44, 0x7f, 0x94, 0x82, 0x2c, 0x49, 0x50, 0x4f, 0x03, 0x90, - 0x81, 0x9d, 0x1e, 0x08, 0x4a, 0x91, 0x21, 0x9c, 0x4b, 0x21, 0xda, 0x6a, 0xb4, 0xd8, 0x67, 0x6a, - 0x32, 0x07, 0x09, 0xee, 0xdf, 0x64, 0xb8, 0x27, 0xb4, 0x98, 0x01, 0xc0, 0xa5, 0xb8, 0x7f, 0x93, - 0xb7, 0x55, 0xbc, 0x49, 0x03, 0x21, 0x67, 0xb4, 0x20, 0xc1, 0xff, 0x7b, 0xd5, 0xbf, 0x3e, 0xcb, - 0xfb, 0x9b, 0xa4, 0xb8, 0x93, 0x61, 0xa2, 0x96, 0x0b, 0x41, 0x11, 0x39, 0x92, 0xa9, 0x37, 0x19, - 0xbd, 0xc1, 0x57, 0x9b, 0x45, 0x41, 0x6d, 0x6e, 0x89, 0x21, 0xde, 0xe4, 0x95, 0xe7, 0x6b, 0x59, - 0x98, 0xaa, 0x58, 0x2d, 0xa6, 0x3b, 0xdc, 0x84, 0xf1, 0x53, 0xd9, 0x58, 0x13, 0x46, 0x9f, 0x46, - 0x88, 0x82, 0xdc, 0x2d, 0x2a, 0x88, 0x1c, 0x05, 0x5e, 0x3f, 0xd4, 0x05, 0xc8, 0x11, 0xed, 0xdd, - 0x7f, 0x2f, 0x53, 0x14, 0x09, 0x22, 0x5a, 0x8d, 0xfd, 0xf9, 0x1f, 0x4e, 0xc7, 0xfe, 0x2b, 0x64, - 0x49, 0x05, 0x23, 0x76, 0x77, 0xc4, 0x8a, 0xa6, 0xa3, 0x2b, 0xaa, 0x44, 0x57, 0x34, 0xd3, 0x5b, - 0xd1, 0x38, 0xeb, 0x00, 0x61, 0x1a, 0x92, 0xbc, 0x8e, 0xff, 0xfd, 0x04, 0x40, 0x45, 0xdf, 0x33, - 0xb6, 0xe8, 0xee, 0xf0, 0x17, 0xbd, 0xf9, 0x0f, 0xdb, 0xc7, 0xfd, 0x6f, 0xdc, 0x40, 0x78, 0x1b, - 0x4c, 0xb0, 0x71, 0x8f, 0x55, 0xe4, 0x6a, 0xa1, 0x22, 0x01, 0x15, 0x6a, 0x96, 0x3e, 0xe0, 0x68, - 0x5e, 0x7e, 0xe1, 0x0a, 0xd9, 0x74, 0xcf, 0x15, 0xb2, 0xfd, 0xf7, 0x20, 0x42, 0x2e, 0x96, 0x45, - 0xef, 0x93, 0xf6, 0xe8, 0xe7, 0xf8, 0xe1, 0x6a, 0x14, 0xd2, 0x04, 0x9f, 0x08, 0x13, 0x96, 0xbf, - 0xa1, 0xad, 0x84, 0xae, 0x83, 0x95, 0xcd, 0x4d, 0x4b, 0xf3, 0x72, 0x4a, 0x6e, 0x7e, 0x49, 0xf1, - 0x31, 0x96, 0x43, 0x33, 0x27, 0x97, 0xbd, 0xa0, 0x52, 0x6e, 0x3d, 0xce, 0x19, 0xce, 0xf6, 0xaa, - 0x61, 0x5e, 0xe8, 0xa2, 0xff, 0x2c, 0x67, 0x41, 0x72, 0xf8, 0xa7, 0xe3, 0xe1, 0x2f, 0xc6, 0xec, - 0xa8, 0x89, 0xa8, 0xdd, 0x19, 0x46, 0xa5, 0x3f, 0xb7, 0x21, 0x00, 0xde, 0x0e, 0x39, 0xca, 0x28, - 0xeb, 0x44, 0xcf, 0x84, 0xe2, 0xe7, 0x53, 0xd2, 0xd8, 0x1f, 0xe8, 0xbd, 0x3e, 0x8e, 0x67, 0x05, - 0x1c, 0x17, 0x0e, 0xc4, 0x59, 0xe2, 0x90, 0x9e, 0x79, 0x02, 0x4c, 0x30, 0x49, 0xab, 0x73, 0x7c, - 0x2b, 0xce, 0x1f, 0x51, 0x01, 0x72, 0x6b, 0xd6, 0x1e, 0xae, 0x5b, 0xf9, 0x94, 0xfb, 0xec, 0xf2, - 0x57, 0xb7, 0xf2, 0x69, 0xf4, 0x9a, 0x49, 0x98, 0xf4, 0xa3, 0xf9, 0x7c, 0x21, 0x0d, 0xf9, 0xa2, - 0x8d, 0x75, 0x07, 0x2f, 0xd9, 0xd6, 0x0e, 0xad, 0x91, 0xbc, 0x77, 0xe8, 0xaf, 0x4a, 0xbb, 0x78, - 0xf8, 0x51, 0x76, 0x7a, 0x0b, 0x0b, 0xc1, 0x92, 0x2e, 0x42, 0xa6, 0xbd, 0x45, 0x48, 0xf4, 0x36, - 0x29, 0x97, 0x0f, 0xd9, 0x52, 0x92, 0x6f, 0x6a, 0x9f, 0x49, 0x43, 0xb6, 0xd8, 0xb6, 0x4c, 0xcc, - 0x1f, 0x61, 0x1a, 0x78, 0x56, 0xa6, 0xff, 0x4e, 0x04, 0x7a, 0x76, 0x5a, 0xd6, 0xd6, 0x08, 0x04, - 0xe0, 0x96, 0x2d, 0x29, 0x5b, 0xb9, 0x41, 0x2a, 0x92, 0x74, 0xf2, 0x02, 0xfd, 0x56, 0x1a, 0xa6, - 0x68, 0x5c, 0x9c, 0x42, 0xbb, 0x8d, 0x1e, 0x15, 0x08, 0xb5, 0x4f, 0x44, 0x24, 0xf4, 0x5b, 0xd2, - 0x2e, 0xfa, 0x7e, 0xad, 0x7c, 0xda, 0x31, 0x02, 0x04, 0xc5, 0xf3, 0x18, 0x97, 0xdb, 0x4b, 0x1b, - 0xc8, 0x50, 0xf2, 0xa2, 0xfe, 0xb3, 0xb4, 0x6b, 0x00, 0x98, 0x17, 0xd6, 0x6d, 0xbc, 0x67, 0xe0, - 0x8b, 0xe8, 0xca, 0x40, 0xd8, 0xfb, 0x83, 0x7e, 0xbc, 0x45, 0x7a, 0x11, 0x87, 0x23, 0x19, 0xba, - 0x95, 0x35, 0xdd, 0x0e, 0x32, 0xb1, 0x5e, 0xbc, 0x37, 0x12, 0x0b, 0x47, 0x46, 0xe3, 0xb3, 0x4b, - 0xae, 0xd9, 0x84, 0x73, 0x91, 0xbc, 0x60, 0x3f, 0x32, 0x01, 0x93, 0x1b, 0x66, 0xb7, 0xd3, 0xd6, - 0xbb, 0xdb, 0xe8, 0xdf, 0x14, 0xc8, 0xd1, 0xdb, 0xc0, 0xd0, 0x8f, 0x0b, 0xb1, 0x05, 0x7e, 0x7a, - 0x17, 0xdb, 0x9e, 0x0b, 0x0e, 0x7d, 0xe9, 0x7f, 0x59, 0x39, 0xfa, 0xa0, 0x22, 0x3b, 0x49, 0xf5, - 0x0a, 0xe5, 0xae, 0x85, 0xef, 0x7f, 0x9c, 0xbd, 0x63, 0x34, 0x9d, 0x5d, 0xdb, 0xbf, 0xfa, 0xfa, - 0xf1, 0x72, 0x54, 0xd6, 0xe9, 0x5f, 0x9a, 0xff, 0x3b, 0xd2, 0x61, 0x82, 0x25, 0xee, 0xdb, 0x4e, - 0xda, 0x7f, 0xfe, 0xf6, 0x24, 0xe4, 0x74, 0xdb, 0x31, 0xba, 0x0e, 0xdb, 0x60, 0x65, 0x6f, 0x6e, - 0x77, 0x49, 0x9f, 0x36, 0xec, 0xb6, 0x17, 0x85, 0xc4, 0x4f, 0x40, 0xbf, 0x2d, 0x35, 0x7f, 0x8c, - 0xae, 0x79, 0x3c, 0xc8, 0xef, 0x1d, 0x62, 0x8d, 0xfa, 0x72, 0xb8, 0x4c, 0x2b, 0xd4, 0x4b, 0x0d, - 0x1a, 0xb4, 0xc2, 0x8f, 0x4f, 0xd1, 0x42, 0xef, 0x51, 0xb8, 0xf5, 0xbb, 0x4b, 0xc2, 0x18, 0xc1, - 0xa4, 0x18, 0x8c, 0x11, 0x7e, 0x42, 0xc4, 0x6e, 0xb5, 0xb0, 0x08, 0xab, 0xc8, 0x2f, 0xc2, 0xfe, - 0x86, 0xf4, 0x6e, 0x92, 0x2f, 0xca, 0x01, 0x6b, 0x80, 0x51, 0xb7, 0x05, 0x7d, 0x48, 0x6a, 0x67, - 0x68, 0x50, 0x49, 0x87, 0x08, 0xdb, 0x9b, 0x27, 0x60, 0x62, 0x59, 0x6f, 0xb7, 0xb1, 0x7d, 0xc9, - 0x1d, 0x92, 0xf2, 0x1e, 0x87, 0x6b, 0xba, 0x69, 0x6c, 0xe2, 0xae, 0x13, 0xdd, 0x59, 0xbe, 0x4f, - 0x3a, 0x12, 0x2d, 0x2b, 0x63, 0xbe, 0x97, 0x7e, 0x88, 0xcc, 0x6f, 0x86, 0x8c, 0x61, 0x6e, 0x5a, - 0xac, 0xcb, 0xec, 0x5d, 0xb5, 0xf7, 0x7e, 0x26, 0x53, 0x17, 0x92, 0x51, 0x32, 0x18, 0xad, 0x24, - 0x17, 0xc9, 0xf7, 0x9c, 0xbf, 0x99, 0x81, 0x59, 0x8f, 0x89, 0xb2, 0xd9, 0xc2, 0x0f, 0xf0, 0x4b, - 0x31, 0x2f, 0xcd, 0xc8, 0x1e, 0x07, 0xeb, 0xad, 0x0f, 0x21, 0x15, 0x22, 0xd2, 0x3a, 0x40, 0x53, - 0x77, 0xf0, 0x96, 0x65, 0x1b, 0x7e, 0x7f, 0xf8, 0xa4, 0x38, 0xd4, 0x8a, 0xf4, 0xef, 0x4b, 0x1a, - 0x47, 0x47, 0xbd, 0x13, 0xa6, 0xb1, 0x7f, 0xfe, 0xde, 0x5b, 0xaa, 0x89, 0xc4, 0x8b, 0xcf, 0x8f, - 0xfe, 0x4c, 0xea, 0xd4, 0x99, 0x4c, 0x35, 0xe3, 0x61, 0xd6, 0x18, 0xae, 0x0d, 0x6d, 0x54, 0xd6, - 0x0a, 0x5a, 0x6d, 0xa5, 0xb0, 0xba, 0x5a, 0xae, 0x2c, 0xfb, 0x81, 0x5f, 0x54, 0x98, 0x5b, 0xac, - 0x9e, 0xab, 0x70, 0x91, 0x79, 0x32, 0x68, 0x1d, 0x26, 0x3d, 0x79, 0xf5, 0xf3, 0xc5, 0xe4, 0x65, - 0xc6, 0x7c, 0x31, 0xb9, 0x24, 0xd7, 0x38, 0x33, 0x9a, 0xbe, 0x83, 0x0e, 0x79, 0x46, 0x7f, 0xa0, - 0x43, 0x96, 0xac, 0xa9, 0xa3, 0x77, 0x91, 0x6d, 0xc0, 0x4e, 0x5b, 0x6f, 0x62, 0xb4, 0x13, 0xc3, - 0x1a, 0xf7, 0xae, 0x46, 0x48, 0xef, 0xbb, 0x1a, 0x81, 0x3c, 0x32, 0xab, 0xef, 0x78, 0xbf, 0x75, - 0x7c, 0x8d, 0x66, 0x11, 0x0f, 0x68, 0x45, 0xee, 0xae, 0xd0, 0xe5, 0x7f, 0xc6, 0x66, 0x88, 0x4a, - 0x86, 0xf3, 0x14, 0xcf, 0x12, 0x95, 0xdb, 0x87, 0x89, 0xe2, 0x68, 0x0c, 0xd7, 0x77, 0x67, 0x20, - 0x5b, 0xeb, 0xb4, 0x0d, 0x07, 0xbd, 0x22, 0x3d, 0x12, 0xcc, 0xe8, 0x75, 0x16, 0xca, 0xc0, 0xeb, - 0x2c, 0x82, 0x5d, 0xd7, 0x8c, 0xc4, 0xae, 0x6b, 0x1d, 0x3f, 0xe0, 0x88, 0xbb, 0xae, 0xb7, 0xb1, - 0xe0, 0x6d, 0x74, 0xcf, 0xf6, 0x31, 0x7d, 0x44, 0x4a, 0xaa, 0xd5, 0x27, 0x2a, 0xe0, 0x99, 0x27, - 0xb0, 0xe0, 0x64, 0x00, 0xb9, 0x85, 0x6a, 0xbd, 0x5e, 0x5d, 0xcb, 0x1f, 0x21, 0x51, 0x6d, 0xaa, - 0xeb, 0x34, 0x54, 0x4c, 0xb9, 0x52, 0x29, 0x69, 0xf9, 0x34, 0x09, 0x97, 0x56, 0xae, 0xaf, 0x96, - 0xf2, 0x8a, 0x18, 0xdb, 0x3c, 0xd2, 0xfc, 0x16, 0xcb, 0x4e, 0x52, 0xbd, 0xe4, 0x0c, 0xf1, 0x70, - 0x7e, 0x92, 0x57, 0xae, 0x5f, 0x51, 0x20, 0xbb, 0x86, 0xed, 0x2d, 0x8c, 0x7e, 0x3a, 0xc6, 0x26, - 0xdf, 0xa6, 0x61, 0x77, 0x69, 0x70, 0xb9, 0x60, 0x93, 0x8f, 0x4f, 0x53, 0xaf, 0x83, 0xd9, 0x2e, - 0x6e, 0x5a, 0x66, 0xcb, 0xcb, 0x44, 0xfb, 0x23, 0x31, 0x51, 0xbc, 0x57, 0x5e, 0x02, 0x32, 0xc2, - 0xe8, 0x48, 0x76, 0xea, 0xe2, 0x00, 0xd3, 0xaf, 0xd4, 0xe4, 0x81, 0xf9, 0xae, 0xe2, 0xfe, 0xd4, - 0xb9, 0x84, 0x5e, 0x2e, 0xbd, 0xfb, 0x7a, 0x13, 0xe4, 0x88, 0x9a, 0x7a, 0x63, 0x74, 0xff, 0xfe, - 0x98, 0xe5, 0x51, 0x17, 0xe0, 0x58, 0x17, 0xb7, 0x71, 0xd3, 0xc1, 0x2d, 0xb7, 0xe9, 0x6a, 0x03, - 0x3b, 0x85, 0xfd, 0xd9, 0xd1, 0x9f, 0xf0, 0x00, 0xde, 0x21, 0x02, 0x78, 0x7d, 0x1f, 0x51, 0xba, - 0x15, 0x0a, 0xb7, 0x95, 0xdd, 0x6a, 0xd4, 0xda, 0x96, 0xbf, 0x28, 0xee, 0xbd, 0xbb, 0xdf, 0xb6, - 0x9d, 0x9d, 0x36, 0xf9, 0xc6, 0x0e, 0x18, 0x78, 0xef, 0xea, 0x3c, 0x4c, 0xe8, 0xe6, 0x25, 0xf2, - 0x29, 0x13, 0x51, 0x6b, 0x2f, 0x13, 0x7a, 0x8d, 0x8f, 0xfc, 0x5d, 0x02, 0xf2, 0x8f, 0x93, 0x63, - 0x37, 0x79, 0xe0, 0x7f, 0x6e, 0x02, 0xb2, 0xeb, 0x7a, 0xd7, 0xc1, 0xe8, 0xff, 0x56, 0x64, 0x91, - 0xbf, 0x1e, 0xe6, 0x36, 0xad, 0xe6, 0x6e, 0x17, 0xb7, 0xc4, 0x46, 0xd9, 0x93, 0x3a, 0x0a, 0xcc, - 0xd5, 0x1b, 0x21, 0xef, 0x25, 0x32, 0xb2, 0xde, 0x36, 0xfc, 0xbe, 0x74, 0x12, 0x29, 0xbb, 0xbb, - 0xae, 0xdb, 0x4e, 0x75, 0x93, 0xa4, 0xf9, 0x91, 0xb2, 0xf9, 0x44, 0x01, 0xfa, 0x5c, 0x04, 0xf4, - 0x13, 0xe1, 0xd0, 0x4f, 0x4a, 0x40, 0xaf, 0x16, 0x60, 0x72, 0xd3, 0x68, 0x63, 0xf2, 0xc3, 0x14, - 0xf9, 0xa1, 0xdf, 0x98, 0x44, 0x64, 0xef, 0x8f, 0x49, 0x4b, 0x46, 0x1b, 0x6b, 0xfe, 0x6f, 0xde, - 0x44, 0x06, 0x82, 0x89, 0xcc, 0x2a, 0xf5, 0xa7, 0x75, 0x0d, 0x2f, 0x53, 0xdf, 0xc1, 0xde, 0xe2, - 0x9b, 0xc9, 0x0e, 0xb7, 0xb4, 0x74, 0x47, 0x27, 0x60, 0xcc, 0x68, 0xe4, 0x59, 0xf4, 0x0b, 0x51, - 0x7a, 0xfd, 0x42, 0x9e, 0xa7, 0xc4, 0xeb, 0x11, 0x3d, 0x66, 0x43, 0x5a, 0xd4, 0x79, 0x0f, 0x20, - 0x6a, 0x29, 0xfa, 0xef, 0x2e, 0x30, 0x4d, 0xdd, 0xc6, 0xce, 0x3a, 0xef, 0x89, 0x91, 0xd5, 0xc4, - 0x44, 0xe2, 0xca, 0xd7, 0xad, 0xe9, 0x3b, 0x98, 0x14, 0x56, 0x74, 0xbf, 0x31, 0x17, 0xad, 0x7d, - 0xe9, 0x41, 0xff, 0x9b, 0x1d, 0x75, 0xff, 0xdb, 0xaf, 0x8e, 0xc9, 0x37, 0xc3, 0xd7, 0x67, 0x40, - 0x29, 0xee, 0x3a, 0x8f, 0xe8, 0xee, 0xf7, 0x07, 0xd2, 0x7e, 0x2e, 0xac, 0x3f, 0x0b, 0xbd, 0x48, - 0x7e, 0x4c, 0xbd, 0x6f, 0x4c, 0x2d, 0x91, 0xf3, 0xa7, 0x09, 0xab, 0x5b, 0xf2, 0x3a, 0xf2, 0x76, - 0xc5, 0x77, 0xb0, 0x7c, 0x30, 0x75, 0x70, 0xd3, 0x1c, 0xd1, 0xfe, 0x89, 0xeb, 0x19, 0xfc, 0x77, - 0xaf, 0xe3, 0xc9, 0x08, 0xb1, 0xfa, 0xc8, 0xf6, 0x3a, 0x11, 0xe5, 0x8c, 0x46, 0x5f, 0xd0, 0x2b, - 0xa5, 0xdd, 0xce, 0xa9, 0xd8, 0x22, 0x5d, 0x09, 0xe3, 0xd9, 0x54, 0x72, 0x97, 0x85, 0x46, 0x14, - 0x9b, 0x3c, 0x60, 0xdf, 0xe1, 0x5d, 0x05, 0x0b, 0x07, 0x46, 0x0c, 0xbd, 0x56, 0x7a, 0x3b, 0x8a, - 0x56, 0x7b, 0xc0, 0x7a, 0x61, 0x3c, 0x79, 0xcb, 0x6d, 0x56, 0x45, 0x16, 0x9c, 0xbc, 0xc4, 0xbf, - 0xad, 0x40, 0x8e, 0x6e, 0x41, 0xa2, 0xb7, 0xa6, 0x62, 0xdc, 0xb2, 0xee, 0x88, 0x2e, 0x84, 0xfe, - 0x7b, 0x9c, 0x35, 0x07, 0xc1, 0xd5, 0x30, 0x13, 0xcb, 0xd5, 0x50, 0x3c, 0xc7, 0x29, 0xd1, 0x8e, - 0x68, 0x1d, 0x13, 0x9e, 0x4e, 0xc6, 0x69, 0x61, 0x7d, 0x19, 0x4a, 0x1e, 0xef, 0x17, 0x64, 0x61, - 0x86, 0x16, 0x7d, 0xce, 0x68, 0x6d, 0x61, 0x07, 0xbd, 0x27, 0xfd, 0xc3, 0x83, 0xba, 0x5a, 0x81, - 0x99, 0x8b, 0x84, 0xed, 0x55, 0xfd, 0x92, 0xb5, 0xeb, 0xb0, 0x95, 0x8b, 0x1b, 0x23, 0xd7, 0x3d, - 0x68, 0x3d, 0xe7, 0xe9, 0x1f, 0x9a, 0xf0, 0xbf, 0x2b, 0x63, 0xba, 0xe0, 0x4f, 0x1d, 0xb8, 0x72, - 0xc4, 0xc8, 0xe2, 0x93, 0xd4, 0x93, 0x90, 0xdb, 0x33, 0xf0, 0xc5, 0x72, 0x8b, 0x59, 0xb7, 0xec, - 0x0d, 0xfd, 0xae, 0xf4, 0xbe, 0x2d, 0x0f, 0x37, 0xe3, 0x25, 0x59, 0x2d, 0x94, 0xdb, 0xbd, 0x1d, - 0xc8, 0xd6, 0x18, 0xce, 0x14, 0x8b, 0x97, 0x71, 0x16, 0x63, 0x28, 0x62, 0x98, 0xe1, 0x2c, 0x86, - 0xf2, 0x88, 0x3c, 0xb1, 0x42, 0x05, 0x30, 0xe2, 0x7b, 0x3a, 0xe5, 0xe2, 0x4b, 0x0c, 0x28, 0x3a, - 0x79, 0xc9, 0xbf, 0x41, 0x81, 0xa9, 0x1a, 0x76, 0x96, 0x0c, 0xdc, 0x6e, 0x75, 0x91, 0x7d, 0x70, - 0xd3, 0xe8, 0x66, 0xc8, 0x6d, 0x12, 0x62, 0x83, 0xce, 0x2d, 0xb0, 0x6c, 0xe8, 0xf5, 0x69, 0xd9, - 0x1d, 0x61, 0xb6, 0xfa, 0xe6, 0x71, 0x3b, 0x12, 0x98, 0xe4, 0x3c, 0x7a, 0xa3, 0x4b, 0x1e, 0x43, - 0x60, 0x5b, 0x05, 0x66, 0xd8, 0xed, 0x7d, 0x85, 0xb6, 0xb1, 0x65, 0xa2, 0xdd, 0x11, 0xb4, 0x10, - 0xf5, 0x16, 0xc8, 0xea, 0x2e, 0x35, 0xb6, 0xf5, 0x8a, 0xfa, 0x76, 0x9e, 0xa4, 0x3c, 0x8d, 0x66, - 0x8c, 0x11, 0x46, 0x32, 0x50, 0x6c, 0x8f, 0xe7, 0x31, 0x86, 0x91, 0x1c, 0x58, 0x78, 0xf2, 0x88, - 0x7d, 0x55, 0x81, 0xe3, 0x8c, 0x81, 0xb3, 0xd8, 0x76, 0x8c, 0xa6, 0xde, 0xa6, 0xc8, 0xbd, 0x28, - 0x35, 0x0a, 0xe8, 0x56, 0x60, 0x76, 0x8f, 0x27, 0xcb, 0x20, 0x3c, 0xd3, 0x17, 0x42, 0x81, 0x01, - 0x4d, 0xfc, 0x31, 0x46, 0x38, 0x3e, 0x41, 0xaa, 0x02, 0xcd, 0x31, 0x86, 0xe3, 0x93, 0x66, 0x22, - 0x79, 0x88, 0x5f, 0xc6, 0x42, 0xf3, 0x04, 0xdd, 0xe7, 0x17, 0xa5, 0xb1, 0xdd, 0x80, 0x69, 0x82, - 0x25, 0xfd, 0x91, 0x2d, 0x43, 0x44, 0x28, 0xb1, 0xdf, 0xef, 0xb0, 0x0b, 0xc3, 0xfc, 0x7f, 0x35, - 0x9e, 0x0e, 0x3a, 0x07, 0x10, 0x7c, 0xe2, 0x3b, 0xe9, 0x54, 0x58, 0x27, 0x9d, 0x96, 0xeb, 0xa4, - 0xdf, 0x22, 0x1d, 0x2c, 0xa5, 0x3f, 0xdb, 0x07, 0x57, 0x0f, 0xb9, 0x30, 0x19, 0x83, 0x4b, 0x4f, - 0x5e, 0x2f, 0x5e, 0x93, 0xe9, 0xbd, 0xa6, 0xfd, 0xe3, 0x23, 0x99, 0x4f, 0xf1, 0xfd, 0x81, 0xd2, - 0xd3, 0x1f, 0x1c, 0xc0, 0x92, 0xbe, 0x01, 0x8e, 0xd2, 0x22, 0x8a, 0x3e, 0x5b, 0x59, 0x1a, 0x0a, - 0xa2, 0x27, 0x19, 0x7d, 0x62, 0x08, 0x25, 0x18, 0x74, 0x87, 0x7c, 0x54, 0x27, 0x17, 0xcf, 0xd8, - 0x8d, 0xab, 0x20, 0x87, 0x77, 0xf5, 0xfc, 0xb7, 0x32, 0xd4, 0xda, 0xdd, 0x20, 0x77, 0xba, 0xa1, - 0x3f, 0xcf, 0x8c, 0x62, 0x44, 0xb8, 0x1b, 0x32, 0xc4, 0xc5, 0x5d, 0x09, 0x5d, 0xd2, 0x08, 0x8a, - 0x0c, 0x2e, 0xdc, 0xc3, 0x0f, 0x38, 0x2b, 0x47, 0x34, 0xf2, 0xa7, 0x7a, 0x23, 0x1c, 0x3d, 0xaf, - 0x37, 0x2f, 0x6c, 0xd9, 0xd6, 0x2e, 0xb9, 0xfd, 0xca, 0x62, 0xd7, 0x68, 0x91, 0xeb, 0x08, 0xc5, - 0x0f, 0xea, 0xad, 0x9e, 0xe9, 0x90, 0x1d, 0x64, 0x3a, 0xac, 0x1c, 0x61, 0xc6, 0x83, 0xfa, 0x04, - 0xbf, 0xd3, 0xc9, 0x45, 0x76, 0x3a, 0x2b, 0x47, 0xbc, 0x6e, 0x47, 0x5d, 0x84, 0xc9, 0x96, 0xb1, - 0x47, 0xb6, 0xaa, 0xc9, 0xac, 0x6b, 0xd0, 0xd1, 0xe5, 0x45, 0x63, 0x8f, 0x6e, 0x6c, 0xaf, 0x1c, - 0xd1, 0xfc, 0x3f, 0xd5, 0x65, 0x98, 0x22, 0xdb, 0x02, 0x84, 0xcc, 0x64, 0xac, 0x63, 0xc9, 0x2b, - 0x47, 0xb4, 0xe0, 0x5f, 0xd7, 0xfa, 0xc8, 0x90, 0xb3, 0x1f, 0x77, 0x79, 0xdb, 0xed, 0xa9, 0x58, - 0xdb, 0xed, 0xae, 0x2c, 0xe8, 0x86, 0xfb, 0x49, 0xc8, 0x36, 0x89, 0x84, 0xd3, 0x4c, 0xc2, 0xf4, - 0x55, 0xbd, 0x03, 0x32, 0x3b, 0xba, 0xed, 0x4d, 0x9e, 0xaf, 0x1f, 0x4c, 0x77, 0x4d, 0xb7, 0x2f, - 0xb8, 0x08, 0xba, 0x7f, 0x2d, 0x4c, 0x40, 0x96, 0x08, 0xce, 0x7f, 0x40, 0x6f, 0xcf, 0x50, 0x33, - 0xa4, 0x68, 0x99, 0xee, 0xb0, 0x5f, 0xb7, 0xbc, 0x03, 0x32, 0xbf, 0x9b, 0x1a, 0x8d, 0x05, 0xd9, - 0xf7, 0x5e, 0x73, 0x25, 0xf4, 0x5e, 0xf3, 0x9e, 0x0b, 0x76, 0x33, 0xbd, 0x17, 0xec, 0x06, 0xcb, - 0x07, 0xd9, 0xc1, 0x8e, 0x2a, 0x7f, 0x32, 0x84, 0xe9, 0xd2, 0x2b, 0x88, 0xf0, 0x19, 0x78, 0xdb, - 0x30, 0xb9, 0x3a, 0x7b, 0xaf, 0x31, 0x3b, 0xa5, 0xb8, 0x46, 0xcd, 0x00, 0xf6, 0x92, 0xef, 0x9b, - 0x7e, 0x3d, 0x03, 0xa7, 0xe8, 0x35, 0xce, 0x7b, 0xb8, 0x6e, 0x89, 0xf7, 0x4d, 0xa2, 0x3f, 0x1c, - 0x89, 0xd2, 0xf4, 0x19, 0x70, 0x94, 0xbe, 0x03, 0xce, 0xbe, 0x43, 0xca, 0x99, 0x01, 0x87, 0x94, - 0xb3, 0xf1, 0x56, 0x0e, 0x3f, 0xcc, 0xeb, 0xcf, 0xba, 0xa8, 0x3f, 0xb7, 0x87, 0x00, 0xd4, 0x4f, - 0x2e, 0x23, 0xb1, 0x6f, 0xde, 0xe5, 0x6b, 0x4a, 0x4d, 0xd0, 0x94, 0xbb, 0x86, 0x67, 0x24, 0x79, - 0x6d, 0xf9, 0x9d, 0x0c, 0x5c, 0x16, 0x30, 0x53, 0xc1, 0x17, 0x99, 0xa2, 0x7c, 0x61, 0x24, 0x8a, - 0x12, 0x3f, 0x06, 0x42, 0xd2, 0x1a, 0xf3, 0x47, 0xd2, 0x67, 0x87, 0x7a, 0x81, 0xf2, 0x65, 0x13, - 0xa2, 0x2c, 0x27, 0x21, 0x47, 0x7b, 0x18, 0x06, 0x0d, 0x7b, 0x8b, 0xd9, 0xdd, 0xc8, 0x9d, 0x38, - 0x92, 0xe5, 0x6d, 0x0c, 0xfa, 0xc3, 0xd6, 0x35, 0xea, 0xbb, 0xb6, 0x59, 0x36, 0x1d, 0x0b, 0xfd, - 0xec, 0x48, 0x14, 0xc7, 0xf7, 0x86, 0x53, 0x86, 0xf1, 0x86, 0x1b, 0x6a, 0x95, 0xc3, 0xab, 0xc1, - 0xa1, 0xac, 0x72, 0x84, 0x14, 0x9e, 0x3c, 0x7e, 0xef, 0x54, 0xe0, 0x24, 0x9b, 0x6c, 0x2d, 0x88, - 0x16, 0x22, 0xba, 0x6f, 0x14, 0x40, 0x1e, 0xf7, 0xcc, 0x24, 0x76, 0xcb, 0x19, 0x79, 0x11, 0x4f, - 0x4a, 0x45, 0xde, 0xef, 0x20, 0x4c, 0x07, 0x7b, 0x38, 0x1c, 0x09, 0x52, 0x72, 0xd7, 0x3a, 0xc4, - 0x60, 0x23, 0x79, 0xcc, 0x5e, 0xa2, 0x40, 0x8e, 0x5d, 0xdf, 0xbf, 0x91, 0x88, 0xc3, 0x84, 0x18, - 0xe5, 0x59, 0x62, 0x47, 0x2e, 0xf6, 0x25, 0xf7, 0xc9, 0xed, 0xc5, 0x1d, 0xd2, 0x2d, 0xf6, 0xdf, - 0x4d, 0xc3, 0x74, 0x0d, 0x3b, 0x45, 0xdd, 0xb6, 0x0d, 0x7d, 0x6b, 0x54, 0x1e, 0xdf, 0xb2, 0xde, - 0xc3, 0xe8, 0x7b, 0x29, 0xd9, 0xf3, 0x34, 0xfe, 0x42, 0xb8, 0xc7, 0x6a, 0x48, 0x2c, 0xc1, 0x87, - 0xa5, 0xce, 0xcc, 0x0c, 0xa2, 0x36, 0x06, 0x8f, 0xed, 0x34, 0x4c, 0x78, 0x67, 0xf1, 0x6e, 0x16, - 0xce, 0x67, 0x6e, 0x3b, 0x3b, 0xde, 0x31, 0x18, 0xf2, 0xbc, 0xff, 0x0c, 0x18, 0x7a, 0x75, 0x4c, - 0x47, 0xf9, 0xe8, 0x83, 0x84, 0xf1, 0xda, 0x58, 0x1c, 0x77, 0xf8, 0xc3, 0x3a, 0x3a, 0xf8, 0x5b, - 0x13, 0x6c, 0x39, 0x72, 0x55, 0x77, 0xf0, 0x03, 0xe8, 0x8b, 0x0a, 0x4c, 0xd4, 0xb0, 0xe3, 0x8e, - 0xb7, 0xc2, 0xe5, 0xa6, 0xc3, 0x6a, 0xb8, 0xca, 0xad, 0x78, 0x4c, 0xb1, 0x35, 0x8c, 0x7b, 0x60, - 0xaa, 0x63, 0x5b, 0x4d, 0xdc, 0xed, 0xb2, 0xd5, 0x0b, 0xde, 0x51, 0xad, 0xdf, 0xe8, 0x4f, 0x58, - 0x9b, 0x5f, 0xf7, 0xfe, 0xd1, 0x82, 0xdf, 0xe3, 0x9a, 0x01, 0x94, 0x12, 0xab, 0xe0, 0xb8, 0xcd, - 0x80, 0xa8, 0xc2, 0x93, 0x07, 0xfa, 0x73, 0x0a, 0xcc, 0xd4, 0xb0, 0xe3, 0x4b, 0x31, 0xc6, 0x26, - 0x47, 0x38, 0xbc, 0x02, 0x94, 0xca, 0xc1, 0xa0, 0x94, 0xbf, 0x1a, 0x50, 0x94, 0xa6, 0x4f, 0x6c, - 0x8c, 0x57, 0x03, 0xca, 0x71, 0x30, 0x86, 0xe3, 0x6b, 0x8f, 0x81, 0x29, 0xc2, 0x0b, 0x69, 0xb0, - 0xbf, 0x90, 0x09, 0x1a, 0xef, 0x97, 0x12, 0x6a, 0xbc, 0x77, 0x42, 0x76, 0x47, 0xb7, 0x2f, 0x74, - 0x49, 0xc3, 0x9d, 0x96, 0x31, 0xdb, 0xd7, 0xdc, 0xec, 0x1a, 0xfd, 0xab, 0xbf, 0x9f, 0x66, 0x36, - 0x9e, 0x9f, 0xe6, 0xc3, 0xe9, 0x58, 0x23, 0x21, 0x9d, 0x3b, 0x8c, 0xb0, 0xc9, 0xc7, 0x18, 0x37, - 0x23, 0xca, 0x4e, 0x5e, 0x39, 0x5e, 0xa4, 0xc0, 0xa4, 0x3b, 0x6e, 0x13, 0x7b, 0xfc, 0xdc, 0xc1, - 0xd5, 0xa1, 0xbf, 0xa1, 0x1f, 0xb3, 0x07, 0xf6, 0x24, 0x32, 0x3a, 0xf3, 0x3e, 0x46, 0x0f, 0x1c, - 0x55, 0x78, 0xf2, 0x78, 0xbc, 0x9b, 0xe2, 0x41, 0xda, 0x03, 0x7a, 0x93, 0x02, 0xca, 0x32, 0x76, - 0xc6, 0x6d, 0x45, 0xbe, 0x43, 0x3a, 0xc4, 0x91, 0x20, 0x30, 0xc2, 0xf3, 0xfc, 0x32, 0x1e, 0x4d, - 0x03, 0x92, 0x8b, 0x6d, 0x24, 0xc5, 0x40, 0xf2, 0xa8, 0xbd, 0x9f, 0xa2, 0x46, 0x37, 0x17, 0x7e, - 0x66, 0x04, 0xbd, 0xea, 0x78, 0x17, 0x3e, 0x3c, 0x01, 0x12, 0x1a, 0x87, 0xd5, 0xde, 0xfa, 0x15, - 0x3e, 0x96, 0xab, 0xf8, 0xc0, 0x6d, 0xec, 0xdb, 0xb8, 0x79, 0x01, 0xb7, 0xd0, 0x4f, 0x1e, 0x1c, - 0xba, 0x53, 0x30, 0xd1, 0xa4, 0xd4, 0x08, 0x78, 0x93, 0x9a, 0xf7, 0x1a, 0xe3, 0x5e, 0x69, 0xb1, - 0x23, 0xa2, 0xbf, 0x8f, 0xf1, 0x5e, 0x69, 0x89, 0xe2, 0xc7, 0x60, 0xb6, 0xd0, 0x59, 0x46, 0xb9, - 0x69, 0x99, 0xe8, 0xbf, 0x1c, 0x1c, 0x96, 0xab, 0x60, 0xca, 0x68, 0x5a, 0x26, 0x09, 0x43, 0xe1, - 0x1d, 0x02, 0xf2, 0x13, 0xbc, 0xaf, 0xa5, 0x1d, 0xeb, 0x7e, 0x83, 0xed, 0x9a, 0x07, 0x09, 0xc3, - 0x1a, 0x13, 0x2e, 0xeb, 0x87, 0x65, 0x4c, 0xf4, 0x29, 0x3b, 0x79, 0xc8, 0x3e, 0x11, 0x78, 0xb7, - 0xd1, 0xae, 0xf0, 0x11, 0xb1, 0x0a, 0x3c, 0xcc, 0x70, 0xc6, 0xd7, 0xe2, 0x50, 0x86, 0xb3, 0x08, - 0x06, 0xc6, 0x70, 0x63, 0x45, 0x80, 0x63, 0xe2, 0x6b, 0xc0, 0x07, 0x40, 0x67, 0x74, 0xe6, 0xe1, - 0x90, 0xe8, 0x1c, 0x8e, 0x89, 0xf8, 0x21, 0x16, 0x22, 0x93, 0x59, 0x3c, 0xe8, 0xbf, 0x8e, 0x02, - 0x9c, 0xdb, 0x87, 0xf1, 0x57, 0xa0, 0xde, 0x0a, 0x31, 0x6e, 0xc4, 0xde, 0x27, 0x41, 0x97, 0xca, - 0x18, 0xef, 0x8a, 0x97, 0x29, 0x3f, 0x79, 0x00, 0x5f, 0xa8, 0xc0, 0x1c, 0xf1, 0x11, 0x68, 0x63, - 0xdd, 0xa6, 0x1d, 0xe5, 0x48, 0x1c, 0xe5, 0xdf, 0x2d, 0x1d, 0xe0, 0x47, 0x94, 0x43, 0xc0, 0xc7, - 0x48, 0xa0, 0x90, 0x8b, 0xee, 0x23, 0xc9, 0xc2, 0x58, 0xb6, 0x51, 0xf2, 0x3e, 0x0b, 0x4c, 0xc5, - 0x47, 0x83, 0x47, 0x4c, 0x8f, 0x5c, 0x51, 0x18, 0x5e, 0x63, 0x1b, 0xb3, 0x47, 0xae, 0x0c, 0x13, - 0xc9, 0x63, 0xf2, 0xa6, 0x5b, 0xd8, 0x82, 0x73, 0x9d, 0x5c, 0x18, 0xff, 0xda, 0x8c, 0x7f, 0xa2, - 0xed, 0x73, 0x23, 0xf1, 0xc0, 0x3c, 0x40, 0x40, 0x7c, 0x15, 0x32, 0xb6, 0x75, 0x91, 0x2e, 0x6d, - 0xcd, 0x6a, 0xe4, 0x99, 0x5e, 0x4f, 0xd9, 0xde, 0xdd, 0x31, 0xe9, 0xc9, 0xd0, 0x59, 0xcd, 0x7b, - 0x55, 0xaf, 0x83, 0xd9, 0x8b, 0x86, 0xb3, 0xbd, 0x82, 0xf5, 0x16, 0xb6, 0x35, 0xeb, 0x22, 0xf1, - 0x98, 0x9b, 0xd4, 0xc4, 0x44, 0xd1, 0x7f, 0x45, 0xc2, 0xbe, 0x24, 0xb7, 0xc8, 0x8f, 0xe5, 0xf8, - 0x5b, 0x1c, 0xcb, 0x33, 0x9c, 0xab, 0xe4, 0x15, 0xe6, 0x03, 0x0a, 0x4c, 0x69, 0xd6, 0x45, 0xa6, - 0x24, 0xff, 0xc7, 0xe1, 0xea, 0x48, 0xec, 0x89, 0x1e, 0x91, 0x9c, 0xcf, 0xfe, 0xd8, 0x27, 0x7a, - 0x91, 0xc5, 0x8f, 0xe5, 0xe4, 0xd2, 0x8c, 0x66, 0x5d, 0xac, 0x61, 0x87, 0xb6, 0x08, 0xd4, 0x18, - 0x91, 0x93, 0xb5, 0xd1, 0xa5, 0x04, 0xd9, 0x3c, 0xdc, 0x7f, 0x8f, 0xbb, 0x8b, 0xe0, 0x0b, 0xc8, - 0x67, 0x71, 0xdc, 0xbb, 0x08, 0x03, 0x39, 0x18, 0x43, 0x8c, 0x14, 0x05, 0xa6, 0x35, 0xeb, 0xa2, - 0x3b, 0x34, 0x2c, 0x19, 0xed, 0xf6, 0x68, 0x46, 0xc8, 0xb8, 0xc6, 0xbf, 0x27, 0x06, 0x8f, 0x8b, - 0xb1, 0x1b, 0xff, 0x03, 0x18, 0x48, 0x1e, 0x86, 0xe7, 0xd1, 0xc6, 0xe2, 0x8d, 0xd0, 0xe6, 0x68, - 0x70, 0x18, 0xb6, 0x41, 0xf8, 0x6c, 0x1c, 0x5a, 0x83, 0x08, 0xe3, 0x60, 0x2c, 0x3b, 0x27, 0x73, - 0x45, 0x32, 0xcc, 0x8f, 0xb6, 0x4d, 0xbc, 0x37, 0x9e, 0x6b, 0x22, 0x1b, 0x76, 0x05, 0x46, 0x46, - 0x82, 0x46, 0x0c, 0x17, 0x44, 0x09, 0x1e, 0x92, 0xc7, 0xe3, 0xa3, 0x0a, 0xcc, 0x50, 0x16, 0x1e, - 0x21, 0x56, 0xc0, 0x50, 0x8d, 0x8a, 0xaf, 0xc1, 0xe1, 0x34, 0xaa, 0x08, 0x0e, 0xc6, 0x72, 0x2b, - 0xa8, 0x6b, 0xc7, 0x0d, 0x71, 0x7c, 0x3c, 0x0c, 0xc1, 0xa1, 0x8d, 0xb1, 0x11, 0x1e, 0x21, 0x1f, - 0xc6, 0x18, 0x3b, 0xa4, 0x63, 0xe4, 0xcf, 0xf3, 0x5b, 0xd1, 0x28, 0x31, 0x38, 0x40, 0x53, 0x18, - 0x21, 0x0c, 0x43, 0x36, 0x85, 0x43, 0x42, 0xe2, 0x6b, 0x0a, 0x00, 0x65, 0x60, 0xcd, 0xda, 0x23, - 0x97, 0xf9, 0x8c, 0xa0, 0x3b, 0xeb, 0x75, 0xab, 0x57, 0x06, 0xb8, 0xd5, 0xc7, 0x0c, 0xe1, 0x12, - 0x77, 0x25, 0x90, 0x93, 0xb2, 0x5b, 0xc9, 0xb1, 0xaf, 0x04, 0x46, 0x97, 0x9f, 0x3c, 0xc6, 0x5f, - 0xa1, 0xd6, 0x5c, 0x70, 0xc0, 0xf4, 0xd7, 0x46, 0x82, 0x32, 0x37, 0xfb, 0x57, 0xc4, 0xd9, 0xff, - 0x01, 0xb0, 0x1d, 0xd6, 0x46, 0x1c, 0x74, 0x70, 0x34, 0x79, 0x1b, 0xf1, 0xf0, 0x0e, 0x88, 0xfe, - 0x4c, 0x06, 0x8e, 0xb2, 0x4e, 0xe4, 0x87, 0x01, 0xe2, 0x98, 0xe7, 0xf0, 0x84, 0x4e, 0x72, 0x00, - 0xca, 0xa3, 0x5a, 0x90, 0x8a, 0xb3, 0x94, 0x29, 0xc1, 0xde, 0x58, 0x56, 0x37, 0x72, 0xa5, 0x07, - 0x3a, 0xba, 0xd9, 0x92, 0x0f, 0xf7, 0x3b, 0x00, 0x78, 0x6f, 0xad, 0x51, 0x11, 0xd7, 0x1a, 0xfb, - 0xac, 0x4c, 0xc6, 0xde, 0xb9, 0x26, 0x22, 0xa3, 0xec, 0x8e, 0x7d, 0xe7, 0x3a, 0xbc, 0xec, 0xe4, - 0x51, 0x7a, 0xaf, 0x02, 0x99, 0x9a, 0x65, 0x3b, 0xe8, 0xf9, 0x71, 0x5a, 0x27, 0x95, 0x7c, 0x00, - 0x92, 0xf7, 0xae, 0x16, 0x85, 0x5b, 0x9a, 0x6f, 0x8e, 0x3e, 0xea, 0xac, 0x3b, 0x3a, 0xf1, 0xea, - 0x76, 0xcb, 0xe7, 0xae, 0x6b, 0x8e, 0x1b, 0x4f, 0x87, 0xca, 0xaf, 0x16, 0x7e, 0x00, 0x23, 0xb1, - 0x78, 0x3a, 0xa1, 0x25, 0x27, 0x8f, 0xdb, 0x43, 0x47, 0x99, 0x6f, 0xeb, 0x92, 0xd1, 0xc6, 0xe8, - 0xf9, 0xd4, 0x65, 0xa4, 0xa2, 0xef, 0x60, 0xf9, 0x23, 0x31, 0x91, 0xae, 0xad, 0x24, 0xbe, 0xac, - 0x12, 0xc4, 0x97, 0x8d, 0xdb, 0xa0, 0xe8, 0x01, 0x74, 0xca, 0xd2, 0xb8, 0x1b, 0x54, 0x44, 0xd9, - 0x63, 0x89, 0xd3, 0x79, 0xac, 0x86, 0x1d, 0x6a, 0x54, 0x56, 0xbd, 0x1b, 0x58, 0x7e, 0x6a, 0x24, - 0x11, 0x3b, 0xfd, 0x0b, 0x5e, 0x94, 0x9e, 0x0b, 0x5e, 0x3e, 0xc0, 0x83, 0xb3, 0x26, 0x82, 0xf3, - 0x94, 0x70, 0x01, 0x89, 0x4c, 0x8e, 0x04, 0xa6, 0x77, 0xf8, 0x30, 0xad, 0x0b, 0x30, 0xdd, 0x31, - 0x24, 0x17, 0xc9, 0x03, 0xf6, 0x8b, 0x59, 0x38, 0x4a, 0x27, 0xfd, 0x05, 0xb3, 0xc5, 0x22, 0xac, - 0xbe, 0x35, 0x7d, 0xc8, 0x9b, 0x6d, 0xfb, 0x43, 0xb0, 0x0a, 0xb1, 0x9c, 0xb3, 0xbd, 0xb7, 0xe3, - 0x2f, 0xd0, 0x70, 0xae, 0x6e, 0x27, 0x4a, 0x76, 0xda, 0xe4, 0x6f, 0xc8, 0xf7, 0xff, 0x13, 0xef, - 0x32, 0x9a, 0x90, 0xbf, 0xcb, 0xe8, 0x8f, 0xe3, 0xad, 0xdb, 0x91, 0xa2, 0x7b, 0x04, 0x9e, 0xb0, - 0xed, 0x14, 0x63, 0x45, 0x4f, 0x82, 0xbb, 0x1f, 0x0d, 0x77, 0xb2, 0x20, 0x82, 0xc8, 0x90, 0xee, - 0x64, 0x84, 0xc0, 0x61, 0xba, 0x93, 0x0d, 0x62, 0x60, 0x0c, 0xb7, 0xda, 0x67, 0xd9, 0x6e, 0x3e, - 0x69, 0x37, 0xe8, 0x2f, 0xd3, 0x89, 0x8f, 0xd2, 0xdf, 0x4f, 0xc5, 0xf2, 0x7f, 0x26, 0x7c, 0x45, - 0x0f, 0xd3, 0x71, 0x3c, 0x9a, 0xa3, 0xc8, 0x8d, 0x61, 0xdd, 0x28, 0x4d, 0x7c, 0xd1, 0xcf, 0x19, - 0x2d, 0x67, 0x7b, 0x44, 0x27, 0x3a, 0x2e, 0xba, 0xb4, 0xbc, 0xeb, 0x91, 0xc9, 0x0b, 0xfa, 0xd7, - 0x54, 0xac, 0x10, 0x52, 0xbe, 0x48, 0x08, 0x5b, 0x21, 0x22, 0x8e, 0x11, 0xf8, 0x29, 0x92, 0xde, - 0x18, 0x35, 0xfa, 0xac, 0xd1, 0xc2, 0xd6, 0x23, 0x50, 0xa3, 0x09, 0x5f, 0xa3, 0xd3, 0xe8, 0x28, - 0x72, 0x3f, 0xa2, 0x1a, 0xed, 0x8b, 0x64, 0x44, 0x1a, 0x1d, 0x49, 0x2f, 0x79, 0x19, 0xbf, 0x7a, - 0x86, 0x4d, 0xa4, 0x56, 0x0d, 0xf3, 0x02, 0xfa, 0xe7, 0x9c, 0x77, 0x31, 0xf3, 0x39, 0xc3, 0xd9, - 0x66, 0xb1, 0x60, 0x7e, 0x47, 0xfa, 0x6e, 0x94, 0x21, 0xe2, 0xbd, 0x88, 0xe1, 0xa4, 0xb2, 0xfb, - 0xc2, 0x49, 0x15, 0x60, 0xd6, 0x30, 0x1d, 0x6c, 0x9b, 0x7a, 0x7b, 0xa9, 0xad, 0x6f, 0x75, 0x4f, - 0x4d, 0xf4, 0xbd, 0xbc, 0xae, 0xcc, 0xe5, 0xd1, 0xc4, 0x3f, 0xf8, 0xeb, 0x2b, 0x27, 0xc5, 0xeb, - 0x2b, 0x43, 0xa2, 0x5f, 0x4d, 0x85, 0x47, 0xbf, 0xf2, 0xa3, 0x5b, 0xc1, 0xe0, 0xe0, 0xd8, 0xb2, - 0xb6, 0x71, 0xcc, 0x70, 0x7f, 0x37, 0x4b, 0x46, 0x61, 0xf3, 0x43, 0x3f, 0xbe, 0x4e, 0x89, 0xb5, - 0xba, 0xe7, 0x2a, 0xc2, 0x7c, 0xaf, 0x12, 0xc4, 0xb6, 0x50, 0xf9, 0xca, 0x2b, 0x3d, 0x95, 0xf7, - 0x4d, 0x9e, 0x8c, 0x84, 0xc9, 0xc3, 0x2b, 0x55, 0x56, 0x4e, 0xa9, 0xe2, 0x2c, 0x16, 0xca, 0xd4, - 0x76, 0x0c, 0xa7, 0x91, 0xb2, 0x70, 0xcc, 0x8b, 0x76, 0xdb, 0xe9, 0x60, 0xdd, 0xd6, 0xcd, 0x26, - 0x46, 0x9f, 0x48, 0x8f, 0xc2, 0xec, 0x5d, 0x82, 0x49, 0xa3, 0x69, 0x99, 0x35, 0xe3, 0x59, 0xde, - 0xe5, 0x72, 0xd1, 0x41, 0xd6, 0x89, 0x44, 0xca, 0xec, 0x0f, 0xcd, 0xff, 0x57, 0x2d, 0xc3, 0x54, - 0x53, 0xb7, 0x5b, 0x34, 0x08, 0x5f, 0xb6, 0xe7, 0x22, 0xa7, 0x50, 0x42, 0x45, 0xef, 0x17, 0x2d, - 0xf8, 0x5b, 0xad, 0x8a, 0x42, 0xcc, 0xf5, 0x44, 0xf3, 0x08, 0x25, 0xb6, 0x18, 0xfc, 0x24, 0xc8, - 0xdc, 0x95, 0x8e, 0x8d, 0xdb, 0xe4, 0x0e, 0x7a, 0xda, 0x43, 0x4c, 0x69, 0x41, 0x42, 0xdc, 0xe5, - 0x01, 0x52, 0xd4, 0x3e, 0x34, 0xc6, 0xbd, 0x3c, 0x20, 0xc5, 0x45, 0xf2, 0x9a, 0xf9, 0xae, 0x1c, - 0xcc, 0xd2, 0x5e, 0x8d, 0x89, 0x13, 0xbd, 0x90, 0x5c, 0x21, 0xed, 0xdc, 0x8b, 0x2f, 0xa1, 0xda, - 0xc1, 0xc7, 0xe4, 0x3c, 0x28, 0x17, 0xfc, 0x80, 0x83, 0xee, 0x63, 0xdc, 0x7d, 0x7b, 0x8f, 0xaf, - 0x79, 0xca, 0xd3, 0xb8, 0xf7, 0xed, 0xa3, 0x8b, 0x4f, 0x1e, 0x9f, 0x5f, 0x52, 0x40, 0x29, 0xb4, - 0x5a, 0xa8, 0x79, 0x70, 0x28, 0xae, 0x81, 0x69, 0xaf, 0xcd, 0x04, 0x31, 0x20, 0xf9, 0xa4, 0xb8, - 0x8b, 0xa0, 0xbe, 0x6c, 0x0a, 0xad, 0xb1, 0xef, 0x2a, 0x44, 0x94, 0x9d, 0x3c, 0x28, 0xbf, 0x36, - 0xc1, 0x1a, 0xcd, 0x82, 0x65, 0x5d, 0x20, 0x47, 0x65, 0x9e, 0xaf, 0x40, 0x76, 0x09, 0x3b, 0xcd, - 0xed, 0x11, 0xb5, 0x99, 0x5d, 0xbb, 0xed, 0xb5, 0x99, 0x7d, 0xf7, 0xe1, 0x0f, 0xb6, 0x61, 0x3d, - 0xb6, 0xe6, 0x09, 0x4b, 0xe3, 0x8e, 0xee, 0x1c, 0x59, 0x7a, 0xf2, 0xe0, 0xfc, 0xab, 0x02, 0x73, - 0xfe, 0x0a, 0x17, 0xc5, 0xe4, 0x17, 0x53, 0x8f, 0xb4, 0xf5, 0x4e, 0xf4, 0x85, 0x78, 0x21, 0xd2, - 0x7c, 0x99, 0x8a, 0x35, 0x4b, 0x78, 0x61, 0x31, 0x46, 0xf0, 0x34, 0x39, 0x06, 0xc7, 0x30, 0x83, - 0x57, 0x60, 0x92, 0x30, 0xb4, 0x68, 0xec, 0x11, 0xd7, 0x41, 0x61, 0xa1, 0xf1, 0xd9, 0x23, 0x59, - 0x68, 0xbc, 0x43, 0x5c, 0x68, 0x94, 0x8c, 0x78, 0xec, 0xad, 0x33, 0xc6, 0xf4, 0xa5, 0x71, 0xff, - 0x1f, 0xf9, 0x32, 0x63, 0x0c, 0x5f, 0x9a, 0x01, 0xe5, 0x27, 0x8f, 0xe8, 0xeb, 0xfe, 0x13, 0xeb, - 0x6c, 0xbd, 0x0d, 0x55, 0xf4, 0x7f, 0x1d, 0x83, 0xcc, 0x59, 0xf7, 0xe1, 0x7f, 0x06, 0x37, 0x62, - 0xbd, 0x7c, 0x04, 0xc1, 0x19, 0x9e, 0x0e, 0x19, 0x97, 0x3e, 0x9b, 0xb6, 0xdc, 0x28, 0xb7, 0xbb, - 0xeb, 0x32, 0xa2, 0x91, 0xff, 0xd4, 0x93, 0x90, 0xeb, 0x5a, 0xbb, 0x76, 0xd3, 0x35, 0x9f, 0x5d, - 0x8d, 0x61, 0x6f, 0x71, 0x83, 0x92, 0x0a, 0xa4, 0xe7, 0x47, 0xe7, 0x32, 0xca, 0x5d, 0x90, 0xa4, - 0x08, 0x17, 0x24, 0xc5, 0xd8, 0x3f, 0x90, 0xe0, 0x2d, 0x79, 0x8d, 0xf8, 0x4b, 0x72, 0x57, 0x60, - 0x6b, 0x54, 0xb0, 0x87, 0x88, 0xe5, 0xa0, 0xea, 0x10, 0xd7, 0xe1, 0x5b, 0x14, 0xad, 0x1f, 0x07, - 0x7e, 0xac, 0x0e, 0xdf, 0x12, 0x3c, 0x8c, 0xe5, 0x94, 0x7a, 0x8e, 0x39, 0xa9, 0xde, 0x37, 0x4a, - 0x74, 0x33, 0x82, 0xd2, 0x1f, 0x08, 0x9d, 0x11, 0x3a, 0xaf, 0x0e, 0x8d, 0xce, 0x21, 0xb9, 0xaf, - 0xfe, 0x9e, 0x42, 0x22, 0x61, 0x7a, 0x46, 0x8e, 0xfc, 0x45, 0x47, 0xb1, 0x21, 0x72, 0xc7, 0x60, - 0x21, 0x0e, 0xf4, 0xec, 0xf0, 0xa1, 0xc1, 0x45, 0xd1, 0x71, 0xfc, 0x8f, 0x3b, 0x34, 0xb8, 0x2c, - 0x23, 0xc9, 0x03, 0xf9, 0x46, 0x7a, 0xb1, 0x58, 0xa1, 0xe9, 0x18, 0x7b, 0x23, 0x6e, 0x69, 0xe2, - 0xf0, 0x12, 0x33, 0x1a, 0xf0, 0x3e, 0x09, 0x51, 0x0e, 0xc7, 0x1d, 0x0d, 0x58, 0x8e, 0x8d, 0xe4, - 0x61, 0xfa, 0x9b, 0x9c, 0x2b, 0x3d, 0xb6, 0x36, 0xf3, 0x26, 0xb6, 0x1a, 0x80, 0x0f, 0x8e, 0xd6, - 0x19, 0x98, 0xe1, 0xa6, 0xfe, 0xde, 0x85, 0x35, 0x42, 0x5a, 0xdc, 0x83, 0xee, 0xbe, 0xc8, 0x46, - 0xbe, 0x30, 0x10, 0x63, 0xc1, 0x57, 0x86, 0x89, 0xb1, 0xdc, 0x07, 0xe7, 0x8d, 0x61, 0x63, 0xc2, - 0xea, 0x77, 0x78, 0xac, 0xaa, 0x22, 0x56, 0xb7, 0xc9, 0x88, 0x49, 0x6e, 0x4c, 0x93, 0x9a, 0x37, - 0xbe, 0xd3, 0x87, 0x4b, 0x13, 0xe0, 0x7a, 0xfa, 0xd0, 0x7c, 0x24, 0x8f, 0xd8, 0x2b, 0x68, 0x77, - 0x58, 0xa3, 0x26, 0xfb, 0x68, 0xba, 0x43, 0x36, 0x1b, 0x50, 0x84, 0xd9, 0x40, 0x4c, 0x7f, 0xfb, - 0xc0, 0x8d, 0xd4, 0x63, 0x6e, 0x10, 0x44, 0x99, 0x11, 0xfb, 0xdb, 0x0f, 0xe4, 0x20, 0x79, 0x70, - 0xfe, 0x51, 0x01, 0x58, 0xb6, 0xad, 0xdd, 0x4e, 0xd5, 0x6e, 0x61, 0x1b, 0xfd, 0x75, 0x30, 0x01, - 0x78, 0xe9, 0x08, 0x26, 0x00, 0xeb, 0x00, 0x5b, 0x3e, 0x71, 0xa6, 0xe1, 0xb7, 0xc8, 0x99, 0xfb, - 0x01, 0x53, 0x1a, 0x47, 0x43, 0xbc, 0x72, 0xf6, 0x19, 0x22, 0xc6, 0x51, 0x7d, 0x56, 0x40, 0x6e, - 0x94, 0x13, 0x80, 0x77, 0xfb, 0x58, 0xd7, 0x05, 0xac, 0xef, 0x3e, 0x00, 0x27, 0xc9, 0x63, 0xfe, - 0x4f, 0x13, 0x30, 0x4d, 0xb7, 0xeb, 0xa8, 0x4c, 0xff, 0x2e, 0x00, 0xfd, 0xd7, 0x46, 0x00, 0xfa, - 0x06, 0xcc, 0x58, 0x01, 0x75, 0xda, 0xa7, 0xf2, 0x0b, 0x30, 0x91, 0xb0, 0x73, 0x7c, 0x69, 0x02, - 0x19, 0xf4, 0x31, 0x1e, 0x79, 0x4d, 0x44, 0xfe, 0x8e, 0x08, 0x79, 0x73, 0x14, 0x47, 0x09, 0xfd, - 0x7b, 0x7c, 0xe8, 0x37, 0x04, 0xe8, 0x0b, 0x07, 0x61, 0x65, 0x0c, 0xe1, 0xf6, 0x15, 0xc8, 0x90, - 0xd3, 0x71, 0xbf, 0x9e, 0xe0, 0xfc, 0xfe, 0x14, 0x4c, 0x90, 0x26, 0xeb, 0xcf, 0x3b, 0xbc, 0x57, - 0xf7, 0x8b, 0xbe, 0xe9, 0x60, 0xdb, 0xf7, 0x58, 0xf0, 0x5e, 0x5d, 0x1e, 0x3c, 0xaf, 0xe4, 0xee, - 0xa9, 0x1c, 0xdd, 0x88, 0xf4, 0x13, 0x86, 0x9e, 0x94, 0xf0, 0x12, 0x1f, 0xd9, 0x79, 0xb9, 0x61, - 0x26, 0x25, 0x03, 0x18, 0x49, 0x1e, 0xf8, 0x3f, 0xcf, 0xc0, 0x29, 0xba, 0xaa, 0xb4, 0x64, 0x5b, - 0x3b, 0x3d, 0xb7, 0x5b, 0x19, 0x07, 0xd7, 0x85, 0xeb, 0x61, 0xce, 0x11, 0xfc, 0xb1, 0x99, 0x4e, - 0xf4, 0xa4, 0xa2, 0x3f, 0xe1, 0x7d, 0x2a, 0x9e, 0x29, 0x22, 0xb9, 0x10, 0x21, 0xc0, 0x30, 0xde, - 0x63, 0x2f, 0xd4, 0x4b, 0x32, 0xca, 0x2d, 0x52, 0x29, 0x43, 0xad, 0x59, 0xfa, 0x3a, 0x95, 0x95, - 0xd1, 0xa9, 0x0f, 0xfa, 0x3a, 0xf5, 0x93, 0x82, 0x4e, 0x2d, 0x1f, 0x5c, 0x24, 0xc9, 0xeb, 0xd6, - 0x6b, 0xfd, 0x8d, 0x21, 0x7f, 0xdb, 0x6e, 0x27, 0x81, 0xcd, 0x3a, 0xde, 0x1f, 0x29, 0x23, 0xf8, - 0x23, 0x89, 0xf7, 0x51, 0xc4, 0x98, 0x09, 0x8b, 0x5c, 0x87, 0xe8, 0xd2, 0x1c, 0xa4, 0x0d, 0x8f, - 0xbb, 0xb4, 0xd1, 0x1a, 0x6a, 0xae, 0x1b, 0x59, 0xd0, 0x18, 0xd6, 0x96, 0xe6, 0x20, 0xb7, 0x64, - 0xb4, 0x1d, 0x6c, 0xa3, 0xaf, 0xb0, 0x99, 0xee, 0x6b, 0x13, 0x1c, 0x00, 0x16, 0x21, 0xb7, 0x49, - 0x4a, 0x63, 0x26, 0xf3, 0x4d, 0x72, 0xad, 0x87, 0x72, 0xa8, 0xb1, 0x7f, 0xe3, 0x46, 0xe7, 0xeb, - 0x21, 0x33, 0xb2, 0x29, 0x72, 0x8c, 0xe8, 0x7c, 0x83, 0x59, 0x18, 0xcb, 0xc5, 0x54, 0x39, 0x0d, - 0xef, 0xb8, 0x63, 0xfc, 0x85, 0xe4, 0x10, 0xce, 0x83, 0x62, 0xb4, 0xba, 0xa4, 0x73, 0x9c, 0xd2, - 0xdc, 0xc7, 0xb8, 0xbe, 0x42, 0xbd, 0xa2, 0xa2, 0x2c, 0x8f, 0xdb, 0x57, 0x48, 0x8a, 0x8b, 0xe4, - 0x31, 0xfb, 0x3e, 0x71, 0x14, 0xed, 0xb4, 0xf5, 0x26, 0x76, 0xb9, 0x4f, 0x0c, 0x35, 0xda, 0x93, - 0x65, 0xbc, 0x9e, 0x8c, 0x6b, 0xa7, 0xd9, 0x03, 0xb4, 0xd3, 0x61, 0x97, 0x21, 0x7d, 0x99, 0x93, - 0x8a, 0x1f, 0xda, 0x32, 0x64, 0x24, 0x1b, 0x63, 0xb8, 0x76, 0xd4, 0x3b, 0x48, 0x3b, 0xd6, 0xd6, - 0x3a, 0xec, 0x26, 0x0d, 0x13, 0xd6, 0xc8, 0x0e, 0xcd, 0x0e, 0xb3, 0x49, 0x13, 0xce, 0xc3, 0x18, - 0xd0, 0x9a, 0x63, 0x68, 0x7d, 0x9e, 0x0d, 0xa3, 0x09, 0xef, 0x93, 0x76, 0x2d, 0xdb, 0x89, 0xb7, - 0x4f, 0xea, 0x72, 0xa7, 0x91, 0xff, 0xe2, 0x1e, 0xbc, 0x12, 0xcf, 0x55, 0x8f, 0x6a, 0xf8, 0x8c, - 0x71, 0xf0, 0x6a, 0x10, 0x03, 0xc9, 0xc3, 0xfb, 0xb6, 0x43, 0x1a, 0x3c, 0x87, 0x6d, 0x8e, 0xac, - 0x0d, 0x8c, 0x6c, 0xe8, 0x1c, 0xa6, 0x39, 0x86, 0xf3, 0x90, 0x3c, 0x5e, 0xdf, 0xe1, 0x06, 0xce, - 0xb7, 0x8c, 0x71, 0xe0, 0xf4, 0x5a, 0x66, 0x76, 0xc8, 0x96, 0x39, 0xec, 0xfe, 0x0f, 0x93, 0xf5, - 0xe8, 0x06, 0xcc, 0x61, 0xf6, 0x7f, 0x22, 0x98, 0x48, 0x1e, 0xf1, 0xb7, 0x2a, 0x90, 0xad, 0x8d, - 0x7f, 0xbc, 0x1c, 0x76, 0x2e, 0x42, 0x64, 0x55, 0x1b, 0xd9, 0x70, 0x39, 0xcc, 0x5c, 0x24, 0x94, - 0x85, 0x31, 0x04, 0xde, 0x3f, 0x0a, 0x33, 0x64, 0x49, 0xc4, 0xdb, 0x66, 0xfd, 0x0e, 0x1b, 0x35, - 0x1f, 0x4e, 0xb0, 0xad, 0xde, 0x03, 0x93, 0xde, 0xfe, 0x1d, 0x1b, 0x39, 0xe7, 0xe5, 0xda, 0xa7, - 0xc7, 0xa5, 0xe6, 0xff, 0x7f, 0x20, 0x67, 0x88, 0x91, 0xef, 0xd5, 0x0e, 0xeb, 0x0c, 0x71, 0xa8, - 0xfb, 0xb5, 0x7f, 0x1c, 0x8c, 0xa8, 0xff, 0x25, 0x39, 0xcc, 0x7b, 0xf7, 0x71, 0x33, 0x7d, 0xf6, - 0x71, 0x3f, 0xc1, 0x63, 0x59, 0x13, 0xb1, 0xbc, 0x53, 0x56, 0x84, 0x23, 0x1c, 0x6b, 0xdf, 0xeb, - 0xc3, 0x79, 0x56, 0x80, 0x73, 0xe1, 0x40, 0xbc, 0x8c, 0xe1, 0xe0, 0x63, 0x26, 0x18, 0x73, 0x3f, - 0x99, 0x60, 0x3b, 0xee, 0x39, 0x55, 0x91, 0xd9, 0x77, 0xaa, 0x42, 0x68, 0xe9, 0xd9, 0x03, 0xb6, - 0xf4, 0x4f, 0xf2, 0xda, 0x51, 0x17, 0xb5, 0xe3, 0xe9, 0xf2, 0x88, 0x8c, 0x6e, 0x64, 0x7e, 0x9f, - 0xaf, 0x1e, 0xe7, 0x04, 0xf5, 0x28, 0x1e, 0x8c, 0x99, 0xe4, 0xf5, 0xe3, 0xf7, 0xbd, 0x09, 0xed, - 0x21, 0xb7, 0xf7, 0x61, 0xb7, 0x8a, 0x05, 0x21, 0x8e, 0x6c, 0xe4, 0x1e, 0x66, 0xab, 0x78, 0x10, - 0x27, 0x63, 0x88, 0xc5, 0x36, 0x0b, 0xd3, 0x84, 0xa7, 0x73, 0x46, 0x6b, 0x0b, 0x3b, 0xe8, 0x75, - 0xd4, 0x47, 0xd1, 0x8b, 0x7c, 0x39, 0xa2, 0xf0, 0x44, 0x61, 0xe7, 0x5d, 0xe3, 0x7a, 0x74, 0x50, - 0x26, 0xe7, 0x39, 0x06, 0xc7, 0x1d, 0x41, 0x71, 0x20, 0x07, 0xc9, 0x43, 0xf6, 0x31, 0xea, 0x6e, - 0xb3, 0xaa, 0x5f, 0xb2, 0x76, 0x1d, 0xf4, 0xe0, 0x08, 0x3a, 0xe8, 0x05, 0xc8, 0xb5, 0x09, 0x35, - 0x76, 0x2c, 0x23, 0x7a, 0xba, 0xc3, 0x44, 0x40, 0xcb, 0xd7, 0xd8, 0x9f, 0x71, 0xcf, 0x66, 0x04, - 0x72, 0xa4, 0x74, 0xc6, 0x7d, 0x36, 0x63, 0x40, 0xf9, 0x63, 0xb9, 0x63, 0x67, 0xd2, 0x2d, 0xdd, - 0xd8, 0x31, 0x9c, 0x11, 0x45, 0x70, 0x68, 0xbb, 0xb4, 0xbc, 0x08, 0x0e, 0xe4, 0x25, 0xee, 0x89, - 0x51, 0x4e, 0x2a, 0xee, 0xef, 0xe3, 0x3e, 0x31, 0x1a, 0x5d, 0x7c, 0xf2, 0x98, 0xfc, 0x0a, 0x6d, - 0x59, 0x67, 0xa9, 0xf3, 0x6d, 0x82, 0x7e, 0xbd, 0x43, 0x37, 0x16, 0xca, 0xda, 0xe1, 0x35, 0x96, - 0xbe, 0xe5, 0x27, 0x0f, 0xcc, 0x7f, 0xff, 0x31, 0xc8, 0x2e, 0xe2, 0xf3, 0xbb, 0x5b, 0xe8, 0x0e, - 0x98, 0xac, 0xdb, 0x18, 0x97, 0xcd, 0x4d, 0xcb, 0x95, 0xae, 0xe3, 0x3e, 0x7b, 0x90, 0xb0, 0x37, - 0x17, 0x8f, 0x6d, 0xac, 0xb7, 0x82, 0xf3, 0x67, 0xde, 0x2b, 0x7a, 0x79, 0x1a, 0x32, 0x35, 0x47, - 0x77, 0xd0, 0x94, 0x8f, 0x2d, 0x7a, 0x90, 0xc7, 0xe2, 0x0e, 0x11, 0x8b, 0xeb, 0x05, 0x59, 0x10, - 0x0e, 0xe6, 0xdd, 0xff, 0x43, 0x00, 0x40, 0x30, 0x79, 0x7f, 0xd7, 0x32, 0xdd, 0x1c, 0xde, 0x11, - 0x48, 0xef, 0x1d, 0xbd, 0xc6, 0x17, 0xf7, 0x5d, 0x82, 0xb8, 0x1f, 0x27, 0x57, 0xc4, 0x18, 0x56, - 0xda, 0xd2, 0x30, 0xe5, 0x8a, 0x76, 0x05, 0xeb, 0xad, 0x2e, 0x7a, 0x74, 0xa0, 0xfc, 0x21, 0x62, - 0x46, 0x1f, 0x92, 0x0e, 0xc6, 0x49, 0x6b, 0xe5, 0x13, 0x0f, 0xf7, 0xe8, 0xf0, 0x36, 0xff, 0xd3, - 0x62, 0x30, 0x92, 0x9b, 0x21, 0x63, 0x98, 0x9b, 0x16, 0xf3, 0x2f, 0xbc, 0x32, 0x84, 0xb6, 0xab, - 0x13, 0x1a, 0xc9, 0x28, 0x19, 0xa9, 0x33, 0x9a, 0xad, 0xb1, 0x5c, 0x7a, 0x97, 0x71, 0x4b, 0x47, - 0xff, 0xfb, 0x40, 0x61, 0xab, 0x2a, 0x64, 0x3a, 0xba, 0xb3, 0xcd, 0x8a, 0x26, 0xcf, 0xae, 0x8d, - 0xbc, 0x6b, 0xea, 0xa6, 0x65, 0x5e, 0xda, 0x31, 0x9e, 0xe5, 0xdf, 0xad, 0x2b, 0xa4, 0xb9, 0x9c, - 0x6f, 0x61, 0x13, 0xdb, 0xba, 0x83, 0x6b, 0x7b, 0x5b, 0x64, 0x8e, 0x35, 0xa9, 0xf1, 0x49, 0xb1, - 0xf5, 0xdf, 0xe5, 0x38, 0x5c, 0xff, 0x37, 0x8d, 0x36, 0x26, 0x91, 0x9a, 0x98, 0xfe, 0x7b, 0xef, - 0xb1, 0xf4, 0xbf, 0x4f, 0x11, 0xc9, 0xa3, 0xf1, 0x6f, 0x69, 0x98, 0xa9, 0xb9, 0x0a, 0x57, 0xdb, - 0xdd, 0xd9, 0xd1, 0xed, 0x4b, 0xe8, 0xda, 0x00, 0x15, 0x4e, 0x35, 0x53, 0xa2, 0x5f, 0xca, 0xef, - 0x49, 0x5f, 0x2b, 0xcd, 0x9a, 0x36, 0x57, 0x42, 0xec, 0x76, 0xf0, 0x04, 0xc8, 0xba, 0xea, 0xed, - 0x79, 0x5c, 0x46, 0x36, 0x04, 0x9a, 0x53, 0x32, 0xa2, 0xd5, 0x40, 0xde, 0xc6, 0x10, 0x4d, 0x23, - 0x0d, 0x47, 0x6b, 0x8e, 0xde, 0xbc, 0xb0, 0x6c, 0xd9, 0xd6, 0xae, 0x63, 0x98, 0xb8, 0x8b, 0x1e, - 0x15, 0x20, 0xe0, 0xe9, 0x7f, 0x2a, 0xd0, 0x7f, 0xf4, 0xef, 0x29, 0xd9, 0x51, 0xd4, 0xef, 0x56, - 0x79, 0xf2, 0x21, 0x01, 0xaa, 0xe4, 0xc6, 0x45, 0x19, 0x8a, 0xc9, 0x0b, 0xed, 0x2d, 0x0a, 0xe4, - 0x4b, 0x0f, 0x74, 0x2c, 0xdb, 0x59, 0xb5, 0x9a, 0x7a, 0xbb, 0xeb, 0x58, 0x36, 0x46, 0xd5, 0x48, - 0xa9, 0xb9, 0x3d, 0x4c, 0xcb, 0x6a, 0x06, 0x83, 0x23, 0x7b, 0xe3, 0xd5, 0x4e, 0x11, 0x75, 0xfc, - 0x63, 0xd2, 0xbb, 0x8c, 0x54, 0x2a, 0xbd, 0x1c, 0x85, 0xe8, 0x79, 0xbf, 0x2e, 0x2d, 0xde, 0x61, - 0x09, 0xb9, 0x9d, 0x47, 0x29, 0xa6, 0xc6, 0xb0, 0x54, 0x9e, 0x86, 0xd9, 0xda, 0xee, 0x79, 0x9f, - 0x48, 0x97, 0x37, 0x42, 0x5e, 0x2f, 0x1d, 0xa5, 0x82, 0x29, 0x1e, 0x4f, 0x28, 0x44, 0xbe, 0xd7, - 0xc1, 0x6c, 0x97, 0xcf, 0xc6, 0xf0, 0x16, 0x13, 0x25, 0xa3, 0x53, 0x0c, 0x2e, 0x35, 0x79, 0x01, - 0xbe, 0x2f, 0x0d, 0xb3, 0xd5, 0x0e, 0x36, 0x71, 0x8b, 0x7a, 0x41, 0x0a, 0x02, 0x7c, 0x79, 0x4c, - 0x01, 0x0a, 0x84, 0x42, 0x04, 0x18, 0x78, 0x2c, 0x2f, 0x7a, 0xc2, 0x0b, 0x12, 0x62, 0x09, 0x2e, - 0xaa, 0xb4, 0xe4, 0x05, 0xf7, 0xe5, 0x34, 0x4c, 0x6b, 0xbb, 0xe6, 0xba, 0x6d, 0xb9, 0xa3, 0xb1, - 0x8d, 0xee, 0x0c, 0x3a, 0x88, 0x9b, 0xe0, 0x58, 0x6b, 0xd7, 0x26, 0xeb, 0x4f, 0x65, 0xb3, 0x86, - 0x9b, 0x96, 0xd9, 0xea, 0x92, 0x7a, 0x64, 0xb5, 0xfd, 0x1f, 0x6e, 0xcf, 0x3c, 0xff, 0x9b, 0x4a, - 0x0a, 0xbd, 0x50, 0x3a, 0xd4, 0x0d, 0xad, 0x3c, 0x57, 0xb4, 0x7c, 0x4f, 0x20, 0x19, 0xd0, 0x66, - 0x50, 0x09, 0xc9, 0x0b, 0xf7, 0xf3, 0x69, 0x50, 0x0b, 0xcd, 0xa6, 0xb5, 0x6b, 0x3a, 0x35, 0xdc, - 0xc6, 0x4d, 0xa7, 0x6e, 0xeb, 0x4d, 0xcc, 0xdb, 0xcf, 0x79, 0x50, 0x5a, 0x86, 0xcd, 0xfa, 0x60, - 0xf7, 0x91, 0xc9, 0xf1, 0xe5, 0xd2, 0x3b, 0x8e, 0xb4, 0x96, 0xfb, 0x4b, 0x89, 0x21, 0x4e, 0xb9, - 0x7d, 0x45, 0xc9, 0x82, 0x92, 0x97, 0xea, 0x27, 0xd3, 0x30, 0xe5, 0xf5, 0xd8, 0x5b, 0x32, 0xc2, - 0xfc, 0x95, 0x98, 0x93, 0x11, 0x9f, 0x78, 0x0c, 0x19, 0xbe, 0x2b, 0xc6, 0xac, 0x22, 0x8c, 0x7e, - 0x3c, 0xd1, 0x15, 0xe2, 0x8b, 0xce, 0x7d, 0xad, 0x54, 0x1b, 0x4b, 0xd5, 0xd5, 0xc5, 0x92, 0x96, - 0x57, 0xd0, 0x57, 0xd2, 0x90, 0x59, 0x37, 0xcc, 0x2d, 0x3e, 0xba, 0xd2, 0x71, 0xd7, 0x8e, 0x6c, - 0xe1, 0x07, 0x58, 0x4b, 0xa7, 0x2f, 0xea, 0xad, 0x70, 0xdc, 0xdc, 0xdd, 0x39, 0x8f, 0xed, 0xea, - 0x26, 0x19, 0x65, 0xbb, 0x75, 0xab, 0x86, 0x4d, 0x6a, 0x84, 0x66, 0xb5, 0xbe, 0xdf, 0x44, 0x13, - 0x4c, 0x62, 0xf2, 0xe0, 0x72, 0x12, 0x22, 0x71, 0x9f, 0xa9, 0x34, 0xc7, 0x54, 0xac, 0x69, 0x43, - 0x1f, 0xe2, 0xc9, 0x6b, 0xea, 0x1f, 0x64, 0xe1, 0x44, 0xc1, 0xbc, 0x44, 0x6c, 0x0a, 0xda, 0xc1, - 0x17, 0xb7, 0x75, 0x73, 0x0b, 0x93, 0x01, 0xc2, 0x97, 0x38, 0x1f, 0xa2, 0x3f, 0x25, 0x86, 0xe8, - 0x57, 0x35, 0x98, 0xb0, 0xec, 0x16, 0xb6, 0x17, 0x2e, 0x11, 0x9e, 0x7a, 0x97, 0x9d, 0x59, 0x9b, - 0xec, 0x57, 0xc4, 0x3c, 0x23, 0x3f, 0x5f, 0xa5, 0xff, 0x6b, 0x1e, 0xa1, 0x33, 0x37, 0xc1, 0x04, - 0x4b, 0x53, 0x67, 0x60, 0xb2, 0xaa, 0x2d, 0x96, 0xb4, 0x46, 0x79, 0x31, 0x7f, 0x44, 0xbd, 0x0c, - 0x8e, 0x96, 0xeb, 0x25, 0xad, 0x50, 0x2f, 0x57, 0x2b, 0x0d, 0x92, 0x9e, 0x4f, 0xa1, 0xe7, 0x65, - 0x64, 0x3d, 0x7b, 0xa3, 0x99, 0xe9, 0x07, 0xab, 0x06, 0x13, 0x4d, 0x9a, 0x81, 0x0c, 0xa1, 0xd3, - 0xb1, 0x6a, 0xc7, 0x08, 0xd2, 0x04, 0xcd, 0x23, 0xa4, 0x9e, 0x06, 0xb8, 0x68, 0x5b, 0xe6, 0x56, - 0x70, 0xea, 0x70, 0x52, 0xe3, 0x52, 0xd0, 0x83, 0x29, 0xc8, 0xd1, 0x7f, 0xc8, 0x95, 0x24, 0xe4, - 0x29, 0x10, 0xbc, 0xf7, 0xee, 0x5a, 0xbc, 0x44, 0x5e, 0xc1, 0x44, 0x8b, 0xbd, 0xba, 0xba, 0x48, - 0x65, 0x40, 0x2d, 0x61, 0x56, 0x95, 0x9b, 0x21, 0x47, 0xff, 0x65, 0x5e, 0x07, 0xe1, 0xe1, 0x45, - 0x69, 0x36, 0x49, 0x3f, 0x65, 0x79, 0x99, 0x26, 0xaf, 0xcd, 0x1f, 0x4e, 0xc3, 0x64, 0x05, 0x3b, - 0xc5, 0x6d, 0xdc, 0xbc, 0x80, 0x1e, 0x2b, 0x2e, 0x80, 0xb6, 0x0d, 0x6c, 0x3a, 0xf7, 0xed, 0xb4, - 0xfd, 0x05, 0x50, 0x2f, 0x01, 0xbd, 0x80, 0xef, 0x7c, 0xef, 0x16, 0xf5, 0xe7, 0xc6, 0x3e, 0x75, - 0xf5, 0x4a, 0x08, 0x51, 0x99, 0x93, 0x90, 0xb3, 0x71, 0x77, 0xb7, 0xed, 0x2d, 0xa2, 0xb1, 0x37, - 0xf4, 0x90, 0x2f, 0xce, 0xa2, 0x20, 0xce, 0x9b, 0xe5, 0x8b, 0x18, 0x43, 0xbc, 0xd2, 0x0c, 0x4c, - 0x94, 0x4d, 0xc3, 0x31, 0xf4, 0x36, 0x7a, 0x61, 0x06, 0x66, 0x6b, 0xd8, 0x59, 0xd7, 0x6d, 0x7d, - 0x07, 0x3b, 0xd8, 0xee, 0xa2, 0xef, 0x89, 0x7d, 0x42, 0xa7, 0xad, 0x3b, 0x9b, 0x96, 0xbd, 0xe3, - 0xa9, 0xa6, 0xf7, 0xee, 0xaa, 0xe6, 0x1e, 0xb6, 0xbb, 0x01, 0x5f, 0xde, 0xab, 0xfb, 0xe5, 0xa2, - 0x65, 0x5f, 0x70, 0x07, 0x41, 0x36, 0x4d, 0x63, 0xaf, 0x2e, 0xbd, 0xb6, 0xb5, 0xb5, 0x8a, 0xf7, - 0xb0, 0x17, 0x2e, 0xcd, 0x7f, 0x77, 0xe7, 0x02, 0x2d, 0xab, 0x62, 0x39, 0x6e, 0xa7, 0xbd, 0x6a, - 0x6d, 0xd1, 0x78, 0xb1, 0x93, 0x9a, 0x98, 0x18, 0xe4, 0xd2, 0xf7, 0x30, 0xc9, 0x95, 0xe3, 0x73, - 0xb1, 0x44, 0x75, 0x1e, 0x54, 0xff, 0xb7, 0x3a, 0x6e, 0xe3, 0x1d, 0xec, 0xd8, 0x97, 0xc8, 0xb5, - 0x10, 0x93, 0x5a, 0x9f, 0x2f, 0x6c, 0x80, 0x96, 0x9f, 0xac, 0x33, 0xe9, 0xcd, 0x0b, 0x92, 0x3b, - 0xd0, 0x64, 0x5d, 0x86, 0xe2, 0x58, 0xae, 0xbd, 0x52, 0x5c, 0x6b, 0xe6, 0x95, 0x0a, 0x64, 0xc8, - 0xe0, 0xf9, 0xd6, 0x94, 0xb0, 0xc2, 0xb4, 0x83, 0xbb, 0x5d, 0x7d, 0x0b, 0x7b, 0x2b, 0x4c, 0xec, - 0x55, 0xbd, 0x0d, 0xb2, 0x6d, 0x82, 0x29, 0x1d, 0x1c, 0xae, 0x15, 0x6a, 0xe6, 0x1a, 0x18, 0x2e, - 0x2d, 0x7f, 0x24, 0x20, 0x70, 0x6b, 0xf4, 0x8f, 0x33, 0xf7, 0x40, 0x96, 0xc2, 0x3f, 0x05, 0xd9, - 0xc5, 0xd2, 0xc2, 0xc6, 0x72, 0xfe, 0x88, 0xfb, 0xe8, 0xf1, 0x37, 0x05, 0xd9, 0xa5, 0x42, 0xbd, - 0xb0, 0x9a, 0x4f, 0xbb, 0xf5, 0x28, 0x57, 0x96, 0xaa, 0x79, 0xc5, 0x4d, 0x5c, 0x2f, 0x54, 0xca, - 0xc5, 0x7c, 0x46, 0x9d, 0x86, 0x89, 0x73, 0x05, 0xad, 0x52, 0xae, 0x2c, 0xe7, 0xb3, 0xe8, 0x6f, - 0x78, 0xfc, 0x6e, 0x17, 0xf1, 0xbb, 0x2e, 0x8c, 0xa7, 0x7e, 0x90, 0xbd, 0xca, 0x87, 0xec, 0x4e, - 0x01, 0xb2, 0x1f, 0x93, 0x21, 0x32, 0x06, 0x77, 0xa6, 0x1c, 0x4c, 0xac, 0xdb, 0x56, 0x13, 0x77, - 0xbb, 0xe8, 0x57, 0xd3, 0x90, 0x2b, 0xea, 0x66, 0x13, 0xb7, 0xd1, 0x15, 0x01, 0x54, 0xd4, 0x55, - 0x34, 0xe5, 0x9f, 0x16, 0xfb, 0xc7, 0x94, 0x6c, 0xef, 0xc7, 0xe8, 0xce, 0x53, 0x9a, 0x21, 0xf2, - 0x91, 0xeb, 0xe5, 0x22, 0x49, 0x8d, 0xe1, 0x6a, 0x9c, 0x34, 0x4c, 0xb1, 0xd5, 0x80, 0xf3, 0x98, - 0x9f, 0x87, 0x7f, 0x2f, 0x25, 0x3b, 0x39, 0xf4, 0x6a, 0xe0, 0x93, 0x09, 0x91, 0x87, 0xdc, 0x44, - 0x70, 0x10, 0xb5, 0x31, 0x6c, 0x1e, 0xa6, 0x61, 0x7a, 0xc3, 0xec, 0xf6, 0x13, 0x8a, 0x7c, 0x1c, - 0x7d, 0xaf, 0x1a, 0x1c, 0xa1, 0x03, 0xc5, 0xd1, 0x1f, 0x4c, 0x2f, 0x79, 0xc1, 0x7c, 0x2f, 0x05, - 0xc7, 0x97, 0xb1, 0x89, 0x6d, 0xa3, 0x49, 0x6b, 0xe0, 0x49, 0xe2, 0x4e, 0x51, 0x12, 0x8f, 0x15, - 0x38, 0xef, 0xf7, 0x87, 0x28, 0x81, 0xd7, 0xfa, 0x12, 0xb8, 0x5b, 0x90, 0xc0, 0x4d, 0x92, 0x74, - 0xc6, 0x70, 0x1f, 0xfa, 0x14, 0xcc, 0x54, 0x2c, 0xc7, 0xd8, 0x34, 0x9a, 0xd4, 0x07, 0xed, 0x15, - 0x0a, 0x64, 0x56, 0x8d, 0xae, 0x83, 0x0a, 0x41, 0x77, 0x72, 0x0d, 0x4c, 0x1b, 0x66, 0xb3, 0xbd, - 0xdb, 0xc2, 0x1a, 0xd6, 0x69, 0xbf, 0x32, 0xa9, 0xf1, 0x49, 0xc1, 0xd6, 0xbe, 0xcb, 0x96, 0xe2, - 0x6d, 0xed, 0x7f, 0x46, 0x7a, 0x19, 0x86, 0x67, 0x81, 0x04, 0xa4, 0x0c, 0xb1, 0xbb, 0x0a, 0x30, - 0x6b, 0x72, 0x59, 0x3d, 0x83, 0xbd, 0xf7, 0x42, 0x01, 0x9e, 0x9c, 0x26, 0xfe, 0x81, 0x3e, 0x20, - 0xd5, 0x58, 0x07, 0x31, 0x14, 0x0f, 0x99, 0xa5, 0x21, 0x26, 0xc9, 0x2a, 0xcc, 0x95, 0x2b, 0xf5, - 0x92, 0x56, 0x29, 0xac, 0xb2, 0x2c, 0x0a, 0xfa, 0xb7, 0x34, 0x64, 0x35, 0xdc, 0x69, 0x5f, 0xe2, - 0x23, 0x46, 0x33, 0x47, 0xf1, 0x94, 0xef, 0x28, 0xae, 0x2e, 0x01, 0xe8, 0x4d, 0xb7, 0x60, 0x72, - 0xa5, 0x56, 0xba, 0x6f, 0x1c, 0x53, 0xa1, 0x82, 0x05, 0x3f, 0xb7, 0xc6, 0xfd, 0x89, 0x5e, 0x24, - 0xbd, 0x73, 0x24, 0x50, 0x23, 0x1c, 0x86, 0xf4, 0x09, 0x1f, 0x94, 0xda, 0xec, 0x19, 0x48, 0xee, - 0x70, 0xc4, 0xff, 0xd5, 0x34, 0x64, 0xea, 0x6e, 0x6f, 0xc9, 0x75, 0x9c, 0x7f, 0x38, 0x9c, 0x8e, - 0xbb, 0x64, 0x42, 0x74, 0xfc, 0x2e, 0x98, 0xe1, 0x35, 0x96, 0xb9, 0x4a, 0x44, 0xaa, 0xb8, 0xf0, - 0xc3, 0x30, 0x1a, 0xde, 0x87, 0x9d, 0xc3, 0x11, 0xf1, 0xa7, 0x1e, 0x07, 0xb0, 0x86, 0x77, 0xce, - 0x63, 0xbb, 0xbb, 0x6d, 0x74, 0xd0, 0xdf, 0x2a, 0x30, 0xb5, 0x8c, 0x9d, 0x9a, 0xa3, 0x3b, 0xbb, - 0xdd, 0x9e, 0xed, 0x4e, 0xd3, 0x2a, 0xea, 0xcd, 0x6d, 0xcc, 0xba, 0x23, 0xef, 0x15, 0xbd, 0x47, - 0x91, 0xf5, 0x27, 0x0a, 0xca, 0x99, 0xf7, 0xcb, 0x08, 0xc1, 0xe4, 0xf1, 0x90, 0x69, 0xe9, 0x8e, - 0xce, 0xb0, 0xb8, 0xa2, 0x07, 0x8b, 0x80, 0x90, 0x46, 0xb2, 0xa1, 0xdf, 0x4c, 0xcb, 0x38, 0x14, - 0x49, 0x94, 0x1f, 0x0f, 0x84, 0x0f, 0xa4, 0x86, 0x40, 0xe1, 0x18, 0xcc, 0x56, 0xaa, 0xf5, 0xc6, - 0x6a, 0x75, 0x79, 0xb9, 0xe4, 0xa6, 0xe6, 0x15, 0xf5, 0x24, 0xa8, 0xeb, 0x85, 0xfb, 0xd6, 0x4a, - 0x95, 0x7a, 0xa3, 0x52, 0x5d, 0x2c, 0xb1, 0x3f, 0x33, 0xea, 0x51, 0x98, 0x2e, 0x16, 0x8a, 0x2b, - 0x5e, 0x42, 0x56, 0x3d, 0x05, 0xc7, 0xd7, 0x4a, 0x6b, 0x0b, 0x25, 0xad, 0xb6, 0x52, 0x5e, 0x6f, - 0xb8, 0x64, 0x96, 0xaa, 0x1b, 0x95, 0xc5, 0x7c, 0x4e, 0x45, 0x70, 0x92, 0xfb, 0x72, 0x4e, 0xab, - 0x56, 0x96, 0x1b, 0xb5, 0x7a, 0xa1, 0x5e, 0xca, 0x4f, 0xa8, 0x97, 0xc1, 0xd1, 0x62, 0xa1, 0x42, - 0xb2, 0x17, 0xab, 0x95, 0x4a, 0xa9, 0x58, 0xcf, 0x4f, 0xa2, 0x7f, 0xcf, 0xc0, 0x74, 0xb9, 0x5b, - 0xd1, 0x77, 0xf0, 0x59, 0xbd, 0x6d, 0xb4, 0xd0, 0x0b, 0xb9, 0x99, 0xc7, 0x75, 0x30, 0x6b, 0xd3, - 0x47, 0xdc, 0xaa, 0x1b, 0x98, 0xa2, 0x39, 0xab, 0x89, 0x89, 0xee, 0x9c, 0xdc, 0x24, 0x04, 0xbc, - 0x39, 0x39, 0x7d, 0x53, 0x17, 0x00, 0xe8, 0x53, 0x3d, 0xb8, 0xdc, 0xf5, 0x4c, 0x6f, 0x6b, 0xd2, - 0x77, 0x70, 0x17, 0xdb, 0x7b, 0x46, 0x13, 0x7b, 0x39, 0x35, 0xee, 0x2f, 0xf4, 0x35, 0x45, 0x76, - 0x7f, 0x91, 0x03, 0x95, 0xab, 0x4e, 0x48, 0x6f, 0xf8, 0xf3, 0x8a, 0xcc, 0xee, 0xa0, 0x14, 0xc9, - 0x78, 0x9a, 0xf2, 0x92, 0xf4, 0x70, 0xcb, 0xb6, 0xf5, 0x6a, 0xb5, 0x51, 0x5b, 0xa9, 0x6a, 0xf5, - 0xbc, 0xa2, 0xce, 0xc0, 0xa4, 0xfb, 0xba, 0x5a, 0xad, 0x2c, 0xe7, 0x33, 0xea, 0x09, 0x38, 0xb6, - 0x52, 0xa8, 0x35, 0xca, 0x95, 0xb3, 0x85, 0xd5, 0xf2, 0x62, 0xa3, 0xb8, 0x52, 0xd0, 0x6a, 0xf9, - 0xac, 0x7a, 0x05, 0x9c, 0xa8, 0x97, 0x4b, 0x5a, 0x63, 0xa9, 0x54, 0xa8, 0x6f, 0x68, 0xa5, 0x5a, - 0xa3, 0x52, 0x6d, 0x54, 0x0a, 0x6b, 0xa5, 0x7c, 0xce, 0x6d, 0xfe, 0xe4, 0x53, 0xa0, 0x36, 0x13, - 0xfb, 0x95, 0x71, 0x32, 0x44, 0x19, 0xa7, 0x7a, 0x95, 0x11, 0x78, 0xb5, 0xd2, 0x4a, 0xb5, 0x92, - 0x76, 0xb6, 0x94, 0x9f, 0xee, 0xa7, 0x6b, 0x33, 0xea, 0x71, 0xc8, 0xbb, 0x3c, 0x34, 0xca, 0x35, - 0x2f, 0xe7, 0x62, 0x7e, 0x16, 0x7d, 0x32, 0x07, 0x27, 0x35, 0xbc, 0x65, 0x74, 0x1d, 0x6c, 0xaf, - 0xeb, 0x97, 0x76, 0xb0, 0xe9, 0x78, 0x9d, 0xfc, 0xff, 0x8a, 0xad, 0x8c, 0x6b, 0x30, 0xdb, 0xa1, - 0x34, 0xd6, 0xb0, 0xb3, 0x6d, 0xb5, 0xd8, 0x28, 0xfc, 0xd8, 0xd0, 0x9e, 0x63, 0x7e, 0x9d, 0xcf, - 0xae, 0x89, 0x7f, 0x73, 0xba, 0xad, 0x44, 0xe8, 0x76, 0x66, 0x18, 0xdd, 0x56, 0xaf, 0x82, 0xa9, - 0xdd, 0x2e, 0xb6, 0x4b, 0x3b, 0xba, 0xd1, 0xf6, 0x2e, 0xe7, 0xf4, 0x13, 0xd0, 0x3b, 0x33, 0xb2, - 0x27, 0x56, 0xb8, 0xba, 0xf4, 0x17, 0x63, 0x48, 0xdf, 0x7a, 0x1a, 0x80, 0x55, 0x76, 0xc3, 0x6e, - 0x33, 0x65, 0xe5, 0x52, 0x5c, 0xfe, 0xce, 0x1b, 0xed, 0xb6, 0x61, 0x6e, 0xf9, 0xfb, 0xfe, 0x41, - 0x02, 0x7a, 0x89, 0x22, 0x73, 0x82, 0x25, 0x2e, 0x6f, 0xf1, 0x5a, 0xd3, 0x8b, 0xd2, 0x63, 0xee, - 0x77, 0xf7, 0x37, 0x9d, 0x9c, 0x9a, 0x87, 0x19, 0x92, 0xc6, 0x5a, 0x60, 0x7e, 0xc2, 0xed, 0x83, - 0x3d, 0x72, 0x6b, 0xa5, 0xfa, 0x4a, 0x75, 0xd1, 0xff, 0x36, 0xe9, 0x92, 0x74, 0x99, 0x29, 0x54, - 0xee, 0x23, 0xad, 0x71, 0x4a, 0x7d, 0x14, 0x5c, 0xc1, 0x75, 0xd8, 0x85, 0x55, 0xad, 0x54, 0x58, - 0xbc, 0xaf, 0x51, 0x7a, 0x66, 0xb9, 0x56, 0xaf, 0x89, 0x8d, 0xcb, 0x6b, 0x47, 0xd3, 0x2e, 0xbf, - 0xa5, 0xb5, 0x42, 0x79, 0x95, 0xf5, 0xef, 0x4b, 0x55, 0x6d, 0xad, 0x50, 0xcf, 0xcf, 0xa0, 0x57, - 0x2a, 0x90, 0x5f, 0xc6, 0xce, 0xba, 0x65, 0x3b, 0x7a, 0x7b, 0xd5, 0x30, 0x2f, 0x6c, 0xd8, 0x6d, - 0x61, 0xb2, 0x29, 0x1d, 0xa6, 0x43, 0x1c, 0x22, 0x05, 0x82, 0xe1, 0x3b, 0xe2, 0x1d, 0x92, 0x2d, - 0x50, 0xa6, 0x20, 0x01, 0x3d, 0x3b, 0x2d, 0xb3, 0xdc, 0x2d, 0x5f, 0x6a, 0x3c, 0x3d, 0x79, 0xce, - 0xb8, 0xc7, 0xe7, 0x3e, 0xa8, 0xe5, 0xd0, 0xf3, 0x33, 0x30, 0xb9, 0x64, 0x98, 0x7a, 0xdb, 0x78, - 0x96, 0x10, 0xbf, 0x34, 0xe8, 0x63, 0x52, 0x11, 0x7d, 0x4c, 0x7a, 0xa8, 0xf1, 0xf3, 0x97, 0x15, - 0xd9, 0xe5, 0x05, 0x4e, 0xf6, 0x1e, 0x93, 0x21, 0x83, 0xe7, 0x47, 0xd2, 0x32, 0xcb, 0x0b, 0x83, - 0xe9, 0xc5, 0xc3, 0xf0, 0xd3, 0x3f, 0x1c, 0x36, 0x56, 0x4f, 0xfb, 0x9e, 0xec, 0xa7, 0x0a, 0x53, - 0xe8, 0x4f, 0x15, 0x40, 0xcb, 0xd8, 0x39, 0x8b, 0x6d, 0x7f, 0x2a, 0x40, 0x7a, 0x7d, 0x66, 0x6f, - 0x73, 0x4d, 0xf6, 0xad, 0x3c, 0x80, 0xe7, 0x44, 0x00, 0x0b, 0x11, 0x8d, 0x27, 0x84, 0x74, 0x48, - 0xe3, 0x2d, 0x43, 0xae, 0x4b, 0xbe, 0x33, 0x35, 0x7b, 0x42, 0xf8, 0x70, 0x49, 0x88, 0xf1, 0xd4, - 0x29, 0x61, 0x8d, 0x11, 0x40, 0xdf, 0xf7, 0x27, 0x41, 0x3f, 0x21, 0x68, 0xc7, 0xd2, 0x81, 0x99, - 0x8d, 0xa7, 0x2f, 0x76, 0xb2, 0xea, 0xd2, 0xcf, 0xbe, 0x41, 0x1f, 0xc9, 0xc2, 0xf1, 0x7e, 0xd5, - 0x41, 0xbf, 0x95, 0x12, 0x76, 0xd8, 0x31, 0x19, 0xf2, 0x53, 0x6c, 0x03, 0xd1, 0x7d, 0x51, 0x9f, - 0x04, 0x27, 0xfc, 0x65, 0xb8, 0xba, 0x55, 0xc1, 0x17, 0xbb, 0x6d, 0xec, 0x38, 0xd8, 0x26, 0x55, - 0x9b, 0xd4, 0xfa, 0x7f, 0x54, 0x9f, 0x0a, 0x97, 0x1b, 0x66, 0xd7, 0x68, 0x61, 0xbb, 0x6e, 0x74, - 0xba, 0x05, 0xb3, 0x55, 0xdf, 0x75, 0x2c, 0xdb, 0xd0, 0xd9, 0x55, 0x92, 0x93, 0x5a, 0xd8, 0x67, - 0xf5, 0x46, 0xc8, 0x1b, 0xdd, 0xaa, 0x79, 0xde, 0xd2, 0xed, 0x96, 0x61, 0x6e, 0xad, 0x1a, 0x5d, - 0x87, 0x79, 0x00, 0xef, 0x4b, 0x47, 0x7f, 0xa7, 0xc8, 0x1e, 0xa6, 0x1b, 0x00, 0x6b, 0x48, 0x87, - 0xf2, 0x02, 0x45, 0xe6, 0x78, 0x5c, 0x3c, 0xda, 0xf1, 0x94, 0xe5, 0x79, 0xe3, 0x36, 0x24, 0xfa, - 0x8f, 0xe0, 0xa4, 0x6b, 0xa1, 0xe9, 0x9e, 0x21, 0x70, 0xb6, 0xa4, 0x95, 0x97, 0xca, 0x25, 0xd7, - 0xac, 0x38, 0x01, 0xc7, 0x82, 0x6f, 0x8b, 0xf7, 0x35, 0x6a, 0xa5, 0x4a, 0x3d, 0x3f, 0xe9, 0xf6, - 0x53, 0x34, 0x79, 0xa9, 0x50, 0x5e, 0x2d, 0x2d, 0x36, 0xea, 0x55, 0xf7, 0xcb, 0xe2, 0x70, 0xa6, - 0x05, 0x7a, 0x30, 0x03, 0x47, 0x89, 0x6c, 0x2f, 0x11, 0xa9, 0xba, 0x42, 0xe9, 0xf1, 0xb5, 0xf5, - 0x01, 0x9a, 0xa2, 0xe2, 0x45, 0x9f, 0x93, 0xbe, 0x29, 0x93, 0x83, 0xb0, 0xa7, 0x8c, 0x10, 0xcd, - 0xf8, 0x5e, 0x5a, 0x26, 0x42, 0x85, 0x34, 0xd9, 0x78, 0x4a, 0xf1, 0x2f, 0xe3, 0x1e, 0x71, 0xc2, - 0xc1, 0x27, 0x56, 0x66, 0x91, 0xfc, 0xfc, 0xcc, 0xf5, 0xb2, 0x46, 0xd4, 0x61, 0x0e, 0x80, 0xa4, - 0x10, 0x0d, 0xa2, 0x7a, 0xd0, 0x77, 0xbc, 0x0a, 0xd3, 0x83, 0x42, 0xb1, 0x5e, 0x3e, 0x5b, 0x0a, - 0xd3, 0x83, 0xcf, 0x2a, 0x30, 0xb9, 0x8c, 0x1d, 0x77, 0x4e, 0xd5, 0x45, 0x4f, 0x93, 0x58, 0xff, - 0x71, 0xcd, 0x98, 0xb6, 0xd5, 0xd4, 0xdb, 0xfe, 0x32, 0x00, 0x7d, 0x43, 0xcf, 0x1d, 0xc6, 0x04, - 0xf1, 0x8a, 0x0e, 0x19, 0xaf, 0x9e, 0x02, 0x59, 0xc7, 0xfd, 0xcc, 0x96, 0xa1, 0x1f, 0x1d, 0x3a, - 0x5c, 0xb9, 0x44, 0x16, 0x75, 0x47, 0xd7, 0x68, 0x7e, 0x6e, 0x74, 0x92, 0xb4, 0x5d, 0x42, 0x18, - 0xf9, 0x61, 0xb4, 0x3f, 0xff, 0x46, 0x81, 0x13, 0xb4, 0x7d, 0x14, 0x3a, 0x9d, 0x9a, 0x63, 0xd9, - 0x58, 0xc3, 0x4d, 0x6c, 0x74, 0x9c, 0x9e, 0xf5, 0x3d, 0x9b, 0xa6, 0x7a, 0x9b, 0xcd, 0xec, 0x15, - 0xbd, 0x49, 0x91, 0x8d, 0xc1, 0xbc, 0xaf, 0x3d, 0xf6, 0x94, 0x17, 0xd2, 0xd8, 0x3f, 0x91, 0x96, - 0x89, 0xaa, 0x1c, 0x93, 0x78, 0x3c, 0xa0, 0x3e, 0x7a, 0x08, 0x40, 0x79, 0x2b, 0x37, 0x5a, 0xa9, - 0x58, 0x2a, 0xaf, 0xbb, 0x83, 0xc0, 0xd5, 0x70, 0xe5, 0xfa, 0x86, 0x56, 0x5c, 0x29, 0xd4, 0x4a, - 0x0d, 0xad, 0xb4, 0x5c, 0xae, 0xd5, 0x99, 0x53, 0x16, 0xfd, 0x6b, 0x42, 0xbd, 0x0a, 0x4e, 0xd5, - 0x36, 0x16, 0x6a, 0x45, 0xad, 0xbc, 0x4e, 0xd2, 0xb5, 0x52, 0xa5, 0x74, 0x8e, 0x7d, 0x9d, 0x44, - 0x1f, 0xca, 0xc3, 0xb4, 0x3b, 0x01, 0xa8, 0xd1, 0x79, 0x01, 0xfa, 0x76, 0x06, 0xa6, 0x35, 0xdc, - 0xb5, 0xda, 0x7b, 0x64, 0x8e, 0x30, 0xae, 0xa9, 0xc7, 0x77, 0x15, 0xd9, 0xf3, 0xdb, 0x1c, 0xb3, - 0xf3, 0x1c, 0xa3, 0xe1, 0x13, 0x4d, 0x7d, 0x4f, 0x37, 0xda, 0xfa, 0x79, 0xd6, 0xd5, 0x4c, 0x6a, - 0x41, 0x82, 0x3a, 0x0f, 0xaa, 0x75, 0xd1, 0xc4, 0x76, 0xad, 0x79, 0xb1, 0xe4, 0x6c, 0x17, 0x5a, - 0x2d, 0x1b, 0x77, 0xbb, 0x6c, 0xf5, 0xa2, 0xcf, 0x17, 0xf5, 0x06, 0x38, 0x4a, 0x52, 0xb9, 0xcc, - 0xd4, 0x41, 0xa6, 0x37, 0xd9, 0xcf, 0x59, 0x30, 0x2f, 0x79, 0x39, 0xb3, 0x5c, 0xce, 0x20, 0x99, - 0x3f, 0x2e, 0x91, 0x13, 0x4f, 0xe9, 0x5c, 0x03, 0xd3, 0xa6, 0xbe, 0x83, 0x4b, 0x0f, 0x74, 0x0c, - 0x1b, 0x77, 0x89, 0x63, 0x8c, 0xa2, 0xf1, 0x49, 0xe8, 0x23, 0x52, 0xe7, 0xcd, 0xe5, 0x24, 0x16, - 0x4f, 0xf7, 0x97, 0x87, 0x50, 0xfd, 0x3e, 0xfd, 0x8c, 0x82, 0x3e, 0xa4, 0xc0, 0x0c, 0x63, 0xaa, - 0x60, 0x5e, 0x2a, 0xb7, 0xd0, 0xd5, 0x82, 0xf1, 0xab, 0xbb, 0x69, 0x9e, 0xf1, 0x4b, 0x5e, 0xd0, - 0x2f, 0x28, 0xb2, 0xee, 0xce, 0x7d, 0x2a, 0x4e, 0xca, 0x08, 0x77, 0x1c, 0xdd, 0xb4, 0x76, 0x99, - 0xa3, 0xea, 0xa4, 0x46, 0x5f, 0x92, 0x5c, 0xd4, 0x43, 0xbf, 0x2b, 0xe5, 0x4c, 0x2d, 0x59, 0x8d, - 0x43, 0x02, 0xf0, 0x53, 0x0a, 0xcc, 0x31, 0xae, 0x6a, 0xec, 0x9c, 0x8f, 0xd4, 0x81, 0xb7, 0x5f, - 0x94, 0x36, 0x04, 0xfb, 0xd4, 0x9f, 0x95, 0xf4, 0x88, 0x01, 0xf2, 0x63, 0x52, 0xc1, 0xd1, 0xa4, - 0x2b, 0x72, 0x48, 0x50, 0xbe, 0x2b, 0x03, 0xd3, 0x1b, 0x5d, 0x6c, 0x33, 0xbf, 0x7d, 0xf4, 0x50, - 0x06, 0x94, 0x65, 0x2c, 0x6c, 0xa4, 0xbe, 0x58, 0xda, 0xc3, 0x97, 0xaf, 0x2c, 0x47, 0xd4, 0xb5, - 0x91, 0x42, 0x60, 0xbb, 0x1e, 0xe6, 0xa8, 0x48, 0x0b, 0x8e, 0xe3, 0x1a, 0x89, 0x9e, 0x37, 0x6d, - 0x4f, 0xea, 0x28, 0xb6, 0x8a, 0x48, 0x59, 0x6e, 0x96, 0xa2, 0xcb, 0xd3, 0x2a, 0xde, 0xa4, 0xf3, - 0xd9, 0x8c, 0xd6, 0x93, 0xaa, 0xde, 0x02, 0x97, 0x59, 0x1d, 0x4c, 0xcf, 0xaf, 0x70, 0x99, 0xb3, - 0x24, 0x73, 0xbf, 0x4f, 0xe8, 0xdb, 0x52, 0xbe, 0xba, 0xf2, 0xd2, 0x89, 0xa7, 0x0b, 0x9d, 0xd1, - 0x98, 0x24, 0xc7, 0x21, 0xef, 0xe6, 0x20, 0xfb, 0x2f, 0x5a, 0xa9, 0x56, 0x5d, 0x3d, 0x5b, 0xea, - 0xbf, 0x8c, 0x91, 0x45, 0xcf, 0x53, 0x60, 0x6a, 0xc1, 0xb6, 0xf4, 0x56, 0x53, 0xef, 0x3a, 0xe8, - 0xfb, 0x69, 0x98, 0x59, 0xd7, 0x2f, 0xb5, 0x2d, 0xbd, 0x45, 0xfc, 0xfb, 0x7b, 0xfa, 0x82, 0x0e, - 0xfd, 0xe4, 0xf5, 0x05, 0xec, 0x55, 0x3c, 0x18, 0xe8, 0x1f, 0xdd, 0x4b, 0xc9, 0x5c, 0xa8, 0xe9, - 0x6f, 0xf3, 0xa5, 0xfb, 0x05, 0x2b, 0xf5, 0xf8, 0x9a, 0xe7, 0x79, 0x0a, 0xb1, 0x28, 0x3f, 0x24, - 0x17, 0x7e, 0x54, 0x86, 0xe4, 0xe1, 0xec, 0xca, 0x3f, 0x7f, 0x12, 0x72, 0x8b, 0x98, 0x58, 0x71, - 0xff, 0x23, 0x0d, 0x13, 0x35, 0xec, 0x10, 0x0b, 0xee, 0x36, 0xc1, 0x53, 0xb8, 0x45, 0x32, 0x04, - 0x4e, 0xec, 0xde, 0xbb, 0x3b, 0x59, 0xe7, 0xce, 0x5b, 0x93, 0xe7, 0x18, 0x1e, 0x89, 0xb4, 0xdc, - 0x79, 0x56, 0xe6, 0x81, 0x3c, 0x12, 0x23, 0x49, 0x25, 0xef, 0x6b, 0xf5, 0x9e, 0x34, 0x73, 0xad, - 0xe2, 0x7a, 0xbd, 0xd7, 0xf1, 0xfa, 0x19, 0xe9, 0x6d, 0xc6, 0x98, 0x8f, 0x70, 0x8e, 0x7a, 0x22, - 0x4c, 0x50, 0x99, 0x7b, 0xf3, 0xd1, 0x5e, 0x3f, 0x05, 0x4a, 0x82, 0x9c, 0xbd, 0xf6, 0x72, 0x4a, - 0xba, 0xa8, 0x85, 0x17, 0x3e, 0x96, 0x18, 0x04, 0x33, 0x15, 0xec, 0x5c, 0xb4, 0xec, 0x0b, 0x35, - 0x47, 0x77, 0x30, 0xfa, 0x97, 0x34, 0x28, 0x35, 0xec, 0xf0, 0xd1, 0x4f, 0x2a, 0x70, 0x8c, 0x56, - 0x88, 0x65, 0x24, 0xfd, 0x37, 0xad, 0xc8, 0x35, 0x7d, 0x85, 0xc0, 0xe5, 0xd3, 0xf6, 0xff, 0x8a, - 0x7e, 0xb5, 0x6f, 0xd0, 0xa7, 0x74, 0x9f, 0x49, 0x03, 0x93, 0x0c, 0xcf, 0xa0, 0xab, 0x60, 0x21, - 0x7a, 0xfa, 0x61, 0x29, 0xb3, 0x5a, 0x8e, 0xe6, 0xe1, 0x74, 0x05, 0x1f, 0xbb, 0x02, 0x32, 0xc5, - 0x6d, 0xdd, 0x41, 0xef, 0x56, 0x00, 0x0a, 0xad, 0xd6, 0x1a, 0xf5, 0x01, 0xe7, 0x1d, 0xd2, 0xce, - 0xc0, 0x4c, 0x73, 0x5b, 0x0f, 0xee, 0x36, 0xa1, 0xfd, 0x81, 0x90, 0xa6, 0x3e, 0x29, 0x70, 0x26, - 0xa7, 0x52, 0x45, 0x3d, 0x30, 0xb9, 0x65, 0x30, 0xda, 0xbe, 0xa3, 0xb9, 0x18, 0x0a, 0x33, 0xf2, - 0x08, 0x9d, 0xfb, 0xfb, 0x7c, 0xc0, 0x5e, 0xf8, 0x1c, 0x8e, 0x91, 0xf6, 0x0f, 0xd8, 0x04, 0x09, - 0x31, 0x4f, 0x7a, 0xcb, 0x05, 0xf4, 0x88, 0xe6, 0x6b, 0x2c, 0xa1, 0x6b, 0xd5, 0x52, 0xcb, 0xf0, - 0x44, 0xcb, 0x02, 0x66, 0xa1, 0x17, 0xa5, 0xe2, 0xc1, 0x17, 0x2d, 0xb8, 0xbb, 0x61, 0x16, 0xb7, - 0x0c, 0x07, 0x7b, 0xb5, 0x64, 0x02, 0x8c, 0x82, 0x58, 0xfc, 0x01, 0x3d, 0x47, 0x3a, 0xe8, 0x1a, - 0x11, 0xe8, 0xfe, 0x1a, 0x85, 0xb4, 0x3f, 0xb9, 0x30, 0x6a, 0x72, 0x34, 0x93, 0x07, 0xeb, 0xb9, - 0x0a, 0x9c, 0xa8, 0x5b, 0x5b, 0x5b, 0x6d, 0xec, 0x89, 0x09, 0x53, 0xef, 0x4c, 0xa4, 0x8f, 0x12, - 0x2e, 0xb2, 0x13, 0x64, 0xdd, 0x6f, 0xf8, 0x47, 0xc9, 0xdc, 0x17, 0xf1, 0xc4, 0x54, 0xe4, 0x2c, - 0x8a, 0x88, 0xab, 0x2f, 0x9f, 0x21, 0x28, 0xc8, 0x05, 0x7c, 0x96, 0x26, 0x9b, 0x3c, 0x10, 0x5f, - 0x4a, 0xc3, 0x2c, 0xbd, 0xb9, 0xd2, 0x53, 0xd0, 0x7b, 0x47, 0x08, 0x00, 0xfa, 0x7e, 0x4a, 0xd6, - 0xcf, 0x96, 0xc8, 0x44, 0xe0, 0x24, 0x44, 0xc4, 0x72, 0x41, 0x55, 0x06, 0x92, 0x4b, 0x5e, 0xb4, - 0x7f, 0xa4, 0xc0, 0xf4, 0x32, 0xf6, 0x5a, 0x5a, 0x37, 0x76, 0x4f, 0x74, 0x06, 0x66, 0xc8, 0xf5, - 0x6d, 0x55, 0x76, 0x4c, 0x92, 0xae, 0x9a, 0x09, 0x69, 0xea, 0x75, 0x30, 0x7b, 0x1e, 0x6f, 0x5a, - 0x36, 0xae, 0x0a, 0x67, 0x29, 0xc5, 0xc4, 0x90, 0xf0, 0x74, 0x42, 0x1c, 0xb4, 0x05, 0x11, 0x9b, - 0x9b, 0xf6, 0x0b, 0x93, 0xab, 0x4a, 0xc8, 0x98, 0xf3, 0x64, 0x98, 0x64, 0xc8, 0x7b, 0x66, 0x5a, - 0x54, 0xbf, 0xe8, 0xe7, 0x45, 0x6f, 0xf4, 0x11, 0x2d, 0x09, 0x88, 0x3e, 0x21, 0x0e, 0x13, 0x63, - 0xb9, 0xdf, 0x3d, 0xcf, 0x95, 0xbf, 0x70, 0xa9, 0xdc, 0xea, 0xa2, 0xb5, 0x78, 0x98, 0x9e, 0x06, - 0xf0, 0x1b, 0x87, 0x17, 0xd6, 0x82, 0x4b, 0x11, 0x23, 0xd7, 0x47, 0x1e, 0xd4, 0xeb, 0x15, 0x07, - 0x61, 0x67, 0xc4, 0xc0, 0xc8, 0x1d, 0xf0, 0x93, 0xe1, 0x24, 0x79, 0x74, 0x3e, 0xa3, 0xc0, 0x09, - 0xff, 0xfc, 0xd1, 0xaa, 0xde, 0x0d, 0xda, 0x5d, 0x31, 0x1e, 0x44, 0xc2, 0x81, 0x0f, 0xbf, 0xb1, - 0x7c, 0x27, 0xde, 0x98, 0xd1, 0x97, 0x93, 0xd1, 0xa2, 0xa3, 0xde, 0x04, 0xc7, 0xcc, 0xdd, 0x1d, - 0x5f, 0xea, 0xa4, 0xc5, 0xb3, 0x16, 0xbe, 0xff, 0x43, 0x9c, 0x91, 0x49, 0x86, 0xf9, 0xb1, 0xcc, - 0x29, 0x85, 0x23, 0x5d, 0x8f, 0x8f, 0x05, 0x23, 0xfa, 0xe7, 0x54, 0xac, 0xde, 0x6d, 0xf0, 0x99, - 0xaf, 0x18, 0xbd, 0xd4, 0x21, 0x1e, 0xf8, 0x3a, 0x33, 0x01, 0xd9, 0xd2, 0x4e, 0xc7, 0xb9, 0x74, - 0xe6, 0x31, 0x30, 0x5b, 0x73, 0x6c, 0xac, 0xef, 0x70, 0x3b, 0x03, 0x8e, 0x75, 0x01, 0x9b, 0xde, - 0xce, 0x00, 0x79, 0xb9, 0xfd, 0x36, 0x98, 0x30, 0xad, 0x86, 0xbe, 0xeb, 0x6c, 0xab, 0x57, 0xef, - 0x3b, 0x52, 0xcf, 0xc0, 0xaf, 0xb2, 0x18, 0x46, 0x5f, 0xbb, 0x83, 0xac, 0x0d, 0xe7, 0x4c, 0xab, - 0xb0, 0xeb, 0x6c, 0x2f, 0x5c, 0xf5, 0xa9, 0xbf, 0x3e, 0x9d, 0xfa, 0xec, 0x5f, 0x9f, 0x4e, 0x7d, - 0xf5, 0xaf, 0x4f, 0xa7, 0x7e, 0xf1, 0xeb, 0xa7, 0x8f, 0x7c, 0xf6, 0xeb, 0xa7, 0x8f, 0x7c, 0xe9, - 0xeb, 0xa7, 0x8f, 0xfc, 0x44, 0xba, 0x73, 0xfe, 0x7c, 0x8e, 0x50, 0x79, 0xe2, 0xff, 0x17, 0x00, - 0x00, 0xff, 0xff, 0xd2, 0xcb, 0x15, 0x81, 0xce, 0xfe, 0x01, 0x00, + 0xea, 0xce, 0x93, 0x77, 0x65, 0x42, 0x37, 0x2f, 0x39, 0x97, 0x3a, 0x18, 0x5d, 0xd7, 0xb9, 0xb0, + 0x75, 0x73, 0xdb, 0x38, 0x7f, 0x73, 0xe7, 0xfc, 0xcd, 0x3b, 0x56, 0x0b, 0xb7, 0xfd, 0x1f, 0xc8, + 0x0b, 0xcd, 0x8e, 0x6e, 0x88, 0xca, 0xd5, 0xb6, 0x9a, 0x7a, 0xbb, 0xeb, 0x58, 0x36, 0xa6, 0x39, + 0x4f, 0x86, 0x45, 0xe2, 0x3d, 0x6c, 0x3a, 0x3e, 0x85, 0xab, 0xb6, 0x2c, 0x6b, 0xab, 0x8d, 0xbd, + 0x6f, 0xe7, 0x77, 0x37, 0x6f, 0xee, 0x3a, 0xf6, 0x6e, 0xd3, 0xa1, 0x5f, 0xaf, 0xe9, 0xfd, 0xda, + 0xc2, 0xdd, 0xa6, 0x6d, 0x74, 0x1c, 0xcb, 0xf6, 0x72, 0x9c, 0xf9, 0xea, 0x0f, 0x27, 0x40, 0xd6, + 0x3a, 0x4d, 0xf4, 0xdd, 0x09, 0x90, 0x8b, 0x9d, 0x0e, 0xfa, 0xb8, 0x04, 0xb0, 0x8c, 0x9d, 0xb3, + 0xd8, 0xee, 0x1a, 0x96, 0x89, 0x8e, 0xc2, 0x84, 0x86, 0x7f, 0x6e, 0x17, 0x77, 0x9d, 0xdb, 0xb3, + 0xcf, 0xfd, 0xa6, 0x9c, 0x41, 0x0f, 0x4b, 0x30, 0xa9, 0xe1, 0x6e, 0xc7, 0x32, 0xbb, 0x58, 0xb9, + 0x1b, 0x72, 0xd8, 0xb6, 0x2d, 0xfb, 0x54, 0xe6, 0x9a, 0xcc, 0x0d, 0xd3, 0xb7, 0xde, 0x38, 0x4f, + 0xab, 0x3f, 0xaf, 0x75, 0x9a, 0xf3, 0xc5, 0x4e, 0x67, 0x3e, 0xa4, 0x34, 0xef, 0xff, 0x34, 0xaf, + 0xba, 0x7f, 0x68, 0xde, 0x8f, 0xca, 0x29, 0x98, 0xd8, 0xf3, 0x32, 0x9c, 0x92, 0xae, 0xc9, 0xdc, + 0x30, 0xa5, 0xf9, 0xaf, 0xee, 0x97, 0x16, 0x76, 0x74, 0xa3, 0xdd, 0x3d, 0x25, 0x7b, 0x5f, 0xe8, + 0x2b, 0x7a, 0x28, 0x03, 0x39, 0x42, 0x44, 0x29, 0x41, 0xb6, 0x69, 0xb5, 0x30, 0x29, 0x7e, 0xee, + 0xd6, 0x9b, 0xc5, 0x8b, 0x9f, 0x2f, 0x59, 0x2d, 0xac, 0x91, 0x9f, 0x95, 0x6b, 0x60, 0xda, 0x17, + 0x4b, 0xc8, 0x06, 0x9b, 0x74, 0xe6, 0x56, 0xc8, 0xba, 0xf9, 0x95, 0x49, 0xc8, 0x56, 0x36, 0x56, + 0x57, 0x0b, 0x47, 0x94, 0x63, 0x30, 0xbb, 0x51, 0xb9, 0xb7, 0x52, 0x3d, 0x57, 0x69, 0xa8, 0x9a, + 0x56, 0xd5, 0x0a, 0x19, 0x65, 0x16, 0xa6, 0x16, 0x8a, 0x8b, 0x8d, 0x72, 0x65, 0x7d, 0xa3, 0x5e, + 0x90, 0xd0, 0xab, 0x64, 0x98, 0xab, 0x61, 0x67, 0x11, 0xef, 0x19, 0x4d, 0x5c, 0x73, 0x74, 0x07, + 0xa3, 0x17, 0x66, 0x02, 0x61, 0x2a, 0x1b, 0x6e, 0xa1, 0xc1, 0x27, 0x5a, 0x81, 0x27, 0xec, 0xab, + 0x00, 0x4f, 0x61, 0x9e, 0xfe, 0x3d, 0xcf, 0xa4, 0x69, 0x2c, 0x9d, 0x33, 0x8f, 0x83, 0x69, 0xe6, + 0x9b, 0x32, 0x07, 0xb0, 0x50, 0x2c, 0xdd, 0xbb, 0xac, 0x55, 0x37, 0x2a, 0x8b, 0x85, 0x23, 0xee, + 0xfb, 0x52, 0x55, 0x53, 0xe9, 0x7b, 0x06, 0x7d, 0x3f, 0xc3, 0x80, 0xb9, 0xc8, 0x83, 0x39, 0x3f, + 0x98, 0x99, 0x3e, 0x80, 0xa2, 0x37, 0x04, 0xe0, 0x2c, 0x73, 0xe0, 0x3c, 0x21, 0x19, 0xb9, 0xf4, + 0x01, 0x7a, 0x50, 0x82, 0xc9, 0xda, 0xf6, 0xae, 0xd3, 0xb2, 0x2e, 0x9a, 0x68, 0x2a, 0x40, 0x06, + 0x7d, 0x9b, 0x95, 0xc9, 0x53, 0x79, 0x99, 0xdc, 0xb0, 0xbf, 0x12, 0x94, 0x42, 0x84, 0x34, 0x5e, + 0x13, 0x48, 0xa3, 0xc8, 0x49, 0xe3, 0x71, 0xa2, 0x84, 0xd2, 0x97, 0xc3, 0xcb, 0x9e, 0x0c, 0xb9, + 0x5a, 0x47, 0x6f, 0x62, 0xf4, 0xc7, 0x32, 0xcc, 0xac, 0x62, 0x7d, 0x0f, 0x17, 0x3b, 0x1d, 0xdb, + 0xda, 0xc3, 0xa8, 0x14, 0xea, 0xeb, 0x29, 0x98, 0xe8, 0xba, 0x99, 0xca, 0x2d, 0x52, 0x83, 0x29, + 0xcd, 0x7f, 0x55, 0x4e, 0x03, 0x18, 0x2d, 0x6c, 0x3a, 0x86, 0x63, 0xe0, 0xee, 0x29, 0xe9, 0x1a, + 0xf9, 0x86, 0x29, 0x8d, 0x49, 0x41, 0xdf, 0x95, 0x44, 0x75, 0x8c, 0x70, 0x31, 0xcf, 0x72, 0x10, + 0x21, 0xd5, 0xd7, 0x49, 0x22, 0x3a, 0x36, 0x90, 0x5c, 0x32, 0xd9, 0xbe, 0x35, 0x93, 0x5c, 0xb8, + 0x6e, 0x8e, 0x4a, 0xb5, 0x51, 0xdb, 0x28, 0xad, 0x34, 0x6a, 0xeb, 0xc5, 0x92, 0x5a, 0xc0, 0xca, + 0x71, 0x28, 0x90, 0xc7, 0x46, 0xb9, 0xd6, 0x58, 0x54, 0x57, 0xd5, 0xba, 0xba, 0x58, 0xd8, 0x54, + 0x14, 0x98, 0xd3, 0xd4, 0xa7, 0x6d, 0xa8, 0xb5, 0x7a, 0x63, 0xa9, 0x58, 0x5e, 0x55, 0x17, 0x0b, + 0x5b, 0xee, 0xcf, 0xab, 0xe5, 0xb5, 0x72, 0xbd, 0xa1, 0xa9, 0xc5, 0xd2, 0x8a, 0xba, 0x58, 0xd8, + 0x56, 0x2e, 0x87, 0xcb, 0x2a, 0xd5, 0x46, 0x71, 0x7d, 0x5d, 0xab, 0x9e, 0x55, 0x1b, 0xf4, 0x8f, + 0x5a, 0xc1, 0xf0, 0x0a, 0xaa, 0x37, 0x6a, 0x2b, 0x45, 0x4d, 0x2d, 0x2e, 0xac, 0xaa, 0x85, 0xfb, + 0xd1, 0xb3, 0x64, 0x98, 0x5d, 0xd3, 0x2f, 0xe0, 0xda, 0xb6, 0x6e, 0x63, 0xfd, 0x7c, 0x1b, 0xa3, + 0x6b, 0x05, 0xf0, 0x44, 0x7f, 0xcc, 0xe2, 0xa5, 0xf2, 0x78, 0xdd, 0xdc, 0x47, 0xc0, 0x5c, 0x11, + 0x11, 0x80, 0xfd, 0xaf, 0xa0, 0x19, 0xac, 0x70, 0x80, 0x3d, 0x31, 0x21, 0xbd, 0x64, 0x88, 0xfd, + 0xc2, 0x23, 0x00, 0x31, 0xf4, 0x15, 0x19, 0xe6, 0xca, 0xe6, 0x9e, 0xe1, 0xe0, 0x65, 0x6c, 0x62, + 0xdb, 0x1d, 0x07, 0x84, 0x60, 0x78, 0x58, 0x66, 0x60, 0x58, 0xe2, 0x61, 0xb8, 0xa5, 0x8f, 0xd8, + 0xf8, 0x32, 0x22, 0x46, 0xdb, 0xab, 0x60, 0xca, 0x20, 0xf9, 0x4a, 0x46, 0x8b, 0x4a, 0x2c, 0x4c, + 0x50, 0xae, 0x83, 0x59, 0xef, 0x65, 0xc9, 0x68, 0xe3, 0x7b, 0xf1, 0x25, 0x3a, 0xee, 0xf2, 0x89, + 0xe8, 0x97, 0x83, 0xc6, 0x57, 0xe6, 0xb0, 0xfc, 0xa9, 0xa4, 0x4c, 0x25, 0x03, 0xf3, 0x25, 0x8f, + 0x84, 0xe6, 0xb7, 0xaf, 0x95, 0x19, 0xe8, 0x07, 0x12, 0x4c, 0xd7, 0x1c, 0xab, 0xe3, 0xaa, 0xac, + 0x61, 0x6e, 0x89, 0x81, 0xfb, 0x49, 0xb6, 0x8d, 0x95, 0x78, 0x70, 0x1f, 0xd7, 0x47, 0x8e, 0x4c, + 0x01, 0x11, 0x2d, 0xec, 0xbb, 0x41, 0x0b, 0x5b, 0xe2, 0x50, 0xb9, 0x35, 0x11, 0xb5, 0x1f, 0xc1, + 0xf6, 0xf5, 0x12, 0x19, 0x0a, 0xbe, 0x9a, 0x39, 0xa5, 0x5d, 0xdb, 0xc6, 0xa6, 0x23, 0x06, 0xc2, + 0x5f, 0xb2, 0x20, 0xac, 0xf0, 0x20, 0xdc, 0x1a, 0xa3, 0xcc, 0x7e, 0x29, 0x29, 0xb6, 0xb1, 0x0f, + 0x05, 0x68, 0xde, 0xcb, 0xa1, 0xf9, 0xd3, 0xc9, 0xd9, 0x4a, 0x06, 0xe9, 0xca, 0x10, 0x88, 0x1e, + 0x87, 0x82, 0x3b, 0x26, 0x95, 0xea, 0xe5, 0xb3, 0x6a, 0xa3, 0x5c, 0x39, 0x5b, 0xae, 0xab, 0x05, + 0x8c, 0x5e, 0x2c, 0xc3, 0x8c, 0xc7, 0x9a, 0x86, 0xf7, 0xac, 0x0b, 0x82, 0xbd, 0xde, 0x57, 0x12, + 0x1a, 0x0b, 0x6c, 0x09, 0x11, 0x2d, 0xe3, 0x97, 0x12, 0x18, 0x0b, 0x31, 0xe4, 0x1e, 0x49, 0xbd, + 0xd5, 0xbe, 0x66, 0xb0, 0xd5, 0xa7, 0xb5, 0xf4, 0xed, 0xad, 0x5e, 0x92, 0x05, 0xf0, 0x2a, 0x79, + 0xd6, 0xc0, 0x17, 0xd1, 0x5a, 0x88, 0x09, 0xa7, 0xb6, 0x99, 0x81, 0x6a, 0x2b, 0xf5, 0x53, 0xdb, + 0xf7, 0xb2, 0x63, 0xd6, 0x02, 0x8f, 0xde, 0x4d, 0x91, 0xe2, 0x76, 0x39, 0x89, 0x9e, 0x1d, 0xfa, + 0x8a, 0x22, 0xf1, 0x56, 0xe7, 0x55, 0x30, 0x45, 0x1e, 0x2b, 0xfa, 0x0e, 0xa6, 0x6d, 0x28, 0x4c, + 0x50, 0xce, 0xc0, 0x8c, 0x97, 0xb1, 0x69, 0x99, 0x6e, 0x7d, 0xb2, 0x24, 0x03, 0x97, 0xe6, 0x82, + 0xd8, 0xb4, 0xb1, 0xee, 0x58, 0x36, 0xa1, 0x91, 0xf3, 0x40, 0x64, 0x92, 0xd0, 0xb7, 0x82, 0x56, + 0xa8, 0x72, 0x9a, 0xf3, 0xf8, 0x24, 0x55, 0x49, 0xa6, 0x37, 0x7b, 0xc3, 0xb5, 0x3f, 0xaf, 0xd5, + 0x35, 0x5c, 0xb4, 0x97, 0xc8, 0xd4, 0x0e, 0x2b, 0x27, 0x41, 0xa1, 0xa9, 0x6e, 0xde, 0x52, 0xb5, + 0x52, 0x57, 0x2b, 0xf5, 0xc2, 0x66, 0x5f, 0x8d, 0xda, 0x42, 0xaf, 0xcb, 0x42, 0xf6, 0x1e, 0xcb, + 0x30, 0xd1, 0x83, 0x19, 0x4e, 0x25, 0x4c, 0xec, 0x5c, 0xb4, 0xec, 0x0b, 0x41, 0x43, 0x0d, 0x13, + 0xe2, 0xb1, 0x09, 0x55, 0x49, 0x1e, 0xa8, 0x4a, 0xd9, 0x7e, 0xaa, 0xf4, 0xab, 0xac, 0x2a, 0xdd, + 0xc1, 0xab, 0xd2, 0xf5, 0x7d, 0xe4, 0xef, 0x32, 0x1f, 0xd1, 0x01, 0x7c, 0x22, 0xe8, 0x00, 0xee, + 0xe2, 0x60, 0x7c, 0xac, 0x18, 0x99, 0x64, 0x00, 0x7e, 0x39, 0xd5, 0x86, 0xdf, 0x0f, 0xea, 0xad, + 0x08, 0xa8, 0xb7, 0xfb, 0xf4, 0x09, 0xc6, 0xfe, 0xae, 0xe3, 0xfe, 0xfd, 0xdd, 0xc4, 0x05, 0xe5, + 0x04, 0x1c, 0x5b, 0x2c, 0x2f, 0x2d, 0xa9, 0x9a, 0x5a, 0xa9, 0x37, 0x2a, 0x6a, 0xfd, 0x5c, 0x55, + 0xbb, 0xb7, 0xd0, 0x46, 0x0f, 0xc9, 0x00, 0xae, 0x84, 0x4a, 0xba, 0xd9, 0xc4, 0x6d, 0xb1, 0x1e, + 0xfd, 0x7f, 0x48, 0xc9, 0xfa, 0x84, 0x90, 0x7e, 0x04, 0x9c, 0xaf, 0x94, 0xc4, 0x5b, 0x65, 0x24, + 0xb1, 0x64, 0xa0, 0xbe, 0xf9, 0x91, 0x60, 0x7b, 0x5e, 0x06, 0x47, 0x7d, 0x7a, 0x34, 0x7b, 0xff, + 0x69, 0xdf, 0xdb, 0xb2, 0x30, 0x47, 0x61, 0xf1, 0xe7, 0xf1, 0xcf, 0xcd, 0x88, 0x4c, 0xe4, 0x11, + 0x4c, 0xd2, 0x69, 0xbb, 0xdf, 0xbd, 0x07, 0xef, 0xca, 0x32, 0x4c, 0x77, 0xb0, 0xbd, 0x63, 0x74, + 0xbb, 0x86, 0x65, 0x7a, 0x0b, 0x72, 0x73, 0xb7, 0x3e, 0x3a, 0x90, 0x38, 0x59, 0xbb, 0x9c, 0x5f, + 0xd7, 0x6d, 0xc7, 0x68, 0x1a, 0x1d, 0xdd, 0x74, 0xd6, 0xc3, 0xcc, 0x1a, 0xfb, 0x27, 0x7a, 0x51, + 0xc2, 0x69, 0x0d, 0x5f, 0x93, 0x08, 0x95, 0xf8, 0xbd, 0x04, 0x53, 0x92, 0x58, 0x82, 0xc9, 0xd4, + 0xe2, 0xe3, 0xa9, 0xaa, 0x45, 0x1f, 0xbc, 0xb7, 0x94, 0x2b, 0xe0, 0x44, 0xb9, 0x52, 0xaa, 0x6a, + 0x9a, 0x5a, 0xaa, 0x37, 0xd6, 0x55, 0x6d, 0xad, 0x5c, 0xab, 0x95, 0xab, 0x95, 0xda, 0x41, 0x5a, + 0x3b, 0xfa, 0x94, 0x1c, 0x68, 0xcc, 0x22, 0x6e, 0xb6, 0x0d, 0x13, 0xa3, 0xbb, 0x0e, 0xa8, 0x30, + 0xfc, 0xaa, 0x8f, 0x38, 0xce, 0xb4, 0xfc, 0x08, 0x9c, 0x5f, 0x9b, 0x1c, 0xe7, 0xfe, 0x04, 0xff, + 0x1d, 0x37, 0xff, 0xaf, 0xc8, 0x70, 0x8c, 0x69, 0x88, 0x1a, 0xde, 0x19, 0xd9, 0x4a, 0xde, 0x2f, + 0xb0, 0x6d, 0xb7, 0xcc, 0x63, 0xda, 0xcf, 0x9a, 0xde, 0xc7, 0x46, 0x04, 0xac, 0x6f, 0x0e, 0x60, + 0x5d, 0xe5, 0x60, 0x7d, 0xf2, 0x10, 0x34, 0x93, 0x21, 0xfb, 0x3b, 0xa9, 0x22, 0x7b, 0x05, 0x9c, + 0x58, 0x2f, 0x6a, 0xf5, 0x72, 0xa9, 0xbc, 0x5e, 0x74, 0xc7, 0x51, 0x66, 0xc8, 0x8e, 0x30, 0xd7, + 0x79, 0xd0, 0xfb, 0xe2, 0xfb, 0xc1, 0x2c, 0x5c, 0xd5, 0xbf, 0xa3, 0x2d, 0x6d, 0xeb, 0xe6, 0x16, + 0x46, 0x86, 0x08, 0xd4, 0x8b, 0x30, 0xd1, 0x24, 0xd9, 0x3d, 0x9c, 0xd9, 0xad, 0x9b, 0x98, 0xbe, + 0xdc, 0x2b, 0x41, 0xf3, 0x7f, 0x45, 0xef, 0x64, 0x15, 0xa2, 0xce, 0x2b, 0xc4, 0x53, 0xe3, 0xc1, + 0xdb, 0xc7, 0x77, 0x84, 0x6e, 0x7c, 0x26, 0xd0, 0x8d, 0x73, 0x9c, 0x6e, 0x94, 0x0e, 0x46, 0x3e, + 0x99, 0x9a, 0xfc, 0xd1, 0x23, 0xa1, 0x03, 0x88, 0xd4, 0x26, 0x23, 0x7a, 0x54, 0xe8, 0xdb, 0xdd, + 0xbf, 0x5a, 0x86, 0xfc, 0x22, 0x6e, 0x63, 0xd1, 0x95, 0xc8, 0xef, 0x48, 0xa2, 0x1b, 0x22, 0x1e, + 0x0c, 0x1e, 0xed, 0xe8, 0xd5, 0x11, 0xc7, 0xd8, 0xc1, 0x5d, 0x47, 0xdf, 0xe9, 0x10, 0x51, 0xcb, + 0x5a, 0x98, 0x80, 0x7e, 0x51, 0x12, 0xd9, 0x2e, 0x89, 0x29, 0xe6, 0xdf, 0xc7, 0x9a, 0xe2, 0xe7, + 0x24, 0x98, 0xac, 0x61, 0xa7, 0x6a, 0xb7, 0xb0, 0x8d, 0x6a, 0x21, 0x46, 0xd7, 0xc0, 0x34, 0x01, + 0xc5, 0x9d, 0x66, 0x06, 0x38, 0xb1, 0x49, 0xca, 0xf5, 0x30, 0x17, 0xbc, 0x92, 0xdf, 0x69, 0x37, + 0xde, 0x93, 0x8a, 0xfe, 0x31, 0x23, 0xba, 0x8b, 0x4b, 0x97, 0x0c, 0x29, 0x37, 0x11, 0xad, 0x54, + 0x6c, 0x47, 0x36, 0x96, 0x54, 0xfa, 0x1b, 0x5d, 0x6f, 0x97, 0x00, 0x36, 0xcc, 0xae, 0x2f, 0xd7, + 0xc7, 0x26, 0x90, 0x2b, 0xfa, 0xe7, 0x4c, 0xb2, 0x59, 0x4c, 0x58, 0x4e, 0x84, 0xc4, 0x5e, 0x9f, + 0x60, 0x6d, 0x21, 0x92, 0x58, 0xfa, 0x32, 0xfb, 0xfa, 0x1c, 0xe4, 0xcf, 0xe9, 0xed, 0x36, 0x76, + 0xd0, 0x37, 0x24, 0xc8, 0x97, 0x6c, 0xac, 0x3b, 0x98, 0x15, 0x1d, 0x82, 0x49, 0xdb, 0xb2, 0x9c, + 0x75, 0xdd, 0xd9, 0xa6, 0x72, 0x0b, 0xde, 0xa9, 0xc3, 0xc0, 0x6f, 0xb3, 0xdd, 0xc7, 0x5d, 0xbc, + 0xe8, 0x7e, 0x92, 0xab, 0xad, 0x57, 0xd0, 0xbc, 0x57, 0x48, 0x44, 0xff, 0x81, 0x60, 0x72, 0xc7, + 0xc4, 0x3b, 0x96, 0x69, 0x34, 0x7d, 0x9b, 0xd3, 0x7f, 0x47, 0x1f, 0x09, 0x64, 0xba, 0xc0, 0xc9, + 0x74, 0x5e, 0xb8, 0x94, 0x64, 0x02, 0xad, 0x0d, 0xd1, 0x7b, 0x5c, 0x0d, 0x57, 0x7a, 0x9d, 0x41, + 0xa3, 0x5e, 0x6d, 0x94, 0x34, 0xb5, 0x58, 0x57, 0x1b, 0xab, 0xd5, 0x52, 0x71, 0xb5, 0xa1, 0xa9, + 0xeb, 0xd5, 0x02, 0x46, 0x7f, 0x27, 0xb9, 0xc2, 0x6d, 0x5a, 0x7b, 0xd8, 0x46, 0xcb, 0x42, 0x72, + 0x8e, 0x93, 0x09, 0xc5, 0xe0, 0x57, 0x85, 0x9d, 0x36, 0xa8, 0x74, 0x28, 0x07, 0x11, 0xca, 0xfb, + 0x51, 0xa1, 0xe6, 0x1e, 0x4b, 0xea, 0x11, 0x20, 0xe9, 0xff, 0x29, 0xc1, 0x44, 0xc9, 0x32, 0xf7, + 0xb0, 0xed, 0xb0, 0xf3, 0x1d, 0x56, 0x9a, 0x19, 0x5e, 0x9a, 0xee, 0x20, 0x89, 0x4d, 0xc7, 0xb6, + 0x3a, 0xfe, 0x84, 0xc7, 0x7f, 0x45, 0x6f, 0x4c, 0x2a, 0x61, 0x5a, 0x72, 0xf4, 0xc2, 0x67, 0xff, + 0x82, 0x38, 0xf6, 0xe4, 0x9e, 0x06, 0xf0, 0x50, 0x12, 0x5c, 0xfa, 0x33, 0x90, 0x7e, 0x97, 0xf2, + 0x55, 0x19, 0x66, 0xbd, 0xc6, 0x57, 0xc3, 0xc4, 0x42, 0x43, 0x55, 0x76, 0xc9, 0xb1, 0x47, 0xf8, + 0x2b, 0x47, 0x38, 0xf1, 0xe7, 0xf5, 0x4e, 0x27, 0x58, 0x7e, 0x5e, 0x39, 0xa2, 0xd1, 0x77, 0x4f, + 0xcd, 0x17, 0xf2, 0x90, 0xd5, 0x77, 0x9d, 0x6d, 0xf4, 0x03, 0xe1, 0xc9, 0x27, 0xd7, 0x19, 0x50, + 0x7e, 0x22, 0x20, 0x39, 0x0e, 0x39, 0xc7, 0xba, 0x80, 0x7d, 0x39, 0x78, 0x2f, 0x2e, 0x1c, 0x7a, + 0xa7, 0x53, 0x27, 0x1f, 0x28, 0x1c, 0xfe, 0xbb, 0x6b, 0xeb, 0xe8, 0xcd, 0xa6, 0xb5, 0x6b, 0x3a, + 0x65, 0x7f, 0x09, 0x3a, 0x4c, 0x40, 0x5f, 0xca, 0x88, 0x4c, 0x66, 0x05, 0x18, 0x4c, 0x06, 0xd9, + 0xf9, 0x21, 0x9a, 0xd2, 0x3c, 0xdc, 0x58, 0x5c, 0x5f, 0x6f, 0xd4, 0xab, 0xf7, 0xaa, 0x95, 0xd0, + 0xf0, 0x6c, 0x94, 0x2b, 0x8d, 0xfa, 0x8a, 0xda, 0x28, 0x6d, 0x68, 0x64, 0x9d, 0xb0, 0x58, 0x2a, + 0x55, 0x37, 0x2a, 0xf5, 0x02, 0x46, 0x6f, 0x91, 0x60, 0xa6, 0xd4, 0xb6, 0xba, 0x01, 0xc2, 0x57, + 0x87, 0x08, 0x07, 0x62, 0xcc, 0x30, 0x62, 0x44, 0xff, 0x9a, 0x11, 0x75, 0x3a, 0xf0, 0x05, 0xc2, + 0x90, 0x8f, 0xe8, 0xa5, 0xde, 0x28, 0xe4, 0x74, 0x30, 0x98, 0x5e, 0xfa, 0x4d, 0xe2, 0x73, 0xb7, + 0xc3, 0x44, 0xd1, 0x53, 0x0c, 0xf4, 0xd7, 0x19, 0xc8, 0x97, 0x2c, 0x73, 0xd3, 0xd8, 0x72, 0x8d, + 0x39, 0x6c, 0xea, 0xe7, 0xdb, 0x78, 0x51, 0x77, 0xf4, 0x3d, 0x03, 0x5f, 0x24, 0x15, 0x98, 0xd4, + 0x7a, 0x52, 0x5d, 0xa6, 0x68, 0x0a, 0x3e, 0xbf, 0xbb, 0x45, 0x98, 0x9a, 0xd4, 0xd8, 0x24, 0xe5, + 0xc9, 0x70, 0xb9, 0xf7, 0xba, 0x6e, 0x63, 0x1b, 0xb7, 0xb1, 0xde, 0xc5, 0xee, 0xb4, 0xc8, 0xc4, + 0x6d, 0xa2, 0xb4, 0x93, 0x5a, 0xd4, 0x67, 0xe5, 0x0c, 0xcc, 0x78, 0x9f, 0x88, 0x29, 0xd2, 0x25, + 0x6a, 0x3c, 0xa9, 0x71, 0x69, 0xca, 0xe3, 0x20, 0x87, 0x1f, 0x70, 0x6c, 0xfd, 0x54, 0x8b, 0xe0, + 0x75, 0xf9, 0xbc, 0xe7, 0x75, 0x38, 0xef, 0x7b, 0x1d, 0xce, 0xd7, 0x88, 0x4f, 0xa2, 0xe6, 0xe5, + 0x42, 0xaf, 0x98, 0x0c, 0x0c, 0x89, 0x1f, 0x4a, 0xa1, 0x62, 0x28, 0x90, 0x35, 0xf5, 0x1d, 0x4c, + 0xf5, 0x82, 0x3c, 0x2b, 0x37, 0xc2, 0x51, 0x7d, 0x4f, 0x77, 0x74, 0x7b, 0xd5, 0x6a, 0xea, 0x6d, + 0x32, 0xf8, 0xf9, 0x2d, 0xbf, 0xf7, 0x03, 0xd9, 0x11, 0x72, 0x2c, 0x1b, 0x93, 0x5c, 0xfe, 0x8e, + 0x90, 0x9f, 0xe0, 0x52, 0x37, 0x9a, 0x96, 0x49, 0xf8, 0x97, 0x35, 0xf2, 0xec, 0x4a, 0xa5, 0x65, + 0x74, 0xdd, 0x8a, 0x10, 0x2a, 0x15, 0x6f, 0x6b, 0xa3, 0x76, 0xc9, 0x6c, 0x92, 0xdd, 0xa0, 0x49, + 0x2d, 0xea, 0xb3, 0xb2, 0x00, 0xd3, 0x74, 0x23, 0x64, 0xcd, 0xd5, 0xab, 0x3c, 0xd1, 0xab, 0x6b, + 0x78, 0x9f, 0x2e, 0x0f, 0xcf, 0xf9, 0x4a, 0x98, 0x4f, 0x63, 0x7f, 0x52, 0xee, 0x86, 0x2b, 0xe9, + 0x6b, 0x69, 0xb7, 0xeb, 0x58, 0x3b, 0x1e, 0xe8, 0x4b, 0x46, 0xdb, 0xab, 0xc1, 0x04, 0xa9, 0x41, + 0x5c, 0x16, 0xe5, 0x56, 0x38, 0xde, 0xb1, 0xf1, 0x26, 0xb6, 0xef, 0xd3, 0x77, 0x76, 0x1f, 0xa8, + 0xdb, 0xba, 0xd9, 0xed, 0x58, 0xb6, 0x73, 0x6a, 0x92, 0x30, 0xdf, 0xf7, 0x1b, 0xed, 0x28, 0x27, + 0x21, 0xef, 0x89, 0x0f, 0xbd, 0x30, 0x27, 0xec, 0xce, 0x49, 0x2b, 0x14, 0x6b, 0x9e, 0xdd, 0x02, + 0x13, 0xb4, 0x87, 0x23, 0x40, 0x4d, 0xdf, 0x7a, 0xb2, 0x67, 0x5d, 0x81, 0x52, 0xd1, 0xfc, 0x6c, + 0xca, 0x13, 0x20, 0xdf, 0x24, 0xd5, 0x22, 0x98, 0x4d, 0xdf, 0x7a, 0x65, 0xff, 0x42, 0x49, 0x16, + 0x8d, 0x66, 0x45, 0x7f, 0x21, 0x0b, 0x79, 0x80, 0xc6, 0x71, 0x9c, 0xac, 0x55, 0x7f, 0x4b, 0x1a, + 0xa2, 0xdb, 0xbc, 0x09, 0x6e, 0xa0, 0x7d, 0x22, 0xb5, 0x3f, 0x16, 0x1b, 0x0b, 0x1b, 0xfe, 0x64, + 0xd0, 0xb5, 0x4a, 0x6a, 0xf5, 0xa2, 0xe6, 0xce, 0xe4, 0x17, 0xdd, 0x49, 0xe4, 0x8d, 0x70, 0xfd, + 0x80, 0xdc, 0x6a, 0xbd, 0x51, 0x29, 0xae, 0xa9, 0x85, 0x4d, 0xde, 0xb6, 0xa9, 0xd5, 0xab, 0xeb, + 0x0d, 0x6d, 0xa3, 0x52, 0x29, 0x57, 0x96, 0x3d, 0x62, 0xae, 0x49, 0x78, 0x32, 0xcc, 0x70, 0x4e, + 0x2b, 0xd7, 0xd5, 0x46, 0xa9, 0x5a, 0x59, 0x2a, 0x2f, 0x17, 0x8c, 0x41, 0x86, 0xd1, 0xfd, 0xca, + 0x35, 0x70, 0x15, 0xc7, 0x49, 0xb9, 0x5a, 0x71, 0x67, 0xb6, 0xa5, 0x62, 0xa5, 0xa4, 0xba, 0xd3, + 0xd8, 0x0b, 0x0a, 0x82, 0x13, 0x1e, 0xb9, 0xc6, 0x52, 0x79, 0x95, 0xdd, 0x8c, 0xfa, 0x64, 0x46, + 0x39, 0x05, 0x97, 0xb1, 0xdf, 0xca, 0x95, 0xb3, 0xc5, 0xd5, 0xf2, 0x62, 0xe1, 0x0f, 0x33, 0xca, + 0x75, 0x70, 0x35, 0xf7, 0x97, 0xb7, 0xaf, 0xd4, 0x28, 0x2f, 0x36, 0xd6, 0xca, 0xb5, 0xb5, 0x62, + 0xbd, 0xb4, 0x52, 0xf8, 0x14, 0x99, 0x2f, 0x04, 0x06, 0x30, 0xe3, 0x96, 0xf9, 0x12, 0x76, 0x4c, + 0x2f, 0xf2, 0x8a, 0xfa, 0xd8, 0xbe, 0xb0, 0xc7, 0xdb, 0xb0, 0x1f, 0x0f, 0x46, 0x87, 0x45, 0x4e, + 0x85, 0x6e, 0x49, 0x40, 0x2b, 0x99, 0x0e, 0xd5, 0x87, 0x50, 0xa1, 0x6b, 0xe0, 0xaa, 0x8a, 0xea, + 0x21, 0xa5, 0xa9, 0xa5, 0xea, 0x59, 0x55, 0x6b, 0x9c, 0x2b, 0xae, 0xae, 0xaa, 0xf5, 0xc6, 0x52, + 0x59, 0xab, 0xd5, 0x0b, 0x9b, 0xe8, 0x9f, 0xa5, 0x60, 0x35, 0x87, 0x91, 0xd6, 0x5f, 0x4b, 0x49, + 0x9b, 0x75, 0xec, 0xaa, 0xcd, 0x4f, 0x41, 0xbe, 0xeb, 0xe8, 0xce, 0x6e, 0x97, 0xb6, 0xea, 0x47, + 0xf5, 0x6f, 0xd5, 0xf3, 0x35, 0x92, 0x49, 0xa3, 0x99, 0xd1, 0x5f, 0x64, 0x92, 0x34, 0xd3, 0x11, + 0x2c, 0xe8, 0x18, 0x43, 0x88, 0xf8, 0x34, 0x20, 0x5f, 0xdb, 0xcb, 0xb5, 0x46, 0x71, 0x55, 0x53, + 0x8b, 0x8b, 0xf7, 0x05, 0xcb, 0x38, 0x58, 0x39, 0x01, 0xc7, 0x36, 0x2a, 0xc5, 0x85, 0x55, 0x95, + 0x34, 0x97, 0x6a, 0xa5, 0xa2, 0x96, 0x5c, 0xb9, 0xff, 0x22, 0xd9, 0x34, 0x71, 0x2d, 0x68, 0xc2, + 0xb7, 0x6b, 0xe5, 0x30, 0xf2, 0xff, 0xa6, 0xb0, 0x6f, 0x51, 0xa8, 0x61, 0x2c, 0xad, 0xd1, 0xe2, + 0xf0, 0x25, 0x21, 0x77, 0x22, 0x21, 0x4e, 0x92, 0xe1, 0xf1, 0x9f, 0x86, 0xc0, 0xe3, 0x04, 0x1c, + 0x63, 0xf1, 0x20, 0x6e, 0x45, 0xd1, 0x30, 0x7c, 0x6d, 0x12, 0xf2, 0x35, 0xdc, 0xc6, 0x4d, 0x07, + 0xbd, 0x8d, 0x31, 0x26, 0xe6, 0x40, 0x0a, 0xdc, 0x58, 0x24, 0xa3, 0xc5, 0x4d, 0x9f, 0xa5, 0x9e, + 0xe9, 0x73, 0x8c, 0x19, 0x20, 0x27, 0x32, 0x03, 0xb2, 0x29, 0x98, 0x01, 0xb9, 0xe1, 0xcd, 0x80, + 0xfc, 0x20, 0x33, 0x00, 0xbd, 0x3e, 0x9f, 0xb4, 0x97, 0xf0, 0x44, 0x7d, 0xb8, 0x83, 0xff, 0xff, + 0xc8, 0x26, 0xe9, 0x55, 0xfa, 0x72, 0x9c, 0x4c, 0x8b, 0x7f, 0x20, 0xa7, 0xb0, 0xfc, 0xa0, 0x5c, + 0x0b, 0x57, 0x87, 0xef, 0x0d, 0xf5, 0xe9, 0xe5, 0x5a, 0xbd, 0x46, 0x46, 0xfc, 0x52, 0x55, 0xd3, + 0x36, 0xd6, 0xbd, 0x35, 0xe4, 0x93, 0xa0, 0x84, 0x54, 0xb4, 0x8d, 0x8a, 0x37, 0xbe, 0x6f, 0xf1, + 0xd4, 0x97, 0xca, 0x95, 0xc5, 0x46, 0xd0, 0x66, 0x2a, 0x4b, 0xd5, 0xc2, 0xb6, 0x3b, 0x65, 0x63, + 0xa8, 0xbb, 0x03, 0x34, 0x2d, 0xa1, 0x58, 0x59, 0x6c, 0xac, 0x55, 0xd4, 0xb5, 0x6a, 0xa5, 0x5c, + 0x22, 0xe9, 0x35, 0xb5, 0x5e, 0x30, 0xdc, 0x81, 0xa6, 0xc7, 0xa2, 0xa8, 0xa9, 0x45, 0xad, 0xb4, + 0xa2, 0x6a, 0x5e, 0x91, 0xf7, 0x2b, 0xd7, 0xc3, 0x99, 0x62, 0xa5, 0x5a, 0x77, 0x53, 0x8a, 0x95, + 0xfb, 0xea, 0xf7, 0xad, 0xab, 0x8d, 0x75, 0xad, 0x5a, 0x52, 0x6b, 0x35, 0xb7, 0x9d, 0x52, 0xfb, + 0xa3, 0xd0, 0x56, 0x9e, 0x0a, 0xb7, 0x33, 0xac, 0xa9, 0x75, 0xb2, 0x61, 0xb9, 0x56, 0x25, 0x3e, + 0x2b, 0x8b, 0x6a, 0x63, 0xa5, 0x58, 0x6b, 0x94, 0x2b, 0xa5, 0xea, 0xda, 0x7a, 0xb1, 0x5e, 0x76, + 0x9b, 0xf3, 0xba, 0x56, 0xad, 0x57, 0x1b, 0x67, 0x55, 0xad, 0x56, 0xae, 0x56, 0x0a, 0xa6, 0x5b, + 0x65, 0xa6, 0xfd, 0xfb, 0xfd, 0xb0, 0xa5, 0x5c, 0x05, 0xa7, 0xfc, 0xf4, 0xd5, 0xaa, 0x2b, 0x68, + 0xc6, 0x22, 0xe9, 0xa4, 0x6a, 0x91, 0xfc, 0x8b, 0x04, 0xd9, 0x9a, 0x63, 0x75, 0xd0, 0x4f, 0x86, + 0x1d, 0xcc, 0x69, 0x00, 0x9b, 0xec, 0x3f, 0xba, 0xb3, 0x30, 0x3a, 0x2f, 0x63, 0x52, 0xd0, 0x1f, + 0x08, 0x6f, 0x9a, 0x84, 0x7d, 0xb6, 0xd5, 0x89, 0xb0, 0x55, 0xbe, 0x2f, 0x76, 0x8a, 0x24, 0x9a, + 0x50, 0x32, 0x7d, 0xff, 0xa5, 0x61, 0xb6, 0x45, 0x10, 0x9c, 0x64, 0x60, 0x73, 0xe5, 0xef, 0xab, + 0x04, 0x56, 0x2e, 0x87, 0xcb, 0x7a, 0x94, 0x8b, 0xe8, 0xd4, 0xa6, 0xf2, 0x13, 0xf0, 0x28, 0x46, + 0xbd, 0xd5, 0xb5, 0xea, 0x59, 0x35, 0x50, 0xe4, 0xc5, 0x62, 0xbd, 0x58, 0xd8, 0x42, 0x9f, 0x93, + 0x21, 0xbb, 0x66, 0xed, 0xf5, 0xee, 0x55, 0x99, 0xf8, 0x22, 0xb3, 0x16, 0xea, 0xbf, 0xf2, 0x5e, + 0xf3, 0x42, 0x62, 0x5f, 0x8b, 0xde, 0x97, 0xfe, 0x92, 0x94, 0x44, 0xec, 0x6b, 0x07, 0xdd, 0x8c, + 0xfe, 0xfb, 0x61, 0xc4, 0x1e, 0x21, 0x5a, 0xac, 0x9c, 0x81, 0xd3, 0xe1, 0x87, 0xf2, 0xa2, 0x5a, + 0xa9, 0x97, 0x97, 0xee, 0x0b, 0x85, 0x5b, 0xd6, 0x84, 0xc4, 0x3f, 0xa8, 0x1b, 0x8b, 0x9f, 0x69, + 0x9c, 0x82, 0xe3, 0xe1, 0xb7, 0x65, 0xb5, 0xee, 0x7f, 0xb9, 0x1f, 0x3d, 0x98, 0x83, 0x19, 0xaf, + 0x5b, 0xdf, 0xe8, 0xb4, 0x74, 0x07, 0xa3, 0x27, 0x84, 0xe8, 0xde, 0x00, 0x47, 0xcb, 0xeb, 0x4b, + 0xb5, 0x9a, 0x63, 0xd9, 0xfa, 0x16, 0x2e, 0xb6, 0x5a, 0x36, 0x95, 0x56, 0x6f, 0x32, 0x7a, 0xb7, + 0xf0, 0x3a, 0x1f, 0x3f, 0x94, 0x78, 0x65, 0x46, 0xa0, 0xfe, 0x55, 0xa1, 0x75, 0x39, 0x01, 0x82, + 0xc9, 0xd0, 0xbf, 0x7f, 0xc4, 0x6d, 0x2e, 0x1a, 0x97, 0xcd, 0x33, 0xcf, 0x91, 0x60, 0xaa, 0x6e, + 0xec, 0xe0, 0x67, 0x58, 0x26, 0xee, 0x2a, 0x13, 0x20, 0x2f, 0xaf, 0xd5, 0x0b, 0x47, 0xdc, 0x07, + 0xd7, 0xa8, 0xca, 0x90, 0x07, 0xd5, 0x2d, 0xc0, 0x7d, 0x28, 0xd6, 0x0b, 0xb2, 0xfb, 0xb0, 0xa6, + 0xd6, 0x0b, 0x59, 0xf7, 0xa1, 0xa2, 0xd6, 0x0b, 0x39, 0xf7, 0x61, 0x7d, 0xb5, 0x5e, 0xc8, 0xbb, + 0x0f, 0xe5, 0x5a, 0xbd, 0x30, 0xe1, 0x3e, 0x2c, 0xd4, 0xea, 0x85, 0x49, 0xf7, 0xe1, 0x6c, 0xad, + 0x5e, 0x98, 0x72, 0x1f, 0x4a, 0xf5, 0x7a, 0x01, 0xdc, 0x87, 0x7b, 0x6a, 0xf5, 0xc2, 0xb4, 0xfb, + 0x50, 0x2c, 0xd5, 0x0b, 0x33, 0xe4, 0x41, 0xad, 0x17, 0x66, 0xdd, 0x87, 0x5a, 0xad, 0x5e, 0x98, + 0x23, 0x94, 0x6b, 0xf5, 0xc2, 0x51, 0x52, 0x56, 0xb9, 0x5e, 0x28, 0xb8, 0x0f, 0x2b, 0xb5, 0x7a, + 0xe1, 0x18, 0xc9, 0x5c, 0xab, 0x17, 0x14, 0x52, 0x68, 0xad, 0x5e, 0xb8, 0x8c, 0xe4, 0xa9, 0xd5, + 0x0b, 0xc7, 0x49, 0x11, 0xb5, 0x7a, 0xe1, 0x04, 0x61, 0x43, 0xad, 0x17, 0x4e, 0x92, 0x3c, 0x5a, + 0xbd, 0x70, 0x39, 0xf9, 0x54, 0xa9, 0x17, 0x4e, 0x11, 0xc6, 0xd4, 0x7a, 0xe1, 0x0a, 0xf2, 0xa0, + 0xd5, 0x0b, 0x88, 0x7c, 0x2a, 0xd6, 0x0b, 0x57, 0xa2, 0x47, 0xc1, 0xd4, 0x32, 0x76, 0x3c, 0x10, + 0x51, 0x01, 0xe4, 0x65, 0xec, 0xb0, 0x66, 0xfc, 0xd7, 0x65, 0xb8, 0x9c, 0x4e, 0xfd, 0x96, 0x6c, + 0x6b, 0x67, 0x15, 0x6f, 0xe9, 0xcd, 0x4b, 0xea, 0x03, 0xae, 0x09, 0xc5, 0xee, 0xcb, 0x2a, 0x90, + 0xed, 0x84, 0x9d, 0x11, 0x79, 0x8e, 0xb5, 0x38, 0xfd, 0xc5, 0x28, 0x39, 0x5c, 0x8c, 0xa2, 0x16, + 0xd9, 0x3f, 0xb1, 0x1a, 0xcd, 0xad, 0x1f, 0x67, 0x7a, 0xd6, 0x8f, 0xdd, 0x66, 0xd2, 0xc1, 0x76, + 0xd7, 0x32, 0xf5, 0x76, 0x8d, 0x6e, 0xdc, 0x7b, 0xab, 0x5e, 0xbd, 0xc9, 0xca, 0xd3, 0xfc, 0x96, + 0xe1, 0x59, 0x65, 0x4f, 0x89, 0x9b, 0xe1, 0xf6, 0x56, 0x33, 0xa2, 0x91, 0x7c, 0x2a, 0x68, 0x24, + 0x75, 0xae, 0x91, 0xdc, 0x7d, 0x00, 0xda, 0xc9, 0xda, 0x4b, 0x79, 0xb8, 0xa9, 0x45, 0xe8, 0xd6, + 0xea, 0x2f, 0x57, 0xcb, 0xe8, 0x73, 0x12, 0x9c, 0x54, 0xcd, 0x7e, 0x16, 0x3e, 0xab, 0x0b, 0x6f, + 0x61, 0xa1, 0x59, 0xe7, 0x45, 0x7a, 0x7b, 0xdf, 0x6a, 0xf7, 0xa7, 0x19, 0x21, 0xd1, 0x4f, 0x07, + 0x12, 0xad, 0x71, 0x12, 0xbd, 0x6b, 0x78, 0xd2, 0xc9, 0x04, 0x5a, 0x19, 0x69, 0x07, 0x94, 0x45, + 0xdf, 0xca, 0xc2, 0xa3, 0x3c, 0xdf, 0x1b, 0xca, 0xa1, 0xd7, 0xca, 0x8a, 0x66, 0x4b, 0xc3, 0x5d, + 0x47, 0xb7, 0x1d, 0xee, 0x3c, 0x74, 0xcf, 0x54, 0x2a, 0x93, 0xc2, 0x54, 0x4a, 0x1a, 0x38, 0x95, + 0x42, 0xef, 0x62, 0xcd, 0x87, 0x73, 0x3c, 0xc6, 0xc5, 0xfe, 0xfd, 0x7f, 0x5c, 0x0d, 0xa3, 0xa0, + 0x0e, 0xec, 0x8a, 0x9f, 0xe1, 0xa0, 0x5e, 0x3a, 0x70, 0x09, 0xc9, 0x10, 0xff, 0x83, 0xd1, 0xda, + 0x79, 0x59, 0xf6, 0x1b, 0x6f, 0x94, 0x14, 0x5a, 0xa9, 0x1a, 0xe8, 0x9f, 0x99, 0x80, 0x29, 0xd2, + 0x16, 0x56, 0x0d, 0xf3, 0x02, 0x7a, 0x48, 0x86, 0x99, 0x0a, 0xbe, 0x58, 0xda, 0xd6, 0xdb, 0x6d, + 0x6c, 0x6e, 0x61, 0xd6, 0x6c, 0x3f, 0x05, 0x13, 0x7a, 0xa7, 0x53, 0x09, 0xf7, 0x19, 0xfc, 0x57, + 0xda, 0xff, 0x7e, 0xb3, 0x6f, 0x23, 0xcf, 0xc4, 0x34, 0xf2, 0xa0, 0xdc, 0x79, 0xb6, 0xcc, 0x88, + 0x19, 0xf2, 0x35, 0x30, 0xdd, 0xf4, 0xb3, 0x04, 0xe7, 0x26, 0xd8, 0x24, 0xf4, 0xb7, 0x89, 0xba, + 0x01, 0xa1, 0xc2, 0x93, 0x29, 0x05, 0x1e, 0xb1, 0x1d, 0x72, 0x02, 0x8e, 0xd5, 0xab, 0xd5, 0xc6, + 0x5a, 0xb1, 0x72, 0x5f, 0x78, 0x5e, 0x79, 0x13, 0xbd, 0x32, 0x0b, 0x73, 0x35, 0xab, 0xbd, 0x87, + 0x43, 0x98, 0xca, 0x9c, 0x43, 0x0e, 0x2b, 0xa7, 0xcc, 0x3e, 0x39, 0x29, 0x27, 0x21, 0xaf, 0x9b, + 0xdd, 0x8b, 0xd8, 0xb7, 0x0d, 0xe9, 0x1b, 0x85, 0xf1, 0x83, 0x6c, 0x3b, 0xd6, 0x78, 0x18, 0xef, + 0x18, 0x20, 0x49, 0x9e, 0xab, 0x08, 0x20, 0xcf, 0xc0, 0x4c, 0xd7, 0xdb, 0x2c, 0xac, 0x33, 0x7b, + 0xc2, 0x5c, 0x1a, 0x61, 0xd1, 0xdb, 0xad, 0x96, 0x29, 0x8b, 0xe4, 0x0d, 0x3d, 0x14, 0x34, 0xff, + 0x0d, 0x0e, 0xe2, 0xe2, 0x41, 0x18, 0x4b, 0x06, 0xf2, 0xab, 0x47, 0x3d, 0xc3, 0x3b, 0x05, 0xc7, + 0x69, 0xab, 0x6d, 0x94, 0x56, 0x8a, 0xab, 0xab, 0x6a, 0x65, 0x59, 0x6d, 0x94, 0x17, 0xbd, 0xad, + 0x8a, 0x30, 0xa5, 0x58, 0xaf, 0xab, 0x6b, 0xeb, 0xf5, 0x5a, 0x43, 0x7d, 0x7a, 0x49, 0x55, 0x17, + 0x89, 0x4b, 0x1c, 0x39, 0xd3, 0xe2, 0x3b, 0x2f, 0x16, 0x2b, 0xb5, 0x73, 0xaa, 0x56, 0xd8, 0x3e, + 0x53, 0x84, 0x69, 0xa6, 0x9f, 0x77, 0xb9, 0x5b, 0xc4, 0x9b, 0xfa, 0x6e, 0x9b, 0xda, 0x6a, 0x85, + 0x23, 0x2e, 0x77, 0x44, 0x36, 0x55, 0xb3, 0x7d, 0xa9, 0x90, 0x51, 0x0a, 0x30, 0xc3, 0x76, 0xe9, + 0x05, 0x09, 0xbd, 0xfd, 0x2a, 0x98, 0x3a, 0x67, 0xd9, 0x17, 0x88, 0x1f, 0x17, 0x7a, 0x9f, 0x17, + 0xd7, 0xc4, 0x3f, 0x21, 0xca, 0x0c, 0xec, 0xaf, 0x16, 0xf7, 0x16, 0xf0, 0xa9, 0xcd, 0x0f, 0x3c, + 0x05, 0x7a, 0x0d, 0x4c, 0x5f, 0xf4, 0x73, 0x87, 0x2d, 0x9d, 0x49, 0x42, 0xff, 0x4d, 0x6c, 0xff, + 0x7f, 0x70, 0x91, 0xe9, 0xef, 0x4f, 0xbf, 0x4d, 0x82, 0xfc, 0x32, 0x76, 0x8a, 0xed, 0x36, 0x2b, + 0xb7, 0x97, 0x0a, 0x9f, 0xec, 0xe1, 0x2a, 0x51, 0x6c, 0xb7, 0xa3, 0x1b, 0x15, 0x23, 0x20, 0xdf, + 0x03, 0x9d, 0x4b, 0x13, 0xf4, 0x9b, 0x1b, 0x50, 0x60, 0xfa, 0x12, 0xfb, 0x88, 0x1c, 0xec, 0x71, + 0x3f, 0xcc, 0x58, 0x39, 0x8f, 0x0f, 0x63, 0xda, 0x64, 0xe2, 0xf7, 0xca, 0xfd, 0x7c, 0xca, 0xbd, + 0x30, 0xb1, 0xdb, 0xc5, 0x25, 0xbd, 0x8b, 0x09, 0x6f, 0xbd, 0x35, 0xad, 0x9e, 0xbf, 0x1f, 0x37, + 0x9d, 0xf9, 0xf2, 0x8e, 0x6b, 0x50, 0x6f, 0x78, 0x19, 0x83, 0x30, 0x31, 0xf4, 0x5d, 0xf3, 0x29, + 0xb8, 0x93, 0x92, 0x8b, 0x86, 0xb3, 0x5d, 0xda, 0xd6, 0x1d, 0xba, 0xb6, 0x1d, 0xbc, 0xa3, 0x17, + 0x0e, 0x01, 0x67, 0xec, 0x5e, 0x70, 0xe4, 0x01, 0xc1, 0xc4, 0x20, 0x8e, 0x60, 0x03, 0x77, 0x18, + 0x10, 0xff, 0x41, 0x82, 0x6c, 0xb5, 0x83, 0x4d, 0xe1, 0xd3, 0x30, 0x81, 0x6c, 0xa5, 0x1e, 0xd9, + 0x3e, 0x24, 0xee, 0x1d, 0x16, 0x54, 0xda, 0x2d, 0x39, 0x42, 0xb2, 0x37, 0x43, 0xd6, 0x30, 0x37, + 0x2d, 0x6a, 0x98, 0x5e, 0x19, 0xb1, 0x09, 0x54, 0x36, 0x37, 0x2d, 0x8d, 0x64, 0x14, 0x75, 0x0c, + 0x8b, 0x2b, 0x3b, 0x7d, 0x71, 0x7f, 0x7b, 0x12, 0xf2, 0x9e, 0x3a, 0xa3, 0x97, 0xc8, 0x20, 0x17, + 0x5b, 0xad, 0x08, 0xc1, 0x4b, 0xfb, 0x04, 0x6f, 0x91, 0xdf, 0x02, 0x4c, 0x82, 0x77, 0x3e, 0x98, + 0x89, 0x60, 0xdf, 0x4e, 0x9b, 0x54, 0xb1, 0xd5, 0x8a, 0xf6, 0x41, 0x0d, 0x0a, 0x94, 0xf8, 0x02, + 0xd9, 0x16, 0x2e, 0x8b, 0xb5, 0xf0, 0xc4, 0x03, 0x41, 0x24, 0x7f, 0xe9, 0x43, 0xf4, 0x4f, 0x12, + 0x4c, 0xac, 0x1a, 0x5d, 0xc7, 0xc5, 0xa6, 0x28, 0x82, 0xcd, 0x55, 0x30, 0xe5, 0x8b, 0xc6, 0xed, + 0xf2, 0xdc, 0xfe, 0x3c, 0x4c, 0x40, 0xaf, 0x63, 0xd1, 0xb9, 0x87, 0x47, 0xe7, 0x89, 0xf1, 0xb5, + 0xa7, 0x5c, 0x44, 0x9f, 0x32, 0x08, 0x8b, 0x95, 0x7a, 0x8b, 0xfd, 0xed, 0x40, 0xe0, 0x6b, 0x9c, + 0xc0, 0x6f, 0x1b, 0xa6, 0xc8, 0xf4, 0x85, 0xfe, 0x79, 0x09, 0xc0, 0x2d, 0x9b, 0x1e, 0xe5, 0x7a, + 0x0c, 0x77, 0x40, 0x3b, 0x46, 0xba, 0xaf, 0x64, 0xa5, 0xbb, 0xc6, 0x4b, 0xf7, 0xa7, 0x07, 0x57, + 0x35, 0xee, 0xc8, 0x96, 0x52, 0x00, 0xd9, 0x08, 0x44, 0xeb, 0x3e, 0xa2, 0xb7, 0x05, 0x42, 0x5d, + 0xe7, 0x84, 0x7a, 0xc7, 0x90, 0x25, 0xa5, 0x2f, 0xd7, 0xbf, 0x94, 0x60, 0xa2, 0x86, 0x1d, 0xb7, + 0x9b, 0x44, 0x67, 0x45, 0x7a, 0x78, 0xa6, 0x6d, 0x4b, 0x82, 0x6d, 0xfb, 0x7b, 0x19, 0xd1, 0x40, + 0x2f, 0xa1, 0x64, 0x28, 0x4f, 0x11, 0x8b, 0x07, 0x0f, 0x0b, 0x05, 0x7a, 0x19, 0x44, 0x2d, 0x7d, + 0xe9, 0xbe, 0x45, 0x0a, 0x36, 0xe6, 0xf9, 0x93, 0x16, 0xac, 0x59, 0x9c, 0xd9, 0x6f, 0x16, 0x8b, + 0x9f, 0xb4, 0x60, 0xeb, 0x18, 0xbd, 0x2b, 0x9d, 0xd8, 0xd8, 0x18, 0xc1, 0x86, 0xf1, 0x30, 0xf2, + 0x7a, 0x96, 0x0c, 0x79, 0xba, 0xb2, 0x7c, 0x57, 0xfc, 0xca, 0xf2, 0xe0, 0xa9, 0xc5, 0x7b, 0x87, + 0x30, 0xe5, 0xe2, 0x96, 0x7b, 0x03, 0x36, 0x24, 0x86, 0x8d, 0x9b, 0x20, 0x47, 0x22, 0x51, 0xd2, + 0x71, 0x2e, 0xdc, 0xeb, 0xf7, 0x49, 0xa8, 0xee, 0x57, 0xcd, 0xcb, 0x94, 0x18, 0x85, 0x11, 0xac, + 0x10, 0x0f, 0x83, 0xc2, 0xbb, 0x3e, 0x97, 0x09, 0x8c, 0x90, 0xf7, 0x66, 0xa9, 0xf9, 0xf7, 0x09, + 0x3e, 0x26, 0x46, 0xd3, 0x32, 0x1d, 0xfc, 0x00, 0xb3, 0x26, 0x1f, 0x24, 0xc4, 0x5a, 0x06, 0xa7, + 0x60, 0xc2, 0xb1, 0xd9, 0x75, 0x7a, 0xff, 0x95, 0xed, 0x71, 0x72, 0x7c, 0x8f, 0x53, 0x81, 0x33, + 0x86, 0xd9, 0x6c, 0xef, 0xb6, 0xb0, 0x86, 0xdb, 0xba, 0x5b, 0xab, 0x6e, 0xb1, 0xbb, 0x88, 0x3b, + 0xd8, 0x6c, 0x61, 0xd3, 0xf1, 0xf8, 0xf4, 0x7d, 0x72, 0x05, 0x72, 0xa2, 0x6f, 0xb0, 0x8a, 0x71, + 0x27, 0xaf, 0x18, 0x8f, 0xe9, 0x37, 0xaf, 0x88, 0x31, 0x42, 0x6f, 0x03, 0xf0, 0xea, 0x76, 0xd6, + 0xc0, 0x17, 0x69, 0x87, 0x78, 0x45, 0x8f, 0x29, 0x5a, 0x0d, 0x32, 0x68, 0x4c, 0x66, 0xf4, 0x95, + 0x40, 0x19, 0xee, 0xe6, 0x94, 0xe1, 0x26, 0x41, 0x16, 0x92, 0xe9, 0x41, 0x67, 0x88, 0xb5, 0x8e, + 0x59, 0x98, 0x0a, 0x57, 0x28, 0x65, 0xe5, 0x0a, 0x38, 0xe1, 0xfb, 0x3c, 0x54, 0x54, 0x75, 0xb1, + 0xd6, 0xd8, 0x58, 0x5f, 0xd6, 0x8a, 0x8b, 0x6a, 0x01, 0x14, 0x05, 0xe6, 0xaa, 0x0b, 0xf7, 0xa8, + 0xa5, 0x7a, 0xe0, 0xaa, 0x90, 0x45, 0x5f, 0x90, 0x20, 0x47, 0x1c, 0xca, 0xd1, 0xcf, 0x8e, 0x48, + 0x73, 0xba, 0xdc, 0x0e, 0x4f, 0x30, 0x91, 0x12, 0x8f, 0x55, 0x49, 0x85, 0x49, 0xb8, 0x3a, 0x50, + 0xac, 0xca, 0x18, 0x42, 0xe9, 0x37, 0x4f, 0xb7, 0x49, 0xd6, 0xb6, 0xad, 0x8b, 0x3f, 0xce, 0x4d, + 0xd2, 0xad, 0xff, 0x21, 0x37, 0xc9, 0x3e, 0x2c, 0x8c, 0xbd, 0x49, 0xf6, 0x69, 0x77, 0x31, 0xcd, + 0x14, 0x3d, 0x33, 0x17, 0x2c, 0xc8, 0x3c, 0x47, 0x3a, 0xd0, 0x82, 0x4c, 0x11, 0x66, 0x0d, 0xd3, + 0xc1, 0xb6, 0xa9, 0xb7, 0x97, 0xda, 0xfa, 0x96, 0x7f, 0x80, 0xbe, 0x77, 0x16, 0x5e, 0x66, 0xf2, + 0x68, 0xfc, 0x1f, 0xca, 0x69, 0x00, 0x07, 0xef, 0x74, 0xda, 0xba, 0x13, 0xaa, 0x1e, 0x93, 0xc2, + 0x6a, 0x5f, 0x96, 0xd7, 0xbe, 0x5b, 0xe0, 0x32, 0x0f, 0xb4, 0xfa, 0xa5, 0x0e, 0xde, 0x30, 0x8d, + 0x9f, 0xdb, 0x25, 0x21, 0x94, 0x3c, 0x1d, 0xed, 0xf7, 0x89, 0x5b, 0x96, 0xc8, 0xf7, 0x2c, 0x4b, + 0xfc, 0x83, 0xf0, 0xd1, 0x4c, 0xbf, 0xd5, 0x0f, 0x38, 0x9a, 0x19, 0xb4, 0x34, 0xb9, 0xa7, 0xa5, + 0x05, 0xc6, 0x42, 0x56, 0xc0, 0x58, 0x60, 0x51, 0xc9, 0x09, 0x1a, 0xda, 0xaf, 0x15, 0x3a, 0xfb, + 0x19, 0x57, 0x8d, 0x31, 0x4c, 0xe4, 0x64, 0x98, 0xf3, 0x8a, 0x5e, 0xb0, 0xac, 0x0b, 0x3b, 0xba, + 0x7d, 0x01, 0xd9, 0x07, 0x52, 0xc5, 0xd8, 0x35, 0x91, 0xc8, 0x85, 0xbe, 0x4f, 0xb3, 0xa8, 0x2f, + 0xf3, 0xa8, 0x3f, 0x3e, 0x5a, 0x5c, 0x3e, 0xcf, 0xe3, 0x59, 0x14, 0x79, 0x53, 0x80, 0xe7, 0x3d, + 0x1c, 0x9e, 0x4f, 0x4a, 0xcc, 0x60, 0xfa, 0xb8, 0xfe, 0x51, 0x80, 0xab, 0xdf, 0xd1, 0xb3, 0xf3, + 0xc9, 0x51, 0xe2, 0x8a, 0xbe, 0x3a, 0x1c, 0x76, 0x3e, 0x5f, 0x43, 0x60, 0x57, 0x00, 0xf9, 0x42, + 0xb0, 0x85, 0xe5, 0x3e, 0xb2, 0x15, 0xca, 0xa6, 0x87, 0x66, 0x04, 0xcb, 0x63, 0x41, 0xf3, 0x38, + 0xcf, 0x42, 0xb5, 0x93, 0x2a, 0xa6, 0x5f, 0x16, 0x5e, 0xa7, 0xe9, 0x2b, 0x20, 0x8f, 0xbb, 0xf1, + 0xb4, 0x4a, 0xb1, 0x45, 0x1e, 0x71, 0x36, 0xd3, 0x47, 0xf3, 0x05, 0x39, 0x98, 0xf2, 0x0f, 0xcf, + 0x92, 0xd8, 0xee, 0x01, 0x86, 0x27, 0x21, 0xdf, 0xb5, 0x76, 0xed, 0x26, 0xa6, 0x2b, 0x67, 0xf4, + 0x6d, 0x88, 0x55, 0x9e, 0x81, 0xe3, 0xf9, 0x3e, 0x93, 0x21, 0x9b, 0xd8, 0x64, 0x88, 0x36, 0x48, + 0xe3, 0x06, 0xf8, 0x17, 0x0a, 0x07, 0xe4, 0xe4, 0x30, 0xab, 0x61, 0xe7, 0x91, 0x38, 0xc6, 0x7f, + 0x58, 0x68, 0x0d, 0x61, 0x40, 0x4d, 0x92, 0xa9, 0x5c, 0x75, 0x08, 0x43, 0xf5, 0x4a, 0xb8, 0xdc, + 0xcf, 0x41, 0x2d, 0x54, 0x62, 0x91, 0x6e, 0x68, 0xab, 0x05, 0x19, 0x3d, 0x2b, 0x0b, 0x05, 0x8f, + 0xb5, 0x6a, 0x60, 0xac, 0xa1, 0x97, 0x66, 0x0e, 0xdb, 0x22, 0x8d, 0x9e, 0x62, 0x7e, 0x56, 0x12, + 0x0d, 0xfa, 0xc5, 0x09, 0x3e, 0xac, 0x5d, 0x84, 0x26, 0x0d, 0xd1, 0xcc, 0x62, 0x94, 0x0f, 0xfd, + 0x56, 0x46, 0x24, 0x86, 0x98, 0x18, 0x8b, 0xe9, 0xf7, 0x4a, 0x5f, 0xcc, 0xfa, 0x31, 0x10, 0x96, + 0x6c, 0x6b, 0x67, 0xc3, 0x6e, 0xa3, 0xff, 0x53, 0x28, 0x44, 0x63, 0x84, 0xf9, 0x2f, 0x45, 0x9b, + 0xff, 0x05, 0x90, 0x77, 0xed, 0xb6, 0x3f, 0x7c, 0xef, 0xda, 0xed, 0x21, 0x86, 0x6f, 0xe5, 0x7a, + 0x98, 0xd3, 0x5b, 0xad, 0x75, 0x7d, 0x0b, 0x97, 0xdc, 0x79, 0xb5, 0xe9, 0xd0, 0xf3, 0xd1, 0x3d, + 0xa9, 0xb1, 0x5d, 0xd1, 0x37, 0x84, 0x77, 0xe2, 0x38, 0x90, 0xa8, 0x7c, 0xc6, 0x32, 0xbc, 0xb9, + 0x43, 0x42, 0x73, 0x5b, 0x0f, 0xa3, 0x35, 0xd0, 0x37, 0xc1, 0x1d, 0x3a, 0x01, 0xbe, 0xd3, 0xd7, + 0xac, 0xdf, 0x93, 0x60, 0xc2, 0x95, 0x77, 0xb1, 0xd5, 0x42, 0x8f, 0xe6, 0x82, 0x9a, 0x44, 0xee, + 0x91, 0x3e, 0x4f, 0x78, 0x73, 0xda, 0xaf, 0xa1, 0x47, 0x3f, 0x02, 0x93, 0x50, 0x88, 0x12, 0x27, + 0x44, 0xb1, 0x3d, 0xe8, 0xd8, 0x22, 0xd2, 0x17, 0xdf, 0xa7, 0x24, 0x98, 0xf5, 0xe7, 0x11, 0x4b, + 0xd8, 0x69, 0x6e, 0xa3, 0xdb, 0x44, 0x17, 0x9a, 0x68, 0x4b, 0x93, 0x82, 0x96, 0x86, 0x7e, 0x90, + 0x49, 0xa8, 0xf2, 0x5c, 0xc9, 0x11, 0xab, 0x74, 0x89, 0x74, 0x31, 0x8e, 0x60, 0xfa, 0xc2, 0xfc, + 0x8a, 0x04, 0x50, 0xb7, 0x82, 0xb9, 0xee, 0x01, 0x24, 0xf9, 0x62, 0xe1, 0xfb, 0x12, 0x68, 0xc5, + 0xc3, 0x62, 0x93, 0xf7, 0x1c, 0x82, 0x5b, 0x6c, 0x83, 0x4a, 0x1a, 0x4b, 0x5b, 0x9f, 0x5a, 0xdc, + 0xed, 0xb4, 0x8d, 0xa6, 0xee, 0xf4, 0xee, 0x0b, 0x47, 0x8b, 0x97, 0x5c, 0x7c, 0x94, 0xc8, 0x28, + 0x0c, 0xca, 0x88, 0x90, 0xa5, 0x77, 0xd8, 0x56, 0xf2, 0x0f, 0xdb, 0x0a, 0xee, 0xf5, 0x0c, 0x20, + 0x3e, 0x06, 0xf5, 0x94, 0xe1, 0x68, 0xb5, 0x83, 0xcd, 0x05, 0x1b, 0xeb, 0xad, 0xa6, 0xbd, 0xbb, + 0x73, 0xbe, 0xcb, 0x3a, 0x35, 0xc4, 0xeb, 0x28, 0xb3, 0x74, 0x2c, 0x71, 0x4b, 0xc7, 0xe8, 0xd9, + 0xb2, 0xe8, 0xd1, 0x6f, 0x66, 0x83, 0x83, 0xe1, 0x61, 0x88, 0xa1, 0x2e, 0xd1, 0x56, 0x5c, 0xcf, + 0x2a, 0x71, 0x36, 0xc9, 0x2a, 0xf1, 0x9b, 0x85, 0x0e, 0x92, 0x0b, 0xd5, 0x6b, 0x2c, 0x3b, 0xaa, + 0x73, 0x35, 0xec, 0x44, 0xc0, 0x7b, 0x1d, 0xcc, 0x9e, 0x0f, 0xbf, 0x04, 0x10, 0xf3, 0x89, 0x7d, + 0xfc, 0x1c, 0xde, 0x92, 0x74, 0x05, 0x86, 0x67, 0x21, 0x02, 0xdd, 0x00, 0x41, 0x49, 0x64, 0x33, + 0x35, 0xd1, 0x72, 0x4a, 0x6c, 0xf9, 0xe9, 0xa3, 0xf0, 0x31, 0x09, 0xa6, 0xc9, 0x75, 0x4e, 0x0b, + 0x97, 0x88, 0x77, 0xbe, 0xa0, 0x51, 0xf2, 0x02, 0x56, 0xcc, 0x0a, 0x64, 0xdb, 0x86, 0x79, 0xc1, + 0xdf, 0x05, 0x77, 0x9f, 0xc3, 0xcb, 0x41, 0xa4, 0x3e, 0x97, 0x83, 0x04, 0xfb, 0x14, 0x41, 0xb9, + 0x07, 0xba, 0xad, 0x6e, 0x20, 0xb9, 0xf4, 0xc5, 0xf8, 0x77, 0x59, 0xc8, 0xd7, 0xb0, 0x6e, 0x37, + 0xb7, 0xd1, 0x7b, 0xa5, 0xbe, 0x53, 0x85, 0x49, 0x7e, 0xaa, 0xb0, 0x04, 0x13, 0x9b, 0x46, 0xdb, + 0xc1, 0xb6, 0xe7, 0x19, 0xc4, 0x76, 0xed, 0x5e, 0x13, 0x5f, 0x68, 0x5b, 0xcd, 0x0b, 0xf3, 0xd4, + 0x74, 0x9f, 0xf7, 0x83, 0x49, 0xcd, 0x2f, 0x91, 0x9f, 0x34, 0xff, 0x67, 0xd7, 0x20, 0xec, 0x5a, + 0xb6, 0x13, 0x15, 0x27, 0x38, 0x82, 0x4a, 0xcd, 0xb2, 0x1d, 0xcd, 0xfb, 0xd1, 0x85, 0x79, 0x73, + 0xb7, 0xdd, 0xae, 0xe3, 0x07, 0x1c, 0x7f, 0xda, 0xe6, 0xbf, 0xbb, 0xc6, 0xa2, 0xb5, 0xb9, 0xd9, + 0xc5, 0xde, 0xa2, 0x41, 0x4e, 0xa3, 0x6f, 0xca, 0x71, 0xc8, 0xb5, 0x8d, 0x1d, 0xc3, 0x9b, 0x68, + 0xe4, 0x34, 0xef, 0x45, 0xb9, 0x11, 0x0a, 0xe1, 0x1c, 0xc7, 0x63, 0xf4, 0x54, 0x9e, 0x34, 0xcd, + 0x7d, 0xe9, 0xae, 0xce, 0x5c, 0xc0, 0x97, 0xba, 0xa7, 0x26, 0xc8, 0x77, 0xf2, 0xcc, 0xbb, 0x61, + 0x8a, 0xec, 0x77, 0x78, 0x12, 0x8f, 0x9e, 0xc1, 0xda, 0xb8, 0x69, 0xd9, 0x2d, 0x5f, 0x36, 0xd1, + 0x13, 0x0c, 0x9a, 0x2f, 0xd9, 0x2e, 0x45, 0xdf, 0xc2, 0xc7, 0xe0, 0x02, 0x91, 0x77, 0xbb, 0x4d, + 0xb7, 0xe8, 0x73, 0x86, 0xb3, 0xbd, 0x86, 0x1d, 0x1d, 0xfd, 0x9d, 0xdc, 0x57, 0xe3, 0xa6, 0xff, + 0x7f, 0x8d, 0x1b, 0xa0, 0x71, 0x5e, 0x98, 0x00, 0x67, 0xd7, 0x36, 0x5d, 0x39, 0xd2, 0xc0, 0x5c, + 0x4c, 0x8a, 0x72, 0x07, 0x5c, 0x11, 0xbe, 0xf9, 0x4b, 0xa5, 0x8b, 0x74, 0xda, 0x3a, 0x45, 0xb2, + 0x47, 0x67, 0x50, 0xd6, 0xe1, 0x5a, 0xef, 0xe3, 0x4a, 0x7d, 0x6d, 0x75, 0xc5, 0xd8, 0xda, 0x6e, + 0x1b, 0x5b, 0xdb, 0x4e, 0xb7, 0x6c, 0x76, 0x1d, 0xac, 0xb7, 0xaa, 0x9b, 0x9a, 0x17, 0xe1, 0x1b, + 0x08, 0x1d, 0x91, 0xac, 0xbc, 0xe7, 0x90, 0xd8, 0xe8, 0xc6, 0x6a, 0x4a, 0x44, 0x4b, 0x79, 0x92, + 0xdb, 0x52, 0xba, 0xbb, 0xed, 0x00, 0xd3, 0xab, 0x7a, 0x30, 0x0d, 0x55, 0x7d, 0xb7, 0x4d, 0x9a, + 0x0b, 0xc9, 0x9c, 0x74, 0x9c, 0x8b, 0xe1, 0x24, 0xfd, 0x66, 0xf3, 0xff, 0xe6, 0x21, 0xb7, 0x6c, + 0xeb, 0x9d, 0x6d, 0xf4, 0x2c, 0xa6, 0x7f, 0x1e, 0x55, 0x9b, 0x08, 0xb4, 0x53, 0x1a, 0xa4, 0x9d, + 0xf2, 0x00, 0xed, 0xcc, 0x32, 0xda, 0x19, 0xbd, 0xa8, 0x7c, 0x06, 0x66, 0x9a, 0x56, 0xbb, 0x8d, + 0x9b, 0xae, 0x3c, 0xca, 0x2d, 0xb2, 0x9a, 0x33, 0xa5, 0x71, 0x69, 0x24, 0xe0, 0x1e, 0x76, 0x6a, + 0xde, 0x1a, 0xba, 0xa7, 0xf4, 0x61, 0x02, 0x7a, 0xa9, 0x04, 0x59, 0xb5, 0xb5, 0x85, 0xb9, 0x75, + 0xf6, 0x0c, 0xb3, 0xce, 0x7e, 0x12, 0xf2, 0x8e, 0x6e, 0x6f, 0x61, 0xc7, 0x5f, 0x27, 0xf0, 0xde, + 0x82, 0x38, 0x80, 0x32, 0x13, 0x07, 0xf0, 0xa7, 0x21, 0xeb, 0xca, 0x8c, 0x46, 0xd8, 0xb9, 0xb6, + 0x1f, 0xfc, 0x44, 0xf6, 0xf3, 0x6e, 0x89, 0xf3, 0x6e, 0xad, 0x35, 0xf2, 0x43, 0x2f, 0xd6, 0xb9, + 0x7d, 0x58, 0x93, 0xcb, 0x8a, 0x9a, 0x96, 0x59, 0xde, 0xd1, 0xb7, 0x30, 0xad, 0x66, 0x98, 0xe0, + 0x7f, 0x55, 0x77, 0xac, 0xfb, 0x0d, 0x1a, 0x92, 0x2f, 0x4c, 0x70, 0xab, 0xb0, 0x6d, 0xb4, 0x5a, + 0xd8, 0xa4, 0x2d, 0x9b, 0xbe, 0x9d, 0x39, 0x0d, 0x59, 0x97, 0x07, 0x57, 0x7f, 0x5c, 0x63, 0xa1, + 0x70, 0x44, 0x99, 0x71, 0x9b, 0x95, 0xd7, 0x78, 0x0b, 0x19, 0x7e, 0x4d, 0x55, 0xc4, 0x6d, 0xc7, + 0xab, 0x5c, 0xff, 0xc6, 0xf5, 0x38, 0xc8, 0x99, 0x56, 0x0b, 0x0f, 0x1c, 0x84, 0xbc, 0x5c, 0xca, + 0x13, 0x21, 0x87, 0x5b, 0x6e, 0xaf, 0x20, 0x93, 0xec, 0xa7, 0xe3, 0x65, 0xa9, 0x79, 0x99, 0x93, + 0xf9, 0x06, 0xf5, 0xe3, 0x36, 0xfd, 0x06, 0xf8, 0xcb, 0x13, 0x70, 0xd4, 0xeb, 0x03, 0x6a, 0xbb, + 0xe7, 0x5d, 0x52, 0xe7, 0x31, 0x7a, 0xb8, 0xff, 0xc0, 0x75, 0x94, 0x57, 0xf6, 0xe3, 0x90, 0xeb, + 0xee, 0x9e, 0x0f, 0x8c, 0x50, 0xef, 0x85, 0x6d, 0xba, 0xd2, 0x48, 0x86, 0x33, 0x79, 0xd8, 0xe1, + 0x8c, 0x1b, 0x9a, 0x64, 0xbf, 0xf1, 0x87, 0x03, 0x59, 0x9e, 0x24, 0xfb, 0x03, 0x59, 0xbf, 0x61, + 0xe8, 0x14, 0x4c, 0xe8, 0x9b, 0x0e, 0xb6, 0x43, 0x33, 0x91, 0xbe, 0xba, 0x43, 0xe5, 0x79, 0xbc, + 0x69, 0xd9, 0xae, 0x58, 0xa6, 0xbc, 0xa1, 0xd2, 0x7f, 0x67, 0x5a, 0x2e, 0x70, 0x3b, 0x64, 0x37, + 0xc1, 0x31, 0xd3, 0x5a, 0xc4, 0x1d, 0x2a, 0x67, 0x0f, 0xc5, 0x59, 0xd2, 0x02, 0xf6, 0x7f, 0xd8, + 0xd7, 0x95, 0xcc, 0xed, 0xef, 0x4a, 0xd0, 0x67, 0x92, 0xce, 0x99, 0x7b, 0x80, 0x1e, 0x99, 0x85, + 0xa6, 0x3c, 0x05, 0x66, 0x5a, 0xd4, 0x45, 0xab, 0x69, 0x04, 0xad, 0x24, 0xf2, 0x3f, 0x2e, 0x73, + 0xa8, 0x48, 0x59, 0x56, 0x91, 0x96, 0x61, 0x92, 0x1c, 0xc8, 0x71, 0x35, 0x29, 0xd7, 0x13, 0xaf, + 0x90, 0x4c, 0xeb, 0x82, 0x4a, 0x31, 0x62, 0x9b, 0x2f, 0xd1, 0x5f, 0xb4, 0xe0, 0xe7, 0x64, 0xb3, + 0xef, 0x78, 0x09, 0xa5, 0xdf, 0x1c, 0x7f, 0x3b, 0x0f, 0x57, 0x94, 0x6c, 0xab, 0xdb, 0x25, 0x51, + 0x28, 0x7a, 0x1b, 0xe6, 0x1b, 0x25, 0x2e, 0x22, 0xf0, 0x23, 0xba, 0xf9, 0xf5, 0x6b, 0x50, 0xe3, + 0x6b, 0x1a, 0xdf, 0x10, 0x3e, 0xca, 0x1c, 0xec, 0x3f, 0x44, 0x08, 0xfd, 0xc7, 0xa3, 0x91, 0xbc, + 0x2b, 0x23, 0x72, 0xba, 0x3a, 0xa1, 0xac, 0xd2, 0x6f, 0x2e, 0x5f, 0x96, 0xe0, 0xca, 0x5e, 0x6e, + 0x36, 0xcc, 0x6e, 0xd0, 0x60, 0xae, 0x1e, 0xd0, 0x5e, 0xf8, 0xd3, 0xb8, 0xb1, 0x77, 0xf1, 0x44, + 0xd4, 0x9d, 0x29, 0x2d, 0x62, 0xb1, 0xe4, 0x3d, 0x19, 0x91, 0xbb, 0x78, 0x12, 0x93, 0x4f, 0x5f, + 0xb8, 0x9f, 0xcd, 0xc2, 0xd1, 0x65, 0xdb, 0xda, 0xed, 0x74, 0xc3, 0x1e, 0xe8, 0xaf, 0xfb, 0x6f, + 0xb8, 0xe6, 0x45, 0x4c, 0x83, 0x6b, 0x60, 0xda, 0xa6, 0xd6, 0x5c, 0xb8, 0xfd, 0xca, 0x26, 0xb1, + 0xbd, 0x97, 0x7c, 0x90, 0xde, 0x2b, 0xec, 0x67, 0xb2, 0x5c, 0x3f, 0xd3, 0xdb, 0x73, 0xe4, 0xfa, + 0xf4, 0x1c, 0x7f, 0x25, 0x25, 0x1c, 0x54, 0x7b, 0x44, 0x14, 0xd1, 0x5f, 0x94, 0x20, 0xbf, 0x45, + 0x32, 0xd2, 0xee, 0xe2, 0xb1, 0x62, 0x35, 0x23, 0xc4, 0x35, 0xfa, 0x6b, 0x28, 0x57, 0x99, 0xd5, + 0xe1, 0x44, 0x03, 0x5c, 0x3c, 0xb7, 0xe9, 0x2b, 0xd5, 0x43, 0x59, 0x98, 0x09, 0x4a, 0x2f, 0xb7, + 0xba, 0xe8, 0x05, 0xfd, 0x35, 0x6a, 0x56, 0x44, 0xa3, 0xf6, 0xad, 0x33, 0x07, 0xa3, 0x8e, 0xcc, + 0x8c, 0x3a, 0x7d, 0x47, 0x97, 0x99, 0x88, 0xd1, 0x05, 0x3d, 0x53, 0x16, 0x8d, 0xa9, 0xcf, 0x77, + 0xad, 0xa4, 0x36, 0x8f, 0xe4, 0xc1, 0x42, 0x30, 0xb2, 0xff, 0xe0, 0x5a, 0xa5, 0xaf, 0x24, 0x1f, + 0x90, 0xe0, 0xd8, 0xfe, 0xce, 0xfc, 0x27, 0x78, 0x2f, 0x34, 0xb7, 0x4e, 0xdd, 0xc0, 0x0b, 0x8d, + 0xbc, 0xf1, 0x9b, 0x74, 0xb1, 0x47, 0x63, 0x39, 0x7b, 0x6f, 0x70, 0x27, 0x2e, 0x76, 0xf8, 0x55, + 0x90, 0x68, 0xfa, 0x02, 0xfc, 0x35, 0x19, 0xa6, 0x6a, 0xd8, 0x59, 0xd5, 0x2f, 0x59, 0xbb, 0x0e, + 0xd2, 0x45, 0xb7, 0xe7, 0x9e, 0x0c, 0xf9, 0x36, 0xf9, 0x85, 0x5e, 0x55, 0x7a, 0x4d, 0xdf, 0xfd, + 0x2d, 0xe2, 0xfb, 0xe3, 0x91, 0xd6, 0x68, 0x7e, 0xfe, 0x4c, 0xb2, 0xc8, 0xee, 0x68, 0xc0, 0xdd, + 0x48, 0xb6, 0x76, 0x12, 0xed, 0x9d, 0x46, 0x15, 0x9d, 0x3e, 0x2c, 0xcf, 0x96, 0x61, 0xb6, 0x86, + 0x9d, 0x72, 0x77, 0x49, 0xdf, 0xb3, 0x6c, 0xc3, 0xc1, 0xec, 0x5d, 0x45, 0xf1, 0xd0, 0x9c, 0x06, + 0x30, 0x82, 0xdf, 0x68, 0xa4, 0x04, 0x26, 0x05, 0xfd, 0x56, 0x52, 0x47, 0x21, 0x8e, 0x8f, 0x91, + 0x80, 0x90, 0xc8, 0xc7, 0x22, 0xae, 0xf8, 0xf4, 0x81, 0xf8, 0x92, 0x44, 0x81, 0x28, 0xda, 0xcd, + 0x6d, 0x63, 0x0f, 0xb7, 0x12, 0x02, 0xe1, 0xff, 0x16, 0x02, 0x11, 0x10, 0x4a, 0xec, 0xbe, 0xc2, + 0xf1, 0x31, 0x0a, 0xf7, 0x95, 0x38, 0x82, 0x63, 0x09, 0x76, 0xe0, 0x76, 0x3d, 0x74, 0x3d, 0xf3, + 0x2e, 0x51, 0xb1, 0x86, 0x26, 0x9b, 0xc4, 0x9a, 0x6c, 0x43, 0x75, 0x2c, 0x5e, 0xd9, 0x83, 0x74, + 0x3a, 0x9b, 0x46, 0xc7, 0xd2, 0xb7, 0xe8, 0xf4, 0x85, 0xfe, 0x1e, 0x19, 0x4e, 0x04, 0xa7, 0x80, + 0x6b, 0xd8, 0x59, 0xd4, 0xbb, 0xdb, 0xe7, 0x2d, 0xdd, 0x6e, 0xb1, 0x57, 0xd8, 0x0e, 0x7d, 0xe2, + 0x0f, 0x7d, 0x91, 0x05, 0xa1, 0xc2, 0x83, 0xd0, 0xd7, 0x55, 0xb4, 0x2f, 0x2f, 0xa3, 0xe8, 0x64, + 0x62, 0xbd, 0x59, 0x7f, 0x27, 0x00, 0xeb, 0x69, 0x1c, 0x58, 0x77, 0x0e, 0xcb, 0x62, 0xfa, 0xc0, + 0xfd, 0xa6, 0x37, 0x22, 0x30, 0x5e, 0xcd, 0xf7, 0x89, 0x02, 0x16, 0xe1, 0xd5, 0x2a, 0x47, 0x7a, + 0xb5, 0x0e, 0x35, 0x46, 0x0c, 0xf4, 0x48, 0x4e, 0x77, 0x8c, 0x38, 0x44, 0x6f, 0xe3, 0x77, 0xc8, + 0x50, 0x20, 0x61, 0x20, 0x18, 0x8f, 0x6f, 0x74, 0xbf, 0x28, 0x3a, 0xfb, 0xbc, 0xcb, 0x27, 0x92, + 0x7a, 0x97, 0xa3, 0xb7, 0x27, 0xf5, 0x21, 0xef, 0xe5, 0x76, 0x24, 0x88, 0x25, 0x72, 0x11, 0x1f, + 0xc0, 0x41, 0xfa, 0xa0, 0xfd, 0x57, 0x19, 0xc0, 0x6d, 0xd0, 0xf4, 0xec, 0xc3, 0xd3, 0x45, 0xe1, + 0xba, 0x99, 0xf5, 0xab, 0x77, 0x81, 0x3a, 0xd1, 0x03, 0x94, 0x47, 0x31, 0x3c, 0x55, 0xf1, 0x70, + 0x52, 0xdf, 0xca, 0x90, 0xab, 0x91, 0xc0, 0x92, 0xc8, 0xdb, 0x32, 0xb2, 0xec, 0xf4, 0x01, 0xf9, + 0xef, 0x12, 0xe4, 0xea, 0x56, 0x0d, 0x3b, 0x07, 0x37, 0x05, 0x12, 0x1f, 0xdb, 0x27, 0xe5, 0x8e, + 0xe2, 0xd8, 0x7e, 0x3f, 0x42, 0xe9, 0x8b, 0xee, 0xdd, 0x12, 0xcc, 0xd4, 0xad, 0x52, 0xb0, 0x38, + 0x25, 0xee, 0xab, 0x2a, 0x7e, 0x2f, 0x60, 0x50, 0xc1, 0xb0, 0x98, 0x03, 0xdd, 0x0b, 0x38, 0x98, + 0x5e, 0xfa, 0x72, 0xbb, 0x0d, 0x8e, 0x6e, 0x98, 0x2d, 0x4b, 0xc3, 0x2d, 0x8b, 0xae, 0x74, 0x2b, + 0x0a, 0x64, 0x77, 0xcd, 0x96, 0x45, 0x58, 0xce, 0x69, 0xe4, 0xd9, 0x4d, 0xb3, 0x71, 0xcb, 0xa2, + 0xbe, 0x01, 0xe4, 0x19, 0x7d, 0x43, 0x86, 0xac, 0xfb, 0xaf, 0xb8, 0xa8, 0xdf, 0x21, 0x27, 0x0c, + 0x44, 0xe0, 0x92, 0x1f, 0x89, 0x25, 0x74, 0x17, 0xb3, 0xf6, 0xef, 0x79, 0xb0, 0x5e, 0x1b, 0x55, + 0x1e, 0x23, 0x8a, 0x70, 0xcd, 0x5f, 0x39, 0x05, 0x13, 0xe7, 0xdb, 0x56, 0xf3, 0x42, 0x78, 0x5e, + 0x9e, 0xbe, 0x2a, 0x37, 0x42, 0xce, 0xd6, 0xcd, 0x2d, 0x4c, 0xf7, 0x14, 0x8e, 0xf7, 0xf4, 0x85, + 0xc4, 0xeb, 0x45, 0xf3, 0xb2, 0xa0, 0xb7, 0x27, 0x09, 0x81, 0xd0, 0xa7, 0xf2, 0xc9, 0xf4, 0x61, + 0x71, 0x88, 0x93, 0x65, 0x05, 0x98, 0x29, 0x15, 0xbd, 0x1b, 0x38, 0xd7, 0xaa, 0x67, 0xd5, 0x82, + 0x4c, 0x60, 0x76, 0x65, 0x92, 0x22, 0xcc, 0x2e, 0xf9, 0x1f, 0x5b, 0x98, 0xfb, 0x54, 0xfe, 0x30, + 0x60, 0xfe, 0x94, 0x04, 0xb3, 0xab, 0x46, 0xd7, 0x89, 0xf2, 0xf6, 0x8f, 0x89, 0x02, 0xf7, 0xc2, + 0xa4, 0xa6, 0x32, 0x57, 0x8e, 0x70, 0xf8, 0xb7, 0x44, 0xe6, 0x70, 0x5c, 0x11, 0xe3, 0x39, 0x96, + 0x42, 0x38, 0xf0, 0x6e, 0xcd, 0x13, 0x96, 0x64, 0x62, 0x43, 0x29, 0x2c, 0x64, 0xfc, 0x86, 0x52, + 0x64, 0xd9, 0xe9, 0xcb, 0xf7, 0x1b, 0x12, 0x1c, 0x73, 0x8b, 0x8f, 0x5b, 0x96, 0x8a, 0x16, 0xf3, + 0xc0, 0x65, 0xa9, 0xc4, 0x2b, 0xe3, 0xfb, 0x78, 0x19, 0xc5, 0xca, 0xf8, 0x20, 0xa2, 0x63, 0x16, + 0x73, 0xc4, 0x32, 0xec, 0x20, 0x31, 0xc7, 0x2c, 0xc3, 0x0e, 0x2f, 0xe6, 0xf8, 0xa5, 0xd8, 0x21, + 0xc5, 0x7c, 0x68, 0x0b, 0xac, 0xaf, 0x97, 0x03, 0x31, 0x47, 0xae, 0x6d, 0xc4, 0x88, 0x39, 0xf1, + 0x89, 0x5d, 0xf4, 0xce, 0x21, 0x05, 0x3f, 0xe2, 0xf5, 0x8d, 0x61, 0x60, 0x3a, 0xc4, 0x35, 0x8e, + 0x97, 0xc9, 0x30, 0x47, 0xb9, 0xe8, 0x3f, 0x65, 0x8e, 0xc1, 0x28, 0xf1, 0x94, 0x39, 0xf1, 0x19, + 0x20, 0x9e, 0xb3, 0xf1, 0x9f, 0x01, 0x8a, 0x2d, 0x3f, 0x7d, 0x70, 0xbe, 0x99, 0x85, 0x93, 0x2e, + 0x0b, 0x6b, 0x56, 0xcb, 0xd8, 0xbc, 0xe4, 0x71, 0x71, 0x56, 0x6f, 0xef, 0xe2, 0x2e, 0x7a, 0x9f, + 0x24, 0x8a, 0xd2, 0x7f, 0x04, 0xb0, 0x3a, 0xd8, 0xf6, 0x02, 0xa9, 0x51, 0xa0, 0xee, 0x88, 0xaa, + 0xec, 0xfe, 0x92, 0x82, 0xa0, 0xe8, 0x55, 0x9f, 0x88, 0xc6, 0xd0, 0x73, 0xad, 0xc2, 0xa9, 0xe0, + 0x4b, 0xaf, 0x83, 0x47, 0x66, 0xbf, 0x83, 0xc7, 0x0d, 0x20, 0xeb, 0xad, 0x56, 0x00, 0x55, 0xef, + 0x66, 0x36, 0x29, 0x53, 0x73, 0xb3, 0xb8, 0x39, 0xbb, 0x38, 0x3c, 0x9a, 0x17, 0x91, 0xb3, 0x8b, + 0x1d, 0x65, 0x1e, 0xf2, 0xde, 0x0d, 0x82, 0xc1, 0x8a, 0x7e, 0xff, 0xcc, 0x34, 0x17, 0x6f, 0xda, + 0x55, 0x79, 0x35, 0xbc, 0x2d, 0x91, 0x64, 0xfa, 0xf5, 0xd3, 0xa1, 0x9d, 0xac, 0x71, 0x0a, 0xf6, + 0xd4, 0xa1, 0x29, 0x8f, 0x67, 0x37, 0xac, 0xd8, 0xe9, 0xb4, 0x2f, 0xd5, 0x69, 0xf0, 0x95, 0x44, + 0xbb, 0x61, 0x4c, 0x0c, 0x17, 0xa9, 0x37, 0x86, 0x4b, 0xf2, 0xdd, 0x30, 0x8e, 0x8f, 0x51, 0xec, + 0x86, 0xc5, 0x11, 0x1c, 0xc3, 0x7a, 0x64, 0xce, 0xb3, 0x9a, 0x69, 0x8c, 0xda, 0x37, 0xf5, 0x3f, + 0x84, 0x06, 0xbc, 0xb3, 0x4b, 0xbf, 0xf0, 0xb5, 0xb1, 0xb1, 0xb9, 0x95, 0x27, 0x42, 0x7e, 0xd3, + 0xb2, 0x77, 0x74, 0x7f, 0xe3, 0xbe, 0xf7, 0xa4, 0x08, 0x8d, 0x0b, 0xbb, 0x44, 0xf2, 0x68, 0x34, + 0xaf, 0x3b, 0x1f, 0x79, 0x86, 0xd1, 0xa1, 0x51, 0x17, 0xdd, 0x47, 0xe5, 0x3a, 0x98, 0xa5, 0xc1, + 0x17, 0x2b, 0xb8, 0xeb, 0xe0, 0x16, 0x8d, 0x58, 0xc1, 0x27, 0x2a, 0x67, 0x60, 0x86, 0x26, 0x2c, + 0x19, 0x6d, 0xdc, 0xa5, 0x41, 0x2b, 0xb8, 0x34, 0xe5, 0x24, 0xe4, 0x8d, 0xee, 0x3d, 0x5d, 0xcb, + 0x24, 0xfe, 0xff, 0x93, 0x1a, 0x7d, 0x53, 0x6e, 0x80, 0xa3, 0x34, 0x5f, 0x60, 0xac, 0x7a, 0x07, + 0x76, 0x7a, 0x93, 0xd1, 0xe7, 0x86, 0x99, 0x38, 0x24, 0x8e, 0xc7, 0xeb, 0xa2, 0xb0, 0xdb, 0x6c, + 0x62, 0xdc, 0xa2, 0x27, 0x9b, 0xfc, 0xd7, 0x84, 0x91, 0x7a, 0x13, 0x4f, 0x33, 0x0e, 0x29, 0x54, + 0xef, 0x47, 0x4e, 0x40, 0xde, 0xbb, 0xf6, 0x02, 0xbd, 0x64, 0xae, 0xaf, 0x32, 0xce, 0xf1, 0xca, + 0xb8, 0x01, 0x33, 0xa6, 0xe5, 0x16, 0xb7, 0xae, 0xdb, 0xfa, 0x4e, 0x37, 0x6e, 0x15, 0xd1, 0xa3, + 0x1b, 0x0c, 0x19, 0x15, 0xe6, 0xb7, 0x95, 0x23, 0x1a, 0x47, 0x46, 0xf9, 0xdf, 0xe0, 0xe8, 0x79, + 0x1a, 0x01, 0xa0, 0x4b, 0x29, 0x4b, 0xd1, 0x3e, 0x76, 0x3d, 0x94, 0x17, 0xf8, 0x3f, 0x57, 0x8e, + 0x68, 0xbd, 0xc4, 0x94, 0xff, 0x00, 0x73, 0xee, 0x6b, 0xcb, 0xba, 0xe8, 0x33, 0x2e, 0x47, 0x1b, + 0x1a, 0x3d, 0xe4, 0xd7, 0xb8, 0x1f, 0x57, 0x8e, 0x68, 0x3d, 0xa4, 0x94, 0x2a, 0xc0, 0xb6, 0xb3, + 0xd3, 0xa6, 0x84, 0xb3, 0xd1, 0x2a, 0xd9, 0x43, 0x78, 0x25, 0xf8, 0x69, 0xe5, 0x88, 0xc6, 0x90, + 0x50, 0x56, 0x61, 0xca, 0x79, 0xc0, 0xa1, 0xf4, 0x72, 0xd1, 0x9b, 0xdb, 0x3d, 0xf4, 0xea, 0xfe, + 0x3f, 0x2b, 0x47, 0xb4, 0x90, 0x80, 0x52, 0x86, 0xc9, 0xce, 0x79, 0x4a, 0x2c, 0xdf, 0xe7, 0xaa, + 0xff, 0xfe, 0xc4, 0xd6, 0xcf, 0x07, 0xb4, 0x82, 0xdf, 0x5d, 0xc6, 0x9a, 0xdd, 0x3d, 0x4a, 0x6b, + 0x42, 0x98, 0xb1, 0x92, 0xff, 0x8f, 0xcb, 0x58, 0x40, 0x40, 0x29, 0xc3, 0x54, 0xd7, 0xd4, 0x3b, + 0xdd, 0x6d, 0xcb, 0xe9, 0x9e, 0x9a, 0xec, 0xf1, 0x83, 0x8c, 0xa6, 0x56, 0xa3, 0xff, 0x68, 0xe1, + 0xdf, 0xca, 0x13, 0xe1, 0xc4, 0x2e, 0xb9, 0x3e, 0x54, 0x7d, 0xc0, 0xe8, 0x3a, 0x86, 0xb9, 0xe5, + 0xc7, 0x90, 0xf5, 0x7a, 0x93, 0xfe, 0x1f, 0x95, 0x79, 0x7a, 0x22, 0x0a, 0x48, 0xdb, 0x44, 0xbd, + 0x9b, 0x71, 0x5e, 0xb1, 0xcc, 0x41, 0xa8, 0xa7, 0x40, 0xd6, 0xfd, 0x44, 0xce, 0x6c, 0xce, 0xf5, + 0x5f, 0xe8, 0xeb, 0xd5, 0x1d, 0xd2, 0x80, 0xdd, 0x9f, 0xdc, 0xb1, 0xd1, 0xb4, 0xd6, 0x6d, 0x6b, + 0xcb, 0xc6, 0xdd, 0x2e, 0x75, 0x38, 0x64, 0x52, 0xdc, 0x06, 0x6e, 0x74, 0xd7, 0x8c, 0x2d, 0xcf, + 0x7a, 0xa2, 0xfe, 0xee, 0x6c, 0x92, 0x37, 0xdb, 0xac, 0xe0, 0x8b, 0xc4, 0x21, 0x98, 0x9c, 0xbf, + 0x21, 0xb3, 0x4d, 0x3f, 0x05, 0x5d, 0x0f, 0x33, 0x6c, 0x23, 0xf3, 0xee, 0xce, 0x32, 0x42, 0xdb, + 0x8b, 0xbe, 0xa1, 0xeb, 0x60, 0x8e, 0xd7, 0x69, 0x66, 0x88, 0x91, 0xfd, 0xae, 0x10, 0x5d, 0x0b, + 0x47, 0x7b, 0x1a, 0x96, 0x1f, 0x53, 0x24, 0x13, 0xc6, 0x14, 0xb9, 0x06, 0x20, 0xd4, 0xe2, 0xbe, + 0x64, 0xae, 0x86, 0xa9, 0x40, 0x2f, 0xfb, 0x66, 0xf8, 0x5a, 0x06, 0x26, 0x7d, 0x65, 0xeb, 0x97, + 0xc1, 0x1d, 0x5f, 0x4c, 0x66, 0x03, 0x81, 0x4e, 0xb3, 0xb9, 0x34, 0x77, 0x1c, 0x09, 0xdd, 0x76, + 0xeb, 0x86, 0xd3, 0xf6, 0x8f, 0xbe, 0xf5, 0x26, 0x2b, 0xeb, 0x00, 0x06, 0xc1, 0xa8, 0x1e, 0x9e, + 0x85, 0xbb, 0x25, 0x41, 0x7b, 0xf0, 0xf4, 0x81, 0xa1, 0x71, 0xe6, 0x27, 0xe8, 0x41, 0xb5, 0x29, + 0xc8, 0xd5, 0xd6, 0x8b, 0x25, 0xb5, 0x70, 0x44, 0x99, 0x03, 0x50, 0x9f, 0xbe, 0xae, 0x6a, 0x65, + 0xb5, 0x52, 0x52, 0x0b, 0x19, 0xf4, 0x72, 0x09, 0xa6, 0x82, 0x46, 0xd0, 0xb7, 0x92, 0x2a, 0x55, + 0xad, 0x81, 0xd7, 0x13, 0xed, 0x6f, 0x54, 0xac, 0x92, 0x3d, 0x19, 0x2e, 0xdf, 0xed, 0xe2, 0x25, + 0xc3, 0xee, 0x3a, 0x9a, 0x75, 0x71, 0xc9, 0xb2, 0x83, 0xa8, 0xc9, 0xfe, 0x35, 0xfc, 0x11, 0x9f, + 0x5d, 0x8b, 0xa2, 0x85, 0xc9, 0xa1, 0x28, 0x6c, 0xd3, 0x95, 0xe1, 0x30, 0xc1, 0xa5, 0xeb, 0x78, + 0xf7, 0xde, 0x77, 0xb1, 0x66, 0x5d, 0xec, 0x16, 0xcd, 0x56, 0xc9, 0x6a, 0xef, 0xee, 0x98, 0x5d, + 0x6a, 0x13, 0x44, 0x7d, 0x76, 0xa5, 0x43, 0x2e, 0x1f, 0x9b, 0x03, 0x28, 0x55, 0x57, 0x57, 0xd5, + 0x52, 0xbd, 0x5c, 0xad, 0x14, 0x8e, 0xb8, 0xd2, 0xaa, 0x17, 0x17, 0x56, 0x5d, 0xe9, 0xfc, 0x2c, + 0x4c, 0xfa, 0x6d, 0x9a, 0x86, 0x41, 0xc9, 0xf8, 0x61, 0x50, 0x94, 0x22, 0x4c, 0xfa, 0xad, 0x9c, + 0x8e, 0x08, 0x8f, 0xee, 0x3d, 0xf6, 0xba, 0xa3, 0xdb, 0x0e, 0xf1, 0x97, 0xf6, 0x89, 0x2c, 0xe8, + 0x5d, 0xac, 0x05, 0xbf, 0x9d, 0x79, 0x1c, 0xe5, 0x40, 0x81, 0xb9, 0xe2, 0xea, 0x6a, 0xa3, 0xaa, + 0x35, 0x2a, 0xd5, 0xfa, 0x4a, 0xb9, 0xb2, 0xec, 0x8d, 0x90, 0xe5, 0xe5, 0x4a, 0x55, 0x53, 0xbd, + 0x01, 0xb2, 0x56, 0xc8, 0x78, 0x97, 0xdf, 0x2d, 0x4c, 0x42, 0xbe, 0x43, 0xa4, 0x8b, 0xbe, 0x2c, + 0x27, 0x3c, 0xef, 0x1e, 0xe0, 0x14, 0x71, 0x3d, 0x17, 0xe7, 0x73, 0x2e, 0xf5, 0x39, 0x13, 0x7a, + 0x06, 0x66, 0x3c, 0x5b, 0xae, 0x4b, 0x96, 0xef, 0xe9, 0x0d, 0xb7, 0x5c, 0x1a, 0xfa, 0x98, 0x94, + 0xe0, 0x10, 0x7c, 0x5f, 0x8e, 0x92, 0x19, 0x17, 0x7f, 0x3e, 0xcc, 0x65, 0x77, 0x0a, 0xcc, 0x95, + 0x2b, 0x75, 0x55, 0xab, 0x14, 0x57, 0x69, 0x16, 0x59, 0x39, 0x05, 0xc7, 0x2b, 0x55, 0x1a, 0xd3, + 0xaf, 0x46, 0xae, 0xd5, 0x5e, 0x5b, 0xaf, 0x6a, 0xf5, 0x42, 0x4e, 0x39, 0x09, 0x8a, 0xf7, 0xcc, + 0xdd, 0x4a, 0x9f, 0x57, 0x1e, 0x03, 0xd7, 0xae, 0x96, 0xd7, 0xca, 0xf5, 0x46, 0x75, 0xa9, 0xa1, + 0x55, 0xcf, 0xd5, 0x5c, 0x04, 0x35, 0x75, 0xb5, 0xe8, 0x2a, 0x12, 0x73, 0x09, 0xde, 0x84, 0x72, + 0x19, 0x1c, 0x25, 0x17, 0x5c, 0x92, 0x9b, 0xed, 0xbd, 0xf2, 0x26, 0x95, 0xab, 0xe0, 0x54, 0xb9, + 0x52, 0xdb, 0x58, 0x5a, 0x2a, 0x97, 0xca, 0x6a, 0xa5, 0xde, 0x58, 0x57, 0xb5, 0xb5, 0x72, 0xad, + 0xe6, 0xfe, 0x5b, 0x98, 0x22, 0x57, 0x8c, 0x79, 0x7d, 0x26, 0x7a, 0xaf, 0x0c, 0xb3, 0x67, 0xf5, + 0xb6, 0xe1, 0x0e, 0x14, 0xe4, 0xee, 0xc1, 0x9e, 0xe3, 0x22, 0x0e, 0xb9, 0xa3, 0x90, 0x3a, 0x9c, + 0x93, 0x17, 0xf4, 0x8b, 0x72, 0xc2, 0xe3, 0x22, 0x14, 0x08, 0xaf, 0xc4, 0x79, 0xae, 0xb4, 0x88, + 0xc9, 0xcd, 0x6b, 0xa5, 0x04, 0xc7, 0x45, 0xc4, 0xc9, 0x27, 0x03, 0xff, 0x15, 0xa3, 0x02, 0xbf, + 0x00, 0x33, 0x1b, 0x95, 0xe2, 0x46, 0x7d, 0xa5, 0xaa, 0x95, 0x7f, 0x86, 0x44, 0x1b, 0x9f, 0x85, + 0xa9, 0xa5, 0xaa, 0xb6, 0x50, 0x5e, 0x5c, 0x54, 0x2b, 0x85, 0x9c, 0x72, 0x39, 0x5c, 0x56, 0x53, + 0xb5, 0xb3, 0xe5, 0x92, 0xda, 0xd8, 0xa8, 0x14, 0xcf, 0x16, 0xcb, 0xab, 0xa4, 0x8f, 0xc8, 0xc7, + 0xdc, 0x9b, 0x38, 0x81, 0x7e, 0x3e, 0x0b, 0xe0, 0x55, 0xdd, 0xb5, 0xa4, 0xd9, 0xdb, 0xf5, 0xbe, + 0x90, 0x74, 0xd2, 0x10, 0x92, 0x89, 0x68, 0xbf, 0x65, 0x98, 0xb4, 0xe9, 0x07, 0xba, 0x7c, 0x32, + 0x88, 0x8e, 0xf7, 0xe8, 0x53, 0xd3, 0x82, 0xdf, 0xd1, 0xfb, 0x92, 0xcc, 0x11, 0x22, 0x19, 0x4b, + 0x86, 0xe4, 0xd2, 0x68, 0x80, 0x44, 0x2f, 0xc8, 0xc0, 0x1c, 0x5f, 0x31, 0xb7, 0x12, 0xc4, 0x98, + 0x12, 0xab, 0x04, 0xff, 0x33, 0x63, 0x64, 0x9d, 0x79, 0x02, 0x1d, 0x4e, 0xc1, 0x6f, 0x99, 0xde, + 0xc9, 0x6f, 0xdf, 0x62, 0x29, 0x64, 0x5c, 0xe6, 0x5d, 0xa3, 0xc3, 0xbb, 0x5a, 0xbd, 0xfe, 0x80, + 0x53, 0x90, 0xd1, 0xd7, 0x64, 0x98, 0xe5, 0xae, 0xef, 0x43, 0xaf, 0xcd, 0x88, 0x5c, 0xad, 0xc5, + 0x5c, 0x0c, 0x98, 0x39, 0xe8, 0xc5, 0x80, 0x67, 0x6e, 0x86, 0x09, 0x9a, 0x46, 0xe4, 0x5b, 0xad, + 0xb8, 0xa6, 0xc0, 0x51, 0x98, 0x5e, 0x56, 0xeb, 0x8d, 0x5a, 0xbd, 0xa8, 0xd5, 0xd5, 0xc5, 0x42, + 0xc6, 0x1d, 0xf8, 0xd4, 0xb5, 0xf5, 0xfa, 0x7d, 0x05, 0x29, 0xb9, 0x07, 0x5e, 0x2f, 0x23, 0x63, + 0xf6, 0xc0, 0x8b, 0x2b, 0x3e, 0xfd, 0xb9, 0xea, 0x67, 0x64, 0x28, 0x78, 0x1c, 0xa8, 0x0f, 0x74, + 0xb0, 0x6d, 0x60, 0xb3, 0x89, 0xd1, 0x05, 0x91, 0x88, 0x9f, 0xfb, 0x62, 0xe1, 0x91, 0xfe, 0x9c, + 0xb1, 0x12, 0xbd, 0x97, 0x1e, 0x03, 0x3b, 0xbb, 0xcf, 0xc0, 0xfe, 0x74, 0x52, 0x17, 0xbc, 0x5e, + 0x76, 0x47, 0x02, 0xd9, 0x27, 0x93, 0xb8, 0xe0, 0x0d, 0xe0, 0x60, 0x2c, 0x81, 0x7c, 0x23, 0xc6, + 0xdf, 0x82, 0x8c, 0x9e, 0x2f, 0xc3, 0xd1, 0x45, 0xdd, 0xc1, 0x0b, 0x97, 0xea, 0xc6, 0x0e, 0xee, + 0x3a, 0xfa, 0x4e, 0x27, 0xe2, 0x4a, 0xbc, 0xcc, 0xbe, 0x2b, 0xf1, 0x1c, 0xff, 0x0f, 0xc2, 0xa9, + 0xac, 0x85, 0x09, 0xe8, 0x5d, 0x49, 0x0f, 0xed, 0xf5, 0xf0, 0x30, 0xb2, 0x68, 0xbb, 0xc9, 0x0e, + 0xe3, 0xc5, 0x73, 0x31, 0x86, 0x1b, 0x6a, 0xa7, 0xa0, 0xe0, 0xb1, 0xc2, 0x78, 0x99, 0xfd, 0x1a, + 0xbd, 0x45, 0xb2, 0x91, 0x20, 0xa8, 0x9f, 0x1f, 0x26, 0x41, 0xe2, 0xc3, 0x24, 0x70, 0x8b, 0x96, + 0x72, 0xaf, 0x67, 0x40, 0xd2, 0xce, 0x90, 0x71, 0x29, 0x8b, 0x8e, 0xa3, 0x9a, 0x5e, 0x67, 0x18, + 0x5b, 0xfc, 0x78, 0x6e, 0x3a, 0xa3, 0x77, 0x19, 0xaa, 0xa2, 0xc8, 0xc4, 0x5f, 0xe8, 0x98, 0xd4, + 0xbf, 0x98, 0x73, 0xe9, 0x8b, 0xb9, 0xe5, 0x30, 0x3d, 0xff, 0xe2, 0x41, 0x1c, 0xa4, 0x8f, 0xc2, + 0x0f, 0x24, 0xc8, 0xd6, 0x2c, 0xdb, 0x19, 0x15, 0x06, 0x49, 0xf7, 0x44, 0x19, 0x09, 0xd4, 0xa2, + 0xe7, 0x9c, 0xe9, 0xed, 0x89, 0xc6, 0x97, 0x3f, 0x86, 0xb8, 0x88, 0x47, 0x61, 0xce, 0xe3, 0x24, + 0xb8, 0x34, 0xe4, 0xdf, 0x24, 0xaf, 0xbf, 0xba, 0x57, 0x14, 0x91, 0x33, 0x30, 0xc3, 0xec, 0x49, + 0x06, 0x17, 0x66, 0xb3, 0x69, 0xe8, 0x8d, 0x2c, 0x2e, 0x8b, 0x3c, 0x2e, 0xfd, 0x66, 0xdc, 0xc1, + 0xbd, 0x1b, 0xa3, 0xea, 0x99, 0x92, 0x84, 0x58, 0x8c, 0x29, 0x3c, 0x7d, 0x44, 0x1e, 0x94, 0x21, + 0x4f, 0x7d, 0xc2, 0x46, 0x8a, 0x40, 0xd2, 0x96, 0x11, 0x08, 0x41, 0xcc, 0x77, 0x4c, 0x1e, 0x75, + 0xcb, 0x88, 0x2f, 0x3f, 0x7d, 0x1c, 0x7e, 0x48, 0x9d, 0x1d, 0x8b, 0x7b, 0xba, 0xd1, 0xd6, 0xcf, + 0xb7, 0x13, 0x84, 0x36, 0xfe, 0x58, 0xc2, 0xe3, 0x5d, 0x41, 0x55, 0xb9, 0xf2, 0x22, 0x24, 0xfe, + 0x53, 0x30, 0x65, 0x07, 0x4b, 0x92, 0xfe, 0xe9, 0xf7, 0x1e, 0x47, 0x53, 0xfa, 0x5d, 0x0b, 0x73, + 0x26, 0x3a, 0xcb, 0x25, 0xc4, 0xcf, 0x58, 0xce, 0x9e, 0x4c, 0x17, 0x5b, 0xad, 0x25, 0xac, 0x3b, + 0xbb, 0x36, 0x6e, 0x25, 0x1a, 0x22, 0x78, 0x11, 0x4d, 0xb1, 0x92, 0xe0, 0x82, 0x0b, 0xae, 0xf2, + 0xe8, 0x3c, 0x69, 0x40, 0x6f, 0xe0, 0xf3, 0x32, 0x92, 0x2e, 0xe9, 0xad, 0x01, 0x24, 0x55, 0x0e, + 0x92, 0xa7, 0x0c, 0xc7, 0x44, 0xfa, 0x80, 0xfc, 0x86, 0x0c, 0x73, 0x9e, 0x9d, 0x30, 0x6a, 0x4c, + 0x7e, 0x3f, 0xa1, 0x0f, 0x09, 0x73, 0x2d, 0x13, 0xcb, 0xce, 0x48, 0x60, 0x49, 0xe2, 0x71, 0x22, + 0xc6, 0x47, 0xfa, 0xc8, 0x7c, 0x2e, 0x0f, 0xc0, 0xf8, 0x05, 0x7e, 0x2c, 0x1f, 0x06, 0xfa, 0x43, + 0x6f, 0xa7, 0xf3, 0x8f, 0x1a, 0x17, 0x75, 0x9a, 0xf1, 0xf9, 0x0b, 0x36, 0xa4, 0xf8, 0x44, 0xa1, + 0x51, 0xe5, 0xcf, 0x13, 0xda, 0xbc, 0xd4, 0x2b, 0x6f, 0xe0, 0xe0, 0x3e, 0x64, 0x2f, 0xf7, 0xf1, + 0x04, 0xc6, 0xef, 0x20, 0x56, 0x92, 0xa1, 0xb6, 0x3a, 0xc4, 0xcc, 0xfe, 0x14, 0x1c, 0xd7, 0xd4, + 0xe2, 0x62, 0xb5, 0xb2, 0x7a, 0x1f, 0x7b, 0x47, 0x4f, 0x41, 0x66, 0x27, 0x27, 0xa9, 0xc0, 0xf6, + 0xba, 0x84, 0x7d, 0x20, 0x2f, 0xab, 0xb8, 0xd9, 0x0a, 0xb3, 0xb8, 0x32, 0xb8, 0x57, 0x13, 0x20, + 0x7b, 0x98, 0x28, 0x3c, 0x08, 0x4c, 0x33, 0x7a, 0x9e, 0x0c, 0x85, 0xf0, 0x9a, 0x78, 0x7a, 0x19, + 0x5b, 0x95, 0x77, 0x1b, 0xec, 0x78, 0xfb, 0x4f, 0xa1, 0xdb, 0xa0, 0x9f, 0xa0, 0x5c, 0x0f, 0x73, + 0xcd, 0x6d, 0xdc, 0xbc, 0x50, 0x36, 0xfd, 0x7d, 0x75, 0x6f, 0x13, 0xb6, 0x27, 0x95, 0x07, 0xe6, + 0x5e, 0x1e, 0x18, 0x7e, 0x12, 0xcd, 0x0d, 0xd2, 0x2c, 0x53, 0x11, 0xb8, 0xfc, 0x61, 0x80, 0x4b, + 0x85, 0xc3, 0xe5, 0xf6, 0xa1, 0xa8, 0x26, 0x83, 0xa5, 0x32, 0x04, 0x2c, 0x08, 0x4e, 0x56, 0xd7, + 0xeb, 0xe5, 0x6a, 0xa5, 0xb1, 0x51, 0x53, 0x17, 0x1b, 0x0b, 0x3e, 0x38, 0xb5, 0x82, 0x8c, 0xbe, + 0x25, 0xc1, 0x84, 0xc7, 0x56, 0xb7, 0xe7, 0x5a, 0xf7, 0x78, 0x7f, 0x49, 0xf4, 0x36, 0xe1, 0xe8, + 0x07, 0x81, 0x20, 0x68, 0x39, 0x11, 0xfd, 0xd4, 0x93, 0x61, 0xc2, 0x03, 0xd9, 0x5f, 0xd1, 0x3a, + 0x1d, 0xd1, 0x4b, 0x51, 0x32, 0x9a, 0x9f, 0x5d, 0x30, 0x12, 0xc2, 0x00, 0x36, 0xd2, 0x1f, 0x59, + 0x9e, 0x99, 0xf5, 0xcc, 0xe0, 0x73, 0x86, 0xb3, 0x4d, 0xdc, 0x29, 0xd1, 0xd3, 0x44, 0x96, 0x17, + 0x6f, 0x82, 0xdc, 0x9e, 0x9b, 0x7b, 0x80, 0x6b, 0xaa, 0x97, 0x09, 0xbd, 0x42, 0x38, 0xf0, 0x26, + 0xa7, 0x9f, 0x01, 0x4f, 0x11, 0xe0, 0xac, 0x41, 0xb6, 0x6d, 0x74, 0x1d, 0x3a, 0x7e, 0xdc, 0x96, + 0x88, 0x90, 0xff, 0x50, 0x76, 0xf0, 0x8e, 0x46, 0xc8, 0xa0, 0x7b, 0x60, 0x86, 0x4d, 0x15, 0x70, + 0xcf, 0x3d, 0x05, 0x13, 0xf4, 0xd8, 0x18, 0x5d, 0x62, 0xf5, 0x5f, 0x05, 0x97, 0x35, 0x85, 0x6a, + 0x9b, 0xbe, 0x0e, 0xfc, 0x3f, 0x47, 0x61, 0x62, 0xc5, 0xe8, 0x3a, 0x96, 0x7d, 0x09, 0x3d, 0x9c, + 0x81, 0x89, 0xb3, 0xd8, 0xee, 0x1a, 0x96, 0xb9, 0xcf, 0xd5, 0xe0, 0x1a, 0x98, 0xee, 0xd8, 0x78, + 0xcf, 0xb0, 0x76, 0xbb, 0xe1, 0xe2, 0x0c, 0x9b, 0xa4, 0x20, 0x98, 0xd4, 0x77, 0x9d, 0x6d, 0xcb, + 0x0e, 0xa3, 0x4d, 0xf8, 0xef, 0xca, 0x69, 0x00, 0xef, 0xb9, 0xa2, 0xef, 0x60, 0xea, 0x40, 0xc1, + 0xa4, 0x28, 0x0a, 0x64, 0x1d, 0x63, 0x07, 0xd3, 0xf0, 0xb3, 0xe4, 0xd9, 0x15, 0x30, 0x09, 0xe5, + 0x46, 0x43, 0xe6, 0xc9, 0x9a, 0xff, 0x8a, 0xbe, 0x28, 0xc3, 0xf4, 0x32, 0x76, 0x28, 0xab, 0x5d, + 0xf4, 0xc2, 0x8c, 0xd0, 0x8d, 0x0f, 0xee, 0x18, 0xdb, 0xd6, 0xbb, 0xfe, 0x7f, 0xc1, 0x12, 0x2c, + 0x9f, 0x18, 0xc6, 0xc2, 0x95, 0xd9, 0x40, 0xd8, 0x24, 0x30, 0x9a, 0x53, 0xf6, 0xfc, 0x2e, 0x69, + 0x66, 0xba, 0x09, 0xb2, 0xff, 0x03, 0x7a, 0xb7, 0x24, 0x7a, 0xa8, 0x98, 0xca, 0x7e, 0x9e, 0xa9, + 0x4f, 0x64, 0x77, 0x34, 0xb9, 0x47, 0x73, 0xec, 0x8b, 0x71, 0xce, 0x52, 0xa2, 0x64, 0xb4, 0x20, + 0xb7, 0xe0, 0x71, 0xe4, 0xc1, 0x9c, 0xa4, 0xaf, 0x8d, 0xdf, 0x93, 0x61, 0xba, 0xb6, 0x6d, 0x5d, + 0xf4, 0xe5, 0xf8, 0xb3, 0x62, 0xc0, 0x5e, 0x05, 0x53, 0x7b, 0x3d, 0xa0, 0x86, 0x09, 0xd1, 0x77, + 0xb0, 0xa3, 0xe7, 0xca, 0x49, 0x61, 0x62, 0x98, 0x1b, 0xf9, 0x0d, 0xe9, 0xca, 0x93, 0x60, 0x82, + 0x72, 0x4d, 0x97, 0x5c, 0xe2, 0x01, 0xf6, 0x33, 0xb3, 0x15, 0xcc, 0xf2, 0x15, 0x4c, 0x86, 0x7c, + 0x74, 0xe5, 0xd2, 0x47, 0xfe, 0x4f, 0x24, 0x12, 0x8c, 0xc2, 0x07, 0xbe, 0x34, 0x02, 0xe0, 0xd1, + 0xf7, 0x33, 0xa2, 0x0b, 0x93, 0x81, 0x04, 0x02, 0x0e, 0x0e, 0x74, 0x9b, 0xcb, 0x40, 0x72, 0xe9, + 0xcb, 0xf3, 0xe5, 0x59, 0x98, 0x59, 0x34, 0x36, 0x37, 0x83, 0x4e, 0xf2, 0x45, 0x82, 0x9d, 0x64, + 0xb4, 0x3b, 0x80, 0x6b, 0xe7, 0xee, 0xda, 0x36, 0x36, 0xfd, 0x4a, 0xd1, 0xe6, 0xd4, 0x93, 0xaa, + 0xdc, 0x00, 0x47, 0xfd, 0x71, 0x81, 0xed, 0x28, 0xa7, 0xb4, 0xde, 0x64, 0xf4, 0x5d, 0xe1, 0x5d, + 0x2d, 0x5f, 0xa2, 0x6c, 0x95, 0x22, 0x1a, 0xe0, 0x1d, 0x30, 0xbb, 0xed, 0xe5, 0x26, 0x53, 0x7f, + 0xbf, 0xb3, 0x3c, 0xd9, 0x13, 0xec, 0x77, 0x0d, 0x77, 0xbb, 0xfa, 0x16, 0xd6, 0xf8, 0xcc, 0x3d, + 0xcd, 0x57, 0x4e, 0x72, 0x75, 0x95, 0xd8, 0x06, 0x99, 0x40, 0x4d, 0xc6, 0xa0, 0x1d, 0x67, 0x20, + 0xbb, 0x64, 0xb4, 0x31, 0xfa, 0x25, 0x09, 0xa6, 0x34, 0xdc, 0xb4, 0xcc, 0xa6, 0xfb, 0xc6, 0x38, + 0x07, 0xfd, 0x63, 0x46, 0xf4, 0xca, 0x46, 0x97, 0xce, 0x7c, 0x40, 0x23, 0xa2, 0xdd, 0x88, 0x5d, + 0xcd, 0x18, 0x4b, 0x6a, 0x0c, 0x17, 0x6c, 0xb8, 0x53, 0x8f, 0xcd, 0xcd, 0xb6, 0xa5, 0x73, 0x8b, + 0x5f, 0xbd, 0xa6, 0xd0, 0x8d, 0x50, 0xf0, 0xcf, 0x78, 0x58, 0xce, 0xba, 0x61, 0x9a, 0xc1, 0x21, + 0xe2, 0x7d, 0xe9, 0xfc, 0xbe, 0x6d, 0x6c, 0x1c, 0x16, 0x52, 0x77, 0x5a, 0x7a, 0x84, 0x66, 0x5f, + 0x0f, 0x73, 0xe7, 0x2f, 0x39, 0xb8, 0x4b, 0x73, 0xd1, 0x62, 0xb3, 0x5a, 0x4f, 0x2a, 0x13, 0x45, + 0x39, 0x2e, 0x5e, 0x4b, 0x4c, 0x81, 0xc9, 0x44, 0xbd, 0x32, 0xc4, 0x0c, 0xf0, 0x38, 0x14, 0x2a, + 0xd5, 0x45, 0x95, 0xf8, 0xaa, 0xf9, 0xde, 0x3f, 0x5b, 0xe8, 0xc5, 0x32, 0xcc, 0x10, 0x67, 0x12, + 0x1f, 0x85, 0x6b, 0x05, 0xe6, 0x23, 0xe8, 0x2b, 0xc2, 0x7e, 0x6c, 0xa4, 0xca, 0x6c, 0x01, 0xd1, + 0x82, 0xde, 0x34, 0xda, 0xbd, 0x82, 0xce, 0x69, 0x3d, 0xa9, 0x7d, 0x00, 0x91, 0xfb, 0x02, 0xf2, + 0xbb, 0x42, 0xce, 0x6c, 0x83, 0xb8, 0x3b, 0x2c, 0x54, 0x7e, 0x4f, 0x86, 0x69, 0x77, 0x92, 0xe2, + 0x83, 0x52, 0xe5, 0x40, 0xb1, 0xcc, 0xf6, 0xa5, 0x70, 0x59, 0xc4, 0x7f, 0x4d, 0xd4, 0x48, 0xfe, + 0x52, 0x78, 0xe6, 0x4e, 0x44, 0xc4, 0xf0, 0x32, 0x26, 0xfc, 0xde, 0x2f, 0x34, 0x9f, 0x1f, 0xc0, + 0xdc, 0x61, 0xc1, 0xf7, 0x8d, 0x1c, 0xe4, 0x37, 0x3a, 0x04, 0xb9, 0x57, 0xc8, 0x22, 0x11, 0xc9, + 0xf7, 0x1d, 0x64, 0x70, 0xcd, 0xac, 0xb6, 0xd5, 0xd4, 0xdb, 0xeb, 0xe1, 0x89, 0xb0, 0x30, 0x41, + 0xb9, 0x9d, 0xfa, 0x36, 0x7a, 0xc7, 0xe9, 0xae, 0x8f, 0x0d, 0xd6, 0x4d, 0x64, 0xc4, 0x1c, 0x1a, + 0xb9, 0x09, 0x8e, 0xb5, 0x8c, 0xae, 0x7e, 0xbe, 0x8d, 0x55, 0xb3, 0x69, 0x5f, 0xf2, 0xc4, 0x41, + 0xa7, 0x55, 0xfb, 0x3e, 0x28, 0x77, 0x42, 0xae, 0xeb, 0x5c, 0x6a, 0x7b, 0xf3, 0x44, 0xf6, 0x8c, + 0x49, 0x64, 0x51, 0x35, 0x37, 0xbb, 0xe6, 0xfd, 0xc5, 0xba, 0x28, 0x4d, 0x08, 0xde, 0xd7, 0xfc, + 0x04, 0xc8, 0x5b, 0xb6, 0xb1, 0x65, 0x78, 0xf7, 0xef, 0xcc, 0xed, 0x8b, 0x49, 0xe7, 0x99, 0x02, + 0x55, 0x92, 0x45, 0xa3, 0x59, 0x95, 0x27, 0xc1, 0x94, 0xb1, 0xa3, 0x6f, 0xe1, 0x7b, 0x0d, 0xd3, + 0x3b, 0xb1, 0x37, 0x77, 0xeb, 0xa9, 0x7d, 0xc7, 0x67, 0xe8, 0x77, 0x2d, 0xcc, 0x8a, 0xde, 0x2f, + 0x89, 0x06, 0xce, 0x21, 0x75, 0xf3, 0x40, 0x1d, 0xcb, 0xbd, 0xd5, 0xe8, 0xd5, 0x42, 0x21, 0x6d, + 0xa2, 0xd9, 0x4a, 0x7f, 0xf0, 0xfe, 0xbc, 0x04, 0x93, 0x8b, 0xd6, 0x45, 0x93, 0x28, 0xfa, 0x6d, + 0x62, 0xb6, 0x6e, 0x9f, 0x43, 0x8e, 0xfc, 0xb5, 0x90, 0xb1, 0x27, 0x1a, 0x48, 0x6d, 0xfd, 0x22, + 0x23, 0x60, 0x88, 0x6d, 0x39, 0x82, 0x97, 0xf5, 0xc5, 0x95, 0x93, 0xbe, 0x5c, 0xff, 0x54, 0x86, + 0xec, 0xa2, 0x6d, 0x75, 0xd0, 0x5b, 0x33, 0x09, 0x5c, 0x16, 0x5a, 0xb6, 0xd5, 0xa9, 0x93, 0xdb, + 0xb6, 0xc2, 0x63, 0x1c, 0x6c, 0x9a, 0x72, 0x1b, 0x4c, 0x76, 0xac, 0xae, 0xe1, 0xf8, 0xd3, 0x88, + 0xb9, 0x5b, 0x1f, 0xd5, 0xb7, 0x35, 0xaf, 0xd3, 0x4c, 0x5a, 0x90, 0xdd, 0xed, 0xb5, 0x89, 0x08, + 0x5d, 0xb9, 0xb8, 0x62, 0xf4, 0x6f, 0x1c, 0xeb, 0x49, 0x45, 0x2f, 0x61, 0x91, 0x7c, 0x0a, 0x8f, + 0xe4, 0xa3, 0xfb, 0x48, 0xd8, 0xb6, 0x3a, 0x23, 0xd9, 0x64, 0x7c, 0x65, 0x80, 0xea, 0x53, 0x39, + 0x54, 0x6f, 0x14, 0x2a, 0x33, 0x7d, 0x44, 0xdf, 0x9f, 0x05, 0x20, 0x66, 0xc6, 0x86, 0x3b, 0x01, + 0x12, 0xb3, 0xb1, 0x9e, 0x9d, 0x65, 0x64, 0x59, 0xe4, 0x65, 0xf9, 0xd8, 0x08, 0x2b, 0x86, 0x90, + 0x8f, 0x90, 0x68, 0x11, 0x72, 0xbb, 0xee, 0x67, 0x2a, 0x51, 0x41, 0x12, 0xe4, 0x55, 0xf3, 0xfe, + 0x44, 0x7f, 0x92, 0x81, 0x1c, 0x49, 0x50, 0x4e, 0x03, 0x90, 0x81, 0xdd, 0x3b, 0x10, 0x94, 0x21, + 0x43, 0x38, 0x93, 0x42, 0xb4, 0xd5, 0x68, 0xd1, 0xcf, 0x9e, 0xc9, 0x1c, 0x26, 0xb8, 0x7f, 0x93, + 0xe1, 0x9e, 0xd0, 0xa2, 0x06, 0x00, 0x93, 0xe2, 0xfe, 0x4d, 0xde, 0x56, 0xf1, 0xa6, 0x17, 0x08, + 0x39, 0xab, 0x85, 0x09, 0xc1, 0xdf, 0xab, 0xc1, 0xf5, 0x59, 0xfe, 0xdf, 0x24, 0xc5, 0x9d, 0x0c, + 0x13, 0xb5, 0x5c, 0x08, 0x8b, 0xc8, 0x93, 0x4c, 0xbd, 0xc9, 0xe8, 0x75, 0x81, 0xda, 0x2c, 0x72, + 0x6a, 0x73, 0x4b, 0x02, 0xf1, 0xa6, 0xaf, 0x3c, 0x5f, 0xcb, 0xc1, 0x54, 0xc5, 0x6a, 0x51, 0xdd, + 0x61, 0x26, 0x8c, 0x9f, 0xcc, 0x25, 0x9a, 0x30, 0x06, 0x34, 0x22, 0x14, 0xe4, 0x6e, 0x5e, 0x41, + 0xc4, 0x28, 0xb0, 0xfa, 0xa1, 0x2c, 0x40, 0x9e, 0x68, 0xef, 0xfe, 0x7b, 0x99, 0xe2, 0x48, 0x10, + 0xd1, 0x6a, 0xf4, 0xcf, 0x7f, 0x77, 0x3a, 0xf6, 0x5f, 0x20, 0x47, 0x2a, 0x18, 0xb3, 0xbb, 0xc3, + 0x57, 0x54, 0x8a, 0xaf, 0xa8, 0x1c, 0x5f, 0xd1, 0x6c, 0x6f, 0x45, 0x93, 0xac, 0x03, 0x44, 0x69, + 0x48, 0xfa, 0x3a, 0xfe, 0x0f, 0x13, 0x00, 0x15, 0x7d, 0xcf, 0xd8, 0xf2, 0x76, 0x87, 0xbf, 0xe8, + 0xcf, 0x7f, 0xe8, 0x3e, 0xee, 0x7f, 0x65, 0x06, 0xc2, 0xdb, 0x60, 0x82, 0x8e, 0x7b, 0xb4, 0x22, + 0x57, 0x73, 0x15, 0x09, 0xa9, 0x78, 0x66, 0xe9, 0x03, 0x8e, 0xe6, 0xe7, 0xe7, 0xae, 0x90, 0x95, + 0x7a, 0xae, 0x90, 0xed, 0xbf, 0x07, 0x11, 0x71, 0xb1, 0x2c, 0x7a, 0x8f, 0xb0, 0x47, 0x3f, 0xc3, + 0x0f, 0x53, 0xa3, 0x88, 0x26, 0xf8, 0x04, 0x98, 0xb0, 0x82, 0x0d, 0x6d, 0x39, 0x72, 0x1d, 0xac, + 0x6c, 0x6e, 0x5a, 0x9a, 0x9f, 0x53, 0x70, 0xf3, 0x4b, 0x88, 0x8f, 0xb1, 0x1c, 0x9a, 0x39, 0xb9, + 0xec, 0x07, 0x95, 0x72, 0xeb, 0x71, 0xce, 0x70, 0xb6, 0x57, 0x0d, 0xf3, 0x42, 0x17, 0xfd, 0x27, + 0x31, 0x0b, 0x92, 0xc1, 0x5f, 0x4a, 0x86, 0x3f, 0x1f, 0xb3, 0xa3, 0xc6, 0xa3, 0x76, 0x67, 0x14, + 0x95, 0xfe, 0xdc, 0x46, 0x00, 0x78, 0x3b, 0xe4, 0x3d, 0x46, 0x69, 0x27, 0x7a, 0x26, 0x12, 0xbf, + 0x80, 0x92, 0x46, 0xff, 0x40, 0xef, 0x0e, 0x70, 0x3c, 0xcb, 0xe1, 0xb8, 0x70, 0x20, 0xce, 0x52, + 0x87, 0xf4, 0xcc, 0xe3, 0x61, 0x82, 0x4a, 0x5a, 0x99, 0x63, 0x5b, 0x71, 0xe1, 0x88, 0x02, 0x90, + 0x5f, 0xb3, 0xf6, 0x70, 0xdd, 0x2a, 0x64, 0xdc, 0x67, 0x97, 0xbf, 0xba, 0x55, 0x90, 0xd0, 0xab, + 0x26, 0x61, 0x32, 0x88, 0xe6, 0xf3, 0x79, 0x09, 0x0a, 0x25, 0x1b, 0xeb, 0x0e, 0x5e, 0xb2, 0xad, + 0x1d, 0xaf, 0x46, 0xe2, 0xde, 0xa1, 0xbf, 0x21, 0xec, 0xe2, 0x11, 0x44, 0xd9, 0xe9, 0x2d, 0x2c, + 0x02, 0x4b, 0x6f, 0x11, 0x52, 0xf2, 0x17, 0x21, 0xd1, 0x5b, 0x84, 0x5c, 0x3e, 0x44, 0x4b, 0x49, + 0xbf, 0xa9, 0x7d, 0x5a, 0x82, 0x5c, 0xa9, 0x6d, 0x99, 0x98, 0x3d, 0xc2, 0x34, 0xf0, 0xac, 0x4c, + 0xff, 0x9d, 0x08, 0xf4, 0x4c, 0x49, 0xd4, 0xd6, 0x08, 0x05, 0xe0, 0x96, 0x2d, 0x28, 0x5b, 0xb1, + 0x41, 0x2a, 0x96, 0x74, 0xfa, 0x02, 0xfd, 0x96, 0x04, 0x53, 0x5e, 0x5c, 0x9c, 0x62, 0xbb, 0x8d, + 0x1e, 0x15, 0x0a, 0xb5, 0x4f, 0x44, 0x24, 0xf4, 0xbb, 0xc2, 0x2e, 0xfa, 0x41, 0xad, 0x02, 0xda, + 0x09, 0x02, 0x04, 0x25, 0xf3, 0x18, 0x17, 0xdb, 0x4b, 0x1b, 0xc8, 0x50, 0xfa, 0xa2, 0xfe, 0x82, + 0xe4, 0x1a, 0x00, 0xe6, 0x85, 0x75, 0x1b, 0xef, 0x19, 0xf8, 0x22, 0xba, 0x32, 0x14, 0xf6, 0xfe, + 0xa0, 0x1f, 0x6f, 0x12, 0x5e, 0xc4, 0x61, 0x48, 0x46, 0x6e, 0x65, 0x4d, 0xb7, 0xc3, 0x4c, 0xb4, + 0x17, 0xef, 0x8d, 0xc4, 0xc2, 0x90, 0xd1, 0xd8, 0xec, 0x82, 0x6b, 0x36, 0xd1, 0x5c, 0xa4, 0x2f, + 0xd8, 0x0f, 0x4d, 0xc0, 0xe4, 0x86, 0xd9, 0xed, 0xb4, 0xf5, 0xee, 0x36, 0xfa, 0x37, 0x19, 0xf2, + 0xde, 0x6d, 0x60, 0xe8, 0xa7, 0xb8, 0xd8, 0x02, 0x3f, 0xb7, 0x8b, 0x6d, 0xdf, 0x05, 0xc7, 0x7b, + 0xe9, 0x7f, 0x59, 0x39, 0x7a, 0xbf, 0x2c, 0x3a, 0x49, 0xf5, 0x0b, 0x65, 0xae, 0x85, 0xef, 0x7f, + 0x9c, 0xbd, 0x63, 0x34, 0x9d, 0x5d, 0x3b, 0xb8, 0xfa, 0xfa, 0x71, 0x62, 0x54, 0xd6, 0xbd, 0xbf, + 0xb4, 0xe0, 0x77, 0xa4, 0xc3, 0x04, 0x4d, 0xdc, 0xb7, 0x9d, 0xb4, 0xff, 0xfc, 0xed, 0x49, 0xc8, + 0xeb, 0xb6, 0x63, 0x74, 0x1d, 0xba, 0xc1, 0x4a, 0xdf, 0xdc, 0xee, 0xd2, 0x7b, 0xda, 0xb0, 0xdb, + 0x7e, 0x14, 0x92, 0x20, 0x01, 0xfd, 0x9e, 0xd0, 0xfc, 0x31, 0xbe, 0xe6, 0xc9, 0x20, 0xbf, 0x77, + 0x88, 0x35, 0xea, 0xcb, 0xe1, 0x32, 0xad, 0x58, 0x57, 0x1b, 0x5e, 0xd0, 0x8a, 0x20, 0x3e, 0x45, + 0x0b, 0xbd, 0x4b, 0x66, 0xd6, 0xef, 0x2e, 0x71, 0x63, 0x04, 0x95, 0x62, 0x38, 0x46, 0x04, 0x09, + 0x31, 0xbb, 0xd5, 0xdc, 0x22, 0xac, 0x2c, 0xbe, 0x08, 0xfb, 0xdb, 0xc2, 0xbb, 0x49, 0x81, 0x28, + 0x07, 0xac, 0x01, 0xc6, 0xdd, 0x16, 0xf4, 0x01, 0xa1, 0x9d, 0xa1, 0x41, 0x25, 0x1d, 0x22, 0x6c, + 0x6f, 0x9c, 0x80, 0x89, 0x65, 0xbd, 0xdd, 0xc6, 0xf6, 0x25, 0x77, 0x48, 0x2a, 0xf8, 0x1c, 0xae, + 0xe9, 0xa6, 0xb1, 0x89, 0xbb, 0x4e, 0x7c, 0x67, 0xf9, 0x1e, 0xe1, 0x48, 0xb4, 0xb4, 0x8c, 0xf9, + 0x5e, 0xfa, 0x11, 0x32, 0xbf, 0x19, 0xb2, 0x86, 0xb9, 0x69, 0xd1, 0x2e, 0xb3, 0x77, 0xd5, 0xde, + 0xff, 0x99, 0x4c, 0x5d, 0x48, 0x46, 0xc1, 0x60, 0xb4, 0x82, 0x5c, 0xa4, 0xdf, 0x73, 0xfe, 0x4e, + 0x16, 0x66, 0x7d, 0x26, 0xca, 0x66, 0x0b, 0x3f, 0xc0, 0x2e, 0xc5, 0xbc, 0x38, 0x2b, 0x7a, 0x1c, + 0xac, 0xb7, 0x3e, 0x84, 0x54, 0x84, 0x48, 0xeb, 0x00, 0x4d, 0xdd, 0xc1, 0x5b, 0x96, 0x6d, 0x04, + 0xfd, 0xe1, 0x13, 0x93, 0x50, 0x2b, 0x79, 0x7f, 0x5f, 0xd2, 0x18, 0x3a, 0xca, 0x9d, 0x30, 0x8d, + 0x83, 0xf3, 0xf7, 0xfe, 0x52, 0x4d, 0x2c, 0x5e, 0x6c, 0x7e, 0xf4, 0x05, 0xa1, 0x53, 0x67, 0x22, + 0xd5, 0x4c, 0x86, 0x59, 0x63, 0xb8, 0x36, 0xb4, 0x51, 0x59, 0x2b, 0x6a, 0xb5, 0x95, 0xe2, 0xea, + 0x6a, 0xb9, 0xb2, 0x1c, 0x04, 0x7e, 0x51, 0x60, 0x6e, 0xb1, 0x7a, 0xae, 0xc2, 0x44, 0xe6, 0xc9, + 0xa2, 0x75, 0x98, 0xf4, 0xe5, 0xd5, 0xcf, 0x17, 0x93, 0x95, 0x19, 0xf5, 0xc5, 0x64, 0x92, 0x5c, + 0xe3, 0xcc, 0x68, 0x06, 0x0e, 0x3a, 0xe4, 0x19, 0xfd, 0x91, 0x0e, 0x39, 0xb2, 0xa6, 0x8e, 0xde, + 0x41, 0xb6, 0x01, 0x3b, 0x6d, 0xbd, 0x89, 0xd1, 0x4e, 0x02, 0x6b, 0xdc, 0xbf, 0x1a, 0x41, 0xda, + 0x77, 0x35, 0x02, 0x79, 0xa4, 0x56, 0xdf, 0xf1, 0x7e, 0xeb, 0xf8, 0x9a, 0x97, 0x85, 0x3f, 0xa0, + 0x15, 0xbb, 0xbb, 0xe2, 0x2d, 0xff, 0x53, 0x36, 0x23, 0x54, 0x32, 0x9a, 0xa7, 0x64, 0x96, 0xa8, + 0xd8, 0x3e, 0x4c, 0x1c, 0x47, 0x63, 0xb8, 0xbe, 0x3b, 0x0b, 0xb9, 0x5a, 0xa7, 0x6d, 0x38, 0xe8, + 0x65, 0xd2, 0x48, 0x30, 0xf3, 0xae, 0xb3, 0x90, 0x07, 0x5e, 0x67, 0x11, 0xee, 0xba, 0x66, 0x05, + 0x76, 0x5d, 0xeb, 0xf8, 0x01, 0x87, 0xdf, 0x75, 0xbd, 0x8d, 0x06, 0x6f, 0xf3, 0xf6, 0x6c, 0x1f, + 0xdd, 0x47, 0xa4, 0xa4, 0x5a, 0x7d, 0xa2, 0x02, 0x9e, 0x79, 0x3c, 0x0d, 0x4e, 0x06, 0x90, 0x5f, + 0xa8, 0xd6, 0xeb, 0xd5, 0xb5, 0xc2, 0x11, 0x12, 0xd5, 0xa6, 0xba, 0xee, 0x85, 0x8a, 0x29, 0x57, + 0x2a, 0xaa, 0x56, 0x90, 0x48, 0xb8, 0xb4, 0x72, 0x7d, 0x55, 0x2d, 0xc8, 0x7c, 0x6c, 0xf3, 0x58, + 0xf3, 0x9b, 0x2f, 0x3b, 0x4d, 0xf5, 0x12, 0x33, 0xc4, 0xa3, 0xf9, 0x49, 0x5f, 0xb9, 0x7e, 0x5d, + 0x86, 0xdc, 0x1a, 0xb6, 0xb7, 0x30, 0xfa, 0xb9, 0x04, 0x9b, 0x7c, 0x9b, 0x86, 0xdd, 0xf5, 0x82, + 0xcb, 0x85, 0x9b, 0x7c, 0x6c, 0x9a, 0x72, 0x1d, 0xcc, 0x76, 0x71, 0xd3, 0x32, 0x5b, 0x7e, 0x26, + 0xaf, 0x3f, 0xe2, 0x13, 0xf9, 0x7b, 0xe5, 0x05, 0x20, 0x23, 0x8c, 0x8e, 0x64, 0xa7, 0x2e, 0x09, + 0x30, 0xfd, 0x4a, 0x4d, 0x1f, 0x98, 0xef, 0xca, 0xee, 0x4f, 0x9d, 0x4b, 0xe8, 0xa5, 0xc2, 0xbb, + 0xaf, 0x37, 0x41, 0x9e, 0xa8, 0xa9, 0x3f, 0x46, 0xf7, 0xef, 0x8f, 0x69, 0x1e, 0x65, 0x01, 0x8e, + 0x75, 0x71, 0x1b, 0x37, 0x1d, 0xdc, 0x72, 0x9b, 0xae, 0x36, 0xb0, 0x53, 0xd8, 0x9f, 0x1d, 0xfd, + 0x19, 0x0b, 0xe0, 0x1d, 0x3c, 0x80, 0xd7, 0xf7, 0x11, 0xa5, 0x5b, 0xa1, 0x68, 0x5b, 0xd9, 0xad, + 0x46, 0xad, 0x6d, 0x05, 0x8b, 0xe2, 0xfe, 0xbb, 0xfb, 0x6d, 0xdb, 0xd9, 0x69, 0x93, 0x6f, 0xf4, + 0x80, 0x81, 0xff, 0xae, 0xcc, 0xc3, 0x84, 0x6e, 0x5e, 0x22, 0x9f, 0xb2, 0x31, 0xb5, 0xf6, 0x33, + 0xa1, 0x57, 0x05, 0xc8, 0xdf, 0xc5, 0x21, 0xff, 0x58, 0x31, 0x76, 0xd3, 0x07, 0xfe, 0x17, 0x27, + 0x20, 0xb7, 0xae, 0x77, 0x1d, 0x8c, 0xfe, 0x6f, 0x59, 0x14, 0xf9, 0xeb, 0x61, 0x6e, 0xd3, 0x6a, + 0xee, 0x76, 0x71, 0x8b, 0x6f, 0x94, 0x3d, 0xa9, 0xa3, 0xc0, 0x5c, 0xb9, 0x11, 0x0a, 0x7e, 0x22, + 0x25, 0xeb, 0x6f, 0xc3, 0xef, 0x4b, 0x27, 0x91, 0xb2, 0xbb, 0xeb, 0xba, 0xed, 0x54, 0x37, 0x49, + 0x5a, 0x10, 0x29, 0x9b, 0x4d, 0xe4, 0xa0, 0xcf, 0xc7, 0x40, 0x3f, 0x11, 0x0d, 0xfd, 0xa4, 0x00, + 0xf4, 0x4a, 0x11, 0x26, 0x37, 0x8d, 0x36, 0x26, 0x3f, 0x4c, 0x91, 0x1f, 0xfa, 0x8d, 0x49, 0x44, + 0xf6, 0xc1, 0x98, 0xb4, 0x64, 0xb4, 0xb1, 0x16, 0xfc, 0xe6, 0x4f, 0x64, 0x20, 0x9c, 0xc8, 0xac, + 0x7a, 0xfe, 0xb4, 0xae, 0xe1, 0x65, 0xea, 0x3b, 0xd8, 0x5f, 0x7c, 0x33, 0xe9, 0xe1, 0x96, 0x96, + 0xee, 0xe8, 0x04, 0x8c, 0x19, 0x8d, 0x3c, 0xf3, 0x7e, 0x21, 0x72, 0xaf, 0x5f, 0xc8, 0x73, 0xe4, + 0x64, 0x3d, 0xa2, 0xcf, 0x6c, 0x44, 0x8b, 0x3a, 0xef, 0x03, 0xe4, 0x59, 0x8a, 0xc1, 0xbb, 0x0b, + 0x4c, 0x53, 0xb7, 0xb1, 0xb3, 0xce, 0x7a, 0x62, 0xe4, 0x34, 0x3e, 0x91, 0xb8, 0xf2, 0x75, 0x6b, + 0xfa, 0x0e, 0x26, 0x85, 0x95, 0xdc, 0x6f, 0xd4, 0x45, 0x6b, 0x5f, 0x7a, 0xd8, 0xff, 0xe6, 0x46, + 0xdd, 0xff, 0xf6, 0xab, 0x63, 0xfa, 0xcd, 0xf0, 0xb5, 0x59, 0x90, 0x4b, 0xbb, 0xce, 0x23, 0xba, + 0xfb, 0xfd, 0x81, 0xb0, 0x9f, 0x0b, 0xed, 0xcf, 0x22, 0x2f, 0x92, 0x1f, 0x53, 0xef, 0x9b, 0x50, + 0x4b, 0xc4, 0xfc, 0x69, 0xa2, 0xea, 0x96, 0xbe, 0x8e, 0xbc, 0x55, 0x0e, 0x1c, 0x2c, 0x1f, 0xcc, + 0x1c, 0xdc, 0x34, 0x47, 0x5e, 0xff, 0xc4, 0xf4, 0x0c, 0xc1, 0xbb, 0xdf, 0xf1, 0x64, 0xb9, 0x58, + 0x7d, 0x64, 0x7b, 0x9d, 0x88, 0x72, 0x46, 0xf3, 0x5e, 0xd0, 0xcb, 0x85, 0xdd, 0xce, 0x3d, 0xb1, + 0xc5, 0xba, 0x12, 0x26, 0xb3, 0xa9, 0xc4, 0x2e, 0x0b, 0x8d, 0x29, 0x36, 0x7d, 0xc0, 0xbe, 0xc3, + 0xba, 0x0a, 0x16, 0x0f, 0x8c, 0x18, 0x7a, 0xb5, 0xf0, 0x76, 0x94, 0x57, 0xed, 0x01, 0xeb, 0x85, + 0xc9, 0xe4, 0x2d, 0xb6, 0x59, 0x15, 0x5b, 0x70, 0xfa, 0x12, 0xff, 0xb6, 0x0c, 0x79, 0x6f, 0x0b, + 0x12, 0xbd, 0x39, 0x93, 0xe0, 0x96, 0x75, 0x87, 0x77, 0x21, 0x0c, 0xde, 0x93, 0xac, 0x39, 0x70, + 0xae, 0x86, 0xd9, 0x44, 0xae, 0x86, 0xfc, 0x39, 0x4e, 0x81, 0x76, 0xe4, 0xd5, 0x31, 0xe5, 0xe9, + 0x64, 0x92, 0x16, 0xd6, 0x97, 0xa1, 0xf4, 0xf1, 0x7e, 0x5e, 0x0e, 0x66, 0xbc, 0xa2, 0xcf, 0x19, + 0xad, 0x2d, 0xec, 0xa0, 0x77, 0x49, 0x3f, 0x3a, 0xa8, 0x2b, 0x15, 0x98, 0xb9, 0x48, 0xd8, 0x5e, + 0xd5, 0x2f, 0x59, 0xbb, 0x0e, 0x5d, 0xb9, 0xb8, 0x31, 0x76, 0xdd, 0xc3, 0xab, 0xe7, 0xbc, 0xf7, + 0x87, 0xc6, 0xfd, 0xef, 0xca, 0xd8, 0x5b, 0xf0, 0xf7, 0x1c, 0xb8, 0xf2, 0xc4, 0xc8, 0x62, 0x93, + 0x94, 0x93, 0x90, 0xdf, 0x33, 0xf0, 0xc5, 0x72, 0x8b, 0x5a, 0xb7, 0xf4, 0x0d, 0x7d, 0x58, 0x78, + 0xdf, 0x96, 0x85, 0x9b, 0xf2, 0x92, 0xae, 0x16, 0x8a, 0xed, 0xde, 0x0e, 0x64, 0x6b, 0x0c, 0x67, + 0x8a, 0xf9, 0xcb, 0x38, 0x4b, 0x09, 0x14, 0x31, 0xca, 0x70, 0xe6, 0x43, 0x79, 0xc4, 0x9e, 0x58, + 0xf1, 0x04, 0x30, 0xe2, 0x7b, 0x3a, 0xc5, 0xe2, 0x4b, 0x0c, 0x28, 0x3a, 0x7d, 0xc9, 0xbf, 0x4e, + 0x86, 0xa9, 0x1a, 0x76, 0x96, 0x0c, 0xdc, 0x6e, 0x75, 0x91, 0x7d, 0x70, 0xd3, 0xe8, 0x66, 0xc8, + 0x6f, 0x12, 0x62, 0x83, 0xce, 0x2d, 0xd0, 0x6c, 0xe8, 0xb5, 0x92, 0xe8, 0x8e, 0x30, 0x5d, 0x7d, + 0xf3, 0xb9, 0x1d, 0x09, 0x4c, 0x62, 0x1e, 0xbd, 0xf1, 0x25, 0x8f, 0x21, 0xb0, 0xad, 0x0c, 0x33, + 0xf4, 0xf6, 0xbe, 0x62, 0xdb, 0xd8, 0x32, 0xd1, 0xee, 0x08, 0x5a, 0x88, 0x72, 0x0b, 0xe4, 0x74, + 0x97, 0x1a, 0xdd, 0x7a, 0x45, 0x7d, 0x3b, 0x4f, 0x52, 0x9e, 0xe6, 0x65, 0x4c, 0x10, 0x46, 0x32, + 0x54, 0x6c, 0x9f, 0xe7, 0x31, 0x86, 0x91, 0x1c, 0x58, 0x78, 0xfa, 0x88, 0x7d, 0x55, 0x86, 0xe3, + 0x94, 0x81, 0xb3, 0xd8, 0x76, 0x8c, 0xa6, 0xde, 0xf6, 0x90, 0x7b, 0x41, 0x66, 0x14, 0xd0, 0xad, + 0xc0, 0xec, 0x1e, 0x4b, 0x96, 0x42, 0x78, 0xa6, 0x2f, 0x84, 0x1c, 0x03, 0x1a, 0xff, 0x63, 0x82, + 0x70, 0x7c, 0x9c, 0x54, 0x39, 0x9a, 0x63, 0x0c, 0xc7, 0x27, 0xcc, 0x44, 0xfa, 0x10, 0xbf, 0x84, + 0x86, 0xe6, 0x09, 0xbb, 0xcf, 0x2f, 0x0a, 0x63, 0xbb, 0x01, 0xd3, 0x04, 0x4b, 0xef, 0x47, 0xba, + 0x0c, 0x11, 0xa3, 0xc4, 0x41, 0xbf, 0x43, 0x2f, 0x0c, 0x0b, 0xfe, 0xd5, 0x58, 0x3a, 0xe8, 0x1c, + 0x40, 0xf8, 0x89, 0xed, 0xa4, 0x33, 0x51, 0x9d, 0xb4, 0x24, 0xd6, 0x49, 0xbf, 0x49, 0x38, 0x58, + 0x4a, 0x7f, 0xb6, 0x0f, 0xae, 0x1e, 0x62, 0x61, 0x32, 0x06, 0x97, 0x9e, 0xbe, 0x5e, 0xbc, 0x2a, + 0xdb, 0x7b, 0x4d, 0xfb, 0xc7, 0x46, 0x32, 0x9f, 0x62, 0xfb, 0x03, 0xb9, 0xa7, 0x3f, 0x38, 0x80, + 0x25, 0x7d, 0x03, 0x1c, 0xf5, 0x8a, 0x28, 0x05, 0x6c, 0xe5, 0xbc, 0x50, 0x10, 0x3d, 0xc9, 0xe8, + 0xe3, 0x43, 0x28, 0xc1, 0xa0, 0x3b, 0xe4, 0xe3, 0x3a, 0xb9, 0x64, 0xc6, 0x6e, 0x52, 0x05, 0x39, + 0xbc, 0xab, 0xe7, 0xbf, 0x95, 0xf5, 0xac, 0xdd, 0x0d, 0x72, 0xa7, 0x1b, 0xfa, 0x8b, 0xec, 0x28, + 0x46, 0x84, 0xbb, 0x21, 0x4b, 0x5c, 0xdc, 0xe5, 0xc8, 0x25, 0x8d, 0xb0, 0xc8, 0xf0, 0xc2, 0x3d, + 0xfc, 0x80, 0xb3, 0x72, 0x44, 0x23, 0x7f, 0x2a, 0x37, 0xc2, 0xd1, 0xf3, 0x7a, 0xf3, 0xc2, 0x96, + 0x6d, 0xed, 0x92, 0xdb, 0xaf, 0x2c, 0x7a, 0x8d, 0x16, 0xb9, 0x8e, 0x90, 0xff, 0xa0, 0xdc, 0xea, + 0x9b, 0x0e, 0xb9, 0x41, 0xa6, 0xc3, 0xca, 0x11, 0x6a, 0x3c, 0x28, 0x8f, 0x0f, 0x3a, 0x9d, 0x7c, + 0x6c, 0xa7, 0xb3, 0x72, 0xc4, 0xef, 0x76, 0x94, 0x45, 0x98, 0x6c, 0x19, 0x7b, 0x64, 0xab, 0x9a, + 0xcc, 0xba, 0x06, 0x1d, 0x5d, 0x5e, 0x34, 0xf6, 0xbc, 0x8d, 0xed, 0x95, 0x23, 0x5a, 0xf0, 0xa7, + 0xb2, 0x0c, 0x53, 0x64, 0x5b, 0x80, 0x90, 0x99, 0x4c, 0x74, 0x2c, 0x79, 0xe5, 0x88, 0x16, 0xfe, + 0xeb, 0x5a, 0x1f, 0x59, 0x72, 0xf6, 0xe3, 0x2e, 0x7f, 0xbb, 0x3d, 0x93, 0x68, 0xbb, 0xdd, 0x95, + 0x85, 0xb7, 0xe1, 0x7e, 0x12, 0x72, 0x4d, 0x22, 0x61, 0x89, 0x4a, 0xd8, 0x7b, 0x55, 0xee, 0x80, + 0xec, 0x8e, 0x6e, 0xfb, 0x93, 0xe7, 0xeb, 0x07, 0xd3, 0x5d, 0xd3, 0xed, 0x0b, 0x2e, 0x82, 0xee, + 0x5f, 0x0b, 0x13, 0x90, 0x23, 0x82, 0x0b, 0x1e, 0xd0, 0x5b, 0xb3, 0x9e, 0x19, 0x52, 0xb2, 0x4c, + 0x77, 0xd8, 0xaf, 0x5b, 0xfe, 0x01, 0x99, 0x0f, 0x67, 0x46, 0x63, 0x41, 0xf6, 0xbd, 0xd7, 0x5c, + 0x8e, 0xbc, 0xd7, 0xbc, 0xe7, 0x82, 0xdd, 0x6c, 0xef, 0x05, 0xbb, 0xe1, 0xf2, 0x41, 0x6e, 0xb0, + 0xa3, 0xca, 0x9f, 0x0d, 0x61, 0xba, 0xf4, 0x0a, 0x22, 0x7a, 0x06, 0xde, 0x36, 0x4c, 0xa6, 0xce, + 0xfe, 0x6b, 0xc2, 0x4e, 0x29, 0xa9, 0x51, 0x33, 0x80, 0xbd, 0xf4, 0xfb, 0xa6, 0xdf, 0xca, 0xc2, + 0x29, 0xef, 0x1a, 0xe7, 0x3d, 0x5c, 0xb7, 0xf8, 0xfb, 0x26, 0xd1, 0x1f, 0x8f, 0x44, 0x69, 0xfa, + 0x0c, 0x38, 0x72, 0xdf, 0x01, 0x67, 0xdf, 0x21, 0xe5, 0xec, 0x80, 0x43, 0xca, 0xb9, 0x64, 0x2b, + 0x87, 0x1f, 0x64, 0xf5, 0x67, 0x9d, 0xd7, 0x9f, 0xdb, 0x23, 0x00, 0xea, 0x27, 0x97, 0x91, 0xd8, + 0x37, 0xef, 0x08, 0x34, 0xa5, 0xc6, 0x69, 0xca, 0x5d, 0xc3, 0x33, 0x92, 0xbe, 0xb6, 0xfc, 0x7e, + 0x16, 0x2e, 0x0b, 0x99, 0xa9, 0xe0, 0x8b, 0x54, 0x51, 0x3e, 0x3f, 0x12, 0x45, 0x49, 0x1e, 0x03, + 0x21, 0x6d, 0x8d, 0xf9, 0x13, 0xe1, 0xb3, 0x43, 0xbd, 0x40, 0x05, 0xb2, 0x89, 0x50, 0x96, 0x93, + 0x90, 0xf7, 0x7a, 0x18, 0x0a, 0x0d, 0x7d, 0x4b, 0xd8, 0xdd, 0x88, 0x9d, 0x38, 0x12, 0xe5, 0x6d, + 0x0c, 0xfa, 0x43, 0xd7, 0x35, 0xea, 0xbb, 0xb6, 0x59, 0x36, 0x1d, 0x0b, 0xfd, 0xc2, 0x48, 0x14, + 0x27, 0xf0, 0x86, 0x93, 0x87, 0xf1, 0x86, 0x1b, 0x6a, 0x95, 0xc3, 0xaf, 0xc1, 0xa1, 0xac, 0x72, + 0x44, 0x14, 0x9e, 0x3e, 0x7e, 0x6f, 0x97, 0xe1, 0x24, 0x9d, 0x6c, 0x2d, 0xf0, 0x16, 0x22, 0xba, + 0x6f, 0x14, 0x40, 0x1e, 0xf7, 0xcd, 0x24, 0x7a, 0xcb, 0x19, 0x79, 0xe1, 0x4f, 0x4a, 0xc5, 0xde, + 0xef, 0xc0, 0x4d, 0x07, 0x7b, 0x38, 0x1c, 0x09, 0x52, 0x62, 0xd7, 0x3a, 0x24, 0x60, 0x23, 0x7d, + 0xcc, 0x5e, 0x24, 0x43, 0x9e, 0x5e, 0xdf, 0xbf, 0x91, 0x8a, 0xc3, 0x04, 0x1f, 0xe5, 0x59, 0x60, + 0x47, 0x2e, 0xf1, 0x25, 0xf7, 0xe9, 0xed, 0xc5, 0x1d, 0xd2, 0x2d, 0xf6, 0xdf, 0x95, 0x60, 0xba, + 0x86, 0x9d, 0x92, 0x6e, 0xdb, 0x86, 0xbe, 0x35, 0x2a, 0x8f, 0x6f, 0x51, 0xef, 0x61, 0xf4, 0xbd, + 0x8c, 0xe8, 0x79, 0x9a, 0x60, 0x21, 0xdc, 0x67, 0x35, 0x22, 0x96, 0xe0, 0xc3, 0x42, 0x67, 0x66, + 0x06, 0x51, 0x1b, 0x83, 0xc7, 0xb6, 0x04, 0x13, 0xfe, 0x59, 0xbc, 0x9b, 0xb9, 0xf3, 0x99, 0xdb, + 0xce, 0x8e, 0x7f, 0x0c, 0x86, 0x3c, 0xef, 0x3f, 0x03, 0x86, 0x5e, 0x99, 0xd0, 0x51, 0x3e, 0xfe, + 0x20, 0x61, 0xb2, 0x36, 0x96, 0xc4, 0x1d, 0xfe, 0xb0, 0x8e, 0x0e, 0xfe, 0xee, 0x04, 0x5d, 0x8e, + 0x5c, 0xd5, 0x1d, 0xfc, 0x00, 0xfa, 0xa2, 0x0c, 0x13, 0x35, 0xec, 0xb8, 0xe3, 0x2d, 0x77, 0xb9, + 0xe9, 0xb0, 0x1a, 0xae, 0x30, 0x2b, 0x1e, 0x53, 0x74, 0x0d, 0xe3, 0x1e, 0x98, 0xea, 0xd8, 0x56, + 0x13, 0x77, 0xbb, 0x74, 0xf5, 0x82, 0x75, 0x54, 0xeb, 0x37, 0xfa, 0x13, 0xd6, 0xe6, 0xd7, 0xfd, + 0x7f, 0xb4, 0xf0, 0xf7, 0xa4, 0x66, 0x80, 0x47, 0x89, 0x56, 0x70, 0xdc, 0x66, 0x40, 0x5c, 0xe1, + 0xe9, 0x03, 0xfd, 0x59, 0x19, 0x66, 0x6a, 0xd8, 0x09, 0xa4, 0x98, 0x60, 0x93, 0x23, 0x1a, 0x5e, + 0x0e, 0x4a, 0xf9, 0x60, 0x50, 0x8a, 0x5f, 0x0d, 0xc8, 0x4b, 0x33, 0x20, 0x36, 0xc6, 0xab, 0x01, + 0xc5, 0x38, 0x18, 0xc3, 0xf1, 0xb5, 0x47, 0xc3, 0x14, 0xe1, 0x85, 0x34, 0xd8, 0x5f, 0xce, 0x86, + 0x8d, 0xf7, 0x4b, 0x29, 0x35, 0xde, 0x3b, 0x21, 0xb7, 0xa3, 0xdb, 0x17, 0xba, 0xa4, 0xe1, 0x4e, + 0x8b, 0x98, 0xed, 0x6b, 0x6e, 0x76, 0xcd, 0xfb, 0xab, 0xbf, 0x9f, 0x66, 0x2e, 0x99, 0x9f, 0xe6, + 0xc3, 0x52, 0xa2, 0x91, 0xd0, 0x9b, 0x3b, 0x8c, 0xb0, 0xc9, 0x27, 0x18, 0x37, 0x63, 0xca, 0x4e, + 0x5f, 0x39, 0x5e, 0x20, 0xc3, 0xa4, 0x3b, 0x6e, 0x13, 0x7b, 0xfc, 0xdc, 0xc1, 0xd5, 0xa1, 0xbf, + 0xa1, 0x9f, 0xb0, 0x07, 0xf6, 0x25, 0x32, 0x3a, 0xf3, 0x3e, 0x41, 0x0f, 0x1c, 0x57, 0x78, 0xfa, + 0x78, 0xbc, 0xd3, 0xc3, 0x83, 0xb4, 0x07, 0xf4, 0x06, 0x19, 0xe4, 0x65, 0xec, 0x8c, 0xdb, 0x8a, + 0x7c, 0x9b, 0x70, 0x88, 0x23, 0x4e, 0x60, 0x84, 0xe7, 0xf9, 0x65, 0x3c, 0x9a, 0x06, 0x24, 0x16, + 0xdb, 0x48, 0x88, 0x81, 0xf4, 0x51, 0x7b, 0xaf, 0x87, 0x9a, 0xb7, 0xb9, 0xf0, 0xf3, 0x23, 0xe8, + 0x55, 0xc7, 0xbb, 0xf0, 0xe1, 0x0b, 0x90, 0xd0, 0x38, 0xac, 0xf6, 0xd6, 0xaf, 0xf0, 0xb1, 0x5c, + 0xc5, 0x07, 0x6e, 0x63, 0xdf, 0xc6, 0xcd, 0x0b, 0xb8, 0x85, 0xfe, 0xc3, 0xc1, 0xa1, 0x3b, 0x05, + 0x13, 0x4d, 0x8f, 0x1a, 0x01, 0x6f, 0x52, 0xf3, 0x5f, 0x13, 0xdc, 0x2b, 0xcd, 0x77, 0x44, 0xde, + 0xef, 0x63, 0xbc, 0x57, 0x5a, 0xa0, 0xf8, 0x31, 0x98, 0x2d, 0xde, 0x2c, 0xa3, 0xdc, 0xb4, 0x4c, + 0xf4, 0x9f, 0x0f, 0x0e, 0xcb, 0x55, 0x30, 0x65, 0x34, 0x2d, 0x93, 0x84, 0xa1, 0xf0, 0x0f, 0x01, + 0x05, 0x09, 0xfe, 0x57, 0x75, 0xc7, 0xba, 0xdf, 0xa0, 0xbb, 0xe6, 0x61, 0xc2, 0xb0, 0xc6, 0x84, + 0xcb, 0xfa, 0x61, 0x19, 0x13, 0x7d, 0xca, 0x4e, 0x1f, 0xb2, 0x8f, 0x87, 0xde, 0x6d, 0x5e, 0x57, + 0xf8, 0x88, 0x58, 0x05, 0x1e, 0x66, 0x38, 0x63, 0x6b, 0x71, 0x28, 0xc3, 0x59, 0x0c, 0x03, 0x63, + 0xb8, 0xb1, 0x22, 0xc4, 0x31, 0xf5, 0x35, 0xe0, 0x03, 0xa0, 0x33, 0x3a, 0xf3, 0x70, 0x48, 0x74, + 0x0e, 0xc7, 0x44, 0xfc, 0x00, 0x0d, 0x91, 0x49, 0x2d, 0x1e, 0xf4, 0x5f, 0x46, 0x01, 0xce, 0xed, + 0xc3, 0xf8, 0x2b, 0x78, 0xde, 0x0a, 0x09, 0x6e, 0xc4, 0xde, 0x27, 0x41, 0x97, 0xca, 0x18, 0xef, + 0x8a, 0x17, 0x29, 0x3f, 0x7d, 0x00, 0x9f, 0x2f, 0xc3, 0x1c, 0xf1, 0x11, 0x68, 0x63, 0xdd, 0xf6, + 0x3a, 0xca, 0x91, 0x38, 0xca, 0xbf, 0x53, 0x38, 0xc0, 0x0f, 0x2f, 0x87, 0x90, 0x8f, 0x91, 0x40, + 0x21, 0x16, 0xdd, 0x47, 0x90, 0x85, 0xb1, 0x6c, 0xa3, 0x14, 0x02, 0x16, 0xa8, 0x8a, 0x8f, 0x06, + 0x8f, 0x84, 0x1e, 0xb9, 0xbc, 0x30, 0xfc, 0xc6, 0x36, 0x66, 0x8f, 0x5c, 0x11, 0x26, 0xd2, 0xc7, + 0xe4, 0x0d, 0xb7, 0xd0, 0x05, 0xe7, 0x3a, 0xb9, 0x30, 0xfe, 0xd5, 0xd9, 0xe0, 0x44, 0xdb, 0x67, + 0x47, 0xe2, 0x81, 0x79, 0x80, 0x80, 0xf8, 0x0a, 0x64, 0x6d, 0xeb, 0xa2, 0xb7, 0xb4, 0x35, 0xab, + 0x91, 0x67, 0xef, 0x7a, 0xca, 0xf6, 0xee, 0x8e, 0xe9, 0x9d, 0x0c, 0x9d, 0xd5, 0xfc, 0x57, 0xe5, + 0x3a, 0x98, 0xbd, 0x68, 0x38, 0xdb, 0x2b, 0x58, 0x6f, 0x61, 0x5b, 0xb3, 0x2e, 0x12, 0x8f, 0xb9, + 0x49, 0x8d, 0x4f, 0xe4, 0xfd, 0x57, 0x04, 0xec, 0x4b, 0x72, 0x8b, 0xfc, 0x58, 0x8e, 0xbf, 0x25, + 0xb1, 0x3c, 0xa3, 0xb9, 0x4a, 0x5f, 0x61, 0xde, 0x27, 0xc3, 0x94, 0x66, 0x5d, 0xa4, 0x4a, 0xf2, + 0x7f, 0x1c, 0xae, 0x8e, 0x24, 0x9e, 0xe8, 0x11, 0xc9, 0x05, 0xec, 0x8f, 0x7d, 0xa2, 0x17, 0x5b, + 0xfc, 0x58, 0x4e, 0x2e, 0xcd, 0x68, 0xd6, 0xc5, 0x1a, 0x76, 0xbc, 0x16, 0x81, 0x1a, 0x23, 0x72, + 0xb2, 0x36, 0xba, 0x1e, 0x41, 0x3a, 0x0f, 0x0f, 0xde, 0x93, 0xee, 0x22, 0x04, 0x02, 0x0a, 0x58, + 0x1c, 0xf7, 0x2e, 0xc2, 0x40, 0x0e, 0xc6, 0x10, 0x23, 0x45, 0x86, 0x69, 0xcd, 0xba, 0xe8, 0x0e, + 0x0d, 0x4b, 0x46, 0xbb, 0x3d, 0x9a, 0x11, 0x32, 0xa9, 0xf1, 0xef, 0x8b, 0xc1, 0xe7, 0x62, 0xec, + 0xc6, 0xff, 0x00, 0x06, 0xd2, 0x87, 0xe1, 0x39, 0x5e, 0x63, 0xf1, 0x47, 0x68, 0x73, 0x34, 0x38, + 0x0c, 0xdb, 0x20, 0x02, 0x36, 0x0e, 0xad, 0x41, 0x44, 0x71, 0x30, 0x96, 0x9d, 0x93, 0xb9, 0x12, + 0x19, 0xe6, 0x47, 0xdb, 0x26, 0xde, 0x9d, 0xcc, 0x35, 0x91, 0x0e, 0xbb, 0x1c, 0x23, 0x23, 0x41, + 0x23, 0x81, 0x0b, 0xa2, 0x00, 0x0f, 0xe9, 0xe3, 0xf1, 0x11, 0x19, 0x66, 0x3c, 0x16, 0x1e, 0x21, + 0x56, 0xc0, 0x50, 0x8d, 0x8a, 0xad, 0xc1, 0xe1, 0x34, 0xaa, 0x18, 0x0e, 0xc6, 0x72, 0x2b, 0xa8, + 0x6b, 0xc7, 0x0d, 0x71, 0x7c, 0x3c, 0x0a, 0xc1, 0xa1, 0x8d, 0xb1, 0x11, 0x1e, 0x21, 0x1f, 0xc6, + 0x18, 0x3b, 0xa4, 0x63, 0xe4, 0xcf, 0x09, 0x5a, 0xd1, 0x28, 0x31, 0x38, 0x40, 0x53, 0x18, 0x21, + 0x0c, 0x43, 0x36, 0x85, 0x43, 0x42, 0xe2, 0x6b, 0x32, 0x80, 0xc7, 0xc0, 0x9a, 0xb5, 0x47, 0x2e, + 0xf3, 0x19, 0x41, 0x77, 0xd6, 0xeb, 0x56, 0x2f, 0x0f, 0x70, 0xab, 0x4f, 0x18, 0xc2, 0x25, 0xe9, + 0x4a, 0x20, 0x23, 0x65, 0xb7, 0x92, 0x63, 0x5f, 0x09, 0x8c, 0x2f, 0x3f, 0x7d, 0x8c, 0xbf, 0xe2, + 0x59, 0x73, 0xe1, 0x01, 0xd3, 0xdf, 0x1c, 0x09, 0xca, 0xcc, 0xec, 0x5f, 0xe6, 0x67, 0xff, 0x07, + 0xc0, 0x76, 0x58, 0x1b, 0x71, 0xd0, 0xc1, 0xd1, 0xf4, 0x6d, 0xc4, 0xc3, 0x3b, 0x20, 0xfa, 0xf3, + 0x59, 0x38, 0x4a, 0x3b, 0x91, 0x1f, 0x05, 0x88, 0x13, 0x9e, 0xc3, 0xe3, 0x3a, 0xc9, 0x01, 0x28, + 0x8f, 0x6a, 0x41, 0x2a, 0xc9, 0x52, 0xa6, 0x00, 0x7b, 0x63, 0x59, 0xdd, 0xc8, 0xab, 0x0f, 0x74, + 0x74, 0xb3, 0x25, 0x1e, 0xee, 0x77, 0x00, 0xf0, 0xfe, 0x5a, 0xa3, 0xcc, 0xaf, 0x35, 0xf6, 0x59, + 0x99, 0x4c, 0xbc, 0x73, 0x4d, 0x44, 0xe6, 0xb1, 0x3b, 0xf6, 0x9d, 0xeb, 0xe8, 0xb2, 0xd3, 0x47, + 0xe9, 0xdd, 0x32, 0x64, 0x6b, 0x96, 0xed, 0xa0, 0xe7, 0x26, 0x69, 0x9d, 0x9e, 0xe4, 0x43, 0x90, + 0xfc, 0x77, 0xa5, 0xc4, 0xdd, 0xd2, 0x7c, 0x73, 0xfc, 0x51, 0x67, 0xdd, 0xd1, 0x89, 0x57, 0xb7, + 0x5b, 0x3e, 0x73, 0x5d, 0x73, 0xd2, 0x78, 0x3a, 0x9e, 0xfc, 0x6a, 0xd1, 0x07, 0x30, 0x52, 0x8b, + 0xa7, 0x13, 0x59, 0x72, 0xfa, 0xb8, 0x3d, 0x74, 0x94, 0xfa, 0xb6, 0x2e, 0x19, 0x6d, 0x8c, 0x9e, + 0xeb, 0xb9, 0x8c, 0x54, 0xf4, 0x1d, 0x2c, 0x7e, 0x24, 0x26, 0xd6, 0xb5, 0x95, 0xc4, 0x97, 0x95, + 0xc3, 0xf8, 0xb2, 0x49, 0x1b, 0x94, 0x77, 0x00, 0xdd, 0x63, 0x69, 0xdc, 0x0d, 0x2a, 0xa6, 0xec, + 0xb1, 0xc4, 0xe9, 0x3c, 0x56, 0xc3, 0x8e, 0x67, 0x54, 0x56, 0xfd, 0x1b, 0x58, 0x7e, 0x76, 0x24, + 0x11, 0x3b, 0x83, 0x0b, 0x5e, 0xe4, 0x9e, 0x0b, 0x5e, 0xde, 0xc7, 0x82, 0xb3, 0xc6, 0x83, 0xf3, + 0xd3, 0xd1, 0x02, 0xe2, 0x99, 0x1c, 0x09, 0x4c, 0x6f, 0x0b, 0x60, 0x5a, 0xe7, 0x60, 0xba, 0x63, + 0x48, 0x2e, 0xd2, 0x07, 0xec, 0x57, 0x72, 0x70, 0xd4, 0x9b, 0xf4, 0x17, 0xcd, 0x16, 0x8d, 0xb0, + 0xfa, 0x66, 0xe9, 0x90, 0x37, 0xdb, 0xf6, 0x87, 0x60, 0xe5, 0x62, 0x39, 0xe7, 0x7a, 0x6f, 0xc7, + 0x5f, 0xf0, 0xc2, 0xb9, 0xba, 0x9d, 0x28, 0xd9, 0x69, 0x13, 0xbf, 0x21, 0x3f, 0xf8, 0x8f, 0xbf, + 0xcb, 0x68, 0x42, 0xfc, 0x2e, 0xa3, 0x3f, 0x4d, 0xb6, 0x6e, 0x47, 0x8a, 0xee, 0x11, 0x78, 0xca, + 0xb6, 0x53, 0x82, 0x15, 0x3d, 0x01, 0xee, 0x7e, 0x3c, 0xdc, 0xc9, 0xc2, 0x08, 0x22, 0x43, 0xba, + 0x93, 0x11, 0x02, 0x87, 0xe9, 0x4e, 0x36, 0x88, 0x81, 0x31, 0xdc, 0x6a, 0x9f, 0xa3, 0xbb, 0xf9, + 0xa4, 0xdd, 0xa0, 0xbf, 0x92, 0x52, 0x1f, 0xa5, 0xbf, 0x9f, 0x49, 0xe4, 0xff, 0x4c, 0xf8, 0x8a, + 0x1f, 0xa6, 0x93, 0x78, 0x34, 0xc7, 0x91, 0x1b, 0xc3, 0xba, 0x91, 0x44, 0x7c, 0xd1, 0xcf, 0x19, + 0x2d, 0x67, 0x7b, 0x44, 0x27, 0x3a, 0x2e, 0xba, 0xb4, 0xfc, 0xeb, 0x91, 0xc9, 0x0b, 0xfa, 0xd7, + 0x4c, 0xa2, 0x10, 0x52, 0x81, 0x48, 0x08, 0x5b, 0x11, 0x22, 0x4e, 0x10, 0xf8, 0x29, 0x96, 0xde, + 0x18, 0x35, 0xfa, 0xac, 0xd1, 0xc2, 0xd6, 0x23, 0x50, 0xa3, 0x09, 0x5f, 0xa3, 0xd3, 0xe8, 0x38, + 0x72, 0x3f, 0xa6, 0x1a, 0x1d, 0x88, 0x64, 0x44, 0x1a, 0x1d, 0x4b, 0x2f, 0x7d, 0x19, 0xbf, 0x72, + 0x86, 0x4e, 0xa4, 0x56, 0x0d, 0xf3, 0x02, 0xfa, 0xe7, 0xbc, 0x7f, 0x31, 0xf3, 0x39, 0xc3, 0xd9, + 0xa6, 0xb1, 0x60, 0x7e, 0x5f, 0xf8, 0x6e, 0x94, 0x21, 0xe2, 0xbd, 0xf0, 0xe1, 0xa4, 0x72, 0xfb, + 0xc2, 0x49, 0x15, 0x61, 0xd6, 0x30, 0x1d, 0x6c, 0x9b, 0x7a, 0x7b, 0xa9, 0xad, 0x6f, 0x75, 0x4f, + 0x4d, 0xf4, 0xbd, 0xbc, 0xae, 0xcc, 0xe4, 0xd1, 0xf8, 0x3f, 0xd8, 0xeb, 0x2b, 0x27, 0xf9, 0xeb, + 0x2b, 0x23, 0xa2, 0x5f, 0x4d, 0x45, 0x47, 0xbf, 0x0a, 0xa2, 0x5b, 0xc1, 0xe0, 0xe0, 0xd8, 0xa2, + 0xb6, 0x71, 0xc2, 0x70, 0x7f, 0x37, 0x0b, 0x46, 0x61, 0x0b, 0x42, 0x3f, 0xbe, 0x46, 0x4e, 0xb4, + 0xba, 0xe7, 0x2a, 0xc2, 0x7c, 0xaf, 0x12, 0x24, 0xb6, 0x50, 0xd9, 0xca, 0xcb, 0x3d, 0x95, 0x0f, + 0x4c, 0x9e, 0xac, 0x80, 0xc9, 0xc3, 0x2a, 0x55, 0x4e, 0x4c, 0xa9, 0x92, 0x2c, 0x16, 0x8a, 0xd4, + 0x76, 0x0c, 0xa7, 0x91, 0x72, 0x70, 0xcc, 0x8f, 0x76, 0xdb, 0xe9, 0x60, 0xdd, 0xd6, 0xcd, 0x26, + 0x46, 0x1f, 0x97, 0x46, 0x61, 0xf6, 0x2e, 0xc1, 0xa4, 0xd1, 0xb4, 0xcc, 0x9a, 0xf1, 0x0c, 0xff, + 0x72, 0xb9, 0xf8, 0x20, 0xeb, 0x44, 0x22, 0x65, 0xfa, 0x87, 0x16, 0xfc, 0xab, 0x94, 0x61, 0xaa, + 0xa9, 0xdb, 0x2d, 0x2f, 0x08, 0x5f, 0xae, 0xe7, 0x22, 0xa7, 0x48, 0x42, 0x25, 0xff, 0x17, 0x2d, + 0xfc, 0x5b, 0xa9, 0xf2, 0x42, 0xcc, 0xf7, 0x44, 0xf3, 0x88, 0x24, 0xb6, 0x18, 0xfe, 0xc4, 0xc9, + 0xdc, 0x95, 0x8e, 0x8d, 0xdb, 0xe4, 0x0e, 0x7a, 0xaf, 0x87, 0x98, 0xd2, 0xc2, 0x84, 0xa4, 0xcb, + 0x03, 0xa4, 0xa8, 0x7d, 0x68, 0x8c, 0x7b, 0x79, 0x40, 0x88, 0x8b, 0xf4, 0x35, 0xf3, 0x1d, 0x79, + 0x98, 0xf5, 0x7a, 0x35, 0x2a, 0x4e, 0xf4, 0x7c, 0x72, 0x85, 0xb4, 0x73, 0x2f, 0xbe, 0x84, 0x6a, + 0x07, 0x1f, 0x93, 0x0b, 0x20, 0x5f, 0x08, 0x02, 0x0e, 0xba, 0x8f, 0x49, 0xf7, 0xed, 0x7d, 0xbe, + 0xe6, 0x3d, 0x9e, 0xc6, 0xbd, 0x6f, 0x1f, 0x5f, 0x7c, 0xfa, 0xf8, 0xfc, 0xaa, 0x0c, 0x72, 0xb1, + 0xd5, 0x42, 0xcd, 0x83, 0x43, 0x71, 0x0d, 0x4c, 0xfb, 0x6d, 0x26, 0x8c, 0x01, 0xc9, 0x26, 0x25, + 0x5d, 0x04, 0x0d, 0x64, 0x53, 0x6c, 0x8d, 0x7d, 0x57, 0x21, 0xa6, 0xec, 0xf4, 0x41, 0xf9, 0xcd, + 0x09, 0xda, 0x68, 0x16, 0x2c, 0xeb, 0x02, 0x39, 0x2a, 0xf3, 0x5c, 0x19, 0x72, 0x4b, 0xd8, 0x69, + 0x6e, 0x8f, 0xa8, 0xcd, 0xec, 0xda, 0x6d, 0xbf, 0xcd, 0xec, 0xbb, 0x0f, 0x7f, 0xb0, 0x0d, 0xeb, + 0xb3, 0x35, 0x4f, 0x58, 0x1a, 0x77, 0x74, 0xe7, 0xd8, 0xd2, 0xd3, 0x07, 0xe7, 0x5f, 0x65, 0x98, + 0x0b, 0x56, 0xb8, 0x3c, 0x4c, 0x7e, 0x25, 0xf3, 0x48, 0x5b, 0xef, 0x44, 0x9f, 0x4f, 0x16, 0x22, + 0x2d, 0x90, 0x29, 0x5f, 0xb3, 0x94, 0x17, 0x16, 0x13, 0x04, 0x4f, 0x13, 0x63, 0x70, 0x0c, 0x33, + 0x78, 0x19, 0x26, 0x09, 0x43, 0x8b, 0xc6, 0x1e, 0x71, 0x1d, 0xe4, 0x16, 0x1a, 0x9f, 0x39, 0x92, + 0x85, 0xc6, 0x3b, 0xf8, 0x85, 0x46, 0xc1, 0x88, 0xc7, 0xfe, 0x3a, 0x63, 0x42, 0x5f, 0x1a, 0xf7, + 0xff, 0x91, 0x2f, 0x33, 0x26, 0xf0, 0xa5, 0x19, 0x50, 0x7e, 0xfa, 0x88, 0xbe, 0xe6, 0x3f, 0xd2, + 0xce, 0xd6, 0xdf, 0x50, 0x45, 0xff, 0xd7, 0x31, 0xc8, 0x9e, 0x75, 0x1f, 0xfe, 0x67, 0x78, 0x23, + 0xd6, 0x4b, 0x47, 0x10, 0x9c, 0xe1, 0xa9, 0x90, 0x75, 0xe9, 0xd3, 0x69, 0xcb, 0x8d, 0x62, 0xbb, + 0xbb, 0x2e, 0x23, 0x1a, 0xf9, 0x4f, 0x39, 0x09, 0xf9, 0xae, 0xb5, 0x6b, 0x37, 0x5d, 0xf3, 0xd9, + 0xd5, 0x18, 0xfa, 0x96, 0x34, 0x28, 0x29, 0x47, 0x7a, 0x7e, 0x74, 0x2e, 0xa3, 0xcc, 0x05, 0x49, + 0x32, 0x77, 0x41, 0x52, 0x82, 0xfd, 0x03, 0x01, 0xde, 0xd2, 0xd7, 0x88, 0xbf, 0x22, 0x77, 0x05, + 0xb6, 0x46, 0x05, 0x7b, 0x84, 0x58, 0x0e, 0xaa, 0x0e, 0x49, 0x1d, 0xbe, 0x79, 0xd1, 0x06, 0x71, + 0xe0, 0xc7, 0xea, 0xf0, 0x2d, 0xc0, 0xc3, 0x58, 0x4e, 0xa9, 0xe7, 0xa9, 0x93, 0xea, 0x7d, 0xa3, + 0x44, 0x37, 0xcb, 0x29, 0xfd, 0x81, 0xd0, 0x19, 0xa1, 0xf3, 0xea, 0xd0, 0xe8, 0x1c, 0x92, 0xfb, + 0xea, 0x1f, 0xc8, 0x24, 0x12, 0xa6, 0x6f, 0xe4, 0x88, 0x5f, 0x74, 0x94, 0x18, 0x22, 0x77, 0x0c, + 0xe6, 0xe2, 0x40, 0xcf, 0x0e, 0x1f, 0x1a, 0x9c, 0x17, 0x1d, 0xc3, 0xff, 0xb8, 0x43, 0x83, 0x8b, + 0x32, 0x92, 0x3e, 0x90, 0xaf, 0xf7, 0x2e, 0x16, 0x2b, 0x36, 0x1d, 0x63, 0x6f, 0xc4, 0x2d, 0x8d, + 0x1f, 0x5e, 0x12, 0x46, 0x03, 0xde, 0x27, 0x21, 0x8f, 0xc3, 0x71, 0x47, 0x03, 0x16, 0x63, 0x23, + 0x7d, 0x98, 0xfe, 0x36, 0xef, 0x4a, 0x8f, 0xae, 0xcd, 0xbc, 0x81, 0xae, 0x06, 0xe0, 0x83, 0xa3, + 0x75, 0x06, 0x66, 0x98, 0xa9, 0xbf, 0x7f, 0x61, 0x0d, 0x97, 0x96, 0xf4, 0xa0, 0x7b, 0x20, 0xb2, + 0x91, 0x2f, 0x0c, 0x24, 0x58, 0xf0, 0x15, 0x61, 0x62, 0x2c, 0xf7, 0xc1, 0xf9, 0x63, 0xd8, 0x98, + 0xb0, 0xfa, 0x7d, 0x16, 0xab, 0x2a, 0x8f, 0xd5, 0x6d, 0x22, 0x62, 0x12, 0x1b, 0xd3, 0x84, 0xe6, + 0x8d, 0x6f, 0x0f, 0xe0, 0xd2, 0x38, 0xb8, 0x9e, 0x3a, 0x34, 0x1f, 0xe9, 0x23, 0xf6, 0x32, 0xaf, + 0x3b, 0xac, 0x79, 0x26, 0xfb, 0x68, 0xba, 0x43, 0x3a, 0x1b, 0x90, 0xb9, 0xd9, 0x40, 0x42, 0x7f, + 0xfb, 0xd0, 0x8d, 0xd4, 0x67, 0x6e, 0x10, 0x44, 0xd9, 0x11, 0xfb, 0xdb, 0x0f, 0xe4, 0x20, 0x7d, + 0x70, 0xfe, 0x51, 0x06, 0x58, 0xb6, 0xad, 0xdd, 0x4e, 0xd5, 0x6e, 0x61, 0x1b, 0xfd, 0x4d, 0x38, + 0x01, 0x78, 0xf1, 0x08, 0x26, 0x00, 0xeb, 0x00, 0x5b, 0x01, 0x71, 0xaa, 0xe1, 0xb7, 0x88, 0x99, + 0xfb, 0x21, 0x53, 0x1a, 0x43, 0x83, 0xbf, 0x72, 0xf6, 0x69, 0x3c, 0xc6, 0x71, 0x7d, 0x56, 0x48, + 0x6e, 0x94, 0x13, 0x80, 0x77, 0x06, 0x58, 0xd7, 0x39, 0xac, 0xef, 0x3e, 0x00, 0x27, 0xe9, 0x63, + 0xfe, 0x4f, 0x13, 0x30, 0xed, 0x6d, 0xd7, 0x79, 0x32, 0xfd, 0xfb, 0x10, 0xf4, 0xdf, 0x1c, 0x01, + 0xe8, 0x1b, 0x30, 0x63, 0x85, 0xd4, 0xbd, 0x3e, 0x95, 0x5d, 0x80, 0x89, 0x85, 0x9d, 0xe1, 0x4b, + 0xe3, 0xc8, 0xa0, 0x8f, 0xb2, 0xc8, 0x6b, 0x3c, 0xf2, 0x77, 0xc4, 0xc8, 0x9b, 0xa1, 0x38, 0x4a, + 0xe8, 0xdf, 0x15, 0x40, 0xbf, 0xc1, 0x41, 0x5f, 0x3c, 0x08, 0x2b, 0x63, 0x08, 0xb7, 0x2f, 0x43, + 0x96, 0x9c, 0x8e, 0xfb, 0xad, 0x14, 0xe7, 0xf7, 0xa7, 0x60, 0x82, 0x34, 0xd9, 0x60, 0xde, 0xe1, + 0xbf, 0xba, 0x5f, 0xf4, 0x4d, 0x07, 0xdb, 0x81, 0xc7, 0x82, 0xff, 0xea, 0xf2, 0xe0, 0x7b, 0x25, + 0x77, 0x4f, 0xe5, 0xbd, 0x8d, 0xc8, 0x20, 0x61, 0xe8, 0x49, 0x09, 0x2b, 0xf1, 0x91, 0x9d, 0x97, + 0x1b, 0x66, 0x52, 0x32, 0x80, 0x91, 0xf4, 0x81, 0xff, 0x8b, 0x2c, 0x9c, 0xf2, 0x56, 0x95, 0x96, + 0x6c, 0x6b, 0xa7, 0xe7, 0x76, 0x2b, 0xe3, 0xe0, 0xba, 0x70, 0x3d, 0xcc, 0x39, 0x9c, 0x3f, 0x36, + 0xd5, 0x89, 0x9e, 0x54, 0xf4, 0x67, 0xac, 0x4f, 0xc5, 0xd3, 0x79, 0x24, 0x17, 0x62, 0x04, 0x18, + 0xc5, 0x7b, 0xe2, 0x85, 0x7a, 0x41, 0x46, 0x99, 0x45, 0x2a, 0x79, 0xa8, 0x35, 0xcb, 0x40, 0xa7, + 0x72, 0x22, 0x3a, 0xf5, 0xfe, 0x40, 0xa7, 0xfe, 0x03, 0xa7, 0x53, 0xcb, 0x07, 0x17, 0x49, 0xfa, + 0xba, 0xf5, 0xea, 0x60, 0x63, 0x28, 0xd8, 0xb6, 0xdb, 0x49, 0x61, 0xb3, 0x8e, 0xf5, 0x47, 0xca, + 0x72, 0xfe, 0x48, 0xfc, 0x7d, 0x14, 0x09, 0x66, 0xc2, 0x3c, 0xd7, 0x11, 0xba, 0x34, 0x07, 0x92, + 0xe1, 0x73, 0x27, 0x19, 0xad, 0xa1, 0xe6, 0xba, 0xb1, 0x05, 0x8d, 0x61, 0x6d, 0x69, 0x0e, 0xf2, + 0x4b, 0x46, 0xdb, 0xc1, 0x36, 0xfa, 0x0a, 0x9d, 0xe9, 0xbe, 0x3a, 0xc5, 0x01, 0x60, 0x11, 0xf2, + 0x9b, 0xa4, 0x34, 0x6a, 0x32, 0xdf, 0x24, 0xd6, 0x7a, 0x3c, 0x0e, 0x35, 0xfa, 0x6f, 0xd2, 0xe8, + 0x7c, 0x3d, 0x64, 0x46, 0x36, 0x45, 0x4e, 0x10, 0x9d, 0x6f, 0x30, 0x0b, 0x63, 0xb9, 0x98, 0x2a, + 0xaf, 0xe1, 0x1d, 0x77, 0x8c, 0xbf, 0x90, 0x1e, 0xc2, 0x05, 0x90, 0x8d, 0x56, 0x97, 0x74, 0x8e, + 0x53, 0x9a, 0xfb, 0x98, 0xd4, 0x57, 0xa8, 0x57, 0x54, 0x1e, 0xcb, 0xe3, 0xf6, 0x15, 0x12, 0xe2, + 0x22, 0x7d, 0xcc, 0xbe, 0x4f, 0x1c, 0x45, 0x3b, 0x6d, 0xbd, 0x89, 0x5d, 0xee, 0x53, 0x43, 0xcd, + 0xeb, 0xc9, 0xb2, 0x7e, 0x4f, 0xc6, 0xb4, 0xd3, 0xdc, 0x01, 0xda, 0xe9, 0xb0, 0xcb, 0x90, 0x81, + 0xcc, 0x49, 0xc5, 0x0f, 0x6d, 0x19, 0x32, 0x96, 0x8d, 0x31, 0x5c, 0x3b, 0xea, 0x1f, 0xa4, 0x1d, + 0x6b, 0x6b, 0x1d, 0x76, 0x93, 0x86, 0x0a, 0x6b, 0x64, 0x87, 0x66, 0x87, 0xd9, 0xa4, 0x89, 0xe6, + 0x61, 0x0c, 0x68, 0xcd, 0x51, 0xb4, 0x3e, 0x47, 0x87, 0xd1, 0x94, 0xf7, 0x49, 0xbb, 0x96, 0xed, + 0x24, 0xdb, 0x27, 0x75, 0xb9, 0xd3, 0xc8, 0x7f, 0x49, 0x0f, 0x5e, 0xf1, 0xe7, 0xaa, 0x47, 0x35, + 0x7c, 0x26, 0x38, 0x78, 0x35, 0x88, 0x81, 0xf4, 0xe1, 0x7d, 0xcb, 0x21, 0x0d, 0x9e, 0xc3, 0x36, + 0x47, 0xda, 0x06, 0x46, 0x36, 0x74, 0x0e, 0xd3, 0x1c, 0xa3, 0x79, 0x48, 0x1f, 0xaf, 0xef, 0x30, + 0x03, 0xe7, 0x9b, 0xc6, 0x38, 0x70, 0xfa, 0x2d, 0x33, 0x37, 0x64, 0xcb, 0x1c, 0x76, 0xff, 0x87, + 0xca, 0x7a, 0x74, 0x03, 0xe6, 0x30, 0xfb, 0x3f, 0x31, 0x4c, 0xa4, 0x8f, 0xf8, 0x9b, 0x65, 0xc8, + 0xd5, 0xc6, 0x3f, 0x5e, 0x0e, 0x3b, 0x17, 0x21, 0xb2, 0xaa, 0x8d, 0x6c, 0xb8, 0x1c, 0x66, 0x2e, + 0x12, 0xc9, 0xc2, 0x18, 0x02, 0xef, 0x1f, 0x85, 0x19, 0xb2, 0x24, 0xe2, 0x6f, 0xb3, 0x7e, 0x87, + 0x8e, 0x9a, 0x0f, 0xa7, 0xd8, 0x56, 0xef, 0x81, 0x49, 0x7f, 0xff, 0x8e, 0x8e, 0x9c, 0xf3, 0x62, + 0xed, 0xd3, 0xe7, 0x52, 0x0b, 0xfe, 0x3f, 0x90, 0x33, 0xc4, 0xc8, 0xf7, 0x6a, 0x87, 0x75, 0x86, + 0x38, 0xd4, 0xfd, 0xda, 0x3f, 0x0d, 0x47, 0xd4, 0xff, 0x9c, 0x1e, 0xe6, 0xbd, 0xfb, 0xb8, 0xd9, + 0x3e, 0xfb, 0xb8, 0x1f, 0x67, 0xb1, 0xac, 0xf1, 0x58, 0xde, 0x29, 0x2a, 0xc2, 0x11, 0x8e, 0xb5, + 0xef, 0x0e, 0xe0, 0x3c, 0xcb, 0xc1, 0xb9, 0x70, 0x20, 0x5e, 0xc6, 0x70, 0xf0, 0x31, 0x1b, 0x8e, + 0xb9, 0x9f, 0x48, 0xb1, 0x1d, 0xf7, 0x9c, 0xaa, 0xc8, 0xee, 0x3b, 0x55, 0xc1, 0xb5, 0xf4, 0xdc, + 0x01, 0x5b, 0xfa, 0x27, 0x58, 0xed, 0xa8, 0xf3, 0xda, 0xf1, 0x54, 0x71, 0x44, 0x46, 0x37, 0x32, + 0xbf, 0x27, 0x50, 0x8f, 0x73, 0x9c, 0x7a, 0x94, 0x0e, 0xc6, 0x4c, 0xfa, 0xfa, 0xf1, 0x87, 0xfe, + 0x84, 0xf6, 0x90, 0xdb, 0xfb, 0xb0, 0x5b, 0xc5, 0x9c, 0x10, 0x47, 0x36, 0x72, 0x0f, 0xb3, 0x55, + 0x3c, 0x88, 0x93, 0x31, 0xc4, 0x62, 0x9b, 0x85, 0x69, 0xc2, 0xd3, 0x39, 0xa3, 0xb5, 0x85, 0x1d, + 0xf4, 0x1a, 0xcf, 0x47, 0xd1, 0x8f, 0x7c, 0x39, 0xa2, 0xf0, 0x44, 0x51, 0xe7, 0x5d, 0x93, 0x7a, + 0x74, 0x78, 0x4c, 0xce, 0x33, 0x0c, 0x8e, 0x3b, 0x82, 0xe2, 0x40, 0x0e, 0xd2, 0x87, 0xec, 0xa3, + 0x9e, 0xbb, 0xcd, 0xaa, 0x7e, 0xc9, 0xda, 0x75, 0xd0, 0x83, 0x23, 0xe8, 0xa0, 0x17, 0x20, 0xdf, + 0x26, 0xd4, 0xe8, 0xb1, 0x8c, 0xf8, 0xe9, 0x0e, 0x15, 0x81, 0x57, 0xbe, 0x46, 0xff, 0x4c, 0x7a, + 0x36, 0x23, 0x94, 0xa3, 0x47, 0x67, 0xdc, 0x67, 0x33, 0x06, 0x94, 0x3f, 0x96, 0x3b, 0x76, 0x26, + 0xdd, 0xd2, 0x8d, 0x1d, 0xc3, 0x19, 0x51, 0x04, 0x87, 0xb6, 0x4b, 0xcb, 0x8f, 0xe0, 0x40, 0x5e, + 0x92, 0x9e, 0x18, 0x65, 0xa4, 0xe2, 0xfe, 0x3e, 0xee, 0x13, 0xa3, 0xf1, 0xc5, 0xa7, 0x8f, 0xc9, + 0xaf, 0x7b, 0x2d, 0xeb, 0xac, 0xe7, 0x7c, 0x9b, 0xa2, 0x5f, 0xef, 0xd0, 0x8d, 0xc5, 0x63, 0xed, + 0xf0, 0x1a, 0x4b, 0xdf, 0xf2, 0xd3, 0x07, 0xe6, 0xbf, 0xfd, 0x24, 0xe4, 0x16, 0xf1, 0xf9, 0xdd, + 0x2d, 0x74, 0x07, 0x4c, 0xd6, 0x6d, 0x8c, 0xcb, 0xe6, 0xa6, 0xe5, 0x4a, 0xd7, 0x71, 0x9f, 0x7d, + 0x48, 0xe8, 0x9b, 0x8b, 0xc7, 0x36, 0xd6, 0x5b, 0xe1, 0xf9, 0x33, 0xff, 0x15, 0xbd, 0x54, 0x82, + 0x6c, 0xcd, 0xd1, 0x1d, 0x34, 0x15, 0x60, 0x8b, 0x1e, 0x64, 0xb1, 0xb8, 0x83, 0xc7, 0xe2, 0x7a, + 0x4e, 0x16, 0x84, 0x83, 0x79, 0xf7, 0xff, 0x08, 0x00, 0x10, 0x4c, 0xde, 0xdf, 0xb5, 0x4c, 0x37, + 0x87, 0x7f, 0x04, 0xd2, 0x7f, 0x47, 0xaf, 0x0a, 0xc4, 0x7d, 0x17, 0x27, 0xee, 0xc7, 0x8a, 0x15, + 0x31, 0x86, 0x95, 0x36, 0x09, 0xa6, 0x5c, 0xd1, 0xae, 0x60, 0xbd, 0xd5, 0x45, 0x3f, 0x11, 0x2a, + 0x7f, 0x84, 0x98, 0xd1, 0x07, 0x84, 0x83, 0x71, 0x7a, 0xb5, 0x0a, 0x88, 0x47, 0x7b, 0x74, 0xf8, + 0x9b, 0xff, 0x12, 0x1f, 0x8c, 0xe4, 0x66, 0xc8, 0x1a, 0xe6, 0xa6, 0x45, 0xfd, 0x0b, 0xaf, 0x8c, + 0xa0, 0xed, 0xea, 0x84, 0x46, 0x32, 0x0a, 0x46, 0xea, 0x8c, 0x67, 0x6b, 0x2c, 0x97, 0xde, 0x65, + 0xdd, 0xd2, 0xd1, 0xff, 0x3e, 0x50, 0xd8, 0x8a, 0x02, 0xd9, 0x8e, 0xee, 0x6c, 0xd3, 0xa2, 0xc9, + 0xb3, 0x6b, 0x23, 0xef, 0x9a, 0xba, 0x69, 0x99, 0x97, 0x76, 0x8c, 0x67, 0x04, 0x77, 0xeb, 0x72, + 0x69, 0x2e, 0xe7, 0x5b, 0xd8, 0xc4, 0xb6, 0xee, 0xe0, 0xda, 0xde, 0x16, 0x99, 0x63, 0x4d, 0x6a, + 0x6c, 0x52, 0x62, 0xfd, 0x77, 0x39, 0x8e, 0xd6, 0xff, 0x4d, 0xa3, 0x8d, 0x49, 0xa4, 0x26, 0xaa, + 0xff, 0xfe, 0x7b, 0x22, 0xfd, 0xef, 0x53, 0x44, 0xfa, 0x68, 0xfc, 0x9b, 0x04, 0x33, 0x35, 0x57, + 0xe1, 0x6a, 0xbb, 0x3b, 0x3b, 0xba, 0x7d, 0x09, 0x5d, 0x1b, 0xa2, 0xc2, 0xa8, 0x66, 0x86, 0xf7, + 0x4b, 0xf9, 0x03, 0xe1, 0x6b, 0xa5, 0x69, 0xd3, 0x66, 0x4a, 0x48, 0xdc, 0x0e, 0x1e, 0x0f, 0x39, + 0x57, 0xbd, 0x7d, 0x8f, 0xcb, 0xd8, 0x86, 0xe0, 0xe5, 0x14, 0x8c, 0x68, 0x35, 0x90, 0xb7, 0x31, + 0x44, 0xd3, 0x90, 0xe0, 0x68, 0xcd, 0xd1, 0x9b, 0x17, 0x96, 0x2d, 0xdb, 0xda, 0x75, 0x0c, 0x13, + 0x77, 0xd1, 0xa3, 0x42, 0x04, 0x7c, 0xfd, 0xcf, 0x84, 0xfa, 0x8f, 0x7e, 0x98, 0x11, 0x1d, 0x45, + 0x83, 0x6e, 0x95, 0x25, 0x1f, 0x11, 0xa0, 0x4a, 0x6c, 0x5c, 0x14, 0xa1, 0x98, 0xbe, 0xd0, 0xde, + 0x24, 0x43, 0x41, 0x7d, 0xa0, 0x63, 0xd9, 0xce, 0xaa, 0xd5, 0xd4, 0xdb, 0x5d, 0xc7, 0xb2, 0x31, + 0xaa, 0xc6, 0x4a, 0xcd, 0xed, 0x61, 0x5a, 0x56, 0x33, 0x1c, 0x1c, 0xe9, 0x1b, 0xab, 0x76, 0x32, + 0xaf, 0xe3, 0x1f, 0x15, 0xde, 0x65, 0xf4, 0xa4, 0xd2, 0xcb, 0x51, 0x84, 0x9e, 0xf7, 0xeb, 0xd2, + 0x92, 0x1d, 0x96, 0x10, 0xdb, 0x79, 0x14, 0x62, 0x6a, 0x0c, 0x4b, 0xe5, 0x12, 0xcc, 0xd6, 0x76, + 0xcf, 0x07, 0x44, 0xba, 0xac, 0x11, 0xf2, 0x5a, 0xe1, 0x28, 0x15, 0x54, 0xf1, 0x58, 0x42, 0x11, + 0xf2, 0xbd, 0x0e, 0x66, 0xbb, 0x6c, 0x36, 0x8a, 0x37, 0x9f, 0x28, 0x18, 0x9d, 0x62, 0x70, 0xa9, + 0xe9, 0x0b, 0xf0, 0x3d, 0x12, 0xcc, 0x56, 0x3b, 0xd8, 0xc4, 0x2d, 0xcf, 0x0b, 0x92, 0x13, 0xe0, + 0x4b, 0x13, 0x0a, 0x90, 0x23, 0x14, 0x21, 0xc0, 0xd0, 0x63, 0x79, 0xd1, 0x17, 0x5e, 0x98, 0x90, + 0x48, 0x70, 0x71, 0xa5, 0xa5, 0x2f, 0xb8, 0x2f, 0x4b, 0x30, 0xad, 0xed, 0x9a, 0xeb, 0xb6, 0xe5, + 0x8e, 0xc6, 0x36, 0xba, 0x33, 0xec, 0x20, 0x6e, 0x82, 0x63, 0xad, 0x5d, 0x9b, 0xac, 0x3f, 0x95, + 0xcd, 0x1a, 0x6e, 0x5a, 0x66, 0xab, 0x4b, 0xea, 0x91, 0xd3, 0xf6, 0x7f, 0xb8, 0x3d, 0xfb, 0xdc, + 0x6f, 0xca, 0x19, 0xf4, 0x7c, 0xe1, 0x50, 0x37, 0x5e, 0xe5, 0x99, 0xa2, 0xc5, 0x7b, 0x02, 0xc1, + 0x80, 0x36, 0x83, 0x4a, 0x48, 0x5f, 0xb8, 0x9f, 0x93, 0x40, 0x29, 0x36, 0x9b, 0xd6, 0xae, 0xe9, + 0xd4, 0x70, 0x1b, 0x37, 0x9d, 0xba, 0xad, 0x37, 0x31, 0x6b, 0x3f, 0x17, 0x40, 0x6e, 0x19, 0x36, + 0xed, 0x83, 0xdd, 0x47, 0x2a, 0xc7, 0x97, 0x0a, 0xef, 0x38, 0x7a, 0xb5, 0xdc, 0x5f, 0x4a, 0x02, + 0x71, 0x8a, 0xed, 0x2b, 0x0a, 0x16, 0x94, 0xbe, 0x54, 0x3f, 0x21, 0xc1, 0x94, 0xdf, 0x63, 0x6f, + 0x89, 0x08, 0xf3, 0xd7, 0x13, 0x4e, 0x46, 0x02, 0xe2, 0x09, 0x64, 0xf8, 0x8e, 0x04, 0xb3, 0x8a, + 0x28, 0xfa, 0xc9, 0x44, 0x57, 0x4c, 0x2e, 0x3a, 0xf7, 0xb5, 0x52, 0x6d, 0x2c, 0x55, 0x57, 0x17, + 0x55, 0xad, 0x20, 0xa3, 0xaf, 0x48, 0x90, 0x5d, 0x37, 0xcc, 0x2d, 0x36, 0xba, 0xd2, 0x71, 0xd7, + 0x8e, 0x6c, 0xe1, 0x07, 0x68, 0x4b, 0xf7, 0x5e, 0x94, 0x5b, 0xe1, 0xb8, 0xb9, 0xbb, 0x73, 0x1e, + 0xdb, 0xd5, 0x4d, 0x32, 0xca, 0x76, 0xeb, 0x56, 0x0d, 0x9b, 0x9e, 0x11, 0x9a, 0xd3, 0xfa, 0x7e, + 0xe3, 0x4d, 0x30, 0x81, 0xc9, 0x83, 0xcb, 0x49, 0x84, 0xc4, 0x03, 0xa6, 0x24, 0x86, 0xa9, 0x44, + 0xd3, 0x86, 0x3e, 0xc4, 0xd3, 0xd7, 0xd4, 0x3f, 0xca, 0xc1, 0x89, 0xa2, 0x79, 0x89, 0xd8, 0x14, + 0x5e, 0x07, 0x5f, 0xda, 0xd6, 0xcd, 0x2d, 0x4c, 0x06, 0x88, 0x40, 0xe2, 0x6c, 0x88, 0xfe, 0x0c, + 0x1f, 0xa2, 0x5f, 0xd1, 0x60, 0xc2, 0xb2, 0x5b, 0xd8, 0x5e, 0xb8, 0x44, 0x78, 0xea, 0x5d, 0x76, + 0xa6, 0x6d, 0xb2, 0x5f, 0x11, 0xf3, 0x94, 0xfc, 0x7c, 0xd5, 0xfb, 0x5f, 0xf3, 0x09, 0x9d, 0xb9, + 0x09, 0x26, 0x68, 0x9a, 0x32, 0x03, 0x93, 0x55, 0x6d, 0x51, 0xd5, 0x1a, 0xe5, 0xc5, 0xc2, 0x11, + 0xe5, 0x32, 0x38, 0x5a, 0xae, 0xab, 0x5a, 0xb1, 0x5e, 0xae, 0x56, 0x1a, 0x24, 0xbd, 0x90, 0x41, + 0xcf, 0xc9, 0x8a, 0x7a, 0xf6, 0xc6, 0x33, 0xd3, 0x0f, 0x56, 0x0d, 0x26, 0x9a, 0x5e, 0x06, 0x32, + 0x84, 0x4e, 0x27, 0xaa, 0x1d, 0x25, 0xe8, 0x25, 0x68, 0x3e, 0x21, 0xe5, 0x34, 0xc0, 0x45, 0xdb, + 0x32, 0xb7, 0xc2, 0x53, 0x87, 0x93, 0x1a, 0x93, 0x82, 0x1e, 0xcc, 0x40, 0xde, 0xfb, 0x87, 0x5c, + 0x49, 0x42, 0x9e, 0x42, 0xc1, 0xfb, 0xef, 0xae, 0xc5, 0x4b, 0xe4, 0x15, 0x4e, 0xb4, 0xe8, 0xab, + 0xab, 0x8b, 0x9e, 0x0c, 0x3c, 0x4b, 0x98, 0x56, 0xe5, 0x66, 0xc8, 0x7b, 0xff, 0x52, 0xaf, 0x83, + 0xe8, 0xf0, 0xa2, 0x5e, 0x36, 0x41, 0x3f, 0x65, 0x71, 0x99, 0xa6, 0xaf, 0xcd, 0x1f, 0x94, 0x60, + 0xb2, 0x82, 0x9d, 0xd2, 0x36, 0x6e, 0x5e, 0x40, 0x8f, 0xe1, 0x17, 0x40, 0xdb, 0x06, 0x36, 0x9d, + 0xfb, 0x76, 0xda, 0xc1, 0x02, 0xa8, 0x9f, 0x80, 0x9e, 0xc7, 0x76, 0xbe, 0x77, 0xf3, 0xfa, 0x73, + 0x63, 0x9f, 0xba, 0xfa, 0x25, 0x44, 0xa8, 0xcc, 0x49, 0xc8, 0xdb, 0xb8, 0xbb, 0xdb, 0xf6, 0x17, + 0xd1, 0xe8, 0x1b, 0x7a, 0x28, 0x10, 0x67, 0x89, 0x13, 0xe7, 0xcd, 0xe2, 0x45, 0x8c, 0x21, 0x5e, + 0x69, 0x16, 0x26, 0xca, 0xa6, 0xe1, 0x18, 0x7a, 0x1b, 0x3d, 0x3f, 0x0b, 0xb3, 0x35, 0xec, 0xac, + 0xeb, 0xb6, 0xbe, 0x83, 0x1d, 0x6c, 0x77, 0xd1, 0xf7, 0xf8, 0x3e, 0xa1, 0xd3, 0xd6, 0x9d, 0x4d, + 0xcb, 0xde, 0xf1, 0x55, 0xd3, 0x7f, 0x77, 0x55, 0x73, 0x0f, 0xdb, 0xdd, 0x90, 0x2f, 0xff, 0xd5, + 0xfd, 0x72, 0xd1, 0xb2, 0x2f, 0xb8, 0x83, 0x20, 0x9d, 0xa6, 0xd1, 0x57, 0x97, 0x5e, 0xdb, 0xda, + 0x5a, 0xc5, 0x7b, 0xd8, 0x0f, 0x97, 0x16, 0xbc, 0xbb, 0x73, 0x81, 0x96, 0x55, 0xb1, 0x1c, 0xb7, + 0xd3, 0x5e, 0xb5, 0xb6, 0xbc, 0x78, 0xb1, 0x93, 0x1a, 0x9f, 0x18, 0xe6, 0xd2, 0xf7, 0x30, 0xc9, + 0x95, 0x67, 0x73, 0xd1, 0x44, 0x65, 0x1e, 0x94, 0xe0, 0xb7, 0x3a, 0x6e, 0xe3, 0x1d, 0xec, 0xd8, + 0x97, 0xc8, 0xb5, 0x10, 0x93, 0x5a, 0x9f, 0x2f, 0x74, 0x80, 0x16, 0x9f, 0xac, 0x53, 0xe9, 0xcd, + 0x73, 0x92, 0x3b, 0xd0, 0x64, 0x5d, 0x84, 0xe2, 0x58, 0xae, 0xbd, 0x92, 0x5d, 0x6b, 0xe6, 0xe5, + 0x32, 0x64, 0xc9, 0xe0, 0xf9, 0xe6, 0x0c, 0xb7, 0xc2, 0xb4, 0x83, 0xbb, 0x5d, 0x7d, 0x0b, 0xfb, + 0x2b, 0x4c, 0xf4, 0x55, 0xb9, 0x0d, 0x72, 0x6d, 0x82, 0xa9, 0x37, 0x38, 0x5c, 0xcb, 0xd5, 0xcc, + 0x35, 0x30, 0x5c, 0x5a, 0xc1, 0x48, 0x40, 0xe0, 0xd6, 0xbc, 0x3f, 0xce, 0xdc, 0x03, 0x39, 0x0f, + 0xfe, 0x29, 0xc8, 0x2d, 0xaa, 0x0b, 0x1b, 0xcb, 0x85, 0x23, 0xee, 0xa3, 0xcf, 0xdf, 0x14, 0xe4, + 0x96, 0x8a, 0xf5, 0xe2, 0x6a, 0x41, 0x72, 0xeb, 0x51, 0xae, 0x2c, 0x55, 0x0b, 0xb2, 0x9b, 0xb8, + 0x5e, 0xac, 0x94, 0x4b, 0x85, 0xac, 0x32, 0x0d, 0x13, 0xe7, 0x8a, 0x5a, 0xa5, 0x5c, 0x59, 0x2e, + 0xe4, 0xd0, 0xdf, 0xb2, 0xf8, 0xdd, 0xce, 0xe3, 0x77, 0x5d, 0x14, 0x4f, 0xfd, 0x20, 0x7b, 0x45, + 0x00, 0xd9, 0x9d, 0x1c, 0x64, 0x3f, 0x29, 0x42, 0x64, 0x0c, 0xee, 0x4c, 0x79, 0x98, 0x58, 0xb7, + 0xad, 0x26, 0xee, 0x76, 0xd1, 0x6f, 0x48, 0x90, 0x2f, 0xe9, 0x66, 0x13, 0xb7, 0xd1, 0x15, 0x21, + 0x54, 0x9e, 0xab, 0x68, 0x26, 0x38, 0x2d, 0xf6, 0x8f, 0x19, 0xd1, 0xde, 0x8f, 0xd2, 0x9d, 0xf7, + 0x68, 0x46, 0xc8, 0x47, 0xac, 0x97, 0x8b, 0x25, 0x35, 0x86, 0xab, 0x71, 0x24, 0x98, 0xa2, 0xab, + 0x01, 0xe7, 0x31, 0x3b, 0x0f, 0xff, 0x5e, 0x46, 0x74, 0x72, 0xe8, 0xd7, 0x20, 0x20, 0x13, 0x21, + 0x0f, 0xb1, 0x89, 0xe0, 0x20, 0x6a, 0x63, 0xd8, 0x3c, 0x94, 0x60, 0x7a, 0xc3, 0xec, 0xf6, 0x13, + 0x8a, 0x78, 0x1c, 0x7d, 0xbf, 0x1a, 0x0c, 0xa1, 0x03, 0xc5, 0xd1, 0x1f, 0x4c, 0x2f, 0x7d, 0xc1, + 0x7c, 0x2f, 0x03, 0xc7, 0x97, 0xb1, 0x89, 0x6d, 0xa3, 0xe9, 0xd5, 0xc0, 0x97, 0xc4, 0x9d, 0xbc, + 0x24, 0x1e, 0xc3, 0x71, 0xde, 0xef, 0x0f, 0x5e, 0x02, 0xaf, 0x0e, 0x24, 0x70, 0x37, 0x27, 0x81, + 0x9b, 0x04, 0xe9, 0x8c, 0xe1, 0x3e, 0xf4, 0x29, 0x98, 0xa9, 0x58, 0x8e, 0xb1, 0x69, 0x34, 0x3d, + 0x1f, 0xb4, 0x97, 0xc9, 0x90, 0x5d, 0x35, 0xba, 0x0e, 0x2a, 0x86, 0xdd, 0xc9, 0x35, 0x30, 0x6d, + 0x98, 0xcd, 0xf6, 0x6e, 0x0b, 0x6b, 0x58, 0xf7, 0xfa, 0x95, 0x49, 0x8d, 0x4d, 0x0a, 0xb7, 0xf6, + 0x5d, 0xb6, 0x64, 0x7f, 0x6b, 0xff, 0xd3, 0xc2, 0xcb, 0x30, 0x2c, 0x0b, 0x24, 0x20, 0x65, 0x84, + 0xdd, 0x55, 0x84, 0x59, 0x93, 0xc9, 0xea, 0x1b, 0xec, 0xbd, 0x17, 0x0a, 0xb0, 0xe4, 0x34, 0xfe, + 0x0f, 0xf4, 0x3e, 0xa1, 0xc6, 0x3a, 0x88, 0xa1, 0x64, 0xc8, 0x2c, 0x0d, 0x31, 0x49, 0x56, 0x60, + 0xae, 0x5c, 0xa9, 0xab, 0x5a, 0xa5, 0xb8, 0x4a, 0xb3, 0xc8, 0xe8, 0xdf, 0x24, 0xc8, 0x69, 0xb8, + 0xd3, 0xbe, 0xc4, 0x46, 0x8c, 0xa6, 0x8e, 0xe2, 0x99, 0xc0, 0x51, 0x5c, 0x59, 0x02, 0xd0, 0x9b, + 0x6e, 0xc1, 0xe4, 0x4a, 0x2d, 0xa9, 0x6f, 0x1c, 0x53, 0xae, 0x82, 0xc5, 0x20, 0xb7, 0xc6, 0xfc, + 0x89, 0x5e, 0x20, 0xbc, 0x73, 0xc4, 0x51, 0x23, 0x1c, 0x46, 0xf4, 0x09, 0xef, 0x17, 0xda, 0xec, + 0x19, 0x48, 0xee, 0x70, 0xc4, 0xff, 0x55, 0x09, 0xb2, 0x75, 0xb7, 0xb7, 0x64, 0x3a, 0xce, 0x3f, + 0x1e, 0x4e, 0xc7, 0x5d, 0x32, 0x11, 0x3a, 0x7e, 0x17, 0xcc, 0xb0, 0x1a, 0x4b, 0x5d, 0x25, 0x62, + 0x55, 0x9c, 0xfb, 0x61, 0x18, 0x0d, 0xef, 0xc3, 0xce, 0xe1, 0x88, 0xf8, 0x93, 0x8f, 0x05, 0x58, + 0xc3, 0x3b, 0xe7, 0xb1, 0xdd, 0xdd, 0x36, 0x3a, 0xe8, 0xef, 0x64, 0x98, 0x5a, 0xc6, 0x4e, 0xcd, + 0xd1, 0x9d, 0xdd, 0x6e, 0xcf, 0x76, 0xa7, 0x69, 0x95, 0xf4, 0xe6, 0x36, 0xa6, 0xdd, 0x91, 0xff, + 0x8a, 0xde, 0x25, 0x8b, 0xfa, 0x13, 0x85, 0xe5, 0xcc, 0x07, 0x65, 0x44, 0x60, 0xf2, 0x38, 0xc8, + 0xb6, 0x74, 0x47, 0xa7, 0x58, 0x5c, 0xd1, 0x83, 0x45, 0x48, 0x48, 0x23, 0xd9, 0xd0, 0xef, 0x48, + 0x22, 0x0e, 0x45, 0x02, 0xe5, 0x27, 0x03, 0xe1, 0x7d, 0x99, 0x21, 0x50, 0x38, 0x06, 0xb3, 0x95, + 0x6a, 0xbd, 0xb1, 0x5a, 0x5d, 0x5e, 0x56, 0xdd, 0xd4, 0x82, 0xac, 0x9c, 0x04, 0x65, 0xbd, 0x78, + 0xdf, 0x9a, 0x5a, 0xa9, 0x37, 0x2a, 0xd5, 0x45, 0x95, 0xfe, 0x99, 0x55, 0x8e, 0xc2, 0x74, 0xa9, + 0x58, 0x5a, 0xf1, 0x13, 0x72, 0xca, 0x29, 0x38, 0xbe, 0xa6, 0xae, 0x2d, 0xa8, 0x5a, 0x6d, 0xa5, + 0xbc, 0xde, 0x70, 0xc9, 0x2c, 0x55, 0x37, 0x2a, 0x8b, 0x85, 0xbc, 0x82, 0xe0, 0x24, 0xf3, 0xe5, + 0x9c, 0x56, 0xad, 0x2c, 0x37, 0x6a, 0xf5, 0x62, 0x5d, 0x2d, 0x4c, 0x28, 0x97, 0xc1, 0xd1, 0x52, + 0xb1, 0x42, 0xb2, 0x97, 0xaa, 0x95, 0x8a, 0x5a, 0xaa, 0x17, 0x26, 0xd1, 0x0f, 0xb3, 0x30, 0x5d, + 0xee, 0x56, 0xf4, 0x1d, 0x7c, 0x56, 0x6f, 0x1b, 0x2d, 0xf4, 0x7c, 0x66, 0xe6, 0x71, 0x1d, 0xcc, + 0xda, 0xde, 0x23, 0x6e, 0xd5, 0x0d, 0xec, 0xa1, 0x39, 0xab, 0xf1, 0x89, 0xee, 0x9c, 0xdc, 0x24, + 0x04, 0xfc, 0x39, 0xb9, 0xf7, 0xa6, 0x2c, 0x00, 0x78, 0x4f, 0xf5, 0xf0, 0x72, 0xd7, 0x33, 0xbd, + 0xad, 0x49, 0xdf, 0xc1, 0x5d, 0x6c, 0xef, 0x19, 0x4d, 0xec, 0xe7, 0xd4, 0x98, 0xbf, 0xd0, 0xd7, + 0x64, 0xd1, 0xfd, 0x45, 0x06, 0x54, 0xa6, 0x3a, 0x11, 0xbd, 0xe1, 0x2f, 0xc9, 0x22, 0xbb, 0x83, + 0x42, 0x24, 0x93, 0x69, 0xca, 0x8b, 0xa4, 0xe1, 0x96, 0x6d, 0xeb, 0xd5, 0x6a, 0xa3, 0xb6, 0x52, + 0xd5, 0xea, 0x05, 0x59, 0x99, 0x81, 0x49, 0xf7, 0x75, 0xb5, 0x5a, 0x59, 0x2e, 0x64, 0x95, 0x13, + 0x70, 0x6c, 0xa5, 0x58, 0x6b, 0x94, 0x2b, 0x67, 0x8b, 0xab, 0xe5, 0xc5, 0x46, 0x69, 0xa5, 0xa8, + 0xd5, 0x0a, 0x39, 0xe5, 0x0a, 0x38, 0x51, 0x2f, 0xab, 0x5a, 0x63, 0x49, 0x2d, 0xd6, 0x37, 0x34, + 0xb5, 0xd6, 0xa8, 0x54, 0x1b, 0x95, 0xe2, 0x9a, 0x5a, 0xc8, 0xbb, 0xcd, 0x9f, 0x7c, 0x0a, 0xd5, + 0x66, 0x62, 0xbf, 0x32, 0x4e, 0x46, 0x28, 0xe3, 0x54, 0xaf, 0x32, 0x02, 0xab, 0x56, 0x9a, 0x5a, + 0x53, 0xb5, 0xb3, 0x6a, 0x61, 0xba, 0x9f, 0xae, 0xcd, 0x28, 0xc7, 0xa1, 0xe0, 0xf2, 0xd0, 0x28, + 0xd7, 0xfc, 0x9c, 0x8b, 0x85, 0x59, 0xf4, 0x89, 0x3c, 0x9c, 0xd4, 0xf0, 0x96, 0xd1, 0x75, 0xb0, + 0xbd, 0xae, 0x5f, 0xda, 0xc1, 0xa6, 0xe3, 0x77, 0xf2, 0xff, 0x2b, 0xb1, 0x32, 0xae, 0xc1, 0x6c, + 0xc7, 0xa3, 0xb1, 0x86, 0x9d, 0x6d, 0xab, 0x45, 0x47, 0xe1, 0xc7, 0x44, 0xf6, 0x1c, 0xf3, 0xeb, + 0x6c, 0x76, 0x8d, 0xff, 0x9b, 0xd1, 0x6d, 0x39, 0x46, 0xb7, 0xb3, 0xc3, 0xe8, 0xb6, 0x72, 0x15, + 0x4c, 0xed, 0x76, 0xb1, 0xad, 0xee, 0xe8, 0x46, 0xdb, 0xbf, 0x9c, 0x33, 0x48, 0x40, 0x6f, 0xcf, + 0x8a, 0x9e, 0x58, 0x61, 0xea, 0xd2, 0x5f, 0x8c, 0x11, 0x7d, 0xeb, 0x69, 0x00, 0x5a, 0xd9, 0x0d, + 0xbb, 0x4d, 0x95, 0x95, 0x49, 0x71, 0xf9, 0x3b, 0x6f, 0xb4, 0xdb, 0x86, 0xb9, 0x15, 0xec, 0xfb, + 0x87, 0x09, 0xe8, 0x45, 0xb2, 0xc8, 0x09, 0x96, 0xa4, 0xbc, 0x25, 0x6b, 0x4d, 0x2f, 0x90, 0xc6, + 0xdc, 0xef, 0xee, 0x6f, 0x3a, 0x79, 0xa5, 0x00, 0x33, 0x24, 0x8d, 0xb6, 0xc0, 0xc2, 0x84, 0xdb, + 0x07, 0xfb, 0xe4, 0xd6, 0xd4, 0xfa, 0x4a, 0x75, 0x31, 0xf8, 0x36, 0xe9, 0x92, 0x74, 0x99, 0x29, + 0x56, 0xee, 0x23, 0xad, 0x71, 0x4a, 0x79, 0x14, 0x5c, 0xc1, 0x74, 0xd8, 0xc5, 0x55, 0x4d, 0x2d, + 0x2e, 0xde, 0xd7, 0x50, 0x9f, 0x5e, 0xae, 0xd5, 0x6b, 0x7c, 0xe3, 0xf2, 0xdb, 0xd1, 0xb4, 0xcb, + 0xaf, 0xba, 0x56, 0x2c, 0xaf, 0xd2, 0xfe, 0x7d, 0xa9, 0xaa, 0xad, 0x15, 0xeb, 0x85, 0x19, 0xf4, + 0x72, 0x19, 0x0a, 0xcb, 0xd8, 0x59, 0xb7, 0x6c, 0x47, 0x6f, 0xaf, 0x1a, 0xe6, 0x85, 0x0d, 0xbb, + 0xcd, 0x4d, 0x36, 0x85, 0xc3, 0x74, 0xf0, 0x43, 0x24, 0x47, 0x30, 0x7a, 0x47, 0xbc, 0x43, 0xb2, + 0x85, 0xca, 0x14, 0x26, 0xa0, 0x67, 0x4a, 0x22, 0xcb, 0xdd, 0xe2, 0xa5, 0x26, 0xd3, 0x93, 0x67, + 0x8d, 0x7b, 0x7c, 0xee, 0x83, 0x5a, 0x1e, 0x3d, 0x37, 0x0b, 0x93, 0x4b, 0x86, 0xa9, 0xb7, 0x8d, + 0x67, 0x70, 0xf1, 0x4b, 0xc3, 0x3e, 0x26, 0x13, 0xd3, 0xc7, 0x48, 0x43, 0x8d, 0x9f, 0xbf, 0x26, + 0x8b, 0x2e, 0x2f, 0x30, 0xb2, 0xf7, 0x99, 0x8c, 0x18, 0x3c, 0x3f, 0x24, 0x89, 0x2c, 0x2f, 0x0c, + 0xa6, 0x97, 0x0c, 0xc3, 0x4f, 0xfd, 0x68, 0xd8, 0x58, 0x3d, 0xed, 0x7b, 0xb2, 0x9f, 0x2a, 0x4c, + 0xa1, 0x3f, 0x97, 0x01, 0x2d, 0x63, 0xe7, 0x2c, 0xb6, 0x83, 0xa9, 0x00, 0xe9, 0xf5, 0xa9, 0xbd, + 0xcd, 0x34, 0xd9, 0x37, 0xb3, 0x00, 0x9e, 0xe3, 0x01, 0x2c, 0xc6, 0x34, 0x9e, 0x08, 0xd2, 0x11, + 0x8d, 0xb7, 0x0c, 0xf9, 0x2e, 0xf9, 0x4e, 0xd5, 0xec, 0xf1, 0xd1, 0xc3, 0x25, 0x21, 0xc6, 0x52, + 0xf7, 0x08, 0x6b, 0x94, 0x00, 0xfa, 0x7e, 0x30, 0x09, 0xfa, 0x19, 0x4e, 0x3b, 0x96, 0x0e, 0xcc, + 0x6c, 0x32, 0x7d, 0xb1, 0xd3, 0x55, 0x97, 0x7e, 0xf6, 0x0d, 0xfa, 0x50, 0x0e, 0x8e, 0xf7, 0xab, + 0x0e, 0xfa, 0xdd, 0x0c, 0xb7, 0xc3, 0x8e, 0xc9, 0x90, 0x9f, 0xa1, 0x1b, 0x88, 0xee, 0x8b, 0xf2, + 0x44, 0x38, 0x11, 0x2c, 0xc3, 0xd5, 0xad, 0x0a, 0xbe, 0xd8, 0x6d, 0x63, 0xc7, 0xc1, 0x36, 0xa9, + 0xda, 0xa4, 0xd6, 0xff, 0xa3, 0xf2, 0x64, 0xb8, 0xdc, 0x30, 0xbb, 0x46, 0x0b, 0xdb, 0x75, 0xa3, + 0xd3, 0x2d, 0x9a, 0xad, 0xfa, 0xae, 0x63, 0xd9, 0x86, 0x4e, 0xaf, 0x92, 0x9c, 0xd4, 0xa2, 0x3e, + 0x2b, 0x37, 0x42, 0xc1, 0xe8, 0x56, 0xcd, 0xf3, 0x96, 0x6e, 0xb7, 0x0c, 0x73, 0x6b, 0xd5, 0xe8, + 0x3a, 0xd4, 0x03, 0x78, 0x5f, 0x3a, 0xfa, 0x7b, 0x59, 0xf4, 0x30, 0xdd, 0x00, 0x58, 0x23, 0x3a, + 0x94, 0xe7, 0xc9, 0x22, 0xc7, 0xe3, 0x92, 0xd1, 0x4e, 0xa6, 0x2c, 0xcf, 0x19, 0xb7, 0x21, 0xd1, + 0x7f, 0x04, 0x27, 0x5d, 0x8b, 0x97, 0xee, 0x1b, 0x02, 0x67, 0x55, 0xad, 0xbc, 0x54, 0x56, 0x5d, + 0xb3, 0xe2, 0x04, 0x1c, 0x0b, 0xbf, 0x2d, 0xde, 0xd7, 0xa8, 0xa9, 0x95, 0x7a, 0x61, 0xd2, 0xed, + 0xa7, 0xbc, 0xe4, 0xa5, 0x62, 0x79, 0x55, 0x5d, 0x6c, 0xd4, 0xab, 0xee, 0x97, 0xc5, 0xe1, 0x4c, + 0x0b, 0xf4, 0x60, 0x16, 0x8e, 0x12, 0xd9, 0x5e, 0x22, 0x52, 0x75, 0x85, 0xd2, 0xe3, 0x6b, 0x1b, + 0x00, 0x34, 0xe5, 0x89, 0x17, 0x7d, 0x56, 0xf8, 0xa6, 0x4c, 0x06, 0xc2, 0x9e, 0x32, 0x22, 0x34, + 0xe3, 0x7b, 0x92, 0x48, 0x84, 0x0a, 0x61, 0xb2, 0xc9, 0x94, 0xe2, 0x5f, 0xc6, 0x3d, 0xe2, 0x44, + 0x83, 0x4f, 0xac, 0xcc, 0x12, 0xf9, 0xf9, 0xe9, 0xeb, 0x65, 0x8d, 0xa8, 0xc3, 0x1c, 0x00, 0x49, + 0x21, 0x1a, 0xe4, 0xe9, 0x41, 0xdf, 0xf1, 0x2a, 0x4a, 0x0f, 0x8a, 0xa5, 0x7a, 0xf9, 0xac, 0x1a, + 0xa5, 0x07, 0x9f, 0x91, 0x61, 0x72, 0x19, 0x3b, 0xee, 0x9c, 0xaa, 0x8b, 0x9e, 0x22, 0xb0, 0xfe, + 0xe3, 0x9a, 0x31, 0x6d, 0xab, 0xa9, 0xb7, 0x83, 0x65, 0x00, 0xef, 0x0d, 0x3d, 0x7b, 0x18, 0x13, + 0xc4, 0x2f, 0x3a, 0x62, 0xbc, 0xfa, 0x69, 0xc8, 0x39, 0xee, 0x67, 0xba, 0x0c, 0xfd, 0x13, 0x91, + 0xc3, 0x95, 0x4b, 0x64, 0x51, 0x77, 0x74, 0xcd, 0xcb, 0xcf, 0x8c, 0x4e, 0x82, 0xb6, 0x4b, 0x04, + 0x23, 0x3f, 0x8a, 0xf6, 0xe7, 0xdf, 0xca, 0x70, 0xc2, 0x6b, 0x1f, 0xc5, 0x4e, 0xa7, 0xe6, 0x58, + 0x36, 0xd6, 0x70, 0x13, 0x1b, 0x1d, 0xa7, 0x67, 0x7d, 0xcf, 0xf6, 0x52, 0xfd, 0xcd, 0x66, 0xfa, + 0x8a, 0xde, 0x20, 0x8b, 0xc6, 0x60, 0xde, 0xd7, 0x1e, 0x7b, 0xca, 0x8b, 0x68, 0xec, 0x1f, 0x97, + 0x44, 0xa2, 0x2a, 0x27, 0x24, 0x9e, 0x0c, 0xa8, 0x8f, 0x1c, 0x02, 0x50, 0xfe, 0xca, 0x8d, 0xa6, + 0x96, 0xd4, 0xf2, 0xba, 0x3b, 0x08, 0x5c, 0x0d, 0x57, 0xae, 0x6f, 0x68, 0xa5, 0x95, 0x62, 0x4d, + 0x6d, 0x68, 0xea, 0x72, 0xb9, 0x56, 0xa7, 0x4e, 0x59, 0xde, 0x5f, 0x13, 0xca, 0x55, 0x70, 0xaa, + 0xb6, 0xb1, 0x50, 0x2b, 0x69, 0xe5, 0x75, 0x92, 0xae, 0xa9, 0x15, 0xf5, 0x1c, 0xfd, 0x3a, 0x89, + 0x3e, 0x50, 0x80, 0x69, 0x77, 0x02, 0x50, 0xf3, 0xe6, 0x05, 0xe8, 0xdb, 0x59, 0x98, 0xd6, 0x70, + 0xd7, 0x6a, 0xef, 0x91, 0x39, 0xc2, 0xb8, 0xa6, 0x1e, 0xdf, 0x95, 0x45, 0xcf, 0x6f, 0x33, 0xcc, + 0xce, 0x33, 0x8c, 0x46, 0x4f, 0x34, 0xf5, 0x3d, 0xdd, 0x68, 0xeb, 0xe7, 0x69, 0x57, 0x33, 0xa9, + 0x85, 0x09, 0xca, 0x3c, 0x28, 0xd6, 0x45, 0x13, 0xdb, 0xb5, 0xe6, 0x45, 0xd5, 0xd9, 0x2e, 0xb6, + 0x5a, 0x36, 0xee, 0x76, 0xe9, 0xea, 0x45, 0x9f, 0x2f, 0xca, 0x0d, 0x70, 0x94, 0xa4, 0x32, 0x99, + 0x3d, 0x07, 0x99, 0xde, 0xe4, 0x20, 0x67, 0xd1, 0xbc, 0xe4, 0xe7, 0xcc, 0x31, 0x39, 0xc3, 0x64, + 0xf6, 0xb8, 0x44, 0x9e, 0x3f, 0xa5, 0x73, 0x0d, 0x4c, 0x9b, 0xfa, 0x0e, 0x56, 0x1f, 0xe8, 0x18, + 0x36, 0xee, 0x12, 0xc7, 0x18, 0x59, 0x63, 0x93, 0xd0, 0x87, 0x84, 0xce, 0x9b, 0x8b, 0x49, 0x2c, + 0x99, 0xee, 0x2f, 0x0f, 0xa1, 0xfa, 0x7d, 0xfa, 0x19, 0x19, 0x7d, 0x40, 0x86, 0x19, 0xca, 0x54, + 0xd1, 0xbc, 0x54, 0x6e, 0xa1, 0xab, 0x39, 0xe3, 0x57, 0x77, 0xd3, 0x7c, 0xe3, 0x97, 0xbc, 0xa0, + 0x5f, 0x96, 0x45, 0xdd, 0x9d, 0xfb, 0x54, 0x9c, 0x94, 0x11, 0xed, 0x38, 0xba, 0x69, 0xed, 0x52, + 0x47, 0xd5, 0x49, 0xcd, 0x7b, 0x49, 0x73, 0x51, 0x0f, 0x7d, 0x58, 0xc8, 0x99, 0x5a, 0xb0, 0x1a, + 0x87, 0x04, 0xe0, 0x27, 0x65, 0x98, 0xa3, 0x5c, 0xd5, 0xe8, 0x39, 0x1f, 0xa1, 0x03, 0x6f, 0xbf, + 0x22, 0x6c, 0x08, 0xf6, 0xa9, 0x3f, 0x2d, 0xe9, 0x11, 0x03, 0xe4, 0x47, 0x85, 0x82, 0xa3, 0x09, + 0x57, 0xe4, 0x90, 0xa0, 0x7c, 0x47, 0x16, 0xa6, 0x37, 0xba, 0xd8, 0xa6, 0x7e, 0xfb, 0xe8, 0xa1, + 0x2c, 0xc8, 0xcb, 0x98, 0xdb, 0x48, 0x7d, 0xa1, 0xb0, 0x87, 0x2f, 0x5b, 0x59, 0x86, 0xa8, 0x6b, + 0x23, 0x45, 0xc0, 0x76, 0x3d, 0xcc, 0x79, 0x22, 0x2d, 0x3a, 0x8e, 0x6b, 0x24, 0xfa, 0xde, 0xb4, + 0x3d, 0xa9, 0xa3, 0xd8, 0x2a, 0x22, 0x65, 0xb9, 0x59, 0x4a, 0x2e, 0x4f, 0xab, 0x78, 0xd3, 0x9b, + 0xcf, 0x66, 0xb5, 0x9e, 0x54, 0xe5, 0x16, 0xb8, 0xcc, 0xea, 0x60, 0xef, 0xfc, 0x0a, 0x93, 0x39, + 0x47, 0x32, 0xf7, 0xfb, 0x84, 0xbe, 0x2d, 0xe4, 0xab, 0x2b, 0x2e, 0x9d, 0x64, 0xba, 0xd0, 0x19, + 0x8d, 0x49, 0x72, 0x1c, 0x0a, 0x6e, 0x0e, 0xb2, 0xff, 0xa2, 0xa9, 0xb5, 0xea, 0xea, 0x59, 0xb5, + 0xff, 0x32, 0x46, 0x0e, 0x3d, 0x47, 0x86, 0xa9, 0x05, 0xdb, 0xd2, 0x5b, 0x4d, 0xbd, 0xeb, 0xa0, + 0xef, 0x4b, 0x30, 0xb3, 0xae, 0x5f, 0x6a, 0x5b, 0x7a, 0x8b, 0xf8, 0xf7, 0xf7, 0xf4, 0x05, 0x1d, + 0xef, 0x93, 0xdf, 0x17, 0xd0, 0x57, 0xfe, 0x60, 0x60, 0x70, 0x74, 0x2f, 0x23, 0x72, 0xa1, 0x66, + 0xb0, 0xcd, 0x27, 0xf5, 0x0b, 0x56, 0xea, 0xf3, 0x35, 0xcf, 0xf2, 0x14, 0x61, 0x51, 0x7e, 0x40, + 0x2c, 0xfc, 0xa8, 0x08, 0xc9, 0xc3, 0xd9, 0x95, 0x7f, 0xee, 0x24, 0xe4, 0x17, 0x31, 0xb1, 0xe2, + 0xfe, 0xbb, 0x04, 0x13, 0x35, 0xec, 0x10, 0x0b, 0xee, 0x36, 0xce, 0x53, 0xb8, 0x45, 0x32, 0x84, + 0x4e, 0xec, 0xfe, 0xbb, 0x3b, 0x59, 0x67, 0xce, 0x5b, 0x93, 0xe7, 0x04, 0x1e, 0x89, 0x5e, 0xb9, + 0xf3, 0xb4, 0xcc, 0x03, 0x79, 0x24, 0xc6, 0x92, 0x4a, 0xdf, 0xd7, 0xea, 0x5d, 0x12, 0x75, 0xad, + 0x62, 0x7a, 0xbd, 0xd7, 0xb0, 0xfa, 0x19, 0xeb, 0x6d, 0x46, 0x99, 0x8f, 0x71, 0x8e, 0x7a, 0x02, + 0x4c, 0x78, 0x32, 0xf7, 0xe7, 0xa3, 0xbd, 0x7e, 0x0a, 0x1e, 0x09, 0x72, 0xf6, 0xda, 0xcf, 0x29, + 0xe8, 0xa2, 0x16, 0x5d, 0xf8, 0x58, 0x62, 0x10, 0xcc, 0x54, 0xb0, 0x73, 0xd1, 0xb2, 0x2f, 0xd4, + 0x1c, 0xdd, 0xc1, 0xe8, 0x5f, 0x24, 0x90, 0x6b, 0xd8, 0x61, 0xa3, 0x9f, 0x54, 0xe0, 0x98, 0x57, + 0x21, 0x9a, 0x91, 0xf4, 0xdf, 0x5e, 0x45, 0xae, 0xe9, 0x2b, 0x04, 0x26, 0x9f, 0xb6, 0xff, 0x57, + 0xf4, 0x1b, 0x7d, 0x83, 0x3e, 0x49, 0x7d, 0x26, 0x0d, 0x54, 0x32, 0x2c, 0x83, 0xae, 0x82, 0x45, + 0xe8, 0xe9, 0x07, 0x85, 0xcc, 0x6a, 0x31, 0x9a, 0x87, 0xd3, 0x15, 0x7c, 0xf4, 0x0a, 0xc8, 0x96, + 0xb6, 0x75, 0x07, 0xbd, 0x53, 0x06, 0x28, 0xb6, 0x5a, 0x6b, 0x9e, 0x0f, 0x38, 0xeb, 0x90, 0x76, + 0x06, 0x66, 0x9a, 0xdb, 0x7a, 0x78, 0xb7, 0x89, 0xd7, 0x1f, 0x70, 0x69, 0xca, 0x13, 0x43, 0x67, + 0x72, 0x4f, 0xaa, 0xa8, 0x07, 0x26, 0xb7, 0x0c, 0x4a, 0x3b, 0x70, 0x34, 0xe7, 0x43, 0x61, 0xc6, + 0x1e, 0xa1, 0x73, 0x7f, 0x9f, 0x0f, 0xd9, 0x8b, 0x9e, 0xc3, 0x51, 0xd2, 0xc1, 0x01, 0x9b, 0x30, + 0x21, 0xe1, 0x49, 0x6f, 0xb1, 0x80, 0x1e, 0xf1, 0x7c, 0x8d, 0x25, 0x74, 0xad, 0xa2, 0xb6, 0x0c, + 0x5f, 0xb4, 0x34, 0x60, 0x16, 0x7a, 0x41, 0x26, 0x19, 0x7c, 0xf1, 0x82, 0xbb, 0x1b, 0x66, 0x71, + 0xcb, 0x70, 0xb0, 0x5f, 0x4b, 0x2a, 0xc0, 0x38, 0x88, 0xf9, 0x1f, 0xd0, 0xb3, 0x84, 0x83, 0xae, + 0x11, 0x81, 0xee, 0xaf, 0x51, 0x44, 0xfb, 0x13, 0x0b, 0xa3, 0x26, 0x46, 0x33, 0x7d, 0xb0, 0x9e, + 0x2d, 0xc3, 0x89, 0xba, 0xb5, 0xb5, 0xd5, 0xc6, 0xbe, 0x98, 0xb0, 0xe7, 0x9d, 0x89, 0xf4, 0x51, + 0xc2, 0x45, 0x76, 0x82, 0xac, 0xfb, 0x8d, 0xe0, 0x28, 0x99, 0xfb, 0xc2, 0x9f, 0x98, 0x8a, 0x9d, + 0x45, 0x11, 0x71, 0xf5, 0xe5, 0x33, 0x02, 0x05, 0xb1, 0x80, 0xcf, 0xc2, 0x64, 0xd3, 0x07, 0xe2, + 0x4b, 0x12, 0xcc, 0x7a, 0x37, 0x57, 0xfa, 0x0a, 0x7a, 0xef, 0x08, 0x01, 0x40, 0xdf, 0xcf, 0x88, + 0xfa, 0xd9, 0x12, 0x99, 0x70, 0x9c, 0x44, 0x88, 0x58, 0x2c, 0xa8, 0xca, 0x40, 0x72, 0xe9, 0x8b, + 0xf6, 0x4f, 0x64, 0x98, 0x5e, 0xc6, 0x7e, 0x4b, 0xeb, 0x26, 0xee, 0x89, 0xce, 0xc0, 0x0c, 0xb9, + 0xbe, 0xad, 0x4a, 0x8f, 0x49, 0x7a, 0xab, 0x66, 0x5c, 0x9a, 0x72, 0x1d, 0xcc, 0x9e, 0xc7, 0x9b, + 0x96, 0x8d, 0xab, 0xdc, 0x59, 0x4a, 0x3e, 0x31, 0x22, 0x3c, 0x1d, 0x17, 0x07, 0x6d, 0x81, 0xc7, + 0xe6, 0xa6, 0xfd, 0xc2, 0x64, 0xaa, 0x12, 0x31, 0xe6, 0x3c, 0x09, 0x26, 0x29, 0xf2, 0xbe, 0x99, + 0x16, 0xd7, 0x2f, 0x06, 0x79, 0xd1, 0xeb, 0x03, 0x44, 0x55, 0x0e, 0xd1, 0xc7, 0x27, 0x61, 0x62, + 0x2c, 0xf7, 0xbb, 0x17, 0x98, 0xf2, 0x17, 0x2e, 0x95, 0x5b, 0x5d, 0xb4, 0x96, 0x0c, 0xd3, 0xd3, + 0x00, 0x41, 0xe3, 0xf0, 0xc3, 0x5a, 0x30, 0x29, 0x7c, 0xe4, 0xfa, 0xd8, 0x83, 0x7a, 0xbd, 0xe2, + 0x20, 0xec, 0x8c, 0x18, 0x18, 0xb1, 0x03, 0x7e, 0x22, 0x9c, 0xa4, 0x8f, 0xce, 0xa7, 0x65, 0x38, + 0x11, 0x9c, 0x3f, 0x5a, 0xd5, 0xbb, 0x61, 0xbb, 0x2b, 0x25, 0x83, 0x88, 0x3b, 0xf0, 0x11, 0x34, + 0x96, 0xef, 0x24, 0x1b, 0x33, 0xfa, 0x72, 0x32, 0x5a, 0x74, 0x94, 0x9b, 0xe0, 0x98, 0xb9, 0xbb, + 0x13, 0x48, 0x9d, 0xb4, 0x78, 0xda, 0xc2, 0xf7, 0x7f, 0x48, 0x32, 0x32, 0x89, 0x30, 0x3f, 0x96, + 0x39, 0x25, 0x77, 0xa4, 0xeb, 0x71, 0x89, 0x60, 0x44, 0xff, 0x9c, 0x49, 0xd4, 0xbb, 0x0d, 0x3e, + 0xf3, 0x95, 0xa0, 0x97, 0x3a, 0xcc, 0x03, 0x5f, 0xdf, 0xc9, 0x82, 0x5c, 0xec, 0x18, 0xe8, 0xc3, + 0x12, 0x4c, 0xd7, 0x1c, 0xdd, 0x76, 0x6a, 0xd8, 0xde, 0xc3, 0x36, 0x3b, 0x33, 0x7f, 0x83, 0xf0, + 0x5c, 0xa3, 0xd8, 0x31, 0xe6, 0x19, 0x22, 0x11, 0x92, 0xf9, 0x82, 0xd0, 0xfc, 0x20, 0x9e, 0x56, + 0x32, 0xc1, 0xe0, 0x21, 0xa6, 0x7c, 0x27, 0xe0, 0xd8, 0x7a, 0x55, 0xab, 0x07, 0xbb, 0xf3, 0x1b, + 0x35, 0x75, 0xb1, 0x20, 0x2b, 0x08, 0x4e, 0x12, 0x3f, 0x69, 0x2d, 0xf8, 0x50, 0xab, 0x17, 0xb5, + 0xba, 0xba, 0x58, 0xc8, 0xa2, 0xd7, 0x49, 0x00, 0x35, 0xc7, 0xea, 0xec, 0x17, 0xa1, 0xf8, 0xa1, + 0x7b, 0xaf, 0xda, 0x3e, 0x8d, 0x81, 0x67, 0x87, 0xe2, 0x16, 0x79, 0x62, 0x49, 0x25, 0x13, 0xe0, + 0x3d, 0x43, 0x08, 0xf0, 0x24, 0x28, 0x54, 0x52, 0x95, 0x6a, 0x3d, 0x90, 0x92, 0x7c, 0x66, 0x02, + 0x72, 0xea, 0x4e, 0xc7, 0xb9, 0x74, 0xe6, 0xd1, 0x30, 0x5b, 0x73, 0x6c, 0xac, 0xef, 0x30, 0x7b, + 0x51, 0x8e, 0x75, 0x01, 0x9b, 0xfe, 0x5e, 0x14, 0x79, 0xb9, 0xfd, 0x36, 0x98, 0x30, 0xad, 0x86, + 0xbe, 0xeb, 0x6c, 0x2b, 0x57, 0xef, 0x0b, 0xe2, 0x40, 0xbb, 0x9b, 0x2a, 0x8d, 0x9a, 0xf5, 0xb5, + 0x3b, 0xc8, 0x6e, 0x44, 0xde, 0xb4, 0x8a, 0xbb, 0xce, 0xf6, 0xc2, 0x55, 0x9f, 0xfc, 0x9b, 0xd3, + 0x99, 0xcf, 0xfc, 0xcd, 0xe9, 0xcc, 0x57, 0xff, 0xe6, 0x74, 0xe6, 0x57, 0xbe, 0x7e, 0xfa, 0xc8, + 0x67, 0xbe, 0x7e, 0xfa, 0xc8, 0x97, 0xbe, 0x7e, 0xfa, 0xc8, 0xcf, 0x48, 0x9d, 0xf3, 0xe7, 0xf3, + 0x84, 0xca, 0x13, 0xfe, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x66, 0x5b, 0xbd, 0xa1, 0x40, 0x01, + 0x02, 0x00, } func (m *Rpc) Marshal() (dAtA []byte, err error) { @@ -116295,6 +116751,261 @@ func (m *RpcChatUnsubscribeResponseError) MarshalToSizedBuffer(dAtA []byte) (int return len(dAtA) - i, nil } +func (m *RpcApi) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcApi) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcApi) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *RpcApiStartServer) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcApiStartServer) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcApiStartServer) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *RpcApiStartServerRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcApiStartServerRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcApiStartServerRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *RpcApiStartServerResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcApiStartServerResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcApiStartServerResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Error != nil { + { + size, err := m.Error.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCommands(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *RpcApiStartServerResponseError) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcApiStartServerResponseError) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcApiStartServerResponseError) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Description) > 0 { + i -= len(m.Description) + copy(dAtA[i:], m.Description) + i = encodeVarintCommands(dAtA, i, uint64(len(m.Description))) + i-- + dAtA[i] = 0x12 + } + if m.Code != 0 { + i = encodeVarintCommands(dAtA, i, uint64(m.Code)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *RpcApiStopServer) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcApiStopServer) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcApiStopServer) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *RpcApiStopServerRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcApiStopServerRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcApiStopServerRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *RpcApiStopServerResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcApiStopServerResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcApiStopServerResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Error != nil { + { + size, err := m.Error.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCommands(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *RpcApiStopServerResponseError) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcApiStopServerResponseError) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcApiStopServerResponseError) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Description) > 0 { + i -= len(m.Description) + copy(dAtA[i:], m.Description) + i = encodeVarintCommands(dAtA, i, uint64(len(m.Description))) + i-- + dAtA[i] = 0x12 + } + if m.Code != 0 { + i = encodeVarintCommands(dAtA, i, uint64(m.Code)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + func (m *Empty) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -135163,6 +135874,109 @@ func (m *RpcChatUnsubscribeResponseError) Size() (n int) { return n } +func (m *RpcApi) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *RpcApiStartServer) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *RpcApiStartServerRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *RpcApiStartServerResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Error != nil { + l = m.Error.Size() + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + +func (m *RpcApiStartServerResponseError) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Code != 0 { + n += 1 + sovCommands(uint64(m.Code)) + } + l = len(m.Description) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + +func (m *RpcApiStopServer) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *RpcApiStopServerRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *RpcApiStopServerResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Error != nil { + l = m.Error.Size() + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + +func (m *RpcApiStopServerResponseError) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Code != 0 { + n += 1 + sovCommands(uint64(m.Code)) + } + l = len(m.Description) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + func (m *Empty) Size() (n int) { if m == nil { return 0 @@ -255185,6 +255999,630 @@ func (m *RpcChatUnsubscribeResponseError) Unmarshal(dAtA []byte) error { } return nil } +func (m *RpcApi) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Api: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Api: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcApiStartServer) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: StartServer: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: StartServer: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcApiStartServerRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Request: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Request: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcApiStartServerResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Response: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Response: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Error == nil { + m.Error = &RpcApiStartServerResponseError{} + } + if err := m.Error.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcApiStartServerResponseError) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Error: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Error: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Code", wireType) + } + m.Code = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Code |= RpcApiStartServerResponseErrorCode(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcApiStopServer) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: StopServer: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: StopServer: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcApiStopServerRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Request: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Request: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcApiStopServerResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Response: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Response: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Error == nil { + m.Error = &RpcApiStopServerResponseError{} + } + if err := m.Error.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcApiStopServerResponseError) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Error: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Error: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Code", wireType) + } + m.Code = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Code |= RpcApiStopServerResponseErrorCode(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *Empty) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/pb/protos/commands.proto b/pb/protos/commands.proto index bb7ea7b88..a331f7c4f 100644 --- a/pb/protos/commands.proto +++ b/pb/protos/commands.proto @@ -7721,6 +7721,51 @@ message Rpc { } } } + message Api { + message StartServer { + message Request { + // empty + } + + message Response { + Error error = 1; + + message Error { + Code code = 1; + string description = 2; + + enum Code { + NULL = 0; + UNKNOWN_ERROR = 1; + BAD_INPUT = 2; + PORT_ALREADY_USED = 3; + SERVER_ALREADY_STARTED = 4; + } + } + } + } + message StopServer { + message Request{ + // empty + } + + message Response { + Error error = 1; + + message Error { + Code code = 1; + string description = 2; + + enum Code { + NULL = 0; + UNKNOWN_ERROR = 1; + BAD_INPUT = 2; + SERVER_NOT_STARTED = 3; + } + } + } + } + } } diff --git a/pb/protos/service/service.proto b/pb/protos/service/service.proto index 56a5f4706..7186e56e8 100644 --- a/pb/protos/service/service.proto +++ b/pb/protos/service/service.proto @@ -379,4 +379,8 @@ service ClientCommands { rpc ChatUnsubscribe (anytype.Rpc.Chat.Unsubscribe.Request) returns (anytype.Rpc.Chat.Unsubscribe.Response); rpc ObjectChatAdd (anytype.Rpc.Object.ChatAdd.Request) returns (anytype.Rpc.Object.ChatAdd.Response); + // API + // *** + rpc ApiStartServer (anytype.Rpc.Api.StartServer.Request) returns (anytype.Rpc.Api.StartServer.Response); + rpc ApiStopServer (anytype.Rpc.Api.StopServer.Request) returns (anytype.Rpc.Api.StopServer.Response); } diff --git a/pb/service/service.pb.go b/pb/service/service.pb.go index 6b5274431..c0dedc04d 100644 --- a/pb/service/service.pb.go +++ b/pb/service/service.pb.go @@ -26,337 +26,340 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package func init() { proto.RegisterFile("pb/protos/service/service.proto", fileDescriptor_93a29dc403579097) } var fileDescriptor_93a29dc403579097 = []byte{ - // 5279 bytes of a gzipped FileDescriptorProto + // 5319 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x9d, 0x5b, 0x6f, 0x24, 0x49, - 0x56, 0xf8, 0xc7, 0x2f, 0xff, 0xf9, 0x93, 0xcb, 0x0e, 0x50, 0x03, 0xc3, 0xec, 0xb0, 0xdb, 0xb7, - 0xe9, 0xb6, 0xdd, 0x6d, 0xbb, 0xdc, 0xd3, 0x3d, 0x3d, 0xb3, 0xda, 0x45, 0x42, 0x6e, 0xbb, 0xed, - 0x31, 0x6b, 0xbb, 0x8d, 0xab, 0xdc, 0x2d, 0x8d, 0x84, 0x44, 0x38, 0x2b, 0x5c, 0x4e, 0x9c, 0x95, - 0x91, 0x9b, 0x19, 0x55, 0xee, 0x5a, 0x04, 0x02, 0x81, 0x40, 0x20, 0x10, 0x2b, 0x6e, 0xaf, 0x48, - 0x7c, 0x1a, 0x1e, 0xf7, 0x91, 0x47, 0x34, 0x23, 0x1e, 0xf8, 0x16, 0x28, 0x23, 0x23, 0xe3, 0x72, - 0xf2, 0x9c, 0xc8, 0xf4, 0x3e, 0x75, 0xab, 0xce, 0xef, 0x9c, 0x13, 0xd7, 0x13, 0x27, 0x22, 0x23, - 0xd3, 0xd1, 0xdd, 0xfc, 0x62, 0x3b, 0x2f, 0x84, 0x14, 0xe5, 0x76, 0xc9, 0x8b, 0x45, 0x12, 0xf3, - 0xe6, 0xdf, 0xa1, 0xfa, 0x79, 0xf0, 0x3e, 0xcb, 0x96, 0x72, 0x99, 0xf3, 0x4f, 0x3e, 0xb6, 0x64, - 0x2c, 0x66, 0x33, 0x96, 0x4d, 0xca, 0x1a, 0xf9, 0xe4, 0x23, 0x2b, 0xe1, 0x0b, 0x9e, 0x49, 0xfd, - 0xfb, 0xb3, 0xff, 0xf9, 0xdf, 0x95, 0xe8, 0x83, 0xdd, 0x34, 0xe1, 0x99, 0xdc, 0xd5, 0x1a, 0x83, - 0xaf, 0xa3, 0xef, 0xee, 0xe4, 0xf9, 0x01, 0x97, 0x6f, 0x78, 0x51, 0x26, 0x22, 0x1b, 0x7c, 0x3a, - 0xd4, 0x0e, 0x86, 0x67, 0x79, 0x3c, 0xdc, 0xc9, 0xf3, 0xa1, 0x15, 0x0e, 0xcf, 0xf8, 0x4f, 0xe7, - 0xbc, 0x94, 0x9f, 0x3c, 0x0c, 0x43, 0x65, 0x2e, 0xb2, 0x92, 0x0f, 0x2e, 0xa3, 0xdf, 0xd8, 0xc9, - 0xf3, 0x11, 0x97, 0x7b, 0xbc, 0xaa, 0xc0, 0x48, 0x32, 0xc9, 0x07, 0x6b, 0x2d, 0x55, 0x1f, 0x30, - 0x3e, 0xd6, 0xbb, 0x41, 0xed, 0x67, 0x1c, 0x7d, 0xa7, 0xf2, 0x73, 0x35, 0x97, 0x13, 0x71, 0x93, - 0x0d, 0xee, 0xb7, 0x15, 0xb5, 0xc8, 0xd8, 0x7e, 0x10, 0x42, 0xb4, 0xd5, 0xb7, 0xd1, 0xaf, 0xbe, + 0x56, 0xf8, 0xc7, 0x2f, 0xff, 0xf9, 0x93, 0xcb, 0x0e, 0x50, 0x03, 0xc3, 0xec, 0xb0, 0xdb, 0xdd, + 0xd3, 0x17, 0xdb, 0xdd, 0xb6, 0xcb, 0x3d, 0xdd, 0xd3, 0x33, 0xab, 0x5d, 0x24, 0xe4, 0xb6, 0xdb, + 0x1e, 0xb3, 0xb6, 0xdb, 0xb8, 0xca, 0xdd, 0xd2, 0x48, 0x48, 0x84, 0xb3, 0xc2, 0xe5, 0xc4, 0x59, + 0x19, 0xb9, 0x99, 0x51, 0xe5, 0xae, 0x45, 0x20, 0x10, 0x08, 0x04, 0x02, 0xb1, 0xe2, 0xf6, 0x0a, + 0xe2, 0xd3, 0xf0, 0xb8, 0x8f, 0x3c, 0xa2, 0x99, 0x47, 0xbe, 0x04, 0xca, 0xc8, 0xc8, 0xb8, 0x9c, + 0x3c, 0x27, 0x32, 0xbd, 0x4f, 0xdd, 0xf2, 0xf9, 0x9d, 0x73, 0xe2, 0x7a, 0xe2, 0x44, 0x64, 0x64, + 0x56, 0x74, 0x37, 0xbf, 0xd8, 0xce, 0x0b, 0x21, 0x45, 0xb9, 0x5d, 0xf2, 0x62, 0x91, 0xc4, 0xbc, + 0xf9, 0x77, 0xa8, 0xfe, 0x3c, 0x78, 0x9f, 0x65, 0x4b, 0xb9, 0xcc, 0xf9, 0x27, 0x1f, 0x5b, 0x32, + 0x16, 0xb3, 0x19, 0xcb, 0x26, 0x65, 0x8d, 0x7c, 0xf2, 0x91, 0x95, 0xf0, 0x05, 0xcf, 0xa4, 0xfe, + 0xfb, 0xb3, 0xff, 0xf8, 0xdf, 0x95, 0xe8, 0x83, 0xdd, 0x34, 0xe1, 0x99, 0xdc, 0xd5, 0x1a, 0x83, + 0xaf, 0xa3, 0xef, 0xee, 0xe4, 0xf9, 0x01, 0x97, 0x6f, 0x78, 0x51, 0x26, 0x22, 0x1b, 0x3c, 0x18, + 0x6a, 0x07, 0xc3, 0xb3, 0x3c, 0x1e, 0xee, 0xe4, 0xf9, 0xd0, 0x0a, 0x87, 0x67, 0xfc, 0xa7, 0x73, + 0x5e, 0xca, 0x4f, 0x1e, 0x86, 0xa1, 0x32, 0x17, 0x59, 0xc9, 0x07, 0x97, 0xd1, 0x6f, 0xec, 0xe4, + 0xf9, 0x88, 0xcb, 0x3d, 0x5e, 0x55, 0x60, 0x24, 0x99, 0xe4, 0x83, 0xb5, 0x96, 0xaa, 0x0f, 0x18, + 0x1f, 0xeb, 0xdd, 0xa0, 0xf6, 0x33, 0x8e, 0xbe, 0x53, 0xf9, 0xb9, 0x9a, 0xcb, 0x89, 0xb8, 0xc9, + 0x06, 0x9f, 0xb6, 0x15, 0xb5, 0xc8, 0xd8, 0xbe, 0x1f, 0x42, 0xb4, 0xd5, 0xb7, 0xd1, 0xaf, 0xbe, 0x65, 0x69, 0xca, 0xe5, 0x6e, 0xc1, 0xab, 0x82, 0xfb, 0x3a, 0xb5, 0x68, 0x58, 0xcb, 0x8c, 0xdd, - 0x4f, 0x83, 0x8c, 0x36, 0xfc, 0x75, 0xf4, 0xdd, 0x5a, 0x72, 0xc6, 0x63, 0xb1, 0xe0, 0xc5, 0x00, - 0xd5, 0xd2, 0x42, 0xa2, 0xc9, 0x5b, 0x10, 0xb4, 0xbd, 0x2b, 0xb2, 0x05, 0x2f, 0x24, 0x6e, 0x5b, - 0x0b, 0xc3, 0xb6, 0x2d, 0xa4, 0x6d, 0xff, 0xed, 0x4a, 0xf4, 0xfd, 0x9d, 0x38, 0x16, 0xf3, 0x4c, - 0x1e, 0x89, 0x98, 0xa5, 0x47, 0x49, 0x76, 0x7d, 0xc2, 0x6f, 0x76, 0xaf, 0x2a, 0x3e, 0x9b, 0xf2, - 0xc1, 0x73, 0xbf, 0x55, 0x6b, 0x74, 0x68, 0xd8, 0xa1, 0x0b, 0x1b, 0xdf, 0x9f, 0xdf, 0x4e, 0x49, - 0x97, 0xe5, 0x1f, 0x57, 0xa2, 0x3b, 0xb0, 0x2c, 0x23, 0x91, 0x2e, 0xb8, 0x2d, 0xcd, 0x8b, 0x0e, - 0xc3, 0x3e, 0x6e, 0xca, 0xf3, 0xc5, 0x6d, 0xd5, 0x74, 0x89, 0xd2, 0xe8, 0x43, 0x77, 0xb8, 0x8c, - 0x78, 0xa9, 0xa6, 0xd3, 0x63, 0x7a, 0x44, 0x68, 0xc4, 0x78, 0x7e, 0xd2, 0x07, 0xd5, 0xde, 0x92, - 0x68, 0xa0, 0xbd, 0xa5, 0xa2, 0x34, 0xce, 0xd6, 0x51, 0x0b, 0x0e, 0x61, 0x7c, 0x3d, 0xee, 0x41, - 0x6a, 0x57, 0x7f, 0x14, 0xfd, 0xda, 0x5b, 0x51, 0x5c, 0x97, 0x39, 0x8b, 0xb9, 0x9e, 0x0a, 0x8f, - 0x7c, 0xed, 0x46, 0x0a, 0x67, 0xc3, 0x6a, 0x17, 0xe6, 0x0c, 0xda, 0x46, 0xf8, 0x3a, 0xe7, 0x30, - 0x06, 0x59, 0xc5, 0x4a, 0x48, 0x0d, 0x5a, 0x08, 0x69, 0xdb, 0xd7, 0xd1, 0xc0, 0xda, 0xbe, 0xf8, - 0x63, 0x1e, 0xcb, 0x9d, 0xc9, 0x04, 0xf6, 0x8a, 0xd5, 0x55, 0xc4, 0x70, 0x67, 0x32, 0xa1, 0x7a, - 0x05, 0x47, 0xb5, 0xb3, 0x9b, 0xe8, 0x23, 0xe0, 0xec, 0x28, 0x29, 0x95, 0xc3, 0xad, 0xb0, 0x15, - 0x8d, 0x19, 0xa7, 0xc3, 0xbe, 0xb8, 0x76, 0xfc, 0xe7, 0x2b, 0xd1, 0xf7, 0x10, 0xcf, 0x67, 0x7c, - 0x26, 0x16, 0x7c, 0xf0, 0xb4, 0xdb, 0x5a, 0x4d, 0x1a, 0xff, 0x9f, 0xdd, 0x42, 0x03, 0x19, 0x26, - 0x23, 0x9e, 0xf2, 0x58, 0x92, 0xc3, 0xa4, 0x16, 0x77, 0x0e, 0x13, 0x83, 0x39, 0x33, 0xac, 0x11, - 0x1e, 0x70, 0xb9, 0x3b, 0x2f, 0x0a, 0x9e, 0x49, 0xb2, 0x2f, 0x2d, 0xd2, 0xd9, 0x97, 0x1e, 0x8a, - 0xd4, 0xe7, 0x80, 0xcb, 0x9d, 0x34, 0x25, 0xeb, 0x53, 0x8b, 0x3b, 0xeb, 0x63, 0x30, 0xed, 0x21, - 0x8e, 0x7e, 0xdd, 0x69, 0x31, 0x79, 0x98, 0x5d, 0x8a, 0x01, 0xdd, 0x16, 0x4a, 0x6e, 0x7c, 0xac, - 0x75, 0x72, 0x48, 0x35, 0x5e, 0xbd, 0xcb, 0x45, 0x41, 0x77, 0x4b, 0x2d, 0xee, 0xac, 0x86, 0xc1, - 0xb4, 0x87, 0x3f, 0x8c, 0x3e, 0xd0, 0x51, 0xb2, 0x59, 0xcf, 0x1e, 0xa2, 0x21, 0x14, 0x2e, 0x68, - 0x8f, 0x3a, 0x28, 0x1b, 0x1c, 0xb4, 0x4c, 0x07, 0x9f, 0x4f, 0x51, 0x3d, 0x10, 0x7a, 0x1e, 0x86, - 0xa1, 0x96, 0xed, 0x3d, 0x9e, 0x72, 0xd2, 0x76, 0x2d, 0xec, 0xb0, 0x6d, 0x20, 0x6d, 0xbb, 0x88, - 0x7e, 0xcb, 0x34, 0x4b, 0xb5, 0x8e, 0x2a, 0x79, 0x15, 0xa4, 0x37, 0x88, 0x7a, 0xbb, 0x90, 0xf1, - 0xb5, 0xd9, 0x0f, 0x6e, 0xd5, 0x47, 0xcf, 0x40, 0xbc, 0x3e, 0x60, 0xfe, 0x3d, 0x0c, 0x43, 0xda, - 0xf6, 0xdf, 0xad, 0x44, 0x3f, 0xd0, 0xb2, 0x57, 0x19, 0xbb, 0x48, 0xb9, 0x5a, 0x12, 0x4f, 0xb8, - 0xbc, 0x11, 0xc5, 0xf5, 0x68, 0x99, 0xc5, 0xc4, 0xf2, 0x8f, 0xc3, 0x1d, 0xcb, 0x3f, 0xa9, 0xe4, - 0x64, 0x7c, 0xba, 0xa2, 0x52, 0xe4, 0x30, 0xe3, 0x6b, 0x6a, 0x20, 0x45, 0x4e, 0x65, 0x7c, 0x3e, - 0xd2, 0xb2, 0x7a, 0x5c, 0x85, 0x4d, 0xdc, 0xea, 0xb1, 0x1b, 0x27, 0x1f, 0x84, 0x10, 0x1b, 0xb6, - 0x9a, 0x01, 0x2c, 0xb2, 0xcb, 0x64, 0x7a, 0x9e, 0x4f, 0xaa, 0x61, 0xfc, 0x18, 0x1f, 0xa1, 0x0e, - 0x42, 0x84, 0x2d, 0x02, 0xd5, 0xde, 0xfe, 0xc1, 0x26, 0x46, 0x7a, 0x2a, 0xed, 0x17, 0x62, 0x76, - 0xc4, 0xa7, 0x2c, 0x5e, 0xea, 0xf9, 0xff, 0x79, 0x68, 0xe2, 0x41, 0xda, 0x14, 0xe2, 0xc5, 0x2d, - 0xb5, 0x74, 0x79, 0xfe, 0x7d, 0x25, 0x7a, 0xd8, 0x54, 0xff, 0x8a, 0x65, 0x53, 0xae, 0xfb, 0xb3, - 0x2e, 0xfd, 0x4e, 0x36, 0x39, 0xe3, 0xa5, 0x64, 0x85, 0x1c, 0xfc, 0x08, 0xaf, 0x64, 0x48, 0xc7, - 0x94, 0xed, 0xc7, 0xbf, 0x94, 0xae, 0xed, 0xf5, 0x51, 0x15, 0xd8, 0x74, 0x08, 0xf0, 0x7b, 0x5d, - 0x49, 0x60, 0x00, 0x78, 0x10, 0x42, 0x6c, 0xaf, 0x2b, 0xc1, 0x61, 0xb6, 0x48, 0x24, 0x3f, 0xe0, - 0x19, 0x2f, 0xda, 0xbd, 0x5e, 0xab, 0xfa, 0x08, 0xd1, 0xeb, 0x04, 0x6a, 0x83, 0x8d, 0xe7, 0xcd, - 0x2c, 0x8e, 0x1b, 0x01, 0x23, 0xad, 0xe5, 0x71, 0xb3, 0x1f, 0x6c, 0x77, 0x77, 0x8e, 0xcf, 0x33, - 0xbe, 0x10, 0xd7, 0x70, 0x77, 0xe7, 0x9a, 0xa8, 0x01, 0x62, 0x77, 0x87, 0x82, 0x76, 0x05, 0x73, - 0xfc, 0xbc, 0x49, 0xf8, 0x0d, 0x58, 0xc1, 0x5c, 0xe5, 0x4a, 0x4c, 0xac, 0x60, 0x08, 0xa6, 0x3d, - 0x9c, 0x44, 0xbf, 0xa2, 0x84, 0xbf, 0x2f, 0x92, 0x6c, 0x70, 0x17, 0x51, 0xaa, 0x04, 0xc6, 0xea, - 0x3d, 0x1a, 0x00, 0x25, 0xae, 0x7e, 0xdd, 0x65, 0x59, 0xcc, 0x53, 0xb4, 0xc4, 0x56, 0x1c, 0x2c, - 0xb1, 0x87, 0xd9, 0xd4, 0x41, 0x09, 0xab, 0xf8, 0x35, 0xba, 0x62, 0x45, 0x92, 0x4d, 0x07, 0x98, - 0xae, 0x23, 0x27, 0x52, 0x07, 0x8c, 0x03, 0x43, 0x58, 0x2b, 0xee, 0xe4, 0x79, 0x51, 0x85, 0x45, - 0x6c, 0x08, 0xfb, 0x48, 0x70, 0x08, 0xb7, 0x50, 0xdc, 0xdb, 0x1e, 0x8f, 0xd3, 0x24, 0x0b, 0x7a, - 0xd3, 0x48, 0x1f, 0x6f, 0x16, 0x05, 0x83, 0xf7, 0x88, 0xb3, 0x05, 0x6f, 0x6a, 0x86, 0xb5, 0x8c, - 0x0b, 0x04, 0x07, 0x2f, 0x00, 0xed, 0x3e, 0x4d, 0x89, 0x8f, 0xd9, 0x35, 0xaf, 0x1a, 0x98, 0x57, - 0xeb, 0xda, 0x00, 0xd3, 0xf7, 0x08, 0x62, 0x9f, 0x86, 0x93, 0xda, 0xd5, 0x3c, 0xfa, 0x48, 0xc9, - 0x4f, 0x59, 0x21, 0x93, 0x38, 0xc9, 0x59, 0xd6, 0xe4, 0xff, 0xd8, 0xbc, 0x6e, 0x51, 0xc6, 0xe5, - 0x56, 0x4f, 0x5a, 0xbb, 0xfd, 0xb7, 0x95, 0xe8, 0x3e, 0xf4, 0x7b, 0xca, 0x8b, 0x59, 0xa2, 0xb6, + 0x07, 0x41, 0x46, 0x1b, 0xfe, 0x3a, 0xfa, 0x6e, 0x2d, 0x39, 0xe3, 0xb1, 0x58, 0xf0, 0x62, 0x80, + 0x6a, 0x69, 0x21, 0xd1, 0xe4, 0x2d, 0x08, 0xda, 0xde, 0x15, 0xd9, 0x82, 0x17, 0x12, 0xb7, 0xad, + 0x85, 0x61, 0xdb, 0x16, 0xd2, 0xb6, 0xff, 0x76, 0x25, 0xfa, 0xfe, 0x4e, 0x1c, 0x8b, 0x79, 0x26, + 0x8f, 0x44, 0xcc, 0xd2, 0xa3, 0x24, 0xbb, 0x3e, 0xe1, 0x37, 0xbb, 0x57, 0x15, 0x9f, 0x4d, 0xf9, + 0xe0, 0xb9, 0xdf, 0xaa, 0x35, 0x3a, 0x34, 0xec, 0xd0, 0x85, 0x8d, 0xef, 0xcf, 0x6f, 0xa7, 0xa4, + 0xcb, 0xf2, 0x8f, 0x2b, 0xd1, 0x1d, 0x58, 0x96, 0x91, 0x48, 0x17, 0xdc, 0x96, 0xe6, 0x45, 0x87, + 0x61, 0x1f, 0x37, 0xe5, 0xf9, 0xe2, 0xb6, 0x6a, 0xba, 0x44, 0x69, 0xf4, 0xa1, 0x3b, 0x5c, 0x46, + 0xbc, 0x54, 0xd3, 0xe9, 0x31, 0x3d, 0x22, 0x34, 0x62, 0x3c, 0x3f, 0xe9, 0x83, 0x6a, 0x6f, 0x49, + 0x34, 0xd0, 0xde, 0x52, 0x51, 0x1a, 0x67, 0xeb, 0xa8, 0x05, 0x87, 0x30, 0xbe, 0x1e, 0xf7, 0x20, + 0xb5, 0xab, 0x3f, 0x8a, 0x7e, 0xed, 0xad, 0x28, 0xae, 0xcb, 0x9c, 0xc5, 0x5c, 0x4f, 0x85, 0x47, + 0xbe, 0x76, 0x23, 0x85, 0xb3, 0x61, 0xb5, 0x0b, 0x73, 0x06, 0x6d, 0x23, 0x7c, 0x9d, 0x73, 0x18, + 0x83, 0xac, 0x62, 0x25, 0xa4, 0x06, 0x2d, 0x84, 0xb4, 0xed, 0xeb, 0x68, 0x60, 0x6d, 0x5f, 0xfc, + 0x31, 0x8f, 0xe5, 0xce, 0x64, 0x02, 0x7b, 0xc5, 0xea, 0x2a, 0x62, 0xb8, 0x33, 0x99, 0x50, 0xbd, + 0x82, 0xa3, 0xda, 0xd9, 0x4d, 0xf4, 0x11, 0x70, 0x76, 0x94, 0x94, 0xca, 0xe1, 0x56, 0xd8, 0x8a, + 0xc6, 0x8c, 0xd3, 0x61, 0x5f, 0x5c, 0x3b, 0xfe, 0xf3, 0x95, 0xe8, 0x7b, 0x88, 0xe7, 0x33, 0x3e, + 0x13, 0x0b, 0x3e, 0x78, 0xda, 0x6d, 0xad, 0x26, 0x8d, 0xff, 0xcf, 0x6e, 0xa1, 0x81, 0x0c, 0x93, + 0x11, 0x4f, 0x79, 0x2c, 0xc9, 0x61, 0x52, 0x8b, 0x3b, 0x87, 0x89, 0xc1, 0x9c, 0x19, 0xd6, 0x08, + 0x0f, 0xb8, 0xdc, 0x9d, 0x17, 0x05, 0xcf, 0x24, 0xd9, 0x97, 0x16, 0xe9, 0xec, 0x4b, 0x0f, 0x45, + 0xea, 0x73, 0xc0, 0xe5, 0x4e, 0x9a, 0x92, 0xf5, 0xa9, 0xc5, 0x9d, 0xf5, 0x31, 0x98, 0xf6, 0x10, + 0x47, 0xbf, 0xee, 0xb4, 0x98, 0x3c, 0xcc, 0x2e, 0xc5, 0x80, 0x6e, 0x0b, 0x25, 0x37, 0x3e, 0xd6, + 0x3a, 0x39, 0xa4, 0x1a, 0xaf, 0xde, 0xe5, 0xa2, 0xa0, 0xbb, 0xa5, 0x16, 0x77, 0x56, 0xc3, 0x60, + 0xda, 0xc3, 0x1f, 0x46, 0x1f, 0xe8, 0x28, 0xd9, 0xac, 0x67, 0x0f, 0xd1, 0x10, 0x0a, 0x17, 0xb4, + 0x47, 0x1d, 0x94, 0x0d, 0x0e, 0x5a, 0xa6, 0x83, 0xcf, 0x03, 0x54, 0x0f, 0x84, 0x9e, 0x87, 0x61, + 0xa8, 0x65, 0x7b, 0x8f, 0xa7, 0x9c, 0xb4, 0x5d, 0x0b, 0x3b, 0x6c, 0x1b, 0x48, 0xdb, 0x2e, 0xa2, + 0xdf, 0x32, 0xcd, 0x52, 0xad, 0xa3, 0x4a, 0x5e, 0x05, 0xe9, 0x0d, 0xa2, 0xde, 0x2e, 0x64, 0x7c, + 0x6d, 0xf6, 0x83, 0x5b, 0xf5, 0xd1, 0x33, 0x10, 0xaf, 0x0f, 0x98, 0x7f, 0x0f, 0xc3, 0x90, 0xb6, + 0xfd, 0x77, 0x2b, 0xd1, 0x0f, 0xb4, 0xec, 0x55, 0xc6, 0x2e, 0x52, 0xae, 0x96, 0xc4, 0x13, 0x2e, + 0x6f, 0x44, 0x71, 0x3d, 0x5a, 0x66, 0x31, 0xb1, 0xfc, 0xe3, 0x70, 0xc7, 0xf2, 0x4f, 0x2a, 0x39, + 0x19, 0x9f, 0xae, 0xa8, 0x14, 0x39, 0xcc, 0xf8, 0x9a, 0x1a, 0x48, 0x91, 0x53, 0x19, 0x9f, 0x8f, + 0xb4, 0xac, 0x1e, 0x57, 0x61, 0x13, 0xb7, 0x7a, 0xec, 0xc6, 0xc9, 0xfb, 0x21, 0xc4, 0x86, 0xad, + 0x66, 0x00, 0x8b, 0xec, 0x32, 0x99, 0x9e, 0xe7, 0x93, 0x6a, 0x18, 0x3f, 0xc6, 0x47, 0xa8, 0x83, + 0x10, 0x61, 0x8b, 0x40, 0xb5, 0xb7, 0x7f, 0xb0, 0x89, 0x91, 0x9e, 0x4a, 0xfb, 0x85, 0x98, 0x1d, + 0xf1, 0x29, 0x8b, 0x97, 0x7a, 0xfe, 0x7f, 0x1e, 0x9a, 0x78, 0x90, 0x36, 0x85, 0x78, 0x71, 0x4b, + 0x2d, 0x5d, 0x9e, 0x7f, 0x5f, 0x89, 0x1e, 0x36, 0xd5, 0xbf, 0x62, 0xd9, 0x94, 0xeb, 0xfe, 0xac, + 0x4b, 0xbf, 0x93, 0x4d, 0xce, 0x78, 0x29, 0x59, 0x21, 0x07, 0x3f, 0xc2, 0x2b, 0x19, 0xd2, 0x31, + 0x65, 0xfb, 0xf1, 0x2f, 0xa5, 0x6b, 0x7b, 0x7d, 0x54, 0x05, 0x36, 0x1d, 0x02, 0xfc, 0x5e, 0x57, + 0x12, 0x18, 0x00, 0xee, 0x87, 0x10, 0xdb, 0xeb, 0x4a, 0x70, 0x98, 0x2d, 0x12, 0xc9, 0x0f, 0x78, + 0xc6, 0x8b, 0x76, 0xaf, 0xd7, 0xaa, 0x3e, 0x42, 0xf4, 0x3a, 0x81, 0xda, 0x60, 0xe3, 0x79, 0x33, + 0x8b, 0xe3, 0x46, 0xc0, 0x48, 0x6b, 0x79, 0xdc, 0xec, 0x07, 0xdb, 0xdd, 0x9d, 0xe3, 0xf3, 0x8c, + 0x2f, 0xc4, 0x35, 0xdc, 0xdd, 0xb9, 0x26, 0x6a, 0x80, 0xd8, 0xdd, 0xa1, 0xa0, 0x5d, 0xc1, 0x1c, + 0x3f, 0x6f, 0x12, 0x7e, 0x03, 0x56, 0x30, 0x57, 0xb9, 0x12, 0x13, 0x2b, 0x18, 0x82, 0x69, 0x0f, + 0x27, 0xd1, 0xaf, 0x28, 0xe1, 0xef, 0x8b, 0x24, 0x1b, 0xdc, 0x45, 0x94, 0x2a, 0x81, 0xb1, 0x7a, + 0x8f, 0x06, 0x40, 0x89, 0xab, 0xbf, 0xee, 0xb2, 0x2c, 0xe6, 0x29, 0x5a, 0x62, 0x2b, 0x0e, 0x96, + 0xd8, 0xc3, 0x6c, 0xea, 0xa0, 0x84, 0x55, 0xfc, 0x1a, 0x5d, 0xb1, 0x22, 0xc9, 0xa6, 0x03, 0x4c, + 0xd7, 0x91, 0x13, 0xa9, 0x03, 0xc6, 0x81, 0x21, 0xac, 0x15, 0x77, 0xf2, 0xbc, 0xa8, 0xc2, 0x22, + 0x36, 0x84, 0x7d, 0x24, 0x38, 0x84, 0x5b, 0x28, 0xee, 0x6d, 0x8f, 0xc7, 0x69, 0x92, 0x05, 0xbd, + 0x69, 0xa4, 0x8f, 0x37, 0x8b, 0x82, 0xc1, 0x7b, 0xc4, 0xd9, 0x82, 0x37, 0x35, 0xc3, 0x5a, 0xc6, + 0x05, 0x82, 0x83, 0x17, 0x80, 0x76, 0x9f, 0xa6, 0xc4, 0xc7, 0xec, 0x9a, 0x57, 0x0d, 0xcc, 0xab, + 0x75, 0x6d, 0x80, 0xe9, 0x7b, 0x04, 0xb1, 0x4f, 0xc3, 0x49, 0xed, 0x6a, 0x1e, 0x7d, 0xa4, 0xe4, + 0xa7, 0xac, 0x90, 0x49, 0x9c, 0xe4, 0x2c, 0x6b, 0xf2, 0x7f, 0x6c, 0x5e, 0xb7, 0x28, 0xe3, 0x72, + 0xab, 0x27, 0xad, 0xdd, 0xfe, 0xdb, 0x4a, 0xf4, 0x29, 0xf4, 0x7b, 0xca, 0x8b, 0x59, 0xa2, 0xb6, 0x91, 0x65, 0x1d, 0x84, 0x07, 0x5f, 0x86, 0x8d, 0xb6, 0x14, 0x4c, 0x69, 0x7e, 0x78, 0x7b, 0x45, 0x9b, 0x0c, 0x8d, 0x74, 0x6a, 0xfd, 0xba, 0x98, 0xb4, 0x8e, 0x59, 0x46, 0x4d, 0xbe, 0xac, 0x84, 0x44, 0x32, 0xd4, 0x82, 0xc0, 0x0c, 0x3f, 0xcf, 0xca, 0xc6, 0x3a, 0x36, 0xc3, 0xad, 0x38, 0x38, 0xc3, 0x3d, 0x4c, 0x7b, 0xf8, 0x83, 0x28, 0xaa, 0x37, 0x5b, 0x6a, 0x43, 0xec, 0xc7, 0x1c, 0xbd, - 0x0b, 0xf3, 0x76, 0xc3, 0xf7, 0x03, 0x84, 0x5d, 0xe8, 0xea, 0xdf, 0xd5, 0x3e, 0x7f, 0x80, 0x6a, - 0x28, 0x11, 0xb1, 0xd0, 0x01, 0x04, 0x16, 0x74, 0x74, 0x25, 0x6e, 0xf0, 0x82, 0x56, 0x92, 0x70, - 0x41, 0x35, 0x61, 0x4f, 0xde, 0x74, 0x41, 0xb1, 0x93, 0xb7, 0xa6, 0x18, 0xa1, 0x93, 0x37, 0xc8, - 0x68, 0xc3, 0x22, 0xfa, 0x4d, 0xd7, 0xf0, 0x4b, 0x21, 0xae, 0x67, 0xac, 0xb8, 0x1e, 0x3c, 0xa1, - 0x95, 0x1b, 0xc6, 0x38, 0xda, 0xe8, 0xc5, 0xda, 0xa0, 0xe6, 0x3a, 0xac, 0xd2, 0xa4, 0xf3, 0x22, - 0x05, 0x41, 0xcd, 0xb3, 0xa1, 0x11, 0x22, 0xa8, 0x11, 0xa8, 0x1d, 0x95, 0xae, 0xb7, 0x11, 0x87, - 0x7b, 0x3d, 0x4f, 0x7d, 0xc4, 0xa9, 0xbd, 0x1e, 0x82, 0xc1, 0x21, 0x74, 0x50, 0xb0, 0xfc, 0x0a, - 0x1f, 0x42, 0x4a, 0x14, 0x1e, 0x42, 0x0d, 0x02, 0xfb, 0x7b, 0xc4, 0x59, 0x11, 0x5f, 0xe1, 0xfd, - 0x5d, 0xcb, 0xc2, 0xfd, 0x6d, 0x18, 0xd8, 0xdf, 0xb5, 0xe0, 0x6d, 0x22, 0xaf, 0x8e, 0xb9, 0x64, - 0x78, 0x7f, 0xfb, 0x4c, 0xb8, 0xbf, 0x5b, 0xac, 0xcd, 0xc3, 0x5c, 0x87, 0xa3, 0xf9, 0x45, 0x19, - 0x17, 0xc9, 0x05, 0x1f, 0x04, 0xac, 0x18, 0x88, 0xc8, 0xc3, 0x48, 0x58, 0xfb, 0xfc, 0xf9, 0x4a, - 0x74, 0xb7, 0xe9, 0x76, 0x51, 0x96, 0x3a, 0xe6, 0xf9, 0xee, 0x5f, 0xe0, 0xfd, 0x4b, 0xe0, 0xc4, - 0x59, 0x68, 0x0f, 0x35, 0x67, 0x4d, 0xc0, 0x8b, 0x74, 0x9e, 0x95, 0xa6, 0x50, 0x5f, 0xf6, 0xb1, - 0xee, 0x28, 0x10, 0x6b, 0x42, 0x2f, 0x45, 0xbb, 0x1c, 0xeb, 0xfe, 0x69, 0x64, 0x87, 0x93, 0x12, - 0x2c, 0xc7, 0x4d, 0x7b, 0x3b, 0x04, 0xb1, 0x1c, 0xe3, 0x24, 0x1c, 0x0a, 0x07, 0x85, 0x98, 0xe7, - 0x65, 0xc7, 0x50, 0x00, 0x50, 0x78, 0x28, 0xb4, 0x61, 0xed, 0xf3, 0x5d, 0xf4, 0xdb, 0xee, 0xf0, - 0x73, 0x1b, 0x7b, 0x8b, 0x1e, 0x53, 0x58, 0x13, 0x0f, 0xfb, 0xe2, 0x36, 0x21, 0x6d, 0x3c, 0xcb, - 0x3d, 0x2e, 0x59, 0x92, 0x96, 0x83, 0x55, 0xdc, 0x46, 0x23, 0x27, 0x12, 0x52, 0x8c, 0x83, 0xf1, - 0x6d, 0x6f, 0x9e, 0xa7, 0x49, 0xdc, 0x3e, 0x89, 0xd6, 0xba, 0x46, 0x1c, 0x8e, 0x6f, 0x2e, 0x06, - 0xe3, 0x75, 0xb5, 0xe4, 0xab, 0xff, 0x8c, 0x97, 0x39, 0xc7, 0xe3, 0xb5, 0x87, 0x84, 0xe3, 0x35, - 0x44, 0x61, 0x7d, 0x46, 0x5c, 0x1e, 0xb1, 0xa5, 0x98, 0x13, 0xf1, 0xda, 0x88, 0xc3, 0xf5, 0x71, - 0x31, 0x9b, 0x13, 0x1a, 0x0f, 0x87, 0x99, 0xe4, 0x45, 0xc6, 0xd2, 0xfd, 0x94, 0x4d, 0xcb, 0x01, - 0x11, 0x63, 0x7c, 0x8a, 0xc8, 0x09, 0x69, 0x1a, 0x69, 0xc6, 0xc3, 0x72, 0x9f, 0x2d, 0x44, 0x91, - 0x48, 0xba, 0x19, 0x2d, 0xd2, 0xd9, 0x8c, 0x1e, 0x8a, 0x7a, 0xdb, 0x29, 0xe2, 0xab, 0x64, 0xc1, - 0x27, 0x01, 0x6f, 0x0d, 0xd2, 0xc3, 0x9b, 0x83, 0x22, 0x9d, 0x36, 0x12, 0xf3, 0x22, 0xe6, 0x64, - 0xa7, 0xd5, 0xe2, 0xce, 0x4e, 0x33, 0x98, 0xf6, 0xf0, 0x57, 0x2b, 0xd1, 0xef, 0xd4, 0x52, 0xf7, - 0x78, 0x78, 0x8f, 0x95, 0x57, 0x17, 0x82, 0x15, 0x93, 0xc1, 0x67, 0x98, 0x1d, 0x14, 0x35, 0xae, - 0x9f, 0xdd, 0x46, 0x05, 0x36, 0xeb, 0x51, 0x52, 0x3a, 0x33, 0x0e, 0x6d, 0x56, 0x0f, 0x09, 0x37, - 0x2b, 0x44, 0x61, 0x00, 0x51, 0xf2, 0xfa, 0x28, 0x66, 0x95, 0xd4, 0xf7, 0xcf, 0x63, 0xd6, 0x3a, - 0x39, 0x18, 0x1f, 0x2b, 0xa1, 0x3f, 0x5a, 0xb6, 0x28, 0x1b, 0xf8, 0x88, 0x19, 0xf6, 0xc5, 0x49, - 0xcf, 0x66, 0x56, 0x84, 0x3d, 0xb7, 0x66, 0xc6, 0xb0, 0x2f, 0x4e, 0x78, 0x76, 0xc2, 0x5a, 0xc8, - 0x33, 0x12, 0xda, 0x86, 0x7d, 0x71, 0x98, 0x7d, 0x69, 0xa6, 0x59, 0x17, 0x9e, 0x04, 0xec, 0xc0, - 0xb5, 0x61, 0xa3, 0x17, 0xab, 0x1d, 0xfe, 0xcd, 0x4a, 0xf4, 0x7d, 0xeb, 0xf1, 0x58, 0x4c, 0x92, - 0xcb, 0x65, 0x0d, 0xbd, 0x61, 0xe9, 0x9c, 0x97, 0x83, 0x67, 0x94, 0xb5, 0x36, 0x6b, 0x4a, 0xf0, - 0xfc, 0x56, 0x3a, 0x70, 0xee, 0xec, 0xe4, 0x79, 0xba, 0x1c, 0xf3, 0x59, 0x9e, 0x92, 0x73, 0xc7, - 0x43, 0xc2, 0x73, 0x07, 0xa2, 0x30, 0x2b, 0x1f, 0x8b, 0x2a, 0xe7, 0x47, 0xb3, 0x72, 0x25, 0x0a, - 0x67, 0xe5, 0x0d, 0x02, 0x73, 0xa5, 0xb1, 0xd8, 0x15, 0x69, 0xca, 0x63, 0xd9, 0x7e, 0xc4, 0x6c, - 0x34, 0x2d, 0x11, 0xce, 0x95, 0x00, 0x69, 0x4f, 0x63, 0x9a, 0x3d, 0x24, 0x2b, 0xf8, 0xcb, 0xe5, - 0x51, 0x92, 0x5d, 0x0f, 0xf0, 0xb4, 0xc0, 0x02, 0xc4, 0x69, 0x0c, 0x0a, 0xc2, 0xbd, 0xea, 0x79, - 0x36, 0x11, 0xf8, 0x5e, 0xb5, 0x92, 0x84, 0xf7, 0xaa, 0x9a, 0x80, 0x26, 0xcf, 0x38, 0x65, 0xb2, - 0x92, 0x84, 0x4d, 0x6a, 0x02, 0x0b, 0x85, 0xfa, 0xcc, 0x9e, 0x0c, 0x85, 0xe0, 0x94, 0x7e, 0xad, - 0x93, 0x83, 0x23, 0xb4, 0xd9, 0xb4, 0xee, 0x73, 0x19, 0x5f, 0xe1, 0x23, 0xd4, 0x43, 0xc2, 0x23, - 0x14, 0xa2, 0xb0, 0x4a, 0x63, 0x61, 0x36, 0xdd, 0xab, 0xf8, 0xf8, 0x68, 0x6d, 0xb8, 0xd7, 0x3a, - 0x39, 0xb8, 0x8d, 0x3c, 0x9c, 0xa9, 0x36, 0x43, 0x07, 0x79, 0x2d, 0x0b, 0x6f, 0x23, 0x0d, 0x03, - 0x4b, 0x5f, 0x0b, 0xaa, 0xe6, 0xc4, 0x4b, 0x6f, 0xe5, 0xe1, 0xd2, 0x7b, 0x9c, 0x76, 0xf2, 0x2f, - 0x66, 0x1b, 0x57, 0x4b, 0x4f, 0x44, 0x35, 0x47, 0xde, 0xb0, 0x34, 0x99, 0x30, 0xc9, 0xc7, 0xe2, - 0x9a, 0x67, 0xf8, 0x8e, 0x49, 0x97, 0xb6, 0xe6, 0x87, 0x9e, 0x42, 0x78, 0xc7, 0x14, 0x56, 0x84, - 0xe3, 0xa4, 0xa6, 0xcf, 0x4b, 0xbe, 0xcb, 0x4a, 0x22, 0x92, 0x79, 0x48, 0x78, 0x9c, 0x40, 0x14, - 0xe6, 0xab, 0xb5, 0xfc, 0xd5, 0xbb, 0x9c, 0x17, 0x09, 0xcf, 0x62, 0x8e, 0xe7, 0xab, 0x90, 0x0a, - 0xe7, 0xab, 0x08, 0x0d, 0xf7, 0x6a, 0x7b, 0x4c, 0xf2, 0x97, 0xcb, 0x71, 0x32, 0xe3, 0xa5, 0x64, - 0xb3, 0x1c, 0xdf, 0xab, 0x01, 0x28, 0xbc, 0x57, 0x6b, 0xc3, 0xad, 0xa3, 0x21, 0x13, 0x10, 0xdb, - 0x37, 0x53, 0x20, 0x11, 0xb8, 0x99, 0x42, 0xa0, 0xb0, 0x61, 0x2d, 0x80, 0x1e, 0x0e, 0xb7, 0xac, - 0x04, 0x0f, 0x87, 0x69, 0xba, 0x75, 0xe0, 0x66, 0x98, 0x51, 0x35, 0x35, 0x3b, 0x8a, 0x3e, 0x72, - 0xa7, 0xe8, 0x46, 0x2f, 0x16, 0x3f, 0xe1, 0x3b, 0xe3, 0x29, 0x53, 0xcb, 0x56, 0xe0, 0x18, 0xad, - 0x61, 0xfa, 0x9c, 0xf0, 0x39, 0xac, 0x76, 0xf8, 0x17, 0x2b, 0xd1, 0x27, 0x98, 0xc7, 0xd7, 0xb9, - 0xf2, 0xfb, 0xb4, 0xdb, 0x56, 0x4d, 0x12, 0x57, 0x6f, 0xc2, 0x1a, 0xba, 0x0c, 0x7f, 0x12, 0x7d, - 0xdc, 0x88, 0xec, 0xcd, 0x1c, 0x5d, 0x00, 0x3f, 0x69, 0x33, 0xe5, 0x87, 0x9c, 0x71, 0xbf, 0xdd, - 0x9b, 0xb7, 0xfb, 0x21, 0xbf, 0x5c, 0x25, 0xd8, 0x0f, 0x19, 0x1b, 0x5a, 0x4c, 0xec, 0x87, 0x10, - 0xcc, 0xce, 0x4e, 0xb7, 0x7a, 0x6f, 0x13, 0x79, 0xa5, 0xf2, 0x2d, 0x30, 0x3b, 0xbd, 0xb2, 0x1a, - 0x88, 0x98, 0x9d, 0x24, 0x0c, 0x33, 0x92, 0x06, 0xac, 0xe6, 0x26, 0x16, 0xcb, 0x8d, 0x21, 0x77, - 0x66, 0xae, 0x77, 0x83, 0x70, 0xbc, 0x36, 0x62, 0xbd, 0xf5, 0x79, 0x12, 0xb2, 0x00, 0xb6, 0x3f, - 0x1b, 0xbd, 0x58, 0xed, 0xf0, 0xcf, 0xa2, 0xef, 0xb5, 0x2a, 0xb6, 0xcf, 0x99, 0x9c, 0x17, 0x7c, - 0x32, 0xd8, 0xee, 0x28, 0x77, 0x03, 0x1a, 0xd7, 0x4f, 0xfb, 0x2b, 0xb4, 0x72, 0xf4, 0x86, 0xab, - 0x87, 0x95, 0x29, 0xc3, 0xb3, 0x90, 0x49, 0x9f, 0x0d, 0xe6, 0xe8, 0xb4, 0x4e, 0x6b, 0x9b, 0xed, - 0x8e, 0xae, 0x9d, 0x05, 0x4b, 0x52, 0xf5, 0x90, 0xee, 0xb3, 0x90, 0x51, 0x0f, 0x0d, 0x6e, 0xb3, - 0x49, 0x95, 0x56, 0x64, 0x56, 0x73, 0xdc, 0xd9, 0x9e, 0x6d, 0xd2, 0x91, 0x00, 0xd9, 0x9d, 0x6d, - 0xf5, 0xa4, 0xb5, 0x5b, 0xd9, 0x2c, 0x79, 0xd5, 0xcf, 0xee, 0x20, 0xc7, 0xbc, 0x6a, 0x55, 0x64, - 0xa4, 0x6f, 0xf5, 0xa4, 0xb5, 0xd7, 0x3f, 0x8d, 0x3e, 0x6e, 0x7b, 0xd5, 0x0b, 0xd1, 0x76, 0xa7, - 0x29, 0xb0, 0x16, 0x3d, 0xed, 0xaf, 0x60, 0xb7, 0x34, 0x5f, 0x25, 0xa5, 0x14, 0xc5, 0x72, 0x74, - 0x25, 0x6e, 0x9a, 0x1b, 0xef, 0xfe, 0x6c, 0xd5, 0xc0, 0xd0, 0x21, 0x88, 0x2d, 0x0d, 0x4e, 0xb6, - 0x5c, 0xd9, 0x9b, 0xf1, 0x25, 0xe1, 0xca, 0x21, 0x3a, 0x5c, 0xf9, 0xa4, 0x8d, 0x55, 0x4d, 0xad, - 0xec, 0x35, 0xfe, 0x35, 0xbc, 0xa8, 0xed, 0xab, 0xfc, 0xeb, 0xdd, 0xa0, 0xcd, 0x58, 0xb4, 0x78, - 0x2f, 0xb9, 0xbc, 0x34, 0x75, 0xc2, 0x4b, 0xea, 0x22, 0x44, 0xc6, 0x42, 0xa0, 0x36, 0xe9, 0xde, - 0x4f, 0x52, 0xae, 0x4e, 0xf4, 0x5f, 0x5f, 0x5e, 0xa6, 0x82, 0x4d, 0x40, 0xd2, 0x5d, 0x89, 0x87, - 0xae, 0x9c, 0x48, 0xba, 0x31, 0xce, 0x3e, 0x23, 0xae, 0xa4, 0x67, 0x3c, 0x16, 0x59, 0x9c, 0xa4, - 0xf0, 0x02, 0xa0, 0xd2, 0x34, 0x42, 0xe2, 0x19, 0x71, 0x0b, 0xb2, 0x0b, 0x63, 0x25, 0xaa, 0xa6, - 0x7d, 0x53, 0xfe, 0x47, 0x6d, 0x45, 0x47, 0x4c, 0x2c, 0x8c, 0x08, 0x66, 0xf7, 0x9e, 0x95, 0xf0, - 0x3c, 0x57, 0xc6, 0xef, 0xb5, 0xb5, 0x6a, 0x09, 0xb1, 0xf7, 0xf4, 0x09, 0xbb, 0x87, 0xaa, 0x7e, - 0xdf, 0x13, 0x37, 0x99, 0x32, 0xfa, 0xa0, 0xad, 0xd2, 0xc8, 0x88, 0x3d, 0x14, 0x64, 0xb4, 0xe1, - 0x9f, 0x44, 0xff, 0x5f, 0x19, 0x2e, 0x44, 0x3e, 0xb8, 0x83, 0x28, 0x14, 0xce, 0x5d, 0xbd, 0xbb, - 0xa4, 0xdc, 0x5e, 0x39, 0x35, 0x63, 0xe3, 0xbc, 0x64, 0x53, 0x3e, 0x78, 0x48, 0xf4, 0xb8, 0x92, - 0x12, 0x57, 0x4e, 0xdb, 0x94, 0x3f, 0x2a, 0x4e, 0xc4, 0x44, 0x5b, 0x47, 0x6a, 0x68, 0x84, 0xa1, - 0x51, 0xe1, 0x42, 0x36, 0x99, 0x39, 0x61, 0x8b, 0x64, 0x6a, 0x16, 0x9c, 0x3a, 0x6e, 0x95, 0x20, - 0x99, 0xb1, 0xcc, 0xd0, 0x81, 0x88, 0x64, 0x86, 0x84, 0xb5, 0xcf, 0x7f, 0x5e, 0x89, 0xee, 0x59, - 0xe6, 0xa0, 0x39, 0xad, 0x3b, 0xcc, 0x2e, 0x45, 0x95, 0xfa, 0x1c, 0x25, 0xd9, 0x75, 0x39, 0xf8, - 0x82, 0x32, 0x89, 0xf3, 0xa6, 0x28, 0x5f, 0xde, 0x5a, 0xcf, 0x66, 0xad, 0xcd, 0x51, 0x96, 0x7d, - 0x9e, 0x5d, 0x6b, 0x80, 0xac, 0xd5, 0x9c, 0x78, 0x41, 0x8e, 0xc8, 0x5a, 0x43, 0xbc, 0xed, 0x62, - 0xe3, 0x3c, 0x15, 0x19, 0xec, 0x62, 0x6b, 0xa1, 0x12, 0x12, 0x5d, 0xdc, 0x82, 0x6c, 0x3c, 0x6e, - 0x44, 0xf5, 0xa9, 0xcb, 0x4e, 0x9a, 0x82, 0x78, 0x6c, 0x54, 0x0d, 0x40, 0xc4, 0x63, 0x14, 0xd4, - 0x7e, 0xce, 0xa2, 0xef, 0x54, 0x4d, 0x7a, 0x5a, 0xf0, 0x45, 0xc2, 0xe1, 0xd5, 0x0b, 0x47, 0x42, - 0xcc, 0x7f, 0x9f, 0xb0, 0x33, 0xeb, 0x3c, 0x2b, 0xf3, 0x94, 0x95, 0x57, 0xfa, 0x61, 0xbc, 0x5f, - 0xe7, 0x46, 0x08, 0x1f, 0xc7, 0x3f, 0xea, 0xa0, 0x6c, 0x50, 0x6f, 0x64, 0x26, 0xc4, 0xac, 0xe2, - 0xaa, 0xad, 0x30, 0xb3, 0xd6, 0xc9, 0xd9, 0x13, 0xef, 0x03, 0x96, 0xa6, 0xbc, 0x58, 0x36, 0xb2, - 0x63, 0x96, 0x25, 0x97, 0xbc, 0x94, 0xe0, 0xc4, 0x5b, 0x53, 0x43, 0x88, 0x11, 0x27, 0xde, 0x01, - 0xdc, 0x66, 0xf3, 0xc0, 0xf3, 0x61, 0x36, 0xe1, 0xef, 0x40, 0x36, 0x0f, 0xed, 0x28, 0x86, 0xc8, - 0xe6, 0x29, 0xd6, 0x9e, 0xfc, 0xbe, 0x4c, 0x45, 0x7c, 0xad, 0x97, 0x00, 0xbf, 0x83, 0x95, 0x04, - 0xae, 0x01, 0x0f, 0x42, 0x88, 0x5d, 0x04, 0x94, 0xe0, 0x8c, 0xe7, 0x29, 0x8b, 0xe1, 0xfd, 0x9b, - 0x5a, 0x47, 0xcb, 0x88, 0x45, 0x00, 0x32, 0xa0, 0xb8, 0xfa, 0x5e, 0x0f, 0x56, 0x5c, 0x70, 0xad, - 0xe7, 0x41, 0x08, 0xb1, 0xcb, 0xa0, 0x12, 0x8c, 0xf2, 0x34, 0x91, 0x60, 0x1a, 0xd4, 0x1a, 0x4a, - 0x42, 0x4c, 0x03, 0x9f, 0x00, 0x26, 0x8f, 0x79, 0x31, 0xe5, 0xa8, 0x49, 0x25, 0x09, 0x9a, 0x6c, - 0x08, 0x7b, 0xc9, 0xb4, 0xae, 0xbb, 0xc8, 0x97, 0xe0, 0x92, 0xa9, 0xae, 0x96, 0xc8, 0x97, 0xc4, - 0x25, 0x53, 0x0f, 0x00, 0x45, 0x3c, 0x65, 0xa5, 0xc4, 0x8b, 0xa8, 0x24, 0xc1, 0x22, 0x36, 0x84, - 0x5d, 0xa3, 0xeb, 0x22, 0xce, 0x25, 0x58, 0xa3, 0x75, 0x01, 0x9c, 0x27, 0xd0, 0x77, 0x49, 0xb9, - 0x8d, 0x24, 0x75, 0xaf, 0x70, 0xb9, 0x9f, 0xf0, 0x74, 0x52, 0x82, 0x48, 0xa2, 0xdb, 0xbd, 0x91, - 0x12, 0x91, 0xa4, 0x4d, 0x81, 0xa1, 0xa4, 0xcf, 0xc7, 0xb1, 0xda, 0x81, 0xa3, 0xf1, 0x07, 0x21, - 0xc4, 0xc6, 0xa7, 0xa6, 0xd0, 0xbb, 0xac, 0x28, 0x92, 0x6a, 0xf1, 0x5f, 0xc5, 0x0b, 0xd4, 0xc8, - 0x89, 0xf8, 0x84, 0x71, 0x60, 0x7a, 0x35, 0x81, 0x1b, 0x2b, 0x18, 0x0c, 0xdd, 0x9f, 0x06, 0x19, - 0x9b, 0x71, 0x2a, 0x89, 0xf3, 0x08, 0x15, 0x6b, 0x4d, 0xe4, 0x09, 0xea, 0x6a, 0x17, 0xe6, 0xbc, - 0x04, 0x62, 0x5c, 0x1c, 0x8b, 0x05, 0x1f, 0x8b, 0x57, 0xef, 0x92, 0x52, 0x26, 0xd9, 0x54, 0xaf, - 0xdc, 0xcf, 0x09, 0x4b, 0x18, 0x4c, 0xbc, 0x04, 0xd2, 0xa9, 0x64, 0x13, 0x08, 0x50, 0x96, 0x13, - 0x7e, 0x83, 0x26, 0x10, 0xd0, 0xa2, 0xe1, 0x88, 0x04, 0x22, 0xc4, 0xdb, 0x73, 0x14, 0xe3, 0x5c, - 0xbf, 0x29, 0x3b, 0x16, 0x4d, 0x2e, 0x47, 0x59, 0x83, 0x20, 0xb1, 0x95, 0x0d, 0x2a, 0xd8, 0xfd, - 0xa5, 0xf1, 0x6f, 0xa7, 0xd8, 0x3a, 0x61, 0xa7, 0x3d, 0xcd, 0x1e, 0xf7, 0x20, 0x11, 0x57, 0xf6, - 0x1e, 0x00, 0xe5, 0xaa, 0x7d, 0x0d, 0xe0, 0x71, 0x0f, 0xd2, 0x39, 0x93, 0x71, 0xab, 0xf5, 0x92, - 0xc5, 0xd7, 0xd3, 0x42, 0xcc, 0xb3, 0xc9, 0xae, 0x48, 0x45, 0x01, 0xce, 0x64, 0xbc, 0x52, 0x03, - 0x94, 0x38, 0x93, 0xe9, 0x50, 0xb1, 0x19, 0x9c, 0x5b, 0x8a, 0x9d, 0x34, 0x99, 0xc2, 0x1d, 0xb5, - 0x67, 0x48, 0x01, 0x44, 0x06, 0x87, 0x82, 0xc8, 0x20, 0xaa, 0x77, 0xdc, 0x32, 0x89, 0x59, 0x5a, - 0xfb, 0xdb, 0xa6, 0xcd, 0x78, 0x60, 0xe7, 0x20, 0x42, 0x14, 0x90, 0x7a, 0x8e, 0xe7, 0x45, 0x76, - 0x98, 0x49, 0x41, 0xd6, 0xb3, 0x01, 0x3a, 0xeb, 0xe9, 0x80, 0x20, 0xac, 0x8e, 0xf9, 0xbb, 0xaa, - 0x34, 0xd5, 0x3f, 0x58, 0x58, 0xad, 0x7e, 0x1f, 0x6a, 0x79, 0x28, 0xac, 0x02, 0x0e, 0x54, 0x46, - 0x3b, 0xa9, 0x07, 0x4c, 0x40, 0xdb, 0x1f, 0x26, 0xeb, 0xdd, 0x20, 0xee, 0x67, 0x24, 0x97, 0x29, - 0x0f, 0xf9, 0x51, 0x40, 0x1f, 0x3f, 0x0d, 0x68, 0x8f, 0x5b, 0xbc, 0xfa, 0x5c, 0xf1, 0xf8, 0xba, - 0x75, 0xad, 0xc9, 0x2f, 0x68, 0x8d, 0x10, 0xc7, 0x2d, 0x04, 0x8a, 0x77, 0xd1, 0x61, 0x2c, 0xb2, - 0x50, 0x17, 0x55, 0xf2, 0x3e, 0x5d, 0xa4, 0x39, 0xbb, 0xf9, 0x35, 0x52, 0x3d, 0x32, 0xeb, 0x6e, - 0xda, 0x20, 0x2c, 0xb8, 0x10, 0xb1, 0xf9, 0x25, 0x61, 0x9b, 0x93, 0x43, 0x9f, 0xc7, 0xed, 0x3b, - 0xdf, 0x2d, 0x2b, 0xc7, 0xf4, 0x9d, 0x6f, 0x8a, 0xa5, 0x2b, 0x59, 0x8f, 0x91, 0x0e, 0x2b, 0xfe, - 0x38, 0xd9, 0xec, 0x07, 0xdb, 0x2d, 0x8f, 0xe7, 0x73, 0x37, 0xe5, 0xac, 0xa8, 0xbd, 0x6e, 0x05, - 0x0c, 0x59, 0x8c, 0xd8, 0xf2, 0x04, 0x70, 0x10, 0xc2, 0x3c, 0xcf, 0xbb, 0x22, 0x93, 0x3c, 0x93, - 0x58, 0x08, 0xf3, 0x8d, 0x69, 0x30, 0x14, 0xc2, 0x28, 0x05, 0x30, 0x6e, 0xd5, 0x79, 0x10, 0x97, - 0x27, 0x6c, 0x86, 0x66, 0x6c, 0xf5, 0x59, 0x4f, 0x2d, 0x0f, 0x8d, 0x5b, 0xc0, 0x39, 0x0f, 0xf9, - 0x5c, 0x2f, 0x63, 0x56, 0x4c, 0xcd, 0xe9, 0xc6, 0x64, 0xf0, 0x94, 0xb6, 0xe3, 0x93, 0xc4, 0x43, - 0xbe, 0xb0, 0x06, 0x08, 0x3b, 0x87, 0x33, 0x36, 0x35, 0x35, 0x45, 0x6a, 0xa0, 0xe4, 0xad, 0xaa, - 0xae, 0x77, 0x83, 0xc0, 0xcf, 0x9b, 0x64, 0xc2, 0x45, 0xc0, 0x8f, 0x92, 0xf7, 0xf1, 0x03, 0x41, - 0x90, 0xbd, 0x55, 0xf5, 0xae, 0x77, 0x74, 0x3b, 0xd9, 0x44, 0xef, 0x63, 0x87, 0x44, 0xf3, 0x00, - 0x2e, 0x94, 0xbd, 0x11, 0x3c, 0x98, 0xa3, 0xcd, 0x01, 0x6d, 0x68, 0x8e, 0x9a, 0xf3, 0xd7, 0x3e, - 0x73, 0x14, 0x83, 0xb5, 0xcf, 0x9f, 0xe9, 0x39, 0xba, 0xc7, 0x24, 0xab, 0xf2, 0xf6, 0x37, 0x09, - 0xbf, 0xd1, 0x1b, 0x61, 0xa4, 0xbe, 0x0d, 0x35, 0x54, 0xaf, 0x2a, 0x82, 0x5d, 0xf1, 0x76, 0x6f, - 0x3e, 0xe0, 0x5b, 0xef, 0x10, 0x3a, 0x7d, 0x83, 0xad, 0xc2, 0x76, 0x6f, 0x3e, 0xe0, 0x5b, 0xbf, - 0x03, 0xdd, 0xe9, 0x1b, 0xbc, 0x08, 0xbd, 0xdd, 0x9b, 0xd7, 0xbe, 0xff, 0xb2, 0x99, 0xb8, 0xae, - 0xf3, 0x2a, 0x0f, 0x8b, 0x65, 0xb2, 0xe0, 0x58, 0x3a, 0xe9, 0xdb, 0x33, 0x68, 0x28, 0x9d, 0xa4, - 0x55, 0x9c, 0x0f, 0xe7, 0x60, 0xa5, 0x38, 0x15, 0x65, 0xa2, 0x1e, 0xd2, 0x3f, 0xef, 0x61, 0xb4, - 0x81, 0x43, 0x9b, 0xa6, 0x90, 0x92, 0x7d, 0xdc, 0xe8, 0xa1, 0xf6, 0x16, 0xf3, 0x66, 0xc0, 0x5e, - 0xfb, 0x32, 0xf3, 0x56, 0x4f, 0xda, 0x3e, 0xf8, 0xf3, 0x18, 0xf7, 0x89, 0x63, 0xa8, 0x57, 0xd1, - 0x87, 0x8e, 0x4f, 0xfb, 0x2b, 0x68, 0xf7, 0x7f, 0xdd, 0xec, 0x2b, 0xa0, 0x7f, 0x3d, 0x09, 0x9e, - 0xf5, 0xb1, 0x08, 0x26, 0xc2, 0xf3, 0x5b, 0xe9, 0xe8, 0x82, 0xfc, 0x7d, 0xb3, 0x81, 0x6e, 0x50, - 0xf5, 0x2e, 0x87, 0x7a, 0xf7, 0x4f, 0xcf, 0x89, 0x50, 0xb7, 0x5a, 0x18, 0xce, 0x8c, 0x17, 0xb7, - 0xd4, 0x72, 0x3e, 0xa3, 0xe4, 0xc1, 0xfa, 0x9d, 0x43, 0xa7, 0x3c, 0x21, 0xcb, 0x0e, 0x0d, 0x0b, - 0xf4, 0xc5, 0x6d, 0xd5, 0xa8, 0xb9, 0xe2, 0xc0, 0xea, 0xab, 0x0c, 0xcf, 0x7b, 0x1a, 0xf6, 0xbe, - 0xd3, 0xf0, 0xf9, 0xed, 0x94, 0x74, 0x59, 0xfe, 0x63, 0x25, 0x7a, 0xe4, 0xb1, 0xf6, 0x79, 0x02, - 0x38, 0xf5, 0xf8, 0x71, 0xc0, 0x3e, 0xa5, 0x64, 0x0a, 0xf7, 0xbb, 0xbf, 0x9c, 0xb2, 0xfd, 0xe6, - 0x90, 0xa7, 0xb2, 0x9f, 0xa4, 0x92, 0x17, 0xed, 0x6f, 0x0e, 0xf9, 0x76, 0x6b, 0x6a, 0x48, 0x7f, - 0x73, 0x28, 0x80, 0x3b, 0xdf, 0x1c, 0x42, 0x3c, 0xa3, 0xdf, 0x1c, 0x42, 0xad, 0x05, 0xbf, 0x39, - 0x14, 0xd6, 0xa0, 0xc2, 0x7b, 0x53, 0x84, 0xfa, 0xdc, 0xba, 0x97, 0x45, 0xff, 0x18, 0xfb, 0xd9, - 0x6d, 0x54, 0x88, 0x05, 0xae, 0xe6, 0xd4, 0x3d, 0xb7, 0x1e, 0x6d, 0xea, 0xdd, 0x75, 0xdb, 0xee, - 0xcd, 0x6b, 0xdf, 0x3f, 0xd5, 0xbb, 0x1b, 0x13, 0xce, 0x45, 0xa1, 0xbe, 0x37, 0xb5, 0x11, 0x0a, - 0xcf, 0x95, 0x05, 0xb7, 0xe7, 0x37, 0xfb, 0xc1, 0x44, 0x75, 0x2b, 0x42, 0x77, 0xfa, 0xb0, 0xcb, - 0x10, 0xe8, 0xf2, 0xed, 0xde, 0x3c, 0xb1, 0x8c, 0xd4, 0xbe, 0xeb, 0xde, 0xee, 0x61, 0xcc, 0xef, - 0xeb, 0xa7, 0xfd, 0x15, 0xb4, 0xfb, 0x85, 0x4e, 0x1b, 0x5d, 0xf7, 0xaa, 0x9f, 0xb7, 0xba, 0x4c, - 0x8d, 0xbc, 0x6e, 0x1e, 0xf6, 0xc5, 0x43, 0x09, 0x84, 0xbb, 0x84, 0x76, 0x25, 0x10, 0xe8, 0x32, - 0xfa, 0xf9, 0xed, 0x94, 0x74, 0x59, 0xfe, 0x69, 0x25, 0xba, 0x4b, 0x96, 0x45, 0x8f, 0x83, 0x2f, - 0xfa, 0x5a, 0x06, 0xe3, 0xe1, 0xcb, 0x5b, 0xeb, 0xe9, 0x42, 0xfd, 0xeb, 0x4a, 0x74, 0x2f, 0x50, - 0xa8, 0x7a, 0x80, 0xdc, 0xc2, 0xba, 0x3f, 0x50, 0x7e, 0x78, 0x7b, 0x45, 0x6a, 0xb9, 0x77, 0xf1, - 0x51, 0xfb, 0x63, 0x3c, 0x01, 0xdb, 0x23, 0xfa, 0x63, 0x3c, 0xdd, 0x5a, 0xf0, 0x90, 0x87, 0x5d, - 0x34, 0x9b, 0x2e, 0xf4, 0x90, 0x47, 0xdd, 0x50, 0x03, 0x7b, 0x8e, 0xb5, 0x4e, 0x0e, 0x73, 0xf2, - 0xea, 0x5d, 0xce, 0xb2, 0x09, 0xed, 0xa4, 0x96, 0x77, 0x3b, 0x31, 0x1c, 0x3c, 0x1c, 0xab, 0xa4, - 0x67, 0xa2, 0xd9, 0x48, 0x3d, 0xa6, 0xf4, 0x0d, 0x12, 0x3c, 0x1c, 0x6b, 0xa1, 0x84, 0x37, 0x9d, - 0x35, 0x86, 0xbc, 0x81, 0x64, 0xf1, 0x49, 0x1f, 0x14, 0xa4, 0xe8, 0xc6, 0x9b, 0x39, 0x73, 0xdf, - 0x0c, 0x59, 0x69, 0x9d, 0xbb, 0x6f, 0xf5, 0xa4, 0x09, 0xb7, 0x23, 0x2e, 0xbf, 0xe2, 0x6c, 0xc2, - 0x8b, 0xa0, 0x5b, 0x43, 0xf5, 0x72, 0xeb, 0xd2, 0x98, 0xdb, 0x5d, 0x91, 0xce, 0x67, 0x99, 0xee, - 0x4c, 0xd2, 0xad, 0x4b, 0x75, 0xbb, 0x05, 0x34, 0x3c, 0x16, 0xb4, 0x6e, 0x55, 0x7a, 0xf9, 0x24, - 0x6c, 0xc6, 0xcb, 0x2a, 0x37, 0x7a, 0xb1, 0x74, 0x3d, 0xf5, 0x30, 0xea, 0xa8, 0x27, 0x18, 0x49, - 0x5b, 0x3d, 0x69, 0x78, 0x3e, 0xe7, 0xb8, 0x35, 0xe3, 0x69, 0xbb, 0xc3, 0x56, 0x6b, 0x48, 0x3d, - 0xed, 0xaf, 0x00, 0x4f, 0x43, 0xf5, 0xa8, 0x3a, 0x4a, 0x4a, 0xb9, 0x9f, 0xa4, 0xe9, 0x60, 0x23, - 0x30, 0x4c, 0x1a, 0x28, 0x78, 0x1a, 0x8a, 0xc0, 0xc4, 0x48, 0x6e, 0x4e, 0x0f, 0xb3, 0x41, 0x97, - 0x1d, 0x45, 0xf5, 0x1a, 0xc9, 0x2e, 0x0d, 0x4e, 0xb4, 0x9c, 0xa6, 0x36, 0xb5, 0x1d, 0x86, 0x1b, - 0xae, 0x55, 0xe1, 0xed, 0xde, 0x3c, 0x78, 0xdc, 0xae, 0x28, 0xb5, 0xb2, 0x3c, 0xa4, 0x4c, 0x78, - 0x2b, 0xc9, 0xa3, 0x0e, 0x0a, 0x9c, 0x0a, 0xd6, 0xd3, 0xe8, 0x6d, 0x32, 0x99, 0x72, 0x89, 0x3e, - 0x29, 0x72, 0x81, 0xe0, 0x93, 0x22, 0x00, 0x82, 0xae, 0xab, 0x7f, 0x37, 0xc7, 0xa1, 0x87, 0x13, - 0xac, 0xeb, 0xb4, 0xb2, 0x43, 0x85, 0xba, 0x0e, 0xa5, 0x41, 0x34, 0x30, 0x6e, 0xf5, 0xeb, 0xf8, - 0x4f, 0x42, 0x66, 0xc0, 0x3b, 0xf9, 0x1b, 0xbd, 0x58, 0xb0, 0xa2, 0x58, 0x87, 0xc9, 0x2c, 0x91, - 0xd8, 0x8a, 0xe2, 0xd8, 0xa8, 0x90, 0xd0, 0x8a, 0xd2, 0x46, 0xa9, 0xea, 0x55, 0x39, 0xc2, 0xe1, - 0x24, 0x5c, 0xbd, 0x9a, 0xe9, 0x57, 0x3d, 0xc3, 0xb6, 0x1e, 0x6c, 0x66, 0x66, 0xc8, 0xc8, 0x2b, - 0xbd, 0x59, 0x46, 0xc6, 0xb6, 0x7a, 0x4d, 0x13, 0x82, 0xa1, 0xa8, 0x43, 0x29, 0xc0, 0x03, 0xfb, - 0x8a, 0x6b, 0x9e, 0xbd, 0xe6, 0x39, 0x67, 0x05, 0xcb, 0x62, 0x74, 0x73, 0xaa, 0x0c, 0xb6, 0xc8, - 0xd0, 0xe6, 0x94, 0xd4, 0x00, 0x8f, 0xcd, 0xfd, 0x17, 0x2c, 0x91, 0xa9, 0x60, 0xde, 0x64, 0xf4, - 0xdf, 0xaf, 0x7c, 0xdc, 0x83, 0x84, 0x8f, 0xcd, 0x1b, 0xc0, 0x1c, 0x7c, 0xd7, 0x4e, 0x3f, 0x0b, - 0x98, 0xf2, 0xd1, 0xd0, 0x46, 0x98, 0x56, 0x01, 0x83, 0xda, 0x24, 0xb8, 0x5c, 0xfe, 0x84, 0x2f, - 0xb1, 0x41, 0x6d, 0xf3, 0x53, 0x85, 0x84, 0x06, 0x75, 0x1b, 0x05, 0x79, 0xa6, 0xbb, 0x0f, 0x5a, - 0x0d, 0xe8, 0xbb, 0x5b, 0x9f, 0xb5, 0x4e, 0x0e, 0xcc, 0x9c, 0xbd, 0x64, 0xe1, 0x3d, 0x27, 0x40, - 0x0a, 0xba, 0x97, 0x2c, 0xf0, 0xc7, 0x04, 0x1b, 0xbd, 0x58, 0xf8, 0x48, 0x9e, 0x49, 0xfe, 0xae, - 0x79, 0x56, 0x8e, 0x14, 0x57, 0xc9, 0x5b, 0x0f, 0xcb, 0xd7, 0xbb, 0x41, 0x7b, 0x01, 0xf6, 0xb4, - 0x10, 0x31, 0x2f, 0x4b, 0xfd, 0x85, 0x42, 0xff, 0x86, 0x91, 0x96, 0x0d, 0xc1, 0xf7, 0x09, 0x1f, - 0x86, 0x21, 0xdb, 0x33, 0x5a, 0x64, 0xbf, 0x7a, 0xb3, 0x8a, 0x6a, 0xb6, 0x3f, 0x78, 0xb3, 0xd6, - 0xc9, 0xd9, 0xe9, 0xa5, 0xa5, 0xee, 0x67, 0x6e, 0xd6, 0x51, 0x75, 0xec, 0x0b, 0x37, 0x8f, 0x7b, - 0x90, 0xda, 0xd5, 0x57, 0xd1, 0xfb, 0x47, 0x62, 0x3a, 0xe2, 0xd9, 0x64, 0xf0, 0x03, 0xff, 0x0a, - 0xad, 0x98, 0x0e, 0xab, 0x9f, 0x8d, 0xd1, 0x3b, 0x94, 0xd8, 0x5e, 0x02, 0xdc, 0xe3, 0x17, 0xf3, - 0xe9, 0x48, 0x32, 0x09, 0x2e, 0x01, 0xaa, 0xdf, 0x87, 0x95, 0x80, 0xb8, 0x04, 0xe8, 0x01, 0xc0, - 0xde, 0xb8, 0xe0, 0x1c, 0xb5, 0x57, 0x09, 0x82, 0xf6, 0x34, 0x60, 0xb3, 0x08, 0x63, 0xaf, 0x4a, - 0xd4, 0xe1, 0xa5, 0x3d, 0xab, 0xa3, 0xa4, 0x44, 0x16, 0xd1, 0xa6, 0xec, 0xe0, 0xae, 0xab, 0xaf, - 0xbe, 0x3a, 0x32, 0x9f, 0xcd, 0x58, 0xb1, 0x04, 0x83, 0x5b, 0xd7, 0xd2, 0x01, 0x88, 0xc1, 0x8d, - 0x82, 0x76, 0xd6, 0x36, 0xcd, 0x1c, 0x5f, 0x1f, 0x88, 0x42, 0xcc, 0x65, 0x92, 0x71, 0xf8, 0xe5, - 0x09, 0xd3, 0xa0, 0x2e, 0x43, 0xcc, 0x5a, 0x8a, 0xb5, 0x59, 0xae, 0x22, 0xea, 0xfb, 0x84, 0xea, - 0xbb, 0xc5, 0xa5, 0x14, 0x05, 0x7c, 0x9e, 0x58, 0x5b, 0x81, 0x10, 0x91, 0xe5, 0x92, 0x30, 0xe8, - 0xfb, 0xd3, 0x24, 0x9b, 0xa2, 0x7d, 0x7f, 0xea, 0x7e, 0xf5, 0xf3, 0x1e, 0x0d, 0xd8, 0x09, 0x55, - 0x37, 0x5a, 0x3d, 0x01, 0xf4, 0xbb, 0x9c, 0x68, 0xa3, 0xbb, 0x04, 0x31, 0xa1, 0x70, 0x12, 0xb8, - 0x7a, 0x9d, 0xf3, 0x8c, 0x4f, 0x9a, 0x5b, 0x73, 0x98, 0x2b, 0x8f, 0x08, 0xba, 0x82, 0xa4, 0x8d, - 0x45, 0x4a, 0x7e, 0x36, 0xcf, 0x4e, 0x0b, 0x71, 0x99, 0xa4, 0xbc, 0x00, 0xb1, 0xa8, 0x56, 0x77, - 0xe4, 0x44, 0x2c, 0xc2, 0x38, 0x7b, 0xfd, 0x42, 0x49, 0xbd, 0x8f, 0x6f, 0x8f, 0x0b, 0x16, 0xc3, - 0xeb, 0x17, 0xb5, 0x8d, 0x36, 0x46, 0x9c, 0x0c, 0x06, 0x70, 0x27, 0xd1, 0xa9, 0x5d, 0x67, 0x4b, - 0x35, 0x3e, 0xf4, 0xbb, 0x84, 0xea, 0x5b, 0x98, 0x25, 0x48, 0x74, 0xb4, 0x39, 0x8c, 0x24, 0x12, - 0x9d, 0xb0, 0x86, 0x5d, 0x4a, 0x14, 0x77, 0xa2, 0xaf, 0x15, 0x81, 0xa5, 0xa4, 0xb6, 0xd1, 0x08, - 0x89, 0xa5, 0xa4, 0x05, 0x81, 0x80, 0xd4, 0x4c, 0x83, 0x29, 0x1a, 0x90, 0x8c, 0x34, 0x18, 0x90, - 0x5c, 0xca, 0x06, 0x8a, 0xc3, 0x2c, 0x91, 0x09, 0x4b, 0x47, 0x5c, 0x9e, 0xb2, 0x82, 0xcd, 0xb8, - 0xe4, 0x05, 0x0c, 0x14, 0x1a, 0x19, 0x7a, 0x0c, 0x11, 0x28, 0x28, 0x56, 0x3b, 0xfc, 0xbd, 0xe8, - 0xc3, 0x6a, 0xdd, 0xe7, 0x99, 0xfe, 0x33, 0x1b, 0xaf, 0xd4, 0xdf, 0xe7, 0x19, 0x7c, 0x64, 0x6c, - 0x8c, 0x64, 0xc1, 0xd9, 0xac, 0xb1, 0xfd, 0x81, 0xf9, 0x5d, 0x81, 0x4f, 0x57, 0xaa, 0xf1, 0x7c, - 0x22, 0x64, 0x72, 0x59, 0x6d, 0xb3, 0xf5, 0x1b, 0x44, 0x60, 0x3c, 0xbb, 0xe2, 0x61, 0xe0, 0x5b, - 0x14, 0x18, 0x67, 0xe3, 0xb4, 0x2b, 0x3d, 0xe3, 0x79, 0x0a, 0xe3, 0xb4, 0xa7, 0xad, 0x00, 0x22, - 0x4e, 0xa3, 0xa0, 0x9d, 0x9c, 0xae, 0x78, 0xcc, 0xc3, 0x95, 0x19, 0xf3, 0x7e, 0x95, 0x19, 0x7b, - 0x2f, 0x65, 0xa4, 0xd1, 0x87, 0xc7, 0x7c, 0x76, 0xc1, 0x8b, 0xf2, 0x2a, 0xc9, 0x0f, 0xaa, 0x84, - 0x8b, 0xc9, 0x39, 0x7c, 0x6d, 0xd1, 0x12, 0x43, 0x83, 0x10, 0x59, 0x29, 0x81, 0xda, 0x95, 0xc0, - 0x02, 0x87, 0xe5, 0x09, 0x9b, 0x71, 0xf5, 0x65, 0x0d, 0xb0, 0x12, 0x38, 0x46, 0x1c, 0x88, 0x58, - 0x09, 0x48, 0xd8, 0x79, 0xbf, 0xcb, 0x32, 0x67, 0x7c, 0x5a, 0x8d, 0xb0, 0xe2, 0x94, 0x2d, 0x67, - 0x3c, 0x93, 0xda, 0x24, 0x38, 0x93, 0x77, 0x4c, 0xe2, 0x3c, 0x71, 0x26, 0xdf, 0x47, 0xcf, 0x09, - 0x4d, 0x5e, 0xc3, 0x9f, 0x8a, 0x42, 0xd6, 0x7f, 0x44, 0xe7, 0xbc, 0x48, 0x41, 0x68, 0xf2, 0x1b, - 0xd5, 0x23, 0x89, 0xd0, 0x14, 0xd6, 0x70, 0xbe, 0x3e, 0xef, 0x95, 0xe1, 0x0d, 0x2f, 0xcc, 0x38, - 0x79, 0x35, 0x63, 0x49, 0xaa, 0x47, 0xc3, 0x8f, 0x02, 0xb6, 0x09, 0x1d, 0xe2, 0xeb, 0xf3, 0x7d, - 0x75, 0x9d, 0xef, 0xf5, 0x87, 0x4b, 0x08, 0x1e, 0x11, 0x74, 0xd8, 0x27, 0x1e, 0x11, 0x74, 0x6b, - 0xd9, 0x9d, 0xbb, 0x65, 0x15, 0xb7, 0x54, 0xc4, 0xae, 0x98, 0xc0, 0xf3, 0x42, 0xc7, 0x26, 0x00, - 0x89, 0x9d, 0x7b, 0x50, 0xc1, 0xa6, 0x06, 0x16, 0xdb, 0x4f, 0x32, 0x96, 0x26, 0x3f, 0x83, 0x69, - 0xbd, 0x63, 0xa7, 0x21, 0x88, 0xd4, 0x00, 0x27, 0x31, 0x57, 0x07, 0x5c, 0x8e, 0x93, 0x2a, 0xf4, - 0xaf, 0x07, 0xda, 0x4d, 0x11, 0xdd, 0xae, 0x1c, 0xd2, 0xf9, 0x46, 0x2b, 0x6c, 0xd6, 0x9d, 0x3c, - 0x1f, 0x55, 0xab, 0xea, 0x19, 0x8f, 0x79, 0x92, 0xcb, 0xc1, 0x8b, 0x70, 0x5b, 0x01, 0x9c, 0xb8, - 0x68, 0xd1, 0x43, 0xcd, 0x79, 0x7c, 0x5f, 0xc5, 0x92, 0x51, 0xfd, 0xd7, 0xe5, 0xce, 0x4b, 0x5e, - 0xe8, 0x44, 0xe3, 0x80, 0x4b, 0x30, 0x3b, 0x1d, 0x6e, 0xe8, 0x80, 0x55, 0x45, 0x89, 0xd9, 0x19, - 0xd6, 0xb0, 0x87, 0x7d, 0x0e, 0x77, 0xc6, 0x4b, 0x91, 0x2e, 0xb8, 0xba, 0x6f, 0xb8, 0x49, 0x1a, - 0x73, 0x28, 0xe2, 0xb0, 0x8f, 0xa6, 0x6d, 0xb6, 0xd6, 0x76, 0xbb, 0x93, 0x2d, 0x0f, 0xe1, 0x95, - 0x09, 0xc4, 0x92, 0xc2, 0x88, 0x6c, 0x2d, 0x80, 0x3b, 0x87, 0xe1, 0x85, 0x60, 0x93, 0x98, 0x95, - 0xf2, 0x94, 0x2d, 0x53, 0xc1, 0x26, 0x6a, 0x5d, 0x87, 0x87, 0xe1, 0x0d, 0x33, 0x74, 0x21, 0xea, - 0x30, 0x9c, 0x82, 0xdd, 0xec, 0x4c, 0xfd, 0xd1, 0x3c, 0x7d, 0x97, 0x13, 0x66, 0x67, 0xaa, 0xbc, - 0xf0, 0x1e, 0xe7, 0xc3, 0x30, 0x64, 0xdf, 0x41, 0xab, 0x45, 0x2a, 0x0d, 0xb9, 0x87, 0xe9, 0x78, - 0x09, 0xc8, 0xfd, 0x00, 0x61, 0xbf, 0x4b, 0x51, 0xff, 0xde, 0xfc, 0xdd, 0x17, 0xa9, 0xbf, 0x64, - 0xbd, 0x89, 0xe9, 0xba, 0xd0, 0xd0, 0xfd, 0xc0, 0xdd, 0x56, 0x4f, 0xda, 0xa6, 0x99, 0xbb, 0x57, - 0x4c, 0xee, 0x4c, 0x26, 0xc7, 0xbc, 0x44, 0x5e, 0x28, 0xaf, 0x84, 0x43, 0x2b, 0x25, 0xd2, 0xcc, - 0x36, 0x65, 0x07, 0x7a, 0x25, 0x7b, 0x35, 0x49, 0xa4, 0x96, 0x35, 0x37, 0xa4, 0x37, 0xdb, 0x06, - 0xda, 0x14, 0x51, 0x2b, 0x9a, 0xb6, 0xb1, 0xbc, 0x62, 0xc6, 0x62, 0x3a, 0x4d, 0xb9, 0x86, 0xce, - 0x38, 0xab, 0x3f, 0xe4, 0xb7, 0xdd, 0xb6, 0x85, 0x82, 0x44, 0x2c, 0x0f, 0x2a, 0xd8, 0x34, 0xb2, - 0xc2, 0xea, 0x47, 0x52, 0x4d, 0xc3, 0xae, 0xb5, 0xcd, 0x78, 0x00, 0x91, 0x46, 0xa2, 0xa0, 0x7d, - 0xef, 0xad, 0x12, 0x1f, 0xf0, 0xa6, 0x25, 0xe0, 0x27, 0x88, 0x94, 0xb2, 0x23, 0x26, 0xde, 0x7b, - 0x43, 0x30, 0xbb, 0x4f, 0x00, 0x1e, 0x5e, 0x2e, 0x0f, 0x27, 0x70, 0x9f, 0x00, 0xf5, 0x15, 0x43, - 0xec, 0x13, 0x28, 0xd6, 0xef, 0x3a, 0x73, 0xee, 0x75, 0xc4, 0x4a, 0x5b, 0x39, 0xa4, 0xeb, 0x50, - 0x30, 0xd4, 0x75, 0x94, 0x82, 0xdf, 0xa4, 0xee, 0xd1, 0x1a, 0xd2, 0xa4, 0xd8, 0xb9, 0xda, 0x6a, - 0x17, 0x66, 0xe3, 0x92, 0xd9, 0x4f, 0xaa, 0x2b, 0x4b, 0xf8, 0x17, 0xfc, 0x6b, 0x21, 0x11, 0x97, - 0x5a, 0x50, 0x6d, 0xfb, 0xe5, 0xfd, 0xff, 0xfc, 0xe6, 0xce, 0xca, 0x2f, 0xbe, 0xb9, 0xb3, 0xf2, - 0xdf, 0xdf, 0xdc, 0x59, 0xf9, 0xf9, 0xb7, 0x77, 0xde, 0xfb, 0xc5, 0xb7, 0x77, 0xde, 0xfb, 0xaf, - 0x6f, 0xef, 0xbc, 0xf7, 0xf5, 0xfb, 0xfa, 0x8f, 0xa9, 0x5e, 0xfc, 0x3f, 0xf5, 0x27, 0x51, 0x9f, - 0xff, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x39, 0xd6, 0xda, 0x85, 0x70, 0x75, 0x00, 0x00, + 0x0b, 0xf3, 0x76, 0xc3, 0x9f, 0x06, 0x08, 0xbb, 0xd0, 0xd5, 0x7f, 0x57, 0xfb, 0xfc, 0x01, 0xaa, + 0xa1, 0x44, 0xc4, 0x42, 0x07, 0x10, 0x58, 0xd0, 0xd1, 0x95, 0xb8, 0xc1, 0x0b, 0x5a, 0x49, 0xc2, + 0x05, 0xd5, 0x84, 0x3d, 0x79, 0xd3, 0x05, 0xc5, 0x4e, 0xde, 0x9a, 0x62, 0x84, 0x4e, 0xde, 0x20, + 0xa3, 0x0d, 0x8b, 0xe8, 0x37, 0x5d, 0xc3, 0x2f, 0x85, 0xb8, 0x9e, 0xb1, 0xe2, 0x7a, 0xf0, 0x84, + 0x56, 0x6e, 0x18, 0xe3, 0x68, 0xa3, 0x17, 0x6b, 0x83, 0x9a, 0xeb, 0xb0, 0x4a, 0x93, 0xce, 0x8b, + 0x14, 0x04, 0x35, 0xcf, 0x86, 0x46, 0x88, 0xa0, 0x46, 0xa0, 0x76, 0x54, 0xba, 0xde, 0x46, 0x1c, + 0xee, 0xf5, 0x3c, 0xf5, 0x11, 0xa7, 0xf6, 0x7a, 0x08, 0x06, 0x87, 0xd0, 0x41, 0xc1, 0xf2, 0x2b, + 0x7c, 0x08, 0x29, 0x51, 0x78, 0x08, 0x35, 0x08, 0xec, 0xef, 0x11, 0x67, 0x45, 0x7c, 0x85, 0xf7, + 0x77, 0x2d, 0x0b, 0xf7, 0xb7, 0x61, 0x60, 0x7f, 0xd7, 0x82, 0xb7, 0x89, 0xbc, 0x3a, 0xe6, 0x92, + 0xe1, 0xfd, 0xed, 0x33, 0xe1, 0xfe, 0x6e, 0xb1, 0x36, 0x0f, 0x73, 0x1d, 0x8e, 0xe6, 0x17, 0x65, + 0x5c, 0x24, 0x17, 0x7c, 0x10, 0xb0, 0x62, 0x20, 0x22, 0x0f, 0x23, 0x61, 0xed, 0xf3, 0xe7, 0x2b, + 0xd1, 0xdd, 0xa6, 0xdb, 0x45, 0x59, 0xea, 0x98, 0xe7, 0xbb, 0x7f, 0x81, 0xf7, 0x2f, 0x81, 0x13, + 0x67, 0xa1, 0x3d, 0xd4, 0x9c, 0x35, 0x01, 0x2f, 0xd2, 0x79, 0x56, 0x9a, 0x42, 0x7d, 0xd9, 0xc7, + 0xba, 0xa3, 0x40, 0xac, 0x09, 0xbd, 0x14, 0xed, 0x72, 0xac, 0xfb, 0xa7, 0x91, 0x1d, 0x4e, 0x4a, + 0xb0, 0x1c, 0x37, 0xed, 0xed, 0x10, 0xc4, 0x72, 0x8c, 0x93, 0x70, 0x28, 0x1c, 0x14, 0x62, 0x9e, + 0x97, 0x1d, 0x43, 0x01, 0x40, 0xe1, 0xa1, 0xd0, 0x86, 0xb5, 0xcf, 0x77, 0xd1, 0x6f, 0xbb, 0xc3, + 0xcf, 0x6d, 0xec, 0x2d, 0x7a, 0x4c, 0x61, 0x4d, 0x3c, 0xec, 0x8b, 0xdb, 0x84, 0xb4, 0xf1, 0x2c, + 0xf7, 0xb8, 0x64, 0x49, 0x5a, 0x0e, 0x56, 0x71, 0x1b, 0x8d, 0x9c, 0x48, 0x48, 0x31, 0x0e, 0xc6, + 0xb7, 0xbd, 0x79, 0x9e, 0x26, 0x71, 0xfb, 0x24, 0x5a, 0xeb, 0x1a, 0x71, 0x38, 0xbe, 0xb9, 0x18, + 0x8c, 0xd7, 0xd5, 0x92, 0xaf, 0xfe, 0x33, 0x5e, 0xe6, 0x1c, 0x8f, 0xd7, 0x1e, 0x12, 0x8e, 0xd7, + 0x10, 0x85, 0xf5, 0x19, 0x71, 0x79, 0xc4, 0x96, 0x62, 0x4e, 0xc4, 0x6b, 0x23, 0x0e, 0xd7, 0xc7, + 0xc5, 0x6c, 0x4e, 0x68, 0x3c, 0x1c, 0x66, 0x92, 0x17, 0x19, 0x4b, 0xf7, 0x53, 0x36, 0x2d, 0x07, + 0x44, 0x8c, 0xf1, 0x29, 0x22, 0x27, 0xa4, 0x69, 0xa4, 0x19, 0x0f, 0xcb, 0x7d, 0xb6, 0x10, 0x45, + 0x22, 0xe9, 0x66, 0xb4, 0x48, 0x67, 0x33, 0x7a, 0x28, 0xea, 0x6d, 0xa7, 0x88, 0xaf, 0x92, 0x05, + 0x9f, 0x04, 0xbc, 0x35, 0x48, 0x0f, 0x6f, 0x0e, 0x8a, 0x74, 0xda, 0x48, 0xcc, 0x8b, 0x98, 0x93, + 0x9d, 0x56, 0x8b, 0x3b, 0x3b, 0xcd, 0x60, 0xda, 0xc3, 0x5f, 0xad, 0x44, 0xbf, 0x53, 0x4b, 0xdd, + 0xe3, 0xe1, 0x3d, 0x56, 0x5e, 0x5d, 0x08, 0x56, 0x4c, 0x06, 0x9f, 0x61, 0x76, 0x50, 0xd4, 0xb8, + 0x7e, 0x76, 0x1b, 0x15, 0xd8, 0xac, 0x47, 0x49, 0xe9, 0xcc, 0x38, 0xb4, 0x59, 0x3d, 0x24, 0xdc, + 0xac, 0x10, 0x85, 0x01, 0x44, 0xc9, 0xeb, 0xa3, 0x98, 0x55, 0x52, 0xdf, 0x3f, 0x8f, 0x59, 0xeb, + 0xe4, 0x60, 0x7c, 0xac, 0x84, 0xfe, 0x68, 0xd9, 0xa2, 0x6c, 0xe0, 0x23, 0x66, 0xd8, 0x17, 0x27, + 0x3d, 0x9b, 0x59, 0x11, 0xf6, 0xdc, 0x9a, 0x19, 0xc3, 0xbe, 0x38, 0xe1, 0xd9, 0x09, 0x6b, 0x21, + 0xcf, 0x48, 0x68, 0x1b, 0xf6, 0xc5, 0x61, 0xf6, 0xa5, 0x99, 0x66, 0x5d, 0x78, 0x12, 0xb0, 0x03, + 0xd7, 0x86, 0x8d, 0x5e, 0xac, 0x76, 0xf8, 0x37, 0x2b, 0xd1, 0xf7, 0xad, 0xc7, 0x63, 0x31, 0x49, + 0x2e, 0x97, 0x35, 0xf4, 0x86, 0xa5, 0x73, 0x5e, 0x0e, 0x9e, 0x51, 0xd6, 0xda, 0xac, 0x29, 0xc1, + 0xf3, 0x5b, 0xe9, 0xc0, 0xb9, 0xb3, 0x93, 0xe7, 0xe9, 0x72, 0xcc, 0x67, 0x79, 0x4a, 0xce, 0x1d, + 0x0f, 0x09, 0xcf, 0x1d, 0x88, 0xc2, 0xac, 0x7c, 0x2c, 0xaa, 0x9c, 0x1f, 0xcd, 0xca, 0x95, 0x28, + 0x9c, 0x95, 0x37, 0x08, 0xcc, 0x95, 0xc6, 0x62, 0x57, 0xa4, 0x29, 0x8f, 0x65, 0xfb, 0x11, 0xb3, + 0xd1, 0xb4, 0x44, 0x38, 0x57, 0x02, 0xa4, 0x3d, 0x8d, 0x69, 0xf6, 0x90, 0xac, 0xe0, 0x2f, 0x97, + 0x47, 0x49, 0x76, 0x3d, 0xc0, 0xd3, 0x02, 0x0b, 0x10, 0xa7, 0x31, 0x28, 0x08, 0xf7, 0xaa, 0xe7, + 0xd9, 0x44, 0xe0, 0x7b, 0xd5, 0x4a, 0x12, 0xde, 0xab, 0x6a, 0x02, 0x9a, 0x3c, 0xe3, 0x94, 0xc9, + 0x4a, 0x12, 0x36, 0xa9, 0x09, 0x2c, 0x14, 0xea, 0x33, 0x7b, 0x32, 0x14, 0x82, 0x53, 0xfa, 0xb5, + 0x4e, 0x0e, 0x8e, 0xd0, 0x66, 0xd3, 0xba, 0xcf, 0x65, 0x7c, 0x85, 0x8f, 0x50, 0x0f, 0x09, 0x8f, + 0x50, 0x88, 0xc2, 0x2a, 0x8d, 0x85, 0xd9, 0x74, 0xaf, 0xe2, 0xe3, 0xa3, 0xb5, 0xe1, 0x5e, 0xeb, + 0xe4, 0xe0, 0x36, 0xf2, 0x70, 0xa6, 0xda, 0x0c, 0x1d, 0xe4, 0xb5, 0x2c, 0xbc, 0x8d, 0x34, 0x0c, + 0x2c, 0x7d, 0x2d, 0xa8, 0x9a, 0x13, 0x2f, 0xbd, 0x95, 0x87, 0x4b, 0xef, 0x71, 0xda, 0xc9, 0xbf, + 0x98, 0x6d, 0x5c, 0x2d, 0x3d, 0x11, 0xd5, 0x1c, 0x79, 0xc3, 0xd2, 0x64, 0xc2, 0x24, 0x1f, 0x8b, + 0x6b, 0x9e, 0xe1, 0x3b, 0x26, 0x5d, 0xda, 0x9a, 0x1f, 0x7a, 0x0a, 0xe1, 0x1d, 0x53, 0x58, 0x11, + 0x8e, 0x93, 0x9a, 0x3e, 0x2f, 0xf9, 0x2e, 0x2b, 0x89, 0x48, 0xe6, 0x21, 0xe1, 0x71, 0x02, 0x51, + 0x98, 0xaf, 0xd6, 0xf2, 0x57, 0xef, 0x72, 0x5e, 0x24, 0x3c, 0x8b, 0x39, 0x9e, 0xaf, 0x42, 0x2a, + 0x9c, 0xaf, 0x22, 0x34, 0xdc, 0xab, 0xed, 0x31, 0xc9, 0x5f, 0x2e, 0xc7, 0xc9, 0x8c, 0x97, 0x92, + 0xcd, 0x72, 0x7c, 0xaf, 0x06, 0xa0, 0xf0, 0x5e, 0xad, 0x0d, 0xb7, 0x8e, 0x86, 0x4c, 0x40, 0x6c, + 0xdf, 0x4c, 0x81, 0x44, 0xe0, 0x66, 0x0a, 0x81, 0xc2, 0x86, 0xb5, 0x00, 0x7a, 0x38, 0xdc, 0xb2, + 0x12, 0x3c, 0x1c, 0xa6, 0xe9, 0xd6, 0x81, 0x9b, 0x61, 0x46, 0xd5, 0xd4, 0xec, 0x28, 0xfa, 0xc8, + 0x9d, 0xa2, 0x1b, 0xbd, 0x58, 0xfc, 0x84, 0xef, 0x8c, 0xa7, 0x4c, 0x2d, 0x5b, 0x81, 0x63, 0xb4, + 0x86, 0xe9, 0x73, 0xc2, 0xe7, 0xb0, 0xda, 0xe1, 0x5f, 0xac, 0x44, 0x9f, 0x60, 0x1e, 0x5f, 0xe7, + 0xca, 0xef, 0xd3, 0x6e, 0x5b, 0x35, 0x49, 0x5c, 0xbd, 0x09, 0x6b, 0xe8, 0x32, 0xfc, 0x49, 0xf4, + 0x71, 0x23, 0xb2, 0x37, 0x73, 0x74, 0x01, 0xfc, 0xa4, 0xcd, 0x94, 0x1f, 0x72, 0xc6, 0xfd, 0x76, + 0x6f, 0xde, 0xee, 0x87, 0xfc, 0x72, 0x95, 0x60, 0x3f, 0x64, 0x6c, 0x68, 0x31, 0xb1, 0x1f, 0x42, + 0x30, 0x3b, 0x3b, 0xdd, 0xea, 0xbd, 0x4d, 0xe4, 0x95, 0xca, 0xb7, 0xc0, 0xec, 0xf4, 0xca, 0x6a, + 0x20, 0x62, 0x76, 0x92, 0x30, 0xcc, 0x48, 0x1a, 0xb0, 0x9a, 0x9b, 0x58, 0x2c, 0x37, 0x86, 0xdc, + 0x99, 0xb9, 0xde, 0x0d, 0xc2, 0xf1, 0xda, 0x88, 0xf5, 0xd6, 0xe7, 0x49, 0xc8, 0x02, 0xd8, 0xfe, + 0x6c, 0xf4, 0x62, 0xb5, 0xc3, 0x3f, 0x8b, 0xbe, 0xd7, 0xaa, 0xd8, 0x3e, 0x67, 0x72, 0x5e, 0xf0, + 0xc9, 0x60, 0xbb, 0xa3, 0xdc, 0x0d, 0x68, 0x5c, 0x3f, 0xed, 0xaf, 0xd0, 0xca, 0xd1, 0x1b, 0xae, + 0x1e, 0x56, 0xa6, 0x0c, 0xcf, 0x42, 0x26, 0x7d, 0x36, 0x98, 0xa3, 0xd3, 0x3a, 0xad, 0x6d, 0xb6, + 0x3b, 0xba, 0x76, 0x16, 0x2c, 0x49, 0xd5, 0x43, 0xba, 0xcf, 0x42, 0x46, 0x3d, 0x34, 0xb8, 0xcd, + 0x26, 0x55, 0x5a, 0x91, 0x59, 0xcd, 0x71, 0x67, 0x7b, 0xb6, 0x49, 0x47, 0x02, 0x64, 0x77, 0xb6, + 0xd5, 0x93, 0xd6, 0x6e, 0x65, 0xb3, 0xe4, 0x55, 0x7f, 0x76, 0x07, 0x39, 0xe6, 0x55, 0xab, 0x22, + 0x23, 0x7d, 0xab, 0x27, 0xad, 0xbd, 0xfe, 0x69, 0xf4, 0x71, 0xdb, 0xab, 0x5e, 0x88, 0xb6, 0x3b, + 0x4d, 0x81, 0xb5, 0xe8, 0x69, 0x7f, 0x05, 0xbb, 0xa5, 0xf9, 0x2a, 0x29, 0xa5, 0x28, 0x96, 0xa3, + 0x2b, 0x71, 0xd3, 0xdc, 0x78, 0xf7, 0x67, 0xab, 0x06, 0x86, 0x0e, 0x41, 0x6c, 0x69, 0x70, 0xb2, + 0xe5, 0xca, 0xde, 0x8c, 0x2f, 0x09, 0x57, 0x0e, 0xd1, 0xe1, 0xca, 0x27, 0x6d, 0xac, 0x6a, 0x6a, + 0x65, 0xaf, 0xf1, 0xaf, 0xe1, 0x45, 0x6d, 0x5f, 0xe5, 0x5f, 0xef, 0x06, 0x6d, 0xc6, 0xa2, 0xc5, + 0x7b, 0xc9, 0xe5, 0xa5, 0xa9, 0x13, 0x5e, 0x52, 0x17, 0x21, 0x32, 0x16, 0x02, 0xb5, 0x49, 0xf7, + 0x7e, 0x92, 0x72, 0x75, 0xa2, 0xff, 0xfa, 0xf2, 0x32, 0x15, 0x6c, 0x02, 0x92, 0xee, 0x4a, 0x3c, + 0x74, 0xe5, 0x44, 0xd2, 0x8d, 0x71, 0xf6, 0x19, 0x71, 0x25, 0x3d, 0xe3, 0xb1, 0xc8, 0xe2, 0x24, + 0x85, 0x17, 0x00, 0x95, 0xa6, 0x11, 0x12, 0xcf, 0x88, 0x5b, 0x90, 0x5d, 0x18, 0x2b, 0x51, 0x35, + 0xed, 0x9b, 0xf2, 0x3f, 0x6a, 0x2b, 0x3a, 0x62, 0x62, 0x61, 0x44, 0x30, 0xbb, 0xf7, 0xac, 0x84, + 0xe7, 0xb9, 0x32, 0x7e, 0xaf, 0xad, 0x55, 0x4b, 0x88, 0xbd, 0xa7, 0x4f, 0xd8, 0x3d, 0x54, 0xf5, + 0xf7, 0x3d, 0x71, 0x93, 0x29, 0xa3, 0xf7, 0xdb, 0x2a, 0x8d, 0x8c, 0xd8, 0x43, 0x41, 0x46, 0x1b, + 0xfe, 0x49, 0xf4, 0xff, 0x95, 0xe1, 0x42, 0xe4, 0x83, 0x3b, 0x88, 0x42, 0xe1, 0xdc, 0xd5, 0xbb, + 0x4b, 0xca, 0xed, 0x95, 0x53, 0x33, 0x36, 0xce, 0x4b, 0x36, 0xe5, 0x83, 0x87, 0x44, 0x8f, 0x2b, + 0x29, 0x71, 0xe5, 0xb4, 0x4d, 0xf9, 0xa3, 0xe2, 0x44, 0x4c, 0xb4, 0x75, 0xa4, 0x86, 0x46, 0x18, + 0x1a, 0x15, 0x2e, 0x64, 0x93, 0x99, 0x13, 0xb6, 0x48, 0xa6, 0x66, 0xc1, 0xa9, 0xe3, 0x56, 0x09, + 0x92, 0x19, 0xcb, 0x0c, 0x1d, 0x88, 0x48, 0x66, 0x48, 0x58, 0xfb, 0xfc, 0xe7, 0x95, 0xe8, 0x9e, + 0x65, 0x0e, 0x9a, 0xd3, 0xba, 0xc3, 0xec, 0x52, 0x54, 0xa9, 0xcf, 0x51, 0x92, 0x5d, 0x97, 0x83, + 0x2f, 0x28, 0x93, 0x38, 0x6f, 0x8a, 0xf2, 0xe5, 0xad, 0xf5, 0x6c, 0xd6, 0xda, 0x1c, 0x65, 0xd9, + 0xe7, 0xd9, 0xb5, 0x06, 0xc8, 0x5a, 0xcd, 0x89, 0x17, 0xe4, 0x88, 0xac, 0x35, 0xc4, 0xdb, 0x2e, + 0x36, 0xce, 0x53, 0x91, 0xc1, 0x2e, 0xb6, 0x16, 0x2a, 0x21, 0xd1, 0xc5, 0x2d, 0xc8, 0xc6, 0xe3, + 0x46, 0x54, 0x9f, 0xba, 0xec, 0xa4, 0x29, 0x88, 0xc7, 0x46, 0xd5, 0x00, 0x44, 0x3c, 0x46, 0x41, + 0xed, 0xe7, 0x2c, 0xfa, 0x4e, 0xd5, 0xa4, 0xa7, 0x05, 0x5f, 0x24, 0x1c, 0x5e, 0xbd, 0x70, 0x24, + 0xc4, 0xfc, 0xf7, 0x09, 0x3b, 0xb3, 0xce, 0xb3, 0x32, 0x4f, 0x59, 0x79, 0xa5, 0x1f, 0xc6, 0xfb, + 0x75, 0x6e, 0x84, 0xf0, 0x71, 0xfc, 0xa3, 0x0e, 0xca, 0x06, 0xf5, 0x46, 0x66, 0x42, 0xcc, 0x2a, + 0xae, 0xda, 0x0a, 0x33, 0x6b, 0x9d, 0x9c, 0x3d, 0xf1, 0x3e, 0x60, 0x69, 0xca, 0x8b, 0x65, 0x23, + 0x3b, 0x66, 0x59, 0x72, 0xc9, 0x4b, 0x09, 0x4e, 0xbc, 0x35, 0x35, 0x84, 0x18, 0x71, 0xe2, 0x1d, + 0xc0, 0x6d, 0x36, 0x0f, 0x3c, 0x1f, 0x66, 0x13, 0xfe, 0x0e, 0x64, 0xf3, 0xd0, 0x8e, 0x62, 0x88, + 0x6c, 0x9e, 0x62, 0xed, 0xc9, 0xef, 0xcb, 0x54, 0xc4, 0xd7, 0x7a, 0x09, 0xf0, 0x3b, 0x58, 0x49, + 0xe0, 0x1a, 0x70, 0x3f, 0x84, 0xd8, 0x45, 0x40, 0x09, 0xce, 0x78, 0x9e, 0xb2, 0x18, 0xde, 0xbf, + 0xa9, 0x75, 0xb4, 0x8c, 0x58, 0x04, 0x20, 0x03, 0x8a, 0xab, 0xef, 0xf5, 0x60, 0xc5, 0x05, 0xd7, + 0x7a, 0xee, 0x87, 0x10, 0xbb, 0x0c, 0x2a, 0xc1, 0x28, 0x4f, 0x13, 0x09, 0xa6, 0x41, 0xad, 0xa1, + 0x24, 0xc4, 0x34, 0xf0, 0x09, 0x60, 0xf2, 0x98, 0x17, 0x53, 0x8e, 0x9a, 0x54, 0x92, 0xa0, 0xc9, + 0x86, 0xb0, 0x97, 0x4c, 0xeb, 0xba, 0x8b, 0x7c, 0x09, 0x2e, 0x99, 0xea, 0x6a, 0x89, 0x7c, 0x49, + 0x5c, 0x32, 0xf5, 0x00, 0x50, 0xc4, 0x53, 0x56, 0x4a, 0xbc, 0x88, 0x4a, 0x12, 0x2c, 0x62, 0x43, + 0xd8, 0x35, 0xba, 0x2e, 0xe2, 0x5c, 0x82, 0x35, 0x5a, 0x17, 0xc0, 0x79, 0x02, 0x7d, 0x97, 0x94, + 0xdb, 0x48, 0x52, 0xf7, 0x0a, 0x97, 0xfb, 0x09, 0x4f, 0x27, 0x25, 0x88, 0x24, 0xba, 0xdd, 0x1b, + 0x29, 0x11, 0x49, 0xda, 0x14, 0x18, 0x4a, 0xfa, 0x7c, 0x1c, 0xab, 0x1d, 0x38, 0x1a, 0xbf, 0x1f, + 0x42, 0x6c, 0x7c, 0x6a, 0x0a, 0xbd, 0xcb, 0x8a, 0x22, 0xa9, 0x16, 0xff, 0x55, 0xbc, 0x40, 0x8d, + 0x9c, 0x88, 0x4f, 0x18, 0x07, 0xa6, 0x57, 0x13, 0xb8, 0xb1, 0x82, 0xc1, 0xd0, 0xfd, 0x20, 0xc8, + 0xd8, 0x8c, 0x53, 0x49, 0x9c, 0x47, 0xa8, 0x58, 0x6b, 0x22, 0x4f, 0x50, 0x57, 0xbb, 0x30, 0xe7, + 0x25, 0x10, 0xe3, 0xe2, 0x58, 0x2c, 0xf8, 0x58, 0xbc, 0x7a, 0x97, 0x94, 0x32, 0xc9, 0xa6, 0x7a, + 0xe5, 0x7e, 0x4e, 0x58, 0xc2, 0x60, 0xe2, 0x25, 0x90, 0x4e, 0x25, 0x9b, 0x40, 0x80, 0xb2, 0x9c, + 0xf0, 0x1b, 0x34, 0x81, 0x80, 0x16, 0x0d, 0x47, 0x24, 0x10, 0x21, 0xde, 0x9e, 0xa3, 0x18, 0xe7, + 0xfa, 0x4d, 0xd9, 0xb1, 0x68, 0x72, 0x39, 0xca, 0x1a, 0x04, 0x89, 0xad, 0x6c, 0x50, 0xc1, 0xee, + 0x2f, 0x8d, 0x7f, 0x3b, 0xc5, 0xd6, 0x09, 0x3b, 0xed, 0x69, 0xf6, 0xb8, 0x07, 0x89, 0xb8, 0xb2, + 0xf7, 0x00, 0x28, 0x57, 0xed, 0x6b, 0x00, 0x8f, 0x7b, 0x90, 0xce, 0x99, 0x8c, 0x5b, 0xad, 0x97, + 0x2c, 0xbe, 0x9e, 0x16, 0x62, 0x9e, 0x4d, 0x76, 0x45, 0x2a, 0x0a, 0x70, 0x26, 0xe3, 0x95, 0x1a, + 0xa0, 0xc4, 0x99, 0x4c, 0x87, 0x8a, 0xcd, 0xe0, 0xdc, 0x52, 0xec, 0xa4, 0xc9, 0x14, 0xee, 0xa8, + 0x3d, 0x43, 0x0a, 0x20, 0x32, 0x38, 0x14, 0x44, 0x06, 0x51, 0xbd, 0xe3, 0x96, 0x49, 0xcc, 0xd2, + 0xda, 0xdf, 0x36, 0x6d, 0xc6, 0x03, 0x3b, 0x07, 0x11, 0xa2, 0x80, 0xd4, 0x73, 0x3c, 0x2f, 0xb2, + 0xc3, 0x4c, 0x0a, 0xb2, 0x9e, 0x0d, 0xd0, 0x59, 0x4f, 0x07, 0x04, 0x61, 0x75, 0xcc, 0xdf, 0x55, + 0xa5, 0xa9, 0xfe, 0xc1, 0xc2, 0x6a, 0xf5, 0xf7, 0xa1, 0x96, 0x87, 0xc2, 0x2a, 0xe0, 0x40, 0x65, + 0xb4, 0x93, 0x7a, 0xc0, 0x04, 0xb4, 0xfd, 0x61, 0xb2, 0xde, 0x0d, 0xe2, 0x7e, 0x46, 0x72, 0x99, + 0xf2, 0x90, 0x1f, 0x05, 0xf4, 0xf1, 0xd3, 0x80, 0xf6, 0xb8, 0xc5, 0xab, 0xcf, 0x15, 0x8f, 0xaf, + 0x5b, 0xd7, 0x9a, 0xfc, 0x82, 0xd6, 0x08, 0x71, 0xdc, 0x42, 0xa0, 0x78, 0x17, 0x1d, 0xc6, 0x22, + 0x0b, 0x75, 0x51, 0x25, 0xef, 0xd3, 0x45, 0x9a, 0xb3, 0x9b, 0x5f, 0x23, 0xd5, 0x23, 0xb3, 0xee, + 0xa6, 0x0d, 0xc2, 0x82, 0x0b, 0x11, 0x9b, 0x5f, 0x12, 0xb6, 0x39, 0x39, 0xf4, 0x79, 0xdc, 0xbe, + 0xf3, 0xdd, 0xb2, 0x72, 0x4c, 0xdf, 0xf9, 0xa6, 0x58, 0xba, 0x92, 0xf5, 0x18, 0xe9, 0xb0, 0xe2, + 0x8f, 0x93, 0xcd, 0x7e, 0xb0, 0xdd, 0xf2, 0x78, 0x3e, 0x77, 0x53, 0xce, 0x8a, 0xda, 0xeb, 0x56, + 0xc0, 0x90, 0xc5, 0x88, 0x2d, 0x4f, 0x00, 0x07, 0x21, 0xcc, 0xf3, 0xbc, 0x2b, 0x32, 0xc9, 0x33, + 0x89, 0x85, 0x30, 0xdf, 0x98, 0x06, 0x43, 0x21, 0x8c, 0x52, 0x00, 0xe3, 0x56, 0x9d, 0x07, 0x71, + 0x79, 0xc2, 0x66, 0x68, 0xc6, 0x56, 0x9f, 0xf5, 0xd4, 0xf2, 0xd0, 0xb8, 0x05, 0x9c, 0xf3, 0x90, + 0xcf, 0xf5, 0x32, 0x66, 0xc5, 0xd4, 0x9c, 0x6e, 0x4c, 0x06, 0x4f, 0x69, 0x3b, 0x3e, 0x49, 0x3c, + 0xe4, 0x0b, 0x6b, 0x80, 0xb0, 0x73, 0x38, 0x63, 0x53, 0x53, 0x53, 0xa4, 0x06, 0x4a, 0xde, 0xaa, + 0xea, 0x7a, 0x37, 0x08, 0xfc, 0xbc, 0x49, 0x26, 0x5c, 0x04, 0xfc, 0x28, 0x79, 0x1f, 0x3f, 0x10, + 0x04, 0xd9, 0x5b, 0x55, 0xef, 0x7a, 0x47, 0xb7, 0x93, 0x4d, 0xf4, 0x3e, 0x76, 0x48, 0x34, 0x0f, + 0xe0, 0x42, 0xd9, 0x1b, 0xc1, 0x83, 0x39, 0xda, 0x1c, 0xd0, 0x86, 0xe6, 0xa8, 0x39, 0x7f, 0xed, + 0x33, 0x47, 0x31, 0x58, 0xfb, 0xfc, 0x99, 0x9e, 0xa3, 0x7b, 0x4c, 0xb2, 0x2a, 0x6f, 0x7f, 0x93, + 0xf0, 0x1b, 0xbd, 0x11, 0x46, 0xea, 0xdb, 0x50, 0x43, 0xf5, 0xaa, 0x22, 0xd8, 0x15, 0x6f, 0xf7, + 0xe6, 0x03, 0xbe, 0xf5, 0x0e, 0xa1, 0xd3, 0x37, 0xd8, 0x2a, 0x6c, 0xf7, 0xe6, 0x03, 0xbe, 0xf5, + 0x3b, 0xd0, 0x9d, 0xbe, 0xc1, 0x8b, 0xd0, 0xdb, 0xbd, 0x79, 0xed, 0xfb, 0x2f, 0x9b, 0x89, 0xeb, + 0x3a, 0xaf, 0xf2, 0xb0, 0x58, 0x26, 0x0b, 0x8e, 0xa5, 0x93, 0xbe, 0x3d, 0x83, 0x86, 0xd2, 0x49, + 0x5a, 0xc5, 0xf9, 0x70, 0x0e, 0x56, 0x8a, 0x53, 0x51, 0x26, 0xea, 0x21, 0xfd, 0xf3, 0x1e, 0x46, + 0x1b, 0x38, 0xb4, 0x69, 0x0a, 0x29, 0xd9, 0xc7, 0x8d, 0x1e, 0x6a, 0x6f, 0x31, 0x6f, 0x06, 0xec, + 0xb5, 0x2f, 0x33, 0x6f, 0xf5, 0xa4, 0xed, 0x83, 0x3f, 0x8f, 0x71, 0x9f, 0x38, 0x86, 0x7a, 0x15, + 0x7d, 0xe8, 0xf8, 0xb4, 0xbf, 0x82, 0x76, 0xff, 0xd7, 0xcd, 0xbe, 0x02, 0xfa, 0xd7, 0x93, 0xe0, + 0x59, 0x1f, 0x8b, 0x60, 0x22, 0x3c, 0xbf, 0x95, 0x8e, 0x2e, 0xc8, 0xdf, 0x37, 0x1b, 0xe8, 0x06, + 0x55, 0xef, 0x72, 0xa8, 0x77, 0xff, 0xf4, 0x9c, 0x08, 0x75, 0xab, 0x85, 0xe1, 0xcc, 0x78, 0x71, + 0x4b, 0x2d, 0xe7, 0x33, 0x4a, 0x1e, 0xac, 0xdf, 0x39, 0x74, 0xca, 0x13, 0xb2, 0xec, 0xd0, 0xb0, + 0x40, 0x5f, 0xdc, 0x56, 0x8d, 0x9a, 0x2b, 0x0e, 0xac, 0xbe, 0xca, 0xf0, 0xbc, 0xa7, 0x61, 0xef, + 0x3b, 0x0d, 0x9f, 0xdf, 0x4e, 0x49, 0x97, 0xe5, 0x3f, 0x57, 0xa2, 0x47, 0x1e, 0x6b, 0x9f, 0x27, + 0x80, 0x53, 0x8f, 0x1f, 0x07, 0xec, 0x53, 0x4a, 0xa6, 0x70, 0xbf, 0xfb, 0xcb, 0x29, 0xdb, 0x6f, + 0x0e, 0x79, 0x2a, 0xfb, 0x49, 0x2a, 0x79, 0xd1, 0xfe, 0xe6, 0x90, 0x6f, 0xb7, 0xa6, 0x86, 0xf4, + 0x37, 0x87, 0x02, 0xb8, 0xf3, 0xcd, 0x21, 0xc4, 0x33, 0xfa, 0xcd, 0x21, 0xd4, 0x5a, 0xf0, 0x9b, + 0x43, 0x61, 0x0d, 0x2a, 0xbc, 0x37, 0x45, 0xa8, 0xcf, 0xad, 0x7b, 0x59, 0xf4, 0x8f, 0xb1, 0x9f, + 0xdd, 0x46, 0x85, 0x58, 0xe0, 0x6a, 0x4e, 0xdd, 0x73, 0xeb, 0xd1, 0xa6, 0xde, 0x5d, 0xb7, 0xed, + 0xde, 0xbc, 0xf6, 0xfd, 0x53, 0xbd, 0xbb, 0x31, 0xe1, 0x5c, 0x14, 0xea, 0x7b, 0x53, 0x1b, 0xa1, + 0xf0, 0x5c, 0x59, 0x70, 0x7b, 0x7e, 0xb3, 0x1f, 0x4c, 0x54, 0xb7, 0x22, 0x74, 0xa7, 0x0f, 0xbb, + 0x0c, 0x81, 0x2e, 0xdf, 0xee, 0xcd, 0x13, 0xcb, 0x48, 0xed, 0xbb, 0xee, 0xed, 0x1e, 0xc6, 0xfc, + 0xbe, 0x7e, 0xda, 0x5f, 0x41, 0xbb, 0x5f, 0xe8, 0xb4, 0xd1, 0x75, 0xaf, 0xfa, 0x79, 0xab, 0xcb, + 0xd4, 0xc8, 0xeb, 0xe6, 0x61, 0x5f, 0x3c, 0x94, 0x40, 0xb8, 0x4b, 0x68, 0x57, 0x02, 0x81, 0x2e, + 0xa3, 0x9f, 0xdf, 0x4e, 0x49, 0x97, 0xe5, 0x9f, 0x56, 0xa2, 0xbb, 0x64, 0x59, 0xf4, 0x38, 0xf8, + 0xa2, 0xaf, 0x65, 0x30, 0x1e, 0xbe, 0xbc, 0xb5, 0x9e, 0x2e, 0xd4, 0xbf, 0xae, 0x44, 0xf7, 0x02, + 0x85, 0xaa, 0x07, 0xc8, 0x2d, 0xac, 0xfb, 0x03, 0xe5, 0x87, 0xb7, 0x57, 0xa4, 0x96, 0x7b, 0x17, + 0x1f, 0xb5, 0x3f, 0xc6, 0x13, 0xb0, 0x3d, 0xa2, 0x3f, 0xc6, 0xd3, 0xad, 0x05, 0x0f, 0x79, 0xd8, + 0x45, 0xb3, 0xe9, 0x42, 0x0f, 0x79, 0xd4, 0x0d, 0x35, 0xb0, 0xe7, 0x58, 0xeb, 0xe4, 0x30, 0x27, + 0xaf, 0xde, 0xe5, 0x2c, 0x9b, 0xd0, 0x4e, 0x6a, 0x79, 0xb7, 0x13, 0xc3, 0xc1, 0xc3, 0xb1, 0x4a, + 0x7a, 0x26, 0x9a, 0x8d, 0xd4, 0x63, 0x4a, 0xdf, 0x20, 0xc1, 0xc3, 0xb1, 0x16, 0x4a, 0x78, 0xd3, + 0x59, 0x63, 0xc8, 0x1b, 0x48, 0x16, 0x9f, 0xf4, 0x41, 0x41, 0x8a, 0x6e, 0xbc, 0x99, 0x33, 0xf7, + 0xcd, 0x90, 0x95, 0xd6, 0xb9, 0xfb, 0x56, 0x4f, 0x9a, 0x70, 0x3b, 0xe2, 0xf2, 0x2b, 0xce, 0x26, + 0xbc, 0x08, 0xba, 0x35, 0x54, 0x2f, 0xb7, 0x2e, 0x8d, 0xb9, 0xdd, 0x15, 0xe9, 0x7c, 0x96, 0xe9, + 0xce, 0x24, 0xdd, 0xba, 0x54, 0xb7, 0x5b, 0x40, 0xc3, 0x63, 0x41, 0xeb, 0x56, 0xa5, 0x97, 0x4f, + 0xc2, 0x66, 0xbc, 0xac, 0x72, 0xa3, 0x17, 0x4b, 0xd7, 0x53, 0x0f, 0xa3, 0x8e, 0x7a, 0x82, 0x91, + 0xb4, 0xd5, 0x93, 0x86, 0xe7, 0x73, 0x8e, 0x5b, 0x33, 0x9e, 0xb6, 0x3b, 0x6c, 0xb5, 0x86, 0xd4, + 0xd3, 0xfe, 0x0a, 0xf0, 0x34, 0x54, 0x8f, 0xaa, 0xa3, 0xa4, 0x94, 0xfb, 0x49, 0x9a, 0x0e, 0x36, + 0x02, 0xc3, 0xa4, 0x81, 0x82, 0xa7, 0xa1, 0x08, 0x4c, 0x8c, 0xe4, 0xe6, 0xf4, 0x30, 0x1b, 0x74, + 0xd9, 0x51, 0x54, 0xaf, 0x91, 0xec, 0xd2, 0xe0, 0x44, 0xcb, 0x69, 0x6a, 0x53, 0xdb, 0x61, 0xb8, + 0xe1, 0x5a, 0x15, 0xde, 0xee, 0xcd, 0x83, 0xc7, 0xed, 0x8a, 0x52, 0x2b, 0xcb, 0x43, 0xca, 0x84, + 0xb7, 0x92, 0x3c, 0xea, 0xa0, 0xc0, 0xa9, 0x60, 0x3d, 0x8d, 0xde, 0x26, 0x93, 0x29, 0x97, 0xe8, + 0x93, 0x22, 0x17, 0x08, 0x3e, 0x29, 0x02, 0x20, 0xe8, 0xba, 0xfa, 0xef, 0xe6, 0x38, 0xf4, 0x70, + 0x82, 0x75, 0x9d, 0x56, 0x76, 0xa8, 0x50, 0xd7, 0xa1, 0x34, 0x88, 0x06, 0xc6, 0xad, 0x7e, 0x1d, + 0xff, 0x49, 0xc8, 0x0c, 0x78, 0x27, 0x7f, 0xa3, 0x17, 0x0b, 0x56, 0x14, 0xeb, 0x30, 0x99, 0x25, + 0x12, 0x5b, 0x51, 0x1c, 0x1b, 0x15, 0x12, 0x5a, 0x51, 0xda, 0x28, 0x55, 0xbd, 0x2a, 0x47, 0x38, + 0x9c, 0x84, 0xab, 0x57, 0x33, 0xfd, 0xaa, 0x67, 0xd8, 0xd6, 0x83, 0xcd, 0xcc, 0x0c, 0x19, 0x79, + 0xa5, 0x37, 0xcb, 0xc8, 0xd8, 0x56, 0xaf, 0x69, 0x42, 0x30, 0x14, 0x75, 0x28, 0x05, 0x78, 0x60, + 0x5f, 0x71, 0xcd, 0xb3, 0xd7, 0x3c, 0xe7, 0xac, 0x60, 0x59, 0x8c, 0x6e, 0x4e, 0x95, 0xc1, 0x16, + 0x19, 0xda, 0x9c, 0x92, 0x1a, 0xe0, 0xb1, 0xb9, 0xff, 0x82, 0x25, 0x32, 0x15, 0xcc, 0x9b, 0x8c, + 0xfe, 0xfb, 0x95, 0x8f, 0x7b, 0x90, 0xf0, 0xb1, 0x79, 0x03, 0x98, 0x83, 0xef, 0xda, 0xe9, 0x67, + 0x01, 0x53, 0x3e, 0x1a, 0xda, 0x08, 0xd3, 0x2a, 0x60, 0x50, 0x9b, 0x04, 0x97, 0xcb, 0x9f, 0xf0, + 0x25, 0x36, 0xa8, 0x6d, 0x7e, 0xaa, 0x90, 0xd0, 0xa0, 0x6e, 0xa3, 0x20, 0xcf, 0x74, 0xf7, 0x41, + 0xab, 0x01, 0x7d, 0x77, 0xeb, 0xb3, 0xd6, 0xc9, 0x81, 0x99, 0xb3, 0x97, 0x2c, 0xbc, 0xe7, 0x04, + 0x48, 0x41, 0xf7, 0x92, 0x05, 0xfe, 0x98, 0x60, 0xa3, 0x17, 0x0b, 0x1f, 0xc9, 0x33, 0xc9, 0xdf, + 0x35, 0xcf, 0xca, 0x91, 0xe2, 0x2a, 0x79, 0xeb, 0x61, 0xf9, 0x7a, 0x37, 0x68, 0x2f, 0xc0, 0x9e, + 0x16, 0x22, 0xe6, 0x65, 0xa9, 0xbf, 0x50, 0xe8, 0xdf, 0x30, 0xd2, 0xb2, 0x21, 0xf8, 0x3e, 0xe1, + 0xc3, 0x30, 0x64, 0x7b, 0x46, 0x8b, 0xec, 0x57, 0x6f, 0x56, 0x51, 0xcd, 0xf6, 0x07, 0x6f, 0xd6, + 0x3a, 0x39, 0x3b, 0xbd, 0xb4, 0xd4, 0xfd, 0xcc, 0xcd, 0x3a, 0xaa, 0x8e, 0x7d, 0xe1, 0xe6, 0x71, + 0x0f, 0x52, 0xbb, 0xfa, 0x2a, 0x7a, 0xff, 0x48, 0x4c, 0x47, 0x3c, 0x9b, 0x0c, 0x7e, 0xe0, 0x5f, + 0xa1, 0x15, 0xd3, 0x61, 0xf5, 0x67, 0x63, 0xf4, 0x0e, 0x25, 0xb6, 0x97, 0x00, 0xf7, 0xf8, 0xc5, + 0x7c, 0x3a, 0x92, 0x4c, 0x82, 0x4b, 0x80, 0xea, 0xef, 0xc3, 0x4a, 0x40, 0x5c, 0x02, 0xf4, 0x00, + 0x60, 0x6f, 0x5c, 0x70, 0x8e, 0xda, 0xab, 0x04, 0x41, 0x7b, 0x1a, 0xb0, 0x59, 0x84, 0xb1, 0x57, + 0x25, 0xea, 0xf0, 0xd2, 0x9e, 0xd5, 0x51, 0x52, 0x22, 0x8b, 0x68, 0x53, 0x76, 0x70, 0xd7, 0xd5, + 0x57, 0x5f, 0x1d, 0x99, 0xcf, 0x66, 0xac, 0x58, 0x82, 0xc1, 0xad, 0x6b, 0xe9, 0x00, 0xc4, 0xe0, + 0x46, 0x41, 0x3b, 0x6b, 0x9b, 0x66, 0x8e, 0xaf, 0x0f, 0x44, 0x21, 0xe6, 0x32, 0xc9, 0x38, 0xfc, + 0xf2, 0x84, 0x69, 0x50, 0x97, 0x21, 0x66, 0x2d, 0xc5, 0xda, 0x2c, 0x57, 0x11, 0xf5, 0x7d, 0x42, + 0xf5, 0xdd, 0xe2, 0x52, 0x8a, 0x02, 0x3e, 0x4f, 0xac, 0xad, 0x40, 0x88, 0xc8, 0x72, 0x49, 0x18, + 0xf4, 0xfd, 0x69, 0x92, 0x4d, 0xd1, 0xbe, 0x3f, 0x75, 0xbf, 0xfa, 0x79, 0x8f, 0x06, 0xec, 0x84, + 0xaa, 0x1b, 0xad, 0x9e, 0x00, 0xfa, 0x5d, 0x4e, 0xb4, 0xd1, 0x5d, 0x82, 0x98, 0x50, 0x38, 0x09, + 0x5c, 0xbd, 0xce, 0x79, 0xc6, 0x27, 0xcd, 0xad, 0x39, 0xcc, 0x95, 0x47, 0x04, 0x5d, 0x41, 0xd2, + 0xc6, 0x22, 0x25, 0x3f, 0x9b, 0x67, 0xa7, 0x85, 0xb8, 0x4c, 0x52, 0x5e, 0x80, 0x58, 0x54, 0xab, + 0x3b, 0x72, 0x22, 0x16, 0x61, 0x9c, 0xbd, 0x7e, 0xa1, 0xa4, 0xde, 0xc7, 0xb7, 0xc7, 0x05, 0x8b, + 0xe1, 0xf5, 0x8b, 0xda, 0x46, 0x1b, 0x23, 0x4e, 0x06, 0x03, 0xb8, 0x93, 0xe8, 0xd4, 0xae, 0xb3, + 0xa5, 0x1a, 0x1f, 0xfa, 0x5d, 0x42, 0xf5, 0x2d, 0xcc, 0x12, 0x24, 0x3a, 0xda, 0x1c, 0x46, 0x12, + 0x89, 0x4e, 0x58, 0xc3, 0x2e, 0x25, 0x8a, 0x3b, 0xd1, 0xd7, 0x8a, 0xc0, 0x52, 0x52, 0xdb, 0x68, + 0x84, 0xc4, 0x52, 0xd2, 0x82, 0x40, 0x40, 0x6a, 0xa6, 0xc1, 0x14, 0x0d, 0x48, 0x46, 0x1a, 0x0c, + 0x48, 0x2e, 0x65, 0x03, 0xc5, 0x61, 0x96, 0xc8, 0x84, 0xa5, 0x23, 0x2e, 0x4f, 0x59, 0xc1, 0x66, + 0x5c, 0xf2, 0x02, 0x06, 0x0a, 0x8d, 0x0c, 0x3d, 0x86, 0x08, 0x14, 0x14, 0xab, 0x1d, 0xfe, 0x5e, + 0xf4, 0x61, 0xb5, 0xee, 0xf3, 0x4c, 0xff, 0xcc, 0xc6, 0x2b, 0xf5, 0xfb, 0x3c, 0x83, 0x8f, 0x8c, + 0x8d, 0x91, 0x2c, 0x38, 0x9b, 0x35, 0xb6, 0x3f, 0x30, 0x7f, 0x57, 0xe0, 0xd3, 0x95, 0x6a, 0x3c, + 0x9f, 0x08, 0x99, 0x5c, 0x56, 0xdb, 0x6c, 0xfd, 0x06, 0x11, 0x18, 0xcf, 0xae, 0x78, 0x18, 0xf8, + 0x16, 0x05, 0xc6, 0xd9, 0x38, 0xed, 0x4a, 0xcf, 0x78, 0x9e, 0xc2, 0x38, 0xed, 0x69, 0x2b, 0x80, + 0x88, 0xd3, 0x28, 0x68, 0x27, 0xa7, 0x2b, 0x1e, 0xf3, 0x70, 0x65, 0xc6, 0xbc, 0x5f, 0x65, 0xc6, + 0xde, 0x4b, 0x19, 0x69, 0xf4, 0xe1, 0x31, 0x9f, 0x5d, 0xf0, 0xa2, 0xbc, 0x4a, 0xf2, 0x83, 0x2a, + 0xe1, 0x62, 0x72, 0x0e, 0x5f, 0x5b, 0xb4, 0xc4, 0xd0, 0x20, 0x44, 0x56, 0x4a, 0xa0, 0x76, 0x25, + 0xb0, 0xc0, 0x61, 0x79, 0xc2, 0x66, 0x5c, 0x7d, 0x59, 0x03, 0xac, 0x04, 0x8e, 0x11, 0x07, 0x22, + 0x56, 0x02, 0x12, 0x76, 0xde, 0xef, 0xb2, 0xcc, 0x19, 0x9f, 0x56, 0x23, 0xac, 0x38, 0x65, 0xcb, + 0x19, 0xcf, 0xa4, 0x36, 0x09, 0xce, 0xe4, 0x1d, 0x93, 0x38, 0x4f, 0x9c, 0xc9, 0xf7, 0xd1, 0x73, + 0x42, 0x93, 0xd7, 0xf0, 0xa7, 0xa2, 0x90, 0xf5, 0x8f, 0xe8, 0x9c, 0x17, 0x29, 0x08, 0x4d, 0x7e, + 0xa3, 0x7a, 0x24, 0x11, 0x9a, 0xc2, 0x1a, 0xce, 0xd7, 0xe7, 0xbd, 0x32, 0xbc, 0xe1, 0x85, 0x19, + 0x27, 0xaf, 0x66, 0x2c, 0x49, 0xf5, 0x68, 0xf8, 0x51, 0xc0, 0x36, 0xa1, 0x43, 0x7c, 0x7d, 0xbe, + 0xaf, 0xae, 0xf3, 0xbd, 0xfe, 0x70, 0x09, 0xc1, 0x23, 0x82, 0x0e, 0xfb, 0xc4, 0x23, 0x82, 0x6e, + 0x2d, 0xbb, 0x73, 0xb7, 0xac, 0xe2, 0x96, 0x8a, 0xd8, 0x15, 0x13, 0x78, 0x5e, 0xe8, 0xd8, 0x04, + 0x20, 0xb1, 0x73, 0x0f, 0x2a, 0xd8, 0xd4, 0xc0, 0x62, 0xfb, 0x49, 0xc6, 0xd2, 0xe4, 0x67, 0x30, + 0xad, 0x77, 0xec, 0x34, 0x04, 0x91, 0x1a, 0xe0, 0x24, 0xe6, 0xea, 0x80, 0xcb, 0x71, 0x52, 0x85, + 0xfe, 0xf5, 0x40, 0xbb, 0x29, 0xa2, 0xdb, 0x95, 0x43, 0x3a, 0xdf, 0x68, 0x85, 0xcd, 0xba, 0x93, + 0xe7, 0xa3, 0x6a, 0x55, 0x3d, 0xe3, 0x31, 0x4f, 0x72, 0x39, 0x78, 0x11, 0x6e, 0x2b, 0x80, 0x13, + 0x17, 0x2d, 0x7a, 0xa8, 0x39, 0x8f, 0xef, 0xab, 0x58, 0x32, 0xaa, 0x7f, 0x5d, 0xee, 0xbc, 0xe4, + 0x85, 0x4e, 0x34, 0x0e, 0xb8, 0x04, 0xb3, 0xd3, 0xe1, 0x86, 0x0e, 0x58, 0x55, 0x94, 0x98, 0x9d, + 0x61, 0x0d, 0x7b, 0xd8, 0xe7, 0x70, 0x67, 0xbc, 0x14, 0xe9, 0x82, 0xab, 0xfb, 0x86, 0x9b, 0xa4, + 0x31, 0x87, 0x22, 0x0e, 0xfb, 0x68, 0xda, 0x66, 0x6b, 0x6d, 0xb7, 0x3b, 0xd9, 0xf2, 0x10, 0x5e, + 0x99, 0x40, 0x2c, 0x29, 0x8c, 0xc8, 0xd6, 0x02, 0xb8, 0x73, 0x18, 0x5e, 0x08, 0x36, 0x89, 0x59, + 0x29, 0x4f, 0xd9, 0x32, 0x15, 0x6c, 0xa2, 0xd6, 0x75, 0x78, 0x18, 0xde, 0x30, 0x43, 0x17, 0xa2, + 0x0e, 0xc3, 0x29, 0xd8, 0xcd, 0xce, 0xd4, 0x8f, 0xe6, 0xe9, 0xbb, 0x9c, 0x30, 0x3b, 0x53, 0xe5, + 0x85, 0xf7, 0x38, 0x1f, 0x86, 0x21, 0xfb, 0x0e, 0x5a, 0x2d, 0x52, 0x69, 0xc8, 0x3d, 0x4c, 0xc7, + 0x4b, 0x40, 0x3e, 0x0d, 0x10, 0xf6, 0xbb, 0x14, 0xf5, 0xdf, 0x9b, 0xdf, 0x7d, 0x91, 0xfa, 0x4b, + 0xd6, 0x9b, 0x98, 0xae, 0x0b, 0x0d, 0xdd, 0x0f, 0xdc, 0x6d, 0xf5, 0xa4, 0x6d, 0x9a, 0xb9, 0x7b, + 0xc5, 0xe4, 0xce, 0x64, 0x72, 0xcc, 0x4b, 0xe4, 0x85, 0xf2, 0x4a, 0x38, 0xb4, 0x52, 0x22, 0xcd, + 0x6c, 0x53, 0x76, 0xa0, 0x57, 0xb2, 0x57, 0x93, 0x44, 0x6a, 0x59, 0x73, 0x43, 0x7a, 0xb3, 0x6d, + 0xa0, 0x4d, 0x11, 0xb5, 0xa2, 0x69, 0x1b, 0xcb, 0x2b, 0x66, 0x2c, 0xa6, 0xd3, 0x94, 0x6b, 0xe8, + 0x8c, 0xb3, 0xfa, 0x43, 0x7e, 0xdb, 0x6d, 0x5b, 0x28, 0x48, 0xc4, 0xf2, 0xa0, 0x82, 0x4d, 0x23, + 0x2b, 0xac, 0x7e, 0x24, 0xd5, 0x34, 0xec, 0x5a, 0xdb, 0x8c, 0x07, 0x10, 0x69, 0x24, 0x0a, 0xda, + 0xf7, 0xde, 0x2a, 0xf1, 0x01, 0x6f, 0x5a, 0x02, 0x7e, 0x82, 0x48, 0x29, 0x3b, 0x62, 0xe2, 0xbd, + 0x37, 0x04, 0xb3, 0xfb, 0x04, 0xe0, 0xe1, 0xe5, 0xf2, 0x70, 0x02, 0xf7, 0x09, 0x50, 0x5f, 0x31, + 0xc4, 0x3e, 0x81, 0x62, 0xfd, 0xae, 0x33, 0xe7, 0x5e, 0x47, 0xac, 0xb4, 0x95, 0x43, 0xba, 0x0e, + 0x05, 0x43, 0x5d, 0x47, 0x29, 0xf8, 0x4d, 0xea, 0x1e, 0xad, 0x21, 0x4d, 0x8a, 0x9d, 0xab, 0xad, + 0x76, 0x61, 0x36, 0x2e, 0x99, 0xfd, 0xa4, 0xba, 0xb2, 0x84, 0x7f, 0xc1, 0xbf, 0x16, 0x12, 0x71, + 0xa9, 0x05, 0x39, 0x3f, 0x49, 0x96, 0x27, 0x23, 0xc9, 0x0a, 0x59, 0x05, 0xe4, 0xf6, 0x4f, 0x92, + 0xe5, 0xc9, 0xd0, 0x91, 0x52, 0x3f, 0x49, 0xd6, 0xa2, 0x9c, 0x9f, 0xd9, 0xaa, 0xcc, 0x8b, 0x5c, + 0x5b, 0x7f, 0x80, 0xe8, 0x35, 0x42, 0xf2, 0x37, 0x53, 0x01, 0x54, 0xdb, 0x7e, 0xf9, 0xe9, 0x7f, + 0x7d, 0x73, 0x67, 0xe5, 0x17, 0xdf, 0xdc, 0x59, 0xf9, 0x9f, 0x6f, 0xee, 0xac, 0xfc, 0xfc, 0xdb, + 0x3b, 0xef, 0xfd, 0xe2, 0xdb, 0x3b, 0xef, 0xfd, 0xf7, 0xb7, 0x77, 0xde, 0xfb, 0xfa, 0x7d, 0xfd, + 0x3b, 0xb0, 0x17, 0xff, 0x4f, 0xfd, 0x9a, 0xeb, 0xf3, 0xff, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x8e, + 0xa4, 0xab, 0x9b, 0x2b, 0x76, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -702,6 +705,10 @@ type ClientCommandsClient interface { ChatSubscribeLastMessages(ctx context.Context, in *pb.RpcChatSubscribeLastMessagesRequest, opts ...grpc.CallOption) (*pb.RpcChatSubscribeLastMessagesResponse, error) ChatUnsubscribe(ctx context.Context, in *pb.RpcChatUnsubscribeRequest, opts ...grpc.CallOption) (*pb.RpcChatUnsubscribeResponse, error) ObjectChatAdd(ctx context.Context, in *pb.RpcObjectChatAddRequest, opts ...grpc.CallOption) (*pb.RpcObjectChatAddResponse, error) + // API + // *** + ApiStartServer(ctx context.Context, in *pb.RpcApiStartServerRequest, opts ...grpc.CallOption) (*pb.RpcApiStartServerResponse, error) + ApiStopServer(ctx context.Context, in *pb.RpcApiStopServerRequest, opts ...grpc.CallOption) (*pb.RpcApiStopServerResponse, error) } type clientCommandsClient struct { @@ -3165,6 +3172,24 @@ func (c *clientCommandsClient) ObjectChatAdd(ctx context.Context, in *pb.RpcObje return out, nil } +func (c *clientCommandsClient) ApiStartServer(ctx context.Context, in *pb.RpcApiStartServerRequest, opts ...grpc.CallOption) (*pb.RpcApiStartServerResponse, error) { + out := new(pb.RpcApiStartServerResponse) + err := c.cc.Invoke(ctx, "/anytype.ClientCommands/ApiStartServer", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *clientCommandsClient) ApiStopServer(ctx context.Context, in *pb.RpcApiStopServerRequest, opts ...grpc.CallOption) (*pb.RpcApiStopServerResponse, error) { + out := new(pb.RpcApiStopServerResponse) + err := c.cc.Invoke(ctx, "/anytype.ClientCommands/ApiStopServer", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // ClientCommandsServer is the server API for ClientCommands service. type ClientCommandsServer interface { AppGetVersion(context.Context, *pb.RpcAppGetVersionRequest) *pb.RpcAppGetVersionResponse @@ -3498,6 +3523,10 @@ type ClientCommandsServer interface { ChatSubscribeLastMessages(context.Context, *pb.RpcChatSubscribeLastMessagesRequest) *pb.RpcChatSubscribeLastMessagesResponse ChatUnsubscribe(context.Context, *pb.RpcChatUnsubscribeRequest) *pb.RpcChatUnsubscribeResponse ObjectChatAdd(context.Context, *pb.RpcObjectChatAddRequest) *pb.RpcObjectChatAddResponse + // API + // *** + ApiStartServer(context.Context, *pb.RpcApiStartServerRequest) *pb.RpcApiStartServerResponse + ApiStopServer(context.Context, *pb.RpcApiStopServerRequest) *pb.RpcApiStopServerResponse } // UnimplementedClientCommandsServer can be embedded to have forward compatible implementations. @@ -4314,6 +4343,12 @@ func (*UnimplementedClientCommandsServer) ChatUnsubscribe(ctx context.Context, r func (*UnimplementedClientCommandsServer) ObjectChatAdd(ctx context.Context, req *pb.RpcObjectChatAddRequest) *pb.RpcObjectChatAddResponse { return nil } +func (*UnimplementedClientCommandsServer) ApiStartServer(ctx context.Context, req *pb.RpcApiStartServerRequest) *pb.RpcApiStartServerResponse { + return nil +} +func (*UnimplementedClientCommandsServer) ApiStopServer(ctx context.Context, req *pb.RpcApiStopServerRequest) *pb.RpcApiStopServerResponse { + return nil +} func RegisterClientCommandsServer(s *grpc.Server, srv ClientCommandsServer) { s.RegisterService(&_ClientCommands_serviceDesc, srv) @@ -9183,6 +9218,42 @@ func _ClientCommands_ObjectChatAdd_Handler(srv interface{}, ctx context.Context, return interceptor(ctx, in, info, handler) } +func _ClientCommands_ApiStartServer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(pb.RpcApiStartServerRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ClientCommandsServer).ApiStartServer(ctx, in), nil + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/anytype.ClientCommands/ApiStartServer", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ClientCommandsServer).ApiStartServer(ctx, req.(*pb.RpcApiStartServerRequest)), nil + } + return interceptor(ctx, in, info, handler) +} + +func _ClientCommands_ApiStopServer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(pb.RpcApiStopServerRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ClientCommandsServer).ApiStopServer(ctx, in), nil + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/anytype.ClientCommands/ApiStopServer", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ClientCommandsServer).ApiStopServer(ctx, req.(*pb.RpcApiStopServerRequest)), nil + } + return interceptor(ctx, in, info, handler) +} + var _ClientCommands_serviceDesc = grpc.ServiceDesc{ ServiceName: "anytype.ClientCommands", HandlerType: (*ClientCommandsServer)(nil), @@ -10263,6 +10334,14 @@ var _ClientCommands_serviceDesc = grpc.ServiceDesc{ MethodName: "ObjectChatAdd", Handler: _ClientCommands_ObjectChatAdd_Handler, }, + { + MethodName: "ApiStartServer", + Handler: _ClientCommands_ApiStartServer_Handler, + }, + { + MethodName: "ApiStopServer", + Handler: _ClientCommands_ApiStopServer_Handler, + }, }, Streams: []grpc.StreamDesc{ { From c75635b8ac3a31333a242a47944c3c9724ab9ce9 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Tue, 14 Jan 2025 23:52:14 +0100 Subject: [PATCH 153/279] GO-4459: Refactor util.go --- core/api/util/util.go | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/core/api/util/util.go b/core/api/util/util.go index 7d467674b..1612897c2 100644 --- a/core/api/util/util.go +++ b/core/api/util/util.go @@ -25,26 +25,17 @@ func GetIconFromEmojiOrImage(accountInfo *model.AccountInfo, iconEmoji string, i } if iconImage != "" { - return GetGatewayURLForMedia(accountInfo, iconImage, true) + return fmt.Sprintf("%s/image/%s", accountInfo.GatewayUrl, iconImage) } return "" } -// GetGatewayURLForMedia returns the URL of file gateway for the media object with the given ID -func GetGatewayURLForMedia(accountInfo *model.AccountInfo, objectId string, isIcon bool) string { - widthParam := "" - if isIcon { - widthParam = "?width=100" - } - return fmt.Sprintf("%s/image/%s%s", accountInfo.GatewayUrl, objectId, widthParam) -} - // ResolveTypeToName resolves the type ID to the name of the type, e.g. "ot-page" to "Page" or "bafyreigyb6l5szohs32ts26ku2j42yd65e6hqy2u3gtzgdwqv6hzftsetu" to "Custom Type" func ResolveTypeToName(mw service.ClientCommandsServer, spaceId string, typeId string) (typeName string, err error) { // Can't look up preinstalled types based on relation key, therefore need to use unique key relKey := bundle.RelationKeyId.String() - if strings.Contains(typeId, "ot-") { + if strings.HasPrefix(typeId, "ot-") { relKey = bundle.RelationKeyUniqueKey.String() } From e70cd1fc247d4d0d749e050943beb6245638670a Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Tue, 14 Jan 2025 23:58:39 +0100 Subject: [PATCH 154/279] GO-4459: Remove unused endpoints to update object and export space --- core/api/docs/docs.go | 69 ------------------------ core/api/docs/swagger.json | 69 ------------------------ core/api/docs/swagger.yaml | 46 ---------------- core/api/server/router.go | 2 - core/api/services/export/handler.go | 9 ---- core/api/services/object/handler.go | 44 --------------- core/api/services/object/model.go | 5 -- core/api/services/object/service.go | 9 ---- core/api/services/object/service_test.go | 21 -------- 9 files changed, 274 deletions(-) diff --git a/core/api/docs/docs.go b/core/api/docs/docs.go index e4edc552b..b14d66306 100644 --- a/core/api/docs/docs.go +++ b/core/api/docs/docs.go @@ -667,75 +667,6 @@ const docTemplate = `{ } } }, - "put": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "objects" - ], - "summary": "Update an existing object in a specific space", - "parameters": [ - { - "type": "string", - "description": "The ID of the space", - "name": "space_id", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "The ID of the object", - "name": "object_id", - "in": "path", - "required": true - }, - { - "description": "The updated object details", - "name": "object", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/object.Object" - } - } - ], - "responses": { - "200": { - "description": "The updated object", - "schema": { - "$ref": "#/definitions/object.ObjectResponse" - } - }, - "400": { - "description": "Bad request", - "schema": { - "$ref": "#/definitions/util.ValidationError" - } - }, - "403": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/util.UnauthorizedError" - } - }, - "404": { - "description": "Resource not found", - "schema": { - "$ref": "#/definitions/util.NotFoundError" - } - }, - "502": { - "description": "Internal server error", - "schema": { - "$ref": "#/definitions/util.ServerError" - } - } - } - }, "delete": { "consumes": [ "application/json" diff --git a/core/api/docs/swagger.json b/core/api/docs/swagger.json index cb33fc852..68a3b91e7 100644 --- a/core/api/docs/swagger.json +++ b/core/api/docs/swagger.json @@ -661,75 +661,6 @@ } } }, - "put": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "objects" - ], - "summary": "Update an existing object in a specific space", - "parameters": [ - { - "type": "string", - "description": "The ID of the space", - "name": "space_id", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "The ID of the object", - "name": "object_id", - "in": "path", - "required": true - }, - { - "description": "The updated object details", - "name": "object", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/object.Object" - } - } - ], - "responses": { - "200": { - "description": "The updated object", - "schema": { - "$ref": "#/definitions/object.ObjectResponse" - } - }, - "400": { - "description": "Bad request", - "schema": { - "$ref": "#/definitions/util.ValidationError" - } - }, - "403": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/util.UnauthorizedError" - } - }, - "404": { - "description": "Resource not found", - "schema": { - "$ref": "#/definitions/util.NotFoundError" - } - }, - "502": { - "description": "Internal server error", - "schema": { - "$ref": "#/definitions/util.ServerError" - } - } - } - }, "delete": { "consumes": [ "application/json" diff --git a/core/api/docs/swagger.yaml b/core/api/docs/swagger.yaml index c924ff003..dc4fdc6dc 100644 --- a/core/api/docs/swagger.yaml +++ b/core/api/docs/swagger.yaml @@ -799,52 +799,6 @@ paths: summary: Retrieve a specific object in a space tags: - objects - put: - consumes: - - application/json - parameters: - - description: The ID of the space - in: path - name: space_id - required: true - type: string - - description: The ID of the object - in: path - name: object_id - required: true - type: string - - description: The updated object details - in: body - name: object - required: true - schema: - $ref: '#/definitions/object.Object' - produces: - - application/json - responses: - "200": - description: The updated object - schema: - $ref: '#/definitions/object.ObjectResponse' - "400": - description: Bad request - schema: - $ref: '#/definitions/util.ValidationError' - "403": - description: Unauthorized - schema: - $ref: '#/definitions/util.UnauthorizedError' - "404": - description: Resource not found - schema: - $ref: '#/definitions/util.NotFoundError' - "502": - description: Internal server error - schema: - $ref: '#/definitions/util.ServerError' - summary: Update an existing object in a specific space - tags: - - objects /spaces/{space_id}/objects/{object_id}/export/{format}: post: consumes: diff --git a/core/api/server/router.go b/core/api/server/router.go index 6ce14184d..136e710aa 100644 --- a/core/api/server/router.go +++ b/core/api/server/router.go @@ -41,7 +41,6 @@ func (s *Server) NewRouter(a *app.App) *gin.Engine { // Export v1.POST("/spaces/:space_id/objects/:object_id/export/:format", export.GetObjectExportHandler(s.exportService)) - v1.POST("/spaces/:space_id/objects/export/:format", export.GetSpaceExportHandler(s.exportService)) // Object v1.GET("/spaces/:space_id/objects", object.GetObjectsHandler(s.objectService)) @@ -50,7 +49,6 @@ func (s *Server) NewRouter(a *app.App) *gin.Engine { v1.GET("/spaces/:space_id/object_types", object.GetTypesHandler(s.objectService)) v1.GET("/spaces/:space_id/object_types/:typeId/templates", object.GetTemplatesHandler(s.objectService)) v1.POST("/spaces/:space_id/objects", object.CreateObjectHandler(s.objectService)) - v1.PUT("/spaces/:space_id/objects/:object_id", object.UpdateObjectHandler(s.objectService)) // Search v1.GET("/search", search.SearchHandler(s.searchService)) diff --git a/core/api/services/export/handler.go b/core/api/services/export/handler.go index d07f674bd..aa1017c9b 100644 --- a/core/api/services/export/handler.go +++ b/core/api/services/export/handler.go @@ -48,12 +48,3 @@ func GetObjectExportHandler(s *ExportService) gin.HandlerFunc { c.JSON(http.StatusOK, ObjectExportResponse{Path: outputPath}) } } - -func GetSpaceExportHandler(s *ExportService) gin.HandlerFunc { - return func(c *gin.Context) { - // spaceId := c.Param("space_id") - // format := c.Query("format") - - c.JSON(http.StatusNotImplemented, "Not implemented") - } -} diff --git a/core/api/services/object/handler.go b/core/api/services/object/handler.go index 18facccf7..9f835d14d 100644 --- a/core/api/services/object/handler.go +++ b/core/api/services/object/handler.go @@ -160,50 +160,6 @@ func CreateObjectHandler(s *ObjectService) gin.HandlerFunc { } } -// UpdateObjectHandler updates an existing object in a specific space -// -// @Summary Update an existing object in a specific space -// @Tags objects -// @Accept json -// @Produce json -// @Param space_id path string true "The ID of the space" -// @Param object_id path string true "The ID of the object" -// @Param object body Object true "The updated object details" -// @Success 200 {object} ObjectResponse "The updated object" -// @Failure 400 {object} util.ValidationError "Bad request" -// @Failure 403 {object} util.UnauthorizedError "Unauthorized" -// @Failure 404 {object} util.NotFoundError "Resource not found" -// @Failure 502 {object} util.ServerError "Internal server error" -// @Router /spaces/{space_id}/objects/{object_id} [put] -func UpdateObjectHandler(s *ObjectService) gin.HandlerFunc { - return func(c *gin.Context) { - spaceId := c.Param("space_id") - objectId := c.Param("object_id") - - request := UpdateObjectRequest{} - if err := c.BindJSON(&request); err != nil { - apiErr := util.CodeToAPIError(http.StatusBadRequest, err.Error()) - c.JSON(http.StatusBadRequest, apiErr) - return - } - - object, err := s.UpdateObject(c.Request.Context(), spaceId, objectId, request) - code := util.MapErrorCode(err, - util.ErrToCode(ErrNotImplemented, http.StatusNotImplemented), - util.ErrToCode(ErrFailedUpdateObject, http.StatusInternalServerError), - util.ErrToCode(ErrFailedRetrieveObject, http.StatusInternalServerError), - ) - - if code != http.StatusOK { - apiErr := util.CodeToAPIError(code, err.Error()) - c.JSON(code, apiErr) - return - } - - c.JSON(http.StatusNotImplemented, ObjectResponse{Object: object}) - } -} - // GetTypesHandler retrieves object types in a specific space // // @Summary Retrieve object types in a specific space diff --git a/core/api/services/object/model.go b/core/api/services/object/model.go index 8c9eac48e..1a2858a6f 100644 --- a/core/api/services/object/model.go +++ b/core/api/services/object/model.go @@ -11,11 +11,6 @@ type CreateObjectRequest struct { WithChat bool `json:"with_chat"` } -// TODO: Add fields to the request -type UpdateObjectRequest struct { - Object Object `json:"object"` -} - type ObjectResponse struct { Object Object `json:"object"` } diff --git a/core/api/services/object/service.go b/core/api/services/object/service.go index f8f0c651e..577130a80 100644 --- a/core/api/services/object/service.go +++ b/core/api/services/object/service.go @@ -26,8 +26,6 @@ var ( ErrFailedSetRelationFeatured = errors.New("failed to set relation featured") ErrFailedFetchBookmark = errors.New("failed to fetch bookmark") ErrFailedPasteBody = errors.New("failed to paste body") - ErrNotImplemented = errors.New("not implemented") - ErrFailedUpdateObject = errors.New("failed to update object") ErrFailedRetrieveTypes = errors.New("failed to retrieve types") ErrNoTypesFound = errors.New("no types found") ErrFailedRetrieveTemplateType = errors.New("failed to retrieve template type") @@ -42,7 +40,6 @@ type Service interface { GetObject(ctx context.Context, spaceId string, objectId string) (Object, error) DeleteObject(ctx context.Context, spaceId string, objectId string) error CreateObject(ctx context.Context, spaceId string, request CreateObjectRequest) (Object, error) - UpdateObject(ctx context.Context, spaceId string, objectId string, request UpdateObjectRequest) (Object, error) ListTypes(ctx context.Context, spaceId string, offset int, limit int) ([]ObjectType, int, bool, error) ListTemplates(ctx context.Context, spaceId string, typeId string, offset int, limit int) ([]ObjectTemplate, int, bool, error) } @@ -266,12 +263,6 @@ func (s *ObjectService) CreateObject(ctx context.Context, spaceId string, reques return s.GetObject(ctx, spaceId, resp.ObjectId) } -// UpdateObject updates an existing object in a specific space. -func (s *ObjectService) UpdateObject(ctx context.Context, spaceId string, objectId string, request UpdateObjectRequest) (Object, error) { - // TODO: Implement logic to update an existing object - return Object{}, ErrNotImplemented -} - // ListTypes returns a paginated list of types in a specific space. func (s *ObjectService) ListTypes(ctx context.Context, spaceId string, offset int, limit int) (types []ObjectType, total int, hasMore bool, err error) { resp := s.mw.ObjectSearch(ctx, &pb.RpcObjectSearchRequest{ diff --git a/core/api/services/object/service_test.go b/core/api/services/object/service_test.go index 8ce672413..4b3d42e5b 100644 --- a/core/api/services/object/service_test.go +++ b/core/api/services/object/service_test.go @@ -405,27 +405,6 @@ func TestObjectService_CreateObject(t *testing.T) { }) } -func TestObjectService_UpdateObject(t *testing.T) { - t.Run("not implemented", func(t *testing.T) { - // given - ctx := context.Background() - fx := newFixture(t) - - // when - object, err := fx.UpdateObject(ctx, mockedSpaceId, mockedObjectId, UpdateObjectRequest{ - Object: Object{ - Name: "Updated Object", - }, - }) - - // then - require.ErrorIs(t, err, ErrNotImplemented) - require.Empty(t, object) - }) - - // TODO: further tests -} - func TestObjectService_ListTypes(t *testing.T) { t.Run("types found", func(t *testing.T) { // given From 972ec0f7cb5ba4c8ae326e7eea8e000569c494c9 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Tue, 14 Jan 2025 23:58:52 +0100 Subject: [PATCH 155/279] GO-4459: Update mock --- .../mock_service/mock_ClientCommandsServer.go | 98 +++++++++++++++++++ 1 file changed, 98 insertions(+) diff --git a/pb/service/mock_service/mock_ClientCommandsServer.go b/pb/service/mock_service/mock_ClientCommandsServer.go index e6ce72bf3..1504906a7 100644 --- a/pb/service/mock_service/mock_ClientCommandsServer.go +++ b/pb/service/mock_service/mock_ClientCommandsServer.go @@ -661,6 +661,104 @@ func (_c *MockClientCommandsServer_AccountStop_Call) RunAndReturn(run func(conte return _c } +// ApiStartServer provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ApiStartServer(_a0 context.Context, _a1 *pb.RpcApiStartServerRequest) *pb.RpcApiStartServerResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ApiStartServer") + } + + var r0 *pb.RpcApiStartServerResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcApiStartServerRequest) *pb.RpcApiStartServerResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcApiStartServerResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ApiStartServer_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ApiStartServer' +type MockClientCommandsServer_ApiStartServer_Call struct { + *mock.Call +} + +// ApiStartServer is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcApiStartServerRequest +func (_e *MockClientCommandsServer_Expecter) ApiStartServer(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ApiStartServer_Call { + return &MockClientCommandsServer_ApiStartServer_Call{Call: _e.mock.On("ApiStartServer", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ApiStartServer_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcApiStartServerRequest)) *MockClientCommandsServer_ApiStartServer_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcApiStartServerRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ApiStartServer_Call) Return(_a0 *pb.RpcApiStartServerResponse) *MockClientCommandsServer_ApiStartServer_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ApiStartServer_Call) RunAndReturn(run func(context.Context, *pb.RpcApiStartServerRequest) *pb.RpcApiStartServerResponse) *MockClientCommandsServer_ApiStartServer_Call { + _c.Call.Return(run) + return _c +} + +// ApiStopServer provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) ApiStopServer(_a0 context.Context, _a1 *pb.RpcApiStopServerRequest) *pb.RpcApiStopServerResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ApiStopServer") + } + + var r0 *pb.RpcApiStopServerResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcApiStopServerRequest) *pb.RpcApiStopServerResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcApiStopServerResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_ApiStopServer_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ApiStopServer' +type MockClientCommandsServer_ApiStopServer_Call struct { + *mock.Call +} + +// ApiStopServer is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcApiStopServerRequest +func (_e *MockClientCommandsServer_Expecter) ApiStopServer(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ApiStopServer_Call { + return &MockClientCommandsServer_ApiStopServer_Call{Call: _e.mock.On("ApiStopServer", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_ApiStopServer_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcApiStopServerRequest)) *MockClientCommandsServer_ApiStopServer_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcApiStopServerRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_ApiStopServer_Call) Return(_a0 *pb.RpcApiStopServerResponse) *MockClientCommandsServer_ApiStopServer_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_ApiStopServer_Call) RunAndReturn(run func(context.Context, *pb.RpcApiStopServerRequest) *pb.RpcApiStopServerResponse) *MockClientCommandsServer_ApiStopServer_Call { + _c.Call.Return(run) + return _c +} + // AppGetVersion provides a mock function with given fields: _a0, _a1 func (_m *MockClientCommandsServer) AppGetVersion(_a0 context.Context, _a1 *pb.RpcAppGetVersionRequest) *pb.RpcAppGetVersionResponse { ret := _m.Called(_a0, _a1) From e0ba47894c110741aecd3461e2c1bb2d2affbb42 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Wed, 15 Jan 2025 00:21:18 +0100 Subject: [PATCH 156/279] GO-4459: Add missing api.go --- core/api.go | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 core/api.go diff --git a/core/api.go b/core/api.go new file mode 100644 index 000000000..3a1f21577 --- /dev/null +++ b/core/api.go @@ -0,0 +1,57 @@ +package core + +import ( + "context" + "fmt" + + "github.com/anyproto/anytype-heart/core/api" + "github.com/anyproto/anytype-heart/pb" +) + +func (mw *Middleware) ApiStartServer(cctx context.Context, req *pb.RpcApiStartServerRequest) *pb.RpcApiStartServerResponse { + response := func(err error) *pb.RpcApiStartServerResponse { + m := &pb.RpcApiStartServerResponse{ + Error: &pb.RpcApiStartServerResponseError{ + Code: pb.RpcApiStartServerResponseError_NULL, + }, + } + if err != nil { + m.Error.Code = mapErrorCode(err, + errToCode(api.ErrPortAlreadyUsed, pb.RpcApiStartServerResponseError_PORT_ALREADY_USED), + errToCode(api.ErrServerAlreadyStarted, pb.RpcApiStartServerResponseError_SERVER_ALREADY_STARTED)) + m.Error.Description = getErrorDescription(err) + } + return m + } + + apiService := mw.applicationService.GetApp().Component(api.CName).(api.Api) + if apiService == nil { + return response(fmt.Errorf("node not started")) + } + + err := apiService.Start() + return response(err) +} + +func (mw *Middleware) ApiStopServer(cctx context.Context, req *pb.RpcApiStopServerRequest) *pb.RpcApiStopServerResponse { + response := func(err error) *pb.RpcApiStopServerResponse { + m := &pb.RpcApiStopServerResponse{ + Error: &pb.RpcApiStopServerResponseError{ + Code: pb.RpcApiStopServerResponseError_NULL, + }, + } + if err != nil { + m.Error.Code = mapErrorCode(err, errToCode(api.ErrServerNotStarted, pb.RpcApiStopServerResponseError_SERVER_NOT_STARTED)) + m.Error.Description = getErrorDescription(err) + } + return m + } + + apiService := mw.applicationService.GetApp().Component(api.CName).(api.Api) + if apiService == nil { + return response(fmt.Errorf("node not started")) + } + + err := apiService.Stop() + return response(err) +} From 1ad655f8b17399659e8cec586e494d1988660a4f Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Wed, 15 Jan 2025 02:00:26 +0100 Subject: [PATCH 157/279] GO-4459: Add rate limiter to write requests --- core/api/server/middleware.go | 53 ++++++++++++++++++++++++----------- core/api/server/router.go | 25 +++++++++++------ go.mod | 2 ++ go.sum | 4 +++ 4 files changed, 59 insertions(+), 25 deletions(-) diff --git a/core/api/server/middleware.go b/core/api/server/middleware.go index b88747337..6f0273545 100644 --- a/core/api/server/middleware.go +++ b/core/api/server/middleware.go @@ -6,30 +6,27 @@ import ( "net/http" "github.com/anyproto/any-sync/app" + "github.com/didip/tollbooth/v8" + "github.com/didip/tollbooth/v8/limiter" "github.com/gin-gonic/gin" "github.com/anyproto/anytype-heart/core/anytype/account" ) -// initAccountInfo retrieves the account information from the account service. -func (s *Server) initAccountInfo(a *app.App) gin.HandlerFunc { +// rateLimit is a middleware that limits the number of requests per second. +func (s *Server) rateLimit(max float64) gin.HandlerFunc { + lmt := tollbooth.NewLimiter(max, nil) + lmt.SetIPLookup(limiter.IPLookup{ + Name: "RemoteAddr", + IndexFromRight: 0, + }) + return func(c *gin.Context) { - // TODO: consider not fetching account info on every request; currently used to avoid inconsistencies on logout/login - if a == nil { - c.AbortWithStatusJSON(http.StatusForbidden, gin.H{"error": "failed to get app instance"}) + httpError := tollbooth.LimitByRequest(lmt, c.Writer, c.Request) + if httpError != nil { + c.AbortWithStatusJSON(httpError.StatusCode, gin.H{"error": httpError.Message}) return } - - accInfo, err := a.Component(account.CName).(account.Service).GetInfo(context.Background()) - if err != nil { - c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"error": fmt.Sprintf("failed to get account info: %v", err)}) - return - } - - s.exportService.AccountInfo = accInfo - s.objectService.AccountInfo = accInfo - s.spaceService.AccountInfo = accInfo - s.searchService.AccountInfo = accInfo c.Next() } } @@ -47,3 +44,27 @@ func (s *Server) ensureAuthenticated() gin.HandlerFunc { c.Next() } } + +// ensureAccountInfo is a middleware that ensures the account info is available in the services. +func (s *Server) ensureAccountInfo(a *app.App) gin.HandlerFunc { + return func(c *gin.Context) { + // TODO: consider not fetching account info on every request; currently used to avoid inconsistencies on logout/login + if a == nil { + c.AbortWithStatusJSON(http.StatusForbidden, gin.H{"error": "failed to get app instance"}) + return + } + + accInfo, err := a.Component(account.CName).(account.Service).GetInfo(context.Background()) + if err != nil { + c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"error": fmt.Sprintf("failed to get account info: %v", err)}) + return + } + + s.exportService.AccountInfo = accInfo + s.objectService.AccountInfo = accInfo + s.spaceService.AccountInfo = accInfo + s.searchService.AccountInfo = accInfo + + c.Next() + } +} diff --git a/core/api/server/router.go b/core/api/server/router.go index 136e710aa..67e1e0592 100644 --- a/core/api/server/router.go +++ b/core/api/server/router.go @@ -14,16 +14,23 @@ import ( "github.com/anyproto/anytype-heart/core/api/services/space" ) +const ( + defaultPage = 0 + defaultPageSize = 100 + minPageSize = 1 + maxPageSize = 1000 + maxWriteRequestsPerSecond = 1 +) + // NewRouter builds and returns a *gin.Engine with all routes configured. func (s *Server) NewRouter(a *app.App) *gin.Engine { router := gin.Default() - // Pagination middleware setup paginator := pagination.New(pagination.Config{ - DefaultPage: 0, - DefaultPageSize: 100, - MinPageSize: 1, - MaxPageSize: 1000, + DefaultPage: defaultPage, + DefaultPageSize: defaultPageSize, + MinPageSize: minPageSize, + MaxPageSize: maxPageSize, }) // Swagger route @@ -32,8 +39,8 @@ func (s *Server) NewRouter(a *app.App) *gin.Engine { // API routes v1 := router.Group("/v1") v1.Use(paginator) - v1.Use(s.initAccountInfo(a)) v1.Use(s.ensureAuthenticated()) + v1.Use(s.ensureAccountInfo(a)) { // Auth v1.POST("/auth/display_code", auth.DisplayCodeHandler(s.authService)) @@ -45,10 +52,10 @@ func (s *Server) NewRouter(a *app.App) *gin.Engine { // Object v1.GET("/spaces/:space_id/objects", object.GetObjectsHandler(s.objectService)) v1.GET("/spaces/:space_id/objects/:object_id", object.GetObjectHandler(s.objectService)) - v1.DELETE("/spaces/:space_id/objects/:object_id", object.DeleteObjectHandler(s.objectService)) + v1.DELETE("/spaces/:space_id/objects/:object_id", s.rateLimit(maxWriteRequestsPerSecond), object.DeleteObjectHandler(s.objectService)) v1.GET("/spaces/:space_id/object_types", object.GetTypesHandler(s.objectService)) v1.GET("/spaces/:space_id/object_types/:typeId/templates", object.GetTemplatesHandler(s.objectService)) - v1.POST("/spaces/:space_id/objects", object.CreateObjectHandler(s.objectService)) + v1.POST("/spaces/:space_id/objects", s.rateLimit(maxWriteRequestsPerSecond), object.CreateObjectHandler(s.objectService)) // Search v1.GET("/search", search.SearchHandler(s.searchService)) @@ -56,7 +63,7 @@ func (s *Server) NewRouter(a *app.App) *gin.Engine { // Space v1.GET("/spaces", space.GetSpacesHandler(s.spaceService)) v1.GET("/spaces/:space_id/members", space.GetMembersHandler(s.spaceService)) - v1.POST("/spaces", space.CreateSpaceHandler(s.spaceService)) + v1.POST("/spaces", s.rateLimit(maxWriteRequestsPerSecond), space.CreateSpaceHandler(s.spaceService)) } return router diff --git a/go.mod b/go.mod index 7e842dc16..942dcecf0 100644 --- a/go.mod +++ b/go.mod @@ -149,6 +149,7 @@ require ( github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f // indirect github.com/dgraph-io/ristretto v0.1.1 // indirect + github.com/didip/tollbooth/v8 v8.0.1 // indirect github.com/disintegration/imaging v1.6.2 // indirect github.com/dsoprea/go-iptc v0.0.0-20200609062250-162ae6b44feb // indirect github.com/dsoprea/go-logging v0.0.0-20200710184922-b02d349568dd // indirect @@ -169,6 +170,7 @@ require ( github.com/go-openapi/jsonreference v0.19.6 // indirect github.com/go-openapi/spec v0.20.4 // indirect github.com/go-openapi/swag v0.19.15 // indirect + github.com/go-pkgz/expirable-cache/v3 v3.0.0 // indirect github.com/go-playground/locales v0.14.1 // indirect github.com/go-playground/universal-translator v0.18.1 // indirect github.com/go-playground/validator/v10 v10.22.1 // indirect diff --git a/go.sum b/go.sum index 62d1047a5..6383f62bc 100644 --- a/go.sum +++ b/go.sum @@ -226,6 +226,8 @@ github.com/dgtony/collections v0.1.6 h1:Qv4xLe4nXJgIeeExex6e7mDyP57tzZN3MYaGfN8u github.com/dgtony/collections v0.1.6/go.mod h1:olD2FRoNisWmjMhK6LDRKv+lMnDoryOZIT+owtd/o6U= github.com/dhowden/tag v0.0.0-20240417053706-3d75831295e8 h1:OtSeLS5y0Uy01jaKK4mA/WVIYtpzVm63vLVAPzJXigg= github.com/dhowden/tag v0.0.0-20240417053706-3d75831295e8/go.mod h1:apkPC/CR3s48O2D7Y++n1XWEpgPNNCjXYga3PPbJe2E= +github.com/didip/tollbooth/v8 v8.0.1 h1:VAAapTo1t4Bn6bbpcHjuovwoa9u3JH++wgjbpWv+rB8= +github.com/didip/tollbooth/v8 v8.0.1/go.mod h1:oEd9l+ep373d7DmvKLc0a5gasPOev2mTewi6KPQBGJ4= github.com/disintegration/imaging v1.6.2 h1:w1LecBlG2Lnp8B3jk5zSuNqd7b4DXhcjwek1ei82L+c= github.com/disintegration/imaging v1.6.2/go.mod h1:44/5580QXChDfwIclfc/PCwrr44amcmDAg8hxG0Ewe4= github.com/dsoprea/go-exif/v2 v2.0.0-20200321225314-640175a69fe4/go.mod h1:Lm2lMM2zx8p4a34ZemkaUV95AnMl4ZvLbCUbwOvLC2E= @@ -335,6 +337,8 @@ github.com/go-openapi/spec v0.20.4/go.mod h1:faYFR1CvsJZ0mNsmsphTMSoRrNV3TEDoAM7 github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.19.15 h1:D2NRCBzS9/pEY3gP9Nl8aDqGUcPFrwG2p+CNFrLyrCM= github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= +github.com/go-pkgz/expirable-cache/v3 v3.0.0 h1:u3/gcu3sabLYiTCevoRKv+WzjIn5oo7P8XtiXBeRDLw= +github.com/go-pkgz/expirable-cache/v3 v3.0.0/go.mod h1:2OQiDyEGQalYecLWmXprm3maPXeVb5/6/X7yRPYTzec= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= From d98041dc28b9ab7cde813f3c86f366ca03121bb8 Mon Sep 17 00:00:00 2001 From: AnastasiaShemyakinskaya Date: Wed, 15 Jan 2025 12:16:10 +0100 Subject: [PATCH 158/279] GO-4406: merge main Signed-off-by: AnastasiaShemyakinskaya --- core/block/object/objectcreator/creator.go | 4 ++-- core/block/object/objectcreator/installer.go | 2 +- core/block/object/objectcreator/relation_option.go | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/core/block/object/objectcreator/creator.go b/core/block/object/objectcreator/creator.go index 357a781b3..4405e58c9 100644 --- a/core/block/object/objectcreator/creator.go +++ b/core/block/object/objectcreator/creator.go @@ -212,8 +212,8 @@ func buildDateObject(space clientspace.Space, details *domain.Details) (string, return dateObject.Id(), details, err } -func setOriginalCreatedTimestamp(state *state.State, details *types.Struct) { - if createDate := pbtypes.GetInt64(details, bundle.RelationKeyCreatedDate.String()); createDate != 0 { +func setOriginalCreatedTimestamp(state *state.State, details *domain.Details) { + if createDate := details.GetInt64(bundle.RelationKeyCreatedDate); createDate != 0 { state.SetOriginalCreatedTimestamp(createDate) } } diff --git a/core/block/object/objectcreator/installer.go b/core/block/object/objectcreator/installer.go index e217f81d4..ca71571a2 100644 --- a/core/block/object/objectcreator/installer.go +++ b/core/block/object/objectcreator/installer.go @@ -255,7 +255,7 @@ func (s *service) prepareDetailsForInstallingObject( details.SetString(bundle.RelationKeySpaceId, spaceID) details.SetString(bundle.RelationKeySourceObject, sourceId) details.SetBool(bundle.RelationKeyIsReadonly, false) - details.Fields[bundle.RelationKeyCreatedDate.String()] = pbtypes.Int64(time.Now().Unix()) + details.SetInt64(bundle.RelationKeyCreatedDate, time.Now().Unix()) // we should delete old createdDate as it belongs to source object from marketplace details.Delete(bundle.RelationKeyCreatedDate) diff --git a/core/block/object/objectcreator/relation_option.go b/core/block/object/objectcreator/relation_option.go index 6f407ece3..42724ab7b 100644 --- a/core/block/object/objectcreator/relation_option.go +++ b/core/block/object/objectcreator/relation_option.go @@ -48,7 +48,7 @@ func getUniqueKeyOrGenerate(sbType coresb.SmartBlockType, details *domain.Detail if err != nil { return nil, err } - details.Fields[bundle.RelationKeyUniqueKey.String()] = pbtypes.String(newUniqueKey.Marshal()) + details.SetString(bundle.RelationKeyUniqueKey, newUniqueKey.Marshal()) return newUniqueKey, err } return domain.UnmarshalUniqueKey(uniqueKey) From c2fe8eb36c214d61993cc3d891e93aea487fb395 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Wed, 15 Jan 2025 12:32:04 +0100 Subject: [PATCH 159/279] GO-4459: Return time in ISO 8601 instead of POSIX --- core/api/services/object/model.go | 4 +-- core/api/services/object/service.go | 40 +++++------------------- core/api/services/search/service.go | 12 +++---- core/api/services/search/service_test.go | 4 +-- 4 files changed, 18 insertions(+), 42 deletions(-) diff --git a/core/api/services/object/model.go b/core/api/services/object/model.go index 1a2858a6f..3f8b8219c 100644 --- a/core/api/services/object/model.go +++ b/core/api/services/object/model.go @@ -32,8 +32,8 @@ type Block struct { Id string `json:"id"` ChildrenIds []string `json:"children_ids"` BackgroundColor string `json:"background_color"` - Align string `json:"align"` - VerticalAlign string `json:"vertical_align"` + Align string `json:"align" example:"AlignLeft"` + VerticalAlign string `json:"vertical_align" example:"VerticalAlignTop"` Text *Text `json:"text,omitempty"` File *File `json:"file,omitempty"` } diff --git a/core/api/services/object/service.go b/core/api/services/object/service.go index 577130a80..c7b8a83d8 100644 --- a/core/api/services/object/service.go +++ b/core/api/services/object/service.go @@ -3,6 +3,7 @@ package object import ( "context" "errors" + "time" "github.com/gogo/protobuf/types" @@ -397,13 +398,13 @@ func (s *ObjectService) GetDetails(resp *pb.RpcObjectShowResponse) []Detail { { Id: "lastModifiedDate", Details: map[string]interface{}{ - "lastModifiedDate": resp.ObjectView.Details[0].Details.Fields["lastModifiedDate"].GetNumberValue(), + "lastModifiedDate": PosixToISO8601(resp.ObjectView.Details[0].Details.Fields["lastModifiedDate"].GetNumberValue()), }, }, { Id: "createdDate", Details: map[string]interface{}{ - "createdDate": resp.ObjectView.Details[0].Details.Fields["createdDate"].GetNumberValue(), + "createdDate": PosixToISO8601(resp.ObjectView.Details[0].Details.Fields["createdDate"].GetNumberValue()), }, }, { @@ -476,8 +477,8 @@ func (s *ObjectService) GetBlocks(resp *pb.RpcObjectShowResponse) []Block { Id: block.Id, ChildrenIds: block.ChildrenIds, BackgroundColor: block.BackgroundColor, - Align: mapAlign(block.Align), - VerticalAlign: mapVerticalAlign(block.VerticalAlign), + Align: model.BlockAlign_name[int32(block.Align)], + VerticalAlign: model.BlockVerticalAlign_name[int32(block.VerticalAlign)], Text: text, File: file, }) @@ -486,32 +487,7 @@ func (s *ObjectService) GetBlocks(resp *pb.RpcObjectShowResponse) []Block { return blocks } -// mapAlign maps the protobuf BlockAlign to a string. -func mapAlign(align model.BlockAlign) string { - switch align { - case model.Block_AlignLeft: - return "left" - case model.Block_AlignCenter: - return "center" - case model.Block_AlignRight: - return "right" - case model.Block_AlignJustify: - return "justify" - default: - return "unknown" - } -} - -// mapVerticalAlign maps the protobuf BlockVerticalAlign to a string. -func mapVerticalAlign(align model.BlockVerticalAlign) string { - switch align { - case model.Block_VerticalAlignTop: - return "top" - case model.Block_VerticalAlignMiddle: - return "middle" - case model.Block_VerticalAlignBottom: - return "bottom" - default: - return "unknown" - } +func PosixToISO8601(posix float64) string { + t := time.Unix(int64(posix), 0).UTC() + return t.Format(time.RFC3339) } diff --git a/core/api/services/search/service.go b/core/api/services/search/service.go index 66fc04d55..20386b8f6 100644 --- a/core/api/services/search/service.go +++ b/core/api/services/search/service.go @@ -63,10 +63,8 @@ func (s *SearchService) Search(ctx context.Context, searchQuery string, objectTy IncludeTime: true, EmptyPlacement: model.BlockContentDataviewSort_NotSpecified, }}, - Keys: []string{"id", "name"}, - // TODO split limit between spaces - // Limit: paginationLimitPerSpace, - // FullText: searchTerm, + Keys: []string{"id", "name"}, + Limit: int32(limit), // nolint: gosec }) if objResp.Error.Code != pb.RpcObjectSearchResponseError_NULL { @@ -90,9 +88,11 @@ func (s *SearchService) Search(ctx context.Context, searchQuery string, objectTy return nil, 0, false, ErrNoObjectsFound } - // sort after lastModifiedDate to achieve descending sort order across all spaces + // sort after ISO 8601 lastModifiedDate to achieve descending sort order across all spaces sort.Slice(results, func(i, j int) bool { - return results[i].Details[0].Details["lastModifiedDate"].(float64) > results[j].Details[0].Details["lastModifiedDate"].(float64) + dateStrI := results[i].Details[0].Details["lastModifiedDate"].(string) + dateStrJ := results[j].Details[0].Details["lastModifiedDate"].(string) + return dateStrI > dateStrJ }) // TODO: solve global pagination vs per space pagination diff --git a/core/api/services/search/service_test.go b/core/api/services/search/service_test.go index fb6aaee6c..a54cc68f5 100644 --- a/core/api/services/search/service_test.go +++ b/core/api/services/search/service_test.go @@ -214,9 +214,9 @@ func TestSearchService_Search(t *testing.T) { // check details for _, detail := range objects[0].Details { if detail.Id == "createdDate" { - require.Equal(t, float64(888888), detail.Details["createdDate"]) + require.Equal(t, string("1970-01-11T06:54:48Z"), detail.Details["createdDate"]) } else if detail.Id == "lastModifiedDate" { - require.Equal(t, float64(999999), detail.Details["lastModifiedDate"]) + require.Equal(t, string("1970-01-12T13:46:39Z"), detail.Details["lastModifiedDate"]) } } From c547ed88a7c9754bdb6ab6afcfae4d135bfd44ae Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Wed, 15 Jan 2025 12:57:18 +0100 Subject: [PATCH 160/279] GO-4848: Add ObjectOrigin enum option for API --- core/api/services/object/service.go | 9 +- docs/proto.md | 1 + pkg/lib/pb/model/models.pb.go | 1123 +++++++++++++------------- pkg/lib/pb/model/protos/models.proto | 1 + 4 files changed, 570 insertions(+), 564 deletions(-) diff --git a/core/api/services/object/service.go b/core/api/services/object/service.go index c7b8a83d8..38bcdf20c 100644 --- a/core/api/services/object/service.go +++ b/core/api/services/object/service.go @@ -175,10 +175,11 @@ func (s *ObjectService) CreateObject(ctx context.Context, spaceId string, reques details := &types.Struct{ Fields: map[string]*types.Value{ - "name": pbtypes.String(request.Name), - "iconEmoji": pbtypes.String(request.Icon), - "description": pbtypes.String(request.Description), - "source": pbtypes.String(request.Source), + "name": pbtypes.String(request.Name), + "iconEmoji": pbtypes.String(request.Icon), + "description": pbtypes.String(request.Description), + "source": pbtypes.String(request.Source), + string(bundle.RelationKeyOrigin): pbtypes.Int64(int64(model.ObjectOrigin_api)), }, } diff --git a/docs/proto.md b/docs/proto.md index 6982fe2e2..e064340eb 100644 --- a/docs/proto.md +++ b/docs/proto.md @@ -30641,6 +30641,7 @@ Look https://github.com/golang/protobuf/issues/1135 for more information. | usecase | 6 | | | builtin | 7 | | | bookmark | 8 | | +| api | 9 | | diff --git a/pkg/lib/pb/model/models.pb.go b/pkg/lib/pb/model/models.pb.go index 8f9a8adce..17607ca49 100644 --- a/pkg/lib/pb/model/models.pb.go +++ b/pkg/lib/pb/model/models.pb.go @@ -200,6 +200,7 @@ const ( ObjectOrigin_usecase ObjectOrigin = 6 ObjectOrigin_builtin ObjectOrigin = 7 ObjectOrigin_bookmark ObjectOrigin = 8 + ObjectOrigin_api ObjectOrigin = 9 ) var ObjectOrigin_name = map[int32]string{ @@ -212,6 +213,7 @@ var ObjectOrigin_name = map[int32]string{ 6: "usecase", 7: "builtin", 8: "bookmark", + 9: "api", } var ObjectOrigin_value = map[string]int32{ @@ -224,6 +226,7 @@ var ObjectOrigin_value = map[string]int32{ "usecase": 6, "builtin": 7, "bookmark": 8, + "api": 9, } func (x ObjectOrigin) String() string { @@ -9507,566 +9510,566 @@ func init() { } var fileDescriptor_98a910b73321e591 = []byte{ - // 8929 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x7d, 0x5b, 0x70, 0x23, 0xc9, - 0x91, 0x18, 0xf1, 0x06, 0x12, 0x04, 0x59, 0xac, 0x79, 0x41, 0xd0, 0x68, 0x3c, 0x82, 0x56, 0xbb, - 0xa3, 0xd1, 0x8a, 0xb3, 0x3b, 0xbb, 0xab, 0x5d, 0xed, 0x69, 0x57, 0x02, 0x41, 0x70, 0x88, 0x1d, - 0x92, 0xa0, 0x1a, 0x98, 0x19, 0xed, 0xc6, 0x9d, 0xe9, 0x26, 0xba, 0x08, 0xb4, 0xd8, 0xe8, 0x86, - 0xba, 0x0b, 0x1c, 0x72, 0xc3, 0x76, 0x9c, 0x5f, 0x77, 0xbe, 0x3f, 0xdd, 0xd9, 0x67, 0xfb, 0x3e, - 0x1c, 0x27, 0xfd, 0x39, 0x7c, 0x0a, 0xbf, 0x22, 0x14, 0x7e, 0x84, 0x2f, 0xc2, 0xbe, 0x0f, 0xdb, - 0x11, 0xfe, 0x91, 0xed, 0x1f, 0xff, 0xd9, 0x21, 0x45, 0xf8, 0xc7, 0x61, 0x5f, 0x9c, 0xfd, 0x73, - 0xe1, 0xf0, 0x87, 0x23, 0xb3, 0xaa, 0x1f, 0x78, 0x90, 0x83, 0xd9, 0xbb, 0x73, 0xdc, 0x17, 0xbb, - 0xb2, 0x33, 0xb3, 0xb3, 0xaa, 0xb2, 0xb2, 0x32, 0xb3, 0xb2, 0x40, 0x78, 0x65, 0x7c, 0x3a, 0x78, - 0xe0, 0xd8, 0xc7, 0x0f, 0xc6, 0xc7, 0x0f, 0x46, 0x9e, 0x25, 0x9c, 0x07, 0x63, 0xdf, 0x93, 0x5e, - 0xa0, 0x1a, 0xc1, 0x26, 0xb5, 0x78, 0xc5, 0x74, 0x2f, 0xe4, 0xc5, 0x58, 0x6c, 0x12, 0xb4, 0x76, - 0x7b, 0xe0, 0x79, 0x03, 0x47, 0x28, 0xd4, 0xe3, 0xc9, 0xc9, 0x83, 0x40, 0xfa, 0x93, 0xbe, 0x54, - 0xc8, 0xf5, 0x9f, 0x66, 0xe1, 0x66, 0x77, 0x64, 0xfa, 0x72, 0xcb, 0xf1, 0xfa, 0xa7, 0x5d, 0xd7, - 0x1c, 0x07, 0x43, 0x4f, 0x6e, 0x99, 0x81, 0xe0, 0xaf, 0x43, 0xfe, 0x18, 0x81, 0x41, 0x35, 0x75, - 0x37, 0x73, 0xaf, 0xfc, 0xf0, 0xfa, 0xe6, 0x14, 0xe3, 0x4d, 0xa2, 0x30, 0x34, 0x0e, 0x7f, 0x13, - 0x0a, 0x96, 0x90, 0xa6, 0xed, 0x04, 0xd5, 0xf4, 0xdd, 0xd4, 0xbd, 0xf2, 0xc3, 0x5b, 0x9b, 0xea, - 0xc3, 0x9b, 0xe1, 0x87, 0x37, 0xbb, 0xf4, 0x61, 0x23, 0xc4, 0xe3, 0xef, 0x42, 0xf1, 0xc4, 0x76, - 0xc4, 0x63, 0x71, 0x11, 0x54, 0x33, 0x57, 0xd2, 0x6c, 0xa5, 0xab, 0x29, 0x23, 0x42, 0xe6, 0x4d, - 0x58, 0x13, 0xe7, 0xd2, 0x37, 0x0d, 0xe1, 0x98, 0xd2, 0xf6, 0xdc, 0xa0, 0x9a, 0x25, 0x09, 0x6f, - 0xcd, 0x48, 0x18, 0xbe, 0x27, 0xf2, 0x19, 0x12, 0x7e, 0x17, 0xca, 0xde, 0xf1, 0xf7, 0x44, 0x5f, - 0xf6, 0x2e, 0xc6, 0x22, 0xa8, 0xe6, 0xee, 0x66, 0xee, 0x95, 0x8c, 0x24, 0x88, 0x7f, 0x03, 0xca, - 0x7d, 0xcf, 0x71, 0x44, 0x5f, 0x7d, 0x23, 0x7f, 0x75, 0xb7, 0x92, 0xb8, 0xfc, 0x6d, 0xb8, 0xe1, - 0x8b, 0x91, 0x77, 0x26, 0xac, 0x66, 0x04, 0xa5, 0x7e, 0x16, 0xe9, 0x33, 0x8b, 0x5f, 0xf2, 0x06, - 0x54, 0x7c, 0x2d, 0xdf, 0x9e, 0xed, 0x9e, 0x06, 0xd5, 0x02, 0x75, 0xeb, 0xf3, 0x97, 0x74, 0x0b, - 0x71, 0x8c, 0x69, 0x0a, 0xce, 0x20, 0x73, 0x2a, 0x2e, 0xaa, 0xa5, 0xbb, 0xa9, 0x7b, 0x25, 0x03, - 0x1f, 0xf9, 0xfb, 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, - 0x2d, 0x35, 0x43, 0x6d, 0xf7, 0xc4, 0xab, 0x96, 0x75, 0xf7, 0xa7, 0x65, 0xd9, 0xd1, 0xaf, 0x8d, - 0x08, 0xb1, 0xfe, 0x87, 0x69, 0xc8, 0x77, 0x85, 0xe9, 0xf7, 0x87, 0xb5, 0x5f, 0x4d, 0x41, 0xde, - 0x10, 0xc1, 0xc4, 0x91, 0xbc, 0x06, 0x45, 0x35, 0xb6, 0x6d, 0xab, 0x9a, 0x22, 0xe9, 0xa2, 0xf6, - 0x67, 0xd1, 0x9d, 0x4d, 0xc8, 0x8e, 0x84, 0x34, 0xab, 0x19, 0x1a, 0xa1, 0xda, 0x8c, 0x54, 0xea, - 0xf3, 0x9b, 0xfb, 0x42, 0x9a, 0x06, 0xe1, 0xd5, 0x7e, 0x9e, 0x82, 0x2c, 0x36, 0xf9, 0x6d, 0x28, - 0x0d, 0xed, 0xc1, 0xd0, 0xb1, 0x07, 0x43, 0xa9, 0x05, 0x89, 0x01, 0xfc, 0x43, 0x58, 0x8f, 0x1a, - 0x86, 0xe9, 0x0e, 0x04, 0x4a, 0xb4, 0x48, 0xf9, 0xe9, 0xa5, 0x31, 0x8b, 0xcc, 0xab, 0x50, 0xa0, - 0xf5, 0xd0, 0xb6, 0x48, 0xa3, 0x4b, 0x46, 0xd8, 0x44, 0x75, 0x0b, 0x67, 0xea, 0xb1, 0xb8, 0xa8, - 0x66, 0xe9, 0x6d, 0x12, 0xc4, 0x1b, 0xb0, 0x1e, 0x36, 0xb7, 0xf5, 0x68, 0xe4, 0xae, 0x1e, 0x8d, - 0x59, 0xfc, 0xfa, 0x3f, 0xda, 0x83, 0x1c, 0x2d, 0x4b, 0xbe, 0x06, 0x69, 0x3b, 0x1c, 0xe8, 0xb4, - 0x6d, 0xf1, 0x07, 0x90, 0x3f, 0xb1, 0x85, 0x63, 0xbd, 0x70, 0x84, 0x35, 0x1a, 0x6f, 0xc1, 0xaa, - 0x2f, 0x02, 0xe9, 0xdb, 0x5a, 0xfb, 0xd5, 0x02, 0xfd, 0xe2, 0x22, 0x1b, 0xb0, 0x69, 0x24, 0x10, - 0x8d, 0x29, 0x32, 0xec, 0x76, 0x7f, 0x68, 0x3b, 0x96, 0x2f, 0xdc, 0xb6, 0xa5, 0xd6, 0x69, 0xc9, - 0x48, 0x82, 0xf8, 0x3d, 0x58, 0x3f, 0x36, 0xfb, 0xa7, 0x03, 0xdf, 0x9b, 0xb8, 0xb8, 0x20, 0x3c, - 0x9f, 0xba, 0x5d, 0x32, 0x66, 0xc1, 0xfc, 0x0d, 0xc8, 0x99, 0x8e, 0x3d, 0x70, 0x69, 0x25, 0xae, - 0xcd, 0x4d, 0xba, 0x92, 0xa5, 0x81, 0x18, 0x86, 0x42, 0xe4, 0xbb, 0x50, 0x39, 0x13, 0xbe, 0xb4, - 0xfb, 0xa6, 0x43, 0xf0, 0x6a, 0x81, 0x28, 0xeb, 0x0b, 0x29, 0x9f, 0x26, 0x31, 0x8d, 0x69, 0x42, - 0xde, 0x06, 0x08, 0xd0, 0x4c, 0xd2, 0x74, 0xea, 0xb5, 0xf0, 0xda, 0x42, 0x36, 0x4d, 0xcf, 0x95, - 0xc2, 0x95, 0x9b, 0xdd, 0x08, 0x7d, 0x77, 0xc5, 0x48, 0x10, 0xf3, 0x77, 0x21, 0x2b, 0xc5, 0xb9, - 0xac, 0xae, 0x5d, 0x31, 0xa2, 0x21, 0x93, 0x9e, 0x38, 0x97, 0xbb, 0x2b, 0x06, 0x11, 0x20, 0x21, - 0x2e, 0xb2, 0xea, 0xfa, 0x12, 0x84, 0xb8, 0x2e, 0x91, 0x10, 0x09, 0xf8, 0x07, 0x90, 0x77, 0xcc, - 0x0b, 0x6f, 0x22, 0xab, 0x8c, 0x48, 0xbf, 0x74, 0x25, 0xe9, 0x1e, 0xa1, 0xee, 0xae, 0x18, 0x9a, - 0x88, 0xbf, 0x0d, 0x19, 0xcb, 0x3e, 0xab, 0x6e, 0x10, 0xed, 0xdd, 0x2b, 0x69, 0xb7, 0xed, 0xb3, - 0xdd, 0x15, 0x03, 0xd1, 0x79, 0x13, 0x8a, 0xc7, 0x9e, 0x77, 0x3a, 0x32, 0xfd, 0xd3, 0x2a, 0x27, - 0xd2, 0x2f, 0x5f, 0x49, 0xba, 0xa5, 0x91, 0x77, 0x57, 0x8c, 0x88, 0x10, 0xbb, 0x6c, 0xf7, 0x3d, - 0xb7, 0x7a, 0x6d, 0x89, 0x2e, 0xb7, 0xfb, 0x9e, 0x8b, 0x5d, 0x46, 0x02, 0x24, 0x74, 0x6c, 0xf7, - 0xb4, 0x7a, 0x7d, 0x09, 0x42, 0xb4, 0x9c, 0x48, 0x88, 0x04, 0x28, 0xb6, 0x65, 0x4a, 0xf3, 0xcc, - 0x16, 0xcf, 0xab, 0x37, 0x96, 0x10, 0x7b, 0x5b, 0x23, 0xa3, 0xd8, 0x21, 0x21, 0x32, 0x09, 0x97, - 0x66, 0xf5, 0xe6, 0x12, 0x4c, 0x42, 0x8b, 0x8e, 0x4c, 0x42, 0x42, 0xfe, 0x67, 0x61, 0xe3, 0x44, - 0x98, 0x72, 0xe2, 0x0b, 0x2b, 0xde, 0xe8, 0x6e, 0x11, 0xb7, 0xcd, 0xab, 0xe7, 0x7e, 0x96, 0x6a, - 0x77, 0xc5, 0x98, 0x67, 0xc5, 0xdf, 0x87, 0x9c, 0x63, 0x4a, 0x71, 0x5e, 0xad, 0x12, 0xcf, 0xfa, - 0x0b, 0x94, 0x42, 0x8a, 0xf3, 0xdd, 0x15, 0x43, 0x91, 0xf0, 0xef, 0xc2, 0xba, 0x34, 0x8f, 0x1d, - 0xd1, 0x39, 0xd1, 0x08, 0x41, 0xf5, 0x73, 0xc4, 0xe5, 0xf5, 0xab, 0xd5, 0x79, 0x9a, 0x66, 0x77, - 0xc5, 0x98, 0x65, 0x83, 0x52, 0x11, 0xa8, 0x5a, 0x5b, 0x42, 0x2a, 0xe2, 0x87, 0x52, 0x11, 0x09, - 0xdf, 0x83, 0x32, 0x3d, 0x34, 0x3d, 0x67, 0x32, 0x72, 0xab, 0x9f, 0x27, 0x0e, 0xf7, 0x5e, 0xcc, - 0x41, 0xe1, 0xef, 0xae, 0x18, 0x49, 0x72, 0x9c, 0x44, 0x6a, 0x1a, 0xde, 0xf3, 0xea, 0xed, 0x25, - 0x26, 0xb1, 0xa7, 0x91, 0x71, 0x12, 0x43, 0x42, 0x5c, 0x7a, 0xcf, 0x6d, 0x6b, 0x20, 0x64, 0xf5, - 0x0b, 0x4b, 0x2c, 0xbd, 0x67, 0x84, 0x8a, 0x4b, 0x4f, 0x11, 0xa1, 0x1a, 0xf7, 0x87, 0xa6, 0xac, - 0xde, 0x59, 0x42, 0x8d, 0x9b, 0x43, 0x93, 0x6c, 0x05, 0x12, 0xd4, 0x3e, 0x85, 0xd5, 0xa4, 0x55, - 0xe6, 0x1c, 0xb2, 0xbe, 0x30, 0xd5, 0x8e, 0x50, 0x34, 0xe8, 0x19, 0x61, 0xc2, 0xb2, 0x25, 0xed, - 0x08, 0x45, 0x83, 0x9e, 0xf9, 0x4d, 0xc8, 0x2b, 0xdf, 0x84, 0x0c, 0x7e, 0xd1, 0xd0, 0x2d, 0xc4, - 0xb5, 0x7c, 0x73, 0x40, 0xfb, 0x56, 0xd1, 0xa0, 0x67, 0xc4, 0xb5, 0x7c, 0x6f, 0xdc, 0x71, 0xc9, - 0x60, 0x17, 0x0d, 0xdd, 0xaa, 0xfd, 0x8d, 0x0f, 0xa0, 0xa0, 0x85, 0xaa, 0xfd, 0xdd, 0x14, 0xe4, - 0x95, 0x41, 0xe1, 0xdf, 0x82, 0x5c, 0x20, 0x2f, 0x1c, 0x41, 0x32, 0xac, 0x3d, 0xfc, 0xca, 0x12, - 0x46, 0x68, 0xb3, 0x8b, 0x04, 0x86, 0xa2, 0xab, 0x1b, 0x90, 0xa3, 0x36, 0x2f, 0x40, 0xc6, 0xf0, - 0x9e, 0xb3, 0x15, 0x0e, 0x90, 0x57, 0x93, 0xc5, 0x52, 0x08, 0xdc, 0xb6, 0xcf, 0x58, 0x1a, 0x81, - 0xbb, 0xc2, 0xb4, 0x84, 0xcf, 0x32, 0xbc, 0x02, 0xa5, 0x70, 0x5a, 0x02, 0x96, 0xe5, 0x0c, 0x56, - 0x13, 0x13, 0x1e, 0xb0, 0x5c, 0xed, 0x7f, 0x65, 0x21, 0x8b, 0xeb, 0x9f, 0xbf, 0x02, 0x15, 0x69, - 0xfa, 0x03, 0xa1, 0x1c, 0xe1, 0xc8, 0x49, 0x99, 0x06, 0xf2, 0x0f, 0xc2, 0x3e, 0xa4, 0xa9, 0x0f, - 0xaf, 0xbd, 0xd0, 0xae, 0x4c, 0xf5, 0x20, 0xb1, 0x0b, 0x67, 0x96, 0xdb, 0x85, 0x77, 0xa0, 0x88, - 0xe6, 0xac, 0x6b, 0x7f, 0x2a, 0x68, 0xe8, 0xd7, 0x1e, 0xde, 0x7f, 0xf1, 0x27, 0xdb, 0x9a, 0xc2, - 0x88, 0x68, 0x79, 0x1b, 0x4a, 0x7d, 0xd3, 0xb7, 0x48, 0x18, 0x9a, 0xad, 0xb5, 0x87, 0x5f, 0x7d, - 0x31, 0xa3, 0x66, 0x48, 0x62, 0xc4, 0xd4, 0xbc, 0x03, 0x65, 0x4b, 0x04, 0x7d, 0xdf, 0x1e, 0x93, - 0x79, 0x53, 0x7b, 0xf1, 0xd7, 0x5e, 0xcc, 0x6c, 0x3b, 0x26, 0x32, 0x92, 0x1c, 0xd0, 0x23, 0xf3, - 0x23, 0xfb, 0x56, 0x20, 0x07, 0x21, 0x06, 0xd4, 0xdf, 0x85, 0x62, 0xd8, 0x1f, 0xbe, 0x0a, 0x45, - 0xfc, 0x7b, 0xe0, 0xb9, 0x82, 0xad, 0xe0, 0xdc, 0x62, 0xab, 0x3b, 0x32, 0x1d, 0x87, 0xa5, 0xf8, - 0x1a, 0x00, 0x36, 0xf7, 0x85, 0x65, 0x4f, 0x46, 0x2c, 0x5d, 0xff, 0x85, 0x50, 0x5b, 0x8a, 0x90, - 0x3d, 0x34, 0x07, 0x48, 0xb1, 0x0a, 0xc5, 0xd0, 0x5c, 0xb3, 0x14, 0xd2, 0x6f, 0x9b, 0xc1, 0xf0, - 0xd8, 0x33, 0x7d, 0x8b, 0xa5, 0x79, 0x19, 0x0a, 0x0d, 0xbf, 0x3f, 0xb4, 0xcf, 0x04, 0xcb, 0xd4, - 0x1f, 0x40, 0x39, 0x21, 0x2f, 0xb2, 0xd0, 0x1f, 0x2d, 0x41, 0xae, 0x61, 0x59, 0xc2, 0x62, 0x29, - 0x24, 0xd0, 0x1d, 0x64, 0xe9, 0xfa, 0x57, 0xa1, 0x14, 0x8d, 0x16, 0xa2, 0xe3, 0xc6, 0xcd, 0x56, - 0xf0, 0x09, 0xc1, 0x2c, 0x85, 0x5a, 0xd9, 0x76, 0x1d, 0xdb, 0x15, 0x2c, 0x5d, 0xfb, 0x73, 0xa4, - 0xaa, 0xfc, 0x9b, 0xd3, 0x0b, 0xe2, 0xd5, 0x17, 0xed, 0xac, 0xd3, 0xab, 0xe1, 0xf3, 0x89, 0xfe, - 0xed, 0xd9, 0x24, 0x5c, 0x11, 0xb2, 0xdb, 0x9e, 0x0c, 0x58, 0xaa, 0xf6, 0xdf, 0xd3, 0x50, 0x0c, - 0x37, 0x54, 0x8c, 0x09, 0x26, 0xbe, 0xa3, 0x15, 0x1a, 0x1f, 0xf9, 0x75, 0xc8, 0x49, 0x5b, 0x6a, - 0x35, 0x2e, 0x19, 0xaa, 0x81, 0xbe, 0x5a, 0x72, 0x66, 0x95, 0x03, 0x3b, 0x3b, 0x55, 0xf6, 0xc8, - 0x1c, 0x88, 0x5d, 0x33, 0x18, 0x6a, 0x17, 0x36, 0x06, 0x20, 0xfd, 0x89, 0x79, 0x86, 0x3a, 0x47, - 0xef, 0x95, 0x17, 0x97, 0x04, 0xf1, 0xb7, 0x20, 0x8b, 0x1d, 0xd4, 0x4a, 0xf3, 0x67, 0x66, 0x3a, - 0x8c, 0x6a, 0x72, 0xe8, 0x0b, 0x9c, 0x9e, 0x4d, 0x8c, 0xc0, 0x0c, 0x42, 0xe6, 0xaf, 0xc2, 0x9a, - 0x5a, 0x84, 0x9d, 0x30, 0x7e, 0x28, 0x10, 0xe7, 0x19, 0x28, 0x6f, 0xe0, 0x70, 0x9a, 0x52, 0x54, - 0x8b, 0x4b, 0xe8, 0x77, 0x38, 0x38, 0x9b, 0x5d, 0x24, 0x31, 0x14, 0x65, 0xfd, 0x1d, 0x1c, 0x53, - 0x53, 0x0a, 0x9c, 0xe6, 0xd6, 0x68, 0x2c, 0x2f, 0x94, 0xd2, 0xec, 0x08, 0xd9, 0x1f, 0xda, 0xee, - 0x80, 0xa5, 0xd4, 0x10, 0xe3, 0x24, 0x12, 0x8a, 0xef, 0x7b, 0x3e, 0xcb, 0xd4, 0x6a, 0x90, 0x45, - 0x1d, 0x45, 0x23, 0xe9, 0x9a, 0x23, 0xa1, 0x47, 0x9a, 0x9e, 0x6b, 0xd7, 0x60, 0x63, 0x6e, 0x3f, - 0xae, 0xfd, 0xf3, 0xbc, 0xd2, 0x10, 0xa4, 0x20, 0x5f, 0x50, 0x53, 0x90, 0x9b, 0xf7, 0x52, 0x36, - 0x06, 0xb9, 0x4c, 0xdb, 0x98, 0x0f, 0x20, 0x87, 0x1d, 0x0b, 0x4d, 0xcc, 0x12, 0xe4, 0xfb, 0x88, - 0x6e, 0x28, 0x2a, 0x8c, 0x60, 0xfa, 0x43, 0xd1, 0x3f, 0x15, 0x96, 0xb6, 0xf5, 0x61, 0x13, 0x95, - 0xa6, 0x9f, 0x70, 0xcf, 0x55, 0x83, 0x54, 0xa2, 0xef, 0xb9, 0xad, 0x91, 0xf7, 0x3d, 0x9b, 0xe6, - 0x15, 0x55, 0x22, 0x04, 0x84, 0x6f, 0xdb, 0xa8, 0x23, 0x7a, 0xda, 0x62, 0x40, 0xad, 0x05, 0x39, - 0xfa, 0x36, 0xae, 0x04, 0x25, 0xb3, 0xca, 0x34, 0xbc, 0xba, 0x9c, 0xcc, 0x5a, 0xe4, 0xda, 0x8f, - 0xd3, 0x90, 0xc5, 0x36, 0xbf, 0x0f, 0x39, 0x1f, 0xe3, 0x30, 0x1a, 0xce, 0xcb, 0x62, 0x36, 0x85, - 0xc2, 0xbf, 0xa5, 0x55, 0x31, 0xbd, 0x84, 0xb2, 0x44, 0x5f, 0x4c, 0xaa, 0xe5, 0x75, 0xc8, 0x8d, - 0x4d, 0xdf, 0x1c, 0xe9, 0x75, 0xa2, 0x1a, 0xf5, 0x1f, 0xa6, 0x20, 0x8b, 0x48, 0x7c, 0x03, 0x2a, - 0x5d, 0xe9, 0xdb, 0xa7, 0x42, 0x0e, 0x7d, 0x6f, 0x32, 0x18, 0x2a, 0x4d, 0x7a, 0x2c, 0x2e, 0x94, - 0xbd, 0x51, 0x06, 0x41, 0x9a, 0x8e, 0xdd, 0x67, 0x69, 0xd4, 0xaa, 0x2d, 0xcf, 0xb1, 0x58, 0x86, - 0xaf, 0x43, 0xf9, 0x89, 0x6b, 0x09, 0x3f, 0xe8, 0x7b, 0xbe, 0xb0, 0x58, 0x56, 0xaf, 0xee, 0x53, - 0x96, 0xa3, 0xbd, 0x4c, 0x9c, 0x4b, 0x8a, 0x85, 0x58, 0x9e, 0x5f, 0x83, 0xf5, 0xad, 0xe9, 0x00, - 0x89, 0x15, 0xd0, 0x26, 0xed, 0x0b, 0x17, 0x95, 0x8c, 0x15, 0x95, 0x12, 0x7b, 0xdf, 0xb3, 0x59, - 0x09, 0x3f, 0xa6, 0xd6, 0x09, 0x83, 0xfa, 0xbf, 0x4c, 0x85, 0x96, 0xa3, 0x02, 0xa5, 0x43, 0xd3, - 0x37, 0x07, 0xbe, 0x39, 0x46, 0xf9, 0xca, 0x50, 0x50, 0x1b, 0xe7, 0x9b, 0xca, 0xba, 0xa9, 0xc6, - 0x43, 0x65, 0x1b, 0x55, 0xe3, 0x2d, 0x96, 0x89, 0x1b, 0x6f, 0xb3, 0x2c, 0x7e, 0xe3, 0x3b, 0x13, - 0x4f, 0x0a, 0x96, 0x23, 0x5b, 0xe7, 0x59, 0x82, 0xe5, 0x11, 0xd8, 0x43, 0x8b, 0xc2, 0x0a, 0xd8, - 0xe7, 0x26, 0xea, 0xcf, 0xb1, 0x77, 0xce, 0x8a, 0x28, 0x06, 0x0e, 0xa3, 0xb0, 0x58, 0x09, 0xdf, - 0x1c, 0x4c, 0x46, 0xc7, 0x02, 0xbb, 0x09, 0xf8, 0xa6, 0xe7, 0x0d, 0x06, 0x8e, 0x60, 0x65, 0x1c, - 0x83, 0x84, 0xf1, 0x65, 0xab, 0x64, 0x69, 0x4d, 0xc7, 0xf1, 0x26, 0x92, 0x55, 0x6a, 0x7f, 0x98, - 0x81, 0x2c, 0x46, 0x37, 0xb8, 0x76, 0x86, 0x68, 0x67, 0xf4, 0xda, 0xc1, 0xe7, 0x68, 0x05, 0xa6, - 0xe3, 0x15, 0xc8, 0xdf, 0xd7, 0x33, 0x9d, 0x59, 0xc2, 0xca, 0x22, 0xe3, 0xe4, 0x24, 0x73, 0xc8, - 0x8e, 0xec, 0x91, 0xd0, 0xb6, 0x8e, 0x9e, 0x11, 0x16, 0xe0, 0x7e, 0x9c, 0xa3, 0xe4, 0x09, 0x3d, - 0xe3, 0xaa, 0x31, 0x71, 0x5b, 0x68, 0x48, 0x5a, 0x03, 0x19, 0x23, 0x6c, 0x2e, 0xb0, 0x5e, 0xa5, - 0x85, 0xd6, 0xeb, 0x83, 0xd0, 0x7a, 0x15, 0x96, 0x58, 0xf5, 0x24, 0x66, 0xd2, 0x72, 0xc5, 0x46, - 0xa3, 0xb8, 0x3c, 0x79, 0x62, 0x33, 0xd9, 0xd6, 0x5a, 0x1b, 0x6f, 0x74, 0x45, 0x35, 0xca, 0x2c, - 0x85, 0xb3, 0x49, 0xcb, 0x55, 0xd9, 0xbc, 0xa7, 0xb6, 0x25, 0x3c, 0x96, 0xa1, 0x8d, 0x70, 0x62, - 0xd9, 0x1e, 0xcb, 0xa2, 0xe7, 0x75, 0xb8, 0xbd, 0xc3, 0x72, 0xf5, 0x57, 0x13, 0x5b, 0x52, 0x63, - 0x22, 0x3d, 0xc5, 0x86, 0xd4, 0x37, 0xa5, 0xb4, 0xf1, 0x58, 0x58, 0x2c, 0x5d, 0xff, 0xfa, 0x02, - 0x33, 0x5b, 0x81, 0xd2, 0x93, 0xb1, 0xe3, 0x99, 0xd6, 0x15, 0x76, 0x76, 0x15, 0x20, 0x8e, 0xaa, - 0x6b, 0xff, 0xa6, 0x1e, 0x6f, 0xe7, 0xe8, 0x8b, 0x06, 0xde, 0xc4, 0xef, 0x0b, 0x32, 0x21, 0x25, - 0x43, 0xb7, 0xf8, 0xb7, 0x21, 0x87, 0xef, 0xc3, 0x34, 0xce, 0xfd, 0xa5, 0x62, 0xb9, 0xcd, 0xa7, - 0xb6, 0x78, 0x6e, 0x28, 0x42, 0x7e, 0x07, 0xc0, 0xec, 0x4b, 0xfb, 0x4c, 0x20, 0x50, 0x2f, 0xf6, - 0x04, 0x84, 0xbf, 0x93, 0x74, 0x5f, 0xae, 0xce, 0x43, 0x26, 0xfc, 0x1a, 0x6e, 0x40, 0x19, 0x97, - 0xee, 0xb8, 0xe3, 0xe3, 0x6a, 0xaf, 0xae, 0x12, 0xe1, 0x1b, 0xcb, 0x89, 0xf7, 0x28, 0x22, 0x34, - 0x92, 0x4c, 0xf8, 0x13, 0x58, 0x55, 0x39, 0x35, 0xcd, 0xb4, 0x42, 0x4c, 0xdf, 0x5c, 0x8e, 0x69, - 0x27, 0xa6, 0x34, 0xa6, 0xd8, 0xcc, 0xa7, 0x25, 0x73, 0x2f, 0x9d, 0x96, 0x7c, 0x15, 0xd6, 0x7a, - 0xd3, 0xab, 0x40, 0x6d, 0x15, 0x33, 0x50, 0x5e, 0x87, 0x55, 0x3b, 0x88, 0xb3, 0xa2, 0x94, 0x23, - 0x29, 0x1a, 0x53, 0xb0, 0xda, 0x7f, 0xc8, 0x43, 0x96, 0x46, 0x7e, 0x36, 0xc7, 0xd5, 0x9c, 0x32, - 0xe9, 0x0f, 0x96, 0x9f, 0xea, 0x99, 0x15, 0x4f, 0x16, 0x24, 0x93, 0xb0, 0x20, 0xdf, 0x86, 0x5c, - 0xe0, 0xf9, 0x32, 0x9c, 0xde, 0x25, 0x95, 0xa8, 0xeb, 0xf9, 0xd2, 0x50, 0x84, 0x7c, 0x07, 0x0a, - 0x27, 0xb6, 0x23, 0x71, 0x52, 0xd4, 0xe0, 0xbd, 0xbe, 0x1c, 0x8f, 0x1d, 0x22, 0x32, 0x42, 0x62, - 0xbe, 0x97, 0x54, 0xb6, 0x3c, 0x71, 0xda, 0x5c, 0x8e, 0xd3, 0x22, 0x1d, 0xbc, 0x0f, 0xac, 0xef, - 0x9d, 0x09, 0xdf, 0x48, 0x24, 0x26, 0xd5, 0x26, 0x3d, 0x07, 0xe7, 0x35, 0x28, 0x0e, 0x6d, 0x4b, - 0xa0, 0x9f, 0x43, 0x36, 0xa6, 0x68, 0x44, 0x6d, 0xfe, 0x18, 0x8a, 0x14, 0x1f, 0xa0, 0x55, 0x2c, - 0xbd, 0xf4, 0xe0, 0xab, 0x50, 0x25, 0x64, 0x80, 0x1f, 0xa2, 0x8f, 0xef, 0xd8, 0x92, 0xf2, 0xd3, - 0x45, 0x23, 0x6a, 0xa3, 0xc0, 0xa4, 0xef, 0x49, 0x81, 0xcb, 0x4a, 0xe0, 0x59, 0x38, 0x7f, 0x1b, - 0x6e, 0x10, 0x6c, 0x66, 0x93, 0xc4, 0xa5, 0x86, 0x4c, 0x17, 0xbf, 0x44, 0x87, 0x65, 0x6c, 0x0e, - 0xc4, 0x9e, 0x3d, 0xb2, 0x65, 0xb5, 0x72, 0x37, 0x75, 0x2f, 0x67, 0xc4, 0x00, 0xfe, 0x3a, 0x6c, - 0x58, 0xe2, 0xc4, 0x9c, 0x38, 0xb2, 0x27, 0x46, 0x63, 0xc7, 0x94, 0xa2, 0x6d, 0x91, 0x8e, 0x96, - 0x8c, 0xf9, 0x17, 0xfc, 0x0d, 0xb8, 0xa6, 0x81, 0x9d, 0xe8, 0x54, 0xa1, 0x6d, 0x51, 0xfa, 0xae, - 0x64, 0x2c, 0x7a, 0x55, 0xdf, 0xd7, 0x66, 0x18, 0x37, 0x50, 0x8c, 0x53, 0x43, 0x03, 0x1a, 0x48, - 0xb5, 0x23, 0x3f, 0x32, 0x1d, 0x47, 0xf8, 0x17, 0x2a, 0xc8, 0x7d, 0x6c, 0xba, 0xc7, 0xa6, 0xcb, - 0x32, 0xb4, 0xc7, 0x9a, 0x8e, 0x70, 0x2d, 0xd3, 0x57, 0x3b, 0xf2, 0x23, 0xda, 0xd0, 0x73, 0xf5, - 0x7b, 0x90, 0xa5, 0x21, 0x2d, 0x41, 0x4e, 0x45, 0x49, 0x14, 0x31, 0xeb, 0x08, 0x89, 0x2c, 0xf2, - 0x1e, 0x2e, 0x3f, 0x96, 0xae, 0xfd, 0xef, 0x1c, 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, 0xc6, 0xcb, 0x69, 0xf5, 0x66, 0x2f, - 0x62, 0x60, 0x24, 0x98, 0x21, 0x6b, 0xfc, 0x9a, 0x66, 0x5d, 0xf8, 0x4c, 0xac, 0xb7, 0x23, 0x06, - 0x46, 0x82, 0x19, 0xef, 0x41, 0xe1, 0xc4, 0xf3, 0x47, 0x13, 0xc7, 0xd4, 0x7b, 0xee, 0xfb, 0x2f, - 0xc9, 0x77, 0x47, 0x51, 0x93, 0xed, 0x09, 0x59, 0xd5, 0x7f, 0x11, 0x20, 0xfe, 0x1e, 0xbf, 0x09, - 0x7c, 0xdf, 0x73, 0xe5, 0xb0, 0x71, 0x7c, 0xec, 0x6f, 0x89, 0x13, 0xcf, 0x17, 0xdb, 0x26, 0x6e, - 0x96, 0x37, 0x60, 0x23, 0x82, 0x37, 0x4e, 0xa4, 0xf0, 0x11, 0x4c, 0x13, 0xda, 0x1d, 0x7a, 0xbe, - 0x54, 0x1e, 0x1b, 0x3d, 0x3e, 0xe9, 0xb2, 0x0c, 0x6e, 0xd0, 0xed, 0x6e, 0x87, 0x65, 0xeb, 0xf7, - 0x00, 0xe2, 0x81, 0xa2, 0xc8, 0x86, 0x9e, 0xde, 0x7c, 0xa8, 0xe3, 0x1c, 0x6a, 0x3d, 0x7c, 0x9b, - 0xa5, 0xea, 0x3f, 0x4b, 0x41, 0x39, 0x21, 0xe0, 0x74, 0x04, 0xdc, 0xf4, 0x26, 0xae, 0x54, 0x21, - 0x37, 0x3d, 0x3e, 0x35, 0x9d, 0x09, 0x6e, 0xd5, 0x1b, 0x50, 0xa1, 0xf6, 0xb6, 0x1d, 0x48, 0xdb, - 0xed, 0x4b, 0x96, 0x89, 0x50, 0xd4, 0x36, 0x9f, 0x8d, 0x50, 0x0e, 0x3c, 0x0d, 0xca, 0x71, 0x06, - 0xab, 0x87, 0xc2, 0xef, 0x8b, 0x10, 0x89, 0x5c, 0x5b, 0x0d, 0x89, 0xd0, 0x94, 0x6b, 0x6b, 0xca, - 0x61, 0x77, 0x32, 0x62, 0x45, 0x74, 0x11, 0xb1, 0xd1, 0x38, 0x13, 0x3e, 0x7a, 0x26, 0x25, 0xfc, - 0x0e, 0x02, 0x50, 0xb7, 0x4d, 0x97, 0x41, 0x88, 0xbd, 0x6f, 0xbb, 0xac, 0x1c, 0x35, 0xcc, 0x73, - 0xb6, 0x8a, 0xf2, 0x53, 0x20, 0xc0, 0x2a, 0xb5, 0xff, 0x96, 0x81, 0x2c, 0x5a, 0x69, 0x8c, 0x5c, - 0x93, 0x26, 0x45, 0x69, 0x7e, 0x12, 0xf4, 0xd9, 0xf6, 0x16, 0xe4, 0x9d, 0xdc, 0x5b, 0xde, 0x83, - 0x72, 0x7f, 0x12, 0x48, 0x6f, 0x44, 0x1b, 0xab, 0x3e, 0xbb, 0xba, 0x39, 0x97, 0x03, 0xa2, 0xe1, - 0x34, 0x92, 0xa8, 0xfc, 0x1d, 0xc8, 0x9f, 0x28, 0x1d, 0x56, 0x59, 0xa0, 0x2f, 0x5c, 0xb2, 0xf7, - 0x6a, 0x3d, 0xd5, 0xc8, 0xd8, 0x2f, 0x7b, 0x6e, 0xfd, 0x25, 0x41, 0x7a, 0x0f, 0xcd, 0x47, 0x7b, - 0xe8, 0x2f, 0xc2, 0x9a, 0xc0, 0x01, 0x3f, 0x74, 0xcc, 0xbe, 0x18, 0x09, 0x37, 0x5c, 0x34, 0x6f, - 0xbf, 0x44, 0x8f, 0x69, 0xc6, 0xa8, 0xdb, 0x33, 0xbc, 0xd0, 0x8e, 0xb8, 0x1e, 0x6e, 0xe5, 0x61, - 0x98, 0x5e, 0x34, 0x62, 0x40, 0xfd, 0xcb, 0xda, 0xfa, 0x15, 0x20, 0xd3, 0x08, 0xfa, 0x3a, 0x9f, - 0x21, 0x82, 0xbe, 0x0a, 0x96, 0x9a, 0x34, 0x1c, 0x2c, 0x5d, 0x7f, 0x13, 0x4a, 0xd1, 0x17, 0x50, - 0x79, 0x0e, 0x3c, 0xd9, 0x1d, 0x8b, 0xbe, 0x7d, 0x62, 0x0b, 0x4b, 0xe9, 0x67, 0x57, 0x9a, 0xbe, - 0x54, 0x29, 0xc1, 0x96, 0x6b, 0xb1, 0x74, 0xed, 0x77, 0x8a, 0x90, 0x57, 0x5b, 0xa9, 0xee, 0x70, - 0x29, 0xea, 0xf0, 0x77, 0xa0, 0xe8, 0x8d, 0x85, 0x6f, 0x4a, 0xcf, 0xd7, 0x79, 0x98, 0x77, 0x5e, - 0x66, 0x6b, 0xde, 0xec, 0x68, 0x62, 0x23, 0x62, 0x33, 0xab, 0x4d, 0xe9, 0x79, 0x6d, 0xba, 0x0f, - 0x2c, 0xdc, 0x85, 0x0f, 0x7d, 0xa4, 0x93, 0x17, 0x3a, 0xaa, 0x9e, 0x83, 0xf3, 0x1e, 0x94, 0xfa, - 0x9e, 0x6b, 0xd9, 0x51, 0x4e, 0x66, 0xed, 0xe1, 0xd7, 0x5f, 0x4a, 0xc2, 0x66, 0x48, 0x6d, 0xc4, - 0x8c, 0xf8, 0xeb, 0x90, 0x3b, 0x43, 0x35, 0x23, 0x7d, 0xba, 0x5c, 0x09, 0x15, 0x12, 0xff, 0x04, - 0xca, 0xdf, 0x9f, 0xd8, 0xfd, 0xd3, 0x4e, 0x32, 0xe7, 0xf7, 0xde, 0x4b, 0x49, 0xf1, 0x9d, 0x98, - 0xde, 0x48, 0x32, 0x4b, 0xa8, 0x76, 0xe1, 0x8f, 0xa0, 0xda, 0xc5, 0x79, 0xd5, 0x36, 0xa0, 0xe2, - 0x8a, 0x40, 0x0a, 0x6b, 0x47, 0x7b, 0x5e, 0xf0, 0x19, 0x3c, 0xaf, 0x69, 0x16, 0xf5, 0x2f, 0x41, - 0x31, 0x9c, 0x70, 0x9e, 0x87, 0xf4, 0x01, 0x86, 0x38, 0x79, 0x48, 0x77, 0x7c, 0xa5, 0x6d, 0x0d, - 0xd4, 0xb6, 0xfa, 0xef, 0xa7, 0xa0, 0x14, 0x0d, 0xfa, 0xb4, 0xe5, 0x6c, 0x7d, 0x7f, 0x62, 0x3a, - 0x2c, 0x45, 0xc1, 0xaf, 0x27, 0x55, 0x8b, 0x8c, 0xf5, 0x23, 0x3a, 0x7a, 0xf7, 0x59, 0x86, 0x36, - 0x7c, 0x11, 0x04, 0x2c, 0xcb, 0x39, 0xac, 0x69, 0x70, 0xc7, 0x57, 0xa8, 0x39, 0x34, 0x7c, 0xf8, - 0x36, 0x04, 0xe4, 0x95, 0x7f, 0x70, 0x2a, 0x94, 0x81, 0x3c, 0xf0, 0x24, 0x35, 0x8a, 0x28, 0x54, - 0xdb, 0x65, 0x25, 0xfc, 0xe6, 0x81, 0x27, 0xdb, 0x68, 0x12, 0xa3, 0x60, 0xab, 0x1c, 0x7e, 0x9e, - 0x5a, 0x64, 0x11, 0x1b, 0x8e, 0xd3, 0x76, 0x59, 0x45, 0xbf, 0x50, 0xad, 0x35, 0xe4, 0xd8, 0x3a, - 0x37, 0xfb, 0x48, 0xbe, 0x8e, 0x16, 0x16, 0x69, 0x74, 0x9b, 0xe1, 0x92, 0x6c, 0x9d, 0xdb, 0x81, - 0x0c, 0xd8, 0x46, 0xfd, 0xdf, 0xa7, 0xa0, 0x9c, 0x98, 0x60, 0x0c, 0xe6, 0x08, 0x11, 0xb7, 0x32, - 0x15, 0xdb, 0x7d, 0x8c, 0xc3, 0xe8, 0x5b, 0xe1, 0x36, 0xd5, 0xf3, 0xf0, 0x31, 0x8d, 0xdf, 0xeb, - 0x79, 0x23, 0xcf, 0xf7, 0xbd, 0xe7, 0xca, 0x91, 0xd9, 0x33, 0x03, 0xf9, 0x4c, 0x88, 0x53, 0x96, - 0xc5, 0xae, 0x36, 0x27, 0xbe, 0x2f, 0x5c, 0x05, 0xc8, 0x91, 0x70, 0xe2, 0x5c, 0xb5, 0xf2, 0xc8, - 0x14, 0x91, 0x69, 0x1f, 0x64, 0x05, 0x34, 0x04, 0x1a, 0x5b, 0x41, 0x8a, 0x88, 0x80, 0xe8, 0xaa, - 0x59, 0xc2, 0x4d, 0x45, 0xe5, 0x1b, 0x3a, 0x27, 0xdb, 0xe6, 0x45, 0xd0, 0x18, 0x78, 0x0c, 0x66, - 0x81, 0x07, 0xde, 0x73, 0x56, 0xae, 0x4d, 0x00, 0xe2, 0x08, 0x0b, 0x23, 0x4b, 0x54, 0x88, 0xe8, - 0x44, 0x40, 0xb7, 0x78, 0x07, 0x00, 0x9f, 0x08, 0x33, 0x0c, 0x2f, 0x5f, 0xc2, 0xed, 0x25, 0x3a, - 0x23, 0xc1, 0xa2, 0xf6, 0x17, 0xa0, 0x14, 0xbd, 0xe0, 0x55, 0x28, 0x90, 0x83, 0x1a, 0x7d, 0x36, - 0x6c, 0xa2, 0xb7, 0x65, 0xbb, 0x96, 0x38, 0x27, 0xbb, 0x92, 0x33, 0x54, 0x03, 0xa5, 0x1c, 0xda, - 0x96, 0x25, 0xdc, 0xf0, 0xdc, 0x46, 0xb5, 0x16, 0x9d, 0xae, 0x67, 0x17, 0x9e, 0xae, 0xd7, 0x7e, - 0x09, 0xca, 0x89, 0x10, 0xf0, 0xd2, 0x6e, 0x27, 0x04, 0x4b, 0x4f, 0x0b, 0x76, 0x1b, 0x4a, 0x61, - 0x45, 0x47, 0x40, 0x7b, 0x5b, 0xc9, 0x88, 0x01, 0xb5, 0x7f, 0x9a, 0x46, 0xbf, 0x14, 0xbb, 0x36, - 0x1b, 0xb6, 0xed, 0x40, 0x3e, 0x90, 0xa6, 0x9c, 0x84, 0xa5, 0x09, 0x4b, 0x2e, 0xd0, 0x2e, 0xd1, - 0xec, 0xae, 0x18, 0x9a, 0x9a, 0x7f, 0x00, 0x19, 0x69, 0x0e, 0x74, 0xda, 0xf3, 0x2b, 0xcb, 0x31, - 0xe9, 0x99, 0x83, 0xdd, 0x15, 0x03, 0xe9, 0xf8, 0x1e, 0x14, 0xfb, 0x3a, 0x53, 0xa5, 0x8d, 0xe2, - 0x92, 0x91, 0x55, 0x98, 0xdf, 0xda, 0x5d, 0x31, 0x22, 0x0e, 0xfc, 0xdb, 0x90, 0x45, 0x5f, 0x51, - 0x57, 0x70, 0x2c, 0x19, 0x31, 0xe2, 0x72, 0xd9, 0x5d, 0x31, 0x88, 0x72, 0xab, 0x00, 0x39, 0xb2, - 0xc1, 0xb5, 0x2a, 0xe4, 0x55, 0x5f, 0x67, 0x47, 0xae, 0x76, 0x0b, 0x32, 0x3d, 0x73, 0x80, 0xfe, - 0xba, 0x6d, 0x05, 0x3a, 0xf1, 0x81, 0x8f, 0xb5, 0x57, 0xe2, 0xac, 0x5b, 0x32, 0xa1, 0x9b, 0x9a, - 0x4a, 0xe8, 0xd6, 0xf2, 0x90, 0xc5, 0x2f, 0xd6, 0x6e, 0x5f, 0xe5, 0xfb, 0xd7, 0xfe, 0x7e, 0x06, - 0xc3, 0x04, 0x29, 0xce, 0x17, 0x26, 0xab, 0x3f, 0x82, 0xd2, 0xd8, 0xf7, 0xfa, 0x22, 0x08, 0x3c, - 0x5f, 0x3b, 0x47, 0xaf, 0xbf, 0xf8, 0x20, 0x79, 0xf3, 0x30, 0xa4, 0x31, 0x62, 0xf2, 0xfa, 0xbf, - 0x4a, 0x43, 0x29, 0x7a, 0xa1, 0xa2, 0x13, 0x29, 0xce, 0x55, 0x62, 0x72, 0x5f, 0xf8, 0x23, 0xd3, - 0xb6, 0x94, 0xf5, 0x68, 0x0e, 0xcd, 0xd0, 0xc9, 0xfd, 0xd8, 0x9b, 0xc8, 0xc9, 0xb1, 0x50, 0x09, - 0xa9, 0xa7, 0xf6, 0x48, 0x78, 0x2c, 0x4b, 0x47, 0x41, 0xa8, 0xd8, 0x7d, 0xc7, 0x9b, 0x58, 0x2c, - 0x87, 0xed, 0x47, 0xb4, 0xbd, 0xed, 0x9b, 0xe3, 0x40, 0xd9, 0xcc, 0x7d, 0xdb, 0xf7, 0x58, 0x01, - 0x89, 0x76, 0xec, 0xc1, 0xc8, 0x64, 0x45, 0x64, 0xd6, 0x7b, 0x6e, 0x4b, 0x34, 0xc2, 0x25, 0x74, - 0x53, 0x3b, 0x63, 0xe1, 0x76, 0xa5, 0x2f, 0x84, 0xdc, 0x37, 0xc7, 0x2a, 0x43, 0x69, 0x08, 0xcb, - 0xb2, 0xa5, 0xb2, 0x9f, 0x3b, 0x66, 0x5f, 0x1c, 0x7b, 0xde, 0x29, 0x5b, 0x45, 0x43, 0xd3, 0x76, - 0x03, 0x69, 0x0e, 0x7c, 0x73, 0xa4, 0x6c, 0x68, 0x4f, 0x38, 0x82, 0x5a, 0x6b, 0xf4, 0x6d, 0x5b, - 0x0e, 0x27, 0xc7, 0x8f, 0x30, 0x8a, 0x5b, 0x57, 0xa7, 0x46, 0x96, 0x18, 0x0b, 0xb4, 0xa1, 0xab, - 0x50, 0xdc, 0xb2, 0x1d, 0xfb, 0xd8, 0x76, 0x6c, 0xb6, 0x81, 0xa8, 0xad, 0xf3, 0xbe, 0xe9, 0xd8, - 0x96, 0x6f, 0x3e, 0x67, 0x1c, 0x85, 0x7b, 0xec, 0x7b, 0xa7, 0x36, 0xbb, 0x86, 0x88, 0x14, 0xd4, - 0x9d, 0xd9, 0x9f, 0xb2, 0xeb, 0x74, 0xf2, 0x75, 0x2a, 0x64, 0x7f, 0x78, 0x62, 0x1e, 0xb3, 0x1b, - 0x71, 0x82, 0xee, 0x66, 0x6d, 0x03, 0xd6, 0x67, 0xce, 0xd8, 0x6b, 0x05, 0x1d, 0x4b, 0xd6, 0x2a, - 0x50, 0x4e, 0x1c, 0x7e, 0xd6, 0x5e, 0x85, 0x62, 0x78, 0x34, 0x8a, 0x31, 0xb7, 0x1d, 0xa8, 0xa4, - 0xae, 0x56, 0x92, 0xa8, 0x5d, 0xfb, 0xdd, 0x14, 0xe4, 0xd5, 0xb9, 0x34, 0xdf, 0x8a, 0xea, 0x48, - 0x52, 0x4b, 0x9c, 0x45, 0x2a, 0x22, 0x7d, 0x92, 0x1b, 0x15, 0x93, 0x5c, 0x87, 0x9c, 0x43, 0xc1, - 0xb5, 0x36, 0x5f, 0xd4, 0x48, 0x58, 0x9b, 0x4c, 0xd2, 0xda, 0xd4, 0x1b, 0xd1, 0xe9, 0x71, 0x98, - 0x48, 0x24, 0xaf, 0xb0, 0xe7, 0x0b, 0xa1, 0x92, 0x84, 0x14, 0x1b, 0xa7, 0x69, 0xaf, 0xf0, 0x46, - 0x63, 0xb3, 0x2f, 0x09, 0x40, 0xbb, 0x28, 0x1a, 0x53, 0x96, 0x45, 0x2d, 0x6f, 0x0e, 0x4d, 0x59, - 0x3f, 0x81, 0xe2, 0xa1, 0x17, 0xcc, 0xee, 0xc9, 0x05, 0xc8, 0xf4, 0xbc, 0xb1, 0xf2, 0x30, 0xb7, - 0x3c, 0x49, 0x1e, 0xa6, 0xda, 0x82, 0x4f, 0xa4, 0x52, 0x2a, 0xc3, 0x1e, 0x0c, 0xa5, 0x8a, 0xab, - 0xdb, 0xae, 0x2b, 0x7c, 0x96, 0xc3, 0x39, 0x34, 0xc4, 0x18, 0xbd, 0x5a, 0x96, 0xc7, 0x59, 0x23, - 0xf8, 0x8e, 0xed, 0x07, 0x92, 0x15, 0xea, 0x6d, 0xdc, 0x4d, 0xed, 0x01, 0x6d, 0x82, 0xf4, 0x40, - 0xac, 0x56, 0x50, 0x44, 0x6a, 0x36, 0x85, 0x8b, 0x3a, 0x46, 0xd1, 0x93, 0x2a, 0x35, 0xa2, 0x0f, - 0xa4, 0x71, 0x07, 0xa3, 0xf6, 0x47, 0x93, 0x40, 0xda, 0x27, 0x17, 0x2c, 0x53, 0x7f, 0x06, 0x95, - 0xa9, 0xa2, 0x24, 0x7e, 0x1d, 0xd8, 0x14, 0x00, 0x45, 0x5f, 0xe1, 0xb7, 0xe0, 0xda, 0x14, 0x74, - 0xdf, 0xb6, 0x2c, 0xca, 0xdc, 0xce, 0xbe, 0x08, 0x3b, 0xb8, 0x55, 0x82, 0x42, 0x5f, 0xcd, 0x52, - 0xfd, 0x10, 0x2a, 0x34, 0x6d, 0xfb, 0x42, 0x9a, 0x1d, 0xd7, 0xb9, 0xf8, 0x23, 0x57, 0x8e, 0xd5, - 0xbf, 0xaa, 0x03, 0x2c, 0xb4, 0x17, 0x27, 0xbe, 0x37, 0x22, 0x5e, 0x39, 0x83, 0x9e, 0x91, 0xbb, - 0xf4, 0xf4, 0xdc, 0xa7, 0xa5, 0x57, 0xff, 0xf5, 0x12, 0x14, 0x1a, 0xfd, 0x3e, 0x86, 0x84, 0x73, - 0x5f, 0x7e, 0x07, 0xf2, 0x7d, 0xcf, 0x3d, 0xb1, 0x07, 0xda, 0x1e, 0xcf, 0x7a, 0x86, 0x9a, 0x0e, - 0x15, 0xee, 0xc4, 0x1e, 0x18, 0x1a, 0x19, 0xc9, 0xf4, 0x7e, 0x92, 0xbb, 0x92, 0x4c, 0x19, 0xd5, - 0x68, 0xfb, 0x78, 0x00, 0x59, 0xdb, 0x3d, 0xf1, 0x74, 0x99, 0xe7, 0xe7, 0x2f, 0x21, 0xa2, 0x5a, - 0x47, 0x42, 0xac, 0xfd, 0x97, 0x14, 0xe4, 0xd5, 0xa7, 0xf9, 0xab, 0xb0, 0x26, 0x5c, 0x5c, 0x4c, - 0xa1, 0x29, 0xd7, 0xab, 0x68, 0x06, 0x8a, 0x4e, 0xab, 0x86, 0x88, 0xe3, 0xc9, 0x40, 0x67, 0x52, - 0x92, 0x20, 0xfe, 0x1e, 0xdc, 0x52, 0xcd, 0x43, 0x5f, 0xf8, 0xc2, 0x11, 0x66, 0x20, 0x9a, 0x43, - 0xd3, 0x75, 0x85, 0xa3, 0x37, 0xf6, 0xcb, 0x5e, 0xf3, 0x3a, 0xac, 0xaa, 0x57, 0xdd, 0xb1, 0xd9, - 0x17, 0x81, 0x3e, 0xbd, 0x9b, 0x82, 0xf1, 0xaf, 0x41, 0x8e, 0xaa, 0x60, 0xab, 0xd6, 0xd5, 0x53, - 0xa9, 0xb0, 0x6a, 0x5e, 0xb4, 0xf3, 0x34, 0x00, 0xd4, 0x30, 0x61, 0xd0, 0xa5, 0x57, 0xff, 0x17, - 0xaf, 0x1c, 0x57, 0x8a, 0xff, 0x12, 0x44, 0x28, 0x9f, 0x25, 0x1c, 0x41, 0xe5, 0x8a, 0xb8, 0x33, - 0xa6, 0xe9, 0x9c, 0x64, 0x0a, 0x56, 0xfb, 0x27, 0x59, 0xc8, 0xe2, 0x08, 0x23, 0xf2, 0xd0, 0x1b, - 0x89, 0x28, 0x5b, 0xac, 0x5c, 0x8d, 0x29, 0x18, 0xba, 0x36, 0xa6, 0x3a, 0xb0, 0x8f, 0xd0, 0x94, - 0xf1, 0x98, 0x05, 0x23, 0xe6, 0xd8, 0xf7, 0x4e, 0x6c, 0x27, 0xc6, 0xd4, 0x4e, 0xd0, 0x0c, 0x98, - 0x7f, 0x1d, 0x6e, 0x8e, 0x4c, 0xff, 0x54, 0x48, 0x5a, 0xdd, 0xcf, 0x3c, 0xff, 0x34, 0xc0, 0x91, - 0x6b, 0x5b, 0x3a, 0xcd, 0x78, 0xc9, 0x5b, 0xfe, 0x3a, 0x6c, 0x3c, 0x0f, 0x9b, 0xd1, 0x37, 0x54, - 0xa2, 0x6f, 0xfe, 0x05, 0x9a, 0x5b, 0x4b, 0x9c, 0xd9, 0xc4, 0xb7, 0xa8, 0x6a, 0x61, 0xc3, 0x36, - 0xaa, 0x92, 0xa9, 0x06, 0xb2, 0xab, 0xbf, 0xac, 0xcf, 0x8b, 0xa6, 0xa1, 0xe8, 0x6d, 0xa9, 0x1a, - 0xa1, 0xa0, 0x6d, 0x51, 0x9e, 0xb4, 0x64, 0xc4, 0x00, 0x54, 0x34, 0xfa, 0xe4, 0x53, 0x65, 0x54, - 0x2b, 0x2a, 0x04, 0x4d, 0x80, 0x10, 0x43, 0x8a, 0xfe, 0x30, 0xfc, 0x88, 0x4a, 0x62, 0x26, 0x41, - 0xfc, 0x0e, 0xc0, 0xc0, 0x94, 0xe2, 0xb9, 0x79, 0xf1, 0xc4, 0x77, 0xaa, 0x42, 0x1d, 0x7c, 0xc4, - 0x10, 0x0c, 0x62, 0x1d, 0xaf, 0x6f, 0x3a, 0x5d, 0xe9, 0xf9, 0xe6, 0x40, 0x1c, 0x9a, 0x72, 0x58, - 0x1d, 0xa8, 0x20, 0x76, 0x16, 0x8e, 0x3d, 0x96, 0xf6, 0x48, 0x7c, 0xe2, 0xb9, 0xa2, 0x3a, 0x54, - 0x3d, 0x0e, 0xdb, 0x28, 0x89, 0xe9, 0x9a, 0xce, 0x85, 0xb4, 0xfb, 0xd8, 0x17, 0x5b, 0x49, 0x92, - 0x00, 0x51, 0xda, 0x40, 0x48, 0x1c, 0xc7, 0xb6, 0x55, 0xfd, 0x9e, 0xea, 0x6b, 0x04, 0xa8, 0x77, - 0x00, 0x62, 0x95, 0x43, 0x3b, 0xde, 0xa0, 0xc3, 0x19, 0xb6, 0xa2, 0xf2, 0x48, 0xae, 0x65, 0xbb, - 0x83, 0x6d, 0xad, 0x65, 0x2c, 0x85, 0x40, 0xca, 0x0f, 0x08, 0x2b, 0x02, 0x92, 0x27, 0x41, 0x2d, - 0x61, 0xb1, 0x4c, 0xfd, 0xff, 0xa6, 0xa0, 0x9c, 0xa8, 0x45, 0xf8, 0x63, 0xac, 0x9f, 0xc0, 0x7d, - 0x16, 0x77, 0x6a, 0x1c, 0x50, 0xa5, 0x81, 0x51, 0x1b, 0x87, 0x5b, 0x97, 0x4a, 0xe0, 0x5b, 0x95, - 0x0d, 0x48, 0x40, 0x3e, 0x53, 0xed, 0x44, 0xfd, 0xa1, 0x4e, 0xa9, 0x94, 0xa1, 0xf0, 0xc4, 0x3d, - 0x75, 0xbd, 0xe7, 0xae, 0xda, 0x40, 0xa9, 0x20, 0x66, 0xea, 0x68, 0x2f, 0xac, 0x59, 0xc9, 0xd4, - 0xff, 0x41, 0x76, 0xa6, 0x76, 0xac, 0x05, 0x79, 0xe5, 0xc7, 0x93, 0x8b, 0x39, 0x5f, 0xec, 0x93, - 0x44, 0xd6, 0xc7, 0x48, 0x09, 0x90, 0xa1, 0x89, 0xd1, 0xc1, 0x8e, 0x2a, 0x2b, 0xd3, 0x0b, 0x8f, - 0xbb, 0xa6, 0x18, 0x85, 0x46, 0x73, 0xaa, 0xb8, 0x38, 0xe2, 0x50, 0xfb, 0x6b, 0x29, 0xb8, 0xbe, - 0x08, 0x25, 0x59, 0x82, 0x9d, 0x9a, 0x2e, 0xc1, 0xee, 0xce, 0x94, 0x34, 0xa7, 0xa9, 0x37, 0x0f, - 0x5e, 0x52, 0x88, 0xe9, 0x02, 0xe7, 0xfa, 0x8f, 0x53, 0xb0, 0x31, 0xd7, 0xe7, 0x84, 0x83, 0x01, - 0x90, 0x57, 0x9a, 0xa5, 0x2a, 0x8e, 0xa2, 0x1a, 0x10, 0x95, 0xc3, 0xa7, 0xad, 0x37, 0x50, 0x87, - 0xea, 0xba, 0x88, 0x5b, 0xf9, 0xaf, 0x38, 0x6b, 0x68, 0xd9, 0x07, 0x42, 0x65, 0x48, 0x95, 0x17, - 0xa4, 0x21, 0x79, 0xe5, 0x63, 0xaa, 0x83, 0x06, 0x56, 0xa0, 0x4a, 0xa6, 0xc9, 0xd8, 0xb1, 0xfb, - 0xd8, 0x2c, 0xf2, 0x1a, 0xdc, 0x54, 0x95, 0xfc, 0x3a, 0x9e, 0x3b, 0xe9, 0x0d, 0x6d, 0x5a, 0x1c, - 0xac, 0x54, 0x37, 0xe0, 0xda, 0x82, 0x3e, 0x91, 0x94, 0x4f, 0xb5, 0xc4, 0x6b, 0x00, 0xdb, 0x4f, - 0x43, 0x39, 0x59, 0x8a, 0x73, 0x58, 0xdb, 0x7e, 0x9a, 0x64, 0xa8, 0xd7, 0xcb, 0x53, 0xb4, 0x24, - 0x01, 0xcb, 0xd4, 0x7f, 0x25, 0x15, 0x56, 0x17, 0xd4, 0xfe, 0x3c, 0x54, 0x94, 0x8c, 0x87, 0xe6, - 0x85, 0xe3, 0x99, 0x16, 0x6f, 0xc1, 0x5a, 0x10, 0x5d, 0x2f, 0x49, 0x6c, 0x1e, 0xb3, 0x9b, 0x72, - 0x77, 0x0a, 0xc9, 0x98, 0x21, 0x0a, 0xc3, 0x92, 0x74, 0x7c, 0x24, 0xc1, 0x29, 0xc0, 0x32, 0x69, - 0x95, 0xad, 0x52, 0xc8, 0x64, 0xd6, 0xbf, 0x06, 0x1b, 0xdd, 0xd8, 0xd0, 0x2a, 0xff, 0x15, 0xf5, - 0x41, 0x59, 0xe9, 0xed, 0x50, 0x1f, 0x74, 0xb3, 0xfe, 0x9f, 0xf2, 0x00, 0xf1, 0xf1, 0xcb, 0x82, - 0x65, 0xbe, 0xa8, 0x9a, 0x60, 0xee, 0x30, 0x34, 0xf3, 0xd2, 0x87, 0xa1, 0xef, 0x45, 0x6e, 0xb4, - 0x4a, 0xe6, 0xce, 0x96, 0x54, 0xc7, 0x32, 0xcd, 0x3a, 0xcf, 0x53, 0xc5, 0x36, 0xb9, 0xd9, 0x62, - 0x9b, 0xbb, 0xf3, 0x95, 0x79, 0x33, 0xf6, 0x27, 0xce, 0x12, 0x14, 0xa6, 0xb2, 0x04, 0x35, 0x28, - 0xfa, 0xc2, 0xb4, 0x3c, 0xd7, 0xb9, 0x08, 0xcf, 0xdc, 0xc2, 0x36, 0x7f, 0x0b, 0x72, 0x92, 0x6e, - 0xc8, 0x14, 0x69, 0xb9, 0xbc, 0x60, 0xe2, 0x14, 0x2e, 0x1a, 0x33, 0x3b, 0xd0, 0xe5, 0x74, 0x6a, - 0x07, 0x2b, 0x1a, 0x09, 0x08, 0xdf, 0x04, 0x6e, 0x63, 0xc8, 0xe4, 0x38, 0xc2, 0xda, 0xba, 0xd8, - 0x56, 0x47, 0x61, 0xb4, 0xc7, 0x16, 0x8d, 0x05, 0x6f, 0xc2, 0xf9, 0x5f, 0x8d, 0xe7, 0x9f, 0x44, - 0x3e, 0xb3, 0x03, 0xec, 0x69, 0x85, 0x5c, 0x89, 0xa8, 0x8d, 0xbb, 0x78, 0xb8, 0x46, 0xd5, 0x58, - 0x92, 0xf6, 0xc6, 0xe7, 0xc9, 0x97, 0xbc, 0xad, 0xff, 0x5e, 0x3a, 0x0a, 0x37, 0x4a, 0x90, 0x3b, - 0x36, 0x03, 0xbb, 0xaf, 0xa2, 0x4f, 0xed, 0x26, 0xa8, 0x90, 0x43, 0x7a, 0x96, 0xc7, 0xd2, 0x18, - 0x39, 0x04, 0x42, 0x1f, 0x71, 0xc4, 0xb7, 0x86, 0x58, 0x16, 0xd7, 0x66, 0x38, 0xdf, 0xaa, 0x2a, - 0x86, 0x48, 0x29, 0x61, 0x65, 0x45, 0xf5, 0x86, 0x14, 0x7a, 0x92, 0xed, 0x67, 0x45, 0xc4, 0x71, - 0x3d, 0x29, 0x54, 0xba, 0x8e, 0xb4, 0x93, 0x01, 0xb2, 0x09, 0xcb, 0xe0, 0x59, 0x19, 0x5d, 0xf9, - 0x90, 0xa9, 0xca, 0xb1, 0x05, 0x14, 0xe8, 0xac, 0xe2, 0xea, 0x9c, 0x7e, 0xc1, 0x2a, 0x28, 0x51, - 0x7c, 0x19, 0x89, 0xad, 0x21, 0x57, 0x93, 0x6a, 0x35, 0xd6, 0xf1, 0xf1, 0x8c, 0x2a, 0x38, 0x18, - 0x7e, 0xd5, 0x42, 0x83, 0xb1, 0x81, 0x92, 0x45, 0xae, 0x01, 0xe3, 0x18, 0xa9, 0x8c, 0x4d, 0x0c, - 0x1b, 0xec, 0xb1, 0xe9, 0x4a, 0x76, 0x0d, 0xbb, 0x3a, 0xb6, 0x4e, 0xd8, 0x75, 0x24, 0xe9, 0x0f, - 0x4d, 0xc9, 0x6e, 0x20, 0x0e, 0x3e, 0x6d, 0x0b, 0x1f, 0xe7, 0x93, 0xdd, 0x44, 0x1c, 0x69, 0x0e, - 0xd8, 0xad, 0xfa, 0x6f, 0xc6, 0x15, 0xbf, 0x6f, 0x44, 0x0e, 0xfd, 0x32, 0x4a, 0x8e, 0x2e, 0xff, - 0xa2, 0x15, 0xd7, 0x82, 0x0d, 0x5f, 0x7c, 0x7f, 0x62, 0x4f, 0xd5, 0xc1, 0x67, 0xae, 0x2e, 0xb4, - 0x98, 0xa7, 0xa8, 0x9f, 0xc1, 0x46, 0xd8, 0x78, 0x66, 0xcb, 0x21, 0xe5, 0x56, 0xf8, 0x5b, 0x89, - 0x42, 0xfd, 0xd4, 0xc2, 0x0b, 0x4e, 0x11, 0xcb, 0xb8, 0x30, 0x3f, 0xca, 0x9d, 0xa7, 0x97, 0xc8, - 0x9d, 0xd7, 0xff, 0x4f, 0x3e, 0x91, 0x5e, 0x51, 0x21, 0x8e, 0x15, 0x85, 0x38, 0xf3, 0x47, 0xad, - 0x71, 0x3a, 0x3c, 0xfd, 0x32, 0xe9, 0xf0, 0x45, 0x65, 0x0b, 0xef, 0xa3, 0xc7, 0x4d, 0xeb, 0xe7, - 0xe9, 0x12, 0xa9, 0xfe, 0x29, 0x5c, 0xbe, 0x45, 0x07, 0xa7, 0x66, 0x57, 0xd5, 0xd4, 0xe4, 0x16, - 0x5e, 0x9b, 0x49, 0x9e, 0x90, 0x6a, 0x4c, 0x23, 0x41, 0x95, 0xb0, 0x36, 0xf9, 0x45, 0xd6, 0x06, - 0xa3, 0x4d, 0x6d, 0x87, 0xa2, 0xb6, 0x3a, 0x19, 0x51, 0xcf, 0x21, 0x7b, 0xf2, 0xa3, 0x8b, 0xc6, - 0x1c, 0x1c, 0xbd, 0xb0, 0xd1, 0xc4, 0x91, 0xb6, 0x4e, 0xfe, 0xab, 0xc6, 0xec, 0xbd, 0xbe, 0xd2, - 0xfc, 0xbd, 0xbe, 0x0f, 0x01, 0x02, 0x81, 0xab, 0x63, 0xdb, 0xee, 0x4b, 0x5d, 0x79, 0x73, 0xe7, - 0xb2, 0xbe, 0xe9, 0x23, 0x8b, 0x04, 0x05, 0xca, 0x3f, 0x32, 0xcf, 0xe9, 0x18, 0x53, 0x97, 0x08, - 0x44, 0xed, 0x59, 0x1b, 0xbc, 0x36, 0x6f, 0x83, 0xdf, 0x82, 0x5c, 0xd0, 0xf7, 0xc6, 0x82, 0xae, - 0xa6, 0x5c, 0x3e, 0xbf, 0x9b, 0x5d, 0x44, 0x32, 0x14, 0x2e, 0x25, 0xf1, 0xd0, 0x4a, 0x79, 0x3e, - 0x5d, 0x4a, 0x29, 0x19, 0x61, 0x73, 0xca, 0x0e, 0xde, 0x9c, 0xb6, 0x83, 0x35, 0x0b, 0xf2, 0x3a, - 0x21, 0x3f, 0x1b, 0x5a, 0x87, 0xa9, 0xbc, 0x74, 0x22, 0x95, 0x17, 0xd5, 0x77, 0x66, 0x92, 0xf5, - 0x9d, 0x33, 0xf7, 0xd6, 0x72, 0x73, 0xf7, 0xd6, 0xea, 0x9f, 0x40, 0x8e, 0x64, 0x45, 0x27, 0x42, - 0x0d, 0xb3, 0xf2, 0x31, 0xb1, 0x53, 0x2c, 0xc5, 0xaf, 0x03, 0x0b, 0x04, 0x39, 0x21, 0xa2, 0x6b, - 0x8e, 0x04, 0x19, 0xc9, 0x34, 0xaf, 0xc2, 0x75, 0x85, 0x1b, 0x4c, 0xbf, 0x21, 0x4f, 0xc8, 0xb1, - 0x8f, 0x7d, 0xd3, 0xbf, 0x60, 0xd9, 0xfa, 0x87, 0x74, 0x1c, 0x1e, 0x2a, 0x54, 0x39, 0xba, 0x27, - 0xa8, 0xcc, 0xb2, 0xa5, 0xad, 0x0f, 0xd5, 0x46, 0xe8, 0xf8, 0x48, 0x55, 0x8c, 0x51, 0x00, 0x42, - 0x19, 0x94, 0xd5, 0xe4, 0x4e, 0xfc, 0xc7, 0xb6, 0xde, 0xea, 0x5b, 0x09, 0x57, 0x6e, 0xba, 0x04, - 0x2c, 0xb5, 0x6c, 0x09, 0x58, 0xfd, 0x31, 0xac, 0x1b, 0xd3, 0x36, 0x9d, 0xbf, 0x07, 0x05, 0x6f, - 0x9c, 0xe4, 0xf3, 0x22, 0xbd, 0x0c, 0xd1, 0xeb, 0x3f, 0x49, 0xc1, 0x6a, 0xdb, 0x95, 0xc2, 0x77, - 0x4d, 0x67, 0xc7, 0x31, 0x07, 0xfc, 0xdd, 0xd0, 0x4a, 0x2d, 0x8e, 0xd6, 0x93, 0xb8, 0xd3, 0x06, - 0xcb, 0xd1, 0x89, 0x67, 0x7e, 0x03, 0x36, 0x84, 0x65, 0x4b, 0xcf, 0x57, 0x0e, 0x6c, 0x58, 0xa9, - 0x77, 0x1d, 0x98, 0x02, 0x77, 0x69, 0x49, 0xf4, 0xd4, 0x34, 0x57, 0xe1, 0xfa, 0x14, 0x34, 0xf4, - 0x4e, 0xd3, 0xfc, 0x36, 0x54, 0xe3, 0xdd, 0x68, 0xdb, 0x73, 0x65, 0xdb, 0xb5, 0xc4, 0x39, 0xb9, - 0x42, 0x2c, 0x53, 0xff, 0xb5, 0x42, 0xe8, 0x84, 0x3d, 0xd5, 0x75, 0x7c, 0xbe, 0xe7, 0xc5, 0x97, - 0x44, 0x75, 0x2b, 0x71, 0x19, 0x39, 0xbd, 0xc4, 0x65, 0xe4, 0x0f, 0xe3, 0x0b, 0xa5, 0x6a, 0xa3, - 0x78, 0x65, 0xe1, 0xee, 0x43, 0xe5, 0x47, 0xda, 0xed, 0xee, 0x8a, 0xc4, 0xed, 0xd2, 0x37, 0x75, - 0xac, 0x95, 0x5d, 0xc6, 0x57, 0x55, 0x67, 0xfb, 0xef, 0xcc, 0xde, 0x62, 0x58, 0xae, 0x0c, 0x70, - 0xce, 0x9d, 0x84, 0x97, 0x76, 0x27, 0xbf, 0x35, 0x13, 0xd6, 0x14, 0x17, 0x26, 0xb0, 0xae, 0xb8, - 0xa3, 0xf9, 0x2d, 0x28, 0x0c, 0xed, 0x40, 0x7a, 0xbe, 0xba, 0x37, 0x3c, 0x7f, 0xcf, 0x29, 0x31, - 0x5a, 0xbb, 0x0a, 0x91, 0x6a, 0xb6, 0x42, 0x2a, 0xfe, 0x5d, 0xd8, 0xa0, 0x81, 0x3f, 0x8c, 0xbd, - 0x86, 0xa0, 0x5a, 0x5e, 0x58, 0x2b, 0x97, 0x60, 0xb5, 0x35, 0x43, 0x62, 0xcc, 0x33, 0xa9, 0x0d, - 0x00, 0xe2, 0xf9, 0x99, 0xb3, 0x62, 0x9f, 0xe1, 0xde, 0xf0, 0x4d, 0xc8, 0x07, 0x93, 0xe3, 0xf8, - 0x84, 0x4a, 0xb7, 0x6a, 0xe7, 0x50, 0x9b, 0xf3, 0x0e, 0x0e, 0x85, 0xaf, 0xc4, 0xbd, 0xf2, 0xf2, - 0xf2, 0x87, 0xc9, 0x89, 0x57, 0xca, 0x79, 0xf7, 0x92, 0xd9, 0x8b, 0x38, 0x27, 0x34, 0xa0, 0xf6, - 0x0e, 0x94, 0x13, 0x83, 0x8a, 0x96, 0x79, 0xe2, 0x5a, 0x5e, 0x98, 0x34, 0xc5, 0x67, 0x75, 0x79, - 0xcb, 0x0a, 0xd3, 0xa6, 0xf4, 0x5c, 0x33, 0x80, 0xcd, 0x0e, 0xe0, 0x15, 0xa1, 0xef, 0x2b, 0x50, - 0x49, 0xb8, 0x74, 0x51, 0x42, 0x6d, 0x1a, 0x58, 0x3f, 0x83, 0xcf, 0x27, 0xd8, 0x1d, 0x0a, 0x7f, - 0x64, 0x07, 0xb8, 0x91, 0xa8, 0x90, 0x8e, 0xb2, 0x17, 0x96, 0x70, 0xa5, 0x2d, 0x43, 0x0b, 0x1a, - 0xb5, 0xf9, 0x2f, 0x40, 0x6e, 0x2c, 0xfc, 0x51, 0xa0, 0xad, 0xe8, 0xac, 0x06, 0x2d, 0x64, 0x1b, - 0x18, 0x8a, 0xa6, 0xfe, 0xf7, 0x52, 0x50, 0xdc, 0x17, 0xd2, 0x44, 0xdf, 0x81, 0xef, 0xcf, 0x7c, - 0x65, 0xfe, 0x54, 0x35, 0x44, 0xdd, 0xd4, 0x41, 0xe6, 0x66, 0x5b, 0xe3, 0xeb, 0xf6, 0xee, 0x4a, - 0x2c, 0x58, 0x6d, 0x0b, 0x0a, 0x1a, 0x5c, 0x7b, 0x17, 0xd6, 0x67, 0x30, 0x69, 0x5c, 0x94, 0x6f, - 0xdf, 0xbd, 0x18, 0x85, 0xa5, 0x3f, 0xab, 0xc6, 0x34, 0x70, 0xab, 0x04, 0x85, 0xb1, 0x22, 0xa8, - 0xff, 0xde, 0x0d, 0x2a, 0x38, 0xb1, 0x4f, 0x30, 0xd8, 0x5e, 0xb4, 0xb3, 0xde, 0x01, 0xa0, 0xad, - 0x59, 0x95, 0x25, 0xa8, 0x24, 0x67, 0x02, 0xc2, 0xdf, 0x8f, 0xb2, 0xd3, 0xd9, 0x85, 0x4e, 0x55, - 0x92, 0xf9, 0x6c, 0x8a, 0xba, 0x0a, 0x05, 0x3b, 0xd8, 0xc3, 0xad, 0x4d, 0x97, 0xf2, 0x84, 0x4d, - 0xfe, 0x4d, 0xc8, 0xdb, 0xa3, 0xb1, 0xe7, 0x4b, 0x9d, 0xbe, 0xbe, 0x92, 0x6b, 0x9b, 0x30, 0x77, - 0x57, 0x0c, 0x4d, 0x83, 0xd4, 0xe2, 0x9c, 0xa8, 0x8b, 0x2f, 0xa6, 0x6e, 0x9d, 0x87, 0xd4, 0x8a, - 0x86, 0x7f, 0x07, 0x2a, 0x03, 0x55, 0x97, 0xa8, 0x18, 0x6b, 0x23, 0xf2, 0x95, 0xab, 0x98, 0x3c, - 0x4a, 0x12, 0xec, 0xae, 0x18, 0xd3, 0x1c, 0x90, 0x25, 0x3a, 0xf0, 0x22, 0x90, 0x3d, 0xef, 0x23, - 0xcf, 0x76, 0x29, 0x28, 0x7d, 0x01, 0x4b, 0x23, 0x49, 0x80, 0x2c, 0xa7, 0x38, 0xf0, 0xaf, 0xa3, - 0xc7, 0x13, 0x48, 0x7d, 0x75, 0xfb, 0xee, 0x55, 0x9c, 0x7a, 0x22, 0xd0, 0x97, 0xae, 0x03, 0xc9, - 0xcf, 0xa1, 0x96, 0x58, 0x24, 0xfa, 0x23, 0x8d, 0xf1, 0xd8, 0xf7, 0x30, 0xb2, 0xad, 0x10, 0xb7, - 0xaf, 0x5f, 0xc5, 0xed, 0xf0, 0x52, 0xea, 0xdd, 0x15, 0xe3, 0x0a, 0xde, 0xbc, 0x87, 0x91, 0x9d, - 0xee, 0xc2, 0x9e, 0x30, 0xcf, 0xc2, 0x8b, 0xdf, 0xf7, 0x97, 0x1a, 0x05, 0xa2, 0xd8, 0x5d, 0x31, - 0x66, 0x78, 0xf0, 0x5f, 0x82, 0x8d, 0xa9, 0x6f, 0xd2, 0x5d, 0x4f, 0x75, 0x2d, 0xfc, 0x6b, 0x4b, - 0x77, 0x03, 0x89, 0x76, 0x57, 0x8c, 0x79, 0x4e, 0x7c, 0x02, 0x9f, 0x9b, 0xef, 0xd2, 0xb6, 0xe8, - 0x3b, 0xb6, 0x2b, 0xf4, 0x0d, 0xf2, 0x77, 0x5e, 0x6e, 0xb4, 0x34, 0xf1, 0xee, 0x8a, 0x71, 0x39, - 0x67, 0xfe, 0x17, 0xe1, 0xf6, 0x78, 0xa1, 0x89, 0x51, 0xa6, 0x4b, 0x5f, 0x40, 0x7f, 0x6f, 0xc9, - 0x2f, 0xcf, 0xd1, 0xef, 0xae, 0x18, 0x57, 0xf2, 0x47, 0xdf, 0x99, 0x22, 0x68, 0x5d, 0x3e, 0xad, - 0x1a, 0xfc, 0x36, 0x94, 0xcc, 0xbe, 0xb3, 0x2b, 0x4c, 0x2b, 0xca, 0xb0, 0xc7, 0x80, 0xda, 0xff, - 0x48, 0x41, 0x5e, 0xeb, 0xfb, 0xed, 0xe8, 0x14, 0x3d, 0x32, 0xdd, 0x31, 0x80, 0x7f, 0x00, 0x25, - 0xe1, 0xfb, 0x9e, 0xdf, 0xf4, 0xac, 0xb0, 0x00, 0x71, 0x36, 0xfd, 0xab, 0xf8, 0x6c, 0xb6, 0x42, - 0x34, 0x23, 0xa6, 0xe0, 0xef, 0x03, 0xa8, 0x75, 0xde, 0x8b, 0x6f, 0xc1, 0xd4, 0x16, 0xd3, 0xab, - 0x43, 0x9b, 0x18, 0x3b, 0x4e, 0x9e, 0x85, 0x27, 0x26, 0x61, 0x33, 0x0a, 0x38, 0x73, 0x89, 0x80, - 0xf3, 0xb6, 0xce, 0x23, 0x1c, 0xe0, 0x0b, 0x7d, 0x17, 0x2c, 0x02, 0xd4, 0xfe, 0x75, 0x0a, 0xf2, - 0xca, 0x78, 0xf0, 0xd6, 0x7c, 0x8f, 0x5e, 0x7b, 0xb1, 0xcd, 0xd9, 0x9c, 0xed, 0xd9, 0x37, 0x01, - 0x94, 0x0d, 0x4a, 0xf4, 0xec, 0xf6, 0x0c, 0x1f, 0x4d, 0x1a, 0x16, 0xf0, 0xc6, 0xf8, 0xf5, 0x87, - 0xea, 0xbe, 0x12, 0xe5, 0x6a, 0x9f, 0xec, 0xed, 0xb1, 0x15, 0xbe, 0x01, 0x95, 0x27, 0x07, 0x8f, - 0x0f, 0x3a, 0xcf, 0x0e, 0x8e, 0x5a, 0x86, 0xd1, 0x31, 0x54, 0xca, 0x76, 0xab, 0xb1, 0x7d, 0xd4, - 0x3e, 0x38, 0x7c, 0xd2, 0x63, 0xe9, 0xda, 0x3f, 0x4b, 0x41, 0x65, 0xca, 0x76, 0xfd, 0xc9, 0x4e, - 0x5d, 0x62, 0xf8, 0x33, 0x8b, 0x87, 0x3f, 0x7b, 0xd9, 0xf0, 0xe7, 0x66, 0x87, 0xff, 0x77, 0x52, - 0x50, 0x99, 0xb2, 0x91, 0x49, 0xee, 0xa9, 0x69, 0xee, 0xc9, 0x9d, 0x3e, 0x3d, 0xb3, 0xd3, 0xd7, - 0x61, 0x35, 0x7c, 0x3e, 0x88, 0x33, 0x0e, 0x53, 0xb0, 0x24, 0x0e, 0x5d, 0x18, 0xc8, 0x4e, 0xe3, - 0xd0, 0xa5, 0x81, 0xab, 0xa5, 0xa5, 0x0b, 0x92, 0x01, 0xdd, 0x1f, 0xaf, 0x5d, 0x6e, 0x41, 0xaf, - 0xe8, 0xc2, 0x23, 0x28, 0x8f, 0xe3, 0x65, 0xfa, 0x72, 0x6e, 0x49, 0x92, 0xf2, 0x05, 0x72, 0xfe, - 0x38, 0x05, 0x6b, 0xd3, 0x36, 0xf7, 0x4f, 0xf5, 0xb0, 0xfe, 0xc3, 0x14, 0x6c, 0xcc, 0x59, 0xf2, - 0x2b, 0x1d, 0xbb, 0x59, 0xb9, 0xd2, 0x4b, 0xc8, 0x95, 0x59, 0x20, 0xd7, 0xe5, 0x96, 0xe4, 0x6a, - 0x89, 0xbb, 0xf0, 0xb9, 0x4b, 0xf7, 0x84, 0x2b, 0x86, 0x7a, 0x8a, 0x69, 0x66, 0x96, 0xe9, 0x6f, - 0xa7, 0xe0, 0xf6, 0x55, 0xf6, 0xfe, 0xff, 0xbb, 0x5e, 0xcd, 0x4a, 0x58, 0x7f, 0x37, 0x3a, 0x7a, - 0x2f, 0x43, 0x41, 0xff, 0x2e, 0x93, 0x2e, 0x6e, 0x1e, 0x7a, 0xcf, 0x5d, 0x95, 0x89, 0x36, 0x84, - 0xa9, 0x6f, 0xae, 0x1b, 0x62, 0xec, 0xd8, 0x74, 0x78, 0x79, 0x0b, 0xa0, 0x41, 0x71, 0x5d, 0x78, - 0x91, 0xa4, 0xb9, 0xd7, 0xe9, 0xb6, 0xd8, 0x4a, 0xd2, 0x89, 0xfd, 0x24, 0x34, 0xc4, 0xf5, 0x43, - 0xc8, 0xc7, 0x97, 0x01, 0xf6, 0x4d, 0xff, 0xd4, 0x52, 0x47, 0x84, 0xab, 0x50, 0x3c, 0xd4, 0x21, - 0x94, 0xfa, 0xd4, 0x47, 0xdd, 0xce, 0x81, 0x4a, 0x7a, 0x6f, 0x77, 0x7a, 0xea, 0x4a, 0x41, 0xf7, - 0xe9, 0x23, 0x75, 0x56, 0xf5, 0xc8, 0x68, 0x1c, 0xee, 0x1e, 0x11, 0x46, 0xae, 0xfe, 0x5b, 0xd9, - 0x70, 0x57, 0xab, 0x1b, 0xfa, 0xf0, 0x11, 0x20, 0x8f, 0xd6, 0xdc, 0xd3, 0x8c, 0xa3, 0xcf, 0x50, - 0x19, 0x6c, 0xeb, 0x5c, 0xe5, 0x21, 0x58, 0x9a, 0xe7, 0x21, 0x7d, 0x78, 0xac, 0x6a, 0x77, 0x76, - 0xe5, 0xc8, 0x51, 0x37, 0x0b, 0x7b, 0xe7, 0x92, 0xe5, 0xf0, 0xa1, 0x19, 0x9c, 0xb1, 0x7c, 0xfd, - 0x5f, 0x64, 0xa0, 0x14, 0x99, 0xca, 0x97, 0x31, 0xdd, 0x9c, 0xc3, 0x5a, 0xfb, 0xa0, 0xd7, 0x32, - 0x0e, 0x1a, 0x7b, 0x1a, 0x25, 0xc3, 0xaf, 0xc1, 0xfa, 0x4e, 0x7b, 0xaf, 0x75, 0xb4, 0xd7, 0x69, - 0x6c, 0x6b, 0x60, 0x91, 0xdf, 0x04, 0xde, 0xde, 0x3f, 0xec, 0x18, 0xbd, 0xa3, 0x76, 0xf7, 0xa8, - 0xd9, 0x38, 0x68, 0xb6, 0xf6, 0x5a, 0xdb, 0x2c, 0xcf, 0x5f, 0x81, 0xbb, 0x07, 0x9d, 0x5e, 0xbb, - 0x73, 0x70, 0x74, 0xd0, 0x39, 0xea, 0x6c, 0x7d, 0xd4, 0x6a, 0xf6, 0xba, 0x47, 0xed, 0x83, 0x23, - 0xe4, 0xfa, 0xc8, 0x68, 0xe0, 0x1b, 0x96, 0xe3, 0x77, 0xe1, 0xb6, 0xc6, 0xea, 0xb6, 0x8c, 0xa7, - 0x2d, 0x03, 0x99, 0x3c, 0x39, 0x68, 0x3c, 0x6d, 0xb4, 0xf7, 0x1a, 0x5b, 0x7b, 0x2d, 0xb6, 0xca, - 0xef, 0x40, 0x4d, 0x63, 0x18, 0x8d, 0x5e, 0xeb, 0x68, 0xaf, 0xbd, 0xdf, 0xee, 0x1d, 0xb5, 0xbe, - 0xdb, 0x6c, 0xb5, 0xb6, 0x5b, 0xdb, 0xac, 0xc2, 0xbf, 0x02, 0x5f, 0x26, 0xa1, 0xb4, 0x10, 0xd3, - 0x1f, 0xfb, 0xa4, 0x7d, 0x78, 0xd4, 0x30, 0x9a, 0xbb, 0xed, 0xa7, 0x2d, 0xb6, 0xc6, 0x5f, 0x83, - 0x2f, 0x5d, 0x8e, 0xba, 0xdd, 0x36, 0x5a, 0xcd, 0x5e, 0xc7, 0xf8, 0x98, 0x6d, 0xf0, 0x2f, 0xc0, - 0xe7, 0x76, 0x7b, 0xfb, 0x7b, 0x47, 0xcf, 0x8c, 0xce, 0xc1, 0xa3, 0x23, 0x7a, 0xec, 0xf6, 0x8c, - 0x27, 0xcd, 0xde, 0x13, 0xa3, 0xc5, 0x80, 0xd7, 0xe0, 0xe6, 0xe1, 0xd6, 0xd1, 0x41, 0xa7, 0x77, - 0xd4, 0x38, 0xf8, 0x78, 0x6b, 0xaf, 0xd3, 0x7c, 0x7c, 0xb4, 0xd3, 0x31, 0xf6, 0x1b, 0x3d, 0x56, - 0xe6, 0x5f, 0x85, 0xd7, 0x9a, 0xdd, 0xa7, 0x5a, 0xcc, 0xce, 0xce, 0x91, 0xd1, 0x79, 0xd6, 0x3d, - 0xea, 0x18, 0x47, 0x46, 0x6b, 0x8f, 0xfa, 0xdc, 0x8d, 0x65, 0x2f, 0xf0, 0xdb, 0x50, 0x6d, 0x1f, - 0x74, 0x9f, 0xec, 0xec, 0xb4, 0x9b, 0xed, 0xd6, 0x41, 0xef, 0xe8, 0xb0, 0x65, 0xec, 0xb7, 0xbb, - 0x5d, 0x44, 0x63, 0xa5, 0xfa, 0xb7, 0x21, 0xdf, 0x76, 0xcf, 0x6c, 0x49, 0xeb, 0x4b, 0x2b, 0xa3, - 0x8e, 0xb8, 0xc2, 0x26, 0x2d, 0x0b, 0x7b, 0xe0, 0xd2, 0x8d, 0x79, 0x5a, 0x5d, 0xab, 0x46, 0x0c, - 0xa8, 0xff, 0xe3, 0x34, 0x54, 0x14, 0x8b, 0x30, 0x82, 0xbb, 0x07, 0xeb, 0x3a, 0x15, 0xda, 0x9e, - 0x36, 0x61, 0xb3, 0x60, 0xfa, 0x29, 0x2a, 0x05, 0x4a, 0x18, 0xb2, 0x24, 0x88, 0x8e, 0xd7, 0x88, - 0x39, 0x46, 0x82, 0xea, 0x60, 0x31, 0x06, 0x7c, 0x56, 0x0b, 0x86, 0xd6, 0x51, 0x21, 0xf6, 0x3d, - 0xb7, 0x19, 0x5d, 0xb6, 0x98, 0x82, 0xf1, 0x4f, 0xe0, 0x56, 0xd4, 0x6e, 0xb9, 0x7d, 0xff, 0x62, - 0x1c, 0xfd, 0x62, 0x5c, 0x61, 0x61, 0x4a, 0x61, 0xc7, 0x76, 0xc4, 0x14, 0xa2, 0x71, 0x19, 0x83, - 0xfa, 0xef, 0xa7, 0x12, 0x71, 0xaf, 0x8a, 0x6b, 0xaf, 0xb4, 0xf8, 0x8b, 0xce, 0x60, 0x30, 0xf2, - 0xd4, 0xe2, 0x6b, 0x47, 0x44, 0x37, 0xf9, 0x21, 0x70, 0x7b, 0x5e, 0xe8, 0xec, 0x92, 0x42, 0x2f, - 0xa0, 0x9d, 0x4d, 0xa1, 0xe7, 0xe6, 0x53, 0xe8, 0x77, 0x00, 0x06, 0x8e, 0x77, 0x6c, 0x3a, 0x09, - 0x47, 0x33, 0x01, 0xa9, 0x3b, 0x50, 0x0c, 0x7f, 0x97, 0x8e, 0xdf, 0x84, 0x3c, 0xfd, 0x32, 0x5d, - 0x94, 0x50, 0x54, 0x2d, 0xbe, 0x0b, 0x6b, 0x62, 0x5a, 0xe6, 0xf4, 0x92, 0x32, 0xcf, 0xd0, 0xd5, - 0xbf, 0x01, 0x1b, 0x73, 0x48, 0x38, 0x88, 0x63, 0x53, 0x46, 0x97, 0xd3, 0xf1, 0x79, 0xfe, 0x10, - 0xbb, 0xfe, 0x1f, 0xd3, 0xb0, 0xba, 0x6f, 0xba, 0xf6, 0x89, 0x08, 0x64, 0x28, 0x6d, 0xd0, 0x1f, - 0x8a, 0x91, 0x19, 0x4a, 0xab, 0x5a, 0x3a, 0xcb, 0x90, 0x4e, 0xe6, 0xef, 0xe7, 0x8e, 0x7b, 0x6e, - 0x42, 0xde, 0x9c, 0xc8, 0x61, 0x54, 0xe1, 0xad, 0x5b, 0x38, 0x77, 0x8e, 0xdd, 0x17, 0x6e, 0x10, - 0xea, 0x66, 0xd8, 0x8c, 0xcb, 0x58, 0xf2, 0x57, 0x94, 0xb1, 0x14, 0xe6, 0xc7, 0xff, 0x2e, 0x94, - 0x83, 0xbe, 0x2f, 0x84, 0x1b, 0x0c, 0x3d, 0x19, 0xfe, 0xa6, 0x61, 0x12, 0x44, 0xc5, 0x5e, 0xde, - 0x73, 0x17, 0x57, 0xe8, 0x9e, 0xed, 0x9e, 0xea, 0x1a, 0xa6, 0x29, 0x18, 0xea, 0x20, 0xe5, 0x58, - 0xec, 0x4f, 0x05, 0xc5, 0xf7, 0x39, 0x23, 0x6a, 0x53, 0x16, 0xc5, 0x94, 0x62, 0xe0, 0xf9, 0xb6, - 0x50, 0xa9, 0xc4, 0x92, 0x91, 0x80, 0x20, 0xad, 0x63, 0xba, 0x83, 0x89, 0x39, 0x10, 0xfa, 0x50, - 0x38, 0x6a, 0xd7, 0xff, 0x67, 0x0e, 0x60, 0x5f, 0x8c, 0x8e, 0x85, 0x1f, 0x0c, 0xed, 0x31, 0x1d, - 0x75, 0xd8, 0xba, 0xae, 0xb5, 0x62, 0xd0, 0x33, 0x7f, 0x6f, 0xaa, 0xe4, 0x7c, 0xfe, 0x70, 0x32, - 0x26, 0x9f, 0x4d, 0xc1, 0xe0, 0xe0, 0x98, 0x52, 0xe8, 0x0a, 0x22, 0x1a, 0xff, 0xac, 0x91, 0x04, - 0x51, 0x71, 0x97, 0x29, 0x45, 0xcb, 0xb5, 0x54, 0x8a, 0x27, 0x6b, 0x44, 0x6d, 0xba, 0xb4, 0x12, - 0x34, 0x26, 0xd2, 0x33, 0x84, 0x2b, 0x9e, 0x47, 0xf7, 0xb1, 0x62, 0x10, 0xdf, 0x87, 0xca, 0xd8, - 0xbc, 0x18, 0x09, 0x57, 0xee, 0x0b, 0x39, 0xf4, 0x2c, 0x5d, 0xee, 0xf3, 0xda, 0xe5, 0x02, 0x1e, - 0x26, 0xd1, 0x8d, 0x69, 0x6a, 0xd4, 0x09, 0x37, 0xa0, 0x55, 0xa2, 0xa6, 0x51, 0xb7, 0xf8, 0x16, - 0x80, 0x7a, 0xa2, 0xc8, 0xa9, 0xb8, 0x38, 0x13, 0x65, 0x8e, 0x44, 0x20, 0xfc, 0x33, 0x5b, 0xd9, - 0x31, 0x15, 0x1b, 0xc6, 0x54, 0x68, 0xf5, 0x26, 0x81, 0xf0, 0x5b, 0x23, 0xd3, 0x76, 0xf4, 0x04, - 0xc7, 0x00, 0xfe, 0x36, 0xdc, 0x08, 0x26, 0xc7, 0xa8, 0x33, 0xc7, 0xa2, 0xe7, 0x1d, 0x88, 0xe7, - 0x81, 0x23, 0xa4, 0x14, 0xbe, 0xae, 0x2f, 0x58, 0xfc, 0xb2, 0x3e, 0x88, 0xdc, 0x1e, 0xfa, 0xfd, - 0x0c, 0x7c, 0x8a, 0xeb, 0x96, 0x22, 0x90, 0x2e, 0xea, 0x62, 0x29, 0xce, 0x60, 0x55, 0x81, 0x74, - 0xcd, 0x57, 0x9a, 0x7f, 0x19, 0xbe, 0x38, 0x85, 0x64, 0xa8, 0x83, 0xe0, 0x60, 0xc7, 0x76, 0x4d, - 0xc7, 0xfe, 0x54, 0x1d, 0xcb, 0x67, 0xea, 0x63, 0xa8, 0x4c, 0x0d, 0x1c, 0x5d, 0x20, 0xa4, 0x27, - 0x5d, 0x05, 0xc3, 0x60, 0x55, 0xb5, 0xbb, 0xd2, 0xb7, 0xe9, 0x84, 0x23, 0x82, 0x34, 0x71, 0x9d, - 0x7b, 0x2c, 0xcd, 0xaf, 0x03, 0x53, 0x90, 0xb6, 0x6b, 0x8e, 0xc7, 0x8d, 0xf1, 0xd8, 0x11, 0x2c, - 0x43, 0x97, 0x33, 0x63, 0xa8, 0x2a, 0x3c, 0x67, 0xd9, 0xfa, 0x77, 0xe1, 0x16, 0x8d, 0xcc, 0x53, - 0xe1, 0x47, 0x81, 0xad, 0xee, 0xeb, 0x0d, 0xd8, 0x50, 0x4f, 0x07, 0x9e, 0x54, 0xaf, 0xc9, 0xd9, - 0xe3, 0xb0, 0xa6, 0xc0, 0xe8, 0xeb, 0x74, 0x05, 0x5d, 0xb9, 0x8c, 0x60, 0x11, 0x5e, 0xba, 0xfe, - 0x93, 0x3c, 0xf0, 0x58, 0x21, 0x7a, 0xb6, 0xf0, 0xb7, 0x4d, 0x69, 0x26, 0x32, 0x93, 0x95, 0x4b, - 0xcf, 0xd6, 0x5f, 0x5c, 0xb2, 0x76, 0x13, 0xf2, 0x76, 0x80, 0xa1, 0x98, 0x2e, 0x28, 0xd5, 0x2d, - 0xbe, 0x07, 0x30, 0x16, 0xbe, 0xed, 0x59, 0xa4, 0x41, 0xb9, 0x85, 0x95, 0xff, 0xf3, 0x42, 0x6d, - 0x1e, 0x46, 0x34, 0x46, 0x82, 0x1e, 0xe5, 0x50, 0x2d, 0x75, 0x52, 0x9d, 0x27, 0xa1, 0x93, 0x20, - 0xfe, 0x06, 0x5c, 0x1b, 0xfb, 0x76, 0x5f, 0xa8, 0xe9, 0x78, 0x12, 0x58, 0x4d, 0xfa, 0xd5, 0xb9, - 0x02, 0x61, 0x2e, 0x7a, 0x85, 0x1a, 0x68, 0xba, 0x14, 0xa0, 0x04, 0x74, 0x36, 0xab, 0xaf, 0x1c, - 0xab, 0x92, 0xcb, 0x8a, 0xb1, 0xf8, 0x25, 0xbf, 0x0f, 0x4c, 0xbf, 0xd8, 0xb7, 0xdd, 0x3d, 0xe1, - 0x0e, 0xe4, 0x90, 0x94, 0xbb, 0x62, 0xcc, 0xc1, 0xc9, 0x82, 0xa9, 0xdf, 0xf6, 0x51, 0xe7, 0x36, - 0x25, 0x23, 0x6a, 0xab, 0x6b, 0xec, 0x8e, 0xe7, 0x77, 0xa5, 0xaf, 0x6b, 0x47, 0xa3, 0x36, 0xfa, - 0x2c, 0x01, 0xc9, 0x7a, 0xe8, 0x7b, 0xd6, 0x84, 0x4e, 0x15, 0x94, 0x11, 0x9b, 0x05, 0xc7, 0x98, - 0xfb, 0xa6, 0xab, 0xeb, 0x06, 0x2b, 0x49, 0xcc, 0x08, 0x4c, 0x31, 0x98, 0x17, 0xc4, 0x0c, 0xd7, - 0x75, 0x0c, 0x96, 0x80, 0x69, 0x9c, 0x98, 0x15, 0x8b, 0x70, 0x62, 0x3e, 0xd4, 0x7f, 0xcb, 0xf7, - 0x6c, 0x2b, 0xe6, 0xb5, 0xa1, 0xaa, 0x3a, 0x67, 0xe1, 0x09, 0xdc, 0x98, 0x27, 0x9f, 0xc2, 0x8d, - 0xe0, 0xf5, 0x1f, 0xa4, 0x00, 0xe2, 0xc9, 0x47, 0x95, 0x8f, 0x5b, 0xf1, 0x12, 0xbf, 0x05, 0xd7, - 0x92, 0x60, 0xba, 0x1c, 0x40, 0x07, 0xbc, 0x1c, 0xd6, 0xe2, 0x17, 0xdb, 0xe6, 0x45, 0xc0, 0xd2, - 0xfa, 0x9a, 0xb0, 0x86, 0x3d, 0x13, 0x82, 0x0a, 0xe9, 0xae, 0x03, 0x8b, 0x81, 0x74, 0xf7, 0x2b, - 0x60, 0xd9, 0x69, 0xd4, 0x8f, 0x85, 0xe9, 0x07, 0x2c, 0x57, 0xdf, 0x85, 0xbc, 0x3a, 0x5c, 0x5a, - 0x70, 0x2c, 0xfc, 0x72, 0x35, 0x1e, 0x7f, 0x3d, 0x05, 0xb0, 0xad, 0x2a, 0x78, 0x71, 0x17, 0x5f, - 0x70, 0xda, 0xbe, 0xc8, 0xa3, 0x32, 0x2d, 0x8b, 0x2a, 0xa1, 0x33, 0xd1, 0x2f, 0xc6, 0x60, 0x13, - 0x35, 0xc7, 0x0c, 0x2b, 0xa7, 0xd4, 0x9a, 0x8b, 0xda, 0x6a, 0x03, 0x69, 0x7a, 0xae, 0x2b, 0xfa, - 0xb8, 0xfd, 0x44, 0x1b, 0x48, 0x04, 0xaa, 0xff, 0xdb, 0x02, 0x94, 0x9b, 0x43, 0x53, 0xee, 0x8b, - 0x20, 0x30, 0x07, 0x62, 0x4e, 0x96, 0x2a, 0x14, 0x3c, 0xdf, 0x12, 0x7e, 0x7c, 0x7f, 0x4b, 0x37, - 0x93, 0x35, 0x06, 0x99, 0xe9, 0x1a, 0x83, 0xdb, 0x50, 0x52, 0x27, 0x18, 0x56, 0x43, 0x99, 0x81, - 0x8c, 0x11, 0x03, 0x70, 0xaf, 0x1e, 0x79, 0x16, 0x19, 0xa3, 0x86, 0x4a, 0xfe, 0x67, 0x8c, 0x04, - 0x44, 0x95, 0x74, 0x8c, 0x9d, 0x8b, 0x9e, 0xa7, 0x65, 0x6a, 0x5b, 0xf1, 0x65, 0xd7, 0x69, 0x38, - 0x6f, 0x42, 0x61, 0xa4, 0x1a, 0xfa, 0x20, 0x63, 0x36, 0xe5, 0x9f, 0xe8, 0xda, 0xa6, 0xfe, 0xab, - 0xef, 0x9b, 0x18, 0x21, 0x25, 0x86, 0xe8, 0xa6, 0x94, 0x66, 0x7f, 0x38, 0xd2, 0x26, 0x22, 0xb3, - 0xe0, 0x4c, 0x33, 0xc9, 0xa8, 0x11, 0x61, 0x1b, 0x49, 0x4a, 0xbe, 0x05, 0x25, 0x5f, 0x98, 0x53, - 0xc7, 0xaa, 0xaf, 0x5c, 0xc1, 0xc6, 0x08, 0x71, 0x8d, 0x98, 0xac, 0xf6, 0xa3, 0x14, 0xac, 0x4d, - 0x0b, 0xfa, 0x27, 0xf1, 0xa3, 0x5f, 0xdf, 0x8c, 0x7f, 0xf4, 0xeb, 0x33, 0xfc, 0x80, 0xd6, 0x6f, - 0xa7, 0x00, 0xe2, 0x31, 0x40, 0x93, 0xaf, 0x7e, 0x9c, 0x28, 0x74, 0x42, 0x55, 0x8b, 0xef, 0x4e, - 0xdd, 0x81, 0x7f, 0x7b, 0xa9, 0x01, 0x4d, 0x3c, 0x26, 0xca, 0x92, 0x1f, 0xc0, 0xda, 0x34, 0x9c, - 0x7e, 0x6e, 0xa8, 0xbd, 0xd7, 0x52, 0x29, 0x8e, 0xf6, 0x7e, 0xe3, 0x51, 0x4b, 0xdf, 0xef, 0x69, - 0x1f, 0x3c, 0x66, 0xe9, 0xda, 0x1f, 0xa4, 0xa0, 0x14, 0x0d, 0x2f, 0xff, 0x4e, 0x72, 0x5e, 0x54, - 0x9d, 0xc4, 0x5b, 0xcb, 0xcc, 0x4b, 0xfc, 0xd4, 0x72, 0xa5, 0x7f, 0x91, 0x9c, 0x26, 0x0f, 0xd6, - 0xa6, 0x5f, 0x2e, 0xb0, 0x09, 0x8f, 0xa6, 0x6d, 0xc2, 0x9b, 0x4b, 0x7d, 0x32, 0x8c, 0xbc, 0xf6, - 0xec, 0x40, 0x6a, 0x73, 0xf1, 0x7e, 0xfa, 0xbd, 0x54, 0xed, 0x2e, 0xac, 0x26, 0x5f, 0xcd, 0x5f, - 0xe2, 0xbb, 0xff, 0x07, 0x19, 0x58, 0x9b, 0x2e, 0x35, 0xa0, 0x2b, 0x43, 0xaa, 0xcc, 0xa5, 0xe3, - 0x58, 0x89, 0x4a, 0x6e, 0xc6, 0xd7, 0xa1, 0xac, 0x63, 0x3b, 0x02, 0x6c, 0x50, 0x12, 0xc5, 0x1b, - 0x09, 0x76, 0x37, 0xf9, 0xc3, 0x86, 0x6f, 0x70, 0x08, 0x2f, 0x73, 0xb1, 0x31, 0x2f, 0xe9, 0x9f, - 0x78, 0xfa, 0xe5, 0x34, 0xaf, 0x24, 0xea, 0x89, 0x7f, 0x88, 0x8e, 0xcd, 0xfa, 0xd6, 0xc4, 0xb5, - 0x1c, 0x61, 0x45, 0xd0, 0x1f, 0x25, 0xa1, 0x51, 0x75, 0xf0, 0x2f, 0x67, 0xf9, 0x1a, 0x94, 0xba, - 0x93, 0x63, 0x5d, 0x19, 0xfc, 0x97, 0xb2, 0xfc, 0x26, 0x6c, 0x68, 0xac, 0xb8, 0xc4, 0x8f, 0xfd, - 0x65, 0x34, 0xc1, 0x6b, 0x0d, 0x35, 0x5e, 0x5a, 0x50, 0xf6, 0x57, 0xb2, 0x28, 0x02, 0xdd, 0x11, - 0xfe, 0xab, 0xc4, 0x27, 0xba, 0x51, 0xc1, 0x7e, 0x25, 0xcb, 0xd7, 0x01, 0xba, 0xbd, 0xe8, 0x43, - 0xbf, 0x96, 0xe5, 0x65, 0xc8, 0x77, 0x7b, 0xc4, 0xed, 0x07, 0x59, 0x7e, 0x03, 0x58, 0xfc, 0x56, - 0x17, 0x3e, 0xfe, 0xba, 0x12, 0x26, 0xaa, 0x64, 0xfc, 0x8d, 0x2c, 0xf6, 0x2b, 0x1c, 0x65, 0xf6, - 0x37, 0xb3, 0x9c, 0x41, 0x39, 0x91, 0x9a, 0x63, 0x7f, 0x2b, 0xcb, 0x39, 0x54, 0xf6, 0xed, 0x20, - 0xb0, 0xdd, 0x81, 0xee, 0xc1, 0xaf, 0xd2, 0x97, 0x77, 0xa2, 0x4b, 0x21, 0xec, 0x37, 0xb3, 0xfc, - 0x16, 0xf0, 0xe4, 0x71, 0x84, 0x7e, 0xf1, 0xb7, 0x89, 0x5a, 0x99, 0xfd, 0x40, 0xc3, 0xfe, 0x0e, - 0x51, 0xa3, 0x26, 0x68, 0xc0, 0x6f, 0xd1, 0x80, 0x34, 0xe3, 0x52, 0x49, 0x0d, 0xff, 0x21, 0x11, - 0x87, 0x93, 0xa9, 0x60, 0x3f, 0xca, 0xde, 0xff, 0x09, 0xa5, 0x93, 0x93, 0x15, 0x47, 0x7c, 0x15, - 0x8a, 0x8e, 0xe7, 0x0e, 0xa4, 0xfa, 0x41, 0xc9, 0x0a, 0x94, 0x82, 0xa1, 0xe7, 0x4b, 0x6a, 0xd2, - 0xad, 0x35, 0x97, 0xee, 0x2f, 0xab, 0x72, 0x72, 0x15, 0xa4, 0xa8, 0xf4, 0x9c, 0x34, 0x07, 0xac, - 0x1c, 0x15, 0x79, 0x66, 0xa3, 0x42, 0x54, 0xba, 0x47, 0x1d, 0xde, 0x53, 0x65, 0x79, 0x44, 0x9d, - 0xf8, 0x8e, 0x2a, 0x48, 0x15, 0xe8, 0xa0, 0xaa, 0x5f, 0x8e, 0x1b, 0x0f, 0xd1, 0x0f, 0x2e, 0x29, - 0xa8, 0xf7, 0x3d, 0x5b, 0xdd, 0x80, 0xd4, 0xf5, 0x5d, 0x16, 0xca, 0x11, 0x95, 0x30, 0x30, 0x71, - 0xff, 0x37, 0x52, 0xb0, 0x1a, 0xde, 0x1e, 0xb6, 0x07, 0xb6, 0xab, 0x4a, 0x5a, 0xc3, 0x9f, 0xe9, - 0xec, 0x3b, 0xf6, 0x38, 0xfc, 0xd9, 0xbb, 0x75, 0x28, 0x5b, 0xbe, 0x39, 0x68, 0xb8, 0xd6, 0xb6, - 0xef, 0x8d, 0x95, 0xd8, 0xea, 0xc0, 0x49, 0x95, 0xd2, 0x3e, 0x17, 0xc7, 0x88, 0x3e, 0x16, 0x3e, - 0xcb, 0x52, 0xed, 0xd8, 0xd0, 0xf4, 0x6d, 0x77, 0xd0, 0x3a, 0x97, 0xc2, 0x0d, 0x54, 0x49, 0x6d, - 0x19, 0x0a, 0x93, 0x40, 0xf4, 0xcd, 0x40, 0xb0, 0x3c, 0x36, 0x8e, 0x27, 0xb6, 0x23, 0x6d, 0x57, - 0xfd, 0xda, 0x5c, 0x54, 0x33, 0x5b, 0xbc, 0xff, 0xbb, 0x29, 0x28, 0x93, 0x36, 0xc4, 0x99, 0xd4, - 0xd8, 0xd3, 0x28, 0x43, 0x61, 0x2f, 0xfa, 0xb5, 0xb1, 0x3c, 0xa4, 0x3b, 0xa7, 0x2a, 0x93, 0xaa, - 0xb5, 0x41, 0xdd, 0xfd, 0x53, 0x3f, 0x3c, 0x96, 0xe5, 0x9f, 0x83, 0x1b, 0x86, 0x18, 0x79, 0x52, - 0x3c, 0x33, 0x6d, 0x99, 0xbc, 0x4e, 0x92, 0xc3, 0xa0, 0x44, 0xbd, 0x0a, 0xef, 0x8f, 0xe4, 0x29, - 0x28, 0xc1, 0xcf, 0x86, 0x90, 0x02, 0x76, 0x9a, 0x20, 0x3a, 0x4a, 0x29, 0x46, 0x28, 0x1f, 0x79, - 0xb6, 0x8b, 0x5f, 0xa3, 0x1b, 0xa7, 0x04, 0xa1, 0x94, 0x3c, 0x82, 0xe0, 0xfe, 0x01, 0xdc, 0x5c, - 0x9c, 0x48, 0x56, 0x77, 0x51, 0xe9, 0x27, 0x6e, 0xe9, 0x82, 0xc1, 0x33, 0xdf, 0x56, 0x57, 0x0a, - 0x4b, 0x90, 0xeb, 0x3c, 0x77, 0x49, 0x1b, 0x36, 0xa0, 0x72, 0xe0, 0x25, 0x68, 0x58, 0xe6, 0x7e, - 0x7f, 0x2a, 0xf7, 0x1f, 0x0f, 0x4a, 0x28, 0xc4, 0x4a, 0xe2, 0xf2, 0x4c, 0x4a, 0x65, 0x95, 0xe9, - 0xbf, 0x14, 0xa8, 0x7b, 0xfa, 0x3a, 0xe7, 0x6e, 0xa9, 0x7b, 0xfa, 0x91, 0x98, 0x59, 0xf5, 0xf3, - 0x43, 0x6e, 0x5f, 0x38, 0xc2, 0x62, 0xb9, 0xfb, 0xef, 0xc1, 0xba, 0xee, 0x6a, 0x5f, 0x04, 0x41, - 0x78, 0xf9, 0xe4, 0xd0, 0xb7, 0xcf, 0xd4, 0x6f, 0x01, 0xac, 0x42, 0xf1, 0x50, 0xf8, 0x81, 0xe7, - 0xd2, 0xef, 0x20, 0x00, 0xe4, 0xbb, 0x43, 0xd3, 0xc7, 0x6f, 0xdc, 0x6f, 0x42, 0x89, 0x2e, 0xa3, - 0x3c, 0xb6, 0x5d, 0x0b, 0x7b, 0xb2, 0xa5, 0xeb, 0xaf, 0xe9, 0x07, 0x67, 0xce, 0xa8, 0x7f, 0x45, - 0xf5, 0x43, 0x9b, 0x2c, 0xcd, 0x6f, 0x02, 0xc7, 0xa0, 0x79, 0x64, 0xd2, 0xed, 0x46, 0xe7, 0x42, - 0xfd, 0x28, 0x6b, 0xe6, 0xfe, 0xb7, 0x80, 0xab, 0xd4, 0x8f, 0x25, 0xce, 0x6d, 0x77, 0x10, 0x5d, - 0x9c, 0x06, 0xfa, 0x15, 0x04, 0x4b, 0x9c, 0x53, 0x64, 0x55, 0x86, 0x42, 0xd8, 0x08, 0x7f, 0x8b, - 0x61, 0xc7, 0x9b, 0xb8, 0x28, 0xc5, 0x53, 0xb8, 0xae, 0x74, 0x06, 0xc5, 0xa2, 0xab, 0x73, 0x97, - 0xc6, 0xa3, 0xea, 0x26, 0x91, 0x9c, 0x04, 0x11, 0x2e, 0x4b, 0xa1, 0x60, 0x51, 0x2c, 0x17, 0xc3, - 0xd3, 0xf7, 0xeb, 0x70, 0x6d, 0x41, 0x40, 0x4d, 0xc6, 0x59, 0x85, 0x15, 0x6c, 0xe5, 0xfe, 0x87, - 0xb0, 0xa1, 0xcc, 0xc9, 0x81, 0xba, 0xdc, 0x14, 0xee, 0x8c, 0xcf, 0xda, 0x3b, 0x6d, 0x35, 0x74, - 0xcd, 0xd6, 0xde, 0xde, 0x93, 0xbd, 0x86, 0xc1, 0x52, 0x34, 0xc1, 0x9d, 0xde, 0x51, 0xb3, 0x73, - 0x70, 0xd0, 0x6a, 0xf6, 0x5a, 0xdb, 0x2c, 0xbd, 0x75, 0xff, 0xdf, 0xfd, 0xec, 0x4e, 0xea, 0xa7, - 0x3f, 0xbb, 0x93, 0xfa, 0xaf, 0x3f, 0xbb, 0x93, 0xfa, 0xc1, 0xcf, 0xef, 0xac, 0xfc, 0xf4, 0xe7, - 0x77, 0x56, 0xfe, 0xf3, 0xcf, 0xef, 0xac, 0x7c, 0xc2, 0x66, 0xff, 0x73, 0xc8, 0x71, 0x9e, 0x3c, - 0xd9, 0xb7, 0xfe, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xc3, 0xfd, 0xf9, 0xc4, 0x54, 0x64, 0x00, - 0x00, + // 8935 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x7d, 0x5b, 0x6c, 0x24, 0xc9, + 0x91, 0x18, 0xfb, 0xdd, 0x1d, 0xcd, 0x26, 0x93, 0x39, 0xaf, 0x56, 0x6b, 0x34, 0x1e, 0xb5, 0x56, + 0xbb, 0xa3, 0xd1, 0x8a, 0xb3, 0x3b, 0xbb, 0xab, 0x5d, 0xed, 0x69, 0x57, 0x6a, 0x36, 0x9b, 0xc3, + 0xde, 0x21, 0xd9, 0x54, 0x75, 0xcf, 0x8c, 0x76, 0x71, 0x67, 0xba, 0xd8, 0x95, 0xec, 0x2e, 0xb1, + 0xba, 0xaa, 0x55, 0x95, 0xcd, 0x21, 0x17, 0xb6, 0x71, 0x7e, 0xdd, 0xf9, 0xfe, 0x74, 0xb6, 0xcf, + 0xf6, 0xc1, 0x30, 0x4e, 0xfa, 0x33, 0x7c, 0x82, 0x5f, 0x80, 0xe0, 0x07, 0x7c, 0x80, 0x7d, 0x1f, + 0xb6, 0x01, 0xff, 0xc8, 0xf6, 0x8f, 0xff, 0x6c, 0x48, 0x80, 0x7f, 0x0c, 0xfb, 0x70, 0xf6, 0xcf, + 0xc1, 0xf0, 0x87, 0x11, 0x91, 0x59, 0x8f, 0x7e, 0x90, 0xd3, 0xb3, 0x77, 0x67, 0xdc, 0x17, 0x2b, + 0xa3, 0x22, 0xa2, 0x22, 0x33, 0x23, 0x23, 0x23, 0x22, 0x23, 0x9b, 0xf0, 0xca, 0xf8, 0x74, 0xf0, + 0xc0, 0xb1, 0x8f, 0x1f, 0x8c, 0x8f, 0x1f, 0x8c, 0x3c, 0x4b, 0x38, 0x0f, 0xc6, 0xbe, 0x27, 0xbd, + 0x40, 0x35, 0x82, 0x4d, 0x6a, 0xf1, 0x8a, 0xe9, 0x5e, 0xc8, 0x8b, 0xb1, 0xd8, 0x24, 0x68, 0xed, + 0xf6, 0xc0, 0xf3, 0x06, 0x8e, 0x50, 0xa8, 0xc7, 0x93, 0x93, 0x07, 0x81, 0xf4, 0x27, 0x7d, 0xa9, + 0x90, 0xeb, 0x3f, 0xcd, 0xc2, 0xcd, 0xee, 0xc8, 0xf4, 0xe5, 0x96, 0xe3, 0xf5, 0x4f, 0xbb, 0xae, + 0x39, 0x0e, 0x86, 0x9e, 0xdc, 0x32, 0x03, 0xc1, 0x5f, 0x87, 0xfc, 0x31, 0x02, 0x83, 0x6a, 0xea, + 0x6e, 0xe6, 0x5e, 0xf9, 0xe1, 0xf5, 0xcd, 0x29, 0xc6, 0x9b, 0x44, 0x61, 0x68, 0x1c, 0xfe, 0x26, + 0x14, 0x2c, 0x21, 0x4d, 0xdb, 0x09, 0xaa, 0xe9, 0xbb, 0xa9, 0x7b, 0xe5, 0x87, 0xb7, 0x36, 0xd5, + 0x87, 0x37, 0xc3, 0x0f, 0x6f, 0x76, 0xe9, 0xc3, 0x46, 0x88, 0xc7, 0xdf, 0x85, 0xe2, 0x89, 0xed, + 0x88, 0xc7, 0xe2, 0x22, 0xa8, 0x66, 0xae, 0xa4, 0xd9, 0x4a, 0x57, 0x53, 0x46, 0x84, 0xcc, 0x9b, + 0xb0, 0x26, 0xce, 0xa5, 0x6f, 0x1a, 0xc2, 0x31, 0xa5, 0xed, 0xb9, 0x41, 0x35, 0x4b, 0x12, 0xde, + 0x9a, 0x91, 0x30, 0x7c, 0x4f, 0xe4, 0x33, 0x24, 0xfc, 0x2e, 0x94, 0xbd, 0xe3, 0xef, 0x89, 0xbe, + 0xec, 0x5d, 0x8c, 0x45, 0x50, 0xcd, 0xdd, 0xcd, 0xdc, 0x2b, 0x19, 0x49, 0x10, 0xff, 0x06, 0x94, + 0xfb, 0x9e, 0xe3, 0x88, 0xbe, 0xfa, 0x46, 0xfe, 0xea, 0x6e, 0x25, 0x71, 0xf9, 0xdb, 0x70, 0xc3, + 0x17, 0x23, 0xef, 0x4c, 0x58, 0xcd, 0x08, 0x4a, 0xfd, 0x2c, 0xd2, 0x67, 0x16, 0xbf, 0xe4, 0x0d, + 0xa8, 0xf8, 0x5a, 0xbe, 0x3d, 0xdb, 0x3d, 0x0d, 0xaa, 0x05, 0xea, 0xd6, 0xe7, 0x2f, 0xe9, 0x16, + 0xe2, 0x18, 0xd3, 0x14, 0x9c, 0x41, 0xe6, 0x54, 0x5c, 0x54, 0x4b, 0x77, 0x53, 0xf7, 0x4a, 0x06, + 0x3e, 0xf2, 0xf7, 0xa1, 0xea, 0xf9, 0xf6, 0xc0, 0x76, 0x4d, 0xa7, 0xe9, 0x0b, 0x53, 0x0a, 0xab, + 0x67, 0x8f, 0x44, 0x20, 0xcd, 0xd1, 0xb8, 0x0a, 0x77, 0x53, 0xf7, 0x32, 0xc6, 0xa5, 0xef, 0xf9, + 0x5b, 0x6a, 0x86, 0xda, 0xee, 0x89, 0x57, 0x2d, 0xeb, 0xee, 0x4f, 0xcb, 0xb2, 0xa3, 0x5f, 0x1b, + 0x11, 0x62, 0xfd, 0x0f, 0xd2, 0x90, 0xef, 0x0a, 0xd3, 0xef, 0x0f, 0x6b, 0xbf, 0x9a, 0x82, 0xbc, + 0x21, 0x82, 0x89, 0x23, 0x79, 0x0d, 0x8a, 0x6a, 0x6c, 0xdb, 0x56, 0x35, 0x45, 0xd2, 0x45, 0xed, + 0xcf, 0xa2, 0x3b, 0x9b, 0x90, 0x1d, 0x09, 0x69, 0x56, 0x33, 0x34, 0x42, 0xb5, 0x19, 0xa9, 0xd4, + 0xe7, 0x37, 0xf7, 0x85, 0x34, 0x0d, 0xc2, 0xab, 0xfd, 0x3c, 0x05, 0x59, 0x6c, 0xf2, 0xdb, 0x50, + 0x1a, 0xda, 0x83, 0xa1, 0x63, 0x0f, 0x86, 0x52, 0x0b, 0x12, 0x03, 0xf8, 0x87, 0xb0, 0x1e, 0x35, + 0x0c, 0xd3, 0x1d, 0x08, 0x94, 0x68, 0x91, 0xf2, 0xd3, 0x4b, 0x63, 0x16, 0x99, 0x57, 0xa1, 0x40, + 0xeb, 0xa1, 0x6d, 0x91, 0x46, 0x97, 0x8c, 0xb0, 0x89, 0xea, 0x16, 0xce, 0xd4, 0x63, 0x71, 0x51, + 0xcd, 0xd2, 0xdb, 0x24, 0x88, 0x37, 0x60, 0x3d, 0x6c, 0x6e, 0xeb, 0xd1, 0xc8, 0x5d, 0x3d, 0x1a, + 0xb3, 0xf8, 0xf5, 0x7f, 0xb4, 0x07, 0x39, 0x5a, 0x96, 0x7c, 0x0d, 0xd2, 0x76, 0x38, 0xd0, 0x69, + 0xdb, 0xe2, 0x0f, 0x20, 0x7f, 0x62, 0x0b, 0xc7, 0x7a, 0xe1, 0x08, 0x6b, 0x34, 0xde, 0x82, 0x55, + 0x5f, 0x04, 0xd2, 0xb7, 0xb5, 0xf6, 0xab, 0x05, 0xfa, 0xc5, 0x45, 0x36, 0x60, 0xd3, 0x48, 0x20, + 0x1a, 0x53, 0x64, 0xd8, 0xed, 0xfe, 0xd0, 0x76, 0x2c, 0x5f, 0xb8, 0x6d, 0x4b, 0xad, 0xd3, 0x92, + 0x91, 0x04, 0xf1, 0x7b, 0xb0, 0x7e, 0x6c, 0xf6, 0x4f, 0x07, 0xbe, 0x37, 0x71, 0x71, 0x41, 0x78, + 0x3e, 0x75, 0xbb, 0x64, 0xcc, 0x82, 0xf9, 0x1b, 0x90, 0x33, 0x1d, 0x7b, 0xe0, 0xd2, 0x4a, 0x5c, + 0x9b, 0x9b, 0x74, 0x25, 0x4b, 0x03, 0x31, 0x0c, 0x85, 0xc8, 0x77, 0xa1, 0x72, 0x26, 0x7c, 0x69, + 0xf7, 0x4d, 0x87, 0xe0, 0xd5, 0x02, 0x51, 0xd6, 0x17, 0x52, 0x3e, 0x4d, 0x62, 0x1a, 0xd3, 0x84, + 0xbc, 0x0d, 0x10, 0xa0, 0x99, 0xa4, 0xe9, 0xd4, 0x6b, 0xe1, 0xb5, 0x85, 0x6c, 0x9a, 0x9e, 0x2b, + 0x85, 0x2b, 0x37, 0xbb, 0x11, 0xfa, 0xee, 0x8a, 0x91, 0x20, 0xe6, 0xef, 0x42, 0x56, 0x8a, 0x73, + 0x59, 0x5d, 0xbb, 0x62, 0x44, 0x43, 0x26, 0x3d, 0x71, 0x2e, 0x77, 0x57, 0x0c, 0x22, 0x40, 0x42, + 0x5c, 0x64, 0xd5, 0xf5, 0x25, 0x08, 0x71, 0x5d, 0x22, 0x21, 0x12, 0xf0, 0x0f, 0x20, 0xef, 0x98, + 0x17, 0xde, 0x44, 0x56, 0x19, 0x91, 0x7e, 0xe9, 0x4a, 0xd2, 0x3d, 0x42, 0xdd, 0x5d, 0x31, 0x34, + 0x11, 0x7f, 0x1b, 0x32, 0x96, 0x7d, 0x56, 0xdd, 0x20, 0xda, 0xbb, 0x57, 0xd2, 0x6e, 0xdb, 0x67, + 0xbb, 0x2b, 0x06, 0xa2, 0xf3, 0x26, 0x14, 0x8f, 0x3d, 0xef, 0x74, 0x64, 0xfa, 0xa7, 0x55, 0x4e, + 0xa4, 0x5f, 0xbe, 0x92, 0x74, 0x4b, 0x23, 0xef, 0xae, 0x18, 0x11, 0x21, 0x76, 0xd9, 0xee, 0x7b, + 0x6e, 0xf5, 0xda, 0x12, 0x5d, 0x6e, 0xf7, 0x3d, 0x17, 0xbb, 0x8c, 0x04, 0x48, 0xe8, 0xd8, 0xee, + 0x69, 0xf5, 0xfa, 0x12, 0x84, 0x68, 0x39, 0x91, 0x10, 0x09, 0x50, 0x6c, 0xcb, 0x94, 0xe6, 0x99, + 0x2d, 0x9e, 0x57, 0x6f, 0x2c, 0x21, 0xf6, 0xb6, 0x46, 0x46, 0xb1, 0x43, 0x42, 0x64, 0x12, 0x2e, + 0xcd, 0xea, 0xcd, 0x25, 0x98, 0x84, 0x16, 0x1d, 0x99, 0x84, 0x84, 0xfc, 0x4f, 0xc3, 0xc6, 0x89, + 0x30, 0xe5, 0xc4, 0x17, 0x56, 0xbc, 0xd1, 0xdd, 0x22, 0x6e, 0x9b, 0x57, 0xcf, 0xfd, 0x2c, 0xd5, + 0xee, 0x8a, 0x31, 0xcf, 0x8a, 0xbf, 0x0f, 0x39, 0xc7, 0x94, 0xe2, 0xbc, 0x5a, 0x25, 0x9e, 0xf5, + 0x17, 0x28, 0x85, 0x14, 0xe7, 0xbb, 0x2b, 0x86, 0x22, 0xe1, 0xdf, 0x85, 0x75, 0x69, 0x1e, 0x3b, + 0xa2, 0x73, 0xa2, 0x11, 0x82, 0xea, 0xe7, 0x88, 0xcb, 0xeb, 0x57, 0xab, 0xf3, 0x34, 0xcd, 0xee, + 0x8a, 0x31, 0xcb, 0x06, 0xa5, 0x22, 0x50, 0xb5, 0xb6, 0x84, 0x54, 0xc4, 0x0f, 0xa5, 0x22, 0x12, + 0xbe, 0x07, 0x65, 0x7a, 0x68, 0x7a, 0xce, 0x64, 0xe4, 0x56, 0x3f, 0x4f, 0x1c, 0xee, 0xbd, 0x98, + 0x83, 0xc2, 0xdf, 0x5d, 0x31, 0x92, 0xe4, 0x38, 0x89, 0xd4, 0x34, 0xbc, 0xe7, 0xd5, 0xdb, 0x4b, + 0x4c, 0x62, 0x4f, 0x23, 0xe3, 0x24, 0x86, 0x84, 0xb8, 0xf4, 0x9e, 0xdb, 0xd6, 0x40, 0xc8, 0xea, + 0x17, 0x96, 0x58, 0x7a, 0xcf, 0x08, 0x15, 0x97, 0x9e, 0x22, 0x42, 0x35, 0xee, 0x0f, 0x4d, 0x59, + 0xbd, 0xb3, 0x84, 0x1a, 0x37, 0x87, 0x26, 0xd9, 0x0a, 0x24, 0xa8, 0x7d, 0x0a, 0xab, 0x49, 0xab, + 0xcc, 0x39, 0x64, 0x7d, 0x61, 0xaa, 0x1d, 0xa1, 0x68, 0xd0, 0x33, 0xc2, 0x84, 0x65, 0x4b, 0xda, + 0x11, 0x8a, 0x06, 0x3d, 0xf3, 0x9b, 0x90, 0x57, 0xbe, 0x09, 0x19, 0xfc, 0xa2, 0xa1, 0x5b, 0x88, + 0x6b, 0xf9, 0xe6, 0x80, 0xf6, 0xad, 0xa2, 0x41, 0xcf, 0x88, 0x6b, 0xf9, 0xde, 0xb8, 0xe3, 0x92, + 0xc1, 0x2e, 0x1a, 0xba, 0x55, 0xfb, 0xeb, 0x1f, 0x40, 0x41, 0x0b, 0x55, 0xfb, 0xbb, 0x29, 0xc8, + 0x2b, 0x83, 0xc2, 0xbf, 0x05, 0xb9, 0x40, 0x5e, 0x38, 0x82, 0x64, 0x58, 0x7b, 0xf8, 0x95, 0x25, + 0x8c, 0xd0, 0x66, 0x17, 0x09, 0x0c, 0x45, 0x57, 0x37, 0x20, 0x47, 0x6d, 0x5e, 0x80, 0x8c, 0xe1, + 0x3d, 0x67, 0x2b, 0x1c, 0x20, 0xaf, 0x26, 0x8b, 0xa5, 0x10, 0xb8, 0x6d, 0x9f, 0xb1, 0x34, 0x02, + 0x77, 0x85, 0x69, 0x09, 0x9f, 0x65, 0x78, 0x05, 0x4a, 0xe1, 0xb4, 0x04, 0x2c, 0xcb, 0x19, 0xac, + 0x26, 0x26, 0x3c, 0x60, 0xb9, 0xda, 0xff, 0xca, 0x42, 0x16, 0xd7, 0x3f, 0x7f, 0x05, 0x2a, 0xd2, + 0xf4, 0x07, 0x42, 0x39, 0xc2, 0x91, 0x93, 0x32, 0x0d, 0xe4, 0x1f, 0x84, 0x7d, 0x48, 0x53, 0x1f, + 0x5e, 0x7b, 0xa1, 0x5d, 0x99, 0xea, 0x41, 0x62, 0x17, 0xce, 0x2c, 0xb7, 0x0b, 0xef, 0x40, 0x11, + 0xcd, 0x59, 0xd7, 0xfe, 0x54, 0xd0, 0xd0, 0xaf, 0x3d, 0xbc, 0xff, 0xe2, 0x4f, 0xb6, 0x35, 0x85, + 0x11, 0xd1, 0xf2, 0x36, 0x94, 0xfa, 0xa6, 0x6f, 0x91, 0x30, 0x34, 0x5b, 0x6b, 0x0f, 0xbf, 0xfa, + 0x62, 0x46, 0xcd, 0x90, 0xc4, 0x88, 0xa9, 0x79, 0x07, 0xca, 0x96, 0x08, 0xfa, 0xbe, 0x3d, 0x26, + 0xf3, 0xa6, 0xf6, 0xe2, 0xaf, 0xbd, 0x98, 0xd9, 0x76, 0x4c, 0x64, 0x24, 0x39, 0xa0, 0x47, 0xe6, + 0x47, 0xf6, 0xad, 0x40, 0x0e, 0x42, 0x0c, 0xa8, 0xbf, 0x0b, 0xc5, 0xb0, 0x3f, 0x7c, 0x15, 0x8a, + 0xf8, 0xf7, 0xc0, 0x73, 0x05, 0x5b, 0xc1, 0xb9, 0xc5, 0x56, 0x77, 0x64, 0x3a, 0x0e, 0x4b, 0xf1, + 0x35, 0x00, 0x6c, 0xee, 0x0b, 0xcb, 0x9e, 0x8c, 0x58, 0xba, 0xfe, 0x0b, 0xa1, 0xb6, 0x14, 0x21, + 0x7b, 0x68, 0x0e, 0x90, 0x62, 0x15, 0x8a, 0xa1, 0xb9, 0x66, 0x29, 0xa4, 0xdf, 0x36, 0x83, 0xe1, + 0xb1, 0x67, 0xfa, 0x16, 0x4b, 0xf3, 0x32, 0x14, 0x1a, 0x7e, 0x7f, 0x68, 0x9f, 0x09, 0x96, 0xa9, + 0x3f, 0x80, 0x72, 0x42, 0x5e, 0x64, 0xa1, 0x3f, 0x5a, 0x82, 0x5c, 0xc3, 0xb2, 0x84, 0xc5, 0x52, + 0x48, 0xa0, 0x3b, 0xc8, 0xd2, 0xf5, 0xaf, 0x42, 0x29, 0x1a, 0x2d, 0x44, 0xc7, 0x8d, 0x9b, 0xad, + 0xe0, 0x13, 0x82, 0x59, 0x0a, 0xb5, 0xb2, 0xed, 0x3a, 0xb6, 0x2b, 0x58, 0xba, 0xf6, 0x67, 0x48, + 0x55, 0xf9, 0x37, 0xa7, 0x17, 0xc4, 0xab, 0x2f, 0xda, 0x59, 0xa7, 0x57, 0xc3, 0xe7, 0x13, 0xfd, + 0xdb, 0xb3, 0x49, 0xb8, 0x22, 0x64, 0xb7, 0x3d, 0x19, 0xb0, 0x54, 0xed, 0xbf, 0xa7, 0xa1, 0x18, + 0x6e, 0xa8, 0x18, 0x13, 0x4c, 0x7c, 0x47, 0x2b, 0x34, 0x3e, 0xf2, 0xeb, 0x90, 0x93, 0xb6, 0xd4, + 0x6a, 0x5c, 0x32, 0x54, 0x03, 0x7d, 0xb5, 0xe4, 0xcc, 0x2a, 0x07, 0x76, 0x76, 0xaa, 0xec, 0x91, + 0x39, 0x10, 0xbb, 0x66, 0x30, 0xd4, 0x2e, 0x6c, 0x0c, 0x40, 0xfa, 0x13, 0xf3, 0x0c, 0x75, 0x8e, + 0xde, 0x2b, 0x2f, 0x2e, 0x09, 0xe2, 0x6f, 0x41, 0x16, 0x3b, 0xa8, 0x95, 0xe6, 0x4f, 0xcd, 0x74, + 0x18, 0xd5, 0xe4, 0xd0, 0x17, 0x38, 0x3d, 0x9b, 0x18, 0x81, 0x19, 0x84, 0xcc, 0x5f, 0x85, 0x35, + 0xb5, 0x08, 0x3b, 0x61, 0xfc, 0x50, 0x20, 0xce, 0x33, 0x50, 0xde, 0xc0, 0xe1, 0x34, 0xa5, 0xa8, + 0x16, 0x97, 0xd0, 0xef, 0x70, 0x70, 0x36, 0xbb, 0x48, 0x62, 0x28, 0xca, 0xfa, 0x3b, 0x38, 0xa6, + 0xa6, 0x14, 0x38, 0xcd, 0xad, 0xd1, 0x58, 0x5e, 0x28, 0xa5, 0xd9, 0x11, 0xb2, 0x3f, 0xb4, 0xdd, + 0x01, 0x4b, 0xa9, 0x21, 0xc6, 0x49, 0x24, 0x14, 0xdf, 0xf7, 0x7c, 0x96, 0xa9, 0xd5, 0x20, 0x8b, + 0x3a, 0x8a, 0x46, 0xd2, 0x35, 0x47, 0x42, 0x8f, 0x34, 0x3d, 0xd7, 0xae, 0xc1, 0xc6, 0xdc, 0x7e, + 0x5c, 0xfb, 0xe7, 0x79, 0xa5, 0x21, 0x48, 0x41, 0xbe, 0xa0, 0xa6, 0x20, 0x37, 0xef, 0xa5, 0x6c, + 0x0c, 0x72, 0x99, 0xb6, 0x31, 0x1f, 0x40, 0x0e, 0x3b, 0x16, 0x9a, 0x98, 0x25, 0xc8, 0xf7, 0x11, + 0xdd, 0x50, 0x54, 0x18, 0xc1, 0xf4, 0x87, 0xa2, 0x7f, 0x2a, 0x2c, 0x6d, 0xeb, 0xc3, 0x26, 0x2a, + 0x4d, 0x3f, 0xe1, 0x9e, 0xab, 0x06, 0xa9, 0x44, 0xdf, 0x73, 0x5b, 0x23, 0xef, 0x7b, 0x36, 0xcd, + 0x2b, 0xaa, 0x44, 0x08, 0x08, 0xdf, 0xb6, 0x51, 0x47, 0xf4, 0xb4, 0xc5, 0x80, 0x5a, 0x0b, 0x72, + 0xf4, 0x6d, 0x5c, 0x09, 0x4a, 0x66, 0x95, 0x69, 0x78, 0x75, 0x39, 0x99, 0xb5, 0xc8, 0xb5, 0x1f, + 0xa7, 0x21, 0x8b, 0x6d, 0x7e, 0x1f, 0x72, 0x3e, 0xc6, 0x61, 0x34, 0x9c, 0x97, 0xc5, 0x6c, 0x0a, + 0x85, 0x7f, 0x4b, 0xab, 0x62, 0x7a, 0x09, 0x65, 0x89, 0xbe, 0x98, 0x54, 0xcb, 0xeb, 0x90, 0x1b, + 0x9b, 0xbe, 0x39, 0xd2, 0xeb, 0x44, 0x35, 0xea, 0x3f, 0x4c, 0x41, 0x16, 0x91, 0xf8, 0x06, 0x54, + 0xba, 0xd2, 0xb7, 0x4f, 0x85, 0x1c, 0xfa, 0xde, 0x64, 0x30, 0x54, 0x9a, 0xf4, 0x58, 0x5c, 0x28, + 0x7b, 0xa3, 0x0c, 0x82, 0x34, 0x1d, 0xbb, 0xcf, 0xd2, 0xa8, 0x55, 0x5b, 0x9e, 0x63, 0xb1, 0x0c, + 0x5f, 0x87, 0xf2, 0x13, 0xd7, 0x12, 0x7e, 0xd0, 0xf7, 0x7c, 0x61, 0xb1, 0xac, 0x5e, 0xdd, 0xa7, + 0x2c, 0x47, 0x7b, 0x99, 0x38, 0x97, 0x14, 0x0b, 0xb1, 0x3c, 0xbf, 0x06, 0xeb, 0x5b, 0xd3, 0x01, + 0x12, 0x2b, 0xa0, 0x4d, 0xda, 0x17, 0x2e, 0x2a, 0x19, 0x2b, 0x2a, 0x25, 0xf6, 0xbe, 0x67, 0xb3, + 0x12, 0x7e, 0x4c, 0xad, 0x13, 0x06, 0xf5, 0x7f, 0x99, 0x0a, 0x2d, 0x47, 0x05, 0x4a, 0x87, 0xa6, + 0x6f, 0x0e, 0x7c, 0x73, 0x8c, 0xf2, 0x95, 0xa1, 0xa0, 0x36, 0xce, 0x37, 0x95, 0x75, 0x53, 0x8d, + 0x87, 0xca, 0x36, 0xaa, 0xc6, 0x5b, 0x2c, 0x13, 0x37, 0xde, 0x66, 0x59, 0xfc, 0xc6, 0x77, 0x26, + 0x9e, 0x14, 0x2c, 0x47, 0xb6, 0xce, 0xb3, 0x04, 0xcb, 0x23, 0xb0, 0x87, 0x16, 0x85, 0x15, 0xb0, + 0xcf, 0x4d, 0xd4, 0x9f, 0x63, 0xef, 0x9c, 0x15, 0x51, 0x0c, 0x1c, 0x46, 0x61, 0xb1, 0x12, 0xbe, + 0x39, 0x98, 0x8c, 0x8e, 0x05, 0x76, 0x13, 0xf0, 0x4d, 0xcf, 0x1b, 0x0c, 0x1c, 0xc1, 0xca, 0x38, + 0x06, 0x09, 0xe3, 0xcb, 0x56, 0xc9, 0xd2, 0x9a, 0x8e, 0xe3, 0x4d, 0x24, 0xab, 0xd4, 0xfe, 0x20, + 0x03, 0x59, 0x8c, 0x6e, 0x70, 0xed, 0x0c, 0xd1, 0xce, 0xe8, 0xb5, 0x83, 0xcf, 0xd1, 0x0a, 0x4c, + 0xc7, 0x2b, 0x90, 0xbf, 0xaf, 0x67, 0x3a, 0xb3, 0x84, 0x95, 0x45, 0xc6, 0xc9, 0x49, 0xe6, 0x90, + 0x1d, 0xd9, 0x23, 0xa1, 0x6d, 0x1d, 0x3d, 0x23, 0x2c, 0xc0, 0xfd, 0x38, 0x47, 0xc9, 0x13, 0x7a, + 0xc6, 0x55, 0x63, 0xe2, 0xb6, 0xd0, 0x90, 0xb4, 0x06, 0x32, 0x46, 0xd8, 0x5c, 0x60, 0xbd, 0x4a, + 0x0b, 0xad, 0xd7, 0x07, 0xa1, 0xf5, 0x2a, 0x2c, 0xb1, 0xea, 0x49, 0xcc, 0xa4, 0xe5, 0x8a, 0x8d, + 0x46, 0x71, 0x79, 0xf2, 0xc4, 0x66, 0xb2, 0xad, 0xb5, 0x36, 0xde, 0xe8, 0x8a, 0x6a, 0x94, 0x59, + 0x0a, 0x67, 0x93, 0x96, 0xab, 0xb2, 0x79, 0x4f, 0x6d, 0x4b, 0x78, 0x2c, 0x43, 0x1b, 0xe1, 0xc4, + 0xb2, 0x3d, 0x96, 0x45, 0xcf, 0xeb, 0x70, 0x7b, 0x87, 0xe5, 0xea, 0xaf, 0x26, 0xb6, 0xa4, 0xc6, + 0x44, 0x7a, 0x8a, 0x0d, 0xa9, 0x6f, 0x4a, 0x69, 0xe3, 0xb1, 0xb0, 0x58, 0xba, 0xfe, 0xf5, 0x05, + 0x66, 0xb6, 0x02, 0xa5, 0x27, 0x63, 0xc7, 0x33, 0xad, 0x2b, 0xec, 0xec, 0x2a, 0x40, 0x1c, 0x55, + 0xd7, 0xfe, 0x4d, 0x3d, 0xde, 0xce, 0xd1, 0x17, 0x0d, 0xbc, 0x89, 0xdf, 0x17, 0x64, 0x42, 0x4a, + 0x86, 0x6e, 0xf1, 0x6f, 0x43, 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, 0xff, 0x90, 0x87, 0x2c, 0x8d, 0xfc, 0x6c, 0x8e, 0xab, 0x39, 0x65, + 0xd2, 0x1f, 0x2c, 0x3f, 0xd5, 0x33, 0x2b, 0x9e, 0x2c, 0x48, 0x26, 0x61, 0x41, 0xbe, 0x0d, 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, 0xdf, 0x39, 0x28, 0x86, 0x83, 0x17, 0x9e, 0x21, 0xa4, 0xe2, + 0x33, 0x04, 0x74, 0xe3, 0x82, 0xa7, 0x76, 0x60, 0x1f, 0x6b, 0xb7, 0xb4, 0x68, 0xc4, 0x00, 0xf4, + 0x84, 0x9e, 0xdb, 0x96, 0x1c, 0xd2, 0x9a, 0xc9, 0x19, 0xaa, 0xc1, 0xef, 0xc1, 0xba, 0x85, 0xe3, + 0xe0, 0xf6, 0x9d, 0x89, 0x25, 0x7a, 0xb8, 0x8b, 0xaa, 0x34, 0xc1, 0x2c, 0x98, 0x7f, 0x0c, 0x20, + 0xed, 0x91, 0xd8, 0xf1, 0xfc, 0x91, 0x29, 0x75, 0x6c, 0xf0, 0x8d, 0x97, 0xd3, 0xea, 0xcd, 0x5e, + 0xc4, 0xc0, 0x48, 0x30, 0x43, 0xd6, 0xf8, 0x35, 0xcd, 0xba, 0xf0, 0x99, 0x58, 0x6f, 0x47, 0x0c, + 0x8c, 0x04, 0x33, 0xde, 0x83, 0xc2, 0x89, 0xe7, 0x8f, 0x26, 0x8e, 0xa9, 0xf7, 0xdc, 0xf7, 0x5f, + 0x92, 0xef, 0x8e, 0xa2, 0x26, 0xdb, 0x13, 0xb2, 0xaa, 0xff, 0x22, 0x40, 0xfc, 0x3d, 0x7e, 0x13, + 0xf8, 0xbe, 0xe7, 0xca, 0x61, 0xe3, 0xf8, 0xd8, 0xdf, 0x12, 0x27, 0x9e, 0x2f, 0xb6, 0x4d, 0xdc, + 0x2c, 0x6f, 0xc0, 0x46, 0x04, 0x6f, 0x9c, 0x48, 0xe1, 0x23, 0x98, 0x26, 0xb4, 0x3b, 0xf4, 0x7c, + 0xa9, 0x3c, 0x36, 0x7a, 0x7c, 0xd2, 0x65, 0x19, 0xdc, 0xa0, 0xdb, 0xdd, 0x0e, 0xcb, 0xd6, 0xef, + 0x01, 0xc4, 0x03, 0x45, 0x91, 0x0d, 0x3d, 0xbd, 0xf9, 0x50, 0xc7, 0x39, 0xd4, 0x7a, 0xf8, 0x36, + 0x4b, 0xd5, 0x7f, 0x96, 0x82, 0x72, 0x42, 0xc0, 0xe9, 0x08, 0xb8, 0xe9, 0x4d, 0x5c, 0xa9, 0x42, + 0x6e, 0x7a, 0x7c, 0x6a, 0x3a, 0x13, 0xdc, 0xaa, 0x37, 0xa0, 0x42, 0xed, 0x6d, 0x3b, 0x90, 0xb6, + 0xdb, 0x97, 0x2c, 0x13, 0xa1, 0xa8, 0x6d, 0x3e, 0x1b, 0xa1, 0x1c, 0x78, 0x1a, 0x94, 0xe3, 0x0c, + 0x56, 0x0f, 0x85, 0xdf, 0x17, 0x21, 0x12, 0xb9, 0xb6, 0x1a, 0x12, 0xa1, 0x29, 0xd7, 0xd6, 0x94, + 0xc3, 0xee, 0x64, 0xc4, 0x8a, 0xe8, 0x22, 0x62, 0xa3, 0x71, 0x26, 0x7c, 0xf4, 0x4c, 0x4a, 0xf8, + 0x1d, 0x04, 0xa0, 0x6e, 0x9b, 0x2e, 0x83, 0x10, 0x7b, 0xdf, 0x76, 0x59, 0x39, 0x6a, 0x98, 0xe7, + 0x6c, 0x15, 0xe5, 0xa7, 0x40, 0x80, 0x55, 0x6a, 0xff, 0x2d, 0x03, 0x59, 0xb4, 0xd2, 0x18, 0xb9, + 0x26, 0x4d, 0x8a, 0xd2, 0xfc, 0x24, 0xe8, 0xb3, 0xed, 0x2d, 0xc8, 0x3b, 0xb9, 0xb7, 0xbc, 0x07, + 0xe5, 0xfe, 0x24, 0x90, 0xde, 0x88, 0x36, 0x56, 0x7d, 0x76, 0x75, 0x73, 0x2e, 0x07, 0x44, 0xc3, + 0x69, 0x24, 0x51, 0xf9, 0x3b, 0x90, 0x3f, 0x51, 0x3a, 0xac, 0xb2, 0x40, 0x5f, 0xb8, 0x64, 0xef, + 0xd5, 0x7a, 0xaa, 0x91, 0xb1, 0x5f, 0xf6, 0xdc, 0xfa, 0x4b, 0x82, 0xf4, 0x1e, 0x9a, 0x8f, 0xf6, + 0xd0, 0x5f, 0x84, 0x35, 0x81, 0x03, 0x7e, 0xe8, 0x98, 0x7d, 0x31, 0x12, 0x6e, 0xb8, 0x68, 0xde, + 0x7e, 0x89, 0x1e, 0xd3, 0x8c, 0x51, 0xb7, 0x67, 0x78, 0xa1, 0x1d, 0x71, 0x3d, 0xdc, 0xca, 0xc3, + 0x30, 0xbd, 0x68, 0xc4, 0x80, 0xfa, 0x97, 0xb5, 0xf5, 0x2b, 0x40, 0xa6, 0x11, 0xf4, 0x75, 0x3e, + 0x43, 0x04, 0x7d, 0x15, 0x2c, 0x35, 0x69, 0x38, 0x58, 0xba, 0xfe, 0x26, 0x94, 0xa2, 0x2f, 0xa0, + 0xf2, 0x1c, 0x78, 0xb2, 0x3b, 0x16, 0x7d, 0xfb, 0xc4, 0x16, 0x96, 0xd2, 0xcf, 0xae, 0x34, 0x7d, + 0xa9, 0x52, 0x82, 0x2d, 0xd7, 0x62, 0xe9, 0xda, 0x6f, 0x17, 0x21, 0xaf, 0xb6, 0x52, 0xdd, 0xe1, + 0x52, 0xd4, 0xe1, 0xef, 0x40, 0xd1, 0x1b, 0x0b, 0xdf, 0x94, 0x9e, 0xaf, 0xf3, 0x30, 0xef, 0xbc, + 0xcc, 0xd6, 0xbc, 0xd9, 0xd1, 0xc4, 0x46, 0xc4, 0x66, 0x56, 0x9b, 0xd2, 0xf3, 0xda, 0x74, 0x1f, + 0x58, 0xb8, 0x0b, 0x1f, 0xfa, 0x48, 0x27, 0x2f, 0x74, 0x54, 0x3d, 0x07, 0xe7, 0x3d, 0x28, 0xf5, + 0x3d, 0xd7, 0xb2, 0xa3, 0x9c, 0xcc, 0xda, 0xc3, 0xaf, 0xbf, 0x94, 0x84, 0xcd, 0x90, 0xda, 0x88, + 0x19, 0xf1, 0xd7, 0x21, 0x77, 0x86, 0x6a, 0x46, 0xfa, 0x74, 0xb9, 0x12, 0x2a, 0x24, 0xfe, 0x09, + 0x94, 0xbf, 0x3f, 0xb1, 0xfb, 0xa7, 0x9d, 0x64, 0xce, 0xef, 0xbd, 0x97, 0x92, 0xe2, 0x3b, 0x31, + 0xbd, 0x91, 0x64, 0x96, 0x50, 0xed, 0xc2, 0x1f, 0x42, 0xb5, 0x8b, 0xf3, 0xaa, 0x6d, 0x40, 0xc5, + 0x15, 0x81, 0x14, 0xd6, 0x8e, 0xf6, 0xbc, 0xe0, 0x33, 0x78, 0x5e, 0xd3, 0x2c, 0xea, 0x5f, 0x82, + 0x62, 0x38, 0xe1, 0x3c, 0x0f, 0xe9, 0x03, 0x0c, 0x71, 0xf2, 0x90, 0xee, 0xf8, 0x4a, 0xdb, 0x1a, + 0xa8, 0x6d, 0xf5, 0xdf, 0x4b, 0x41, 0x29, 0x1a, 0xf4, 0x69, 0xcb, 0xd9, 0xfa, 0xfe, 0xc4, 0x74, + 0x58, 0x8a, 0x82, 0x5f, 0x4f, 0xaa, 0x16, 0x19, 0xeb, 0x47, 0x74, 0xf4, 0xee, 0xb3, 0x0c, 0x6d, + 0xf8, 0x22, 0x08, 0x58, 0x96, 0x73, 0x58, 0xd3, 0xe0, 0x8e, 0xaf, 0x50, 0x73, 0x68, 0xf8, 0xf0, + 0x6d, 0x08, 0xc8, 0x2b, 0xff, 0xe0, 0x54, 0x28, 0x03, 0x79, 0xe0, 0x49, 0x6a, 0x14, 0x51, 0xa8, + 0xb6, 0xcb, 0x4a, 0xf8, 0xcd, 0x03, 0x4f, 0xb6, 0xd1, 0x24, 0x46, 0xc1, 0x56, 0x39, 0xfc, 0x3c, + 0xb5, 0xc8, 0x22, 0x36, 0x1c, 0xa7, 0xed, 0xb2, 0x8a, 0x7e, 0xa1, 0x5a, 0x6b, 0xc8, 0xb1, 0x75, + 0x6e, 0xf6, 0x91, 0x7c, 0x1d, 0x2d, 0x2c, 0xd2, 0xe8, 0x36, 0xc3, 0x25, 0xd9, 0x3a, 0xb7, 0x03, + 0x19, 0xb0, 0x8d, 0xfa, 0xbf, 0x4f, 0x41, 0x39, 0x31, 0xc1, 0x18, 0xcc, 0x11, 0x22, 0x6e, 0x65, + 0x2a, 0xb6, 0xfb, 0x18, 0x87, 0xd1, 0xb7, 0xc2, 0x6d, 0xaa, 0xe7, 0xe1, 0x63, 0x1a, 0xbf, 0xd7, + 0xf3, 0x46, 0x9e, 0xef, 0x7b, 0xcf, 0x95, 0x23, 0xb3, 0x67, 0x06, 0xf2, 0x99, 0x10, 0xa7, 0x2c, + 0x8b, 0x5d, 0x6d, 0x4e, 0x7c, 0x5f, 0xb8, 0x0a, 0x90, 0x23, 0xe1, 0xc4, 0xb9, 0x6a, 0xe5, 0x91, + 0x29, 0x22, 0xd3, 0x3e, 0xc8, 0x0a, 0x68, 0x08, 0x34, 0xb6, 0x82, 0x14, 0x11, 0x01, 0xd1, 0x55, + 0xb3, 0x84, 0x9b, 0x8a, 0xca, 0x37, 0x74, 0x4e, 0xb6, 0xcd, 0x8b, 0xa0, 0x31, 0xf0, 0x18, 0xcc, + 0x02, 0x0f, 0xbc, 0xe7, 0xac, 0x5c, 0x9b, 0x00, 0xc4, 0x11, 0x16, 0x46, 0x96, 0xa8, 0x10, 0xd1, + 0x89, 0x80, 0x6e, 0xf1, 0x0e, 0x00, 0x3e, 0x11, 0x66, 0x18, 0x5e, 0xbe, 0x84, 0xdb, 0x4b, 0x74, + 0x46, 0x82, 0x45, 0xed, 0xcf, 0x41, 0x29, 0x7a, 0xc1, 0xab, 0x50, 0x20, 0x07, 0x35, 0xfa, 0x6c, + 0xd8, 0x44, 0x6f, 0xcb, 0x76, 0x2d, 0x71, 0x4e, 0x76, 0x25, 0x67, 0xa8, 0x06, 0x4a, 0x39, 0xb4, + 0x2d, 0x4b, 0xb8, 0xe1, 0xb9, 0x8d, 0x6a, 0x2d, 0x3a, 0x5d, 0xcf, 0x2e, 0x3c, 0x5d, 0xaf, 0xfd, + 0x12, 0x94, 0x13, 0x21, 0xe0, 0xa5, 0xdd, 0x4e, 0x08, 0x96, 0x9e, 0x16, 0xec, 0x36, 0x94, 0xc2, + 0x8a, 0x8e, 0x80, 0xf6, 0xb6, 0x92, 0x11, 0x03, 0x6a, 0xff, 0x34, 0x8d, 0x7e, 0x29, 0x76, 0x6d, + 0x36, 0x6c, 0xdb, 0x81, 0x7c, 0x20, 0x4d, 0x39, 0x09, 0x4b, 0x13, 0x96, 0x5c, 0xa0, 0x5d, 0xa2, + 0xd9, 0x5d, 0x31, 0x34, 0x35, 0xff, 0x00, 0x32, 0xd2, 0x1c, 0xe8, 0xb4, 0xe7, 0x57, 0x96, 0x63, + 0xd2, 0x33, 0x07, 0xbb, 0x2b, 0x06, 0xd2, 0xf1, 0x3d, 0x28, 0xf6, 0x75, 0xa6, 0x4a, 0x1b, 0xc5, + 0x25, 0x23, 0xab, 0x30, 0xbf, 0xb5, 0xbb, 0x62, 0x44, 0x1c, 0xf8, 0xb7, 0x21, 0x8b, 0xbe, 0xa2, + 0xae, 0xe0, 0x58, 0x32, 0x62, 0xc4, 0xe5, 0xb2, 0xbb, 0x62, 0x10, 0xe5, 0x56, 0x01, 0x72, 0x64, + 0x83, 0x6b, 0x55, 0xc8, 0xab, 0xbe, 0xce, 0x8e, 0x5c, 0xed, 0x16, 0x64, 0x7a, 0xe6, 0x00, 0xfd, + 0x75, 0xdb, 0x0a, 0x74, 0xe2, 0x03, 0x1f, 0x6b, 0xaf, 0xc4, 0x59, 0xb7, 0x64, 0x42, 0x37, 0x35, + 0x95, 0xd0, 0xad, 0xe5, 0x21, 0x8b, 0x5f, 0xac, 0xdd, 0xbe, 0xca, 0xf7, 0xaf, 0xfd, 0xfd, 0x0c, + 0x86, 0x09, 0x52, 0x9c, 0x2f, 0x4c, 0x56, 0x7f, 0x04, 0xa5, 0xb1, 0xef, 0xf5, 0x45, 0x10, 0x78, + 0xbe, 0x76, 0x8e, 0x5e, 0x7f, 0xf1, 0x41, 0xf2, 0xe6, 0x61, 0x48, 0x63, 0xc4, 0xe4, 0xf5, 0x7f, + 0x95, 0x86, 0x52, 0xf4, 0x42, 0x45, 0x27, 0x52, 0x9c, 0xab, 0xc4, 0xe4, 0xbe, 0xf0, 0x47, 0xa6, + 0x6d, 0x29, 0xeb, 0xd1, 0x1c, 0x9a, 0xa1, 0x93, 0xfb, 0xb1, 0x37, 0x91, 0x93, 0x63, 0xa1, 0x12, + 0x52, 0x4f, 0xed, 0x91, 0xf0, 0x58, 0x96, 0x8e, 0x82, 0x50, 0xb1, 0xfb, 0x8e, 0x37, 0xb1, 0x58, + 0x0e, 0xdb, 0x8f, 0x68, 0x7b, 0xdb, 0x37, 0xc7, 0x81, 0xb2, 0x99, 0xfb, 0xb6, 0xef, 0xb1, 0x02, + 0x12, 0xed, 0xd8, 0x83, 0x91, 0xc9, 0x8a, 0xc8, 0xac, 0xf7, 0xdc, 0x96, 0x68, 0x84, 0x4b, 0xe8, + 0xa6, 0x76, 0xc6, 0xc2, 0xed, 0x4a, 0x5f, 0x08, 0xb9, 0x6f, 0x8e, 0x55, 0x86, 0xd2, 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, 0x14, 0xb7, 0xae, 0x4e, 0x8d, 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, 0xa8, + 0x3b, 0xb3, 0x3f, 0x65, 0xd7, 0xe9, 0xe4, 0xeb, 0x54, 0xc8, 0xfe, 0xf0, 0xc4, 0x3c, 0x66, 0x37, + 0xe2, 0x04, 0xdd, 0xcd, 0xda, 0x06, 0xac, 0xcf, 0x9c, 0xb1, 0xd7, 0x0a, 0x3a, 0x96, 0xac, 0x55, + 0xa0, 0x9c, 0x38, 0xfc, 0xac, 0xbd, 0x0a, 0xc5, 0xf0, 0x68, 0x14, 0x63, 0x6e, 0x3b, 0x50, 0x49, + 0x5d, 0xad, 0x24, 0x51, 0xbb, 0xf6, 0x3b, 0x29, 0xc8, 0xab, 0x73, 0x69, 0xbe, 0x15, 0xd5, 0x91, + 0xa4, 0x96, 0x38, 0x8b, 0x54, 0x44, 0xfa, 0x24, 0x37, 0x2a, 0x26, 0xb9, 0x0e, 0x39, 0x87, 0x82, + 0x6b, 0x6d, 0xbe, 0xa8, 0x91, 0xb0, 0x36, 0x99, 0xa4, 0xb5, 0xa9, 0x37, 0xa2, 0xd3, 0xe3, 0x30, + 0x91, 0x48, 0x5e, 0x61, 0xcf, 0x17, 0x42, 0x25, 0x09, 0x29, 0x36, 0x4e, 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, 0x57, + 0xb7, 0x5d, 0x57, 0xf8, 0x2c, 0x87, 0x73, 0x68, 0x88, 0x31, 0x7a, 0xb5, 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, 0xa2, 0x27, 0x55, 0x6a, 0x44, 0x1f, + 0x48, 0xe3, 0x0e, 0x46, 0xed, 0x8f, 0x26, 0x81, 0xb4, 0x4f, 0x2e, 0x58, 0xa6, 0xfe, 0x0c, 0x2a, + 0x53, 0x45, 0x49, 0xfc, 0x3a, 0xb0, 0x29, 0x00, 0x8a, 0xbe, 0xc2, 0x6f, 0xc1, 0xb5, 0x29, 0xe8, + 0xbe, 0x6d, 0x59, 0x94, 0xb9, 0x9d, 0x7d, 0x11, 0x76, 0x70, 0xab, 0x04, 0x85, 0xbe, 0x9a, 0xa5, + 0xfa, 0x21, 0x54, 0x68, 0xda, 0xf6, 0x85, 0x34, 0x3b, 0xae, 0x73, 0xf1, 0x87, 0xae, 0x1c, 0xab, + 0x7f, 0x55, 0x07, 0x58, 0x68, 0x2f, 0x4e, 0x7c, 0x6f, 0x44, 0xbc, 0x72, 0x06, 0x3d, 0x23, 0x77, + 0xe9, 0xe9, 0xb9, 0x4f, 0x4b, 0xaf, 0xfe, 0xeb, 0x25, 0x28, 0x34, 0xfa, 0x7d, 0x0c, 0x09, 0xe7, + 0xbe, 0xfc, 0x0e, 0xe4, 0xfb, 0x9e, 0x7b, 0x62, 0x0f, 0xb4, 0x3d, 0x9e, 0xf5, 0x0c, 0x35, 0x1d, + 0x2a, 0xdc, 0x89, 0x3d, 0x30, 0x34, 0x32, 0x92, 0xe9, 0xfd, 0x24, 0x77, 0x25, 0x99, 0x32, 0xaa, + 0xd1, 0xf6, 0xf1, 0x00, 0xb2, 0xb6, 0x7b, 0xe2, 0xe9, 0x32, 0xcf, 0xcf, 0x5f, 0x42, 0x44, 0xb5, + 0x8e, 0x84, 0x58, 0xfb, 0x2f, 0x29, 0xc8, 0xab, 0x4f, 0xf3, 0x57, 0x61, 0x4d, 0xb8, 0xb8, 0x98, + 0x42, 0x53, 0xae, 0x57, 0xd1, 0x0c, 0x14, 0x9d, 0x56, 0x0d, 0x11, 0xc7, 0x93, 0x81, 0xce, 0xa4, + 0x24, 0x41, 0xfc, 0x3d, 0xb8, 0xa5, 0x9a, 0x87, 0xbe, 0xf0, 0x85, 0x23, 0xcc, 0x40, 0x34, 0x87, + 0xa6, 0xeb, 0x0a, 0x47, 0x6f, 0xec, 0x97, 0xbd, 0xe6, 0x75, 0x58, 0x55, 0xaf, 0xba, 0x63, 0xb3, + 0x2f, 0x02, 0x7d, 0x7a, 0x37, 0x05, 0xe3, 0x5f, 0x83, 0x1c, 0x55, 0xc1, 0x56, 0xad, 0xab, 0xa7, + 0x52, 0x61, 0xd5, 0xbc, 0x68, 0xe7, 0x69, 0x00, 0xa8, 0x61, 0xc2, 0xa0, 0x4b, 0xaf, 0xfe, 0x2f, + 0x5e, 0x39, 0xae, 0x14, 0xff, 0x25, 0x88, 0x50, 0x3e, 0x4b, 0x38, 0x82, 0xca, 0x15, 0x71, 0x67, + 0x4c, 0xd3, 0x39, 0xc9, 0x14, 0xac, 0xf6, 0x4f, 0xb2, 0x90, 0xc5, 0x11, 0x46, 0xe4, 0xa1, 0x37, + 0x12, 0x51, 0xb6, 0x58, 0xb9, 0x1a, 0x53, 0x30, 0x74, 0x6d, 0x4c, 0x75, 0x60, 0x1f, 0xa1, 0x29, + 0xe3, 0x31, 0x0b, 0x46, 0xcc, 0xb1, 0xef, 0x9d, 0xd8, 0x4e, 0x8c, 0xa9, 0x9d, 0xa0, 0x19, 0x30, + 0xff, 0x3a, 0xdc, 0x1c, 0x99, 0xfe, 0xa9, 0x90, 0xb4, 0xba, 0x9f, 0x79, 0xfe, 0x69, 0x80, 0x23, + 0xd7, 0xb6, 0x74, 0x9a, 0xf1, 0x92, 0xb7, 0xfc, 0x75, 0xd8, 0x78, 0x1e, 0x36, 0xa3, 0x6f, 0xa8, + 0x44, 0xdf, 0xfc, 0x0b, 0x34, 0xb7, 0x96, 0x38, 0xb3, 0x89, 0x6f, 0x51, 0xd5, 0xc2, 0x86, 0x6d, + 0x54, 0x25, 0x53, 0x0d, 0x64, 0x57, 0x7f, 0x59, 0x9f, 0x17, 0x4d, 0x43, 0xd1, 0xdb, 0x52, 0x35, + 0x42, 0x41, 0xdb, 0xa2, 0x3c, 0x69, 0xc9, 0x88, 0x01, 0xa8, 0x68, 0xf4, 0xc9, 0xa7, 0xca, 0xa8, + 0x56, 0x54, 0x08, 0x9a, 0x00, 0x21, 0x86, 0x14, 0xfd, 0x61, 0xf8, 0x11, 0x95, 0xc4, 0x4c, 0x82, + 0xf8, 0x1d, 0x80, 0x81, 0x29, 0xc5, 0x73, 0xf3, 0xe2, 0x89, 0xef, 0x54, 0x85, 0x3a, 0xf8, 0x88, + 0x21, 0x18, 0xc4, 0x3a, 0x5e, 0xdf, 0x74, 0xba, 0xd2, 0xf3, 0xcd, 0x81, 0x38, 0x34, 0xe5, 0xb0, + 0x3a, 0x50, 0x41, 0xec, 0x2c, 0x1c, 0x7b, 0x2c, 0xed, 0x91, 0xf8, 0xc4, 0x73, 0x45, 0x75, 0xa8, + 0x7a, 0x1c, 0xb6, 0x51, 0x12, 0xd3, 0x35, 0x9d, 0x0b, 0x69, 0xf7, 0xb1, 0x2f, 0xb6, 0x92, 0x24, + 0x01, 0xa2, 0xb4, 0x81, 0x90, 0x38, 0x8e, 0x6d, 0xab, 0xfa, 0x3d, 0xd5, 0xd7, 0x08, 0x50, 0xef, + 0x00, 0xc4, 0x2a, 0x87, 0x76, 0xbc, 0x41, 0x87, 0x33, 0x6c, 0x45, 0xe5, 0x91, 0x5c, 0xcb, 0x76, + 0x07, 0xdb, 0x5a, 0xcb, 0x58, 0x0a, 0x81, 0x94, 0x1f, 0x10, 0x56, 0x04, 0x24, 0x4f, 0x82, 0x5a, + 0xc2, 0x62, 0x99, 0xfa, 0xff, 0x4d, 0x41, 0x39, 0x51, 0x8b, 0xf0, 0x47, 0x58, 0x3f, 0x81, 0xfb, + 0x2c, 0xee, 0xd4, 0x38, 0xa0, 0x4a, 0x03, 0xa3, 0x36, 0x0e, 0xb7, 0x2e, 0x95, 0xc0, 0xb7, 0x2a, + 0x1b, 0x90, 0x80, 0x7c, 0xa6, 0xda, 0x89, 0xfa, 0x43, 0x9d, 0x52, 0x29, 0x43, 0xe1, 0x89, 0x7b, + 0xea, 0x7a, 0xcf, 0x5d, 0xb5, 0x81, 0x52, 0x41, 0xcc, 0xd4, 0xd1, 0x5e, 0x58, 0xb3, 0x92, 0xa9, + 0xff, 0x83, 0xec, 0x4c, 0xed, 0x58, 0x0b, 0xf2, 0xca, 0x8f, 0x27, 0x17, 0x73, 0xbe, 0xd8, 0x27, + 0x89, 0xac, 0x8f, 0x91, 0x12, 0x20, 0x43, 0x13, 0xa3, 0x83, 0x1d, 0x55, 0x56, 0xa6, 0x17, 0x1e, + 0x77, 0x4d, 0x31, 0x0a, 0x8d, 0xe6, 0x54, 0x71, 0x71, 0xc4, 0xa1, 0xf6, 0x57, 0x52, 0x70, 0x7d, + 0x11, 0x4a, 0xb2, 0x04, 0x3b, 0x35, 0x5d, 0x82, 0xdd, 0x9d, 0x29, 0x69, 0x4e, 0x53, 0x6f, 0x1e, + 0xbc, 0xa4, 0x10, 0xd3, 0x05, 0xce, 0xf5, 0x1f, 0xa7, 0x60, 0x63, 0xae, 0xcf, 0x09, 0x07, 0x03, + 0x20, 0xaf, 0x34, 0x4b, 0x55, 0x1c, 0x45, 0x35, 0x20, 0x2a, 0x87, 0x4f, 0x5b, 0x6f, 0xa0, 0x0e, + 0xd5, 0x75, 0x11, 0xb7, 0xf2, 0x5f, 0x71, 0xd6, 0xd0, 0xb2, 0x0f, 0x84, 0xca, 0x90, 0x2a, 0x2f, + 0x48, 0x43, 0xf2, 0xca, 0xc7, 0x54, 0x07, 0x0d, 0xac, 0x40, 0x95, 0x4c, 0x93, 0xb1, 0x63, 0xf7, + 0xb1, 0x59, 0xe4, 0x35, 0xb8, 0xa9, 0x2a, 0xf9, 0x75, 0x3c, 0x77, 0xd2, 0x1b, 0xda, 0xb4, 0x38, + 0x58, 0xa9, 0x6e, 0xc0, 0xb5, 0x05, 0x7d, 0x22, 0x29, 0x9f, 0x6a, 0x89, 0xd7, 0x00, 0xb6, 0x9f, + 0x86, 0x72, 0xb2, 0x14, 0xe7, 0xb0, 0xb6, 0xfd, 0x34, 0xc9, 0x50, 0xaf, 0x97, 0xa7, 0x68, 0x49, + 0x02, 0x96, 0xa9, 0xff, 0x4a, 0x2a, 0xac, 0x2e, 0xa8, 0xfd, 0x59, 0xa8, 0x28, 0x19, 0x0f, 0xcd, + 0x0b, 0xc7, 0x33, 0x2d, 0xde, 0x82, 0xb5, 0x20, 0xba, 0x5e, 0x92, 0xd8, 0x3c, 0x66, 0x37, 0xe5, + 0xee, 0x14, 0x92, 0x31, 0x43, 0x14, 0x86, 0x25, 0xe9, 0xf8, 0x48, 0x82, 0x53, 0x80, 0x65, 0xd2, + 0x2a, 0x5b, 0xa5, 0x90, 0xc9, 0xac, 0x7f, 0x0d, 0x36, 0xba, 0xb1, 0xa1, 0x55, 0xfe, 0x2b, 0xea, + 0x83, 0xb2, 0xd2, 0xdb, 0xa1, 0x3e, 0xe8, 0x66, 0xfd, 0x3f, 0xe5, 0x01, 0xe2, 0xe3, 0x97, 0x05, + 0xcb, 0x7c, 0x51, 0x35, 0xc1, 0xdc, 0x61, 0x68, 0xe6, 0xa5, 0x0f, 0x43, 0xdf, 0x8b, 0xdc, 0x68, + 0x95, 0xcc, 0x9d, 0x2d, 0xa9, 0x8e, 0x65, 0x9a, 0x75, 0x9e, 0xa7, 0x8a, 0x6d, 0x72, 0xb3, 0xc5, + 0x36, 0x77, 0xe7, 0x2b, 0xf3, 0x66, 0xec, 0x4f, 0x9c, 0x25, 0x28, 0x4c, 0x65, 0x09, 0x6a, 0x50, + 0xf4, 0x85, 0x69, 0x79, 0xae, 0x73, 0x11, 0x9e, 0xb9, 0x85, 0x6d, 0xfe, 0x16, 0xe4, 0x24, 0xdd, + 0x90, 0x29, 0xd2, 0x72, 0x79, 0xc1, 0xc4, 0x29, 0x5c, 0x34, 0x66, 0x76, 0xa0, 0xcb, 0xe9, 0xd4, + 0x0e, 0x56, 0x34, 0x12, 0x10, 0xbe, 0x09, 0xdc, 0xc6, 0x90, 0xc9, 0x71, 0x84, 0xb5, 0x75, 0xb1, + 0xad, 0x8e, 0xc2, 0x68, 0x8f, 0x2d, 0x1a, 0x0b, 0xde, 0x84, 0xf3, 0xbf, 0x1a, 0xcf, 0x3f, 0x89, + 0x7c, 0x66, 0x07, 0xd8, 0xd3, 0x0a, 0xb9, 0x12, 0x51, 0x1b, 0x77, 0xf1, 0x70, 0x8d, 0xaa, 0xb1, + 0x24, 0xed, 0x8d, 0xcf, 0x93, 0x2f, 0x79, 0x5b, 0xff, 0xdd, 0x74, 0x14, 0x6e, 0x94, 0x20, 0x77, + 0x6c, 0x06, 0x76, 0x5f, 0x45, 0x9f, 0xda, 0x4d, 0x50, 0x21, 0x87, 0xf4, 0x2c, 0x8f, 0xa5, 0x31, + 0x72, 0x08, 0x84, 0x3e, 0xe2, 0x88, 0x6f, 0x0d, 0xb1, 0x2c, 0xae, 0xcd, 0x70, 0xbe, 0x55, 0x55, + 0x0c, 0x91, 0x52, 0xc2, 0xca, 0x8a, 0xea, 0x0d, 0x29, 0xf4, 0x24, 0xdb, 0xcf, 0x8a, 0x88, 0xe3, + 0x7a, 0x52, 0xa8, 0x74, 0x1d, 0x69, 0x27, 0x03, 0x64, 0x13, 0x96, 0xc1, 0xb3, 0x32, 0xba, 0xf2, + 0x21, 0x53, 0x95, 0x63, 0x0b, 0x28, 0xd0, 0x59, 0xc5, 0xd5, 0x39, 0xfd, 0x82, 0x55, 0x50, 0xa2, + 0xf8, 0x32, 0x12, 0x5b, 0x43, 0xae, 0x26, 0xd5, 0x6a, 0xac, 0xe3, 0xe3, 0x19, 0x55, 0x70, 0x30, + 0xfc, 0xaa, 0x85, 0x06, 0x63, 0x03, 0x25, 0x8b, 0x5c, 0x03, 0xc6, 0x31, 0x52, 0x19, 0x9b, 0x18, + 0x36, 0xd8, 0x63, 0xd3, 0x95, 0xec, 0x1a, 0x76, 0x75, 0x6c, 0x9d, 0xb0, 0xeb, 0x48, 0xd2, 0x1f, + 0x9a, 0x92, 0xdd, 0x40, 0x1c, 0x7c, 0xda, 0x16, 0x3e, 0xce, 0x27, 0xbb, 0x89, 0x38, 0xd2, 0x1c, + 0xb0, 0x5b, 0xf5, 0xdf, 0x88, 0x2b, 0x7e, 0xdf, 0x88, 0x1c, 0xfa, 0x65, 0x94, 0x1c, 0x5d, 0xfe, + 0x45, 0x2b, 0xae, 0x05, 0x1b, 0xbe, 0xf8, 0xfe, 0xc4, 0x9e, 0xaa, 0x83, 0xcf, 0x5c, 0x5d, 0x68, + 0x31, 0x4f, 0x51, 0x3f, 0x83, 0x8d, 0xb0, 0xf1, 0xcc, 0x96, 0x43, 0xca, 0xad, 0xf0, 0xb7, 0x12, + 0x85, 0xfa, 0xa9, 0x85, 0x17, 0x9c, 0x22, 0x96, 0x71, 0x61, 0x7e, 0x94, 0x3b, 0x4f, 0x2f, 0x91, + 0x3b, 0xaf, 0xff, 0x9f, 0x7c, 0x22, 0xbd, 0xa2, 0x42, 0x1c, 0x2b, 0x0a, 0x71, 0xe6, 0x8f, 0x5a, + 0xe3, 0x74, 0x78, 0xfa, 0x65, 0xd2, 0xe1, 0x8b, 0xca, 0x16, 0xde, 0x47, 0x8f, 0x9b, 0xd6, 0xcf, + 0xd3, 0x25, 0x52, 0xfd, 0x53, 0xb8, 0x7c, 0x8b, 0x0e, 0x4e, 0xcd, 0xae, 0xaa, 0xa9, 0xc9, 0x2d, + 0xbc, 0x36, 0x93, 0x3c, 0x21, 0xd5, 0x98, 0x46, 0x82, 0x2a, 0x61, 0x6d, 0xf2, 0x8b, 0xac, 0x0d, + 0x46, 0x9b, 0xda, 0x0e, 0x45, 0x6d, 0x75, 0x32, 0xa2, 0x9e, 0x43, 0xf6, 0xe4, 0x47, 0x17, 0x8d, + 0x39, 0x38, 0x7a, 0x61, 0xa3, 0x89, 0x23, 0x6d, 0x9d, 0xfc, 0x57, 0x8d, 0xd9, 0x7b, 0x7d, 0xa5, + 0xf9, 0x7b, 0x7d, 0x1f, 0x02, 0x04, 0x02, 0x57, 0xc7, 0xb6, 0xdd, 0x97, 0xba, 0xf2, 0xe6, 0xce, + 0x65, 0x7d, 0xd3, 0x47, 0x16, 0x09, 0x0a, 0x94, 0x7f, 0x64, 0x9e, 0xd3, 0x31, 0xa6, 0x2e, 0x11, + 0x88, 0xda, 0xb3, 0x36, 0x78, 0x6d, 0xde, 0x06, 0xbf, 0x05, 0xb9, 0xa0, 0xef, 0x8d, 0x05, 0x5d, + 0x4d, 0xb9, 0x7c, 0x7e, 0x37, 0xbb, 0x88, 0x64, 0x28, 0x5c, 0x4a, 0xe2, 0xa1, 0x95, 0xf2, 0x7c, + 0xba, 0x94, 0x52, 0x32, 0xc2, 0xe6, 0x94, 0x1d, 0xbc, 0x39, 0x6d, 0x07, 0x6b, 0x16, 0xe4, 0x75, + 0x42, 0x7e, 0x36, 0xb4, 0x0e, 0x53, 0x79, 0xe9, 0x44, 0x2a, 0x2f, 0xaa, 0xef, 0xcc, 0x24, 0xeb, + 0x3b, 0x67, 0xee, 0xad, 0xe5, 0xe6, 0xee, 0xad, 0xd5, 0x3f, 0x81, 0x1c, 0xc9, 0x8a, 0x4e, 0x84, + 0x1a, 0x66, 0xe5, 0x63, 0x62, 0xa7, 0x58, 0x8a, 0x5f, 0x07, 0x16, 0x08, 0x72, 0x42, 0x44, 0xd7, + 0x1c, 0x09, 0x32, 0x92, 0x69, 0x5e, 0x85, 0xeb, 0x0a, 0x37, 0x98, 0x7e, 0x43, 0x9e, 0x90, 0x63, + 0x1f, 0xfb, 0xa6, 0x7f, 0xc1, 0xb2, 0xf5, 0x0f, 0xe9, 0x38, 0x3c, 0x54, 0xa8, 0x72, 0x74, 0x4f, + 0x50, 0x99, 0x65, 0x4b, 0x5b, 0x1f, 0xaa, 0x8d, 0xd0, 0xf1, 0x91, 0xaa, 0x18, 0xa3, 0x00, 0x84, + 0x32, 0x28, 0xab, 0xc9, 0x9d, 0xf8, 0x8f, 0x6c, 0xbd, 0xd5, 0xb7, 0x12, 0xae, 0xdc, 0x74, 0x09, + 0x58, 0x6a, 0xd9, 0x12, 0xb0, 0xfa, 0x63, 0x58, 0x37, 0xa6, 0x6d, 0x3a, 0x7f, 0x0f, 0x0a, 0xde, + 0x38, 0xc9, 0xe7, 0x45, 0x7a, 0x19, 0xa2, 0xd7, 0x7f, 0x92, 0x82, 0xd5, 0xb6, 0x2b, 0x85, 0xef, + 0x9a, 0xce, 0x8e, 0x63, 0x0e, 0xf8, 0xbb, 0xa1, 0x95, 0x5a, 0x1c, 0xad, 0x27, 0x71, 0xa7, 0x0d, + 0x96, 0xa3, 0x13, 0xcf, 0xfc, 0x06, 0x6c, 0x08, 0xcb, 0x96, 0x9e, 0xaf, 0x1c, 0xd8, 0xb0, 0x52, + 0xef, 0x3a, 0x30, 0x05, 0xee, 0xd2, 0x92, 0xe8, 0xa9, 0x69, 0xae, 0xc2, 0xf5, 0x29, 0x68, 0xe8, + 0x9d, 0xa6, 0xf9, 0x6d, 0xa8, 0xc6, 0xbb, 0xd1, 0xb6, 0xe7, 0xca, 0xb6, 0x6b, 0x89, 0x73, 0x72, + 0x85, 0x58, 0xa6, 0xfe, 0x6b, 0x85, 0xd0, 0x09, 0x7b, 0xaa, 0xeb, 0xf8, 0x7c, 0xcf, 0x8b, 0x2f, + 0x89, 0xea, 0x56, 0xe2, 0x32, 0x72, 0x7a, 0x89, 0xcb, 0xc8, 0x1f, 0xc6, 0x17, 0x4a, 0xd5, 0x46, + 0xf1, 0xca, 0xc2, 0xdd, 0x87, 0xca, 0x8f, 0xb4, 0xdb, 0xdd, 0x15, 0x89, 0xdb, 0xa5, 0x6f, 0xea, + 0x58, 0x2b, 0xbb, 0x8c, 0xaf, 0xaa, 0xce, 0xf6, 0xdf, 0x99, 0xbd, 0xc5, 0xb0, 0x5c, 0x19, 0xe0, + 0x9c, 0x3b, 0x09, 0x2f, 0xed, 0x4e, 0x7e, 0x6b, 0x26, 0xac, 0x29, 0x2e, 0x4c, 0x60, 0x5d, 0x71, + 0x47, 0xf3, 0x5b, 0x50, 0x18, 0xda, 0x81, 0xf4, 0x7c, 0x75, 0x6f, 0x78, 0xfe, 0x9e, 0x53, 0x62, + 0xb4, 0x76, 0x15, 0x22, 0xd5, 0x6c, 0x85, 0x54, 0xfc, 0xbb, 0xb0, 0x41, 0x03, 0x7f, 0x18, 0x7b, + 0x0d, 0x41, 0xb5, 0xbc, 0xb0, 0x56, 0x2e, 0xc1, 0x6a, 0x6b, 0x86, 0xc4, 0x98, 0x67, 0x52, 0x1b, + 0x00, 0xc4, 0xf3, 0x33, 0x67, 0xc5, 0x3e, 0xc3, 0xbd, 0xe1, 0x9b, 0x90, 0x0f, 0x26, 0xc7, 0xf1, + 0x09, 0x95, 0x6e, 0xd5, 0xce, 0xa1, 0x36, 0xe7, 0x1d, 0x1c, 0x0a, 0x5f, 0x89, 0x7b, 0xe5, 0xe5, + 0xe5, 0x0f, 0x93, 0x13, 0xaf, 0x94, 0xf3, 0xee, 0x25, 0xb3, 0x17, 0x71, 0x4e, 0x68, 0x40, 0xed, + 0x1d, 0x28, 0x27, 0x06, 0x15, 0x2d, 0xf3, 0xc4, 0xb5, 0xbc, 0x30, 0x69, 0x8a, 0xcf, 0xea, 0xf2, + 0x96, 0x15, 0xa6, 0x4d, 0xe9, 0xb9, 0x66, 0x00, 0x9b, 0x1d, 0xc0, 0x2b, 0x42, 0xdf, 0x57, 0xa0, + 0x92, 0x70, 0xe9, 0xa2, 0x84, 0xda, 0x34, 0xb0, 0x7e, 0x06, 0x9f, 0x4f, 0xb0, 0x3b, 0x14, 0xfe, + 0xc8, 0x0e, 0x70, 0x23, 0x51, 0x21, 0x1d, 0x65, 0x2f, 0x2c, 0xe1, 0x4a, 0x5b, 0x86, 0x16, 0x34, + 0x6a, 0xf3, 0x5f, 0x80, 0xdc, 0x58, 0xf8, 0xa3, 0x40, 0x5b, 0xd1, 0x59, 0x0d, 0x5a, 0xc8, 0x36, + 0x30, 0x14, 0x4d, 0xfd, 0xef, 0xa5, 0xa0, 0xb8, 0x2f, 0xa4, 0x89, 0xbe, 0x03, 0xdf, 0x9f, 0xf9, + 0xca, 0xfc, 0xa9, 0x6a, 0x88, 0xba, 0xa9, 0x83, 0xcc, 0xcd, 0xb6, 0xc6, 0xd7, 0xed, 0xdd, 0x95, + 0x58, 0xb0, 0xda, 0x16, 0x14, 0x34, 0xb8, 0xf6, 0x2e, 0xac, 0xcf, 0x60, 0xd2, 0xb8, 0x28, 0xdf, + 0xbe, 0x7b, 0x31, 0x0a, 0x4b, 0x7f, 0x56, 0x8d, 0x69, 0xe0, 0x56, 0x09, 0x0a, 0x63, 0x45, 0x50, + 0xff, 0xdd, 0x1b, 0x54, 0x70, 0x62, 0x9f, 0x60, 0xb0, 0xbd, 0x68, 0x67, 0xbd, 0x03, 0x40, 0x5b, + 0xb3, 0x2a, 0x4b, 0x50, 0x49, 0xce, 0x04, 0x84, 0xbf, 0x1f, 0x65, 0xa7, 0xb3, 0x0b, 0x9d, 0xaa, + 0x24, 0xf3, 0xd9, 0x14, 0x75, 0x15, 0x0a, 0x76, 0xb0, 0x87, 0x5b, 0x9b, 0x2e, 0xe5, 0x09, 0x9b, + 0xfc, 0x9b, 0x90, 0xb7, 0x47, 0x63, 0xcf, 0x97, 0x3a, 0x7d, 0x7d, 0x25, 0xd7, 0x36, 0x61, 0xee, + 0xae, 0x18, 0x9a, 0x06, 0xa9, 0xc5, 0x39, 0x51, 0x17, 0x5f, 0x4c, 0xdd, 0x3a, 0x0f, 0xa9, 0x15, + 0x0d, 0xff, 0x0e, 0x54, 0x06, 0xaa, 0x2e, 0x51, 0x31, 0xd6, 0x46, 0xe4, 0x2b, 0x57, 0x31, 0x79, + 0x94, 0x24, 0xd8, 0x5d, 0x31, 0xa6, 0x39, 0x20, 0x4b, 0x74, 0xe0, 0x45, 0x20, 0x7b, 0xde, 0x47, + 0x9e, 0xed, 0x52, 0x50, 0xfa, 0x02, 0x96, 0x46, 0x92, 0x00, 0x59, 0x4e, 0x71, 0xe0, 0x5f, 0x47, + 0x8f, 0x27, 0x90, 0xfa, 0xea, 0xf6, 0xdd, 0xab, 0x38, 0xf5, 0x44, 0xa0, 0x2f, 0x5d, 0x07, 0x92, + 0x9f, 0x43, 0x2d, 0xb1, 0x48, 0xf4, 0x47, 0x1a, 0xe3, 0xb1, 0xef, 0x61, 0x64, 0x5b, 0x21, 0x6e, + 0x5f, 0xbf, 0x8a, 0xdb, 0xe1, 0xa5, 0xd4, 0xbb, 0x2b, 0xc6, 0x15, 0xbc, 0x79, 0x0f, 0x23, 0x3b, + 0xdd, 0x85, 0x3d, 0x61, 0x9e, 0x85, 0x17, 0xbf, 0xef, 0x2f, 0x35, 0x0a, 0x44, 0xb1, 0xbb, 0x62, + 0xcc, 0xf0, 0xe0, 0xbf, 0x04, 0x1b, 0x53, 0xdf, 0xa4, 0xbb, 0x9e, 0xea, 0x5a, 0xf8, 0xd7, 0x96, + 0xee, 0x06, 0x12, 0xed, 0xae, 0x18, 0xf3, 0x9c, 0xf8, 0x04, 0x3e, 0x37, 0xdf, 0xa5, 0x6d, 0xd1, + 0x77, 0x6c, 0x57, 0xe8, 0x1b, 0xe4, 0xef, 0xbc, 0xdc, 0x68, 0x69, 0xe2, 0xdd, 0x15, 0xe3, 0x72, + 0xce, 0xfc, 0xcf, 0xc3, 0xed, 0xf1, 0x42, 0x13, 0xa3, 0x4c, 0x97, 0xbe, 0x80, 0xfe, 0xde, 0x92, + 0x5f, 0x9e, 0xa3, 0xdf, 0x5d, 0x31, 0xae, 0xe4, 0x8f, 0xbe, 0x33, 0x45, 0xd0, 0xba, 0x7c, 0x5a, + 0x35, 0xf8, 0x6d, 0x28, 0x99, 0x7d, 0x67, 0x57, 0x98, 0x56, 0x94, 0x61, 0x8f, 0x01, 0xb5, 0xff, + 0x91, 0x82, 0xbc, 0xd6, 0xf7, 0xdb, 0xd1, 0x29, 0x7a, 0x64, 0xba, 0x63, 0x00, 0xff, 0x00, 0x4a, + 0xc2, 0xf7, 0x3d, 0xbf, 0xe9, 0x59, 0x61, 0x01, 0xe2, 0x6c, 0xfa, 0x57, 0xf1, 0xd9, 0x6c, 0x85, + 0x68, 0x46, 0x4c, 0xc1, 0xdf, 0x07, 0x50, 0xeb, 0xbc, 0x17, 0xdf, 0x82, 0xa9, 0x2d, 0xa6, 0x57, + 0x87, 0x36, 0x31, 0x76, 0x9c, 0x3c, 0x0b, 0x4f, 0x4c, 0xc2, 0x66, 0x14, 0x70, 0xe6, 0x12, 0x01, + 0xe7, 0x6d, 0x9d, 0x47, 0x38, 0xc0, 0x17, 0xfa, 0x2e, 0x58, 0x04, 0xa8, 0xfd, 0xeb, 0x14, 0xe4, + 0x95, 0xf1, 0xe0, 0xad, 0xf9, 0x1e, 0xbd, 0xf6, 0x62, 0x9b, 0xb3, 0x39, 0xdb, 0xb3, 0x6f, 0x02, + 0x28, 0x1b, 0x94, 0xe8, 0xd9, 0xed, 0x19, 0x3e, 0x9a, 0x34, 0x2c, 0xe0, 0x8d, 0xf1, 0xeb, 0x0f, + 0xd5, 0x7d, 0x25, 0xca, 0xd5, 0x3e, 0xd9, 0xdb, 0x63, 0x2b, 0x7c, 0x03, 0x2a, 0x4f, 0x0e, 0x1e, + 0x1f, 0x74, 0x9e, 0x1d, 0x1c, 0xb5, 0x0c, 0xa3, 0x63, 0xa8, 0x94, 0xed, 0x56, 0x63, 0xfb, 0xa8, + 0x7d, 0x70, 0xf8, 0xa4, 0xc7, 0xd2, 0xb5, 0x7f, 0x96, 0x82, 0xca, 0x94, 0xed, 0xfa, 0xe3, 0x9d, + 0xba, 0xc4, 0xf0, 0x67, 0x16, 0x0f, 0x7f, 0xf6, 0xb2, 0xe1, 0xcf, 0xcd, 0x0e, 0xff, 0x6f, 0xa7, + 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, 0xba, 0x30, 0x90, 0x9d, 0xc6, + 0xa1, 0x4b, 0x03, 0x57, 0x4b, 0x4b, 0x17, 0x24, 0x03, 0xba, 0x3f, 0x5e, 0xbb, 0xdc, 0x82, 0x5e, + 0xd1, 0x85, 0x47, 0x50, 0x1e, 0xc7, 0xcb, 0xf4, 0xe5, 0xdc, 0x92, 0x24, 0xe5, 0x0b, 0xe4, 0xfc, + 0x71, 0x0a, 0xd6, 0xa6, 0x6d, 0xee, 0x9f, 0xe8, 0x61, 0xfd, 0x87, 0x29, 0xd8, 0x98, 0xb3, 0xe4, + 0x57, 0x3a, 0x76, 0xb3, 0x72, 0xa5, 0x97, 0x90, 0x2b, 0xb3, 0x40, 0xae, 0xcb, 0x2d, 0xc9, 0xd5, + 0x12, 0x77, 0xe1, 0x73, 0x97, 0xee, 0x09, 0x57, 0x0c, 0xf5, 0x14, 0xd3, 0xcc, 0x2c, 0xd3, 0xdf, + 0x4a, 0xc1, 0xed, 0xab, 0xec, 0xfd, 0xff, 0x77, 0xbd, 0x9a, 0x95, 0xb0, 0xfe, 0x6e, 0x74, 0xf4, + 0x5e, 0x86, 0x82, 0xfe, 0x5d, 0x26, 0x5d, 0xdc, 0x3c, 0xf4, 0x9e, 0xbb, 0x2a, 0x13, 0x6d, 0x08, + 0x53, 0xdf, 0x5c, 0x37, 0xc4, 0xd8, 0xb1, 0xe9, 0xf0, 0xf2, 0x16, 0x40, 0x83, 0xe2, 0xba, 0xf0, + 0x22, 0x49, 0x73, 0xaf, 0xd3, 0x6d, 0xb1, 0x95, 0xa4, 0x13, 0xfb, 0x49, 0x68, 0x88, 0xeb, 0x87, + 0x90, 0x8f, 0x2f, 0x03, 0xec, 0x9b, 0xfe, 0xa9, 0xa5, 0x8e, 0x08, 0x57, 0xa1, 0x78, 0xa8, 0x43, + 0x28, 0xf5, 0xa9, 0x8f, 0xba, 0x9d, 0x03, 0x95, 0xf4, 0xde, 0xee, 0xf4, 0xd4, 0x95, 0x82, 0xee, + 0xd3, 0x47, 0xea, 0xac, 0xea, 0x91, 0xd1, 0x38, 0xdc, 0x3d, 0x22, 0x8c, 0x5c, 0xfd, 0x37, 0xb3, + 0xe1, 0xae, 0x56, 0x37, 0xf4, 0xe1, 0x23, 0x40, 0x1e, 0xad, 0xb9, 0xa7, 0x19, 0x47, 0x9f, 0xa1, + 0x32, 0xd8, 0xd6, 0xb9, 0xca, 0x43, 0xb0, 0x34, 0xcf, 0x43, 0xfa, 0xf0, 0x58, 0xd5, 0xee, 0xec, + 0xca, 0x91, 0xa3, 0x6e, 0x16, 0xf6, 0xce, 0x25, 0xcb, 0xe1, 0x43, 0x33, 0x38, 0x63, 0xf9, 0xfa, + 0xbf, 0xc8, 0x40, 0x29, 0x32, 0x95, 0x2f, 0x63, 0xba, 0x39, 0x87, 0xb5, 0xf6, 0x41, 0xaf, 0x65, + 0x1c, 0x34, 0xf6, 0x34, 0x4a, 0x86, 0x5f, 0x83, 0xf5, 0x9d, 0xf6, 0x5e, 0xeb, 0x68, 0xaf, 0xd3, + 0xd8, 0xd6, 0xc0, 0x22, 0xbf, 0x09, 0xbc, 0xbd, 0x7f, 0xd8, 0x31, 0x7a, 0x47, 0xed, 0xee, 0x51, + 0xb3, 0x71, 0xd0, 0x6c, 0xed, 0xb5, 0xb6, 0x59, 0x9e, 0xbf, 0x02, 0x77, 0x0f, 0x3a, 0xbd, 0x76, + 0xe7, 0xe0, 0xe8, 0xa0, 0x73, 0xd4, 0xd9, 0xfa, 0xa8, 0xd5, 0xec, 0x75, 0x8f, 0xda, 0x07, 0x47, + 0xc8, 0xf5, 0x91, 0xd1, 0xc0, 0x37, 0x2c, 0xc7, 0xef, 0xc2, 0x6d, 0x8d, 0xd5, 0x6d, 0x19, 0x4f, + 0x5b, 0x06, 0x32, 0x79, 0x72, 0xd0, 0x78, 0xda, 0x68, 0xef, 0x35, 0xb6, 0xf6, 0x5a, 0x6c, 0x95, + 0xdf, 0x81, 0x9a, 0xc6, 0x30, 0x1a, 0xbd, 0xd6, 0xd1, 0x5e, 0x7b, 0xbf, 0xdd, 0x3b, 0x6a, 0x7d, + 0xb7, 0xd9, 0x6a, 0x6d, 0xb7, 0xb6, 0x59, 0x85, 0x7f, 0x05, 0xbe, 0x4c, 0x42, 0x69, 0x21, 0xa6, + 0x3f, 0xf6, 0x49, 0xfb, 0xf0, 0xa8, 0x61, 0x34, 0x77, 0xdb, 0x4f, 0x5b, 0x6c, 0x8d, 0xbf, 0x06, + 0x5f, 0xba, 0x1c, 0x75, 0xbb, 0x6d, 0xb4, 0x9a, 0xbd, 0x8e, 0xf1, 0x31, 0xdb, 0xe0, 0x5f, 0x80, + 0xcf, 0xed, 0xf6, 0xf6, 0xf7, 0x8e, 0x9e, 0x19, 0x9d, 0x83, 0x47, 0x47, 0xf4, 0xd8, 0xed, 0x19, + 0x4f, 0x9a, 0xbd, 0x27, 0x46, 0x8b, 0x01, 0xaf, 0xc1, 0xcd, 0xc3, 0xad, 0xa3, 0x83, 0x4e, 0xef, + 0xa8, 0x71, 0xf0, 0xf1, 0xd6, 0x5e, 0xa7, 0xf9, 0xf8, 0x68, 0xa7, 0x63, 0xec, 0x37, 0x7a, 0xac, + 0xcc, 0xbf, 0x0a, 0xaf, 0x35, 0xbb, 0x4f, 0xb5, 0x98, 0x9d, 0x9d, 0x23, 0xa3, 0xf3, 0xac, 0x7b, + 0xd4, 0x31, 0x8e, 0x8c, 0xd6, 0x1e, 0xf5, 0xb9, 0x1b, 0xcb, 0x5e, 0xe0, 0xb7, 0xa1, 0xda, 0x3e, + 0xe8, 0x3e, 0xd9, 0xd9, 0x69, 0x37, 0xdb, 0xad, 0x83, 0xde, 0xd1, 0x61, 0xcb, 0xd8, 0x6f, 0x77, + 0xbb, 0x88, 0xc6, 0x4a, 0xf5, 0x6f, 0x43, 0xbe, 0xed, 0x9e, 0xd9, 0x92, 0xd6, 0x97, 0x56, 0x46, + 0x1d, 0x71, 0x85, 0x4d, 0x5a, 0x16, 0xf6, 0xc0, 0xa5, 0x1b, 0xf3, 0xb4, 0xba, 0x56, 0x8d, 0x18, + 0x50, 0xff, 0xc7, 0x69, 0xa8, 0x28, 0x16, 0x61, 0x04, 0x77, 0x0f, 0xd6, 0x75, 0x2a, 0xb4, 0x3d, + 0x6d, 0xc2, 0x66, 0xc1, 0xf4, 0x53, 0x54, 0x0a, 0x94, 0x30, 0x64, 0x49, 0x10, 0x1d, 0xaf, 0x11, + 0x73, 0x8c, 0x04, 0xd5, 0xc1, 0x62, 0x0c, 0xf8, 0xac, 0x16, 0x0c, 0xad, 0xa3, 0x42, 0xec, 0x7b, + 0x6e, 0x33, 0xba, 0x6c, 0x31, 0x05, 0xe3, 0x9f, 0xc0, 0xad, 0xa8, 0xdd, 0x72, 0xfb, 0xfe, 0xc5, + 0x38, 0xfa, 0xc5, 0xb8, 0xc2, 0xc2, 0x94, 0xc2, 0x8e, 0xed, 0x88, 0x29, 0x44, 0xe3, 0x32, 0x06, + 0xf5, 0xdf, 0x4b, 0x25, 0xe2, 0x5e, 0x15, 0xd7, 0x5e, 0x69, 0xf1, 0x17, 0x9d, 0xc1, 0x60, 0xe4, + 0xa9, 0xc5, 0xd7, 0x8e, 0x88, 0x6e, 0xf2, 0x43, 0xe0, 0xf6, 0xbc, 0xd0, 0xd9, 0x25, 0x85, 0x5e, + 0x40, 0x3b, 0x9b, 0x42, 0xcf, 0xcd, 0xa7, 0xd0, 0xef, 0x00, 0x0c, 0x1c, 0xef, 0xd8, 0x74, 0x12, + 0x8e, 0x66, 0x02, 0x52, 0x77, 0xa0, 0x18, 0xfe, 0x2e, 0x1d, 0xbf, 0x09, 0x79, 0xfa, 0x65, 0xba, + 0x28, 0xa1, 0xa8, 0x5a, 0x7c, 0x17, 0xd6, 0xc4, 0xb4, 0xcc, 0xe9, 0x25, 0x65, 0x9e, 0xa1, 0xab, + 0x7f, 0x03, 0x36, 0xe6, 0x90, 0x70, 0x10, 0xc7, 0xa6, 0x8c, 0x2e, 0xa7, 0xe3, 0xf3, 0xfc, 0x21, + 0x76, 0xfd, 0x3f, 0xa6, 0x61, 0x75, 0xdf, 0x74, 0xed, 0x13, 0x11, 0xc8, 0x50, 0xda, 0xa0, 0x3f, + 0x14, 0x23, 0x33, 0x94, 0x56, 0xb5, 0x74, 0x96, 0x21, 0x9d, 0xcc, 0xdf, 0xcf, 0x1d, 0xf7, 0xdc, + 0x84, 0xbc, 0x39, 0x91, 0xc3, 0xa8, 0xc2, 0x5b, 0xb7, 0x70, 0xee, 0x1c, 0xbb, 0x2f, 0xdc, 0x20, + 0xd4, 0xcd, 0xb0, 0x19, 0x97, 0xb1, 0xe4, 0xaf, 0x28, 0x63, 0x29, 0xcc, 0x8f, 0xff, 0x5d, 0x28, + 0x07, 0x7d, 0x5f, 0x08, 0x37, 0x18, 0x7a, 0x32, 0xfc, 0x4d, 0xc3, 0x24, 0x88, 0x8a, 0xbd, 0xbc, + 0xe7, 0x2e, 0xae, 0xd0, 0x3d, 0xdb, 0x3d, 0xd5, 0x35, 0x4c, 0x53, 0x30, 0xd4, 0x41, 0xca, 0xb1, + 0xd8, 0x9f, 0x0a, 0x8a, 0xef, 0x73, 0x46, 0xd4, 0xa6, 0x2c, 0x8a, 0x29, 0xc5, 0xc0, 0xf3, 0x6d, + 0xa1, 0x52, 0x89, 0x25, 0x23, 0x01, 0x41, 0x5a, 0xc7, 0x74, 0x07, 0x13, 0x73, 0x20, 0xf4, 0xa1, + 0x70, 0xd4, 0xae, 0xff, 0xcf, 0x1c, 0xc0, 0xbe, 0x18, 0x1d, 0x0b, 0x3f, 0x18, 0xda, 0x63, 0x3a, + 0xea, 0xb0, 0x75, 0x5d, 0x6b, 0xc5, 0xa0, 0x67, 0xfe, 0xde, 0x54, 0xc9, 0xf9, 0xfc, 0xe1, 0x64, + 0x4c, 0x3e, 0x9b, 0x82, 0xc1, 0xc1, 0x31, 0xa5, 0xd0, 0x15, 0x44, 0x34, 0xfe, 0x59, 0x23, 0x09, + 0xa2, 0xe2, 0x2e, 0x53, 0x8a, 0x96, 0x6b, 0xa9, 0x14, 0x4f, 0xd6, 0x88, 0xda, 0x74, 0x69, 0x25, + 0x68, 0x4c, 0xa4, 0x67, 0x08, 0x57, 0x3c, 0x8f, 0xee, 0x63, 0xc5, 0x20, 0xbe, 0x0f, 0x95, 0xb1, + 0x79, 0x31, 0x12, 0xae, 0xdc, 0x17, 0x72, 0xe8, 0x59, 0xba, 0xdc, 0xe7, 0xb5, 0xcb, 0x05, 0x3c, + 0x4c, 0xa2, 0x1b, 0xd3, 0xd4, 0xa8, 0x13, 0x6e, 0x40, 0xab, 0x44, 0x4d, 0xa3, 0x6e, 0xf1, 0x2d, + 0x00, 0xf5, 0x44, 0x91, 0x53, 0x71, 0x71, 0x26, 0xca, 0x1c, 0x89, 0x40, 0xf8, 0x67, 0xb6, 0xb2, + 0x63, 0x2a, 0x36, 0x8c, 0xa9, 0xd0, 0xea, 0x4d, 0x02, 0xe1, 0xb7, 0x46, 0xa6, 0xed, 0xe8, 0x09, + 0x8e, 0x01, 0xfc, 0x6d, 0xb8, 0x11, 0x4c, 0x8e, 0x51, 0x67, 0x8e, 0x45, 0xcf, 0x3b, 0x10, 0xcf, + 0x03, 0x47, 0x48, 0x29, 0x7c, 0x5d, 0x5f, 0xb0, 0xf8, 0x65, 0x7d, 0x10, 0xb9, 0x3d, 0xf4, 0xfb, + 0x19, 0xf8, 0x14, 0xd7, 0x2d, 0x45, 0x20, 0x5d, 0xd4, 0xc5, 0x52, 0x9c, 0xc1, 0xaa, 0x02, 0xe9, + 0x9a, 0xaf, 0x34, 0xff, 0x32, 0x7c, 0x71, 0x0a, 0xc9, 0x50, 0x07, 0xc1, 0xc1, 0x8e, 0xed, 0x9a, + 0x8e, 0xfd, 0xa9, 0x3a, 0x96, 0xcf, 0xd4, 0xc7, 0x50, 0x99, 0x1a, 0x38, 0xba, 0x40, 0x48, 0x4f, + 0xba, 0x0a, 0x86, 0xc1, 0xaa, 0x6a, 0x77, 0xa5, 0x6f, 0xd3, 0x09, 0x47, 0x04, 0x69, 0xe2, 0x3a, + 0xf7, 0x58, 0x9a, 0x5f, 0x07, 0xa6, 0x20, 0x6d, 0xd7, 0x1c, 0x8f, 0x1b, 0xe3, 0xb1, 0x23, 0x58, + 0x86, 0x2e, 0x67, 0xc6, 0x50, 0x55, 0x78, 0xce, 0xb2, 0xf5, 0xef, 0xc2, 0x2d, 0x1a, 0x99, 0xa7, + 0xc2, 0x8f, 0x02, 0x5b, 0xdd, 0xd7, 0x1b, 0xb0, 0xa1, 0x9e, 0x0e, 0x3c, 0xa9, 0x5e, 0x93, 0xb3, + 0xc7, 0x61, 0x4d, 0x81, 0xd1, 0xd7, 0xe9, 0x0a, 0xba, 0x72, 0x19, 0xc1, 0x22, 0xbc, 0x74, 0xfd, + 0x27, 0x79, 0xe0, 0xb1, 0x42, 0xf4, 0x6c, 0xe1, 0x6f, 0x9b, 0xd2, 0x4c, 0x64, 0x26, 0x2b, 0x97, + 0x9e, 0xad, 0xbf, 0xb8, 0x64, 0xed, 0x26, 0xe4, 0xed, 0x00, 0x43, 0x31, 0x5d, 0x50, 0xaa, 0x5b, + 0x7c, 0x0f, 0x60, 0x2c, 0x7c, 0xdb, 0xb3, 0x48, 0x83, 0x72, 0x0b, 0x2b, 0xff, 0xe7, 0x85, 0xda, + 0x3c, 0x8c, 0x68, 0x8c, 0x04, 0x3d, 0xca, 0xa1, 0x5a, 0xea, 0xa4, 0x3a, 0x4f, 0x42, 0x27, 0x41, + 0xfc, 0x0d, 0xb8, 0x36, 0xf6, 0xed, 0xbe, 0x50, 0xd3, 0xf1, 0x24, 0xb0, 0x9a, 0xf4, 0xab, 0x73, + 0x05, 0xc2, 0x5c, 0xf4, 0x0a, 0x35, 0xd0, 0x74, 0x29, 0x40, 0x09, 0xe8, 0x6c, 0x56, 0x5f, 0x39, + 0x56, 0x25, 0x97, 0x15, 0x63, 0xf1, 0x4b, 0x7e, 0x1f, 0x98, 0x7e, 0xb1, 0x6f, 0xbb, 0x7b, 0xc2, + 0x1d, 0xc8, 0x21, 0x29, 0x77, 0xc5, 0x98, 0x83, 0x93, 0x05, 0x53, 0xbf, 0xed, 0xa3, 0xce, 0x6d, + 0x4a, 0x46, 0xd4, 0x56, 0xd7, 0xd8, 0x1d, 0xcf, 0xef, 0x4a, 0x5f, 0xd7, 0x8e, 0x46, 0x6d, 0xf4, + 0x59, 0x02, 0x92, 0xf5, 0xd0, 0xf7, 0xac, 0x09, 0x9d, 0x2a, 0x28, 0x23, 0x36, 0x0b, 0x8e, 0x31, + 0xf7, 0x4d, 0x57, 0xd7, 0x0d, 0x56, 0x92, 0x98, 0x11, 0x98, 0x62, 0x30, 0x2f, 0x88, 0x19, 0xae, + 0xeb, 0x18, 0x2c, 0x01, 0xd3, 0x38, 0x31, 0x2b, 0x16, 0xe1, 0xc4, 0x7c, 0xa8, 0xff, 0x96, 0xef, + 0xd9, 0x56, 0xcc, 0x6b, 0x43, 0x55, 0x75, 0xce, 0xc2, 0x13, 0xb8, 0x31, 0x4f, 0x3e, 0x85, 0x1b, + 0xc1, 0xeb, 0x3f, 0x48, 0x01, 0xc4, 0x93, 0x8f, 0x2a, 0x1f, 0xb7, 0xe2, 0x25, 0x7e, 0x0b, 0xae, + 0x25, 0xc1, 0x74, 0x39, 0x80, 0x0e, 0x78, 0x39, 0xac, 0xc5, 0x2f, 0xb6, 0xcd, 0x8b, 0x80, 0xa5, + 0xf5, 0x35, 0x61, 0x0d, 0x7b, 0x26, 0x04, 0x15, 0xd2, 0x5d, 0x07, 0x16, 0x03, 0xe9, 0xee, 0x57, + 0xc0, 0xb2, 0xd3, 0xa8, 0x1f, 0x0b, 0xd3, 0x0f, 0x58, 0xae, 0xbe, 0x0b, 0x79, 0x75, 0xb8, 0xb4, + 0xe0, 0x58, 0xf8, 0xe5, 0x6a, 0x3c, 0xfe, 0x6a, 0x0a, 0x60, 0x5b, 0x55, 0xf0, 0xe2, 0x2e, 0xbe, + 0xe0, 0xb4, 0x7d, 0x91, 0x47, 0x65, 0x5a, 0x16, 0x55, 0x42, 0x67, 0xa2, 0x5f, 0x8c, 0xc1, 0x26, + 0x6a, 0x8e, 0x19, 0x56, 0x4e, 0xa9, 0x35, 0x17, 0xb5, 0xd5, 0x06, 0xd2, 0xf4, 0x5c, 0x57, 0xf4, + 0x71, 0xfb, 0x89, 0x36, 0x90, 0x08, 0x54, 0xff, 0xb7, 0x05, 0x28, 0x37, 0x87, 0xa6, 0xdc, 0x17, + 0x41, 0x60, 0x0e, 0xc4, 0x9c, 0x2c, 0x55, 0x28, 0x78, 0xbe, 0x25, 0xfc, 0xf8, 0xfe, 0x96, 0x6e, + 0x26, 0x6b, 0x0c, 0x32, 0xd3, 0x35, 0x06, 0xb7, 0xa1, 0xa4, 0x4e, 0x30, 0xac, 0x86, 0x32, 0x03, + 0x19, 0x23, 0x06, 0xe0, 0x5e, 0x3d, 0xf2, 0x2c, 0x32, 0x46, 0x0d, 0x95, 0xfc, 0xcf, 0x18, 0x09, + 0x88, 0x2a, 0xe9, 0x18, 0x3b, 0x17, 0x3d, 0x4f, 0xcb, 0xd4, 0xb6, 0xe2, 0xcb, 0xae, 0xd3, 0x70, + 0xde, 0x84, 0xc2, 0x48, 0x35, 0xf4, 0x41, 0xc6, 0x6c, 0xca, 0x3f, 0xd1, 0xb5, 0x4d, 0xfd, 0x57, + 0xdf, 0x37, 0x31, 0x42, 0x4a, 0x0c, 0xd1, 0x4d, 0x29, 0xcd, 0xfe, 0x70, 0xa4, 0x4d, 0x44, 0x66, + 0xc1, 0x99, 0x66, 0x92, 0x51, 0x23, 0xc2, 0x36, 0x92, 0x94, 0x7c, 0x0b, 0x4a, 0xbe, 0x30, 0xa7, + 0x8e, 0x55, 0x5f, 0xb9, 0x82, 0x8d, 0x11, 0xe2, 0x1a, 0x31, 0x59, 0xed, 0x47, 0x29, 0x58, 0x9b, + 0x16, 0xf4, 0x8f, 0xe3, 0x47, 0xbf, 0xbe, 0x19, 0xff, 0xe8, 0xd7, 0x67, 0xf8, 0x01, 0xad, 0xdf, + 0x4a, 0x01, 0xc4, 0x63, 0x80, 0x26, 0x5f, 0xfd, 0x38, 0x51, 0xe8, 0x84, 0xaa, 0x16, 0xdf, 0x9d, + 0xba, 0x03, 0xff, 0xf6, 0x52, 0x03, 0x9a, 0x78, 0x4c, 0x94, 0x25, 0x3f, 0x80, 0xb5, 0x69, 0x38, + 0xfd, 0xdc, 0x50, 0x7b, 0xaf, 0xa5, 0x52, 0x1c, 0xed, 0xfd, 0xc6, 0xa3, 0x96, 0xbe, 0xdf, 0xd3, + 0x3e, 0x78, 0xcc, 0xd2, 0xb5, 0xdf, 0x4f, 0x41, 0x29, 0x1a, 0x5e, 0xfe, 0x9d, 0xe4, 0xbc, 0xa8, + 0x3a, 0x89, 0xb7, 0x96, 0x99, 0x97, 0xf8, 0xa9, 0xe5, 0x4a, 0xff, 0x22, 0x39, 0x4d, 0x1e, 0xac, + 0x4d, 0xbf, 0x5c, 0x60, 0x13, 0x1e, 0x4d, 0xdb, 0x84, 0x37, 0x97, 0xfa, 0x64, 0x18, 0x79, 0xed, + 0xd9, 0x81, 0xd4, 0xe6, 0xe2, 0xfd, 0xf4, 0x7b, 0xa9, 0xda, 0x5d, 0x58, 0x4d, 0xbe, 0x9a, 0xbf, + 0xc4, 0x77, 0xff, 0xf7, 0x33, 0xb0, 0x36, 0x5d, 0x6a, 0x40, 0x57, 0x86, 0x54, 0x99, 0x4b, 0xc7, + 0xb1, 0x12, 0x95, 0xdc, 0x8c, 0xaf, 0x43, 0x59, 0xc7, 0x76, 0x04, 0xd8, 0xa0, 0x24, 0x8a, 0x37, + 0x12, 0xec, 0x6e, 0xf2, 0x87, 0x0d, 0xdf, 0xe0, 0x10, 0x5e, 0xe6, 0x62, 0x63, 0x5e, 0xd2, 0x3f, + 0xf1, 0xf4, 0xcb, 0x69, 0x5e, 0x49, 0xd4, 0x13, 0xff, 0x10, 0x1d, 0x9b, 0xf5, 0xad, 0x89, 0x6b, + 0x39, 0xc2, 0x8a, 0xa0, 0x3f, 0x4a, 0x42, 0xa3, 0xea, 0xe0, 0x5f, 0xce, 0xf2, 0x35, 0x28, 0x75, + 0x27, 0xc7, 0xba, 0x32, 0xf8, 0x2f, 0x64, 0xf9, 0x4d, 0xd8, 0xd0, 0x58, 0x71, 0x89, 0x1f, 0xfb, + 0x8b, 0x68, 0x82, 0xd7, 0x1a, 0x6a, 0xbc, 0xb4, 0xa0, 0xec, 0x2f, 0x65, 0x51, 0x04, 0xba, 0x23, + 0xfc, 0x97, 0x89, 0x4f, 0x74, 0xa3, 0x82, 0xfd, 0x4a, 0x96, 0xaf, 0x03, 0x74, 0x7b, 0xd1, 0x87, + 0x7e, 0x2d, 0xcb, 0xcb, 0x90, 0xef, 0xf6, 0x88, 0xdb, 0x0f, 0xb2, 0xfc, 0x06, 0xb0, 0xf8, 0xad, + 0x2e, 0x7c, 0xfc, 0x75, 0x25, 0x4c, 0x54, 0xc9, 0xf8, 0xd7, 0xb2, 0xd8, 0xaf, 0x70, 0x94, 0xd9, + 0xdf, 0xc8, 0x72, 0x06, 0xe5, 0x44, 0x6a, 0x8e, 0xfd, 0xcd, 0x2c, 0xe7, 0x50, 0xd9, 0xb7, 0x83, + 0xc0, 0x76, 0x07, 0xba, 0x07, 0xbf, 0x4a, 0x5f, 0xde, 0x89, 0x2e, 0x85, 0xb0, 0xdf, 0xc8, 0xf2, + 0x5b, 0xc0, 0x93, 0xc7, 0x11, 0xfa, 0xc5, 0xdf, 0x22, 0x6a, 0x65, 0xf6, 0x03, 0x0d, 0xfb, 0xdb, + 0x44, 0x8d, 0x9a, 0xa0, 0x01, 0xbf, 0x49, 0x03, 0xd2, 0x8c, 0x4b, 0x25, 0x35, 0xfc, 0x87, 0x44, + 0x1c, 0x4e, 0xa6, 0x82, 0xfd, 0x28, 0x7b, 0xff, 0x27, 0x94, 0x4e, 0x4e, 0x56, 0x1c, 0xf1, 0x55, + 0x28, 0x3a, 0x9e, 0x3b, 0x90, 0xea, 0x07, 0x25, 0x2b, 0x50, 0x0a, 0x86, 0x9e, 0x2f, 0xa9, 0x49, + 0xb7, 0xd6, 0x5c, 0xba, 0xbf, 0xac, 0xca, 0xc9, 0x55, 0x90, 0xa2, 0xd2, 0x73, 0xd2, 0x1c, 0xb0, + 0x72, 0x54, 0xe4, 0x99, 0x8d, 0x0a, 0x51, 0xe9, 0x1e, 0x75, 0x78, 0x4f, 0x95, 0xe5, 0x11, 0x75, + 0xe2, 0x3b, 0xaa, 0x20, 0x55, 0xa0, 0x83, 0xaa, 0x7e, 0x39, 0x6e, 0x3c, 0x44, 0x3f, 0xb8, 0xa4, + 0xa0, 0xde, 0xf7, 0x6c, 0x75, 0x03, 0x52, 0xd7, 0x77, 0x59, 0x28, 0x47, 0x54, 0xc2, 0xc0, 0xc4, + 0xfd, 0xbf, 0x93, 0x82, 0xd5, 0xf0, 0xf6, 0xb0, 0x3d, 0xb0, 0x5d, 0x55, 0xd2, 0x1a, 0xfe, 0x4c, + 0x67, 0xdf, 0xb1, 0xc7, 0xe1, 0xcf, 0xde, 0xad, 0x43, 0xd9, 0xf2, 0xcd, 0x41, 0xc3, 0xb5, 0xb6, + 0x7d, 0x6f, 0xac, 0xc4, 0x56, 0x07, 0x4e, 0xaa, 0x94, 0xf6, 0xb9, 0x38, 0x46, 0xf4, 0xb1, 0xf0, + 0x59, 0x96, 0x6a, 0xc7, 0x86, 0xa6, 0x6f, 0xbb, 0x83, 0xd6, 0xb9, 0x14, 0x6e, 0xa0, 0x4a, 0x6a, + 0xcb, 0x50, 0x98, 0x04, 0xa2, 0x6f, 0x06, 0x82, 0xe5, 0xb1, 0x71, 0x3c, 0xb1, 0x1d, 0x69, 0xbb, + 0xea, 0xd7, 0xe6, 0xa2, 0x9a, 0xd9, 0x22, 0xf6, 0xcc, 0x1c, 0xdb, 0xac, 0x74, 0xff, 0x77, 0x52, + 0x50, 0x26, 0xb5, 0x88, 0x53, 0xaa, 0xb1, 0xcb, 0x51, 0x86, 0xc2, 0x5e, 0xf4, 0xb3, 0x63, 0x79, + 0x48, 0x77, 0x4e, 0x55, 0x4a, 0x55, 0xab, 0x85, 0xba, 0x04, 0xa8, 0x7e, 0x81, 0x2c, 0xcb, 0x3f, + 0x07, 0x37, 0x0c, 0x31, 0xf2, 0xa4, 0x78, 0x66, 0xda, 0x32, 0x79, 0xaf, 0x24, 0x87, 0xd1, 0x89, + 0x7a, 0x15, 0x5e, 0x24, 0xc9, 0x53, 0x74, 0x82, 0x9f, 0x0d, 0x21, 0x05, 0xec, 0x3d, 0x41, 0x74, + 0xb8, 0x52, 0x8c, 0x50, 0x3e, 0xf2, 0x6c, 0x17, 0xbf, 0x46, 0x57, 0x4f, 0x09, 0x42, 0xb9, 0x79, + 0x04, 0xc1, 0xfd, 0x03, 0xb8, 0xb9, 0x38, 0xa3, 0xac, 0x2e, 0xa5, 0xd2, 0x6f, 0xdd, 0xd2, 0x4d, + 0x83, 0x67, 0xbe, 0xad, 0xee, 0x16, 0x96, 0x20, 0xd7, 0x79, 0xee, 0x92, 0x5a, 0x6c, 0x40, 0xe5, + 0xc0, 0x4b, 0xd0, 0xb0, 0xcc, 0xfd, 0xfe, 0xd4, 0x21, 0x40, 0x3c, 0x28, 0xa1, 0x10, 0x2b, 0x89, + 0x5b, 0x34, 0x29, 0x95, 0x5e, 0xa6, 0x7f, 0x57, 0xa0, 0x2e, 0xec, 0xeb, 0xe4, 0xbb, 0xa5, 0x2e, + 0xec, 0x47, 0x62, 0x66, 0xd5, 0xef, 0x10, 0xb9, 0x7d, 0xe1, 0x08, 0x8b, 0xe5, 0xee, 0xbf, 0x07, + 0xeb, 0xba, 0xab, 0x7d, 0x11, 0x04, 0xe1, 0x2d, 0x94, 0x43, 0xdf, 0x3e, 0x53, 0x3f, 0x0a, 0xb0, + 0x0a, 0xc5, 0x43, 0xe1, 0x07, 0x9e, 0x4b, 0x3f, 0x88, 0x00, 0x90, 0xef, 0x0e, 0x4d, 0x1f, 0xbf, + 0x71, 0xbf, 0x09, 0x25, 0xba, 0x95, 0xf2, 0xd8, 0x76, 0x2d, 0xec, 0xc9, 0x96, 0x2e, 0xc4, 0xa6, + 0x5f, 0x9e, 0x39, 0xa3, 0xfe, 0x15, 0xd5, 0x2f, 0x6e, 0xb2, 0x34, 0xbf, 0x09, 0x1c, 0xa3, 0xe7, + 0x91, 0x49, 0xd7, 0x1c, 0x9d, 0x0b, 0xf5, 0xeb, 0xac, 0x99, 0xfb, 0xdf, 0x02, 0xae, 0x72, 0x40, + 0x96, 0x38, 0xb7, 0xdd, 0x41, 0x74, 0x83, 0x1a, 0xe8, 0xe7, 0x10, 0x2c, 0x71, 0x4e, 0x21, 0x56, + 0x19, 0x0a, 0x61, 0x23, 0xfc, 0x51, 0x86, 0x1d, 0x6f, 0xe2, 0xa2, 0x14, 0x4f, 0xe1, 0xba, 0xd2, + 0x19, 0x14, 0x8b, 0xee, 0xd0, 0x5d, 0x1a, 0x98, 0xaa, 0x2b, 0x45, 0x72, 0x12, 0x44, 0xb8, 0x2c, + 0x85, 0x82, 0x45, 0x41, 0x5d, 0x0c, 0x4f, 0xdf, 0xaf, 0xc3, 0xb5, 0x05, 0x91, 0x35, 0x59, 0x69, + 0x15, 0x5f, 0xb0, 0x95, 0xfb, 0x1f, 0xc2, 0x86, 0xb2, 0x2b, 0x07, 0xea, 0x96, 0x53, 0xb8, 0x45, + 0x3e, 0x6b, 0xef, 0xb4, 0xd5, 0xd0, 0x35, 0x5b, 0x7b, 0x7b, 0x4f, 0xf6, 0x1a, 0x06, 0x4b, 0xd1, + 0x04, 0x77, 0x7a, 0x47, 0xcd, 0xce, 0xc1, 0x41, 0xab, 0xd9, 0x6b, 0x6d, 0xb3, 0xf4, 0xd6, 0xfd, + 0x7f, 0xf7, 0xb3, 0x3b, 0xa9, 0x9f, 0xfe, 0xec, 0x4e, 0xea, 0xbf, 0xfe, 0xec, 0x4e, 0xea, 0x07, + 0x3f, 0xbf, 0xb3, 0xf2, 0xd3, 0x9f, 0xdf, 0x59, 0xf9, 0xcf, 0x3f, 0xbf, 0xb3, 0xf2, 0x09, 0x9b, + 0xfd, 0x17, 0x22, 0xc7, 0x79, 0x72, 0x69, 0xdf, 0xfa, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x23, + 0xad, 0xc9, 0xa3, 0x5d, 0x64, 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 86933635c..f0257f048 100644 --- a/pkg/lib/pb/model/protos/models.proto +++ b/pkg/lib/pb/model/protos/models.proto @@ -883,6 +883,7 @@ enum ObjectOrigin { usecase = 6; builtin = 7; bookmark = 8; + api = 9; } message RelationLink { From 1e0578a88a51ecd43981310d3cfe087898cf2e6a Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Wed, 15 Jan 2025 13:25:07 +0100 Subject: [PATCH 161/279] GO-4848: Refactor services to use bundled keys everywhere --- core/api/docs/docs.go | 6 ++- core/api/docs/swagger.json | 6 ++- core/api/docs/swagger.yaml | 2 + core/api/services/object/service.go | 62 ++++++++++++++--------------- core/api/services/search/service.go | 5 +-- core/api/services/space/service.go | 32 +++++++-------- core/api/util/util.go | 8 ++-- 7 files changed, 63 insertions(+), 58 deletions(-) diff --git a/core/api/docs/docs.go b/core/api/docs/docs.go index b14d66306..8d08db8c5 100644 --- a/core/api/docs/docs.go +++ b/core/api/docs/docs.go @@ -827,7 +827,8 @@ const docTemplate = `{ "type": "object", "properties": { "align": { - "type": "string" + "type": "string", + "example": "AlignLeft" }, "background_color": { "type": "string" @@ -848,7 +849,8 @@ const docTemplate = `{ "$ref": "#/definitions/object.Text" }, "vertical_align": { - "type": "string" + "type": "string", + "example": "VerticalAlignTop" } } }, diff --git a/core/api/docs/swagger.json b/core/api/docs/swagger.json index 68a3b91e7..8b02fed75 100644 --- a/core/api/docs/swagger.json +++ b/core/api/docs/swagger.json @@ -821,7 +821,8 @@ "type": "object", "properties": { "align": { - "type": "string" + "type": "string", + "example": "AlignLeft" }, "background_color": { "type": "string" @@ -842,7 +843,8 @@ "$ref": "#/definitions/object.Text" }, "vertical_align": { - "type": "string" + "type": "string", + "example": "VerticalAlignTop" } } }, diff --git a/core/api/docs/swagger.yaml b/core/api/docs/swagger.yaml index dc4fdc6dc..34576636a 100644 --- a/core/api/docs/swagger.yaml +++ b/core/api/docs/swagger.yaml @@ -23,6 +23,7 @@ definitions: object.Block: properties: align: + example: AlignLeft type: string background_color: type: string @@ -37,6 +38,7 @@ definitions: text: $ref: '#/definitions/object.Text' vertical_align: + example: VerticalAlignTop type: string type: object object.Detail: diff --git a/core/api/services/object/service.go b/core/api/services/object/service.go index 38bcdf20c..fa6d4ed1a 100644 --- a/core/api/services/object/service.go +++ b/core/api/services/object/service.go @@ -85,7 +85,7 @@ func (s *ObjectService) ListObjects(ctx context.Context, spaceId string, offset Offset: 0, Limit: 0, ObjectTypeFilter: []string{}, - Keys: []string{"id", "name"}, + Keys: []string{string(bundle.RelationKeyId), string(bundle.RelationKeyName)}, }) if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { @@ -101,7 +101,7 @@ func (s *ObjectService) ListObjects(ctx context.Context, spaceId string, offset objects = make([]Object, 0, len(paginatedObjects)) for _, record := range paginatedObjects { - object, err := s.GetObject(ctx, spaceId, record.Fields["id"].GetStringValue()) + object, err := s.GetObject(ctx, spaceId, record.Fields[string(bundle.RelationKeyId)].GetStringValue()) if err != nil { return nil, 0, false, err } @@ -126,7 +126,7 @@ func (s *ObjectService) GetObject(ctx context.Context, spaceId string, objectId return Object{}, ErrFailedRetrieveObject } - icon := util.GetIconFromEmojiOrImage(s.AccountInfo, resp.ObjectView.Details[0].Details.Fields["iconEmoji"].GetStringValue(), resp.ObjectView.Details[0].Details.Fields["iconImage"].GetStringValue()) + icon := util.GetIconFromEmojiOrImage(s.AccountInfo, resp.ObjectView.Details[0].Details.Fields[string(bundle.RelationKeyIconEmoji)].GetStringValue(), resp.ObjectView.Details[0].Details.Fields[string(bundle.RelationKeyIconImage)].GetStringValue()) objectTypeName, err := util.ResolveTypeToName(s.mw, spaceId, resp.ObjectView.Details[0].Details.Fields["type"].GetStringValue()) if err != nil { return Object{}, err @@ -134,12 +134,12 @@ func (s *ObjectService) GetObject(ctx context.Context, spaceId string, objectId object := Object{ Type: "object", - Id: resp.ObjectView.Details[0].Details.Fields["id"].GetStringValue(), - Name: resp.ObjectView.Details[0].Details.Fields["name"].GetStringValue(), + Id: resp.ObjectView.Details[0].Details.Fields[string(bundle.RelationKeyId)].GetStringValue(), + Name: resp.ObjectView.Details[0].Details.Fields[string(bundle.RelationKeyName)].GetStringValue(), Icon: icon, - Layout: model.ObjectTypeLayout_name[int32(resp.ObjectView.Details[0].Details.Fields["layout"].GetNumberValue())], + Layout: model.ObjectTypeLayout_name[int32(resp.ObjectView.Details[0].Details.Fields[string(bundle.RelationKeyLayout)].GetNumberValue())], ObjectType: objectTypeName, - SpaceId: resp.ObjectView.Details[0].Details.Fields["spaceId"].GetStringValue(), + SpaceId: resp.ObjectView.Details[0].Details.Fields[string(bundle.RelationKeySpaceId)].GetStringValue(), RootId: resp.ObjectView.RootId, Blocks: s.GetBlocks(resp), Details: s.GetDetails(resp), @@ -175,11 +175,11 @@ func (s *ObjectService) CreateObject(ctx context.Context, spaceId string, reques details := &types.Struct{ Fields: map[string]*types.Value{ - "name": pbtypes.String(request.Name), - "iconEmoji": pbtypes.String(request.Icon), - "description": pbtypes.String(request.Description), - "source": pbtypes.String(request.Source), - string(bundle.RelationKeyOrigin): pbtypes.Int64(int64(model.ObjectOrigin_api)), + string(bundle.RelationKeyName): pbtypes.String(request.Name), + string(bundle.RelationKeyIconEmoji): pbtypes.String(request.Icon), + string(bundle.RelationKeyDescription): pbtypes.String(request.Description), + string(bundle.RelationKeySource): pbtypes.String(request.Source), + string(bundle.RelationKeyOrigin): pbtypes.Int64(int64(model.ObjectOrigin_api)), }, } @@ -199,7 +199,7 @@ func (s *ObjectService) CreateObject(ctx context.Context, spaceId string, reques if request.Description != "" { relAddFeatResp := s.mw.ObjectRelationAddFeatured(ctx, &pb.RpcObjectRelationAddFeaturedRequest{ ContextId: resp.ObjectId, - Relations: []string{"description"}, + Relations: []string{string(bundle.RelationKeyDescription)}, }) if relAddFeatResp.Error.Code != pb.RpcObjectRelationAddFeaturedResponseError_NULL { @@ -283,11 +283,11 @@ func (s *ObjectService) ListTypes(ctx context.Context, spaceId string, offset in }, Sorts: []*model.BlockContentDataviewSort{ { - RelationKey: "name", + RelationKey: string(bundle.RelationKeyName), Type: model.BlockContentDataviewSort_Asc, }, }, - Keys: []string{"id", "uniqueKey", "name", "iconEmoji", "recommendedLayout"}, + Keys: []string{string(bundle.RelationKeyId), string(bundle.RelationKeyUniqueKey), string(bundle.RelationKeyName), string(bundle.RelationKeyIconEmoji), string(bundle.RelationKeyRecommendedLayout)}, }) if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { @@ -305,11 +305,11 @@ func (s *ObjectService) ListTypes(ctx context.Context, spaceId string, offset in for _, record := range paginatedTypes { objectTypes = append(objectTypes, ObjectType{ Type: "object_type", - Id: record.Fields["id"].GetStringValue(), - UniqueKey: record.Fields["uniqueKey"].GetStringValue(), - Name: record.Fields["name"].GetStringValue(), - Icon: record.Fields["iconEmoji"].GetStringValue(), - RecommendedLayout: model.ObjectTypeLayout_name[int32(record.Fields["recommendedLayout"].GetNumberValue())], + Id: record.Fields[string(bundle.RelationKeyId)].GetStringValue(), + UniqueKey: record.Fields[string(bundle.RelationKeyUniqueKey)].GetStringValue(), + Name: record.Fields[string(bundle.RelationKeyName)].GetStringValue(), + Icon: record.Fields[string(bundle.RelationKeyIconEmoji)].GetStringValue(), + RecommendedLayout: model.ObjectTypeLayout_name[int32(record.Fields[string(bundle.RelationKeyRecommendedLayout)].GetNumberValue())], }) } return objectTypes, total, hasMore, nil @@ -327,7 +327,7 @@ func (s *ObjectService) ListTemplates(ctx context.Context, spaceId string, typeI Value: pbtypes.String("ot-template"), }, }, - Keys: []string{"id"}, + Keys: []string{string(bundle.RelationKeyId)}, }) if templateTypeIdResp.Error.Code != pb.RpcObjectSearchResponseError_NULL { @@ -339,7 +339,7 @@ func (s *ObjectService) ListTemplates(ctx context.Context, spaceId string, typeI } // Then, search all objects of the template type and filter by the target object type - templateTypeId := templateTypeIdResp.Records[0].Fields["id"].GetStringValue() + templateTypeId := templateTypeIdResp.Records[0].Fields[string(bundle.RelationKeyId)].GetStringValue() templateObjectsResp := s.mw.ObjectSearch(ctx, &pb.RpcObjectSearchRequest{ SpaceId: spaceId, Filters: []*model.BlockContentDataviewFilter{ @@ -349,7 +349,7 @@ func (s *ObjectService) ListTemplates(ctx context.Context, spaceId string, typeI Value: pbtypes.String(templateTypeId), }, }, - Keys: []string{"id", "targetObjectType", "name", "iconEmoji"}, + Keys: []string{string(bundle.RelationKeyId), string(bundle.RelationKeyTargetObjectType), string(bundle.RelationKeyName), string(bundle.RelationKeyIconEmoji)}, }) if templateObjectsResp.Error.Code != pb.RpcObjectSearchResponseError_NULL { @@ -362,8 +362,8 @@ func (s *ObjectService) ListTemplates(ctx context.Context, spaceId string, typeI templateIds := make([]string, 0) for _, record := range templateObjectsResp.Records { - if record.Fields["targetObjectType"].GetStringValue() == typeId { - templateIds = append(templateIds, record.Fields["id"].GetStringValue()) + if record.Fields[string(bundle.RelationKeyTargetObjectType)].GetStringValue() == typeId { + templateIds = append(templateIds, record.Fields[string(bundle.RelationKeyId)].GetStringValue()) } } @@ -385,8 +385,8 @@ func (s *ObjectService) ListTemplates(ctx context.Context, spaceId string, typeI templates = append(templates, ObjectTemplate{ Type: "object_template", Id: templateId, - Name: templateResp.ObjectView.Details[0].Details.Fields["name"].GetStringValue(), - Icon: templateResp.ObjectView.Details[0].Details.Fields["iconEmoji"].GetStringValue(), + Name: templateResp.ObjectView.Details[0].Details.Fields[string(bundle.RelationKeyName)].GetStringValue(), + Icon: templateResp.ObjectView.Details[0].Details.Fields[string(bundle.RelationKeyIconEmoji)].GetStringValue(), }) } @@ -399,13 +399,13 @@ func (s *ObjectService) GetDetails(resp *pb.RpcObjectShowResponse) []Detail { { Id: "lastModifiedDate", Details: map[string]interface{}{ - "lastModifiedDate": PosixToISO8601(resp.ObjectView.Details[0].Details.Fields["lastModifiedDate"].GetNumberValue()), + "lastModifiedDate": PosixToISO8601(resp.ObjectView.Details[0].Details.Fields[string(bundle.RelationKeyLastModifiedDate)].GetNumberValue()), }, }, { Id: "createdDate", Details: map[string]interface{}{ - "createdDate": PosixToISO8601(resp.ObjectView.Details[0].Details.Fields["createdDate"].GetNumberValue()), + "createdDate": PosixToISO8601(resp.ObjectView.Details[0].Details.Fields[string(bundle.RelationKeyCreatedDate)].GetNumberValue()), }, }, { @@ -432,8 +432,8 @@ func (s *ObjectService) getTags(resp *pb.RpcObjectShowResponse) []Tag { if detail.Id == id { tags = append(tags, Tag{ Id: id, - Name: detail.Details.Fields["name"].GetStringValue(), - Color: detail.Details.Fields["relationOptionColor"].GetStringValue(), + Name: detail.Details.Fields[string(bundle.RelationKeyName)].GetStringValue(), + Color: detail.Details.Fields[string(bundle.RelationKeyRelationOptionColor)].GetStringValue(), }) break } diff --git a/core/api/services/search/service.go b/core/api/services/search/service.go index 20386b8f6..73af6aecd 100644 --- a/core/api/services/search/service.go +++ b/core/api/services/search/service.go @@ -63,7 +63,7 @@ func (s *SearchService) Search(ctx context.Context, searchQuery string, objectTy IncludeTime: true, EmptyPlacement: model.BlockContentDataviewSort_NotSpecified, }}, - Keys: []string{"id", "name"}, + Keys: []string{string(bundle.RelationKeyId), string(bundle.RelationKeyName)}, Limit: int32(limit), // nolint: gosec }) @@ -76,7 +76,7 @@ func (s *SearchService) Search(ctx context.Context, searchQuery string, objectTy } for _, record := range objResp.Records { - object, err := s.objectService.GetObject(ctx, space.Id, record.Fields["id"].GetStringValue()) + object, err := s.objectService.GetObject(ctx, space.Id, record.Fields[string(bundle.RelationKeyId)].GetStringValue()) if err != nil { return nil, 0, false, err } @@ -95,7 +95,6 @@ func (s *SearchService) Search(ctx context.Context, searchQuery string, objectTy return dateStrI > dateStrJ }) - // TODO: solve global pagination vs per space pagination total = len(results) paginatedResults, hasMore := pagination.Paginate(results, offset, limit) return paginatedResults, total, hasMore, nil diff --git a/core/api/services/space/service.go b/core/api/services/space/service.go index 4b84baa5b..c46798285 100644 --- a/core/api/services/space/service.go +++ b/core/api/services/space/service.go @@ -69,13 +69,13 @@ func (s *SpaceService) ListSpaces(ctx context.Context, offset int, limit int) (s }, Sorts: []*model.BlockContentDataviewSort{ { - RelationKey: "spaceOrder", + RelationKey: string(bundle.RelationKeySpaceOrder), Type: model.BlockContentDataviewSort_Asc, NoCollate: true, EmptyPlacement: model.BlockContentDataviewSort_End, }, }, - Keys: []string{"targetSpaceId", "name", "iconEmoji", "iconImage"}, + Keys: []string{string(bundle.RelationKeyTargetSpaceId), string(bundle.RelationKeyName), string(bundle.RelationKeyIconEmoji), string(bundle.RelationKeyIconImage)}, }) if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { @@ -91,14 +91,14 @@ func (s *SpaceService) ListSpaces(ctx context.Context, offset int, limit int) (s spaces = make([]Space, 0, len(paginatedRecords)) for _, record := range paginatedRecords { - workspace, err := s.getWorkspaceInfo(record.Fields["targetSpaceId"].GetStringValue()) + workspace, err := s.getWorkspaceInfo(record.Fields[string(bundle.RelationKeyTargetSpaceId)].GetStringValue()) if err != nil { return nil, 0, false, err } // TODO: name and icon are only returned here; fix that - workspace.Name = record.Fields["name"].GetStringValue() - workspace.Icon = util.GetIconFromEmojiOrImage(s.AccountInfo, record.Fields["iconEmoji"].GetStringValue(), record.Fields["iconImage"].GetStringValue()) + workspace.Name = record.Fields[string(bundle.RelationKeyName)].GetStringValue() + workspace.Icon = util.GetIconFromEmojiOrImage(s.AccountInfo, record.Fields[string(bundle.RelationKeyIconEmoji)].GetStringValue(), record.Fields[string(bundle.RelationKeyIconImage)].GetStringValue()) spaces = append(spaces, workspace) } @@ -117,9 +117,9 @@ func (s *SpaceService) CreateSpace(ctx context.Context, name string) (Space, err resp := s.mw.WorkspaceCreate(ctx, &pb.RpcWorkspaceCreateRequest{ Details: &types.Struct{ Fields: map[string]*types.Value{ - "iconOption": pbtypes.Float64(float64(iconOption.Int64())), - "name": pbtypes.String(name), - "spaceDashboardId": pbtypes.String("lastOpened"), + string(bundle.RelationKeyIconOption): pbtypes.Float64(float64(iconOption.Int64())), + string(bundle.RelationKeyName): pbtypes.String(name), + string(bundle.RelationKeySpaceDashboardId): pbtypes.String("lastOpened"), }, }, UseCase: pb.RpcObjectImportUseCaseRequest_GET_STARTED, @@ -151,11 +151,11 @@ func (s *SpaceService) ListMembers(ctx context.Context, spaceId string, offset i }, Sorts: []*model.BlockContentDataviewSort{ { - RelationKey: "name", + RelationKey: string(bundle.RelationKeyName), Type: model.BlockContentDataviewSort_Asc, }, }, - Keys: []string{"id", "name", "iconEmoji", "iconImage", "identity", "globalName", "participantPermissions"}, + Keys: []string{string(bundle.RelationKeyId), string(bundle.RelationKeyName), string(bundle.RelationKeyIconEmoji), string(bundle.RelationKeyIconImage), string(bundle.RelationKeyIdentity), string(bundle.RelationKeyGlobalName), string(bundle.RelationKeyParticipantPermissions)}, }) if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { @@ -171,16 +171,16 @@ func (s *SpaceService) ListMembers(ctx context.Context, spaceId string, offset i members = make([]Member, 0, len(paginatedMembers)) for _, record := range paginatedMembers { - icon := util.GetIconFromEmojiOrImage(s.AccountInfo, record.Fields["iconEmoji"].GetStringValue(), record.Fields["iconImage"].GetStringValue()) + icon := util.GetIconFromEmojiOrImage(s.AccountInfo, record.Fields[string(bundle.RelationKeyIconEmoji)].GetStringValue(), record.Fields[string(bundle.RelationKeyIconImage)].GetStringValue()) member := Member{ Type: "space_member", - Id: record.Fields["id"].GetStringValue(), - Name: record.Fields["name"].GetStringValue(), + Id: record.Fields[string(bundle.RelationKeyId)].GetStringValue(), + Name: record.Fields[string(bundle.RelationKeyName)].GetStringValue(), Icon: icon, - Identity: record.Fields["identity"].GetStringValue(), - GlobalName: record.Fields["globalName"].GetStringValue(), - Role: model.ParticipantPermissions_name[int32(record.Fields["participantPermissions"].GetNumberValue())], + Identity: record.Fields[string(bundle.RelationKeyIdentity)].GetStringValue(), + GlobalName: record.Fields[string(bundle.RelationKeyGlobalName)].GetStringValue(), + Role: model.ParticipantPermissions_name[int32(record.Fields[string(bundle.RelationKeyParticipantPermissions)].GetNumberValue())], } members = append(members, member) diff --git a/core/api/util/util.go b/core/api/util/util.go index 1612897c2..08802d925 100644 --- a/core/api/util/util.go +++ b/core/api/util/util.go @@ -49,7 +49,7 @@ func ResolveTypeToName(mw service.ClientCommandsServer, spaceId string, typeId s Value: pbtypes.String(typeId), }, }, - Keys: []string{"name"}, + Keys: []string{string(bundle.RelationKeyName)}, }) if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { @@ -60,7 +60,7 @@ func ResolveTypeToName(mw service.ClientCommandsServer, spaceId string, typeId s return "", ErrorTypeNotFound } - return resp.Records[0].Fields["name"].GetStringValue(), nil + return resp.Records[0].Fields[string(bundle.RelationKeyName)].GetStringValue(), nil } func ResolveUniqueKeyToTypeId(mw service.ClientCommandsServer, spaceId string, uniqueKey string) (typeId string, err error) { @@ -74,7 +74,7 @@ func ResolveUniqueKeyToTypeId(mw service.ClientCommandsServer, spaceId string, u Value: pbtypes.String(uniqueKey), }, }, - Keys: []string{"id"}, + Keys: []string{string(bundle.RelationKeyId)}, }) if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { @@ -85,5 +85,5 @@ func ResolveUniqueKeyToTypeId(mw service.ClientCommandsServer, spaceId string, u return "", ErrorTypeNotFound } - return resp.Records[0].Fields["id"].GetStringValue(), nil + return resp.Records[0].Fields[string(bundle.RelationKeyId)].GetStringValue(), nil } From 4714a07c9e6eb797cccc74283cf9f3bf9c46e56f Mon Sep 17 00:00:00 2001 From: Sergey Date: Wed, 15 Jan 2025 13:49:17 +0100 Subject: [PATCH 162/279] GO-4146: Optimize comparison: use anystore iterator --- space/spacecore/storage/migrator/verifier.go | 27 +++++++++++++++----- space/spacecore/storage/sqlitestorage/sql.go | 2 +- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/space/spacecore/storage/migrator/verifier.go b/space/spacecore/storage/migrator/verifier.go index 968c3f0f0..f98fb68a1 100644 --- a/space/spacecore/storage/migrator/verifier.go +++ b/space/spacecore/storage/migrator/verifier.go @@ -8,7 +8,7 @@ import ( "time" anystore "github.com/anyproto/any-store" - "github.com/anyproto/any-store/anyenc" + "github.com/anyproto/any-store/query" "github.com/anyproto/any-sync/commonspace/object/tree/objecttree" "github.com/anyproto/any-sync/commonspace/spacestorage" oldstorage2 "github.com/anyproto/any-sync/commonspace/spacestorage/oldstorage" @@ -164,14 +164,27 @@ func (v *verifier) verifyChangesFull(ctx context.Context, newStoreCollection any if !ok { return 0, fmt.Errorf("old tree storage doesn't implement iterator") } - anyParser := &anyenc.Parser{} var bytesCompared int - err := iterator.IterateChanges(func(id string, oldChange []byte) error { - bytesCompared += len(oldChange) - doc, err := newStoreCollection.FindIdWithParser(ctx, anyParser, id) - if err != nil { - return fmt.Errorf("get new store document: %w", err) + iter, err := newStoreCollection.Find(query.Key{Path: []string{"t"}, Filter: query.NewComp(query.CompOpEq, oldTreeStorage.Id())}).Sort("id").Iter(ctx) + if err != nil { + return 0, fmt.Errorf("new store: changes iterator: %w", err) + } + defer iter.Close() + err = iterator.IterateChanges(func(id string, oldChange []byte) error { + if !iter.Next() { + return fmt.Errorf("new store iterator: no more changes") } + doc, err := iter.Doc() + if err != nil { + return fmt.Errorf("new store iterator: read doc: %w", err) + } + + newId := doc.Value().GetString("id") + if newId != id { + return fmt.Errorf("new store iterator: id does not match") + } + + bytesCompared += len(oldChange) if !bytes.Equal(oldChange, doc.Value().GetBytes("r")) { return fmt.Errorf("old tree change does not match tree storage") } diff --git a/space/spacecore/storage/sqlitestorage/sql.go b/space/spacecore/storage/sqlitestorage/sql.go index 85459b1b8..1e3816e15 100644 --- a/space/spacecore/storage/sqlitestorage/sql.go +++ b/space/spacecore/storage/sqlitestorage/sql.go @@ -91,7 +91,7 @@ func initStmts(s *storageService) (err error) { if s.stmt.listChanges, err = s.readDb.Prepare(`SELECT id FROM changes WHERE treeId = ?`); err != nil { return } - if s.stmt.iterateChanges, err = s.readDb.Prepare(`SELECT id, data FROM changes WHERE treeId = ?`); err != nil { + if s.stmt.iterateChanges, err = s.readDb.Prepare(`SELECT id, data FROM changes WHERE treeId = ? ORDER BY id`); err != nil { return } if s.stmt.updateTreeHeads, err = s.writeDb.Prepare(`UPDATE trees SET heads = ? WHERE id = ?`); err != nil { From b4e7e1ac60f3a206c83699d3a0479ad4acba934c Mon Sep 17 00:00:00 2001 From: Sergey Date: Wed, 15 Jan 2025 16:02:13 +0100 Subject: [PATCH 163/279] GO-4146: Fix iteration methods --- space/spacecore/storage/badgerstorage/keys.go | 4 ++ .../storage/badgerstorage/treestorage.go | 70 ++++++++++++++++++- .../storage/badgerstorage/treestorage_test.go | 48 ++++++++++++- space/spacecore/storage/migrator/verifier.go | 8 +-- .../storage/sqlitestorage/space_test.go | 2 +- space/spacecore/storage/sqlitestorage/sql.go | 2 +- space/spacecore/storage/sqlitestorage/tree.go | 13 ++++ .../storage/sqlitestorage/tree_test.go | 54 +++++++++++++- 8 files changed, 190 insertions(+), 11 deletions(-) diff --git a/space/spacecore/storage/badgerstorage/keys.go b/space/spacecore/storage/badgerstorage/keys.go index cca156aab..d1ec78550 100644 --- a/space/spacecore/storage/badgerstorage/keys.go +++ b/space/spacecore/storage/badgerstorage/keys.go @@ -60,6 +60,10 @@ func (t treeKeys) RawChangeKey(id string) []byte { return treestorage.JoinStringsToBytes("space", t.spaceId, "t", t.id, id) } +func (t treeKeys) RawChangesPrefix() []byte { + return treestorage.JoinStringsToBytes("space", t.spaceId, "t", t.id) +} + func (t treeKeys) RawChangePrefix() []byte { return t.rawChangePrefix } diff --git a/space/spacecore/storage/badgerstorage/treestorage.go b/space/spacecore/storage/badgerstorage/treestorage.go index 28da6aee0..da3cdffcf 100644 --- a/space/spacecore/storage/badgerstorage/treestorage.go +++ b/space/spacecore/storage/badgerstorage/treestorage.go @@ -1,6 +1,7 @@ package badgerstorage import ( + "bytes" "context" "fmt" @@ -109,7 +110,74 @@ func (t *treeStorage) Heads() (heads []string, err error) { } func (t *treeStorage) GetAllChangeIds() (chs []string, err error) { - return nil, fmt.Errorf("get all change ids should not be called") + prefix := t.keys.RawChangesPrefix() + err = t.db.View(func(txn *badger.Txn) error { + opts := badger.DefaultIteratorOptions + opts.PrefetchValues = false + opts.Prefix = prefix + + it := txn.NewIterator(opts) + defer it.Close() + + for it.Rewind(); it.Valid(); it.Next() { + item := it.Item() + id := item.Key() + + changeId := string(id[len(prefix)+1:]) + // Special case + if changeId == "heads" { + continue + } + chs = append(chs, changeId) + if err != nil { + return fmt.Errorf("read value: %w", err) + } + } + return nil + }) + return chs, err +} + +func (t *treeStorage) GetAllChanges() ([]*treechangeproto.RawTreeChangeWithId, error) { + var changes []*treechangeproto.RawTreeChangeWithId + err := t.IterateChanges(func(id string, rawChange []byte) error { + changes = append(changes, &treechangeproto.RawTreeChangeWithId{ + Id: id, + RawChange: bytes.Clone(rawChange), + }) + return nil + }) + return changes, err +} + +func (t *treeStorage) IterateChanges(proc func(id string, rawChange []byte) error) error { + prefix := t.keys.RawChangesPrefix() + return t.db.View(func(txn *badger.Txn) error { + opts := badger.DefaultIteratorOptions + opts.PrefetchValues = false + opts.Prefix = prefix + + it := txn.NewIterator(opts) + defer it.Close() + + for it.Rewind(); it.Valid(); it.Next() { + item := it.Item() + id := item.Key() + + changeId := string(id[len(prefix)+1:]) + // Special case + if changeId == "heads" { + continue + } + err := item.Value(func(val []byte) error { + return proc(changeId, val) + }) + if err != nil { + return fmt.Errorf("read value: %w", err) + } + } + return nil + }) } func (t *treeStorage) SetHeads(heads []string) (err error) { diff --git a/space/spacecore/storage/badgerstorage/treestorage_test.go b/space/spacecore/storage/badgerstorage/treestorage_test.go index 64ef0bfac..7b2ff2860 100644 --- a/space/spacecore/storage/badgerstorage/treestorage_test.go +++ b/space/spacecore/storage/badgerstorage/treestorage_test.go @@ -1,6 +1,7 @@ package badgerstorage import ( + "bytes" "context" "os" "testing" @@ -9,6 +10,7 @@ import ( "github.com/anyproto/any-sync/commonspace/object/tree/treestorage" "github.com/anyproto/any-sync/commonspace/spacestorage/oldstorage" "github.com/dgraph-io/badger/v4" + "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -140,7 +142,7 @@ func TestTreeStorage_Methods(t *testing.T) { }) t.Run("add raw change, get change and has change", func(t *testing.T) { - newChange := &treechangeproto.RawTreeChangeWithId{RawChange: []byte("ab"), Id: "newId"} + newChange := &treechangeproto.RawTreeChangeWithId{RawChange: []byte("ab"), Id: "id10"} require.NoError(t, store.AddRawChange(newChange)) rawCh, err := store.GetRawChange(context.Background(), newChange.Id) require.NoError(t, err) @@ -158,6 +160,50 @@ func TestTreeStorage_Methods(t *testing.T) { require.NoError(t, err) require.False(t, has) }) + + t.Run("iterate changes", func(t *testing.T) { + newChange := &treechangeproto.RawTreeChangeWithId{RawChange: []byte("foo"), Id: "id01"} + require.NoError(t, store.AddRawChange(newChange)) + newChange = &treechangeproto.RawTreeChangeWithId{RawChange: []byte("bar"), Id: "id20"} + require.NoError(t, store.AddRawChange(newChange)) + + var collected []*treechangeproto.RawTreeChangeWithId + require.NoError(t, store.IterateChanges(func(id string, rawChange []byte) error { + collected = append(collected, &treechangeproto.RawTreeChangeWithId{ + Id: id, + RawChange: bytes.Clone(rawChange), + }) + return nil + })) + + want := []*treechangeproto.RawTreeChangeWithId{ + {Id: "id01", RawChange: []byte("foo")}, + {Id: "id10", RawChange: []byte("ab")}, + {Id: "id20", RawChange: []byte("bar")}, + {Id: "otherId", RawChange: []byte("some other")}, + {Id: "someRootId", RawChange: []byte("some")}, + } + assert.Equal(t, want, collected) + + got, err := store.GetAllChanges() + require.NoError(t, err) + + assert.Equal(t, want, got) + }) + + t.Run("get all change ids", func(t *testing.T) { + got, err := store.GetAllChangeIds() + require.NoError(t, err) + + want := []string{"id01", + "id10", + "id20", + "otherId", + "someRootId", + } + + assert.Equal(t, want, got) + }) } func TestTreeStorage_Delete(t *testing.T) { diff --git a/space/spacecore/storage/migrator/verifier.go b/space/spacecore/storage/migrator/verifier.go index f98fb68a1..2544d74f1 100644 --- a/space/spacecore/storage/migrator/verifier.go +++ b/space/spacecore/storage/migrator/verifier.go @@ -53,10 +53,6 @@ func (v *verifier) verify(ctx context.Context) error { return nil } -type oldStoreChangesIterator interface { - IterateChanges(proc func(id string, rawChange []byte) error) error -} - func (v *verifier) verifySpace(ctx context.Context, spaceId string) (*verificationReport, error) { oldStore, err := v.oldStorage.WaitSpaceStorage(ctx, spaceId) if err != nil { @@ -160,9 +156,9 @@ func (v *verifier) verifyChangesFast(ctx context.Context, oldTreeStorage oldstor } func (v *verifier) verifyChangesFull(ctx context.Context, newStoreCollection anystore.Collection, oldTreeStorage oldstorage2.TreeStorage) (int, error) { - iterator, ok := oldTreeStorage.(oldStoreChangesIterator) + iterator, ok := oldTreeStorage.(oldstorage2.ChangesIterator) if !ok { - return 0, fmt.Errorf("old tree storage doesn't implement iterator") + return 0, fmt.Errorf("old tree storage does not implement ChangesIterator") } var bytesCompared int iter, err := newStoreCollection.Find(query.Key{Path: []string{"t"}, Filter: query.NewComp(query.CompOpEq, oldTreeStorage.Id())}).Sort("id").Iter(ctx) diff --git a/space/spacecore/storage/sqlitestorage/space_test.go b/space/spacecore/storage/sqlitestorage/space_test.go index 0033a5bde..0441701d9 100644 --- a/space/spacecore/storage/sqlitestorage/space_test.go +++ b/space/spacecore/storage/sqlitestorage/space_test.go @@ -91,7 +91,7 @@ func TestSpaceStorage_NewAndCreateTree(t *testing.T) { treeIds, err := store.StoredIds() require.NoError(t, err) - assert.Equal(t, []string{payload.SpaceSettingsWithId.Id, otherStore.Id()}, treeIds) + assert.Equal(t, []string{payload.SpaceSettingsWithId.Id}, treeIds) deletedIds, err := store.(*spaceStorage).AllDeletedTreeIds() require.NoError(t, err) diff --git a/space/spacecore/storage/sqlitestorage/sql.go b/space/spacecore/storage/sqlitestorage/sql.go index 1e3816e15..737ba09b9 100644 --- a/space/spacecore/storage/sqlitestorage/sql.go +++ b/space/spacecore/storage/sqlitestorage/sql.go @@ -88,7 +88,7 @@ func initStmts(s *storageService) (err error) { if s.stmt.hasChange, err = s.readDb.Prepare(`SELECT COUNT(*) FROM changes WHERE id = ? AND treeId = ?`); err != nil { return } - if s.stmt.listChanges, err = s.readDb.Prepare(`SELECT id FROM changes WHERE treeId = ?`); err != nil { + if s.stmt.listChanges, err = s.readDb.Prepare(`SELECT id FROM changes WHERE treeId = ? ORDER BY id`); err != nil { return } if s.stmt.iterateChanges, err = s.readDb.Prepare(`SELECT id, data FROM changes WHERE treeId = ? ORDER BY id`); err != nil { diff --git a/space/spacecore/storage/sqlitestorage/tree.go b/space/spacecore/storage/sqlitestorage/tree.go index e749d6b67..bd9882fc7 100644 --- a/space/spacecore/storage/sqlitestorage/tree.go +++ b/space/spacecore/storage/sqlitestorage/tree.go @@ -1,6 +1,7 @@ package sqlitestorage import ( + "bytes" "context" "errors" "fmt" @@ -117,6 +118,18 @@ func (t *treeStorage) GetAllChangeIds() (chs []string, err error) { return chs, rows.Close() } +func (t *treeStorage) GetAllChanges() ([]*treechangeproto.RawTreeChangeWithId, error) { + var changes []*treechangeproto.RawTreeChangeWithId + err := t.IterateChanges(func(id string, rawChange []byte) error { + changes = append(changes, &treechangeproto.RawTreeChangeWithId{ + Id: id, + RawChange: bytes.Clone(rawChange), + }) + return nil + }) + return changes, err +} + func (t *treeStorage) IterateChanges(proc func(id string, rawChange []byte) error) error { rows, err := t.service.stmt.iterateChanges.Query(t.treeId) if err != nil { diff --git a/space/spacecore/storage/sqlitestorage/tree_test.go b/space/spacecore/storage/sqlitestorage/tree_test.go index 2f5c39b96..5a226bab2 100644 --- a/space/spacecore/storage/sqlitestorage/tree_test.go +++ b/space/spacecore/storage/sqlitestorage/tree_test.go @@ -1,9 +1,12 @@ package sqlitestorage import ( + "bytes" "crypto/rand" "database/sql" "encoding/hex" + "slices" + "sort" "testing" "github.com/anyproto/any-sync/commonspace/object/tree/treechangeproto" @@ -55,7 +58,7 @@ func TestTreeStorage_Methods(t *testing.T) { }) t.Run("add raw change, get change and has change", func(t *testing.T) { - newChange := &treechangeproto.RawTreeChangeWithId{RawChange: []byte("ab"), Id: "newId"} + newChange := &treechangeproto.RawTreeChangeWithId{RawChange: []byte("ab"), Id: "id10"} require.NoError(t, store.AddRawChange(newChange)) rawCh, err := store.GetRawChange(ctx, newChange.Id) require.NoError(t, err) @@ -73,6 +76,55 @@ func TestTreeStorage_Methods(t *testing.T) { require.NoError(t, err) require.False(t, has) }) + + t.Run("iterate changes", func(t *testing.T) { + newChange := &treechangeproto.RawTreeChangeWithId{RawChange: []byte("foo"), Id: "id01"} + require.NoError(t, store.AddRawChange(newChange)) + newChange = &treechangeproto.RawTreeChangeWithId{RawChange: []byte("bar"), Id: "id20"} + require.NoError(t, store.AddRawChange(newChange)) + + var collected []*treechangeproto.RawTreeChangeWithId + require.NoError(t, store.IterateChanges(func(id string, rawChange []byte) error { + collected = append(collected, &treechangeproto.RawTreeChangeWithId{ + Id: id, + RawChange: bytes.Clone(rawChange), + }) + return nil + })) + + want := slices.Clone(payload.Changes) + want = append(want, []*treechangeproto.RawTreeChangeWithId{ + {Id: "id01", RawChange: []byte("foo")}, + {Id: "id10", RawChange: []byte("ab")}, + {Id: "id20", RawChange: []byte("bar")}, + }...) + + sort.Slice(want, func(i, j int) bool { + return want[i].Id < want[j].Id + }) + assert.Equal(t, want, collected) + + got, err := store.GetAllChanges() + require.NoError(t, err) + + assert.Equal(t, want, got) + }) + + t.Run("get all change ids", func(t *testing.T) { + got, err := store.GetAllChangeIds() + require.NoError(t, err) + + want := []string{ + payload.Changes[0].Id, + payload.Changes[1].Id, + "id01", + "id10", + "id20", + } + sort.Strings(want) + + assert.Equal(t, want, got) + }) } func TestTreeStorage_AddRawChangesSetHeads(t *testing.T) { From 6c939cdc195d53dca2e7236205891a620990bcdc Mon Sep 17 00:00:00 2001 From: Sergey Date: Wed, 15 Jan 2025 16:50:06 +0100 Subject: [PATCH 164/279] GO-4146: Update any-sync --- go.mod | 2 +- go.sum | 2 ++ space/spacecore/storage/migrator/migrator_test.go | 6 ------ space/spacecore/storage/migrator/verifier.go | 2 ++ 4 files changed, 5 insertions(+), 7 deletions(-) diff --git a/go.mod b/go.mod index a2a101411..16a504048 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( github.com/VividCortex/ewma v1.2.0 github.com/adrium/goheif v0.0.0-20230113233934-ca402e77a786 github.com/anyproto/any-store v0.1.3 - github.com/anyproto/any-sync v0.6.0-alpha.4.0.20250113102657-9e965782cca3 + github.com/anyproto/any-sync v0.6.0-alpha.4.0.20250115150621-aed567ed2985 github.com/anyproto/go-chash v0.1.0 github.com/anyproto/go-naturaldate/v2 v2.0.2-0.20230524105841-9829cfd13438 github.com/anyproto/go-slip10 v1.0.0 diff --git a/go.sum b/go.sum index fcca0958f..062026108 100644 --- a/go.sum +++ b/go.sum @@ -80,6 +80,8 @@ github.com/anyproto/any-store v0.1.3 h1:onWLP8tuWiUvYOyV3DoRODscTxAiGEjwQPm+NMxe github.com/anyproto/any-store v0.1.3/go.mod h1:6/0OUKgSMWF/vYGoGYzQOl2CII5OdiuXbQlGDXYcNYc= github.com/anyproto/any-sync v0.6.0-alpha.4.0.20250113102657-9e965782cca3 h1:gcUHUO05MMxhnQxjLMqycdkhYbCZwnJ9PNeWITQ8syw= github.com/anyproto/any-sync v0.6.0-alpha.4.0.20250113102657-9e965782cca3/go.mod h1:91ismOJy65b0sODYdZ0jAjKQouppbz8ans/gn+ytL90= +github.com/anyproto/any-sync v0.6.0-alpha.4.0.20250115150621-aed567ed2985 h1:H45y0Ji7vqp6mZxR4VDD9hdIBnGuRopJ7RTOJA7bWjA= +github.com/anyproto/any-sync v0.6.0-alpha.4.0.20250115150621-aed567ed2985/go.mod h1:91ismOJy65b0sODYdZ0jAjKQouppbz8ans/gn+ytL90= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580 h1:Ba80IlCCxkZ9H1GF+7vFu/TSpPvbpDCxXJ5ogc4euYc= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580/go.mod h1:T/uWAYxrXdaXw64ihI++9RMbKTCpKd/yE9+saARew7k= github.com/anyproto/go-chash v0.1.0 h1:I9meTPjXFRfXZHRJzjOHC/XF7Q5vzysKkiT/grsogXY= diff --git a/space/spacecore/storage/migrator/migrator_test.go b/space/spacecore/storage/migrator/migrator_test.go index da920da1f..2dcf33f97 100644 --- a/space/spacecore/storage/migrator/migrator_test.go +++ b/space/spacecore/storage/migrator/migrator_test.go @@ -2,11 +2,9 @@ package migrator import ( "context" - "fmt" "io" "os" "testing" - "time" "github.com/anyproto/any-sync/app" "github.com/stretchr/testify/mock" @@ -104,9 +102,7 @@ func TestMigration(t *testing.T) { fx.start(t) - now := time.Now() err = fx.migrator.verify(context.Background(), true) - fmt.Println("FAST", time.Since(now)) require.NoError(t, err) }) @@ -120,9 +116,7 @@ func TestMigration(t *testing.T) { fx.start(t) - now := time.Now() err = fx.migrator.verify(context.Background(), false) - fmt.Println("FULL", time.Since(now)) require.NoError(t, err) }) } diff --git a/space/spacecore/storage/migrator/verifier.go b/space/spacecore/storage/migrator/verifier.go index 2544d74f1..f6b5c3bee 100644 --- a/space/spacecore/storage/migrator/verifier.go +++ b/space/spacecore/storage/migrator/verifier.go @@ -134,6 +134,7 @@ func (v *verifier) verifyTree(ctx context.Context, oldStore oldstorage2.SpaceSto return bytesCompared, nil } +// verifyChangesFast checks only existence of changes func (v *verifier) verifyChangesFast(ctx context.Context, oldTreeStorage oldstorage2.TreeStorage, newTreeStorage objecttree.Storage) error { oldChangeIds, err := oldTreeStorage.GetAllChangeIds() if err != nil { @@ -155,6 +156,7 @@ func (v *verifier) verifyChangesFast(ctx context.Context, oldTreeStorage oldstor return nil } +// verifyChangesFull checks byte contents of changes func (v *verifier) verifyChangesFull(ctx context.Context, newStoreCollection anystore.Collection, oldTreeStorage oldstorage2.TreeStorage) (int, error) { iterator, ok := oldTreeStorage.(oldstorage2.ChangesIterator) if !ok { From 1c2e46c7bc846f4d36d62ea4c6a15bd37f3833eb Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Wed, 15 Jan 2025 19:41:26 +0100 Subject: [PATCH 165/279] GO-4848: Return participants in details --- core/api/server/server.go | 2 +- core/api/services/object/service.go | 39 +++++++++++++++++++++++++---- core/api/services/space/service.go | 39 ++++++++++++++++++++++++++++- 3 files changed, 73 insertions(+), 7 deletions(-) diff --git a/core/api/server/server.go b/core/api/server/server.go index 578162f99..c6846a45c 100644 --- a/core/api/server/server.go +++ b/core/api/server/server.go @@ -28,10 +28,10 @@ func NewServer(a *app.App, mw service.ClientCommandsServer) *Server { s := &Server{ authService: auth.NewService(mw), exportService: export.NewService(mw), - objectService: object.NewService(mw), spaceService: space.NewService(mw), } + s.objectService = object.NewService(mw, s.spaceService) s.searchService = search.NewService(mw, s.spaceService, s.objectService) s.engine = s.NewRouter(a) diff --git a/core/api/services/object/service.go b/core/api/services/object/service.go index fa6d4ed1a..787a94f15 100644 --- a/core/api/services/object/service.go +++ b/core/api/services/object/service.go @@ -8,6 +8,7 @@ import ( "github.com/gogo/protobuf/types" "github.com/anyproto/anytype-heart/core/api/pagination" + "github.com/anyproto/anytype-heart/core/api/services/space" "github.com/anyproto/anytype-heart/core/api/util" "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/pb/service" @@ -46,12 +47,13 @@ type Service interface { } type ObjectService struct { - mw service.ClientCommandsServer - AccountInfo *model.AccountInfo + mw service.ClientCommandsServer + spaceService *space.SpaceService + AccountInfo *model.AccountInfo } -func NewService(mw service.ClientCommandsServer) *ObjectService { - return &ObjectService{mw: mw} +func NewService(mw service.ClientCommandsServer, spaceService *space.SpaceService) *ObjectService { + return &ObjectService{mw: mw, spaceService: spaceService} } // ListObjects retrieves a paginated list of objects in a specific space. @@ -127,7 +129,7 @@ func (s *ObjectService) GetObject(ctx context.Context, spaceId string, objectId } icon := util.GetIconFromEmojiOrImage(s.AccountInfo, resp.ObjectView.Details[0].Details.Fields[string(bundle.RelationKeyIconEmoji)].GetStringValue(), resp.ObjectView.Details[0].Details.Fields[string(bundle.RelationKeyIconImage)].GetStringValue()) - objectTypeName, err := util.ResolveTypeToName(s.mw, spaceId, resp.ObjectView.Details[0].Details.Fields["type"].GetStringValue()) + objectTypeName, err := util.ResolveTypeToName(s.mw, spaceId, resp.ObjectView.Details[0].Details.Fields[string(bundle.RelationKeyType)].GetStringValue()) if err != nil { return Object{}, err } @@ -395,6 +397,19 @@ func (s *ObjectService) ListTemplates(ctx context.Context, spaceId string, typeI // GetDetails returns the list of details from the ObjectShowResponse. func (s *ObjectService) GetDetails(resp *pb.RpcObjectShowResponse) []Detail { + creator := resp.ObjectView.Details[0].Details.Fields[bundle.RelationKeyCreator.String()].GetStringValue() + lastModifiedBy := resp.ObjectView.Details[0].Details.Fields[bundle.RelationKeyLastModifiedBy.String()].GetStringValue() + + var creatorId, lastModifiedById string + for _, detail := range resp.ObjectView.Details { + if detail.Id == creator { + creatorId = detail.Id + } + if detail.Id == lastModifiedBy { + lastModifiedById = detail.Id + } + } + return []Detail{ { Id: "lastModifiedDate", @@ -408,6 +423,20 @@ func (s *ObjectService) GetDetails(resp *pb.RpcObjectShowResponse) []Detail { "createdDate": PosixToISO8601(resp.ObjectView.Details[0].Details.Fields[string(bundle.RelationKeyCreatedDate)].GetNumberValue()), }, }, + { + Id: "createdBy", + Details: map[string]interface{}{ + "id": creatorId, + "details": s.spaceService.GetParticipantDetails(s.mw, s.AccountInfo, resp.ObjectView.Details[0].Details.Fields[bundle.RelationKeySpaceId.String()].GetStringValue(), creatorId), + }, + }, + { + Id: "lastModifiedBy", + Details: map[string]interface{}{ + "id": lastModifiedById, + "details": s.spaceService.GetParticipantDetails(s.mw, s.AccountInfo, resp.ObjectView.Details[0].Details.Fields[bundle.RelationKeySpaceId.String()].GetStringValue(), lastModifiedById), + }, + }, { Id: "tags", Details: map[string]interface{}{ diff --git a/core/api/services/space/service.go b/core/api/services/space/service.go index c46798285..a5996623a 100644 --- a/core/api/services/space/service.go +++ b/core/api/services/space/service.go @@ -139,11 +139,13 @@ func (s *SpaceService) ListMembers(ctx context.Context, spaceId string, offset i SpaceId: spaceId, Filters: []*model.BlockContentDataviewFilter{ { + Operator: model.BlockContentDataviewFilter_No, RelationKey: bundle.RelationKeyLayout.String(), Condition: model.BlockContentDataviewFilter_Equal, Value: pbtypes.Int64(int64(model.ObjectType_participant)), }, { + Operator: model.BlockContentDataviewFilter_No, RelationKey: bundle.RelationKeyParticipantStatus.String(), Condition: model.BlockContentDataviewFilter_Equal, Value: pbtypes.Int64(int64(model.ParticipantStatus_Active)), @@ -174,7 +176,7 @@ func (s *SpaceService) ListMembers(ctx context.Context, spaceId string, offset i icon := util.GetIconFromEmojiOrImage(s.AccountInfo, record.Fields[string(bundle.RelationKeyIconEmoji)].GetStringValue(), record.Fields[string(bundle.RelationKeyIconImage)].GetStringValue()) member := Member{ - Type: "space_member", + Type: "member", Id: record.Fields[string(bundle.RelationKeyId)].GetStringValue(), Name: record.Fields[string(bundle.RelationKeyName)].GetStringValue(), Icon: icon, @@ -189,6 +191,41 @@ func (s *SpaceService) ListMembers(ctx context.Context, spaceId string, offset i return members, total, hasMore, nil } +func (s *SpaceService) GetParticipantDetails(mw service.ClientCommandsServer, accountInfo *model.AccountInfo, spaceId string, participantId string) Member { + resp := mw.ObjectSearch(context.Background(), &pb.RpcObjectSearchRequest{ + SpaceId: spaceId, + Filters: []*model.BlockContentDataviewFilter{ + { + Operator: model.BlockContentDataviewFilter_No, + RelationKey: bundle.RelationKeyId.String(), + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.String(participantId), + }, + }, + Keys: []string{string(bundle.RelationKeyId), string(bundle.RelationKeyName), string(bundle.RelationKeyIconEmoji), string(bundle.RelationKeyIconImage), string(bundle.RelationKeyIdentity), string(bundle.RelationKeyGlobalName), string(bundle.RelationKeyParticipantPermissions)}, + }) + + if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { + return Member{} + } + + if len(resp.Records) == 0 { + return Member{} + } + + icon := util.GetIconFromEmojiOrImage(accountInfo, "", resp.Records[0].Fields[string(bundle.RelationKeyIconImage)].GetStringValue()) + + return Member{ + Type: "member", + Id: resp.Records[0].Fields[string(bundle.RelationKeyId)].GetStringValue(), + Name: resp.Records[0].Fields[string(bundle.RelationKeyName)].GetStringValue(), + Icon: icon, + Identity: resp.Records[0].Fields[string(bundle.RelationKeyIdentity)].GetStringValue(), + GlobalName: resp.Records[0].Fields[string(bundle.RelationKeyGlobalName)].GetStringValue(), + Role: model.ParticipantPermissions_name[int32(resp.Records[0].Fields[string(bundle.RelationKeyParticipantPermissions)].GetNumberValue())], + } +} + // getWorkspaceInfo returns the workspace info for the space with the given ID. func (s *SpaceService) getWorkspaceInfo(spaceId string) (space Space, err error) { workspaceResponse := s.mw.WorkspaceOpen(context.Background(), &pb.RpcWorkspaceOpenRequest{ From 50f6b2819e2d0e095ff87b5f8012a045cd0abddb Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Wed, 15 Jan 2025 19:58:57 +0100 Subject: [PATCH 166/279] GO-4848: Replace string(RelationKey) with .String() --- core/api/services/object/service.go | 64 ++++++++++++++--------------- core/api/services/search/service.go | 4 +- core/api/services/space/service.go | 46 ++++++++++----------- core/api/util/util.go | 8 ++-- 4 files changed, 61 insertions(+), 61 deletions(-) diff --git a/core/api/services/object/service.go b/core/api/services/object/service.go index 787a94f15..a0214f834 100644 --- a/core/api/services/object/service.go +++ b/core/api/services/object/service.go @@ -87,7 +87,7 @@ func (s *ObjectService) ListObjects(ctx context.Context, spaceId string, offset Offset: 0, Limit: 0, ObjectTypeFilter: []string{}, - Keys: []string{string(bundle.RelationKeyId), string(bundle.RelationKeyName)}, + Keys: []string{bundle.RelationKeyId.String(), bundle.RelationKeyName.String()}, }) if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { @@ -103,7 +103,7 @@ func (s *ObjectService) ListObjects(ctx context.Context, spaceId string, offset objects = make([]Object, 0, len(paginatedObjects)) for _, record := range paginatedObjects { - object, err := s.GetObject(ctx, spaceId, record.Fields[string(bundle.RelationKeyId)].GetStringValue()) + object, err := s.GetObject(ctx, spaceId, record.Fields[bundle.RelationKeyId.String()].GetStringValue()) if err != nil { return nil, 0, false, err } @@ -128,20 +128,20 @@ func (s *ObjectService) GetObject(ctx context.Context, spaceId string, objectId return Object{}, ErrFailedRetrieveObject } - icon := util.GetIconFromEmojiOrImage(s.AccountInfo, resp.ObjectView.Details[0].Details.Fields[string(bundle.RelationKeyIconEmoji)].GetStringValue(), resp.ObjectView.Details[0].Details.Fields[string(bundle.RelationKeyIconImage)].GetStringValue()) - objectTypeName, err := util.ResolveTypeToName(s.mw, spaceId, resp.ObjectView.Details[0].Details.Fields[string(bundle.RelationKeyType)].GetStringValue()) + icon := util.GetIconFromEmojiOrImage(s.AccountInfo, resp.ObjectView.Details[0].Details.Fields[bundle.RelationKeyIconEmoji.String()].GetStringValue(), resp.ObjectView.Details[0].Details.Fields[bundle.RelationKeyIconImage.String()].GetStringValue()) + objectTypeName, err := util.ResolveTypeToName(s.mw, spaceId, resp.ObjectView.Details[0].Details.Fields[bundle.RelationKeyType.String()].GetStringValue()) if err != nil { return Object{}, err } object := Object{ Type: "object", - Id: resp.ObjectView.Details[0].Details.Fields[string(bundle.RelationKeyId)].GetStringValue(), - Name: resp.ObjectView.Details[0].Details.Fields[string(bundle.RelationKeyName)].GetStringValue(), + Id: resp.ObjectView.Details[0].Details.Fields[bundle.RelationKeyId.String()].GetStringValue(), + Name: resp.ObjectView.Details[0].Details.Fields[bundle.RelationKeyName.String()].GetStringValue(), Icon: icon, - Layout: model.ObjectTypeLayout_name[int32(resp.ObjectView.Details[0].Details.Fields[string(bundle.RelationKeyLayout)].GetNumberValue())], + Layout: model.ObjectTypeLayout_name[int32(resp.ObjectView.Details[0].Details.Fields[bundle.RelationKeyLayout.String()].GetNumberValue())], ObjectType: objectTypeName, - SpaceId: resp.ObjectView.Details[0].Details.Fields[string(bundle.RelationKeySpaceId)].GetStringValue(), + SpaceId: resp.ObjectView.Details[0].Details.Fields[bundle.RelationKeySpaceId.String()].GetStringValue(), RootId: resp.ObjectView.RootId, Blocks: s.GetBlocks(resp), Details: s.GetDetails(resp), @@ -177,11 +177,11 @@ func (s *ObjectService) CreateObject(ctx context.Context, spaceId string, reques details := &types.Struct{ Fields: map[string]*types.Value{ - string(bundle.RelationKeyName): pbtypes.String(request.Name), - string(bundle.RelationKeyIconEmoji): pbtypes.String(request.Icon), - string(bundle.RelationKeyDescription): pbtypes.String(request.Description), - string(bundle.RelationKeySource): pbtypes.String(request.Source), - string(bundle.RelationKeyOrigin): pbtypes.Int64(int64(model.ObjectOrigin_api)), + bundle.RelationKeyName.String(): pbtypes.String(request.Name), + bundle.RelationKeyIconEmoji.String(): pbtypes.String(request.Icon), + bundle.RelationKeyDescription.String(): pbtypes.String(request.Description), + bundle.RelationKeySource.String(): pbtypes.String(request.Source), + bundle.RelationKeyOrigin.String(): pbtypes.Int64(int64(model.ObjectOrigin_api)), }, } @@ -201,7 +201,7 @@ func (s *ObjectService) CreateObject(ctx context.Context, spaceId string, reques if request.Description != "" { relAddFeatResp := s.mw.ObjectRelationAddFeatured(ctx, &pb.RpcObjectRelationAddFeaturedRequest{ ContextId: resp.ObjectId, - Relations: []string{string(bundle.RelationKeyDescription)}, + Relations: []string{bundle.RelationKeyDescription.String()}, }) if relAddFeatResp.Error.Code != pb.RpcObjectRelationAddFeaturedResponseError_NULL { @@ -285,11 +285,11 @@ func (s *ObjectService) ListTypes(ctx context.Context, spaceId string, offset in }, Sorts: []*model.BlockContentDataviewSort{ { - RelationKey: string(bundle.RelationKeyName), + RelationKey: bundle.RelationKeyName.String(), Type: model.BlockContentDataviewSort_Asc, }, }, - Keys: []string{string(bundle.RelationKeyId), string(bundle.RelationKeyUniqueKey), string(bundle.RelationKeyName), string(bundle.RelationKeyIconEmoji), string(bundle.RelationKeyRecommendedLayout)}, + Keys: []string{bundle.RelationKeyId.String(), bundle.RelationKeyUniqueKey.String(), bundle.RelationKeyName.String(), bundle.RelationKeyIconEmoji.String(), bundle.RelationKeyRecommendedLayout.String()}, }) if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { @@ -307,11 +307,11 @@ func (s *ObjectService) ListTypes(ctx context.Context, spaceId string, offset in for _, record := range paginatedTypes { objectTypes = append(objectTypes, ObjectType{ Type: "object_type", - Id: record.Fields[string(bundle.RelationKeyId)].GetStringValue(), - UniqueKey: record.Fields[string(bundle.RelationKeyUniqueKey)].GetStringValue(), - Name: record.Fields[string(bundle.RelationKeyName)].GetStringValue(), - Icon: record.Fields[string(bundle.RelationKeyIconEmoji)].GetStringValue(), - RecommendedLayout: model.ObjectTypeLayout_name[int32(record.Fields[string(bundle.RelationKeyRecommendedLayout)].GetNumberValue())], + Id: record.Fields[bundle.RelationKeyId.String()].GetStringValue(), + UniqueKey: record.Fields[bundle.RelationKeyUniqueKey.String()].GetStringValue(), + Name: record.Fields[bundle.RelationKeyName.String()].GetStringValue(), + Icon: record.Fields[bundle.RelationKeyIconEmoji.String()].GetStringValue(), + RecommendedLayout: model.ObjectTypeLayout_name[int32(record.Fields[bundle.RelationKeyRecommendedLayout.String()].GetNumberValue())], }) } return objectTypes, total, hasMore, nil @@ -329,7 +329,7 @@ func (s *ObjectService) ListTemplates(ctx context.Context, spaceId string, typeI Value: pbtypes.String("ot-template"), }, }, - Keys: []string{string(bundle.RelationKeyId)}, + Keys: []string{bundle.RelationKeyId.String()}, }) if templateTypeIdResp.Error.Code != pb.RpcObjectSearchResponseError_NULL { @@ -341,7 +341,7 @@ func (s *ObjectService) ListTemplates(ctx context.Context, spaceId string, typeI } // Then, search all objects of the template type and filter by the target object type - templateTypeId := templateTypeIdResp.Records[0].Fields[string(bundle.RelationKeyId)].GetStringValue() + templateTypeId := templateTypeIdResp.Records[0].Fields[bundle.RelationKeyId.String()].GetStringValue() templateObjectsResp := s.mw.ObjectSearch(ctx, &pb.RpcObjectSearchRequest{ SpaceId: spaceId, Filters: []*model.BlockContentDataviewFilter{ @@ -351,7 +351,7 @@ func (s *ObjectService) ListTemplates(ctx context.Context, spaceId string, typeI Value: pbtypes.String(templateTypeId), }, }, - Keys: []string{string(bundle.RelationKeyId), string(bundle.RelationKeyTargetObjectType), string(bundle.RelationKeyName), string(bundle.RelationKeyIconEmoji)}, + Keys: []string{bundle.RelationKeyId.String(), bundle.RelationKeyTargetObjectType.String(), bundle.RelationKeyName.String(), bundle.RelationKeyIconEmoji.String()}, }) if templateObjectsResp.Error.Code != pb.RpcObjectSearchResponseError_NULL { @@ -364,8 +364,8 @@ func (s *ObjectService) ListTemplates(ctx context.Context, spaceId string, typeI templateIds := make([]string, 0) for _, record := range templateObjectsResp.Records { - if record.Fields[string(bundle.RelationKeyTargetObjectType)].GetStringValue() == typeId { - templateIds = append(templateIds, record.Fields[string(bundle.RelationKeyId)].GetStringValue()) + if record.Fields[bundle.RelationKeyTargetObjectType.String()].GetStringValue() == typeId { + templateIds = append(templateIds, record.Fields[bundle.RelationKeyId.String()].GetStringValue()) } } @@ -387,8 +387,8 @@ func (s *ObjectService) ListTemplates(ctx context.Context, spaceId string, typeI templates = append(templates, ObjectTemplate{ Type: "object_template", Id: templateId, - Name: templateResp.ObjectView.Details[0].Details.Fields[string(bundle.RelationKeyName)].GetStringValue(), - Icon: templateResp.ObjectView.Details[0].Details.Fields[string(bundle.RelationKeyIconEmoji)].GetStringValue(), + Name: templateResp.ObjectView.Details[0].Details.Fields[bundle.RelationKeyName.String()].GetStringValue(), + Icon: templateResp.ObjectView.Details[0].Details.Fields[bundle.RelationKeyIconEmoji.String()].GetStringValue(), }) } @@ -414,13 +414,13 @@ func (s *ObjectService) GetDetails(resp *pb.RpcObjectShowResponse) []Detail { { Id: "lastModifiedDate", Details: map[string]interface{}{ - "lastModifiedDate": PosixToISO8601(resp.ObjectView.Details[0].Details.Fields[string(bundle.RelationKeyLastModifiedDate)].GetNumberValue()), + "lastModifiedDate": PosixToISO8601(resp.ObjectView.Details[0].Details.Fields[bundle.RelationKeyLastModifiedDate.String()].GetNumberValue()), }, }, { Id: "createdDate", Details: map[string]interface{}{ - "createdDate": PosixToISO8601(resp.ObjectView.Details[0].Details.Fields[string(bundle.RelationKeyCreatedDate)].GetNumberValue()), + "createdDate": PosixToISO8601(resp.ObjectView.Details[0].Details.Fields[bundle.RelationKeyCreatedDate.String()].GetNumberValue()), }, }, { @@ -461,8 +461,8 @@ func (s *ObjectService) getTags(resp *pb.RpcObjectShowResponse) []Tag { if detail.Id == id { tags = append(tags, Tag{ Id: id, - Name: detail.Details.Fields[string(bundle.RelationKeyName)].GetStringValue(), - Color: detail.Details.Fields[string(bundle.RelationKeyRelationOptionColor)].GetStringValue(), + Name: detail.Details.Fields[bundle.RelationKeyName.String()].GetStringValue(), + Color: detail.Details.Fields[bundle.RelationKeyRelationOptionColor.String()].GetStringValue(), }) break } diff --git a/core/api/services/search/service.go b/core/api/services/search/service.go index 73af6aecd..41db34632 100644 --- a/core/api/services/search/service.go +++ b/core/api/services/search/service.go @@ -63,7 +63,7 @@ func (s *SearchService) Search(ctx context.Context, searchQuery string, objectTy IncludeTime: true, EmptyPlacement: model.BlockContentDataviewSort_NotSpecified, }}, - Keys: []string{string(bundle.RelationKeyId), string(bundle.RelationKeyName)}, + Keys: []string{bundle.RelationKeyId.String(), bundle.RelationKeyName.String()}, Limit: int32(limit), // nolint: gosec }) @@ -76,7 +76,7 @@ func (s *SearchService) Search(ctx context.Context, searchQuery string, objectTy } for _, record := range objResp.Records { - object, err := s.objectService.GetObject(ctx, space.Id, record.Fields[string(bundle.RelationKeyId)].GetStringValue()) + object, err := s.objectService.GetObject(ctx, space.Id, record.Fields[bundle.RelationKeyId.String()].GetStringValue()) if err != nil { return nil, 0, false, err } diff --git a/core/api/services/space/service.go b/core/api/services/space/service.go index a5996623a..fef990bdd 100644 --- a/core/api/services/space/service.go +++ b/core/api/services/space/service.go @@ -69,13 +69,13 @@ func (s *SpaceService) ListSpaces(ctx context.Context, offset int, limit int) (s }, Sorts: []*model.BlockContentDataviewSort{ { - RelationKey: string(bundle.RelationKeySpaceOrder), + RelationKey: bundle.RelationKeySpaceOrder.String(), Type: model.BlockContentDataviewSort_Asc, NoCollate: true, EmptyPlacement: model.BlockContentDataviewSort_End, }, }, - Keys: []string{string(bundle.RelationKeyTargetSpaceId), string(bundle.RelationKeyName), string(bundle.RelationKeyIconEmoji), string(bundle.RelationKeyIconImage)}, + Keys: []string{bundle.RelationKeyTargetSpaceId.String(), bundle.RelationKeyName.String(), bundle.RelationKeyIconEmoji.String(), bundle.RelationKeyIconImage.String()}, }) if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { @@ -91,14 +91,14 @@ func (s *SpaceService) ListSpaces(ctx context.Context, offset int, limit int) (s spaces = make([]Space, 0, len(paginatedRecords)) for _, record := range paginatedRecords { - workspace, err := s.getWorkspaceInfo(record.Fields[string(bundle.RelationKeyTargetSpaceId)].GetStringValue()) + workspace, err := s.getWorkspaceInfo(record.Fields[bundle.RelationKeyTargetSpaceId.String()].GetStringValue()) if err != nil { return nil, 0, false, err } // TODO: name and icon are only returned here; fix that - workspace.Name = record.Fields[string(bundle.RelationKeyName)].GetStringValue() - workspace.Icon = util.GetIconFromEmojiOrImage(s.AccountInfo, record.Fields[string(bundle.RelationKeyIconEmoji)].GetStringValue(), record.Fields[string(bundle.RelationKeyIconImage)].GetStringValue()) + workspace.Name = record.Fields[bundle.RelationKeyName.String()].GetStringValue() + workspace.Icon = util.GetIconFromEmojiOrImage(s.AccountInfo, record.Fields[bundle.RelationKeyIconEmoji.String()].GetStringValue(), record.Fields[bundle.RelationKeyIconImage.String()].GetStringValue()) spaces = append(spaces, workspace) } @@ -117,9 +117,9 @@ func (s *SpaceService) CreateSpace(ctx context.Context, name string) (Space, err resp := s.mw.WorkspaceCreate(ctx, &pb.RpcWorkspaceCreateRequest{ Details: &types.Struct{ Fields: map[string]*types.Value{ - string(bundle.RelationKeyIconOption): pbtypes.Float64(float64(iconOption.Int64())), - string(bundle.RelationKeyName): pbtypes.String(name), - string(bundle.RelationKeySpaceDashboardId): pbtypes.String("lastOpened"), + bundle.RelationKeyIconOption.String(): pbtypes.Float64(float64(iconOption.Int64())), + bundle.RelationKeyName.String(): pbtypes.String(name), + bundle.RelationKeySpaceDashboardId.String(): pbtypes.String("lastOpened"), }, }, UseCase: pb.RpcObjectImportUseCaseRequest_GET_STARTED, @@ -153,11 +153,11 @@ func (s *SpaceService) ListMembers(ctx context.Context, spaceId string, offset i }, Sorts: []*model.BlockContentDataviewSort{ { - RelationKey: string(bundle.RelationKeyName), + RelationKey: bundle.RelationKeyName.String(), Type: model.BlockContentDataviewSort_Asc, }, }, - Keys: []string{string(bundle.RelationKeyId), string(bundle.RelationKeyName), string(bundle.RelationKeyIconEmoji), string(bundle.RelationKeyIconImage), string(bundle.RelationKeyIdentity), string(bundle.RelationKeyGlobalName), string(bundle.RelationKeyParticipantPermissions)}, + Keys: []string{bundle.RelationKeyId.String(), bundle.RelationKeyName.String(), bundle.RelationKeyIconEmoji.String(), bundle.RelationKeyIconImage.String(), bundle.RelationKeyIdentity.String(), bundle.RelationKeyGlobalName.String(), bundle.RelationKeyParticipantPermissions.String()}, }) if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { @@ -173,16 +173,16 @@ func (s *SpaceService) ListMembers(ctx context.Context, spaceId string, offset i members = make([]Member, 0, len(paginatedMembers)) for _, record := range paginatedMembers { - icon := util.GetIconFromEmojiOrImage(s.AccountInfo, record.Fields[string(bundle.RelationKeyIconEmoji)].GetStringValue(), record.Fields[string(bundle.RelationKeyIconImage)].GetStringValue()) + icon := util.GetIconFromEmojiOrImage(s.AccountInfo, record.Fields[bundle.RelationKeyIconEmoji.String()].GetStringValue(), record.Fields[bundle.RelationKeyIconImage.String()].GetStringValue()) member := Member{ Type: "member", - Id: record.Fields[string(bundle.RelationKeyId)].GetStringValue(), - Name: record.Fields[string(bundle.RelationKeyName)].GetStringValue(), + Id: record.Fields[bundle.RelationKeyId.String()].GetStringValue(), + Name: record.Fields[bundle.RelationKeyName.String()].GetStringValue(), Icon: icon, - Identity: record.Fields[string(bundle.RelationKeyIdentity)].GetStringValue(), - GlobalName: record.Fields[string(bundle.RelationKeyGlobalName)].GetStringValue(), - Role: model.ParticipantPermissions_name[int32(record.Fields[string(bundle.RelationKeyParticipantPermissions)].GetNumberValue())], + Identity: record.Fields[bundle.RelationKeyIdentity.String()].GetStringValue(), + GlobalName: record.Fields[bundle.RelationKeyGlobalName.String()].GetStringValue(), + Role: model.ParticipantPermissions_name[int32(record.Fields[bundle.RelationKeyParticipantPermissions.String()].GetNumberValue())], } members = append(members, member) @@ -202,7 +202,7 @@ func (s *SpaceService) GetParticipantDetails(mw service.ClientCommandsServer, ac Value: pbtypes.String(participantId), }, }, - Keys: []string{string(bundle.RelationKeyId), string(bundle.RelationKeyName), string(bundle.RelationKeyIconEmoji), string(bundle.RelationKeyIconImage), string(bundle.RelationKeyIdentity), string(bundle.RelationKeyGlobalName), string(bundle.RelationKeyParticipantPermissions)}, + Keys: []string{bundle.RelationKeyId.String(), bundle.RelationKeyName.String(), bundle.RelationKeyIconEmoji.String(), bundle.RelationKeyIconImage.String(), bundle.RelationKeyIdentity.String(), bundle.RelationKeyGlobalName.String(), bundle.RelationKeyParticipantPermissions.String()}, }) if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { @@ -213,16 +213,16 @@ func (s *SpaceService) GetParticipantDetails(mw service.ClientCommandsServer, ac return Member{} } - icon := util.GetIconFromEmojiOrImage(accountInfo, "", resp.Records[0].Fields[string(bundle.RelationKeyIconImage)].GetStringValue()) + icon := util.GetIconFromEmojiOrImage(accountInfo, "", resp.Records[0].Fields[bundle.RelationKeyIconImage.String()].GetStringValue()) return Member{ Type: "member", - Id: resp.Records[0].Fields[string(bundle.RelationKeyId)].GetStringValue(), - Name: resp.Records[0].Fields[string(bundle.RelationKeyName)].GetStringValue(), + Id: resp.Records[0].Fields[bundle.RelationKeyId.String()].GetStringValue(), + Name: resp.Records[0].Fields[bundle.RelationKeyName.String()].GetStringValue(), Icon: icon, - Identity: resp.Records[0].Fields[string(bundle.RelationKeyIdentity)].GetStringValue(), - GlobalName: resp.Records[0].Fields[string(bundle.RelationKeyGlobalName)].GetStringValue(), - Role: model.ParticipantPermissions_name[int32(resp.Records[0].Fields[string(bundle.RelationKeyParticipantPermissions)].GetNumberValue())], + Identity: resp.Records[0].Fields[bundle.RelationKeyIdentity.String()].GetStringValue(), + GlobalName: resp.Records[0].Fields[bundle.RelationKeyGlobalName.String()].GetStringValue(), + Role: model.ParticipantPermissions_name[int32(resp.Records[0].Fields[bundle.RelationKeyParticipantPermissions.String()].GetNumberValue())], } } diff --git a/core/api/util/util.go b/core/api/util/util.go index 08802d925..5f0cd0742 100644 --- a/core/api/util/util.go +++ b/core/api/util/util.go @@ -49,7 +49,7 @@ func ResolveTypeToName(mw service.ClientCommandsServer, spaceId string, typeId s Value: pbtypes.String(typeId), }, }, - Keys: []string{string(bundle.RelationKeyName)}, + Keys: []string{bundle.RelationKeyName.String()}, }) if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { @@ -60,7 +60,7 @@ func ResolveTypeToName(mw service.ClientCommandsServer, spaceId string, typeId s return "", ErrorTypeNotFound } - return resp.Records[0].Fields[string(bundle.RelationKeyName)].GetStringValue(), nil + return resp.Records[0].Fields[bundle.RelationKeyName.String()].GetStringValue(), nil } func ResolveUniqueKeyToTypeId(mw service.ClientCommandsServer, spaceId string, uniqueKey string) (typeId string, err error) { @@ -74,7 +74,7 @@ func ResolveUniqueKeyToTypeId(mw service.ClientCommandsServer, spaceId string, u Value: pbtypes.String(uniqueKey), }, }, - Keys: []string{string(bundle.RelationKeyId)}, + Keys: []string{bundle.RelationKeyId.String()}, }) if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { @@ -85,5 +85,5 @@ func ResolveUniqueKeyToTypeId(mw service.ClientCommandsServer, spaceId string, u return "", ErrorTypeNotFound } - return resp.Records[0].Fields[string(bundle.RelationKeyId)].GetStringValue(), nil + return resp.Records[0].Fields[bundle.RelationKeyId.String()].GetStringValue(), nil } From b40b2817e04c7e20bcf65cadc5b16c791025d7f6 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Wed, 15 Jan 2025 21:34:54 +0100 Subject: [PATCH 167/279] GO-4848: Add app_name param to display_code endpoint --- core/api/docs/docs.go | 9 +++++++++ core/api/docs/swagger.json | 9 +++++++++ core/api/docs/swagger.yaml | 6 ++++++ core/api/services/auth/handler.go | 9 ++++++--- 4 files changed, 30 insertions(+), 3 deletions(-) diff --git a/core/api/docs/docs.go b/core/api/docs/docs.go index 8d08db8c5..496e9f7a4 100644 --- a/core/api/docs/docs.go +++ b/core/api/docs/docs.go @@ -36,6 +36,15 @@ const docTemplate = `{ "auth" ], "summary": "Open a modal window with a code in Anytype Desktop app", + "parameters": [ + { + "type": "string", + "description": "The name of the app that requests the code", + "name": "app_name", + "in": "query", + "required": true + } + ], "responses": { "200": { "description": "Challenge ID", diff --git a/core/api/docs/swagger.json b/core/api/docs/swagger.json index 8b02fed75..27e05018d 100644 --- a/core/api/docs/swagger.json +++ b/core/api/docs/swagger.json @@ -30,6 +30,15 @@ "auth" ], "summary": "Open a modal window with a code in Anytype Desktop app", + "parameters": [ + { + "type": "string", + "description": "The name of the app that requests the code", + "name": "app_name", + "in": "query", + "required": true + } + ], "responses": { "200": { "description": "Challenge ID", diff --git a/core/api/docs/swagger.yaml b/core/api/docs/swagger.yaml index 34576636a..413593b1e 100644 --- a/core/api/docs/swagger.yaml +++ b/core/api/docs/swagger.yaml @@ -338,6 +338,12 @@ paths: post: consumes: - application/json + parameters: + - description: The name of the app that requests the code + in: query + name: app_name + required: true + type: string produces: - application/json responses: diff --git a/core/api/services/auth/handler.go b/core/api/services/auth/handler.go index 8193505f7..894626959 100644 --- a/core/api/services/auth/handler.go +++ b/core/api/services/auth/handler.go @@ -14,12 +14,15 @@ import ( // @Tags auth // @Accept json // @Produce json -// @Success 200 {object} DisplayCodeResponse "Challenge ID" -// @Failure 502 {object} util.ServerError "Internal server error" +// @Param app_name query string true "The name of the app that requests the code" +// @Success 200 {object} DisplayCodeResponse "Challenge ID" +// @Failure 502 {object} util.ServerError "Internal server error" // @Router /auth/display_code [post] func DisplayCodeHandler(s *AuthService) gin.HandlerFunc { return func(c *gin.Context) { - challengeId, err := s.GenerateNewChallenge(c.Request.Context(), "api-test") + appName := c.Query("app_name") + + challengeId, err := s.GenerateNewChallenge(c.Request.Context(), appName) code := util.MapErrorCode(err, util.ErrToCode(ErrFailedGenerateChallenge, http.StatusInternalServerError)) if code != http.StatusOK { From aafe234a0f0f85e2775897a803276bee3f3c4626 Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Wed, 15 Jan 2025 22:23:43 +0100 Subject: [PATCH 168/279] GO-4146 Update any-sync --- go.mod | 2 +- go.sum | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index 16a504048..d49e4f894 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( github.com/VividCortex/ewma v1.2.0 github.com/adrium/goheif v0.0.0-20230113233934-ca402e77a786 github.com/anyproto/any-store v0.1.3 - github.com/anyproto/any-sync v0.6.0-alpha.4.0.20250115150621-aed567ed2985 + github.com/anyproto/any-sync v0.6.0-alpha.4.0.20250115211801-53815df4b601 github.com/anyproto/go-chash v0.1.0 github.com/anyproto/go-naturaldate/v2 v2.0.2-0.20230524105841-9829cfd13438 github.com/anyproto/go-slip10 v1.0.0 diff --git a/go.sum b/go.sum index 062026108..60a0eff3f 100644 --- a/go.sum +++ b/go.sum @@ -78,10 +78,8 @@ github.com/andybalholm/cascadia v1.3.2 h1:3Xi6Dw5lHF15JtdcmAHD3i1+T8plmv7BQ/nsVi github.com/andybalholm/cascadia v1.3.2/go.mod h1:7gtRlve5FxPPgIgX36uWBX58OdBsSS6lUvCFb+h7KvU= github.com/anyproto/any-store v0.1.3 h1:onWLP8tuWiUvYOyV3DoRODscTxAiGEjwQPm+NMxeq3M= github.com/anyproto/any-store v0.1.3/go.mod h1:6/0OUKgSMWF/vYGoGYzQOl2CII5OdiuXbQlGDXYcNYc= -github.com/anyproto/any-sync v0.6.0-alpha.4.0.20250113102657-9e965782cca3 h1:gcUHUO05MMxhnQxjLMqycdkhYbCZwnJ9PNeWITQ8syw= -github.com/anyproto/any-sync v0.6.0-alpha.4.0.20250113102657-9e965782cca3/go.mod h1:91ismOJy65b0sODYdZ0jAjKQouppbz8ans/gn+ytL90= -github.com/anyproto/any-sync v0.6.0-alpha.4.0.20250115150621-aed567ed2985 h1:H45y0Ji7vqp6mZxR4VDD9hdIBnGuRopJ7RTOJA7bWjA= -github.com/anyproto/any-sync v0.6.0-alpha.4.0.20250115150621-aed567ed2985/go.mod h1:91ismOJy65b0sODYdZ0jAjKQouppbz8ans/gn+ytL90= +github.com/anyproto/any-sync v0.6.0-alpha.4.0.20250115211801-53815df4b601 h1:NMR70cY0wANM511YeSE/GseWNoyWuLAJpDSQ5kEXFdE= +github.com/anyproto/any-sync v0.6.0-alpha.4.0.20250115211801-53815df4b601/go.mod h1:91ismOJy65b0sODYdZ0jAjKQouppbz8ans/gn+ytL90= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580 h1:Ba80IlCCxkZ9H1GF+7vFu/TSpPvbpDCxXJ5ogc4euYc= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580/go.mod h1:T/uWAYxrXdaXw64ihI++9RMbKTCpKd/yE9+saARew7k= github.com/anyproto/go-chash v0.1.0 h1:I9meTPjXFRfXZHRJzjOHC/XF7Q5vzysKkiT/grsogXY= From e460a420284353db6071bf80d7cbb774c3bb0f71 Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Thu, 16 Jan 2025 00:47:44 +0100 Subject: [PATCH 169/279] GO-4146 Update any-sync --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index d49e4f894..902c19fd7 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( github.com/VividCortex/ewma v1.2.0 github.com/adrium/goheif v0.0.0-20230113233934-ca402e77a786 github.com/anyproto/any-store v0.1.3 - github.com/anyproto/any-sync v0.6.0-alpha.4.0.20250115211801-53815df4b601 + github.com/anyproto/any-sync v0.6.0-alpha.4.0.20250115234555-3a6c0c1cae63 github.com/anyproto/go-chash v0.1.0 github.com/anyproto/go-naturaldate/v2 v2.0.2-0.20230524105841-9829cfd13438 github.com/anyproto/go-slip10 v1.0.0 diff --git a/go.sum b/go.sum index 60a0eff3f..f485c751b 100644 --- a/go.sum +++ b/go.sum @@ -78,8 +78,8 @@ github.com/andybalholm/cascadia v1.3.2 h1:3Xi6Dw5lHF15JtdcmAHD3i1+T8plmv7BQ/nsVi github.com/andybalholm/cascadia v1.3.2/go.mod h1:7gtRlve5FxPPgIgX36uWBX58OdBsSS6lUvCFb+h7KvU= github.com/anyproto/any-store v0.1.3 h1:onWLP8tuWiUvYOyV3DoRODscTxAiGEjwQPm+NMxeq3M= github.com/anyproto/any-store v0.1.3/go.mod h1:6/0OUKgSMWF/vYGoGYzQOl2CII5OdiuXbQlGDXYcNYc= -github.com/anyproto/any-sync v0.6.0-alpha.4.0.20250115211801-53815df4b601 h1:NMR70cY0wANM511YeSE/GseWNoyWuLAJpDSQ5kEXFdE= -github.com/anyproto/any-sync v0.6.0-alpha.4.0.20250115211801-53815df4b601/go.mod h1:91ismOJy65b0sODYdZ0jAjKQouppbz8ans/gn+ytL90= +github.com/anyproto/any-sync v0.6.0-alpha.4.0.20250115234555-3a6c0c1cae63 h1:tXTfEzI7DHexYatBkHICnfGSmSfVI+iH8YaMU6c5xvk= +github.com/anyproto/any-sync v0.6.0-alpha.4.0.20250115234555-3a6c0c1cae63/go.mod h1:91ismOJy65b0sODYdZ0jAjKQouppbz8ans/gn+ytL90= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580 h1:Ba80IlCCxkZ9H1GF+7vFu/TSpPvbpDCxXJ5ogc4euYc= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580/go.mod h1:T/uWAYxrXdaXw64ihI++9RMbKTCpKd/yE9+saARew7k= github.com/anyproto/go-chash v0.1.0 h1:I9meTPjXFRfXZHRJzjOHC/XF7Q5vzysKkiT/grsogXY= From d6d3450548d3405158d47c4b53b5b220fb0bbbfb Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Thu, 16 Jan 2025 00:50:39 +0100 Subject: [PATCH 170/279] GO-4459: Fix bugs --- cmd/grpcserver/grpc.go | 4 +--- core/api/server/middleware.go | 1 - core/api/services/object/service.go | 32 ++++++++++++++--------------- core/api/services/search/service.go | 6 +++--- core/api/services/space/service.go | 6 ------ core/api/util/util.go | 1 + 6 files changed, 20 insertions(+), 30 deletions(-) diff --git a/cmd/grpcserver/grpc.go b/cmd/grpcserver/grpc.go index d9e421a98..827fd3c39 100644 --- a/cmd/grpcserver/grpc.go +++ b/cmd/grpcserver/grpc.go @@ -226,6 +226,7 @@ func main() { }() startReportMemory(mw) + api.SetMiddlewareParams(mw) shutdown := func() { server.Stop() @@ -247,9 +248,6 @@ func main() { } } - // pass mw to api service - api.SetMiddlewareParams(mw) - for { sig := <-signalChan if shouldSaveStack(sig) { diff --git a/core/api/server/middleware.go b/core/api/server/middleware.go index 6f0273545..bc8cb7312 100644 --- a/core/api/server/middleware.go +++ b/core/api/server/middleware.go @@ -48,7 +48,6 @@ func (s *Server) ensureAuthenticated() gin.HandlerFunc { // ensureAccountInfo is a middleware that ensures the account info is available in the services. func (s *Server) ensureAccountInfo(a *app.App) gin.HandlerFunc { return func(c *gin.Context) { - // TODO: consider not fetching account info on every request; currently used to avoid inconsistencies on logout/login if a == nil { c.AbortWithStatusJSON(http.StatusForbidden, gin.H{"error": "failed to get app instance"}) return diff --git a/core/api/services/object/service.go b/core/api/services/object/service.go index a0214f834..ecffe4dc5 100644 --- a/core/api/services/object/service.go +++ b/core/api/services/object/service.go @@ -412,31 +412,29 @@ func (s *ObjectService) GetDetails(resp *pb.RpcObjectShowResponse) []Detail { return []Detail{ { - Id: "lastModifiedDate", + Id: "last_modified_date", Details: map[string]interface{}{ - "lastModifiedDate": PosixToISO8601(resp.ObjectView.Details[0].Details.Fields[bundle.RelationKeyLastModifiedDate.String()].GetNumberValue()), + "last_modified_date": PosixToISO8601(resp.ObjectView.Details[0].Details.Fields[bundle.RelationKeyLastModifiedDate.String()].GetNumberValue()), }, }, { - Id: "createdDate", + Id: "last_modified_by", Details: map[string]interface{}{ - "createdDate": PosixToISO8601(resp.ObjectView.Details[0].Details.Fields[bundle.RelationKeyCreatedDate.String()].GetNumberValue()), - }, - }, - { - Id: "createdBy", - Details: map[string]interface{}{ - "id": creatorId, - "details": s.spaceService.GetParticipantDetails(s.mw, s.AccountInfo, resp.ObjectView.Details[0].Details.Fields[bundle.RelationKeySpaceId.String()].GetStringValue(), creatorId), - }, - }, - { - Id: "lastModifiedBy", - Details: map[string]interface{}{ - "id": lastModifiedById, "details": s.spaceService.GetParticipantDetails(s.mw, s.AccountInfo, resp.ObjectView.Details[0].Details.Fields[bundle.RelationKeySpaceId.String()].GetStringValue(), lastModifiedById), }, }, + { + Id: "created_date", + Details: map[string]interface{}{ + "created_date": PosixToISO8601(resp.ObjectView.Details[0].Details.Fields[bundle.RelationKeyCreatedDate.String()].GetNumberValue()), + }, + }, + { + Id: "created_by", + Details: map[string]interface{}{ + "details": s.spaceService.GetParticipantDetails(s.mw, s.AccountInfo, resp.ObjectView.Details[0].Details.Fields[bundle.RelationKeySpaceId.String()].GetStringValue(), creatorId), + }, + }, { Id: "tags", Details: map[string]interface{}{ diff --git a/core/api/services/search/service.go b/core/api/services/search/service.go index 41db34632..8186758f6 100644 --- a/core/api/services/search/service.go +++ b/core/api/services/search/service.go @@ -88,10 +88,10 @@ func (s *SearchService) Search(ctx context.Context, searchQuery string, objectTy return nil, 0, false, ErrNoObjectsFound } - // sort after ISO 8601 lastModifiedDate to achieve descending sort order across all spaces + // sort after ISO 8601 last_modified_date to achieve descending sort order across all spaces sort.Slice(results, func(i, j int) bool { - dateStrI := results[i].Details[0].Details["lastModifiedDate"].(string) - dateStrJ := results[j].Details[0].Details["lastModifiedDate"].(string) + dateStrI := results[i].Details[0].Details["last_modified_date"].(string) + dateStrJ := results[j].Details[0].Details["last_modified_date"].(string) return dateStrI > dateStrJ }) diff --git a/core/api/services/space/service.go b/core/api/services/space/service.go index fef990bdd..f67cc2df2 100644 --- a/core/api/services/space/service.go +++ b/core/api/services/space/service.go @@ -60,12 +60,6 @@ func (s *SpaceService) ListSpaces(ctx context.Context, offset int, limit int) (s Condition: model.BlockContentDataviewFilter_Equal, Value: pbtypes.Int64(int64(model.SpaceStatus_Ok)), }, - { - Operator: model.BlockContentDataviewFilter_No, - RelationKey: bundle.RelationKeySpaceRemoteStatus.String(), - Condition: model.BlockContentDataviewFilter_Equal, - Value: pbtypes.Int64(int64(model.SpaceStatus_Ok)), - }, }, Sorts: []*model.BlockContentDataviewSort{ { diff --git a/core/api/util/util.go b/core/api/util/util.go index 5f0cd0742..6c5a74eb9 100644 --- a/core/api/util/util.go +++ b/core/api/util/util.go @@ -44,6 +44,7 @@ func ResolveTypeToName(mw service.ClientCommandsServer, spaceId string, typeId s SpaceId: spaceId, Filters: []*model.BlockContentDataviewFilter{ { + Operator: model.BlockContentDataviewFilter_No, RelationKey: relKey, Condition: model.BlockContentDataviewFilter_Equal, Value: pbtypes.String(typeId), From 2eaad095338e5663658177ad5c3b91c9b816a4c4 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Thu, 16 Jan 2025 00:51:13 +0100 Subject: [PATCH 171/279] GO-4459: Revive tests --- core/api/services/object/service_test.go | 220 ++++++++++++++++------- core/api/services/search/service_test.go | 185 ++++++++++++++++--- core/api/services/space/service_test.go | 51 +++--- 3 files changed, 339 insertions(+), 117 deletions(-) diff --git a/core/api/services/object/service_test.go b/core/api/services/object/service_test.go index 4b3d42e5b..facee6692 100644 --- a/core/api/services/object/service_test.go +++ b/core/api/services/object/service_test.go @@ -8,6 +8,7 @@ import ( "github.com/stretchr/testify/mock" "github.com/stretchr/testify/require" + "github.com/anyproto/anytype-heart/core/api/services/space" "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/pb/service/mock_service" "github.com/anyproto/anytype-heart/pkg/lib/bundle" @@ -32,7 +33,9 @@ type fixture struct { func newFixture(t *testing.T) *fixture { mw := mock_service.NewMockClientCommandsServer(t) - objectService := NewService(mw) + + spaceService := space.NewService(mw) + objectService := NewService(mw, spaceService) objectService.AccountInfo = &model.AccountInfo{ TechSpaceId: mockedTechSpaceId, GatewayUrl: gatewayUrl, @@ -79,16 +82,16 @@ func TestObjectService_ListObjects(t *testing.T) { Offset: 0, Limit: 0, ObjectTypeFilter: []string{}, - Keys: []string{"id", "name"}, + Keys: []string{bundle.RelationKeyId.String(), bundle.RelationKeyName.String()}, }).Return(&pb.RpcObjectSearchResponse{ Records: []*types.Struct{ { Fields: map[string]*types.Value{ - "id": pbtypes.String(mockedObjectId), - "name": pbtypes.String("My Object"), - "type": pbtypes.String("ot-page"), - "layout": pbtypes.Float64(float64(model.ObjectType_basic)), - "iconEmoji": pbtypes.String("📄"), + bundle.RelationKeyId.String(): pbtypes.String(mockedObjectId), + bundle.RelationKeyName.String(): pbtypes.String("My Object"), + bundle.RelationKeyType.String(): pbtypes.String("ot-page"), + bundle.RelationKeyLayout.String(): pbtypes.Float64(float64(model.ObjectType_basic)), + bundle.RelationKeyIconEmoji.String(): pbtypes.String("📄"), }, }, }, @@ -106,12 +109,13 @@ func TestObjectService_ListObjects(t *testing.T) { { Details: &types.Struct{ Fields: map[string]*types.Value{ - "id": pbtypes.String(mockedObjectId), - "name": pbtypes.String("My Object"), - "type": pbtypes.String("ot-page"), - "iconEmoji": pbtypes.String("📄"), - "lastModifiedDate": pbtypes.Float64(999999), - "createdDate": pbtypes.Float64(888888), + bundle.RelationKeyId.String(): pbtypes.String(mockedObjectId), + bundle.RelationKeyName.String(): pbtypes.String("My Object"), + bundle.RelationKeyType.String(): pbtypes.String("ot-page"), + bundle.RelationKeyIconEmoji.String(): pbtypes.String("📄"), + bundle.RelationKeyLastModifiedDate.String(): pbtypes.Float64(999999), + bundle.RelationKeyCreatedDate.String(): pbtypes.Float64(888888), + bundle.RelationKeySpaceId.String(): pbtypes.String(mockedSpaceId), }, }, }, @@ -125,23 +129,50 @@ func TestObjectService_ListObjects(t *testing.T) { SpaceId: mockedSpaceId, Filters: []*model.BlockContentDataviewFilter{ { - RelationKey: "uniqueKey", + RelationKey: bundle.RelationKeyUniqueKey.String(), Condition: model.BlockContentDataviewFilter_Equal, Value: pbtypes.String("ot-page"), }, }, - Keys: []string{"name"}, + Keys: []string{bundle.RelationKeyName.String()}, }).Return(&pb.RpcObjectSearchResponse{ Records: []*types.Struct{ { Fields: map[string]*types.Value{ - "name": pbtypes.String("Page"), + bundle.RelationKeyName.String(): pbtypes.String("Page"), }, }, }, Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, }).Once() + // Mock participant details + fx.mwMock.On("ObjectSearch", mock.Anything, &pb.RpcObjectSearchRequest{ + SpaceId: mockedSpaceId, + Filters: []*model.BlockContentDataviewFilter{ + { + Operator: model.BlockContentDataviewFilter_No, + RelationKey: bundle.RelationKeyId.String(), + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.String(""), + }, + }, + Keys: []string{ + bundle.RelationKeyId.String(), + bundle.RelationKeyName.String(), + bundle.RelationKeyIconEmoji.String(), + bundle.RelationKeyIconImage.String(), + bundle.RelationKeyIdentity.String(), + bundle.RelationKeyGlobalName.String(), + bundle.RelationKeyParticipantPermissions.String(), + }, + }).Return(&pb.RpcObjectSearchResponse{ + Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, + Records: []*types.Struct{ + {}, + }, + }).Twice() + // when objects, total, hasMore, err := fx.ListObjects(ctx, mockedSpaceId, offset, limit) @@ -152,13 +183,17 @@ func TestObjectService_ListObjects(t *testing.T) { require.Equal(t, "My Object", objects[0].Name) require.Equal(t, "Page", objects[0].ObjectType) require.Equal(t, "📄", objects[0].Icon) - require.Equal(t, 3, len(objects[0].Details)) + require.Equal(t, 5, len(objects[0].Details)) for _, detail := range objects[0].Details { - if detail.Id == "createdDate" { - require.Equal(t, float64(888888), detail.Details["createdDate"]) - } else if detail.Id == "lastModifiedDate" { - require.Equal(t, float64(999999), detail.Details["lastModifiedDate"]) + if detail.Id == "created_date" { + require.Equal(t, "1970-01-11T06:54:48Z", detail.Details["created_date"]) + } else if detail.Id == "created_by" { + require.Empty(t, detail.Details["created_by"]) + } else if detail.Id == "last_modified_date" { + require.Equal(t, "1970-01-12T13:46:39Z", detail.Details["last_modified_date"]) + } else if detail.Id == "last_modified_by" { + require.Empty(t, detail.Details["last_modified_by"]) } else if detail.Id == "tags" { require.Empty(t, detail.Details["tags"]) } else { @@ -210,12 +245,13 @@ func TestObjectService_GetObject(t *testing.T) { { Details: &types.Struct{ Fields: map[string]*types.Value{ - "id": pbtypes.String(mockedObjectId), - "name": pbtypes.String("Found Object"), - "type": pbtypes.String("ot-page"), - "iconEmoji": pbtypes.String("ðŸ”"), - "lastModifiedDate": pbtypes.Float64(999999), - "createdDate": pbtypes.Float64(888888), + bundle.RelationKeyId.String(): pbtypes.String(mockedObjectId), + bundle.RelationKeyName.String(): pbtypes.String("Found Object"), + bundle.RelationKeyType.String(): pbtypes.String("ot-page"), + bundle.RelationKeyIconEmoji.String(): pbtypes.String("ðŸ”"), + bundle.RelationKeyLastModifiedDate.String(): pbtypes.Float64(999999), + bundle.RelationKeyCreatedDate.String(): pbtypes.Float64(888888), + bundle.RelationKeySpaceId.String(): pbtypes.String(mockedSpaceId), }, }, }, @@ -228,23 +264,50 @@ func TestObjectService_GetObject(t *testing.T) { SpaceId: mockedSpaceId, Filters: []*model.BlockContentDataviewFilter{ { - RelationKey: "uniqueKey", + RelationKey: bundle.RelationKeyUniqueKey.String(), Condition: model.BlockContentDataviewFilter_Equal, Value: pbtypes.String("ot-page"), }, }, - Keys: []string{"name"}, + Keys: []string{bundle.RelationKeyName.String()}, }).Return(&pb.RpcObjectSearchResponse{ Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, Records: []*types.Struct{ { Fields: map[string]*types.Value{ - "name": pbtypes.String("Page"), + bundle.RelationKeyName.String(): pbtypes.String("Page"), }, }, }, }, nil).Once() + // Mock participant details + fx.mwMock.On("ObjectSearch", mock.Anything, &pb.RpcObjectSearchRequest{ + SpaceId: mockedSpaceId, + Filters: []*model.BlockContentDataviewFilter{ + { + Operator: model.BlockContentDataviewFilter_No, + RelationKey: bundle.RelationKeyId.String(), + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.String(""), + }, + }, + Keys: []string{ + bundle.RelationKeyId.String(), + bundle.RelationKeyName.String(), + bundle.RelationKeyIconEmoji.String(), + bundle.RelationKeyIconImage.String(), + bundle.RelationKeyIdentity.String(), + bundle.RelationKeyGlobalName.String(), + bundle.RelationKeyParticipantPermissions.String(), + }, + }).Return(&pb.RpcObjectSearchResponse{ + Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, + Records: []*types.Struct{ + {}, + }, + }).Twice() + // when object, err := fx.GetObject(ctx, mockedSpaceId, mockedObjectId) @@ -254,13 +317,17 @@ func TestObjectService_GetObject(t *testing.T) { require.Equal(t, "Found Object", object.Name) require.Equal(t, "Page", object.ObjectType) require.Equal(t, "ðŸ”", object.Icon) - require.Equal(t, 3, len(object.Details)) + require.Equal(t, 5, len(object.Details)) for _, detail := range object.Details { - if detail.Id == "createdDate" { - require.Equal(t, float64(888888), detail.Details["createdDate"]) - } else if detail.Id == "lastModifiedDate" { - require.Equal(t, float64(999999), detail.Details["lastModifiedDate"]) + if detail.Id == "created_date" { + require.Equal(t, "1970-01-11T06:54:48Z", detail.Details["created_date"]) + } else if detail.Id == "created_by" { + require.Empty(t, detail.Details["created_by"]) + } else if detail.Id == "last_modified_date" { + require.Equal(t, "1970-01-12T13:46:39Z", detail.Details["last_modified_date"]) + } else if detail.Id == "last_modified_by" { + require.Empty(t, detail.Details["last_modified_by"]) } else if detail.Id == "tags" { require.Empty(t, detail.Details["tags"]) } else { @@ -297,22 +364,25 @@ func TestObjectService_CreateObject(t *testing.T) { fx.mwMock.On("ObjectCreate", mock.Anything, &pb.RpcObjectCreateRequest{ Details: &types.Struct{ Fields: map[string]*types.Value{ - "name": pbtypes.String("New Object"), - "iconEmoji": pbtypes.String("🆕"), + bundle.RelationKeyName.String(): pbtypes.String("New Object"), + bundle.RelationKeyIconEmoji.String(): pbtypes.String("🆕"), + bundle.RelationKeyDescription.String(): pbtypes.String(""), + bundle.RelationKeySource.String(): pbtypes.String(""), + bundle.RelationKeyOrigin.String(): pbtypes.Int64(int64(model.ObjectOrigin_api)), }, }, TemplateId: "", SpaceId: mockedSpaceId, - ObjectTypeUniqueKey: "", + ObjectTypeUniqueKey: "ot-page", WithChat: false, }).Return(&pb.RpcObjectCreateResponse{ ObjectId: mockedNewObjectId, Details: &types.Struct{ Fields: map[string]*types.Value{ - "id": pbtypes.String(mockedNewObjectId), - "name": pbtypes.String("New Object"), - "iconEmoji": pbtypes.String("🆕"), - "spaceId": pbtypes.String(mockedSpaceId), + bundle.RelationKeyId.String(): pbtypes.String(mockedNewObjectId), + bundle.RelationKeyName.String(): pbtypes.String("New Object"), + bundle.RelationKeyIconEmoji.String(): pbtypes.String("🆕"), + bundle.RelationKeySpaceId.String(): pbtypes.String(mockedSpaceId), }, }, Error: &pb.RpcObjectCreateResponseError{Code: pb.RpcObjectCreateResponseError_NULL}, @@ -329,11 +399,12 @@ func TestObjectService_CreateObject(t *testing.T) { { Details: &types.Struct{ Fields: map[string]*types.Value{ - "id": pbtypes.String(mockedNewObjectId), - "name": pbtypes.String("New Object"), - "type": pbtypes.String("ot-page"), - "iconEmoji": pbtypes.String("🆕"), - "spaceId": pbtypes.String(mockedSpaceId), + bundle.RelationKeyId.String(): pbtypes.String(mockedNewObjectId), + bundle.RelationKeyName.String(): pbtypes.String("New Object"), + bundle.RelationKeyLayout.String(): pbtypes.Float64(float64(model.ObjectType_basic)), + bundle.RelationKeyType.String(): pbtypes.String("ot-page"), + bundle.RelationKeyIconEmoji.String(): pbtypes.String("🆕"), + bundle.RelationKeySpaceId.String(): pbtypes.String(mockedSpaceId), }, }, }, @@ -347,30 +418,57 @@ func TestObjectService_CreateObject(t *testing.T) { SpaceId: mockedSpaceId, Filters: []*model.BlockContentDataviewFilter{ { - RelationKey: "uniqueKey", + RelationKey: bundle.RelationKeyUniqueKey.String(), Condition: model.BlockContentDataviewFilter_Equal, Value: pbtypes.String("ot-page"), }, }, - Keys: []string{"name"}, + Keys: []string{bundle.RelationKeyName.String()}, }).Return(&pb.RpcObjectSearchResponse{ Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, Records: []*types.Struct{ { Fields: map[string]*types.Value{ - "name": pbtypes.String("Page"), + bundle.RelationKeyName.String(): pbtypes.String("Page"), }, }, }, }).Once() + // Mock participant details + fx.mwMock.On("ObjectSearch", mock.Anything, &pb.RpcObjectSearchRequest{ + SpaceId: mockedSpaceId, + Filters: []*model.BlockContentDataviewFilter{ + { + Operator: model.BlockContentDataviewFilter_No, + RelationKey: bundle.RelationKeyId.String(), + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.String(""), + }, + }, + Keys: []string{ + bundle.RelationKeyId.String(), + bundle.RelationKeyName.String(), + bundle.RelationKeyIconEmoji.String(), + bundle.RelationKeyIconImage.String(), + bundle.RelationKeyIdentity.String(), + bundle.RelationKeyGlobalName.String(), + bundle.RelationKeyParticipantPermissions.String(), + }, + }).Return(&pb.RpcObjectSearchResponse{ + Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, + Records: []*types.Struct{ + {}, + }, + }).Twice() + // when object, err := fx.CreateObject(ctx, mockedSpaceId, CreateObjectRequest{ Name: "New Object", Icon: "🆕", // TODO: use actual values TemplateId: "", - ObjectTypeUniqueKey: "", + ObjectTypeUniqueKey: "ot-page", WithChat: false, }) @@ -416,10 +514,10 @@ func TestObjectService_ListTypes(t *testing.T) { Records: []*types.Struct{ { Fields: map[string]*types.Value{ - "id": pbtypes.String("type-1"), - "name": pbtypes.String("Type One"), - "uniqueKey": pbtypes.String("type-one-key"), - "iconEmoji": pbtypes.String("🗂ï¸"), + bundle.RelationKeyId.String(): pbtypes.String("type-1"), + bundle.RelationKeyName.String(): pbtypes.String("Type One"), + bundle.RelationKeyUniqueKey.String(): pbtypes.String("type-one-key"), + bundle.RelationKeyIconEmoji.String(): pbtypes.String("🗂ï¸"), }, }, }, @@ -473,8 +571,8 @@ func TestObjectService_ListTemplates(t *testing.T) { Records: []*types.Struct{ { Fields: map[string]*types.Value{ - "id": pbtypes.String("template-type-id"), - "uniqueKey": pbtypes.String("ot-template"), + bundle.RelationKeyId.String(): pbtypes.String("template-type-id"), + bundle.RelationKeyUniqueKey.String(): pbtypes.String("ot-template"), }, }, }, @@ -486,8 +584,8 @@ func TestObjectService_ListTemplates(t *testing.T) { Records: []*types.Struct{ { Fields: map[string]*types.Value{ - "id": pbtypes.String("template-1"), - "targetObjectType": pbtypes.String("target-type-id"), + bundle.RelationKeyId.String(): pbtypes.String("template-1"), + bundle.RelationKeyTargetObjectType.String(): pbtypes.String("target-type-id"), }, }, }, @@ -502,8 +600,8 @@ func TestObjectService_ListTemplates(t *testing.T) { { Details: &types.Struct{ Fields: map[string]*types.Value{ - "name": pbtypes.String("Template Name"), - "iconEmoji": pbtypes.String("ðŸ“"), + bundle.RelationKeyName.String(): pbtypes.String("Template Name"), + bundle.RelationKeyIconEmoji.String(): pbtypes.String("ðŸ“"), }, }, }, diff --git a/core/api/services/search/service_test.go b/core/api/services/search/service_test.go index a54cc68f5..6de749d3e 100644 --- a/core/api/services/search/service_test.go +++ b/core/api/services/search/service_test.go @@ -34,7 +34,7 @@ func newFixture(t *testing.T) *fixture { spaceService := space.NewService(mw) spaceService.AccountInfo = &model.AccountInfo{TechSpaceId: techSpaceId} - objectService := object.NewService(mw) + objectService := object.NewService(mw, spaceService) objectService.AccountInfo = &model.AccountInfo{TechSpaceId: techSpaceId} searchService := NewService(mw, spaceService, objectService) searchService.AccountInfo = &model.AccountInfo{ @@ -59,35 +59,32 @@ func TestSearchService_Search(t *testing.T) { SpaceId: techSpaceId, Filters: []*model.BlockContentDataviewFilter{ { + Operator: model.BlockContentDataviewFilter_No, RelationKey: bundle.RelationKeyLayout.String(), Condition: model.BlockContentDataviewFilter_Equal, Value: pbtypes.Int64(int64(model.ObjectType_spaceView)), }, { + Operator: model.BlockContentDataviewFilter_No, RelationKey: bundle.RelationKeySpaceLocalStatus.String(), Condition: model.BlockContentDataviewFilter_Equal, Value: pbtypes.Int64(int64(model.SpaceStatus_Ok)), }, - { - RelationKey: bundle.RelationKeySpaceRemoteStatus.String(), - Condition: model.BlockContentDataviewFilter_Equal, - Value: pbtypes.Int64(int64(model.SpaceStatus_Ok)), - }, }, Sorts: []*model.BlockContentDataviewSort{ { - RelationKey: "spaceOrder", + RelationKey: bundle.RelationKeySpaceOrder.String(), Type: model.BlockContentDataviewSort_Asc, NoCollate: true, EmptyPlacement: model.BlockContentDataviewSort_End, }, }, - Keys: []string{"targetSpaceId", "name", "iconEmoji", "iconImage"}, + Keys: []string{bundle.RelationKeyTargetSpaceId.String(), bundle.RelationKeyName.String(), bundle.RelationKeyIconEmoji.String(), bundle.RelationKeyIconImage.String()}, }).Return(&pb.RpcObjectSearchResponse{ Records: []*types.Struct{ { Fields: map[string]*types.Value{ - "targetSpaceId": pbtypes.String("space-1"), + bundle.RelationKeyTargetSpaceId.String(): pbtypes.String("space-1"), }, }, }, @@ -106,17 +103,73 @@ func TestSearchService_Search(t *testing.T) { }).Once() // Mock objects in space-1 - fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything).Return(&pb.RpcObjectSearchResponse{ + fx.mwMock.On("ObjectSearch", mock.Anything, &pb.RpcObjectSearchRequest{ + SpaceId: "space-1", + Filters: []*model.BlockContentDataviewFilter{ + { + Operator: model.BlockContentDataviewFilter_And, + NestedFilters: []*model.BlockContentDataviewFilter{ + { + Operator: model.BlockContentDataviewFilter_No, + RelationKey: bundle.RelationKeyLayout.String(), + Condition: model.BlockContentDataviewFilter_In, + Value: pbtypes.IntList([]int{ + int(model.ObjectType_basic), + int(model.ObjectType_profile), + int(model.ObjectType_todo), + int(model.ObjectType_note), + int(model.ObjectType_bookmark), + int(model.ObjectType_set), + int(model.ObjectType_collection), + int(model.ObjectType_participant), + }...), + }, + { + Operator: model.BlockContentDataviewFilter_No, + RelationKey: bundle.RelationKeyIsHidden.String(), + Condition: model.BlockContentDataviewFilter_NotEqual, + Value: pbtypes.Bool(true), + }, + { + Operator: model.BlockContentDataviewFilter_Or, + NestedFilters: []*model.BlockContentDataviewFilter{ + { + Operator: model.BlockContentDataviewFilter_No, + RelationKey: bundle.RelationKeyName.String(), + Condition: model.BlockContentDataviewFilter_Like, + Value: pbtypes.String("search-term"), + }, + { + Operator: model.BlockContentDataviewFilter_No, + RelationKey: bundle.RelationKeySnippet.String(), + Condition: model.BlockContentDataviewFilter_Like, + Value: pbtypes.String("search-term"), + }, + }, + }, + }, + }, + }, + Sorts: []*model.BlockContentDataviewSort{{ + RelationKey: bundle.RelationKeyLastModifiedDate.String(), + Type: model.BlockContentDataviewSort_Desc, + Format: model.RelationFormat_date, + IncludeTime: true, + EmptyPlacement: model.BlockContentDataviewSort_NotSpecified, + }}, + Keys: []string{bundle.RelationKeyId.String(), bundle.RelationKeyName.String()}, + Limit: int32(limit), + }).Return(&pb.RpcObjectSearchResponse{ Records: []*types.Struct{ { Fields: map[string]*types.Value{ - "id": pbtypes.String("obj-global-1"), - "name": pbtypes.String("Global Object"), + bundle.RelationKeyId.String(): pbtypes.String("obj-global-1"), + bundle.RelationKeyName.String(): pbtypes.String("Global Object"), }, }, }, Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, - }).Twice() + }).Once() // Mock object show for object blocks and details fx.mwMock.On("ObjectShow", mock.Anything, &pb.RpcObjectShowRequest{ @@ -163,14 +216,25 @@ func TestSearchService_Search(t *testing.T) { Id: "root-123", Details: &types.Struct{ Fields: map[string]*types.Value{ - "id": pbtypes.String("obj-global-1"), - "name": pbtypes.String("Global Object"), - "layout": pbtypes.Int64(int64(model.ObjectType_basic)), - "iconEmoji": pbtypes.String("ðŸŒ"), - "lastModifiedDate": pbtypes.Float64(999999), - "createdDate": pbtypes.Float64(888888), - "spaceId": pbtypes.String("space-1"), - "tag": pbtypes.StringList([]string{"tag-1", "tag-2"}), + bundle.RelationKeyId.String(): pbtypes.String("obj-global-1"), + bundle.RelationKeyName.String(): pbtypes.String("Global Object"), + bundle.RelationKeyLayout.String(): pbtypes.Int64(int64(model.ObjectType_basic)), + bundle.RelationKeyIconEmoji.String(): pbtypes.String("ðŸŒ"), + bundle.RelationKeyLastModifiedDate.String(): pbtypes.Float64(999999), + bundle.RelationKeyLastModifiedBy.String(): pbtypes.String("participant-id"), + bundle.RelationKeyCreatedDate.String(): pbtypes.Float64(888888), + bundle.RelationKeyCreator.String(): pbtypes.String("participant-id"), + bundle.RelationKeySpaceId.String(): pbtypes.String("space-1"), + bundle.RelationKeyType.String(): pbtypes.String("type-1"), + bundle.RelationKeyTag.String(): pbtypes.StringList([]string{"tag-1", "tag-2"}), + }, + }, + }, + { + Id: "participant-id", + Details: &types.Struct{ + Fields: map[string]*types.Value{ + bundle.RelationKeyId.String(): pbtypes.String("participant-id"), }, }, }, @@ -178,8 +242,8 @@ func TestSearchService_Search(t *testing.T) { Id: "tag-1", Details: &types.Struct{ Fields: map[string]*types.Value{ - "name": pbtypes.String("Important"), - "relationOptionColor": pbtypes.String("red"), + bundle.RelationKeyName.String(): pbtypes.String("Important"), + bundle.RelationKeyRelationOptionColor.String(): pbtypes.String("red"), }, }, }, @@ -187,8 +251,8 @@ func TestSearchService_Search(t *testing.T) { Id: "tag-2", Details: &types.Struct{ Fields: map[string]*types.Value{ - "name": pbtypes.String("Optional"), - "relationOptionColor": pbtypes.String("blue"), + bundle.RelationKeyName.String(): pbtypes.String("Optional"), + bundle.RelationKeyRelationOptionColor.String(): pbtypes.String("blue"), }, }, }, @@ -197,6 +261,65 @@ func TestSearchService_Search(t *testing.T) { Error: &pb.RpcObjectShowResponseError{Code: pb.RpcObjectShowResponseError_NULL}, }, nil).Once() + // Mock type resolution + fx.mwMock.On("ObjectSearch", mock.Anything, &pb.RpcObjectSearchRequest{ + SpaceId: "space-1", + Filters: []*model.BlockContentDataviewFilter{ + { + Operator: model.BlockContentDataviewFilter_No, + RelationKey: bundle.RelationKeyId.String(), + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.String("type-1"), + }, + }, + Keys: []string{bundle.RelationKeyName.String()}, + }).Return(&pb.RpcObjectSearchResponse{ + Records: []*types.Struct{ + { + Fields: map[string]*types.Value{ + bundle.RelationKeyName.String(): pbtypes.String("object-type-name"), + }, + }, + }, + Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, + }).Once() + + // Mock participant details + fx.mwMock.On("ObjectSearch", mock.Anything, &pb.RpcObjectSearchRequest{ + SpaceId: "space-1", + Filters: []*model.BlockContentDataviewFilter{ + { + Operator: model.BlockContentDataviewFilter_No, + RelationKey: bundle.RelationKeyId.String(), + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.String("participant-id"), + }, + }, + Keys: []string{bundle.RelationKeyId.String(), + bundle.RelationKeyName.String(), + bundle.RelationKeyIconEmoji.String(), + bundle.RelationKeyIconImage.String(), + bundle.RelationKeyIdentity.String(), + bundle.RelationKeyGlobalName.String(), + bundle.RelationKeyParticipantPermissions.String(), + }, + }).Return(&pb.RpcObjectSearchResponse{ + Records: []*types.Struct{ + { + Fields: map[string]*types.Value{ + bundle.RelationKeyId.String(): pbtypes.String("participant-id"), + bundle.RelationKeyName.String(): pbtypes.String("Participant Name"), + bundle.RelationKeyIconEmoji.String(): pbtypes.String("emoji"), + bundle.RelationKeyIconImage.String(): pbtypes.String("image-url"), + bundle.RelationKeyIdentity.String(): pbtypes.String("identity"), + bundle.RelationKeyGlobalName.String(): pbtypes.String("global-name"), + bundle.RelationKeyParticipantPermissions.String(): pbtypes.Int64(int64(model.ParticipantPermissions_Reader)), + }, + }, + }, + Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, + }).Twice() + // when objects, total, hasMore, err := fx.Search(ctx, "search-term", []string{}, offset, limit) @@ -213,10 +336,14 @@ func TestSearchService_Search(t *testing.T) { // check details for _, detail := range objects[0].Details { - if detail.Id == "createdDate" { - require.Equal(t, string("1970-01-11T06:54:48Z"), detail.Details["createdDate"]) - } else if detail.Id == "lastModifiedDate" { - require.Equal(t, string("1970-01-12T13:46:39Z"), detail.Details["lastModifiedDate"]) + if detail.Id == "created_date" { + require.Equal(t, "1970-01-11T06:54:48Z", detail.Details["created_date"]) + } else if detail.Id == "last_modified_date" { + require.Equal(t, "1970-01-12T13:46:39Z", detail.Details["last_modified_date"]) + } else if detail.Id == "created_by" { + require.Equal(t, "participant-id", detail.Details["details"].(space.Member).Id) + } else if detail.Id == "last_modified_by" { + require.Equal(t, "participant-id", detail.Details["details"].(space.Member).Id) } } diff --git a/core/api/services/space/service_test.go b/core/api/services/space/service_test.go index 5d2293b96..96802831b 100644 --- a/core/api/services/space/service_test.go +++ b/core/api/services/space/service_test.go @@ -52,20 +52,17 @@ func TestSpaceService_ListSpaces(t *testing.T) { SpaceId: techSpaceId, Filters: []*model.BlockContentDataviewFilter{ { + Operator: model.BlockContentDataviewFilter_No, RelationKey: bundle.RelationKeyLayout.String(), Condition: model.BlockContentDataviewFilter_Equal, Value: pbtypes.Int64(int64(model.ObjectType_spaceView)), }, { + Operator: model.BlockContentDataviewFilter_No, RelationKey: bundle.RelationKeySpaceLocalStatus.String(), Condition: model.BlockContentDataviewFilter_Equal, Value: pbtypes.Int64(int64(model.SpaceStatus_Ok)), }, - { - RelationKey: bundle.RelationKeySpaceRemoteStatus.String(), - Condition: model.BlockContentDataviewFilter_Equal, - Value: pbtypes.Int64(int64(model.SpaceStatus_Ok)), - }, }, Sorts: []*model.BlockContentDataviewSort{ { @@ -80,18 +77,18 @@ func TestSpaceService_ListSpaces(t *testing.T) { Records: []*types.Struct{ { Fields: map[string]*types.Value{ - "name": pbtypes.String("Another Workspace"), - "targetSpaceId": pbtypes.String("another-space-id"), - "iconEmoji": pbtypes.String(""), - "iconImage": pbtypes.String(iconImage), + bundle.RelationKeyName.String(): pbtypes.String("Another Workspace"), + bundle.RelationKeyTargetSpaceId.String(): pbtypes.String("another-space-id"), + bundle.RelationKeyIconEmoji.String(): pbtypes.String(""), + bundle.RelationKeyIconImage.String(): pbtypes.String(iconImage), }, }, { Fields: map[string]*types.Value{ - "name": pbtypes.String("My Workspace"), - "targetSpaceId": pbtypes.String("my-space-id"), - "iconEmoji": pbtypes.String("🚀"), - "iconImage": pbtypes.String(""), + bundle.RelationKeyName.String(): pbtypes.String("My Workspace"), + bundle.RelationKeyTargetSpaceId.String(): pbtypes.String("my-space-id"), + bundle.RelationKeyIconEmoji.String(): pbtypes.String("🚀"), + bundle.RelationKeyIconImage.String(): pbtypes.String(""), }, }, }, @@ -164,10 +161,10 @@ func TestSpaceService_ListSpaces(t *testing.T) { Records: []*types.Struct{ { Fields: map[string]*types.Value{ - "name": pbtypes.String("My Workspace"), - "targetSpaceId": pbtypes.String("my-space-id"), - "iconEmoji": pbtypes.String("🚀"), - "iconImage": pbtypes.String(""), + bundle.RelationKeyName.String(): pbtypes.String("My Workspace"), + bundle.RelationKeyTargetSpaceId.String(): pbtypes.String("my-space-id"), + bundle.RelationKeyIconEmoji.String(): pbtypes.String("🚀"), + bundle.RelationKeyIconImage.String(): pbtypes.String(""), }, }, }, @@ -256,20 +253,20 @@ func TestSpaceService_ListMembers(t *testing.T) { Records: []*types.Struct{ { Fields: map[string]*types.Value{ - "id": pbtypes.String("member-1"), - "name": pbtypes.String("John Doe"), - "iconEmoji": pbtypes.String("👤"), - "identity": pbtypes.String("AAjEaEwPF4nkEh7AWkqEnzcQ8HziGB4ETjiTpvRCQvWnSMDZ"), - "globalName": pbtypes.String("john.any"), + bundle.RelationKeyId.String(): pbtypes.String("member-1"), + bundle.RelationKeyName.String(): pbtypes.String("John Doe"), + bundle.RelationKeyIconEmoji.String(): pbtypes.String("👤"), + bundle.RelationKeyIdentity.String(): pbtypes.String("AAjEaEwPF4nkEh7AWkqEnzcQ8HziGB4ETjiTpvRCQvWnSMDZ"), + bundle.RelationKeyGlobalName.String(): pbtypes.String("john.any"), }, }, { Fields: map[string]*types.Value{ - "id": pbtypes.String("member-2"), - "name": pbtypes.String("Jane Doe"), - "iconImage": pbtypes.String(iconImage), - "identity": pbtypes.String("AAjLbEwPF4nkEh7AWkqEnzcQ8HziGB4ETjiTpvRCQvWnSMD4"), - "globalName": pbtypes.String("jane.any"), + bundle.RelationKeyId.String(): pbtypes.String("member-2"), + bundle.RelationKeyName.String(): pbtypes.String("Jane Doe"), + bundle.RelationKeyIconImage.String(): pbtypes.String(iconImage), + bundle.RelationKeyIdentity.String(): pbtypes.String("AAjLbEwPF4nkEh7AWkqEnzcQ8HziGB4ETjiTpvRCQvWnSMD4"), + bundle.RelationKeyGlobalName.String(): pbtypes.String("jane.any"), }, }, }, From 16a0117ea9f4790b62956ab5b163d6aa63ba363a Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Thu, 16 Jan 2025 01:29:04 +0100 Subject: [PATCH 172/279] GO-4459: Add tests for export service --- core/api/services/export/service_test.go | 134 +++++++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 core/api/services/export/service_test.go diff --git a/core/api/services/export/service_test.go b/core/api/services/export/service_test.go new file mode 100644 index 000000000..a57406d6e --- /dev/null +++ b/core/api/services/export/service_test.go @@ -0,0 +1,134 @@ +package export + +import ( + "context" + "testing" + + "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" + + "github.com/anyproto/anytype-heart/pb" + "github.com/anyproto/anytype-heart/pb/service/mock_service" + "github.com/anyproto/anytype-heart/pkg/lib/pb/model" +) + +const ( + spaceID = "space-123" + objectID = "obj-456" + exportFormat = "markdown" + unrecognizedFormat = "unrecognized" + exportPath = "/some/dir/myexport" +) + +type fixture struct { + *ExportService + mwMock *mock_service.MockClientCommandsServer +} + +func newFixture(t *testing.T) *fixture { + mw := mock_service.NewMockClientCommandsServer(t) + exportService := NewService(mw) + + return &fixture{ + ExportService: exportService, + mwMock: mw, + } +} + +func TestExportService_GetObjectExport(t *testing.T) { + t.Run("successful export to markdown", func(t *testing.T) { + // Given + ctx := context.Background() + fx := newFixture(t) + + // Mock the ObjectListExport call + fx.mwMock. + On("ObjectListExport", mock.Anything, &pb.RpcObjectListExportRequest{ + SpaceId: spaceID, + Path: exportPath, + ObjectIds: []string{objectID}, + Format: model.Export_Markdown, + Zip: false, + IncludeNested: false, + IncludeFiles: true, + IsJson: false, + IncludeArchived: false, + NoProgress: true, + }). + Return(&pb.RpcObjectListExportResponse{ + Path: exportPath, + Error: &pb.RpcObjectListExportResponseError{ + Code: pb.RpcObjectListExportResponseError_NULL, + }, + }). + Once() + + // When + gotPath, err := fx.GetObjectExport(ctx, spaceID, objectID, exportFormat, exportPath) + + // Then + require.NoError(t, err) + require.Equal(t, exportPath, gotPath) + fx.mwMock.AssertExpectations(t) + }) + + t.Run("failed export returns error", func(t *testing.T) { + // Given + ctx := context.Background() + fx := newFixture(t) + + // Mock the ObjectListExport call to return an error code + fx.mwMock. + On("ObjectListExport", mock.Anything, mock.Anything). + Return(&pb.RpcObjectListExportResponse{ + Path: "", + Error: &pb.RpcObjectListExportResponseError{ + Code: pb.RpcObjectListExportResponseError_UNKNOWN_ERROR, + }, + }). + Once() + + // When + gotPath, err := fx.GetObjectExport(ctx, spaceID, objectID, exportFormat, exportPath) + + // Then + require.Error(t, err) + require.Empty(t, gotPath) + require.ErrorIs(t, err, ErrFailedExportObjectAsMarkdown) + fx.mwMock.AssertExpectations(t) + }) + + t.Run("unrecognized format defaults to markdown", func(t *testing.T) { + ctx := context.Background() + fx := newFixture(t) + + fx.mwMock. + On("ObjectListExport", mock.Anything, &pb.RpcObjectListExportRequest{ + SpaceId: spaceID, + Path: exportPath, + ObjectIds: []string{objectID}, + Format: model.Export_Markdown, // fallback + Zip: false, + IncludeNested: false, + IncludeFiles: true, + IsJson: false, + IncludeArchived: false, + NoProgress: true, + }). + Return(&pb.RpcObjectListExportResponse{ + Path: exportPath, + Error: &pb.RpcObjectListExportResponseError{ + Code: pb.RpcObjectListExportResponseError_NULL, + }, + }). + Once() + + // When + gotPath, err := fx.GetObjectExport(ctx, spaceID, objectID, unrecognizedFormat, exportPath) // + + // Then + require.NoError(t, err) + require.Equal(t, exportPath, gotPath) + fx.mwMock.AssertExpectations(t) + }) +} From d2ed118c04f10c4204b6e34c010234a03caebf25 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Thu, 16 Jan 2025 01:55:43 +0100 Subject: [PATCH 173/279] GO-4459: Require app name to generate api key through challenge --- core/api/docs/docs.go | 6 ++++++ core/api/docs/swagger.json | 6 ++++++ core/api/docs/swagger.yaml | 4 ++++ core/api/services/auth/handler.go | 15 +++++++++------ core/api/services/auth/service.go | 15 ++++++++++----- core/api/services/auth/service_test.go | 26 ++++++++++++++++++++------ 6 files changed, 55 insertions(+), 17 deletions(-) diff --git a/core/api/docs/docs.go b/core/api/docs/docs.go index 496e9f7a4..5c812f7a4 100644 --- a/core/api/docs/docs.go +++ b/core/api/docs/docs.go @@ -52,6 +52,12 @@ const docTemplate = `{ "$ref": "#/definitions/auth.DisplayCodeResponse" } }, + "400": { + "description": "Invalid input", + "schema": { + "$ref": "#/definitions/util.ValidationError" + } + }, "502": { "description": "Internal server error", "schema": { diff --git a/core/api/docs/swagger.json b/core/api/docs/swagger.json index 27e05018d..3bdab46ab 100644 --- a/core/api/docs/swagger.json +++ b/core/api/docs/swagger.json @@ -46,6 +46,12 @@ "$ref": "#/definitions/auth.DisplayCodeResponse" } }, + "400": { + "description": "Invalid input", + "schema": { + "$ref": "#/definitions/util.ValidationError" + } + }, "502": { "description": "Internal server error", "schema": { diff --git a/core/api/docs/swagger.yaml b/core/api/docs/swagger.yaml index 413593b1e..dd2a83a1d 100644 --- a/core/api/docs/swagger.yaml +++ b/core/api/docs/swagger.yaml @@ -351,6 +351,10 @@ paths: description: Challenge ID schema: $ref: '#/definitions/auth.DisplayCodeResponse' + "400": + description: Invalid input + schema: + $ref: '#/definitions/util.ValidationError' "502": description: Internal server error schema: diff --git a/core/api/services/auth/handler.go b/core/api/services/auth/handler.go index 894626959..23921af13 100644 --- a/core/api/services/auth/handler.go +++ b/core/api/services/auth/handler.go @@ -14,16 +14,19 @@ import ( // @Tags auth // @Accept json // @Produce json -// @Param app_name query string true "The name of the app that requests the code" -// @Success 200 {object} DisplayCodeResponse "Challenge ID" -// @Failure 502 {object} util.ServerError "Internal server error" +// @Param app_name query string true "The name of the app that requests the code" +// @Success 200 {object} DisplayCodeResponse "Challenge ID" +// @Failure 400 {object} util.ValidationError "Invalid input" +// @Failure 502 {object} util.ServerError "Internal server error" // @Router /auth/display_code [post] func DisplayCodeHandler(s *AuthService) gin.HandlerFunc { return func(c *gin.Context) { appName := c.Query("app_name") - challengeId, err := s.GenerateNewChallenge(c.Request.Context(), appName) - code := util.MapErrorCode(err, util.ErrToCode(ErrFailedGenerateChallenge, http.StatusInternalServerError)) + challengeId, err := s.NewChallenge(c.Request.Context(), appName) + code := util.MapErrorCode(err, + util.ErrToCode(ErrMissingAppName, http.StatusBadRequest), + util.ErrToCode(ErrFailedGenerateChallenge, http.StatusInternalServerError)) if code != http.StatusOK { apiErr := util.CodeToAPIError(code, err.Error()) @@ -52,7 +55,7 @@ func TokenHandler(s *AuthService) gin.HandlerFunc { challengeId := c.Query("challenge_id") code := c.Query("code") - sessionToken, appKey, err := s.SolveChallengeForToken(c.Request.Context(), challengeId, code) + sessionToken, appKey, err := s.SolveChallenge(c.Request.Context(), challengeId, code) errCode := util.MapErrorCode(err, util.ErrToCode(ErrInvalidInput, http.StatusBadRequest), util.ErrToCode(ErrFailedAuthenticate, http.StatusInternalServerError), diff --git a/core/api/services/auth/service.go b/core/api/services/auth/service.go index 87c05bc2e..5d63e6712 100644 --- a/core/api/services/auth/service.go +++ b/core/api/services/auth/service.go @@ -9,14 +9,15 @@ import ( ) var ( + ErrMissingAppName = errors.New("missing app name") ErrFailedGenerateChallenge = errors.New("failed to generate a new challenge") ErrInvalidInput = errors.New("invalid input") ErrFailedAuthenticate = errors.New("failed to authenticate user") ) type Service interface { - GenerateNewChallenge(ctx context.Context, appName string) (string, error) - SolveChallengeForToken(ctx context.Context, challengeId string, code string) (sessionToken, appKey string, err error) + NewChallenge(ctx context.Context, appName string) (string, error) + SolveChallenge(ctx context.Context, challengeId string, code string) (sessionToken, appKey string, err error) } type AuthService struct { @@ -27,8 +28,12 @@ func NewService(mw service.ClientCommandsServer) *AuthService { return &AuthService{mw: mw} } -// GenerateNewChallenge calls AccountLocalLinkNewChallenge and returns the challenge ID, or an error if it fails. -func (s *AuthService) GenerateNewChallenge(ctx context.Context, appName string) (string, error) { +// NewChallenge calls AccountLocalLinkNewChallenge and returns the challenge ID, or an error if it fails. +func (s *AuthService) NewChallenge(ctx context.Context, appName string) (string, error) { + if appName == "" { + return "", ErrMissingAppName + } + resp := s.mw.AccountLocalLinkNewChallenge(ctx, &pb.RpcAccountLocalLinkNewChallengeRequest{AppName: appName}) if resp.Error.Code != pb.RpcAccountLocalLinkNewChallengeResponseError_NULL { @@ -39,7 +44,7 @@ func (s *AuthService) GenerateNewChallenge(ctx context.Context, appName string) } // SolveChallengeForToken calls AccountLocalLinkSolveChallenge and returns the session token + app key, or an error if it fails. -func (s *AuthService) SolveChallengeForToken(ctx context.Context, challengeId string, code string) (sessionToken string, appKey string, err error) { +func (s *AuthService) SolveChallenge(ctx context.Context, challengeId string, code string) (sessionToken string, appKey string, err error) { if challengeId == "" || code == "" { return "", "", ErrInvalidInput } diff --git a/core/api/services/auth/service_test.go b/core/api/services/auth/service_test.go index a78f759e2..4df3bd482 100644 --- a/core/api/services/auth/service_test.go +++ b/core/api/services/auth/service_test.go @@ -47,13 +47,27 @@ func TestAuthService_GenerateNewChallenge(t *testing.T) { }).Once() // when - challengeId, err := fx.GenerateNewChallenge(ctx, mockedAppName) + challengeId, err := fx.NewChallenge(ctx, mockedAppName) // then require.NoError(t, err) require.Equal(t, mockedChallengeId, challengeId) }) + t.Run("bad request - missing app name", func(t *testing.T) { + // given + ctx := context.Background() + fx := newFixture(t) + + // when + challengeId, err := fx.NewChallenge(ctx, "") + + // then + require.Error(t, err) + require.Equal(t, ErrMissingAppName, err) + require.Empty(t, challengeId) + }) + t.Run("failed challenge creation", func(t *testing.T) { // given ctx := context.Background() @@ -65,7 +79,7 @@ func TestAuthService_GenerateNewChallenge(t *testing.T) { }).Once() // when - challengeId, err := fx.GenerateNewChallenge(ctx, mockedAppName) + challengeId, err := fx.NewChallenge(ctx, mockedAppName) // then require.Error(t, err) @@ -91,7 +105,7 @@ func TestAuthService_SolveChallengeForToken(t *testing.T) { }).Once() // when - sessionToken, appKey, err := fx.SolveChallengeForToken(ctx, mockedChallengeId, mockedCode) + sessionToken, appKey, err := fx.SolveChallenge(ctx, mockedChallengeId, mockedCode) // then require.NoError(t, err) @@ -100,13 +114,13 @@ func TestAuthService_SolveChallengeForToken(t *testing.T) { }) - t.Run("bad request", func(t *testing.T) { + t.Run("bad request - missing challenge id or code", func(t *testing.T) { // given ctx := context.Background() fx := newFixture(t) // when - sessionToken, appKey, err := fx.SolveChallengeForToken(ctx, "", "") + sessionToken, appKey, err := fx.SolveChallenge(ctx, "", "") // then require.Error(t, err) @@ -129,7 +143,7 @@ func TestAuthService_SolveChallengeForToken(t *testing.T) { }).Once() // when - sessionToken, appKey, err := fx.SolveChallengeForToken(ctx, mockedChallengeId, mockedCode) + sessionToken, appKey, err := fx.SolveChallenge(ctx, mockedChallengeId, mockedCode) // then require.Error(t, err) From d754be7cd9c0c2b7ac1ba412678d5e2a0e5d7115 Mon Sep 17 00:00:00 2001 From: Sergey Date: Thu, 16 Jan 2025 12:05:22 +0100 Subject: [PATCH 174/279] GO-4146: Add badger test --- space/spacecore/storage/migrator/migrator.go | 2 +- .../storage/migrator/migrator_test.go | 84 ++++++++++++++++-- .../testdata/badger_spacestore/000001.sst | Bin 0 -> 1031871 bytes .../testdata/badger_spacestore/000001.vlog | Bin 0 -> 20 bytes .../testdata/badger_spacestore/DISCARD | Bin 0 -> 1048576 bytes .../testdata/badger_spacestore/KEYREGISTRY | 1 + .../testdata/badger_spacestore/MANIFEST | Bin 0 -> 28 bytes space/spacecore/storage/migrator/verifier.go | 11 +-- 8 files changed, 83 insertions(+), 15 deletions(-) create mode 100644 space/spacecore/storage/migrator/testdata/badger_spacestore/000001.sst create mode 100644 space/spacecore/storage/migrator/testdata/badger_spacestore/000001.vlog create mode 100644 space/spacecore/storage/migrator/testdata/badger_spacestore/DISCARD create mode 100644 space/spacecore/storage/migrator/testdata/badger_spacestore/KEYREGISTRY create mode 100644 space/spacecore/storage/migrator/testdata/badger_spacestore/MANIFEST diff --git a/space/spacecore/storage/migrator/migrator.go b/space/spacecore/storage/migrator/migrator.go index d99fe558a..82471803f 100644 --- a/space/spacecore/storage/migrator/migrator.go +++ b/space/spacecore/storage/migrator/migrator.go @@ -147,7 +147,7 @@ func (m *migrator) Run(ctx context.Context) (err error) { return nil } -func (m *migrator) verify(ctx context.Context, fast bool) error { +func (m *migrator) verify(ctx context.Context, fast bool) ([]*verificationReport, error) { v := &verifier{ fast: fast, oldStorage: m.oldStorage, diff --git a/space/spacecore/storage/migrator/migrator_test.go b/space/spacecore/storage/migrator/migrator_test.go index 2dcf33f97..b8bb723ea 100644 --- a/space/spacecore/storage/migrator/migrator_test.go +++ b/space/spacecore/storage/migrator/migrator_test.go @@ -4,9 +4,11 @@ import ( "context" "io" "os" + "path/filepath" "testing" "github.com/anyproto/any-sync/app" + "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" "github.com/stretchr/testify/require" @@ -15,6 +17,7 @@ import ( "github.com/anyproto/anytype-heart/core/event/mock_event" "github.com/anyproto/anytype-heart/core/wallet" "github.com/anyproto/anytype-heart/pb" + "github.com/anyproto/anytype-heart/pkg/lib/datastore/clientds" "github.com/anyproto/anytype-heart/space/spacecore/oldstorage" "github.com/anyproto/anytype-heart/space/spacecore/storage" "github.com/anyproto/anytype-heart/space/spacecore/storage/migratorfinisher" @@ -41,9 +44,9 @@ func (q *quicPreferenceSetterStub) Name() (name string) { func (q *quicPreferenceSetterStub) PreferQuic(b bool) { } -func newFixture(t *testing.T) *fixture { +func newFixture(t *testing.T, mode storage.SpaceStorageMode) *fixture { cfg := config.New() - cfg.SpaceStorageMode = storage.SpaceStorageModeSqlite + cfg.SpaceStorageMode = mode cfg.RepoPath = t.TempDir() fx := &fixture{ @@ -69,6 +72,7 @@ func (fx *fixture) start(t *testing.T) { ctx := context.Background() testApp := &app.App{} testApp.Register(migratorfinisher.New()) + testApp.Register(clientds.New()) testApp.Register(testutil.PrepareMock(ctx, testApp, eventSender)) testApp.Register(&quicPreferenceSetterStub{}) testApp.Register(walletService) @@ -85,15 +89,23 @@ func (fx *fixture) start(t *testing.T) { require.NoError(t, err) } +func assertReports(t *testing.T, reports []*verificationReport) { + for _, report := range reports { + for _, err := range report.errors { + assert.NoError(t, err.err, err.id) + } + } +} + func TestMigration(t *testing.T) { t.Run("no old storage", func(t *testing.T) { - fx := newFixture(t) + fx := newFixture(t, storage.SpaceStorageModeSqlite) fx.start(t) }) - t.Run("with old data, fast verifier", func(t *testing.T) { - fx := newFixture(t) + t.Run("with sqlite, fast verification", func(t *testing.T) { + fx := newFixture(t, storage.SpaceStorageModeSqlite) err := copyFile("testdata/spaceStore.db", fx.cfg.GetOldSpaceStorePath()) require.NoError(t, err) @@ -102,12 +114,13 @@ func TestMigration(t *testing.T) { fx.start(t) - err = fx.migrator.verify(context.Background(), true) + reports, err := fx.migrator.verify(context.Background(), true) require.NoError(t, err) + assertReports(t, reports) }) - t.Run("with old data, full verifier", func(t *testing.T) { - fx := newFixture(t) + t.Run("with sqlite, full verification", func(t *testing.T) { + fx := newFixture(t, storage.SpaceStorageModeSqlite) err := copyFile("testdata/spaceStore.db", fx.cfg.GetOldSpaceStorePath()) require.NoError(t, err) @@ -116,8 +129,39 @@ func TestMigration(t *testing.T) { fx.start(t) - err = fx.migrator.verify(context.Background(), false) + reports, err := fx.migrator.verify(context.Background(), false) require.NoError(t, err) + assertReports(t, reports) + }) + + t.Run("with badger, fast verification", func(t *testing.T) { + fx := newFixture(t, storage.SpaceStorageModeBadger) + + err := copyDir("testdata/badger_spacestore", fx.cfg.GetOldSpaceStorePath()) + require.NoError(t, err) + + // TODO Test object->space bindings were populated + + fx.start(t) + + reports, err := fx.migrator.verify(context.Background(), true) + require.NoError(t, err) + assertReports(t, reports) + }) + + t.Run("with badger, full verification", func(t *testing.T) { + fx := newFixture(t, storage.SpaceStorageModeBadger) + + err := copyDir("testdata/badger_spacestore", fx.cfg.GetOldSpaceStorePath()) + require.NoError(t, err) + + // TODO Test object->space bindings were populated + + fx.start(t) + + reports, err := fx.migrator.verify(context.Background(), false) + require.NoError(t, err) + assertReports(t, reports) }) } @@ -135,3 +179,25 @@ func copyFile(srcPath string, destPath string) error { _, err = io.Copy(dest, src) return err } + +func copyDir(srcPath string, destPath string) error { + dir, err := os.ReadDir(srcPath) + if err != nil { + return err + } + + err = os.MkdirAll(destPath, os.ModePerm) + if err != nil { + return err + } + + for _, entry := range dir { + src := filepath.Join(srcPath, entry.Name()) + dst := filepath.Join(destPath, entry.Name()) + err := copyFile(src, dst) + if err != nil { + return err + } + } + return nil +} diff --git a/space/spacecore/storage/migrator/testdata/badger_spacestore/000001.sst b/space/spacecore/storage/migrator/testdata/badger_spacestore/000001.sst new file mode 100644 index 0000000000000000000000000000000000000000..448835376b4ace7c6ff85ad0d2fb6f21e06ee349 GIT binary patch literal 1031871 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

_pL7q;UgyT!Qyel)XOs-Y? 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

j?_(J)+%542;p>Bm#d%+2z zt;o;Yx}>R2hXHB%dnc8=7eB5eKfn4Cex9}{8RVMHT)6wP)Ncg{3Y_QIp+=#mmPI;-L;Yh?;lCAJ~O1}>iYgko3YBFyoi zOR;iY#T`1UC*_6m!kv_?ewY?_E>i)oe~GN0mVZKe!vXID!D8TXZNC>t6Gpg659VKH zWJWE0M+2$DY@bE;K&CHjkffrR>_gOw<@Y_K?L%4?u=mxf&^vkRQ+I~ARl&j0eB&5N z&DN01;Kf_>9AL+LG;2nDFKIads20M@Ure^Wc8t;w0;avLPbMjFzV2Q>#X{*O4Wnzo z-&y)%;GNi7h87|~Xy;JYWz(rrGUW_?MZ z#=5Nbdz>`>2J%ra-G;J0`b3YPI}Wo+`dl(et17%kUEmX*~rD!Ak7~B=bB5a@1Z%O7Mdx<#ydI>}M=0~@^!6MnaLv2_Okxt(}_$*RG$!rZOxz^2>| zj(lJ{8xvk@pd}Fe8{XX|iNk&kg8n~v_m|!Hui@QazBBDSx)*w{g5UF-CHY?Nglr<- z=J_1N<1q__Z=RurQew6_qwk?*8mFsYo@@*7r*rEu&v2JEn`MM86jb77FnPNWH|)rJ zBhQ3 z@h8=g-CYG7RD8d*wRKC})|6H7o$cxa1e6N0aon6*0I5+5FbOw|==%Nv%2MKGKl6R1 zkJ+d_l!Asm$>1sWW^>IY17cirIJ#z3A&ZeuoM(%%wbi(zPgvIFz>rZcD&f!TJ27If#U3LE?S{;vqg2ESqNCT=c- zB4_bADQW7hGCSi`cIVSov(a_3x*X@gv39y;wPF*7hPNBeU|&#%dD|A`?I<;?bNk z5;cp-XJKb;;rv7&>lMh{cGK@qSFSMa;!~xN?XW_X{gXwA9fg==5X~wDM0>7^7dVuh zE*^Qugd+$Jj#HRzr;YY5mMzSV-%0DZ2D~l1VEktH#F9EO@)=TIcLR{p7P|PoJeAd{ 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

b-&0^Keu7G-m~haT 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

6Ej>L`5@aMXjG7^m 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

Udem5&HU2;BYqj8IZG&S@>QPR?O1J@q?+ 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 cDsnE808Qn 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%0A&jP5Zf-l2PPWNso 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 literal 0 HcmV?d00001 diff --git a/space/spacecore/storage/migrator/testdata/badger_spacestore/000001.vlog b/space/spacecore/storage/migrator/testdata/badger_spacestore/000001.vlog new file mode 100644 index 0000000000000000000000000000000000000000..4c019b2c4a0b5046316cd567e3cc46f3b6e02fed GIT binary patch literal 20 XcmZQzfB;M5wTCYjM=bpN>4+@=DgOrw literal 0 HcmV?d00001 diff --git a/space/spacecore/storage/migrator/testdata/badger_spacestore/DISCARD b/space/spacecore/storage/migrator/testdata/badger_spacestore/DISCARD new file mode 100644 index 0000000000000000000000000000000000000000..9e0f96a2a253b173cb45b41868209a5d043e1437 GIT binary patch literal 1048576 zcmeIuF#!Mo0K%a4Pi+Wah(KY$fB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ T0|pEjFkrxd0RsjM82APT0Pp|- literal 0 HcmV?d00001 diff --git a/space/spacecore/storage/migrator/testdata/badger_spacestore/KEYREGISTRY b/space/spacecore/storage/migrator/testdata/badger_spacestore/KEYREGISTRY new file mode 100644 index 000000000..674c5cdc8 --- /dev/null +++ b/space/spacecore/storage/migrator/testdata/badger_spacestore/KEYREGISTRY @@ -0,0 +1 @@ +/À‰µ 7¤¼¯…püHello Badger \ No newline at end of file diff --git a/space/spacecore/storage/migrator/testdata/badger_spacestore/MANIFEST b/space/spacecore/storage/migrator/testdata/badger_spacestore/MANIFEST new file mode 100644 index 0000000000000000000000000000000000000000..4bf8a62e47e1db66ea2f4c8a2684d0d18f909b0a GIT binary patch literal 28 bcmZ=tNiSkxVBi2^7+_Hhkrd-%;$Q>-EZYJ_ literal 0 HcmV?d00001 diff --git a/space/spacecore/storage/migrator/verifier.go b/space/spacecore/storage/migrator/verifier.go index f6b5c3bee..3601dc3ec 100644 --- a/space/spacecore/storage/migrator/verifier.go +++ b/space/spacecore/storage/migrator/verifier.go @@ -38,19 +38,20 @@ type verificationReport struct { duration time.Duration } -func (v *verifier) verify(ctx context.Context) error { +func (v *verifier) verify(ctx context.Context) ([]*verificationReport, error) { allSpaceIds, err := v.oldStorage.AllSpaceIds() if err != nil { - return fmt.Errorf("list all space ids: %w", err) + return nil, fmt.Errorf("list all space ids: %w", err) } + reports := make([]*verificationReport, 0, len(allSpaceIds)) for _, spaceId := range allSpaceIds { report, err := v.verifySpace(ctx, spaceId) if err != nil { - return fmt.Errorf("verify space: %w", err) + return nil, fmt.Errorf("verify space: %w", err) } - fmt.Printf("%#v\n%s\n", report, report.duration) + report.spaceId = spaceId } - return nil + return reports, nil } func (v *verifier) verifySpace(ctx context.Context, spaceId string) (*verificationReport, error) { From f9cb263cfba90cf0b3348dbf7a2c706d8ddf8427 Mon Sep 17 00:00:00 2001 From: Sergey Date: Thu, 16 Jan 2025 13:27:51 +0100 Subject: [PATCH 175/279] GO-4146: Add space id resolving verification --- space/spacecore/oldstorage/storage.go | 1 + space/spacecore/storage/migrator/migrator.go | 32 +++++++++---- space/spacecore/storage/migrator/verifier.go | 48 ++++++++++++++++---- 3 files changed, 63 insertions(+), 18 deletions(-) diff --git a/space/spacecore/oldstorage/storage.go b/space/spacecore/oldstorage/storage.go index a22dbe0a6..121b635f3 100644 --- a/space/spacecore/oldstorage/storage.go +++ b/space/spacecore/oldstorage/storage.go @@ -28,6 +28,7 @@ type ClientStorage interface { GetBoundObjectIds(spaceId string) ([]string, error) AllSpaceIds() (ids []string, err error) DeleteSpaceStorage(ctx context.Context, spaceId string) error + GetSpaceID(objectID string) (spaceID string, err error) } // storageService is a proxy for the actual storage implementation diff --git a/space/spacecore/storage/migrator/migrator.go b/space/spacecore/storage/migrator/migrator.go index 82471803f..ec7aedf14 100644 --- a/space/spacecore/storage/migrator/migrator.go +++ b/space/spacecore/storage/migrator/migrator.go @@ -30,6 +30,8 @@ type migrator struct { oldPath string objectStorePath string finisher migratorfinisher.Service + + anyStoreConfig *anystore.Config } type pathProvider interface { @@ -52,6 +54,7 @@ func (m *migrator) Init(a *app.App) (err error) { m.newStorage = app.MustComponent[storage.ClientStorage](a) m.process = app.MustComponent[process.Service](a) m.finisher = app.MustComponent[migratorfinisher.Service](a) + m.anyStoreConfig = cfg.GetAnyStoreConfig() return nil } @@ -148,24 +151,35 @@ func (m *migrator) Run(ctx context.Context) (err error) { } func (m *migrator) verify(ctx context.Context, fast bool) ([]*verificationReport, error) { - v := &verifier{ - fast: fast, - oldStorage: m.oldStorage, - newStorage: m.newStorage, + var reports []*verificationReport + err := m.doObjectStoreDb(ctx, func(db anystore.DB) error { + resolverStore, err := spaceresolverstore.New(ctx, db) + if err != nil { + return fmt.Errorf("new resolver store: %w", err) + } + + v := &verifier{ + fast: fast, + oldStorage: m.oldStorage, + newStorage: m.newStorage, + resolverStore: resolverStore, + } + reports, err = v.verify(ctx) + return err + }) + if err != nil { + return nil, err } - return v.verify(ctx) + return reports, nil } func (m *migrator) doObjectStoreDb(ctx context.Context, proc func(db anystore.DB) error) error { - // TODO cfg - cfg := &anystore.Config{} - err := ensureDirExists(m.objectStorePath) if err != nil { return fmt.Errorf("ensure dir exists: %w", err) } - store, lockRemove, err := anystorehelper.OpenDatabaseWithLockCheck(ctx, filepath.Join(m.objectStorePath, "objects.db"), cfg) + store, lockRemove, err := anystorehelper.OpenDatabaseWithLockCheck(ctx, filepath.Join(m.objectStorePath, "objects.db"), m.anyStoreConfig) if err != nil { return fmt.Errorf("open database: %w", err) } diff --git a/space/spacecore/storage/migrator/verifier.go b/space/spacecore/storage/migrator/verifier.go index 3601dc3ec..b034d7f96 100644 --- a/space/spacecore/storage/migrator/verifier.go +++ b/space/spacecore/storage/migrator/verifier.go @@ -3,6 +3,7 @@ package migrator import ( "bytes" "context" + "errors" "fmt" "slices" "time" @@ -13,14 +14,17 @@ import ( "github.com/anyproto/any-sync/commonspace/spacestorage" oldstorage2 "github.com/anyproto/any-sync/commonspace/spacestorage/oldstorage" + "github.com/anyproto/anytype-heart/core/domain" + "github.com/anyproto/anytype-heart/pkg/lib/localstore/objectstore/spaceresolverstore" "github.com/anyproto/anytype-heart/space/spacecore/oldstorage" "github.com/anyproto/anytype-heart/space/spacecore/storage" ) type verifier struct { - fast bool - oldStorage oldstorage.ClientStorage - newStorage storage.ClientStorage + fast bool + oldStorage oldstorage.ClientStorage + newStorage storage.ClientStorage + resolverStore spaceresolverstore.Store } type errorEntry struct { @@ -50,6 +54,7 @@ func (v *verifier) verify(ctx context.Context) ([]*verificationReport, error) { return nil, fmt.Errorf("verify space: %w", err) } report.spaceId = spaceId + reports = append(reports, report) } return reports, nil } @@ -110,9 +115,13 @@ func (v *verifier) verifyTree(ctx context.Context, oldStore oldstorage2.SpaceSto if err != nil { return 0, fmt.Errorf("open old heads storage: %w", err) } - if !slices.Equal(oldHeads, entry.Heads) { - return 0, fmt.Errorf("old heads does not match tree storage") + return 0, fmt.Errorf("old heads doesn't match tree storage") + } + + err = v.verifySpaceBindings(oldStore, treeId) + if err != nil { + return 0, fmt.Errorf("verify space: %w", err) } newTreeStorage, err := newStore.TreeStorage(ctx, treeId) @@ -135,6 +144,27 @@ func (v *verifier) verifyTree(ctx context.Context, oldStore oldstorage2.SpaceSto return bytesCompared, nil } +func (v *verifier) verifySpaceBindings(oldStore oldstorage2.SpaceStorage, treeId string) error { + gotSpaceId, err := v.resolverStore.GetSpaceId(treeId) + // If it's not found in new store, check that it's not found in old store either + if errors.Is(err, domain.ErrObjectNotFound) { + _, err = v.oldStorage.GetSpaceID(treeId) + if errors.Is(err, domain.ErrObjectNotFound) { + return nil + } + if err == nil { + return fmt.Errorf("binding is not found in new store") + } + return fmt.Errorf("check binding in old store: %w", err) + } else if err != nil { + return fmt.Errorf("resolve space id for object: %w", err) + } + if gotSpaceId != oldStore.Id() { + return fmt.Errorf("resolved spaced id mismatch") + } + return nil +} + // verifyChangesFast checks only existence of changes func (v *verifier) verifyChangesFast(ctx context.Context, oldTreeStorage oldstorage2.TreeStorage, newTreeStorage objecttree.Storage) error { oldChangeIds, err := oldTreeStorage.GetAllChangeIds() @@ -151,7 +181,7 @@ func (v *verifier) verifyChangesFast(ctx context.Context, oldTreeStorage oldstor return fmt.Errorf("get old change id: %w", err) } if !ok { - return fmt.Errorf("old change id does not exist") + return fmt.Errorf("old change id doesn't exist") } } return nil @@ -161,7 +191,7 @@ func (v *verifier) verifyChangesFast(ctx context.Context, oldTreeStorage oldstor func (v *verifier) verifyChangesFull(ctx context.Context, newStoreCollection anystore.Collection, oldTreeStorage oldstorage2.TreeStorage) (int, error) { iterator, ok := oldTreeStorage.(oldstorage2.ChangesIterator) if !ok { - return 0, fmt.Errorf("old tree storage does not implement ChangesIterator") + return 0, fmt.Errorf("old tree storage doesn't implement ChangesIterator") } var bytesCompared int iter, err := newStoreCollection.Find(query.Key{Path: []string{"t"}, Filter: query.NewComp(query.CompOpEq, oldTreeStorage.Id())}).Sort("id").Iter(ctx) @@ -180,12 +210,12 @@ func (v *verifier) verifyChangesFull(ctx context.Context, newStoreCollection any newId := doc.Value().GetString("id") if newId != id { - return fmt.Errorf("new store iterator: id does not match") + return fmt.Errorf("new store iterator: id doesn't match") } bytesCompared += len(oldChange) if !bytes.Equal(oldChange, doc.Value().GetBytes("r")) { - return fmt.Errorf("old tree change does not match tree storage") + return fmt.Errorf("old tree change doesn't match tree storage") } return nil }) From c2eb765e5dbf9be616d9cce2280fa70c3b20e1c7 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Fri, 17 Jan 2025 14:11:35 +0100 Subject: [PATCH 176/279] GO-4459: Refactor api service --- core/api.go | 66 +++++++++++++++++---------------------------- core/api/service.go | 4 +-- 2 files changed, 27 insertions(+), 43 deletions(-) diff --git a/core/api.go b/core/api.go index 3a1f21577..2d06e8d0e 100644 --- a/core/api.go +++ b/core/api.go @@ -2,56 +2,40 @@ package core import ( "context" - "fmt" "github.com/anyproto/anytype-heart/core/api" "github.com/anyproto/anytype-heart/pb" ) -func (mw *Middleware) ApiStartServer(cctx context.Context, req *pb.RpcApiStartServerRequest) *pb.RpcApiStartServerResponse { - response := func(err error) *pb.RpcApiStartServerResponse { - m := &pb.RpcApiStartServerResponse{ - Error: &pb.RpcApiStartServerResponseError{ - Code: pb.RpcApiStartServerResponseError_NULL, - }, - } - if err != nil { - m.Error.Code = mapErrorCode(err, - errToCode(api.ErrPortAlreadyUsed, pb.RpcApiStartServerResponseError_PORT_ALREADY_USED), - errToCode(api.ErrServerAlreadyStarted, pb.RpcApiStartServerResponseError_SERVER_ALREADY_STARTED)) - m.Error.Description = getErrorDescription(err) - } - return m - } - - apiService := mw.applicationService.GetApp().Component(api.CName).(api.Api) - if apiService == nil { - return response(fmt.Errorf("node not started")) - } +func (mw *Middleware) ApiStartServer(ctx context.Context, req *pb.RpcApiStartServerRequest) *pb.RpcApiStartServerResponse { + apiService := mustService[api.Service](mw) err := apiService.Start() - return response(err) + code := mapErrorCode(err, + errToCode(api.ErrPortAlreadyUsed, pb.RpcApiStartServerResponseError_PORT_ALREADY_USED), + errToCode(api.ErrServerAlreadyStarted, pb.RpcApiStartServerResponseError_SERVER_ALREADY_STARTED)) + + r := &pb.RpcApiStartServerResponse{ + Error: &pb.RpcApiStartServerResponseError{ + Code: code, + Description: getErrorDescription(err), + }, + } + return r } -func (mw *Middleware) ApiStopServer(cctx context.Context, req *pb.RpcApiStopServerRequest) *pb.RpcApiStopServerResponse { - response := func(err error) *pb.RpcApiStopServerResponse { - m := &pb.RpcApiStopServerResponse{ - Error: &pb.RpcApiStopServerResponseError{ - Code: pb.RpcApiStopServerResponseError_NULL, - }, - } - if err != nil { - m.Error.Code = mapErrorCode(err, errToCode(api.ErrServerNotStarted, pb.RpcApiStopServerResponseError_SERVER_NOT_STARTED)) - m.Error.Description = getErrorDescription(err) - } - return m - } - - apiService := mw.applicationService.GetApp().Component(api.CName).(api.Api) - if apiService == nil { - return response(fmt.Errorf("node not started")) - } +func (mw *Middleware) ApiStopServer(ctx context.Context, req *pb.RpcApiStopServerRequest) *pb.RpcApiStopServerResponse { + apiService := mustService[api.Service](mw) err := apiService.Stop() - return response(err) + code := mapErrorCode(nil, + errToCode(api.ErrServerNotStarted, pb.RpcApiStopServerResponseError_SERVER_NOT_STARTED)) + + r := &pb.RpcApiStopServerResponse{ + Error: &pb.RpcApiStopServerResponseError{ + Code: code, + Description: getErrorDescription(err), + }, + } + return r } diff --git a/core/api/service.go b/core/api/service.go index a14f4861a..0b9cd6ea7 100644 --- a/core/api/service.go +++ b/core/api/service.go @@ -27,7 +27,7 @@ var ( ErrServerNotStarted = fmt.Errorf("server not started") ) -type Api interface { +type Service interface { Start() error Stop() error app.ComponentRunnable @@ -39,7 +39,7 @@ type apiService struct { mw service.ClientCommandsServer } -func New() Api { +func New() Service { return &apiService{ mw: mwSrv, } From c4574258617904cc179142060e6c21347f94647e Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Fri, 17 Jan 2025 19:01:58 +0100 Subject: [PATCH 177/279] GO-4459: Fix mock interface after merge --- .mockery.yaml | 3 + .../mock_service/mock_ClientCommandsServer.go | 245 ++++++++++++++++++ 2 files changed, 248 insertions(+) diff --git a/.mockery.yaml b/.mockery.yaml index 9923593ed..883c2078c 100644 --- a/.mockery.yaml +++ b/.mockery.yaml @@ -231,3 +231,6 @@ packages: github.com/anyproto/anytype-heart/core/identity: interfaces: Service: + github.com/anyproto/anytype-heart/pb/service: + interfaces: + ClientCommandsServer: diff --git a/pb/service/mock_service/mock_ClientCommandsServer.go b/pb/service/mock_service/mock_ClientCommandsServer.go index 1504906a7..e36161dac 100644 --- a/pb/service/mock_service/mock_ClientCommandsServer.go +++ b/pb/service/mock_service/mock_ClientCommandsServer.go @@ -11426,6 +11426,251 @@ func (_c *MockClientCommandsServer_ProcessUnsubscribe_Call) RunAndReturn(run fun return _c } +// PublishingCreate provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) PublishingCreate(_a0 context.Context, _a1 *pb.RpcPublishingCreateRequest) *pb.RpcPublishingCreateResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for PublishingCreate") + } + + var r0 *pb.RpcPublishingCreateResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcPublishingCreateRequest) *pb.RpcPublishingCreateResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcPublishingCreateResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_PublishingCreate_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'PublishingCreate' +type MockClientCommandsServer_PublishingCreate_Call struct { + *mock.Call +} + +// PublishingCreate is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcPublishingCreateRequest +func (_e *MockClientCommandsServer_Expecter) PublishingCreate(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_PublishingCreate_Call { + return &MockClientCommandsServer_PublishingCreate_Call{Call: _e.mock.On("PublishingCreate", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_PublishingCreate_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcPublishingCreateRequest)) *MockClientCommandsServer_PublishingCreate_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcPublishingCreateRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_PublishingCreate_Call) Return(_a0 *pb.RpcPublishingCreateResponse) *MockClientCommandsServer_PublishingCreate_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_PublishingCreate_Call) RunAndReturn(run func(context.Context, *pb.RpcPublishingCreateRequest) *pb.RpcPublishingCreateResponse) *MockClientCommandsServer_PublishingCreate_Call { + _c.Call.Return(run) + return _c +} + +// PublishingGetStatus provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) PublishingGetStatus(_a0 context.Context, _a1 *pb.RpcPublishingGetStatusRequest) *pb.RpcPublishingGetStatusResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for PublishingGetStatus") + } + + var r0 *pb.RpcPublishingGetStatusResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcPublishingGetStatusRequest) *pb.RpcPublishingGetStatusResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcPublishingGetStatusResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_PublishingGetStatus_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'PublishingGetStatus' +type MockClientCommandsServer_PublishingGetStatus_Call struct { + *mock.Call +} + +// PublishingGetStatus is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcPublishingGetStatusRequest +func (_e *MockClientCommandsServer_Expecter) PublishingGetStatus(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_PublishingGetStatus_Call { + return &MockClientCommandsServer_PublishingGetStatus_Call{Call: _e.mock.On("PublishingGetStatus", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_PublishingGetStatus_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcPublishingGetStatusRequest)) *MockClientCommandsServer_PublishingGetStatus_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcPublishingGetStatusRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_PublishingGetStatus_Call) Return(_a0 *pb.RpcPublishingGetStatusResponse) *MockClientCommandsServer_PublishingGetStatus_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_PublishingGetStatus_Call) RunAndReturn(run func(context.Context, *pb.RpcPublishingGetStatusRequest) *pb.RpcPublishingGetStatusResponse) *MockClientCommandsServer_PublishingGetStatus_Call { + _c.Call.Return(run) + return _c +} + +// PublishingList provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) PublishingList(_a0 context.Context, _a1 *pb.RpcPublishingListRequest) *pb.RpcPublishingListResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for PublishingList") + } + + var r0 *pb.RpcPublishingListResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcPublishingListRequest) *pb.RpcPublishingListResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcPublishingListResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_PublishingList_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'PublishingList' +type MockClientCommandsServer_PublishingList_Call struct { + *mock.Call +} + +// PublishingList is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcPublishingListRequest +func (_e *MockClientCommandsServer_Expecter) PublishingList(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_PublishingList_Call { + return &MockClientCommandsServer_PublishingList_Call{Call: _e.mock.On("PublishingList", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_PublishingList_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcPublishingListRequest)) *MockClientCommandsServer_PublishingList_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcPublishingListRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_PublishingList_Call) Return(_a0 *pb.RpcPublishingListResponse) *MockClientCommandsServer_PublishingList_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_PublishingList_Call) RunAndReturn(run func(context.Context, *pb.RpcPublishingListRequest) *pb.RpcPublishingListResponse) *MockClientCommandsServer_PublishingList_Call { + _c.Call.Return(run) + return _c +} + +// PublishingRemove provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) PublishingRemove(_a0 context.Context, _a1 *pb.RpcPublishingRemoveRequest) *pb.RpcPublishingRemoveResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for PublishingRemove") + } + + var r0 *pb.RpcPublishingRemoveResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcPublishingRemoveRequest) *pb.RpcPublishingRemoveResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcPublishingRemoveResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_PublishingRemove_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'PublishingRemove' +type MockClientCommandsServer_PublishingRemove_Call struct { + *mock.Call +} + +// PublishingRemove is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcPublishingRemoveRequest +func (_e *MockClientCommandsServer_Expecter) PublishingRemove(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_PublishingRemove_Call { + return &MockClientCommandsServer_PublishingRemove_Call{Call: _e.mock.On("PublishingRemove", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_PublishingRemove_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcPublishingRemoveRequest)) *MockClientCommandsServer_PublishingRemove_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcPublishingRemoveRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_PublishingRemove_Call) Return(_a0 *pb.RpcPublishingRemoveResponse) *MockClientCommandsServer_PublishingRemove_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_PublishingRemove_Call) RunAndReturn(run func(context.Context, *pb.RpcPublishingRemoveRequest) *pb.RpcPublishingRemoveResponse) *MockClientCommandsServer_PublishingRemove_Call { + _c.Call.Return(run) + return _c +} + +// PublishingResolveUri provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) PublishingResolveUri(_a0 context.Context, _a1 *pb.RpcPublishingResolveUriRequest) *pb.RpcPublishingResolveUriResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for PublishingResolveUri") + } + + var r0 *pb.RpcPublishingResolveUriResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcPublishingResolveUriRequest) *pb.RpcPublishingResolveUriResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcPublishingResolveUriResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_PublishingResolveUri_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'PublishingResolveUri' +type MockClientCommandsServer_PublishingResolveUri_Call struct { + *mock.Call +} + +// PublishingResolveUri is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcPublishingResolveUriRequest +func (_e *MockClientCommandsServer_Expecter) PublishingResolveUri(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_PublishingResolveUri_Call { + return &MockClientCommandsServer_PublishingResolveUri_Call{Call: _e.mock.On("PublishingResolveUri", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_PublishingResolveUri_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcPublishingResolveUriRequest)) *MockClientCommandsServer_PublishingResolveUri_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcPublishingResolveUriRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_PublishingResolveUri_Call) Return(_a0 *pb.RpcPublishingResolveUriResponse) *MockClientCommandsServer_PublishingResolveUri_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_PublishingResolveUri_Call) RunAndReturn(run func(context.Context, *pb.RpcPublishingResolveUriRequest) *pb.RpcPublishingResolveUriResponse) *MockClientCommandsServer_PublishingResolveUri_Call { + _c.Call.Return(run) + return _c +} + // RelationListRemoveOption provides a mock function with given fields: _a0, _a1 func (_m *MockClientCommandsServer) RelationListRemoveOption(_a0 context.Context, _a1 *pb.RpcRelationListRemoveOptionRequest) *pb.RpcRelationListRemoveOptionResponse { ret := _m.Called(_a0, _a1) From 0a576d85e1a9b5f005583e9d12258f896103ad39 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Fri, 17 Jan 2025 19:45:07 +0100 Subject: [PATCH 178/279] GO-4459: Fix type_id typo --- core/api/server/router.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/api/server/router.go b/core/api/server/router.go index 67e1e0592..8927be027 100644 --- a/core/api/server/router.go +++ b/core/api/server/router.go @@ -54,7 +54,7 @@ func (s *Server) NewRouter(a *app.App) *gin.Engine { v1.GET("/spaces/:space_id/objects/:object_id", object.GetObjectHandler(s.objectService)) v1.DELETE("/spaces/:space_id/objects/:object_id", s.rateLimit(maxWriteRequestsPerSecond), object.DeleteObjectHandler(s.objectService)) v1.GET("/spaces/:space_id/object_types", object.GetTypesHandler(s.objectService)) - v1.GET("/spaces/:space_id/object_types/:typeId/templates", object.GetTemplatesHandler(s.objectService)) + v1.GET("/spaces/:space_id/object_types/:type_id/templates", object.GetTemplatesHandler(s.objectService)) v1.POST("/spaces/:space_id/objects", s.rateLimit(maxWriteRequestsPerSecond), object.CreateObjectHandler(s.objectService)) // Search From 776155122d0eb732b44740451cb8e227e9bf4944 Mon Sep 17 00:00:00 2001 From: Roman Khafizianov Date: Fri, 17 Jan 2025 19:58:37 +0100 Subject: [PATCH 179/279] GO-4642 add scope to link challenge --- core/account.go | 2 +- core/application/sessions.go | 21 +- core/auth.go | 26 +- core/grpc_events.go | 13 +- core/session/challenge.go | 26 +- core/session/service.go | 43 +- core/wallet/applink.go | 1 + docs/proto.md | 44 + pb/commands.pb.go | 2505 +++++++++++++------------- pb/events.pb.go | 1081 +++++++---- pb/protos/commands.proto | 1 + pb/protos/events.proto | 6 + pkg/lib/pb/model/models.pb.go | 1272 +++++++------ pkg/lib/pb/model/protos/models.proto | 8 + 14 files changed, 2831 insertions(+), 2218 deletions(-) diff --git a/core/account.go b/core/account.go index 0dd514502..fa243b00e 100644 --- a/core/account.go +++ b/core/account.go @@ -201,7 +201,7 @@ func (mw *Middleware) AccountEnableLocalNetworkSync(_ context.Context, req *pb.R func (mw *Middleware) AccountLocalLinkNewChallenge(ctx context.Context, request *pb.RpcAccountLocalLinkNewChallengeRequest) *pb.RpcAccountLocalLinkNewChallengeResponse { info := getClientInfo(ctx) - challengeId, err := mw.applicationService.LinkLocalStartNewChallenge(&info) + challengeId, err := mw.applicationService.LinkLocalStartNewChallenge(request.Scope, &info) code := mapErrorCode(err, errToCode(session.ErrTooManyChallengeRequests, pb.RpcAccountLocalLinkNewChallengeResponseError_TOO_MANY_REQUESTS), errToCode(application.ErrApplicationIsNotRunning, pb.RpcAccountLocalLinkNewChallengeResponseError_ACCOUNT_IS_NOT_RUNNING), diff --git a/core/application/sessions.go b/core/application/sessions.go index 961d2d8e1..51c2c8d9b 100644 --- a/core/application/sessions.go +++ b/core/application/sessions.go @@ -9,6 +9,7 @@ import ( "github.com/anyproto/anytype-heart/core/session" walletComp "github.com/anyproto/anytype-heart/core/wallet" "github.com/anyproto/anytype-heart/pb" + "github.com/anyproto/anytype-heart/pkg/lib/pb/model" ) func (s *Service) CreateSession(req *pb.RpcWalletCreateSessionRequest) (token string, accountId string, err error) { @@ -31,7 +32,8 @@ func (s *Service) CreateSession(req *pb.RpcWalletCreateSessionRequest) (token st return "", "", err } log.Infof("appLink auth %s", appLink.AppName) - token, err := s.sessions.StartSession(s.sessionSigningKey) + + token, err := s.sessions.StartSession(s.sessionSigningKey, model.AccountAuthLocalApiScope(appLink.Scope)) if err != nil { return "", "", err } @@ -46,7 +48,7 @@ func (s *Service) CreateSession(req *pb.RpcWalletCreateSessionRequest) (token st if s.mnemonic != mnemonic { return "", "", errors.Join(ErrBadInput, fmt.Errorf("incorrect mnemonic")) } - token, err = s.sessions.StartSession(s.sessionSigningKey) + token, err = s.sessions.StartSession(s.sessionSigningKey, model.AccountAuth_Full) if err != nil { return "", "", err } @@ -61,16 +63,16 @@ func (s *Service) CloseSession(req *pb.RpcWalletCloseSessionRequest) error { return s.sessions.CloseSession(req.Token) } -func (s *Service) ValidateSessionToken(token string) error { +func (s *Service) ValidateSessionToken(token string) (model.AccountAuthLocalApiScope, error) { return s.sessions.ValidateToken(s.sessionSigningKey, token) } -func (s *Service) LinkLocalStartNewChallenge(clientInfo *pb.EventAccountLinkChallengeClientInfo) (id string, err error) { +func (s *Service) LinkLocalStartNewChallenge(scope model.AccountAuthLocalApiScope, clientInfo *pb.EventAccountLinkChallengeClientInfo) (id string, err error) { if s.app == nil { return "", ErrApplicationIsNotRunning } - id, value, err := s.sessions.StartNewChallenge(clientInfo) + id, value, err := s.sessions.StartNewChallenge(scope, clientInfo) if err != nil { return "", err } @@ -78,6 +80,7 @@ func (s *Service) LinkLocalStartNewChallenge(clientInfo *pb.EventAccountLinkChal AccountLinkChallenge: &pb.EventAccountLinkChallenge{ Challenge: value, ClientInfo: clientInfo, + Scope: scope, }, })) return id, nil @@ -87,7 +90,7 @@ func (s *Service) LinkLocalSolveChallenge(req *pb.RpcAccountLocalLinkSolveChalle if s.app == nil { return "", "", ErrApplicationIsNotRunning } - clientInfo, token, err := s.sessions.SolveChallenge(req.ChallengeId, req.Answer, s.sessionSigningKey) + clientInfo, token, scope, err := s.sessions.SolveChallenge(req.ChallengeId, req.Answer, s.sessionSigningKey) if err != nil { return "", "", err } @@ -96,7 +99,13 @@ func (s *Service) LinkLocalSolveChallenge(req *pb.RpcAccountLocalLinkSolveChalle AppName: clientInfo.ProcessName, AppPath: clientInfo.ProcessPath, CreatedAt: time.Now().Unix(), + Scope: int(scope), }) + s.eventSender.Broadcast(event.NewEventSingleMessage("", &pb.EventMessageValueOfAccountLinkChallengeHide{ + AccountLinkChallengeHide: &pb.EventAccountLinkChallengeHide{ + Challenge: req.Answer, + }, + })) return } diff --git a/core/auth.go b/core/auth.go index 6d3c0cee4..2dddf9580 100644 --- a/core/auth.go +++ b/core/auth.go @@ -6,6 +6,7 @@ package core import ( "context" "fmt" + "strings" "github.com/gogo/protobuf/proto" "github.com/gogo/protobuf/protoc-gen-gogo/descriptor" @@ -15,8 +16,20 @@ import ( "google.golang.org/grpc/metadata" "github.com/anyproto/anytype-heart/pb" + "github.com/anyproto/anytype-heart/pkg/lib/pb/model" ) +var limitedScopeMethods = map[string]struct{}{ + "ObjectSearch": {}, + "ObjectShow": {}, + "ObjectCreate": {}, + "ObjectCreateFromURL": {}, + "BlockPreview": {}, + "BlockPaste": {}, + "BroadcastPayloadEvent": {}, + "AccountSelect": {}, // need to replace with other method to get info +} + func (mw *Middleware) Authorize(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (resp interface{}, err error) { _, d := descriptor.ForMessage(req.(descriptor.Message)) noAuth := proto.GetBoolExtension(d.GetOptions(), pb.E_NoAuth, false) @@ -35,11 +48,20 @@ func (mw *Middleware) Authorize(ctx context.Context, req interface{}, info *grpc } tok := v[0] - err = mw.applicationService.ValidateSessionToken(tok) + var scope model.AccountAuthLocalApiScope + scope, err = mw.applicationService.ValidateSessionToken(tok) if err != nil { return nil, status.Error(codes.Unauthenticated, err.Error()) } - + switch scope { + case model.AccountAuth_Full: + case model.AccountAuth_Limited: + if _, ok := limitedScopeMethods[strings.TrimPrefix(info.FullMethod, "/anytype.ClientCommands/")]; !ok { + return nil, status.Error(codes.PermissionDenied, "method not allowed for limited scope") + } + default: + return nil, status.Error(codes.PermissionDenied, fmt.Sprintf("method not allowed for %s scope", scope.String())) + } resp, err = handler(ctx, req) return } diff --git a/core/grpc_events.go b/core/grpc_events.go index 868a3ee1c..8e1150916 100644 --- a/core/grpc_events.go +++ b/core/grpc_events.go @@ -14,14 +14,25 @@ import ( "github.com/anyproto/anytype-heart/core/session" "github.com/anyproto/anytype-heart/pb" lib "github.com/anyproto/anytype-heart/pb/service" + "github.com/anyproto/anytype-heart/pkg/lib/pb/model" ) func (mw *Middleware) ListenSessionEvents(req *pb.StreamRequest, server lib.ClientCommands_ListenSessionEventsServer) { - if err := mw.applicationService.ValidateSessionToken(req.Token); err != nil { + var ( + scope model.AccountAuthLocalApiScope + err error + ) + if scope, err = mw.applicationService.ValidateSessionToken(req.Token); err != nil { log.Errorf("ListenSessionEvents: %s", err) return } + switch scope { + case model.AccountAuth_Full: + default: + log.Errorf("method not allowed for scope %s", scope.String()) + return + } var srv event.SessionServer if sender, ok := mw.applicationService.GetEventSender().(*event.GrpcSender); ok { srv = sender.SetSessionServer(req.Token, server) diff --git a/core/session/challenge.go b/core/session/challenge.go index e236f99cd..4410a5782 100644 --- a/core/session/challenge.go +++ b/core/session/challenge.go @@ -9,6 +9,7 @@ import ( "go.uber.org/atomic" "github.com/anyproto/anytype-heart/pb" + "github.com/anyproto/anytype-heart/pkg/lib/pb/model" ) const ( @@ -21,15 +22,22 @@ var ( ErrChallengeTriesExceeded = fmt.Errorf("challenge tries exceeded") ErrChallengeIdNotFound = fmt.Errorf("challenge id not found") ErrChallengeSolutionWrong = fmt.Errorf("challenge solution is wrong") + ErrInvalidScope = fmt.Errorf("invalid scope") ErrTooManyChallengeRequests = fmt.Errorf("too many challenge requests per session") currentChallengesRequests = atomic.NewInt32(0) ) -func (s *service) StartNewChallenge(info *pb.EventAccountLinkChallengeClientInfo) (challengeId string, challengeValue string, err error) { +func (s *service) StartNewChallenge(scope model.AccountAuthLocalApiScope, info *pb.EventAccountLinkChallengeClientInfo) (challengeId string, challengeValue string, err error) { if currentChallengesRequests.Load() >= maxChallengesRequests { // todo: add limits per process? return "", "", ErrTooManyChallengeRequests } + switch scope { + case model.AccountAuth_Limited, model.AccountAuth_JsonAPI: + // full scope is not allowed via challenge + default: + return "", "", ErrInvalidScope + } // generate random challenge id id := bson.NewObjectId().Hex() s.lock.Lock() @@ -41,45 +49,47 @@ func (s *service) StartNewChallenge(info *pb.EventAccountLinkChallengeClientInfo tries: 0, value: value, clientInfo: info, + scope: scope, } currentChallengesRequests.Inc() return id, value, nil } -func (s *service) SolveChallenge(challengeId string, challengeSolution string, signingKey []byte) (clientInfo *pb.EventAccountLinkChallengeClientInfo, token string, err error) { +func (s *service) SolveChallenge(challengeId string, challengeSolution string, signingKey []byte) (clientInfo *pb.EventAccountLinkChallengeClientInfo, token string, scope model.AccountAuthLocalApiScope, err error) { s.lock.Lock() challenge, ok := s.challenges[challengeId] if !ok { s.lock.Unlock() - return nil, "", ErrChallengeIdNotFound + return nil, "", 0, ErrChallengeIdNotFound } if challenge.tries >= challengeMaxTries { s.lock.Unlock() - return clientInfo, "", ErrChallengeTriesExceeded + return clientInfo, "", 0, ErrChallengeTriesExceeded } if challenge.value != challengeSolution { s.lock.Unlock() challenge.tries++ - return clientInfo, "", ErrChallengeSolutionWrong + return clientInfo, "", 0, ErrChallengeSolutionWrong } delete(s.challenges, challengeId) s.lock.Unlock() - sessionToken, err := s.StartSession(signingKey) + sessionToken, err := s.StartSession(signingKey, scope) if err != nil { - return nil, "", err + return nil, "", 0, err } - return challenge.clientInfo, sessionToken, nil + return challenge.clientInfo, sessionToken, challenge.scope, nil } type challenge struct { tries int value string clientInfo *pb.EventAccountLinkChallengeClientInfo + scope model.AccountAuthLocalApiScope } diff --git a/core/session/service.go b/core/session/service.go index 89c4e41e4..83c6bc954 100644 --- a/core/session/service.go +++ b/core/session/service.go @@ -8,21 +8,23 @@ import ( "github.com/golang-jwt/jwt" "github.com/anyproto/anytype-heart/pb" + "github.com/anyproto/anytype-heart/pkg/lib/pb/model" ) const CName = "session" type Service interface { - StartSession(privKey []byte) (string, error) - ValidateToken(privKey []byte, token string) error - StartNewChallenge(info *pb.EventAccountLinkChallengeClientInfo) (id string, value string, err error) - SolveChallenge(challengeId string, challengeSolution string, signingKey []byte) (clientInfo *pb.EventAccountLinkChallengeClientInfo, token string, err error) + StartSession(privKey []byte, scope model.AccountAuthLocalApiScope) (string, error) + ValidateToken(privKey []byte, token string) (model.AccountAuthLocalApiScope, error) + StartNewChallenge(scope model.AccountAuthLocalApiScope, info *pb.EventAccountLinkChallengeClientInfo) (id string, value string, err error) + SolveChallenge(challengeId string, challengeSolution string, signingKey []byte) (clientInfo *pb.EventAccountLinkChallengeClientInfo, token string, scope model.AccountAuthLocalApiScope, err error) CloseSession(token string) error } type session struct { token string + scope model.AccountAuthLocalApiScope } type service struct { @@ -31,6 +33,10 @@ type service struct { challenges map[string]challenge } +func (s session) Scope() model.AccountAuthLocalApiScope { + return s.scope +} + func New() Service { return &service{ lock: &sync.RWMutex{}, @@ -43,7 +49,11 @@ func (s *service) Name() (name string) { return CName } -func (s *service) StartSession(privKey []byte) (string, error) { +func (s *service) StartSession(privKey []byte, scope model.AccountAuthLocalApiScope) (string, error) { + if _, scopeExists := model.AccountAuthLocalApiScope_name[int32(scope)]; !scopeExists { + return "", ErrInvalidScope + } + token, err := generateToken(privKey) if err != nil { return "", fmt.Errorf("generate token: %w", err) @@ -56,19 +66,32 @@ func (s *service) StartSession(privKey []byte) (string, error) { } s.sessions[token] = session{ token: token, + scope: scope, } return token, nil } -func (s *service) ValidateToken(privKey []byte, token string) error { +type scopeGetter interface { + Scope() model.AccountAuthLocalApiScope +} + +func (s *service) ValidateToken(privKey []byte, token string) (model.AccountAuthLocalApiScope, error) { s.lock.RLock() defer s.lock.RUnlock() - - if _, ok := s.sessions[token]; !ok { - return fmt.Errorf("session is not registered") + var ( + ok bool + scope scopeGetter + ) + if scope, ok = s.sessions[token]; !ok { + return 0, fmt.Errorf("session is not registered") } - return validateToken(privKey, token) + err := validateToken(privKey, token) + if err != nil { + return 0, err + } + + return scope.Scope(), nil } func (s *service) CloseSession(token string) error { diff --git a/core/wallet/applink.go b/core/wallet/applink.go index 5ae1a8d0d..2c51e8c27 100644 --- a/core/wallet/applink.go +++ b/core/wallet/applink.go @@ -27,6 +27,7 @@ type AppLinkPayload struct { AppPath string `json:"app_path"` // for now, it is not verified CreatedAt int64 `json:"created_at"` // unix timestamp ExpireAt int64 `json:"expire_at"` // unix timestamp + Scope int `json:"scope"` } type appLinkFileEncrypted struct { diff --git a/docs/proto.md b/docs/proto.md index 567be75e8..a99d35725 100644 --- a/docs/proto.md +++ b/docs/proto.md @@ -1595,6 +1595,7 @@ - [Event.Account.Details](#anytype-Event-Account-Details) - [Event.Account.LinkChallenge](#anytype-Event-Account-LinkChallenge) - [Event.Account.LinkChallenge.ClientInfo](#anytype-Event-Account-LinkChallenge-ClientInfo) + - [Event.Account.LinkChallengeHide](#anytype-Event-Account-LinkChallengeHide) - [Event.Account.Show](#anytype-Event-Account-Show) - [Event.Account.Update](#anytype-Event-Account-Update) - [Event.Block](#anytype-Event-Block) @@ -1821,6 +1822,7 @@ - [pkg/lib/pb/model/protos/models.proto](#pkg_lib_pb_model_protos_models-proto) - [Account](#anytype-model-Account) + - [Account.Auth](#anytype-model-Account-Auth) - [Account.Config](#anytype-model-Account-Config) - [Account.Info](#anytype-model-Account-Info) - [Account.Status](#anytype-model-Account-Status) @@ -1919,6 +1921,7 @@ - [SmartBlockSnapshotBase](#anytype-model-SmartBlockSnapshotBase) - [SpaceObjectHeader](#anytype-model-SpaceObjectHeader) + - [Account.Auth.LocalApiScope](#anytype-model-Account-Auth-LocalApiScope) - [Account.StatusType](#anytype-model-Account-StatusType) - [Block.Align](#anytype-model-Block-Align) - [Block.Content.Bookmark.State](#anytype-model-Block-Content-Bookmark-State) @@ -3311,6 +3314,7 @@ TODO: Remove this request if we do not need it, GO-1926 | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | appName | [string](#string) | | just for info, not secure to rely on | +| scope | [model.Account.Auth.LocalApiScope](#anytype-model-Account-Auth-LocalApiScope) | | | @@ -25100,6 +25104,7 @@ Event – type of message, that could be sent from a middleware to the correspon | ----- | ---- | ----- | ----------- | | challenge | [string](#string) | | | | clientInfo | [Event.Account.LinkChallenge.ClientInfo](#anytype-Event-Account-LinkChallenge-ClientInfo) | | | +| scope | [model.Account.Auth.LocalApiScope](#anytype-model-Account-Auth-LocalApiScope) | | | @@ -25123,6 +25128,21 @@ Event – type of message, that could be sent from a middleware to the correspon + + +### Event.Account.LinkChallengeHide + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| challenge | [string](#string) | | verify code before hiding to protect from MITM attacks | + + + + + + ### Event.Account.Show @@ -27405,6 +27425,7 @@ Precondition: user A opened a block | accountConfigUpdate | [Event.Account.Config.Update](#anytype-Event-Account-Config-Update) | | | | accountUpdate | [Event.Account.Update](#anytype-Event-Account-Update) | | | | accountLinkChallenge | [Event.Account.LinkChallenge](#anytype-Event-Account-LinkChallenge) | | | +| accountLinkChallengeHide | [Event.Account.LinkChallengeHide](#anytype-Event-Account-LinkChallengeHide) | | | | objectDetailsSet | [Event.Object.Details.Set](#anytype-Event-Object-Details-Set) | | | | objectDetailsAmend | [Event.Object.Details.Amend](#anytype-Event-Object-Details-Amend) | | | | objectDetailsUnset | [Event.Object.Details.Unset](#anytype-Event-Object-Details-Unset) | | | @@ -28644,6 +28665,16 @@ Contains basic information about a user account + + +### Account.Auth + + + + + + + ### Account.Config @@ -30359,6 +30390,19 @@ stored | + + +### Account.Auth.LocalApiScope + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| Limited | 0 | Used in WebClipper; AccountSelect(to be deprecated), ObjectSearch, ObjectShow, ObjectCreate, ObjectCreateFromURL, BlockPreview, BlockPaste, BroadcastPayloadEvent | +| JsonAPI | 1 | JSON API only, no direct grpc api calls allowed | +| Full | 2 | Full access, not available via LocalLink | + + + ### Account.StatusType diff --git a/pb/commands.pb.go b/pb/commands.pb.go index 2fccfc9ff..b920f26be 100644 --- a/pb/commands.pb.go +++ b/pb/commands.pb.go @@ -16415,7 +16415,8 @@ func (m *RpcAccountLocalLinkNewChallenge) XXX_DiscardUnknown() { var xxx_messageInfo_RpcAccountLocalLinkNewChallenge proto.InternalMessageInfo type RpcAccountLocalLinkNewChallengeRequest struct { - AppName string `protobuf:"bytes,1,opt,name=appName,proto3" json:"appName,omitempty"` + AppName string `protobuf:"bytes,1,opt,name=appName,proto3" json:"appName,omitempty"` + Scope model.AccountAuthLocalApiScope `protobuf:"varint,2,opt,name=scope,proto3,enum=anytype.model.AccountAuthLocalApiScope" json:"scope,omitempty"` } func (m *RpcAccountLocalLinkNewChallengeRequest) Reset() { @@ -16460,6 +16461,13 @@ func (m *RpcAccountLocalLinkNewChallengeRequest) GetAppName() string { return "" } +func (m *RpcAccountLocalLinkNewChallengeRequest) GetScope() model.AccountAuthLocalApiScope { + if m != nil { + return m.Scope + } + return model.AccountAuth_Limited +} + type RpcAccountLocalLinkNewChallengeResponse struct { Error *RpcAccountLocalLinkNewChallengeResponseError `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` ChallengeId string `protobuf:"bytes,2,opt,name=challengeId,proto3" json:"challengeId,omitempty"` @@ -72533,1239 +72541,1241 @@ func init() { func init() { proto.RegisterFile("pb/protos/commands.proto", fileDescriptor_8261c968b2e6f45c) } var fileDescriptor_8261c968b2e6f45c = []byte{ - // 19712 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xfd, 0x7d, 0x9c, 0x23, 0x47, - 0x75, 0x2f, 0x8c, 0xaf, 0xba, 0x25, 0xcd, 0xcc, 0x99, 0x97, 0xd5, 0xb6, 0x77, 0xd7, 0xeb, 0xb2, - 0x59, 0x3b, 0x6b, 0x63, 0x1c, 0x63, 0xc6, 0xc6, 0x10, 0x82, 0x8d, 0x8d, 0xad, 0xd1, 0xf4, 0xcc, - 0xc8, 0x9e, 0x91, 0x26, 0x2d, 0xcd, 0x2e, 0x4e, 0x6e, 0x7e, 0xba, 0xbd, 0x52, 0xcd, 0x4c, 0x7b, - 0x35, 0xdd, 0x4a, 0xab, 0x67, 0xd6, 0xcb, 0xef, 0x73, 0x9f, 0x1b, 0x42, 0x1c, 0x20, 0x84, 0x4b, - 0x08, 0x21, 0x09, 0xef, 0x60, 0x30, 0x5c, 0x48, 0x80, 0xf0, 0x7e, 0x21, 0x09, 0xef, 0x04, 0x42, - 0x08, 0x21, 0x10, 0x5e, 0x42, 0xc2, 0x13, 0x08, 0x84, 0x90, 0xfb, 0x09, 0x97, 0x27, 0x79, 0x6e, - 0x20, 0x24, 0xf0, 0xe4, 0xf9, 0x74, 0x55, 0xf5, 0x4b, 0x69, 0xd4, 0xad, 0x6a, 0x8d, 0x5a, 0x63, - 0xc2, 0xf3, 0x5f, 0x77, 0x75, 0xf5, 0xa9, 0x53, 0xe7, 0x7b, 0xaa, 0xea, 0x54, 0xd5, 0xa9, 0x53, - 0x70, 0xaa, 0x73, 0xfe, 0xe6, 0x8e, 0x6d, 0x39, 0x56, 0xf7, 0xe6, 0xa6, 0xb5, 0xb3, 0xa3, 0x9b, - 0xad, 0xee, 0x3c, 0x79, 0x57, 0x26, 0x74, 0xf3, 0x92, 0x73, 0xa9, 0x83, 0xd1, 0x75, 0x9d, 0x0b, - 0x5b, 0x37, 0xb7, 0x8d, 0xf3, 0x37, 0x77, 0xce, 0xdf, 0xbc, 0x63, 0xb5, 0x70, 0xdb, 0xfb, 0x81, - 0xbc, 0xb0, 0xec, 0xe8, 0x86, 0xa8, 0x5c, 0x6d, 0xab, 0xa9, 0xb7, 0xbb, 0x8e, 0x65, 0x63, 0x96, - 0xf3, 0x64, 0x50, 0x24, 0xde, 0xc3, 0xa6, 0xe3, 0x51, 0xb8, 0x6a, 0xcb, 0xb2, 0xb6, 0xda, 0x98, - 0x7e, 0x3b, 0xbf, 0xbb, 0x79, 0x73, 0xd7, 0xb1, 0x77, 0x9b, 0x0e, 0xfb, 0x7a, 0x4d, 0xef, 0xd7, - 0x16, 0xee, 0x36, 0x6d, 0xa3, 0xe3, 0x58, 0x36, 0xcd, 0x71, 0xe6, 0x25, 0xbf, 0x36, 0x09, 0xb2, - 0xd6, 0x69, 0xa2, 0xef, 0x4c, 0x80, 0x5c, 0xec, 0x74, 0xd0, 0x47, 0x25, 0x80, 0x65, 0xec, 0x9c, - 0xc5, 0x76, 0xd7, 0xb0, 0x4c, 0x74, 0x14, 0x26, 0x34, 0xfc, 0x73, 0xbb, 0xb8, 0xeb, 0xdc, 0x9e, - 0x7d, 0xf6, 0x37, 0xe4, 0x0c, 0x7a, 0x58, 0x82, 0x49, 0x0d, 0x77, 0x3b, 0x96, 0xd9, 0xc5, 0xca, - 0xdd, 0x90, 0xc3, 0xb6, 0x6d, 0xd9, 0xa7, 0x32, 0xd7, 0x64, 0x6e, 0x98, 0xbe, 0xf5, 0xc6, 0x79, - 0x56, 0xfd, 0x79, 0xad, 0xd3, 0x9c, 0x2f, 0x76, 0x3a, 0xf3, 0x01, 0xa5, 0x79, 0xef, 0xa7, 0x79, - 0xd5, 0xfd, 0x43, 0xa3, 0x3f, 0x2a, 0xa7, 0x60, 0x62, 0x8f, 0x66, 0x38, 0x25, 0x5d, 0x93, 0xb9, - 0x61, 0x4a, 0xf3, 0x5e, 0xdd, 0x2f, 0x2d, 0xec, 0xe8, 0x46, 0xbb, 0x7b, 0x4a, 0xa6, 0x5f, 0xd8, - 0x2b, 0x7a, 0x28, 0x03, 0x39, 0x42, 0x44, 0x29, 0x41, 0xb6, 0x69, 0xb5, 0x30, 0x29, 0x7e, 0xee, - 0xd6, 0x9b, 0xc5, 0x8b, 0x9f, 0x2f, 0x59, 0x2d, 0xac, 0x91, 0x9f, 0x95, 0x6b, 0x60, 0xda, 0x13, - 0x4b, 0xc0, 0x46, 0x38, 0xe9, 0xcc, 0xad, 0x90, 0x75, 0xf3, 0x2b, 0x93, 0x90, 0xad, 0x6c, 0xac, - 0xae, 0x16, 0x8e, 0x28, 0xc7, 0x60, 0x76, 0xa3, 0x72, 0x6f, 0xa5, 0x7a, 0xae, 0xd2, 0x50, 0x35, - 0xad, 0xaa, 0x15, 0x32, 0xca, 0x2c, 0x4c, 0x2d, 0x14, 0x17, 0x1b, 0xe5, 0xca, 0xfa, 0x46, 0xbd, - 0x20, 0xa1, 0x57, 0xc8, 0x30, 0x57, 0xc3, 0xce, 0x22, 0xde, 0x33, 0x9a, 0xb8, 0xe6, 0xe8, 0x0e, - 0x46, 0xcf, 0xcf, 0xf8, 0xc2, 0x54, 0x36, 0xdc, 0x42, 0xfd, 0x4f, 0xac, 0x02, 0x4f, 0xd8, 0x57, - 0x01, 0x9e, 0xc2, 0x3c, 0xfb, 0x7b, 0x3e, 0x94, 0xa6, 0x85, 0xe9, 0x9c, 0x79, 0x1c, 0x4c, 0x87, - 0xbe, 0x29, 0x73, 0x00, 0x0b, 0xc5, 0xd2, 0xbd, 0xcb, 0x5a, 0x75, 0xa3, 0xb2, 0x58, 0x38, 0xe2, - 0xbe, 0x2f, 0x55, 0x35, 0x95, 0xbd, 0x67, 0xd0, 0xf7, 0x32, 0x21, 0x30, 0x17, 0x79, 0x30, 0xe7, - 0x07, 0x33, 0xd3, 0x07, 0x50, 0xf4, 0x3a, 0x1f, 0x9c, 0x65, 0x0e, 0x9c, 0x27, 0x24, 0x23, 0x97, - 0x3e, 0x40, 0x0f, 0x4a, 0x30, 0x59, 0xdb, 0xde, 0x75, 0x5a, 0xd6, 0x45, 0x13, 0x4d, 0xf9, 0xc8, - 0xa0, 0x6f, 0x85, 0x65, 0xf2, 0x54, 0x5e, 0x26, 0x37, 0xec, 0xaf, 0x04, 0xa3, 0x10, 0x21, 0x8d, - 0x57, 0xf9, 0xd2, 0x28, 0x72, 0xd2, 0x78, 0x9c, 0x28, 0xa1, 0xf4, 0xe5, 0xf0, 0x92, 0x27, 0x43, - 0xae, 0xd6, 0xd1, 0x9b, 0x18, 0x7d, 0x52, 0x86, 0x99, 0x55, 0xac, 0xef, 0xe1, 0x62, 0xa7, 0x63, - 0x5b, 0x7b, 0x18, 0x95, 0x02, 0x7d, 0x3d, 0x05, 0x13, 0x5d, 0x37, 0x53, 0xb9, 0x45, 0x6a, 0x30, - 0xa5, 0x79, 0xaf, 0xca, 0x69, 0x00, 0xa3, 0x85, 0x4d, 0xc7, 0x70, 0x0c, 0xdc, 0x3d, 0x25, 0x5d, - 0x23, 0xdf, 0x30, 0xa5, 0x85, 0x52, 0xd0, 0x77, 0x24, 0x51, 0x1d, 0x23, 0x5c, 0xcc, 0x87, 0x39, - 0x88, 0x90, 0xea, 0x6b, 0x24, 0x11, 0x1d, 0x1b, 0x48, 0x2e, 0x99, 0x6c, 0xdf, 0x9c, 0x49, 0x2e, - 0x5c, 0x37, 0x47, 0xa5, 0xda, 0xa8, 0x6d, 0x94, 0x56, 0x1a, 0xb5, 0xf5, 0x62, 0x49, 0x2d, 0x60, - 0xe5, 0x38, 0x14, 0xc8, 0x63, 0xa3, 0x5c, 0x6b, 0x2c, 0xaa, 0xab, 0x6a, 0x5d, 0x5d, 0x2c, 0x6c, - 0x2a, 0x0a, 0xcc, 0x69, 0xea, 0x4f, 0x6d, 0xa8, 0xb5, 0x7a, 0x63, 0xa9, 0x58, 0x5e, 0x55, 0x17, - 0x0b, 0x5b, 0xee, 0xcf, 0xab, 0xe5, 0xb5, 0x72, 0xbd, 0xa1, 0xa9, 0xc5, 0xd2, 0x8a, 0xba, 0x58, - 0xd8, 0x56, 0x2e, 0x87, 0xcb, 0x2a, 0xd5, 0x46, 0x71, 0x7d, 0x5d, 0xab, 0x9e, 0x55, 0x1b, 0xec, - 0x8f, 0x5a, 0xc1, 0xa0, 0x05, 0xd5, 0x1b, 0xb5, 0x95, 0xa2, 0xa6, 0x16, 0x17, 0x56, 0xd5, 0xc2, - 0xfd, 0xe8, 0x99, 0x32, 0xcc, 0xae, 0xe9, 0x17, 0x70, 0x6d, 0x5b, 0xb7, 0xb1, 0x7e, 0xbe, 0x8d, - 0xd1, 0xb5, 0x02, 0x78, 0xa2, 0x4f, 0x86, 0xf1, 0x52, 0x79, 0xbc, 0x6e, 0xee, 0x23, 0x60, 0xae, - 0x88, 0x08, 0xc0, 0xfe, 0xc5, 0x6f, 0x06, 0x2b, 0x1c, 0x60, 0x4f, 0x4c, 0x48, 0x2f, 0x19, 0x62, - 0xbf, 0xf0, 0x08, 0x40, 0x0c, 0x7d, 0x59, 0x86, 0xb9, 0xb2, 0xb9, 0x67, 0x38, 0x78, 0x19, 0x9b, - 0xd8, 0x76, 0xc7, 0x01, 0x21, 0x18, 0x1e, 0x96, 0x43, 0x30, 0x2c, 0xf1, 0x30, 0xdc, 0xd2, 0x47, - 0x6c, 0x7c, 0x19, 0x11, 0xa3, 0xed, 0x55, 0x30, 0x65, 0x90, 0x7c, 0x25, 0xa3, 0xc5, 0x24, 0x16, - 0x24, 0x28, 0xd7, 0xc1, 0x2c, 0x7d, 0x59, 0x32, 0xda, 0xf8, 0x5e, 0x7c, 0x89, 0x8d, 0xbb, 0x7c, - 0x22, 0xfa, 0x15, 0xbf, 0xf1, 0x95, 0x39, 0x2c, 0x7f, 0x22, 0x29, 0x53, 0xc9, 0xc0, 0x7c, 0xd1, - 0x23, 0xa1, 0xf9, 0xed, 0x6b, 0x65, 0x06, 0xfa, 0x81, 0x04, 0xd3, 0x35, 0xc7, 0xea, 0xb8, 0x2a, - 0x6b, 0x98, 0x5b, 0x62, 0xe0, 0x7e, 0x3c, 0xdc, 0xc6, 0x4a, 0x3c, 0xb8, 0x8f, 0xeb, 0x23, 0xc7, - 0x50, 0x01, 0x11, 0x2d, 0xec, 0x3b, 0x7e, 0x0b, 0x5b, 0xe2, 0x50, 0xb9, 0x35, 0x11, 0xb5, 0x1f, - 0xc2, 0xf6, 0xf5, 0x22, 0x19, 0x0a, 0x9e, 0x9a, 0x39, 0xa5, 0x5d, 0xdb, 0xc6, 0xa6, 0x23, 0x06, - 0xc2, 0x5f, 0x86, 0x41, 0x58, 0xe1, 0x41, 0xb8, 0x35, 0x46, 0x99, 0xbd, 0x52, 0x52, 0x6c, 0x63, - 0x1f, 0xf0, 0xd1, 0xbc, 0x97, 0x43, 0xf3, 0x27, 0x93, 0xb3, 0x95, 0x0c, 0xd2, 0x95, 0x21, 0x10, - 0x3d, 0x0e, 0x05, 0x77, 0x4c, 0x2a, 0xd5, 0xcb, 0x67, 0xd5, 0x46, 0xb9, 0x72, 0xb6, 0x5c, 0x57, - 0x0b, 0x18, 0xbd, 0x50, 0x86, 0x19, 0xca, 0x9a, 0x86, 0xf7, 0xac, 0x0b, 0x82, 0xbd, 0xde, 0x97, - 0x13, 0x1a, 0x0b, 0xe1, 0x12, 0x22, 0x5a, 0xc6, 0x2f, 0x27, 0x30, 0x16, 0x62, 0xc8, 0x3d, 0x92, - 0x7a, 0xab, 0x7d, 0xcd, 0x60, 0xab, 0x4f, 0x6b, 0xe9, 0xdb, 0x5b, 0xbd, 0x28, 0x0b, 0x40, 0x2b, - 0x79, 0xd6, 0xc0, 0x17, 0xd1, 0x5a, 0x80, 0x09, 0xa7, 0xb6, 0x99, 0x81, 0x6a, 0x2b, 0xf5, 0x53, - 0xdb, 0x77, 0x87, 0xc7, 0xac, 0x05, 0x1e, 0xbd, 0x9b, 0x22, 0xc5, 0xed, 0x72, 0x12, 0x3d, 0x3b, - 0xf4, 0x14, 0x45, 0xe2, 0xad, 0xce, 0xab, 0x60, 0x8a, 0x3c, 0x56, 0xf4, 0x1d, 0xcc, 0xda, 0x50, - 0x90, 0xa0, 0x9c, 0x81, 0x19, 0x9a, 0xb1, 0x69, 0x99, 0x6e, 0x7d, 0xb2, 0x24, 0x03, 0x97, 0xe6, - 0x82, 0xd8, 0xb4, 0xb1, 0xee, 0x58, 0x36, 0xa1, 0x91, 0xa3, 0x20, 0x86, 0x92, 0xd0, 0x37, 0xfd, - 0x56, 0xa8, 0x72, 0x9a, 0xf3, 0xf8, 0x24, 0x55, 0x49, 0xa6, 0x37, 0x7b, 0xc3, 0xb5, 0x3f, 0xda, - 0xea, 0x1a, 0x2e, 0xda, 0x4b, 0x64, 0x6a, 0x87, 0x95, 0x93, 0xa0, 0xb0, 0x54, 0x37, 0x6f, 0xa9, - 0x5a, 0xa9, 0xab, 0x95, 0x7a, 0x61, 0xb3, 0xaf, 0x46, 0x6d, 0xa1, 0xd7, 0x64, 0x21, 0x7b, 0x8f, - 0x65, 0x98, 0xe8, 0xc1, 0x0c, 0xa7, 0x12, 0x26, 0x76, 0x2e, 0x5a, 0xf6, 0x05, 0xbf, 0xa1, 0x06, - 0x09, 0xf1, 0xd8, 0x04, 0xaa, 0x24, 0x0f, 0x54, 0xa5, 0x6c, 0x3f, 0x55, 0xfa, 0xb5, 0xb0, 0x2a, - 0xdd, 0xc1, 0xab, 0xd2, 0xf5, 0x7d, 0xe4, 0xef, 0x32, 0x1f, 0xd1, 0x01, 0x7c, 0xcc, 0xef, 0x00, - 0xee, 0xe2, 0x60, 0x7c, 0xac, 0x18, 0x99, 0x64, 0x00, 0x7e, 0x29, 0xd5, 0x86, 0xdf, 0x0f, 0xea, - 0xad, 0x08, 0xa8, 0xb7, 0xfb, 0xf4, 0x09, 0xc6, 0xfe, 0xae, 0xe3, 0xfe, 0xfd, 0xdd, 0xc4, 0x05, - 0xe5, 0x04, 0x1c, 0x5b, 0x2c, 0x2f, 0x2d, 0xa9, 0x9a, 0x5a, 0xa9, 0x37, 0x2a, 0x6a, 0xfd, 0x5c, - 0x55, 0xbb, 0xb7, 0xd0, 0x46, 0x0f, 0xc9, 0x00, 0xae, 0x84, 0x4a, 0xba, 0xd9, 0xc4, 0x6d, 0xb1, - 0x1e, 0xfd, 0x7f, 0x49, 0xc9, 0xfa, 0x84, 0x80, 0x7e, 0x04, 0x9c, 0x2f, 0x97, 0xc4, 0x5b, 0x65, - 0x24, 0xb1, 0x64, 0xa0, 0xbe, 0xf1, 0x91, 0x60, 0x7b, 0x5e, 0x06, 0x47, 0x3d, 0x7a, 0x2c, 0x7b, - 0xff, 0x69, 0xdf, 0x5b, 0xb2, 0x30, 0xc7, 0x60, 0xf1, 0xe6, 0xf1, 0xcf, 0xce, 0x88, 0x4c, 0xe4, - 0x11, 0x4c, 0xb2, 0x69, 0xbb, 0xd7, 0xbd, 0xfb, 0xef, 0xca, 0x32, 0x4c, 0x77, 0xb0, 0xbd, 0x63, - 0x74, 0xbb, 0x86, 0x65, 0xd2, 0x05, 0xb9, 0xb9, 0x5b, 0x1f, 0xed, 0x4b, 0x9c, 0xac, 0x5d, 0xce, - 0xaf, 0xeb, 0xb6, 0x63, 0x34, 0x8d, 0x8e, 0x6e, 0x3a, 0xeb, 0x41, 0x66, 0x2d, 0xfc, 0x27, 0x7a, - 0x41, 0xc2, 0x69, 0x0d, 0x5f, 0x93, 0x08, 0x95, 0xf8, 0xfd, 0x04, 0x53, 0x92, 0x58, 0x82, 0xc9, - 0xd4, 0xe2, 0xa3, 0xa9, 0xaa, 0x45, 0x1f, 0xbc, 0xb7, 0x94, 0x2b, 0xe0, 0x44, 0xb9, 0x52, 0xaa, - 0x6a, 0x9a, 0x5a, 0xaa, 0x37, 0xd6, 0x55, 0x6d, 0xad, 0x5c, 0xab, 0x95, 0xab, 0x95, 0xda, 0x41, - 0x5a, 0x3b, 0xfa, 0x84, 0xec, 0x6b, 0xcc, 0x22, 0x6e, 0xb6, 0x0d, 0x13, 0xa3, 0xbb, 0x0e, 0xa8, - 0x30, 0xfc, 0xaa, 0x8f, 0x38, 0xce, 0xac, 0xfc, 0x08, 0x9c, 0x5f, 0x9d, 0x1c, 0xe7, 0xfe, 0x04, - 0xff, 0x03, 0x37, 0xff, 0x2f, 0xcb, 0x70, 0x2c, 0xd4, 0x10, 0x35, 0xbc, 0x33, 0xb2, 0x95, 0xbc, - 0x5f, 0x08, 0xb7, 0xdd, 0x32, 0x8f, 0x69, 0x3f, 0x6b, 0x7a, 0x1f, 0x1b, 0x11, 0xb0, 0xbe, 0xd1, - 0x87, 0x75, 0x95, 0x83, 0xf5, 0xc9, 0x43, 0xd0, 0x4c, 0x86, 0xec, 0xef, 0xa6, 0x8a, 0xec, 0x15, - 0x70, 0x62, 0xbd, 0xa8, 0xd5, 0xcb, 0xa5, 0xf2, 0x7a, 0xd1, 0x1d, 0x47, 0x43, 0x43, 0x76, 0x84, - 0xb9, 0xce, 0x83, 0xde, 0x17, 0xdf, 0xf7, 0x67, 0xe1, 0xaa, 0xfe, 0x1d, 0x6d, 0x69, 0x5b, 0x37, - 0xb7, 0x30, 0x32, 0x44, 0xa0, 0x5e, 0x84, 0x89, 0x26, 0xc9, 0x4e, 0x71, 0x0e, 0x6f, 0xdd, 0xc4, - 0xf4, 0xe5, 0xb4, 0x04, 0xcd, 0xfb, 0x15, 0xbd, 0x3d, 0xac, 0x10, 0x75, 0x5e, 0x21, 0x9e, 0x1a, - 0x0f, 0xde, 0x3e, 0xbe, 0x23, 0x74, 0xe3, 0xd3, 0xbe, 0x6e, 0x9c, 0xe3, 0x74, 0xa3, 0x74, 0x30, - 0xf2, 0xc9, 0xd4, 0xe4, 0x8f, 0x1f, 0x09, 0x1d, 0x40, 0xa4, 0x36, 0x19, 0xd1, 0xa3, 0x42, 0xdf, - 0xee, 0xfe, 0x95, 0x32, 0xe4, 0x17, 0x71, 0x1b, 0x8b, 0xae, 0x44, 0x7e, 0x5b, 0x12, 0xdd, 0x10, - 0xa1, 0x30, 0x50, 0xda, 0xd1, 0xab, 0x23, 0x8e, 0xb1, 0x83, 0xbb, 0x8e, 0xbe, 0xd3, 0x21, 0xa2, - 0x96, 0xb5, 0x20, 0x01, 0xfd, 0xa2, 0x24, 0xb2, 0x5d, 0x12, 0x53, 0xcc, 0x7f, 0x8c, 0x35, 0xc5, - 0xcf, 0x4a, 0x30, 0x59, 0xc3, 0x4e, 0xd5, 0x6e, 0x61, 0x1b, 0xd5, 0x02, 0x8c, 0xae, 0x81, 0x69, - 0x02, 0x8a, 0x3b, 0xcd, 0xf4, 0x71, 0x0a, 0x27, 0x29, 0xd7, 0xc3, 0x9c, 0xff, 0x4a, 0x7e, 0x67, - 0xdd, 0x78, 0x4f, 0x2a, 0xfa, 0xc7, 0x8c, 0xe8, 0x2e, 0x2e, 0x5b, 0x32, 0x64, 0xdc, 0x44, 0xb4, - 0x52, 0xb1, 0x1d, 0xd9, 0x58, 0x52, 0xe9, 0x6f, 0x74, 0xbd, 0x55, 0x02, 0xd8, 0x30, 0xbb, 0x9e, - 0x5c, 0x1f, 0x9b, 0x40, 0xae, 0xe8, 0x9f, 0x33, 0xc9, 0x66, 0x31, 0x41, 0x39, 0x11, 0x12, 0x7b, - 0x6d, 0x82, 0xb5, 0x85, 0x48, 0x62, 0xe9, 0xcb, 0xec, 0x6b, 0x73, 0x90, 0x3f, 0xa7, 0xb7, 0xdb, - 0xd8, 0x41, 0x5f, 0x97, 0x20, 0x5f, 0xb2, 0xb1, 0xee, 0xe0, 0xb0, 0xe8, 0x10, 0x4c, 0xda, 0x96, - 0xe5, 0xac, 0xeb, 0xce, 0x36, 0x93, 0x9b, 0xff, 0xce, 0x1c, 0x06, 0x7e, 0x27, 0xdc, 0x7d, 0xdc, - 0xc5, 0x8b, 0xee, 0xc7, 0xb9, 0xda, 0xd2, 0x82, 0xe6, 0x69, 0x21, 0x11, 0xfd, 0x07, 0x82, 0xc9, - 0x1d, 0x13, 0xef, 0x58, 0xa6, 0xd1, 0xf4, 0x6c, 0x4e, 0xef, 0x1d, 0x7d, 0xc8, 0x97, 0xe9, 0x02, - 0x27, 0xd3, 0x79, 0xe1, 0x52, 0x92, 0x09, 0xb4, 0x36, 0x44, 0xef, 0x71, 0x35, 0x5c, 0x49, 0x3b, - 0x83, 0x46, 0xbd, 0xda, 0x28, 0x69, 0x6a, 0xb1, 0xae, 0x36, 0x56, 0xab, 0xa5, 0xe2, 0x6a, 0x43, - 0x53, 0xd7, 0xab, 0x05, 0x8c, 0xfe, 0x4e, 0x72, 0x85, 0xdb, 0xb4, 0xf6, 0xb0, 0x8d, 0x96, 0x85, - 0xe4, 0x1c, 0x27, 0x13, 0x86, 0xc1, 0xaf, 0x09, 0x3b, 0x6d, 0x30, 0xe9, 0x30, 0x0e, 0x22, 0x94, - 0xf7, 0xc3, 0x42, 0xcd, 0x3d, 0x96, 0xd4, 0x23, 0x40, 0xd2, 0xff, 0x5b, 0x82, 0x89, 0x92, 0x65, - 0xee, 0x61, 0xdb, 0x09, 0xcf, 0x77, 0xc2, 0xd2, 0xcc, 0xf0, 0xd2, 0x74, 0x07, 0x49, 0x6c, 0x3a, - 0xb6, 0xd5, 0xf1, 0x26, 0x3c, 0xde, 0x2b, 0x7a, 0x7d, 0x52, 0x09, 0xb3, 0x92, 0xa3, 0x17, 0x3e, - 0xfb, 0x17, 0xc4, 0xb1, 0x27, 0xf7, 0x34, 0x80, 0x87, 0x92, 0xe0, 0xd2, 0x9f, 0x81, 0xf4, 0xbb, - 0x94, 0xaf, 0xc8, 0x30, 0x4b, 0x1b, 0x5f, 0x0d, 0x13, 0x0b, 0x0d, 0x55, 0xc3, 0x4b, 0x8e, 0x3d, - 0xc2, 0x5f, 0x39, 0xc2, 0x89, 0x3f, 0xaf, 0x77, 0x3a, 0xfe, 0xf2, 0xf3, 0xca, 0x11, 0x8d, 0xbd, - 0x53, 0x35, 0x5f, 0xc8, 0x43, 0x56, 0xdf, 0x75, 0xb6, 0xd1, 0x0f, 0x84, 0x27, 0x9f, 0x5c, 0x67, - 0xc0, 0xf8, 0x89, 0x80, 0xe4, 0x38, 0xe4, 0x1c, 0xeb, 0x02, 0xf6, 0xe4, 0x40, 0x5f, 0x5c, 0x38, - 0xf4, 0x4e, 0xa7, 0x4e, 0x3e, 0x30, 0x38, 0xbc, 0x77, 0xd7, 0xd6, 0xd1, 0x9b, 0x4d, 0x6b, 0xd7, - 0x74, 0xca, 0xde, 0x12, 0x74, 0x90, 0x80, 0xbe, 0x98, 0x11, 0x99, 0xcc, 0x0a, 0x30, 0x98, 0x0c, - 0xb2, 0xf3, 0x43, 0x34, 0xa5, 0x79, 0xb8, 0xb1, 0xb8, 0xbe, 0xde, 0xa8, 0x57, 0xef, 0x55, 0x2b, - 0x81, 0xe1, 0xd9, 0x28, 0x57, 0x1a, 0xf5, 0x15, 0xb5, 0x51, 0xda, 0xd0, 0xc8, 0x3a, 0x61, 0xb1, - 0x54, 0xaa, 0x6e, 0x54, 0xea, 0x05, 0x8c, 0xde, 0x24, 0xc1, 0x4c, 0xa9, 0x6d, 0x75, 0x7d, 0x84, - 0xaf, 0x0e, 0x10, 0xf6, 0xc5, 0x98, 0x09, 0x89, 0x11, 0xfd, 0x5b, 0x46, 0xd4, 0xe9, 0xc0, 0x13, - 0x48, 0x88, 0x7c, 0x44, 0x2f, 0xf5, 0x7a, 0x21, 0xa7, 0x83, 0xc1, 0xf4, 0xd2, 0x6f, 0x12, 0x9f, - 0xbd, 0x1d, 0x26, 0x8a, 0x54, 0x31, 0xd0, 0x5f, 0x67, 0x20, 0x5f, 0xb2, 0xcc, 0x4d, 0x63, 0xcb, - 0x35, 0xe6, 0xb0, 0xa9, 0x9f, 0x6f, 0xe3, 0x45, 0xdd, 0xd1, 0xf7, 0x0c, 0x7c, 0x91, 0x54, 0x60, - 0x52, 0xeb, 0x49, 0x75, 0x99, 0x62, 0x29, 0xf8, 0xfc, 0xee, 0x16, 0x61, 0x6a, 0x52, 0x0b, 0x27, - 0x29, 0x4f, 0x86, 0xcb, 0xe9, 0xeb, 0xba, 0x8d, 0x6d, 0xdc, 0xc6, 0x7a, 0x17, 0xbb, 0xd3, 0x22, - 0x13, 0xb7, 0x89, 0xd2, 0x4e, 0x6a, 0x51, 0x9f, 0x95, 0x33, 0x30, 0x43, 0x3f, 0x11, 0x53, 0xa4, - 0x4b, 0xd4, 0x78, 0x52, 0xe3, 0xd2, 0x94, 0xc7, 0x41, 0x0e, 0x3f, 0xe0, 0xd8, 0xfa, 0xa9, 0x16, - 0xc1, 0xeb, 0xf2, 0x79, 0xea, 0x75, 0x38, 0xef, 0x79, 0x1d, 0xce, 0xd7, 0x88, 0x4f, 0xa2, 0x46, - 0x73, 0xa1, 0x97, 0x4d, 0xfa, 0x86, 0xc4, 0xbf, 0x4b, 0x81, 0x62, 0x28, 0x90, 0x35, 0xf5, 0x1d, - 0xcc, 0xf4, 0x82, 0x3c, 0x2b, 0x37, 0xc2, 0x51, 0x7d, 0x4f, 0x77, 0x74, 0x7b, 0xd5, 0x6a, 0xea, - 0x6d, 0x32, 0xf8, 0x79, 0x2d, 0xbf, 0xf7, 0x03, 0xd9, 0x11, 0x72, 0x2c, 0x1b, 0x93, 0x5c, 0xde, - 0x8e, 0x90, 0x97, 0xe0, 0x52, 0x37, 0x9a, 0x96, 0x49, 0xf8, 0x97, 0x35, 0xf2, 0xec, 0x4a, 0xa5, - 0x65, 0x74, 0xdd, 0x8a, 0x10, 0x2a, 0x15, 0xba, 0xb5, 0x51, 0xbb, 0x64, 0x36, 0xc9, 0x6e, 0xd0, - 0xa4, 0x16, 0xf5, 0x59, 0x59, 0x80, 0x69, 0xb6, 0x11, 0xb2, 0xe6, 0xea, 0x55, 0x9e, 0xe8, 0xd5, - 0x35, 0xbc, 0x4f, 0x17, 0xc5, 0x73, 0xbe, 0x12, 0xe4, 0xd3, 0xc2, 0x3f, 0x29, 0x77, 0xc3, 0x95, - 0xec, 0xb5, 0xb4, 0xdb, 0x75, 0xac, 0x1d, 0x0a, 0xfa, 0x92, 0xd1, 0xa6, 0x35, 0x98, 0x20, 0x35, - 0x88, 0xcb, 0xa2, 0xdc, 0x0a, 0xc7, 0x3b, 0x36, 0xde, 0xc4, 0xf6, 0x7d, 0xfa, 0xce, 0xee, 0x03, - 0x75, 0x5b, 0x37, 0xbb, 0x1d, 0xcb, 0x76, 0x4e, 0x4d, 0x12, 0xe6, 0xfb, 0x7e, 0x63, 0x1d, 0xe5, - 0x24, 0xe4, 0xa9, 0xf8, 0xd0, 0xf3, 0x73, 0xc2, 0xee, 0x9c, 0xac, 0x42, 0xb1, 0xe6, 0xd9, 0x2d, - 0x30, 0xc1, 0x7a, 0x38, 0x02, 0xd4, 0xf4, 0xad, 0x27, 0x7b, 0xd6, 0x15, 0x18, 0x15, 0xcd, 0xcb, - 0xa6, 0x3c, 0x01, 0xf2, 0x4d, 0x52, 0x2d, 0x82, 0xd9, 0xf4, 0xad, 0x57, 0xf6, 0x2f, 0x94, 0x64, - 0xd1, 0x58, 0x56, 0xf4, 0x17, 0xb2, 0x90, 0x07, 0x68, 0x1c, 0xc7, 0xc9, 0x5a, 0xf5, 0x37, 0xa5, - 0x21, 0xba, 0xcd, 0x9b, 0xe0, 0x06, 0xd6, 0x27, 0x32, 0xfb, 0x63, 0xb1, 0xb1, 0xb0, 0xe1, 0x4d, - 0x06, 0x5d, 0xab, 0xa4, 0x56, 0x2f, 0x6a, 0xee, 0x4c, 0x7e, 0xd1, 0x9d, 0x44, 0xde, 0x08, 0xd7, - 0x0f, 0xc8, 0xad, 0xd6, 0x1b, 0x95, 0xe2, 0x9a, 0x5a, 0xd8, 0xe4, 0x6d, 0x9b, 0x5a, 0xbd, 0xba, - 0xde, 0xd0, 0x36, 0x2a, 0x95, 0x72, 0x65, 0x99, 0x12, 0x73, 0x4d, 0xc2, 0x93, 0x41, 0x86, 0x73, - 0x5a, 0xb9, 0xae, 0x36, 0x4a, 0xd5, 0xca, 0x52, 0x79, 0xb9, 0x60, 0x0c, 0x32, 0x8c, 0xee, 0x57, - 0xae, 0x81, 0xab, 0x38, 0x4e, 0xca, 0xd5, 0x8a, 0x3b, 0xb3, 0x2d, 0x15, 0x2b, 0x25, 0xd5, 0x9d, - 0xc6, 0x5e, 0x50, 0x10, 0x9c, 0xa0, 0xe4, 0x1a, 0x4b, 0xe5, 0xd5, 0xf0, 0x66, 0xd4, 0xc7, 0x33, - 0xca, 0x29, 0xb8, 0x2c, 0xfc, 0xad, 0x5c, 0x39, 0x5b, 0x5c, 0x2d, 0x2f, 0x16, 0xfe, 0x28, 0xa3, - 0x5c, 0x07, 0x57, 0x73, 0x7f, 0xd1, 0x7d, 0xa5, 0x46, 0x79, 0xb1, 0xb1, 0x56, 0xae, 0xad, 0x15, - 0xeb, 0xa5, 0x95, 0xc2, 0x27, 0xc8, 0x7c, 0xc1, 0x37, 0x80, 0x43, 0x6e, 0x99, 0x2f, 0x0a, 0x8f, - 0xe9, 0x45, 0x5e, 0x51, 0x1f, 0xdb, 0x17, 0xf6, 0x78, 0x1b, 0xf6, 0xa3, 0xfe, 0xe8, 0xb0, 0xc8, - 0xa9, 0xd0, 0x2d, 0x09, 0x68, 0x25, 0xd3, 0xa1, 0xfa, 0x10, 0x2a, 0x74, 0x0d, 0x5c, 0x55, 0x51, - 0x29, 0x52, 0x9a, 0x5a, 0xaa, 0x9e, 0x55, 0xb5, 0xc6, 0xb9, 0xe2, 0xea, 0xaa, 0x5a, 0x6f, 0x2c, - 0x95, 0xb5, 0x5a, 0xbd, 0xb0, 0x89, 0xfe, 0x59, 0xf2, 0x57, 0x73, 0x42, 0xd2, 0xfa, 0x6b, 0x29, - 0x69, 0xb3, 0x8e, 0x5d, 0xb5, 0xf9, 0x09, 0xc8, 0x77, 0x1d, 0xdd, 0xd9, 0xed, 0xb2, 0x56, 0xfd, - 0xa8, 0xfe, 0xad, 0x7a, 0xbe, 0x46, 0x32, 0x69, 0x2c, 0x33, 0xfa, 0x8b, 0x4c, 0x92, 0x66, 0x3a, - 0x82, 0x05, 0x1d, 0x63, 0x08, 0x11, 0x9f, 0x06, 0xe4, 0x69, 0x7b, 0xb9, 0xd6, 0x28, 0xae, 0x6a, - 0x6a, 0x71, 0xf1, 0x3e, 0x7f, 0x19, 0x07, 0x2b, 0x27, 0xe0, 0xd8, 0x46, 0xa5, 0xb8, 0xb0, 0xaa, - 0x92, 0xe6, 0x52, 0xad, 0x54, 0xd4, 0x92, 0x2b, 0xf7, 0x5f, 0x24, 0x9b, 0x26, 0xae, 0x05, 0x4d, - 0xf8, 0x76, 0xad, 0x9c, 0x90, 0xfc, 0xbf, 0x21, 0xec, 0x5b, 0x14, 0x68, 0x58, 0x98, 0xd6, 0x68, - 0x71, 0xf8, 0xa2, 0x90, 0x3b, 0x91, 0x10, 0x27, 0xc9, 0xf0, 0xf8, 0xcf, 0x43, 0xe0, 0x71, 0x02, - 0x8e, 0x85, 0xf1, 0x20, 0x6e, 0x45, 0xd1, 0x30, 0x7c, 0x75, 0x12, 0xf2, 0x35, 0xdc, 0xc6, 0x4d, - 0x07, 0xbd, 0x25, 0x64, 0x4c, 0xcc, 0x81, 0xe4, 0xbb, 0xb1, 0x48, 0x46, 0x8b, 0x9b, 0x3e, 0x4b, - 0x3d, 0xd3, 0xe7, 0x18, 0x33, 0x40, 0x4e, 0x64, 0x06, 0x64, 0x53, 0x30, 0x03, 0x72, 0xc3, 0x9b, - 0x01, 0xf9, 0x41, 0x66, 0x00, 0x7a, 0x6d, 0x3e, 0x69, 0x2f, 0x41, 0x45, 0x7d, 0xb8, 0x83, 0xff, - 0xff, 0xca, 0x26, 0xe9, 0x55, 0xfa, 0x72, 0x9c, 0x4c, 0x8b, 0x7f, 0x20, 0xa7, 0xb0, 0xfc, 0xa0, - 0x5c, 0x0b, 0x57, 0x07, 0xef, 0x0d, 0xf5, 0x69, 0xe5, 0x5a, 0xbd, 0x46, 0x46, 0xfc, 0x52, 0x55, - 0xd3, 0x36, 0xd6, 0xe9, 0x1a, 0xf2, 0x49, 0x50, 0x02, 0x2a, 0xda, 0x46, 0x85, 0x8e, 0xef, 0x5b, - 0x3c, 0xf5, 0xa5, 0x72, 0x65, 0xb1, 0xe1, 0xb7, 0x99, 0xca, 0x52, 0xb5, 0xb0, 0xed, 0x4e, 0xd9, - 0x42, 0xd4, 0xdd, 0x01, 0x9a, 0x95, 0x50, 0xac, 0x2c, 0x36, 0xd6, 0x2a, 0xea, 0x5a, 0xb5, 0x52, - 0x2e, 0x91, 0xf4, 0x9a, 0x5a, 0x2f, 0x18, 0xee, 0x40, 0xd3, 0x63, 0x51, 0xd4, 0xd4, 0xa2, 0x56, - 0x5a, 0x51, 0x35, 0x5a, 0xe4, 0xfd, 0xca, 0xf5, 0x70, 0xa6, 0x58, 0xa9, 0xd6, 0xdd, 0x94, 0x62, - 0xe5, 0xbe, 0xfa, 0x7d, 0xeb, 0x6a, 0x63, 0x5d, 0xab, 0x96, 0xd4, 0x5a, 0xcd, 0x6d, 0xa7, 0xcc, - 0xfe, 0x28, 0xb4, 0x95, 0xa7, 0xc2, 0xed, 0x21, 0xd6, 0xd4, 0x3a, 0xd9, 0xb0, 0x5c, 0xab, 0x12, - 0x9f, 0x95, 0x45, 0xb5, 0xb1, 0x52, 0xac, 0x35, 0xca, 0x95, 0x52, 0x75, 0x6d, 0xbd, 0x58, 0x2f, - 0xbb, 0xcd, 0x79, 0x5d, 0xab, 0xd6, 0xab, 0x8d, 0xb3, 0xaa, 0x56, 0x2b, 0x57, 0x2b, 0x05, 0xd3, - 0xad, 0x72, 0xa8, 0xfd, 0x7b, 0xfd, 0xb0, 0xa5, 0x5c, 0x05, 0xa7, 0xbc, 0xf4, 0xd5, 0xaa, 0x2b, - 0xe8, 0x90, 0x45, 0xd2, 0x49, 0xd5, 0x22, 0xf9, 0x57, 0x09, 0xb2, 0x35, 0xc7, 0xea, 0xa0, 0x1f, - 0x0f, 0x3a, 0x98, 0xd3, 0x00, 0x36, 0xd9, 0x7f, 0x74, 0x67, 0x61, 0x6c, 0x5e, 0x16, 0x4a, 0x41, - 0x7f, 0x28, 0xbc, 0x69, 0x12, 0xf4, 0xd9, 0x56, 0x27, 0xc2, 0x56, 0xf9, 0x9e, 0xd8, 0x29, 0x92, - 0x68, 0x42, 0xc9, 0xf4, 0xfd, 0x97, 0x87, 0xd9, 0x16, 0x41, 0x70, 0x32, 0x04, 0x9b, 0x2b, 0x7f, - 0x4f, 0x25, 0xb0, 0x72, 0x39, 0x5c, 0xd6, 0xa3, 0x5c, 0x44, 0xa7, 0x36, 0x95, 0x1f, 0x83, 0x47, - 0x85, 0xd4, 0x5b, 0x5d, 0xab, 0x9e, 0x55, 0x7d, 0x45, 0x5e, 0x2c, 0xd6, 0x8b, 0x85, 0x2d, 0xf4, - 0x59, 0x19, 0xb2, 0x6b, 0xd6, 0x5e, 0xef, 0x5e, 0x95, 0x89, 0x2f, 0x86, 0xd6, 0x42, 0xbd, 0x57, - 0xde, 0x6b, 0x5e, 0x48, 0xec, 0x6b, 0xd1, 0xfb, 0xd2, 0x5f, 0x94, 0x92, 0x88, 0x7d, 0xed, 0xa0, - 0x9b, 0xd1, 0x7f, 0x3f, 0x8c, 0xd8, 0x23, 0x44, 0x8b, 0x95, 0x33, 0x70, 0x3a, 0xf8, 0x50, 0x5e, - 0x54, 0x2b, 0xf5, 0xf2, 0xd2, 0x7d, 0x81, 0x70, 0xcb, 0x9a, 0x90, 0xf8, 0x07, 0x75, 0x63, 0xf1, - 0x33, 0x8d, 0x53, 0x70, 0x3c, 0xf8, 0xb6, 0xac, 0xd6, 0xbd, 0x2f, 0xf7, 0xa3, 0x07, 0x73, 0x30, - 0x43, 0xbb, 0xf5, 0x8d, 0x4e, 0x4b, 0x77, 0x30, 0x7a, 0x42, 0x80, 0xee, 0x0d, 0x70, 0xb4, 0xbc, - 0xbe, 0x54, 0xab, 0x39, 0x96, 0xad, 0x6f, 0xe1, 0x62, 0xab, 0x65, 0x33, 0x69, 0xf5, 0x26, 0xa3, - 0x77, 0x0a, 0xaf, 0xf3, 0xf1, 0x43, 0x09, 0x2d, 0x33, 0x02, 0xf5, 0xaf, 0x08, 0xad, 0xcb, 0x09, - 0x10, 0x4c, 0x86, 0xfe, 0xfd, 0x23, 0x6e, 0x73, 0xd1, 0xb8, 0x6c, 0x9e, 0x79, 0x96, 0x04, 0x53, - 0x75, 0x63, 0x07, 0x3f, 0xdd, 0x32, 0x71, 0x57, 0x99, 0x00, 0x79, 0x79, 0xad, 0x5e, 0x38, 0xe2, - 0x3e, 0xb8, 0x46, 0x55, 0x86, 0x3c, 0xa8, 0x6e, 0x01, 0xee, 0x43, 0xb1, 0x5e, 0x90, 0xdd, 0x87, - 0x35, 0xb5, 0x5e, 0xc8, 0xba, 0x0f, 0x15, 0xb5, 0x5e, 0xc8, 0xb9, 0x0f, 0xeb, 0xab, 0xf5, 0x42, - 0xde, 0x7d, 0x28, 0xd7, 0xea, 0x85, 0x09, 0xf7, 0x61, 0xa1, 0x56, 0x2f, 0x4c, 0xba, 0x0f, 0x67, - 0x6b, 0xf5, 0xc2, 0x94, 0xfb, 0x50, 0xaa, 0xd7, 0x0b, 0xe0, 0x3e, 0xdc, 0x53, 0xab, 0x17, 0xa6, - 0xdd, 0x87, 0x62, 0xa9, 0x5e, 0x98, 0x21, 0x0f, 0x6a, 0xbd, 0x30, 0xeb, 0x3e, 0xd4, 0x6a, 0xf5, - 0xc2, 0x1c, 0xa1, 0x5c, 0xab, 0x17, 0x8e, 0x92, 0xb2, 0xca, 0xf5, 0x42, 0xc1, 0x7d, 0x58, 0xa9, - 0xd5, 0x0b, 0xc7, 0x48, 0xe6, 0x5a, 0xbd, 0xa0, 0x90, 0x42, 0x6b, 0xf5, 0xc2, 0x65, 0x24, 0x4f, - 0xad, 0x5e, 0x38, 0x4e, 0x8a, 0xa8, 0xd5, 0x0b, 0x27, 0x08, 0x1b, 0x6a, 0xbd, 0x70, 0x92, 0xe4, - 0xd1, 0xea, 0x85, 0xcb, 0xc9, 0xa7, 0x4a, 0xbd, 0x70, 0x8a, 0x30, 0xa6, 0xd6, 0x0b, 0x57, 0x90, - 0x07, 0xad, 0x5e, 0x40, 0xe4, 0x53, 0xb1, 0x5e, 0xb8, 0x12, 0x3d, 0x0a, 0xa6, 0x96, 0xb1, 0x43, - 0x41, 0x44, 0x05, 0x90, 0x97, 0xb1, 0x13, 0x36, 0xe3, 0xbf, 0x26, 0xc3, 0xe5, 0x6c, 0xea, 0xb7, - 0x64, 0x5b, 0x3b, 0xab, 0x78, 0x4b, 0x6f, 0x5e, 0x52, 0x1f, 0x70, 0x4d, 0xa8, 0xf0, 0xbe, 0xac, - 0x02, 0xd9, 0x4e, 0xd0, 0x19, 0x91, 0xe7, 0x58, 0x8b, 0xd3, 0x5b, 0x8c, 0x92, 0x83, 0xc5, 0x28, - 0x66, 0x91, 0xfd, 0x53, 0x58, 0xa3, 0xb9, 0xf5, 0xe3, 0x4c, 0xcf, 0xfa, 0xb1, 0xdb, 0x4c, 0x3a, - 0xd8, 0xee, 0x5a, 0xa6, 0xde, 0xae, 0xb1, 0x8d, 0x7b, 0xba, 0xea, 0xd5, 0x9b, 0xac, 0xfc, 0x94, - 0xd7, 0x32, 0xa8, 0x55, 0xf6, 0x94, 0xb8, 0x19, 0x6e, 0x6f, 0x35, 0x23, 0x1a, 0xc9, 0x27, 0xfc, - 0x46, 0x52, 0xe7, 0x1a, 0xc9, 0xdd, 0x07, 0xa0, 0x9d, 0xac, 0xbd, 0x94, 0x87, 0x9b, 0x5a, 0x04, - 0x6e, 0xad, 0xde, 0x72, 0xb5, 0x8c, 0x3e, 0x2b, 0xc1, 0x49, 0xd5, 0xec, 0x67, 0xe1, 0x87, 0x75, - 0xe1, 0x4d, 0x61, 0x68, 0xd6, 0x79, 0x91, 0xde, 0xde, 0xb7, 0xda, 0xfd, 0x69, 0x46, 0x48, 0xf4, - 0x53, 0xbe, 0x44, 0x6b, 0x9c, 0x44, 0xef, 0x1a, 0x9e, 0x74, 0x32, 0x81, 0x56, 0x46, 0xda, 0x01, - 0x65, 0xd1, 0x37, 0xb3, 0xf0, 0x28, 0xea, 0x7b, 0xc3, 0x38, 0xa4, 0xad, 0xac, 0x68, 0xb6, 0x34, - 0xdc, 0x75, 0x74, 0xdb, 0xe1, 0xce, 0x43, 0xf7, 0x4c, 0xa5, 0x32, 0x29, 0x4c, 0xa5, 0xa4, 0x81, - 0x53, 0x29, 0xf4, 0x8e, 0xb0, 0xf9, 0x70, 0x8e, 0xc7, 0xb8, 0xd8, 0xbf, 0xff, 0x8f, 0xab, 0x61, - 0x14, 0xd4, 0xbe, 0x5d, 0xf1, 0xd3, 0x1c, 0xd4, 0x4b, 0x07, 0x2e, 0x21, 0x19, 0xe2, 0x7f, 0x38, - 0x5a, 0x3b, 0x2f, 0x1b, 0xfe, 0xc6, 0x1b, 0x25, 0x85, 0x56, 0xaa, 0x06, 0xfa, 0xa7, 0x27, 0x60, - 0x8a, 0xb4, 0x85, 0x55, 0xc3, 0xbc, 0x80, 0x1e, 0x92, 0x61, 0xa6, 0x82, 0x2f, 0x96, 0xb6, 0xf5, - 0x76, 0x1b, 0x9b, 0x5b, 0x38, 0x6c, 0xb6, 0x9f, 0x82, 0x09, 0xbd, 0xd3, 0xa9, 0x04, 0xfb, 0x0c, - 0xde, 0x2b, 0xeb, 0x7f, 0xbf, 0xd1, 0xb7, 0x91, 0x67, 0x62, 0x1a, 0xb9, 0x5f, 0xee, 0x7c, 0xb8, - 0xcc, 0x88, 0x19, 0xf2, 0x35, 0x30, 0xdd, 0xf4, 0xb2, 0xf8, 0xe7, 0x26, 0xc2, 0x49, 0xe8, 0x6f, - 0x13, 0x75, 0x03, 0x42, 0x85, 0x27, 0x53, 0x0a, 0x3c, 0x62, 0x3b, 0xe4, 0x04, 0x1c, 0xab, 0x57, - 0xab, 0x8d, 0xb5, 0x62, 0xe5, 0xbe, 0xe0, 0xbc, 0xf2, 0x26, 0x7a, 0x79, 0x16, 0xe6, 0x6a, 0x56, - 0x7b, 0x0f, 0x07, 0x30, 0x95, 0x39, 0x87, 0x9c, 0xb0, 0x9c, 0x32, 0xfb, 0xe4, 0xa4, 0x9c, 0x84, - 0xbc, 0x6e, 0x76, 0x2f, 0x62, 0xcf, 0x36, 0x64, 0x6f, 0x0c, 0xc6, 0xf7, 0x87, 0xdb, 0xb1, 0xc6, - 0xc3, 0x78, 0xc7, 0x00, 0x49, 0xf2, 0x5c, 0x45, 0x00, 0x79, 0x06, 0x66, 0xba, 0x74, 0xb3, 0xb0, - 0x1e, 0xda, 0x13, 0xe6, 0xd2, 0x08, 0x8b, 0x74, 0xb7, 0x5a, 0x66, 0x2c, 0x92, 0x37, 0xf4, 0x90, - 0xdf, 0xfc, 0x37, 0x38, 0x88, 0x8b, 0x07, 0x61, 0x2c, 0x19, 0xc8, 0xaf, 0x1c, 0xf5, 0x0c, 0xef, - 0x14, 0x1c, 0x67, 0xad, 0xb6, 0x51, 0x5a, 0x29, 0xae, 0xae, 0xaa, 0x95, 0x65, 0xb5, 0x51, 0x5e, - 0xa4, 0x5b, 0x15, 0x41, 0x4a, 0xb1, 0x5e, 0x57, 0xd7, 0xd6, 0xeb, 0xb5, 0x86, 0xfa, 0xb4, 0x92, - 0xaa, 0x2e, 0x12, 0x97, 0x38, 0x72, 0xa6, 0xc5, 0x73, 0x5e, 0x2c, 0x56, 0x6a, 0xe7, 0x54, 0xad, - 0xb0, 0x7d, 0xa6, 0x08, 0xd3, 0xa1, 0x7e, 0xde, 0xe5, 0x6e, 0x11, 0x6f, 0xea, 0xbb, 0x6d, 0x66, - 0xab, 0x15, 0x8e, 0xb8, 0xdc, 0x11, 0xd9, 0x54, 0xcd, 0xf6, 0xa5, 0x42, 0x46, 0x29, 0xc0, 0x4c, - 0xb8, 0x4b, 0x2f, 0x48, 0xe8, 0xad, 0x57, 0xc1, 0xd4, 0x39, 0xcb, 0xbe, 0x40, 0xfc, 0xb8, 0xd0, - 0x7b, 0x68, 0x5c, 0x13, 0xef, 0x84, 0x68, 0x68, 0x60, 0x7f, 0xa5, 0xb8, 0xb7, 0x80, 0x47, 0x6d, - 0x7e, 0xe0, 0x29, 0xd0, 0x6b, 0x60, 0xfa, 0xa2, 0x97, 0x3b, 0x68, 0xe9, 0xa1, 0x24, 0xf4, 0xdf, - 0xc5, 0xf6, 0xff, 0x07, 0x17, 0x99, 0xfe, 0xfe, 0xf4, 0x5b, 0x24, 0xc8, 0x2f, 0x63, 0xa7, 0xd8, - 0x6e, 0x87, 0xe5, 0xf6, 0x62, 0xe1, 0x93, 0x3d, 0x5c, 0x25, 0x8a, 0xed, 0x76, 0x74, 0xa3, 0x0a, - 0x09, 0xc8, 0xf3, 0x40, 0xe7, 0xd2, 0x04, 0xfd, 0xe6, 0x06, 0x14, 0x98, 0xbe, 0xc4, 0x3e, 0x24, - 0xfb, 0x7b, 0xdc, 0x0f, 0x87, 0xac, 0x9c, 0xc7, 0x07, 0x31, 0x6d, 0x32, 0xf1, 0x7b, 0xe5, 0x5e, - 0x3e, 0xe5, 0x5e, 0x98, 0xd8, 0xed, 0xe2, 0x92, 0xde, 0xc5, 0x84, 0xb7, 0xde, 0x9a, 0x56, 0xcf, - 0xdf, 0x8f, 0x9b, 0xce, 0x7c, 0x79, 0xc7, 0x35, 0xa8, 0x37, 0x68, 0x46, 0x3f, 0x4c, 0x0c, 0x7b, - 0xd7, 0x3c, 0x0a, 0xee, 0xa4, 0xe4, 0xa2, 0xe1, 0x6c, 0x97, 0xb6, 0x75, 0x87, 0xad, 0x6d, 0xfb, - 0xef, 0xe8, 0xf9, 0x43, 0xc0, 0x19, 0xbb, 0x17, 0x1c, 0x79, 0x40, 0x30, 0x31, 0x88, 0x23, 0xd8, - 0xc0, 0x1d, 0x06, 0xc4, 0x7f, 0x90, 0x20, 0x5b, 0xed, 0x60, 0x53, 0xf8, 0x34, 0x8c, 0x2f, 0x5b, - 0xa9, 0x47, 0xb6, 0x0f, 0x89, 0x7b, 0x87, 0xf9, 0x95, 0x76, 0x4b, 0x8e, 0x90, 0xec, 0xcd, 0x90, - 0x35, 0xcc, 0x4d, 0x8b, 0x19, 0xa6, 0x57, 0x46, 0x6c, 0x02, 0x95, 0xcd, 0x4d, 0x4b, 0x23, 0x19, - 0x45, 0x1d, 0xc3, 0xe2, 0xca, 0x4e, 0x5f, 0xdc, 0xdf, 0x9a, 0x84, 0x3c, 0x55, 0x67, 0xf4, 0x22, - 0x19, 0xe4, 0x62, 0xab, 0x15, 0x21, 0x78, 0x69, 0x9f, 0xe0, 0x2d, 0xf2, 0x9b, 0x8f, 0x89, 0xff, - 0xce, 0x07, 0x33, 0x11, 0xec, 0xdb, 0x59, 0x93, 0x2a, 0xb6, 0x5a, 0xd1, 0x3e, 0xa8, 0x7e, 0x81, - 0x12, 0x5f, 0x60, 0xb8, 0x85, 0xcb, 0x62, 0x2d, 0x3c, 0xf1, 0x40, 0x10, 0xc9, 0x5f, 0xfa, 0x10, - 0xfd, 0x93, 0x04, 0x13, 0xab, 0x46, 0xd7, 0x71, 0xb1, 0x29, 0x8a, 0x60, 0x73, 0x15, 0x4c, 0x79, - 0xa2, 0x71, 0xbb, 0x3c, 0xb7, 0x3f, 0x0f, 0x12, 0xd0, 0x6b, 0xc2, 0xe8, 0xdc, 0xc3, 0xa3, 0xf3, - 0xc4, 0xf8, 0xda, 0x33, 0x2e, 0xa2, 0x4f, 0x19, 0x04, 0xc5, 0x4a, 0xbd, 0xc5, 0xfe, 0x8e, 0x2f, - 0xf0, 0x35, 0x4e, 0xe0, 0xb7, 0x0d, 0x53, 0x64, 0xfa, 0x42, 0xff, 0x9c, 0x04, 0xe0, 0x96, 0xcd, - 0x8e, 0x72, 0x3d, 0x86, 0x3b, 0xa0, 0x1d, 0x23, 0xdd, 0x97, 0x87, 0xa5, 0xbb, 0xc6, 0x4b, 0xf7, - 0x27, 0x07, 0x57, 0x35, 0xee, 0xc8, 0x96, 0x52, 0x00, 0xd9, 0xf0, 0x45, 0xeb, 0x3e, 0xa2, 0xb7, - 0xf8, 0x42, 0x5d, 0xe7, 0x84, 0x7a, 0xc7, 0x90, 0x25, 0xa5, 0x2f, 0xd7, 0xbf, 0x94, 0x60, 0xa2, - 0x86, 0x1d, 0xb7, 0x9b, 0x44, 0x67, 0x45, 0x7a, 0xf8, 0x50, 0xdb, 0x96, 0x04, 0xdb, 0xf6, 0x77, - 0x33, 0xa2, 0x81, 0x5e, 0x02, 0xc9, 0x30, 0x9e, 0x22, 0x16, 0x0f, 0x1e, 0x16, 0x0a, 0xf4, 0x32, - 0x88, 0x5a, 0xfa, 0xd2, 0x7d, 0x93, 0xe4, 0x6f, 0xcc, 0xf3, 0x27, 0x2d, 0xc2, 0x66, 0x71, 0x66, - 0xbf, 0x59, 0x2c, 0x7e, 0xd2, 0x22, 0x5c, 0xc7, 0xe8, 0x5d, 0xe9, 0xc4, 0xc6, 0xc6, 0x08, 0x36, - 0x8c, 0x87, 0x91, 0xd7, 0x33, 0x65, 0xc8, 0xb3, 0x95, 0xe5, 0xbb, 0xe2, 0x57, 0x96, 0x07, 0x4f, - 0x2d, 0xde, 0x3d, 0x84, 0x29, 0x17, 0xb7, 0xdc, 0xeb, 0xb3, 0x21, 0x85, 0xd8, 0xb8, 0x09, 0x72, - 0x24, 0x12, 0x25, 0x1b, 0xe7, 0x82, 0xbd, 0x7e, 0x8f, 0x84, 0xea, 0x7e, 0xd5, 0x68, 0xa6, 0xc4, - 0x28, 0x8c, 0x60, 0x85, 0x78, 0x18, 0x14, 0x7e, 0x53, 0x01, 0x58, 0xdf, 0x3d, 0xdf, 0x36, 0xba, - 0xdb, 0x86, 0xb9, 0x85, 0xbe, 0x9a, 0x81, 0x19, 0xf6, 0x4a, 0x03, 0x2a, 0xc6, 0x9a, 0x7f, 0x91, - 0x46, 0x41, 0x01, 0xe4, 0x5d, 0xdb, 0x60, 0xcb, 0x00, 0xee, 0xa3, 0x72, 0xa7, 0xef, 0xc8, 0x93, - 0xed, 0x39, 0x4a, 0xef, 0x8a, 0x21, 0xe0, 0x60, 0x3e, 0x54, 0x7a, 0xe0, 0xd0, 0x13, 0x8e, 0x9a, - 0x99, 0xe3, 0xa3, 0x66, 0x72, 0xe7, 0xeb, 0xf2, 0x3d, 0xe7, 0xeb, 0x5c, 0x1c, 0xbb, 0xc6, 0xd3, - 0x31, 0x71, 0x2e, 0x95, 0x35, 0xf2, 0x8c, 0x3e, 0x10, 0x4c, 0x55, 0x2c, 0x41, 0x3b, 0x37, 0x41, - 0x45, 0xaf, 0x82, 0xa9, 0xfb, 0x2d, 0xc3, 0x24, 0x5b, 0x11, 0xcc, 0x79, 0x38, 0x48, 0x40, 0x1f, - 0x11, 0x8e, 0x83, 0x15, 0x12, 0x49, 0xec, 0xa4, 0x83, 0x71, 0x20, 0xf9, 0x1c, 0x84, 0xf6, 0xf3, - 0xe2, 0x3a, 0xcc, 0x41, 0xf4, 0x93, 0xa9, 0xde, 0xce, 0x10, 0xcb, 0x2b, 0x0a, 0xcc, 0x79, 0xe7, - 0x0a, 0xab, 0x0b, 0xf7, 0xa8, 0xa5, 0x7a, 0x01, 0xef, 0x3f, 0x6b, 0x48, 0x4e, 0x15, 0xd2, 0x13, - 0x84, 0xc1, 0x12, 0x0a, 0xfa, 0x9f, 0x12, 0xe4, 0x99, 0x75, 0x70, 0xd7, 0x01, 0x21, 0x44, 0xaf, - 0x18, 0x06, 0x92, 0xd8, 0xe3, 0xdd, 0x9f, 0x4c, 0x0a, 0xc0, 0x08, 0xec, 0x81, 0xfb, 0x52, 0x03, - 0x00, 0xfd, 0x8b, 0x04, 0x59, 0xd7, 0x6a, 0x11, 0x3b, 0x3c, 0xfb, 0x09, 0x61, 0xb7, 0xd5, 0x90, - 0x00, 0x5c, 0xf2, 0x11, 0xfa, 0xbd, 0x00, 0x53, 0x1d, 0x9a, 0xd1, 0x3f, 0xba, 0x7d, 0x9d, 0x40, - 0xdf, 0x81, 0xb5, 0xe0, 0x37, 0xf4, 0x2e, 0x21, 0xd7, 0xd7, 0x78, 0x7e, 0x92, 0xc1, 0xa1, 0x8e, - 0xe2, 0x9c, 0xed, 0x26, 0xfa, 0xbe, 0x04, 0xa0, 0xe1, 0xae, 0xd5, 0xde, 0xc3, 0x1b, 0xb6, 0x81, - 0xae, 0x0c, 0x00, 0x60, 0xcd, 0x3e, 0x13, 0x34, 0xfb, 0x4f, 0x87, 0x05, 0xbf, 0xcc, 0x0b, 0xfe, - 0xf1, 0xd1, 0x9a, 0xe7, 0x11, 0x8f, 0x10, 0xff, 0x53, 0x61, 0x82, 0xc9, 0x91, 0x99, 0x80, 0x62, - 0xc2, 0xf7, 0x7e, 0x42, 0xef, 0xf5, 0x45, 0x7f, 0x0f, 0x27, 0xfa, 0x27, 0x25, 0xe6, 0x28, 0x19, - 0x00, 0xa5, 0x21, 0x00, 0x38, 0x0a, 0xd3, 0x1e, 0x00, 0x1b, 0x5a, 0xb9, 0x80, 0xd1, 0xdb, 0x65, - 0xb2, 0x5b, 0x4e, 0xc7, 0xa2, 0x83, 0xf7, 0x34, 0x5f, 0x17, 0x9e, 0x9b, 0x87, 0xe4, 0xe1, 0x97, - 0x9f, 0x12, 0x40, 0x7f, 0x2a, 0x34, 0x19, 0x17, 0x60, 0xe8, 0x91, 0xd2, 0x5f, 0x9d, 0x51, 0x61, - 0x96, 0x33, 0x22, 0x94, 0x53, 0x70, 0x9c, 0x4b, 0xa0, 0xe3, 0x5d, 0xab, 0x70, 0x44, 0x41, 0x70, - 0x92, 0xfb, 0xc2, 0x5e, 0x70, 0xab, 0x90, 0x41, 0x7f, 0xfe, 0xd9, 0x8c, 0xbf, 0x3c, 0xf3, 0xee, - 0x2c, 0x5b, 0x18, 0xfb, 0x18, 0x1f, 0x2d, 0xac, 0x69, 0x99, 0x0e, 0x7e, 0x20, 0xe4, 0xad, 0xe0, - 0x27, 0xc4, 0x5a, 0x0d, 0xa7, 0x60, 0xc2, 0xb1, 0xc3, 0x1e, 0x0c, 0xde, 0x6b, 0x58, 0xb1, 0x72, - 0xbc, 0x62, 0x55, 0xe0, 0x8c, 0x61, 0x36, 0xdb, 0xbb, 0x2d, 0xac, 0xe1, 0xb6, 0xee, 0xca, 0xb0, - 0x5b, 0xec, 0x2e, 0xe2, 0x0e, 0x36, 0x5b, 0xd8, 0x74, 0x28, 0x9f, 0xde, 0x69, 0x25, 0x81, 0x9c, - 0xbc, 0x32, 0xde, 0xc9, 0x2b, 0xe3, 0x63, 0xfa, 0xad, 0xb8, 0xc6, 0x2c, 0xcf, 0xdd, 0x06, 0x40, - 0xeb, 0x76, 0xd6, 0xc0, 0x17, 0x99, 0x1a, 0x5e, 0xd1, 0xb3, 0x48, 0x57, 0xf5, 0x33, 0x68, 0xa1, - 0xcc, 0xe8, 0xcb, 0xbe, 0xfa, 0xdd, 0xcd, 0xa9, 0xdf, 0x4d, 0x82, 0x2c, 0x24, 0xd3, 0xba, 0xce, - 0x10, 0x5a, 0x37, 0x0b, 0x53, 0xc1, 0xde, 0xad, 0xac, 0x5c, 0x01, 0x27, 0x3c, 0x6f, 0xd0, 0x8a, - 0xaa, 0x2e, 0xd6, 0x1a, 0x1b, 0xeb, 0xcb, 0x5a, 0x71, 0x51, 0x2d, 0x80, 0xab, 0x9f, 0x54, 0x2f, - 0x7d, 0x27, 0xce, 0x2c, 0xfa, 0xbc, 0x04, 0x39, 0x72, 0xd4, 0x0e, 0xfd, 0xec, 0x88, 0x34, 0xa7, - 0xcb, 0xf9, 0xbe, 0xf8, 0xe3, 0xae, 0x78, 0x14, 0x6f, 0x26, 0x4c, 0xc2, 0xd5, 0x81, 0xa2, 0x78, - 0xc7, 0x10, 0x4a, 0x7f, 0xe2, 0xe2, 0x36, 0xc9, 0xda, 0xb6, 0x75, 0xf1, 0x47, 0xb9, 0x49, 0xba, - 0xf5, 0x3f, 0xe4, 0x26, 0xd9, 0x87, 0x85, 0xb1, 0x37, 0xc9, 0x3e, 0xed, 0x2e, 0xa6, 0x99, 0xa2, - 0x67, 0xe4, 0xfc, 0xf9, 0xdf, 0xb3, 0xa4, 0x03, 0x6d, 0x55, 0x15, 0x61, 0xd6, 0x30, 0x1d, 0x6c, - 0x9b, 0x7a, 0x7b, 0xa9, 0xad, 0x6f, 0x79, 0xf6, 0x69, 0xef, 0xfe, 0x44, 0x39, 0x94, 0x47, 0xe3, - 0xff, 0x50, 0x4e, 0x03, 0x38, 0x78, 0xa7, 0xd3, 0xd6, 0x9d, 0x40, 0xf5, 0x42, 0x29, 0x61, 0xed, - 0xcb, 0xf2, 0xda, 0x77, 0x0b, 0x5c, 0x46, 0x41, 0xab, 0x5f, 0xea, 0xe0, 0x0d, 0xd3, 0xf8, 0xb9, - 0x5d, 0x12, 0x5c, 0x92, 0xea, 0x68, 0xbf, 0x4f, 0xdc, 0x86, 0x4d, 0xbe, 0x67, 0xc3, 0xe6, 0x1f, - 0x84, 0x83, 0x56, 0x78, 0xad, 0x7e, 0x40, 0xd0, 0x0a, 0xbf, 0xa5, 0xc9, 0x3d, 0x2d, 0xcd, 0x5f, - 0x46, 0xc9, 0x0a, 0x2c, 0xa3, 0x84, 0x51, 0xc9, 0x09, 0x2e, 0x41, 0xbe, 0x5a, 0x28, 0x2a, 0x46, - 0x5c, 0x35, 0xc6, 0xb0, 0xc4, 0x2d, 0xc3, 0x1c, 0x2d, 0x7a, 0xc1, 0xb2, 0x2e, 0xec, 0xe8, 0xf6, - 0x05, 0x64, 0x1f, 0x48, 0x15, 0x63, 0x77, 0x8b, 0x22, 0xb7, 0x40, 0x3f, 0x25, 0x3c, 0x67, 0xe0, - 0xc4, 0xe5, 0xf1, 0x3c, 0x9e, 0xed, 0xa2, 0x37, 0x08, 0x4d, 0x21, 0x44, 0x18, 0x4c, 0x1f, 0xd7, - 0x3f, 0xf6, 0x71, 0xf5, 0x3a, 0xfa, 0xf0, 0x4a, 0xfb, 0x28, 0x71, 0x45, 0x5f, 0x19, 0x0e, 0x3b, - 0x8f, 0xaf, 0x21, 0xb0, 0x2b, 0x80, 0x7c, 0xc1, 0x77, 0xee, 0x71, 0x1f, 0xc3, 0x15, 0xca, 0xa6, - 0x87, 0x66, 0x04, 0xcb, 0x63, 0x41, 0xf3, 0x38, 0xcf, 0x42, 0xb5, 0x93, 0x2a, 0xa6, 0x5f, 0x12, - 0xde, 0xc1, 0xea, 0x2b, 0x20, 0xca, 0xdd, 0x78, 0x5a, 0xa5, 0xd8, 0xf6, 0x97, 0x38, 0x9b, 0xe9, - 0xa3, 0xf9, 0xbc, 0x1c, 0x4c, 0x79, 0x61, 0x45, 0xc8, 0xad, 0x37, 0x3e, 0x86, 0x27, 0x21, 0xdf, - 0xb5, 0x76, 0xed, 0x26, 0x66, 0x7b, 0x8a, 0xec, 0x6d, 0x88, 0xfd, 0xaf, 0x81, 0xe3, 0xf9, 0x3e, - 0x93, 0x21, 0x9b, 0xd8, 0x64, 0x88, 0x36, 0x48, 0xe3, 0x06, 0xf8, 0xe7, 0x0b, 0x87, 0x2a, 0xe7, - 0x30, 0xab, 0x61, 0xe7, 0x91, 0x38, 0xc6, 0x7f, 0x50, 0x68, 0x77, 0x65, 0x40, 0x4d, 0x92, 0xa9, - 0x5c, 0x75, 0x08, 0x43, 0xf5, 0x4a, 0xb8, 0xdc, 0xcb, 0xc1, 0x2c, 0x54, 0x62, 0x91, 0x6e, 0x68, - 0xab, 0x05, 0x19, 0x3d, 0x33, 0x0b, 0x05, 0xca, 0x5a, 0xd5, 0x37, 0xd6, 0xd0, 0x8b, 0x33, 0x87, - 0x6d, 0x91, 0x46, 0x4f, 0x31, 0x3f, 0x23, 0x89, 0x86, 0x43, 0xe5, 0x04, 0x1f, 0xd4, 0x2e, 0x42, - 0x93, 0x86, 0x68, 0x66, 0x31, 0xca, 0x87, 0x7e, 0x3b, 0x23, 0x12, 0x5d, 0x55, 0x8c, 0xc5, 0xf4, - 0x7b, 0xa5, 0x2f, 0x64, 0xbd, 0xe8, 0x50, 0x4b, 0xb6, 0xb5, 0xb3, 0x61, 0xb7, 0xd1, 0xff, 0x29, - 0x14, 0xbc, 0x3a, 0xc2, 0xfc, 0x97, 0xa2, 0xcd, 0x7f, 0xb2, 0x64, 0xdc, 0x0e, 0xf6, 0xaa, 0xda, - 0x43, 0x0c, 0xdf, 0xca, 0xf5, 0x30, 0xa7, 0xb7, 0x5a, 0xeb, 0xfa, 0x16, 0x2e, 0xb9, 0xf3, 0x6a, - 0xd3, 0x61, 0x91, 0x63, 0x7a, 0x52, 0x63, 0xbb, 0x22, 0xf1, 0x75, 0x50, 0x0e, 0x24, 0x26, 0x9f, - 0xb1, 0x0c, 0x6f, 0xee, 0x90, 0xd0, 0xdc, 0xd6, 0x83, 0x38, 0x56, 0xec, 0x4d, 0xd0, 0x77, 0x49, - 0x80, 0xef, 0xf4, 0x35, 0xeb, 0xf7, 0x25, 0x98, 0x70, 0xe5, 0x5d, 0x6c, 0xb5, 0xd0, 0xa3, 0xb9, - 0x70, 0x6f, 0x91, 0xde, 0x63, 0xcf, 0x11, 0x76, 0xdb, 0xf3, 0x6a, 0x48, 0xe9, 0x47, 0x60, 0x12, - 0x08, 0x51, 0xe2, 0x84, 0x28, 0xe6, 0x9d, 0x17, 0x5b, 0x44, 0xfa, 0xe2, 0xfb, 0x84, 0x04, 0xb3, - 0xde, 0x3c, 0x62, 0x09, 0x3b, 0xcd, 0x6d, 0x74, 0x9b, 0xe8, 0x42, 0x13, 0x6b, 0x69, 0xfe, 0x9e, - 0x6c, 0x1b, 0xfd, 0x20, 0x93, 0x50, 0xe5, 0xb9, 0x92, 0x23, 0x56, 0xe9, 0x12, 0xe9, 0x62, 0x1c, - 0xc1, 0xf4, 0x85, 0xf9, 0x65, 0x09, 0xa0, 0x6e, 0xf9, 0x73, 0xdd, 0x03, 0x48, 0xf2, 0x85, 0xc2, - 0xdb, 0xb5, 0xac, 0xe2, 0x41, 0xb1, 0xc9, 0x7b, 0x0e, 0x41, 0xe7, 0xa3, 0x41, 0x25, 0x8d, 0xa5, - 0xad, 0x4f, 0x2d, 0xee, 0x76, 0xda, 0x46, 0x53, 0x77, 0x7a, 0x3d, 0xe6, 0xa2, 0xc5, 0x4b, 0xae, - 0x84, 0x4c, 0x64, 0x14, 0xfa, 0x65, 0x44, 0xc8, 0x92, 0x86, 0x21, 0x91, 0xbc, 0x30, 0x24, 0x82, - 0x5e, 0x30, 0x03, 0x88, 0x8f, 0x41, 0x3d, 0x65, 0x38, 0x5a, 0xed, 0x60, 0x73, 0xc1, 0xc6, 0x7a, - 0xab, 0x69, 0xef, 0xee, 0x9c, 0xef, 0x86, 0xdd, 0x3d, 0xe3, 0x75, 0x34, 0xb4, 0x74, 0x2c, 0x71, - 0x4b, 0xc7, 0xe8, 0x97, 0x64, 0xd1, 0xa0, 0x38, 0xa1, 0x0d, 0x8e, 0x10, 0x0f, 0x43, 0x0c, 0x75, - 0x89, 0x9c, 0x94, 0x7a, 0x56, 0x89, 0xb3, 0x49, 0x56, 0x89, 0xdf, 0x28, 0x14, 0x62, 0x47, 0xa8, - 0x5e, 0x63, 0xf1, 0x35, 0x9b, 0xab, 0x61, 0x27, 0x02, 0xde, 0xeb, 0x60, 0xf6, 0x7c, 0xf0, 0xc5, - 0x87, 0x98, 0x4f, 0xec, 0xe3, 0x01, 0xfa, 0xa6, 0xa4, 0x2b, 0x30, 0x3c, 0x0b, 0x11, 0xe8, 0xfa, - 0x08, 0x4a, 0x22, 0x6e, 0x66, 0x89, 0x96, 0x53, 0x62, 0xcb, 0x4f, 0x1f, 0x85, 0x8f, 0x48, 0x30, - 0x4d, 0x2e, 0xba, 0x5c, 0xb8, 0x44, 0xce, 0x2d, 0x0a, 0x1a, 0x25, 0xcf, 0x0b, 0x8b, 0x59, 0x81, - 0x6c, 0xdb, 0x30, 0x2f, 0x78, 0xfe, 0x81, 0xee, 0x73, 0x70, 0x6d, 0x9a, 0xd4, 0xe7, 0xda, 0x34, - 0x7f, 0x9f, 0xc2, 0x2f, 0xf7, 0x40, 0xf7, 0xf8, 0x0e, 0x24, 0x97, 0xbe, 0x18, 0xff, 0x2e, 0x0b, - 0xf9, 0x1a, 0xd6, 0xed, 0xe6, 0x36, 0x7a, 0xb7, 0xd4, 0x77, 0xaa, 0x30, 0xc9, 0x4f, 0x15, 0x96, - 0x60, 0x62, 0xd3, 0x68, 0x3b, 0xd8, 0xa6, 0x3e, 0xd3, 0xe1, 0xae, 0x9d, 0x36, 0xf1, 0x85, 0xb6, - 0xd5, 0xbc, 0x30, 0xcf, 0x4c, 0xf7, 0x79, 0x2f, 0xcc, 0xe6, 0xfc, 0x12, 0xf9, 0x49, 0xf3, 0x7e, - 0x76, 0x0d, 0xc2, 0xae, 0x65, 0x3b, 0x51, 0x37, 0x28, 0x44, 0x50, 0xa9, 0x59, 0xb6, 0xa3, 0xd1, - 0x1f, 0x5d, 0x98, 0x37, 0x77, 0xdb, 0xed, 0x3a, 0x7e, 0xc0, 0xf1, 0xa6, 0x6d, 0xde, 0xbb, 0x6b, - 0x2c, 0x5a, 0x9b, 0x9b, 0x5d, 0x4c, 0x17, 0x0d, 0x72, 0x1a, 0x7b, 0x53, 0x8e, 0x43, 0xae, 0x6d, - 0xec, 0x18, 0x74, 0xa2, 0x91, 0xd3, 0xe8, 0x8b, 0x72, 0x23, 0x14, 0x82, 0x39, 0x0e, 0x65, 0xf4, - 0x54, 0x9e, 0x34, 0xcd, 0x7d, 0xe9, 0xae, 0xce, 0x5c, 0xc0, 0x97, 0xba, 0xa7, 0x26, 0xc8, 0x77, - 0xf2, 0xcc, 0x1f, 0x50, 0x11, 0xd9, 0xef, 0xa0, 0x12, 0x8f, 0x9e, 0xc1, 0xda, 0xb8, 0x69, 0xd9, - 0x2d, 0x4f, 0x36, 0xd1, 0x13, 0x0c, 0x96, 0x2f, 0xd9, 0x2e, 0x45, 0xdf, 0xc2, 0xd3, 0xd7, 0xb4, - 0x77, 0xe4, 0xdd, 0x6e, 0xd3, 0x2d, 0xfa, 0x9c, 0xe1, 0x6c, 0xaf, 0x61, 0x47, 0x47, 0x7f, 0x27, - 0xf7, 0xd5, 0xb8, 0xe9, 0xff, 0x4f, 0xe3, 0x06, 0x68, 0x1c, 0x0d, 0xa0, 0xe4, 0xec, 0xda, 0xa6, - 0x2b, 0x47, 0x16, 0xb2, 0x34, 0x94, 0xa2, 0xdc, 0x01, 0x57, 0x04, 0x6f, 0xde, 0x52, 0xe9, 0x22, - 0x9b, 0xb6, 0x4e, 0x91, 0xec, 0xd1, 0x19, 0x94, 0x75, 0xb8, 0x96, 0x7e, 0x5c, 0xa9, 0xaf, 0xad, - 0xae, 0x18, 0x5b, 0xdb, 0x6d, 0x63, 0x6b, 0xdb, 0xe9, 0x96, 0xcd, 0xae, 0x83, 0xf5, 0x56, 0x75, - 0x53, 0xa3, 0x77, 0x9f, 0x00, 0xa1, 0x23, 0x92, 0x95, 0xf7, 0xa9, 0x16, 0x1b, 0xdd, 0xc2, 0x9a, - 0x12, 0xd1, 0x52, 0x9e, 0xe4, 0xb6, 0x94, 0xee, 0x6e, 0xdb, 0xc7, 0xf4, 0xaa, 0x1e, 0x4c, 0x03, - 0x55, 0xdf, 0x6d, 0x93, 0xe6, 0x42, 0x32, 0x27, 0x1d, 0xe7, 0x62, 0x38, 0x49, 0xbf, 0xd9, 0xfc, - 0x3f, 0x79, 0xc8, 0x2d, 0xdb, 0x7a, 0x67, 0x1b, 0x3d, 0x33, 0xd4, 0x3f, 0x8f, 0xaa, 0x4d, 0xf8, - 0xda, 0x29, 0x0d, 0xd2, 0x4e, 0x79, 0x80, 0x76, 0x66, 0x43, 0xda, 0x19, 0xbd, 0xa8, 0x7c, 0x06, - 0x66, 0x9a, 0x56, 0xbb, 0x8d, 0x9b, 0xae, 0x3c, 0xca, 0x2d, 0xb2, 0x9a, 0x33, 0xa5, 0x71, 0x69, - 0x24, 0x14, 0x31, 0x76, 0x6a, 0x74, 0x0d, 0x9d, 0x2a, 0x7d, 0x90, 0x80, 0x5e, 0x2c, 0x41, 0x56, - 0x6d, 0x6d, 0x61, 0x6e, 0x9d, 0x3d, 0x13, 0x5a, 0x67, 0x3f, 0x09, 0x79, 0x47, 0xb7, 0xb7, 0xb0, - 0xe3, 0xad, 0x13, 0xd0, 0x37, 0x3f, 0x42, 0xb2, 0x1c, 0x8a, 0x90, 0xfc, 0x93, 0x90, 0x75, 0x65, - 0xc6, 0xdc, 0xc8, 0xaf, 0xed, 0x07, 0x3f, 0x91, 0xfd, 0xbc, 0x5b, 0xe2, 0xbc, 0x5b, 0x6b, 0x8d, - 0xfc, 0xd0, 0x8b, 0x75, 0x6e, 0x1f, 0xd6, 0xe4, 0x1a, 0xc7, 0xa6, 0x65, 0x96, 0x77, 0xf4, 0x2d, - 0xcc, 0xaa, 0x19, 0x24, 0x78, 0x5f, 0xd5, 0x1d, 0xeb, 0x7e, 0x83, 0x05, 0x2b, 0x0e, 0x12, 0xdc, - 0x2a, 0x6c, 0x1b, 0xad, 0x16, 0x36, 0x59, 0xcb, 0x66, 0x6f, 0x67, 0x4e, 0x43, 0xd6, 0xe5, 0xc1, - 0xd5, 0x1f, 0xd7, 0x58, 0x28, 0x1c, 0x51, 0x66, 0xdc, 0x66, 0x45, 0x1b, 0x6f, 0x21, 0xc3, 0xaf, - 0xa9, 0x8a, 0xb8, 0xed, 0xd0, 0xca, 0xf5, 0x6f, 0x5c, 0x8f, 0x83, 0x9c, 0x69, 0xb5, 0xf0, 0xc0, - 0x41, 0x88, 0xe6, 0x52, 0x9e, 0x08, 0x39, 0xdc, 0x72, 0x7b, 0x05, 0x99, 0x64, 0x3f, 0x1d, 0x2f, - 0x4b, 0x8d, 0x66, 0x4e, 0xe6, 0x1b, 0xd4, 0x8f, 0xdb, 0xf4, 0x1b, 0xe0, 0xaf, 0x4c, 0xc0, 0x51, - 0xda, 0x07, 0xd4, 0x76, 0xcf, 0xbb, 0xa4, 0xce, 0x63, 0xf4, 0x70, 0xff, 0x81, 0xeb, 0x28, 0xaf, - 0xec, 0xc7, 0x21, 0xd7, 0xdd, 0x3d, 0xef, 0x1b, 0xa1, 0xf4, 0x25, 0xdc, 0x74, 0xa5, 0x91, 0x0c, - 0x67, 0xf2, 0xb0, 0xc3, 0x19, 0x37, 0x34, 0xc9, 0x5e, 0xe3, 0x0f, 0x06, 0x32, 0x7a, 0x00, 0xc2, - 0x1b, 0xc8, 0xfa, 0x0d, 0x43, 0xa7, 0x60, 0x42, 0xdf, 0x74, 0xb0, 0x1d, 0x98, 0x89, 0xec, 0xd5, - 0x1d, 0x2a, 0xcf, 0xe3, 0x4d, 0xcb, 0x76, 0xc5, 0x32, 0x45, 0x87, 0x4a, 0xef, 0x3d, 0xd4, 0x72, - 0x81, 0xdb, 0x21, 0xbb, 0x09, 0x8e, 0x99, 0xd6, 0x22, 0xee, 0x30, 0x39, 0x53, 0x14, 0x67, 0x49, - 0x0b, 0xd8, 0xff, 0x61, 0x5f, 0x57, 0x32, 0xb7, 0xbf, 0x2b, 0x41, 0x9f, 0x4e, 0x3a, 0x67, 0xee, - 0x01, 0x7a, 0x64, 0x16, 0x9a, 0xf2, 0x14, 0x98, 0x69, 0x31, 0x17, 0xad, 0xa6, 0xe1, 0xb7, 0x92, - 0xc8, 0xff, 0xb8, 0xcc, 0x81, 0x22, 0x65, 0xc3, 0x8a, 0xb4, 0x0c, 0x93, 0xe4, 0xa8, 0xb2, 0xab, - 0x49, 0xb9, 0x1e, 0x97, 0x78, 0x32, 0xad, 0xf3, 0x2b, 0x15, 0x12, 0xdb, 0x7c, 0x89, 0xfd, 0xa2, - 0xf9, 0x3f, 0x27, 0x9b, 0x7d, 0xc7, 0x4b, 0x28, 0xfd, 0xe6, 0xf8, 0x3b, 0x79, 0xb8, 0xa2, 0x64, - 0x5b, 0xdd, 0x2e, 0x39, 0x03, 0xd3, 0xdb, 0x30, 0x5f, 0x2f, 0x71, 0x77, 0x25, 0x3c, 0xa2, 0x9b, - 0x5f, 0xbf, 0x06, 0x35, 0xbe, 0xa6, 0xf1, 0x75, 0xe1, 0x20, 0x2f, 0xfe, 0xfe, 0x43, 0x84, 0xd0, - 0x7f, 0x34, 0x1a, 0xc9, 0x3b, 0x32, 0x22, 0x71, 0x67, 0x12, 0xca, 0x2a, 0xfd, 0xe6, 0xf2, 0x25, - 0x09, 0xae, 0xec, 0xe5, 0x66, 0xc3, 0xec, 0xfa, 0x0d, 0xe6, 0xea, 0x01, 0xed, 0x85, 0x8f, 0x53, - 0x12, 0x7b, 0x4b, 0x61, 0x44, 0xdd, 0x43, 0xa5, 0x45, 0x2c, 0x96, 0x04, 0x27, 0x6a, 0xe2, 0x6e, - 0x29, 0x4c, 0x4c, 0x3e, 0x7d, 0xe1, 0x7e, 0x26, 0x0b, 0x47, 0x97, 0x6d, 0x6b, 0xb7, 0xd3, 0x0d, - 0x7a, 0xa0, 0xbf, 0xee, 0xbf, 0xe1, 0x9a, 0x17, 0x31, 0x0d, 0xae, 0x81, 0x69, 0x9b, 0x59, 0x73, - 0xc1, 0xf6, 0x6b, 0x38, 0x29, 0xdc, 0x7b, 0xc9, 0x07, 0xe9, 0xbd, 0x82, 0x7e, 0x26, 0xcb, 0xf5, - 0x33, 0xbd, 0x3d, 0x47, 0xae, 0x4f, 0xcf, 0xf1, 0x57, 0x52, 0xc2, 0x41, 0xb5, 0x47, 0x44, 0x11, - 0xfd, 0x45, 0x09, 0xf2, 0x5b, 0x24, 0x23, 0xeb, 0x2e, 0x1e, 0x2b, 0x56, 0x33, 0x42, 0x5c, 0x63, - 0xbf, 0x06, 0x72, 0x95, 0xc3, 0x3a, 0x9c, 0x68, 0x80, 0x8b, 0xe7, 0x36, 0x7d, 0xa5, 0x7a, 0x28, - 0x0b, 0x33, 0x7e, 0xe9, 0xe5, 0x56, 0x17, 0x3d, 0xaf, 0xbf, 0x46, 0xcd, 0x8a, 0x68, 0xd4, 0xbe, - 0x75, 0x66, 0x7f, 0xd4, 0x91, 0x43, 0xa3, 0x4e, 0xdf, 0xd1, 0x65, 0x26, 0x62, 0x74, 0x41, 0xcf, - 0x90, 0x45, 0x6f, 0x1b, 0xe2, 0xbb, 0x56, 0x52, 0x9b, 0x47, 0xf2, 0x60, 0x21, 0x78, 0xe7, 0xd1, - 0xe0, 0x5a, 0xa5, 0xaf, 0x24, 0xef, 0x93, 0xe0, 0xd8, 0xfe, 0xce, 0xfc, 0xc7, 0x78, 0x2f, 0x34, - 0xb7, 0x4e, 0x5d, 0xdf, 0x0b, 0x8d, 0xbc, 0xf1, 0x9b, 0x74, 0xb1, 0x41, 0x43, 0x38, 0x7b, 0x6f, - 0x70, 0x27, 0x2e, 0x16, 0x16, 0x44, 0x90, 0x68, 0xfa, 0x02, 0xfc, 0x75, 0x19, 0xa6, 0x6a, 0xd8, - 0x59, 0xd5, 0x2f, 0x59, 0xbb, 0x0e, 0xd2, 0x45, 0xb7, 0xe7, 0x9e, 0x0c, 0xf9, 0x36, 0xf9, 0x85, - 0x5d, 0xe2, 0x7e, 0x4d, 0xdf, 0xfd, 0x2d, 0xe2, 0xfb, 0x43, 0x49, 0x6b, 0x2c, 0x3f, 0x1f, 0xad, - 0x45, 0x64, 0x77, 0xd4, 0xe7, 0x6e, 0x24, 0x5b, 0x3b, 0x89, 0xf6, 0x4e, 0xa3, 0x8a, 0x4e, 0x1f, - 0x96, 0x5f, 0x92, 0x61, 0xb6, 0x86, 0x9d, 0x72, 0x77, 0x49, 0xdf, 0xb3, 0x6c, 0xc3, 0xc1, 0xe1, - 0x5b, 0x1c, 0xe3, 0xa1, 0x39, 0x0d, 0x60, 0xf8, 0xbf, 0xb1, 0x18, 0x52, 0xa1, 0x14, 0xf4, 0xdb, - 0x49, 0x1d, 0x85, 0x38, 0x3e, 0x46, 0x02, 0x42, 0x22, 0x1f, 0x8b, 0xb8, 0xe2, 0xd3, 0x07, 0xe2, - 0x8b, 0x12, 0x03, 0xa2, 0x68, 0x37, 0xb7, 0x8d, 0x3d, 0xdc, 0x4a, 0x08, 0x84, 0xf7, 0x5b, 0x00, - 0x84, 0x4f, 0x28, 0xb1, 0xfb, 0x0a, 0xc7, 0xc7, 0x28, 0xdc, 0x57, 0xe2, 0x08, 0x8e, 0x25, 0x0c, - 0x94, 0xdb, 0xf5, 0xb0, 0xf5, 0xcc, 0xbb, 0x44, 0xc5, 0x1a, 0x98, 0x6c, 0x52, 0xd8, 0x64, 0x1b, - 0xaa, 0x63, 0xa1, 0x65, 0x0f, 0xd2, 0xe9, 0x6c, 0x1a, 0x1d, 0x4b, 0xdf, 0xa2, 0xd3, 0x17, 0xfa, - 0xbb, 0x64, 0x38, 0xe1, 0xc7, 0x47, 0xa9, 0x61, 0x67, 0x51, 0xef, 0x6e, 0x9f, 0xb7, 0x74, 0xbb, - 0x15, 0xbe, 0xdc, 0x7f, 0xe8, 0x13, 0x7f, 0xe8, 0x0b, 0x61, 0x10, 0x2a, 0x3c, 0x08, 0x7d, 0x5d, - 0x45, 0xfb, 0xf2, 0x32, 0x8a, 0x4e, 0x26, 0xd6, 0x9b, 0xf5, 0x77, 0x7d, 0xb0, 0x7e, 0x8a, 0x03, - 0xeb, 0xce, 0x61, 0x59, 0x4c, 0x1f, 0xb8, 0xdf, 0xa2, 0x23, 0x42, 0xc8, 0xab, 0xf9, 0x3e, 0x51, - 0xc0, 0x22, 0xbc, 0x5a, 0xe5, 0x48, 0xaf, 0xd6, 0xa1, 0xc6, 0x88, 0x81, 0x1e, 0xc9, 0xe9, 0x8e, - 0x11, 0x87, 0xe8, 0x6d, 0xfc, 0x36, 0x19, 0x0a, 0x24, 0x40, 0x56, 0xc8, 0xe3, 0x1b, 0xdd, 0x2f, - 0x8a, 0xce, 0x3e, 0xef, 0xf2, 0x89, 0xa4, 0xde, 0xe5, 0xe8, 0xad, 0x49, 0x7d, 0xc8, 0x7b, 0xb9, - 0x1d, 0x09, 0x62, 0x89, 0x5c, 0xc4, 0x07, 0x70, 0x90, 0x3e, 0x68, 0xff, 0x4d, 0x06, 0x70, 0x1b, - 0x34, 0x3b, 0xfb, 0xf0, 0x34, 0x51, 0xb8, 0x6e, 0x0e, 0xfb, 0xd5, 0xbb, 0x40, 0x9d, 0xe8, 0x01, - 0x8a, 0x52, 0x0c, 0x4e, 0x55, 0x3c, 0x9c, 0xd4, 0xb7, 0x32, 0xe0, 0x6a, 0x24, 0xb0, 0x24, 0xf2, - 0xb6, 0x8c, 0x2c, 0x3b, 0x7d, 0x40, 0xfe, 0x87, 0x04, 0xb9, 0xba, 0x55, 0xc3, 0xce, 0xc1, 0x4d, - 0x81, 0xc4, 0xc7, 0xf6, 0x49, 0xb9, 0xa3, 0x38, 0xb6, 0xdf, 0x8f, 0x50, 0xfa, 0xa2, 0x7b, 0xa7, - 0x04, 0x33, 0x75, 0xab, 0xe4, 0x2f, 0x4e, 0x89, 0xfb, 0xaa, 0x8a, 0xdf, 0x98, 0xec, 0x57, 0x30, - 0x28, 0xe6, 0x40, 0x37, 0x26, 0x0f, 0xa6, 0x97, 0xbe, 0xdc, 0x6e, 0x83, 0xa3, 0x1b, 0x66, 0xcb, - 0xd2, 0x70, 0xcb, 0x62, 0x2b, 0xdd, 0x8a, 0x02, 0xd9, 0x5d, 0xb3, 0x65, 0x11, 0x96, 0x73, 0x1a, - 0x79, 0x76, 0xd3, 0x6c, 0xdc, 0xb2, 0x98, 0x6f, 0x00, 0x79, 0x46, 0x5f, 0x97, 0x21, 0xeb, 0xfe, - 0x2b, 0x2e, 0xea, 0xb7, 0xc9, 0x09, 0x03, 0x11, 0xb8, 0xe4, 0x47, 0x62, 0x09, 0xdd, 0x15, 0x5a, - 0xfb, 0xa7, 0x1e, 0xac, 0xd7, 0x46, 0x95, 0x17, 0x12, 0x45, 0xb0, 0xe6, 0xaf, 0x9c, 0x82, 0x89, - 0xf3, 0x6d, 0xab, 0x79, 0x21, 0x38, 0x2f, 0xcf, 0x5e, 0x95, 0x1b, 0x21, 0x67, 0xeb, 0xe6, 0x16, - 0x66, 0x7b, 0x0a, 0xc7, 0x7b, 0xfa, 0x42, 0xe2, 0xf5, 0xa2, 0xd1, 0x2c, 0xe8, 0xad, 0x49, 0x42, - 0x20, 0xf4, 0xa9, 0x7c, 0x32, 0x7d, 0x58, 0x1c, 0xe2, 0x64, 0x59, 0x01, 0x66, 0x4a, 0x45, 0x7a, - 0x37, 0xf9, 0x5a, 0xf5, 0xac, 0x5a, 0x90, 0x09, 0xcc, 0xae, 0x4c, 0x52, 0x84, 0xd9, 0x25, 0xff, - 0x23, 0x0b, 0x73, 0x9f, 0xca, 0x1f, 0x06, 0xcc, 0x9f, 0x90, 0x60, 0x76, 0xd5, 0xe8, 0x3a, 0x51, - 0xde, 0xfe, 0x31, 0xf1, 0x71, 0x9f, 0x9f, 0xd4, 0x54, 0xe6, 0xca, 0x11, 0x0e, 0x8c, 0x9b, 0xc8, - 0x1c, 0x8e, 0x2b, 0x62, 0x3c, 0xc7, 0x52, 0x08, 0x07, 0xf4, 0x3e, 0x61, 0x61, 0x49, 0x26, 0x36, - 0x94, 0x82, 0x42, 0xc6, 0x6f, 0x28, 0x45, 0x96, 0x9d, 0xbe, 0x7c, 0xbf, 0x2e, 0xc1, 0x31, 0xb7, - 0xf8, 0xb8, 0x65, 0xa9, 0x68, 0x31, 0x0f, 0x5c, 0x96, 0x4a, 0xbc, 0x32, 0xbe, 0x8f, 0x97, 0x51, - 0xac, 0x8c, 0x0f, 0x22, 0x3a, 0x66, 0x31, 0x47, 0x2c, 0xc3, 0x0e, 0x12, 0x73, 0xcc, 0x32, 0xec, - 0xf0, 0x62, 0x8e, 0x5f, 0x8a, 0x1d, 0x52, 0xcc, 0x87, 0xb6, 0xc0, 0xfa, 0x5a, 0xd9, 0x17, 0x73, - 0xe4, 0xda, 0x46, 0x8c, 0x98, 0x13, 0x9f, 0xd8, 0x45, 0x6f, 0x1f, 0x52, 0xf0, 0x23, 0x5e, 0xdf, - 0x18, 0x06, 0xa6, 0x43, 0x5c, 0xe3, 0x78, 0x89, 0x0c, 0x73, 0x8c, 0x8b, 0xfe, 0x53, 0xe6, 0x18, - 0x8c, 0x12, 0x4f, 0x99, 0x13, 0x9f, 0x01, 0xe2, 0x39, 0x1b, 0xff, 0x19, 0xa0, 0xd8, 0xf2, 0xd3, - 0x07, 0xe7, 0x1b, 0x59, 0x38, 0xe9, 0xb2, 0xb0, 0x66, 0xb5, 0x8c, 0xcd, 0x4b, 0x94, 0x8b, 0xb3, - 0x7a, 0x7b, 0x17, 0x77, 0xd1, 0x7b, 0x24, 0x51, 0x94, 0xfe, 0x13, 0x80, 0xd5, 0xc1, 0x36, 0x0d, - 0xa4, 0xc6, 0x80, 0xba, 0x23, 0xaa, 0xb2, 0xfb, 0x4b, 0xf2, 0xaf, 0x8b, 0xa9, 0x7a, 0x44, 0xb4, - 0x10, 0x3d, 0xd7, 0x2a, 0x9c, 0xf2, 0xbf, 0xf4, 0x3a, 0x78, 0x64, 0xf6, 0x3b, 0x78, 0xdc, 0x00, - 0xb2, 0xde, 0x6a, 0xf9, 0x50, 0xf5, 0x6e, 0x66, 0x93, 0x32, 0x35, 0x37, 0x8b, 0x9b, 0xb3, 0x8b, - 0x83, 0xa3, 0x79, 0x11, 0x39, 0xbb, 0xd8, 0x51, 0xe6, 0x21, 0x4f, 0xef, 0x56, 0xf6, 0x57, 0xf4, - 0xfb, 0x67, 0x66, 0xb9, 0x78, 0xd3, 0xae, 0xca, 0xab, 0xe1, 0x6d, 0x89, 0x24, 0xd3, 0xaf, 0x9f, - 0x0e, 0xec, 0x64, 0x8d, 0x53, 0xb0, 0xa7, 0x0e, 0x4d, 0x79, 0x3c, 0xbb, 0x61, 0xc5, 0x4e, 0xa7, - 0x7d, 0xa9, 0xce, 0x82, 0xaf, 0x24, 0xda, 0x0d, 0x0b, 0xc5, 0x70, 0x91, 0x7a, 0x63, 0xb8, 0x24, - 0xdf, 0x0d, 0xe3, 0xf8, 0x18, 0xc5, 0x6e, 0x58, 0x1c, 0xc1, 0xf4, 0x45, 0xfb, 0xe6, 0x1c, 0xb5, - 0x9a, 0x59, 0xf4, 0xfe, 0x3f, 0xea, 0x7f, 0x08, 0x0d, 0x78, 0x67, 0x97, 0x7e, 0x81, 0xfd, 0x63, - 0x6f, 0x2d, 0x51, 0x9e, 0x08, 0xf9, 0x4d, 0xcb, 0xde, 0xd1, 0xbd, 0x8d, 0xfb, 0xde, 0x93, 0x22, - 0x2c, 0x62, 0xfe, 0x12, 0xc9, 0xa3, 0xb1, 0xbc, 0xee, 0x7c, 0xe4, 0xe9, 0x46, 0x87, 0x45, 0x5d, - 0x74, 0x1f, 0x95, 0xeb, 0x60, 0x96, 0x05, 0x5f, 0xac, 0xe0, 0xae, 0x83, 0x5b, 0x2c, 0x62, 0x05, - 0x9f, 0xa8, 0x9c, 0x81, 0x19, 0x96, 0xb0, 0x64, 0xb4, 0x71, 0x97, 0x05, 0xad, 0xe0, 0xd2, 0x94, - 0x93, 0x90, 0x37, 0xba, 0xf7, 0x74, 0x2d, 0x93, 0xf8, 0xff, 0x4f, 0x6a, 0xec, 0x4d, 0xb9, 0x01, - 0x8e, 0xb2, 0x7c, 0xbe, 0xb1, 0x4a, 0x0f, 0xec, 0xf4, 0x26, 0xbb, 0xaa, 0x65, 0x5a, 0xeb, 0xb6, - 0xb5, 0x65, 0xe3, 0x6e, 0x97, 0x9c, 0x9a, 0x9a, 0xd4, 0x42, 0x29, 0xe8, 0xb3, 0xc3, 0x4c, 0x2c, - 0x12, 0xdf, 0x64, 0xe0, 0xa2, 0xb4, 0xdb, 0x6c, 0x62, 0xdc, 0x62, 0x27, 0x9f, 0xbc, 0xd7, 0x84, - 0x77, 0x1c, 0x24, 0x9e, 0x86, 0x1c, 0xd2, 0x25, 0x07, 0x1f, 0x3a, 0x01, 0x79, 0x7a, 0x61, 0x18, - 0x7a, 0xd1, 0x5c, 0x5f, 0x65, 0x9d, 0xe3, 0x95, 0x75, 0x03, 0x66, 0x4c, 0xcb, 0x2d, 0x6e, 0x5d, - 0xb7, 0xf5, 0x9d, 0x6e, 0xdc, 0x2a, 0x23, 0xa5, 0xeb, 0x0f, 0x29, 0x95, 0xd0, 0x6f, 0x2b, 0x47, - 0x34, 0x8e, 0x8c, 0xf2, 0xff, 0x83, 0xa3, 0xe7, 0x59, 0x84, 0x80, 0x2e, 0xa3, 0x2c, 0x45, 0xfb, - 0xe0, 0xf5, 0x50, 0x5e, 0xe0, 0xff, 0x5c, 0x39, 0xa2, 0xf5, 0x12, 0x53, 0x7e, 0x06, 0xe6, 0xdc, - 0xd7, 0x96, 0x75, 0xd1, 0x63, 0x5c, 0x8e, 0x36, 0x44, 0x7a, 0xc8, 0xaf, 0x71, 0x3f, 0xae, 0x1c, - 0xd1, 0x7a, 0x48, 0x29, 0x55, 0x80, 0x6d, 0x67, 0xa7, 0xcd, 0x08, 0x67, 0xa3, 0x55, 0xb2, 0x87, - 0xf0, 0x8a, 0xff, 0xd3, 0xca, 0x11, 0x2d, 0x44, 0x42, 0x59, 0x85, 0x29, 0xe7, 0x01, 0x87, 0xd1, - 0xcb, 0x45, 0x6f, 0x7e, 0xf7, 0xd0, 0xab, 0x7b, 0xff, 0xac, 0x1c, 0xd1, 0x02, 0x02, 0x4a, 0x19, - 0x26, 0x3b, 0xe7, 0x19, 0xb1, 0x7c, 0x9f, 0x68, 0xf3, 0xfd, 0x89, 0xad, 0x9f, 0xf7, 0x69, 0xf9, - 0xbf, 0xbb, 0x8c, 0x35, 0xbb, 0x7b, 0x8c, 0xd6, 0x84, 0x30, 0x63, 0x25, 0xef, 0x1f, 0x97, 0x31, - 0x9f, 0x80, 0x52, 0x86, 0xa9, 0xae, 0xa9, 0x77, 0xba, 0xdb, 0x96, 0xd3, 0x3d, 0x35, 0xd9, 0xe3, - 0x27, 0x19, 0x4d, 0xad, 0xc6, 0xfe, 0xd1, 0x82, 0xbf, 0x95, 0x27, 0xc2, 0x89, 0x5d, 0x72, 0xf1, - 0xba, 0xfa, 0x80, 0xd1, 0x75, 0x0c, 0x73, 0xcb, 0x8b, 0x31, 0x4b, 0x7b, 0x9b, 0xfe, 0x1f, 0x95, - 0x79, 0x76, 0x62, 0x0a, 0x48, 0xdb, 0x44, 0xbd, 0x9b, 0x75, 0xb4, 0xd8, 0xd0, 0x41, 0xa9, 0xa7, - 0x40, 0xd6, 0xfd, 0x44, 0x7a, 0xa7, 0xb9, 0xfe, 0x0b, 0x81, 0xbd, 0xba, 0x43, 0x1a, 0xb0, 0xfb, - 0x53, 0x4f, 0x07, 0x37, 0xd3, 0xdb, 0xc1, 0xb9, 0x0d, 0xdc, 0xe8, 0xae, 0x19, 0x5b, 0xd4, 0xba, - 0x62, 0xfe, 0xf0, 0xe1, 0x24, 0x3a, 0x1b, 0xad, 0xe0, 0x8b, 0xf4, 0x06, 0x8d, 0xa3, 0xde, 0x6c, - 0xd4, 0x4b, 0x41, 0xd7, 0xc3, 0x4c, 0xb8, 0x91, 0xd1, 0x5b, 0x47, 0x8d, 0xc0, 0x36, 0x63, 0x6f, - 0xe8, 0x3a, 0x98, 0xe3, 0x75, 0x3a, 0x34, 0x04, 0xc9, 0x5e, 0x57, 0x88, 0xae, 0x85, 0xa3, 0x3d, - 0x0d, 0xcb, 0x8b, 0x39, 0x92, 0x09, 0x62, 0x8e, 0x5c, 0x03, 0x10, 0x68, 0x71, 0x5f, 0x32, 0x57, - 0xc3, 0x94, 0xaf, 0x97, 0x7d, 0x33, 0x7c, 0x35, 0x03, 0x93, 0x9e, 0xb2, 0xf5, 0xcb, 0xe0, 0x8e, - 0x3f, 0x66, 0x68, 0x83, 0x81, 0x4d, 0xc3, 0xb9, 0x34, 0x77, 0x9c, 0x09, 0xdc, 0x7a, 0xeb, 0x86, - 0xd3, 0xf6, 0x8e, 0xc6, 0xf5, 0x26, 0x2b, 0xeb, 0x00, 0x06, 0xc1, 0xa8, 0x1e, 0x9c, 0x95, 0xbb, - 0x25, 0x41, 0x7b, 0xa0, 0xfa, 0x10, 0xa2, 0x71, 0xe6, 0xc7, 0xd8, 0x41, 0xb6, 0x29, 0xc8, 0xd1, - 0x40, 0xeb, 0x47, 0x94, 0x39, 0x00, 0xf5, 0x69, 0xeb, 0xaa, 0x56, 0x56, 0x2b, 0x25, 0xb5, 0x90, - 0x41, 0x2f, 0x95, 0x60, 0xca, 0x6f, 0x04, 0x7d, 0x2b, 0xa9, 0x32, 0xd5, 0x1a, 0x78, 0xb1, 0xe3, - 0xfe, 0x46, 0x15, 0x56, 0xb2, 0x27, 0xc3, 0xe5, 0xbb, 0x5d, 0xbc, 0x64, 0xd8, 0x5d, 0x47, 0xb3, - 0x2e, 0x2e, 0x59, 0xb6, 0x1f, 0x55, 0x99, 0x45, 0x38, 0x8d, 0xfa, 0xec, 0x5a, 0x1c, 0x2d, 0x4c, - 0x0e, 0x4d, 0x61, 0x9b, 0xad, 0x1c, 0x07, 0x09, 0x2e, 0x5d, 0xc7, 0xd6, 0xcd, 0x6e, 0xc7, 0xea, - 0x62, 0xcd, 0xba, 0xd8, 0x2d, 0x9a, 0xad, 0x92, 0xd5, 0xde, 0xdd, 0x31, 0xbb, 0xcc, 0x66, 0x88, - 0xfa, 0xec, 0x4a, 0x87, 0x5c, 0xdb, 0x3a, 0x07, 0x50, 0xaa, 0xae, 0xae, 0xaa, 0xa5, 0x7a, 0xb9, - 0x5a, 0x29, 0x1c, 0x71, 0xa5, 0x55, 0x2f, 0x2e, 0xac, 0xba, 0xd2, 0xf9, 0x59, 0x98, 0xf4, 0xda, - 0x34, 0x0b, 0x93, 0x92, 0xf1, 0xc2, 0xa4, 0x28, 0x45, 0x98, 0xf4, 0x5a, 0x39, 0x1b, 0x11, 0x1e, - 0xdd, 0x7b, 0x2c, 0x76, 0x47, 0xb7, 0x1d, 0xe2, 0x4f, 0xed, 0x11, 0x59, 0xd0, 0xbb, 0x58, 0xf3, - 0x7f, 0x3b, 0xf3, 0x38, 0xc6, 0x81, 0x02, 0x73, 0xc5, 0xd5, 0xd5, 0x46, 0x55, 0x6b, 0x54, 0xaa, - 0xf5, 0x95, 0x72, 0x65, 0x99, 0x8e, 0x90, 0xe5, 0xe5, 0x4a, 0x55, 0x53, 0xe9, 0x00, 0x59, 0x2b, - 0x64, 0xe8, 0xb5, 0xc1, 0x0b, 0x93, 0x90, 0xef, 0x10, 0xe9, 0xa2, 0x2f, 0xc9, 0x09, 0xcf, 0xc3, - 0xfb, 0x38, 0x45, 0x5c, 0x6c, 0xca, 0xf9, 0xa4, 0x4b, 0x7d, 0xce, 0x8c, 0x9e, 0x81, 0x19, 0x6a, - 0xeb, 0x75, 0xc9, 0xf2, 0x3e, 0x41, 0x4e, 0xd6, 0xb8, 0x34, 0xf4, 0x11, 0x29, 0xc1, 0x21, 0xf9, - 0xbe, 0x1c, 0x25, 0x33, 0x2e, 0xfe, 0x3c, 0x33, 0xdc, 0xb5, 0x04, 0xe5, 0x4a, 0x5d, 0xd5, 0x2a, - 0xc5, 0x55, 0x96, 0x45, 0x56, 0x4e, 0xc1, 0xf1, 0x4a, 0x95, 0xc5, 0xfc, 0xab, 0x35, 0xea, 0xd5, - 0x46, 0x79, 0x6d, 0xbd, 0xaa, 0xd5, 0x0b, 0x39, 0xe5, 0x24, 0x28, 0xf4, 0xb9, 0x51, 0xae, 0x35, - 0x4a, 0xc5, 0x4a, 0x49, 0x5d, 0x55, 0x17, 0x0b, 0x79, 0xe5, 0x31, 0x70, 0x2d, 0xbd, 0xe6, 0xa6, - 0xba, 0xd4, 0xd0, 0xaa, 0xe7, 0x6a, 0x2e, 0x82, 0x9a, 0xba, 0x5a, 0x74, 0x15, 0x29, 0x74, 0x7d, - 0xf0, 0x84, 0x72, 0x19, 0x1c, 0x25, 0x57, 0x83, 0xaf, 0x56, 0x8b, 0x8b, 0xac, 0xbc, 0x49, 0xe5, - 0x2a, 0x38, 0x55, 0xae, 0xd4, 0x36, 0x96, 0x96, 0xca, 0xa5, 0xb2, 0x5a, 0xa9, 0x37, 0xd6, 0x55, - 0x6d, 0xad, 0x5c, 0xab, 0xb9, 0xff, 0x16, 0xa6, 0xc8, 0xe5, 0xac, 0xb4, 0xcf, 0x44, 0xef, 0x96, - 0x61, 0xf6, 0xac, 0xde, 0x36, 0xdc, 0x81, 0x82, 0xdc, 0xda, 0xdc, 0x73, 0x9c, 0xc4, 0x21, 0xb7, - 0x3b, 0x33, 0x87, 0x74, 0xf2, 0x82, 0x7e, 0x51, 0x4e, 0x78, 0x9c, 0x84, 0x01, 0x41, 0x4b, 0x9c, - 0xe7, 0x4a, 0x8b, 0x98, 0xfc, 0xbc, 0x5a, 0x4a, 0x70, 0x9c, 0x44, 0x9c, 0x7c, 0x32, 0xf0, 0x5f, - 0x36, 0x2a, 0xf0, 0x0b, 0x30, 0xb3, 0x51, 0x29, 0x6e, 0xd4, 0x57, 0xaa, 0x5a, 0xf9, 0xa7, 0x49, - 0x34, 0xf2, 0x59, 0x98, 0x5a, 0xaa, 0x6a, 0x0b, 0xe5, 0xc5, 0x45, 0xb5, 0x52, 0xc8, 0x29, 0x97, - 0xc3, 0x65, 0x35, 0x55, 0x3b, 0x5b, 0x2e, 0xa9, 0x8d, 0x8d, 0x4a, 0xf1, 0x6c, 0xb1, 0xbc, 0x4a, - 0xfa, 0x88, 0x7c, 0xcc, 0x8d, 0xd3, 0x13, 0xe8, 0xe7, 0xb3, 0x00, 0xb4, 0xea, 0xe4, 0x32, 0x9e, - 0xd0, 0xbd, 0xc4, 0x9f, 0x4f, 0x3a, 0x69, 0x08, 0xc8, 0x44, 0xb4, 0xdf, 0x32, 0x4c, 0xda, 0xec, - 0x03, 0x5b, 0x5e, 0x19, 0x44, 0x87, 0x3e, 0x7a, 0xd4, 0x34, 0xff, 0x77, 0xf4, 0x9e, 0x24, 0x73, - 0x84, 0x48, 0xc6, 0x92, 0x21, 0xb9, 0x34, 0x1a, 0x20, 0xd1, 0xf3, 0x32, 0x30, 0xc7, 0x57, 0xcc, - 0xad, 0x04, 0x31, 0xa6, 0xc4, 0x2a, 0xc1, 0xff, 0x1c, 0x32, 0xb2, 0xce, 0x3c, 0x81, 0x0d, 0xa7, - 0xe0, 0xb5, 0x4c, 0x7a, 0x32, 0xdc, 0xb3, 0x58, 0x0a, 0x19, 0x97, 0x79, 0xd7, 0xe8, 0x28, 0x48, - 0xca, 0x04, 0xc8, 0xf5, 0x07, 0x9c, 0x82, 0x8c, 0xbe, 0x2a, 0xc3, 0x2c, 0x77, 0xf1, 0x31, 0x7a, - 0x75, 0x46, 0xe4, 0x52, 0xd2, 0xd0, 0x95, 0xca, 0x99, 0x83, 0x5e, 0xa9, 0x7c, 0xe6, 0x66, 0x98, - 0x60, 0x69, 0x44, 0xbe, 0xd5, 0x8a, 0x6b, 0x0a, 0x1c, 0x85, 0xe9, 0x65, 0xb5, 0xde, 0xa8, 0xd5, - 0x8b, 0x5a, 0x5d, 0x5d, 0x2c, 0x64, 0xdc, 0x81, 0x4f, 0x5d, 0x5b, 0xaf, 0xdf, 0x57, 0x90, 0x92, - 0x7b, 0xe8, 0xf5, 0x32, 0x32, 0x66, 0x0f, 0xbd, 0xb8, 0xe2, 0xd3, 0x9f, 0xab, 0x7e, 0x5a, 0x86, - 0x02, 0xe5, 0x40, 0x7d, 0xa0, 0x83, 0x6d, 0x03, 0x9b, 0x4d, 0x8c, 0x2e, 0x88, 0x44, 0x04, 0xdd, - 0x17, 0x2b, 0x8f, 0xf4, 0xe7, 0x21, 0x2b, 0x91, 0xbe, 0xf4, 0x18, 0xd8, 0xd9, 0x7d, 0x06, 0xf6, - 0xa7, 0x92, 0xba, 0xe8, 0xf5, 0xb2, 0x3b, 0x12, 0xc8, 0x3e, 0x9e, 0xc4, 0x45, 0x6f, 0x00, 0x07, - 0x63, 0x09, 0xf4, 0x1b, 0x31, 0xfe, 0x16, 0x64, 0xf4, 0x5c, 0x19, 0x8e, 0x2e, 0xea, 0x0e, 0x5e, - 0xb8, 0x54, 0xf7, 0x2e, 0x26, 0x8c, 0xb8, 0x4c, 0x38, 0xb3, 0xef, 0x32, 0xe1, 0xe0, 0x6e, 0x43, - 0xa9, 0xe7, 0x6e, 0x43, 0xf4, 0x8e, 0xa4, 0x87, 0xfa, 0x7a, 0x78, 0x18, 0x59, 0x34, 0xde, 0x64, - 0x87, 0xf5, 0xe2, 0xb9, 0x18, 0xc3, 0xdd, 0xfe, 0x53, 0x50, 0xa0, 0xac, 0x84, 0xbc, 0xd0, 0x7e, - 0x9d, 0xdd, 0xbf, 0xdd, 0x48, 0x10, 0xf4, 0xcf, 0x0b, 0xa3, 0x20, 0xf1, 0x61, 0x14, 0xb8, 0x45, - 0x4d, 0xb9, 0xd7, 0x73, 0x20, 0x69, 0x67, 0x18, 0x72, 0x39, 0x8b, 0x8e, 0xb3, 0x9a, 0x5e, 0x67, - 0x18, 0x5b, 0xfc, 0x78, 0xee, 0x88, 0x65, 0xf7, 0x3c, 0xaa, 0xa2, 0xc8, 0xc4, 0x5f, 0x85, 0x9d, - 0xd4, 0xff, 0x98, 0x73, 0xf9, 0x8b, 0xb9, 0x1f, 0x3a, 0x3d, 0xff, 0xe3, 0x41, 0x1c, 0xa4, 0x8f, - 0xc2, 0x0f, 0x24, 0xc8, 0xd6, 0x2c, 0xdb, 0x19, 0x15, 0x06, 0x49, 0xf7, 0x4c, 0x43, 0x12, 0xa8, - 0x45, 0xcf, 0x39, 0xd3, 0xdb, 0x33, 0x8d, 0x2f, 0x7f, 0x0c, 0x71, 0x13, 0x8f, 0xc2, 0x1c, 0xe5, - 0xc4, 0xbf, 0x54, 0xe4, 0xfb, 0x12, 0xed, 0xaf, 0xee, 0x15, 0x45, 0xe4, 0x0c, 0xcc, 0x84, 0xf6, - 0x2c, 0x3d, 0x50, 0xb8, 0x34, 0xf4, 0xfa, 0x30, 0x2e, 0x8b, 0x3c, 0x2e, 0xfd, 0x66, 0xdc, 0xfe, - 0xbd, 0x1c, 0xa3, 0xea, 0x99, 0x92, 0x84, 0x60, 0x8c, 0x29, 0x3c, 0x7d, 0x44, 0x1e, 0x94, 0x21, - 0xcf, 0x7c, 0xc6, 0x46, 0x8a, 0x40, 0xd2, 0x96, 0xe1, 0x0b, 0x41, 0xcc, 0xb7, 0x4c, 0x1e, 0x75, - 0xcb, 0x88, 0x2f, 0x3f, 0x7d, 0x1c, 0xfe, 0x9d, 0x39, 0x43, 0x16, 0xf7, 0x74, 0xa3, 0xad, 0x9f, - 0x6f, 0x27, 0x08, 0x7d, 0xfc, 0x91, 0x84, 0xc7, 0xbf, 0xfc, 0xaa, 0x72, 0xe5, 0x45, 0x48, 0xfc, - 0x27, 0x60, 0xca, 0xf6, 0x97, 0x24, 0xbd, 0xd3, 0xf1, 0x3d, 0x8e, 0xa8, 0xec, 0xbb, 0x16, 0xe4, - 0x4c, 0x74, 0xd6, 0x4b, 0x88, 0x9f, 0xb1, 0x9c, 0x4d, 0x99, 0x2e, 0xb6, 0x5a, 0x4b, 0x58, 0x77, - 0x76, 0x6d, 0xdc, 0x4a, 0x34, 0x44, 0xf0, 0x22, 0x9a, 0x0a, 0x4b, 0x82, 0x0b, 0x3e, 0xb8, 0xca, - 0xa3, 0xf3, 0xa4, 0x01, 0xbd, 0x81, 0xc7, 0xcb, 0x48, 0xba, 0xa4, 0x37, 0xfb, 0x90, 0x54, 0x39, - 0x48, 0x9e, 0x32, 0x1c, 0x13, 0x63, 0xb8, 0xd0, 0x5d, 0x86, 0x39, 0x6a, 0x27, 0x8c, 0x1a, 0x93, - 0x3f, 0x48, 0xe8, 0x63, 0x12, 0xba, 0xb6, 0x29, 0xcc, 0xce, 0x48, 0x60, 0x49, 0xe2, 0x91, 0x22, - 0xc6, 0x47, 0xfa, 0xc8, 0x7c, 0x36, 0x0f, 0x10, 0xf2, 0x1b, 0xfc, 0x48, 0x3e, 0x08, 0x04, 0x88, - 0xde, 0xca, 0xe6, 0x1f, 0x35, 0x2e, 0x2a, 0x75, 0xc8, 0x27, 0xd0, 0xdf, 0x90, 0xe2, 0x13, 0x85, - 0x46, 0x95, 0x3f, 0x4f, 0x68, 0xf3, 0x32, 0xaf, 0xbd, 0x81, 0x83, 0xfb, 0x90, 0xbd, 0xdc, 0x47, - 0x13, 0x18, 0xbf, 0x83, 0x58, 0x49, 0x86, 0xda, 0xea, 0x10, 0x33, 0xfb, 0x53, 0x70, 0x5c, 0x53, - 0x8b, 0x8b, 0xd5, 0xca, 0xea, 0x7d, 0xe1, 0x3b, 0x7c, 0x0a, 0x72, 0x78, 0x72, 0x92, 0x0a, 0x6c, - 0xaf, 0x49, 0xd8, 0x07, 0xf2, 0xb2, 0x8a, 0xbd, 0xa1, 0xfe, 0xe3, 0x09, 0x7a, 0x35, 0x01, 0xb2, - 0x87, 0x89, 0xc2, 0x83, 0x10, 0x6a, 0x46, 0xcf, 0x91, 0xa1, 0xe0, 0x8e, 0x87, 0x94, 0x4b, 0x76, - 0x59, 0x5b, 0x95, 0x77, 0x2b, 0xec, 0xd0, 0xfd, 0xa7, 0xc0, 0xad, 0xd0, 0x4b, 0x50, 0xae, 0x87, - 0xb9, 0xe6, 0x36, 0x6e, 0x5e, 0x28, 0x9b, 0xde, 0xbe, 0x3a, 0xdd, 0x84, 0xed, 0x49, 0xe5, 0x81, - 0xb9, 0x97, 0x07, 0x86, 0x9f, 0x44, 0x73, 0x83, 0x74, 0x98, 0xa9, 0x08, 0x5c, 0xfe, 0xc8, 0xc7, - 0xa5, 0xc2, 0xe1, 0x72, 0xfb, 0x50, 0x54, 0x93, 0xc1, 0x52, 0x19, 0x02, 0x16, 0x04, 0x27, 0xab, - 0xeb, 0xf5, 0x72, 0xb5, 0xd2, 0xd8, 0xa8, 0xa9, 0x8b, 0x8d, 0x05, 0x0f, 0x9c, 0x5a, 0x41, 0x46, - 0xdf, 0x94, 0x60, 0x82, 0xb2, 0xd5, 0x45, 0x8f, 0x0d, 0x20, 0x18, 0xe8, 0x4f, 0x89, 0xde, 0x22, - 0x1c, 0x1d, 0xc1, 0x17, 0x04, 0x2b, 0x27, 0xa2, 0x9f, 0x7a, 0x32, 0x4c, 0x50, 0x90, 0xbd, 0x15, - 0xad, 0xd3, 0x11, 0xbd, 0x14, 0x23, 0xa3, 0x79, 0xd9, 0x05, 0x23, 0x25, 0x0c, 0x60, 0x23, 0xfd, - 0x91, 0xe5, 0x19, 0x59, 0x6a, 0x06, 0x9f, 0x33, 0x9c, 0x6d, 0xe2, 0x6e, 0x89, 0x7e, 0x4a, 0x64, - 0x79, 0xf1, 0x26, 0xc8, 0xed, 0xb9, 0xb9, 0x07, 0xb8, 0xae, 0xd2, 0x4c, 0xe8, 0x65, 0xc2, 0x81, - 0x39, 0x39, 0xfd, 0xf4, 0x79, 0x8a, 0x00, 0x67, 0x0d, 0xb2, 0x6d, 0xa3, 0xeb, 0xb0, 0xf1, 0xe3, - 0xb6, 0x44, 0x84, 0xbc, 0x87, 0xb2, 0x83, 0x77, 0x34, 0x42, 0x06, 0xdd, 0x03, 0x33, 0xe1, 0x54, - 0x01, 0xf7, 0xdd, 0x53, 0x30, 0xc1, 0x8e, 0x95, 0xb1, 0x25, 0x56, 0xef, 0x55, 0x70, 0x59, 0x53, - 0xa8, 0xb6, 0xe9, 0xeb, 0xc0, 0xff, 0x7d, 0x14, 0x26, 0x56, 0x8c, 0xae, 0x63, 0xd9, 0x97, 0xd0, - 0xc3, 0x19, 0x98, 0x38, 0x8b, 0xed, 0xae, 0x61, 0x99, 0xfb, 0x5c, 0x0d, 0xae, 0x81, 0xe9, 0x8e, - 0x8d, 0xf7, 0x0c, 0x6b, 0xb7, 0x1b, 0x2c, 0xce, 0x84, 0x93, 0x14, 0x04, 0x93, 0xfa, 0xae, 0xb3, - 0x6d, 0xd9, 0x41, 0x34, 0x0a, 0xef, 0x5d, 0x39, 0x0d, 0x40, 0x9f, 0x2b, 0xfa, 0x0e, 0x66, 0x0e, - 0x14, 0xa1, 0x14, 0x45, 0x81, 0xac, 0x63, 0xec, 0x60, 0x16, 0x9e, 0x96, 0x3c, 0xbb, 0x02, 0x26, - 0xa1, 0xde, 0x58, 0x48, 0x3d, 0x59, 0xf3, 0x5e, 0xd1, 0x17, 0x64, 0x98, 0x5e, 0xc6, 0x0e, 0x63, - 0xb5, 0x8b, 0x9e, 0x9f, 0x11, 0xba, 0x11, 0xc2, 0x1d, 0x63, 0xdb, 0x7a, 0xd7, 0xfb, 0xcf, 0x5f, - 0x82, 0xe5, 0x13, 0x83, 0x58, 0xb9, 0x72, 0x38, 0x50, 0x36, 0x09, 0x9c, 0xe6, 0x94, 0xa9, 0x5f, - 0x26, 0xcb, 0xcc, 0x36, 0x41, 0xf6, 0x7f, 0x40, 0xef, 0x94, 0x44, 0x0f, 0x1d, 0x33, 0xd9, 0xcf, - 0x87, 0xea, 0x13, 0xd9, 0x1d, 0x4d, 0xee, 0xb1, 0x1c, 0xfb, 0x62, 0xa0, 0x87, 0x29, 0x31, 0x32, - 0x9a, 0x9f, 0x5b, 0xf0, 0xb8, 0xf2, 0x60, 0x4e, 0xd2, 0xd7, 0xc6, 0xef, 0xca, 0x30, 0x5d, 0xdb, - 0xb6, 0x2e, 0x7a, 0x72, 0xfc, 0x59, 0x31, 0x60, 0xaf, 0x82, 0xa9, 0xbd, 0x1e, 0x50, 0x83, 0x84, - 0xe8, 0x3b, 0xda, 0xd1, 0xb3, 0xe5, 0xa4, 0x30, 0x85, 0x98, 0x1b, 0xf9, 0x0d, 0xea, 0xca, 0x93, - 0x60, 0x82, 0x71, 0xcd, 0x96, 0x5c, 0xe2, 0x01, 0xf6, 0x32, 0x87, 0x2b, 0x98, 0xe5, 0x2b, 0x98, - 0x0c, 0xf9, 0xe8, 0xca, 0xa5, 0x8f, 0xfc, 0x9f, 0x48, 0x24, 0x58, 0x85, 0x07, 0x7c, 0x69, 0x04, - 0xc0, 0xa3, 0xef, 0x65, 0x44, 0x17, 0x26, 0x7d, 0x09, 0xf8, 0x1c, 0x1c, 0xe8, 0xb6, 0x97, 0x81, - 0xe4, 0xd2, 0x97, 0xe7, 0x4b, 0xb3, 0x30, 0xb3, 0x68, 0x6c, 0x6e, 0xfa, 0x9d, 0xe4, 0x0b, 0x04, - 0x3b, 0xc9, 0x68, 0x77, 0x00, 0xd7, 0xce, 0xdd, 0xb5, 0x6d, 0x6c, 0x7a, 0x95, 0x62, 0xcd, 0xa9, - 0x27, 0x55, 0xb9, 0x01, 0x8e, 0x7a, 0xe3, 0x42, 0xb8, 0xa3, 0x9c, 0xd2, 0x7a, 0x93, 0xd1, 0x77, - 0x84, 0x77, 0xb5, 0x3c, 0x89, 0x86, 0xab, 0x14, 0xd1, 0x00, 0xef, 0x80, 0xd9, 0x6d, 0x9a, 0x9b, - 0x4c, 0xfd, 0xbd, 0xce, 0xf2, 0x64, 0x4f, 0x30, 0xe0, 0x35, 0xdc, 0xed, 0xea, 0x5b, 0x58, 0xe3, - 0x33, 0xf7, 0x34, 0x5f, 0x39, 0xc9, 0xd5, 0x56, 0x62, 0x1b, 0x64, 0x02, 0x35, 0x19, 0x83, 0x76, - 0x9c, 0x81, 0xec, 0x92, 0xd1, 0xc6, 0xe8, 0x97, 0x25, 0x98, 0xd2, 0x70, 0xd3, 0x32, 0x9b, 0xee, - 0x5b, 0xc8, 0x39, 0xe8, 0x1f, 0x33, 0xa2, 0x57, 0x3a, 0xba, 0x74, 0xe6, 0x7d, 0x1a, 0x11, 0xed, - 0x46, 0xec, 0xea, 0xc6, 0x58, 0x52, 0x63, 0xb8, 0x80, 0xc3, 0x9d, 0x7a, 0x6c, 0x6e, 0xb6, 0x2d, - 0x9d, 0x5b, 0xfc, 0xea, 0x35, 0x85, 0x6e, 0x84, 0x82, 0x77, 0x06, 0xc4, 0x72, 0xd6, 0x0d, 0xd3, - 0xf4, 0x0f, 0x19, 0xef, 0x4b, 0xe7, 0xf7, 0x6d, 0x63, 0xe3, 0xb4, 0x90, 0xba, 0xb3, 0xd2, 0x23, - 0x34, 0xfb, 0x7a, 0x98, 0x3b, 0x7f, 0xc9, 0xc1, 0x5d, 0x96, 0x8b, 0x15, 0x9b, 0xd5, 0x7a, 0x52, - 0x43, 0x51, 0x96, 0xe3, 0xe2, 0xb9, 0xc4, 0x14, 0x98, 0x4c, 0xd4, 0x2b, 0x43, 0xcc, 0x00, 0x8f, - 0x43, 0xa1, 0x52, 0x5d, 0x54, 0x89, 0xaf, 0x9a, 0xe7, 0xfd, 0xb3, 0x85, 0x5e, 0x28, 0xc3, 0x0c, - 0x71, 0x26, 0xf1, 0x50, 0xb8, 0x56, 0x60, 0x3e, 0x82, 0xbe, 0x2c, 0xec, 0xc7, 0x46, 0xaa, 0x1c, - 0x2e, 0x20, 0x5a, 0xd0, 0x9b, 0x46, 0xbb, 0x57, 0xd0, 0x39, 0xad, 0x27, 0xb5, 0x0f, 0x20, 0x72, - 0x5f, 0x40, 0x7e, 0x4f, 0xc8, 0x99, 0x6d, 0x10, 0x77, 0x87, 0x85, 0xca, 0xef, 0xcb, 0x30, 0xed, - 0x4e, 0x52, 0x3c, 0x50, 0xaa, 0x1c, 0x28, 0x96, 0xd9, 0xbe, 0x14, 0x2c, 0x8b, 0x78, 0xaf, 0x89, - 0x1a, 0xc9, 0x5f, 0x0a, 0xcf, 0xdc, 0x89, 0x88, 0x42, 0xbc, 0x8c, 0x09, 0xbf, 0xf7, 0x0a, 0xcd, - 0xe7, 0x07, 0x30, 0x77, 0x58, 0xf0, 0x7d, 0x3d, 0x07, 0xf9, 0x8d, 0x0e, 0x41, 0xee, 0x65, 0xb2, - 0x48, 0xc4, 0xf2, 0x7d, 0x07, 0x19, 0x5c, 0x33, 0xab, 0x6d, 0x35, 0xf5, 0xf6, 0x7a, 0x70, 0x22, - 0x2c, 0x48, 0x50, 0x6e, 0x67, 0xbe, 0x8d, 0xf4, 0xb8, 0xdd, 0xf5, 0xb1, 0xc1, 0xbc, 0x89, 0x8c, - 0x42, 0x87, 0x46, 0x6e, 0x82, 0x63, 0x2d, 0xa3, 0xab, 0x9f, 0x6f, 0x63, 0xd5, 0x6c, 0xda, 0x97, - 0xa8, 0x38, 0xd8, 0xb4, 0x6a, 0xdf, 0x07, 0xe5, 0x4e, 0xc8, 0x75, 0x9d, 0x4b, 0x6d, 0x3a, 0x4f, - 0x0c, 0x9f, 0x31, 0x89, 0x2c, 0xaa, 0xe6, 0x66, 0xd7, 0xe8, 0x5f, 0x61, 0x17, 0xa5, 0x09, 0xc1, - 0xfb, 0x9c, 0x9f, 0x00, 0x79, 0xcb, 0x36, 0xb6, 0x0c, 0x7a, 0x3f, 0xcf, 0xdc, 0xbe, 0x98, 0x75, - 0xd4, 0x14, 0xa8, 0x92, 0x2c, 0x1a, 0xcb, 0xaa, 0x3c, 0x09, 0xa6, 0x8c, 0x1d, 0x7d, 0x0b, 0xdf, - 0x6b, 0x98, 0xf4, 0x44, 0xdf, 0xdc, 0xad, 0xa7, 0xf6, 0x1d, 0x9f, 0x61, 0xdf, 0xb5, 0x20, 0x2b, - 0x7a, 0xaf, 0x24, 0x1a, 0x58, 0x87, 0xd4, 0x8d, 0x82, 0x3a, 0x96, 0x7b, 0xad, 0xd1, 0x2b, 0x85, - 0x42, 0xde, 0x44, 0xb3, 0x95, 0xfe, 0xe0, 0xfd, 0x39, 0x09, 0x26, 0x17, 0xad, 0x8b, 0x26, 0x51, - 0xf4, 0xdb, 0xc4, 0x6c, 0xdd, 0x3e, 0x87, 0x1c, 0xf9, 0x6b, 0x23, 0x63, 0x4f, 0x34, 0x90, 0xda, - 0x7a, 0x45, 0x46, 0xc0, 0x10, 0xdb, 0x72, 0x04, 0x2f, 0xf3, 0x8b, 0x2b, 0x27, 0x7d, 0xb9, 0xfe, - 0xa9, 0x0c, 0xd9, 0x45, 0xdb, 0xea, 0xa0, 0x37, 0x67, 0x12, 0xb8, 0x2c, 0xb4, 0x6c, 0xab, 0x53, - 0x27, 0xb7, 0x71, 0x05, 0xc7, 0x38, 0xc2, 0x69, 0xca, 0x6d, 0x30, 0xd9, 0xb1, 0xba, 0x86, 0xe3, - 0x4d, 0x23, 0xe6, 0x6e, 0x7d, 0x54, 0xdf, 0xd6, 0xbc, 0xce, 0x32, 0x69, 0x7e, 0x76, 0xb7, 0xd7, - 0x26, 0x22, 0x74, 0xe5, 0xe2, 0x8a, 0xd1, 0xbb, 0x91, 0xac, 0x27, 0x15, 0xbd, 0x28, 0x8c, 0xe4, - 0x53, 0x78, 0x24, 0x1f, 0xdd, 0x47, 0xc2, 0xb6, 0xd5, 0x19, 0xc9, 0x26, 0xe3, 0xcb, 0x7d, 0x54, - 0x9f, 0xca, 0xa1, 0x7a, 0xa3, 0x50, 0x99, 0xe9, 0x23, 0xfa, 0xde, 0x2c, 0x00, 0x31, 0x33, 0x36, - 0xdc, 0x09, 0x90, 0x98, 0x8d, 0xf5, 0x4b, 0xd9, 0x90, 0x2c, 0x8b, 0xbc, 0x2c, 0x1f, 0x1b, 0x61, - 0xc5, 0x10, 0xf2, 0x11, 0x12, 0x2d, 0x42, 0x6e, 0xd7, 0xfd, 0xcc, 0x24, 0x2a, 0x48, 0x82, 0xbc, - 0x6a, 0xf4, 0x4f, 0xf4, 0x27, 0x19, 0xc8, 0x91, 0x04, 0xe5, 0x34, 0x00, 0x19, 0xd8, 0xe9, 0x81, - 0xa0, 0x0c, 0x19, 0xc2, 0x43, 0x29, 0x44, 0x5b, 0x8d, 0x16, 0xfb, 0x4c, 0x4d, 0xe6, 0x20, 0xc1, - 0xfd, 0x9b, 0x0c, 0xf7, 0x84, 0x16, 0x33, 0x00, 0x42, 0x29, 0xee, 0xdf, 0xe4, 0x6d, 0x15, 0x6f, - 0xd2, 0x40, 0xc9, 0x59, 0x2d, 0x48, 0xf0, 0xff, 0x5e, 0xf5, 0xaf, 0xd7, 0xf2, 0xfe, 0x26, 0x29, - 0xee, 0x64, 0x98, 0xa8, 0xe5, 0x42, 0x50, 0x44, 0x9e, 0x64, 0xea, 0x4d, 0x46, 0xaf, 0xf1, 0xd5, - 0x66, 0x91, 0x53, 0x9b, 0x5b, 0x12, 0x88, 0x37, 0x7d, 0xe5, 0xf9, 0x6a, 0x0e, 0xa6, 0x2a, 0x56, - 0x8b, 0xe9, 0x4e, 0x68, 0xc2, 0xf8, 0xf1, 0x5c, 0xa2, 0x09, 0xa3, 0x4f, 0x23, 0x42, 0x41, 0xee, - 0xe6, 0x15, 0x44, 0x8c, 0x42, 0x58, 0x3f, 0x94, 0x05, 0xc8, 0x13, 0xed, 0xdd, 0x7f, 0x6f, 0x53, - 0x1c, 0x09, 0x22, 0x5a, 0x8d, 0xfd, 0xf9, 0x1f, 0x4e, 0xc7, 0xfe, 0x2b, 0xe4, 0x48, 0x05, 0x63, - 0x76, 0x77, 0xf8, 0x8a, 0x4a, 0xf1, 0x15, 0x95, 0xe3, 0x2b, 0x9a, 0xed, 0xad, 0x68, 0x92, 0x75, - 0x80, 0x28, 0x0d, 0x49, 0x5f, 0xc7, 0xff, 0x61, 0x02, 0xa0, 0xa2, 0xef, 0x19, 0x5b, 0x74, 0x77, - 0xf8, 0x0b, 0xde, 0xfc, 0x87, 0xed, 0xe3, 0xfe, 0xb7, 0xd0, 0x40, 0x78, 0x1b, 0x4c, 0xb0, 0x71, - 0x8f, 0x55, 0xe4, 0x6a, 0xae, 0x22, 0x01, 0x15, 0x6a, 0x96, 0x3e, 0xe0, 0x68, 0x5e, 0x7e, 0xee, - 0x8a, 0x59, 0xa9, 0xe7, 0x8a, 0xd9, 0xfe, 0x7b, 0x10, 0x11, 0x17, 0xcf, 0xa2, 0x77, 0x09, 0x7b, - 0xf4, 0x87, 0xf8, 0x09, 0xd5, 0x28, 0xa2, 0x09, 0x3e, 0x01, 0x26, 0x2c, 0x7f, 0x43, 0x5b, 0x8e, - 0x5c, 0x07, 0x2b, 0x9b, 0x9b, 0x96, 0xe6, 0xe5, 0x14, 0xdc, 0xfc, 0x12, 0xe2, 0x63, 0x2c, 0x87, - 0x66, 0x4e, 0x2e, 0x7b, 0x41, 0xa7, 0xdc, 0x7a, 0x9c, 0x33, 0x9c, 0xed, 0x55, 0xc3, 0xbc, 0xd0, - 0x45, 0xff, 0x59, 0xcc, 0x82, 0x0c, 0xe1, 0x2f, 0x25, 0xc3, 0x9f, 0x8f, 0xd9, 0x51, 0xe3, 0x51, - 0xbb, 0x33, 0x8a, 0x4a, 0x7f, 0x6e, 0x23, 0x00, 0xbc, 0x1d, 0xf2, 0x94, 0x51, 0xd6, 0x89, 0x9e, - 0x89, 0xc4, 0xcf, 0xa7, 0xa4, 0xb1, 0x3f, 0xd0, 0x3b, 0x7d, 0x1c, 0xcf, 0x72, 0x38, 0x2e, 0x1c, - 0x88, 0xb3, 0xd4, 0x21, 0x3d, 0xf3, 0x78, 0x98, 0x60, 0x92, 0x56, 0xe6, 0xc2, 0xad, 0xb8, 0x70, - 0x44, 0x01, 0xc8, 0xaf, 0x59, 0x7b, 0xb8, 0x6e, 0x15, 0x32, 0xee, 0xb3, 0xcb, 0x5f, 0xdd, 0x2a, - 0x48, 0xe8, 0x15, 0x93, 0x30, 0xe9, 0x47, 0xfb, 0xf9, 0x9c, 0x04, 0x85, 0x92, 0x8d, 0x75, 0x07, - 0x2f, 0xd9, 0xd6, 0x0e, 0xad, 0x91, 0xb8, 0x77, 0xe8, 0x6f, 0x0a, 0xbb, 0x78, 0xf8, 0x51, 0x78, - 0x7a, 0x0b, 0x8b, 0xc0, 0x92, 0x2e, 0x42, 0x4a, 0xde, 0x22, 0x24, 0x7a, 0x93, 0x90, 0xcb, 0x87, - 0x68, 0x29, 0xe9, 0x37, 0xb5, 0x4f, 0x49, 0x90, 0x2b, 0xb5, 0x2d, 0x13, 0x87, 0x8f, 0x30, 0x0d, - 0x3c, 0x2b, 0xd3, 0x7f, 0x27, 0x02, 0x3d, 0x43, 0x12, 0xb5, 0x35, 0x02, 0x01, 0xb8, 0x65, 0x0b, - 0xca, 0x56, 0x6c, 0x90, 0x8a, 0x25, 0x9d, 0xbe, 0x40, 0xbf, 0x29, 0xc1, 0x14, 0x8d, 0x8b, 0x53, - 0x6c, 0xb7, 0xd1, 0xa3, 0x02, 0xa1, 0xf6, 0x89, 0x98, 0x84, 0x7e, 0x4f, 0xd8, 0x45, 0xdf, 0xaf, - 0x95, 0x4f, 0x3b, 0x41, 0x80, 0xa0, 0x64, 0x1e, 0xe3, 0x62, 0x7b, 0x69, 0x03, 0x19, 0x4a, 0x5f, - 0xd4, 0x9f, 0x97, 0x5c, 0x03, 0xc0, 0xbc, 0xb0, 0x6e, 0xe3, 0x3d, 0x03, 0x5f, 0x44, 0x57, 0x06, - 0xc2, 0xde, 0x1f, 0xf4, 0xe3, 0x0d, 0xc2, 0x8b, 0x38, 0x21, 0x92, 0x91, 0x5b, 0x59, 0xd3, 0xed, - 0x20, 0x13, 0xeb, 0xc5, 0x7b, 0x23, 0xb1, 0x84, 0xc8, 0x68, 0xe1, 0xec, 0x82, 0x6b, 0x36, 0xd1, - 0x5c, 0xa4, 0x2f, 0xd8, 0x0f, 0x4c, 0xc0, 0xe4, 0x86, 0xd9, 0xed, 0xb4, 0xf5, 0xee, 0x36, 0xfa, - 0xbe, 0x0c, 0x79, 0x7a, 0x5b, 0x18, 0xfa, 0x09, 0x2e, 0xb6, 0xc0, 0xcf, 0xed, 0x62, 0xdb, 0x73, - 0xc1, 0xa1, 0x2f, 0xfd, 0x2f, 0x33, 0x47, 0xef, 0x95, 0x45, 0x27, 0xa9, 0x5e, 0xa1, 0xa1, 0x6b, - 0xe3, 0xfb, 0x1f, 0x67, 0xef, 0x18, 0x4d, 0x67, 0xd7, 0xf6, 0xaf, 0xc6, 0x7e, 0x9c, 0x18, 0x95, - 0x75, 0xfa, 0x97, 0xe6, 0xff, 0x8e, 0x74, 0x98, 0x60, 0x89, 0xfb, 0xb6, 0x93, 0xf6, 0x9f, 0xbf, - 0x3d, 0x09, 0x79, 0xdd, 0x76, 0x8c, 0xae, 0xc3, 0x36, 0x58, 0xd9, 0x9b, 0xdb, 0x5d, 0xd2, 0xa7, - 0x0d, 0xbb, 0xed, 0x45, 0x21, 0xf1, 0x13, 0xd0, 0xef, 0x0b, 0xcd, 0x1f, 0xe3, 0x6b, 0x9e, 0x0c, - 0xf2, 0x7b, 0x87, 0x58, 0xa3, 0xbe, 0x1c, 0x2e, 0xd3, 0x8a, 0x75, 0xb5, 0x41, 0x83, 0x56, 0xf8, - 0xf1, 0x29, 0x5a, 0xe8, 0x1d, 0x72, 0x68, 0xfd, 0xee, 0x12, 0x37, 0x46, 0x30, 0x29, 0x06, 0x63, - 0x84, 0x9f, 0x10, 0xb3, 0x5b, 0xcd, 0x2d, 0xc2, 0xca, 0xe2, 0x8b, 0xb0, 0xbf, 0x23, 0xbc, 0x9b, - 0xe4, 0x8b, 0x72, 0xc0, 0x1a, 0x60, 0xdc, 0x6d, 0x42, 0xef, 0x13, 0xda, 0x19, 0x1a, 0x54, 0xd2, - 0x21, 0xc2, 0xf6, 0xfa, 0x09, 0x98, 0x58, 0xd6, 0xdb, 0x6d, 0x6c, 0x5f, 0x72, 0x87, 0xa4, 0x82, - 0xc7, 0xe1, 0x9a, 0x6e, 0x1a, 0x9b, 0xb8, 0xeb, 0xc4, 0x77, 0x96, 0xef, 0x12, 0x8e, 0x54, 0xcb, - 0xca, 0x98, 0xef, 0xa5, 0x1f, 0x21, 0xf3, 0x9b, 0x21, 0x6b, 0x98, 0x9b, 0x16, 0xeb, 0x32, 0x7b, - 0x57, 0xed, 0xbd, 0x9f, 0xc9, 0xd4, 0x85, 0x64, 0x14, 0x0c, 0x56, 0x2b, 0xc8, 0x45, 0xfa, 0x3d, - 0xe7, 0xef, 0x66, 0x61, 0xd6, 0x63, 0xa2, 0x6c, 0xb6, 0xf0, 0x03, 0xe1, 0xa5, 0x98, 0x17, 0x66, - 0x45, 0x8f, 0x83, 0xf5, 0xd6, 0x87, 0x90, 0x8a, 0x10, 0x69, 0x1d, 0xa0, 0xa9, 0x3b, 0x78, 0xcb, - 0xb2, 0x0d, 0xbf, 0x3f, 0x7c, 0x62, 0x12, 0x6a, 0x25, 0xfa, 0xf7, 0x25, 0x2d, 0x44, 0x47, 0xb9, - 0x13, 0xa6, 0xb1, 0x7f, 0xfe, 0xde, 0x5b, 0xaa, 0x89, 0xc5, 0x2b, 0x9c, 0x1f, 0x7d, 0x5e, 0xe8, - 0xd4, 0x99, 0x48, 0x35, 0x93, 0x61, 0xd6, 0x18, 0xae, 0x0d, 0x6d, 0x54, 0xd6, 0x8a, 0x5a, 0x6d, - 0xa5, 0xb8, 0xba, 0x5a, 0xae, 0x2c, 0xfb, 0x81, 0x5f, 0x14, 0x98, 0x5b, 0xac, 0x9e, 0xab, 0x84, - 0x22, 0xf3, 0x64, 0xd1, 0x3a, 0x4c, 0x7a, 0xf2, 0xea, 0xe7, 0x8b, 0x19, 0x96, 0x19, 0xf3, 0xc5, - 0x0c, 0x25, 0xb9, 0xc6, 0x99, 0xd1, 0xf4, 0x1d, 0x74, 0xc8, 0x33, 0xfa, 0x63, 0x1d, 0x72, 0x64, - 0x4d, 0x1d, 0xbd, 0x8d, 0x6c, 0x03, 0x76, 0xda, 0x7a, 0x13, 0xa3, 0x9d, 0x04, 0xd6, 0xb8, 0x77, - 0x75, 0x82, 0xb4, 0xef, 0xea, 0x04, 0xf2, 0xc8, 0xac, 0xbe, 0xe3, 0xfd, 0xd6, 0xf1, 0x35, 0x9a, - 0x85, 0x3f, 0xa0, 0x15, 0xbb, 0xbb, 0x42, 0x97, 0xff, 0x19, 0x9b, 0x11, 0x2a, 0x19, 0xcd, 0x53, - 0x32, 0x4b, 0x54, 0x6c, 0x1f, 0x26, 0x8e, 0xa3, 0x31, 0x5c, 0xef, 0x9d, 0x85, 0x5c, 0xad, 0xd3, - 0x36, 0x1c, 0xf4, 0x12, 0x69, 0x24, 0x98, 0xd1, 0xeb, 0x2e, 0xe4, 0x81, 0xd7, 0x5d, 0x04, 0xbb, - 0xae, 0x59, 0x81, 0x5d, 0xd7, 0x3a, 0x7e, 0xc0, 0xe1, 0x77, 0x5d, 0x6f, 0x63, 0xc1, 0xdb, 0xe8, - 0x9e, 0xed, 0xa3, 0xfb, 0x88, 0x94, 0x54, 0xab, 0x4f, 0x54, 0xc0, 0x33, 0x8f, 0x67, 0xc1, 0xc9, - 0x00, 0xf2, 0x0b, 0xd5, 0x7a, 0xbd, 0xba, 0x56, 0x38, 0x42, 0xa2, 0xda, 0x54, 0xd7, 0x69, 0xa8, - 0x98, 0x72, 0xa5, 0xa2, 0x6a, 0x05, 0x89, 0x84, 0x4b, 0x2b, 0xd7, 0x57, 0xd5, 0x82, 0xcc, 0xc7, - 0x3e, 0x8f, 0x35, 0xbf, 0xf9, 0xb2, 0xd3, 0x54, 0x2f, 0x31, 0x43, 0x3c, 0x9a, 0x9f, 0xf4, 0x95, - 0xeb, 0x37, 0x64, 0xc8, 0xad, 0x61, 0x7b, 0x0b, 0xa3, 0x9f, 0x4b, 0xb0, 0xc9, 0xb7, 0x69, 0xd8, - 0x5d, 0x1a, 0x5c, 0x2e, 0xd8, 0xe4, 0x0b, 0xa7, 0x29, 0xd7, 0xc1, 0x6c, 0x17, 0x37, 0x2d, 0xb3, - 0xe5, 0x65, 0xa2, 0xfd, 0x11, 0x9f, 0xc8, 0xdf, 0x3b, 0x2f, 0x00, 0x19, 0x61, 0x74, 0x24, 0x3b, - 0x75, 0x49, 0x80, 0xe9, 0x57, 0x6a, 0xfa, 0xc0, 0x7c, 0x47, 0x76, 0x7f, 0xea, 0x5c, 0x42, 0x2f, - 0x16, 0xde, 0x7d, 0xbd, 0x09, 0xf2, 0x44, 0x4d, 0xbd, 0x31, 0xba, 0x7f, 0x7f, 0xcc, 0xf2, 0x28, - 0x0b, 0x70, 0xac, 0x8b, 0xdb, 0xb8, 0xe9, 0xe0, 0x96, 0xdb, 0x74, 0xb5, 0x81, 0x9d, 0xc2, 0xfe, - 0xec, 0xe8, 0xcf, 0xc2, 0x00, 0xde, 0xc1, 0x03, 0x78, 0x7d, 0x1f, 0x51, 0xba, 0x15, 0x8a, 0xb6, - 0x95, 0xdd, 0x6a, 0xd4, 0xda, 0x96, 0xbf, 0x28, 0xee, 0xbd, 0xbb, 0xdf, 0xb6, 0x9d, 0x9d, 0x36, - 0xf9, 0xc6, 0x0e, 0x18, 0x78, 0xef, 0xca, 0x3c, 0x4c, 0xe8, 0xe6, 0x25, 0xf2, 0x29, 0x1b, 0x53, - 0x6b, 0x2f, 0x13, 0x7a, 0x85, 0x8f, 0xfc, 0x5d, 0x1c, 0xf2, 0x8f, 0x15, 0x63, 0x37, 0x7d, 0xe0, - 0x7f, 0x71, 0x02, 0x72, 0xeb, 0x7a, 0xd7, 0xc1, 0xe8, 0xff, 0x92, 0x45, 0x91, 0xbf, 0x1e, 0xe6, - 0x36, 0xad, 0xe6, 0x6e, 0x17, 0xb7, 0xf8, 0x46, 0xd9, 0x93, 0x3a, 0x0a, 0xcc, 0x95, 0x1b, 0xa1, - 0xe0, 0x25, 0x32, 0xb2, 0xde, 0x36, 0xfc, 0xbe, 0x74, 0x12, 0x49, 0xbb, 0xbb, 0xae, 0xdb, 0x4e, - 0x75, 0x93, 0xa4, 0xf9, 0x91, 0xb4, 0xc3, 0x89, 0x1c, 0xf4, 0xf9, 0x18, 0xe8, 0x27, 0xa2, 0xa1, - 0x9f, 0x14, 0x80, 0x5e, 0x29, 0xc2, 0xe4, 0xa6, 0xd1, 0xc6, 0xe4, 0x87, 0x29, 0xf2, 0x43, 0xbf, - 0x31, 0x89, 0xc8, 0xde, 0x1f, 0x93, 0x96, 0x8c, 0x36, 0xd6, 0xfc, 0xdf, 0xbc, 0x89, 0x0c, 0x04, - 0x13, 0x99, 0x55, 0xea, 0x4f, 0xeb, 0x1a, 0x5e, 0xa6, 0xbe, 0x83, 0xbd, 0xc5, 0x37, 0x93, 0x1d, - 0x6e, 0x69, 0xe9, 0x8e, 0x4e, 0xc0, 0x98, 0xd1, 0xc8, 0x33, 0xef, 0x17, 0x22, 0xf7, 0xfa, 0x85, - 0x3c, 0x4b, 0x4e, 0xd6, 0x23, 0x7a, 0xcc, 0x46, 0xb4, 0xa8, 0xf3, 0x1e, 0x40, 0xd4, 0x52, 0xf4, - 0xdf, 0x5d, 0x60, 0x9a, 0xba, 0x8d, 0x9d, 0xf5, 0xb0, 0x27, 0x46, 0x4e, 0xe3, 0x13, 0x89, 0x2b, - 0x5f, 0xb7, 0xa6, 0xef, 0x60, 0x52, 0x58, 0xc9, 0xfd, 0xc6, 0x5c, 0xb4, 0xf6, 0xa5, 0x07, 0xfd, - 0x6f, 0x6e, 0xd4, 0xfd, 0x6f, 0xbf, 0x3a, 0xa6, 0xdf, 0x0c, 0x5f, 0x9d, 0x05, 0xb9, 0xb4, 0xeb, - 0x3c, 0xa2, 0xbb, 0xdf, 0x1f, 0x08, 0xfb, 0xb9, 0xb0, 0xfe, 0x2c, 0xf2, 0xa2, 0xf9, 0x31, 0xf5, - 0xbe, 0x09, 0xb5, 0x44, 0xcc, 0x9f, 0x26, 0xaa, 0x6e, 0x63, 0xb8, 0xd7, 0x40, 0xf6, 0x1d, 0x2c, - 0x1f, 0xcc, 0x1c, 0xdc, 0x34, 0x47, 0xb4, 0x7f, 0x0a, 0xf5, 0x0c, 0xfe, 0xbb, 0xd7, 0xf1, 0x64, - 0xb9, 0x58, 0x7d, 0x64, 0x7b, 0x9d, 0x88, 0x72, 0x46, 0xa3, 0x2f, 0xe8, 0xa5, 0xc2, 0x6e, 0xe7, - 0x54, 0x6c, 0xb1, 0xae, 0x84, 0xc9, 0x6c, 0x2a, 0xb1, 0xcb, 0x44, 0x63, 0x8a, 0x4d, 0x1f, 0xb0, - 0x6f, 0x87, 0x5d, 0x05, 0x8b, 0x07, 0x46, 0x0c, 0xbd, 0x52, 0x78, 0x3b, 0x8a, 0x56, 0x7b, 0xc0, - 0x7a, 0x61, 0x32, 0x79, 0x8b, 0x6d, 0x56, 0xc5, 0x16, 0x9c, 0xbe, 0xc4, 0xbf, 0x25, 0x43, 0x9e, - 0x6e, 0x41, 0xa2, 0x37, 0x66, 0x12, 0xdc, 0xc2, 0xee, 0xf0, 0x2e, 0x84, 0xfe, 0x7b, 0x92, 0x35, - 0x07, 0xce, 0xd5, 0x30, 0x9b, 0xc8, 0xd5, 0x90, 0x3f, 0xc7, 0x29, 0xd0, 0x8e, 0x68, 0x1d, 0x53, - 0x9e, 0x4e, 0x26, 0x69, 0x61, 0x7d, 0x19, 0x4a, 0x1f, 0xef, 0xe7, 0xe4, 0x60, 0x86, 0x16, 0x7d, - 0xce, 0x68, 0x6d, 0x61, 0x07, 0xbd, 0x43, 0xfa, 0xe1, 0x41, 0x5d, 0xa9, 0xc0, 0xcc, 0x45, 0xc2, - 0xf6, 0xaa, 0x7e, 0xc9, 0xda, 0x75, 0xd8, 0xca, 0xc5, 0x8d, 0xb1, 0xeb, 0x1e, 0xb4, 0x9e, 0xf3, - 0xf4, 0x0f, 0x8d, 0xfb, 0xdf, 0x95, 0x31, 0x5d, 0xf0, 0xa7, 0x0e, 0x5c, 0x79, 0x62, 0x64, 0x85, - 0x93, 0x94, 0x93, 0x90, 0xdf, 0x33, 0xf0, 0xc5, 0x72, 0x8b, 0x59, 0xb7, 0xec, 0x0d, 0x7d, 0x50, - 0x78, 0xdf, 0x36, 0x0c, 0x37, 0xe3, 0x25, 0x5d, 0x2d, 0x14, 0xdb, 0xbd, 0x1d, 0xc8, 0xd6, 0x18, - 0xce, 0x14, 0xf3, 0x97, 0x75, 0x96, 0x12, 0x28, 0x62, 0x94, 0xe1, 0xcc, 0x87, 0xf2, 0x88, 0x3d, - 0xb1, 0x42, 0x05, 0x30, 0xe2, 0x7b, 0x3c, 0xc5, 0xe2, 0x4b, 0x0c, 0x28, 0x3a, 0x7d, 0xc9, 0xbf, - 0x46, 0x86, 0xa9, 0x1a, 0x76, 0x96, 0x0c, 0xdc, 0x6e, 0x75, 0x91, 0x7d, 0x70, 0xd3, 0xe8, 0x66, - 0xc8, 0x6f, 0x12, 0x62, 0x83, 0xce, 0x2d, 0xb0, 0x6c, 0xe8, 0xd5, 0x92, 0xe8, 0x8e, 0x30, 0x5b, - 0x7d, 0xf3, 0xb8, 0x1d, 0x09, 0x4c, 0x62, 0x1e, 0xbd, 0xf1, 0x25, 0x8f, 0x21, 0xb0, 0xad, 0x0c, - 0x33, 0xec, 0x76, 0xbf, 0x62, 0xdb, 0xd8, 0x32, 0xd1, 0xee, 0x08, 0x5a, 0x88, 0x72, 0x0b, 0xe4, - 0x74, 0x97, 0x1a, 0xdb, 0x7a, 0x45, 0x7d, 0x3b, 0x4f, 0x52, 0x9e, 0x46, 0x33, 0x26, 0x08, 0x23, - 0x19, 0x28, 0xb6, 0xc7, 0xf3, 0x18, 0xc3, 0x48, 0x0e, 0x2c, 0x3c, 0x7d, 0xc4, 0xbe, 0x22, 0xc3, - 0x71, 0xc6, 0xc0, 0x59, 0x6c, 0x3b, 0x46, 0x53, 0x6f, 0x53, 0xe4, 0x9e, 0x97, 0x19, 0x05, 0x74, - 0x2b, 0x30, 0xbb, 0x17, 0x26, 0xcb, 0x20, 0x3c, 0xd3, 0x17, 0x42, 0x8e, 0x01, 0x8d, 0xff, 0x31, - 0x41, 0x38, 0x3e, 0x4e, 0xaa, 0x1c, 0xcd, 0x31, 0x86, 0xe3, 0x13, 0x66, 0x22, 0x7d, 0x88, 0x5f, - 0xc4, 0x42, 0xf3, 0x04, 0xdd, 0xe7, 0x17, 0x84, 0xb1, 0xdd, 0x80, 0x69, 0x82, 0x25, 0xfd, 0x91, - 0x2d, 0x43, 0xc4, 0x28, 0xb1, 0xdf, 0xef, 0xb0, 0x0b, 0xc3, 0xfc, 0x7f, 0xb5, 0x30, 0x1d, 0x74, - 0x0e, 0x20, 0xf8, 0x14, 0xee, 0xa4, 0x33, 0x51, 0x9d, 0xb4, 0x24, 0xd6, 0x49, 0xbf, 0x41, 0x38, - 0x58, 0x4a, 0x7f, 0xb6, 0x0f, 0xae, 0x1e, 0x62, 0x61, 0x32, 0x06, 0x97, 0x9e, 0xbe, 0x5e, 0xbc, - 0x22, 0xdb, 0x7b, 0x8d, 0xfb, 0x47, 0x46, 0x32, 0x9f, 0x0a, 0xf7, 0x07, 0x72, 0x4f, 0x7f, 0x70, - 0x00, 0x4b, 0xfa, 0x06, 0x38, 0x4a, 0x8b, 0x28, 0xf9, 0x6c, 0xe5, 0x68, 0x28, 0x88, 0x9e, 0x64, - 0xf4, 0xd1, 0x21, 0x94, 0x60, 0xd0, 0x1d, 0xf3, 0x71, 0x9d, 0x5c, 0x32, 0x63, 0x37, 0xa9, 0x82, - 0x1c, 0xde, 0xd5, 0xf4, 0xdf, 0xcc, 0x52, 0x6b, 0x77, 0x83, 0xdc, 0xe9, 0x86, 0xfe, 0x22, 0x3b, - 0x8a, 0x11, 0xe1, 0x6e, 0xc8, 0x12, 0x17, 0x77, 0x39, 0x72, 0x49, 0x23, 0x28, 0x32, 0xb8, 0x70, - 0x0f, 0x3f, 0xe0, 0xac, 0x1c, 0xd1, 0xc8, 0x9f, 0xca, 0x8d, 0x70, 0xf4, 0xbc, 0xde, 0xbc, 0xb0, - 0x65, 0x5b, 0xbb, 0xe4, 0xf6, 0x2b, 0x8b, 0x5d, 0xa3, 0x45, 0xae, 0x23, 0xe4, 0x3f, 0x28, 0xb7, - 0x7a, 0xa6, 0x43, 0x6e, 0x90, 0xe9, 0xb0, 0x72, 0x84, 0x19, 0x0f, 0xca, 0xe3, 0xfd, 0x4e, 0x27, - 0x1f, 0xdb, 0xe9, 0xac, 0x1c, 0xf1, 0xba, 0x1d, 0x65, 0x11, 0x26, 0x5b, 0xc6, 0x1e, 0xd9, 0xaa, - 0x26, 0xb3, 0xae, 0x41, 0x47, 0x97, 0x17, 0x8d, 0x3d, 0xba, 0xb1, 0xbd, 0x72, 0x44, 0xf3, 0xff, - 0x54, 0x96, 0x61, 0x8a, 0x6c, 0x0b, 0x10, 0x32, 0x93, 0x89, 0x8e, 0x25, 0xaf, 0x1c, 0xd1, 0x82, - 0x7f, 0x5d, 0xeb, 0x23, 0x4b, 0xce, 0x7e, 0xdc, 0xe5, 0x6d, 0xb7, 0x67, 0x12, 0x6d, 0xb7, 0xbb, - 0xb2, 0xa0, 0x1b, 0xee, 0x27, 0x21, 0xd7, 0x24, 0x12, 0x96, 0x98, 0x84, 0xe9, 0xab, 0x72, 0x07, - 0x64, 0x77, 0x74, 0xdb, 0x9b, 0x3c, 0x5f, 0x3f, 0x98, 0xee, 0x9a, 0x6e, 0x5f, 0x70, 0x11, 0x74, - 0xff, 0x5a, 0x98, 0x80, 0x1c, 0x11, 0x9c, 0xff, 0x80, 0xde, 0x9c, 0xa5, 0x66, 0x48, 0xc9, 0x32, - 0xdd, 0x61, 0xbf, 0x6e, 0x79, 0x07, 0x64, 0x3e, 0x98, 0x19, 0x8d, 0x05, 0xd9, 0xf7, 0xde, 0x73, - 0x39, 0xf2, 0xde, 0xf3, 0x9e, 0x0b, 0x78, 0xb3, 0xbd, 0x17, 0xf0, 0x06, 0xcb, 0x07, 0xb9, 0xc1, - 0x8e, 0x2a, 0x7f, 0x36, 0x84, 0xe9, 0xd2, 0x2b, 0x88, 0xe8, 0x19, 0x78, 0xdb, 0x30, 0x43, 0x75, - 0xf6, 0x5e, 0x13, 0x76, 0x4a, 0x49, 0x8d, 0x9a, 0x01, 0xec, 0xa5, 0xdf, 0x37, 0xfd, 0x76, 0x16, - 0x4e, 0xd1, 0x6b, 0x9e, 0xf7, 0x70, 0xdd, 0xe2, 0xef, 0x9b, 0x44, 0x9f, 0x1c, 0x89, 0xd2, 0xf4, - 0x19, 0x70, 0xe4, 0xbe, 0x03, 0xce, 0xbe, 0x43, 0xca, 0xd9, 0x01, 0x87, 0x94, 0x73, 0xc9, 0x56, - 0x0e, 0xdf, 0x1f, 0xd6, 0x9f, 0x75, 0x5e, 0x7f, 0x6e, 0x8f, 0x00, 0xa8, 0x9f, 0x5c, 0x46, 0x62, - 0xdf, 0xbc, 0xcd, 0xd7, 0x94, 0x1a, 0xa7, 0x29, 0x77, 0x0d, 0xcf, 0x48, 0xfa, 0xda, 0xf2, 0x07, - 0x59, 0xb8, 0x2c, 0x60, 0xa6, 0x82, 0x2f, 0x32, 0x45, 0xf9, 0xdc, 0x48, 0x14, 0x25, 0x79, 0x0c, - 0x84, 0xb4, 0x35, 0xe6, 0x4f, 0x84, 0xcf, 0x0e, 0xf5, 0x02, 0xe5, 0xcb, 0x26, 0x42, 0x59, 0x4e, - 0x42, 0x9e, 0xf6, 0x30, 0x0c, 0x1a, 0xf6, 0x96, 0xb0, 0xbb, 0x11, 0x3b, 0x71, 0x24, 0xca, 0xdb, - 0x18, 0xf4, 0x87, 0xad, 0x6b, 0xd4, 0x77, 0x6d, 0xb3, 0x6c, 0x3a, 0x16, 0xfa, 0x85, 0x91, 0x28, - 0x8e, 0xef, 0x0d, 0x27, 0x0f, 0xe3, 0x0d, 0x37, 0xd4, 0x2a, 0x87, 0x57, 0x83, 0x43, 0x59, 0xe5, - 0x88, 0x28, 0x3c, 0x7d, 0xfc, 0xde, 0x2a, 0xc3, 0x49, 0x36, 0xd9, 0x5a, 0xe0, 0x2d, 0x44, 0x74, - 0xdf, 0x28, 0x80, 0x3c, 0xee, 0x99, 0x49, 0xec, 0x96, 0x33, 0xf2, 0xc2, 0x9f, 0x94, 0x8a, 0xbd, - 0xdf, 0x81, 0x9b, 0x0e, 0xf6, 0x70, 0x38, 0x12, 0xa4, 0xc4, 0xae, 0x75, 0x48, 0xc0, 0x46, 0xfa, - 0x98, 0xbd, 0x40, 0x86, 0x3c, 0xbb, 0xde, 0x7f, 0x23, 0x15, 0x87, 0x09, 0x3e, 0xca, 0xb3, 0xc0, - 0x8e, 0x5c, 0xe2, 0x4b, 0xee, 0xd3, 0xdb, 0x8b, 0x3b, 0xa4, 0x5b, 0xec, 0xbf, 0x23, 0xc1, 0x74, - 0x0d, 0x3b, 0x25, 0xdd, 0xb6, 0x0d, 0x7d, 0x6b, 0x54, 0x1e, 0xdf, 0xa2, 0xde, 0xc3, 0xe8, 0xbb, - 0x19, 0xd1, 0xf3, 0x34, 0xfe, 0x42, 0xb8, 0xc7, 0x6a, 0x44, 0x2c, 0xc1, 0x87, 0x85, 0xce, 0xcc, - 0x0c, 0xa2, 0x36, 0x06, 0x8f, 0x6d, 0x09, 0x26, 0xbc, 0xb3, 0x78, 0x37, 0x73, 0xe7, 0x33, 0xb7, - 0x9d, 0x1d, 0xef, 0x18, 0x0c, 0x79, 0xde, 0x7f, 0x06, 0x0c, 0xbd, 0x3c, 0xa1, 0xa3, 0x7c, 0xfc, - 0x41, 0xc2, 0x64, 0x6d, 0x2c, 0x89, 0x3b, 0xfc, 0x61, 0x1d, 0x1d, 0xfc, 0xbd, 0x09, 0xb6, 0x1c, - 0xb9, 0xaa, 0x3b, 0xf8, 0x01, 0xf4, 0x05, 0x19, 0x26, 0x6a, 0xd8, 0x71, 0xc7, 0x5b, 0xee, 0x72, - 0xd3, 0x61, 0x35, 0x5c, 0x09, 0xad, 0x78, 0x4c, 0xb1, 0x35, 0x8c, 0x7b, 0x60, 0xaa, 0x63, 0x5b, - 0x4d, 0xdc, 0xed, 0xb2, 0xd5, 0x8b, 0xb0, 0xa3, 0x5a, 0xbf, 0xd1, 0x9f, 0xb0, 0x36, 0xbf, 0xee, - 0xfd, 0xa3, 0x05, 0xbf, 0x27, 0x35, 0x03, 0x28, 0x25, 0x56, 0xc1, 0x71, 0x9b, 0x01, 0x71, 0x85, - 0xa7, 0x0f, 0xf4, 0x67, 0x64, 0x98, 0xa9, 0x61, 0xc7, 0x97, 0x62, 0x82, 0x4d, 0x8e, 0x68, 0x78, - 0x39, 0x28, 0xe5, 0x83, 0x41, 0x29, 0x7e, 0x35, 0x20, 0x2f, 0x4d, 0x9f, 0xd8, 0x18, 0xaf, 0x06, - 0x14, 0xe3, 0x60, 0x0c, 0xc7, 0xd7, 0x1e, 0x0d, 0x53, 0x84, 0x17, 0xd2, 0x60, 0x7f, 0x25, 0x1b, - 0x34, 0xde, 0x2f, 0xa6, 0xd4, 0x78, 0xef, 0x84, 0xdc, 0x8e, 0x6e, 0x5f, 0xe8, 0x92, 0x86, 0x3b, - 0x2d, 0x62, 0xb6, 0xaf, 0xb9, 0xd9, 0x35, 0xfa, 0x57, 0x7f, 0x3f, 0xcd, 0x5c, 0x32, 0x3f, 0xcd, - 0x87, 0xa5, 0x44, 0x23, 0x21, 0x9d, 0x3b, 0x8c, 0xb0, 0xc9, 0x27, 0x18, 0x37, 0x63, 0xca, 0x4e, - 0x5f, 0x39, 0x9e, 0x27, 0xc3, 0xa4, 0x3b, 0x6e, 0x13, 0x7b, 0xfc, 0xdc, 0xc1, 0xd5, 0xa1, 0xbf, - 0xa1, 0x9f, 0xb0, 0x07, 0xf6, 0x24, 0x32, 0x3a, 0xf3, 0x3e, 0x41, 0x0f, 0x1c, 0x57, 0x78, 0xfa, - 0x78, 0xbc, 0x9d, 0xe2, 0x41, 0xda, 0x03, 0x7a, 0x9d, 0x0c, 0xf2, 0x32, 0x76, 0xc6, 0x6d, 0x45, - 0xbe, 0x45, 0x38, 0xc4, 0x11, 0x27, 0x30, 0xc2, 0xf3, 0xfc, 0x32, 0x1e, 0x4d, 0x03, 0x12, 0x8b, - 0x6d, 0x24, 0xc4, 0x40, 0xfa, 0xa8, 0xbd, 0x9b, 0xa2, 0x46, 0x37, 0x17, 0x7e, 0x7e, 0x04, 0xbd, - 0xea, 0x78, 0x17, 0x3e, 0x3c, 0x01, 0x12, 0x1a, 0x87, 0xd5, 0xde, 0xfa, 0x15, 0x3e, 0x96, 0xab, - 0xf8, 0xc0, 0x6d, 0xec, 0xdb, 0xb8, 0x79, 0x01, 0xb7, 0xd0, 0xcf, 0x1c, 0x1c, 0xba, 0x53, 0x30, - 0xd1, 0xa4, 0xd4, 0x08, 0x78, 0x93, 0x9a, 0xf7, 0x9a, 0xe0, 0x5e, 0x69, 0xbe, 0x23, 0xa2, 0xbf, - 0x8f, 0xf1, 0x5e, 0x69, 0x81, 0xe2, 0xc7, 0x60, 0xb6, 0xd0, 0x59, 0x46, 0xb9, 0x69, 0x99, 0xe8, - 0xbf, 0x1c, 0x1c, 0x96, 0xab, 0x60, 0xca, 0x68, 0x5a, 0x26, 0x09, 0x43, 0xe1, 0x1d, 0x02, 0xf2, - 0x13, 0xbc, 0xaf, 0xea, 0x8e, 0x75, 0xbf, 0xc1, 0x76, 0xcd, 0x83, 0x84, 0x61, 0x8d, 0x09, 0x97, - 0xf5, 0xc3, 0x32, 0x26, 0xfa, 0x94, 0x9d, 0x3e, 0x64, 0x1f, 0x0d, 0xbc, 0xdb, 0x68, 0x57, 0xf8, - 0x88, 0x58, 0x05, 0x1e, 0x66, 0x38, 0x0b, 0xd7, 0xe2, 0x50, 0x86, 0xb3, 0x18, 0x06, 0xc6, 0x70, - 0x63, 0x45, 0x80, 0x63, 0xea, 0x6b, 0xc0, 0x07, 0x40, 0x67, 0x74, 0xe6, 0xe1, 0x90, 0xe8, 0x1c, - 0x8e, 0x89, 0xf8, 0x3e, 0x16, 0x22, 0x93, 0x59, 0x3c, 0xe8, 0xbf, 0x8e, 0x02, 0x9c, 0xdb, 0x87, - 0xf1, 0x57, 0xa0, 0xde, 0x0a, 0x09, 0x6e, 0xc4, 0xde, 0x27, 0x41, 0x97, 0xca, 0x18, 0xef, 0x8a, - 0x17, 0x29, 0x3f, 0x7d, 0x00, 0x9f, 0x2b, 0xc3, 0x1c, 0xf1, 0x11, 0x68, 0x63, 0xdd, 0xa6, 0x1d, - 0xe5, 0x48, 0x1c, 0xe5, 0xdf, 0x2e, 0x1c, 0xe0, 0x87, 0x97, 0x43, 0xc0, 0xc7, 0x48, 0xa0, 0x10, - 0x8b, 0xee, 0x23, 0xc8, 0xc2, 0x58, 0xb6, 0x51, 0x0a, 0x3e, 0x0b, 0x4c, 0xc5, 0x47, 0x83, 0x47, - 0x42, 0x8f, 0x5c, 0x5e, 0x18, 0x5e, 0x63, 0x1b, 0xb3, 0x47, 0xae, 0x08, 0x13, 0xe9, 0x63, 0xf2, - 0xba, 0x5b, 0xd8, 0x82, 0x73, 0x9d, 0x5c, 0x18, 0xff, 0xca, 0xac, 0x7f, 0xa2, 0xed, 0x33, 0x23, - 0xf1, 0xc0, 0x3c, 0x40, 0x40, 0x7c, 0x05, 0xb2, 0xb6, 0x75, 0x91, 0x2e, 0x6d, 0xcd, 0x6a, 0xe4, - 0x99, 0x5e, 0x4f, 0xd9, 0xde, 0xdd, 0x31, 0xe9, 0xc9, 0xd0, 0x59, 0xcd, 0x7b, 0x55, 0xae, 0x83, - 0xd9, 0x8b, 0x86, 0xb3, 0xbd, 0x82, 0xf5, 0x16, 0xb6, 0x35, 0xeb, 0x22, 0xf1, 0x98, 0x9b, 0xd4, - 0xf8, 0x44, 0xde, 0x7f, 0x45, 0xc0, 0xbe, 0x24, 0xb7, 0xc8, 0x8f, 0xe5, 0xf8, 0x5b, 0x12, 0xcb, - 0x33, 0x9a, 0xab, 0xf4, 0x15, 0xe6, 0x3d, 0x32, 0x4c, 0x69, 0xd6, 0x45, 0xa6, 0x24, 0xff, 0xc7, - 0xe1, 0xea, 0x48, 0xe2, 0x89, 0x1e, 0x91, 0x9c, 0xcf, 0xfe, 0xd8, 0x27, 0x7a, 0xb1, 0xc5, 0x8f, - 0xe5, 0xe4, 0xd2, 0x8c, 0x66, 0x5d, 0xac, 0x61, 0x87, 0xb6, 0x08, 0xd4, 0x18, 0x91, 0x93, 0xb5, - 0xd1, 0xa5, 0x04, 0xd9, 0x3c, 0xdc, 0x7f, 0x4f, 0xba, 0x8b, 0xe0, 0x0b, 0xc8, 0x67, 0x71, 0xdc, - 0xbb, 0x08, 0x03, 0x39, 0x18, 0x43, 0x8c, 0x14, 0x19, 0xa6, 0x35, 0xeb, 0xa2, 0x3b, 0x34, 0x2c, - 0x19, 0xed, 0xf6, 0x68, 0x46, 0xc8, 0xa4, 0xc6, 0xbf, 0x27, 0x06, 0x8f, 0x8b, 0xb1, 0x1b, 0xff, - 0x03, 0x18, 0x48, 0x1f, 0x86, 0x67, 0xd1, 0xc6, 0xe2, 0x8d, 0xd0, 0xe6, 0x68, 0x70, 0x18, 0xb6, - 0x41, 0xf8, 0x6c, 0x1c, 0x5a, 0x83, 0x88, 0xe2, 0x60, 0x2c, 0x3b, 0x27, 0x73, 0x25, 0x32, 0xcc, - 0x8f, 0xb6, 0x4d, 0xbc, 0x33, 0x99, 0x6b, 0x22, 0x1b, 0x76, 0x39, 0x46, 0x46, 0x82, 0x46, 0x02, - 0x17, 0x44, 0x01, 0x1e, 0xd2, 0xc7, 0xe3, 0x43, 0x32, 0xcc, 0x50, 0x16, 0x1e, 0x21, 0x56, 0xc0, - 0x50, 0x8d, 0x2a, 0x5c, 0x83, 0xc3, 0x69, 0x54, 0x31, 0x1c, 0x8c, 0xe5, 0x56, 0x50, 0xd7, 0x8e, - 0x1b, 0xe2, 0xf8, 0x78, 0x14, 0x82, 0x43, 0x1b, 0x63, 0x23, 0x3c, 0x42, 0x3e, 0x8c, 0x31, 0x76, - 0x48, 0xc7, 0xc8, 0x9f, 0xe5, 0xb7, 0xa2, 0x51, 0x62, 0x70, 0x80, 0xa6, 0x30, 0x42, 0x18, 0x86, - 0x6c, 0x0a, 0x87, 0x84, 0xc4, 0x57, 0x65, 0x00, 0xca, 0xc0, 0x9a, 0xb5, 0x47, 0x2e, 0xf3, 0x19, - 0x41, 0x77, 0xd6, 0xeb, 0x56, 0x2f, 0x0f, 0x70, 0xab, 0x4f, 0x18, 0xc2, 0x25, 0xe9, 0x4a, 0x60, - 0x48, 0xca, 0x6e, 0x25, 0xc7, 0xbe, 0x12, 0x18, 0x5f, 0x7e, 0xfa, 0x18, 0x7f, 0x99, 0x5a, 0x73, - 0xc1, 0x01, 0xd3, 0xdf, 0x1a, 0x09, 0xca, 0xa1, 0xd9, 0xbf, 0xcc, 0xcf, 0xfe, 0x0f, 0x80, 0xed, - 0xb0, 0x36, 0xe2, 0xa0, 0x83, 0xa3, 0xe9, 0xdb, 0x88, 0x87, 0x77, 0x40, 0xf4, 0xe7, 0xb3, 0x70, - 0x94, 0x75, 0x22, 0x3f, 0x0c, 0x10, 0x27, 0x3c, 0x87, 0xc7, 0x75, 0x92, 0x03, 0x50, 0x1e, 0xd5, - 0x82, 0x54, 0x92, 0xa5, 0x4c, 0x01, 0xf6, 0xc6, 0xb2, 0xba, 0x91, 0x57, 0x1f, 0xe8, 0xe8, 0x66, - 0x4b, 0x3c, 0xdc, 0xef, 0x00, 0xe0, 0xbd, 0xb5, 0x46, 0x99, 0x5f, 0x6b, 0xec, 0xb3, 0x32, 0x99, - 0x78, 0xe7, 0x9a, 0x88, 0x8c, 0xb2, 0x3b, 0xf6, 0x9d, 0xeb, 0xe8, 0xb2, 0xd3, 0x47, 0xe9, 0x9d, - 0x32, 0x64, 0x6b, 0x96, 0xed, 0xa0, 0x67, 0x27, 0x69, 0x9d, 0x54, 0xf2, 0x01, 0x48, 0xde, 0xbb, - 0x52, 0xe2, 0x6e, 0x69, 0xbe, 0x39, 0xfe, 0xa8, 0xb3, 0xee, 0xe8, 0xc4, 0xab, 0xdb, 0x2d, 0x3f, - 0x74, 0x5d, 0x73, 0xd2, 0x78, 0x3a, 0x54, 0x7e, 0xb5, 0xe8, 0x03, 0x18, 0xa9, 0xc5, 0xd3, 0x89, - 0x2c, 0x39, 0x7d, 0xdc, 0x1e, 0x3a, 0xca, 0x7c, 0x5b, 0x97, 0x8c, 0x36, 0x46, 0xcf, 0xa6, 0x2e, - 0x23, 0x15, 0x7d, 0x07, 0x8b, 0x1f, 0x89, 0x89, 0x75, 0x6d, 0x25, 0xf1, 0x65, 0xe5, 0x20, 0xbe, - 0x6c, 0xd2, 0x06, 0x45, 0x0f, 0xa0, 0x53, 0x96, 0xc6, 0xdd, 0xa0, 0x62, 0xca, 0x1e, 0x4b, 0x9c, - 0xce, 0x63, 0x35, 0xec, 0x50, 0xa3, 0xb2, 0xea, 0xdd, 0xc0, 0xf2, 0xb3, 0x23, 0x89, 0xd8, 0xe9, - 0x5f, 0xf0, 0x22, 0xf7, 0x5c, 0xf0, 0xf2, 0x9e, 0x30, 0x38, 0x6b, 0x3c, 0x38, 0x3f, 0x19, 0x2d, - 0x20, 0x9e, 0xc9, 0x91, 0xc0, 0xf4, 0x16, 0x1f, 0xa6, 0x75, 0x0e, 0xa6, 0x3b, 0x86, 0xe4, 0x22, - 0x7d, 0xc0, 0x7e, 0x35, 0x07, 0x47, 0xe9, 0xa4, 0xbf, 0x68, 0xb6, 0x58, 0x84, 0xd5, 0x37, 0x4a, - 0x87, 0xbc, 0xd9, 0xb6, 0x3f, 0x04, 0x2b, 0x17, 0xcb, 0x39, 0xd7, 0x7b, 0x3b, 0xfe, 0x02, 0x0d, - 0xe7, 0xea, 0x76, 0xa2, 0x64, 0xa7, 0x4d, 0xfc, 0x86, 0x7c, 0xff, 0x3f, 0xfe, 0x2e, 0xa3, 0x09, - 0xf1, 0xbb, 0x8c, 0xfe, 0x34, 0xd9, 0xba, 0x1d, 0x29, 0xba, 0x47, 0xe0, 0x29, 0xdb, 0x4e, 0x09, - 0x56, 0xf4, 0x04, 0xb8, 0xfb, 0xd1, 0x70, 0x27, 0x0b, 0x22, 0x88, 0x0c, 0xe9, 0x4e, 0x46, 0x08, - 0x1c, 0xa6, 0x3b, 0xd9, 0x20, 0x06, 0xc6, 0x70, 0xab, 0x7d, 0x8e, 0xed, 0xe6, 0x93, 0x76, 0x83, - 0xfe, 0x4a, 0x4a, 0x7d, 0x94, 0xfe, 0x5e, 0x26, 0x91, 0xff, 0x33, 0xe1, 0x2b, 0x7e, 0x98, 0x4e, - 0xe2, 0xd1, 0x1c, 0x47, 0x6e, 0x0c, 0xeb, 0x46, 0x12, 0xf1, 0x45, 0x3f, 0x67, 0xb4, 0x9c, 0xed, - 0x11, 0x9d, 0xe8, 0xb8, 0xe8, 0xd2, 0xf2, 0xae, 0x47, 0x26, 0x2f, 0xe8, 0xdf, 0x32, 0x89, 0x42, - 0x48, 0xf9, 0x22, 0x21, 0x6c, 0x45, 0x88, 0x38, 0x41, 0xe0, 0xa7, 0x58, 0x7a, 0x63, 0xd4, 0xe8, - 0xb3, 0x46, 0x0b, 0x5b, 0x8f, 0x40, 0x8d, 0x26, 0x7c, 0x8d, 0x4e, 0xa3, 0xe3, 0xc8, 0xfd, 0x88, - 0x6a, 0xb4, 0x2f, 0x92, 0x11, 0x69, 0x74, 0x2c, 0xbd, 0xf4, 0x65, 0xfc, 0xf2, 0x19, 0x36, 0x91, - 0x5a, 0x35, 0xcc, 0x0b, 0xe8, 0x9f, 0xf3, 0xde, 0xc5, 0xcc, 0xe7, 0x0c, 0x67, 0x9b, 0xc5, 0x82, - 0xf9, 0x03, 0xe1, 0xbb, 0x51, 0x86, 0x88, 0xf7, 0xc2, 0x87, 0x93, 0xca, 0xed, 0x0b, 0x27, 0x55, - 0x84, 0x59, 0xc3, 0x74, 0xb0, 0x6d, 0xea, 0xed, 0xa5, 0xb6, 0xbe, 0xd5, 0x3d, 0x35, 0xd1, 0xf7, - 0xf2, 0xba, 0x72, 0x28, 0x8f, 0xc6, 0xff, 0x11, 0xbe, 0xbe, 0x72, 0x92, 0xbf, 0xbe, 0x32, 0x22, - 0xfa, 0xd5, 0x54, 0x74, 0xf4, 0x2b, 0x3f, 0xba, 0x15, 0x0c, 0x0e, 0x8e, 0x2d, 0x6a, 0x1b, 0x27, - 0x0c, 0xf7, 0x77, 0xb3, 0x60, 0x14, 0x36, 0x3f, 0xf4, 0xe3, 0xab, 0xe4, 0x44, 0xab, 0x7b, 0xae, - 0x22, 0xcc, 0xf7, 0x2a, 0x41, 0x62, 0x0b, 0x35, 0x5c, 0x79, 0xb9, 0xa7, 0xf2, 0xbe, 0xc9, 0x93, - 0x15, 0x30, 0x79, 0xc2, 0x4a, 0x95, 0x13, 0x53, 0xaa, 0x24, 0x8b, 0x85, 0x22, 0xb5, 0x1d, 0xc3, - 0x69, 0xa4, 0x1c, 0x1c, 0xf3, 0xa2, 0xdd, 0x76, 0x3a, 0x58, 0xb7, 0x75, 0xb3, 0x89, 0xd1, 0x47, - 0xa5, 0x51, 0x98, 0xbd, 0x4b, 0x30, 0x69, 0x34, 0x2d, 0xb3, 0x66, 0x3c, 0xdd, 0xbb, 0x5c, 0x2e, - 0x3e, 0xc8, 0x3a, 0x91, 0x48, 0x99, 0xfd, 0xa1, 0xf9, 0xff, 0x2a, 0x65, 0x98, 0x6a, 0xea, 0x76, - 0x8b, 0x06, 0xe1, 0xcb, 0xf5, 0x5c, 0xe4, 0x14, 0x49, 0xa8, 0xe4, 0xfd, 0xa2, 0x05, 0x7f, 0x2b, - 0x55, 0x5e, 0x88, 0xf9, 0x9e, 0x68, 0x1e, 0x91, 0xc4, 0x16, 0x83, 0x9f, 0x38, 0x99, 0xbb, 0xd2, - 0xb1, 0x71, 0x9b, 0xdc, 0x41, 0x4f, 0x7b, 0x88, 0x29, 0x2d, 0x48, 0x48, 0xba, 0x3c, 0x40, 0x8a, - 0xda, 0x87, 0xc6, 0xb8, 0x97, 0x07, 0x84, 0xb8, 0x48, 0x5f, 0x33, 0xdf, 0x96, 0x87, 0x59, 0xda, - 0xab, 0x31, 0x71, 0xa2, 0xe7, 0x92, 0x2b, 0xa4, 0x9d, 0x7b, 0xf1, 0x25, 0x54, 0x3b, 0xf8, 0x98, - 0x5c, 0x00, 0xf9, 0x82, 0x1f, 0x70, 0xd0, 0x7d, 0x4c, 0xba, 0x6f, 0xef, 0xf1, 0x35, 0x4f, 0x79, - 0x1a, 0xf7, 0xbe, 0x7d, 0x7c, 0xf1, 0xe9, 0xe3, 0xf3, 0x6b, 0x32, 0xc8, 0xc5, 0x56, 0x0b, 0x35, - 0x0f, 0x0e, 0xc5, 0x35, 0x30, 0xed, 0xb5, 0x99, 0x20, 0x06, 0x64, 0x38, 0x29, 0xe9, 0x22, 0xa8, - 0x2f, 0x9b, 0x62, 0x6b, 0xec, 0xbb, 0x0a, 0x31, 0x65, 0xa7, 0x0f, 0xca, 0x6f, 0x4d, 0xb0, 0x46, - 0xb3, 0x60, 0x59, 0x17, 0xc8, 0x51, 0x99, 0x67, 0xcb, 0x90, 0x5b, 0xc2, 0x4e, 0x73, 0x7b, 0x44, - 0x6d, 0x66, 0xd7, 0x6e, 0x7b, 0x6d, 0x66, 0xdf, 0x7d, 0xf8, 0x83, 0x6d, 0x58, 0x8f, 0xad, 0x79, - 0xc2, 0xd2, 0xb8, 0xa3, 0x3b, 0xc7, 0x96, 0x9e, 0x3e, 0x38, 0xff, 0x26, 0xc3, 0x9c, 0xbf, 0xc2, - 0x45, 0x31, 0xf9, 0xd5, 0xcc, 0x23, 0x6d, 0xbd, 0x13, 0x7d, 0x2e, 0x59, 0x88, 0x34, 0x5f, 0xa6, - 0x7c, 0xcd, 0x52, 0x5e, 0x58, 0x4c, 0x10, 0x3c, 0x4d, 0x8c, 0xc1, 0x31, 0xcc, 0xe0, 0x65, 0x98, - 0x24, 0x0c, 0x2d, 0x1a, 0x7b, 0xc4, 0x75, 0x90, 0x5b, 0x68, 0x7c, 0xc6, 0x48, 0x16, 0x1a, 0xef, - 0xe0, 0x17, 0x1a, 0x05, 0x23, 0x1e, 0x7b, 0xeb, 0x8c, 0x09, 0x7d, 0x69, 0xdc, 0xff, 0x47, 0xbe, - 0xcc, 0x98, 0xc0, 0x97, 0x66, 0x40, 0xf9, 0xe9, 0x23, 0xfa, 0xaa, 0xff, 0xc4, 0x3a, 0x5b, 0x6f, - 0x43, 0x15, 0xfd, 0xcf, 0x63, 0x90, 0x3d, 0xeb, 0x3e, 0xfc, 0xef, 0xe0, 0x46, 0xac, 0x17, 0x8f, - 0x20, 0x38, 0xc3, 0x53, 0x21, 0xeb, 0xd2, 0x67, 0xd3, 0x96, 0x1b, 0xc5, 0x76, 0x77, 0x5d, 0x46, - 0x34, 0xf2, 0x9f, 0x72, 0x12, 0xf2, 0x5d, 0x6b, 0xd7, 0x6e, 0xba, 0xe6, 0xb3, 0xab, 0x31, 0xec, - 0x2d, 0x69, 0x50, 0x52, 0x8e, 0xf4, 0xfc, 0xe8, 0x5c, 0x46, 0x43, 0x17, 0x24, 0xc9, 0xdc, 0x05, - 0x49, 0x09, 0xf6, 0x0f, 0x04, 0x78, 0x4b, 0x5f, 0x23, 0xfe, 0x8a, 0xdc, 0x15, 0xd8, 0x1a, 0x15, - 0xec, 0x11, 0x62, 0x39, 0xa8, 0x3a, 0x24, 0x75, 0xf8, 0xe6, 0x45, 0xeb, 0xc7, 0x81, 0x1f, 0xab, - 0xc3, 0xb7, 0x00, 0x0f, 0x63, 0x39, 0xa5, 0x9e, 0x67, 0x4e, 0xaa, 0xf7, 0x8d, 0x12, 0xdd, 0x2c, - 0xa7, 0xf4, 0x07, 0x42, 0x67, 0x84, 0xce, 0xab, 0x43, 0xa3, 0x73, 0x48, 0xee, 0xab, 0x7f, 0x28, - 0x93, 0x48, 0x98, 0x9e, 0x91, 0x23, 0x7e, 0xd1, 0x51, 0x62, 0x88, 0xdc, 0x31, 0x98, 0x8b, 0x03, - 0x3d, 0x3b, 0x7c, 0x68, 0x70, 0x5e, 0x74, 0x21, 0xfe, 0xc7, 0x1d, 0x1a, 0x5c, 0x94, 0x91, 0xf4, - 0x81, 0x7c, 0x2d, 0xbd, 0x58, 0xac, 0xd8, 0x74, 0x8c, 0xbd, 0x11, 0xb7, 0x34, 0x7e, 0x78, 0x49, - 0x18, 0x0d, 0x78, 0x9f, 0x84, 0x28, 0x87, 0xe3, 0x8e, 0x06, 0x2c, 0xc6, 0x46, 0xfa, 0x30, 0xfd, - 0x6d, 0xde, 0x95, 0x1e, 0x5b, 0x9b, 0x79, 0x1d, 0x5b, 0x0d, 0xc0, 0x07, 0x47, 0xeb, 0x0c, 0xcc, - 0x84, 0xa6, 0xfe, 0xde, 0x85, 0x35, 0x5c, 0x5a, 0xd2, 0x83, 0xee, 0xbe, 0xc8, 0x46, 0xbe, 0x30, - 0x90, 0x60, 0xc1, 0x57, 0x84, 0x89, 0xb1, 0xdc, 0x07, 0xe7, 0x8d, 0x61, 0x63, 0xc2, 0xea, 0x0f, - 0xc2, 0x58, 0x55, 0x79, 0xac, 0x6e, 0x13, 0x11, 0x93, 0xd8, 0x98, 0x26, 0x34, 0x6f, 0x7c, 0xab, - 0x0f, 0x97, 0xc6, 0xc1, 0xf5, 0xd4, 0xa1, 0xf9, 0x48, 0x1f, 0xb1, 0x97, 0xd0, 0xee, 0xb0, 0x46, - 0x4d, 0xf6, 0xd1, 0x74, 0x87, 0x6c, 0x36, 0x20, 0x73, 0xb3, 0x81, 0x84, 0xfe, 0xf6, 0x81, 0x1b, - 0xa9, 0xc7, 0xdc, 0x20, 0x88, 0xb2, 0x23, 0xf6, 0xb7, 0x1f, 0xc8, 0x41, 0xfa, 0xe0, 0xfc, 0xa3, - 0x0c, 0xb0, 0x6c, 0x5b, 0xbb, 0x9d, 0xaa, 0xdd, 0xc2, 0x36, 0xfa, 0x9b, 0x60, 0x02, 0xf0, 0xc2, - 0x11, 0x4c, 0x00, 0xd6, 0x01, 0xb6, 0x7c, 0xe2, 0x4c, 0xc3, 0x6f, 0x11, 0x33, 0xf7, 0x03, 0xa6, - 0xb4, 0x10, 0x0d, 0xfe, 0xca, 0xd9, 0x9f, 0xe2, 0x31, 0x8e, 0xeb, 0xb3, 0x02, 0x72, 0xa3, 0x9c, - 0x00, 0xbc, 0xdd, 0xc7, 0xba, 0xce, 0x61, 0x7d, 0xf7, 0x01, 0x38, 0x49, 0x1f, 0xf3, 0x7f, 0x9a, - 0x80, 0x69, 0xba, 0x5d, 0x47, 0x65, 0xfa, 0xf7, 0x01, 0xe8, 0xbf, 0x35, 0x02, 0xd0, 0x37, 0x60, - 0xc6, 0x0a, 0xa8, 0xd3, 0x3e, 0x35, 0xbc, 0x00, 0x13, 0x0b, 0x7b, 0x88, 0x2f, 0x8d, 0x23, 0x83, - 0x3e, 0x1c, 0x46, 0x5e, 0xe3, 0x91, 0xbf, 0x23, 0x46, 0xde, 0x21, 0x8a, 0xa3, 0x84, 0xfe, 0x1d, - 0x3e, 0xf4, 0x1b, 0x1c, 0xf4, 0xc5, 0x83, 0xb0, 0x32, 0x86, 0x70, 0xfb, 0x32, 0x64, 0xc9, 0xe9, - 0xb8, 0xdf, 0x4e, 0x71, 0x7e, 0x7f, 0x0a, 0x26, 0x48, 0x93, 0xf5, 0xe7, 0x1d, 0xde, 0xab, 0xfb, - 0x45, 0xdf, 0x74, 0xb0, 0xed, 0x7b, 0x2c, 0x78, 0xaf, 0x2e, 0x0f, 0x9e, 0x57, 0x72, 0xf7, 0x54, - 0x9e, 0x6e, 0x44, 0xfa, 0x09, 0x43, 0x4f, 0x4a, 0xc2, 0x12, 0x1f, 0xd9, 0x79, 0xb9, 0x61, 0x26, - 0x25, 0x03, 0x18, 0x49, 0x1f, 0xf8, 0xbf, 0xc8, 0xc2, 0x29, 0xba, 0xaa, 0xb4, 0x64, 0x5b, 0x3b, - 0x3d, 0xb7, 0x5b, 0x19, 0x07, 0xd7, 0x85, 0xeb, 0x61, 0xce, 0xe1, 0xfc, 0xb1, 0x99, 0x4e, 0xf4, - 0xa4, 0xa2, 0x3f, 0x0b, 0xfb, 0x54, 0x3c, 0x8d, 0x47, 0x72, 0x21, 0x46, 0x80, 0x51, 0xbc, 0x27, - 0x5e, 0xa8, 0x17, 0x64, 0x34, 0xb4, 0x48, 0x25, 0x0f, 0xb5, 0x66, 0xe9, 0xeb, 0x54, 0x4e, 0x44, - 0xa7, 0xde, 0xeb, 0xeb, 0xd4, 0xcf, 0x70, 0x3a, 0xb5, 0x7c, 0x70, 0x91, 0xa4, 0xaf, 0x5b, 0xaf, - 0xf4, 0x37, 0x86, 0xfc, 0x6d, 0xbb, 0x9d, 0x14, 0x36, 0xeb, 0xc2, 0xfe, 0x48, 0x59, 0xce, 0x1f, - 0x89, 0xbf, 0x8f, 0x22, 0xc1, 0x4c, 0x98, 0xe7, 0x3a, 0x42, 0x97, 0xe6, 0x40, 0x32, 0x3c, 0xee, - 0x24, 0xa3, 0x35, 0xd4, 0x5c, 0x37, 0xb6, 0xa0, 0x31, 0xac, 0x2d, 0xcd, 0x41, 0x7e, 0xc9, 0x68, - 0x3b, 0xd8, 0x46, 0x5f, 0x66, 0x33, 0xdd, 0x57, 0xa6, 0x38, 0x00, 0x2c, 0x42, 0x7e, 0x93, 0x94, - 0xc6, 0x4c, 0xe6, 0x9b, 0xc4, 0x5a, 0x0f, 0xe5, 0x50, 0x63, 0xff, 0x26, 0x8d, 0xce, 0xd7, 0x43, - 0x66, 0x64, 0x53, 0xe4, 0x04, 0xd1, 0xf9, 0x06, 0xb3, 0x30, 0x96, 0x8b, 0xa9, 0xf2, 0x1a, 0xde, - 0x71, 0xc7, 0xf8, 0x0b, 0xe9, 0x21, 0x5c, 0x00, 0xd9, 0x68, 0x75, 0x49, 0xe7, 0x38, 0xa5, 0xb9, - 0x8f, 0x49, 0x7d, 0x85, 0x7a, 0x45, 0x45, 0x59, 0x1e, 0xb7, 0xaf, 0x90, 0x10, 0x17, 0xe9, 0x63, - 0xf6, 0x3d, 0xe2, 0x28, 0xda, 0x69, 0xeb, 0x4d, 0xec, 0x72, 0x9f, 0x1a, 0x6a, 0xb4, 0x27, 0xcb, - 0x7a, 0x3d, 0x59, 0xa8, 0x9d, 0xe6, 0x0e, 0xd0, 0x4e, 0x87, 0x5d, 0x86, 0xf4, 0x65, 0x4e, 0x2a, - 0x7e, 0x68, 0xcb, 0x90, 0xb1, 0x6c, 0x8c, 0xe1, 0xda, 0x51, 0xef, 0x20, 0xed, 0x58, 0x5b, 0xeb, - 0xb0, 0x9b, 0x34, 0x4c, 0x58, 0x23, 0x3b, 0x34, 0x3b, 0xcc, 0x26, 0x4d, 0x34, 0x0f, 0x63, 0x40, - 0x6b, 0x8e, 0xa1, 0xf5, 0x59, 0x36, 0x8c, 0xa6, 0xbc, 0x4f, 0xda, 0xb5, 0x6c, 0x27, 0xd9, 0x3e, - 0xa9, 0xcb, 0x9d, 0x46, 0xfe, 0x4b, 0x7a, 0xf0, 0x8a, 0x3f, 0x57, 0x3d, 0xaa, 0xe1, 0x33, 0xc1, - 0xc1, 0xab, 0x41, 0x0c, 0xa4, 0x0f, 0xef, 0x9b, 0x0e, 0x69, 0xf0, 0x1c, 0xb6, 0x39, 0xb2, 0x36, - 0x30, 0xb2, 0xa1, 0x73, 0x98, 0xe6, 0x18, 0xcd, 0x43, 0xfa, 0x78, 0x7d, 0x3b, 0x34, 0x70, 0xbe, - 0x61, 0x8c, 0x03, 0xa7, 0xd7, 0x32, 0x73, 0x43, 0xb6, 0xcc, 0x61, 0xf7, 0x7f, 0x98, 0xac, 0x47, - 0x37, 0x60, 0x0e, 0xb3, 0xff, 0x13, 0xc3, 0x44, 0xfa, 0x88, 0xbf, 0x51, 0x86, 0x5c, 0x6d, 0xfc, - 0xe3, 0xe5, 0xb0, 0x73, 0x11, 0x22, 0xab, 0xda, 0xc8, 0x86, 0xcb, 0x61, 0xe6, 0x22, 0x91, 0x2c, - 0x8c, 0x21, 0xf0, 0xfe, 0x51, 0x98, 0x21, 0x4b, 0x22, 0xde, 0x36, 0xeb, 0xb7, 0xd9, 0xa8, 0xf9, - 0x70, 0x8a, 0x6d, 0xf5, 0x1e, 0x98, 0xf4, 0xf6, 0xef, 0xd8, 0xc8, 0x39, 0x2f, 0xd6, 0x3e, 0x3d, - 0x2e, 0x35, 0xff, 0xff, 0x03, 0x39, 0x43, 0x8c, 0x7c, 0xaf, 0x76, 0x58, 0x67, 0x88, 0x43, 0xdd, - 0xaf, 0xfd, 0xd3, 0x60, 0x44, 0xfd, 0x2f, 0xe9, 0x61, 0xde, 0xbb, 0x8f, 0x9b, 0xed, 0xb3, 0x8f, - 0xfb, 0xd1, 0x30, 0x96, 0x35, 0x1e, 0xcb, 0x3b, 0x45, 0x45, 0x38, 0xc2, 0xb1, 0xf6, 0x9d, 0x3e, - 0x9c, 0x67, 0x39, 0x38, 0x17, 0x0e, 0xc4, 0xcb, 0x18, 0x0e, 0x3e, 0x66, 0x83, 0x31, 0xf7, 0x63, - 0x29, 0xb6, 0xe3, 0x9e, 0x53, 0x15, 0xd9, 0x7d, 0xa7, 0x2a, 0xb8, 0x96, 0x9e, 0x3b, 0x60, 0x4b, - 0xff, 0x58, 0x58, 0x3b, 0xea, 0xbc, 0x76, 0x3c, 0x55, 0x1c, 0x91, 0xd1, 0x8d, 0xcc, 0xef, 0xf2, - 0xd5, 0xe3, 0x1c, 0xa7, 0x1e, 0xa5, 0x83, 0x31, 0x93, 0xbe, 0x7e, 0xfc, 0x91, 0x37, 0xa1, 0x3d, - 0xe4, 0xf6, 0x3e, 0xec, 0x56, 0x31, 0x27, 0xc4, 0x91, 0x8d, 0xdc, 0xc3, 0x6c, 0x15, 0x0f, 0xe2, - 0x64, 0x0c, 0xb1, 0xd8, 0x66, 0x61, 0x9a, 0xf0, 0x74, 0xce, 0x68, 0x6d, 0x61, 0x07, 0xbd, 0x8a, - 0xfa, 0x28, 0x7a, 0x91, 0x2f, 0x47, 0x14, 0x9e, 0x28, 0xea, 0xbc, 0x6b, 0x52, 0x8f, 0x0e, 0xca, - 0xe4, 0x7c, 0x88, 0xc1, 0x71, 0x47, 0x50, 0x1c, 0xc8, 0x41, 0xfa, 0x90, 0x7d, 0x98, 0xba, 0xdb, - 0xac, 0xea, 0x97, 0xac, 0x5d, 0x07, 0x3d, 0x38, 0x82, 0x0e, 0x7a, 0x01, 0xf2, 0x6d, 0x42, 0x8d, - 0x1d, 0xcb, 0x88, 0x9f, 0xee, 0x30, 0x11, 0xd0, 0xf2, 0x35, 0xf6, 0x67, 0xd2, 0xb3, 0x19, 0x81, - 0x1c, 0x29, 0x9d, 0x71, 0x9f, 0xcd, 0x18, 0x50, 0xfe, 0x58, 0xee, 0xd8, 0x99, 0x74, 0x4b, 0x37, - 0x76, 0x0c, 0x67, 0x44, 0x11, 0x1c, 0xda, 0x2e, 0x2d, 0x2f, 0x82, 0x03, 0x79, 0x49, 0x7a, 0x62, - 0x34, 0x24, 0x15, 0xf7, 0xf7, 0x71, 0x9f, 0x18, 0x8d, 0x2f, 0x3e, 0x7d, 0x4c, 0x7e, 0x83, 0xb6, - 0xac, 0xb3, 0xd4, 0xf9, 0x36, 0x45, 0xbf, 0xde, 0xa1, 0x1b, 0x0b, 0x65, 0xed, 0xf0, 0x1a, 0x4b, - 0xdf, 0xf2, 0xd3, 0x07, 0xe6, 0xbf, 0xff, 0x38, 0xe4, 0x16, 0xf1, 0xf9, 0xdd, 0x2d, 0x74, 0x07, - 0x4c, 0xd6, 0x6d, 0x8c, 0xcb, 0xe6, 0xa6, 0xe5, 0x4a, 0xd7, 0x71, 0x9f, 0x3d, 0x48, 0xd8, 0x9b, - 0x8b, 0xc7, 0x36, 0xd6, 0x5b, 0xc1, 0xf9, 0x33, 0xef, 0x15, 0xbd, 0x58, 0x82, 0x6c, 0xcd, 0xd1, - 0x1d, 0x34, 0xe5, 0x63, 0x8b, 0x1e, 0x0c, 0x63, 0x71, 0x07, 0x8f, 0xc5, 0xf5, 0x9c, 0x2c, 0x08, - 0x07, 0xf3, 0xee, 0xff, 0x11, 0x00, 0x20, 0x98, 0xbc, 0xbf, 0x6b, 0x99, 0x6e, 0x0e, 0xef, 0x08, - 0xa4, 0xf7, 0x8e, 0x5e, 0xe1, 0x8b, 0xfb, 0x2e, 0x4e, 0xdc, 0x8f, 0x15, 0x2b, 0x62, 0x0c, 0x2b, - 0x6d, 0x12, 0x4c, 0xb9, 0xa2, 0x5d, 0xc1, 0x7a, 0xab, 0x8b, 0x7e, 0x2c, 0x50, 0xfe, 0x08, 0x31, - 0xa3, 0xf7, 0x09, 0x07, 0xe3, 0xa4, 0xb5, 0xf2, 0x89, 0x47, 0x7b, 0x74, 0x78, 0x9b, 0xff, 0x12, - 0x1f, 0x8c, 0xe4, 0x66, 0xc8, 0x1a, 0xe6, 0xa6, 0xc5, 0xfc, 0x0b, 0xaf, 0x8c, 0xa0, 0xed, 0xea, - 0x84, 0x46, 0x32, 0x0a, 0x46, 0xea, 0x8c, 0x67, 0x6b, 0x2c, 0x97, 0xde, 0x65, 0xdd, 0xd2, 0xd1, - 0xff, 0x7f, 0xa0, 0xb0, 0x15, 0x05, 0xb2, 0x1d, 0xdd, 0xd9, 0x66, 0x45, 0x93, 0x67, 0xd7, 0x46, - 0xde, 0x35, 0x75, 0xd3, 0x32, 0x2f, 0xed, 0x18, 0x4f, 0xf7, 0xef, 0xd6, 0xe5, 0xd2, 0x5c, 0xce, - 0xb7, 0xb0, 0x89, 0x6d, 0xdd, 0xc1, 0xb5, 0xbd, 0x2d, 0x32, 0xc7, 0x9a, 0xd4, 0xc2, 0x49, 0x89, - 0xf5, 0xdf, 0xe5, 0x38, 0x5a, 0xff, 0x37, 0x8d, 0x36, 0x26, 0x91, 0x9a, 0x98, 0xfe, 0x7b, 0xef, - 0x89, 0xf4, 0xbf, 0x4f, 0x11, 0xe9, 0xa3, 0xf1, 0x7d, 0x09, 0x66, 0x6a, 0xae, 0xc2, 0xd5, 0x76, - 0x77, 0x76, 0x74, 0xfb, 0x12, 0xba, 0x36, 0x40, 0x25, 0xa4, 0x9a, 0x19, 0xde, 0x2f, 0xe5, 0x0f, - 0x85, 0xaf, 0x95, 0x66, 0x4d, 0x3b, 0x54, 0x42, 0xe2, 0x76, 0xf0, 0x78, 0xc8, 0xb9, 0xea, 0xed, - 0x79, 0x5c, 0xc6, 0x36, 0x04, 0x9a, 0x53, 0x30, 0xa2, 0xd5, 0x40, 0xde, 0xc6, 0x10, 0x4d, 0x43, - 0x82, 0xa3, 0x35, 0x47, 0x6f, 0x5e, 0x58, 0xb6, 0x6c, 0x6b, 0xd7, 0x31, 0x4c, 0xdc, 0x45, 0x8f, - 0x0a, 0x10, 0xf0, 0xf4, 0x3f, 0x13, 0xe8, 0x3f, 0xfa, 0xf7, 0x8c, 0xe8, 0x28, 0xea, 0x77, 0xab, - 0x61, 0xf2, 0x11, 0x01, 0xaa, 0xc4, 0xc6, 0x45, 0x11, 0x8a, 0xe9, 0x0b, 0xed, 0x0d, 0x32, 0x14, - 0xd4, 0x07, 0x3a, 0x96, 0xed, 0xac, 0x5a, 0x4d, 0xbd, 0xdd, 0x75, 0x2c, 0x1b, 0xa3, 0x6a, 0xac, - 0xd4, 0xdc, 0x1e, 0xa6, 0x65, 0x35, 0x83, 0xc1, 0x91, 0xbd, 0x85, 0xd5, 0x4e, 0xe6, 0x75, 0xfc, - 0xc3, 0xc2, 0xbb, 0x8c, 0x54, 0x2a, 0xbd, 0x1c, 0x45, 0xe8, 0x79, 0xbf, 0x2e, 0x2d, 0xd9, 0x61, - 0x09, 0xb1, 0x9d, 0x47, 0x21, 0xa6, 0xc6, 0xb0, 0x54, 0x2e, 0xc1, 0x6c, 0x6d, 0xf7, 0xbc, 0x4f, - 0xa4, 0x1b, 0x36, 0x42, 0x5e, 0x2d, 0x1c, 0xa5, 0x82, 0x29, 0x5e, 0x98, 0x50, 0x84, 0x7c, 0xaf, - 0x83, 0xd9, 0x6e, 0x38, 0x1b, 0xc3, 0x9b, 0x4f, 0x14, 0x8c, 0x4e, 0x31, 0xb8, 0xd4, 0xf4, 0x05, - 0xf8, 0x2e, 0x09, 0x66, 0xab, 0x1d, 0x6c, 0xe2, 0x16, 0xf5, 0x82, 0xe4, 0x04, 0xf8, 0xe2, 0x84, - 0x02, 0xe4, 0x08, 0x45, 0x08, 0x30, 0xf0, 0x58, 0x5e, 0xf4, 0x84, 0x17, 0x24, 0x24, 0x12, 0x5c, - 0x5c, 0x69, 0xe9, 0x0b, 0xee, 0x4b, 0x12, 0x4c, 0x6b, 0xbb, 0xe6, 0xba, 0x6d, 0xb9, 0xa3, 0xb1, - 0x8d, 0xee, 0x0c, 0x3a, 0x88, 0x9b, 0xe0, 0x58, 0x6b, 0xd7, 0x26, 0xeb, 0x4f, 0x65, 0xb3, 0x86, - 0x9b, 0x96, 0xd9, 0xea, 0x92, 0x7a, 0xe4, 0xb4, 0xfd, 0x1f, 0x6e, 0xcf, 0x3e, 0xfb, 0x1b, 0x72, - 0x06, 0x3d, 0x57, 0x38, 0xd4, 0x0d, 0xad, 0x7c, 0xa8, 0x68, 0xf1, 0x9e, 0x40, 0x30, 0xa0, 0xcd, - 0xa0, 0x12, 0xd2, 0x17, 0xee, 0x67, 0x25, 0x50, 0x8a, 0xcd, 0xa6, 0xb5, 0x6b, 0x3a, 0x35, 0xdc, - 0xc6, 0x4d, 0xa7, 0x6e, 0xeb, 0x4d, 0x1c, 0xb6, 0x9f, 0x0b, 0x20, 0xb7, 0x0c, 0x9b, 0xf5, 0xc1, - 0xee, 0x23, 0x93, 0xe3, 0x8b, 0x85, 0x77, 0x1c, 0x69, 0x2d, 0xf7, 0x97, 0x92, 0x40, 0x9c, 0x62, - 0xfb, 0x8a, 0x82, 0x05, 0xa5, 0x2f, 0xd5, 0x8f, 0x49, 0x30, 0xe5, 0xf5, 0xd8, 0x5b, 0x22, 0xc2, - 0xfc, 0x8d, 0x84, 0x93, 0x11, 0x9f, 0x78, 0x02, 0x19, 0xbe, 0x2d, 0xc1, 0xac, 0x22, 0x8a, 0x7e, - 0x32, 0xd1, 0x15, 0x93, 0x8b, 0xce, 0x7d, 0xad, 0x54, 0x1b, 0x4b, 0xd5, 0xd5, 0x45, 0x55, 0x2b, - 0xc8, 0xe8, 0xcb, 0x12, 0x64, 0xd7, 0x0d, 0x73, 0x2b, 0x1c, 0x5d, 0xe9, 0xb8, 0x6b, 0x47, 0xb6, - 0xf0, 0x03, 0xac, 0xa5, 0xd3, 0x17, 0xe5, 0x56, 0x38, 0x6e, 0xee, 0xee, 0x9c, 0xc7, 0x76, 0x75, - 0x93, 0x8c, 0xb2, 0xdd, 0xba, 0x55, 0xc3, 0x26, 0x35, 0x42, 0x73, 0x5a, 0xdf, 0x6f, 0xbc, 0x09, - 0x26, 0x30, 0x79, 0x70, 0x39, 0x89, 0x90, 0xb8, 0xcf, 0x94, 0x14, 0x62, 0x2a, 0xd1, 0xb4, 0xa1, - 0x0f, 0xf1, 0xf4, 0x35, 0xf5, 0x8f, 0x73, 0x70, 0xa2, 0x68, 0x5e, 0x22, 0x36, 0x05, 0xed, 0xe0, - 0x4b, 0xdb, 0xba, 0xb9, 0x85, 0xc9, 0x00, 0xe1, 0x4b, 0x3c, 0x1c, 0xa2, 0x3f, 0xc3, 0x87, 0xe8, - 0x57, 0x34, 0x98, 0xb0, 0xec, 0x16, 0xb6, 0x17, 0x2e, 0x11, 0x9e, 0x7a, 0x97, 0x9d, 0x59, 0x9b, - 0xec, 0x57, 0xc4, 0x3c, 0x23, 0x3f, 0x5f, 0xa5, 0xff, 0x6b, 0x1e, 0xa1, 0x33, 0x37, 0xc1, 0x04, - 0x4b, 0x53, 0x66, 0x60, 0xb2, 0xaa, 0x2d, 0xaa, 0x5a, 0xa3, 0xbc, 0x58, 0x38, 0xa2, 0x5c, 0x06, - 0x47, 0xcb, 0x75, 0x55, 0x2b, 0xd6, 0xcb, 0xd5, 0x4a, 0x83, 0xa4, 0x17, 0x32, 0xe8, 0x59, 0x59, - 0x51, 0xcf, 0xde, 0x78, 0x66, 0xfa, 0xc1, 0xaa, 0xc1, 0x44, 0x93, 0x66, 0x20, 0x43, 0xe8, 0x74, - 0xa2, 0xda, 0x31, 0x82, 0x34, 0x41, 0xf3, 0x08, 0x29, 0xa7, 0x01, 0x2e, 0xda, 0x96, 0xb9, 0x15, - 0x9c, 0x3a, 0x9c, 0xd4, 0x42, 0x29, 0xe8, 0xc1, 0x0c, 0xe4, 0xe9, 0x3f, 0xe4, 0x4a, 0x12, 0xf2, - 0x14, 0x08, 0xde, 0x7b, 0x77, 0x2d, 0x5e, 0x22, 0xaf, 0x60, 0xa2, 0xc5, 0x5e, 0x5d, 0x5d, 0xa4, - 0x32, 0xa0, 0x96, 0x30, 0xab, 0xca, 0xcd, 0x90, 0xa7, 0xff, 0x32, 0xaf, 0x83, 0xe8, 0xf0, 0xa2, - 0x34, 0x9b, 0xa0, 0x9f, 0xb2, 0xb8, 0x4c, 0xd3, 0xd7, 0xe6, 0xf7, 0x4b, 0x30, 0x59, 0xc1, 0x4e, - 0x69, 0x1b, 0x37, 0x2f, 0xa0, 0xc7, 0xf0, 0x0b, 0xa0, 0x6d, 0x03, 0x9b, 0xce, 0x7d, 0x3b, 0x6d, - 0x7f, 0x01, 0xd4, 0x4b, 0x40, 0xcf, 0x09, 0x77, 0xbe, 0x77, 0xf3, 0xfa, 0x73, 0x63, 0x9f, 0xba, - 0x7a, 0x25, 0x44, 0xa8, 0xcc, 0x49, 0xc8, 0xdb, 0xb8, 0xbb, 0xdb, 0xf6, 0x16, 0xd1, 0xd8, 0x1b, - 0x7a, 0xc8, 0x17, 0x67, 0x89, 0x13, 0xe7, 0xcd, 0xe2, 0x45, 0x8c, 0x21, 0x5e, 0x69, 0x16, 0x26, - 0xca, 0xa6, 0xe1, 0x18, 0x7a, 0x1b, 0x3d, 0x37, 0x0b, 0xb3, 0x35, 0xec, 0xac, 0xeb, 0xb6, 0xbe, - 0x83, 0x1d, 0x6c, 0x77, 0xd1, 0x77, 0xf9, 0x3e, 0xa1, 0xd3, 0xd6, 0x9d, 0x4d, 0xcb, 0xde, 0xf1, - 0x54, 0xd3, 0x7b, 0x77, 0x55, 0x73, 0x0f, 0xdb, 0xdd, 0x80, 0x2f, 0xef, 0xd5, 0xfd, 0x72, 0xd1, - 0xb2, 0x2f, 0xb8, 0x83, 0x20, 0x9b, 0xa6, 0xb1, 0x57, 0x97, 0x5e, 0xdb, 0xda, 0x5a, 0xc5, 0x7b, - 0xd8, 0x0b, 0x97, 0xe6, 0xbf, 0xbb, 0x73, 0x81, 0x96, 0x55, 0xb1, 0x1c, 0xb7, 0xd3, 0x5e, 0xb5, - 0xb6, 0x68, 0xbc, 0xd8, 0x49, 0x8d, 0x4f, 0x0c, 0x72, 0xe9, 0x7b, 0x98, 0xe4, 0xca, 0x87, 0x73, - 0xb1, 0x44, 0x65, 0x1e, 0x14, 0xff, 0xb7, 0x3a, 0x6e, 0xe3, 0x1d, 0xec, 0xd8, 0x97, 0xc8, 0xb5, - 0x10, 0x93, 0x5a, 0x9f, 0x2f, 0x6c, 0x80, 0x16, 0x9f, 0xac, 0x33, 0xe9, 0xcd, 0x73, 0x92, 0x3b, - 0xd0, 0x64, 0x5d, 0x84, 0xe2, 0x58, 0xae, 0xbd, 0x92, 0x5d, 0x6b, 0xe6, 0xa5, 0x32, 0x64, 0xc9, - 0xe0, 0xf9, 0xc6, 0x0c, 0xb7, 0xc2, 0xb4, 0x83, 0xbb, 0x5d, 0x7d, 0x0b, 0x7b, 0x2b, 0x4c, 0xec, - 0x55, 0xb9, 0x0d, 0x72, 0x6d, 0x82, 0x29, 0x1d, 0x1c, 0xae, 0xe5, 0x6a, 0xe6, 0x1a, 0x18, 0x2e, - 0x2d, 0x7f, 0x24, 0x20, 0x70, 0x6b, 0xf4, 0x8f, 0x33, 0xf7, 0x40, 0x8e, 0xc2, 0x3f, 0x05, 0xb9, - 0x45, 0x75, 0x61, 0x63, 0xb9, 0x70, 0xc4, 0x7d, 0xf4, 0xf8, 0x9b, 0x82, 0xdc, 0x52, 0xb1, 0x5e, - 0x5c, 0x2d, 0x48, 0x6e, 0x3d, 0xca, 0x95, 0xa5, 0x6a, 0x41, 0x76, 0x13, 0xd7, 0x8b, 0x95, 0x72, - 0xa9, 0x90, 0x55, 0xa6, 0x61, 0xe2, 0x5c, 0x51, 0xab, 0x94, 0x2b, 0xcb, 0x85, 0x1c, 0xfa, 0xdb, - 0x30, 0x7e, 0xb7, 0xf3, 0xf8, 0x5d, 0x17, 0xc5, 0x53, 0x3f, 0xc8, 0x5e, 0xe6, 0x43, 0x76, 0x27, - 0x07, 0xd9, 0x8f, 0x8b, 0x10, 0x19, 0x83, 0x3b, 0x53, 0x1e, 0x26, 0xd6, 0x6d, 0xab, 0x89, 0xbb, - 0x5d, 0xf4, 0x9b, 0x12, 0xe4, 0x4b, 0xba, 0xd9, 0xc4, 0x6d, 0x74, 0x45, 0x00, 0x15, 0x75, 0x15, - 0xcd, 0xf8, 0xa7, 0xc5, 0xfe, 0x31, 0x23, 0xda, 0xfb, 0x31, 0xba, 0xf3, 0x94, 0x66, 0x84, 0x7c, - 0xc4, 0x7a, 0xb9, 0x58, 0x52, 0x63, 0xb8, 0x1a, 0x47, 0x82, 0x29, 0xb6, 0x1a, 0x70, 0x1e, 0x87, - 0xe7, 0xe1, 0xdf, 0xcd, 0x88, 0x4e, 0x0e, 0xbd, 0x1a, 0xf8, 0x64, 0x22, 0xe4, 0x21, 0x36, 0x11, - 0x1c, 0x44, 0x6d, 0x0c, 0x9b, 0x87, 0x12, 0x4c, 0x6f, 0x98, 0xdd, 0x7e, 0x42, 0x11, 0x8f, 0xa3, - 0xef, 0x55, 0x23, 0x44, 0xe8, 0x40, 0x71, 0xf4, 0x07, 0xd3, 0x4b, 0x5f, 0x30, 0xdf, 0xcd, 0xc0, - 0xf1, 0x65, 0x6c, 0x62, 0xdb, 0x68, 0xd2, 0x1a, 0x78, 0x92, 0xb8, 0x93, 0x97, 0xc4, 0x63, 0x38, - 0xce, 0xfb, 0xfd, 0xc1, 0x4b, 0xe0, 0x95, 0xbe, 0x04, 0xee, 0xe6, 0x24, 0x70, 0x93, 0x20, 0x9d, - 0x31, 0xdc, 0x87, 0x3e, 0x05, 0x33, 0x15, 0xcb, 0x31, 0x36, 0x8d, 0x26, 0xf5, 0x41, 0x7b, 0x89, - 0x0c, 0xd9, 0x55, 0xa3, 0xeb, 0xa0, 0x62, 0xd0, 0x9d, 0x5c, 0x03, 0xd3, 0x86, 0xd9, 0x6c, 0xef, - 0xb6, 0xb0, 0x86, 0x75, 0xda, 0xaf, 0x4c, 0x6a, 0xe1, 0xa4, 0x60, 0x6b, 0xdf, 0x65, 0x4b, 0xf6, - 0xb6, 0xf6, 0x3f, 0x25, 0xbc, 0x0c, 0x13, 0x66, 0x81, 0x04, 0xa4, 0x8c, 0xb0, 0xbb, 0x8a, 0x30, - 0x6b, 0x86, 0xb2, 0x7a, 0x06, 0x7b, 0xef, 0x85, 0x02, 0x61, 0x72, 0x1a, 0xff, 0x07, 0x7a, 0x8f, - 0x50, 0x63, 0x1d, 0xc4, 0x50, 0x32, 0x64, 0x96, 0x86, 0x98, 0x24, 0x2b, 0x30, 0x57, 0xae, 0xd4, - 0x55, 0xad, 0x52, 0x5c, 0x65, 0x59, 0x64, 0xf4, 0x7d, 0x09, 0x72, 0x1a, 0xee, 0xb4, 0x2f, 0x85, - 0x23, 0x46, 0x33, 0x47, 0xf1, 0x8c, 0xef, 0x28, 0xae, 0x2c, 0x01, 0xe8, 0x4d, 0xb7, 0x60, 0x72, - 0xa5, 0x96, 0xd4, 0x37, 0x8e, 0x29, 0x57, 0xc1, 0xa2, 0x9f, 0x5b, 0x0b, 0xfd, 0x89, 0x9e, 0x27, - 0xbc, 0x73, 0xc4, 0x51, 0x23, 0x1c, 0x46, 0xf4, 0x09, 0xef, 0x15, 0xda, 0xec, 0x19, 0x48, 0xee, - 0x70, 0xc4, 0xff, 0x15, 0x09, 0xb2, 0x75, 0xb7, 0xb7, 0x0c, 0x75, 0x9c, 0x9f, 0x1c, 0x4e, 0xc7, - 0x5d, 0x32, 0x11, 0x3a, 0x7e, 0x17, 0xcc, 0x84, 0x35, 0x96, 0xb9, 0x4a, 0xc4, 0xaa, 0x38, 0xf7, - 0xc3, 0x30, 0x1a, 0xde, 0x87, 0x9d, 0xc3, 0x11, 0xf1, 0xc7, 0x1f, 0x0b, 0xb0, 0x86, 0x77, 0xce, - 0x63, 0xbb, 0xbb, 0x6d, 0x74, 0xd0, 0xdf, 0xc9, 0x30, 0xb5, 0x8c, 0x9d, 0x9a, 0xa3, 0x3b, 0xbb, - 0xdd, 0x9e, 0xed, 0x4e, 0xd3, 0x2a, 0xe9, 0xcd, 0x6d, 0xcc, 0xba, 0x23, 0xef, 0x15, 0xbd, 0x43, - 0x16, 0xf5, 0x27, 0x0a, 0xca, 0x99, 0xf7, 0xcb, 0x88, 0xc0, 0xe4, 0x71, 0x90, 0x6d, 0xe9, 0x8e, - 0xce, 0xb0, 0xb8, 0xa2, 0x07, 0x8b, 0x80, 0x90, 0x46, 0xb2, 0xa1, 0xdf, 0x95, 0x44, 0x1c, 0x8a, - 0x04, 0xca, 0x4f, 0x06, 0xc2, 0x7b, 0x32, 0x43, 0xa0, 0x70, 0x0c, 0x66, 0x2b, 0xd5, 0x7a, 0x63, - 0xb5, 0xba, 0xbc, 0xac, 0xba, 0xa9, 0x05, 0x59, 0x39, 0x09, 0xca, 0x7a, 0xf1, 0xbe, 0x35, 0xb5, - 0x52, 0x6f, 0x54, 0xaa, 0x8b, 0x2a, 0xfb, 0x33, 0xab, 0x1c, 0x85, 0xe9, 0x52, 0xb1, 0xb4, 0xe2, - 0x25, 0xe4, 0x94, 0x53, 0x70, 0x7c, 0x4d, 0x5d, 0x5b, 0x50, 0xb5, 0xda, 0x4a, 0x79, 0xbd, 0xe1, - 0x92, 0x59, 0xaa, 0x6e, 0x54, 0x16, 0x0b, 0x79, 0x05, 0xc1, 0xc9, 0xd0, 0x97, 0x73, 0x5a, 0xb5, - 0xb2, 0xdc, 0xa8, 0xd5, 0x8b, 0x75, 0xb5, 0x30, 0xa1, 0x5c, 0x06, 0x47, 0x4b, 0xc5, 0x0a, 0xc9, - 0x5e, 0xaa, 0x56, 0x2a, 0x6a, 0xa9, 0x5e, 0x98, 0x44, 0xff, 0x9e, 0x85, 0xe9, 0x72, 0xb7, 0xa2, - 0xef, 0xe0, 0xb3, 0x7a, 0xdb, 0x68, 0xa1, 0xe7, 0x86, 0x66, 0x1e, 0xd7, 0xc1, 0xac, 0x4d, 0x1f, - 0x71, 0xab, 0x6e, 0x60, 0x8a, 0xe6, 0xac, 0xc6, 0x27, 0xba, 0x73, 0x72, 0x93, 0x10, 0xf0, 0xe6, - 0xe4, 0xf4, 0x4d, 0x59, 0x00, 0xa0, 0x4f, 0xf5, 0xe0, 0x72, 0xd7, 0x33, 0xbd, 0xad, 0x49, 0xdf, - 0xc1, 0x5d, 0x6c, 0xef, 0x19, 0x4d, 0xec, 0xe5, 0xd4, 0x42, 0x7f, 0xa1, 0xaf, 0xca, 0xa2, 0xfb, - 0x8b, 0x21, 0x50, 0x43, 0xd5, 0x89, 0xe8, 0x0d, 0x7f, 0x59, 0x16, 0xd9, 0x1d, 0x14, 0x22, 0x99, - 0x4c, 0x53, 0x5e, 0x20, 0x0d, 0xb7, 0x6c, 0x5b, 0xaf, 0x56, 0x1b, 0xb5, 0x95, 0xaa, 0x56, 0x2f, - 0xc8, 0xca, 0x0c, 0x4c, 0xba, 0xaf, 0xab, 0xd5, 0xca, 0x72, 0x21, 0xab, 0x9c, 0x80, 0x63, 0x2b, - 0xc5, 0x5a, 0xa3, 0x5c, 0x39, 0x5b, 0x5c, 0x2d, 0x2f, 0x36, 0x4a, 0x2b, 0x45, 0xad, 0x56, 0xc8, - 0x29, 0x57, 0xc0, 0x89, 0x7a, 0x59, 0xd5, 0x1a, 0x4b, 0x6a, 0xb1, 0xbe, 0xa1, 0xa9, 0xb5, 0x46, - 0xa5, 0xda, 0xa8, 0x14, 0xd7, 0xd4, 0x42, 0xde, 0x6d, 0xfe, 0xe4, 0x53, 0xa0, 0x36, 0x13, 0xfb, - 0x95, 0x71, 0x32, 0x42, 0x19, 0xa7, 0x7a, 0x95, 0x11, 0xc2, 0x6a, 0xa5, 0xa9, 0x35, 0x55, 0x3b, - 0xab, 0x16, 0xa6, 0xfb, 0xe9, 0xda, 0x8c, 0x72, 0x1c, 0x0a, 0x2e, 0x0f, 0x8d, 0x72, 0xcd, 0xcb, - 0xb9, 0x58, 0x98, 0x45, 0x1f, 0xcb, 0xc3, 0x49, 0x0d, 0x6f, 0x19, 0x5d, 0x07, 0xdb, 0xeb, 0xfa, - 0xa5, 0x1d, 0x6c, 0x3a, 0x5e, 0x27, 0xff, 0x2f, 0x89, 0x95, 0x71, 0x0d, 0x66, 0x3b, 0x94, 0xc6, - 0x1a, 0x76, 0xb6, 0xad, 0x16, 0x1b, 0x85, 0x1f, 0x13, 0xd9, 0x73, 0xcc, 0xaf, 0x87, 0xb3, 0x6b, - 0xfc, 0xdf, 0x21, 0xdd, 0x96, 0x63, 0x74, 0x3b, 0x3b, 0x8c, 0x6e, 0x2b, 0x57, 0xc1, 0xd4, 0x6e, - 0x17, 0xdb, 0xea, 0x8e, 0x6e, 0xb4, 0xbd, 0xcb, 0x39, 0xfd, 0x04, 0xf4, 0xd6, 0xac, 0xe8, 0x89, - 0x95, 0x50, 0x5d, 0xfa, 0x8b, 0x31, 0xa2, 0x6f, 0x3d, 0x0d, 0xc0, 0x2a, 0xbb, 0x61, 0xb7, 0x99, - 0xb2, 0x86, 0x52, 0x5c, 0xfe, 0xce, 0x1b, 0xed, 0xb6, 0x61, 0x6e, 0xf9, 0xfb, 0xfe, 0x41, 0x02, - 0x7a, 0x81, 0x2c, 0x72, 0x82, 0x25, 0x29, 0x6f, 0xc9, 0x5a, 0xd3, 0xf3, 0xa4, 0x31, 0xf7, 0xbb, - 0xfb, 0x9b, 0x4e, 0x5e, 0x29, 0xc0, 0x0c, 0x49, 0x63, 0x2d, 0xb0, 0x30, 0xe1, 0xf6, 0xc1, 0x1e, - 0xb9, 0x35, 0xb5, 0xbe, 0x52, 0x5d, 0xf4, 0xbf, 0x4d, 0xba, 0x24, 0x5d, 0x66, 0x8a, 0x95, 0xfb, - 0x48, 0x6b, 0x9c, 0x52, 0x1e, 0x05, 0x57, 0x84, 0x3a, 0xec, 0xe2, 0xaa, 0xa6, 0x16, 0x17, 0xef, - 0x6b, 0xa8, 0x4f, 0x2b, 0xd7, 0xea, 0x35, 0xbe, 0x71, 0x79, 0xed, 0x68, 0xda, 0xe5, 0x57, 0x5d, - 0x2b, 0x96, 0x57, 0x59, 0xff, 0xbe, 0x54, 0xd5, 0xd6, 0x8a, 0xf5, 0xc2, 0x0c, 0x7a, 0xa9, 0x0c, - 0x85, 0x65, 0xec, 0xac, 0x5b, 0xb6, 0xa3, 0xb7, 0x57, 0x0d, 0xf3, 0xc2, 0x86, 0xdd, 0xe6, 0x26, - 0x9b, 0xc2, 0x61, 0x3a, 0xf8, 0x21, 0x92, 0x23, 0x18, 0xbd, 0x23, 0xde, 0x21, 0xd9, 0x02, 0x65, - 0x0a, 0x12, 0xd0, 0x33, 0x24, 0x91, 0xe5, 0x6e, 0xf1, 0x52, 0x93, 0xe9, 0xc9, 0x33, 0xc7, 0x3d, - 0x3e, 0xf7, 0x41, 0x2d, 0x8f, 0x9e, 0x9d, 0x85, 0xc9, 0x25, 0xc3, 0xd4, 0xdb, 0xc6, 0xd3, 0xb9, - 0xf8, 0xa5, 0x41, 0x1f, 0x93, 0x89, 0xe9, 0x63, 0xa4, 0xa1, 0xc6, 0xcf, 0x5f, 0x97, 0x45, 0x97, - 0x17, 0x42, 0xb2, 0xf7, 0x98, 0x8c, 0x18, 0x3c, 0x3f, 0x20, 0x89, 0x2c, 0x2f, 0x0c, 0xa6, 0x97, - 0x0c, 0xc3, 0x4f, 0xfc, 0x70, 0xd8, 0x58, 0x3d, 0xed, 0x7b, 0xb2, 0x9f, 0x2a, 0x4c, 0xa1, 0x3f, - 0x97, 0x01, 0x2d, 0x63, 0xe7, 0x2c, 0xb6, 0xfd, 0xa9, 0x00, 0xe9, 0xf5, 0x99, 0xbd, 0x1d, 0x6a, - 0xb2, 0x6f, 0x0c, 0x03, 0x78, 0x8e, 0x07, 0xb0, 0x18, 0xd3, 0x78, 0x22, 0x48, 0x47, 0x34, 0xde, - 0x32, 0xe4, 0xbb, 0xe4, 0x3b, 0x53, 0xb3, 0xc7, 0x47, 0x0f, 0x97, 0x84, 0x58, 0x98, 0x3a, 0x25, - 0xac, 0x31, 0x02, 0xe8, 0x7b, 0xfe, 0x24, 0xe8, 0xa7, 0x39, 0xed, 0x58, 0x3a, 0x30, 0xb3, 0xc9, - 0xf4, 0xc5, 0x4e, 0x57, 0x5d, 0xfa, 0xd9, 0x37, 0xe8, 0x03, 0x39, 0x38, 0xde, 0xaf, 0x3a, 0xe8, - 0xf7, 0x32, 0xdc, 0x0e, 0x3b, 0x26, 0x43, 0x7e, 0x86, 0x6d, 0x20, 0xba, 0x2f, 0xca, 0x13, 0xe1, - 0x84, 0xbf, 0x0c, 0x57, 0xb7, 0x2a, 0xf8, 0x62, 0xb7, 0x8d, 0x1d, 0x07, 0xdb, 0xa4, 0x6a, 0x93, - 0x5a, 0xff, 0x8f, 0xca, 0x93, 0xe1, 0x72, 0xc3, 0xec, 0x1a, 0x2d, 0x6c, 0xd7, 0x8d, 0x4e, 0xb7, - 0x68, 0xb6, 0xea, 0xbb, 0x8e, 0x65, 0x1b, 0x3a, 0xbb, 0x4a, 0x72, 0x52, 0x8b, 0xfa, 0xac, 0xdc, - 0x08, 0x05, 0xa3, 0x5b, 0x35, 0xcf, 0x5b, 0xba, 0xdd, 0x32, 0xcc, 0xad, 0x55, 0xa3, 0xeb, 0x30, - 0x0f, 0xe0, 0x7d, 0xe9, 0xe8, 0xef, 0x65, 0xd1, 0xc3, 0x74, 0x03, 0x60, 0x8d, 0xe8, 0x50, 0x9e, - 0x23, 0x8b, 0x1c, 0x8f, 0x4b, 0x46, 0x3b, 0x99, 0xb2, 0x3c, 0x6b, 0xdc, 0x86, 0x44, 0xff, 0x11, - 0x9c, 0x74, 0x2d, 0x34, 0xdd, 0x33, 0x04, 0xce, 0xaa, 0x5a, 0x79, 0xa9, 0xac, 0xba, 0x66, 0xc5, - 0x09, 0x38, 0x16, 0x7c, 0x5b, 0xbc, 0xaf, 0x51, 0x53, 0x2b, 0xf5, 0xc2, 0xa4, 0xdb, 0x4f, 0xd1, - 0xe4, 0xa5, 0x62, 0x79, 0x55, 0x5d, 0x6c, 0xd4, 0xab, 0xee, 0x97, 0xc5, 0xe1, 0x4c, 0x0b, 0xf4, - 0x60, 0x16, 0x8e, 0x12, 0xd9, 0x5e, 0x22, 0x52, 0x75, 0x85, 0xd2, 0xe3, 0x6b, 0xeb, 0x03, 0x34, - 0x45, 0xc5, 0x8b, 0x3e, 0x23, 0x7c, 0x53, 0x66, 0x08, 0xc2, 0x9e, 0x32, 0x22, 0x34, 0xe3, 0xbb, - 0x92, 0x48, 0x84, 0x0a, 0x61, 0xb2, 0xc9, 0x94, 0xe2, 0x5f, 0xc7, 0x3d, 0xe2, 0x44, 0x83, 0x4f, - 0xac, 0xcc, 0x12, 0xf9, 0xf9, 0x69, 0xeb, 0x65, 0x8d, 0xa8, 0xc3, 0x1c, 0x00, 0x49, 0x21, 0x1a, - 0x44, 0xf5, 0xa0, 0xef, 0x78, 0x15, 0xa5, 0x07, 0xc5, 0x52, 0xbd, 0x7c, 0x56, 0x8d, 0xd2, 0x83, - 0x4f, 0xcb, 0x30, 0xb9, 0x8c, 0x1d, 0x77, 0x4e, 0xd5, 0x45, 0x4f, 0x11, 0x58, 0xff, 0x71, 0xcd, - 0x98, 0xb6, 0xd5, 0xd4, 0xdb, 0xfe, 0x32, 0x00, 0x7d, 0x43, 0xbf, 0x34, 0x8c, 0x09, 0xe2, 0x15, - 0x1d, 0x31, 0x5e, 0xfd, 0x24, 0xe4, 0x1c, 0xf7, 0x33, 0x5b, 0x86, 0xfe, 0xb1, 0xc8, 0xe1, 0xca, - 0x25, 0xb2, 0xa8, 0x3b, 0xba, 0x46, 0xf3, 0x87, 0x46, 0x27, 0x41, 0xdb, 0x25, 0x82, 0x91, 0x1f, - 0x46, 0xfb, 0xf3, 0x6f, 0x65, 0x38, 0x41, 0xdb, 0x47, 0xb1, 0xd3, 0xa9, 0x39, 0x96, 0x8d, 0x35, - 0xdc, 0xc4, 0x46, 0xc7, 0xe9, 0x59, 0xdf, 0xb3, 0x69, 0xaa, 0xb7, 0xd9, 0xcc, 0x5e, 0xd1, 0xeb, - 0x64, 0xd1, 0x18, 0xcc, 0xfb, 0xda, 0x63, 0x4f, 0x79, 0x11, 0x8d, 0xfd, 0xa3, 0x92, 0x48, 0x54, - 0xe5, 0x84, 0xc4, 0x93, 0x01, 0xf5, 0xa1, 0x43, 0x00, 0xca, 0x5b, 0xb9, 0xd1, 0xd4, 0x92, 0x5a, - 0x5e, 0x77, 0x07, 0x81, 0xab, 0xe1, 0xca, 0xf5, 0x0d, 0xad, 0xb4, 0x52, 0xac, 0xa9, 0x0d, 0x4d, - 0x5d, 0x2e, 0xd7, 0xea, 0xcc, 0x29, 0x8b, 0xfe, 0x35, 0xa1, 0x5c, 0x05, 0xa7, 0x6a, 0x1b, 0x0b, - 0xb5, 0x92, 0x56, 0x5e, 0x27, 0xe9, 0x9a, 0x5a, 0x51, 0xcf, 0xb1, 0xaf, 0x93, 0xe8, 0x7d, 0x05, - 0x98, 0x76, 0x27, 0x00, 0x35, 0x3a, 0x2f, 0x40, 0xdf, 0xca, 0xc2, 0xb4, 0x86, 0xbb, 0x56, 0x7b, - 0x8f, 0xcc, 0x11, 0xc6, 0x35, 0xf5, 0xf8, 0x8e, 0x2c, 0x7a, 0x7e, 0x3b, 0xc4, 0xec, 0x7c, 0x88, - 0xd1, 0xe8, 0x89, 0xa6, 0xbe, 0xa7, 0x1b, 0x6d, 0xfd, 0x3c, 0xeb, 0x6a, 0x26, 0xb5, 0x20, 0x41, - 0x99, 0x07, 0xc5, 0xba, 0x68, 0x62, 0xbb, 0xd6, 0xbc, 0xa8, 0x3a, 0xdb, 0xc5, 0x56, 0xcb, 0xc6, - 0xdd, 0x2e, 0x5b, 0xbd, 0xe8, 0xf3, 0x45, 0xb9, 0x01, 0x8e, 0x92, 0xd4, 0x50, 0x66, 0xea, 0x20, - 0xd3, 0x9b, 0xec, 0xe7, 0x2c, 0x9a, 0x97, 0xbc, 0x9c, 0xb9, 0x50, 0xce, 0x20, 0x39, 0x7c, 0x5c, - 0x22, 0xcf, 0x9f, 0xd2, 0xb9, 0x06, 0xa6, 0x4d, 0x7d, 0x07, 0xab, 0x0f, 0x74, 0x0c, 0x1b, 0x77, - 0x89, 0x63, 0x8c, 0xac, 0x85, 0x93, 0xd0, 0x07, 0x84, 0xce, 0x9b, 0x8b, 0x49, 0x2c, 0x99, 0xee, - 0x2f, 0x0f, 0xa1, 0xfa, 0x7d, 0xfa, 0x19, 0x19, 0xbd, 0x4f, 0x86, 0x19, 0xc6, 0x54, 0xd1, 0xbc, - 0x54, 0x6e, 0xa1, 0xab, 0x39, 0xe3, 0x57, 0x77, 0xd3, 0x3c, 0xe3, 0x97, 0xbc, 0xa0, 0x5f, 0x91, - 0x45, 0xdd, 0x9d, 0xfb, 0x54, 0x9c, 0x94, 0x11, 0xed, 0x38, 0xba, 0x69, 0xed, 0x32, 0x47, 0xd5, - 0x49, 0x8d, 0xbe, 0xa4, 0xb9, 0xa8, 0x87, 0x3e, 0x28, 0xe4, 0x4c, 0x2d, 0x58, 0x8d, 0x43, 0x02, - 0xf0, 0xe3, 0x32, 0xcc, 0x31, 0xae, 0x6a, 0xec, 0x9c, 0x8f, 0xd0, 0x81, 0xb7, 0x5f, 0x15, 0x36, - 0x04, 0xfb, 0xd4, 0x9f, 0x95, 0xf4, 0x88, 0x01, 0xf2, 0xc3, 0x42, 0xc1, 0xd1, 0x84, 0x2b, 0x72, - 0x48, 0x50, 0xbe, 0x2d, 0x0b, 0xd3, 0x1b, 0x5d, 0x6c, 0x33, 0xbf, 0x7d, 0xf4, 0x50, 0x16, 0xe4, - 0x65, 0xcc, 0x6d, 0xa4, 0x3e, 0x5f, 0xd8, 0xc3, 0x37, 0x5c, 0xd9, 0x10, 0x51, 0xd7, 0x46, 0x8a, - 0x80, 0xed, 0x7a, 0x98, 0xa3, 0x22, 0x2d, 0x3a, 0x8e, 0x6b, 0x24, 0x7a, 0xde, 0xb4, 0x3d, 0xa9, - 0xa3, 0xd8, 0x2a, 0x22, 0x65, 0xb9, 0x59, 0x4a, 0x2e, 0x4f, 0xab, 0x78, 0x93, 0xce, 0x67, 0xb3, - 0x5a, 0x4f, 0xaa, 0x72, 0x0b, 0x5c, 0x66, 0x75, 0x30, 0x3d, 0xbf, 0x12, 0xca, 0x9c, 0x23, 0x99, - 0xfb, 0x7d, 0x42, 0xdf, 0x12, 0xf2, 0xd5, 0x15, 0x97, 0x4e, 0x32, 0x5d, 0xe8, 0x8c, 0xc6, 0x24, - 0x39, 0x0e, 0x05, 0x37, 0x07, 0xd9, 0x7f, 0xd1, 0xd4, 0x5a, 0x75, 0xf5, 0xac, 0xda, 0x7f, 0x19, - 0x23, 0x87, 0x9e, 0x25, 0xc3, 0xd4, 0x82, 0x6d, 0xe9, 0xad, 0xa6, 0xde, 0x75, 0xd0, 0xf7, 0x24, - 0x98, 0x59, 0xd7, 0x2f, 0xb5, 0x2d, 0xbd, 0x45, 0xfc, 0xfb, 0x7b, 0xfa, 0x82, 0x0e, 0xfd, 0xe4, - 0xf5, 0x05, 0xec, 0x95, 0x3f, 0x18, 0xe8, 0x1f, 0xdd, 0xcb, 0x88, 0x5c, 0xa8, 0xe9, 0x6f, 0xf3, - 0x49, 0xfd, 0x82, 0x95, 0x7a, 0x7c, 0xcd, 0x87, 0x79, 0x8a, 0xb0, 0x28, 0xdf, 0x27, 0x16, 0x7e, - 0x54, 0x84, 0xe4, 0xe1, 0xec, 0xca, 0x3f, 0x7b, 0x12, 0xf2, 0x8b, 0x98, 0x58, 0x71, 0xff, 0x43, - 0x82, 0x89, 0x1a, 0x76, 0x88, 0x05, 0x77, 0x1b, 0xe7, 0x29, 0xdc, 0x22, 0x19, 0x02, 0x27, 0x76, - 0xef, 0xdd, 0x9d, 0xac, 0x87, 0xce, 0x5b, 0x93, 0xe7, 0x04, 0x1e, 0x89, 0xb4, 0xdc, 0x79, 0x56, - 0xe6, 0x81, 0x3c, 0x12, 0x63, 0x49, 0xa5, 0xef, 0x6b, 0xf5, 0x0e, 0x89, 0xb9, 0x56, 0x85, 0x7a, - 0xbd, 0x57, 0x85, 0xf5, 0x33, 0xd6, 0xdb, 0x8c, 0x31, 0x1f, 0xe3, 0x1c, 0xf5, 0x04, 0x98, 0xa0, - 0x32, 0xf7, 0xe6, 0xa3, 0xbd, 0x7e, 0x0a, 0x94, 0x04, 0x39, 0x7b, 0xed, 0xe5, 0x14, 0x74, 0x51, - 0x8b, 0x2e, 0x7c, 0x2c, 0x31, 0x08, 0x66, 0x2a, 0xd8, 0xb9, 0x68, 0xd9, 0x17, 0x6a, 0x8e, 0xee, - 0x60, 0xf4, 0xaf, 0x12, 0xc8, 0x35, 0xec, 0x84, 0xa3, 0x9f, 0x54, 0xe0, 0x18, 0xad, 0x10, 0xcb, - 0x48, 0xfa, 0x6f, 0x5a, 0x91, 0x6b, 0xfa, 0x0a, 0x21, 0x94, 0x4f, 0xdb, 0xff, 0x2b, 0xfa, 0xcd, - 0xbe, 0x41, 0x9f, 0xa4, 0x3e, 0x93, 0x06, 0x26, 0x99, 0x30, 0x83, 0xae, 0x82, 0x45, 0xe8, 0xe9, - 0xfb, 0x85, 0xcc, 0x6a, 0x31, 0x9a, 0x87, 0xd3, 0x15, 0x7c, 0xf8, 0x0a, 0xc8, 0x96, 0xb6, 0x75, - 0x07, 0xbd, 0x5d, 0x06, 0x28, 0xb6, 0x5a, 0x6b, 0xd4, 0x07, 0x3c, 0xec, 0x90, 0x76, 0x06, 0x66, - 0x9a, 0xdb, 0x7a, 0x70, 0xb7, 0x09, 0xed, 0x0f, 0xb8, 0x34, 0xe5, 0x89, 0x81, 0x33, 0x39, 0x95, - 0x2a, 0xea, 0x81, 0xc9, 0x2d, 0x83, 0xd1, 0xf6, 0x1d, 0xcd, 0xf9, 0x50, 0x98, 0xb1, 0x47, 0xe8, - 0xdc, 0xdf, 0xe7, 0x03, 0xf6, 0xa2, 0xe7, 0x70, 0x8c, 0xb4, 0x7f, 0xc0, 0x26, 0x48, 0x48, 0x78, - 0xd2, 0x5b, 0x2c, 0xa0, 0x47, 0x3c, 0x5f, 0x63, 0x09, 0x5d, 0xab, 0xa8, 0x2d, 0xc3, 0x13, 0x2d, - 0x0b, 0x98, 0x85, 0x9e, 0x97, 0x49, 0x06, 0x5f, 0xbc, 0xe0, 0xee, 0x86, 0x59, 0xdc, 0x32, 0x1c, - 0xec, 0xd5, 0x92, 0x09, 0x30, 0x0e, 0x62, 0xfe, 0x07, 0xf4, 0x4c, 0xe1, 0xa0, 0x6b, 0x44, 0xa0, - 0xfb, 0x6b, 0x14, 0xd1, 0xfe, 0xc4, 0xc2, 0xa8, 0x89, 0xd1, 0x4c, 0x1f, 0xac, 0x5f, 0x92, 0xe1, - 0x44, 0xdd, 0xda, 0xda, 0x6a, 0x63, 0x4f, 0x4c, 0x98, 0x7a, 0x67, 0x22, 0x7d, 0x94, 0x70, 0x91, - 0x9d, 0x20, 0xeb, 0x7e, 0xc3, 0x3f, 0x4a, 0xe6, 0xbe, 0xf0, 0x27, 0xa6, 0x62, 0x67, 0x51, 0x44, - 0x5c, 0x7d, 0xf9, 0x8c, 0x40, 0x41, 0x2c, 0xe0, 0xb3, 0x30, 0xd9, 0xf4, 0x81, 0xf8, 0xa2, 0x04, - 0xb3, 0xf4, 0xe6, 0x4a, 0x4f, 0x41, 0xef, 0x1d, 0x21, 0x00, 0xe8, 0x7b, 0x19, 0x51, 0x3f, 0x5b, - 0x22, 0x13, 0x8e, 0x93, 0x08, 0x11, 0x8b, 0x05, 0x55, 0x19, 0x48, 0x2e, 0x7d, 0xd1, 0xfe, 0x89, - 0x0c, 0xd3, 0xcb, 0xd8, 0x6b, 0x69, 0xdd, 0xc4, 0x3d, 0xd1, 0x19, 0x98, 0x21, 0xd7, 0xb7, 0x55, - 0xd9, 0x31, 0x49, 0xba, 0x6a, 0xc6, 0xa5, 0x29, 0xd7, 0xc1, 0xec, 0x79, 0xbc, 0x69, 0xd9, 0xb8, - 0xca, 0x9d, 0xa5, 0xe4, 0x13, 0x23, 0xc2, 0xd3, 0x71, 0x71, 0xd0, 0x16, 0x78, 0x6c, 0x6e, 0xda, - 0x2f, 0xcc, 0x50, 0x55, 0x22, 0xc6, 0x9c, 0x27, 0xc1, 0x24, 0x43, 0xde, 0x33, 0xd3, 0xe2, 0xfa, - 0x45, 0x3f, 0x2f, 0x7a, 0xad, 0x8f, 0xa8, 0xca, 0x21, 0xfa, 0xf8, 0x24, 0x4c, 0x8c, 0xe5, 0x7e, - 0xf7, 0x42, 0xa8, 0xfc, 0x85, 0x4b, 0xe5, 0x56, 0x17, 0xad, 0x25, 0xc3, 0xf4, 0x34, 0x80, 0xdf, - 0x38, 0xbc, 0xb0, 0x16, 0xa1, 0x14, 0x3e, 0x72, 0x7d, 0xec, 0x41, 0xbd, 0x5e, 0x71, 0x10, 0x76, - 0x46, 0x0c, 0x8c, 0xd8, 0x01, 0x3f, 0x11, 0x4e, 0xd2, 0x47, 0xe7, 0x53, 0x32, 0x9c, 0xf0, 0xcf, - 0x1f, 0xad, 0xea, 0xdd, 0xa0, 0xdd, 0x95, 0x92, 0x41, 0xc4, 0x1d, 0xf8, 0xf0, 0x1b, 0xcb, 0xb7, - 0x93, 0x8d, 0x19, 0x7d, 0x39, 0x19, 0x2d, 0x3a, 0xca, 0x4d, 0x70, 0xcc, 0xdc, 0xdd, 0xf1, 0xa5, - 0x4e, 0x5a, 0x3c, 0x6b, 0xe1, 0xfb, 0x3f, 0x24, 0x19, 0x99, 0x44, 0x98, 0x1f, 0xcb, 0x9c, 0x92, - 0x3b, 0xd2, 0xf5, 0xb8, 0x44, 0x30, 0xa2, 0x7f, 0xce, 0x24, 0xea, 0xdd, 0x06, 0x9f, 0xf9, 0x4a, - 0xd0, 0x4b, 0x1d, 0xe6, 0x81, 0xaf, 0x6f, 0x67, 0x41, 0x2e, 0x76, 0x0c, 0xf4, 0x41, 0x09, 0xa6, - 0x6b, 0x8e, 0x6e, 0x3b, 0x35, 0x6c, 0xef, 0x61, 0x3b, 0x3c, 0x33, 0x7f, 0x9d, 0xf0, 0x5c, 0xa3, - 0xd8, 0x31, 0xe6, 0x43, 0x44, 0x22, 0x24, 0xf3, 0x79, 0xa1, 0xf9, 0x41, 0x3c, 0xad, 0x64, 0x82, - 0xc1, 0x43, 0x4c, 0xf9, 0x4e, 0xc0, 0xb1, 0xf5, 0xaa, 0x56, 0xf7, 0x77, 0xe7, 0x37, 0x6a, 0xea, - 0x62, 0x41, 0x56, 0x10, 0x9c, 0x24, 0x7e, 0xd2, 0x9a, 0xff, 0xa1, 0x56, 0x2f, 0x6a, 0x75, 0x75, - 0xb1, 0x90, 0x45, 0xaf, 0x91, 0x00, 0x6a, 0x8e, 0xd5, 0xd9, 0x2f, 0x42, 0xf1, 0x43, 0xf7, 0xb4, - 0xda, 0x1e, 0x8d, 0x81, 0x67, 0x87, 0xe2, 0x16, 0x79, 0x62, 0x49, 0x25, 0x13, 0xe0, 0x3d, 0x43, - 0x08, 0xf0, 0x24, 0x28, 0x4c, 0x52, 0x95, 0x6a, 0xdd, 0x97, 0x92, 0x7c, 0x66, 0x02, 0x72, 0xea, - 0x4e, 0xc7, 0xb9, 0x74, 0xe6, 0xd1, 0x30, 0x5b, 0x73, 0x6c, 0xac, 0xef, 0x84, 0xf6, 0xa2, 0x1c, - 0xeb, 0x02, 0x36, 0xbd, 0xbd, 0x28, 0xf2, 0x72, 0xfb, 0x6d, 0x30, 0x61, 0x5a, 0x0d, 0x7d, 0xd7, - 0xd9, 0x56, 0xae, 0xde, 0x17, 0xc4, 0x81, 0x75, 0x37, 0x55, 0x16, 0x35, 0xeb, 0xab, 0x77, 0x90, - 0xdd, 0x88, 0xbc, 0x69, 0x15, 0x77, 0x9d, 0xed, 0x85, 0xab, 0x3e, 0xfe, 0x37, 0xa7, 0x33, 0x9f, - 0xfe, 0x9b, 0xd3, 0x99, 0xaf, 0xfc, 0xcd, 0xe9, 0xcc, 0xaf, 0x7e, 0xed, 0xf4, 0x91, 0x4f, 0x7f, - 0xed, 0xf4, 0x91, 0x2f, 0x7e, 0xed, 0xf4, 0x91, 0x9f, 0x96, 0x3a, 0xe7, 0xcf, 0xe7, 0x09, 0x95, - 0x27, 0xfc, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0xad, 0xda, 0x7f, 0xc2, 0x7a, 0x0a, 0x02, 0x00, + // 19740 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xfd, 0x7b, 0x9c, 0x24, 0x47, + 0x75, 0x27, 0x8a, 0x4f, 0x65, 0x56, 0x55, 0x77, 0x9f, 0x7e, 0x4c, 0x4d, 0x6a, 0x66, 0x34, 0x0a, + 0x89, 0x91, 0x3c, 0x12, 0x42, 0x16, 0xa2, 0x25, 0x04, 0xc6, 0x48, 0x48, 0x48, 0xd5, 0xd5, 0xd5, + 0xdd, 0x25, 0x75, 0x57, 0x35, 0x59, 0xd5, 0x33, 0xc8, 0x5e, 0xff, 0x6a, 0x73, 0xaa, 0xa2, 0xbb, + 0x53, 0x53, 0x9d, 0x59, 0xce, 0xcc, 0xee, 0xd1, 0xf0, 0xfb, 0xec, 0x5d, 0x63, 0x2c, 0x1e, 0xc6, + 0x2c, 0xc6, 0x18, 0xdb, 0xbc, 0x9f, 0x82, 0x05, 0x1b, 0x30, 0xef, 0x05, 0xdb, 0xbc, 0x31, 0x18, + 0x63, 0x8c, 0xc1, 0x3c, 0x8c, 0xcd, 0x35, 0x18, 0x8c, 0xf1, 0x7e, 0xcc, 0x72, 0xed, 0xbb, 0x06, + 0x63, 0xc3, 0xf5, 0xfd, 0x64, 0x44, 0xe4, 0x23, 0xaa, 0x2b, 0xb3, 0x22, 0xab, 0x2b, 0xab, 0x85, + 0xb9, 0xff, 0x65, 0x46, 0x46, 0x9e, 0x38, 0x71, 0xbe, 0x27, 0x22, 0x4e, 0x44, 0x9c, 0x38, 0x01, + 0xa7, 0xba, 0xe7, 0x6f, 0xee, 0x5a, 0xa6, 0x63, 0xda, 0x37, 0xb7, 0xcc, 0x9d, 0x1d, 0xcd, 0x68, + 0xdb, 0xf3, 0xe4, 0x5d, 0x99, 0xd0, 0x8c, 0x4b, 0xce, 0xa5, 0x2e, 0x46, 0xd7, 0x75, 0x2f, 0x6c, + 0xdd, 0xdc, 0xd1, 0xcf, 0xdf, 0xdc, 0x3d, 0x7f, 0xf3, 0x8e, 0xd9, 0xc6, 0x1d, 0xef, 0x07, 0xf2, + 0xc2, 0xb2, 0xa3, 0x1b, 0xa2, 0x72, 0x75, 0xcc, 0x96, 0xd6, 0xb1, 0x1d, 0xd3, 0xc2, 0x2c, 0xe7, + 0xc9, 0xa0, 0x48, 0xbc, 0x87, 0x0d, 0xc7, 0xa3, 0x70, 0xd5, 0x96, 0x69, 0x6e, 0x75, 0x30, 0xfd, + 0x76, 0x7e, 0x77, 0xf3, 0x66, 0xdb, 0xb1, 0x76, 0x5b, 0x0e, 0xfb, 0x7a, 0x4d, 0xef, 0xd7, 0x36, + 0xb6, 0x5b, 0x96, 0xde, 0x75, 0x4c, 0x8b, 0xe6, 0x38, 0xf3, 0x97, 0xbf, 0x36, 0x09, 0xb2, 0xda, + 0x6d, 0xa1, 0xef, 0x4e, 0x80, 0x5c, 0xec, 0x76, 0xd1, 0xc7, 0x24, 0x80, 0x65, 0xec, 0x9c, 0xc5, + 0x96, 0xad, 0x9b, 0x06, 0x3a, 0x0a, 0x13, 0x2a, 0xfe, 0xf9, 0x5d, 0x6c, 0x3b, 0xb7, 0x67, 0x9f, + 0xfd, 0x4d, 0x39, 0x83, 0x1e, 0x92, 0x60, 0x52, 0xc5, 0x76, 0xd7, 0x34, 0x6c, 0xac, 0xdc, 0x0d, + 0x39, 0x6c, 0x59, 0xa6, 0x75, 0x2a, 0x73, 0x4d, 0xe6, 0x86, 0xe9, 0x5b, 0x6f, 0x9c, 0x67, 0xd5, + 0x9f, 0x57, 0xbb, 0xad, 0xf9, 0x62, 0xb7, 0x3b, 0x1f, 0x50, 0x9a, 0xf7, 0x7e, 0x9a, 0x2f, 0xbb, + 0x7f, 0xa8, 0xf4, 0x47, 0xe5, 0x14, 0x4c, 0xec, 0xd1, 0x0c, 0xa7, 0xa4, 0x6b, 0x32, 0x37, 0x4c, + 0xa9, 0xde, 0xab, 0xfb, 0xa5, 0x8d, 0x1d, 0x4d, 0xef, 0xd8, 0xa7, 0x64, 0xfa, 0x85, 0xbd, 0xa2, + 0xd7, 0x64, 0x20, 0x47, 0x88, 0x28, 0x25, 0xc8, 0xb6, 0xcc, 0x36, 0x26, 0xc5, 0xcf, 0xdd, 0x7a, + 0xb3, 0x78, 0xf1, 0xf3, 0x25, 0xb3, 0x8d, 0x55, 0xf2, 0xb3, 0x72, 0x0d, 0x4c, 0x7b, 0x62, 0x09, + 0xd8, 0x08, 0x27, 0x9d, 0xb9, 0x15, 0xb2, 0x6e, 0x7e, 0x65, 0x12, 0xb2, 0xd5, 0x8d, 0xd5, 0xd5, + 0xc2, 0x11, 0xe5, 0x18, 0xcc, 0x6e, 0x54, 0xef, 0xad, 0xd6, 0xce, 0x55, 0x9b, 0x65, 0x55, 0xad, + 0xa9, 0x85, 0x8c, 0x32, 0x0b, 0x53, 0x0b, 0xc5, 0xc5, 0x66, 0xa5, 0xba, 0xbe, 0xd1, 0x28, 0x48, + 0xe8, 0x15, 0x32, 0xcc, 0xd5, 0xb1, 0xb3, 0x88, 0xf7, 0xf4, 0x16, 0xae, 0x3b, 0x9a, 0x83, 0xd1, + 0xf3, 0x33, 0xbe, 0x30, 0x95, 0x0d, 0xb7, 0x50, 0xff, 0x13, 0xab, 0xc0, 0xe3, 0xf6, 0x55, 0x80, + 0xa7, 0x30, 0xcf, 0xfe, 0x9e, 0x0f, 0xa5, 0xa9, 0x61, 0x3a, 0x67, 0x1e, 0x03, 0xd3, 0xa1, 0x6f, + 0xca, 0x1c, 0xc0, 0x42, 0xb1, 0x74, 0xef, 0xb2, 0x5a, 0xdb, 0xa8, 0x2e, 0x16, 0x8e, 0xb8, 0xef, + 0x4b, 0x35, 0xb5, 0xcc, 0xde, 0x33, 0xe8, 0xfb, 0x99, 0x10, 0x98, 0x8b, 0x3c, 0x98, 0xf3, 0x83, + 0x99, 0xe9, 0x03, 0x28, 0x7a, 0xbd, 0x0f, 0xce, 0x32, 0x07, 0xce, 0xe3, 0x92, 0x91, 0x4b, 0x1f, + 0xa0, 0x07, 0x25, 0x98, 0xac, 0x6f, 0xef, 0x3a, 0x6d, 0xf3, 0xa2, 0x81, 0xa6, 0x7c, 0x64, 0xd0, + 0xb7, 0xc3, 0x32, 0x79, 0x32, 0x2f, 0x93, 0x1b, 0xf6, 0x57, 0x82, 0x51, 0x88, 0x90, 0xc6, 0xab, + 0x7c, 0x69, 0x14, 0x39, 0x69, 0x3c, 0x46, 0x94, 0x50, 0xfa, 0x72, 0x78, 0xc9, 0x13, 0x21, 0x57, + 0xef, 0x6a, 0x2d, 0x8c, 0x3e, 0x25, 0xc3, 0xcc, 0x2a, 0xd6, 0xf6, 0x70, 0xb1, 0xdb, 0xb5, 0xcc, + 0x3d, 0x8c, 0x4a, 0x81, 0xbe, 0x9e, 0x82, 0x09, 0xdb, 0xcd, 0x54, 0x69, 0x93, 0x1a, 0x4c, 0xa9, + 0xde, 0xab, 0x72, 0x1a, 0x40, 0x6f, 0x63, 0xc3, 0xd1, 0x1d, 0x1d, 0xdb, 0xa7, 0xa4, 0x6b, 0xe4, + 0x1b, 0xa6, 0xd4, 0x50, 0x0a, 0xfa, 0xae, 0x24, 0xaa, 0x63, 0x84, 0x8b, 0xf9, 0x30, 0x07, 0x11, + 0x52, 0x7d, 0xad, 0x24, 0xa2, 0x63, 0x03, 0xc9, 0x25, 0x93, 0xed, 0x5b, 0x32, 0xc9, 0x85, 0xeb, + 0xe6, 0xa8, 0xd6, 0x9a, 0xf5, 0x8d, 0xd2, 0x4a, 0xb3, 0xbe, 0x5e, 0x2c, 0x95, 0x0b, 0x58, 0x39, + 0x0e, 0x05, 0xf2, 0xd8, 0xac, 0xd4, 0x9b, 0x8b, 0xe5, 0xd5, 0x72, 0xa3, 0xbc, 0x58, 0xd8, 0x54, + 0x14, 0x98, 0x53, 0xcb, 0x4f, 0xd9, 0x28, 0xd7, 0x1b, 0xcd, 0xa5, 0x62, 0x65, 0xb5, 0xbc, 0x58, + 0xd8, 0x72, 0x7f, 0x5e, 0xad, 0xac, 0x55, 0x1a, 0x4d, 0xb5, 0x5c, 0x2c, 0xad, 0x94, 0x17, 0x0b, + 0xdb, 0xca, 0xe5, 0x70, 0x59, 0xb5, 0xd6, 0x2c, 0xae, 0xaf, 0xab, 0xb5, 0xb3, 0xe5, 0x26, 0xfb, + 0xa3, 0x5e, 0xd0, 0x69, 0x41, 0x8d, 0x66, 0x7d, 0xa5, 0xa8, 0x96, 0x8b, 0x0b, 0xab, 0xe5, 0xc2, + 0xfd, 0xe8, 0x19, 0x32, 0xcc, 0xae, 0x69, 0x17, 0x70, 0x7d, 0x5b, 0xb3, 0xb0, 0x76, 0xbe, 0x83, + 0xd1, 0xb5, 0x02, 0x78, 0xa2, 0x4f, 0x85, 0xf1, 0x2a, 0xf3, 0x78, 0xdd, 0xdc, 0x47, 0xc0, 0x5c, + 0x11, 0x11, 0x80, 0xfd, 0x8b, 0xdf, 0x0c, 0x56, 0x38, 0xc0, 0x1e, 0x9f, 0x90, 0x5e, 0x32, 0xc4, + 0x7e, 0xf1, 0x61, 0x80, 0x18, 0xfa, 0x8a, 0x0c, 0x73, 0x15, 0x63, 0x4f, 0x77, 0xf0, 0x32, 0x36, + 0xb0, 0xe5, 0x8e, 0x03, 0x42, 0x30, 0x3c, 0x24, 0x87, 0x60, 0x58, 0xe2, 0x61, 0xb8, 0xa5, 0x8f, + 0xd8, 0xf8, 0x32, 0x22, 0x46, 0xdb, 0xab, 0x60, 0x4a, 0x27, 0xf9, 0x4a, 0x7a, 0x9b, 0x49, 0x2c, + 0x48, 0x50, 0xae, 0x83, 0x59, 0xfa, 0xb2, 0xa4, 0x77, 0xf0, 0xbd, 0xf8, 0x12, 0x1b, 0x77, 0xf9, + 0x44, 0xf4, 0x2b, 0x7e, 0xe3, 0xab, 0x70, 0x58, 0xfe, 0x54, 0x52, 0xa6, 0x92, 0x81, 0xf9, 0xa2, + 0x87, 0x43, 0xf3, 0xdb, 0xd7, 0xca, 0x74, 0xf4, 0x43, 0x09, 0xa6, 0xeb, 0x8e, 0xd9, 0x75, 0x55, + 0x56, 0x37, 0xb6, 0xc4, 0xc0, 0xfd, 0x44, 0xb8, 0x8d, 0x95, 0x78, 0x70, 0x1f, 0xd3, 0x47, 0x8e, + 0xa1, 0x02, 0x22, 0x5a, 0xd8, 0x77, 0xfd, 0x16, 0xb6, 0xc4, 0xa1, 0x72, 0x6b, 0x22, 0x6a, 0x3f, + 0x82, 0xed, 0xeb, 0x45, 0x32, 0x14, 0x3c, 0x35, 0x73, 0x4a, 0xbb, 0x96, 0x85, 0x0d, 0x47, 0x0c, + 0x84, 0xbf, 0x0c, 0x83, 0xb0, 0xc2, 0x83, 0x70, 0x6b, 0x8c, 0x32, 0x7b, 0xa5, 0xa4, 0xd8, 0xc6, + 0x3e, 0xe8, 0xa3, 0x79, 0x2f, 0x87, 0xe6, 0x4f, 0x27, 0x67, 0x2b, 0x19, 0xa4, 0x2b, 0x43, 0x20, + 0x7a, 0x1c, 0x0a, 0xee, 0x98, 0x54, 0x6a, 0x54, 0xce, 0x96, 0x9b, 0x95, 0xea, 0xd9, 0x4a, 0xa3, + 0x5c, 0xc0, 0xe8, 0x85, 0x32, 0xcc, 0x50, 0xd6, 0x54, 0xbc, 0x67, 0x5e, 0x10, 0xec, 0xf5, 0xbe, + 0x92, 0xd0, 0x58, 0x08, 0x97, 0x10, 0xd1, 0x32, 0x7e, 0x39, 0x81, 0xb1, 0x10, 0x43, 0xee, 0xe1, + 0xd4, 0x5b, 0xed, 0x6b, 0x06, 0x5b, 0x7d, 0x5a, 0x4b, 0xdf, 0xde, 0xea, 0x45, 0x59, 0x00, 0x5a, + 0xc9, 0xb3, 0x3a, 0xbe, 0x88, 0xd6, 0x02, 0x4c, 0x38, 0xb5, 0xcd, 0x0c, 0x54, 0x5b, 0xa9, 0x9f, + 0xda, 0xbe, 0x27, 0x3c, 0x66, 0x2d, 0xf0, 0xe8, 0xdd, 0x14, 0x29, 0x6e, 0x97, 0x93, 0xe8, 0xd9, + 0xa1, 0xa7, 0x28, 0x12, 0x6f, 0x75, 0x5e, 0x05, 0x53, 0xe4, 0xb1, 0xaa, 0xed, 0x60, 0xd6, 0x86, + 0x82, 0x04, 0xe5, 0x0c, 0xcc, 0xd0, 0x8c, 0x2d, 0xd3, 0x70, 0xeb, 0x93, 0x25, 0x19, 0xb8, 0x34, + 0x17, 0xc4, 0x96, 0x85, 0x35, 0xc7, 0xb4, 0x08, 0x8d, 0x1c, 0x05, 0x31, 0x94, 0x84, 0xbe, 0xe5, + 0xb7, 0xc2, 0x32, 0xa7, 0x39, 0x8f, 0x4d, 0x52, 0x95, 0x64, 0x7a, 0xb3, 0x37, 0x5c, 0xfb, 0xa3, + 0xad, 0xae, 0xe9, 0xa2, 0xbd, 0x44, 0xa6, 0x76, 0x58, 0x39, 0x09, 0x0a, 0x4b, 0x75, 0xf3, 0x96, + 0x6a, 0xd5, 0x46, 0xb9, 0xda, 0x28, 0x6c, 0xf6, 0xd5, 0xa8, 0x2d, 0xf4, 0xda, 0x2c, 0x64, 0xef, + 0x31, 0x75, 0x03, 0x3d, 0x98, 0xe1, 0x54, 0xc2, 0xc0, 0xce, 0x45, 0xd3, 0xba, 0xe0, 0x37, 0xd4, + 0x20, 0x21, 0x1e, 0x9b, 0x40, 0x95, 0xe4, 0x81, 0xaa, 0x94, 0xed, 0xa7, 0x4a, 0xbf, 0x16, 0x56, + 0xa5, 0x3b, 0x78, 0x55, 0xba, 0xbe, 0x8f, 0xfc, 0x5d, 0xe6, 0x23, 0x3a, 0x80, 0x8f, 0xfb, 0x1d, + 0xc0, 0x5d, 0x1c, 0x8c, 0x8f, 0x16, 0x23, 0x93, 0x0c, 0xc0, 0x2f, 0xa7, 0xda, 0xf0, 0xfb, 0x41, + 0xbd, 0x15, 0x01, 0xf5, 0x76, 0x9f, 0x3e, 0x41, 0xdf, 0xdf, 0x75, 0xdc, 0xbf, 0xbf, 0x9b, 0xb8, + 0xa0, 0x9c, 0x80, 0x63, 0x8b, 0x95, 0xa5, 0xa5, 0xb2, 0x5a, 0xae, 0x36, 0x9a, 0xd5, 0x72, 0xe3, + 0x5c, 0x4d, 0xbd, 0xb7, 0xd0, 0x41, 0xaf, 0x91, 0x01, 0x5c, 0x09, 0x95, 0x34, 0xa3, 0x85, 0x3b, + 0x62, 0x3d, 0xfa, 0xff, 0x92, 0x92, 0xf5, 0x09, 0x01, 0xfd, 0x08, 0x38, 0x5f, 0x2e, 0x89, 0xb7, + 0xca, 0x48, 0x62, 0xc9, 0x40, 0x7d, 0xd3, 0xc3, 0xc1, 0xf6, 0xbc, 0x0c, 0x8e, 0x7a, 0xf4, 0x58, + 0xf6, 0xfe, 0xd3, 0xbe, 0xb7, 0x66, 0x61, 0x8e, 0xc1, 0xe2, 0xcd, 0xe3, 0x9f, 0x9d, 0x11, 0x99, + 0xc8, 0x23, 0x98, 0x64, 0xd3, 0x76, 0xaf, 0x7b, 0xf7, 0xdf, 0x95, 0x65, 0x98, 0xee, 0x62, 0x6b, + 0x47, 0xb7, 0x6d, 0xdd, 0x34, 0xe8, 0x82, 0xdc, 0xdc, 0xad, 0x8f, 0xf4, 0x25, 0x4e, 0xd6, 0x2e, + 0xe7, 0xd7, 0x35, 0xcb, 0xd1, 0x5b, 0x7a, 0x57, 0x33, 0x9c, 0xf5, 0x20, 0xb3, 0x1a, 0xfe, 0x13, + 0xbd, 0x20, 0xe1, 0xb4, 0x86, 0xaf, 0x49, 0x84, 0x4a, 0xfc, 0x7e, 0x82, 0x29, 0x49, 0x2c, 0xc1, + 0x64, 0x6a, 0xf1, 0xb1, 0x54, 0xd5, 0xa2, 0x0f, 0xde, 0x5b, 0xca, 0x15, 0x70, 0xa2, 0x52, 0x2d, + 0xd5, 0x54, 0xb5, 0x5c, 0x6a, 0x34, 0xd7, 0xcb, 0xea, 0x5a, 0xa5, 0x5e, 0xaf, 0xd4, 0xaa, 0xf5, + 0x83, 0xb4, 0x76, 0xf4, 0x49, 0xd9, 0xd7, 0x98, 0x45, 0xdc, 0xea, 0xe8, 0x06, 0x46, 0x77, 0x1d, + 0x50, 0x61, 0xf8, 0x55, 0x1f, 0x71, 0x9c, 0x59, 0xf9, 0x11, 0x38, 0xbf, 0x3a, 0x39, 0xce, 0xfd, + 0x09, 0xfe, 0x07, 0x6e, 0xfe, 0x5f, 0x91, 0xe1, 0x58, 0xa8, 0x21, 0xaa, 0x78, 0x67, 0x64, 0x2b, + 0x79, 0xbf, 0x18, 0x6e, 0xbb, 0x15, 0x1e, 0xd3, 0x7e, 0xd6, 0xf4, 0x3e, 0x36, 0x22, 0x60, 0x7d, + 0x93, 0x0f, 0xeb, 0x2a, 0x07, 0xeb, 0x13, 0x87, 0xa0, 0x99, 0x0c, 0xd9, 0xdf, 0x4d, 0x15, 0xd9, + 0x2b, 0xe0, 0xc4, 0x7a, 0x51, 0x6d, 0x54, 0x4a, 0x95, 0xf5, 0xa2, 0x3b, 0x8e, 0x86, 0x86, 0xec, + 0x08, 0x73, 0x9d, 0x07, 0xbd, 0x2f, 0xbe, 0x1f, 0xc8, 0xc2, 0x55, 0xfd, 0x3b, 0xda, 0xd2, 0xb6, + 0x66, 0x6c, 0x61, 0xa4, 0x8b, 0x40, 0xbd, 0x08, 0x13, 0x2d, 0x92, 0x9d, 0xe2, 0x1c, 0xde, 0xba, + 0x89, 0xe9, 0xcb, 0x69, 0x09, 0xaa, 0xf7, 0x2b, 0x7a, 0x47, 0x58, 0x21, 0x1a, 0xbc, 0x42, 0x3c, + 0x39, 0x1e, 0xbc, 0x7d, 0x7c, 0x47, 0xe8, 0xc6, 0x67, 0x7c, 0xdd, 0x38, 0xc7, 0xe9, 0x46, 0xe9, + 0x60, 0xe4, 0x93, 0xa9, 0xc9, 0x1f, 0x3f, 0x1c, 0x3a, 0x80, 0x48, 0x6d, 0xd2, 0xa3, 0x47, 0x85, + 0xbe, 0xdd, 0xfd, 0x2b, 0x65, 0xc8, 0x2f, 0xe2, 0x0e, 0x16, 0x5d, 0x89, 0xfc, 0x8e, 0x24, 0xba, + 0x21, 0x42, 0x61, 0xa0, 0xb4, 0xa3, 0x57, 0x47, 0x1c, 0x7d, 0x07, 0xdb, 0x8e, 0xb6, 0xd3, 0x25, + 0xa2, 0x96, 0xd5, 0x20, 0x01, 0xfd, 0x92, 0x24, 0xb2, 0x5d, 0x12, 0x53, 0xcc, 0x7f, 0x8c, 0x35, + 0xc5, 0xcf, 0x49, 0x30, 0x59, 0xc7, 0x4e, 0xcd, 0x6a, 0x63, 0x0b, 0xd5, 0x03, 0x8c, 0xae, 0x81, + 0x69, 0x02, 0x8a, 0x3b, 0xcd, 0xf4, 0x71, 0x0a, 0x27, 0x29, 0xd7, 0xc3, 0x9c, 0xff, 0x4a, 0x7e, + 0x67, 0xdd, 0x78, 0x4f, 0x2a, 0xfa, 0xc7, 0x8c, 0xe8, 0x2e, 0x2e, 0x5b, 0x32, 0x64, 0xdc, 0x44, + 0xb4, 0x52, 0xb1, 0x1d, 0xd9, 0x58, 0x52, 0xe9, 0x6f, 0x74, 0xbd, 0x4d, 0x02, 0xd8, 0x30, 0x6c, + 0x4f, 0xae, 0x8f, 0x4e, 0x20, 0x57, 0xf4, 0xcf, 0x99, 0x64, 0xb3, 0x98, 0xa0, 0x9c, 0x08, 0x89, + 0xbd, 0x2e, 0xc1, 0xda, 0x42, 0x24, 0xb1, 0xf4, 0x65, 0xf6, 0xf5, 0x39, 0xc8, 0x9f, 0xd3, 0x3a, + 0x1d, 0xec, 0xa0, 0x6f, 0x48, 0x90, 0x2f, 0x59, 0x58, 0x73, 0x70, 0x58, 0x74, 0x08, 0x26, 0x2d, + 0xd3, 0x74, 0xd6, 0x35, 0x67, 0x9b, 0xc9, 0xcd, 0x7f, 0x67, 0x0e, 0x03, 0xbf, 0x13, 0xee, 0x3e, + 0xee, 0xe2, 0x45, 0xf7, 0x93, 0x5c, 0x6d, 0x69, 0x41, 0xf3, 0xb4, 0x90, 0x88, 0xfe, 0x03, 0xc1, + 0xe4, 0x8e, 0x81, 0x77, 0x4c, 0x43, 0x6f, 0x79, 0x36, 0xa7, 0xf7, 0x8e, 0x3e, 0xec, 0xcb, 0x74, + 0x81, 0x93, 0xe9, 0xbc, 0x70, 0x29, 0xc9, 0x04, 0x5a, 0x1f, 0xa2, 0xf7, 0xb8, 0x1a, 0xae, 0xa4, + 0x9d, 0x41, 0xb3, 0x51, 0x6b, 0x96, 0xd4, 0x72, 0xb1, 0x51, 0x6e, 0xae, 0xd6, 0x4a, 0xc5, 0xd5, + 0xa6, 0x5a, 0x5e, 0xaf, 0x15, 0x30, 0xfa, 0x3b, 0xc9, 0x15, 0x6e, 0xcb, 0xdc, 0xc3, 0x16, 0x5a, + 0x16, 0x92, 0x73, 0x9c, 0x4c, 0x18, 0x06, 0xbf, 0x26, 0xec, 0xb4, 0xc1, 0xa4, 0xc3, 0x38, 0x88, + 0x50, 0xde, 0x8f, 0x08, 0x35, 0xf7, 0x58, 0x52, 0x0f, 0x03, 0x49, 0xff, 0x6f, 0x09, 0x26, 0x4a, + 0xa6, 0xb1, 0x87, 0x2d, 0x27, 0x3c, 0xdf, 0x09, 0x4b, 0x33, 0xc3, 0x4b, 0xd3, 0x1d, 0x24, 0xb1, + 0xe1, 0x58, 0x66, 0xd7, 0x9b, 0xf0, 0x78, 0xaf, 0xe8, 0x0d, 0x49, 0x25, 0xcc, 0x4a, 0x8e, 0x5e, + 0xf8, 0xec, 0x5f, 0x10, 0xc7, 0x9e, 0xdc, 0xd3, 0x00, 0x5e, 0x93, 0x04, 0x97, 0xfe, 0x0c, 0xa4, + 0xdf, 0xa5, 0x7c, 0x55, 0x86, 0x59, 0xda, 0xf8, 0xea, 0x98, 0x58, 0x68, 0xa8, 0x16, 0x5e, 0x72, + 0xec, 0x11, 0xfe, 0xca, 0x11, 0x4e, 0xfc, 0x79, 0xad, 0xdb, 0xf5, 0x97, 0x9f, 0x57, 0x8e, 0xa8, + 0xec, 0x9d, 0xaa, 0xf9, 0x42, 0x1e, 0xb2, 0xda, 0xae, 0xb3, 0x8d, 0x7e, 0x28, 0x3c, 0xf9, 0xe4, + 0x3a, 0x03, 0xc6, 0x4f, 0x04, 0x24, 0xc7, 0x21, 0xe7, 0x98, 0x17, 0xb0, 0x27, 0x07, 0xfa, 0xe2, + 0xc2, 0xa1, 0x75, 0xbb, 0x0d, 0xf2, 0x81, 0xc1, 0xe1, 0xbd, 0xbb, 0xb6, 0x8e, 0xd6, 0x6a, 0x99, + 0xbb, 0x86, 0x53, 0xf1, 0x96, 0xa0, 0x83, 0x04, 0xf4, 0xa5, 0x8c, 0xc8, 0x64, 0x56, 0x80, 0xc1, + 0x64, 0x90, 0x9d, 0x1f, 0xa2, 0x29, 0xcd, 0xc3, 0x8d, 0xc5, 0xf5, 0xf5, 0x66, 0xa3, 0x76, 0x6f, + 0xb9, 0x1a, 0x18, 0x9e, 0xcd, 0x4a, 0xb5, 0xd9, 0x58, 0x29, 0x37, 0x4b, 0x1b, 0x2a, 0x59, 0x27, + 0x2c, 0x96, 0x4a, 0xb5, 0x8d, 0x6a, 0xa3, 0x80, 0xd1, 0x9b, 0x25, 0x98, 0x29, 0x75, 0x4c, 0xdb, + 0x47, 0xf8, 0xea, 0x00, 0x61, 0x5f, 0x8c, 0x99, 0x90, 0x18, 0xd1, 0xbf, 0x65, 0x44, 0x9d, 0x0e, + 0x3c, 0x81, 0x84, 0xc8, 0x47, 0xf4, 0x52, 0x6f, 0x10, 0x72, 0x3a, 0x18, 0x4c, 0x2f, 0xfd, 0x26, + 0xf1, 0xeb, 0x4f, 0x82, 0x89, 0x22, 0x55, 0x0c, 0xf4, 0xd7, 0x19, 0xc8, 0x97, 0x4c, 0x63, 0x53, + 0xdf, 0x72, 0x8d, 0x39, 0x6c, 0x68, 0xe7, 0x3b, 0x78, 0x51, 0x73, 0xb4, 0x3d, 0x1d, 0x5f, 0x24, + 0x15, 0x98, 0x54, 0x7b, 0x52, 0x5d, 0xa6, 0x58, 0x0a, 0x3e, 0xbf, 0xbb, 0x45, 0x98, 0x9a, 0x54, + 0xc3, 0x49, 0xca, 0x13, 0xe1, 0x72, 0xfa, 0xba, 0x6e, 0x61, 0x0b, 0x77, 0xb0, 0x66, 0x63, 0x77, + 0x5a, 0x64, 0xe0, 0x0e, 0x51, 0xda, 0x49, 0x35, 0xea, 0xb3, 0x72, 0x06, 0x66, 0xe8, 0x27, 0x62, + 0x8a, 0xd8, 0x44, 0x8d, 0x27, 0x55, 0x2e, 0x4d, 0x79, 0x0c, 0xe4, 0xf0, 0x03, 0x8e, 0xa5, 0x9d, + 0x6a, 0x13, 0xbc, 0x2e, 0x9f, 0xa7, 0x5e, 0x87, 0xf3, 0x9e, 0xd7, 0xe1, 0x7c, 0x9d, 0xf8, 0x24, + 0xaa, 0x34, 0x17, 0x7a, 0xd9, 0xa4, 0x6f, 0x48, 0xfc, 0xbb, 0x14, 0x28, 0x86, 0x02, 0x59, 0x43, + 0xdb, 0xc1, 0x4c, 0x2f, 0xc8, 0xb3, 0x72, 0x23, 0x1c, 0xd5, 0xf6, 0x34, 0x47, 0xb3, 0x56, 0xcd, + 0x96, 0xd6, 0x21, 0x83, 0x9f, 0xd7, 0xf2, 0x7b, 0x3f, 0x90, 0x1d, 0x21, 0xc7, 0xb4, 0x30, 0xc9, + 0xe5, 0xed, 0x08, 0x79, 0x09, 0x2e, 0x75, 0xbd, 0x65, 0x1a, 0x84, 0x7f, 0x59, 0x25, 0xcf, 0xae, + 0x54, 0xda, 0xba, 0xed, 0x56, 0x84, 0x50, 0xa9, 0xd2, 0xad, 0x8d, 0xfa, 0x25, 0xa3, 0x45, 0x76, + 0x83, 0x26, 0xd5, 0xa8, 0xcf, 0xca, 0x02, 0x4c, 0xb3, 0x8d, 0x90, 0x35, 0x57, 0xaf, 0xf2, 0x44, + 0xaf, 0xae, 0xe1, 0x7d, 0xba, 0x28, 0x9e, 0xf3, 0xd5, 0x20, 0x9f, 0x1a, 0xfe, 0x49, 0xb9, 0x1b, + 0xae, 0x64, 0xaf, 0xa5, 0x5d, 0xdb, 0x31, 0x77, 0x28, 0xe8, 0x4b, 0x7a, 0x87, 0xd6, 0x60, 0x82, + 0xd4, 0x20, 0x2e, 0x8b, 0x72, 0x2b, 0x1c, 0xef, 0x5a, 0x78, 0x13, 0x5b, 0xf7, 0x69, 0x3b, 0xbb, + 0x0f, 0x34, 0x2c, 0xcd, 0xb0, 0xbb, 0xa6, 0xe5, 0x9c, 0x9a, 0x24, 0xcc, 0xf7, 0xfd, 0xc6, 0x3a, + 0xca, 0x49, 0xc8, 0x53, 0xf1, 0xa1, 0xe7, 0xe7, 0x84, 0xdd, 0x39, 0x59, 0x85, 0x62, 0xcd, 0xb3, + 0x5b, 0x60, 0x82, 0xf5, 0x70, 0x04, 0xa8, 0xe9, 0x5b, 0x4f, 0xf6, 0xac, 0x2b, 0x30, 0x2a, 0xaa, + 0x97, 0x4d, 0x79, 0x1c, 0xe4, 0x5b, 0xa4, 0x5a, 0x04, 0xb3, 0xe9, 0x5b, 0xaf, 0xec, 0x5f, 0x28, + 0xc9, 0xa2, 0xb2, 0xac, 0xe8, 0x2f, 0x64, 0x21, 0x0f, 0xd0, 0x38, 0x8e, 0x93, 0xb5, 0xea, 0x6f, + 0x49, 0x43, 0x74, 0x9b, 0x37, 0xc1, 0x0d, 0xac, 0x4f, 0x64, 0xf6, 0xc7, 0x62, 0x73, 0x61, 0xc3, + 0x9b, 0x0c, 0xba, 0x56, 0x49, 0xbd, 0x51, 0x54, 0xdd, 0x99, 0xfc, 0xa2, 0x3b, 0x89, 0xbc, 0x11, + 0xae, 0x1f, 0x90, 0xbb, 0xdc, 0x68, 0x56, 0x8b, 0x6b, 0xe5, 0xc2, 0x26, 0x6f, 0xdb, 0xd4, 0x1b, + 0xb5, 0xf5, 0xa6, 0xba, 0x51, 0xad, 0x56, 0xaa, 0xcb, 0x94, 0x98, 0x6b, 0x12, 0x9e, 0x0c, 0x32, + 0x9c, 0x53, 0x2b, 0x8d, 0x72, 0xb3, 0x54, 0xab, 0x2e, 0x55, 0x96, 0x0b, 0xfa, 0x20, 0xc3, 0xe8, + 0x7e, 0xe5, 0x1a, 0xb8, 0x8a, 0xe3, 0xa4, 0x52, 0xab, 0xba, 0x33, 0xdb, 0x52, 0xb1, 0x5a, 0x2a, + 0xbb, 0xd3, 0xd8, 0x0b, 0x0a, 0x82, 0x13, 0x94, 0x5c, 0x73, 0xa9, 0xb2, 0x1a, 0xde, 0x8c, 0xfa, + 0x44, 0x46, 0x39, 0x05, 0x97, 0x85, 0xbf, 0x55, 0xaa, 0x67, 0x8b, 0xab, 0x95, 0xc5, 0xc2, 0x1f, + 0x65, 0x94, 0xeb, 0xe0, 0x6a, 0xee, 0x2f, 0xba, 0xaf, 0xd4, 0xac, 0x2c, 0x36, 0xd7, 0x2a, 0xf5, + 0xb5, 0x62, 0xa3, 0xb4, 0x52, 0xf8, 0x24, 0x99, 0x2f, 0xf8, 0x06, 0x70, 0xc8, 0x2d, 0xf3, 0x45, + 0xe1, 0x31, 0xbd, 0xc8, 0x2b, 0xea, 0xa3, 0xfb, 0xc2, 0x1e, 0x6f, 0xc3, 0x7e, 0xcc, 0x1f, 0x1d, + 0x16, 0x39, 0x15, 0xba, 0x25, 0x01, 0xad, 0x64, 0x3a, 0xd4, 0x18, 0x42, 0x85, 0xae, 0x81, 0xab, + 0xaa, 0x65, 0x8a, 0x94, 0x5a, 0x2e, 0xd5, 0xce, 0x96, 0xd5, 0xe6, 0xb9, 0xe2, 0xea, 0x6a, 0xb9, + 0xd1, 0x5c, 0xaa, 0xa8, 0xf5, 0x46, 0x61, 0x13, 0xfd, 0xb3, 0xe4, 0xaf, 0xe6, 0x84, 0xa4, 0xf5, + 0xd7, 0x52, 0xd2, 0x66, 0x1d, 0xbb, 0x6a, 0xf3, 0x53, 0x90, 0xb7, 0x1d, 0xcd, 0xd9, 0xb5, 0x59, + 0xab, 0x7e, 0x44, 0xff, 0x56, 0x3d, 0x5f, 0x27, 0x99, 0x54, 0x96, 0x19, 0xfd, 0x45, 0x26, 0x49, + 0x33, 0x1d, 0xc1, 0x82, 0x8e, 0x3e, 0x84, 0x88, 0x4f, 0x03, 0xf2, 0xb4, 0xbd, 0x52, 0x6f, 0x16, + 0x57, 0xd5, 0x72, 0x71, 0xf1, 0x3e, 0x7f, 0x19, 0x07, 0x2b, 0x27, 0xe0, 0xd8, 0x46, 0xb5, 0xb8, + 0xb0, 0x5a, 0x26, 0xcd, 0xa5, 0x56, 0xad, 0x96, 0x4b, 0xae, 0xdc, 0x7f, 0x89, 0x6c, 0x9a, 0xb8, + 0x16, 0x34, 0xe1, 0xdb, 0xb5, 0x72, 0x42, 0xf2, 0xff, 0xa6, 0xb0, 0x6f, 0x51, 0xa0, 0x61, 0x61, + 0x5a, 0xa3, 0xc5, 0xe1, 0x4b, 0x42, 0xee, 0x44, 0x42, 0x9c, 0x24, 0xc3, 0xe3, 0x3f, 0x0f, 0x81, + 0xc7, 0x09, 0x38, 0x16, 0xc6, 0x83, 0xb8, 0x15, 0x45, 0xc3, 0xf0, 0xb5, 0x49, 0xc8, 0xd7, 0x71, + 0x07, 0xb7, 0x1c, 0xf4, 0xd6, 0x90, 0x31, 0x31, 0x07, 0x92, 0xef, 0xc6, 0x22, 0xe9, 0x6d, 0x6e, + 0xfa, 0x2c, 0xf5, 0x4c, 0x9f, 0x63, 0xcc, 0x00, 0x39, 0x91, 0x19, 0x90, 0x4d, 0xc1, 0x0c, 0xc8, + 0x0d, 0x6f, 0x06, 0xe4, 0x07, 0x99, 0x01, 0xe8, 0x75, 0xf9, 0xa4, 0xbd, 0x04, 0x15, 0xf5, 0xe1, + 0x0e, 0xfe, 0xff, 0x2b, 0x9b, 0xa4, 0x57, 0xe9, 0xcb, 0x71, 0x32, 0x2d, 0xfe, 0xa1, 0x9c, 0xc2, + 0xf2, 0x83, 0x72, 0x2d, 0x5c, 0x1d, 0xbc, 0x37, 0xcb, 0x4f, 0xad, 0xd4, 0x1b, 0x75, 0x32, 0xe2, + 0x97, 0x6a, 0xaa, 0xba, 0xb1, 0x4e, 0xd7, 0x90, 0x4f, 0x82, 0x12, 0x50, 0x51, 0x37, 0xaa, 0x74, + 0x7c, 0xdf, 0xe2, 0xa9, 0x2f, 0x55, 0xaa, 0x8b, 0x4d, 0xbf, 0xcd, 0x54, 0x97, 0x6a, 0x85, 0x6d, + 0x77, 0xca, 0x16, 0xa2, 0xee, 0x0e, 0xd0, 0xac, 0x84, 0x62, 0x75, 0xb1, 0xb9, 0x56, 0x2d, 0xaf, + 0xd5, 0xaa, 0x95, 0x12, 0x49, 0xaf, 0x97, 0x1b, 0x05, 0xdd, 0x1d, 0x68, 0x7a, 0x2c, 0x8a, 0x7a, + 0xb9, 0xa8, 0x96, 0x56, 0xca, 0x2a, 0x2d, 0xf2, 0x7e, 0xe5, 0x7a, 0x38, 0x53, 0xac, 0xd6, 0x1a, + 0x6e, 0x4a, 0xb1, 0x7a, 0x5f, 0xe3, 0xbe, 0xf5, 0x72, 0x73, 0x5d, 0xad, 0x95, 0xca, 0xf5, 0xba, + 0xdb, 0x4e, 0x99, 0xfd, 0x51, 0xe8, 0x28, 0x4f, 0x86, 0xdb, 0x43, 0xac, 0x95, 0x1b, 0x64, 0xc3, + 0x72, 0xad, 0x46, 0x7c, 0x56, 0x16, 0xcb, 0xcd, 0x95, 0x62, 0xbd, 0x59, 0xa9, 0x96, 0x6a, 0x6b, + 0xeb, 0xc5, 0x46, 0xc5, 0x6d, 0xce, 0xeb, 0x6a, 0xad, 0x51, 0x6b, 0x9e, 0x2d, 0xab, 0xf5, 0x4a, + 0xad, 0x5a, 0x30, 0xdc, 0x2a, 0x87, 0xda, 0xbf, 0xd7, 0x0f, 0x9b, 0xca, 0x55, 0x70, 0xca, 0x4b, + 0x5f, 0xad, 0xb9, 0x82, 0x0e, 0x59, 0x24, 0xdd, 0x54, 0x2d, 0x92, 0x7f, 0x95, 0x20, 0x5b, 0x77, + 0xcc, 0x2e, 0xfa, 0xc9, 0xa0, 0x83, 0x39, 0x0d, 0x60, 0x91, 0xfd, 0x47, 0x77, 0x16, 0xc6, 0xe6, + 0x65, 0xa1, 0x14, 0xf4, 0x87, 0xc2, 0x9b, 0x26, 0x41, 0x9f, 0x6d, 0x76, 0x23, 0x6c, 0x95, 0xef, + 0x8b, 0x9d, 0x22, 0x89, 0x26, 0x94, 0x4c, 0xdf, 0x7f, 0x79, 0x98, 0x6d, 0x11, 0x04, 0x27, 0x43, + 0xb0, 0xb9, 0xf2, 0xf7, 0x54, 0x02, 0x2b, 0x97, 0xc3, 0x65, 0x3d, 0xca, 0x45, 0x74, 0x6a, 0x53, + 0xf9, 0x09, 0x78, 0x44, 0x48, 0xbd, 0xcb, 0x6b, 0xb5, 0xb3, 0x65, 0x5f, 0x91, 0x17, 0x8b, 0x8d, + 0x62, 0x61, 0x0b, 0x7d, 0x4e, 0x86, 0xec, 0x9a, 0xb9, 0xd7, 0xbb, 0x57, 0x65, 0xe0, 0x8b, 0xa1, + 0xb5, 0x50, 0xef, 0x95, 0xf7, 0x9a, 0x17, 0x12, 0xfb, 0x5a, 0xf4, 0xbe, 0xf4, 0x97, 0xa4, 0x24, + 0x62, 0x5f, 0x3b, 0xe8, 0x66, 0xf4, 0xdf, 0x0f, 0x23, 0xf6, 0x08, 0xd1, 0x62, 0xe5, 0x0c, 0x9c, + 0x0e, 0x3e, 0x54, 0x16, 0xcb, 0xd5, 0x46, 0x65, 0xe9, 0xbe, 0x40, 0xb8, 0x15, 0x55, 0x48, 0xfc, + 0x83, 0xba, 0xb1, 0xf8, 0x99, 0xc6, 0x29, 0x38, 0x1e, 0x7c, 0x5b, 0x2e, 0x37, 0xbc, 0x2f, 0xf7, + 0xa3, 0x07, 0x73, 0x30, 0x43, 0xbb, 0xf5, 0x8d, 0x6e, 0x5b, 0x73, 0x30, 0x7a, 0x5c, 0x80, 0xee, + 0x0d, 0x70, 0xb4, 0xb2, 0xbe, 0x54, 0xaf, 0x3b, 0xa6, 0xa5, 0x6d, 0xe1, 0x62, 0xbb, 0x6d, 0x31, + 0x69, 0xf5, 0x26, 0xa3, 0x77, 0x09, 0xaf, 0xf3, 0xf1, 0x43, 0x09, 0x2d, 0x33, 0x02, 0xf5, 0xaf, + 0x0a, 0xad, 0xcb, 0x09, 0x10, 0x4c, 0x86, 0xfe, 0xfd, 0x23, 0x6e, 0x73, 0xd1, 0xb8, 0x6c, 0x9e, + 0x79, 0x96, 0x04, 0x53, 0x0d, 0x7d, 0x07, 0x3f, 0xcd, 0x34, 0xb0, 0xad, 0x4c, 0x80, 0xbc, 0xbc, + 0xd6, 0x28, 0x1c, 0x71, 0x1f, 0x5c, 0xa3, 0x2a, 0x43, 0x1e, 0xca, 0x6e, 0x01, 0xee, 0x43, 0xb1, + 0x51, 0x90, 0xdd, 0x87, 0xb5, 0x72, 0xa3, 0x90, 0x75, 0x1f, 0xaa, 0xe5, 0x46, 0x21, 0xe7, 0x3e, + 0xac, 0xaf, 0x36, 0x0a, 0x79, 0xf7, 0xa1, 0x52, 0x6f, 0x14, 0x26, 0xdc, 0x87, 0x85, 0x7a, 0xa3, + 0x30, 0xe9, 0x3e, 0x9c, 0xad, 0x37, 0x0a, 0x53, 0xee, 0x43, 0xa9, 0xd1, 0x28, 0x80, 0xfb, 0x70, + 0x4f, 0xbd, 0x51, 0x98, 0x76, 0x1f, 0x8a, 0xa5, 0x46, 0x61, 0x86, 0x3c, 0x94, 0x1b, 0x85, 0x59, + 0xf7, 0xa1, 0x5e, 0x6f, 0x14, 0xe6, 0x08, 0xe5, 0x7a, 0xa3, 0x70, 0x94, 0x94, 0x55, 0x69, 0x14, + 0x0a, 0xee, 0xc3, 0x4a, 0xbd, 0x51, 0x38, 0x46, 0x32, 0xd7, 0x1b, 0x05, 0x85, 0x14, 0x5a, 0x6f, + 0x14, 0x2e, 0x23, 0x79, 0xea, 0x8d, 0xc2, 0x71, 0x52, 0x44, 0xbd, 0x51, 0x38, 0x41, 0xd8, 0x28, + 0x37, 0x0a, 0x27, 0x49, 0x1e, 0xb5, 0x51, 0xb8, 0x9c, 0x7c, 0xaa, 0x36, 0x0a, 0xa7, 0x08, 0x63, + 0xe5, 0x46, 0xe1, 0x0a, 0xf2, 0xa0, 0x36, 0x0a, 0x88, 0x7c, 0x2a, 0x36, 0x0a, 0x57, 0xa2, 0x47, + 0xc0, 0xd4, 0x32, 0x76, 0x28, 0x88, 0xa8, 0x00, 0xf2, 0x32, 0x76, 0xc2, 0x66, 0xfc, 0xd7, 0x65, + 0xb8, 0x9c, 0x4d, 0xfd, 0x96, 0x2c, 0x73, 0x67, 0x15, 0x6f, 0x69, 0xad, 0x4b, 0xe5, 0x07, 0x5c, + 0x13, 0x2a, 0xbc, 0x2f, 0xab, 0x40, 0xb6, 0x1b, 0x74, 0x46, 0xe4, 0x39, 0xd6, 0xe2, 0xf4, 0x16, + 0xa3, 0xe4, 0x60, 0x31, 0x8a, 0x59, 0x64, 0xff, 0x14, 0xd6, 0x68, 0x6e, 0xfd, 0x38, 0xd3, 0xb3, + 0x7e, 0xec, 0x36, 0x93, 0x2e, 0xb6, 0x6c, 0xd3, 0xd0, 0x3a, 0x75, 0xb6, 0x71, 0x4f, 0x57, 0xbd, + 0x7a, 0x93, 0x95, 0xa7, 0x78, 0x2d, 0x83, 0x5a, 0x65, 0x4f, 0x8a, 0x9b, 0xe1, 0xf6, 0x56, 0x33, + 0xa2, 0x91, 0x7c, 0xd2, 0x6f, 0x24, 0x0d, 0xae, 0x91, 0xdc, 0x7d, 0x00, 0xda, 0xc9, 0xda, 0x4b, + 0x65, 0xb8, 0xa9, 0x45, 0xe0, 0xd6, 0xea, 0x2d, 0x57, 0xcb, 0xe8, 0x73, 0x12, 0x9c, 0x2c, 0x1b, + 0xfd, 0x2c, 0xfc, 0xb0, 0x2e, 0xbc, 0x39, 0x0c, 0xcd, 0x3a, 0x2f, 0xd2, 0xdb, 0xfb, 0x56, 0xbb, + 0x3f, 0xcd, 0x08, 0x89, 0x7e, 0xda, 0x97, 0x68, 0x9d, 0x93, 0xe8, 0x5d, 0xc3, 0x93, 0x4e, 0x26, + 0xd0, 0xea, 0x48, 0x3b, 0xa0, 0x2c, 0xfa, 0x56, 0x16, 0x1e, 0x41, 0x7d, 0x6f, 0x18, 0x87, 0xb4, + 0x95, 0x15, 0x8d, 0xb6, 0x8a, 0x6d, 0x47, 0xb3, 0x1c, 0xee, 0x3c, 0x74, 0xcf, 0x54, 0x2a, 0x93, + 0xc2, 0x54, 0x4a, 0x1a, 0x38, 0x95, 0x42, 0xef, 0x0c, 0x9b, 0x0f, 0xe7, 0x78, 0x8c, 0x8b, 0xfd, + 0xfb, 0xff, 0xb8, 0x1a, 0x46, 0x41, 0xed, 0xdb, 0x15, 0x3f, 0xc3, 0x41, 0xbd, 0x74, 0xe0, 0x12, + 0x92, 0x21, 0xfe, 0x87, 0xa3, 0xb5, 0xf3, 0xb2, 0xe1, 0x6f, 0xbc, 0x51, 0x52, 0x68, 0xa7, 0x6a, + 0xa0, 0xbf, 0x60, 0x12, 0xa6, 0x48, 0x5b, 0x58, 0xd5, 0x8d, 0x0b, 0x6e, 0xa7, 0x3d, 0x53, 0xc5, + 0x17, 0x4b, 0xdb, 0x5a, 0xa7, 0x83, 0x8d, 0x2d, 0x8c, 0xee, 0xe7, 0x2c, 0x47, 0xad, 0xdb, 0xad, + 0x06, 0xfb, 0x0c, 0xde, 0xab, 0x72, 0x17, 0xe4, 0xec, 0x96, 0xd9, 0xc5, 0x44, 0x50, 0x73, 0x21, + 0xcf, 0x04, 0x7e, 0x65, 0xa5, 0xb8, 0xeb, 0x6c, 0xcf, 0x93, 0xb2, 0x8a, 0x5d, 0xbd, 0xee, 0xfe, + 0xa0, 0xd2, 0xff, 0x58, 0x07, 0xfe, 0xcd, 0xbe, 0xbd, 0x44, 0x26, 0xa6, 0x97, 0xf0, 0x19, 0x9f, + 0x0f, 0x33, 0x1d, 0x31, 0xc5, 0xbe, 0x06, 0xa6, 0x5b, 0x5e, 0x16, 0xff, 0xe0, 0x45, 0x38, 0x09, + 0xfd, 0x6d, 0xa2, 0x7e, 0x44, 0xa8, 0xf0, 0x64, 0x5a, 0x85, 0x47, 0x6c, 0xc8, 0x9c, 0x80, 0x63, + 0x8d, 0x5a, 0xad, 0xb9, 0x56, 0xac, 0xde, 0x17, 0x1c, 0x78, 0xde, 0x44, 0x2f, 0xcf, 0xc2, 0x5c, + 0xdd, 0xec, 0xec, 0xe1, 0x00, 0xe7, 0x0a, 0xe7, 0xd1, 0x13, 0x96, 0x53, 0x66, 0x9f, 0x9c, 0x94, + 0x93, 0x90, 0xd7, 0x0c, 0xfb, 0x22, 0xf6, 0x8c, 0x4b, 0xf6, 0xc6, 0x60, 0xfc, 0x40, 0xb8, 0x23, + 0x50, 0x79, 0x18, 0xef, 0x18, 0x20, 0x49, 0x9e, 0xab, 0x08, 0x20, 0xcf, 0xc0, 0x8c, 0x4d, 0x77, + 0x1b, 0x1b, 0xa1, 0x4d, 0x65, 0x2e, 0x8d, 0xb0, 0x48, 0xb7, 0xbb, 0x65, 0xc6, 0x22, 0x79, 0x43, + 0xaf, 0xf1, 0xfb, 0x8f, 0x0d, 0x0e, 0xe2, 0xe2, 0x41, 0x18, 0x4b, 0x06, 0xf2, 0x2b, 0x47, 0x3d, + 0x45, 0x3c, 0x05, 0xc7, 0x59, 0xb3, 0x6f, 0x96, 0x56, 0x8a, 0xab, 0xab, 0xe5, 0xea, 0x72, 0xb9, + 0x59, 0x59, 0xa4, 0x7b, 0x1d, 0x41, 0x4a, 0xb1, 0xd1, 0x28, 0xaf, 0xad, 0x37, 0xea, 0xcd, 0xf2, + 0x53, 0x4b, 0xe5, 0xf2, 0x22, 0xf1, 0xa9, 0x23, 0x87, 0x62, 0x3c, 0xef, 0xc7, 0x62, 0xb5, 0x7e, + 0xae, 0xac, 0x16, 0xb6, 0xcf, 0x14, 0x61, 0x3a, 0x34, 0x50, 0xb8, 0xdc, 0x2d, 0xe2, 0x4d, 0x6d, + 0xb7, 0xc3, 0x8c, 0xbd, 0xc2, 0x11, 0x97, 0x3b, 0x22, 0x9b, 0x9a, 0xd1, 0xb9, 0x54, 0xc8, 0x28, + 0x05, 0x98, 0x09, 0x8f, 0x09, 0x05, 0x09, 0xbd, 0xed, 0x2a, 0x98, 0x3a, 0x67, 0x5a, 0x17, 0x88, + 0x23, 0x18, 0x7a, 0x2f, 0x0d, 0x8c, 0xe2, 0x1d, 0x31, 0x0d, 0x59, 0x06, 0xaf, 0x14, 0x77, 0x37, + 0xf0, 0xa8, 0xcd, 0x0f, 0x3c, 0x46, 0x7a, 0x0d, 0x4c, 0x5f, 0xf4, 0x72, 0x07, 0x2d, 0x3d, 0x94, + 0x84, 0xfe, 0xbb, 0x98, 0x03, 0xc1, 0xe0, 0x22, 0xd3, 0xdf, 0xe0, 0x7e, 0xab, 0x04, 0xf9, 0x65, + 0xec, 0x14, 0x3b, 0x9d, 0xb0, 0xdc, 0x5e, 0x2c, 0x7c, 0x34, 0x88, 0xab, 0x44, 0xb1, 0xd3, 0x89, + 0x6e, 0x54, 0x21, 0x01, 0x79, 0x2e, 0xec, 0x5c, 0x9a, 0xa0, 0xe3, 0xdd, 0x80, 0x02, 0xd3, 0x97, + 0xd8, 0x87, 0x65, 0x7f, 0x93, 0xfc, 0xa1, 0x90, 0x99, 0xf4, 0xd8, 0x20, 0x28, 0x4e, 0x26, 0x7e, + 0xb3, 0xdd, 0xcb, 0xa7, 0xdc, 0x0b, 0x13, 0xbb, 0x36, 0x2e, 0x69, 0xb6, 0x37, 0xb4, 0xf1, 0x35, + 0xad, 0x9d, 0xbf, 0x1f, 0xb7, 0x9c, 0xf9, 0xca, 0x8e, 0x6b, 0x91, 0x6f, 0xd0, 0x8c, 0x7e, 0x9c, + 0x19, 0xf6, 0xae, 0x7a, 0x14, 0xdc, 0x59, 0xcd, 0x45, 0xdd, 0xd9, 0x2e, 0x6d, 0x6b, 0x0e, 0x5b, + 0x1c, 0xf7, 0xdf, 0xd1, 0xf3, 0x87, 0x80, 0x33, 0x76, 0x33, 0x39, 0xf2, 0x84, 0x61, 0x62, 0x10, + 0x47, 0xb0, 0x03, 0x3c, 0x0c, 0x88, 0xff, 0x20, 0x41, 0xb6, 0xd6, 0xc5, 0x86, 0xf0, 0x71, 0x1a, + 0x5f, 0xb6, 0x52, 0x8f, 0x6c, 0x5f, 0x23, 0xee, 0x5e, 0xe6, 0x57, 0xda, 0x2d, 0x39, 0x42, 0xb2, + 0x37, 0x43, 0x56, 0x37, 0x36, 0x4d, 0x66, 0xd9, 0x5e, 0x19, 0x61, 0xeb, 0x54, 0x8c, 0x4d, 0x53, + 0x25, 0x19, 0x45, 0x3d, 0xcb, 0xe2, 0xca, 0x4e, 0x5f, 0xdc, 0xdf, 0x9e, 0x84, 0x3c, 0x55, 0x67, + 0xf4, 0x22, 0x19, 0xe4, 0x62, 0xbb, 0x1d, 0x21, 0x78, 0x69, 0x9f, 0xe0, 0x4d, 0xf2, 0x9b, 0x8f, + 0x89, 0xff, 0xce, 0x47, 0x43, 0x11, 0xec, 0xdb, 0x59, 0x93, 0x2a, 0xb6, 0xdb, 0xd1, 0x4e, 0xac, + 0x7e, 0x81, 0x12, 0x5f, 0x60, 0xb8, 0x85, 0xcb, 0x62, 0x2d, 0x3c, 0xf1, 0x40, 0x10, 0xc9, 0x5f, + 0xfa, 0x10, 0xfd, 0x93, 0x04, 0x13, 0xab, 0xba, 0xed, 0xb8, 0xd8, 0x14, 0x45, 0xb0, 0xb9, 0x0a, + 0xa6, 0x3c, 0xd1, 0xb8, 0x5d, 0x9e, 0xdb, 0x9f, 0x07, 0x09, 0xe8, 0xb5, 0x61, 0x74, 0xee, 0xe1, + 0xd1, 0x79, 0x7c, 0x7c, 0xed, 0x19, 0x17, 0xd1, 0xc7, 0x14, 0x82, 0x62, 0xa5, 0xde, 0x62, 0x7f, + 0xc7, 0x17, 0xf8, 0x1a, 0x27, 0xf0, 0xdb, 0x86, 0x29, 0x32, 0x7d, 0xa1, 0x7f, 0x5e, 0x02, 0x70, + 0xcb, 0x66, 0x67, 0xc1, 0x1e, 0xc5, 0x9d, 0xf0, 0x8e, 0x91, 0xee, 0xcb, 0xc3, 0xd2, 0x5d, 0xe3, + 0xa5, 0xfb, 0xd3, 0x83, 0xab, 0x1a, 0x77, 0xe6, 0x4b, 0x29, 0x80, 0xac, 0xfb, 0xa2, 0x75, 0x1f, + 0xd1, 0x5b, 0x7d, 0xa1, 0xae, 0x73, 0x42, 0xbd, 0x63, 0xc8, 0x92, 0xd2, 0x97, 0xeb, 0x5f, 0x4a, + 0x30, 0x51, 0xc7, 0x8e, 0xdb, 0x4d, 0xa2, 0xb3, 0x22, 0x3d, 0x7c, 0xa8, 0x6d, 0x4b, 0x82, 0x6d, + 0xfb, 0x7b, 0x19, 0xd1, 0x48, 0x31, 0x81, 0x64, 0x18, 0x4f, 0x11, 0xab, 0x0f, 0x0f, 0x09, 0x45, + 0x8a, 0x19, 0x44, 0x2d, 0x7d, 0xe9, 0xbe, 0x59, 0xf2, 0x77, 0xf6, 0xf9, 0xa3, 0x1a, 0x61, 0xb3, + 0x38, 0xb3, 0xdf, 0x2c, 0x16, 0x3f, 0xaa, 0x11, 0xae, 0x63, 0xf4, 0xb6, 0x76, 0x62, 0x63, 0x63, + 0x04, 0x3b, 0xce, 0xc3, 0xc8, 0xeb, 0x19, 0x32, 0xe4, 0xd9, 0xd2, 0xf4, 0x5d, 0xf1, 0x4b, 0xd3, + 0x83, 0xa7, 0x16, 0xef, 0x19, 0xc2, 0x94, 0x8b, 0x5b, 0x2f, 0xf6, 0xd9, 0x90, 0x42, 0x6c, 0xdc, + 0x04, 0x39, 0x12, 0xca, 0x92, 0x8d, 0x73, 0x81, 0xb3, 0x80, 0x47, 0xa2, 0xec, 0x7e, 0x55, 0x69, + 0xa6, 0xc4, 0x28, 0x8c, 0x60, 0x89, 0x79, 0x18, 0x14, 0x7e, 0x53, 0x01, 0x58, 0xdf, 0x3d, 0xdf, + 0xd1, 0xed, 0x6d, 0xdd, 0xd8, 0x42, 0x5f, 0xcb, 0xc0, 0x0c, 0x7b, 0xa5, 0x11, 0x19, 0x63, 0xcd, + 0xbf, 0x48, 0xa3, 0xa0, 0x00, 0xf2, 0xae, 0xa5, 0xb3, 0x65, 0x00, 0xf7, 0x51, 0xb9, 0xd3, 0xf7, + 0x04, 0xca, 0xf6, 0x9c, 0xc5, 0x77, 0xc5, 0x10, 0x70, 0x30, 0x1f, 0x2a, 0x3d, 0xf0, 0x08, 0x0a, + 0x87, 0xdd, 0xcc, 0xf1, 0x61, 0x37, 0xb9, 0x03, 0x7a, 0xf9, 0x9e, 0x03, 0x7a, 0x2e, 0x8e, 0xb6, + 0xfe, 0x34, 0x4c, 0xbc, 0x53, 0x65, 0x95, 0x3c, 0xa3, 0x0f, 0x06, 0x53, 0x15, 0x53, 0xd0, 0xce, + 0x4d, 0x50, 0xd1, 0xab, 0x60, 0xea, 0x7e, 0x53, 0x37, 0xc8, 0x5e, 0x06, 0xf3, 0x3e, 0x0e, 0x12, + 0xd0, 0x47, 0x85, 0x03, 0x69, 0x85, 0x44, 0x12, 0x3b, 0xe9, 0x60, 0x1c, 0x48, 0x3e, 0x07, 0xa1, + 0x0d, 0xc1, 0xb8, 0x0e, 0x73, 0x10, 0xfd, 0x64, 0xaa, 0xb7, 0x33, 0xc4, 0xf2, 0x8a, 0x02, 0x73, + 0xde, 0xc1, 0xc4, 0xda, 0xc2, 0x3d, 0xe5, 0x52, 0xa3, 0x80, 0xf7, 0x1f, 0x56, 0x24, 0xc7, 0x12, + 0xe9, 0x11, 0xc4, 0x60, 0x09, 0x05, 0xfd, 0x4f, 0x09, 0xf2, 0xcc, 0x3a, 0xb8, 0xeb, 0x80, 0x10, + 0xa2, 0x57, 0x0c, 0x03, 0x49, 0xec, 0xf9, 0xf0, 0x4f, 0x25, 0x05, 0x60, 0x04, 0xf6, 0xc0, 0x7d, + 0xa9, 0x01, 0x80, 0xfe, 0x45, 0x82, 0xac, 0x6b, 0xb5, 0x88, 0x9d, 0xbe, 0xfd, 0xa4, 0xb0, 0xdf, + 0x6b, 0x48, 0x00, 0x2e, 0xf9, 0x08, 0xfd, 0x5e, 0x80, 0xa9, 0x2e, 0xcd, 0xe8, 0x9f, 0xfd, 0xbe, + 0x4e, 0xa0, 0xef, 0xc0, 0x6a, 0xf0, 0x1b, 0x7a, 0xb7, 0x90, 0xef, 0x6c, 0x3c, 0x3f, 0xc9, 0xe0, + 0x28, 0x8f, 0xe2, 0xa0, 0xee, 0x26, 0xfa, 0x81, 0x04, 0xa0, 0x62, 0xdb, 0xec, 0xec, 0xe1, 0x0d, + 0x4b, 0x47, 0x57, 0x06, 0x00, 0xb0, 0x66, 0x9f, 0x09, 0x9a, 0xfd, 0x67, 0xc2, 0x82, 0x5f, 0xe6, + 0x05, 0xff, 0xd8, 0x68, 0xcd, 0xf3, 0x88, 0x47, 0x88, 0xff, 0xc9, 0x30, 0xc1, 0xe4, 0xc8, 0x4c, + 0x40, 0x31, 0xe1, 0x7b, 0x3f, 0xa1, 0xf7, 0xf9, 0xa2, 0xbf, 0x87, 0x13, 0xfd, 0x13, 0x12, 0x73, + 0x94, 0x0c, 0x80, 0xd2, 0x10, 0x00, 0x1c, 0x85, 0x69, 0x0f, 0x80, 0x0d, 0xb5, 0x52, 0xc0, 0xe8, + 0x1d, 0x32, 0xd9, 0x6e, 0xa7, 0x63, 0xd1, 0xc1, 0x7b, 0x9a, 0x6f, 0x08, 0xcf, 0xcd, 0x43, 0xf2, + 0xf0, 0xcb, 0x4f, 0x09, 0xa0, 0x3f, 0x15, 0x9a, 0x8c, 0x0b, 0x30, 0xf4, 0x70, 0xe9, 0xaf, 0xce, + 0x94, 0x61, 0x96, 0x33, 0x22, 0x94, 0x53, 0x70, 0x9c, 0x4b, 0xa0, 0xe3, 0x5d, 0xbb, 0x70, 0x44, + 0x41, 0x70, 0x92, 0xfb, 0xc2, 0x5e, 0x70, 0xbb, 0x90, 0x41, 0x7f, 0xfe, 0xb9, 0x8c, 0xbf, 0x3c, + 0xf3, 0x9e, 0x2c, 0x5b, 0x18, 0xfb, 0x38, 0x1f, 0x6e, 0xac, 0x65, 0x1a, 0x0e, 0x7e, 0x20, 0xe4, + 0xee, 0xe0, 0x27, 0xc4, 0x5a, 0x0d, 0xa7, 0x60, 0xc2, 0xb1, 0xc2, 0x2e, 0x10, 0xde, 0x6b, 0x58, + 0xb1, 0x72, 0xbc, 0x62, 0x55, 0xe1, 0x8c, 0x6e, 0xb4, 0x3a, 0xbb, 0x6d, 0xac, 0xe2, 0x8e, 0xe6, + 0xca, 0xd0, 0x2e, 0xda, 0x8b, 0xb8, 0x8b, 0x8d, 0x36, 0x36, 0x1c, 0xca, 0xa7, 0x77, 0xdc, 0x49, + 0x20, 0x27, 0xaf, 0x8c, 0x77, 0xf2, 0xca, 0xf8, 0xa8, 0x7e, 0x2b, 0xae, 0x31, 0xcb, 0x73, 0xb7, + 0x01, 0xd0, 0xba, 0x9d, 0xd5, 0xf1, 0x45, 0xa6, 0x86, 0x57, 0xf4, 0x2c, 0xd2, 0xd5, 0xfc, 0x0c, + 0x6a, 0x28, 0x33, 0xfa, 0x8a, 0xaf, 0x7e, 0x77, 0x73, 0xea, 0x77, 0x93, 0x20, 0x0b, 0xc9, 0xb4, + 0xae, 0x3b, 0x84, 0xd6, 0xcd, 0xc2, 0x54, 0xb0, 0xf9, 0x2b, 0x2b, 0x57, 0xc0, 0x09, 0xcf, 0x9d, + 0xb4, 0x5a, 0x2e, 0x2f, 0xd6, 0x9b, 0x1b, 0xeb, 0xcb, 0x6a, 0x71, 0xb1, 0x5c, 0x00, 0x57, 0x3f, + 0xa9, 0x5e, 0xfa, 0x5e, 0xa0, 0x59, 0xf4, 0x05, 0x09, 0x72, 0xe4, 0xac, 0x1e, 0xfa, 0xb9, 0x11, + 0x69, 0x8e, 0xcd, 0x39, 0xcf, 0xf8, 0xe3, 0xae, 0x78, 0x18, 0x70, 0x26, 0x4c, 0xc2, 0xd5, 0x81, + 0xc2, 0x80, 0xc7, 0x10, 0x4a, 0x7f, 0xe2, 0xe2, 0x36, 0xc9, 0xfa, 0xb6, 0x79, 0xf1, 0xc7, 0xb9, + 0x49, 0xba, 0xf5, 0x3f, 0xe4, 0x26, 0xd9, 0x87, 0x85, 0xb1, 0x37, 0xc9, 0x3e, 0xed, 0x2e, 0xa6, + 0x99, 0xa2, 0xa7, 0xe7, 0xfc, 0xf9, 0xdf, 0xb3, 0xa4, 0x03, 0x6d, 0x55, 0x15, 0x61, 0x56, 0x37, + 0x1c, 0x6c, 0x19, 0x5a, 0x67, 0xa9, 0xa3, 0x6d, 0x79, 0xf6, 0x69, 0xef, 0xfe, 0x44, 0x25, 0x94, + 0x47, 0xe5, 0xff, 0x50, 0x4e, 0x03, 0x38, 0x78, 0xa7, 0xdb, 0xd1, 0x9c, 0x40, 0xf5, 0x42, 0x29, + 0x61, 0xed, 0xcb, 0xf2, 0xda, 0x77, 0x0b, 0x5c, 0x46, 0x41, 0x6b, 0x5c, 0xea, 0xe2, 0x0d, 0x43, + 0xff, 0xf9, 0x5d, 0x12, 0x9d, 0x92, 0xea, 0x68, 0xbf, 0x4f, 0xdc, 0x86, 0x4d, 0xbe, 0x67, 0xc3, + 0xe6, 0x1f, 0x84, 0xa3, 0x5e, 0x78, 0xad, 0x7e, 0x40, 0xd4, 0x0b, 0xbf, 0xa5, 0xc9, 0x3d, 0x2d, + 0xcd, 0x5f, 0x46, 0xc9, 0x0a, 0x2c, 0xa3, 0x84, 0x51, 0xc9, 0x09, 0x2e, 0x41, 0xbe, 0x5a, 0x28, + 0xac, 0x46, 0x5c, 0x35, 0xc6, 0xb0, 0xc4, 0x2d, 0xc3, 0x1c, 0x2d, 0x7a, 0xc1, 0x34, 0x2f, 0xec, + 0x68, 0xd6, 0x05, 0x64, 0x1d, 0x48, 0x15, 0x63, 0x77, 0x8b, 0x22, 0xb7, 0x40, 0x3f, 0x2d, 0x3c, + 0x67, 0xe0, 0xc4, 0xe5, 0xf1, 0x3c, 0x9e, 0xed, 0xa2, 0x37, 0x0a, 0x4d, 0x21, 0x44, 0x18, 0x4c, + 0x1f, 0xd7, 0x3f, 0xf6, 0x71, 0xf5, 0x3a, 0xfa, 0xf0, 0x4a, 0xfb, 0x28, 0x71, 0x45, 0x5f, 0x1d, + 0x0e, 0x3b, 0x8f, 0xaf, 0x21, 0xb0, 0x2b, 0x80, 0x7c, 0xc1, 0x77, 0xee, 0x71, 0x1f, 0xc3, 0x15, + 0xca, 0xa6, 0x87, 0x66, 0x04, 0xcb, 0x63, 0x41, 0xf3, 0x38, 0xcf, 0x42, 0xad, 0x9b, 0x2a, 0xa6, + 0x5f, 0x16, 0xde, 0xc1, 0xea, 0x2b, 0x20, 0xca, 0xdd, 0x78, 0x5a, 0xa5, 0xd8, 0xf6, 0x97, 0x38, + 0x9b, 0xe9, 0xa3, 0xf9, 0xbc, 0x1c, 0x4c, 0x79, 0x71, 0x49, 0xc8, 0xb5, 0x39, 0x3e, 0x86, 0x27, + 0x21, 0x6f, 0x9b, 0xbb, 0x56, 0x0b, 0xb3, 0x3d, 0x45, 0xf6, 0x36, 0xc4, 0xfe, 0xd7, 0xc0, 0xf1, + 0x7c, 0x9f, 0xc9, 0x90, 0x4d, 0x6c, 0x32, 0x44, 0x1b, 0xa4, 0x71, 0x03, 0xfc, 0xf3, 0x85, 0x63, + 0x9d, 0x73, 0x98, 0xd5, 0xb1, 0xf3, 0x70, 0x1c, 0xe3, 0x3f, 0x24, 0xb4, 0xbb, 0x32, 0xa0, 0x26, + 0xc9, 0x54, 0xae, 0x36, 0x84, 0xa1, 0x7a, 0x25, 0x5c, 0xee, 0xe5, 0x60, 0x16, 0x2a, 0xb1, 0x48, + 0x37, 0xd4, 0xd5, 0x82, 0x8c, 0x9e, 0x91, 0x85, 0x02, 0x65, 0xad, 0xe6, 0x1b, 0x6b, 0xe8, 0xc5, + 0x99, 0xc3, 0xb6, 0x48, 0xa3, 0xa7, 0x98, 0x9f, 0x95, 0x44, 0xe3, 0xa9, 0x72, 0x82, 0x0f, 0x6a, + 0x17, 0xa1, 0x49, 0x43, 0x34, 0xb3, 0x18, 0xe5, 0x43, 0xbf, 0x9d, 0x11, 0x09, 0xcf, 0x2a, 0xc6, + 0x62, 0xfa, 0xbd, 0xd2, 0x17, 0xb3, 0x5e, 0x78, 0xa9, 0x25, 0xcb, 0xdc, 0xd9, 0xb0, 0x3a, 0xe8, + 0xff, 0x14, 0x8a, 0x7e, 0x1d, 0x61, 0xfe, 0x4b, 0xd1, 0xe6, 0x3f, 0x59, 0x32, 0xee, 0x04, 0x7b, + 0x55, 0x9d, 0x21, 0x86, 0x6f, 0xe5, 0x7a, 0x98, 0xd3, 0xda, 0xed, 0x75, 0x6d, 0x0b, 0x97, 0xdc, + 0x79, 0xb5, 0xe1, 0xb0, 0xd0, 0x33, 0x3d, 0xa9, 0xb1, 0x5d, 0x91, 0xf8, 0x3a, 0x28, 0x07, 0x12, + 0x93, 0xcf, 0x58, 0x86, 0x37, 0x77, 0x48, 0x68, 0x6d, 0x6b, 0x41, 0x20, 0x2c, 0xf6, 0x26, 0xe8, + 0xbb, 0x24, 0xc0, 0x77, 0xfa, 0x9a, 0xf5, 0xfb, 0x12, 0x4c, 0xb8, 0xf2, 0x2e, 0xb6, 0xdb, 0xe8, + 0x91, 0x5c, 0xbc, 0xb8, 0x48, 0xef, 0xb1, 0xe7, 0x08, 0xbb, 0xed, 0x79, 0x35, 0xa4, 0xf4, 0x23, + 0x30, 0x09, 0x84, 0x28, 0x71, 0x42, 0x14, 0xf3, 0xce, 0x8b, 0x2d, 0x22, 0x7d, 0xf1, 0x7d, 0x52, + 0x82, 0x59, 0x6f, 0x1e, 0xb1, 0x84, 0x9d, 0xd6, 0x36, 0xba, 0x4d, 0x74, 0xa1, 0x89, 0xb5, 0x34, + 0x7f, 0x4f, 0xb6, 0x83, 0x7e, 0x98, 0x49, 0xa8, 0xf2, 0x5c, 0xc9, 0x11, 0xab, 0x74, 0x89, 0x74, + 0x31, 0x8e, 0x60, 0xfa, 0xc2, 0xfc, 0x8a, 0x04, 0xd0, 0x30, 0xfd, 0xb9, 0xee, 0x01, 0x24, 0xf9, + 0x42, 0xe1, 0xed, 0x5a, 0x56, 0xf1, 0xa0, 0xd8, 0xe4, 0x3d, 0x87, 0xa0, 0xf3, 0xd1, 0xa0, 0x92, + 0xc6, 0xd2, 0xd6, 0xa7, 0x16, 0x77, 0xbb, 0x1d, 0xbd, 0xa5, 0x39, 0xbd, 0x1e, 0x73, 0xd1, 0xe2, + 0x25, 0x77, 0x4a, 0x26, 0x32, 0x0a, 0xfd, 0x32, 0x22, 0x64, 0x49, 0xe3, 0x98, 0x48, 0x5e, 0x1c, + 0x13, 0x41, 0x2f, 0x98, 0x01, 0xc4, 0xc7, 0xa0, 0x9e, 0x32, 0x1c, 0xad, 0x75, 0xb1, 0xb1, 0x60, + 0x61, 0xad, 0xdd, 0xb2, 0x76, 0x77, 0xce, 0xdb, 0x61, 0x77, 0xcf, 0x78, 0x1d, 0x0d, 0x2d, 0x1d, + 0x4b, 0xdc, 0xd2, 0x31, 0x7a, 0xa6, 0x2c, 0x1a, 0x55, 0x27, 0xb4, 0xc1, 0x11, 0xe2, 0x61, 0x88, + 0xa1, 0x2e, 0x91, 0x93, 0x52, 0xcf, 0x2a, 0x71, 0x36, 0xc9, 0x2a, 0xf1, 0x9b, 0x84, 0x62, 0xf4, + 0x08, 0xd5, 0x6b, 0x2c, 0xbe, 0x66, 0x73, 0x75, 0xec, 0x44, 0xc0, 0x7b, 0x1d, 0xcc, 0x9e, 0x0f, + 0xbe, 0xf8, 0x10, 0xf3, 0x89, 0x7d, 0x3c, 0x40, 0xdf, 0x9c, 0x74, 0x05, 0x86, 0x67, 0x21, 0x02, + 0x5d, 0x1f, 0x41, 0x49, 0xc4, 0xcd, 0x2c, 0xd1, 0x72, 0x4a, 0x6c, 0xf9, 0xe9, 0xa3, 0xf0, 0x51, + 0x09, 0xa6, 0xc9, 0x4d, 0x99, 0x0b, 0x97, 0xc8, 0xc1, 0x47, 0x41, 0xa3, 0xe4, 0x79, 0x61, 0x31, + 0x2b, 0x90, 0xed, 0xe8, 0xc6, 0x05, 0xcf, 0x3f, 0xd0, 0x7d, 0x0e, 0xee, 0x5d, 0x93, 0xfa, 0xdc, + 0xbb, 0xe6, 0xef, 0x53, 0xf8, 0xe5, 0x1e, 0xe8, 0x22, 0xe0, 0x81, 0xe4, 0xd2, 0x17, 0xe3, 0xdf, + 0x65, 0x21, 0x5f, 0xc7, 0x9a, 0xd5, 0xda, 0x46, 0xef, 0x91, 0xfa, 0x4e, 0x15, 0x26, 0xf9, 0xa9, + 0xc2, 0x12, 0x4c, 0x6c, 0xea, 0x1d, 0x07, 0x5b, 0xd4, 0x67, 0x3a, 0xdc, 0xb5, 0xd3, 0x26, 0xbe, + 0xd0, 0x31, 0x5b, 0x17, 0xe6, 0x99, 0xe9, 0x3e, 0xef, 0xc5, 0xe9, 0x9c, 0x5f, 0x22, 0x3f, 0xa9, + 0xde, 0xcf, 0xae, 0x41, 0x68, 0x9b, 0x96, 0x13, 0x75, 0x05, 0x43, 0x04, 0x95, 0xba, 0x69, 0x39, + 0x2a, 0xfd, 0xd1, 0x85, 0x79, 0x73, 0xb7, 0xd3, 0x69, 0xe0, 0x07, 0x1c, 0x6f, 0xda, 0xe6, 0xbd, + 0xbb, 0xc6, 0xa2, 0xb9, 0xb9, 0x69, 0x63, 0xba, 0x68, 0x90, 0x53, 0xd9, 0x9b, 0x72, 0x1c, 0x72, + 0x1d, 0x7d, 0x47, 0xa7, 0x13, 0x8d, 0x9c, 0x4a, 0x5f, 0x94, 0x1b, 0xa1, 0x10, 0xcc, 0x71, 0x28, + 0xa3, 0xa7, 0xf2, 0xa4, 0x69, 0xee, 0x4b, 0x77, 0x75, 0xe6, 0x02, 0xbe, 0x64, 0x9f, 0x9a, 0x20, + 0xdf, 0xc9, 0x33, 0x7f, 0x40, 0x45, 0x64, 0xbf, 0x83, 0x4a, 0x3c, 0x7a, 0x06, 0x6b, 0xe1, 0x96, + 0x69, 0xb5, 0x3d, 0xd9, 0x44, 0x4f, 0x30, 0x58, 0xbe, 0x64, 0xbb, 0x14, 0x7d, 0x0b, 0x4f, 0x5f, + 0xd3, 0xde, 0x99, 0x77, 0xbb, 0x4d, 0xb7, 0xe8, 0x73, 0xba, 0xb3, 0xbd, 0x86, 0x1d, 0x0d, 0xfd, + 0x9d, 0xdc, 0x57, 0xe3, 0xa6, 0xff, 0x3f, 0x8d, 0x1b, 0xa0, 0x71, 0x34, 0x02, 0x93, 0xb3, 0x6b, + 0x19, 0xae, 0x1c, 0x59, 0xcc, 0xd3, 0x50, 0x8a, 0x72, 0x07, 0x5c, 0x11, 0xbc, 0x79, 0x4b, 0xa5, + 0x8b, 0x6c, 0xda, 0x3a, 0x45, 0xb2, 0x47, 0x67, 0x50, 0xd6, 0xe1, 0x5a, 0xfa, 0x71, 0xa5, 0xb1, + 0xb6, 0xba, 0xa2, 0x6f, 0x6d, 0x77, 0xf4, 0xad, 0x6d, 0xc7, 0xae, 0x18, 0xb6, 0x83, 0xb5, 0x76, + 0x6d, 0x53, 0xa5, 0x97, 0xa7, 0x00, 0xa1, 0x23, 0x92, 0x95, 0xf7, 0xa9, 0x16, 0x1b, 0xdd, 0xc2, + 0x9a, 0x12, 0xd1, 0x52, 0x9e, 0xe0, 0xb6, 0x14, 0x7b, 0xb7, 0xe3, 0x63, 0x7a, 0x55, 0x0f, 0xa6, + 0x81, 0xaa, 0xef, 0x76, 0x48, 0x73, 0x21, 0x99, 0x93, 0x8e, 0x73, 0x31, 0x9c, 0xa4, 0xdf, 0x6c, + 0xfe, 0x9f, 0x3c, 0xe4, 0x96, 0x2d, 0xad, 0xbb, 0x8d, 0x9e, 0x11, 0xea, 0x9f, 0x47, 0xd5, 0x26, + 0x7c, 0xed, 0x94, 0x06, 0x69, 0xa7, 0x3c, 0x40, 0x3b, 0xb3, 0x21, 0xed, 0x8c, 0x5e, 0x54, 0x3e, + 0x03, 0x33, 0x2d, 0xb3, 0xd3, 0xc1, 0x2d, 0x57, 0x1e, 0x95, 0x36, 0x59, 0xcd, 0x99, 0x52, 0xb9, + 0x34, 0x12, 0xcb, 0x18, 0x3b, 0x75, 0xba, 0x86, 0x4e, 0x95, 0x3e, 0x48, 0x40, 0x2f, 0x96, 0x20, + 0x5b, 0x6e, 0x6f, 0x61, 0x6e, 0x9d, 0x3d, 0x13, 0x5a, 0x67, 0x3f, 0x09, 0x79, 0x47, 0xb3, 0xb6, + 0xb0, 0xe3, 0xad, 0x13, 0xd0, 0x37, 0x3f, 0xc4, 0xb2, 0x1c, 0x0a, 0xb1, 0xfc, 0xd3, 0x90, 0x75, + 0x65, 0xc6, 0xdc, 0xc8, 0xaf, 0xed, 0x07, 0x3f, 0x91, 0xfd, 0xbc, 0x5b, 0xe2, 0xbc, 0x5b, 0x6b, + 0x95, 0xfc, 0xd0, 0x8b, 0x75, 0x6e, 0x1f, 0xd6, 0xe4, 0x1e, 0xc8, 0x96, 0x69, 0x54, 0x76, 0xb4, + 0x2d, 0xcc, 0xaa, 0x19, 0x24, 0x78, 0x5f, 0xcb, 0x3b, 0xe6, 0xfd, 0x3a, 0x8b, 0x76, 0x1c, 0x24, + 0xb8, 0x55, 0xd8, 0xd6, 0xdb, 0x6d, 0x6c, 0xb0, 0x96, 0xcd, 0xde, 0xce, 0x9c, 0x86, 0xac, 0xcb, + 0x83, 0xab, 0x3f, 0xae, 0xb1, 0x50, 0x38, 0xa2, 0xcc, 0xb8, 0xcd, 0x8a, 0x36, 0xde, 0x42, 0x86, + 0x5f, 0x53, 0x15, 0x71, 0xdb, 0xa1, 0x95, 0xeb, 0xdf, 0xb8, 0x1e, 0x03, 0x39, 0xc3, 0x6c, 0xe3, + 0x81, 0x83, 0x10, 0xcd, 0xa5, 0x3c, 0x1e, 0x72, 0xb8, 0xed, 0xf6, 0x0a, 0x32, 0xc9, 0x7e, 0x3a, + 0x5e, 0x96, 0x2a, 0xcd, 0x9c, 0xcc, 0x37, 0xa8, 0x1f, 0xb7, 0xe9, 0x37, 0xc0, 0x5f, 0x99, 0x80, + 0xa3, 0xb4, 0x0f, 0xa8, 0xef, 0x9e, 0x77, 0x49, 0x9d, 0xc7, 0xe8, 0xa1, 0xfe, 0x03, 0xd7, 0x51, + 0x5e, 0xd9, 0x8f, 0x43, 0xce, 0xde, 0x3d, 0xef, 0x1b, 0xa1, 0xf4, 0x25, 0xdc, 0x74, 0xa5, 0x91, + 0x0c, 0x67, 0xf2, 0xb0, 0xc3, 0x19, 0x37, 0x34, 0xc9, 0x5e, 0xe3, 0x0f, 0x06, 0x32, 0x7a, 0x00, + 0xc2, 0x1b, 0xc8, 0xfa, 0x0d, 0x43, 0xa7, 0x60, 0x42, 0xdb, 0x74, 0xb0, 0x15, 0x98, 0x89, 0xec, + 0xd5, 0x1d, 0x2a, 0xcf, 0xe3, 0x4d, 0xd3, 0x72, 0xc5, 0x32, 0x45, 0x87, 0x4a, 0xef, 0x3d, 0xd4, + 0x72, 0x81, 0xdb, 0x21, 0xbb, 0x09, 0x8e, 0x19, 0xe6, 0x22, 0xee, 0x32, 0x39, 0x53, 0x14, 0x67, + 0x49, 0x0b, 0xd8, 0xff, 0x61, 0x5f, 0x57, 0x32, 0xb7, 0xbf, 0x2b, 0x41, 0x9f, 0x49, 0x3a, 0x67, + 0xee, 0x01, 0x7a, 0x64, 0x16, 0x9a, 0xf2, 0x24, 0x98, 0x69, 0x33, 0x17, 0xad, 0x96, 0xee, 0xb7, + 0x92, 0xc8, 0xff, 0xb8, 0xcc, 0x81, 0x22, 0x65, 0xc3, 0x8a, 0xb4, 0x0c, 0x93, 0xe4, 0xa8, 0xb2, + 0xab, 0x49, 0xb9, 0x1e, 0x97, 0x78, 0x32, 0xad, 0xf3, 0x2b, 0x15, 0x12, 0xdb, 0x7c, 0x89, 0xfd, + 0xa2, 0xfa, 0x3f, 0x27, 0x9b, 0x7d, 0xc7, 0x4b, 0x28, 0xfd, 0xe6, 0xf8, 0x3b, 0x79, 0xb8, 0xa2, + 0x64, 0x99, 0xb6, 0x4d, 0xce, 0xc0, 0xf4, 0x36, 0xcc, 0x37, 0x48, 0xdc, 0x65, 0x0b, 0x0f, 0xeb, + 0xe6, 0xd7, 0xaf, 0x41, 0x8d, 0xaf, 0x69, 0x7c, 0x43, 0x38, 0xc8, 0x8b, 0xbf, 0xff, 0x10, 0x21, + 0xf4, 0x1f, 0x8f, 0x46, 0xf2, 0xce, 0x8c, 0x48, 0xdc, 0x99, 0x84, 0xb2, 0x4a, 0xbf, 0xb9, 0x7c, + 0x59, 0x82, 0x2b, 0x7b, 0xb9, 0xd9, 0x30, 0x6c, 0xbf, 0xc1, 0x5c, 0x3d, 0xa0, 0xbd, 0xf0, 0x71, + 0x4a, 0x62, 0xaf, 0x39, 0x8c, 0xa8, 0x7b, 0xa8, 0xb4, 0x88, 0xc5, 0x92, 0xe0, 0x44, 0x4d, 0xdc, + 0x35, 0x87, 0x89, 0xc9, 0xa7, 0x2f, 0xdc, 0xcf, 0x66, 0xe1, 0xe8, 0xb2, 0x65, 0xee, 0x76, 0xed, + 0xa0, 0x07, 0xfa, 0xeb, 0xfe, 0x1b, 0xae, 0x79, 0x11, 0xd3, 0xe0, 0x1a, 0x98, 0xb6, 0x98, 0x35, + 0x17, 0x6c, 0xbf, 0x86, 0x93, 0xc2, 0xbd, 0x97, 0x7c, 0x90, 0xde, 0x2b, 0xe8, 0x67, 0xb2, 0x5c, + 0x3f, 0xd3, 0xdb, 0x73, 0xe4, 0xfa, 0xf4, 0x1c, 0x7f, 0x25, 0x25, 0x1c, 0x54, 0x7b, 0x44, 0x14, + 0xd1, 0x5f, 0x94, 0x20, 0xbf, 0x45, 0x32, 0xb2, 0xee, 0xe2, 0xd1, 0x62, 0x35, 0x23, 0xc4, 0x55, + 0xf6, 0x6b, 0x20, 0x57, 0x39, 0xac, 0xc3, 0x89, 0x06, 0xb8, 0x78, 0x6e, 0xd3, 0x57, 0xaa, 0xd7, + 0x64, 0x61, 0xc6, 0x2f, 0xbd, 0xd2, 0xb6, 0xd1, 0xf3, 0xfa, 0x6b, 0xd4, 0xac, 0x88, 0x46, 0xed, + 0x5b, 0x67, 0xf6, 0x47, 0x1d, 0x39, 0x34, 0xea, 0xf4, 0x1d, 0x5d, 0x66, 0x22, 0x46, 0x17, 0xf4, + 0x74, 0x59, 0xf4, 0xba, 0x22, 0xbe, 0x6b, 0x25, 0xb5, 0x79, 0x38, 0x0f, 0x16, 0x82, 0x97, 0x26, + 0x0d, 0xae, 0x55, 0xfa, 0x4a, 0xf2, 0x7e, 0x09, 0x8e, 0xed, 0xef, 0xcc, 0x7f, 0x82, 0xf7, 0x42, + 0x73, 0xeb, 0x64, 0xfb, 0x5e, 0x68, 0xe4, 0x8d, 0xdf, 0xa4, 0x8b, 0x0d, 0x1a, 0xc2, 0xd9, 0x7b, + 0x83, 0x3b, 0x71, 0xb1, 0xb0, 0x20, 0x82, 0x44, 0xc7, 0x70, 0xeb, 0x94, 0x0c, 0x53, 0x75, 0xec, + 0xac, 0x6a, 0x97, 0xcc, 0x5d, 0x07, 0x69, 0xa2, 0xdb, 0x73, 0x4f, 0x84, 0x7c, 0x87, 0xfc, 0xc2, + 0x6e, 0x81, 0xbf, 0xa6, 0xef, 0xfe, 0x16, 0xf1, 0xfd, 0xa1, 0xa4, 0x55, 0x96, 0x9f, 0x8f, 0xd6, + 0x22, 0xb2, 0x3b, 0xea, 0x73, 0x37, 0x92, 0xad, 0x9d, 0x44, 0x7b, 0xa7, 0x51, 0x45, 0xa7, 0x0f, + 0xcb, 0x33, 0x65, 0x98, 0xad, 0x63, 0xa7, 0x62, 0x2f, 0x69, 0x7b, 0xa6, 0xa5, 0x3b, 0x38, 0x7c, + 0x0d, 0x64, 0x3c, 0x34, 0xa7, 0x01, 0x74, 0xff, 0x37, 0x16, 0x43, 0x2a, 0x94, 0x82, 0x7e, 0x3b, + 0xa9, 0xa3, 0x10, 0xc7, 0xc7, 0x48, 0x40, 0x48, 0xe4, 0x63, 0x11, 0x57, 0x7c, 0xfa, 0x40, 0x7c, + 0x49, 0x62, 0x40, 0x14, 0xad, 0xd6, 0xb6, 0xbe, 0x87, 0xdb, 0x09, 0x81, 0xf0, 0x7e, 0x0b, 0x80, + 0xf0, 0x09, 0x25, 0x76, 0x5f, 0xe1, 0xf8, 0x18, 0x85, 0xfb, 0x4a, 0x1c, 0xc1, 0xb1, 0x84, 0x81, + 0x72, 0xbb, 0x1e, 0xb6, 0x9e, 0x79, 0x97, 0xa8, 0x58, 0x03, 0x93, 0x4d, 0x0a, 0x9b, 0x6c, 0x43, + 0x75, 0x2c, 0xb4, 0xec, 0x41, 0x3a, 0x9d, 0x4d, 0xa3, 0x63, 0xe9, 0x5b, 0x74, 0xfa, 0x42, 0x7f, + 0xb7, 0x0c, 0x27, 0xfc, 0xf8, 0x28, 0x75, 0xec, 0x2c, 0x6a, 0xf6, 0xf6, 0x79, 0x53, 0xb3, 0xda, + 0xa8, 0x34, 0x82, 0x13, 0x7f, 0xe8, 0x8b, 0x61, 0x10, 0xaa, 0x3c, 0x08, 0x7d, 0x5d, 0x45, 0xfb, + 0xf2, 0x32, 0x8a, 0x4e, 0x26, 0xd6, 0x9b, 0xf5, 0x77, 0x7d, 0xb0, 0x9e, 0xc2, 0x81, 0x75, 0xe7, + 0xb0, 0x2c, 0xa6, 0x0f, 0xdc, 0x6f, 0xd1, 0x11, 0x21, 0xe4, 0xd5, 0x7c, 0x9f, 0x28, 0x60, 0x11, + 0x5e, 0xad, 0x72, 0xa4, 0x57, 0xeb, 0x50, 0x63, 0xc4, 0x40, 0x8f, 0xe4, 0x74, 0xc7, 0x88, 0x43, + 0xf4, 0x36, 0x7e, 0xbb, 0x0c, 0x05, 0x12, 0x20, 0x2b, 0xe4, 0xf1, 0x1d, 0x8e, 0x37, 0x1d, 0x8f, + 0xce, 0x3e, 0xef, 0xf2, 0x89, 0xa4, 0xde, 0xe5, 0xe8, 0x6d, 0x49, 0x7d, 0xc8, 0x7b, 0xb9, 0x1d, + 0x09, 0x62, 0x89, 0x5c, 0xc4, 0x07, 0x70, 0x90, 0x3e, 0x68, 0xff, 0x4d, 0x06, 0x70, 0x1b, 0x34, + 0x3b, 0xfb, 0xf0, 0x54, 0x51, 0xb8, 0x6e, 0x0e, 0xfb, 0xd5, 0xbb, 0x40, 0x9d, 0xe8, 0x01, 0x8a, + 0x52, 0x0c, 0x4e, 0x55, 0x3c, 0x94, 0xd4, 0xb7, 0x32, 0xe0, 0x6a, 0x24, 0xb0, 0x24, 0xf2, 0xb6, + 0x8c, 0x2c, 0x3b, 0x7d, 0x40, 0xfe, 0x87, 0x04, 0xb9, 0x86, 0x59, 0xc7, 0xce, 0xc1, 0x4d, 0x81, + 0xc4, 0xc7, 0xf6, 0x49, 0xb9, 0xa3, 0x38, 0xb6, 0xdf, 0x8f, 0x50, 0xfa, 0xa2, 0x7b, 0x97, 0x04, + 0x33, 0x0d, 0xb3, 0xe4, 0x2f, 0x4e, 0x89, 0xfb, 0xaa, 0x8a, 0x5f, 0xb9, 0xec, 0x57, 0x30, 0x28, + 0xe6, 0x40, 0x57, 0x2e, 0x0f, 0xa6, 0x97, 0xbe, 0xdc, 0x6e, 0x83, 0xa3, 0x1b, 0x46, 0xdb, 0x54, + 0x71, 0xdb, 0x64, 0x2b, 0xdd, 0x8a, 0x02, 0xd9, 0x5d, 0xa3, 0x6d, 0x12, 0x96, 0x73, 0x2a, 0x79, + 0x76, 0xd3, 0x2c, 0xdc, 0x36, 0x99, 0x6f, 0x00, 0x79, 0x46, 0xdf, 0x90, 0x21, 0xeb, 0xfe, 0x2b, + 0x2e, 0xea, 0xb7, 0xcb, 0x09, 0x03, 0x11, 0xb8, 0xe4, 0x47, 0x62, 0x09, 0xdd, 0x15, 0x5a, 0xfb, + 0xa7, 0x1e, 0xac, 0xd7, 0x46, 0x95, 0x17, 0x12, 0x45, 0xb0, 0xe6, 0xaf, 0x9c, 0x82, 0x89, 0xf3, + 0x1d, 0xb3, 0x75, 0x21, 0x38, 0x2f, 0xcf, 0x5e, 0x95, 0x1b, 0x21, 0x67, 0x69, 0xc6, 0x16, 0x66, + 0x7b, 0x0a, 0xc7, 0x7b, 0xfa, 0x42, 0xe2, 0xf5, 0xa2, 0xd2, 0x2c, 0xe8, 0x6d, 0x49, 0x42, 0x20, + 0xf4, 0xa9, 0x7c, 0x32, 0x7d, 0x58, 0x1c, 0xe2, 0x64, 0x59, 0x01, 0x66, 0x4a, 0x45, 0x7a, 0xb9, + 0xf9, 0x5a, 0xed, 0x6c, 0xb9, 0x20, 0x13, 0x98, 0x5d, 0x99, 0xa4, 0x08, 0xb3, 0x4b, 0xfe, 0xc7, + 0x16, 0xe6, 0x3e, 0x95, 0x3f, 0x0c, 0x98, 0x3f, 0x29, 0xc1, 0xec, 0xaa, 0x6e, 0x3b, 0x51, 0xde, + 0xfe, 0x31, 0xf1, 0x71, 0x9f, 0x9f, 0xd4, 0x54, 0xe6, 0xca, 0x11, 0x0e, 0x8c, 0x9b, 0xc8, 0x1c, + 0x8e, 0x2b, 0x62, 0x3c, 0xc7, 0x52, 0x08, 0x07, 0xf4, 0x42, 0x62, 0x61, 0x49, 0x26, 0x36, 0x94, + 0x82, 0x42, 0xc6, 0x6f, 0x28, 0x45, 0x96, 0x9d, 0xbe, 0x7c, 0xbf, 0x21, 0xc1, 0x31, 0xb7, 0xf8, + 0xb8, 0x65, 0xa9, 0x68, 0x31, 0x0f, 0x5c, 0x96, 0x4a, 0xbc, 0x32, 0xbe, 0x8f, 0x97, 0x51, 0xac, + 0x8c, 0x0f, 0x22, 0x3a, 0x66, 0x31, 0x47, 0x2c, 0xc3, 0x0e, 0x12, 0x73, 0xcc, 0x32, 0xec, 0xf0, + 0x62, 0x8e, 0x5f, 0x8a, 0x1d, 0x52, 0xcc, 0x87, 0xb6, 0xc0, 0xfa, 0x3a, 0xd9, 0x17, 0x73, 0xe4, + 0xda, 0x46, 0x8c, 0x98, 0x13, 0x9f, 0xd8, 0x45, 0xef, 0x18, 0x52, 0xf0, 0x23, 0x5e, 0xdf, 0x18, + 0x06, 0xa6, 0x43, 0x5c, 0xe3, 0x78, 0x89, 0x0c, 0x73, 0x8c, 0x8b, 0xfe, 0x53, 0xe6, 0x18, 0x8c, + 0x12, 0x4f, 0x99, 0x13, 0x9f, 0x01, 0xe2, 0x39, 0x1b, 0xff, 0x19, 0xa0, 0xd8, 0xf2, 0xd3, 0x07, + 0xe7, 0x9b, 0x59, 0x38, 0xe9, 0xb2, 0xb0, 0x66, 0xb6, 0xf5, 0xcd, 0x4b, 0x94, 0x8b, 0xb3, 0x5a, + 0x67, 0x17, 0xdb, 0xe8, 0xbd, 0x92, 0x28, 0x4a, 0xff, 0x09, 0xc0, 0xec, 0x62, 0x8b, 0x06, 0x52, + 0x63, 0x40, 0xdd, 0x11, 0x55, 0xd9, 0xfd, 0x25, 0xf9, 0xd7, 0xc5, 0xd4, 0x3c, 0x22, 0x6a, 0x88, + 0x9e, 0x6b, 0x15, 0x4e, 0xf9, 0x5f, 0x7a, 0x1d, 0x3c, 0x32, 0xfb, 0x1d, 0x3c, 0x6e, 0x00, 0x59, + 0x6b, 0xb7, 0x7d, 0xa8, 0x7a, 0x37, 0xb3, 0x49, 0x99, 0xaa, 0x9b, 0xc5, 0xcd, 0x69, 0xe3, 0xe0, + 0x68, 0x5e, 0x44, 0x4e, 0x1b, 0x3b, 0xca, 0x3c, 0xe4, 0xe9, 0xe5, 0xcc, 0xfe, 0x8a, 0x7e, 0xff, + 0xcc, 0x2c, 0x17, 0x6f, 0xda, 0xd5, 0x78, 0x35, 0xbc, 0x2d, 0x91, 0x64, 0xfa, 0xf5, 0xd3, 0x81, + 0x9d, 0xac, 0x72, 0x0a, 0xf6, 0xe4, 0xa1, 0x29, 0x8f, 0x67, 0x37, 0xac, 0xd8, 0xed, 0x76, 0x2e, + 0x35, 0x58, 0xf0, 0x95, 0x44, 0xbb, 0x61, 0xa1, 0x18, 0x2e, 0x52, 0x6f, 0x0c, 0x97, 0xe4, 0xbb, + 0x61, 0x1c, 0x1f, 0xa3, 0xd8, 0x0d, 0x8b, 0x23, 0x98, 0xbe, 0x68, 0xdf, 0x92, 0xa3, 0x56, 0x33, + 0x8b, 0xde, 0xff, 0x47, 0xfd, 0x0f, 0xa1, 0x01, 0xef, 0xec, 0xd2, 0x2f, 0xb0, 0x7f, 0xec, 0xad, + 0x25, 0xca, 0xe3, 0x21, 0xbf, 0x69, 0x5a, 0x3b, 0x9a, 0xb7, 0x71, 0xdf, 0x7b, 0x52, 0x84, 0x45, + 0xcc, 0x5f, 0x22, 0x79, 0x54, 0x96, 0xd7, 0x9d, 0x8f, 0x3c, 0x4d, 0xef, 0xb2, 0xa8, 0x8b, 0xee, + 0xa3, 0x72, 0x1d, 0xcc, 0xb2, 0xe0, 0x8b, 0x55, 0x6c, 0x3b, 0xb8, 0xcd, 0x22, 0x56, 0xf0, 0x89, + 0xca, 0x19, 0x98, 0x61, 0x09, 0x4b, 0x7a, 0x07, 0xdb, 0x2c, 0x68, 0x05, 0x97, 0xa6, 0x9c, 0x84, + 0xbc, 0x6e, 0xdf, 0x63, 0x9b, 0x06, 0xf1, 0xff, 0x9f, 0x54, 0xd9, 0x9b, 0x72, 0x03, 0x1c, 0x65, + 0xf9, 0x7c, 0x63, 0x95, 0x1e, 0xd8, 0xe9, 0x4d, 0x76, 0x55, 0xcb, 0x30, 0xd7, 0x2d, 0x73, 0xcb, + 0xc2, 0xb6, 0x4d, 0x4e, 0x4d, 0x4d, 0xaa, 0xa1, 0x14, 0xf4, 0xb9, 0x61, 0x26, 0x16, 0x89, 0x6f, + 0x32, 0x70, 0x51, 0xda, 0x6d, 0xb5, 0x30, 0x6e, 0xb3, 0x93, 0x4f, 0xde, 0x6b, 0xc2, 0x3b, 0x0e, + 0x12, 0x4f, 0x43, 0x0e, 0xe9, 0x92, 0x83, 0x0f, 0x9f, 0x80, 0x3c, 0xbd, 0x30, 0x0c, 0xbd, 0x68, + 0xae, 0xaf, 0xb2, 0xce, 0xf1, 0xca, 0xba, 0x01, 0x33, 0x86, 0xe9, 0x16, 0xb7, 0xae, 0x59, 0xda, + 0x8e, 0x1d, 0xb7, 0xca, 0x48, 0xe9, 0xfa, 0x43, 0x4a, 0x35, 0xf4, 0xdb, 0xca, 0x11, 0x95, 0x23, + 0xa3, 0xfc, 0xff, 0xe0, 0xe8, 0x79, 0x16, 0x21, 0xc0, 0x66, 0x94, 0xa5, 0x68, 0x1f, 0xbc, 0x1e, + 0xca, 0x0b, 0xfc, 0x9f, 0x2b, 0x47, 0xd4, 0x5e, 0x62, 0xca, 0xcf, 0xc2, 0x9c, 0xfb, 0xda, 0x36, + 0x2f, 0x7a, 0x8c, 0xcb, 0xd1, 0x86, 0x48, 0x0f, 0xf9, 0x35, 0xee, 0xc7, 0x95, 0x23, 0x6a, 0x0f, + 0x29, 0xa5, 0x06, 0xb0, 0xed, 0xec, 0x74, 0x18, 0xe1, 0x6c, 0xb4, 0x4a, 0xf6, 0x10, 0x5e, 0xf1, + 0x7f, 0x5a, 0x39, 0xa2, 0x86, 0x48, 0x28, 0xab, 0x30, 0xe5, 0x3c, 0xe0, 0x30, 0x7a, 0xb9, 0xe8, + 0xcd, 0xef, 0x1e, 0x7a, 0x0d, 0xef, 0x9f, 0x95, 0x23, 0x6a, 0x40, 0x40, 0xa9, 0xc0, 0x64, 0xf7, + 0x3c, 0x23, 0x96, 0xef, 0x13, 0x6d, 0xbe, 0x3f, 0xb1, 0xf5, 0xf3, 0x3e, 0x2d, 0xff, 0x77, 0x97, + 0xb1, 0x96, 0xbd, 0xc7, 0x68, 0x4d, 0x08, 0x33, 0x56, 0xf2, 0xfe, 0x71, 0x19, 0xf3, 0x09, 0x28, + 0x15, 0x98, 0xb2, 0x0d, 0xad, 0x6b, 0x6f, 0x9b, 0x8e, 0x7d, 0x6a, 0xb2, 0xc7, 0x4f, 0x32, 0x9a, + 0x5a, 0x9d, 0xfd, 0xa3, 0x06, 0x7f, 0x2b, 0x8f, 0x87, 0x13, 0xbb, 0xe4, 0xe6, 0xf6, 0xf2, 0x03, + 0xba, 0xed, 0xe8, 0xc6, 0x96, 0x17, 0x63, 0x96, 0xf6, 0x36, 0xfd, 0x3f, 0x2a, 0xf3, 0xec, 0xc4, + 0x14, 0x90, 0xb6, 0x89, 0x7a, 0x37, 0xeb, 0x68, 0xb1, 0xa1, 0x83, 0x52, 0x4f, 0x82, 0xac, 0xfb, + 0x89, 0xf4, 0x4e, 0x73, 0xfd, 0x17, 0x02, 0x7b, 0x75, 0x87, 0x34, 0x60, 0xf7, 0xa7, 0x9e, 0x0e, + 0x6e, 0xa6, 0xb7, 0x83, 0x73, 0x1b, 0xb8, 0x6e, 0xaf, 0xe9, 0x5b, 0xd4, 0xba, 0x62, 0xfe, 0xf0, + 0xe1, 0x24, 0x3a, 0x1b, 0xad, 0xe2, 0x8b, 0xf4, 0x06, 0x8d, 0xa3, 0xde, 0x6c, 0xd4, 0x4b, 0x41, + 0xd7, 0xc3, 0x4c, 0xb8, 0x91, 0xd1, 0x5b, 0x47, 0xf5, 0xc0, 0x36, 0x63, 0x6f, 0xe8, 0x3a, 0x98, + 0xe3, 0x75, 0x3a, 0x34, 0x04, 0xc9, 0x5e, 0x57, 0x88, 0xae, 0x85, 0xa3, 0x3d, 0x0d, 0xcb, 0x8b, + 0x39, 0x92, 0x09, 0x62, 0x8e, 0x5c, 0x03, 0x10, 0x68, 0x71, 0x5f, 0x32, 0x57, 0xc3, 0x94, 0xaf, + 0x97, 0x7d, 0x33, 0x7c, 0x2d, 0x03, 0x93, 0x9e, 0xb2, 0xf5, 0xcb, 0xe0, 0x8e, 0x3f, 0x46, 0x68, + 0x83, 0x81, 0x4d, 0xc3, 0xb9, 0x34, 0x77, 0x9c, 0x09, 0xdc, 0x7a, 0x1b, 0xba, 0xd3, 0xf1, 0x8e, + 0xc6, 0xf5, 0x26, 0x2b, 0xeb, 0x00, 0x3a, 0xc1, 0xa8, 0x11, 0x9c, 0x95, 0xbb, 0x25, 0x41, 0x7b, + 0xa0, 0xfa, 0x10, 0xa2, 0x71, 0xe6, 0x27, 0xd8, 0x41, 0xb6, 0x29, 0xc8, 0xd1, 0x40, 0xeb, 0x47, + 0x94, 0x39, 0x80, 0xf2, 0x53, 0xd7, 0xcb, 0x6a, 0xa5, 0x5c, 0x2d, 0x95, 0x0b, 0x19, 0xf4, 0x52, + 0x09, 0xa6, 0xfc, 0x46, 0xd0, 0xb7, 0x92, 0x65, 0xa6, 0x5a, 0x03, 0x2f, 0x76, 0xdc, 0xdf, 0xa8, + 0xc2, 0x4a, 0xf6, 0x44, 0xb8, 0x7c, 0xd7, 0xc6, 0x4b, 0xba, 0x65, 0x3b, 0xaa, 0x79, 0x71, 0xc9, + 0xb4, 0xfc, 0xa8, 0xca, 0x2c, 0xc2, 0x69, 0xd4, 0x67, 0xd7, 0xe2, 0x68, 0x63, 0x72, 0x68, 0x0a, + 0x5b, 0x6c, 0xe5, 0x38, 0x48, 0x70, 0xe9, 0x3a, 0x96, 0x66, 0xd8, 0x5d, 0xd3, 0xc6, 0xaa, 0x79, + 0xd1, 0x2e, 0x1a, 0xed, 0x92, 0xd9, 0xd9, 0xdd, 0x31, 0x6c, 0x66, 0x33, 0x44, 0x7d, 0x76, 0xa5, + 0x43, 0xae, 0x6d, 0x9d, 0x03, 0x28, 0xd5, 0x56, 0x57, 0xcb, 0xa5, 0x46, 0xa5, 0x56, 0x2d, 0x1c, + 0x71, 0xa5, 0xd5, 0x28, 0x2e, 0xac, 0xba, 0xd2, 0xf9, 0x39, 0x98, 0xf4, 0xda, 0x34, 0x0b, 0x93, + 0x92, 0xf1, 0xc2, 0xa4, 0x28, 0x45, 0x98, 0xf4, 0x5a, 0x39, 0x1b, 0x11, 0x1e, 0xd9, 0x7b, 0x2c, + 0x76, 0x47, 0xb3, 0x1c, 0xe2, 0x4f, 0xed, 0x11, 0x59, 0xd0, 0x6c, 0xac, 0xfa, 0xbf, 0x9d, 0x79, + 0x0c, 0xe3, 0x40, 0x81, 0xb9, 0xe2, 0xea, 0x6a, 0xb3, 0xa6, 0x36, 0xab, 0xb5, 0xc6, 0x4a, 0xa5, + 0xba, 0x4c, 0x47, 0xc8, 0xca, 0x72, 0xb5, 0xa6, 0x96, 0xe9, 0x00, 0x59, 0x2f, 0x64, 0xe8, 0xb5, + 0xc1, 0x0b, 0x93, 0x90, 0xef, 0x12, 0xe9, 0xa2, 0x2f, 0xcb, 0x09, 0xcf, 0xc3, 0xfb, 0x38, 0x45, + 0x5c, 0x6c, 0xca, 0xf9, 0xa4, 0x4b, 0x7d, 0xce, 0x8c, 0x9e, 0x81, 0x19, 0x6a, 0xeb, 0xd9, 0x64, + 0x79, 0x9f, 0x20, 0x27, 0xab, 0x5c, 0x1a, 0xfa, 0xa8, 0x94, 0xe0, 0x90, 0x7c, 0x5f, 0x8e, 0x92, + 0x19, 0x17, 0x7f, 0x9e, 0x19, 0xee, 0x5a, 0x82, 0x4a, 0xb5, 0x51, 0x56, 0xab, 0xc5, 0x55, 0x96, + 0x45, 0x56, 0x4e, 0xc1, 0xf1, 0x6a, 0x8d, 0xc5, 0xfc, 0xab, 0x37, 0x1b, 0xb5, 0x66, 0x65, 0x6d, + 0xbd, 0xa6, 0x36, 0x0a, 0x39, 0xe5, 0x24, 0x28, 0xf4, 0xb9, 0x59, 0xa9, 0x37, 0x4b, 0xc5, 0x6a, + 0xa9, 0xbc, 0x5a, 0x5e, 0x2c, 0xe4, 0x95, 0x47, 0xc1, 0xb5, 0xf4, 0x9a, 0x9b, 0xda, 0x52, 0x53, + 0xad, 0x9d, 0xab, 0xbb, 0x08, 0xaa, 0xe5, 0xd5, 0xa2, 0xab, 0x48, 0xa1, 0xeb, 0x83, 0x27, 0x94, + 0xcb, 0xe0, 0x28, 0xb9, 0x5b, 0x7c, 0xb5, 0x56, 0x5c, 0x64, 0xe5, 0x4d, 0x2a, 0x57, 0xc1, 0xa9, + 0x4a, 0xb5, 0xbe, 0xb1, 0xb4, 0x54, 0x29, 0x55, 0xca, 0xd5, 0x46, 0x73, 0xbd, 0xac, 0xae, 0x55, + 0xea, 0x75, 0xf7, 0xdf, 0xc2, 0x14, 0xb9, 0x9c, 0x95, 0xf6, 0x99, 0xe8, 0x3d, 0x32, 0xcc, 0x9e, + 0xd5, 0x3a, 0xba, 0x3b, 0x50, 0x90, 0x5b, 0x9b, 0x7b, 0x8e, 0x93, 0x38, 0xe4, 0x76, 0x67, 0xe6, + 0x90, 0x4e, 0x5e, 0xd0, 0x2f, 0xc9, 0x09, 0x8f, 0x93, 0x30, 0x20, 0x68, 0x89, 0xf3, 0x5c, 0x69, + 0x11, 0x93, 0x9f, 0x57, 0x4b, 0x09, 0x8e, 0x93, 0x88, 0x93, 0x4f, 0x06, 0xfe, 0xcb, 0x46, 0x05, + 0x7e, 0x01, 0x66, 0x36, 0xaa, 0xc5, 0x8d, 0xc6, 0x4a, 0x4d, 0xad, 0xfc, 0x0c, 0x89, 0x46, 0x3e, + 0x0b, 0x53, 0x4b, 0x35, 0x75, 0xa1, 0xb2, 0xb8, 0x58, 0xae, 0x16, 0x72, 0xca, 0xe5, 0x70, 0x59, + 0xbd, 0xac, 0x9e, 0xad, 0x94, 0xca, 0xcd, 0x8d, 0x6a, 0xf1, 0x6c, 0xb1, 0xb2, 0x4a, 0xfa, 0x88, + 0x7c, 0xcc, 0x8d, 0xd3, 0x13, 0xe8, 0x17, 0xb2, 0x00, 0xb4, 0xea, 0xe4, 0x32, 0x9e, 0xd0, 0xbd, + 0xc4, 0x5f, 0x48, 0x3a, 0x69, 0x08, 0xc8, 0x44, 0xb4, 0xdf, 0x0a, 0x4c, 0x5a, 0xec, 0x03, 0x5b, + 0x5e, 0x19, 0x44, 0x87, 0x3e, 0x7a, 0xd4, 0x54, 0xff, 0x77, 0xf4, 0xde, 0x24, 0x73, 0x84, 0x48, + 0xc6, 0x92, 0x21, 0xb9, 0x34, 0x1a, 0x20, 0xd1, 0xf3, 0x32, 0x30, 0xc7, 0x57, 0xcc, 0xad, 0x04, + 0x31, 0xa6, 0xc4, 0x2a, 0xc1, 0xff, 0x1c, 0x32, 0xb2, 0xce, 0x3c, 0x8e, 0x0d, 0xa7, 0xe0, 0xb5, + 0x4c, 0x7a, 0x32, 0xdc, 0xb3, 0x58, 0x0a, 0x19, 0x97, 0x79, 0xd7, 0xe8, 0x28, 0x48, 0xca, 0x04, + 0xc8, 0x8d, 0x07, 0x9c, 0x82, 0x8c, 0xbe, 0x26, 0xc3, 0x2c, 0x77, 0xf1, 0x31, 0x7a, 0x75, 0x46, + 0xe4, 0x52, 0xd2, 0xd0, 0x95, 0xca, 0x99, 0x83, 0x5e, 0xa9, 0x7c, 0xe6, 0x66, 0x98, 0x60, 0x69, + 0x44, 0xbe, 0xb5, 0xaa, 0x6b, 0x0a, 0x1c, 0x85, 0xe9, 0xe5, 0x72, 0xa3, 0x59, 0x6f, 0x14, 0xd5, + 0x46, 0x79, 0xb1, 0x90, 0x71, 0x07, 0xbe, 0xf2, 0xda, 0x7a, 0xe3, 0xbe, 0x82, 0x94, 0xdc, 0x43, + 0xaf, 0x97, 0x91, 0x31, 0x7b, 0xe8, 0xc5, 0x15, 0x9f, 0xfe, 0x5c, 0xf5, 0x33, 0x32, 0x14, 0x28, + 0x07, 0xe5, 0x07, 0xba, 0xd8, 0xd2, 0xb1, 0xd1, 0xc2, 0xe8, 0x82, 0x48, 0x44, 0xd0, 0x7d, 0xb1, + 0xf2, 0x48, 0x7f, 0x1e, 0xb2, 0x12, 0xe9, 0x4b, 0x8f, 0x81, 0x9d, 0xdd, 0x67, 0x60, 0x7f, 0x3a, + 0xa9, 0x8b, 0x5e, 0x2f, 0xbb, 0x23, 0x81, 0xec, 0x13, 0x49, 0x5c, 0xf4, 0x06, 0x70, 0x30, 0x96, + 0x40, 0xbf, 0x11, 0xe3, 0x6f, 0x41, 0x46, 0xcf, 0x95, 0xe1, 0xe8, 0xa2, 0xe6, 0xe0, 0x85, 0x4b, + 0x0d, 0xef, 0x62, 0xc2, 0x88, 0xcb, 0x84, 0x33, 0xfb, 0x2e, 0x13, 0x0e, 0xee, 0x36, 0x94, 0x7a, + 0xee, 0x36, 0x44, 0xef, 0x4c, 0x7a, 0xa8, 0xaf, 0x87, 0x87, 0x91, 0x45, 0xe3, 0x4d, 0x76, 0x58, + 0x2f, 0x9e, 0x8b, 0x31, 0xdc, 0xed, 0x3f, 0x05, 0x05, 0xca, 0x4a, 0xc8, 0x0b, 0xed, 0xd7, 0xd9, + 0xfd, 0xdb, 0xcd, 0x04, 0x41, 0xff, 0xbc, 0x30, 0x0a, 0x12, 0x1f, 0x46, 0x81, 0x5b, 0xd4, 0x94, + 0x7b, 0x3d, 0x07, 0x92, 0x76, 0x86, 0x21, 0x97, 0xb3, 0xe8, 0x38, 0xab, 0xe9, 0x75, 0x86, 0xb1, + 0xc5, 0x8f, 0xe7, 0x8e, 0x58, 0x76, 0xcf, 0x63, 0x59, 0x14, 0x99, 0xf8, 0xab, 0xb0, 0x93, 0xfa, + 0x1f, 0x73, 0x2e, 0x7f, 0x31, 0xf7, 0x43, 0xa7, 0xe7, 0x7f, 0x3c, 0x88, 0x83, 0xf4, 0x51, 0xf8, + 0xa1, 0x04, 0xd9, 0xba, 0x69, 0x39, 0xa3, 0xc2, 0x20, 0xe9, 0x9e, 0x69, 0x48, 0x02, 0xf5, 0xe8, + 0x39, 0x67, 0x7a, 0x7b, 0xa6, 0xf1, 0xe5, 0x8f, 0x21, 0x6e, 0xe2, 0x51, 0x98, 0xa3, 0x9c, 0xf8, + 0x97, 0x8a, 0xfc, 0x40, 0xa2, 0xfd, 0xd5, 0xbd, 0xa2, 0x88, 0x9c, 0x81, 0x99, 0xd0, 0x9e, 0xa5, + 0x07, 0x0a, 0x97, 0x86, 0xde, 0x10, 0xc6, 0x65, 0x91, 0xc7, 0xa5, 0xdf, 0x8c, 0xdb, 0xbf, 0x97, + 0x63, 0x54, 0x3d, 0x53, 0x92, 0x10, 0x8c, 0x31, 0x85, 0xa7, 0x8f, 0xc8, 0x83, 0x32, 0xe4, 0x99, + 0xcf, 0xd8, 0x48, 0x11, 0x48, 0xda, 0x32, 0x7c, 0x21, 0x88, 0xf9, 0x96, 0xc9, 0xa3, 0x6e, 0x19, + 0xf1, 0xe5, 0xa7, 0x8f, 0xc3, 0xbf, 0x33, 0x67, 0xc8, 0xe2, 0x9e, 0xa6, 0x77, 0xb4, 0xf3, 0x9d, + 0x04, 0xa1, 0x8f, 0x3f, 0x9a, 0xf0, 0xf8, 0x97, 0x5f, 0x55, 0xae, 0xbc, 0x08, 0x89, 0xff, 0x14, + 0x4c, 0x59, 0xfe, 0x92, 0xa4, 0x77, 0x3a, 0xbe, 0xc7, 0x11, 0x95, 0x7d, 0x57, 0x83, 0x9c, 0x89, + 0xce, 0x7a, 0x09, 0xf1, 0x33, 0x96, 0xb3, 0x29, 0xd3, 0xc5, 0x76, 0x7b, 0x09, 0x6b, 0xce, 0xae, + 0x85, 0xdb, 0x89, 0x86, 0x08, 0x5e, 0x44, 0x53, 0x61, 0x49, 0x70, 0xc1, 0x07, 0x57, 0x79, 0x74, + 0x9e, 0x30, 0xa0, 0x37, 0xf0, 0x78, 0x19, 0x49, 0x97, 0xf4, 0x16, 0x1f, 0x92, 0x1a, 0x07, 0xc9, + 0x93, 0x86, 0x63, 0x62, 0x0c, 0x17, 0xba, 0xcb, 0x30, 0x47, 0xed, 0x84, 0x51, 0x63, 0xf2, 0x07, + 0x09, 0x7d, 0x4c, 0x42, 0xd7, 0x36, 0x85, 0xd9, 0x19, 0x09, 0x2c, 0x49, 0x3c, 0x52, 0xc4, 0xf8, + 0x48, 0x1f, 0x99, 0xcf, 0xe5, 0x01, 0x42, 0x7e, 0x83, 0x1f, 0xcd, 0x07, 0x81, 0x00, 0xd1, 0xdb, + 0xd8, 0xfc, 0xa3, 0xce, 0x45, 0xa5, 0x0e, 0xf9, 0x04, 0xfa, 0x1b, 0x52, 0x7c, 0xa2, 0xd0, 0xa8, + 0xf2, 0xe7, 0x09, 0x6d, 0x5e, 0xe6, 0xb5, 0x37, 0x70, 0x70, 0x1f, 0xb2, 0x97, 0xfb, 0x58, 0x02, + 0xe3, 0x77, 0x10, 0x2b, 0xc9, 0x50, 0x5b, 0x1d, 0x62, 0x66, 0x7f, 0x0a, 0x8e, 0xab, 0xe5, 0xe2, + 0x62, 0xad, 0xba, 0x7a, 0x5f, 0xf8, 0x0e, 0x9f, 0x82, 0x1c, 0x9e, 0x9c, 0xa4, 0x02, 0xdb, 0x6b, + 0x13, 0xf6, 0x81, 0xbc, 0xac, 0x62, 0x6f, 0xa8, 0xff, 0x44, 0x82, 0x5e, 0x4d, 0x80, 0xec, 0x61, + 0xa2, 0xf0, 0x20, 0x84, 0x9a, 0xd1, 0x73, 0x64, 0x28, 0xb8, 0xe3, 0x21, 0xe5, 0x92, 0x5d, 0xd6, + 0x56, 0xe3, 0xdd, 0x0a, 0xbb, 0x74, 0xff, 0x29, 0x70, 0x2b, 0xf4, 0x12, 0x94, 0xeb, 0x61, 0xae, + 0xb5, 0x8d, 0x5b, 0x17, 0x2a, 0x86, 0xb7, 0xaf, 0x4e, 0x37, 0x61, 0x7b, 0x52, 0x79, 0x60, 0xee, + 0xe5, 0x81, 0xe1, 0x27, 0xd1, 0xdc, 0x20, 0x1d, 0x66, 0x2a, 0x02, 0x97, 0x3f, 0xf2, 0x71, 0xa9, + 0x72, 0xb8, 0xdc, 0x3e, 0x14, 0xd5, 0x64, 0xb0, 0x54, 0x87, 0x80, 0x05, 0xc1, 0xc9, 0xda, 0x7a, + 0xa3, 0x52, 0xab, 0x36, 0x37, 0xea, 0xe5, 0xc5, 0xe6, 0x82, 0x07, 0x4e, 0xbd, 0x20, 0xa3, 0x6f, + 0x49, 0x30, 0x41, 0xd9, 0xb2, 0xd1, 0xa3, 0x03, 0x08, 0x06, 0xfa, 0x53, 0xa2, 0xb7, 0x0a, 0x47, + 0x47, 0xf0, 0x05, 0xc1, 0xca, 0x89, 0xe8, 0xa7, 0x9e, 0x08, 0x13, 0x14, 0x64, 0x6f, 0x45, 0xeb, + 0x74, 0x44, 0x2f, 0xc5, 0xc8, 0xa8, 0x5e, 0x76, 0xc1, 0x48, 0x09, 0x03, 0xd8, 0x48, 0x7f, 0x64, + 0x79, 0x7a, 0x96, 0x9a, 0xc1, 0xe7, 0x74, 0x67, 0x9b, 0xb8, 0x5b, 0xa2, 0xa7, 0x88, 0x2c, 0x2f, + 0xde, 0x04, 0xb9, 0x3d, 0x37, 0xf7, 0x00, 0xd7, 0x55, 0x9a, 0x09, 0xbd, 0x4c, 0x38, 0x30, 0x27, + 0xa7, 0x9f, 0x3e, 0x4f, 0x11, 0xe0, 0xac, 0x41, 0xb6, 0xa3, 0xdb, 0x0e, 0x1b, 0x3f, 0x6e, 0x4b, + 0x44, 0xc8, 0x7b, 0xa8, 0x38, 0x78, 0x47, 0x25, 0x64, 0xd0, 0x3d, 0x30, 0x13, 0x4e, 0x15, 0x70, + 0xdf, 0x3d, 0x05, 0x13, 0xec, 0x58, 0x19, 0x5b, 0x62, 0xf5, 0x5e, 0x05, 0x97, 0x35, 0x85, 0x6a, + 0x9b, 0xbe, 0x0e, 0xfc, 0xdf, 0x47, 0x61, 0x62, 0x45, 0xb7, 0x1d, 0xd3, 0xba, 0x84, 0x1e, 0xca, + 0xc0, 0xc4, 0x59, 0x6c, 0xd9, 0xba, 0x69, 0xec, 0x73, 0x35, 0xb8, 0x06, 0xa6, 0xbb, 0x16, 0xde, + 0xd3, 0xcd, 0x5d, 0x3b, 0x58, 0x9c, 0x09, 0x27, 0x29, 0x08, 0x26, 0xb5, 0x5d, 0x67, 0xdb, 0xb4, + 0x82, 0x68, 0x14, 0xde, 0xbb, 0x72, 0x1a, 0x80, 0x3e, 0x57, 0xb5, 0x1d, 0xcc, 0x1c, 0x28, 0x42, + 0x29, 0x8a, 0x02, 0x59, 0x47, 0xdf, 0xc1, 0x2c, 0x3c, 0x2d, 0x79, 0x76, 0x05, 0x4c, 0x42, 0xbd, + 0xb1, 0x90, 0x7a, 0xb2, 0xea, 0xbd, 0xa2, 0x2f, 0xca, 0x30, 0xbd, 0x8c, 0x1d, 0xc6, 0xaa, 0x8d, + 0x9e, 0x9f, 0x11, 0xba, 0x11, 0xc2, 0x1d, 0x63, 0x3b, 0x9a, 0xed, 0xfd, 0xe7, 0x2f, 0xc1, 0xf2, + 0x89, 0x41, 0xac, 0x5c, 0x39, 0x1c, 0x28, 0x9b, 0x04, 0x4e, 0x73, 0x2a, 0xd4, 0x2f, 0x93, 0x65, + 0x66, 0x9b, 0x20, 0xfb, 0x3f, 0xa0, 0x77, 0x49, 0xa2, 0x87, 0x8e, 0x99, 0xec, 0xe7, 0x43, 0xf5, + 0x89, 0xec, 0x8e, 0x26, 0xf7, 0x58, 0x8e, 0x7d, 0x31, 0xd0, 0xc3, 0x94, 0x18, 0x19, 0xd5, 0xcf, + 0x2d, 0x78, 0x5c, 0x79, 0x30, 0x27, 0xe9, 0x6b, 0xe3, 0xf7, 0x64, 0x98, 0xae, 0x6f, 0x9b, 0x17, + 0x3d, 0x39, 0xfe, 0x9c, 0x18, 0xb0, 0x57, 0xc1, 0xd4, 0x5e, 0x0f, 0xa8, 0x41, 0x42, 0xf4, 0x1d, + 0xed, 0xe8, 0xd9, 0x72, 0x52, 0x98, 0x42, 0xcc, 0x8d, 0xfc, 0x06, 0x75, 0xe5, 0x09, 0x30, 0xc1, + 0xb8, 0x66, 0x4b, 0x2e, 0xf1, 0x00, 0x7b, 0x99, 0xc3, 0x15, 0xcc, 0xf2, 0x15, 0x4c, 0x86, 0x7c, + 0x74, 0xe5, 0xd2, 0x47, 0xfe, 0x4f, 0x24, 0x12, 0xac, 0xc2, 0x03, 0xbe, 0x34, 0x02, 0xe0, 0xd1, + 0xf7, 0x33, 0xa2, 0x0b, 0x93, 0xbe, 0x04, 0x7c, 0x0e, 0x0e, 0x74, 0xdb, 0xcb, 0x40, 0x72, 0xe9, + 0xcb, 0xf3, 0xa5, 0x59, 0x98, 0x59, 0xd4, 0x37, 0x37, 0xfd, 0x4e, 0xf2, 0x05, 0x82, 0x9d, 0x64, + 0xb4, 0x3b, 0x80, 0x6b, 0xe7, 0xee, 0x5a, 0x16, 0x36, 0xbc, 0x4a, 0xb1, 0xe6, 0xd4, 0x93, 0xaa, + 0xdc, 0x00, 0x47, 0xbd, 0x71, 0x21, 0xdc, 0x51, 0x4e, 0xa9, 0xbd, 0xc9, 0xe8, 0xbb, 0xc2, 0xbb, + 0x5a, 0x9e, 0x44, 0xc3, 0x55, 0x8a, 0x68, 0x80, 0x77, 0xc0, 0xec, 0x36, 0xcd, 0x4d, 0xa6, 0xfe, + 0x5e, 0x67, 0x79, 0xb2, 0x27, 0x18, 0xf0, 0x1a, 0xb6, 0x6d, 0x6d, 0x0b, 0xab, 0x7c, 0xe6, 0x9e, + 0xe6, 0x2b, 0x27, 0xb9, 0xda, 0x4a, 0x6c, 0x83, 0x4c, 0xa0, 0x26, 0x63, 0xd0, 0x8e, 0x33, 0x90, + 0x5d, 0xd2, 0x3b, 0x18, 0xfd, 0xb2, 0x04, 0x53, 0x2a, 0x6e, 0x99, 0x46, 0xcb, 0x7d, 0x0b, 0x39, + 0x07, 0xfd, 0x63, 0x46, 0xf4, 0x4a, 0x47, 0x97, 0xce, 0xbc, 0x4f, 0x23, 0xa2, 0xdd, 0x88, 0x5d, + 0xdd, 0x18, 0x4b, 0x6a, 0x0c, 0x17, 0x70, 0xb8, 0x53, 0x8f, 0xcd, 0xcd, 0x8e, 0xa9, 0x71, 0x8b, + 0x5f, 0xbd, 0xa6, 0xd0, 0x8d, 0x50, 0xf0, 0xce, 0x80, 0x98, 0xce, 0xba, 0x6e, 0x18, 0xfe, 0x21, + 0xe3, 0x7d, 0xe9, 0xfc, 0xbe, 0x6d, 0x6c, 0x9c, 0x16, 0x52, 0x77, 0x56, 0x7a, 0x84, 0x66, 0x5f, + 0x0f, 0x73, 0xe7, 0x2f, 0x39, 0xd8, 0x66, 0xb9, 0x58, 0xb1, 0x59, 0xb5, 0x27, 0x35, 0x14, 0x65, + 0x39, 0x2e, 0x9e, 0x4b, 0x4c, 0x81, 0xc9, 0x44, 0xbd, 0x32, 0xc4, 0x0c, 0xf0, 0x38, 0x14, 0xaa, + 0xb5, 0xc5, 0x32, 0xf1, 0x55, 0xf3, 0xbc, 0x7f, 0xb6, 0xd0, 0x0b, 0x65, 0x98, 0x21, 0xce, 0x24, + 0x1e, 0x0a, 0xd7, 0x0a, 0xcc, 0x47, 0xd0, 0x57, 0x84, 0xfd, 0xd8, 0x48, 0x95, 0xc3, 0x05, 0x44, + 0x0b, 0x7a, 0x53, 0xef, 0xf4, 0x0a, 0x3a, 0xa7, 0xf6, 0xa4, 0xf6, 0x01, 0x44, 0xee, 0x0b, 0xc8, + 0xef, 0x09, 0x39, 0xb3, 0x0d, 0xe2, 0xee, 0xb0, 0x50, 0xf9, 0x7d, 0x19, 0xa6, 0xdd, 0x49, 0x8a, + 0x07, 0x4a, 0x8d, 0x03, 0xc5, 0x34, 0x3a, 0x97, 0x82, 0x65, 0x11, 0xef, 0x35, 0x51, 0x23, 0xf9, + 0x4b, 0xe1, 0x99, 0x3b, 0x11, 0x51, 0x88, 0x97, 0x31, 0xe1, 0xf7, 0x3e, 0xa1, 0xf9, 0xfc, 0x00, + 0xe6, 0x0e, 0x0b, 0xbe, 0x6f, 0xe4, 0x20, 0xbf, 0xd1, 0x25, 0xc8, 0xbd, 0x4c, 0x16, 0x89, 0x58, + 0xbe, 0xef, 0x20, 0x83, 0x6b, 0x66, 0x75, 0xcc, 0x96, 0xd6, 0x59, 0x0f, 0x4e, 0x84, 0x05, 0x09, + 0xca, 0xed, 0xcc, 0xb7, 0x91, 0x1e, 0xb7, 0xbb, 0x3e, 0x36, 0x98, 0x37, 0x91, 0x51, 0xe8, 0xd0, + 0xc8, 0x4d, 0x70, 0xac, 0xad, 0xdb, 0xda, 0xf9, 0x0e, 0x2e, 0x1b, 0x2d, 0xeb, 0x12, 0x15, 0x07, + 0x9b, 0x56, 0xed, 0xfb, 0xa0, 0xdc, 0x09, 0x39, 0xdb, 0xb9, 0xd4, 0xa1, 0xf3, 0xc4, 0xf0, 0x19, + 0x93, 0xc8, 0xa2, 0xea, 0x6e, 0x76, 0x95, 0xfe, 0x15, 0x76, 0x51, 0x9a, 0x10, 0xbc, 0xcf, 0xf9, + 0x71, 0x90, 0x37, 0x2d, 0x7d, 0x4b, 0xa7, 0xf7, 0xf3, 0xcc, 0xed, 0x8b, 0x59, 0x47, 0x4d, 0x81, + 0x1a, 0xc9, 0xa2, 0xb2, 0xac, 0xca, 0x13, 0x60, 0x4a, 0xdf, 0xd1, 0xb6, 0xf0, 0xbd, 0xba, 0x41, + 0x4f, 0xf4, 0xcd, 0xdd, 0x7a, 0x6a, 0xdf, 0xf1, 0x19, 0xf6, 0x5d, 0x0d, 0xb2, 0xa2, 0xf7, 0x49, + 0xa2, 0x81, 0x75, 0x48, 0xdd, 0x28, 0xa8, 0x63, 0xb9, 0xd7, 0x1a, 0xbd, 0x52, 0x28, 0xe4, 0x4d, + 0x34, 0x5b, 0xe9, 0x0f, 0xde, 0x9f, 0x97, 0x60, 0x72, 0xd1, 0xbc, 0x68, 0x10, 0x45, 0xbf, 0x4d, + 0xcc, 0xd6, 0xed, 0x73, 0xc8, 0x91, 0xbf, 0x36, 0x32, 0xf6, 0x44, 0x03, 0xa9, 0xad, 0x57, 0x64, + 0x04, 0x0c, 0xb1, 0x2d, 0x47, 0xf0, 0x32, 0xbf, 0xb8, 0x72, 0xd2, 0x97, 0xeb, 0x9f, 0xca, 0x90, + 0x5d, 0xb4, 0xcc, 0x2e, 0x7a, 0x4b, 0x26, 0x81, 0xcb, 0x42, 0xdb, 0x32, 0xbb, 0x0d, 0x72, 0x1b, + 0x57, 0x70, 0x8c, 0x23, 0x9c, 0xa6, 0xdc, 0x06, 0x93, 0x5d, 0xd3, 0xd6, 0x1d, 0x6f, 0x1a, 0x31, + 0x77, 0xeb, 0x23, 0xfa, 0xb6, 0xe6, 0x75, 0x96, 0x49, 0xf5, 0xb3, 0xbb, 0xbd, 0x36, 0x11, 0xa1, + 0x2b, 0x17, 0x57, 0x8c, 0xde, 0x8d, 0x64, 0x3d, 0xa9, 0xe8, 0x45, 0x61, 0x24, 0x9f, 0xc4, 0x23, + 0xf9, 0xc8, 0x3e, 0x12, 0xb6, 0xcc, 0xee, 0x48, 0x36, 0x19, 0x5f, 0xee, 0xa3, 0xfa, 0x64, 0x0e, + 0xd5, 0x1b, 0x85, 0xca, 0x4c, 0x1f, 0xd1, 0xf7, 0x65, 0x01, 0x88, 0x99, 0xb1, 0xe1, 0x4e, 0x80, + 0xc4, 0x6c, 0xac, 0x67, 0x66, 0x43, 0xb2, 0x2c, 0xf2, 0xb2, 0x7c, 0x74, 0x84, 0x15, 0x43, 0xc8, + 0x47, 0x48, 0xb4, 0x08, 0xb9, 0x5d, 0xf7, 0x33, 0x93, 0xa8, 0x20, 0x09, 0xf2, 0xaa, 0xd2, 0x3f, + 0xd1, 0x9f, 0x64, 0x20, 0x47, 0x12, 0x94, 0xd3, 0x00, 0x64, 0x60, 0xa7, 0x07, 0x82, 0x32, 0x64, + 0x08, 0x0f, 0xa5, 0x10, 0x6d, 0xd5, 0xdb, 0xec, 0x33, 0x35, 0x99, 0x83, 0x04, 0xf7, 0x6f, 0x32, + 0xdc, 0x13, 0x5a, 0xcc, 0x00, 0x08, 0xa5, 0xb8, 0x7f, 0x93, 0xb7, 0x55, 0xbc, 0x49, 0x03, 0x25, + 0x67, 0xd5, 0x20, 0xc1, 0xff, 0x7b, 0xd5, 0xbf, 0x5e, 0xcb, 0xfb, 0x9b, 0xa4, 0xb8, 0x93, 0x61, + 0xa2, 0x96, 0x0b, 0x41, 0x11, 0x79, 0x92, 0xa9, 0x37, 0x19, 0xbd, 0xd6, 0x57, 0x9b, 0x45, 0x4e, + 0x6d, 0x6e, 0x49, 0x20, 0xde, 0xf4, 0x95, 0xe7, 0x6b, 0x39, 0x98, 0xaa, 0x9a, 0x6d, 0xa6, 0x3b, + 0xa1, 0x09, 0xe3, 0x27, 0x72, 0x89, 0x26, 0x8c, 0x3e, 0x8d, 0x08, 0x05, 0xb9, 0x9b, 0x57, 0x10, + 0x31, 0x0a, 0x61, 0xfd, 0x50, 0x16, 0x20, 0x4f, 0xb4, 0x77, 0xff, 0xbd, 0x4d, 0x71, 0x24, 0x88, + 0x68, 0x55, 0xf6, 0xe7, 0x7f, 0x38, 0x1d, 0xfb, 0xaf, 0x90, 0x23, 0x15, 0x8c, 0xd9, 0xdd, 0xe1, + 0x2b, 0x2a, 0xc5, 0x57, 0x54, 0x8e, 0xaf, 0x68, 0xb6, 0xb7, 0xa2, 0x49, 0xd6, 0x01, 0xa2, 0x34, + 0x24, 0x7d, 0x1d, 0xff, 0x87, 0x09, 0x80, 0xaa, 0xb6, 0xa7, 0x6f, 0xd1, 0xdd, 0xe1, 0x2f, 0x7a, + 0xf3, 0x1f, 0xb6, 0x8f, 0xfb, 0xdf, 0x42, 0x03, 0xe1, 0x6d, 0x30, 0xc1, 0xc6, 0x3d, 0x56, 0x91, + 0xab, 0xb9, 0x8a, 0x04, 0x54, 0xa8, 0x59, 0xfa, 0x80, 0xa3, 0x7a, 0xf9, 0xb9, 0x2b, 0x66, 0xa5, + 0x9e, 0x2b, 0x66, 0xfb, 0xef, 0x41, 0x44, 0x5c, 0x3c, 0x8b, 0xde, 0x2d, 0xec, 0xd1, 0x1f, 0xe2, + 0x27, 0x54, 0xa3, 0x88, 0x26, 0xf8, 0x38, 0x98, 0x30, 0xfd, 0x0d, 0x6d, 0x39, 0x72, 0x1d, 0xac, + 0x62, 0x6c, 0x9a, 0xaa, 0x97, 0x53, 0x70, 0xf3, 0x4b, 0x88, 0x8f, 0xb1, 0x1c, 0x9a, 0x39, 0xb9, + 0xec, 0x05, 0x9d, 0x72, 0xeb, 0x71, 0x4e, 0x77, 0xb6, 0x57, 0x75, 0xe3, 0x82, 0x8d, 0xfe, 0xb3, + 0x98, 0x05, 0x19, 0xc2, 0x5f, 0x4a, 0x86, 0x3f, 0x1f, 0xb3, 0xa3, 0xce, 0xa3, 0x76, 0x67, 0x14, + 0x95, 0xfe, 0xdc, 0x46, 0x00, 0x78, 0x3b, 0xe4, 0x29, 0xa3, 0xac, 0x13, 0x3d, 0x13, 0x89, 0x9f, + 0x4f, 0x49, 0x65, 0x7f, 0xa0, 0x77, 0xf9, 0x38, 0x9e, 0xe5, 0x70, 0x5c, 0x38, 0x10, 0x67, 0xa9, + 0x43, 0x7a, 0xe6, 0xb1, 0x30, 0xc1, 0x24, 0xad, 0xcc, 0x85, 0x5b, 0x71, 0xe1, 0x88, 0x02, 0x90, + 0x5f, 0x33, 0xf7, 0x70, 0xc3, 0x2c, 0x64, 0xdc, 0x67, 0x97, 0xbf, 0x86, 0x59, 0x90, 0xd0, 0x2b, + 0x26, 0x61, 0xd2, 0x8f, 0xf6, 0xf3, 0x79, 0x09, 0x0a, 0x25, 0x0b, 0x6b, 0x0e, 0x5e, 0xb2, 0xcc, + 0x1d, 0x5a, 0x23, 0x71, 0xef, 0xd0, 0xdf, 0x14, 0x76, 0xf1, 0xf0, 0xa3, 0xf0, 0xf4, 0x16, 0x16, + 0x81, 0x25, 0x5d, 0x84, 0x94, 0xbc, 0x45, 0x48, 0xf4, 0x66, 0x21, 0x97, 0x0f, 0xd1, 0x52, 0xd2, + 0x6f, 0x6a, 0x9f, 0x96, 0x20, 0x57, 0xea, 0x98, 0x06, 0x0e, 0x1f, 0x61, 0x1a, 0x78, 0x56, 0xa6, + 0xff, 0x4e, 0x04, 0x7a, 0xba, 0x24, 0x6a, 0x6b, 0x04, 0x02, 0x70, 0xcb, 0x16, 0x94, 0xad, 0xd8, + 0x20, 0x15, 0x4b, 0x3a, 0x7d, 0x81, 0x7e, 0x4b, 0x82, 0x29, 0x1a, 0x17, 0xa7, 0xd8, 0xe9, 0xa0, + 0x47, 0x04, 0x42, 0xed, 0x13, 0x31, 0x09, 0xfd, 0x9e, 0xb0, 0x8b, 0xbe, 0x5f, 0x2b, 0x9f, 0x76, + 0x82, 0x00, 0x41, 0xc9, 0x3c, 0xc6, 0xc5, 0xf6, 0xd2, 0x06, 0x32, 0x94, 0xbe, 0xa8, 0xbf, 0x20, + 0xb9, 0x06, 0x80, 0x71, 0x61, 0xdd, 0xc2, 0x7b, 0x3a, 0xbe, 0x88, 0xae, 0x0c, 0x84, 0xbd, 0x3f, + 0xe8, 0xc7, 0x1b, 0x85, 0x17, 0x71, 0x42, 0x24, 0x23, 0xb7, 0xb2, 0xa6, 0x3b, 0x41, 0x26, 0xd6, + 0x8b, 0xf7, 0x46, 0x62, 0x09, 0x91, 0x51, 0xc3, 0xd9, 0x05, 0xd7, 0x6c, 0xa2, 0xb9, 0x48, 0x5f, + 0xb0, 0x1f, 0x9c, 0x80, 0xc9, 0x0d, 0xc3, 0xee, 0x76, 0x34, 0x7b, 0x1b, 0xfd, 0x40, 0x86, 0x3c, + 0xbd, 0x2d, 0x0c, 0xfd, 0x14, 0x17, 0x5b, 0xe0, 0xe7, 0x77, 0xb1, 0xe5, 0xb9, 0xe0, 0xd0, 0x97, + 0xfe, 0x97, 0x99, 0xa3, 0xf7, 0xc9, 0xa2, 0x93, 0x54, 0xaf, 0xd0, 0xd0, 0xb5, 0xf1, 0xfd, 0x8f, + 0xb3, 0x77, 0xf5, 0x96, 0xb3, 0x6b, 0xf9, 0x57, 0x63, 0x3f, 0x46, 0x8c, 0xca, 0x3a, 0xfd, 0x4b, + 0xf5, 0x7f, 0x47, 0x1a, 0x4c, 0xb0, 0xc4, 0x7d, 0xdb, 0x49, 0xfb, 0xcf, 0xdf, 0x9e, 0x84, 0xbc, + 0x66, 0x39, 0xba, 0xed, 0xb0, 0x0d, 0x56, 0xf6, 0xe6, 0x76, 0x97, 0xf4, 0x69, 0xc3, 0xea, 0x78, + 0x51, 0x48, 0xfc, 0x04, 0xf4, 0xfb, 0x42, 0xf3, 0xc7, 0xf8, 0x9a, 0x27, 0x83, 0xfc, 0xde, 0x21, + 0xd6, 0xa8, 0x2f, 0x87, 0xcb, 0xd4, 0x62, 0xa3, 0xdc, 0xa4, 0x41, 0x2b, 0xfc, 0xf8, 0x14, 0x6d, + 0xf4, 0x4e, 0x39, 0xb4, 0x7e, 0x77, 0x89, 0x1b, 0x23, 0x98, 0x14, 0x83, 0x31, 0xc2, 0x4f, 0x88, + 0xd9, 0xad, 0xe6, 0x16, 0x61, 0x65, 0xf1, 0x45, 0xd8, 0xdf, 0x11, 0xde, 0x4d, 0xf2, 0x45, 0x39, + 0x60, 0x0d, 0x30, 0xee, 0x36, 0xa1, 0xf7, 0x0b, 0xed, 0x0c, 0x0d, 0x2a, 0xe9, 0x10, 0x61, 0x7b, + 0xc3, 0x04, 0x4c, 0x2c, 0x6b, 0x9d, 0x0e, 0xb6, 0x2e, 0xb9, 0x43, 0x52, 0xc1, 0xe3, 0x70, 0x4d, + 0x33, 0xf4, 0x4d, 0x6c, 0x3b, 0xf1, 0x9d, 0xe5, 0xbb, 0x85, 0x23, 0xd5, 0xb2, 0x32, 0xe6, 0x7b, + 0xe9, 0x47, 0xc8, 0xfc, 0x66, 0xc8, 0xea, 0xc6, 0xa6, 0xc9, 0xba, 0xcc, 0xde, 0x55, 0x7b, 0xef, + 0x67, 0x32, 0x75, 0x21, 0x19, 0x05, 0x83, 0xd5, 0x0a, 0x72, 0x91, 0x7e, 0xcf, 0xf9, 0xbb, 0x59, + 0x98, 0xf5, 0x98, 0xa8, 0x18, 0x6d, 0xfc, 0x40, 0x78, 0x29, 0xe6, 0x85, 0x59, 0xd1, 0xe3, 0x60, + 0xbd, 0xf5, 0x21, 0xa4, 0x22, 0x44, 0xda, 0x00, 0x68, 0x69, 0x0e, 0xde, 0x32, 0x2d, 0xdd, 0xef, + 0x0f, 0x1f, 0x9f, 0x84, 0x5a, 0x89, 0xfe, 0x7d, 0x49, 0x0d, 0xd1, 0x51, 0xee, 0x84, 0x69, 0xec, + 0x9f, 0xbf, 0xf7, 0x96, 0x6a, 0x62, 0xf1, 0x0a, 0xe7, 0x47, 0x5f, 0x10, 0x3a, 0x75, 0x26, 0x52, + 0xcd, 0x64, 0x98, 0x35, 0x87, 0x6b, 0x43, 0x1b, 0xd5, 0xb5, 0xa2, 0x5a, 0x5f, 0x29, 0xae, 0xae, + 0x56, 0xaa, 0xcb, 0x7e, 0xe0, 0x17, 0x05, 0xe6, 0x16, 0x6b, 0xe7, 0xaa, 0xa1, 0xc8, 0x3c, 0x59, + 0xb4, 0x0e, 0x93, 0x9e, 0xbc, 0xfa, 0xf9, 0x62, 0x86, 0x65, 0xc6, 0x7c, 0x31, 0x43, 0x49, 0xae, + 0x71, 0xa6, 0xb7, 0x7c, 0x07, 0x1d, 0xf2, 0x8c, 0xfe, 0x58, 0x83, 0x1c, 0x59, 0x53, 0x47, 0x6f, + 0x27, 0xdb, 0x80, 0xdd, 0x8e, 0xd6, 0xc2, 0x68, 0x27, 0x81, 0x35, 0xee, 0x5d, 0x9d, 0x20, 0xed, + 0xbb, 0x3a, 0x81, 0x3c, 0x32, 0xab, 0xef, 0x78, 0xbf, 0x75, 0x7c, 0x95, 0x66, 0xe1, 0x0f, 0x68, + 0xc5, 0xee, 0xae, 0xd0, 0xe5, 0x7f, 0xc6, 0x66, 0x84, 0x4a, 0x46, 0xf3, 0x94, 0xcc, 0x12, 0x15, + 0xdb, 0x87, 0x89, 0xe3, 0x68, 0x0c, 0xd7, 0x7b, 0x67, 0x21, 0x57, 0xef, 0x76, 0x74, 0x07, 0xbd, + 0x44, 0x1a, 0x09, 0x66, 0xf4, 0xba, 0x0b, 0x79, 0xe0, 0x75, 0x17, 0xc1, 0xae, 0x6b, 0x56, 0x60, + 0xd7, 0xb5, 0x81, 0x1f, 0x70, 0xf8, 0x5d, 0xd7, 0xdb, 0x58, 0xf0, 0x36, 0xba, 0x67, 0xfb, 0xc8, + 0x3e, 0x22, 0x25, 0xd5, 0xea, 0x13, 0x15, 0xf0, 0xcc, 0x63, 0x59, 0x70, 0x32, 0x80, 0xfc, 0x42, + 0xad, 0xd1, 0xa8, 0xad, 0x15, 0x8e, 0x90, 0xa8, 0x36, 0xb5, 0x75, 0x1a, 0x2a, 0xa6, 0x52, 0xad, + 0x96, 0xd5, 0x82, 0x44, 0xc2, 0xa5, 0x55, 0x1a, 0xab, 0xe5, 0x82, 0xcc, 0xc7, 0x3e, 0x8f, 0x35, + 0xbf, 0xf9, 0xb2, 0xd3, 0x54, 0x2f, 0x31, 0x43, 0x3c, 0x9a, 0x9f, 0xf4, 0x95, 0xeb, 0x37, 0x64, + 0xc8, 0xad, 0x61, 0x6b, 0x0b, 0xa3, 0x9f, 0x4f, 0xb0, 0xc9, 0xb7, 0xa9, 0x5b, 0x36, 0x0d, 0x2e, + 0x17, 0x6c, 0xf2, 0x85, 0xd3, 0x94, 0xeb, 0x60, 0xd6, 0xc6, 0x2d, 0xd3, 0x68, 0x7b, 0x99, 0x68, + 0x7f, 0xc4, 0x27, 0xf2, 0xf7, 0xce, 0x0b, 0x40, 0x46, 0x18, 0x1d, 0xc9, 0x4e, 0x5d, 0x12, 0x60, + 0xfa, 0x95, 0x9a, 0x3e, 0x30, 0xdf, 0x95, 0xdd, 0x9f, 0xba, 0x97, 0xd0, 0x8b, 0x85, 0x77, 0x5f, + 0x6f, 0x82, 0x3c, 0x51, 0x53, 0x6f, 0x8c, 0xee, 0xdf, 0x1f, 0xb3, 0x3c, 0xca, 0x02, 0x1c, 0xb3, + 0x71, 0x07, 0xb7, 0x1c, 0xdc, 0x76, 0x9b, 0xae, 0x3a, 0xb0, 0x53, 0xd8, 0x9f, 0x1d, 0xfd, 0x59, + 0x18, 0xc0, 0x3b, 0x78, 0x00, 0xaf, 0xef, 0x23, 0x4a, 0xb7, 0x42, 0xd1, 0xb6, 0xb2, 0x5b, 0x8d, + 0x7a, 0xc7, 0xf4, 0x17, 0xc5, 0xbd, 0x77, 0xf7, 0xdb, 0xb6, 0xb3, 0xd3, 0x21, 0xdf, 0xd8, 0x01, + 0x03, 0xef, 0x5d, 0x99, 0x87, 0x09, 0xcd, 0xb8, 0x44, 0x3e, 0x65, 0x63, 0x6a, 0xed, 0x65, 0x42, + 0xaf, 0xf0, 0x91, 0xbf, 0x8b, 0x43, 0xfe, 0xd1, 0x62, 0xec, 0xa6, 0x0f, 0xfc, 0x2f, 0x4d, 0x40, + 0x6e, 0x5d, 0xb3, 0x1d, 0x8c, 0xfe, 0x2f, 0x59, 0x14, 0xf9, 0xeb, 0x61, 0x6e, 0xd3, 0x6c, 0xed, + 0xda, 0xb8, 0xcd, 0x37, 0xca, 0x9e, 0xd4, 0x51, 0x60, 0xae, 0xdc, 0x08, 0x05, 0x2f, 0x91, 0x91, + 0xf5, 0xb6, 0xe1, 0xf7, 0xa5, 0x93, 0x48, 0xda, 0xf6, 0xba, 0x66, 0x39, 0xb5, 0x4d, 0x92, 0xe6, + 0x47, 0xd2, 0x0e, 0x27, 0x72, 0xd0, 0xe7, 0x63, 0xa0, 0x9f, 0x88, 0x86, 0x7e, 0x52, 0x00, 0x7a, + 0xa5, 0x08, 0x93, 0x9b, 0x7a, 0x07, 0x93, 0x1f, 0xa6, 0xc8, 0x0f, 0xfd, 0xc6, 0x24, 0x22, 0x7b, + 0x7f, 0x4c, 0x5a, 0xd2, 0x3b, 0x58, 0xf5, 0x7f, 0xf3, 0x26, 0x32, 0x10, 0x4c, 0x64, 0x56, 0xa9, + 0x3f, 0xad, 0x6b, 0x78, 0x19, 0xda, 0x0e, 0xf6, 0x16, 0xdf, 0x0c, 0x76, 0xb8, 0xa5, 0xad, 0x39, + 0x1a, 0x01, 0x63, 0x46, 0x25, 0xcf, 0xbc, 0x5f, 0x88, 0xdc, 0xeb, 0x17, 0xf2, 0x2c, 0x39, 0x59, + 0x8f, 0xe8, 0x31, 0x1b, 0xd1, 0xa2, 0xce, 0x7b, 0x00, 0x51, 0x4b, 0xd1, 0x7f, 0x77, 0x81, 0x69, + 0x69, 0x16, 0x76, 0xd6, 0xc3, 0x9e, 0x18, 0x39, 0x95, 0x4f, 0x24, 0xae, 0x7c, 0x76, 0x5d, 0xdb, + 0xc1, 0xa4, 0xb0, 0x92, 0xfb, 0x8d, 0xb9, 0x68, 0xed, 0x4b, 0x0f, 0xfa, 0xdf, 0xdc, 0xa8, 0xfb, + 0xdf, 0x7e, 0x75, 0x4c, 0xbf, 0x19, 0xbe, 0x3a, 0x0b, 0x72, 0x69, 0xd7, 0x79, 0x58, 0x77, 0xbf, + 0x3f, 0x14, 0xf6, 0x73, 0x61, 0xfd, 0x59, 0xe4, 0x45, 0xf3, 0x63, 0xea, 0x7d, 0x13, 0x6a, 0x89, + 0x98, 0x3f, 0x4d, 0x54, 0xdd, 0xc6, 0x70, 0xaf, 0x81, 0xec, 0x3b, 0x58, 0x3e, 0x98, 0x39, 0xb8, + 0x69, 0x8e, 0x68, 0xff, 0x14, 0xea, 0x19, 0xfc, 0x77, 0xaf, 0xe3, 0xc9, 0x72, 0xb1, 0xfa, 0xc8, + 0xf6, 0x3a, 0x11, 0xe5, 0x8c, 0x4a, 0x5f, 0xd0, 0x4b, 0x85, 0xdd, 0xce, 0xa9, 0xd8, 0x62, 0x5d, + 0x09, 0x93, 0xd9, 0x54, 0x62, 0x97, 0x89, 0xc6, 0x14, 0x9b, 0x3e, 0x60, 0xdf, 0x09, 0xbb, 0x0a, + 0x16, 0x0f, 0x8c, 0x18, 0x7a, 0xa5, 0xf0, 0x76, 0x14, 0xad, 0xf6, 0x80, 0xf5, 0xc2, 0x64, 0xf2, + 0x16, 0xdb, 0xac, 0x8a, 0x2d, 0x38, 0x7d, 0x89, 0x7f, 0x5b, 0x86, 0x3c, 0xdd, 0x82, 0x44, 0x6f, + 0xca, 0x24, 0xb8, 0x85, 0xdd, 0xe1, 0x5d, 0x08, 0xfd, 0xf7, 0x24, 0x6b, 0x0e, 0x9c, 0xab, 0x61, + 0x36, 0x91, 0xab, 0x21, 0x7f, 0x8e, 0x53, 0xa0, 0x1d, 0xd1, 0x3a, 0xa6, 0x3c, 0x9d, 0x4c, 0xd2, + 0xc2, 0xfa, 0x32, 0x94, 0x3e, 0xde, 0xcf, 0xc9, 0xc1, 0x0c, 0x2d, 0xfa, 0x9c, 0xde, 0xde, 0xc2, + 0x0e, 0x7a, 0xa7, 0xf4, 0xa3, 0x83, 0xba, 0x52, 0x85, 0x99, 0x8b, 0x84, 0xed, 0x55, 0xed, 0x92, + 0xb9, 0xeb, 0xb0, 0x95, 0x8b, 0x1b, 0x63, 0xd7, 0x3d, 0x68, 0x3d, 0xe7, 0xe9, 0x1f, 0x2a, 0xf7, + 0xbf, 0x2b, 0x63, 0xba, 0xe0, 0x4f, 0x1d, 0xb8, 0xf2, 0xc4, 0xc8, 0x0a, 0x27, 0x29, 0x27, 0x21, + 0xbf, 0xa7, 0xe3, 0x8b, 0x95, 0x36, 0xb3, 0x6e, 0xd9, 0x1b, 0xfa, 0x90, 0xf0, 0xbe, 0x6d, 0x18, + 0x6e, 0xc6, 0x4b, 0xba, 0x5a, 0x28, 0xb6, 0x7b, 0x3b, 0x90, 0xad, 0x31, 0x9c, 0x29, 0xe6, 0x2f, + 0xeb, 0x2c, 0x25, 0x50, 0xc4, 0x28, 0xc3, 0x99, 0x0f, 0xe5, 0x11, 0x7b, 0x62, 0x85, 0x0a, 0x60, + 0xc4, 0xf7, 0x78, 0x8a, 0xc5, 0x97, 0x18, 0x50, 0x74, 0xfa, 0x92, 0x7f, 0xad, 0x0c, 0x53, 0x75, + 0xec, 0x2c, 0xe9, 0xb8, 0xd3, 0xb6, 0x91, 0x75, 0x70, 0xd3, 0xe8, 0x66, 0xc8, 0x6f, 0x12, 0x62, + 0x83, 0xce, 0x2d, 0xb0, 0x6c, 0xe8, 0xd5, 0x92, 0xe8, 0x8e, 0x30, 0x5b, 0x7d, 0xf3, 0xb8, 0x1d, + 0x09, 0x4c, 0x62, 0x1e, 0xbd, 0xf1, 0x25, 0x8f, 0x21, 0xb0, 0xad, 0x0c, 0x33, 0xec, 0x76, 0xbf, + 0x62, 0x47, 0xdf, 0x32, 0xd0, 0xee, 0x08, 0x5a, 0x88, 0x72, 0x0b, 0xe4, 0x34, 0x97, 0x1a, 0xdb, + 0x7a, 0x45, 0x7d, 0x3b, 0x4f, 0x52, 0x9e, 0x4a, 0x33, 0x26, 0x08, 0x23, 0x19, 0x28, 0xb6, 0xc7, + 0xf3, 0x18, 0xc3, 0x48, 0x0e, 0x2c, 0x3c, 0x7d, 0xc4, 0xbe, 0x2a, 0xc3, 0x71, 0xc6, 0xc0, 0x59, + 0x6c, 0x39, 0x7a, 0x4b, 0xeb, 0x50, 0xe4, 0x9e, 0x97, 0x19, 0x05, 0x74, 0x2b, 0x30, 0xbb, 0x17, + 0x26, 0xcb, 0x20, 0x3c, 0xd3, 0x17, 0x42, 0x8e, 0x01, 0x95, 0xff, 0x31, 0x41, 0x38, 0x3e, 0x4e, + 0xaa, 0x1c, 0xcd, 0x31, 0x86, 0xe3, 0x13, 0x66, 0x22, 0x7d, 0x88, 0x5f, 0xc4, 0x42, 0xf3, 0x04, + 0xdd, 0xe7, 0x17, 0x85, 0xb1, 0xdd, 0x80, 0x69, 0x82, 0x25, 0xfd, 0x91, 0x2d, 0x43, 0xc4, 0x28, + 0xb1, 0xdf, 0xef, 0xb0, 0x0b, 0xc3, 0xfc, 0x7f, 0xd5, 0x30, 0x1d, 0x74, 0x0e, 0x20, 0xf8, 0x14, + 0xee, 0xa4, 0x33, 0x51, 0x9d, 0xb4, 0x24, 0xd6, 0x49, 0xbf, 0x51, 0x38, 0x58, 0x4a, 0x7f, 0xb6, + 0x0f, 0xae, 0x1e, 0x62, 0x61, 0x32, 0x06, 0x97, 0x9e, 0xbe, 0x5e, 0xbc, 0x22, 0xdb, 0x7b, 0x8d, + 0xfb, 0x47, 0x47, 0x32, 0x9f, 0x0a, 0xf7, 0x07, 0x72, 0x4f, 0x7f, 0x70, 0x00, 0x4b, 0xfa, 0x06, + 0x38, 0x4a, 0x8b, 0x28, 0xf9, 0x6c, 0xe5, 0x68, 0x28, 0x88, 0x9e, 0x64, 0xf4, 0xb1, 0x21, 0x94, + 0x60, 0xd0, 0x1d, 0xf3, 0x71, 0x9d, 0x5c, 0x32, 0x63, 0x37, 0xa9, 0x82, 0x1c, 0xde, 0xd5, 0xf4, + 0xdf, 0xca, 0x52, 0x6b, 0x77, 0x83, 0xdc, 0xe9, 0x86, 0xfe, 0x22, 0x3b, 0x8a, 0x11, 0xe1, 0x6e, + 0xc8, 0x12, 0x17, 0x77, 0x39, 0x72, 0x49, 0x23, 0x28, 0x32, 0xb8, 0x70, 0x0f, 0x3f, 0xe0, 0xac, + 0x1c, 0x51, 0xc9, 0x9f, 0xca, 0x8d, 0x70, 0xf4, 0xbc, 0xd6, 0xba, 0xb0, 0x65, 0x99, 0xbb, 0xe4, + 0xf6, 0x2b, 0x93, 0x5d, 0xa3, 0x45, 0xae, 0x23, 0xe4, 0x3f, 0x28, 0xb7, 0x7a, 0xa6, 0x43, 0x6e, + 0x90, 0xe9, 0xb0, 0x72, 0x84, 0x19, 0x0f, 0xca, 0x63, 0xfd, 0x4e, 0x27, 0x1f, 0xdb, 0xe9, 0xac, + 0x1c, 0xf1, 0xba, 0x1d, 0x65, 0x11, 0x26, 0xdb, 0xfa, 0x1e, 0xd9, 0xaa, 0x26, 0xb3, 0xae, 0x41, + 0x47, 0x97, 0x17, 0xf5, 0x3d, 0xba, 0xb1, 0xbd, 0x72, 0x44, 0xf5, 0xff, 0x54, 0x96, 0x61, 0x8a, + 0x6c, 0x0b, 0x10, 0x32, 0x93, 0x89, 0x8e, 0x25, 0xaf, 0x1c, 0x51, 0x83, 0x7f, 0x5d, 0xeb, 0x23, + 0x4b, 0xce, 0x7e, 0xdc, 0xe5, 0x6d, 0xb7, 0x67, 0x12, 0x6d, 0xb7, 0xbb, 0xb2, 0xa0, 0x1b, 0xee, + 0x27, 0x21, 0xd7, 0x22, 0x12, 0x96, 0x98, 0x84, 0xe9, 0xab, 0x72, 0x07, 0x64, 0x77, 0x34, 0xcb, + 0x9b, 0x3c, 0x5f, 0x3f, 0x98, 0xee, 0x9a, 0x66, 0x5d, 0x70, 0x11, 0x74, 0xff, 0x5a, 0x98, 0x80, + 0x1c, 0x11, 0x9c, 0xff, 0x80, 0xde, 0x92, 0xa5, 0x66, 0x48, 0xc9, 0x34, 0xdc, 0x61, 0xbf, 0x61, + 0x7a, 0x07, 0x64, 0x3e, 0x94, 0x19, 0x8d, 0x05, 0xd9, 0xf7, 0xde, 0x73, 0x39, 0xf2, 0xde, 0xf3, + 0x9e, 0x0b, 0x78, 0xb3, 0xbd, 0x17, 0xf0, 0x06, 0xcb, 0x07, 0xb9, 0xc1, 0x8e, 0x2a, 0x7f, 0x36, + 0x84, 0xe9, 0xd2, 0x2b, 0x88, 0xe8, 0x19, 0x78, 0x47, 0x37, 0x42, 0x75, 0xf6, 0x5e, 0x13, 0x76, + 0x4a, 0x49, 0x8d, 0x9a, 0x01, 0xec, 0xa5, 0xdf, 0x37, 0xfd, 0x76, 0x16, 0x4e, 0xd1, 0x6b, 0x9e, + 0xf7, 0x70, 0xc3, 0xe4, 0xef, 0x9b, 0x44, 0x9f, 0x1a, 0x89, 0xd2, 0xf4, 0x19, 0x70, 0xe4, 0xbe, + 0x03, 0xce, 0xbe, 0x43, 0xca, 0xd9, 0x01, 0x87, 0x94, 0x73, 0xc9, 0x56, 0x0e, 0x3f, 0x10, 0xd6, + 0x9f, 0x75, 0x5e, 0x7f, 0x6e, 0x8f, 0x00, 0xa8, 0x9f, 0x5c, 0x46, 0x62, 0xdf, 0xbc, 0xdd, 0xd7, + 0x94, 0x3a, 0xa7, 0x29, 0x77, 0x0d, 0xcf, 0x48, 0xfa, 0xda, 0xf2, 0x07, 0x59, 0xb8, 0x2c, 0x60, + 0xa6, 0x8a, 0x2f, 0x32, 0x45, 0xf9, 0xfc, 0x48, 0x14, 0x25, 0x79, 0x0c, 0x84, 0xb4, 0x35, 0xe6, + 0x4f, 0x84, 0xcf, 0x0e, 0xf5, 0x02, 0xe5, 0xcb, 0x26, 0x42, 0x59, 0x4e, 0x42, 0x9e, 0xf6, 0x30, + 0x0c, 0x1a, 0xf6, 0x96, 0xb0, 0xbb, 0x11, 0x3b, 0x71, 0x24, 0xca, 0xdb, 0x18, 0xf4, 0x87, 0xad, + 0x6b, 0x34, 0x76, 0x2d, 0xa3, 0x62, 0x38, 0x26, 0xfa, 0xc5, 0x91, 0x28, 0x8e, 0xef, 0x0d, 0x27, + 0x0f, 0xe3, 0x0d, 0x37, 0xd4, 0x2a, 0x87, 0x57, 0x83, 0x43, 0x59, 0xe5, 0x88, 0x28, 0x3c, 0x7d, + 0xfc, 0xde, 0x26, 0xc3, 0x49, 0x36, 0xd9, 0x5a, 0xe0, 0x2d, 0x44, 0x74, 0xdf, 0x28, 0x80, 0x3c, + 0xee, 0x99, 0x49, 0xec, 0x96, 0x33, 0xf2, 0xc2, 0x9f, 0x94, 0x8a, 0xbd, 0xdf, 0x81, 0x9b, 0x0e, + 0xf6, 0x70, 0x38, 0x12, 0xa4, 0xc4, 0xae, 0x75, 0x48, 0xc0, 0x46, 0xfa, 0x98, 0xbd, 0x40, 0x86, + 0x3c, 0xbb, 0xde, 0x7f, 0x23, 0x15, 0x87, 0x09, 0x3e, 0xca, 0xb3, 0xc0, 0x8e, 0x5c, 0xe2, 0x4b, + 0xee, 0xd3, 0xdb, 0x8b, 0x3b, 0xa4, 0x5b, 0xec, 0xbf, 0x2b, 0xc1, 0x74, 0x1d, 0x3b, 0x25, 0xcd, + 0xb2, 0x74, 0x6d, 0x6b, 0x54, 0x1e, 0xdf, 0xa2, 0xde, 0xc3, 0xe8, 0x7b, 0x19, 0xd1, 0xf3, 0x34, + 0xfe, 0x42, 0xb8, 0xc7, 0x6a, 0x44, 0x2c, 0xc1, 0x87, 0x84, 0xce, 0xcc, 0x0c, 0xa2, 0x36, 0x06, + 0x8f, 0x6d, 0x09, 0x26, 0xbc, 0xb3, 0x78, 0x37, 0x73, 0xe7, 0x33, 0xb7, 0x9d, 0x1d, 0xef, 0x18, + 0x0c, 0x79, 0xde, 0x7f, 0x06, 0x0c, 0xbd, 0x3c, 0xa1, 0xa3, 0x7c, 0xfc, 0x41, 0xc2, 0x64, 0x6d, + 0x2c, 0x89, 0x3b, 0xfc, 0x61, 0x1d, 0x1d, 0xfc, 0xbd, 0x09, 0xb6, 0x1c, 0xb9, 0xaa, 0x39, 0xf8, + 0x01, 0xf4, 0x45, 0x19, 0x26, 0xea, 0xd8, 0x71, 0xc7, 0x5b, 0xee, 0x72, 0xd3, 0x61, 0x35, 0x5c, + 0x09, 0xad, 0x78, 0x4c, 0xb1, 0x35, 0x8c, 0x7b, 0x60, 0xaa, 0x6b, 0x99, 0x2d, 0x6c, 0xdb, 0x6c, + 0xf5, 0x22, 0xec, 0xa8, 0xd6, 0x6f, 0xf4, 0x27, 0xac, 0xcd, 0xaf, 0x7b, 0xff, 0xa8, 0xc1, 0xef, + 0x49, 0xcd, 0x00, 0x4a, 0x89, 0x55, 0x70, 0xdc, 0x66, 0x40, 0x5c, 0xe1, 0xe9, 0x03, 0xfd, 0x59, + 0x19, 0x66, 0xea, 0xd8, 0xf1, 0xa5, 0x98, 0x60, 0x93, 0x23, 0x1a, 0x5e, 0x0e, 0x4a, 0xf9, 0x60, + 0x50, 0x8a, 0x5f, 0x0d, 0xc8, 0x4b, 0xd3, 0x27, 0x36, 0xc6, 0xab, 0x01, 0xc5, 0x38, 0x18, 0xc3, + 0xf1, 0xb5, 0x47, 0xc2, 0x14, 0xe1, 0x85, 0x34, 0xd8, 0x5f, 0xc9, 0x06, 0x8d, 0xf7, 0x4b, 0x29, + 0x35, 0xde, 0x3b, 0x21, 0xb7, 0xa3, 0x59, 0x17, 0x6c, 0xd2, 0x70, 0xa7, 0x45, 0xcc, 0xf6, 0x35, + 0x37, 0xbb, 0x4a, 0xff, 0xea, 0xef, 0xa7, 0x99, 0x4b, 0xe6, 0xa7, 0xf9, 0x90, 0x94, 0x68, 0x24, + 0xa4, 0x73, 0x87, 0x11, 0x36, 0xf9, 0x04, 0xe3, 0x66, 0x4c, 0xd9, 0xe9, 0x2b, 0xc7, 0xf3, 0x64, + 0x98, 0x74, 0xc7, 0x6d, 0x62, 0x8f, 0x9f, 0x3b, 0xb8, 0x3a, 0xf4, 0x37, 0xf4, 0x13, 0xf6, 0xc0, + 0x9e, 0x44, 0x46, 0x67, 0xde, 0x27, 0xe8, 0x81, 0xe3, 0x0a, 0x4f, 0x1f, 0x8f, 0x77, 0x50, 0x3c, + 0x48, 0x7b, 0x40, 0xaf, 0x97, 0x41, 0x5e, 0xc6, 0xce, 0xb8, 0xad, 0xc8, 0xb7, 0x0a, 0x87, 0x38, + 0xe2, 0x04, 0x46, 0x78, 0x9e, 0x5f, 0xc6, 0xa3, 0x69, 0x40, 0x62, 0xb1, 0x8d, 0x84, 0x18, 0x48, + 0x1f, 0xb5, 0xf7, 0x50, 0xd4, 0xe8, 0xe6, 0xc2, 0x2f, 0x8c, 0xa0, 0x57, 0x1d, 0xef, 0xc2, 0x87, + 0x27, 0x40, 0x42, 0xe3, 0xb0, 0xda, 0x5b, 0xbf, 0xc2, 0xc7, 0x72, 0x15, 0x1f, 0xb8, 0x8d, 0x7d, + 0x1b, 0xb7, 0x2e, 0xe0, 0x36, 0xfa, 0xd9, 0x83, 0x43, 0x77, 0x0a, 0x26, 0x5a, 0x94, 0x1a, 0x01, + 0x6f, 0x52, 0xf5, 0x5e, 0x13, 0xdc, 0x2b, 0xcd, 0x77, 0x44, 0xf4, 0xf7, 0x31, 0xde, 0x2b, 0x2d, + 0x50, 0xfc, 0x18, 0xcc, 0x16, 0x3a, 0xcb, 0xa8, 0xb4, 0x4c, 0x03, 0xfd, 0x97, 0x83, 0xc3, 0x72, + 0x15, 0x4c, 0xe9, 0x2d, 0xd3, 0x20, 0x61, 0x28, 0xbc, 0x43, 0x40, 0x7e, 0x82, 0xf7, 0xb5, 0xbc, + 0x63, 0xde, 0xaf, 0xb3, 0x5d, 0xf3, 0x20, 0x61, 0x58, 0x63, 0xc2, 0x65, 0xfd, 0xb0, 0x8c, 0x89, + 0x3e, 0x65, 0xa7, 0x0f, 0xd9, 0xc7, 0x02, 0xef, 0x36, 0xda, 0x15, 0x3e, 0x2c, 0x56, 0x81, 0x87, + 0x19, 0xce, 0xc2, 0xb5, 0x38, 0x94, 0xe1, 0x2c, 0x86, 0x81, 0x31, 0xdc, 0x58, 0x11, 0xe0, 0x98, + 0xfa, 0x1a, 0xf0, 0x01, 0xd0, 0x19, 0x9d, 0x79, 0x38, 0x24, 0x3a, 0x87, 0x63, 0x22, 0xbe, 0x9f, + 0x85, 0xc8, 0x64, 0x16, 0x0f, 0xfa, 0xaf, 0xa3, 0x00, 0xe7, 0xf6, 0x61, 0xfc, 0x15, 0xa8, 0xb7, + 0x42, 0x82, 0x1b, 0xb1, 0xf7, 0x49, 0xd0, 0xa5, 0x32, 0xc6, 0xbb, 0xe2, 0x45, 0xca, 0x4f, 0x1f, + 0xc0, 0xe7, 0xca, 0x30, 0x47, 0x7c, 0x04, 0x3a, 0x58, 0xb3, 0x68, 0x47, 0x39, 0x12, 0x47, 0xf9, + 0x77, 0x08, 0x07, 0xf8, 0xe1, 0xe5, 0x10, 0xf0, 0x31, 0x12, 0x28, 0xc4, 0xa2, 0xfb, 0x08, 0xb2, + 0x30, 0x96, 0x6d, 0x94, 0x82, 0xcf, 0x02, 0x53, 0xf1, 0xd1, 0xe0, 0x91, 0xd0, 0x23, 0x97, 0x17, + 0x86, 0xd7, 0xd8, 0xc6, 0xec, 0x91, 0x2b, 0xc2, 0x44, 0xfa, 0x98, 0xbc, 0xfe, 0x16, 0xb6, 0xe0, + 0xdc, 0x20, 0x17, 0xc6, 0xbf, 0x32, 0xeb, 0x9f, 0x68, 0xfb, 0xec, 0x48, 0x3c, 0x30, 0x0f, 0x10, + 0x10, 0x5f, 0x81, 0xac, 0x65, 0x5e, 0xa4, 0x4b, 0x5b, 0xb3, 0x2a, 0x79, 0xa6, 0xd7, 0x53, 0x76, + 0x76, 0x77, 0x0c, 0x7a, 0x32, 0x74, 0x56, 0xf5, 0x5e, 0x95, 0xeb, 0x60, 0xf6, 0xa2, 0xee, 0x6c, + 0xaf, 0x60, 0xad, 0x8d, 0x2d, 0xd5, 0xbc, 0x48, 0x3c, 0xe6, 0x26, 0x55, 0x3e, 0x91, 0xf7, 0x5f, + 0x11, 0xb0, 0x2f, 0xc9, 0x2d, 0xf2, 0x63, 0x39, 0xfe, 0x96, 0xc4, 0xf2, 0x8c, 0xe6, 0x2a, 0x7d, + 0x85, 0x79, 0xaf, 0x0c, 0x53, 0xaa, 0x79, 0x91, 0x29, 0xc9, 0xff, 0x71, 0xb8, 0x3a, 0x92, 0x78, + 0xa2, 0x47, 0x24, 0xe7, 0xb3, 0x3f, 0xf6, 0x89, 0x5e, 0x6c, 0xf1, 0x63, 0x39, 0xb9, 0x34, 0xa3, + 0x9a, 0x17, 0xeb, 0xd8, 0xa1, 0x2d, 0x02, 0x35, 0x47, 0xe4, 0x64, 0xad, 0xdb, 0x94, 0x20, 0x9b, + 0x87, 0xfb, 0xef, 0x49, 0x77, 0x11, 0x7c, 0x01, 0xf9, 0x2c, 0x8e, 0x7b, 0x17, 0x61, 0x20, 0x07, + 0x63, 0x88, 0x91, 0x22, 0xc3, 0xb4, 0x6a, 0x5e, 0x74, 0x87, 0x86, 0x25, 0xbd, 0xd3, 0x19, 0xcd, + 0x08, 0x99, 0xd4, 0xf8, 0xf7, 0xc4, 0xe0, 0x71, 0x31, 0x76, 0xe3, 0x7f, 0x00, 0x03, 0xe9, 0xc3, + 0xf0, 0x2c, 0xda, 0x58, 0xbc, 0x11, 0xda, 0x18, 0x0d, 0x0e, 0xc3, 0x36, 0x08, 0x9f, 0x8d, 0x43, + 0x6b, 0x10, 0x51, 0x1c, 0x8c, 0x65, 0xe7, 0x64, 0xae, 0x44, 0x86, 0xf9, 0xd1, 0xb6, 0x89, 0x77, + 0x25, 0x73, 0x4d, 0x64, 0xc3, 0x2e, 0xc7, 0xc8, 0x48, 0xd0, 0x48, 0xe0, 0x82, 0x28, 0xc0, 0x43, + 0xfa, 0x78, 0x7c, 0x58, 0x86, 0x19, 0xca, 0xc2, 0xc3, 0xc4, 0x0a, 0x18, 0xaa, 0x51, 0x85, 0x6b, + 0x70, 0x38, 0x8d, 0x2a, 0x86, 0x83, 0xb1, 0xdc, 0x0a, 0xea, 0xda, 0x71, 0x43, 0x1c, 0x1f, 0x8f, + 0x42, 0x70, 0x68, 0x63, 0x6c, 0x84, 0x47, 0xc8, 0x87, 0x31, 0xc6, 0x0e, 0xe9, 0x18, 0xf9, 0xb3, + 0xfc, 0x56, 0x34, 0x4a, 0x0c, 0x0e, 0xd0, 0x14, 0x46, 0x08, 0xc3, 0x90, 0x4d, 0xe1, 0x90, 0x90, + 0xf8, 0x9a, 0x0c, 0x40, 0x19, 0x58, 0x33, 0xf7, 0xc8, 0x65, 0x3e, 0x23, 0xe8, 0xce, 0x7a, 0xdd, + 0xea, 0xe5, 0x01, 0x6e, 0xf5, 0x09, 0x43, 0xb8, 0x24, 0x5d, 0x09, 0x0c, 0x49, 0xd9, 0xad, 0xe4, + 0xd8, 0x57, 0x02, 0xe3, 0xcb, 0x4f, 0x1f, 0xe3, 0xaf, 0x50, 0x6b, 0x2e, 0x38, 0x60, 0xfa, 0x5b, + 0x23, 0x41, 0x39, 0x34, 0xfb, 0x97, 0xf9, 0xd9, 0xff, 0x01, 0xb0, 0x1d, 0xd6, 0x46, 0x1c, 0x74, + 0x70, 0x34, 0x7d, 0x1b, 0xf1, 0xf0, 0x0e, 0x88, 0xfe, 0x42, 0x16, 0x8e, 0xb2, 0x4e, 0xe4, 0x47, + 0x01, 0xe2, 0x84, 0xe7, 0xf0, 0xb8, 0x4e, 0x72, 0x00, 0xca, 0xa3, 0x5a, 0x90, 0x4a, 0xb2, 0x94, + 0x29, 0xc0, 0xde, 0x58, 0x56, 0x37, 0xf2, 0xe5, 0x07, 0xba, 0x9a, 0xd1, 0x16, 0x0f, 0xf7, 0x3b, + 0x00, 0x78, 0x6f, 0xad, 0x51, 0xe6, 0xd7, 0x1a, 0xfb, 0xac, 0x4c, 0x26, 0xde, 0xb9, 0x26, 0x22, + 0xa3, 0xec, 0x8e, 0x7d, 0xe7, 0x3a, 0xba, 0xec, 0xf4, 0x51, 0x7a, 0x97, 0x0c, 0xd9, 0xba, 0x69, + 0x39, 0xe8, 0xd9, 0x49, 0x5a, 0x27, 0x95, 0x7c, 0x00, 0x92, 0xf7, 0xae, 0x94, 0xb8, 0x5b, 0x9a, + 0x6f, 0x8e, 0x3f, 0xea, 0xac, 0x39, 0x1a, 0xf1, 0xea, 0x76, 0xcb, 0x0f, 0x5d, 0xd7, 0x9c, 0x34, + 0x9e, 0x0e, 0x95, 0x5f, 0x3d, 0xfa, 0x00, 0x46, 0x6a, 0xf1, 0x74, 0x22, 0x4b, 0x4e, 0x1f, 0xb7, + 0xd7, 0x1c, 0x65, 0xbe, 0xad, 0x4b, 0x7a, 0x07, 0xa3, 0x67, 0x53, 0x97, 0x91, 0xaa, 0xb6, 0x83, + 0xc5, 0x8f, 0xc4, 0xc4, 0xba, 0xb6, 0x92, 0xf8, 0xb2, 0x72, 0x10, 0x5f, 0x36, 0x69, 0x83, 0xa2, + 0x07, 0xd0, 0x29, 0x4b, 0xe3, 0x6e, 0x50, 0x31, 0x65, 0x8f, 0x25, 0x4e, 0xe7, 0xb1, 0x3a, 0x76, + 0xa8, 0x51, 0x59, 0xf3, 0x6e, 0x60, 0xf9, 0xb9, 0x91, 0x44, 0xec, 0xf4, 0x2f, 0x78, 0x91, 0x7b, + 0x2e, 0x78, 0x79, 0x6f, 0x18, 0x9c, 0x35, 0x1e, 0x9c, 0x9f, 0x8e, 0x16, 0x10, 0xcf, 0xe4, 0x48, + 0x60, 0x7a, 0xab, 0x0f, 0xd3, 0x3a, 0x07, 0xd3, 0x1d, 0x43, 0x72, 0x91, 0x3e, 0x60, 0xbf, 0x9a, + 0x83, 0xa3, 0x74, 0xd2, 0x5f, 0x34, 0xda, 0x2c, 0xc2, 0xea, 0x9b, 0xa4, 0x43, 0xde, 0x6c, 0xdb, + 0x1f, 0x82, 0x95, 0x8b, 0xe5, 0x9c, 0xeb, 0xbd, 0x1d, 0x7f, 0x81, 0x86, 0x73, 0x75, 0x3b, 0x51, + 0xb2, 0xd3, 0x26, 0x7e, 0x43, 0xbe, 0xff, 0x1f, 0x7f, 0x97, 0xd1, 0x84, 0xf8, 0x5d, 0x46, 0x7f, + 0x9a, 0x6c, 0xdd, 0x8e, 0x14, 0xdd, 0x23, 0xf0, 0x94, 0x6d, 0xa7, 0x04, 0x2b, 0x7a, 0x02, 0xdc, + 0xfd, 0x78, 0xb8, 0x93, 0x05, 0x11, 0x44, 0x86, 0x74, 0x27, 0x23, 0x04, 0x0e, 0xd3, 0x9d, 0x6c, + 0x10, 0x03, 0x63, 0xb8, 0xd5, 0x3e, 0xc7, 0x76, 0xf3, 0x49, 0xbb, 0x41, 0x7f, 0x25, 0xa5, 0x3e, + 0x4a, 0x7f, 0x3f, 0x93, 0xc8, 0xff, 0x99, 0xf0, 0x15, 0x3f, 0x4c, 0x27, 0xf1, 0x68, 0x8e, 0x23, + 0x37, 0x86, 0x75, 0x23, 0x89, 0xf8, 0xa2, 0x9f, 0xd3, 0xdb, 0xce, 0xf6, 0x88, 0x4e, 0x74, 0x5c, + 0x74, 0x69, 0x79, 0xd7, 0x23, 0x93, 0x17, 0xf4, 0x6f, 0x99, 0x44, 0x21, 0xa4, 0x7c, 0x91, 0x10, + 0xb6, 0x22, 0x44, 0x9c, 0x20, 0xf0, 0x53, 0x2c, 0xbd, 0x31, 0x6a, 0xf4, 0x59, 0xbd, 0x8d, 0xcd, + 0x87, 0xa1, 0x46, 0x13, 0xbe, 0x46, 0xa7, 0xd1, 0x71, 0xe4, 0x7e, 0x4c, 0x35, 0xda, 0x17, 0xc9, + 0x88, 0x34, 0x3a, 0x96, 0x5e, 0xfa, 0x32, 0x7e, 0xf9, 0x0c, 0x9b, 0x48, 0xad, 0xea, 0xc6, 0x05, + 0xf4, 0xcf, 0x79, 0xef, 0x62, 0xe6, 0x73, 0xba, 0xb3, 0xcd, 0x62, 0xc1, 0xfc, 0x81, 0xf0, 0xdd, + 0x28, 0x43, 0xc4, 0x7b, 0xe1, 0xc3, 0x49, 0xe5, 0xf6, 0x85, 0x93, 0x2a, 0xc2, 0xac, 0x6e, 0x38, + 0xd8, 0x32, 0xb4, 0xce, 0x52, 0x47, 0xdb, 0xb2, 0x4f, 0x4d, 0xf4, 0xbd, 0xbc, 0xae, 0x12, 0xca, + 0xa3, 0xf2, 0x7f, 0x84, 0xaf, 0xaf, 0x9c, 0xe4, 0xaf, 0xaf, 0x8c, 0x88, 0x7e, 0x35, 0x15, 0x1d, + 0xfd, 0xca, 0x8f, 0x6e, 0x05, 0x83, 0x83, 0x63, 0x8b, 0xda, 0xc6, 0x09, 0xc3, 0xfd, 0xdd, 0x2c, + 0x18, 0x85, 0xcd, 0x0f, 0xfd, 0xf8, 0x2a, 0x39, 0xd1, 0xea, 0x9e, 0xab, 0x08, 0xf3, 0xbd, 0x4a, + 0x90, 0xd8, 0x42, 0x0d, 0x57, 0x5e, 0xee, 0xa9, 0xbc, 0x6f, 0xf2, 0x64, 0x05, 0x4c, 0x9e, 0xb0, + 0x52, 0xe5, 0xc4, 0x94, 0x2a, 0xc9, 0x62, 0xa1, 0x48, 0x6d, 0xc7, 0x70, 0x1a, 0x29, 0x07, 0xc7, + 0xbc, 0x68, 0xb7, 0xdd, 0x2e, 0xd6, 0x2c, 0xcd, 0x68, 0x61, 0xf4, 0x31, 0x69, 0x14, 0x66, 0xef, + 0x12, 0x4c, 0xea, 0x2d, 0xd3, 0xa8, 0xeb, 0x4f, 0xf3, 0x2e, 0x97, 0x8b, 0x0f, 0xb2, 0x4e, 0x24, + 0x52, 0x61, 0x7f, 0xa8, 0xfe, 0xbf, 0x4a, 0x05, 0xa6, 0x5a, 0x9a, 0xd5, 0xa6, 0x41, 0xf8, 0x72, + 0x3d, 0x17, 0x39, 0x45, 0x12, 0x2a, 0x79, 0xbf, 0xa8, 0xc1, 0xdf, 0x4a, 0x8d, 0x17, 0x62, 0xbe, + 0x27, 0x9a, 0x47, 0x24, 0xb1, 0xc5, 0xe0, 0x27, 0x4e, 0xe6, 0xae, 0x74, 0x2c, 0xdc, 0x21, 0x77, + 0xd0, 0xd3, 0x1e, 0x62, 0x4a, 0x0d, 0x12, 0x92, 0x2e, 0x0f, 0x90, 0xa2, 0xf6, 0xa1, 0x31, 0xee, + 0xe5, 0x01, 0x21, 0x2e, 0xd2, 0xd7, 0xcc, 0xb7, 0xe7, 0x61, 0x96, 0xf6, 0x6a, 0x4c, 0x9c, 0xe8, + 0xb9, 0xe4, 0x0a, 0x69, 0xe7, 0x5e, 0x7c, 0x09, 0xd5, 0x0f, 0x3e, 0x26, 0x17, 0x40, 0xbe, 0xe0, + 0x07, 0x1c, 0x74, 0x1f, 0x93, 0xee, 0xdb, 0x7b, 0x7c, 0xcd, 0x53, 0x9e, 0xc6, 0xbd, 0x6f, 0x1f, + 0x5f, 0x7c, 0xfa, 0xf8, 0xfc, 0x9a, 0x0c, 0x72, 0xb1, 0xdd, 0x46, 0xad, 0x83, 0x43, 0x71, 0x0d, + 0x4c, 0x7b, 0x6d, 0x26, 0x88, 0x01, 0x19, 0x4e, 0x4a, 0xba, 0x08, 0xea, 0xcb, 0xa6, 0xd8, 0x1e, + 0xfb, 0xae, 0x42, 0x4c, 0xd9, 0xe9, 0x83, 0xf2, 0x5b, 0x13, 0xac, 0xd1, 0x2c, 0x98, 0xe6, 0x05, + 0x72, 0x54, 0xe6, 0xd9, 0x32, 0xe4, 0x96, 0xb0, 0xd3, 0xda, 0x1e, 0x51, 0x9b, 0xd9, 0xb5, 0x3a, + 0x5e, 0x9b, 0xd9, 0x77, 0x1f, 0xfe, 0x60, 0x1b, 0xd6, 0x63, 0x6b, 0x9e, 0xb0, 0x34, 0xee, 0xe8, + 0xce, 0xb1, 0xa5, 0xa7, 0x0f, 0xce, 0xbf, 0xc9, 0x30, 0xe7, 0xaf, 0x70, 0x51, 0x4c, 0x7e, 0x35, + 0xf3, 0x70, 0x5b, 0xef, 0x44, 0x9f, 0x4f, 0x16, 0x22, 0xcd, 0x97, 0x29, 0x5f, 0xb3, 0x94, 0x17, + 0x16, 0x13, 0x04, 0x4f, 0x13, 0x63, 0x70, 0x0c, 0x33, 0x78, 0x19, 0x26, 0x09, 0x43, 0x8b, 0xfa, + 0x1e, 0x71, 0x1d, 0xe4, 0x16, 0x1a, 0x9f, 0x3e, 0x92, 0x85, 0xc6, 0x3b, 0xf8, 0x85, 0x46, 0xc1, + 0x88, 0xc7, 0xde, 0x3a, 0x63, 0x42, 0x5f, 0x1a, 0xf7, 0xff, 0x91, 0x2f, 0x33, 0x26, 0xf0, 0xa5, + 0x19, 0x50, 0x7e, 0xfa, 0x88, 0xbe, 0xea, 0x3f, 0xb1, 0xce, 0xd6, 0xdb, 0x50, 0x45, 0xff, 0xf3, + 0x18, 0x64, 0xcf, 0xba, 0x0f, 0xff, 0x3b, 0xb8, 0x11, 0xeb, 0xc5, 0x23, 0x08, 0xce, 0xf0, 0x64, + 0xc8, 0xba, 0xf4, 0xd9, 0xb4, 0xe5, 0x46, 0xb1, 0xdd, 0x5d, 0x97, 0x11, 0x95, 0xfc, 0xa7, 0x9c, + 0x84, 0xbc, 0x6d, 0xee, 0x5a, 0x2d, 0xd7, 0x7c, 0x76, 0x35, 0x86, 0xbd, 0x25, 0x0d, 0x4a, 0xca, + 0x91, 0x9e, 0x1f, 0x9d, 0xcb, 0x68, 0xe8, 0x82, 0x24, 0x99, 0xbb, 0x20, 0x29, 0xc1, 0xfe, 0x81, + 0x00, 0x6f, 0xe9, 0x6b, 0xc4, 0x5f, 0x91, 0xbb, 0x02, 0xdb, 0xa3, 0x82, 0x3d, 0x42, 0x2c, 0x07, + 0x55, 0x87, 0xa4, 0x0e, 0xdf, 0xbc, 0x68, 0xfd, 0x38, 0xf0, 0x63, 0x75, 0xf8, 0x16, 0xe0, 0x61, + 0x2c, 0xa7, 0xd4, 0xf3, 0xcc, 0x49, 0xf5, 0xbe, 0x51, 0xa2, 0x9b, 0xe5, 0x94, 0xfe, 0x40, 0xe8, + 0x8c, 0xd0, 0x79, 0x75, 0x68, 0x74, 0x0e, 0xc9, 0x7d, 0xf5, 0x0f, 0x65, 0x12, 0x09, 0xd3, 0x33, + 0x72, 0xc4, 0x2f, 0x3a, 0x4a, 0x0c, 0x91, 0x3b, 0x06, 0x73, 0x71, 0xa0, 0x67, 0x87, 0x0f, 0x0d, + 0xce, 0x8b, 0x2e, 0xc4, 0xff, 0xb8, 0x43, 0x83, 0x8b, 0x32, 0x92, 0x3e, 0x90, 0xaf, 0xa3, 0x17, + 0x8b, 0x15, 0x5b, 0x8e, 0xbe, 0x37, 0xe2, 0x96, 0xc6, 0x0f, 0x2f, 0x09, 0xa3, 0x01, 0xef, 0x93, + 0x10, 0xe5, 0x70, 0xdc, 0xd1, 0x80, 0xc5, 0xd8, 0x48, 0x1f, 0xa6, 0xbf, 0xcd, 0xbb, 0xd2, 0x63, + 0x6b, 0x33, 0xaf, 0x67, 0xab, 0x01, 0xf8, 0xe0, 0x68, 0x9d, 0x81, 0x99, 0xd0, 0xd4, 0xdf, 0xbb, + 0xb0, 0x86, 0x4b, 0x4b, 0x7a, 0xd0, 0xdd, 0x17, 0xd9, 0xc8, 0x17, 0x06, 0x12, 0x2c, 0xf8, 0x8a, + 0x30, 0x31, 0x96, 0xfb, 0xe0, 0xbc, 0x31, 0x6c, 0x4c, 0x58, 0xfd, 0x41, 0x18, 0xab, 0x1a, 0x8f, + 0xd5, 0x6d, 0x22, 0x62, 0x12, 0x1b, 0xd3, 0x84, 0xe6, 0x8d, 0x6f, 0xf3, 0xe1, 0x52, 0x39, 0xb8, + 0x9e, 0x3c, 0x34, 0x1f, 0xe9, 0x23, 0xf6, 0x12, 0xda, 0x1d, 0xd6, 0xa9, 0xc9, 0x3e, 0x9a, 0xee, + 0x90, 0xcd, 0x06, 0x64, 0x6e, 0x36, 0x90, 0xd0, 0xdf, 0x3e, 0x70, 0x23, 0xf5, 0x98, 0x1b, 0x04, + 0x51, 0x76, 0xc4, 0xfe, 0xf6, 0x03, 0x39, 0x48, 0x1f, 0x9c, 0x7f, 0x94, 0x01, 0x96, 0x2d, 0x73, + 0xb7, 0x5b, 0xb3, 0xda, 0xd8, 0x42, 0x7f, 0x13, 0x4c, 0x00, 0x5e, 0x38, 0x82, 0x09, 0xc0, 0x3a, + 0xc0, 0x96, 0x4f, 0x9c, 0x69, 0xf8, 0x2d, 0x62, 0xe6, 0x7e, 0xc0, 0x94, 0x1a, 0xa2, 0xc1, 0x5f, + 0x39, 0xfb, 0x14, 0x1e, 0xe3, 0xb8, 0x3e, 0x2b, 0x20, 0x37, 0xca, 0x09, 0xc0, 0x3b, 0x7c, 0xac, + 0x1b, 0x1c, 0xd6, 0x77, 0x1f, 0x80, 0x93, 0xf4, 0x31, 0xff, 0xa7, 0x09, 0x98, 0xa6, 0xdb, 0x75, + 0x54, 0xa6, 0x7f, 0x1f, 0x80, 0xfe, 0x5b, 0x23, 0x00, 0x7d, 0x03, 0x66, 0xcc, 0x80, 0x3a, 0xed, + 0x53, 0xc3, 0x0b, 0x30, 0xb1, 0xb0, 0x87, 0xf8, 0x52, 0x39, 0x32, 0xe8, 0x23, 0x61, 0xe4, 0x55, + 0x1e, 0xf9, 0x3b, 0x62, 0xe4, 0x1d, 0xa2, 0x38, 0x4a, 0xe8, 0xdf, 0xe9, 0x43, 0xbf, 0xc1, 0x41, + 0x5f, 0x3c, 0x08, 0x2b, 0x63, 0x08, 0xb7, 0x2f, 0x43, 0x96, 0x9c, 0x8e, 0xfb, 0xed, 0x14, 0xe7, + 0xf7, 0xa7, 0x60, 0x82, 0x34, 0x59, 0x7f, 0xde, 0xe1, 0xbd, 0xba, 0x5f, 0xb4, 0x4d, 0x07, 0x5b, + 0xbe, 0xc7, 0x82, 0xf7, 0xea, 0xf2, 0xe0, 0x79, 0x25, 0xdb, 0xa7, 0xf2, 0x74, 0x23, 0xd2, 0x4f, + 0x18, 0x7a, 0x52, 0x12, 0x96, 0xf8, 0xc8, 0xce, 0xcb, 0x0d, 0x33, 0x29, 0x19, 0xc0, 0x48, 0xfa, + 0xc0, 0xff, 0x45, 0x16, 0x4e, 0xd1, 0x55, 0xa5, 0x25, 0xcb, 0xdc, 0xe9, 0xb9, 0xdd, 0x4a, 0x3f, + 0xb8, 0x2e, 0x5c, 0x0f, 0x73, 0x0e, 0xe7, 0x8f, 0xcd, 0x74, 0xa2, 0x27, 0x15, 0xfd, 0x59, 0xd8, + 0xa7, 0xe2, 0xa9, 0x3c, 0x92, 0x0b, 0x31, 0x02, 0x8c, 0xe2, 0x3d, 0xf1, 0x42, 0xbd, 0x20, 0xa3, + 0xa1, 0x45, 0x2a, 0x79, 0xa8, 0x35, 0x4b, 0x5f, 0xa7, 0x72, 0x22, 0x3a, 0xf5, 0x3e, 0x5f, 0xa7, + 0x7e, 0x96, 0xd3, 0xa9, 0xe5, 0x83, 0x8b, 0x24, 0x7d, 0xdd, 0x7a, 0xa5, 0xbf, 0x31, 0xe4, 0x6f, + 0xdb, 0xed, 0xa4, 0xb0, 0x59, 0x17, 0xf6, 0x47, 0xca, 0x72, 0xfe, 0x48, 0xfc, 0x7d, 0x14, 0x09, + 0x66, 0xc2, 0x3c, 0xd7, 0x11, 0xba, 0x34, 0x07, 0x92, 0xee, 0x71, 0x27, 0xe9, 0xed, 0xa1, 0xe6, + 0xba, 0xb1, 0x05, 0x8d, 0x61, 0x6d, 0x69, 0x0e, 0xf2, 0x4b, 0x7a, 0xc7, 0xc1, 0x16, 0xfa, 0x0a, + 0x9b, 0xe9, 0xbe, 0x32, 0xc5, 0x01, 0x60, 0x11, 0xf2, 0x9b, 0xa4, 0x34, 0x66, 0x32, 0xdf, 0x24, + 0xd6, 0x7a, 0x28, 0x87, 0x2a, 0xfb, 0x37, 0x69, 0x74, 0xbe, 0x1e, 0x32, 0x23, 0x9b, 0x22, 0x27, + 0x88, 0xce, 0x37, 0x98, 0x85, 0xb1, 0x5c, 0x4c, 0x95, 0x57, 0xf1, 0x8e, 0x3b, 0xc6, 0x5f, 0x48, + 0x0f, 0xe1, 0x02, 0xc8, 0x7a, 0xdb, 0x26, 0x9d, 0xe3, 0x94, 0xea, 0x3e, 0x26, 0xf5, 0x15, 0xea, + 0x15, 0x15, 0x65, 0x79, 0xdc, 0xbe, 0x42, 0x42, 0x5c, 0xa4, 0x8f, 0xd9, 0xf7, 0x89, 0xa3, 0x68, + 0xb7, 0xa3, 0xb5, 0xb0, 0xcb, 0x7d, 0x6a, 0xa8, 0xd1, 0x9e, 0x2c, 0xeb, 0xf5, 0x64, 0xa1, 0x76, + 0x9a, 0x3b, 0x40, 0x3b, 0x1d, 0x76, 0x19, 0xd2, 0x97, 0x39, 0xa9, 0xf8, 0xa1, 0x2d, 0x43, 0xc6, + 0xb2, 0x31, 0x86, 0x6b, 0x47, 0xbd, 0x83, 0xb4, 0x63, 0x6d, 0xad, 0xc3, 0x6e, 0xd2, 0x30, 0x61, + 0x8d, 0xec, 0xd0, 0xec, 0x30, 0x9b, 0x34, 0xd1, 0x3c, 0x8c, 0x01, 0xad, 0x39, 0x86, 0xd6, 0xe7, + 0xd8, 0x30, 0x9a, 0xf2, 0x3e, 0xa9, 0x6d, 0x5a, 0x4e, 0xb2, 0x7d, 0x52, 0x97, 0x3b, 0x95, 0xfc, + 0x97, 0xf4, 0xe0, 0x15, 0x7f, 0xae, 0x7a, 0x54, 0xc3, 0x67, 0x82, 0x83, 0x57, 0x83, 0x18, 0x48, + 0x1f, 0xde, 0x37, 0x1f, 0xd2, 0xe0, 0x39, 0x6c, 0x73, 0x64, 0x6d, 0x60, 0x64, 0x43, 0xe7, 0x30, + 0xcd, 0x31, 0x9a, 0x87, 0xf4, 0xf1, 0xfa, 0x4e, 0x68, 0xe0, 0x7c, 0xe3, 0x18, 0x07, 0x4e, 0xaf, + 0x65, 0xe6, 0x86, 0x6c, 0x99, 0xc3, 0xee, 0xff, 0x30, 0x59, 0x8f, 0x6e, 0xc0, 0x1c, 0x66, 0xff, + 0x27, 0x86, 0x89, 0xf4, 0x11, 0x7f, 0x93, 0x0c, 0xb9, 0xfa, 0xf8, 0xc7, 0xcb, 0x61, 0xe7, 0x22, + 0x44, 0x56, 0xf5, 0x91, 0x0d, 0x97, 0xc3, 0xcc, 0x45, 0x22, 0x59, 0x18, 0x43, 0xe0, 0xfd, 0xa3, + 0x30, 0x43, 0x96, 0x44, 0xbc, 0x6d, 0xd6, 0xef, 0xb0, 0x51, 0xf3, 0xa1, 0x14, 0xdb, 0xea, 0x3d, + 0x30, 0xe9, 0xed, 0xdf, 0xb1, 0x91, 0x73, 0x5e, 0xac, 0x7d, 0x7a, 0x5c, 0xaa, 0xfe, 0xff, 0x07, + 0x72, 0x86, 0x18, 0xf9, 0x5e, 0xed, 0xb0, 0xce, 0x10, 0x87, 0xba, 0x5f, 0xfb, 0xa7, 0xc1, 0x88, + 0xfa, 0x5f, 0xd2, 0xc3, 0xbc, 0x77, 0x1f, 0x37, 0xdb, 0x67, 0x1f, 0xf7, 0x63, 0x61, 0x2c, 0xeb, + 0x3c, 0x96, 0x77, 0x8a, 0x8a, 0x70, 0x84, 0x63, 0xed, 0xbb, 0x7c, 0x38, 0xcf, 0x72, 0x70, 0x2e, + 0x1c, 0x88, 0x97, 0x31, 0x1c, 0x7c, 0xcc, 0x06, 0x63, 0xee, 0xc7, 0x53, 0x6c, 0xc7, 0x3d, 0xa7, + 0x2a, 0xb2, 0xfb, 0x4e, 0x55, 0x70, 0x2d, 0x3d, 0x77, 0xc0, 0x96, 0xfe, 0xf1, 0xb0, 0x76, 0x34, + 0x78, 0xed, 0x78, 0xb2, 0x38, 0x22, 0xa3, 0x1b, 0x99, 0xdf, 0xed, 0xab, 0xc7, 0x39, 0x4e, 0x3d, + 0x4a, 0x07, 0x63, 0x26, 0x7d, 0xfd, 0xf8, 0x23, 0x6f, 0x42, 0x7b, 0xc8, 0xed, 0x7d, 0xd8, 0xad, + 0x62, 0x4e, 0x88, 0x23, 0x1b, 0xb9, 0x87, 0xd9, 0x2a, 0x1e, 0xc4, 0xc9, 0x18, 0x62, 0xb1, 0xcd, + 0xc2, 0x34, 0xe1, 0xe9, 0x9c, 0xde, 0xde, 0xc2, 0x0e, 0x7a, 0x15, 0xf5, 0x51, 0xf4, 0x22, 0x5f, + 0x8e, 0x28, 0x3c, 0x51, 0xd4, 0x79, 0xd7, 0xa4, 0x1e, 0x1d, 0x94, 0xc9, 0xf9, 0x10, 0x83, 0xe3, + 0x8e, 0xa0, 0x38, 0x90, 0x83, 0xf4, 0x21, 0xfb, 0x08, 0x75, 0xb7, 0x59, 0xd5, 0x2e, 0x99, 0xbb, + 0x0e, 0x7a, 0x70, 0x04, 0x1d, 0xf4, 0x02, 0xe4, 0x3b, 0x84, 0x1a, 0x3b, 0x96, 0x11, 0x3f, 0xdd, + 0x61, 0x22, 0xa0, 0xe5, 0xab, 0xec, 0xcf, 0xa4, 0x67, 0x33, 0x02, 0x39, 0x52, 0x3a, 0xe3, 0x3e, + 0x9b, 0x31, 0xa0, 0xfc, 0xb1, 0xdc, 0xb1, 0x33, 0xe9, 0x96, 0xae, 0xef, 0xe8, 0xce, 0x88, 0x22, + 0x38, 0x74, 0x5c, 0x5a, 0x5e, 0x04, 0x07, 0xf2, 0x92, 0xf4, 0xc4, 0x68, 0x48, 0x2a, 0xee, 0xef, + 0xe3, 0x3e, 0x31, 0x1a, 0x5f, 0x7c, 0xfa, 0x98, 0xfc, 0x06, 0x6d, 0x59, 0x67, 0xa9, 0xf3, 0x6d, + 0x8a, 0x7e, 0xbd, 0x43, 0x37, 0x16, 0xca, 0xda, 0xe1, 0x35, 0x96, 0xbe, 0xe5, 0xa7, 0x0f, 0xcc, + 0x7f, 0xff, 0x49, 0xc8, 0x2d, 0xe2, 0xf3, 0xbb, 0x5b, 0xe8, 0x0e, 0x98, 0x6c, 0x58, 0x18, 0x57, + 0x8c, 0x4d, 0xd3, 0x95, 0xae, 0xe3, 0x3e, 0x7b, 0x90, 0xb0, 0x37, 0x17, 0x8f, 0x6d, 0xac, 0xb5, + 0x83, 0xf3, 0x67, 0xde, 0x2b, 0x7a, 0xb1, 0x04, 0xd9, 0xba, 0xa3, 0x39, 0x68, 0xca, 0xc7, 0x16, + 0x3d, 0x18, 0xc6, 0xe2, 0x0e, 0x1e, 0x8b, 0xeb, 0x39, 0x59, 0x10, 0x0e, 0xe6, 0xdd, 0xff, 0x23, + 0x00, 0x40, 0x30, 0x79, 0xbf, 0x6d, 0x1a, 0x6e, 0x0e, 0xef, 0x08, 0xa4, 0xf7, 0x8e, 0x5e, 0xe1, + 0x8b, 0xfb, 0x2e, 0x4e, 0xdc, 0x8f, 0x16, 0x2b, 0x62, 0x0c, 0x2b, 0x6d, 0x12, 0x4c, 0xb9, 0xa2, + 0x5d, 0xc1, 0x5a, 0xdb, 0x46, 0x3f, 0x11, 0x28, 0x7f, 0x84, 0x98, 0xd1, 0xfb, 0x85, 0x83, 0x71, + 0xd2, 0x5a, 0xf9, 0xc4, 0xa3, 0x3d, 0x3a, 0xbc, 0xcd, 0x7f, 0x89, 0x0f, 0x46, 0x72, 0x33, 0x64, + 0x75, 0x63, 0xd3, 0x64, 0xfe, 0x85, 0x57, 0x46, 0xd0, 0x76, 0x75, 0x42, 0x25, 0x19, 0x05, 0x23, + 0x75, 0xc6, 0xb3, 0x35, 0x96, 0x4b, 0xef, 0xb2, 0x6e, 0xe9, 0xe8, 0xff, 0x3f, 0x50, 0xd8, 0x8a, + 0x02, 0xd9, 0xae, 0xe6, 0x6c, 0xb3, 0xa2, 0xc9, 0xb3, 0x6b, 0x23, 0xef, 0x1a, 0x9a, 0x61, 0x1a, + 0x97, 0x76, 0xf4, 0xa7, 0xf9, 0x77, 0xeb, 0x72, 0x69, 0x2e, 0xe7, 0x5b, 0xd8, 0xc0, 0x96, 0xe6, + 0xe0, 0xfa, 0xde, 0x16, 0x99, 0x63, 0x4d, 0xaa, 0xe1, 0xa4, 0xc4, 0xfa, 0xef, 0x72, 0x1c, 0xad, + 0xff, 0x9b, 0x7a, 0x07, 0x93, 0x48, 0x4d, 0x4c, 0xff, 0xbd, 0xf7, 0x44, 0xfa, 0xdf, 0xa7, 0x88, + 0xf4, 0xd1, 0xf8, 0x81, 0x04, 0x33, 0x75, 0x57, 0xe1, 0xea, 0xbb, 0x3b, 0x3b, 0x9a, 0x75, 0x09, + 0x5d, 0x1b, 0xa0, 0x12, 0x52, 0xcd, 0x0c, 0xef, 0x97, 0xf2, 0x87, 0xc2, 0xd7, 0x4a, 0xb3, 0xa6, + 0x1d, 0x2a, 0x21, 0x71, 0x3b, 0x78, 0x2c, 0xe4, 0x5c, 0xf5, 0xf6, 0x3c, 0x2e, 0x63, 0x1b, 0x02, + 0xcd, 0x29, 0x18, 0xd1, 0x6a, 0x20, 0x6f, 0x63, 0x88, 0xa6, 0x21, 0xc1, 0xd1, 0xba, 0xa3, 0xb5, + 0x2e, 0x2c, 0x9b, 0x96, 0xb9, 0xeb, 0xe8, 0x06, 0xb6, 0xd1, 0x23, 0x02, 0x04, 0x3c, 0xfd, 0xcf, + 0x04, 0xfa, 0x8f, 0xfe, 0x3d, 0x23, 0x3a, 0x8a, 0xfa, 0xdd, 0x6a, 0x98, 0x7c, 0x44, 0x80, 0x2a, + 0xb1, 0x71, 0x51, 0x84, 0x62, 0xfa, 0x42, 0x7b, 0xa3, 0x0c, 0x85, 0xf2, 0x03, 0x5d, 0xd3, 0x72, + 0x56, 0xcd, 0x96, 0xd6, 0xb1, 0x1d, 0xd3, 0xc2, 0xa8, 0x16, 0x2b, 0x35, 0xb7, 0x87, 0x69, 0x9b, + 0xad, 0x60, 0x70, 0x64, 0x6f, 0x61, 0xb5, 0x93, 0x79, 0x1d, 0xff, 0x88, 0xf0, 0x2e, 0x23, 0x95, + 0x4a, 0x2f, 0x47, 0x11, 0x7a, 0xde, 0xaf, 0x4b, 0x4b, 0x76, 0x58, 0x42, 0x6c, 0xe7, 0x51, 0x88, + 0xa9, 0x31, 0x2c, 0x95, 0x4b, 0x30, 0x5b, 0xdf, 0x3d, 0xef, 0x13, 0xb1, 0xc3, 0x46, 0xc8, 0xab, + 0x85, 0xa3, 0x54, 0x30, 0xc5, 0x0b, 0x13, 0x8a, 0x90, 0xef, 0x75, 0x30, 0x6b, 0x87, 0xb3, 0x31, + 0xbc, 0xf9, 0x44, 0xc1, 0xe8, 0x14, 0x83, 0x4b, 0x4d, 0x5f, 0x80, 0xef, 0x96, 0x60, 0xb6, 0xd6, + 0xc5, 0x06, 0x6e, 0x53, 0x2f, 0x48, 0x4e, 0x80, 0x2f, 0x4e, 0x28, 0x40, 0x8e, 0x50, 0x84, 0x00, + 0x03, 0x8f, 0xe5, 0x45, 0x4f, 0x78, 0x41, 0x42, 0x22, 0xc1, 0xc5, 0x95, 0x96, 0xbe, 0xe0, 0xbe, + 0x2c, 0xc1, 0xb4, 0xba, 0x6b, 0xac, 0x5b, 0xa6, 0x3b, 0x1a, 0x5b, 0xe8, 0xce, 0xa0, 0x83, 0xb8, + 0x09, 0x8e, 0xb5, 0x77, 0x2d, 0xb2, 0xfe, 0x54, 0x31, 0xea, 0xb8, 0x65, 0x1a, 0x6d, 0x9b, 0xd4, + 0x23, 0xa7, 0xee, 0xff, 0x70, 0x7b, 0xf6, 0xd9, 0xdf, 0x94, 0x33, 0xe8, 0xb9, 0xc2, 0xa1, 0x6e, + 0x68, 0xe5, 0x43, 0x45, 0x8b, 0xf7, 0x04, 0x82, 0x01, 0x6d, 0x06, 0x95, 0x90, 0xbe, 0x70, 0x3f, + 0x27, 0x81, 0x52, 0x6c, 0xb5, 0xcc, 0x5d, 0xc3, 0xa9, 0xe3, 0x0e, 0x6e, 0x39, 0x0d, 0x4b, 0x6b, + 0xe1, 0xb0, 0xfd, 0x5c, 0x00, 0xb9, 0xad, 0x5b, 0xac, 0x0f, 0x76, 0x1f, 0x99, 0x1c, 0x5f, 0x2c, + 0xbc, 0xe3, 0x48, 0x6b, 0xb9, 0xbf, 0x94, 0x04, 0xe2, 0x14, 0xdb, 0x57, 0x14, 0x2c, 0x28, 0x7d, + 0xa9, 0x7e, 0x5c, 0x82, 0x29, 0xaf, 0xc7, 0xde, 0x12, 0x11, 0xe6, 0x6f, 0x24, 0x9c, 0x8c, 0xf8, + 0xc4, 0x13, 0xc8, 0xf0, 0xed, 0x09, 0x66, 0x15, 0x51, 0xf4, 0x93, 0x89, 0xae, 0x98, 0x5c, 0x74, + 0xee, 0x6b, 0xb5, 0xd6, 0x5c, 0xaa, 0xad, 0x2e, 0x96, 0xd5, 0x82, 0x8c, 0xbe, 0x22, 0x41, 0x76, + 0x5d, 0x37, 0xb6, 0xc2, 0xd1, 0x95, 0x8e, 0xbb, 0x76, 0x64, 0x1b, 0x3f, 0xc0, 0x5a, 0x3a, 0x7d, + 0x51, 0x6e, 0x85, 0xe3, 0xc6, 0xee, 0xce, 0x79, 0x6c, 0xd5, 0x36, 0xc9, 0x28, 0x6b, 0x37, 0xcc, + 0x3a, 0x36, 0xa8, 0x11, 0x9a, 0x53, 0xfb, 0x7e, 0xe3, 0x4d, 0x30, 0x81, 0xc9, 0x83, 0xcb, 0x49, + 0x84, 0xc4, 0x7d, 0xa6, 0xa4, 0x10, 0x53, 0x89, 0xa6, 0x0d, 0x7d, 0x88, 0xa7, 0xaf, 0xa9, 0x7f, + 0x9c, 0x83, 0x13, 0x45, 0xe3, 0x12, 0xb1, 0x29, 0x68, 0x07, 0x5f, 0xda, 0xd6, 0x8c, 0x2d, 0x4c, + 0x06, 0x08, 0x5f, 0xe2, 0xe1, 0x10, 0xfd, 0x19, 0x3e, 0x44, 0xbf, 0xa2, 0xc2, 0x84, 0x69, 0xb5, + 0xb1, 0xb5, 0x70, 0x89, 0xf0, 0xd4, 0xbb, 0xec, 0xcc, 0xda, 0x64, 0xbf, 0x22, 0xe6, 0x19, 0xf9, + 0xf9, 0x1a, 0xfd, 0x5f, 0xf5, 0x08, 0x9d, 0xb9, 0x09, 0x26, 0x58, 0x9a, 0x32, 0x03, 0x93, 0x35, + 0x75, 0xb1, 0xac, 0x36, 0x2b, 0x8b, 0x85, 0x23, 0xca, 0x65, 0x70, 0xb4, 0xd2, 0x28, 0xab, 0xc5, + 0x46, 0xa5, 0x56, 0x6d, 0x92, 0xf4, 0x42, 0x06, 0x3d, 0x2b, 0x2b, 0xea, 0xd9, 0x1b, 0xcf, 0x4c, + 0x3f, 0x58, 0x55, 0x98, 0x68, 0xd1, 0x0c, 0x64, 0x08, 0x9d, 0x4e, 0x54, 0x3b, 0x46, 0x90, 0x26, + 0xa8, 0x1e, 0x21, 0xe5, 0x34, 0xc0, 0x45, 0xcb, 0x34, 0xb6, 0x82, 0x53, 0x87, 0x93, 0x6a, 0x28, + 0x05, 0x3d, 0x98, 0x81, 0x3c, 0xfd, 0x87, 0x5c, 0x49, 0x42, 0x9e, 0x02, 0xc1, 0x7b, 0xef, 0xae, + 0xc5, 0x4b, 0xe4, 0x15, 0x4c, 0xb4, 0xd8, 0xab, 0xab, 0x8b, 0x54, 0x06, 0xd4, 0x12, 0x66, 0x55, + 0xb9, 0x19, 0xf2, 0xf4, 0x5f, 0xe6, 0x75, 0x10, 0x1d, 0x5e, 0x94, 0x66, 0x13, 0xf4, 0x53, 0x16, + 0x97, 0x69, 0xfa, 0xda, 0xfc, 0x01, 0x09, 0x26, 0xab, 0xd8, 0x29, 0x6d, 0xe3, 0xd6, 0x05, 0xf4, + 0x28, 0x7e, 0x01, 0xb4, 0xa3, 0x63, 0xc3, 0xb9, 0x6f, 0xa7, 0xe3, 0x2f, 0x80, 0x7a, 0x09, 0xe8, + 0x39, 0xe1, 0xce, 0xf7, 0x6e, 0x5e, 0x7f, 0x6e, 0xec, 0x53, 0x57, 0xaf, 0x84, 0x08, 0x95, 0x39, + 0x09, 0x79, 0x0b, 0xdb, 0xbb, 0x1d, 0x6f, 0x11, 0x8d, 0xbd, 0xa1, 0xd7, 0xf8, 0xe2, 0x2c, 0x71, + 0xe2, 0xbc, 0x59, 0xbc, 0x88, 0x31, 0xc4, 0x2b, 0xcd, 0xc2, 0x44, 0xc5, 0xd0, 0x1d, 0x5d, 0xeb, + 0xa0, 0xe7, 0x66, 0x61, 0xb6, 0x8e, 0x9d, 0x75, 0xcd, 0xd2, 0x76, 0xb0, 0x83, 0x2d, 0x1b, 0x7d, + 0x8f, 0xef, 0x13, 0xba, 0x1d, 0xcd, 0xd9, 0x34, 0xad, 0x1d, 0x4f, 0x35, 0xbd, 0x77, 0x57, 0x35, + 0xf7, 0xb0, 0x65, 0x07, 0x7c, 0x79, 0xaf, 0xee, 0x97, 0x8b, 0xa6, 0x75, 0xc1, 0x1d, 0x04, 0xd9, + 0x34, 0x8d, 0xbd, 0xba, 0xf4, 0x3a, 0xe6, 0xd6, 0x2a, 0xde, 0xc3, 0x5e, 0xb8, 0x34, 0xff, 0xdd, + 0x9d, 0x0b, 0xb4, 0xcd, 0xaa, 0xe9, 0xb8, 0x9d, 0xf6, 0xaa, 0xb9, 0x45, 0xe3, 0xc5, 0x4e, 0xaa, + 0x7c, 0x62, 0x90, 0x4b, 0xdb, 0xc3, 0x24, 0x57, 0x3e, 0x9c, 0x8b, 0x25, 0x2a, 0xf3, 0xa0, 0xf8, + 0xbf, 0x35, 0x70, 0x07, 0xef, 0x60, 0xc7, 0xba, 0x44, 0xae, 0x85, 0x98, 0x54, 0xfb, 0x7c, 0x61, + 0x03, 0xb4, 0xf8, 0x64, 0x9d, 0x49, 0x6f, 0x9e, 0x93, 0xdc, 0x81, 0x26, 0xeb, 0x22, 0x14, 0xc7, + 0x72, 0xed, 0x95, 0xec, 0x5a, 0x33, 0x2f, 0x95, 0x21, 0x4b, 0x06, 0xcf, 0x37, 0x65, 0xb8, 0x15, + 0xa6, 0x1d, 0x6c, 0xdb, 0xda, 0x16, 0xf6, 0x56, 0x98, 0xd8, 0xab, 0x72, 0x1b, 0xe4, 0x3a, 0x04, + 0x53, 0x3a, 0x38, 0x5c, 0xcb, 0xd5, 0xcc, 0x35, 0x30, 0x5c, 0x5a, 0xfe, 0x48, 0x40, 0xe0, 0x56, + 0xe9, 0x1f, 0x67, 0xee, 0x81, 0x1c, 0x85, 0x7f, 0x0a, 0x72, 0x8b, 0xe5, 0x85, 0x8d, 0xe5, 0xc2, + 0x11, 0xf7, 0xd1, 0xe3, 0x6f, 0x0a, 0x72, 0x4b, 0xc5, 0x46, 0x71, 0xb5, 0x20, 0xb9, 0xf5, 0xa8, + 0x54, 0x97, 0x6a, 0x05, 0xd9, 0x4d, 0x5c, 0x2f, 0x56, 0x2b, 0xa5, 0x42, 0x56, 0x99, 0x86, 0x89, + 0x73, 0x45, 0xb5, 0x5a, 0xa9, 0x2e, 0x17, 0x72, 0xe8, 0x6f, 0xc3, 0xf8, 0xdd, 0xce, 0xe3, 0x77, + 0x5d, 0x14, 0x4f, 0xfd, 0x20, 0x7b, 0x99, 0x0f, 0xd9, 0x9d, 0x1c, 0x64, 0x3f, 0x29, 0x42, 0x64, + 0x0c, 0xee, 0x4c, 0x79, 0x98, 0x58, 0xb7, 0xcc, 0x16, 0xb6, 0x6d, 0xf4, 0x9b, 0x12, 0xe4, 0x4b, + 0x9a, 0xd1, 0xc2, 0x1d, 0x74, 0x45, 0x00, 0x15, 0x75, 0x15, 0xcd, 0xf8, 0xa7, 0xc5, 0xfe, 0x31, + 0x23, 0xda, 0xfb, 0x31, 0xba, 0xf3, 0x94, 0x66, 0x84, 0x7c, 0xc4, 0x7a, 0xb9, 0x58, 0x52, 0x63, + 0xb8, 0x1a, 0x47, 0x82, 0x29, 0xb6, 0x1a, 0x70, 0x1e, 0x87, 0xe7, 0xe1, 0xdf, 0xcb, 0x88, 0x4e, + 0x0e, 0xbd, 0x1a, 0xf8, 0x64, 0x22, 0xe4, 0x21, 0x36, 0x11, 0x1c, 0x44, 0x6d, 0x0c, 0x9b, 0x87, + 0x12, 0x4c, 0x6f, 0x18, 0x76, 0x3f, 0xa1, 0x88, 0xc7, 0xd1, 0xf7, 0xaa, 0x11, 0x22, 0x74, 0xa0, + 0x38, 0xfa, 0x83, 0xe9, 0xa5, 0x2f, 0x98, 0xef, 0x65, 0xe0, 0xf8, 0x32, 0x36, 0xb0, 0xa5, 0xb7, + 0x68, 0x0d, 0x3c, 0x49, 0xdc, 0xc9, 0x4b, 0xe2, 0x51, 0x1c, 0xe7, 0xfd, 0xfe, 0xe0, 0x25, 0xf0, + 0x4a, 0x5f, 0x02, 0x77, 0x73, 0x12, 0xb8, 0x49, 0x90, 0xce, 0x18, 0xee, 0x43, 0x9f, 0x82, 0x99, + 0xaa, 0xe9, 0xe8, 0x9b, 0x7a, 0x8b, 0xfa, 0xa0, 0xbd, 0x44, 0x86, 0xec, 0xaa, 0x6e, 0x3b, 0xa8, + 0x18, 0x74, 0x27, 0xd7, 0xc0, 0xb4, 0x6e, 0xb4, 0x3a, 0xbb, 0x6d, 0xac, 0x62, 0x8d, 0xf6, 0x2b, + 0x93, 0x6a, 0x38, 0x29, 0xd8, 0xda, 0x77, 0xd9, 0x92, 0xbd, 0xad, 0xfd, 0x4f, 0x0b, 0x2f, 0xc3, + 0x84, 0x59, 0x20, 0x01, 0x29, 0x23, 0xec, 0xae, 0x22, 0xcc, 0x1a, 0xa1, 0xac, 0x9e, 0xc1, 0xde, + 0x7b, 0xa1, 0x40, 0x98, 0x9c, 0xca, 0xff, 0x81, 0xde, 0x2b, 0xd4, 0x58, 0x07, 0x31, 0x94, 0x0c, + 0x99, 0xa5, 0x21, 0x26, 0xc9, 0x0a, 0xcc, 0x55, 0xaa, 0x8d, 0xb2, 0x5a, 0x2d, 0xae, 0xb2, 0x2c, + 0x32, 0xfa, 0x81, 0x04, 0x39, 0x15, 0x77, 0x3b, 0x97, 0xc2, 0x11, 0xa3, 0x99, 0xa3, 0x78, 0xc6, + 0x77, 0x14, 0x57, 0x96, 0x00, 0xb4, 0x96, 0x5b, 0x30, 0xb9, 0x52, 0x4b, 0xea, 0x1b, 0xc7, 0x94, + 0xab, 0x60, 0xd1, 0xcf, 0xad, 0x86, 0xfe, 0x44, 0xcf, 0x13, 0xde, 0x39, 0xe2, 0xa8, 0x11, 0x0e, + 0x23, 0xfa, 0x84, 0xf7, 0x09, 0x6d, 0xf6, 0x0c, 0x24, 0x77, 0x38, 0xe2, 0xff, 0xaa, 0x04, 0xd9, + 0x86, 0xdb, 0x5b, 0x86, 0x3a, 0xce, 0x4f, 0x0d, 0xa7, 0xe3, 0x2e, 0x99, 0x08, 0x1d, 0xbf, 0x0b, + 0x66, 0xc2, 0x1a, 0xcb, 0x5c, 0x25, 0x62, 0x55, 0x9c, 0xfb, 0x61, 0x18, 0x0d, 0xef, 0xc3, 0xce, + 0xe1, 0x88, 0xf8, 0x13, 0x8f, 0x06, 0x58, 0xc3, 0x3b, 0xe7, 0xb1, 0x65, 0x6f, 0xeb, 0x5d, 0xf4, + 0x77, 0x32, 0x4c, 0x2d, 0x63, 0xa7, 0xee, 0x68, 0xce, 0xae, 0xdd, 0xb3, 0xdd, 0x69, 0x98, 0x25, + 0xad, 0xb5, 0x8d, 0x59, 0x77, 0xe4, 0xbd, 0xa2, 0x77, 0xca, 0xa2, 0xfe, 0x44, 0x41, 0x39, 0xf3, + 0x7e, 0x19, 0x11, 0x98, 0x3c, 0x06, 0xb2, 0x6d, 0xcd, 0xd1, 0x18, 0x16, 0x57, 0xf4, 0x60, 0x11, + 0x10, 0x52, 0x49, 0x36, 0xf4, 0xbb, 0x92, 0x88, 0x43, 0x91, 0x40, 0xf9, 0xc9, 0x40, 0x78, 0x6f, + 0x66, 0x08, 0x14, 0x8e, 0xc1, 0x6c, 0xb5, 0xd6, 0x68, 0xae, 0xd6, 0x96, 0x97, 0xcb, 0x6e, 0x6a, + 0x41, 0x56, 0x4e, 0x82, 0xb2, 0x5e, 0xbc, 0x6f, 0xad, 0x5c, 0x6d, 0x34, 0xab, 0xb5, 0xc5, 0x32, + 0xfb, 0x33, 0xab, 0x1c, 0x85, 0xe9, 0x52, 0xb1, 0xb4, 0xe2, 0x25, 0xe4, 0x94, 0x53, 0x70, 0x7c, + 0xad, 0xbc, 0xb6, 0x50, 0x56, 0xeb, 0x2b, 0x95, 0xf5, 0xa6, 0x4b, 0x66, 0xa9, 0xb6, 0x51, 0x5d, + 0x2c, 0xe4, 0x15, 0x04, 0x27, 0x43, 0x5f, 0xce, 0xa9, 0xb5, 0xea, 0x72, 0xb3, 0xde, 0x28, 0x36, + 0xca, 0x85, 0x09, 0xe5, 0x32, 0x38, 0x5a, 0x2a, 0x56, 0x49, 0xf6, 0x52, 0xad, 0x5a, 0x2d, 0x97, + 0x1a, 0x85, 0x49, 0xf4, 0xef, 0x59, 0x98, 0xae, 0xd8, 0x55, 0x6d, 0x07, 0x9f, 0xd5, 0x3a, 0x7a, + 0x1b, 0x3d, 0x37, 0x34, 0xf3, 0xb8, 0x0e, 0x66, 0x2d, 0xfa, 0x88, 0xdb, 0x0d, 0x1d, 0x53, 0x34, + 0x67, 0x55, 0x3e, 0xd1, 0x9d, 0x93, 0x1b, 0x84, 0x80, 0x37, 0x27, 0xa7, 0x6f, 0xca, 0x02, 0x00, + 0x7d, 0x6a, 0x04, 0x97, 0xbb, 0x9e, 0xe9, 0x6d, 0x4d, 0xda, 0x0e, 0xb6, 0xb1, 0xb5, 0xa7, 0xb7, + 0xb0, 0x97, 0x53, 0x0d, 0xfd, 0x85, 0xbe, 0x26, 0x8b, 0xee, 0x2f, 0x86, 0x40, 0x0d, 0x55, 0x27, + 0xa2, 0x37, 0xfc, 0x65, 0x59, 0x64, 0x77, 0x50, 0x88, 0x64, 0x32, 0x4d, 0x79, 0x81, 0x34, 0xdc, + 0xb2, 0x6d, 0xa3, 0x56, 0x6b, 0xd6, 0x57, 0x6a, 0x6a, 0xa3, 0x20, 0x2b, 0x33, 0x30, 0xe9, 0xbe, + 0xae, 0xd6, 0xaa, 0xcb, 0x85, 0xac, 0x72, 0x02, 0x8e, 0xad, 0x14, 0xeb, 0xcd, 0x4a, 0xf5, 0x6c, + 0x71, 0xb5, 0xb2, 0xd8, 0x2c, 0xad, 0x14, 0xd5, 0x7a, 0x21, 0xa7, 0x5c, 0x01, 0x27, 0x1a, 0x95, + 0xb2, 0xda, 0x5c, 0x2a, 0x17, 0x1b, 0x1b, 0x6a, 0xb9, 0xde, 0xac, 0xd6, 0x9a, 0xd5, 0xe2, 0x5a, + 0xb9, 0x90, 0x77, 0x9b, 0x3f, 0xf9, 0x14, 0xa8, 0xcd, 0xc4, 0x7e, 0x65, 0x9c, 0x8c, 0x50, 0xc6, + 0xa9, 0x5e, 0x65, 0x84, 0xb0, 0x5a, 0xa9, 0xe5, 0x7a, 0x59, 0x3d, 0x5b, 0x2e, 0x4c, 0xf7, 0xd3, + 0xb5, 0x19, 0xe5, 0x38, 0x14, 0x5c, 0x1e, 0x9a, 0x95, 0xba, 0x97, 0x73, 0xb1, 0x30, 0x8b, 0x3e, + 0x9e, 0x87, 0x93, 0x2a, 0xde, 0xd2, 0x6d, 0x07, 0x5b, 0xeb, 0xda, 0xa5, 0x1d, 0x6c, 0x38, 0x5e, + 0x27, 0xff, 0x2f, 0x89, 0x95, 0x71, 0x0d, 0x66, 0xbb, 0x94, 0xc6, 0x1a, 0x76, 0xb6, 0xcd, 0x36, + 0x1b, 0x85, 0x1f, 0x15, 0xd9, 0x73, 0xcc, 0xaf, 0x87, 0xb3, 0xab, 0xfc, 0xdf, 0x21, 0xdd, 0x96, + 0x63, 0x74, 0x3b, 0x3b, 0x8c, 0x6e, 0x2b, 0x57, 0xc1, 0xd4, 0xae, 0x8d, 0xad, 0xf2, 0x8e, 0xa6, + 0x77, 0xbc, 0xcb, 0x39, 0xfd, 0x04, 0xf4, 0xb6, 0xac, 0xe8, 0x89, 0x95, 0x50, 0x5d, 0xfa, 0x8b, + 0x31, 0xa2, 0x6f, 0x3d, 0x0d, 0xc0, 0x2a, 0xbb, 0x61, 0x75, 0x98, 0xb2, 0x86, 0x52, 0x5c, 0xfe, + 0xce, 0xeb, 0x9d, 0x8e, 0x6e, 0x6c, 0xf9, 0xfb, 0xfe, 0x41, 0x02, 0x7a, 0x81, 0x2c, 0x72, 0x82, + 0x25, 0x29, 0x6f, 0xc9, 0x5a, 0xd3, 0xf3, 0xa4, 0x31, 0xf7, 0xbb, 0xfb, 0x9b, 0x4e, 0x5e, 0x29, + 0xc0, 0x0c, 0x49, 0x63, 0x2d, 0xb0, 0x30, 0xe1, 0xf6, 0xc1, 0x1e, 0xb9, 0xb5, 0x72, 0x63, 0xa5, + 0xb6, 0xe8, 0x7f, 0x9b, 0x74, 0x49, 0xba, 0xcc, 0x14, 0xab, 0xf7, 0x91, 0xd6, 0x38, 0xa5, 0x3c, + 0x02, 0xae, 0x08, 0x75, 0xd8, 0xc5, 0x55, 0xb5, 0x5c, 0x5c, 0xbc, 0xaf, 0x59, 0x7e, 0x6a, 0xa5, + 0xde, 0xa8, 0xf3, 0x8d, 0xcb, 0x6b, 0x47, 0xd3, 0x2e, 0xbf, 0xe5, 0xb5, 0x62, 0x65, 0x95, 0xf5, + 0xef, 0x4b, 0x35, 0x75, 0xad, 0xd8, 0x28, 0xcc, 0xa0, 0x97, 0xca, 0x50, 0x58, 0xc6, 0xce, 0xba, + 0x69, 0x39, 0x5a, 0x67, 0x55, 0x37, 0x2e, 0x6c, 0x58, 0x1d, 0x6e, 0xb2, 0x29, 0x1c, 0xa6, 0x83, + 0x1f, 0x22, 0x39, 0x82, 0xd1, 0x3b, 0xe2, 0x5d, 0x92, 0x2d, 0x50, 0xa6, 0x20, 0x01, 0x3d, 0x5d, + 0x12, 0x59, 0xee, 0x16, 0x2f, 0x35, 0x99, 0x9e, 0x3c, 0x63, 0xdc, 0xe3, 0x73, 0x1f, 0xd4, 0xf2, + 0xe8, 0xd9, 0x59, 0x98, 0x5c, 0xd2, 0x0d, 0xad, 0xa3, 0x3f, 0x8d, 0x8b, 0x5f, 0x1a, 0xf4, 0x31, + 0x99, 0x98, 0x3e, 0x46, 0x1a, 0x6a, 0xfc, 0xfc, 0x75, 0x59, 0x74, 0x79, 0x21, 0x24, 0x7b, 0x8f, + 0xc9, 0x88, 0xc1, 0xf3, 0x83, 0x92, 0xc8, 0xf2, 0xc2, 0x60, 0x7a, 0xc9, 0x30, 0xfc, 0xe4, 0x8f, + 0x86, 0x8d, 0xd5, 0xd3, 0xbe, 0x27, 0xfb, 0xa9, 0xc2, 0x14, 0xfa, 0x73, 0x19, 0xd0, 0x32, 0x76, + 0xce, 0x62, 0xcb, 0x9f, 0x0a, 0x90, 0x5e, 0x9f, 0xd9, 0xdb, 0xa1, 0x26, 0xfb, 0xa6, 0x30, 0x80, + 0xe7, 0x78, 0x00, 0x8b, 0x31, 0x8d, 0x27, 0x82, 0x74, 0x44, 0xe3, 0xad, 0x40, 0xde, 0x26, 0xdf, + 0x99, 0x9a, 0x3d, 0x36, 0x7a, 0xb8, 0x24, 0xc4, 0xc2, 0xd4, 0x29, 0x61, 0x95, 0x11, 0x40, 0xdf, + 0xf7, 0x27, 0x41, 0x3f, 0xc3, 0x69, 0xc7, 0xd2, 0x81, 0x99, 0x4d, 0xa6, 0x2f, 0x56, 0xba, 0xea, + 0xd2, 0xcf, 0xbe, 0x41, 0x1f, 0xcc, 0xc1, 0xf1, 0x7e, 0xd5, 0x41, 0xbf, 0x97, 0xe1, 0x76, 0xd8, + 0x31, 0x19, 0xf2, 0x33, 0x6c, 0x03, 0xd1, 0x7d, 0x51, 0x1e, 0x0f, 0x27, 0xfc, 0x65, 0xb8, 0x86, + 0x59, 0xc5, 0x17, 0xed, 0x0e, 0x76, 0x1c, 0x6c, 0x91, 0xaa, 0x4d, 0xaa, 0xfd, 0x3f, 0x2a, 0x4f, + 0x84, 0xcb, 0x75, 0xc3, 0xd6, 0xdb, 0xd8, 0x6a, 0xe8, 0x5d, 0xbb, 0x68, 0xb4, 0x1b, 0xbb, 0x8e, + 0x69, 0xe9, 0x1a, 0xbb, 0x4a, 0x72, 0x52, 0x8d, 0xfa, 0xac, 0xdc, 0x08, 0x05, 0xdd, 0xae, 0x19, + 0xe7, 0x4d, 0xcd, 0x6a, 0xeb, 0xc6, 0xd6, 0xaa, 0x6e, 0x3b, 0xcc, 0x03, 0x78, 0x5f, 0x3a, 0xfa, + 0x7b, 0x59, 0xf4, 0x30, 0xdd, 0x00, 0x58, 0x23, 0x3a, 0x94, 0xe7, 0xc8, 0x22, 0xc7, 0xe3, 0x92, + 0xd1, 0x4e, 0xa6, 0x2c, 0xcf, 0x1a, 0xb7, 0x21, 0xd1, 0x7f, 0x04, 0x27, 0x5d, 0x0b, 0x4d, 0xf7, + 0x0c, 0x81, 0xb3, 0x65, 0xb5, 0xb2, 0x54, 0x29, 0xbb, 0x66, 0xc5, 0x09, 0x38, 0x16, 0x7c, 0x5b, + 0xbc, 0xaf, 0x59, 0x2f, 0x57, 0x1b, 0x85, 0x49, 0xb7, 0x9f, 0xa2, 0xc9, 0x4b, 0xc5, 0xca, 0x6a, + 0x79, 0xb1, 0xd9, 0xa8, 0xb9, 0x5f, 0x16, 0x87, 0x33, 0x2d, 0xd0, 0x83, 0x59, 0x38, 0x4a, 0x64, + 0x7b, 0x89, 0x48, 0xd5, 0x15, 0x4a, 0x8f, 0xaf, 0xad, 0x0f, 0xd0, 0x14, 0x15, 0x2f, 0xfa, 0xac, + 0xf0, 0x4d, 0x99, 0x21, 0x08, 0x7b, 0xca, 0x88, 0xd0, 0x8c, 0xef, 0x49, 0x22, 0x11, 0x2a, 0x84, + 0xc9, 0x26, 0x53, 0x8a, 0x7f, 0x1d, 0xf7, 0x88, 0x13, 0x0d, 0x3e, 0xb1, 0x32, 0x4b, 0xe4, 0xe7, + 0xa7, 0xae, 0x57, 0x54, 0xa2, 0x0e, 0x73, 0x00, 0x24, 0x85, 0x68, 0x10, 0xd5, 0x83, 0xbe, 0xe3, + 0x55, 0x94, 0x1e, 0x14, 0x4b, 0x8d, 0xca, 0xd9, 0x72, 0x94, 0x1e, 0x7c, 0x46, 0x86, 0xc9, 0x65, + 0xec, 0xb8, 0x73, 0x2a, 0x1b, 0x3d, 0x49, 0x60, 0xfd, 0xc7, 0x35, 0x63, 0x3a, 0x66, 0x4b, 0xeb, + 0xf8, 0xcb, 0x00, 0xf4, 0x0d, 0x3d, 0x73, 0x18, 0x13, 0xc4, 0x2b, 0x3a, 0x62, 0xbc, 0xfa, 0x69, + 0xc8, 0x39, 0xee, 0x67, 0xb6, 0x0c, 0xfd, 0x13, 0x91, 0xc3, 0x95, 0x4b, 0x64, 0x51, 0x73, 0x34, + 0x95, 0xe6, 0x0f, 0x8d, 0x4e, 0x82, 0xb6, 0x4b, 0x04, 0x23, 0x3f, 0x8a, 0xf6, 0xe7, 0xdf, 0xca, + 0x70, 0x82, 0xb6, 0x8f, 0x62, 0xb7, 0x5b, 0x77, 0x4c, 0x0b, 0xab, 0xb8, 0x85, 0xf5, 0xae, 0xd3, + 0xb3, 0xbe, 0x67, 0xd1, 0x54, 0x6f, 0xb3, 0x99, 0xbd, 0xa2, 0xd7, 0xcb, 0xa2, 0x31, 0x98, 0xf7, + 0xb5, 0xc7, 0x9e, 0xf2, 0x22, 0x1a, 0xfb, 0xc7, 0x24, 0x91, 0xa8, 0xca, 0x09, 0x89, 0x27, 0x03, + 0xea, 0xc3, 0x87, 0x00, 0x94, 0xb7, 0x72, 0xa3, 0x96, 0x4b, 0xe5, 0xca, 0xba, 0x3b, 0x08, 0x5c, + 0x0d, 0x57, 0xae, 0x6f, 0xa8, 0xa5, 0x95, 0x62, 0xbd, 0xdc, 0x54, 0xcb, 0xcb, 0x95, 0x7a, 0x83, + 0x39, 0x65, 0xd1, 0xbf, 0x26, 0x94, 0xab, 0xe0, 0x54, 0x7d, 0x63, 0xa1, 0x5e, 0x52, 0x2b, 0xeb, + 0x24, 0x5d, 0x2d, 0x57, 0xcb, 0xe7, 0xd8, 0xd7, 0x49, 0xf4, 0xfe, 0x02, 0x4c, 0xbb, 0x13, 0x80, + 0x3a, 0x9d, 0x17, 0xa0, 0x6f, 0x67, 0x61, 0x5a, 0xc5, 0xb6, 0xd9, 0xd9, 0x23, 0x73, 0x84, 0x71, + 0x4d, 0x3d, 0xbe, 0x2b, 0x8b, 0x9e, 0xdf, 0x0e, 0x31, 0x3b, 0x1f, 0x62, 0x34, 0x7a, 0xa2, 0xa9, + 0xed, 0x69, 0x7a, 0x47, 0x3b, 0xcf, 0xba, 0x9a, 0x49, 0x35, 0x48, 0x50, 0xe6, 0x41, 0x31, 0x2f, + 0x1a, 0xd8, 0xaa, 0xb7, 0x2e, 0x96, 0x9d, 0xed, 0x62, 0xbb, 0x6d, 0x61, 0xdb, 0x66, 0xab, 0x17, + 0x7d, 0xbe, 0x28, 0x37, 0xc0, 0x51, 0x92, 0x1a, 0xca, 0x4c, 0x1d, 0x64, 0x7a, 0x93, 0xfd, 0x9c, + 0x45, 0xe3, 0x92, 0x97, 0x33, 0x17, 0xca, 0x19, 0x24, 0x87, 0x8f, 0x4b, 0xe4, 0xf9, 0x53, 0x3a, + 0xd7, 0xc0, 0xb4, 0xa1, 0xed, 0xe0, 0xf2, 0x03, 0x5d, 0xdd, 0xc2, 0x36, 0x71, 0x8c, 0x91, 0xd5, + 0x70, 0x12, 0xfa, 0xa0, 0xd0, 0x79, 0x73, 0x31, 0x89, 0x25, 0xd3, 0xfd, 0xe5, 0x21, 0x54, 0xbf, + 0x4f, 0x3f, 0x23, 0xa3, 0xf7, 0xcb, 0x30, 0xc3, 0x98, 0x2a, 0x1a, 0x97, 0x2a, 0x6d, 0x74, 0x35, + 0x67, 0xfc, 0x6a, 0x6e, 0x9a, 0x67, 0xfc, 0x92, 0x17, 0xf4, 0x2b, 0xb2, 0xa8, 0xbb, 0x73, 0x9f, + 0x8a, 0x93, 0x32, 0xa2, 0x1d, 0x47, 0x37, 0xcd, 0x5d, 0xe6, 0xa8, 0x3a, 0xa9, 0xd2, 0x97, 0x34, + 0x17, 0xf5, 0xd0, 0x87, 0x84, 0x9c, 0xa9, 0x05, 0xab, 0x71, 0x48, 0x00, 0x7e, 0x42, 0x86, 0x39, + 0xc6, 0x55, 0x9d, 0x9d, 0xf3, 0x11, 0x3a, 0xf0, 0xf6, 0xab, 0xc2, 0x86, 0x60, 0x9f, 0xfa, 0xb3, + 0x92, 0x1e, 0x36, 0x40, 0x7e, 0x44, 0x28, 0x38, 0x9a, 0x70, 0x45, 0x0e, 0x09, 0xca, 0xb7, 0x67, + 0x61, 0x7a, 0xc3, 0xc6, 0x16, 0xf3, 0xdb, 0x47, 0xaf, 0xc9, 0x82, 0xbc, 0x8c, 0xb9, 0x8d, 0xd4, + 0xe7, 0x0b, 0x7b, 0xf8, 0x86, 0x2b, 0x1b, 0x22, 0xea, 0xda, 0x48, 0x11, 0xb0, 0x5d, 0x0f, 0x73, + 0x54, 0xa4, 0x45, 0xc7, 0x71, 0x8d, 0x44, 0xcf, 0x9b, 0xb6, 0x27, 0x75, 0x14, 0x5b, 0x45, 0xa4, + 0x2c, 0x37, 0x4b, 0xc9, 0xe5, 0x69, 0x15, 0x6f, 0xd2, 0xf9, 0x6c, 0x56, 0xed, 0x49, 0x55, 0x6e, + 0x81, 0xcb, 0xcc, 0x2e, 0xa6, 0xe7, 0x57, 0x42, 0x99, 0x73, 0x24, 0x73, 0xbf, 0x4f, 0xe8, 0xdb, + 0x42, 0xbe, 0xba, 0xe2, 0xd2, 0x49, 0xa6, 0x0b, 0xdd, 0xd1, 0x98, 0x24, 0xc7, 0xa1, 0xe0, 0xe6, + 0x20, 0xfb, 0x2f, 0x6a, 0xb9, 0x5e, 0x5b, 0x3d, 0x5b, 0xee, 0xbf, 0x8c, 0x91, 0x43, 0xcf, 0x92, + 0x61, 0x6a, 0xc1, 0x32, 0xb5, 0x76, 0x4b, 0xb3, 0x1d, 0xf4, 0x7d, 0x09, 0x66, 0xd6, 0xb5, 0x4b, + 0x1d, 0x53, 0x6b, 0x13, 0xff, 0xfe, 0x9e, 0xbe, 0xa0, 0x4b, 0x3f, 0x79, 0x7d, 0x01, 0x7b, 0xe5, + 0x0f, 0x06, 0xfa, 0x47, 0xf7, 0x32, 0x22, 0x17, 0x6a, 0xfa, 0xdb, 0x7c, 0x52, 0xbf, 0x60, 0xa5, + 0x1e, 0x5f, 0xf3, 0x61, 0x9e, 0x22, 0x2c, 0xca, 0xf7, 0x8b, 0x85, 0x1f, 0x15, 0x21, 0x79, 0x38, + 0xbb, 0xf2, 0xcf, 0x9e, 0x84, 0xfc, 0x22, 0x26, 0x56, 0xdc, 0xff, 0x90, 0x60, 0xa2, 0x8e, 0x1d, + 0x62, 0xc1, 0xdd, 0xc6, 0x79, 0x0a, 0xb7, 0x49, 0x86, 0xc0, 0x89, 0xdd, 0x7b, 0x77, 0x27, 0xeb, + 0xa1, 0xf3, 0xd6, 0xe4, 0x39, 0x81, 0x47, 0x22, 0x2d, 0x77, 0x9e, 0x95, 0x79, 0x20, 0x8f, 0xc4, + 0x58, 0x52, 0xe9, 0xfb, 0x5a, 0xbd, 0x53, 0x62, 0xae, 0x55, 0xa1, 0x5e, 0xef, 0x55, 0x61, 0xfd, + 0x8c, 0xf5, 0x36, 0x63, 0xcc, 0xc7, 0x38, 0x47, 0x3d, 0x0e, 0x26, 0xa8, 0xcc, 0xbd, 0xf9, 0x68, + 0xaf, 0x9f, 0x02, 0x25, 0x41, 0xce, 0x5e, 0x7b, 0x39, 0x05, 0x5d, 0xd4, 0xa2, 0x0b, 0x1f, 0x4b, + 0x0c, 0x82, 0x99, 0x2a, 0x76, 0x2e, 0x9a, 0xd6, 0x85, 0xba, 0xa3, 0x39, 0x18, 0xfd, 0xab, 0x04, + 0x72, 0x1d, 0x3b, 0xe1, 0xe8, 0x27, 0x55, 0x38, 0x46, 0x2b, 0xc4, 0x32, 0x92, 0xfe, 0x9b, 0x56, + 0xe4, 0x9a, 0xbe, 0x42, 0x08, 0xe5, 0x53, 0xf7, 0xff, 0x8a, 0x7e, 0xb3, 0x6f, 0xd0, 0x27, 0xa9, + 0xcf, 0xa4, 0x81, 0x49, 0x26, 0xcc, 0xa0, 0xab, 0x60, 0x11, 0x7a, 0xfa, 0x01, 0x21, 0xb3, 0x5a, + 0x8c, 0xe6, 0xe1, 0x74, 0x05, 0x1f, 0xb9, 0x02, 0xb2, 0xa5, 0x6d, 0xcd, 0x41, 0xef, 0x90, 0x01, + 0x8a, 0xed, 0xf6, 0x1a, 0xf5, 0x01, 0x0f, 0x3b, 0xa4, 0x9d, 0x81, 0x99, 0xd6, 0xb6, 0x16, 0xdc, + 0x6d, 0x42, 0xfb, 0x03, 0x2e, 0x4d, 0x79, 0x7c, 0xe0, 0x4c, 0x4e, 0xa5, 0x8a, 0x7a, 0x60, 0x72, + 0xcb, 0x60, 0xb4, 0x7d, 0x47, 0x73, 0x3e, 0x14, 0x66, 0xec, 0x11, 0x3a, 0xf7, 0xf7, 0xf9, 0x80, + 0xbd, 0xe8, 0x39, 0x1c, 0x23, 0xed, 0x1f, 0xb0, 0x09, 0x12, 0x12, 0x9e, 0xf4, 0x16, 0x0b, 0xe8, + 0x11, 0xcf, 0xd7, 0x58, 0x42, 0xd7, 0x2a, 0xe5, 0xb6, 0xee, 0x89, 0x96, 0x05, 0xcc, 0x42, 0xcf, + 0xcb, 0x24, 0x83, 0x2f, 0x5e, 0x70, 0x77, 0xc3, 0x2c, 0x6e, 0xeb, 0x0e, 0xf6, 0x6a, 0xc9, 0x04, + 0x18, 0x07, 0x31, 0xff, 0x03, 0x7a, 0x86, 0x70, 0xd0, 0x35, 0x22, 0xd0, 0xfd, 0x35, 0x8a, 0x68, + 0x7f, 0x62, 0x61, 0xd4, 0xc4, 0x68, 0xa6, 0x0f, 0xd6, 0x33, 0x65, 0x38, 0xd1, 0x30, 0xb7, 0xb6, + 0x3a, 0xd8, 0x13, 0x13, 0xa6, 0xde, 0x99, 0x48, 0x1b, 0x25, 0x5c, 0x64, 0x27, 0xc8, 0xbc, 0x5f, + 0xf7, 0x8f, 0x92, 0xb9, 0x2f, 0xfc, 0x89, 0xa9, 0xd8, 0x59, 0x14, 0x11, 0x57, 0x5f, 0x3e, 0x23, + 0x50, 0x10, 0x0b, 0xf8, 0x2c, 0x4c, 0x36, 0x7d, 0x20, 0xbe, 0x24, 0xc1, 0x2c, 0xbd, 0xb9, 0xd2, + 0x53, 0xd0, 0x7b, 0x47, 0x08, 0x00, 0xfa, 0x7e, 0x46, 0xd4, 0xcf, 0x96, 0xc8, 0x84, 0xe3, 0x24, + 0x42, 0xc4, 0x62, 0x41, 0x55, 0x06, 0x92, 0x4b, 0x5f, 0xb4, 0x7f, 0x22, 0xc3, 0xf4, 0x32, 0xf6, + 0x5a, 0x9a, 0x9d, 0xb8, 0x27, 0x3a, 0x03, 0x33, 0xe4, 0xfa, 0xb6, 0x1a, 0x3b, 0x26, 0x49, 0x57, + 0xcd, 0xb8, 0x34, 0xe5, 0x3a, 0x98, 0x3d, 0x8f, 0x37, 0x4d, 0x0b, 0xd7, 0xb8, 0xb3, 0x94, 0x7c, + 0x62, 0x44, 0x78, 0x3a, 0x2e, 0x0e, 0xda, 0x02, 0x8f, 0xcd, 0x4d, 0xfb, 0x85, 0x19, 0xaa, 0x4a, + 0xc4, 0x98, 0xf3, 0x04, 0x98, 0x64, 0xc8, 0x7b, 0x66, 0x5a, 0x5c, 0xbf, 0xe8, 0xe7, 0x45, 0xaf, + 0xf3, 0x11, 0x2d, 0x73, 0x88, 0x3e, 0x36, 0x09, 0x13, 0x63, 0xb9, 0xdf, 0xbd, 0x10, 0x2a, 0x7f, + 0xe1, 0x52, 0xa5, 0x6d, 0xa3, 0xb5, 0x64, 0x98, 0x9e, 0x06, 0xf0, 0x1b, 0x87, 0x17, 0xd6, 0x22, + 0x94, 0xc2, 0x47, 0xae, 0x8f, 0x3d, 0xa8, 0xd7, 0x2b, 0x0e, 0xc2, 0xce, 0x88, 0x81, 0x11, 0x3b, + 0xe0, 0x27, 0xc2, 0x49, 0xfa, 0xe8, 0x7c, 0x5a, 0x86, 0x13, 0xfe, 0xf9, 0xa3, 0x55, 0xcd, 0x0e, + 0xda, 0x5d, 0x29, 0x19, 0x44, 0xdc, 0x81, 0x0f, 0xbf, 0xb1, 0x7c, 0x27, 0xd9, 0x98, 0xd1, 0x97, + 0x93, 0xd1, 0xa2, 0xa3, 0xdc, 0x04, 0xc7, 0x8c, 0xdd, 0x1d, 0x5f, 0xea, 0xa4, 0xc5, 0xb3, 0x16, + 0xbe, 0xff, 0x43, 0x92, 0x91, 0x49, 0x84, 0xf9, 0xb1, 0xcc, 0x29, 0xb9, 0x23, 0x5d, 0x8f, 0x49, + 0x04, 0x23, 0xfa, 0xe7, 0x4c, 0xa2, 0xde, 0x6d, 0xf0, 0x99, 0xaf, 0x04, 0xbd, 0xd4, 0x61, 0x1e, + 0xf8, 0xfa, 0x4e, 0x16, 0xe4, 0x62, 0x57, 0x47, 0x1f, 0x92, 0x60, 0xba, 0xee, 0x68, 0x96, 0x53, + 0xc7, 0xd6, 0x1e, 0xb6, 0xc2, 0x33, 0xf3, 0xd7, 0x0b, 0xcf, 0x35, 0x8a, 0x5d, 0x7d, 0x3e, 0x44, + 0x24, 0x42, 0x32, 0x5f, 0x10, 0x9a, 0x1f, 0xc4, 0xd3, 0x4a, 0x26, 0x18, 0x3c, 0xc4, 0x94, 0xef, + 0x04, 0x1c, 0x5b, 0xaf, 0xa9, 0x0d, 0x7f, 0x77, 0x7e, 0xa3, 0x5e, 0x5e, 0x2c, 0xc8, 0x0a, 0x82, + 0x93, 0xc4, 0x4f, 0x5a, 0xf5, 0x3f, 0xd4, 0x1b, 0x45, 0xb5, 0x51, 0x5e, 0x2c, 0x64, 0xd1, 0x6b, + 0x25, 0x80, 0xba, 0x63, 0x76, 0xf7, 0x8b, 0x50, 0xfc, 0xd0, 0x3d, 0xad, 0xb6, 0x47, 0x63, 0xe0, + 0xd9, 0xa1, 0xb8, 0x45, 0x9e, 0x58, 0x52, 0xc9, 0x04, 0x78, 0xcf, 0x10, 0x02, 0x3c, 0x09, 0x0a, + 0x93, 0x54, 0xb5, 0xd6, 0xf0, 0xa5, 0x24, 0x9f, 0x99, 0x80, 0x5c, 0x79, 0xa7, 0xeb, 0x5c, 0x3a, + 0xf3, 0x48, 0x98, 0xad, 0x3b, 0x16, 0xd6, 0x76, 0x42, 0x7b, 0x51, 0x8e, 0x79, 0x01, 0x1b, 0xde, + 0x5e, 0x14, 0x79, 0xb9, 0xfd, 0x36, 0x98, 0x30, 0xcc, 0xa6, 0xb6, 0xeb, 0x6c, 0x2b, 0x57, 0xef, + 0x0b, 0xe2, 0xc0, 0xba, 0x9b, 0x1a, 0x8b, 0x9a, 0xf5, 0xb5, 0x3b, 0xc8, 0x6e, 0x44, 0xde, 0x30, + 0x8b, 0xbb, 0xce, 0xf6, 0xc2, 0x55, 0x9f, 0xf8, 0x9b, 0xd3, 0x99, 0xcf, 0xfc, 0xcd, 0xe9, 0xcc, + 0x57, 0xff, 0xe6, 0x74, 0xe6, 0x57, 0xbf, 0x7e, 0xfa, 0xc8, 0x67, 0xbe, 0x7e, 0xfa, 0xc8, 0x97, + 0xbe, 0x7e, 0xfa, 0xc8, 0xcf, 0x48, 0xdd, 0xf3, 0xe7, 0xf3, 0x84, 0xca, 0xe3, 0xfe, 0xdf, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xc8, 0x6b, 0x41, 0xeb, 0xbb, 0x0a, 0x02, 0x00, } func (m *Rpc) Marshal() (dAtA []byte, err error) { @@ -78817,6 +78827,11 @@ func (m *RpcAccountLocalLinkNewChallengeRequest) MarshalToSizedBuffer(dAtA []byt _ = i var l int _ = l + if m.Scope != 0 { + i = encodeVarintCommands(dAtA, i, uint64(m.Scope)) + i-- + dAtA[i] = 0x10 + } if len(m.AppName) > 0 { i -= len(m.AppName) copy(dAtA[i:], m.AppName) @@ -121321,6 +121336,9 @@ func (m *RpcAccountLocalLinkNewChallengeRequest) Size() (n int) { if l > 0 { n += 1 + l + sovCommands(uint64(l)) } + if m.Scope != 0 { + n += 1 + sovCommands(uint64(m.Scope)) + } return n } @@ -151763,6 +151781,25 @@ func (m *RpcAccountLocalLinkNewChallengeRequest) Unmarshal(dAtA []byte) error { } m.AppName = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Scope", wireType) + } + m.Scope = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Scope |= model.AccountAuthLocalApiScope(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipCommands(dAtA[iNdEx:]) diff --git a/pb/events.pb.go b/pb/events.pb.go index ac161eca4..c0d64043a 100644 --- a/pb/events.pb.go +++ b/pb/events.pb.go @@ -333,6 +333,7 @@ type EventMessage struct { // *EventMessageValueOfAccountConfigUpdate // *EventMessageValueOfAccountUpdate // *EventMessageValueOfAccountLinkChallenge + // *EventMessageValueOfAccountLinkChallengeHide // *EventMessageValueOfObjectDetailsSet // *EventMessageValueOfObjectDetailsAmend // *EventMessageValueOfObjectDetailsUnset @@ -459,6 +460,9 @@ type EventMessageValueOfAccountUpdate struct { type EventMessageValueOfAccountLinkChallenge struct { AccountLinkChallenge *EventAccountLinkChallenge `protobuf:"bytes,204,opt,name=accountLinkChallenge,proto3,oneof" json:"accountLinkChallenge,omitempty"` } +type EventMessageValueOfAccountLinkChallengeHide struct { + AccountLinkChallengeHide *EventAccountLinkChallengeHide `protobuf:"bytes,205,opt,name=accountLinkChallengeHide,proto3,oneof" json:"accountLinkChallengeHide,omitempty"` +} type EventMessageValueOfObjectDetailsSet struct { ObjectDetailsSet *EventObjectDetailsSet `protobuf:"bytes,16,opt,name=objectDetailsSet,proto3,oneof" json:"objectDetailsSet,omitempty"` } @@ -672,6 +676,7 @@ func (*EventMessageValueOfAccountDetails) IsEventMessageValue() func (*EventMessageValueOfAccountConfigUpdate) IsEventMessageValue() {} func (*EventMessageValueOfAccountUpdate) IsEventMessageValue() {} func (*EventMessageValueOfAccountLinkChallenge) IsEventMessageValue() {} +func (*EventMessageValueOfAccountLinkChallengeHide) IsEventMessageValue() {} func (*EventMessageValueOfObjectDetailsSet) IsEventMessageValue() {} func (*EventMessageValueOfObjectDetailsAmend) IsEventMessageValue() {} func (*EventMessageValueOfObjectDetailsUnset) IsEventMessageValue() {} @@ -791,6 +796,13 @@ func (m *EventMessage) GetAccountLinkChallenge() *EventAccountLinkChallenge { return nil } +func (m *EventMessage) GetAccountLinkChallengeHide() *EventAccountLinkChallengeHide { + if x, ok := m.GetValue().(*EventMessageValueOfAccountLinkChallengeHide); ok { + return x.AccountLinkChallengeHide + } + return nil +} + func (m *EventMessage) GetObjectDetailsSet() *EventObjectDetailsSet { if x, ok := m.GetValue().(*EventMessageValueOfObjectDetailsSet); ok { return x.ObjectDetailsSet @@ -1282,6 +1294,7 @@ func (*EventMessage) XXX_OneofWrappers() []interface{} { (*EventMessageValueOfAccountConfigUpdate)(nil), (*EventMessageValueOfAccountUpdate)(nil), (*EventMessageValueOfAccountLinkChallenge)(nil), + (*EventMessageValueOfAccountLinkChallengeHide)(nil), (*EventMessageValueOfObjectDetailsSet)(nil), (*EventMessageValueOfObjectDetailsAmend)(nil), (*EventMessageValueOfObjectDetailsUnset)(nil), @@ -1883,6 +1896,7 @@ func (m *EventAccountUpdate) GetStatus() *model.AccountStatus { type EventAccountLinkChallenge struct { Challenge string `protobuf:"bytes,1,opt,name=challenge,proto3" json:"challenge,omitempty"` ClientInfo *EventAccountLinkChallengeClientInfo `protobuf:"bytes,2,opt,name=clientInfo,proto3" json:"clientInfo,omitempty"` + Scope model.AccountAuthLocalApiScope `protobuf:"varint,3,opt,name=scope,proto3,enum=anytype.model.AccountAuthLocalApiScope" json:"scope,omitempty"` } func (m *EventAccountLinkChallenge) Reset() { *m = EventAccountLinkChallenge{} } @@ -1932,6 +1946,13 @@ func (m *EventAccountLinkChallenge) GetClientInfo() *EventAccountLinkChallengeCl return nil } +func (m *EventAccountLinkChallenge) GetScope() model.AccountAuthLocalApiScope { + if m != nil { + return m.Scope + } + return model.AccountAuth_Limited +} + type EventAccountLinkChallengeClientInfo struct { ProcessName string `protobuf:"bytes,1,opt,name=processName,proto3" json:"processName,omitempty"` ProcessPath string `protobuf:"bytes,2,opt,name=processPath,proto3" json:"processPath,omitempty"` @@ -1992,6 +2013,50 @@ func (m *EventAccountLinkChallengeClientInfo) GetSignatureVerified() bool { return false } +type EventAccountLinkChallengeHide struct { + Challenge string `protobuf:"bytes,1,opt,name=challenge,proto3" json:"challenge,omitempty"` +} + +func (m *EventAccountLinkChallengeHide) Reset() { *m = EventAccountLinkChallengeHide{} } +func (m *EventAccountLinkChallengeHide) String() string { return proto.CompactTextString(m) } +func (*EventAccountLinkChallengeHide) ProtoMessage() {} +func (*EventAccountLinkChallengeHide) Descriptor() ([]byte, []int) { + return fileDescriptor_a966342d378ae5f5, []int{0, 2, 5} +} +func (m *EventAccountLinkChallengeHide) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *EventAccountLinkChallengeHide) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_EventAccountLinkChallengeHide.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *EventAccountLinkChallengeHide) XXX_Merge(src proto.Message) { + xxx_messageInfo_EventAccountLinkChallengeHide.Merge(m, src) +} +func (m *EventAccountLinkChallengeHide) XXX_Size() int { + return m.Size() +} +func (m *EventAccountLinkChallengeHide) XXX_DiscardUnknown() { + xxx_messageInfo_EventAccountLinkChallengeHide.DiscardUnknown(m) +} + +var xxx_messageInfo_EventAccountLinkChallengeHide proto.InternalMessageInfo + +func (m *EventAccountLinkChallengeHide) GetChallenge() string { + if m != nil { + return m.Challenge + } + return "" +} + type EventObject struct { } @@ -12070,6 +12135,7 @@ func init() { proto.RegisterType((*EventAccountUpdate)(nil), "anytype.Event.Account.Update") proto.RegisterType((*EventAccountLinkChallenge)(nil), "anytype.Event.Account.LinkChallenge") proto.RegisterType((*EventAccountLinkChallengeClientInfo)(nil), "anytype.Event.Account.LinkChallenge.ClientInfo") + proto.RegisterType((*EventAccountLinkChallengeHide)(nil), "anytype.Event.Account.LinkChallengeHide") proto.RegisterType((*EventObject)(nil), "anytype.Event.Object") proto.RegisterType((*EventObjectDetails)(nil), "anytype.Event.Object.Details") proto.RegisterType((*EventObjectDetailsAmend)(nil), "anytype.Event.Object.Details.Amend") @@ -12268,392 +12334,395 @@ func init() { func init() { proto.RegisterFile("pb/protos/events.proto", fileDescriptor_a966342d378ae5f5) } var fileDescriptor_a966342d378ae5f5 = []byte{ - // 6151 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5c, 0x4b, 0x8c, 0x1c, 0xc7, - 0x79, 0x9e, 0xf7, 0xe3, 0x5f, 0x72, 0x39, 0x2c, 0x52, 0x54, 0xab, 0x45, 0x51, 0xd4, 0x8a, 0xa4, - 0x68, 0x89, 0x1a, 0x52, 0x24, 0x45, 0xca, 0xb4, 0xf8, 0xd8, 0x17, 0x35, 0xc3, 0xc7, 0x72, 0x5d, - 0x4b, 0xd2, 0xb2, 0x6c, 0x04, 0xee, 0x9d, 0xae, 0x9d, 0x6d, 0x73, 0xb6, 0x7b, 0xdc, 0xdd, 0xbb, - 0xe4, 0xda, 0x8e, 0xe3, 0xd8, 0x0e, 0x82, 0x00, 0x09, 0x92, 0x43, 0x90, 0x04, 0xb9, 0x04, 0x08, - 0x12, 0x20, 0x87, 0x20, 0x48, 0x90, 0x4b, 0x72, 0x88, 0x11, 0x20, 0x08, 0xf2, 0x3c, 0xd8, 0xb7, - 0x5c, 0x02, 0x1b, 0xf2, 0x25, 0x87, 0xe4, 0xe0, 0x04, 0x08, 0x72, 0x0a, 0x82, 0x7a, 0x74, 0x75, - 0x55, 0x3f, 0xa6, 0x67, 0x2c, 0x39, 0x0f, 0xc4, 0xa7, 0x99, 0xaa, 0xfa, 0xff, 0xef, 0xaf, 0xc7, - 0xff, 0xff, 0x55, 0xf5, 0x57, 0x75, 0xc1, 0xb1, 0xf1, 0xe6, 0xf9, 0xb1, 0xef, 0x85, 0x5e, 0x70, - 0x9e, 0xec, 0x11, 0x37, 0x0c, 0xba, 0x2c, 0x85, 0x9a, 0x96, 0xbb, 0x1f, 0xee, 0x8f, 0x89, 0x79, - 0x6a, 0xfc, 0x64, 0x78, 0x7e, 0xe4, 0x6c, 0x9e, 0x1f, 0x6f, 0x9e, 0xdf, 0xf1, 0x6c, 0x32, 0x8a, - 0xc8, 0x59, 0x42, 0x90, 0x9b, 0xc7, 0x87, 0x9e, 0x37, 0x1c, 0x11, 0x5e, 0xb6, 0xb9, 0xbb, 0x75, - 0x3e, 0x08, 0xfd, 0xdd, 0x41, 0xc8, 0x4b, 0x17, 0xfe, 0xec, 0xdb, 0x65, 0xa8, 0xaf, 0x52, 0x78, - 0x74, 0x11, 0x5a, 0x3b, 0x24, 0x08, 0xac, 0x21, 0x09, 0x8c, 0xf2, 0xc9, 0xea, 0xd9, 0xb9, 0x8b, - 0xc7, 0xba, 0x42, 0x54, 0x97, 0x51, 0x74, 0xef, 0xf3, 0x62, 0x2c, 0xe9, 0xd0, 0x71, 0x68, 0x0f, - 0x3c, 0x37, 0x24, 0xcf, 0xc2, 0xbe, 0x6d, 0x54, 0x4e, 0x96, 0xcf, 0xb6, 0x71, 0x9c, 0x81, 0x2e, - 0x43, 0xdb, 0x71, 0x9d, 0xd0, 0xb1, 0x42, 0xcf, 0x37, 0xaa, 0x27, 0xcb, 0x1a, 0x24, 0xab, 0x64, - 0x77, 0x71, 0x30, 0xf0, 0x76, 0xdd, 0x10, 0xc7, 0x84, 0xc8, 0x80, 0x66, 0xe8, 0x5b, 0x03, 0xd2, - 0xb7, 0x8d, 0x1a, 0x43, 0x8c, 0x92, 0xe6, 0xf7, 0x2f, 0x40, 0x53, 0xd4, 0x01, 0xbd, 0x00, 0xcd, - 0x60, 0xcc, 0xa9, 0xbe, 0x55, 0xe6, 0x64, 0x22, 0x8d, 0x6e, 0xc2, 0x9c, 0xc5, 0x61, 0x37, 0xb6, - 0xbd, 0xa7, 0x46, 0x99, 0x09, 0x7e, 0x31, 0xd1, 0x16, 0x21, 0xb8, 0x4b, 0x49, 0x7a, 0x25, 0xac, - 0x72, 0xa0, 0x3e, 0xcc, 0x8b, 0xe4, 0x0a, 0x09, 0x2d, 0x67, 0x14, 0x18, 0x7f, 0xc3, 0x41, 0x4e, - 0xe4, 0x80, 0x08, 0xb2, 0x5e, 0x09, 0x27, 0x18, 0xd1, 0x67, 0xe1, 0x88, 0xc8, 0x59, 0xf6, 0xdc, - 0x2d, 0x67, 0xf8, 0x68, 0x6c, 0x5b, 0x21, 0x31, 0xfe, 0x96, 0xe3, 0x9d, 0xca, 0xc1, 0xe3, 0xb4, - 0x5d, 0x4e, 0xdc, 0x2b, 0xe1, 0x2c, 0x0c, 0x74, 0x1b, 0x0e, 0x8a, 0x6c, 0x01, 0xfa, 0x77, 0x1c, - 0xf4, 0xa5, 0x1c, 0x50, 0x89, 0xa6, 0xb3, 0xa1, 0xcf, 0xc1, 0x51, 0x91, 0x71, 0xcf, 0x71, 0x9f, - 0x2c, 0x6f, 0x5b, 0xa3, 0x11, 0x71, 0x87, 0xc4, 0xf8, 0xfb, 0xc9, 0x75, 0xd4, 0x88, 0x7b, 0x25, - 0x9c, 0x09, 0x82, 0x1e, 0x40, 0xc7, 0xdb, 0xfc, 0x22, 0x19, 0x44, 0x1d, 0xb2, 0x41, 0x42, 0xa3, - 0xc3, 0x70, 0x5f, 0x49, 0xe0, 0x3e, 0x60, 0x64, 0x51, 0x57, 0x76, 0x37, 0x48, 0xd8, 0x2b, 0xe1, - 0x14, 0x33, 0x7a, 0x04, 0x48, 0xcb, 0x5b, 0xdc, 0x21, 0xae, 0x6d, 0x5c, 0x64, 0x90, 0xaf, 0x4e, - 0x86, 0x64, 0xa4, 0xbd, 0x12, 0xce, 0x00, 0x48, 0xc1, 0x3e, 0x72, 0x03, 0x12, 0x1a, 0x97, 0xa6, - 0x81, 0x65, 0xa4, 0x29, 0x58, 0x96, 0x4b, 0xfb, 0x96, 0xe7, 0x62, 0x32, 0xb2, 0x42, 0xc7, 0x73, - 0x45, 0x7d, 0x2f, 0x33, 0xe0, 0xd3, 0xd9, 0xc0, 0x92, 0x56, 0xd6, 0x38, 0x13, 0x04, 0xfd, 0x14, - 0x3c, 0x97, 0xc8, 0xc7, 0x64, 0xc7, 0xdb, 0x23, 0xc6, 0xdb, 0x0c, 0xfd, 0x4c, 0x11, 0x3a, 0xa7, - 0xee, 0x95, 0x70, 0x36, 0x0c, 0x5a, 0x82, 0x03, 0x51, 0x01, 0x83, 0xbd, 0xc2, 0x60, 0x8f, 0xe7, - 0xc1, 0x0a, 0x30, 0x8d, 0x87, 0xda, 0x22, 0x4f, 0x2f, 0x8f, 0xbc, 0x80, 0x18, 0x8b, 0x99, 0xb6, - 0x28, 0x20, 0x18, 0x09, 0xb5, 0x45, 0x85, 0x43, 0x6d, 0x64, 0x10, 0xfa, 0xce, 0x80, 0x55, 0x90, - 0x6a, 0xd1, 0xd5, 0xc9, 0x8d, 0x8c, 0x89, 0x85, 0x2a, 0x65, 0xc3, 0x20, 0x0c, 0x87, 0x82, 0xdd, - 0xcd, 0x60, 0xe0, 0x3b, 0x63, 0x9a, 0xb7, 0x68, 0xdb, 0xc6, 0xbb, 0x93, 0x90, 0x37, 0x14, 0xe2, - 0xee, 0xa2, 0x4d, 0x47, 0x27, 0x09, 0x80, 0x3e, 0x07, 0x48, 0xcd, 0x12, 0xdd, 0x77, 0x9d, 0xc1, - 0x7e, 0x62, 0x0a, 0x58, 0xd9, 0x97, 0x19, 0x30, 0xc8, 0x82, 0xa3, 0x6a, 0xee, 0xba, 0x17, 0x38, - 0xf4, 0xd7, 0xb8, 0xc1, 0xe0, 0xdf, 0x98, 0x02, 0x3e, 0x62, 0xa1, 0x8a, 0x95, 0x05, 0x95, 0x14, - 0xb1, 0x4c, 0xcd, 0x9a, 0xf8, 0x81, 0x71, 0x73, 0x6a, 0x11, 0x11, 0x4b, 0x52, 0x44, 0x94, 0x9f, - 0xec, 0xa2, 0xf7, 0x7c, 0x6f, 0x77, 0x1c, 0x18, 0xb7, 0xa6, 0xee, 0x22, 0xce, 0x90, 0xec, 0x22, - 0x9e, 0x8b, 0xae, 0x40, 0x6b, 0x73, 0xe4, 0x0d, 0x9e, 0xd0, 0xc1, 0xac, 0x30, 0x48, 0x23, 0x01, - 0xb9, 0x44, 0x8b, 0xc5, 0xf0, 0x49, 0x5a, 0xaa, 0xac, 0xec, 0xff, 0x0a, 0x19, 0x91, 0x90, 0x88, - 0x19, 0xeb, 0xc5, 0x4c, 0x56, 0x4e, 0x42, 0x95, 0x55, 0xe1, 0x40, 0x2b, 0x30, 0xb7, 0xe5, 0x8c, - 0x48, 0xf0, 0x68, 0x3c, 0xf2, 0x2c, 0x3e, 0x7d, 0xcd, 0x5d, 0x3c, 0x99, 0x09, 0x70, 0x3b, 0xa6, - 0xa3, 0x28, 0x0a, 0x1b, 0xba, 0x01, 0xed, 0x1d, 0xcb, 0x7f, 0x12, 0xf4, 0xdd, 0x2d, 0xcf, 0xa8, - 0x67, 0x4e, 0x3c, 0x1c, 0xe3, 0x7e, 0x44, 0xd5, 0x2b, 0xe1, 0x98, 0x85, 0x4e, 0x5f, 0xac, 0x52, - 0x1b, 0x24, 0xbc, 0xed, 0x90, 0x91, 0x1d, 0x18, 0x0d, 0x06, 0xf2, 0x72, 0x26, 0xc8, 0x06, 0x09, - 0xbb, 0x9c, 0x8c, 0x4e, 0x5f, 0x3a, 0x23, 0x7a, 0x1f, 0x8e, 0x44, 0x39, 0xcb, 0xdb, 0xce, 0xc8, - 0xf6, 0x89, 0xdb, 0xb7, 0x03, 0xa3, 0x99, 0x39, 0x33, 0xc4, 0x78, 0x0a, 0x2d, 0x9d, 0xbd, 0x32, - 0x20, 0xa8, 0x67, 0x8c, 0xb2, 0x55, 0x93, 0x34, 0x5a, 0x99, 0x9e, 0x31, 0x86, 0x56, 0x89, 0xa9, - 0x76, 0x65, 0x81, 0x20, 0x1b, 0x9e, 0x8f, 0xf2, 0x97, 0xac, 0xc1, 0x93, 0xa1, 0xef, 0xed, 0xba, - 0xf6, 0xb2, 0x37, 0xf2, 0x7c, 0xa3, 0xcd, 0xf0, 0xcf, 0xe6, 0xe2, 0x27, 0xe8, 0x7b, 0x25, 0x9c, - 0x07, 0x85, 0x96, 0xe1, 0x40, 0x54, 0xf4, 0x90, 0x3c, 0x0b, 0x0d, 0xc8, 0x9c, 0x7e, 0x63, 0x68, - 0x4a, 0x44, 0x1d, 0xa4, 0xca, 0xa4, 0x82, 0x50, 0x95, 0x30, 0xe6, 0x0a, 0x40, 0x28, 0x91, 0x0a, - 0x42, 0xd3, 0x2a, 0x08, 0x9d, 0x7e, 0x8d, 0x83, 0x05, 0x20, 0x94, 0x48, 0x05, 0xa1, 0x69, 0x3a, - 0x55, 0xcb, 0x96, 0x7a, 0xde, 0x13, 0xaa, 0x4f, 0xc6, 0x7c, 0xe6, 0x54, 0xad, 0xf4, 0x96, 0x20, - 0xa4, 0x53, 0x75, 0x92, 0x99, 0x2e, 0x50, 0xa2, 0xbc, 0xc5, 0x91, 0x33, 0x74, 0x8d, 0x43, 0x13, - 0x74, 0x99, 0xa2, 0x31, 0x2a, 0xba, 0x40, 0xd1, 0xd8, 0xd0, 0x2d, 0x61, 0x96, 0x1b, 0x24, 0x5c, - 0x71, 0xf6, 0x8c, 0xc3, 0x99, 0xd3, 0x50, 0x8c, 0xb2, 0xe2, 0xec, 0x49, 0xbb, 0xe4, 0x2c, 0x6a, - 0xd3, 0xa2, 0x49, 0xce, 0x78, 0xae, 0xa0, 0x69, 0x11, 0xa1, 0xda, 0xb4, 0x28, 0x4f, 0x6d, 0xda, - 0x3d, 0x2b, 0x24, 0xcf, 0x8c, 0x17, 0x0a, 0x9a, 0xc6, 0xa8, 0xd4, 0xa6, 0xb1, 0x0c, 0x3a, 0xbb, - 0x45, 0x19, 0x8f, 0x89, 0x1f, 0x3a, 0x03, 0x6b, 0xc4, 0xbb, 0xea, 0x54, 0xe6, 0x1c, 0x14, 0xe3, - 0x69, 0xd4, 0x74, 0x76, 0xcb, 0x84, 0x51, 0x1b, 0xfe, 0xd0, 0xda, 0x1c, 0x11, 0xec, 0x3d, 0x35, - 0x4e, 0x17, 0x34, 0x3c, 0x22, 0x54, 0x1b, 0x1e, 0xe5, 0xa9, 0xbe, 0xe5, 0x33, 0x8e, 0x3d, 0x24, - 0xa1, 0x71, 0xb6, 0xc0, 0xb7, 0x70, 0x32, 0xd5, 0xb7, 0xf0, 0x1c, 0xe9, 0x01, 0x56, 0xac, 0xd0, - 0xda, 0x73, 0xc8, 0xd3, 0xc7, 0x0e, 0x79, 0x4a, 0x27, 0xf6, 0x23, 0x13, 0x3c, 0x40, 0x44, 0xdb, - 0x15, 0xc4, 0xd2, 0x03, 0x24, 0x40, 0xa4, 0x07, 0x50, 0xf3, 0x85, 0x5b, 0x3f, 0x3a, 0xc1, 0x03, - 0x68, 0xf8, 0xd2, 0xc7, 0xe7, 0x41, 0x21, 0x0b, 0x8e, 0xa5, 0x8a, 0x1e, 0xf8, 0x36, 0xf1, 0x8d, - 0x97, 0x98, 0x90, 0xd7, 0x8a, 0x85, 0x30, 0xf2, 0x5e, 0x09, 0xe7, 0x00, 0xa5, 0x44, 0x6c, 0x78, - 0xbb, 0xfe, 0x80, 0xd0, 0x7e, 0x7a, 0x75, 0x1a, 0x11, 0x92, 0x3c, 0x25, 0x42, 0x96, 0xa0, 0x3d, - 0x78, 0x49, 0x96, 0x50, 0xc1, 0x6c, 0x16, 0x65, 0xd2, 0xc5, 0xc6, 0xe2, 0x0c, 0x93, 0xd4, 0x9d, - 0x2c, 0x29, 0xc9, 0xd5, 0x2b, 0xe1, 0xc9, 0xb0, 0x68, 0x1f, 0x4e, 0x68, 0x04, 0x7c, 0x9e, 0x57, - 0x05, 0xbf, 0xc6, 0x04, 0x9f, 0x9f, 0x2c, 0x38, 0xc5, 0xd6, 0x2b, 0xe1, 0x02, 0x60, 0x34, 0x86, - 0x17, 0xb5, 0xce, 0x88, 0x0c, 0x5b, 0xa8, 0xc8, 0x57, 0x99, 0xdc, 0x73, 0x93, 0xe5, 0xea, 0x3c, - 0xbd, 0x12, 0x9e, 0x04, 0x89, 0x86, 0x60, 0x64, 0x16, 0xd3, 0x91, 0xfc, 0x4a, 0xe6, 0xb2, 0x27, - 0x47, 0x1c, 0x1f, 0xcb, 0x5c, 0xb0, 0x4c, 0xcd, 0x17, 0xdd, 0xf9, 0xd3, 0xd3, 0x6a, 0xbe, 0xec, - 0xc7, 0x3c, 0x28, 0x6d, 0xec, 0x68, 0xd1, 0x43, 0xcb, 0x1f, 0x92, 0x90, 0x77, 0x74, 0xdf, 0xa6, - 0x8d, 0xfa, 0xda, 0x34, 0x63, 0x97, 0x62, 0xd3, 0xc6, 0x2e, 0x13, 0x18, 0x05, 0x70, 0x5c, 0xa3, - 0xe8, 0x07, 0xcb, 0xde, 0x68, 0x44, 0x06, 0x51, 0x6f, 0xfe, 0x0c, 0x13, 0xfc, 0xe6, 0x64, 0xc1, - 0x09, 0xa6, 0x5e, 0x09, 0x4f, 0x04, 0x4d, 0xb5, 0xf7, 0xc1, 0xc8, 0x4e, 0xe8, 0x8c, 0x31, 0x95, - 0xae, 0x26, 0xd9, 0x52, 0xed, 0x4d, 0x51, 0xa4, 0x74, 0x55, 0xa1, 0xa0, 0xcd, 0x7d, 0x7e, 0x1a, - 0x5d, 0xd5, 0x79, 0x52, 0xba, 0xaa, 0x17, 0xd3, 0xd9, 0x6d, 0x37, 0x20, 0x3e, 0xc3, 0xb8, 0xe3, - 0x39, 0xae, 0xf1, 0x72, 0xe6, 0xec, 0xf6, 0x28, 0x20, 0xbe, 0x10, 0x44, 0xa9, 0xe8, 0xec, 0xa6, - 0xb1, 0x69, 0x38, 0xf7, 0xc8, 0x56, 0x68, 0x9c, 0x2c, 0xc2, 0xa1, 0x54, 0x1a, 0x0e, 0xcd, 0xa0, - 0x33, 0x85, 0xcc, 0xd8, 0x20, 0x74, 0x54, 0xb0, 0xe5, 0x0e, 0x89, 0xf1, 0x4a, 0xe6, 0x4c, 0xa1, - 0xc0, 0x29, 0xc4, 0x74, 0xa6, 0xc8, 0x02, 0xa1, 0x3b, 0x7f, 0x99, 0x4f, 0x57, 0x64, 0x1c, 0x7a, - 0x21, 0x73, 0xe7, 0xaf, 0x40, 0x4b, 0x52, 0xba, 0x07, 0x49, 0x03, 0xa0, 0x4f, 0x40, 0x6d, 0xec, - 0xb8, 0x43, 0xc3, 0x66, 0x40, 0x47, 0x12, 0x40, 0xeb, 0x8e, 0x3b, 0xec, 0x95, 0x30, 0x23, 0x41, - 0xef, 0x02, 0x8c, 0x7d, 0x6f, 0x40, 0x82, 0x60, 0x8d, 0x3c, 0x35, 0x08, 0x63, 0x30, 0x93, 0x0c, - 0x9c, 0xa0, 0xbb, 0x46, 0xe8, 0xbc, 0xac, 0xd0, 0xa3, 0x55, 0x38, 0x28, 0x52, 0xc2, 0xca, 0xb7, - 0x32, 0x17, 0x7f, 0x11, 0x40, 0x1c, 0x05, 0xd2, 0xb8, 0xe8, 0xde, 0x47, 0x64, 0xac, 0x78, 0x2e, - 0x31, 0x86, 0x99, 0x7b, 0x9f, 0x08, 0x84, 0x92, 0xd0, 0x35, 0x96, 0xc2, 0x81, 0x96, 0xe0, 0x40, - 0xb8, 0xed, 0x13, 0xcb, 0xde, 0x08, 0xad, 0x70, 0x37, 0x30, 0xdc, 0xcc, 0x65, 0x1a, 0x2f, 0xec, - 0x3e, 0x64, 0x94, 0x74, 0x09, 0xaa, 0xf2, 0xa0, 0x35, 0xe8, 0xd0, 0x8d, 0xd0, 0x3d, 0x67, 0xc7, - 0x09, 0x31, 0xb1, 0x06, 0xdb, 0xc4, 0x36, 0xbc, 0xcc, 0x4d, 0x14, 0x5d, 0xf6, 0x76, 0x55, 0x3a, - 0xba, 0x5a, 0x49, 0xf2, 0xa2, 0x1e, 0xcc, 0xd3, 0xbc, 0x8d, 0xb1, 0x35, 0x20, 0x8f, 0x02, 0x6b, - 0x48, 0x8c, 0x71, 0xa6, 0x06, 0x32, 0xb4, 0x98, 0x8a, 0x2e, 0x56, 0x74, 0xbe, 0x08, 0xe9, 0x9e, - 0x37, 0xb0, 0x46, 0x1c, 0xe9, 0x4b, 0xf9, 0x48, 0x31, 0x55, 0x84, 0x14, 0xe7, 0x68, 0x6d, 0xe4, - 0x7d, 0x6f, 0x1b, 0x7b, 0x05, 0x6d, 0x14, 0x74, 0x5a, 0x1b, 0x45, 0x1e, 0xc5, 0x73, 0xbd, 0xd0, - 0xd9, 0x72, 0x06, 0xc2, 0x7e, 0x5d, 0xdb, 0xf0, 0x33, 0xf1, 0xd6, 0x14, 0xb2, 0xee, 0x06, 0x8f, - 0x2c, 0xa5, 0x78, 0xd1, 0x43, 0x40, 0x6a, 0x9e, 0x50, 0xaa, 0x80, 0x21, 0x2e, 0x4c, 0x42, 0x94, - 0x9a, 0x95, 0xc1, 0x4f, 0x6b, 0x39, 0xb6, 0xf6, 0xe9, 0xf6, 0x76, 0xc9, 0xf7, 0x2c, 0x7b, 0x60, - 0x05, 0xa1, 0x11, 0x66, 0xd6, 0x72, 0x9d, 0x93, 0x75, 0x25, 0x1d, 0xad, 0x65, 0x92, 0x97, 0xe2, - 0xed, 0x90, 0x9d, 0x4d, 0xe2, 0x07, 0xdb, 0xce, 0x58, 0xd4, 0x71, 0x37, 0x13, 0xef, 0xbe, 0x24, - 0x8b, 0x6b, 0x98, 0xe2, 0xa5, 0x0b, 0x71, 0x16, 0x3e, 0xde, 0xd8, 0x77, 0x07, 0x5c, 0x19, 0x05, - 0xe8, 0xd3, 0xcc, 0x85, 0x38, 0xd3, 0x8c, 0x6e, 0x4c, 0x1c, 0x43, 0x67, 0xc3, 0xa0, 0xbb, 0x70, - 0x68, 0x7c, 0x71, 0xac, 0x21, 0x3f, 0xcb, 0x5c, 0x38, 0xaf, 0x5f, 0x5c, 0x4f, 0x42, 0x26, 0x39, - 0xa9, 0xa9, 0x39, 0x3b, 0x63, 0xcf, 0x0f, 0x6f, 0x3b, 0xae, 0x13, 0x6c, 0x1b, 0xfb, 0x99, 0xa6, - 0xd6, 0x67, 0x24, 0x5d, 0x4e, 0x43, 0x4d, 0x4d, 0xe5, 0x41, 0x97, 0xa1, 0x39, 0xd8, 0xb6, 0xc2, - 0x45, 0xdb, 0x36, 0xbe, 0xce, 0x03, 0xbd, 0xcf, 0x27, 0xf8, 0x97, 0xb7, 0xad, 0x50, 0x84, 0x48, - 0x22, 0x52, 0x74, 0x1d, 0x80, 0xfe, 0x15, 0x2d, 0xf8, 0xd9, 0x72, 0xa6, 0xaf, 0x62, 0x8c, 0xb2, - 0xf6, 0x0a, 0x03, 0x7a, 0x1f, 0x8e, 0xc4, 0x29, 0x6a, 0xa4, 0x7c, 0xcf, 0xff, 0x8d, 0x72, 0xa6, - 0xb7, 0x55, 0x70, 0x24, 0x6d, 0xaf, 0x84, 0xb3, 0x20, 0xa2, 0x8a, 0x89, 0xb9, 0xf8, 0x9b, 0x13, - 0x2a, 0x26, 0xe7, 0x5d, 0x85, 0x61, 0xa9, 0x09, 0xf5, 0x3d, 0x6b, 0xb4, 0x4b, 0xcc, 0x6f, 0x57, - 0xa0, 0x46, 0xc9, 0x4c, 0x02, 0x55, 0xda, 0xe0, 0x79, 0xa8, 0x38, 0xb6, 0xc1, 0x0f, 0x18, 0x2a, - 0x8e, 0x8d, 0x0c, 0x68, 0x7a, 0x74, 0x1d, 0x29, 0x8f, 0x3b, 0xa2, 0x24, 0xed, 0x50, 0x71, 0x2c, - 0x22, 0x02, 0x47, 0x66, 0xe2, 0xa8, 0x83, 0xc2, 0x46, 0x27, 0x28, 0x11, 0xa9, 0x69, 0x40, 0x43, - 0x4c, 0xf3, 0x09, 0x49, 0xe6, 0x1a, 0x34, 0x44, 0xaf, 0x25, 0xeb, 0xa0, 0x48, 0xaa, 0x4c, 0x2f, - 0x89, 0xc0, 0xa1, 0x64, 0xa7, 0x25, 0x81, 0x97, 0xa0, 0xed, 0xcb, 0x41, 0xa9, 0x24, 0x62, 0x3c, - 0x29, 0xe8, 0xae, 0x04, 0xc2, 0x31, 0x9b, 0xf9, 0x47, 0x75, 0x68, 0x8a, 0x23, 0x02, 0x73, 0x0d, - 0x6a, 0xec, 0x3c, 0xe5, 0x28, 0xd4, 0x1d, 0xd7, 0x26, 0xcf, 0x98, 0xa8, 0x3a, 0xe6, 0x09, 0x74, - 0x01, 0x9a, 0xe2, 0xc8, 0x40, 0xc8, 0xca, 0x3b, 0x1b, 0x8a, 0xc8, 0xcc, 0x0f, 0xa0, 0x19, 0x9d, - 0xab, 0x1c, 0x87, 0xf6, 0xd8, 0xf7, 0xa8, 0x33, 0xec, 0x47, 0x2d, 0x88, 0x33, 0xd0, 0x5b, 0xd0, - 0xb4, 0xc5, 0xc9, 0x4d, 0x45, 0xe8, 0x36, 0x3f, 0x05, 0xeb, 0x46, 0xa7, 0x60, 0xdd, 0x0d, 0x76, - 0x0a, 0x86, 0x23, 0x3a, 0xf3, 0xeb, 0x65, 0x68, 0xf0, 0xe3, 0x15, 0x73, 0x4f, 0xf6, 0xfc, 0xdb, - 0xd0, 0x18, 0xb0, 0x3c, 0x23, 0x79, 0xb4, 0xa2, 0xd5, 0x50, 0x9c, 0xd7, 0x60, 0x41, 0x4c, 0xd9, - 0x02, 0x3e, 0x09, 0x56, 0x26, 0xb2, 0x71, 0xa3, 0xc6, 0x82, 0xf8, 0x7f, 0x4c, 0xee, 0x7f, 0x96, - 0xe1, 0xa0, 0x7e, 0x6a, 0x73, 0x1c, 0xda, 0x03, 0x79, 0x0e, 0x24, 0x7a, 0x77, 0xa0, 0x9c, 0xe9, - 0xc0, 0x60, 0xe4, 0x10, 0x37, 0x64, 0x01, 0xca, 0x4a, 0xe6, 0xba, 0x37, 0xf3, 0x94, 0xa8, 0xbb, - 0x2c, 0xd9, 0xb0, 0x02, 0x61, 0x7e, 0x0d, 0x20, 0x2e, 0x41, 0x27, 0xe5, 0x4a, 0x64, 0xcd, 0xda, - 0x89, 0xc4, 0xab, 0x59, 0x0a, 0xc5, 0xba, 0x15, 0x6e, 0x0b, 0x43, 0x54, 0xb3, 0xd0, 0x39, 0x38, - 0x1c, 0x38, 0x43, 0xd7, 0x0a, 0x77, 0x7d, 0xf2, 0x98, 0xf8, 0xce, 0x96, 0x43, 0x6c, 0x66, 0x96, - 0x2d, 0x9c, 0x2e, 0x30, 0x7f, 0xa1, 0x0d, 0x0d, 0xbe, 0xc3, 0x30, 0xff, 0xbd, 0x22, 0x75, 0xcc, - 0xfc, 0x8b, 0x32, 0xd4, 0xf9, 0x49, 0x4b, 0xd2, 0x50, 0x6e, 0xab, 0xfa, 0x55, 0xcd, 0x58, 0x7e, - 0x67, 0x9d, 0x3c, 0x75, 0xef, 0x92, 0xfd, 0xc7, 0xd4, 0xc9, 0x48, 0xa5, 0x43, 0xc7, 0xa0, 0x11, - 0xec, 0x6e, 0xf6, 0xed, 0xc0, 0xa8, 0x9e, 0xac, 0x9e, 0x6d, 0x63, 0x91, 0x32, 0xef, 0x40, 0x2b, - 0x22, 0x46, 0x1d, 0xa8, 0x3e, 0x21, 0xfb, 0x42, 0x38, 0xfd, 0x8b, 0xce, 0x09, 0x67, 0x25, 0xcd, - 0x26, 0xa9, 0xdb, 0x5c, 0x8a, 0xf0, 0x68, 0x5f, 0x80, 0x2a, 0x5d, 0xd3, 0x27, 0x9b, 0x30, 0xbb, - 0x89, 0xe4, 0xd6, 0x76, 0x19, 0xea, 0xfc, 0xb4, 0x2b, 0x29, 0x03, 0x41, 0xed, 0x09, 0xd9, 0xe7, - 0x7d, 0xd4, 0xc6, 0xec, 0x7f, 0x2e, 0xc8, 0x9f, 0x57, 0xe1, 0x80, 0x1a, 0xe1, 0x37, 0x57, 0x73, - 0x1d, 0xb0, 0xb5, 0x15, 0xaa, 0x0e, 0x58, 0x24, 0xa9, 0x97, 0x61, 0x58, 0x6c, 0x9c, 0xdb, 0x98, - 0x27, 0xcc, 0x2e, 0x34, 0xc4, 0xc1, 0x49, 0x12, 0x49, 0xd2, 0x57, 0x54, 0xfa, 0x3b, 0xd0, 0x92, - 0xe7, 0x20, 0x1f, 0x55, 0xb6, 0x0f, 0x2d, 0x79, 0xe0, 0x71, 0x14, 0xea, 0xa1, 0x17, 0x5a, 0x23, - 0x06, 0x57, 0xc5, 0x3c, 0x41, 0x0d, 0xcd, 0x25, 0xcf, 0xc2, 0x65, 0xe9, 0x05, 0xab, 0x38, 0xce, - 0xe0, 0x4e, 0x8e, 0xec, 0xf1, 0xd2, 0x2a, 0x2f, 0x95, 0x19, 0xb1, 0xcc, 0x9a, 0x2a, 0x73, 0x1f, - 0x1a, 0xe2, 0x14, 0x44, 0x96, 0x97, 0x95, 0x72, 0xb4, 0x08, 0xf5, 0x21, 0x2d, 0x17, 0xa3, 0xfe, - 0x46, 0xc2, 0x45, 0xf0, 0xcd, 0xcd, 0xb2, 0xe7, 0x86, 0x54, 0x8d, 0xf5, 0xe0, 0x0e, 0xe6, 0x9c, - 0x74, 0x08, 0x7d, 0x7e, 0xa4, 0xc5, 0x2d, 0x4a, 0xa4, 0xcc, 0xdf, 0x2d, 0x43, 0x5b, 0x9e, 0x21, - 0x9a, 0x1f, 0xe4, 0x19, 0xcf, 0x22, 0x1c, 0xf4, 0x05, 0x15, 0xf5, 0x0e, 0x91, 0x09, 0xbd, 0x98, - 0xa8, 0x09, 0x56, 0x68, 0xb0, 0xce, 0x61, 0xbe, 0x9b, 0x3b, 0xa8, 0x0b, 0x70, 0x20, 0x22, 0xbd, - 0x1b, 0xab, 0x9e, 0x96, 0x67, 0x9a, 0x92, 0xbb, 0x03, 0x55, 0xc7, 0xe6, 0xb7, 0x1d, 0xda, 0x98, - 0xfe, 0x35, 0xb7, 0xe0, 0x80, 0x7a, 0x92, 0x60, 0x3e, 0xce, 0xb6, 0x9e, 0x9b, 0x54, 0x8c, 0x72, - 0x6a, 0x51, 0x49, 0x6c, 0x97, 0xa2, 0x26, 0xc4, 0x24, 0x58, 0x63, 0x30, 0x9f, 0x87, 0x3a, 0x3f, - 0xdf, 0x4c, 0x4e, 0xfb, 0xbf, 0x39, 0x80, 0x3a, 0x1b, 0x04, 0xf3, 0x12, 0x37, 0x80, 0x73, 0xd0, - 0x60, 0x7b, 0xf5, 0xe8, 0x52, 0xc6, 0xd1, 0xac, 0x11, 0xc3, 0x82, 0xc6, 0x5c, 0x86, 0x39, 0xe5, - 0x64, 0x89, 0x6a, 0x2c, 0x2b, 0x90, 0x5a, 0x10, 0x25, 0x91, 0x09, 0x2d, 0x3a, 0x59, 0x0a, 0x07, - 0x4a, 0xdb, 0x2f, 0xd3, 0xe6, 0x29, 0xb9, 0x28, 0x31, 0xc5, 0x49, 0x5a, 0x5f, 0xf6, 0x92, 0x4c, - 0x9b, 0x9f, 0x87, 0xb6, 0x3c, 0x80, 0x42, 0x0f, 0xe0, 0x80, 0x38, 0x80, 0xe2, 0xfb, 0x67, 0x4a, - 0x3c, 0x5f, 0xa0, 0x5d, 0x74, 0xb3, 0xcc, 0xce, 0xb0, 0xba, 0x0f, 0xf7, 0xc7, 0x04, 0x6b, 0x00, - 0xe6, 0xcf, 0x9d, 0x65, 0x3d, 0x6f, 0x8e, 0xa1, 0x25, 0xa3, 0xee, 0xc9, 0x51, 0xb8, 0xca, 0x5d, - 0x63, 0xa5, 0xf0, 0xc8, 0x88, 0xf3, 0x53, 0x07, 0xcc, 0x3c, 0xa8, 0xf9, 0x22, 0x54, 0xef, 0x92, - 0x7d, 0x6a, 0x21, 0xdc, 0x91, 0x0a, 0x0b, 0xe1, 0x0e, 0xb3, 0x0f, 0x0d, 0x71, 0xfa, 0x95, 0x94, - 0x77, 0x1e, 0x1a, 0x5b, 0xfc, 0x40, 0xad, 0xc0, 0x65, 0x0a, 0x32, 0xf3, 0x26, 0xcc, 0xa9, 0x67, - 0x5e, 0x49, 0xbc, 0x93, 0x30, 0x37, 0x50, 0x4e, 0xd5, 0xf8, 0x30, 0xa8, 0x59, 0x26, 0xd1, 0xd5, - 0x31, 0x85, 0xb0, 0x9a, 0xa9, 0x87, 0xaf, 0x64, 0x76, 0xfb, 0x04, 0x6d, 0xbc, 0x0b, 0x87, 0x92, - 0x87, 0x5b, 0x49, 0x49, 0x67, 0xe1, 0xd0, 0x66, 0xe2, 0x28, 0x8d, 0xfb, 0xc0, 0x64, 0xb6, 0xd9, - 0x87, 0x3a, 0x3f, 0x7c, 0x48, 0x42, 0x5c, 0x80, 0xba, 0xc5, 0x0e, 0x37, 0x28, 0xe3, 0x7c, 0x6a, - 0xd5, 0x2a, 0xce, 0x64, 0x29, 0x05, 0xe6, 0x84, 0xa6, 0x03, 0x07, 0xf5, 0xf3, 0x8c, 0x24, 0x64, - 0x0f, 0x0e, 0xee, 0x69, 0xe7, 0x26, 0x1c, 0x7a, 0x21, 0x13, 0x5a, 0x83, 0xc2, 0x3a, 0xa3, 0xf9, - 0x8d, 0x06, 0xd4, 0xd8, 0x81, 0x5c, 0x52, 0xc4, 0x15, 0xa8, 0x85, 0xe4, 0x59, 0xb4, 0x46, 0x5d, - 0x98, 0x78, 0xba, 0xc7, 0xa3, 0x42, 0x8c, 0x1e, 0x7d, 0x12, 0xea, 0x41, 0xb8, 0x3f, 0x8a, 0x76, - 0x03, 0xaf, 0x4e, 0x66, 0xdc, 0xa0, 0xa4, 0x98, 0x73, 0x50, 0x56, 0x66, 0x0b, 0xe2, 0x00, 0xb9, - 0x80, 0x95, 0x19, 0x21, 0xe6, 0x1c, 0xe8, 0x26, 0xdd, 0xd6, 0x91, 0xc1, 0x13, 0x62, 0x8b, 0x93, - 0xe3, 0xd3, 0x93, 0x99, 0x97, 0x39, 0x31, 0x8e, 0xb8, 0xa8, 0xec, 0x01, 0x1b, 0xdd, 0xc6, 0x34, - 0xb2, 0xd9, 0x88, 0x63, 0xce, 0x81, 0x56, 0xa1, 0xed, 0x0c, 0x3c, 0x77, 0x75, 0xc7, 0xfb, 0xa2, - 0x23, 0x8e, 0x88, 0x5f, 0x9b, 0xcc, 0xde, 0x8f, 0xc8, 0x71, 0xcc, 0x19, 0xc1, 0xf4, 0x77, 0xe8, - 0x06, 0xa7, 0x35, 0x2d, 0x0c, 0x23, 0xc7, 0x31, 0xa7, 0x79, 0x5c, 0x8c, 0x67, 0xb6, 0x91, 0xdf, - 0x86, 0x3a, 0xeb, 0x72, 0x74, 0x5d, 0x2d, 0x9e, 0x57, 0x24, 0xe5, 0x7a, 0x2c, 0x31, 0x54, 0x12, - 0x87, 0xf5, 0xbf, 0x8e, 0x33, 0x37, 0x0d, 0x8e, 0x18, 0x37, 0x8e, 0xf3, 0x32, 0x34, 0xc5, 0x50, - 0xe8, 0x15, 0x6e, 0x45, 0x04, 0x2f, 0x41, 0x9d, 0x1b, 0x66, 0x76, 0x7b, 0x5e, 0x81, 0xb6, 0xec, - 0xcc, 0xc9, 0x24, 0xac, 0x77, 0x72, 0x48, 0x7e, 0xbe, 0x02, 0x75, 0x7e, 0x30, 0x99, 0x76, 0xb5, - 0xaa, 0x15, 0xbc, 0x3a, 0xf9, 0x9c, 0x53, 0x35, 0x83, 0xdb, 0x6c, 0xa3, 0x46, 0x17, 0xe6, 0xf2, - 0x0e, 0xe0, 0xd9, 0x02, 0xee, 0xf5, 0x88, 0x1e, 0xc7, 0xac, 0x05, 0xc3, 0xf9, 0x00, 0xda, 0x92, - 0x0b, 0x2d, 0xe9, 0x43, 0x7a, 0x6e, 0xe2, 0x50, 0x24, 0x45, 0x0a, 0xc0, 0x5f, 0x2b, 0x43, 0x75, - 0xc5, 0xd9, 0x4b, 0xf5, 0xc3, 0x3b, 0x91, 0x55, 0x17, 0xb9, 0x83, 0x15, 0x67, 0x4f, 0x33, 0x6a, - 0x73, 0x35, 0xd2, 0xb8, 0x77, 0xf5, 0xea, 0x9d, 0x99, 0xbc, 0x02, 0x8b, 0x61, 0x78, 0xc5, 0x7e, - 0xb9, 0x09, 0x35, 0x76, 0xe6, 0x9f, 0xe5, 0xa7, 0xf6, 0xc7, 0xc5, 0x15, 0x63, 0x51, 0x45, 0x36, - 0xe1, 0x32, 0x7a, 0xee, 0xa7, 0xac, 0xb0, 0xd8, 0x4f, 0xf1, 0x20, 0x29, 0x25, 0xc5, 0x9c, 0x83, - 0x8a, 0xdc, 0x71, 0x76, 0x88, 0x70, 0x53, 0x05, 0x22, 0xef, 0x3b, 0x3b, 0x04, 0x33, 0x7a, 0xca, - 0xb7, 0x6d, 0x05, 0xdb, 0xc2, 0x43, 0x15, 0xf0, 0xf5, 0xac, 0x60, 0x1b, 0x33, 0x7a, 0xca, 0xe7, - 0xd2, 0x2d, 0x61, 0x63, 0x1a, 0x3e, 0xba, 0x53, 0xc4, 0x8c, 0x9e, 0xf2, 0x05, 0xce, 0x97, 0x89, - 0xf0, 0x49, 0x05, 0x7c, 0x1b, 0xce, 0x97, 0x09, 0x66, 0xf4, 0xb1, 0x0b, 0x6f, 0x4d, 0xd7, 0x35, - 0x8a, 0x0b, 0x7f, 0x08, 0xf3, 0xa1, 0x76, 0x72, 0x25, 0x2e, 0x9e, 0x9c, 0x2b, 0x18, 0x17, 0x8d, - 0x07, 0x27, 0x30, 0xa8, 0x11, 0xb0, 0x0d, 0x70, 0xb6, 0x11, 0xbc, 0x04, 0xf5, 0xcf, 0x38, 0x76, - 0xb8, 0xad, 0x17, 0xd7, 0x35, 0x97, 0x47, 0x87, 0x6d, 0x26, 0x97, 0xa7, 0x8e, 0x3a, 0xc7, 0x59, - 0x81, 0x1a, 0x55, 0x9f, 0xd9, 0xf4, 0x38, 0xd6, 0xba, 0x8f, 0xe4, 0x80, 0xd5, 0x8e, 0xe6, 0x38, - 0xc7, 0xa1, 0x46, 0x35, 0x24, 0xa7, 0x4b, 0x8e, 0x43, 0x8d, 0xea, 0x5d, 0x7e, 0x29, 0x1d, 0x6d, - 0xbd, 0xb4, 0x1a, 0x95, 0x9e, 0x81, 0x79, 0x7d, 0x38, 0x72, 0x50, 0xbe, 0xdd, 0x84, 0x1a, 0xbb, - 0x40, 0x93, 0xb4, 0xc8, 0x4f, 0xc3, 0x41, 0x3e, 0x7e, 0x4b, 0x62, 0x09, 0x5e, 0xc9, 0xbc, 0x3f, - 0xa7, 0x5f, 0xcb, 0x11, 0x2a, 0x20, 0x58, 0xb0, 0x8e, 0x30, 0xfd, 0xa2, 0x82, 0x41, 0x69, 0x1a, - 0xf9, 0xae, 0x5c, 0xbc, 0xd6, 0x0a, 0x6e, 0x6f, 0x31, 0x5e, 0xbe, 0x04, 0x8e, 0x56, 0xb2, 0x68, - 0x09, 0x5a, 0x74, 0x6a, 0xa5, 0xdd, 0x25, 0xcc, 0xf6, 0xcc, 0x64, 0xfe, 0xbe, 0xa0, 0xc6, 0x92, - 0x8f, 0x4e, 0xec, 0x03, 0xcb, 0xb7, 0x59, 0xad, 0x84, 0x0d, 0xbf, 0x36, 0x19, 0x64, 0x39, 0x22, - 0xc7, 0x31, 0x27, 0xba, 0x0b, 0x73, 0x36, 0x91, 0x71, 0x02, 0x61, 0xd4, 0x9f, 0x98, 0x0c, 0xb4, - 0x12, 0x33, 0x60, 0x95, 0x9b, 0xd6, 0x29, 0xda, 0x1b, 0x06, 0x85, 0x8b, 0x0d, 0x06, 0x15, 0xdf, - 0x92, 0x8d, 0x39, 0xcd, 0xd3, 0x70, 0x50, 0x1b, 0xb7, 0x8f, 0x75, 0xd5, 0xa1, 0x8e, 0x25, 0xc7, - 0xb9, 0x2a, 0xb7, 0x28, 0x6f, 0xea, 0xcb, 0x8e, 0xdc, 0x1d, 0x89, 0x60, 0xbc, 0x07, 0xad, 0x68, - 0x60, 0xd0, 0x2d, 0xbd, 0x0e, 0xaf, 0x17, 0xd7, 0x41, 0x8e, 0xa9, 0x40, 0x5b, 0x83, 0xb6, 0x1c, - 0x21, 0xb4, 0xa8, 0xc3, 0xbd, 0x51, 0x0c, 0x17, 0x8f, 0xae, 0xc0, 0xc3, 0x30, 0xa7, 0x0c, 0x14, - 0x5a, 0xd6, 0x11, 0xdf, 0x2c, 0x46, 0x54, 0x87, 0x39, 0x5e, 0xf5, 0xc8, 0x11, 0x53, 0x47, 0xa5, - 0x1a, 0x8f, 0xca, 0x1f, 0x36, 0xa1, 0x25, 0x2f, 0xad, 0x65, 0xec, 0x31, 0x77, 0xfd, 0x51, 0xe1, - 0x1e, 0x33, 0xe2, 0xef, 0x3e, 0xf2, 0x47, 0x98, 0x72, 0xd0, 0x21, 0x0e, 0x9d, 0x50, 0x9a, 0xea, - 0x6b, 0xc5, 0xac, 0x0f, 0x29, 0x39, 0xe6, 0x5c, 0xe8, 0x81, 0xae, 0xe5, 0xb5, 0x09, 0x97, 0x1a, - 0x34, 0x90, 0x5c, 0x4d, 0xef, 0x43, 0xdb, 0xa1, 0x4b, 0xbf, 0x5e, 0x3c, 0xf3, 0xbe, 0x51, 0x0c, - 0xd7, 0x8f, 0x58, 0x70, 0xcc, 0x4d, 0xeb, 0xb6, 0x65, 0xed, 0x51, 0xbb, 0x66, 0x60, 0x8d, 0x69, - 0xeb, 0x76, 0x3b, 0x66, 0xc2, 0x2a, 0x02, 0xba, 0x26, 0xd6, 0x2e, 0xcd, 0x02, 0xcf, 0x12, 0x77, - 0x55, 0xbc, 0x7e, 0x79, 0x3f, 0x35, 0xd3, 0x72, 0x33, 0xbe, 0x30, 0x05, 0xca, 0xc4, 0xd9, 0x96, - 0x8e, 0x20, 0x5f, 0x19, 0xb5, 0xa7, 0x1d, 0x41, 0x75, 0x75, 0x64, 0xbe, 0x08, 0xd5, 0x47, 0xfe, - 0x28, 0x7f, 0xae, 0x66, 0xc3, 0x9d, 0x53, 0xfc, 0xaa, 0x6e, 0x09, 0xf9, 0x0b, 0x7a, 0x39, 0x26, - 0xb9, 0x38, 0x4a, 0xa7, 0xe7, 0x10, 0x5d, 0x17, 0x13, 0xfa, 0xdb, 0xba, 0xbd, 0xbd, 0x9c, 0xb0, - 0x37, 0x6a, 0x61, 0xeb, 0x3e, 0xe1, 0xf7, 0x76, 0x94, 0x99, 0x7c, 0xda, 0x79, 0xf2, 0x4e, 0xb4, - 0xfe, 0x98, 0xc9, 0x53, 0x24, 0xfb, 0x96, 0x63, 0x7d, 0xab, 0x0c, 0x2d, 0x79, 0x27, 0x31, 0x1d, - 0x9d, 0x6f, 0x39, 0x41, 0x8f, 0x58, 0x36, 0xf1, 0x85, 0xdd, 0xbe, 0x5e, 0x78, 0xd9, 0xb1, 0xdb, - 0x17, 0x1c, 0x58, 0xf2, 0x9a, 0x27, 0xa1, 0x15, 0xe5, 0xe6, 0x6c, 0xca, 0xbe, 0x5f, 0x81, 0x86, - 0xb8, 0xcd, 0x98, 0xac, 0xc4, 0x0d, 0x68, 0x8c, 0xac, 0x7d, 0x6f, 0x37, 0xda, 0x32, 0x9d, 0x29, - 0xb8, 0x20, 0xd9, 0xbd, 0xc7, 0xa8, 0xb1, 0xe0, 0x42, 0x9f, 0x82, 0xfa, 0xc8, 0xd9, 0x71, 0x42, - 0xe1, 0x3e, 0x4e, 0x17, 0xb2, 0xb3, 0x7b, 0x0f, 0x9c, 0x87, 0x0a, 0x67, 0x97, 0x98, 0xa2, 0x2b, - 0xe8, 0x85, 0xc2, 0x1f, 0x33, 0x6a, 0x2c, 0xb8, 0xcc, 0x3b, 0xd0, 0xe0, 0xd5, 0x99, 0x6d, 0x92, - 0xd0, 0x5b, 0x12, 0x6b, 0x3a, 0xab, 0x5b, 0xce, 0xaa, 0xf4, 0x04, 0x34, 0xb8, 0xf0, 0x1c, 0xad, - 0xf9, 0xde, 0x0b, 0x6c, 0xbf, 0x33, 0x32, 0xef, 0xc5, 0x87, 0x7f, 0x1f, 0xfd, 0x2c, 0xc3, 0x7c, - 0x08, 0x87, 0x56, 0xac, 0xd0, 0xda, 0xb4, 0x02, 0x82, 0xc9, 0xc0, 0xf3, 0xed, 0x4c, 0x54, 0x9f, - 0x17, 0x89, 0x08, 0x75, 0x3e, 0xaa, 0xa0, 0xfb, 0x49, 0xe8, 0xf0, 0x7f, 0x4f, 0xe8, 0xf0, 0x8f, - 0x6b, 0x39, 0xf1, 0xbc, 0x69, 0x22, 0x19, 0x54, 0xe1, 0x52, 0x01, 0xbd, 0x6b, 0xfa, 0xda, 0xfb, - 0x54, 0x01, 0xa7, 0xb6, 0xf8, 0xbe, 0xa6, 0x47, 0xf4, 0x8a, 0x78, 0xb5, 0x90, 0xde, 0xad, 0x64, - 0x48, 0xef, 0x4c, 0x01, 0x77, 0x2a, 0xa6, 0x77, 0x4d, 0x8f, 0xe9, 0x15, 0x49, 0x57, 0x83, 0x7a, - 0xff, 0xcf, 0xc2, 0x68, 0xbf, 0x9e, 0x13, 0xf6, 0xf9, 0xa4, 0x1e, 0xf6, 0x99, 0xa0, 0x35, 0x3f, - 0xae, 0xb8, 0xcf, 0x6f, 0x34, 0x72, 0xe2, 0x3e, 0x57, 0xb5, 0xb8, 0xcf, 0x84, 0x9a, 0x25, 0x03, - 0x3f, 0xd7, 0xf4, 0xc0, 0xcf, 0xa9, 0x02, 0x4e, 0x2d, 0xf2, 0x73, 0x55, 0x8b, 0xfc, 0x14, 0x09, - 0x55, 0x42, 0x3f, 0x57, 0xb5, 0xd0, 0x4f, 0x11, 0xa3, 0x12, 0xfb, 0xb9, 0xaa, 0xc5, 0x7e, 0x8a, - 0x18, 0x95, 0xe0, 0xcf, 0x55, 0x2d, 0xf8, 0x53, 0xc4, 0xa8, 0x44, 0x7f, 0xae, 0xe9, 0xd1, 0x9f, - 0xe2, 0xfe, 0x51, 0x06, 0xfd, 0x27, 0x81, 0x9a, 0xff, 0xc6, 0x40, 0xcd, 0x2f, 0x55, 0x73, 0x02, - 0x30, 0x38, 0x3b, 0x00, 0x73, 0x2e, 0x7f, 0x24, 0x8b, 0x23, 0x30, 0xd3, 0xcf, 0x02, 0xe9, 0x10, - 0xcc, 0xf5, 0x44, 0x08, 0xe6, 0x74, 0x01, 0xb3, 0x1e, 0x83, 0xf9, 0x3f, 0x13, 0x64, 0xf8, 0xfd, - 0xc6, 0x84, 0xfd, 0xf4, 0x3b, 0xea, 0x7e, 0x7a, 0xc2, 0x4c, 0x96, 0xde, 0x50, 0xdf, 0xd0, 0x37, - 0xd4, 0x67, 0xa7, 0xe0, 0xd5, 0x76, 0xd4, 0xeb, 0x59, 0x3b, 0xea, 0xee, 0x14, 0x28, 0xb9, 0x5b, - 0xea, 0x3b, 0xe9, 0x2d, 0xf5, 0xb9, 0x29, 0xf0, 0x32, 0xf7, 0xd4, 0xeb, 0x59, 0x7b, 0xea, 0x69, - 0x6a, 0x97, 0xbb, 0xa9, 0xfe, 0x94, 0xb6, 0xa9, 0x7e, 0x6d, 0x9a, 0xee, 0x8a, 0x27, 0x87, 0xcf, - 0xe6, 0xec, 0xaa, 0xdf, 0x9a, 0x06, 0x66, 0x72, 0x10, 0xfb, 0x27, 0xfb, 0x62, 0x5d, 0xcc, 0xef, - 0xbd, 0x0c, 0xad, 0xe8, 0xa2, 0x8d, 0xf9, 0x25, 0x68, 0x46, 0x9f, 0xb0, 0x25, 0x2d, 0xe7, 0x98, - 0xdc, 0xd4, 0xf1, 0xd5, 0xb3, 0x48, 0xa1, 0x1b, 0x50, 0xa3, 0xff, 0x84, 0x59, 0xbc, 0x3e, 0xdd, - 0x85, 0x1e, 0x2a, 0x04, 0x33, 0x3e, 0xf3, 0xdf, 0x8e, 0x02, 0x28, 0x5f, 0xf6, 0x4c, 0x2b, 0xf6, - 0x3d, 0xea, 0xcc, 0x46, 0x21, 0xf1, 0xd9, 0x45, 0xae, 0xc2, 0x2f, 0x5f, 0x62, 0x09, 0x54, 0x5b, - 0x42, 0xe2, 0x63, 0xc1, 0x8e, 0xee, 0x43, 0x2b, 0x0a, 0xa4, 0x1a, 0x35, 0x06, 0xf5, 0xd6, 0xd4, - 0x50, 0x51, 0x68, 0x0f, 0x4b, 0x08, 0xb4, 0x08, 0xb5, 0xc0, 0xf3, 0x43, 0xa3, 0xce, 0xa0, 0xde, - 0x9c, 0x1a, 0x6a, 0xc3, 0xf3, 0x43, 0xcc, 0x58, 0x79, 0xd3, 0x94, 0x0f, 0xa7, 0x67, 0x69, 0x9a, - 0xe6, 0xb1, 0xff, 0xb5, 0x2a, 0x7d, 0xe8, 0xb2, 0xb0, 0x46, 0xae, 0x43, 0xe7, 0xa7, 0x1f, 0x25, - 0xd5, 0x2a, 0x91, 0x58, 0x04, 0xf1, 0x91, 0xe0, 0xeb, 0x9b, 0xd7, 0xa1, 0x33, 0xf0, 0xf6, 0x88, - 0x8f, 0xe3, 0x2b, 0x4e, 0xe2, 0x16, 0x5a, 0x2a, 0x1f, 0x99, 0xd0, 0xda, 0x76, 0x6c, 0xd2, 0x1f, - 0x08, 0xff, 0xd7, 0xc2, 0x32, 0x8d, 0xee, 0x42, 0x8b, 0xc5, 0xd8, 0xa3, 0x08, 0xff, 0x6c, 0x95, - 0xe4, 0xa1, 0xfe, 0x08, 0x80, 0x0a, 0x62, 0xc2, 0x6f, 0x3b, 0x21, 0xeb, 0xc3, 0x16, 0x96, 0x69, - 0x5a, 0x61, 0x76, 0x8f, 0x4c, 0xad, 0x70, 0x93, 0x57, 0x38, 0x99, 0x8f, 0x2e, 0xc3, 0x73, 0x2c, - 0x2f, 0xb1, 0xc5, 0xe4, 0xa1, 0xfa, 0x16, 0xce, 0x2e, 0x64, 0xf7, 0xe6, 0xac, 0x21, 0xff, 0x4c, - 0x82, 0x05, 0xef, 0xea, 0x38, 0xce, 0x40, 0xe7, 0xe0, 0xb0, 0x4d, 0xb6, 0xac, 0xdd, 0x51, 0xf8, - 0x90, 0xec, 0x8c, 0x47, 0x56, 0x48, 0xfa, 0x36, 0xfb, 0x76, 0xbb, 0x8d, 0xd3, 0x05, 0xe8, 0x02, - 0x1c, 0x11, 0x99, 0xdc, 0x8c, 0xe9, 0x68, 0xf4, 0x6d, 0xf6, 0x29, 0x73, 0x1b, 0x67, 0x15, 0x99, - 0xdf, 0xab, 0xd1, 0x41, 0x67, 0xaa, 0xfd, 0x1e, 0x54, 0x2d, 0xdb, 0x16, 0xd3, 0xe6, 0xa5, 0x19, - 0x0d, 0x44, 0xdc, 0xbd, 0xa7, 0x08, 0x68, 0x5d, 0x5e, 0xb9, 0xe3, 0x13, 0xe7, 0x95, 0x59, 0xb1, - 0xe4, 0x93, 0x12, 0x02, 0x87, 0x22, 0xee, 0xf2, 0x5b, 0xfc, 0xd5, 0x1f, 0x0d, 0x51, 0x5e, 0xf0, - 0x17, 0x38, 0xe8, 0x0e, 0xd4, 0x58, 0x0d, 0xf9, 0xc4, 0x7a, 0x79, 0x56, 0xbc, 0xfb, 0xbc, 0x7e, - 0x0c, 0xc3, 0x1c, 0xf0, 0xbb, 0x6f, 0xca, 0x85, 0xcb, 0xb2, 0x7e, 0xe1, 0x72, 0x09, 0xea, 0x4e, - 0x48, 0x76, 0xd2, 0xf7, 0x6f, 0x27, 0xaa, 0xaa, 0xf0, 0x3c, 0x9c, 0x75, 0xe2, 0x3d, 0xc0, 0x0f, - 0x72, 0x6f, 0xdf, 0xdf, 0x82, 0x1a, 0x65, 0x4f, 0xad, 0x25, 0xa7, 0x11, 0xcc, 0x38, 0xcd, 0x8b, - 0x50, 0xa3, 0x8d, 0x9d, 0xd0, 0x3a, 0x51, 0x9f, 0x8a, 0xac, 0xcf, 0xd2, 0x1c, 0xb4, 0xbd, 0x31, - 0xf1, 0x99, 0x61, 0x98, 0xff, 0x52, 0x53, 0x2e, 0xc5, 0xf5, 0x55, 0x1d, 0x7b, 0x7b, 0x66, 0xcf, - 0xa9, 0x6a, 0x19, 0x4e, 0x68, 0xd9, 0x3b, 0xb3, 0xa3, 0xa5, 0xf4, 0x0c, 0x27, 0xf4, 0xec, 0x47, - 0xc0, 0x4c, 0x69, 0xda, 0x3d, 0x4d, 0xd3, 0xae, 0xcc, 0x8e, 0xa8, 0xe9, 0x1a, 0x29, 0xd2, 0xb5, - 0x15, 0x5d, 0xd7, 0xba, 0xd3, 0x0d, 0xb9, 0x9c, 0x9a, 0xa6, 0xd0, 0xb6, 0xcf, 0xe7, 0x6a, 0xdb, - 0x92, 0xa6, 0x6d, 0xb3, 0x8a, 0xfe, 0x98, 0xf4, 0xed, 0xbb, 0x35, 0xa8, 0xd1, 0xe9, 0x11, 0xad, - 0xaa, 0xba, 0xf6, 0xd6, 0x4c, 0x53, 0xab, 0xaa, 0x67, 0x6b, 0x09, 0x3d, 0xbb, 0x3c, 0x1b, 0x52, - 0x4a, 0xc7, 0xd6, 0x12, 0x3a, 0x36, 0x23, 0x5e, 0x4a, 0xbf, 0x7a, 0x9a, 0x7e, 0x5d, 0x9c, 0x0d, - 0x4d, 0xd3, 0x2d, 0xab, 0x48, 0xb7, 0x6e, 0xe9, 0xba, 0x35, 0xe5, 0xea, 0x8d, 0xad, 0x55, 0xa6, - 0xd0, 0xab, 0xf7, 0x73, 0xf5, 0xea, 0x86, 0xa6, 0x57, 0xb3, 0x88, 0xfd, 0x98, 0x74, 0xea, 0x32, - 0x5f, 0x74, 0x66, 0x7f, 0xfc, 0x94, 0xb7, 0xe8, 0x34, 0xdf, 0x86, 0x76, 0xfc, 0x34, 0x42, 0xc6, - 0xf5, 0x7c, 0x4e, 0x16, 0x49, 0x8d, 0x92, 0xe6, 0x25, 0x68, 0xc7, 0xcf, 0x1d, 0x64, 0xc8, 0x0a, - 0x58, 0xa1, 0xe0, 0x12, 0x29, 0x73, 0x15, 0x0e, 0xa7, 0x3f, 0xc6, 0xce, 0x88, 0xc3, 0x2b, 0x77, - 0xcb, 0xa3, 0x4f, 0x51, 0x94, 0x2c, 0xf3, 0x29, 0xcc, 0x27, 0x3e, 0xaf, 0x9e, 0x19, 0x03, 0x5d, - 0x52, 0x96, 0xc8, 0xd5, 0xc4, 0xc7, 0x7a, 0xfa, 0x6d, 0xf9, 0x78, 0x21, 0x6c, 0xae, 0xc0, 0x7c, - 0x41, 0xe5, 0xa7, 0xb9, 0x2c, 0xff, 0x05, 0x98, 0x9b, 0x54, 0xf7, 0x8f, 0xe1, 0x32, 0x7f, 0x08, - 0x9d, 0xd4, 0xd3, 0x10, 0x49, 0x31, 0xeb, 0x00, 0x43, 0x49, 0x23, 0x94, 0xf6, 0xc2, 0x0c, 0x9f, - 0x2e, 0x30, 0x3e, 0xac, 0x60, 0x98, 0xbf, 0x53, 0x86, 0xc3, 0xe9, 0x77, 0x21, 0xa6, 0xdd, 0xfc, - 0x18, 0xd0, 0x64, 0x58, 0xf2, 0x8b, 0x8f, 0x28, 0x89, 0xee, 0xc3, 0x81, 0x60, 0xe4, 0x0c, 0xc8, - 0xf2, 0xb6, 0xe5, 0x0e, 0x49, 0x20, 0x76, 0x34, 0x05, 0x6f, 0x3b, 0x6c, 0xc4, 0x1c, 0x58, 0x63, - 0x37, 0x9f, 0xc2, 0x9c, 0x52, 0x88, 0xde, 0x85, 0x8a, 0x37, 0x4e, 0xdd, 0x6b, 0xcc, 0xc7, 0x7c, - 0x10, 0xd9, 0x1b, 0xae, 0x78, 0xe3, 0xb4, 0x49, 0xaa, 0xe6, 0x5b, 0xd5, 0xcc, 0xd7, 0xbc, 0x0b, - 0x87, 0xd3, 0x4f, 0x2f, 0x24, 0xbb, 0xe7, 0x4c, 0x2a, 0x4a, 0xc0, 0xbb, 0x29, 0xb9, 0xe5, 0xbf, - 0x0a, 0x87, 0x92, 0x0f, 0x2a, 0x64, 0x7c, 0x8d, 0x13, 0x7f, 0xd4, 0x14, 0x85, 0xeb, 0x17, 0x7e, - 0xb1, 0x0c, 0xf3, 0x7a, 0x43, 0xd0, 0x31, 0x40, 0x7a, 0xce, 0x9a, 0xe7, 0x92, 0x4e, 0x09, 0x3d, - 0x07, 0x87, 0xf5, 0xfc, 0x45, 0xdb, 0xee, 0x94, 0xd3, 0xe4, 0xd4, 0x6d, 0x75, 0x2a, 0xc8, 0x80, - 0xa3, 0x89, 0x1e, 0x62, 0x4e, 0xb4, 0x53, 0x45, 0x2f, 0xc0, 0x73, 0xc9, 0x92, 0xf1, 0xc8, 0x1a, - 0x90, 0x4e, 0xcd, 0xfc, 0x61, 0x05, 0x6a, 0x8f, 0x02, 0xe2, 0x9b, 0xff, 0x54, 0x89, 0xbe, 0xd2, - 0x78, 0x07, 0x6a, 0xec, 0xad, 0x03, 0xe5, 0x6b, 0xc6, 0x72, 0xe2, 0x6b, 0x46, 0xed, 0x8b, 0xb8, - 0xf8, 0x6b, 0xc6, 0x77, 0xa0, 0xc6, 0x5e, 0x37, 0x98, 0x9d, 0xf3, 0x9b, 0x65, 0x68, 0xc7, 0x2f, - 0x0d, 0xcc, 0xcc, 0xaf, 0x7e, 0x15, 0x52, 0xd1, 0xbf, 0x0a, 0x79, 0x1d, 0xea, 0x3e, 0xfb, 0x7e, - 0x83, 0x7b, 0x99, 0xe4, 0xb7, 0x26, 0x4c, 0x20, 0xe6, 0x24, 0x26, 0x81, 0x39, 0xf5, 0x1d, 0x85, - 0xd9, 0xab, 0x71, 0x4a, 0x3c, 0xa2, 0xd4, 0xb7, 0x83, 0x45, 0xdf, 0xb7, 0xf6, 0x85, 0x62, 0xea, - 0x99, 0xe6, 0x71, 0xa8, 0xad, 0x3b, 0xee, 0x30, 0xfb, 0x23, 0x52, 0xf3, 0x4f, 0xca, 0xd0, 0x14, - 0x97, 0x77, 0xcd, 0xab, 0x50, 0x5d, 0x23, 0x4f, 0x69, 0x45, 0xc4, 0xb5, 0xe1, 0x54, 0x45, 0xee, - 0xb3, 0x56, 0x08, 0x7a, 0x1c, 0x91, 0x99, 0xd7, 0xe4, 0x34, 0x39, 0x3b, 0xef, 0x3b, 0x50, 0x63, - 0xcf, 0x1f, 0xcc, 0xce, 0xf9, 0xa7, 0x2d, 0x68, 0xf0, 0x2f, 0x31, 0xcd, 0x3f, 0x68, 0x41, 0x83, - 0x3f, 0x89, 0x80, 0x6e, 0x40, 0x33, 0xd8, 0xdd, 0xd9, 0xb1, 0xfc, 0x7d, 0x23, 0xfb, 0xfd, 0x4d, - 0xed, 0x05, 0x85, 0xee, 0x06, 0xa7, 0xc5, 0x11, 0x13, 0x7a, 0x1b, 0x6a, 0x03, 0x6b, 0x8b, 0xa4, - 0x8e, 0x73, 0xb3, 0x98, 0x97, 0xad, 0x2d, 0x82, 0x19, 0x39, 0xba, 0x05, 0x2d, 0x31, 0x2c, 0x81, - 0x88, 0xe7, 0x4c, 0x96, 0x1b, 0x0d, 0xa6, 0xe4, 0x32, 0xef, 0x40, 0x53, 0x54, 0x06, 0xdd, 0x94, - 0xdf, 0xa1, 0x26, 0x23, 0xcf, 0x99, 0x4d, 0x90, 0xdf, 0xca, 0xcb, 0x2f, 0x52, 0xff, 0xb2, 0x02, - 0x35, 0x5a, 0xb9, 0x8f, 0x8c, 0x84, 0x4e, 0x00, 0x8c, 0xac, 0x20, 0x5c, 0xdf, 0x1d, 0x8d, 0x88, - 0x2d, 0xbe, 0xb0, 0x53, 0x72, 0xd0, 0x59, 0x38, 0xc4, 0x53, 0xc1, 0xf6, 0xc6, 0xee, 0x60, 0x40, - 0xe4, 0x67, 0xa2, 0xc9, 0x6c, 0xb4, 0x08, 0x75, 0xf6, 0x48, 0x9f, 0x58, 0x15, 0xbe, 0x51, 0xd8, - 0xb3, 0xdd, 0x75, 0xc7, 0x15, 0xb5, 0xe1, 0x9c, 0xa6, 0x07, 0x6d, 0x99, 0x47, 0x8d, 0x70, 0xec, - 0xb8, 0xae, 0xe3, 0x0e, 0x85, 0x46, 0x47, 0x49, 0x3a, 0xe9, 0xd0, 0xbf, 0xa2, 0xbe, 0x75, 0x2c, - 0x52, 0x34, 0x7f, 0xcb, 0x72, 0x46, 0xa2, 0x8a, 0x75, 0x2c, 0x52, 0x14, 0x69, 0x57, 0x3c, 0x24, - 0x51, 0x63, 0x0d, 0x8c, 0x92, 0xe6, 0x87, 0x65, 0xf9, 0x31, 0x76, 0xd6, 0xc7, 0x99, 0xa9, 0x58, - 0xd2, 0x71, 0x35, 0xa0, 0xcd, 0x27, 0x04, 0x25, 0x44, 0x7d, 0x0c, 0x1a, 0x9e, 0x3b, 0x72, 0x5c, - 0x22, 0x62, 0x47, 0x22, 0x95, 0xe8, 0xe3, 0x7a, 0xaa, 0x8f, 0x45, 0xf9, 0xaa, 0xed, 0xd0, 0x2a, - 0x36, 0xe2, 0x72, 0x9e, 0x83, 0xae, 0x43, 0xd3, 0x26, 0x7b, 0xce, 0x80, 0x04, 0x46, 0x93, 0xa9, - 0xde, 0xab, 0x13, 0xfb, 0x76, 0x85, 0xd1, 0xe2, 0x88, 0xc7, 0x0c, 0xa1, 0xc1, 0xb3, 0x64, 0x93, - 0xca, 0x4a, 0x93, 0xe2, 0x4a, 0x57, 0x26, 0x54, 0xba, 0x5a, 0x50, 0xe9, 0x5a, 0xb2, 0xd2, 0x0b, - 0x5f, 0x05, 0x88, 0xd5, 0x0d, 0xcd, 0x41, 0xf3, 0x91, 0xfb, 0xc4, 0xf5, 0x9e, 0xba, 0x9d, 0x12, - 0x4d, 0x3c, 0xd8, 0xda, 0xa2, 0x52, 0x3a, 0x65, 0x9a, 0xa0, 0x74, 0x8e, 0x3b, 0xec, 0x54, 0x10, - 0x40, 0x83, 0x26, 0x88, 0xdd, 0xa9, 0xd2, 0xff, 0xb7, 0xd9, 0xf8, 0x75, 0x6a, 0xe8, 0x79, 0x38, - 0xd2, 0x77, 0x07, 0xde, 0xce, 0xd8, 0x0a, 0x9d, 0xcd, 0x11, 0x79, 0x4c, 0xfc, 0xc0, 0xf1, 0xdc, - 0x4e, 0x9d, 0xce, 0x5e, 0x6b, 0x24, 0x7c, 0xea, 0xf9, 0x4f, 0xd6, 0x08, 0xb1, 0xc5, 0xfb, 0x0f, - 0x9d, 0x86, 0xf9, 0x1f, 0x65, 0x7e, 0x1a, 0x6c, 0xde, 0x82, 0x03, 0xda, 0x8b, 0x27, 0x46, 0xfc, - 0x2c, 0x72, 0xe2, 0x55, 0xe4, 0x63, 0x2c, 0x5e, 0x4b, 0xe2, 0xa5, 0x0c, 0x4f, 0x99, 0xb7, 0x01, - 0x94, 0x77, 0x4e, 0x4e, 0x00, 0x6c, 0xee, 0x87, 0x24, 0xe0, 0x6f, 0x9c, 0x50, 0x88, 0x1a, 0x56, - 0x72, 0x54, 0xfc, 0x8a, 0x86, 0x6f, 0x5e, 0x01, 0x50, 0x5e, 0x39, 0xa1, 0x76, 0x45, 0x53, 0x4b, - 0x49, 0xb0, 0x64, 0xb6, 0xd9, 0x15, 0x2d, 0x88, 0xde, 0x33, 0x89, 0x6a, 0xc0, 0xa3, 0x77, 0x6a, - 0x0d, 0x58, 0x8e, 0xb9, 0x0a, 0x10, 0x3f, 0xe9, 0x61, 0x5e, 0x95, 0xae, 0xfb, 0x4d, 0xa8, 0xd9, - 0x56, 0x68, 0x09, 0xaf, 0xf9, 0x42, 0x62, 0xe6, 0x8a, 0x59, 0x30, 0x23, 0x33, 0x7f, 0xbb, 0x0c, - 0x07, 0xd4, 0xe7, 0x4b, 0xcc, 0xf7, 0xa0, 0xc6, 0xde, 0x3f, 0xb9, 0x09, 0x07, 0xd4, 0xf7, 0x4b, - 0x52, 0xcf, 0x47, 0x73, 0x3c, 0x95, 0x15, 0x6b, 0x0c, 0x66, 0x5f, 0x56, 0xe9, 0x23, 0x43, 0x5d, - 0x80, 0xa6, 0x78, 0x0e, 0xc5, 0x3c, 0x0d, 0xed, 0xf8, 0xf5, 0x13, 0xea, 0x3b, 0x78, 0x7e, 0x34, - 0xca, 0x22, 0x69, 0xfe, 0x73, 0x15, 0xea, 0x6c, 0x38, 0xcd, 0xaf, 0x57, 0x54, 0x0d, 0x35, 0x7f, - 0x58, 0xce, 0xdd, 0x0b, 0x5e, 0xd2, 0x9e, 0x0d, 0x98, 0x4f, 0xbd, 0xfa, 0x23, 0x1e, 0x3b, 0xd1, - 0x1d, 0xeb, 0x15, 0x68, 0xba, 0x5c, 0x33, 0x99, 0xf1, 0xcc, 0xa7, 0x5f, 0xfa, 0x61, 0x5c, 0x42, - 0x7b, 0x71, 0x44, 0x8c, 0x2e, 0x43, 0x9d, 0xf8, 0xbe, 0xe7, 0x33, 0x93, 0x9a, 0x4f, 0xbd, 0x9f, - 0x13, 0x3f, 0xac, 0xb2, 0x4a, 0xa9, 0x30, 0x27, 0x46, 0x97, 0xe1, 0xb9, 0x80, 0x5b, 0x11, 0x5f, - 0x53, 0x06, 0xe2, 0xbb, 0x6a, 0xe1, 0x6d, 0xb2, 0x0b, 0x17, 0x3e, 0x1d, 0x4d, 0xb0, 0x8a, 0xe1, - 0x95, 0x54, 0x8b, 0x2c, 0xa3, 0x36, 0xd4, 0x99, 0xa0, 0x4e, 0x45, 0x35, 0xdb, 0x6a, 0x8e, 0xe1, - 0xd5, 0x16, 0x2e, 0x41, 0x53, 0xe4, 0x53, 0xfa, 0x45, 0x5e, 0xf7, 0x4e, 0x09, 0x1d, 0x80, 0xd6, - 0x06, 0x19, 0x6d, 0xf5, 0xbc, 0x20, 0xec, 0x94, 0xd1, 0x41, 0x68, 0x33, 0x5b, 0x78, 0xe0, 0x8e, - 0xf6, 0x3b, 0x95, 0x85, 0xf7, 0xa1, 0x2d, 0x5b, 0x84, 0x5a, 0x50, 0x5b, 0xdb, 0x1d, 0x8d, 0x3a, - 0x25, 0xb6, 0x34, 0x0d, 0x3d, 0x3f, 0x0a, 0x4c, 0xaf, 0x3e, 0xa3, 0xf3, 0x4c, 0xa7, 0x9c, 0xe7, - 0x0d, 0x2a, 0xa8, 0x03, 0x07, 0x84, 0x70, 0x5e, 0xe7, 0xaa, 0xf9, 0x8f, 0x65, 0x68, 0xcb, 0x17, - 0x63, 0xe8, 0xba, 0x30, 0x1a, 0xe3, 0x7c, 0x3f, 0x70, 0x35, 0x31, 0xda, 0xf9, 0x0f, 0xd0, 0x24, - 0x46, 0xfc, 0x0c, 0xcc, 0x0b, 0x97, 0x1b, 0x75, 0x3e, 0xf7, 0x9a, 0x89, 0xdc, 0x85, 0x3b, 0xb2, - 0xd7, 0x3b, 0xcc, 0xc4, 0x96, 0x3d, 0xd7, 0x25, 0x83, 0x90, 0xf5, 0xfd, 0x21, 0x98, 0x5b, 0xf3, - 0xc2, 0x75, 0x2f, 0x08, 0x68, 0xcb, 0x78, 0x4f, 0xc5, 0xe5, 0x15, 0x34, 0x0f, 0x10, 0xdd, 0x35, - 0xa3, 0x4e, 0xd2, 0xfc, 0xad, 0x32, 0x34, 0xf8, 0x3b, 0x36, 0xe6, 0xaf, 0x96, 0xa1, 0x21, 0xde, - 0xae, 0x79, 0x1d, 0x3a, 0xbe, 0x47, 0x81, 0xa3, 0x0d, 0x45, 0x7f, 0x45, 0xb4, 0x32, 0x95, 0x4f, - 0xf7, 0xb8, 0x9e, 0xa2, 0x15, 0x62, 0x09, 0xa0, 0xe5, 0xa1, 0x6b, 0x00, 0xfc, 0x6d, 0x9c, 0x87, - 0xfb, 0x63, 0x22, 0xd4, 0x39, 0x79, 0xc5, 0x4c, 0xbc, 0xa6, 0xc3, 0x0e, 0x63, 0x14, 0xea, 0x85, - 0xaf, 0xc0, 0x41, 0x4c, 0x82, 0xb1, 0xe7, 0x06, 0xe4, 0xc7, 0xf5, 0x8c, 0x7e, 0xee, 0x83, 0xf8, - 0x0b, 0xdf, 0xad, 0x43, 0x9d, 0xad, 0x2e, 0xcd, 0xbf, 0xaa, 0xcb, 0x75, 0x70, 0xca, 0xbe, 0x2f, - 0xaa, 0x17, 0x7d, 0x54, 0x43, 0xd5, 0x16, 0xa6, 0xfa, 0x05, 0x9f, 0x4f, 0x41, 0x6b, 0xec, 0x7b, - 0x43, 0x9f, 0xae, 0x67, 0x6b, 0x89, 0x87, 0x8a, 0x74, 0xb6, 0x75, 0x41, 0x86, 0x25, 0x83, 0xaa, - 0x7c, 0x75, 0x5d, 0xf9, 0x6e, 0x41, 0xdb, 0xf6, 0xbd, 0x31, 0xfb, 0x44, 0x5d, 0x1c, 0xae, 0x9d, - 0xcc, 0xc1, 0x5d, 0x89, 0xe8, 0x7a, 0x25, 0x1c, 0x33, 0x51, 0xf5, 0xe5, 0xbd, 0x2f, 0xce, 0xb5, - 0x5f, 0xca, 0x61, 0xe7, 0xe3, 0xd5, 0x2b, 0x61, 0x41, 0x4e, 0x19, 0xc9, 0x33, 0xc6, 0xd8, 0x9a, - 0xc8, 0xb8, 0xfa, 0x2c, 0x62, 0xe4, 0xe4, 0xe8, 0x3a, 0xb4, 0x02, 0x6b, 0x8f, 0xb0, 0xd7, 0x79, - 0xdb, 0x13, 0xbb, 0x62, 0x43, 0x90, 0xf5, 0x4a, 0x58, 0xb2, 0xd0, 0x26, 0xef, 0x38, 0x43, 0xbe, - 0x93, 0x14, 0x4f, 0x04, 0xe7, 0x35, 0xf9, 0x7e, 0x44, 0xc7, 0xde, 0x73, 0x8e, 0x12, 0x74, 0xe7, - 0xc3, 0x5d, 0xe6, 0x1c, 0x3f, 0x36, 0x66, 0x09, 0x73, 0x0e, 0xda, 0xb2, 0x8b, 0xcc, 0x96, 0x34, - 0x93, 0x16, 0x34, 0x78, 0x0b, 0x4c, 0x80, 0x56, 0x54, 0x21, 0x4a, 0x2c, 0xc1, 0xcd, 0x35, 0x68, - 0x45, 0x83, 0x96, 0xf3, 0x2c, 0x05, 0x82, 0x9a, 0xed, 0x89, 0x25, 0x53, 0x15, 0xb3, 0xff, 0x74, - 0x50, 0xd5, 0xf7, 0x8d, 0xda, 0xf2, 0x65, 0xa1, 0x85, 0xc5, 0xe8, 0xbe, 0x12, 0x75, 0x6d, 0x7c, - 0x33, 0x3e, 0x07, 0x4d, 0xbc, 0xcb, 0x56, 0xb3, 0x9d, 0x32, 0xcd, 0xa6, 0x5b, 0xa4, 0x4e, 0x85, - 0x7a, 0xc9, 0x65, 0xcb, 0x1d, 0x90, 0x11, 0x5b, 0x01, 0x49, 0xdf, 0x5b, 0x5b, 0x6a, 0x4b, 0xf0, - 0xa5, 0xe3, 0x7f, 0xfd, 0xe1, 0x89, 0xf2, 0x77, 0x3e, 0x3c, 0x51, 0xfe, 0xfe, 0x87, 0x27, 0xca, - 0xbf, 0xf2, 0x83, 0x13, 0xa5, 0xef, 0xfc, 0xe0, 0x44, 0xe9, 0x1f, 0x7e, 0x70, 0xa2, 0xf4, 0x41, - 0x65, 0xbc, 0xb9, 0xd9, 0x60, 0x77, 0x4e, 0x2e, 0xfd, 0x57, 0x00, 0x00, 0x00, 0xff, 0xff, 0x9a, - 0xe0, 0x31, 0x2b, 0x1d, 0x63, 0x00, 0x00, + // 6206 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x4b, 0x8c, 0x1c, 0xc7, + 0x79, 0xff, 0xbc, 0x1f, 0xdf, 0x92, 0xcb, 0x61, 0x91, 0xa2, 0x5a, 0x2d, 0x8a, 0xa2, 0x56, 0x24, + 0x45, 0x4b, 0xd4, 0x50, 0x22, 0x29, 0x52, 0xa6, 0xc5, 0xc7, 0xbe, 0xa8, 0x19, 0x3e, 0x96, 0xeb, + 0x5a, 0x92, 0x96, 0x65, 0xe3, 0x0f, 0xf7, 0x4e, 0xd7, 0xce, 0xb6, 0x39, 0xdb, 0x3d, 0xee, 0xee, + 0x5d, 0x72, 0x6d, 0xff, 0x1d, 0xc7, 0x76, 0x10, 0x04, 0x48, 0x90, 0x1c, 0x82, 0x24, 0xf0, 0x25, + 0x40, 0x10, 0x03, 0x39, 0x04, 0x41, 0x80, 0x5c, 0x92, 0x8b, 0x63, 0x20, 0x08, 0x12, 0xe7, 0x01, + 0xd8, 0xb7, 0x5c, 0x02, 0x1b, 0xf2, 0x25, 0x87, 0xe4, 0xe0, 0x04, 0x08, 0x72, 0x0c, 0xea, 0xd1, + 0xd5, 0x55, 0xfd, 0x98, 0x9e, 0xb1, 0xe4, 0x3c, 0x10, 0x9d, 0x76, 0xaa, 0xfa, 0xfb, 0x7e, 0x5f, + 0x3d, 0xbe, 0xef, 0xab, 0xaa, 0xaf, 0x1e, 0x0b, 0xc7, 0xc6, 0x9b, 0xe7, 0xc7, 0xbe, 0x17, 0x7a, + 0xc1, 0x79, 0xb2, 0x47, 0xdc, 0x30, 0xe8, 0xb2, 0x14, 0x6a, 0x5a, 0xee, 0x7e, 0xb8, 0x3f, 0x26, + 0xe6, 0xa9, 0xf1, 0xe3, 0xe1, 0xf9, 0x91, 0xb3, 0x79, 0x7e, 0xbc, 0x79, 0x7e, 0xc7, 0xb3, 0xc9, + 0x28, 0x22, 0x67, 0x09, 0x41, 0x6e, 0x1e, 0x1f, 0x7a, 0xde, 0x70, 0x44, 0xf8, 0xb7, 0xcd, 0xdd, + 0xad, 0xf3, 0x41, 0xe8, 0xef, 0x0e, 0x42, 0xfe, 0x75, 0xe1, 0xdb, 0xdf, 0x2b, 0x43, 0x7d, 0x95, + 0xc2, 0xa3, 0x0b, 0xd0, 0xda, 0x21, 0x41, 0x60, 0x0d, 0x49, 0x60, 0x94, 0x4f, 0x56, 0xcf, 0xce, + 0x5d, 0x38, 0xd6, 0x15, 0xa2, 0xba, 0x8c, 0xa2, 0x7b, 0x8f, 0x7f, 0xc6, 0x92, 0x0e, 0x1d, 0x87, + 0xf6, 0xc0, 0x73, 0x43, 0xf2, 0x34, 0xec, 0xdb, 0x46, 0xe5, 0x64, 0xf9, 0x6c, 0x1b, 0xc7, 0x19, + 0xe8, 0x12, 0xb4, 0x1d, 0xd7, 0x09, 0x1d, 0x2b, 0xf4, 0x7c, 0xa3, 0x7a, 0xb2, 0xac, 0x41, 0xb2, + 0x42, 0x76, 0x17, 0x07, 0x03, 0x6f, 0xd7, 0x0d, 0x71, 0x4c, 0x88, 0x0c, 0x68, 0x86, 0xbe, 0x35, + 0x20, 0x7d, 0xdb, 0xa8, 0x31, 0xc4, 0x28, 0x69, 0x7e, 0xff, 0x4d, 0x68, 0x8a, 0x32, 0xa0, 0xe7, + 0xa0, 0x19, 0x8c, 0x39, 0xd5, 0xb7, 0xca, 0x9c, 0x4c, 0xa4, 0xd1, 0x0d, 0x98, 0xb3, 0x38, 0xec, + 0xc6, 0xb6, 0xf7, 0xc4, 0x28, 0x33, 0xc1, 0xcf, 0x27, 0xea, 0x22, 0x04, 0x77, 0x29, 0x49, 0xaf, + 0x84, 0x55, 0x0e, 0xd4, 0x87, 0x79, 0x91, 0x5c, 0x21, 0xa1, 0xe5, 0x8c, 0x02, 0xe3, 0xfb, 0x1c, + 0xe4, 0x44, 0x0e, 0x88, 0x20, 0xeb, 0x95, 0x70, 0x82, 0x11, 0x7d, 0x16, 0x8e, 0x88, 0x9c, 0x65, + 0xcf, 0xdd, 0x72, 0x86, 0x0f, 0xc7, 0xb6, 0x15, 0x12, 0xe3, 0x6f, 0x38, 0xde, 0xa9, 0x1c, 0x3c, + 0x4e, 0xdb, 0xe5, 0xc4, 0xbd, 0x12, 0xce, 0xc2, 0x40, 0xb7, 0xe0, 0xa0, 0xc8, 0x16, 0xa0, 0x7f, + 0xcb, 0x41, 0x5f, 0xc8, 0x01, 0x95, 0x68, 0x3a, 0x1b, 0xfa, 0x1c, 0x1c, 0x15, 0x19, 0x77, 0x1d, + 0xf7, 0xf1, 0xf2, 0xb6, 0x35, 0x1a, 0x11, 0x77, 0x48, 0x8c, 0xbf, 0x9b, 0x5c, 0x46, 0x8d, 0xb8, + 0x57, 0xc2, 0x99, 0x20, 0x68, 0x08, 0x46, 0x56, 0x7e, 0xcf, 0xb1, 0x89, 0xf1, 0xf7, 0x5c, 0xc0, + 0xd9, 0xa9, 0x04, 0x38, 0x36, 0x15, 0x92, 0x0b, 0x86, 0xee, 0x43, 0xc7, 0xdb, 0xfc, 0x22, 0x19, + 0x44, 0x2d, 0xbf, 0x41, 0x42, 0xa3, 0xc3, 0xf0, 0x5f, 0x4a, 0xe0, 0xdf, 0x67, 0x64, 0x51, 0x9f, + 0x75, 0x37, 0x48, 0xd8, 0x2b, 0xe1, 0x14, 0x33, 0x7a, 0x08, 0x48, 0xcb, 0x5b, 0xdc, 0x21, 0xae, + 0x6d, 0x5c, 0x60, 0x90, 0x2f, 0x4f, 0x86, 0x64, 0xa4, 0xbd, 0x12, 0xce, 0x00, 0x48, 0xc1, 0x3e, + 0x74, 0x03, 0x12, 0x1a, 0x17, 0xa7, 0x81, 0x65, 0xa4, 0x29, 0x58, 0x96, 0x4b, 0x3b, 0x91, 0xe7, + 0x62, 0x32, 0xb2, 0x42, 0xc7, 0x73, 0x45, 0x79, 0x2f, 0x31, 0xe0, 0xd3, 0xd9, 0xc0, 0x92, 0x56, + 0x96, 0x38, 0x13, 0x04, 0xfd, 0x3f, 0x78, 0x26, 0x91, 0x8f, 0xc9, 0x8e, 0xb7, 0x47, 0x8c, 0xb7, + 0x18, 0xfa, 0x99, 0x22, 0x74, 0x4e, 0xdd, 0x2b, 0xe1, 0x6c, 0x18, 0xb4, 0x04, 0x07, 0xa2, 0x0f, + 0x0c, 0xf6, 0x32, 0x83, 0x3d, 0x9e, 0x07, 0x2b, 0xc0, 0x34, 0x1e, 0x6a, 0xf4, 0x3c, 0xbd, 0x3c, + 0xf2, 0x02, 0x62, 0x2c, 0x66, 0x1a, 0xbd, 0x80, 0x60, 0x24, 0xd4, 0xe8, 0x15, 0x0e, 0xb5, 0x92, + 0x41, 0xe8, 0x3b, 0x03, 0x56, 0x40, 0xaa, 0x45, 0x57, 0x26, 0x57, 0x32, 0x26, 0x16, 0xaa, 0x94, + 0x0d, 0x83, 0x30, 0x1c, 0x0a, 0x76, 0x37, 0x83, 0x81, 0xef, 0x8c, 0x69, 0xde, 0xa2, 0x6d, 0x1b, + 0xef, 0x4c, 0x42, 0xde, 0x50, 0x88, 0xbb, 0x8b, 0x36, 0xed, 0x9d, 0x24, 0x00, 0xfa, 0x1c, 0x20, + 0x35, 0x4b, 0x34, 0xdf, 0x35, 0x06, 0xfb, 0x89, 0x29, 0x60, 0x65, 0x5b, 0x66, 0xc0, 0x20, 0x0b, + 0x8e, 0xaa, 0xb9, 0xeb, 0x5e, 0xe0, 0xd0, 0xbf, 0xc6, 0x75, 0x06, 0xff, 0xda, 0x14, 0xf0, 0x11, + 0x0b, 0x55, 0xac, 0x2c, 0xa8, 0xa4, 0x88, 0x65, 0x6a, 0xda, 0xc4, 0x0f, 0x8c, 0x1b, 0x53, 0x8b, + 0x88, 0x58, 0x92, 0x22, 0xa2, 0xfc, 0x64, 0x13, 0xbd, 0xeb, 0x7b, 0xbb, 0xe3, 0xc0, 0xb8, 0x39, + 0x75, 0x13, 0x71, 0x86, 0x64, 0x13, 0xf1, 0x5c, 0x74, 0x19, 0x5a, 0x9b, 0x23, 0x6f, 0xf0, 0x98, + 0x76, 0x66, 0x85, 0x41, 0x1a, 0x09, 0xc8, 0x25, 0xfa, 0x59, 0x74, 0x9f, 0xa4, 0xa5, 0xca, 0xca, + 0x7e, 0xaf, 0x90, 0x11, 0x09, 0x89, 0x18, 0x1a, 0x9f, 0xcf, 0x64, 0xe5, 0x24, 0x54, 0x59, 0x15, + 0x0e, 0xb4, 0x02, 0x73, 0x5b, 0xce, 0x88, 0x04, 0x0f, 0xc7, 0x23, 0xcf, 0xe2, 0xe3, 0xe4, 0xdc, + 0x85, 0x93, 0x99, 0x00, 0xb7, 0x62, 0x3a, 0x8a, 0xa2, 0xb0, 0xa1, 0xeb, 0xd0, 0xde, 0xb1, 0xfc, + 0xc7, 0x41, 0xdf, 0xdd, 0xf2, 0x8c, 0x7a, 0xe6, 0x08, 0xc7, 0x31, 0xee, 0x45, 0x54, 0xbd, 0x12, + 0x8e, 0x59, 0xe8, 0x38, 0xc9, 0x0a, 0xb5, 0x41, 0xc2, 0x5b, 0x0e, 0x19, 0xd9, 0x81, 0xd1, 0x60, + 0x20, 0x2f, 0x66, 0x82, 0x6c, 0x90, 0xb0, 0xcb, 0xc9, 0xe8, 0x38, 0xa9, 0x33, 0xa2, 0xf7, 0xe0, + 0x48, 0x94, 0xb3, 0xbc, 0xed, 0x8c, 0x6c, 0x9f, 0xb8, 0x7d, 0x3b, 0x30, 0x9a, 0x99, 0x43, 0x50, + 0x8c, 0xa7, 0xd0, 0xd2, 0x61, 0x32, 0x03, 0x82, 0x7a, 0xc6, 0x28, 0x5b, 0x35, 0x49, 0xa3, 0x95, + 0xe9, 0x19, 0x63, 0x68, 0x95, 0x98, 0x6a, 0x57, 0x16, 0x08, 0xb2, 0xe1, 0xd9, 0x28, 0x7f, 0xc9, + 0x1a, 0x3c, 0x1e, 0xfa, 0xde, 0xae, 0x6b, 0x2f, 0x7b, 0x23, 0xcf, 0x37, 0xda, 0x99, 0x83, 0x5b, + 0x8c, 0x9f, 0xa0, 0xef, 0x95, 0x70, 0x1e, 0x14, 0x5a, 0x86, 0x03, 0xd1, 0xa7, 0x07, 0xe4, 0x69, + 0x68, 0x40, 0xe6, 0x38, 0x1f, 0x43, 0x53, 0x22, 0xea, 0x20, 0x55, 0x26, 0x15, 0x84, 0xaa, 0x84, + 0x31, 0x57, 0x00, 0x42, 0x89, 0x54, 0x10, 0x9a, 0x56, 0x41, 0xe8, 0x10, 0x6c, 0x1c, 0x2c, 0x00, + 0xa1, 0x44, 0x2a, 0x08, 0x4d, 0xd3, 0xa1, 0x5a, 0xd6, 0xd4, 0xf3, 0x1e, 0x53, 0x7d, 0x32, 0xe6, + 0x33, 0x87, 0x6a, 0xa5, 0xb5, 0x04, 0x21, 0x1d, 0xaa, 0x93, 0xcc, 0x74, 0x26, 0x14, 0xe5, 0x2d, + 0x8e, 0x9c, 0xa1, 0x6b, 0x1c, 0x9a, 0xa0, 0xcb, 0x14, 0x8d, 0x51, 0xd1, 0x99, 0x90, 0xc6, 0x86, + 0x6e, 0x0a, 0xb3, 0xdc, 0x20, 0xe1, 0x8a, 0xb3, 0x67, 0x1c, 0xce, 0x1c, 0x86, 0x62, 0x94, 0x15, + 0x67, 0x4f, 0xda, 0x25, 0x67, 0x51, 0xab, 0x16, 0x0d, 0x72, 0xc6, 0x33, 0x05, 0x55, 0x8b, 0x08, + 0xd5, 0xaa, 0x45, 0x79, 0x6a, 0xd5, 0xee, 0x5a, 0x21, 0x79, 0x6a, 0x3c, 0x57, 0x50, 0x35, 0x46, + 0xa5, 0x56, 0x8d, 0x65, 0xd0, 0xd1, 0x2d, 0xca, 0x78, 0x44, 0xfc, 0xd0, 0x19, 0x58, 0x23, 0xde, + 0x54, 0xa7, 0x32, 0xc7, 0xa0, 0x18, 0x4f, 0xa3, 0xa6, 0xa3, 0x5b, 0x26, 0x8c, 0x5a, 0xf1, 0x07, + 0xd6, 0xe6, 0x88, 0x60, 0xef, 0x89, 0x71, 0xba, 0xa0, 0xe2, 0x11, 0xa1, 0x5a, 0xf1, 0x28, 0x4f, + 0xf5, 0x2d, 0x9f, 0x71, 0xec, 0x21, 0x09, 0x8d, 0xb3, 0x05, 0xbe, 0x85, 0x93, 0xa9, 0xbe, 0x85, + 0xe7, 0x48, 0x0f, 0xb0, 0x62, 0x85, 0xd6, 0x9e, 0x43, 0x9e, 0x3c, 0x72, 0xc8, 0x13, 0x3a, 0xb0, + 0x1f, 0x99, 0xe0, 0x01, 0x22, 0xda, 0xae, 0x20, 0x96, 0x1e, 0x20, 0x01, 0x22, 0x3d, 0x80, 0x9a, + 0x2f, 0xdc, 0xfa, 0xd1, 0x09, 0x1e, 0x40, 0xc3, 0x97, 0x3e, 0x3e, 0x0f, 0x0a, 0x59, 0x70, 0x2c, + 0xf5, 0xe9, 0xbe, 0x6f, 0x13, 0xdf, 0x78, 0x81, 0x09, 0x79, 0xa5, 0x58, 0x08, 0x23, 0xef, 0x95, + 0x70, 0x0e, 0x50, 0x4a, 0xc4, 0x86, 0xb7, 0xeb, 0x0f, 0x08, 0x6d, 0xa7, 0x97, 0xa7, 0x11, 0x21, + 0xc9, 0x53, 0x22, 0xe4, 0x17, 0xb4, 0x07, 0x2f, 0xc8, 0x2f, 0x54, 0x30, 0x1b, 0x45, 0x99, 0x74, + 0xb1, 0x82, 0x39, 0xc3, 0x24, 0x75, 0x27, 0x4b, 0x4a, 0x72, 0xf5, 0x4a, 0x78, 0x32, 0x2c, 0xda, + 0x87, 0x13, 0x1a, 0x01, 0x1f, 0xe7, 0x55, 0xc1, 0xaf, 0x30, 0xc1, 0xe7, 0x27, 0x0b, 0x4e, 0xb1, + 0xf5, 0x4a, 0xb8, 0x00, 0x18, 0x8d, 0xe1, 0x79, 0xad, 0x31, 0x22, 0xc3, 0x16, 0x2a, 0xf2, 0x55, + 0x26, 0xf7, 0xdc, 0x64, 0xb9, 0x3a, 0x4f, 0xaf, 0x84, 0x27, 0x41, 0xd2, 0x15, 0x57, 0xe6, 0x67, + 0xda, 0x93, 0x5f, 0xc9, 0x9c, 0xf6, 0xe4, 0x88, 0xe3, 0x7d, 0x99, 0x0b, 0x96, 0xa9, 0xf9, 0xa2, + 0x39, 0xff, 0xff, 0xb4, 0x9a, 0x2f, 0xdb, 0x31, 0x0f, 0x4a, 0xeb, 0x3b, 0xfa, 0xe9, 0x81, 0xe5, + 0x0f, 0x49, 0xc8, 0x1b, 0xba, 0x6f, 0xd3, 0x4a, 0x7d, 0x6d, 0x9a, 0xbe, 0x4b, 0xb1, 0x69, 0x7d, + 0x97, 0x09, 0x8c, 0x02, 0x38, 0xae, 0x51, 0xf4, 0x83, 0x65, 0x6f, 0x34, 0x22, 0x83, 0xa8, 0x35, + 0x7f, 0x81, 0x09, 0x7e, 0x7d, 0xb2, 0xe0, 0x04, 0x53, 0xaf, 0x84, 0x27, 0x82, 0xa6, 0xea, 0x7b, + 0x7f, 0x64, 0x27, 0x74, 0xc6, 0x98, 0x4a, 0x57, 0x93, 0x6c, 0xa9, 0xfa, 0xa6, 0x28, 0x52, 0xba, + 0xaa, 0x50, 0xd0, 0xea, 0x3e, 0x3b, 0x8d, 0xae, 0xea, 0x3c, 0x29, 0x5d, 0xd5, 0x3f, 0xd3, 0xd1, + 0x6d, 0x37, 0x20, 0x3e, 0xc3, 0xb8, 0xed, 0x39, 0xae, 0xf1, 0x62, 0xe6, 0xe8, 0xf6, 0x30, 0x20, + 0xbe, 0x10, 0x44, 0xa9, 0xe8, 0xe8, 0xa6, 0xb1, 0x69, 0x38, 0x77, 0xc9, 0x56, 0x68, 0x9c, 0x2c, + 0xc2, 0xa1, 0x54, 0x1a, 0x0e, 0xcd, 0xa0, 0x23, 0x85, 0xcc, 0xd8, 0x20, 0xb4, 0x57, 0xb0, 0xe5, + 0x0e, 0x89, 0xf1, 0x52, 0xe6, 0x48, 0xa1, 0xc0, 0x29, 0xc4, 0x74, 0xa4, 0xc8, 0x02, 0xa1, 0x2b, + 0x7f, 0x99, 0x4f, 0x67, 0x64, 0x1c, 0x7a, 0x21, 0x73, 0xe5, 0xaf, 0x40, 0x4b, 0x52, 0xba, 0x06, + 0x49, 0x03, 0xa0, 0x4f, 0x40, 0x6d, 0xec, 0xb8, 0x43, 0xc3, 0x66, 0x40, 0x47, 0x12, 0x40, 0xeb, + 0x8e, 0x3b, 0xec, 0x95, 0x30, 0x23, 0x41, 0xef, 0x00, 0x8c, 0x7d, 0x6f, 0x40, 0x82, 0x60, 0x8d, + 0x3c, 0x31, 0x08, 0x63, 0x30, 0x93, 0x0c, 0x9c, 0xa0, 0xbb, 0x46, 0xe8, 0xb8, 0xac, 0xd0, 0xa3, + 0x55, 0x38, 0x28, 0x52, 0xc2, 0xca, 0xb7, 0x32, 0x27, 0x7f, 0x11, 0x40, 0x1c, 0x6e, 0xd2, 0xb8, + 0xe8, 0xda, 0x47, 0x64, 0xac, 0x78, 0x2e, 0x31, 0x86, 0x99, 0x6b, 0x9f, 0x08, 0x84, 0x92, 0xd0, + 0x39, 0x96, 0xc2, 0x81, 0x96, 0xe0, 0x40, 0xb8, 0xed, 0x13, 0xcb, 0xde, 0x08, 0xad, 0x70, 0x37, + 0x30, 0xdc, 0xcc, 0x69, 0x1a, 0xff, 0xd8, 0x7d, 0xc0, 0x28, 0xe9, 0x14, 0x54, 0xe5, 0x41, 0x6b, + 0xd0, 0xa1, 0x0b, 0xa1, 0xbb, 0xce, 0x8e, 0x13, 0x62, 0x62, 0x0d, 0xb6, 0x89, 0x6d, 0x78, 0x99, + 0x8b, 0x28, 0x3a, 0xed, 0xed, 0xaa, 0x74, 0x74, 0xb6, 0x92, 0xe4, 0x45, 0x3d, 0x98, 0xa7, 0x79, + 0x1b, 0x63, 0x6b, 0x40, 0x1e, 0x06, 0xd6, 0x90, 0x18, 0xe3, 0x4c, 0x0d, 0x64, 0x68, 0x31, 0x15, + 0x9d, 0xac, 0xe8, 0x7c, 0x11, 0xd2, 0x5d, 0x6f, 0x60, 0x8d, 0x38, 0xd2, 0x97, 0xf2, 0x91, 0x62, + 0xaa, 0x08, 0x29, 0xce, 0xd1, 0xea, 0xc8, 0xdb, 0xde, 0x36, 0xf6, 0x0a, 0xea, 0x28, 0xe8, 0xb4, + 0x3a, 0x8a, 0x3c, 0x8a, 0xe7, 0x7a, 0xa1, 0xb3, 0xe5, 0x0c, 0x84, 0xfd, 0xba, 0xb6, 0xe1, 0x67, + 0xe2, 0xad, 0x29, 0x64, 0xdd, 0x0d, 0x1e, 0x59, 0x4a, 0xf1, 0xa2, 0x07, 0x80, 0xd4, 0x3c, 0xa1, + 0x54, 0x01, 0x43, 0x5c, 0x98, 0x84, 0x28, 0x35, 0x2b, 0x83, 0x9f, 0x96, 0x72, 0x6c, 0xed, 0xd3, + 0xe5, 0xed, 0x92, 0xef, 0x59, 0xf6, 0xc0, 0x0a, 0x42, 0x23, 0xcc, 0x2c, 0xe5, 0x3a, 0x27, 0xeb, + 0x4a, 0x3a, 0x5a, 0xca, 0x24, 0x2f, 0xc5, 0xdb, 0x21, 0x3b, 0x9b, 0xc4, 0x0f, 0xb6, 0x9d, 0xb1, + 0x28, 0xe3, 0x6e, 0x26, 0xde, 0x3d, 0x49, 0x16, 0x97, 0x30, 0xc5, 0x4b, 0x27, 0xe2, 0x2c, 0x4e, + 0xbd, 0xb1, 0xef, 0x0e, 0xb8, 0x32, 0x0a, 0xd0, 0x27, 0x99, 0x13, 0x71, 0xa6, 0x19, 0xdd, 0x98, + 0x38, 0x86, 0xce, 0x86, 0x41, 0x77, 0xe0, 0xd0, 0xf8, 0xc2, 0x58, 0x43, 0x7e, 0x9a, 0x39, 0x71, + 0x5e, 0xbf, 0xb0, 0x9e, 0x84, 0x4c, 0x72, 0x52, 0x53, 0x73, 0x76, 0xc6, 0x9e, 0x1f, 0xde, 0x72, + 0x5c, 0x27, 0xd8, 0x36, 0xf6, 0x33, 0x4d, 0xad, 0xcf, 0x48, 0xba, 0x9c, 0x86, 0x9a, 0x9a, 0xca, + 0x83, 0x2e, 0x41, 0x73, 0xb0, 0x6d, 0x85, 0x8b, 0xb6, 0x6d, 0x7c, 0x9d, 0x07, 0x7c, 0x9f, 0x4d, + 0xf0, 0x2f, 0x6f, 0x5b, 0xa1, 0x08, 0x91, 0x44, 0xa4, 0xe8, 0x1a, 0x00, 0xfd, 0x29, 0x6a, 0xf0, + 0x8b, 0xe5, 0x4c, 0x5f, 0xc5, 0x18, 0x65, 0xe9, 0x15, 0x06, 0xf4, 0x1e, 0x1c, 0x89, 0x53, 0xd4, + 0x48, 0xf9, 0x9a, 0xff, 0x1b, 0xe5, 0x4c, 0x6f, 0xab, 0xe0, 0x48, 0xda, 0x5e, 0x09, 0x67, 0x41, + 0x44, 0x05, 0x13, 0x63, 0xf1, 0x37, 0x27, 0x14, 0x4c, 0x8e, 0xbb, 0x0a, 0xc3, 0x52, 0x13, 0xea, + 0x7b, 0xd6, 0x68, 0x97, 0x98, 0xdf, 0xad, 0x40, 0x8d, 0x92, 0x99, 0x04, 0xaa, 0xb4, 0xc2, 0xf3, + 0x50, 0x71, 0x6c, 0x83, 0xef, 0x64, 0x54, 0x1c, 0x1b, 0x19, 0xd0, 0xf4, 0xe8, 0x3c, 0x52, 0xee, + 0xab, 0x44, 0x49, 0xda, 0xa0, 0x62, 0xff, 0x45, 0x04, 0x8e, 0xcc, 0xc4, 0x9e, 0x0a, 0x85, 0x8d, + 0xb6, 0x6a, 0x22, 0x52, 0xd3, 0x80, 0x86, 0x18, 0xe6, 0x13, 0x92, 0xcc, 0x35, 0x68, 0x88, 0x56, + 0x4b, 0x96, 0x41, 0x91, 0x54, 0x99, 0x5e, 0x12, 0x81, 0x43, 0xc9, 0x46, 0x4b, 0x02, 0x2f, 0x41, + 0xdb, 0x97, 0x9d, 0x52, 0x49, 0xc4, 0x78, 0x52, 0xd0, 0x5d, 0x09, 0x84, 0x63, 0x36, 0xf3, 0x3b, + 0x0d, 0x68, 0x8a, 0xad, 0x02, 0x73, 0x0d, 0x6a, 0x6c, 0xe3, 0xe6, 0x28, 0xd4, 0x1d, 0xd7, 0x26, + 0x4f, 0x99, 0xa8, 0x3a, 0xe6, 0x09, 0xf4, 0x06, 0x34, 0xc5, 0xb6, 0x81, 0x90, 0x95, 0xb7, 0x09, + 0x15, 0x91, 0x99, 0xef, 0x43, 0x33, 0xda, 0xc0, 0x39, 0x0e, 0xed, 0xb1, 0xef, 0x51, 0x67, 0xd8, + 0x8f, 0x6a, 0x10, 0x67, 0xa0, 0x37, 0xa1, 0x69, 0x8b, 0x2d, 0xa2, 0x8a, 0xd0, 0x6d, 0xbe, 0xdd, + 0xd6, 0x8d, 0xb6, 0xdb, 0xba, 0x1b, 0x6c, 0xbb, 0x0d, 0x47, 0x74, 0xe6, 0xd7, 0xcb, 0xd0, 0xe0, + 0xfb, 0x38, 0xe6, 0x9e, 0x6c, 0xf9, 0xb7, 0xa0, 0x31, 0x60, 0x79, 0x46, 0x72, 0x0f, 0x47, 0x2b, + 0xa1, 0xd8, 0x18, 0xc2, 0x82, 0x98, 0xb2, 0x05, 0x7c, 0x10, 0xac, 0x4c, 0x64, 0xe3, 0x46, 0x8d, + 0x05, 0xf1, 0x7f, 0x9b, 0xdc, 0x3f, 0xaf, 0xc0, 0x41, 0x7d, 0x7b, 0xe8, 0x38, 0xb4, 0x07, 0x72, + 0xc3, 0x49, 0xb4, 0xae, 0xcc, 0x40, 0xf7, 0x01, 0x06, 0x23, 0x87, 0xb8, 0x21, 0x0b, 0x50, 0x56, + 0x32, 0xe7, 0xbd, 0x99, 0xbb, 0x45, 0xdd, 0x65, 0xc9, 0x86, 0x15, 0x08, 0x74, 0x03, 0xea, 0xc1, + 0xc0, 0x1b, 0x73, 0xc3, 0x99, 0x57, 0x16, 0x42, 0x7a, 0xb1, 0x17, 0x77, 0xc3, 0x6d, 0x3e, 0xb6, + 0x2e, 0x8e, 0x9d, 0x0d, 0xca, 0x80, 0x39, 0x9f, 0xf9, 0x35, 0x80, 0x18, 0x1a, 0x9d, 0x94, 0x53, + 0x99, 0x35, 0x6b, 0x27, 0x2a, 0xbf, 0x9a, 0xa5, 0x50, 0xac, 0x5b, 0xe1, 0xb6, 0xb0, 0x64, 0x35, + 0x0b, 0x9d, 0x83, 0xc3, 0x81, 0x33, 0x74, 0xad, 0x70, 0xd7, 0x27, 0x8f, 0x88, 0xef, 0x6c, 0x39, + 0xc4, 0x66, 0xc5, 0x6b, 0xe1, 0xf4, 0x07, 0xf3, 0x4d, 0x38, 0x9c, 0xde, 0xfa, 0x9a, 0xd8, 0x88, + 0xe6, 0xaf, 0xb4, 0xa1, 0xc1, 0x57, 0x35, 0xe6, 0xbf, 0x57, 0xa4, 0x5e, 0x9b, 0x7f, 0x51, 0x86, + 0x3a, 0xdf, 0xdd, 0x49, 0x1a, 0xe7, 0x2d, 0x55, 0xa7, 0xab, 0x19, 0x53, 0xfe, 0xac, 0xdd, 0xae, + 0xee, 0x1d, 0xb2, 0xff, 0x88, 0x3a, 0x36, 0xa9, 0xe8, 0xe8, 0x18, 0x34, 0x82, 0xdd, 0xcd, 0xbe, + 0x1d, 0x18, 0xd5, 0x93, 0xd5, 0xb3, 0x6d, 0x2c, 0x52, 0xe6, 0x6d, 0x68, 0x45, 0xc4, 0xa8, 0x03, + 0xd5, 0xc7, 0x64, 0x5f, 0x08, 0xa7, 0x3f, 0xd1, 0x39, 0xe1, 0x20, 0xa5, 0xa9, 0x26, 0xed, 0x89, + 0x4b, 0x11, 0x5e, 0xf4, 0x0b, 0x50, 0xa5, 0xeb, 0x88, 0x64, 0x15, 0x66, 0x37, 0xcb, 0xdc, 0xd2, + 0x2e, 0x43, 0x9d, 0xef, 0xb0, 0x25, 0x65, 0x20, 0xa8, 0x3d, 0x26, 0xfb, 0xbc, 0x8d, 0xda, 0x98, + 0xfd, 0xce, 0x05, 0xf9, 0x5e, 0x15, 0x0e, 0xa8, 0xbb, 0x0a, 0xe6, 0x6a, 0xae, 0xd3, 0xb7, 0xb6, + 0x42, 0xd5, 0xe9, 0x8b, 0x24, 0xf5, 0x6c, 0x0c, 0x8b, 0xa9, 0x46, 0x1b, 0xf3, 0x84, 0xd9, 0x85, + 0x86, 0xd8, 0xac, 0x49, 0x22, 0x49, 0xfa, 0x8a, 0x4a, 0x7f, 0x1b, 0x5a, 0x72, 0xef, 0xe5, 0xc3, + 0xca, 0xf6, 0xa1, 0x25, 0x37, 0x59, 0x8e, 0x42, 0x3d, 0xf4, 0x42, 0x6b, 0xc4, 0xe0, 0xaa, 0x98, + 0x27, 0xa8, 0x5e, 0xba, 0xe4, 0x69, 0xb8, 0x2c, 0x3d, 0x6f, 0x15, 0xc7, 0x19, 0xdc, 0xb1, 0x92, + 0x3d, 0xfe, 0xb5, 0xca, 0xbf, 0xca, 0x8c, 0x58, 0x66, 0x4d, 0x95, 0xb9, 0x0f, 0x0d, 0xb1, 0xf3, + 0x22, 0xbf, 0x97, 0x95, 0xef, 0x68, 0x11, 0xea, 0x43, 0xfa, 0x5d, 0xf4, 0xfa, 0x6b, 0x09, 0xfb, + 0xe6, 0x0b, 0xaa, 0x65, 0xcf, 0x0d, 0xa9, 0x1a, 0xeb, 0x01, 0x25, 0xcc, 0x39, 0x69, 0x17, 0xfa, + 0x7c, 0x1b, 0x8d, 0x1b, 0xa1, 0x48, 0x99, 0xdf, 0x29, 0x43, 0x5b, 0xee, 0x5b, 0x9a, 0xef, 0xe7, + 0x19, 0xcf, 0x22, 0x1c, 0xf4, 0x05, 0x15, 0x35, 0xd4, 0xc8, 0x84, 0x9e, 0x4f, 0x94, 0x04, 0x2b, + 0x34, 0x58, 0xe7, 0x30, 0xdf, 0xc9, 0xed, 0xd4, 0x05, 0x38, 0x10, 0x91, 0xde, 0x89, 0x55, 0x4f, + 0xcb, 0x33, 0x4d, 0xc9, 0xdd, 0x81, 0xaa, 0x63, 0xf3, 0xa3, 0x1c, 0x6d, 0x4c, 0x7f, 0x9a, 0x5b, + 0x70, 0x40, 0xdd, 0xbd, 0x30, 0x1f, 0x65, 0x5b, 0xcf, 0x0d, 0x2a, 0x46, 0xd9, 0x29, 0xa9, 0x24, + 0x96, 0x68, 0x51, 0x15, 0x62, 0x12, 0xac, 0x31, 0x98, 0xcf, 0x42, 0x9d, 0xef, 0xa9, 0x26, 0xa7, + 0x1a, 0xdf, 0x1e, 0x40, 0x9d, 0x75, 0x82, 0x79, 0x91, 0x1b, 0xc0, 0x39, 0x68, 0xb0, 0xf8, 0x40, + 0x74, 0xe2, 0xe4, 0x68, 0x56, 0x8f, 0x61, 0x41, 0x63, 0x2e, 0xc3, 0x9c, 0xb2, 0x9b, 0x45, 0x35, + 0x96, 0x7d, 0x90, 0x5a, 0x10, 0x25, 0x91, 0x09, 0x2d, 0x3a, 0x40, 0x0b, 0x9f, 0x4b, 0xeb, 0x2f, + 0xd3, 0xe6, 0x29, 0x39, 0x11, 0x32, 0xc5, 0xee, 0x5d, 0x5f, 0xb6, 0x92, 0x4c, 0x9b, 0x9f, 0x87, + 0xb6, 0xdc, 0xf4, 0x42, 0xf7, 0xe1, 0x80, 0xd8, 0xf4, 0xe2, 0x6b, 0x76, 0x4a, 0x3c, 0x5f, 0xa0, + 0x5d, 0x74, 0x81, 0xce, 0xf6, 0xcd, 0xba, 0x0f, 0xf6, 0xc7, 0x04, 0x6b, 0x00, 0xe6, 0x2f, 0x9d, + 0x65, 0x2d, 0x6f, 0x8e, 0xa1, 0x25, 0x23, 0xfd, 0xc9, 0x5e, 0xb8, 0xc2, 0x5d, 0x63, 0xa5, 0x70, + 0x9b, 0x8a, 0xf3, 0x53, 0x07, 0xcc, 0x3c, 0xa8, 0xf9, 0x3c, 0x54, 0xef, 0x90, 0x7d, 0x6a, 0x21, + 0xdc, 0x91, 0x0a, 0x0b, 0xe1, 0x0e, 0xb3, 0x0f, 0x0d, 0xb1, 0xe3, 0x96, 0x94, 0x77, 0x1e, 0x1a, + 0x5b, 0x7c, 0x13, 0xaf, 0xc0, 0x65, 0x0a, 0x32, 0xf3, 0x06, 0xcc, 0xa9, 0xfb, 0x6c, 0x49, 0xbc, + 0x93, 0x30, 0x37, 0x50, 0x76, 0xf2, 0x78, 0x37, 0xa8, 0x59, 0x26, 0xd1, 0xd5, 0x31, 0x85, 0xb0, + 0x9a, 0xa9, 0x87, 0x2f, 0x65, 0x36, 0xfb, 0x04, 0x6d, 0xbc, 0x03, 0x87, 0x92, 0x1b, 0x6a, 0x49, + 0x49, 0x67, 0xe1, 0xd0, 0x66, 0x62, 0xfb, 0x8e, 0xfb, 0xc0, 0x64, 0xb6, 0xd9, 0x87, 0x3a, 0xdf, + 0xf0, 0x48, 0x42, 0xbc, 0x01, 0x75, 0x8b, 0x6d, 0xa8, 0x54, 0xd8, 0xd4, 0xc2, 0xcc, 0x2c, 0x25, + 0x63, 0xc5, 0x9c, 0xd0, 0x74, 0xe0, 0xa0, 0xbe, 0x87, 0x92, 0x84, 0xec, 0xc1, 0xc1, 0x3d, 0x6d, + 0xaf, 0x86, 0x43, 0x2f, 0x64, 0x42, 0x6b, 0x50, 0x58, 0x67, 0x34, 0xbf, 0xd1, 0x80, 0x1a, 0xdb, + 0x04, 0x4c, 0x8a, 0xb8, 0x0c, 0xb5, 0x90, 0x3c, 0x8d, 0xe6, 0xc5, 0x0b, 0x13, 0x77, 0x14, 0x79, + 0x24, 0x8a, 0xd1, 0xa3, 0x4f, 0x42, 0x3d, 0x08, 0xf7, 0x47, 0xd1, 0x0a, 0xe4, 0xe5, 0xc9, 0x8c, + 0x1b, 0x94, 0x14, 0x73, 0x0e, 0xca, 0xca, 0x6c, 0x41, 0x6c, 0x5a, 0x17, 0xb0, 0x32, 0x23, 0xc4, + 0x9c, 0x03, 0xdd, 0xa0, 0x4b, 0x49, 0x32, 0x78, 0x4c, 0x6c, 0xb1, 0x5b, 0x7d, 0x7a, 0x32, 0xf3, + 0x32, 0x27, 0xc6, 0x11, 0x17, 0x95, 0x3d, 0x60, 0xbd, 0xdb, 0x98, 0x46, 0x36, 0xeb, 0x71, 0xcc, + 0x39, 0xd0, 0x2a, 0xb4, 0x9d, 0x81, 0xe7, 0xae, 0xee, 0x78, 0x5f, 0x74, 0xc4, 0xb6, 0xf4, 0x2b, + 0x93, 0xd9, 0xfb, 0x11, 0x39, 0x8e, 0x39, 0x23, 0x98, 0xfe, 0x0e, 0x5d, 0x54, 0xb5, 0xa6, 0x85, + 0x61, 0xe4, 0x38, 0xe6, 0x34, 0x8f, 0x8b, 0xfe, 0xcc, 0x36, 0xf2, 0x5b, 0x50, 0x67, 0x4d, 0x8e, + 0xae, 0xa9, 0x9f, 0xe7, 0x15, 0x49, 0xb9, 0x1e, 0x4b, 0x74, 0x95, 0xc4, 0x61, 0xed, 0xaf, 0xe3, + 0xcc, 0x4d, 0x83, 0x23, 0xfa, 0x8d, 0xe3, 0xbc, 0x08, 0x4d, 0xd1, 0x15, 0x7a, 0x81, 0x5b, 0x11, + 0xc1, 0x0b, 0x50, 0xe7, 0x86, 0x99, 0x5d, 0x9f, 0x97, 0xa0, 0x2d, 0x1b, 0x73, 0x32, 0x09, 0x6b, + 0x9d, 0x1c, 0x92, 0x5f, 0xae, 0x40, 0x9d, 0x6f, 0x86, 0xa6, 0x5d, 0xad, 0x6a, 0x05, 0x2f, 0x4f, + 0xde, 0x5b, 0x55, 0xcd, 0xe0, 0x16, 0x5b, 0x1c, 0xd2, 0xb9, 0xbc, 0x3c, 0xe0, 0x78, 0xb6, 0x80, + 0x7b, 0x3d, 0xa2, 0xc7, 0x31, 0x6b, 0x41, 0x77, 0xde, 0x87, 0xb6, 0xe4, 0x42, 0x4b, 0x7a, 0x97, + 0x9e, 0x9b, 0xd8, 0x15, 0x49, 0x91, 0x02, 0xf0, 0xb7, 0xca, 0x50, 0x5d, 0x71, 0xf6, 0x52, 0xed, + 0xf0, 0x76, 0x64, 0xd5, 0x45, 0xee, 0x60, 0xc5, 0xd9, 0xd3, 0x8c, 0xda, 0x5c, 0x8d, 0x34, 0xee, + 0x1d, 0xbd, 0x78, 0x67, 0x26, 0xcf, 0xc0, 0x62, 0x18, 0x5e, 0xb0, 0x5f, 0x6f, 0x42, 0x8d, 0x9d, + 0x33, 0xc8, 0xf2, 0x53, 0xfb, 0xe3, 0xe2, 0x82, 0xb1, 0x48, 0x26, 0x1b, 0x70, 0x19, 0x3d, 0xf7, + 0x53, 0x56, 0x58, 0xec, 0xa7, 0x78, 0x60, 0x96, 0x92, 0x62, 0xce, 0x41, 0x45, 0xee, 0x38, 0x3b, + 0x44, 0xb8, 0xa9, 0x02, 0x91, 0xf7, 0x9c, 0x1d, 0x82, 0x19, 0x3d, 0xe5, 0xdb, 0xb6, 0x82, 0x6d, + 0xe1, 0xa1, 0x0a, 0xf8, 0x7a, 0x56, 0xb0, 0x8d, 0x19, 0x3d, 0xe5, 0x73, 0xe9, 0x2a, 0xb2, 0x31, + 0x0d, 0x1f, 0x5d, 0x5c, 0x62, 0x46, 0x4f, 0xf9, 0x02, 0xe7, 0xcb, 0x44, 0xf8, 0xa4, 0x02, 0xbe, + 0x0d, 0xe7, 0xcb, 0x04, 0x33, 0xfa, 0xd8, 0x85, 0xb7, 0xa6, 0x6b, 0x1a, 0xc5, 0x85, 0x3f, 0x80, + 0xf9, 0x50, 0xdb, 0x2d, 0x13, 0x87, 0x5d, 0xce, 0x15, 0xf4, 0x8b, 0xc6, 0x83, 0x13, 0x18, 0xd4, + 0x08, 0xd8, 0x9a, 0x39, 0xdb, 0x08, 0x5e, 0x80, 0xfa, 0x67, 0x1c, 0x3b, 0xdc, 0xd6, 0x3f, 0xd7, + 0x35, 0x97, 0x47, 0xbb, 0x6d, 0x26, 0x97, 0xa7, 0xf6, 0x3a, 0xc7, 0x59, 0x81, 0x1a, 0x55, 0x9f, + 0xd9, 0xf4, 0x38, 0xd6, 0xba, 0x0f, 0xe5, 0x80, 0xd5, 0x86, 0xe6, 0x38, 0xc7, 0xa1, 0x46, 0x35, + 0x24, 0xa7, 0x49, 0x8e, 0x43, 0x8d, 0xea, 0x5d, 0xfe, 0x57, 0xda, 0xdb, 0xfa, 0xd7, 0x6a, 0xf4, + 0xf5, 0x0c, 0xcc, 0xeb, 0xdd, 0x91, 0x83, 0xf2, 0xdd, 0x26, 0xd4, 0xd8, 0xa1, 0x9d, 0xa4, 0x45, + 0x7e, 0x1a, 0x0e, 0xf2, 0xfe, 0x5b, 0x12, 0x53, 0xf0, 0x4a, 0xe6, 0x99, 0x3d, 0xfd, 0x28, 0x90, + 0x50, 0x01, 0xc1, 0x82, 0x75, 0x84, 0xe9, 0x27, 0x15, 0x0c, 0x4a, 0xd3, 0xc8, 0x77, 0xe4, 0xe4, + 0xb5, 0x56, 0x70, 0x62, 0x8c, 0xf1, 0xf2, 0x29, 0x70, 0x34, 0x93, 0x45, 0x4b, 0xd0, 0xa2, 0x43, + 0x2b, 0x6d, 0x2e, 0x61, 0xb6, 0x67, 0x26, 0xf3, 0xf7, 0x05, 0x35, 0x96, 0x7c, 0x74, 0x60, 0x1f, + 0x58, 0xbe, 0xcd, 0x4a, 0x25, 0x6c, 0xf8, 0x95, 0xc9, 0x20, 0xcb, 0x11, 0x39, 0x8e, 0x39, 0xd1, + 0x1d, 0x98, 0xb3, 0x89, 0x8c, 0x13, 0x08, 0xa3, 0xfe, 0xc4, 0x64, 0xa0, 0x95, 0x98, 0x01, 0xab, + 0xdc, 0xb4, 0x4c, 0xd1, 0xda, 0x30, 0x28, 0x9c, 0x6c, 0x30, 0xa8, 0xf8, 0x64, 0x6e, 0xcc, 0x69, + 0x9e, 0x86, 0x83, 0x5a, 0xbf, 0x7d, 0xa4, 0xb3, 0x0e, 0xb5, 0x2f, 0x39, 0xce, 0x15, 0xb9, 0x44, + 0x79, 0x5d, 0x9f, 0x76, 0xe4, 0xae, 0x48, 0x04, 0xe3, 0x5d, 0x68, 0x45, 0x1d, 0x83, 0x6e, 0xea, + 0x65, 0x78, 0xb5, 0xb8, 0x0c, 0xb2, 0x4f, 0x05, 0xda, 0x1a, 0xb4, 0x65, 0x0f, 0xa1, 0x45, 0x1d, + 0xee, 0xb5, 0x62, 0xb8, 0xb8, 0x77, 0x05, 0x1e, 0x86, 0x39, 0xa5, 0xa3, 0xd0, 0xb2, 0x8e, 0xf8, + 0x7a, 0x31, 0xa2, 0xda, 0xcd, 0xf1, 0xac, 0x47, 0xf6, 0x98, 0xda, 0x2b, 0xd5, 0xb8, 0x57, 0xfe, + 0xb8, 0x09, 0x2d, 0x79, 0x50, 0x2e, 0x63, 0x8d, 0xb9, 0xeb, 0x8f, 0x0a, 0xd7, 0x98, 0x11, 0x7f, + 0xf7, 0xa1, 0x3f, 0xc2, 0x94, 0x83, 0x76, 0x71, 0xe8, 0x84, 0xd2, 0x54, 0x5f, 0x29, 0x66, 0x7d, + 0x40, 0xc9, 0x31, 0xe7, 0x42, 0xf7, 0x75, 0x2d, 0xaf, 0x4d, 0x38, 0x48, 0xa1, 0x81, 0xe4, 0x6a, + 0x7a, 0x1f, 0xda, 0x0e, 0x9d, 0xfa, 0xf5, 0xe2, 0x91, 0xf7, 0xb5, 0x62, 0xb8, 0x7e, 0xc4, 0x82, + 0x63, 0x6e, 0x5a, 0xb6, 0x2d, 0x6b, 0x8f, 0xda, 0x35, 0x03, 0x6b, 0x4c, 0x5b, 0xb6, 0x5b, 0x31, + 0x13, 0x56, 0x11, 0xd0, 0x55, 0x31, 0x77, 0x69, 0x16, 0x78, 0x96, 0xb8, 0xa9, 0xe2, 0xf9, 0xcb, + 0x7b, 0xa9, 0x91, 0x96, 0x9b, 0xf1, 0x1b, 0x53, 0xa0, 0x4c, 0x1c, 0x6d, 0x69, 0x0f, 0xf2, 0x99, + 0x51, 0x7b, 0xda, 0x1e, 0x54, 0x67, 0x47, 0xe6, 0xf3, 0x50, 0x7d, 0xe8, 0x8f, 0xf2, 0xc7, 0x6a, + 0xd6, 0xdd, 0x39, 0x9f, 0x5f, 0xd6, 0x2d, 0x21, 0x7f, 0x42, 0x2f, 0xfb, 0x24, 0x17, 0x47, 0x69, + 0xf4, 0x1c, 0xa2, 0x6b, 0x62, 0x40, 0x7f, 0x4b, 0xb7, 0xb7, 0x17, 0x13, 0xf6, 0x46, 0x2d, 0x6c, + 0xdd, 0x27, 0xfc, 0xac, 0x90, 0x32, 0x92, 0x4f, 0x3b, 0x4e, 0xde, 0x8e, 0xe6, 0x1f, 0x33, 0x79, + 0x8a, 0x64, 0xdb, 0x72, 0xac, 0x6f, 0x95, 0xa1, 0x25, 0xcf, 0x41, 0xa6, 0xa3, 0xf3, 0x2d, 0x27, + 0xe8, 0x11, 0xcb, 0x26, 0xbe, 0xb0, 0xdb, 0x57, 0x0b, 0x0f, 0x58, 0x76, 0xfb, 0x82, 0x03, 0x4b, + 0x5e, 0xf3, 0x24, 0xb4, 0xa2, 0xdc, 0x9c, 0x45, 0xd9, 0x8f, 0x2b, 0xd0, 0x10, 0x27, 0x28, 0x93, + 0x85, 0xb8, 0x0e, 0x8d, 0x91, 0xb5, 0xef, 0xed, 0x46, 0x4b, 0xa6, 0x33, 0x05, 0x87, 0x32, 0xbb, + 0x77, 0x19, 0x35, 0x16, 0x5c, 0xe8, 0x53, 0x50, 0x1f, 0x39, 0x3b, 0x4e, 0x28, 0xdc, 0xc7, 0xe9, + 0x42, 0x76, 0x76, 0xd6, 0x82, 0xf3, 0x50, 0xe1, 0xec, 0xe0, 0x54, 0x74, 0xec, 0xbd, 0x50, 0xf8, + 0x23, 0x46, 0x8d, 0x05, 0x97, 0x79, 0x1b, 0x1a, 0xbc, 0x38, 0xb3, 0x0d, 0x12, 0x7a, 0x4d, 0x62, + 0x4d, 0x67, 0x65, 0xcb, 0x99, 0x95, 0x9e, 0x80, 0x06, 0x17, 0x9e, 0xa3, 0x35, 0x3f, 0x7a, 0x8e, + 0xad, 0x77, 0x46, 0xe6, 0xdd, 0x78, 0xc3, 0xf1, 0xc3, 0xef, 0x65, 0x98, 0x0f, 0xe0, 0xd0, 0x8a, + 0x15, 0x5a, 0x9b, 0x56, 0x40, 0x30, 0x19, 0x78, 0xbe, 0x9d, 0x89, 0xea, 0xf3, 0x4f, 0x22, 0x42, + 0x9d, 0x8f, 0x2a, 0xe8, 0x3e, 0x0e, 0x1d, 0xfe, 0xcf, 0x09, 0x1d, 0xfe, 0x49, 0x2d, 0x27, 0x9e, + 0x37, 0x4d, 0x24, 0x83, 0x2a, 0x5c, 0x2a, 0xa0, 0x77, 0x55, 0x9f, 0x7b, 0x9f, 0x2a, 0xe0, 0xd4, + 0x26, 0xdf, 0x57, 0xf5, 0x88, 0x5e, 0x11, 0xaf, 0x16, 0xd2, 0xbb, 0x99, 0x0c, 0xe9, 0x9d, 0x29, + 0xe0, 0x4e, 0xc5, 0xf4, 0xae, 0xea, 0x31, 0xbd, 0x22, 0xe9, 0x6a, 0x50, 0xef, 0xff, 0x58, 0x18, + 0xed, 0xb7, 0x73, 0xc2, 0x3e, 0x9f, 0xd4, 0xc3, 0x3e, 0x13, 0xb4, 0xe6, 0xe7, 0x15, 0xf7, 0xf9, + 0x9d, 0x46, 0x4e, 0xdc, 0xe7, 0x8a, 0x16, 0xf7, 0x99, 0x50, 0xb2, 0x64, 0xe0, 0xe7, 0xaa, 0x1e, + 0xf8, 0x39, 0x55, 0xc0, 0xa9, 0x45, 0x7e, 0xae, 0x68, 0x91, 0x9f, 0x22, 0xa1, 0x4a, 0xe8, 0xe7, + 0x8a, 0x16, 0xfa, 0x29, 0x62, 0x54, 0x62, 0x3f, 0x57, 0xb4, 0xd8, 0x4f, 0x11, 0xa3, 0x12, 0xfc, + 0xb9, 0xa2, 0x05, 0x7f, 0x8a, 0x18, 0x95, 0xe8, 0xcf, 0x55, 0x3d, 0xfa, 0x53, 0xdc, 0x3e, 0x4a, + 0xa7, 0x7f, 0x1c, 0xa8, 0xf9, 0x2f, 0x0c, 0xd4, 0xfc, 0x5a, 0x35, 0x27, 0x00, 0x83, 0xb3, 0x03, + 0x30, 0xe7, 0xf2, 0x7b, 0xb2, 0x38, 0x02, 0x33, 0xfd, 0x28, 0x90, 0x0e, 0xc1, 0x5c, 0x4b, 0x84, + 0x60, 0x4e, 0x17, 0x30, 0xeb, 0x31, 0x98, 0xff, 0x35, 0x41, 0x86, 0x3f, 0x6c, 0x4c, 0x58, 0x4f, + 0xbf, 0xad, 0xae, 0xa7, 0x27, 0x8c, 0x64, 0xe9, 0x05, 0xf5, 0x75, 0x7d, 0x41, 0x7d, 0x76, 0x0a, + 0x5e, 0x6d, 0x45, 0xbd, 0x9e, 0xb5, 0xa2, 0xee, 0x4e, 0x81, 0x92, 0xbb, 0xa4, 0xbe, 0x9d, 0x5e, + 0x52, 0x9f, 0x9b, 0x02, 0x2f, 0x73, 0x4d, 0xbd, 0x9e, 0xb5, 0xa6, 0x9e, 0xa6, 0x74, 0xb9, 0x8b, + 0xea, 0x4f, 0x69, 0x8b, 0xea, 0x57, 0xa6, 0x69, 0xae, 0x78, 0x70, 0xf8, 0x6c, 0xce, 0xaa, 0xfa, + 0xcd, 0x69, 0x60, 0x26, 0x07, 0xb1, 0x3f, 0x5e, 0x17, 0xeb, 0x62, 0xfe, 0xe0, 0x45, 0x68, 0x45, + 0x07, 0x6d, 0xcc, 0x2f, 0x41, 0x33, 0xba, 0x36, 0x97, 0xb4, 0x9c, 0x63, 0x72, 0x51, 0xc7, 0x67, + 0xcf, 0x22, 0x85, 0xae, 0x43, 0x8d, 0xfe, 0x12, 0x66, 0xf1, 0xea, 0x74, 0x07, 0x7a, 0xa8, 0x10, + 0xcc, 0xf8, 0xcc, 0x7f, 0x3b, 0x0a, 0xa0, 0xdc, 0x26, 0x9a, 0x56, 0xec, 0xbb, 0xd4, 0x99, 0x8d, + 0x42, 0xe2, 0xb3, 0x83, 0x5c, 0x85, 0xb7, 0x6d, 0x62, 0x09, 0x54, 0x5b, 0x42, 0xe2, 0x63, 0xc1, + 0x8e, 0xee, 0x41, 0x2b, 0x0a, 0xa4, 0x1a, 0x35, 0x06, 0xf5, 0xe6, 0xd4, 0x50, 0x51, 0x68, 0x0f, + 0x4b, 0x08, 0xb4, 0x08, 0xb5, 0xc0, 0xf3, 0x43, 0xa3, 0xce, 0xa0, 0x5e, 0x9f, 0x1a, 0x6a, 0xc3, + 0xf3, 0x43, 0xcc, 0x58, 0x79, 0xd5, 0x94, 0xcb, 0xda, 0xb3, 0x54, 0x4d, 0xf3, 0xd8, 0xff, 0x5a, + 0x95, 0x3e, 0x74, 0x59, 0x58, 0x23, 0xd7, 0xa1, 0xf3, 0xd3, 0xf7, 0x92, 0x6a, 0x95, 0x48, 0x4c, + 0x82, 0x78, 0x4f, 0xf0, 0xf9, 0xcd, 0xab, 0xd0, 0x19, 0x78, 0x7b, 0xc4, 0xc7, 0xf1, 0x11, 0x27, + 0x71, 0x0a, 0x2d, 0x95, 0x8f, 0x4c, 0x68, 0x6d, 0x3b, 0x36, 0xe9, 0x0f, 0x84, 0xff, 0x6b, 0x61, + 0x99, 0x46, 0x77, 0xa0, 0xc5, 0x62, 0xec, 0x51, 0x84, 0x7f, 0xb6, 0x42, 0xf2, 0x50, 0x7f, 0x04, + 0x40, 0x05, 0x31, 0xe1, 0xb7, 0x9c, 0x90, 0xb5, 0x61, 0x0b, 0xcb, 0x34, 0x2d, 0x30, 0x3b, 0x47, + 0xa6, 0x16, 0xb8, 0xc9, 0x0b, 0x9c, 0xcc, 0x47, 0x97, 0xe0, 0x19, 0x96, 0x97, 0x58, 0x62, 0xf2, + 0x50, 0x7d, 0x0b, 0x67, 0x7f, 0x64, 0xe7, 0xe6, 0xac, 0x21, 0xbf, 0x9a, 0xc1, 0x82, 0x77, 0x75, + 0x1c, 0x67, 0xa0, 0x73, 0x70, 0xd8, 0x26, 0x5b, 0xd6, 0xee, 0x28, 0x7c, 0x40, 0x76, 0xc6, 0x23, + 0x2b, 0x24, 0x7d, 0x9b, 0xdd, 0x17, 0x6f, 0xe3, 0xf4, 0x07, 0xf4, 0x06, 0x1c, 0x11, 0x99, 0xdc, + 0x8c, 0x69, 0x6f, 0xf4, 0x6d, 0x76, 0x7d, 0xba, 0x8d, 0xb3, 0x3e, 0x99, 0x3f, 0xaa, 0xd1, 0x4e, + 0x67, 0xaa, 0xfd, 0x2e, 0x54, 0x2d, 0xdb, 0x16, 0xc3, 0xe6, 0xc5, 0x19, 0x0d, 0x44, 0x9c, 0xf7, + 0xa7, 0x08, 0x68, 0x5d, 0x1e, 0xb9, 0xe3, 0x03, 0xe7, 0xe5, 0x59, 0xb1, 0xe4, 0x33, 0x16, 0x02, + 0x87, 0x22, 0xee, 0xf2, 0x9b, 0x03, 0xd5, 0x9f, 0x0d, 0x51, 0x5e, 0x2a, 0x10, 0x38, 0xe8, 0x36, + 0xd4, 0x58, 0x09, 0xf9, 0xc0, 0x7a, 0x69, 0x56, 0xbc, 0x7b, 0xbc, 0x7c, 0x0c, 0xc3, 0x1c, 0xf0, + 0xb3, 0x6f, 0xca, 0x81, 0xcb, 0xb2, 0x7e, 0xe0, 0x72, 0x09, 0xea, 0x4e, 0x48, 0x76, 0xd2, 0xe7, + 0x6f, 0x27, 0xaa, 0xaa, 0xf0, 0x3c, 0x9c, 0x75, 0xe2, 0x39, 0xc0, 0xf7, 0x73, 0x4f, 0xfc, 0xdf, + 0x84, 0x1a, 0x65, 0x4f, 0xcd, 0x25, 0xa7, 0x11, 0xcc, 0x38, 0xcd, 0x0b, 0x50, 0xa3, 0x95, 0x9d, + 0x50, 0x3b, 0x51, 0x9e, 0x8a, 0x2c, 0xcf, 0xd2, 0x1c, 0xb4, 0xbd, 0x31, 0xf1, 0x99, 0x61, 0x98, + 0xff, 0x52, 0x53, 0x0e, 0xc5, 0xf5, 0x55, 0x1d, 0x7b, 0x6b, 0x66, 0xcf, 0xa9, 0x6a, 0x19, 0x4e, + 0x68, 0xd9, 0xdb, 0xb3, 0xa3, 0xa5, 0xf4, 0x0c, 0x27, 0xf4, 0xec, 0x67, 0xc0, 0x4c, 0x69, 0xda, + 0x5d, 0x4d, 0xd3, 0x2e, 0xcf, 0x8e, 0xa8, 0xe9, 0x1a, 0x29, 0xd2, 0xb5, 0x15, 0x5d, 0xd7, 0xba, + 0xd3, 0x75, 0xb9, 0x1c, 0x9a, 0xa6, 0xd0, 0xb6, 0xcf, 0xe7, 0x6a, 0xdb, 0x92, 0xa6, 0x6d, 0xb3, + 0x8a, 0xfe, 0x88, 0xf4, 0xed, 0x87, 0x35, 0xa8, 0xd1, 0xe1, 0x11, 0xad, 0xaa, 0xba, 0xf6, 0xe6, + 0x4c, 0x43, 0xab, 0xaa, 0x67, 0x6b, 0x09, 0x3d, 0xbb, 0x34, 0x1b, 0x52, 0x4a, 0xc7, 0xd6, 0x12, + 0x3a, 0x36, 0x23, 0x5e, 0x4a, 0xbf, 0x7a, 0x9a, 0x7e, 0x5d, 0x98, 0x0d, 0x4d, 0xd3, 0x2d, 0xab, + 0x48, 0xb7, 0x6e, 0xea, 0xba, 0x35, 0xe5, 0xec, 0x8d, 0xcd, 0x55, 0xa6, 0xd0, 0xab, 0xf7, 0x72, + 0xf5, 0xea, 0xba, 0xa6, 0x57, 0xb3, 0x88, 0xfd, 0x88, 0x74, 0xea, 0x12, 0x9f, 0x74, 0x66, 0x5f, + 0xb8, 0xca, 0x9b, 0x74, 0x9a, 0x6f, 0x41, 0x3b, 0x7e, 0x8e, 0x21, 0xe3, 0x78, 0x3e, 0x27, 0x8b, + 0xa4, 0x46, 0x49, 0xf3, 0x22, 0xb4, 0xe3, 0x27, 0x16, 0x32, 0x64, 0x05, 0xec, 0xa3, 0xe0, 0x12, + 0x29, 0x73, 0x15, 0x0e, 0xa7, 0x2f, 0x80, 0x67, 0xc4, 0xe1, 0x95, 0xb3, 0xe5, 0xd1, 0xed, 0x15, + 0x25, 0xcb, 0x7c, 0x02, 0xf3, 0x89, 0x2b, 0xdd, 0x33, 0x63, 0xa0, 0x8b, 0xca, 0x14, 0xb9, 0x9a, + 0xb8, 0x20, 0xa8, 0x9f, 0x96, 0x8f, 0x27, 0xc2, 0xe6, 0x0a, 0xcc, 0x17, 0x14, 0x7e, 0x9a, 0xc3, + 0xf2, 0x5f, 0x80, 0xb9, 0x49, 0x65, 0xff, 0x08, 0x0e, 0xf3, 0x87, 0xd0, 0x49, 0x3d, 0x47, 0x91, + 0x14, 0xb3, 0x0e, 0x30, 0x94, 0x34, 0x42, 0x69, 0xdf, 0x98, 0xe1, 0xea, 0x02, 0xe3, 0xc3, 0x0a, + 0x86, 0xf9, 0xfb, 0x65, 0x38, 0x9c, 0x7e, 0x8b, 0x62, 0xda, 0xc5, 0x8f, 0x01, 0x4d, 0x86, 0x25, + 0x6f, 0x7c, 0x44, 0x49, 0x74, 0x0f, 0x0e, 0x04, 0x23, 0x67, 0x40, 0x96, 0xb7, 0x2d, 0x77, 0x48, + 0x02, 0xb1, 0xa2, 0x29, 0x78, 0x4f, 0x62, 0x23, 0xe6, 0xc0, 0x1a, 0xbb, 0xf9, 0x04, 0xe6, 0x94, + 0x8f, 0xe8, 0x1d, 0xa8, 0x78, 0xe3, 0xd4, 0xb9, 0xc6, 0x7c, 0xcc, 0xfb, 0x91, 0xbd, 0xe1, 0x8a, + 0x37, 0x4e, 0x9b, 0xa4, 0x6a, 0xbe, 0x55, 0xcd, 0x7c, 0xcd, 0x3b, 0x70, 0x38, 0xfd, 0xdc, 0x43, + 0xb2, 0x79, 0xce, 0xa4, 0xa2, 0x04, 0xbc, 0x99, 0x92, 0x4b, 0xfe, 0x2b, 0x70, 0x28, 0xf9, 0x88, + 0x43, 0xc6, 0x6d, 0x9c, 0xf8, 0x52, 0x53, 0x14, 0xae, 0x5f, 0xf8, 0xd5, 0x32, 0xcc, 0xeb, 0x15, + 0x41, 0xc7, 0x00, 0xe9, 0x39, 0x6b, 0x9e, 0x4b, 0x3a, 0x25, 0xf4, 0x0c, 0x1c, 0xd6, 0xf3, 0x17, + 0x6d, 0xbb, 0x53, 0x4e, 0x93, 0x53, 0xb7, 0xd5, 0xa9, 0x20, 0x03, 0x8e, 0x26, 0x5a, 0x88, 0x39, + 0xd1, 0x4e, 0x15, 0x3d, 0x07, 0xcf, 0x24, 0xbf, 0x8c, 0x47, 0xd6, 0x80, 0x74, 0x6a, 0xe6, 0x4f, + 0x2b, 0x50, 0x7b, 0x18, 0x10, 0xdf, 0xfc, 0xa7, 0x4a, 0x74, 0x4b, 0xe3, 0x6d, 0xa8, 0xb1, 0xf7, + 0x15, 0x94, 0x1b, 0x94, 0xe5, 0xc4, 0x0d, 0x4a, 0xed, 0x16, 0x5e, 0x7c, 0x83, 0xf2, 0x6d, 0xa8, + 0xb1, 0x17, 0x15, 0x66, 0xe7, 0xfc, 0x66, 0x19, 0xda, 0xf1, 0xeb, 0x06, 0x33, 0xf3, 0xab, 0xb7, + 0x42, 0x2a, 0xfa, 0xad, 0x90, 0x57, 0xa1, 0xee, 0xb3, 0xfb, 0x1b, 0xdc, 0xcb, 0x24, 0xef, 0x9a, + 0x30, 0x81, 0x98, 0x93, 0x98, 0x04, 0xe6, 0xd4, 0xb7, 0x1b, 0x66, 0x2f, 0xc6, 0x29, 0xf1, 0x70, + 0x53, 0xdf, 0x0e, 0x16, 0x7d, 0xdf, 0xda, 0x17, 0x8a, 0xa9, 0x67, 0x9a, 0xc7, 0xa1, 0xb6, 0xee, + 0xb8, 0xc3, 0xec, 0x8b, 0xab, 0xe6, 0x9f, 0x96, 0xa1, 0x29, 0x0e, 0xef, 0x9a, 0x57, 0xa0, 0xba, + 0x46, 0x9e, 0xd0, 0x82, 0x88, 0x63, 0xc3, 0xa9, 0x82, 0xdc, 0x63, 0xb5, 0x10, 0xf4, 0x38, 0x22, + 0x33, 0xaf, 0xca, 0x61, 0x72, 0x76, 0xde, 0xb7, 0xa1, 0xc6, 0x9e, 0x5c, 0x98, 0x9d, 0xf3, 0xcf, + 0x5a, 0xd0, 0xe0, 0xb7, 0x3f, 0xcd, 0x3f, 0x6a, 0x41, 0x83, 0x3f, 0xc3, 0x80, 0xae, 0x43, 0x33, + 0xd8, 0xdd, 0xd9, 0xb1, 0xfc, 0x7d, 0x23, 0xfb, 0x71, 0x51, 0xed, 0xd5, 0x86, 0xee, 0x06, 0xa7, + 0xc5, 0x11, 0x13, 0x7a, 0x0b, 0x6a, 0x03, 0x6b, 0x8b, 0xa4, 0xb6, 0x73, 0xb3, 0x98, 0x97, 0xad, + 0x2d, 0x82, 0x19, 0x39, 0xba, 0x09, 0x2d, 0xd1, 0x2d, 0x81, 0x88, 0xe7, 0x4c, 0x96, 0x1b, 0x75, + 0xa6, 0xe4, 0x32, 0x6f, 0x43, 0x53, 0x14, 0x06, 0xdd, 0x90, 0x77, 0x5f, 0x93, 0x91, 0xe7, 0xcc, + 0x2a, 0xc8, 0xfb, 0xf9, 0xf2, 0x16, 0xec, 0x5f, 0x56, 0xa0, 0x46, 0x0b, 0xf7, 0xa1, 0x91, 0xd0, + 0x09, 0x80, 0x91, 0x15, 0x84, 0xeb, 0xbb, 0xa3, 0x11, 0xb1, 0xc5, 0x0d, 0x3b, 0x25, 0x07, 0x9d, + 0x85, 0x43, 0x3c, 0x15, 0x6c, 0x6f, 0xec, 0x0e, 0x06, 0x44, 0xde, 0x2c, 0x4d, 0x66, 0xa3, 0x45, + 0xa8, 0xb3, 0x87, 0x01, 0xc5, 0xac, 0xf0, 0xb5, 0xc2, 0x96, 0xed, 0xae, 0x3b, 0xae, 0x28, 0x0d, + 0xe7, 0x34, 0x3d, 0x68, 0xcb, 0x3c, 0x6a, 0x84, 0x63, 0xc7, 0x75, 0x1d, 0x77, 0x28, 0x34, 0x3a, + 0x4a, 0xd2, 0x41, 0x87, 0xfe, 0x14, 0xe5, 0xad, 0x63, 0x91, 0xa2, 0xf9, 0x5b, 0x96, 0x33, 0x12, + 0x45, 0xac, 0x63, 0x91, 0xa2, 0x48, 0xbb, 0xe2, 0xf1, 0x8a, 0x1a, 0xab, 0x60, 0x94, 0x34, 0x3f, + 0x28, 0xcb, 0x0b, 0xe0, 0x59, 0x97, 0x33, 0x53, 0xb1, 0xa4, 0xe3, 0x6a, 0x40, 0x9b, 0x0f, 0x08, + 0x4a, 0x88, 0xfa, 0x18, 0x34, 0x3c, 0x77, 0xe4, 0xb8, 0x44, 0xc4, 0x8e, 0x44, 0x2a, 0xd1, 0xc6, + 0xf5, 0x54, 0x1b, 0x8b, 0xef, 0xab, 0xb6, 0x43, 0x8b, 0xd8, 0x88, 0xbf, 0xf3, 0x1c, 0x74, 0x0d, + 0x9a, 0x36, 0xd9, 0x73, 0x06, 0x24, 0x30, 0x9a, 0x4c, 0xf5, 0x5e, 0x9e, 0xd8, 0xb6, 0x2b, 0x8c, + 0x16, 0x47, 0x3c, 0x66, 0x08, 0x0d, 0x9e, 0x25, 0xab, 0x54, 0x56, 0xaa, 0x14, 0x17, 0xba, 0x32, + 0xa1, 0xd0, 0xd5, 0x82, 0x42, 0xd7, 0x92, 0x85, 0x5e, 0xf8, 0x2a, 0x40, 0xac, 0x6e, 0x68, 0x0e, + 0x9a, 0x0f, 0xdd, 0xc7, 0xae, 0xf7, 0xc4, 0xed, 0x94, 0x68, 0xe2, 0xfe, 0xd6, 0x16, 0x95, 0xd2, + 0x29, 0xd3, 0x04, 0xa5, 0x73, 0xdc, 0x61, 0xa7, 0x82, 0x00, 0x1a, 0x34, 0x41, 0xec, 0x4e, 0x95, + 0xfe, 0xbe, 0xc5, 0xfa, 0xaf, 0x53, 0x43, 0xcf, 0xc2, 0x91, 0xbe, 0x3b, 0xf0, 0x76, 0xc6, 0x56, + 0xe8, 0x6c, 0x8e, 0xc8, 0x23, 0xe2, 0x07, 0x8e, 0xe7, 0x76, 0xea, 0x74, 0xf4, 0x5a, 0x23, 0xe1, + 0x13, 0xcf, 0x7f, 0xbc, 0x46, 0x88, 0x2d, 0xde, 0x9c, 0xe8, 0x34, 0xcc, 0xff, 0x28, 0xf3, 0xdd, + 0x60, 0xf3, 0x26, 0x1c, 0xd0, 0x5e, 0x59, 0x31, 0xe2, 0x37, 0x9f, 0x13, 0x4f, 0x3e, 0x1f, 0x63, + 0xf1, 0x5a, 0x12, 0x4f, 0x65, 0x78, 0xca, 0xbc, 0x05, 0xa0, 0xbc, 0xad, 0x72, 0x02, 0x60, 0x73, + 0x3f, 0x24, 0x01, 0x7f, 0x57, 0x85, 0x42, 0xd4, 0xb0, 0x92, 0xa3, 0xe2, 0x57, 0x34, 0x7c, 0xf3, + 0x32, 0x80, 0xf2, 0xb2, 0x0a, 0xb5, 0x2b, 0x9a, 0x5a, 0x4a, 0x82, 0x25, 0xb3, 0xcd, 0xae, 0xa8, + 0x41, 0xf4, 0x86, 0x4a, 0x54, 0x02, 0x1e, 0xbd, 0x53, 0x4b, 0xc0, 0x72, 0xcc, 0x55, 0x80, 0xf8, + 0x19, 0x11, 0xf3, 0x8a, 0x74, 0xdd, 0xaf, 0x43, 0xcd, 0xb6, 0x42, 0x4b, 0x78, 0xcd, 0xe7, 0x12, + 0x23, 0x57, 0xcc, 0x82, 0x19, 0x99, 0xf9, 0x7b, 0x65, 0x38, 0xa0, 0x3e, 0x99, 0x62, 0xbe, 0x0b, + 0x35, 0xf6, 0xe6, 0xca, 0x0d, 0x38, 0xa0, 0xbe, 0x99, 0x92, 0x7a, 0x1b, 0x9b, 0xe3, 0xa9, 0xac, + 0x58, 0x63, 0x30, 0xfb, 0xb2, 0x48, 0x1f, 0x1a, 0xea, 0x0d, 0x68, 0x8a, 0x27, 0x58, 0xcc, 0xd3, + 0xd0, 0x8e, 0x5f, 0x5c, 0xa1, 0xbe, 0x83, 0xe7, 0x47, 0xbd, 0x2c, 0x92, 0xe6, 0x3f, 0x57, 0xa1, + 0xce, 0xba, 0xd3, 0xfc, 0x7a, 0x45, 0xd5, 0x50, 0xf3, 0xa7, 0xe5, 0xdc, 0xb5, 0xe0, 0x45, 0xed, + 0xa9, 0x82, 0xf9, 0xd4, 0x4b, 0x43, 0xe2, 0x81, 0x15, 0xdd, 0xb1, 0x5e, 0x86, 0xa6, 0xcb, 0x35, + 0x53, 0xbc, 0x14, 0x70, 0x3c, 0x93, 0x4b, 0x68, 0x2f, 0x8e, 0x88, 0xd1, 0x25, 0xa8, 0x13, 0xdf, + 0xf7, 0x7c, 0x66, 0x52, 0xf3, 0xa9, 0x37, 0x7b, 0xe2, 0xc7, 0x5c, 0x56, 0x29, 0x15, 0xe6, 0xc4, + 0xe8, 0x12, 0x3c, 0x13, 0x70, 0x2b, 0xe2, 0x73, 0xca, 0x40, 0xdc, 0xab, 0x16, 0xde, 0x26, 0xfb, + 0xe3, 0xc2, 0xa7, 0xa3, 0x01, 0x56, 0x31, 0xbc, 0x92, 0x6a, 0x91, 0x65, 0xd4, 0x86, 0x3a, 0x13, + 0xd4, 0xa9, 0xa8, 0x66, 0x5b, 0xcd, 0x31, 0xbc, 0xda, 0xc2, 0x45, 0x68, 0x8a, 0x7c, 0x4a, 0xbf, + 0xc8, 0xcb, 0xde, 0x29, 0xa1, 0x03, 0xd0, 0xda, 0x20, 0xa3, 0xad, 0x9e, 0x17, 0x84, 0x9d, 0x32, + 0x3a, 0x08, 0x6d, 0x66, 0x0b, 0xf7, 0xdd, 0xd1, 0x7e, 0xa7, 0xb2, 0xf0, 0x1e, 0xb4, 0x65, 0x8d, + 0x50, 0x0b, 0x6a, 0x6b, 0xbb, 0xa3, 0x51, 0xa7, 0xc4, 0xa6, 0xa6, 0xa1, 0xe7, 0x47, 0x81, 0xe9, + 0xd5, 0xa7, 0x74, 0x9c, 0xe9, 0x94, 0xf3, 0xbc, 0x41, 0x05, 0x75, 0xe0, 0x80, 0x10, 0xce, 0xcb, + 0x5c, 0x35, 0xff, 0xb1, 0x0c, 0x6d, 0xf9, 0x4a, 0x0d, 0x9d, 0x17, 0x46, 0x7d, 0x9c, 0xef, 0x07, + 0xae, 0x24, 0x7a, 0x3b, 0xff, 0xd1, 0x9b, 0x44, 0x8f, 0x9f, 0x81, 0x79, 0xe1, 0x72, 0xa3, 0xc6, + 0xe7, 0x5e, 0x33, 0x91, 0xbb, 0x70, 0x5b, 0xb6, 0x7a, 0x87, 0x99, 0xd8, 0xb2, 0xe7, 0xba, 0x64, + 0x10, 0xb2, 0xb6, 0x3f, 0x04, 0x73, 0x6b, 0x5e, 0xb8, 0xee, 0x05, 0x01, 0xad, 0x19, 0x6f, 0xa9, + 0xf8, 0x7b, 0x05, 0xcd, 0x03, 0x44, 0x67, 0xcd, 0xa8, 0x93, 0x34, 0x7f, 0xb7, 0x0c, 0x0d, 0xfe, + 0x76, 0x8e, 0xf9, 0x9b, 0x65, 0x68, 0x88, 0xf7, 0x72, 0x5e, 0x85, 0x8e, 0xef, 0x51, 0xe0, 0x68, + 0x41, 0xd1, 0x5f, 0x11, 0xb5, 0x4c, 0xe5, 0xd3, 0x35, 0xae, 0xa7, 0x68, 0x85, 0x98, 0x02, 0x68, + 0x79, 0xe8, 0x2a, 0x00, 0x7f, 0x8f, 0xe7, 0xc1, 0xbe, 0x7c, 0xf8, 0x22, 0x79, 0xc4, 0x4c, 0xbc, + 0xe0, 0xc3, 0x36, 0x63, 0x14, 0xea, 0x85, 0xaf, 0xc0, 0x41, 0x4c, 0x82, 0xb1, 0xe7, 0x06, 0xe4, + 0xe7, 0xf5, 0x3f, 0x02, 0x72, 0x5f, 0xfb, 0x5f, 0xf8, 0x61, 0x1d, 0xea, 0x6c, 0x76, 0x69, 0xfe, + 0x55, 0x5d, 0xce, 0x83, 0x53, 0xf6, 0x7d, 0x41, 0x3d, 0xe8, 0xa3, 0x1a, 0xaa, 0x36, 0x31, 0xd5, + 0x0f, 0xf8, 0x7c, 0x0a, 0x5a, 0x63, 0xdf, 0x1b, 0xfa, 0x74, 0x3e, 0x5b, 0x4b, 0x3c, 0x8e, 0xa4, + 0xb3, 0xad, 0x0b, 0x32, 0x2c, 0x19, 0x54, 0xe5, 0xab, 0xeb, 0xca, 0x77, 0x13, 0xda, 0xb6, 0xef, + 0x8d, 0xd9, 0x15, 0x75, 0xb1, 0xb9, 0x76, 0x32, 0x07, 0x77, 0x25, 0xa2, 0xeb, 0x95, 0x70, 0xcc, + 0x44, 0xd5, 0x97, 0xb7, 0xbe, 0xd8, 0xd7, 0x7e, 0x21, 0x87, 0x9d, 0xf7, 0x57, 0xaf, 0x84, 0x05, + 0x39, 0x65, 0x24, 0x4f, 0x19, 0x63, 0x6b, 0x22, 0xe3, 0xea, 0xd3, 0x88, 0x91, 0x93, 0xa3, 0x6b, + 0xd0, 0x0a, 0xac, 0x3d, 0xc2, 0x5e, 0x04, 0x6e, 0x4f, 0x6c, 0x8a, 0x0d, 0x41, 0xd6, 0x2b, 0x61, + 0xc9, 0x42, 0xab, 0xbc, 0xe3, 0x0c, 0xf9, 0x4a, 0x52, 0x3c, 0x4b, 0x9c, 0x57, 0xe5, 0x7b, 0x11, + 0x1d, 0x7b, 0x43, 0x3a, 0x4a, 0xd0, 0x95, 0x0f, 0x77, 0x99, 0x73, 0x7c, 0xdb, 0x98, 0x25, 0xcc, + 0x39, 0x68, 0xcb, 0x26, 0x32, 0x5b, 0xd2, 0x4c, 0x5a, 0xd0, 0xe0, 0x35, 0x30, 0x01, 0x5a, 0x51, + 0x81, 0x28, 0xb1, 0x04, 0x37, 0xd7, 0xa0, 0x15, 0x75, 0x5a, 0xce, 0xb3, 0x14, 0x08, 0x6a, 0xb6, + 0x27, 0xa6, 0x4c, 0x55, 0xcc, 0x7e, 0xd3, 0x4e, 0x55, 0xdf, 0x54, 0x6a, 0xcb, 0xd7, 0x8c, 0x16, + 0x16, 0xa3, 0xf3, 0x4a, 0xd4, 0xb5, 0xf1, 0xc5, 0xf8, 0x1c, 0x34, 0xf1, 0x2e, 0x9b, 0xcd, 0x76, + 0xca, 0x34, 0x9b, 0x2e, 0x91, 0x3a, 0x15, 0xea, 0x25, 0x97, 0x2d, 0x77, 0x40, 0x46, 0x6c, 0x06, + 0x24, 0x7d, 0x6f, 0x6d, 0xa9, 0x2d, 0xc1, 0x97, 0x8e, 0xff, 0xf5, 0x07, 0x27, 0xca, 0x3f, 0xf8, + 0xe0, 0x44, 0xf9, 0xc7, 0x1f, 0x9c, 0x28, 0xff, 0xc6, 0x4f, 0x4e, 0x94, 0x7e, 0xf0, 0x93, 0x13, + 0xa5, 0x7f, 0xf8, 0xc9, 0x89, 0xd2, 0xfb, 0x95, 0xf1, 0xe6, 0x66, 0x83, 0x9d, 0x39, 0xb9, 0xf8, + 0x9f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xb5, 0x54, 0x80, 0x8a, 0xfa, 0x63, 0x00, 0x00, } func (m *Event) Marshal() (dAtA []byte, err error) { @@ -14434,6 +14503,29 @@ func (m *EventMessageValueOfAccountLinkChallenge) MarshalToSizedBuffer(dAtA []by } return len(dAtA) - i, nil } +func (m *EventMessageValueOfAccountLinkChallengeHide) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *EventMessageValueOfAccountLinkChallengeHide) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.AccountLinkChallengeHide != nil { + { + size, err := m.AccountLinkChallengeHide.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintEvents(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xc + i-- + dAtA[i] = 0xea + } + return len(dAtA) - i, nil +} func (m *EventChat) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -14862,6 +14954,11 @@ func (m *EventAccountLinkChallenge) MarshalToSizedBuffer(dAtA []byte) (int, erro _ = i var l int _ = l + if m.Scope != 0 { + i = encodeVarintEvents(dAtA, i, uint64(m.Scope)) + i-- + dAtA[i] = 0x18 + } if m.ClientInfo != nil { { size, err := m.ClientInfo.MarshalToSizedBuffer(dAtA[:i]) @@ -14931,6 +15028,36 @@ func (m *EventAccountLinkChallengeClientInfo) MarshalToSizedBuffer(dAtA []byte) return len(dAtA) - i, nil } +func (m *EventAccountLinkChallengeHide) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *EventAccountLinkChallengeHide) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *EventAccountLinkChallengeHide) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Challenge) > 0 { + i -= len(m.Challenge) + copy(dAtA[i:], m.Challenge) + i = encodeVarintEvents(dAtA, i, uint64(len(m.Challenge))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func (m *EventObject) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -15801,20 +15928,20 @@ func (m *EventBlockMarksInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { var l int _ = l if len(m.MarksInRange) > 0 { - dAtA91 := make([]byte, len(m.MarksInRange)*10) - var j90 int + dAtA92 := make([]byte, len(m.MarksInRange)*10) + var j91 int for _, num := range m.MarksInRange { for num >= 1<<7 { - dAtA91[j90] = uint8(uint64(num)&0x7f | 0x80) + dAtA92[j91] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 - j90++ + j91++ } - dAtA91[j90] = uint8(num) - j90++ + dAtA92[j91] = uint8(num) + j91++ } - i -= j90 - copy(dAtA[i:], dAtA91[:j90]) - i = encodeVarintEvents(dAtA, i, uint64(j90)) + i -= j91 + copy(dAtA[i:], dAtA92[:j91]) + i = encodeVarintEvents(dAtA, i, uint64(j91)) i-- dAtA[i] = 0xa } @@ -23622,6 +23749,18 @@ func (m *EventMessageValueOfAccountLinkChallenge) Size() (n int) { } return n } +func (m *EventMessageValueOfAccountLinkChallengeHide) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.AccountLinkChallengeHide != nil { + l = m.AccountLinkChallengeHide.Size() + n += 2 + l + sovEvents(uint64(l)) + } + return n +} func (m *EventChat) Size() (n int) { if m == nil { return 0 @@ -23798,6 +23937,9 @@ func (m *EventAccountLinkChallenge) Size() (n int) { l = m.ClientInfo.Size() n += 1 + l + sovEvents(uint64(l)) } + if m.Scope != 0 { + n += 1 + sovEvents(uint64(m.Scope)) + } return n } @@ -23821,6 +23963,19 @@ func (m *EventAccountLinkChallengeClientInfo) Size() (n int) { return n } +func (m *EventAccountLinkChallengeHide) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Challenge) + if l > 0 { + n += 1 + l + sovEvents(uint64(l)) + } + return n +} + func (m *EventObject) Size() (n int) { if m == nil { return 0 @@ -29972,6 +30127,41 @@ func (m *EventMessage) Unmarshal(dAtA []byte) error { } m.Value = &EventMessageValueOfAccountLinkChallenge{v} iNdEx = postIndex + case 205: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AccountLinkChallengeHide", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &EventAccountLinkChallengeHide{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Value = &EventMessageValueOfAccountLinkChallengeHide{v} + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipEvents(dAtA[iNdEx:]) @@ -31175,6 +31365,25 @@ func (m *EventAccountLinkChallenge) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Scope", wireType) + } + m.Scope = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Scope |= model.AccountAuthLocalApiScope(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipEvents(dAtA[iNdEx:]) @@ -31330,6 +31539,88 @@ func (m *EventAccountLinkChallengeClientInfo) Unmarshal(dAtA []byte) error { } return nil } +func (m *EventAccountLinkChallengeHide) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: LinkChallengeHide: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LinkChallengeHide: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Challenge", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Challenge = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipEvents(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthEvents + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *EventObject) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/pb/protos/commands.proto b/pb/protos/commands.proto index 6825d5430..5534cc794 100644 --- a/pb/protos/commands.proto +++ b/pb/protos/commands.proto @@ -1073,6 +1073,7 @@ message Rpc { message Request { option (no_auth) = true; string appName = 1; // just for info, not secure to rely on + model.Account.Auth.LocalApiScope scope = 2; } message Response { diff --git a/pb/protos/events.proto b/pb/protos/events.proto index d4397dc89..821eb694c 100644 --- a/pb/protos/events.proto +++ b/pb/protos/events.proto @@ -22,6 +22,7 @@ message Event { Account.Config.Update accountConfigUpdate = 202; Account.Update accountUpdate = 203; Account.LinkChallenge accountLinkChallenge = 204; + Account.LinkChallengeHide accountLinkChallengeHide = 205; Object.Details.Set objectDetailsSet = 16; Object.Details.Amend objectDetailsAmend = 50; @@ -172,6 +173,11 @@ message Event { } string challenge = 1; ClientInfo clientInfo = 2; + model.Account.Auth.LocalApiScope scope = 3; + } + + message LinkChallengeHide { + string challenge = 1; // verify code before hiding to protect from MITM attacks } } diff --git a/pkg/lib/pb/model/models.pb.go b/pkg/lib/pb/model/models.pb.go index 6f67f943e..fdab917ab 100644 --- a/pkg/lib/pb/model/models.pb.go +++ b/pkg/lib/pb/model/models.pb.go @@ -1610,6 +1610,34 @@ func (AccountStatusType) EnumDescriptor() ([]byte, []int) { return fileDescriptor_98a910b73321e591, []int{5, 0} } +type AccountAuthLocalApiScope int32 + +const ( + AccountAuth_Limited AccountAuthLocalApiScope = 0 + AccountAuth_JsonAPI AccountAuthLocalApiScope = 1 + AccountAuth_Full AccountAuthLocalApiScope = 2 +) + +var AccountAuthLocalApiScope_name = map[int32]string{ + 0: "Limited", + 1: "JsonAPI", + 2: "Full", +} + +var AccountAuthLocalApiScope_value = map[string]int32{ + "Limited": 0, + "JsonAPI": 1, + "Full": 2, +} + +func (x AccountAuthLocalApiScope) String() string { + return proto.EnumName(AccountAuthLocalApiScope_name, int32(x)) +} + +func (AccountAuthLocalApiScope) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_98a910b73321e591, []int{5, 3, 0} +} + type LinkPreviewType int32 const ( @@ -5640,6 +5668,42 @@ func (m *AccountInfo) GetNetworkId() string { return "" } +type AccountAuth struct { +} + +func (m *AccountAuth) Reset() { *m = AccountAuth{} } +func (m *AccountAuth) String() string { return proto.CompactTextString(m) } +func (*AccountAuth) ProtoMessage() {} +func (*AccountAuth) Descriptor() ([]byte, []int) { + return fileDescriptor_98a910b73321e591, []int{5, 3} +} +func (m *AccountAuth) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *AccountAuth) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_AccountAuth.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *AccountAuth) XXX_Merge(src proto.Message) { + xxx_messageInfo_AccountAuth.Merge(m, src) +} +func (m *AccountAuth) XXX_Size() int { + return m.Size() +} +func (m *AccountAuth) XXX_DiscardUnknown() { + xxx_messageInfo_AccountAuth.DiscardUnknown(m) +} + +var xxx_messageInfo_AccountAuth proto.InternalMessageInfo + type LinkPreview struct { Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` @@ -9399,6 +9463,7 @@ func init() { proto.RegisterEnum("anytype.model.BlockContentLatexProcessor", BlockContentLatexProcessor_name, BlockContentLatexProcessor_value) proto.RegisterEnum("anytype.model.BlockContentWidgetLayout", BlockContentWidgetLayout_name, BlockContentWidgetLayout_value) proto.RegisterEnum("anytype.model.AccountStatusType", AccountStatusType_name, AccountStatusType_value) + proto.RegisterEnum("anytype.model.AccountAuthLocalApiScope", AccountAuthLocalApiScope_name, AccountAuthLocalApiScope_value) proto.RegisterEnum("anytype.model.LinkPreviewType", LinkPreviewType_name, LinkPreviewType_value) proto.RegisterEnum("anytype.model.RestrictionsObjectRestriction", RestrictionsObjectRestriction_name, RestrictionsObjectRestriction_value) proto.RegisterEnum("anytype.model.RestrictionsDataviewRestriction", RestrictionsDataviewRestriction_name, RestrictionsDataviewRestriction_value) @@ -9462,6 +9527,7 @@ func init() { proto.RegisterType((*AccountConfig)(nil), "anytype.model.Account.Config") proto.RegisterType((*AccountStatus)(nil), "anytype.model.Account.Status") proto.RegisterType((*AccountInfo)(nil), "anytype.model.Account.Info") + proto.RegisterType((*AccountAuth)(nil), "anytype.model.Account.Auth") proto.RegisterType((*LinkPreview)(nil), "anytype.model.LinkPreview") proto.RegisterType((*Restrictions)(nil), "anytype.model.Restrictions") proto.RegisterType((*RestrictionsDataviewRestrictions)(nil), "anytype.model.Restrictions.DataviewRestrictions") @@ -9522,567 +9588,569 @@ func init() { } var fileDescriptor_98a910b73321e591 = []byte{ - // 8951 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x7d, 0x5b, 0x6c, 0x24, 0xc9, - 0x91, 0x18, 0xfb, 0xdd, 0x1d, 0xcd, 0x26, 0x93, 0x39, 0xaf, 0x56, 0x6b, 0x6e, 0x3c, 0x6a, 0xad, - 0x76, 0x47, 0xa3, 0x15, 0x67, 0x77, 0x76, 0x57, 0xbb, 0xda, 0xd3, 0xae, 0xd4, 0x6c, 0x36, 0x87, - 0xbd, 0x43, 0xb2, 0xa9, 0xea, 0x9e, 0x19, 0xed, 0xe2, 0xce, 0x74, 0xb1, 0x2b, 0xd9, 0x5d, 0x62, - 0x75, 0x55, 0xab, 0x2a, 0x9b, 0x43, 0x2e, 0x6c, 0xe3, 0xfc, 0xba, 0xf3, 0xfd, 0xe9, 0x0c, 0x9f, - 0xed, 0x83, 0x61, 0x9c, 0xf4, 0x61, 0xc0, 0xf0, 0x1d, 0x60, 0xd8, 0x80, 0x60, 0x9f, 0xed, 0x03, - 0xec, 0x03, 0x0c, 0x1b, 0xf0, 0x8f, 0x6c, 0xff, 0xf8, 0xcf, 0xc6, 0x0a, 0xf0, 0x8f, 0x61, 0x1f, - 0xce, 0x5f, 0x82, 0xe1, 0x0f, 0x23, 0x22, 0xb3, 0x1e, 0xfd, 0x20, 0xa7, 0x67, 0xef, 0xce, 0xf0, - 0x17, 0x2b, 0xa3, 0x22, 0xa2, 0x22, 0x33, 0x23, 0x23, 0x23, 0x22, 0x23, 0x9b, 0xf0, 0xca, 0xf8, - 0x74, 0xf0, 0xc0, 0xb1, 0x8f, 0x1f, 0x8c, 0x8f, 0x1f, 0x8c, 0x3c, 0x4b, 0x38, 0x0f, 0xc6, 0xbe, - 0x27, 0xbd, 0x40, 0x35, 0x82, 0x4d, 0x6a, 0xf1, 0x8a, 0xe9, 0x5e, 0xc8, 0x8b, 0xb1, 0xd8, 0x24, - 0x68, 0xed, 0xf6, 0xc0, 0xf3, 0x06, 0x8e, 0x50, 0xa8, 0xc7, 0x93, 0x93, 0x07, 0x81, 0xf4, 0x27, - 0x7d, 0xa9, 0x90, 0xeb, 0x3f, 0xcd, 0xc2, 0xcd, 0xee, 0xc8, 0xf4, 0xe5, 0x96, 0xe3, 0xf5, 0x4f, - 0xbb, 0xae, 0x39, 0x0e, 0x86, 0x9e, 0xdc, 0x32, 0x03, 0xc1, 0x5f, 0x87, 0xfc, 0x31, 0x02, 0x83, - 0x6a, 0xea, 0x6e, 0xe6, 0x5e, 0xf9, 0xe1, 0xf5, 0xcd, 0x29, 0xc6, 0x9b, 0x44, 0x61, 0x68, 0x1c, - 0xfe, 0x26, 0x14, 0x2c, 0x21, 0x4d, 0xdb, 0x09, 0xaa, 0xe9, 0xbb, 0xa9, 0x7b, 0xe5, 0x87, 0xb7, - 0x36, 0xd5, 0x87, 0x37, 0xc3, 0x0f, 0x6f, 0x76, 0xe9, 0xc3, 0x46, 0x88, 0xc7, 0xdf, 0x85, 0xe2, - 0x89, 0xed, 0x88, 0xc7, 0xe2, 0x22, 0xa8, 0x66, 0xae, 0xa4, 0xd9, 0x4a, 0x57, 0x53, 0x46, 0x84, - 0xcc, 0x9b, 0xb0, 0x26, 0xce, 0xa5, 0x6f, 0x1a, 0xc2, 0x31, 0xa5, 0xed, 0xb9, 0x41, 0x35, 0x4b, - 0x12, 0xde, 0x9a, 0x91, 0x30, 0x7c, 0x4f, 0xe4, 0x33, 0x24, 0xfc, 0x2e, 0x94, 0xbd, 0xe3, 0xef, - 0x8b, 0xbe, 0xec, 0x5d, 0x8c, 0x45, 0x50, 0xcd, 0xdd, 0xcd, 0xdc, 0x2b, 0x19, 0x49, 0x10, 0xff, - 0x26, 0x94, 0xfb, 0x9e, 0xe3, 0x88, 0xbe, 0xfa, 0x46, 0xfe, 0xea, 0x6e, 0x25, 0x71, 0xf9, 0xdb, - 0x70, 0xc3, 0x17, 0x23, 0xef, 0x4c, 0x58, 0xcd, 0x08, 0x4a, 0xfd, 0x2c, 0xd2, 0x67, 0x16, 0xbf, - 0xe4, 0x0d, 0xa8, 0xf8, 0x5a, 0xbe, 0x3d, 0xdb, 0x3d, 0x0d, 0xaa, 0x05, 0xea, 0xd6, 0x17, 0x2f, - 0xe9, 0x16, 0xe2, 0x18, 0xd3, 0x14, 0x9c, 0x41, 0xe6, 0x54, 0x5c, 0x54, 0x4b, 0x77, 0x53, 0xf7, - 0x4a, 0x06, 0x3e, 0xf2, 0xf7, 0xa1, 0xea, 0xf9, 0xf6, 0xc0, 0x76, 0x4d, 0xa7, 0xe9, 0x0b, 0x53, - 0x0a, 0xab, 0x67, 0x8f, 0x44, 0x20, 0xcd, 0xd1, 0xb8, 0x0a, 0x77, 0x53, 0xf7, 0x32, 0xc6, 0xa5, - 0xef, 0xf9, 0x5b, 0x6a, 0x86, 0xda, 0xee, 0x89, 0x57, 0x2d, 0xeb, 0xee, 0x4f, 0xcb, 0xb2, 0xa3, - 0x5f, 0x1b, 0x11, 0x62, 0xfd, 0xe7, 0x69, 0xc8, 0x77, 0x85, 0xe9, 0xf7, 0x87, 0xb5, 0x5f, 0x4b, - 0x41, 0xde, 0x10, 0xc1, 0xc4, 0x91, 0xbc, 0x06, 0x45, 0x35, 0xb6, 0x6d, 0xab, 0x9a, 0x22, 0xe9, - 0xa2, 0xf6, 0xe7, 0xd1, 0x9d, 0x4d, 0xc8, 0x8e, 0x84, 0x34, 0xab, 0x19, 0x1a, 0xa1, 0xda, 0x8c, - 0x54, 0xea, 0xf3, 0x9b, 0xfb, 0x42, 0x9a, 0x06, 0xe1, 0xd5, 0x7e, 0x96, 0x82, 0x2c, 0x36, 0xf9, - 0x6d, 0x28, 0x0d, 0xed, 0xc1, 0xd0, 0xb1, 0x07, 0x43, 0xa9, 0x05, 0x89, 0x01, 0xfc, 0x43, 0x58, - 0x8f, 0x1a, 0x86, 0xe9, 0x0e, 0x04, 0x4a, 0xb4, 0x48, 0xf9, 0xe9, 0xa5, 0x31, 0x8b, 0xcc, 0xab, - 0x50, 0xa0, 0xf5, 0xd0, 0xb6, 0x48, 0xa3, 0x4b, 0x46, 0xd8, 0x44, 0x75, 0x0b, 0x67, 0xea, 0xb1, - 0xb8, 0xa8, 0x66, 0xe9, 0x6d, 0x12, 0xc4, 0x1b, 0xb0, 0x1e, 0x36, 0xb7, 0xf5, 0x68, 0xe4, 0xae, - 0x1e, 0x8d, 0x59, 0xfc, 0xfa, 0x67, 0x7b, 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, 0x5a, 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, 0x97, 0xaf, 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, 0x95, 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, 0x2c, 0x6c, - 0x9c, 0x08, 0x53, 0x4e, 0x7c, 0x61, 0xc5, 0x1b, 0xdd, 0x2d, 0xe2, 0xb6, 0x79, 0xf5, 0xdc, 0xcf, - 0x52, 0xed, 0xae, 0x18, 0xf3, 0xac, 0xf8, 0xfb, 0x90, 0x73, 0x4c, 0x29, 0xce, 0xab, 0x55, 0xe2, - 0x59, 0x7f, 0x81, 0x52, 0x48, 0x71, 0xbe, 0xbb, 0x62, 0x28, 0x12, 0xfe, 0x3d, 0x58, 0x97, 0xe6, - 0xb1, 0x23, 0x3a, 0x27, 0x1a, 0x21, 0xa8, 0x7e, 0x81, 0xb8, 0xbc, 0x7e, 0xb5, 0x3a, 0x4f, 0xd3, - 0xec, 0xae, 0x18, 0xb3, 0x6c, 0x50, 0x2a, 0x02, 0x55, 0x6b, 0x4b, 0x48, 0x45, 0xfc, 0x50, 0x2a, - 0x22, 0xe1, 0x7b, 0x50, 0xa6, 0x87, 0xa6, 0xe7, 0x4c, 0x46, 0x6e, 0xf5, 0x8b, 0xc4, 0xe1, 0xde, - 0x8b, 0x39, 0x28, 0xfc, 0xdd, 0x15, 0x23, 0x49, 0x8e, 0x93, 0x48, 0x4d, 0xc3, 0x7b, 0x5e, 0xbd, - 0xbd, 0xc4, 0x24, 0xf6, 0x34, 0x32, 0x4e, 0x62, 0x48, 0x88, 0x4b, 0xef, 0xb9, 0x6d, 0x0d, 0x84, - 0xac, 0xfe, 0xc2, 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, 0xff, 0xe6, 0x03, 0x28, 0x68, 0xa1, 0x6a, 0x7f, 0x2f, - 0x05, 0x79, 0x65, 0x50, 0xf8, 0xb7, 0x21, 0x17, 0xc8, 0x0b, 0x47, 0x90, 0x0c, 0x6b, 0x0f, 0xbf, - 0xba, 0x84, 0x11, 0xda, 0xec, 0x22, 0x81, 0xa1, 0xe8, 0xea, 0x06, 0xe4, 0xa8, 0xcd, 0x0b, 0x90, - 0x31, 0xbc, 0xe7, 0x6c, 0x85, 0x03, 0xe4, 0xd5, 0x64, 0xb1, 0x14, 0x02, 0xb7, 0xed, 0x33, 0x96, - 0x46, 0xe0, 0xae, 0x30, 0x2d, 0xe1, 0xb3, 0x0c, 0xaf, 0x40, 0x29, 0x9c, 0x96, 0x80, 0x65, 0x39, - 0x83, 0xd5, 0xc4, 0x84, 0x07, 0x2c, 0x57, 0xfb, 0x5f, 0x59, 0xc8, 0xe2, 0xfa, 0xe7, 0xaf, 0x40, - 0x45, 0x9a, 0xfe, 0x40, 0x28, 0x47, 0x38, 0x72, 0x52, 0xa6, 0x81, 0xfc, 0x83, 0xb0, 0x0f, 0x69, - 0xea, 0xc3, 0x6b, 0x2f, 0xb4, 0x2b, 0x53, 0x3d, 0x48, 0xec, 0xc2, 0x99, 0xe5, 0x76, 0xe1, 0x1d, - 0x28, 0xa2, 0x39, 0xeb, 0xda, 0x9f, 0x0a, 0x1a, 0xfa, 0xb5, 0x87, 0xf7, 0x5f, 0xfc, 0xc9, 0xb6, - 0xa6, 0x30, 0x22, 0x5a, 0xde, 0x86, 0x52, 0xdf, 0xf4, 0x2d, 0x12, 0x86, 0x66, 0x6b, 0xed, 0xe1, - 0xd7, 0x5e, 0xcc, 0xa8, 0x19, 0x92, 0x18, 0x31, 0x35, 0xef, 0x40, 0xd9, 0x12, 0x41, 0xdf, 0xb7, - 0xc7, 0x64, 0xde, 0xd4, 0x5e, 0xfc, 0xf5, 0x17, 0x33, 0xdb, 0x8e, 0x89, 0x8c, 0x24, 0x07, 0xf4, - 0xc8, 0xfc, 0xc8, 0xbe, 0x15, 0xc8, 0x41, 0x88, 0x01, 0xf5, 0x77, 0xa1, 0x18, 0xf6, 0x87, 0xaf, - 0x42, 0x11, 0xff, 0x1e, 0x78, 0xae, 0x60, 0x2b, 0x38, 0xb7, 0xd8, 0xea, 0x8e, 0x4c, 0xc7, 0x61, - 0x29, 0xbe, 0x06, 0x80, 0xcd, 0x7d, 0x61, 0xd9, 0x93, 0x11, 0x4b, 0xd7, 0x7f, 0x31, 0xd4, 0x96, - 0x22, 0x64, 0x0f, 0xcd, 0x01, 0x52, 0xac, 0x42, 0x31, 0x34, 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, 0xc8, 0x8b, 0x2c, 0xf4, 0x47, 0x4b, 0x90, 0x6b, 0x58, 0x96, 0xb0, - 0x58, 0x0a, 0x09, 0x74, 0x07, 0x59, 0xba, 0xfe, 0x35, 0x28, 0x45, 0xa3, 0x85, 0xe8, 0xb8, 0x71, - 0xb3, 0x15, 0x7c, 0x42, 0x30, 0x4b, 0xa1, 0x56, 0xb6, 0x5d, 0xc7, 0x76, 0x05, 0x4b, 0xd7, 0xfe, - 0x1c, 0xa9, 0x2a, 0xff, 0xd6, 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, 0xf7, 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, 0x99, - 0x99, 0x0e, 0xa3, 0x9a, 0x1c, 0xfa, 0x02, 0xa7, 0x67, 0x13, 0x23, 0x30, 0x83, 0x90, 0xf9, 0xab, - 0xb0, 0xa6, 0x16, 0x61, 0x27, 0x8c, 0x1f, 0x0a, 0xc4, 0x79, 0x06, 0xca, 0x1b, 0x38, 0x9c, 0xa6, - 0x14, 0xd5, 0xe2, 0x12, 0xfa, 0x1d, 0x0e, 0xce, 0x66, 0x17, 0x49, 0x0c, 0x45, 0x59, 0x7f, 0x07, - 0xc7, 0xd4, 0x94, 0x02, 0xa7, 0xb9, 0x35, 0x1a, 0xcb, 0x0b, 0xa5, 0x34, 0x3b, 0x42, 0xf6, 0x87, - 0xb6, 0x3b, 0x60, 0x29, 0x35, 0xc4, 0x38, 0x89, 0x84, 0xe2, 0xfb, 0x9e, 0xcf, 0x32, 0xb5, 0x1a, - 0x64, 0x51, 0x47, 0xd1, 0x48, 0xba, 0xe6, 0x48, 0xe8, 0x91, 0xa6, 0xe7, 0xda, 0x35, 0xd8, 0x98, - 0xdb, 0x8f, 0x6b, 0xbf, 0x97, 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, 0xbe, 0x6f, - 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, 0xdd, 0x34, 0x64, 0xb1, 0xcd, 0xef, 0x43, 0xce, 0xc7, 0x38, 0x8c, 0x86, 0xf3, 0xb2, 0x98, - 0x4d, 0xa1, 0xf0, 0x6f, 0x6b, 0x55, 0x4c, 0x2f, 0xa1, 0x2c, 0xd1, 0x17, 0x93, 0x6a, 0x79, 0x1d, - 0x72, 0x63, 0xd3, 0x37, 0x47, 0x7a, 0x9d, 0xa8, 0x46, 0xfd, 0x47, 0x29, 0xc8, 0x22, 0x12, 0xdf, - 0x80, 0x4a, 0x57, 0xfa, 0xf6, 0xa9, 0x90, 0x43, 0xdf, 0x9b, 0x0c, 0x86, 0x4a, 0x93, 0x1e, 0x8b, - 0x0b, 0x65, 0x6f, 0x94, 0x41, 0x90, 0xa6, 0x63, 0xf7, 0x59, 0x1a, 0xb5, 0x6a, 0xcb, 0x73, 0x2c, - 0x96, 0xe1, 0xeb, 0x50, 0x7e, 0xe2, 0x5a, 0xc2, 0x0f, 0xfa, 0x9e, 0x2f, 0x2c, 0x96, 0xd5, 0xab, - 0xfb, 0x94, 0xe5, 0x68, 0x2f, 0x13, 0xe7, 0x92, 0x62, 0x21, 0x96, 0xe7, 0xd7, 0x60, 0x7d, 0x6b, - 0x3a, 0x40, 0x62, 0x05, 0xb4, 0x49, 0xfb, 0xc2, 0x45, 0x25, 0x63, 0x45, 0xa5, 0xc4, 0xde, 0xf7, - 0x6d, 0x56, 0xc2, 0x8f, 0xa9, 0x75, 0xc2, 0xa0, 0xfe, 0x2f, 0x53, 0xa1, 0xe5, 0xa8, 0x40, 0xe9, - 0xd0, 0xf4, 0xcd, 0x81, 0x6f, 0x8e, 0x51, 0xbe, 0x32, 0x14, 0xd4, 0xc6, 0xf9, 0xa6, 0xb2, 0x6e, - 0xaa, 0xf1, 0x50, 0xd9, 0x46, 0xd5, 0x78, 0x8b, 0x65, 0xe2, 0xc6, 0xdb, 0x2c, 0x8b, 0xdf, 0xf8, - 0xee, 0xc4, 0x93, 0x82, 0xe5, 0xc8, 0xd6, 0x79, 0x96, 0x60, 0x79, 0x04, 0xf6, 0xd0, 0xa2, 0xb0, - 0x02, 0xf6, 0xb9, 0x89, 0xfa, 0x73, 0xec, 0x9d, 0xb3, 0x22, 0x8a, 0x81, 0xc3, 0x28, 0x2c, 0x56, - 0xc2, 0x37, 0x07, 0x93, 0xd1, 0xb1, 0xc0, 0x6e, 0x02, 0xbe, 0xe9, 0x79, 0x83, 0x81, 0x23, 0x58, - 0x19, 0xc7, 0x20, 0x61, 0x7c, 0xd9, 0x2a, 0x59, 0x5a, 0xd3, 0x71, 0xbc, 0x89, 0x64, 0x95, 0xda, - 0xcf, 0x33, 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, - 0x58, 0x60, 0x66, 0x2b, 0x50, 0x7a, 0x32, 0x76, 0x3c, 0xd3, 0xba, 0xc2, 0xce, 0xae, 0x02, 0xc4, - 0x51, 0x75, 0xed, 0xe7, 0xf5, 0x78, 0x3b, 0x47, 0x5f, 0x34, 0xf0, 0x26, 0x7e, 0x5f, 0x90, 0x09, - 0x29, 0x19, 0xba, 0xc5, 0xbf, 0x03, 0x39, 0x7c, 0x1f, 0xa6, 0x71, 0xee, 0x2f, 0x15, 0xcb, 0x6d, - 0x3e, 0xb5, 0xc5, 0x73, 0x43, 0x11, 0xf2, 0x3b, 0x00, 0x66, 0x5f, 0xda, 0x67, 0x02, 0x81, 0x7a, - 0xb1, 0x27, 0x20, 0xfc, 0x9d, 0xa4, 0xfb, 0x72, 0x75, 0x1e, 0x32, 0xe1, 0xd7, 0x70, 0x03, 0xca, - 0xb8, 0x74, 0xc7, 0x1d, 0x1f, 0x57, 0x7b, 0x75, 0x95, 0x08, 0xdf, 0x58, 0x4e, 0xbc, 0x47, 0x11, - 0xa1, 0x91, 0x64, 0xc2, 0x9f, 0xc0, 0xaa, 0xca, 0xa9, 0x69, 0xa6, 0x15, 0x62, 0xfa, 0xe6, 0x72, - 0x4c, 0x3b, 0x31, 0xa5, 0x31, 0xc5, 0x66, 0x3e, 0x2d, 0x99, 0x7b, 0xe9, 0xb4, 0xe4, 0xab, 0xb0, - 0xd6, 0x9b, 0x5e, 0x05, 0x6a, 0xab, 0x98, 0x81, 0xf2, 0x3a, 0xac, 0xda, 0x41, 0x9c, 0x15, 0xa5, - 0x1c, 0x49, 0xd1, 0x98, 0x82, 0xd5, 0xfe, 0x43, 0x1e, 0xb2, 0x34, 0xf2, 0xb3, 0x39, 0xae, 0xe6, - 0x94, 0x49, 0x7f, 0xb0, 0xfc, 0x54, 0xcf, 0xac, 0x78, 0xb2, 0x20, 0x99, 0x84, 0x05, 0xf9, 0x0e, - 0xe4, 0x02, 0xcf, 0x97, 0xe1, 0xf4, 0x2e, 0xa9, 0x44, 0x5d, 0xcf, 0x97, 0x86, 0x22, 0xe4, 0x3b, - 0x50, 0x38, 0xb1, 0x1d, 0x89, 0x93, 0xa2, 0x06, 0xef, 0xf5, 0xe5, 0x78, 0xec, 0x10, 0x91, 0x11, - 0x12, 0xf3, 0xbd, 0xa4, 0xb2, 0xe5, 0x89, 0xd3, 0xe6, 0x72, 0x9c, 0x16, 0xe9, 0xe0, 0x7d, 0x60, - 0x7d, 0xef, 0x4c, 0xf8, 0x46, 0x22, 0x31, 0xa9, 0x36, 0xe9, 0x39, 0x38, 0xaf, 0x41, 0x71, 0x68, - 0x5b, 0x02, 0xfd, 0x1c, 0xb2, 0x31, 0x45, 0x23, 0x6a, 0xf3, 0xc7, 0x50, 0xa4, 0xf8, 0x00, 0xad, - 0x62, 0xe9, 0xa5, 0x07, 0x5f, 0x85, 0x2a, 0x21, 0x03, 0xfc, 0x10, 0x7d, 0x7c, 0xc7, 0x96, 0x94, - 0x9f, 0x2e, 0x1a, 0x51, 0x1b, 0x05, 0x26, 0x7d, 0x4f, 0x0a, 0x5c, 0x56, 0x02, 0xcf, 0xc2, 0xf9, - 0xdb, 0x70, 0x83, 0x60, 0x33, 0x9b, 0x24, 0x2e, 0x35, 0x64, 0xba, 0xf8, 0x25, 0x3a, 0x2c, 0x63, - 0x73, 0x20, 0xf6, 0xec, 0x91, 0x2d, 0xab, 0x95, 0xbb, 0xa9, 0x7b, 0x39, 0x23, 0x06, 0xf0, 0xd7, - 0x61, 0xc3, 0x12, 0x27, 0xe6, 0xc4, 0x91, 0x3d, 0x31, 0x1a, 0x3b, 0xa6, 0x14, 0x6d, 0x8b, 0x74, - 0xb4, 0x64, 0xcc, 0xbf, 0xe0, 0x6f, 0xc0, 0x35, 0x0d, 0xec, 0x44, 0xa7, 0x0a, 0x6d, 0x8b, 0xd2, - 0x77, 0x25, 0x63, 0xd1, 0xab, 0xfa, 0xbe, 0x36, 0xc3, 0xb8, 0x81, 0x62, 0x9c, 0x1a, 0x1a, 0xd0, - 0x40, 0xaa, 0x1d, 0xf9, 0x91, 0xe9, 0x38, 0xc2, 0xbf, 0x50, 0x41, 0xee, 0x63, 0xd3, 0x3d, 0x36, - 0x5d, 0x96, 0xa1, 0x3d, 0xd6, 0x74, 0x84, 0x6b, 0x99, 0xbe, 0xda, 0x91, 0x1f, 0xd1, 0x86, 0x9e, - 0xab, 0xdf, 0x83, 0x2c, 0x0d, 0x69, 0x09, 0x72, 0x2a, 0x4a, 0xa2, 0x88, 0x59, 0x47, 0x48, 0x64, - 0x91, 0xf7, 0x70, 0xf9, 0xb1, 0x74, 0xed, 0xef, 0xe7, 0xa1, 0x18, 0x0e, 0x5e, 0x78, 0x86, 0x90, - 0x8a, 0xcf, 0x10, 0xd0, 0x8d, 0x0b, 0x9e, 0xda, 0x81, 0x7d, 0xac, 0xdd, 0xd2, 0xa2, 0x11, 0x03, - 0xd0, 0x13, 0x7a, 0x6e, 0x5b, 0x72, 0x48, 0x6b, 0x26, 0x67, 0xa8, 0x06, 0xbf, 0x07, 0xeb, 0x16, - 0x8e, 0x83, 0xdb, 0x77, 0x26, 0x96, 0xe8, 0xe1, 0x2e, 0xaa, 0xd2, 0x04, 0xb3, 0x60, 0xfe, 0x31, - 0x80, 0xb4, 0x47, 0x62, 0xc7, 0xf3, 0x47, 0xa6, 0xd4, 0xb1, 0xc1, 0x37, 0x5f, 0x4e, 0xab, 0x37, - 0x7b, 0x11, 0x03, 0x23, 0xc1, 0x0c, 0x59, 0xe3, 0xd7, 0x34, 0xeb, 0xc2, 0xe7, 0x62, 0xbd, 0x1d, - 0x31, 0x30, 0x12, 0xcc, 0x78, 0x0f, 0x0a, 0x27, 0x9e, 0x3f, 0x9a, 0x38, 0xa6, 0xde, 0x73, 0xdf, - 0x7f, 0x49, 0xbe, 0x3b, 0x8a, 0x9a, 0x6c, 0x4f, 0xc8, 0x2a, 0xce, 0x71, 0x97, 0x96, 0xcc, 0x71, - 0xd7, 0x7f, 0x09, 0x20, 0x96, 0x90, 0xdf, 0x04, 0xbe, 0xef, 0xb9, 0x72, 0xd8, 0x38, 0x3e, 0xf6, - 0xb7, 0xc4, 0x89, 0xe7, 0x8b, 0x6d, 0x13, 0xb7, 0xd7, 0x1b, 0xb0, 0x11, 0xc1, 0x1b, 0x27, 0x52, - 0xf8, 0x08, 0x26, 0x15, 0xe8, 0x0e, 0x3d, 0x5f, 0x2a, 0x1f, 0x8f, 0x1e, 0x9f, 0x74, 0x59, 0x06, - 0xb7, 0xf4, 0x76, 0xb7, 0xc3, 0xb2, 0xf5, 0x7b, 0x00, 0xf1, 0xd0, 0x52, 0x2c, 0x44, 0x4f, 0x6f, - 0x3e, 0xd4, 0x91, 0x11, 0xb5, 0x1e, 0xbe, 0xcd, 0x52, 0xf5, 0xcf, 0x52, 0x50, 0x4e, 0x74, 0x69, - 0x3a, 0x66, 0x6e, 0x7a, 0x13, 0x57, 0xaa, 0x20, 0x9d, 0x1e, 0x9f, 0x9a, 0xce, 0x04, 0x37, 0xf7, - 0x0d, 0xa8, 0x50, 0x7b, 0xdb, 0x0e, 0xa4, 0xed, 0xf6, 0x25, 0xcb, 0x44, 0x28, 0xca, 0x31, 0xc8, - 0x46, 0x28, 0x07, 0x9e, 0x06, 0xe5, 0x38, 0x83, 0xd5, 0x43, 0xe1, 0xf7, 0x45, 0x88, 0x44, 0xce, - 0xb0, 0x86, 0x44, 0x68, 0xca, 0x19, 0x36, 0xe5, 0xb0, 0x3b, 0x19, 0xb1, 0x22, 0x3a, 0x95, 0xd8, - 0x68, 0x9c, 0x09, 0x1f, 0x7d, 0x99, 0x12, 0x7e, 0x07, 0x01, 0xb8, 0x1a, 0x4c, 0x97, 0x41, 0x88, - 0xbd, 0x6f, 0xbb, 0xac, 0x1c, 0x35, 0xcc, 0x73, 0xb6, 0x8a, 0xf2, 0x53, 0xe8, 0xc0, 0x2a, 0xb5, - 0xff, 0x96, 0x81, 0x2c, 0xda, 0x75, 0x8c, 0x75, 0x93, 0x46, 0x48, 0xad, 0x95, 0x24, 0xe8, 0xf3, - 0xed, 0x46, 0xc8, 0x3b, 0xb9, 0x1b, 0xbd, 0x07, 0xe5, 0xfe, 0x24, 0x90, 0xde, 0x88, 0xb6, 0x62, - 0x7d, 0xda, 0x75, 0x73, 0x2e, 0x6b, 0x44, 0xc3, 0x69, 0x24, 0x51, 0xf9, 0x3b, 0x90, 0x3f, 0x51, - 0x5a, 0xaf, 0xf2, 0x46, 0xbf, 0x70, 0xc9, 0x6e, 0xad, 0x35, 0x5b, 0x23, 0x63, 0xbf, 0xec, 0xb9, - 0x15, 0x9b, 0x04, 0xe9, 0x5d, 0x37, 0x1f, 0xed, 0xba, 0xbf, 0x04, 0x6b, 0x02, 0x07, 0xfc, 0xd0, - 0x31, 0xfb, 0x62, 0x24, 0xdc, 0x70, 0x99, 0xbd, 0xfd, 0x12, 0x3d, 0xa6, 0x19, 0xa3, 0x6e, 0xcf, - 0xf0, 0x42, 0xcb, 0xe3, 0x7a, 0xb8, 0xf9, 0x87, 0x81, 0x7d, 0xd1, 0x88, 0x01, 0xf5, 0xaf, 0x68, - 0x7b, 0x59, 0x80, 0x4c, 0x23, 0xe8, 0xeb, 0x0c, 0x88, 0x08, 0xfa, 0x2a, 0xbc, 0x6a, 0xd2, 0x70, - 0xb0, 0x74, 0xfd, 0x4d, 0x28, 0x45, 0x5f, 0x40, 0xe5, 0x39, 0xf0, 0x64, 0x77, 0x2c, 0xfa, 0xf6, - 0x89, 0x2d, 0x2c, 0xa5, 0x9f, 0x5d, 0x69, 0xfa, 0x52, 0x25, 0x11, 0x5b, 0xae, 0xc5, 0xd2, 0xb5, - 0xdf, 0x29, 0x42, 0x5e, 0x6d, 0xbe, 0xba, 0xc3, 0xa5, 0xa8, 0xc3, 0xdf, 0x85, 0xa2, 0x37, 0x16, - 0xbe, 0x29, 0x3d, 0x5f, 0x67, 0x6e, 0xde, 0x79, 0x99, 0xcd, 0x7c, 0xb3, 0xa3, 0x89, 0x8d, 0x88, - 0xcd, 0xac, 0x36, 0xa5, 0xe7, 0xb5, 0xe9, 0x3e, 0xb0, 0x70, 0xdf, 0x3e, 0xf4, 0x91, 0x4e, 0x5e, - 0xe8, 0x38, 0x7c, 0x0e, 0xce, 0x7b, 0x50, 0xea, 0x7b, 0xae, 0x65, 0x47, 0x59, 0x9c, 0xb5, 0x87, - 0xdf, 0x78, 0x29, 0x09, 0x9b, 0x21, 0xb5, 0x11, 0x33, 0xe2, 0xaf, 0x43, 0xee, 0x0c, 0xd5, 0x8c, - 0xf4, 0xe9, 0x72, 0x25, 0x54, 0x48, 0xfc, 0x13, 0x28, 0xff, 0x60, 0x62, 0xf7, 0x4f, 0x3b, 0xc9, - 0x2c, 0xe1, 0x7b, 0x2f, 0x25, 0xc5, 0x77, 0x63, 0x7a, 0x23, 0xc9, 0x2c, 0xa1, 0xda, 0x85, 0x3f, - 0x86, 0x6a, 0x17, 0xe7, 0x55, 0xdb, 0x80, 0x8a, 0x2b, 0x02, 0x29, 0xac, 0x1d, 0xed, 0xab, 0xc1, - 0xe7, 0xf0, 0xd5, 0xa6, 0x59, 0xd4, 0xbf, 0x0c, 0xc5, 0x70, 0xc2, 0x79, 0x1e, 0xd2, 0x07, 0x18, - 0x14, 0xe5, 0x21, 0xdd, 0xf1, 0x95, 0xb6, 0x35, 0x50, 0xdb, 0xea, 0x7f, 0x98, 0x82, 0x52, 0x34, - 0xe8, 0xd3, 0x96, 0xb3, 0xf5, 0x83, 0x89, 0xe9, 0xb0, 0x14, 0x85, 0xcb, 0x9e, 0x54, 0x2d, 0x32, - 0xd6, 0x8f, 0xe8, 0xb0, 0xde, 0x67, 0x19, 0x72, 0x11, 0x44, 0x10, 0xb0, 0x2c, 0xe7, 0xb0, 0xa6, - 0xc1, 0x1d, 0x5f, 0xa1, 0xe6, 0xd0, 0xf0, 0xe1, 0xdb, 0x10, 0x90, 0x57, 0x1e, 0xc5, 0xa9, 0x50, - 0x06, 0xf2, 0xc0, 0x93, 0xd4, 0x28, 0xa2, 0x50, 0x6d, 0x97, 0x95, 0xf0, 0x9b, 0x07, 0x9e, 0x6c, - 0xa3, 0x49, 0x8c, 0xc2, 0xb3, 0x72, 0xf8, 0x79, 0x6a, 0x91, 0x45, 0x6c, 0x38, 0x4e, 0xdb, 0x65, - 0x15, 0xfd, 0x42, 0xb5, 0xd6, 0x90, 0x63, 0xeb, 0xdc, 0xec, 0x23, 0xf9, 0x3a, 0x5a, 0x58, 0xa4, - 0xd1, 0x6d, 0x86, 0x4b, 0xb2, 0x75, 0x6e, 0x07, 0x32, 0x60, 0x1b, 0xf5, 0x7f, 0x9f, 0x82, 0x72, - 0x62, 0x82, 0x31, 0xfc, 0x23, 0x44, 0xdc, 0xca, 0x54, 0x34, 0xf8, 0x31, 0x0e, 0xa3, 0x6f, 0x85, - 0xdb, 0x54, 0xcf, 0xc3, 0xc7, 0x34, 0x7e, 0xaf, 0xe7, 0x8d, 0x3c, 0xdf, 0xf7, 0x9e, 0x2b, 0xd7, - 0x67, 0xcf, 0x0c, 0xe4, 0x33, 0x21, 0x4e, 0x59, 0x16, 0xbb, 0xda, 0x9c, 0xf8, 0xbe, 0x70, 0x15, - 0x20, 0x47, 0xc2, 0x89, 0x73, 0xd5, 0xca, 0x23, 0x53, 0x44, 0xa6, 0x7d, 0x90, 0x15, 0xd0, 0x10, - 0x68, 0x6c, 0x05, 0x29, 0x22, 0x02, 0xa2, 0xab, 0x66, 0x09, 0x37, 0x15, 0x95, 0xa1, 0xe8, 0x9c, - 0x6c, 0x9b, 0x17, 0x41, 0x63, 0xe0, 0x31, 0x98, 0x05, 0x1e, 0x78, 0xcf, 0x59, 0xb9, 0x36, 0x01, - 0x88, 0x63, 0x32, 0x8c, 0x45, 0x51, 0x21, 0xa2, 0x33, 0x04, 0xdd, 0xe2, 0x1d, 0x00, 0x7c, 0x22, - 0xcc, 0x30, 0x20, 0x7d, 0x09, 0x47, 0x99, 0xe8, 0x8c, 0x04, 0x8b, 0xda, 0x5f, 0x80, 0x52, 0xf4, - 0x82, 0x57, 0xa1, 0x40, 0x2e, 0x6d, 0xf4, 0xd9, 0xb0, 0x89, 0xfe, 0x99, 0xed, 0x5a, 0xe2, 0x9c, - 0xec, 0x4a, 0xce, 0x50, 0x0d, 0x94, 0x72, 0x68, 0x5b, 0x96, 0x70, 0xc3, 0x93, 0x1e, 0xd5, 0x5a, - 0x74, 0x1e, 0x9f, 0x5d, 0x78, 0x1e, 0x5f, 0xfb, 0x65, 0x28, 0x27, 0x82, 0xc6, 0x4b, 0xbb, 0x9d, - 0x10, 0x2c, 0x3d, 0x2d, 0xd8, 0x6d, 0x28, 0x85, 0x35, 0x20, 0x01, 0xed, 0x6d, 0x25, 0x23, 0x06, - 0xd4, 0xfe, 0x69, 0x1a, 0x3d, 0x59, 0xec, 0xda, 0x6c, 0xa0, 0xb7, 0x03, 0xf9, 0x40, 0x9a, 0x72, - 0x12, 0x16, 0x33, 0x2c, 0xb9, 0x40, 0xbb, 0x44, 0xb3, 0xbb, 0x62, 0x68, 0x6a, 0xfe, 0x01, 0x64, - 0xa4, 0x39, 0xd0, 0x89, 0xd2, 0xaf, 0x2e, 0xc7, 0xa4, 0x67, 0x0e, 0x76, 0x57, 0x0c, 0xa4, 0xe3, - 0x7b, 0x50, 0xec, 0xeb, 0xdc, 0x96, 0x36, 0x8a, 0x4b, 0xc6, 0x62, 0x61, 0x46, 0x6c, 0x77, 0xc5, - 0x88, 0x38, 0xf0, 0xef, 0x40, 0x16, 0xbd, 0x4b, 0x5d, 0xf3, 0xb1, 0x64, 0x8c, 0x89, 0xcb, 0x65, - 0x77, 0xc5, 0x20, 0xca, 0xad, 0x02, 0xe4, 0xc8, 0x06, 0xd7, 0xaa, 0x90, 0x57, 0x7d, 0x9d, 0x1d, - 0xb9, 0xda, 0x2d, 0xc8, 0xf4, 0xcc, 0x01, 0x7a, 0xf8, 0xb6, 0x15, 0xe8, 0x54, 0x09, 0x3e, 0xd6, - 0x5e, 0x89, 0xf3, 0x74, 0xc9, 0x14, 0x70, 0x6a, 0x2a, 0x05, 0x5c, 0xcb, 0x43, 0x16, 0xbf, 0x58, - 0xbb, 0x7d, 0x55, 0xb4, 0x50, 0xfb, 0x87, 0x19, 0x0c, 0x2c, 0xa4, 0x38, 0x5f, 0x98, 0xde, 0xfe, - 0x08, 0x4a, 0x63, 0xdf, 0xeb, 0x8b, 0x20, 0xf0, 0x7c, 0xed, 0x1c, 0xbd, 0xfe, 0xe2, 0xa3, 0xe7, - 0xcd, 0xc3, 0x90, 0xc6, 0x88, 0xc9, 0xeb, 0xff, 0x2a, 0x0d, 0xa5, 0xe8, 0x85, 0x8a, 0x67, 0xa4, - 0x38, 0x57, 0xa9, 0xcc, 0x7d, 0xe1, 0x8f, 0x4c, 0xdb, 0x52, 0xd6, 0xa3, 0x39, 0x34, 0x43, 0x27, - 0xf7, 0x63, 0x6f, 0x22, 0x27, 0xc7, 0x42, 0xa5, 0xb0, 0x9e, 0xda, 0x23, 0xe1, 0xb1, 0x2c, 0x1d, - 0x1e, 0xa1, 0x62, 0xf7, 0x1d, 0x6f, 0x62, 0xb1, 0x1c, 0xb6, 0x1f, 0xd1, 0xf6, 0xb6, 0x6f, 0x8e, - 0x03, 0x65, 0x33, 0xf7, 0x6d, 0xdf, 0x63, 0x05, 0x24, 0xda, 0xb1, 0x07, 0x23, 0x93, 0x15, 0x91, - 0x59, 0xef, 0xb9, 0x2d, 0xd1, 0x08, 0x97, 0xd0, 0x4d, 0xed, 0x8c, 0x85, 0xdb, 0x95, 0xbe, 0x10, - 0x72, 0xdf, 0x1c, 0xab, 0x9c, 0xa6, 0x21, 0x2c, 0xcb, 0x96, 0xca, 0x7e, 0xee, 0x98, 0x7d, 0x71, - 0xec, 0x79, 0xa7, 0x6c, 0x15, 0x0d, 0x4d, 0xdb, 0x0d, 0xa4, 0x39, 0xf0, 0xcd, 0x91, 0xb2, 0xa1, - 0x3d, 0xe1, 0x08, 0x6a, 0xad, 0xd1, 0xb7, 0x6d, 0x39, 0x9c, 0x1c, 0x3f, 0xc2, 0xb8, 0x6f, 0x5d, - 0x9d, 0x33, 0x59, 0x62, 0x2c, 0xd0, 0x86, 0xae, 0x42, 0x71, 0xcb, 0x76, 0xec, 0x63, 0xdb, 0xb1, - 0xd9, 0x06, 0xa2, 0xb6, 0xce, 0xfb, 0xa6, 0x63, 0x5b, 0xbe, 0xf9, 0x9c, 0x71, 0x14, 0xee, 0xb1, - 0xef, 0x9d, 0xda, 0xec, 0x1a, 0x22, 0x52, 0x18, 0x78, 0x66, 0x7f, 0xca, 0xae, 0xd3, 0x59, 0xd9, - 0xa9, 0x90, 0xfd, 0xe1, 0x89, 0x79, 0xcc, 0x6e, 0xc4, 0x29, 0xbd, 0x9b, 0xb5, 0x0d, 0x58, 0x9f, - 0x39, 0x95, 0xaf, 0x15, 0x74, 0xf4, 0x59, 0xab, 0x40, 0x39, 0x71, 0x5c, 0x5a, 0x7b, 0x15, 0x8a, - 0xe1, 0x61, 0x2a, 0x46, 0xe9, 0x76, 0xa0, 0xd2, 0xc0, 0x5a, 0x49, 0xa2, 0x76, 0xed, 0xf7, 0x53, - 0x90, 0x57, 0x27, 0xd9, 0x7c, 0x2b, 0xaa, 0x3c, 0x49, 0x2d, 0x71, 0x7a, 0xa9, 0x88, 0xf4, 0xd9, - 0x6f, 0x54, 0x7e, 0x72, 0x1d, 0x72, 0x0e, 0x85, 0xe3, 0xda, 0x7c, 0x51, 0x23, 0x61, 0x6d, 0x32, - 0x49, 0x6b, 0x53, 0x6f, 0x44, 0xe7, 0xcd, 0x61, 0xea, 0x91, 0xbc, 0xc2, 0x9e, 0x2f, 0x84, 0x4a, - 0x2b, 0x52, 0x34, 0x9d, 0xa6, 0xbd, 0xc2, 0x1b, 0x8d, 0xcd, 0xbe, 0x24, 0x00, 0xed, 0xa2, 0x68, - 0x4c, 0x59, 0x16, 0xb5, 0xbc, 0x39, 0x34, 0x65, 0xfd, 0x04, 0x8a, 0x87, 0x5e, 0x30, 0xbb, 0x27, - 0x17, 0x20, 0xd3, 0xf3, 0xc6, 0xca, 0xc3, 0xdc, 0xf2, 0x24, 0x79, 0x98, 0x6a, 0x0b, 0x3e, 0x91, - 0x4a, 0xa9, 0x0c, 0x7b, 0x30, 0x94, 0x2a, 0x12, 0x6f, 0xbb, 0xae, 0xf0, 0x59, 0x0e, 0xe7, 0xd0, - 0x10, 0x63, 0xf4, 0x6a, 0x59, 0x1e, 0x67, 0x8d, 0xe0, 0x3b, 0xb6, 0x1f, 0x48, 0x56, 0xa8, 0xb7, - 0x71, 0x37, 0xb5, 0x07, 0xb4, 0x09, 0xd2, 0x03, 0xb1, 0x5a, 0x41, 0x11, 0xa9, 0xd9, 0x14, 0x2e, - 0xea, 0x18, 0x45, 0x4f, 0x2a, 0xf4, 0xa3, 0x0f, 0xa4, 0x71, 0x07, 0xa3, 0xf6, 0x47, 0x93, 0x40, - 0xda, 0x27, 0x17, 0x2c, 0x53, 0x7f, 0x06, 0x95, 0xa9, 0x32, 0x26, 0x7e, 0x1d, 0xd8, 0x14, 0x00, - 0x45, 0x5f, 0xe1, 0xb7, 0xe0, 0xda, 0x14, 0x74, 0xdf, 0xb6, 0x2c, 0xca, 0xf5, 0xce, 0xbe, 0x08, - 0x3b, 0xb8, 0x55, 0x82, 0x42, 0x5f, 0xcd, 0x52, 0xfd, 0x10, 0x2a, 0x34, 0x6d, 0xfb, 0x42, 0x9a, - 0x1d, 0xd7, 0xb9, 0xf8, 0x63, 0xd7, 0x9a, 0xd5, 0xbf, 0xa6, 0x03, 0x2c, 0xb4, 0x17, 0x27, 0xbe, - 0x37, 0x22, 0x5e, 0x39, 0x83, 0x9e, 0x91, 0xbb, 0xf4, 0xf4, 0xdc, 0xa7, 0xa5, 0x57, 0xff, 0x8d, - 0x12, 0x14, 0x1a, 0xfd, 0x3e, 0x86, 0x84, 0x73, 0x5f, 0x7e, 0x07, 0xf2, 0x7d, 0xcf, 0x3d, 0xb1, - 0x07, 0xda, 0x1e, 0xcf, 0x7a, 0x86, 0x9a, 0x0e, 0x15, 0xee, 0xc4, 0x1e, 0x18, 0x1a, 0x19, 0xc9, - 0xf4, 0x7e, 0x92, 0xbb, 0x92, 0x4c, 0x19, 0xd5, 0x68, 0xfb, 0x78, 0x00, 0x59, 0xdb, 0x3d, 0xf1, - 0x74, 0x61, 0xe8, 0x17, 0x2f, 0x21, 0xa2, 0xea, 0x48, 0x42, 0xac, 0xfd, 0x97, 0x14, 0xe4, 0xd5, - 0xa7, 0xf9, 0xab, 0xb0, 0x26, 0x5c, 0x5c, 0x4c, 0xa1, 0x29, 0xd7, 0xab, 0x68, 0x06, 0x8a, 0x4e, - 0xab, 0x86, 0x88, 0xe3, 0xc9, 0x40, 0xe7, 0x5e, 0x92, 0x20, 0xfe, 0x1e, 0xdc, 0x52, 0xcd, 0x43, - 0x5f, 0xf8, 0xc2, 0x11, 0x66, 0x20, 0x9a, 0x43, 0xd3, 0x75, 0x85, 0xa3, 0x37, 0xf6, 0xcb, 0x5e, - 0xf3, 0x3a, 0xac, 0xaa, 0x57, 0xdd, 0xb1, 0xd9, 0x17, 0x81, 0x3e, 0xef, 0x9b, 0x82, 0xf1, 0xaf, - 0x43, 0x8e, 0xea, 0x66, 0xab, 0xd6, 0xd5, 0x53, 0xa9, 0xb0, 0x6a, 0x5e, 0xb4, 0xf3, 0x34, 0x00, - 0xd4, 0x30, 0x61, 0xd0, 0xa5, 0x57, 0xff, 0x97, 0xae, 0x1c, 0x57, 0x8a, 0xff, 0x12, 0x44, 0x28, - 0x9f, 0x25, 0x1c, 0x41, 0x05, 0x8e, 0xb8, 0x33, 0xa6, 0xe9, 0x64, 0x65, 0x0a, 0x56, 0xfb, 0x27, - 0x59, 0xc8, 0xe2, 0x08, 0x23, 0xf2, 0xd0, 0x1b, 0x89, 0x28, 0xbf, 0xac, 0x5c, 0x8d, 0x29, 0x18, - 0xba, 0x36, 0xa6, 0x3a, 0xe2, 0x8f, 0xd0, 0x94, 0xf1, 0x98, 0x05, 0x23, 0xe6, 0xd8, 0xf7, 0x4e, - 0x6c, 0x27, 0xc6, 0xd4, 0x4e, 0xd0, 0x0c, 0x98, 0x7f, 0x03, 0x6e, 0x8e, 0x4c, 0xff, 0x54, 0x48, - 0x5a, 0xdd, 0xcf, 0x3c, 0xff, 0x34, 0xc0, 0x91, 0x6b, 0x5b, 0x3a, 0x31, 0x79, 0xc9, 0x5b, 0xfe, - 0x3a, 0x6c, 0x3c, 0x0f, 0x9b, 0xd1, 0x37, 0x54, 0x6a, 0x70, 0xfe, 0x05, 0x9a, 0x5b, 0x4b, 0x9c, - 0xd9, 0xc4, 0xb7, 0xa8, 0xaa, 0x67, 0xc3, 0x36, 0xaa, 0x92, 0xa9, 0x06, 0xb2, 0xab, 0xbf, 0xac, - 0x4f, 0x98, 0xa6, 0xa1, 0xe8, 0x6d, 0xa9, 0xaa, 0xa2, 0xa0, 0x6d, 0x51, 0x66, 0xb5, 0x64, 0xc4, - 0x00, 0x54, 0x34, 0xfa, 0xe4, 0x53, 0x65, 0x54, 0x2b, 0x2a, 0x04, 0x4d, 0x80, 0x10, 0x43, 0x8a, - 0xfe, 0x30, 0xfc, 0x88, 0x4a, 0x7b, 0x26, 0x41, 0xfc, 0x0e, 0xc0, 0xc0, 0x94, 0xe2, 0xb9, 0x79, - 0xf1, 0xc4, 0x77, 0xaa, 0x42, 0x1d, 0x95, 0xc4, 0x10, 0x0c, 0x62, 0x1d, 0xaf, 0x6f, 0x3a, 0x5d, - 0xe9, 0xf9, 0xe6, 0x40, 0x1c, 0x9a, 0x72, 0x58, 0x1d, 0xa8, 0x20, 0x76, 0x16, 0x8e, 0x3d, 0x96, - 0xf6, 0x48, 0x7c, 0xe2, 0xb9, 0xa2, 0x3a, 0x54, 0x3d, 0x0e, 0xdb, 0x28, 0x89, 0xe9, 0x9a, 0xce, - 0x85, 0xb4, 0xfb, 0xd8, 0x17, 0x5b, 0x49, 0x92, 0x00, 0x51, 0xda, 0x40, 0x48, 0x1c, 0xc7, 0xb6, - 0x55, 0xfd, 0xbe, 0xea, 0x6b, 0x04, 0xa8, 0x77, 0x00, 0x62, 0x95, 0x43, 0x3b, 0xde, 0xa0, 0xe3, - 0x1c, 0xb6, 0xa2, 0xf2, 0x48, 0xae, 0x65, 0xbb, 0x83, 0x6d, 0xad, 0x65, 0x2c, 0x85, 0x40, 0xca, - 0x0f, 0x08, 0x2b, 0x02, 0x92, 0x27, 0x41, 0x2d, 0x61, 0xb1, 0x4c, 0xfd, 0xff, 0xa4, 0xa0, 0x9c, - 0xa8, 0x5e, 0xf8, 0x13, 0xac, 0xb8, 0xc0, 0x7d, 0x16, 0x77, 0x6a, 0x1c, 0x50, 0xa5, 0x81, 0x51, - 0x1b, 0x87, 0x5b, 0x17, 0x57, 0xe0, 0x5b, 0x95, 0x0d, 0x48, 0x40, 0x3e, 0x57, 0xb5, 0x45, 0xfd, - 0xa1, 0x4e, 0xa9, 0x94, 0xa1, 0xf0, 0xc4, 0x3d, 0x75, 0xbd, 0xe7, 0xae, 0xda, 0x40, 0xa9, 0x84, - 0x66, 0xea, 0x30, 0x30, 0xac, 0x72, 0xc9, 0xd4, 0xff, 0x45, 0x76, 0xa6, 0xda, 0xac, 0x05, 0x79, - 0xe5, 0xc7, 0x93, 0x8b, 0x39, 0x5f, 0x1e, 0x94, 0x44, 0xd6, 0x07, 0x4f, 0x09, 0x90, 0xa1, 0x89, - 0xd1, 0xc1, 0x8e, 0x6a, 0x31, 0xd3, 0x0b, 0x0f, 0xc8, 0xa6, 0x18, 0x85, 0x46, 0x73, 0xaa, 0x1c, - 0x39, 0xe2, 0x50, 0xfb, 0x6b, 0x29, 0xb8, 0xbe, 0x08, 0x25, 0x59, 0xb4, 0x9d, 0x9a, 0x2e, 0xda, - 0xee, 0xce, 0x14, 0x41, 0xa7, 0xa9, 0x37, 0x0f, 0x5e, 0x52, 0x88, 0xe9, 0x92, 0xe8, 0xfa, 0xef, - 0xa5, 0x60, 0x63, 0xae, 0xcf, 0x09, 0x07, 0x03, 0x20, 0xaf, 0x34, 0x4b, 0xd5, 0x28, 0x45, 0x55, - 0x23, 0x2a, 0xeb, 0x4f, 0x5b, 0x6f, 0xa0, 0x8e, 0xe1, 0x75, 0xd9, 0xb7, 0xf2, 0x5f, 0x71, 0xd6, - 0xd0, 0xb2, 0x0f, 0x84, 0xca, 0x90, 0x2a, 0x2f, 0x48, 0x43, 0xf2, 0xca, 0xc7, 0x54, 0x47, 0x13, - 0xac, 0x40, 0xb5, 0x4f, 0x93, 0xb1, 0x63, 0xf7, 0xb1, 0x59, 0xe4, 0x35, 0xb8, 0xa9, 0x6a, 0xff, - 0x75, 0x3c, 0x77, 0xd2, 0x1b, 0xda, 0xb4, 0x38, 0x58, 0x09, 0xbf, 0x73, 0x38, 0x39, 0x76, 0xec, - 0x60, 0xc8, 0xa0, 0x6e, 0xc0, 0xb5, 0x05, 0x1d, 0x24, 0x91, 0x9f, 0x6a, 0xf1, 0xd7, 0x00, 0xb6, - 0x9f, 0x86, 0x42, 0xb3, 0x14, 0xe7, 0xb0, 0xb6, 0xfd, 0x34, 0xc9, 0x5d, 0x2f, 0x9e, 0xa7, 0x68, - 0x56, 0x02, 0x96, 0xa9, 0xff, 0x6a, 0x2a, 0x2c, 0x4e, 0xa8, 0xfd, 0x79, 0xa8, 0x28, 0x81, 0x0f, - 0xcd, 0x0b, 0xc7, 0x33, 0x2d, 0xde, 0x82, 0xb5, 0x20, 0xba, 0x9d, 0x92, 0xd8, 0x49, 0x66, 0x77, - 0xe8, 0xee, 0x14, 0x92, 0x31, 0x43, 0x14, 0xc6, 0x28, 0xe9, 0xf8, 0x44, 0x83, 0x53, 0xb4, 0x65, - 0xd2, 0x92, 0x5b, 0xa5, 0xf8, 0xc9, 0xac, 0x7f, 0x1d, 0x36, 0xba, 0xb1, 0xd5, 0x55, 0xce, 0x2c, - 0x2a, 0x87, 0x32, 0xd9, 0xdb, 0xa1, 0x72, 0xe8, 0x66, 0xfd, 0x3f, 0xe5, 0x01, 0xe2, 0xd3, 0x9b, - 0x05, 0x6b, 0x7e, 0x51, 0x31, 0xc2, 0xdc, 0x59, 0x6a, 0xe6, 0xa5, 0xcf, 0x52, 0xdf, 0x8b, 0x7c, - 0x6a, 0x95, 0xd9, 0x9d, 0xad, 0xc8, 0x8e, 0x65, 0x9a, 0xf5, 0xa4, 0xa7, 0x6a, 0x75, 0x72, 0xb3, - 0xb5, 0x3a, 0x77, 0xe7, 0x0b, 0xfb, 0x66, 0x8c, 0x51, 0x9c, 0x32, 0x28, 0x4c, 0xa5, 0x0c, 0x6a, - 0x50, 0xf4, 0x85, 0x69, 0x79, 0xae, 0x73, 0x11, 0x1e, 0xd9, 0x85, 0x6d, 0xfe, 0x16, 0xe4, 0x24, - 0x5d, 0xb0, 0x29, 0xd2, 0xda, 0x79, 0xc1, 0xc4, 0x29, 0x5c, 0xb4, 0x6c, 0x76, 0xa0, 0xab, 0xf1, - 0xd4, 0x76, 0x56, 0x34, 0x12, 0x10, 0xbe, 0x09, 0xdc, 0xc6, 0xf8, 0xc9, 0x71, 0x84, 0xb5, 0x75, - 0xb1, 0xad, 0x4e, 0xd2, 0x68, 0xc3, 0x2d, 0x1a, 0x0b, 0xde, 0x84, 0xf3, 0xbf, 0x1a, 0xcf, 0x3f, - 0x89, 0x7c, 0x66, 0x07, 0xd8, 0xd3, 0x0a, 0xf9, 0x15, 0x51, 0x1b, 0xb7, 0xf4, 0x70, 0xc1, 0xaa, - 0xb1, 0x24, 0xed, 0x8d, 0x8f, 0xa3, 0x2f, 0x79, 0x5b, 0xff, 0x83, 0x74, 0x14, 0x7b, 0x94, 0x20, - 0x77, 0x6c, 0x06, 0x76, 0x5f, 0x85, 0xa2, 0xda, 0x67, 0x50, 0xf1, 0x87, 0xf4, 0x2c, 0x8f, 0xa5, - 0x31, 0x8c, 0x08, 0x84, 0x3e, 0xef, 0x88, 0x2f, 0x1d, 0xb1, 0x2c, 0x2e, 0xd4, 0x70, 0xbe, 0x55, - 0x51, 0x0d, 0x91, 0x52, 0xf6, 0xca, 0x8a, 0xca, 0x15, 0x29, 0x0e, 0xa5, 0x8d, 0x80, 0x15, 0x11, - 0xc7, 0xf5, 0xa4, 0x50, 0xb9, 0x3b, 0xd2, 0x4e, 0x06, 0xc8, 0x26, 0xac, 0xa2, 0x67, 0x65, 0xf4, - 0xeb, 0x43, 0xa6, 0x2a, 0xe1, 0x16, 0x50, 0xd4, 0xb3, 0x8a, 0xab, 0x73, 0xfa, 0x05, 0xab, 0xa0, - 0x44, 0xf1, 0x5d, 0x26, 0xb6, 0x86, 0x5c, 0x4d, 0x2a, 0xf5, 0x58, 0xc7, 0xc7, 0x33, 0x2a, 0x00, - 0x61, 0xf8, 0x55, 0x0b, 0xad, 0xc7, 0x06, 0x4a, 0x16, 0xf9, 0x09, 0x8c, 0x63, 0xd8, 0x32, 0x36, - 0x31, 0x86, 0xb0, 0xc7, 0xa6, 0x2b, 0xd9, 0x35, 0xec, 0xea, 0xd8, 0x3a, 0x61, 0xd7, 0x91, 0xa4, - 0x3f, 0x34, 0x25, 0xbb, 0x81, 0x38, 0xf8, 0xb4, 0x2d, 0x7c, 0x9c, 0x4f, 0x76, 0x13, 0x71, 0xa4, - 0x39, 0x60, 0xb7, 0xea, 0xbf, 0x19, 0x17, 0x0c, 0xbf, 0x11, 0x79, 0xf7, 0xcb, 0x28, 0x39, 0xfa, - 0xff, 0x8b, 0x56, 0x5c, 0x0b, 0x36, 0x7c, 0xf1, 0x83, 0x89, 0x3d, 0x55, 0x46, 0x9f, 0xb9, 0xba, - 0x4e, 0x63, 0x9e, 0xa2, 0x7e, 0x06, 0x1b, 0x61, 0xe3, 0x99, 0x2d, 0x87, 0x94, 0x68, 0xe1, 0x6f, - 0x25, 0xea, 0xfc, 0x53, 0x0b, 0xef, 0x47, 0x45, 0x2c, 0xe3, 0xba, 0xfe, 0x28, 0x91, 0x9e, 0x5e, - 0x22, 0x91, 0x5e, 0xff, 0xdf, 0xc9, 0x93, 0x59, 0x15, 0xef, 0x58, 0x51, 0xbc, 0x33, 0x7f, 0x52, - 0x1b, 0xe7, 0xc6, 0xd3, 0x2f, 0x93, 0x1b, 0x5f, 0x54, 0xf5, 0xf0, 0x3e, 0xba, 0xdf, 0xb4, 0x7e, - 0x9e, 0x2e, 0x91, 0xf7, 0x9f, 0xc2, 0xe5, 0x5b, 0x74, 0xee, 0x6a, 0x76, 0x55, 0x49, 0x4e, 0x6e, - 0xe1, 0xad, 0x9b, 0xe4, 0x01, 0xab, 0xc6, 0x34, 0x12, 0x54, 0x09, 0x6b, 0x93, 0x5f, 0x64, 0x6d, - 0x30, 0xf4, 0xd4, 0x76, 0x28, 0x6a, 0xab, 0x63, 0x12, 0xf5, 0x1c, 0xb2, 0x27, 0xa7, 0xba, 0x68, - 0xcc, 0xc1, 0xd1, 0x25, 0x1b, 0x4d, 0x1c, 0x69, 0xeb, 0x93, 0x00, 0xd5, 0x98, 0xbd, 0x16, 0x58, - 0x9a, 0xbf, 0x16, 0xf8, 0x21, 0x40, 0x20, 0x70, 0x75, 0x6c, 0xdb, 0x7d, 0xa9, 0x0b, 0x77, 0xee, - 0x5c, 0xd6, 0x37, 0x7d, 0x7e, 0x91, 0xa0, 0x40, 0xf9, 0x47, 0xe6, 0x39, 0x9d, 0x69, 0xea, 0x0a, - 0x83, 0xa8, 0x3d, 0x6b, 0x83, 0xd7, 0xe6, 0x6d, 0xf0, 0x5b, 0x90, 0x0b, 0xfa, 0xde, 0x58, 0xd0, - 0xcd, 0x96, 0xcb, 0xe7, 0x77, 0xb3, 0x8b, 0x48, 0x86, 0xc2, 0xa5, 0x8c, 0x1e, 0x5a, 0x29, 0xcf, - 0xa7, 0x3b, 0x2d, 0x25, 0x23, 0x6c, 0x4e, 0xd9, 0xc1, 0x9b, 0xd3, 0x76, 0xb0, 0x66, 0x41, 0x5e, - 0x67, 0xe7, 0x67, 0xe3, 0xec, 0x30, 0xaf, 0x97, 0x4e, 0xe4, 0xf5, 0xa2, 0xf2, 0xd0, 0x4c, 0xb2, - 0x3c, 0x74, 0xe6, 0xda, 0x5b, 0x6e, 0xee, 0xda, 0x5b, 0xfd, 0x13, 0xc8, 0x91, 0xac, 0xe8, 0x44, - 0xa8, 0x61, 0x56, 0x0e, 0x27, 0x76, 0x8a, 0xa5, 0xf8, 0x75, 0x60, 0x81, 0x20, 0x8f, 0x44, 0x74, - 0xcd, 0x91, 0x20, 0x23, 0x99, 0xe6, 0x55, 0xb8, 0xae, 0x70, 0x83, 0xe9, 0x37, 0xe4, 0x16, 0x39, - 0xf6, 0xb1, 0x6f, 0xfa, 0x17, 0x2c, 0x5b, 0xff, 0x90, 0xce, 0xc6, 0x43, 0x85, 0x2a, 0x47, 0xd7, - 0x0c, 0x95, 0x59, 0xb6, 0xb4, 0xf5, 0xa1, 0xd2, 0x0a, 0x1d, 0x2c, 0xa9, 0x82, 0x33, 0x8a, 0x46, - 0x28, 0x9d, 0xb2, 0x9a, 0xdc, 0x89, 0xff, 0xc4, 0xd6, 0x5b, 0x7d, 0x2b, 0xe1, 0xd7, 0x4d, 0x57, - 0x90, 0xa5, 0x96, 0xad, 0x20, 0xab, 0x3f, 0x86, 0x75, 0x63, 0xda, 0xa6, 0xf3, 0xf7, 0xa0, 0xe0, - 0x8d, 0x93, 0x7c, 0x5e, 0xa4, 0x97, 0x21, 0x7a, 0xfd, 0x27, 0x29, 0x58, 0x6d, 0xbb, 0x52, 0xf8, - 0xae, 0xe9, 0xec, 0x38, 0xe6, 0x80, 0xbf, 0x1b, 0x5a, 0xa9, 0xc5, 0xa1, 0x7b, 0x12, 0x77, 0xda, - 0x60, 0x39, 0x3a, 0x0b, 0xcd, 0x6f, 0xc0, 0x86, 0xb0, 0x6c, 0xe9, 0xf9, 0xca, 0x9b, 0x0d, 0x0b, - 0xfd, 0xae, 0x03, 0x53, 0xe0, 0x2e, 0x2d, 0x89, 0x9e, 0x9a, 0xe6, 0x2a, 0x5c, 0x9f, 0x82, 0x86, - 0xae, 0x6a, 0x9a, 0xdf, 0x86, 0x6a, 0xbc, 0x1b, 0x6d, 0x7b, 0xae, 0x6c, 0xbb, 0x96, 0x38, 0x27, - 0x57, 0x88, 0x65, 0xea, 0xbf, 0x5e, 0x08, 0x9d, 0xb0, 0xa7, 0xba, 0x0c, 0xd0, 0xf7, 0xbc, 0xf8, - 0x8e, 0xa9, 0x6e, 0x25, 0xee, 0x32, 0xa7, 0x97, 0xb8, 0xcb, 0xfc, 0x61, 0x7c, 0x1f, 0x55, 0x6d, - 0x14, 0xaf, 0x2c, 0xdc, 0x7d, 0xa8, 0x7a, 0x49, 0xfb, 0xe0, 0x5d, 0x91, 0xb8, 0x9c, 0xfa, 0xa6, - 0x0e, 0xbc, 0xb2, 0xcb, 0xf8, 0xaa, 0xea, 0xa0, 0xff, 0x9d, 0xd9, 0x4b, 0x10, 0xcb, 0x55, 0x11, - 0xce, 0xb9, 0x93, 0xf0, 0xd2, 0xee, 0xe4, 0xb7, 0x67, 0x62, 0x9c, 0xe2, 0xc2, 0x6c, 0xd6, 0x15, - 0x57, 0x3c, 0xbf, 0x0d, 0x85, 0xa1, 0x1d, 0x48, 0xcf, 0x57, 0xd7, 0x8e, 0xe7, 0xaf, 0x49, 0x25, - 0x46, 0x6b, 0x57, 0x21, 0x52, 0xc9, 0x57, 0x48, 0xc5, 0xbf, 0x07, 0x1b, 0x34, 0xf0, 0x87, 0xb1, - 0xd7, 0x10, 0x54, 0xcb, 0x0b, 0x4b, 0xed, 0x12, 0xac, 0xb6, 0x66, 0x48, 0x8c, 0x79, 0x26, 0xb5, - 0x01, 0x40, 0x3c, 0x3f, 0x73, 0x56, 0xec, 0x73, 0x5c, 0x3b, 0xbe, 0x09, 0xf9, 0x60, 0x72, 0x1c, - 0x1f, 0x57, 0xe9, 0x56, 0xed, 0x1c, 0x6a, 0x73, 0xde, 0xc1, 0xa1, 0xf0, 0x95, 0xb8, 0x57, 0xde, - 0x7d, 0xfe, 0x30, 0x39, 0xf1, 0x4a, 0x39, 0xef, 0x5e, 0x32, 0x7b, 0x11, 0xe7, 0x84, 0x06, 0xd4, - 0xde, 0x81, 0x72, 0x62, 0x50, 0xd1, 0x32, 0x4f, 0x5c, 0xcb, 0x0b, 0x33, 0xa8, 0xf8, 0xac, 0xee, - 0x7e, 0x59, 0x61, 0x0e, 0x95, 0x9e, 0x6b, 0x06, 0xb0, 0xd9, 0x01, 0xbc, 0x22, 0x0e, 0x7e, 0x05, - 0x2a, 0x09, 0x97, 0x2e, 0xca, 0xae, 0x4d, 0x03, 0xeb, 0x67, 0xf0, 0xc5, 0x04, 0xbb, 0x43, 0xe1, - 0x8f, 0xec, 0x00, 0x37, 0x12, 0x15, 0xd2, 0x51, 0x2a, 0xc3, 0x12, 0xae, 0xb4, 0x65, 0x68, 0x41, - 0xa3, 0x36, 0xff, 0x45, 0xc8, 0x8d, 0x85, 0x3f, 0x0a, 0xb4, 0x15, 0x9d, 0xd5, 0xa0, 0x85, 0x6c, - 0x03, 0x43, 0xd1, 0xd4, 0xff, 0x41, 0x0a, 0x8a, 0xfb, 0x42, 0x9a, 0xe8, 0x3b, 0xf0, 0xfd, 0x99, - 0xaf, 0xcc, 0x1f, 0xb1, 0x86, 0xa8, 0x9b, 0x3a, 0xc8, 0xdc, 0x6c, 0x6b, 0x7c, 0xdd, 0xde, 0x5d, - 0x89, 0x05, 0xab, 0x6d, 0x41, 0x41, 0x83, 0x6b, 0xef, 0xc2, 0xfa, 0x0c, 0x26, 0x8d, 0x8b, 0xf2, - 0xed, 0xbb, 0x17, 0xa3, 0xb0, 0x0e, 0x68, 0xd5, 0x98, 0x06, 0x6e, 0x95, 0xa0, 0x30, 0x56, 0x04, - 0xf5, 0x3f, 0xb8, 0x41, 0xd5, 0x27, 0xf6, 0x09, 0x46, 0xde, 0x8b, 0x76, 0xd6, 0x3b, 0x00, 0xb4, - 0x35, 0xab, 0x1a, 0x05, 0x95, 0xf1, 0x4c, 0x40, 0xf8, 0xfb, 0x51, 0xaa, 0x3a, 0xbb, 0xd0, 0xa9, - 0x4a, 0x32, 0x9f, 0xcd, 0x57, 0x57, 0xa1, 0x60, 0x07, 0x7b, 0xb8, 0xb5, 0xe9, 0xba, 0x9e, 0xb0, - 0xc9, 0xbf, 0x05, 0x79, 0x7b, 0x34, 0xf6, 0x7c, 0xa9, 0x73, 0xd9, 0x57, 0x72, 0x6d, 0x13, 0xe6, - 0xee, 0x8a, 0xa1, 0x69, 0x90, 0x5a, 0x9c, 0x13, 0x75, 0xf1, 0xc5, 0xd4, 0xad, 0xf3, 0x90, 0x5a, - 0xd1, 0xf0, 0xef, 0x42, 0x65, 0xa0, 0xca, 0x1a, 0x15, 0x63, 0x6d, 0x44, 0xbe, 0x7a, 0x15, 0x93, - 0x47, 0x49, 0x82, 0xdd, 0x15, 0x63, 0x9a, 0x03, 0xb2, 0x44, 0x07, 0x5e, 0x04, 0xb2, 0xe7, 0x7d, - 0xe4, 0xd9, 0x2e, 0x05, 0xa5, 0x2f, 0x60, 0x69, 0x24, 0x09, 0x90, 0xe5, 0x14, 0x07, 0xfe, 0x0d, - 0xf4, 0x78, 0x02, 0xa9, 0x6f, 0x7e, 0xdf, 0xbd, 0x8a, 0x53, 0x4f, 0x04, 0xfa, 0xce, 0x76, 0x20, - 0xf9, 0x39, 0xd4, 0x12, 0x8b, 0x44, 0x7f, 0xa4, 0x31, 0x1e, 0xfb, 0x1e, 0x46, 0xb6, 0x15, 0xe2, - 0xf6, 0x8d, 0xab, 0xb8, 0x1d, 0x5e, 0x4a, 0xbd, 0xbb, 0x62, 0x5c, 0xc1, 0x9b, 0xf7, 0x30, 0xb2, - 0xd3, 0x5d, 0xd8, 0x13, 0xe6, 0x59, 0x78, 0x6f, 0xfc, 0xfe, 0x52, 0xa3, 0x40, 0x14, 0xbb, 0x2b, - 0xc6, 0x0c, 0x0f, 0xfe, 0xcb, 0xb0, 0x31, 0xf5, 0x4d, 0xba, 0x2a, 0xaa, 0x6e, 0x95, 0x7f, 0x7d, - 0xe9, 0x6e, 0x20, 0xd1, 0xee, 0x8a, 0x31, 0xcf, 0x89, 0x4f, 0xe0, 0x0b, 0xf3, 0x5d, 0xda, 0x16, - 0x7d, 0xc7, 0x76, 0x85, 0xbe, 0x80, 0xfe, 0xce, 0xcb, 0x8d, 0x96, 0x26, 0xde, 0x5d, 0x31, 0x2e, - 0xe7, 0xcc, 0xff, 0x22, 0xdc, 0x1e, 0x2f, 0x34, 0x31, 0xca, 0x74, 0xe9, 0xfb, 0xeb, 0xef, 0x2d, - 0xf9, 0xe5, 0x39, 0xfa, 0xdd, 0x15, 0xe3, 0x4a, 0xfe, 0xe8, 0x3b, 0x53, 0x04, 0xad, 0xab, 0xaf, - 0x55, 0x83, 0xdf, 0x86, 0x92, 0xd9, 0x77, 0x76, 0x85, 0x69, 0x45, 0xe9, 0xf6, 0x18, 0x50, 0xfb, - 0x1f, 0x29, 0xc8, 0x6b, 0x7d, 0xbf, 0x1d, 0x1d, 0xa9, 0x47, 0xa6, 0x3b, 0x06, 0xf0, 0x0f, 0xa0, - 0x24, 0x7c, 0xdf, 0xf3, 0x9b, 0x9e, 0x15, 0x56, 0x23, 0xce, 0xe6, 0x82, 0x15, 0x9f, 0xcd, 0x56, - 0x88, 0x66, 0xc4, 0x14, 0xfc, 0x7d, 0x00, 0xb5, 0xce, 0x7b, 0xf1, 0x25, 0x9a, 0xda, 0x62, 0x7a, - 0x75, 0x82, 0x13, 0x63, 0xc7, 0xc9, 0xb3, 0xf0, 0xf8, 0x24, 0x6c, 0x46, 0x01, 0x67, 0x2e, 0x11, - 0x70, 0xde, 0xd6, 0x79, 0x84, 0x03, 0x7c, 0xa1, 0xaf, 0x92, 0x45, 0x80, 0xda, 0xbf, 0x4e, 0x41, - 0x5e, 0x19, 0x0f, 0xde, 0x9a, 0xef, 0xd1, 0x6b, 0x2f, 0xb6, 0x39, 0x9b, 0xb3, 0x3d, 0xfb, 0x16, - 0x80, 0xb2, 0x41, 0x89, 0x9e, 0xdd, 0x9e, 0xe1, 0xa3, 0x49, 0xc3, 0xfa, 0xdf, 0x18, 0xbf, 0xfe, - 0x50, 0x5d, 0x77, 0xa2, 0xc4, 0xed, 0x93, 0xbd, 0x3d, 0xb6, 0xc2, 0x37, 0xa0, 0xf2, 0xe4, 0xe0, - 0xf1, 0x41, 0xe7, 0xd9, 0xc1, 0x51, 0xcb, 0x30, 0x3a, 0x86, 0xca, 0xdf, 0x6e, 0x35, 0xb6, 0x8f, - 0xda, 0x07, 0x87, 0x4f, 0x7a, 0x2c, 0x5d, 0xfb, 0x67, 0x29, 0xa8, 0x4c, 0xd9, 0xae, 0x3f, 0xdd, - 0xa9, 0x4b, 0x0c, 0x7f, 0x66, 0xf1, 0xf0, 0x67, 0x2f, 0x1b, 0xfe, 0xdc, 0xec, 0xf0, 0xff, 0x4e, - 0x0a, 0x2a, 0x53, 0x36, 0x32, 0xc9, 0x3d, 0x35, 0xcd, 0x3d, 0xb9, 0xd3, 0xa7, 0x67, 0x76, 0xfa, - 0x3a, 0xac, 0x86, 0xcf, 0x07, 0x71, 0xc6, 0x61, 0x0a, 0x96, 0xc4, 0xa1, 0xfb, 0x06, 0xd9, 0x69, - 0x1c, 0xba, 0x73, 0x70, 0xb5, 0xb4, 0x74, 0xbf, 0x32, 0xa0, 0xeb, 0xe7, 0xb5, 0xcb, 0x2d, 0xe8, - 0x15, 0x5d, 0x78, 0x04, 0xe5, 0x71, 0xbc, 0x4c, 0x5f, 0xce, 0x2d, 0x49, 0x52, 0xbe, 0x40, 0xce, - 0xdf, 0x4d, 0xc1, 0xda, 0xb4, 0xcd, 0xfd, 0xff, 0x7a, 0x58, 0xff, 0x51, 0x0a, 0x36, 0xe6, 0x2c, - 0xf9, 0x95, 0x8e, 0xdd, 0xac, 0x5c, 0xe9, 0x25, 0xe4, 0xca, 0x2c, 0x90, 0xeb, 0x72, 0x4b, 0x72, - 0xb5, 0xc4, 0x5d, 0xf8, 0xc2, 0xa5, 0x7b, 0xc2, 0x15, 0x43, 0x3d, 0xc5, 0x34, 0x33, 0xcb, 0xf4, - 0xb7, 0x53, 0x70, 0xfb, 0x2a, 0x7b, 0xff, 0xff, 0x5c, 0xaf, 0x66, 0x25, 0xac, 0xbf, 0x1b, 0x9d, - 0xc3, 0x97, 0xa1, 0xa0, 0x7f, 0xd6, 0x49, 0x57, 0x3a, 0x0f, 0xbd, 0xe7, 0xae, 0xca, 0x44, 0x1b, - 0xc2, 0xd4, 0x17, 0xdf, 0x0d, 0x31, 0x76, 0x6c, 0x3a, 0xc9, 0xbc, 0x05, 0xd0, 0xa0, 0xb8, 0x2e, - 0xbc, 0x87, 0xd2, 0xdc, 0xeb, 0x74, 0x5b, 0x6c, 0x25, 0xe9, 0xc4, 0x7e, 0x12, 0x1a, 0xe2, 0xfa, - 0x21, 0xe4, 0xe3, 0x9b, 0x01, 0xfb, 0xa6, 0x7f, 0x6a, 0xa9, 0xf3, 0xc2, 0x55, 0x28, 0x1e, 0xea, - 0x10, 0x4a, 0x7d, 0xea, 0xa3, 0x6e, 0xe7, 0x40, 0x25, 0xbd, 0xb7, 0x3b, 0x3d, 0x75, 0xbf, 0xa0, - 0xfb, 0xf4, 0x91, 0x3a, 0xb8, 0x7a, 0x64, 0x34, 0x0e, 0x77, 0x8f, 0x08, 0x23, 0x57, 0xff, 0xad, - 0x6c, 0xb8, 0xab, 0xd5, 0x0d, 0x7d, 0x12, 0x09, 0x90, 0x47, 0x6b, 0xee, 0x69, 0xc6, 0xd1, 0x67, - 0xa8, 0x26, 0xb6, 0x75, 0xae, 0xf2, 0x10, 0x2c, 0xcd, 0xf3, 0x90, 0x3e, 0x3c, 0x56, 0x85, 0x3c, - 0xbb, 0x72, 0xe4, 0xa8, 0x8b, 0x89, 0xbd, 0x73, 0xc9, 0x72, 0xf8, 0xd0, 0x0c, 0xce, 0x58, 0xbe, - 0xfe, 0xcf, 0x33, 0x50, 0x8a, 0x4c, 0xe5, 0xcb, 0x98, 0x6e, 0xce, 0x61, 0xad, 0x7d, 0xd0, 0x6b, - 0x19, 0x07, 0x8d, 0x3d, 0x8d, 0x92, 0xe1, 0xd7, 0x60, 0x7d, 0xa7, 0xbd, 0xd7, 0x3a, 0xda, 0xeb, - 0x34, 0xb6, 0x35, 0xb0, 0xc8, 0x6f, 0x02, 0x6f, 0xef, 0x1f, 0x76, 0x8c, 0xde, 0x51, 0xbb, 0x7b, - 0xd4, 0x6c, 0x1c, 0x34, 0x5b, 0x7b, 0xad, 0x6d, 0x96, 0xe7, 0xaf, 0xc0, 0xdd, 0x83, 0x4e, 0xaf, - 0xdd, 0x39, 0x38, 0x3a, 0xe8, 0x1c, 0x75, 0xb6, 0x3e, 0x6a, 0x35, 0x7b, 0xdd, 0xa3, 0xf6, 0xc1, - 0x11, 0x72, 0x7d, 0x64, 0x34, 0xf0, 0x0d, 0xcb, 0xf1, 0xbb, 0x70, 0x5b, 0x63, 0x75, 0x5b, 0xc6, - 0xd3, 0x96, 0x81, 0x4c, 0x9e, 0x1c, 0x34, 0x9e, 0x36, 0xda, 0x7b, 0x8d, 0xad, 0xbd, 0x16, 0x5b, - 0xe5, 0x77, 0xa0, 0xa6, 0x31, 0x8c, 0x46, 0xaf, 0x75, 0xb4, 0xd7, 0xde, 0x6f, 0xf7, 0x8e, 0x5a, - 0xdf, 0x6b, 0xb6, 0x5a, 0xdb, 0xad, 0x6d, 0x56, 0xe1, 0x5f, 0x85, 0xaf, 0x90, 0x50, 0x5a, 0x88, - 0xe9, 0x8f, 0x7d, 0xd2, 0x3e, 0x3c, 0x6a, 0x18, 0xcd, 0xdd, 0xf6, 0xd3, 0x16, 0x5b, 0xe3, 0xaf, - 0xc1, 0x97, 0x2f, 0x47, 0xdd, 0x6e, 0x1b, 0xad, 0x66, 0xaf, 0x63, 0x7c, 0xcc, 0x36, 0xf8, 0x2f, - 0xc0, 0x17, 0x76, 0x7b, 0xfb, 0x7b, 0x47, 0xcf, 0x8c, 0xce, 0xc1, 0xa3, 0x23, 0x7a, 0xec, 0xf6, - 0x8c, 0x27, 0xcd, 0xde, 0x13, 0xa3, 0xc5, 0x80, 0xd7, 0xe0, 0xe6, 0xe1, 0xd6, 0xd1, 0x41, 0xa7, - 0x77, 0xd4, 0x38, 0xf8, 0x78, 0x6b, 0xaf, 0xd3, 0x7c, 0x7c, 0xb4, 0xd3, 0x31, 0xf6, 0x1b, 0x3d, - 0x56, 0xe6, 0x5f, 0x83, 0xd7, 0x9a, 0xdd, 0xa7, 0x5a, 0xcc, 0xce, 0xce, 0x91, 0xd1, 0x79, 0xd6, - 0x3d, 0xea, 0x18, 0x47, 0x46, 0x6b, 0x8f, 0xfa, 0xdc, 0x8d, 0x65, 0x2f, 0xf0, 0xdb, 0x50, 0x6d, - 0x1f, 0x74, 0x9f, 0xec, 0xec, 0xb4, 0x9b, 0xed, 0xd6, 0x41, 0xef, 0xe8, 0xb0, 0x65, 0xec, 0xb7, - 0xbb, 0x5d, 0x44, 0x63, 0xa5, 0xfa, 0x77, 0x20, 0xdf, 0x76, 0xcf, 0x6c, 0x49, 0xeb, 0x4b, 0x2b, - 0xa3, 0x8e, 0xb8, 0xc2, 0x26, 0x2d, 0x0b, 0x7b, 0xe0, 0xd2, 0x85, 0x7b, 0x5a, 0x5d, 0xab, 0x46, - 0x0c, 0xa8, 0xff, 0xe3, 0x34, 0x54, 0x14, 0x8b, 0x30, 0x82, 0xbb, 0x07, 0xeb, 0x3a, 0x15, 0xda, - 0x9e, 0x36, 0x61, 0xb3, 0x60, 0xfa, 0x25, 0x2b, 0x05, 0x4a, 0x18, 0xb2, 0x24, 0x88, 0x8e, 0xd7, - 0x88, 0x39, 0x46, 0x82, 0xea, 0x60, 0x31, 0x06, 0x7c, 0x5e, 0x0b, 0x86, 0xd6, 0x51, 0x21, 0xf6, - 0x3d, 0xb7, 0x19, 0xdd, 0xbc, 0x98, 0x82, 0xf1, 0x4f, 0xe0, 0x56, 0xd4, 0x6e, 0xb9, 0x7d, 0xff, - 0x62, 0x1c, 0xfd, 0xe0, 0x5c, 0x61, 0x61, 0x4a, 0x61, 0xc7, 0x76, 0xc4, 0x14, 0xa2, 0x71, 0x19, - 0x83, 0xfa, 0x1f, 0xa6, 0x12, 0x71, 0xaf, 0x8a, 0x6b, 0xaf, 0xb4, 0xf8, 0x8b, 0xce, 0x60, 0x30, - 0xf2, 0xd4, 0xe2, 0x6b, 0x47, 0x44, 0x37, 0xf9, 0x21, 0x70, 0x7b, 0x5e, 0xe8, 0xec, 0x92, 0x42, - 0x2f, 0xa0, 0x9d, 0x4d, 0xa1, 0xe7, 0xe6, 0x53, 0xe8, 0x77, 0x00, 0x06, 0x8e, 0x77, 0x6c, 0x3a, - 0x09, 0x47, 0x33, 0x01, 0xa9, 0x3b, 0x50, 0x0c, 0x7f, 0xd6, 0x8e, 0xdf, 0x84, 0x3c, 0xfd, 0xb0, - 0x5d, 0x94, 0x50, 0x54, 0x2d, 0xbe, 0x0b, 0x6b, 0x62, 0x5a, 0xe6, 0xf4, 0x92, 0x32, 0xcf, 0xd0, - 0xd5, 0xbf, 0x09, 0x1b, 0x73, 0x48, 0x38, 0x88, 0x63, 0x53, 0x46, 0x77, 0xdb, 0xf1, 0x79, 0xfe, - 0x10, 0xbb, 0xfe, 0x1f, 0xd3, 0xb0, 0xba, 0x6f, 0xba, 0xf6, 0x89, 0x08, 0x64, 0x28, 0x6d, 0xd0, - 0x1f, 0x8a, 0x91, 0x19, 0x4a, 0xab, 0x5a, 0x3a, 0xcb, 0x90, 0x4e, 0xe6, 0xef, 0xe7, 0x8e, 0x7b, - 0x6e, 0x42, 0xde, 0x9c, 0xc8, 0x61, 0x54, 0xee, 0xad, 0x5b, 0x38, 0x77, 0x8e, 0xdd, 0x17, 0x6e, - 0x10, 0xea, 0x66, 0xd8, 0x8c, 0x6b, 0x5a, 0xf2, 0x57, 0xd4, 0xb4, 0x14, 0xe6, 0xc7, 0xff, 0x2e, - 0x94, 0x83, 0xbe, 0x2f, 0x84, 0x1b, 0x0c, 0x3d, 0x19, 0xfe, 0x24, 0x62, 0x12, 0x44, 0x95, 0x5f, - 0xde, 0x73, 0x17, 0x57, 0xe8, 0x9e, 0xed, 0x9e, 0xea, 0x82, 0xa6, 0x29, 0x18, 0xea, 0x20, 0xe5, - 0x58, 0xec, 0x4f, 0x05, 0xc5, 0xf7, 0x39, 0x23, 0x6a, 0x53, 0x16, 0xc5, 0x94, 0x62, 0xe0, 0xf9, - 0xb6, 0x50, 0xa9, 0xc4, 0x92, 0x91, 0x80, 0x20, 0xad, 0x63, 0xba, 0x83, 0x89, 0x39, 0x10, 0xfa, - 0x50, 0x38, 0x6a, 0xd7, 0xff, 0x67, 0x0e, 0x60, 0x5f, 0x8c, 0x8e, 0x85, 0x1f, 0x0c, 0xed, 0x31, - 0x1d, 0x75, 0xd8, 0xba, 0xc8, 0xb5, 0x62, 0xd0, 0x33, 0x7f, 0x6f, 0xaa, 0xfe, 0x7c, 0xfe, 0x70, - 0x32, 0x26, 0x9f, 0x4d, 0xc1, 0xe0, 0xe0, 0x98, 0x52, 0xe8, 0x72, 0x22, 0x1a, 0xff, 0xac, 0x91, - 0x04, 0x51, 0xa5, 0x97, 0x29, 0x45, 0xcb, 0xb5, 0x54, 0x8a, 0x27, 0x6b, 0x44, 0x6d, 0xba, 0xc1, - 0x12, 0x34, 0x26, 0xd2, 0x33, 0x84, 0x2b, 0x9e, 0x47, 0x97, 0xb3, 0x62, 0x10, 0xdf, 0x87, 0xca, - 0xd8, 0xbc, 0x18, 0x09, 0x57, 0xee, 0x0b, 0x39, 0xf4, 0x2c, 0x5d, 0xfb, 0xf3, 0xda, 0xe5, 0x02, - 0x1e, 0x26, 0xd1, 0x8d, 0x69, 0x6a, 0xd4, 0x09, 0x37, 0xa0, 0x55, 0xa2, 0xa6, 0x51, 0xb7, 0xf8, - 0x16, 0x80, 0x7a, 0xa2, 0xc8, 0xa9, 0xb8, 0x38, 0x13, 0x65, 0x8e, 0x44, 0x20, 0xfc, 0x33, 0x5b, - 0xd9, 0x31, 0x15, 0x1b, 0xc6, 0x54, 0x68, 0xf5, 0x26, 0x81, 0xf0, 0x5b, 0x23, 0xd3, 0x76, 0xf4, - 0x04, 0xc7, 0x00, 0xfe, 0x36, 0xdc, 0x08, 0x26, 0xc7, 0xa8, 0x33, 0xc7, 0xa2, 0xe7, 0x1d, 0x88, - 0xe7, 0x81, 0x23, 0xa4, 0x14, 0xbe, 0xae, 0x2f, 0x58, 0xfc, 0xb2, 0x3e, 0x88, 0xdc, 0x1e, 0xfa, - 0xf9, 0x0d, 0x7c, 0x8a, 0x8b, 0x98, 0x22, 0x90, 0xae, 0xf0, 0x62, 0x29, 0xce, 0x60, 0x55, 0x81, - 0x74, 0x01, 0x58, 0x9a, 0x7f, 0x05, 0xbe, 0x34, 0x85, 0x64, 0xa8, 0x83, 0xe0, 0x60, 0xc7, 0x76, - 0x4d, 0xc7, 0xfe, 0x54, 0x1d, 0xcb, 0x67, 0xea, 0x63, 0xa8, 0x4c, 0x0d, 0x1c, 0xdd, 0x26, 0xa4, - 0x27, 0x5d, 0x05, 0xc3, 0x60, 0x55, 0xb5, 0xbb, 0xd2, 0xb7, 0xe9, 0x84, 0x23, 0x82, 0x34, 0x71, - 0x9d, 0x7b, 0x2c, 0xcd, 0xaf, 0x03, 0x53, 0x90, 0xb6, 0x6b, 0x8e, 0xc7, 0x8d, 0xf1, 0xd8, 0x11, - 0x2c, 0x43, 0x37, 0x35, 0x63, 0xa8, 0xaa, 0x42, 0x67, 0xd9, 0xfa, 0xf7, 0xe0, 0x16, 0x8d, 0xcc, - 0x53, 0xe1, 0x47, 0x81, 0xad, 0xee, 0xeb, 0x0d, 0xd8, 0x50, 0x4f, 0x07, 0x9e, 0x54, 0xaf, 0xc9, - 0xd9, 0xe3, 0xb0, 0xa6, 0xc0, 0xe8, 0xeb, 0x74, 0x05, 0xdd, 0xbf, 0x8c, 0x60, 0x11, 0x5e, 0xba, - 0xfe, 0x93, 0x3c, 0xf0, 0x58, 0x21, 0x7a, 0xb6, 0xf0, 0xb7, 0x4d, 0x69, 0x26, 0x32, 0x93, 0x95, - 0x4b, 0xcf, 0xd6, 0x5f, 0x5c, 0xbf, 0x76, 0x13, 0xf2, 0x76, 0x80, 0xa1, 0x98, 0xae, 0x2e, 0xd5, - 0x2d, 0xbe, 0x07, 0x30, 0x16, 0xbe, 0xed, 0x59, 0xa4, 0x41, 0xb9, 0x85, 0xd7, 0x00, 0xe6, 0x85, - 0xda, 0x3c, 0x8c, 0x68, 0x8c, 0x04, 0x3d, 0xca, 0xa1, 0x5a, 0xea, 0xa4, 0x3a, 0x4f, 0x42, 0x27, - 0x41, 0xfc, 0x0d, 0xb8, 0x36, 0xf6, 0xed, 0xbe, 0x50, 0xd3, 0xf1, 0x24, 0xb0, 0x9a, 0xf4, 0xa3, - 0x75, 0x05, 0xc2, 0x5c, 0xf4, 0x0a, 0x35, 0xd0, 0x74, 0x29, 0x40, 0x09, 0xe8, 0x6c, 0x56, 0xdf, - 0x58, 0x56, 0xf5, 0x97, 0x15, 0x63, 0xf1, 0x4b, 0x7e, 0x1f, 0x98, 0x7e, 0xb1, 0x6f, 0xbb, 0x7b, - 0xc2, 0x1d, 0xc8, 0x21, 0x29, 0x77, 0xc5, 0x98, 0x83, 0x93, 0x05, 0x53, 0x3f, 0x0d, 0xa4, 0xce, - 0x6d, 0x4a, 0x46, 0xd4, 0x56, 0xb7, 0xe0, 0x1d, 0xcf, 0xef, 0x4a, 0x5f, 0x17, 0x92, 0x46, 0x6d, - 0xf4, 0x59, 0x02, 0x92, 0xf5, 0xd0, 0xf7, 0xac, 0x09, 0x9d, 0x2a, 0x28, 0x23, 0x36, 0x0b, 0x8e, - 0x31, 0xf7, 0x4d, 0x57, 0x17, 0x11, 0x56, 0x92, 0x98, 0x11, 0x98, 0x62, 0x30, 0x2f, 0x88, 0x19, - 0xae, 0xeb, 0x18, 0x2c, 0x01, 0xd3, 0x38, 0x31, 0x2b, 0x16, 0xe1, 0xc4, 0x7c, 0xa8, 0xff, 0x96, - 0xef, 0xd9, 0x56, 0xcc, 0x6b, 0x43, 0x95, 0x78, 0xce, 0xc2, 0x13, 0xb8, 0x31, 0x4f, 0x3e, 0x85, - 0x1b, 0xc1, 0xeb, 0x3f, 0x4c, 0x01, 0xc4, 0x93, 0x8f, 0x2a, 0x1f, 0xb7, 0xe2, 0x25, 0x7e, 0x0b, - 0xae, 0x25, 0xc1, 0x74, 0x53, 0x80, 0x0e, 0x78, 0x39, 0xac, 0xc5, 0x2f, 0xb6, 0xcd, 0x8b, 0x80, - 0xa5, 0xf5, 0x9d, 0x61, 0x0d, 0x7b, 0x26, 0x04, 0x55, 0xd5, 0x5d, 0x07, 0x16, 0x03, 0xe9, 0x22, - 0x58, 0xc0, 0xb2, 0xd3, 0xa8, 0x1f, 0x0b, 0xd3, 0x0f, 0x58, 0xae, 0xbe, 0x0b, 0x79, 0x75, 0xb8, - 0xb4, 0xe0, 0x58, 0xf8, 0xe5, 0x6a, 0x3c, 0xfe, 0x7a, 0x0a, 0x60, 0x5b, 0x95, 0xf3, 0xe2, 0x2e, - 0xbe, 0xe0, 0xb4, 0x7d, 0x91, 0x47, 0x65, 0x5a, 0x16, 0x95, 0x45, 0x67, 0xa2, 0x1f, 0x9c, 0xc1, - 0x26, 0x6a, 0x8e, 0x19, 0x56, 0x4e, 0xa9, 0x35, 0x17, 0xb5, 0xd5, 0x06, 0xd2, 0xf4, 0x5c, 0x57, - 0xf4, 0x71, 0xfb, 0x89, 0x36, 0x90, 0x08, 0x54, 0xff, 0xb7, 0x05, 0x28, 0x37, 0x87, 0xa6, 0xdc, - 0x17, 0x41, 0x60, 0x0e, 0xc4, 0x9c, 0x2c, 0x55, 0x28, 0x78, 0xbe, 0x25, 0xfc, 0xf8, 0x32, 0x97, - 0x6e, 0x26, 0x6b, 0x0c, 0x32, 0xd3, 0x35, 0x06, 0xb7, 0xa1, 0xa4, 0x4e, 0x30, 0xac, 0x86, 0x32, - 0x03, 0x19, 0x23, 0x06, 0xe0, 0x5e, 0x3d, 0xf2, 0x2c, 0x32, 0x46, 0x0d, 0x95, 0xfc, 0xcf, 0x18, - 0x09, 0x88, 0x2a, 0xe9, 0x18, 0x3b, 0x17, 0x3d, 0x4f, 0xcb, 0xd4, 0xb6, 0xe2, 0x9b, 0xaf, 0xd3, - 0x70, 0xde, 0x84, 0xc2, 0x48, 0x35, 0xf4, 0x41, 0xc6, 0x6c, 0xca, 0x3f, 0xd1, 0xb5, 0x4d, 0xfd, - 0x57, 0x5f, 0x3e, 0x31, 0x42, 0x4a, 0x0c, 0xd1, 0x4d, 0x29, 0xcd, 0xfe, 0x70, 0xa4, 0x4d, 0x44, - 0x66, 0xc1, 0x99, 0x66, 0x92, 0x51, 0x23, 0xc2, 0x36, 0x92, 0x94, 0x7c, 0x0b, 0x4a, 0xbe, 0x30, - 0xa7, 0x8e, 0x55, 0x5f, 0xb9, 0x82, 0x8d, 0x11, 0xe2, 0x1a, 0x31, 0x59, 0xed, 0xc7, 0x29, 0x58, - 0x9b, 0x16, 0xf4, 0x4f, 0xe3, 0x37, 0xc3, 0xbe, 0x15, 0xff, 0x66, 0xd8, 0xe7, 0xf8, 0xfd, 0xad, - 0xdf, 0x4e, 0x01, 0xc4, 0x63, 0x80, 0x26, 0x5f, 0xfd, 0xb6, 0x51, 0xe8, 0x84, 0xaa, 0x16, 0xdf, - 0x9d, 0xba, 0x10, 0xff, 0xf6, 0x52, 0x03, 0x9a, 0x78, 0x4c, 0xd4, 0x28, 0x3f, 0x80, 0xb5, 0x69, - 0x38, 0xfd, 0x5a, 0x51, 0x7b, 0xaf, 0xa5, 0x52, 0x1c, 0xed, 0xfd, 0xc6, 0xa3, 0x96, 0xbe, 0xec, - 0xd3, 0x3e, 0x78, 0xcc, 0xd2, 0xb5, 0x3f, 0x4a, 0x41, 0x29, 0x1a, 0x5e, 0xfe, 0xdd, 0xe4, 0xbc, - 0xa8, 0x3a, 0x89, 0xb7, 0x96, 0x99, 0x97, 0xf8, 0xa9, 0xe5, 0x4a, 0xff, 0x22, 0x39, 0x4d, 0x1e, - 0xac, 0x4d, 0xbf, 0x5c, 0x60, 0x13, 0x1e, 0x4d, 0xdb, 0x84, 0x37, 0x97, 0xfa, 0x64, 0x18, 0x79, - 0xed, 0xd9, 0x81, 0xd4, 0xe6, 0xe2, 0xfd, 0xf4, 0x7b, 0xa9, 0xda, 0x5d, 0x58, 0x4d, 0xbe, 0x9a, - 0xbf, 0xd1, 0x77, 0xff, 0x8f, 0x32, 0xb0, 0x36, 0x5d, 0x6a, 0x40, 0xf7, 0x87, 0x54, 0x99, 0x4b, - 0xc7, 0xb1, 0x12, 0x65, 0xdd, 0x8c, 0xaf, 0x43, 0x59, 0xc7, 0x76, 0x04, 0xd8, 0xa0, 0x24, 0x8a, - 0x37, 0x12, 0xec, 0x6e, 0xf2, 0x77, 0x11, 0xdf, 0xe0, 0x10, 0xde, 0xec, 0x62, 0x63, 0x5e, 0xd2, - 0xbf, 0x10, 0xf5, 0x2b, 0x69, 0x5e, 0x49, 0x14, 0x17, 0xff, 0x08, 0x1d, 0x9b, 0xf5, 0xad, 0x89, - 0x6b, 0x39, 0xc2, 0x8a, 0xa0, 0x3f, 0x4e, 0x42, 0xa3, 0xea, 0xe0, 0x5f, 0xc9, 0xf2, 0x35, 0x28, - 0x75, 0x27, 0xc7, 0xba, 0x32, 0xf8, 0x2f, 0x65, 0xf9, 0x4d, 0xd8, 0xd0, 0x58, 0x71, 0x89, 0x1f, - 0xfb, 0xcb, 0x68, 0x82, 0xd7, 0x1a, 0x6a, 0xbc, 0xb4, 0xa0, 0xec, 0xaf, 0x64, 0x51, 0x04, 0xba, - 0x30, 0xfc, 0x57, 0x89, 0x4f, 0x74, 0xbd, 0x82, 0xfd, 0x6a, 0x96, 0xaf, 0x03, 0x74, 0x7b, 0xd1, - 0x87, 0x7e, 0x3d, 0xcb, 0xcb, 0x90, 0xef, 0xf6, 0x88, 0xdb, 0x0f, 0xb3, 0xfc, 0x06, 0xb0, 0xf8, - 0xad, 0x2e, 0x7c, 0xfc, 0x0d, 0x25, 0x4c, 0x54, 0xc9, 0xf8, 0x37, 0xb2, 0xd8, 0xaf, 0x70, 0x94, - 0xd9, 0xdf, 0xcc, 0x72, 0x06, 0xe5, 0x44, 0x6a, 0x8e, 0xfd, 0xad, 0x2c, 0xe7, 0x50, 0xd9, 0xb7, - 0x83, 0xc0, 0x76, 0x07, 0xba, 0x07, 0xbf, 0x46, 0x5f, 0xde, 0x89, 0x6e, 0x88, 0xb0, 0xdf, 0xcc, - 0xf2, 0x5b, 0xc0, 0x93, 0xc7, 0x11, 0xfa, 0xc5, 0xdf, 0x26, 0x6a, 0x65, 0xf6, 0x03, 0x0d, 0xfb, - 0x3b, 0x44, 0x8d, 0x9a, 0xa0, 0x01, 0xbf, 0x45, 0x03, 0xd2, 0x8c, 0x4b, 0x25, 0x35, 0xfc, 0x47, - 0x44, 0x1c, 0x4e, 0xa6, 0x82, 0xfd, 0x38, 0x7b, 0xff, 0x27, 0x94, 0x4e, 0x4e, 0x56, 0x1c, 0xf1, - 0x55, 0x28, 0x3a, 0x9e, 0x3b, 0x90, 0xea, 0xf7, 0x28, 0x2b, 0x50, 0x0a, 0x86, 0x9e, 0x2f, 0xa9, - 0x49, 0x57, 0xd8, 0x5c, 0xba, 0xcc, 0xac, 0x6a, 0xcb, 0x55, 0x90, 0xa2, 0xd2, 0x73, 0xd2, 0x1c, - 0xb0, 0x72, 0x54, 0xe4, 0x99, 0x8d, 0x0a, 0x51, 0xe9, 0x52, 0x75, 0x78, 0x69, 0x95, 0xe5, 0x11, - 0x75, 0xe2, 0x3b, 0xaa, 0x20, 0x55, 0xa0, 0x83, 0xaa, 0x7e, 0x78, 0x6e, 0x3c, 0x44, 0x3f, 0xb8, - 0xa4, 0xa0, 0xde, 0xf7, 0x6d, 0x75, 0x1d, 0x52, 0xd7, 0x77, 0x59, 0x28, 0x47, 0x54, 0xc2, 0xc0, - 0xc4, 0xfd, 0xbf, 0x9b, 0x82, 0xd5, 0xf0, 0x2a, 0xb1, 0x3d, 0xb0, 0x5d, 0x55, 0xd2, 0x1a, 0xfe, - 0xca, 0x67, 0xdf, 0xb1, 0xc7, 0xe1, 0xaf, 0xe6, 0xad, 0x43, 0xd9, 0xf2, 0xcd, 0x41, 0xc3, 0xb5, - 0xb6, 0x7d, 0x6f, 0xac, 0xc4, 0x56, 0x07, 0x4e, 0xaa, 0x94, 0xf6, 0xb9, 0x38, 0x46, 0xf4, 0xb1, - 0xf0, 0x59, 0x96, 0x6a, 0xc7, 0x86, 0xa6, 0x6f, 0xbb, 0x83, 0xd6, 0xb9, 0x14, 0x6e, 0xa0, 0x4a, - 0x6a, 0xcb, 0x50, 0x98, 0x04, 0xa2, 0x6f, 0x06, 0x82, 0xe5, 0xb1, 0x71, 0x3c, 0xb1, 0x1d, 0x69, - 0xbb, 0xea, 0xc7, 0xea, 0xa2, 0x9a, 0xd9, 0x22, 0xf6, 0xcc, 0x1c, 0xdb, 0xac, 0x74, 0xff, 0xf7, - 0x53, 0x50, 0x26, 0xb5, 0x88, 0x53, 0xaa, 0xb1, 0xcb, 0x51, 0x86, 0xc2, 0x5e, 0xf4, 0xab, 0x65, - 0x79, 0x48, 0x77, 0x4e, 0x55, 0x4a, 0x55, 0xab, 0x85, 0xba, 0x11, 0xa8, 0x7e, 0xc0, 0x2c, 0xcb, - 0xbf, 0x00, 0x37, 0x0c, 0x31, 0xf2, 0xa4, 0x78, 0x66, 0xda, 0x32, 0x79, 0xc9, 0x24, 0x87, 0xd1, - 0x89, 0x7a, 0x15, 0xde, 0x2a, 0xc9, 0x53, 0x74, 0x82, 0x9f, 0x0d, 0x21, 0x05, 0xec, 0x3d, 0x41, - 0x74, 0xb8, 0x52, 0x8c, 0x50, 0x3e, 0xf2, 0x6c, 0x17, 0xbf, 0x46, 0xf7, 0x50, 0x09, 0x42, 0xb9, - 0x79, 0x04, 0xc1, 0xfd, 0x03, 0xb8, 0xb9, 0x38, 0xa3, 0xac, 0x6e, 0xa8, 0xd2, 0x4f, 0xe5, 0xd2, - 0xb5, 0x83, 0x67, 0xbe, 0xad, 0x2e, 0x1a, 0x96, 0x20, 0xd7, 0x79, 0xee, 0x92, 0x5a, 0x6c, 0x40, - 0xe5, 0xc0, 0x4b, 0xd0, 0xb0, 0xcc, 0xfd, 0xfe, 0xd4, 0x21, 0x40, 0x3c, 0x28, 0xa1, 0x10, 0x2b, - 0x89, 0x2b, 0x35, 0x29, 0x95, 0x5e, 0xa6, 0xff, 0x76, 0xa0, 0x6e, 0xef, 0xeb, 0xe4, 0xbb, 0xa5, - 0x6e, 0xef, 0x47, 0x62, 0x66, 0xd5, 0xcf, 0x18, 0xb9, 0x7d, 0xe1, 0x08, 0x8b, 0xe5, 0xee, 0xbf, - 0x07, 0xeb, 0xba, 0xab, 0x7d, 0x11, 0x04, 0xe1, 0x95, 0x94, 0x43, 0xdf, 0x3e, 0x53, 0xbf, 0x10, - 0xb0, 0x0a, 0xc5, 0x43, 0xe1, 0x07, 0x9e, 0x4b, 0xbf, 0x8e, 0x00, 0x90, 0xef, 0x0e, 0x4d, 0x1f, - 0xbf, 0x71, 0xbf, 0x09, 0x25, 0xba, 0xa2, 0xf2, 0xd8, 0x76, 0x2d, 0xec, 0xc9, 0x96, 0x2e, 0xc4, - 0xa6, 0x9f, 0xa1, 0x39, 0xa3, 0xfe, 0x15, 0xd5, 0x0f, 0x76, 0xb2, 0x34, 0xbf, 0x09, 0x1c, 0xa3, - 0xe7, 0x91, 0x49, 0x77, 0x1e, 0x9d, 0x0b, 0xf5, 0xe3, 0xae, 0x99, 0xfb, 0xdf, 0x06, 0xae, 0x72, - 0x40, 0x96, 0x38, 0xb7, 0xdd, 0x41, 0x74, 0x9d, 0x1a, 0xe8, 0xb7, 0x11, 0x2c, 0x71, 0x4e, 0x21, - 0x56, 0x19, 0x0a, 0x61, 0x23, 0xfc, 0x85, 0x86, 0x1d, 0x6f, 0xe2, 0xa2, 0x14, 0x4f, 0xe1, 0xba, - 0xd2, 0x19, 0x14, 0x8b, 0x2e, 0xd4, 0x5d, 0x1a, 0x98, 0xaa, 0xfb, 0x45, 0x72, 0x12, 0x44, 0xb8, - 0x2c, 0x85, 0x82, 0x45, 0x41, 0x5d, 0x0c, 0x4f, 0xdf, 0xaf, 0xc3, 0xb5, 0x05, 0x91, 0x35, 0x59, - 0x69, 0x15, 0x5f, 0xb0, 0x95, 0xfb, 0x1f, 0xc2, 0x86, 0xb2, 0x2b, 0x07, 0xea, 0xca, 0x53, 0xb8, - 0x45, 0x3e, 0x6b, 0xef, 0xb4, 0xd5, 0xd0, 0x35, 0x5b, 0x7b, 0x7b, 0x4f, 0xf6, 0x1a, 0x06, 0x4b, - 0xd1, 0x04, 0x77, 0x7a, 0x47, 0xcd, 0xce, 0xc1, 0x41, 0xab, 0xd9, 0x6b, 0x6d, 0xb3, 0xf4, 0xd6, - 0xfd, 0x7f, 0xf7, 0xd9, 0x9d, 0xd4, 0x4f, 0x3f, 0xbb, 0x93, 0xfa, 0xaf, 0x9f, 0xdd, 0x49, 0xfd, - 0xf0, 0x67, 0x77, 0x56, 0x7e, 0xfa, 0xb3, 0x3b, 0x2b, 0xff, 0xf9, 0x67, 0x77, 0x56, 0x3e, 0x61, - 0xb3, 0xff, 0x81, 0xe4, 0x38, 0x4f, 0x2e, 0xed, 0x5b, 0xff, 0x37, 0x00, 0x00, 0xff, 0xff, 0x50, - 0x1f, 0x4c, 0x66, 0x9c, 0x64, 0x00, 0x00, + // 8986 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x7d, 0x5b, 0x8c, 0x64, 0xd9, + 0x91, 0x50, 0xe5, 0x3b, 0x33, 0xb2, 0xb2, 0xea, 0xd4, 0xe9, 0x57, 0x3a, 0xdd, 0x6e, 0xda, 0xe9, + 0xf1, 0x4c, 0xbb, 0x3d, 0xae, 0x9e, 0xe9, 0x99, 0xf1, 0x8c, 0xc7, 0x9e, 0xb1, 0xb3, 0xb2, 0xb2, + 0xba, 0x72, 0xba, 0xaa, 0xb2, 0x7c, 0x33, 0xbb, 0xdb, 0x33, 0xda, 0xa5, 0xb8, 0x95, 0xf7, 0x54, + 0xe6, 0x75, 0xdd, 0xbc, 0x37, 0x7d, 0xef, 0xc9, 0xea, 0x2a, 0x0b, 0xd0, 0xf2, 0xda, 0x65, 0xff, + 0x0c, 0x62, 0x81, 0x15, 0x42, 0x6b, 0x7f, 0x20, 0x21, 0x76, 0x25, 0x04, 0x92, 0x05, 0x0b, 0xac, + 0x04, 0x2b, 0x21, 0x90, 0x90, 0x90, 0x81, 0x1f, 0xfe, 0x40, 0x63, 0x89, 0x1f, 0x04, 0xab, 0xe5, + 0xcb, 0x42, 0x7c, 0xa0, 0x88, 0x73, 0xee, 0x23, 0x1f, 0x55, 0x9d, 0x3d, 0xbb, 0x8b, 0xf8, 0xaa, + 0x7b, 0xe2, 0x46, 0xc4, 0x3d, 0x8f, 0x38, 0x71, 0x22, 0xe2, 0x44, 0x64, 0xc1, 0x2b, 0xe3, 0xd3, + 0xc1, 0x03, 0xc7, 0x3e, 0x7e, 0x30, 0x3e, 0x7e, 0x30, 0xf2, 0x2c, 0xe1, 0x3c, 0x18, 0xfb, 0x9e, + 0xf4, 0x02, 0xd5, 0x08, 0x36, 0xa9, 0xc5, 0x2b, 0xa6, 0x7b, 0x21, 0x2f, 0xc6, 0x62, 0x93, 0xa0, + 0xb5, 0xdb, 0x03, 0xcf, 0x1b, 0x38, 0x42, 0xa1, 0x1e, 0x4f, 0x4e, 0x1e, 0x04, 0xd2, 0x9f, 0xf4, + 0xa5, 0x42, 0xae, 0xff, 0x2c, 0x0b, 0x37, 0xbb, 0x23, 0xd3, 0x97, 0x5b, 0x8e, 0xd7, 0x3f, 0xed, + 0xba, 0xe6, 0x38, 0x18, 0x7a, 0x72, 0xcb, 0x0c, 0x04, 0x7f, 0x1d, 0xf2, 0xc7, 0x08, 0x0c, 0xaa, + 0xa9, 0xbb, 0x99, 0x7b, 0xe5, 0x87, 0xd7, 0x37, 0xa7, 0x18, 0x6f, 0x12, 0x85, 0xa1, 0x71, 0xf8, + 0x9b, 0x50, 0xb0, 0x84, 0x34, 0x6d, 0x27, 0xa8, 0xa6, 0xef, 0xa6, 0xee, 0x95, 0x1f, 0xde, 0xda, + 0x54, 0x1f, 0xde, 0x0c, 0x3f, 0xbc, 0xd9, 0xa5, 0x0f, 0x1b, 0x21, 0x1e, 0x7f, 0x17, 0x8a, 0x27, + 0xb6, 0x23, 0x1e, 0x8b, 0x8b, 0xa0, 0x9a, 0xb9, 0x92, 0x66, 0x2b, 0x5d, 0x4d, 0x19, 0x11, 0x32, + 0x6f, 0xc2, 0x9a, 0x38, 0x97, 0xbe, 0x69, 0x08, 0xc7, 0x94, 0xb6, 0xe7, 0x06, 0xd5, 0x2c, 0xf5, + 0xf0, 0xd6, 0x4c, 0x0f, 0xc3, 0xf7, 0x44, 0x3e, 0x43, 0xc2, 0xef, 0x42, 0xd9, 0x3b, 0xfe, 0xbe, + 0xe8, 0xcb, 0xde, 0xc5, 0x58, 0x04, 0xd5, 0xdc, 0xdd, 0xcc, 0xbd, 0x92, 0x91, 0x04, 0xf1, 0x6f, + 0x40, 0xb9, 0xef, 0x39, 0x8e, 0xe8, 0xab, 0x6f, 0xe4, 0xaf, 0x1e, 0x56, 0x12, 0x97, 0xbf, 0x0d, + 0x37, 0x7c, 0x31, 0xf2, 0xce, 0x84, 0xd5, 0x8c, 0xa0, 0x34, 0xce, 0x22, 0x7d, 0x66, 0xf1, 0x4b, + 0xde, 0x80, 0x8a, 0xaf, 0xfb, 0xb7, 0x67, 0xbb, 0xa7, 0x41, 0xb5, 0x40, 0xc3, 0xfa, 0xfc, 0x25, + 0xc3, 0x42, 0x1c, 0x63, 0x9a, 0x82, 0x33, 0xc8, 0x9c, 0x8a, 0x8b, 0x6a, 0xe9, 0x6e, 0xea, 0x5e, + 0xc9, 0xc0, 0x47, 0xfe, 0x3e, 0x54, 0x3d, 0xdf, 0x1e, 0xd8, 0xae, 0xe9, 0x34, 0x7d, 0x61, 0x4a, + 0x61, 0xf5, 0xec, 0x91, 0x08, 0xa4, 0x39, 0x1a, 0x57, 0xe1, 0x6e, 0xea, 0x5e, 0xc6, 0xb8, 0xf4, + 0x3d, 0x7f, 0x4b, 0xad, 0x50, 0xdb, 0x3d, 0xf1, 0xaa, 0x65, 0x3d, 0xfc, 0xe9, 0xbe, 0xec, 0xe8, + 0xd7, 0x46, 0x84, 0x58, 0xff, 0x45, 0x1a, 0xf2, 0x5d, 0x61, 0xfa, 0xfd, 0x61, 0xed, 0xd7, 0x52, + 0x90, 0x37, 0x44, 0x30, 0x71, 0x24, 0xaf, 0x41, 0x51, 0xcd, 0x6d, 0xdb, 0xaa, 0xa6, 0xa8, 0x77, + 0x51, 0xfb, 0xb3, 0xc8, 0xce, 0x26, 0x64, 0x47, 0x42, 0x9a, 0xd5, 0x0c, 0xcd, 0x50, 0x6d, 0xa6, + 0x57, 0xea, 0xf3, 0x9b, 0xfb, 0x42, 0x9a, 0x06, 0xe1, 0xd5, 0x7e, 0x9e, 0x82, 0x2c, 0x36, 0xf9, + 0x6d, 0x28, 0x0d, 0xed, 0xc1, 0xd0, 0xb1, 0x07, 0x43, 0xa9, 0x3b, 0x12, 0x03, 0xf8, 0x87, 0xb0, + 0x1e, 0x35, 0x0c, 0xd3, 0x1d, 0x08, 0xec, 0xd1, 0x22, 0xe1, 0xa7, 0x97, 0xc6, 0x2c, 0x32, 0xaf, + 0x42, 0x81, 0xf6, 0x43, 0xdb, 0x22, 0x89, 0x2e, 0x19, 0x61, 0x13, 0xc5, 0x2d, 0x5c, 0xa9, 0xc7, + 0xe2, 0xa2, 0x9a, 0xa5, 0xb7, 0x49, 0x10, 0x6f, 0xc0, 0x7a, 0xd8, 0xdc, 0xd6, 0xb3, 0x91, 0xbb, + 0x7a, 0x36, 0x66, 0xf1, 0xeb, 0x9f, 0xee, 0x41, 0x8e, 0xb6, 0x25, 0x5f, 0x83, 0xb4, 0x1d, 0x4e, + 0x74, 0xda, 0xb6, 0xf8, 0x03, 0xc8, 0x9f, 0xd8, 0xc2, 0xb1, 0x5e, 0x38, 0xc3, 0x1a, 0x8d, 0xb7, + 0x60, 0xd5, 0x17, 0x81, 0xf4, 0x6d, 0x2d, 0xfd, 0x6a, 0x83, 0x7e, 0x71, 0x91, 0x0e, 0xd8, 0x34, + 0x12, 0x88, 0xc6, 0x14, 0x19, 0x0e, 0xbb, 0x3f, 0xb4, 0x1d, 0xcb, 0x17, 0x6e, 0xdb, 0x52, 0xfb, + 0xb4, 0x64, 0x24, 0x41, 0xfc, 0x1e, 0xac, 0x1f, 0x9b, 0xfd, 0xd3, 0x81, 0xef, 0x4d, 0x5c, 0xdc, + 0x10, 0x9e, 0x4f, 0xc3, 0x2e, 0x19, 0xb3, 0x60, 0xfe, 0x06, 0xe4, 0x4c, 0xc7, 0x1e, 0xb8, 0xb4, + 0x13, 0xd7, 0xe6, 0x16, 0x5d, 0xf5, 0xa5, 0x81, 0x18, 0x86, 0x42, 0xe4, 0xbb, 0x50, 0x39, 0x13, + 0xbe, 0xb4, 0xfb, 0xa6, 0x43, 0xf0, 0x6a, 0x81, 0x28, 0xeb, 0x0b, 0x29, 0x9f, 0x26, 0x31, 0x8d, + 0x69, 0x42, 0xde, 0x06, 0x08, 0x50, 0x4d, 0xd2, 0x72, 0xea, 0xbd, 0xf0, 0xda, 0x42, 0x36, 0x4d, + 0xcf, 0x95, 0xc2, 0x95, 0x9b, 0xdd, 0x08, 0x7d, 0x77, 0xc5, 0x48, 0x10, 0xf3, 0x77, 0x21, 0x2b, + 0xc5, 0xb9, 0xac, 0xae, 0x5d, 0x31, 0xa3, 0x21, 0x93, 0x9e, 0x38, 0x97, 0xbb, 0x2b, 0x06, 0x11, + 0x20, 0x21, 0x6e, 0xb2, 0xea, 0xfa, 0x12, 0x84, 0xb8, 0x2f, 0x91, 0x10, 0x09, 0xf8, 0x07, 0x90, + 0x77, 0xcc, 0x0b, 0x6f, 0x22, 0xab, 0x8c, 0x48, 0xbf, 0x74, 0x25, 0xe9, 0x1e, 0xa1, 0xee, 0xae, + 0x18, 0x9a, 0x88, 0xbf, 0x0d, 0x19, 0xcb, 0x3e, 0xab, 0x6e, 0x10, 0xed, 0xdd, 0x2b, 0x69, 0xb7, + 0xed, 0xb3, 0xdd, 0x15, 0x03, 0xd1, 0x79, 0x13, 0x8a, 0xc7, 0x9e, 0x77, 0x3a, 0x32, 0xfd, 0xd3, + 0x2a, 0x27, 0xd2, 0x2f, 0x5f, 0x49, 0xba, 0xa5, 0x91, 0x77, 0x57, 0x8c, 0x88, 0x10, 0x87, 0x6c, + 0xf7, 0x3d, 0xb7, 0x7a, 0x6d, 0x89, 0x21, 0xb7, 0xfb, 0x9e, 0x8b, 0x43, 0x46, 0x02, 0x24, 0x74, + 0x6c, 0xf7, 0xb4, 0x7a, 0x7d, 0x09, 0x42, 0xd4, 0x9c, 0x48, 0x88, 0x04, 0xd8, 0x6d, 0xcb, 0x94, + 0xe6, 0x99, 0x2d, 0x9e, 0x57, 0x6f, 0x2c, 0xd1, 0xed, 0x6d, 0x8d, 0x8c, 0xdd, 0x0e, 0x09, 0x91, + 0x49, 0xb8, 0x35, 0xab, 0x37, 0x97, 0x60, 0x12, 0x6a, 0x74, 0x64, 0x12, 0x12, 0xf2, 0x3f, 0x0d, + 0x1b, 0x27, 0xc2, 0x94, 0x13, 0x5f, 0x58, 0xf1, 0x41, 0x77, 0x8b, 0xb8, 0x6d, 0x5e, 0xbd, 0xf6, + 0xb3, 0x54, 0xbb, 0x2b, 0xc6, 0x3c, 0x2b, 0xfe, 0x3e, 0xe4, 0x1c, 0x53, 0x8a, 0xf3, 0x6a, 0x95, + 0x78, 0xd6, 0x5f, 0x20, 0x14, 0x52, 0x9c, 0xef, 0xae, 0x18, 0x8a, 0x84, 0x7f, 0x0f, 0xd6, 0xa5, + 0x79, 0xec, 0x88, 0xce, 0x89, 0x46, 0x08, 0xaa, 0x9f, 0x23, 0x2e, 0xaf, 0x5f, 0x2d, 0xce, 0xd3, + 0x34, 0xbb, 0x2b, 0xc6, 0x2c, 0x1b, 0xec, 0x15, 0x81, 0xaa, 0xb5, 0x25, 0x7a, 0x45, 0xfc, 0xb0, + 0x57, 0x44, 0xc2, 0xf7, 0xa0, 0x4c, 0x0f, 0x4d, 0xcf, 0x99, 0x8c, 0xdc, 0xea, 0xe7, 0x89, 0xc3, + 0xbd, 0x17, 0x73, 0x50, 0xf8, 0xbb, 0x2b, 0x46, 0x92, 0x1c, 0x17, 0x91, 0x9a, 0x86, 0xf7, 0xbc, + 0x7a, 0x7b, 0x89, 0x45, 0xec, 0x69, 0x64, 0x5c, 0xc4, 0x90, 0x10, 0xb7, 0xde, 0x73, 0xdb, 0x1a, + 0x08, 0x59, 0xfd, 0xc2, 0x12, 0x5b, 0xef, 0x19, 0xa1, 0xe2, 0xd6, 0x53, 0x44, 0x28, 0xc6, 0xfd, + 0xa1, 0x29, 0xab, 0x77, 0x96, 0x10, 0xe3, 0xe6, 0xd0, 0x24, 0x5d, 0x81, 0x04, 0xb5, 0x1f, 0xc2, + 0x6a, 0x52, 0x2b, 0x73, 0x0e, 0x59, 0x5f, 0x98, 0xea, 0x44, 0x28, 0x1a, 0xf4, 0x8c, 0x30, 0x61, + 0xd9, 0x92, 0x4e, 0x84, 0xa2, 0x41, 0xcf, 0xfc, 0x26, 0xe4, 0x95, 0x6d, 0x42, 0x0a, 0xbf, 0x68, + 0xe8, 0x16, 0xe2, 0x5a, 0xbe, 0x39, 0xa0, 0x73, 0xab, 0x68, 0xd0, 0x33, 0xe2, 0x5a, 0xbe, 0x37, + 0xee, 0xb8, 0xa4, 0xb0, 0x8b, 0x86, 0x6e, 0xd5, 0xfe, 0xf5, 0x07, 0x50, 0xd0, 0x9d, 0xaa, 0xfd, + 0xdd, 0x14, 0xe4, 0x95, 0x42, 0xe1, 0xdf, 0x86, 0x5c, 0x20, 0x2f, 0x1c, 0x41, 0x7d, 0x58, 0x7b, + 0xf8, 0x95, 0x25, 0x94, 0xd0, 0x66, 0x17, 0x09, 0x0c, 0x45, 0x57, 0x37, 0x20, 0x47, 0x6d, 0x5e, + 0x80, 0x8c, 0xe1, 0x3d, 0x67, 0x2b, 0x1c, 0x20, 0xaf, 0x16, 0x8b, 0xa5, 0x10, 0xb8, 0x6d, 0x9f, + 0xb1, 0x34, 0x02, 0x77, 0x85, 0x69, 0x09, 0x9f, 0x65, 0x78, 0x05, 0x4a, 0xe1, 0xb2, 0x04, 0x2c, + 0xcb, 0x19, 0xac, 0x26, 0x16, 0x3c, 0x60, 0xb9, 0xda, 0xff, 0xca, 0x42, 0x16, 0xf7, 0x3f, 0x7f, + 0x05, 0x2a, 0xd2, 0xf4, 0x07, 0x42, 0x19, 0xc2, 0x91, 0x91, 0x32, 0x0d, 0xe4, 0x1f, 0x84, 0x63, + 0x48, 0xd3, 0x18, 0x5e, 0x7b, 0xa1, 0x5e, 0x99, 0x1a, 0x41, 0xe2, 0x14, 0xce, 0x2c, 0x77, 0x0a, + 0xef, 0x40, 0x11, 0xd5, 0x59, 0xd7, 0xfe, 0xa1, 0xa0, 0xa9, 0x5f, 0x7b, 0x78, 0xff, 0xc5, 0x9f, + 0x6c, 0x6b, 0x0a, 0x23, 0xa2, 0xe5, 0x6d, 0x28, 0xf5, 0x4d, 0xdf, 0xa2, 0xce, 0xd0, 0x6a, 0xad, + 0x3d, 0xfc, 0xea, 0x8b, 0x19, 0x35, 0x43, 0x12, 0x23, 0xa6, 0xe6, 0x1d, 0x28, 0x5b, 0x22, 0xe8, + 0xfb, 0xf6, 0x98, 0xd4, 0x9b, 0x3a, 0x8b, 0xbf, 0xf6, 0x62, 0x66, 0xdb, 0x31, 0x91, 0x91, 0xe4, + 0x80, 0x16, 0x99, 0x1f, 0xe9, 0xb7, 0x02, 0x19, 0x08, 0x31, 0xa0, 0xfe, 0x2e, 0x14, 0xc3, 0xf1, + 0xf0, 0x55, 0x28, 0xe2, 0xdf, 0x03, 0xcf, 0x15, 0x6c, 0x05, 0xd7, 0x16, 0x5b, 0xdd, 0x91, 0xe9, + 0x38, 0x2c, 0xc5, 0xd7, 0x00, 0xb0, 0xb9, 0x2f, 0x2c, 0x7b, 0x32, 0x62, 0xe9, 0xfa, 0x37, 0x43, + 0x69, 0x29, 0x42, 0xf6, 0xd0, 0x1c, 0x20, 0xc5, 0x2a, 0x14, 0x43, 0x75, 0xcd, 0x52, 0x48, 0xbf, + 0x6d, 0x06, 0xc3, 0x63, 0xcf, 0xf4, 0x2d, 0x96, 0xe6, 0x65, 0x28, 0x34, 0xfc, 0xfe, 0xd0, 0x3e, + 0x13, 0x2c, 0x53, 0x7f, 0x00, 0xe5, 0x44, 0x7f, 0x91, 0x85, 0xfe, 0x68, 0x09, 0x72, 0x0d, 0xcb, + 0x12, 0x16, 0x4b, 0x21, 0x81, 0x1e, 0x20, 0x4b, 0xd7, 0xbf, 0x0a, 0xa5, 0x68, 0xb6, 0x10, 0x1d, + 0x0f, 0x6e, 0xb6, 0x82, 0x4f, 0x08, 0x66, 0x29, 0x94, 0xca, 0xb6, 0xeb, 0xd8, 0xae, 0x60, 0xe9, + 0xda, 0x9f, 0x21, 0x51, 0xe5, 0xdf, 0x9a, 0xde, 0x10, 0xaf, 0xbe, 0xe8, 0x64, 0x9d, 0xde, 0x0d, + 0x9f, 0x4f, 0x8c, 0x6f, 0xcf, 0xa6, 0xce, 0x15, 0x21, 0xbb, 0xed, 0xc9, 0x80, 0xa5, 0x6a, 0xff, + 0x3d, 0x0d, 0xc5, 0xf0, 0x40, 0x45, 0x9f, 0x60, 0xe2, 0x3b, 0x5a, 0xa0, 0xf1, 0x91, 0x5f, 0x87, + 0x9c, 0xb4, 0xa5, 0x16, 0xe3, 0x92, 0xa1, 0x1a, 0x68, 0xab, 0x25, 0x57, 0x56, 0x19, 0xb0, 0xb3, + 0x4b, 0x65, 0x8f, 0xcc, 0x81, 0xd8, 0x35, 0x83, 0xa1, 0x36, 0x61, 0x63, 0x00, 0xd2, 0x9f, 0x98, + 0x67, 0x28, 0x73, 0xf4, 0x5e, 0x59, 0x71, 0x49, 0x10, 0x7f, 0x0b, 0xb2, 0x38, 0x40, 0x2d, 0x34, + 0x7f, 0x6a, 0x66, 0xc0, 0x28, 0x26, 0x87, 0xbe, 0xc0, 0xe5, 0xd9, 0x44, 0x0f, 0xcc, 0x20, 0x64, + 0xfe, 0x2a, 0xac, 0xa9, 0x4d, 0xd8, 0x09, 0xfd, 0x87, 0x02, 0x71, 0x9e, 0x81, 0xf2, 0x06, 0x4e, + 0xa7, 0x29, 0x45, 0xb5, 0xb8, 0x84, 0x7c, 0x87, 0x93, 0xb3, 0xd9, 0x45, 0x12, 0x43, 0x51, 0xd6, + 0xdf, 0xc1, 0x39, 0x35, 0xa5, 0xc0, 0x65, 0x6e, 0x8d, 0xc6, 0xf2, 0x42, 0x09, 0xcd, 0x8e, 0x90, + 0xfd, 0xa1, 0xed, 0x0e, 0x58, 0x4a, 0x4d, 0x31, 0x2e, 0x22, 0xa1, 0xf8, 0xbe, 0xe7, 0xb3, 0x4c, + 0xad, 0x06, 0x59, 0x94, 0x51, 0x54, 0x92, 0xae, 0x39, 0x12, 0x7a, 0xa6, 0xe9, 0xb9, 0x76, 0x0d, + 0x36, 0xe6, 0xce, 0xe3, 0xda, 0xef, 0xe6, 0x95, 0x84, 0x20, 0x05, 0xd9, 0x82, 0x9a, 0x82, 0xcc, + 0xbc, 0x97, 0xd2, 0x31, 0xc8, 0x65, 0x5a, 0xc7, 0x7c, 0x00, 0x39, 0x1c, 0x58, 0xa8, 0x62, 0x96, + 0x20, 0xdf, 0x47, 0x74, 0x43, 0x51, 0xa1, 0x07, 0xd3, 0x1f, 0x8a, 0xfe, 0xa9, 0xb0, 0xb4, 0xae, + 0x0f, 0x9b, 0x28, 0x34, 0xfd, 0x84, 0x79, 0xae, 0x1a, 0x24, 0x12, 0x7d, 0xcf, 0x6d, 0x8d, 0xbc, + 0xef, 0xdb, 0xb4, 0xae, 0x28, 0x12, 0x21, 0x20, 0x7c, 0xdb, 0x46, 0x19, 0xd1, 0xcb, 0x16, 0x03, + 0x6a, 0x2d, 0xc8, 0xd1, 0xb7, 0x71, 0x27, 0xa8, 0x3e, 0xab, 0x48, 0xc3, 0xab, 0xcb, 0xf5, 0x59, + 0x77, 0xb9, 0xf6, 0x3b, 0x69, 0xc8, 0x62, 0x9b, 0xdf, 0x87, 0x9c, 0x8f, 0x7e, 0x18, 0x4d, 0xe7, + 0x65, 0x3e, 0x9b, 0x42, 0xe1, 0xdf, 0xd6, 0xa2, 0x98, 0x5e, 0x42, 0x58, 0xa2, 0x2f, 0x26, 0xc5, + 0xf2, 0x3a, 0xe4, 0xc6, 0xa6, 0x6f, 0x8e, 0xf4, 0x3e, 0x51, 0x8d, 0xfa, 0x8f, 0x53, 0x90, 0x45, + 0x24, 0xbe, 0x01, 0x95, 0xae, 0xf4, 0xed, 0x53, 0x21, 0x87, 0xbe, 0x37, 0x19, 0x0c, 0x95, 0x24, + 0x3d, 0x16, 0x17, 0x4a, 0xdf, 0x28, 0x85, 0x20, 0x4d, 0xc7, 0xee, 0xb3, 0x34, 0x4a, 0xd5, 0x96, + 0xe7, 0x58, 0x2c, 0xc3, 0xd7, 0xa1, 0xfc, 0xc4, 0xb5, 0x84, 0x1f, 0xf4, 0x3d, 0x5f, 0x58, 0x2c, + 0xab, 0x77, 0xf7, 0x29, 0xcb, 0xd1, 0x59, 0x26, 0xce, 0x25, 0xf9, 0x42, 0x2c, 0xcf, 0xaf, 0xc1, + 0xfa, 0xd6, 0xb4, 0x83, 0xc4, 0x0a, 0xa8, 0x93, 0xf6, 0x85, 0x8b, 0x42, 0xc6, 0x8a, 0x4a, 0x88, + 0xbd, 0xef, 0xdb, 0xac, 0x84, 0x1f, 0x53, 0xfb, 0x84, 0x41, 0xfd, 0x5f, 0xa4, 0x42, 0xcd, 0x51, + 0x81, 0xd2, 0xa1, 0xe9, 0x9b, 0x03, 0xdf, 0x1c, 0x63, 0xff, 0xca, 0x50, 0x50, 0x07, 0xe7, 0x9b, + 0x4a, 0xbb, 0xa9, 0xc6, 0x43, 0xa5, 0x1b, 0x55, 0xe3, 0x2d, 0x96, 0x89, 0x1b, 0x6f, 0xb3, 0x2c, + 0x7e, 0xe3, 0xbb, 0x13, 0x4f, 0x0a, 0x96, 0x23, 0x5d, 0xe7, 0x59, 0x82, 0xe5, 0x11, 0xd8, 0x43, + 0x8d, 0xc2, 0x0a, 0x38, 0xe6, 0x26, 0xca, 0xcf, 0xb1, 0x77, 0xce, 0x8a, 0xd8, 0x0d, 0x9c, 0x46, + 0x61, 0xb1, 0x12, 0xbe, 0x39, 0x98, 0x8c, 0x8e, 0x05, 0x0e, 0x13, 0xf0, 0x4d, 0xcf, 0x1b, 0x0c, + 0x1c, 0xc1, 0xca, 0x38, 0x07, 0x09, 0xe5, 0xcb, 0x56, 0x49, 0xd3, 0x9a, 0x8e, 0xe3, 0x4d, 0x24, + 0xab, 0xd4, 0x7e, 0x91, 0x81, 0x2c, 0x7a, 0x37, 0xb8, 0x77, 0x86, 0xa8, 0x67, 0xf4, 0xde, 0xc1, + 0xe7, 0x68, 0x07, 0xa6, 0xe3, 0x1d, 0xc8, 0xdf, 0xd7, 0x2b, 0x9d, 0x59, 0x42, 0xcb, 0x22, 0xe3, + 0xe4, 0x22, 0x73, 0xc8, 0x8e, 0xec, 0x91, 0xd0, 0xba, 0x8e, 0x9e, 0x11, 0x16, 0xe0, 0x79, 0x9c, + 0xa3, 0xe0, 0x09, 0x3d, 0xe3, 0xae, 0x31, 0xf1, 0x58, 0x68, 0x48, 0xda, 0x03, 0x19, 0x23, 0x6c, + 0x2e, 0xd0, 0x5e, 0xa5, 0x85, 0xda, 0xeb, 0x83, 0x50, 0x7b, 0x15, 0x96, 0xd8, 0xf5, 0xd4, 0xcd, + 0xa4, 0xe6, 0x8a, 0x95, 0x46, 0x71, 0x79, 0xf2, 0xc4, 0x61, 0xb2, 0xad, 0xa5, 0x36, 0x3e, 0xe8, + 0x8a, 0x6a, 0x96, 0x59, 0x0a, 0x57, 0x93, 0xb6, 0xab, 0xd2, 0x79, 0x4f, 0x6d, 0x4b, 0x78, 0x2c, + 0x43, 0x07, 0xe1, 0xc4, 0xb2, 0x3d, 0x96, 0x45, 0xcb, 0xeb, 0x70, 0x7b, 0x87, 0xe5, 0xea, 0xaf, + 0x26, 0x8e, 0xa4, 0xc6, 0x44, 0x7a, 0x8a, 0x0d, 0x89, 0x6f, 0x4a, 0x49, 0xe3, 0xb1, 0xb0, 0x58, + 0xba, 0xfe, 0xf5, 0x05, 0x6a, 0xb6, 0x02, 0xa5, 0x27, 0x63, 0xc7, 0x33, 0xad, 0x2b, 0xf4, 0xec, + 0x2a, 0x40, 0xec, 0x55, 0xd7, 0x7e, 0x51, 0x8f, 0x8f, 0x73, 0xb4, 0x45, 0x03, 0x6f, 0xe2, 0xf7, + 0x05, 0xa9, 0x90, 0x92, 0xa1, 0x5b, 0xfc, 0x3b, 0x90, 0xc3, 0xf7, 0x61, 0x18, 0xe7, 0xfe, 0x52, + 0xbe, 0xdc, 0xe6, 0x53, 0x5b, 0x3c, 0x37, 0x14, 0x21, 0xbf, 0x03, 0x60, 0xf6, 0xa5, 0x7d, 0x26, + 0x10, 0xa8, 0x37, 0x7b, 0x02, 0xc2, 0xdf, 0x49, 0x9a, 0x2f, 0x57, 0xc7, 0x21, 0x13, 0x76, 0x0d, + 0x37, 0xa0, 0x8c, 0x5b, 0x77, 0xdc, 0xf1, 0x71, 0xb7, 0x57, 0x57, 0x89, 0xf0, 0x8d, 0xe5, 0xba, + 0xf7, 0x28, 0x22, 0x34, 0x92, 0x4c, 0xf8, 0x13, 0x58, 0x55, 0x31, 0x35, 0xcd, 0xb4, 0x42, 0x4c, + 0xdf, 0x5c, 0x8e, 0x69, 0x27, 0xa6, 0x34, 0xa6, 0xd8, 0xcc, 0x87, 0x25, 0x73, 0x2f, 0x1d, 0x96, + 0x7c, 0x15, 0xd6, 0x7a, 0xd3, 0xbb, 0x40, 0x1d, 0x15, 0x33, 0x50, 0x5e, 0x87, 0x55, 0x3b, 0x88, + 0xa3, 0xa2, 0x14, 0x23, 0x29, 0x1a, 0x53, 0xb0, 0xda, 0x7f, 0xc8, 0x43, 0x96, 0x66, 0x7e, 0x36, + 0xc6, 0xd5, 0x9c, 0x52, 0xe9, 0x0f, 0x96, 0x5f, 0xea, 0x99, 0x1d, 0x4f, 0x1a, 0x24, 0x93, 0xd0, + 0x20, 0xdf, 0x81, 0x5c, 0xe0, 0xf9, 0x32, 0x5c, 0xde, 0x25, 0x85, 0xa8, 0xeb, 0xf9, 0xd2, 0x50, + 0x84, 0x7c, 0x07, 0x0a, 0x27, 0xb6, 0x23, 0x71, 0x51, 0xd4, 0xe4, 0xbd, 0xbe, 0x1c, 0x8f, 0x1d, + 0x22, 0x32, 0x42, 0x62, 0xbe, 0x97, 0x14, 0xb6, 0x3c, 0x71, 0xda, 0x5c, 0x8e, 0xd3, 0x22, 0x19, + 0xbc, 0x0f, 0xac, 0xef, 0x9d, 0x09, 0xdf, 0x48, 0x04, 0x26, 0xd5, 0x21, 0x3d, 0x07, 0xe7, 0x35, + 0x28, 0x0e, 0x6d, 0x4b, 0xa0, 0x9d, 0x43, 0x3a, 0xa6, 0x68, 0x44, 0x6d, 0xfe, 0x18, 0x8a, 0xe4, + 0x1f, 0xa0, 0x56, 0x2c, 0xbd, 0xf4, 0xe4, 0x2b, 0x57, 0x25, 0x64, 0x80, 0x1f, 0xa2, 0x8f, 0xef, + 0xd8, 0x92, 0xe2, 0xd3, 0x45, 0x23, 0x6a, 0x63, 0x87, 0x49, 0xde, 0x93, 0x1d, 0x2e, 0xab, 0x0e, + 0xcf, 0xc2, 0xf9, 0xdb, 0x70, 0x83, 0x60, 0x33, 0x87, 0x24, 0x6e, 0x35, 0x64, 0xba, 0xf8, 0x25, + 0x1a, 0x2c, 0x63, 0x73, 0x20, 0xf6, 0xec, 0x91, 0x2d, 0xab, 0x95, 0xbb, 0xa9, 0x7b, 0x39, 0x23, + 0x06, 0xf0, 0xd7, 0x61, 0xc3, 0x12, 0x27, 0xe6, 0xc4, 0x91, 0x3d, 0x31, 0x1a, 0x3b, 0xa6, 0x14, + 0x6d, 0x8b, 0x64, 0xb4, 0x64, 0xcc, 0xbf, 0xe0, 0x6f, 0xc0, 0x35, 0x0d, 0xec, 0x44, 0xb7, 0x0a, + 0x6d, 0x8b, 0xc2, 0x77, 0x25, 0x63, 0xd1, 0xab, 0xfa, 0xbe, 0x56, 0xc3, 0x78, 0x80, 0xa2, 0x9f, + 0x1a, 0x2a, 0xd0, 0x40, 0xaa, 0x13, 0xf9, 0x91, 0xe9, 0x38, 0xc2, 0xbf, 0x50, 0x4e, 0xee, 0x63, + 0xd3, 0x3d, 0x36, 0x5d, 0x96, 0xa1, 0x33, 0xd6, 0x74, 0x84, 0x6b, 0x99, 0xbe, 0x3a, 0x91, 0x1f, + 0xd1, 0x81, 0x9e, 0xab, 0xdf, 0x83, 0x2c, 0x4d, 0x69, 0x09, 0x72, 0xca, 0x4b, 0x22, 0x8f, 0x59, + 0x7b, 0x48, 0xa4, 0x91, 0xf7, 0x70, 0xfb, 0xb1, 0x74, 0xed, 0xef, 0xe5, 0xa1, 0x18, 0x4e, 0x5e, + 0x78, 0x87, 0x90, 0x8a, 0xef, 0x10, 0xd0, 0x8c, 0x0b, 0x9e, 0xda, 0x81, 0x7d, 0xac, 0xcd, 0xd2, + 0xa2, 0x11, 0x03, 0xd0, 0x12, 0x7a, 0x6e, 0x5b, 0x72, 0x48, 0x7b, 0x26, 0x67, 0xa8, 0x06, 0xbf, + 0x07, 0xeb, 0x16, 0xce, 0x83, 0xdb, 0x77, 0x26, 0x96, 0xe8, 0xe1, 0x29, 0xaa, 0xc2, 0x04, 0xb3, + 0x60, 0xfe, 0x31, 0x80, 0xb4, 0x47, 0x62, 0xc7, 0xf3, 0x47, 0xa6, 0xd4, 0xbe, 0xc1, 0x37, 0x5e, + 0x4e, 0xaa, 0x37, 0x7b, 0x11, 0x03, 0x23, 0xc1, 0x0c, 0x59, 0xe3, 0xd7, 0x34, 0xeb, 0xc2, 0x67, + 0x62, 0xbd, 0x1d, 0x31, 0x30, 0x12, 0xcc, 0x78, 0x0f, 0x0a, 0x27, 0x9e, 0x3f, 0x9a, 0x38, 0xa6, + 0x3e, 0x73, 0xdf, 0x7f, 0x49, 0xbe, 0x3b, 0x8a, 0x9a, 0x74, 0x4f, 0xc8, 0x2a, 0x8e, 0x71, 0x97, + 0x96, 0x8c, 0x71, 0xd7, 0x7f, 0x09, 0x20, 0xee, 0x21, 0xbf, 0x09, 0x7c, 0xdf, 0x73, 0xe5, 0xb0, + 0x71, 0x7c, 0xec, 0x6f, 0x89, 0x13, 0xcf, 0x17, 0xdb, 0x26, 0x1e, 0xaf, 0x37, 0x60, 0x23, 0x82, + 0x37, 0x4e, 0xa4, 0xf0, 0x11, 0x4c, 0x22, 0xd0, 0x1d, 0x7a, 0xbe, 0x54, 0x36, 0x1e, 0x3d, 0x3e, + 0xe9, 0xb2, 0x0c, 0x1e, 0xe9, 0xed, 0x6e, 0x87, 0x65, 0xeb, 0xf7, 0x00, 0xe2, 0xa9, 0x25, 0x5f, + 0x88, 0x9e, 0xde, 0x7c, 0xa8, 0x3d, 0x23, 0x6a, 0x3d, 0x7c, 0x9b, 0xa5, 0xea, 0x9f, 0xa6, 0xa0, + 0x9c, 0x18, 0xd2, 0xb4, 0xcf, 0xdc, 0xf4, 0x26, 0xae, 0x54, 0x4e, 0x3a, 0x3d, 0x3e, 0x35, 0x9d, + 0x09, 0x1e, 0xee, 0x1b, 0x50, 0xa1, 0xf6, 0xb6, 0x1d, 0x48, 0xdb, 0xed, 0x4b, 0x96, 0x89, 0x50, + 0x94, 0x61, 0x90, 0x8d, 0x50, 0x0e, 0x3c, 0x0d, 0xca, 0x71, 0x06, 0xab, 0x87, 0xc2, 0xef, 0x8b, + 0x10, 0x89, 0x8c, 0x61, 0x0d, 0x89, 0xd0, 0x94, 0x31, 0x6c, 0xca, 0x61, 0x77, 0x32, 0x62, 0x45, + 0x34, 0x2a, 0xb1, 0xd1, 0x38, 0x13, 0x3e, 0xda, 0x32, 0x25, 0xfc, 0x0e, 0x02, 0x70, 0x37, 0x98, + 0x2e, 0x83, 0x10, 0x7b, 0xdf, 0x76, 0x59, 0x39, 0x6a, 0x98, 0xe7, 0x6c, 0x15, 0xfb, 0x4f, 0xae, + 0x03, 0xab, 0xd4, 0xfe, 0x5b, 0x06, 0xb2, 0xa8, 0xd7, 0xd1, 0xd7, 0x4d, 0x2a, 0x21, 0xb5, 0x57, + 0x92, 0xa0, 0xcf, 0x76, 0x1a, 0x21, 0xef, 0xe4, 0x69, 0xf4, 0x1e, 0x94, 0xfb, 0x93, 0x40, 0x7a, + 0x23, 0x3a, 0x8a, 0xf5, 0x6d, 0xd7, 0xcd, 0xb9, 0xa8, 0x11, 0x4d, 0xa7, 0x91, 0x44, 0xe5, 0xef, + 0x40, 0xfe, 0x44, 0x49, 0xbd, 0x8a, 0x1b, 0x7d, 0xe1, 0x92, 0xd3, 0x5a, 0x4b, 0xb6, 0x46, 0xc6, + 0x71, 0xd9, 0x73, 0x3b, 0x36, 0x09, 0xd2, 0xa7, 0x6e, 0x3e, 0x3a, 0x75, 0x7f, 0x09, 0xd6, 0x04, + 0x4e, 0xf8, 0xa1, 0x63, 0xf6, 0xc5, 0x48, 0xb8, 0xe1, 0x36, 0x7b, 0xfb, 0x25, 0x46, 0x4c, 0x2b, + 0x46, 0xc3, 0x9e, 0xe1, 0x85, 0x9a, 0xc7, 0xf5, 0xf0, 0xf0, 0x0f, 0x1d, 0xfb, 0xa2, 0x11, 0x03, + 0xea, 0x5f, 0xd6, 0xfa, 0xb2, 0x00, 0x99, 0x46, 0xd0, 0xd7, 0x11, 0x10, 0x11, 0xf4, 0x95, 0x7b, + 0xd5, 0xa4, 0xe9, 0x60, 0xe9, 0xfa, 0x9b, 0x50, 0x8a, 0xbe, 0x80, 0xc2, 0x73, 0xe0, 0xc9, 0xee, + 0x58, 0xf4, 0xed, 0x13, 0x5b, 0x58, 0x4a, 0x3e, 0xbb, 0xd2, 0xf4, 0xa5, 0x0a, 0x22, 0xb6, 0x5c, + 0x8b, 0xa5, 0x6b, 0xbf, 0x5d, 0x84, 0xbc, 0x3a, 0x7c, 0xf5, 0x80, 0x4b, 0xd1, 0x80, 0xbf, 0x0b, + 0x45, 0x6f, 0x2c, 0x7c, 0x53, 0x7a, 0xbe, 0x8e, 0xdc, 0xbc, 0xf3, 0x32, 0x87, 0xf9, 0x66, 0x47, + 0x13, 0x1b, 0x11, 0x9b, 0x59, 0x69, 0x4a, 0xcf, 0x4b, 0xd3, 0x7d, 0x60, 0xe1, 0xb9, 0x7d, 0xe8, + 0x23, 0x9d, 0xbc, 0xd0, 0x7e, 0xf8, 0x1c, 0x9c, 0xf7, 0xa0, 0xd4, 0xf7, 0x5c, 0xcb, 0x8e, 0xa2, + 0x38, 0x6b, 0x0f, 0xbf, 0xfe, 0x52, 0x3d, 0x6c, 0x86, 0xd4, 0x46, 0xcc, 0x88, 0xbf, 0x0e, 0xb9, + 0x33, 0x14, 0x33, 0x92, 0xa7, 0xcb, 0x85, 0x50, 0x21, 0xf1, 0x4f, 0xa0, 0xfc, 0x83, 0x89, 0xdd, + 0x3f, 0xed, 0x24, 0xa3, 0x84, 0xef, 0xbd, 0x54, 0x2f, 0xbe, 0x1b, 0xd3, 0x1b, 0x49, 0x66, 0x09, + 0xd1, 0x2e, 0xfc, 0x11, 0x44, 0xbb, 0x38, 0x2f, 0xda, 0x06, 0x54, 0x5c, 0x11, 0x48, 0x61, 0xed, + 0x68, 0x5b, 0x0d, 0x3e, 0x83, 0xad, 0x36, 0xcd, 0xa2, 0xfe, 0x25, 0x28, 0x86, 0x0b, 0xce, 0xf3, + 0x90, 0x3e, 0x40, 0xa7, 0x28, 0x0f, 0xe9, 0x8e, 0xaf, 0xa4, 0xad, 0x81, 0xd2, 0x56, 0xff, 0x83, + 0x14, 0x94, 0xa2, 0x49, 0x9f, 0xd6, 0x9c, 0xad, 0x1f, 0x4c, 0x4c, 0x87, 0xa5, 0xc8, 0x5d, 0xf6, + 0xa4, 0x6a, 0x91, 0xb2, 0x7e, 0x44, 0x97, 0xf5, 0x3e, 0xcb, 0x90, 0x89, 0x20, 0x82, 0x80, 0x65, + 0x39, 0x87, 0x35, 0x0d, 0xee, 0xf8, 0x0a, 0x35, 0x87, 0x8a, 0x0f, 0xdf, 0x86, 0x80, 0xbc, 0xb2, + 0x28, 0x4e, 0x85, 0x52, 0x90, 0x07, 0x9e, 0xa4, 0x46, 0x11, 0x3b, 0xd5, 0x76, 0x59, 0x09, 0xbf, + 0x79, 0xe0, 0xc9, 0x36, 0xaa, 0xc4, 0xc8, 0x3d, 0x2b, 0x87, 0x9f, 0xa7, 0x16, 0x69, 0xc4, 0x86, + 0xe3, 0xb4, 0x5d, 0x56, 0xd1, 0x2f, 0x54, 0x6b, 0x0d, 0x39, 0xb6, 0xce, 0xcd, 0x3e, 0x92, 0xaf, + 0xa3, 0x86, 0x45, 0x1a, 0xdd, 0x66, 0xb8, 0x25, 0x5b, 0xe7, 0x76, 0x20, 0x03, 0xb6, 0x51, 0xff, + 0x77, 0x29, 0x28, 0x27, 0x16, 0x18, 0xdd, 0x3f, 0x42, 0xc4, 0xa3, 0x4c, 0x79, 0x83, 0x1f, 0xe3, + 0x34, 0xfa, 0x56, 0x78, 0x4c, 0xf5, 0x3c, 0x7c, 0x4c, 0xe3, 0xf7, 0x7a, 0xde, 0xc8, 0xf3, 0x7d, + 0xef, 0xb9, 0x32, 0x7d, 0xf6, 0xcc, 0x40, 0x3e, 0x13, 0xe2, 0x94, 0x65, 0x71, 0xa8, 0xcd, 0x89, + 0xef, 0x0b, 0x57, 0x01, 0x72, 0xd4, 0x39, 0x71, 0xae, 0x5a, 0x79, 0x64, 0x8a, 0xc8, 0x74, 0x0e, + 0xb2, 0x02, 0x2a, 0x02, 0x8d, 0xad, 0x20, 0x45, 0x44, 0x40, 0x74, 0xd5, 0x2c, 0xe1, 0xa1, 0xa2, + 0x22, 0x14, 0x9d, 0x93, 0x6d, 0xf3, 0x22, 0x68, 0x0c, 0x3c, 0x06, 0xb3, 0xc0, 0x03, 0xef, 0x39, + 0x2b, 0xd7, 0x26, 0x00, 0xb1, 0x4f, 0x86, 0xbe, 0x28, 0x0a, 0x44, 0x74, 0x87, 0xa0, 0x5b, 0xbc, + 0x03, 0x80, 0x4f, 0x84, 0x19, 0x3a, 0xa4, 0x2f, 0x61, 0x28, 0x13, 0x9d, 0x91, 0x60, 0x51, 0xfb, + 0x73, 0x50, 0x8a, 0x5e, 0xf0, 0x2a, 0x14, 0xc8, 0xa4, 0x8d, 0x3e, 0x1b, 0x36, 0xd1, 0x3e, 0xb3, + 0x5d, 0x4b, 0x9c, 0x93, 0x5e, 0xc9, 0x19, 0xaa, 0x81, 0xbd, 0x1c, 0xda, 0x96, 0x25, 0xdc, 0xf0, + 0xa6, 0x47, 0xb5, 0x16, 0xdd, 0xc7, 0x67, 0x17, 0xde, 0xc7, 0xd7, 0x7e, 0x19, 0xca, 0x09, 0xa7, + 0xf1, 0xd2, 0x61, 0x27, 0x3a, 0x96, 0x9e, 0xee, 0xd8, 0x6d, 0x28, 0x85, 0x39, 0x20, 0x01, 0x9d, + 0x6d, 0x25, 0x23, 0x06, 0xd4, 0xfe, 0x49, 0x1a, 0x2d, 0x59, 0x1c, 0xda, 0xac, 0xa3, 0xb7, 0x03, + 0xf9, 0x40, 0x9a, 0x72, 0x12, 0x26, 0x33, 0x2c, 0xb9, 0x41, 0xbb, 0x44, 0xb3, 0xbb, 0x62, 0x68, + 0x6a, 0xfe, 0x01, 0x64, 0xa4, 0x39, 0xd0, 0x81, 0xd2, 0xaf, 0x2c, 0xc7, 0xa4, 0x67, 0x0e, 0x76, + 0x57, 0x0c, 0xa4, 0xe3, 0x7b, 0x50, 0xec, 0xeb, 0xd8, 0x96, 0x56, 0x8a, 0x4b, 0xfa, 0x62, 0x61, + 0x44, 0x6c, 0x77, 0xc5, 0x88, 0x38, 0xf0, 0xef, 0x40, 0x16, 0xad, 0x4b, 0x9d, 0xf3, 0xb1, 0xa4, + 0x8f, 0x89, 0xdb, 0x65, 0x77, 0xc5, 0x20, 0xca, 0xad, 0x02, 0xe4, 0x48, 0x07, 0xd7, 0xaa, 0x90, + 0x57, 0x63, 0x9d, 0x9d, 0xb9, 0xda, 0x2d, 0xc8, 0xf4, 0xcc, 0x01, 0x5a, 0xf8, 0xb6, 0x15, 0xe8, + 0x50, 0x09, 0x3e, 0xd6, 0x5e, 0x89, 0xe3, 0x74, 0xc9, 0x10, 0x70, 0x6a, 0x2a, 0x04, 0x5c, 0xcb, + 0x43, 0x16, 0xbf, 0x58, 0xbb, 0x7d, 0x95, 0xb7, 0x50, 0xfb, 0x07, 0x19, 0x74, 0x2c, 0xa4, 0x38, + 0x5f, 0x18, 0xde, 0xfe, 0x08, 0x4a, 0x63, 0xdf, 0xeb, 0x8b, 0x20, 0xf0, 0x7c, 0x6d, 0x1c, 0xbd, + 0xfe, 0xe2, 0xab, 0xe7, 0xcd, 0xc3, 0x90, 0xc6, 0x88, 0xc9, 0xeb, 0xff, 0x32, 0x0d, 0xa5, 0xe8, + 0x85, 0xf2, 0x67, 0xa4, 0x38, 0x57, 0xa1, 0xcc, 0x7d, 0xe1, 0x8f, 0x4c, 0xdb, 0x52, 0xda, 0xa3, + 0x39, 0x34, 0x43, 0x23, 0xf7, 0x63, 0x6f, 0x22, 0x27, 0xc7, 0x42, 0x85, 0xb0, 0x9e, 0xda, 0x23, + 0xe1, 0xb1, 0x2c, 0x5d, 0x1e, 0xa1, 0x60, 0xf7, 0x1d, 0x6f, 0x62, 0xb1, 0x1c, 0xb6, 0x1f, 0xd1, + 0xf1, 0xb6, 0x6f, 0x8e, 0x03, 0xa5, 0x33, 0xf7, 0x6d, 0xdf, 0x63, 0x05, 0x24, 0xda, 0xb1, 0x07, + 0x23, 0x93, 0x15, 0x91, 0x59, 0xef, 0xb9, 0x2d, 0x51, 0x09, 0x97, 0xd0, 0x4c, 0xed, 0x8c, 0x85, + 0xdb, 0x95, 0xbe, 0x10, 0x72, 0xdf, 0x1c, 0xab, 0x98, 0xa6, 0x21, 0x2c, 0xcb, 0x96, 0x4a, 0x7f, + 0xee, 0x98, 0x7d, 0x71, 0xec, 0x79, 0xa7, 0x6c, 0x15, 0x15, 0x4d, 0xdb, 0x0d, 0xa4, 0x39, 0xf0, + 0xcd, 0x91, 0xd2, 0xa1, 0x3d, 0xe1, 0x08, 0x6a, 0xad, 0xd1, 0xb7, 0x6d, 0x39, 0x9c, 0x1c, 0x3f, + 0x42, 0xbf, 0x6f, 0x5d, 0xdd, 0x33, 0x59, 0x62, 0x2c, 0x50, 0x87, 0xae, 0x42, 0x71, 0xcb, 0x76, + 0xec, 0x63, 0xdb, 0xb1, 0xd9, 0x06, 0xa2, 0xb6, 0xce, 0xfb, 0xa6, 0x63, 0x5b, 0xbe, 0xf9, 0x9c, + 0x71, 0xec, 0xdc, 0x63, 0xdf, 0x3b, 0xb5, 0xd9, 0x35, 0x44, 0x24, 0x37, 0xf0, 0xcc, 0xfe, 0x21, + 0xbb, 0x4e, 0x77, 0x65, 0xa7, 0x42, 0xf6, 0x87, 0x27, 0xe6, 0x31, 0xbb, 0x11, 0x87, 0xf4, 0x6e, + 0xd6, 0x36, 0x60, 0x7d, 0xe6, 0x56, 0xbe, 0x56, 0xd0, 0xde, 0x67, 0xad, 0x02, 0xe5, 0xc4, 0x75, + 0x69, 0xed, 0x55, 0x28, 0x86, 0x97, 0xa9, 0xe8, 0xa5, 0xdb, 0x81, 0x0a, 0x03, 0x6b, 0x21, 0x89, + 0xda, 0xb5, 0xdf, 0x4b, 0x41, 0x5e, 0xdd, 0x64, 0xf3, 0xad, 0x28, 0xf3, 0x24, 0xb5, 0xc4, 0xed, + 0xa5, 0x22, 0xd2, 0x77, 0xbf, 0x51, 0xfa, 0xc9, 0x75, 0xc8, 0x39, 0xe4, 0x8e, 0x6b, 0xf5, 0x45, + 0x8d, 0x84, 0xb6, 0xc9, 0x24, 0xb5, 0x4d, 0xbd, 0x11, 0xdd, 0x37, 0x87, 0xa1, 0x47, 0xb2, 0x0a, + 0x7b, 0xbe, 0x10, 0x2a, 0xac, 0x48, 0xde, 0x74, 0x9a, 0xce, 0x0a, 0x6f, 0x34, 0x36, 0xfb, 0x92, + 0x00, 0x74, 0x8a, 0xa2, 0x32, 0x65, 0x59, 0x94, 0xf2, 0xe6, 0xd0, 0x94, 0xf5, 0x13, 0x28, 0x1e, + 0x7a, 0xc1, 0xec, 0x99, 0x5c, 0x80, 0x4c, 0xcf, 0x1b, 0x2b, 0x0b, 0x73, 0xcb, 0x93, 0x64, 0x61, + 0xaa, 0x23, 0xf8, 0x44, 0x2a, 0xa1, 0x32, 0xec, 0xc1, 0x50, 0x2a, 0x4f, 0xbc, 0xed, 0xba, 0xc2, + 0x67, 0x39, 0x5c, 0x43, 0x43, 0x8c, 0xd1, 0xaa, 0x65, 0x79, 0x5c, 0x35, 0x82, 0xef, 0xd8, 0x7e, + 0x20, 0x59, 0xa1, 0xde, 0xc6, 0xd3, 0xd4, 0x1e, 0xd0, 0x21, 0x48, 0x0f, 0xc4, 0x6a, 0x05, 0xbb, + 0x48, 0xcd, 0xa6, 0x70, 0x51, 0xc6, 0xc8, 0x7b, 0x52, 0xae, 0x1f, 0x7d, 0x20, 0x8d, 0x27, 0x18, + 0xb5, 0x3f, 0x9a, 0x04, 0xd2, 0x3e, 0xb9, 0x60, 0x99, 0xfa, 0x33, 0xa8, 0x4c, 0xa5, 0x31, 0xf1, + 0xeb, 0xc0, 0xa6, 0x00, 0xd8, 0xf5, 0x15, 0x7e, 0x0b, 0xae, 0x4d, 0x41, 0xf7, 0x6d, 0xcb, 0xa2, + 0x58, 0xef, 0xec, 0x8b, 0x70, 0x80, 0x5b, 0x25, 0x28, 0xf4, 0xd5, 0x2a, 0xd5, 0x0f, 0xa1, 0x42, + 0xcb, 0xb6, 0x2f, 0xa4, 0xd9, 0x71, 0x9d, 0x8b, 0x3f, 0x72, 0xae, 0x59, 0xfd, 0xab, 0xda, 0xc1, + 0x42, 0x7d, 0x71, 0xe2, 0x7b, 0x23, 0xe2, 0x95, 0x33, 0xe8, 0x19, 0xb9, 0x4b, 0x4f, 0xaf, 0x7d, + 0x5a, 0x7a, 0xf5, 0x7f, 0x5f, 0x82, 0x42, 0xa3, 0xdf, 0x47, 0x97, 0x70, 0xee, 0xcb, 0xef, 0x40, + 0xbe, 0xef, 0xb9, 0x27, 0xf6, 0x40, 0xeb, 0xe3, 0x59, 0xcb, 0x50, 0xd3, 0xa1, 0xc0, 0x9d, 0xd8, + 0x03, 0x43, 0x23, 0x23, 0x99, 0x3e, 0x4f, 0x72, 0x57, 0x92, 0x29, 0xa5, 0x1a, 0x1d, 0x1f, 0x0f, + 0x20, 0x6b, 0xbb, 0x27, 0x9e, 0x4e, 0x0c, 0xfd, 0xfc, 0x25, 0x44, 0x94, 0x1d, 0x49, 0x88, 0xb5, + 0xff, 0x92, 0x82, 0xbc, 0xfa, 0x34, 0x7f, 0x15, 0xd6, 0x84, 0x8b, 0x9b, 0x29, 0x54, 0xe5, 0x7a, + 0x17, 0xcd, 0x40, 0xd1, 0x68, 0xd5, 0x10, 0x71, 0x3c, 0x19, 0xe8, 0xd8, 0x4b, 0x12, 0xc4, 0xdf, + 0x83, 0x5b, 0xaa, 0x79, 0xe8, 0x0b, 0x5f, 0x38, 0xc2, 0x0c, 0x44, 0x73, 0x68, 0xba, 0xae, 0x70, + 0xf4, 0xc1, 0x7e, 0xd9, 0x6b, 0x5e, 0x87, 0x55, 0xf5, 0xaa, 0x3b, 0x36, 0xfb, 0x22, 0xd0, 0xf7, + 0x7d, 0x53, 0x30, 0xfe, 0x35, 0xc8, 0x51, 0xde, 0x6c, 0xd5, 0xba, 0x7a, 0x29, 0x15, 0x56, 0xcd, + 0x8b, 0x4e, 0x9e, 0x06, 0x80, 0x9a, 0x26, 0x74, 0xba, 0xf4, 0xee, 0xff, 0xe2, 0x95, 0xf3, 0x4a, + 0xfe, 0x5f, 0x82, 0x08, 0xfb, 0x67, 0x09, 0x47, 0x50, 0x82, 0x23, 0x9e, 0x8c, 0x69, 0xba, 0x59, + 0x99, 0x82, 0xd5, 0xfe, 0x71, 0x16, 0xb2, 0x38, 0xc3, 0x88, 0x3c, 0xf4, 0x46, 0x22, 0x8a, 0x2f, + 0x2b, 0x53, 0x63, 0x0a, 0x86, 0xa6, 0x8d, 0xa9, 0xae, 0xf8, 0x23, 0x34, 0xa5, 0x3c, 0x66, 0xc1, + 0x88, 0x39, 0xf6, 0xbd, 0x13, 0xdb, 0x89, 0x31, 0xb5, 0x11, 0x34, 0x03, 0xe6, 0x5f, 0x87, 0x9b, + 0x23, 0xd3, 0x3f, 0x15, 0x92, 0x76, 0xf7, 0x33, 0xcf, 0x3f, 0x0d, 0x70, 0xe6, 0xda, 0x96, 0x0e, + 0x4c, 0x5e, 0xf2, 0x96, 0xbf, 0x0e, 0x1b, 0xcf, 0xc3, 0x66, 0xf4, 0x0d, 0x15, 0x1a, 0x9c, 0x7f, + 0x81, 0xea, 0xd6, 0x12, 0x67, 0x36, 0xf1, 0x2d, 0xaa, 0xec, 0xd9, 0xb0, 0x8d, 0xa2, 0x64, 0xaa, + 0x89, 0xec, 0xea, 0x2f, 0xeb, 0x1b, 0xa6, 0x69, 0x28, 0x5a, 0x5b, 0x2a, 0xab, 0x28, 0x68, 0x5b, + 0x14, 0x59, 0x2d, 0x19, 0x31, 0x00, 0x05, 0x8d, 0x3e, 0xf9, 0x54, 0x29, 0xd5, 0x8a, 0x72, 0x41, + 0x13, 0x20, 0xc4, 0x90, 0xa2, 0x3f, 0x0c, 0x3f, 0xa2, 0xc2, 0x9e, 0x49, 0x10, 0xbf, 0x03, 0x30, + 0x30, 0xa5, 0x78, 0x6e, 0x5e, 0x3c, 0xf1, 0x9d, 0xaa, 0x50, 0x57, 0x25, 0x31, 0x04, 0x9d, 0x58, + 0xc7, 0xeb, 0x9b, 0x4e, 0x57, 0x7a, 0xbe, 0x39, 0x10, 0x87, 0xa6, 0x1c, 0x56, 0x07, 0xca, 0x89, + 0x9d, 0x85, 0xe3, 0x88, 0xa5, 0x3d, 0x12, 0x9f, 0x78, 0xae, 0xa8, 0x0e, 0xd5, 0x88, 0xc3, 0x36, + 0xf6, 0xc4, 0x74, 0x4d, 0xe7, 0x42, 0xda, 0x7d, 0x1c, 0x8b, 0xad, 0x7a, 0x92, 0x00, 0x51, 0xd8, + 0x40, 0x48, 0x9c, 0xc7, 0xb6, 0x55, 0xfd, 0xbe, 0x1a, 0x6b, 0x04, 0xa8, 0x7d, 0x93, 0xae, 0xa7, + 0x86, 0xf5, 0xb7, 0xa0, 0xb2, 0x87, 0xdf, 0x6d, 0x8c, 0xed, 0x6e, 0xdf, 0x1b, 0x0b, 0x54, 0xd3, + 0x14, 0xe8, 0xa5, 0xb0, 0x40, 0x19, 0x0a, 0x1f, 0x05, 0x9e, 0xdb, 0x38, 0x6c, 0xab, 0x83, 0x63, + 0x67, 0xe2, 0x38, 0x2c, 0x5d, 0xef, 0x00, 0xc4, 0xf2, 0x8a, 0x87, 0x40, 0x83, 0xee, 0x82, 0xd8, + 0x8a, 0x0a, 0x42, 0xb9, 0x96, 0xed, 0x0e, 0xb6, 0xb5, 0x88, 0xb2, 0x14, 0x02, 0x29, 0xb8, 0x20, + 0xac, 0x08, 0x48, 0x66, 0x08, 0xb5, 0x84, 0xc5, 0x32, 0xf5, 0xff, 0x93, 0x82, 0x72, 0x22, 0xf5, + 0xe1, 0x8f, 0x31, 0x5d, 0x03, 0x0f, 0x69, 0x3c, 0xe6, 0x71, 0x35, 0x94, 0xf8, 0x46, 0x6d, 0x5c, + 0x2b, 0x9d, 0x99, 0x81, 0x6f, 0x55, 0x28, 0x21, 0x01, 0xf9, 0x4c, 0xa9, 0x1a, 0xf5, 0x87, 0x3a, + 0x1e, 0x53, 0x86, 0xc2, 0x13, 0xf7, 0xd4, 0xf5, 0x9e, 0xbb, 0xea, 0xf4, 0xa5, 0xfc, 0x9b, 0xa9, + 0x9b, 0xc4, 0x30, 0x45, 0x26, 0x53, 0xff, 0xe7, 0xd9, 0x99, 0x54, 0xb5, 0x16, 0xe4, 0x95, 0x13, + 0x40, 0xf6, 0xe9, 0x7c, 0x6e, 0x51, 0x12, 0x59, 0xdf, 0x5a, 0x25, 0x40, 0x86, 0x26, 0x46, 0xeb, + 0x3c, 0x4a, 0xe4, 0x4c, 0x2f, 0xbc, 0x5d, 0x9b, 0x62, 0x14, 0x6a, 0xdc, 0xa9, 0x5c, 0xe6, 0x88, + 0x43, 0xed, 0xaf, 0xa4, 0xe0, 0xfa, 0x22, 0x94, 0x64, 0xc6, 0x77, 0x6a, 0x3a, 0xe3, 0xbb, 0x3b, + 0x93, 0x41, 0x9d, 0xa6, 0xd1, 0x3c, 0x78, 0xc9, 0x4e, 0x4c, 0xe7, 0x53, 0xd7, 0x7f, 0x37, 0x05, + 0x1b, 0x73, 0x63, 0x4e, 0x58, 0x27, 0x00, 0x79, 0x25, 0x59, 0x2a, 0xc1, 0x29, 0x4a, 0x39, 0x51, + 0x57, 0x06, 0x74, 0x6e, 0x07, 0xea, 0x0e, 0x5f, 0xe7, 0x8c, 0x2b, 0xe3, 0x17, 0x57, 0x0d, 0x8f, + 0x85, 0x81, 0x50, 0xe1, 0x55, 0x65, 0x42, 0x69, 0x48, 0x5e, 0x19, 0xa8, 0xea, 0x5e, 0x83, 0x15, + 0x28, 0x71, 0x6a, 0x32, 0x76, 0xec, 0x3e, 0x36, 0x8b, 0xbc, 0x06, 0x37, 0x55, 0xe1, 0x80, 0x76, + 0x06, 0x4f, 0x7a, 0x43, 0x9b, 0x36, 0x07, 0x2b, 0xe1, 0x77, 0x0e, 0x27, 0xc7, 0x8e, 0x1d, 0x0c, + 0x19, 0xd4, 0x0d, 0xb8, 0xb6, 0x60, 0x80, 0xd4, 0xe5, 0xa7, 0xba, 0xfb, 0x6b, 0x00, 0xdb, 0x4f, + 0xc3, 0x4e, 0xb3, 0x14, 0xe7, 0xb0, 0xb6, 0xfd, 0x34, 0xc9, 0x5d, 0x6f, 0x9e, 0xa7, 0xa8, 0x93, + 0x02, 0x96, 0xa9, 0xff, 0x6a, 0x2a, 0xcc, 0x6c, 0xa8, 0xfd, 0x59, 0xa8, 0xa8, 0x0e, 0x1f, 0x9a, + 0x17, 0x8e, 0x67, 0x5a, 0xbc, 0x05, 0x6b, 0x41, 0x54, 0xda, 0x92, 0x38, 0x86, 0x66, 0x8f, 0xf7, + 0xee, 0x14, 0x92, 0x31, 0x43, 0x14, 0x3a, 0x38, 0xe9, 0xf8, 0x3a, 0x84, 0x93, 0xab, 0x66, 0xd2, + 0x96, 0x5b, 0x25, 0xe7, 0xcb, 0xac, 0x7f, 0x0d, 0x36, 0xba, 0xb1, 0xca, 0x56, 0x96, 0x30, 0x0a, + 0x87, 0xd2, 0xf7, 0xdb, 0xa1, 0x70, 0xe8, 0x66, 0xfd, 0x3f, 0xe5, 0x01, 0xe2, 0xab, 0x9f, 0x05, + 0x7b, 0x7e, 0x51, 0x26, 0xc3, 0xdc, 0x45, 0x6c, 0xe6, 0xa5, 0x2f, 0x62, 0xdf, 0x8b, 0x0c, 0x72, + 0x15, 0x16, 0x9e, 0x4d, 0xe7, 0x8e, 0xfb, 0x34, 0x6b, 0x86, 0x4f, 0x25, 0xfa, 0xe4, 0x66, 0x13, + 0x7d, 0xee, 0xce, 0x67, 0x05, 0xce, 0x28, 0xa3, 0x38, 0xde, 0x50, 0x98, 0x8a, 0x37, 0xd4, 0xa0, + 0xe8, 0x0b, 0xd3, 0xf2, 0x5c, 0xe7, 0x22, 0xbc, 0xef, 0x0b, 0xdb, 0xfc, 0x2d, 0xc8, 0x49, 0xaa, + 0xce, 0x29, 0xd2, 0xde, 0x79, 0xc1, 0xc2, 0x29, 0x5c, 0xd4, 0x6c, 0x76, 0xa0, 0x53, 0xf9, 0xd4, + 0x59, 0x58, 0x34, 0x12, 0x10, 0xbe, 0x09, 0xdc, 0x46, 0xe7, 0xcb, 0x71, 0x84, 0xb5, 0x75, 0xb1, + 0xad, 0xae, 0xe1, 0xe8, 0xb4, 0x2e, 0x1a, 0x0b, 0xde, 0x84, 0xeb, 0xbf, 0x1a, 0xaf, 0x3f, 0x75, + 0xf9, 0xcc, 0x0e, 0x70, 0xa4, 0x15, 0x32, 0x4a, 0xa2, 0x36, 0xda, 0x03, 0xe1, 0x86, 0x55, 0x73, + 0x49, 0xd2, 0x1b, 0xdf, 0x65, 0x5f, 0xf2, 0xb6, 0xfe, 0xfb, 0xe9, 0xc8, 0x71, 0x29, 0x41, 0xee, + 0xd8, 0x0c, 0xec, 0xbe, 0x3a, 0x83, 0xb4, 0xc1, 0xa1, 0xce, 0x20, 0xe9, 0x59, 0x1e, 0x4b, 0xa3, + 0x0f, 0x12, 0x08, 0x7d, 0x59, 0x12, 0x57, 0x2c, 0xb1, 0x2c, 0x6e, 0xd4, 0x70, 0xbd, 0x55, 0x46, + 0x0e, 0x91, 0x52, 0xe8, 0xcb, 0x8a, 0x72, 0x1d, 0xc9, 0x89, 0xa5, 0x83, 0x80, 0x15, 0x11, 0xc7, + 0xf5, 0xa4, 0x50, 0x81, 0x3f, 0x92, 0x4e, 0x06, 0xc8, 0x26, 0x4c, 0xc1, 0x67, 0x65, 0x74, 0x0a, + 0x42, 0xa6, 0x2a, 0x5a, 0x17, 0x90, 0xcb, 0xb4, 0x8a, 0xbb, 0x73, 0xfa, 0x05, 0xab, 0x60, 0x8f, + 0xe2, 0x42, 0x28, 0xb6, 0x86, 0x5c, 0x4d, 0xca, 0x13, 0x59, 0xc7, 0xc7, 0x33, 0xca, 0x1e, 0x61, + 0xf8, 0x55, 0x0b, 0xb5, 0xc7, 0x06, 0xf6, 0x2c, 0x32, 0x32, 0x18, 0x47, 0x9f, 0x67, 0x6c, 0xa2, + 0x03, 0x62, 0x8f, 0x4d, 0x57, 0xb2, 0x6b, 0x38, 0xd4, 0xb1, 0x75, 0xc2, 0xae, 0x23, 0x49, 0x7f, + 0x68, 0x4a, 0x76, 0x03, 0x71, 0xf0, 0x69, 0x5b, 0xf8, 0xb8, 0x9e, 0xec, 0x26, 0xe2, 0x48, 0x73, + 0xc0, 0x6e, 0xd5, 0x7f, 0x23, 0xce, 0x36, 0x7e, 0x23, 0x72, 0x0d, 0x96, 0x11, 0x72, 0x74, 0x1e, + 0x16, 0xed, 0xb8, 0x16, 0x6c, 0xf8, 0xe2, 0x07, 0x13, 0x7b, 0x2a, 0x07, 0x3f, 0x73, 0x75, 0x92, + 0xc7, 0x3c, 0x45, 0xfd, 0x0c, 0x36, 0xc2, 0xc6, 0x33, 0x5b, 0x0e, 0x29, 0x4a, 0xc3, 0xdf, 0x4a, + 0x14, 0x09, 0xa4, 0x16, 0x16, 0x57, 0x45, 0x2c, 0xe3, 0xa2, 0x80, 0x28, 0x0a, 0x9f, 0x5e, 0x22, + 0x0a, 0x5f, 0xff, 0xdf, 0xc9, 0x6b, 0x5d, 0xe5, 0x2c, 0x59, 0x91, 0xb3, 0x34, 0x7f, 0xcd, 0x1b, + 0x07, 0xd6, 0xd3, 0x2f, 0x13, 0x58, 0x5f, 0x94, 0x32, 0xf1, 0x3e, 0xda, 0xee, 0xb4, 0x7f, 0x9e, + 0x2e, 0x71, 0x69, 0x30, 0x85, 0xcb, 0xb7, 0xe8, 0xd2, 0xd6, 0xec, 0xaa, 0x7c, 0x9e, 0xdc, 0xc2, + 0x92, 0x9d, 0xe4, 0xed, 0xac, 0xc6, 0x34, 0x12, 0x54, 0x09, 0x6d, 0x93, 0x5f, 0xa4, 0x6d, 0xd0, + 0x6f, 0xd5, 0x7a, 0x28, 0x6a, 0xab, 0x3b, 0x16, 0xf5, 0x1c, 0xb2, 0x27, 0x8b, 0xbc, 0x68, 0xcc, + 0xc1, 0xd1, 0x24, 0x1b, 0x4d, 0x1c, 0x69, 0xeb, 0x6b, 0x04, 0xd5, 0x98, 0xad, 0x29, 0x2c, 0xcd, + 0xd7, 0x14, 0x7e, 0x08, 0x10, 0x08, 0xdc, 0x1d, 0xdb, 0x76, 0x5f, 0xea, 0xac, 0x9f, 0x3b, 0x97, + 0x8d, 0x4d, 0x5f, 0x7e, 0x24, 0x28, 0xb0, 0xff, 0x23, 0xf3, 0x9c, 0x2e, 0x44, 0x75, 0x7a, 0x42, + 0xd4, 0x9e, 0xd5, 0xc1, 0x6b, 0xf3, 0x3a, 0xf8, 0x2d, 0xc8, 0x05, 0x68, 0xe8, 0x52, 0x59, 0xcc, + 0xe5, 0xeb, 0xbb, 0x49, 0xd6, 0xb0, 0xa1, 0x70, 0x29, 0x1c, 0x88, 0x5a, 0xca, 0xf3, 0xa9, 0x20, + 0xa6, 0x64, 0x84, 0xcd, 0x29, 0x3d, 0x78, 0x73, 0x5a, 0x0f, 0xd6, 0x2c, 0xc8, 0xeb, 0xd0, 0xfe, + 0xac, 0x93, 0x1e, 0x06, 0x05, 0xd3, 0x89, 0xa0, 0x60, 0x94, 0x5b, 0x9a, 0x49, 0xe6, 0x96, 0xce, + 0xd4, 0xcc, 0xe5, 0xe6, 0x6a, 0xe6, 0xea, 0x9f, 0x40, 0x4e, 0x59, 0xee, 0x10, 0x1a, 0x8d, 0xca, + 0xe0, 0xc4, 0x41, 0xb1, 0x14, 0xbf, 0x0e, 0x2c, 0x10, 0x64, 0x91, 0x88, 0xae, 0x39, 0x12, 0xa4, + 0x24, 0xd3, 0xbc, 0x0a, 0xd7, 0x15, 0x6e, 0x30, 0xfd, 0x86, 0xcc, 0x22, 0xc7, 0x3e, 0xf6, 0x4d, + 0xff, 0x82, 0x65, 0xeb, 0x1f, 0xd2, 0xc5, 0x7a, 0x28, 0x50, 0xe5, 0xa8, 0x46, 0x51, 0xa9, 0x65, + 0x4b, 0x6b, 0x1f, 0xca, 0xcb, 0xd0, 0x9e, 0x96, 0xca, 0x56, 0x23, 0x57, 0x86, 0x62, 0x31, 0xab, + 0xc9, 0x93, 0xf8, 0x8f, 0x6d, 0xbf, 0xd5, 0xb7, 0x12, 0x76, 0xdd, 0x74, 0xfa, 0x59, 0x6a, 0xd9, + 0xf4, 0xb3, 0xfa, 0x63, 0x58, 0x37, 0xa6, 0x75, 0x3a, 0x7f, 0x0f, 0x0a, 0xde, 0x38, 0xc9, 0xe7, + 0x45, 0x72, 0x19, 0xa2, 0xd7, 0x7f, 0x9a, 0x82, 0xd5, 0xb6, 0x2b, 0x85, 0xef, 0x9a, 0xce, 0x8e, + 0x63, 0x0e, 0xf8, 0xbb, 0xa1, 0x96, 0x5a, 0xec, 0xf7, 0x27, 0x71, 0xa7, 0x15, 0x96, 0xa3, 0x43, + 0xd8, 0xfc, 0x06, 0x6c, 0x08, 0xcb, 0x96, 0x9e, 0xaf, 0xac, 0xd9, 0x30, 0x4b, 0xf0, 0x3a, 0x30, + 0x05, 0xee, 0xd2, 0x96, 0xe8, 0xa9, 0x65, 0xae, 0xc2, 0xf5, 0x29, 0x68, 0x68, 0xaa, 0xa6, 0xf9, + 0x6d, 0xa8, 0xc6, 0xa7, 0xd1, 0xb6, 0xe7, 0xca, 0xb6, 0x6b, 0x89, 0x73, 0x32, 0x85, 0x58, 0xa6, + 0xfe, 0xeb, 0x85, 0xd0, 0x08, 0x7b, 0xaa, 0x73, 0x08, 0x7d, 0xcf, 0x8b, 0x0b, 0x54, 0x75, 0x2b, + 0x51, 0x08, 0x9d, 0x5e, 0xa2, 0x10, 0xfa, 0xc3, 0xb8, 0x98, 0x55, 0x1d, 0x14, 0xaf, 0x2c, 0x3c, + 0x7d, 0x28, 0xf5, 0x49, 0xdb, 0xe0, 0x5d, 0x91, 0xa8, 0x6c, 0x7d, 0x53, 0x3b, 0x5e, 0xd9, 0x65, + 0x6c, 0x55, 0x95, 0x25, 0xf0, 0xce, 0x6c, 0x05, 0xc5, 0x72, 0x29, 0x88, 0x73, 0xe6, 0x24, 0xbc, + 0xb4, 0x39, 0xf9, 0xed, 0x19, 0x1f, 0xa7, 0xb8, 0x30, 0x14, 0x76, 0x45, 0x7d, 0xe8, 0xb7, 0xa1, + 0x30, 0xb4, 0x03, 0xe9, 0xf9, 0xaa, 0x66, 0x79, 0xbe, 0xc6, 0x2a, 0x31, 0x5b, 0xbb, 0x0a, 0x91, + 0xf2, 0xc5, 0x42, 0x2a, 0xfe, 0x3d, 0xd8, 0xa0, 0x89, 0x3f, 0x8c, 0xad, 0x86, 0xa0, 0x5a, 0x5e, + 0x98, 0xa7, 0x97, 0x60, 0xb5, 0x35, 0x43, 0x62, 0xcc, 0x33, 0xa9, 0x0d, 0x00, 0xe2, 0xf5, 0x99, + 0xd3, 0x62, 0x9f, 0xa1, 0x66, 0xf9, 0x26, 0xe4, 0x83, 0xc9, 0x71, 0x7c, 0xd7, 0xa5, 0x5b, 0xb5, + 0x73, 0xa8, 0xcd, 0x59, 0x07, 0x87, 0xc2, 0x57, 0xdd, 0xbd, 0xb2, 0x70, 0xfa, 0xc3, 0xe4, 0xc2, + 0x2b, 0xe1, 0xbc, 0x7b, 0xc9, 0xea, 0x45, 0x9c, 0x13, 0x12, 0x50, 0x7b, 0x07, 0xca, 0x89, 0x49, + 0x45, 0xcd, 0x3c, 0x71, 0x2d, 0x2f, 0x0c, 0xbf, 0xe2, 0xb3, 0x2a, 0x1c, 0xb3, 0xc2, 0x00, 0x2c, + 0x3d, 0xd7, 0x0c, 0x60, 0xb3, 0x13, 0x78, 0x85, 0x1f, 0xfc, 0x0a, 0x54, 0x12, 0x26, 0x5d, 0x14, + 0x9a, 0x9b, 0x06, 0xd6, 0xcf, 0xe0, 0xf3, 0x09, 0x76, 0x87, 0xc2, 0x1f, 0xd9, 0x01, 0x1e, 0x24, + 0xca, 0xa5, 0xa3, 0x50, 0x86, 0x25, 0x5c, 0x69, 0xcb, 0x50, 0x83, 0x46, 0x6d, 0xfe, 0x4d, 0xc8, + 0x8d, 0x85, 0x3f, 0x0a, 0xb4, 0x16, 0x9d, 0x95, 0xa0, 0x85, 0x6c, 0x03, 0x43, 0xd1, 0xd4, 0xff, + 0x7e, 0x0a, 0x8a, 0xfb, 0x42, 0x9a, 0x68, 0x3b, 0xf0, 0xfd, 0x99, 0xaf, 0xcc, 0xdf, 0xcf, 0x86, + 0xa8, 0x9b, 0xda, 0xc9, 0xdc, 0x6c, 0x6b, 0x7c, 0xdd, 0xde, 0x5d, 0x89, 0x3b, 0x56, 0xdb, 0x82, + 0x82, 0x06, 0xd7, 0xde, 0x85, 0xf5, 0x19, 0x4c, 0x9a, 0x17, 0x65, 0xdb, 0x77, 0x2f, 0x46, 0x61, + 0x12, 0xd1, 0xaa, 0x31, 0x0d, 0xdc, 0x2a, 0x41, 0x61, 0xac, 0x08, 0xea, 0xbf, 0x7f, 0x83, 0x52, + 0x57, 0xec, 0x13, 0xf4, 0xbc, 0x17, 0x9d, 0xac, 0x77, 0x00, 0xe8, 0x68, 0x56, 0x09, 0x0e, 0x2a, + 0x5c, 0x9a, 0x80, 0xf0, 0xf7, 0xa3, 0x38, 0x77, 0x76, 0xa1, 0x51, 0x95, 0x64, 0x3e, 0x1b, 0xec, + 0xae, 0x42, 0xc1, 0x0e, 0x28, 0x5a, 0xa6, 0x93, 0x82, 0xc2, 0x26, 0xff, 0x16, 0xe4, 0xed, 0xd1, + 0xd8, 0xf3, 0xa5, 0x0e, 0x84, 0x5f, 0xc9, 0xb5, 0x4d, 0x98, 0xbb, 0x2b, 0x86, 0xa6, 0x41, 0x6a, + 0x71, 0x4e, 0xd4, 0xc5, 0x17, 0x53, 0xb7, 0xce, 0x43, 0x6a, 0x45, 0xc3, 0xbf, 0x0b, 0x95, 0x81, + 0xca, 0x89, 0x54, 0x8c, 0xb5, 0x12, 0xf9, 0xca, 0x55, 0x4c, 0x1e, 0x25, 0x09, 0x76, 0x57, 0x8c, + 0x69, 0x0e, 0xc8, 0x12, 0x0d, 0x78, 0x11, 0xc8, 0x9e, 0xf7, 0x91, 0x67, 0xbb, 0xe4, 0x94, 0xbe, + 0x80, 0xa5, 0x91, 0x24, 0x40, 0x96, 0x53, 0x1c, 0xf8, 0xd7, 0xd1, 0xe2, 0x09, 0xa4, 0x2e, 0x1b, + 0xbf, 0x7b, 0x15, 0xa7, 0x9e, 0x08, 0x74, 0xc1, 0x77, 0x20, 0xf9, 0x39, 0xd4, 0x12, 0x9b, 0x44, + 0x7f, 0xa4, 0x31, 0x1e, 0xfb, 0x1e, 0x7a, 0xb6, 0x15, 0xe2, 0xf6, 0xf5, 0xab, 0xb8, 0x1d, 0x5e, + 0x4a, 0xbd, 0xbb, 0x62, 0x5c, 0xc1, 0x9b, 0xf7, 0xd0, 0xb3, 0xd3, 0x43, 0xd8, 0x13, 0xe6, 0x59, + 0x58, 0x74, 0x7e, 0x7f, 0xa9, 0x59, 0x20, 0x8a, 0xdd, 0x15, 0x63, 0x86, 0x07, 0xff, 0x65, 0xd8, + 0x98, 0xfa, 0x26, 0xd5, 0x99, 0xaa, 0x92, 0xf4, 0xaf, 0x2d, 0x3d, 0x0c, 0x24, 0xda, 0x5d, 0x31, + 0xe6, 0x39, 0xf1, 0x09, 0x7c, 0x6e, 0x7e, 0x48, 0xdb, 0xa2, 0xef, 0xd8, 0xae, 0xd0, 0xd5, 0xeb, + 0xef, 0xbc, 0xdc, 0x6c, 0x69, 0xe2, 0xdd, 0x15, 0xe3, 0x72, 0xce, 0xfc, 0xcf, 0xc3, 0xed, 0xf1, + 0x42, 0x15, 0xa3, 0x54, 0x97, 0x2e, 0x7e, 0x7f, 0x6f, 0xc9, 0x2f, 0xcf, 0xd1, 0xef, 0xae, 0x18, + 0x57, 0xf2, 0x47, 0xdb, 0x99, 0x3c, 0x68, 0x9d, 0xba, 0xad, 0x1a, 0xfc, 0x36, 0x94, 0xcc, 0xbe, + 0xb3, 0x2b, 0x4c, 0x2b, 0x8a, 0xd5, 0xc7, 0x80, 0xda, 0xff, 0x48, 0x41, 0x5e, 0xcb, 0xfb, 0xed, + 0xe8, 0x3e, 0x3e, 0x52, 0xdd, 0x31, 0x80, 0x7f, 0x00, 0x25, 0xe1, 0xfb, 0x9e, 0xdf, 0xf4, 0xac, + 0x30, 0x95, 0x71, 0x36, 0x16, 0xac, 0xf8, 0x6c, 0xb6, 0x42, 0x34, 0x23, 0xa6, 0xe0, 0xef, 0x03, + 0xa8, 0x7d, 0xde, 0x8b, 0x2b, 0x70, 0x6a, 0x8b, 0xe9, 0xd5, 0xf5, 0x4f, 0x8c, 0x1d, 0x07, 0xcf, + 0xc2, 0xbb, 0x97, 0xb0, 0x19, 0x39, 0x9c, 0xb9, 0x84, 0xc3, 0x79, 0x5b, 0xc7, 0x11, 0x0e, 0xf0, + 0x85, 0xae, 0x43, 0x8b, 0x00, 0xb5, 0x7f, 0x95, 0x82, 0xbc, 0x52, 0x1e, 0xbc, 0x35, 0x3f, 0xa2, + 0xd7, 0x5e, 0xac, 0x73, 0x36, 0x67, 0x47, 0xf6, 0x2d, 0x00, 0xa5, 0x83, 0x12, 0x23, 0xbb, 0x3d, + 0xc3, 0x47, 0x93, 0x86, 0xc9, 0xc3, 0x31, 0x7e, 0xfd, 0xa1, 0xaa, 0x95, 0xa2, 0xc0, 0xed, 0x93, + 0xbd, 0x3d, 0xb6, 0xc2, 0x37, 0xa0, 0xf2, 0xe4, 0xe0, 0xf1, 0x41, 0xe7, 0xd9, 0xc1, 0x51, 0xcb, + 0x30, 0x3a, 0x86, 0x8a, 0xdf, 0x6e, 0x35, 0xb6, 0x8f, 0xda, 0x07, 0x87, 0x4f, 0x7a, 0x2c, 0x5d, + 0xfb, 0xa7, 0x29, 0xa8, 0x4c, 0xe9, 0xae, 0x3f, 0xd9, 0xa5, 0x4b, 0x4c, 0x7f, 0x66, 0xf1, 0xf4, + 0x67, 0x2f, 0x9b, 0xfe, 0xdc, 0xec, 0xf4, 0xff, 0x76, 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, 0x62, 0x85, 0xec, 0x34, 0x0e, 0x15, 0x2c, 0x5c, 0xdd, 0x5b, 0x2a, + 0xce, 0x0c, 0xa8, 0x76, 0xbd, 0x76, 0xb9, 0x06, 0xbd, 0x62, 0x08, 0x8f, 0xa0, 0x3c, 0x8e, 0xb7, + 0xe9, 0xcb, 0x99, 0x25, 0x49, 0xca, 0x17, 0xf4, 0xf3, 0x77, 0x52, 0xb0, 0x36, 0xad, 0x73, 0xff, + 0xbf, 0x9e, 0xd6, 0x7f, 0x98, 0x82, 0x8d, 0x39, 0x4d, 0x7e, 0xa5, 0x61, 0x37, 0xdb, 0xaf, 0xf4, + 0x12, 0xfd, 0xca, 0x2c, 0xe8, 0xd7, 0xe5, 0x9a, 0xe4, 0xea, 0x1e, 0x77, 0xe1, 0x73, 0x97, 0x9e, + 0x09, 0x57, 0x4c, 0xf5, 0x14, 0xd3, 0xcc, 0x2c, 0xd3, 0xdf, 0x4a, 0xc1, 0xed, 0xab, 0xf4, 0xfd, + 0xff, 0x73, 0xb9, 0x9a, 0xed, 0x61, 0xfd, 0xdd, 0xe8, 0x12, 0xbf, 0x0c, 0x05, 0xfd, 0x9b, 0x50, + 0x3a, 0x4d, 0x7a, 0xe8, 0x3d, 0x77, 0x55, 0x24, 0xda, 0x10, 0xa6, 0xae, 0x9a, 0x37, 0xc4, 0xd8, + 0xb1, 0xe9, 0x26, 0xf3, 0x16, 0x40, 0x83, 0xfc, 0xba, 0xb0, 0x88, 0xa5, 0xb9, 0xd7, 0xe9, 0xb6, + 0xd8, 0x4a, 0xd2, 0x88, 0xfd, 0x24, 0x54, 0xc4, 0xf5, 0x43, 0xc8, 0xc7, 0x65, 0x05, 0xfb, 0xa6, + 0x7f, 0x6a, 0xa9, 0xfb, 0xc2, 0x55, 0x28, 0x1e, 0x6a, 0x17, 0x4a, 0x7d, 0xea, 0xa3, 0x6e, 0xe7, + 0x40, 0x05, 0xbd, 0xb7, 0x3b, 0x3d, 0x55, 0x9c, 0xd0, 0x7d, 0xfa, 0x48, 0x5d, 0x5c, 0x3d, 0x32, + 0x1a, 0x87, 0xbb, 0x47, 0x84, 0x91, 0xab, 0xff, 0x66, 0x36, 0x3c, 0xd5, 0xea, 0x86, 0xbe, 0x89, + 0x04, 0xc8, 0xa3, 0x36, 0xf7, 0x34, 0xe3, 0xe8, 0x33, 0x94, 0x50, 0xdb, 0x3a, 0x57, 0x71, 0x08, + 0x96, 0xe6, 0x79, 0x48, 0x1f, 0x1e, 0xab, 0x2c, 0xa0, 0x5d, 0x39, 0x72, 0x54, 0x55, 0x63, 0xef, + 0x5c, 0xb2, 0x1c, 0x3e, 0x34, 0x83, 0x33, 0x96, 0xaf, 0xff, 0xb3, 0x0c, 0x94, 0x22, 0x55, 0xf9, + 0x32, 0xaa, 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, 0x9a, 0xad, 0xd6, 0x76, 0x6b, 0x9b, + 0x55, 0xf8, 0x57, 0xe0, 0xcb, 0xd4, 0x29, 0xdd, 0x89, 0xe9, 0x8f, 0x7d, 0xd2, 0x3e, 0x3c, 0x6a, + 0x18, 0xcd, 0xdd, 0xf6, 0xd3, 0x16, 0x5b, 0xe3, 0xaf, 0xc1, 0x97, 0x2e, 0x47, 0xdd, 0x6e, 0x1b, + 0xad, 0x66, 0xaf, 0x63, 0x7c, 0xcc, 0x36, 0xf8, 0x17, 0xe0, 0x73, 0xbb, 0xbd, 0xfd, 0xbd, 0xa3, + 0x67, 0x46, 0xe7, 0xe0, 0xd1, 0x11, 0x3d, 0x76, 0x7b, 0xc6, 0x93, 0x66, 0xef, 0x89, 0xd1, 0x62, + 0xc0, 0x6b, 0x70, 0xf3, 0x70, 0xeb, 0xe8, 0xa0, 0xd3, 0x3b, 0x6a, 0x1c, 0x7c, 0xbc, 0xb5, 0xd7, + 0x69, 0x3e, 0x3e, 0xda, 0xe9, 0x18, 0xfb, 0x8d, 0x1e, 0x2b, 0xf3, 0xaf, 0xc2, 0x6b, 0xcd, 0xee, + 0x53, 0xdd, 0xcd, 0xce, 0xce, 0x91, 0xd1, 0x79, 0xd6, 0x3d, 0xea, 0x18, 0x47, 0x46, 0x6b, 0x8f, + 0xc6, 0xdc, 0x8d, 0xfb, 0x5e, 0xe0, 0xb7, 0xa1, 0xda, 0x3e, 0xe8, 0x3e, 0xd9, 0xd9, 0x69, 0x37, + 0xdb, 0xad, 0x83, 0xde, 0xd1, 0x61, 0xcb, 0xd8, 0x6f, 0x77, 0xbb, 0x88, 0xc6, 0x4a, 0xf5, 0xef, + 0x40, 0xbe, 0xed, 0x9e, 0xd9, 0x92, 0xf6, 0x97, 0x16, 0x46, 0xed, 0x71, 0x85, 0x4d, 0xda, 0x16, + 0xf6, 0xc0, 0xa5, 0x6a, 0x7d, 0xda, 0x5d, 0xab, 0x46, 0x0c, 0xa8, 0xff, 0xa3, 0x34, 0x54, 0x14, + 0x8b, 0xd0, 0x83, 0xbb, 0x07, 0xeb, 0x3a, 0x14, 0xda, 0x9e, 0x56, 0x61, 0xb3, 0x60, 0xfa, 0x19, + 0x2c, 0x05, 0x4a, 0x28, 0xb2, 0x24, 0x88, 0xae, 0xd7, 0x88, 0x39, 0x7a, 0x82, 0xea, 0x62, 0x31, + 0x06, 0x7c, 0x56, 0x0d, 0x86, 0xda, 0x51, 0x21, 0xf6, 0x3d, 0xb7, 0x19, 0x95, 0x6d, 0x4c, 0xc1, + 0xf8, 0x27, 0x70, 0x2b, 0x6a, 0xb7, 0xdc, 0xbe, 0x7f, 0x31, 0x8e, 0x7e, 0xad, 0xae, 0xb0, 0x30, + 0xa4, 0xb0, 0x63, 0x3b, 0x62, 0x0a, 0xd1, 0xb8, 0x8c, 0x41, 0xfd, 0x0f, 0x52, 0x09, 0xbf, 0x57, + 0xf9, 0xb5, 0x57, 0x6a, 0xfc, 0x45, 0x77, 0x30, 0xe8, 0x79, 0xea, 0xee, 0x6b, 0x43, 0x44, 0x37, + 0xf9, 0x21, 0x70, 0x7b, 0xbe, 0xd3, 0xd9, 0x25, 0x3b, 0xbd, 0x80, 0x76, 0x36, 0x84, 0x9e, 0x9b, + 0x0f, 0xa1, 0xdf, 0x01, 0x18, 0x38, 0xde, 0xb1, 0xe9, 0x24, 0x0c, 0xcd, 0x04, 0xa4, 0xee, 0x40, + 0x31, 0xfc, 0x4d, 0x3c, 0x7e, 0x13, 0xf2, 0xf4, 0xab, 0x78, 0x51, 0x40, 0x51, 0xb5, 0xf8, 0x2e, + 0xac, 0x89, 0xe9, 0x3e, 0xa7, 0x97, 0xec, 0xf3, 0x0c, 0x5d, 0xfd, 0x1b, 0xb0, 0x31, 0x87, 0x84, + 0x93, 0x38, 0x36, 0x65, 0x54, 0x18, 0x8f, 0xcf, 0xf3, 0x97, 0xd8, 0xf5, 0xff, 0x98, 0x86, 0xd5, + 0x7d, 0xd3, 0xb5, 0x4f, 0x44, 0x20, 0xc3, 0xde, 0x06, 0xfd, 0xa1, 0x18, 0x99, 0x61, 0x6f, 0x55, + 0x4b, 0x47, 0x19, 0xd2, 0xc9, 0xf8, 0xfd, 0xdc, 0x75, 0xcf, 0x4d, 0xc8, 0x9b, 0x13, 0x39, 0x8c, + 0x72, 0xc5, 0x75, 0x0b, 0xd7, 0xce, 0xb1, 0xfb, 0xc2, 0x0d, 0x42, 0xd9, 0x0c, 0x9b, 0x71, 0x4e, + 0x4b, 0xfe, 0x8a, 0x9c, 0x96, 0xc2, 0xfc, 0xfc, 0xdf, 0x85, 0x72, 0xd0, 0xf7, 0x85, 0x70, 0x83, + 0xa1, 0x27, 0xc3, 0xdf, 0x53, 0x4c, 0x82, 0x28, 0x6d, 0xcc, 0x7b, 0xee, 0xe2, 0x0e, 0xdd, 0xb3, + 0xdd, 0x53, 0x9d, 0x0d, 0x35, 0x05, 0x43, 0x19, 0xa4, 0x18, 0x8b, 0xfd, 0x43, 0x41, 0xfe, 0x7d, + 0xce, 0x88, 0xda, 0x14, 0x45, 0x31, 0xa5, 0x18, 0x78, 0xbe, 0x2d, 0x54, 0x28, 0xb1, 0x64, 0x24, + 0x20, 0x48, 0xeb, 0x98, 0xee, 0x60, 0x62, 0x0e, 0x84, 0xbe, 0x14, 0x8e, 0xda, 0xf5, 0xff, 0x99, + 0x03, 0xd8, 0x17, 0xa3, 0x63, 0xe1, 0x07, 0x43, 0x7b, 0x4c, 0x57, 0x1d, 0xb6, 0xce, 0x90, 0xad, + 0x18, 0xf4, 0xcc, 0xdf, 0x9b, 0x4a, 0x5e, 0x9f, 0xbf, 0x9c, 0x8c, 0xc9, 0x67, 0x43, 0x30, 0x38, + 0x39, 0xa6, 0x14, 0x3a, 0x9d, 0x88, 0xe6, 0x3f, 0x6b, 0x24, 0x41, 0x94, 0x26, 0x66, 0x4a, 0xd1, + 0x72, 0x2d, 0x15, 0xe2, 0xc9, 0x1a, 0x51, 0x9b, 0xca, 0x5f, 0x82, 0xc6, 0x44, 0x7a, 0x86, 0x70, + 0xc5, 0xf3, 0xa8, 0xb2, 0x2b, 0x06, 0xf1, 0x7d, 0xa8, 0x8c, 0xcd, 0x8b, 0x91, 0x70, 0xe5, 0xbe, + 0x90, 0x43, 0xcf, 0xd2, 0xb9, 0x3f, 0xaf, 0x5d, 0xde, 0xc1, 0xc3, 0x24, 0xba, 0x31, 0x4d, 0x8d, + 0x32, 0xe1, 0x06, 0xb4, 0x4b, 0xd4, 0x32, 0xea, 0x16, 0xdf, 0x02, 0x50, 0x4f, 0xe4, 0x39, 0x15, + 0x17, 0x47, 0xa2, 0xcc, 0x91, 0x08, 0x84, 0x7f, 0x66, 0x2b, 0x3d, 0xa6, 0x7c, 0xc3, 0x98, 0x0a, + 0xb5, 0xde, 0x24, 0x10, 0x7e, 0x6b, 0x64, 0xda, 0x8e, 0x5e, 0xe0, 0x18, 0xc0, 0xdf, 0x86, 0x1b, + 0xc1, 0xe4, 0x18, 0x65, 0xe6, 0x58, 0xf4, 0xbc, 0x03, 0xf1, 0x3c, 0x70, 0x84, 0x94, 0xc2, 0xd7, + 0xf9, 0x05, 0x8b, 0x5f, 0xd6, 0x07, 0x91, 0xd9, 0x43, 0xbf, 0xdd, 0x81, 0x4f, 0x71, 0x12, 0x53, + 0x04, 0xd2, 0x19, 0x5e, 0x2c, 0xc5, 0x19, 0xac, 0x2a, 0x90, 0x4e, 0x00, 0x4b, 0xf3, 0x2f, 0xc3, + 0x17, 0xa7, 0x90, 0x0c, 0x75, 0x11, 0x1c, 0xec, 0xd8, 0xae, 0xe9, 0xd8, 0x3f, 0x54, 0xd7, 0xf2, + 0x99, 0xfa, 0x18, 0x2a, 0x53, 0x13, 0x47, 0xa5, 0x88, 0xf4, 0xa4, 0xb3, 0x60, 0x18, 0xac, 0xaa, + 0x76, 0x57, 0xfa, 0x36, 0xdd, 0x70, 0x44, 0x90, 0x26, 0xee, 0x73, 0x8f, 0xa5, 0xf9, 0x75, 0x60, + 0x0a, 0xd2, 0x76, 0xcd, 0xf1, 0xb8, 0x31, 0x1e, 0x3b, 0x82, 0x65, 0xa8, 0xcc, 0x33, 0x86, 0xaa, + 0x14, 0x76, 0x96, 0xad, 0x7f, 0x0f, 0x6e, 0xd1, 0xcc, 0x3c, 0x15, 0x7e, 0xe4, 0xd8, 0xea, 0xb1, + 0xde, 0x80, 0x0d, 0xf5, 0x74, 0xe0, 0x49, 0xf5, 0x9a, 0x8c, 0x3d, 0x0e, 0x6b, 0x0a, 0x8c, 0xb6, + 0x4e, 0x57, 0x50, 0xf1, 0x66, 0x04, 0x8b, 0xf0, 0xd2, 0xf5, 0x9f, 0xe6, 0x81, 0xc7, 0x02, 0xd1, + 0xb3, 0x85, 0xbf, 0x6d, 0x4a, 0x33, 0x11, 0x99, 0xac, 0x5c, 0x7a, 0xb7, 0xfe, 0xe2, 0xfc, 0xb5, + 0x9b, 0x90, 0xb7, 0x03, 0x74, 0xc5, 0x74, 0x6a, 0xaa, 0x6e, 0xf1, 0x3d, 0x80, 0xb1, 0xf0, 0x6d, + 0xcf, 0x22, 0x09, 0xca, 0x2d, 0xac, 0x21, 0x98, 0xef, 0xd4, 0xe6, 0x61, 0x44, 0x63, 0x24, 0xe8, + 0xb1, 0x1f, 0xaa, 0xa5, 0x6e, 0xaa, 0xf3, 0xd4, 0xe9, 0x24, 0x88, 0xbf, 0x01, 0xd7, 0xc6, 0xbe, + 0xdd, 0x17, 0x6a, 0x39, 0x9e, 0x04, 0x56, 0x93, 0x7e, 0xf1, 0xae, 0x40, 0x98, 0x8b, 0x5e, 0xa1, + 0x04, 0x9a, 0x2e, 0x39, 0x28, 0x01, 0xdd, 0xcd, 0xea, 0x72, 0x67, 0x95, 0xbc, 0x59, 0x31, 0x16, + 0xbf, 0xe4, 0xf7, 0x81, 0xe9, 0x17, 0xfb, 0xb6, 0xbb, 0x27, 0xdc, 0x81, 0x1c, 0x92, 0x70, 0x57, + 0x8c, 0x39, 0x38, 0x69, 0x30, 0xf5, 0xbb, 0x42, 0xea, 0xde, 0xa6, 0x64, 0x44, 0x6d, 0x55, 0x42, + 0xef, 0x78, 0x7e, 0x57, 0xfa, 0x3a, 0x0b, 0x35, 0x6a, 0xa3, 0xcd, 0x12, 0x50, 0x5f, 0x0f, 0x7d, + 0xcf, 0x9a, 0xd0, 0xad, 0x82, 0x52, 0x62, 0xb3, 0xe0, 0x18, 0x73, 0xdf, 0x74, 0x75, 0x12, 0x61, + 0x25, 0x89, 0x19, 0x81, 0xc9, 0x07, 0xf3, 0x82, 0x98, 0xe1, 0xba, 0xf6, 0xc1, 0x12, 0x30, 0x8d, + 0x13, 0xb3, 0x62, 0x11, 0x4e, 0xcc, 0x87, 0xc6, 0x6f, 0xf9, 0x9e, 0x6d, 0xc5, 0xbc, 0x36, 0x54, + 0x7e, 0xe8, 0x2c, 0x3c, 0x81, 0x1b, 0xf3, 0xe4, 0x53, 0xb8, 0x11, 0xbc, 0xfe, 0xa3, 0x14, 0x40, + 0xbc, 0xf8, 0x28, 0xf2, 0x71, 0x2b, 0xde, 0xe2, 0xb7, 0xe0, 0x5a, 0x12, 0xec, 0xe8, 0x44, 0x50, + 0x92, 0xfb, 0xf8, 0xc5, 0xb6, 0x79, 0x11, 0xb0, 0xb4, 0x2e, 0x38, 0xd6, 0xb0, 0x67, 0x42, 0x50, + 0x56, 0xdd, 0x75, 0x60, 0x31, 0x90, 0xaa, 0xc8, 0x02, 0x96, 0x9d, 0x46, 0xfd, 0x58, 0x98, 0x7e, + 0xc0, 0x72, 0xf5, 0x5d, 0xc8, 0xab, 0xcb, 0xa5, 0x05, 0xd7, 0xc2, 0x2f, 0x97, 0xe3, 0xf1, 0x57, + 0x53, 0x00, 0xdb, 0x2a, 0x17, 0x18, 0x4f, 0xf1, 0x05, 0xb7, 0xed, 0x8b, 0x2c, 0x2a, 0xd3, 0xb2, + 0x28, 0xa7, 0x3a, 0x13, 0xfd, 0x5a, 0x0d, 0x36, 0x51, 0x72, 0xcc, 0x30, 0x73, 0x4a, 0xed, 0xb9, + 0xa8, 0xad, 0x0e, 0x90, 0xa6, 0xe7, 0xba, 0xa2, 0x8f, 0xc7, 0x4f, 0x74, 0x80, 0x44, 0xa0, 0xfa, + 0xbf, 0x29, 0x40, 0xb9, 0x39, 0x34, 0xe5, 0xbe, 0x08, 0x02, 0x73, 0x20, 0xe6, 0xfa, 0x52, 0x85, + 0x82, 0xe7, 0x5b, 0xc2, 0x8f, 0x2b, 0xc1, 0x74, 0x33, 0x99, 0x63, 0x90, 0x99, 0xce, 0x31, 0xb8, + 0x0d, 0x25, 0x75, 0x83, 0x61, 0x35, 0x94, 0x1a, 0xc8, 0x18, 0x31, 0x00, 0xcf, 0xea, 0x91, 0x67, + 0x91, 0x32, 0x6a, 0xa8, 0xe0, 0x7f, 0xc6, 0x48, 0x40, 0x54, 0x4a, 0xc7, 0xd8, 0xb9, 0xe8, 0x79, + 0xba, 0x4f, 0x6d, 0x2b, 0x2e, 0x9b, 0x9d, 0x86, 0xf3, 0x26, 0x14, 0x46, 0xaa, 0xa1, 0x2f, 0x32, + 0x66, 0x43, 0xfe, 0x89, 0xa1, 0x6d, 0xea, 0xbf, 0xba, 0x72, 0xc5, 0x08, 0x29, 0xd1, 0x45, 0x37, + 0xa5, 0x34, 0xfb, 0xc3, 0x91, 0x56, 0x11, 0x99, 0x05, 0x77, 0x9a, 0x49, 0x46, 0x8d, 0x08, 0xdb, + 0x48, 0x52, 0xf2, 0x2d, 0x28, 0xf9, 0xc2, 0x9c, 0xba, 0x56, 0x7d, 0xe5, 0x0a, 0x36, 0x46, 0x88, + 0x6b, 0xc4, 0x64, 0xb5, 0x9f, 0xa4, 0x60, 0x6d, 0xba, 0xa3, 0x7f, 0x12, 0x3f, 0x38, 0xf6, 0xad, + 0xf8, 0x07, 0xc7, 0x3e, 0xc3, 0x8f, 0x77, 0xfd, 0x56, 0x0a, 0x20, 0x9e, 0x03, 0x54, 0xf9, 0xea, + 0x87, 0x91, 0x42, 0x23, 0x54, 0xb5, 0xf8, 0xee, 0x54, 0x35, 0xfd, 0xdb, 0x4b, 0x4d, 0x68, 0xe2, + 0x31, 0x91, 0xa3, 0xfc, 0x00, 0xd6, 0xa6, 0xe1, 0x94, 0xdb, 0xdd, 0xde, 0x6b, 0xa9, 0x10, 0x47, + 0x7b, 0xbf, 0xf1, 0xa8, 0xa5, 0x2b, 0x85, 0xda, 0x07, 0x8f, 0x59, 0xba, 0xf6, 0x87, 0x29, 0x28, + 0x45, 0xd3, 0xcb, 0xbf, 0x9b, 0x5c, 0x17, 0x95, 0x27, 0xf1, 0xd6, 0x32, 0xeb, 0x12, 0x3f, 0xb5, + 0x5c, 0xe9, 0x5f, 0x24, 0x97, 0xc9, 0x83, 0xb5, 0xe9, 0x97, 0x0b, 0x74, 0xc2, 0xa3, 0x69, 0x9d, + 0xf0, 0xe6, 0x52, 0x9f, 0x0c, 0x3d, 0xaf, 0x3d, 0x3b, 0x90, 0x5a, 0x5d, 0xbc, 0x9f, 0x7e, 0x2f, + 0x55, 0xbb, 0x0b, 0xab, 0xc9, 0x57, 0xf3, 0xe5, 0x80, 0xf7, 0xff, 0x30, 0x03, 0x6b, 0xd3, 0xa9, + 0x06, 0x54, 0x7c, 0xa4, 0xd2, 0x5c, 0x3a, 0x8e, 0x95, 0x48, 0xeb, 0x66, 0x7c, 0x1d, 0xca, 0xda, + 0xb7, 0x23, 0xc0, 0x06, 0x05, 0x51, 0xbc, 0x91, 0x60, 0x77, 0x93, 0x3f, 0xaa, 0xf8, 0x06, 0x87, + 0xb0, 0x2c, 0x8c, 0x8d, 0x79, 0x49, 0xff, 0xbc, 0xd4, 0xaf, 0xa4, 0x79, 0x25, 0x91, 0x5c, 0xfc, + 0x63, 0x34, 0x6c, 0xd6, 0xb7, 0x26, 0xae, 0xe5, 0x08, 0x2b, 0x82, 0xfe, 0x24, 0x09, 0x8d, 0xb2, + 0x83, 0x7f, 0x25, 0xcb, 0xd7, 0xa0, 0xd4, 0x9d, 0x1c, 0xeb, 0xcc, 0xe0, 0xbf, 0x90, 0xe5, 0x37, + 0x61, 0x43, 0x63, 0xc5, 0x29, 0x7e, 0xec, 0x2f, 0xa2, 0x0a, 0x5e, 0x6b, 0xa8, 0xf9, 0xd2, 0x1d, + 0x65, 0x7f, 0x29, 0x8b, 0x5d, 0xa0, 0x6a, 0xe3, 0xbf, 0x4c, 0x7c, 0xa2, 0xda, 0x0c, 0xf6, 0xab, + 0x59, 0xbe, 0x0e, 0xd0, 0xed, 0x45, 0x1f, 0xfa, 0xf5, 0x2c, 0x2f, 0x43, 0xbe, 0xdb, 0x23, 0x6e, + 0x3f, 0xca, 0xf2, 0x1b, 0xc0, 0xe2, 0xb7, 0x3a, 0xf1, 0xf1, 0xaf, 0xa9, 0xce, 0x44, 0x99, 0x8c, + 0x7f, 0x3d, 0x8b, 0xe3, 0x0a, 0x67, 0x99, 0xfd, 0x8d, 0x2c, 0x67, 0x50, 0x4e, 0x84, 0xe6, 0xd8, + 0xdf, 0xcc, 0x72, 0x0e, 0x95, 0x7d, 0x3b, 0x08, 0x6c, 0x77, 0xa0, 0x47, 0xf0, 0x6b, 0xf4, 0xe5, + 0x9d, 0xa8, 0xbc, 0x84, 0xfd, 0x46, 0x96, 0xdf, 0x02, 0x9e, 0xbc, 0x8e, 0xd0, 0x2f, 0xfe, 0x16, + 0x51, 0x2b, 0xb5, 0x1f, 0x68, 0xd8, 0xdf, 0x26, 0x6a, 0x94, 0x04, 0x0d, 0xf8, 0x4d, 0x9a, 0x90, + 0x66, 0x9c, 0x2a, 0xa9, 0xe1, 0x3f, 0x26, 0xe2, 0x70, 0x31, 0x15, 0xec, 0x27, 0xd9, 0xfb, 0x3f, + 0xa5, 0x70, 0x72, 0x32, 0xe3, 0x88, 0xaf, 0x42, 0xd1, 0xf1, 0xdc, 0x81, 0x54, 0x3f, 0x66, 0x59, + 0x81, 0x52, 0x30, 0xf4, 0x7c, 0x49, 0x4d, 0xaa, 0x7f, 0x73, 0xa9, 0x12, 0x5a, 0xe5, 0x96, 0x2b, + 0x27, 0x45, 0x85, 0xe7, 0xa4, 0x39, 0x60, 0xe5, 0x28, 0xc9, 0x33, 0x1b, 0x25, 0xa2, 0x52, 0x45, + 0x76, 0x58, 0xf1, 0xca, 0xf2, 0x88, 0x3a, 0xf1, 0x1d, 0x95, 0x90, 0x2a, 0xd0, 0x40, 0x55, 0xbf, + 0x5a, 0x37, 0x1e, 0xa2, 0x1d, 0x5c, 0x52, 0x50, 0xef, 0xfb, 0xb6, 0xaa, 0xa5, 0xd4, 0xf9, 0x5d, + 0x16, 0xf6, 0x23, 0x4a, 0x61, 0x60, 0xe2, 0xfe, 0xdf, 0x49, 0xc1, 0x6a, 0x58, 0x87, 0x6c, 0x0f, + 0x6c, 0x57, 0xa5, 0xb4, 0x86, 0x3f, 0x11, 0xda, 0x77, 0xec, 0x71, 0xf8, 0x93, 0x7b, 0xeb, 0x50, + 0xb6, 0x7c, 0x73, 0xd0, 0x70, 0xad, 0x6d, 0xdf, 0x1b, 0xab, 0x6e, 0xab, 0x0b, 0x27, 0x95, 0x4a, + 0xfb, 0x5c, 0x1c, 0x23, 0xfa, 0x58, 0xf8, 0x2c, 0x4b, 0xb9, 0x63, 0x43, 0xd3, 0xb7, 0xdd, 0x41, + 0xeb, 0x5c, 0x0a, 0x37, 0x50, 0x29, 0xb5, 0x65, 0x28, 0x4c, 0x02, 0xd1, 0x37, 0x03, 0xc1, 0xf2, + 0xd8, 0x38, 0x9e, 0xd8, 0x8e, 0xb4, 0x5d, 0xf5, 0x4b, 0x77, 0x51, 0xce, 0x6c, 0x11, 0x47, 0x66, + 0x8e, 0x6d, 0x56, 0xba, 0xff, 0x7b, 0x29, 0x28, 0x93, 0x58, 0xc4, 0x21, 0xd5, 0xd8, 0xe4, 0x28, + 0x43, 0x61, 0x2f, 0xfa, 0xc9, 0xb3, 0x3c, 0xa4, 0x3b, 0xa7, 0x2a, 0xa4, 0xaa, 0xc5, 0x42, 0x95, + 0x13, 0xaa, 0x5f, 0x3f, 0xcb, 0xf2, 0xcf, 0xc1, 0x0d, 0x43, 0x8c, 0x3c, 0x29, 0x9e, 0x99, 0xb6, + 0x4c, 0x16, 0x99, 0xe4, 0xd0, 0x3b, 0x51, 0xaf, 0xc2, 0xaa, 0x92, 0x3c, 0x79, 0x27, 0xf8, 0xd9, + 0x10, 0x52, 0xc0, 0xd1, 0x13, 0x44, 0xbb, 0x2b, 0xc5, 0x08, 0xe5, 0x23, 0xcf, 0x76, 0xf1, 0x6b, + 0x54, 0xc4, 0x4a, 0x10, 0x8a, 0xcd, 0x23, 0x08, 0xee, 0x1f, 0xc0, 0xcd, 0xc5, 0x11, 0x65, 0x55, + 0xde, 0x4a, 0xbf, 0xb3, 0x4b, 0x65, 0x07, 0xcf, 0x7c, 0x5b, 0x55, 0x29, 0x96, 0x20, 0xd7, 0x79, + 0xee, 0x92, 0x58, 0x6c, 0x40, 0xe5, 0xc0, 0x4b, 0xd0, 0xb0, 0xcc, 0xfd, 0xfe, 0xd4, 0x25, 0x40, + 0x3c, 0x29, 0x61, 0x27, 0x56, 0x12, 0x25, 0x35, 0x29, 0x15, 0x5e, 0xa6, 0x7f, 0x95, 0xa0, 0x4a, + 0xff, 0x75, 0xf0, 0xdd, 0x52, 0xa5, 0xff, 0x51, 0x37, 0xb3, 0xea, 0x37, 0x90, 0xdc, 0xbe, 0x70, + 0x84, 0xc5, 0x72, 0xf7, 0xdf, 0x83, 0x75, 0x3d, 0xd4, 0xbe, 0x08, 0x82, 0xb0, 0x24, 0xe5, 0xd0, + 0xb7, 0xcf, 0xd4, 0xcf, 0x0b, 0xac, 0x42, 0xf1, 0x50, 0xf8, 0x81, 0xe7, 0xd2, 0x4f, 0x2b, 0x00, + 0xe4, 0xbb, 0x43, 0xd3, 0xc7, 0x6f, 0xdc, 0x6f, 0x42, 0x89, 0x4a, 0x54, 0x1e, 0xdb, 0xae, 0x85, + 0x23, 0xd9, 0xd2, 0x89, 0xd8, 0xf4, 0x1b, 0x36, 0x67, 0x34, 0xbe, 0xa2, 0xfa, 0xb5, 0x4f, 0x96, + 0xe6, 0x37, 0x81, 0xa3, 0xf7, 0x3c, 0x32, 0xa9, 0x60, 0xd2, 0xb9, 0x50, 0xbf, 0x0c, 0x9b, 0xb9, + 0xff, 0x6d, 0xe0, 0x2a, 0x06, 0x64, 0x89, 0x73, 0xdb, 0x1d, 0x44, 0xb5, 0xd8, 0x40, 0x3f, 0xac, + 0x60, 0x89, 0xf3, 0xb0, 0xbe, 0x28, 0x6c, 0x84, 0x3f, 0xef, 0xb0, 0xe3, 0x4d, 0x5c, 0xec, 0xc5, + 0x53, 0xb8, 0xae, 0x64, 0x06, 0xbb, 0x45, 0xd5, 0x78, 0x97, 0x3a, 0xa6, 0xaa, 0xbe, 0x48, 0x4e, + 0x82, 0x08, 0x97, 0xa5, 0xb0, 0x63, 0x91, 0x53, 0x17, 0xc3, 0xd3, 0xf7, 0xeb, 0x70, 0x6d, 0x81, + 0x67, 0x4d, 0x5a, 0x5a, 0xf9, 0x17, 0x6c, 0xe5, 0xfe, 0x87, 0xb0, 0xa1, 0xf4, 0xca, 0x81, 0xaa, + 0x97, 0x0a, 0x8f, 0xc8, 0x67, 0xed, 0x9d, 0xb6, 0x9a, 0xba, 0x66, 0x6b, 0x6f, 0xef, 0xc9, 0x5e, + 0xc3, 0x60, 0x29, 0x5a, 0xe0, 0x4e, 0xef, 0xa8, 0xd9, 0x39, 0x38, 0x68, 0x35, 0x7b, 0xad, 0x6d, + 0x96, 0xde, 0xba, 0xff, 0x6f, 0x3f, 0xbd, 0x93, 0xfa, 0xd9, 0xa7, 0x77, 0x52, 0xff, 0xf5, 0xd3, + 0x3b, 0xa9, 0x1f, 0xfd, 0xfc, 0xce, 0xca, 0xcf, 0x7e, 0x7e, 0x67, 0xe5, 0x3f, 0xff, 0xfc, 0xce, + 0xca, 0x27, 0x6c, 0xf6, 0xdf, 0x97, 0x1c, 0xe7, 0xc9, 0xa4, 0x7d, 0xeb, 0xff, 0x06, 0x00, 0x00, + 0xff, 0xff, 0xb5, 0x87, 0x64, 0x2b, 0xd9, 0x64, 0x00, 0x00, } func (m *SmartBlockSnapshotBase) Marshal() (dAtA []byte, err error) { @@ -13027,6 +13095,29 @@ func (m *AccountInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *AccountAuth) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *AccountAuth) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *AccountAuth) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + func (m *LinkPreview) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -17447,6 +17538,15 @@ func (m *AccountInfo) Size() (n int) { return n } +func (m *AccountAuth) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + func (m *LinkPreview) Size() (n int) { if m == nil { return 0 @@ -26610,6 +26710,56 @@ func (m *AccountInfo) Unmarshal(dAtA []byte) error { } return nil } +func (m *AccountAuth) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Auth: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Auth: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipModels(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthModels + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *LinkPreview) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/pkg/lib/pb/model/protos/models.proto b/pkg/lib/pb/model/protos/models.proto index 509f9045c..955f6546b 100644 --- a/pkg/lib/pb/model/protos/models.proto +++ b/pkg/lib/pb/model/protos/models.proto @@ -674,6 +674,14 @@ message Account { string networkId = 106; // network id to which anytype is connected } + message Auth { + enum LocalApiScope { + Limited = 0; // Used in WebClipper; AccountSelect(to be deprecated), ObjectSearch, ObjectShow, ObjectCreate, ObjectCreateFromURL, BlockPreview, BlockPaste, BroadcastPayloadEvent + JsonAPI = 1; // JSON API only, no direct grpc api calls allowed + Full = 2; // Full access, not available via LocalLink + } + } + } message LinkPreview { From 24ce41a310c7bbc1531568d35eac1ed2a550cbc9 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Sun, 19 Jan 2025 13:16:15 +0100 Subject: [PATCH 180/279] GO-4642: Check token validity in ensureAuthenticated --- cmd/grpcserver/grpc.go | 2 +- core/api/server/middleware.go | 39 ++++++++++++++++++++++++------ core/api/server/router.go | 17 ++++++++----- core/api/server/server.go | 8 ++++-- core/api/service.go | 9 +++++-- core/core.go | 9 +++++++ core/interfaces/token_validator.go | 8 ++++++ 7 files changed, 74 insertions(+), 18 deletions(-) create mode 100644 core/interfaces/token_validator.go diff --git a/cmd/grpcserver/grpc.go b/cmd/grpcserver/grpc.go index 827fd3c39..085cf0ebe 100644 --- a/cmd/grpcserver/grpc.go +++ b/cmd/grpcserver/grpc.go @@ -226,7 +226,7 @@ func main() { }() startReportMemory(mw) - api.SetMiddlewareParams(mw) + api.SetMiddlewareParams(mw, mw) shutdown := func() { server.Stop() diff --git a/core/api/server/middleware.go b/core/api/server/middleware.go index bc8cb7312..9ff0aef53 100644 --- a/core/api/server/middleware.go +++ b/core/api/server/middleware.go @@ -4,6 +4,7 @@ import ( "context" "fmt" "net/http" + "strings" "github.com/anyproto/any-sync/app" "github.com/didip/tollbooth/v8" @@ -11,6 +12,9 @@ import ( "github.com/gin-gonic/gin" "github.com/anyproto/anytype-heart/core/anytype/account" + "github.com/anyproto/anytype-heart/core/interfaces" + "github.com/anyproto/anytype-heart/pb" + "github.com/anyproto/anytype-heart/pb/service" ) // rateLimit is a middleware that limits the number of requests per second. @@ -32,15 +36,36 @@ func (s *Server) rateLimit(max float64) gin.HandlerFunc { } // ensureAuthenticated is a middleware that ensures the request is authenticated. -func (s *Server) ensureAuthenticated() gin.HandlerFunc { +func (s *Server) ensureAuthenticated(mw service.ClientCommandsServer, tv interfaces.TokenValidator) gin.HandlerFunc { return func(c *gin.Context) { - // token := c.GetHeader("Authorization") - // if token == "" { - // c.AbortWithStatusJSON(http.StatusUnauthorized, gin.H{"error": "Unauthorized"}) - // return - // } + authHeader := c.GetHeader("Authorization") + if authHeader == "" { + c.AbortWithStatusJSON(http.StatusUnauthorized, gin.H{"error": "Missing Authorization header"}) + return + } + + if !strings.HasPrefix(authHeader, "Bearer ") { + c.AbortWithStatusJSON(http.StatusUnauthorized, gin.H{"error": "Invalid Authorization header format"}) + return + } + + key := strings.TrimPrefix(authHeader, "Bearer ") + token, exists := s.KeyToToken[key] + if !exists { + response := mw.WalletCreateSession(context.Background(), &pb.RpcWalletCreateSessionRequest{Auth: &pb.RpcWalletCreateSessionRequestAuthOfAppKey{AppKey: key}}) + if response.Error.Code != pb.RpcWalletCreateSessionResponseError_NULL { + c.AbortWithStatusJSON(http.StatusUnauthorized, gin.H{"error": "Failed to create session"}) + return + } + s.KeyToToken[key] = response.Token + } else { + _, err := tv.ValidateApiToken(token) + if err != nil { + c.AbortWithStatusJSON(http.StatusUnauthorized, gin.H{"error": "Invalid token"}) + return + } + } - // TODO: Validate the token and retrieve user information; this is mock example c.Next() } } diff --git a/core/api/server/router.go b/core/api/server/router.go index 67e1e0592..cbff45028 100644 --- a/core/api/server/router.go +++ b/core/api/server/router.go @@ -12,6 +12,8 @@ import ( "github.com/anyproto/anytype-heart/core/api/services/object" "github.com/anyproto/anytype-heart/core/api/services/search" "github.com/anyproto/anytype-heart/core/api/services/space" + "github.com/anyproto/anytype-heart/core/interfaces" + "github.com/anyproto/anytype-heart/pb/service" ) const ( @@ -23,7 +25,7 @@ const ( ) // NewRouter builds and returns a *gin.Engine with all routes configured. -func (s *Server) NewRouter(a *app.App) *gin.Engine { +func (s *Server) NewRouter(a *app.App, mw service.ClientCommandsServer, tv interfaces.TokenValidator) *gin.Engine { router := gin.Default() paginator := pagination.New(pagination.Config{ @@ -36,16 +38,19 @@ func (s *Server) NewRouter(a *app.App) *gin.Engine { // Swagger route router.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) + // Auth routes (no authentication required) + authGroup := router.Group("/v1/auth") + { + authGroup.POST("/display_code", auth.DisplayCodeHandler(s.authService)) + authGroup.POST("/token", auth.TokenHandler(s.authService)) + } + // API routes v1 := router.Group("/v1") v1.Use(paginator) - v1.Use(s.ensureAuthenticated()) + v1.Use(s.ensureAuthenticated(mw, tv)) v1.Use(s.ensureAccountInfo(a)) { - // Auth - v1.POST("/auth/display_code", auth.DisplayCodeHandler(s.authService)) - v1.POST("/auth/token", auth.TokenHandler(s.authService)) - // Export v1.POST("/spaces/:space_id/objects/:object_id/export/:format", export.GetObjectExportHandler(s.exportService)) diff --git a/core/api/server/server.go b/core/api/server/server.go index c6846a45c..ec096ce72 100644 --- a/core/api/server/server.go +++ b/core/api/server/server.go @@ -9,6 +9,7 @@ import ( "github.com/anyproto/anytype-heart/core/api/services/object" "github.com/anyproto/anytype-heart/core/api/services/search" "github.com/anyproto/anytype-heart/core/api/services/space" + "github.com/anyproto/anytype-heart/core/interfaces" "github.com/anyproto/anytype-heart/pb/service" ) @@ -21,10 +22,12 @@ type Server struct { objectService *object.ObjectService spaceService *space.SpaceService searchService *search.SearchService + + KeyToToken map[string]string // appKey -> token } // NewServer constructs a new Server with default config and sets up the routes. -func NewServer(a *app.App, mw service.ClientCommandsServer) *Server { +func NewServer(a *app.App, mw service.ClientCommandsServer, tv interfaces.TokenValidator) *Server { s := &Server{ authService: auth.NewService(mw), exportService: export.NewService(mw), @@ -33,7 +36,8 @@ func NewServer(a *app.App, mw service.ClientCommandsServer) *Server { s.objectService = object.NewService(mw, s.spaceService) s.searchService = search.NewService(mw, s.spaceService, s.objectService) - s.engine = s.NewRouter(a) + s.engine = s.NewRouter(a, mw, tv) + s.KeyToToken = make(map[string]string) return s } diff --git a/core/api/service.go b/core/api/service.go index 0b9cd6ea7..1aeaccacb 100644 --- a/core/api/service.go +++ b/core/api/service.go @@ -11,6 +11,7 @@ import ( "github.com/anyproto/any-sync/app" "github.com/anyproto/anytype-heart/core/api/server" + "github.com/anyproto/anytype-heart/core/interfaces" "github.com/anyproto/anytype-heart/pb/service" ) @@ -22,6 +23,7 @@ const ( var ( mwSrv service.ClientCommandsServer + tvInterface interfaces.TokenValidator ErrPortAlreadyUsed = fmt.Errorf("port %s is already in use", httpPort) ErrServerAlreadyStarted = fmt.Errorf("server already started") ErrServerNotStarted = fmt.Errorf("server not started") @@ -37,11 +39,13 @@ type apiService struct { srv *server.Server httpSrv *http.Server mw service.ClientCommandsServer + tv interfaces.TokenValidator } func New() Service { return &apiService{ mw: mwSrv, + tv: tvInterface, } } @@ -66,7 +70,7 @@ func (s *apiService) Name() (name string) { // @externalDocs.description OpenAPI // @externalDocs.url https://swagger.io/resources/open-api/ func (s *apiService) Init(a *app.App) (err error) { - s.srv = server.NewServer(a, s.mw) + s.srv = server.NewServer(a, s.mw, s.tv) return nil } @@ -151,6 +155,7 @@ func (s *apiService) Stop() error { return nil } -func SetMiddlewareParams(mw service.ClientCommandsServer) { +func SetMiddlewareParams(mw service.ClientCommandsServer, tv interfaces.TokenValidator) { mwSrv = mw + tvInterface = tv } diff --git a/core/core.go b/core/core.go index 394167770..563f6a2e7 100644 --- a/core/core.go +++ b/core/core.go @@ -11,9 +11,11 @@ import ( "github.com/anyproto/anytype-heart/core/block" "github.com/anyproto/anytype-heart/core/block/collection" "github.com/anyproto/anytype-heart/core/event" + "github.com/anyproto/anytype-heart/core/interfaces" "github.com/anyproto/anytype-heart/core/wallet" "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/pkg/lib/logging" + "github.com/anyproto/anytype-heart/pkg/lib/pb/model" utildebug "github.com/anyproto/anytype-heart/util/debug" ) @@ -126,3 +128,10 @@ func (mw *Middleware) SaveGoroutinesStack(path string) (err error) { } return utildebug.SaveStackToRepo(path, true) } + +// ValidateApiToken exposes ValidateToken logic from core to the JSON API +func (mw *Middleware) ValidateApiToken(token string) (model.AccountAuthLocalApiScope, error) { + return mw.applicationService.ValidateSessionToken(token) +} + +var _ interfaces.TokenValidator = (*Middleware)(nil) diff --git a/core/interfaces/token_validator.go b/core/interfaces/token_validator.go new file mode 100644 index 000000000..5248d2ff9 --- /dev/null +++ b/core/interfaces/token_validator.go @@ -0,0 +1,8 @@ +package interfaces + +import "github.com/anyproto/anytype-heart/pkg/lib/pb/model" + +// TokenValidator is an interface that exposes ValidateApiToken from core to avoid circular dependencies. +type TokenValidator interface { + ValidateApiToken(token string) (model.AccountAuthLocalApiScope, error) +} From 71494bc555e5e0e8883eec3bac769d98f23fb535 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Sun, 19 Jan 2025 13:16:24 +0100 Subject: [PATCH 181/279] GO-4642: Limit the scope of tokens created through api endpoint --- core/api/services/auth/service.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/core/api/services/auth/service.go b/core/api/services/auth/service.go index 5d63e6712..33b3aecd6 100644 --- a/core/api/services/auth/service.go +++ b/core/api/services/auth/service.go @@ -6,6 +6,7 @@ import ( "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/pb/service" + "github.com/anyproto/anytype-heart/pkg/lib/pb/model" ) var ( @@ -34,7 +35,10 @@ func (s *AuthService) NewChallenge(ctx context.Context, appName string) (string, return "", ErrMissingAppName } - resp := s.mw.AccountLocalLinkNewChallenge(ctx, &pb.RpcAccountLocalLinkNewChallengeRequest{AppName: appName}) + resp := s.mw.AccountLocalLinkNewChallenge(ctx, &pb.RpcAccountLocalLinkNewChallengeRequest{ + AppName: appName, + Scope: model.AccountAuth_JsonAPI, + }) if resp.Error.Code != pb.RpcAccountLocalLinkNewChallengeResponseError_NULL { return "", ErrFailedGenerateChallenge @@ -43,7 +47,7 @@ func (s *AuthService) NewChallenge(ctx context.Context, appName string) (string, return resp.ChallengeId, nil } -// SolveChallengeForToken calls AccountLocalLinkSolveChallenge and returns the session token + app key, or an error if it fails. +// SolveChallenge calls AccountLocalLinkSolveChallenge and returns the session token + app key, or an error if it fails. func (s *AuthService) SolveChallenge(ctx context.Context, challengeId string, code string) (sessionToken string, appKey string, err error) { if challengeId == "" || code == "" { return "", "", ErrInvalidInput From b25dafeeefbd4a66ae95f016dcecaec1204c368a Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Sun, 19 Jan 2025 13:34:14 +0100 Subject: [PATCH 182/279] GO-4459: Remove rpc to start and stop api server --- clientlibrary/service/service.pb.go | 752 ++-- core/api.go | 41 - core/api/service.go | 69 +- docs/proto.md | 154 - pb/commands.pb.go | 3887 ++++++----------- pb/protos/commands.proto | 47 - pb/protos/service/service.proto | 5 - .../mock_service/mock_ClientCommandsServer.go | 98 - pb/service/service.pb.go | 752 ++-- 9 files changed, 1904 insertions(+), 3901 deletions(-) delete mode 100644 core/api.go diff --git a/clientlibrary/service/service.pb.go b/clientlibrary/service/service.pb.go index 3d84fcfeb..cbd21b09e 100644 --- a/clientlibrary/service/service.pb.go +++ b/clientlibrary/service/service.pb.go @@ -25,345 +25,343 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package func init() { proto.RegisterFile("pb/protos/service/service.proto", fileDescriptor_93a29dc403579097) } var fileDescriptor_93a29dc403579097 = []byte{ - // 5406 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x9d, 0xdf, 0x6f, 0x1d, 0x49, - 0x56, 0xf8, 0xc7, 0x2f, 0xdf, 0xf9, 0xd2, 0xcb, 0x0e, 0x70, 0x07, 0x86, 0xd9, 0x61, 0x37, 0xc9, - 0x64, 0x12, 0x3b, 0x89, 0xe3, 0xeb, 0x4c, 0x32, 0x3f, 0x56, 0xbb, 0x48, 0xc8, 0xb1, 0x13, 0x8f, - 0x59, 0xdb, 0x31, 0xbe, 0xd7, 0x89, 0x34, 0x12, 0x12, 0xe5, 0x7b, 0xcb, 0xd7, 0x8d, 0xfb, 0x76, - 0xf5, 0x76, 0xd7, 0xbd, 0xce, 0x5d, 0x04, 0x02, 0x81, 0x40, 0x20, 0x10, 0x2b, 0x7e, 0xbd, 0x22, - 0xf1, 0xc4, 0x9f, 0xc2, 0xe3, 0x3e, 0xf2, 0x88, 0x66, 0xfe, 0x00, 0xfe, 0x05, 0xd4, 0xd5, 0xf5, - 0xf3, 0xf4, 0x39, 0xd5, 0xed, 0x7d, 0x4a, 0xe4, 0xf3, 0x39, 0xe7, 0x54, 0x75, 0x55, 0x9d, 0x3a, - 0x55, 0x5d, 0x5d, 0x37, 0xb9, 0x5d, 0x9c, 0x6f, 0x17, 0xa5, 0x90, 0xa2, 0xda, 0xae, 0x78, 0xb9, - 0x4c, 0x27, 0xdc, 0xfc, 0x3b, 0x54, 0x7f, 0x1e, 0xbc, 0xcb, 0xf2, 0x95, 0x5c, 0x15, 0xfc, 0xa3, - 0x0f, 0x1d, 0x39, 0x11, 0xf3, 0x39, 0xcb, 0xa7, 0x55, 0x83, 0x7c, 0xf4, 0x81, 0x93, 0xf0, 0x25, - 0xcf, 0xa5, 0xfe, 0xfb, 0xd3, 0xff, 0xfc, 0xdf, 0xb5, 0xe4, 0xbd, 0xdd, 0x2c, 0xe5, 0xb9, 0xdc, - 0xd5, 0x1a, 0x83, 0xaf, 0x93, 0xef, 0xee, 0x14, 0xc5, 0x3e, 0x97, 0xaf, 0x79, 0x59, 0xa5, 0x22, - 0x1f, 0x7c, 0x32, 0xd4, 0x0e, 0x86, 0xa7, 0xc5, 0x64, 0xb8, 0x53, 0x14, 0x43, 0x27, 0x1c, 0x9e, - 0xf2, 0x9f, 0x2e, 0x78, 0x25, 0x3f, 0xba, 0x17, 0x87, 0xaa, 0x42, 0xe4, 0x15, 0x1f, 0x5c, 0x24, - 0xbf, 0xb1, 0x53, 0x14, 0x23, 0x2e, 0xf7, 0x78, 0x5d, 0x81, 0x91, 0x64, 0x92, 0x0f, 0x36, 0x5a, - 0xaa, 0x21, 0x60, 0x7d, 0x3c, 0xe8, 0x06, 0xb5, 0x9f, 0x71, 0xf2, 0x9d, 0xda, 0xcf, 0xe5, 0x42, - 0x4e, 0xc5, 0x75, 0x3e, 0xf8, 0xb8, 0xad, 0xa8, 0x45, 0xd6, 0xf6, 0xdd, 0x18, 0xa2, 0xad, 0xbe, - 0x49, 0x7e, 0xf5, 0x0d, 0xcb, 0x32, 0x2e, 0x77, 0x4b, 0x5e, 0x17, 0x3c, 0xd4, 0x69, 0x44, 0xc3, - 0x46, 0x66, 0xed, 0x7e, 0x12, 0x65, 0xb4, 0xe1, 0xaf, 0x93, 0xef, 0x36, 0x92, 0x53, 0x3e, 0x11, - 0x4b, 0x5e, 0x0e, 0x50, 0x2d, 0x2d, 0x24, 0x1e, 0x79, 0x0b, 0x82, 0xb6, 0x77, 0x45, 0xbe, 0xe4, - 0xa5, 0xc4, 0x6d, 0x6b, 0x61, 0xdc, 0xb6, 0x83, 0xb4, 0xed, 0xbf, 0x5d, 0x4b, 0xbe, 0xbf, 0x33, - 0x99, 0x88, 0x45, 0x2e, 0x0f, 0xc5, 0x84, 0x65, 0x87, 0x69, 0x7e, 0x75, 0xcc, 0xaf, 0x77, 0x2f, - 0x6b, 0x3e, 0x9f, 0xf1, 0xc1, 0xb3, 0xf0, 0xa9, 0x36, 0xe8, 0xd0, 0xb2, 0x43, 0x1f, 0xb6, 0xbe, - 0x3f, 0xbb, 0x99, 0x92, 0x2e, 0xcb, 0x3f, 0xae, 0x25, 0xb7, 0x60, 0x59, 0x46, 0x22, 0x5b, 0x72, - 0x57, 0x9a, 0xcf, 0x3b, 0x0c, 0x87, 0xb8, 0x2d, 0xcf, 0x17, 0x37, 0x55, 0xd3, 0x25, 0xca, 0x92, - 0xf7, 0xfd, 0xee, 0x32, 0xe2, 0x95, 0x1a, 0x4e, 0x0f, 0xe9, 0x1e, 0xa1, 0x11, 0xeb, 0xf9, 0x51, - 0x1f, 0x54, 0x7b, 0x4b, 0x93, 0x81, 0xf6, 0x96, 0x89, 0xca, 0x3a, 0x7b, 0x80, 0x5a, 0xf0, 0x08, - 0xeb, 0xeb, 0x61, 0x0f, 0x52, 0xbb, 0xfa, 0xa3, 0xe4, 0xd7, 0xde, 0x88, 0xf2, 0xaa, 0x2a, 0xd8, - 0x84, 0xeb, 0xa1, 0x70, 0x3f, 0xd4, 0x36, 0x52, 0x38, 0x1a, 0xd6, 0xbb, 0x30, 0xaf, 0xd3, 0x1a, - 0xe1, 0xab, 0x82, 0xc3, 0x18, 0xe4, 0x14, 0x6b, 0x21, 0xd5, 0x69, 0x21, 0xa4, 0x6d, 0x5f, 0x25, - 0x03, 0x67, 0xfb, 0xfc, 0x8f, 0xf9, 0x44, 0xee, 0x4c, 0xa7, 0xb0, 0x55, 0x9c, 0xae, 0x22, 0x86, - 0x3b, 0xd3, 0x29, 0xd5, 0x2a, 0x38, 0xaa, 0x9d, 0x5d, 0x27, 0x1f, 0x00, 0x67, 0x87, 0x69, 0xa5, - 0x1c, 0x6e, 0xc5, 0xad, 0x68, 0xcc, 0x3a, 0x1d, 0xf6, 0xc5, 0xb5, 0xe3, 0x3f, 0x5f, 0x4b, 0xbe, - 0x87, 0x78, 0x3e, 0xe5, 0x73, 0xb1, 0xe4, 0x83, 0x27, 0xdd, 0xd6, 0x1a, 0xd2, 0xfa, 0xff, 0xf4, - 0x06, 0x1a, 0x48, 0x37, 0x19, 0xf1, 0x8c, 0x4f, 0x24, 0xd9, 0x4d, 0x1a, 0x71, 0x67, 0x37, 0xb1, - 0x98, 0x37, 0xc2, 0x8c, 0x70, 0x9f, 0xcb, 0xdd, 0x45, 0x59, 0xf2, 0x5c, 0x92, 0x6d, 0xe9, 0x90, - 0xce, 0xb6, 0x0c, 0x50, 0xa4, 0x3e, 0xfb, 0x5c, 0xee, 0x64, 0x19, 0x59, 0x9f, 0x46, 0xdc, 0x59, - 0x1f, 0x8b, 0x69, 0x0f, 0x93, 0xe4, 0xd7, 0xbd, 0x27, 0x26, 0x0f, 0xf2, 0x0b, 0x31, 0xa0, 0x9f, - 0x85, 0x92, 0x5b, 0x1f, 0x1b, 0x9d, 0x1c, 0x52, 0x8d, 0x17, 0x6f, 0x0b, 0x51, 0xd2, 0xcd, 0xd2, - 0x88, 0x3b, 0xab, 0x61, 0x31, 0xed, 0xe1, 0x0f, 0x93, 0xf7, 0x74, 0x94, 0x34, 0xf3, 0xd9, 0x3d, - 0x34, 0x84, 0xc2, 0x09, 0xed, 0x7e, 0x07, 0xe5, 0x82, 0x83, 0x96, 0xe9, 0xe0, 0xf3, 0x09, 0xaa, - 0x07, 0x42, 0xcf, 0xbd, 0x38, 0xd4, 0xb2, 0xbd, 0xc7, 0x33, 0x4e, 0xda, 0x6e, 0x84, 0x1d, 0xb6, - 0x2d, 0xa4, 0x6d, 0x97, 0xc9, 0x6f, 0xd9, 0xc7, 0x52, 0xcf, 0xa3, 0x4a, 0x5e, 0x07, 0xe9, 0x4d, - 0xa2, 0xde, 0x3e, 0x64, 0x7d, 0x3d, 0xee, 0x07, 0xb7, 0xea, 0xa3, 0x47, 0x20, 0x5e, 0x1f, 0x30, - 0xfe, 0xee, 0xc5, 0x21, 0x6d, 0xfb, 0xef, 0xd6, 0x92, 0x1f, 0x68, 0xd9, 0x8b, 0x9c, 0x9d, 0x67, - 0x5c, 0x4d, 0x89, 0xc7, 0x5c, 0x5e, 0x8b, 0xf2, 0x6a, 0xb4, 0xca, 0x27, 0xc4, 0xf4, 0x8f, 0xc3, - 0x1d, 0xd3, 0x3f, 0xa9, 0xe4, 0x65, 0x7c, 0xba, 0xa2, 0x52, 0x14, 0x30, 0xe3, 0x33, 0x35, 0x90, - 0xa2, 0xa0, 0x32, 0xbe, 0x10, 0x69, 0x59, 0x3d, 0xaa, 0xc3, 0x26, 0x6e, 0xf5, 0xc8, 0x8f, 0x93, - 0x77, 0x63, 0x88, 0x0b, 0x5b, 0xa6, 0x03, 0x8b, 0xfc, 0x22, 0x9d, 0x9d, 0x15, 0xd3, 0xba, 0x1b, - 0x3f, 0xc4, 0x7b, 0xa8, 0x87, 0x10, 0x61, 0x8b, 0x40, 0xb5, 0xb7, 0x7f, 0x70, 0x89, 0x91, 0x1e, - 0x4a, 0x2f, 0x4b, 0x31, 0x3f, 0xe4, 0x33, 0x36, 0x59, 0xe9, 0xf1, 0xff, 0x59, 0x6c, 0xe0, 0x41, - 0xda, 0x16, 0xe2, 0xf3, 0x1b, 0x6a, 0xe9, 0xf2, 0xfc, 0xfb, 0x5a, 0x72, 0xcf, 0x54, 0xff, 0x92, - 0xe5, 0x33, 0xae, 0xdb, 0xb3, 0x29, 0xfd, 0x4e, 0x3e, 0x3d, 0xe5, 0x95, 0x64, 0xa5, 0x1c, 0xfc, - 0x08, 0xaf, 0x64, 0x4c, 0xc7, 0x96, 0xed, 0xc7, 0xbf, 0x94, 0xae, 0x6b, 0xf5, 0x51, 0x1d, 0xd8, - 0x74, 0x08, 0x08, 0x5b, 0x5d, 0x49, 0x60, 0x00, 0xb8, 0x1b, 0x43, 0x5c, 0xab, 0x2b, 0xc1, 0x41, - 0xbe, 0x4c, 0x25, 0xdf, 0xe7, 0x39, 0x2f, 0xdb, 0xad, 0xde, 0xa8, 0x86, 0x08, 0xd1, 0xea, 0x04, - 0xea, 0x82, 0x4d, 0xe0, 0xcd, 0x4e, 0x8e, 0x9b, 0x11, 0x23, 0xad, 0xe9, 0xf1, 0x71, 0x3f, 0xd8, - 0xad, 0xee, 0x3c, 0x9f, 0xa7, 0x7c, 0x29, 0xae, 0xe0, 0xea, 0xce, 0x37, 0xd1, 0x00, 0xc4, 0xea, - 0x0e, 0x05, 0xdd, 0x0c, 0xe6, 0xf9, 0x79, 0x9d, 0xf2, 0x6b, 0x30, 0x83, 0xf9, 0xca, 0xb5, 0x98, - 0x98, 0xc1, 0x10, 0x4c, 0x7b, 0x38, 0x4e, 0x7e, 0x45, 0x09, 0x7f, 0x5f, 0xa4, 0xf9, 0xe0, 0x36, - 0xa2, 0x54, 0x0b, 0xac, 0xd5, 0x3b, 0x34, 0x00, 0x4a, 0x5c, 0xff, 0x75, 0x97, 0xe5, 0x13, 0x9e, - 0xa1, 0x25, 0x76, 0xe2, 0x68, 0x89, 0x03, 0xcc, 0xa5, 0x0e, 0x4a, 0x58, 0xc7, 0xaf, 0xd1, 0x25, - 0x2b, 0xd3, 0x7c, 0x36, 0xc0, 0x74, 0x3d, 0x39, 0x91, 0x3a, 0x60, 0x1c, 0xe8, 0xc2, 0x5a, 0x71, - 0xa7, 0x28, 0xca, 0x3a, 0x2c, 0x62, 0x5d, 0x38, 0x44, 0xa2, 0x5d, 0xb8, 0x85, 0xe2, 0xde, 0xf6, - 0xf8, 0x24, 0x4b, 0xf3, 0xa8, 0x37, 0x8d, 0xf4, 0xf1, 0xe6, 0x50, 0xd0, 0x79, 0x0f, 0x39, 0x5b, - 0x72, 0x53, 0x33, 0xec, 0xc9, 0xf8, 0x40, 0xb4, 0xf3, 0x02, 0xd0, 0xad, 0xd3, 0x94, 0xf8, 0x88, - 0x5d, 0xf1, 0xfa, 0x01, 0xf3, 0x7a, 0x5e, 0x1b, 0x60, 0xfa, 0x01, 0x41, 0xac, 0xd3, 0x70, 0x52, - 0xbb, 0x5a, 0x24, 0x1f, 0x28, 0xf9, 0x09, 0x2b, 0x65, 0x3a, 0x49, 0x0b, 0x96, 0x9b, 0xfc, 0x1f, - 0x1b, 0xd7, 0x2d, 0xca, 0xba, 0xdc, 0xea, 0x49, 0x6b, 0xb7, 0xff, 0xb6, 0x96, 0x7c, 0x0c, 0xfd, - 0x9e, 0xf0, 0x72, 0x9e, 0xaa, 0x65, 0x64, 0xd5, 0x04, 0xe1, 0xc1, 0x97, 0x71, 0xa3, 0x2d, 0x05, - 0x5b, 0x9a, 0x1f, 0xde, 0x5c, 0xd1, 0x25, 0x43, 0x23, 0x9d, 0x5a, 0xbf, 0x2a, 0xa7, 0xad, 0x6d, - 0x96, 0x91, 0xc9, 0x97, 0x95, 0x90, 0x48, 0x86, 0x5a, 0x10, 0x18, 0xe1, 0x67, 0x79, 0x65, 0xac, - 0x63, 0x23, 0xdc, 0x89, 0xa3, 0x23, 0x3c, 0xc0, 0xdc, 0x08, 0x3f, 0x59, 0x9c, 0x67, 0x69, 0x75, - 0x99, 0xe6, 0x33, 0x9d, 0xf9, 0x86, 0xba, 0x4e, 0x0c, 0x93, 0xdf, 0x8d, 0x4e, 0x0e, 0x73, 0xa2, - 0x3b, 0x0b, 0xe9, 0x04, 0x74, 0x93, 0x8d, 0x4e, 0xce, 0xad, 0x0f, 0x9c, 0xb4, 0x5e, 0x39, 0x82, - 0xf5, 0x81, 0xa7, 0x5a, 0x4b, 0x89, 0xf5, 0x41, 0x9b, 0xd2, 0xe6, 0x45, 0xf2, 0x9b, 0x7e, 0x1d, - 0x2a, 0x91, 0x2d, 0xf9, 0x59, 0x99, 0x0e, 0x1e, 0xd1, 0xe5, 0x33, 0x8c, 0x75, 0xb5, 0xd9, 0x8b, - 0x75, 0x81, 0xca, 0x11, 0xfb, 0x5c, 0x8e, 0x24, 0x93, 0x8b, 0x0a, 0x04, 0x2a, 0xcf, 0x86, 0x45, - 0x88, 0x40, 0x45, 0xa0, 0xda, 0xdb, 0x1f, 0x24, 0x49, 0xb3, 0xe8, 0x56, 0x1b, 0x23, 0xe1, 0xdc, - 0xa3, 0x57, 0xe3, 0xc1, 0xae, 0xc8, 0xc7, 0x11, 0xc2, 0x25, 0x3c, 0xcd, 0xdf, 0xd5, 0x7e, 0xcf, - 0x00, 0xd5, 0x50, 0x22, 0x22, 0xe1, 0x01, 0x08, 0x2c, 0xe8, 0xe8, 0x52, 0x5c, 0xe3, 0x05, 0xad, - 0x25, 0xf1, 0x82, 0x6a, 0xc2, 0xed, 0xc0, 0xea, 0x82, 0x62, 0x3b, 0xb0, 0xa6, 0x18, 0xb1, 0x1d, - 0x58, 0xc8, 0xb8, 0x3e, 0xe3, 0x1b, 0x7e, 0x2e, 0xc4, 0xd5, 0x9c, 0x95, 0x57, 0xa0, 0xcf, 0x04, - 0xca, 0x86, 0x21, 0xfa, 0x0c, 0xc5, 0xba, 0x3e, 0xe3, 0x3b, 0xac, 0xd3, 0xe5, 0xb3, 0x32, 0x03, - 0x7d, 0x26, 0xb0, 0xa1, 0x11, 0xa2, 0xcf, 0x10, 0xa8, 0x8b, 0x4e, 0xbe, 0xb7, 0x11, 0x87, 0x6b, - 0xfe, 0x40, 0x7d, 0xc4, 0xa9, 0x35, 0x3f, 0x82, 0xc1, 0x2e, 0xb4, 0x5f, 0xb2, 0xe2, 0x12, 0xef, - 0x42, 0x4a, 0x14, 0xef, 0x42, 0x06, 0x81, 0xed, 0x3d, 0xe2, 0xac, 0x9c, 0x5c, 0xe2, 0xed, 0xdd, - 0xc8, 0xe2, 0xed, 0x6d, 0x19, 0xd8, 0xde, 0x8d, 0xe0, 0x4d, 0x2a, 0x2f, 0x8f, 0xb8, 0x64, 0x78, - 0x7b, 0x87, 0x4c, 0xbc, 0xbd, 0x5b, 0xac, 0xcb, 0xc7, 0x7d, 0x87, 0xa3, 0xc5, 0x79, 0x35, 0x29, - 0xd3, 0x73, 0x3e, 0x88, 0x58, 0xb1, 0x10, 0x91, 0x8f, 0x93, 0xb0, 0xf6, 0xf9, 0xf3, 0xb5, 0xe4, - 0xb6, 0x69, 0x76, 0x51, 0x55, 0x7a, 0xee, 0x0b, 0xdd, 0x7f, 0x8e, 0xb7, 0x2f, 0x81, 0x13, 0x7b, - 0xe2, 0x3d, 0xd4, 0xbc, 0xdc, 0x00, 0x2f, 0xd2, 0x59, 0x5e, 0xd9, 0x42, 0x7d, 0xd9, 0xc7, 0xba, - 0xa7, 0x40, 0xe4, 0x06, 0xbd, 0x14, 0x5d, 0x5a, 0xa6, 0xdb, 0xc7, 0xc8, 0x0e, 0xa6, 0x15, 0x48, - 0xcb, 0xcc, 0xf3, 0xf6, 0x08, 0x22, 0x2d, 0xc3, 0x49, 0xd8, 0x15, 0xf6, 0x4b, 0xb1, 0x28, 0xaa, - 0x8e, 0xae, 0x00, 0xa0, 0x78, 0x57, 0x68, 0xc3, 0xda, 0xe7, 0xdb, 0xe4, 0xb7, 0xfd, 0xee, 0xe7, - 0x3f, 0xec, 0x2d, 0xba, 0x4f, 0x61, 0x8f, 0x78, 0xd8, 0x17, 0x77, 0x19, 0x85, 0xf1, 0x2c, 0xf7, - 0xb8, 0x64, 0x69, 0x56, 0x0d, 0xd6, 0x71, 0x1b, 0x46, 0x4e, 0x64, 0x14, 0x18, 0x07, 0xe3, 0xdb, - 0xde, 0xa2, 0xc8, 0xd2, 0x49, 0xfb, 0x8d, 0x84, 0xd6, 0xb5, 0xe2, 0x78, 0x7c, 0xf3, 0x31, 0x18, - 0xaf, 0xeb, 0xd4, 0x4f, 0xfd, 0x67, 0xbc, 0x2a, 0x38, 0x1e, 0xaf, 0x03, 0x24, 0x1e, 0xaf, 0x21, - 0x0a, 0xeb, 0x33, 0xe2, 0xf2, 0x90, 0xad, 0xc4, 0x82, 0x88, 0xd7, 0x56, 0x1c, 0xaf, 0x8f, 0x8f, - 0xb9, 0xb5, 0x81, 0xf5, 0x70, 0x90, 0x4b, 0x5e, 0xe6, 0x2c, 0x7b, 0x99, 0xb1, 0x59, 0x35, 0x20, - 0x62, 0x4c, 0x48, 0x11, 0x6b, 0x03, 0x9a, 0x46, 0x1e, 0xe3, 0x41, 0xf5, 0x92, 0x2d, 0x45, 0x99, - 0x4a, 0xfa, 0x31, 0x3a, 0xa4, 0xf3, 0x31, 0x06, 0x28, 0xea, 0x6d, 0xa7, 0x9c, 0x5c, 0xa6, 0x4b, - 0x3e, 0x8d, 0x78, 0x33, 0x48, 0x0f, 0x6f, 0x1e, 0x8a, 0x34, 0xda, 0x48, 0x2c, 0xca, 0x09, 0x27, - 0x1b, 0xad, 0x11, 0x77, 0x36, 0x9a, 0xc5, 0xb4, 0x87, 0xbf, 0x5a, 0x4b, 0x7e, 0xa7, 0x91, 0xfa, - 0xaf, 0x09, 0xf6, 0x58, 0x75, 0x79, 0x2e, 0x58, 0x39, 0x1d, 0x7c, 0x8a, 0xd9, 0x41, 0x51, 0xeb, - 0xfa, 0xe9, 0x4d, 0x54, 0xe0, 0x63, 0xad, 0xf3, 0x6e, 0x37, 0xe2, 0xd0, 0xc7, 0x1a, 0x20, 0xf1, - 0xc7, 0x0a, 0x51, 0x18, 0x40, 0x94, 0xbc, 0xd9, 0x92, 0x5b, 0x27, 0xf5, 0xc3, 0x7d, 0xb9, 0x8d, - 0x4e, 0x0e, 0xc6, 0xc7, 0x5a, 0x18, 0xf6, 0x96, 0x2d, 0xca, 0x06, 0xde, 0x63, 0x86, 0x7d, 0x71, - 0xd2, 0xb3, 0x1d, 0x15, 0x71, 0xcf, 0xad, 0x91, 0x31, 0xec, 0x8b, 0x13, 0x9e, 0xbd, 0xb0, 0x16, - 0xf3, 0x8c, 0x84, 0xb6, 0x61, 0x5f, 0x1c, 0x66, 0x5f, 0x9a, 0x31, 0xf3, 0xc2, 0xa3, 0x88, 0x1d, - 0x38, 0x37, 0x6c, 0xf6, 0x62, 0xb5, 0xc3, 0xbf, 0x59, 0x4b, 0xbe, 0xef, 0x3c, 0x1e, 0x89, 0x69, - 0x7a, 0xb1, 0x6a, 0xa0, 0xd7, 0x2c, 0x5b, 0xf0, 0x6a, 0xf0, 0x94, 0xb2, 0xd6, 0x66, 0x6d, 0x09, - 0x9e, 0xdd, 0x48, 0x07, 0x8e, 0x9d, 0x9d, 0xa2, 0xc8, 0x56, 0x63, 0x3e, 0x2f, 0x32, 0x72, 0xec, - 0x04, 0x48, 0x7c, 0xec, 0x40, 0x14, 0x66, 0xe5, 0x63, 0x51, 0xe7, 0xfc, 0x68, 0x56, 0xae, 0x44, - 0xf1, 0xac, 0xdc, 0x20, 0x30, 0x57, 0x1a, 0x8b, 0x5d, 0x91, 0x65, 0x7c, 0x22, 0xdb, 0x47, 0x0d, - 0xac, 0xa6, 0x23, 0xe2, 0xb9, 0x12, 0x20, 0xdd, 0xae, 0x9c, 0x59, 0x43, 0xb2, 0x92, 0x3f, 0x5f, - 0x1d, 0xa6, 0xf9, 0xd5, 0x00, 0x4f, 0x0b, 0x1c, 0x40, 0xec, 0xca, 0xa1, 0x20, 0x5c, 0xab, 0x9e, - 0xe5, 0x53, 0x81, 0xaf, 0x55, 0x6b, 0x49, 0x7c, 0xad, 0xaa, 0x09, 0x68, 0xf2, 0x94, 0x53, 0x26, - 0x6b, 0x49, 0xdc, 0xa4, 0x26, 0xb0, 0x50, 0xa8, 0xdf, 0xdd, 0x90, 0xa1, 0x10, 0xbc, 0xad, 0xd9, - 0xe8, 0xe4, 0x60, 0x0f, 0x35, 0x8b, 0xd6, 0x97, 0x5c, 0x4e, 0x2e, 0xf1, 0x1e, 0x1a, 0x20, 0xf1, - 0x1e, 0x0a, 0x51, 0x58, 0xa5, 0xb1, 0xb0, 0x8b, 0xee, 0x75, 0xbc, 0x7f, 0xb4, 0x16, 0xdc, 0x1b, - 0x9d, 0x1c, 0x5c, 0x46, 0x1e, 0xcc, 0xd5, 0x33, 0x43, 0x3b, 0x79, 0x23, 0x8b, 0x2f, 0x23, 0x2d, - 0x03, 0x4b, 0xdf, 0x08, 0xd4, 0x5e, 0xd6, 0x3a, 0xad, 0x18, 0xec, 0x66, 0x6d, 0x74, 0x72, 0xda, - 0xc9, 0xbf, 0xd8, 0x65, 0x5c, 0x23, 0x3d, 0x16, 0xf5, 0x18, 0x79, 0xcd, 0xb2, 0x74, 0xca, 0x24, - 0x1f, 0x8b, 0x2b, 0x9e, 0xe3, 0x2b, 0x26, 0x5d, 0xda, 0x86, 0x1f, 0x06, 0x0a, 0xf1, 0x15, 0x53, - 0x5c, 0x11, 0xf6, 0x93, 0x86, 0x3e, 0xab, 0xf8, 0x2e, 0xab, 0x88, 0x48, 0x16, 0x20, 0xf1, 0x7e, - 0x02, 0x51, 0x98, 0xaf, 0x36, 0xf2, 0x17, 0x6f, 0x0b, 0x5e, 0xa6, 0x3c, 0x9f, 0x70, 0x3c, 0x5f, - 0x85, 0x54, 0x3c, 0x5f, 0x45, 0x68, 0xb8, 0x56, 0xdb, 0x63, 0x92, 0x3f, 0x5f, 0x8d, 0xd3, 0x39, - 0xaf, 0x24, 0x9b, 0x17, 0xf8, 0x5a, 0x0d, 0x40, 0xf1, 0xb5, 0x5a, 0x1b, 0x6e, 0x6d, 0x0d, 0xd9, - 0x80, 0xd8, 0x3e, 0xa1, 0x04, 0x89, 0xc8, 0x09, 0x25, 0x02, 0x85, 0x0f, 0xd6, 0x01, 0xe8, 0x4b, - 0x82, 0x96, 0x95, 0xe8, 0x4b, 0x02, 0x9a, 0x6e, 0x6d, 0xb8, 0x59, 0x66, 0x54, 0x0f, 0xcd, 0x8e, - 0xa2, 0x8f, 0xfc, 0x21, 0xba, 0xd9, 0x8b, 0xc5, 0x77, 0xf8, 0x4e, 0x79, 0xc6, 0xd4, 0xb4, 0x15, - 0xd9, 0x46, 0x33, 0x4c, 0x9f, 0x1d, 0x3e, 0x8f, 0xd5, 0x0e, 0xff, 0x62, 0x2d, 0xf9, 0x08, 0xf3, - 0xf8, 0xaa, 0x50, 0x7e, 0x9f, 0x74, 0xdb, 0x6a, 0x48, 0xe2, 0x08, 0x56, 0x5c, 0x43, 0x97, 0xe1, - 0x4f, 0x92, 0x0f, 0x8d, 0xc8, 0x9d, 0xd0, 0xd2, 0x05, 0x08, 0x93, 0x36, 0x5b, 0x7e, 0xc8, 0x59, - 0xf7, 0xdb, 0xbd, 0x79, 0xb7, 0x1e, 0x0a, 0xcb, 0x55, 0x81, 0xf5, 0x90, 0xb5, 0xa1, 0xc5, 0xc4, - 0x7a, 0x08, 0xc1, 0xdc, 0xe8, 0xf4, 0xab, 0xf7, 0x26, 0x95, 0x97, 0x2a, 0xdf, 0x02, 0xa3, 0x33, - 0x28, 0xab, 0x85, 0x88, 0xd1, 0x49, 0xc2, 0x30, 0x23, 0x31, 0x60, 0x3d, 0x36, 0xb1, 0x58, 0x6e, - 0x0d, 0xf9, 0x23, 0xf3, 0x41, 0x37, 0x08, 0xfb, 0xab, 0x11, 0xeb, 0xa5, 0xcf, 0xa3, 0x98, 0x05, - 0xb0, 0xfc, 0xd9, 0xec, 0xc5, 0x6a, 0x87, 0x7f, 0x96, 0x7c, 0xaf, 0x55, 0xb1, 0x97, 0x9c, 0xc9, - 0x45, 0xc9, 0xa7, 0x83, 0xed, 0x8e, 0x72, 0x1b, 0xd0, 0xba, 0x7e, 0xd2, 0x5f, 0xa1, 0x95, 0xa3, - 0x1b, 0xae, 0xe9, 0x56, 0xb6, 0x0c, 0x4f, 0x63, 0x26, 0x43, 0x36, 0x9a, 0xa3, 0xd3, 0x3a, 0xad, - 0x65, 0xb6, 0xdf, 0xbb, 0x76, 0x96, 0x2c, 0xcd, 0xd4, 0xcb, 0xda, 0x4f, 0x63, 0x46, 0x03, 0x34, - 0xba, 0xcc, 0x26, 0x55, 0x5a, 0x91, 0x59, 0x8d, 0x71, 0x6f, 0x79, 0xf6, 0x98, 0x8e, 0x04, 0xc8, - 0xea, 0x6c, 0xab, 0x27, 0xad, 0xdd, 0x4a, 0x33, 0xe5, 0xd5, 0x7f, 0xf6, 0x3b, 0x39, 0xe6, 0x55, - 0xab, 0x22, 0x3d, 0x7d, 0xab, 0x27, 0xad, 0xbd, 0xfe, 0x69, 0xf2, 0x61, 0xdb, 0xab, 0x9e, 0x88, - 0xb6, 0x3b, 0x4d, 0x81, 0xb9, 0xe8, 0x49, 0x7f, 0x05, 0xb7, 0xa4, 0xf9, 0x2a, 0xad, 0xa4, 0x28, - 0x57, 0xa3, 0x4b, 0x71, 0x6d, 0xbe, 0x7c, 0x08, 0x47, 0xab, 0x06, 0x86, 0x1e, 0x41, 0x2c, 0x69, - 0x70, 0xb2, 0xe5, 0xca, 0x7d, 0x21, 0x51, 0x11, 0xae, 0x3c, 0xa2, 0xc3, 0x55, 0x48, 0xba, 0x58, - 0x65, 0x6a, 0xe5, 0x3e, 0xe7, 0xd8, 0xc0, 0x8b, 0xda, 0xfe, 0xa4, 0xe3, 0x41, 0x37, 0xe8, 0x32, - 0x16, 0x2d, 0xde, 0x4b, 0x2f, 0x2e, 0x6c, 0x9d, 0xf0, 0x92, 0xfa, 0x08, 0x91, 0xb1, 0x10, 0xa8, - 0x4b, 0xba, 0x5f, 0xa6, 0x19, 0x57, 0x3b, 0xfa, 0xaf, 0x2e, 0x2e, 0x32, 0xc1, 0xa6, 0x20, 0xe9, - 0xae, 0xc5, 0x43, 0x5f, 0x4e, 0x24, 0xdd, 0x18, 0xe7, 0xce, 0x0a, 0xd4, 0xd2, 0x53, 0x3e, 0x11, - 0xf9, 0x24, 0xcd, 0xe0, 0x41, 0x50, 0xa5, 0x69, 0x85, 0xc4, 0x59, 0x81, 0x16, 0xe4, 0x26, 0xc6, - 0x5a, 0x54, 0x0f, 0x7b, 0x53, 0xfe, 0xfb, 0x6d, 0x45, 0x4f, 0x4c, 0x4c, 0x8c, 0x08, 0xe6, 0xd6, - 0x9e, 0xb5, 0xf0, 0xac, 0x50, 0xc6, 0xef, 0xb4, 0xb5, 0x1a, 0x09, 0xb1, 0xf6, 0x0c, 0x09, 0xb7, - 0x86, 0xaa, 0xff, 0xbe, 0x27, 0xae, 0x73, 0x65, 0xf4, 0x6e, 0x5b, 0xc5, 0xc8, 0x88, 0x35, 0x14, - 0x64, 0xb4, 0xe1, 0x9f, 0x24, 0xff, 0x5f, 0x19, 0x2e, 0x45, 0x31, 0xb8, 0x85, 0x28, 0x94, 0xde, - 0x99, 0xcd, 0xdb, 0xa4, 0xdc, 0x1d, 0x2d, 0xb0, 0x7d, 0xe3, 0xac, 0x62, 0x33, 0x3e, 0xb8, 0x47, - 0xb4, 0xb8, 0x92, 0x12, 0x47, 0x0b, 0xda, 0x54, 0xd8, 0x2b, 0x8e, 0xc5, 0x54, 0x5b, 0x47, 0x6a, - 0x68, 0x85, 0xb1, 0x5e, 0xe1, 0x43, 0x2e, 0x99, 0x39, 0x66, 0xcb, 0x74, 0x66, 0x27, 0x9c, 0x26, - 0x6e, 0x55, 0x20, 0x99, 0x71, 0xcc, 0xd0, 0x83, 0x88, 0x64, 0x86, 0x84, 0xb5, 0xcf, 0x7f, 0x5e, - 0x4b, 0xee, 0x38, 0x66, 0xdf, 0xec, 0xd6, 0x1d, 0xe4, 0x17, 0xa2, 0x4e, 0x7d, 0x0e, 0xd3, 0xfc, - 0xaa, 0x1a, 0x7c, 0x41, 0x99, 0xc4, 0x79, 0x5b, 0x94, 0x2f, 0x6f, 0xac, 0xe7, 0xb2, 0x56, 0xb3, - 0x95, 0xe5, 0xde, 0x67, 0x37, 0x1a, 0x20, 0x6b, 0xb5, 0x3b, 0x5e, 0x90, 0x23, 0xb2, 0xd6, 0x18, - 0xef, 0x9a, 0xd8, 0x3a, 0xcf, 0x44, 0x0e, 0x9b, 0xd8, 0x59, 0xa8, 0x85, 0x44, 0x13, 0xb7, 0x20, - 0x17, 0x8f, 0x8d, 0xa8, 0xd9, 0x75, 0xd9, 0xc9, 0x32, 0x10, 0x8f, 0xad, 0xaa, 0x05, 0x88, 0x78, - 0x8c, 0x82, 0xda, 0xcf, 0x69, 0xf2, 0x9d, 0xfa, 0x91, 0x9e, 0x94, 0x7c, 0x99, 0x72, 0x78, 0xf4, - 0xc2, 0x93, 0x10, 0xe3, 0x3f, 0x24, 0xdc, 0xc8, 0x3a, 0xcb, 0xab, 0x22, 0x63, 0xd5, 0xa5, 0x7e, - 0x19, 0x1f, 0xd6, 0xd9, 0x08, 0xe1, 0xeb, 0xf8, 0xfb, 0x1d, 0x94, 0x0b, 0xea, 0x46, 0x66, 0x43, - 0xcc, 0x3a, 0xae, 0xda, 0x0a, 0x33, 0x1b, 0x9d, 0x9c, 0xdb, 0xf1, 0xde, 0x67, 0x59, 0xc6, 0xcb, - 0x95, 0x91, 0x1d, 0xb1, 0x3c, 0xbd, 0xe0, 0x95, 0x04, 0x3b, 0xde, 0x9a, 0x1a, 0x42, 0x8c, 0xd8, - 0xf1, 0x8e, 0xe0, 0x2e, 0x9b, 0x07, 0x9e, 0x0f, 0xf2, 0x29, 0x7f, 0x0b, 0xb2, 0x79, 0x68, 0x47, - 0x31, 0x44, 0x36, 0x4f, 0xb1, 0x6e, 0xe7, 0xf7, 0x79, 0x26, 0x26, 0x57, 0x7a, 0x0a, 0x08, 0x1b, - 0x58, 0x49, 0xe0, 0x1c, 0x70, 0x37, 0x86, 0xb8, 0x49, 0x40, 0x09, 0x4e, 0x79, 0x91, 0xb1, 0x09, - 0x3c, 0x7f, 0xd3, 0xe8, 0x68, 0x19, 0x31, 0x09, 0x40, 0x06, 0x14, 0x57, 0x9f, 0xeb, 0xc1, 0x8a, - 0x0b, 0x8e, 0xf5, 0xdc, 0x8d, 0x21, 0x6e, 0x1a, 0x54, 0x82, 0x51, 0x91, 0xa5, 0x12, 0x0c, 0x83, - 0x46, 0x43, 0x49, 0x88, 0x61, 0x10, 0x12, 0xc0, 0xe4, 0x11, 0x2f, 0x67, 0x1c, 0x35, 0xa9, 0x24, - 0x51, 0x93, 0x86, 0x70, 0x87, 0x8d, 0x9b, 0xba, 0x8b, 0x62, 0x05, 0x0e, 0x1b, 0xeb, 0x6a, 0x89, - 0x62, 0x45, 0x1c, 0x36, 0x0e, 0x00, 0x50, 0xc4, 0x13, 0x56, 0x49, 0xbc, 0x88, 0x4a, 0x12, 0x2d, - 0xa2, 0x21, 0xdc, 0x1c, 0xdd, 0x14, 0x71, 0x21, 0xc1, 0x1c, 0xad, 0x0b, 0xe0, 0xbd, 0x81, 0xbe, - 0x4d, 0xca, 0x5d, 0x24, 0x69, 0x5a, 0x85, 0xcb, 0x97, 0x29, 0xcf, 0xa6, 0x15, 0x88, 0x24, 0xfa, - 0xb9, 0x1b, 0x29, 0x11, 0x49, 0xda, 0x14, 0xe8, 0x4a, 0x7a, 0x7f, 0x1c, 0xab, 0x1d, 0xd8, 0x1a, - 0xbf, 0x1b, 0x43, 0x5c, 0x7c, 0x32, 0x85, 0xde, 0x65, 0x65, 0x99, 0xd6, 0x93, 0xff, 0x3a, 0x5e, - 0x20, 0x23, 0x27, 0xe2, 0x13, 0xc6, 0x81, 0xe1, 0x65, 0x02, 0x37, 0x56, 0x30, 0x18, 0xba, 0x3f, - 0x89, 0x32, 0x2e, 0xe3, 0x54, 0x12, 0xef, 0x15, 0x2a, 0xf6, 0x34, 0x91, 0x37, 0xa8, 0xeb, 0x5d, - 0x98, 0xf7, 0x31, 0x90, 0x75, 0x71, 0x24, 0x96, 0x7c, 0x2c, 0x5e, 0xbc, 0x4d, 0x2b, 0x99, 0xe6, - 0x33, 0x3d, 0x73, 0x3f, 0x23, 0x2c, 0x61, 0x30, 0xf1, 0x31, 0x50, 0xa7, 0x92, 0x4b, 0x20, 0x40, - 0x59, 0x8e, 0xf9, 0x35, 0x9a, 0x40, 0x40, 0x8b, 0x96, 0x23, 0x12, 0x88, 0x18, 0xef, 0xf6, 0x51, - 0xac, 0x73, 0xfd, 0xc5, 0xf4, 0x58, 0x98, 0x5c, 0x8e, 0xb2, 0x06, 0x41, 0x62, 0x29, 0x1b, 0x55, - 0x70, 0xeb, 0x4b, 0xeb, 0xdf, 0x0d, 0xb1, 0x07, 0x84, 0x9d, 0xf6, 0x30, 0x7b, 0xd8, 0x83, 0x44, - 0x5c, 0xb9, 0x73, 0x00, 0x94, 0xab, 0xf6, 0x31, 0x80, 0x87, 0x3d, 0x48, 0x6f, 0x4f, 0xc6, 0xaf, - 0xd6, 0x73, 0x36, 0xb9, 0x9a, 0x95, 0x62, 0x91, 0x4f, 0x77, 0x45, 0x26, 0x4a, 0xb0, 0x27, 0x13, - 0x94, 0x1a, 0xa0, 0xc4, 0x9e, 0x4c, 0x87, 0x8a, 0xcb, 0xe0, 0xfc, 0x52, 0xec, 0x64, 0xe9, 0x0c, - 0xae, 0xa8, 0x03, 0x43, 0x0a, 0x20, 0x32, 0x38, 0x14, 0x44, 0x3a, 0x51, 0xb3, 0xe2, 0x96, 0xe9, - 0x84, 0x65, 0x8d, 0xbf, 0x6d, 0xda, 0x4c, 0x00, 0x76, 0x76, 0x22, 0x44, 0x01, 0xa9, 0xe7, 0x78, - 0x51, 0xe6, 0x07, 0xb9, 0x14, 0x64, 0x3d, 0x0d, 0xd0, 0x59, 0x4f, 0x0f, 0x04, 0x61, 0x75, 0xcc, - 0xdf, 0xd6, 0xa5, 0xa9, 0xff, 0xc1, 0xc2, 0x6a, 0xfd, 0xf7, 0xa1, 0x96, 0xc7, 0xc2, 0x2a, 0xe0, - 0x40, 0x65, 0xb4, 0x93, 0xa6, 0xc3, 0x44, 0xb4, 0xc3, 0x6e, 0xf2, 0xa0, 0x1b, 0xc4, 0xfd, 0x8c, - 0xe4, 0x2a, 0xe3, 0x31, 0x3f, 0x0a, 0xe8, 0xe3, 0xc7, 0x80, 0x6e, 0xbb, 0x25, 0xa8, 0xcf, 0x25, - 0x9f, 0x5c, 0xb5, 0x8e, 0x35, 0x85, 0x05, 0x6d, 0x10, 0x62, 0xbb, 0x85, 0x40, 0xf1, 0x26, 0x3a, - 0x98, 0x88, 0x3c, 0xd6, 0x44, 0xb5, 0xbc, 0x4f, 0x13, 0x69, 0xce, 0x2d, 0x7e, 0xad, 0x54, 0xf7, - 0xcc, 0xa6, 0x99, 0x36, 0x09, 0x0b, 0x3e, 0x44, 0x2c, 0x7e, 0x49, 0xd8, 0xe5, 0xe4, 0xd0, 0xe7, - 0x51, 0xfb, 0xcc, 0x77, 0xcb, 0xca, 0x11, 0x7d, 0xe6, 0x9b, 0x62, 0xe9, 0x4a, 0x36, 0x7d, 0xa4, - 0xc3, 0x4a, 0xd8, 0x4f, 0x1e, 0xf7, 0x83, 0xdd, 0x92, 0x27, 0xf0, 0xb9, 0x9b, 0x71, 0x56, 0x36, - 0x5e, 0xb7, 0x22, 0x86, 0x1c, 0x46, 0x2c, 0x79, 0x22, 0x38, 0x08, 0x61, 0x81, 0xe7, 0x5d, 0x91, - 0x4b, 0x9e, 0x4b, 0x2c, 0x84, 0x85, 0xc6, 0x34, 0x18, 0x0b, 0x61, 0x94, 0x02, 0xe8, 0xb7, 0x6a, - 0x3f, 0x88, 0xcb, 0x63, 0x36, 0x47, 0x33, 0xb6, 0x66, 0xaf, 0xa7, 0x91, 0xc7, 0xfa, 0x2d, 0xe0, - 0xbc, 0x97, 0x7c, 0xbe, 0x97, 0x31, 0x2b, 0x67, 0x76, 0x77, 0x63, 0x3a, 0x78, 0x42, 0xdb, 0x09, - 0x49, 0xe2, 0x25, 0x5f, 0x5c, 0x03, 0x84, 0x9d, 0x83, 0x39, 0x9b, 0xd9, 0x9a, 0x22, 0x35, 0x50, - 0xf2, 0x56, 0x55, 0x1f, 0x74, 0x83, 0xc0, 0xcf, 0xeb, 0x74, 0xca, 0x45, 0xc4, 0x8f, 0x92, 0xf7, - 0xf1, 0x03, 0x41, 0x90, 0xbd, 0xd5, 0xf5, 0x6e, 0x56, 0x74, 0x3b, 0xf9, 0x54, 0xaf, 0x63, 0x87, - 0xc4, 0xe3, 0x01, 0x5c, 0x2c, 0x7b, 0x23, 0x78, 0x30, 0x46, 0xcd, 0x06, 0x6d, 0x6c, 0x8c, 0xda, - 0xfd, 0xd7, 0x3e, 0x63, 0x14, 0x83, 0xb5, 0xcf, 0x9f, 0xe9, 0x31, 0xba, 0xc7, 0x24, 0xab, 0xf3, - 0xf6, 0xd7, 0x29, 0xbf, 0xd6, 0x0b, 0x61, 0xa4, 0xbe, 0x86, 0x1a, 0xaa, 0x4f, 0x56, 0xc1, 0xaa, - 0x78, 0xbb, 0x37, 0x1f, 0xf1, 0xad, 0x57, 0x08, 0x9d, 0xbe, 0xc1, 0x52, 0x61, 0xbb, 0x37, 0x1f, - 0xf1, 0xad, 0xbf, 0x85, 0xef, 0xf4, 0x0d, 0x3e, 0x88, 0xdf, 0xee, 0xcd, 0x6b, 0xdf, 0x7f, 0x69, - 0x06, 0xae, 0xef, 0xbc, 0xce, 0xc3, 0x26, 0x32, 0x5d, 0x72, 0x2c, 0x9d, 0x0c, 0xed, 0x59, 0x34, - 0x96, 0x4e, 0xd2, 0x2a, 0xde, 0x05, 0x4a, 0x58, 0x29, 0x4e, 0x44, 0x95, 0xaa, 0x97, 0xf4, 0xcf, - 0x7a, 0x18, 0x35, 0x70, 0x6c, 0xd1, 0x14, 0x53, 0x72, 0xaf, 0x1b, 0x03, 0xd4, 0x9d, 0x62, 0x7e, - 0x1c, 0xb1, 0xd7, 0x3e, 0xcc, 0xbc, 0xd5, 0x93, 0x76, 0x2f, 0xfe, 0x02, 0xc6, 0x7f, 0xe3, 0x18, - 0x6b, 0x55, 0xf4, 0xa5, 0xe3, 0x93, 0xfe, 0x0a, 0xda, 0xfd, 0x5f, 0x9b, 0x75, 0x05, 0xf4, 0xaf, - 0x07, 0xc1, 0xd3, 0x3e, 0x16, 0xc1, 0x40, 0x78, 0x76, 0x23, 0x1d, 0x5d, 0x90, 0xbf, 0x37, 0x0b, - 0x68, 0x83, 0xaa, 0x6f, 0x39, 0xd4, 0x37, 0xa0, 0x7a, 0x4c, 0xc4, 0x9a, 0xd5, 0xc1, 0x70, 0x64, - 0x7c, 0x7e, 0x43, 0x2d, 0xef, 0x3a, 0xad, 0x00, 0xd6, 0xdf, 0x1c, 0x7a, 0xe5, 0x89, 0x59, 0xf6, - 0x68, 0x58, 0xa0, 0x2f, 0x6e, 0xaa, 0x46, 0x8d, 0x15, 0x0f, 0x56, 0xb7, 0x73, 0x3c, 0xeb, 0x69, - 0x38, 0xb8, 0xaf, 0xe3, 0xb3, 0x9b, 0x29, 0xe9, 0xb2, 0xfc, 0xc7, 0x5a, 0x72, 0x3f, 0x60, 0xdd, - 0xfb, 0x04, 0xb0, 0xeb, 0xf1, 0xe3, 0x88, 0x7d, 0x4a, 0xc9, 0x16, 0xee, 0x77, 0x7f, 0x39, 0x65, - 0x77, 0xf7, 0x54, 0xa0, 0xf2, 0x32, 0xcd, 0x24, 0x2f, 0xdb, 0x77, 0x4f, 0x85, 0x76, 0x1b, 0x6a, - 0x48, 0xdf, 0x3d, 0x15, 0xc1, 0xbd, 0xbb, 0xa7, 0x10, 0xcf, 0xe8, 0xdd, 0x53, 0xa8, 0xb5, 0xe8, - 0xdd, 0x53, 0x71, 0x0d, 0x2a, 0xbc, 0x9b, 0x22, 0x34, 0xfb, 0xd6, 0xbd, 0x2c, 0x86, 0xdb, 0xd8, - 0x4f, 0x6f, 0xa2, 0x42, 0x4c, 0x70, 0x0d, 0xa7, 0xce, 0xb9, 0xf5, 0x78, 0xa6, 0xc1, 0x59, 0xb7, - 0xed, 0xde, 0xbc, 0xf6, 0xfd, 0x53, 0xbd, 0xba, 0xb1, 0xe1, 0x5c, 0x94, 0xea, 0xde, 0xb1, 0xcd, - 0x58, 0x78, 0xae, 0x2d, 0xf8, 0x2d, 0xff, 0xb8, 0x1f, 0x4c, 0x54, 0xb7, 0x26, 0x74, 0xa3, 0x0f, - 0xbb, 0x0c, 0x81, 0x26, 0xdf, 0xee, 0xcd, 0x13, 0xd3, 0x48, 0xe3, 0xbb, 0x69, 0xed, 0x1e, 0xc6, - 0xc2, 0xb6, 0x7e, 0xd2, 0x5f, 0x41, 0xbb, 0x5f, 0xea, 0xb4, 0xd1, 0x77, 0xaf, 0xda, 0x79, 0xab, - 0xcb, 0xd4, 0x28, 0x68, 0xe6, 0x61, 0x5f, 0x3c, 0x96, 0x40, 0xf8, 0x53, 0x68, 0x57, 0x02, 0x81, - 0x4e, 0xa3, 0x9f, 0xdd, 0x4c, 0x49, 0x97, 0xe5, 0x9f, 0xd6, 0x92, 0xdb, 0x64, 0x59, 0x74, 0x3f, - 0xf8, 0xa2, 0xaf, 0x65, 0xd0, 0x1f, 0xbe, 0xbc, 0xb1, 0x9e, 0x2e, 0xd4, 0xbf, 0xae, 0x25, 0x77, - 0x22, 0x85, 0x6a, 0x3a, 0xc8, 0x0d, 0xac, 0x87, 0x1d, 0xe5, 0x87, 0x37, 0x57, 0xa4, 0xa6, 0x7b, - 0x1f, 0x1f, 0xb5, 0x2f, 0x65, 0x8a, 0xd8, 0x1e, 0xd1, 0x97, 0x32, 0x75, 0x6b, 0xc1, 0x4d, 0x1e, - 0x76, 0x6e, 0x16, 0x5d, 0xe8, 0x26, 0x8f, 0x3a, 0xa1, 0x16, 0xbd, 0x5c, 0x02, 0xe3, 0x30, 0x27, - 0x2f, 0xde, 0x16, 0x2c, 0x9f, 0xd2, 0x4e, 0x1a, 0x79, 0xb7, 0x13, 0xcb, 0xc1, 0xcd, 0xb1, 0x5a, - 0x7a, 0x2a, 0xcc, 0x42, 0xea, 0x21, 0xa5, 0x6f, 0x91, 0xe8, 0xe6, 0x58, 0x0b, 0x25, 0xbc, 0xe9, - 0xac, 0x31, 0xe6, 0x0d, 0x24, 0x8b, 0x8f, 0xfa, 0xa0, 0x20, 0x45, 0xb7, 0xde, 0xec, 0x9e, 0xfb, - 0xe3, 0x98, 0x95, 0xd6, 0xbe, 0xfb, 0x56, 0x4f, 0x9a, 0x70, 0x3b, 0xe2, 0xf2, 0x2b, 0xce, 0xa6, - 0xbc, 0x8c, 0xba, 0xb5, 0x54, 0x2f, 0xb7, 0x3e, 0x8d, 0xb9, 0xdd, 0x15, 0xd9, 0x62, 0x9e, 0xeb, - 0xc6, 0x24, 0xdd, 0xfa, 0x54, 0xb7, 0x5b, 0x40, 0xc3, 0x6d, 0x41, 0xe7, 0x56, 0xa5, 0x97, 0x8f, - 0xe2, 0x66, 0x82, 0xac, 0x72, 0xb3, 0x17, 0x4b, 0xd7, 0x53, 0x77, 0xa3, 0x8e, 0x7a, 0x82, 0x9e, - 0xb4, 0xd5, 0x93, 0x86, 0xfb, 0x73, 0x9e, 0x5b, 0xdb, 0x9f, 0xb6, 0x3b, 0x6c, 0xb5, 0xba, 0xd4, - 0x93, 0xfe, 0x0a, 0x70, 0x37, 0x54, 0xf7, 0xaa, 0xc3, 0xb4, 0x92, 0x2f, 0xd3, 0x2c, 0x1b, 0x6c, - 0x46, 0xba, 0x89, 0x81, 0xa2, 0xbb, 0xa1, 0x08, 0x4c, 0xf4, 0x64, 0xb3, 0x7b, 0x98, 0x0f, 0xba, - 0xec, 0x28, 0xaa, 0x57, 0x4f, 0xf6, 0x69, 0xb0, 0xa3, 0xe5, 0x3d, 0x6a, 0x5b, 0xdb, 0x61, 0xfc, - 0xc1, 0xb5, 0x2a, 0xbc, 0xdd, 0x9b, 0x07, 0xaf, 0xdb, 0x15, 0xa5, 0x66, 0x96, 0x7b, 0x94, 0x89, - 0x60, 0x26, 0xb9, 0xdf, 0x41, 0x81, 0x5d, 0xc1, 0x66, 0x18, 0xbd, 0x49, 0xa7, 0x33, 0x2e, 0xd1, - 0x37, 0x45, 0x3e, 0x10, 0x7d, 0x53, 0x04, 0x40, 0xd0, 0x74, 0xcd, 0xdf, 0xed, 0x76, 0xe8, 0xc1, - 0x14, 0x6b, 0x3a, 0xad, 0xec, 0x51, 0xb1, 0xa6, 0x43, 0x69, 0x10, 0x0d, 0xac, 0x5b, 0xfd, 0x39, - 0xfe, 0xa3, 0x98, 0x19, 0xf0, 0x4d, 0xfe, 0x66, 0x2f, 0x16, 0xcc, 0x28, 0xce, 0x61, 0x3a, 0x4f, - 0x25, 0x36, 0xa3, 0x78, 0x36, 0x6a, 0x24, 0x36, 0xa3, 0xb4, 0x51, 0xaa, 0x7a, 0x75, 0x8e, 0x70, - 0x30, 0x8d, 0x57, 0xaf, 0x61, 0xfa, 0x55, 0xcf, 0xb2, 0xad, 0x17, 0x9b, 0xb9, 0xed, 0x32, 0xf2, - 0x52, 0x2f, 0x96, 0x91, 0xbe, 0xad, 0x3e, 0xd3, 0x84, 0x60, 0x2c, 0xea, 0x50, 0x0a, 0x70, 0xc3, - 0xbe, 0xe6, 0xcc, 0xbb, 0xd7, 0xa2, 0xe0, 0xac, 0x64, 0xf9, 0x04, 0x5d, 0x9c, 0x2a, 0x83, 0x2d, - 0x32, 0xb6, 0x38, 0x25, 0x35, 0xc0, 0x6b, 0xf3, 0xf0, 0x03, 0x4b, 0x64, 0x28, 0xd8, 0x2f, 0x19, - 0xc3, 0xef, 0x2b, 0x1f, 0xf6, 0x20, 0xe1, 0x6b, 0x73, 0x03, 0xd8, 0x8d, 0xef, 0xc6, 0xe9, 0xa7, - 0x11, 0x53, 0x21, 0x1a, 0x5b, 0x08, 0xd3, 0x2a, 0xa0, 0x53, 0xdb, 0x04, 0x97, 0xcb, 0x9f, 0xf0, - 0x15, 0xd6, 0xa9, 0x5d, 0x7e, 0xaa, 0x90, 0x58, 0xa7, 0x6e, 0xa3, 0x20, 0xcf, 0xf4, 0xd7, 0x41, - 0xeb, 0x11, 0x7d, 0x7f, 0xe9, 0xb3, 0xd1, 0xc9, 0x81, 0x91, 0xb3, 0x97, 0x2e, 0x83, 0xf7, 0x04, - 0x48, 0x41, 0xf7, 0xd2, 0x25, 0xfe, 0x9a, 0x60, 0xb3, 0x17, 0x0b, 0x5f, 0xc9, 0x33, 0xc9, 0xdf, - 0x9a, 0x77, 0xe5, 0x48, 0x71, 0x95, 0xbc, 0xf5, 0xb2, 0xfc, 0x41, 0x37, 0xe8, 0x0e, 0xc0, 0x9e, - 0x94, 0x62, 0xc2, 0xab, 0x4a, 0xdf, 0x54, 0x19, 0x9e, 0x30, 0xd2, 0xb2, 0x21, 0xb8, 0xa7, 0xf2, - 0x5e, 0x1c, 0xf2, 0xae, 0x97, 0x6b, 0x44, 0xee, 0xd6, 0x9b, 0x75, 0x54, 0xb3, 0x7d, 0xe1, 0xcd, - 0x46, 0x27, 0xe7, 0x86, 0x97, 0x96, 0xfa, 0xd7, 0xdc, 0x3c, 0x40, 0xd5, 0xb1, 0x1b, 0x6e, 0x1e, - 0xf6, 0x20, 0xb5, 0xab, 0xaf, 0x92, 0x77, 0x0f, 0xc5, 0x6c, 0xc4, 0xf3, 0xe9, 0xe0, 0x07, 0xe1, - 0x11, 0x5a, 0x31, 0x1b, 0xd6, 0x7f, 0xb6, 0x46, 0x6f, 0x51, 0x62, 0x77, 0x08, 0x70, 0x8f, 0x9f, - 0x2f, 0x66, 0x23, 0xc9, 0x24, 0x38, 0x04, 0xa8, 0xfe, 0x3e, 0xac, 0x05, 0xc4, 0x21, 0xc0, 0x00, - 0x00, 0xf6, 0xc6, 0x25, 0xe7, 0xa8, 0xbd, 0x5a, 0x10, 0xb5, 0xa7, 0x01, 0x97, 0x45, 0x58, 0x7b, - 0x75, 0xa2, 0x0e, 0x0f, 0xed, 0x39, 0x1d, 0x25, 0x25, 0xb2, 0x88, 0x36, 0xe5, 0x3a, 0x77, 0x53, - 0x7d, 0x75, 0xeb, 0xc8, 0x62, 0x3e, 0x67, 0xe5, 0x0a, 0x74, 0x6e, 0x5d, 0x4b, 0x0f, 0x20, 0x3a, - 0x37, 0x0a, 0xba, 0x51, 0x6b, 0x1e, 0xf3, 0xe4, 0x6a, 0x5f, 0x94, 0x62, 0x21, 0xd3, 0x9c, 0xc3, - 0x9b, 0x27, 0xec, 0x03, 0xf5, 0x19, 0x62, 0xd4, 0x52, 0xac, 0xcb, 0x72, 0x15, 0xd1, 0x9c, 0x27, - 0x54, 0xf7, 0x57, 0x57, 0x52, 0x94, 0xf0, 0x7d, 0x62, 0x63, 0x05, 0x42, 0x44, 0x96, 0x4b, 0xc2, - 0xa0, 0xed, 0x4f, 0xd2, 0x7c, 0x86, 0xb6, 0xfd, 0x89, 0x7f, 0xfb, 0xeb, 0x1d, 0x1a, 0x70, 0x03, - 0xaa, 0x79, 0x68, 0xcd, 0x00, 0xd0, 0xdf, 0x72, 0xa2, 0x0f, 0xdd, 0x27, 0x88, 0x01, 0x85, 0x93, - 0xc0, 0xd5, 0xab, 0x82, 0xe7, 0x7c, 0x6a, 0x4e, 0xcd, 0x61, 0xae, 0x02, 0x22, 0xea, 0x0a, 0x92, - 0x2e, 0x16, 0x29, 0xf9, 0xe9, 0x22, 0x3f, 0x29, 0xc5, 0x45, 0x9a, 0xf1, 0x12, 0xc4, 0xa2, 0x46, - 0xdd, 0x93, 0x13, 0xb1, 0x08, 0xe3, 0xdc, 0xf1, 0x0b, 0x25, 0x0d, 0x2e, 0x61, 0x1f, 0x97, 0x6c, - 0x02, 0x8f, 0x5f, 0x34, 0x36, 0xda, 0x18, 0xb1, 0x33, 0x18, 0xc1, 0xbd, 0x44, 0xa7, 0x71, 0x9d, - 0xaf, 0x54, 0xff, 0xd0, 0xdf, 0x12, 0xaa, 0x3b, 0x51, 0x2b, 0x90, 0xe8, 0x68, 0x73, 0x18, 0x49, - 0x24, 0x3a, 0x71, 0x0d, 0x37, 0x95, 0x28, 0xee, 0x58, 0x1f, 0x2b, 0x02, 0x53, 0x49, 0x63, 0xc3, - 0x08, 0x89, 0xa9, 0xa4, 0x05, 0x81, 0x80, 0x64, 0x86, 0xc1, 0x0c, 0x0d, 0x48, 0x56, 0x1a, 0x0d, - 0x48, 0x3e, 0xe5, 0x02, 0xc5, 0x41, 0x9e, 0xca, 0x94, 0x65, 0x23, 0x2e, 0x4f, 0x58, 0xc9, 0xe6, - 0x5c, 0xf2, 0x12, 0x06, 0x0a, 0x8d, 0x0c, 0x03, 0x86, 0x08, 0x14, 0x14, 0xab, 0x1d, 0xfe, 0x5e, - 0xf2, 0x7e, 0x3d, 0xef, 0xf3, 0x5c, 0xff, 0xdc, 0xca, 0x0b, 0xf5, 0x3b, 0x4d, 0x83, 0x0f, 0xac, - 0x8d, 0x91, 0x2c, 0x39, 0x9b, 0x1b, 0xdb, 0xef, 0xd9, 0xbf, 0x2b, 0xf0, 0xc9, 0x5a, 0xdd, 0x9f, - 0x8f, 0x85, 0x4c, 0x2f, 0xea, 0x65, 0xb6, 0xfe, 0x82, 0x08, 0xf4, 0x67, 0x5f, 0x3c, 0x8c, 0xdc, - 0x45, 0x81, 0x71, 0x2e, 0x4e, 0xfb, 0xd2, 0x53, 0x5e, 0x64, 0x30, 0x4e, 0x07, 0xda, 0x0a, 0x20, - 0xe2, 0x34, 0x0a, 0xba, 0xc1, 0xe9, 0x8b, 0xc7, 0x3c, 0x5e, 0x99, 0x31, 0xef, 0x57, 0x99, 0x71, - 0xf0, 0x51, 0x46, 0x96, 0xbc, 0x7f, 0xc4, 0xe7, 0xe7, 0xbc, 0xac, 0x2e, 0xd3, 0x82, 0xba, 0xb7, - 0xd5, 0x11, 0x9d, 0xf7, 0xb6, 0x12, 0xa8, 0x9b, 0x09, 0x1c, 0x70, 0x50, 0x1d, 0xb3, 0x39, 0x57, - 0x37, 0x6b, 0x80, 0x99, 0xc0, 0x33, 0xe2, 0x41, 0xc4, 0x4c, 0x40, 0xc2, 0xde, 0xf7, 0x5d, 0x8e, - 0x39, 0xe5, 0xb3, 0xba, 0x87, 0x95, 0x27, 0x6c, 0x35, 0xe7, 0xb9, 0xd4, 0x26, 0xc1, 0x9e, 0xbc, - 0x67, 0x12, 0xe7, 0x89, 0x3d, 0xf9, 0x3e, 0x7a, 0x5e, 0x68, 0x0a, 0x1e, 0xfc, 0x89, 0x28, 0x65, - 0xf3, 0x63, 0x4a, 0x67, 0x65, 0x06, 0x42, 0x53, 0xf8, 0x50, 0x03, 0x92, 0x08, 0x4d, 0x71, 0x0d, - 0xef, 0x57, 0x08, 0x82, 0x32, 0xbc, 0xe6, 0xa5, 0xed, 0x27, 0x2f, 0xe6, 0x2c, 0xcd, 0x74, 0x6f, - 0xf8, 0x51, 0xc4, 0x36, 0xa1, 0x43, 0xfc, 0x0a, 0x41, 0x5f, 0x5d, 0xef, 0x77, 0x1b, 0xe2, 0x25, - 0x04, 0xaf, 0x08, 0x3a, 0xec, 0x13, 0xaf, 0x08, 0xba, 0xb5, 0xdc, 0xca, 0xdd, 0xb1, 0x8a, 0x5b, - 0x29, 0x62, 0x57, 0x4c, 0xe1, 0x7e, 0xa1, 0x67, 0x13, 0x80, 0xc4, 0xca, 0x3d, 0xaa, 0xe0, 0x52, - 0x03, 0x87, 0xbd, 0x4c, 0x73, 0x96, 0xa5, 0x3f, 0x83, 0x69, 0xbd, 0x67, 0xc7, 0x10, 0x44, 0x6a, - 0x80, 0x93, 0x98, 0xab, 0x7d, 0x2e, 0xc7, 0x69, 0x1d, 0xfa, 0x1f, 0x44, 0x9e, 0x9b, 0x22, 0xba, - 0x5d, 0x79, 0xa4, 0x77, 0x47, 0x2b, 0x7c, 0xac, 0x3b, 0x45, 0x31, 0xaa, 0x67, 0xd5, 0x53, 0x3e, - 0xe1, 0x69, 0x21, 0x07, 0x9f, 0xc7, 0x9f, 0x15, 0xc0, 0x89, 0x83, 0x16, 0x3d, 0xd4, 0xbc, 0xd7, - 0xf7, 0x75, 0x2c, 0x19, 0x35, 0xbf, 0x32, 0x78, 0x56, 0xf1, 0x52, 0x27, 0x1a, 0xfb, 0x5c, 0x82, - 0xd1, 0xe9, 0x71, 0x43, 0x0f, 0xac, 0x2b, 0x4a, 0x8c, 0xce, 0xb8, 0x86, 0xdb, 0xec, 0xf3, 0x38, - 0x7d, 0xe7, 0xb6, 0x3a, 0x6f, 0xf8, 0x98, 0x34, 0xe6, 0x51, 0xc4, 0x66, 0x1f, 0x4d, 0xbb, 0x6c, - 0xad, 0xed, 0x76, 0x27, 0x5f, 0x1d, 0xc0, 0x23, 0x13, 0x88, 0x25, 0x85, 0x11, 0xd9, 0x5a, 0x04, - 0xf7, 0x36, 0xc3, 0x4b, 0xc1, 0xa6, 0x13, 0x56, 0xc9, 0x13, 0xb6, 0xca, 0x04, 0x9b, 0xaa, 0x79, - 0x1d, 0x6e, 0x86, 0x1b, 0x66, 0xe8, 0x43, 0xd4, 0x66, 0x38, 0x05, 0xfb, 0xd9, 0x99, 0xfa, 0xf1, - 0x44, 0x7d, 0x96, 0x13, 0x66, 0x67, 0xaa, 0xbc, 0xf0, 0x1c, 0xe7, 0xbd, 0x38, 0xe4, 0xbe, 0x41, - 0x6b, 0x44, 0x2a, 0x0d, 0xb9, 0x83, 0xe9, 0x04, 0x09, 0xc8, 0xc7, 0x11, 0xc2, 0xdd, 0x4b, 0xd1, - 0xfc, 0xdd, 0xfc, 0xfe, 0x8f, 0xd4, 0x37, 0x59, 0x3f, 0xc6, 0x74, 0x7d, 0x68, 0xe8, 0x5f, 0x70, - 0xb7, 0xd5, 0x93, 0x76, 0x69, 0xe6, 0xee, 0x25, 0x93, 0x3b, 0xd3, 0xe9, 0x11, 0xaf, 0x90, 0x0f, - 0xca, 0x6b, 0xe1, 0xd0, 0x49, 0x89, 0x34, 0xb3, 0x4d, 0xb9, 0x8e, 0x5e, 0xcb, 0x5e, 0x4c, 0x53, - 0xa9, 0x65, 0xe6, 0x84, 0xf4, 0xe3, 0xb6, 0x81, 0x36, 0x45, 0xd4, 0x8a, 0xa6, 0x5d, 0x2c, 0xaf, - 0x99, 0xb1, 0x98, 0xcd, 0x32, 0xae, 0xa1, 0x53, 0xce, 0x9a, 0x8b, 0xfc, 0xb6, 0xdb, 0xb6, 0x50, - 0x90, 0x88, 0xe5, 0x51, 0x05, 0x97, 0x46, 0xd6, 0x58, 0xf3, 0x4a, 0xca, 0x3c, 0xd8, 0x8d, 0xb6, - 0x99, 0x00, 0x20, 0xd2, 0x48, 0x14, 0x74, 0xdf, 0xbd, 0xd5, 0xe2, 0x7d, 0x6e, 0x9e, 0x04, 0xbc, - 0x82, 0x48, 0x29, 0x7b, 0x62, 0xe2, 0xbb, 0x37, 0x04, 0x73, 0xeb, 0x04, 0xe0, 0xe1, 0xf9, 0xea, - 0x60, 0x0a, 0xd7, 0x09, 0x50, 0x5f, 0x31, 0xc4, 0x3a, 0x81, 0x62, 0xc3, 0xa6, 0xb3, 0xfb, 0x5e, - 0x87, 0xac, 0x72, 0x95, 0x43, 0x9a, 0x0e, 0x05, 0x63, 0x4d, 0x47, 0x29, 0x84, 0x8f, 0xd4, 0xdf, - 0x5a, 0x43, 0x1e, 0x29, 0xb6, 0xaf, 0xb6, 0xde, 0x85, 0xb9, 0xb8, 0x64, 0xd7, 0x93, 0xea, 0xc8, - 0x12, 0x7e, 0x83, 0x7f, 0x23, 0x24, 0xe2, 0x52, 0x0b, 0xf2, 0x7e, 0x9a, 0xae, 0x48, 0x47, 0x92, - 0x95, 0xb2, 0x0e, 0xc8, 0xed, 0x9f, 0xa6, 0x2b, 0xd2, 0xa1, 0x27, 0xa5, 0x7e, 0x9a, 0xae, 0x45, - 0x79, 0x3f, 0xb7, 0x56, 0x9b, 0x17, 0x85, 0xb6, 0xfe, 0x09, 0xa2, 0x67, 0x84, 0xe4, 0x6f, 0xe7, - 0x02, 0xa8, 0xb1, 0xfd, 0xfc, 0xe3, 0xff, 0xfa, 0xe6, 0xd6, 0xda, 0x2f, 0xbe, 0xb9, 0xb5, 0xf6, - 0x3f, 0xdf, 0xdc, 0x5a, 0xfb, 0xf9, 0xb7, 0xb7, 0xde, 0xf9, 0xc5, 0xb7, 0xb7, 0xde, 0xf9, 0xef, - 0x6f, 0x6f, 0xbd, 0xf3, 0xf5, 0xbb, 0xfa, 0xf7, 0x80, 0xcf, 0xff, 0x9f, 0xfa, 0x55, 0xdf, 0x67, - 0xff, 0x17, 0x00, 0x00, 0xff, 0xff, 0x79, 0x20, 0x3d, 0xb9, 0x33, 0x78, 0x00, 0x00, + // 5364 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x9d, 0xdf, 0x6f, 0x24, 0x49, + 0x52, 0xf8, 0xd7, 0x2f, 0xdf, 0xfd, 0x52, 0xc7, 0x2d, 0xd0, 0x0b, 0xcb, 0xde, 0x72, 0x37, 0xbf, + 0x76, 0xc6, 0xf6, 0x8c, 0xed, 0xf6, 0xec, 0xcc, 0xce, 0xee, 0xe9, 0x0e, 0x09, 0x79, 0xec, 0xb1, + 0xd7, 0x9c, 0xed, 0x31, 0xee, 0xf6, 0x8c, 0xb4, 0x12, 0x12, 0xe9, 0xea, 0x74, 0xbb, 0x70, 0x75, + 0x65, 0x5d, 0x55, 0x76, 0x7b, 0xfa, 0x10, 0x08, 0x04, 0x02, 0x81, 0x40, 0x9c, 0xf8, 0xf5, 0x8a, + 0xc4, 0x5f, 0xc3, 0xe3, 0x3d, 0xf2, 0x88, 0x76, 0x9f, 0xef, 0x7f, 0x40, 0x95, 0x95, 0x95, 0x3f, + 0xa2, 0x22, 0xb2, 0xca, 0xf7, 0x34, 0xa3, 0x8e, 0x4f, 0x44, 0x64, 0x56, 0x66, 0x46, 0x46, 0x66, + 0x65, 0xa5, 0xa3, 0xbb, 0xf9, 0xc5, 0x76, 0x5e, 0x08, 0x29, 0xca, 0xed, 0x92, 0x17, 0x8b, 0x24, + 0xe6, 0xcd, 0xbf, 0x43, 0xf5, 0xf3, 0xe0, 0x7d, 0x96, 0x2d, 0xe5, 0x32, 0xe7, 0x9f, 0x7c, 0x6c, + 0xc9, 0x58, 0xcc, 0x66, 0x2c, 0x9b, 0x94, 0x35, 0xf2, 0xc9, 0x47, 0x56, 0xc2, 0x17, 0x3c, 0x93, + 0xfa, 0xf7, 0x67, 0xbf, 0xfc, 0xe5, 0x4a, 0xf4, 0xc1, 0x6e, 0x9a, 0xf0, 0x4c, 0xee, 0x6a, 0x8d, + 0xc1, 0xd7, 0xd1, 0x77, 0x77, 0xf2, 0xfc, 0x80, 0xcb, 0x37, 0xbc, 0x28, 0x13, 0x91, 0x0d, 0x3e, + 0x1d, 0x6a, 0x07, 0xc3, 0xb3, 0x3c, 0x1e, 0xee, 0xe4, 0xf9, 0xd0, 0x0a, 0x87, 0x67, 0xfc, 0xa7, + 0x73, 0x5e, 0xca, 0x4f, 0x1e, 0x86, 0xa1, 0x32, 0x17, 0x59, 0xc9, 0x07, 0x97, 0xd1, 0x6f, 0xed, + 0xe4, 0xf9, 0x88, 0xcb, 0x3d, 0x5e, 0x55, 0x60, 0x24, 0x99, 0xe4, 0x83, 0xb5, 0x96, 0xaa, 0x0f, + 0x18, 0x1f, 0xeb, 0xdd, 0xa0, 0xf6, 0x33, 0x8e, 0xbe, 0x53, 0xf9, 0xb9, 0x9a, 0xcb, 0x89, 0xb8, + 0xc9, 0x06, 0xf7, 0xdb, 0x8a, 0x5a, 0x64, 0x6c, 0x3f, 0x08, 0x21, 0xda, 0xea, 0xdb, 0xe8, 0xd7, + 0xdf, 0xb2, 0x34, 0xe5, 0x72, 0xb7, 0xe0, 0x55, 0xc1, 0x7d, 0x9d, 0x5a, 0x34, 0xac, 0x65, 0xc6, + 0xee, 0xa7, 0x41, 0x46, 0x1b, 0xfe, 0x3a, 0xfa, 0x6e, 0x2d, 0x39, 0xe3, 0xb1, 0x58, 0xf0, 0x62, + 0x80, 0x6a, 0x69, 0x21, 0xf1, 0xc8, 0x5b, 0x10, 0xb4, 0xbd, 0x2b, 0xb2, 0x05, 0x2f, 0x24, 0x6e, + 0x5b, 0x0b, 0xc3, 0xb6, 0x2d, 0xa4, 0x6d, 0xff, 0xfd, 0x4a, 0xf4, 0xfd, 0x9d, 0x38, 0x16, 0xf3, + 0x4c, 0x1e, 0x89, 0x98, 0xa5, 0x47, 0x49, 0x76, 0x7d, 0xc2, 0x6f, 0x76, 0xaf, 0x2a, 0x3e, 0x9b, + 0xf2, 0xc1, 0x73, 0xff, 0xa9, 0xd6, 0xe8, 0xd0, 0xb0, 0x43, 0x17, 0x36, 0xbe, 0x3f, 0xbf, 0x9d, + 0x92, 0x2e, 0xcb, 0x3f, 0xaf, 0x44, 0x77, 0x60, 0x59, 0x46, 0x22, 0x5d, 0x70, 0x5b, 0x9a, 0x17, + 0x1d, 0x86, 0x7d, 0xdc, 0x94, 0xe7, 0x8b, 0xdb, 0xaa, 0xe9, 0x12, 0xa5, 0xd1, 0x87, 0x6e, 0x77, + 0x19, 0xf1, 0x52, 0x0d, 0xa7, 0xc7, 0x74, 0x8f, 0xd0, 0x88, 0xf1, 0xfc, 0xa4, 0x0f, 0xaa, 0xbd, + 0x25, 0xd1, 0x40, 0x7b, 0x4b, 0x45, 0x69, 0x9c, 0xad, 0xa3, 0x16, 0x1c, 0xc2, 0xf8, 0x7a, 0xdc, + 0x83, 0xd4, 0xae, 0xfe, 0x24, 0xfa, 0x8d, 0xb7, 0xa2, 0xb8, 0x2e, 0x73, 0x16, 0x73, 0x3d, 0x14, + 0x1e, 0xf9, 0xda, 0x8d, 0x14, 0x8e, 0x86, 0xd5, 0x2e, 0xcc, 0xe9, 0xb4, 0x8d, 0xf0, 0x75, 0xce, + 0x61, 0x0c, 0xb2, 0x8a, 0x95, 0x90, 0xea, 0xb4, 0x10, 0xd2, 0xb6, 0xaf, 0xa3, 0x81, 0xb5, 0x7d, + 0xf1, 0xa7, 0x3c, 0x96, 0x3b, 0x93, 0x09, 0x6c, 0x15, 0xab, 0xab, 0x88, 0xe1, 0xce, 0x64, 0x42, + 0xb5, 0x0a, 0x8e, 0x6a, 0x67, 0x37, 0xd1, 0x47, 0xc0, 0xd9, 0x51, 0x52, 0x2a, 0x87, 0x5b, 0x61, + 0x2b, 0x1a, 0x33, 0x4e, 0x87, 0x7d, 0x71, 0xed, 0xf8, 0x2f, 0x57, 0xa2, 0xef, 0x21, 0x9e, 0xcf, + 0xf8, 0x4c, 0x2c, 0xf8, 0xe0, 0x69, 0xb7, 0xb5, 0x9a, 0x34, 0xfe, 0x3f, 0xbb, 0x85, 0x06, 0xd2, + 0x4d, 0x46, 0x3c, 0xe5, 0xb1, 0x24, 0xbb, 0x49, 0x2d, 0xee, 0xec, 0x26, 0x06, 0x73, 0x46, 0x58, + 0x23, 0x3c, 0xe0, 0x72, 0x77, 0x5e, 0x14, 0x3c, 0x93, 0x64, 0x5b, 0x5a, 0xa4, 0xb3, 0x2d, 0x3d, + 0x14, 0xa9, 0xcf, 0x01, 0x97, 0x3b, 0x69, 0x4a, 0xd6, 0xa7, 0x16, 0x77, 0xd6, 0xc7, 0x60, 0xda, + 0x43, 0x1c, 0xfd, 0xa6, 0xf3, 0xc4, 0xe4, 0x61, 0x76, 0x29, 0x06, 0xf4, 0xb3, 0x50, 0x72, 0xe3, + 0x63, 0xad, 0x93, 0x43, 0xaa, 0xf1, 0xea, 0x5d, 0x2e, 0x0a, 0xba, 0x59, 0x6a, 0x71, 0x67, 0x35, + 0x0c, 0xa6, 0x3d, 0xfc, 0x71, 0xf4, 0x81, 0x8e, 0x92, 0xcd, 0x7c, 0xf6, 0x10, 0x0d, 0xa1, 0x70, + 0x42, 0x7b, 0xd4, 0x41, 0xd9, 0xe0, 0xa0, 0x65, 0x3a, 0xf8, 0x7c, 0x8a, 0xea, 0x81, 0xd0, 0xf3, + 0x30, 0x0c, 0xb5, 0x6c, 0xef, 0xf1, 0x94, 0x93, 0xb6, 0x6b, 0x61, 0x87, 0x6d, 0x03, 0x69, 0xdb, + 0x45, 0xf4, 0x3b, 0xe6, 0xb1, 0x54, 0xf3, 0xa8, 0x92, 0x57, 0x41, 0x7a, 0x83, 0xa8, 0xb7, 0x0b, + 0x19, 0x5f, 0x9b, 0xfd, 0xe0, 0x56, 0x7d, 0xf4, 0x08, 0xc4, 0xeb, 0x03, 0xc6, 0xdf, 0xc3, 0x30, + 0xa4, 0x6d, 0xff, 0xc3, 0x4a, 0xf4, 0x03, 0x2d, 0x7b, 0x95, 0xb1, 0x8b, 0x94, 0xab, 0x29, 0xf1, + 0x84, 0xcb, 0x1b, 0x51, 0x5c, 0x8f, 0x96, 0x59, 0x4c, 0x4c, 0xff, 0x38, 0xdc, 0x31, 0xfd, 0x93, + 0x4a, 0x4e, 0xc6, 0xa7, 0x2b, 0x2a, 0x45, 0x0e, 0x33, 0xbe, 0xa6, 0x06, 0x52, 0xe4, 0x54, 0xc6, + 0xe7, 0x23, 0x2d, 0xab, 0xc7, 0x55, 0xd8, 0xc4, 0xad, 0x1e, 0xbb, 0x71, 0xf2, 0x41, 0x08, 0xb1, + 0x61, 0xab, 0xe9, 0xc0, 0x22, 0xbb, 0x4c, 0xa6, 0xe7, 0xf9, 0xa4, 0xea, 0xc6, 0x8f, 0xf1, 0x1e, + 0xea, 0x20, 0x44, 0xd8, 0x22, 0x50, 0xed, 0xed, 0x9f, 0x6c, 0x62, 0xa4, 0x87, 0xd2, 0x7e, 0x21, + 0x66, 0x47, 0x7c, 0xca, 0xe2, 0xa5, 0x1e, 0xff, 0x9f, 0x87, 0x06, 0x1e, 0xa4, 0x4d, 0x21, 0x5e, + 0xdc, 0x52, 0x4b, 0x97, 0xe7, 0x3f, 0x57, 0xa2, 0x87, 0x4d, 0xf5, 0xaf, 0x58, 0x36, 0xe5, 0xba, + 0x3d, 0xeb, 0xd2, 0xef, 0x64, 0x93, 0x33, 0x5e, 0x4a, 0x56, 0xc8, 0xc1, 0x8f, 0xf0, 0x4a, 0x86, + 0x74, 0x4c, 0xd9, 0x7e, 0xfc, 0x2b, 0xe9, 0xda, 0x56, 0x1f, 0x55, 0x81, 0x4d, 0x87, 0x00, 0xbf, + 0xd5, 0x95, 0x04, 0x06, 0x80, 0x07, 0x21, 0xc4, 0xb6, 0xba, 0x12, 0x1c, 0x66, 0x8b, 0x44, 0xf2, + 0x03, 0x9e, 0xf1, 0xa2, 0xdd, 0xea, 0xb5, 0xaa, 0x8f, 0x10, 0xad, 0x4e, 0xa0, 0x36, 0xd8, 0x78, + 0xde, 0xcc, 0xe4, 0xb8, 0x11, 0x30, 0xd2, 0x9a, 0x1e, 0x37, 0xfb, 0xc1, 0x76, 0x75, 0xe7, 0xf8, + 0x3c, 0xe3, 0x0b, 0x71, 0x0d, 0x57, 0x77, 0xae, 0x89, 0x1a, 0x20, 0x56, 0x77, 0x28, 0x68, 0x67, + 0x30, 0xc7, 0xcf, 0x9b, 0x84, 0xdf, 0x80, 0x19, 0xcc, 0x55, 0xae, 0xc4, 0xc4, 0x0c, 0x86, 0x60, + 0xda, 0xc3, 0x49, 0xf4, 0x6b, 0x4a, 0xf8, 0x87, 0x22, 0xc9, 0x06, 0x77, 0x11, 0xa5, 0x4a, 0x60, + 0xac, 0xde, 0xa3, 0x01, 0x50, 0xe2, 0xea, 0xd7, 0x5d, 0x96, 0xc5, 0x3c, 0x45, 0x4b, 0x6c, 0xc5, + 0xc1, 0x12, 0x7b, 0x98, 0x4d, 0x1d, 0x94, 0xb0, 0x8a, 0x5f, 0xa3, 0x2b, 0x56, 0x24, 0xd9, 0x74, + 0x80, 0xe9, 0x3a, 0x72, 0x22, 0x75, 0xc0, 0x38, 0xd0, 0x85, 0xb5, 0xe2, 0x4e, 0x9e, 0x17, 0x55, + 0x58, 0xc4, 0xba, 0xb0, 0x8f, 0x04, 0xbb, 0x70, 0x0b, 0xc5, 0xbd, 0xed, 0xf1, 0x38, 0x4d, 0xb2, + 0xa0, 0x37, 0x8d, 0xf4, 0xf1, 0x66, 0x51, 0xd0, 0x79, 0x8f, 0x38, 0x5b, 0xf0, 0xa6, 0x66, 0xd8, + 0x93, 0x71, 0x81, 0x60, 0xe7, 0x05, 0xa0, 0x5d, 0xa7, 0x29, 0xf1, 0x31, 0xbb, 0xe6, 0xd5, 0x03, + 0xe6, 0xd5, 0xbc, 0x36, 0xc0, 0xf4, 0x3d, 0x82, 0x58, 0xa7, 0xe1, 0xa4, 0x76, 0x35, 0x8f, 0x3e, + 0x52, 0xf2, 0x53, 0x56, 0xc8, 0x24, 0x4e, 0x72, 0x96, 0x35, 0xf9, 0x3f, 0x36, 0xae, 0x5b, 0x94, + 0x71, 0xb9, 0xd5, 0x93, 0xd6, 0x6e, 0xff, 0x63, 0x25, 0xba, 0x0f, 0xfd, 0x9e, 0xf2, 0x62, 0x96, + 0xa8, 0x65, 0x64, 0x59, 0x07, 0xe1, 0xc1, 0x97, 0x61, 0xa3, 0x2d, 0x05, 0x53, 0x9a, 0x1f, 0xde, + 0x5e, 0xd1, 0x26, 0x43, 0x23, 0x9d, 0x5a, 0xbf, 0x2e, 0x26, 0xad, 0x6d, 0x96, 0x51, 0x93, 0x2f, + 0x2b, 0x21, 0x91, 0x0c, 0xb5, 0x20, 0x30, 0xc2, 0xcf, 0xb3, 0xb2, 0xb1, 0x8e, 0x8d, 0x70, 0x2b, + 0x0e, 0x8e, 0x70, 0x0f, 0xb3, 0x23, 0xfc, 0x74, 0x7e, 0x91, 0x26, 0xe5, 0x55, 0x92, 0x4d, 0x75, + 0xe6, 0xeb, 0xeb, 0x5a, 0x31, 0x4c, 0x7e, 0xd7, 0x3a, 0x39, 0xcc, 0x89, 0xee, 0x2c, 0xa4, 0x13, + 0xd0, 0x4d, 0xd6, 0x3a, 0x39, 0xbb, 0x3e, 0xb0, 0xd2, 0x6a, 0xe5, 0x08, 0xd6, 0x07, 0x8e, 0x6a, + 0x25, 0x25, 0xd6, 0x07, 0x6d, 0x4a, 0x9b, 0x17, 0xd1, 0x6f, 0xbb, 0x75, 0x28, 0x45, 0xba, 0xe0, + 0xe7, 0x45, 0x32, 0x78, 0x42, 0x97, 0xaf, 0x61, 0x8c, 0xab, 0x8d, 0x5e, 0xac, 0x0d, 0x54, 0x96, + 0x38, 0xe0, 0x72, 0x24, 0x99, 0x9c, 0x97, 0x20, 0x50, 0x39, 0x36, 0x0c, 0x42, 0x04, 0x2a, 0x02, + 0xd5, 0xde, 0xfe, 0x28, 0x8a, 0xea, 0x45, 0xb7, 0xda, 0x18, 0xf1, 0xe7, 0x1e, 0xbd, 0x1a, 0xf7, + 0x76, 0x45, 0xee, 0x07, 0x08, 0x9b, 0xf0, 0xd4, 0xbf, 0xab, 0xfd, 0x9e, 0x01, 0xaa, 0xa1, 0x44, + 0x44, 0xc2, 0x03, 0x10, 0x58, 0xd0, 0xd1, 0x95, 0xb8, 0xc1, 0x0b, 0x5a, 0x49, 0xc2, 0x05, 0xd5, + 0x84, 0xdd, 0x81, 0xd5, 0x05, 0xc5, 0x76, 0x60, 0x9b, 0x62, 0x84, 0x76, 0x60, 0x21, 0x63, 0xfb, + 0x8c, 0x6b, 0xf8, 0xa5, 0x10, 0xd7, 0x33, 0x56, 0x5c, 0x83, 0x3e, 0xe3, 0x29, 0x37, 0x0c, 0xd1, + 0x67, 0x28, 0xd6, 0xf6, 0x19, 0xd7, 0x61, 0x95, 0x2e, 0x9f, 0x17, 0x29, 0xe8, 0x33, 0x9e, 0x0d, + 0x8d, 0x10, 0x7d, 0x86, 0x40, 0x6d, 0x74, 0x72, 0xbd, 0x8d, 0x38, 0x5c, 0xf3, 0x7b, 0xea, 0x23, + 0x4e, 0xad, 0xf9, 0x11, 0x0c, 0x76, 0xa1, 0x83, 0x82, 0xe5, 0x57, 0x78, 0x17, 0x52, 0xa2, 0x70, + 0x17, 0x6a, 0x10, 0xd8, 0xde, 0x23, 0xce, 0x8a, 0xf8, 0x0a, 0x6f, 0xef, 0x5a, 0x16, 0x6e, 0x6f, + 0xc3, 0xc0, 0xf6, 0xae, 0x05, 0x6f, 0x13, 0x79, 0x75, 0xcc, 0x25, 0xc3, 0xdb, 0xdb, 0x67, 0xc2, + 0xed, 0xdd, 0x62, 0x6d, 0x3e, 0xee, 0x3a, 0x1c, 0xcd, 0x2f, 0xca, 0xb8, 0x48, 0x2e, 0xf8, 0x20, + 0x60, 0xc5, 0x40, 0x44, 0x3e, 0x4e, 0xc2, 0xda, 0xe7, 0xcf, 0x57, 0xa2, 0xbb, 0x4d, 0xb3, 0x8b, + 0xb2, 0xd4, 0x73, 0x9f, 0xef, 0xfe, 0x05, 0xde, 0xbe, 0x04, 0x4e, 0xec, 0x89, 0xf7, 0x50, 0x73, + 0x72, 0x03, 0xbc, 0x48, 0xe7, 0x59, 0x69, 0x0a, 0xf5, 0x65, 0x1f, 0xeb, 0x8e, 0x02, 0x91, 0x1b, + 0xf4, 0x52, 0xb4, 0x69, 0x99, 0x6e, 0x9f, 0x46, 0x76, 0x38, 0x29, 0x41, 0x5a, 0xd6, 0x3c, 0x6f, + 0x87, 0x20, 0xd2, 0x32, 0x9c, 0x84, 0x5d, 0xe1, 0xa0, 0x10, 0xf3, 0xbc, 0xec, 0xe8, 0x0a, 0x00, + 0x0a, 0x77, 0x85, 0x36, 0xac, 0x7d, 0xbe, 0x8b, 0x7e, 0xd7, 0xed, 0x7e, 0xee, 0xc3, 0xde, 0xa2, + 0xfb, 0x14, 0xf6, 0x88, 0x87, 0x7d, 0x71, 0x9b, 0x51, 0x34, 0x9e, 0xe5, 0x1e, 0x97, 0x2c, 0x49, + 0xcb, 0xc1, 0x2a, 0x6e, 0xa3, 0x91, 0x13, 0x19, 0x05, 0xc6, 0xc1, 0xf8, 0xb6, 0x37, 0xcf, 0xd3, + 0x24, 0x6e, 0xbf, 0x91, 0xd0, 0xba, 0x46, 0x1c, 0x8e, 0x6f, 0x2e, 0x06, 0xe3, 0x75, 0x95, 0xfa, + 0xa9, 0xff, 0x8c, 0x97, 0x39, 0xc7, 0xe3, 0xb5, 0x87, 0x84, 0xe3, 0x35, 0x44, 0x61, 0x7d, 0x46, + 0x5c, 0x1e, 0xb1, 0xa5, 0x98, 0x13, 0xf1, 0xda, 0x88, 0xc3, 0xf5, 0x71, 0x31, 0xbb, 0x36, 0x30, + 0x1e, 0x0e, 0x33, 0xc9, 0x8b, 0x8c, 0xa5, 0xfb, 0x29, 0x9b, 0x96, 0x03, 0x22, 0xc6, 0xf8, 0x14, + 0xb1, 0x36, 0xa0, 0x69, 0xe4, 0x31, 0x1e, 0x96, 0xfb, 0x6c, 0x21, 0x8a, 0x44, 0xd2, 0x8f, 0xd1, + 0x22, 0x9d, 0x8f, 0xd1, 0x43, 0x51, 0x6f, 0x3b, 0x45, 0x7c, 0x95, 0x2c, 0xf8, 0x24, 0xe0, 0xad, + 0x41, 0x7a, 0x78, 0x73, 0x50, 0xa4, 0xd1, 0x46, 0x62, 0x5e, 0xc4, 0x9c, 0x6c, 0xb4, 0x5a, 0xdc, + 0xd9, 0x68, 0x06, 0xd3, 0x1e, 0xfe, 0x66, 0x25, 0xfa, 0xbd, 0x5a, 0xea, 0xbe, 0x26, 0xd8, 0x63, + 0xe5, 0xd5, 0x85, 0x60, 0xc5, 0x64, 0xf0, 0x19, 0x66, 0x07, 0x45, 0x8d, 0xeb, 0x67, 0xb7, 0x51, + 0x81, 0x8f, 0xb5, 0xca, 0xbb, 0xed, 0x88, 0x43, 0x1f, 0xab, 0x87, 0x84, 0x1f, 0x2b, 0x44, 0x61, + 0x00, 0x51, 0xf2, 0x7a, 0x4b, 0x6e, 0x95, 0xd4, 0xf7, 0xf7, 0xe5, 0xd6, 0x3a, 0x39, 0x18, 0x1f, + 0x2b, 0xa1, 0xdf, 0x5b, 0xb6, 0x28, 0x1b, 0x78, 0x8f, 0x19, 0xf6, 0xc5, 0x49, 0xcf, 0x66, 0x54, + 0x84, 0x3d, 0xb7, 0x46, 0xc6, 0xb0, 0x2f, 0x4e, 0x78, 0x76, 0xc2, 0x5a, 0xc8, 0x33, 0x12, 0xda, + 0x86, 0x7d, 0x71, 0x98, 0x7d, 0x69, 0xa6, 0x99, 0x17, 0x9e, 0x04, 0xec, 0xc0, 0xb9, 0x61, 0xa3, + 0x17, 0xab, 0x1d, 0xfe, 0xdd, 0x4a, 0xf4, 0x7d, 0xeb, 0xf1, 0x58, 0x4c, 0x92, 0xcb, 0x65, 0x0d, + 0xbd, 0x61, 0xe9, 0x9c, 0x97, 0x83, 0x67, 0x94, 0xb5, 0x36, 0x6b, 0x4a, 0xf0, 0xfc, 0x56, 0x3a, + 0x70, 0xec, 0xec, 0xe4, 0x79, 0xba, 0x1c, 0xf3, 0x59, 0x9e, 0x92, 0x63, 0xc7, 0x43, 0xc2, 0x63, + 0x07, 0xa2, 0x30, 0x2b, 0x1f, 0x8b, 0x2a, 0xe7, 0x47, 0xb3, 0x72, 0x25, 0x0a, 0x67, 0xe5, 0x0d, + 0x02, 0x73, 0xa5, 0xb1, 0xd8, 0x15, 0x69, 0xca, 0x63, 0xd9, 0x3e, 0x6a, 0x60, 0x34, 0x2d, 0x11, + 0xce, 0x95, 0x00, 0x69, 0x77, 0xe5, 0x9a, 0x35, 0x24, 0x2b, 0xf8, 0xcb, 0xe5, 0x51, 0x92, 0x5d, + 0x0f, 0xf0, 0xb4, 0xc0, 0x02, 0xc4, 0xae, 0x1c, 0x0a, 0xc2, 0xb5, 0xea, 0x79, 0x36, 0x11, 0xf8, + 0x5a, 0xb5, 0x92, 0x84, 0xd7, 0xaa, 0x9a, 0x80, 0x26, 0xcf, 0x38, 0x65, 0xb2, 0x92, 0x84, 0x4d, + 0x6a, 0x02, 0x0b, 0x85, 0xfa, 0xdd, 0x0d, 0x19, 0x0a, 0xc1, 0xdb, 0x9a, 0xb5, 0x4e, 0x0e, 0xf6, + 0xd0, 0x66, 0xd1, 0xba, 0xcf, 0x65, 0x7c, 0x85, 0xf7, 0x50, 0x0f, 0x09, 0xf7, 0x50, 0x88, 0xc2, + 0x2a, 0x8d, 0x85, 0x59, 0x74, 0xaf, 0xe2, 0xfd, 0xa3, 0xb5, 0xe0, 0x5e, 0xeb, 0xe4, 0xe0, 0x32, + 0xf2, 0x70, 0xa6, 0x9e, 0x19, 0xda, 0xc9, 0x6b, 0x59, 0x78, 0x19, 0x69, 0x18, 0x58, 0xfa, 0x5a, + 0xa0, 0xf6, 0xb2, 0x56, 0x69, 0x45, 0x6f, 0x37, 0x6b, 0xad, 0x93, 0xd3, 0x4e, 0xfe, 0xcd, 0x2c, + 0xe3, 0x6a, 0xe9, 0x89, 0xa8, 0xc6, 0xc8, 0x1b, 0x96, 0x26, 0x13, 0x26, 0xf9, 0x58, 0x5c, 0xf3, + 0x0c, 0x5f, 0x31, 0xe9, 0xd2, 0xd6, 0xfc, 0xd0, 0x53, 0x08, 0xaf, 0x98, 0xc2, 0x8a, 0xb0, 0x9f, + 0xd4, 0xf4, 0x79, 0xc9, 0x77, 0x59, 0x49, 0x44, 0x32, 0x0f, 0x09, 0xf7, 0x13, 0x88, 0xc2, 0x7c, + 0xb5, 0x96, 0xbf, 0x7a, 0x97, 0xf3, 0x22, 0xe1, 0x59, 0xcc, 0xf1, 0x7c, 0x15, 0x52, 0xe1, 0x7c, + 0x15, 0xa1, 0xe1, 0x5a, 0x6d, 0x8f, 0x49, 0xfe, 0x72, 0x39, 0x4e, 0x66, 0xbc, 0x94, 0x6c, 0x96, + 0xe3, 0x6b, 0x35, 0x00, 0x85, 0xd7, 0x6a, 0x6d, 0xb8, 0xb5, 0x35, 0x64, 0x02, 0x62, 0xfb, 0x84, + 0x12, 0x24, 0x02, 0x27, 0x94, 0x08, 0x14, 0x3e, 0x58, 0x0b, 0xa0, 0x2f, 0x09, 0x5a, 0x56, 0x82, + 0x2f, 0x09, 0x68, 0xba, 0xb5, 0xe1, 0x66, 0x98, 0x51, 0x35, 0x34, 0x3b, 0x8a, 0x3e, 0x72, 0x87, + 0xe8, 0x46, 0x2f, 0x16, 0xdf, 0xe1, 0x3b, 0xe3, 0x29, 0x53, 0xd3, 0x56, 0x60, 0x1b, 0xad, 0x61, + 0xfa, 0xec, 0xf0, 0x39, 0xac, 0x76, 0xf8, 0x57, 0x2b, 0xd1, 0x27, 0x98, 0xc7, 0xd7, 0xb9, 0xf2, + 0xfb, 0xb4, 0xdb, 0x56, 0x4d, 0x12, 0x47, 0xb0, 0xc2, 0x1a, 0xba, 0x0c, 0x7f, 0x16, 0x7d, 0xdc, + 0x88, 0xec, 0x09, 0x2d, 0x5d, 0x00, 0x3f, 0x69, 0x33, 0xe5, 0x87, 0x9c, 0x71, 0xbf, 0xdd, 0x9b, + 0xb7, 0xeb, 0x21, 0xbf, 0x5c, 0x25, 0x58, 0x0f, 0x19, 0x1b, 0x5a, 0x4c, 0xac, 0x87, 0x10, 0xcc, + 0x8e, 0x4e, 0xb7, 0x7a, 0x6f, 0x13, 0x79, 0xa5, 0xf2, 0x2d, 0x30, 0x3a, 0xbd, 0xb2, 0x1a, 0x88, + 0x18, 0x9d, 0x24, 0x0c, 0x33, 0x92, 0x06, 0xac, 0xc6, 0x26, 0x16, 0xcb, 0x8d, 0x21, 0x77, 0x64, + 0xae, 0x77, 0x83, 0xb0, 0xbf, 0x36, 0x62, 0xbd, 0xf4, 0x79, 0x12, 0xb2, 0x00, 0x96, 0x3f, 0x1b, + 0xbd, 0x58, 0xed, 0xf0, 0x2f, 0xa2, 0xef, 0xb5, 0x2a, 0xb6, 0xcf, 0x99, 0x9c, 0x17, 0x7c, 0x32, + 0xd8, 0xee, 0x28, 0x77, 0x03, 0x1a, 0xd7, 0x4f, 0xfb, 0x2b, 0xb4, 0x72, 0xf4, 0x86, 0xab, 0xbb, + 0x95, 0x29, 0xc3, 0xb3, 0x90, 0x49, 0x9f, 0x0d, 0xe6, 0xe8, 0xb4, 0x4e, 0x6b, 0x99, 0xed, 0xf6, + 0xae, 0x9d, 0x05, 0x4b, 0x52, 0xf5, 0xb2, 0xf6, 0xb3, 0x90, 0x51, 0x0f, 0x0d, 0x2e, 0xb3, 0x49, + 0x95, 0x56, 0x64, 0x56, 0x63, 0xdc, 0x59, 0x9e, 0x6d, 0xd2, 0x91, 0x00, 0x59, 0x9d, 0x6d, 0xf5, + 0xa4, 0xb5, 0x5b, 0xd9, 0x4c, 0x79, 0xd5, 0xcf, 0x6e, 0x27, 0xc7, 0xbc, 0x6a, 0x55, 0xa4, 0xa7, + 0x6f, 0xf5, 0xa4, 0xb5, 0xd7, 0x3f, 0x8f, 0x3e, 0x6e, 0x7b, 0xd5, 0x13, 0xd1, 0x76, 0xa7, 0x29, + 0x30, 0x17, 0x3d, 0xed, 0xaf, 0x60, 0x97, 0x34, 0x5f, 0x25, 0xa5, 0x14, 0xc5, 0x72, 0x74, 0x25, + 0x6e, 0x9a, 0x2f, 0x1f, 0xfc, 0xd1, 0xaa, 0x81, 0xa1, 0x43, 0x10, 0x4b, 0x1a, 0x9c, 0x6c, 0xb9, + 0xb2, 0x5f, 0x48, 0x94, 0x84, 0x2b, 0x87, 0xe8, 0x70, 0xe5, 0x93, 0x36, 0x56, 0x35, 0xb5, 0xb2, + 0x9f, 0x73, 0xac, 0xe1, 0x45, 0x6d, 0x7f, 0xd2, 0xb1, 0xde, 0x0d, 0xda, 0x8c, 0x45, 0x8b, 0xf7, + 0x92, 0xcb, 0x4b, 0x53, 0x27, 0xbc, 0xa4, 0x2e, 0x42, 0x64, 0x2c, 0x04, 0x6a, 0x93, 0xee, 0xfd, + 0x24, 0xe5, 0x6a, 0x47, 0xff, 0xf5, 0xe5, 0x65, 0x2a, 0xd8, 0x04, 0x24, 0xdd, 0x95, 0x78, 0xe8, + 0xca, 0x89, 0xa4, 0x1b, 0xe3, 0xec, 0x59, 0x81, 0x4a, 0x7a, 0xc6, 0x63, 0x91, 0xc5, 0x49, 0x0a, + 0x0f, 0x82, 0x2a, 0x4d, 0x23, 0x24, 0xce, 0x0a, 0xb4, 0x20, 0x3b, 0x31, 0x56, 0xa2, 0x6a, 0xd8, + 0x37, 0xe5, 0x7f, 0xd4, 0x56, 0x74, 0xc4, 0xc4, 0xc4, 0x88, 0x60, 0x76, 0xed, 0x59, 0x09, 0xcf, + 0x73, 0x65, 0xfc, 0x5e, 0x5b, 0xab, 0x96, 0x10, 0x6b, 0x4f, 0x9f, 0xb0, 0x6b, 0xa8, 0xea, 0xf7, + 0x3d, 0x71, 0x93, 0x29, 0xa3, 0x0f, 0xda, 0x2a, 0x8d, 0x8c, 0x58, 0x43, 0x41, 0x46, 0x1b, 0xfe, + 0x49, 0xf4, 0xff, 0x95, 0xe1, 0x42, 0xe4, 0x83, 0x3b, 0x88, 0x42, 0xe1, 0x9c, 0xd9, 0xbc, 0x4b, + 0xca, 0xed, 0xd1, 0x02, 0xd3, 0x37, 0xce, 0x4b, 0x36, 0xe5, 0x83, 0x87, 0x44, 0x8b, 0x2b, 0x29, + 0x71, 0xb4, 0xa0, 0x4d, 0xf9, 0xbd, 0xe2, 0x44, 0x4c, 0xb4, 0x75, 0xa4, 0x86, 0x46, 0x18, 0xea, + 0x15, 0x2e, 0x64, 0x93, 0x99, 0x13, 0xb6, 0x48, 0xa6, 0x66, 0xc2, 0xa9, 0xe3, 0x56, 0x09, 0x92, + 0x19, 0xcb, 0x0c, 0x1d, 0x88, 0x48, 0x66, 0x48, 0x58, 0xfb, 0xfc, 0xd7, 0x95, 0xe8, 0x9e, 0x65, + 0x0e, 0x9a, 0xdd, 0xba, 0xc3, 0xec, 0x52, 0x54, 0xa9, 0xcf, 0x51, 0x92, 0x5d, 0x97, 0x83, 0x2f, + 0x28, 0x93, 0x38, 0x6f, 0x8a, 0xf2, 0xe5, 0xad, 0xf5, 0x6c, 0xd6, 0xda, 0x6c, 0x65, 0xd9, 0xf7, + 0xd9, 0xb5, 0x06, 0xc8, 0x5a, 0xcd, 0x8e, 0x17, 0xe4, 0x88, 0xac, 0x35, 0xc4, 0xdb, 0x26, 0x36, + 0xce, 0x53, 0x91, 0xc1, 0x26, 0xb6, 0x16, 0x2a, 0x21, 0xd1, 0xc4, 0x2d, 0xc8, 0xc6, 0xe3, 0x46, + 0x54, 0xef, 0xba, 0xec, 0xa4, 0x29, 0x88, 0xc7, 0x46, 0xd5, 0x00, 0x44, 0x3c, 0x46, 0x41, 0xed, + 0xe7, 0x2c, 0xfa, 0x4e, 0xf5, 0x48, 0x4f, 0x0b, 0xbe, 0x48, 0x38, 0x3c, 0x7a, 0xe1, 0x48, 0x88, + 0xf1, 0xef, 0x13, 0x76, 0x64, 0x9d, 0x67, 0x65, 0x9e, 0xb2, 0xf2, 0x4a, 0xbf, 0x8c, 0xf7, 0xeb, + 0xdc, 0x08, 0xe1, 0xeb, 0xf8, 0x47, 0x1d, 0x94, 0x0d, 0xea, 0x8d, 0xcc, 0x84, 0x98, 0x55, 0x5c, + 0xb5, 0x15, 0x66, 0xd6, 0x3a, 0x39, 0xbb, 0xe3, 0x7d, 0xc0, 0xd2, 0x94, 0x17, 0xcb, 0x46, 0x76, + 0xcc, 0xb2, 0xe4, 0x92, 0x97, 0x12, 0xec, 0x78, 0x6b, 0x6a, 0x08, 0x31, 0x62, 0xc7, 0x3b, 0x80, + 0xdb, 0x6c, 0x1e, 0x78, 0x3e, 0xcc, 0x26, 0xfc, 0x1d, 0xc8, 0xe6, 0xa1, 0x1d, 0xc5, 0x10, 0xd9, + 0x3c, 0xc5, 0xda, 0x9d, 0xdf, 0x97, 0xa9, 0x88, 0xaf, 0xf5, 0x14, 0xe0, 0x37, 0xb0, 0x92, 0xc0, + 0x39, 0xe0, 0x41, 0x08, 0xb1, 0x93, 0x80, 0x12, 0x9c, 0xf1, 0x3c, 0x65, 0x31, 0x3c, 0x7f, 0x53, + 0xeb, 0x68, 0x19, 0x31, 0x09, 0x40, 0x06, 0x14, 0x57, 0x9f, 0xeb, 0xc1, 0x8a, 0x0b, 0x8e, 0xf5, + 0x3c, 0x08, 0x21, 0x76, 0x1a, 0x54, 0x82, 0x51, 0x9e, 0x26, 0x12, 0x0c, 0x83, 0x5a, 0x43, 0x49, + 0x88, 0x61, 0xe0, 0x13, 0xc0, 0xe4, 0x31, 0x2f, 0xa6, 0x1c, 0x35, 0xa9, 0x24, 0x41, 0x93, 0x0d, + 0x61, 0x0f, 0x1b, 0xd7, 0x75, 0x17, 0xf9, 0x12, 0x1c, 0x36, 0xd6, 0xd5, 0x12, 0xf9, 0x92, 0x38, + 0x6c, 0xec, 0x01, 0xa0, 0x88, 0xa7, 0xac, 0x94, 0x78, 0x11, 0x95, 0x24, 0x58, 0xc4, 0x86, 0xb0, + 0x73, 0x74, 0x5d, 0xc4, 0xb9, 0x04, 0x73, 0xb4, 0x2e, 0x80, 0xf3, 0x06, 0xfa, 0x2e, 0x29, 0xb7, + 0x91, 0xa4, 0x6e, 0x15, 0x2e, 0xf7, 0x13, 0x9e, 0x4e, 0x4a, 0x10, 0x49, 0xf4, 0x73, 0x6f, 0xa4, + 0x44, 0x24, 0x69, 0x53, 0xa0, 0x2b, 0xe9, 0xfd, 0x71, 0xac, 0x76, 0x60, 0x6b, 0xfc, 0x41, 0x08, + 0xb1, 0xf1, 0xa9, 0x29, 0xf4, 0x2e, 0x2b, 0x8a, 0xa4, 0x9a, 0xfc, 0x57, 0xf1, 0x02, 0x35, 0x72, + 0x22, 0x3e, 0x61, 0x1c, 0x18, 0x5e, 0x4d, 0xe0, 0xc6, 0x0a, 0x06, 0x43, 0xf7, 0xa7, 0x41, 0xc6, + 0x66, 0x9c, 0x4a, 0xe2, 0xbc, 0x42, 0xc5, 0x9e, 0x26, 0xf2, 0x06, 0x75, 0xb5, 0x0b, 0x73, 0x3e, + 0x06, 0x32, 0x2e, 0x8e, 0xc5, 0x82, 0x8f, 0xc5, 0xab, 0x77, 0x49, 0x29, 0x93, 0x6c, 0xaa, 0x67, + 0xee, 0xe7, 0x84, 0x25, 0x0c, 0x26, 0x3e, 0x06, 0xea, 0x54, 0xb2, 0x09, 0x04, 0x28, 0xcb, 0x09, + 0xbf, 0x41, 0x13, 0x08, 0x68, 0xd1, 0x70, 0x44, 0x02, 0x11, 0xe2, 0xed, 0x3e, 0x8a, 0x71, 0xae, + 0xbf, 0x98, 0x1e, 0x8b, 0x26, 0x97, 0xa3, 0xac, 0x41, 0x90, 0x58, 0xca, 0x06, 0x15, 0xec, 0xfa, + 0xd2, 0xf8, 0xb7, 0x43, 0x6c, 0x9d, 0xb0, 0xd3, 0x1e, 0x66, 0x8f, 0x7b, 0x90, 0x88, 0x2b, 0x7b, + 0x0e, 0x80, 0x72, 0xd5, 0x3e, 0x06, 0xf0, 0xb8, 0x07, 0xe9, 0xec, 0xc9, 0xb8, 0xd5, 0x7a, 0xc9, + 0xe2, 0xeb, 0x69, 0x21, 0xe6, 0xd9, 0x64, 0x57, 0xa4, 0xa2, 0x00, 0x7b, 0x32, 0x5e, 0xa9, 0x01, + 0x4a, 0xec, 0xc9, 0x74, 0xa8, 0xd8, 0x0c, 0xce, 0x2d, 0xc5, 0x4e, 0x9a, 0x4c, 0xe1, 0x8a, 0xda, + 0x33, 0xa4, 0x00, 0x22, 0x83, 0x43, 0x41, 0xa4, 0x13, 0xd5, 0x2b, 0x6e, 0x99, 0xc4, 0x2c, 0xad, + 0xfd, 0x6d, 0xd3, 0x66, 0x3c, 0xb0, 0xb3, 0x13, 0x21, 0x0a, 0x48, 0x3d, 0xc7, 0xf3, 0x22, 0x3b, + 0xcc, 0xa4, 0x20, 0xeb, 0xd9, 0x00, 0x9d, 0xf5, 0x74, 0x40, 0x10, 0x56, 0xc7, 0xfc, 0x5d, 0x55, + 0x9a, 0xea, 0x1f, 0x2c, 0xac, 0x56, 0xbf, 0x0f, 0xb5, 0x3c, 0x14, 0x56, 0x01, 0x07, 0x2a, 0xa3, + 0x9d, 0xd4, 0x1d, 0x26, 0xa0, 0xed, 0x77, 0x93, 0xf5, 0x6e, 0x10, 0xf7, 0x33, 0x92, 0xcb, 0x94, + 0x87, 0xfc, 0x28, 0xa0, 0x8f, 0x9f, 0x06, 0xb4, 0xdb, 0x2d, 0x5e, 0x7d, 0xae, 0x78, 0x7c, 0xdd, + 0x3a, 0xd6, 0xe4, 0x17, 0xb4, 0x46, 0x88, 0xed, 0x16, 0x02, 0xc5, 0x9b, 0xe8, 0x30, 0x16, 0x59, + 0xa8, 0x89, 0x2a, 0x79, 0x9f, 0x26, 0xd2, 0x9c, 0x5d, 0xfc, 0x1a, 0xa9, 0xee, 0x99, 0x75, 0x33, + 0x6d, 0x10, 0x16, 0x5c, 0x88, 0x58, 0xfc, 0x92, 0xb0, 0xcd, 0xc9, 0xa1, 0xcf, 0xe3, 0xf6, 0x99, + 0xef, 0x96, 0x95, 0x63, 0xfa, 0xcc, 0x37, 0xc5, 0xd2, 0x95, 0xac, 0xfb, 0x48, 0x87, 0x15, 0xbf, + 0x9f, 0x6c, 0xf6, 0x83, 0xed, 0x92, 0xc7, 0xf3, 0xb9, 0x9b, 0x72, 0x56, 0xd4, 0x5e, 0xb7, 0x02, + 0x86, 0x2c, 0x46, 0x2c, 0x79, 0x02, 0x38, 0x08, 0x61, 0x9e, 0xe7, 0x5d, 0x91, 0x49, 0x9e, 0x49, + 0x2c, 0x84, 0xf9, 0xc6, 0x34, 0x18, 0x0a, 0x61, 0x94, 0x02, 0xe8, 0xb7, 0x6a, 0x3f, 0x88, 0xcb, + 0x13, 0x36, 0x43, 0x33, 0xb6, 0x7a, 0xaf, 0xa7, 0x96, 0x87, 0xfa, 0x2d, 0xe0, 0x9c, 0x97, 0x7c, + 0xae, 0x97, 0x31, 0x2b, 0xa6, 0x66, 0x77, 0x63, 0x32, 0x78, 0x4a, 0xdb, 0xf1, 0x49, 0xe2, 0x25, + 0x5f, 0x58, 0x03, 0x84, 0x9d, 0xc3, 0x19, 0x9b, 0x9a, 0x9a, 0x22, 0x35, 0x50, 0xf2, 0x56, 0x55, + 0xd7, 0xbb, 0x41, 0xe0, 0xe7, 0x4d, 0x32, 0xe1, 0x22, 0xe0, 0x47, 0xc9, 0xfb, 0xf8, 0x81, 0x20, + 0xc8, 0xde, 0xaa, 0x7a, 0xd7, 0x2b, 0xba, 0x9d, 0x6c, 0xa2, 0xd7, 0xb1, 0x43, 0xe2, 0xf1, 0x00, + 0x2e, 0x94, 0xbd, 0x11, 0x3c, 0x18, 0xa3, 0xcd, 0x06, 0x6d, 0x68, 0x8c, 0x9a, 0xfd, 0xd7, 0x3e, + 0x63, 0x14, 0x83, 0xb5, 0xcf, 0x9f, 0xe9, 0x31, 0xba, 0xc7, 0x24, 0xab, 0xf2, 0xf6, 0x37, 0x09, + 0xbf, 0xd1, 0x0b, 0x61, 0xa4, 0xbe, 0x0d, 0x35, 0x54, 0x9f, 0xac, 0x82, 0x55, 0xf1, 0x76, 0x6f, + 0x3e, 0xe0, 0x5b, 0xaf, 0x10, 0x3a, 0x7d, 0x83, 0xa5, 0xc2, 0x76, 0x6f, 0x3e, 0xe0, 0x5b, 0x7f, + 0x0b, 0xdf, 0xe9, 0x1b, 0x7c, 0x10, 0xbf, 0xdd, 0x9b, 0xd7, 0xbe, 0xff, 0xba, 0x19, 0xb8, 0xae, + 0xf3, 0x2a, 0x0f, 0x8b, 0x65, 0xb2, 0xe0, 0x58, 0x3a, 0xe9, 0xdb, 0x33, 0x68, 0x28, 0x9d, 0xa4, + 0x55, 0x9c, 0x0b, 0x94, 0xb0, 0x52, 0x9c, 0x8a, 0x32, 0x51, 0x2f, 0xe9, 0x9f, 0xf7, 0x30, 0xda, + 0xc0, 0xa1, 0x45, 0x53, 0x48, 0xc9, 0xbe, 0x6e, 0xf4, 0x50, 0x7b, 0x8a, 0x79, 0x33, 0x60, 0xaf, + 0x7d, 0x98, 0x79, 0xab, 0x27, 0x6d, 0x5f, 0xfc, 0x79, 0x8c, 0xfb, 0xc6, 0x31, 0xd4, 0xaa, 0xe8, + 0x4b, 0xc7, 0xa7, 0xfd, 0x15, 0xb4, 0xfb, 0xbf, 0x6d, 0xd6, 0x15, 0xd0, 0xbf, 0x1e, 0x04, 0xcf, + 0xfa, 0x58, 0x04, 0x03, 0xe1, 0xf9, 0xad, 0x74, 0x74, 0x41, 0xfe, 0xb1, 0x59, 0x40, 0x37, 0xa8, + 0xfa, 0x96, 0x43, 0x7d, 0x03, 0xaa, 0xc7, 0x44, 0xa8, 0x59, 0x2d, 0x0c, 0x47, 0xc6, 0x8b, 0x5b, + 0x6a, 0x39, 0xd7, 0x69, 0x79, 0xb0, 0xfe, 0xe6, 0xd0, 0x29, 0x4f, 0xc8, 0xb2, 0x43, 0xc3, 0x02, + 0x7d, 0x71, 0x5b, 0x35, 0x6a, 0xac, 0x38, 0xb0, 0xba, 0x9d, 0xe3, 0x79, 0x4f, 0xc3, 0xde, 0x7d, + 0x1d, 0x9f, 0xdf, 0x4e, 0x49, 0x97, 0xe5, 0xbf, 0x56, 0xa2, 0x47, 0x1e, 0x6b, 0xdf, 0x27, 0x80, + 0x5d, 0x8f, 0x1f, 0x07, 0xec, 0x53, 0x4a, 0xa6, 0x70, 0xbf, 0xff, 0xab, 0x29, 0xdb, 0xbb, 0xa7, + 0x3c, 0x95, 0xfd, 0x24, 0x95, 0xbc, 0x68, 0xdf, 0x3d, 0xe5, 0xdb, 0xad, 0xa9, 0x21, 0x7d, 0xf7, + 0x54, 0x00, 0x77, 0xee, 0x9e, 0x42, 0x3c, 0xa3, 0x77, 0x4f, 0xa1, 0xd6, 0x82, 0x77, 0x4f, 0x85, + 0x35, 0xa8, 0xf0, 0xde, 0x14, 0xa1, 0xde, 0xb7, 0xee, 0x65, 0xd1, 0xdf, 0xc6, 0x7e, 0x76, 0x1b, + 0x15, 0x62, 0x82, 0xab, 0x39, 0x75, 0xce, 0xad, 0xc7, 0x33, 0xf5, 0xce, 0xba, 0x6d, 0xf7, 0xe6, + 0xb5, 0xef, 0x9f, 0xea, 0xd5, 0x8d, 0x09, 0xe7, 0xa2, 0x50, 0xf7, 0x8e, 0x6d, 0x84, 0xc2, 0x73, + 0x65, 0xc1, 0x6d, 0xf9, 0xcd, 0x7e, 0x30, 0x51, 0xdd, 0x8a, 0xd0, 0x8d, 0x3e, 0xec, 0x32, 0x04, + 0x9a, 0x7c, 0xbb, 0x37, 0x4f, 0x4c, 0x23, 0xb5, 0xef, 0xba, 0xb5, 0x7b, 0x18, 0xf3, 0xdb, 0xfa, + 0x69, 0x7f, 0x05, 0xed, 0x7e, 0xa1, 0xd3, 0x46, 0xd7, 0xbd, 0x6a, 0xe7, 0xad, 0x2e, 0x53, 0x23, + 0xaf, 0x99, 0x87, 0x7d, 0xf1, 0x50, 0x02, 0xe1, 0x4e, 0xa1, 0x5d, 0x09, 0x04, 0x3a, 0x8d, 0x7e, + 0x7e, 0x3b, 0x25, 0x5d, 0x96, 0x7f, 0x59, 0x89, 0xee, 0x92, 0x65, 0xd1, 0xfd, 0xe0, 0x8b, 0xbe, + 0x96, 0x41, 0x7f, 0xf8, 0xf2, 0xd6, 0x7a, 0xba, 0x50, 0xff, 0xbe, 0x12, 0xdd, 0x0b, 0x14, 0xaa, + 0xee, 0x20, 0xb7, 0xb0, 0xee, 0x77, 0x94, 0x1f, 0xde, 0x5e, 0x91, 0x9a, 0xee, 0x5d, 0x7c, 0xd4, + 0xbe, 0x94, 0x29, 0x60, 0x7b, 0x44, 0x5f, 0xca, 0xd4, 0xad, 0x05, 0x37, 0x79, 0xd8, 0x45, 0xb3, + 0xe8, 0x42, 0x37, 0x79, 0xd4, 0x09, 0xb5, 0xe0, 0xe5, 0x12, 0x18, 0x87, 0x39, 0x79, 0xf5, 0x2e, + 0x67, 0xd9, 0x84, 0x76, 0x52, 0xcb, 0xbb, 0x9d, 0x18, 0x0e, 0x6e, 0x8e, 0x55, 0xd2, 0x33, 0xd1, + 0x2c, 0xa4, 0x1e, 0x53, 0xfa, 0x06, 0x09, 0x6e, 0x8e, 0xb5, 0x50, 0xc2, 0x9b, 0xce, 0x1a, 0x43, + 0xde, 0x40, 0xb2, 0xf8, 0xa4, 0x0f, 0x0a, 0x52, 0x74, 0xe3, 0xcd, 0xec, 0xb9, 0x6f, 0x86, 0xac, + 0xb4, 0xf6, 0xdd, 0xb7, 0x7a, 0xd2, 0x84, 0xdb, 0x11, 0x97, 0x5f, 0x71, 0x36, 0xe1, 0x45, 0xd0, + 0xad, 0xa1, 0x7a, 0xb9, 0x75, 0x69, 0xcc, 0xed, 0xae, 0x48, 0xe7, 0xb3, 0x4c, 0x37, 0x26, 0xe9, + 0xd6, 0xa5, 0xba, 0xdd, 0x02, 0x1a, 0x6e, 0x0b, 0x5a, 0xb7, 0x2a, 0xbd, 0x7c, 0x12, 0x36, 0xe3, + 0x65, 0x95, 0x1b, 0xbd, 0x58, 0xba, 0x9e, 0xba, 0x1b, 0x75, 0xd4, 0x13, 0xf4, 0xa4, 0xad, 0x9e, + 0x34, 0xdc, 0x9f, 0x73, 0xdc, 0x9a, 0xfe, 0xb4, 0xdd, 0x61, 0xab, 0xd5, 0xa5, 0x9e, 0xf6, 0x57, + 0x80, 0xbb, 0xa1, 0xba, 0x57, 0x1d, 0x25, 0xa5, 0xdc, 0x4f, 0xd2, 0x74, 0xb0, 0x11, 0xe8, 0x26, + 0x0d, 0x14, 0xdc, 0x0d, 0x45, 0x60, 0xa2, 0x27, 0x37, 0xbb, 0x87, 0xd9, 0xa0, 0xcb, 0x8e, 0xa2, + 0x7a, 0xf5, 0x64, 0x97, 0x06, 0x3b, 0x5a, 0xce, 0xa3, 0x36, 0xb5, 0x1d, 0x86, 0x1f, 0x5c, 0xab, + 0xc2, 0xdb, 0xbd, 0x79, 0xf0, 0xba, 0x5d, 0x51, 0x6a, 0x66, 0x79, 0x48, 0x99, 0xf0, 0x66, 0x92, + 0x47, 0x1d, 0x14, 0xd8, 0x15, 0xac, 0x87, 0xd1, 0xdb, 0x64, 0x32, 0xe5, 0x12, 0x7d, 0x53, 0xe4, + 0x02, 0xc1, 0x37, 0x45, 0x00, 0x04, 0x4d, 0x57, 0xff, 0x6e, 0xb6, 0x43, 0x0f, 0x27, 0x58, 0xd3, + 0x69, 0x65, 0x87, 0x0a, 0x35, 0x1d, 0x4a, 0x83, 0x68, 0x60, 0xdc, 0xea, 0xcf, 0xf1, 0x9f, 0x84, + 0xcc, 0x80, 0x6f, 0xf2, 0x37, 0x7a, 0xb1, 0x60, 0x46, 0xb1, 0x0e, 0x93, 0x59, 0x22, 0xb1, 0x19, + 0xc5, 0xb1, 0x51, 0x21, 0xa1, 0x19, 0xa5, 0x8d, 0x52, 0xd5, 0xab, 0x72, 0x84, 0xc3, 0x49, 0xb8, + 0x7a, 0x35, 0xd3, 0xaf, 0x7a, 0x86, 0x6d, 0xbd, 0xd8, 0xcc, 0x4c, 0x97, 0x91, 0x57, 0x7a, 0xb1, + 0x8c, 0xf4, 0x6d, 0xf5, 0x99, 0x26, 0x04, 0x43, 0x51, 0x87, 0x52, 0x80, 0x1b, 0xf6, 0x15, 0xd7, + 0xbc, 0x7b, 0xcd, 0x73, 0xce, 0x0a, 0x96, 0xc5, 0xe8, 0xe2, 0x54, 0x19, 0x6c, 0x91, 0xa1, 0xc5, + 0x29, 0xa9, 0x01, 0x5e, 0x9b, 0xfb, 0x1f, 0x58, 0x22, 0x43, 0xc1, 0x7c, 0xc9, 0xe8, 0x7f, 0x5f, + 0xf9, 0xb8, 0x07, 0x09, 0x5f, 0x9b, 0x37, 0x80, 0xd9, 0xf8, 0xae, 0x9d, 0x7e, 0x16, 0x30, 0xe5, + 0xa3, 0xa1, 0x85, 0x30, 0xad, 0x02, 0x3a, 0xb5, 0x49, 0x70, 0xb9, 0xfc, 0x09, 0x5f, 0x62, 0x9d, + 0xda, 0xe6, 0xa7, 0x0a, 0x09, 0x75, 0xea, 0x36, 0x0a, 0xf2, 0x4c, 0x77, 0x1d, 0xb4, 0x1a, 0xd0, + 0x77, 0x97, 0x3e, 0x6b, 0x9d, 0x1c, 0x18, 0x39, 0x7b, 0xc9, 0xc2, 0x7b, 0x4f, 0x80, 0x14, 0x74, + 0x2f, 0x59, 0xe0, 0xaf, 0x09, 0x36, 0x7a, 0xb1, 0xf0, 0x95, 0x3c, 0x93, 0xfc, 0x5d, 0xf3, 0xae, + 0x1c, 0x29, 0xae, 0x92, 0xb7, 0x5e, 0x96, 0xaf, 0x77, 0x83, 0xf6, 0x00, 0xec, 0x69, 0x21, 0x62, + 0x5e, 0x96, 0xfa, 0xa6, 0x4a, 0xff, 0x84, 0x91, 0x96, 0x0d, 0xc1, 0x3d, 0x95, 0x0f, 0xc3, 0x90, + 0x73, 0xbd, 0x5c, 0x2d, 0xb2, 0xb7, 0xde, 0xac, 0xa2, 0x9a, 0xed, 0x0b, 0x6f, 0xd6, 0x3a, 0x39, + 0x3b, 0xbc, 0xb4, 0xd4, 0xbd, 0xe6, 0x66, 0x1d, 0x55, 0xc7, 0x6e, 0xb8, 0x79, 0xdc, 0x83, 0xd4, + 0xae, 0xbe, 0x8a, 0xde, 0x3f, 0x12, 0xd3, 0x11, 0xcf, 0x26, 0x83, 0x1f, 0xf8, 0x47, 0x68, 0xc5, + 0x74, 0x58, 0xfd, 0x6c, 0x8c, 0xde, 0xa1, 0xc4, 0xf6, 0x10, 0xe0, 0x1e, 0xbf, 0x98, 0x4f, 0x47, + 0x92, 0x49, 0x70, 0x08, 0x50, 0xfd, 0x3e, 0xac, 0x04, 0xc4, 0x21, 0x40, 0x0f, 0x00, 0xf6, 0xc6, + 0x05, 0xe7, 0xa8, 0xbd, 0x4a, 0x10, 0xb4, 0xa7, 0x01, 0x9b, 0x45, 0x18, 0x7b, 0x55, 0xa2, 0x0e, + 0x0f, 0xed, 0x59, 0x1d, 0x25, 0x25, 0xb2, 0x88, 0x36, 0x65, 0x3b, 0x77, 0x5d, 0x7d, 0x75, 0xeb, + 0xc8, 0x7c, 0x36, 0x63, 0xc5, 0x12, 0x74, 0x6e, 0x5d, 0x4b, 0x07, 0x20, 0x3a, 0x37, 0x0a, 0xda, + 0x51, 0xdb, 0x3c, 0xe6, 0xf8, 0xfa, 0x40, 0x14, 0x62, 0x2e, 0x93, 0x8c, 0xc3, 0x9b, 0x27, 0xcc, + 0x03, 0x75, 0x19, 0x62, 0xd4, 0x52, 0xac, 0xcd, 0x72, 0x15, 0x51, 0x9f, 0x27, 0x54, 0xf7, 0x57, + 0x97, 0x52, 0x14, 0xf0, 0x7d, 0x62, 0x6d, 0x05, 0x42, 0x44, 0x96, 0x4b, 0xc2, 0xa0, 0xed, 0x4f, + 0x93, 0x6c, 0x8a, 0xb6, 0xfd, 0xa9, 0x7b, 0xfb, 0xeb, 0x3d, 0x1a, 0xb0, 0x03, 0xaa, 0x7e, 0x68, + 0xf5, 0x00, 0xd0, 0xdf, 0x72, 0xa2, 0x0f, 0xdd, 0x25, 0x88, 0x01, 0x85, 0x93, 0xc0, 0xd5, 0xeb, + 0x9c, 0x67, 0x7c, 0xd2, 0x9c, 0x9a, 0xc3, 0x5c, 0x79, 0x44, 0xd0, 0x15, 0x24, 0x6d, 0x2c, 0x52, + 0xf2, 0xb3, 0x79, 0x76, 0x5a, 0x88, 0xcb, 0x24, 0xe5, 0x05, 0x88, 0x45, 0xb5, 0xba, 0x23, 0x27, + 0x62, 0x11, 0xc6, 0xd9, 0xe3, 0x17, 0x4a, 0xea, 0x5d, 0xc2, 0x3e, 0x2e, 0x58, 0x0c, 0x8f, 0x5f, + 0xd4, 0x36, 0xda, 0x18, 0xb1, 0x33, 0x18, 0xc0, 0x9d, 0x44, 0xa7, 0x76, 0x9d, 0x2d, 0x55, 0xff, + 0xd0, 0xdf, 0x12, 0xaa, 0x3b, 0x51, 0x4b, 0x90, 0xe8, 0x68, 0x73, 0x18, 0x49, 0x24, 0x3a, 0x61, + 0x0d, 0x3b, 0x95, 0x28, 0xee, 0x44, 0x1f, 0x2b, 0x02, 0x53, 0x49, 0x6d, 0xa3, 0x11, 0x12, 0x53, + 0x49, 0x0b, 0x02, 0x01, 0xa9, 0x19, 0x06, 0x53, 0x34, 0x20, 0x19, 0x69, 0x30, 0x20, 0xb9, 0x94, + 0x0d, 0x14, 0x87, 0x59, 0x22, 0x13, 0x96, 0x8e, 0xb8, 0x3c, 0x65, 0x05, 0x9b, 0x71, 0xc9, 0x0b, + 0x18, 0x28, 0x34, 0x32, 0xf4, 0x18, 0x22, 0x50, 0x50, 0xac, 0x76, 0xf8, 0x07, 0xd1, 0x87, 0xd5, + 0xbc, 0xcf, 0x33, 0xfd, 0xe7, 0x56, 0x5e, 0xa9, 0xbf, 0xd3, 0x34, 0xf8, 0xc8, 0xd8, 0x18, 0xc9, + 0x82, 0xb3, 0x59, 0x63, 0xfb, 0x03, 0xf3, 0xbb, 0x02, 0x9f, 0xae, 0x54, 0xfd, 0xf9, 0x44, 0xc8, + 0xe4, 0xb2, 0x5a, 0x66, 0xeb, 0x2f, 0x88, 0x40, 0x7f, 0x76, 0xc5, 0xc3, 0xc0, 0x5d, 0x14, 0x18, + 0x67, 0xe3, 0xb4, 0x2b, 0x3d, 0xe3, 0x79, 0x0a, 0xe3, 0xb4, 0xa7, 0xad, 0x00, 0x22, 0x4e, 0xa3, + 0xa0, 0x1d, 0x9c, 0xae, 0x78, 0xcc, 0xc3, 0x95, 0x19, 0xf3, 0x7e, 0x95, 0x19, 0x7b, 0x1f, 0x65, + 0xa4, 0xd1, 0x87, 0xc7, 0x7c, 0x76, 0xc1, 0x8b, 0xf2, 0x2a, 0xc9, 0xa9, 0x7b, 0x5b, 0x2d, 0xd1, + 0x79, 0x6f, 0x2b, 0x81, 0xda, 0x99, 0xc0, 0x02, 0x87, 0xe5, 0x09, 0x9b, 0x71, 0x75, 0xb3, 0x06, + 0x98, 0x09, 0x1c, 0x23, 0x0e, 0x44, 0xcc, 0x04, 0x24, 0xec, 0x7c, 0xdf, 0x65, 0x99, 0x33, 0x3e, + 0xad, 0x7a, 0x58, 0x71, 0xca, 0x96, 0x33, 0x9e, 0x49, 0x6d, 0x12, 0xec, 0xc9, 0x3b, 0x26, 0x71, + 0x9e, 0xd8, 0x93, 0xef, 0xa3, 0xe7, 0x84, 0x26, 0xef, 0xc1, 0x9f, 0x8a, 0x42, 0xd6, 0x7f, 0x4c, + 0xe9, 0xbc, 0x48, 0x41, 0x68, 0xf2, 0x1f, 0xaa, 0x47, 0x12, 0xa1, 0x29, 0xac, 0xe1, 0xfc, 0x15, + 0x02, 0xaf, 0x0c, 0x6f, 0x78, 0x61, 0xfa, 0xc9, 0xab, 0x19, 0x4b, 0x52, 0xdd, 0x1b, 0x7e, 0x14, + 0xb0, 0x4d, 0xe8, 0x10, 0x7f, 0x85, 0xa0, 0xaf, 0xae, 0xf3, 0x77, 0x1b, 0xc2, 0x25, 0x04, 0xaf, + 0x08, 0x3a, 0xec, 0x13, 0xaf, 0x08, 0xba, 0xb5, 0xec, 0xca, 0xdd, 0xb2, 0x8a, 0x5b, 0x2a, 0x62, + 0x57, 0x4c, 0xe0, 0x7e, 0xa1, 0x63, 0x13, 0x80, 0xc4, 0xca, 0x3d, 0xa8, 0x60, 0x53, 0x03, 0x8b, + 0xed, 0x27, 0x19, 0x4b, 0x93, 0x9f, 0xc1, 0xb4, 0xde, 0xb1, 0xd3, 0x10, 0x44, 0x6a, 0x80, 0x93, + 0x98, 0xab, 0x03, 0x2e, 0xc7, 0x49, 0x15, 0xfa, 0xd7, 0x03, 0xcf, 0x4d, 0x11, 0xdd, 0xae, 0x1c, + 0xd2, 0xb9, 0xa3, 0x15, 0x3e, 0xd6, 0x9d, 0x3c, 0x1f, 0x55, 0xb3, 0xea, 0x19, 0x8f, 0x79, 0x92, + 0xcb, 0xc1, 0x8b, 0xf0, 0xb3, 0x02, 0x38, 0x71, 0xd0, 0xa2, 0x87, 0x9a, 0xf3, 0xfa, 0xbe, 0x8a, + 0x25, 0xa3, 0xfa, 0xaf, 0x0c, 0x9e, 0x97, 0xbc, 0xd0, 0x89, 0xc6, 0x01, 0x97, 0x60, 0x74, 0x3a, + 0xdc, 0xd0, 0x01, 0xab, 0x8a, 0x12, 0xa3, 0x33, 0xac, 0x61, 0x37, 0xfb, 0x1c, 0x4e, 0xdf, 0xb9, + 0xad, 0xce, 0x1b, 0x6e, 0x92, 0xc6, 0x1c, 0x8a, 0xd8, 0xec, 0xa3, 0x69, 0x9b, 0xad, 0xb5, 0xdd, + 0xee, 0x64, 0xcb, 0x43, 0x78, 0x64, 0x02, 0xb1, 0xa4, 0x30, 0x22, 0x5b, 0x0b, 0xe0, 0xce, 0x66, + 0x78, 0x21, 0xd8, 0x24, 0x66, 0xa5, 0x3c, 0x65, 0xcb, 0x54, 0xb0, 0x89, 0x9a, 0xd7, 0xe1, 0x66, + 0x78, 0xc3, 0x0c, 0x5d, 0x88, 0xda, 0x0c, 0xa7, 0x60, 0x37, 0x3b, 0x53, 0x7f, 0x3c, 0x51, 0x9f, + 0xe5, 0x84, 0xd9, 0x99, 0x2a, 0x2f, 0x3c, 0xc7, 0xf9, 0x30, 0x0c, 0xd9, 0x6f, 0xd0, 0x6a, 0x91, + 0x4a, 0x43, 0xee, 0x61, 0x3a, 0x5e, 0x02, 0x72, 0x3f, 0x40, 0xd8, 0x7b, 0x29, 0xea, 0xdf, 0x9b, + 0xbf, 0xff, 0x23, 0xf5, 0x4d, 0xd6, 0x9b, 0x98, 0xae, 0x0b, 0x0d, 0xdd, 0x0b, 0xee, 0xb6, 0x7a, + 0xd2, 0x36, 0xcd, 0xdc, 0xbd, 0x62, 0x72, 0x67, 0x32, 0x39, 0xe6, 0x25, 0xf2, 0x41, 0x79, 0x25, + 0x1c, 0x5a, 0x29, 0x91, 0x66, 0xb6, 0x29, 0xdb, 0xd1, 0x2b, 0xd9, 0xab, 0x49, 0x22, 0xb5, 0xac, + 0x39, 0x21, 0xbd, 0xd9, 0x36, 0xd0, 0xa6, 0x88, 0x5a, 0xd1, 0xb4, 0x8d, 0xe5, 0x15, 0x33, 0x16, + 0xd3, 0x69, 0xca, 0x35, 0x74, 0xc6, 0x59, 0x7d, 0x91, 0xdf, 0x76, 0xdb, 0x16, 0x0a, 0x12, 0xb1, + 0x3c, 0xa8, 0x60, 0xd3, 0xc8, 0x0a, 0xab, 0x5f, 0x49, 0x35, 0x0f, 0x76, 0xad, 0x6d, 0xc6, 0x03, + 0x88, 0x34, 0x12, 0x05, 0xed, 0x77, 0x6f, 0x95, 0xf8, 0x80, 0x37, 0x4f, 0x02, 0x5e, 0x41, 0xa4, + 0x94, 0x1d, 0x31, 0xf1, 0xdd, 0x1b, 0x82, 0xd9, 0x75, 0x02, 0xf0, 0xf0, 0x72, 0x79, 0x38, 0x81, + 0xeb, 0x04, 0xa8, 0xaf, 0x18, 0x62, 0x9d, 0x40, 0xb1, 0x7e, 0xd3, 0x99, 0x7d, 0xaf, 0x23, 0x56, + 0xda, 0xca, 0x21, 0x4d, 0x87, 0x82, 0xa1, 0xa6, 0xa3, 0x14, 0xfc, 0x47, 0xea, 0x6e, 0xad, 0x21, + 0x8f, 0x14, 0xdb, 0x57, 0x5b, 0xed, 0xc2, 0x6c, 0x5c, 0x32, 0xeb, 0x49, 0x75, 0x64, 0x09, 0xbf, + 0xc1, 0xbf, 0x16, 0x12, 0x71, 0xa9, 0x05, 0xd5, 0xb6, 0x5f, 0xde, 0xff, 0xef, 0x6f, 0xee, 0xac, + 0xfc, 0xe2, 0x9b, 0x3b, 0x2b, 0xff, 0xfb, 0xcd, 0x9d, 0x95, 0x9f, 0x7f, 0x7b, 0xe7, 0xbd, 0x5f, + 0x7c, 0x7b, 0xe7, 0xbd, 0xff, 0xf9, 0xf6, 0xce, 0x7b, 0x5f, 0xbf, 0xaf, 0xff, 0xa8, 0xee, 0xc5, + 0xff, 0x53, 0x7f, 0x1a, 0xf7, 0xf9, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0xb2, 0x7c, 0x4b, 0xdb, + 0x78, 0x77, 0x00, 0x00, } // This is a compile-time assertion to ensure that this generated file @@ -711,10 +709,6 @@ type ClientCommandsHandler interface { ChatSubscribeLastMessages(context.Context, *pb.RpcChatSubscribeLastMessagesRequest) *pb.RpcChatSubscribeLastMessagesResponse ChatUnsubscribe(context.Context, *pb.RpcChatUnsubscribeRequest) *pb.RpcChatUnsubscribeResponse ObjectChatAdd(context.Context, *pb.RpcObjectChatAddRequest) *pb.RpcObjectChatAddResponse - // API - // *** - ApiStartServer(context.Context, *pb.RpcApiStartServerRequest) *pb.RpcApiStartServerResponse - ApiStopServer(context.Context, *pb.RpcApiStopServerRequest) *pb.RpcApiStopServerResponse } func registerClientCommandsHandler(srv ClientCommandsHandler) { @@ -6201,46 +6195,6 @@ func ObjectChatAdd(b []byte) (resp []byte) { return resp } -func ApiStartServer(b []byte) (resp []byte) { - defer func() { - if PanicHandler != nil { - if r := recover(); r != nil { - resp, _ = (&pb.RpcApiStartServerResponse{Error: &pb.RpcApiStartServerResponseError{Code: pb.RpcApiStartServerResponseError_UNKNOWN_ERROR, Description: "panic recovered"}}).Marshal() - PanicHandler(r) - } - } - }() - - in := new(pb.RpcApiStartServerRequest) - if err := in.Unmarshal(b); err != nil { - resp, _ = (&pb.RpcApiStartServerResponse{Error: &pb.RpcApiStartServerResponseError{Code: pb.RpcApiStartServerResponseError_BAD_INPUT, Description: err.Error()}}).Marshal() - return resp - } - - resp, _ = clientCommandsHandler.ApiStartServer(context.Background(), in).Marshal() - return resp -} - -func ApiStopServer(b []byte) (resp []byte) { - defer func() { - if PanicHandler != nil { - if r := recover(); r != nil { - resp, _ = (&pb.RpcApiStopServerResponse{Error: &pb.RpcApiStopServerResponseError{Code: pb.RpcApiStopServerResponseError_UNKNOWN_ERROR, Description: "panic recovered"}}).Marshal() - PanicHandler(r) - } - } - }() - - in := new(pb.RpcApiStopServerRequest) - if err := in.Unmarshal(b); err != nil { - resp, _ = (&pb.RpcApiStopServerResponse{Error: &pb.RpcApiStopServerResponseError{Code: pb.RpcApiStopServerResponseError_BAD_INPUT, Description: err.Error()}}).Marshal() - return resp - } - - resp, _ = clientCommandsHandler.ApiStopServer(context.Background(), in).Marshal() - return resp -} - var PanicHandler func(v interface{}) func CommandAsync(cmd string, data []byte, callback func(data []byte)) { @@ -6795,10 +6749,6 @@ func CommandAsync(cmd string, data []byte, callback func(data []byte)) { cd = ChatUnsubscribe(data) case "ObjectChatAdd": cd = ObjectChatAdd(data) - case "ApiStartServer": - cd = ApiStartServer(data) - case "ApiStopServer": - cd = ApiStopServer(data) default: log.Errorf("unknown command type: %s\n", cmd) } @@ -10657,31 +10607,3 @@ func (h *ClientCommandsHandlerProxy) ObjectChatAdd(ctx context.Context, req *pb. call, _ := actualCall(ctx, req) return call.(*pb.RpcObjectChatAddResponse) } -func (h *ClientCommandsHandlerProxy) ApiStartServer(ctx context.Context, req *pb.RpcApiStartServerRequest) *pb.RpcApiStartServerResponse { - actualCall := func(ctx context.Context, req any) (any, error) { - return h.client.ApiStartServer(ctx, req.(*pb.RpcApiStartServerRequest)), nil - } - for _, interceptor := range h.interceptors { - toCall := actualCall - currentInterceptor := interceptor - actualCall = func(ctx context.Context, req any) (any, error) { - return currentInterceptor(ctx, req, "ApiStartServer", toCall) - } - } - call, _ := actualCall(ctx, req) - return call.(*pb.RpcApiStartServerResponse) -} -func (h *ClientCommandsHandlerProxy) ApiStopServer(ctx context.Context, req *pb.RpcApiStopServerRequest) *pb.RpcApiStopServerResponse { - actualCall := func(ctx context.Context, req any) (any, error) { - return h.client.ApiStopServer(ctx, req.(*pb.RpcApiStopServerRequest)), nil - } - for _, interceptor := range h.interceptors { - toCall := actualCall - currentInterceptor := interceptor - actualCall = func(ctx context.Context, req any) (any, error) { - return currentInterceptor(ctx, req, "ApiStopServer", toCall) - } - } - call, _ := actualCall(ctx, req) - return call.(*pb.RpcApiStopServerResponse) -} diff --git a/core/api.go b/core/api.go deleted file mode 100644 index 2d06e8d0e..000000000 --- a/core/api.go +++ /dev/null @@ -1,41 +0,0 @@ -package core - -import ( - "context" - - "github.com/anyproto/anytype-heart/core/api" - "github.com/anyproto/anytype-heart/pb" -) - -func (mw *Middleware) ApiStartServer(ctx context.Context, req *pb.RpcApiStartServerRequest) *pb.RpcApiStartServerResponse { - apiService := mustService[api.Service](mw) - - err := apiService.Start() - code := mapErrorCode(err, - errToCode(api.ErrPortAlreadyUsed, pb.RpcApiStartServerResponseError_PORT_ALREADY_USED), - errToCode(api.ErrServerAlreadyStarted, pb.RpcApiStartServerResponseError_SERVER_ALREADY_STARTED)) - - r := &pb.RpcApiStartServerResponse{ - Error: &pb.RpcApiStartServerResponseError{ - Code: code, - Description: getErrorDescription(err), - }, - } - return r -} - -func (mw *Middleware) ApiStopServer(ctx context.Context, req *pb.RpcApiStopServerRequest) *pb.RpcApiStopServerResponse { - apiService := mustService[api.Service](mw) - - err := apiService.Stop() - code := mapErrorCode(nil, - errToCode(api.ErrServerNotStarted, pb.RpcApiStopServerResponseError_SERVER_NOT_STARTED)) - - r := &pb.RpcApiStopServerResponse{ - Error: &pb.RpcApiStopServerResponseError{ - Code: code, - Description: getErrorDescription(err), - }, - } - return r -} diff --git a/core/api/service.go b/core/api/service.go index 0b9cd6ea7..08296bcce 100644 --- a/core/api/service.go +++ b/core/api/service.go @@ -5,7 +5,6 @@ import ( "errors" "fmt" "net/http" - "strings" "time" "github.com/anyproto/any-sync/app" @@ -21,15 +20,10 @@ const ( ) var ( - mwSrv service.ClientCommandsServer - ErrPortAlreadyUsed = fmt.Errorf("port %s is already in use", httpPort) - ErrServerAlreadyStarted = fmt.Errorf("server already started") - ErrServerNotStarted = fmt.Errorf("server not started") + mwSrv service.ClientCommandsServer ) type Service interface { - Start() error - Stop() error app.ComponentRunnable } @@ -67,26 +61,20 @@ func (s *apiService) Name() (name string) { // @externalDocs.url https://swagger.io/resources/open-api/ func (s *apiService) Init(a *app.App) (err error) { s.srv = server.NewServer(a, s.mw) - return nil -} - -func (s *apiService) Run(ctx context.Context) (err error) { - // TODO: remove once client takes responsibility s.httpSrv = &http.Server{ Addr: httpPort, Handler: s.srv.Engine(), ReadHeaderTimeout: timeout, } + return nil +} +func (s *apiService) Run(ctx context.Context) (err error) { fmt.Printf("Starting API server on %s\n", s.httpSrv.Addr) go func() { if err := s.httpSrv.ListenAndServe(); err != nil && !errors.Is(err, http.ErrServerClosed) { - if strings.Contains(err.Error(), "address already in use") { - fmt.Printf("API server ListenAndServe error: %v\n", ErrPortAlreadyUsed) - } else { - fmt.Printf("API server ListenAndServe error: %v\n", err) - } + fmt.Printf("API server ListenAndServe error: %v\n", err) } }() @@ -94,10 +82,6 @@ func (s *apiService) Run(ctx context.Context) (err error) { } func (s *apiService) Close(ctx context.Context) (err error) { - if s.httpSrv == nil { - return nil - } - shutdownCtx, cancel := context.WithTimeout(ctx, timeout) defer cancel() @@ -108,49 +92,6 @@ func (s *apiService) Close(ctx context.Context) (err error) { return nil } -func (s *apiService) Start() error { - if s.httpSrv != nil { - return ErrServerAlreadyStarted - } - - s.httpSrv = &http.Server{ - Addr: httpPort, - Handler: s.srv.Engine(), - ReadHeaderTimeout: timeout, - } - - fmt.Printf("Starting API server on %s\n", s.httpSrv.Addr) - - go func() { - if err := s.httpSrv.ListenAndServe(); err != nil && !errors.Is(err, http.ErrServerClosed) { - if strings.Contains(err.Error(), "address already in use") { - fmt.Printf("API server ListenAndServe error: %v\n", ErrPortAlreadyUsed) - } else { - fmt.Printf("API server ListenAndServe error: %v\n", err) - } - } - }() - - return nil -} - -func (s *apiService) Stop() error { - if s.httpSrv == nil { - return ErrServerNotStarted - } - - shutdownCtx, cancel := context.WithTimeout(context.Background(), timeout) - defer cancel() - - if err := s.httpSrv.Shutdown(shutdownCtx); err != nil { - return err - } - - // Clear the server reference to allow reinitialization - s.httpSrv = nil - return nil -} - func SetMiddlewareParams(mw service.ClientCommandsServer) { mwSrv = mw } diff --git a/docs/proto.md b/docs/proto.md index 567be75e8..102b27a0b 100644 --- a/docs/proto.md +++ b/docs/proto.md @@ -107,15 +107,6 @@ - [Rpc.Account.Stop.Request](#anytype-Rpc-Account-Stop-Request) - [Rpc.Account.Stop.Response](#anytype-Rpc-Account-Stop-Response) - [Rpc.Account.Stop.Response.Error](#anytype-Rpc-Account-Stop-Response-Error) - - [Rpc.Api](#anytype-Rpc-Api) - - [Rpc.Api.StartServer](#anytype-Rpc-Api-StartServer) - - [Rpc.Api.StartServer.Request](#anytype-Rpc-Api-StartServer-Request) - - [Rpc.Api.StartServer.Response](#anytype-Rpc-Api-StartServer-Response) - - [Rpc.Api.StartServer.Response.Error](#anytype-Rpc-Api-StartServer-Response-Error) - - [Rpc.Api.StopServer](#anytype-Rpc-Api-StopServer) - - [Rpc.Api.StopServer.Request](#anytype-Rpc-Api-StopServer-Request) - - [Rpc.Api.StopServer.Response](#anytype-Rpc-Api-StopServer-Response) - - [Rpc.Api.StopServer.Response.Error](#anytype-Rpc-Api-StopServer-Response-Error) - [Rpc.App](#anytype-Rpc-App) - [Rpc.App.GetVersion](#anytype-Rpc-App-GetVersion) - [Rpc.App.GetVersion.Request](#anytype-Rpc-App-GetVersion-Request) @@ -1298,8 +1289,6 @@ - [Rpc.Account.RevertDeletion.Response.Error.Code](#anytype-Rpc-Account-RevertDeletion-Response-Error-Code) - [Rpc.Account.Select.Response.Error.Code](#anytype-Rpc-Account-Select-Response-Error-Code) - [Rpc.Account.Stop.Response.Error.Code](#anytype-Rpc-Account-Stop-Response-Error-Code) - - [Rpc.Api.StartServer.Response.Error.Code](#anytype-Rpc-Api-StartServer-Response-Error-Code) - - [Rpc.Api.StopServer.Response.Error.Code](#anytype-Rpc-Api-StopServer-Response-Error-Code) - [Rpc.App.GetVersion.Response.Error.Code](#anytype-Rpc-App-GetVersion-Response-Error-Code) - [Rpc.App.SetDeviceState.Request.DeviceState](#anytype-Rpc-App-SetDeviceState-Request-DeviceState) - [Rpc.App.SetDeviceState.Response.Error.Code](#anytype-Rpc-App-SetDeviceState-Response-Error-Code) @@ -2277,8 +2266,6 @@ | ChatSubscribeLastMessages | [Rpc.Chat.SubscribeLastMessages.Request](#anytype-Rpc-Chat-SubscribeLastMessages-Request) | [Rpc.Chat.SubscribeLastMessages.Response](#anytype-Rpc-Chat-SubscribeLastMessages-Response) | | | ChatUnsubscribe | [Rpc.Chat.Unsubscribe.Request](#anytype-Rpc-Chat-Unsubscribe-Request) | [Rpc.Chat.Unsubscribe.Response](#anytype-Rpc-Chat-Unsubscribe-Response) | | | ObjectChatAdd | [Rpc.Object.ChatAdd.Request](#anytype-Rpc-Object-ChatAdd-Request) | [Rpc.Object.ChatAdd.Response](#anytype-Rpc-Object-ChatAdd-Response) | | -| ApiStartServer | [Rpc.Api.StartServer.Request](#anytype-Rpc-Api-StartServer-Request) | [Rpc.Api.StartServer.Response](#anytype-Rpc-Api-StartServer-Response) | API *** | -| ApiStopServer | [Rpc.Api.StopServer.Request](#anytype-Rpc-Api-StopServer-Request) | [Rpc.Api.StopServer.Response](#anytype-Rpc-Api-StopServer-Response) | | @@ -3748,118 +3735,6 @@ Middleware-to-front-end response for an account stop request - - -### Rpc.Api - - - - - - - - - -### Rpc.Api.StartServer - - - - - - - - - -### Rpc.Api.StartServer.Request -empty - - - - - - - - -### Rpc.Api.StartServer.Response - - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| error | [Rpc.Api.StartServer.Response.Error](#anytype-Rpc-Api-StartServer-Response-Error) | | | - - - - - - - - -### Rpc.Api.StartServer.Response.Error - - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| code | [Rpc.Api.StartServer.Response.Error.Code](#anytype-Rpc-Api-StartServer-Response-Error-Code) | | | -| description | [string](#string) | | | - - - - - - - - -### Rpc.Api.StopServer - - - - - - - - - -### Rpc.Api.StopServer.Request -empty - - - - - - - - -### Rpc.Api.StopServer.Response - - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| error | [Rpc.Api.StopServer.Response.Error](#anytype-Rpc-Api-StopServer-Response-Error) | | | - - - - - - - - -### Rpc.Api.StopServer.Response.Error - - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| code | [Rpc.Api.StopServer.Response.Error.Code](#anytype-Rpc-Api-StopServer-Response-Error-Code) | | | -| description | [string](#string) | | | - - - - - - ### Rpc.App @@ -21081,35 +20956,6 @@ Middleware-to-front-end response, that can contain a NULL error or a non-NULL er - - -### Rpc.Api.StartServer.Response.Error.Code - - -| Name | Number | Description | -| ---- | ------ | ----------- | -| NULL | 0 | | -| UNKNOWN_ERROR | 1 | | -| BAD_INPUT | 2 | | -| PORT_ALREADY_USED | 3 | | -| SERVER_ALREADY_STARTED | 4 | | - - - - - -### Rpc.Api.StopServer.Response.Error.Code - - -| Name | Number | Description | -| ---- | ------ | ----------- | -| NULL | 0 | | -| UNKNOWN_ERROR | 1 | | -| BAD_INPUT | 2 | | -| SERVER_NOT_STARTED | 3 | | - - - ### Rpc.App.GetVersion.Response.Error.Code diff --git a/pb/commands.pb.go b/pb/commands.pb.go index 2fccfc9ff..865ccff76 100644 --- a/pb/commands.pb.go +++ b/pb/commands.pb.go @@ -9228,71 +9228,6 @@ func (RpcChatUnsubscribeResponseErrorCode) EnumDescriptor() ([]byte, []int) { return fileDescriptor_8261c968b2e6f45c, []int{0, 41, 7, 1, 0, 0} } -type RpcApiStartServerResponseErrorCode int32 - -const ( - RpcApiStartServerResponseError_NULL RpcApiStartServerResponseErrorCode = 0 - RpcApiStartServerResponseError_UNKNOWN_ERROR RpcApiStartServerResponseErrorCode = 1 - RpcApiStartServerResponseError_BAD_INPUT RpcApiStartServerResponseErrorCode = 2 - RpcApiStartServerResponseError_PORT_ALREADY_USED RpcApiStartServerResponseErrorCode = 3 - RpcApiStartServerResponseError_SERVER_ALREADY_STARTED RpcApiStartServerResponseErrorCode = 4 -) - -var RpcApiStartServerResponseErrorCode_name = map[int32]string{ - 0: "NULL", - 1: "UNKNOWN_ERROR", - 2: "BAD_INPUT", - 3: "PORT_ALREADY_USED", - 4: "SERVER_ALREADY_STARTED", -} - -var RpcApiStartServerResponseErrorCode_value = map[string]int32{ - "NULL": 0, - "UNKNOWN_ERROR": 1, - "BAD_INPUT": 2, - "PORT_ALREADY_USED": 3, - "SERVER_ALREADY_STARTED": 4, -} - -func (x RpcApiStartServerResponseErrorCode) String() string { - return proto.EnumName(RpcApiStartServerResponseErrorCode_name, int32(x)) -} - -func (RpcApiStartServerResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 42, 0, 1, 0, 0} -} - -type RpcApiStopServerResponseErrorCode int32 - -const ( - RpcApiStopServerResponseError_NULL RpcApiStopServerResponseErrorCode = 0 - RpcApiStopServerResponseError_UNKNOWN_ERROR RpcApiStopServerResponseErrorCode = 1 - RpcApiStopServerResponseError_BAD_INPUT RpcApiStopServerResponseErrorCode = 2 - RpcApiStopServerResponseError_SERVER_NOT_STARTED RpcApiStopServerResponseErrorCode = 3 -) - -var RpcApiStopServerResponseErrorCode_name = map[int32]string{ - 0: "NULL", - 1: "UNKNOWN_ERROR", - 2: "BAD_INPUT", - 3: "SERVER_NOT_STARTED", -} - -var RpcApiStopServerResponseErrorCode_value = map[string]int32{ - "NULL": 0, - "UNKNOWN_ERROR": 1, - "BAD_INPUT": 2, - "SERVER_NOT_STARTED": 3, -} - -func (x RpcApiStopServerResponseErrorCode) String() string { - return proto.EnumName(RpcApiStopServerResponseErrorCode_name, int32(x)) -} - -func (RpcApiStopServerResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 42, 1, 1, 0, 0} -} - // Rpc is a namespace, that agregates all of the service commands between client and middleware. // Structure: Topic > Subtopic > Subsub... > Action > (Request, Response). // Request – message from a client. @@ -70529,378 +70464,6 @@ func (m *RpcChatUnsubscribeResponseError) GetDescription() string { return "" } -type RpcApi struct { -} - -func (m *RpcApi) Reset() { *m = RpcApi{} } -func (m *RpcApi) String() string { return proto.CompactTextString(m) } -func (*RpcApi) ProtoMessage() {} -func (*RpcApi) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 42} -} -func (m *RpcApi) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *RpcApi) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_RpcApi.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *RpcApi) XXX_Merge(src proto.Message) { - xxx_messageInfo_RpcApi.Merge(m, src) -} -func (m *RpcApi) XXX_Size() int { - return m.Size() -} -func (m *RpcApi) XXX_DiscardUnknown() { - xxx_messageInfo_RpcApi.DiscardUnknown(m) -} - -var xxx_messageInfo_RpcApi proto.InternalMessageInfo - -type RpcApiStartServer struct { -} - -func (m *RpcApiStartServer) Reset() { *m = RpcApiStartServer{} } -func (m *RpcApiStartServer) String() string { return proto.CompactTextString(m) } -func (*RpcApiStartServer) ProtoMessage() {} -func (*RpcApiStartServer) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 42, 0} -} -func (m *RpcApiStartServer) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *RpcApiStartServer) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_RpcApiStartServer.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *RpcApiStartServer) XXX_Merge(src proto.Message) { - xxx_messageInfo_RpcApiStartServer.Merge(m, src) -} -func (m *RpcApiStartServer) XXX_Size() int { - return m.Size() -} -func (m *RpcApiStartServer) XXX_DiscardUnknown() { - xxx_messageInfo_RpcApiStartServer.DiscardUnknown(m) -} - -var xxx_messageInfo_RpcApiStartServer proto.InternalMessageInfo - -type RpcApiStartServerRequest struct { -} - -func (m *RpcApiStartServerRequest) Reset() { *m = RpcApiStartServerRequest{} } -func (m *RpcApiStartServerRequest) String() string { return proto.CompactTextString(m) } -func (*RpcApiStartServerRequest) ProtoMessage() {} -func (*RpcApiStartServerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 42, 0, 0} -} -func (m *RpcApiStartServerRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *RpcApiStartServerRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_RpcApiStartServerRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *RpcApiStartServerRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_RpcApiStartServerRequest.Merge(m, src) -} -func (m *RpcApiStartServerRequest) XXX_Size() int { - return m.Size() -} -func (m *RpcApiStartServerRequest) XXX_DiscardUnknown() { - xxx_messageInfo_RpcApiStartServerRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_RpcApiStartServerRequest proto.InternalMessageInfo - -type RpcApiStartServerResponse struct { - Error *RpcApiStartServerResponseError `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` -} - -func (m *RpcApiStartServerResponse) Reset() { *m = RpcApiStartServerResponse{} } -func (m *RpcApiStartServerResponse) String() string { return proto.CompactTextString(m) } -func (*RpcApiStartServerResponse) ProtoMessage() {} -func (*RpcApiStartServerResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 42, 0, 1} -} -func (m *RpcApiStartServerResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *RpcApiStartServerResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_RpcApiStartServerResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *RpcApiStartServerResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_RpcApiStartServerResponse.Merge(m, src) -} -func (m *RpcApiStartServerResponse) XXX_Size() int { - return m.Size() -} -func (m *RpcApiStartServerResponse) XXX_DiscardUnknown() { - xxx_messageInfo_RpcApiStartServerResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_RpcApiStartServerResponse proto.InternalMessageInfo - -func (m *RpcApiStartServerResponse) GetError() *RpcApiStartServerResponseError { - if m != nil { - return m.Error - } - return nil -} - -type RpcApiStartServerResponseError struct { - Code RpcApiStartServerResponseErrorCode `protobuf:"varint,1,opt,name=code,proto3,enum=anytype.RpcApiStartServerResponseErrorCode" json:"code,omitempty"` - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` -} - -func (m *RpcApiStartServerResponseError) Reset() { *m = RpcApiStartServerResponseError{} } -func (m *RpcApiStartServerResponseError) String() string { return proto.CompactTextString(m) } -func (*RpcApiStartServerResponseError) ProtoMessage() {} -func (*RpcApiStartServerResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 42, 0, 1, 0} -} -func (m *RpcApiStartServerResponseError) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *RpcApiStartServerResponseError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_RpcApiStartServerResponseError.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *RpcApiStartServerResponseError) XXX_Merge(src proto.Message) { - xxx_messageInfo_RpcApiStartServerResponseError.Merge(m, src) -} -func (m *RpcApiStartServerResponseError) XXX_Size() int { - return m.Size() -} -func (m *RpcApiStartServerResponseError) XXX_DiscardUnknown() { - xxx_messageInfo_RpcApiStartServerResponseError.DiscardUnknown(m) -} - -var xxx_messageInfo_RpcApiStartServerResponseError proto.InternalMessageInfo - -func (m *RpcApiStartServerResponseError) GetCode() RpcApiStartServerResponseErrorCode { - if m != nil { - return m.Code - } - return RpcApiStartServerResponseError_NULL -} - -func (m *RpcApiStartServerResponseError) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -type RpcApiStopServer struct { -} - -func (m *RpcApiStopServer) Reset() { *m = RpcApiStopServer{} } -func (m *RpcApiStopServer) String() string { return proto.CompactTextString(m) } -func (*RpcApiStopServer) ProtoMessage() {} -func (*RpcApiStopServer) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 42, 1} -} -func (m *RpcApiStopServer) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *RpcApiStopServer) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_RpcApiStopServer.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *RpcApiStopServer) XXX_Merge(src proto.Message) { - xxx_messageInfo_RpcApiStopServer.Merge(m, src) -} -func (m *RpcApiStopServer) XXX_Size() int { - return m.Size() -} -func (m *RpcApiStopServer) XXX_DiscardUnknown() { - xxx_messageInfo_RpcApiStopServer.DiscardUnknown(m) -} - -var xxx_messageInfo_RpcApiStopServer proto.InternalMessageInfo - -type RpcApiStopServerRequest struct { -} - -func (m *RpcApiStopServerRequest) Reset() { *m = RpcApiStopServerRequest{} } -func (m *RpcApiStopServerRequest) String() string { return proto.CompactTextString(m) } -func (*RpcApiStopServerRequest) ProtoMessage() {} -func (*RpcApiStopServerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 42, 1, 0} -} -func (m *RpcApiStopServerRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *RpcApiStopServerRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_RpcApiStopServerRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *RpcApiStopServerRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_RpcApiStopServerRequest.Merge(m, src) -} -func (m *RpcApiStopServerRequest) XXX_Size() int { - return m.Size() -} -func (m *RpcApiStopServerRequest) XXX_DiscardUnknown() { - xxx_messageInfo_RpcApiStopServerRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_RpcApiStopServerRequest proto.InternalMessageInfo - -type RpcApiStopServerResponse struct { - Error *RpcApiStopServerResponseError `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` -} - -func (m *RpcApiStopServerResponse) Reset() { *m = RpcApiStopServerResponse{} } -func (m *RpcApiStopServerResponse) String() string { return proto.CompactTextString(m) } -func (*RpcApiStopServerResponse) ProtoMessage() {} -func (*RpcApiStopServerResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 42, 1, 1} -} -func (m *RpcApiStopServerResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *RpcApiStopServerResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_RpcApiStopServerResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *RpcApiStopServerResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_RpcApiStopServerResponse.Merge(m, src) -} -func (m *RpcApiStopServerResponse) XXX_Size() int { - return m.Size() -} -func (m *RpcApiStopServerResponse) XXX_DiscardUnknown() { - xxx_messageInfo_RpcApiStopServerResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_RpcApiStopServerResponse proto.InternalMessageInfo - -func (m *RpcApiStopServerResponse) GetError() *RpcApiStopServerResponseError { - if m != nil { - return m.Error - } - return nil -} - -type RpcApiStopServerResponseError struct { - Code RpcApiStopServerResponseErrorCode `protobuf:"varint,1,opt,name=code,proto3,enum=anytype.RpcApiStopServerResponseErrorCode" json:"code,omitempty"` - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` -} - -func (m *RpcApiStopServerResponseError) Reset() { *m = RpcApiStopServerResponseError{} } -func (m *RpcApiStopServerResponseError) String() string { return proto.CompactTextString(m) } -func (*RpcApiStopServerResponseError) ProtoMessage() {} -func (*RpcApiStopServerResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 42, 1, 1, 0} -} -func (m *RpcApiStopServerResponseError) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *RpcApiStopServerResponseError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_RpcApiStopServerResponseError.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *RpcApiStopServerResponseError) XXX_Merge(src proto.Message) { - xxx_messageInfo_RpcApiStopServerResponseError.Merge(m, src) -} -func (m *RpcApiStopServerResponseError) XXX_Size() int { - return m.Size() -} -func (m *RpcApiStopServerResponseError) XXX_DiscardUnknown() { - xxx_messageInfo_RpcApiStopServerResponseError.DiscardUnknown(m) -} - -var xxx_messageInfo_RpcApiStopServerResponseError proto.InternalMessageInfo - -func (m *RpcApiStopServerResponseError) GetCode() RpcApiStopServerResponseErrorCode { - if m != nil { - return m.Code - } - return RpcApiStopServerResponseError_NULL -} - -func (m *RpcApiStopServerResponseError) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - type Empty struct { } @@ -71290,8 +70853,6 @@ func init() { proto.RegisterEnum("anytype.RpcChatGetMessagesByIdsResponseErrorCode", RpcChatGetMessagesByIdsResponseErrorCode_name, RpcChatGetMessagesByIdsResponseErrorCode_value) proto.RegisterEnum("anytype.RpcChatSubscribeLastMessagesResponseErrorCode", RpcChatSubscribeLastMessagesResponseErrorCode_name, RpcChatSubscribeLastMessagesResponseErrorCode_value) proto.RegisterEnum("anytype.RpcChatUnsubscribeResponseErrorCode", RpcChatUnsubscribeResponseErrorCode_name, RpcChatUnsubscribeResponseErrorCode_value) - proto.RegisterEnum("anytype.RpcApiStartServerResponseErrorCode", RpcApiStartServerResponseErrorCode_name, RpcApiStartServerResponseErrorCode_value) - proto.RegisterEnum("anytype.RpcApiStopServerResponseErrorCode", RpcApiStopServerResponseErrorCode_name, RpcApiStopServerResponseErrorCode_value) proto.RegisterType((*Rpc)(nil), "anytype.Rpc") proto.RegisterType((*RpcApp)(nil), "anytype.Rpc.App") proto.RegisterType((*RpcAppGetVersion)(nil), "anytype.Rpc.App.GetVersion") @@ -72516,15 +72077,6 @@ func init() { proto.RegisterType((*RpcChatUnsubscribeRequest)(nil), "anytype.Rpc.Chat.Unsubscribe.Request") proto.RegisterType((*RpcChatUnsubscribeResponse)(nil), "anytype.Rpc.Chat.Unsubscribe.Response") proto.RegisterType((*RpcChatUnsubscribeResponseError)(nil), "anytype.Rpc.Chat.Unsubscribe.Response.Error") - proto.RegisterType((*RpcApi)(nil), "anytype.Rpc.Api") - proto.RegisterType((*RpcApiStartServer)(nil), "anytype.Rpc.Api.StartServer") - proto.RegisterType((*RpcApiStartServerRequest)(nil), "anytype.Rpc.Api.StartServer.Request") - proto.RegisterType((*RpcApiStartServerResponse)(nil), "anytype.Rpc.Api.StartServer.Response") - proto.RegisterType((*RpcApiStartServerResponseError)(nil), "anytype.Rpc.Api.StartServer.Response.Error") - proto.RegisterType((*RpcApiStopServer)(nil), "anytype.Rpc.Api.StopServer") - proto.RegisterType((*RpcApiStopServerRequest)(nil), "anytype.Rpc.Api.StopServer.Request") - proto.RegisterType((*RpcApiStopServerResponse)(nil), "anytype.Rpc.Api.StopServer.Response") - proto.RegisterType((*RpcApiStopServerResponseError)(nil), "anytype.Rpc.Api.StopServer.Response.Error") proto.RegisterType((*Empty)(nil), "anytype.Empty") proto.RegisterType((*StreamRequest)(nil), "anytype.StreamRequest") proto.RegisterExtension(E_NoAuth) @@ -72533,1239 +72085,1232 @@ func init() { func init() { proto.RegisterFile("pb/protos/commands.proto", fileDescriptor_8261c968b2e6f45c) } var fileDescriptor_8261c968b2e6f45c = []byte{ - // 19712 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xfd, 0x7d, 0x9c, 0x23, 0x47, - 0x75, 0x2f, 0x8c, 0xaf, 0xba, 0x25, 0xcd, 0xcc, 0x99, 0x97, 0xd5, 0xb6, 0x77, 0xd7, 0xeb, 0xb2, - 0x59, 0x3b, 0x6b, 0x63, 0x1c, 0x63, 0xc6, 0xc6, 0x10, 0x82, 0x8d, 0x8d, 0xad, 0xd1, 0xf4, 0xcc, - 0xc8, 0x9e, 0x91, 0x26, 0x2d, 0xcd, 0x2e, 0x4e, 0x6e, 0x7e, 0xba, 0xbd, 0x52, 0xcd, 0x4c, 0x7b, - 0x35, 0xdd, 0x4a, 0xab, 0x67, 0xd6, 0xcb, 0xef, 0x73, 0x9f, 0x1b, 0x42, 0x1c, 0x20, 0x84, 0x4b, - 0x08, 0x21, 0x09, 0xef, 0x60, 0x30, 0x5c, 0x48, 0x80, 0xf0, 0x7e, 0x21, 0x09, 0xef, 0x04, 0x42, - 0x08, 0x21, 0x10, 0x5e, 0x42, 0xc2, 0x13, 0x08, 0x84, 0x90, 0xfb, 0x09, 0x97, 0x27, 0x79, 0x6e, - 0x20, 0x24, 0xf0, 0xe4, 0xf9, 0x74, 0x55, 0xf5, 0x4b, 0x69, 0xd4, 0xad, 0x6a, 0x8d, 0x5a, 0x63, - 0xc2, 0xf3, 0x5f, 0x77, 0x75, 0xf5, 0xa9, 0x53, 0xe7, 0x7b, 0xaa, 0xea, 0x54, 0xd5, 0xa9, 0x53, - 0x70, 0xaa, 0x73, 0xfe, 0xe6, 0x8e, 0x6d, 0x39, 0x56, 0xf7, 0xe6, 0xa6, 0xb5, 0xb3, 0xa3, 0x9b, - 0xad, 0xee, 0x3c, 0x79, 0x57, 0x26, 0x74, 0xf3, 0x92, 0x73, 0xa9, 0x83, 0xd1, 0x75, 0x9d, 0x0b, - 0x5b, 0x37, 0xb7, 0x8d, 0xf3, 0x37, 0x77, 0xce, 0xdf, 0xbc, 0x63, 0xb5, 0x70, 0xdb, 0xfb, 0x81, - 0xbc, 0xb0, 0xec, 0xe8, 0x86, 0xa8, 0x5c, 0x6d, 0xab, 0xa9, 0xb7, 0xbb, 0x8e, 0x65, 0x63, 0x96, - 0xf3, 0x64, 0x50, 0x24, 0xde, 0xc3, 0xa6, 0xe3, 0x51, 0xb8, 0x6a, 0xcb, 0xb2, 0xb6, 0xda, 0x98, - 0x7e, 0x3b, 0xbf, 0xbb, 0x79, 0x73, 0xd7, 0xb1, 0x77, 0x9b, 0x0e, 0xfb, 0x7a, 0x4d, 0xef, 0xd7, - 0x16, 0xee, 0x36, 0x6d, 0xa3, 0xe3, 0x58, 0x36, 0xcd, 0x71, 0xe6, 0x25, 0xbf, 0x36, 0x09, 0xb2, - 0xd6, 0x69, 0xa2, 0xef, 0x4c, 0x80, 0x5c, 0xec, 0x74, 0xd0, 0x47, 0x25, 0x80, 0x65, 0xec, 0x9c, - 0xc5, 0x76, 0xd7, 0xb0, 0x4c, 0x74, 0x14, 0x26, 0x34, 0xfc, 0x73, 0xbb, 0xb8, 0xeb, 0xdc, 0x9e, - 0x7d, 0xf6, 0x37, 0xe4, 0x0c, 0x7a, 0x58, 0x82, 0x49, 0x0d, 0x77, 0x3b, 0x96, 0xd9, 0xc5, 0xca, - 0xdd, 0x90, 0xc3, 0xb6, 0x6d, 0xd9, 0xa7, 0x32, 0xd7, 0x64, 0x6e, 0x98, 0xbe, 0xf5, 0xc6, 0x79, - 0x56, 0xfd, 0x79, 0xad, 0xd3, 0x9c, 0x2f, 0x76, 0x3a, 0xf3, 0x01, 0xa5, 0x79, 0xef, 0xa7, 0x79, - 0xd5, 0xfd, 0x43, 0xa3, 0x3f, 0x2a, 0xa7, 0x60, 0x62, 0x8f, 0x66, 0x38, 0x25, 0x5d, 0x93, 0xb9, - 0x61, 0x4a, 0xf3, 0x5e, 0xdd, 0x2f, 0x2d, 0xec, 0xe8, 0x46, 0xbb, 0x7b, 0x4a, 0xa6, 0x5f, 0xd8, - 0x2b, 0x7a, 0x28, 0x03, 0x39, 0x42, 0x44, 0x29, 0x41, 0xb6, 0x69, 0xb5, 0x30, 0x29, 0x7e, 0xee, - 0xd6, 0x9b, 0xc5, 0x8b, 0x9f, 0x2f, 0x59, 0x2d, 0xac, 0x91, 0x9f, 0x95, 0x6b, 0x60, 0xda, 0x13, - 0x4b, 0xc0, 0x46, 0x38, 0xe9, 0xcc, 0xad, 0x90, 0x75, 0xf3, 0x2b, 0x93, 0x90, 0xad, 0x6c, 0xac, - 0xae, 0x16, 0x8e, 0x28, 0xc7, 0x60, 0x76, 0xa3, 0x72, 0x6f, 0xa5, 0x7a, 0xae, 0xd2, 0x50, 0x35, - 0xad, 0xaa, 0x15, 0x32, 0xca, 0x2c, 0x4c, 0x2d, 0x14, 0x17, 0x1b, 0xe5, 0xca, 0xfa, 0x46, 0xbd, - 0x20, 0xa1, 0x57, 0xc8, 0x30, 0x57, 0xc3, 0xce, 0x22, 0xde, 0x33, 0x9a, 0xb8, 0xe6, 0xe8, 0x0e, - 0x46, 0xcf, 0xcf, 0xf8, 0xc2, 0x54, 0x36, 0xdc, 0x42, 0xfd, 0x4f, 0xac, 0x02, 0x4f, 0xd8, 0x57, - 0x01, 0x9e, 0xc2, 0x3c, 0xfb, 0x7b, 0x3e, 0x94, 0xa6, 0x85, 0xe9, 0x9c, 0x79, 0x1c, 0x4c, 0x87, - 0xbe, 0x29, 0x73, 0x00, 0x0b, 0xc5, 0xd2, 0xbd, 0xcb, 0x5a, 0x75, 0xa3, 0xb2, 0x58, 0x38, 0xe2, - 0xbe, 0x2f, 0x55, 0x35, 0x95, 0xbd, 0x67, 0xd0, 0xf7, 0x32, 0x21, 0x30, 0x17, 0x79, 0x30, 0xe7, - 0x07, 0x33, 0xd3, 0x07, 0x50, 0xf4, 0x3a, 0x1f, 0x9c, 0x65, 0x0e, 0x9c, 0x27, 0x24, 0x23, 0x97, - 0x3e, 0x40, 0x0f, 0x4a, 0x30, 0x59, 0xdb, 0xde, 0x75, 0x5a, 0xd6, 0x45, 0x13, 0x4d, 0xf9, 0xc8, - 0xa0, 0x6f, 0x85, 0x65, 0xf2, 0x54, 0x5e, 0x26, 0x37, 0xec, 0xaf, 0x04, 0xa3, 0x10, 0x21, 0x8d, - 0x57, 0xf9, 0xd2, 0x28, 0x72, 0xd2, 0x78, 0x9c, 0x28, 0xa1, 0xf4, 0xe5, 0xf0, 0x92, 0x27, 0x43, - 0xae, 0xd6, 0xd1, 0x9b, 0x18, 0x7d, 0x52, 0x86, 0x99, 0x55, 0xac, 0xef, 0xe1, 0x62, 0xa7, 0x63, - 0x5b, 0x7b, 0x18, 0x95, 0x02, 0x7d, 0x3d, 0x05, 0x13, 0x5d, 0x37, 0x53, 0xb9, 0x45, 0x6a, 0x30, - 0xa5, 0x79, 0xaf, 0xca, 0x69, 0x00, 0xa3, 0x85, 0x4d, 0xc7, 0x70, 0x0c, 0xdc, 0x3d, 0x25, 0x5d, - 0x23, 0xdf, 0x30, 0xa5, 0x85, 0x52, 0xd0, 0x77, 0x24, 0x51, 0x1d, 0x23, 0x5c, 0xcc, 0x87, 0x39, - 0x88, 0x90, 0xea, 0x6b, 0x24, 0x11, 0x1d, 0x1b, 0x48, 0x2e, 0x99, 0x6c, 0xdf, 0x9c, 0x49, 0x2e, - 0x5c, 0x37, 0x47, 0xa5, 0xda, 0xa8, 0x6d, 0x94, 0x56, 0x1a, 0xb5, 0xf5, 0x62, 0x49, 0x2d, 0x60, - 0xe5, 0x38, 0x14, 0xc8, 0x63, 0xa3, 0x5c, 0x6b, 0x2c, 0xaa, 0xab, 0x6a, 0x5d, 0x5d, 0x2c, 0x6c, - 0x2a, 0x0a, 0xcc, 0x69, 0xea, 0x4f, 0x6d, 0xa8, 0xb5, 0x7a, 0x63, 0xa9, 0x58, 0x5e, 0x55, 0x17, - 0x0b, 0x5b, 0xee, 0xcf, 0xab, 0xe5, 0xb5, 0x72, 0xbd, 0xa1, 0xa9, 0xc5, 0xd2, 0x8a, 0xba, 0x58, - 0xd8, 0x56, 0x2e, 0x87, 0xcb, 0x2a, 0xd5, 0x46, 0x71, 0x7d, 0x5d, 0xab, 0x9e, 0x55, 0x1b, 0xec, - 0x8f, 0x5a, 0xc1, 0xa0, 0x05, 0xd5, 0x1b, 0xb5, 0x95, 0xa2, 0xa6, 0x16, 0x17, 0x56, 0xd5, 0xc2, - 0xfd, 0xe8, 0x99, 0x32, 0xcc, 0xae, 0xe9, 0x17, 0x70, 0x6d, 0x5b, 0xb7, 0xb1, 0x7e, 0xbe, 0x8d, - 0xd1, 0xb5, 0x02, 0x78, 0xa2, 0x4f, 0x86, 0xf1, 0x52, 0x79, 0xbc, 0x6e, 0xee, 0x23, 0x60, 0xae, - 0x88, 0x08, 0xc0, 0xfe, 0xc5, 0x6f, 0x06, 0x2b, 0x1c, 0x60, 0x4f, 0x4c, 0x48, 0x2f, 0x19, 0x62, - 0xbf, 0xf0, 0x08, 0x40, 0x0c, 0x7d, 0x59, 0x86, 0xb9, 0xb2, 0xb9, 0x67, 0x38, 0x78, 0x19, 0x9b, - 0xd8, 0x76, 0xc7, 0x01, 0x21, 0x18, 0x1e, 0x96, 0x43, 0x30, 0x2c, 0xf1, 0x30, 0xdc, 0xd2, 0x47, - 0x6c, 0x7c, 0x19, 0x11, 0xa3, 0xed, 0x55, 0x30, 0x65, 0x90, 0x7c, 0x25, 0xa3, 0xc5, 0x24, 0x16, - 0x24, 0x28, 0xd7, 0xc1, 0x2c, 0x7d, 0x59, 0x32, 0xda, 0xf8, 0x5e, 0x7c, 0x89, 0x8d, 0xbb, 0x7c, - 0x22, 0xfa, 0x15, 0xbf, 0xf1, 0x95, 0x39, 0x2c, 0x7f, 0x22, 0x29, 0x53, 0xc9, 0xc0, 0x7c, 0xd1, - 0x23, 0xa1, 0xf9, 0xed, 0x6b, 0x65, 0x06, 0xfa, 0x81, 0x04, 0xd3, 0x35, 0xc7, 0xea, 0xb8, 0x2a, - 0x6b, 0x98, 0x5b, 0x62, 0xe0, 0x7e, 0x3c, 0xdc, 0xc6, 0x4a, 0x3c, 0xb8, 0x8f, 0xeb, 0x23, 0xc7, - 0x50, 0x01, 0x11, 0x2d, 0xec, 0x3b, 0x7e, 0x0b, 0x5b, 0xe2, 0x50, 0xb9, 0x35, 0x11, 0xb5, 0x1f, - 0xc2, 0xf6, 0xf5, 0x22, 0x19, 0x0a, 0x9e, 0x9a, 0x39, 0xa5, 0x5d, 0xdb, 0xc6, 0xa6, 0x23, 0x06, - 0xc2, 0x5f, 0x86, 0x41, 0x58, 0xe1, 0x41, 0xb8, 0x35, 0x46, 0x99, 0xbd, 0x52, 0x52, 0x6c, 0x63, - 0x1f, 0xf0, 0xd1, 0xbc, 0x97, 0x43, 0xf3, 0x27, 0x93, 0xb3, 0x95, 0x0c, 0xd2, 0x95, 0x21, 0x10, - 0x3d, 0x0e, 0x05, 0x77, 0x4c, 0x2a, 0xd5, 0xcb, 0x67, 0xd5, 0x46, 0xb9, 0x72, 0xb6, 0x5c, 0x57, - 0x0b, 0x18, 0xbd, 0x50, 0x86, 0x19, 0xca, 0x9a, 0x86, 0xf7, 0xac, 0x0b, 0x82, 0xbd, 0xde, 0x97, - 0x13, 0x1a, 0x0b, 0xe1, 0x12, 0x22, 0x5a, 0xc6, 0x2f, 0x27, 0x30, 0x16, 0x62, 0xc8, 0x3d, 0x92, - 0x7a, 0xab, 0x7d, 0xcd, 0x60, 0xab, 0x4f, 0x6b, 0xe9, 0xdb, 0x5b, 0xbd, 0x28, 0x0b, 0x40, 0x2b, - 0x79, 0xd6, 0xc0, 0x17, 0xd1, 0x5a, 0x80, 0x09, 0xa7, 0xb6, 0x99, 0x81, 0x6a, 0x2b, 0xf5, 0x53, - 0xdb, 0x77, 0x87, 0xc7, 0xac, 0x05, 0x1e, 0xbd, 0x9b, 0x22, 0xc5, 0xed, 0x72, 0x12, 0x3d, 0x3b, - 0xf4, 0x14, 0x45, 0xe2, 0xad, 0xce, 0xab, 0x60, 0x8a, 0x3c, 0x56, 0xf4, 0x1d, 0xcc, 0xda, 0x50, - 0x90, 0xa0, 0x9c, 0x81, 0x19, 0x9a, 0xb1, 0x69, 0x99, 0x6e, 0x7d, 0xb2, 0x24, 0x03, 0x97, 0xe6, - 0x82, 0xd8, 0xb4, 0xb1, 0xee, 0x58, 0x36, 0xa1, 0x91, 0xa3, 0x20, 0x86, 0x92, 0xd0, 0x37, 0xfd, - 0x56, 0xa8, 0x72, 0x9a, 0xf3, 0xf8, 0x24, 0x55, 0x49, 0xa6, 0x37, 0x7b, 0xc3, 0xb5, 0x3f, 0xda, - 0xea, 0x1a, 0x2e, 0xda, 0x4b, 0x64, 0x6a, 0x87, 0x95, 0x93, 0xa0, 0xb0, 0x54, 0x37, 0x6f, 0xa9, - 0x5a, 0xa9, 0xab, 0x95, 0x7a, 0x61, 0xb3, 0xaf, 0x46, 0x6d, 0xa1, 0xd7, 0x64, 0x21, 0x7b, 0x8f, - 0x65, 0x98, 0xe8, 0xc1, 0x0c, 0xa7, 0x12, 0x26, 0x76, 0x2e, 0x5a, 0xf6, 0x05, 0xbf, 0xa1, 0x06, - 0x09, 0xf1, 0xd8, 0x04, 0xaa, 0x24, 0x0f, 0x54, 0xa5, 0x6c, 0x3f, 0x55, 0xfa, 0xb5, 0xb0, 0x2a, - 0xdd, 0xc1, 0xab, 0xd2, 0xf5, 0x7d, 0xe4, 0xef, 0x32, 0x1f, 0xd1, 0x01, 0x7c, 0xcc, 0xef, 0x00, - 0xee, 0xe2, 0x60, 0x7c, 0xac, 0x18, 0x99, 0x64, 0x00, 0x7e, 0x29, 0xd5, 0x86, 0xdf, 0x0f, 0xea, - 0xad, 0x08, 0xa8, 0xb7, 0xfb, 0xf4, 0x09, 0xc6, 0xfe, 0xae, 0xe3, 0xfe, 0xfd, 0xdd, 0xc4, 0x05, - 0xe5, 0x04, 0x1c, 0x5b, 0x2c, 0x2f, 0x2d, 0xa9, 0x9a, 0x5a, 0xa9, 0x37, 0x2a, 0x6a, 0xfd, 0x5c, - 0x55, 0xbb, 0xb7, 0xd0, 0x46, 0x0f, 0xc9, 0x00, 0xae, 0x84, 0x4a, 0xba, 0xd9, 0xc4, 0x6d, 0xb1, - 0x1e, 0xfd, 0x7f, 0x49, 0xc9, 0xfa, 0x84, 0x80, 0x7e, 0x04, 0x9c, 0x2f, 0x97, 0xc4, 0x5b, 0x65, - 0x24, 0xb1, 0x64, 0xa0, 0xbe, 0xf1, 0x91, 0x60, 0x7b, 0x5e, 0x06, 0x47, 0x3d, 0x7a, 0x2c, 0x7b, - 0xff, 0x69, 0xdf, 0x5b, 0xb2, 0x30, 0xc7, 0x60, 0xf1, 0xe6, 0xf1, 0xcf, 0xce, 0x88, 0x4c, 0xe4, - 0x11, 0x4c, 0xb2, 0x69, 0xbb, 0xd7, 0xbd, 0xfb, 0xef, 0xca, 0x32, 0x4c, 0x77, 0xb0, 0xbd, 0x63, - 0x74, 0xbb, 0x86, 0x65, 0xd2, 0x05, 0xb9, 0xb9, 0x5b, 0x1f, 0xed, 0x4b, 0x9c, 0xac, 0x5d, 0xce, - 0xaf, 0xeb, 0xb6, 0x63, 0x34, 0x8d, 0x8e, 0x6e, 0x3a, 0xeb, 0x41, 0x66, 0x2d, 0xfc, 0x27, 0x7a, - 0x41, 0xc2, 0x69, 0x0d, 0x5f, 0x93, 0x08, 0x95, 0xf8, 0xfd, 0x04, 0x53, 0x92, 0x58, 0x82, 0xc9, - 0xd4, 0xe2, 0xa3, 0xa9, 0xaa, 0x45, 0x1f, 0xbc, 0xb7, 0x94, 0x2b, 0xe0, 0x44, 0xb9, 0x52, 0xaa, - 0x6a, 0x9a, 0x5a, 0xaa, 0x37, 0xd6, 0x55, 0x6d, 0xad, 0x5c, 0xab, 0x95, 0xab, 0x95, 0xda, 0x41, - 0x5a, 0x3b, 0xfa, 0x84, 0xec, 0x6b, 0xcc, 0x22, 0x6e, 0xb6, 0x0d, 0x13, 0xa3, 0xbb, 0x0e, 0xa8, - 0x30, 0xfc, 0xaa, 0x8f, 0x38, 0xce, 0xac, 0xfc, 0x08, 0x9c, 0x5f, 0x9d, 0x1c, 0xe7, 0xfe, 0x04, - 0xff, 0x03, 0x37, 0xff, 0x2f, 0xcb, 0x70, 0x2c, 0xd4, 0x10, 0x35, 0xbc, 0x33, 0xb2, 0x95, 0xbc, - 0x5f, 0x08, 0xb7, 0xdd, 0x32, 0x8f, 0x69, 0x3f, 0x6b, 0x7a, 0x1f, 0x1b, 0x11, 0xb0, 0xbe, 0xd1, - 0x87, 0x75, 0x95, 0x83, 0xf5, 0xc9, 0x43, 0xd0, 0x4c, 0x86, 0xec, 0xef, 0xa6, 0x8a, 0xec, 0x15, - 0x70, 0x62, 0xbd, 0xa8, 0xd5, 0xcb, 0xa5, 0xf2, 0x7a, 0xd1, 0x1d, 0x47, 0x43, 0x43, 0x76, 0x84, - 0xb9, 0xce, 0x83, 0xde, 0x17, 0xdf, 0xf7, 0x67, 0xe1, 0xaa, 0xfe, 0x1d, 0x6d, 0x69, 0x5b, 0x37, - 0xb7, 0x30, 0x32, 0x44, 0xa0, 0x5e, 0x84, 0x89, 0x26, 0xc9, 0x4e, 0x71, 0x0e, 0x6f, 0xdd, 0xc4, - 0xf4, 0xe5, 0xb4, 0x04, 0xcd, 0xfb, 0x15, 0xbd, 0x3d, 0xac, 0x10, 0x75, 0x5e, 0x21, 0x9e, 0x1a, - 0x0f, 0xde, 0x3e, 0xbe, 0x23, 0x74, 0xe3, 0xd3, 0xbe, 0x6e, 0x9c, 0xe3, 0x74, 0xa3, 0x74, 0x30, - 0xf2, 0xc9, 0xd4, 0xe4, 0x8f, 0x1f, 0x09, 0x1d, 0x40, 0xa4, 0x36, 0x19, 0xd1, 0xa3, 0x42, 0xdf, - 0xee, 0xfe, 0x95, 0x32, 0xe4, 0x17, 0x71, 0x1b, 0x8b, 0xae, 0x44, 0x7e, 0x5b, 0x12, 0xdd, 0x10, - 0xa1, 0x30, 0x50, 0xda, 0xd1, 0xab, 0x23, 0x8e, 0xb1, 0x83, 0xbb, 0x8e, 0xbe, 0xd3, 0x21, 0xa2, - 0x96, 0xb5, 0x20, 0x01, 0xfd, 0xa2, 0x24, 0xb2, 0x5d, 0x12, 0x53, 0xcc, 0x7f, 0x8c, 0x35, 0xc5, - 0xcf, 0x4a, 0x30, 0x59, 0xc3, 0x4e, 0xd5, 0x6e, 0x61, 0x1b, 0xd5, 0x02, 0x8c, 0xae, 0x81, 0x69, - 0x02, 0x8a, 0x3b, 0xcd, 0xf4, 0x71, 0x0a, 0x27, 0x29, 0xd7, 0xc3, 0x9c, 0xff, 0x4a, 0x7e, 0x67, - 0xdd, 0x78, 0x4f, 0x2a, 0xfa, 0xc7, 0x8c, 0xe8, 0x2e, 0x2e, 0x5b, 0x32, 0x64, 0xdc, 0x44, 0xb4, - 0x52, 0xb1, 0x1d, 0xd9, 0x58, 0x52, 0xe9, 0x6f, 0x74, 0xbd, 0x55, 0x02, 0xd8, 0x30, 0xbb, 0x9e, - 0x5c, 0x1f, 0x9b, 0x40, 0xae, 0xe8, 0x9f, 0x33, 0xc9, 0x66, 0x31, 0x41, 0x39, 0x11, 0x12, 0x7b, - 0x6d, 0x82, 0xb5, 0x85, 0x48, 0x62, 0xe9, 0xcb, 0xec, 0x6b, 0x73, 0x90, 0x3f, 0xa7, 0xb7, 0xdb, - 0xd8, 0x41, 0x5f, 0x97, 0x20, 0x5f, 0xb2, 0xb1, 0xee, 0xe0, 0xb0, 0xe8, 0x10, 0x4c, 0xda, 0x96, - 0xe5, 0xac, 0xeb, 0xce, 0x36, 0x93, 0x9b, 0xff, 0xce, 0x1c, 0x06, 0x7e, 0x27, 0xdc, 0x7d, 0xdc, - 0xc5, 0x8b, 0xee, 0xc7, 0xb9, 0xda, 0xd2, 0x82, 0xe6, 0x69, 0x21, 0x11, 0xfd, 0x07, 0x82, 0xc9, - 0x1d, 0x13, 0xef, 0x58, 0xa6, 0xd1, 0xf4, 0x6c, 0x4e, 0xef, 0x1d, 0x7d, 0xc8, 0x97, 0xe9, 0x02, - 0x27, 0xd3, 0x79, 0xe1, 0x52, 0x92, 0x09, 0xb4, 0x36, 0x44, 0xef, 0x71, 0x35, 0x5c, 0x49, 0x3b, - 0x83, 0x46, 0xbd, 0xda, 0x28, 0x69, 0x6a, 0xb1, 0xae, 0x36, 0x56, 0xab, 0xa5, 0xe2, 0x6a, 0x43, - 0x53, 0xd7, 0xab, 0x05, 0x8c, 0xfe, 0x4e, 0x72, 0x85, 0xdb, 0xb4, 0xf6, 0xb0, 0x8d, 0x96, 0x85, - 0xe4, 0x1c, 0x27, 0x13, 0x86, 0xc1, 0xaf, 0x09, 0x3b, 0x6d, 0x30, 0xe9, 0x30, 0x0e, 0x22, 0x94, - 0xf7, 0xc3, 0x42, 0xcd, 0x3d, 0x96, 0xd4, 0x23, 0x40, 0xd2, 0xff, 0x5b, 0x82, 0x89, 0x92, 0x65, - 0xee, 0x61, 0xdb, 0x09, 0xcf, 0x77, 0xc2, 0xd2, 0xcc, 0xf0, 0xd2, 0x74, 0x07, 0x49, 0x6c, 0x3a, - 0xb6, 0xd5, 0xf1, 0x26, 0x3c, 0xde, 0x2b, 0x7a, 0x7d, 0x52, 0x09, 0xb3, 0x92, 0xa3, 0x17, 0x3e, - 0xfb, 0x17, 0xc4, 0xb1, 0x27, 0xf7, 0x34, 0x80, 0x87, 0x92, 0xe0, 0xd2, 0x9f, 0x81, 0xf4, 0xbb, - 0x94, 0xaf, 0xc8, 0x30, 0x4b, 0x1b, 0x5f, 0x0d, 0x13, 0x0b, 0x0d, 0x55, 0xc3, 0x4b, 0x8e, 0x3d, - 0xc2, 0x5f, 0x39, 0xc2, 0x89, 0x3f, 0xaf, 0x77, 0x3a, 0xfe, 0xf2, 0xf3, 0xca, 0x11, 0x8d, 0xbd, - 0x53, 0x35, 0x5f, 0xc8, 0x43, 0x56, 0xdf, 0x75, 0xb6, 0xd1, 0x0f, 0x84, 0x27, 0x9f, 0x5c, 0x67, - 0xc0, 0xf8, 0x89, 0x80, 0xe4, 0x38, 0xe4, 0x1c, 0xeb, 0x02, 0xf6, 0xe4, 0x40, 0x5f, 0x5c, 0x38, - 0xf4, 0x4e, 0xa7, 0x4e, 0x3e, 0x30, 0x38, 0xbc, 0x77, 0xd7, 0xd6, 0xd1, 0x9b, 0x4d, 0x6b, 0xd7, - 0x74, 0xca, 0xde, 0x12, 0x74, 0x90, 0x80, 0xbe, 0x98, 0x11, 0x99, 0xcc, 0x0a, 0x30, 0x98, 0x0c, - 0xb2, 0xf3, 0x43, 0x34, 0xa5, 0x79, 0xb8, 0xb1, 0xb8, 0xbe, 0xde, 0xa8, 0x57, 0xef, 0x55, 0x2b, - 0x81, 0xe1, 0xd9, 0x28, 0x57, 0x1a, 0xf5, 0x15, 0xb5, 0x51, 0xda, 0xd0, 0xc8, 0x3a, 0x61, 0xb1, - 0x54, 0xaa, 0x6e, 0x54, 0xea, 0x05, 0x8c, 0xde, 0x24, 0xc1, 0x4c, 0xa9, 0x6d, 0x75, 0x7d, 0x84, - 0xaf, 0x0e, 0x10, 0xf6, 0xc5, 0x98, 0x09, 0x89, 0x11, 0xfd, 0x5b, 0x46, 0xd4, 0xe9, 0xc0, 0x13, - 0x48, 0x88, 0x7c, 0x44, 0x2f, 0xf5, 0x7a, 0x21, 0xa7, 0x83, 0xc1, 0xf4, 0xd2, 0x6f, 0x12, 0x9f, - 0xbd, 0x1d, 0x26, 0x8a, 0x54, 0x31, 0xd0, 0x5f, 0x67, 0x20, 0x5f, 0xb2, 0xcc, 0x4d, 0x63, 0xcb, - 0x35, 0xe6, 0xb0, 0xa9, 0x9f, 0x6f, 0xe3, 0x45, 0xdd, 0xd1, 0xf7, 0x0c, 0x7c, 0x91, 0x54, 0x60, - 0x52, 0xeb, 0x49, 0x75, 0x99, 0x62, 0x29, 0xf8, 0xfc, 0xee, 0x16, 0x61, 0x6a, 0x52, 0x0b, 0x27, - 0x29, 0x4f, 0x86, 0xcb, 0xe9, 0xeb, 0xba, 0x8d, 0x6d, 0xdc, 0xc6, 0x7a, 0x17, 0xbb, 0xd3, 0x22, - 0x13, 0xb7, 0x89, 0xd2, 0x4e, 0x6a, 0x51, 0x9f, 0x95, 0x33, 0x30, 0x43, 0x3f, 0x11, 0x53, 0xa4, - 0x4b, 0xd4, 0x78, 0x52, 0xe3, 0xd2, 0x94, 0xc7, 0x41, 0x0e, 0x3f, 0xe0, 0xd8, 0xfa, 0xa9, 0x16, - 0xc1, 0xeb, 0xf2, 0x79, 0xea, 0x75, 0x38, 0xef, 0x79, 0x1d, 0xce, 0xd7, 0x88, 0x4f, 0xa2, 0x46, - 0x73, 0xa1, 0x97, 0x4d, 0xfa, 0x86, 0xc4, 0xbf, 0x4b, 0x81, 0x62, 0x28, 0x90, 0x35, 0xf5, 0x1d, - 0xcc, 0xf4, 0x82, 0x3c, 0x2b, 0x37, 0xc2, 0x51, 0x7d, 0x4f, 0x77, 0x74, 0x7b, 0xd5, 0x6a, 0xea, - 0x6d, 0x32, 0xf8, 0x79, 0x2d, 0xbf, 0xf7, 0x03, 0xd9, 0x11, 0x72, 0x2c, 0x1b, 0x93, 0x5c, 0xde, - 0x8e, 0x90, 0x97, 0xe0, 0x52, 0x37, 0x9a, 0x96, 0x49, 0xf8, 0x97, 0x35, 0xf2, 0xec, 0x4a, 0xa5, - 0x65, 0x74, 0xdd, 0x8a, 0x10, 0x2a, 0x15, 0xba, 0xb5, 0x51, 0xbb, 0x64, 0x36, 0xc9, 0x6e, 0xd0, - 0xa4, 0x16, 0xf5, 0x59, 0x59, 0x80, 0x69, 0xb6, 0x11, 0xb2, 0xe6, 0xea, 0x55, 0x9e, 0xe8, 0xd5, - 0x35, 0xbc, 0x4f, 0x17, 0xc5, 0x73, 0xbe, 0x12, 0xe4, 0xd3, 0xc2, 0x3f, 0x29, 0x77, 0xc3, 0x95, - 0xec, 0xb5, 0xb4, 0xdb, 0x75, 0xac, 0x1d, 0x0a, 0xfa, 0x92, 0xd1, 0xa6, 0x35, 0x98, 0x20, 0x35, - 0x88, 0xcb, 0xa2, 0xdc, 0x0a, 0xc7, 0x3b, 0x36, 0xde, 0xc4, 0xf6, 0x7d, 0xfa, 0xce, 0xee, 0x03, - 0x75, 0x5b, 0x37, 0xbb, 0x1d, 0xcb, 0x76, 0x4e, 0x4d, 0x12, 0xe6, 0xfb, 0x7e, 0x63, 0x1d, 0xe5, - 0x24, 0xe4, 0xa9, 0xf8, 0xd0, 0xf3, 0x73, 0xc2, 0xee, 0x9c, 0xac, 0x42, 0xb1, 0xe6, 0xd9, 0x2d, - 0x30, 0xc1, 0x7a, 0x38, 0x02, 0xd4, 0xf4, 0xad, 0x27, 0x7b, 0xd6, 0x15, 0x18, 0x15, 0xcd, 0xcb, - 0xa6, 0x3c, 0x01, 0xf2, 0x4d, 0x52, 0x2d, 0x82, 0xd9, 0xf4, 0xad, 0x57, 0xf6, 0x2f, 0x94, 0x64, - 0xd1, 0x58, 0x56, 0xf4, 0x17, 0xb2, 0x90, 0x07, 0x68, 0x1c, 0xc7, 0xc9, 0x5a, 0xf5, 0x37, 0xa5, - 0x21, 0xba, 0xcd, 0x9b, 0xe0, 0x06, 0xd6, 0x27, 0x32, 0xfb, 0x63, 0xb1, 0xb1, 0xb0, 0xe1, 0x4d, - 0x06, 0x5d, 0xab, 0xa4, 0x56, 0x2f, 0x6a, 0xee, 0x4c, 0x7e, 0xd1, 0x9d, 0x44, 0xde, 0x08, 0xd7, - 0x0f, 0xc8, 0xad, 0xd6, 0x1b, 0x95, 0xe2, 0x9a, 0x5a, 0xd8, 0xe4, 0x6d, 0x9b, 0x5a, 0xbd, 0xba, - 0xde, 0xd0, 0x36, 0x2a, 0x95, 0x72, 0x65, 0x99, 0x12, 0x73, 0x4d, 0xc2, 0x93, 0x41, 0x86, 0x73, - 0x5a, 0xb9, 0xae, 0x36, 0x4a, 0xd5, 0xca, 0x52, 0x79, 0xb9, 0x60, 0x0c, 0x32, 0x8c, 0xee, 0x57, - 0xae, 0x81, 0xab, 0x38, 0x4e, 0xca, 0xd5, 0x8a, 0x3b, 0xb3, 0x2d, 0x15, 0x2b, 0x25, 0xd5, 0x9d, - 0xc6, 0x5e, 0x50, 0x10, 0x9c, 0xa0, 0xe4, 0x1a, 0x4b, 0xe5, 0xd5, 0xf0, 0x66, 0xd4, 0xc7, 0x33, - 0xca, 0x29, 0xb8, 0x2c, 0xfc, 0xad, 0x5c, 0x39, 0x5b, 0x5c, 0x2d, 0x2f, 0x16, 0xfe, 0x28, 0xa3, - 0x5c, 0x07, 0x57, 0x73, 0x7f, 0xd1, 0x7d, 0xa5, 0x46, 0x79, 0xb1, 0xb1, 0x56, 0xae, 0xad, 0x15, - 0xeb, 0xa5, 0x95, 0xc2, 0x27, 0xc8, 0x7c, 0xc1, 0x37, 0x80, 0x43, 0x6e, 0x99, 0x2f, 0x0a, 0x8f, - 0xe9, 0x45, 0x5e, 0x51, 0x1f, 0xdb, 0x17, 0xf6, 0x78, 0x1b, 0xf6, 0xa3, 0xfe, 0xe8, 0xb0, 0xc8, - 0xa9, 0xd0, 0x2d, 0x09, 0x68, 0x25, 0xd3, 0xa1, 0xfa, 0x10, 0x2a, 0x74, 0x0d, 0x5c, 0x55, 0x51, - 0x29, 0x52, 0x9a, 0x5a, 0xaa, 0x9e, 0x55, 0xb5, 0xc6, 0xb9, 0xe2, 0xea, 0xaa, 0x5a, 0x6f, 0x2c, - 0x95, 0xb5, 0x5a, 0xbd, 0xb0, 0x89, 0xfe, 0x59, 0xf2, 0x57, 0x73, 0x42, 0xd2, 0xfa, 0x6b, 0x29, - 0x69, 0xb3, 0x8e, 0x5d, 0xb5, 0xf9, 0x09, 0xc8, 0x77, 0x1d, 0xdd, 0xd9, 0xed, 0xb2, 0x56, 0xfd, - 0xa8, 0xfe, 0xad, 0x7a, 0xbe, 0x46, 0x32, 0x69, 0x2c, 0x33, 0xfa, 0x8b, 0x4c, 0x92, 0x66, 0x3a, - 0x82, 0x05, 0x1d, 0x63, 0x08, 0x11, 0x9f, 0x06, 0xe4, 0x69, 0x7b, 0xb9, 0xd6, 0x28, 0xae, 0x6a, - 0x6a, 0x71, 0xf1, 0x3e, 0x7f, 0x19, 0x07, 0x2b, 0x27, 0xe0, 0xd8, 0x46, 0xa5, 0xb8, 0xb0, 0xaa, - 0x92, 0xe6, 0x52, 0xad, 0x54, 0xd4, 0x92, 0x2b, 0xf7, 0x5f, 0x24, 0x9b, 0x26, 0xae, 0x05, 0x4d, - 0xf8, 0x76, 0xad, 0x9c, 0x90, 0xfc, 0xbf, 0x21, 0xec, 0x5b, 0x14, 0x68, 0x58, 0x98, 0xd6, 0x68, - 0x71, 0xf8, 0xa2, 0x90, 0x3b, 0x91, 0x10, 0x27, 0xc9, 0xf0, 0xf8, 0xcf, 0x43, 0xe0, 0x71, 0x02, - 0x8e, 0x85, 0xf1, 0x20, 0x6e, 0x45, 0xd1, 0x30, 0x7c, 0x75, 0x12, 0xf2, 0x35, 0xdc, 0xc6, 0x4d, - 0x07, 0xbd, 0x25, 0x64, 0x4c, 0xcc, 0x81, 0xe4, 0xbb, 0xb1, 0x48, 0x46, 0x8b, 0x9b, 0x3e, 0x4b, - 0x3d, 0xd3, 0xe7, 0x18, 0x33, 0x40, 0x4e, 0x64, 0x06, 0x64, 0x53, 0x30, 0x03, 0x72, 0xc3, 0x9b, - 0x01, 0xf9, 0x41, 0x66, 0x00, 0x7a, 0x6d, 0x3e, 0x69, 0x2f, 0x41, 0x45, 0x7d, 0xb8, 0x83, 0xff, - 0xff, 0xca, 0x26, 0xe9, 0x55, 0xfa, 0x72, 0x9c, 0x4c, 0x8b, 0x7f, 0x20, 0xa7, 0xb0, 0xfc, 0xa0, - 0x5c, 0x0b, 0x57, 0x07, 0xef, 0x0d, 0xf5, 0x69, 0xe5, 0x5a, 0xbd, 0x46, 0x46, 0xfc, 0x52, 0x55, - 0xd3, 0x36, 0xd6, 0xe9, 0x1a, 0xf2, 0x49, 0x50, 0x02, 0x2a, 0xda, 0x46, 0x85, 0x8e, 0xef, 0x5b, - 0x3c, 0xf5, 0xa5, 0x72, 0x65, 0xb1, 0xe1, 0xb7, 0x99, 0xca, 0x52, 0xb5, 0xb0, 0xed, 0x4e, 0xd9, - 0x42, 0xd4, 0xdd, 0x01, 0x9a, 0x95, 0x50, 0xac, 0x2c, 0x36, 0xd6, 0x2a, 0xea, 0x5a, 0xb5, 0x52, - 0x2e, 0x91, 0xf4, 0x9a, 0x5a, 0x2f, 0x18, 0xee, 0x40, 0xd3, 0x63, 0x51, 0xd4, 0xd4, 0xa2, 0x56, - 0x5a, 0x51, 0x35, 0x5a, 0xe4, 0xfd, 0xca, 0xf5, 0x70, 0xa6, 0x58, 0xa9, 0xd6, 0xdd, 0x94, 0x62, - 0xe5, 0xbe, 0xfa, 0x7d, 0xeb, 0x6a, 0x63, 0x5d, 0xab, 0x96, 0xd4, 0x5a, 0xcd, 0x6d, 0xa7, 0xcc, - 0xfe, 0x28, 0xb4, 0x95, 0xa7, 0xc2, 0xed, 0x21, 0xd6, 0xd4, 0x3a, 0xd9, 0xb0, 0x5c, 0xab, 0x12, - 0x9f, 0x95, 0x45, 0xb5, 0xb1, 0x52, 0xac, 0x35, 0xca, 0x95, 0x52, 0x75, 0x6d, 0xbd, 0x58, 0x2f, - 0xbb, 0xcd, 0x79, 0x5d, 0xab, 0xd6, 0xab, 0x8d, 0xb3, 0xaa, 0x56, 0x2b, 0x57, 0x2b, 0x05, 0xd3, - 0xad, 0x72, 0xa8, 0xfd, 0x7b, 0xfd, 0xb0, 0xa5, 0x5c, 0x05, 0xa7, 0xbc, 0xf4, 0xd5, 0xaa, 0x2b, - 0xe8, 0x90, 0x45, 0xd2, 0x49, 0xd5, 0x22, 0xf9, 0x57, 0x09, 0xb2, 0x35, 0xc7, 0xea, 0xa0, 0x1f, - 0x0f, 0x3a, 0x98, 0xd3, 0x00, 0x36, 0xd9, 0x7f, 0x74, 0x67, 0x61, 0x6c, 0x5e, 0x16, 0x4a, 0x41, - 0x7f, 0x28, 0xbc, 0x69, 0x12, 0xf4, 0xd9, 0x56, 0x27, 0xc2, 0x56, 0xf9, 0x9e, 0xd8, 0x29, 0x92, - 0x68, 0x42, 0xc9, 0xf4, 0xfd, 0x97, 0x87, 0xd9, 0x16, 0x41, 0x70, 0x32, 0x04, 0x9b, 0x2b, 0x7f, - 0x4f, 0x25, 0xb0, 0x72, 0x39, 0x5c, 0xd6, 0xa3, 0x5c, 0x44, 0xa7, 0x36, 0x95, 0x1f, 0x83, 0x47, - 0x85, 0xd4, 0x5b, 0x5d, 0xab, 0x9e, 0x55, 0x7d, 0x45, 0x5e, 0x2c, 0xd6, 0x8b, 0x85, 0x2d, 0xf4, - 0x59, 0x19, 0xb2, 0x6b, 0xd6, 0x5e, 0xef, 0x5e, 0x95, 0x89, 0x2f, 0x86, 0xd6, 0x42, 0xbd, 0x57, - 0xde, 0x6b, 0x5e, 0x48, 0xec, 0x6b, 0xd1, 0xfb, 0xd2, 0x5f, 0x94, 0x92, 0x88, 0x7d, 0xed, 0xa0, - 0x9b, 0xd1, 0x7f, 0x3f, 0x8c, 0xd8, 0x23, 0x44, 0x8b, 0x95, 0x33, 0x70, 0x3a, 0xf8, 0x50, 0x5e, - 0x54, 0x2b, 0xf5, 0xf2, 0xd2, 0x7d, 0x81, 0x70, 0xcb, 0x9a, 0x90, 0xf8, 0x07, 0x75, 0x63, 0xf1, - 0x33, 0x8d, 0x53, 0x70, 0x3c, 0xf8, 0xb6, 0xac, 0xd6, 0xbd, 0x2f, 0xf7, 0xa3, 0x07, 0x73, 0x30, - 0x43, 0xbb, 0xf5, 0x8d, 0x4e, 0x4b, 0x77, 0x30, 0x7a, 0x42, 0x80, 0xee, 0x0d, 0x70, 0xb4, 0xbc, - 0xbe, 0x54, 0xab, 0x39, 0x96, 0xad, 0x6f, 0xe1, 0x62, 0xab, 0x65, 0x33, 0x69, 0xf5, 0x26, 0xa3, - 0x77, 0x0a, 0xaf, 0xf3, 0xf1, 0x43, 0x09, 0x2d, 0x33, 0x02, 0xf5, 0xaf, 0x08, 0xad, 0xcb, 0x09, - 0x10, 0x4c, 0x86, 0xfe, 0xfd, 0x23, 0x6e, 0x73, 0xd1, 0xb8, 0x6c, 0x9e, 0x79, 0x96, 0x04, 0x53, - 0x75, 0x63, 0x07, 0x3f, 0xdd, 0x32, 0x71, 0x57, 0x99, 0x00, 0x79, 0x79, 0xad, 0x5e, 0x38, 0xe2, - 0x3e, 0xb8, 0x46, 0x55, 0x86, 0x3c, 0xa8, 0x6e, 0x01, 0xee, 0x43, 0xb1, 0x5e, 0x90, 0xdd, 0x87, - 0x35, 0xb5, 0x5e, 0xc8, 0xba, 0x0f, 0x15, 0xb5, 0x5e, 0xc8, 0xb9, 0x0f, 0xeb, 0xab, 0xf5, 0x42, - 0xde, 0x7d, 0x28, 0xd7, 0xea, 0x85, 0x09, 0xf7, 0x61, 0xa1, 0x56, 0x2f, 0x4c, 0xba, 0x0f, 0x67, - 0x6b, 0xf5, 0xc2, 0x94, 0xfb, 0x50, 0xaa, 0xd7, 0x0b, 0xe0, 0x3e, 0xdc, 0x53, 0xab, 0x17, 0xa6, - 0xdd, 0x87, 0x62, 0xa9, 0x5e, 0x98, 0x21, 0x0f, 0x6a, 0xbd, 0x30, 0xeb, 0x3e, 0xd4, 0x6a, 0xf5, - 0xc2, 0x1c, 0xa1, 0x5c, 0xab, 0x17, 0x8e, 0x92, 0xb2, 0xca, 0xf5, 0x42, 0xc1, 0x7d, 0x58, 0xa9, - 0xd5, 0x0b, 0xc7, 0x48, 0xe6, 0x5a, 0xbd, 0xa0, 0x90, 0x42, 0x6b, 0xf5, 0xc2, 0x65, 0x24, 0x4f, - 0xad, 0x5e, 0x38, 0x4e, 0x8a, 0xa8, 0xd5, 0x0b, 0x27, 0x08, 0x1b, 0x6a, 0xbd, 0x70, 0x92, 0xe4, - 0xd1, 0xea, 0x85, 0xcb, 0xc9, 0xa7, 0x4a, 0xbd, 0x70, 0x8a, 0x30, 0xa6, 0xd6, 0x0b, 0x57, 0x90, - 0x07, 0xad, 0x5e, 0x40, 0xe4, 0x53, 0xb1, 0x5e, 0xb8, 0x12, 0x3d, 0x0a, 0xa6, 0x96, 0xb1, 0x43, - 0x41, 0x44, 0x05, 0x90, 0x97, 0xb1, 0x13, 0x36, 0xe3, 0xbf, 0x26, 0xc3, 0xe5, 0x6c, 0xea, 0xb7, - 0x64, 0x5b, 0x3b, 0xab, 0x78, 0x4b, 0x6f, 0x5e, 0x52, 0x1f, 0x70, 0x4d, 0xa8, 0xf0, 0xbe, 0xac, - 0x02, 0xd9, 0x4e, 0xd0, 0x19, 0x91, 0xe7, 0x58, 0x8b, 0xd3, 0x5b, 0x8c, 0x92, 0x83, 0xc5, 0x28, - 0x66, 0x91, 0xfd, 0x53, 0x58, 0xa3, 0xb9, 0xf5, 0xe3, 0x4c, 0xcf, 0xfa, 0xb1, 0xdb, 0x4c, 0x3a, - 0xd8, 0xee, 0x5a, 0xa6, 0xde, 0xae, 0xb1, 0x8d, 0x7b, 0xba, 0xea, 0xd5, 0x9b, 0xac, 0xfc, 0x94, - 0xd7, 0x32, 0xa8, 0x55, 0xf6, 0x94, 0xb8, 0x19, 0x6e, 0x6f, 0x35, 0x23, 0x1a, 0xc9, 0x27, 0xfc, - 0x46, 0x52, 0xe7, 0x1a, 0xc9, 0xdd, 0x07, 0xa0, 0x9d, 0xac, 0xbd, 0x94, 0x87, 0x9b, 0x5a, 0x04, - 0x6e, 0xad, 0xde, 0x72, 0xb5, 0x8c, 0x3e, 0x2b, 0xc1, 0x49, 0xd5, 0xec, 0x67, 0xe1, 0x87, 0x75, - 0xe1, 0x4d, 0x61, 0x68, 0xd6, 0x79, 0x91, 0xde, 0xde, 0xb7, 0xda, 0xfd, 0x69, 0x46, 0x48, 0xf4, - 0x53, 0xbe, 0x44, 0x6b, 0x9c, 0x44, 0xef, 0x1a, 0x9e, 0x74, 0x32, 0x81, 0x56, 0x46, 0xda, 0x01, - 0x65, 0xd1, 0x37, 0xb3, 0xf0, 0x28, 0xea, 0x7b, 0xc3, 0x38, 0xa4, 0xad, 0xac, 0x68, 0xb6, 0x34, - 0xdc, 0x75, 0x74, 0xdb, 0xe1, 0xce, 0x43, 0xf7, 0x4c, 0xa5, 0x32, 0x29, 0x4c, 0xa5, 0xa4, 0x81, - 0x53, 0x29, 0xf4, 0x8e, 0xb0, 0xf9, 0x70, 0x8e, 0xc7, 0xb8, 0xd8, 0xbf, 0xff, 0x8f, 0xab, 0x61, - 0x14, 0xd4, 0xbe, 0x5d, 0xf1, 0xd3, 0x1c, 0xd4, 0x4b, 0x07, 0x2e, 0x21, 0x19, 0xe2, 0x7f, 0x38, - 0x5a, 0x3b, 0x2f, 0x1b, 0xfe, 0xc6, 0x1b, 0x25, 0x85, 0x56, 0xaa, 0x06, 0xfa, 0xa7, 0x27, 0x60, - 0x8a, 0xb4, 0x85, 0x55, 0xc3, 0xbc, 0x80, 0x1e, 0x92, 0x61, 0xa6, 0x82, 0x2f, 0x96, 0xb6, 0xf5, - 0x76, 0x1b, 0x9b, 0x5b, 0x38, 0x6c, 0xb6, 0x9f, 0x82, 0x09, 0xbd, 0xd3, 0xa9, 0x04, 0xfb, 0x0c, - 0xde, 0x2b, 0xeb, 0x7f, 0xbf, 0xd1, 0xb7, 0x91, 0x67, 0x62, 0x1a, 0xb9, 0x5f, 0xee, 0x7c, 0xb8, - 0xcc, 0x88, 0x19, 0xf2, 0x35, 0x30, 0xdd, 0xf4, 0xb2, 0xf8, 0xe7, 0x26, 0xc2, 0x49, 0xe8, 0x6f, - 0x13, 0x75, 0x03, 0x42, 0x85, 0x27, 0x53, 0x0a, 0x3c, 0x62, 0x3b, 0xe4, 0x04, 0x1c, 0xab, 0x57, - 0xab, 0x8d, 0xb5, 0x62, 0xe5, 0xbe, 0xe0, 0xbc, 0xf2, 0x26, 0x7a, 0x79, 0x16, 0xe6, 0x6a, 0x56, - 0x7b, 0x0f, 0x07, 0x30, 0x95, 0x39, 0x87, 0x9c, 0xb0, 0x9c, 0x32, 0xfb, 0xe4, 0xa4, 0x9c, 0x84, - 0xbc, 0x6e, 0x76, 0x2f, 0x62, 0xcf, 0x36, 0x64, 0x6f, 0x0c, 0xc6, 0xf7, 0x87, 0xdb, 0xb1, 0xc6, - 0xc3, 0x78, 0xc7, 0x00, 0x49, 0xf2, 0x5c, 0x45, 0x00, 0x79, 0x06, 0x66, 0xba, 0x74, 0xb3, 0xb0, - 0x1e, 0xda, 0x13, 0xe6, 0xd2, 0x08, 0x8b, 0x74, 0xb7, 0x5a, 0x66, 0x2c, 0x92, 0x37, 0xf4, 0x90, - 0xdf, 0xfc, 0x37, 0x38, 0x88, 0x8b, 0x07, 0x61, 0x2c, 0x19, 0xc8, 0xaf, 0x1c, 0xf5, 0x0c, 0xef, - 0x14, 0x1c, 0x67, 0xad, 0xb6, 0x51, 0x5a, 0x29, 0xae, 0xae, 0xaa, 0x95, 0x65, 0xb5, 0x51, 0x5e, - 0xa4, 0x5b, 0x15, 0x41, 0x4a, 0xb1, 0x5e, 0x57, 0xd7, 0xd6, 0xeb, 0xb5, 0x86, 0xfa, 0xb4, 0x92, - 0xaa, 0x2e, 0x12, 0x97, 0x38, 0x72, 0xa6, 0xc5, 0x73, 0x5e, 0x2c, 0x56, 0x6a, 0xe7, 0x54, 0xad, - 0xb0, 0x7d, 0xa6, 0x08, 0xd3, 0xa1, 0x7e, 0xde, 0xe5, 0x6e, 0x11, 0x6f, 0xea, 0xbb, 0x6d, 0x66, - 0xab, 0x15, 0x8e, 0xb8, 0xdc, 0x11, 0xd9, 0x54, 0xcd, 0xf6, 0xa5, 0x42, 0x46, 0x29, 0xc0, 0x4c, - 0xb8, 0x4b, 0x2f, 0x48, 0xe8, 0xad, 0x57, 0xc1, 0xd4, 0x39, 0xcb, 0xbe, 0x40, 0xfc, 0xb8, 0xd0, - 0x7b, 0x68, 0x5c, 0x13, 0xef, 0x84, 0x68, 0x68, 0x60, 0x7f, 0xa5, 0xb8, 0xb7, 0x80, 0x47, 0x6d, - 0x7e, 0xe0, 0x29, 0xd0, 0x6b, 0x60, 0xfa, 0xa2, 0x97, 0x3b, 0x68, 0xe9, 0xa1, 0x24, 0xf4, 0xdf, - 0xc5, 0xf6, 0xff, 0x07, 0x17, 0x99, 0xfe, 0xfe, 0xf4, 0x5b, 0x24, 0xc8, 0x2f, 0x63, 0xa7, 0xd8, - 0x6e, 0x87, 0xe5, 0xf6, 0x62, 0xe1, 0x93, 0x3d, 0x5c, 0x25, 0x8a, 0xed, 0x76, 0x74, 0xa3, 0x0a, - 0x09, 0xc8, 0xf3, 0x40, 0xe7, 0xd2, 0x04, 0xfd, 0xe6, 0x06, 0x14, 0x98, 0xbe, 0xc4, 0x3e, 0x24, - 0xfb, 0x7b, 0xdc, 0x0f, 0x87, 0xac, 0x9c, 0xc7, 0x07, 0x31, 0x6d, 0x32, 0xf1, 0x7b, 0xe5, 0x5e, - 0x3e, 0xe5, 0x5e, 0x98, 0xd8, 0xed, 0xe2, 0x92, 0xde, 0xc5, 0x84, 0xb7, 0xde, 0x9a, 0x56, 0xcf, - 0xdf, 0x8f, 0x9b, 0xce, 0x7c, 0x79, 0xc7, 0x35, 0xa8, 0x37, 0x68, 0x46, 0x3f, 0x4c, 0x0c, 0x7b, - 0xd7, 0x3c, 0x0a, 0xee, 0xa4, 0xe4, 0xa2, 0xe1, 0x6c, 0x97, 0xb6, 0x75, 0x87, 0xad, 0x6d, 0xfb, - 0xef, 0xe8, 0xf9, 0x43, 0xc0, 0x19, 0xbb, 0x17, 0x1c, 0x79, 0x40, 0x30, 0x31, 0x88, 0x23, 0xd8, - 0xc0, 0x1d, 0x06, 0xc4, 0x7f, 0x90, 0x20, 0x5b, 0xed, 0x60, 0x53, 0xf8, 0x34, 0x8c, 0x2f, 0x5b, - 0xa9, 0x47, 0xb6, 0x0f, 0x89, 0x7b, 0x87, 0xf9, 0x95, 0x76, 0x4b, 0x8e, 0x90, 0xec, 0xcd, 0x90, - 0x35, 0xcc, 0x4d, 0x8b, 0x19, 0xa6, 0x57, 0x46, 0x6c, 0x02, 0x95, 0xcd, 0x4d, 0x4b, 0x23, 0x19, - 0x45, 0x1d, 0xc3, 0xe2, 0xca, 0x4e, 0x5f, 0xdc, 0xdf, 0x9a, 0x84, 0x3c, 0x55, 0x67, 0xf4, 0x22, - 0x19, 0xe4, 0x62, 0xab, 0x15, 0x21, 0x78, 0x69, 0x9f, 0xe0, 0x2d, 0xf2, 0x9b, 0x8f, 0x89, 0xff, - 0xce, 0x07, 0x33, 0x11, 0xec, 0xdb, 0x59, 0x93, 0x2a, 0xb6, 0x5a, 0xd1, 0x3e, 0xa8, 0x7e, 0x81, - 0x12, 0x5f, 0x60, 0xb8, 0x85, 0xcb, 0x62, 0x2d, 0x3c, 0xf1, 0x40, 0x10, 0xc9, 0x5f, 0xfa, 0x10, - 0xfd, 0x93, 0x04, 0x13, 0xab, 0x46, 0xd7, 0x71, 0xb1, 0x29, 0x8a, 0x60, 0x73, 0x15, 0x4c, 0x79, - 0xa2, 0x71, 0xbb, 0x3c, 0xb7, 0x3f, 0x0f, 0x12, 0xd0, 0x6b, 0xc2, 0xe8, 0xdc, 0xc3, 0xa3, 0xf3, - 0xc4, 0xf8, 0xda, 0x33, 0x2e, 0xa2, 0x4f, 0x19, 0x04, 0xc5, 0x4a, 0xbd, 0xc5, 0xfe, 0x8e, 0x2f, - 0xf0, 0x35, 0x4e, 0xe0, 0xb7, 0x0d, 0x53, 0x64, 0xfa, 0x42, 0xff, 0x9c, 0x04, 0xe0, 0x96, 0xcd, - 0x8e, 0x72, 0x3d, 0x86, 0x3b, 0xa0, 0x1d, 0x23, 0xdd, 0x97, 0x87, 0xa5, 0xbb, 0xc6, 0x4b, 0xf7, - 0x27, 0x07, 0x57, 0x35, 0xee, 0xc8, 0x96, 0x52, 0x00, 0xd9, 0xf0, 0x45, 0xeb, 0x3e, 0xa2, 0xb7, - 0xf8, 0x42, 0x5d, 0xe7, 0x84, 0x7a, 0xc7, 0x90, 0x25, 0xa5, 0x2f, 0xd7, 0xbf, 0x94, 0x60, 0xa2, - 0x86, 0x1d, 0xb7, 0x9b, 0x44, 0x67, 0x45, 0x7a, 0xf8, 0x50, 0xdb, 0x96, 0x04, 0xdb, 0xf6, 0x77, - 0x33, 0xa2, 0x81, 0x5e, 0x02, 0xc9, 0x30, 0x9e, 0x22, 0x16, 0x0f, 0x1e, 0x16, 0x0a, 0xf4, 0x32, - 0x88, 0x5a, 0xfa, 0xd2, 0x7d, 0x93, 0xe4, 0x6f, 0xcc, 0xf3, 0x27, 0x2d, 0xc2, 0x66, 0x71, 0x66, - 0xbf, 0x59, 0x2c, 0x7e, 0xd2, 0x22, 0x5c, 0xc7, 0xe8, 0x5d, 0xe9, 0xc4, 0xc6, 0xc6, 0x08, 0x36, - 0x8c, 0x87, 0x91, 0xd7, 0x33, 0x65, 0xc8, 0xb3, 0x95, 0xe5, 0xbb, 0xe2, 0x57, 0x96, 0x07, 0x4f, - 0x2d, 0xde, 0x3d, 0x84, 0x29, 0x17, 0xb7, 0xdc, 0xeb, 0xb3, 0x21, 0x85, 0xd8, 0xb8, 0x09, 0x72, - 0x24, 0x12, 0x25, 0x1b, 0xe7, 0x82, 0xbd, 0x7e, 0x8f, 0x84, 0xea, 0x7e, 0xd5, 0x68, 0xa6, 0xc4, - 0x28, 0x8c, 0x60, 0x85, 0x78, 0x18, 0x14, 0x7e, 0x53, 0x01, 0x58, 0xdf, 0x3d, 0xdf, 0x36, 0xba, - 0xdb, 0x86, 0xb9, 0x85, 0xbe, 0x9a, 0x81, 0x19, 0xf6, 0x4a, 0x03, 0x2a, 0xc6, 0x9a, 0x7f, 0x91, - 0x46, 0x41, 0x01, 0xe4, 0x5d, 0xdb, 0x60, 0xcb, 0x00, 0xee, 0xa3, 0x72, 0xa7, 0xef, 0xc8, 0x93, - 0xed, 0x39, 0x4a, 0xef, 0x8a, 0x21, 0xe0, 0x60, 0x3e, 0x54, 0x7a, 0xe0, 0xd0, 0x13, 0x8e, 0x9a, - 0x99, 0xe3, 0xa3, 0x66, 0x72, 0xe7, 0xeb, 0xf2, 0x3d, 0xe7, 0xeb, 0x5c, 0x1c, 0xbb, 0xc6, 0xd3, - 0x31, 0x71, 0x2e, 0x95, 0x35, 0xf2, 0x8c, 0x3e, 0x10, 0x4c, 0x55, 0x2c, 0x41, 0x3b, 0x37, 0x41, - 0x45, 0xaf, 0x82, 0xa9, 0xfb, 0x2d, 0xc3, 0x24, 0x5b, 0x11, 0xcc, 0x79, 0x38, 0x48, 0x40, 0x1f, - 0x11, 0x8e, 0x83, 0x15, 0x12, 0x49, 0xec, 0xa4, 0x83, 0x71, 0x20, 0xf9, 0x1c, 0x84, 0xf6, 0xf3, - 0xe2, 0x3a, 0xcc, 0x41, 0xf4, 0x93, 0xa9, 0xde, 0xce, 0x10, 0xcb, 0x2b, 0x0a, 0xcc, 0x79, 0xe7, - 0x0a, 0xab, 0x0b, 0xf7, 0xa8, 0xa5, 0x7a, 0x01, 0xef, 0x3f, 0x6b, 0x48, 0x4e, 0x15, 0xd2, 0x13, - 0x84, 0xc1, 0x12, 0x0a, 0xfa, 0x9f, 0x12, 0xe4, 0x99, 0x75, 0x70, 0xd7, 0x01, 0x21, 0x44, 0xaf, - 0x18, 0x06, 0x92, 0xd8, 0xe3, 0xdd, 0x9f, 0x4c, 0x0a, 0xc0, 0x08, 0xec, 0x81, 0xfb, 0x52, 0x03, - 0x00, 0xfd, 0x8b, 0x04, 0x59, 0xd7, 0x6a, 0x11, 0x3b, 0x3c, 0xfb, 0x09, 0x61, 0xb7, 0xd5, 0x90, - 0x00, 0x5c, 0xf2, 0x11, 0xfa, 0xbd, 0x00, 0x53, 0x1d, 0x9a, 0xd1, 0x3f, 0xba, 0x7d, 0x9d, 0x40, - 0xdf, 0x81, 0xb5, 0xe0, 0x37, 0xf4, 0x2e, 0x21, 0xd7, 0xd7, 0x78, 0x7e, 0x92, 0xc1, 0xa1, 0x8e, - 0xe2, 0x9c, 0xed, 0x26, 0xfa, 0xbe, 0x04, 0xa0, 0xe1, 0xae, 0xd5, 0xde, 0xc3, 0x1b, 0xb6, 0x81, - 0xae, 0x0c, 0x00, 0x60, 0xcd, 0x3e, 0x13, 0x34, 0xfb, 0x4f, 0x87, 0x05, 0xbf, 0xcc, 0x0b, 0xfe, - 0xf1, 0xd1, 0x9a, 0xe7, 0x11, 0x8f, 0x10, 0xff, 0x53, 0x61, 0x82, 0xc9, 0x91, 0x99, 0x80, 0x62, - 0xc2, 0xf7, 0x7e, 0x42, 0xef, 0xf5, 0x45, 0x7f, 0x0f, 0x27, 0xfa, 0x27, 0x25, 0xe6, 0x28, 0x19, - 0x00, 0xa5, 0x21, 0x00, 0x38, 0x0a, 0xd3, 0x1e, 0x00, 0x1b, 0x5a, 0xb9, 0x80, 0xd1, 0xdb, 0x65, - 0xb2, 0x5b, 0x4e, 0xc7, 0xa2, 0x83, 0xf7, 0x34, 0x5f, 0x17, 0x9e, 0x9b, 0x87, 0xe4, 0xe1, 0x97, - 0x9f, 0x12, 0x40, 0x7f, 0x2a, 0x34, 0x19, 0x17, 0x60, 0xe8, 0x91, 0xd2, 0x5f, 0x9d, 0x51, 0x61, - 0x96, 0x33, 0x22, 0x94, 0x53, 0x70, 0x9c, 0x4b, 0xa0, 0xe3, 0x5d, 0xab, 0x70, 0x44, 0x41, 0x70, - 0x92, 0xfb, 0xc2, 0x5e, 0x70, 0xab, 0x90, 0x41, 0x7f, 0xfe, 0xd9, 0x8c, 0xbf, 0x3c, 0xf3, 0xee, - 0x2c, 0x5b, 0x18, 0xfb, 0x18, 0x1f, 0x2d, 0xac, 0x69, 0x99, 0x0e, 0x7e, 0x20, 0xe4, 0xad, 0xe0, - 0x27, 0xc4, 0x5a, 0x0d, 0xa7, 0x60, 0xc2, 0xb1, 0xc3, 0x1e, 0x0c, 0xde, 0x6b, 0x58, 0xb1, 0x72, - 0xbc, 0x62, 0x55, 0xe0, 0x8c, 0x61, 0x36, 0xdb, 0xbb, 0x2d, 0xac, 0xe1, 0xb6, 0xee, 0xca, 0xb0, - 0x5b, 0xec, 0x2e, 0xe2, 0x0e, 0x36, 0x5b, 0xd8, 0x74, 0x28, 0x9f, 0xde, 0x69, 0x25, 0x81, 0x9c, - 0xbc, 0x32, 0xde, 0xc9, 0x2b, 0xe3, 0x63, 0xfa, 0xad, 0xb8, 0xc6, 0x2c, 0xcf, 0xdd, 0x06, 0x40, - 0xeb, 0x76, 0xd6, 0xc0, 0x17, 0x99, 0x1a, 0x5e, 0xd1, 0xb3, 0x48, 0x57, 0xf5, 0x33, 0x68, 0xa1, - 0xcc, 0xe8, 0xcb, 0xbe, 0xfa, 0xdd, 0xcd, 0xa9, 0xdf, 0x4d, 0x82, 0x2c, 0x24, 0xd3, 0xba, 0xce, - 0x10, 0x5a, 0x37, 0x0b, 0x53, 0xc1, 0xde, 0xad, 0xac, 0x5c, 0x01, 0x27, 0x3c, 0x6f, 0xd0, 0x8a, - 0xaa, 0x2e, 0xd6, 0x1a, 0x1b, 0xeb, 0xcb, 0x5a, 0x71, 0x51, 0x2d, 0x80, 0xab, 0x9f, 0x54, 0x2f, - 0x7d, 0x27, 0xce, 0x2c, 0xfa, 0xbc, 0x04, 0x39, 0x72, 0xd4, 0x0e, 0xfd, 0xec, 0x88, 0x34, 0xa7, - 0xcb, 0xf9, 0xbe, 0xf8, 0xe3, 0xae, 0x78, 0x14, 0x6f, 0x26, 0x4c, 0xc2, 0xd5, 0x81, 0xa2, 0x78, - 0xc7, 0x10, 0x4a, 0x7f, 0xe2, 0xe2, 0x36, 0xc9, 0xda, 0xb6, 0x75, 0xf1, 0x47, 0xb9, 0x49, 0xba, - 0xf5, 0x3f, 0xe4, 0x26, 0xd9, 0x87, 0x85, 0xb1, 0x37, 0xc9, 0x3e, 0xed, 0x2e, 0xa6, 0x99, 0xa2, - 0x67, 0xe4, 0xfc, 0xf9, 0xdf, 0xb3, 0xa4, 0x03, 0x6d, 0x55, 0x15, 0x61, 0xd6, 0x30, 0x1d, 0x6c, - 0x9b, 0x7a, 0x7b, 0xa9, 0xad, 0x6f, 0x79, 0xf6, 0x69, 0xef, 0xfe, 0x44, 0x39, 0x94, 0x47, 0xe3, - 0xff, 0x50, 0x4e, 0x03, 0x38, 0x78, 0xa7, 0xd3, 0xd6, 0x9d, 0x40, 0xf5, 0x42, 0x29, 0x61, 0xed, - 0xcb, 0xf2, 0xda, 0x77, 0x0b, 0x5c, 0x46, 0x41, 0xab, 0x5f, 0xea, 0xe0, 0x0d, 0xd3, 0xf8, 0xb9, - 0x5d, 0x12, 0x5c, 0x92, 0xea, 0x68, 0xbf, 0x4f, 0xdc, 0x86, 0x4d, 0xbe, 0x67, 0xc3, 0xe6, 0x1f, - 0x84, 0x83, 0x56, 0x78, 0xad, 0x7e, 0x40, 0xd0, 0x0a, 0xbf, 0xa5, 0xc9, 0x3d, 0x2d, 0xcd, 0x5f, - 0x46, 0xc9, 0x0a, 0x2c, 0xa3, 0x84, 0x51, 0xc9, 0x09, 0x2e, 0x41, 0xbe, 0x5a, 0x28, 0x2a, 0x46, - 0x5c, 0x35, 0xc6, 0xb0, 0xc4, 0x2d, 0xc3, 0x1c, 0x2d, 0x7a, 0xc1, 0xb2, 0x2e, 0xec, 0xe8, 0xf6, - 0x05, 0x64, 0x1f, 0x48, 0x15, 0x63, 0x77, 0x8b, 0x22, 0xb7, 0x40, 0x3f, 0x25, 0x3c, 0x67, 0xe0, - 0xc4, 0xe5, 0xf1, 0x3c, 0x9e, 0xed, 0xa2, 0x37, 0x08, 0x4d, 0x21, 0x44, 0x18, 0x4c, 0x1f, 0xd7, - 0x3f, 0xf6, 0x71, 0xf5, 0x3a, 0xfa, 0xf0, 0x4a, 0xfb, 0x28, 0x71, 0x45, 0x5f, 0x19, 0x0e, 0x3b, - 0x8f, 0xaf, 0x21, 0xb0, 0x2b, 0x80, 0x7c, 0xc1, 0x77, 0xee, 0x71, 0x1f, 0xc3, 0x15, 0xca, 0xa6, - 0x87, 0x66, 0x04, 0xcb, 0x63, 0x41, 0xf3, 0x38, 0xcf, 0x42, 0xb5, 0x93, 0x2a, 0xa6, 0x5f, 0x12, - 0xde, 0xc1, 0xea, 0x2b, 0x20, 0xca, 0xdd, 0x78, 0x5a, 0xa5, 0xd8, 0xf6, 0x97, 0x38, 0x9b, 0xe9, - 0xa3, 0xf9, 0xbc, 0x1c, 0x4c, 0x79, 0x61, 0x45, 0xc8, 0xad, 0x37, 0x3e, 0x86, 0x27, 0x21, 0xdf, - 0xb5, 0x76, 0xed, 0x26, 0x66, 0x7b, 0x8a, 0xec, 0x6d, 0x88, 0xfd, 0xaf, 0x81, 0xe3, 0xf9, 0x3e, - 0x93, 0x21, 0x9b, 0xd8, 0x64, 0x88, 0x36, 0x48, 0xe3, 0x06, 0xf8, 0xe7, 0x0b, 0x87, 0x2a, 0xe7, - 0x30, 0xab, 0x61, 0xe7, 0x91, 0x38, 0xc6, 0x7f, 0x50, 0x68, 0x77, 0x65, 0x40, 0x4d, 0x92, 0xa9, - 0x5c, 0x75, 0x08, 0x43, 0xf5, 0x4a, 0xb8, 0xdc, 0xcb, 0xc1, 0x2c, 0x54, 0x62, 0x91, 0x6e, 0x68, - 0xab, 0x05, 0x19, 0x3d, 0x33, 0x0b, 0x05, 0xca, 0x5a, 0xd5, 0x37, 0xd6, 0xd0, 0x8b, 0x33, 0x87, - 0x6d, 0x91, 0x46, 0x4f, 0x31, 0x3f, 0x23, 0x89, 0x86, 0x43, 0xe5, 0x04, 0x1f, 0xd4, 0x2e, 0x42, - 0x93, 0x86, 0x68, 0x66, 0x31, 0xca, 0x87, 0x7e, 0x3b, 0x23, 0x12, 0x5d, 0x55, 0x8c, 0xc5, 0xf4, - 0x7b, 0xa5, 0x2f, 0x64, 0xbd, 0xe8, 0x50, 0x4b, 0xb6, 0xb5, 0xb3, 0x61, 0xb7, 0xd1, 0xff, 0x29, - 0x14, 0xbc, 0x3a, 0xc2, 0xfc, 0x97, 0xa2, 0xcd, 0x7f, 0xb2, 0x64, 0xdc, 0x0e, 0xf6, 0xaa, 0xda, - 0x43, 0x0c, 0xdf, 0xca, 0xf5, 0x30, 0xa7, 0xb7, 0x5a, 0xeb, 0xfa, 0x16, 0x2e, 0xb9, 0xf3, 0x6a, - 0xd3, 0x61, 0x91, 0x63, 0x7a, 0x52, 0x63, 0xbb, 0x22, 0xf1, 0x75, 0x50, 0x0e, 0x24, 0x26, 0x9f, - 0xb1, 0x0c, 0x6f, 0xee, 0x90, 0xd0, 0xdc, 0xd6, 0x83, 0x38, 0x56, 0xec, 0x4d, 0xd0, 0x77, 0x49, - 0x80, 0xef, 0xf4, 0x35, 0xeb, 0xf7, 0x25, 0x98, 0x70, 0xe5, 0x5d, 0x6c, 0xb5, 0xd0, 0xa3, 0xb9, - 0x70, 0x6f, 0x91, 0xde, 0x63, 0xcf, 0x11, 0x76, 0xdb, 0xf3, 0x6a, 0x48, 0xe9, 0x47, 0x60, 0x12, - 0x08, 0x51, 0xe2, 0x84, 0x28, 0xe6, 0x9d, 0x17, 0x5b, 0x44, 0xfa, 0xe2, 0xfb, 0x84, 0x04, 0xb3, - 0xde, 0x3c, 0x62, 0x09, 0x3b, 0xcd, 0x6d, 0x74, 0x9b, 0xe8, 0x42, 0x13, 0x6b, 0x69, 0xfe, 0x9e, - 0x6c, 0x1b, 0xfd, 0x20, 0x93, 0x50, 0xe5, 0xb9, 0x92, 0x23, 0x56, 0xe9, 0x12, 0xe9, 0x62, 0x1c, - 0xc1, 0xf4, 0x85, 0xf9, 0x65, 0x09, 0xa0, 0x6e, 0xf9, 0x73, 0xdd, 0x03, 0x48, 0xf2, 0x85, 0xc2, - 0xdb, 0xb5, 0xac, 0xe2, 0x41, 0xb1, 0xc9, 0x7b, 0x0e, 0x41, 0xe7, 0xa3, 0x41, 0x25, 0x8d, 0xa5, - 0xad, 0x4f, 0x2d, 0xee, 0x76, 0xda, 0x46, 0x53, 0x77, 0x7a, 0x3d, 0xe6, 0xa2, 0xc5, 0x4b, 0xae, - 0x84, 0x4c, 0x64, 0x14, 0xfa, 0x65, 0x44, 0xc8, 0x92, 0x86, 0x21, 0x91, 0xbc, 0x30, 0x24, 0x82, - 0x5e, 0x30, 0x03, 0x88, 0x8f, 0x41, 0x3d, 0x65, 0x38, 0x5a, 0xed, 0x60, 0x73, 0xc1, 0xc6, 0x7a, - 0xab, 0x69, 0xef, 0xee, 0x9c, 0xef, 0x86, 0xdd, 0x3d, 0xe3, 0x75, 0x34, 0xb4, 0x74, 0x2c, 0x71, - 0x4b, 0xc7, 0xe8, 0x97, 0x64, 0xd1, 0xa0, 0x38, 0xa1, 0x0d, 0x8e, 0x10, 0x0f, 0x43, 0x0c, 0x75, - 0x89, 0x9c, 0x94, 0x7a, 0x56, 0x89, 0xb3, 0x49, 0x56, 0x89, 0xdf, 0x28, 0x14, 0x62, 0x47, 0xa8, - 0x5e, 0x63, 0xf1, 0x35, 0x9b, 0xab, 0x61, 0x27, 0x02, 0xde, 0xeb, 0x60, 0xf6, 0x7c, 0xf0, 0xc5, - 0x87, 0x98, 0x4f, 0xec, 0xe3, 0x01, 0xfa, 0xa6, 0xa4, 0x2b, 0x30, 0x3c, 0x0b, 0x11, 0xe8, 0xfa, - 0x08, 0x4a, 0x22, 0x6e, 0x66, 0x89, 0x96, 0x53, 0x62, 0xcb, 0x4f, 0x1f, 0x85, 0x8f, 0x48, 0x30, - 0x4d, 0x2e, 0xba, 0x5c, 0xb8, 0x44, 0xce, 0x2d, 0x0a, 0x1a, 0x25, 0xcf, 0x0b, 0x8b, 0x59, 0x81, - 0x6c, 0xdb, 0x30, 0x2f, 0x78, 0xfe, 0x81, 0xee, 0x73, 0x70, 0x6d, 0x9a, 0xd4, 0xe7, 0xda, 0x34, - 0x7f, 0x9f, 0xc2, 0x2f, 0xf7, 0x40, 0xf7, 0xf8, 0x0e, 0x24, 0x97, 0xbe, 0x18, 0xff, 0x2e, 0x0b, - 0xf9, 0x1a, 0xd6, 0xed, 0xe6, 0x36, 0x7a, 0xb7, 0xd4, 0x77, 0xaa, 0x30, 0xc9, 0x4f, 0x15, 0x96, - 0x60, 0x62, 0xd3, 0x68, 0x3b, 0xd8, 0xa6, 0x3e, 0xd3, 0xe1, 0xae, 0x9d, 0x36, 0xf1, 0x85, 0xb6, - 0xd5, 0xbc, 0x30, 0xcf, 0x4c, 0xf7, 0x79, 0x2f, 0xcc, 0xe6, 0xfc, 0x12, 0xf9, 0x49, 0xf3, 0x7e, - 0x76, 0x0d, 0xc2, 0xae, 0x65, 0x3b, 0x51, 0x37, 0x28, 0x44, 0x50, 0xa9, 0x59, 0xb6, 0xa3, 0xd1, - 0x1f, 0x5d, 0x98, 0x37, 0x77, 0xdb, 0xed, 0x3a, 0x7e, 0xc0, 0xf1, 0xa6, 0x6d, 0xde, 0xbb, 0x6b, - 0x2c, 0x5a, 0x9b, 0x9b, 0x5d, 0x4c, 0x17, 0x0d, 0x72, 0x1a, 0x7b, 0x53, 0x8e, 0x43, 0xae, 0x6d, - 0xec, 0x18, 0x74, 0xa2, 0x91, 0xd3, 0xe8, 0x8b, 0x72, 0x23, 0x14, 0x82, 0x39, 0x0e, 0x65, 0xf4, - 0x54, 0x9e, 0x34, 0xcd, 0x7d, 0xe9, 0xae, 0xce, 0x5c, 0xc0, 0x97, 0xba, 0xa7, 0x26, 0xc8, 0x77, - 0xf2, 0xcc, 0x1f, 0x50, 0x11, 0xd9, 0xef, 0xa0, 0x12, 0x8f, 0x9e, 0xc1, 0xda, 0xb8, 0x69, 0xd9, - 0x2d, 0x4f, 0x36, 0xd1, 0x13, 0x0c, 0x96, 0x2f, 0xd9, 0x2e, 0x45, 0xdf, 0xc2, 0xd3, 0xd7, 0xb4, - 0x77, 0xe4, 0xdd, 0x6e, 0xd3, 0x2d, 0xfa, 0x9c, 0xe1, 0x6c, 0xaf, 0x61, 0x47, 0x47, 0x7f, 0x27, - 0xf7, 0xd5, 0xb8, 0xe9, 0xff, 0x4f, 0xe3, 0x06, 0x68, 0x1c, 0x0d, 0xa0, 0xe4, 0xec, 0xda, 0xa6, - 0x2b, 0x47, 0x16, 0xb2, 0x34, 0x94, 0xa2, 0xdc, 0x01, 0x57, 0x04, 0x6f, 0xde, 0x52, 0xe9, 0x22, - 0x9b, 0xb6, 0x4e, 0x91, 0xec, 0xd1, 0x19, 0x94, 0x75, 0xb8, 0x96, 0x7e, 0x5c, 0xa9, 0xaf, 0xad, - 0xae, 0x18, 0x5b, 0xdb, 0x6d, 0x63, 0x6b, 0xdb, 0xe9, 0x96, 0xcd, 0xae, 0x83, 0xf5, 0x56, 0x75, - 0x53, 0xa3, 0x77, 0x9f, 0x00, 0xa1, 0x23, 0x92, 0x95, 0xf7, 0xa9, 0x16, 0x1b, 0xdd, 0xc2, 0x9a, - 0x12, 0xd1, 0x52, 0x9e, 0xe4, 0xb6, 0x94, 0xee, 0x6e, 0xdb, 0xc7, 0xf4, 0xaa, 0x1e, 0x4c, 0x03, - 0x55, 0xdf, 0x6d, 0x93, 0xe6, 0x42, 0x32, 0x27, 0x1d, 0xe7, 0x62, 0x38, 0x49, 0xbf, 0xd9, 0xfc, - 0x3f, 0x79, 0xc8, 0x2d, 0xdb, 0x7a, 0x67, 0x1b, 0x3d, 0x33, 0xd4, 0x3f, 0x8f, 0xaa, 0x4d, 0xf8, - 0xda, 0x29, 0x0d, 0xd2, 0x4e, 0x79, 0x80, 0x76, 0x66, 0x43, 0xda, 0x19, 0xbd, 0xa8, 0x7c, 0x06, - 0x66, 0x9a, 0x56, 0xbb, 0x8d, 0x9b, 0xae, 0x3c, 0xca, 0x2d, 0xb2, 0x9a, 0x33, 0xa5, 0x71, 0x69, - 0x24, 0x14, 0x31, 0x76, 0x6a, 0x74, 0x0d, 0x9d, 0x2a, 0x7d, 0x90, 0x80, 0x5e, 0x2c, 0x41, 0x56, - 0x6d, 0x6d, 0x61, 0x6e, 0x9d, 0x3d, 0x13, 0x5a, 0x67, 0x3f, 0x09, 0x79, 0x47, 0xb7, 0xb7, 0xb0, - 0xe3, 0xad, 0x13, 0xd0, 0x37, 0x3f, 0x42, 0xb2, 0x1c, 0x8a, 0x90, 0xfc, 0x93, 0x90, 0x75, 0x65, - 0xc6, 0xdc, 0xc8, 0xaf, 0xed, 0x07, 0x3f, 0x91, 0xfd, 0xbc, 0x5b, 0xe2, 0xbc, 0x5b, 0x6b, 0x8d, - 0xfc, 0xd0, 0x8b, 0x75, 0x6e, 0x1f, 0xd6, 0xe4, 0x1a, 0xc7, 0xa6, 0x65, 0x96, 0x77, 0xf4, 0x2d, - 0xcc, 0xaa, 0x19, 0x24, 0x78, 0x5f, 0xd5, 0x1d, 0xeb, 0x7e, 0x83, 0x05, 0x2b, 0x0e, 0x12, 0xdc, - 0x2a, 0x6c, 0x1b, 0xad, 0x16, 0x36, 0x59, 0xcb, 0x66, 0x6f, 0x67, 0x4e, 0x43, 0xd6, 0xe5, 0xc1, - 0xd5, 0x1f, 0xd7, 0x58, 0x28, 0x1c, 0x51, 0x66, 0xdc, 0x66, 0x45, 0x1b, 0x6f, 0x21, 0xc3, 0xaf, - 0xa9, 0x8a, 0xb8, 0xed, 0xd0, 0xca, 0xf5, 0x6f, 0x5c, 0x8f, 0x83, 0x9c, 0x69, 0xb5, 0xf0, 0xc0, - 0x41, 0x88, 0xe6, 0x52, 0x9e, 0x08, 0x39, 0xdc, 0x72, 0x7b, 0x05, 0x99, 0x64, 0x3f, 0x1d, 0x2f, - 0x4b, 0x8d, 0x66, 0x4e, 0xe6, 0x1b, 0xd4, 0x8f, 0xdb, 0xf4, 0x1b, 0xe0, 0xaf, 0x4c, 0xc0, 0x51, - 0xda, 0x07, 0xd4, 0x76, 0xcf, 0xbb, 0xa4, 0xce, 0x63, 0xf4, 0x70, 0xff, 0x81, 0xeb, 0x28, 0xaf, - 0xec, 0xc7, 0x21, 0xd7, 0xdd, 0x3d, 0xef, 0x1b, 0xa1, 0xf4, 0x25, 0xdc, 0x74, 0xa5, 0x91, 0x0c, - 0x67, 0xf2, 0xb0, 0xc3, 0x19, 0x37, 0x34, 0xc9, 0x5e, 0xe3, 0x0f, 0x06, 0x32, 0x7a, 0x00, 0xc2, - 0x1b, 0xc8, 0xfa, 0x0d, 0x43, 0xa7, 0x60, 0x42, 0xdf, 0x74, 0xb0, 0x1d, 0x98, 0x89, 0xec, 0xd5, - 0x1d, 0x2a, 0xcf, 0xe3, 0x4d, 0xcb, 0x76, 0xc5, 0x32, 0x45, 0x87, 0x4a, 0xef, 0x3d, 0xd4, 0x72, - 0x81, 0xdb, 0x21, 0xbb, 0x09, 0x8e, 0x99, 0xd6, 0x22, 0xee, 0x30, 0x39, 0x53, 0x14, 0x67, 0x49, - 0x0b, 0xd8, 0xff, 0x61, 0x5f, 0x57, 0x32, 0xb7, 0xbf, 0x2b, 0x41, 0x9f, 0x4e, 0x3a, 0x67, 0xee, - 0x01, 0x7a, 0x64, 0x16, 0x9a, 0xf2, 0x14, 0x98, 0x69, 0x31, 0x17, 0xad, 0xa6, 0xe1, 0xb7, 0x92, - 0xc8, 0xff, 0xb8, 0xcc, 0x81, 0x22, 0x65, 0xc3, 0x8a, 0xb4, 0x0c, 0x93, 0xe4, 0xa8, 0xb2, 0xab, - 0x49, 0xb9, 0x1e, 0x97, 0x78, 0x32, 0xad, 0xf3, 0x2b, 0x15, 0x12, 0xdb, 0x7c, 0x89, 0xfd, 0xa2, - 0xf9, 0x3f, 0x27, 0x9b, 0x7d, 0xc7, 0x4b, 0x28, 0xfd, 0xe6, 0xf8, 0x3b, 0x79, 0xb8, 0xa2, 0x64, - 0x5b, 0xdd, 0x2e, 0x39, 0x03, 0xd3, 0xdb, 0x30, 0x5f, 0x2f, 0x71, 0x77, 0x25, 0x3c, 0xa2, 0x9b, - 0x5f, 0xbf, 0x06, 0x35, 0xbe, 0xa6, 0xf1, 0x75, 0xe1, 0x20, 0x2f, 0xfe, 0xfe, 0x43, 0x84, 0xd0, - 0x7f, 0x34, 0x1a, 0xc9, 0x3b, 0x32, 0x22, 0x71, 0x67, 0x12, 0xca, 0x2a, 0xfd, 0xe6, 0xf2, 0x25, - 0x09, 0xae, 0xec, 0xe5, 0x66, 0xc3, 0xec, 0xfa, 0x0d, 0xe6, 0xea, 0x01, 0xed, 0x85, 0x8f, 0x53, - 0x12, 0x7b, 0x4b, 0x61, 0x44, 0xdd, 0x43, 0xa5, 0x45, 0x2c, 0x96, 0x04, 0x27, 0x6a, 0xe2, 0x6e, - 0x29, 0x4c, 0x4c, 0x3e, 0x7d, 0xe1, 0x7e, 0x26, 0x0b, 0x47, 0x97, 0x6d, 0x6b, 0xb7, 0xd3, 0x0d, - 0x7a, 0xa0, 0xbf, 0xee, 0xbf, 0xe1, 0x9a, 0x17, 0x31, 0x0d, 0xae, 0x81, 0x69, 0x9b, 0x59, 0x73, - 0xc1, 0xf6, 0x6b, 0x38, 0x29, 0xdc, 0x7b, 0xc9, 0x07, 0xe9, 0xbd, 0x82, 0x7e, 0x26, 0xcb, 0xf5, - 0x33, 0xbd, 0x3d, 0x47, 0xae, 0x4f, 0xcf, 0xf1, 0x57, 0x52, 0xc2, 0x41, 0xb5, 0x47, 0x44, 0x11, - 0xfd, 0x45, 0x09, 0xf2, 0x5b, 0x24, 0x23, 0xeb, 0x2e, 0x1e, 0x2b, 0x56, 0x33, 0x42, 0x5c, 0x63, - 0xbf, 0x06, 0x72, 0x95, 0xc3, 0x3a, 0x9c, 0x68, 0x80, 0x8b, 0xe7, 0x36, 0x7d, 0xa5, 0x7a, 0x28, - 0x0b, 0x33, 0x7e, 0xe9, 0xe5, 0x56, 0x17, 0x3d, 0xaf, 0xbf, 0x46, 0xcd, 0x8a, 0x68, 0xd4, 0xbe, - 0x75, 0x66, 0x7f, 0xd4, 0x91, 0x43, 0xa3, 0x4e, 0xdf, 0xd1, 0x65, 0x26, 0x62, 0x74, 0x41, 0xcf, - 0x90, 0x45, 0x6f, 0x1b, 0xe2, 0xbb, 0x56, 0x52, 0x9b, 0x47, 0xf2, 0x60, 0x21, 0x78, 0xe7, 0xd1, - 0xe0, 0x5a, 0xa5, 0xaf, 0x24, 0xef, 0x93, 0xe0, 0xd8, 0xfe, 0xce, 0xfc, 0xc7, 0x78, 0x2f, 0x34, - 0xb7, 0x4e, 0x5d, 0xdf, 0x0b, 0x8d, 0xbc, 0xf1, 0x9b, 0x74, 0xb1, 0x41, 0x43, 0x38, 0x7b, 0x6f, - 0x70, 0x27, 0x2e, 0x16, 0x16, 0x44, 0x90, 0x68, 0xfa, 0x02, 0xfc, 0x75, 0x19, 0xa6, 0x6a, 0xd8, - 0x59, 0xd5, 0x2f, 0x59, 0xbb, 0x0e, 0xd2, 0x45, 0xb7, 0xe7, 0x9e, 0x0c, 0xf9, 0x36, 0xf9, 0x85, - 0x5d, 0xe2, 0x7e, 0x4d, 0xdf, 0xfd, 0x2d, 0xe2, 0xfb, 0x43, 0x49, 0x6b, 0x2c, 0x3f, 0x1f, 0xad, - 0x45, 0x64, 0x77, 0xd4, 0xe7, 0x6e, 0x24, 0x5b, 0x3b, 0x89, 0xf6, 0x4e, 0xa3, 0x8a, 0x4e, 0x1f, - 0x96, 0x5f, 0x92, 0x61, 0xb6, 0x86, 0x9d, 0x72, 0x77, 0x49, 0xdf, 0xb3, 0x6c, 0xc3, 0xc1, 0xe1, - 0x5b, 0x1c, 0xe3, 0xa1, 0x39, 0x0d, 0x60, 0xf8, 0xbf, 0xb1, 0x18, 0x52, 0xa1, 0x14, 0xf4, 0xdb, - 0x49, 0x1d, 0x85, 0x38, 0x3e, 0x46, 0x02, 0x42, 0x22, 0x1f, 0x8b, 0xb8, 0xe2, 0xd3, 0x07, 0xe2, - 0x8b, 0x12, 0x03, 0xa2, 0x68, 0x37, 0xb7, 0x8d, 0x3d, 0xdc, 0x4a, 0x08, 0x84, 0xf7, 0x5b, 0x00, - 0x84, 0x4f, 0x28, 0xb1, 0xfb, 0x0a, 0xc7, 0xc7, 0x28, 0xdc, 0x57, 0xe2, 0x08, 0x8e, 0x25, 0x0c, - 0x94, 0xdb, 0xf5, 0xb0, 0xf5, 0xcc, 0xbb, 0x44, 0xc5, 0x1a, 0x98, 0x6c, 0x52, 0xd8, 0x64, 0x1b, - 0xaa, 0x63, 0xa1, 0x65, 0x0f, 0xd2, 0xe9, 0x6c, 0x1a, 0x1d, 0x4b, 0xdf, 0xa2, 0xd3, 0x17, 0xfa, - 0xbb, 0x64, 0x38, 0xe1, 0xc7, 0x47, 0xa9, 0x61, 0x67, 0x51, 0xef, 0x6e, 0x9f, 0xb7, 0x74, 0xbb, - 0x15, 0xbe, 0xdc, 0x7f, 0xe8, 0x13, 0x7f, 0xe8, 0x0b, 0x61, 0x10, 0x2a, 0x3c, 0x08, 0x7d, 0x5d, - 0x45, 0xfb, 0xf2, 0x32, 0x8a, 0x4e, 0x26, 0xd6, 0x9b, 0xf5, 0x77, 0x7d, 0xb0, 0x7e, 0x8a, 0x03, - 0xeb, 0xce, 0x61, 0x59, 0x4c, 0x1f, 0xb8, 0xdf, 0xa2, 0x23, 0x42, 0xc8, 0xab, 0xf9, 0x3e, 0x51, - 0xc0, 0x22, 0xbc, 0x5a, 0xe5, 0x48, 0xaf, 0xd6, 0xa1, 0xc6, 0x88, 0x81, 0x1e, 0xc9, 0xe9, 0x8e, - 0x11, 0x87, 0xe8, 0x6d, 0xfc, 0x36, 0x19, 0x0a, 0x24, 0x40, 0x56, 0xc8, 0xe3, 0x1b, 0xdd, 0x2f, - 0x8a, 0xce, 0x3e, 0xef, 0xf2, 0x89, 0xa4, 0xde, 0xe5, 0xe8, 0xad, 0x49, 0x7d, 0xc8, 0x7b, 0xb9, - 0x1d, 0x09, 0x62, 0x89, 0x5c, 0xc4, 0x07, 0x70, 0x90, 0x3e, 0x68, 0xff, 0x4d, 0x06, 0x70, 0x1b, - 0x34, 0x3b, 0xfb, 0xf0, 0x34, 0x51, 0xb8, 0x6e, 0x0e, 0xfb, 0xd5, 0xbb, 0x40, 0x9d, 0xe8, 0x01, - 0x8a, 0x52, 0x0c, 0x4e, 0x55, 0x3c, 0x9c, 0xd4, 0xb7, 0x32, 0xe0, 0x6a, 0x24, 0xb0, 0x24, 0xf2, - 0xb6, 0x8c, 0x2c, 0x3b, 0x7d, 0x40, 0xfe, 0x87, 0x04, 0xb9, 0xba, 0x55, 0xc3, 0xce, 0xc1, 0x4d, - 0x81, 0xc4, 0xc7, 0xf6, 0x49, 0xb9, 0xa3, 0x38, 0xb6, 0xdf, 0x8f, 0x50, 0xfa, 0xa2, 0x7b, 0xa7, - 0x04, 0x33, 0x75, 0xab, 0xe4, 0x2f, 0x4e, 0x89, 0xfb, 0xaa, 0x8a, 0xdf, 0x98, 0xec, 0x57, 0x30, - 0x28, 0xe6, 0x40, 0x37, 0x26, 0x0f, 0xa6, 0x97, 0xbe, 0xdc, 0x6e, 0x83, 0xa3, 0x1b, 0x66, 0xcb, - 0xd2, 0x70, 0xcb, 0x62, 0x2b, 0xdd, 0x8a, 0x02, 0xd9, 0x5d, 0xb3, 0x65, 0x11, 0x96, 0x73, 0x1a, - 0x79, 0x76, 0xd3, 0x6c, 0xdc, 0xb2, 0x98, 0x6f, 0x00, 0x79, 0x46, 0x5f, 0x97, 0x21, 0xeb, 0xfe, - 0x2b, 0x2e, 0xea, 0xb7, 0xc9, 0x09, 0x03, 0x11, 0xb8, 0xe4, 0x47, 0x62, 0x09, 0xdd, 0x15, 0x5a, - 0xfb, 0xa7, 0x1e, 0xac, 0xd7, 0x46, 0x95, 0x17, 0x12, 0x45, 0xb0, 0xe6, 0xaf, 0x9c, 0x82, 0x89, - 0xf3, 0x6d, 0xab, 0x79, 0x21, 0x38, 0x2f, 0xcf, 0x5e, 0x95, 0x1b, 0x21, 0x67, 0xeb, 0xe6, 0x16, - 0x66, 0x7b, 0x0a, 0xc7, 0x7b, 0xfa, 0x42, 0xe2, 0xf5, 0xa2, 0xd1, 0x2c, 0xe8, 0xad, 0x49, 0x42, - 0x20, 0xf4, 0xa9, 0x7c, 0x32, 0x7d, 0x58, 0x1c, 0xe2, 0x64, 0x59, 0x01, 0x66, 0x4a, 0x45, 0x7a, - 0x37, 0xf9, 0x5a, 0xf5, 0xac, 0x5a, 0x90, 0x09, 0xcc, 0xae, 0x4c, 0x52, 0x84, 0xd9, 0x25, 0xff, - 0x23, 0x0b, 0x73, 0x9f, 0xca, 0x1f, 0x06, 0xcc, 0x9f, 0x90, 0x60, 0x76, 0xd5, 0xe8, 0x3a, 0x51, - 0xde, 0xfe, 0x31, 0xf1, 0x71, 0x9f, 0x9f, 0xd4, 0x54, 0xe6, 0xca, 0x11, 0x0e, 0x8c, 0x9b, 0xc8, - 0x1c, 0x8e, 0x2b, 0x62, 0x3c, 0xc7, 0x52, 0x08, 0x07, 0xf4, 0x3e, 0x61, 0x61, 0x49, 0x26, 0x36, - 0x94, 0x82, 0x42, 0xc6, 0x6f, 0x28, 0x45, 0x96, 0x9d, 0xbe, 0x7c, 0xbf, 0x2e, 0xc1, 0x31, 0xb7, - 0xf8, 0xb8, 0x65, 0xa9, 0x68, 0x31, 0x0f, 0x5c, 0x96, 0x4a, 0xbc, 0x32, 0xbe, 0x8f, 0x97, 0x51, - 0xac, 0x8c, 0x0f, 0x22, 0x3a, 0x66, 0x31, 0x47, 0x2c, 0xc3, 0x0e, 0x12, 0x73, 0xcc, 0x32, 0xec, - 0xf0, 0x62, 0x8e, 0x5f, 0x8a, 0x1d, 0x52, 0xcc, 0x87, 0xb6, 0xc0, 0xfa, 0x5a, 0xd9, 0x17, 0x73, - 0xe4, 0xda, 0x46, 0x8c, 0x98, 0x13, 0x9f, 0xd8, 0x45, 0x6f, 0x1f, 0x52, 0xf0, 0x23, 0x5e, 0xdf, - 0x18, 0x06, 0xa6, 0x43, 0x5c, 0xe3, 0x78, 0x89, 0x0c, 0x73, 0x8c, 0x8b, 0xfe, 0x53, 0xe6, 0x18, - 0x8c, 0x12, 0x4f, 0x99, 0x13, 0x9f, 0x01, 0xe2, 0x39, 0x1b, 0xff, 0x19, 0xa0, 0xd8, 0xf2, 0xd3, - 0x07, 0xe7, 0x1b, 0x59, 0x38, 0xe9, 0xb2, 0xb0, 0x66, 0xb5, 0x8c, 0xcd, 0x4b, 0x94, 0x8b, 0xb3, - 0x7a, 0x7b, 0x17, 0x77, 0xd1, 0x7b, 0x24, 0x51, 0x94, 0xfe, 0x13, 0x80, 0xd5, 0xc1, 0x36, 0x0d, - 0xa4, 0xc6, 0x80, 0xba, 0x23, 0xaa, 0xb2, 0xfb, 0x4b, 0xf2, 0xaf, 0x8b, 0xa9, 0x7a, 0x44, 0xb4, - 0x10, 0x3d, 0xd7, 0x2a, 0x9c, 0xf2, 0xbf, 0xf4, 0x3a, 0x78, 0x64, 0xf6, 0x3b, 0x78, 0xdc, 0x00, - 0xb2, 0xde, 0x6a, 0xf9, 0x50, 0xf5, 0x6e, 0x66, 0x93, 0x32, 0x35, 0x37, 0x8b, 0x9b, 0xb3, 0x8b, - 0x83, 0xa3, 0x79, 0x11, 0x39, 0xbb, 0xd8, 0x51, 0xe6, 0x21, 0x4f, 0xef, 0x56, 0xf6, 0x57, 0xf4, - 0xfb, 0x67, 0x66, 0xb9, 0x78, 0xd3, 0xae, 0xca, 0xab, 0xe1, 0x6d, 0x89, 0x24, 0xd3, 0xaf, 0x9f, - 0x0e, 0xec, 0x64, 0x8d, 0x53, 0xb0, 0xa7, 0x0e, 0x4d, 0x79, 0x3c, 0xbb, 0x61, 0xc5, 0x4e, 0xa7, - 0x7d, 0xa9, 0xce, 0x82, 0xaf, 0x24, 0xda, 0x0d, 0x0b, 0xc5, 0x70, 0x91, 0x7a, 0x63, 0xb8, 0x24, - 0xdf, 0x0d, 0xe3, 0xf8, 0x18, 0xc5, 0x6e, 0x58, 0x1c, 0xc1, 0xf4, 0x45, 0xfb, 0xe6, 0x1c, 0xb5, - 0x9a, 0x59, 0xf4, 0xfe, 0x3f, 0xea, 0x7f, 0x08, 0x0d, 0x78, 0x67, 0x97, 0x7e, 0x81, 0xfd, 0x63, - 0x6f, 0x2d, 0x51, 0x9e, 0x08, 0xf9, 0x4d, 0xcb, 0xde, 0xd1, 0xbd, 0x8d, 0xfb, 0xde, 0x93, 0x22, - 0x2c, 0x62, 0xfe, 0x12, 0xc9, 0xa3, 0xb1, 0xbc, 0xee, 0x7c, 0xe4, 0xe9, 0x46, 0x87, 0x45, 0x5d, - 0x74, 0x1f, 0x95, 0xeb, 0x60, 0x96, 0x05, 0x5f, 0xac, 0xe0, 0xae, 0x83, 0x5b, 0x2c, 0x62, 0x05, - 0x9f, 0xa8, 0x9c, 0x81, 0x19, 0x96, 0xb0, 0x64, 0xb4, 0x71, 0x97, 0x05, 0xad, 0xe0, 0xd2, 0x94, - 0x93, 0x90, 0x37, 0xba, 0xf7, 0x74, 0x2d, 0x93, 0xf8, 0xff, 0x4f, 0x6a, 0xec, 0x4d, 0xb9, 0x01, - 0x8e, 0xb2, 0x7c, 0xbe, 0xb1, 0x4a, 0x0f, 0xec, 0xf4, 0x26, 0xbb, 0xaa, 0x65, 0x5a, 0xeb, 0xb6, - 0xb5, 0x65, 0xe3, 0x6e, 0x97, 0x9c, 0x9a, 0x9a, 0xd4, 0x42, 0x29, 0xe8, 0xb3, 0xc3, 0x4c, 0x2c, - 0x12, 0xdf, 0x64, 0xe0, 0xa2, 0xb4, 0xdb, 0x6c, 0x62, 0xdc, 0x62, 0x27, 0x9f, 0xbc, 0xd7, 0x84, - 0x77, 0x1c, 0x24, 0x9e, 0x86, 0x1c, 0xd2, 0x25, 0x07, 0x1f, 0x3a, 0x01, 0x79, 0x7a, 0x61, 0x18, - 0x7a, 0xd1, 0x5c, 0x5f, 0x65, 0x9d, 0xe3, 0x95, 0x75, 0x03, 0x66, 0x4c, 0xcb, 0x2d, 0x6e, 0x5d, - 0xb7, 0xf5, 0x9d, 0x6e, 0xdc, 0x2a, 0x23, 0xa5, 0xeb, 0x0f, 0x29, 0x95, 0xd0, 0x6f, 0x2b, 0x47, - 0x34, 0x8e, 0x8c, 0xf2, 0xff, 0x83, 0xa3, 0xe7, 0x59, 0x84, 0x80, 0x2e, 0xa3, 0x2c, 0x45, 0xfb, - 0xe0, 0xf5, 0x50, 0x5e, 0xe0, 0xff, 0x5c, 0x39, 0xa2, 0xf5, 0x12, 0x53, 0x7e, 0x06, 0xe6, 0xdc, - 0xd7, 0x96, 0x75, 0xd1, 0x63, 0x5c, 0x8e, 0x36, 0x44, 0x7a, 0xc8, 0xaf, 0x71, 0x3f, 0xae, 0x1c, - 0xd1, 0x7a, 0x48, 0x29, 0x55, 0x80, 0x6d, 0x67, 0xa7, 0xcd, 0x08, 0x67, 0xa3, 0x55, 0xb2, 0x87, - 0xf0, 0x8a, 0xff, 0xd3, 0xca, 0x11, 0x2d, 0x44, 0x42, 0x59, 0x85, 0x29, 0xe7, 0x01, 0x87, 0xd1, - 0xcb, 0x45, 0x6f, 0x7e, 0xf7, 0xd0, 0xab, 0x7b, 0xff, 0xac, 0x1c, 0xd1, 0x02, 0x02, 0x4a, 0x19, - 0x26, 0x3b, 0xe7, 0x19, 0xb1, 0x7c, 0x9f, 0x68, 0xf3, 0xfd, 0x89, 0xad, 0x9f, 0xf7, 0x69, 0xf9, - 0xbf, 0xbb, 0x8c, 0x35, 0xbb, 0x7b, 0x8c, 0xd6, 0x84, 0x30, 0x63, 0x25, 0xef, 0x1f, 0x97, 0x31, - 0x9f, 0x80, 0x52, 0x86, 0xa9, 0xae, 0xa9, 0x77, 0xba, 0xdb, 0x96, 0xd3, 0x3d, 0x35, 0xd9, 0xe3, - 0x27, 0x19, 0x4d, 0xad, 0xc6, 0xfe, 0xd1, 0x82, 0xbf, 0x95, 0x27, 0xc2, 0x89, 0x5d, 0x72, 0xf1, - 0xba, 0xfa, 0x80, 0xd1, 0x75, 0x0c, 0x73, 0xcb, 0x8b, 0x31, 0x4b, 0x7b, 0x9b, 0xfe, 0x1f, 0x95, - 0x79, 0x76, 0x62, 0x0a, 0x48, 0xdb, 0x44, 0xbd, 0x9b, 0x75, 0xb4, 0xd8, 0xd0, 0x41, 0xa9, 0xa7, - 0x40, 0xd6, 0xfd, 0x44, 0x7a, 0xa7, 0xb9, 0xfe, 0x0b, 0x81, 0xbd, 0xba, 0x43, 0x1a, 0xb0, 0xfb, - 0x53, 0x4f, 0x07, 0x37, 0xd3, 0xdb, 0xc1, 0xb9, 0x0d, 0xdc, 0xe8, 0xae, 0x19, 0x5b, 0xd4, 0xba, - 0x62, 0xfe, 0xf0, 0xe1, 0x24, 0x3a, 0x1b, 0xad, 0xe0, 0x8b, 0xf4, 0x06, 0x8d, 0xa3, 0xde, 0x6c, - 0xd4, 0x4b, 0x41, 0xd7, 0xc3, 0x4c, 0xb8, 0x91, 0xd1, 0x5b, 0x47, 0x8d, 0xc0, 0x36, 0x63, 0x6f, - 0xe8, 0x3a, 0x98, 0xe3, 0x75, 0x3a, 0x34, 0x04, 0xc9, 0x5e, 0x57, 0x88, 0xae, 0x85, 0xa3, 0x3d, - 0x0d, 0xcb, 0x8b, 0x39, 0x92, 0x09, 0x62, 0x8e, 0x5c, 0x03, 0x10, 0x68, 0x71, 0x5f, 0x32, 0x57, - 0xc3, 0x94, 0xaf, 0x97, 0x7d, 0x33, 0x7c, 0x35, 0x03, 0x93, 0x9e, 0xb2, 0xf5, 0xcb, 0xe0, 0x8e, - 0x3f, 0x66, 0x68, 0x83, 0x81, 0x4d, 0xc3, 0xb9, 0x34, 0x77, 0x9c, 0x09, 0xdc, 0x7a, 0xeb, 0x86, - 0xd3, 0xf6, 0x8e, 0xc6, 0xf5, 0x26, 0x2b, 0xeb, 0x00, 0x06, 0xc1, 0xa8, 0x1e, 0x9c, 0x95, 0xbb, - 0x25, 0x41, 0x7b, 0xa0, 0xfa, 0x10, 0xa2, 0x71, 0xe6, 0xc7, 0xd8, 0x41, 0xb6, 0x29, 0xc8, 0xd1, - 0x40, 0xeb, 0x47, 0x94, 0x39, 0x00, 0xf5, 0x69, 0xeb, 0xaa, 0x56, 0x56, 0x2b, 0x25, 0xb5, 0x90, - 0x41, 0x2f, 0x95, 0x60, 0xca, 0x6f, 0x04, 0x7d, 0x2b, 0xa9, 0x32, 0xd5, 0x1a, 0x78, 0xb1, 0xe3, - 0xfe, 0x46, 0x15, 0x56, 0xb2, 0x27, 0xc3, 0xe5, 0xbb, 0x5d, 0xbc, 0x64, 0xd8, 0x5d, 0x47, 0xb3, - 0x2e, 0x2e, 0x59, 0xb6, 0x1f, 0x55, 0x99, 0x45, 0x38, 0x8d, 0xfa, 0xec, 0x5a, 0x1c, 0x2d, 0x4c, - 0x0e, 0x4d, 0x61, 0x9b, 0xad, 0x1c, 0x07, 0x09, 0x2e, 0x5d, 0xc7, 0xd6, 0xcd, 0x6e, 0xc7, 0xea, - 0x62, 0xcd, 0xba, 0xd8, 0x2d, 0x9a, 0xad, 0x92, 0xd5, 0xde, 0xdd, 0x31, 0xbb, 0xcc, 0x66, 0x88, - 0xfa, 0xec, 0x4a, 0x87, 0x5c, 0xdb, 0x3a, 0x07, 0x50, 0xaa, 0xae, 0xae, 0xaa, 0xa5, 0x7a, 0xb9, - 0x5a, 0x29, 0x1c, 0x71, 0xa5, 0x55, 0x2f, 0x2e, 0xac, 0xba, 0xd2, 0xf9, 0x59, 0x98, 0xf4, 0xda, - 0x34, 0x0b, 0x93, 0x92, 0xf1, 0xc2, 0xa4, 0x28, 0x45, 0x98, 0xf4, 0x5a, 0x39, 0x1b, 0x11, 0x1e, - 0xdd, 0x7b, 0x2c, 0x76, 0x47, 0xb7, 0x1d, 0xe2, 0x4f, 0xed, 0x11, 0x59, 0xd0, 0xbb, 0x58, 0xf3, - 0x7f, 0x3b, 0xf3, 0x38, 0xc6, 0x81, 0x02, 0x73, 0xc5, 0xd5, 0xd5, 0x46, 0x55, 0x6b, 0x54, 0xaa, - 0xf5, 0x95, 0x72, 0x65, 0x99, 0x8e, 0x90, 0xe5, 0xe5, 0x4a, 0x55, 0x53, 0xe9, 0x00, 0x59, 0x2b, - 0x64, 0xe8, 0xb5, 0xc1, 0x0b, 0x93, 0x90, 0xef, 0x10, 0xe9, 0xa2, 0x2f, 0xc9, 0x09, 0xcf, 0xc3, - 0xfb, 0x38, 0x45, 0x5c, 0x6c, 0xca, 0xf9, 0xa4, 0x4b, 0x7d, 0xce, 0x8c, 0x9e, 0x81, 0x19, 0x6a, - 0xeb, 0x75, 0xc9, 0xf2, 0x3e, 0x41, 0x4e, 0xd6, 0xb8, 0x34, 0xf4, 0x11, 0x29, 0xc1, 0x21, 0xf9, - 0xbe, 0x1c, 0x25, 0x33, 0x2e, 0xfe, 0x3c, 0x33, 0xdc, 0xb5, 0x04, 0xe5, 0x4a, 0x5d, 0xd5, 0x2a, - 0xc5, 0x55, 0x96, 0x45, 0x56, 0x4e, 0xc1, 0xf1, 0x4a, 0x95, 0xc5, 0xfc, 0xab, 0x35, 0xea, 0xd5, - 0x46, 0x79, 0x6d, 0xbd, 0xaa, 0xd5, 0x0b, 0x39, 0xe5, 0x24, 0x28, 0xf4, 0xb9, 0x51, 0xae, 0x35, - 0x4a, 0xc5, 0x4a, 0x49, 0x5d, 0x55, 0x17, 0x0b, 0x79, 0xe5, 0x31, 0x70, 0x2d, 0xbd, 0xe6, 0xa6, - 0xba, 0xd4, 0xd0, 0xaa, 0xe7, 0x6a, 0x2e, 0x82, 0x9a, 0xba, 0x5a, 0x74, 0x15, 0x29, 0x74, 0x7d, - 0xf0, 0x84, 0x72, 0x19, 0x1c, 0x25, 0x57, 0x83, 0xaf, 0x56, 0x8b, 0x8b, 0xac, 0xbc, 0x49, 0xe5, - 0x2a, 0x38, 0x55, 0xae, 0xd4, 0x36, 0x96, 0x96, 0xca, 0xa5, 0xb2, 0x5a, 0xa9, 0x37, 0xd6, 0x55, - 0x6d, 0xad, 0x5c, 0xab, 0xb9, 0xff, 0x16, 0xa6, 0xc8, 0xe5, 0xac, 0xb4, 0xcf, 0x44, 0xef, 0x96, - 0x61, 0xf6, 0xac, 0xde, 0x36, 0xdc, 0x81, 0x82, 0xdc, 0xda, 0xdc, 0x73, 0x9c, 0xc4, 0x21, 0xb7, - 0x3b, 0x33, 0x87, 0x74, 0xf2, 0x82, 0x7e, 0x51, 0x4e, 0x78, 0x9c, 0x84, 0x01, 0x41, 0x4b, 0x9c, - 0xe7, 0x4a, 0x8b, 0x98, 0xfc, 0xbc, 0x5a, 0x4a, 0x70, 0x9c, 0x44, 0x9c, 0x7c, 0x32, 0xf0, 0x5f, - 0x36, 0x2a, 0xf0, 0x0b, 0x30, 0xb3, 0x51, 0x29, 0x6e, 0xd4, 0x57, 0xaa, 0x5a, 0xf9, 0xa7, 0x49, - 0x34, 0xf2, 0x59, 0x98, 0x5a, 0xaa, 0x6a, 0x0b, 0xe5, 0xc5, 0x45, 0xb5, 0x52, 0xc8, 0x29, 0x97, - 0xc3, 0x65, 0x35, 0x55, 0x3b, 0x5b, 0x2e, 0xa9, 0x8d, 0x8d, 0x4a, 0xf1, 0x6c, 0xb1, 0xbc, 0x4a, - 0xfa, 0x88, 0x7c, 0xcc, 0x8d, 0xd3, 0x13, 0xe8, 0xe7, 0xb3, 0x00, 0xb4, 0xea, 0xe4, 0x32, 0x9e, - 0xd0, 0xbd, 0xc4, 0x9f, 0x4f, 0x3a, 0x69, 0x08, 0xc8, 0x44, 0xb4, 0xdf, 0x32, 0x4c, 0xda, 0xec, - 0x03, 0x5b, 0x5e, 0x19, 0x44, 0x87, 0x3e, 0x7a, 0xd4, 0x34, 0xff, 0x77, 0xf4, 0x9e, 0x24, 0x73, - 0x84, 0x48, 0xc6, 0x92, 0x21, 0xb9, 0x34, 0x1a, 0x20, 0xd1, 0xf3, 0x32, 0x30, 0xc7, 0x57, 0xcc, - 0xad, 0x04, 0x31, 0xa6, 0xc4, 0x2a, 0xc1, 0xff, 0x1c, 0x32, 0xb2, 0xce, 0x3c, 0x81, 0x0d, 0xa7, - 0xe0, 0xb5, 0x4c, 0x7a, 0x32, 0xdc, 0xb3, 0x58, 0x0a, 0x19, 0x97, 0x79, 0xd7, 0xe8, 0x28, 0x48, - 0xca, 0x04, 0xc8, 0xf5, 0x07, 0x9c, 0x82, 0x8c, 0xbe, 0x2a, 0xc3, 0x2c, 0x77, 0xf1, 0x31, 0x7a, - 0x75, 0x46, 0xe4, 0x52, 0xd2, 0xd0, 0x95, 0xca, 0x99, 0x83, 0x5e, 0xa9, 0x7c, 0xe6, 0x66, 0x98, - 0x60, 0x69, 0x44, 0xbe, 0xd5, 0x8a, 0x6b, 0x0a, 0x1c, 0x85, 0xe9, 0x65, 0xb5, 0xde, 0xa8, 0xd5, - 0x8b, 0x5a, 0x5d, 0x5d, 0x2c, 0x64, 0xdc, 0x81, 0x4f, 0x5d, 0x5b, 0xaf, 0xdf, 0x57, 0x90, 0x92, - 0x7b, 0xe8, 0xf5, 0x32, 0x32, 0x66, 0x0f, 0xbd, 0xb8, 0xe2, 0xd3, 0x9f, 0xab, 0x7e, 0x5a, 0x86, - 0x02, 0xe5, 0x40, 0x7d, 0xa0, 0x83, 0x6d, 0x03, 0x9b, 0x4d, 0x8c, 0x2e, 0x88, 0x44, 0x04, 0xdd, - 0x17, 0x2b, 0x8f, 0xf4, 0xe7, 0x21, 0x2b, 0x91, 0xbe, 0xf4, 0x18, 0xd8, 0xd9, 0x7d, 0x06, 0xf6, - 0xa7, 0x92, 0xba, 0xe8, 0xf5, 0xb2, 0x3b, 0x12, 0xc8, 0x3e, 0x9e, 0xc4, 0x45, 0x6f, 0x00, 0x07, - 0x63, 0x09, 0xf4, 0x1b, 0x31, 0xfe, 0x16, 0x64, 0xf4, 0x5c, 0x19, 0x8e, 0x2e, 0xea, 0x0e, 0x5e, - 0xb8, 0x54, 0xf7, 0x2e, 0x26, 0x8c, 0xb8, 0x4c, 0x38, 0xb3, 0xef, 0x32, 0xe1, 0xe0, 0x6e, 0x43, - 0xa9, 0xe7, 0x6e, 0x43, 0xf4, 0x8e, 0xa4, 0x87, 0xfa, 0x7a, 0x78, 0x18, 0x59, 0x34, 0xde, 0x64, - 0x87, 0xf5, 0xe2, 0xb9, 0x18, 0xc3, 0xdd, 0xfe, 0x53, 0x50, 0xa0, 0xac, 0x84, 0xbc, 0xd0, 0x7e, - 0x9d, 0xdd, 0xbf, 0xdd, 0x48, 0x10, 0xf4, 0xcf, 0x0b, 0xa3, 0x20, 0xf1, 0x61, 0x14, 0xb8, 0x45, - 0x4d, 0xb9, 0xd7, 0x73, 0x20, 0x69, 0x67, 0x18, 0x72, 0x39, 0x8b, 0x8e, 0xb3, 0x9a, 0x5e, 0x67, - 0x18, 0x5b, 0xfc, 0x78, 0xee, 0x88, 0x65, 0xf7, 0x3c, 0xaa, 0xa2, 0xc8, 0xc4, 0x5f, 0x85, 0x9d, - 0xd4, 0xff, 0x98, 0x73, 0xf9, 0x8b, 0xb9, 0x1f, 0x3a, 0x3d, 0xff, 0xe3, 0x41, 0x1c, 0xa4, 0x8f, - 0xc2, 0x0f, 0x24, 0xc8, 0xd6, 0x2c, 0xdb, 0x19, 0x15, 0x06, 0x49, 0xf7, 0x4c, 0x43, 0x12, 0xa8, - 0x45, 0xcf, 0x39, 0xd3, 0xdb, 0x33, 0x8d, 0x2f, 0x7f, 0x0c, 0x71, 0x13, 0x8f, 0xc2, 0x1c, 0xe5, - 0xc4, 0xbf, 0x54, 0xe4, 0xfb, 0x12, 0xed, 0xaf, 0xee, 0x15, 0x45, 0xe4, 0x0c, 0xcc, 0x84, 0xf6, - 0x2c, 0x3d, 0x50, 0xb8, 0x34, 0xf4, 0xfa, 0x30, 0x2e, 0x8b, 0x3c, 0x2e, 0xfd, 0x66, 0xdc, 0xfe, - 0xbd, 0x1c, 0xa3, 0xea, 0x99, 0x92, 0x84, 0x60, 0x8c, 0x29, 0x3c, 0x7d, 0x44, 0x1e, 0x94, 0x21, - 0xcf, 0x7c, 0xc6, 0x46, 0x8a, 0x40, 0xd2, 0x96, 0xe1, 0x0b, 0x41, 0xcc, 0xb7, 0x4c, 0x1e, 0x75, - 0xcb, 0x88, 0x2f, 0x3f, 0x7d, 0x1c, 0xfe, 0x9d, 0x39, 0x43, 0x16, 0xf7, 0x74, 0xa3, 0xad, 0x9f, - 0x6f, 0x27, 0x08, 0x7d, 0xfc, 0x91, 0x84, 0xc7, 0xbf, 0xfc, 0xaa, 0x72, 0xe5, 0x45, 0x48, 0xfc, - 0x27, 0x60, 0xca, 0xf6, 0x97, 0x24, 0xbd, 0xd3, 0xf1, 0x3d, 0x8e, 0xa8, 0xec, 0xbb, 0x16, 0xe4, - 0x4c, 0x74, 0xd6, 0x4b, 0x88, 0x9f, 0xb1, 0x9c, 0x4d, 0x99, 0x2e, 0xb6, 0x5a, 0x4b, 0x58, 0x77, - 0x76, 0x6d, 0xdc, 0x4a, 0x34, 0x44, 0xf0, 0x22, 0x9a, 0x0a, 0x4b, 0x82, 0x0b, 0x3e, 0xb8, 0xca, - 0xa3, 0xf3, 0xa4, 0x01, 0xbd, 0x81, 0xc7, 0xcb, 0x48, 0xba, 0xa4, 0x37, 0xfb, 0x90, 0x54, 0x39, - 0x48, 0x9e, 0x32, 0x1c, 0x13, 0x63, 0xb8, 0xd0, 0x5d, 0x86, 0x39, 0x6a, 0x27, 0x8c, 0x1a, 0x93, - 0x3f, 0x48, 0xe8, 0x63, 0x12, 0xba, 0xb6, 0x29, 0xcc, 0xce, 0x48, 0x60, 0x49, 0xe2, 0x91, 0x22, - 0xc6, 0x47, 0xfa, 0xc8, 0x7c, 0x36, 0x0f, 0x10, 0xf2, 0x1b, 0xfc, 0x48, 0x3e, 0x08, 0x04, 0x88, - 0xde, 0xca, 0xe6, 0x1f, 0x35, 0x2e, 0x2a, 0x75, 0xc8, 0x27, 0xd0, 0xdf, 0x90, 0xe2, 0x13, 0x85, - 0x46, 0x95, 0x3f, 0x4f, 0x68, 0xf3, 0x32, 0xaf, 0xbd, 0x81, 0x83, 0xfb, 0x90, 0xbd, 0xdc, 0x47, - 0x13, 0x18, 0xbf, 0x83, 0x58, 0x49, 0x86, 0xda, 0xea, 0x10, 0x33, 0xfb, 0x53, 0x70, 0x5c, 0x53, - 0x8b, 0x8b, 0xd5, 0xca, 0xea, 0x7d, 0xe1, 0x3b, 0x7c, 0x0a, 0x72, 0x78, 0x72, 0x92, 0x0a, 0x6c, - 0xaf, 0x49, 0xd8, 0x07, 0xf2, 0xb2, 0x8a, 0xbd, 0xa1, 0xfe, 0xe3, 0x09, 0x7a, 0x35, 0x01, 0xb2, - 0x87, 0x89, 0xc2, 0x83, 0x10, 0x6a, 0x46, 0xcf, 0x91, 0xa1, 0xe0, 0x8e, 0x87, 0x94, 0x4b, 0x76, - 0x59, 0x5b, 0x95, 0x77, 0x2b, 0xec, 0xd0, 0xfd, 0xa7, 0xc0, 0xad, 0xd0, 0x4b, 0x50, 0xae, 0x87, - 0xb9, 0xe6, 0x36, 0x6e, 0x5e, 0x28, 0x9b, 0xde, 0xbe, 0x3a, 0xdd, 0x84, 0xed, 0x49, 0xe5, 0x81, - 0xb9, 0x97, 0x07, 0x86, 0x9f, 0x44, 0x73, 0x83, 0x74, 0x98, 0xa9, 0x08, 0x5c, 0xfe, 0xc8, 0xc7, - 0xa5, 0xc2, 0xe1, 0x72, 0xfb, 0x50, 0x54, 0x93, 0xc1, 0x52, 0x19, 0x02, 0x16, 0x04, 0x27, 0xab, - 0xeb, 0xf5, 0x72, 0xb5, 0xd2, 0xd8, 0xa8, 0xa9, 0x8b, 0x8d, 0x05, 0x0f, 0x9c, 0x5a, 0x41, 0x46, - 0xdf, 0x94, 0x60, 0x82, 0xb2, 0xd5, 0x45, 0x8f, 0x0d, 0x20, 0x18, 0xe8, 0x4f, 0x89, 0xde, 0x22, - 0x1c, 0x1d, 0xc1, 0x17, 0x04, 0x2b, 0x27, 0xa2, 0x9f, 0x7a, 0x32, 0x4c, 0x50, 0x90, 0xbd, 0x15, - 0xad, 0xd3, 0x11, 0xbd, 0x14, 0x23, 0xa3, 0x79, 0xd9, 0x05, 0x23, 0x25, 0x0c, 0x60, 0x23, 0xfd, - 0x91, 0xe5, 0x19, 0x59, 0x6a, 0x06, 0x9f, 0x33, 0x9c, 0x6d, 0xe2, 0x6e, 0x89, 0x7e, 0x4a, 0x64, - 0x79, 0xf1, 0x26, 0xc8, 0xed, 0xb9, 0xb9, 0x07, 0xb8, 0xae, 0xd2, 0x4c, 0xe8, 0x65, 0xc2, 0x81, - 0x39, 0x39, 0xfd, 0xf4, 0x79, 0x8a, 0x00, 0x67, 0x0d, 0xb2, 0x6d, 0xa3, 0xeb, 0xb0, 0xf1, 0xe3, - 0xb6, 0x44, 0x84, 0xbc, 0x87, 0xb2, 0x83, 0x77, 0x34, 0x42, 0x06, 0xdd, 0x03, 0x33, 0xe1, 0x54, - 0x01, 0xf7, 0xdd, 0x53, 0x30, 0xc1, 0x8e, 0x95, 0xb1, 0x25, 0x56, 0xef, 0x55, 0x70, 0x59, 0x53, - 0xa8, 0xb6, 0xe9, 0xeb, 0xc0, 0xff, 0x7d, 0x14, 0x26, 0x56, 0x8c, 0xae, 0x63, 0xd9, 0x97, 0xd0, - 0xc3, 0x19, 0x98, 0x38, 0x8b, 0xed, 0xae, 0x61, 0x99, 0xfb, 0x5c, 0x0d, 0xae, 0x81, 0xe9, 0x8e, - 0x8d, 0xf7, 0x0c, 0x6b, 0xb7, 0x1b, 0x2c, 0xce, 0x84, 0x93, 0x14, 0x04, 0x93, 0xfa, 0xae, 0xb3, - 0x6d, 0xd9, 0x41, 0x34, 0x0a, 0xef, 0x5d, 0x39, 0x0d, 0x40, 0x9f, 0x2b, 0xfa, 0x0e, 0x66, 0x0e, - 0x14, 0xa1, 0x14, 0x45, 0x81, 0xac, 0x63, 0xec, 0x60, 0x16, 0x9e, 0x96, 0x3c, 0xbb, 0x02, 0x26, - 0xa1, 0xde, 0x58, 0x48, 0x3d, 0x59, 0xf3, 0x5e, 0xd1, 0x17, 0x64, 0x98, 0x5e, 0xc6, 0x0e, 0x63, - 0xb5, 0x8b, 0x9e, 0x9f, 0x11, 0xba, 0x11, 0xc2, 0x1d, 0x63, 0xdb, 0x7a, 0xd7, 0xfb, 0xcf, 0x5f, - 0x82, 0xe5, 0x13, 0x83, 0x58, 0xb9, 0x72, 0x38, 0x50, 0x36, 0x09, 0x9c, 0xe6, 0x94, 0xa9, 0x5f, - 0x26, 0xcb, 0xcc, 0x36, 0x41, 0xf6, 0x7f, 0x40, 0xef, 0x94, 0x44, 0x0f, 0x1d, 0x33, 0xd9, 0xcf, - 0x87, 0xea, 0x13, 0xd9, 0x1d, 0x4d, 0xee, 0xb1, 0x1c, 0xfb, 0x62, 0xa0, 0x87, 0x29, 0x31, 0x32, - 0x9a, 0x9f, 0x5b, 0xf0, 0xb8, 0xf2, 0x60, 0x4e, 0xd2, 0xd7, 0xc6, 0xef, 0xca, 0x30, 0x5d, 0xdb, - 0xb6, 0x2e, 0x7a, 0x72, 0xfc, 0x59, 0x31, 0x60, 0xaf, 0x82, 0xa9, 0xbd, 0x1e, 0x50, 0x83, 0x84, - 0xe8, 0x3b, 0xda, 0xd1, 0xb3, 0xe5, 0xa4, 0x30, 0x85, 0x98, 0x1b, 0xf9, 0x0d, 0xea, 0xca, 0x93, - 0x60, 0x82, 0x71, 0xcd, 0x96, 0x5c, 0xe2, 0x01, 0xf6, 0x32, 0x87, 0x2b, 0x98, 0xe5, 0x2b, 0x98, - 0x0c, 0xf9, 0xe8, 0xca, 0xa5, 0x8f, 0xfc, 0x9f, 0x48, 0x24, 0x58, 0x85, 0x07, 0x7c, 0x69, 0x04, - 0xc0, 0xa3, 0xef, 0x65, 0x44, 0x17, 0x26, 0x7d, 0x09, 0xf8, 0x1c, 0x1c, 0xe8, 0xb6, 0x97, 0x81, - 0xe4, 0xd2, 0x97, 0xe7, 0x4b, 0xb3, 0x30, 0xb3, 0x68, 0x6c, 0x6e, 0xfa, 0x9d, 0xe4, 0x0b, 0x04, - 0x3b, 0xc9, 0x68, 0x77, 0x00, 0xd7, 0xce, 0xdd, 0xb5, 0x6d, 0x6c, 0x7a, 0x95, 0x62, 0xcd, 0xa9, - 0x27, 0x55, 0xb9, 0x01, 0x8e, 0x7a, 0xe3, 0x42, 0xb8, 0xa3, 0x9c, 0xd2, 0x7a, 0x93, 0xd1, 0x77, - 0x84, 0x77, 0xb5, 0x3c, 0x89, 0x86, 0xab, 0x14, 0xd1, 0x00, 0xef, 0x80, 0xd9, 0x6d, 0x9a, 0x9b, - 0x4c, 0xfd, 0xbd, 0xce, 0xf2, 0x64, 0x4f, 0x30, 0xe0, 0x35, 0xdc, 0xed, 0xea, 0x5b, 0x58, 0xe3, - 0x33, 0xf7, 0x34, 0x5f, 0x39, 0xc9, 0xd5, 0x56, 0x62, 0x1b, 0x64, 0x02, 0x35, 0x19, 0x83, 0x76, - 0x9c, 0x81, 0xec, 0x92, 0xd1, 0xc6, 0xe8, 0x97, 0x25, 0x98, 0xd2, 0x70, 0xd3, 0x32, 0x9b, 0xee, - 0x5b, 0xc8, 0x39, 0xe8, 0x1f, 0x33, 0xa2, 0x57, 0x3a, 0xba, 0x74, 0xe6, 0x7d, 0x1a, 0x11, 0xed, - 0x46, 0xec, 0xea, 0xc6, 0x58, 0x52, 0x63, 0xb8, 0x80, 0xc3, 0x9d, 0x7a, 0x6c, 0x6e, 0xb6, 0x2d, - 0x9d, 0x5b, 0xfc, 0xea, 0x35, 0x85, 0x6e, 0x84, 0x82, 0x77, 0x06, 0xc4, 0x72, 0xd6, 0x0d, 0xd3, - 0xf4, 0x0f, 0x19, 0xef, 0x4b, 0xe7, 0xf7, 0x6d, 0x63, 0xe3, 0xb4, 0x90, 0xba, 0xb3, 0xd2, 0x23, - 0x34, 0xfb, 0x7a, 0x98, 0x3b, 0x7f, 0xc9, 0xc1, 0x5d, 0x96, 0x8b, 0x15, 0x9b, 0xd5, 0x7a, 0x52, - 0x43, 0x51, 0x96, 0xe3, 0xe2, 0xb9, 0xc4, 0x14, 0x98, 0x4c, 0xd4, 0x2b, 0x43, 0xcc, 0x00, 0x8f, - 0x43, 0xa1, 0x52, 0x5d, 0x54, 0x89, 0xaf, 0x9a, 0xe7, 0xfd, 0xb3, 0x85, 0x5e, 0x28, 0xc3, 0x0c, - 0x71, 0x26, 0xf1, 0x50, 0xb8, 0x56, 0x60, 0x3e, 0x82, 0xbe, 0x2c, 0xec, 0xc7, 0x46, 0xaa, 0x1c, - 0x2e, 0x20, 0x5a, 0xd0, 0x9b, 0x46, 0xbb, 0x57, 0xd0, 0x39, 0xad, 0x27, 0xb5, 0x0f, 0x20, 0x72, - 0x5f, 0x40, 0x7e, 0x4f, 0xc8, 0x99, 0x6d, 0x10, 0x77, 0x87, 0x85, 0xca, 0xef, 0xcb, 0x30, 0xed, - 0x4e, 0x52, 0x3c, 0x50, 0xaa, 0x1c, 0x28, 0x96, 0xd9, 0xbe, 0x14, 0x2c, 0x8b, 0x78, 0xaf, 0x89, - 0x1a, 0xc9, 0x5f, 0x0a, 0xcf, 0xdc, 0x89, 0x88, 0x42, 0xbc, 0x8c, 0x09, 0xbf, 0xf7, 0x0a, 0xcd, - 0xe7, 0x07, 0x30, 0x77, 0x58, 0xf0, 0x7d, 0x3d, 0x07, 0xf9, 0x8d, 0x0e, 0x41, 0xee, 0x65, 0xb2, - 0x48, 0xc4, 0xf2, 0x7d, 0x07, 0x19, 0x5c, 0x33, 0xab, 0x6d, 0x35, 0xf5, 0xf6, 0x7a, 0x70, 0x22, - 0x2c, 0x48, 0x50, 0x6e, 0x67, 0xbe, 0x8d, 0xf4, 0xb8, 0xdd, 0xf5, 0xb1, 0xc1, 0xbc, 0x89, 0x8c, - 0x42, 0x87, 0x46, 0x6e, 0x82, 0x63, 0x2d, 0xa3, 0xab, 0x9f, 0x6f, 0x63, 0xd5, 0x6c, 0xda, 0x97, - 0xa8, 0x38, 0xd8, 0xb4, 0x6a, 0xdf, 0x07, 0xe5, 0x4e, 0xc8, 0x75, 0x9d, 0x4b, 0x6d, 0x3a, 0x4f, - 0x0c, 0x9f, 0x31, 0x89, 0x2c, 0xaa, 0xe6, 0x66, 0xd7, 0xe8, 0x5f, 0x61, 0x17, 0xa5, 0x09, 0xc1, - 0xfb, 0x9c, 0x9f, 0x00, 0x79, 0xcb, 0x36, 0xb6, 0x0c, 0x7a, 0x3f, 0xcf, 0xdc, 0xbe, 0x98, 0x75, - 0xd4, 0x14, 0xa8, 0x92, 0x2c, 0x1a, 0xcb, 0xaa, 0x3c, 0x09, 0xa6, 0x8c, 0x1d, 0x7d, 0x0b, 0xdf, - 0x6b, 0x98, 0xf4, 0x44, 0xdf, 0xdc, 0xad, 0xa7, 0xf6, 0x1d, 0x9f, 0x61, 0xdf, 0xb5, 0x20, 0x2b, - 0x7a, 0xaf, 0x24, 0x1a, 0x58, 0x87, 0xd4, 0x8d, 0x82, 0x3a, 0x96, 0x7b, 0xad, 0xd1, 0x2b, 0x85, - 0x42, 0xde, 0x44, 0xb3, 0x95, 0xfe, 0xe0, 0xfd, 0x39, 0x09, 0x26, 0x17, 0xad, 0x8b, 0x26, 0x51, - 0xf4, 0xdb, 0xc4, 0x6c, 0xdd, 0x3e, 0x87, 0x1c, 0xf9, 0x6b, 0x23, 0x63, 0x4f, 0x34, 0x90, 0xda, - 0x7a, 0x45, 0x46, 0xc0, 0x10, 0xdb, 0x72, 0x04, 0x2f, 0xf3, 0x8b, 0x2b, 0x27, 0x7d, 0xb9, 0xfe, - 0xa9, 0x0c, 0xd9, 0x45, 0xdb, 0xea, 0xa0, 0x37, 0x67, 0x12, 0xb8, 0x2c, 0xb4, 0x6c, 0xab, 0x53, - 0x27, 0xb7, 0x71, 0x05, 0xc7, 0x38, 0xc2, 0x69, 0xca, 0x6d, 0x30, 0xd9, 0xb1, 0xba, 0x86, 0xe3, - 0x4d, 0x23, 0xe6, 0x6e, 0x7d, 0x54, 0xdf, 0xd6, 0xbc, 0xce, 0x32, 0x69, 0x7e, 0x76, 0xb7, 0xd7, - 0x26, 0x22, 0x74, 0xe5, 0xe2, 0x8a, 0xd1, 0xbb, 0x91, 0xac, 0x27, 0x15, 0xbd, 0x28, 0x8c, 0xe4, - 0x53, 0x78, 0x24, 0x1f, 0xdd, 0x47, 0xc2, 0xb6, 0xd5, 0x19, 0xc9, 0x26, 0xe3, 0xcb, 0x7d, 0x54, - 0x9f, 0xca, 0xa1, 0x7a, 0xa3, 0x50, 0x99, 0xe9, 0x23, 0xfa, 0xde, 0x2c, 0x00, 0x31, 0x33, 0x36, - 0xdc, 0x09, 0x90, 0x98, 0x8d, 0xf5, 0x4b, 0xd9, 0x90, 0x2c, 0x8b, 0xbc, 0x2c, 0x1f, 0x1b, 0x61, - 0xc5, 0x10, 0xf2, 0x11, 0x12, 0x2d, 0x42, 0x6e, 0xd7, 0xfd, 0xcc, 0x24, 0x2a, 0x48, 0x82, 0xbc, - 0x6a, 0xf4, 0x4f, 0xf4, 0x27, 0x19, 0xc8, 0x91, 0x04, 0xe5, 0x34, 0x00, 0x19, 0xd8, 0xe9, 0x81, - 0xa0, 0x0c, 0x19, 0xc2, 0x43, 0x29, 0x44, 0x5b, 0x8d, 0x16, 0xfb, 0x4c, 0x4d, 0xe6, 0x20, 0xc1, - 0xfd, 0x9b, 0x0c, 0xf7, 0x84, 0x16, 0x33, 0x00, 0x42, 0x29, 0xee, 0xdf, 0xe4, 0x6d, 0x15, 0x6f, - 0xd2, 0x40, 0xc9, 0x59, 0x2d, 0x48, 0xf0, 0xff, 0x5e, 0xf5, 0xaf, 0xd7, 0xf2, 0xfe, 0x26, 0x29, - 0xee, 0x64, 0x98, 0xa8, 0xe5, 0x42, 0x50, 0x44, 0x9e, 0x64, 0xea, 0x4d, 0x46, 0xaf, 0xf1, 0xd5, - 0x66, 0x91, 0x53, 0x9b, 0x5b, 0x12, 0x88, 0x37, 0x7d, 0xe5, 0xf9, 0x6a, 0x0e, 0xa6, 0x2a, 0x56, - 0x8b, 0xe9, 0x4e, 0x68, 0xc2, 0xf8, 0xf1, 0x5c, 0xa2, 0x09, 0xa3, 0x4f, 0x23, 0x42, 0x41, 0xee, - 0xe6, 0x15, 0x44, 0x8c, 0x42, 0x58, 0x3f, 0x94, 0x05, 0xc8, 0x13, 0xed, 0xdd, 0x7f, 0x6f, 0x53, - 0x1c, 0x09, 0x22, 0x5a, 0x8d, 0xfd, 0xf9, 0x1f, 0x4e, 0xc7, 0xfe, 0x2b, 0xe4, 0x48, 0x05, 0x63, - 0x76, 0x77, 0xf8, 0x8a, 0x4a, 0xf1, 0x15, 0x95, 0xe3, 0x2b, 0x9a, 0xed, 0xad, 0x68, 0x92, 0x75, - 0x80, 0x28, 0x0d, 0x49, 0x5f, 0xc7, 0xff, 0x61, 0x02, 0xa0, 0xa2, 0xef, 0x19, 0x5b, 0x74, 0x77, - 0xf8, 0x0b, 0xde, 0xfc, 0x87, 0xed, 0xe3, 0xfe, 0xb7, 0xd0, 0x40, 0x78, 0x1b, 0x4c, 0xb0, 0x71, - 0x8f, 0x55, 0xe4, 0x6a, 0xae, 0x22, 0x01, 0x15, 0x6a, 0x96, 0x3e, 0xe0, 0x68, 0x5e, 0x7e, 0xee, - 0x8a, 0x59, 0xa9, 0xe7, 0x8a, 0xd9, 0xfe, 0x7b, 0x10, 0x11, 0x17, 0xcf, 0xa2, 0x77, 0x09, 0x7b, - 0xf4, 0x87, 0xf8, 0x09, 0xd5, 0x28, 0xa2, 0x09, 0x3e, 0x01, 0x26, 0x2c, 0x7f, 0x43, 0x5b, 0x8e, - 0x5c, 0x07, 0x2b, 0x9b, 0x9b, 0x96, 0xe6, 0xe5, 0x14, 0xdc, 0xfc, 0x12, 0xe2, 0x63, 0x2c, 0x87, - 0x66, 0x4e, 0x2e, 0x7b, 0x41, 0xa7, 0xdc, 0x7a, 0x9c, 0x33, 0x9c, 0xed, 0x55, 0xc3, 0xbc, 0xd0, - 0x45, 0xff, 0x59, 0xcc, 0x82, 0x0c, 0xe1, 0x2f, 0x25, 0xc3, 0x9f, 0x8f, 0xd9, 0x51, 0xe3, 0x51, - 0xbb, 0x33, 0x8a, 0x4a, 0x7f, 0x6e, 0x23, 0x00, 0xbc, 0x1d, 0xf2, 0x94, 0x51, 0xd6, 0x89, 0x9e, - 0x89, 0xc4, 0xcf, 0xa7, 0xa4, 0xb1, 0x3f, 0xd0, 0x3b, 0x7d, 0x1c, 0xcf, 0x72, 0x38, 0x2e, 0x1c, - 0x88, 0xb3, 0xd4, 0x21, 0x3d, 0xf3, 0x78, 0x98, 0x60, 0x92, 0x56, 0xe6, 0xc2, 0xad, 0xb8, 0x70, - 0x44, 0x01, 0xc8, 0xaf, 0x59, 0x7b, 0xb8, 0x6e, 0x15, 0x32, 0xee, 0xb3, 0xcb, 0x5f, 0xdd, 0x2a, - 0x48, 0xe8, 0x15, 0x93, 0x30, 0xe9, 0x47, 0xfb, 0xf9, 0x9c, 0x04, 0x85, 0x92, 0x8d, 0x75, 0x07, - 0x2f, 0xd9, 0xd6, 0x0e, 0xad, 0x91, 0xb8, 0x77, 0xe8, 0x6f, 0x0a, 0xbb, 0x78, 0xf8, 0x51, 0x78, - 0x7a, 0x0b, 0x8b, 0xc0, 0x92, 0x2e, 0x42, 0x4a, 0xde, 0x22, 0x24, 0x7a, 0x93, 0x90, 0xcb, 0x87, - 0x68, 0x29, 0xe9, 0x37, 0xb5, 0x4f, 0x49, 0x90, 0x2b, 0xb5, 0x2d, 0x13, 0x87, 0x8f, 0x30, 0x0d, - 0x3c, 0x2b, 0xd3, 0x7f, 0x27, 0x02, 0x3d, 0x43, 0x12, 0xb5, 0x35, 0x02, 0x01, 0xb8, 0x65, 0x0b, - 0xca, 0x56, 0x6c, 0x90, 0x8a, 0x25, 0x9d, 0xbe, 0x40, 0xbf, 0x29, 0xc1, 0x14, 0x8d, 0x8b, 0x53, - 0x6c, 0xb7, 0xd1, 0xa3, 0x02, 0xa1, 0xf6, 0x89, 0x98, 0x84, 0x7e, 0x4f, 0xd8, 0x45, 0xdf, 0xaf, - 0x95, 0x4f, 0x3b, 0x41, 0x80, 0xa0, 0x64, 0x1e, 0xe3, 0x62, 0x7b, 0x69, 0x03, 0x19, 0x4a, 0x5f, - 0xd4, 0x9f, 0x97, 0x5c, 0x03, 0xc0, 0xbc, 0xb0, 0x6e, 0xe3, 0x3d, 0x03, 0x5f, 0x44, 0x57, 0x06, - 0xc2, 0xde, 0x1f, 0xf4, 0xe3, 0x0d, 0xc2, 0x8b, 0x38, 0x21, 0x92, 0x91, 0x5b, 0x59, 0xd3, 0xed, - 0x20, 0x13, 0xeb, 0xc5, 0x7b, 0x23, 0xb1, 0x84, 0xc8, 0x68, 0xe1, 0xec, 0x82, 0x6b, 0x36, 0xd1, - 0x5c, 0xa4, 0x2f, 0xd8, 0x0f, 0x4c, 0xc0, 0xe4, 0x86, 0xd9, 0xed, 0xb4, 0xf5, 0xee, 0x36, 0xfa, - 0xbe, 0x0c, 0x79, 0x7a, 0x5b, 0x18, 0xfa, 0x09, 0x2e, 0xb6, 0xc0, 0xcf, 0xed, 0x62, 0xdb, 0x73, - 0xc1, 0xa1, 0x2f, 0xfd, 0x2f, 0x33, 0x47, 0xef, 0x95, 0x45, 0x27, 0xa9, 0x5e, 0xa1, 0xa1, 0x6b, - 0xe3, 0xfb, 0x1f, 0x67, 0xef, 0x18, 0x4d, 0x67, 0xd7, 0xf6, 0xaf, 0xc6, 0x7e, 0x9c, 0x18, 0x95, - 0x75, 0xfa, 0x97, 0xe6, 0xff, 0x8e, 0x74, 0x98, 0x60, 0x89, 0xfb, 0xb6, 0x93, 0xf6, 0x9f, 0xbf, - 0x3d, 0x09, 0x79, 0xdd, 0x76, 0x8c, 0xae, 0xc3, 0x36, 0x58, 0xd9, 0x9b, 0xdb, 0x5d, 0xd2, 0xa7, - 0x0d, 0xbb, 0xed, 0x45, 0x21, 0xf1, 0x13, 0xd0, 0xef, 0x0b, 0xcd, 0x1f, 0xe3, 0x6b, 0x9e, 0x0c, - 0xf2, 0x7b, 0x87, 0x58, 0xa3, 0xbe, 0x1c, 0x2e, 0xd3, 0x8a, 0x75, 0xb5, 0x41, 0x83, 0x56, 0xf8, - 0xf1, 0x29, 0x5a, 0xe8, 0x1d, 0x72, 0x68, 0xfd, 0xee, 0x12, 0x37, 0x46, 0x30, 0x29, 0x06, 0x63, - 0x84, 0x9f, 0x10, 0xb3, 0x5b, 0xcd, 0x2d, 0xc2, 0xca, 0xe2, 0x8b, 0xb0, 0xbf, 0x23, 0xbc, 0x9b, - 0xe4, 0x8b, 0x72, 0xc0, 0x1a, 0x60, 0xdc, 0x6d, 0x42, 0xef, 0x13, 0xda, 0x19, 0x1a, 0x54, 0xd2, - 0x21, 0xc2, 0xf6, 0xfa, 0x09, 0x98, 0x58, 0xd6, 0xdb, 0x6d, 0x6c, 0x5f, 0x72, 0x87, 0xa4, 0x82, - 0xc7, 0xe1, 0x9a, 0x6e, 0x1a, 0x9b, 0xb8, 0xeb, 0xc4, 0x77, 0x96, 0xef, 0x12, 0x8e, 0x54, 0xcb, - 0xca, 0x98, 0xef, 0xa5, 0x1f, 0x21, 0xf3, 0x9b, 0x21, 0x6b, 0x98, 0x9b, 0x16, 0xeb, 0x32, 0x7b, + // 19593 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x7f, 0x9c, 0x2c, 0x47, + 0x59, 0x2f, 0x7c, 0xa6, 0x7b, 0x66, 0x76, 0xf7, 0xd9, 0x1f, 0x67, 0x4e, 0xe7, 0x9c, 0x93, 0x93, + 0x4a, 0x38, 0x89, 0x27, 0x21, 0xc4, 0x10, 0x36, 0x21, 0x20, 0x92, 0x90, 0x90, 0xcc, 0xce, 0xce, + 0xee, 0x4e, 0xb2, 0x3b, 0xb3, 0xf6, 0xcc, 0x9e, 0x43, 0xf4, 0xfa, 0xce, 0xed, 0x33, 0x53, 0xbb, + 0xdb, 0x39, 0xb3, 0xdd, 0x63, 0x77, 0xef, 0x9e, 0x1c, 0xde, 0xcf, 0x7d, 0xaf, 0x88, 0x11, 0x14, + 0x73, 0x11, 0x11, 0x95, 0xdf, 0x10, 0x08, 0x08, 0x0a, 0xc8, 0xef, 0x0b, 0x2a, 0x20, 0x3f, 0x04, + 0x11, 0x11, 0x41, 0x04, 0x51, 0x5e, 0x41, 0x10, 0xf1, 0x7e, 0xe4, 0xf2, 0xea, 0x7b, 0x05, 0x51, + 0x78, 0x7d, 0x3f, 0x5d, 0x55, 0xfd, 0xa3, 0x66, 0xa7, 0x7b, 0xaa, 0x67, 0xa7, 0x67, 0x83, 0xdc, + 0xff, 0xba, 0xab, 0xab, 0x9f, 0x7a, 0xea, 0xf9, 0x3e, 0x55, 0xf5, 0x54, 0xd5, 0x53, 0x4f, 0xc1, + 0xa9, 0xee, 0xf9, 0x9b, 0xbb, 0x96, 0xe9, 0x98, 0xf6, 0xcd, 0x2d, 0x73, 0x67, 0x47, 0x33, 0xda, + 0xf6, 0x3c, 0x79, 0x57, 0x26, 0x34, 0xe3, 0x92, 0x73, 0xa9, 0x8b, 0xd1, 0x75, 0xdd, 0x0b, 0x5b, + 0x37, 0x77, 0xf4, 0xf3, 0x37, 0x77, 0xcf, 0xdf, 0xbc, 0x63, 0xb6, 0x71, 0xc7, 0xfb, 0x81, 0xbc, + 0xb0, 0xec, 0xe8, 0x86, 0xa8, 0x5c, 0x1d, 0xb3, 0xa5, 0x75, 0x6c, 0xc7, 0xb4, 0x30, 0xcb, 0x79, + 0x32, 0x28, 0x12, 0xef, 0x61, 0xc3, 0xf1, 0x28, 0x5c, 0xb5, 0x65, 0x9a, 0x5b, 0x1d, 0x4c, 0xbf, + 0x9d, 0xdf, 0xdd, 0xbc, 0xd9, 0x76, 0xac, 0xdd, 0x96, 0xc3, 0xbe, 0x5e, 0xd3, 0xfb, 0xb5, 0x8d, + 0xed, 0x96, 0xa5, 0x77, 0x1d, 0xd3, 0xa2, 0x39, 0xce, 0xfc, 0xc6, 0x43, 0x93, 0x20, 0xab, 0xdd, + 0x16, 0xfa, 0xd6, 0x04, 0xc8, 0xc5, 0x6e, 0x17, 0x7d, 0x44, 0x02, 0x58, 0xc6, 0xce, 0x59, 0x6c, + 0xd9, 0xba, 0x69, 0xa0, 0xa3, 0x30, 0xa1, 0xe2, 0x9f, 0xda, 0xc5, 0xb6, 0x73, 0x7b, 0xf6, 0xb9, + 0x5f, 0x93, 0x33, 0xe8, 0x11, 0x09, 0x26, 0x55, 0x6c, 0x77, 0x4d, 0xc3, 0xc6, 0xca, 0xdd, 0x90, + 0xc3, 0x96, 0x65, 0x5a, 0xa7, 0x32, 0xd7, 0x64, 0x6e, 0x98, 0xbe, 0xf5, 0xc6, 0x79, 0x56, 0xfd, + 0x79, 0xb5, 0xdb, 0x9a, 0x2f, 0x76, 0xbb, 0xf3, 0x01, 0xa5, 0x79, 0xef, 0xa7, 0xf9, 0xb2, 0xfb, + 0x87, 0x4a, 0x7f, 0x54, 0x4e, 0xc1, 0xc4, 0x1e, 0xcd, 0x70, 0x4a, 0xba, 0x26, 0x73, 0xc3, 0x94, + 0xea, 0xbd, 0xba, 0x5f, 0xda, 0xd8, 0xd1, 0xf4, 0x8e, 0x7d, 0x4a, 0xa6, 0x5f, 0xd8, 0x2b, 0x7a, + 0x38, 0x03, 0x39, 0x42, 0x44, 0x29, 0x41, 0xb6, 0x65, 0xb6, 0x31, 0x29, 0x7e, 0xee, 0xd6, 0x9b, + 0xc5, 0x8b, 0x9f, 0x2f, 0x99, 0x6d, 0xac, 0x92, 0x9f, 0x95, 0x6b, 0x60, 0xda, 0x13, 0x4b, 0xc0, + 0x46, 0x38, 0xe9, 0xcc, 0xad, 0x90, 0x75, 0xf3, 0x2b, 0x93, 0x90, 0xad, 0x6e, 0xac, 0xae, 0x16, + 0x8e, 0x28, 0xc7, 0x60, 0x76, 0xa3, 0x7a, 0x6f, 0xb5, 0x76, 0xae, 0xda, 0x2c, 0xab, 0x6a, 0x4d, + 0x2d, 0x64, 0x94, 0x59, 0x98, 0x5a, 0x28, 0x2e, 0x36, 0x2b, 0xd5, 0xf5, 0x8d, 0x46, 0x41, 0x42, + 0xaf, 0x90, 0x61, 0xae, 0x8e, 0x9d, 0x45, 0xbc, 0xa7, 0xb7, 0x70, 0xdd, 0xd1, 0x1c, 0x8c, 0x9e, + 0x9f, 0xf1, 0x85, 0xa9, 0x6c, 0xb8, 0x85, 0xfa, 0x9f, 0x58, 0x05, 0x9e, 0xb4, 0xaf, 0x02, 0x3c, + 0x85, 0x79, 0xf6, 0xf7, 0x7c, 0x28, 0x4d, 0x0d, 0xd3, 0x39, 0xf3, 0x04, 0x98, 0x0e, 0x7d, 0x53, + 0xe6, 0x00, 0x16, 0x8a, 0xa5, 0x7b, 0x97, 0xd5, 0xda, 0x46, 0x75, 0xb1, 0x70, 0xc4, 0x7d, 0x5f, + 0xaa, 0xa9, 0x65, 0xf6, 0x9e, 0x41, 0xdf, 0xc9, 0x84, 0xc0, 0x5c, 0xe4, 0xc1, 0x9c, 0x1f, 0xcc, + 0x4c, 0x1f, 0x40, 0xd1, 0xeb, 0x7c, 0x70, 0x96, 0x39, 0x70, 0x9e, 0x94, 0x8c, 0x5c, 0xfa, 0x00, + 0x3d, 0x28, 0xc1, 0x64, 0x7d, 0x7b, 0xd7, 0x69, 0x9b, 0x17, 0x0d, 0x34, 0xe5, 0x23, 0x83, 0xbe, + 0x11, 0x96, 0xc9, 0xd3, 0x79, 0x99, 0xdc, 0xb0, 0xbf, 0x12, 0x8c, 0x42, 0x84, 0x34, 0x5e, 0xe5, + 0x4b, 0xa3, 0xc8, 0x49, 0xe3, 0x09, 0xa2, 0x84, 0xd2, 0x97, 0xc3, 0x4b, 0x9e, 0x0a, 0xb9, 0x7a, + 0x57, 0x6b, 0x61, 0xf4, 0x09, 0x19, 0x66, 0x56, 0xb1, 0xb6, 0x87, 0x8b, 0xdd, 0xae, 0x65, 0xee, + 0x61, 0x54, 0x0a, 0xf4, 0xf5, 0x14, 0x4c, 0xd8, 0x6e, 0xa6, 0x4a, 0x9b, 0xd4, 0x60, 0x4a, 0xf5, + 0x5e, 0x95, 0xd3, 0x00, 0x7a, 0x1b, 0x1b, 0x8e, 0xee, 0xe8, 0xd8, 0x3e, 0x25, 0x5d, 0x23, 0xdf, + 0x30, 0xa5, 0x86, 0x52, 0xd0, 0xb7, 0x24, 0x51, 0x1d, 0x23, 0x5c, 0xcc, 0x87, 0x39, 0x88, 0x90, + 0xea, 0x6b, 0x24, 0x11, 0x1d, 0x1b, 0x48, 0x2e, 0x99, 0x6c, 0xdf, 0x9c, 0x49, 0x2e, 0x5c, 0x37, + 0x47, 0xb5, 0xd6, 0xac, 0x6f, 0x94, 0x56, 0x9a, 0xf5, 0xf5, 0x62, 0xa9, 0x5c, 0xc0, 0xca, 0x71, + 0x28, 0x90, 0xc7, 0x66, 0xa5, 0xde, 0x5c, 0x2c, 0xaf, 0x96, 0x1b, 0xe5, 0xc5, 0xc2, 0xa6, 0xa2, + 0xc0, 0x9c, 0x5a, 0xfe, 0xb1, 0x8d, 0x72, 0xbd, 0xd1, 0x5c, 0x2a, 0x56, 0x56, 0xcb, 0x8b, 0x85, + 0x2d, 0xf7, 0xe7, 0xd5, 0xca, 0x5a, 0xa5, 0xd1, 0x54, 0xcb, 0xc5, 0xd2, 0x4a, 0x79, 0xb1, 0xb0, + 0xad, 0x5c, 0x0e, 0x97, 0x55, 0x6b, 0xcd, 0xe2, 0xfa, 0xba, 0x5a, 0x3b, 0x5b, 0x6e, 0xb2, 0x3f, + 0xea, 0x05, 0x9d, 0x16, 0xd4, 0x68, 0xd6, 0x57, 0x8a, 0x6a, 0xb9, 0xb8, 0xb0, 0x5a, 0x2e, 0xdc, + 0x8f, 0x9e, 0x2d, 0xc3, 0xec, 0x9a, 0x76, 0x01, 0xd7, 0xb7, 0x35, 0x0b, 0x6b, 0xe7, 0x3b, 0x18, + 0x5d, 0x2b, 0x80, 0x27, 0xfa, 0x44, 0x18, 0xaf, 0x32, 0x8f, 0xd7, 0xcd, 0x7d, 0x04, 0xcc, 0x15, + 0x11, 0x01, 0xd8, 0xbf, 0xf8, 0xcd, 0x60, 0x85, 0x03, 0xec, 0xc9, 0x09, 0xe9, 0x25, 0x43, 0xec, + 0x67, 0x1e, 0x05, 0x88, 0xa1, 0x2f, 0xca, 0x30, 0x57, 0x31, 0xf6, 0x74, 0x07, 0x2f, 0x63, 0x03, + 0x5b, 0xee, 0x38, 0x20, 0x04, 0xc3, 0x23, 0x72, 0x08, 0x86, 0x25, 0x1e, 0x86, 0x5b, 0xfa, 0x88, + 0x8d, 0x2f, 0x23, 0x62, 0xb4, 0xbd, 0x0a, 0xa6, 0x74, 0x92, 0xaf, 0xa4, 0xb7, 0x99, 0xc4, 0x82, + 0x04, 0xe5, 0x3a, 0x98, 0xa5, 0x2f, 0x4b, 0x7a, 0x07, 0xdf, 0x8b, 0x2f, 0xb1, 0x71, 0x97, 0x4f, + 0x44, 0xbf, 0xe8, 0x37, 0xbe, 0x0a, 0x87, 0xe5, 0x8f, 0x24, 0x65, 0x2a, 0x19, 0x98, 0x2f, 0x7a, + 0x34, 0x34, 0xbf, 0x7d, 0xad, 0x4c, 0x47, 0xdf, 0x93, 0x60, 0xba, 0xee, 0x98, 0x5d, 0x57, 0x65, + 0x75, 0x63, 0x4b, 0x0c, 0xdc, 0x8f, 0x85, 0xdb, 0x58, 0x89, 0x07, 0xf7, 0x09, 0x7d, 0xe4, 0x18, + 0x2a, 0x20, 0xa2, 0x85, 0x7d, 0xcb, 0x6f, 0x61, 0x4b, 0x1c, 0x2a, 0xb7, 0x26, 0xa2, 0xf6, 0x7d, + 0xd8, 0xbe, 0x5e, 0x24, 0x43, 0xc1, 0x53, 0x33, 0xa7, 0xb4, 0x6b, 0x59, 0xd8, 0x70, 0xc4, 0x40, + 0xf8, 0xcb, 0x30, 0x08, 0x2b, 0x3c, 0x08, 0xb7, 0xc6, 0x28, 0xb3, 0x57, 0x4a, 0x8a, 0x6d, 0xec, + 0x03, 0x3e, 0x9a, 0xf7, 0x72, 0x68, 0xfe, 0x68, 0x72, 0xb6, 0x92, 0x41, 0xba, 0x32, 0x04, 0xa2, + 0xc7, 0xa1, 0xe0, 0x8e, 0x49, 0xa5, 0x46, 0xe5, 0x6c, 0xb9, 0x59, 0xa9, 0x9e, 0xad, 0x34, 0xca, + 0x05, 0x8c, 0x5e, 0x28, 0xc3, 0x0c, 0x65, 0x4d, 0xc5, 0x7b, 0xe6, 0x05, 0xc1, 0x5e, 0xef, 0x8b, + 0x09, 0x8d, 0x85, 0x70, 0x09, 0x11, 0x2d, 0xe3, 0x17, 0x12, 0x18, 0x0b, 0x31, 0xe4, 0x1e, 0x4d, + 0xbd, 0xd5, 0xbe, 0x66, 0xb0, 0xd5, 0xa7, 0xb5, 0xf4, 0xed, 0xad, 0x5e, 0x94, 0x05, 0xa0, 0x95, + 0x3c, 0xab, 0xe3, 0x8b, 0x68, 0x2d, 0xc0, 0x84, 0x53, 0xdb, 0xcc, 0x40, 0xb5, 0x95, 0xfa, 0xa9, + 0xed, 0xbb, 0xc3, 0x63, 0xd6, 0x02, 0x8f, 0xde, 0x4d, 0x91, 0xe2, 0x76, 0x39, 0x89, 0x9e, 0x1d, + 0x7a, 0x8a, 0x22, 0xf1, 0x56, 0xe7, 0x55, 0x30, 0x45, 0x1e, 0xab, 0xda, 0x0e, 0x66, 0x6d, 0x28, + 0x48, 0x50, 0xce, 0xc0, 0x0c, 0xcd, 0xd8, 0x32, 0x0d, 0xb7, 0x3e, 0x59, 0x92, 0x81, 0x4b, 0x73, + 0x41, 0x6c, 0x59, 0x58, 0x73, 0x4c, 0x8b, 0xd0, 0xc8, 0x51, 0x10, 0x43, 0x49, 0xe8, 0xeb, 0x7e, + 0x2b, 0x2c, 0x73, 0x9a, 0xf3, 0xc4, 0x24, 0x55, 0x49, 0xa6, 0x37, 0x7b, 0xc3, 0xb5, 0x3f, 0xda, + 0xea, 0x9a, 0x2e, 0xda, 0x4b, 0x64, 0x6a, 0x87, 0x95, 0x93, 0xa0, 0xb0, 0x54, 0x37, 0x6f, 0xa9, + 0x56, 0x6d, 0x94, 0xab, 0x8d, 0xc2, 0x66, 0x5f, 0x8d, 0xda, 0x42, 0xaf, 0xc9, 0x42, 0xf6, 0x1e, + 0x53, 0x37, 0xd0, 0x83, 0x19, 0x4e, 0x25, 0x0c, 0xec, 0x5c, 0x34, 0xad, 0x0b, 0x7e, 0x43, 0x0d, + 0x12, 0xe2, 0xb1, 0x09, 0x54, 0x49, 0x1e, 0xa8, 0x4a, 0xd9, 0x7e, 0xaa, 0xf4, 0xcb, 0x61, 0x55, + 0xba, 0x83, 0x57, 0xa5, 0xeb, 0xfb, 0xc8, 0xdf, 0x65, 0x3e, 0xa2, 0x03, 0xf8, 0xa8, 0xdf, 0x01, + 0xdc, 0xc5, 0xc1, 0xf8, 0x78, 0x31, 0x32, 0xc9, 0x00, 0xfc, 0x42, 0xaa, 0x0d, 0xbf, 0x1f, 0xd4, + 0x5b, 0x11, 0x50, 0x6f, 0xf7, 0xe9, 0x13, 0xf4, 0xfd, 0x5d, 0xc7, 0xfd, 0xfb, 0xbb, 0x89, 0x0b, + 0xca, 0x09, 0x38, 0xb6, 0x58, 0x59, 0x5a, 0x2a, 0xab, 0xe5, 0x6a, 0xa3, 0x59, 0x2d, 0x37, 0xce, + 0xd5, 0xd4, 0x7b, 0x0b, 0x1d, 0xf4, 0xb0, 0x0c, 0xe0, 0x4a, 0xa8, 0xa4, 0x19, 0x2d, 0xdc, 0x11, + 0xeb, 0xd1, 0xff, 0xa7, 0x94, 0xac, 0x4f, 0x08, 0xe8, 0x47, 0xc0, 0xf9, 0x72, 0x49, 0xbc, 0x55, + 0x46, 0x12, 0x4b, 0x06, 0xea, 0x1b, 0x1f, 0x0d, 0xb6, 0xe7, 0x65, 0x70, 0xd4, 0xa3, 0xc7, 0xb2, + 0xf7, 0x9f, 0xf6, 0xbd, 0x25, 0x0b, 0x73, 0x0c, 0x16, 0x6f, 0x1e, 0xff, 0xdc, 0x8c, 0xc8, 0x44, + 0x1e, 0xc1, 0x24, 0x9b, 0xb6, 0x7b, 0xdd, 0xbb, 0xff, 0xae, 0x2c, 0xc3, 0x74, 0x17, 0x5b, 0x3b, + 0xba, 0x6d, 0xeb, 0xa6, 0x41, 0x17, 0xe4, 0xe6, 0x6e, 0x7d, 0xac, 0x2f, 0x71, 0xb2, 0x76, 0x39, + 0xbf, 0xae, 0x59, 0x8e, 0xde, 0xd2, 0xbb, 0x9a, 0xe1, 0xac, 0x07, 0x99, 0xd5, 0xf0, 0x9f, 0xe8, + 0x05, 0x09, 0xa7, 0x35, 0x7c, 0x4d, 0x22, 0x54, 0xe2, 0x77, 0x13, 0x4c, 0x49, 0x62, 0x09, 0x26, + 0x53, 0x8b, 0x8f, 0xa4, 0xaa, 0x16, 0x7d, 0xf0, 0xde, 0x52, 0xae, 0x80, 0x13, 0x95, 0x6a, 0xa9, + 0xa6, 0xaa, 0xe5, 0x52, 0xa3, 0xb9, 0x5e, 0x56, 0xd7, 0x2a, 0xf5, 0x7a, 0xa5, 0x56, 0xad, 0x1f, + 0xa4, 0xb5, 0xa3, 0x8f, 0xcb, 0xbe, 0xc6, 0x2c, 0xe2, 0x56, 0x47, 0x37, 0x30, 0xba, 0xeb, 0x80, + 0x0a, 0xc3, 0xaf, 0xfa, 0x88, 0xe3, 0xcc, 0xca, 0x8f, 0xc0, 0xf9, 0xd5, 0xc9, 0x71, 0xee, 0x4f, + 0xf0, 0x3f, 0x70, 0xf3, 0xff, 0xa2, 0x0c, 0xc7, 0x42, 0x0d, 0x51, 0xc5, 0x3b, 0x23, 0x5b, 0xc9, + 0xfb, 0x99, 0x70, 0xdb, 0xad, 0xf0, 0x98, 0xf6, 0xb3, 0xa6, 0xf7, 0xb1, 0x11, 0x01, 0xeb, 0x1b, + 0x7d, 0x58, 0x57, 0x39, 0x58, 0x9f, 0x3a, 0x04, 0xcd, 0x64, 0xc8, 0xfe, 0x76, 0xaa, 0xc8, 0x5e, + 0x01, 0x27, 0xd6, 0x8b, 0x6a, 0xa3, 0x52, 0xaa, 0xac, 0x17, 0xdd, 0x71, 0x34, 0x34, 0x64, 0x47, + 0x98, 0xeb, 0x3c, 0xe8, 0x7d, 0xf1, 0x7d, 0x7f, 0x16, 0xae, 0xea, 0xdf, 0xd1, 0x96, 0xb6, 0x35, + 0x63, 0x0b, 0x23, 0x5d, 0x04, 0xea, 0x45, 0x98, 0x68, 0x91, 0xec, 0x14, 0xe7, 0xf0, 0xd6, 0x4d, + 0x4c, 0x5f, 0x4e, 0x4b, 0x50, 0xbd, 0x5f, 0xd1, 0xdb, 0xc3, 0x0a, 0xd1, 0xe0, 0x15, 0xe2, 0xe9, + 0xf1, 0xe0, 0xed, 0xe3, 0x3b, 0x42, 0x37, 0x3e, 0xe5, 0xeb, 0xc6, 0x39, 0x4e, 0x37, 0x4a, 0x07, + 0x23, 0x9f, 0x4c, 0x4d, 0xfe, 0xe8, 0xd1, 0xd0, 0x01, 0x44, 0x6a, 0x93, 0x1e, 0x3d, 0x2a, 0xf4, + 0xed, 0xee, 0x5f, 0x29, 0x43, 0x7e, 0x11, 0x77, 0xb0, 0xe8, 0x4a, 0xe4, 0x37, 0x25, 0xd1, 0x0d, + 0x11, 0x0a, 0x03, 0xa5, 0x1d, 0xbd, 0x3a, 0xe2, 0xe8, 0x3b, 0xd8, 0x76, 0xb4, 0x9d, 0x2e, 0x11, + 0xb5, 0xac, 0x06, 0x09, 0xe8, 0x67, 0x25, 0x91, 0xed, 0x92, 0x98, 0x62, 0xfe, 0x63, 0xac, 0x29, + 0x7e, 0x46, 0x82, 0xc9, 0x3a, 0x76, 0x6a, 0x56, 0x1b, 0x5b, 0xa8, 0x1e, 0x60, 0x74, 0x0d, 0x4c, + 0x13, 0x50, 0xdc, 0x69, 0xa6, 0x8f, 0x53, 0x38, 0x49, 0xb9, 0x1e, 0xe6, 0xfc, 0x57, 0xf2, 0x3b, + 0xeb, 0xc6, 0x7b, 0x52, 0xd1, 0x3f, 0x66, 0x44, 0x77, 0x71, 0xd9, 0x92, 0x21, 0xe3, 0x26, 0xa2, + 0x95, 0x8a, 0xed, 0xc8, 0xc6, 0x92, 0x4a, 0x7f, 0xa3, 0xeb, 0xad, 0x12, 0xc0, 0x86, 0x61, 0x7b, + 0x72, 0x7d, 0x7c, 0x02, 0xb9, 0xa2, 0x7f, 0xce, 0x24, 0x9b, 0xc5, 0x04, 0xe5, 0x44, 0x48, 0xec, + 0xb5, 0x09, 0xd6, 0x16, 0x22, 0x89, 0xa5, 0x2f, 0xb3, 0xaf, 0xcc, 0x41, 0xfe, 0x9c, 0xd6, 0xe9, + 0x60, 0x07, 0x7d, 0x55, 0x82, 0x7c, 0xc9, 0xc2, 0x9a, 0x83, 0xc3, 0xa2, 0x43, 0x30, 0x69, 0x99, + 0xa6, 0xb3, 0xae, 0x39, 0xdb, 0x4c, 0x6e, 0xfe, 0x3b, 0x73, 0x18, 0xf8, 0xad, 0x70, 0xf7, 0x71, + 0x17, 0x2f, 0xba, 0x1f, 0xe6, 0x6a, 0x4b, 0x0b, 0x9a, 0xa7, 0x85, 0x44, 0xf4, 0x1f, 0x08, 0x26, + 0x77, 0x0c, 0xbc, 0x63, 0x1a, 0x7a, 0xcb, 0xb3, 0x39, 0xbd, 0x77, 0xf4, 0x41, 0x5f, 0xa6, 0x0b, + 0x9c, 0x4c, 0xe7, 0x85, 0x4b, 0x49, 0x26, 0xd0, 0xfa, 0x10, 0xbd, 0xc7, 0xd5, 0x70, 0x25, 0xed, + 0x0c, 0x9a, 0x8d, 0x5a, 0xb3, 0xa4, 0x96, 0x8b, 0x8d, 0x72, 0x73, 0xb5, 0x56, 0x2a, 0xae, 0x36, + 0xd5, 0xf2, 0x7a, 0xad, 0x80, 0xd1, 0xdf, 0x49, 0xae, 0x70, 0x5b, 0xe6, 0x1e, 0xb6, 0xd0, 0xb2, + 0x90, 0x9c, 0xe3, 0x64, 0xc2, 0x30, 0xf8, 0x65, 0x61, 0xa7, 0x0d, 0x26, 0x1d, 0xc6, 0x41, 0x84, + 0xf2, 0x7e, 0x48, 0xa8, 0xb9, 0xc7, 0x92, 0x7a, 0x14, 0x48, 0xfa, 0x7f, 0x49, 0x30, 0x51, 0x32, + 0x8d, 0x3d, 0x6c, 0x39, 0xe1, 0xf9, 0x4e, 0x58, 0x9a, 0x19, 0x5e, 0x9a, 0xee, 0x20, 0x89, 0x0d, + 0xc7, 0x32, 0xbb, 0xde, 0x84, 0xc7, 0x7b, 0x45, 0xaf, 0x4f, 0x2a, 0x61, 0x56, 0x72, 0xf4, 0xc2, + 0x67, 0xff, 0x82, 0x38, 0xf6, 0xe4, 0x9e, 0x06, 0xf0, 0x70, 0x12, 0x5c, 0xfa, 0x33, 0x90, 0x7e, + 0x97, 0xf2, 0x25, 0x19, 0x66, 0x69, 0xe3, 0xab, 0x63, 0x62, 0xa1, 0xa1, 0x5a, 0x78, 0xc9, 0xb1, + 0x47, 0xf8, 0x2b, 0x47, 0x38, 0xf1, 0xe7, 0xb5, 0x6e, 0xd7, 0x5f, 0x7e, 0x5e, 0x39, 0xa2, 0xb2, + 0x77, 0xaa, 0xe6, 0x0b, 0x79, 0xc8, 0x6a, 0xbb, 0xce, 0x36, 0xfa, 0x9e, 0xf0, 0xe4, 0x93, 0xeb, + 0x0c, 0x18, 0x3f, 0x11, 0x90, 0x1c, 0x87, 0x9c, 0x63, 0x5e, 0xc0, 0x9e, 0x1c, 0xe8, 0x8b, 0x0b, + 0x87, 0xd6, 0xed, 0x36, 0xc8, 0x07, 0x06, 0x87, 0xf7, 0xee, 0xda, 0x3a, 0x5a, 0xab, 0x65, 0xee, + 0x1a, 0x4e, 0xc5, 0x5b, 0x82, 0x0e, 0x12, 0xd0, 0xe7, 0x33, 0x22, 0x93, 0x59, 0x01, 0x06, 0x93, + 0x41, 0x76, 0x7e, 0x88, 0xa6, 0x34, 0x0f, 0x37, 0x16, 0xd7, 0xd7, 0x9b, 0x8d, 0xda, 0xbd, 0xe5, + 0x6a, 0x60, 0x78, 0x36, 0x2b, 0xd5, 0x66, 0x63, 0xa5, 0xdc, 0x2c, 0x6d, 0xa8, 0x64, 0x9d, 0xb0, + 0x58, 0x2a, 0xd5, 0x36, 0xaa, 0x8d, 0x02, 0x46, 0x6f, 0x92, 0x60, 0xa6, 0xd4, 0x31, 0x6d, 0x1f, + 0xe1, 0xab, 0x03, 0x84, 0x7d, 0x31, 0x66, 0x42, 0x62, 0x44, 0xff, 0x96, 0x11, 0x75, 0x3a, 0xf0, + 0x04, 0x12, 0x22, 0x1f, 0xd1, 0x4b, 0xbd, 0x5e, 0xc8, 0xe9, 0x60, 0x30, 0xbd, 0xf4, 0x9b, 0xc4, + 0x67, 0x6e, 0x87, 0x89, 0x22, 0x55, 0x0c, 0xf4, 0xd7, 0x19, 0xc8, 0x97, 0x4c, 0x63, 0x53, 0xdf, + 0x72, 0x8d, 0x39, 0x6c, 0x68, 0xe7, 0x3b, 0x78, 0x51, 0x73, 0xb4, 0x3d, 0x1d, 0x5f, 0x24, 0x15, + 0x98, 0x54, 0x7b, 0x52, 0x5d, 0xa6, 0x58, 0x0a, 0x3e, 0xbf, 0xbb, 0x45, 0x98, 0x9a, 0x54, 0xc3, + 0x49, 0xca, 0x53, 0xe1, 0x72, 0xfa, 0xba, 0x6e, 0x61, 0x0b, 0x77, 0xb0, 0x66, 0x63, 0x77, 0x5a, + 0x64, 0xe0, 0x0e, 0x51, 0xda, 0x49, 0x35, 0xea, 0xb3, 0x72, 0x06, 0x66, 0xe8, 0x27, 0x62, 0x8a, + 0xd8, 0x44, 0x8d, 0x27, 0x55, 0x2e, 0x4d, 0x79, 0x02, 0xe4, 0xf0, 0x03, 0x8e, 0xa5, 0x9d, 0x6a, + 0x13, 0xbc, 0x2e, 0x9f, 0xa7, 0x5e, 0x87, 0xf3, 0x9e, 0xd7, 0xe1, 0x7c, 0x9d, 0xf8, 0x24, 0xaa, + 0x34, 0x17, 0x7a, 0xd9, 0xa4, 0x6f, 0x48, 0xfc, 0xbb, 0x14, 0x28, 0x86, 0x02, 0x59, 0x43, 0xdb, + 0xc1, 0x4c, 0x2f, 0xc8, 0xb3, 0x72, 0x23, 0x1c, 0xd5, 0xf6, 0x34, 0x47, 0xb3, 0x56, 0xcd, 0x96, + 0xd6, 0x21, 0x83, 0x9f, 0xd7, 0xf2, 0x7b, 0x3f, 0x90, 0x1d, 0x21, 0xc7, 0xb4, 0x30, 0xc9, 0xe5, + 0xed, 0x08, 0x79, 0x09, 0x2e, 0x75, 0xbd, 0x65, 0x1a, 0x84, 0x7f, 0x59, 0x25, 0xcf, 0xae, 0x54, + 0xda, 0xba, 0xed, 0x56, 0x84, 0x50, 0xa9, 0xd2, 0xad, 0x8d, 0xfa, 0x25, 0xa3, 0x45, 0x76, 0x83, + 0x26, 0xd5, 0xa8, 0xcf, 0xca, 0x02, 0x4c, 0xb3, 0x8d, 0x90, 0x35, 0x57, 0xaf, 0xf2, 0x44, 0xaf, + 0xae, 0xe1, 0x7d, 0xba, 0x28, 0x9e, 0xf3, 0xd5, 0x20, 0x9f, 0x1a, 0xfe, 0x49, 0xb9, 0x1b, 0xae, + 0x64, 0xaf, 0xa5, 0x5d, 0xdb, 0x31, 0x77, 0x28, 0xe8, 0x4b, 0x7a, 0x87, 0xd6, 0x60, 0x82, 0xd4, + 0x20, 0x2e, 0x8b, 0x72, 0x2b, 0x1c, 0xef, 0x5a, 0x78, 0x13, 0x5b, 0xf7, 0x69, 0x3b, 0xbb, 0x0f, + 0x34, 0x2c, 0xcd, 0xb0, 0xbb, 0xa6, 0xe5, 0x9c, 0x9a, 0x24, 0xcc, 0xf7, 0xfd, 0xc6, 0x3a, 0xca, + 0x49, 0xc8, 0x53, 0xf1, 0xa1, 0xe7, 0xe7, 0x84, 0xdd, 0x39, 0x59, 0x85, 0x62, 0xcd, 0xb3, 0x5b, + 0x60, 0x82, 0xf5, 0x70, 0x04, 0xa8, 0xe9, 0x5b, 0x4f, 0xf6, 0xac, 0x2b, 0x30, 0x2a, 0xaa, 0x97, + 0x4d, 0x79, 0x12, 0xe4, 0x5b, 0xa4, 0x5a, 0x04, 0xb3, 0xe9, 0x5b, 0xaf, 0xec, 0x5f, 0x28, 0xc9, + 0xa2, 0xb2, 0xac, 0xe8, 0x2f, 0x64, 0x21, 0x0f, 0xd0, 0x38, 0x8e, 0x93, 0xb5, 0xea, 0xaf, 0x4b, + 0x43, 0x74, 0x9b, 0x37, 0xc1, 0x0d, 0xac, 0x4f, 0x64, 0xf6, 0xc7, 0x62, 0x73, 0x61, 0xc3, 0x9b, + 0x0c, 0xba, 0x56, 0x49, 0xbd, 0x51, 0x54, 0xdd, 0x99, 0xfc, 0xa2, 0x3b, 0x89, 0xbc, 0x11, 0xae, + 0x1f, 0x90, 0xbb, 0xdc, 0x68, 0x56, 0x8b, 0x6b, 0xe5, 0xc2, 0x26, 0x6f, 0xdb, 0xd4, 0x1b, 0xb5, + 0xf5, 0xa6, 0xba, 0x51, 0xad, 0x56, 0xaa, 0xcb, 0x94, 0x98, 0x6b, 0x12, 0x9e, 0x0c, 0x32, 0x9c, + 0x53, 0x2b, 0x8d, 0x72, 0xb3, 0x54, 0xab, 0x2e, 0x55, 0x96, 0x0b, 0xfa, 0x20, 0xc3, 0xe8, 0x7e, + 0xe5, 0x1a, 0xb8, 0x8a, 0xe3, 0xa4, 0x52, 0xab, 0xba, 0x33, 0xdb, 0x52, 0xb1, 0x5a, 0x2a, 0xbb, + 0xd3, 0xd8, 0x0b, 0x0a, 0x82, 0x13, 0x94, 0x5c, 0x73, 0xa9, 0xb2, 0x1a, 0xde, 0x8c, 0xfa, 0x58, + 0x46, 0x39, 0x05, 0x97, 0x85, 0xbf, 0x55, 0xaa, 0x67, 0x8b, 0xab, 0x95, 0xc5, 0xc2, 0x1f, 0x66, + 0x94, 0xeb, 0xe0, 0x6a, 0xee, 0x2f, 0xba, 0xaf, 0xd4, 0xac, 0x2c, 0x36, 0xd7, 0x2a, 0xf5, 0xb5, + 0x62, 0xa3, 0xb4, 0x52, 0xf8, 0x38, 0x99, 0x2f, 0xf8, 0x06, 0x70, 0xc8, 0x2d, 0xf3, 0x45, 0xe1, + 0x31, 0xbd, 0xc8, 0x2b, 0xea, 0xe3, 0xfb, 0xc2, 0x1e, 0x6f, 0xc3, 0x7e, 0xc4, 0x1f, 0x1d, 0x16, + 0x39, 0x15, 0xba, 0x25, 0x01, 0xad, 0x64, 0x3a, 0xd4, 0x18, 0x42, 0x85, 0xae, 0x81, 0xab, 0xaa, + 0x65, 0x8a, 0x94, 0x5a, 0x2e, 0xd5, 0xce, 0x96, 0xd5, 0xe6, 0xb9, 0xe2, 0xea, 0x6a, 0xb9, 0xd1, + 0x5c, 0xaa, 0xa8, 0xf5, 0x46, 0x61, 0x13, 0xfd, 0xb3, 0xe4, 0xaf, 0xe6, 0x84, 0xa4, 0xf5, 0xd7, + 0x52, 0xd2, 0x66, 0x1d, 0xbb, 0x6a, 0xf3, 0x23, 0x90, 0xb7, 0x1d, 0xcd, 0xd9, 0xb5, 0x59, 0xab, + 0x7e, 0x4c, 0xff, 0x56, 0x3d, 0x5f, 0x27, 0x99, 0x54, 0x96, 0x19, 0xfd, 0x45, 0x26, 0x49, 0x33, + 0x1d, 0xc1, 0x82, 0x8e, 0x3e, 0x84, 0x88, 0x4f, 0x03, 0xf2, 0xb4, 0xbd, 0x52, 0x6f, 0x16, 0x57, + 0xd5, 0x72, 0x71, 0xf1, 0x3e, 0x7f, 0x19, 0x07, 0x2b, 0x27, 0xe0, 0xd8, 0x46, 0xb5, 0xb8, 0xb0, + 0x5a, 0x26, 0xcd, 0xa5, 0x56, 0xad, 0x96, 0x4b, 0xae, 0xdc, 0x7f, 0x96, 0x6c, 0x9a, 0xb8, 0x16, + 0x34, 0xe1, 0xdb, 0xb5, 0x72, 0x42, 0xf2, 0xff, 0x9a, 0xb0, 0x6f, 0x51, 0xa0, 0x61, 0x61, 0x5a, + 0xa3, 0xc5, 0xe1, 0xf3, 0x42, 0xee, 0x44, 0x42, 0x9c, 0x24, 0xc3, 0xe3, 0x3f, 0x0f, 0x81, 0xc7, + 0x09, 0x38, 0x16, 0xc6, 0x83, 0xb8, 0x15, 0x45, 0xc3, 0xf0, 0xe5, 0x49, 0xc8, 0xd7, 0x71, 0x07, + 0xb7, 0x1c, 0xf4, 0x96, 0x90, 0x31, 0x31, 0x07, 0x92, 0xef, 0xc6, 0x22, 0xe9, 0x6d, 0x6e, 0xfa, + 0x2c, 0xf5, 0x4c, 0x9f, 0x63, 0xcc, 0x00, 0x39, 0x91, 0x19, 0x90, 0x4d, 0xc1, 0x0c, 0xc8, 0x0d, + 0x6f, 0x06, 0xe4, 0x07, 0x99, 0x01, 0xe8, 0xb5, 0xf9, 0xa4, 0xbd, 0x04, 0x15, 0xf5, 0xe1, 0x0e, + 0xfe, 0xff, 0x33, 0x9b, 0xa4, 0x57, 0xe9, 0xcb, 0x71, 0x32, 0x2d, 0xfe, 0x9e, 0x9c, 0xc2, 0xf2, + 0x83, 0x72, 0x2d, 0x5c, 0x1d, 0xbc, 0x37, 0xcb, 0xcf, 0xa8, 0xd4, 0x1b, 0x75, 0x32, 0xe2, 0x97, + 0x6a, 0xaa, 0xba, 0xb1, 0x4e, 0xd7, 0x90, 0x4f, 0x82, 0x12, 0x50, 0x51, 0x37, 0xaa, 0x74, 0x7c, + 0xdf, 0xe2, 0xa9, 0x2f, 0x55, 0xaa, 0x8b, 0x4d, 0xbf, 0xcd, 0x54, 0x97, 0x6a, 0x85, 0x6d, 0x77, + 0xca, 0x16, 0xa2, 0xee, 0x0e, 0xd0, 0xac, 0x84, 0x62, 0x75, 0xb1, 0xb9, 0x56, 0x2d, 0xaf, 0xd5, + 0xaa, 0x95, 0x12, 0x49, 0xaf, 0x97, 0x1b, 0x05, 0xdd, 0x1d, 0x68, 0x7a, 0x2c, 0x8a, 0x7a, 0xb9, + 0xa8, 0x96, 0x56, 0xca, 0x2a, 0x2d, 0xf2, 0x7e, 0xe5, 0x7a, 0x38, 0x53, 0xac, 0xd6, 0x1a, 0x6e, + 0x4a, 0xb1, 0x7a, 0x5f, 0xe3, 0xbe, 0xf5, 0x72, 0x73, 0x5d, 0xad, 0x95, 0xca, 0xf5, 0xba, 0xdb, + 0x4e, 0x99, 0xfd, 0x51, 0xe8, 0x28, 0x4f, 0x87, 0xdb, 0x43, 0xac, 0x95, 0x1b, 0x64, 0xc3, 0x72, + 0xad, 0x46, 0x7c, 0x56, 0x16, 0xcb, 0xcd, 0x95, 0x62, 0xbd, 0x59, 0xa9, 0x96, 0x6a, 0x6b, 0xeb, + 0xc5, 0x46, 0xc5, 0x6d, 0xce, 0xeb, 0x6a, 0xad, 0x51, 0x6b, 0x9e, 0x2d, 0xab, 0xf5, 0x4a, 0xad, + 0x5a, 0x30, 0xdc, 0x2a, 0x87, 0xda, 0xbf, 0xd7, 0x0f, 0x9b, 0xca, 0x55, 0x70, 0xca, 0x4b, 0x5f, + 0xad, 0xb9, 0x82, 0x0e, 0x59, 0x24, 0xdd, 0x54, 0x2d, 0x92, 0x7f, 0x95, 0x20, 0x5b, 0x77, 0xcc, + 0x2e, 0xfa, 0xe1, 0xa0, 0x83, 0x39, 0x0d, 0x60, 0x91, 0xfd, 0x47, 0x77, 0x16, 0xc6, 0xe6, 0x65, + 0xa1, 0x14, 0xf4, 0x07, 0xc2, 0x9b, 0x26, 0x41, 0x9f, 0x6d, 0x76, 0x23, 0x6c, 0x95, 0xef, 0x88, + 0x9d, 0x22, 0x89, 0x26, 0x94, 0x4c, 0xdf, 0x7f, 0x61, 0x98, 0x6d, 0x11, 0x04, 0x27, 0x43, 0xb0, + 0xb9, 0xf2, 0xf7, 0x54, 0x02, 0x2b, 0x97, 0xc3, 0x65, 0x3d, 0xca, 0x45, 0x74, 0x6a, 0x53, 0xf9, + 0x21, 0x78, 0x4c, 0x48, 0xbd, 0xcb, 0x6b, 0xb5, 0xb3, 0x65, 0x5f, 0x91, 0x17, 0x8b, 0x8d, 0x62, + 0x61, 0x0b, 0x7d, 0x46, 0x86, 0xec, 0x9a, 0xb9, 0xd7, 0xbb, 0x57, 0x65, 0xe0, 0x8b, 0xa1, 0xb5, + 0x50, 0xef, 0x95, 0xf7, 0x9a, 0x17, 0x12, 0xfb, 0x5a, 0xf4, 0xbe, 0xf4, 0xe7, 0xa5, 0x24, 0x62, + 0x5f, 0x3b, 0xe8, 0x66, 0xf4, 0xdf, 0x0f, 0x23, 0xf6, 0x08, 0xd1, 0x62, 0xe5, 0x0c, 0x9c, 0x0e, + 0x3e, 0x54, 0x16, 0xcb, 0xd5, 0x46, 0x65, 0xe9, 0xbe, 0x40, 0xb8, 0x15, 0x55, 0x48, 0xfc, 0x83, + 0xba, 0xb1, 0xf8, 0x99, 0xc6, 0x29, 0x38, 0x1e, 0x7c, 0x5b, 0x2e, 0x37, 0xbc, 0x2f, 0xf7, 0xa3, + 0x07, 0x73, 0x30, 0x43, 0xbb, 0xf5, 0x8d, 0x6e, 0x5b, 0x73, 0x30, 0x7a, 0x52, 0x80, 0xee, 0x0d, + 0x70, 0xb4, 0xb2, 0xbe, 0x54, 0xaf, 0x3b, 0xa6, 0xa5, 0x6d, 0xe1, 0x62, 0xbb, 0x6d, 0x31, 0x69, + 0xf5, 0x26, 0xa3, 0x77, 0x0a, 0xaf, 0xf3, 0xf1, 0x43, 0x09, 0x2d, 0x33, 0x02, 0xf5, 0x2f, 0x09, + 0xad, 0xcb, 0x09, 0x10, 0x4c, 0x86, 0xfe, 0xfd, 0x23, 0x6e, 0x73, 0xd1, 0xb8, 0x6c, 0x9e, 0x79, + 0x8e, 0x04, 0x53, 0x0d, 0x7d, 0x07, 0x3f, 0xd3, 0x34, 0xb0, 0xad, 0x4c, 0x80, 0xbc, 0xbc, 0xd6, + 0x28, 0x1c, 0x71, 0x1f, 0x5c, 0xa3, 0x2a, 0x43, 0x1e, 0xca, 0x6e, 0x01, 0xee, 0x43, 0xb1, 0x51, + 0x90, 0xdd, 0x87, 0xb5, 0x72, 0xa3, 0x90, 0x75, 0x1f, 0xaa, 0xe5, 0x46, 0x21, 0xe7, 0x3e, 0xac, + 0xaf, 0x36, 0x0a, 0x79, 0xf7, 0xa1, 0x52, 0x6f, 0x14, 0x26, 0xdc, 0x87, 0x85, 0x7a, 0xa3, 0x30, + 0xe9, 0x3e, 0x9c, 0xad, 0x37, 0x0a, 0x53, 0xee, 0x43, 0xa9, 0xd1, 0x28, 0x80, 0xfb, 0x70, 0x4f, + 0xbd, 0x51, 0x98, 0x76, 0x1f, 0x8a, 0xa5, 0x46, 0x61, 0x86, 0x3c, 0x94, 0x1b, 0x85, 0x59, 0xf7, + 0xa1, 0x5e, 0x6f, 0x14, 0xe6, 0x08, 0xe5, 0x7a, 0xa3, 0x70, 0x94, 0x94, 0x55, 0x69, 0x14, 0x0a, + 0xee, 0xc3, 0x4a, 0xbd, 0x51, 0x38, 0x46, 0x32, 0xd7, 0x1b, 0x05, 0x85, 0x14, 0x5a, 0x6f, 0x14, + 0x2e, 0x23, 0x79, 0xea, 0x8d, 0xc2, 0x71, 0x52, 0x44, 0xbd, 0x51, 0x38, 0x41, 0xd8, 0x28, 0x37, + 0x0a, 0x27, 0x49, 0x1e, 0xb5, 0x51, 0xb8, 0x9c, 0x7c, 0xaa, 0x36, 0x0a, 0xa7, 0x08, 0x63, 0xe5, + 0x46, 0xe1, 0x0a, 0xf2, 0xa0, 0x36, 0x0a, 0x88, 0x7c, 0x2a, 0x36, 0x0a, 0x57, 0xa2, 0xc7, 0xc0, + 0xd4, 0x32, 0x76, 0x28, 0x88, 0xa8, 0x00, 0xf2, 0x32, 0x76, 0xc2, 0x66, 0xfc, 0x57, 0x64, 0xb8, + 0x9c, 0x4d, 0xfd, 0x96, 0x2c, 0x73, 0x67, 0x15, 0x6f, 0x69, 0xad, 0x4b, 0xe5, 0x07, 0x5c, 0x13, + 0x2a, 0xbc, 0x2f, 0xab, 0x40, 0xb6, 0x1b, 0x74, 0x46, 0xe4, 0x39, 0xd6, 0xe2, 0xf4, 0x16, 0xa3, + 0xe4, 0x60, 0x31, 0x8a, 0x59, 0x64, 0xff, 0x14, 0xd6, 0x68, 0x6e, 0xfd, 0x38, 0xd3, 0xb3, 0x7e, + 0xec, 0x36, 0x93, 0x2e, 0xb6, 0x6c, 0xd3, 0xd0, 0x3a, 0x75, 0xb6, 0x71, 0x4f, 0x57, 0xbd, 0x7a, + 0x93, 0x95, 0x1f, 0xf3, 0x5a, 0x06, 0xb5, 0xca, 0x9e, 0x16, 0x37, 0xc3, 0xed, 0xad, 0x66, 0x44, + 0x23, 0xf9, 0xb8, 0xdf, 0x48, 0x1a, 0x5c, 0x23, 0xb9, 0xfb, 0x00, 0xb4, 0x93, 0xb5, 0x97, 0xca, + 0x70, 0x53, 0x8b, 0xc0, 0xad, 0xd5, 0x5b, 0xae, 0x96, 0xd1, 0x67, 0x24, 0x38, 0x59, 0x36, 0xfa, + 0x59, 0xf8, 0x61, 0x5d, 0x78, 0x53, 0x18, 0x9a, 0x75, 0x5e, 0xa4, 0xb7, 0xf7, 0xad, 0x76, 0x7f, + 0x9a, 0x11, 0x12, 0xfd, 0xa4, 0x2f, 0xd1, 0x3a, 0x27, 0xd1, 0xbb, 0x86, 0x27, 0x9d, 0x4c, 0xa0, + 0xd5, 0x91, 0x76, 0x40, 0x59, 0xf4, 0xf5, 0x2c, 0x3c, 0x86, 0xfa, 0xde, 0x30, 0x0e, 0x69, 0x2b, + 0x2b, 0x1a, 0x6d, 0x15, 0xdb, 0x8e, 0x66, 0x39, 0xdc, 0x79, 0xe8, 0x9e, 0xa9, 0x54, 0x26, 0x85, + 0xa9, 0x94, 0x34, 0x70, 0x2a, 0x85, 0xde, 0x11, 0x36, 0x1f, 0xce, 0xf1, 0x18, 0x17, 0xfb, 0xf7, + 0xff, 0x71, 0x35, 0x8c, 0x82, 0xda, 0xb7, 0x2b, 0x7e, 0x9c, 0x83, 0x7a, 0xe9, 0xc0, 0x25, 0x24, + 0x43, 0xfc, 0x0f, 0x46, 0x6b, 0xe7, 0x65, 0xc3, 0xdf, 0x78, 0xa3, 0xa4, 0xd0, 0x4e, 0xd5, 0x40, + 0xff, 0xd4, 0x04, 0x4c, 0x91, 0xb6, 0xb0, 0xaa, 0x1b, 0x17, 0xd0, 0xc3, 0x32, 0xcc, 0x54, 0xf1, + 0xc5, 0xd2, 0xb6, 0xd6, 0xe9, 0x60, 0x63, 0x0b, 0x87, 0xcd, 0xf6, 0x53, 0x30, 0xa1, 0x75, 0xbb, + 0xd5, 0x60, 0x9f, 0xc1, 0x7b, 0x65, 0xfd, 0xef, 0xd7, 0xfa, 0x36, 0xf2, 0x4c, 0x4c, 0x23, 0xf7, + 0xcb, 0x9d, 0x0f, 0x97, 0x19, 0x31, 0x43, 0xbe, 0x06, 0xa6, 0x5b, 0x5e, 0x16, 0xff, 0xdc, 0x44, + 0x38, 0x09, 0xfd, 0x6d, 0xa2, 0x6e, 0x40, 0xa8, 0xf0, 0x64, 0x4a, 0x81, 0x47, 0x6c, 0x87, 0x9c, + 0x80, 0x63, 0x8d, 0x5a, 0xad, 0xb9, 0x56, 0xac, 0xde, 0x17, 0x9c, 0x57, 0xde, 0x44, 0x2f, 0xcf, + 0xc2, 0x5c, 0xdd, 0xec, 0xec, 0xe1, 0x00, 0xa6, 0x0a, 0xe7, 0x90, 0x13, 0x96, 0x53, 0x66, 0x9f, + 0x9c, 0x94, 0x93, 0x90, 0xd7, 0x0c, 0xfb, 0x22, 0xf6, 0x6c, 0x43, 0xf6, 0xc6, 0x60, 0x7c, 0x7f, + 0xb8, 0x1d, 0xab, 0x3c, 0x8c, 0x77, 0x0c, 0x90, 0x24, 0xcf, 0x55, 0x04, 0x90, 0x67, 0x60, 0xc6, + 0xa6, 0x9b, 0x85, 0x8d, 0xd0, 0x9e, 0x30, 0x97, 0x46, 0x58, 0xa4, 0xbb, 0xd5, 0x32, 0x63, 0x91, + 0xbc, 0xa1, 0x87, 0xfd, 0xe6, 0xbf, 0xc1, 0x41, 0x5c, 0x3c, 0x08, 0x63, 0xc9, 0x40, 0x7e, 0xe5, + 0xa8, 0x67, 0x78, 0xa7, 0xe0, 0x38, 0x6b, 0xb5, 0xcd, 0xd2, 0x4a, 0x71, 0x75, 0xb5, 0x5c, 0x5d, + 0x2e, 0x37, 0x2b, 0x8b, 0x74, 0xab, 0x22, 0x48, 0x29, 0x36, 0x1a, 0xe5, 0xb5, 0xf5, 0x46, 0xbd, + 0x59, 0x7e, 0x46, 0xa9, 0x5c, 0x5e, 0x24, 0x2e, 0x71, 0xe4, 0x4c, 0x8b, 0xe7, 0xbc, 0x58, 0xac, + 0xd6, 0xcf, 0x95, 0xd5, 0xc2, 0xf6, 0x99, 0x22, 0x4c, 0x87, 0xfa, 0x79, 0x97, 0xbb, 0x45, 0xbc, + 0xa9, 0xed, 0x76, 0x98, 0xad, 0x56, 0x38, 0xe2, 0x72, 0x47, 0x64, 0x53, 0x33, 0x3a, 0x97, 0x0a, + 0x19, 0xa5, 0x00, 0x33, 0xe1, 0x2e, 0xbd, 0x20, 0xa1, 0xb7, 0x5e, 0x05, 0x53, 0xe7, 0x4c, 0xeb, + 0x02, 0xf1, 0xe3, 0x42, 0xef, 0xa1, 0x71, 0x4d, 0xbc, 0x13, 0xa2, 0xa1, 0x81, 0xfd, 0x95, 0xe2, + 0xde, 0x02, 0x1e, 0xb5, 0xf9, 0x81, 0xa7, 0x40, 0xaf, 0x81, 0xe9, 0x8b, 0x5e, 0xee, 0xa0, 0xa5, + 0x87, 0x92, 0xd0, 0x6f, 0x88, 0xed, 0xff, 0x0f, 0x2e, 0x32, 0xfd, 0xfd, 0xe9, 0xb7, 0x48, 0x90, + 0x5f, 0xc6, 0x4e, 0xb1, 0xd3, 0x09, 0xcb, 0xed, 0xc5, 0xc2, 0x27, 0x7b, 0xb8, 0x4a, 0x14, 0x3b, + 0x9d, 0xe8, 0x46, 0x15, 0x12, 0x90, 0xe7, 0x81, 0xce, 0xa5, 0x09, 0xfa, 0xcd, 0x0d, 0x28, 0x30, + 0x7d, 0x89, 0x7d, 0x50, 0xf6, 0xf7, 0xb8, 0x1f, 0x09, 0x59, 0x39, 0x4f, 0x0c, 0x62, 0xda, 0x64, + 0xe2, 0xf7, 0xca, 0xbd, 0x7c, 0xca, 0xbd, 0x30, 0xb1, 0x6b, 0xe3, 0x92, 0x66, 0x63, 0xc2, 0x5b, + 0x6f, 0x4d, 0x6b, 0xe7, 0xef, 0xc7, 0x2d, 0x67, 0xbe, 0xb2, 0xe3, 0x1a, 0xd4, 0x1b, 0x34, 0xa3, + 0x1f, 0x26, 0x86, 0xbd, 0xab, 0x1e, 0x05, 0x77, 0x52, 0x72, 0x51, 0x77, 0xb6, 0x4b, 0xdb, 0x9a, + 0xc3, 0xd6, 0xb6, 0xfd, 0x77, 0xf4, 0xfc, 0x21, 0xe0, 0x8c, 0xdd, 0x0b, 0x8e, 0x3c, 0x20, 0x98, + 0x18, 0xc4, 0x11, 0x6c, 0xe0, 0x0e, 0x03, 0xe2, 0x3f, 0x48, 0x90, 0xad, 0x75, 0xb1, 0x21, 0x7c, + 0x1a, 0xc6, 0x97, 0xad, 0xd4, 0x23, 0xdb, 0x87, 0xc5, 0xbd, 0xc3, 0xfc, 0x4a, 0xbb, 0x25, 0x47, + 0x48, 0xf6, 0x66, 0xc8, 0xea, 0xc6, 0xa6, 0xc9, 0x0c, 0xd3, 0x2b, 0x23, 0x36, 0x81, 0x2a, 0xc6, + 0xa6, 0xa9, 0x92, 0x8c, 0xa2, 0x8e, 0x61, 0x71, 0x65, 0xa7, 0x2f, 0xee, 0x6f, 0x4c, 0x42, 0x9e, + 0xaa, 0x33, 0x7a, 0x91, 0x0c, 0x72, 0xb1, 0xdd, 0x8e, 0x10, 0xbc, 0xb4, 0x4f, 0xf0, 0x26, 0xf9, + 0xcd, 0xc7, 0xc4, 0x7f, 0xe7, 0x83, 0x99, 0x08, 0xf6, 0xed, 0xac, 0x49, 0x15, 0xdb, 0xed, 0x68, + 0x1f, 0x54, 0xbf, 0x40, 0x89, 0x2f, 0x30, 0xdc, 0xc2, 0x65, 0xb1, 0x16, 0x9e, 0x78, 0x20, 0x88, + 0xe4, 0x2f, 0x7d, 0x88, 0xfe, 0x49, 0x82, 0x89, 0x55, 0xdd, 0x76, 0x5c, 0x6c, 0x8a, 0x22, 0xd8, + 0x5c, 0x05, 0x53, 0x9e, 0x68, 0xdc, 0x2e, 0xcf, 0xed, 0xcf, 0x83, 0x04, 0xf4, 0x9a, 0x30, 0x3a, + 0xf7, 0xf0, 0xe8, 0x3c, 0x39, 0xbe, 0xf6, 0x8c, 0x8b, 0xe8, 0x53, 0x06, 0x41, 0xb1, 0x52, 0x6f, + 0xb1, 0xbf, 0xe5, 0x0b, 0x7c, 0x8d, 0x13, 0xf8, 0x6d, 0xc3, 0x14, 0x99, 0xbe, 0xd0, 0x3f, 0x2b, + 0x01, 0xb8, 0x65, 0xb3, 0xa3, 0x5c, 0x8f, 0xe3, 0x0e, 0x68, 0xc7, 0x48, 0xf7, 0xe5, 0x61, 0xe9, + 0xae, 0xf1, 0xd2, 0xfd, 0xd1, 0xc1, 0x55, 0x8d, 0x3b, 0xb2, 0xa5, 0x14, 0x40, 0xd6, 0x7d, 0xd1, + 0xba, 0x8f, 0xe8, 0x2d, 0xbe, 0x50, 0xd7, 0x39, 0xa1, 0xde, 0x31, 0x64, 0x49, 0xe9, 0xcb, 0xf5, + 0x2f, 0x25, 0x98, 0xa8, 0x63, 0xc7, 0xed, 0x26, 0xd1, 0x59, 0x91, 0x1e, 0x3e, 0xd4, 0xb6, 0x25, + 0xc1, 0xb6, 0xfd, 0xed, 0x8c, 0x68, 0xa0, 0x97, 0x40, 0x32, 0x8c, 0xa7, 0x88, 0xc5, 0x83, 0x47, + 0x84, 0x02, 0xbd, 0x0c, 0xa2, 0x96, 0xbe, 0x74, 0xdf, 0x24, 0xf9, 0x1b, 0xf3, 0xfc, 0x49, 0x8b, + 0xb0, 0x59, 0x9c, 0xd9, 0x6f, 0x16, 0x8b, 0x9f, 0xb4, 0x08, 0xd7, 0x31, 0x7a, 0x57, 0x3a, 0xb1, + 0xb1, 0x31, 0x82, 0x0d, 0xe3, 0x61, 0xe4, 0xf5, 0x6c, 0x19, 0xf2, 0x6c, 0x65, 0xf9, 0xae, 0xf8, + 0x95, 0xe5, 0xc1, 0x53, 0x8b, 0x77, 0x0f, 0x61, 0xca, 0xc5, 0x2d, 0xf7, 0xfa, 0x6c, 0x48, 0x21, + 0x36, 0x6e, 0x82, 0x1c, 0x89, 0x44, 0xc9, 0xc6, 0xb9, 0x60, 0xaf, 0xdf, 0x23, 0x51, 0x76, 0xbf, + 0xaa, 0x34, 0x53, 0x62, 0x14, 0x46, 0xb0, 0x42, 0x3c, 0x0c, 0x0a, 0xbf, 0xa6, 0x00, 0xac, 0xef, + 0x9e, 0xef, 0xe8, 0xf6, 0xb6, 0x6e, 0x6c, 0xa1, 0x2f, 0x67, 0x60, 0x86, 0xbd, 0xd2, 0x80, 0x8a, + 0xb1, 0xe6, 0x5f, 0xa4, 0x51, 0x50, 0x00, 0x79, 0xd7, 0xd2, 0xd9, 0x32, 0x80, 0xfb, 0xa8, 0xdc, + 0xe9, 0x3b, 0xf2, 0x64, 0x7b, 0x8e, 0xd2, 0xbb, 0x62, 0x08, 0x38, 0x98, 0x0f, 0x95, 0x1e, 0x38, + 0xf4, 0x84, 0xa3, 0x66, 0xe6, 0xf8, 0xa8, 0x99, 0xdc, 0xf9, 0xba, 0x7c, 0xcf, 0xf9, 0x3a, 0x17, + 0x47, 0x5b, 0x7f, 0x26, 0x26, 0xce, 0xa5, 0xb2, 0x4a, 0x9e, 0xd1, 0x07, 0x82, 0xa9, 0x8a, 0x29, + 0x68, 0xe7, 0x26, 0xa8, 0xe8, 0x55, 0x30, 0x75, 0xbf, 0xa9, 0x1b, 0x64, 0x2b, 0x82, 0x39, 0x0f, + 0x07, 0x09, 0xe8, 0xc3, 0xc2, 0x71, 0xb0, 0x42, 0x22, 0x89, 0x9d, 0x74, 0x30, 0x0e, 0x24, 0x9f, + 0x83, 0xd0, 0x7e, 0x5e, 0x5c, 0x87, 0x39, 0x88, 0x7e, 0x32, 0xd5, 0xdb, 0x19, 0x62, 0x79, 0x45, + 0x81, 0x39, 0xef, 0x5c, 0x61, 0x6d, 0xe1, 0x9e, 0x72, 0xa9, 0x51, 0xc0, 0xfb, 0xcf, 0x1a, 0x92, + 0x53, 0x85, 0xf4, 0x04, 0x61, 0xb0, 0x84, 0x82, 0xfe, 0x87, 0x04, 0x79, 0x66, 0x1d, 0xdc, 0x75, + 0x40, 0x08, 0xd1, 0x2b, 0x86, 0x81, 0x24, 0xf6, 0x78, 0xf7, 0x27, 0x92, 0x02, 0x30, 0x02, 0x7b, + 0xe0, 0xbe, 0xd4, 0x00, 0x40, 0xff, 0x22, 0x41, 0xd6, 0xb5, 0x5a, 0xc4, 0x0e, 0xcf, 0x7e, 0x5c, + 0xd8, 0x6d, 0x35, 0x24, 0x00, 0x97, 0x7c, 0x84, 0x7e, 0x2f, 0xc0, 0x54, 0x97, 0x66, 0xf4, 0x8f, + 0x6e, 0x5f, 0x27, 0xd0, 0x77, 0x60, 0x35, 0xf8, 0x0d, 0xbd, 0x4b, 0xc8, 0xf5, 0x35, 0x9e, 0x9f, + 0x64, 0x70, 0x94, 0x47, 0x71, 0xce, 0x76, 0x13, 0x7d, 0x57, 0x02, 0x50, 0xb1, 0x6d, 0x76, 0xf6, + 0xf0, 0x86, 0xa5, 0xa3, 0x2b, 0x03, 0x00, 0x58, 0xb3, 0xcf, 0x04, 0xcd, 0xfe, 0x53, 0x61, 0xc1, + 0x2f, 0xf3, 0x82, 0x7f, 0x62, 0xb4, 0xe6, 0x79, 0xc4, 0x23, 0xc4, 0xff, 0x74, 0x98, 0x60, 0x72, + 0x64, 0x26, 0xa0, 0x98, 0xf0, 0xbd, 0x9f, 0xd0, 0x7b, 0x7d, 0xd1, 0xdf, 0xc3, 0x89, 0xfe, 0x29, + 0x89, 0x39, 0x4a, 0x06, 0x40, 0x69, 0x08, 0x00, 0x8e, 0xc2, 0xb4, 0x07, 0xc0, 0x86, 0x5a, 0x29, + 0x60, 0xf4, 0x76, 0x99, 0xec, 0x96, 0xd3, 0xb1, 0xe8, 0xe0, 0x3d, 0xcd, 0x57, 0x85, 0xe7, 0xe6, + 0x21, 0x79, 0xf8, 0xe5, 0xa7, 0x04, 0xd0, 0x9f, 0x08, 0x4d, 0xc6, 0x05, 0x18, 0x7a, 0xb4, 0xf4, + 0x57, 0x67, 0xca, 0x30, 0xcb, 0x19, 0x11, 0xca, 0x29, 0x38, 0xce, 0x25, 0xd0, 0xf1, 0xae, 0x5d, + 0x38, 0xa2, 0x20, 0x38, 0xc9, 0x7d, 0x61, 0x2f, 0xb8, 0x5d, 0xc8, 0xa0, 0x3f, 0xfb, 0x4c, 0xc6, + 0x5f, 0x9e, 0x79, 0x77, 0x96, 0x2d, 0x8c, 0x7d, 0x94, 0x8f, 0x16, 0xd6, 0x32, 0x0d, 0x07, 0x3f, + 0x10, 0xf2, 0x56, 0xf0, 0x13, 0x62, 0xad, 0x86, 0x53, 0x30, 0xe1, 0x58, 0x61, 0x0f, 0x06, 0xef, + 0x35, 0xac, 0x58, 0x39, 0x5e, 0xb1, 0xaa, 0x70, 0x46, 0x37, 0x5a, 0x9d, 0xdd, 0x36, 0x56, 0x71, + 0x47, 0x73, 0x65, 0x68, 0x17, 0xed, 0x45, 0xdc, 0xc5, 0x46, 0x1b, 0x1b, 0x0e, 0xe5, 0xd3, 0x3b, + 0xad, 0x24, 0x90, 0x93, 0x57, 0xc6, 0x3b, 0x79, 0x65, 0x7c, 0x5c, 0xbf, 0x15, 0xd7, 0x98, 0xe5, + 0xb9, 0xdb, 0x00, 0x68, 0xdd, 0xce, 0xea, 0xf8, 0x22, 0x53, 0xc3, 0x2b, 0x7a, 0x16, 0xe9, 0x6a, + 0x7e, 0x06, 0x35, 0x94, 0x19, 0x7d, 0xd1, 0x57, 0xbf, 0xbb, 0x39, 0xf5, 0xbb, 0x49, 0x90, 0x85, + 0x64, 0x5a, 0xd7, 0x1d, 0x42, 0xeb, 0x66, 0x61, 0x2a, 0xd8, 0xbb, 0x95, 0x95, 0x2b, 0xe0, 0x84, + 0xe7, 0x0d, 0x5a, 0x2d, 0x97, 0x17, 0xeb, 0xcd, 0x8d, 0xf5, 0x65, 0xb5, 0xb8, 0x58, 0x2e, 0x80, + 0xab, 0x9f, 0x54, 0x2f, 0x7d, 0x27, 0xce, 0x2c, 0xfa, 0x73, 0x09, 0x72, 0xe4, 0xa8, 0x1d, 0xfa, + 0xc9, 0x11, 0x69, 0x8e, 0xcd, 0xf9, 0xbe, 0xf8, 0xe3, 0xae, 0x78, 0x14, 0x6f, 0x26, 0x4c, 0xc2, + 0xd5, 0x81, 0xa2, 0x78, 0xc7, 0x10, 0x4a, 0x7f, 0xe2, 0xe2, 0x36, 0xc9, 0xfa, 0xb6, 0x79, 0xf1, + 0x07, 0xb9, 0x49, 0xba, 0xf5, 0x3f, 0xe4, 0x26, 0xd9, 0x87, 0x85, 0xb1, 0x37, 0xc9, 0x3e, 0xed, + 0x2e, 0xa6, 0x99, 0xa2, 0x67, 0xe5, 0xfc, 0xf9, 0xdf, 0x73, 0xa4, 0x03, 0x6d, 0x55, 0x15, 0x61, + 0x56, 0x37, 0x1c, 0x6c, 0x19, 0x5a, 0x67, 0xa9, 0xa3, 0x6d, 0x79, 0xf6, 0x69, 0xef, 0xfe, 0x44, + 0x25, 0x94, 0x47, 0xe5, 0xff, 0x50, 0x4e, 0x03, 0x38, 0x78, 0xa7, 0xdb, 0xd1, 0x9c, 0x40, 0xf5, + 0x42, 0x29, 0x61, 0xed, 0xcb, 0xf2, 0xda, 0x77, 0x0b, 0x5c, 0x46, 0x41, 0x6b, 0x5c, 0xea, 0xe2, + 0x0d, 0x43, 0xff, 0xa9, 0x5d, 0x12, 0x5c, 0x92, 0xea, 0x68, 0xbf, 0x4f, 0xdc, 0x86, 0x4d, 0xbe, + 0x67, 0xc3, 0xe6, 0x1f, 0x84, 0x83, 0x56, 0x78, 0xad, 0x7e, 0x40, 0xd0, 0x0a, 0xbf, 0xa5, 0xc9, + 0x3d, 0x2d, 0xcd, 0x5f, 0x46, 0xc9, 0x0a, 0x2c, 0xa3, 0x84, 0x51, 0xc9, 0x09, 0x2e, 0x41, 0xbe, + 0x5a, 0x28, 0x2a, 0x46, 0x5c, 0x35, 0xc6, 0xb0, 0xc4, 0x2d, 0xc3, 0x1c, 0x2d, 0x7a, 0xc1, 0x34, + 0x2f, 0xec, 0x68, 0xd6, 0x05, 0x64, 0x1d, 0x48, 0x15, 0x63, 0x77, 0x8b, 0x22, 0xb7, 0x40, 0x3f, + 0x29, 0x3c, 0x67, 0xe0, 0xc4, 0xe5, 0xf1, 0x3c, 0x9e, 0xed, 0xa2, 0x37, 0x08, 0x4d, 0x21, 0x44, + 0x18, 0x4c, 0x1f, 0xd7, 0x3f, 0xf2, 0x71, 0xf5, 0x3a, 0xfa, 0xf0, 0x4a, 0xfb, 0x28, 0x71, 0x45, + 0x5f, 0x1a, 0x0e, 0x3b, 0x8f, 0xaf, 0x21, 0xb0, 0x2b, 0x80, 0x7c, 0xc1, 0x77, 0xee, 0x71, 0x1f, + 0xc3, 0x15, 0xca, 0xa6, 0x87, 0x66, 0x04, 0xcb, 0x63, 0x41, 0xf3, 0x38, 0xcf, 0x42, 0xad, 0x9b, + 0x2a, 0xa6, 0x5f, 0x10, 0xde, 0xc1, 0xea, 0x2b, 0x20, 0xca, 0xdd, 0x78, 0x5a, 0xa5, 0xd8, 0xf6, + 0x97, 0x38, 0x9b, 0xe9, 0xa3, 0xf9, 0x50, 0x0e, 0xa6, 0xbc, 0xb0, 0x22, 0xe4, 0xd6, 0x1b, 0x1f, + 0xc3, 0x93, 0x90, 0xb7, 0xcd, 0x5d, 0xab, 0x85, 0xd9, 0x9e, 0x22, 0x7b, 0x1b, 0x62, 0xff, 0x6b, + 0xe0, 0x78, 0xbe, 0xcf, 0x64, 0xc8, 0x26, 0x36, 0x19, 0xa2, 0x0d, 0xd2, 0xb8, 0x01, 0xfe, 0xf9, + 0xc2, 0xa1, 0xca, 0x39, 0xcc, 0xea, 0xd8, 0x79, 0x34, 0x8e, 0xf1, 0xbf, 0x2f, 0xb4, 0xbb, 0x32, + 0xa0, 0x26, 0xc9, 0x54, 0xae, 0x36, 0x84, 0xa1, 0x7a, 0x25, 0x5c, 0xee, 0xe5, 0x60, 0x16, 0x2a, + 0xb1, 0x48, 0x37, 0xd4, 0xd5, 0x82, 0x8c, 0x9e, 0x9d, 0x85, 0x02, 0x65, 0xad, 0xe6, 0x1b, 0x6b, + 0xe8, 0xc5, 0x99, 0xc3, 0xb6, 0x48, 0xa3, 0xa7, 0x98, 0x9f, 0x96, 0x44, 0xc3, 0xa1, 0x72, 0x82, + 0x0f, 0x6a, 0x17, 0xa1, 0x49, 0x43, 0x34, 0xb3, 0x18, 0xe5, 0x43, 0xbf, 0x99, 0x11, 0x89, 0xae, + 0x2a, 0xc6, 0x62, 0xfa, 0xbd, 0xd2, 0xe7, 0xb2, 0x5e, 0x74, 0xa8, 0x25, 0xcb, 0xdc, 0xd9, 0xb0, + 0x3a, 0xe8, 0xff, 0x16, 0x0a, 0x5e, 0x1d, 0x61, 0xfe, 0x4b, 0xd1, 0xe6, 0x3f, 0x59, 0x32, 0xee, + 0x04, 0x7b, 0x55, 0x9d, 0x21, 0x86, 0x6f, 0xe5, 0x7a, 0x98, 0xd3, 0xda, 0xed, 0x75, 0x6d, 0x0b, + 0x97, 0xdc, 0x79, 0xb5, 0xe1, 0xb0, 0xc8, 0x31, 0x3d, 0xa9, 0xb1, 0x5d, 0x91, 0xf8, 0x3a, 0x28, + 0x07, 0x12, 0x93, 0xcf, 0x58, 0x86, 0x37, 0x77, 0x48, 0x68, 0x6d, 0x6b, 0x41, 0x1c, 0x2b, 0xf6, + 0x26, 0xe8, 0xbb, 0x24, 0xc0, 0x77, 0xfa, 0x9a, 0xf5, 0xbb, 0x12, 0x4c, 0xb8, 0xf2, 0x2e, 0xb6, + 0xdb, 0xe8, 0xb1, 0x5c, 0xb8, 0xb7, 0x48, 0xef, 0xb1, 0x9f, 0x17, 0x76, 0xdb, 0xf3, 0x6a, 0x48, + 0xe9, 0x47, 0x60, 0x12, 0x08, 0x51, 0xe2, 0x84, 0x28, 0xe6, 0x9d, 0x17, 0x5b, 0x44, 0xfa, 0xe2, + 0xfb, 0xb8, 0x04, 0xb3, 0xde, 0x3c, 0x62, 0x09, 0x3b, 0xad, 0x6d, 0x74, 0x9b, 0xe8, 0x42, 0x13, + 0x6b, 0x69, 0xfe, 0x9e, 0x6c, 0x07, 0x7d, 0x2f, 0x93, 0x50, 0xe5, 0xb9, 0x92, 0x23, 0x56, 0xe9, + 0x12, 0xe9, 0x62, 0x1c, 0xc1, 0xf4, 0x85, 0xf9, 0x45, 0x09, 0xa0, 0x61, 0xfa, 0x73, 0xdd, 0x03, + 0x48, 0xf2, 0x85, 0xc2, 0xdb, 0xb5, 0xac, 0xe2, 0x41, 0xb1, 0xc9, 0x7b, 0x0e, 0x41, 0xe7, 0xa3, + 0x41, 0x25, 0x8d, 0xa5, 0xad, 0x4f, 0x2d, 0xee, 0x76, 0x3b, 0x7a, 0x4b, 0x73, 0x7a, 0x3d, 0xe6, + 0xa2, 0xc5, 0x4b, 0xae, 0x84, 0x4c, 0x64, 0x14, 0xfa, 0x65, 0x44, 0xc8, 0x92, 0x86, 0x21, 0x91, + 0xbc, 0x30, 0x24, 0x82, 0x5e, 0x30, 0x03, 0x88, 0x8f, 0x41, 0x3d, 0x65, 0x38, 0x5a, 0xeb, 0x62, + 0x63, 0xc1, 0xc2, 0x5a, 0xbb, 0x65, 0xed, 0xee, 0x9c, 0xb7, 0xc3, 0xee, 0x9e, 0xf1, 0x3a, 0x1a, + 0x5a, 0x3a, 0x96, 0xb8, 0xa5, 0x63, 0xf4, 0x73, 0xb2, 0x68, 0x50, 0x9c, 0xd0, 0x06, 0x47, 0x88, + 0x87, 0x21, 0x86, 0xba, 0x44, 0x4e, 0x4a, 0x3d, 0xab, 0xc4, 0xd9, 0x24, 0xab, 0xc4, 0x6f, 0x14, + 0x0a, 0xb1, 0x23, 0x54, 0xaf, 0xb1, 0xf8, 0x9a, 0xcd, 0xd5, 0xb1, 0x13, 0x01, 0xef, 0x75, 0x30, + 0x7b, 0x3e, 0xf8, 0xe2, 0x43, 0xcc, 0x27, 0xf6, 0xf1, 0x00, 0x7d, 0x53, 0xd2, 0x15, 0x18, 0x9e, + 0x85, 0x08, 0x74, 0x7d, 0x04, 0x25, 0x11, 0x37, 0xb3, 0x44, 0xcb, 0x29, 0xb1, 0xe5, 0xa7, 0x8f, + 0xc2, 0x87, 0x25, 0x98, 0x26, 0x17, 0x5d, 0x2e, 0x5c, 0x22, 0xe7, 0x16, 0x05, 0x8d, 0x92, 0x87, + 0xc2, 0x62, 0x56, 0x20, 0xdb, 0xd1, 0x8d, 0x0b, 0x9e, 0x7f, 0xa0, 0xfb, 0x1c, 0x5c, 0x9b, 0x26, + 0xf5, 0xb9, 0x36, 0xcd, 0xdf, 0xa7, 0xf0, 0xcb, 0x3d, 0xd0, 0x3d, 0xbe, 0x03, 0xc9, 0xa5, 0x2f, + 0xc6, 0xbf, 0xcb, 0x42, 0xbe, 0x8e, 0x35, 0xab, 0xb5, 0x8d, 0xde, 0x2d, 0xf5, 0x9d, 0x2a, 0x4c, + 0xf2, 0x53, 0x85, 0x25, 0x98, 0xd8, 0xd4, 0x3b, 0x0e, 0xb6, 0xa8, 0xcf, 0x74, 0xb8, 0x6b, 0xa7, + 0x4d, 0x7c, 0xa1, 0x63, 0xb6, 0x2e, 0xcc, 0x33, 0xd3, 0x7d, 0xde, 0x0b, 0xb3, 0x39, 0xbf, 0x44, + 0x7e, 0x52, 0xbd, 0x9f, 0x5d, 0x83, 0xd0, 0x36, 0x2d, 0x27, 0xea, 0x06, 0x85, 0x08, 0x2a, 0x75, + 0xd3, 0x72, 0x54, 0xfa, 0xa3, 0x0b, 0xf3, 0xe6, 0x6e, 0xa7, 0xd3, 0xc0, 0x0f, 0x38, 0xde, 0xb4, + 0xcd, 0x7b, 0x77, 0x8d, 0x45, 0x73, 0x73, 0xd3, 0xc6, 0x74, 0xd1, 0x20, 0xa7, 0xb2, 0x37, 0xe5, + 0x38, 0xe4, 0x3a, 0xfa, 0x8e, 0x4e, 0x27, 0x1a, 0x39, 0x95, 0xbe, 0x28, 0x37, 0x42, 0x21, 0x98, + 0xe3, 0x50, 0x46, 0x4f, 0xe5, 0x49, 0xd3, 0xdc, 0x97, 0xee, 0xea, 0xcc, 0x05, 0x7c, 0xc9, 0x3e, + 0x35, 0x41, 0xbe, 0x93, 0x67, 0xfe, 0x80, 0x8a, 0xc8, 0x7e, 0x07, 0x95, 0x78, 0xf4, 0x0c, 0xd6, + 0xc2, 0x2d, 0xd3, 0x6a, 0x7b, 0xb2, 0x89, 0x9e, 0x60, 0xb0, 0x7c, 0xc9, 0x76, 0x29, 0xfa, 0x16, + 0x9e, 0xbe, 0xa6, 0xbd, 0x23, 0xef, 0x76, 0x9b, 0x6e, 0xd1, 0xe7, 0x74, 0x67, 0x7b, 0x0d, 0x3b, + 0x1a, 0xfa, 0x3b, 0xb9, 0xaf, 0xc6, 0x4d, 0xff, 0x6f, 0x8d, 0x1b, 0xa0, 0x71, 0x34, 0x80, 0x92, + 0xb3, 0x6b, 0x19, 0xae, 0x1c, 0x59, 0xc8, 0xd2, 0x50, 0x8a, 0x72, 0x07, 0x5c, 0x11, 0xbc, 0x79, + 0x4b, 0xa5, 0x8b, 0x6c, 0xda, 0x3a, 0x45, 0xb2, 0x47, 0x67, 0x50, 0xd6, 0xe1, 0x5a, 0xfa, 0x71, + 0xa5, 0xb1, 0xb6, 0xba, 0xa2, 0x6f, 0x6d, 0x77, 0xf4, 0xad, 0x6d, 0xc7, 0xae, 0x18, 0xb6, 0x83, + 0xb5, 0x76, 0x6d, 0x53, 0xa5, 0x77, 0x9f, 0x00, 0xa1, 0x23, 0x92, 0x95, 0xf7, 0xa9, 0x16, 0x1b, + 0xdd, 0xc2, 0x9a, 0x12, 0xd1, 0x52, 0x9e, 0xe2, 0xb6, 0x14, 0x7b, 0xb7, 0xe3, 0x63, 0x7a, 0x55, + 0x0f, 0xa6, 0x81, 0xaa, 0xef, 0x76, 0x48, 0x73, 0x21, 0x99, 0x93, 0x8e, 0x73, 0x31, 0x9c, 0xa4, + 0xdf, 0x6c, 0xfe, 0xbf, 0x3c, 0xe4, 0x96, 0x2d, 0xad, 0xbb, 0x8d, 0x9e, 0x1d, 0xea, 0x9f, 0x47, + 0xd5, 0x26, 0x7c, 0xed, 0x94, 0x06, 0x69, 0xa7, 0x3c, 0x40, 0x3b, 0xb3, 0x21, 0xed, 0x8c, 0x5e, + 0x54, 0x3e, 0x03, 0x33, 0x2d, 0xb3, 0xd3, 0xc1, 0x2d, 0x57, 0x1e, 0x95, 0x36, 0x59, 0xcd, 0x99, + 0x52, 0xb9, 0x34, 0x12, 0x8a, 0x18, 0x3b, 0x75, 0xba, 0x86, 0x4e, 0x95, 0x3e, 0x48, 0x40, 0x2f, + 0x96, 0x20, 0x5b, 0x6e, 0x6f, 0x61, 0x6e, 0x9d, 0x3d, 0x13, 0x5a, 0x67, 0x3f, 0x09, 0x79, 0x47, + 0xb3, 0xb6, 0xb0, 0xe3, 0xad, 0x13, 0xd0, 0x37, 0x3f, 0x42, 0xb2, 0x1c, 0x8a, 0x90, 0xfc, 0xa3, + 0x90, 0x75, 0x65, 0xc6, 0xdc, 0xc8, 0xaf, 0xed, 0x07, 0x3f, 0x91, 0xfd, 0xbc, 0x5b, 0xe2, 0xbc, + 0x5b, 0x6b, 0x95, 0xfc, 0xd0, 0x8b, 0x75, 0x6e, 0x1f, 0xd6, 0xe4, 0x1a, 0xc7, 0x96, 0x69, 0x54, + 0x76, 0xb4, 0x2d, 0xcc, 0xaa, 0x19, 0x24, 0x78, 0x5f, 0xcb, 0x3b, 0xe6, 0xfd, 0x3a, 0x0b, 0x56, + 0x1c, 0x24, 0xb8, 0x55, 0xd8, 0xd6, 0xdb, 0x6d, 0x6c, 0xb0, 0x96, 0xcd, 0xde, 0xce, 0x9c, 0x86, + 0xac, 0xcb, 0x83, 0xab, 0x3f, 0xae, 0xb1, 0x50, 0x38, 0xa2, 0xcc, 0xb8, 0xcd, 0x8a, 0x36, 0xde, + 0x42, 0x86, 0x5f, 0x53, 0x15, 0x71, 0xdb, 0xa1, 0x95, 0xeb, 0xdf, 0xb8, 0x9e, 0x00, 0x39, 0xc3, + 0x6c, 0xe3, 0x81, 0x83, 0x10, 0xcd, 0xa5, 0x3c, 0x19, 0x72, 0xb8, 0xed, 0xf6, 0x0a, 0x32, 0xc9, + 0x7e, 0x3a, 0x5e, 0x96, 0x2a, 0xcd, 0x9c, 0xcc, 0x37, 0xa8, 0x1f, 0xb7, 0xe9, 0x37, 0xc0, 0x5f, + 0x9c, 0x80, 0xa3, 0xb4, 0x0f, 0xa8, 0xef, 0x9e, 0x77, 0x49, 0x9d, 0xc7, 0xe8, 0x91, 0xfe, 0x03, + 0xd7, 0x51, 0x5e, 0xd9, 0x8f, 0x43, 0xce, 0xde, 0x3d, 0xef, 0x1b, 0xa1, 0xf4, 0x25, 0xdc, 0x74, + 0xa5, 0x91, 0x0c, 0x67, 0xf2, 0xb0, 0xc3, 0x19, 0x37, 0x34, 0xc9, 0x5e, 0xe3, 0x0f, 0x06, 0x32, + 0x7a, 0x00, 0xc2, 0x1b, 0xc8, 0xfa, 0x0d, 0x43, 0xa7, 0x60, 0x42, 0xdb, 0x74, 0xb0, 0x15, 0x98, + 0x89, 0xec, 0xd5, 0x1d, 0x2a, 0xcf, 0xe3, 0x4d, 0xd3, 0x72, 0xc5, 0x32, 0x45, 0x87, 0x4a, 0xef, + 0x3d, 0xd4, 0x72, 0x81, 0xdb, 0x21, 0xbb, 0x09, 0x8e, 0x19, 0xe6, 0x22, 0xee, 0x32, 0x39, 0x53, + 0x14, 0x67, 0x49, 0x0b, 0xd8, 0xff, 0x61, 0x5f, 0x57, 0x32, 0xb7, 0xbf, 0x2b, 0x41, 0x9f, 0x4a, + 0x3a, 0x67, 0xee, 0x01, 0x7a, 0x64, 0x16, 0x9a, 0xf2, 0x34, 0x98, 0x69, 0x33, 0x17, 0xad, 0x96, + 0xee, 0xb7, 0x92, 0xc8, 0xff, 0xb8, 0xcc, 0x81, 0x22, 0x65, 0xc3, 0x8a, 0xb4, 0x0c, 0x93, 0xe4, + 0xa8, 0xb2, 0xab, 0x49, 0xb9, 0x1e, 0x97, 0x78, 0x32, 0xad, 0xf3, 0x2b, 0x15, 0x12, 0xdb, 0x7c, + 0x89, 0xfd, 0xa2, 0xfa, 0x3f, 0x27, 0x9b, 0x7d, 0xc7, 0x4b, 0x28, 0xfd, 0xe6, 0xf8, 0x5b, 0x79, + 0xb8, 0xa2, 0x64, 0x99, 0xb6, 0x4d, 0xce, 0xc0, 0xf4, 0x36, 0xcc, 0xd7, 0x4b, 0xdc, 0x5d, 0x09, + 0x8f, 0xea, 0xe6, 0xd7, 0xaf, 0x41, 0x8d, 0xaf, 0x69, 0x7c, 0x55, 0x38, 0xc8, 0x8b, 0xbf, 0xff, + 0x10, 0x21, 0xf4, 0x1f, 0x8c, 0x46, 0xf2, 0x8e, 0x8c, 0x48, 0xdc, 0x99, 0x84, 0xb2, 0x4a, 0xbf, + 0xb9, 0x7c, 0x41, 0x82, 0x2b, 0x7b, 0xb9, 0xd9, 0x30, 0x6c, 0xbf, 0xc1, 0x5c, 0x3d, 0xa0, 0xbd, + 0xf0, 0x71, 0x4a, 0x62, 0x6f, 0x29, 0x8c, 0xa8, 0x7b, 0xa8, 0xb4, 0x88, 0xc5, 0x92, 0xe0, 0x44, + 0x4d, 0xdc, 0x2d, 0x85, 0x89, 0xc9, 0xa7, 0x2f, 0xdc, 0x4f, 0x67, 0xe1, 0xe8, 0xb2, 0x65, 0xee, + 0x76, 0xed, 0xa0, 0x07, 0xfa, 0xeb, 0xfe, 0x1b, 0xae, 0x79, 0x11, 0xd3, 0xe0, 0x1a, 0x98, 0xb6, + 0x98, 0x35, 0x17, 0x6c, 0xbf, 0x86, 0x93, 0xc2, 0xbd, 0x97, 0x7c, 0x90, 0xde, 0x2b, 0xe8, 0x67, + 0xb2, 0x5c, 0x3f, 0xd3, 0xdb, 0x73, 0xe4, 0xfa, 0xf4, 0x1c, 0x7f, 0x25, 0x25, 0x1c, 0x54, 0x7b, + 0x44, 0x14, 0xd1, 0x5f, 0x94, 0x20, 0xbf, 0x45, 0x32, 0xb2, 0xee, 0xe2, 0xf1, 0x62, 0x35, 0x23, + 0xc4, 0x55, 0xf6, 0x6b, 0x20, 0x57, 0x39, 0xac, 0xc3, 0x89, 0x06, 0xb8, 0x78, 0x6e, 0xd3, 0x57, + 0xaa, 0x87, 0xb3, 0x30, 0xe3, 0x97, 0x5e, 0x69, 0xdb, 0xe8, 0xa1, 0xfe, 0x1a, 0x35, 0x2b, 0xa2, + 0x51, 0xfb, 0xd6, 0x99, 0xfd, 0x51, 0x47, 0x0e, 0x8d, 0x3a, 0x7d, 0x47, 0x97, 0x99, 0x88, 0xd1, + 0x05, 0x3d, 0x4b, 0x16, 0xbd, 0x6d, 0x88, 0xef, 0x5a, 0x49, 0x6d, 0x1e, 0xcd, 0x83, 0x85, 0xe0, + 0x9d, 0x47, 0x83, 0x6b, 0x95, 0xbe, 0x92, 0xbc, 0x4f, 0x82, 0x63, 0xfb, 0x3b, 0xf3, 0x1f, 0xe2, + 0xbd, 0xd0, 0xdc, 0x3a, 0xd9, 0xbe, 0x17, 0x1a, 0x79, 0xe3, 0x37, 0xe9, 0x62, 0x83, 0x86, 0x70, + 0xf6, 0xde, 0xe0, 0x4e, 0x5c, 0x2c, 0x2c, 0x88, 0x20, 0xd1, 0xf4, 0x05, 0xf8, 0x2b, 0x32, 0x4c, + 0xd5, 0xb1, 0xb3, 0xaa, 0x5d, 0x32, 0x77, 0x1d, 0xa4, 0x89, 0x6e, 0xcf, 0x3d, 0x15, 0xf2, 0x1d, + 0xf2, 0x0b, 0xbb, 0xc4, 0xfd, 0x9a, 0xbe, 0xfb, 0x5b, 0xc4, 0xf7, 0x87, 0x92, 0x56, 0x59, 0x7e, + 0x3e, 0x5a, 0x8b, 0xc8, 0xee, 0xa8, 0xcf, 0xdd, 0x48, 0xb6, 0x76, 0x12, 0xed, 0x9d, 0x46, 0x15, + 0x9d, 0x3e, 0x2c, 0x3f, 0x27, 0xc3, 0x6c, 0x1d, 0x3b, 0x15, 0x7b, 0x49, 0xdb, 0x33, 0x2d, 0xdd, + 0xc1, 0xe1, 0x5b, 0x1c, 0xe3, 0xa1, 0x39, 0x0d, 0xa0, 0xfb, 0xbf, 0xb1, 0x18, 0x52, 0xa1, 0x14, + 0xf4, 0x9b, 0x49, 0x1d, 0x85, 0x38, 0x3e, 0x46, 0x02, 0x42, 0x22, 0x1f, 0x8b, 0xb8, 0xe2, 0xd3, + 0x07, 0xe2, 0xf3, 0x12, 0x03, 0xa2, 0x68, 0xb5, 0xb6, 0xf5, 0x3d, 0xdc, 0x4e, 0x08, 0x84, 0xf7, + 0x5b, 0x00, 0x84, 0x4f, 0x28, 0xb1, 0xfb, 0x0a, 0xc7, 0xc7, 0x28, 0xdc, 0x57, 0xe2, 0x08, 0x8e, + 0x25, 0x0c, 0x94, 0xdb, 0xf5, 0xb0, 0xf5, 0xcc, 0xbb, 0x44, 0xc5, 0x1a, 0x98, 0x6c, 0x52, 0xd8, + 0x64, 0x1b, 0xaa, 0x63, 0xa1, 0x65, 0x0f, 0xd2, 0xe9, 0x6c, 0x1a, 0x1d, 0x4b, 0xdf, 0xa2, 0xd3, + 0x17, 0xfa, 0xbb, 0x64, 0x38, 0xe1, 0xc7, 0x47, 0xa9, 0x63, 0x67, 0x51, 0xb3, 0xb7, 0xcf, 0x9b, + 0x9a, 0xd5, 0x0e, 0x5f, 0xee, 0x3f, 0xf4, 0x89, 0x3f, 0xf4, 0xb9, 0x30, 0x08, 0x55, 0x1e, 0x84, + 0xbe, 0xae, 0xa2, 0x7d, 0x79, 0x19, 0x45, 0x27, 0x13, 0xeb, 0xcd, 0xfa, 0xdb, 0x3e, 0x58, 0x3f, + 0xc6, 0x81, 0x75, 0xe7, 0xb0, 0x2c, 0xa6, 0x0f, 0xdc, 0xaf, 0xd3, 0x11, 0x21, 0xe4, 0xd5, 0x7c, + 0x9f, 0x28, 0x60, 0x11, 0x5e, 0xad, 0x72, 0xa4, 0x57, 0xeb, 0x50, 0x63, 0xc4, 0x40, 0x8f, 0xe4, + 0x74, 0xc7, 0x88, 0x43, 0xf4, 0x36, 0x7e, 0x9b, 0x0c, 0x05, 0x12, 0x20, 0x2b, 0xe4, 0xf1, 0x8d, + 0xee, 0x17, 0x45, 0x67, 0x9f, 0x77, 0xf9, 0x44, 0x52, 0xef, 0x72, 0xf4, 0xd6, 0xa4, 0x3e, 0xe4, + 0xbd, 0xdc, 0x8e, 0x04, 0xb1, 0x44, 0x2e, 0xe2, 0x03, 0x38, 0x48, 0x1f, 0xb4, 0xff, 0x26, 0x03, + 0xb8, 0x0d, 0x9a, 0x9d, 0x7d, 0x78, 0x86, 0x28, 0x5c, 0x37, 0x87, 0xfd, 0xea, 0x5d, 0xa0, 0x4e, + 0xf4, 0x00, 0x45, 0x29, 0x06, 0xa7, 0x2a, 0x1e, 0x49, 0xea, 0x5b, 0x19, 0x70, 0x35, 0x12, 0x58, + 0x12, 0x79, 0x5b, 0x46, 0x96, 0x9d, 0x3e, 0x20, 0xff, 0x5d, 0x82, 0x5c, 0xc3, 0xac, 0x63, 0xe7, + 0xe0, 0xa6, 0x40, 0xe2, 0x63, 0xfb, 0xa4, 0xdc, 0x51, 0x1c, 0xdb, 0xef, 0x47, 0x28, 0x7d, 0xd1, + 0xbd, 0x53, 0x82, 0x99, 0x86, 0x59, 0xf2, 0x17, 0xa7, 0xc4, 0x7d, 0x55, 0xc5, 0x6f, 0x4c, 0xf6, + 0x2b, 0x18, 0x14, 0x73, 0xa0, 0x1b, 0x93, 0x07, 0xd3, 0x4b, 0x5f, 0x6e, 0xb7, 0xc1, 0xd1, 0x0d, + 0xa3, 0x6d, 0xaa, 0xb8, 0x6d, 0xb2, 0x95, 0x6e, 0x45, 0x81, 0xec, 0xae, 0xd1, 0x36, 0x09, 0xcb, + 0x39, 0x95, 0x3c, 0xbb, 0x69, 0x16, 0x6e, 0x9b, 0xcc, 0x37, 0x80, 0x3c, 0xa3, 0xaf, 0xca, 0x90, + 0x75, 0xff, 0x15, 0x17, 0xf5, 0xdb, 0xe4, 0x84, 0x81, 0x08, 0x5c, 0xf2, 0x23, 0xb1, 0x84, 0xee, + 0x0a, 0xad, 0xfd, 0x53, 0x0f, 0xd6, 0x6b, 0xa3, 0xca, 0x0b, 0x89, 0x22, 0x58, 0xf3, 0x57, 0x4e, + 0xc1, 0xc4, 0xf9, 0x8e, 0xd9, 0xba, 0x10, 0x9c, 0x97, 0x67, 0xaf, 0xca, 0x8d, 0x90, 0xb3, 0x34, + 0x63, 0x0b, 0xb3, 0x3d, 0x85, 0xe3, 0x3d, 0x7d, 0x21, 0xf1, 0x7a, 0x51, 0x69, 0x16, 0xf4, 0xd6, + 0x24, 0x21, 0x10, 0xfa, 0x54, 0x3e, 0x99, 0x3e, 0x2c, 0x0e, 0x71, 0xb2, 0xac, 0x00, 0x33, 0xa5, + 0x22, 0xbd, 0x9b, 0x7c, 0xad, 0x76, 0xb6, 0x5c, 0x90, 0x09, 0xcc, 0xae, 0x4c, 0x52, 0x84, 0xd9, + 0x25, 0xff, 0x03, 0x0b, 0x73, 0x9f, 0xca, 0x1f, 0x06, 0xcc, 0x1f, 0x97, 0x60, 0x76, 0x55, 0xb7, + 0x9d, 0x28, 0x6f, 0xff, 0x98, 0xf8, 0xb8, 0xcf, 0x4f, 0x6a, 0x2a, 0x73, 0xe5, 0x08, 0x07, 0xc6, + 0x4d, 0x64, 0x0e, 0xc7, 0x15, 0x31, 0x9e, 0x63, 0x29, 0x84, 0x03, 0x7a, 0x9f, 0xb0, 0xb0, 0x24, + 0x13, 0x1b, 0x4a, 0x41, 0x21, 0xe3, 0x37, 0x94, 0x22, 0xcb, 0x4e, 0x5f, 0xbe, 0x5f, 0x95, 0xe0, + 0x98, 0x5b, 0x7c, 0xdc, 0xb2, 0x54, 0xb4, 0x98, 0x07, 0x2e, 0x4b, 0x25, 0x5e, 0x19, 0xdf, 0xc7, + 0xcb, 0x28, 0x56, 0xc6, 0x07, 0x11, 0x1d, 0xb3, 0x98, 0x23, 0x96, 0x61, 0x07, 0x89, 0x39, 0x66, + 0x19, 0x76, 0x78, 0x31, 0xc7, 0x2f, 0xc5, 0x0e, 0x29, 0xe6, 0x43, 0x5b, 0x60, 0x7d, 0xad, 0xec, + 0x8b, 0x39, 0x72, 0x6d, 0x23, 0x46, 0xcc, 0x89, 0x4f, 0xec, 0xa2, 0xb7, 0x0f, 0x29, 0xf8, 0x11, + 0xaf, 0x6f, 0x0c, 0x03, 0xd3, 0x21, 0xae, 0x71, 0xbc, 0x44, 0x86, 0x39, 0xc6, 0x45, 0xff, 0x29, + 0x73, 0x0c, 0x46, 0x89, 0xa7, 0xcc, 0x89, 0xcf, 0x00, 0xf1, 0x9c, 0x8d, 0xff, 0x0c, 0x50, 0x6c, + 0xf9, 0xe9, 0x83, 0xf3, 0xb5, 0x2c, 0x9c, 0x74, 0x59, 0x58, 0x33, 0xdb, 0xfa, 0xe6, 0x25, 0xca, + 0xc5, 0x59, 0xad, 0xb3, 0x8b, 0x6d, 0xf4, 0x1e, 0x49, 0x14, 0xa5, 0xff, 0x04, 0x60, 0x76, 0xb1, + 0x45, 0x03, 0xa9, 0x31, 0xa0, 0xee, 0x88, 0xaa, 0xec, 0xfe, 0x92, 0xfc, 0xeb, 0x62, 0x6a, 0x1e, + 0x11, 0x35, 0x44, 0xcf, 0xb5, 0x0a, 0xa7, 0xfc, 0x2f, 0xbd, 0x0e, 0x1e, 0x99, 0xfd, 0x0e, 0x1e, + 0x37, 0x80, 0xac, 0xb5, 0xdb, 0x3e, 0x54, 0xbd, 0x9b, 0xd9, 0xa4, 0x4c, 0xd5, 0xcd, 0xe2, 0xe6, + 0xb4, 0x71, 0x70, 0x34, 0x2f, 0x22, 0xa7, 0x8d, 0x1d, 0x65, 0x1e, 0xf2, 0xf4, 0x6e, 0x65, 0x7f, + 0x45, 0xbf, 0x7f, 0x66, 0x96, 0x8b, 0x37, 0xed, 0x6a, 0xbc, 0x1a, 0xde, 0x96, 0x48, 0x32, 0xfd, + 0xfa, 0xe9, 0xc0, 0x4e, 0x56, 0x39, 0x05, 0x7b, 0xfa, 0xd0, 0x94, 0xc7, 0xb3, 0x1b, 0x56, 0xec, + 0x76, 0x3b, 0x97, 0x1a, 0x2c, 0xf8, 0x4a, 0xa2, 0xdd, 0xb0, 0x50, 0x0c, 0x17, 0xa9, 0x37, 0x86, + 0x4b, 0xf2, 0xdd, 0x30, 0x8e, 0x8f, 0x51, 0xec, 0x86, 0xc5, 0x11, 0x4c, 0x5f, 0xb4, 0x6f, 0xce, + 0x51, 0xab, 0x99, 0x45, 0xef, 0xff, 0xc3, 0xfe, 0x87, 0xd0, 0x80, 0x77, 0x76, 0xe9, 0x17, 0xd8, + 0x3f, 0xf6, 0xd6, 0x12, 0xe5, 0xc9, 0x90, 0xdf, 0x34, 0xad, 0x1d, 0xcd, 0xdb, 0xb8, 0xef, 0x3d, + 0x29, 0xc2, 0x22, 0xe6, 0x2f, 0x91, 0x3c, 0x2a, 0xcb, 0xeb, 0xce, 0x47, 0x9e, 0xa9, 0x77, 0x59, + 0xd4, 0x45, 0xf7, 0x51, 0xb9, 0x0e, 0x66, 0x59, 0xf0, 0xc5, 0x2a, 0xb6, 0x1d, 0xdc, 0x66, 0x11, + 0x2b, 0xf8, 0x44, 0xe5, 0x0c, 0xcc, 0xb0, 0x84, 0x25, 0xbd, 0x83, 0x6d, 0x16, 0xb4, 0x82, 0x4b, + 0x53, 0x4e, 0x42, 0x5e, 0xb7, 0xef, 0xb1, 0x4d, 0x83, 0xf8, 0xff, 0x4f, 0xaa, 0xec, 0x4d, 0xb9, + 0x01, 0x8e, 0xb2, 0x7c, 0xbe, 0xb1, 0x4a, 0x0f, 0xec, 0xf4, 0x26, 0xbb, 0xaa, 0x65, 0x98, 0xeb, + 0x96, 0xb9, 0x65, 0x61, 0xdb, 0x26, 0xa7, 0xa6, 0x26, 0xd5, 0x50, 0x0a, 0xfa, 0xcc, 0x30, 0x13, + 0x8b, 0xc4, 0x37, 0x19, 0xb8, 0x28, 0xed, 0xb6, 0x5a, 0x18, 0xb7, 0xd9, 0xc9, 0x27, 0xef, 0x35, + 0xe1, 0x1d, 0x07, 0x89, 0xa7, 0x21, 0x87, 0x74, 0xc9, 0xc1, 0x07, 0x4f, 0x40, 0x9e, 0x5e, 0x18, + 0x86, 0x5e, 0x34, 0xd7, 0x57, 0x59, 0xe7, 0x78, 0x65, 0xdd, 0x80, 0x19, 0xc3, 0x74, 0x8b, 0x5b, + 0xd7, 0x2c, 0x6d, 0xc7, 0x8e, 0x5b, 0x65, 0xa4, 0x74, 0xfd, 0x21, 0xa5, 0x1a, 0xfa, 0x6d, 0xe5, + 0x88, 0xca, 0x91, 0x51, 0xfe, 0x0f, 0x38, 0x7a, 0x9e, 0x45, 0x08, 0xb0, 0x19, 0x65, 0x29, 0xda, + 0x07, 0xaf, 0x87, 0xf2, 0x02, 0xff, 0xe7, 0xca, 0x11, 0xb5, 0x97, 0x98, 0xf2, 0x13, 0x30, 0xe7, + 0xbe, 0xb6, 0xcd, 0x8b, 0x1e, 0xe3, 0x72, 0xb4, 0x21, 0xd2, 0x43, 0x7e, 0x8d, 0xfb, 0x71, 0xe5, + 0x88, 0xda, 0x43, 0x4a, 0xa9, 0x01, 0x6c, 0x3b, 0x3b, 0x1d, 0x46, 0x38, 0x1b, 0xad, 0x92, 0x3d, + 0x84, 0x57, 0xfc, 0x9f, 0x56, 0x8e, 0xa8, 0x21, 0x12, 0xca, 0x2a, 0x4c, 0x39, 0x0f, 0x38, 0x8c, + 0x5e, 0x2e, 0x7a, 0xf3, 0xbb, 0x87, 0x5e, 0xc3, 0xfb, 0x67, 0xe5, 0x88, 0x1a, 0x10, 0x50, 0x2a, + 0x30, 0xd9, 0x3d, 0xcf, 0x88, 0xe5, 0xfb, 0x44, 0x9b, 0xef, 0x4f, 0x6c, 0xfd, 0xbc, 0x4f, 0xcb, + 0xff, 0xdd, 0x65, 0xac, 0x65, 0xef, 0x31, 0x5a, 0x13, 0xc2, 0x8c, 0x95, 0xbc, 0x7f, 0x5c, 0xc6, + 0x7c, 0x02, 0x4a, 0x05, 0xa6, 0x6c, 0x43, 0xeb, 0xda, 0xdb, 0xa6, 0x63, 0x9f, 0x9a, 0xec, 0xf1, + 0x93, 0x8c, 0xa6, 0x56, 0x67, 0xff, 0xa8, 0xc1, 0xdf, 0xca, 0x93, 0xe1, 0xc4, 0x2e, 0xb9, 0x78, + 0xbd, 0xfc, 0x80, 0x6e, 0x3b, 0xba, 0xb1, 0xe5, 0xc5, 0x98, 0xa5, 0xbd, 0x4d, 0xff, 0x8f, 0xca, + 0x3c, 0x3b, 0x31, 0x05, 0xa4, 0x6d, 0xa2, 0xde, 0xcd, 0x3a, 0x5a, 0x6c, 0xe8, 0xa0, 0xd4, 0xd3, + 0x20, 0xeb, 0x7e, 0x22, 0xbd, 0xd3, 0x5c, 0xff, 0x85, 0xc0, 0x5e, 0xdd, 0x21, 0x0d, 0xd8, 0xfd, + 0xa9, 0xa7, 0x83, 0x9b, 0xe9, 0xed, 0xe0, 0xdc, 0x06, 0xae, 0xdb, 0x6b, 0xfa, 0x16, 0xb5, 0xae, + 0x98, 0x3f, 0x7c, 0x38, 0x89, 0xce, 0x46, 0xab, 0xf8, 0x22, 0xbd, 0x41, 0xe3, 0xa8, 0x37, 0x1b, + 0xf5, 0x52, 0xd0, 0xf5, 0x30, 0x13, 0x6e, 0x64, 0xf4, 0xd6, 0x51, 0x3d, 0xb0, 0xcd, 0xd8, 0x1b, + 0xba, 0x0e, 0xe6, 0x78, 0x9d, 0x0e, 0x0d, 0x41, 0xb2, 0xd7, 0x15, 0xa2, 0x6b, 0xe1, 0x68, 0x4f, + 0xc3, 0xf2, 0x62, 0x8e, 0x64, 0x82, 0x98, 0x23, 0xd7, 0x00, 0x04, 0x5a, 0xdc, 0x97, 0xcc, 0xd5, + 0x30, 0xe5, 0xeb, 0x65, 0xdf, 0x0c, 0x5f, 0xce, 0xc0, 0xa4, 0xa7, 0x6c, 0xfd, 0x32, 0xb8, 0xe3, + 0x8f, 0x11, 0xda, 0x60, 0x60, 0xd3, 0x70, 0x2e, 0xcd, 0x1d, 0x67, 0x02, 0xb7, 0xde, 0x86, 0xee, + 0x74, 0xbc, 0xa3, 0x71, 0xbd, 0xc9, 0xca, 0x3a, 0x80, 0x4e, 0x30, 0x6a, 0x04, 0x67, 0xe5, 0x6e, + 0x49, 0xd0, 0x1e, 0xa8, 0x3e, 0x84, 0x68, 0x9c, 0xf9, 0x21, 0x76, 0x90, 0x6d, 0x0a, 0x72, 0x34, + 0xd0, 0xfa, 0x11, 0x65, 0x0e, 0xa0, 0xfc, 0x8c, 0xf5, 0xb2, 0x5a, 0x29, 0x57, 0x4b, 0xe5, 0x42, + 0x06, 0xbd, 0x54, 0x82, 0x29, 0xbf, 0x11, 0xf4, 0xad, 0x64, 0x99, 0xa9, 0xd6, 0xc0, 0x8b, 0x1d, + 0xf7, 0x37, 0xaa, 0xb0, 0x92, 0x3d, 0x15, 0x2e, 0xdf, 0xb5, 0xf1, 0x92, 0x6e, 0xd9, 0x8e, 0x6a, + 0x5e, 0x5c, 0x32, 0x2d, 0x3f, 0xaa, 0x32, 0x8b, 0x70, 0x1a, 0xf5, 0xd9, 0xb5, 0x38, 0xda, 0x98, + 0x1c, 0x9a, 0xc2, 0x16, 0x5b, 0x39, 0x0e, 0x12, 0x5c, 0xba, 0x8e, 0xa5, 0x19, 0x76, 0xd7, 0xb4, + 0xb1, 0x6a, 0x5e, 0xb4, 0x8b, 0x46, 0xbb, 0x64, 0x76, 0x76, 0x77, 0x0c, 0x9b, 0xd9, 0x0c, 0x51, + 0x9f, 0x5d, 0xe9, 0x90, 0x6b, 0x5b, 0xe7, 0x00, 0x4a, 0xb5, 0xd5, 0xd5, 0x72, 0xa9, 0x51, 0xa9, + 0x55, 0x0b, 0x47, 0x5c, 0x69, 0x35, 0x8a, 0x0b, 0xab, 0xae, 0x74, 0x7e, 0x12, 0x26, 0xbd, 0x36, + 0xcd, 0xc2, 0xa4, 0x64, 0xbc, 0x30, 0x29, 0x4a, 0x11, 0x26, 0xbd, 0x56, 0xce, 0x46, 0x84, 0xc7, + 0xf6, 0x1e, 0x8b, 0xdd, 0xd1, 0x2c, 0x87, 0xf8, 0x53, 0x7b, 0x44, 0x16, 0x34, 0x1b, 0xab, 0xfe, + 0x6f, 0x67, 0x9e, 0xc0, 0x38, 0x50, 0x60, 0xae, 0xb8, 0xba, 0xda, 0xac, 0xa9, 0xcd, 0x6a, 0xad, + 0xb1, 0x52, 0xa9, 0x2e, 0xd3, 0x11, 0xb2, 0xb2, 0x5c, 0xad, 0xa9, 0x65, 0x3a, 0x40, 0xd6, 0x0b, + 0x19, 0x7a, 0x6d, 0xf0, 0xc2, 0x24, 0xe4, 0xbb, 0x44, 0xba, 0xe8, 0x0b, 0x72, 0xc2, 0xf3, 0xf0, + 0x3e, 0x4e, 0x11, 0x17, 0x9b, 0x72, 0x3e, 0xe9, 0x52, 0x9f, 0x33, 0xa3, 0x67, 0x60, 0x86, 0xda, + 0x7a, 0x36, 0x59, 0xde, 0x27, 0xc8, 0xc9, 0x2a, 0x97, 0x86, 0x3e, 0x2c, 0x25, 0x38, 0x24, 0xdf, + 0x97, 0xa3, 0x64, 0xc6, 0xc5, 0x9f, 0x65, 0x86, 0xbb, 0x96, 0xa0, 0x52, 0x6d, 0x94, 0xd5, 0x6a, + 0x71, 0x95, 0x65, 0x91, 0x95, 0x53, 0x70, 0xbc, 0x5a, 0x63, 0x31, 0xff, 0xea, 0xcd, 0x46, 0xad, + 0x59, 0x59, 0x5b, 0xaf, 0xa9, 0x8d, 0x42, 0x4e, 0x39, 0x09, 0x0a, 0x7d, 0x6e, 0x56, 0xea, 0xcd, + 0x52, 0xb1, 0x5a, 0x2a, 0xaf, 0x96, 0x17, 0x0b, 0x79, 0xe5, 0x71, 0x70, 0x2d, 0xbd, 0xe6, 0xa6, + 0xb6, 0xd4, 0x54, 0x6b, 0xe7, 0xea, 0x2e, 0x82, 0x6a, 0x79, 0xb5, 0xe8, 0x2a, 0x52, 0xe8, 0xfa, + 0xe0, 0x09, 0xe5, 0x32, 0x38, 0x4a, 0xae, 0x06, 0x5f, 0xad, 0x15, 0x17, 0x59, 0x79, 0x93, 0xca, + 0x55, 0x70, 0xaa, 0x52, 0xad, 0x6f, 0x2c, 0x2d, 0x55, 0x4a, 0x95, 0x72, 0xb5, 0xd1, 0x5c, 0x2f, + 0xab, 0x6b, 0x95, 0x7a, 0xdd, 0xfd, 0xb7, 0x30, 0x45, 0x2e, 0x67, 0xa5, 0x7d, 0x26, 0x7a, 0xb7, + 0x0c, 0xb3, 0x67, 0xb5, 0x8e, 0xee, 0x0e, 0x14, 0xe4, 0xd6, 0xe6, 0x9e, 0xe3, 0x24, 0x0e, 0xb9, + 0xdd, 0x99, 0x39, 0xa4, 0x93, 0x17, 0xf4, 0xb3, 0x72, 0xc2, 0xe3, 0x24, 0x0c, 0x08, 0x5a, 0xe2, + 0x3c, 0x57, 0x5a, 0xc4, 0xe4, 0xe7, 0xd5, 0x52, 0x82, 0xe3, 0x24, 0xe2, 0xe4, 0x93, 0x81, 0xff, + 0xb2, 0x51, 0x81, 0x5f, 0x80, 0x99, 0x8d, 0x6a, 0x71, 0xa3, 0xb1, 0x52, 0x53, 0x2b, 0x3f, 0x4e, + 0xa2, 0x91, 0xcf, 0xc2, 0xd4, 0x52, 0x4d, 0x5d, 0xa8, 0x2c, 0x2e, 0x96, 0xab, 0x85, 0x9c, 0x72, + 0x39, 0x5c, 0x56, 0x2f, 0xab, 0x67, 0x2b, 0xa5, 0x72, 0x73, 0xa3, 0x5a, 0x3c, 0x5b, 0xac, 0xac, + 0x92, 0x3e, 0x22, 0x1f, 0x73, 0xe3, 0xf4, 0x04, 0xfa, 0xe9, 0x2c, 0x00, 0xad, 0x3a, 0xb9, 0x8c, + 0x27, 0x74, 0x2f, 0xf1, 0x9f, 0x27, 0x9d, 0x34, 0x04, 0x64, 0x22, 0xda, 0x6f, 0x05, 0x26, 0x2d, + 0xf6, 0x81, 0x2d, 0xaf, 0x0c, 0xa2, 0x43, 0x1f, 0x3d, 0x6a, 0xaa, 0xff, 0x3b, 0x7a, 0x4f, 0x92, + 0x39, 0x42, 0x24, 0x63, 0xc9, 0x90, 0x5c, 0x1a, 0x0d, 0x90, 0xe8, 0xa1, 0x0c, 0xcc, 0xf1, 0x15, + 0x73, 0x2b, 0x41, 0x8c, 0x29, 0xb1, 0x4a, 0xf0, 0x3f, 0x87, 0x8c, 0xac, 0x33, 0x4f, 0x62, 0xc3, + 0x29, 0x78, 0x2d, 0x93, 0x9e, 0x0c, 0xf7, 0x2c, 0x96, 0x42, 0xc6, 0x65, 0xde, 0x35, 0x3a, 0x0a, + 0x92, 0x32, 0x01, 0x72, 0xe3, 0x01, 0xa7, 0x20, 0xa3, 0x2f, 0xcb, 0x30, 0xcb, 0x5d, 0x7c, 0x8c, + 0x5e, 0x9d, 0x11, 0xb9, 0x94, 0x34, 0x74, 0xa5, 0x72, 0xe6, 0xa0, 0x57, 0x2a, 0x9f, 0xb9, 0x19, + 0x26, 0x58, 0x1a, 0x91, 0x6f, 0xad, 0xea, 0x9a, 0x02, 0x47, 0x61, 0x7a, 0xb9, 0xdc, 0x68, 0xd6, + 0x1b, 0x45, 0xb5, 0x51, 0x5e, 0x2c, 0x64, 0xdc, 0x81, 0xaf, 0xbc, 0xb6, 0xde, 0xb8, 0xaf, 0x20, + 0x25, 0xf7, 0xd0, 0xeb, 0x65, 0x64, 0xcc, 0x1e, 0x7a, 0x71, 0xc5, 0xa7, 0x3f, 0x57, 0xfd, 0x94, + 0x0c, 0x05, 0xca, 0x41, 0xf9, 0x81, 0x2e, 0xb6, 0x74, 0x6c, 0xb4, 0x30, 0xba, 0x20, 0x12, 0x11, + 0x74, 0x5f, 0xac, 0x3c, 0xd2, 0x9f, 0x87, 0xac, 0x44, 0xfa, 0xd2, 0x63, 0x60, 0x67, 0xf7, 0x19, + 0xd8, 0x9f, 0x4c, 0xea, 0xa2, 0xd7, 0xcb, 0xee, 0x48, 0x20, 0xfb, 0x58, 0x12, 0x17, 0xbd, 0x01, + 0x1c, 0x8c, 0x25, 0xd0, 0x6f, 0xc4, 0xf8, 0x5b, 0x90, 0xd1, 0xf3, 0x64, 0x38, 0xba, 0xa8, 0x39, + 0x78, 0xe1, 0x52, 0xc3, 0xbb, 0x98, 0x30, 0xe2, 0x32, 0xe1, 0xcc, 0xbe, 0xcb, 0x84, 0x83, 0xbb, + 0x0d, 0xa5, 0x9e, 0xbb, 0x0d, 0xd1, 0x3b, 0x92, 0x1e, 0xea, 0xeb, 0xe1, 0x61, 0x64, 0xd1, 0x78, + 0x93, 0x1d, 0xd6, 0x8b, 0xe7, 0x62, 0x0c, 0x77, 0xfb, 0x4f, 0x41, 0x81, 0xb2, 0x12, 0xf2, 0x42, + 0xfb, 0x15, 0x76, 0xff, 0x76, 0x33, 0x41, 0xd0, 0x3f, 0x2f, 0x8c, 0x82, 0xc4, 0x87, 0x51, 0xe0, + 0x16, 0x35, 0xe5, 0x5e, 0xcf, 0x81, 0xa4, 0x9d, 0x61, 0xc8, 0xe5, 0x2c, 0x3a, 0xce, 0x6a, 0x7a, + 0x9d, 0x61, 0x6c, 0xf1, 0xe3, 0xb9, 0x23, 0x96, 0xdd, 0xf3, 0x58, 0x16, 0x45, 0x26, 0xfe, 0x2a, + 0xec, 0xa4, 0xfe, 0xc7, 0x9c, 0xcb, 0x5f, 0xcc, 0xfd, 0xd0, 0xe9, 0xf9, 0x1f, 0x0f, 0xe2, 0x20, + 0x7d, 0x14, 0xbe, 0x27, 0x41, 0xb6, 0x6e, 0x5a, 0xce, 0xa8, 0x30, 0x48, 0xba, 0x67, 0x1a, 0x92, + 0x40, 0x3d, 0x7a, 0xce, 0x99, 0xde, 0x9e, 0x69, 0x7c, 0xf9, 0x63, 0x88, 0x9b, 0x78, 0x14, 0xe6, + 0x28, 0x27, 0xfe, 0xa5, 0x22, 0xdf, 0x95, 0x68, 0x7f, 0x75, 0xaf, 0x28, 0x22, 0x67, 0x60, 0x26, + 0xb4, 0x67, 0xe9, 0x81, 0xc2, 0xa5, 0xa1, 0xd7, 0x87, 0x71, 0x59, 0xe4, 0x71, 0xe9, 0x37, 0xe3, + 0xf6, 0xef, 0xe5, 0x18, 0x55, 0xcf, 0x94, 0x24, 0x04, 0x63, 0x4c, 0xe1, 0xe9, 0x23, 0xf2, 0xa0, + 0x0c, 0x79, 0xe6, 0x33, 0x36, 0x52, 0x04, 0x92, 0xb6, 0x0c, 0x5f, 0x08, 0x62, 0xbe, 0x65, 0xf2, + 0xa8, 0x5b, 0x46, 0x7c, 0xf9, 0xe9, 0xe3, 0xf0, 0xef, 0xcc, 0x19, 0xb2, 0xb8, 0xa7, 0xe9, 0x1d, + 0xed, 0x7c, 0x27, 0x41, 0xe8, 0xe3, 0x0f, 0x27, 0x3c, 0xfe, 0xe5, 0x57, 0x95, 0x2b, 0x2f, 0x42, + 0xe2, 0x3f, 0x02, 0x53, 0x96, 0xbf, 0x24, 0xe9, 0x9d, 0x8e, 0xef, 0x71, 0x44, 0x65, 0xdf, 0xd5, + 0x20, 0x67, 0xa2, 0xb3, 0x5e, 0x42, 0xfc, 0x8c, 0xe5, 0x6c, 0xca, 0x74, 0xb1, 0xdd, 0x5e, 0xc2, + 0x9a, 0xb3, 0x6b, 0xe1, 0x76, 0xa2, 0x21, 0x82, 0x17, 0xd1, 0x54, 0x58, 0x12, 0x5c, 0xf0, 0xc1, + 0x55, 0x1e, 0x9d, 0xa7, 0x0c, 0xe8, 0x0d, 0x3c, 0x5e, 0x46, 0xd2, 0x25, 0xbd, 0xd9, 0x87, 0xa4, + 0xc6, 0x41, 0xf2, 0xb4, 0xe1, 0x98, 0x18, 0xc3, 0x85, 0xee, 0x32, 0xcc, 0x51, 0x3b, 0x61, 0xd4, + 0x98, 0xfc, 0x5e, 0x42, 0x1f, 0x93, 0xd0, 0xb5, 0x4d, 0x61, 0x76, 0x46, 0x02, 0x4b, 0x12, 0x8f, + 0x14, 0x31, 0x3e, 0xd2, 0x47, 0xe6, 0x33, 0x79, 0x80, 0x90, 0xdf, 0xe0, 0x87, 0xf3, 0x41, 0x20, + 0x40, 0xf4, 0x56, 0x36, 0xff, 0xa8, 0x73, 0x51, 0xa9, 0x43, 0x3e, 0x81, 0xfe, 0x86, 0x14, 0x9f, + 0x28, 0x34, 0xaa, 0xfc, 0x59, 0x42, 0x9b, 0x97, 0x79, 0xed, 0x0d, 0x1c, 0xdc, 0x87, 0xec, 0xe5, + 0x3e, 0x92, 0xc0, 0xf8, 0x1d, 0xc4, 0x4a, 0x32, 0xd4, 0x56, 0x87, 0x98, 0xd9, 0x9f, 0x82, 0xe3, + 0x6a, 0xb9, 0xb8, 0x58, 0xab, 0xae, 0xde, 0x17, 0xbe, 0xc3, 0xa7, 0x20, 0x87, 0x27, 0x27, 0xa9, + 0xc0, 0xf6, 0x9a, 0x84, 0x7d, 0x20, 0x2f, 0xab, 0xd8, 0x1b, 0xea, 0x3f, 0x96, 0xa0, 0x57, 0x13, + 0x20, 0x7b, 0x98, 0x28, 0x3c, 0x08, 0xa1, 0x66, 0xf4, 0xf3, 0x32, 0x14, 0xdc, 0xf1, 0x90, 0x72, + 0xc9, 0x2e, 0x6b, 0xab, 0xf1, 0x6e, 0x85, 0x5d, 0xba, 0xff, 0x14, 0xb8, 0x15, 0x7a, 0x09, 0xca, + 0xf5, 0x30, 0xd7, 0xda, 0xc6, 0xad, 0x0b, 0x15, 0xc3, 0xdb, 0x57, 0xa7, 0x9b, 0xb0, 0x3d, 0xa9, + 0x3c, 0x30, 0xf7, 0xf2, 0xc0, 0xf0, 0x93, 0x68, 0x6e, 0x90, 0x0e, 0x33, 0x15, 0x81, 0xcb, 0x1f, + 0xfa, 0xb8, 0x54, 0x39, 0x5c, 0x6e, 0x1f, 0x8a, 0x6a, 0x32, 0x58, 0xaa, 0x43, 0xc0, 0x82, 0xe0, + 0x64, 0x6d, 0xbd, 0x51, 0xa9, 0x55, 0x9b, 0x1b, 0xf5, 0xf2, 0x62, 0x73, 0xc1, 0x03, 0xa7, 0x5e, + 0x90, 0xd1, 0xd7, 0x25, 0x98, 0xa0, 0x6c, 0xd9, 0xe8, 0xf1, 0x01, 0x04, 0x03, 0xfd, 0x29, 0xd1, + 0x5b, 0x84, 0xa3, 0x23, 0xf8, 0x82, 0x60, 0xe5, 0x44, 0xf4, 0x53, 0x4f, 0x85, 0x09, 0x0a, 0xb2, + 0xb7, 0xa2, 0x75, 0x3a, 0xa2, 0x97, 0x62, 0x64, 0x54, 0x2f, 0xbb, 0x60, 0xa4, 0x84, 0x01, 0x6c, + 0xa4, 0x3f, 0xb2, 0x3c, 0x2b, 0x4b, 0xcd, 0xe0, 0x73, 0xba, 0xb3, 0x4d, 0xdc, 0x2d, 0xd1, 0x8f, + 0x89, 0x2c, 0x2f, 0xde, 0x04, 0xb9, 0x3d, 0x37, 0xf7, 0x00, 0xd7, 0x55, 0x9a, 0x09, 0xbd, 0x4c, + 0x38, 0x30, 0x27, 0xa7, 0x9f, 0x3e, 0x4f, 0x11, 0xe0, 0xac, 0x41, 0xb6, 0xa3, 0xdb, 0x0e, 0x1b, + 0x3f, 0x6e, 0x4b, 0x44, 0xc8, 0x7b, 0xa8, 0x38, 0x78, 0x47, 0x25, 0x64, 0xd0, 0x3d, 0x30, 0x13, + 0x4e, 0x15, 0x70, 0xdf, 0x3d, 0x05, 0x13, 0xec, 0x58, 0x19, 0x5b, 0x62, 0xf5, 0x5e, 0x05, 0x97, + 0x35, 0x85, 0x6a, 0x9b, 0xbe, 0x0e, 0xfc, 0xbf, 0x47, 0x61, 0x62, 0x45, 0xb7, 0x1d, 0xd3, 0xba, + 0x84, 0x1e, 0xc9, 0xc0, 0xc4, 0x59, 0x6c, 0xd9, 0xba, 0x69, 0xec, 0x73, 0x35, 0xb8, 0x06, 0xa6, + 0xbb, 0x16, 0xde, 0xd3, 0xcd, 0x5d, 0x3b, 0x58, 0x9c, 0x09, 0x27, 0x29, 0x08, 0x26, 0xb5, 0x5d, + 0x67, 0xdb, 0xb4, 0x82, 0x68, 0x14, 0xde, 0xbb, 0x72, 0x1a, 0x80, 0x3e, 0x57, 0xb5, 0x1d, 0xcc, + 0x1c, 0x28, 0x42, 0x29, 0x8a, 0x02, 0x59, 0x47, 0xdf, 0xc1, 0x2c, 0x3c, 0x2d, 0x79, 0x76, 0x05, + 0x4c, 0x42, 0xbd, 0xb1, 0x90, 0x7a, 0xb2, 0xea, 0xbd, 0xa2, 0xcf, 0xc9, 0x30, 0xbd, 0x8c, 0x1d, + 0xc6, 0xaa, 0x8d, 0x9e, 0x9f, 0x11, 0xba, 0x11, 0xc2, 0x1d, 0x63, 0x3b, 0x9a, 0xed, 0xfd, 0xe7, + 0x2f, 0xc1, 0xf2, 0x89, 0x41, 0xac, 0x5c, 0x39, 0x1c, 0x28, 0x9b, 0x04, 0x4e, 0x73, 0x2a, 0xd4, + 0x2f, 0x93, 0x65, 0x66, 0x9b, 0x20, 0xfb, 0x3f, 0xa0, 0x77, 0x4a, 0xa2, 0x87, 0x8e, 0x99, 0xec, + 0xe7, 0x43, 0xf5, 0x89, 0xec, 0x8e, 0x26, 0xf7, 0x58, 0x8e, 0x7d, 0x31, 0xd0, 0xc3, 0x94, 0x18, + 0x19, 0xd5, 0xcf, 0x2d, 0x78, 0x5c, 0x79, 0x30, 0x27, 0xe9, 0x6b, 0xe3, 0xb7, 0x65, 0x98, 0xae, + 0x6f, 0x9b, 0x17, 0x3d, 0x39, 0xfe, 0xa4, 0x18, 0xb0, 0x57, 0xc1, 0xd4, 0x5e, 0x0f, 0xa8, 0x41, + 0x42, 0xf4, 0x1d, 0xed, 0xe8, 0xb9, 0x72, 0x52, 0x98, 0x42, 0xcc, 0x8d, 0xfc, 0x06, 0x75, 0xe5, + 0x29, 0x30, 0xc1, 0xb8, 0x66, 0x4b, 0x2e, 0xf1, 0x00, 0x7b, 0x99, 0xc3, 0x15, 0xcc, 0xf2, 0x15, + 0x4c, 0x86, 0x7c, 0x74, 0xe5, 0xd2, 0x47, 0xfe, 0x8f, 0x25, 0x12, 0xac, 0xc2, 0x03, 0xbe, 0x34, + 0x02, 0xe0, 0xd1, 0x77, 0x32, 0xa2, 0x0b, 0x93, 0xbe, 0x04, 0x7c, 0x0e, 0x0e, 0x74, 0xdb, 0xcb, + 0x40, 0x72, 0xe9, 0xcb, 0xf3, 0xa5, 0x59, 0x98, 0x59, 0xd4, 0x37, 0x37, 0xfd, 0x4e, 0xf2, 0x05, + 0x82, 0x9d, 0x64, 0xb4, 0x3b, 0x80, 0x6b, 0xe7, 0xee, 0x5a, 0x16, 0x36, 0xbc, 0x4a, 0xb1, 0xe6, + 0xd4, 0x93, 0xaa, 0xdc, 0x00, 0x47, 0xbd, 0x71, 0x21, 0xdc, 0x51, 0x4e, 0xa9, 0xbd, 0xc9, 0xe8, + 0x5b, 0xc2, 0xbb, 0x5a, 0x9e, 0x44, 0xc3, 0x55, 0x8a, 0x68, 0x80, 0x77, 0xc0, 0xec, 0x36, 0xcd, + 0x4d, 0xa6, 0xfe, 0x5e, 0x67, 0x79, 0xb2, 0x27, 0x18, 0xf0, 0x1a, 0xb6, 0x6d, 0x6d, 0x0b, 0xab, + 0x7c, 0xe6, 0x9e, 0xe6, 0x2b, 0x27, 0xb9, 0xda, 0x4a, 0x6c, 0x83, 0x4c, 0xa0, 0x26, 0x63, 0xd0, + 0x8e, 0x33, 0x90, 0x5d, 0xd2, 0x3b, 0x18, 0xfd, 0x82, 0x04, 0x53, 0x2a, 0x6e, 0x99, 0x46, 0xcb, + 0x7d, 0x0b, 0x39, 0x07, 0xfd, 0x63, 0x46, 0xf4, 0x4a, 0x47, 0x97, 0xce, 0xbc, 0x4f, 0x23, 0xa2, + 0xdd, 0x88, 0x5d, 0xdd, 0x18, 0x4b, 0x6a, 0x0c, 0x17, 0x70, 0xb8, 0x53, 0x8f, 0xcd, 0xcd, 0x8e, + 0xa9, 0x71, 0x8b, 0x5f, 0xbd, 0xa6, 0xd0, 0x8d, 0x50, 0xf0, 0xce, 0x80, 0x98, 0xce, 0xba, 0x6e, + 0x18, 0xfe, 0x21, 0xe3, 0x7d, 0xe9, 0xfc, 0xbe, 0x6d, 0x6c, 0x9c, 0x16, 0x52, 0x77, 0x56, 0x7a, + 0x84, 0x66, 0x5f, 0x0f, 0x73, 0xe7, 0x2f, 0x39, 0xd8, 0x66, 0xb9, 0x58, 0xb1, 0x59, 0xb5, 0x27, + 0x35, 0x14, 0x65, 0x39, 0x2e, 0x9e, 0x4b, 0x4c, 0x81, 0xc9, 0x44, 0xbd, 0x32, 0xc4, 0x0c, 0xf0, + 0x38, 0x14, 0xaa, 0xb5, 0xc5, 0x32, 0xf1, 0x55, 0xf3, 0xbc, 0x7f, 0xb6, 0xd0, 0x0b, 0x65, 0x98, + 0x21, 0xce, 0x24, 0x1e, 0x0a, 0xd7, 0x0a, 0xcc, 0x47, 0xd0, 0x17, 0x85, 0xfd, 0xd8, 0x48, 0x95, + 0xc3, 0x05, 0x44, 0x0b, 0x7a, 0x53, 0xef, 0xf4, 0x0a, 0x3a, 0xa7, 0xf6, 0xa4, 0xf6, 0x01, 0x44, + 0xee, 0x0b, 0xc8, 0xef, 0x08, 0x39, 0xb3, 0x0d, 0xe2, 0xee, 0xb0, 0x50, 0xf9, 0x5d, 0x19, 0xa6, + 0xdd, 0x49, 0x8a, 0x07, 0x4a, 0x8d, 0x03, 0xc5, 0x34, 0x3a, 0x97, 0x82, 0x65, 0x11, 0xef, 0x35, + 0x51, 0x23, 0xf9, 0x4b, 0xe1, 0x99, 0x3b, 0x11, 0x51, 0x88, 0x97, 0x31, 0xe1, 0xf7, 0x5e, 0xa1, + 0xf9, 0xfc, 0x00, 0xe6, 0x0e, 0x0b, 0xbe, 0xaf, 0xe6, 0x20, 0xbf, 0xd1, 0x25, 0xc8, 0xbd, 0x4c, + 0x16, 0x89, 0x58, 0xbe, 0xef, 0x20, 0x83, 0x6b, 0x66, 0x75, 0xcc, 0x96, 0xd6, 0x59, 0x0f, 0x4e, + 0x84, 0x05, 0x09, 0xca, 0xed, 0xcc, 0xb7, 0x91, 0x1e, 0xb7, 0xbb, 0x3e, 0x36, 0x98, 0x37, 0x91, + 0x51, 0xe8, 0xd0, 0xc8, 0x4d, 0x70, 0xac, 0xad, 0xdb, 0xda, 0xf9, 0x0e, 0x2e, 0x1b, 0x2d, 0xeb, + 0x12, 0x15, 0x07, 0x9b, 0x56, 0xed, 0xfb, 0xa0, 0xdc, 0x09, 0x39, 0xdb, 0xb9, 0xd4, 0xa1, 0xf3, + 0xc4, 0xf0, 0x19, 0x93, 0xc8, 0xa2, 0xea, 0x6e, 0x76, 0x95, 0xfe, 0x15, 0x76, 0x51, 0x9a, 0x10, + 0xbc, 0xcf, 0xf9, 0x49, 0x90, 0x37, 0x2d, 0x7d, 0x4b, 0xa7, 0xf7, 0xf3, 0xcc, 0xed, 0x8b, 0x59, + 0x47, 0x4d, 0x81, 0x1a, 0xc9, 0xa2, 0xb2, 0xac, 0xca, 0x53, 0x60, 0x4a, 0xdf, 0xd1, 0xb6, 0xf0, + 0xbd, 0xba, 0x41, 0x4f, 0xf4, 0xcd, 0xdd, 0x7a, 0x6a, 0xdf, 0xf1, 0x19, 0xf6, 0x5d, 0x0d, 0xb2, + 0xa2, 0xf7, 0x4a, 0xa2, 0x81, 0x75, 0x48, 0xdd, 0x28, 0xa8, 0x63, 0xb9, 0xd7, 0x1a, 0xbd, 0x52, + 0x28, 0xe4, 0x4d, 0x34, 0x5b, 0xe9, 0x0f, 0xde, 0x9f, 0x95, 0x60, 0x72, 0xd1, 0xbc, 0x68, 0x10, + 0x45, 0xbf, 0x4d, 0xcc, 0xd6, 0xed, 0x73, 0xc8, 0x91, 0xbf, 0x36, 0x32, 0xf6, 0x44, 0x03, 0xa9, + 0xad, 0x57, 0x64, 0x04, 0x0c, 0xb1, 0x2d, 0x47, 0xf0, 0x32, 0xbf, 0xb8, 0x72, 0xd2, 0x97, 0xeb, + 0x9f, 0xc8, 0x90, 0x5d, 0xb4, 0xcc, 0x2e, 0x7a, 0x73, 0x26, 0x81, 0xcb, 0x42, 0xdb, 0x32, 0xbb, + 0x0d, 0x72, 0x1b, 0x57, 0x70, 0x8c, 0x23, 0x9c, 0xa6, 0xdc, 0x06, 0x93, 0x5d, 0xd3, 0xd6, 0x1d, + 0x6f, 0x1a, 0x31, 0x77, 0xeb, 0x63, 0xfa, 0xb6, 0xe6, 0x75, 0x96, 0x49, 0xf5, 0xb3, 0xbb, 0xbd, + 0x36, 0x11, 0xa1, 0x2b, 0x17, 0x57, 0x8c, 0xde, 0x8d, 0x64, 0x3d, 0xa9, 0xe8, 0x45, 0x61, 0x24, + 0x9f, 0xc6, 0x23, 0xf9, 0xd8, 0x3e, 0x12, 0xb6, 0xcc, 0xee, 0x48, 0x36, 0x19, 0x5f, 0xee, 0xa3, + 0xfa, 0x74, 0x0e, 0xd5, 0x1b, 0x85, 0xca, 0x4c, 0x1f, 0xd1, 0xf7, 0x66, 0x01, 0x88, 0x99, 0xb1, + 0xe1, 0x4e, 0x80, 0xc4, 0x6c, 0xac, 0x9f, 0xcb, 0x86, 0x64, 0x59, 0xe4, 0x65, 0xf9, 0xf8, 0x08, + 0x2b, 0x86, 0x90, 0x8f, 0x90, 0x68, 0x11, 0x72, 0xbb, 0xee, 0x67, 0x26, 0x51, 0x41, 0x12, 0xe4, + 0x55, 0xa5, 0x7f, 0xa2, 0x3f, 0xce, 0x40, 0x8e, 0x24, 0x28, 0xa7, 0x01, 0xc8, 0xc0, 0x4e, 0x0f, + 0x04, 0x65, 0xc8, 0x10, 0x1e, 0x4a, 0x21, 0xda, 0xaa, 0xb7, 0xd9, 0x67, 0x6a, 0x32, 0x07, 0x09, + 0xee, 0xdf, 0x64, 0xb8, 0x27, 0xb4, 0x98, 0x01, 0x10, 0x4a, 0x71, 0xff, 0x26, 0x6f, 0xab, 0x78, + 0x93, 0x06, 0x4a, 0xce, 0xaa, 0x41, 0x82, 0xff, 0xf7, 0xaa, 0x7f, 0xbd, 0x96, 0xf7, 0x37, 0x49, + 0x71, 0x27, 0xc3, 0x44, 0x2d, 0x17, 0x82, 0x22, 0xf2, 0x24, 0x53, 0x6f, 0x32, 0x7a, 0x8d, 0xaf, + 0x36, 0x8b, 0x9c, 0xda, 0xdc, 0x92, 0x40, 0xbc, 0xe9, 0x2b, 0xcf, 0x97, 0x73, 0x30, 0x55, 0x35, + 0xdb, 0x4c, 0x77, 0x42, 0x13, 0xc6, 0x8f, 0xe5, 0x12, 0x4d, 0x18, 0x7d, 0x1a, 0x11, 0x0a, 0x72, + 0x37, 0xaf, 0x20, 0x62, 0x14, 0xc2, 0xfa, 0xa1, 0x2c, 0x40, 0x9e, 0x68, 0xef, 0xfe, 0x7b, 0x9b, + 0xe2, 0x48, 0x10, 0xd1, 0xaa, 0xec, 0xcf, 0xff, 0x70, 0x3a, 0xf6, 0x5f, 0x21, 0x47, 0x2a, 0x18, + 0xb3, 0xbb, 0xc3, 0x57, 0x54, 0x8a, 0xaf, 0xa8, 0x1c, 0x5f, 0xd1, 0x6c, 0x6f, 0x45, 0x93, 0xac, + 0x03, 0x44, 0x69, 0x48, 0xfa, 0x3a, 0xfe, 0x0f, 0x13, 0x00, 0x55, 0x6d, 0x4f, 0xdf, 0xa2, 0xbb, + 0xc3, 0x9f, 0xf3, 0xe6, 0x3f, 0x6c, 0x1f, 0xf7, 0xbf, 0x85, 0x06, 0xc2, 0xdb, 0x60, 0x82, 0x8d, + 0x7b, 0xac, 0x22, 0x57, 0x73, 0x15, 0x09, 0xa8, 0x50, 0xb3, 0xf4, 0x01, 0x47, 0xf5, 0xf2, 0x73, + 0x57, 0xcc, 0x4a, 0x3d, 0x57, 0xcc, 0xf6, 0xdf, 0x83, 0x88, 0xb8, 0x78, 0x16, 0xbd, 0x4b, 0xd8, + 0xa3, 0x3f, 0xc4, 0x4f, 0xa8, 0x46, 0x11, 0x4d, 0xf0, 0x49, 0x30, 0x61, 0xfa, 0x1b, 0xda, 0x72, + 0xe4, 0x3a, 0x58, 0xc5, 0xd8, 0x34, 0x55, 0x2f, 0xa7, 0xe0, 0xe6, 0x97, 0x10, 0x1f, 0x63, 0x39, + 0x34, 0x73, 0x72, 0xd9, 0x0b, 0x3a, 0xe5, 0xd6, 0xe3, 0x9c, 0xee, 0x6c, 0xaf, 0xea, 0xc6, 0x05, + 0x1b, 0xfd, 0x67, 0x31, 0x0b, 0x32, 0x84, 0xbf, 0x94, 0x0c, 0x7f, 0x3e, 0x66, 0x47, 0x9d, 0x47, + 0xed, 0xce, 0x28, 0x2a, 0xfd, 0xb9, 0x8d, 0x00, 0xf0, 0x76, 0xc8, 0x53, 0x46, 0x59, 0x27, 0x7a, + 0x26, 0x12, 0x3f, 0x9f, 0x92, 0xca, 0xfe, 0x40, 0xef, 0xf4, 0x71, 0x3c, 0xcb, 0xe1, 0xb8, 0x70, + 0x20, 0xce, 0x52, 0x87, 0xf4, 0xcc, 0x13, 0x61, 0x82, 0x49, 0x5a, 0x99, 0x0b, 0xb7, 0xe2, 0xc2, + 0x11, 0x05, 0x20, 0xbf, 0x66, 0xee, 0xe1, 0x86, 0x59, 0xc8, 0xb8, 0xcf, 0x2e, 0x7f, 0x0d, 0xb3, + 0x20, 0xa1, 0x57, 0x4c, 0xc2, 0xa4, 0x1f, 0xed, 0xe7, 0xb3, 0x12, 0x14, 0x4a, 0x16, 0xd6, 0x1c, + 0xbc, 0x64, 0x99, 0x3b, 0xb4, 0x46, 0xe2, 0xde, 0xa1, 0xbf, 0x26, 0xec, 0xe2, 0xe1, 0x47, 0xe1, + 0xe9, 0x2d, 0x2c, 0x02, 0x4b, 0xba, 0x08, 0x29, 0x79, 0x8b, 0x90, 0xe8, 0x4d, 0x42, 0x2e, 0x1f, + 0xa2, 0xa5, 0xa4, 0xdf, 0xd4, 0x3e, 0x29, 0x41, 0xae, 0xd4, 0x31, 0x0d, 0x1c, 0x3e, 0xc2, 0x34, + 0xf0, 0xac, 0x4c, 0xff, 0x9d, 0x08, 0xf4, 0x2c, 0x49, 0xd4, 0xd6, 0x08, 0x04, 0xe0, 0x96, 0x2d, + 0x28, 0x5b, 0xb1, 0x41, 0x2a, 0x96, 0x74, 0xfa, 0x02, 0xfd, 0xba, 0x04, 0x53, 0x34, 0x2e, 0x4e, + 0xb1, 0xd3, 0x41, 0x8f, 0x09, 0x84, 0xda, 0x27, 0x62, 0x12, 0xfa, 0x1d, 0x61, 0x17, 0x7d, 0xbf, + 0x56, 0x3e, 0xed, 0x04, 0x01, 0x82, 0x92, 0x79, 0x8c, 0x8b, 0xed, 0xa5, 0x0d, 0x64, 0x28, 0x7d, + 0x51, 0xff, 0xb9, 0xe4, 0x1a, 0x00, 0xc6, 0x85, 0x75, 0x0b, 0xef, 0xe9, 0xf8, 0x22, 0xba, 0x32, + 0x10, 0xf6, 0xfe, 0xa0, 0x1f, 0x6f, 0x10, 0x5e, 0xc4, 0x09, 0x91, 0x8c, 0xdc, 0xca, 0x9a, 0xee, + 0x04, 0x99, 0x58, 0x2f, 0xde, 0x1b, 0x89, 0x25, 0x44, 0x46, 0x0d, 0x67, 0x17, 0x5c, 0xb3, 0x89, + 0xe6, 0x22, 0x7d, 0xc1, 0x7e, 0x60, 0x02, 0x26, 0x37, 0x0c, 0xbb, 0xdb, 0xd1, 0xec, 0x6d, 0xf4, + 0x5d, 0x19, 0xf2, 0xf4, 0xb6, 0x30, 0xf4, 0x23, 0x5c, 0x6c, 0x81, 0x9f, 0xda, 0xc5, 0x96, 0xe7, + 0x82, 0x43, 0x5f, 0xfa, 0x5f, 0x66, 0x8e, 0xde, 0x2b, 0x8b, 0x4e, 0x52, 0xbd, 0x42, 0x43, 0xd7, + 0xc6, 0xf7, 0x3f, 0xce, 0xde, 0xd5, 0x5b, 0xce, 0xae, 0xe5, 0x5f, 0x8d, 0xfd, 0x04, 0x31, 0x2a, + 0xeb, 0xf4, 0x2f, 0xd5, 0xff, 0x1d, 0x69, 0x30, 0xc1, 0x12, 0xf7, 0x6d, 0x27, 0xed, 0x3f, 0x7f, + 0x7b, 0x12, 0xf2, 0x9a, 0xe5, 0xe8, 0xb6, 0xc3, 0x36, 0x58, 0xd9, 0x9b, 0xdb, 0x5d, 0xd2, 0xa7, + 0x0d, 0xab, 0xe3, 0x45, 0x21, 0xf1, 0x13, 0xd0, 0xef, 0x0a, 0xcd, 0x1f, 0xe3, 0x6b, 0x9e, 0x0c, + 0xf2, 0x7b, 0x87, 0x58, 0xa3, 0xbe, 0x1c, 0x2e, 0x53, 0x8b, 0x8d, 0x72, 0x93, 0x06, 0xad, 0xf0, + 0xe3, 0x53, 0xb4, 0xd1, 0x3b, 0xe4, 0xd0, 0xfa, 0xdd, 0x25, 0x6e, 0x8c, 0x60, 0x52, 0x0c, 0xc6, + 0x08, 0x3f, 0x21, 0x66, 0xb7, 0x9a, 0x5b, 0x84, 0x95, 0xc5, 0x17, 0x61, 0x7f, 0x4b, 0x78, 0x37, + 0xc9, 0x17, 0xe5, 0x80, 0x35, 0xc0, 0xb8, 0xdb, 0x84, 0xde, 0x27, 0xb4, 0x33, 0x34, 0xa8, 0xa4, + 0x43, 0x84, 0xed, 0xf5, 0x13, 0x30, 0xb1, 0xac, 0x75, 0x3a, 0xd8, 0xba, 0xe4, 0x0e, 0x49, 0x05, + 0x8f, 0xc3, 0x35, 0xcd, 0xd0, 0x37, 0xb1, 0xed, 0xc4, 0x77, 0x96, 0xef, 0x12, 0x8e, 0x54, 0xcb, + 0xca, 0x98, 0xef, 0xa5, 0x1f, 0x21, 0xf3, 0x9b, 0x21, 0xab, 0x1b, 0x9b, 0x26, 0xeb, 0x32, 0x7b, 0x57, 0xed, 0xbd, 0x9f, 0xc9, 0xd4, 0x85, 0x64, 0x14, 0x0c, 0x56, 0x2b, 0xc8, 0x45, 0xfa, 0x3d, - 0xe7, 0xef, 0x66, 0x61, 0xd6, 0x63, 0xa2, 0x6c, 0xb6, 0xf0, 0x03, 0xe1, 0xa5, 0x98, 0x17, 0x66, - 0x45, 0x8f, 0x83, 0xf5, 0xd6, 0x87, 0x90, 0x8a, 0x10, 0x69, 0x1d, 0xa0, 0xa9, 0x3b, 0x78, 0xcb, - 0xb2, 0x0d, 0xbf, 0x3f, 0x7c, 0x62, 0x12, 0x6a, 0x25, 0xfa, 0xf7, 0x25, 0x2d, 0x44, 0x47, 0xb9, - 0x13, 0xa6, 0xb1, 0x7f, 0xfe, 0xde, 0x5b, 0xaa, 0x89, 0xc5, 0x2b, 0x9c, 0x1f, 0x7d, 0x5e, 0xe8, - 0xd4, 0x99, 0x48, 0x35, 0x93, 0x61, 0xd6, 0x18, 0xae, 0x0d, 0x6d, 0x54, 0xd6, 0x8a, 0x5a, 0x6d, - 0xa5, 0xb8, 0xba, 0x5a, 0xae, 0x2c, 0xfb, 0x81, 0x5f, 0x14, 0x98, 0x5b, 0xac, 0x9e, 0xab, 0x84, - 0x22, 0xf3, 0x64, 0xd1, 0x3a, 0x4c, 0x7a, 0xf2, 0xea, 0xe7, 0x8b, 0x19, 0x96, 0x19, 0xf3, 0xc5, - 0x0c, 0x25, 0xb9, 0xc6, 0x99, 0xd1, 0xf4, 0x1d, 0x74, 0xc8, 0x33, 0xfa, 0x63, 0x1d, 0x72, 0x64, - 0x4d, 0x1d, 0xbd, 0x8d, 0x6c, 0x03, 0x76, 0xda, 0x7a, 0x13, 0xa3, 0x9d, 0x04, 0xd6, 0xb8, 0x77, - 0x75, 0x82, 0xb4, 0xef, 0xea, 0x04, 0xf2, 0xc8, 0xac, 0xbe, 0xe3, 0xfd, 0xd6, 0xf1, 0x35, 0x9a, - 0x85, 0x3f, 0xa0, 0x15, 0xbb, 0xbb, 0x42, 0x97, 0xff, 0x19, 0x9b, 0x11, 0x2a, 0x19, 0xcd, 0x53, - 0x32, 0x4b, 0x54, 0x6c, 0x1f, 0x26, 0x8e, 0xa3, 0x31, 0x5c, 0xef, 0x9d, 0x85, 0x5c, 0xad, 0xd3, - 0x36, 0x1c, 0xf4, 0x12, 0x69, 0x24, 0x98, 0xd1, 0xeb, 0x2e, 0xe4, 0x81, 0xd7, 0x5d, 0x04, 0xbb, - 0xae, 0x59, 0x81, 0x5d, 0xd7, 0x3a, 0x7e, 0xc0, 0xe1, 0x77, 0x5d, 0x6f, 0x63, 0xc1, 0xdb, 0xe8, - 0x9e, 0xed, 0xa3, 0xfb, 0x88, 0x94, 0x54, 0xab, 0x4f, 0x54, 0xc0, 0x33, 0x8f, 0x67, 0xc1, 0xc9, - 0x00, 0xf2, 0x0b, 0xd5, 0x7a, 0xbd, 0xba, 0x56, 0x38, 0x42, 0xa2, 0xda, 0x54, 0xd7, 0x69, 0xa8, - 0x98, 0x72, 0xa5, 0xa2, 0x6a, 0x05, 0x89, 0x84, 0x4b, 0x2b, 0xd7, 0x57, 0xd5, 0x82, 0xcc, 0xc7, - 0x3e, 0x8f, 0x35, 0xbf, 0xf9, 0xb2, 0xd3, 0x54, 0x2f, 0x31, 0x43, 0x3c, 0x9a, 0x9f, 0xf4, 0x95, - 0xeb, 0x37, 0x64, 0xc8, 0xad, 0x61, 0x7b, 0x0b, 0xa3, 0x9f, 0x4b, 0xb0, 0xc9, 0xb7, 0x69, 0xd8, - 0x5d, 0x1a, 0x5c, 0x2e, 0xd8, 0xe4, 0x0b, 0xa7, 0x29, 0xd7, 0xc1, 0x6c, 0x17, 0x37, 0x2d, 0xb3, - 0xe5, 0x65, 0xa2, 0xfd, 0x11, 0x9f, 0xc8, 0xdf, 0x3b, 0x2f, 0x00, 0x19, 0x61, 0x74, 0x24, 0x3b, - 0x75, 0x49, 0x80, 0xe9, 0x57, 0x6a, 0xfa, 0xc0, 0x7c, 0x47, 0x76, 0x7f, 0xea, 0x5c, 0x42, 0x2f, - 0x16, 0xde, 0x7d, 0xbd, 0x09, 0xf2, 0x44, 0x4d, 0xbd, 0x31, 0xba, 0x7f, 0x7f, 0xcc, 0xf2, 0x28, - 0x0b, 0x70, 0xac, 0x8b, 0xdb, 0xb8, 0xe9, 0xe0, 0x96, 0xdb, 0x74, 0xb5, 0x81, 0x9d, 0xc2, 0xfe, - 0xec, 0xe8, 0xcf, 0xc2, 0x00, 0xde, 0xc1, 0x03, 0x78, 0x7d, 0x1f, 0x51, 0xba, 0x15, 0x8a, 0xb6, - 0x95, 0xdd, 0x6a, 0xd4, 0xda, 0x96, 0xbf, 0x28, 0xee, 0xbd, 0xbb, 0xdf, 0xb6, 0x9d, 0x9d, 0x36, - 0xf9, 0xc6, 0x0e, 0x18, 0x78, 0xef, 0xca, 0x3c, 0x4c, 0xe8, 0xe6, 0x25, 0xf2, 0x29, 0x1b, 0x53, - 0x6b, 0x2f, 0x13, 0x7a, 0x85, 0x8f, 0xfc, 0x5d, 0x1c, 0xf2, 0x8f, 0x15, 0x63, 0x37, 0x7d, 0xe0, - 0x7f, 0x71, 0x02, 0x72, 0xeb, 0x7a, 0xd7, 0xc1, 0xe8, 0xff, 0x92, 0x45, 0x91, 0xbf, 0x1e, 0xe6, - 0x36, 0xad, 0xe6, 0x6e, 0x17, 0xb7, 0xf8, 0x46, 0xd9, 0x93, 0x3a, 0x0a, 0xcc, 0x95, 0x1b, 0xa1, - 0xe0, 0x25, 0x32, 0xb2, 0xde, 0x36, 0xfc, 0xbe, 0x74, 0x12, 0x49, 0xbb, 0xbb, 0xae, 0xdb, 0x4e, - 0x75, 0x93, 0xa4, 0xf9, 0x91, 0xb4, 0xc3, 0x89, 0x1c, 0xf4, 0xf9, 0x18, 0xe8, 0x27, 0xa2, 0xa1, - 0x9f, 0x14, 0x80, 0x5e, 0x29, 0xc2, 0xe4, 0xa6, 0xd1, 0xc6, 0xe4, 0x87, 0x29, 0xf2, 0x43, 0xbf, - 0x31, 0x89, 0xc8, 0xde, 0x1f, 0x93, 0x96, 0x8c, 0x36, 0xd6, 0xfc, 0xdf, 0xbc, 0x89, 0x0c, 0x04, - 0x13, 0x99, 0x55, 0xea, 0x4f, 0xeb, 0x1a, 0x5e, 0xa6, 0xbe, 0x83, 0xbd, 0xc5, 0x37, 0x93, 0x1d, - 0x6e, 0x69, 0xe9, 0x8e, 0x4e, 0xc0, 0x98, 0xd1, 0xc8, 0x33, 0xef, 0x17, 0x22, 0xf7, 0xfa, 0x85, - 0x3c, 0x4b, 0x4e, 0xd6, 0x23, 0x7a, 0xcc, 0x46, 0xb4, 0xa8, 0xf3, 0x1e, 0x40, 0xd4, 0x52, 0xf4, - 0xdf, 0x5d, 0x60, 0x9a, 0xba, 0x8d, 0x9d, 0xf5, 0xb0, 0x27, 0x46, 0x4e, 0xe3, 0x13, 0x89, 0x2b, - 0x5f, 0xb7, 0xa6, 0xef, 0x60, 0x52, 0x58, 0xc9, 0xfd, 0xc6, 0x5c, 0xb4, 0xf6, 0xa5, 0x07, 0xfd, - 0x6f, 0x6e, 0xd4, 0xfd, 0x6f, 0xbf, 0x3a, 0xa6, 0xdf, 0x0c, 0x5f, 0x9d, 0x05, 0xb9, 0xb4, 0xeb, - 0x3c, 0xa2, 0xbb, 0xdf, 0x1f, 0x08, 0xfb, 0xb9, 0xb0, 0xfe, 0x2c, 0xf2, 0xa2, 0xf9, 0x31, 0xf5, - 0xbe, 0x09, 0xb5, 0x44, 0xcc, 0x9f, 0x26, 0xaa, 0x6e, 0x63, 0xb8, 0xd7, 0x40, 0xf6, 0x1d, 0x2c, - 0x1f, 0xcc, 0x1c, 0xdc, 0x34, 0x47, 0xb4, 0x7f, 0x0a, 0xf5, 0x0c, 0xfe, 0xbb, 0xd7, 0xf1, 0x64, - 0xb9, 0x58, 0x7d, 0x64, 0x7b, 0x9d, 0x88, 0x72, 0x46, 0xa3, 0x2f, 0xe8, 0xa5, 0xc2, 0x6e, 0xe7, - 0x54, 0x6c, 0xb1, 0xae, 0x84, 0xc9, 0x6c, 0x2a, 0xb1, 0xcb, 0x44, 0x63, 0x8a, 0x4d, 0x1f, 0xb0, - 0x6f, 0x87, 0x5d, 0x05, 0x8b, 0x07, 0x46, 0x0c, 0xbd, 0x52, 0x78, 0x3b, 0x8a, 0x56, 0x7b, 0xc0, - 0x7a, 0x61, 0x32, 0x79, 0x8b, 0x6d, 0x56, 0xc5, 0x16, 0x9c, 0xbe, 0xc4, 0xbf, 0x25, 0x43, 0x9e, - 0x6e, 0x41, 0xa2, 0x37, 0x66, 0x12, 0xdc, 0xc2, 0xee, 0xf0, 0x2e, 0x84, 0xfe, 0x7b, 0x92, 0x35, - 0x07, 0xce, 0xd5, 0x30, 0x9b, 0xc8, 0xd5, 0x90, 0x3f, 0xc7, 0x29, 0xd0, 0x8e, 0x68, 0x1d, 0x53, - 0x9e, 0x4e, 0x26, 0x69, 0x61, 0x7d, 0x19, 0x4a, 0x1f, 0xef, 0xe7, 0xe4, 0x60, 0x86, 0x16, 0x7d, - 0xce, 0x68, 0x6d, 0x61, 0x07, 0xbd, 0x43, 0xfa, 0xe1, 0x41, 0x5d, 0xa9, 0xc0, 0xcc, 0x45, 0xc2, - 0xf6, 0xaa, 0x7e, 0xc9, 0xda, 0x75, 0xd8, 0xca, 0xc5, 0x8d, 0xb1, 0xeb, 0x1e, 0xb4, 0x9e, 0xf3, - 0xf4, 0x0f, 0x8d, 0xfb, 0xdf, 0x95, 0x31, 0x5d, 0xf0, 0xa7, 0x0e, 0x5c, 0x79, 0x62, 0x64, 0x85, - 0x93, 0x94, 0x93, 0x90, 0xdf, 0x33, 0xf0, 0xc5, 0x72, 0x8b, 0x59, 0xb7, 0xec, 0x0d, 0x7d, 0x50, - 0x78, 0xdf, 0x36, 0x0c, 0x37, 0xe3, 0x25, 0x5d, 0x2d, 0x14, 0xdb, 0xbd, 0x1d, 0xc8, 0xd6, 0x18, - 0xce, 0x14, 0xf3, 0x97, 0x75, 0x96, 0x12, 0x28, 0x62, 0x94, 0xe1, 0xcc, 0x87, 0xf2, 0x88, 0x3d, - 0xb1, 0x42, 0x05, 0x30, 0xe2, 0x7b, 0x3c, 0xc5, 0xe2, 0x4b, 0x0c, 0x28, 0x3a, 0x7d, 0xc9, 0xbf, - 0x46, 0x86, 0xa9, 0x1a, 0x76, 0x96, 0x0c, 0xdc, 0x6e, 0x75, 0x91, 0x7d, 0x70, 0xd3, 0xe8, 0x66, - 0xc8, 0x6f, 0x12, 0x62, 0x83, 0xce, 0x2d, 0xb0, 0x6c, 0xe8, 0xd5, 0x92, 0xe8, 0x8e, 0x30, 0x5b, - 0x7d, 0xf3, 0xb8, 0x1d, 0x09, 0x4c, 0x62, 0x1e, 0xbd, 0xf1, 0x25, 0x8f, 0x21, 0xb0, 0xad, 0x0c, - 0x33, 0xec, 0x76, 0xbf, 0x62, 0xdb, 0xd8, 0x32, 0xd1, 0xee, 0x08, 0x5a, 0x88, 0x72, 0x0b, 0xe4, - 0x74, 0x97, 0x1a, 0xdb, 0x7a, 0x45, 0x7d, 0x3b, 0x4f, 0x52, 0x9e, 0x46, 0x33, 0x26, 0x08, 0x23, - 0x19, 0x28, 0xb6, 0xc7, 0xf3, 0x18, 0xc3, 0x48, 0x0e, 0x2c, 0x3c, 0x7d, 0xc4, 0xbe, 0x22, 0xc3, - 0x71, 0xc6, 0xc0, 0x59, 0x6c, 0x3b, 0x46, 0x53, 0x6f, 0x53, 0xe4, 0x9e, 0x97, 0x19, 0x05, 0x74, - 0x2b, 0x30, 0xbb, 0x17, 0x26, 0xcb, 0x20, 0x3c, 0xd3, 0x17, 0x42, 0x8e, 0x01, 0x8d, 0xff, 0x31, - 0x41, 0x38, 0x3e, 0x4e, 0xaa, 0x1c, 0xcd, 0x31, 0x86, 0xe3, 0x13, 0x66, 0x22, 0x7d, 0x88, 0x5f, - 0xc4, 0x42, 0xf3, 0x04, 0xdd, 0xe7, 0x17, 0x84, 0xb1, 0xdd, 0x80, 0x69, 0x82, 0x25, 0xfd, 0x91, - 0x2d, 0x43, 0xc4, 0x28, 0xb1, 0xdf, 0xef, 0xb0, 0x0b, 0xc3, 0xfc, 0x7f, 0xb5, 0x30, 0x1d, 0x74, - 0x0e, 0x20, 0xf8, 0x14, 0xee, 0xa4, 0x33, 0x51, 0x9d, 0xb4, 0x24, 0xd6, 0x49, 0xbf, 0x41, 0x38, - 0x58, 0x4a, 0x7f, 0xb6, 0x0f, 0xae, 0x1e, 0x62, 0x61, 0x32, 0x06, 0x97, 0x9e, 0xbe, 0x5e, 0xbc, - 0x22, 0xdb, 0x7b, 0x8d, 0xfb, 0x47, 0x46, 0x32, 0x9f, 0x0a, 0xf7, 0x07, 0x72, 0x4f, 0x7f, 0x70, - 0x00, 0x4b, 0xfa, 0x06, 0x38, 0x4a, 0x8b, 0x28, 0xf9, 0x6c, 0xe5, 0x68, 0x28, 0x88, 0x9e, 0x64, - 0xf4, 0xd1, 0x21, 0x94, 0x60, 0xd0, 0x1d, 0xf3, 0x71, 0x9d, 0x5c, 0x32, 0x63, 0x37, 0xa9, 0x82, - 0x1c, 0xde, 0xd5, 0xf4, 0xdf, 0xcc, 0x52, 0x6b, 0x77, 0x83, 0xdc, 0xe9, 0x86, 0xfe, 0x22, 0x3b, - 0x8a, 0x11, 0xe1, 0x6e, 0xc8, 0x12, 0x17, 0x77, 0x39, 0x72, 0x49, 0x23, 0x28, 0x32, 0xb8, 0x70, - 0x0f, 0x3f, 0xe0, 0xac, 0x1c, 0xd1, 0xc8, 0x9f, 0xca, 0x8d, 0x70, 0xf4, 0xbc, 0xde, 0xbc, 0xb0, - 0x65, 0x5b, 0xbb, 0xe4, 0xf6, 0x2b, 0x8b, 0x5d, 0xa3, 0x45, 0xae, 0x23, 0xe4, 0x3f, 0x28, 0xb7, - 0x7a, 0xa6, 0x43, 0x6e, 0x90, 0xe9, 0xb0, 0x72, 0x84, 0x19, 0x0f, 0xca, 0xe3, 0xfd, 0x4e, 0x27, - 0x1f, 0xdb, 0xe9, 0xac, 0x1c, 0xf1, 0xba, 0x1d, 0x65, 0x11, 0x26, 0x5b, 0xc6, 0x1e, 0xd9, 0xaa, - 0x26, 0xb3, 0xae, 0x41, 0x47, 0x97, 0x17, 0x8d, 0x3d, 0xba, 0xb1, 0xbd, 0x72, 0x44, 0xf3, 0xff, - 0x54, 0x96, 0x61, 0x8a, 0x6c, 0x0b, 0x10, 0x32, 0x93, 0x89, 0x8e, 0x25, 0xaf, 0x1c, 0xd1, 0x82, - 0x7f, 0x5d, 0xeb, 0x23, 0x4b, 0xce, 0x7e, 0xdc, 0xe5, 0x6d, 0xb7, 0x67, 0x12, 0x6d, 0xb7, 0xbb, - 0xb2, 0xa0, 0x1b, 0xee, 0x27, 0x21, 0xd7, 0x24, 0x12, 0x96, 0x98, 0x84, 0xe9, 0xab, 0x72, 0x07, - 0x64, 0x77, 0x74, 0xdb, 0x9b, 0x3c, 0x5f, 0x3f, 0x98, 0xee, 0x9a, 0x6e, 0x5f, 0x70, 0x11, 0x74, - 0xff, 0x5a, 0x98, 0x80, 0x1c, 0x11, 0x9c, 0xff, 0x80, 0xde, 0x9c, 0xa5, 0x66, 0x48, 0xc9, 0x32, - 0xdd, 0x61, 0xbf, 0x6e, 0x79, 0x07, 0x64, 0x3e, 0x98, 0x19, 0x8d, 0x05, 0xd9, 0xf7, 0xde, 0x73, - 0x39, 0xf2, 0xde, 0xf3, 0x9e, 0x0b, 0x78, 0xb3, 0xbd, 0x17, 0xf0, 0x06, 0xcb, 0x07, 0xb9, 0xc1, - 0x8e, 0x2a, 0x7f, 0x36, 0x84, 0xe9, 0xd2, 0x2b, 0x88, 0xe8, 0x19, 0x78, 0xdb, 0x30, 0x43, 0x75, - 0xf6, 0x5e, 0x13, 0x76, 0x4a, 0x49, 0x8d, 0x9a, 0x01, 0xec, 0xa5, 0xdf, 0x37, 0xfd, 0x76, 0x16, - 0x4e, 0xd1, 0x6b, 0x9e, 0xf7, 0x70, 0xdd, 0xe2, 0xef, 0x9b, 0x44, 0x9f, 0x1c, 0x89, 0xd2, 0xf4, - 0x19, 0x70, 0xe4, 0xbe, 0x03, 0xce, 0xbe, 0x43, 0xca, 0xd9, 0x01, 0x87, 0x94, 0x73, 0xc9, 0x56, - 0x0e, 0xdf, 0x1f, 0xd6, 0x9f, 0x75, 0x5e, 0x7f, 0x6e, 0x8f, 0x00, 0xa8, 0x9f, 0x5c, 0x46, 0x62, - 0xdf, 0xbc, 0xcd, 0xd7, 0x94, 0x1a, 0xa7, 0x29, 0x77, 0x0d, 0xcf, 0x48, 0xfa, 0xda, 0xf2, 0x07, - 0x59, 0xb8, 0x2c, 0x60, 0xa6, 0x82, 0x2f, 0x32, 0x45, 0xf9, 0xdc, 0x48, 0x14, 0x25, 0x79, 0x0c, - 0x84, 0xb4, 0x35, 0xe6, 0x4f, 0x84, 0xcf, 0x0e, 0xf5, 0x02, 0xe5, 0xcb, 0x26, 0x42, 0x59, 0x4e, - 0x42, 0x9e, 0xf6, 0x30, 0x0c, 0x1a, 0xf6, 0x96, 0xb0, 0xbb, 0x11, 0x3b, 0x71, 0x24, 0xca, 0xdb, - 0x18, 0xf4, 0x87, 0xad, 0x6b, 0xd4, 0x77, 0x6d, 0xb3, 0x6c, 0x3a, 0x16, 0xfa, 0x85, 0x91, 0x28, - 0x8e, 0xef, 0x0d, 0x27, 0x0f, 0xe3, 0x0d, 0x37, 0xd4, 0x2a, 0x87, 0x57, 0x83, 0x43, 0x59, 0xe5, - 0x88, 0x28, 0x3c, 0x7d, 0xfc, 0xde, 0x2a, 0xc3, 0x49, 0x36, 0xd9, 0x5a, 0xe0, 0x2d, 0x44, 0x74, - 0xdf, 0x28, 0x80, 0x3c, 0xee, 0x99, 0x49, 0xec, 0x96, 0x33, 0xf2, 0xc2, 0x9f, 0x94, 0x8a, 0xbd, - 0xdf, 0x81, 0x9b, 0x0e, 0xf6, 0x70, 0x38, 0x12, 0xa4, 0xc4, 0xae, 0x75, 0x48, 0xc0, 0x46, 0xfa, - 0x98, 0xbd, 0x40, 0x86, 0x3c, 0xbb, 0xde, 0x7f, 0x23, 0x15, 0x87, 0x09, 0x3e, 0xca, 0xb3, 0xc0, - 0x8e, 0x5c, 0xe2, 0x4b, 0xee, 0xd3, 0xdb, 0x8b, 0x3b, 0xa4, 0x5b, 0xec, 0xbf, 0x23, 0xc1, 0x74, - 0x0d, 0x3b, 0x25, 0xdd, 0xb6, 0x0d, 0x7d, 0x6b, 0x54, 0x1e, 0xdf, 0xa2, 0xde, 0xc3, 0xe8, 0xbb, - 0x19, 0xd1, 0xf3, 0x34, 0xfe, 0x42, 0xb8, 0xc7, 0x6a, 0x44, 0x2c, 0xc1, 0x87, 0x85, 0xce, 0xcc, - 0x0c, 0xa2, 0x36, 0x06, 0x8f, 0x6d, 0x09, 0x26, 0xbc, 0xb3, 0x78, 0x37, 0x73, 0xe7, 0x33, 0xb7, - 0x9d, 0x1d, 0xef, 0x18, 0x0c, 0x79, 0xde, 0x7f, 0x06, 0x0c, 0xbd, 0x3c, 0xa1, 0xa3, 0x7c, 0xfc, - 0x41, 0xc2, 0x64, 0x6d, 0x2c, 0x89, 0x3b, 0xfc, 0x61, 0x1d, 0x1d, 0xfc, 0xbd, 0x09, 0xb6, 0x1c, - 0xb9, 0xaa, 0x3b, 0xf8, 0x01, 0xf4, 0x05, 0x19, 0x26, 0x6a, 0xd8, 0x71, 0xc7, 0x5b, 0xee, 0x72, - 0xd3, 0x61, 0x35, 0x5c, 0x09, 0xad, 0x78, 0x4c, 0xb1, 0x35, 0x8c, 0x7b, 0x60, 0xaa, 0x63, 0x5b, - 0x4d, 0xdc, 0xed, 0xb2, 0xd5, 0x8b, 0xb0, 0xa3, 0x5a, 0xbf, 0xd1, 0x9f, 0xb0, 0x36, 0xbf, 0xee, - 0xfd, 0xa3, 0x05, 0xbf, 0x27, 0x35, 0x03, 0x28, 0x25, 0x56, 0xc1, 0x71, 0x9b, 0x01, 0x71, 0x85, - 0xa7, 0x0f, 0xf4, 0x67, 0x64, 0x98, 0xa9, 0x61, 0xc7, 0x97, 0x62, 0x82, 0x4d, 0x8e, 0x68, 0x78, - 0x39, 0x28, 0xe5, 0x83, 0x41, 0x29, 0x7e, 0x35, 0x20, 0x2f, 0x4d, 0x9f, 0xd8, 0x18, 0xaf, 0x06, - 0x14, 0xe3, 0x60, 0x0c, 0xc7, 0xd7, 0x1e, 0x0d, 0x53, 0x84, 0x17, 0xd2, 0x60, 0x7f, 0x25, 0x1b, - 0x34, 0xde, 0x2f, 0xa6, 0xd4, 0x78, 0xef, 0x84, 0xdc, 0x8e, 0x6e, 0x5f, 0xe8, 0x92, 0x86, 0x3b, - 0x2d, 0x62, 0xb6, 0xaf, 0xb9, 0xd9, 0x35, 0xfa, 0x57, 0x7f, 0x3f, 0xcd, 0x5c, 0x32, 0x3f, 0xcd, - 0x87, 0xa5, 0x44, 0x23, 0x21, 0x9d, 0x3b, 0x8c, 0xb0, 0xc9, 0x27, 0x18, 0x37, 0x63, 0xca, 0x4e, - 0x5f, 0x39, 0x9e, 0x27, 0xc3, 0xa4, 0x3b, 0x6e, 0x13, 0x7b, 0xfc, 0xdc, 0xc1, 0xd5, 0xa1, 0xbf, - 0xa1, 0x9f, 0xb0, 0x07, 0xf6, 0x24, 0x32, 0x3a, 0xf3, 0x3e, 0x41, 0x0f, 0x1c, 0x57, 0x78, 0xfa, - 0x78, 0xbc, 0x9d, 0xe2, 0x41, 0xda, 0x03, 0x7a, 0x9d, 0x0c, 0xf2, 0x32, 0x76, 0xc6, 0x6d, 0x45, - 0xbe, 0x45, 0x38, 0xc4, 0x11, 0x27, 0x30, 0xc2, 0xf3, 0xfc, 0x32, 0x1e, 0x4d, 0x03, 0x12, 0x8b, - 0x6d, 0x24, 0xc4, 0x40, 0xfa, 0xa8, 0xbd, 0x9b, 0xa2, 0x46, 0x37, 0x17, 0x7e, 0x7e, 0x04, 0xbd, - 0xea, 0x78, 0x17, 0x3e, 0x3c, 0x01, 0x12, 0x1a, 0x87, 0xd5, 0xde, 0xfa, 0x15, 0x3e, 0x96, 0xab, - 0xf8, 0xc0, 0x6d, 0xec, 0xdb, 0xb8, 0x79, 0x01, 0xb7, 0xd0, 0xcf, 0x1c, 0x1c, 0xba, 0x53, 0x30, - 0xd1, 0xa4, 0xd4, 0x08, 0x78, 0x93, 0x9a, 0xf7, 0x9a, 0xe0, 0x5e, 0x69, 0xbe, 0x23, 0xa2, 0xbf, - 0x8f, 0xf1, 0x5e, 0x69, 0x81, 0xe2, 0xc7, 0x60, 0xb6, 0xd0, 0x59, 0x46, 0xb9, 0x69, 0x99, 0xe8, - 0xbf, 0x1c, 0x1c, 0x96, 0xab, 0x60, 0xca, 0x68, 0x5a, 0x26, 0x09, 0x43, 0xe1, 0x1d, 0x02, 0xf2, - 0x13, 0xbc, 0xaf, 0xea, 0x8e, 0x75, 0xbf, 0xc1, 0x76, 0xcd, 0x83, 0x84, 0x61, 0x8d, 0x09, 0x97, - 0xf5, 0xc3, 0x32, 0x26, 0xfa, 0x94, 0x9d, 0x3e, 0x64, 0x1f, 0x0d, 0xbc, 0xdb, 0x68, 0x57, 0xf8, - 0x88, 0x58, 0x05, 0x1e, 0x66, 0x38, 0x0b, 0xd7, 0xe2, 0x50, 0x86, 0xb3, 0x18, 0x06, 0xc6, 0x70, - 0x63, 0x45, 0x80, 0x63, 0xea, 0x6b, 0xc0, 0x07, 0x40, 0x67, 0x74, 0xe6, 0xe1, 0x90, 0xe8, 0x1c, - 0x8e, 0x89, 0xf8, 0x3e, 0x16, 0x22, 0x93, 0x59, 0x3c, 0xe8, 0xbf, 0x8e, 0x02, 0x9c, 0xdb, 0x87, - 0xf1, 0x57, 0xa0, 0xde, 0x0a, 0x09, 0x6e, 0xc4, 0xde, 0x27, 0x41, 0x97, 0xca, 0x18, 0xef, 0x8a, - 0x17, 0x29, 0x3f, 0x7d, 0x00, 0x9f, 0x2b, 0xc3, 0x1c, 0xf1, 0x11, 0x68, 0x63, 0xdd, 0xa6, 0x1d, - 0xe5, 0x48, 0x1c, 0xe5, 0xdf, 0x2e, 0x1c, 0xe0, 0x87, 0x97, 0x43, 0xc0, 0xc7, 0x48, 0xa0, 0x10, - 0x8b, 0xee, 0x23, 0xc8, 0xc2, 0x58, 0xb6, 0x51, 0x0a, 0x3e, 0x0b, 0x4c, 0xc5, 0x47, 0x83, 0x47, - 0x42, 0x8f, 0x5c, 0x5e, 0x18, 0x5e, 0x63, 0x1b, 0xb3, 0x47, 0xae, 0x08, 0x13, 0xe9, 0x63, 0xf2, - 0xba, 0x5b, 0xd8, 0x82, 0x73, 0x9d, 0x5c, 0x18, 0xff, 0xca, 0xac, 0x7f, 0xa2, 0xed, 0x33, 0x23, - 0xf1, 0xc0, 0x3c, 0x40, 0x40, 0x7c, 0x05, 0xb2, 0xb6, 0x75, 0x91, 0x2e, 0x6d, 0xcd, 0x6a, 0xe4, - 0x99, 0x5e, 0x4f, 0xd9, 0xde, 0xdd, 0x31, 0xe9, 0xc9, 0xd0, 0x59, 0xcd, 0x7b, 0x55, 0xae, 0x83, - 0xd9, 0x8b, 0x86, 0xb3, 0xbd, 0x82, 0xf5, 0x16, 0xb6, 0x35, 0xeb, 0x22, 0xf1, 0x98, 0x9b, 0xd4, - 0xf8, 0x44, 0xde, 0x7f, 0x45, 0xc0, 0xbe, 0x24, 0xb7, 0xc8, 0x8f, 0xe5, 0xf8, 0x5b, 0x12, 0xcb, - 0x33, 0x9a, 0xab, 0xf4, 0x15, 0xe6, 0x3d, 0x32, 0x4c, 0x69, 0xd6, 0x45, 0xa6, 0x24, 0xff, 0xc7, - 0xe1, 0xea, 0x48, 0xe2, 0x89, 0x1e, 0x91, 0x9c, 0xcf, 0xfe, 0xd8, 0x27, 0x7a, 0xb1, 0xc5, 0x8f, - 0xe5, 0xe4, 0xd2, 0x8c, 0x66, 0x5d, 0xac, 0x61, 0x87, 0xb6, 0x08, 0xd4, 0x18, 0x91, 0x93, 0xb5, - 0xd1, 0xa5, 0x04, 0xd9, 0x3c, 0xdc, 0x7f, 0x4f, 0xba, 0x8b, 0xe0, 0x0b, 0xc8, 0x67, 0x71, 0xdc, - 0xbb, 0x08, 0x03, 0x39, 0x18, 0x43, 0x8c, 0x14, 0x19, 0xa6, 0x35, 0xeb, 0xa2, 0x3b, 0x34, 0x2c, - 0x19, 0xed, 0xf6, 0x68, 0x46, 0xc8, 0xa4, 0xc6, 0xbf, 0x27, 0x06, 0x8f, 0x8b, 0xb1, 0x1b, 0xff, - 0x03, 0x18, 0x48, 0x1f, 0x86, 0x67, 0xd1, 0xc6, 0xe2, 0x8d, 0xd0, 0xe6, 0x68, 0x70, 0x18, 0xb6, - 0x41, 0xf8, 0x6c, 0x1c, 0x5a, 0x83, 0x88, 0xe2, 0x60, 0x2c, 0x3b, 0x27, 0x73, 0x25, 0x32, 0xcc, - 0x8f, 0xb6, 0x4d, 0xbc, 0x33, 0x99, 0x6b, 0x22, 0x1b, 0x76, 0x39, 0x46, 0x46, 0x82, 0x46, 0x02, - 0x17, 0x44, 0x01, 0x1e, 0xd2, 0xc7, 0xe3, 0x43, 0x32, 0xcc, 0x50, 0x16, 0x1e, 0x21, 0x56, 0xc0, - 0x50, 0x8d, 0x2a, 0x5c, 0x83, 0xc3, 0x69, 0x54, 0x31, 0x1c, 0x8c, 0xe5, 0x56, 0x50, 0xd7, 0x8e, - 0x1b, 0xe2, 0xf8, 0x78, 0x14, 0x82, 0x43, 0x1b, 0x63, 0x23, 0x3c, 0x42, 0x3e, 0x8c, 0x31, 0x76, - 0x48, 0xc7, 0xc8, 0x9f, 0xe5, 0xb7, 0xa2, 0x51, 0x62, 0x70, 0x80, 0xa6, 0x30, 0x42, 0x18, 0x86, - 0x6c, 0x0a, 0x87, 0x84, 0xc4, 0x57, 0x65, 0x00, 0xca, 0xc0, 0x9a, 0xb5, 0x47, 0x2e, 0xf3, 0x19, - 0x41, 0x77, 0xd6, 0xeb, 0x56, 0x2f, 0x0f, 0x70, 0xab, 0x4f, 0x18, 0xc2, 0x25, 0xe9, 0x4a, 0x60, - 0x48, 0xca, 0x6e, 0x25, 0xc7, 0xbe, 0x12, 0x18, 0x5f, 0x7e, 0xfa, 0x18, 0x7f, 0x99, 0x5a, 0x73, - 0xc1, 0x01, 0xd3, 0xdf, 0x1a, 0x09, 0xca, 0xa1, 0xd9, 0xbf, 0xcc, 0xcf, 0xfe, 0x0f, 0x80, 0xed, - 0xb0, 0x36, 0xe2, 0xa0, 0x83, 0xa3, 0xe9, 0xdb, 0x88, 0x87, 0x77, 0x40, 0xf4, 0xe7, 0xb3, 0x70, - 0x94, 0x75, 0x22, 0x3f, 0x0c, 0x10, 0x27, 0x3c, 0x87, 0xc7, 0x75, 0x92, 0x03, 0x50, 0x1e, 0xd5, - 0x82, 0x54, 0x92, 0xa5, 0x4c, 0x01, 0xf6, 0xc6, 0xb2, 0xba, 0x91, 0x57, 0x1f, 0xe8, 0xe8, 0x66, - 0x4b, 0x3c, 0xdc, 0xef, 0x00, 0xe0, 0xbd, 0xb5, 0x46, 0x99, 0x5f, 0x6b, 0xec, 0xb3, 0x32, 0x99, - 0x78, 0xe7, 0x9a, 0x88, 0x8c, 0xb2, 0x3b, 0xf6, 0x9d, 0xeb, 0xe8, 0xb2, 0xd3, 0x47, 0xe9, 0x9d, - 0x32, 0x64, 0x6b, 0x96, 0xed, 0xa0, 0x67, 0x27, 0x69, 0x9d, 0x54, 0xf2, 0x01, 0x48, 0xde, 0xbb, - 0x52, 0xe2, 0x6e, 0x69, 0xbe, 0x39, 0xfe, 0xa8, 0xb3, 0xee, 0xe8, 0xc4, 0xab, 0xdb, 0x2d, 0x3f, - 0x74, 0x5d, 0x73, 0xd2, 0x78, 0x3a, 0x54, 0x7e, 0xb5, 0xe8, 0x03, 0x18, 0xa9, 0xc5, 0xd3, 0x89, - 0x2c, 0x39, 0x7d, 0xdc, 0x1e, 0x3a, 0xca, 0x7c, 0x5b, 0x97, 0x8c, 0x36, 0x46, 0xcf, 0xa6, 0x2e, - 0x23, 0x15, 0x7d, 0x07, 0x8b, 0x1f, 0x89, 0x89, 0x75, 0x6d, 0x25, 0xf1, 0x65, 0xe5, 0x20, 0xbe, - 0x6c, 0xd2, 0x06, 0x45, 0x0f, 0xa0, 0x53, 0x96, 0xc6, 0xdd, 0xa0, 0x62, 0xca, 0x1e, 0x4b, 0x9c, - 0xce, 0x63, 0x35, 0xec, 0x50, 0xa3, 0xb2, 0xea, 0xdd, 0xc0, 0xf2, 0xb3, 0x23, 0x89, 0xd8, 0xe9, - 0x5f, 0xf0, 0x22, 0xf7, 0x5c, 0xf0, 0xf2, 0x9e, 0x30, 0x38, 0x6b, 0x3c, 0x38, 0x3f, 0x19, 0x2d, - 0x20, 0x9e, 0xc9, 0x91, 0xc0, 0xf4, 0x16, 0x1f, 0xa6, 0x75, 0x0e, 0xa6, 0x3b, 0x86, 0xe4, 0x22, - 0x7d, 0xc0, 0x7e, 0x35, 0x07, 0x47, 0xe9, 0xa4, 0xbf, 0x68, 0xb6, 0x58, 0x84, 0xd5, 0x37, 0x4a, - 0x87, 0xbc, 0xd9, 0xb6, 0x3f, 0x04, 0x2b, 0x17, 0xcb, 0x39, 0xd7, 0x7b, 0x3b, 0xfe, 0x02, 0x0d, - 0xe7, 0xea, 0x76, 0xa2, 0x64, 0xa7, 0x4d, 0xfc, 0x86, 0x7c, 0xff, 0x3f, 0xfe, 0x2e, 0xa3, 0x09, - 0xf1, 0xbb, 0x8c, 0xfe, 0x34, 0xd9, 0xba, 0x1d, 0x29, 0xba, 0x47, 0xe0, 0x29, 0xdb, 0x4e, 0x09, - 0x56, 0xf4, 0x04, 0xb8, 0xfb, 0xd1, 0x70, 0x27, 0x0b, 0x22, 0x88, 0x0c, 0xe9, 0x4e, 0x46, 0x08, - 0x1c, 0xa6, 0x3b, 0xd9, 0x20, 0x06, 0xc6, 0x70, 0xab, 0x7d, 0x8e, 0xed, 0xe6, 0x93, 0x76, 0x83, - 0xfe, 0x4a, 0x4a, 0x7d, 0x94, 0xfe, 0x5e, 0x26, 0x91, 0xff, 0x33, 0xe1, 0x2b, 0x7e, 0x98, 0x4e, - 0xe2, 0xd1, 0x1c, 0x47, 0x6e, 0x0c, 0xeb, 0x46, 0x12, 0xf1, 0x45, 0x3f, 0x67, 0xb4, 0x9c, 0xed, - 0x11, 0x9d, 0xe8, 0xb8, 0xe8, 0xd2, 0xf2, 0xae, 0x47, 0x26, 0x2f, 0xe8, 0xdf, 0x32, 0x89, 0x42, - 0x48, 0xf9, 0x22, 0x21, 0x6c, 0x45, 0x88, 0x38, 0x41, 0xe0, 0xa7, 0x58, 0x7a, 0x63, 0xd4, 0xe8, - 0xb3, 0x46, 0x0b, 0x5b, 0x8f, 0x40, 0x8d, 0x26, 0x7c, 0x8d, 0x4e, 0xa3, 0xe3, 0xc8, 0xfd, 0x88, - 0x6a, 0xb4, 0x2f, 0x92, 0x11, 0x69, 0x74, 0x2c, 0xbd, 0xf4, 0x65, 0xfc, 0xf2, 0x19, 0x36, 0x91, - 0x5a, 0x35, 0xcc, 0x0b, 0xe8, 0x9f, 0xf3, 0xde, 0xc5, 0xcc, 0xe7, 0x0c, 0x67, 0x9b, 0xc5, 0x82, - 0xf9, 0x03, 0xe1, 0xbb, 0x51, 0x86, 0x88, 0xf7, 0xc2, 0x87, 0x93, 0xca, 0xed, 0x0b, 0x27, 0x55, - 0x84, 0x59, 0xc3, 0x74, 0xb0, 0x6d, 0xea, 0xed, 0xa5, 0xb6, 0xbe, 0xd5, 0x3d, 0x35, 0xd1, 0xf7, - 0xf2, 0xba, 0x72, 0x28, 0x8f, 0xc6, 0xff, 0x11, 0xbe, 0xbe, 0x72, 0x92, 0xbf, 0xbe, 0x32, 0x22, - 0xfa, 0xd5, 0x54, 0x74, 0xf4, 0x2b, 0x3f, 0xba, 0x15, 0x0c, 0x0e, 0x8e, 0x2d, 0x6a, 0x1b, 0x27, - 0x0c, 0xf7, 0x77, 0xb3, 0x60, 0x14, 0x36, 0x3f, 0xf4, 0xe3, 0xab, 0xe4, 0x44, 0xab, 0x7b, 0xae, - 0x22, 0xcc, 0xf7, 0x2a, 0x41, 0x62, 0x0b, 0x35, 0x5c, 0x79, 0xb9, 0xa7, 0xf2, 0xbe, 0xc9, 0x93, - 0x15, 0x30, 0x79, 0xc2, 0x4a, 0x95, 0x13, 0x53, 0xaa, 0x24, 0x8b, 0x85, 0x22, 0xb5, 0x1d, 0xc3, - 0x69, 0xa4, 0x1c, 0x1c, 0xf3, 0xa2, 0xdd, 0x76, 0x3a, 0x58, 0xb7, 0x75, 0xb3, 0x89, 0xd1, 0x47, - 0xa5, 0x51, 0x98, 0xbd, 0x4b, 0x30, 0x69, 0x34, 0x2d, 0xb3, 0x66, 0x3c, 0xdd, 0xbb, 0x5c, 0x2e, - 0x3e, 0xc8, 0x3a, 0x91, 0x48, 0x99, 0xfd, 0xa1, 0xf9, 0xff, 0x2a, 0x65, 0x98, 0x6a, 0xea, 0x76, - 0x8b, 0x06, 0xe1, 0xcb, 0xf5, 0x5c, 0xe4, 0x14, 0x49, 0xa8, 0xe4, 0xfd, 0xa2, 0x05, 0x7f, 0x2b, - 0x55, 0x5e, 0x88, 0xf9, 0x9e, 0x68, 0x1e, 0x91, 0xc4, 0x16, 0x83, 0x9f, 0x38, 0x99, 0xbb, 0xd2, - 0xb1, 0x71, 0x9b, 0xdc, 0x41, 0x4f, 0x7b, 0x88, 0x29, 0x2d, 0x48, 0x48, 0xba, 0x3c, 0x40, 0x8a, - 0xda, 0x87, 0xc6, 0xb8, 0x97, 0x07, 0x84, 0xb8, 0x48, 0x5f, 0x33, 0xdf, 0x96, 0x87, 0x59, 0xda, - 0xab, 0x31, 0x71, 0xa2, 0xe7, 0x92, 0x2b, 0xa4, 0x9d, 0x7b, 0xf1, 0x25, 0x54, 0x3b, 0xf8, 0x98, - 0x5c, 0x00, 0xf9, 0x82, 0x1f, 0x70, 0xd0, 0x7d, 0x4c, 0xba, 0x6f, 0xef, 0xf1, 0x35, 0x4f, 0x79, - 0x1a, 0xf7, 0xbe, 0x7d, 0x7c, 0xf1, 0xe9, 0xe3, 0xf3, 0x6b, 0x32, 0xc8, 0xc5, 0x56, 0x0b, 0x35, - 0x0f, 0x0e, 0xc5, 0x35, 0x30, 0xed, 0xb5, 0x99, 0x20, 0x06, 0x64, 0x38, 0x29, 0xe9, 0x22, 0xa8, - 0x2f, 0x9b, 0x62, 0x6b, 0xec, 0xbb, 0x0a, 0x31, 0x65, 0xa7, 0x0f, 0xca, 0x6f, 0x4d, 0xb0, 0x46, - 0xb3, 0x60, 0x59, 0x17, 0xc8, 0x51, 0x99, 0x67, 0xcb, 0x90, 0x5b, 0xc2, 0x4e, 0x73, 0x7b, 0x44, - 0x6d, 0x66, 0xd7, 0x6e, 0x7b, 0x6d, 0x66, 0xdf, 0x7d, 0xf8, 0x83, 0x6d, 0x58, 0x8f, 0xad, 0x79, - 0xc2, 0xd2, 0xb8, 0xa3, 0x3b, 0xc7, 0x96, 0x9e, 0x3e, 0x38, 0xff, 0x26, 0xc3, 0x9c, 0xbf, 0xc2, - 0x45, 0x31, 0xf9, 0xd5, 0xcc, 0x23, 0x6d, 0xbd, 0x13, 0x7d, 0x2e, 0x59, 0x88, 0x34, 0x5f, 0xa6, - 0x7c, 0xcd, 0x52, 0x5e, 0x58, 0x4c, 0x10, 0x3c, 0x4d, 0x8c, 0xc1, 0x31, 0xcc, 0xe0, 0x65, 0x98, - 0x24, 0x0c, 0x2d, 0x1a, 0x7b, 0xc4, 0x75, 0x90, 0x5b, 0x68, 0x7c, 0xc6, 0x48, 0x16, 0x1a, 0xef, - 0xe0, 0x17, 0x1a, 0x05, 0x23, 0x1e, 0x7b, 0xeb, 0x8c, 0x09, 0x7d, 0x69, 0xdc, 0xff, 0x47, 0xbe, - 0xcc, 0x98, 0xc0, 0x97, 0x66, 0x40, 0xf9, 0xe9, 0x23, 0xfa, 0xaa, 0xff, 0xc4, 0x3a, 0x5b, 0x6f, - 0x43, 0x15, 0xfd, 0xcf, 0x63, 0x90, 0x3d, 0xeb, 0x3e, 0xfc, 0xef, 0xe0, 0x46, 0xac, 0x17, 0x8f, - 0x20, 0x38, 0xc3, 0x53, 0x21, 0xeb, 0xd2, 0x67, 0xd3, 0x96, 0x1b, 0xc5, 0x76, 0x77, 0x5d, 0x46, - 0x34, 0xf2, 0x9f, 0x72, 0x12, 0xf2, 0x5d, 0x6b, 0xd7, 0x6e, 0xba, 0xe6, 0xb3, 0xab, 0x31, 0xec, - 0x2d, 0x69, 0x50, 0x52, 0x8e, 0xf4, 0xfc, 0xe8, 0x5c, 0x46, 0x43, 0x17, 0x24, 0xc9, 0xdc, 0x05, - 0x49, 0x09, 0xf6, 0x0f, 0x04, 0x78, 0x4b, 0x5f, 0x23, 0xfe, 0x8a, 0xdc, 0x15, 0xd8, 0x1a, 0x15, - 0xec, 0x11, 0x62, 0x39, 0xa8, 0x3a, 0x24, 0x75, 0xf8, 0xe6, 0x45, 0xeb, 0xc7, 0x81, 0x1f, 0xab, - 0xc3, 0xb7, 0x00, 0x0f, 0x63, 0x39, 0xa5, 0x9e, 0x67, 0x4e, 0xaa, 0xf7, 0x8d, 0x12, 0xdd, 0x2c, - 0xa7, 0xf4, 0x07, 0x42, 0x67, 0x84, 0xce, 0xab, 0x43, 0xa3, 0x73, 0x48, 0xee, 0xab, 0x7f, 0x28, - 0x93, 0x48, 0x98, 0x9e, 0x91, 0x23, 0x7e, 0xd1, 0x51, 0x62, 0x88, 0xdc, 0x31, 0x98, 0x8b, 0x03, - 0x3d, 0x3b, 0x7c, 0x68, 0x70, 0x5e, 0x74, 0x21, 0xfe, 0xc7, 0x1d, 0x1a, 0x5c, 0x94, 0x91, 0xf4, - 0x81, 0x7c, 0x2d, 0xbd, 0x58, 0xac, 0xd8, 0x74, 0x8c, 0xbd, 0x11, 0xb7, 0x34, 0x7e, 0x78, 0x49, - 0x18, 0x0d, 0x78, 0x9f, 0x84, 0x28, 0x87, 0xe3, 0x8e, 0x06, 0x2c, 0xc6, 0x46, 0xfa, 0x30, 0xfd, - 0x6d, 0xde, 0x95, 0x1e, 0x5b, 0x9b, 0x79, 0x1d, 0x5b, 0x0d, 0xc0, 0x07, 0x47, 0xeb, 0x0c, 0xcc, - 0x84, 0xa6, 0xfe, 0xde, 0x85, 0x35, 0x5c, 0x5a, 0xd2, 0x83, 0xee, 0xbe, 0xc8, 0x46, 0xbe, 0x30, - 0x90, 0x60, 0xc1, 0x57, 0x84, 0x89, 0xb1, 0xdc, 0x07, 0xe7, 0x8d, 0x61, 0x63, 0xc2, 0xea, 0x0f, - 0xc2, 0x58, 0x55, 0x79, 0xac, 0x6e, 0x13, 0x11, 0x93, 0xd8, 0x98, 0x26, 0x34, 0x6f, 0x7c, 0xab, - 0x0f, 0x97, 0xc6, 0xc1, 0xf5, 0xd4, 0xa1, 0xf9, 0x48, 0x1f, 0xb1, 0x97, 0xd0, 0xee, 0xb0, 0x46, - 0x4d, 0xf6, 0xd1, 0x74, 0x87, 0x6c, 0x36, 0x20, 0x73, 0xb3, 0x81, 0x84, 0xfe, 0xf6, 0x81, 0x1b, - 0xa9, 0xc7, 0xdc, 0x20, 0x88, 0xb2, 0x23, 0xf6, 0xb7, 0x1f, 0xc8, 0x41, 0xfa, 0xe0, 0xfc, 0xa3, - 0x0c, 0xb0, 0x6c, 0x5b, 0xbb, 0x9d, 0xaa, 0xdd, 0xc2, 0x36, 0xfa, 0x9b, 0x60, 0x02, 0xf0, 0xc2, - 0x11, 0x4c, 0x00, 0xd6, 0x01, 0xb6, 0x7c, 0xe2, 0x4c, 0xc3, 0x6f, 0x11, 0x33, 0xf7, 0x03, 0xa6, - 0xb4, 0x10, 0x0d, 0xfe, 0xca, 0xd9, 0x9f, 0xe2, 0x31, 0x8e, 0xeb, 0xb3, 0x02, 0x72, 0xa3, 0x9c, - 0x00, 0xbc, 0xdd, 0xc7, 0xba, 0xce, 0x61, 0x7d, 0xf7, 0x01, 0x38, 0x49, 0x1f, 0xf3, 0x7f, 0x9a, - 0x80, 0x69, 0xba, 0x5d, 0x47, 0x65, 0xfa, 0xf7, 0x01, 0xe8, 0xbf, 0x35, 0x02, 0xd0, 0x37, 0x60, - 0xc6, 0x0a, 0xa8, 0xd3, 0x3e, 0x35, 0xbc, 0x00, 0x13, 0x0b, 0x7b, 0x88, 0x2f, 0x8d, 0x23, 0x83, - 0x3e, 0x1c, 0x46, 0x5e, 0xe3, 0x91, 0xbf, 0x23, 0x46, 0xde, 0x21, 0x8a, 0xa3, 0x84, 0xfe, 0x1d, - 0x3e, 0xf4, 0x1b, 0x1c, 0xf4, 0xc5, 0x83, 0xb0, 0x32, 0x86, 0x70, 0xfb, 0x32, 0x64, 0xc9, 0xe9, - 0xb8, 0xdf, 0x4e, 0x71, 0x7e, 0x7f, 0x0a, 0x26, 0x48, 0x93, 0xf5, 0xe7, 0x1d, 0xde, 0xab, 0xfb, - 0x45, 0xdf, 0x74, 0xb0, 0xed, 0x7b, 0x2c, 0x78, 0xaf, 0x2e, 0x0f, 0x9e, 0x57, 0x72, 0xf7, 0x54, - 0x9e, 0x6e, 0x44, 0xfa, 0x09, 0x43, 0x4f, 0x4a, 0xc2, 0x12, 0x1f, 0xd9, 0x79, 0xb9, 0x61, 0x26, - 0x25, 0x03, 0x18, 0x49, 0x1f, 0xf8, 0xbf, 0xc8, 0xc2, 0x29, 0xba, 0xaa, 0xb4, 0x64, 0x5b, 0x3b, - 0x3d, 0xb7, 0x5b, 0x19, 0x07, 0xd7, 0x85, 0xeb, 0x61, 0xce, 0xe1, 0xfc, 0xb1, 0x99, 0x4e, 0xf4, - 0xa4, 0xa2, 0x3f, 0x0b, 0xfb, 0x54, 0x3c, 0x8d, 0x47, 0x72, 0x21, 0x46, 0x80, 0x51, 0xbc, 0x27, - 0x5e, 0xa8, 0x17, 0x64, 0x34, 0xb4, 0x48, 0x25, 0x0f, 0xb5, 0x66, 0xe9, 0xeb, 0x54, 0x4e, 0x44, - 0xa7, 0xde, 0xeb, 0xeb, 0xd4, 0xcf, 0x70, 0x3a, 0xb5, 0x7c, 0x70, 0x91, 0xa4, 0xaf, 0x5b, 0xaf, - 0xf4, 0x37, 0x86, 0xfc, 0x6d, 0xbb, 0x9d, 0x14, 0x36, 0xeb, 0xc2, 0xfe, 0x48, 0x59, 0xce, 0x1f, - 0x89, 0xbf, 0x8f, 0x22, 0xc1, 0x4c, 0x98, 0xe7, 0x3a, 0x42, 0x97, 0xe6, 0x40, 0x32, 0x3c, 0xee, - 0x24, 0xa3, 0x35, 0xd4, 0x5c, 0x37, 0xb6, 0xa0, 0x31, 0xac, 0x2d, 0xcd, 0x41, 0x7e, 0xc9, 0x68, - 0x3b, 0xd8, 0x46, 0x5f, 0x66, 0x33, 0xdd, 0x57, 0xa6, 0x38, 0x00, 0x2c, 0x42, 0x7e, 0x93, 0x94, - 0xc6, 0x4c, 0xe6, 0x9b, 0xc4, 0x5a, 0x0f, 0xe5, 0x50, 0x63, 0xff, 0x26, 0x8d, 0xce, 0xd7, 0x43, - 0x66, 0x64, 0x53, 0xe4, 0x04, 0xd1, 0xf9, 0x06, 0xb3, 0x30, 0x96, 0x8b, 0xa9, 0xf2, 0x1a, 0xde, - 0x71, 0xc7, 0xf8, 0x0b, 0xe9, 0x21, 0x5c, 0x00, 0xd9, 0x68, 0x75, 0x49, 0xe7, 0x38, 0xa5, 0xb9, - 0x8f, 0x49, 0x7d, 0x85, 0x7a, 0x45, 0x45, 0x59, 0x1e, 0xb7, 0xaf, 0x90, 0x10, 0x17, 0xe9, 0x63, - 0xf6, 0x3d, 0xe2, 0x28, 0xda, 0x69, 0xeb, 0x4d, 0xec, 0x72, 0x9f, 0x1a, 0x6a, 0xb4, 0x27, 0xcb, - 0x7a, 0x3d, 0x59, 0xa8, 0x9d, 0xe6, 0x0e, 0xd0, 0x4e, 0x87, 0x5d, 0x86, 0xf4, 0x65, 0x4e, 0x2a, - 0x7e, 0x68, 0xcb, 0x90, 0xb1, 0x6c, 0x8c, 0xe1, 0xda, 0x51, 0xef, 0x20, 0xed, 0x58, 0x5b, 0xeb, - 0xb0, 0x9b, 0x34, 0x4c, 0x58, 0x23, 0x3b, 0x34, 0x3b, 0xcc, 0x26, 0x4d, 0x34, 0x0f, 0x63, 0x40, - 0x6b, 0x8e, 0xa1, 0xf5, 0x59, 0x36, 0x8c, 0xa6, 0xbc, 0x4f, 0xda, 0xb5, 0x6c, 0x27, 0xd9, 0x3e, - 0xa9, 0xcb, 0x9d, 0x46, 0xfe, 0x4b, 0x7a, 0xf0, 0x8a, 0x3f, 0x57, 0x3d, 0xaa, 0xe1, 0x33, 0xc1, - 0xc1, 0xab, 0x41, 0x0c, 0xa4, 0x0f, 0xef, 0x9b, 0x0e, 0x69, 0xf0, 0x1c, 0xb6, 0x39, 0xb2, 0x36, - 0x30, 0xb2, 0xa1, 0x73, 0x98, 0xe6, 0x18, 0xcd, 0x43, 0xfa, 0x78, 0x7d, 0x3b, 0x34, 0x70, 0xbe, - 0x61, 0x8c, 0x03, 0xa7, 0xd7, 0x32, 0x73, 0x43, 0xb6, 0xcc, 0x61, 0xf7, 0x7f, 0x98, 0xac, 0x47, - 0x37, 0x60, 0x0e, 0xb3, 0xff, 0x13, 0xc3, 0x44, 0xfa, 0x88, 0xbf, 0x51, 0x86, 0x5c, 0x6d, 0xfc, - 0xe3, 0xe5, 0xb0, 0x73, 0x11, 0x22, 0xab, 0xda, 0xc8, 0x86, 0xcb, 0x61, 0xe6, 0x22, 0x91, 0x2c, - 0x8c, 0x21, 0xf0, 0xfe, 0x51, 0x98, 0x21, 0x4b, 0x22, 0xde, 0x36, 0xeb, 0xb7, 0xd9, 0xa8, 0xf9, - 0x70, 0x8a, 0x6d, 0xf5, 0x1e, 0x98, 0xf4, 0xf6, 0xef, 0xd8, 0xc8, 0x39, 0x2f, 0xd6, 0x3e, 0x3d, - 0x2e, 0x35, 0xff, 0xff, 0x03, 0x39, 0x43, 0x8c, 0x7c, 0xaf, 0x76, 0x58, 0x67, 0x88, 0x43, 0xdd, - 0xaf, 0xfd, 0xd3, 0x60, 0x44, 0xfd, 0x2f, 0xe9, 0x61, 0xde, 0xbb, 0x8f, 0x9b, 0xed, 0xb3, 0x8f, - 0xfb, 0xd1, 0x30, 0x96, 0x35, 0x1e, 0xcb, 0x3b, 0x45, 0x45, 0x38, 0xc2, 0xb1, 0xf6, 0x9d, 0x3e, - 0x9c, 0x67, 0x39, 0x38, 0x17, 0x0e, 0xc4, 0xcb, 0x18, 0x0e, 0x3e, 0x66, 0x83, 0x31, 0xf7, 0x63, - 0x29, 0xb6, 0xe3, 0x9e, 0x53, 0x15, 0xd9, 0x7d, 0xa7, 0x2a, 0xb8, 0x96, 0x9e, 0x3b, 0x60, 0x4b, - 0xff, 0x58, 0x58, 0x3b, 0xea, 0xbc, 0x76, 0x3c, 0x55, 0x1c, 0x91, 0xd1, 0x8d, 0xcc, 0xef, 0xf2, - 0xd5, 0xe3, 0x1c, 0xa7, 0x1e, 0xa5, 0x83, 0x31, 0x93, 0xbe, 0x7e, 0xfc, 0x91, 0x37, 0xa1, 0x3d, - 0xe4, 0xf6, 0x3e, 0xec, 0x56, 0x31, 0x27, 0xc4, 0x91, 0x8d, 0xdc, 0xc3, 0x6c, 0x15, 0x0f, 0xe2, - 0x64, 0x0c, 0xb1, 0xd8, 0x66, 0x61, 0x9a, 0xf0, 0x74, 0xce, 0x68, 0x6d, 0x61, 0x07, 0xbd, 0x8a, - 0xfa, 0x28, 0x7a, 0x91, 0x2f, 0x47, 0x14, 0x9e, 0x28, 0xea, 0xbc, 0x6b, 0x52, 0x8f, 0x0e, 0xca, - 0xe4, 0x7c, 0x88, 0xc1, 0x71, 0x47, 0x50, 0x1c, 0xc8, 0x41, 0xfa, 0x90, 0x7d, 0x98, 0xba, 0xdb, - 0xac, 0xea, 0x97, 0xac, 0x5d, 0x07, 0x3d, 0x38, 0x82, 0x0e, 0x7a, 0x01, 0xf2, 0x6d, 0x42, 0x8d, - 0x1d, 0xcb, 0x88, 0x9f, 0xee, 0x30, 0x11, 0xd0, 0xf2, 0x35, 0xf6, 0x67, 0xd2, 0xb3, 0x19, 0x81, - 0x1c, 0x29, 0x9d, 0x71, 0x9f, 0xcd, 0x18, 0x50, 0xfe, 0x58, 0xee, 0xd8, 0x99, 0x74, 0x4b, 0x37, - 0x76, 0x0c, 0x67, 0x44, 0x11, 0x1c, 0xda, 0x2e, 0x2d, 0x2f, 0x82, 0x03, 0x79, 0x49, 0x7a, 0x62, - 0x34, 0x24, 0x15, 0xf7, 0xf7, 0x71, 0x9f, 0x18, 0x8d, 0x2f, 0x3e, 0x7d, 0x4c, 0x7e, 0x83, 0xb6, - 0xac, 0xb3, 0xd4, 0xf9, 0x36, 0x45, 0xbf, 0xde, 0xa1, 0x1b, 0x0b, 0x65, 0xed, 0xf0, 0x1a, 0x4b, - 0xdf, 0xf2, 0xd3, 0x07, 0xe6, 0xbf, 0xff, 0x38, 0xe4, 0x16, 0xf1, 0xf9, 0xdd, 0x2d, 0x74, 0x07, - 0x4c, 0xd6, 0x6d, 0x8c, 0xcb, 0xe6, 0xa6, 0xe5, 0x4a, 0xd7, 0x71, 0x9f, 0x3d, 0x48, 0xd8, 0x9b, - 0x8b, 0xc7, 0x36, 0xd6, 0x5b, 0xc1, 0xf9, 0x33, 0xef, 0x15, 0xbd, 0x58, 0x82, 0x6c, 0xcd, 0xd1, - 0x1d, 0x34, 0xe5, 0x63, 0x8b, 0x1e, 0x0c, 0x63, 0x71, 0x07, 0x8f, 0xc5, 0xf5, 0x9c, 0x2c, 0x08, - 0x07, 0xf3, 0xee, 0xff, 0x11, 0x00, 0x20, 0x98, 0xbc, 0xbf, 0x6b, 0x99, 0x6e, 0x0e, 0xef, 0x08, - 0xa4, 0xf7, 0x8e, 0x5e, 0xe1, 0x8b, 0xfb, 0x2e, 0x4e, 0xdc, 0x8f, 0x15, 0x2b, 0x62, 0x0c, 0x2b, - 0x6d, 0x12, 0x4c, 0xb9, 0xa2, 0x5d, 0xc1, 0x7a, 0xab, 0x8b, 0x7e, 0x2c, 0x50, 0xfe, 0x08, 0x31, - 0xa3, 0xf7, 0x09, 0x07, 0xe3, 0xa4, 0xb5, 0xf2, 0x89, 0x47, 0x7b, 0x74, 0x78, 0x9b, 0xff, 0x12, - 0x1f, 0x8c, 0xe4, 0x66, 0xc8, 0x1a, 0xe6, 0xa6, 0xc5, 0xfc, 0x0b, 0xaf, 0x8c, 0xa0, 0xed, 0xea, - 0x84, 0x46, 0x32, 0x0a, 0x46, 0xea, 0x8c, 0x67, 0x6b, 0x2c, 0x97, 0xde, 0x65, 0xdd, 0xd2, 0xd1, - 0xff, 0x7f, 0xa0, 0xb0, 0x15, 0x05, 0xb2, 0x1d, 0xdd, 0xd9, 0x66, 0x45, 0x93, 0x67, 0xd7, 0x46, - 0xde, 0x35, 0x75, 0xd3, 0x32, 0x2f, 0xed, 0x18, 0x4f, 0xf7, 0xef, 0xd6, 0xe5, 0xd2, 0x5c, 0xce, - 0xb7, 0xb0, 0x89, 0x6d, 0xdd, 0xc1, 0xb5, 0xbd, 0x2d, 0x32, 0xc7, 0x9a, 0xd4, 0xc2, 0x49, 0x89, - 0xf5, 0xdf, 0xe5, 0x38, 0x5a, 0xff, 0x37, 0x8d, 0x36, 0x26, 0x91, 0x9a, 0x98, 0xfe, 0x7b, 0xef, - 0x89, 0xf4, 0xbf, 0x4f, 0x11, 0xe9, 0xa3, 0xf1, 0x7d, 0x09, 0x66, 0x6a, 0xae, 0xc2, 0xd5, 0x76, - 0x77, 0x76, 0x74, 0xfb, 0x12, 0xba, 0x36, 0x40, 0x25, 0xa4, 0x9a, 0x19, 0xde, 0x2f, 0xe5, 0x0f, - 0x85, 0xaf, 0x95, 0x66, 0x4d, 0x3b, 0x54, 0x42, 0xe2, 0x76, 0xf0, 0x78, 0xc8, 0xb9, 0xea, 0xed, - 0x79, 0x5c, 0xc6, 0x36, 0x04, 0x9a, 0x53, 0x30, 0xa2, 0xd5, 0x40, 0xde, 0xc6, 0x10, 0x4d, 0x43, - 0x82, 0xa3, 0x35, 0x47, 0x6f, 0x5e, 0x58, 0xb6, 0x6c, 0x6b, 0xd7, 0x31, 0x4c, 0xdc, 0x45, 0x8f, - 0x0a, 0x10, 0xf0, 0xf4, 0x3f, 0x13, 0xe8, 0x3f, 0xfa, 0xf7, 0x8c, 0xe8, 0x28, 0xea, 0x77, 0xab, - 0x61, 0xf2, 0x11, 0x01, 0xaa, 0xc4, 0xc6, 0x45, 0x11, 0x8a, 0xe9, 0x0b, 0xed, 0x0d, 0x32, 0x14, - 0xd4, 0x07, 0x3a, 0x96, 0xed, 0xac, 0x5a, 0x4d, 0xbd, 0xdd, 0x75, 0x2c, 0x1b, 0xa3, 0x6a, 0xac, - 0xd4, 0xdc, 0x1e, 0xa6, 0x65, 0x35, 0x83, 0xc1, 0x91, 0xbd, 0x85, 0xd5, 0x4e, 0xe6, 0x75, 0xfc, - 0xc3, 0xc2, 0xbb, 0x8c, 0x54, 0x2a, 0xbd, 0x1c, 0x45, 0xe8, 0x79, 0xbf, 0x2e, 0x2d, 0xd9, 0x61, - 0x09, 0xb1, 0x9d, 0x47, 0x21, 0xa6, 0xc6, 0xb0, 0x54, 0x2e, 0xc1, 0x6c, 0x6d, 0xf7, 0xbc, 0x4f, - 0xa4, 0x1b, 0x36, 0x42, 0x5e, 0x2d, 0x1c, 0xa5, 0x82, 0x29, 0x5e, 0x98, 0x50, 0x84, 0x7c, 0xaf, - 0x83, 0xd9, 0x6e, 0x38, 0x1b, 0xc3, 0x9b, 0x4f, 0x14, 0x8c, 0x4e, 0x31, 0xb8, 0xd4, 0xf4, 0x05, - 0xf8, 0x2e, 0x09, 0x66, 0xab, 0x1d, 0x6c, 0xe2, 0x16, 0xf5, 0x82, 0xe4, 0x04, 0xf8, 0xe2, 0x84, - 0x02, 0xe4, 0x08, 0x45, 0x08, 0x30, 0xf0, 0x58, 0x5e, 0xf4, 0x84, 0x17, 0x24, 0x24, 0x12, 0x5c, - 0x5c, 0x69, 0xe9, 0x0b, 0xee, 0x4b, 0x12, 0x4c, 0x6b, 0xbb, 0xe6, 0xba, 0x6d, 0xb9, 0xa3, 0xb1, - 0x8d, 0xee, 0x0c, 0x3a, 0x88, 0x9b, 0xe0, 0x58, 0x6b, 0xd7, 0x26, 0xeb, 0x4f, 0x65, 0xb3, 0x86, - 0x9b, 0x96, 0xd9, 0xea, 0x92, 0x7a, 0xe4, 0xb4, 0xfd, 0x1f, 0x6e, 0xcf, 0x3e, 0xfb, 0x1b, 0x72, - 0x06, 0x3d, 0x57, 0x38, 0xd4, 0x0d, 0xad, 0x7c, 0xa8, 0x68, 0xf1, 0x9e, 0x40, 0x30, 0xa0, 0xcd, - 0xa0, 0x12, 0xd2, 0x17, 0xee, 0x67, 0x25, 0x50, 0x8a, 0xcd, 0xa6, 0xb5, 0x6b, 0x3a, 0x35, 0xdc, - 0xc6, 0x4d, 0xa7, 0x6e, 0xeb, 0x4d, 0x1c, 0xb6, 0x9f, 0x0b, 0x20, 0xb7, 0x0c, 0x9b, 0xf5, 0xc1, - 0xee, 0x23, 0x93, 0xe3, 0x8b, 0x85, 0x77, 0x1c, 0x69, 0x2d, 0xf7, 0x97, 0x92, 0x40, 0x9c, 0x62, - 0xfb, 0x8a, 0x82, 0x05, 0xa5, 0x2f, 0xd5, 0x8f, 0x49, 0x30, 0xe5, 0xf5, 0xd8, 0x5b, 0x22, 0xc2, - 0xfc, 0x8d, 0x84, 0x93, 0x11, 0x9f, 0x78, 0x02, 0x19, 0xbe, 0x2d, 0xc1, 0xac, 0x22, 0x8a, 0x7e, - 0x32, 0xd1, 0x15, 0x93, 0x8b, 0xce, 0x7d, 0xad, 0x54, 0x1b, 0x4b, 0xd5, 0xd5, 0x45, 0x55, 0x2b, - 0xc8, 0xe8, 0xcb, 0x12, 0x64, 0xd7, 0x0d, 0x73, 0x2b, 0x1c, 0x5d, 0xe9, 0xb8, 0x6b, 0x47, 0xb6, - 0xf0, 0x03, 0xac, 0xa5, 0xd3, 0x17, 0xe5, 0x56, 0x38, 0x6e, 0xee, 0xee, 0x9c, 0xc7, 0x76, 0x75, - 0x93, 0x8c, 0xb2, 0xdd, 0xba, 0x55, 0xc3, 0x26, 0x35, 0x42, 0x73, 0x5a, 0xdf, 0x6f, 0xbc, 0x09, - 0x26, 0x30, 0x79, 0x70, 0x39, 0x89, 0x90, 0xb8, 0xcf, 0x94, 0x14, 0x62, 0x2a, 0xd1, 0xb4, 0xa1, - 0x0f, 0xf1, 0xf4, 0x35, 0xf5, 0x8f, 0x73, 0x70, 0xa2, 0x68, 0x5e, 0x22, 0x36, 0x05, 0xed, 0xe0, - 0x4b, 0xdb, 0xba, 0xb9, 0x85, 0xc9, 0x00, 0xe1, 0x4b, 0x3c, 0x1c, 0xa2, 0x3f, 0xc3, 0x87, 0xe8, - 0x57, 0x34, 0x98, 0xb0, 0xec, 0x16, 0xb6, 0x17, 0x2e, 0x11, 0x9e, 0x7a, 0x97, 0x9d, 0x59, 0x9b, - 0xec, 0x57, 0xc4, 0x3c, 0x23, 0x3f, 0x5f, 0xa5, 0xff, 0x6b, 0x1e, 0xa1, 0x33, 0x37, 0xc1, 0x04, - 0x4b, 0x53, 0x66, 0x60, 0xb2, 0xaa, 0x2d, 0xaa, 0x5a, 0xa3, 0xbc, 0x58, 0x38, 0xa2, 0x5c, 0x06, - 0x47, 0xcb, 0x75, 0x55, 0x2b, 0xd6, 0xcb, 0xd5, 0x4a, 0x83, 0xa4, 0x17, 0x32, 0xe8, 0x59, 0x59, - 0x51, 0xcf, 0xde, 0x78, 0x66, 0xfa, 0xc1, 0xaa, 0xc1, 0x44, 0x93, 0x66, 0x20, 0x43, 0xe8, 0x74, - 0xa2, 0xda, 0x31, 0x82, 0x34, 0x41, 0xf3, 0x08, 0x29, 0xa7, 0x01, 0x2e, 0xda, 0x96, 0xb9, 0x15, - 0x9c, 0x3a, 0x9c, 0xd4, 0x42, 0x29, 0xe8, 0xc1, 0x0c, 0xe4, 0xe9, 0x3f, 0xe4, 0x4a, 0x12, 0xf2, - 0x14, 0x08, 0xde, 0x7b, 0x77, 0x2d, 0x5e, 0x22, 0xaf, 0x60, 0xa2, 0xc5, 0x5e, 0x5d, 0x5d, 0xa4, - 0x32, 0xa0, 0x96, 0x30, 0xab, 0xca, 0xcd, 0x90, 0xa7, 0xff, 0x32, 0xaf, 0x83, 0xe8, 0xf0, 0xa2, - 0x34, 0x9b, 0xa0, 0x9f, 0xb2, 0xb8, 0x4c, 0xd3, 0xd7, 0xe6, 0xf7, 0x4b, 0x30, 0x59, 0xc1, 0x4e, - 0x69, 0x1b, 0x37, 0x2f, 0xa0, 0xc7, 0xf0, 0x0b, 0xa0, 0x6d, 0x03, 0x9b, 0xce, 0x7d, 0x3b, 0x6d, - 0x7f, 0x01, 0xd4, 0x4b, 0x40, 0xcf, 0x09, 0x77, 0xbe, 0x77, 0xf3, 0xfa, 0x73, 0x63, 0x9f, 0xba, - 0x7a, 0x25, 0x44, 0xa8, 0xcc, 0x49, 0xc8, 0xdb, 0xb8, 0xbb, 0xdb, 0xf6, 0x16, 0xd1, 0xd8, 0x1b, - 0x7a, 0xc8, 0x17, 0x67, 0x89, 0x13, 0xe7, 0xcd, 0xe2, 0x45, 0x8c, 0x21, 0x5e, 0x69, 0x16, 0x26, - 0xca, 0xa6, 0xe1, 0x18, 0x7a, 0x1b, 0x3d, 0x37, 0x0b, 0xb3, 0x35, 0xec, 0xac, 0xeb, 0xb6, 0xbe, - 0x83, 0x1d, 0x6c, 0x77, 0xd1, 0x77, 0xf9, 0x3e, 0xa1, 0xd3, 0xd6, 0x9d, 0x4d, 0xcb, 0xde, 0xf1, - 0x54, 0xd3, 0x7b, 0x77, 0x55, 0x73, 0x0f, 0xdb, 0xdd, 0x80, 0x2f, 0xef, 0xd5, 0xfd, 0x72, 0xd1, - 0xb2, 0x2f, 0xb8, 0x83, 0x20, 0x9b, 0xa6, 0xb1, 0x57, 0x97, 0x5e, 0xdb, 0xda, 0x5a, 0xc5, 0x7b, - 0xd8, 0x0b, 0x97, 0xe6, 0xbf, 0xbb, 0x73, 0x81, 0x96, 0x55, 0xb1, 0x1c, 0xb7, 0xd3, 0x5e, 0xb5, - 0xb6, 0x68, 0xbc, 0xd8, 0x49, 0x8d, 0x4f, 0x0c, 0x72, 0xe9, 0x7b, 0x98, 0xe4, 0xca, 0x87, 0x73, - 0xb1, 0x44, 0x65, 0x1e, 0x14, 0xff, 0xb7, 0x3a, 0x6e, 0xe3, 0x1d, 0xec, 0xd8, 0x97, 0xc8, 0xb5, - 0x10, 0x93, 0x5a, 0x9f, 0x2f, 0x6c, 0x80, 0x16, 0x9f, 0xac, 0x33, 0xe9, 0xcd, 0x73, 0x92, 0x3b, - 0xd0, 0x64, 0x5d, 0x84, 0xe2, 0x58, 0xae, 0xbd, 0x92, 0x5d, 0x6b, 0xe6, 0xa5, 0x32, 0x64, 0xc9, - 0xe0, 0xf9, 0xc6, 0x0c, 0xb7, 0xc2, 0xb4, 0x83, 0xbb, 0x5d, 0x7d, 0x0b, 0x7b, 0x2b, 0x4c, 0xec, - 0x55, 0xb9, 0x0d, 0x72, 0x6d, 0x82, 0x29, 0x1d, 0x1c, 0xae, 0xe5, 0x6a, 0xe6, 0x1a, 0x18, 0x2e, - 0x2d, 0x7f, 0x24, 0x20, 0x70, 0x6b, 0xf4, 0x8f, 0x33, 0xf7, 0x40, 0x8e, 0xc2, 0x3f, 0x05, 0xb9, - 0x45, 0x75, 0x61, 0x63, 0xb9, 0x70, 0xc4, 0x7d, 0xf4, 0xf8, 0x9b, 0x82, 0xdc, 0x52, 0xb1, 0x5e, - 0x5c, 0x2d, 0x48, 0x6e, 0x3d, 0xca, 0x95, 0xa5, 0x6a, 0x41, 0x76, 0x13, 0xd7, 0x8b, 0x95, 0x72, - 0xa9, 0x90, 0x55, 0xa6, 0x61, 0xe2, 0x5c, 0x51, 0xab, 0x94, 0x2b, 0xcb, 0x85, 0x1c, 0xfa, 0xdb, - 0x30, 0x7e, 0xb7, 0xf3, 0xf8, 0x5d, 0x17, 0xc5, 0x53, 0x3f, 0xc8, 0x5e, 0xe6, 0x43, 0x76, 0x27, - 0x07, 0xd9, 0x8f, 0x8b, 0x10, 0x19, 0x83, 0x3b, 0x53, 0x1e, 0x26, 0xd6, 0x6d, 0xab, 0x89, 0xbb, - 0x5d, 0xf4, 0x9b, 0x12, 0xe4, 0x4b, 0xba, 0xd9, 0xc4, 0x6d, 0x74, 0x45, 0x00, 0x15, 0x75, 0x15, - 0xcd, 0xf8, 0xa7, 0xc5, 0xfe, 0x31, 0x23, 0xda, 0xfb, 0x31, 0xba, 0xf3, 0x94, 0x66, 0x84, 0x7c, - 0xc4, 0x7a, 0xb9, 0x58, 0x52, 0x63, 0xb8, 0x1a, 0x47, 0x82, 0x29, 0xb6, 0x1a, 0x70, 0x1e, 0x87, - 0xe7, 0xe1, 0xdf, 0xcd, 0x88, 0x4e, 0x0e, 0xbd, 0x1a, 0xf8, 0x64, 0x22, 0xe4, 0x21, 0x36, 0x11, - 0x1c, 0x44, 0x6d, 0x0c, 0x9b, 0x87, 0x12, 0x4c, 0x6f, 0x98, 0xdd, 0x7e, 0x42, 0x11, 0x8f, 0xa3, - 0xef, 0x55, 0x23, 0x44, 0xe8, 0x40, 0x71, 0xf4, 0x07, 0xd3, 0x4b, 0x5f, 0x30, 0xdf, 0xcd, 0xc0, - 0xf1, 0x65, 0x6c, 0x62, 0xdb, 0x68, 0xd2, 0x1a, 0x78, 0x92, 0xb8, 0x93, 0x97, 0xc4, 0x63, 0x38, - 0xce, 0xfb, 0xfd, 0xc1, 0x4b, 0xe0, 0x95, 0xbe, 0x04, 0xee, 0xe6, 0x24, 0x70, 0x93, 0x20, 0x9d, - 0x31, 0xdc, 0x87, 0x3e, 0x05, 0x33, 0x15, 0xcb, 0x31, 0x36, 0x8d, 0x26, 0xf5, 0x41, 0x7b, 0x89, - 0x0c, 0xd9, 0x55, 0xa3, 0xeb, 0xa0, 0x62, 0xd0, 0x9d, 0x5c, 0x03, 0xd3, 0x86, 0xd9, 0x6c, 0xef, - 0xb6, 0xb0, 0x86, 0x75, 0xda, 0xaf, 0x4c, 0x6a, 0xe1, 0xa4, 0x60, 0x6b, 0xdf, 0x65, 0x4b, 0xf6, - 0xb6, 0xf6, 0x3f, 0x25, 0xbc, 0x0c, 0x13, 0x66, 0x81, 0x04, 0xa4, 0x8c, 0xb0, 0xbb, 0x8a, 0x30, - 0x6b, 0x86, 0xb2, 0x7a, 0x06, 0x7b, 0xef, 0x85, 0x02, 0x61, 0x72, 0x1a, 0xff, 0x07, 0x7a, 0x8f, - 0x50, 0x63, 0x1d, 0xc4, 0x50, 0x32, 0x64, 0x96, 0x86, 0x98, 0x24, 0x2b, 0x30, 0x57, 0xae, 0xd4, - 0x55, 0xad, 0x52, 0x5c, 0x65, 0x59, 0x64, 0xf4, 0x7d, 0x09, 0x72, 0x1a, 0xee, 0xb4, 0x2f, 0x85, - 0x23, 0x46, 0x33, 0x47, 0xf1, 0x8c, 0xef, 0x28, 0xae, 0x2c, 0x01, 0xe8, 0x4d, 0xb7, 0x60, 0x72, - 0xa5, 0x96, 0xd4, 0x37, 0x8e, 0x29, 0x57, 0xc1, 0xa2, 0x9f, 0x5b, 0x0b, 0xfd, 0x89, 0x9e, 0x27, - 0xbc, 0x73, 0xc4, 0x51, 0x23, 0x1c, 0x46, 0xf4, 0x09, 0xef, 0x15, 0xda, 0xec, 0x19, 0x48, 0xee, - 0x70, 0xc4, 0xff, 0x15, 0x09, 0xb2, 0x75, 0xb7, 0xb7, 0x0c, 0x75, 0x9c, 0x9f, 0x1c, 0x4e, 0xc7, - 0x5d, 0x32, 0x11, 0x3a, 0x7e, 0x17, 0xcc, 0x84, 0x35, 0x96, 0xb9, 0x4a, 0xc4, 0xaa, 0x38, 0xf7, - 0xc3, 0x30, 0x1a, 0xde, 0x87, 0x9d, 0xc3, 0x11, 0xf1, 0xc7, 0x1f, 0x0b, 0xb0, 0x86, 0x77, 0xce, - 0x63, 0xbb, 0xbb, 0x6d, 0x74, 0xd0, 0xdf, 0xc9, 0x30, 0xb5, 0x8c, 0x9d, 0x9a, 0xa3, 0x3b, 0xbb, - 0xdd, 0x9e, 0xed, 0x4e, 0xd3, 0x2a, 0xe9, 0xcd, 0x6d, 0xcc, 0xba, 0x23, 0xef, 0x15, 0xbd, 0x43, - 0x16, 0xf5, 0x27, 0x0a, 0xca, 0x99, 0xf7, 0xcb, 0x88, 0xc0, 0xe4, 0x71, 0x90, 0x6d, 0xe9, 0x8e, - 0xce, 0xb0, 0xb8, 0xa2, 0x07, 0x8b, 0x80, 0x90, 0x46, 0xb2, 0xa1, 0xdf, 0x95, 0x44, 0x1c, 0x8a, - 0x04, 0xca, 0x4f, 0x06, 0xc2, 0x7b, 0x32, 0x43, 0xa0, 0x70, 0x0c, 0x66, 0x2b, 0xd5, 0x7a, 0x63, - 0xb5, 0xba, 0xbc, 0xac, 0xba, 0xa9, 0x05, 0x59, 0x39, 0x09, 0xca, 0x7a, 0xf1, 0xbe, 0x35, 0xb5, - 0x52, 0x6f, 0x54, 0xaa, 0x8b, 0x2a, 0xfb, 0x33, 0xab, 0x1c, 0x85, 0xe9, 0x52, 0xb1, 0xb4, 0xe2, - 0x25, 0xe4, 0x94, 0x53, 0x70, 0x7c, 0x4d, 0x5d, 0x5b, 0x50, 0xb5, 0xda, 0x4a, 0x79, 0xbd, 0xe1, - 0x92, 0x59, 0xaa, 0x6e, 0x54, 0x16, 0x0b, 0x79, 0x05, 0xc1, 0xc9, 0xd0, 0x97, 0x73, 0x5a, 0xb5, - 0xb2, 0xdc, 0xa8, 0xd5, 0x8b, 0x75, 0xb5, 0x30, 0xa1, 0x5c, 0x06, 0x47, 0x4b, 0xc5, 0x0a, 0xc9, - 0x5e, 0xaa, 0x56, 0x2a, 0x6a, 0xa9, 0x5e, 0x98, 0x44, 0xff, 0x9e, 0x85, 0xe9, 0x72, 0xb7, 0xa2, - 0xef, 0xe0, 0xb3, 0x7a, 0xdb, 0x68, 0xa1, 0xe7, 0x86, 0x66, 0x1e, 0xd7, 0xc1, 0xac, 0x4d, 0x1f, - 0x71, 0xab, 0x6e, 0x60, 0x8a, 0xe6, 0xac, 0xc6, 0x27, 0xba, 0x73, 0x72, 0x93, 0x10, 0xf0, 0xe6, - 0xe4, 0xf4, 0x4d, 0x59, 0x00, 0xa0, 0x4f, 0xf5, 0xe0, 0x72, 0xd7, 0x33, 0xbd, 0xad, 0x49, 0xdf, - 0xc1, 0x5d, 0x6c, 0xef, 0x19, 0x4d, 0xec, 0xe5, 0xd4, 0x42, 0x7f, 0xa1, 0xaf, 0xca, 0xa2, 0xfb, - 0x8b, 0x21, 0x50, 0x43, 0xd5, 0x89, 0xe8, 0x0d, 0x7f, 0x59, 0x16, 0xd9, 0x1d, 0x14, 0x22, 0x99, - 0x4c, 0x53, 0x5e, 0x20, 0x0d, 0xb7, 0x6c, 0x5b, 0xaf, 0x56, 0x1b, 0xb5, 0x95, 0xaa, 0x56, 0x2f, - 0xc8, 0xca, 0x0c, 0x4c, 0xba, 0xaf, 0xab, 0xd5, 0xca, 0x72, 0x21, 0xab, 0x9c, 0x80, 0x63, 0x2b, - 0xc5, 0x5a, 0xa3, 0x5c, 0x39, 0x5b, 0x5c, 0x2d, 0x2f, 0x36, 0x4a, 0x2b, 0x45, 0xad, 0x56, 0xc8, - 0x29, 0x57, 0xc0, 0x89, 0x7a, 0x59, 0xd5, 0x1a, 0x4b, 0x6a, 0xb1, 0xbe, 0xa1, 0xa9, 0xb5, 0x46, - 0xa5, 0xda, 0xa8, 0x14, 0xd7, 0xd4, 0x42, 0xde, 0x6d, 0xfe, 0xe4, 0x53, 0xa0, 0x36, 0x13, 0xfb, - 0x95, 0x71, 0x32, 0x42, 0x19, 0xa7, 0x7a, 0x95, 0x11, 0xc2, 0x6a, 0xa5, 0xa9, 0x35, 0x55, 0x3b, - 0xab, 0x16, 0xa6, 0xfb, 0xe9, 0xda, 0x8c, 0x72, 0x1c, 0x0a, 0x2e, 0x0f, 0x8d, 0x72, 0xcd, 0xcb, - 0xb9, 0x58, 0x98, 0x45, 0x1f, 0xcb, 0xc3, 0x49, 0x0d, 0x6f, 0x19, 0x5d, 0x07, 0xdb, 0xeb, 0xfa, - 0xa5, 0x1d, 0x6c, 0x3a, 0x5e, 0x27, 0xff, 0x2f, 0x89, 0x95, 0x71, 0x0d, 0x66, 0x3b, 0x94, 0xc6, - 0x1a, 0x76, 0xb6, 0xad, 0x16, 0x1b, 0x85, 0x1f, 0x13, 0xd9, 0x73, 0xcc, 0xaf, 0x87, 0xb3, 0x6b, - 0xfc, 0xdf, 0x21, 0xdd, 0x96, 0x63, 0x74, 0x3b, 0x3b, 0x8c, 0x6e, 0x2b, 0x57, 0xc1, 0xd4, 0x6e, - 0x17, 0xdb, 0xea, 0x8e, 0x6e, 0xb4, 0xbd, 0xcb, 0x39, 0xfd, 0x04, 0xf4, 0xd6, 0xac, 0xe8, 0x89, - 0x95, 0x50, 0x5d, 0xfa, 0x8b, 0x31, 0xa2, 0x6f, 0x3d, 0x0d, 0xc0, 0x2a, 0xbb, 0x61, 0xb7, 0x99, - 0xb2, 0x86, 0x52, 0x5c, 0xfe, 0xce, 0x1b, 0xed, 0xb6, 0x61, 0x6e, 0xf9, 0xfb, 0xfe, 0x41, 0x02, - 0x7a, 0x81, 0x2c, 0x72, 0x82, 0x25, 0x29, 0x6f, 0xc9, 0x5a, 0xd3, 0xf3, 0xa4, 0x31, 0xf7, 0xbb, - 0xfb, 0x9b, 0x4e, 0x5e, 0x29, 0xc0, 0x0c, 0x49, 0x63, 0x2d, 0xb0, 0x30, 0xe1, 0xf6, 0xc1, 0x1e, - 0xb9, 0x35, 0xb5, 0xbe, 0x52, 0x5d, 0xf4, 0xbf, 0x4d, 0xba, 0x24, 0x5d, 0x66, 0x8a, 0x95, 0xfb, - 0x48, 0x6b, 0x9c, 0x52, 0x1e, 0x05, 0x57, 0x84, 0x3a, 0xec, 0xe2, 0xaa, 0xa6, 0x16, 0x17, 0xef, - 0x6b, 0xa8, 0x4f, 0x2b, 0xd7, 0xea, 0x35, 0xbe, 0x71, 0x79, 0xed, 0x68, 0xda, 0xe5, 0x57, 0x5d, - 0x2b, 0x96, 0x57, 0x59, 0xff, 0xbe, 0x54, 0xd5, 0xd6, 0x8a, 0xf5, 0xc2, 0x0c, 0x7a, 0xa9, 0x0c, - 0x85, 0x65, 0xec, 0xac, 0x5b, 0xb6, 0xa3, 0xb7, 0x57, 0x0d, 0xf3, 0xc2, 0x86, 0xdd, 0xe6, 0x26, - 0x9b, 0xc2, 0x61, 0x3a, 0xf8, 0x21, 0x92, 0x23, 0x18, 0xbd, 0x23, 0xde, 0x21, 0xd9, 0x02, 0x65, - 0x0a, 0x12, 0xd0, 0x33, 0x24, 0x91, 0xe5, 0x6e, 0xf1, 0x52, 0x93, 0xe9, 0xc9, 0x33, 0xc7, 0x3d, - 0x3e, 0xf7, 0x41, 0x2d, 0x8f, 0x9e, 0x9d, 0x85, 0xc9, 0x25, 0xc3, 0xd4, 0xdb, 0xc6, 0xd3, 0xb9, - 0xf8, 0xa5, 0x41, 0x1f, 0x93, 0x89, 0xe9, 0x63, 0xa4, 0xa1, 0xc6, 0xcf, 0x5f, 0x97, 0x45, 0x97, - 0x17, 0x42, 0xb2, 0xf7, 0x98, 0x8c, 0x18, 0x3c, 0x3f, 0x20, 0x89, 0x2c, 0x2f, 0x0c, 0xa6, 0x97, - 0x0c, 0xc3, 0x4f, 0xfc, 0x70, 0xd8, 0x58, 0x3d, 0xed, 0x7b, 0xb2, 0x9f, 0x2a, 0x4c, 0xa1, 0x3f, - 0x97, 0x01, 0x2d, 0x63, 0xe7, 0x2c, 0xb6, 0xfd, 0xa9, 0x00, 0xe9, 0xf5, 0x99, 0xbd, 0x1d, 0x6a, - 0xb2, 0x6f, 0x0c, 0x03, 0x78, 0x8e, 0x07, 0xb0, 0x18, 0xd3, 0x78, 0x22, 0x48, 0x47, 0x34, 0xde, - 0x32, 0xe4, 0xbb, 0xe4, 0x3b, 0x53, 0xb3, 0xc7, 0x47, 0x0f, 0x97, 0x84, 0x58, 0x98, 0x3a, 0x25, - 0xac, 0x31, 0x02, 0xe8, 0x7b, 0xfe, 0x24, 0xe8, 0xa7, 0x39, 0xed, 0x58, 0x3a, 0x30, 0xb3, 0xc9, - 0xf4, 0xc5, 0x4e, 0x57, 0x5d, 0xfa, 0xd9, 0x37, 0xe8, 0x03, 0x39, 0x38, 0xde, 0xaf, 0x3a, 0xe8, - 0xf7, 0x32, 0xdc, 0x0e, 0x3b, 0x26, 0x43, 0x7e, 0x86, 0x6d, 0x20, 0xba, 0x2f, 0xca, 0x13, 0xe1, - 0x84, 0xbf, 0x0c, 0x57, 0xb7, 0x2a, 0xf8, 0x62, 0xb7, 0x8d, 0x1d, 0x07, 0xdb, 0xa4, 0x6a, 0x93, - 0x5a, 0xff, 0x8f, 0xca, 0x93, 0xe1, 0x72, 0xc3, 0xec, 0x1a, 0x2d, 0x6c, 0xd7, 0x8d, 0x4e, 0xb7, - 0x68, 0xb6, 0xea, 0xbb, 0x8e, 0x65, 0x1b, 0x3a, 0xbb, 0x4a, 0x72, 0x52, 0x8b, 0xfa, 0xac, 0xdc, - 0x08, 0x05, 0xa3, 0x5b, 0x35, 0xcf, 0x5b, 0xba, 0xdd, 0x32, 0xcc, 0xad, 0x55, 0xa3, 0xeb, 0x30, - 0x0f, 0xe0, 0x7d, 0xe9, 0xe8, 0xef, 0x65, 0xd1, 0xc3, 0x74, 0x03, 0x60, 0x8d, 0xe8, 0x50, 0x9e, - 0x23, 0x8b, 0x1c, 0x8f, 0x4b, 0x46, 0x3b, 0x99, 0xb2, 0x3c, 0x6b, 0xdc, 0x86, 0x44, 0xff, 0x11, - 0x9c, 0x74, 0x2d, 0x34, 0xdd, 0x33, 0x04, 0xce, 0xaa, 0x5a, 0x79, 0xa9, 0xac, 0xba, 0x66, 0xc5, - 0x09, 0x38, 0x16, 0x7c, 0x5b, 0xbc, 0xaf, 0x51, 0x53, 0x2b, 0xf5, 0xc2, 0xa4, 0xdb, 0x4f, 0xd1, - 0xe4, 0xa5, 0x62, 0x79, 0x55, 0x5d, 0x6c, 0xd4, 0xab, 0xee, 0x97, 0xc5, 0xe1, 0x4c, 0x0b, 0xf4, - 0x60, 0x16, 0x8e, 0x12, 0xd9, 0x5e, 0x22, 0x52, 0x75, 0x85, 0xd2, 0xe3, 0x6b, 0xeb, 0x03, 0x34, - 0x45, 0xc5, 0x8b, 0x3e, 0x23, 0x7c, 0x53, 0x66, 0x08, 0xc2, 0x9e, 0x32, 0x22, 0x34, 0xe3, 0xbb, - 0x92, 0x48, 0x84, 0x0a, 0x61, 0xb2, 0xc9, 0x94, 0xe2, 0x5f, 0xc7, 0x3d, 0xe2, 0x44, 0x83, 0x4f, - 0xac, 0xcc, 0x12, 0xf9, 0xf9, 0x69, 0xeb, 0x65, 0x8d, 0xa8, 0xc3, 0x1c, 0x00, 0x49, 0x21, 0x1a, - 0x44, 0xf5, 0xa0, 0xef, 0x78, 0x15, 0xa5, 0x07, 0xc5, 0x52, 0xbd, 0x7c, 0x56, 0x8d, 0xd2, 0x83, - 0x4f, 0xcb, 0x30, 0xb9, 0x8c, 0x1d, 0x77, 0x4e, 0xd5, 0x45, 0x4f, 0x11, 0x58, 0xff, 0x71, 0xcd, - 0x98, 0xb6, 0xd5, 0xd4, 0xdb, 0xfe, 0x32, 0x00, 0x7d, 0x43, 0xbf, 0x34, 0x8c, 0x09, 0xe2, 0x15, - 0x1d, 0x31, 0x5e, 0xfd, 0x24, 0xe4, 0x1c, 0xf7, 0x33, 0x5b, 0x86, 0xfe, 0xb1, 0xc8, 0xe1, 0xca, - 0x25, 0xb2, 0xa8, 0x3b, 0xba, 0x46, 0xf3, 0x87, 0x46, 0x27, 0x41, 0xdb, 0x25, 0x82, 0x91, 0x1f, - 0x46, 0xfb, 0xf3, 0x6f, 0x65, 0x38, 0x41, 0xdb, 0x47, 0xb1, 0xd3, 0xa9, 0x39, 0x96, 0x8d, 0x35, - 0xdc, 0xc4, 0x46, 0xc7, 0xe9, 0x59, 0xdf, 0xb3, 0x69, 0xaa, 0xb7, 0xd9, 0xcc, 0x5e, 0xd1, 0xeb, - 0x64, 0xd1, 0x18, 0xcc, 0xfb, 0xda, 0x63, 0x4f, 0x79, 0x11, 0x8d, 0xfd, 0xa3, 0x92, 0x48, 0x54, - 0xe5, 0x84, 0xc4, 0x93, 0x01, 0xf5, 0xa1, 0x43, 0x00, 0xca, 0x5b, 0xb9, 0xd1, 0xd4, 0x92, 0x5a, - 0x5e, 0x77, 0x07, 0x81, 0xab, 0xe1, 0xca, 0xf5, 0x0d, 0xad, 0xb4, 0x52, 0xac, 0xa9, 0x0d, 0x4d, - 0x5d, 0x2e, 0xd7, 0xea, 0xcc, 0x29, 0x8b, 0xfe, 0x35, 0xa1, 0x5c, 0x05, 0xa7, 0x6a, 0x1b, 0x0b, - 0xb5, 0x92, 0x56, 0x5e, 0x27, 0xe9, 0x9a, 0x5a, 0x51, 0xcf, 0xb1, 0xaf, 0x93, 0xe8, 0x7d, 0x05, - 0x98, 0x76, 0x27, 0x00, 0x35, 0x3a, 0x2f, 0x40, 0xdf, 0xca, 0xc2, 0xb4, 0x86, 0xbb, 0x56, 0x7b, - 0x8f, 0xcc, 0x11, 0xc6, 0x35, 0xf5, 0xf8, 0x8e, 0x2c, 0x7a, 0x7e, 0x3b, 0xc4, 0xec, 0x7c, 0x88, - 0xd1, 0xe8, 0x89, 0xa6, 0xbe, 0xa7, 0x1b, 0x6d, 0xfd, 0x3c, 0xeb, 0x6a, 0x26, 0xb5, 0x20, 0x41, - 0x99, 0x07, 0xc5, 0xba, 0x68, 0x62, 0xbb, 0xd6, 0xbc, 0xa8, 0x3a, 0xdb, 0xc5, 0x56, 0xcb, 0xc6, - 0xdd, 0x2e, 0x5b, 0xbd, 0xe8, 0xf3, 0x45, 0xb9, 0x01, 0x8e, 0x92, 0xd4, 0x50, 0x66, 0xea, 0x20, - 0xd3, 0x9b, 0xec, 0xe7, 0x2c, 0x9a, 0x97, 0xbc, 0x9c, 0xb9, 0x50, 0xce, 0x20, 0x39, 0x7c, 0x5c, - 0x22, 0xcf, 0x9f, 0xd2, 0xb9, 0x06, 0xa6, 0x4d, 0x7d, 0x07, 0xab, 0x0f, 0x74, 0x0c, 0x1b, 0x77, - 0x89, 0x63, 0x8c, 0xac, 0x85, 0x93, 0xd0, 0x07, 0x84, 0xce, 0x9b, 0x8b, 0x49, 0x2c, 0x99, 0xee, - 0x2f, 0x0f, 0xa1, 0xfa, 0x7d, 0xfa, 0x19, 0x19, 0xbd, 0x4f, 0x86, 0x19, 0xc6, 0x54, 0xd1, 0xbc, - 0x54, 0x6e, 0xa1, 0xab, 0x39, 0xe3, 0x57, 0x77, 0xd3, 0x3c, 0xe3, 0x97, 0xbc, 0xa0, 0x5f, 0x91, - 0x45, 0xdd, 0x9d, 0xfb, 0x54, 0x9c, 0x94, 0x11, 0xed, 0x38, 0xba, 0x69, 0xed, 0x32, 0x47, 0xd5, - 0x49, 0x8d, 0xbe, 0xa4, 0xb9, 0xa8, 0x87, 0x3e, 0x28, 0xe4, 0x4c, 0x2d, 0x58, 0x8d, 0x43, 0x02, - 0xf0, 0xe3, 0x32, 0xcc, 0x31, 0xae, 0x6a, 0xec, 0x9c, 0x8f, 0xd0, 0x81, 0xb7, 0x5f, 0x15, 0x36, - 0x04, 0xfb, 0xd4, 0x9f, 0x95, 0xf4, 0x88, 0x01, 0xf2, 0xc3, 0x42, 0xc1, 0xd1, 0x84, 0x2b, 0x72, - 0x48, 0x50, 0xbe, 0x2d, 0x0b, 0xd3, 0x1b, 0x5d, 0x6c, 0x33, 0xbf, 0x7d, 0xf4, 0x50, 0x16, 0xe4, - 0x65, 0xcc, 0x6d, 0xa4, 0x3e, 0x5f, 0xd8, 0xc3, 0x37, 0x5c, 0xd9, 0x10, 0x51, 0xd7, 0x46, 0x8a, - 0x80, 0xed, 0x7a, 0x98, 0xa3, 0x22, 0x2d, 0x3a, 0x8e, 0x6b, 0x24, 0x7a, 0xde, 0xb4, 0x3d, 0xa9, - 0xa3, 0xd8, 0x2a, 0x22, 0x65, 0xb9, 0x59, 0x4a, 0x2e, 0x4f, 0xab, 0x78, 0x93, 0xce, 0x67, 0xb3, - 0x5a, 0x4f, 0xaa, 0x72, 0x0b, 0x5c, 0x66, 0x75, 0x30, 0x3d, 0xbf, 0x12, 0xca, 0x9c, 0x23, 0x99, - 0xfb, 0x7d, 0x42, 0xdf, 0x12, 0xf2, 0xd5, 0x15, 0x97, 0x4e, 0x32, 0x5d, 0xe8, 0x8c, 0xc6, 0x24, - 0x39, 0x0e, 0x05, 0x37, 0x07, 0xd9, 0x7f, 0xd1, 0xd4, 0x5a, 0x75, 0xf5, 0xac, 0xda, 0x7f, 0x19, - 0x23, 0x87, 0x9e, 0x25, 0xc3, 0xd4, 0x82, 0x6d, 0xe9, 0xad, 0xa6, 0xde, 0x75, 0xd0, 0xf7, 0x24, - 0x98, 0x59, 0xd7, 0x2f, 0xb5, 0x2d, 0xbd, 0x45, 0xfc, 0xfb, 0x7b, 0xfa, 0x82, 0x0e, 0xfd, 0xe4, - 0xf5, 0x05, 0xec, 0x95, 0x3f, 0x18, 0xe8, 0x1f, 0xdd, 0xcb, 0x88, 0x5c, 0xa8, 0xe9, 0x6f, 0xf3, - 0x49, 0xfd, 0x82, 0x95, 0x7a, 0x7c, 0xcd, 0x87, 0x79, 0x8a, 0xb0, 0x28, 0xdf, 0x27, 0x16, 0x7e, - 0x54, 0x84, 0xe4, 0xe1, 0xec, 0xca, 0x3f, 0x7b, 0x12, 0xf2, 0x8b, 0x98, 0x58, 0x71, 0xff, 0x43, - 0x82, 0x89, 0x1a, 0x76, 0x88, 0x05, 0x77, 0x1b, 0xe7, 0x29, 0xdc, 0x22, 0x19, 0x02, 0x27, 0x76, - 0xef, 0xdd, 0x9d, 0xac, 0x87, 0xce, 0x5b, 0x93, 0xe7, 0x04, 0x1e, 0x89, 0xb4, 0xdc, 0x79, 0x56, - 0xe6, 0x81, 0x3c, 0x12, 0x63, 0x49, 0xa5, 0xef, 0x6b, 0xf5, 0x0e, 0x89, 0xb9, 0x56, 0x85, 0x7a, - 0xbd, 0x57, 0x85, 0xf5, 0x33, 0xd6, 0xdb, 0x8c, 0x31, 0x1f, 0xe3, 0x1c, 0xf5, 0x04, 0x98, 0xa0, - 0x32, 0xf7, 0xe6, 0xa3, 0xbd, 0x7e, 0x0a, 0x94, 0x04, 0x39, 0x7b, 0xed, 0xe5, 0x14, 0x74, 0x51, - 0x8b, 0x2e, 0x7c, 0x2c, 0x31, 0x08, 0x66, 0x2a, 0xd8, 0xb9, 0x68, 0xd9, 0x17, 0x6a, 0x8e, 0xee, - 0x60, 0xf4, 0xaf, 0x12, 0xc8, 0x35, 0xec, 0x84, 0xa3, 0x9f, 0x54, 0xe0, 0x18, 0xad, 0x10, 0xcb, - 0x48, 0xfa, 0x6f, 0x5a, 0x91, 0x6b, 0xfa, 0x0a, 0x21, 0x94, 0x4f, 0xdb, 0xff, 0x2b, 0xfa, 0xcd, - 0xbe, 0x41, 0x9f, 0xa4, 0x3e, 0x93, 0x06, 0x26, 0x99, 0x30, 0x83, 0xae, 0x82, 0x45, 0xe8, 0xe9, - 0xfb, 0x85, 0xcc, 0x6a, 0x31, 0x9a, 0x87, 0xd3, 0x15, 0x7c, 0xf8, 0x0a, 0xc8, 0x96, 0xb6, 0x75, - 0x07, 0xbd, 0x5d, 0x06, 0x28, 0xb6, 0x5a, 0x6b, 0xd4, 0x07, 0x3c, 0xec, 0x90, 0x76, 0x06, 0x66, - 0x9a, 0xdb, 0x7a, 0x70, 0xb7, 0x09, 0xed, 0x0f, 0xb8, 0x34, 0xe5, 0x89, 0x81, 0x33, 0x39, 0x95, - 0x2a, 0xea, 0x81, 0xc9, 0x2d, 0x83, 0xd1, 0xf6, 0x1d, 0xcd, 0xf9, 0x50, 0x98, 0xb1, 0x47, 0xe8, - 0xdc, 0xdf, 0xe7, 0x03, 0xf6, 0xa2, 0xe7, 0x70, 0x8c, 0xb4, 0x7f, 0xc0, 0x26, 0x48, 0x48, 0x78, - 0xd2, 0x5b, 0x2c, 0xa0, 0x47, 0x3c, 0x5f, 0x63, 0x09, 0x5d, 0xab, 0xa8, 0x2d, 0xc3, 0x13, 0x2d, - 0x0b, 0x98, 0x85, 0x9e, 0x97, 0x49, 0x06, 0x5f, 0xbc, 0xe0, 0xee, 0x86, 0x59, 0xdc, 0x32, 0x1c, - 0xec, 0xd5, 0x92, 0x09, 0x30, 0x0e, 0x62, 0xfe, 0x07, 0xf4, 0x4c, 0xe1, 0xa0, 0x6b, 0x44, 0xa0, - 0xfb, 0x6b, 0x14, 0xd1, 0xfe, 0xc4, 0xc2, 0xa8, 0x89, 0xd1, 0x4c, 0x1f, 0xac, 0x5f, 0x92, 0xe1, - 0x44, 0xdd, 0xda, 0xda, 0x6a, 0x63, 0x4f, 0x4c, 0x98, 0x7a, 0x67, 0x22, 0x7d, 0x94, 0x70, 0x91, - 0x9d, 0x20, 0xeb, 0x7e, 0xc3, 0x3f, 0x4a, 0xe6, 0xbe, 0xf0, 0x27, 0xa6, 0x62, 0x67, 0x51, 0x44, - 0x5c, 0x7d, 0xf9, 0x8c, 0x40, 0x41, 0x2c, 0xe0, 0xb3, 0x30, 0xd9, 0xf4, 0x81, 0xf8, 0xa2, 0x04, - 0xb3, 0xf4, 0xe6, 0x4a, 0x4f, 0x41, 0xef, 0x1d, 0x21, 0x00, 0xe8, 0x7b, 0x19, 0x51, 0x3f, 0x5b, - 0x22, 0x13, 0x8e, 0x93, 0x08, 0x11, 0x8b, 0x05, 0x55, 0x19, 0x48, 0x2e, 0x7d, 0xd1, 0xfe, 0x89, - 0x0c, 0xd3, 0xcb, 0xd8, 0x6b, 0x69, 0xdd, 0xc4, 0x3d, 0xd1, 0x19, 0x98, 0x21, 0xd7, 0xb7, 0x55, - 0xd9, 0x31, 0x49, 0xba, 0x6a, 0xc6, 0xa5, 0x29, 0xd7, 0xc1, 0xec, 0x79, 0xbc, 0x69, 0xd9, 0xb8, - 0xca, 0x9d, 0xa5, 0xe4, 0x13, 0x23, 0xc2, 0xd3, 0x71, 0x71, 0xd0, 0x16, 0x78, 0x6c, 0x6e, 0xda, - 0x2f, 0xcc, 0x50, 0x55, 0x22, 0xc6, 0x9c, 0x27, 0xc1, 0x24, 0x43, 0xde, 0x33, 0xd3, 0xe2, 0xfa, - 0x45, 0x3f, 0x2f, 0x7a, 0xad, 0x8f, 0xa8, 0xca, 0x21, 0xfa, 0xf8, 0x24, 0x4c, 0x8c, 0xe5, 0x7e, - 0xf7, 0x42, 0xa8, 0xfc, 0x85, 0x4b, 0xe5, 0x56, 0x17, 0xad, 0x25, 0xc3, 0xf4, 0x34, 0x80, 0xdf, - 0x38, 0xbc, 0xb0, 0x16, 0xa1, 0x14, 0x3e, 0x72, 0x7d, 0xec, 0x41, 0xbd, 0x5e, 0x71, 0x10, 0x76, - 0x46, 0x0c, 0x8c, 0xd8, 0x01, 0x3f, 0x11, 0x4e, 0xd2, 0x47, 0xe7, 0x53, 0x32, 0x9c, 0xf0, 0xcf, - 0x1f, 0xad, 0xea, 0xdd, 0xa0, 0xdd, 0x95, 0x92, 0x41, 0xc4, 0x1d, 0xf8, 0xf0, 0x1b, 0xcb, 0xb7, - 0x93, 0x8d, 0x19, 0x7d, 0x39, 0x19, 0x2d, 0x3a, 0xca, 0x4d, 0x70, 0xcc, 0xdc, 0xdd, 0xf1, 0xa5, - 0x4e, 0x5a, 0x3c, 0x6b, 0xe1, 0xfb, 0x3f, 0x24, 0x19, 0x99, 0x44, 0x98, 0x1f, 0xcb, 0x9c, 0x92, - 0x3b, 0xd2, 0xf5, 0xb8, 0x44, 0x30, 0xa2, 0x7f, 0xce, 0x24, 0xea, 0xdd, 0x06, 0x9f, 0xf9, 0x4a, - 0xd0, 0x4b, 0x1d, 0xe6, 0x81, 0xaf, 0x6f, 0x67, 0x41, 0x2e, 0x76, 0x0c, 0xf4, 0x41, 0x09, 0xa6, - 0x6b, 0x8e, 0x6e, 0x3b, 0x35, 0x6c, 0xef, 0x61, 0x3b, 0x3c, 0x33, 0x7f, 0x9d, 0xf0, 0x5c, 0xa3, - 0xd8, 0x31, 0xe6, 0x43, 0x44, 0x22, 0x24, 0xf3, 0x79, 0xa1, 0xf9, 0x41, 0x3c, 0xad, 0x64, 0x82, - 0xc1, 0x43, 0x4c, 0xf9, 0x4e, 0xc0, 0xb1, 0xf5, 0xaa, 0x56, 0xf7, 0x77, 0xe7, 0x37, 0x6a, 0xea, - 0x62, 0x41, 0x56, 0x10, 0x9c, 0x24, 0x7e, 0xd2, 0x9a, 0xff, 0xa1, 0x56, 0x2f, 0x6a, 0x75, 0x75, - 0xb1, 0x90, 0x45, 0xaf, 0x91, 0x00, 0x6a, 0x8e, 0xd5, 0xd9, 0x2f, 0x42, 0xf1, 0x43, 0xf7, 0xb4, - 0xda, 0x1e, 0x8d, 0x81, 0x67, 0x87, 0xe2, 0x16, 0x79, 0x62, 0x49, 0x25, 0x13, 0xe0, 0x3d, 0x43, - 0x08, 0xf0, 0x24, 0x28, 0x4c, 0x52, 0x95, 0x6a, 0xdd, 0x97, 0x92, 0x7c, 0x66, 0x02, 0x72, 0xea, - 0x4e, 0xc7, 0xb9, 0x74, 0xe6, 0xd1, 0x30, 0x5b, 0x73, 0x6c, 0xac, 0xef, 0x84, 0xf6, 0xa2, 0x1c, - 0xeb, 0x02, 0x36, 0xbd, 0xbd, 0x28, 0xf2, 0x72, 0xfb, 0x6d, 0x30, 0x61, 0x5a, 0x0d, 0x7d, 0xd7, - 0xd9, 0x56, 0xae, 0xde, 0x17, 0xc4, 0x81, 0x75, 0x37, 0x55, 0x16, 0x35, 0xeb, 0xab, 0x77, 0x90, - 0xdd, 0x88, 0xbc, 0x69, 0x15, 0x77, 0x9d, 0xed, 0x85, 0xab, 0x3e, 0xfe, 0x37, 0xa7, 0x33, 0x9f, - 0xfe, 0x9b, 0xd3, 0x99, 0xaf, 0xfc, 0xcd, 0xe9, 0xcc, 0xaf, 0x7e, 0xed, 0xf4, 0x91, 0x4f, 0x7f, - 0xed, 0xf4, 0x91, 0x2f, 0x7e, 0xed, 0xf4, 0x91, 0x9f, 0x96, 0x3a, 0xe7, 0xcf, 0xe7, 0x09, 0x95, - 0x27, 0xfc, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0xad, 0xda, 0x7f, 0xc2, 0x7a, 0x0a, 0x02, 0x00, + 0xe7, 0x6f, 0x67, 0x61, 0xd6, 0x63, 0xa2, 0x62, 0xb4, 0xf1, 0x03, 0xe1, 0xa5, 0x98, 0x17, 0x66, + 0x45, 0x8f, 0x83, 0xf5, 0xd6, 0x87, 0x90, 0x8a, 0x10, 0x69, 0x03, 0xa0, 0xa5, 0x39, 0x78, 0xcb, + 0xb4, 0x74, 0xbf, 0x3f, 0x7c, 0x72, 0x12, 0x6a, 0x25, 0xfa, 0xf7, 0x25, 0x35, 0x44, 0x47, 0xb9, + 0x13, 0xa6, 0xb1, 0x7f, 0xfe, 0xde, 0x5b, 0xaa, 0x89, 0xc5, 0x2b, 0x9c, 0x1f, 0xfd, 0xb9, 0xd0, + 0xa9, 0x33, 0x91, 0x6a, 0x26, 0xc3, 0xac, 0x39, 0x5c, 0x1b, 0xda, 0xa8, 0xae, 0x15, 0xd5, 0xfa, + 0x4a, 0x71, 0x75, 0xb5, 0x52, 0x5d, 0xf6, 0x03, 0xbf, 0x28, 0x30, 0xb7, 0x58, 0x3b, 0x57, 0x0d, + 0x45, 0xe6, 0xc9, 0xa2, 0x75, 0x98, 0xf4, 0xe4, 0xd5, 0xcf, 0x17, 0x33, 0x2c, 0x33, 0xe6, 0x8b, + 0x19, 0x4a, 0x72, 0x8d, 0x33, 0xbd, 0xe5, 0x3b, 0xe8, 0x90, 0x67, 0xf4, 0x47, 0x1a, 0xe4, 0xc8, + 0x9a, 0x3a, 0x7a, 0x1b, 0xd9, 0x06, 0xec, 0x76, 0xb4, 0x16, 0x46, 0x3b, 0x09, 0xac, 0x71, 0xef, + 0xea, 0x04, 0x69, 0xdf, 0xd5, 0x09, 0xe4, 0x91, 0x59, 0x7d, 0xc7, 0xfb, 0xad, 0xe3, 0xab, 0x34, + 0x0b, 0x7f, 0x40, 0x2b, 0x76, 0x77, 0x85, 0x2e, 0xff, 0x33, 0x36, 0x23, 0x54, 0x32, 0x9a, 0xa7, + 0x64, 0x96, 0xa8, 0xd8, 0x3e, 0x4c, 0x1c, 0x47, 0x63, 0xb8, 0xde, 0x3b, 0x0b, 0xb9, 0x7a, 0xb7, + 0xa3, 0x3b, 0xe8, 0x25, 0xd2, 0x48, 0x30, 0xa3, 0xd7, 0x5d, 0xc8, 0x03, 0xaf, 0xbb, 0x08, 0x76, + 0x5d, 0xb3, 0x02, 0xbb, 0xae, 0x0d, 0xfc, 0x80, 0xc3, 0xef, 0xba, 0xde, 0xc6, 0x82, 0xb7, 0xd1, + 0x3d, 0xdb, 0xc7, 0xf6, 0x11, 0x29, 0xa9, 0x56, 0x9f, 0xa8, 0x80, 0x67, 0x9e, 0xc8, 0x82, 0x93, + 0x01, 0xe4, 0x17, 0x6a, 0x8d, 0x46, 0x6d, 0xad, 0x70, 0x84, 0x44, 0xb5, 0xa9, 0xad, 0xd3, 0x50, + 0x31, 0x95, 0x6a, 0xb5, 0xac, 0x16, 0x24, 0x12, 0x2e, 0xad, 0xd2, 0x58, 0x2d, 0x17, 0x64, 0x3e, + 0xf6, 0x79, 0xac, 0xf9, 0xcd, 0x97, 0x9d, 0xa6, 0x7a, 0x89, 0x19, 0xe2, 0xd1, 0xfc, 0xa4, 0xaf, + 0x5c, 0xbf, 0x2a, 0x43, 0x6e, 0x0d, 0x5b, 0x5b, 0x18, 0xfd, 0x54, 0x82, 0x4d, 0xbe, 0x4d, 0xdd, + 0xb2, 0x69, 0x70, 0xb9, 0x60, 0x93, 0x2f, 0x9c, 0xa6, 0x5c, 0x07, 0xb3, 0x36, 0x6e, 0x99, 0x46, + 0xdb, 0xcb, 0x44, 0xfb, 0x23, 0x3e, 0x91, 0xbf, 0x77, 0x5e, 0x00, 0x32, 0xc2, 0xe8, 0x48, 0x76, + 0xea, 0x92, 0x00, 0xd3, 0xaf, 0xd4, 0xf4, 0x81, 0xf9, 0x96, 0xec, 0xfe, 0xd4, 0xbd, 0x84, 0x5e, + 0x2c, 0xbc, 0xfb, 0x7a, 0x13, 0xe4, 0x89, 0x9a, 0x7a, 0x63, 0x74, 0xff, 0xfe, 0x98, 0xe5, 0x51, + 0x16, 0xe0, 0x98, 0x8d, 0x3b, 0xb8, 0xe5, 0xe0, 0xb6, 0xdb, 0x74, 0xd5, 0x81, 0x9d, 0xc2, 0xfe, + 0xec, 0xe8, 0x4f, 0xc3, 0x00, 0xde, 0xc1, 0x03, 0x78, 0x7d, 0x1f, 0x51, 0xba, 0x15, 0x8a, 0xb6, + 0x95, 0xdd, 0x6a, 0xd4, 0x3b, 0xa6, 0xbf, 0x28, 0xee, 0xbd, 0xbb, 0xdf, 0xb6, 0x9d, 0x9d, 0x0e, + 0xf9, 0xc6, 0x0e, 0x18, 0x78, 0xef, 0xca, 0x3c, 0x4c, 0x68, 0xc6, 0x25, 0xf2, 0x29, 0x1b, 0x53, + 0x6b, 0x2f, 0x13, 0x7a, 0x85, 0x8f, 0xfc, 0x5d, 0x1c, 0xf2, 0x8f, 0x17, 0x63, 0x37, 0x7d, 0xe0, + 0x7f, 0x76, 0x02, 0x72, 0xeb, 0x9a, 0xed, 0x60, 0xf4, 0xff, 0xc8, 0xa2, 0xc8, 0x5f, 0x0f, 0x73, + 0x9b, 0x66, 0x6b, 0xd7, 0xc6, 0x6d, 0xbe, 0x51, 0xf6, 0xa4, 0x8e, 0x02, 0x73, 0xe5, 0x46, 0x28, + 0x78, 0x89, 0x8c, 0xac, 0xb7, 0x0d, 0xbf, 0x2f, 0x9d, 0x44, 0xd2, 0xb6, 0xd7, 0x35, 0xcb, 0xa9, + 0x6d, 0x92, 0x34, 0x3f, 0x92, 0x76, 0x38, 0x91, 0x83, 0x3e, 0x1f, 0x03, 0xfd, 0x44, 0x34, 0xf4, + 0x93, 0x02, 0xd0, 0x2b, 0x45, 0x98, 0xdc, 0xd4, 0x3b, 0x98, 0xfc, 0x30, 0x45, 0x7e, 0xe8, 0x37, + 0x26, 0x11, 0xd9, 0xfb, 0x63, 0xd2, 0x92, 0xde, 0xc1, 0xaa, 0xff, 0x9b, 0x37, 0x91, 0x81, 0x60, + 0x22, 0xb3, 0x4a, 0xfd, 0x69, 0x5d, 0xc3, 0xcb, 0xd0, 0x76, 0xb0, 0xb7, 0xf8, 0x66, 0xb0, 0xc3, + 0x2d, 0x6d, 0xcd, 0xd1, 0x08, 0x18, 0x33, 0x2a, 0x79, 0xe6, 0xfd, 0x42, 0xe4, 0x5e, 0xbf, 0x90, + 0xe7, 0xc8, 0xc9, 0x7a, 0x44, 0x8f, 0xd9, 0x88, 0x16, 0x75, 0xde, 0x03, 0x88, 0x5a, 0x8a, 0xfe, + 0xbb, 0x0b, 0x4c, 0x4b, 0xb3, 0xb0, 0xb3, 0x1e, 0xf6, 0xc4, 0xc8, 0xa9, 0x7c, 0x22, 0x71, 0xe5, + 0xb3, 0xeb, 0xda, 0x0e, 0x26, 0x85, 0x95, 0xdc, 0x6f, 0xcc, 0x45, 0x6b, 0x5f, 0x7a, 0xd0, 0xff, + 0xe6, 0x46, 0xdd, 0xff, 0xf6, 0xab, 0x63, 0xfa, 0xcd, 0xf0, 0xd5, 0x59, 0x90, 0x4b, 0xbb, 0xce, + 0xa3, 0xba, 0xfb, 0xfd, 0x9e, 0xb0, 0x9f, 0x0b, 0xeb, 0xcf, 0x22, 0x2f, 0x9a, 0x1f, 0x53, 0xef, + 0x9b, 0x50, 0x4b, 0xc4, 0xfc, 0x69, 0xa2, 0xea, 0x36, 0x86, 0x7b, 0x0d, 0x64, 0xdf, 0xc1, 0xf2, + 0xc1, 0xcc, 0xc1, 0x4d, 0x73, 0x44, 0xfb, 0xa7, 0x50, 0xcf, 0xe0, 0xbf, 0x7b, 0x1d, 0x4f, 0x96, + 0x8b, 0xd5, 0x47, 0xb6, 0xd7, 0x89, 0x28, 0x67, 0x54, 0xfa, 0x82, 0x5e, 0x2a, 0xec, 0x76, 0x4e, + 0xc5, 0x16, 0xeb, 0x4a, 0x98, 0xcc, 0xa6, 0x12, 0xbb, 0x4c, 0x34, 0xa6, 0xd8, 0xf4, 0x01, 0xfb, + 0x66, 0xd8, 0x55, 0xb0, 0x78, 0x60, 0xc4, 0xd0, 0x2b, 0x85, 0xb7, 0xa3, 0x68, 0xb5, 0x07, 0xac, + 0x17, 0x26, 0x93, 0xb7, 0xd8, 0x66, 0x55, 0x6c, 0xc1, 0xe9, 0x4b, 0xfc, 0x1b, 0x32, 0xe4, 0xe9, + 0x16, 0x24, 0x7a, 0x63, 0x26, 0xc1, 0x2d, 0xec, 0x0e, 0xef, 0x42, 0xe8, 0xbf, 0x27, 0x59, 0x73, + 0xe0, 0x5c, 0x0d, 0xb3, 0x89, 0x5c, 0x0d, 0xf9, 0x73, 0x9c, 0x02, 0xed, 0x88, 0xd6, 0x31, 0xe5, + 0xe9, 0x64, 0x92, 0x16, 0xd6, 0x97, 0xa1, 0xf4, 0xf1, 0xfe, 0xf9, 0x1c, 0xcc, 0xd0, 0xa2, 0xcf, + 0xe9, 0xed, 0x2d, 0xec, 0xa0, 0x77, 0x48, 0xdf, 0x3f, 0xa8, 0x2b, 0x55, 0x98, 0xb9, 0x48, 0xd8, + 0x5e, 0xd5, 0x2e, 0x99, 0xbb, 0x0e, 0x5b, 0xb9, 0xb8, 0x31, 0x76, 0xdd, 0x83, 0xd6, 0x73, 0x9e, + 0xfe, 0xa1, 0x72, 0xff, 0xbb, 0x32, 0xa6, 0x0b, 0xfe, 0xd4, 0x81, 0x2b, 0x4f, 0x8c, 0xac, 0x70, + 0x92, 0x72, 0x12, 0xf2, 0x7b, 0x3a, 0xbe, 0x58, 0x69, 0x33, 0xeb, 0x96, 0xbd, 0xa1, 0xdf, 0x17, + 0xde, 0xb7, 0x0d, 0xc3, 0xcd, 0x78, 0x49, 0x57, 0x0b, 0xc5, 0x76, 0x6f, 0x07, 0xb2, 0x35, 0x86, + 0x33, 0xc5, 0xfc, 0x65, 0x9d, 0xa5, 0x04, 0x8a, 0x18, 0x65, 0x38, 0xf3, 0xa1, 0x3c, 0x62, 0x4f, + 0xac, 0x50, 0x01, 0x8c, 0xf8, 0x1e, 0x4f, 0xb1, 0xf8, 0x12, 0x03, 0x8a, 0x4e, 0x5f, 0xf2, 0xaf, + 0x91, 0x61, 0xaa, 0x8e, 0x9d, 0x25, 0x1d, 0x77, 0xda, 0x36, 0xb2, 0x0e, 0x6e, 0x1a, 0xdd, 0x0c, + 0xf9, 0x4d, 0x42, 0x6c, 0xd0, 0xb9, 0x05, 0x96, 0x0d, 0xbd, 0x5a, 0x12, 0xdd, 0x11, 0x66, 0xab, + 0x6f, 0x1e, 0xb7, 0x23, 0x81, 0x49, 0xcc, 0xa3, 0x37, 0xbe, 0xe4, 0x31, 0x04, 0xb6, 0x95, 0x61, + 0x86, 0xdd, 0xee, 0x57, 0xec, 0xe8, 0x5b, 0x06, 0xda, 0x1d, 0x41, 0x0b, 0x51, 0x6e, 0x81, 0x9c, + 0xe6, 0x52, 0x63, 0x5b, 0xaf, 0xa8, 0x6f, 0xe7, 0x49, 0xca, 0x53, 0x69, 0xc6, 0x04, 0x61, 0x24, + 0x03, 0xc5, 0xf6, 0x78, 0x1e, 0x63, 0x18, 0xc9, 0x81, 0x85, 0xa7, 0x8f, 0xd8, 0x97, 0x64, 0x38, + 0xce, 0x18, 0x38, 0x8b, 0x2d, 0x47, 0x6f, 0x69, 0x1d, 0x8a, 0xdc, 0x43, 0x99, 0x51, 0x40, 0xb7, + 0x02, 0xb3, 0x7b, 0x61, 0xb2, 0x0c, 0xc2, 0x33, 0x7d, 0x21, 0xe4, 0x18, 0x50, 0xf9, 0x1f, 0x13, + 0x84, 0xe3, 0xe3, 0xa4, 0xca, 0xd1, 0x1c, 0x63, 0x38, 0x3e, 0x61, 0x26, 0xd2, 0x87, 0xf8, 0x45, + 0x2c, 0x34, 0x4f, 0xd0, 0x7d, 0x7e, 0x4e, 0x18, 0xdb, 0x0d, 0x98, 0x26, 0x58, 0xd2, 0x1f, 0xd9, + 0x32, 0x44, 0x8c, 0x12, 0xfb, 0xfd, 0x0e, 0xbb, 0x30, 0xcc, 0xff, 0x57, 0x0d, 0xd3, 0x41, 0xe7, + 0x00, 0x82, 0x4f, 0xe1, 0x4e, 0x3a, 0x13, 0xd5, 0x49, 0x4b, 0x62, 0x9d, 0xf4, 0x1b, 0x84, 0x83, + 0xa5, 0xf4, 0x67, 0xfb, 0xe0, 0xea, 0x21, 0x16, 0x26, 0x63, 0x70, 0xe9, 0xe9, 0xeb, 0xc5, 0x2b, + 0xb2, 0xbd, 0xd7, 0xb8, 0x7f, 0x78, 0x24, 0xf3, 0xa9, 0x70, 0x7f, 0x20, 0xf7, 0xf4, 0x07, 0x07, + 0xb0, 0xa4, 0x6f, 0x80, 0xa3, 0xb4, 0x88, 0x92, 0xcf, 0x56, 0x8e, 0x86, 0x82, 0xe8, 0x49, 0x46, + 0x1f, 0x19, 0x42, 0x09, 0x06, 0xdd, 0x31, 0x1f, 0xd7, 0xc9, 0x25, 0x33, 0x76, 0x93, 0x2a, 0xc8, + 0xe1, 0x5d, 0x4d, 0xff, 0xf5, 0x2c, 0xb5, 0x76, 0x37, 0xc8, 0x9d, 0x6e, 0xe8, 0x2f, 0xb2, 0xa3, + 0x18, 0x11, 0xee, 0x86, 0x2c, 0x71, 0x71, 0x97, 0x23, 0x97, 0x34, 0x82, 0x22, 0x83, 0x0b, 0xf7, + 0xf0, 0x03, 0xce, 0xca, 0x11, 0x95, 0xfc, 0xa9, 0xdc, 0x08, 0x47, 0xcf, 0x6b, 0xad, 0x0b, 0x5b, + 0x96, 0xb9, 0x4b, 0x6e, 0xbf, 0x32, 0xd9, 0x35, 0x5a, 0xe4, 0x3a, 0x42, 0xfe, 0x83, 0x72, 0xab, + 0x67, 0x3a, 0xe4, 0x06, 0x99, 0x0e, 0x2b, 0x47, 0x98, 0xf1, 0xa0, 0x3c, 0xd1, 0xef, 0x74, 0xf2, + 0xb1, 0x9d, 0xce, 0xca, 0x11, 0xaf, 0xdb, 0x51, 0x16, 0x61, 0xb2, 0xad, 0xef, 0x91, 0xad, 0x6a, + 0x32, 0xeb, 0x1a, 0x74, 0x74, 0x79, 0x51, 0xdf, 0xa3, 0x1b, 0xdb, 0x2b, 0x47, 0x54, 0xff, 0x4f, + 0x65, 0x19, 0xa6, 0xc8, 0xb6, 0x00, 0x21, 0x33, 0x99, 0xe8, 0x58, 0xf2, 0xca, 0x11, 0x35, 0xf8, + 0xd7, 0xb5, 0x3e, 0xb2, 0xe4, 0xec, 0xc7, 0x5d, 0xde, 0x76, 0x7b, 0x26, 0xd1, 0x76, 0xbb, 0x2b, + 0x0b, 0xba, 0xe1, 0x7e, 0x12, 0x72, 0x2d, 0x22, 0x61, 0x89, 0x49, 0x98, 0xbe, 0x2a, 0x77, 0x40, + 0x76, 0x47, 0xb3, 0xbc, 0xc9, 0xf3, 0xf5, 0x83, 0xe9, 0xae, 0x69, 0xd6, 0x05, 0x17, 0x41, 0xf7, + 0xaf, 0x85, 0x09, 0xc8, 0x11, 0xc1, 0xf9, 0x0f, 0xe8, 0xcd, 0x59, 0x6a, 0x86, 0x94, 0x4c, 0xc3, + 0x1d, 0xf6, 0x1b, 0xa6, 0x77, 0x40, 0xe6, 0xf7, 0x33, 0xa3, 0xb1, 0x20, 0xfb, 0xde, 0x7b, 0x2e, + 0x47, 0xde, 0x7b, 0xde, 0x73, 0x01, 0x6f, 0xb6, 0xf7, 0x02, 0xde, 0x60, 0xf9, 0x20, 0x37, 0xd8, + 0x51, 0xe5, 0x4f, 0x87, 0x30, 0x5d, 0x7a, 0x05, 0x11, 0x3d, 0x03, 0xef, 0xe8, 0x46, 0xa8, 0xce, + 0xde, 0x6b, 0xc2, 0x4e, 0x29, 0xa9, 0x51, 0x33, 0x80, 0xbd, 0xf4, 0xfb, 0xa6, 0xdf, 0xcc, 0xc2, + 0x29, 0x7a, 0xcd, 0xf3, 0x1e, 0x6e, 0x98, 0xfc, 0x7d, 0x93, 0xe8, 0x13, 0x23, 0x51, 0x9a, 0x3e, + 0x03, 0x8e, 0xdc, 0x77, 0xc0, 0xd9, 0x77, 0x48, 0x39, 0x3b, 0xe0, 0x90, 0x72, 0x2e, 0xd9, 0xca, + 0xe1, 0xfb, 0xc3, 0xfa, 0xb3, 0xce, 0xeb, 0xcf, 0xed, 0x11, 0x00, 0xf5, 0x93, 0xcb, 0x48, 0xec, + 0x9b, 0xb7, 0xf9, 0x9a, 0x52, 0xe7, 0x34, 0xe5, 0xae, 0xe1, 0x19, 0x49, 0x5f, 0x5b, 0x7e, 0x2f, + 0x0b, 0x97, 0x05, 0xcc, 0x54, 0xf1, 0x45, 0xa6, 0x28, 0x9f, 0x1d, 0x89, 0xa2, 0x24, 0x8f, 0x81, + 0x90, 0xb6, 0xc6, 0xfc, 0xb1, 0xf0, 0xd9, 0xa1, 0x5e, 0xa0, 0x7c, 0xd9, 0x44, 0x28, 0xcb, 0x49, + 0xc8, 0xd3, 0x1e, 0x86, 0x41, 0xc3, 0xde, 0x12, 0x76, 0x37, 0x62, 0x27, 0x8e, 0x44, 0x79, 0x1b, + 0x83, 0xfe, 0xb0, 0x75, 0x8d, 0xc6, 0xae, 0x65, 0x54, 0x0c, 0xc7, 0x44, 0x3f, 0x33, 0x12, 0xc5, + 0xf1, 0xbd, 0xe1, 0xe4, 0x61, 0xbc, 0xe1, 0x86, 0x5a, 0xe5, 0xf0, 0x6a, 0x70, 0x28, 0xab, 0x1c, + 0x11, 0x85, 0xa7, 0x8f, 0xdf, 0x5b, 0x65, 0x38, 0xc9, 0x26, 0x5b, 0x0b, 0xbc, 0x85, 0x88, 0xee, + 0x1b, 0x05, 0x90, 0xc7, 0x3d, 0x33, 0x89, 0xdd, 0x72, 0x46, 0x5e, 0xf8, 0x93, 0x52, 0xb1, 0xf7, + 0x3b, 0x70, 0xd3, 0xc1, 0x1e, 0x0e, 0x47, 0x82, 0x94, 0xd8, 0xb5, 0x0e, 0x09, 0xd8, 0x48, 0x1f, + 0xb3, 0x17, 0xc8, 0x90, 0x67, 0xd7, 0xfb, 0x6f, 0xa4, 0xe2, 0x30, 0xc1, 0x47, 0x79, 0x16, 0xd8, + 0x91, 0x4b, 0x7c, 0xc9, 0x7d, 0x7a, 0x7b, 0x71, 0x87, 0x74, 0x8b, 0xfd, 0xb7, 0x24, 0x98, 0xae, + 0x63, 0xa7, 0xa4, 0x59, 0x96, 0xae, 0x6d, 0x8d, 0xca, 0xe3, 0x5b, 0xd4, 0x7b, 0x18, 0x7d, 0x3b, + 0x23, 0x7a, 0x9e, 0xc6, 0x5f, 0x08, 0xf7, 0x58, 0x8d, 0x88, 0x25, 0xf8, 0x88, 0xd0, 0x99, 0x99, + 0x41, 0xd4, 0xc6, 0xe0, 0xb1, 0x2d, 0xc1, 0x84, 0x77, 0x16, 0xef, 0x66, 0xee, 0x7c, 0xe6, 0xb6, + 0xb3, 0xe3, 0x1d, 0x83, 0x21, 0xcf, 0xfb, 0xcf, 0x80, 0xa1, 0x97, 0x27, 0x74, 0x94, 0x8f, 0x3f, + 0x48, 0x98, 0xac, 0x8d, 0x25, 0x71, 0x87, 0x3f, 0xac, 0xa3, 0x83, 0xbf, 0x33, 0xc1, 0x96, 0x23, + 0x57, 0x35, 0x07, 0x3f, 0x80, 0x3e, 0x27, 0xc3, 0x44, 0x1d, 0x3b, 0xee, 0x78, 0xcb, 0x5d, 0x6e, + 0x3a, 0xac, 0x86, 0x2b, 0xa1, 0x15, 0x8f, 0x29, 0xb6, 0x86, 0x71, 0x0f, 0x4c, 0x75, 0x2d, 0xb3, + 0x85, 0x6d, 0x9b, 0xad, 0x5e, 0x84, 0x1d, 0xd5, 0xfa, 0x8d, 0xfe, 0x84, 0xb5, 0xf9, 0x75, 0xef, + 0x1f, 0x35, 0xf8, 0x3d, 0xa9, 0x19, 0x40, 0x29, 0xb1, 0x0a, 0x8e, 0xdb, 0x0c, 0x88, 0x2b, 0x3c, + 0x7d, 0xa0, 0x3f, 0x2d, 0xc3, 0x4c, 0x1d, 0x3b, 0xbe, 0x14, 0x13, 0x6c, 0x72, 0x44, 0xc3, 0xcb, + 0x41, 0x29, 0x1f, 0x0c, 0x4a, 0xf1, 0xab, 0x01, 0x79, 0x69, 0xfa, 0xc4, 0xc6, 0x78, 0x35, 0xa0, + 0x18, 0x07, 0x63, 0x38, 0xbe, 0xf6, 0x58, 0x98, 0x22, 0xbc, 0x90, 0x06, 0xfb, 0x8b, 0xd9, 0xa0, + 0xf1, 0x7e, 0x3e, 0xa5, 0xc6, 0x7b, 0x27, 0xe4, 0x76, 0x34, 0xeb, 0x82, 0x4d, 0x1a, 0xee, 0xb4, + 0x88, 0xd9, 0xbe, 0xe6, 0x66, 0x57, 0xe9, 0x5f, 0xfd, 0xfd, 0x34, 0x73, 0xc9, 0xfc, 0x34, 0x1f, + 0x91, 0x12, 0x8d, 0x84, 0x74, 0xee, 0x30, 0xc2, 0x26, 0x9f, 0x60, 0xdc, 0x8c, 0x29, 0x3b, 0x7d, + 0xe5, 0x78, 0x48, 0x86, 0x49, 0x77, 0xdc, 0x26, 0xf6, 0xf8, 0xb9, 0x83, 0xab, 0x43, 0x7f, 0x43, + 0x3f, 0x61, 0x0f, 0xec, 0x49, 0x64, 0x74, 0xe6, 0x7d, 0x82, 0x1e, 0x38, 0xae, 0xf0, 0xf4, 0xf1, + 0x78, 0x3b, 0xc5, 0x83, 0xb4, 0x07, 0xf4, 0x3a, 0x19, 0xe4, 0x65, 0xec, 0x8c, 0xdb, 0x8a, 0x7c, + 0x8b, 0x70, 0x88, 0x23, 0x4e, 0x60, 0x84, 0xe7, 0xf9, 0x65, 0x3c, 0x9a, 0x06, 0x24, 0x16, 0xdb, + 0x48, 0x88, 0x81, 0xf4, 0x51, 0x7b, 0x37, 0x45, 0x8d, 0x6e, 0x2e, 0xfc, 0xf4, 0x08, 0x7a, 0xd5, + 0xf1, 0x2e, 0x7c, 0x78, 0x02, 0x24, 0x34, 0x0e, 0xab, 0xbd, 0xf5, 0x2b, 0x7c, 0x2c, 0x57, 0xf1, + 0x81, 0xdb, 0xd8, 0xb7, 0x71, 0xeb, 0x02, 0x6e, 0xa3, 0x9f, 0x38, 0x38, 0x74, 0xa7, 0x60, 0xa2, + 0x45, 0xa9, 0x11, 0xf0, 0x26, 0x55, 0xef, 0x35, 0xc1, 0xbd, 0xd2, 0x7c, 0x47, 0x44, 0x7f, 0x1f, + 0xe3, 0xbd, 0xd2, 0x02, 0xc5, 0x8f, 0xc1, 0x6c, 0xa1, 0xb3, 0x8c, 0x4a, 0xcb, 0x34, 0xd0, 0x7f, + 0x39, 0x38, 0x2c, 0x57, 0xc1, 0x94, 0xde, 0x32, 0x0d, 0x12, 0x86, 0xc2, 0x3b, 0x04, 0xe4, 0x27, + 0x78, 0x5f, 0xcb, 0x3b, 0xe6, 0xfd, 0x3a, 0xdb, 0x35, 0x0f, 0x12, 0x86, 0x35, 0x26, 0x5c, 0xd6, + 0x0f, 0xcb, 0x98, 0xe8, 0x53, 0x76, 0xfa, 0x90, 0x7d, 0x24, 0xf0, 0x6e, 0xa3, 0x5d, 0xe1, 0xa3, + 0x62, 0x15, 0x78, 0x98, 0xe1, 0x2c, 0x5c, 0x8b, 0x43, 0x19, 0xce, 0x62, 0x18, 0x18, 0xc3, 0x8d, + 0x15, 0x01, 0x8e, 0xa9, 0xaf, 0x01, 0x1f, 0x00, 0x9d, 0xd1, 0x99, 0x87, 0x43, 0xa2, 0x73, 0x38, + 0x26, 0xe2, 0xfb, 0x58, 0x88, 0x4c, 0x66, 0xf1, 0xa0, 0xff, 0x3a, 0x0a, 0x70, 0x6e, 0x1f, 0xc6, + 0x5f, 0x81, 0x7a, 0x2b, 0x24, 0xb8, 0x11, 0x7b, 0x9f, 0x04, 0x5d, 0x2a, 0x63, 0xbc, 0x2b, 0x5e, + 0xa4, 0xfc, 0xf4, 0x01, 0x7c, 0x9e, 0x0c, 0x73, 0xc4, 0x47, 0xa0, 0x83, 0x35, 0x8b, 0x76, 0x94, + 0x23, 0x71, 0x94, 0x7f, 0xbb, 0x70, 0x80, 0x1f, 0x5e, 0x0e, 0x01, 0x1f, 0x23, 0x81, 0x42, 0x2c, + 0xba, 0x8f, 0x20, 0x0b, 0x63, 0xd9, 0x46, 0x29, 0xf8, 0x2c, 0x30, 0x15, 0x1f, 0x0d, 0x1e, 0x09, + 0x3d, 0x72, 0x79, 0x61, 0x78, 0x8d, 0x6d, 0xcc, 0x1e, 0xb9, 0x22, 0x4c, 0xa4, 0x8f, 0xc9, 0xeb, + 0x6e, 0x61, 0x0b, 0xce, 0x0d, 0x72, 0x61, 0xfc, 0x2b, 0xb3, 0xfe, 0x89, 0xb6, 0x4f, 0x8f, 0xc4, + 0x03, 0xf3, 0x00, 0x01, 0xf1, 0x15, 0xc8, 0x5a, 0xe6, 0x45, 0xba, 0xb4, 0x35, 0xab, 0x92, 0x67, + 0x7a, 0x3d, 0x65, 0x67, 0x77, 0xc7, 0xa0, 0x27, 0x43, 0x67, 0x55, 0xef, 0x55, 0xb9, 0x0e, 0x66, + 0x2f, 0xea, 0xce, 0xf6, 0x0a, 0xd6, 0xda, 0xd8, 0x52, 0xcd, 0x8b, 0xc4, 0x63, 0x6e, 0x52, 0xe5, + 0x13, 0x79, 0xff, 0x15, 0x01, 0xfb, 0x92, 0xdc, 0x22, 0x3f, 0x96, 0xe3, 0x6f, 0x49, 0x2c, 0xcf, + 0x68, 0xae, 0xd2, 0x57, 0x98, 0xf7, 0xc8, 0x30, 0xa5, 0x9a, 0x17, 0x99, 0x92, 0xfc, 0x5f, 0x87, + 0xab, 0x23, 0x89, 0x27, 0x7a, 0x44, 0x72, 0x3e, 0xfb, 0x63, 0x9f, 0xe8, 0xc5, 0x16, 0x3f, 0x96, + 0x93, 0x4b, 0x33, 0xaa, 0x79, 0xb1, 0x8e, 0x1d, 0xda, 0x22, 0x50, 0x73, 0x44, 0x4e, 0xd6, 0xba, + 0x4d, 0x09, 0xb2, 0x79, 0xb8, 0xff, 0x9e, 0x74, 0x17, 0xc1, 0x17, 0x90, 0xcf, 0xe2, 0xb8, 0x77, + 0x11, 0x06, 0x72, 0x30, 0x86, 0x18, 0x29, 0x32, 0x4c, 0xab, 0xe6, 0x45, 0x77, 0x68, 0x58, 0xd2, + 0x3b, 0x9d, 0xd1, 0x8c, 0x90, 0x49, 0x8d, 0x7f, 0x4f, 0x0c, 0x1e, 0x17, 0x63, 0x37, 0xfe, 0x07, + 0x30, 0x90, 0x3e, 0x0c, 0xcf, 0xa1, 0x8d, 0xc5, 0x1b, 0xa1, 0x8d, 0xd1, 0xe0, 0x30, 0x6c, 0x83, + 0xf0, 0xd9, 0x38, 0xb4, 0x06, 0x11, 0xc5, 0xc1, 0x58, 0x76, 0x4e, 0xe6, 0x4a, 0x64, 0x98, 0x1f, + 0x6d, 0x9b, 0x78, 0x67, 0x32, 0xd7, 0x44, 0x36, 0xec, 0x72, 0x8c, 0x8c, 0x04, 0x8d, 0x04, 0x2e, + 0x88, 0x02, 0x3c, 0xa4, 0x8f, 0xc7, 0x07, 0x65, 0x98, 0xa1, 0x2c, 0x3c, 0x4a, 0xac, 0x80, 0xa1, + 0x1a, 0x55, 0xb8, 0x06, 0x87, 0xd3, 0xa8, 0x62, 0x38, 0x18, 0xcb, 0xad, 0xa0, 0xae, 0x1d, 0x37, + 0xc4, 0xf1, 0xf1, 0x28, 0x04, 0x87, 0x36, 0xc6, 0x46, 0x78, 0x84, 0x7c, 0x18, 0x63, 0xec, 0x90, + 0x8e, 0x91, 0x3f, 0xc7, 0x6f, 0x45, 0xa3, 0xc4, 0xe0, 0x00, 0x4d, 0x61, 0x84, 0x30, 0x0c, 0xd9, + 0x14, 0x0e, 0x09, 0x89, 0x2f, 0xcb, 0x00, 0x94, 0x81, 0x35, 0x73, 0x8f, 0x5c, 0xe6, 0x33, 0x82, + 0xee, 0xac, 0xd7, 0xad, 0x5e, 0x1e, 0xe0, 0x56, 0x9f, 0x30, 0x84, 0x4b, 0xd2, 0x95, 0xc0, 0x90, + 0x94, 0xdd, 0x4a, 0x8e, 0x7d, 0x25, 0x30, 0xbe, 0xfc, 0xf4, 0x31, 0xfe, 0x22, 0xb5, 0xe6, 0x82, + 0x03, 0xa6, 0xbf, 0x3e, 0x12, 0x94, 0x43, 0xb3, 0x7f, 0x99, 0x9f, 0xfd, 0x1f, 0x00, 0xdb, 0x61, + 0x6d, 0xc4, 0x41, 0x07, 0x47, 0xd3, 0xb7, 0x11, 0x0f, 0xef, 0x80, 0xe8, 0x4f, 0x67, 0xe1, 0x28, + 0xeb, 0x44, 0xbe, 0x1f, 0x20, 0x4e, 0x78, 0x0e, 0x8f, 0xeb, 0x24, 0x07, 0xa0, 0x3c, 0xaa, 0x05, + 0xa9, 0x24, 0x4b, 0x99, 0x02, 0xec, 0x8d, 0x65, 0x75, 0x23, 0x5f, 0x7e, 0xa0, 0xab, 0x19, 0x6d, + 0xf1, 0x70, 0xbf, 0x03, 0x80, 0xf7, 0xd6, 0x1a, 0x65, 0x7e, 0xad, 0xb1, 0xcf, 0xca, 0x64, 0xe2, + 0x9d, 0x6b, 0x22, 0x32, 0xca, 0xee, 0xd8, 0x77, 0xae, 0xa3, 0xcb, 0x4e, 0x1f, 0xa5, 0x77, 0xca, + 0x90, 0xad, 0x9b, 0x96, 0x83, 0x9e, 0x9b, 0xa4, 0x75, 0x52, 0xc9, 0x07, 0x20, 0x79, 0xef, 0x4a, + 0x89, 0xbb, 0xa5, 0xf9, 0xe6, 0xf8, 0xa3, 0xce, 0x9a, 0xa3, 0x11, 0xaf, 0x6e, 0xb7, 0xfc, 0xd0, + 0x75, 0xcd, 0x49, 0xe3, 0xe9, 0x50, 0xf9, 0xd5, 0xa3, 0x0f, 0x60, 0xa4, 0x16, 0x4f, 0x27, 0xb2, + 0xe4, 0xf4, 0x71, 0x7b, 0xf8, 0x28, 0xf3, 0x6d, 0x5d, 0xd2, 0x3b, 0x18, 0x3d, 0x97, 0xba, 0x8c, + 0x54, 0xb5, 0x1d, 0x2c, 0x7e, 0x24, 0x26, 0xd6, 0xb5, 0x95, 0xc4, 0x97, 0x95, 0x83, 0xf8, 0xb2, + 0x49, 0x1b, 0x14, 0x3d, 0x80, 0x4e, 0x59, 0x1a, 0x77, 0x83, 0x8a, 0x29, 0x7b, 0x2c, 0x71, 0x3a, + 0x8f, 0xd5, 0xb1, 0x43, 0x8d, 0xca, 0x9a, 0x77, 0x03, 0xcb, 0x4f, 0x8e, 0x24, 0x62, 0xa7, 0x7f, + 0xc1, 0x8b, 0xdc, 0x73, 0xc1, 0xcb, 0x7b, 0xc2, 0xe0, 0xac, 0xf1, 0xe0, 0xfc, 0x68, 0xb4, 0x80, + 0x78, 0x26, 0x47, 0x02, 0xd3, 0x5b, 0x7c, 0x98, 0xd6, 0x39, 0x98, 0xee, 0x18, 0x92, 0x8b, 0xf4, + 0x01, 0xfb, 0xa5, 0x1c, 0x1c, 0xa5, 0x93, 0xfe, 0xa2, 0xd1, 0x66, 0x11, 0x56, 0xdf, 0x28, 0x1d, + 0xf2, 0x66, 0xdb, 0xfe, 0x10, 0xac, 0x5c, 0x2c, 0xe7, 0x5c, 0xef, 0xed, 0xf8, 0x0b, 0x34, 0x9c, + 0xab, 0xdb, 0x89, 0x92, 0x9d, 0x36, 0xf1, 0x1b, 0xf2, 0xfd, 0xff, 0xf8, 0xbb, 0x8c, 0x26, 0xc4, + 0xef, 0x32, 0xfa, 0x93, 0x64, 0xeb, 0x76, 0xa4, 0xe8, 0x1e, 0x81, 0xa7, 0x6c, 0x3b, 0x25, 0x58, + 0xd1, 0x13, 0xe0, 0xee, 0x07, 0xc3, 0x9d, 0x2c, 0x88, 0x20, 0x32, 0xa4, 0x3b, 0x19, 0x21, 0x70, + 0x98, 0xee, 0x64, 0x83, 0x18, 0x18, 0xc3, 0xad, 0xf6, 0x39, 0xb6, 0x9b, 0x4f, 0xda, 0x0d, 0xfa, + 0x2b, 0x29, 0xf5, 0x51, 0xfa, 0x3b, 0x99, 0x44, 0xfe, 0xcf, 0x84, 0xaf, 0xf8, 0x61, 0x3a, 0x89, + 0x47, 0x73, 0x1c, 0xb9, 0x31, 0xac, 0x1b, 0x49, 0xc4, 0x17, 0xfd, 0x9c, 0xde, 0x76, 0xb6, 0x47, + 0x74, 0xa2, 0xe3, 0xa2, 0x4b, 0xcb, 0xbb, 0x1e, 0x99, 0xbc, 0xa0, 0x7f, 0xcb, 0x24, 0x0a, 0x21, + 0xe5, 0x8b, 0x84, 0xb0, 0x15, 0x21, 0xe2, 0x04, 0x81, 0x9f, 0x62, 0xe9, 0x8d, 0x51, 0xa3, 0xcf, + 0xea, 0x6d, 0x6c, 0x3e, 0x0a, 0x35, 0x9a, 0xf0, 0x35, 0x3a, 0x8d, 0x8e, 0x23, 0xf7, 0x03, 0xaa, + 0xd1, 0xbe, 0x48, 0x46, 0xa4, 0xd1, 0xb1, 0xf4, 0xd2, 0x97, 0xf1, 0xcb, 0x67, 0xd8, 0x44, 0x6a, + 0x55, 0x37, 0x2e, 0xa0, 0x7f, 0xce, 0x7b, 0x17, 0x33, 0x9f, 0xd3, 0x9d, 0x6d, 0x16, 0x0b, 0xe6, + 0xf7, 0x84, 0xef, 0x46, 0x19, 0x22, 0xde, 0x0b, 0x1f, 0x4e, 0x2a, 0xb7, 0x2f, 0x9c, 0x54, 0x11, + 0x66, 0x75, 0xc3, 0xc1, 0x96, 0xa1, 0x75, 0x96, 0x3a, 0xda, 0x96, 0x7d, 0x6a, 0xa2, 0xef, 0xe5, + 0x75, 0x95, 0x50, 0x1e, 0x95, 0xff, 0x23, 0x7c, 0x7d, 0xe5, 0x24, 0x7f, 0x7d, 0x65, 0x44, 0xf4, + 0xab, 0xa9, 0xe8, 0xe8, 0x57, 0x7e, 0x74, 0x2b, 0x18, 0x1c, 0x1c, 0x5b, 0xd4, 0x36, 0x4e, 0x18, + 0xee, 0xef, 0x66, 0xc1, 0x28, 0x6c, 0x7e, 0xe8, 0xc7, 0x57, 0xc9, 0x89, 0x56, 0xf7, 0x5c, 0x45, + 0x98, 0xef, 0x55, 0x82, 0xc4, 0x16, 0x6a, 0xb8, 0xf2, 0x72, 0x4f, 0xe5, 0x7d, 0x93, 0x27, 0x2b, + 0x60, 0xf2, 0x84, 0x95, 0x2a, 0x27, 0xa6, 0x54, 0x49, 0x16, 0x0b, 0x45, 0x6a, 0x3b, 0x86, 0xd3, + 0x48, 0x39, 0x38, 0xe6, 0x45, 0xbb, 0xed, 0x76, 0xb1, 0x66, 0x69, 0x46, 0x0b, 0xa3, 0x8f, 0x48, + 0xa3, 0x30, 0x7b, 0x97, 0x60, 0x52, 0x6f, 0x99, 0x46, 0x5d, 0x7f, 0xa6, 0x77, 0xb9, 0x5c, 0x7c, + 0x90, 0x75, 0x22, 0x91, 0x0a, 0xfb, 0x43, 0xf5, 0xff, 0x55, 0x2a, 0x30, 0xd5, 0xd2, 0xac, 0x36, + 0x0d, 0xc2, 0x97, 0xeb, 0xb9, 0xc8, 0x29, 0x92, 0x50, 0xc9, 0xfb, 0x45, 0x0d, 0xfe, 0x56, 0x6a, + 0xbc, 0x10, 0xf3, 0x3d, 0xd1, 0x3c, 0x22, 0x89, 0x2d, 0x06, 0x3f, 0x71, 0x32, 0x77, 0xa5, 0x63, + 0xe1, 0x0e, 0xb9, 0x83, 0x9e, 0xf6, 0x10, 0x53, 0x6a, 0x90, 0x90, 0x74, 0x79, 0x80, 0x14, 0xb5, + 0x0f, 0x8d, 0x71, 0x2f, 0x0f, 0x08, 0x71, 0x91, 0xbe, 0x66, 0xbe, 0x2d, 0x0f, 0xb3, 0xb4, 0x57, + 0x63, 0xe2, 0x44, 0xcf, 0x23, 0x57, 0x48, 0x3b, 0xf7, 0xe2, 0x4b, 0xa8, 0x7e, 0xf0, 0x31, 0xb9, + 0x00, 0xf2, 0x05, 0x3f, 0xe0, 0xa0, 0xfb, 0x98, 0x74, 0xdf, 0xde, 0xe3, 0x6b, 0x9e, 0xf2, 0x34, + 0xee, 0x7d, 0xfb, 0xf8, 0xe2, 0xd3, 0xc7, 0xe7, 0x97, 0x65, 0x90, 0x8b, 0xed, 0x36, 0x6a, 0x1d, + 0x1c, 0x8a, 0x6b, 0x60, 0xda, 0x6b, 0x33, 0x41, 0x0c, 0xc8, 0x70, 0x52, 0xd2, 0x45, 0x50, 0x5f, + 0x36, 0xc5, 0xf6, 0xd8, 0x77, 0x15, 0x62, 0xca, 0x4e, 0x1f, 0x94, 0x5f, 0x9f, 0x60, 0x8d, 0x66, + 0xc1, 0x34, 0x2f, 0x90, 0xa3, 0x32, 0xcf, 0x95, 0x21, 0xb7, 0x84, 0x9d, 0xd6, 0xf6, 0x88, 0xda, + 0xcc, 0xae, 0xd5, 0xf1, 0xda, 0xcc, 0xbe, 0xfb, 0xf0, 0x07, 0xdb, 0xb0, 0x1e, 0x5b, 0xf3, 0x84, + 0xa5, 0x71, 0x47, 0x77, 0x8e, 0x2d, 0x3d, 0x7d, 0x70, 0xfe, 0x4d, 0x86, 0x39, 0x7f, 0x85, 0x8b, + 0x62, 0xf2, 0x4b, 0x99, 0x47, 0xdb, 0x7a, 0x27, 0xfa, 0x6c, 0xb2, 0x10, 0x69, 0xbe, 0x4c, 0xf9, + 0x9a, 0xa5, 0xbc, 0xb0, 0x98, 0x20, 0x78, 0x9a, 0x18, 0x83, 0x63, 0x98, 0xc1, 0xcb, 0x30, 0x49, + 0x18, 0x5a, 0xd4, 0xf7, 0x88, 0xeb, 0x20, 0xb7, 0xd0, 0xf8, 0xac, 0x91, 0x2c, 0x34, 0xde, 0xc1, + 0x2f, 0x34, 0x0a, 0x46, 0x3c, 0xf6, 0xd6, 0x19, 0x13, 0xfa, 0xd2, 0xb8, 0xff, 0x8f, 0x7c, 0x99, + 0x31, 0x81, 0x2f, 0xcd, 0x80, 0xf2, 0xd3, 0x47, 0xf4, 0x55, 0xff, 0x89, 0x75, 0xb6, 0xde, 0x86, + 0x2a, 0xfa, 0x1f, 0xc7, 0x20, 0x7b, 0xd6, 0x7d, 0xf8, 0x5f, 0xc1, 0x8d, 0x58, 0x2f, 0x1e, 0x41, + 0x70, 0x86, 0xa7, 0x43, 0xd6, 0xa5, 0xcf, 0xa6, 0x2d, 0x37, 0x8a, 0xed, 0xee, 0xba, 0x8c, 0xa8, + 0xe4, 0x3f, 0xe5, 0x24, 0xe4, 0x6d, 0x73, 0xd7, 0x6a, 0xb9, 0xe6, 0xb3, 0xab, 0x31, 0xec, 0x2d, + 0x69, 0x50, 0x52, 0x8e, 0xf4, 0xfc, 0xe8, 0x5c, 0x46, 0x43, 0x17, 0x24, 0xc9, 0xdc, 0x05, 0x49, + 0x09, 0xf6, 0x0f, 0x04, 0x78, 0x4b, 0x5f, 0x23, 0xfe, 0x8a, 0xdc, 0x15, 0xd8, 0x1e, 0x15, 0xec, + 0x11, 0x62, 0x39, 0xa8, 0x3a, 0x24, 0x75, 0xf8, 0xe6, 0x45, 0xeb, 0xc7, 0x81, 0x1f, 0xab, 0xc3, + 0xb7, 0x00, 0x0f, 0x63, 0x39, 0xa5, 0x9e, 0x67, 0x4e, 0xaa, 0xf7, 0x8d, 0x12, 0xdd, 0x2c, 0xa7, + 0xf4, 0x07, 0x42, 0x67, 0x84, 0xce, 0xab, 0x43, 0xa3, 0x73, 0x48, 0xee, 0xab, 0x7f, 0x20, 0x93, + 0x48, 0x98, 0x9e, 0x91, 0x23, 0x7e, 0xd1, 0x51, 0x62, 0x88, 0xdc, 0x31, 0x98, 0x8b, 0x03, 0x3d, + 0x3b, 0x7c, 0x68, 0x70, 0x5e, 0x74, 0x21, 0xfe, 0xc7, 0x1d, 0x1a, 0x5c, 0x94, 0x91, 0xf4, 0x81, + 0x7c, 0x2d, 0xbd, 0x58, 0xac, 0xd8, 0x72, 0xf4, 0xbd, 0x11, 0xb7, 0x34, 0x7e, 0x78, 0x49, 0x18, + 0x0d, 0x78, 0x9f, 0x84, 0x28, 0x87, 0xe3, 0x8e, 0x06, 0x2c, 0xc6, 0x46, 0xfa, 0x30, 0xfd, 0x6d, + 0xde, 0x95, 0x1e, 0x5b, 0x9b, 0x79, 0x1d, 0x5b, 0x0d, 0xc0, 0x07, 0x47, 0xeb, 0x0c, 0xcc, 0x84, + 0xa6, 0xfe, 0xde, 0x85, 0x35, 0x5c, 0x5a, 0xd2, 0x83, 0xee, 0xbe, 0xc8, 0x46, 0xbe, 0x30, 0x90, + 0x60, 0xc1, 0x57, 0x84, 0x89, 0xb1, 0xdc, 0x07, 0xe7, 0x8d, 0x61, 0x63, 0xc2, 0xea, 0xf7, 0xc2, + 0x58, 0xd5, 0x78, 0xac, 0x6e, 0x13, 0x11, 0x93, 0xd8, 0x98, 0x26, 0x34, 0x6f, 0x7c, 0xab, 0x0f, + 0x97, 0xca, 0xc1, 0xf5, 0xf4, 0xa1, 0xf9, 0x48, 0x1f, 0xb1, 0x97, 0xd0, 0xee, 0xb0, 0x4e, 0x4d, + 0xf6, 0xd1, 0x74, 0x87, 0x6c, 0x36, 0x20, 0x73, 0xb3, 0x81, 0x84, 0xfe, 0xf6, 0x81, 0x1b, 0xa9, + 0xc7, 0xdc, 0x20, 0x88, 0xb2, 0x23, 0xf6, 0xb7, 0x1f, 0xc8, 0x41, 0xfa, 0xe0, 0xfc, 0xa3, 0x0c, + 0xb0, 0x6c, 0x99, 0xbb, 0xdd, 0x9a, 0xd5, 0xc6, 0x16, 0xfa, 0x9b, 0x60, 0x02, 0xf0, 0xc2, 0x11, + 0x4c, 0x00, 0xd6, 0x01, 0xb6, 0x7c, 0xe2, 0x4c, 0xc3, 0x6f, 0x11, 0x33, 0xf7, 0x03, 0xa6, 0xd4, + 0x10, 0x0d, 0xfe, 0xca, 0xd9, 0x1f, 0xe3, 0x31, 0x8e, 0xeb, 0xb3, 0x02, 0x72, 0xa3, 0x9c, 0x00, + 0xbc, 0xdd, 0xc7, 0xba, 0xc1, 0x61, 0x7d, 0xf7, 0x01, 0x38, 0x49, 0x1f, 0xf3, 0x7f, 0x9a, 0x80, + 0x69, 0xba, 0x5d, 0x47, 0x65, 0xfa, 0xf7, 0x01, 0xe8, 0xbf, 0x3e, 0x02, 0xd0, 0x37, 0x60, 0xc6, + 0x0c, 0xa8, 0xd3, 0x3e, 0x35, 0xbc, 0x00, 0x13, 0x0b, 0x7b, 0x88, 0x2f, 0x95, 0x23, 0x83, 0x3e, + 0x14, 0x46, 0x5e, 0xe5, 0x91, 0xbf, 0x23, 0x46, 0xde, 0x21, 0x8a, 0xa3, 0x84, 0xfe, 0x1d, 0x3e, + 0xf4, 0x1b, 0x1c, 0xf4, 0xc5, 0x83, 0xb0, 0x32, 0x86, 0x70, 0xfb, 0x32, 0x64, 0xc9, 0xe9, 0xb8, + 0xdf, 0x4c, 0x71, 0x7e, 0x7f, 0x0a, 0x26, 0x48, 0x93, 0xf5, 0xe7, 0x1d, 0xde, 0xab, 0xfb, 0x45, + 0xdb, 0x74, 0xb0, 0xe5, 0x7b, 0x2c, 0x78, 0xaf, 0x2e, 0x0f, 0x9e, 0x57, 0xb2, 0x7d, 0x2a, 0x4f, + 0x37, 0x22, 0xfd, 0x84, 0xa1, 0x27, 0x25, 0x61, 0x89, 0x8f, 0xec, 0xbc, 0xdc, 0x30, 0x93, 0x92, + 0x01, 0x8c, 0xa4, 0x0f, 0xfc, 0x5f, 0x64, 0xe1, 0x14, 0x5d, 0x55, 0x5a, 0xb2, 0xcc, 0x9d, 0x9e, + 0xdb, 0xad, 0xf4, 0x83, 0xeb, 0xc2, 0xf5, 0x30, 0xe7, 0x70, 0xfe, 0xd8, 0x4c, 0x27, 0x7a, 0x52, + 0xd1, 0x9f, 0x86, 0x7d, 0x2a, 0x9e, 0xc1, 0x23, 0xb9, 0x10, 0x23, 0xc0, 0x28, 0xde, 0x13, 0x2f, + 0xd4, 0x0b, 0x32, 0x1a, 0x5a, 0xa4, 0x92, 0x87, 0x5a, 0xb3, 0xf4, 0x75, 0x2a, 0x27, 0xa2, 0x53, + 0xef, 0xf5, 0x75, 0xea, 0x27, 0x38, 0x9d, 0x5a, 0x3e, 0xb8, 0x48, 0xd2, 0xd7, 0xad, 0x57, 0xfa, + 0x1b, 0x43, 0xfe, 0xb6, 0xdd, 0x4e, 0x0a, 0x9b, 0x75, 0x61, 0x7f, 0xa4, 0x2c, 0xe7, 0x8f, 0xc4, + 0xdf, 0x47, 0x91, 0x60, 0x26, 0xcc, 0x73, 0x1d, 0xa1, 0x4b, 0x73, 0x20, 0xe9, 0x1e, 0x77, 0x92, + 0xde, 0x1e, 0x6a, 0xae, 0x1b, 0x5b, 0xd0, 0x18, 0xd6, 0x96, 0xe6, 0x20, 0xbf, 0xa4, 0x77, 0x1c, + 0x6c, 0xa1, 0x2f, 0xb2, 0x99, 0xee, 0x2b, 0x53, 0x1c, 0x00, 0x16, 0x21, 0xbf, 0x49, 0x4a, 0x63, + 0x26, 0xf3, 0x4d, 0x62, 0xad, 0x87, 0x72, 0xa8, 0xb2, 0x7f, 0x93, 0x46, 0xe7, 0xeb, 0x21, 0x33, + 0xb2, 0x29, 0x72, 0x82, 0xe8, 0x7c, 0x83, 0x59, 0x18, 0xcb, 0xc5, 0x54, 0x79, 0x15, 0xef, 0xb8, + 0x63, 0xfc, 0x85, 0xf4, 0x10, 0x2e, 0x80, 0xac, 0xb7, 0x6d, 0xd2, 0x39, 0x4e, 0xa9, 0xee, 0x63, + 0x52, 0x5f, 0xa1, 0x5e, 0x51, 0x51, 0x96, 0xc7, 0xed, 0x2b, 0x24, 0xc4, 0x45, 0xfa, 0x98, 0x7d, + 0x87, 0x38, 0x8a, 0x76, 0x3b, 0x5a, 0x0b, 0xbb, 0xdc, 0xa7, 0x86, 0x1a, 0xed, 0xc9, 0xb2, 0x5e, + 0x4f, 0x16, 0x6a, 0xa7, 0xb9, 0x03, 0xb4, 0xd3, 0x61, 0x97, 0x21, 0x7d, 0x99, 0x93, 0x8a, 0x1f, + 0xda, 0x32, 0x64, 0x2c, 0x1b, 0x63, 0xb8, 0x76, 0xd4, 0x3b, 0x48, 0x3b, 0xd6, 0xd6, 0x3a, 0xec, + 0x26, 0x0d, 0x13, 0xd6, 0xc8, 0x0e, 0xcd, 0x0e, 0xb3, 0x49, 0x13, 0xcd, 0xc3, 0x18, 0xd0, 0x9a, + 0x63, 0x68, 0x7d, 0x86, 0x0d, 0xa3, 0x29, 0xef, 0x93, 0xda, 0xa6, 0xe5, 0x24, 0xdb, 0x27, 0x75, + 0xb9, 0x53, 0xc9, 0x7f, 0x49, 0x0f, 0x5e, 0xf1, 0xe7, 0xaa, 0x47, 0x35, 0x7c, 0x26, 0x38, 0x78, + 0x35, 0x88, 0x81, 0xf4, 0xe1, 0x7d, 0xd3, 0x21, 0x0d, 0x9e, 0xc3, 0x36, 0x47, 0xd6, 0x06, 0x46, + 0x36, 0x74, 0x0e, 0xd3, 0x1c, 0xa3, 0x79, 0x48, 0x1f, 0xaf, 0x6f, 0x86, 0x06, 0xce, 0x37, 0x8c, + 0x71, 0xe0, 0xf4, 0x5a, 0x66, 0x6e, 0xc8, 0x96, 0x39, 0xec, 0xfe, 0x0f, 0x93, 0xf5, 0xe8, 0x06, + 0xcc, 0x61, 0xf6, 0x7f, 0x62, 0x98, 0x48, 0x1f, 0xf1, 0x37, 0xca, 0x90, 0xab, 0x8f, 0x7f, 0xbc, + 0x1c, 0x76, 0x2e, 0x42, 0x64, 0x55, 0x1f, 0xd9, 0x70, 0x39, 0xcc, 0x5c, 0x24, 0x92, 0x85, 0x31, + 0x04, 0xde, 0x3f, 0x0a, 0x33, 0x64, 0x49, 0xc4, 0xdb, 0x66, 0xfd, 0x26, 0x1b, 0x35, 0x1f, 0x49, + 0xb1, 0xad, 0xde, 0x03, 0x93, 0xde, 0xfe, 0x1d, 0x1b, 0x39, 0xe7, 0xc5, 0xda, 0xa7, 0xc7, 0xa5, + 0xea, 0xff, 0x7f, 0x20, 0x67, 0x88, 0x91, 0xef, 0xd5, 0x0e, 0xeb, 0x0c, 0x71, 0xa8, 0xfb, 0xb5, + 0x7f, 0x12, 0x8c, 0xa8, 0xff, 0x25, 0x3d, 0xcc, 0x7b, 0xf7, 0x71, 0xb3, 0x7d, 0xf6, 0x71, 0x3f, + 0x12, 0xc6, 0xb2, 0xce, 0x63, 0x79, 0xa7, 0xa8, 0x08, 0x47, 0x38, 0xd6, 0xbe, 0xd3, 0x87, 0xf3, + 0x2c, 0x07, 0xe7, 0xc2, 0x81, 0x78, 0x19, 0xc3, 0xc1, 0xc7, 0x6c, 0x30, 0xe6, 0x7e, 0x34, 0xc5, + 0x76, 0xdc, 0x73, 0xaa, 0x22, 0xbb, 0xef, 0x54, 0x05, 0xd7, 0xd2, 0x73, 0x07, 0x6c, 0xe9, 0x1f, + 0x0d, 0x6b, 0x47, 0x83, 0xd7, 0x8e, 0xa7, 0x8b, 0x23, 0x32, 0xba, 0x91, 0xf9, 0x5d, 0xbe, 0x7a, + 0x9c, 0xe3, 0xd4, 0xa3, 0x74, 0x30, 0x66, 0xd2, 0xd7, 0x8f, 0x3f, 0xf4, 0x26, 0xb4, 0x87, 0xdc, + 0xde, 0x87, 0xdd, 0x2a, 0xe6, 0x84, 0x38, 0xb2, 0x91, 0x7b, 0x98, 0xad, 0xe2, 0x41, 0x9c, 0x8c, + 0x21, 0x16, 0xdb, 0x2c, 0x4c, 0x13, 0x9e, 0xce, 0xe9, 0xed, 0x2d, 0xec, 0xa0, 0x57, 0x51, 0x1f, + 0x45, 0x2f, 0xf2, 0xe5, 0x88, 0xc2, 0x13, 0x45, 0x9d, 0x77, 0x4d, 0xea, 0xd1, 0x41, 0x99, 0x9c, + 0x0f, 0x31, 0x38, 0xee, 0x08, 0x8a, 0x03, 0x39, 0x48, 0x1f, 0xb2, 0x0f, 0x51, 0x77, 0x9b, 0x55, + 0xed, 0x92, 0xb9, 0xeb, 0xa0, 0x07, 0x47, 0xd0, 0x41, 0x2f, 0x40, 0xbe, 0x43, 0xa8, 0xb1, 0x63, + 0x19, 0xf1, 0xd3, 0x1d, 0x26, 0x02, 0x5a, 0xbe, 0xca, 0xfe, 0x4c, 0x7a, 0x36, 0x23, 0x90, 0x23, + 0xa5, 0x33, 0xee, 0xb3, 0x19, 0x03, 0xca, 0x1f, 0xcb, 0x1d, 0x3b, 0x93, 0x6e, 0xe9, 0xfa, 0x8e, + 0xee, 0x8c, 0x28, 0x82, 0x43, 0xc7, 0xa5, 0xe5, 0x45, 0x70, 0x20, 0x2f, 0x49, 0x4f, 0x8c, 0x86, + 0xa4, 0xe2, 0xfe, 0x3e, 0xee, 0x13, 0xa3, 0xf1, 0xc5, 0xa7, 0x8f, 0xc9, 0xaf, 0xd2, 0x96, 0x75, + 0x96, 0x3a, 0xdf, 0xa6, 0xe8, 0xd7, 0x3b, 0x74, 0x63, 0xa1, 0xac, 0x1d, 0x5e, 0x63, 0xe9, 0x5b, + 0x7e, 0xfa, 0xc0, 0xfc, 0xc6, 0x0f, 0x43, 0x6e, 0x11, 0x9f, 0xdf, 0xdd, 0x42, 0x77, 0xc0, 0x64, + 0xc3, 0xc2, 0xb8, 0x62, 0x6c, 0x9a, 0xae, 0x74, 0x1d, 0xf7, 0xd9, 0x83, 0x84, 0xbd, 0xb9, 0x78, + 0x6c, 0x63, 0xad, 0x1d, 0x9c, 0x3f, 0xf3, 0x5e, 0xd1, 0x8b, 0x25, 0xc8, 0xd6, 0x1d, 0xcd, 0x41, + 0x53, 0x3e, 0xb6, 0xe8, 0xc1, 0x30, 0x16, 0x77, 0xf0, 0x58, 0x5c, 0xcf, 0xc9, 0x82, 0x70, 0x30, + 0xef, 0xfe, 0x1f, 0x01, 0x00, 0x82, 0xc9, 0xfb, 0x6d, 0xd3, 0x70, 0x73, 0x78, 0x47, 0x20, 0xbd, + 0x77, 0xf4, 0x0a, 0x5f, 0xdc, 0x77, 0x71, 0xe2, 0x7e, 0xbc, 0x58, 0x11, 0x63, 0x58, 0x69, 0x93, + 0x60, 0xca, 0x15, 0xed, 0x0a, 0xd6, 0xda, 0x36, 0xfa, 0xa1, 0x40, 0xf9, 0x23, 0xc4, 0x8c, 0xde, + 0x27, 0x1c, 0x8c, 0x93, 0xd6, 0xca, 0x27, 0x1e, 0xed, 0xd1, 0xe1, 0x6d, 0xfe, 0x4b, 0x7c, 0x30, + 0x92, 0x9b, 0x21, 0xab, 0x1b, 0x9b, 0x26, 0xf3, 0x2f, 0xbc, 0x32, 0x82, 0xb6, 0xab, 0x13, 0x2a, + 0xc9, 0x28, 0x18, 0xa9, 0x33, 0x9e, 0xad, 0xb1, 0x5c, 0x7a, 0x97, 0x75, 0x4b, 0x47, 0xff, 0xe7, + 0x40, 0x61, 0x2b, 0x0a, 0x64, 0xbb, 0x9a, 0xb3, 0xcd, 0x8a, 0x26, 0xcf, 0xae, 0x8d, 0xbc, 0x6b, + 0x68, 0x86, 0x69, 0x5c, 0xda, 0xd1, 0x9f, 0xe9, 0xdf, 0xad, 0xcb, 0xa5, 0xb9, 0x9c, 0x6f, 0x61, + 0x03, 0x5b, 0x9a, 0x83, 0xeb, 0x7b, 0x5b, 0x64, 0x8e, 0x35, 0xa9, 0x86, 0x93, 0x12, 0xeb, 0xbf, + 0xcb, 0x71, 0xb4, 0xfe, 0x6f, 0xea, 0x1d, 0x4c, 0x22, 0x35, 0x31, 0xfd, 0xf7, 0xde, 0x13, 0xe9, + 0x7f, 0x9f, 0x22, 0xd2, 0x47, 0xe3, 0xbb, 0x12, 0xcc, 0xd4, 0x5d, 0x85, 0xab, 0xef, 0xee, 0xec, + 0x68, 0xd6, 0x25, 0x74, 0x6d, 0x80, 0x4a, 0x48, 0x35, 0x33, 0xbc, 0x5f, 0xca, 0x1f, 0x08, 0x5f, + 0x2b, 0xcd, 0x9a, 0x76, 0xa8, 0x84, 0xc4, 0xed, 0xe0, 0x89, 0x90, 0x73, 0xd5, 0xdb, 0xf3, 0xb8, + 0x8c, 0x6d, 0x08, 0x34, 0xa7, 0x60, 0x44, 0xab, 0x81, 0xbc, 0x8d, 0x21, 0x9a, 0x86, 0x04, 0x47, + 0xeb, 0x8e, 0xd6, 0xba, 0xb0, 0x6c, 0x5a, 0xe6, 0xae, 0xa3, 0x1b, 0xd8, 0x46, 0x8f, 0x09, 0x10, + 0xf0, 0xf4, 0x3f, 0x13, 0xe8, 0x3f, 0xfa, 0xf7, 0x8c, 0xe8, 0x28, 0xea, 0x77, 0xab, 0x61, 0xf2, + 0x11, 0x01, 0xaa, 0xc4, 0xc6, 0x45, 0x11, 0x8a, 0xe9, 0x0b, 0xed, 0x0d, 0x32, 0x14, 0xca, 0x0f, + 0x74, 0x4d, 0xcb, 0x59, 0x35, 0x5b, 0x5a, 0xc7, 0x76, 0x4c, 0x0b, 0xa3, 0x5a, 0xac, 0xd4, 0xdc, + 0x1e, 0xa6, 0x6d, 0xb6, 0x82, 0xc1, 0x91, 0xbd, 0x85, 0xd5, 0x4e, 0xe6, 0x75, 0xfc, 0x43, 0xc2, + 0xbb, 0x8c, 0x54, 0x2a, 0xbd, 0x1c, 0x45, 0xe8, 0x79, 0xbf, 0x2e, 0x2d, 0xd9, 0x61, 0x09, 0xb1, + 0x9d, 0x47, 0x21, 0xa6, 0xc6, 0xb0, 0x54, 0x2e, 0xc1, 0x6c, 0x7d, 0xf7, 0xbc, 0x4f, 0xc4, 0x0e, + 0x1b, 0x21, 0xaf, 0x16, 0x8e, 0x52, 0xc1, 0x14, 0x2f, 0x4c, 0x28, 0x42, 0xbe, 0xd7, 0xc1, 0xac, + 0x1d, 0xce, 0xc6, 0xf0, 0xe6, 0x13, 0x05, 0xa3, 0x53, 0x0c, 0x2e, 0x35, 0x7d, 0x01, 0xbe, 0x4b, + 0x82, 0xd9, 0x5a, 0x17, 0x1b, 0xb8, 0x4d, 0xbd, 0x20, 0x39, 0x01, 0xbe, 0x38, 0xa1, 0x00, 0x39, + 0x42, 0x11, 0x02, 0x0c, 0x3c, 0x96, 0x17, 0x3d, 0xe1, 0x05, 0x09, 0x89, 0x04, 0x17, 0x57, 0x5a, + 0xfa, 0x82, 0xfb, 0x82, 0x04, 0xd3, 0xea, 0xae, 0xb1, 0x6e, 0x99, 0xee, 0x68, 0x6c, 0xa1, 0x3b, + 0x83, 0x0e, 0xe2, 0x26, 0x38, 0xd6, 0xde, 0xb5, 0xc8, 0xfa, 0x53, 0xc5, 0xa8, 0xe3, 0x96, 0x69, + 0xb4, 0x6d, 0x52, 0x8f, 0x9c, 0xba, 0xff, 0xc3, 0xed, 0xd9, 0xe7, 0x7e, 0x4d, 0xce, 0xa0, 0xe7, + 0x09, 0x87, 0xba, 0xa1, 0x95, 0x0f, 0x15, 0x2d, 0xde, 0x13, 0x08, 0x06, 0xb4, 0x19, 0x54, 0x42, + 0xfa, 0xc2, 0xfd, 0x8c, 0x04, 0x4a, 0xb1, 0xd5, 0x32, 0x77, 0x0d, 0xa7, 0x8e, 0x3b, 0xb8, 0xe5, + 0x34, 0x2c, 0xad, 0x85, 0xc3, 0xf6, 0x73, 0x01, 0xe4, 0xb6, 0x6e, 0xb1, 0x3e, 0xd8, 0x7d, 0x64, + 0x72, 0x7c, 0xb1, 0xf0, 0x8e, 0x23, 0xad, 0xe5, 0xfe, 0x52, 0x12, 0x88, 0x53, 0x6c, 0x5f, 0x51, + 0xb0, 0xa0, 0xf4, 0xa5, 0xfa, 0x51, 0x09, 0xa6, 0xbc, 0x1e, 0x7b, 0x4b, 0x44, 0x98, 0xbf, 0x9a, + 0x70, 0x32, 0xe2, 0x13, 0x4f, 0x20, 0xc3, 0xb7, 0x25, 0x98, 0x55, 0x44, 0xd1, 0x4f, 0x26, 0xba, + 0x62, 0x72, 0xd1, 0xb9, 0xaf, 0xd5, 0x5a, 0x73, 0xa9, 0xb6, 0xba, 0x58, 0x56, 0x0b, 0x32, 0xfa, + 0xa2, 0x04, 0xd9, 0x75, 0xdd, 0xd8, 0x0a, 0x47, 0x57, 0x3a, 0xee, 0xda, 0x91, 0x6d, 0xfc, 0x00, + 0x6b, 0xe9, 0xf4, 0x45, 0xb9, 0x15, 0x8e, 0x1b, 0xbb, 0x3b, 0xe7, 0xb1, 0x55, 0xdb, 0x24, 0xa3, + 0xac, 0xdd, 0x30, 0xeb, 0xd8, 0xa0, 0x46, 0x68, 0x4e, 0xed, 0xfb, 0x8d, 0x37, 0xc1, 0x04, 0x26, + 0x0f, 0x2e, 0x27, 0x11, 0x12, 0xf7, 0x99, 0x92, 0x42, 0x4c, 0x25, 0x9a, 0x36, 0xf4, 0x21, 0x9e, + 0xbe, 0xa6, 0xfe, 0x51, 0x0e, 0x4e, 0x14, 0x8d, 0x4b, 0xc4, 0xa6, 0xa0, 0x1d, 0x7c, 0x69, 0x5b, + 0x33, 0xb6, 0x30, 0x19, 0x20, 0x7c, 0x89, 0x87, 0x43, 0xf4, 0x67, 0xf8, 0x10, 0xfd, 0x8a, 0x0a, + 0x13, 0xa6, 0xd5, 0xc6, 0xd6, 0xc2, 0x25, 0xc2, 0x53, 0xef, 0xb2, 0x33, 0x6b, 0x93, 0xfd, 0x8a, + 0x98, 0x67, 0xe4, 0xe7, 0x6b, 0xf4, 0x7f, 0xd5, 0x23, 0x74, 0xe6, 0x26, 0x98, 0x60, 0x69, 0xca, + 0x0c, 0x4c, 0xd6, 0xd4, 0xc5, 0xb2, 0xda, 0xac, 0x2c, 0x16, 0x8e, 0x28, 0x97, 0xc1, 0xd1, 0x4a, + 0xa3, 0xac, 0x16, 0x1b, 0x95, 0x5a, 0xb5, 0x49, 0xd2, 0x0b, 0x19, 0xf4, 0x9c, 0xac, 0xa8, 0x67, + 0x6f, 0x3c, 0x33, 0xfd, 0x60, 0x55, 0x61, 0xa2, 0x45, 0x33, 0x90, 0x21, 0x74, 0x3a, 0x51, 0xed, + 0x18, 0x41, 0x9a, 0xa0, 0x7a, 0x84, 0x94, 0xd3, 0x00, 0x17, 0x2d, 0xd3, 0xd8, 0x0a, 0x4e, 0x1d, + 0x4e, 0xaa, 0xa1, 0x14, 0xf4, 0x60, 0x06, 0xf2, 0xf4, 0x1f, 0x72, 0x25, 0x09, 0x79, 0x0a, 0x04, + 0xef, 0xbd, 0xbb, 0x16, 0x2f, 0x91, 0x57, 0x30, 0xd1, 0x62, 0xaf, 0xae, 0x2e, 0x52, 0x19, 0x50, + 0x4b, 0x98, 0x55, 0xe5, 0x66, 0xc8, 0xd3, 0x7f, 0x99, 0xd7, 0x41, 0x74, 0x78, 0x51, 0x9a, 0x4d, + 0xd0, 0x4f, 0x59, 0x5c, 0xa6, 0xe9, 0x6b, 0xf3, 0xfb, 0x25, 0x98, 0xac, 0x62, 0xa7, 0xb4, 0x8d, + 0x5b, 0x17, 0xd0, 0xe3, 0xf8, 0x05, 0xd0, 0x8e, 0x8e, 0x0d, 0xe7, 0xbe, 0x9d, 0x8e, 0xbf, 0x00, + 0xea, 0x25, 0xa0, 0x9f, 0x0f, 0x77, 0xbe, 0x77, 0xf3, 0xfa, 0x73, 0x63, 0x9f, 0xba, 0x7a, 0x25, + 0x44, 0xa8, 0xcc, 0x49, 0xc8, 0x5b, 0xd8, 0xde, 0xed, 0x78, 0x8b, 0x68, 0xec, 0x0d, 0x3d, 0xec, + 0x8b, 0xb3, 0xc4, 0x89, 0xf3, 0x66, 0xf1, 0x22, 0xc6, 0x10, 0xaf, 0x34, 0x0b, 0x13, 0x15, 0x43, + 0x77, 0x74, 0xad, 0x83, 0x9e, 0x97, 0x85, 0xd9, 0x3a, 0x76, 0xd6, 0x35, 0x4b, 0xdb, 0xc1, 0x0e, + 0xb6, 0x6c, 0xf4, 0x6d, 0xbe, 0x4f, 0xe8, 0x76, 0x34, 0x67, 0xd3, 0xb4, 0x76, 0x3c, 0xd5, 0xf4, + 0xde, 0x5d, 0xd5, 0xdc, 0xc3, 0x96, 0x1d, 0xf0, 0xe5, 0xbd, 0xba, 0x5f, 0x2e, 0x9a, 0xd6, 0x05, + 0x77, 0x10, 0x64, 0xd3, 0x34, 0xf6, 0xea, 0xd2, 0xeb, 0x98, 0x5b, 0xab, 0x78, 0x0f, 0x7b, 0xe1, + 0xd2, 0xfc, 0x77, 0x77, 0x2e, 0xd0, 0x36, 0xab, 0xa6, 0xe3, 0x76, 0xda, 0xab, 0xe6, 0x16, 0x8d, + 0x17, 0x3b, 0xa9, 0xf2, 0x89, 0x41, 0x2e, 0x6d, 0x0f, 0x93, 0x5c, 0xf9, 0x70, 0x2e, 0x96, 0xa8, + 0xcc, 0x83, 0xe2, 0xff, 0xd6, 0xc0, 0x1d, 0xbc, 0x83, 0x1d, 0xeb, 0x12, 0xb9, 0x16, 0x62, 0x52, + 0xed, 0xf3, 0x85, 0x0d, 0xd0, 0xe2, 0x93, 0x75, 0x26, 0xbd, 0x79, 0x4e, 0x72, 0x07, 0x9a, 0xac, + 0x8b, 0x50, 0x1c, 0xcb, 0xb5, 0x57, 0xb2, 0x6b, 0xcd, 0xbc, 0x54, 0x86, 0x2c, 0x19, 0x3c, 0xdf, + 0x98, 0xe1, 0x56, 0x98, 0x76, 0xb0, 0x6d, 0x6b, 0x5b, 0xd8, 0x5b, 0x61, 0x62, 0xaf, 0xca, 0x6d, + 0x90, 0xeb, 0x10, 0x4c, 0xe9, 0xe0, 0x70, 0x2d, 0x57, 0x33, 0xd7, 0xc0, 0x70, 0x69, 0xf9, 0x23, + 0x01, 0x81, 0x5b, 0xa5, 0x7f, 0x9c, 0xb9, 0x07, 0x72, 0x14, 0xfe, 0x29, 0xc8, 0x2d, 0x96, 0x17, + 0x36, 0x96, 0x0b, 0x47, 0xdc, 0x47, 0x8f, 0xbf, 0x29, 0xc8, 0x2d, 0x15, 0x1b, 0xc5, 0xd5, 0x82, + 0xe4, 0xd6, 0xa3, 0x52, 0x5d, 0xaa, 0x15, 0x64, 0x37, 0x71, 0xbd, 0x58, 0xad, 0x94, 0x0a, 0x59, + 0x65, 0x1a, 0x26, 0xce, 0x15, 0xd5, 0x6a, 0xa5, 0xba, 0x5c, 0xc8, 0xa1, 0xbf, 0x0d, 0xe3, 0x77, + 0x3b, 0x8f, 0xdf, 0x75, 0x51, 0x3c, 0xf5, 0x83, 0xec, 0x65, 0x3e, 0x64, 0x77, 0x72, 0x90, 0xfd, + 0xb0, 0x08, 0x91, 0x31, 0xb8, 0x33, 0xe5, 0x61, 0x62, 0xdd, 0x32, 0x5b, 0xd8, 0xb6, 0xd1, 0xaf, + 0x49, 0x90, 0x2f, 0x69, 0x46, 0x0b, 0x77, 0xd0, 0x15, 0x01, 0x54, 0xd4, 0x55, 0x34, 0xe3, 0x9f, + 0x16, 0xfb, 0xc7, 0x8c, 0x68, 0xef, 0xc7, 0xe8, 0xce, 0x53, 0x9a, 0x11, 0xf2, 0x11, 0xeb, 0xe5, + 0x62, 0x49, 0x8d, 0xe1, 0x6a, 0x1c, 0x09, 0xa6, 0xd8, 0x6a, 0xc0, 0x79, 0x1c, 0x9e, 0x87, 0x7f, + 0x3b, 0x23, 0x3a, 0x39, 0xf4, 0x6a, 0xe0, 0x93, 0x89, 0x90, 0x87, 0xd8, 0x44, 0x70, 0x10, 0xb5, + 0x31, 0x6c, 0x1e, 0x4a, 0x30, 0xbd, 0x61, 0xd8, 0xfd, 0x84, 0x22, 0x1e, 0x47, 0xdf, 0xab, 0x46, + 0x88, 0xd0, 0x81, 0xe2, 0xe8, 0x0f, 0xa6, 0x97, 0xbe, 0x60, 0xbe, 0x9d, 0x81, 0xe3, 0xcb, 0xd8, + 0xc0, 0x96, 0xde, 0xa2, 0x35, 0xf0, 0x24, 0x71, 0x27, 0x2f, 0x89, 0xc7, 0x71, 0x9c, 0xf7, 0xfb, + 0x83, 0x97, 0xc0, 0x2b, 0x7d, 0x09, 0xdc, 0xcd, 0x49, 0xe0, 0x26, 0x41, 0x3a, 0x63, 0xb8, 0x0f, + 0x7d, 0x0a, 0x66, 0xaa, 0xa6, 0xa3, 0x6f, 0xea, 0x2d, 0xea, 0x83, 0xf6, 0x12, 0x19, 0xb2, 0xab, + 0xba, 0xed, 0xa0, 0x62, 0xd0, 0x9d, 0x5c, 0x03, 0xd3, 0xba, 0xd1, 0xea, 0xec, 0xb6, 0xb1, 0x8a, + 0x35, 0xda, 0xaf, 0x4c, 0xaa, 0xe1, 0xa4, 0x60, 0x6b, 0xdf, 0x65, 0x4b, 0xf6, 0xb6, 0xf6, 0x3f, + 0x29, 0xbc, 0x0c, 0x13, 0x66, 0x81, 0x04, 0xa4, 0x8c, 0xb0, 0xbb, 0x8a, 0x30, 0x6b, 0x84, 0xb2, + 0x7a, 0x06, 0x7b, 0xef, 0x85, 0x02, 0x61, 0x72, 0x2a, 0xff, 0x07, 0x7a, 0x8f, 0x50, 0x63, 0x1d, + 0xc4, 0x50, 0x32, 0x64, 0x96, 0x86, 0x98, 0x24, 0x2b, 0x30, 0x57, 0xa9, 0x36, 0xca, 0x6a, 0xb5, + 0xb8, 0xca, 0xb2, 0xc8, 0xe8, 0xbb, 0x12, 0xe4, 0x54, 0xdc, 0xed, 0x5c, 0x0a, 0x47, 0x8c, 0x66, + 0x8e, 0xe2, 0x19, 0xdf, 0x51, 0x5c, 0x59, 0x02, 0xd0, 0x5a, 0x6e, 0xc1, 0xe4, 0x4a, 0x2d, 0xa9, + 0x6f, 0x1c, 0x53, 0xae, 0x82, 0x45, 0x3f, 0xb7, 0x1a, 0xfa, 0x13, 0x3d, 0x24, 0xbc, 0x73, 0xc4, + 0x51, 0x23, 0x1c, 0x46, 0xf4, 0x09, 0xef, 0x15, 0xda, 0xec, 0x19, 0x48, 0xee, 0x70, 0xc4, 0xff, + 0x25, 0x09, 0xb2, 0x0d, 0xb7, 0xb7, 0x0c, 0x75, 0x9c, 0x9f, 0x18, 0x4e, 0xc7, 0x5d, 0x32, 0x11, + 0x3a, 0x7e, 0x17, 0xcc, 0x84, 0x35, 0x96, 0xb9, 0x4a, 0xc4, 0xaa, 0x38, 0xf7, 0xc3, 0x30, 0x1a, + 0xde, 0x87, 0x9d, 0xc3, 0x11, 0xf1, 0xc7, 0x1e, 0x0f, 0xb0, 0x86, 0x77, 0xce, 0x63, 0xcb, 0xde, + 0xd6, 0xbb, 0xe8, 0xef, 0x64, 0x98, 0x5a, 0xc6, 0x4e, 0xdd, 0xd1, 0x9c, 0x5d, 0xbb, 0x67, 0xbb, + 0xd3, 0x30, 0x4b, 0x5a, 0x6b, 0x1b, 0xb3, 0xee, 0xc8, 0x7b, 0x45, 0xef, 0x90, 0x45, 0xfd, 0x89, + 0x82, 0x72, 0xe6, 0xfd, 0x32, 0x22, 0x30, 0x79, 0x02, 0x64, 0xdb, 0x9a, 0xa3, 0x31, 0x2c, 0xae, + 0xe8, 0xc1, 0x22, 0x20, 0xa4, 0x92, 0x6c, 0xe8, 0xb7, 0x25, 0x11, 0x87, 0x22, 0x81, 0xf2, 0x93, + 0x81, 0xf0, 0x9e, 0xcc, 0x10, 0x28, 0x1c, 0x83, 0xd9, 0x6a, 0xad, 0xd1, 0x5c, 0xad, 0x2d, 0x2f, + 0x97, 0xdd, 0xd4, 0x82, 0xac, 0x9c, 0x04, 0x65, 0xbd, 0x78, 0xdf, 0x5a, 0xb9, 0xda, 0x68, 0x56, + 0x6b, 0x8b, 0x65, 0xf6, 0x67, 0x56, 0x39, 0x0a, 0xd3, 0xa5, 0x62, 0x69, 0xc5, 0x4b, 0xc8, 0x29, + 0xa7, 0xe0, 0xf8, 0x5a, 0x79, 0x6d, 0xa1, 0xac, 0xd6, 0x57, 0x2a, 0xeb, 0x4d, 0x97, 0xcc, 0x52, + 0x6d, 0xa3, 0xba, 0x58, 0xc8, 0x2b, 0x08, 0x4e, 0x86, 0xbe, 0x9c, 0x53, 0x6b, 0xd5, 0xe5, 0x66, + 0xbd, 0x51, 0x6c, 0x94, 0x0b, 0x13, 0xca, 0x65, 0x70, 0xb4, 0x54, 0xac, 0x92, 0xec, 0xa5, 0x5a, + 0xb5, 0x5a, 0x2e, 0x35, 0x0a, 0x93, 0xe8, 0xdf, 0xb3, 0x30, 0x5d, 0xb1, 0xab, 0xda, 0x0e, 0x3e, + 0xab, 0x75, 0xf4, 0x36, 0x7a, 0x5e, 0x68, 0xe6, 0x71, 0x1d, 0xcc, 0x5a, 0xf4, 0x11, 0xb7, 0x1b, + 0x3a, 0xa6, 0x68, 0xce, 0xaa, 0x7c, 0xa2, 0x3b, 0x27, 0x37, 0x08, 0x01, 0x6f, 0x4e, 0x4e, 0xdf, + 0x94, 0x05, 0x00, 0xfa, 0xd4, 0x08, 0x2e, 0x77, 0x3d, 0xd3, 0xdb, 0x9a, 0xb4, 0x1d, 0x6c, 0x63, + 0x6b, 0x4f, 0x6f, 0x61, 0x2f, 0xa7, 0x1a, 0xfa, 0x0b, 0x7d, 0x59, 0x16, 0xdd, 0x5f, 0x0c, 0x81, + 0x1a, 0xaa, 0x4e, 0x44, 0x6f, 0xf8, 0x0b, 0xb2, 0xc8, 0xee, 0xa0, 0x10, 0xc9, 0x64, 0x9a, 0xf2, + 0x02, 0x69, 0xb8, 0x65, 0xdb, 0x46, 0xad, 0xd6, 0xac, 0xaf, 0xd4, 0xd4, 0x46, 0x41, 0x56, 0x66, + 0x60, 0xd2, 0x7d, 0x5d, 0xad, 0x55, 0x97, 0x0b, 0x59, 0xe5, 0x04, 0x1c, 0x5b, 0x29, 0xd6, 0x9b, + 0x95, 0xea, 0xd9, 0xe2, 0x6a, 0x65, 0xb1, 0x59, 0x5a, 0x29, 0xaa, 0xf5, 0x42, 0x4e, 0xb9, 0x02, + 0x4e, 0x34, 0x2a, 0x65, 0xb5, 0xb9, 0x54, 0x2e, 0x36, 0x36, 0xd4, 0x72, 0xbd, 0x59, 0xad, 0x35, + 0xab, 0xc5, 0xb5, 0x72, 0x21, 0xef, 0x36, 0x7f, 0xf2, 0x29, 0x50, 0x9b, 0x89, 0xfd, 0xca, 0x38, + 0x19, 0xa1, 0x8c, 0x53, 0xbd, 0xca, 0x08, 0x61, 0xb5, 0x52, 0xcb, 0xf5, 0xb2, 0x7a, 0xb6, 0x5c, + 0x98, 0xee, 0xa7, 0x6b, 0x33, 0xca, 0x71, 0x28, 0xb8, 0x3c, 0x34, 0x2b, 0x75, 0x2f, 0xe7, 0x62, + 0x61, 0x16, 0x7d, 0x34, 0x0f, 0x27, 0x55, 0xbc, 0xa5, 0xdb, 0x0e, 0xb6, 0xd6, 0xb5, 0x4b, 0x3b, + 0xd8, 0x70, 0xbc, 0x4e, 0xfe, 0x5f, 0x12, 0x2b, 0xe3, 0x1a, 0xcc, 0x76, 0x29, 0x8d, 0x35, 0xec, + 0x6c, 0x9b, 0x6d, 0x36, 0x0a, 0x3f, 0x2e, 0xb2, 0xe7, 0x98, 0x5f, 0x0f, 0x67, 0x57, 0xf9, 0xbf, + 0x43, 0xba, 0x2d, 0xc7, 0xe8, 0x76, 0x76, 0x18, 0xdd, 0x56, 0xae, 0x82, 0xa9, 0x5d, 0x1b, 0x5b, + 0xe5, 0x1d, 0x4d, 0xef, 0x78, 0x97, 0x73, 0xfa, 0x09, 0xe8, 0xad, 0x59, 0xd1, 0x13, 0x2b, 0xa1, + 0xba, 0xf4, 0x17, 0x63, 0x44, 0xdf, 0x7a, 0x1a, 0x80, 0x55, 0x76, 0xc3, 0xea, 0x30, 0x65, 0x0d, + 0xa5, 0xb8, 0xfc, 0x9d, 0xd7, 0x3b, 0x1d, 0xdd, 0xd8, 0xf2, 0xf7, 0xfd, 0x83, 0x04, 0xf4, 0x02, + 0x59, 0xe4, 0x04, 0x4b, 0x52, 0xde, 0x92, 0xb5, 0xa6, 0x87, 0xa4, 0x31, 0xf7, 0xbb, 0xfb, 0x9b, + 0x4e, 0x5e, 0x29, 0xc0, 0x0c, 0x49, 0x63, 0x2d, 0xb0, 0x30, 0xe1, 0xf6, 0xc1, 0x1e, 0xb9, 0xb5, + 0x72, 0x63, 0xa5, 0xb6, 0xe8, 0x7f, 0x9b, 0x74, 0x49, 0xba, 0xcc, 0x14, 0xab, 0xf7, 0x91, 0xd6, + 0x38, 0xa5, 0x3c, 0x06, 0xae, 0x08, 0x75, 0xd8, 0xc5, 0x55, 0xb5, 0x5c, 0x5c, 0xbc, 0xaf, 0x59, + 0x7e, 0x46, 0xa5, 0xde, 0xa8, 0xf3, 0x8d, 0xcb, 0x6b, 0x47, 0xd3, 0x2e, 0xbf, 0xe5, 0xb5, 0x62, + 0x65, 0x95, 0xf5, 0xef, 0x4b, 0x35, 0x75, 0xad, 0xd8, 0x28, 0xcc, 0xa0, 0x97, 0xca, 0x50, 0x58, + 0xc6, 0xce, 0xba, 0x69, 0x39, 0x5a, 0x67, 0x55, 0x37, 0x2e, 0x6c, 0x58, 0x1d, 0x6e, 0xb2, 0x29, + 0x1c, 0xa6, 0x83, 0x1f, 0x22, 0x39, 0x82, 0xd1, 0x3b, 0xe2, 0x5d, 0x92, 0x2d, 0x50, 0xa6, 0x20, + 0x01, 0x3d, 0x4b, 0x12, 0x59, 0xee, 0x16, 0x2f, 0x35, 0x99, 0x9e, 0x3c, 0x7b, 0xdc, 0xe3, 0x73, + 0x1f, 0xd4, 0xf2, 0xe8, 0xb9, 0x59, 0x98, 0x5c, 0xd2, 0x0d, 0xad, 0xa3, 0x3f, 0x93, 0x8b, 0x5f, + 0x1a, 0xf4, 0x31, 0x99, 0x98, 0x3e, 0x46, 0x1a, 0x6a, 0xfc, 0xfc, 0x15, 0x59, 0x74, 0x79, 0x21, + 0x24, 0x7b, 0x8f, 0xc9, 0x88, 0xc1, 0xf3, 0x03, 0x92, 0xc8, 0xf2, 0xc2, 0x60, 0x7a, 0xc9, 0x30, + 0xfc, 0xf8, 0xf7, 0x87, 0x8d, 0xd5, 0xd3, 0xbe, 0x27, 0xfb, 0xa9, 0xc2, 0x14, 0xfa, 0x33, 0x19, + 0xd0, 0x32, 0x76, 0xce, 0x62, 0xcb, 0x9f, 0x0a, 0x90, 0x5e, 0x9f, 0xd9, 0xdb, 0xa1, 0x26, 0xfb, + 0xc6, 0x30, 0x80, 0xe7, 0x78, 0x00, 0x8b, 0x31, 0x8d, 0x27, 0x82, 0x74, 0x44, 0xe3, 0xad, 0x40, + 0xde, 0x26, 0xdf, 0x99, 0x9a, 0x3d, 0x31, 0x7a, 0xb8, 0x24, 0xc4, 0xc2, 0xd4, 0x29, 0x61, 0x95, + 0x11, 0x40, 0xdf, 0xf1, 0x27, 0x41, 0x3f, 0xce, 0x69, 0xc7, 0xd2, 0x81, 0x99, 0x4d, 0xa6, 0x2f, + 0x56, 0xba, 0xea, 0xd2, 0xcf, 0xbe, 0x41, 0x1f, 0xc8, 0xc1, 0xf1, 0x7e, 0xd5, 0x41, 0xbf, 0x93, + 0xe1, 0x76, 0xd8, 0x31, 0x19, 0xf2, 0x33, 0x6c, 0x03, 0xd1, 0x7d, 0x51, 0x9e, 0x0c, 0x27, 0xfc, + 0x65, 0xb8, 0x86, 0x59, 0xc5, 0x17, 0xed, 0x0e, 0x76, 0x1c, 0x6c, 0x91, 0xaa, 0x4d, 0xaa, 0xfd, + 0x3f, 0x2a, 0x4f, 0x85, 0xcb, 0x75, 0xc3, 0xd6, 0xdb, 0xd8, 0x6a, 0xe8, 0x5d, 0xbb, 0x68, 0xb4, + 0x1b, 0xbb, 0x8e, 0x69, 0xe9, 0x1a, 0xbb, 0x4a, 0x72, 0x52, 0x8d, 0xfa, 0xac, 0xdc, 0x08, 0x05, + 0xdd, 0xae, 0x19, 0xe7, 0x4d, 0xcd, 0x6a, 0xeb, 0xc6, 0xd6, 0xaa, 0x6e, 0x3b, 0xcc, 0x03, 0x78, + 0x5f, 0x3a, 0xfa, 0x7b, 0x59, 0xf4, 0x30, 0xdd, 0x00, 0x58, 0x23, 0x3a, 0x94, 0x9f, 0x97, 0x45, + 0x8e, 0xc7, 0x25, 0xa3, 0x9d, 0x4c, 0x59, 0x9e, 0x33, 0x6e, 0x43, 0xa2, 0xff, 0x08, 0x4e, 0xba, + 0x16, 0x9a, 0xee, 0x19, 0x02, 0x67, 0xcb, 0x6a, 0x65, 0xa9, 0x52, 0x76, 0xcd, 0x8a, 0x13, 0x70, + 0x2c, 0xf8, 0xb6, 0x78, 0x5f, 0xb3, 0x5e, 0xae, 0x36, 0x0a, 0x93, 0x6e, 0x3f, 0x45, 0x93, 0x97, + 0x8a, 0x95, 0xd5, 0xf2, 0x62, 0xb3, 0x51, 0x73, 0xbf, 0x2c, 0x0e, 0x67, 0x5a, 0xa0, 0x07, 0xb3, + 0x70, 0x94, 0xc8, 0xf6, 0x12, 0x91, 0xaa, 0x2b, 0x94, 0x1e, 0x5f, 0x5b, 0x1f, 0xa0, 0x29, 0x2a, + 0x5e, 0xf4, 0x69, 0xe1, 0x9b, 0x32, 0x43, 0x10, 0xf6, 0x94, 0x11, 0xa1, 0x19, 0xdf, 0x96, 0x44, + 0x22, 0x54, 0x08, 0x93, 0x4d, 0xa6, 0x14, 0xff, 0x3a, 0xee, 0x11, 0x27, 0x1a, 0x7c, 0x62, 0x65, + 0x96, 0xc8, 0xcf, 0xcf, 0x58, 0xaf, 0xa8, 0x44, 0x1d, 0xe6, 0x00, 0x48, 0x0a, 0xd1, 0x20, 0xaa, + 0x07, 0x7d, 0xc7, 0xab, 0x28, 0x3d, 0x28, 0x96, 0x1a, 0x95, 0xb3, 0xe5, 0x28, 0x3d, 0xf8, 0x94, + 0x0c, 0x93, 0xcb, 0xd8, 0x71, 0xe7, 0x54, 0x36, 0x7a, 0x9a, 0xc0, 0xfa, 0x8f, 0x6b, 0xc6, 0x74, + 0xcc, 0x96, 0xd6, 0xf1, 0x97, 0x01, 0xe8, 0x1b, 0xfa, 0xb9, 0x61, 0x4c, 0x10, 0xaf, 0xe8, 0x88, + 0xf1, 0xea, 0x47, 0x21, 0xe7, 0xb8, 0x9f, 0xd9, 0x32, 0xf4, 0x0f, 0x45, 0x0e, 0x57, 0x2e, 0x91, + 0x45, 0xcd, 0xd1, 0x54, 0x9a, 0x3f, 0x34, 0x3a, 0x09, 0xda, 0x2e, 0x11, 0x8c, 0x7c, 0x3f, 0xda, + 0x9f, 0x7f, 0x2b, 0xc3, 0x09, 0xda, 0x3e, 0x8a, 0xdd, 0x6e, 0xdd, 0x31, 0x2d, 0xac, 0xe2, 0x16, + 0xd6, 0xbb, 0x4e, 0xcf, 0xfa, 0x9e, 0x45, 0x53, 0xbd, 0xcd, 0x66, 0xf6, 0x8a, 0x5e, 0x27, 0x8b, + 0xc6, 0x60, 0xde, 0xd7, 0x1e, 0x7b, 0xca, 0x8b, 0x68, 0xec, 0x1f, 0x91, 0x44, 0xa2, 0x2a, 0x27, + 0x24, 0x9e, 0x0c, 0xa8, 0x0f, 0x1e, 0x02, 0x50, 0xde, 0xca, 0x8d, 0x5a, 0x2e, 0x95, 0x2b, 0xeb, + 0xee, 0x20, 0x70, 0x35, 0x5c, 0xb9, 0xbe, 0xa1, 0x96, 0x56, 0x8a, 0xf5, 0x72, 0x53, 0x2d, 0x2f, + 0x57, 0xea, 0x0d, 0xe6, 0x94, 0x45, 0xff, 0x9a, 0x50, 0xae, 0x82, 0x53, 0xf5, 0x8d, 0x85, 0x7a, + 0x49, 0xad, 0xac, 0x93, 0x74, 0xb5, 0x5c, 0x2d, 0x9f, 0x63, 0x5f, 0x27, 0xd1, 0xfb, 0x0a, 0x30, + 0xed, 0x4e, 0x00, 0xea, 0x74, 0x5e, 0x80, 0xbe, 0x91, 0x85, 0x69, 0x15, 0xdb, 0x66, 0x67, 0x8f, + 0xcc, 0x11, 0xc6, 0x35, 0xf5, 0xf8, 0x96, 0x2c, 0x7a, 0x7e, 0x3b, 0xc4, 0xec, 0x7c, 0x88, 0xd1, + 0xe8, 0x89, 0xa6, 0xb6, 0xa7, 0xe9, 0x1d, 0xed, 0x3c, 0xeb, 0x6a, 0x26, 0xd5, 0x20, 0x41, 0x99, + 0x07, 0xc5, 0xbc, 0x68, 0x60, 0xab, 0xde, 0xba, 0x58, 0x76, 0xb6, 0x8b, 0xed, 0xb6, 0x85, 0x6d, + 0x9b, 0xad, 0x5e, 0xf4, 0xf9, 0xa2, 0xdc, 0x00, 0x47, 0x49, 0x6a, 0x28, 0x33, 0x75, 0x90, 0xe9, + 0x4d, 0xf6, 0x73, 0x16, 0x8d, 0x4b, 0x5e, 0xce, 0x5c, 0x28, 0x67, 0x90, 0x1c, 0x3e, 0x2e, 0x91, + 0xe7, 0x4f, 0xe9, 0x5c, 0x03, 0xd3, 0x86, 0xb6, 0x83, 0xcb, 0x0f, 0x74, 0x75, 0x0b, 0xdb, 0xc4, + 0x31, 0x46, 0x56, 0xc3, 0x49, 0xe8, 0x03, 0x42, 0xe7, 0xcd, 0xc5, 0x24, 0x96, 0x4c, 0xf7, 0x97, + 0x87, 0x50, 0xfd, 0x3e, 0xfd, 0x8c, 0x8c, 0xde, 0x27, 0xc3, 0x0c, 0x63, 0xaa, 0x68, 0x5c, 0xaa, + 0xb4, 0xd1, 0xd5, 0x9c, 0xf1, 0xab, 0xb9, 0x69, 0x9e, 0xf1, 0x4b, 0x5e, 0xd0, 0x2f, 0xca, 0xa2, + 0xee, 0xce, 0x7d, 0x2a, 0x4e, 0xca, 0x88, 0x76, 0x1c, 0xdd, 0x34, 0x77, 0x99, 0xa3, 0xea, 0xa4, + 0x4a, 0x5f, 0xd2, 0x5c, 0xd4, 0x43, 0xbf, 0x2f, 0xe4, 0x4c, 0x2d, 0x58, 0x8d, 0x43, 0x02, 0xf0, + 0x63, 0x32, 0xcc, 0x31, 0xae, 0xea, 0xec, 0x9c, 0x8f, 0xd0, 0x81, 0xb7, 0x5f, 0x12, 0x36, 0x04, + 0xfb, 0xd4, 0x9f, 0x95, 0xf4, 0xa8, 0x01, 0xf2, 0x43, 0x42, 0xc1, 0xd1, 0x84, 0x2b, 0x72, 0x48, + 0x50, 0xbe, 0x2d, 0x0b, 0xd3, 0x1b, 0x36, 0xb6, 0x98, 0xdf, 0x3e, 0x7a, 0x38, 0x0b, 0xf2, 0x32, + 0xe6, 0x36, 0x52, 0x9f, 0x2f, 0xec, 0xe1, 0x1b, 0xae, 0x6c, 0x88, 0xa8, 0x6b, 0x23, 0x45, 0xc0, + 0x76, 0x3d, 0xcc, 0x51, 0x91, 0x16, 0x1d, 0xc7, 0x35, 0x12, 0x3d, 0x6f, 0xda, 0x9e, 0xd4, 0x51, + 0x6c, 0x15, 0x91, 0xb2, 0xdc, 0x2c, 0x25, 0x97, 0xa7, 0x55, 0xbc, 0x49, 0xe7, 0xb3, 0x59, 0xb5, + 0x27, 0x55, 0xb9, 0x05, 0x2e, 0x33, 0xbb, 0x98, 0x9e, 0x5f, 0x09, 0x65, 0xce, 0x91, 0xcc, 0xfd, + 0x3e, 0xa1, 0x6f, 0x08, 0xf9, 0xea, 0x8a, 0x4b, 0x27, 0x99, 0x2e, 0x74, 0x47, 0x63, 0x92, 0x1c, + 0x87, 0x82, 0x9b, 0x83, 0xec, 0xbf, 0xa8, 0xe5, 0x7a, 0x6d, 0xf5, 0x6c, 0xb9, 0xff, 0x32, 0x46, + 0x0e, 0x3d, 0x47, 0x86, 0xa9, 0x05, 0xcb, 0xd4, 0xda, 0x2d, 0xcd, 0x76, 0xd0, 0x77, 0x24, 0x98, + 0x59, 0xd7, 0x2e, 0x75, 0x4c, 0xad, 0x4d, 0xfc, 0xfb, 0x7b, 0xfa, 0x82, 0x2e, 0xfd, 0xe4, 0xf5, + 0x05, 0xec, 0x95, 0x3f, 0x18, 0xe8, 0x1f, 0xdd, 0xcb, 0x88, 0x5c, 0xa8, 0xe9, 0x6f, 0xf3, 0x49, + 0xfd, 0x82, 0x95, 0x7a, 0x7c, 0xcd, 0x87, 0x79, 0x8a, 0xb0, 0x28, 0xdf, 0x27, 0x16, 0x7e, 0x54, + 0x84, 0xe4, 0xe1, 0xec, 0xca, 0x3f, 0x77, 0x12, 0xf2, 0x8b, 0x98, 0x58, 0x71, 0xff, 0x5d, 0x82, + 0x89, 0x3a, 0x76, 0x88, 0x05, 0x77, 0x1b, 0xe7, 0x29, 0xdc, 0x26, 0x19, 0x02, 0x27, 0x76, 0xef, + 0xdd, 0x9d, 0xac, 0x87, 0xce, 0x5b, 0x93, 0xe7, 0x04, 0x1e, 0x89, 0xb4, 0xdc, 0x79, 0x56, 0xe6, + 0x81, 0x3c, 0x12, 0x63, 0x49, 0xa5, 0xef, 0x6b, 0xf5, 0x0e, 0x89, 0xb9, 0x56, 0x85, 0x7a, 0xbd, + 0x57, 0x85, 0xf5, 0x33, 0xd6, 0xdb, 0x8c, 0x31, 0x1f, 0xe3, 0x1c, 0xf5, 0x24, 0x98, 0xa0, 0x32, + 0xf7, 0xe6, 0xa3, 0xbd, 0x7e, 0x0a, 0x94, 0x04, 0x39, 0x7b, 0xed, 0xe5, 0x14, 0x74, 0x51, 0x8b, + 0x2e, 0x7c, 0x2c, 0x31, 0x08, 0x66, 0xaa, 0xd8, 0xb9, 0x68, 0x5a, 0x17, 0xea, 0x8e, 0xe6, 0x60, + 0xf4, 0xaf, 0x12, 0xc8, 0x75, 0xec, 0x84, 0xa3, 0x9f, 0x54, 0xe1, 0x18, 0xad, 0x10, 0xcb, 0x48, + 0xfa, 0x6f, 0x5a, 0x91, 0x6b, 0xfa, 0x0a, 0x21, 0x94, 0x4f, 0xdd, 0xff, 0x2b, 0xfa, 0xb5, 0xbe, + 0x41, 0x9f, 0xa4, 0x3e, 0x93, 0x06, 0x26, 0x99, 0x30, 0x83, 0xae, 0x82, 0x45, 0xe8, 0xe9, 0xfb, + 0x85, 0xcc, 0x6a, 0x31, 0x9a, 0x87, 0xd3, 0x15, 0x7c, 0xe8, 0x0a, 0xc8, 0x96, 0xb6, 0x35, 0x07, + 0xbd, 0x5d, 0x06, 0x28, 0xb6, 0xdb, 0x6b, 0xd4, 0x07, 0x3c, 0xec, 0x90, 0x76, 0x06, 0x66, 0x5a, + 0xdb, 0x5a, 0x70, 0xb7, 0x09, 0xed, 0x0f, 0xb8, 0x34, 0xe5, 0xc9, 0x81, 0x33, 0x39, 0x95, 0x2a, + 0xea, 0x81, 0xc9, 0x2d, 0x83, 0xd1, 0xf6, 0x1d, 0xcd, 0xf9, 0x50, 0x98, 0xb1, 0x47, 0xe8, 0xdc, + 0xdf, 0xe7, 0x03, 0xf6, 0xa2, 0xe7, 0x70, 0x8c, 0xb4, 0x7f, 0xc0, 0x26, 0x48, 0x48, 0x78, 0xd2, + 0x5b, 0x2c, 0xa0, 0x47, 0x3c, 0x5f, 0x63, 0x09, 0x5d, 0xab, 0x94, 0xdb, 0xba, 0x27, 0x5a, 0x16, + 0x30, 0x0b, 0x3d, 0x94, 0x49, 0x06, 0x5f, 0xbc, 0xe0, 0xee, 0x86, 0x59, 0xdc, 0xd6, 0x1d, 0xec, + 0xd5, 0x92, 0x09, 0x30, 0x0e, 0x62, 0xfe, 0x07, 0xf4, 0x6c, 0xe1, 0xa0, 0x6b, 0x44, 0xa0, 0xfb, + 0x6b, 0x14, 0xd1, 0xfe, 0xc4, 0xc2, 0xa8, 0x89, 0xd1, 0x4c, 0x1f, 0xac, 0x9f, 0x93, 0xe1, 0x44, + 0xc3, 0xdc, 0xda, 0xea, 0x60, 0x4f, 0x4c, 0x98, 0x7a, 0x67, 0x22, 0x6d, 0x94, 0x70, 0x91, 0x9d, + 0x20, 0xf3, 0x7e, 0xdd, 0x3f, 0x4a, 0xe6, 0xbe, 0xf0, 0x27, 0xa6, 0x62, 0x67, 0x51, 0x44, 0x5c, + 0x7d, 0xf9, 0x8c, 0x40, 0x41, 0x2c, 0xe0, 0xb3, 0x30, 0xd9, 0xf4, 0x81, 0xf8, 0xbc, 0x04, 0xb3, + 0xf4, 0xe6, 0x4a, 0x4f, 0x41, 0xef, 0x1d, 0x21, 0x00, 0xe8, 0x3b, 0x19, 0x51, 0x3f, 0x5b, 0x22, + 0x13, 0x8e, 0x93, 0x08, 0x11, 0x8b, 0x05, 0x55, 0x19, 0x48, 0x2e, 0x7d, 0xd1, 0xfe, 0xb1, 0x0c, + 0xd3, 0xcb, 0xd8, 0x6b, 0x69, 0x76, 0xe2, 0x9e, 0xe8, 0x0c, 0xcc, 0x90, 0xeb, 0xdb, 0x6a, 0xec, + 0x98, 0x24, 0x5d, 0x35, 0xe3, 0xd2, 0x94, 0xeb, 0x60, 0xf6, 0x3c, 0xde, 0x34, 0x2d, 0x5c, 0xe3, + 0xce, 0x52, 0xf2, 0x89, 0x11, 0xe1, 0xe9, 0xb8, 0x38, 0x68, 0x0b, 0x3c, 0x36, 0x37, 0xed, 0x17, + 0x66, 0xa8, 0x2a, 0x11, 0x63, 0xce, 0x53, 0x60, 0x92, 0x21, 0xef, 0x99, 0x69, 0x71, 0xfd, 0xa2, + 0x9f, 0x17, 0xbd, 0xd6, 0x47, 0xb4, 0xcc, 0x21, 0xfa, 0xc4, 0x24, 0x4c, 0x8c, 0xe5, 0x7e, 0xf7, + 0x42, 0xa8, 0xfc, 0x85, 0x4b, 0x95, 0xb6, 0x8d, 0xd6, 0x92, 0x61, 0x7a, 0x1a, 0xc0, 0x6f, 0x1c, + 0x5e, 0x58, 0x8b, 0x50, 0x0a, 0x1f, 0xb9, 0x3e, 0xf6, 0xa0, 0x5e, 0xaf, 0x38, 0x08, 0x3b, 0x23, + 0x06, 0x46, 0xec, 0x80, 0x9f, 0x08, 0x27, 0xe9, 0xa3, 0xf3, 0x49, 0x19, 0x4e, 0xf8, 0xe7, 0x8f, + 0x56, 0x35, 0x3b, 0x68, 0x77, 0xa5, 0x64, 0x10, 0x71, 0x07, 0x3e, 0xfc, 0xc6, 0xf2, 0xcd, 0x64, + 0x63, 0x46, 0x5f, 0x4e, 0x46, 0x8b, 0x8e, 0x72, 0x13, 0x1c, 0x33, 0x76, 0x77, 0x7c, 0xa9, 0x93, + 0x16, 0xcf, 0x5a, 0xf8, 0xfe, 0x0f, 0x49, 0x46, 0x26, 0x11, 0xe6, 0xc7, 0x32, 0xa7, 0xe4, 0x8e, + 0x74, 0x3d, 0x21, 0x11, 0x8c, 0xe8, 0x9f, 0x33, 0x89, 0x7a, 0xb7, 0xc1, 0x67, 0xbe, 0x12, 0xf4, + 0x52, 0x87, 0x78, 0xe0, 0xeb, 0xcc, 0x04, 0xe4, 0xca, 0x3b, 0x5d, 0xe7, 0xd2, 0x99, 0xc7, 0xc2, + 0x6c, 0xdd, 0xb1, 0xb0, 0xb6, 0x13, 0xda, 0x19, 0x70, 0xcc, 0x0b, 0xd8, 0xf0, 0x76, 0x06, 0xc8, + 0xcb, 0xed, 0xb7, 0xc1, 0x84, 0x61, 0x36, 0xb5, 0x5d, 0x67, 0x5b, 0xb9, 0x7a, 0xdf, 0x91, 0x7a, + 0x06, 0x7e, 0x8d, 0xc5, 0x30, 0xfa, 0xf2, 0x1d, 0x64, 0x6d, 0x38, 0x6f, 0x98, 0xc5, 0x5d, 0x67, + 0x7b, 0xe1, 0xaa, 0x8f, 0xfd, 0xcd, 0xe9, 0xcc, 0xa7, 0xfe, 0xe6, 0x74, 0xe6, 0x4b, 0x7f, 0x73, + 0x3a, 0xf3, 0x4b, 0x5f, 0x39, 0x7d, 0xe4, 0x53, 0x5f, 0x39, 0x7d, 0xe4, 0xf3, 0x5f, 0x39, 0x7d, + 0xe4, 0xc7, 0xa5, 0xee, 0xf9, 0xf3, 0x79, 0x42, 0xe5, 0x49, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xff, + 0xff, 0xd9, 0x46, 0xa2, 0x63, 0x08, 0x08, 0x02, 0x00, } func (m *Rpc) Marshal() (dAtA []byte, err error) { @@ -118881,261 +118426,6 @@ func (m *RpcChatUnsubscribeResponseError) MarshalToSizedBuffer(dAtA []byte) (int return len(dAtA) - i, nil } -func (m *RpcApi) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *RpcApi) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *RpcApi) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil -} - -func (m *RpcApiStartServer) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *RpcApiStartServer) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *RpcApiStartServer) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil -} - -func (m *RpcApiStartServerRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *RpcApiStartServerRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *RpcApiStartServerRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil -} - -func (m *RpcApiStartServerResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *RpcApiStartServerResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *RpcApiStartServerResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.Error != nil { - { - size, err := m.Error.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintCommands(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *RpcApiStartServerResponseError) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *RpcApiStartServerResponseError) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *RpcApiStartServerResponseError) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Description) > 0 { - i -= len(m.Description) - copy(dAtA[i:], m.Description) - i = encodeVarintCommands(dAtA, i, uint64(len(m.Description))) - i-- - dAtA[i] = 0x12 - } - if m.Code != 0 { - i = encodeVarintCommands(dAtA, i, uint64(m.Code)) - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil -} - -func (m *RpcApiStopServer) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *RpcApiStopServer) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *RpcApiStopServer) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil -} - -func (m *RpcApiStopServerRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *RpcApiStopServerRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *RpcApiStopServerRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil -} - -func (m *RpcApiStopServerResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *RpcApiStopServerResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *RpcApiStopServerResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.Error != nil { - { - size, err := m.Error.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintCommands(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *RpcApiStopServerResponseError) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *RpcApiStopServerResponseError) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *RpcApiStopServerResponseError) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Description) > 0 { - i -= len(m.Description) - copy(dAtA[i:], m.Description) - i = encodeVarintCommands(dAtA, i, uint64(len(m.Description))) - i-- - dAtA[i] = 0x12 - } - if m.Code != 0 { - i = encodeVarintCommands(dAtA, i, uint64(m.Code)) - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil -} - func (m *Empty) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -138342,109 +137632,6 @@ func (m *RpcChatUnsubscribeResponseError) Size() (n int) { return n } -func (m *RpcApi) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - return n -} - -func (m *RpcApiStartServer) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - return n -} - -func (m *RpcApiStartServerRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - return n -} - -func (m *RpcApiStartServerResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Error != nil { - l = m.Error.Size() - n += 1 + l + sovCommands(uint64(l)) - } - return n -} - -func (m *RpcApiStartServerResponseError) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Code != 0 { - n += 1 + sovCommands(uint64(m.Code)) - } - l = len(m.Description) - if l > 0 { - n += 1 + l + sovCommands(uint64(l)) - } - return n -} - -func (m *RpcApiStopServer) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - return n -} - -func (m *RpcApiStopServerRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - return n -} - -func (m *RpcApiStopServerResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Error != nil { - l = m.Error.Size() - n += 1 + l + sovCommands(uint64(l)) - } - return n -} - -func (m *RpcApiStopServerResponseError) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Code != 0 { - n += 1 + sovCommands(uint64(m.Code)) - } - l = len(m.Description) - if l > 0 { - n += 1 + l + sovCommands(uint64(l)) - } - return n -} - func (m *Empty) Size() (n int) { if m == nil { return 0 @@ -260653,630 +259840,6 @@ func (m *RpcChatUnsubscribeResponseError) Unmarshal(dAtA []byte) error { } return nil } -func (m *RpcApi) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowCommands - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Api: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Api: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipCommands(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthCommands - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *RpcApiStartServer) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowCommands - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: StartServer: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: StartServer: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipCommands(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthCommands - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *RpcApiStartServerRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowCommands - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Request: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Request: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipCommands(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthCommands - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *RpcApiStartServerResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowCommands - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Response: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Response: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowCommands - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthCommands - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthCommands - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Error == nil { - m.Error = &RpcApiStartServerResponseError{} - } - if err := m.Error.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipCommands(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthCommands - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *RpcApiStartServerResponseError) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowCommands - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Error: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Error: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Code", wireType) - } - m.Code = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowCommands - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Code |= RpcApiStartServerResponseErrorCode(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowCommands - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthCommands - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthCommands - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Description = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipCommands(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthCommands - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *RpcApiStopServer) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowCommands - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: StopServer: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: StopServer: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipCommands(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthCommands - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *RpcApiStopServerRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowCommands - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Request: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Request: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipCommands(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthCommands - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *RpcApiStopServerResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowCommands - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Response: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Response: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowCommands - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthCommands - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthCommands - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Error == nil { - m.Error = &RpcApiStopServerResponseError{} - } - if err := m.Error.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipCommands(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthCommands - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *RpcApiStopServerResponseError) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowCommands - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Error: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Error: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Code", wireType) - } - m.Code = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowCommands - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Code |= RpcApiStopServerResponseErrorCode(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowCommands - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthCommands - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthCommands - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Description = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipCommands(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthCommands - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} func (m *Empty) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/pb/protos/commands.proto b/pb/protos/commands.proto index 6825d5430..1673c990e 100644 --- a/pb/protos/commands.proto +++ b/pb/protos/commands.proto @@ -7849,55 +7849,8 @@ message Rpc { } } } - message Api { - message StartServer { - message Request { - // empty - } - - message Response { - Error error = 1; - - message Error { - Code code = 1; - string description = 2; - - enum Code { - NULL = 0; - UNKNOWN_ERROR = 1; - BAD_INPUT = 2; - PORT_ALREADY_USED = 3; - SERVER_ALREADY_STARTED = 4; - } - } - } - } - message StopServer { - message Request{ - // empty - } - - message Response { - Error error = 1; - - message Error { - Code code = 1; - string description = 2; - - enum Code { - NULL = 0; - UNKNOWN_ERROR = 1; - BAD_INPUT = 2; - SERVER_NOT_STARTED = 3; - } - } - } - } - } } - - message Empty { } diff --git a/pb/protos/service/service.proto b/pb/protos/service/service.proto index 101d48af2..36579a606 100644 --- a/pb/protos/service/service.proto +++ b/pb/protos/service/service.proto @@ -388,9 +388,4 @@ service ClientCommands { rpc ChatSubscribeLastMessages (anytype.Rpc.Chat.SubscribeLastMessages.Request) returns (anytype.Rpc.Chat.SubscribeLastMessages.Response); rpc ChatUnsubscribe (anytype.Rpc.Chat.Unsubscribe.Request) returns (anytype.Rpc.Chat.Unsubscribe.Response); rpc ObjectChatAdd (anytype.Rpc.Object.ChatAdd.Request) returns (anytype.Rpc.Object.ChatAdd.Response); - - // API - // *** - rpc ApiStartServer (anytype.Rpc.Api.StartServer.Request) returns (anytype.Rpc.Api.StartServer.Response); - rpc ApiStopServer (anytype.Rpc.Api.StopServer.Request) returns (anytype.Rpc.Api.StopServer.Response); } diff --git a/pb/service/mock_service/mock_ClientCommandsServer.go b/pb/service/mock_service/mock_ClientCommandsServer.go index e36161dac..a4b00d152 100644 --- a/pb/service/mock_service/mock_ClientCommandsServer.go +++ b/pb/service/mock_service/mock_ClientCommandsServer.go @@ -661,104 +661,6 @@ func (_c *MockClientCommandsServer_AccountStop_Call) RunAndReturn(run func(conte return _c } -// ApiStartServer provides a mock function with given fields: _a0, _a1 -func (_m *MockClientCommandsServer) ApiStartServer(_a0 context.Context, _a1 *pb.RpcApiStartServerRequest) *pb.RpcApiStartServerResponse { - ret := _m.Called(_a0, _a1) - - if len(ret) == 0 { - panic("no return value specified for ApiStartServer") - } - - var r0 *pb.RpcApiStartServerResponse - if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcApiStartServerRequest) *pb.RpcApiStartServerResponse); ok { - r0 = rf(_a0, _a1) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*pb.RpcApiStartServerResponse) - } - } - - return r0 -} - -// MockClientCommandsServer_ApiStartServer_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ApiStartServer' -type MockClientCommandsServer_ApiStartServer_Call struct { - *mock.Call -} - -// ApiStartServer is a helper method to define mock.On call -// - _a0 context.Context -// - _a1 *pb.RpcApiStartServerRequest -func (_e *MockClientCommandsServer_Expecter) ApiStartServer(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ApiStartServer_Call { - return &MockClientCommandsServer_ApiStartServer_Call{Call: _e.mock.On("ApiStartServer", _a0, _a1)} -} - -func (_c *MockClientCommandsServer_ApiStartServer_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcApiStartServerRequest)) *MockClientCommandsServer_ApiStartServer_Call { - _c.Call.Run(func(args mock.Arguments) { - run(args[0].(context.Context), args[1].(*pb.RpcApiStartServerRequest)) - }) - return _c -} - -func (_c *MockClientCommandsServer_ApiStartServer_Call) Return(_a0 *pb.RpcApiStartServerResponse) *MockClientCommandsServer_ApiStartServer_Call { - _c.Call.Return(_a0) - return _c -} - -func (_c *MockClientCommandsServer_ApiStartServer_Call) RunAndReturn(run func(context.Context, *pb.RpcApiStartServerRequest) *pb.RpcApiStartServerResponse) *MockClientCommandsServer_ApiStartServer_Call { - _c.Call.Return(run) - return _c -} - -// ApiStopServer provides a mock function with given fields: _a0, _a1 -func (_m *MockClientCommandsServer) ApiStopServer(_a0 context.Context, _a1 *pb.RpcApiStopServerRequest) *pb.RpcApiStopServerResponse { - ret := _m.Called(_a0, _a1) - - if len(ret) == 0 { - panic("no return value specified for ApiStopServer") - } - - var r0 *pb.RpcApiStopServerResponse - if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcApiStopServerRequest) *pb.RpcApiStopServerResponse); ok { - r0 = rf(_a0, _a1) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*pb.RpcApiStopServerResponse) - } - } - - return r0 -} - -// MockClientCommandsServer_ApiStopServer_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ApiStopServer' -type MockClientCommandsServer_ApiStopServer_Call struct { - *mock.Call -} - -// ApiStopServer is a helper method to define mock.On call -// - _a0 context.Context -// - _a1 *pb.RpcApiStopServerRequest -func (_e *MockClientCommandsServer_Expecter) ApiStopServer(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_ApiStopServer_Call { - return &MockClientCommandsServer_ApiStopServer_Call{Call: _e.mock.On("ApiStopServer", _a0, _a1)} -} - -func (_c *MockClientCommandsServer_ApiStopServer_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcApiStopServerRequest)) *MockClientCommandsServer_ApiStopServer_Call { - _c.Call.Run(func(args mock.Arguments) { - run(args[0].(context.Context), args[1].(*pb.RpcApiStopServerRequest)) - }) - return _c -} - -func (_c *MockClientCommandsServer_ApiStopServer_Call) Return(_a0 *pb.RpcApiStopServerResponse) *MockClientCommandsServer_ApiStopServer_Call { - _c.Call.Return(_a0) - return _c -} - -func (_c *MockClientCommandsServer_ApiStopServer_Call) RunAndReturn(run func(context.Context, *pb.RpcApiStopServerRequest) *pb.RpcApiStopServerResponse) *MockClientCommandsServer_ApiStopServer_Call { - _c.Call.Return(run) - return _c -} - // AppGetVersion provides a mock function with given fields: _a0, _a1 func (_m *MockClientCommandsServer) AppGetVersion(_a0 context.Context, _a1 *pb.RpcAppGetVersionRequest) *pb.RpcAppGetVersionResponse { ret := _m.Called(_a0, _a1) diff --git a/pb/service/service.pb.go b/pb/service/service.pb.go index e2e4f2103..8adc4974b 100644 --- a/pb/service/service.pb.go +++ b/pb/service/service.pb.go @@ -26,345 +26,343 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package func init() { proto.RegisterFile("pb/protos/service/service.proto", fileDescriptor_93a29dc403579097) } var fileDescriptor_93a29dc403579097 = []byte{ - // 5406 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x9d, 0xdf, 0x6f, 0x1d, 0x49, - 0x56, 0xf8, 0xc7, 0x2f, 0xdf, 0xf9, 0xd2, 0xcb, 0x0e, 0x70, 0x07, 0x86, 0xd9, 0x61, 0x37, 0xc9, - 0x64, 0x12, 0x3b, 0x89, 0xe3, 0xeb, 0x4c, 0x32, 0x3f, 0x56, 0xbb, 0x48, 0xc8, 0xb1, 0x13, 0x8f, - 0x59, 0xdb, 0x31, 0xbe, 0xd7, 0x89, 0x34, 0x12, 0x12, 0xe5, 0x7b, 0xcb, 0xd7, 0x8d, 0xfb, 0x76, - 0xf5, 0x76, 0xd7, 0xbd, 0xce, 0x5d, 0x04, 0x02, 0x81, 0x40, 0x20, 0x10, 0x2b, 0x7e, 0xbd, 0x22, - 0xf1, 0xc4, 0x9f, 0xc2, 0xe3, 0x3e, 0xf2, 0x88, 0x66, 0xfe, 0x00, 0xfe, 0x05, 0xd4, 0xd5, 0xf5, - 0xf3, 0xf4, 0x39, 0xd5, 0xed, 0x7d, 0x4a, 0xe4, 0xf3, 0x39, 0xe7, 0x54, 0x75, 0x55, 0x9d, 0x3a, - 0x55, 0x5d, 0x5d, 0x37, 0xb9, 0x5d, 0x9c, 0x6f, 0x17, 0xa5, 0x90, 0xa2, 0xda, 0xae, 0x78, 0xb9, - 0x4c, 0x27, 0xdc, 0xfc, 0x3b, 0x54, 0x7f, 0x1e, 0xbc, 0xcb, 0xf2, 0x95, 0x5c, 0x15, 0xfc, 0xa3, - 0x0f, 0x1d, 0x39, 0x11, 0xf3, 0x39, 0xcb, 0xa7, 0x55, 0x83, 0x7c, 0xf4, 0x81, 0x93, 0xf0, 0x25, - 0xcf, 0xa5, 0xfe, 0xfb, 0xd3, 0xff, 0xfc, 0xdf, 0xb5, 0xe4, 0xbd, 0xdd, 0x2c, 0xe5, 0xb9, 0xdc, - 0xd5, 0x1a, 0x83, 0xaf, 0x93, 0xef, 0xee, 0x14, 0xc5, 0x3e, 0x97, 0xaf, 0x79, 0x59, 0xa5, 0x22, - 0x1f, 0x7c, 0x32, 0xd4, 0x0e, 0x86, 0xa7, 0xc5, 0x64, 0xb8, 0x53, 0x14, 0x43, 0x27, 0x1c, 0x9e, - 0xf2, 0x9f, 0x2e, 0x78, 0x25, 0x3f, 0xba, 0x17, 0x87, 0xaa, 0x42, 0xe4, 0x15, 0x1f, 0x5c, 0x24, - 0xbf, 0xb1, 0x53, 0x14, 0x23, 0x2e, 0xf7, 0x78, 0x5d, 0x81, 0x91, 0x64, 0x92, 0x0f, 0x36, 0x5a, - 0xaa, 0x21, 0x60, 0x7d, 0x3c, 0xe8, 0x06, 0xb5, 0x9f, 0x71, 0xf2, 0x9d, 0xda, 0xcf, 0xe5, 0x42, - 0x4e, 0xc5, 0x75, 0x3e, 0xf8, 0xb8, 0xad, 0xa8, 0x45, 0xd6, 0xf6, 0xdd, 0x18, 0xa2, 0xad, 0xbe, - 0x49, 0x7e, 0xf5, 0x0d, 0xcb, 0x32, 0x2e, 0x77, 0x4b, 0x5e, 0x17, 0x3c, 0xd4, 0x69, 0x44, 0xc3, - 0x46, 0x66, 0xed, 0x7e, 0x12, 0x65, 0xb4, 0xe1, 0xaf, 0x93, 0xef, 0x36, 0x92, 0x53, 0x3e, 0x11, - 0x4b, 0x5e, 0x0e, 0x50, 0x2d, 0x2d, 0x24, 0x1e, 0x79, 0x0b, 0x82, 0xb6, 0x77, 0x45, 0xbe, 0xe4, - 0xa5, 0xc4, 0x6d, 0x6b, 0x61, 0xdc, 0xb6, 0x83, 0xb4, 0xed, 0xbf, 0x5d, 0x4b, 0xbe, 0xbf, 0x33, - 0x99, 0x88, 0x45, 0x2e, 0x0f, 0xc5, 0x84, 0x65, 0x87, 0x69, 0x7e, 0x75, 0xcc, 0xaf, 0x77, 0x2f, - 0x6b, 0x3e, 0x9f, 0xf1, 0xc1, 0xb3, 0xf0, 0xa9, 0x36, 0xe8, 0xd0, 0xb2, 0x43, 0x1f, 0xb6, 0xbe, - 0x3f, 0xbb, 0x99, 0x92, 0x2e, 0xcb, 0x3f, 0xae, 0x25, 0xb7, 0x60, 0x59, 0x46, 0x22, 0x5b, 0x72, - 0x57, 0x9a, 0xcf, 0x3b, 0x0c, 0x87, 0xb8, 0x2d, 0xcf, 0x17, 0x37, 0x55, 0xd3, 0x25, 0xca, 0x92, - 0xf7, 0xfd, 0xee, 0x32, 0xe2, 0x95, 0x1a, 0x4e, 0x0f, 0xe9, 0x1e, 0xa1, 0x11, 0xeb, 0xf9, 0x51, - 0x1f, 0x54, 0x7b, 0x4b, 0x93, 0x81, 0xf6, 0x96, 0x89, 0xca, 0x3a, 0x7b, 0x80, 0x5a, 0xf0, 0x08, - 0xeb, 0xeb, 0x61, 0x0f, 0x52, 0xbb, 0xfa, 0xa3, 0xe4, 0xd7, 0xde, 0x88, 0xf2, 0xaa, 0x2a, 0xd8, - 0x84, 0xeb, 0xa1, 0x70, 0x3f, 0xd4, 0x36, 0x52, 0x38, 0x1a, 0xd6, 0xbb, 0x30, 0xaf, 0xd3, 0x1a, - 0xe1, 0xab, 0x82, 0xc3, 0x18, 0xe4, 0x14, 0x6b, 0x21, 0xd5, 0x69, 0x21, 0xa4, 0x6d, 0x5f, 0x25, - 0x03, 0x67, 0xfb, 0xfc, 0x8f, 0xf9, 0x44, 0xee, 0x4c, 0xa7, 0xb0, 0x55, 0x9c, 0xae, 0x22, 0x86, - 0x3b, 0xd3, 0x29, 0xd5, 0x2a, 0x38, 0xaa, 0x9d, 0x5d, 0x27, 0x1f, 0x00, 0x67, 0x87, 0x69, 0xa5, - 0x1c, 0x6e, 0xc5, 0xad, 0x68, 0xcc, 0x3a, 0x1d, 0xf6, 0xc5, 0xb5, 0xe3, 0x3f, 0x5f, 0x4b, 0xbe, - 0x87, 0x78, 0x3e, 0xe5, 0x73, 0xb1, 0xe4, 0x83, 0x27, 0xdd, 0xd6, 0x1a, 0xd2, 0xfa, 0xff, 0xf4, - 0x06, 0x1a, 0x48, 0x37, 0x19, 0xf1, 0x8c, 0x4f, 0x24, 0xd9, 0x4d, 0x1a, 0x71, 0x67, 0x37, 0xb1, - 0x98, 0x37, 0xc2, 0x8c, 0x70, 0x9f, 0xcb, 0xdd, 0x45, 0x59, 0xf2, 0x5c, 0x92, 0x6d, 0xe9, 0x90, - 0xce, 0xb6, 0x0c, 0x50, 0xa4, 0x3e, 0xfb, 0x5c, 0xee, 0x64, 0x19, 0x59, 0x9f, 0x46, 0xdc, 0x59, - 0x1f, 0x8b, 0x69, 0x0f, 0x93, 0xe4, 0xd7, 0xbd, 0x27, 0x26, 0x0f, 0xf2, 0x0b, 0x31, 0xa0, 0x9f, - 0x85, 0x92, 0x5b, 0x1f, 0x1b, 0x9d, 0x1c, 0x52, 0x8d, 0x17, 0x6f, 0x0b, 0x51, 0xd2, 0xcd, 0xd2, - 0x88, 0x3b, 0xab, 0x61, 0x31, 0xed, 0xe1, 0x0f, 0x93, 0xf7, 0x74, 0x94, 0x34, 0xf3, 0xd9, 0x3d, - 0x34, 0x84, 0xc2, 0x09, 0xed, 0x7e, 0x07, 0xe5, 0x82, 0x83, 0x96, 0xe9, 0xe0, 0xf3, 0x09, 0xaa, - 0x07, 0x42, 0xcf, 0xbd, 0x38, 0xd4, 0xb2, 0xbd, 0xc7, 0x33, 0x4e, 0xda, 0x6e, 0x84, 0x1d, 0xb6, - 0x2d, 0xa4, 0x6d, 0x97, 0xc9, 0x6f, 0xd9, 0xc7, 0x52, 0xcf, 0xa3, 0x4a, 0x5e, 0x07, 0xe9, 0x4d, - 0xa2, 0xde, 0x3e, 0x64, 0x7d, 0x3d, 0xee, 0x07, 0xb7, 0xea, 0xa3, 0x47, 0x20, 0x5e, 0x1f, 0x30, - 0xfe, 0xee, 0xc5, 0x21, 0x6d, 0xfb, 0xef, 0xd6, 0x92, 0x1f, 0x68, 0xd9, 0x8b, 0x9c, 0x9d, 0x67, - 0x5c, 0x4d, 0x89, 0xc7, 0x5c, 0x5e, 0x8b, 0xf2, 0x6a, 0xb4, 0xca, 0x27, 0xc4, 0xf4, 0x8f, 0xc3, - 0x1d, 0xd3, 0x3f, 0xa9, 0xe4, 0x65, 0x7c, 0xba, 0xa2, 0x52, 0x14, 0x30, 0xe3, 0x33, 0x35, 0x90, - 0xa2, 0xa0, 0x32, 0xbe, 0x10, 0x69, 0x59, 0x3d, 0xaa, 0xc3, 0x26, 0x6e, 0xf5, 0xc8, 0x8f, 0x93, - 0x77, 0x63, 0x88, 0x0b, 0x5b, 0xa6, 0x03, 0x8b, 0xfc, 0x22, 0x9d, 0x9d, 0x15, 0xd3, 0xba, 0x1b, - 0x3f, 0xc4, 0x7b, 0xa8, 0x87, 0x10, 0x61, 0x8b, 0x40, 0xb5, 0xb7, 0x7f, 0x70, 0x89, 0x91, 0x1e, - 0x4a, 0x2f, 0x4b, 0x31, 0x3f, 0xe4, 0x33, 0x36, 0x59, 0xe9, 0xf1, 0xff, 0x59, 0x6c, 0xe0, 0x41, - 0xda, 0x16, 0xe2, 0xf3, 0x1b, 0x6a, 0xe9, 0xf2, 0xfc, 0xfb, 0x5a, 0x72, 0xcf, 0x54, 0xff, 0x92, - 0xe5, 0x33, 0xae, 0xdb, 0xb3, 0x29, 0xfd, 0x4e, 0x3e, 0x3d, 0xe5, 0x95, 0x64, 0xa5, 0x1c, 0xfc, - 0x08, 0xaf, 0x64, 0x4c, 0xc7, 0x96, 0xed, 0xc7, 0xbf, 0x94, 0xae, 0x6b, 0xf5, 0x51, 0x1d, 0xd8, - 0x74, 0x08, 0x08, 0x5b, 0x5d, 0x49, 0x60, 0x00, 0xb8, 0x1b, 0x43, 0x5c, 0xab, 0x2b, 0xc1, 0x41, - 0xbe, 0x4c, 0x25, 0xdf, 0xe7, 0x39, 0x2f, 0xdb, 0xad, 0xde, 0xa8, 0x86, 0x08, 0xd1, 0xea, 0x04, - 0xea, 0x82, 0x4d, 0xe0, 0xcd, 0x4e, 0x8e, 0x9b, 0x11, 0x23, 0xad, 0xe9, 0xf1, 0x71, 0x3f, 0xd8, - 0xad, 0xee, 0x3c, 0x9f, 0xa7, 0x7c, 0x29, 0xae, 0xe0, 0xea, 0xce, 0x37, 0xd1, 0x00, 0xc4, 0xea, - 0x0e, 0x05, 0xdd, 0x0c, 0xe6, 0xf9, 0x79, 0x9d, 0xf2, 0x6b, 0x30, 0x83, 0xf9, 0xca, 0xb5, 0x98, - 0x98, 0xc1, 0x10, 0x4c, 0x7b, 0x38, 0x4e, 0x7e, 0x45, 0x09, 0x7f, 0x5f, 0xa4, 0xf9, 0xe0, 0x36, - 0xa2, 0x54, 0x0b, 0xac, 0xd5, 0x3b, 0x34, 0x00, 0x4a, 0x5c, 0xff, 0x75, 0x97, 0xe5, 0x13, 0x9e, - 0xa1, 0x25, 0x76, 0xe2, 0x68, 0x89, 0x03, 0xcc, 0xa5, 0x0e, 0x4a, 0x58, 0xc7, 0xaf, 0xd1, 0x25, - 0x2b, 0xd3, 0x7c, 0x36, 0xc0, 0x74, 0x3d, 0x39, 0x91, 0x3a, 0x60, 0x1c, 0xe8, 0xc2, 0x5a, 0x71, - 0xa7, 0x28, 0xca, 0x3a, 0x2c, 0x62, 0x5d, 0x38, 0x44, 0xa2, 0x5d, 0xb8, 0x85, 0xe2, 0xde, 0xf6, - 0xf8, 0x24, 0x4b, 0xf3, 0xa8, 0x37, 0x8d, 0xf4, 0xf1, 0xe6, 0x50, 0xd0, 0x79, 0x0f, 0x39, 0x5b, - 0x72, 0x53, 0x33, 0xec, 0xc9, 0xf8, 0x40, 0xb4, 0xf3, 0x02, 0xd0, 0xad, 0xd3, 0x94, 0xf8, 0x88, - 0x5d, 0xf1, 0xfa, 0x01, 0xf3, 0x7a, 0x5e, 0x1b, 0x60, 0xfa, 0x01, 0x41, 0xac, 0xd3, 0x70, 0x52, - 0xbb, 0x5a, 0x24, 0x1f, 0x28, 0xf9, 0x09, 0x2b, 0x65, 0x3a, 0x49, 0x0b, 0x96, 0x9b, 0xfc, 0x1f, - 0x1b, 0xd7, 0x2d, 0xca, 0xba, 0xdc, 0xea, 0x49, 0x6b, 0xb7, 0xff, 0xb6, 0x96, 0x7c, 0x0c, 0xfd, - 0x9e, 0xf0, 0x72, 0x9e, 0xaa, 0x65, 0x64, 0xd5, 0x04, 0xe1, 0xc1, 0x97, 0x71, 0xa3, 0x2d, 0x05, - 0x5b, 0x9a, 0x1f, 0xde, 0x5c, 0xd1, 0x25, 0x43, 0x23, 0x9d, 0x5a, 0xbf, 0x2a, 0xa7, 0xad, 0x6d, - 0x96, 0x91, 0xc9, 0x97, 0x95, 0x90, 0x48, 0x86, 0x5a, 0x10, 0x18, 0xe1, 0x67, 0x79, 0x65, 0xac, - 0x63, 0x23, 0xdc, 0x89, 0xa3, 0x23, 0x3c, 0xc0, 0xdc, 0x08, 0x3f, 0x59, 0x9c, 0x67, 0x69, 0x75, - 0x99, 0xe6, 0x33, 0x9d, 0xf9, 0x86, 0xba, 0x4e, 0x0c, 0x93, 0xdf, 0x8d, 0x4e, 0x0e, 0x73, 0xa2, - 0x3b, 0x0b, 0xe9, 0x04, 0x74, 0x93, 0x8d, 0x4e, 0xce, 0xad, 0x0f, 0x9c, 0xb4, 0x5e, 0x39, 0x82, - 0xf5, 0x81, 0xa7, 0x5a, 0x4b, 0x89, 0xf5, 0x41, 0x9b, 0xd2, 0xe6, 0x45, 0xf2, 0x9b, 0x7e, 0x1d, - 0x2a, 0x91, 0x2d, 0xf9, 0x59, 0x99, 0x0e, 0x1e, 0xd1, 0xe5, 0x33, 0x8c, 0x75, 0xb5, 0xd9, 0x8b, - 0x75, 0x81, 0xca, 0x11, 0xfb, 0x5c, 0x8e, 0x24, 0x93, 0x8b, 0x0a, 0x04, 0x2a, 0xcf, 0x86, 0x45, - 0x88, 0x40, 0x45, 0xa0, 0xda, 0xdb, 0x1f, 0x24, 0x49, 0xb3, 0xe8, 0x56, 0x1b, 0x23, 0xe1, 0xdc, - 0xa3, 0x57, 0xe3, 0xc1, 0xae, 0xc8, 0xc7, 0x11, 0xc2, 0x25, 0x3c, 0xcd, 0xdf, 0xd5, 0x7e, 0xcf, - 0x00, 0xd5, 0x50, 0x22, 0x22, 0xe1, 0x01, 0x08, 0x2c, 0xe8, 0xe8, 0x52, 0x5c, 0xe3, 0x05, 0xad, - 0x25, 0xf1, 0x82, 0x6a, 0xc2, 0xed, 0xc0, 0xea, 0x82, 0x62, 0x3b, 0xb0, 0xa6, 0x18, 0xb1, 0x1d, - 0x58, 0xc8, 0xb8, 0x3e, 0xe3, 0x1b, 0x7e, 0x2e, 0xc4, 0xd5, 0x9c, 0x95, 0x57, 0xa0, 0xcf, 0x04, - 0xca, 0x86, 0x21, 0xfa, 0x0c, 0xc5, 0xba, 0x3e, 0xe3, 0x3b, 0xac, 0xd3, 0xe5, 0xb3, 0x32, 0x03, - 0x7d, 0x26, 0xb0, 0xa1, 0x11, 0xa2, 0xcf, 0x10, 0xa8, 0x8b, 0x4e, 0xbe, 0xb7, 0x11, 0x87, 0x6b, - 0xfe, 0x40, 0x7d, 0xc4, 0xa9, 0x35, 0x3f, 0x82, 0xc1, 0x2e, 0xb4, 0x5f, 0xb2, 0xe2, 0x12, 0xef, - 0x42, 0x4a, 0x14, 0xef, 0x42, 0x06, 0x81, 0xed, 0x3d, 0xe2, 0xac, 0x9c, 0x5c, 0xe2, 0xed, 0xdd, - 0xc8, 0xe2, 0xed, 0x6d, 0x19, 0xd8, 0xde, 0x8d, 0xe0, 0x4d, 0x2a, 0x2f, 0x8f, 0xb8, 0x64, 0x78, - 0x7b, 0x87, 0x4c, 0xbc, 0xbd, 0x5b, 0xac, 0xcb, 0xc7, 0x7d, 0x87, 0xa3, 0xc5, 0x79, 0x35, 0x29, - 0xd3, 0x73, 0x3e, 0x88, 0x58, 0xb1, 0x10, 0x91, 0x8f, 0x93, 0xb0, 0xf6, 0xf9, 0xf3, 0xb5, 0xe4, - 0xb6, 0x69, 0x76, 0x51, 0x55, 0x7a, 0xee, 0x0b, 0xdd, 0x7f, 0x8e, 0xb7, 0x2f, 0x81, 0x13, 0x7b, - 0xe2, 0x3d, 0xd4, 0xbc, 0xdc, 0x00, 0x2f, 0xd2, 0x59, 0x5e, 0xd9, 0x42, 0x7d, 0xd9, 0xc7, 0xba, - 0xa7, 0x40, 0xe4, 0x06, 0xbd, 0x14, 0x5d, 0x5a, 0xa6, 0xdb, 0xc7, 0xc8, 0x0e, 0xa6, 0x15, 0x48, - 0xcb, 0xcc, 0xf3, 0xf6, 0x08, 0x22, 0x2d, 0xc3, 0x49, 0xd8, 0x15, 0xf6, 0x4b, 0xb1, 0x28, 0xaa, - 0x8e, 0xae, 0x00, 0xa0, 0x78, 0x57, 0x68, 0xc3, 0xda, 0xe7, 0xdb, 0xe4, 0xb7, 0xfd, 0xee, 0xe7, - 0x3f, 0xec, 0x2d, 0xba, 0x4f, 0x61, 0x8f, 0x78, 0xd8, 0x17, 0x77, 0x19, 0x85, 0xf1, 0x2c, 0xf7, - 0xb8, 0x64, 0x69, 0x56, 0x0d, 0xd6, 0x71, 0x1b, 0x46, 0x4e, 0x64, 0x14, 0x18, 0x07, 0xe3, 0xdb, - 0xde, 0xa2, 0xc8, 0xd2, 0x49, 0xfb, 0x8d, 0x84, 0xd6, 0xb5, 0xe2, 0x78, 0x7c, 0xf3, 0x31, 0x18, - 0xaf, 0xeb, 0xd4, 0x4f, 0xfd, 0x67, 0xbc, 0x2a, 0x38, 0x1e, 0xaf, 0x03, 0x24, 0x1e, 0xaf, 0x21, - 0x0a, 0xeb, 0x33, 0xe2, 0xf2, 0x90, 0xad, 0xc4, 0x82, 0x88, 0xd7, 0x56, 0x1c, 0xaf, 0x8f, 0x8f, - 0xb9, 0xb5, 0x81, 0xf5, 0x70, 0x90, 0x4b, 0x5e, 0xe6, 0x2c, 0x7b, 0x99, 0xb1, 0x59, 0x35, 0x20, - 0x62, 0x4c, 0x48, 0x11, 0x6b, 0x03, 0x9a, 0x46, 0x1e, 0xe3, 0x41, 0xf5, 0x92, 0x2d, 0x45, 0x99, - 0x4a, 0xfa, 0x31, 0x3a, 0xa4, 0xf3, 0x31, 0x06, 0x28, 0xea, 0x6d, 0xa7, 0x9c, 0x5c, 0xa6, 0x4b, - 0x3e, 0x8d, 0x78, 0x33, 0x48, 0x0f, 0x6f, 0x1e, 0x8a, 0x34, 0xda, 0x48, 0x2c, 0xca, 0x09, 0x27, - 0x1b, 0xad, 0x11, 0x77, 0x36, 0x9a, 0xc5, 0xb4, 0x87, 0xbf, 0x5a, 0x4b, 0x7e, 0xa7, 0x91, 0xfa, - 0xaf, 0x09, 0xf6, 0x58, 0x75, 0x79, 0x2e, 0x58, 0x39, 0x1d, 0x7c, 0x8a, 0xd9, 0x41, 0x51, 0xeb, - 0xfa, 0xe9, 0x4d, 0x54, 0xe0, 0x63, 0xad, 0xf3, 0x6e, 0x37, 0xe2, 0xd0, 0xc7, 0x1a, 0x20, 0xf1, - 0xc7, 0x0a, 0x51, 0x18, 0x40, 0x94, 0xbc, 0xd9, 0x92, 0x5b, 0x27, 0xf5, 0xc3, 0x7d, 0xb9, 0x8d, - 0x4e, 0x0e, 0xc6, 0xc7, 0x5a, 0x18, 0xf6, 0x96, 0x2d, 0xca, 0x06, 0xde, 0x63, 0x86, 0x7d, 0x71, - 0xd2, 0xb3, 0x1d, 0x15, 0x71, 0xcf, 0xad, 0x91, 0x31, 0xec, 0x8b, 0x13, 0x9e, 0xbd, 0xb0, 0x16, - 0xf3, 0x8c, 0x84, 0xb6, 0x61, 0x5f, 0x1c, 0x66, 0x5f, 0x9a, 0x31, 0xf3, 0xc2, 0xa3, 0x88, 0x1d, - 0x38, 0x37, 0x6c, 0xf6, 0x62, 0xb5, 0xc3, 0xbf, 0x59, 0x4b, 0xbe, 0xef, 0x3c, 0x1e, 0x89, 0x69, - 0x7a, 0xb1, 0x6a, 0xa0, 0xd7, 0x2c, 0x5b, 0xf0, 0x6a, 0xf0, 0x94, 0xb2, 0xd6, 0x66, 0x6d, 0x09, - 0x9e, 0xdd, 0x48, 0x07, 0x8e, 0x9d, 0x9d, 0xa2, 0xc8, 0x56, 0x63, 0x3e, 0x2f, 0x32, 0x72, 0xec, - 0x04, 0x48, 0x7c, 0xec, 0x40, 0x14, 0x66, 0xe5, 0x63, 0x51, 0xe7, 0xfc, 0x68, 0x56, 0xae, 0x44, - 0xf1, 0xac, 0xdc, 0x20, 0x30, 0x57, 0x1a, 0x8b, 0x5d, 0x91, 0x65, 0x7c, 0x22, 0xdb, 0x47, 0x0d, - 0xac, 0xa6, 0x23, 0xe2, 0xb9, 0x12, 0x20, 0xdd, 0xae, 0x9c, 0x59, 0x43, 0xb2, 0x92, 0x3f, 0x5f, - 0x1d, 0xa6, 0xf9, 0xd5, 0x00, 0x4f, 0x0b, 0x1c, 0x40, 0xec, 0xca, 0xa1, 0x20, 0x5c, 0xab, 0x9e, - 0xe5, 0x53, 0x81, 0xaf, 0x55, 0x6b, 0x49, 0x7c, 0xad, 0xaa, 0x09, 0x68, 0xf2, 0x94, 0x53, 0x26, - 0x6b, 0x49, 0xdc, 0xa4, 0x26, 0xb0, 0x50, 0xa8, 0xdf, 0xdd, 0x90, 0xa1, 0x10, 0xbc, 0xad, 0xd9, - 0xe8, 0xe4, 0x60, 0x0f, 0x35, 0x8b, 0xd6, 0x97, 0x5c, 0x4e, 0x2e, 0xf1, 0x1e, 0x1a, 0x20, 0xf1, - 0x1e, 0x0a, 0x51, 0x58, 0xa5, 0xb1, 0xb0, 0x8b, 0xee, 0x75, 0xbc, 0x7f, 0xb4, 0x16, 0xdc, 0x1b, - 0x9d, 0x1c, 0x5c, 0x46, 0x1e, 0xcc, 0xd5, 0x33, 0x43, 0x3b, 0x79, 0x23, 0x8b, 0x2f, 0x23, 0x2d, - 0x03, 0x4b, 0xdf, 0x08, 0xd4, 0x5e, 0xd6, 0x3a, 0xad, 0x18, 0xec, 0x66, 0x6d, 0x74, 0x72, 0xda, - 0xc9, 0xbf, 0xd8, 0x65, 0x5c, 0x23, 0x3d, 0x16, 0xf5, 0x18, 0x79, 0xcd, 0xb2, 0x74, 0xca, 0x24, - 0x1f, 0x8b, 0x2b, 0x9e, 0xe3, 0x2b, 0x26, 0x5d, 0xda, 0x86, 0x1f, 0x06, 0x0a, 0xf1, 0x15, 0x53, - 0x5c, 0x11, 0xf6, 0x93, 0x86, 0x3e, 0xab, 0xf8, 0x2e, 0xab, 0x88, 0x48, 0x16, 0x20, 0xf1, 0x7e, - 0x02, 0x51, 0x98, 0xaf, 0x36, 0xf2, 0x17, 0x6f, 0x0b, 0x5e, 0xa6, 0x3c, 0x9f, 0x70, 0x3c, 0x5f, - 0x85, 0x54, 0x3c, 0x5f, 0x45, 0x68, 0xb8, 0x56, 0xdb, 0x63, 0x92, 0x3f, 0x5f, 0x8d, 0xd3, 0x39, - 0xaf, 0x24, 0x9b, 0x17, 0xf8, 0x5a, 0x0d, 0x40, 0xf1, 0xb5, 0x5a, 0x1b, 0x6e, 0x6d, 0x0d, 0xd9, - 0x80, 0xd8, 0x3e, 0xa1, 0x04, 0x89, 0xc8, 0x09, 0x25, 0x02, 0x85, 0x0f, 0xd6, 0x01, 0xe8, 0x4b, - 0x82, 0x96, 0x95, 0xe8, 0x4b, 0x02, 0x9a, 0x6e, 0x6d, 0xb8, 0x59, 0x66, 0x54, 0x0f, 0xcd, 0x8e, - 0xa2, 0x8f, 0xfc, 0x21, 0xba, 0xd9, 0x8b, 0xc5, 0x77, 0xf8, 0x4e, 0x79, 0xc6, 0xd4, 0xb4, 0x15, - 0xd9, 0x46, 0x33, 0x4c, 0x9f, 0x1d, 0x3e, 0x8f, 0xd5, 0x0e, 0xff, 0x62, 0x2d, 0xf9, 0x08, 0xf3, - 0xf8, 0xaa, 0x50, 0x7e, 0x9f, 0x74, 0xdb, 0x6a, 0x48, 0xe2, 0x08, 0x56, 0x5c, 0x43, 0x97, 0xe1, - 0x4f, 0x92, 0x0f, 0x8d, 0xc8, 0x9d, 0xd0, 0xd2, 0x05, 0x08, 0x93, 0x36, 0x5b, 0x7e, 0xc8, 0x59, - 0xf7, 0xdb, 0xbd, 0x79, 0xb7, 0x1e, 0x0a, 0xcb, 0x55, 0x81, 0xf5, 0x90, 0xb5, 0xa1, 0xc5, 0xc4, - 0x7a, 0x08, 0xc1, 0xdc, 0xe8, 0xf4, 0xab, 0xf7, 0x26, 0x95, 0x97, 0x2a, 0xdf, 0x02, 0xa3, 0x33, - 0x28, 0xab, 0x85, 0x88, 0xd1, 0x49, 0xc2, 0x30, 0x23, 0x31, 0x60, 0x3d, 0x36, 0xb1, 0x58, 0x6e, - 0x0d, 0xf9, 0x23, 0xf3, 0x41, 0x37, 0x08, 0xfb, 0xab, 0x11, 0xeb, 0xa5, 0xcf, 0xa3, 0x98, 0x05, - 0xb0, 0xfc, 0xd9, 0xec, 0xc5, 0x6a, 0x87, 0x7f, 0x96, 0x7c, 0xaf, 0x55, 0xb1, 0x97, 0x9c, 0xc9, - 0x45, 0xc9, 0xa7, 0x83, 0xed, 0x8e, 0x72, 0x1b, 0xd0, 0xba, 0x7e, 0xd2, 0x5f, 0xa1, 0x95, 0xa3, - 0x1b, 0xae, 0xe9, 0x56, 0xb6, 0x0c, 0x4f, 0x63, 0x26, 0x43, 0x36, 0x9a, 0xa3, 0xd3, 0x3a, 0xad, - 0x65, 0xb6, 0xdf, 0xbb, 0x76, 0x96, 0x2c, 0xcd, 0xd4, 0xcb, 0xda, 0x4f, 0x63, 0x46, 0x03, 0x34, - 0xba, 0xcc, 0x26, 0x55, 0x5a, 0x91, 0x59, 0x8d, 0x71, 0x6f, 0x79, 0xf6, 0x98, 0x8e, 0x04, 0xc8, - 0xea, 0x6c, 0xab, 0x27, 0xad, 0xdd, 0x4a, 0x33, 0xe5, 0xd5, 0x7f, 0xf6, 0x3b, 0x39, 0xe6, 0x55, - 0xab, 0x22, 0x3d, 0x7d, 0xab, 0x27, 0xad, 0xbd, 0xfe, 0x69, 0xf2, 0x61, 0xdb, 0xab, 0x9e, 0x88, - 0xb6, 0x3b, 0x4d, 0x81, 0xb9, 0xe8, 0x49, 0x7f, 0x05, 0xb7, 0xa4, 0xf9, 0x2a, 0xad, 0xa4, 0x28, - 0x57, 0xa3, 0x4b, 0x71, 0x6d, 0xbe, 0x7c, 0x08, 0x47, 0xab, 0x06, 0x86, 0x1e, 0x41, 0x2c, 0x69, - 0x70, 0xb2, 0xe5, 0xca, 0x7d, 0x21, 0x51, 0x11, 0xae, 0x3c, 0xa2, 0xc3, 0x55, 0x48, 0xba, 0x58, - 0x65, 0x6a, 0xe5, 0x3e, 0xe7, 0xd8, 0xc0, 0x8b, 0xda, 0xfe, 0xa4, 0xe3, 0x41, 0x37, 0xe8, 0x32, - 0x16, 0x2d, 0xde, 0x4b, 0x2f, 0x2e, 0x6c, 0x9d, 0xf0, 0x92, 0xfa, 0x08, 0x91, 0xb1, 0x10, 0xa8, - 0x4b, 0xba, 0x5f, 0xa6, 0x19, 0x57, 0x3b, 0xfa, 0xaf, 0x2e, 0x2e, 0x32, 0xc1, 0xa6, 0x20, 0xe9, - 0xae, 0xc5, 0x43, 0x5f, 0x4e, 0x24, 0xdd, 0x18, 0xe7, 0xce, 0x0a, 0xd4, 0xd2, 0x53, 0x3e, 0x11, - 0xf9, 0x24, 0xcd, 0xe0, 0x41, 0x50, 0xa5, 0x69, 0x85, 0xc4, 0x59, 0x81, 0x16, 0xe4, 0x26, 0xc6, - 0x5a, 0x54, 0x0f, 0x7b, 0x53, 0xfe, 0xfb, 0x6d, 0x45, 0x4f, 0x4c, 0x4c, 0x8c, 0x08, 0xe6, 0xd6, - 0x9e, 0xb5, 0xf0, 0xac, 0x50, 0xc6, 0xef, 0xb4, 0xb5, 0x1a, 0x09, 0xb1, 0xf6, 0x0c, 0x09, 0xb7, - 0x86, 0xaa, 0xff, 0xbe, 0x27, 0xae, 0x73, 0x65, 0xf4, 0x6e, 0x5b, 0xc5, 0xc8, 0x88, 0x35, 0x14, - 0x64, 0xb4, 0xe1, 0x9f, 0x24, 0xff, 0x5f, 0x19, 0x2e, 0x45, 0x31, 0xb8, 0x85, 0x28, 0x94, 0xde, - 0x99, 0xcd, 0xdb, 0xa4, 0xdc, 0x1d, 0x2d, 0xb0, 0x7d, 0xe3, 0xac, 0x62, 0x33, 0x3e, 0xb8, 0x47, - 0xb4, 0xb8, 0x92, 0x12, 0x47, 0x0b, 0xda, 0x54, 0xd8, 0x2b, 0x8e, 0xc5, 0x54, 0x5b, 0x47, 0x6a, - 0x68, 0x85, 0xb1, 0x5e, 0xe1, 0x43, 0x2e, 0x99, 0x39, 0x66, 0xcb, 0x74, 0x66, 0x27, 0x9c, 0x26, - 0x6e, 0x55, 0x20, 0x99, 0x71, 0xcc, 0xd0, 0x83, 0x88, 0x64, 0x86, 0x84, 0xb5, 0xcf, 0x7f, 0x5e, - 0x4b, 0xee, 0x38, 0x66, 0xdf, 0xec, 0xd6, 0x1d, 0xe4, 0x17, 0xa2, 0x4e, 0x7d, 0x0e, 0xd3, 0xfc, - 0xaa, 0x1a, 0x7c, 0x41, 0x99, 0xc4, 0x79, 0x5b, 0x94, 0x2f, 0x6f, 0xac, 0xe7, 0xb2, 0x56, 0xb3, - 0x95, 0xe5, 0xde, 0x67, 0x37, 0x1a, 0x20, 0x6b, 0xb5, 0x3b, 0x5e, 0x90, 0x23, 0xb2, 0xd6, 0x18, - 0xef, 0x9a, 0xd8, 0x3a, 0xcf, 0x44, 0x0e, 0x9b, 0xd8, 0x59, 0xa8, 0x85, 0x44, 0x13, 0xb7, 0x20, - 0x17, 0x8f, 0x8d, 0xa8, 0xd9, 0x75, 0xd9, 0xc9, 0x32, 0x10, 0x8f, 0xad, 0xaa, 0x05, 0x88, 0x78, - 0x8c, 0x82, 0xda, 0xcf, 0x69, 0xf2, 0x9d, 0xfa, 0x91, 0x9e, 0x94, 0x7c, 0x99, 0x72, 0x78, 0xf4, - 0xc2, 0x93, 0x10, 0xe3, 0x3f, 0x24, 0xdc, 0xc8, 0x3a, 0xcb, 0xab, 0x22, 0x63, 0xd5, 0xa5, 0x7e, - 0x19, 0x1f, 0xd6, 0xd9, 0x08, 0xe1, 0xeb, 0xf8, 0xfb, 0x1d, 0x94, 0x0b, 0xea, 0x46, 0x66, 0x43, - 0xcc, 0x3a, 0xae, 0xda, 0x0a, 0x33, 0x1b, 0x9d, 0x9c, 0xdb, 0xf1, 0xde, 0x67, 0x59, 0xc6, 0xcb, - 0x95, 0x91, 0x1d, 0xb1, 0x3c, 0xbd, 0xe0, 0x95, 0x04, 0x3b, 0xde, 0x9a, 0x1a, 0x42, 0x8c, 0xd8, - 0xf1, 0x8e, 0xe0, 0x2e, 0x9b, 0x07, 0x9e, 0x0f, 0xf2, 0x29, 0x7f, 0x0b, 0xb2, 0x79, 0x68, 0x47, - 0x31, 0x44, 0x36, 0x4f, 0xb1, 0x6e, 0xe7, 0xf7, 0x79, 0x26, 0x26, 0x57, 0x7a, 0x0a, 0x08, 0x1b, - 0x58, 0x49, 0xe0, 0x1c, 0x70, 0x37, 0x86, 0xb8, 0x49, 0x40, 0x09, 0x4e, 0x79, 0x91, 0xb1, 0x09, - 0x3c, 0x7f, 0xd3, 0xe8, 0x68, 0x19, 0x31, 0x09, 0x40, 0x06, 0x14, 0x57, 0x9f, 0xeb, 0xc1, 0x8a, - 0x0b, 0x8e, 0xf5, 0xdc, 0x8d, 0x21, 0x6e, 0x1a, 0x54, 0x82, 0x51, 0x91, 0xa5, 0x12, 0x0c, 0x83, - 0x46, 0x43, 0x49, 0x88, 0x61, 0x10, 0x12, 0xc0, 0xe4, 0x11, 0x2f, 0x67, 0x1c, 0x35, 0xa9, 0x24, - 0x51, 0x93, 0x86, 0x70, 0x87, 0x8d, 0x9b, 0xba, 0x8b, 0x62, 0x05, 0x0e, 0x1b, 0xeb, 0x6a, 0x89, - 0x62, 0x45, 0x1c, 0x36, 0x0e, 0x00, 0x50, 0xc4, 0x13, 0x56, 0x49, 0xbc, 0x88, 0x4a, 0x12, 0x2d, - 0xa2, 0x21, 0xdc, 0x1c, 0xdd, 0x14, 0x71, 0x21, 0xc1, 0x1c, 0xad, 0x0b, 0xe0, 0xbd, 0x81, 0xbe, - 0x4d, 0xca, 0x5d, 0x24, 0x69, 0x5a, 0x85, 0xcb, 0x97, 0x29, 0xcf, 0xa6, 0x15, 0x88, 0x24, 0xfa, - 0xb9, 0x1b, 0x29, 0x11, 0x49, 0xda, 0x14, 0xe8, 0x4a, 0x7a, 0x7f, 0x1c, 0xab, 0x1d, 0xd8, 0x1a, - 0xbf, 0x1b, 0x43, 0x5c, 0x7c, 0x32, 0x85, 0xde, 0x65, 0x65, 0x99, 0xd6, 0x93, 0xff, 0x3a, 0x5e, - 0x20, 0x23, 0x27, 0xe2, 0x13, 0xc6, 0x81, 0xe1, 0x65, 0x02, 0x37, 0x56, 0x30, 0x18, 0xba, 0x3f, - 0x89, 0x32, 0x2e, 0xe3, 0x54, 0x12, 0xef, 0x15, 0x2a, 0xf6, 0x34, 0x91, 0x37, 0xa8, 0xeb, 0x5d, - 0x98, 0xf7, 0x31, 0x90, 0x75, 0x71, 0x24, 0x96, 0x7c, 0x2c, 0x5e, 0xbc, 0x4d, 0x2b, 0x99, 0xe6, - 0x33, 0x3d, 0x73, 0x3f, 0x23, 0x2c, 0x61, 0x30, 0xf1, 0x31, 0x50, 0xa7, 0x92, 0x4b, 0x20, 0x40, - 0x59, 0x8e, 0xf9, 0x35, 0x9a, 0x40, 0x40, 0x8b, 0x96, 0x23, 0x12, 0x88, 0x18, 0xef, 0xf6, 0x51, - 0xac, 0x73, 0xfd, 0xc5, 0xf4, 0x58, 0x98, 0x5c, 0x8e, 0xb2, 0x06, 0x41, 0x62, 0x29, 0x1b, 0x55, - 0x70, 0xeb, 0x4b, 0xeb, 0xdf, 0x0d, 0xb1, 0x07, 0x84, 0x9d, 0xf6, 0x30, 0x7b, 0xd8, 0x83, 0x44, - 0x5c, 0xb9, 0x73, 0x00, 0x94, 0xab, 0xf6, 0x31, 0x80, 0x87, 0x3d, 0x48, 0x6f, 0x4f, 0xc6, 0xaf, - 0xd6, 0x73, 0x36, 0xb9, 0x9a, 0x95, 0x62, 0x91, 0x4f, 0x77, 0x45, 0x26, 0x4a, 0xb0, 0x27, 0x13, - 0x94, 0x1a, 0xa0, 0xc4, 0x9e, 0x4c, 0x87, 0x8a, 0xcb, 0xe0, 0xfc, 0x52, 0xec, 0x64, 0xe9, 0x0c, - 0xae, 0xa8, 0x03, 0x43, 0x0a, 0x20, 0x32, 0x38, 0x14, 0x44, 0x3a, 0x51, 0xb3, 0xe2, 0x96, 0xe9, - 0x84, 0x65, 0x8d, 0xbf, 0x6d, 0xda, 0x4c, 0x00, 0x76, 0x76, 0x22, 0x44, 0x01, 0xa9, 0xe7, 0x78, - 0x51, 0xe6, 0x07, 0xb9, 0x14, 0x64, 0x3d, 0x0d, 0xd0, 0x59, 0x4f, 0x0f, 0x04, 0x61, 0x75, 0xcc, - 0xdf, 0xd6, 0xa5, 0xa9, 0xff, 0xc1, 0xc2, 0x6a, 0xfd, 0xf7, 0xa1, 0x96, 0xc7, 0xc2, 0x2a, 0xe0, - 0x40, 0x65, 0xb4, 0x93, 0xa6, 0xc3, 0x44, 0xb4, 0xc3, 0x6e, 0xf2, 0xa0, 0x1b, 0xc4, 0xfd, 0x8c, - 0xe4, 0x2a, 0xe3, 0x31, 0x3f, 0x0a, 0xe8, 0xe3, 0xc7, 0x80, 0x6e, 0xbb, 0x25, 0xa8, 0xcf, 0x25, - 0x9f, 0x5c, 0xb5, 0x8e, 0x35, 0x85, 0x05, 0x6d, 0x10, 0x62, 0xbb, 0x85, 0x40, 0xf1, 0x26, 0x3a, - 0x98, 0x88, 0x3c, 0xd6, 0x44, 0xb5, 0xbc, 0x4f, 0x13, 0x69, 0xce, 0x2d, 0x7e, 0xad, 0x54, 0xf7, - 0xcc, 0xa6, 0x99, 0x36, 0x09, 0x0b, 0x3e, 0x44, 0x2c, 0x7e, 0x49, 0xd8, 0xe5, 0xe4, 0xd0, 0xe7, - 0x51, 0xfb, 0xcc, 0x77, 0xcb, 0xca, 0x11, 0x7d, 0xe6, 0x9b, 0x62, 0xe9, 0x4a, 0x36, 0x7d, 0xa4, - 0xc3, 0x4a, 0xd8, 0x4f, 0x1e, 0xf7, 0x83, 0xdd, 0x92, 0x27, 0xf0, 0xb9, 0x9b, 0x71, 0x56, 0x36, - 0x5e, 0xb7, 0x22, 0x86, 0x1c, 0x46, 0x2c, 0x79, 0x22, 0x38, 0x08, 0x61, 0x81, 0xe7, 0x5d, 0x91, - 0x4b, 0x9e, 0x4b, 0x2c, 0x84, 0x85, 0xc6, 0x34, 0x18, 0x0b, 0x61, 0x94, 0x02, 0xe8, 0xb7, 0x6a, - 0x3f, 0x88, 0xcb, 0x63, 0x36, 0x47, 0x33, 0xb6, 0x66, 0xaf, 0xa7, 0x91, 0xc7, 0xfa, 0x2d, 0xe0, - 0xbc, 0x97, 0x7c, 0xbe, 0x97, 0x31, 0x2b, 0x67, 0x76, 0x77, 0x63, 0x3a, 0x78, 0x42, 0xdb, 0x09, - 0x49, 0xe2, 0x25, 0x5f, 0x5c, 0x03, 0x84, 0x9d, 0x83, 0x39, 0x9b, 0xd9, 0x9a, 0x22, 0x35, 0x50, - 0xf2, 0x56, 0x55, 0x1f, 0x74, 0x83, 0xc0, 0xcf, 0xeb, 0x74, 0xca, 0x45, 0xc4, 0x8f, 0x92, 0xf7, - 0xf1, 0x03, 0x41, 0x90, 0xbd, 0xd5, 0xf5, 0x6e, 0x56, 0x74, 0x3b, 0xf9, 0x54, 0xaf, 0x63, 0x87, - 0xc4, 0xe3, 0x01, 0x5c, 0x2c, 0x7b, 0x23, 0x78, 0x30, 0x46, 0xcd, 0x06, 0x6d, 0x6c, 0x8c, 0xda, - 0xfd, 0xd7, 0x3e, 0x63, 0x14, 0x83, 0xb5, 0xcf, 0x9f, 0xe9, 0x31, 0xba, 0xc7, 0x24, 0xab, 0xf3, - 0xf6, 0xd7, 0x29, 0xbf, 0xd6, 0x0b, 0x61, 0xa4, 0xbe, 0x86, 0x1a, 0xaa, 0x4f, 0x56, 0xc1, 0xaa, - 0x78, 0xbb, 0x37, 0x1f, 0xf1, 0xad, 0x57, 0x08, 0x9d, 0xbe, 0xc1, 0x52, 0x61, 0xbb, 0x37, 0x1f, - 0xf1, 0xad, 0xbf, 0x85, 0xef, 0xf4, 0x0d, 0x3e, 0x88, 0xdf, 0xee, 0xcd, 0x6b, 0xdf, 0x7f, 0x69, - 0x06, 0xae, 0xef, 0xbc, 0xce, 0xc3, 0x26, 0x32, 0x5d, 0x72, 0x2c, 0x9d, 0x0c, 0xed, 0x59, 0x34, - 0x96, 0x4e, 0xd2, 0x2a, 0xde, 0x05, 0x4a, 0x58, 0x29, 0x4e, 0x44, 0x95, 0xaa, 0x97, 0xf4, 0xcf, - 0x7a, 0x18, 0x35, 0x70, 0x6c, 0xd1, 0x14, 0x53, 0x72, 0xaf, 0x1b, 0x03, 0xd4, 0x9d, 0x62, 0x7e, - 0x1c, 0xb1, 0xd7, 0x3e, 0xcc, 0xbc, 0xd5, 0x93, 0x76, 0x2f, 0xfe, 0x02, 0xc6, 0x7f, 0xe3, 0x18, - 0x6b, 0x55, 0xf4, 0xa5, 0xe3, 0x93, 0xfe, 0x0a, 0xda, 0xfd, 0x5f, 0x9b, 0x75, 0x05, 0xf4, 0xaf, - 0x07, 0xc1, 0xd3, 0x3e, 0x16, 0xc1, 0x40, 0x78, 0x76, 0x23, 0x1d, 0x5d, 0x90, 0xbf, 0x37, 0x0b, - 0x68, 0x83, 0xaa, 0x6f, 0x39, 0xd4, 0x37, 0xa0, 0x7a, 0x4c, 0xc4, 0x9a, 0xd5, 0xc1, 0x70, 0x64, - 0x7c, 0x7e, 0x43, 0x2d, 0xef, 0x3a, 0xad, 0x00, 0xd6, 0xdf, 0x1c, 0x7a, 0xe5, 0x89, 0x59, 0xf6, - 0x68, 0x58, 0xa0, 0x2f, 0x6e, 0xaa, 0x46, 0x8d, 0x15, 0x0f, 0x56, 0xb7, 0x73, 0x3c, 0xeb, 0x69, - 0x38, 0xb8, 0xaf, 0xe3, 0xb3, 0x9b, 0x29, 0xe9, 0xb2, 0xfc, 0xc7, 0x5a, 0x72, 0x3f, 0x60, 0xdd, - 0xfb, 0x04, 0xb0, 0xeb, 0xf1, 0xe3, 0x88, 0x7d, 0x4a, 0xc9, 0x16, 0xee, 0x77, 0x7f, 0x39, 0x65, - 0x77, 0xf7, 0x54, 0xa0, 0xf2, 0x32, 0xcd, 0x24, 0x2f, 0xdb, 0x77, 0x4f, 0x85, 0x76, 0x1b, 0x6a, - 0x48, 0xdf, 0x3d, 0x15, 0xc1, 0xbd, 0xbb, 0xa7, 0x10, 0xcf, 0xe8, 0xdd, 0x53, 0xa8, 0xb5, 0xe8, - 0xdd, 0x53, 0x71, 0x0d, 0x2a, 0xbc, 0x9b, 0x22, 0x34, 0xfb, 0xd6, 0xbd, 0x2c, 0x86, 0xdb, 0xd8, - 0x4f, 0x6f, 0xa2, 0x42, 0x4c, 0x70, 0x0d, 0xa7, 0xce, 0xb9, 0xf5, 0x78, 0xa6, 0xc1, 0x59, 0xb7, - 0xed, 0xde, 0xbc, 0xf6, 0xfd, 0x53, 0xbd, 0xba, 0xb1, 0xe1, 0x5c, 0x94, 0xea, 0xde, 0xb1, 0xcd, - 0x58, 0x78, 0xae, 0x2d, 0xf8, 0x2d, 0xff, 0xb8, 0x1f, 0x4c, 0x54, 0xb7, 0x26, 0x74, 0xa3, 0x0f, - 0xbb, 0x0c, 0x81, 0x26, 0xdf, 0xee, 0xcd, 0x13, 0xd3, 0x48, 0xe3, 0xbb, 0x69, 0xed, 0x1e, 0xc6, - 0xc2, 0xb6, 0x7e, 0xd2, 0x5f, 0x41, 0xbb, 0x5f, 0xea, 0xb4, 0xd1, 0x77, 0xaf, 0xda, 0x79, 0xab, - 0xcb, 0xd4, 0x28, 0x68, 0xe6, 0x61, 0x5f, 0x3c, 0x96, 0x40, 0xf8, 0x53, 0x68, 0x57, 0x02, 0x81, - 0x4e, 0xa3, 0x9f, 0xdd, 0x4c, 0x49, 0x97, 0xe5, 0x9f, 0xd6, 0x92, 0xdb, 0x64, 0x59, 0x74, 0x3f, - 0xf8, 0xa2, 0xaf, 0x65, 0xd0, 0x1f, 0xbe, 0xbc, 0xb1, 0x9e, 0x2e, 0xd4, 0xbf, 0xae, 0x25, 0x77, - 0x22, 0x85, 0x6a, 0x3a, 0xc8, 0x0d, 0xac, 0x87, 0x1d, 0xe5, 0x87, 0x37, 0x57, 0xa4, 0xa6, 0x7b, - 0x1f, 0x1f, 0xb5, 0x2f, 0x65, 0x8a, 0xd8, 0x1e, 0xd1, 0x97, 0x32, 0x75, 0x6b, 0xc1, 0x4d, 0x1e, - 0x76, 0x6e, 0x16, 0x5d, 0xe8, 0x26, 0x8f, 0x3a, 0xa1, 0x16, 0xbd, 0x5c, 0x02, 0xe3, 0x30, 0x27, - 0x2f, 0xde, 0x16, 0x2c, 0x9f, 0xd2, 0x4e, 0x1a, 0x79, 0xb7, 0x13, 0xcb, 0xc1, 0xcd, 0xb1, 0x5a, - 0x7a, 0x2a, 0xcc, 0x42, 0xea, 0x21, 0xa5, 0x6f, 0x91, 0xe8, 0xe6, 0x58, 0x0b, 0x25, 0xbc, 0xe9, - 0xac, 0x31, 0xe6, 0x0d, 0x24, 0x8b, 0x8f, 0xfa, 0xa0, 0x20, 0x45, 0xb7, 0xde, 0xec, 0x9e, 0xfb, - 0xe3, 0x98, 0x95, 0xd6, 0xbe, 0xfb, 0x56, 0x4f, 0x9a, 0x70, 0x3b, 0xe2, 0xf2, 0x2b, 0xce, 0xa6, - 0xbc, 0x8c, 0xba, 0xb5, 0x54, 0x2f, 0xb7, 0x3e, 0x8d, 0xb9, 0xdd, 0x15, 0xd9, 0x62, 0x9e, 0xeb, - 0xc6, 0x24, 0xdd, 0xfa, 0x54, 0xb7, 0x5b, 0x40, 0xc3, 0x6d, 0x41, 0xe7, 0x56, 0xa5, 0x97, 0x8f, - 0xe2, 0x66, 0x82, 0xac, 0x72, 0xb3, 0x17, 0x4b, 0xd7, 0x53, 0x77, 0xa3, 0x8e, 0x7a, 0x82, 0x9e, - 0xb4, 0xd5, 0x93, 0x86, 0xfb, 0x73, 0x9e, 0x5b, 0xdb, 0x9f, 0xb6, 0x3b, 0x6c, 0xb5, 0xba, 0xd4, - 0x93, 0xfe, 0x0a, 0x70, 0x37, 0x54, 0xf7, 0xaa, 0xc3, 0xb4, 0x92, 0x2f, 0xd3, 0x2c, 0x1b, 0x6c, - 0x46, 0xba, 0x89, 0x81, 0xa2, 0xbb, 0xa1, 0x08, 0x4c, 0xf4, 0x64, 0xb3, 0x7b, 0x98, 0x0f, 0xba, - 0xec, 0x28, 0xaa, 0x57, 0x4f, 0xf6, 0x69, 0xb0, 0xa3, 0xe5, 0x3d, 0x6a, 0x5b, 0xdb, 0x61, 0xfc, - 0xc1, 0xb5, 0x2a, 0xbc, 0xdd, 0x9b, 0x07, 0xaf, 0xdb, 0x15, 0xa5, 0x66, 0x96, 0x7b, 0x94, 0x89, - 0x60, 0x26, 0xb9, 0xdf, 0x41, 0x81, 0x5d, 0xc1, 0x66, 0x18, 0xbd, 0x49, 0xa7, 0x33, 0x2e, 0xd1, - 0x37, 0x45, 0x3e, 0x10, 0x7d, 0x53, 0x04, 0x40, 0xd0, 0x74, 0xcd, 0xdf, 0xed, 0x76, 0xe8, 0xc1, - 0x14, 0x6b, 0x3a, 0xad, 0xec, 0x51, 0xb1, 0xa6, 0x43, 0x69, 0x10, 0x0d, 0xac, 0x5b, 0xfd, 0x39, - 0xfe, 0xa3, 0x98, 0x19, 0xf0, 0x4d, 0xfe, 0x66, 0x2f, 0x16, 0xcc, 0x28, 0xce, 0x61, 0x3a, 0x4f, - 0x25, 0x36, 0xa3, 0x78, 0x36, 0x6a, 0x24, 0x36, 0xa3, 0xb4, 0x51, 0xaa, 0x7a, 0x75, 0x8e, 0x70, - 0x30, 0x8d, 0x57, 0xaf, 0x61, 0xfa, 0x55, 0xcf, 0xb2, 0xad, 0x17, 0x9b, 0xb9, 0xed, 0x32, 0xf2, - 0x52, 0x2f, 0x96, 0x91, 0xbe, 0xad, 0x3e, 0xd3, 0x84, 0x60, 0x2c, 0xea, 0x50, 0x0a, 0x70, 0xc3, - 0xbe, 0xe6, 0xcc, 0xbb, 0xd7, 0xa2, 0xe0, 0xac, 0x64, 0xf9, 0x04, 0x5d, 0x9c, 0x2a, 0x83, 0x2d, - 0x32, 0xb6, 0x38, 0x25, 0x35, 0xc0, 0x6b, 0xf3, 0xf0, 0x03, 0x4b, 0x64, 0x28, 0xd8, 0x2f, 0x19, - 0xc3, 0xef, 0x2b, 0x1f, 0xf6, 0x20, 0xe1, 0x6b, 0x73, 0x03, 0xd8, 0x8d, 0xef, 0xc6, 0xe9, 0xa7, - 0x11, 0x53, 0x21, 0x1a, 0x5b, 0x08, 0xd3, 0x2a, 0xa0, 0x53, 0xdb, 0x04, 0x97, 0xcb, 0x9f, 0xf0, - 0x15, 0xd6, 0xa9, 0x5d, 0x7e, 0xaa, 0x90, 0x58, 0xa7, 0x6e, 0xa3, 0x20, 0xcf, 0xf4, 0xd7, 0x41, - 0xeb, 0x11, 0x7d, 0x7f, 0xe9, 0xb3, 0xd1, 0xc9, 0x81, 0x91, 0xb3, 0x97, 0x2e, 0x83, 0xf7, 0x04, - 0x48, 0x41, 0xf7, 0xd2, 0x25, 0xfe, 0x9a, 0x60, 0xb3, 0x17, 0x0b, 0x5f, 0xc9, 0x33, 0xc9, 0xdf, - 0x9a, 0x77, 0xe5, 0x48, 0x71, 0x95, 0xbc, 0xf5, 0xb2, 0xfc, 0x41, 0x37, 0xe8, 0x0e, 0xc0, 0x9e, - 0x94, 0x62, 0xc2, 0xab, 0x4a, 0xdf, 0x54, 0x19, 0x9e, 0x30, 0xd2, 0xb2, 0x21, 0xb8, 0xa7, 0xf2, - 0x5e, 0x1c, 0xf2, 0xae, 0x97, 0x6b, 0x44, 0xee, 0xd6, 0x9b, 0x75, 0x54, 0xb3, 0x7d, 0xe1, 0xcd, - 0x46, 0x27, 0xe7, 0x86, 0x97, 0x96, 0xfa, 0xd7, 0xdc, 0x3c, 0x40, 0xd5, 0xb1, 0x1b, 0x6e, 0x1e, - 0xf6, 0x20, 0xb5, 0xab, 0xaf, 0x92, 0x77, 0x0f, 0xc5, 0x6c, 0xc4, 0xf3, 0xe9, 0xe0, 0x07, 0xe1, - 0x11, 0x5a, 0x31, 0x1b, 0xd6, 0x7f, 0xb6, 0x46, 0x6f, 0x51, 0x62, 0x77, 0x08, 0x70, 0x8f, 0x9f, - 0x2f, 0x66, 0x23, 0xc9, 0x24, 0x38, 0x04, 0xa8, 0xfe, 0x3e, 0xac, 0x05, 0xc4, 0x21, 0xc0, 0x00, - 0x00, 0xf6, 0xc6, 0x25, 0xe7, 0xa8, 0xbd, 0x5a, 0x10, 0xb5, 0xa7, 0x01, 0x97, 0x45, 0x58, 0x7b, - 0x75, 0xa2, 0x0e, 0x0f, 0xed, 0x39, 0x1d, 0x25, 0x25, 0xb2, 0x88, 0x36, 0xe5, 0x3a, 0x77, 0x53, - 0x7d, 0x75, 0xeb, 0xc8, 0x62, 0x3e, 0x67, 0xe5, 0x0a, 0x74, 0x6e, 0x5d, 0x4b, 0x0f, 0x20, 0x3a, - 0x37, 0x0a, 0xba, 0x51, 0x6b, 0x1e, 0xf3, 0xe4, 0x6a, 0x5f, 0x94, 0x62, 0x21, 0xd3, 0x9c, 0xc3, - 0x9b, 0x27, 0xec, 0x03, 0xf5, 0x19, 0x62, 0xd4, 0x52, 0xac, 0xcb, 0x72, 0x15, 0xd1, 0x9c, 0x27, - 0x54, 0xf7, 0x57, 0x57, 0x52, 0x94, 0xf0, 0x7d, 0x62, 0x63, 0x05, 0x42, 0x44, 0x96, 0x4b, 0xc2, - 0xa0, 0xed, 0x4f, 0xd2, 0x7c, 0x86, 0xb6, 0xfd, 0x89, 0x7f, 0xfb, 0xeb, 0x1d, 0x1a, 0x70, 0x03, - 0xaa, 0x79, 0x68, 0xcd, 0x00, 0xd0, 0xdf, 0x72, 0xa2, 0x0f, 0xdd, 0x27, 0x88, 0x01, 0x85, 0x93, - 0xc0, 0xd5, 0xab, 0x82, 0xe7, 0x7c, 0x6a, 0x4e, 0xcd, 0x61, 0xae, 0x02, 0x22, 0xea, 0x0a, 0x92, - 0x2e, 0x16, 0x29, 0xf9, 0xe9, 0x22, 0x3f, 0x29, 0xc5, 0x45, 0x9a, 0xf1, 0x12, 0xc4, 0xa2, 0x46, - 0xdd, 0x93, 0x13, 0xb1, 0x08, 0xe3, 0xdc, 0xf1, 0x0b, 0x25, 0x0d, 0x2e, 0x61, 0x1f, 0x97, 0x6c, - 0x02, 0x8f, 0x5f, 0x34, 0x36, 0xda, 0x18, 0xb1, 0x33, 0x18, 0xc1, 0xbd, 0x44, 0xa7, 0x71, 0x9d, - 0xaf, 0x54, 0xff, 0xd0, 0xdf, 0x12, 0xaa, 0x3b, 0x51, 0x2b, 0x90, 0xe8, 0x68, 0x73, 0x18, 0x49, - 0x24, 0x3a, 0x71, 0x0d, 0x37, 0x95, 0x28, 0xee, 0x58, 0x1f, 0x2b, 0x02, 0x53, 0x49, 0x63, 0xc3, - 0x08, 0x89, 0xa9, 0xa4, 0x05, 0x81, 0x80, 0x64, 0x86, 0xc1, 0x0c, 0x0d, 0x48, 0x56, 0x1a, 0x0d, - 0x48, 0x3e, 0xe5, 0x02, 0xc5, 0x41, 0x9e, 0xca, 0x94, 0x65, 0x23, 0x2e, 0x4f, 0x58, 0xc9, 0xe6, - 0x5c, 0xf2, 0x12, 0x06, 0x0a, 0x8d, 0x0c, 0x03, 0x86, 0x08, 0x14, 0x14, 0xab, 0x1d, 0xfe, 0x5e, - 0xf2, 0x7e, 0x3d, 0xef, 0xf3, 0x5c, 0xff, 0xdc, 0xca, 0x0b, 0xf5, 0x3b, 0x4d, 0x83, 0x0f, 0xac, - 0x8d, 0x91, 0x2c, 0x39, 0x9b, 0x1b, 0xdb, 0xef, 0xd9, 0xbf, 0x2b, 0xf0, 0xc9, 0x5a, 0xdd, 0x9f, - 0x8f, 0x85, 0x4c, 0x2f, 0xea, 0x65, 0xb6, 0xfe, 0x82, 0x08, 0xf4, 0x67, 0x5f, 0x3c, 0x8c, 0xdc, - 0x45, 0x81, 0x71, 0x2e, 0x4e, 0xfb, 0xd2, 0x53, 0x5e, 0x64, 0x30, 0x4e, 0x07, 0xda, 0x0a, 0x20, - 0xe2, 0x34, 0x0a, 0xba, 0xc1, 0xe9, 0x8b, 0xc7, 0x3c, 0x5e, 0x99, 0x31, 0xef, 0x57, 0x99, 0x71, - 0xf0, 0x51, 0x46, 0x96, 0xbc, 0x7f, 0xc4, 0xe7, 0xe7, 0xbc, 0xac, 0x2e, 0xd3, 0x82, 0xba, 0xb7, - 0xd5, 0x11, 0x9d, 0xf7, 0xb6, 0x12, 0xa8, 0x9b, 0x09, 0x1c, 0x70, 0x50, 0x1d, 0xb3, 0x39, 0x57, - 0x37, 0x6b, 0x80, 0x99, 0xc0, 0x33, 0xe2, 0x41, 0xc4, 0x4c, 0x40, 0xc2, 0xde, 0xf7, 0x5d, 0x8e, - 0x39, 0xe5, 0xb3, 0xba, 0x87, 0x95, 0x27, 0x6c, 0x35, 0xe7, 0xb9, 0xd4, 0x26, 0xc1, 0x9e, 0xbc, - 0x67, 0x12, 0xe7, 0x89, 0x3d, 0xf9, 0x3e, 0x7a, 0x5e, 0x68, 0x0a, 0x1e, 0xfc, 0x89, 0x28, 0x65, - 0xf3, 0x63, 0x4a, 0x67, 0x65, 0x06, 0x42, 0x53, 0xf8, 0x50, 0x03, 0x92, 0x08, 0x4d, 0x71, 0x0d, - 0xef, 0x57, 0x08, 0x82, 0x32, 0xbc, 0xe6, 0xa5, 0xed, 0x27, 0x2f, 0xe6, 0x2c, 0xcd, 0x74, 0x6f, - 0xf8, 0x51, 0xc4, 0x36, 0xa1, 0x43, 0xfc, 0x0a, 0x41, 0x5f, 0x5d, 0xef, 0x77, 0x1b, 0xe2, 0x25, - 0x04, 0xaf, 0x08, 0x3a, 0xec, 0x13, 0xaf, 0x08, 0xba, 0xb5, 0xdc, 0xca, 0xdd, 0xb1, 0x8a, 0x5b, - 0x29, 0x62, 0x57, 0x4c, 0xe1, 0x7e, 0xa1, 0x67, 0x13, 0x80, 0xc4, 0xca, 0x3d, 0xaa, 0xe0, 0x52, - 0x03, 0x87, 0xbd, 0x4c, 0x73, 0x96, 0xa5, 0x3f, 0x83, 0x69, 0xbd, 0x67, 0xc7, 0x10, 0x44, 0x6a, - 0x80, 0x93, 0x98, 0xab, 0x7d, 0x2e, 0xc7, 0x69, 0x1d, 0xfa, 0x1f, 0x44, 0x9e, 0x9b, 0x22, 0xba, - 0x5d, 0x79, 0xa4, 0x77, 0x47, 0x2b, 0x7c, 0xac, 0x3b, 0x45, 0x31, 0xaa, 0x67, 0xd5, 0x53, 0x3e, - 0xe1, 0x69, 0x21, 0x07, 0x9f, 0xc7, 0x9f, 0x15, 0xc0, 0x89, 0x83, 0x16, 0x3d, 0xd4, 0xbc, 0xd7, - 0xf7, 0x75, 0x2c, 0x19, 0x35, 0xbf, 0x32, 0x78, 0x56, 0xf1, 0x52, 0x27, 0x1a, 0xfb, 0x5c, 0x82, - 0xd1, 0xe9, 0x71, 0x43, 0x0f, 0xac, 0x2b, 0x4a, 0x8c, 0xce, 0xb8, 0x86, 0xdb, 0xec, 0xf3, 0x38, - 0x7d, 0xe7, 0xb6, 0x3a, 0x6f, 0xf8, 0x98, 0x34, 0xe6, 0x51, 0xc4, 0x66, 0x1f, 0x4d, 0xbb, 0x6c, - 0xad, 0xed, 0x76, 0x27, 0x5f, 0x1d, 0xc0, 0x23, 0x13, 0x88, 0x25, 0x85, 0x11, 0xd9, 0x5a, 0x04, - 0xf7, 0x36, 0xc3, 0x4b, 0xc1, 0xa6, 0x13, 0x56, 0xc9, 0x13, 0xb6, 0xca, 0x04, 0x9b, 0xaa, 0x79, - 0x1d, 0x6e, 0x86, 0x1b, 0x66, 0xe8, 0x43, 0xd4, 0x66, 0x38, 0x05, 0xfb, 0xd9, 0x99, 0xfa, 0xf1, - 0x44, 0x7d, 0x96, 0x13, 0x66, 0x67, 0xaa, 0xbc, 0xf0, 0x1c, 0xe7, 0xbd, 0x38, 0xe4, 0xbe, 0x41, - 0x6b, 0x44, 0x2a, 0x0d, 0xb9, 0x83, 0xe9, 0x04, 0x09, 0xc8, 0xc7, 0x11, 0xc2, 0xdd, 0x4b, 0xd1, - 0xfc, 0xdd, 0xfc, 0xfe, 0x8f, 0xd4, 0x37, 0x59, 0x3f, 0xc6, 0x74, 0x7d, 0x68, 0xe8, 0x5f, 0x70, - 0xb7, 0xd5, 0x93, 0x76, 0x69, 0xe6, 0xee, 0x25, 0x93, 0x3b, 0xd3, 0xe9, 0x11, 0xaf, 0x90, 0x0f, - 0xca, 0x6b, 0xe1, 0xd0, 0x49, 0x89, 0x34, 0xb3, 0x4d, 0xb9, 0x8e, 0x5e, 0xcb, 0x5e, 0x4c, 0x53, - 0xa9, 0x65, 0xe6, 0x84, 0xf4, 0xe3, 0xb6, 0x81, 0x36, 0x45, 0xd4, 0x8a, 0xa6, 0x5d, 0x2c, 0xaf, - 0x99, 0xb1, 0x98, 0xcd, 0x32, 0xae, 0xa1, 0x53, 0xce, 0x9a, 0x8b, 0xfc, 0xb6, 0xdb, 0xb6, 0x50, - 0x90, 0x88, 0xe5, 0x51, 0x05, 0x97, 0x46, 0xd6, 0x58, 0xf3, 0x4a, 0xca, 0x3c, 0xd8, 0x8d, 0xb6, - 0x99, 0x00, 0x20, 0xd2, 0x48, 0x14, 0x74, 0xdf, 0xbd, 0xd5, 0xe2, 0x7d, 0x6e, 0x9e, 0x04, 0xbc, - 0x82, 0x48, 0x29, 0x7b, 0x62, 0xe2, 0xbb, 0x37, 0x04, 0x73, 0xeb, 0x04, 0xe0, 0xe1, 0xf9, 0xea, - 0x60, 0x0a, 0xd7, 0x09, 0x50, 0x5f, 0x31, 0xc4, 0x3a, 0x81, 0x62, 0xc3, 0xa6, 0xb3, 0xfb, 0x5e, - 0x87, 0xac, 0x72, 0x95, 0x43, 0x9a, 0x0e, 0x05, 0x63, 0x4d, 0x47, 0x29, 0x84, 0x8f, 0xd4, 0xdf, - 0x5a, 0x43, 0x1e, 0x29, 0xb6, 0xaf, 0xb6, 0xde, 0x85, 0xb9, 0xb8, 0x64, 0xd7, 0x93, 0xea, 0xc8, - 0x12, 0x7e, 0x83, 0x7f, 0x23, 0x24, 0xe2, 0x52, 0x0b, 0xf2, 0x7e, 0x9a, 0xae, 0x48, 0x47, 0x92, - 0x95, 0xb2, 0x0e, 0xc8, 0xed, 0x9f, 0xa6, 0x2b, 0xd2, 0xa1, 0x27, 0xa5, 0x7e, 0x9a, 0xae, 0x45, - 0x79, 0x3f, 0xb7, 0x56, 0x9b, 0x17, 0x85, 0xb6, 0xfe, 0x09, 0xa2, 0x67, 0x84, 0xe4, 0x6f, 0xe7, - 0x02, 0xa8, 0xb1, 0xfd, 0xfc, 0xe3, 0xff, 0xfa, 0xe6, 0xd6, 0xda, 0x2f, 0xbe, 0xb9, 0xb5, 0xf6, - 0x3f, 0xdf, 0xdc, 0x5a, 0xfb, 0xf9, 0xb7, 0xb7, 0xde, 0xf9, 0xc5, 0xb7, 0xb7, 0xde, 0xf9, 0xef, - 0x6f, 0x6f, 0xbd, 0xf3, 0xf5, 0xbb, 0xfa, 0xf7, 0x80, 0xcf, 0xff, 0x9f, 0xfa, 0x55, 0xdf, 0x67, - 0xff, 0x17, 0x00, 0x00, 0xff, 0xff, 0x79, 0x20, 0x3d, 0xb9, 0x33, 0x78, 0x00, 0x00, + // 5364 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x9d, 0xdf, 0x6f, 0x24, 0x49, + 0x52, 0xf8, 0xd7, 0x2f, 0xdf, 0xfd, 0x52, 0xc7, 0x2d, 0xd0, 0x0b, 0xcb, 0xde, 0x72, 0x37, 0xbf, + 0x76, 0xc6, 0xf6, 0x8c, 0xed, 0xf6, 0xec, 0xcc, 0xce, 0xee, 0xe9, 0x0e, 0x09, 0x79, 0xec, 0xb1, + 0xd7, 0x9c, 0xed, 0x31, 0xee, 0xf6, 0x8c, 0xb4, 0x12, 0x12, 0xe9, 0xea, 0x74, 0xbb, 0x70, 0x75, + 0x65, 0x5d, 0x55, 0x76, 0x7b, 0xfa, 0x10, 0x08, 0x04, 0x02, 0x81, 0x40, 0x9c, 0xf8, 0xf5, 0x8a, + 0xc4, 0x5f, 0xc3, 0xe3, 0x3d, 0xf2, 0x88, 0x76, 0x9f, 0xef, 0x7f, 0x40, 0x95, 0x95, 0x95, 0x3f, + 0xa2, 0x22, 0xb2, 0xca, 0xf7, 0x34, 0xa3, 0x8e, 0x4f, 0x44, 0x64, 0x56, 0x66, 0x46, 0x46, 0x66, + 0x65, 0xa5, 0xa3, 0xbb, 0xf9, 0xc5, 0x76, 0x5e, 0x08, 0x29, 0xca, 0xed, 0x92, 0x17, 0x8b, 0x24, + 0xe6, 0xcd, 0xbf, 0x43, 0xf5, 0xf3, 0xe0, 0x7d, 0x96, 0x2d, 0xe5, 0x32, 0xe7, 0x9f, 0x7c, 0x6c, + 0xc9, 0x58, 0xcc, 0x66, 0x2c, 0x9b, 0x94, 0x35, 0xf2, 0xc9, 0x47, 0x56, 0xc2, 0x17, 0x3c, 0x93, + 0xfa, 0xf7, 0x67, 0xbf, 0xfc, 0xe5, 0x4a, 0xf4, 0xc1, 0x6e, 0x9a, 0xf0, 0x4c, 0xee, 0x6a, 0x8d, + 0xc1, 0xd7, 0xd1, 0x77, 0x77, 0xf2, 0xfc, 0x80, 0xcb, 0x37, 0xbc, 0x28, 0x13, 0x91, 0x0d, 0x3e, + 0x1d, 0x6a, 0x07, 0xc3, 0xb3, 0x3c, 0x1e, 0xee, 0xe4, 0xf9, 0xd0, 0x0a, 0x87, 0x67, 0xfc, 0xa7, + 0x73, 0x5e, 0xca, 0x4f, 0x1e, 0x86, 0xa1, 0x32, 0x17, 0x59, 0xc9, 0x07, 0x97, 0xd1, 0x6f, 0xed, + 0xe4, 0xf9, 0x88, 0xcb, 0x3d, 0x5e, 0x55, 0x60, 0x24, 0x99, 0xe4, 0x83, 0xb5, 0x96, 0xaa, 0x0f, + 0x18, 0x1f, 0xeb, 0xdd, 0xa0, 0xf6, 0x33, 0x8e, 0xbe, 0x53, 0xf9, 0xb9, 0x9a, 0xcb, 0x89, 0xb8, + 0xc9, 0x06, 0xf7, 0xdb, 0x8a, 0x5a, 0x64, 0x6c, 0x3f, 0x08, 0x21, 0xda, 0xea, 0xdb, 0xe8, 0xd7, + 0xdf, 0xb2, 0x34, 0xe5, 0x72, 0xb7, 0xe0, 0x55, 0xc1, 0x7d, 0x9d, 0x5a, 0x34, 0xac, 0x65, 0xc6, + 0xee, 0xa7, 0x41, 0x46, 0x1b, 0xfe, 0x3a, 0xfa, 0x6e, 0x2d, 0x39, 0xe3, 0xb1, 0x58, 0xf0, 0x62, + 0x80, 0x6a, 0x69, 0x21, 0xf1, 0xc8, 0x5b, 0x10, 0xb4, 0xbd, 0x2b, 0xb2, 0x05, 0x2f, 0x24, 0x6e, + 0x5b, 0x0b, 0xc3, 0xb6, 0x2d, 0xa4, 0x6d, 0xff, 0xfd, 0x4a, 0xf4, 0xfd, 0x9d, 0x38, 0x16, 0xf3, + 0x4c, 0x1e, 0x89, 0x98, 0xa5, 0x47, 0x49, 0x76, 0x7d, 0xc2, 0x6f, 0x76, 0xaf, 0x2a, 0x3e, 0x9b, + 0xf2, 0xc1, 0x73, 0xff, 0xa9, 0xd6, 0xe8, 0xd0, 0xb0, 0x43, 0x17, 0x36, 0xbe, 0x3f, 0xbf, 0x9d, + 0x92, 0x2e, 0xcb, 0x3f, 0xaf, 0x44, 0x77, 0x60, 0x59, 0x46, 0x22, 0x5d, 0x70, 0x5b, 0x9a, 0x17, + 0x1d, 0x86, 0x7d, 0xdc, 0x94, 0xe7, 0x8b, 0xdb, 0xaa, 0xe9, 0x12, 0xa5, 0xd1, 0x87, 0x6e, 0x77, + 0x19, 0xf1, 0x52, 0x0d, 0xa7, 0xc7, 0x74, 0x8f, 0xd0, 0x88, 0xf1, 0xfc, 0xa4, 0x0f, 0xaa, 0xbd, + 0x25, 0xd1, 0x40, 0x7b, 0x4b, 0x45, 0x69, 0x9c, 0xad, 0xa3, 0x16, 0x1c, 0xc2, 0xf8, 0x7a, 0xdc, + 0x83, 0xd4, 0xae, 0xfe, 0x24, 0xfa, 0x8d, 0xb7, 0xa2, 0xb8, 0x2e, 0x73, 0x16, 0x73, 0x3d, 0x14, + 0x1e, 0xf9, 0xda, 0x8d, 0x14, 0x8e, 0x86, 0xd5, 0x2e, 0xcc, 0xe9, 0xb4, 0x8d, 0xf0, 0x75, 0xce, + 0x61, 0x0c, 0xb2, 0x8a, 0x95, 0x90, 0xea, 0xb4, 0x10, 0xd2, 0xb6, 0xaf, 0xa3, 0x81, 0xb5, 0x7d, + 0xf1, 0xa7, 0x3c, 0x96, 0x3b, 0x93, 0x09, 0x6c, 0x15, 0xab, 0xab, 0x88, 0xe1, 0xce, 0x64, 0x42, + 0xb5, 0x0a, 0x8e, 0x6a, 0x67, 0x37, 0xd1, 0x47, 0xc0, 0xd9, 0x51, 0x52, 0x2a, 0x87, 0x5b, 0x61, + 0x2b, 0x1a, 0x33, 0x4e, 0x87, 0x7d, 0x71, 0xed, 0xf8, 0x2f, 0x57, 0xa2, 0xef, 0x21, 0x9e, 0xcf, + 0xf8, 0x4c, 0x2c, 0xf8, 0xe0, 0x69, 0xb7, 0xb5, 0x9a, 0x34, 0xfe, 0x3f, 0xbb, 0x85, 0x06, 0xd2, + 0x4d, 0x46, 0x3c, 0xe5, 0xb1, 0x24, 0xbb, 0x49, 0x2d, 0xee, 0xec, 0x26, 0x06, 0x73, 0x46, 0x58, + 0x23, 0x3c, 0xe0, 0x72, 0x77, 0x5e, 0x14, 0x3c, 0x93, 0x64, 0x5b, 0x5a, 0xa4, 0xb3, 0x2d, 0x3d, + 0x14, 0xa9, 0xcf, 0x01, 0x97, 0x3b, 0x69, 0x4a, 0xd6, 0xa7, 0x16, 0x77, 0xd6, 0xc7, 0x60, 0xda, + 0x43, 0x1c, 0xfd, 0xa6, 0xf3, 0xc4, 0xe4, 0x61, 0x76, 0x29, 0x06, 0xf4, 0xb3, 0x50, 0x72, 0xe3, + 0x63, 0xad, 0x93, 0x43, 0xaa, 0xf1, 0xea, 0x5d, 0x2e, 0x0a, 0xba, 0x59, 0x6a, 0x71, 0x67, 0x35, + 0x0c, 0xa6, 0x3d, 0xfc, 0x71, 0xf4, 0x81, 0x8e, 0x92, 0xcd, 0x7c, 0xf6, 0x10, 0x0d, 0xa1, 0x70, + 0x42, 0x7b, 0xd4, 0x41, 0xd9, 0xe0, 0xa0, 0x65, 0x3a, 0xf8, 0x7c, 0x8a, 0xea, 0x81, 0xd0, 0xf3, + 0x30, 0x0c, 0xb5, 0x6c, 0xef, 0xf1, 0x94, 0x93, 0xb6, 0x6b, 0x61, 0x87, 0x6d, 0x03, 0x69, 0xdb, + 0x45, 0xf4, 0x3b, 0xe6, 0xb1, 0x54, 0xf3, 0xa8, 0x92, 0x57, 0x41, 0x7a, 0x83, 0xa8, 0xb7, 0x0b, + 0x19, 0x5f, 0x9b, 0xfd, 0xe0, 0x56, 0x7d, 0xf4, 0x08, 0xc4, 0xeb, 0x03, 0xc6, 0xdf, 0xc3, 0x30, + 0xa4, 0x6d, 0xff, 0xc3, 0x4a, 0xf4, 0x03, 0x2d, 0x7b, 0x95, 0xb1, 0x8b, 0x94, 0xab, 0x29, 0xf1, + 0x84, 0xcb, 0x1b, 0x51, 0x5c, 0x8f, 0x96, 0x59, 0x4c, 0x4c, 0xff, 0x38, 0xdc, 0x31, 0xfd, 0x93, + 0x4a, 0x4e, 0xc6, 0xa7, 0x2b, 0x2a, 0x45, 0x0e, 0x33, 0xbe, 0xa6, 0x06, 0x52, 0xe4, 0x54, 0xc6, + 0xe7, 0x23, 0x2d, 0xab, 0xc7, 0x55, 0xd8, 0xc4, 0xad, 0x1e, 0xbb, 0x71, 0xf2, 0x41, 0x08, 0xb1, + 0x61, 0xab, 0xe9, 0xc0, 0x22, 0xbb, 0x4c, 0xa6, 0xe7, 0xf9, 0xa4, 0xea, 0xc6, 0x8f, 0xf1, 0x1e, + 0xea, 0x20, 0x44, 0xd8, 0x22, 0x50, 0xed, 0xed, 0x9f, 0x6c, 0x62, 0xa4, 0x87, 0xd2, 0x7e, 0x21, + 0x66, 0x47, 0x7c, 0xca, 0xe2, 0xa5, 0x1e, 0xff, 0x9f, 0x87, 0x06, 0x1e, 0xa4, 0x4d, 0x21, 0x5e, + 0xdc, 0x52, 0x4b, 0x97, 0xe7, 0x3f, 0x57, 0xa2, 0x87, 0x4d, 0xf5, 0xaf, 0x58, 0x36, 0xe5, 0xba, + 0x3d, 0xeb, 0xd2, 0xef, 0x64, 0x93, 0x33, 0x5e, 0x4a, 0x56, 0xc8, 0xc1, 0x8f, 0xf0, 0x4a, 0x86, + 0x74, 0x4c, 0xd9, 0x7e, 0xfc, 0x2b, 0xe9, 0xda, 0x56, 0x1f, 0x55, 0x81, 0x4d, 0x87, 0x00, 0xbf, + 0xd5, 0x95, 0x04, 0x06, 0x80, 0x07, 0x21, 0xc4, 0xb6, 0xba, 0x12, 0x1c, 0x66, 0x8b, 0x44, 0xf2, + 0x03, 0x9e, 0xf1, 0xa2, 0xdd, 0xea, 0xb5, 0xaa, 0x8f, 0x10, 0xad, 0x4e, 0xa0, 0x36, 0xd8, 0x78, + 0xde, 0xcc, 0xe4, 0xb8, 0x11, 0x30, 0xd2, 0x9a, 0x1e, 0x37, 0xfb, 0xc1, 0x76, 0x75, 0xe7, 0xf8, + 0x3c, 0xe3, 0x0b, 0x71, 0x0d, 0x57, 0x77, 0xae, 0x89, 0x1a, 0x20, 0x56, 0x77, 0x28, 0x68, 0x67, + 0x30, 0xc7, 0xcf, 0x9b, 0x84, 0xdf, 0x80, 0x19, 0xcc, 0x55, 0xae, 0xc4, 0xc4, 0x0c, 0x86, 0x60, + 0xda, 0xc3, 0x49, 0xf4, 0x6b, 0x4a, 0xf8, 0x87, 0x22, 0xc9, 0x06, 0x77, 0x11, 0xa5, 0x4a, 0x60, + 0xac, 0xde, 0xa3, 0x01, 0x50, 0xe2, 0xea, 0xd7, 0x5d, 0x96, 0xc5, 0x3c, 0x45, 0x4b, 0x6c, 0xc5, + 0xc1, 0x12, 0x7b, 0x98, 0x4d, 0x1d, 0x94, 0xb0, 0x8a, 0x5f, 0xa3, 0x2b, 0x56, 0x24, 0xd9, 0x74, + 0x80, 0xe9, 0x3a, 0x72, 0x22, 0x75, 0xc0, 0x38, 0xd0, 0x85, 0xb5, 0xe2, 0x4e, 0x9e, 0x17, 0x55, + 0x58, 0xc4, 0xba, 0xb0, 0x8f, 0x04, 0xbb, 0x70, 0x0b, 0xc5, 0xbd, 0xed, 0xf1, 0x38, 0x4d, 0xb2, + 0xa0, 0x37, 0x8d, 0xf4, 0xf1, 0x66, 0x51, 0xd0, 0x79, 0x8f, 0x38, 0x5b, 0xf0, 0xa6, 0x66, 0xd8, + 0x93, 0x71, 0x81, 0x60, 0xe7, 0x05, 0xa0, 0x5d, 0xa7, 0x29, 0xf1, 0x31, 0xbb, 0xe6, 0xd5, 0x03, + 0xe6, 0xd5, 0xbc, 0x36, 0xc0, 0xf4, 0x3d, 0x82, 0x58, 0xa7, 0xe1, 0xa4, 0x76, 0x35, 0x8f, 0x3e, + 0x52, 0xf2, 0x53, 0x56, 0xc8, 0x24, 0x4e, 0x72, 0x96, 0x35, 0xf9, 0x3f, 0x36, 0xae, 0x5b, 0x94, + 0x71, 0xb9, 0xd5, 0x93, 0xd6, 0x6e, 0xff, 0x63, 0x25, 0xba, 0x0f, 0xfd, 0x9e, 0xf2, 0x62, 0x96, + 0xa8, 0x65, 0x64, 0x59, 0x07, 0xe1, 0xc1, 0x97, 0x61, 0xa3, 0x2d, 0x05, 0x53, 0x9a, 0x1f, 0xde, + 0x5e, 0xd1, 0x26, 0x43, 0x23, 0x9d, 0x5a, 0xbf, 0x2e, 0x26, 0xad, 0x6d, 0x96, 0x51, 0x93, 0x2f, + 0x2b, 0x21, 0x91, 0x0c, 0xb5, 0x20, 0x30, 0xc2, 0xcf, 0xb3, 0xb2, 0xb1, 0x8e, 0x8d, 0x70, 0x2b, + 0x0e, 0x8e, 0x70, 0x0f, 0xb3, 0x23, 0xfc, 0x74, 0x7e, 0x91, 0x26, 0xe5, 0x55, 0x92, 0x4d, 0x75, + 0xe6, 0xeb, 0xeb, 0x5a, 0x31, 0x4c, 0x7e, 0xd7, 0x3a, 0x39, 0xcc, 0x89, 0xee, 0x2c, 0xa4, 0x13, + 0xd0, 0x4d, 0xd6, 0x3a, 0x39, 0xbb, 0x3e, 0xb0, 0xd2, 0x6a, 0xe5, 0x08, 0xd6, 0x07, 0x8e, 0x6a, + 0x25, 0x25, 0xd6, 0x07, 0x6d, 0x4a, 0x9b, 0x17, 0xd1, 0x6f, 0xbb, 0x75, 0x28, 0x45, 0xba, 0xe0, + 0xe7, 0x45, 0x32, 0x78, 0x42, 0x97, 0xaf, 0x61, 0x8c, 0xab, 0x8d, 0x5e, 0xac, 0x0d, 0x54, 0x96, + 0x38, 0xe0, 0x72, 0x24, 0x99, 0x9c, 0x97, 0x20, 0x50, 0x39, 0x36, 0x0c, 0x42, 0x04, 0x2a, 0x02, + 0xd5, 0xde, 0xfe, 0x28, 0x8a, 0xea, 0x45, 0xb7, 0xda, 0x18, 0xf1, 0xe7, 0x1e, 0xbd, 0x1a, 0xf7, + 0x76, 0x45, 0xee, 0x07, 0x08, 0x9b, 0xf0, 0xd4, 0xbf, 0xab, 0xfd, 0x9e, 0x01, 0xaa, 0xa1, 0x44, + 0x44, 0xc2, 0x03, 0x10, 0x58, 0xd0, 0xd1, 0x95, 0xb8, 0xc1, 0x0b, 0x5a, 0x49, 0xc2, 0x05, 0xd5, + 0x84, 0xdd, 0x81, 0xd5, 0x05, 0xc5, 0x76, 0x60, 0x9b, 0x62, 0x84, 0x76, 0x60, 0x21, 0x63, 0xfb, + 0x8c, 0x6b, 0xf8, 0xa5, 0x10, 0xd7, 0x33, 0x56, 0x5c, 0x83, 0x3e, 0xe3, 0x29, 0x37, 0x0c, 0xd1, + 0x67, 0x28, 0xd6, 0xf6, 0x19, 0xd7, 0x61, 0x95, 0x2e, 0x9f, 0x17, 0x29, 0xe8, 0x33, 0x9e, 0x0d, + 0x8d, 0x10, 0x7d, 0x86, 0x40, 0x6d, 0x74, 0x72, 0xbd, 0x8d, 0x38, 0x5c, 0xf3, 0x7b, 0xea, 0x23, + 0x4e, 0xad, 0xf9, 0x11, 0x0c, 0x76, 0xa1, 0x83, 0x82, 0xe5, 0x57, 0x78, 0x17, 0x52, 0xa2, 0x70, + 0x17, 0x6a, 0x10, 0xd8, 0xde, 0x23, 0xce, 0x8a, 0xf8, 0x0a, 0x6f, 0xef, 0x5a, 0x16, 0x6e, 0x6f, + 0xc3, 0xc0, 0xf6, 0xae, 0x05, 0x6f, 0x13, 0x79, 0x75, 0xcc, 0x25, 0xc3, 0xdb, 0xdb, 0x67, 0xc2, + 0xed, 0xdd, 0x62, 0x6d, 0x3e, 0xee, 0x3a, 0x1c, 0xcd, 0x2f, 0xca, 0xb8, 0x48, 0x2e, 0xf8, 0x20, + 0x60, 0xc5, 0x40, 0x44, 0x3e, 0x4e, 0xc2, 0xda, 0xe7, 0xcf, 0x57, 0xa2, 0xbb, 0x4d, 0xb3, 0x8b, + 0xb2, 0xd4, 0x73, 0x9f, 0xef, 0xfe, 0x05, 0xde, 0xbe, 0x04, 0x4e, 0xec, 0x89, 0xf7, 0x50, 0x73, + 0x72, 0x03, 0xbc, 0x48, 0xe7, 0x59, 0x69, 0x0a, 0xf5, 0x65, 0x1f, 0xeb, 0x8e, 0x02, 0x91, 0x1b, + 0xf4, 0x52, 0xb4, 0x69, 0x99, 0x6e, 0x9f, 0x46, 0x76, 0x38, 0x29, 0x41, 0x5a, 0xd6, 0x3c, 0x6f, + 0x87, 0x20, 0xd2, 0x32, 0x9c, 0x84, 0x5d, 0xe1, 0xa0, 0x10, 0xf3, 0xbc, 0xec, 0xe8, 0x0a, 0x00, + 0x0a, 0x77, 0x85, 0x36, 0xac, 0x7d, 0xbe, 0x8b, 0x7e, 0xd7, 0xed, 0x7e, 0xee, 0xc3, 0xde, 0xa2, + 0xfb, 0x14, 0xf6, 0x88, 0x87, 0x7d, 0x71, 0x9b, 0x51, 0x34, 0x9e, 0xe5, 0x1e, 0x97, 0x2c, 0x49, + 0xcb, 0xc1, 0x2a, 0x6e, 0xa3, 0x91, 0x13, 0x19, 0x05, 0xc6, 0xc1, 0xf8, 0xb6, 0x37, 0xcf, 0xd3, + 0x24, 0x6e, 0xbf, 0x91, 0xd0, 0xba, 0x46, 0x1c, 0x8e, 0x6f, 0x2e, 0x06, 0xe3, 0x75, 0x95, 0xfa, + 0xa9, 0xff, 0x8c, 0x97, 0x39, 0xc7, 0xe3, 0xb5, 0x87, 0x84, 0xe3, 0x35, 0x44, 0x61, 0x7d, 0x46, + 0x5c, 0x1e, 0xb1, 0xa5, 0x98, 0x13, 0xf1, 0xda, 0x88, 0xc3, 0xf5, 0x71, 0x31, 0xbb, 0x36, 0x30, + 0x1e, 0x0e, 0x33, 0xc9, 0x8b, 0x8c, 0xa5, 0xfb, 0x29, 0x9b, 0x96, 0x03, 0x22, 0xc6, 0xf8, 0x14, + 0xb1, 0x36, 0xa0, 0x69, 0xe4, 0x31, 0x1e, 0x96, 0xfb, 0x6c, 0x21, 0x8a, 0x44, 0xd2, 0x8f, 0xd1, + 0x22, 0x9d, 0x8f, 0xd1, 0x43, 0x51, 0x6f, 0x3b, 0x45, 0x7c, 0x95, 0x2c, 0xf8, 0x24, 0xe0, 0xad, + 0x41, 0x7a, 0x78, 0x73, 0x50, 0xa4, 0xd1, 0x46, 0x62, 0x5e, 0xc4, 0x9c, 0x6c, 0xb4, 0x5a, 0xdc, + 0xd9, 0x68, 0x06, 0xd3, 0x1e, 0xfe, 0x66, 0x25, 0xfa, 0xbd, 0x5a, 0xea, 0xbe, 0x26, 0xd8, 0x63, + 0xe5, 0xd5, 0x85, 0x60, 0xc5, 0x64, 0xf0, 0x19, 0x66, 0x07, 0x45, 0x8d, 0xeb, 0x67, 0xb7, 0x51, + 0x81, 0x8f, 0xb5, 0xca, 0xbb, 0xed, 0x88, 0x43, 0x1f, 0xab, 0x87, 0x84, 0x1f, 0x2b, 0x44, 0x61, + 0x00, 0x51, 0xf2, 0x7a, 0x4b, 0x6e, 0x95, 0xd4, 0xf7, 0xf7, 0xe5, 0xd6, 0x3a, 0x39, 0x18, 0x1f, + 0x2b, 0xa1, 0xdf, 0x5b, 0xb6, 0x28, 0x1b, 0x78, 0x8f, 0x19, 0xf6, 0xc5, 0x49, 0xcf, 0x66, 0x54, + 0x84, 0x3d, 0xb7, 0x46, 0xc6, 0xb0, 0x2f, 0x4e, 0x78, 0x76, 0xc2, 0x5a, 0xc8, 0x33, 0x12, 0xda, + 0x86, 0x7d, 0x71, 0x98, 0x7d, 0x69, 0xa6, 0x99, 0x17, 0x9e, 0x04, 0xec, 0xc0, 0xb9, 0x61, 0xa3, + 0x17, 0xab, 0x1d, 0xfe, 0xdd, 0x4a, 0xf4, 0x7d, 0xeb, 0xf1, 0x58, 0x4c, 0x92, 0xcb, 0x65, 0x0d, + 0xbd, 0x61, 0xe9, 0x9c, 0x97, 0x83, 0x67, 0x94, 0xb5, 0x36, 0x6b, 0x4a, 0xf0, 0xfc, 0x56, 0x3a, + 0x70, 0xec, 0xec, 0xe4, 0x79, 0xba, 0x1c, 0xf3, 0x59, 0x9e, 0x92, 0x63, 0xc7, 0x43, 0xc2, 0x63, + 0x07, 0xa2, 0x30, 0x2b, 0x1f, 0x8b, 0x2a, 0xe7, 0x47, 0xb3, 0x72, 0x25, 0x0a, 0x67, 0xe5, 0x0d, + 0x02, 0x73, 0xa5, 0xb1, 0xd8, 0x15, 0x69, 0xca, 0x63, 0xd9, 0x3e, 0x6a, 0x60, 0x34, 0x2d, 0x11, + 0xce, 0x95, 0x00, 0x69, 0x77, 0xe5, 0x9a, 0x35, 0x24, 0x2b, 0xf8, 0xcb, 0xe5, 0x51, 0x92, 0x5d, + 0x0f, 0xf0, 0xb4, 0xc0, 0x02, 0xc4, 0xae, 0x1c, 0x0a, 0xc2, 0xb5, 0xea, 0x79, 0x36, 0x11, 0xf8, + 0x5a, 0xb5, 0x92, 0x84, 0xd7, 0xaa, 0x9a, 0x80, 0x26, 0xcf, 0x38, 0x65, 0xb2, 0x92, 0x84, 0x4d, + 0x6a, 0x02, 0x0b, 0x85, 0xfa, 0xdd, 0x0d, 0x19, 0x0a, 0xc1, 0xdb, 0x9a, 0xb5, 0x4e, 0x0e, 0xf6, + 0xd0, 0x66, 0xd1, 0xba, 0xcf, 0x65, 0x7c, 0x85, 0xf7, 0x50, 0x0f, 0x09, 0xf7, 0x50, 0x88, 0xc2, + 0x2a, 0x8d, 0x85, 0x59, 0x74, 0xaf, 0xe2, 0xfd, 0xa3, 0xb5, 0xe0, 0x5e, 0xeb, 0xe4, 0xe0, 0x32, + 0xf2, 0x70, 0xa6, 0x9e, 0x19, 0xda, 0xc9, 0x6b, 0x59, 0x78, 0x19, 0x69, 0x18, 0x58, 0xfa, 0x5a, + 0xa0, 0xf6, 0xb2, 0x56, 0x69, 0x45, 0x6f, 0x37, 0x6b, 0xad, 0x93, 0xd3, 0x4e, 0xfe, 0xcd, 0x2c, + 0xe3, 0x6a, 0xe9, 0x89, 0xa8, 0xc6, 0xc8, 0x1b, 0x96, 0x26, 0x13, 0x26, 0xf9, 0x58, 0x5c, 0xf3, + 0x0c, 0x5f, 0x31, 0xe9, 0xd2, 0xd6, 0xfc, 0xd0, 0x53, 0x08, 0xaf, 0x98, 0xc2, 0x8a, 0xb0, 0x9f, + 0xd4, 0xf4, 0x79, 0xc9, 0x77, 0x59, 0x49, 0x44, 0x32, 0x0f, 0x09, 0xf7, 0x13, 0x88, 0xc2, 0x7c, + 0xb5, 0x96, 0xbf, 0x7a, 0x97, 0xf3, 0x22, 0xe1, 0x59, 0xcc, 0xf1, 0x7c, 0x15, 0x52, 0xe1, 0x7c, + 0x15, 0xa1, 0xe1, 0x5a, 0x6d, 0x8f, 0x49, 0xfe, 0x72, 0x39, 0x4e, 0x66, 0xbc, 0x94, 0x6c, 0x96, + 0xe3, 0x6b, 0x35, 0x00, 0x85, 0xd7, 0x6a, 0x6d, 0xb8, 0xb5, 0x35, 0x64, 0x02, 0x62, 0xfb, 0x84, + 0x12, 0x24, 0x02, 0x27, 0x94, 0x08, 0x14, 0x3e, 0x58, 0x0b, 0xa0, 0x2f, 0x09, 0x5a, 0x56, 0x82, + 0x2f, 0x09, 0x68, 0xba, 0xb5, 0xe1, 0x66, 0x98, 0x51, 0x35, 0x34, 0x3b, 0x8a, 0x3e, 0x72, 0x87, + 0xe8, 0x46, 0x2f, 0x16, 0xdf, 0xe1, 0x3b, 0xe3, 0x29, 0x53, 0xd3, 0x56, 0x60, 0x1b, 0xad, 0x61, + 0xfa, 0xec, 0xf0, 0x39, 0xac, 0x76, 0xf8, 0x57, 0x2b, 0xd1, 0x27, 0x98, 0xc7, 0xd7, 0xb9, 0xf2, + 0xfb, 0xb4, 0xdb, 0x56, 0x4d, 0x12, 0x47, 0xb0, 0xc2, 0x1a, 0xba, 0x0c, 0x7f, 0x16, 0x7d, 0xdc, + 0x88, 0xec, 0x09, 0x2d, 0x5d, 0x00, 0x3f, 0x69, 0x33, 0xe5, 0x87, 0x9c, 0x71, 0xbf, 0xdd, 0x9b, + 0xb7, 0xeb, 0x21, 0xbf, 0x5c, 0x25, 0x58, 0x0f, 0x19, 0x1b, 0x5a, 0x4c, 0xac, 0x87, 0x10, 0xcc, + 0x8e, 0x4e, 0xb7, 0x7a, 0x6f, 0x13, 0x79, 0xa5, 0xf2, 0x2d, 0x30, 0x3a, 0xbd, 0xb2, 0x1a, 0x88, + 0x18, 0x9d, 0x24, 0x0c, 0x33, 0x92, 0x06, 0xac, 0xc6, 0x26, 0x16, 0xcb, 0x8d, 0x21, 0x77, 0x64, + 0xae, 0x77, 0x83, 0xb0, 0xbf, 0x36, 0x62, 0xbd, 0xf4, 0x79, 0x12, 0xb2, 0x00, 0x96, 0x3f, 0x1b, + 0xbd, 0x58, 0xed, 0xf0, 0x2f, 0xa2, 0xef, 0xb5, 0x2a, 0xb6, 0xcf, 0x99, 0x9c, 0x17, 0x7c, 0x32, + 0xd8, 0xee, 0x28, 0x77, 0x03, 0x1a, 0xd7, 0x4f, 0xfb, 0x2b, 0xb4, 0x72, 0xf4, 0x86, 0xab, 0xbb, + 0x95, 0x29, 0xc3, 0xb3, 0x90, 0x49, 0x9f, 0x0d, 0xe6, 0xe8, 0xb4, 0x4e, 0x6b, 0x99, 0xed, 0xf6, + 0xae, 0x9d, 0x05, 0x4b, 0x52, 0xf5, 0xb2, 0xf6, 0xb3, 0x90, 0x51, 0x0f, 0x0d, 0x2e, 0xb3, 0x49, + 0x95, 0x56, 0x64, 0x56, 0x63, 0xdc, 0x59, 0x9e, 0x6d, 0xd2, 0x91, 0x00, 0x59, 0x9d, 0x6d, 0xf5, + 0xa4, 0xb5, 0x5b, 0xd9, 0x4c, 0x79, 0xd5, 0xcf, 0x6e, 0x27, 0xc7, 0xbc, 0x6a, 0x55, 0xa4, 0xa7, + 0x6f, 0xf5, 0xa4, 0xb5, 0xd7, 0x3f, 0x8f, 0x3e, 0x6e, 0x7b, 0xd5, 0x13, 0xd1, 0x76, 0xa7, 0x29, + 0x30, 0x17, 0x3d, 0xed, 0xaf, 0x60, 0x97, 0x34, 0x5f, 0x25, 0xa5, 0x14, 0xc5, 0x72, 0x74, 0x25, + 0x6e, 0x9a, 0x2f, 0x1f, 0xfc, 0xd1, 0xaa, 0x81, 0xa1, 0x43, 0x10, 0x4b, 0x1a, 0x9c, 0x6c, 0xb9, + 0xb2, 0x5f, 0x48, 0x94, 0x84, 0x2b, 0x87, 0xe8, 0x70, 0xe5, 0x93, 0x36, 0x56, 0x35, 0xb5, 0xb2, + 0x9f, 0x73, 0xac, 0xe1, 0x45, 0x6d, 0x7f, 0xd2, 0xb1, 0xde, 0x0d, 0xda, 0x8c, 0x45, 0x8b, 0xf7, + 0x92, 0xcb, 0x4b, 0x53, 0x27, 0xbc, 0xa4, 0x2e, 0x42, 0x64, 0x2c, 0x04, 0x6a, 0x93, 0xee, 0xfd, + 0x24, 0xe5, 0x6a, 0x47, 0xff, 0xf5, 0xe5, 0x65, 0x2a, 0xd8, 0x04, 0x24, 0xdd, 0x95, 0x78, 0xe8, + 0xca, 0x89, 0xa4, 0x1b, 0xe3, 0xec, 0x59, 0x81, 0x4a, 0x7a, 0xc6, 0x63, 0x91, 0xc5, 0x49, 0x0a, + 0x0f, 0x82, 0x2a, 0x4d, 0x23, 0x24, 0xce, 0x0a, 0xb4, 0x20, 0x3b, 0x31, 0x56, 0xa2, 0x6a, 0xd8, + 0x37, 0xe5, 0x7f, 0xd4, 0x56, 0x74, 0xc4, 0xc4, 0xc4, 0x88, 0x60, 0x76, 0xed, 0x59, 0x09, 0xcf, + 0x73, 0x65, 0xfc, 0x5e, 0x5b, 0xab, 0x96, 0x10, 0x6b, 0x4f, 0x9f, 0xb0, 0x6b, 0xa8, 0xea, 0xf7, + 0x3d, 0x71, 0x93, 0x29, 0xa3, 0x0f, 0xda, 0x2a, 0x8d, 0x8c, 0x58, 0x43, 0x41, 0x46, 0x1b, 0xfe, + 0x49, 0xf4, 0xff, 0x95, 0xe1, 0x42, 0xe4, 0x83, 0x3b, 0x88, 0x42, 0xe1, 0x9c, 0xd9, 0xbc, 0x4b, + 0xca, 0xed, 0xd1, 0x02, 0xd3, 0x37, 0xce, 0x4b, 0x36, 0xe5, 0x83, 0x87, 0x44, 0x8b, 0x2b, 0x29, + 0x71, 0xb4, 0xa0, 0x4d, 0xf9, 0xbd, 0xe2, 0x44, 0x4c, 0xb4, 0x75, 0xa4, 0x86, 0x46, 0x18, 0xea, + 0x15, 0x2e, 0x64, 0x93, 0x99, 0x13, 0xb6, 0x48, 0xa6, 0x66, 0xc2, 0xa9, 0xe3, 0x56, 0x09, 0x92, + 0x19, 0xcb, 0x0c, 0x1d, 0x88, 0x48, 0x66, 0x48, 0x58, 0xfb, 0xfc, 0xd7, 0x95, 0xe8, 0x9e, 0x65, + 0x0e, 0x9a, 0xdd, 0xba, 0xc3, 0xec, 0x52, 0x54, 0xa9, 0xcf, 0x51, 0x92, 0x5d, 0x97, 0x83, 0x2f, + 0x28, 0x93, 0x38, 0x6f, 0x8a, 0xf2, 0xe5, 0xad, 0xf5, 0x6c, 0xd6, 0xda, 0x6c, 0x65, 0xd9, 0xf7, + 0xd9, 0xb5, 0x06, 0xc8, 0x5a, 0xcd, 0x8e, 0x17, 0xe4, 0x88, 0xac, 0x35, 0xc4, 0xdb, 0x26, 0x36, + 0xce, 0x53, 0x91, 0xc1, 0x26, 0xb6, 0x16, 0x2a, 0x21, 0xd1, 0xc4, 0x2d, 0xc8, 0xc6, 0xe3, 0x46, + 0x54, 0xef, 0xba, 0xec, 0xa4, 0x29, 0x88, 0xc7, 0x46, 0xd5, 0x00, 0x44, 0x3c, 0x46, 0x41, 0xed, + 0xe7, 0x2c, 0xfa, 0x4e, 0xf5, 0x48, 0x4f, 0x0b, 0xbe, 0x48, 0x38, 0x3c, 0x7a, 0xe1, 0x48, 0x88, + 0xf1, 0xef, 0x13, 0x76, 0x64, 0x9d, 0x67, 0x65, 0x9e, 0xb2, 0xf2, 0x4a, 0xbf, 0x8c, 0xf7, 0xeb, + 0xdc, 0x08, 0xe1, 0xeb, 0xf8, 0x47, 0x1d, 0x94, 0x0d, 0xea, 0x8d, 0xcc, 0x84, 0x98, 0x55, 0x5c, + 0xb5, 0x15, 0x66, 0xd6, 0x3a, 0x39, 0xbb, 0xe3, 0x7d, 0xc0, 0xd2, 0x94, 0x17, 0xcb, 0x46, 0x76, + 0xcc, 0xb2, 0xe4, 0x92, 0x97, 0x12, 0xec, 0x78, 0x6b, 0x6a, 0x08, 0x31, 0x62, 0xc7, 0x3b, 0x80, + 0xdb, 0x6c, 0x1e, 0x78, 0x3e, 0xcc, 0x26, 0xfc, 0x1d, 0xc8, 0xe6, 0xa1, 0x1d, 0xc5, 0x10, 0xd9, + 0x3c, 0xc5, 0xda, 0x9d, 0xdf, 0x97, 0xa9, 0x88, 0xaf, 0xf5, 0x14, 0xe0, 0x37, 0xb0, 0x92, 0xc0, + 0x39, 0xe0, 0x41, 0x08, 0xb1, 0x93, 0x80, 0x12, 0x9c, 0xf1, 0x3c, 0x65, 0x31, 0x3c, 0x7f, 0x53, + 0xeb, 0x68, 0x19, 0x31, 0x09, 0x40, 0x06, 0x14, 0x57, 0x9f, 0xeb, 0xc1, 0x8a, 0x0b, 0x8e, 0xf5, + 0x3c, 0x08, 0x21, 0x76, 0x1a, 0x54, 0x82, 0x51, 0x9e, 0x26, 0x12, 0x0c, 0x83, 0x5a, 0x43, 0x49, + 0x88, 0x61, 0xe0, 0x13, 0xc0, 0xe4, 0x31, 0x2f, 0xa6, 0x1c, 0x35, 0xa9, 0x24, 0x41, 0x93, 0x0d, + 0x61, 0x0f, 0x1b, 0xd7, 0x75, 0x17, 0xf9, 0x12, 0x1c, 0x36, 0xd6, 0xd5, 0x12, 0xf9, 0x92, 0x38, + 0x6c, 0xec, 0x01, 0xa0, 0x88, 0xa7, 0xac, 0x94, 0x78, 0x11, 0x95, 0x24, 0x58, 0xc4, 0x86, 0xb0, + 0x73, 0x74, 0x5d, 0xc4, 0xb9, 0x04, 0x73, 0xb4, 0x2e, 0x80, 0xf3, 0x06, 0xfa, 0x2e, 0x29, 0xb7, + 0x91, 0xa4, 0x6e, 0x15, 0x2e, 0xf7, 0x13, 0x9e, 0x4e, 0x4a, 0x10, 0x49, 0xf4, 0x73, 0x6f, 0xa4, + 0x44, 0x24, 0x69, 0x53, 0xa0, 0x2b, 0xe9, 0xfd, 0x71, 0xac, 0x76, 0x60, 0x6b, 0xfc, 0x41, 0x08, + 0xb1, 0xf1, 0xa9, 0x29, 0xf4, 0x2e, 0x2b, 0x8a, 0xa4, 0x9a, 0xfc, 0x57, 0xf1, 0x02, 0x35, 0x72, + 0x22, 0x3e, 0x61, 0x1c, 0x18, 0x5e, 0x4d, 0xe0, 0xc6, 0x0a, 0x06, 0x43, 0xf7, 0xa7, 0x41, 0xc6, + 0x66, 0x9c, 0x4a, 0xe2, 0xbc, 0x42, 0xc5, 0x9e, 0x26, 0xf2, 0x06, 0x75, 0xb5, 0x0b, 0x73, 0x3e, + 0x06, 0x32, 0x2e, 0x8e, 0xc5, 0x82, 0x8f, 0xc5, 0xab, 0x77, 0x49, 0x29, 0x93, 0x6c, 0xaa, 0x67, + 0xee, 0xe7, 0x84, 0x25, 0x0c, 0x26, 0x3e, 0x06, 0xea, 0x54, 0xb2, 0x09, 0x04, 0x28, 0xcb, 0x09, + 0xbf, 0x41, 0x13, 0x08, 0x68, 0xd1, 0x70, 0x44, 0x02, 0x11, 0xe2, 0xed, 0x3e, 0x8a, 0x71, 0xae, + 0xbf, 0x98, 0x1e, 0x8b, 0x26, 0x97, 0xa3, 0xac, 0x41, 0x90, 0x58, 0xca, 0x06, 0x15, 0xec, 0xfa, + 0xd2, 0xf8, 0xb7, 0x43, 0x6c, 0x9d, 0xb0, 0xd3, 0x1e, 0x66, 0x8f, 0x7b, 0x90, 0x88, 0x2b, 0x7b, + 0x0e, 0x80, 0x72, 0xd5, 0x3e, 0x06, 0xf0, 0xb8, 0x07, 0xe9, 0xec, 0xc9, 0xb8, 0xd5, 0x7a, 0xc9, + 0xe2, 0xeb, 0x69, 0x21, 0xe6, 0xd9, 0x64, 0x57, 0xa4, 0xa2, 0x00, 0x7b, 0x32, 0x5e, 0xa9, 0x01, + 0x4a, 0xec, 0xc9, 0x74, 0xa8, 0xd8, 0x0c, 0xce, 0x2d, 0xc5, 0x4e, 0x9a, 0x4c, 0xe1, 0x8a, 0xda, + 0x33, 0xa4, 0x00, 0x22, 0x83, 0x43, 0x41, 0xa4, 0x13, 0xd5, 0x2b, 0x6e, 0x99, 0xc4, 0x2c, 0xad, + 0xfd, 0x6d, 0xd3, 0x66, 0x3c, 0xb0, 0xb3, 0x13, 0x21, 0x0a, 0x48, 0x3d, 0xc7, 0xf3, 0x22, 0x3b, + 0xcc, 0xa4, 0x20, 0xeb, 0xd9, 0x00, 0x9d, 0xf5, 0x74, 0x40, 0x10, 0x56, 0xc7, 0xfc, 0x5d, 0x55, + 0x9a, 0xea, 0x1f, 0x2c, 0xac, 0x56, 0xbf, 0x0f, 0xb5, 0x3c, 0x14, 0x56, 0x01, 0x07, 0x2a, 0xa3, + 0x9d, 0xd4, 0x1d, 0x26, 0xa0, 0xed, 0x77, 0x93, 0xf5, 0x6e, 0x10, 0xf7, 0x33, 0x92, 0xcb, 0x94, + 0x87, 0xfc, 0x28, 0xa0, 0x8f, 0x9f, 0x06, 0xb4, 0xdb, 0x2d, 0x5e, 0x7d, 0xae, 0x78, 0x7c, 0xdd, + 0x3a, 0xd6, 0xe4, 0x17, 0xb4, 0x46, 0x88, 0xed, 0x16, 0x02, 0xc5, 0x9b, 0xe8, 0x30, 0x16, 0x59, + 0xa8, 0x89, 0x2a, 0x79, 0x9f, 0x26, 0xd2, 0x9c, 0x5d, 0xfc, 0x1a, 0xa9, 0xee, 0x99, 0x75, 0x33, + 0x6d, 0x10, 0x16, 0x5c, 0x88, 0x58, 0xfc, 0x92, 0xb0, 0xcd, 0xc9, 0xa1, 0xcf, 0xe3, 0xf6, 0x99, + 0xef, 0x96, 0x95, 0x63, 0xfa, 0xcc, 0x37, 0xc5, 0xd2, 0x95, 0xac, 0xfb, 0x48, 0x87, 0x15, 0xbf, + 0x9f, 0x6c, 0xf6, 0x83, 0xed, 0x92, 0xc7, 0xf3, 0xb9, 0x9b, 0x72, 0x56, 0xd4, 0x5e, 0xb7, 0x02, + 0x86, 0x2c, 0x46, 0x2c, 0x79, 0x02, 0x38, 0x08, 0x61, 0x9e, 0xe7, 0x5d, 0x91, 0x49, 0x9e, 0x49, + 0x2c, 0x84, 0xf9, 0xc6, 0x34, 0x18, 0x0a, 0x61, 0x94, 0x02, 0xe8, 0xb7, 0x6a, 0x3f, 0x88, 0xcb, + 0x13, 0x36, 0x43, 0x33, 0xb6, 0x7a, 0xaf, 0xa7, 0x96, 0x87, 0xfa, 0x2d, 0xe0, 0x9c, 0x97, 0x7c, + 0xae, 0x97, 0x31, 0x2b, 0xa6, 0x66, 0x77, 0x63, 0x32, 0x78, 0x4a, 0xdb, 0xf1, 0x49, 0xe2, 0x25, + 0x5f, 0x58, 0x03, 0x84, 0x9d, 0xc3, 0x19, 0x9b, 0x9a, 0x9a, 0x22, 0x35, 0x50, 0xf2, 0x56, 0x55, + 0xd7, 0xbb, 0x41, 0xe0, 0xe7, 0x4d, 0x32, 0xe1, 0x22, 0xe0, 0x47, 0xc9, 0xfb, 0xf8, 0x81, 0x20, + 0xc8, 0xde, 0xaa, 0x7a, 0xd7, 0x2b, 0xba, 0x9d, 0x6c, 0xa2, 0xd7, 0xb1, 0x43, 0xe2, 0xf1, 0x00, + 0x2e, 0x94, 0xbd, 0x11, 0x3c, 0x18, 0xa3, 0xcd, 0x06, 0x6d, 0x68, 0x8c, 0x9a, 0xfd, 0xd7, 0x3e, + 0x63, 0x14, 0x83, 0xb5, 0xcf, 0x9f, 0xe9, 0x31, 0xba, 0xc7, 0x24, 0xab, 0xf2, 0xf6, 0x37, 0x09, + 0xbf, 0xd1, 0x0b, 0x61, 0xa4, 0xbe, 0x0d, 0x35, 0x54, 0x9f, 0xac, 0x82, 0x55, 0xf1, 0x76, 0x6f, + 0x3e, 0xe0, 0x5b, 0xaf, 0x10, 0x3a, 0x7d, 0x83, 0xa5, 0xc2, 0x76, 0x6f, 0x3e, 0xe0, 0x5b, 0x7f, + 0x0b, 0xdf, 0xe9, 0x1b, 0x7c, 0x10, 0xbf, 0xdd, 0x9b, 0xd7, 0xbe, 0xff, 0xba, 0x19, 0xb8, 0xae, + 0xf3, 0x2a, 0x0f, 0x8b, 0x65, 0xb2, 0xe0, 0x58, 0x3a, 0xe9, 0xdb, 0x33, 0x68, 0x28, 0x9d, 0xa4, + 0x55, 0x9c, 0x0b, 0x94, 0xb0, 0x52, 0x9c, 0x8a, 0x32, 0x51, 0x2f, 0xe9, 0x9f, 0xf7, 0x30, 0xda, + 0xc0, 0xa1, 0x45, 0x53, 0x48, 0xc9, 0xbe, 0x6e, 0xf4, 0x50, 0x7b, 0x8a, 0x79, 0x33, 0x60, 0xaf, + 0x7d, 0x98, 0x79, 0xab, 0x27, 0x6d, 0x5f, 0xfc, 0x79, 0x8c, 0xfb, 0xc6, 0x31, 0xd4, 0xaa, 0xe8, + 0x4b, 0xc7, 0xa7, 0xfd, 0x15, 0xb4, 0xfb, 0xbf, 0x6d, 0xd6, 0x15, 0xd0, 0xbf, 0x1e, 0x04, 0xcf, + 0xfa, 0x58, 0x04, 0x03, 0xe1, 0xf9, 0xad, 0x74, 0x74, 0x41, 0xfe, 0xb1, 0x59, 0x40, 0x37, 0xa8, + 0xfa, 0x96, 0x43, 0x7d, 0x03, 0xaa, 0xc7, 0x44, 0xa8, 0x59, 0x2d, 0x0c, 0x47, 0xc6, 0x8b, 0x5b, + 0x6a, 0x39, 0xd7, 0x69, 0x79, 0xb0, 0xfe, 0xe6, 0xd0, 0x29, 0x4f, 0xc8, 0xb2, 0x43, 0xc3, 0x02, + 0x7d, 0x71, 0x5b, 0x35, 0x6a, 0xac, 0x38, 0xb0, 0xba, 0x9d, 0xe3, 0x79, 0x4f, 0xc3, 0xde, 0x7d, + 0x1d, 0x9f, 0xdf, 0x4e, 0x49, 0x97, 0xe5, 0xbf, 0x56, 0xa2, 0x47, 0x1e, 0x6b, 0xdf, 0x27, 0x80, + 0x5d, 0x8f, 0x1f, 0x07, 0xec, 0x53, 0x4a, 0xa6, 0x70, 0xbf, 0xff, 0xab, 0x29, 0xdb, 0xbb, 0xa7, + 0x3c, 0x95, 0xfd, 0x24, 0x95, 0xbc, 0x68, 0xdf, 0x3d, 0xe5, 0xdb, 0xad, 0xa9, 0x21, 0x7d, 0xf7, + 0x54, 0x00, 0x77, 0xee, 0x9e, 0x42, 0x3c, 0xa3, 0x77, 0x4f, 0xa1, 0xd6, 0x82, 0x77, 0x4f, 0x85, + 0x35, 0xa8, 0xf0, 0xde, 0x14, 0xa1, 0xde, 0xb7, 0xee, 0x65, 0xd1, 0xdf, 0xc6, 0x7e, 0x76, 0x1b, + 0x15, 0x62, 0x82, 0xab, 0x39, 0x75, 0xce, 0xad, 0xc7, 0x33, 0xf5, 0xce, 0xba, 0x6d, 0xf7, 0xe6, + 0xb5, 0xef, 0x9f, 0xea, 0xd5, 0x8d, 0x09, 0xe7, 0xa2, 0x50, 0xf7, 0x8e, 0x6d, 0x84, 0xc2, 0x73, + 0x65, 0xc1, 0x6d, 0xf9, 0xcd, 0x7e, 0x30, 0x51, 0xdd, 0x8a, 0xd0, 0x8d, 0x3e, 0xec, 0x32, 0x04, + 0x9a, 0x7c, 0xbb, 0x37, 0x4f, 0x4c, 0x23, 0xb5, 0xef, 0xba, 0xb5, 0x7b, 0x18, 0xf3, 0xdb, 0xfa, + 0x69, 0x7f, 0x05, 0xed, 0x7e, 0xa1, 0xd3, 0x46, 0xd7, 0xbd, 0x6a, 0xe7, 0xad, 0x2e, 0x53, 0x23, + 0xaf, 0x99, 0x87, 0x7d, 0xf1, 0x50, 0x02, 0xe1, 0x4e, 0xa1, 0x5d, 0x09, 0x04, 0x3a, 0x8d, 0x7e, + 0x7e, 0x3b, 0x25, 0x5d, 0x96, 0x7f, 0x59, 0x89, 0xee, 0x92, 0x65, 0xd1, 0xfd, 0xe0, 0x8b, 0xbe, + 0x96, 0x41, 0x7f, 0xf8, 0xf2, 0xd6, 0x7a, 0xba, 0x50, 0xff, 0xbe, 0x12, 0xdd, 0x0b, 0x14, 0xaa, + 0xee, 0x20, 0xb7, 0xb0, 0xee, 0x77, 0x94, 0x1f, 0xde, 0x5e, 0x91, 0x9a, 0xee, 0x5d, 0x7c, 0xd4, + 0xbe, 0x94, 0x29, 0x60, 0x7b, 0x44, 0x5f, 0xca, 0xd4, 0xad, 0x05, 0x37, 0x79, 0xd8, 0x45, 0xb3, + 0xe8, 0x42, 0x37, 0x79, 0xd4, 0x09, 0xb5, 0xe0, 0xe5, 0x12, 0x18, 0x87, 0x39, 0x79, 0xf5, 0x2e, + 0x67, 0xd9, 0x84, 0x76, 0x52, 0xcb, 0xbb, 0x9d, 0x18, 0x0e, 0x6e, 0x8e, 0x55, 0xd2, 0x33, 0xd1, + 0x2c, 0xa4, 0x1e, 0x53, 0xfa, 0x06, 0x09, 0x6e, 0x8e, 0xb5, 0x50, 0xc2, 0x9b, 0xce, 0x1a, 0x43, + 0xde, 0x40, 0xb2, 0xf8, 0xa4, 0x0f, 0x0a, 0x52, 0x74, 0xe3, 0xcd, 0xec, 0xb9, 0x6f, 0x86, 0xac, + 0xb4, 0xf6, 0xdd, 0xb7, 0x7a, 0xd2, 0x84, 0xdb, 0x11, 0x97, 0x5f, 0x71, 0x36, 0xe1, 0x45, 0xd0, + 0xad, 0xa1, 0x7a, 0xb9, 0x75, 0x69, 0xcc, 0xed, 0xae, 0x48, 0xe7, 0xb3, 0x4c, 0x37, 0x26, 0xe9, + 0xd6, 0xa5, 0xba, 0xdd, 0x02, 0x1a, 0x6e, 0x0b, 0x5a, 0xb7, 0x2a, 0xbd, 0x7c, 0x12, 0x36, 0xe3, + 0x65, 0x95, 0x1b, 0xbd, 0x58, 0xba, 0x9e, 0xba, 0x1b, 0x75, 0xd4, 0x13, 0xf4, 0xa4, 0xad, 0x9e, + 0x34, 0xdc, 0x9f, 0x73, 0xdc, 0x9a, 0xfe, 0xb4, 0xdd, 0x61, 0xab, 0xd5, 0xa5, 0x9e, 0xf6, 0x57, + 0x80, 0xbb, 0xa1, 0xba, 0x57, 0x1d, 0x25, 0xa5, 0xdc, 0x4f, 0xd2, 0x74, 0xb0, 0x11, 0xe8, 0x26, + 0x0d, 0x14, 0xdc, 0x0d, 0x45, 0x60, 0xa2, 0x27, 0x37, 0xbb, 0x87, 0xd9, 0xa0, 0xcb, 0x8e, 0xa2, + 0x7a, 0xf5, 0x64, 0x97, 0x06, 0x3b, 0x5a, 0xce, 0xa3, 0x36, 0xb5, 0x1d, 0x86, 0x1f, 0x5c, 0xab, + 0xc2, 0xdb, 0xbd, 0x79, 0xf0, 0xba, 0x5d, 0x51, 0x6a, 0x66, 0x79, 0x48, 0x99, 0xf0, 0x66, 0x92, + 0x47, 0x1d, 0x14, 0xd8, 0x15, 0xac, 0x87, 0xd1, 0xdb, 0x64, 0x32, 0xe5, 0x12, 0x7d, 0x53, 0xe4, + 0x02, 0xc1, 0x37, 0x45, 0x00, 0x04, 0x4d, 0x57, 0xff, 0x6e, 0xb6, 0x43, 0x0f, 0x27, 0x58, 0xd3, + 0x69, 0x65, 0x87, 0x0a, 0x35, 0x1d, 0x4a, 0x83, 0x68, 0x60, 0xdc, 0xea, 0xcf, 0xf1, 0x9f, 0x84, + 0xcc, 0x80, 0x6f, 0xf2, 0x37, 0x7a, 0xb1, 0x60, 0x46, 0xb1, 0x0e, 0x93, 0x59, 0x22, 0xb1, 0x19, + 0xc5, 0xb1, 0x51, 0x21, 0xa1, 0x19, 0xa5, 0x8d, 0x52, 0xd5, 0xab, 0x72, 0x84, 0xc3, 0x49, 0xb8, + 0x7a, 0x35, 0xd3, 0xaf, 0x7a, 0x86, 0x6d, 0xbd, 0xd8, 0xcc, 0x4c, 0x97, 0x91, 0x57, 0x7a, 0xb1, + 0x8c, 0xf4, 0x6d, 0xf5, 0x99, 0x26, 0x04, 0x43, 0x51, 0x87, 0x52, 0x80, 0x1b, 0xf6, 0x15, 0xd7, + 0xbc, 0x7b, 0xcd, 0x73, 0xce, 0x0a, 0x96, 0xc5, 0xe8, 0xe2, 0x54, 0x19, 0x6c, 0x91, 0xa1, 0xc5, + 0x29, 0xa9, 0x01, 0x5e, 0x9b, 0xfb, 0x1f, 0x58, 0x22, 0x43, 0xc1, 0x7c, 0xc9, 0xe8, 0x7f, 0x5f, + 0xf9, 0xb8, 0x07, 0x09, 0x5f, 0x9b, 0x37, 0x80, 0xd9, 0xf8, 0xae, 0x9d, 0x7e, 0x16, 0x30, 0xe5, + 0xa3, 0xa1, 0x85, 0x30, 0xad, 0x02, 0x3a, 0xb5, 0x49, 0x70, 0xb9, 0xfc, 0x09, 0x5f, 0x62, 0x9d, + 0xda, 0xe6, 0xa7, 0x0a, 0x09, 0x75, 0xea, 0x36, 0x0a, 0xf2, 0x4c, 0x77, 0x1d, 0xb4, 0x1a, 0xd0, + 0x77, 0x97, 0x3e, 0x6b, 0x9d, 0x1c, 0x18, 0x39, 0x7b, 0xc9, 0xc2, 0x7b, 0x4f, 0x80, 0x14, 0x74, + 0x2f, 0x59, 0xe0, 0xaf, 0x09, 0x36, 0x7a, 0xb1, 0xf0, 0x95, 0x3c, 0x93, 0xfc, 0x5d, 0xf3, 0xae, + 0x1c, 0x29, 0xae, 0x92, 0xb7, 0x5e, 0x96, 0xaf, 0x77, 0x83, 0xf6, 0x00, 0xec, 0x69, 0x21, 0x62, + 0x5e, 0x96, 0xfa, 0xa6, 0x4a, 0xff, 0x84, 0x91, 0x96, 0x0d, 0xc1, 0x3d, 0x95, 0x0f, 0xc3, 0x90, + 0x73, 0xbd, 0x5c, 0x2d, 0xb2, 0xb7, 0xde, 0xac, 0xa2, 0x9a, 0xed, 0x0b, 0x6f, 0xd6, 0x3a, 0x39, + 0x3b, 0xbc, 0xb4, 0xd4, 0xbd, 0xe6, 0x66, 0x1d, 0x55, 0xc7, 0x6e, 0xb8, 0x79, 0xdc, 0x83, 0xd4, + 0xae, 0xbe, 0x8a, 0xde, 0x3f, 0x12, 0xd3, 0x11, 0xcf, 0x26, 0x83, 0x1f, 0xf8, 0x47, 0x68, 0xc5, + 0x74, 0x58, 0xfd, 0x6c, 0x8c, 0xde, 0xa1, 0xc4, 0xf6, 0x10, 0xe0, 0x1e, 0xbf, 0x98, 0x4f, 0x47, + 0x92, 0x49, 0x70, 0x08, 0x50, 0xfd, 0x3e, 0xac, 0x04, 0xc4, 0x21, 0x40, 0x0f, 0x00, 0xf6, 0xc6, + 0x05, 0xe7, 0xa8, 0xbd, 0x4a, 0x10, 0xb4, 0xa7, 0x01, 0x9b, 0x45, 0x18, 0x7b, 0x55, 0xa2, 0x0e, + 0x0f, 0xed, 0x59, 0x1d, 0x25, 0x25, 0xb2, 0x88, 0x36, 0x65, 0x3b, 0x77, 0x5d, 0x7d, 0x75, 0xeb, + 0xc8, 0x7c, 0x36, 0x63, 0xc5, 0x12, 0x74, 0x6e, 0x5d, 0x4b, 0x07, 0x20, 0x3a, 0x37, 0x0a, 0xda, + 0x51, 0xdb, 0x3c, 0xe6, 0xf8, 0xfa, 0x40, 0x14, 0x62, 0x2e, 0x93, 0x8c, 0xc3, 0x9b, 0x27, 0xcc, + 0x03, 0x75, 0x19, 0x62, 0xd4, 0x52, 0xac, 0xcd, 0x72, 0x15, 0x51, 0x9f, 0x27, 0x54, 0xf7, 0x57, + 0x97, 0x52, 0x14, 0xf0, 0x7d, 0x62, 0x6d, 0x05, 0x42, 0x44, 0x96, 0x4b, 0xc2, 0xa0, 0xed, 0x4f, + 0x93, 0x6c, 0x8a, 0xb6, 0xfd, 0xa9, 0x7b, 0xfb, 0xeb, 0x3d, 0x1a, 0xb0, 0x03, 0xaa, 0x7e, 0x68, + 0xf5, 0x00, 0xd0, 0xdf, 0x72, 0xa2, 0x0f, 0xdd, 0x25, 0x88, 0x01, 0x85, 0x93, 0xc0, 0xd5, 0xeb, + 0x9c, 0x67, 0x7c, 0xd2, 0x9c, 0x9a, 0xc3, 0x5c, 0x79, 0x44, 0xd0, 0x15, 0x24, 0x6d, 0x2c, 0x52, + 0xf2, 0xb3, 0x79, 0x76, 0x5a, 0x88, 0xcb, 0x24, 0xe5, 0x05, 0x88, 0x45, 0xb5, 0xba, 0x23, 0x27, + 0x62, 0x11, 0xc6, 0xd9, 0xe3, 0x17, 0x4a, 0xea, 0x5d, 0xc2, 0x3e, 0x2e, 0x58, 0x0c, 0x8f, 0x5f, + 0xd4, 0x36, 0xda, 0x18, 0xb1, 0x33, 0x18, 0xc0, 0x9d, 0x44, 0xa7, 0x76, 0x9d, 0x2d, 0x55, 0xff, + 0xd0, 0xdf, 0x12, 0xaa, 0x3b, 0x51, 0x4b, 0x90, 0xe8, 0x68, 0x73, 0x18, 0x49, 0x24, 0x3a, 0x61, + 0x0d, 0x3b, 0x95, 0x28, 0xee, 0x44, 0x1f, 0x2b, 0x02, 0x53, 0x49, 0x6d, 0xa3, 0x11, 0x12, 0x53, + 0x49, 0x0b, 0x02, 0x01, 0xa9, 0x19, 0x06, 0x53, 0x34, 0x20, 0x19, 0x69, 0x30, 0x20, 0xb9, 0x94, + 0x0d, 0x14, 0x87, 0x59, 0x22, 0x13, 0x96, 0x8e, 0xb8, 0x3c, 0x65, 0x05, 0x9b, 0x71, 0xc9, 0x0b, + 0x18, 0x28, 0x34, 0x32, 0xf4, 0x18, 0x22, 0x50, 0x50, 0xac, 0x76, 0xf8, 0x07, 0xd1, 0x87, 0xd5, + 0xbc, 0xcf, 0x33, 0xfd, 0xe7, 0x56, 0x5e, 0xa9, 0xbf, 0xd3, 0x34, 0xf8, 0xc8, 0xd8, 0x18, 0xc9, + 0x82, 0xb3, 0x59, 0x63, 0xfb, 0x03, 0xf3, 0xbb, 0x02, 0x9f, 0xae, 0x54, 0xfd, 0xf9, 0x44, 0xc8, + 0xe4, 0xb2, 0x5a, 0x66, 0xeb, 0x2f, 0x88, 0x40, 0x7f, 0x76, 0xc5, 0xc3, 0xc0, 0x5d, 0x14, 0x18, + 0x67, 0xe3, 0xb4, 0x2b, 0x3d, 0xe3, 0x79, 0x0a, 0xe3, 0xb4, 0xa7, 0xad, 0x00, 0x22, 0x4e, 0xa3, + 0xa0, 0x1d, 0x9c, 0xae, 0x78, 0xcc, 0xc3, 0x95, 0x19, 0xf3, 0x7e, 0x95, 0x19, 0x7b, 0x1f, 0x65, + 0xa4, 0xd1, 0x87, 0xc7, 0x7c, 0x76, 0xc1, 0x8b, 0xf2, 0x2a, 0xc9, 0xa9, 0x7b, 0x5b, 0x2d, 0xd1, + 0x79, 0x6f, 0x2b, 0x81, 0xda, 0x99, 0xc0, 0x02, 0x87, 0xe5, 0x09, 0x9b, 0x71, 0x75, 0xb3, 0x06, + 0x98, 0x09, 0x1c, 0x23, 0x0e, 0x44, 0xcc, 0x04, 0x24, 0xec, 0x7c, 0xdf, 0x65, 0x99, 0x33, 0x3e, + 0xad, 0x7a, 0x58, 0x71, 0xca, 0x96, 0x33, 0x9e, 0x49, 0x6d, 0x12, 0xec, 0xc9, 0x3b, 0x26, 0x71, + 0x9e, 0xd8, 0x93, 0xef, 0xa3, 0xe7, 0x84, 0x26, 0xef, 0xc1, 0x9f, 0x8a, 0x42, 0xd6, 0x7f, 0x4c, + 0xe9, 0xbc, 0x48, 0x41, 0x68, 0xf2, 0x1f, 0xaa, 0x47, 0x12, 0xa1, 0x29, 0xac, 0xe1, 0xfc, 0x15, + 0x02, 0xaf, 0x0c, 0x6f, 0x78, 0x61, 0xfa, 0xc9, 0xab, 0x19, 0x4b, 0x52, 0xdd, 0x1b, 0x7e, 0x14, + 0xb0, 0x4d, 0xe8, 0x10, 0x7f, 0x85, 0xa0, 0xaf, 0xae, 0xf3, 0x77, 0x1b, 0xc2, 0x25, 0x04, 0xaf, + 0x08, 0x3a, 0xec, 0x13, 0xaf, 0x08, 0xba, 0xb5, 0xec, 0xca, 0xdd, 0xb2, 0x8a, 0x5b, 0x2a, 0x62, + 0x57, 0x4c, 0xe0, 0x7e, 0xa1, 0x63, 0x13, 0x80, 0xc4, 0xca, 0x3d, 0xa8, 0x60, 0x53, 0x03, 0x8b, + 0xed, 0x27, 0x19, 0x4b, 0x93, 0x9f, 0xc1, 0xb4, 0xde, 0xb1, 0xd3, 0x10, 0x44, 0x6a, 0x80, 0x93, + 0x98, 0xab, 0x03, 0x2e, 0xc7, 0x49, 0x15, 0xfa, 0xd7, 0x03, 0xcf, 0x4d, 0x11, 0xdd, 0xae, 0x1c, + 0xd2, 0xb9, 0xa3, 0x15, 0x3e, 0xd6, 0x9d, 0x3c, 0x1f, 0x55, 0xb3, 0xea, 0x19, 0x8f, 0x79, 0x92, + 0xcb, 0xc1, 0x8b, 0xf0, 0xb3, 0x02, 0x38, 0x71, 0xd0, 0xa2, 0x87, 0x9a, 0xf3, 0xfa, 0xbe, 0x8a, + 0x25, 0xa3, 0xfa, 0xaf, 0x0c, 0x9e, 0x97, 0xbc, 0xd0, 0x89, 0xc6, 0x01, 0x97, 0x60, 0x74, 0x3a, + 0xdc, 0xd0, 0x01, 0xab, 0x8a, 0x12, 0xa3, 0x33, 0xac, 0x61, 0x37, 0xfb, 0x1c, 0x4e, 0xdf, 0xb9, + 0xad, 0xce, 0x1b, 0x6e, 0x92, 0xc6, 0x1c, 0x8a, 0xd8, 0xec, 0xa3, 0x69, 0x9b, 0xad, 0xb5, 0xdd, + 0xee, 0x64, 0xcb, 0x43, 0x78, 0x64, 0x02, 0xb1, 0xa4, 0x30, 0x22, 0x5b, 0x0b, 0xe0, 0xce, 0x66, + 0x78, 0x21, 0xd8, 0x24, 0x66, 0xa5, 0x3c, 0x65, 0xcb, 0x54, 0xb0, 0x89, 0x9a, 0xd7, 0xe1, 0x66, + 0x78, 0xc3, 0x0c, 0x5d, 0x88, 0xda, 0x0c, 0xa7, 0x60, 0x37, 0x3b, 0x53, 0x7f, 0x3c, 0x51, 0x9f, + 0xe5, 0x84, 0xd9, 0x99, 0x2a, 0x2f, 0x3c, 0xc7, 0xf9, 0x30, 0x0c, 0xd9, 0x6f, 0xd0, 0x6a, 0x91, + 0x4a, 0x43, 0xee, 0x61, 0x3a, 0x5e, 0x02, 0x72, 0x3f, 0x40, 0xd8, 0x7b, 0x29, 0xea, 0xdf, 0x9b, + 0xbf, 0xff, 0x23, 0xf5, 0x4d, 0xd6, 0x9b, 0x98, 0xae, 0x0b, 0x0d, 0xdd, 0x0b, 0xee, 0xb6, 0x7a, + 0xd2, 0x36, 0xcd, 0xdc, 0xbd, 0x62, 0x72, 0x67, 0x32, 0x39, 0xe6, 0x25, 0xf2, 0x41, 0x79, 0x25, + 0x1c, 0x5a, 0x29, 0x91, 0x66, 0xb6, 0x29, 0xdb, 0xd1, 0x2b, 0xd9, 0xab, 0x49, 0x22, 0xb5, 0xac, + 0x39, 0x21, 0xbd, 0xd9, 0x36, 0xd0, 0xa6, 0x88, 0x5a, 0xd1, 0xb4, 0x8d, 0xe5, 0x15, 0x33, 0x16, + 0xd3, 0x69, 0xca, 0x35, 0x74, 0xc6, 0x59, 0x7d, 0x91, 0xdf, 0x76, 0xdb, 0x16, 0x0a, 0x12, 0xb1, + 0x3c, 0xa8, 0x60, 0xd3, 0xc8, 0x0a, 0xab, 0x5f, 0x49, 0x35, 0x0f, 0x76, 0xad, 0x6d, 0xc6, 0x03, + 0x88, 0x34, 0x12, 0x05, 0xed, 0x77, 0x6f, 0x95, 0xf8, 0x80, 0x37, 0x4f, 0x02, 0x5e, 0x41, 0xa4, + 0x94, 0x1d, 0x31, 0xf1, 0xdd, 0x1b, 0x82, 0xd9, 0x75, 0x02, 0xf0, 0xf0, 0x72, 0x79, 0x38, 0x81, + 0xeb, 0x04, 0xa8, 0xaf, 0x18, 0x62, 0x9d, 0x40, 0xb1, 0x7e, 0xd3, 0x99, 0x7d, 0xaf, 0x23, 0x56, + 0xda, 0xca, 0x21, 0x4d, 0x87, 0x82, 0xa1, 0xa6, 0xa3, 0x14, 0xfc, 0x47, 0xea, 0x6e, 0xad, 0x21, + 0x8f, 0x14, 0xdb, 0x57, 0x5b, 0xed, 0xc2, 0x6c, 0x5c, 0x32, 0xeb, 0x49, 0x75, 0x64, 0x09, 0xbf, + 0xc1, 0xbf, 0x16, 0x12, 0x71, 0xa9, 0x05, 0xd5, 0xb6, 0x5f, 0xde, 0xff, 0xef, 0x6f, 0xee, 0xac, + 0xfc, 0xe2, 0x9b, 0x3b, 0x2b, 0xff, 0xfb, 0xcd, 0x9d, 0x95, 0x9f, 0x7f, 0x7b, 0xe7, 0xbd, 0x5f, + 0x7c, 0x7b, 0xe7, 0xbd, 0xff, 0xf9, 0xf6, 0xce, 0x7b, 0x5f, 0xbf, 0xaf, 0xff, 0xa8, 0xee, 0xc5, + 0xff, 0x53, 0x7f, 0x1a, 0xf7, 0xf9, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0xb2, 0x7c, 0x4b, 0xdb, + 0x78, 0x77, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -717,10 +715,6 @@ type ClientCommandsClient interface { ChatSubscribeLastMessages(ctx context.Context, in *pb.RpcChatSubscribeLastMessagesRequest, opts ...grpc.CallOption) (*pb.RpcChatSubscribeLastMessagesResponse, error) ChatUnsubscribe(ctx context.Context, in *pb.RpcChatUnsubscribeRequest, opts ...grpc.CallOption) (*pb.RpcChatUnsubscribeResponse, error) ObjectChatAdd(ctx context.Context, in *pb.RpcObjectChatAddRequest, opts ...grpc.CallOption) (*pb.RpcObjectChatAddResponse, error) - // API - // *** - ApiStartServer(ctx context.Context, in *pb.RpcApiStartServerRequest, opts ...grpc.CallOption) (*pb.RpcApiStartServerResponse, error) - ApiStopServer(ctx context.Context, in *pb.RpcApiStopServerRequest, opts ...grpc.CallOption) (*pb.RpcApiStopServerResponse, error) } type clientCommandsClient struct { @@ -3229,24 +3223,6 @@ func (c *clientCommandsClient) ObjectChatAdd(ctx context.Context, in *pb.RpcObje return out, nil } -func (c *clientCommandsClient) ApiStartServer(ctx context.Context, in *pb.RpcApiStartServerRequest, opts ...grpc.CallOption) (*pb.RpcApiStartServerResponse, error) { - out := new(pb.RpcApiStartServerResponse) - err := c.cc.Invoke(ctx, "/anytype.ClientCommands/ApiStartServer", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clientCommandsClient) ApiStopServer(ctx context.Context, in *pb.RpcApiStopServerRequest, opts ...grpc.CallOption) (*pb.RpcApiStopServerResponse, error) { - out := new(pb.RpcApiStopServerResponse) - err := c.cc.Invoke(ctx, "/anytype.ClientCommands/ApiStopServer", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - // ClientCommandsServer is the server API for ClientCommands service. type ClientCommandsServer interface { AppGetVersion(context.Context, *pb.RpcAppGetVersionRequest) *pb.RpcAppGetVersionResponse @@ -3587,10 +3563,6 @@ type ClientCommandsServer interface { ChatSubscribeLastMessages(context.Context, *pb.RpcChatSubscribeLastMessagesRequest) *pb.RpcChatSubscribeLastMessagesResponse ChatUnsubscribe(context.Context, *pb.RpcChatUnsubscribeRequest) *pb.RpcChatUnsubscribeResponse ObjectChatAdd(context.Context, *pb.RpcObjectChatAddRequest) *pb.RpcObjectChatAddResponse - // API - // *** - ApiStartServer(context.Context, *pb.RpcApiStartServerRequest) *pb.RpcApiStartServerResponse - ApiStopServer(context.Context, *pb.RpcApiStopServerRequest) *pb.RpcApiStopServerResponse } // UnimplementedClientCommandsServer can be embedded to have forward compatible implementations. @@ -4422,12 +4394,6 @@ func (*UnimplementedClientCommandsServer) ChatUnsubscribe(ctx context.Context, r func (*UnimplementedClientCommandsServer) ObjectChatAdd(ctx context.Context, req *pb.RpcObjectChatAddRequest) *pb.RpcObjectChatAddResponse { return nil } -func (*UnimplementedClientCommandsServer) ApiStartServer(ctx context.Context, req *pb.RpcApiStartServerRequest) *pb.RpcApiStartServerResponse { - return nil -} -func (*UnimplementedClientCommandsServer) ApiStopServer(ctx context.Context, req *pb.RpcApiStopServerRequest) *pb.RpcApiStopServerResponse { - return nil -} func RegisterClientCommandsServer(s *grpc.Server, srv ClientCommandsServer) { s.RegisterService(&_ClientCommands_serviceDesc, srv) @@ -9387,42 +9353,6 @@ func _ClientCommands_ObjectChatAdd_Handler(srv interface{}, ctx context.Context, return interceptor(ctx, in, info, handler) } -func _ClientCommands_ApiStartServer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(pb.RpcApiStartServerRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClientCommandsServer).ApiStartServer(ctx, in), nil - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/anytype.ClientCommands/ApiStartServer", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClientCommandsServer).ApiStartServer(ctx, req.(*pb.RpcApiStartServerRequest)), nil - } - return interceptor(ctx, in, info, handler) -} - -func _ClientCommands_ApiStopServer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(pb.RpcApiStopServerRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClientCommandsServer).ApiStopServer(ctx, in), nil - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/anytype.ClientCommands/ApiStopServer", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClientCommandsServer).ApiStopServer(ctx, req.(*pb.RpcApiStopServerRequest)), nil - } - return interceptor(ctx, in, info, handler) -} - var _ClientCommands_serviceDesc = grpc.ServiceDesc{ ServiceName: "anytype.ClientCommands", HandlerType: (*ClientCommandsServer)(nil), @@ -10523,14 +10453,6 @@ var _ClientCommands_serviceDesc = grpc.ServiceDesc{ MethodName: "ObjectChatAdd", Handler: _ClientCommands_ObjectChatAdd_Handler, }, - { - MethodName: "ApiStartServer", - Handler: _ClientCommands_ApiStartServer_Handler, - }, - { - MethodName: "ApiStopServer", - Handler: _ClientCommands_ApiStopServer_Handler, - }, }, Streams: []grpc.StreamDesc{ { From 43212520d489a3c288324eac69eddd4bef520ff7 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Sun, 19 Jan 2025 17:37:11 +0100 Subject: [PATCH 183/279] GO-4642: Fix concurrent map writes --- core/api/server/middleware.go | 4 ++++ core/api/server/server.go | 3 +++ 2 files changed, 7 insertions(+) diff --git a/core/api/server/middleware.go b/core/api/server/middleware.go index 9ff0aef53..5309142a0 100644 --- a/core/api/server/middleware.go +++ b/core/api/server/middleware.go @@ -50,14 +50,18 @@ func (s *Server) ensureAuthenticated(mw service.ClientCommandsServer, tv interfa } key := strings.TrimPrefix(authHeader, "Bearer ") + s.mu.Lock() token, exists := s.KeyToToken[key] + s.mu.Unlock() if !exists { response := mw.WalletCreateSession(context.Background(), &pb.RpcWalletCreateSessionRequest{Auth: &pb.RpcWalletCreateSessionRequestAuthOfAppKey{AppKey: key}}) if response.Error.Code != pb.RpcWalletCreateSessionResponseError_NULL { c.AbortWithStatusJSON(http.StatusUnauthorized, gin.H{"error": "Failed to create session"}) return } + s.mu.Lock() s.KeyToToken[key] = response.Token + s.mu.Unlock() } else { _, err := tv.ValidateApiToken(token) if err != nil { diff --git a/core/api/server/server.go b/core/api/server/server.go index ec096ce72..152def492 100644 --- a/core/api/server/server.go +++ b/core/api/server/server.go @@ -1,6 +1,8 @@ package server import ( + "sync" + "github.com/anyproto/any-sync/app" "github.com/gin-gonic/gin" @@ -23,6 +25,7 @@ type Server struct { spaceService *space.SpaceService searchService *search.SearchService + mu sync.Mutex KeyToToken map[string]string // appKey -> token } From 430cc41778715bbdbc91d15e802f0ddb309413e7 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Sun, 19 Jan 2025 19:15:03 +0100 Subject: [PATCH 184/279] GO-4459: Refactor swagger docs --- core/api/docs/docs.go | 309 ++++++++++++----------- core/api/docs/swagger.json | 309 ++++++++++++----------- core/api/docs/swagger.yaml | 246 +++++++++--------- core/api/service.go | 2 +- core/api/services/auth/handler.go | 16 +- core/api/services/export/handler.go | 11 +- core/api/services/object/handler.go | 103 ++++---- core/api/services/object/model.go | 3 +- core/api/services/object/service.go | 31 +-- core/api/services/object/service_test.go | 5 +- core/api/services/search/handler.go | 14 +- core/api/services/search/service.go | 5 - core/api/services/space/handler.go | 26 +- core/api/services/space/service.go | 11 - core/api/services/space/service_test.go | 4 +- core/api/util/error.go | 23 +- 16 files changed, 576 insertions(+), 542 deletions(-) diff --git a/core/api/docs/docs.go b/core/api/docs/docs.go index 5c812f7a4..2bdf7117e 100644 --- a/core/api/docs/docs.go +++ b/core/api/docs/docs.go @@ -35,11 +35,11 @@ const docTemplate = `{ "tags": [ "auth" ], - "summary": "Open a modal window with a code in Anytype Desktop app", + "summary": "Start a new challenge", "parameters": [ { "type": "string", - "description": "The name of the app that requests the code", + "description": "App name requesting the challenge", "name": "app_name", "in": "query", "required": true @@ -58,7 +58,7 @@ const docTemplate = `{ "$ref": "#/definitions/util.ValidationError" } }, - "502": { + "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/util.ServerError" @@ -78,18 +78,18 @@ const docTemplate = `{ "tags": [ "auth" ], - "summary": "Retrieve an authentication token using a code", + "summary": "Retrieve a token", "parameters": [ { "type": "string", - "description": "The challenge ID", + "description": "Challenge ID", "name": "challenge_id", "in": "query", "required": true }, { "type": "string", - "description": "The 4-digit code retrieved from Anytype Desktop app", + "description": "4-digit code retrieved from Anytype Desktop app", "name": "code", "in": "query", "required": true @@ -108,7 +108,7 @@ const docTemplate = `{ "$ref": "#/definitions/util.ValidationError" } }, - "502": { + "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/util.ServerError" @@ -128,11 +128,11 @@ const docTemplate = `{ "tags": [ "search" ], - "summary": "Search and retrieve objects across all the spaces", + "summary": "Search objects across all spaces", "parameters": [ { "type": "string", - "description": "The search term to filter objects by name", + "description": "Search query", "name": "query", "in": "query" }, @@ -142,7 +142,7 @@ const docTemplate = `{ "type": "string" }, "collectionFormat": "csv", - "description": "Specify object types for search", + "description": "Types to filter objects by", "name": "object_types", "in": "query" }, @@ -173,19 +173,13 @@ const docTemplate = `{ } } }, - "403": { + "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/util.UnauthorizedError" } }, - "404": { - "description": "Resource not found", - "schema": { - "$ref": "#/definitions/util.NotFoundError" - } - }, - "502": { + "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/util.ServerError" @@ -205,7 +199,7 @@ const docTemplate = `{ "tags": [ "spaces" ], - "summary": "Retrieve a list of spaces", + "summary": "List spaces", "parameters": [ { "type": "integer", @@ -228,19 +222,13 @@ const docTemplate = `{ "$ref": "#/definitions/pagination.PaginatedResponse-space_Space" } }, - "403": { + "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/util.UnauthorizedError" } }, - "404": { - "description": "Resource not found", - "schema": { - "$ref": "#/definitions/util.NotFoundError" - } - }, - "502": { + "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/util.ServerError" @@ -258,7 +246,7 @@ const docTemplate = `{ "tags": [ "spaces" ], - "summary": "Create a new Space", + "summary": "Create space", "parameters": [ { "description": "Space Name", @@ -283,13 +271,13 @@ const docTemplate = `{ "$ref": "#/definitions/util.ValidationError" } }, - "403": { + "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/util.UnauthorizedError" } }, - "502": { + "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/util.ServerError" @@ -309,11 +297,11 @@ const docTemplate = `{ "tags": [ "spaces" ], - "summary": "Retrieve a list of members for the specified Space", + "summary": "List members", "parameters": [ { "type": "string", - "description": "The ID of the space", + "description": "Space ID", "name": "space_id", "in": "path", "required": true @@ -339,19 +327,13 @@ const docTemplate = `{ "$ref": "#/definitions/pagination.PaginatedResponse-space_Member" } }, - "403": { + "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/util.UnauthorizedError" } }, - "404": { - "description": "Resource not found", - "schema": { - "$ref": "#/definitions/util.NotFoundError" - } - }, - "502": { + "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/util.ServerError" @@ -371,11 +353,11 @@ const docTemplate = `{ "tags": [ "objects" ], - "summary": "Retrieve object types in a specific space", + "summary": "List types", "parameters": [ { "type": "string", - "description": "The ID of the space", + "description": "Space ID", "name": "space_id", "in": "path", "required": true @@ -396,27 +378,18 @@ const docTemplate = `{ ], "responses": { "200": { - "description": "List of object types", + "description": "List of types", "schema": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/object.ObjectType" - } + "$ref": "#/definitions/pagination.PaginatedResponse-object_ObjectType" } }, - "403": { + "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/util.UnauthorizedError" } }, - "404": { - "description": "Resource not found", - "schema": { - "$ref": "#/definitions/util.NotFoundError" - } - }, - "502": { + "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/util.ServerError" @@ -436,18 +409,18 @@ const docTemplate = `{ "tags": [ "objects" ], - "summary": "Retrieve a list of templates for a specific object type in a space", + "summary": "List templates", "parameters": [ { "type": "string", - "description": "The ID of the space", + "description": "Space ID", "name": "space_id", "in": "path", "required": true }, { "type": "string", - "description": "The ID of the object type", + "description": "Type ID", "name": "type_id", "in": "path", "required": true @@ -470,28 +443,16 @@ const docTemplate = `{ "200": { "description": "List of templates", "schema": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "$ref": "#/definitions/object.ObjectTemplate" - } - } + "$ref": "#/definitions/pagination.PaginatedResponse-object_Template" } }, - "403": { + "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/util.UnauthorizedError" } }, - "404": { - "description": "Resource not found", - "schema": { - "$ref": "#/definitions/util.NotFoundError" - } - }, - "502": { + "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/util.ServerError" @@ -511,11 +472,11 @@ const docTemplate = `{ "tags": [ "objects" ], - "summary": "Retrieve objects in a specific space", + "summary": "List objects", "parameters": [ { "type": "string", - "description": "The ID of the space", + "description": "Space ID", "name": "space_id", "in": "path", "required": true @@ -538,28 +499,16 @@ const docTemplate = `{ "200": { "description": "List of objects", "schema": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "$ref": "#/definitions/object.Object" - } - } + "$ref": "#/definitions/pagination.PaginatedResponse-object_Object" } }, - "403": { + "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/util.UnauthorizedError" } }, - "404": { - "description": "Resource not found", - "schema": { - "$ref": "#/definitions/util.NotFoundError" - } - }, - "502": { + "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/util.ServerError" @@ -577,25 +526,22 @@ const docTemplate = `{ "tags": [ "objects" ], - "summary": "Create a new object in a specific space", + "summary": "Create object", "parameters": [ { "type": "string", - "description": "The ID of the space", + "description": "Space ID", "name": "space_id", "in": "path", "required": true }, { - "description": "Object details (e.g., name)", + "description": "Object to create", "name": "object", "in": "body", "required": true, "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } + "$ref": "#/definitions/object.CreateObjectRequest" } } ], @@ -612,13 +558,13 @@ const docTemplate = `{ "$ref": "#/definitions/util.ValidationError" } }, - "403": { + "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/util.UnauthorizedError" } }, - "502": { + "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/util.ServerError" @@ -638,18 +584,18 @@ const docTemplate = `{ "tags": [ "objects" ], - "summary": "Retrieve a specific object in a space", + "summary": "Get object", "parameters": [ { "type": "string", - "description": "The ID of the space", + "description": "Space ID", "name": "space_id", "in": "path", "required": true }, { "type": "string", - "description": "The ID of the object", + "description": "Object ID", "name": "object_id", "in": "path", "required": true @@ -662,7 +608,7 @@ const docTemplate = `{ "$ref": "#/definitions/object.ObjectResponse" } }, - "403": { + "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/util.UnauthorizedError" @@ -674,7 +620,7 @@ const docTemplate = `{ "$ref": "#/definitions/util.NotFoundError" } }, - "502": { + "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/util.ServerError" @@ -692,18 +638,18 @@ const docTemplate = `{ "tags": [ "objects" ], - "summary": "Delete a specific object in a space", + "summary": "Delete object", "parameters": [ { "type": "string", - "description": "The ID of the space", + "description": "Space ID", "name": "space_id", "in": "path", "required": true }, { "type": "string", - "description": "The ID of the object", + "description": "Object ID", "name": "object_id", "in": "path", "required": true @@ -716,19 +662,25 @@ const docTemplate = `{ "$ref": "#/definitions/object.ObjectResponse" } }, - "403": { + "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/util.UnauthorizedError" } }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/util.ForbiddenError" + } + }, "404": { "description": "Resource not found", "schema": { "$ref": "#/definitions/util.NotFoundError" } }, - "502": { + "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/util.ServerError" @@ -748,7 +700,7 @@ const docTemplate = `{ "tags": [ "export" ], - "summary": "Export an object", + "summary": "Export object", "parameters": [ { "type": "string", @@ -768,7 +720,7 @@ const docTemplate = `{ "type": "string", "description": "Export format", "name": "format", - "in": "query", + "in": "path", "required": true } ], @@ -785,19 +737,13 @@ const docTemplate = `{ "$ref": "#/definitions/util.ValidationError" } }, - "403": { + "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/util.UnauthorizedError" } }, - "404": { - "description": "Resource not found", - "schema": { - "$ref": "#/definitions/util.NotFoundError" - } - }, - "502": { + "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/util.ServerError" @@ -869,6 +815,32 @@ const docTemplate = `{ } } }, + "object.CreateObjectRequest": { + "type": "object", + "properties": { + "body": { + "type": "string" + }, + "description": { + "type": "string" + }, + "icon": { + "type": "string" + }, + "name": { + "type": "string" + }, + "object_type_unique_key": { + "type": "string" + }, + "source": { + "type": "string" + }, + "template_id": { + "type": "string" + } + } + }, "object.Detail": { "type": "object", "properties": { @@ -969,27 +941,6 @@ const docTemplate = `{ } } }, - "object.ObjectTemplate": { - "type": "object", - "properties": { - "icon": { - "type": "string", - "example": "📄" - }, - "id": { - "type": "string", - "example": "bafyreictrp3obmnf6dwejy5o4p7bderaaia4bdg2psxbfzf44yya5uutge" - }, - "name": { - "type": "string", - "example": "Object Template Name" - }, - "type": { - "type": "string", - "example": "object_template" - } - } - }, "object.ObjectType": { "type": "object", "properties": { @@ -1019,6 +970,27 @@ const docTemplate = `{ } } }, + "object.Template": { + "type": "object", + "properties": { + "icon": { + "type": "string", + "example": "📄" + }, + "id": { + "type": "string", + "example": "bafyreictrp3obmnf6dwejy5o4p7bderaaia4bdg2psxbfzf44yya5uutge" + }, + "name": { + "type": "string", + "example": "Object Template Name" + }, + "type": { + "type": "string", + "example": "object_template" + } + } + }, "object.Text": { "type": "object", "properties": { @@ -1039,6 +1011,48 @@ const docTemplate = `{ } } }, + "pagination.PaginatedResponse-object_Object": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/object.Object" + } + }, + "pagination": { + "$ref": "#/definitions/pagination.PaginationMeta" + } + } + }, + "pagination.PaginatedResponse-object_ObjectType": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/object.ObjectType" + } + }, + "pagination": { + "$ref": "#/definitions/pagination.PaginationMeta" + } + } + }, + "pagination.PaginatedResponse-object_Template": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/object.Template" + } + }, + "pagination": { + "$ref": "#/definitions/pagination.PaginationMeta" + } + } + }, "pagination.PaginatedResponse-space_Member": { "type": "object", "properties": { @@ -1214,6 +1228,19 @@ const docTemplate = `{ } } }, + "util.ForbiddenError": { + "type": "object", + "properties": { + "error": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + } + } + }, "util.NotFoundError": { "type": "object", "properties": { @@ -1285,7 +1312,7 @@ var SwaggerInfo = &swag.Spec{ BasePath: "/v1", Schemes: []string{}, Title: "Anytype API", - Description: "This API allows interaction with Anytype resources such as spaces, objects, and object types.", + Description: "This API allows interaction with Anytype resources such as spaces, objects and types.", InfoInstanceName: "swagger", SwaggerTemplate: docTemplate, LeftDelim: "{{", diff --git a/core/api/docs/swagger.json b/core/api/docs/swagger.json index 3bdab46ab..9097f49b4 100644 --- a/core/api/docs/swagger.json +++ b/core/api/docs/swagger.json @@ -1,7 +1,7 @@ { "swagger": "2.0", "info": { - "description": "This API allows interaction with Anytype resources such as spaces, objects, and object types.", + "description": "This API allows interaction with Anytype resources such as spaces, objects and types.", "title": "Anytype API", "termsOfService": "https://anytype.io/terms_of_use", "contact": { @@ -29,11 +29,11 @@ "tags": [ "auth" ], - "summary": "Open a modal window with a code in Anytype Desktop app", + "summary": "Start a new challenge", "parameters": [ { "type": "string", - "description": "The name of the app that requests the code", + "description": "App name requesting the challenge", "name": "app_name", "in": "query", "required": true @@ -52,7 +52,7 @@ "$ref": "#/definitions/util.ValidationError" } }, - "502": { + "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/util.ServerError" @@ -72,18 +72,18 @@ "tags": [ "auth" ], - "summary": "Retrieve an authentication token using a code", + "summary": "Retrieve a token", "parameters": [ { "type": "string", - "description": "The challenge ID", + "description": "Challenge ID", "name": "challenge_id", "in": "query", "required": true }, { "type": "string", - "description": "The 4-digit code retrieved from Anytype Desktop app", + "description": "4-digit code retrieved from Anytype Desktop app", "name": "code", "in": "query", "required": true @@ -102,7 +102,7 @@ "$ref": "#/definitions/util.ValidationError" } }, - "502": { + "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/util.ServerError" @@ -122,11 +122,11 @@ "tags": [ "search" ], - "summary": "Search and retrieve objects across all the spaces", + "summary": "Search objects across all spaces", "parameters": [ { "type": "string", - "description": "The search term to filter objects by name", + "description": "Search query", "name": "query", "in": "query" }, @@ -136,7 +136,7 @@ "type": "string" }, "collectionFormat": "csv", - "description": "Specify object types for search", + "description": "Types to filter objects by", "name": "object_types", "in": "query" }, @@ -167,19 +167,13 @@ } } }, - "403": { + "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/util.UnauthorizedError" } }, - "404": { - "description": "Resource not found", - "schema": { - "$ref": "#/definitions/util.NotFoundError" - } - }, - "502": { + "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/util.ServerError" @@ -199,7 +193,7 @@ "tags": [ "spaces" ], - "summary": "Retrieve a list of spaces", + "summary": "List spaces", "parameters": [ { "type": "integer", @@ -222,19 +216,13 @@ "$ref": "#/definitions/pagination.PaginatedResponse-space_Space" } }, - "403": { + "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/util.UnauthorizedError" } }, - "404": { - "description": "Resource not found", - "schema": { - "$ref": "#/definitions/util.NotFoundError" - } - }, - "502": { + "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/util.ServerError" @@ -252,7 +240,7 @@ "tags": [ "spaces" ], - "summary": "Create a new Space", + "summary": "Create space", "parameters": [ { "description": "Space Name", @@ -277,13 +265,13 @@ "$ref": "#/definitions/util.ValidationError" } }, - "403": { + "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/util.UnauthorizedError" } }, - "502": { + "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/util.ServerError" @@ -303,11 +291,11 @@ "tags": [ "spaces" ], - "summary": "Retrieve a list of members for the specified Space", + "summary": "List members", "parameters": [ { "type": "string", - "description": "The ID of the space", + "description": "Space ID", "name": "space_id", "in": "path", "required": true @@ -333,19 +321,13 @@ "$ref": "#/definitions/pagination.PaginatedResponse-space_Member" } }, - "403": { + "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/util.UnauthorizedError" } }, - "404": { - "description": "Resource not found", - "schema": { - "$ref": "#/definitions/util.NotFoundError" - } - }, - "502": { + "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/util.ServerError" @@ -365,11 +347,11 @@ "tags": [ "objects" ], - "summary": "Retrieve object types in a specific space", + "summary": "List types", "parameters": [ { "type": "string", - "description": "The ID of the space", + "description": "Space ID", "name": "space_id", "in": "path", "required": true @@ -390,27 +372,18 @@ ], "responses": { "200": { - "description": "List of object types", + "description": "List of types", "schema": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/object.ObjectType" - } + "$ref": "#/definitions/pagination.PaginatedResponse-object_ObjectType" } }, - "403": { + "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/util.UnauthorizedError" } }, - "404": { - "description": "Resource not found", - "schema": { - "$ref": "#/definitions/util.NotFoundError" - } - }, - "502": { + "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/util.ServerError" @@ -430,18 +403,18 @@ "tags": [ "objects" ], - "summary": "Retrieve a list of templates for a specific object type in a space", + "summary": "List templates", "parameters": [ { "type": "string", - "description": "The ID of the space", + "description": "Space ID", "name": "space_id", "in": "path", "required": true }, { "type": "string", - "description": "The ID of the object type", + "description": "Type ID", "name": "type_id", "in": "path", "required": true @@ -464,28 +437,16 @@ "200": { "description": "List of templates", "schema": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "$ref": "#/definitions/object.ObjectTemplate" - } - } + "$ref": "#/definitions/pagination.PaginatedResponse-object_Template" } }, - "403": { + "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/util.UnauthorizedError" } }, - "404": { - "description": "Resource not found", - "schema": { - "$ref": "#/definitions/util.NotFoundError" - } - }, - "502": { + "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/util.ServerError" @@ -505,11 +466,11 @@ "tags": [ "objects" ], - "summary": "Retrieve objects in a specific space", + "summary": "List objects", "parameters": [ { "type": "string", - "description": "The ID of the space", + "description": "Space ID", "name": "space_id", "in": "path", "required": true @@ -532,28 +493,16 @@ "200": { "description": "List of objects", "schema": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "$ref": "#/definitions/object.Object" - } - } + "$ref": "#/definitions/pagination.PaginatedResponse-object_Object" } }, - "403": { + "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/util.UnauthorizedError" } }, - "404": { - "description": "Resource not found", - "schema": { - "$ref": "#/definitions/util.NotFoundError" - } - }, - "502": { + "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/util.ServerError" @@ -571,25 +520,22 @@ "tags": [ "objects" ], - "summary": "Create a new object in a specific space", + "summary": "Create object", "parameters": [ { "type": "string", - "description": "The ID of the space", + "description": "Space ID", "name": "space_id", "in": "path", "required": true }, { - "description": "Object details (e.g., name)", + "description": "Object to create", "name": "object", "in": "body", "required": true, "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } + "$ref": "#/definitions/object.CreateObjectRequest" } } ], @@ -606,13 +552,13 @@ "$ref": "#/definitions/util.ValidationError" } }, - "403": { + "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/util.UnauthorizedError" } }, - "502": { + "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/util.ServerError" @@ -632,18 +578,18 @@ "tags": [ "objects" ], - "summary": "Retrieve a specific object in a space", + "summary": "Get object", "parameters": [ { "type": "string", - "description": "The ID of the space", + "description": "Space ID", "name": "space_id", "in": "path", "required": true }, { "type": "string", - "description": "The ID of the object", + "description": "Object ID", "name": "object_id", "in": "path", "required": true @@ -656,7 +602,7 @@ "$ref": "#/definitions/object.ObjectResponse" } }, - "403": { + "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/util.UnauthorizedError" @@ -668,7 +614,7 @@ "$ref": "#/definitions/util.NotFoundError" } }, - "502": { + "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/util.ServerError" @@ -686,18 +632,18 @@ "tags": [ "objects" ], - "summary": "Delete a specific object in a space", + "summary": "Delete object", "parameters": [ { "type": "string", - "description": "The ID of the space", + "description": "Space ID", "name": "space_id", "in": "path", "required": true }, { "type": "string", - "description": "The ID of the object", + "description": "Object ID", "name": "object_id", "in": "path", "required": true @@ -710,19 +656,25 @@ "$ref": "#/definitions/object.ObjectResponse" } }, - "403": { + "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/util.UnauthorizedError" } }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/util.ForbiddenError" + } + }, "404": { "description": "Resource not found", "schema": { "$ref": "#/definitions/util.NotFoundError" } }, - "502": { + "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/util.ServerError" @@ -742,7 +694,7 @@ "tags": [ "export" ], - "summary": "Export an object", + "summary": "Export object", "parameters": [ { "type": "string", @@ -762,7 +714,7 @@ "type": "string", "description": "Export format", "name": "format", - "in": "query", + "in": "path", "required": true } ], @@ -779,19 +731,13 @@ "$ref": "#/definitions/util.ValidationError" } }, - "403": { + "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/util.UnauthorizedError" } }, - "404": { - "description": "Resource not found", - "schema": { - "$ref": "#/definitions/util.NotFoundError" - } - }, - "502": { + "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/util.ServerError" @@ -863,6 +809,32 @@ } } }, + "object.CreateObjectRequest": { + "type": "object", + "properties": { + "body": { + "type": "string" + }, + "description": { + "type": "string" + }, + "icon": { + "type": "string" + }, + "name": { + "type": "string" + }, + "object_type_unique_key": { + "type": "string" + }, + "source": { + "type": "string" + }, + "template_id": { + "type": "string" + } + } + }, "object.Detail": { "type": "object", "properties": { @@ -963,27 +935,6 @@ } } }, - "object.ObjectTemplate": { - "type": "object", - "properties": { - "icon": { - "type": "string", - "example": "📄" - }, - "id": { - "type": "string", - "example": "bafyreictrp3obmnf6dwejy5o4p7bderaaia4bdg2psxbfzf44yya5uutge" - }, - "name": { - "type": "string", - "example": "Object Template Name" - }, - "type": { - "type": "string", - "example": "object_template" - } - } - }, "object.ObjectType": { "type": "object", "properties": { @@ -1013,6 +964,27 @@ } } }, + "object.Template": { + "type": "object", + "properties": { + "icon": { + "type": "string", + "example": "📄" + }, + "id": { + "type": "string", + "example": "bafyreictrp3obmnf6dwejy5o4p7bderaaia4bdg2psxbfzf44yya5uutge" + }, + "name": { + "type": "string", + "example": "Object Template Name" + }, + "type": { + "type": "string", + "example": "object_template" + } + } + }, "object.Text": { "type": "object", "properties": { @@ -1033,6 +1005,48 @@ } } }, + "pagination.PaginatedResponse-object_Object": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/object.Object" + } + }, + "pagination": { + "$ref": "#/definitions/pagination.PaginationMeta" + } + } + }, + "pagination.PaginatedResponse-object_ObjectType": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/object.ObjectType" + } + }, + "pagination": { + "$ref": "#/definitions/pagination.PaginationMeta" + } + } + }, + "pagination.PaginatedResponse-object_Template": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/object.Template" + } + }, + "pagination": { + "$ref": "#/definitions/pagination.PaginationMeta" + } + } + }, "pagination.PaginatedResponse-space_Member": { "type": "object", "properties": { @@ -1208,6 +1222,19 @@ } } }, + "util.ForbiddenError": { + "type": "object", + "properties": { + "error": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + } + } + }, "util.NotFoundError": { "type": "object", "properties": { diff --git a/core/api/docs/swagger.yaml b/core/api/docs/swagger.yaml index dd2a83a1d..a77e2874e 100644 --- a/core/api/docs/swagger.yaml +++ b/core/api/docs/swagger.yaml @@ -41,6 +41,23 @@ definitions: example: VerticalAlignTop type: string type: object + object.CreateObjectRequest: + properties: + body: + type: string + description: + type: string + icon: + type: string + name: + type: string + object_type_unique_key: + type: string + source: + type: string + template_id: + type: string + type: object object.Detail: properties: details: @@ -109,21 +126,6 @@ definitions: object: $ref: '#/definitions/object.Object' type: object - object.ObjectTemplate: - properties: - icon: - example: "\U0001F4C4" - type: string - id: - example: bafyreictrp3obmnf6dwejy5o4p7bderaaia4bdg2psxbfzf44yya5uutge - type: string - name: - example: Object Template Name - type: string - type: - example: object_template - type: string - type: object object.ObjectType: properties: icon: @@ -145,6 +147,21 @@ definitions: example: ot-page type: string type: object + object.Template: + properties: + icon: + example: "\U0001F4C4" + type: string + id: + example: bafyreictrp3obmnf6dwejy5o4p7bderaaia4bdg2psxbfzf44yya5uutge + type: string + name: + example: Object Template Name + type: string + type: + example: object_template + type: string + type: object object.Text: properties: checked: @@ -158,6 +175,33 @@ definitions: text: type: string type: object + pagination.PaginatedResponse-object_Object: + properties: + data: + items: + $ref: '#/definitions/object.Object' + type: array + pagination: + $ref: '#/definitions/pagination.PaginationMeta' + type: object + pagination.PaginatedResponse-object_ObjectType: + properties: + data: + items: + $ref: '#/definitions/object.ObjectType' + type: array + pagination: + $ref: '#/definitions/pagination.PaginationMeta' + type: object + pagination.PaginatedResponse-object_Template: + properties: + data: + items: + $ref: '#/definitions/object.Template' + type: array + pagination: + $ref: '#/definitions/pagination.PaginationMeta' + type: object pagination.PaginatedResponse-space_Member: properties: data: @@ -284,6 +328,14 @@ definitions: example: bafyreiapey2g6e6za4zfxvlgwdy4hbbfu676gmwrhnqvjbxvrchr7elr3y type: string type: object + util.ForbiddenError: + properties: + error: + properties: + message: + type: string + type: object + type: object util.NotFoundError: properties: error: @@ -326,7 +378,7 @@ info: name: Anytype Support url: https://anytype.io/contact description: This API allows interaction with Anytype resources such as spaces, - objects, and object types. + objects and types. license: name: Any Source Available License 1.0 url: https://github.com/anyproto/anytype-ts/blob/main/LICENSE.md @@ -339,7 +391,7 @@ paths: consumes: - application/json parameters: - - description: The name of the app that requests the code + - description: App name requesting the challenge in: query name: app_name required: true @@ -355,11 +407,11 @@ paths: description: Invalid input schema: $ref: '#/definitions/util.ValidationError' - "502": + "500": description: Internal server error schema: $ref: '#/definitions/util.ServerError' - summary: Open a modal window with a code in Anytype Desktop app + summary: Start a new challenge tags: - auth /auth/token: @@ -367,12 +419,12 @@ paths: consumes: - application/json parameters: - - description: The challenge ID + - description: Challenge ID in: query name: challenge_id required: true type: string - - description: The 4-digit code retrieved from Anytype Desktop app + - description: 4-digit code retrieved from Anytype Desktop app in: query name: code required: true @@ -388,11 +440,11 @@ paths: description: Invalid input schema: $ref: '#/definitions/util.ValidationError' - "502": + "500": description: Internal server error schema: $ref: '#/definitions/util.ServerError' - summary: Retrieve an authentication token using a code + summary: Retrieve a token tags: - auth /search: @@ -400,12 +452,12 @@ paths: consumes: - application/json parameters: - - description: The search term to filter objects by name + - description: Search query in: query name: query type: string - collectionFormat: csv - description: Specify object types for search + description: Types to filter objects by in: query items: type: string @@ -432,19 +484,15 @@ paths: $ref: '#/definitions/object.Object' type: array type: object - "403": + "401": description: Unauthorized schema: $ref: '#/definitions/util.UnauthorizedError' - "404": - description: Resource not found - schema: - $ref: '#/definitions/util.NotFoundError' - "502": + "500": description: Internal server error schema: $ref: '#/definitions/util.ServerError' - summary: Search and retrieve objects across all the spaces + summary: Search objects across all spaces tags: - search /spaces: @@ -469,19 +517,15 @@ paths: description: List of spaces schema: $ref: '#/definitions/pagination.PaginatedResponse-space_Space' - "403": + "401": description: Unauthorized schema: $ref: '#/definitions/util.UnauthorizedError' - "404": - description: Resource not found - schema: - $ref: '#/definitions/util.NotFoundError' - "502": + "500": description: Internal server error schema: $ref: '#/definitions/util.ServerError' - summary: Retrieve a list of spaces + summary: List spaces tags: - spaces post: @@ -505,15 +549,15 @@ paths: description: Bad request schema: $ref: '#/definitions/util.ValidationError' - "403": + "401": description: Unauthorized schema: $ref: '#/definitions/util.UnauthorizedError' - "502": + "500": description: Internal server error schema: $ref: '#/definitions/util.ServerError' - summary: Create a new Space + summary: Create space tags: - spaces /spaces/{space_id}/members: @@ -521,7 +565,7 @@ paths: consumes: - application/json parameters: - - description: The ID of the space + - description: Space ID in: path name: space_id required: true @@ -543,19 +587,15 @@ paths: description: List of members schema: $ref: '#/definitions/pagination.PaginatedResponse-space_Member' - "403": + "401": description: Unauthorized schema: $ref: '#/definitions/util.UnauthorizedError' - "404": - description: Resource not found - schema: - $ref: '#/definitions/util.NotFoundError' - "502": + "500": description: Internal server error schema: $ref: '#/definitions/util.ServerError' - summary: Retrieve a list of members for the specified Space + summary: List members tags: - spaces /spaces/{space_id}/object_types: @@ -563,7 +603,7 @@ paths: consumes: - application/json parameters: - - description: The ID of the space + - description: Space ID in: path name: space_id required: true @@ -582,24 +622,18 @@ paths: - application/json responses: "200": - description: List of object types + description: List of types schema: - additionalProperties: - $ref: '#/definitions/object.ObjectType' - type: object - "403": + $ref: '#/definitions/pagination.PaginatedResponse-object_ObjectType' + "401": description: Unauthorized schema: $ref: '#/definitions/util.UnauthorizedError' - "404": - description: Resource not found - schema: - $ref: '#/definitions/util.NotFoundError' - "502": + "500": description: Internal server error schema: $ref: '#/definitions/util.ServerError' - summary: Retrieve object types in a specific space + summary: List types tags: - objects /spaces/{space_id}/object_types/{type_id}/templates: @@ -607,12 +641,12 @@ paths: consumes: - application/json parameters: - - description: The ID of the space + - description: Space ID in: path name: space_id required: true type: string - - description: The ID of the object type + - description: Type ID in: path name: type_id required: true @@ -633,24 +667,16 @@ paths: "200": description: List of templates schema: - additionalProperties: - items: - $ref: '#/definitions/object.ObjectTemplate' - type: array - type: object - "403": + $ref: '#/definitions/pagination.PaginatedResponse-object_Template' + "401": description: Unauthorized schema: $ref: '#/definitions/util.UnauthorizedError' - "404": - description: Resource not found - schema: - $ref: '#/definitions/util.NotFoundError' - "502": + "500": description: Internal server error schema: $ref: '#/definitions/util.ServerError' - summary: Retrieve a list of templates for a specific object type in a space + summary: List templates tags: - objects /spaces/{space_id}/objects: @@ -658,7 +684,7 @@ paths: consumes: - application/json parameters: - - description: The ID of the space + - description: Space ID in: path name: space_id required: true @@ -679,43 +705,33 @@ paths: "200": description: List of objects schema: - additionalProperties: - items: - $ref: '#/definitions/object.Object' - type: array - type: object - "403": + $ref: '#/definitions/pagination.PaginatedResponse-object_Object' + "401": description: Unauthorized schema: $ref: '#/definitions/util.UnauthorizedError' - "404": - description: Resource not found - schema: - $ref: '#/definitions/util.NotFoundError' - "502": + "500": description: Internal server error schema: $ref: '#/definitions/util.ServerError' - summary: Retrieve objects in a specific space + summary: List objects tags: - objects post: consumes: - application/json parameters: - - description: The ID of the space + - description: Space ID in: path name: space_id required: true type: string - - description: Object details (e.g., name) + - description: Object to create in: body name: object required: true schema: - additionalProperties: - type: string - type: object + $ref: '#/definitions/object.CreateObjectRequest' produces: - application/json responses: @@ -727,15 +743,15 @@ paths: description: Bad request schema: $ref: '#/definitions/util.ValidationError' - "403": + "401": description: Unauthorized schema: $ref: '#/definitions/util.UnauthorizedError' - "502": + "500": description: Internal server error schema: $ref: '#/definitions/util.ServerError' - summary: Create a new object in a specific space + summary: Create object tags: - objects /spaces/{space_id}/objects/{object_id}: @@ -743,12 +759,12 @@ paths: consumes: - application/json parameters: - - description: The ID of the space + - description: Space ID in: path name: space_id required: true type: string - - description: The ID of the object + - description: Object ID in: path name: object_id required: true @@ -760,31 +776,35 @@ paths: description: The deleted object schema: $ref: '#/definitions/object.ObjectResponse' - "403": + "401": description: Unauthorized schema: $ref: '#/definitions/util.UnauthorizedError' + "403": + description: Forbidden + schema: + $ref: '#/definitions/util.ForbiddenError' "404": description: Resource not found schema: $ref: '#/definitions/util.NotFoundError' - "502": + "500": description: Internal server error schema: $ref: '#/definitions/util.ServerError' - summary: Delete a specific object in a space + summary: Delete object tags: - objects get: consumes: - application/json parameters: - - description: The ID of the space + - description: Space ID in: path name: space_id required: true type: string - - description: The ID of the object + - description: Object ID in: path name: object_id required: true @@ -796,7 +816,7 @@ paths: description: The requested object schema: $ref: '#/definitions/object.ObjectResponse' - "403": + "401": description: Unauthorized schema: $ref: '#/definitions/util.UnauthorizedError' @@ -804,11 +824,11 @@ paths: description: Resource not found schema: $ref: '#/definitions/util.NotFoundError' - "502": + "500": description: Internal server error schema: $ref: '#/definitions/util.ServerError' - summary: Retrieve a specific object in a space + summary: Get object tags: - objects /spaces/{space_id}/objects/{object_id}/export/{format}: @@ -827,7 +847,7 @@ paths: required: true type: string - description: Export format - in: query + in: path name: format required: true type: string @@ -842,19 +862,15 @@ paths: description: Bad request schema: $ref: '#/definitions/util.ValidationError' - "403": + "401": description: Unauthorized schema: $ref: '#/definitions/util.UnauthorizedError' - "404": - description: Resource not found - schema: - $ref: '#/definitions/util.NotFoundError' - "502": + "500": description: Internal server error schema: $ref: '#/definitions/util.ServerError' - summary: Export an object + summary: Export object tags: - export securityDefinitions: diff --git a/core/api/service.go b/core/api/service.go index 08296bcce..0da7396ba 100644 --- a/core/api/service.go +++ b/core/api/service.go @@ -47,7 +47,7 @@ func (s *apiService) Name() (name string) { // // @title Anytype API // @version 1.0 -// @description This API allows interaction with Anytype resources such as spaces, objects, and object types. +// @description This API allows interaction with Anytype resources such as spaces, objects and types. // @termsOfService https://anytype.io/terms_of_use // @contact.name Anytype Support // @contact.url https://anytype.io/contact diff --git a/core/api/services/auth/handler.go b/core/api/services/auth/handler.go index 23921af13..5bc8b93db 100644 --- a/core/api/services/auth/handler.go +++ b/core/api/services/auth/handler.go @@ -8,16 +8,16 @@ import ( "github.com/anyproto/anytype-heart/core/api/util" ) -// DisplayCodeHandler generates a new challenge and returns the challenge ID +// DisplayCodeHandler starts a new challenge and returns the challenge ID // -// @Summary Open a modal window with a code in Anytype Desktop app +// @Summary Start a new challenge // @Tags auth // @Accept json // @Produce json -// @Param app_name query string true "The name of the app that requests the code" +// @Param app_name query string true "App name requesting the challenge" // @Success 200 {object} DisplayCodeResponse "Challenge ID" // @Failure 400 {object} util.ValidationError "Invalid input" -// @Failure 502 {object} util.ServerError "Internal server error" +// @Failure 500 {object} util.ServerError "Internal server error" // @Router /auth/display_code [post] func DisplayCodeHandler(s *AuthService) gin.HandlerFunc { return func(c *gin.Context) { @@ -40,15 +40,15 @@ func DisplayCodeHandler(s *AuthService) gin.HandlerFunc { // TokenHandler retrieves an authentication token using a code and challenge ID // -// @Summary Retrieve an authentication token using a code +// @Summary Retrieve a token // @Tags auth // @Accept json // @Produce json -// @Param challenge_id query string true "The challenge ID" -// @Param code query string true "The 4-digit code retrieved from Anytype Desktop app" +// @Param challenge_id query string true "Challenge ID" +// @Param code query string true "4-digit code retrieved from Anytype Desktop app" // @Success 200 {object} TokenResponse "Authentication token" // @Failure 400 {object} util.ValidationError "Invalid input" -// @Failure 502 {object} util.ServerError "Internal server error" +// @Failure 500 {object} util.ServerError "Internal server error" // @Router /auth/token [post] func TokenHandler(s *AuthService) gin.HandlerFunc { return func(c *gin.Context) { diff --git a/core/api/services/export/handler.go b/core/api/services/export/handler.go index aa1017c9b..ee259630e 100644 --- a/core/api/services/export/handler.go +++ b/core/api/services/export/handler.go @@ -8,20 +8,19 @@ import ( "github.com/anyproto/anytype-heart/core/api/util" ) -// GetObjectExportHandler exports an object to the specified format +// GetObjectExportHandler exports an object in specified format // -// @Summary Export an object +// @Summary Export object // @Tags export // @Accept json // @Produce json // @Param space_id path string true "Space ID" // @Param object_id path string true "Object ID" -// @Param format query string true "Export format" +// @Param format path string true "Export format" // @Success 200 {object} ObjectExportResponse "Object exported successfully" // @Failure 400 {object} util.ValidationError "Bad request" -// @Failure 403 {object} util.UnauthorizedError "Unauthorized" -// @Failure 404 {object} util.NotFoundError "Resource not found" -// @Failure 502 {object} util.ServerError "Internal server error" +// @Failure 401 {object} util.UnauthorizedError "Unauthorized" +// @Failure 500 {object} util.ServerError "Internal server error" // @Router /spaces/{space_id}/objects/{object_id}/export/{format} [post] func GetObjectExportHandler(s *ExportService) gin.HandlerFunc { return func(c *gin.Context) { diff --git a/core/api/services/object/handler.go b/core/api/services/object/handler.go index 9f835d14d..342ac89d4 100644 --- a/core/api/services/object/handler.go +++ b/core/api/services/object/handler.go @@ -9,19 +9,18 @@ import ( "github.com/anyproto/anytype-heart/core/api/util" ) -// GetObjectsHandler retrieves objects in a specific space +// GetObjectsHandler retrieves a list of objects in a space // -// @Summary Retrieve objects in a specific space +// @Summary List objects // @Tags objects // @Accept json // @Produce json -// @Param space_id path string true "The ID of the space" -// @Param offset query int false "The number of items to skip before starting to collect the result set" -// @Param limit query int false "The number of items to return" default(100) -// @Success 200 {object} map[string][]Object "List of objects" -// @Failure 403 {object} util.UnauthorizedError "Unauthorized" -// @Failure 404 {object} util.NotFoundError "Resource not found" -// @Failure 502 {object} util.ServerError "Internal server error" +// @Param space_id path string true "Space ID" +// @Param offset query int false "The number of items to skip before starting to collect the result set" +// @Param limit query int false "The number of items to return" default(100) +// @Success 200 {object} pagination.PaginatedResponse[Object] "List of objects" +// @Failure 401 {object} util.UnauthorizedError "Unauthorized" +// @Failure 500 {object} util.ServerError "Internal server error" // @Router /spaces/{space_id}/objects [get] func GetObjectsHandler(s *ObjectService) gin.HandlerFunc { return func(c *gin.Context) { @@ -31,9 +30,8 @@ func GetObjectsHandler(s *ObjectService) gin.HandlerFunc { objects, total, hasMore, err := s.ListObjects(c.Request.Context(), spaceId, offset, limit) code := util.MapErrorCode(err, - util.ErrToCode(ErrorFailedRetrieveObjects, http.StatusInternalServerError), - util.ErrToCode(ErrNoObjectsFound, http.StatusNotFound), - util.ErrToCode(ErrObjectNotFound, http.StatusNotFound), + util.ErrToCode(ErrFailedRetrieveObjects, http.StatusInternalServerError), + util.ErrToCode(ErrObjectNotFound, http.StatusInternalServerError), util.ErrToCode(ErrFailedRetrieveObject, http.StatusInternalServerError), ) @@ -47,18 +45,18 @@ func GetObjectsHandler(s *ObjectService) gin.HandlerFunc { } } -// GetObjectHandler retrieves a specific object in a space +// GetObjectHandler retrieves an object in a space // -// @Summary Retrieve a specific object in a space +// @Summary Get object // @Tags objects // @Accept json // @Produce json -// @Param space_id path string true "The ID of the space" -// @Param object_id path string true "The ID of the object" +// @Param space_id path string true "Space ID" +// @Param object_id path string true "Object ID" // @Success 200 {object} ObjectResponse "The requested object" -// @Failure 403 {object} util.UnauthorizedError "Unauthorized" +// @Failure 401 {object} util.UnauthorizedError "Unauthorized" // @Failure 404 {object} util.NotFoundError "Resource not found" -// @Failure 502 {object} util.ServerError "Internal server error" +// @Failure 500 {object} util.ServerError "Internal server error" // @Router /spaces/{space_id}/objects/{object_id} [get] func GetObjectHandler(s *ObjectService) gin.HandlerFunc { return func(c *gin.Context) { @@ -81,18 +79,19 @@ func GetObjectHandler(s *ObjectService) gin.HandlerFunc { } } -// DeleteObjectHandler deletes a specific object in a space +// DeleteObjectHandler deletes an object in a space // -// @Summary Delete a specific object in a space +// @Summary Delete object // @Tags objects // @Accept json // @Produce json -// @Param space_id path string true "The ID of the space" -// @Param object_id path string true "The ID of the object" +// @Param space_id path string true "Space ID" +// @Param object_id path string true "Object ID" // @Success 200 {object} ObjectResponse "The deleted object" -// @Failure 403 {object} util.UnauthorizedError "Unauthorized" +// @Failure 401 {object} util.UnauthorizedError "Unauthorized" +// @Failure 403 {object} util.ForbiddenError "Forbidden" // @Failure 404 {object} util.NotFoundError "Resource not found" -// @Failure 502 {object} util.ServerError "Internal server error" +// @Failure 500 {object} util.ServerError "Internal server error" // @Router /spaces/{space_id}/objects/{object_id} [delete] func DeleteObjectHandler(s *ObjectService) gin.HandlerFunc { return func(c *gin.Context) { @@ -102,8 +101,8 @@ func DeleteObjectHandler(s *ObjectService) gin.HandlerFunc { object, err := s.DeleteObject(c.Request.Context(), spaceId, objectId) code := util.MapErrorCode(err, util.ErrToCode(ErrObjectNotFound, http.StatusNotFound), - util.ErrToCode(ErrFailedRetrieveObject, http.StatusInternalServerError), util.ErrToCode(ErrFailedDeleteObject, http.StatusForbidden), + util.ErrToCode(ErrFailedRetrieveObject, http.StatusInternalServerError), ) if code != http.StatusOK { @@ -116,18 +115,18 @@ func DeleteObjectHandler(s *ObjectService) gin.HandlerFunc { } } -// CreateObjectHandler creates a new object in a specific space +// CreateObjectHandler creates a new object in a space // -// @Summary Create a new object in a specific space +// @Summary Create object // @Tags objects // @Accept json // @Produce json -// @Param space_id path string true "The ID of the space" -// @Param object body map[string]string true "Object details (e.g., name)" +// @Param space_id path string true "Space ID" +// @Param object body CreateObjectRequest true "Object to create" // @Success 200 {object} ObjectResponse "The created object" // @Failure 400 {object} util.ValidationError "Bad request" -// @Failure 403 {object} util.UnauthorizedError "Unauthorized" -// @Failure 502 {object} util.ServerError "Internal server error" +// @Failure 401 {object} util.UnauthorizedError "Unauthorized" +// @Failure 500 {object} util.ServerError "Internal server error" // @Router /spaces/{space_id}/objects [post] func CreateObjectHandler(s *ObjectService) gin.HandlerFunc { return func(c *gin.Context) { @@ -146,7 +145,7 @@ func CreateObjectHandler(s *ObjectService) gin.HandlerFunc { util.ErrToCode(ErrFailedCreateObject, http.StatusInternalServerError), util.ErrToCode(ErrFailedSetRelationFeatured, http.StatusInternalServerError), util.ErrToCode(ErrFailedFetchBookmark, http.StatusInternalServerError), - util.ErrToCode(ErrObjectNotFound, http.StatusNotFound), + util.ErrToCode(ErrObjectNotFound, http.StatusInternalServerError), util.ErrToCode(ErrFailedRetrieveObject, http.StatusInternalServerError), ) @@ -160,19 +159,18 @@ func CreateObjectHandler(s *ObjectService) gin.HandlerFunc { } } -// GetTypesHandler retrieves object types in a specific space +// GetTypesHandler retrieves a list of types in a space // -// @Summary Retrieve object types in a specific space +// @Summary List types // @Tags objects // @Accept json // @Produce json -// @Param space_id path string true "The ID of the space" -// @Param offset query int false "The number of items to skip before starting to collect the result set" -// @Param limit query int false "The number of items to return" default(100) -// @Success 200 {object} map[string]ObjectType "List of object types" -// @Failure 403 {object} util.UnauthorizedError "Unauthorized" -// @Failure 404 {object} util.NotFoundError "Resource not found" -// @Failure 502 {object} util.ServerError "Internal server error" +// @Param space_id path string true "Space ID" +// @Param offset query int false "The number of items to skip before starting to collect the result set" +// @Param limit query int false "The number of items to return" default(100) +// @Success 200 {object} pagination.PaginatedResponse[ObjectType] "List of types" +// @Failure 401 {object} util.UnauthorizedError "Unauthorized" +// @Failure 500 {object} util.ServerError "Internal server error" // @Router /spaces/{space_id}/object_types [get] func GetTypesHandler(s *ObjectService) gin.HandlerFunc { return func(c *gin.Context) { @@ -183,7 +181,6 @@ func GetTypesHandler(s *ObjectService) gin.HandlerFunc { types, total, hasMore, err := s.ListTypes(c.Request.Context(), spaceId, offset, limit) code := util.MapErrorCode(err, util.ErrToCode(ErrFailedRetrieveTypes, http.StatusInternalServerError), - util.ErrToCode(ErrNoTypesFound, http.StatusNotFound), ) if code != http.StatusOK { @@ -196,20 +193,19 @@ func GetTypesHandler(s *ObjectService) gin.HandlerFunc { } } -// GetTemplatesHandler retrieves a list of templates for a specific object type in a space +// GetTemplatesHandler retrieves a list of templates for a type in a space // -// @Summary Retrieve a list of templates for a specific object type in a space +// @Summary List templates // @Tags objects // @Accept json // @Produce json -// @Param space_id path string true "The ID of the space" -// @Param type_id path string true "The ID of the object type" -// @Param offset query int false "The number of items to skip before starting to collect the result set" -// @Param limit query int false "The number of items to return" default(100) -// @Success 200 {object} map[string][]ObjectTemplate "List of templates" -// @Failure 403 {object} util.UnauthorizedError "Unauthorized" -// @Failure 404 {object} util.NotFoundError "Resource not found" -// @Failure 502 {object} util.ServerError "Internal server error" +// @Param space_id path string true "Space ID" +// @Param type_id path string true "Type ID" +// @Param offset query int false "The number of items to skip before starting to collect the result set" +// @Param limit query int false "The number of items to return" default(100) +// @Success 200 {object} pagination.PaginatedResponse[Template] "List of templates" +// @Failure 401 {object} util.UnauthorizedError "Unauthorized" +// @Failure 500 {object} util.ServerError "Internal server error" // @Router /spaces/{space_id}/object_types/{type_id}/templates [get] func GetTemplatesHandler(s *ObjectService) gin.HandlerFunc { return func(c *gin.Context) { @@ -221,10 +217,9 @@ func GetTemplatesHandler(s *ObjectService) gin.HandlerFunc { templates, total, hasMore, err := s.ListTemplates(c.Request.Context(), spaceId, typeId, offset, limit) code := util.MapErrorCode(err, util.ErrToCode(ErrFailedRetrieveTemplateType, http.StatusInternalServerError), - util.ErrToCode(ErrTemplateTypeNotFound, http.StatusNotFound), + util.ErrToCode(ErrTemplateTypeNotFound, http.StatusInternalServerError), util.ErrToCode(ErrFailedRetrieveTemplates, http.StatusInternalServerError), util.ErrToCode(ErrFailedRetrieveTemplate, http.StatusInternalServerError), - util.ErrToCode(ErrNoTemplatesFound, http.StatusNotFound), ) if code != http.StatusOK { diff --git a/core/api/services/object/model.go b/core/api/services/object/model.go index 3f8b8219c..bff10c927 100644 --- a/core/api/services/object/model.go +++ b/core/api/services/object/model.go @@ -8,7 +8,6 @@ type CreateObjectRequest struct { Source string `json:"source"` TemplateId string `json:"template_id"` ObjectTypeUniqueKey string `json:"object_type_unique_key"` - WithChat bool `json:"with_chat"` } type ObjectResponse struct { @@ -78,7 +77,7 @@ type ObjectType struct { RecommendedLayout string `json:"recommended_layout" example:"todo"` } -type ObjectTemplate struct { +type Template struct { Type string `json:"type" example:"object_template"` Id string `json:"id" example:"bafyreictrp3obmnf6dwejy5o4p7bderaaia4bdg2psxbfzf44yya5uutge"` Name string `json:"name" example:"Object Template Name"` diff --git a/core/api/services/object/service.go b/core/api/services/object/service.go index ecffe4dc5..50ee8a6e3 100644 --- a/core/api/services/object/service.go +++ b/core/api/services/object/service.go @@ -20,8 +20,7 @@ import ( var ( ErrObjectNotFound = errors.New("object not found") ErrFailedRetrieveObject = errors.New("failed to retrieve object") - ErrorFailedRetrieveObjects = errors.New("failed to retrieve list of objects") - ErrNoObjectsFound = errors.New("no objects found") + ErrFailedRetrieveObjects = errors.New("failed to retrieve list of objects") ErrFailedDeleteObject = errors.New("failed to delete object") ErrFailedCreateObject = errors.New("failed to create object") ErrInputMissingSource = errors.New("source is missing for bookmark") @@ -29,21 +28,19 @@ var ( ErrFailedFetchBookmark = errors.New("failed to fetch bookmark") ErrFailedPasteBody = errors.New("failed to paste body") ErrFailedRetrieveTypes = errors.New("failed to retrieve types") - ErrNoTypesFound = errors.New("no types found") ErrFailedRetrieveTemplateType = errors.New("failed to retrieve template type") ErrTemplateTypeNotFound = errors.New("template type not found") ErrFailedRetrieveTemplate = errors.New("failed to retrieve template") ErrFailedRetrieveTemplates = errors.New("failed to retrieve templates") - ErrNoTemplatesFound = errors.New("no templates found") ) type Service interface { ListObjects(ctx context.Context, spaceId string, offset int, limit int) ([]Object, int, bool, error) GetObject(ctx context.Context, spaceId string, objectId string) (Object, error) - DeleteObject(ctx context.Context, spaceId string, objectId string) error + DeleteObject(ctx context.Context, spaceId string, objectId string) (Object, error) CreateObject(ctx context.Context, spaceId string, request CreateObjectRequest) (Object, error) ListTypes(ctx context.Context, spaceId string, offset int, limit int) ([]ObjectType, int, bool, error) - ListTemplates(ctx context.Context, spaceId string, typeId string, offset int, limit int) ([]ObjectTemplate, int, bool, error) + ListTemplates(ctx context.Context, spaceId string, typeId string, offset int, limit int) ([]Template, int, bool, error) } type ObjectService struct { @@ -91,11 +88,7 @@ func (s *ObjectService) ListObjects(ctx context.Context, spaceId string, offset }) if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { - return nil, 0, false, ErrorFailedRetrieveObjects - } - - if len(resp.Records) == 0 { - return nil, 0, false, ErrNoObjectsFound + return nil, 0, false, ErrFailedRetrieveObjects } total = len(resp.Records) @@ -190,7 +183,7 @@ func (s *ObjectService) CreateObject(ctx context.Context, spaceId string, reques TemplateId: request.TemplateId, SpaceId: spaceId, ObjectTypeUniqueKey: request.ObjectTypeUniqueKey, - WithChat: request.WithChat, + WithChat: false, }) if resp.Error.Code != pb.RpcObjectCreateResponseError_NULL { @@ -296,10 +289,6 @@ func (s *ObjectService) ListTypes(ctx context.Context, spaceId string, offset in return nil, 0, false, ErrFailedRetrieveTypes } - if len(resp.Records) == 0 { - return nil, 0, false, ErrNoTypesFound - } - total = len(resp.Records) paginatedTypes, hasMore := pagination.Paginate(resp.Records, offset, limit) objectTypes := make([]ObjectType, 0, len(paginatedTypes)) @@ -318,7 +307,7 @@ func (s *ObjectService) ListTypes(ctx context.Context, spaceId string, offset in } // ListTemplates returns a paginated list of templates in a specific space. -func (s *ObjectService) ListTemplates(ctx context.Context, spaceId string, typeId string, offset int, limit int) (templates []ObjectTemplate, total int, hasMore bool, err error) { +func (s *ObjectService) ListTemplates(ctx context.Context, spaceId string, typeId string, offset int, limit int) (templates []Template, total int, hasMore bool, err error) { // First, determine the type ID of "ot-template" in the space templateTypeIdResp := s.mw.ObjectSearch(ctx, &pb.RpcObjectSearchRequest{ SpaceId: spaceId, @@ -358,10 +347,6 @@ func (s *ObjectService) ListTemplates(ctx context.Context, spaceId string, typeI return nil, 0, false, ErrFailedRetrieveTemplates } - if len(templateObjectsResp.Records) == 0 { - return nil, 0, false, ErrNoTemplatesFound - } - templateIds := make([]string, 0) for _, record := range templateObjectsResp.Records { if record.Fields[bundle.RelationKeyTargetObjectType.String()].GetStringValue() == typeId { @@ -371,7 +356,7 @@ func (s *ObjectService) ListTemplates(ctx context.Context, spaceId string, typeI total = len(templateIds) paginatedTemplates, hasMore := pagination.Paginate(templateIds, offset, limit) - templates = make([]ObjectTemplate, 0, len(paginatedTemplates)) + templates = make([]Template, 0, len(paginatedTemplates)) // Finally, open each template and populate the response for _, templateId := range paginatedTemplates { @@ -384,7 +369,7 @@ func (s *ObjectService) ListTemplates(ctx context.Context, spaceId string, typeI return nil, 0, false, ErrFailedRetrieveTemplate } - templates = append(templates, ObjectTemplate{ + templates = append(templates, Template{ Type: "object_template", Id: templateId, Name: templateResp.ObjectView.Details[0].Details.Fields[bundle.RelationKeyName.String()].GetStringValue(), diff --git a/core/api/services/object/service_test.go b/core/api/services/object/service_test.go index facee6692..ade0ecaca 100644 --- a/core/api/services/object/service_test.go +++ b/core/api/services/object/service_test.go @@ -220,7 +220,7 @@ func TestObjectService_ListObjects(t *testing.T) { objects, total, hasMore, err := fx.ListObjects(ctx, "empty-space", offset, limit) // then - require.ErrorIs(t, err, ErrNoObjectsFound) + require.NoError(t, err) require.Len(t, objects, 0) require.Equal(t, 0, total) require.False(t, hasMore) @@ -469,7 +469,6 @@ func TestObjectService_CreateObject(t *testing.T) { // TODO: use actual values TemplateId: "", ObjectTypeUniqueKey: "ot-page", - WithChat: false, }) // then @@ -553,7 +552,7 @@ func TestObjectService_ListTypes(t *testing.T) { types, total, hasMore, err := fx.ListTypes(ctx, "empty-space", offset, limit) // then - require.ErrorIs(t, err, ErrNoTypesFound) + require.NoError(t, err) require.Len(t, types, 0) require.Equal(t, 0, total) require.False(t, hasMore) diff --git a/core/api/services/search/handler.go b/core/api/services/search/handler.go index eb4528e94..d42c81a0b 100644 --- a/core/api/services/search/handler.go +++ b/core/api/services/search/handler.go @@ -6,24 +6,22 @@ import ( "github.com/gin-gonic/gin" "github.com/anyproto/anytype-heart/core/api/pagination" - "github.com/anyproto/anytype-heart/core/api/services/space" "github.com/anyproto/anytype-heart/core/api/util" ) // SearchHandler searches and retrieves objects across all the spaces // -// @Summary Search and retrieve objects across all the spaces +// @Summary Search objects across all spaces // @Tags search // @Accept json // @Produce json -// @Param query query string false "The search term to filter objects by name" -// @Param object_types query []string false "Specify object types for search" +// @Param query query string false "Search query" +// @Param object_types query []string false "Types to filter objects by" // @Param offset query int false "The number of items to skip before starting to collect the result set" // @Param limit query int false "The number of items to return" default(100) // @Success 200 {object} map[string][]object.Object "List of objects" -// @Failure 403 {object} util.UnauthorizedError "Unauthorized" -// @Failure 404 {object} util.NotFoundError "Resource not found" -// @Failure 502 {object} util.ServerError "Internal server error" +// @Failure 401 {object} util.UnauthorizedError "Unauthorized" +// @Failure 500 {object} util.ServerError "Internal server error" // @Router /search [get] func SearchHandler(s *SearchService) gin.HandlerFunc { return func(c *gin.Context) { @@ -34,9 +32,7 @@ func SearchHandler(s *SearchService) gin.HandlerFunc { objects, total, hasMore, err := s.Search(c, searchQuery, objectTypes, offset, limit) code := util.MapErrorCode(err, - util.ErrToCode(ErrNoObjectsFound, http.StatusNotFound), util.ErrToCode(ErrFailedSearchObjects, http.StatusInternalServerError), - util.ErrToCode(space.ErrNoSpacesFound, http.StatusNotFound), ) if code != http.StatusOK { diff --git a/core/api/services/search/service.go b/core/api/services/search/service.go index 8186758f6..a890bc032 100644 --- a/core/api/services/search/service.go +++ b/core/api/services/search/service.go @@ -19,7 +19,6 @@ import ( var ( ErrFailedSearchObjects = errors.New("failed to retrieve objects from space") - ErrNoObjectsFound = errors.New("no objects found") ) type Service interface { @@ -84,10 +83,6 @@ func (s *SearchService) Search(ctx context.Context, searchQuery string, objectTy } } - if len(results) == 0 { - return nil, 0, false, ErrNoObjectsFound - } - // sort after ISO 8601 last_modified_date to achieve descending sort order across all spaces sort.Slice(results, func(i, j int) bool { dateStrI := results[i].Details[0].Details["last_modified_date"].(string) diff --git a/core/api/services/space/handler.go b/core/api/services/space/handler.go index 54679d78f..394dd87ac 100644 --- a/core/api/services/space/handler.go +++ b/core/api/services/space/handler.go @@ -11,16 +11,15 @@ import ( // GetSpacesHandler retrieves a list of spaces // -// @Summary Retrieve a list of spaces +// @Summary List spaces // @Tags spaces // @Accept json // @Produce json // @Param offset query int false "The number of items to skip before starting to collect the result set" // @Param limit query int false "The number of items to return" default(100) // @Success 200 {object} pagination.PaginatedResponse[Space] "List of spaces" -// @Failure 403 {object} util.UnauthorizedError "Unauthorized" -// @Failure 404 {object} util.NotFoundError "Resource not found" -// @Failure 502 {object} util.ServerError "Internal server error" +// @Failure 401 {object} util.UnauthorizedError "Unauthorized" +// @Failure 500 {object} util.ServerError "Internal server error" // @Router /spaces [get] func GetSpacesHandler(s *SpaceService) gin.HandlerFunc { return func(c *gin.Context) { @@ -29,7 +28,6 @@ func GetSpacesHandler(s *SpaceService) gin.HandlerFunc { spaces, total, hasMore, err := s.ListSpaces(c.Request.Context(), offset, limit) code := util.MapErrorCode(err, - util.ErrToCode(ErrNoSpacesFound, http.StatusNotFound), util.ErrToCode(ErrFailedListSpaces, http.StatusInternalServerError), util.ErrToCode(ErrFailedOpenWorkspace, http.StatusInternalServerError), ) @@ -46,15 +44,15 @@ func GetSpacesHandler(s *SpaceService) gin.HandlerFunc { // CreateSpaceHandler creates a new space // -// @Summary Create a new Space +// @Summary Create space // @Tags spaces // @Accept json // @Produce json // @Param name body string true "Space Name" // @Success 200 {object} CreateSpaceResponse "Space created successfully" // @Failure 400 {object} util.ValidationError "Bad request" -// @Failure 403 {object} util.UnauthorizedError "Unauthorized" -// @Failure 502 {object} util.ServerError "Internal server error" +// @Failure 401 {object} util.UnauthorizedError "Unauthorized" +// @Failure 500 {object} util.ServerError "Internal server error" // @Router /spaces [post] func CreateSpaceHandler(s *SpaceService) gin.HandlerFunc { return func(c *gin.Context) { @@ -80,19 +78,18 @@ func CreateSpaceHandler(s *SpaceService) gin.HandlerFunc { } } -// GetMembersHandler retrieves a list of members for the specified space +// GetMembersHandler retrieves a list of members in a space // -// @Summary Retrieve a list of members for the specified Space +// @Summary List members // @Tags spaces // @Accept json // @Produce json -// @Param space_id path string true "The ID of the space" +// @Param space_id path string true "Space ID" // @Param offset query int false "The number of items to skip before starting to collect the result set" // @Param limit query int false "The number of items to return" default(100) // @Success 200 {object} pagination.PaginatedResponse[Member] "List of members" -// @Failure 403 {object} util.UnauthorizedError "Unauthorized" -// @Failure 404 {object} util.NotFoundError "Resource not found" -// @Failure 502 {object} util.ServerError "Internal server error" +// @Failure 401 {object} util.UnauthorizedError "Unauthorized" +// @Failure 500 {object} util.ServerError "Internal server error" // @Router /spaces/{space_id}/members [get] func GetMembersHandler(s *SpaceService) gin.HandlerFunc { return func(c *gin.Context) { @@ -102,7 +99,6 @@ func GetMembersHandler(s *SpaceService) gin.HandlerFunc { members, total, hasMore, err := s.ListMembers(c.Request.Context(), spaceId, offset, limit) code := util.MapErrorCode(err, - util.ErrToCode(ErrNoMembersFound, http.StatusNotFound), util.ErrToCode(ErrFailedListMembers, http.StatusInternalServerError), ) diff --git a/core/api/services/space/service.go b/core/api/services/space/service.go index f67cc2df2..9aff17913 100644 --- a/core/api/services/space/service.go +++ b/core/api/services/space/service.go @@ -18,13 +18,10 @@ import ( ) var ( - ErrNoSpacesFound = errors.New("no spaces found") ErrFailedListSpaces = errors.New("failed to retrieve list of spaces") ErrFailedOpenWorkspace = errors.New("failed to open workspace") ErrFailedGenerateRandomIcon = errors.New("failed to generate random icon") ErrFailedCreateSpace = errors.New("failed to create space") - ErrBadInput = errors.New("bad input") - ErrNoMembersFound = errors.New("no members found") ErrFailedListMembers = errors.New("failed to retrieve list of members") ) @@ -76,10 +73,6 @@ func (s *SpaceService) ListSpaces(ctx context.Context, offset int, limit int) (s return nil, 0, false, ErrFailedListSpaces } - if len(resp.Records) == 0 { - return nil, 0, false, ErrNoSpacesFound - } - total = len(resp.Records) paginatedRecords, hasMore := pagination.Paginate(resp.Records, offset, limit) spaces = make([]Space, 0, len(paginatedRecords)) @@ -158,10 +151,6 @@ func (s *SpaceService) ListMembers(ctx context.Context, spaceId string, offset i return nil, 0, false, ErrFailedListMembers } - if len(resp.Records) == 0 { - return nil, 0, false, ErrNoMembersFound - } - total = len(resp.Records) paginatedMembers, hasMore := pagination.Paginate(resp.Records, offset, limit) members = make([]Member, 0, len(paginatedMembers)) diff --git a/core/api/services/space/service_test.go b/core/api/services/space/service_test.go index 96802831b..d68a3cdce 100644 --- a/core/api/services/space/service_test.go +++ b/core/api/services/space/service_test.go @@ -146,7 +146,7 @@ func TestSpaceService_ListSpaces(t *testing.T) { spaces, total, hasMore, err := fx.ListSpaces(nil, offset, limit) // then - require.ErrorIs(t, err, ErrNoSpacesFound) + require.NoError(t, err) require.Len(t, spaces, 0) require.Equal(t, 0, total) require.False(t, hasMore) @@ -305,7 +305,7 @@ func TestSpaceService_ListMembers(t *testing.T) { members, total, hasMore, err := fx.ListMembers(nil, "space-id", offset, limit) // then - require.ErrorIs(t, err, ErrNoMembersFound) + require.NoError(t, err) require.Len(t, members, 0) require.Equal(t, 0, total) require.False(t, hasMore) diff --git a/core/api/util/error.go b/core/api/util/error.go index 543c81eb9..b7553f3fd 100644 --- a/core/api/util/error.go +++ b/core/api/util/error.go @@ -5,30 +5,41 @@ import ( "net/http" ) -type ServerError struct { - Error struct { - Message string `json:"message"` - } `json:"error"` -} - +// 400 type ValidationError struct { Error struct { Message string `json:"message"` } `json:"error"` } +// 401 type UnauthorizedError struct { Error struct { Message string `json:"message"` } `json:"error"` } +// 403 +type ForbiddenError struct { + Error struct { + Message string `json:"message"` + } `json:"error"` +} + +// 404 type NotFoundError struct { Error struct { Message string `json:"message"` } `json:"error"` } +// 500 +type ServerError struct { + Error struct { + Message string `json:"message"` + } `json:"error"` +} + type errCodeMapping struct { target error code int From 02aa30fa78dd1f6143e3a87353bf5ffdfcf318af Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Sun, 19 Jan 2025 19:37:29 +0100 Subject: [PATCH 185/279] GO-4459: Refactor object types --- core/api/docs/docs.go | 334 ++++++++++++++-------------- core/api/docs/swagger.json | 334 ++++++++++++++-------------- core/api/docs/swagger.yaml | 232 +++++++++---------- core/api/server/router.go | 4 +- core/api/services/auth/handler.go | 4 +- core/api/services/object/handler.go | 16 +- core/api/services/object/model.go | 8 +- core/api/services/object/service.go | 14 +- core/api/services/search/handler.go | 18 +- 9 files changed, 482 insertions(+), 482 deletions(-) diff --git a/core/api/docs/docs.go b/core/api/docs/docs.go index 2bdf7117e..410bc2b35 100644 --- a/core/api/docs/docs.go +++ b/core/api/docs/docs.go @@ -35,7 +35,7 @@ const docTemplate = `{ "tags": [ "auth" ], - "summary": "Start a new challenge", + "summary": "Start new challenge", "parameters": [ { "type": "string", @@ -78,7 +78,7 @@ const docTemplate = `{ "tags": [ "auth" ], - "summary": "Retrieve a token", + "summary": "Retrieve token", "parameters": [ { "type": "string", @@ -143,7 +143,7 @@ const docTemplate = `{ }, "collectionFormat": "csv", "description": "Types to filter objects by", - "name": "object_types", + "name": "types", "in": "query" }, { @@ -342,125 +342,6 @@ const docTemplate = `{ } } }, - "/spaces/{space_id}/object_types": { - "get": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "objects" - ], - "summary": "List types", - "parameters": [ - { - "type": "string", - "description": "Space ID", - "name": "space_id", - "in": "path", - "required": true - }, - { - "type": "integer", - "description": "The number of items to skip before starting to collect the result set", - "name": "offset", - "in": "query" - }, - { - "type": "integer", - "default": 100, - "description": "The number of items to return", - "name": "limit", - "in": "query" - } - ], - "responses": { - "200": { - "description": "List of types", - "schema": { - "$ref": "#/definitions/pagination.PaginatedResponse-object_ObjectType" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/util.UnauthorizedError" - } - }, - "500": { - "description": "Internal server error", - "schema": { - "$ref": "#/definitions/util.ServerError" - } - } - } - } - }, - "/spaces/{space_id}/object_types/{type_id}/templates": { - "get": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "objects" - ], - "summary": "List templates", - "parameters": [ - { - "type": "string", - "description": "Space ID", - "name": "space_id", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Type ID", - "name": "type_id", - "in": "path", - "required": true - }, - { - "type": "integer", - "description": "The number of items to skip before starting to collect the result set", - "name": "offset", - "in": "query" - }, - { - "type": "integer", - "default": 100, - "description": "The number of items to return", - "name": "limit", - "in": "query" - } - ], - "responses": { - "200": { - "description": "List of templates", - "schema": { - "$ref": "#/definitions/pagination.PaginatedResponse-object_Template" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/util.UnauthorizedError" - } - }, - "500": { - "description": "Internal server error", - "schema": { - "$ref": "#/definitions/util.ServerError" - } - } - } - } - }, "/spaces/{space_id}/objects": { "get": { "consumes": [ @@ -751,6 +632,125 @@ const docTemplate = `{ } } } + }, + "/spaces/{space_id}/types": { + "get": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "objects" + ], + "summary": "List types", + "parameters": [ + { + "type": "string", + "description": "Space ID", + "name": "space_id", + "in": "path", + "required": true + }, + { + "type": "integer", + "description": "The number of items to skip before starting to collect the result set", + "name": "offset", + "in": "query" + }, + { + "type": "integer", + "default": 100, + "description": "The number of items to return", + "name": "limit", + "in": "query" + } + ], + "responses": { + "200": { + "description": "List of types", + "schema": { + "$ref": "#/definitions/pagination.PaginatedResponse-object_Type" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/util.UnauthorizedError" + } + }, + "500": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/util.ServerError" + } + } + } + } + }, + "/spaces/{space_id}/types/{type_id}/templates": { + "get": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "objects" + ], + "summary": "List templates", + "parameters": [ + { + "type": "string", + "description": "Space ID", + "name": "space_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Type ID", + "name": "type_id", + "in": "path", + "required": true + }, + { + "type": "integer", + "description": "The number of items to skip before starting to collect the result set", + "name": "offset", + "in": "query" + }, + { + "type": "integer", + "default": 100, + "description": "The number of items to return", + "name": "limit", + "in": "query" + } + ], + "responses": { + "200": { + "description": "List of templates", + "schema": { + "$ref": "#/definitions/pagination.PaginatedResponse-object_Template" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/util.UnauthorizedError" + } + }, + "500": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/util.ServerError" + } + } + } + } } }, "definitions": { @@ -941,35 +941,6 @@ const docTemplate = `{ } } }, - "object.ObjectType": { - "type": "object", - "properties": { - "icon": { - "type": "string", - "example": "📄" - }, - "id": { - "type": "string", - "example": "bafyreigyb6l5szohs32ts26ku2j42yd65e6hqy2u3gtzgdwqv6hzftsetu" - }, - "name": { - "type": "string", - "example": "Page" - }, - "recommended_layout": { - "type": "string", - "example": "todo" - }, - "type": { - "type": "string", - "example": "object_type" - }, - "unique_key": { - "type": "string", - "example": "ot-page" - } - } - }, "object.Template": { "type": "object", "properties": { @@ -983,11 +954,11 @@ const docTemplate = `{ }, "name": { "type": "string", - "example": "Object Template Name" + "example": "Template Name" }, "type": { "type": "string", - "example": "object_template" + "example": "template" } } }, @@ -1011,6 +982,35 @@ const docTemplate = `{ } } }, + "object.Type": { + "type": "object", + "properties": { + "icon": { + "type": "string", + "example": "📄" + }, + "id": { + "type": "string", + "example": "bafyreigyb6l5szohs32ts26ku2j42yd65e6hqy2u3gtzgdwqv6hzftsetu" + }, + "name": { + "type": "string", + "example": "Page" + }, + "recommended_layout": { + "type": "string", + "example": "todo" + }, + "type": { + "type": "string", + "example": "type" + }, + "unique_key": { + "type": "string", + "example": "ot-page" + } + } + }, "pagination.PaginatedResponse-object_Object": { "type": "object", "properties": { @@ -1025,20 +1025,6 @@ const docTemplate = `{ } } }, - "pagination.PaginatedResponse-object_ObjectType": { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/definitions/object.ObjectType" - } - }, - "pagination": { - "$ref": "#/definitions/pagination.PaginationMeta" - } - } - }, "pagination.PaginatedResponse-object_Template": { "type": "object", "properties": { @@ -1053,6 +1039,20 @@ const docTemplate = `{ } } }, + "pagination.PaginatedResponse-object_Type": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/object.Type" + } + }, + "pagination": { + "$ref": "#/definitions/pagination.PaginationMeta" + } + } + }, "pagination.PaginatedResponse-space_Member": { "type": "object", "properties": { diff --git a/core/api/docs/swagger.json b/core/api/docs/swagger.json index 9097f49b4..7b10f8788 100644 --- a/core/api/docs/swagger.json +++ b/core/api/docs/swagger.json @@ -29,7 +29,7 @@ "tags": [ "auth" ], - "summary": "Start a new challenge", + "summary": "Start new challenge", "parameters": [ { "type": "string", @@ -72,7 +72,7 @@ "tags": [ "auth" ], - "summary": "Retrieve a token", + "summary": "Retrieve token", "parameters": [ { "type": "string", @@ -137,7 +137,7 @@ }, "collectionFormat": "csv", "description": "Types to filter objects by", - "name": "object_types", + "name": "types", "in": "query" }, { @@ -336,125 +336,6 @@ } } }, - "/spaces/{space_id}/object_types": { - "get": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "objects" - ], - "summary": "List types", - "parameters": [ - { - "type": "string", - "description": "Space ID", - "name": "space_id", - "in": "path", - "required": true - }, - { - "type": "integer", - "description": "The number of items to skip before starting to collect the result set", - "name": "offset", - "in": "query" - }, - { - "type": "integer", - "default": 100, - "description": "The number of items to return", - "name": "limit", - "in": "query" - } - ], - "responses": { - "200": { - "description": "List of types", - "schema": { - "$ref": "#/definitions/pagination.PaginatedResponse-object_ObjectType" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/util.UnauthorizedError" - } - }, - "500": { - "description": "Internal server error", - "schema": { - "$ref": "#/definitions/util.ServerError" - } - } - } - } - }, - "/spaces/{space_id}/object_types/{type_id}/templates": { - "get": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "objects" - ], - "summary": "List templates", - "parameters": [ - { - "type": "string", - "description": "Space ID", - "name": "space_id", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Type ID", - "name": "type_id", - "in": "path", - "required": true - }, - { - "type": "integer", - "description": "The number of items to skip before starting to collect the result set", - "name": "offset", - "in": "query" - }, - { - "type": "integer", - "default": 100, - "description": "The number of items to return", - "name": "limit", - "in": "query" - } - ], - "responses": { - "200": { - "description": "List of templates", - "schema": { - "$ref": "#/definitions/pagination.PaginatedResponse-object_Template" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/util.UnauthorizedError" - } - }, - "500": { - "description": "Internal server error", - "schema": { - "$ref": "#/definitions/util.ServerError" - } - } - } - } - }, "/spaces/{space_id}/objects": { "get": { "consumes": [ @@ -745,6 +626,125 @@ } } } + }, + "/spaces/{space_id}/types": { + "get": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "objects" + ], + "summary": "List types", + "parameters": [ + { + "type": "string", + "description": "Space ID", + "name": "space_id", + "in": "path", + "required": true + }, + { + "type": "integer", + "description": "The number of items to skip before starting to collect the result set", + "name": "offset", + "in": "query" + }, + { + "type": "integer", + "default": 100, + "description": "The number of items to return", + "name": "limit", + "in": "query" + } + ], + "responses": { + "200": { + "description": "List of types", + "schema": { + "$ref": "#/definitions/pagination.PaginatedResponse-object_Type" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/util.UnauthorizedError" + } + }, + "500": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/util.ServerError" + } + } + } + } + }, + "/spaces/{space_id}/types/{type_id}/templates": { + "get": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "objects" + ], + "summary": "List templates", + "parameters": [ + { + "type": "string", + "description": "Space ID", + "name": "space_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Type ID", + "name": "type_id", + "in": "path", + "required": true + }, + { + "type": "integer", + "description": "The number of items to skip before starting to collect the result set", + "name": "offset", + "in": "query" + }, + { + "type": "integer", + "default": 100, + "description": "The number of items to return", + "name": "limit", + "in": "query" + } + ], + "responses": { + "200": { + "description": "List of templates", + "schema": { + "$ref": "#/definitions/pagination.PaginatedResponse-object_Template" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/util.UnauthorizedError" + } + }, + "500": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/util.ServerError" + } + } + } + } } }, "definitions": { @@ -935,35 +935,6 @@ } } }, - "object.ObjectType": { - "type": "object", - "properties": { - "icon": { - "type": "string", - "example": "📄" - }, - "id": { - "type": "string", - "example": "bafyreigyb6l5szohs32ts26ku2j42yd65e6hqy2u3gtzgdwqv6hzftsetu" - }, - "name": { - "type": "string", - "example": "Page" - }, - "recommended_layout": { - "type": "string", - "example": "todo" - }, - "type": { - "type": "string", - "example": "object_type" - }, - "unique_key": { - "type": "string", - "example": "ot-page" - } - } - }, "object.Template": { "type": "object", "properties": { @@ -977,11 +948,11 @@ }, "name": { "type": "string", - "example": "Object Template Name" + "example": "Template Name" }, "type": { "type": "string", - "example": "object_template" + "example": "template" } } }, @@ -1005,6 +976,35 @@ } } }, + "object.Type": { + "type": "object", + "properties": { + "icon": { + "type": "string", + "example": "📄" + }, + "id": { + "type": "string", + "example": "bafyreigyb6l5szohs32ts26ku2j42yd65e6hqy2u3gtzgdwqv6hzftsetu" + }, + "name": { + "type": "string", + "example": "Page" + }, + "recommended_layout": { + "type": "string", + "example": "todo" + }, + "type": { + "type": "string", + "example": "type" + }, + "unique_key": { + "type": "string", + "example": "ot-page" + } + } + }, "pagination.PaginatedResponse-object_Object": { "type": "object", "properties": { @@ -1019,20 +1019,6 @@ } } }, - "pagination.PaginatedResponse-object_ObjectType": { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/definitions/object.ObjectType" - } - }, - "pagination": { - "$ref": "#/definitions/pagination.PaginationMeta" - } - } - }, "pagination.PaginatedResponse-object_Template": { "type": "object", "properties": { @@ -1047,6 +1033,20 @@ } } }, + "pagination.PaginatedResponse-object_Type": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/object.Type" + } + }, + "pagination": { + "$ref": "#/definitions/pagination.PaginationMeta" + } + } + }, "pagination.PaginatedResponse-space_Member": { "type": "object", "properties": { diff --git a/core/api/docs/swagger.yaml b/core/api/docs/swagger.yaml index a77e2874e..02ee8d3c0 100644 --- a/core/api/docs/swagger.yaml +++ b/core/api/docs/swagger.yaml @@ -126,27 +126,6 @@ definitions: object: $ref: '#/definitions/object.Object' type: object - object.ObjectType: - properties: - icon: - example: "\U0001F4C4" - type: string - id: - example: bafyreigyb6l5szohs32ts26ku2j42yd65e6hqy2u3gtzgdwqv6hzftsetu - type: string - name: - example: Page - type: string - recommended_layout: - example: todo - type: string - type: - example: object_type - type: string - unique_key: - example: ot-page - type: string - type: object object.Template: properties: icon: @@ -156,10 +135,10 @@ definitions: example: bafyreictrp3obmnf6dwejy5o4p7bderaaia4bdg2psxbfzf44yya5uutge type: string name: - example: Object Template Name + example: Template Name type: string type: - example: object_template + example: template type: string type: object object.Text: @@ -175,6 +154,27 @@ definitions: text: type: string type: object + object.Type: + properties: + icon: + example: "\U0001F4C4" + type: string + id: + example: bafyreigyb6l5szohs32ts26ku2j42yd65e6hqy2u3gtzgdwqv6hzftsetu + type: string + name: + example: Page + type: string + recommended_layout: + example: todo + type: string + type: + example: type + type: string + unique_key: + example: ot-page + type: string + type: object pagination.PaginatedResponse-object_Object: properties: data: @@ -184,15 +184,6 @@ definitions: pagination: $ref: '#/definitions/pagination.PaginationMeta' type: object - pagination.PaginatedResponse-object_ObjectType: - properties: - data: - items: - $ref: '#/definitions/object.ObjectType' - type: array - pagination: - $ref: '#/definitions/pagination.PaginationMeta' - type: object pagination.PaginatedResponse-object_Template: properties: data: @@ -202,6 +193,15 @@ definitions: pagination: $ref: '#/definitions/pagination.PaginationMeta' type: object + pagination.PaginatedResponse-object_Type: + properties: + data: + items: + $ref: '#/definitions/object.Type' + type: array + pagination: + $ref: '#/definitions/pagination.PaginationMeta' + type: object pagination.PaginatedResponse-space_Member: properties: data: @@ -411,7 +411,7 @@ paths: description: Internal server error schema: $ref: '#/definitions/util.ServerError' - summary: Start a new challenge + summary: Start new challenge tags: - auth /auth/token: @@ -444,7 +444,7 @@ paths: description: Internal server error schema: $ref: '#/definitions/util.ServerError' - summary: Retrieve a token + summary: Retrieve token tags: - auth /search: @@ -461,7 +461,7 @@ paths: in: query items: type: string - name: object_types + name: types type: array - description: The number of items to skip before starting to collect the result set @@ -598,87 +598,6 @@ paths: summary: List members tags: - spaces - /spaces/{space_id}/object_types: - get: - consumes: - - application/json - parameters: - - description: Space ID - in: path - name: space_id - required: true - type: string - - description: The number of items to skip before starting to collect the result - set - in: query - name: offset - type: integer - - default: 100 - description: The number of items to return - in: query - name: limit - type: integer - produces: - - application/json - responses: - "200": - description: List of types - schema: - $ref: '#/definitions/pagination.PaginatedResponse-object_ObjectType' - "401": - description: Unauthorized - schema: - $ref: '#/definitions/util.UnauthorizedError' - "500": - description: Internal server error - schema: - $ref: '#/definitions/util.ServerError' - summary: List types - tags: - - objects - /spaces/{space_id}/object_types/{type_id}/templates: - get: - consumes: - - application/json - parameters: - - description: Space ID - in: path - name: space_id - required: true - type: string - - description: Type ID - in: path - name: type_id - required: true - type: string - - description: The number of items to skip before starting to collect the result - set - in: query - name: offset - type: integer - - default: 100 - description: The number of items to return - in: query - name: limit - type: integer - produces: - - application/json - responses: - "200": - description: List of templates - schema: - $ref: '#/definitions/pagination.PaginatedResponse-object_Template' - "401": - description: Unauthorized - schema: - $ref: '#/definitions/util.UnauthorizedError' - "500": - description: Internal server error - schema: - $ref: '#/definitions/util.ServerError' - summary: List templates - tags: - - objects /spaces/{space_id}/objects: get: consumes: @@ -873,6 +792,87 @@ paths: summary: Export object tags: - export + /spaces/{space_id}/types: + get: + consumes: + - application/json + parameters: + - description: Space ID + in: path + name: space_id + required: true + type: string + - description: The number of items to skip before starting to collect the result + set + in: query + name: offset + type: integer + - default: 100 + description: The number of items to return + in: query + name: limit + type: integer + produces: + - application/json + responses: + "200": + description: List of types + schema: + $ref: '#/definitions/pagination.PaginatedResponse-object_Type' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/util.UnauthorizedError' + "500": + description: Internal server error + schema: + $ref: '#/definitions/util.ServerError' + summary: List types + tags: + - objects + /spaces/{space_id}/types/{type_id}/templates: + get: + consumes: + - application/json + parameters: + - description: Space ID + in: path + name: space_id + required: true + type: string + - description: Type ID + in: path + name: type_id + required: true + type: string + - description: The number of items to skip before starting to collect the result + set + in: query + name: offset + type: integer + - default: 100 + description: The number of items to return + in: query + name: limit + type: integer + produces: + - application/json + responses: + "200": + description: List of templates + schema: + $ref: '#/definitions/pagination.PaginatedResponse-object_Template' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/util.UnauthorizedError' + "500": + description: Internal server error + schema: + $ref: '#/definitions/util.ServerError' + summary: List templates + tags: + - objects securityDefinitions: BasicAuth: type: basic diff --git a/core/api/server/router.go b/core/api/server/router.go index 8927be027..8241b3643 100644 --- a/core/api/server/router.go +++ b/core/api/server/router.go @@ -53,8 +53,8 @@ func (s *Server) NewRouter(a *app.App) *gin.Engine { v1.GET("/spaces/:space_id/objects", object.GetObjectsHandler(s.objectService)) v1.GET("/spaces/:space_id/objects/:object_id", object.GetObjectHandler(s.objectService)) v1.DELETE("/spaces/:space_id/objects/:object_id", s.rateLimit(maxWriteRequestsPerSecond), object.DeleteObjectHandler(s.objectService)) - v1.GET("/spaces/:space_id/object_types", object.GetTypesHandler(s.objectService)) - v1.GET("/spaces/:space_id/object_types/:type_id/templates", object.GetTemplatesHandler(s.objectService)) + v1.GET("/spaces/:space_id/types", object.GetTypesHandler(s.objectService)) + v1.GET("/spaces/:space_id/types/:type_id/templates", object.GetTemplatesHandler(s.objectService)) v1.POST("/spaces/:space_id/objects", s.rateLimit(maxWriteRequestsPerSecond), object.CreateObjectHandler(s.objectService)) // Search diff --git a/core/api/services/auth/handler.go b/core/api/services/auth/handler.go index 5bc8b93db..21900c994 100644 --- a/core/api/services/auth/handler.go +++ b/core/api/services/auth/handler.go @@ -10,7 +10,7 @@ import ( // DisplayCodeHandler starts a new challenge and returns the challenge ID // -// @Summary Start a new challenge +// @Summary Start new challenge // @Tags auth // @Accept json // @Produce json @@ -40,7 +40,7 @@ func DisplayCodeHandler(s *AuthService) gin.HandlerFunc { // TokenHandler retrieves an authentication token using a code and challenge ID // -// @Summary Retrieve a token +// @Summary Retrieve token // @Tags auth // @Accept json // @Produce json diff --git a/core/api/services/object/handler.go b/core/api/services/object/handler.go index 342ac89d4..6951c6090 100644 --- a/core/api/services/object/handler.go +++ b/core/api/services/object/handler.go @@ -165,13 +165,13 @@ func CreateObjectHandler(s *ObjectService) gin.HandlerFunc { // @Tags objects // @Accept json // @Produce json -// @Param space_id path string true "Space ID" -// @Param offset query int false "The number of items to skip before starting to collect the result set" -// @Param limit query int false "The number of items to return" default(100) -// @Success 200 {object} pagination.PaginatedResponse[ObjectType] "List of types" -// @Failure 401 {object} util.UnauthorizedError "Unauthorized" -// @Failure 500 {object} util.ServerError "Internal server error" -// @Router /spaces/{space_id}/object_types [get] +// @Param space_id path string true "Space ID" +// @Param offset query int false "The number of items to skip before starting to collect the result set" +// @Param limit query int false "The number of items to return" default(100) +// @Success 200 {object} pagination.PaginatedResponse[Type] "List of types" +// @Failure 401 {object} util.UnauthorizedError "Unauthorized" +// @Failure 500 {object} util.ServerError "Internal server error" +// @Router /spaces/{space_id}/types [get] func GetTypesHandler(s *ObjectService) gin.HandlerFunc { return func(c *gin.Context) { spaceId := c.Param("space_id") @@ -206,7 +206,7 @@ func GetTypesHandler(s *ObjectService) gin.HandlerFunc { // @Success 200 {object} pagination.PaginatedResponse[Template] "List of templates" // @Failure 401 {object} util.UnauthorizedError "Unauthorized" // @Failure 500 {object} util.ServerError "Internal server error" -// @Router /spaces/{space_id}/object_types/{type_id}/templates [get] +// @Router /spaces/{space_id}/types/{type_id}/templates [get] func GetTemplatesHandler(s *ObjectService) gin.HandlerFunc { return func(c *gin.Context) { spaceId := c.Param("space_id") diff --git a/core/api/services/object/model.go b/core/api/services/object/model.go index bff10c927..0ecb4e98b 100644 --- a/core/api/services/object/model.go +++ b/core/api/services/object/model.go @@ -68,8 +68,8 @@ type Tag struct { Color string `json:"color" example:"yellow"` } -type ObjectType struct { - Type string `json:"type" example:"object_type"` +type Type struct { + Type string `json:"type" example:"type"` Id string `json:"id" example:"bafyreigyb6l5szohs32ts26ku2j42yd65e6hqy2u3gtzgdwqv6hzftsetu"` UniqueKey string `json:"unique_key" example:"ot-page"` Name string `json:"name" example:"Page"` @@ -78,8 +78,8 @@ type ObjectType struct { } type Template struct { - Type string `json:"type" example:"object_template"` + Type string `json:"type" example:"template"` Id string `json:"id" example:"bafyreictrp3obmnf6dwejy5o4p7bderaaia4bdg2psxbfzf44yya5uutge"` - Name string `json:"name" example:"Object Template Name"` + Name string `json:"name" example:"Template Name"` Icon string `json:"icon" example:"📄"` } diff --git a/core/api/services/object/service.go b/core/api/services/object/service.go index 50ee8a6e3..87d5b6a4b 100644 --- a/core/api/services/object/service.go +++ b/core/api/services/object/service.go @@ -39,7 +39,7 @@ type Service interface { GetObject(ctx context.Context, spaceId string, objectId string) (Object, error) DeleteObject(ctx context.Context, spaceId string, objectId string) (Object, error) CreateObject(ctx context.Context, spaceId string, request CreateObjectRequest) (Object, error) - ListTypes(ctx context.Context, spaceId string, offset int, limit int) ([]ObjectType, int, bool, error) + ListTypes(ctx context.Context, spaceId string, offset int, limit int) ([]Type, int, bool, error) ListTemplates(ctx context.Context, spaceId string, typeId string, offset int, limit int) ([]Template, int, bool, error) } @@ -261,7 +261,7 @@ func (s *ObjectService) CreateObject(ctx context.Context, spaceId string, reques } // ListTypes returns a paginated list of types in a specific space. -func (s *ObjectService) ListTypes(ctx context.Context, spaceId string, offset int, limit int) (types []ObjectType, total int, hasMore bool, err error) { +func (s *ObjectService) ListTypes(ctx context.Context, spaceId string, offset int, limit int) (types []Type, total int, hasMore bool, err error) { resp := s.mw.ObjectSearch(ctx, &pb.RpcObjectSearchRequest{ SpaceId: spaceId, Filters: []*model.BlockContentDataviewFilter{ @@ -291,11 +291,11 @@ func (s *ObjectService) ListTypes(ctx context.Context, spaceId string, offset in total = len(resp.Records) paginatedTypes, hasMore := pagination.Paginate(resp.Records, offset, limit) - objectTypes := make([]ObjectType, 0, len(paginatedTypes)) + types = make([]Type, 0, len(paginatedTypes)) for _, record := range paginatedTypes { - objectTypes = append(objectTypes, ObjectType{ - Type: "object_type", + types = append(types, Type{ + Type: "type", Id: record.Fields[bundle.RelationKeyId.String()].GetStringValue(), UniqueKey: record.Fields[bundle.RelationKeyUniqueKey.String()].GetStringValue(), Name: record.Fields[bundle.RelationKeyName.String()].GetStringValue(), @@ -303,7 +303,7 @@ func (s *ObjectService) ListTypes(ctx context.Context, spaceId string, offset in RecommendedLayout: model.ObjectTypeLayout_name[int32(record.Fields[bundle.RelationKeyRecommendedLayout.String()].GetNumberValue())], }) } - return objectTypes, total, hasMore, nil + return types, total, hasMore, nil } // ListTemplates returns a paginated list of templates in a specific space. @@ -370,7 +370,7 @@ func (s *ObjectService) ListTemplates(ctx context.Context, spaceId string, typeI } templates = append(templates, Template{ - Type: "object_template", + Type: "template", Id: templateId, Name: templateResp.ObjectView.Details[0].Details.Fields[bundle.RelationKeyName.String()].GetStringValue(), Icon: templateResp.ObjectView.Details[0].Details.Fields[bundle.RelationKeyIconEmoji.String()].GetStringValue(), diff --git a/core/api/services/search/handler.go b/core/api/services/search/handler.go index d42c81a0b..ee331c843 100644 --- a/core/api/services/search/handler.go +++ b/core/api/services/search/handler.go @@ -9,24 +9,24 @@ import ( "github.com/anyproto/anytype-heart/core/api/util" ) -// SearchHandler searches and retrieves objects across all the spaces +// SearchHandler searches and retrieves objects across all spaces // // @Summary Search objects across all spaces // @Tags search // @Accept json // @Produce json -// @Param query query string false "Search query" -// @Param object_types query []string false "Types to filter objects by" -// @Param offset query int false "The number of items to skip before starting to collect the result set" -// @Param limit query int false "The number of items to return" default(100) -// @Success 200 {object} map[string][]object.Object "List of objects" -// @Failure 401 {object} util.UnauthorizedError "Unauthorized" -// @Failure 500 {object} util.ServerError "Internal server error" +// @Param query query string false "Search query" +// @Param types query []string false "Types to filter objects by" +// @Param offset query int false "The number of items to skip before starting to collect the result set" +// @Param limit query int false "The number of items to return" default(100) +// @Success 200 {object} map[string][]object.Object "List of objects" +// @Failure 401 {object} util.UnauthorizedError "Unauthorized" +// @Failure 500 {object} util.ServerError "Internal server error" // @Router /search [get] func SearchHandler(s *SearchService) gin.HandlerFunc { return func(c *gin.Context) { searchQuery := c.Query("query") - objectTypes := c.QueryArray("object_types") + objectTypes := c.QueryArray("types") offset := c.GetInt("offset") limit := c.GetInt("limit") From 7cfea102b1b0fcd673c14a0a129f43ed4f880013 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Mon, 20 Jan 2025 00:35:03 +0100 Subject: [PATCH 186/279] GO-4459: Improve search performance --- core/api/services/object/service.go | 6 +-- core/api/services/search/service.go | 66 +++++++++++++++--------- core/api/services/search/service_test.go | 9 ++-- 3 files changed, 48 insertions(+), 33 deletions(-) diff --git a/core/api/services/object/service.go b/core/api/services/object/service.go index 87d5b6a4b..2956900b9 100644 --- a/core/api/services/object/service.go +++ b/core/api/services/object/service.go @@ -80,11 +80,7 @@ func (s *ObjectService) ListObjects(ctx context.Context, spaceId string, offset IncludeTime: true, EmptyPlacement: model.BlockContentDataviewSort_NotSpecified, }}, - FullText: "", - Offset: 0, - Limit: 0, - ObjectTypeFilter: []string{}, - Keys: []string{bundle.RelationKeyId.String(), bundle.RelationKeyName.String()}, + Keys: []string{bundle.RelationKeyId.String(), bundle.RelationKeyName.String()}, }) if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { diff --git a/core/api/services/search/service.go b/core/api/services/search/service.go index a890bc032..3fe671b54 100644 --- a/core/api/services/search/service.go +++ b/core/api/services/search/service.go @@ -18,11 +18,12 @@ import ( ) var ( + spaceLimit = 64 ErrFailedSearchObjects = errors.New("failed to retrieve objects from space") ) type Service interface { - Search(ctx context.Context, searchQuery string, objectTypes []string, offset, limit int) (objects []object.Object, total int, hasMore bool, err error) + Search(ctx context.Context, searchQuery string, types []string, offset, limit int) (objects []object.Object, total int, hasMore bool, err error) } type SearchService struct { @@ -37,8 +38,8 @@ func NewService(mw service.ClientCommandsServer, spaceService *space.SpaceServic } // Search retrieves a paginated list of objects from all spaces that match the search parameters. -func (s *SearchService) Search(ctx context.Context, searchQuery string, objectTypes []string, offset, limit int) (objects []object.Object, total int, hasMore bool, err error) { - spaces, _, _, err := s.spaceService.ListSpaces(ctx, 0, 100) +func (s *SearchService) Search(ctx context.Context, searchQuery string, types []string, offset, limit int) (objects []object.Object, total int, hasMore bool, err error) { + spaces, _, _, err := s.spaceService.ListSpaces(ctx, 0, spaceLimit) if err != nil { return nil, 0, false, err } @@ -46,11 +47,11 @@ func (s *SearchService) Search(ctx context.Context, searchQuery string, objectTy baseFilters := s.prepareBaseFilters() queryFilters := s.prepareQueryFilter(searchQuery) - results := make([]object.Object, 0) + allResponses := make([]*pb.RpcObjectSearchResponse, 0, len(spaces)) for _, space := range spaces { // Resolve object type IDs per space, as they are unique per space - objectTypeFilters := s.prepareObjectTypeFilters(space.Id, objectTypes) - filters := s.combineFilters(model.BlockContentDataviewFilter_And, baseFilters, queryFilters, objectTypeFilters) + typeFilters := s.prepareObjectTypeFilters(space.Id, types) + filters := s.combineFilters(model.BlockContentDataviewFilter_And, baseFilters, queryFilters, typeFilters) objResp := s.mw.ObjectSearch(ctx, &pb.RpcObjectSearchRequest{ SpaceId: space.Id, @@ -62,37 +63,54 @@ func (s *SearchService) Search(ctx context.Context, searchQuery string, objectTy IncludeTime: true, EmptyPlacement: model.BlockContentDataviewSort_NotSpecified, }}, - Keys: []string{bundle.RelationKeyId.String(), bundle.RelationKeyName.String()}, - Limit: int32(limit), // nolint: gosec + Keys: []string{bundle.RelationKeyId.String(), bundle.RelationKeyLastModifiedDate.String(), bundle.RelationKeySpaceId.String()}, + Limit: int32(offset + limit), // nolint: gosec }) if objResp.Error.Code != pb.RpcObjectSearchResponseError_NULL { return nil, 0, false, ErrFailedSearchObjects } - if len(objResp.Records) == 0 { - continue - } + allResponses = append(allResponses, objResp) + } + combinedRecords := make([]struct { + Id string + SpaceId string + LastModifiedDate float64 + }, 0) + for _, objResp := range allResponses { for _, record := range objResp.Records { - object, err := s.objectService.GetObject(ctx, space.Id, record.Fields[bundle.RelationKeyId.String()].GetStringValue()) - if err != nil { - return nil, 0, false, err - } - results = append(results, object) + combinedRecords = append(combinedRecords, struct { + Id string + SpaceId string + LastModifiedDate float64 + }{ + Id: record.Fields[bundle.RelationKeyId.String()].GetStringValue(), + SpaceId: record.Fields[bundle.RelationKeySpaceId.String()].GetStringValue(), + LastModifiedDate: record.Fields[bundle.RelationKeyLastModifiedDate.String()].GetNumberValue(), + }) } } - // sort after ISO 8601 last_modified_date to achieve descending sort order across all spaces - sort.Slice(results, func(i, j int) bool { - dateStrI := results[i].Details[0].Details["last_modified_date"].(string) - dateStrJ := results[j].Details[0].Details["last_modified_date"].(string) - return dateStrI > dateStrJ + // sort after posix last_modified_date to achieve descending sort order across all spaces + sort.Slice(combinedRecords, func(i, j int) bool { + return combinedRecords[i].LastModifiedDate > combinedRecords[j].LastModifiedDate }) - total = len(results) - paginatedResults, hasMore := pagination.Paginate(results, offset, limit) - return paginatedResults, total, hasMore, nil + total = len(combinedRecords) + paginatedRecords, hasMore := pagination.Paginate(combinedRecords, offset, limit) + + results := make([]object.Object, 0, len(paginatedRecords)) + for _, record := range paginatedRecords { + object, err := s.objectService.GetObject(ctx, record.SpaceId, record.Id) + if err != nil { + return nil, 0, false, err + } + results = append(results, object) + } + + return results, total, hasMore, nil } // makeAndCondition combines multiple filter groups with the given operator. diff --git a/core/api/services/search/service_test.go b/core/api/services/search/service_test.go index 6de749d3e..338cfc614 100644 --- a/core/api/services/search/service_test.go +++ b/core/api/services/search/service_test.go @@ -157,14 +157,15 @@ func TestSearchService_Search(t *testing.T) { IncludeTime: true, EmptyPlacement: model.BlockContentDataviewSort_NotSpecified, }}, - Keys: []string{bundle.RelationKeyId.String(), bundle.RelationKeyName.String()}, - Limit: int32(limit), + Keys: []string{bundle.RelationKeyId.String(), bundle.RelationKeyLastModifiedDate.String(), bundle.RelationKeySpaceId.String()}, + Limit: int32(offset + limit), }).Return(&pb.RpcObjectSearchResponse{ Records: []*types.Struct{ { Fields: map[string]*types.Value{ - bundle.RelationKeyId.String(): pbtypes.String("obj-global-1"), - bundle.RelationKeyName.String(): pbtypes.String("Global Object"), + bundle.RelationKeyId.String(): pbtypes.String("obj-global-1"), + bundle.RelationKeyName.String(): pbtypes.String("Global Object"), + bundle.RelationKeySpaceId.String(): pbtypes.String("space-1"), }, }, }, From 388655cdb89e7500f737eefc617f3dd3304a5235 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Mon, 20 Jan 2025 00:49:16 +0100 Subject: [PATCH 187/279] GO-4459: Fix test --- core/api/services/object/service_test.go | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/core/api/services/object/service_test.go b/core/api/services/object/service_test.go index ade0ecaca..f5ec97b8a 100644 --- a/core/api/services/object/service_test.go +++ b/core/api/services/object/service_test.go @@ -78,11 +78,7 @@ func TestObjectService_ListObjects(t *testing.T) { IncludeTime: true, EmptyPlacement: model.BlockContentDataviewSort_NotSpecified, }}, - FullText: "", - Offset: 0, - Limit: 0, - ObjectTypeFilter: []string{}, - Keys: []string{bundle.RelationKeyId.String(), bundle.RelationKeyName.String()}, + Keys: []string{bundle.RelationKeyId.String(), bundle.RelationKeyName.String()}, }).Return(&pb.RpcObjectSearchResponse{ Records: []*types.Struct{ { From 063d400b35e565c190700da7db65853053d55130 Mon Sep 17 00:00:00 2001 From: AnastasiaShemyakinskaya Date: Mon, 20 Jan 2025 11:24:02 +0100 Subject: [PATCH 188/279] GO-3189: set checkbox relation as false Signed-off-by: AnastasiaShemyakinskaya --- core/block/editor/state/state.go | 3 --- core/block/editor/state/state_test.go | 39 --------------------------- core/details.go | 27 ++++++++++++++++++- 3 files changed, 26 insertions(+), 43 deletions(-) diff --git a/core/block/editor/state/state.go b/core/block/editor/state/state.go index 48206f9fc..c6e9cdcf2 100644 --- a/core/block/editor/state/state.go +++ b/core/block/editor/state/state.go @@ -1701,9 +1701,6 @@ func (s *State) AddRelationLinks(links ...*model.RelationLink) { for _, l := range links { if !relLinks.Has(l.Key) { relLinks = append(relLinks, l) - if l.Format == model.RelationFormat_checkbox { - s.SetDetail(domain.RelationKey(l.Key), domain.Bool(false)) - } } } s.relationLinks = relLinks diff --git a/core/block/editor/state/state_test.go b/core/block/editor/state/state_test.go index 03f942e15..c99f9dd4c 100644 --- a/core/block/editor/state/state_test.go +++ b/core/block/editor/state/state_test.go @@ -2976,43 +2976,4 @@ func TestState_AddRelationLinks(t *testing.T) { assert.True(t, s.GetRelationLinks().Has("existingLink")) assert.Len(t, s.GetRelationLinks(), 1) }) - t.Run("add checkbox link", func(t *testing.T) { - // given - s := &State{} - checkboxLink := &model.RelationLink{ - Key: "checkboxLink", - Format: model.RelationFormat_checkbox, - } - - // when - s.AddRelationLinks(checkboxLink) - - // then - relLinks := s.GetRelationLinks() - assert.Equal(t, 1, len(relLinks)) - assert.True(t, relLinks.Has("checkboxLink")) - detailValue := s.Details().Get("checkboxLink") - assert.Equal(t, domain.Bool(false), detailValue) - }) - t.Run("multi links", func(t *testing.T) { - // given - s := &State{} - link1 := &model.RelationLink{ - Key: "link1", - Format: model.RelationFormat_shorttext, - } - link2 := &model.RelationLink{ - Key: "link2", - Format: model.RelationFormat_checkbox, - } - - // when - s.AddRelationLinks(link1, link2) - - // then - relLinks := s.GetRelationLinks() - assert.Equal(t, 2, len(relLinks)) - assert.True(t, relLinks.Has("link1")) - assert.True(t, relLinks.Has("link2")) - }) } diff --git a/core/details.go b/core/details.go index 3c25c76f7..aae747771 100644 --- a/core/details.go +++ b/core/details.go @@ -7,6 +7,9 @@ import ( "github.com/anyproto/anytype-heart/core/block/detailservice" "github.com/anyproto/anytype-heart/core/domain" "github.com/anyproto/anytype-heart/pb" + "github.com/anyproto/anytype-heart/pkg/lib/bundle" + "github.com/anyproto/anytype-heart/pkg/lib/localstore/objectstore" + "github.com/anyproto/anytype-heart/pkg/lib/pb/model" "github.com/anyproto/anytype-heart/util/internalflag" ) @@ -177,12 +180,21 @@ func (mw *Middleware) ObjectRelationAdd(cctx context.Context, req *pb.RpcObjectR } detailsService := mustService[detailservice.Service](mw) + objectStore := mustService[objectstore.ObjectStore](mw) err := detailsService.ModifyDetails(ctx, req.ContextId, func(current *domain.Details) (*domain.Details, error) { for _, key := range req.RelationKeys { if current.Has(domain.RelationKey(key)) { continue } - current.Set(domain.RelationKey(key), domain.Null()) + format, err := mw.extractRelationFormat(current, objectStore, key) + if err != nil { + continue + } + if format == model.RelationFormat_checkbox { + current.Set(domain.RelationKey(key), domain.Bool(false)) + } else { + current.Set(domain.RelationKey(key), domain.Null()) + } } return current, nil }) @@ -198,3 +210,16 @@ func (mw *Middleware) ObjectRelationAdd(cctx context.Context, req *pb.RpcObjectR Event: mw.getResponseEvent(ctx), } } + +func (mw *Middleware) extractRelationFormat(current *domain.Details, objectStore objectstore.ObjectStore, key string) (model.RelationFormat, error) { + spaceId := current.GetString(bundle.RelationKeySpaceId) + relation, err := objectStore.SpaceIndex(spaceId).FetchRelationByKeys(domain.RelationKey(key)) + if err != nil { + return 0, err + } + var format model.RelationFormat + if len(relation) != 0 { + format = relation[0].Format + } + return format, nil +} From b51809c2760a2fd8f67626de4ada80acaf5a60c2 Mon Sep 17 00:00:00 2001 From: AnastasiaShemyakinskaya Date: Mon, 20 Jan 2025 12:46:09 +0100 Subject: [PATCH 189/279] GO-4406: merge main Signed-off-by: AnastasiaShemyakinskaya --- core/block/object/objectcreator/installer.go | 3 --- 1 file changed, 3 deletions(-) diff --git a/core/block/object/objectcreator/installer.go b/core/block/object/objectcreator/installer.go index ca71571a2..5eb3fcb92 100644 --- a/core/block/object/objectcreator/installer.go +++ b/core/block/object/objectcreator/installer.go @@ -257,9 +257,6 @@ func (s *service) prepareDetailsForInstallingObject( details.SetBool(bundle.RelationKeyIsReadonly, false) details.SetInt64(bundle.RelationKeyCreatedDate, time.Now().Unix()) - // we should delete old createdDate as it belongs to source object from marketplace - details.Delete(bundle.RelationKeyCreatedDate) - if isNewSpace { lastused.SetLastUsedDateForInitialObjectType(sourceId, details) } From 3d75992e3cab0f0d2396c4a5572f9d7f8ccccb64 Mon Sep 17 00:00:00 2001 From: AnastasiaShemyakinskaya Date: Mon, 20 Jan 2025 14:06:51 +0100 Subject: [PATCH 190/279] GO-3189: fix comments Signed-off-by: AnastasiaShemyakinskaya --- core/details.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/core/details.go b/core/details.go index aae747771..6a15ab746 100644 --- a/core/details.go +++ b/core/details.go @@ -188,11 +188,13 @@ func (mw *Middleware) ObjectRelationAdd(cctx context.Context, req *pb.RpcObjectR } format, err := mw.extractRelationFormat(current, objectStore, key) if err != nil { + current.Set(domain.RelationKey(key), domain.Null()) continue } - if format == model.RelationFormat_checkbox { + switch format { + case model.RelationFormat_checkbox: current.Set(domain.RelationKey(key), domain.Bool(false)) - } else { + default: current.Set(domain.RelationKey(key), domain.Null()) } } From c74ec63d6a01b0f158a065cffd036dd55ea7650b Mon Sep 17 00:00:00 2001 From: AnastasiaShemyakinskaya Date: Mon, 20 Jan 2025 14:44:42 +0100 Subject: [PATCH 191/279] GO-3189: fix comments Signed-off-by: AnastasiaShemyakinskaya --- core/details.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/core/details.go b/core/details.go index 6a15ab746..cbd980462 100644 --- a/core/details.go +++ b/core/details.go @@ -188,8 +188,7 @@ func (mw *Middleware) ObjectRelationAdd(cctx context.Context, req *pb.RpcObjectR } format, err := mw.extractRelationFormat(current, objectStore, key) if err != nil { - current.Set(domain.RelationKey(key), domain.Null()) - continue + log.Errorf("failed to fetch relation from store to get format %s, falling back to basic", err) } switch format { case model.RelationFormat_checkbox: @@ -217,7 +216,7 @@ func (mw *Middleware) extractRelationFormat(current *domain.Details, objectStore spaceId := current.GetString(bundle.RelationKeySpaceId) relation, err := objectStore.SpaceIndex(spaceId).FetchRelationByKeys(domain.RelationKey(key)) if err != nil { - return 0, err + return model.RelationFormat_longtext, err } var format model.RelationFormat if len(relation) != 0 { From df7039896e3110e1bfdbc814bc1ff35efd1fc1b2 Mon Sep 17 00:00:00 2001 From: Sergey Date: Mon, 20 Jan 2025 16:03:28 +0100 Subject: [PATCH 192/279] Object store: fix missing transaction --- pkg/lib/localstore/objectstore/spaceindex/links.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/lib/localstore/objectstore/spaceindex/links.go b/pkg/lib/localstore/objectstore/spaceindex/links.go index 38bcdc787..e5e641d64 100644 --- a/pkg/lib/localstore/objectstore/spaceindex/links.go +++ b/pkg/lib/localstore/objectstore/spaceindex/links.go @@ -41,12 +41,12 @@ func (s *dsObjectStore) GetWithLinksInfoById(id string) (*model.ObjectInfoWithLi return nil, commit(fmt.Errorf("find outbound links: %w", err)) } - inbound, err := s.getObjectsInfo(s.componentCtx, inboundIds) + inbound, err := s.getObjectsInfo(txn.Context(), inboundIds) if err != nil { return nil, commit(err) } - outbound, err := s.getObjectsInfo(s.componentCtx, outboundsIds) + outbound, err := s.getObjectsInfo(txn.Context(), outboundsIds) if err != nil { return nil, commit(err) } From b92cd74593ea46eada38a48d230299cbf5369cd9 Mon Sep 17 00:00:00 2001 From: AnastasiaShemyakinskaya Date: Mon, 20 Jan 2025 16:29:26 +0100 Subject: [PATCH 193/279] GO-4406: set creation date for newly created objects Signed-off-by: AnastasiaShemyakinskaya --- core/block/object/objectcreator/object_type.go | 4 ++++ core/block/object/objectcreator/relation.go | 4 ++++ core/block/object/objectcreator/relation_option.go | 5 ++++- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/core/block/object/objectcreator/object_type.go b/core/block/object/objectcreator/object_type.go index 4356358f8..ce5fdb7b5 100644 --- a/core/block/object/objectcreator/object_type.go +++ b/core/block/object/objectcreator/object_type.go @@ -3,6 +3,7 @@ package objectcreator import ( "context" "fmt" + "time" "golang.org/x/exp/slices" @@ -35,6 +36,9 @@ func (s *service) createObjectType(ctx context.Context, space clientspace.Space, return "", nil, fmt.Errorf("fill recommended relations: %w", err) } } + if !object.Has(bundle.RelationKeyCreatedDate) { + object.SetInt64(bundle.RelationKeyCreatedDate, time.Now().Unix()) + } object.SetString(bundle.RelationKeyId, id) object.SetInt64(bundle.RelationKeyLayout, int64(model.ObjectType_objectType)) diff --git a/core/block/object/objectcreator/relation.go b/core/block/object/objectcreator/relation.go index 395296e2d..46874743d 100644 --- a/core/block/object/objectcreator/relation.go +++ b/core/block/object/objectcreator/relation.go @@ -3,6 +3,7 @@ package objectcreator import ( "context" "fmt" + "time" "github.com/globalsign/mgo/bson" @@ -31,6 +32,9 @@ func (s *service) createRelation(ctx context.Context, space clientspace.Space, d if details.GetString(bundle.RelationKeyName) == "" { return "", nil, fmt.Errorf("missing relation name") } + if !details.Has(bundle.RelationKeyCreatedDate) { + details.SetInt64(bundle.RelationKeyCreatedDate, time.Now().Unix()) + } object = details.Copy() key := domain.RelationKey(details.GetString(bundle.RelationKeyRelationKey)) diff --git a/core/block/object/objectcreator/relation_option.go b/core/block/object/objectcreator/relation_option.go index 42724ab7b..c7156594e 100644 --- a/core/block/object/objectcreator/relation_option.go +++ b/core/block/object/objectcreator/relation_option.go @@ -3,6 +3,7 @@ package objectcreator import ( "context" "fmt" + "time" "github.com/globalsign/mgo/bson" @@ -25,7 +26,9 @@ func (s *service) createRelationOption(ctx context.Context, space clientspace.Sp if details.GetString(bundle.RelationKeyRelationKey) == "" { return "", nil, fmt.Errorf("relation key is empty") } - + if !details.Has(bundle.RelationKeyCreatedDate) { + details.SetInt64(bundle.RelationKeyCreatedDate, time.Now().Unix()) + } uniqueKey, err := getUniqueKeyOrGenerate(coresb.SmartBlockTypeRelationOption, details) if err != nil { return "", nil, fmt.Errorf("getUniqueKeyOrGenerate: %w", err) From 2c9739b5711478233732ddb7e0d84e60ce96e297 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Mon, 20 Jan 2025 20:00:12 +0100 Subject: [PATCH 194/279] GO-4642: Fix lint and tests --- core/api/services/auth/service_test.go | 11 +++++++++-- core/application/sessions.go | 2 +- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/core/api/services/auth/service_test.go b/core/api/services/auth/service_test.go index 4df3bd482..85c6605d3 100644 --- a/core/api/services/auth/service_test.go +++ b/core/api/services/auth/service_test.go @@ -9,6 +9,7 @@ import ( "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/pb/service/mock_service" + "github.com/anyproto/anytype-heart/pkg/lib/pb/model" ) const ( @@ -40,7 +41,10 @@ func TestAuthService_GenerateNewChallenge(t *testing.T) { ctx := context.Background() fx := newFixture(t) - fx.mwMock.On("AccountLocalLinkNewChallenge", mock.Anything, &pb.RpcAccountLocalLinkNewChallengeRequest{AppName: mockedAppName}). + fx.mwMock.On("AccountLocalLinkNewChallenge", mock.Anything, &pb.RpcAccountLocalLinkNewChallengeRequest{ + AppName: mockedAppName, + Scope: model.AccountAuth_JsonAPI, + }). Return(&pb.RpcAccountLocalLinkNewChallengeResponse{ ChallengeId: mockedChallengeId, Error: &pb.RpcAccountLocalLinkNewChallengeResponseError{Code: pb.RpcAccountLocalLinkNewChallengeResponseError_NULL}, @@ -73,7 +77,10 @@ func TestAuthService_GenerateNewChallenge(t *testing.T) { ctx := context.Background() fx := newFixture(t) - fx.mwMock.On("AccountLocalLinkNewChallenge", mock.Anything, &pb.RpcAccountLocalLinkNewChallengeRequest{AppName: mockedAppName}). + fx.mwMock.On("AccountLocalLinkNewChallenge", mock.Anything, &pb.RpcAccountLocalLinkNewChallengeRequest{ + AppName: mockedAppName, + Scope: model.AccountAuth_JsonAPI, + }). Return(&pb.RpcAccountLocalLinkNewChallengeResponse{ Error: &pb.RpcAccountLocalLinkNewChallengeResponseError{Code: pb.RpcAccountLocalLinkNewChallengeResponseError_UNKNOWN_ERROR}, }).Once() diff --git a/core/application/sessions.go b/core/application/sessions.go index 51c2c8d9b..f9e492108 100644 --- a/core/application/sessions.go +++ b/core/application/sessions.go @@ -33,7 +33,7 @@ func (s *Service) CreateSession(req *pb.RpcWalletCreateSessionRequest) (token st } log.Infof("appLink auth %s", appLink.AppName) - token, err := s.sessions.StartSession(s.sessionSigningKey, model.AccountAuthLocalApiScope(appLink.Scope)) + token, err := s.sessions.StartSession(s.sessionSigningKey, model.AccountAuthLocalApiScope(appLink.Scope)) // nolint:gosec if err != nil { return "", "", err } From f237211e84d57cb3aaa9034a96520a2e5255b671 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Mon, 20 Jan 2025 20:38:44 +0100 Subject: [PATCH 195/279] GO-4642: Refactor auth key check --- cmd/grpcserver/grpc.go | 2 +- core/api/server/middleware.go | 24 ++++++++++++------------ core/api/server/router.go | 5 ++--- core/api/server/server.go | 5 ++--- core/api/service.go | 15 ++++----------- core/core.go | 9 --------- core/interfaces/token_validator.go | 8 -------- 7 files changed, 21 insertions(+), 47 deletions(-) delete mode 100644 core/interfaces/token_validator.go diff --git a/cmd/grpcserver/grpc.go b/cmd/grpcserver/grpc.go index 085cf0ebe..827fd3c39 100644 --- a/cmd/grpcserver/grpc.go +++ b/cmd/grpcserver/grpc.go @@ -226,7 +226,7 @@ func main() { }() startReportMemory(mw) - api.SetMiddlewareParams(mw, mw) + api.SetMiddlewareParams(mw) shutdown := func() { server.Stop() diff --git a/core/api/server/middleware.go b/core/api/server/middleware.go index 5309142a0..b1604a6a2 100644 --- a/core/api/server/middleware.go +++ b/core/api/server/middleware.go @@ -12,7 +12,6 @@ import ( "github.com/gin-gonic/gin" "github.com/anyproto/anytype-heart/core/anytype/account" - "github.com/anyproto/anytype-heart/core/interfaces" "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/pb/service" ) @@ -36,7 +35,7 @@ func (s *Server) rateLimit(max float64) gin.HandlerFunc { } // ensureAuthenticated is a middleware that ensures the request is authenticated. -func (s *Server) ensureAuthenticated(mw service.ClientCommandsServer, tv interfaces.TokenValidator) gin.HandlerFunc { +func (s *Server) ensureAuthenticated(mw service.ClientCommandsServer) gin.HandlerFunc { return func(c *gin.Context) { authHeader := c.GetHeader("Authorization") if authHeader == "" { @@ -48,28 +47,29 @@ func (s *Server) ensureAuthenticated(mw service.ClientCommandsServer, tv interfa c.AbortWithStatusJSON(http.StatusUnauthorized, gin.H{"error": "Invalid Authorization header format"}) return } - key := strings.TrimPrefix(authHeader, "Bearer ") + + // Validate the key - if the key exists in the KeyToToken map, it is considered valid. + // Otherwise, attempt to create a new session using the key and add it to the map upon successful validation. s.mu.Lock() token, exists := s.KeyToToken[key] s.mu.Unlock() + if !exists { response := mw.WalletCreateSession(context.Background(), &pb.RpcWalletCreateSessionRequest{Auth: &pb.RpcWalletCreateSessionRequestAuthOfAppKey{AppKey: key}}) if response.Error.Code != pb.RpcWalletCreateSessionResponseError_NULL { - c.AbortWithStatusJSON(http.StatusUnauthorized, gin.H{"error": "Failed to create session"}) - return - } - s.mu.Lock() - s.KeyToToken[key] = response.Token - s.mu.Unlock() - } else { - _, err := tv.ValidateApiToken(token) - if err != nil { c.AbortWithStatusJSON(http.StatusUnauthorized, gin.H{"error": "Invalid token"}) return } + token = response.Token + + s.mu.Lock() + s.KeyToToken[key] = token + s.mu.Unlock() } + // Add token to request context for downstream services (subscriptions, events, etc.) + c.Set("token", token) c.Next() } } diff --git a/core/api/server/router.go b/core/api/server/router.go index a0a3c6647..0cacec0d4 100644 --- a/core/api/server/router.go +++ b/core/api/server/router.go @@ -12,7 +12,6 @@ import ( "github.com/anyproto/anytype-heart/core/api/services/object" "github.com/anyproto/anytype-heart/core/api/services/search" "github.com/anyproto/anytype-heart/core/api/services/space" - "github.com/anyproto/anytype-heart/core/interfaces" "github.com/anyproto/anytype-heart/pb/service" ) @@ -25,7 +24,7 @@ const ( ) // NewRouter builds and returns a *gin.Engine with all routes configured. -func (s *Server) NewRouter(a *app.App, mw service.ClientCommandsServer, tv interfaces.TokenValidator) *gin.Engine { +func (s *Server) NewRouter(a *app.App, mw service.ClientCommandsServer) *gin.Engine { router := gin.Default() paginator := pagination.New(pagination.Config{ @@ -48,7 +47,7 @@ func (s *Server) NewRouter(a *app.App, mw service.ClientCommandsServer, tv inter // API routes v1 := router.Group("/v1") v1.Use(paginator) - v1.Use(s.ensureAuthenticated(mw, tv)) + v1.Use(s.ensureAuthenticated(mw)) v1.Use(s.ensureAccountInfo(a)) { // Export diff --git a/core/api/server/server.go b/core/api/server/server.go index 152def492..ae69f8204 100644 --- a/core/api/server/server.go +++ b/core/api/server/server.go @@ -11,7 +11,6 @@ import ( "github.com/anyproto/anytype-heart/core/api/services/object" "github.com/anyproto/anytype-heart/core/api/services/search" "github.com/anyproto/anytype-heart/core/api/services/space" - "github.com/anyproto/anytype-heart/core/interfaces" "github.com/anyproto/anytype-heart/pb/service" ) @@ -30,7 +29,7 @@ type Server struct { } // NewServer constructs a new Server with default config and sets up the routes. -func NewServer(a *app.App, mw service.ClientCommandsServer, tv interfaces.TokenValidator) *Server { +func NewServer(a *app.App, mw service.ClientCommandsServer) *Server { s := &Server{ authService: auth.NewService(mw), exportService: export.NewService(mw), @@ -39,7 +38,7 @@ func NewServer(a *app.App, mw service.ClientCommandsServer, tv interfaces.TokenV s.objectService = object.NewService(mw, s.spaceService) s.searchService = search.NewService(mw, s.spaceService, s.objectService) - s.engine = s.NewRouter(a, mw, tv) + s.engine = s.NewRouter(a, mw) s.KeyToToken = make(map[string]string) return s diff --git a/core/api/service.go b/core/api/service.go index 60f588dc3..1becdd27d 100644 --- a/core/api/service.go +++ b/core/api/service.go @@ -10,7 +10,6 @@ import ( "github.com/anyproto/any-sync/app" "github.com/anyproto/anytype-heart/core/api/server" - "github.com/anyproto/anytype-heart/core/interfaces" "github.com/anyproto/anytype-heart/pb/service" ) @@ -21,8 +20,7 @@ const ( ) var ( - mwSrv service.ClientCommandsServer - tvInterface interfaces.TokenValidator + mwSrv service.ClientCommandsServer ) type Service interface { @@ -33,14 +31,10 @@ type apiService struct { srv *server.Server httpSrv *http.Server mw service.ClientCommandsServer - tv interfaces.TokenValidator } func New() Service { - return &apiService{ - mw: mwSrv, - tv: tvInterface, - } + return &apiService{mw: mwSrv} } func (s *apiService) Name() (name string) { @@ -64,7 +58,7 @@ func (s *apiService) Name() (name string) { // @externalDocs.description OpenAPI // @externalDocs.url https://swagger.io/resources/open-api/ func (s *apiService) Init(a *app.App) (err error) { - s.srv = server.NewServer(a, s.mw, s.tv) + s.srv = server.NewServer(a, s.mw) s.httpSrv = &http.Server{ Addr: httpPort, Handler: s.srv.Engine(), @@ -96,7 +90,6 @@ func (s *apiService) Close(ctx context.Context) (err error) { return nil } -func SetMiddlewareParams(mw service.ClientCommandsServer, tv interfaces.TokenValidator) { +func SetMiddlewareParams(mw service.ClientCommandsServer) { mwSrv = mw - tvInterface = tv } diff --git a/core/core.go b/core/core.go index 563f6a2e7..394167770 100644 --- a/core/core.go +++ b/core/core.go @@ -11,11 +11,9 @@ import ( "github.com/anyproto/anytype-heart/core/block" "github.com/anyproto/anytype-heart/core/block/collection" "github.com/anyproto/anytype-heart/core/event" - "github.com/anyproto/anytype-heart/core/interfaces" "github.com/anyproto/anytype-heart/core/wallet" "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/pkg/lib/logging" - "github.com/anyproto/anytype-heart/pkg/lib/pb/model" utildebug "github.com/anyproto/anytype-heart/util/debug" ) @@ -128,10 +126,3 @@ func (mw *Middleware) SaveGoroutinesStack(path string) (err error) { } return utildebug.SaveStackToRepo(path, true) } - -// ValidateApiToken exposes ValidateToken logic from core to the JSON API -func (mw *Middleware) ValidateApiToken(token string) (model.AccountAuthLocalApiScope, error) { - return mw.applicationService.ValidateSessionToken(token) -} - -var _ interfaces.TokenValidator = (*Middleware)(nil) diff --git a/core/interfaces/token_validator.go b/core/interfaces/token_validator.go deleted file mode 100644 index 5248d2ff9..000000000 --- a/core/interfaces/token_validator.go +++ /dev/null @@ -1,8 +0,0 @@ -package interfaces - -import "github.com/anyproto/anytype-heart/pkg/lib/pb/model" - -// TokenValidator is an interface that exposes ValidateApiToken from core to avoid circular dependencies. -type TokenValidator interface { - ValidateApiToken(token string) (model.AccountAuthLocalApiScope, error) -} From 7e8edea0db679c1a86df5235ff0453d1914c9844 Mon Sep 17 00:00:00 2001 From: AnastasiaShemyakinskaya Date: Mon, 20 Jan 2025 22:12:36 +0100 Subject: [PATCH 196/279] GO-4886: save joinSpace in PublishState Signed-off-by: AnastasiaShemyakinskaya --- core/publish/service.go | 29 +- core/publish/service_test.go | 85 +- docs/proto.md | 1 + pb/commands.pb.go | 2493 +++++++++++++++++----------------- pb/protos/commands.proto | 1 + 5 files changed, 1371 insertions(+), 1238 deletions(-) diff --git a/core/publish/service.go b/core/publish/service.go index b4a8374f2..65826b257 100644 --- a/core/publish/service.go +++ b/core/publish/service.go @@ -59,8 +59,9 @@ type PublishingUberSnapshotMeta struct { InviteLink string `json:"inviteLink,omitempty"` } -type Heads struct { - Heads []string `json:"heads"` +type Version struct { + Heads []string `json:"heads"` + JoinSpace bool `json:"joinSpace"` } // Contains all publishing .pb files @@ -177,7 +178,7 @@ func (s *service) publishToPublishServer(ctx context.Context, spaceId, pageId, u return err } - version, err := s.evaluateDocumentVersion(spc, pageId) + version, err := s.evaluateDocumentVersion(spc, pageId, joinSpace) if err != nil { return err } @@ -191,6 +192,9 @@ func (s *service) publishToPublishServer(ctx context.Context, spaceId, pageId, u func (s *service) applyInviteLink(ctx context.Context, spc clientspace.Space, snapshot *PublishingUberSnapshot, joinSpace bool) error { inviteLink, err := s.extractInviteLink(ctx, spc.Id(), joinSpace, spc.IsPersonal()) + if err != nil && errors.Is(err, ErrLimitExceeded) { + return nil + } if err != nil { return err } @@ -356,7 +360,7 @@ func (s *service) extractInviteLink(ctx context.Context, spaceId string, joinSpa return inviteLink, nil } -func (s *service) evaluateDocumentVersion(spc clientspace.Space, pageId string) (string, error) { +func (s *service) evaluateDocumentVersion(spc clientspace.Space, pageId string, joinSpace bool) (string, error) { treeStorage, err := spc.Storage().TreeStorage(pageId) if err != nil { return "", err @@ -366,7 +370,7 @@ func (s *service) evaluateDocumentVersion(spc clientspace.Space, pageId string) return "", err } slices.Sort(heads) - h := &Heads{Heads: heads} + h := &Version{Heads: heads, JoinSpace: joinSpace} jsonData, err := json.Marshal(h) if err != nil { return "", err @@ -423,6 +427,7 @@ func (s *service) PublishList(ctx context.Context, spaceId string) ([]*pb.RpcPub } pbPublishes := make([]*pb.RpcPublishingPublishState, 0, len(publishes)) for _, publish := range publishes { + version := s.retrieveVersion(publish) pbPublishes = append(pbPublishes, &pb.RpcPublishingPublishState{ SpaceId: publish.SpaceId, ObjectId: publish.ObjectId, @@ -431,16 +436,27 @@ func (s *service) PublishList(ctx context.Context, spaceId string) ([]*pb.RpcPub Version: publish.Version, Timestamp: publish.Timestamp, Size_: publish.Size_, + JoinSpace: version.JoinSpace, }) } return pbPublishes, nil } +func (s *service) retrieveVersion(publish *publishapi.Publish) *Version { + version := &Version{} + err := json.Unmarshal([]byte(publish.Version), version) + if err != nil { + log.Error("failed to unmarshal publish version", zap.Error(err)) + } + return version +} + func (s *service) ResolveUri(ctx context.Context, uri string) (*pb.RpcPublishingPublishState, error) { publish, err := s.publishClientService.ResolveUri(ctx, uri) if err != nil { return nil, err } + version := s.retrieveVersion(publish) return &pb.RpcPublishingPublishState{ SpaceId: publish.SpaceId, ObjectId: publish.ObjectId, @@ -449,6 +465,7 @@ func (s *service) ResolveUri(ctx context.Context, uri string) (*pb.RpcPublishing Version: publish.Version, Timestamp: publish.Timestamp, Size_: publish.Size_, + JoinSpace: version.JoinSpace, }, nil } @@ -457,6 +474,7 @@ func (s *service) GetStatus(ctx context.Context, spaceId string, objectId string if err != nil { return nil, err } + version := s.retrieveVersion(status) return &pb.RpcPublishingPublishState{ SpaceId: status.SpaceId, ObjectId: status.ObjectId, @@ -465,5 +483,6 @@ func (s *service) GetStatus(ctx context.Context, spaceId string, objectId string Version: status.Version, Timestamp: status.Timestamp, Size_: status.Size_, + JoinSpace: version.JoinSpace, }, nil } diff --git a/core/publish/service_test.go b/core/publish/service_test.go index 854282c40..12d4e9c9a 100644 --- a/core/publish/service_test.go +++ b/core/publish/service_test.go @@ -34,6 +34,7 @@ import ( "github.com/anyproto/anytype-heart/core/inviteservice" "github.com/anyproto/anytype-heart/core/inviteservice/mock_inviteservice" "github.com/anyproto/anytype-heart/core/notifications/mock_notifications" + "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/pkg/lib/bundle" "github.com/anyproto/anytype-heart/pkg/lib/core/smartblock" "github.com/anyproto/anytype-heart/pkg/lib/localstore/addr" @@ -63,6 +64,7 @@ type mockPublishClient struct { expectedInvite string expectedObject string expectedPbFiles map[string]struct{} + expectedResult []*publishapi.Publish } func (m *mockPublishClient) Init(a *app.App) (err error) { @@ -78,7 +80,7 @@ func (m *mockPublishClient) ResolveUri(ctx context.Context, uri string) (publish } func (m *mockPublishClient) GetPublishStatus(ctx context.Context, spaceId, objectId string) (publish *publishapi.Publish, err error) { - return + return m.expectedResult[0], nil } func (m *mockPublishClient) Publish(ctx context.Context, req *publishapi.PublishRequest) (uploadUrl string, err error) { @@ -91,7 +93,7 @@ func (m *mockPublishClient) UnPublish(ctx context.Context, req *publishapi.UnPub } func (m *mockPublishClient) ListPublishes(ctx context.Context, spaceId string) (publishes []*publishapi.Publish, err error) { - return + return m.expectedResult, nil } func (m *mockPublishClient) UploadDir(ctx context.Context, uploadUrl, dir string) (err error) { @@ -165,7 +167,7 @@ func TestPublish(t *testing.T) { // then assert.NoError(t, err) assert.Equal(t, expected, publish.Url) - assert.Equal(t, "{\"heads\":[\"heads\"]}", publishClient.expectedRequest.Version) + assert.Equal(t, "{\"heads\":[\"heads\"],\"joinSpace\":false}", publishClient.expectedRequest.Version) assert.Equal(t, objectId, publishClient.expectedRequest.ObjectId) assert.Equal(t, spaceId, publishClient.expectedRequest.SpaceId) assert.Equal(t, expectedUri, publishClient.expectedRequest.Uri) @@ -219,7 +221,7 @@ func TestPublish(t *testing.T) { // then assert.NoError(t, err) assert.Equal(t, expected, publish.Url) - assert.Equal(t, "{\"heads\":[\"heads\"]}", publishClient.expectedRequest.Version) + assert.Equal(t, "{\"heads\":[\"heads\"],\"joinSpace\":true}", publishClient.expectedRequest.Version) assert.Equal(t, objectId, publishClient.expectedRequest.ObjectId) assert.Equal(t, spaceId, publishClient.expectedRequest.SpaceId) assert.Equal(t, expectedUri, publishClient.expectedRequest.Uri) @@ -266,7 +268,7 @@ func TestPublish(t *testing.T) { // then assert.NoError(t, err) assert.Equal(t, expected, publish.Url) - assert.Equal(t, "{\"heads\":[\"heads\"]}", publishClient.expectedRequest.Version) + assert.Equal(t, "{\"heads\":[\"heads\"],\"joinSpace\":true}", publishClient.expectedRequest.Version) assert.Equal(t, objectId, publishClient.expectedRequest.ObjectId) assert.Equal(t, spaceId, publishClient.expectedRequest.SpaceId) assert.Equal(t, expectedUri, publishClient.expectedRequest.Uri) @@ -324,7 +326,7 @@ func TestPublish(t *testing.T) { // then assert.NoError(t, err) assert.Equal(t, expectedUrl, publish.Url) - assert.Equal(t, "{\"heads\":[\"heads\"]}", publishClient.expectedRequest.Version) + assert.Equal(t, "{\"heads\":[\"heads\"],\"joinSpace\":true}", publishClient.expectedRequest.Version) assert.Equal(t, objectId, publishClient.expectedRequest.ObjectId) assert.Equal(t, spaceId, publishClient.expectedRequest.SpaceId) assert.Equal(t, expectedUri, publishClient.expectedRequest.Uri) @@ -369,7 +371,7 @@ func TestPublish(t *testing.T) { // then assert.Error(t, err) assert.Equal(t, "", publish.Url) - assert.Equal(t, "{\"heads\":[\"heads\"]}", publishClient.expectedRequest.Version) + assert.Equal(t, "{\"heads\":[\"heads\"],\"joinSpace\":true}", publishClient.expectedRequest.Version) assert.Equal(t, objectId, publishClient.expectedRequest.ObjectId) assert.Equal(t, spaceId, publishClient.expectedRequest.SpaceId) assert.Equal(t, expectedUri, publishClient.expectedRequest.Uri) @@ -451,6 +453,75 @@ func TestPublish(t *testing.T) { }) } +func TestService_PublishList(t *testing.T) { + t.Run("success", func(t *testing.T) { + // given + publishClientService := &mockPublishClient{ + t: t, + expectedResult: []*publishapi.Publish{ + { + SpaceId: spaceId, + ObjectId: objectId, + Uri: "test", + Version: "{\"heads\":[\"heads\"],\"joinSpace\":true}", + }, + }, + } + svc := &service{ + publishClientService: publishClientService, + } + + // when + publishes, err := svc.PublishList(context.Background(), spaceId) + + // then + expectedModel := &pb.RpcPublishingPublishState{ + SpaceId: spaceId, + ObjectId: objectId, + Uri: "test", + Version: "{\"heads\":[\"heads\"],\"joinSpace\":true}", + JoinSpace: true, + } + assert.NoError(t, err) + assert.Len(t, publishes, 1) + assert.Equal(t, expectedModel, publishes[0]) + }) +} + +func TestService_GetStatus(t *testing.T) { + t.Run("success", func(t *testing.T) { + // given + publishClientService := &mockPublishClient{ + t: t, + expectedResult: []*publishapi.Publish{ + { + SpaceId: spaceId, + ObjectId: objectId, + Uri: "test", + Version: "{\"heads\":[\"heads\"],\"joinSpace\":false}", + }, + }, + } + svc := &service{ + publishClientService: publishClientService, + } + + // when + publish, err := svc.GetStatus(context.Background(), spaceId, objectId) + + // then + expectedModel := &pb.RpcPublishingPublishState{ + SpaceId: spaceId, + ObjectId: objectId, + Uri: "test", + Version: "{\"heads\":[\"heads\"],\"joinSpace\":false}", + JoinSpace: false, + } + assert.NoError(t, err) + assert.Equal(t, expectedModel, publish) + }) +} + func prepaeSpaceService(t *testing.T, isPersonal bool) (*mock_space.MockService, error) { spaceService := mock_space.NewMockService(t) space := mock_clientspace.NewMockSpace(t) diff --git a/docs/proto.md b/docs/proto.md index 015c066fd..bfba4db14 100644 --- a/docs/proto.md +++ b/docs/proto.md @@ -18210,6 +18210,7 @@ Available undo/redo operations | version | [string](#string) | | | | timestamp | [int64](#int64) | | | | size | [int64](#int64) | | | +| joinSpace | [bool](#bool) | | | diff --git a/pb/commands.pb.go b/pb/commands.pb.go index 865ccff76..556b69779 100644 --- a/pb/commands.pb.go +++ b/pb/commands.pb.go @@ -18718,6 +18718,7 @@ type RpcPublishingPublishState struct { Version string `protobuf:"bytes,5,opt,name=version,proto3" json:"version,omitempty"` Timestamp int64 `protobuf:"varint,6,opt,name=timestamp,proto3" json:"timestamp,omitempty"` Size_ int64 `protobuf:"varint,7,opt,name=size,proto3" json:"size,omitempty"` + JoinSpace bool `protobuf:"varint,8,opt,name=joinSpace,proto3" json:"joinSpace,omitempty"` } func (m *RpcPublishingPublishState) Reset() { *m = RpcPublishingPublishState{} } @@ -18802,6 +18803,13 @@ func (m *RpcPublishingPublishState) GetSize_() int64 { return 0 } +func (m *RpcPublishingPublishState) GetJoinSpace() bool { + if m != nil { + return m.JoinSpace + } + return false +} + type RpcPublishingCreate struct { } @@ -72085,1232 +72093,1232 @@ func init() { func init() { proto.RegisterFile("pb/protos/commands.proto", fileDescriptor_8261c968b2e6f45c) } var fileDescriptor_8261c968b2e6f45c = []byte{ - // 19593 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x7f, 0x9c, 0x2c, 0x47, - 0x59, 0x2f, 0x7c, 0xa6, 0x7b, 0x66, 0x76, 0xf7, 0xd9, 0x1f, 0x67, 0x4e, 0xe7, 0x9c, 0x93, 0x93, - 0x4a, 0x38, 0x89, 0x27, 0x21, 0xc4, 0x10, 0x36, 0x21, 0x20, 0x92, 0x90, 0x90, 0xcc, 0xce, 0xce, - 0xee, 0x4e, 0xb2, 0x3b, 0xb3, 0xf6, 0xcc, 0x9e, 0x43, 0xf4, 0xfa, 0xce, 0xed, 0x33, 0x53, 0xbb, - 0xdb, 0x39, 0xb3, 0xdd, 0x63, 0x77, 0xef, 0x9e, 0x1c, 0xde, 0xcf, 0x7d, 0xaf, 0x88, 0x11, 0x14, - 0x73, 0x11, 0x11, 0x95, 0xdf, 0x10, 0x08, 0x08, 0x0a, 0xc8, 0xef, 0x0b, 0x2a, 0x20, 0x3f, 0x04, - 0x11, 0x11, 0x41, 0x04, 0x51, 0x5e, 0x41, 0x10, 0xf1, 0x7e, 0xe4, 0xf2, 0xea, 0x7b, 0x05, 0x51, - 0x78, 0x7d, 0x3f, 0x5d, 0x55, 0xfd, 0xa3, 0x66, 0xa7, 0x7b, 0xaa, 0x67, 0xa7, 0x67, 0x83, 0xdc, - 0xff, 0xba, 0xab, 0xab, 0x9f, 0x7a, 0xea, 0xf9, 0x3e, 0x55, 0xf5, 0x54, 0xd5, 0x53, 0x4f, 0xc1, - 0xa9, 0xee, 0xf9, 0x9b, 0xbb, 0x96, 0xe9, 0x98, 0xf6, 0xcd, 0x2d, 0x73, 0x67, 0x47, 0x33, 0xda, - 0xf6, 0x3c, 0x79, 0x57, 0x26, 0x34, 0xe3, 0x92, 0x73, 0xa9, 0x8b, 0xd1, 0x75, 0xdd, 0x0b, 0x5b, - 0x37, 0x77, 0xf4, 0xf3, 0x37, 0x77, 0xcf, 0xdf, 0xbc, 0x63, 0xb6, 0x71, 0xc7, 0xfb, 0x81, 0xbc, - 0xb0, 0xec, 0xe8, 0x86, 0xa8, 0x5c, 0x1d, 0xb3, 0xa5, 0x75, 0x6c, 0xc7, 0xb4, 0x30, 0xcb, 0x79, - 0x32, 0x28, 0x12, 0xef, 0x61, 0xc3, 0xf1, 0x28, 0x5c, 0xb5, 0x65, 0x9a, 0x5b, 0x1d, 0x4c, 0xbf, - 0x9d, 0xdf, 0xdd, 0xbc, 0xd9, 0x76, 0xac, 0xdd, 0x96, 0xc3, 0xbe, 0x5e, 0xd3, 0xfb, 0xb5, 0x8d, - 0xed, 0x96, 0xa5, 0x77, 0x1d, 0xd3, 0xa2, 0x39, 0xce, 0xfc, 0xc6, 0x43, 0x93, 0x20, 0xab, 0xdd, - 0x16, 0xfa, 0xd6, 0x04, 0xc8, 0xc5, 0x6e, 0x17, 0x7d, 0x44, 0x02, 0x58, 0xc6, 0xce, 0x59, 0x6c, - 0xd9, 0xba, 0x69, 0xa0, 0xa3, 0x30, 0xa1, 0xe2, 0x9f, 0xda, 0xc5, 0xb6, 0x73, 0x7b, 0xf6, 0xb9, - 0x5f, 0x93, 0x33, 0xe8, 0x11, 0x09, 0x26, 0x55, 0x6c, 0x77, 0x4d, 0xc3, 0xc6, 0xca, 0xdd, 0x90, - 0xc3, 0x96, 0x65, 0x5a, 0xa7, 0x32, 0xd7, 0x64, 0x6e, 0x98, 0xbe, 0xf5, 0xc6, 0x79, 0x56, 0xfd, - 0x79, 0xb5, 0xdb, 0x9a, 0x2f, 0x76, 0xbb, 0xf3, 0x01, 0xa5, 0x79, 0xef, 0xa7, 0xf9, 0xb2, 0xfb, - 0x87, 0x4a, 0x7f, 0x54, 0x4e, 0xc1, 0xc4, 0x1e, 0xcd, 0x70, 0x4a, 0xba, 0x26, 0x73, 0xc3, 0x94, - 0xea, 0xbd, 0xba, 0x5f, 0xda, 0xd8, 0xd1, 0xf4, 0x8e, 0x7d, 0x4a, 0xa6, 0x5f, 0xd8, 0x2b, 0x7a, - 0x38, 0x03, 0x39, 0x42, 0x44, 0x29, 0x41, 0xb6, 0x65, 0xb6, 0x31, 0x29, 0x7e, 0xee, 0xd6, 0x9b, - 0xc5, 0x8b, 0x9f, 0x2f, 0x99, 0x6d, 0xac, 0x92, 0x9f, 0x95, 0x6b, 0x60, 0xda, 0x13, 0x4b, 0xc0, - 0x46, 0x38, 0xe9, 0xcc, 0xad, 0x90, 0x75, 0xf3, 0x2b, 0x93, 0x90, 0xad, 0x6e, 0xac, 0xae, 0x16, - 0x8e, 0x28, 0xc7, 0x60, 0x76, 0xa3, 0x7a, 0x6f, 0xb5, 0x76, 0xae, 0xda, 0x2c, 0xab, 0x6a, 0x4d, - 0x2d, 0x64, 0x94, 0x59, 0x98, 0x5a, 0x28, 0x2e, 0x36, 0x2b, 0xd5, 0xf5, 0x8d, 0x46, 0x41, 0x42, - 0xaf, 0x90, 0x61, 0xae, 0x8e, 0x9d, 0x45, 0xbc, 0xa7, 0xb7, 0x70, 0xdd, 0xd1, 0x1c, 0x8c, 0x9e, - 0x9f, 0xf1, 0x85, 0xa9, 0x6c, 0xb8, 0x85, 0xfa, 0x9f, 0x58, 0x05, 0x9e, 0xb4, 0xaf, 0x02, 0x3c, - 0x85, 0x79, 0xf6, 0xf7, 0x7c, 0x28, 0x4d, 0x0d, 0xd3, 0x39, 0xf3, 0x04, 0x98, 0x0e, 0x7d, 0x53, - 0xe6, 0x00, 0x16, 0x8a, 0xa5, 0x7b, 0x97, 0xd5, 0xda, 0x46, 0x75, 0xb1, 0x70, 0xc4, 0x7d, 0x5f, - 0xaa, 0xa9, 0x65, 0xf6, 0x9e, 0x41, 0xdf, 0xc9, 0x84, 0xc0, 0x5c, 0xe4, 0xc1, 0x9c, 0x1f, 0xcc, - 0x4c, 0x1f, 0x40, 0xd1, 0xeb, 0x7c, 0x70, 0x96, 0x39, 0x70, 0x9e, 0x94, 0x8c, 0x5c, 0xfa, 0x00, - 0x3d, 0x28, 0xc1, 0x64, 0x7d, 0x7b, 0xd7, 0x69, 0x9b, 0x17, 0x0d, 0x34, 0xe5, 0x23, 0x83, 0xbe, - 0x11, 0x96, 0xc9, 0xd3, 0x79, 0x99, 0xdc, 0xb0, 0xbf, 0x12, 0x8c, 0x42, 0x84, 0x34, 0x5e, 0xe5, - 0x4b, 0xa3, 0xc8, 0x49, 0xe3, 0x09, 0xa2, 0x84, 0xd2, 0x97, 0xc3, 0x4b, 0x9e, 0x0a, 0xb9, 0x7a, - 0x57, 0x6b, 0x61, 0xf4, 0x09, 0x19, 0x66, 0x56, 0xb1, 0xb6, 0x87, 0x8b, 0xdd, 0xae, 0x65, 0xee, - 0x61, 0x54, 0x0a, 0xf4, 0xf5, 0x14, 0x4c, 0xd8, 0x6e, 0xa6, 0x4a, 0x9b, 0xd4, 0x60, 0x4a, 0xf5, - 0x5e, 0x95, 0xd3, 0x00, 0x7a, 0x1b, 0x1b, 0x8e, 0xee, 0xe8, 0xd8, 0x3e, 0x25, 0x5d, 0x23, 0xdf, - 0x30, 0xa5, 0x86, 0x52, 0xd0, 0xb7, 0x24, 0x51, 0x1d, 0x23, 0x5c, 0xcc, 0x87, 0x39, 0x88, 0x90, - 0xea, 0x6b, 0x24, 0x11, 0x1d, 0x1b, 0x48, 0x2e, 0x99, 0x6c, 0xdf, 0x9c, 0x49, 0x2e, 0x5c, 0x37, - 0x47, 0xb5, 0xd6, 0xac, 0x6f, 0x94, 0x56, 0x9a, 0xf5, 0xf5, 0x62, 0xa9, 0x5c, 0xc0, 0xca, 0x71, - 0x28, 0x90, 0xc7, 0x66, 0xa5, 0xde, 0x5c, 0x2c, 0xaf, 0x96, 0x1b, 0xe5, 0xc5, 0xc2, 0xa6, 0xa2, - 0xc0, 0x9c, 0x5a, 0xfe, 0xb1, 0x8d, 0x72, 0xbd, 0xd1, 0x5c, 0x2a, 0x56, 0x56, 0xcb, 0x8b, 0x85, - 0x2d, 0xf7, 0xe7, 0xd5, 0xca, 0x5a, 0xa5, 0xd1, 0x54, 0xcb, 0xc5, 0xd2, 0x4a, 0x79, 0xb1, 0xb0, - 0xad, 0x5c, 0x0e, 0x97, 0x55, 0x6b, 0xcd, 0xe2, 0xfa, 0xba, 0x5a, 0x3b, 0x5b, 0x6e, 0xb2, 0x3f, - 0xea, 0x05, 0x9d, 0x16, 0xd4, 0x68, 0xd6, 0x57, 0x8a, 0x6a, 0xb9, 0xb8, 0xb0, 0x5a, 0x2e, 0xdc, - 0x8f, 0x9e, 0x2d, 0xc3, 0xec, 0x9a, 0x76, 0x01, 0xd7, 0xb7, 0x35, 0x0b, 0x6b, 0xe7, 0x3b, 0x18, - 0x5d, 0x2b, 0x80, 0x27, 0xfa, 0x44, 0x18, 0xaf, 0x32, 0x8f, 0xd7, 0xcd, 0x7d, 0x04, 0xcc, 0x15, - 0x11, 0x01, 0xd8, 0xbf, 0xf8, 0xcd, 0x60, 0x85, 0x03, 0xec, 0xc9, 0x09, 0xe9, 0x25, 0x43, 0xec, - 0x67, 0x1e, 0x05, 0x88, 0xa1, 0x2f, 0xca, 0x30, 0x57, 0x31, 0xf6, 0x74, 0x07, 0x2f, 0x63, 0x03, - 0x5b, 0xee, 0x38, 0x20, 0x04, 0xc3, 0x23, 0x72, 0x08, 0x86, 0x25, 0x1e, 0x86, 0x5b, 0xfa, 0x88, - 0x8d, 0x2f, 0x23, 0x62, 0xb4, 0xbd, 0x0a, 0xa6, 0x74, 0x92, 0xaf, 0xa4, 0xb7, 0x99, 0xc4, 0x82, - 0x04, 0xe5, 0x3a, 0x98, 0xa5, 0x2f, 0x4b, 0x7a, 0x07, 0xdf, 0x8b, 0x2f, 0xb1, 0x71, 0x97, 0x4f, - 0x44, 0xbf, 0xe8, 0x37, 0xbe, 0x0a, 0x87, 0xe5, 0x8f, 0x24, 0x65, 0x2a, 0x19, 0x98, 0x2f, 0x7a, - 0x34, 0x34, 0xbf, 0x7d, 0xad, 0x4c, 0x47, 0xdf, 0x93, 0x60, 0xba, 0xee, 0x98, 0x5d, 0x57, 0x65, - 0x75, 0x63, 0x4b, 0x0c, 0xdc, 0x8f, 0x85, 0xdb, 0x58, 0x89, 0x07, 0xf7, 0x09, 0x7d, 0xe4, 0x18, - 0x2a, 0x20, 0xa2, 0x85, 0x7d, 0xcb, 0x6f, 0x61, 0x4b, 0x1c, 0x2a, 0xb7, 0x26, 0xa2, 0xf6, 0x7d, - 0xd8, 0xbe, 0x5e, 0x24, 0x43, 0xc1, 0x53, 0x33, 0xa7, 0xb4, 0x6b, 0x59, 0xd8, 0x70, 0xc4, 0x40, - 0xf8, 0xcb, 0x30, 0x08, 0x2b, 0x3c, 0x08, 0xb7, 0xc6, 0x28, 0xb3, 0x57, 0x4a, 0x8a, 0x6d, 0xec, - 0x03, 0x3e, 0x9a, 0xf7, 0x72, 0x68, 0xfe, 0x68, 0x72, 0xb6, 0x92, 0x41, 0xba, 0x32, 0x04, 0xa2, - 0xc7, 0xa1, 0xe0, 0x8e, 0x49, 0xa5, 0x46, 0xe5, 0x6c, 0xb9, 0x59, 0xa9, 0x9e, 0xad, 0x34, 0xca, - 0x05, 0x8c, 0x5e, 0x28, 0xc3, 0x0c, 0x65, 0x4d, 0xc5, 0x7b, 0xe6, 0x05, 0xc1, 0x5e, 0xef, 0x8b, - 0x09, 0x8d, 0x85, 0x70, 0x09, 0x11, 0x2d, 0xe3, 0x17, 0x12, 0x18, 0x0b, 0x31, 0xe4, 0x1e, 0x4d, - 0xbd, 0xd5, 0xbe, 0x66, 0xb0, 0xd5, 0xa7, 0xb5, 0xf4, 0xed, 0xad, 0x5e, 0x94, 0x05, 0xa0, 0x95, - 0x3c, 0xab, 0xe3, 0x8b, 0x68, 0x2d, 0xc0, 0x84, 0x53, 0xdb, 0xcc, 0x40, 0xb5, 0x95, 0xfa, 0xa9, - 0xed, 0xbb, 0xc3, 0x63, 0xd6, 0x02, 0x8f, 0xde, 0x4d, 0x91, 0xe2, 0x76, 0x39, 0x89, 0x9e, 0x1d, - 0x7a, 0x8a, 0x22, 0xf1, 0x56, 0xe7, 0x55, 0x30, 0x45, 0x1e, 0xab, 0xda, 0x0e, 0x66, 0x6d, 0x28, - 0x48, 0x50, 0xce, 0xc0, 0x0c, 0xcd, 0xd8, 0x32, 0x0d, 0xb7, 0x3e, 0x59, 0x92, 0x81, 0x4b, 0x73, - 0x41, 0x6c, 0x59, 0x58, 0x73, 0x4c, 0x8b, 0xd0, 0xc8, 0x51, 0x10, 0x43, 0x49, 0xe8, 0xeb, 0x7e, - 0x2b, 0x2c, 0x73, 0x9a, 0xf3, 0xc4, 0x24, 0x55, 0x49, 0xa6, 0x37, 0x7b, 0xc3, 0xb5, 0x3f, 0xda, - 0xea, 0x9a, 0x2e, 0xda, 0x4b, 0x64, 0x6a, 0x87, 0x95, 0x93, 0xa0, 0xb0, 0x54, 0x37, 0x6f, 0xa9, - 0x56, 0x6d, 0x94, 0xab, 0x8d, 0xc2, 0x66, 0x5f, 0x8d, 0xda, 0x42, 0xaf, 0xc9, 0x42, 0xf6, 0x1e, - 0x53, 0x37, 0xd0, 0x83, 0x19, 0x4e, 0x25, 0x0c, 0xec, 0x5c, 0x34, 0xad, 0x0b, 0x7e, 0x43, 0x0d, - 0x12, 0xe2, 0xb1, 0x09, 0x54, 0x49, 0x1e, 0xa8, 0x4a, 0xd9, 0x7e, 0xaa, 0xf4, 0xcb, 0x61, 0x55, - 0xba, 0x83, 0x57, 0xa5, 0xeb, 0xfb, 0xc8, 0xdf, 0x65, 0x3e, 0xa2, 0x03, 0xf8, 0xa8, 0xdf, 0x01, - 0xdc, 0xc5, 0xc1, 0xf8, 0x78, 0x31, 0x32, 0xc9, 0x00, 0xfc, 0x42, 0xaa, 0x0d, 0xbf, 0x1f, 0xd4, - 0x5b, 0x11, 0x50, 0x6f, 0xf7, 0xe9, 0x13, 0xf4, 0xfd, 0x5d, 0xc7, 0xfd, 0xfb, 0xbb, 0x89, 0x0b, - 0xca, 0x09, 0x38, 0xb6, 0x58, 0x59, 0x5a, 0x2a, 0xab, 0xe5, 0x6a, 0xa3, 0x59, 0x2d, 0x37, 0xce, - 0xd5, 0xd4, 0x7b, 0x0b, 0x1d, 0xf4, 0xb0, 0x0c, 0xe0, 0x4a, 0xa8, 0xa4, 0x19, 0x2d, 0xdc, 0x11, - 0xeb, 0xd1, 0xff, 0xa7, 0x94, 0xac, 0x4f, 0x08, 0xe8, 0x47, 0xc0, 0xf9, 0x72, 0x49, 0xbc, 0x55, - 0x46, 0x12, 0x4b, 0x06, 0xea, 0x1b, 0x1f, 0x0d, 0xb6, 0xe7, 0x65, 0x70, 0xd4, 0xa3, 0xc7, 0xb2, - 0xf7, 0x9f, 0xf6, 0xbd, 0x25, 0x0b, 0x73, 0x0c, 0x16, 0x6f, 0x1e, 0xff, 0xdc, 0x8c, 0xc8, 0x44, - 0x1e, 0xc1, 0x24, 0x9b, 0xb6, 0x7b, 0xdd, 0xbb, 0xff, 0xae, 0x2c, 0xc3, 0x74, 0x17, 0x5b, 0x3b, - 0xba, 0x6d, 0xeb, 0xa6, 0x41, 0x17, 0xe4, 0xe6, 0x6e, 0x7d, 0xac, 0x2f, 0x71, 0xb2, 0x76, 0x39, - 0xbf, 0xae, 0x59, 0x8e, 0xde, 0xd2, 0xbb, 0x9a, 0xe1, 0xac, 0x07, 0x99, 0xd5, 0xf0, 0x9f, 0xe8, - 0x05, 0x09, 0xa7, 0x35, 0x7c, 0x4d, 0x22, 0x54, 0xe2, 0x77, 0x13, 0x4c, 0x49, 0x62, 0x09, 0x26, - 0x53, 0x8b, 0x8f, 0xa4, 0xaa, 0x16, 0x7d, 0xf0, 0xde, 0x52, 0xae, 0x80, 0x13, 0x95, 0x6a, 0xa9, - 0xa6, 0xaa, 0xe5, 0x52, 0xa3, 0xb9, 0x5e, 0x56, 0xd7, 0x2a, 0xf5, 0x7a, 0xa5, 0x56, 0xad, 0x1f, - 0xa4, 0xb5, 0xa3, 0x8f, 0xcb, 0xbe, 0xc6, 0x2c, 0xe2, 0x56, 0x47, 0x37, 0x30, 0xba, 0xeb, 0x80, - 0x0a, 0xc3, 0xaf, 0xfa, 0x88, 0xe3, 0xcc, 0xca, 0x8f, 0xc0, 0xf9, 0xd5, 0xc9, 0x71, 0xee, 0x4f, - 0xf0, 0x3f, 0x70, 0xf3, 0xff, 0xa2, 0x0c, 0xc7, 0x42, 0x0d, 0x51, 0xc5, 0x3b, 0x23, 0x5b, 0xc9, - 0xfb, 0x99, 0x70, 0xdb, 0xad, 0xf0, 0x98, 0xf6, 0xb3, 0xa6, 0xf7, 0xb1, 0x11, 0x01, 0xeb, 0x1b, - 0x7d, 0x58, 0x57, 0x39, 0x58, 0x9f, 0x3a, 0x04, 0xcd, 0x64, 0xc8, 0xfe, 0x76, 0xaa, 0xc8, 0x5e, - 0x01, 0x27, 0xd6, 0x8b, 0x6a, 0xa3, 0x52, 0xaa, 0xac, 0x17, 0xdd, 0x71, 0x34, 0x34, 0x64, 0x47, - 0x98, 0xeb, 0x3c, 0xe8, 0x7d, 0xf1, 0x7d, 0x7f, 0x16, 0xae, 0xea, 0xdf, 0xd1, 0x96, 0xb6, 0x35, - 0x63, 0x0b, 0x23, 0x5d, 0x04, 0xea, 0x45, 0x98, 0x68, 0x91, 0xec, 0x14, 0xe7, 0xf0, 0xd6, 0x4d, - 0x4c, 0x5f, 0x4e, 0x4b, 0x50, 0xbd, 0x5f, 0xd1, 0xdb, 0xc3, 0x0a, 0xd1, 0xe0, 0x15, 0xe2, 0xe9, - 0xf1, 0xe0, 0xed, 0xe3, 0x3b, 0x42, 0x37, 0x3e, 0xe5, 0xeb, 0xc6, 0x39, 0x4e, 0x37, 0x4a, 0x07, - 0x23, 0x9f, 0x4c, 0x4d, 0xfe, 0xe8, 0xd1, 0xd0, 0x01, 0x44, 0x6a, 0x93, 0x1e, 0x3d, 0x2a, 0xf4, - 0xed, 0xee, 0x5f, 0x29, 0x43, 0x7e, 0x11, 0x77, 0xb0, 0xe8, 0x4a, 0xe4, 0x37, 0x25, 0xd1, 0x0d, - 0x11, 0x0a, 0x03, 0xa5, 0x1d, 0xbd, 0x3a, 0xe2, 0xe8, 0x3b, 0xd8, 0x76, 0xb4, 0x9d, 0x2e, 0x11, - 0xb5, 0xac, 0x06, 0x09, 0xe8, 0x67, 0x25, 0x91, 0xed, 0x92, 0x98, 0x62, 0xfe, 0x63, 0xac, 0x29, - 0x7e, 0x46, 0x82, 0xc9, 0x3a, 0x76, 0x6a, 0x56, 0x1b, 0x5b, 0xa8, 0x1e, 0x60, 0x74, 0x0d, 0x4c, - 0x13, 0x50, 0xdc, 0x69, 0xa6, 0x8f, 0x53, 0x38, 0x49, 0xb9, 0x1e, 0xe6, 0xfc, 0x57, 0xf2, 0x3b, - 0xeb, 0xc6, 0x7b, 0x52, 0xd1, 0x3f, 0x66, 0x44, 0x77, 0x71, 0xd9, 0x92, 0x21, 0xe3, 0x26, 0xa2, - 0x95, 0x8a, 0xed, 0xc8, 0xc6, 0x92, 0x4a, 0x7f, 0xa3, 0xeb, 0xad, 0x12, 0xc0, 0x86, 0x61, 0x7b, - 0x72, 0x7d, 0x7c, 0x02, 0xb9, 0xa2, 0x7f, 0xce, 0x24, 0x9b, 0xc5, 0x04, 0xe5, 0x44, 0x48, 0xec, - 0xb5, 0x09, 0xd6, 0x16, 0x22, 0x89, 0xa5, 0x2f, 0xb3, 0xaf, 0xcc, 0x41, 0xfe, 0x9c, 0xd6, 0xe9, - 0x60, 0x07, 0x7d, 0x55, 0x82, 0x7c, 0xc9, 0xc2, 0x9a, 0x83, 0xc3, 0xa2, 0x43, 0x30, 0x69, 0x99, - 0xa6, 0xb3, 0xae, 0x39, 0xdb, 0x4c, 0x6e, 0xfe, 0x3b, 0x73, 0x18, 0xf8, 0xad, 0x70, 0xf7, 0x71, - 0x17, 0x2f, 0xba, 0x1f, 0xe6, 0x6a, 0x4b, 0x0b, 0x9a, 0xa7, 0x85, 0x44, 0xf4, 0x1f, 0x08, 0x26, - 0x77, 0x0c, 0xbc, 0x63, 0x1a, 0x7a, 0xcb, 0xb3, 0x39, 0xbd, 0x77, 0xf4, 0x41, 0x5f, 0xa6, 0x0b, - 0x9c, 0x4c, 0xe7, 0x85, 0x4b, 0x49, 0x26, 0xd0, 0xfa, 0x10, 0xbd, 0xc7, 0xd5, 0x70, 0x25, 0xed, - 0x0c, 0x9a, 0x8d, 0x5a, 0xb3, 0xa4, 0x96, 0x8b, 0x8d, 0x72, 0x73, 0xb5, 0x56, 0x2a, 0xae, 0x36, - 0xd5, 0xf2, 0x7a, 0xad, 0x80, 0xd1, 0xdf, 0x49, 0xae, 0x70, 0x5b, 0xe6, 0x1e, 0xb6, 0xd0, 0xb2, - 0x90, 0x9c, 0xe3, 0x64, 0xc2, 0x30, 0xf8, 0x65, 0x61, 0xa7, 0x0d, 0x26, 0x1d, 0xc6, 0x41, 0x84, - 0xf2, 0x7e, 0x48, 0xa8, 0xb9, 0xc7, 0x92, 0x7a, 0x14, 0x48, 0xfa, 0x7f, 0x49, 0x30, 0x51, 0x32, - 0x8d, 0x3d, 0x6c, 0x39, 0xe1, 0xf9, 0x4e, 0x58, 0x9a, 0x19, 0x5e, 0x9a, 0xee, 0x20, 0x89, 0x0d, - 0xc7, 0x32, 0xbb, 0xde, 0x84, 0xc7, 0x7b, 0x45, 0xaf, 0x4f, 0x2a, 0x61, 0x56, 0x72, 0xf4, 0xc2, - 0x67, 0xff, 0x82, 0x38, 0xf6, 0xe4, 0x9e, 0x06, 0xf0, 0x70, 0x12, 0x5c, 0xfa, 0x33, 0x90, 0x7e, - 0x97, 0xf2, 0x25, 0x19, 0x66, 0x69, 0xe3, 0xab, 0x63, 0x62, 0xa1, 0xa1, 0x5a, 0x78, 0xc9, 0xb1, - 0x47, 0xf8, 0x2b, 0x47, 0x38, 0xf1, 0xe7, 0xb5, 0x6e, 0xd7, 0x5f, 0x7e, 0x5e, 0x39, 0xa2, 0xb2, - 0x77, 0xaa, 0xe6, 0x0b, 0x79, 0xc8, 0x6a, 0xbb, 0xce, 0x36, 0xfa, 0x9e, 0xf0, 0xe4, 0x93, 0xeb, - 0x0c, 0x18, 0x3f, 0x11, 0x90, 0x1c, 0x87, 0x9c, 0x63, 0x5e, 0xc0, 0x9e, 0x1c, 0xe8, 0x8b, 0x0b, - 0x87, 0xd6, 0xed, 0x36, 0xc8, 0x07, 0x06, 0x87, 0xf7, 0xee, 0xda, 0x3a, 0x5a, 0xab, 0x65, 0xee, - 0x1a, 0x4e, 0xc5, 0x5b, 0x82, 0x0e, 0x12, 0xd0, 0xe7, 0x33, 0x22, 0x93, 0x59, 0x01, 0x06, 0x93, - 0x41, 0x76, 0x7e, 0x88, 0xa6, 0x34, 0x0f, 0x37, 0x16, 0xd7, 0xd7, 0x9b, 0x8d, 0xda, 0xbd, 0xe5, - 0x6a, 0x60, 0x78, 0x36, 0x2b, 0xd5, 0x66, 0x63, 0xa5, 0xdc, 0x2c, 0x6d, 0xa8, 0x64, 0x9d, 0xb0, - 0x58, 0x2a, 0xd5, 0x36, 0xaa, 0x8d, 0x02, 0x46, 0x6f, 0x92, 0x60, 0xa6, 0xd4, 0x31, 0x6d, 0x1f, - 0xe1, 0xab, 0x03, 0x84, 0x7d, 0x31, 0x66, 0x42, 0x62, 0x44, 0xff, 0x96, 0x11, 0x75, 0x3a, 0xf0, - 0x04, 0x12, 0x22, 0x1f, 0xd1, 0x4b, 0xbd, 0x5e, 0xc8, 0xe9, 0x60, 0x30, 0xbd, 0xf4, 0x9b, 0xc4, - 0x67, 0x6e, 0x87, 0x89, 0x22, 0x55, 0x0c, 0xf4, 0xd7, 0x19, 0xc8, 0x97, 0x4c, 0x63, 0x53, 0xdf, - 0x72, 0x8d, 0x39, 0x6c, 0x68, 0xe7, 0x3b, 0x78, 0x51, 0x73, 0xb4, 0x3d, 0x1d, 0x5f, 0x24, 0x15, - 0x98, 0x54, 0x7b, 0x52, 0x5d, 0xa6, 0x58, 0x0a, 0x3e, 0xbf, 0xbb, 0x45, 0x98, 0x9a, 0x54, 0xc3, - 0x49, 0xca, 0x53, 0xe1, 0x72, 0xfa, 0xba, 0x6e, 0x61, 0x0b, 0x77, 0xb0, 0x66, 0x63, 0x77, 0x5a, - 0x64, 0xe0, 0x0e, 0x51, 0xda, 0x49, 0x35, 0xea, 0xb3, 0x72, 0x06, 0x66, 0xe8, 0x27, 0x62, 0x8a, - 0xd8, 0x44, 0x8d, 0x27, 0x55, 0x2e, 0x4d, 0x79, 0x02, 0xe4, 0xf0, 0x03, 0x8e, 0xa5, 0x9d, 0x6a, - 0x13, 0xbc, 0x2e, 0x9f, 0xa7, 0x5e, 0x87, 0xf3, 0x9e, 0xd7, 0xe1, 0x7c, 0x9d, 0xf8, 0x24, 0xaa, - 0x34, 0x17, 0x7a, 0xd9, 0xa4, 0x6f, 0x48, 0xfc, 0xbb, 0x14, 0x28, 0x86, 0x02, 0x59, 0x43, 0xdb, - 0xc1, 0x4c, 0x2f, 0xc8, 0xb3, 0x72, 0x23, 0x1c, 0xd5, 0xf6, 0x34, 0x47, 0xb3, 0x56, 0xcd, 0x96, - 0xd6, 0x21, 0x83, 0x9f, 0xd7, 0xf2, 0x7b, 0x3f, 0x90, 0x1d, 0x21, 0xc7, 0xb4, 0x30, 0xc9, 0xe5, - 0xed, 0x08, 0x79, 0x09, 0x2e, 0x75, 0xbd, 0x65, 0x1a, 0x84, 0x7f, 0x59, 0x25, 0xcf, 0xae, 0x54, - 0xda, 0xba, 0xed, 0x56, 0x84, 0x50, 0xa9, 0xd2, 0xad, 0x8d, 0xfa, 0x25, 0xa3, 0x45, 0x76, 0x83, - 0x26, 0xd5, 0xa8, 0xcf, 0xca, 0x02, 0x4c, 0xb3, 0x8d, 0x90, 0x35, 0x57, 0xaf, 0xf2, 0x44, 0xaf, - 0xae, 0xe1, 0x7d, 0xba, 0x28, 0x9e, 0xf3, 0xd5, 0x20, 0x9f, 0x1a, 0xfe, 0x49, 0xb9, 0x1b, 0xae, - 0x64, 0xaf, 0xa5, 0x5d, 0xdb, 0x31, 0x77, 0x28, 0xe8, 0x4b, 0x7a, 0x87, 0xd6, 0x60, 0x82, 0xd4, - 0x20, 0x2e, 0x8b, 0x72, 0x2b, 0x1c, 0xef, 0x5a, 0x78, 0x13, 0x5b, 0xf7, 0x69, 0x3b, 0xbb, 0x0f, - 0x34, 0x2c, 0xcd, 0xb0, 0xbb, 0xa6, 0xe5, 0x9c, 0x9a, 0x24, 0xcc, 0xf7, 0xfd, 0xc6, 0x3a, 0xca, - 0x49, 0xc8, 0x53, 0xf1, 0xa1, 0xe7, 0xe7, 0x84, 0xdd, 0x39, 0x59, 0x85, 0x62, 0xcd, 0xb3, 0x5b, - 0x60, 0x82, 0xf5, 0x70, 0x04, 0xa8, 0xe9, 0x5b, 0x4f, 0xf6, 0xac, 0x2b, 0x30, 0x2a, 0xaa, 0x97, - 0x4d, 0x79, 0x12, 0xe4, 0x5b, 0xa4, 0x5a, 0x04, 0xb3, 0xe9, 0x5b, 0xaf, 0xec, 0x5f, 0x28, 0xc9, - 0xa2, 0xb2, 0xac, 0xe8, 0x2f, 0x64, 0x21, 0x0f, 0xd0, 0x38, 0x8e, 0x93, 0xb5, 0xea, 0xaf, 0x4b, - 0x43, 0x74, 0x9b, 0x37, 0xc1, 0x0d, 0xac, 0x4f, 0x64, 0xf6, 0xc7, 0x62, 0x73, 0x61, 0xc3, 0x9b, - 0x0c, 0xba, 0x56, 0x49, 0xbd, 0x51, 0x54, 0xdd, 0x99, 0xfc, 0xa2, 0x3b, 0x89, 0xbc, 0x11, 0xae, - 0x1f, 0x90, 0xbb, 0xdc, 0x68, 0x56, 0x8b, 0x6b, 0xe5, 0xc2, 0x26, 0x6f, 0xdb, 0xd4, 0x1b, 0xb5, - 0xf5, 0xa6, 0xba, 0x51, 0xad, 0x56, 0xaa, 0xcb, 0x94, 0x98, 0x6b, 0x12, 0x9e, 0x0c, 0x32, 0x9c, - 0x53, 0x2b, 0x8d, 0x72, 0xb3, 0x54, 0xab, 0x2e, 0x55, 0x96, 0x0b, 0xfa, 0x20, 0xc3, 0xe8, 0x7e, - 0xe5, 0x1a, 0xb8, 0x8a, 0xe3, 0xa4, 0x52, 0xab, 0xba, 0x33, 0xdb, 0x52, 0xb1, 0x5a, 0x2a, 0xbb, - 0xd3, 0xd8, 0x0b, 0x0a, 0x82, 0x13, 0x94, 0x5c, 0x73, 0xa9, 0xb2, 0x1a, 0xde, 0x8c, 0xfa, 0x58, - 0x46, 0x39, 0x05, 0x97, 0x85, 0xbf, 0x55, 0xaa, 0x67, 0x8b, 0xab, 0x95, 0xc5, 0xc2, 0x1f, 0x66, - 0x94, 0xeb, 0xe0, 0x6a, 0xee, 0x2f, 0xba, 0xaf, 0xd4, 0xac, 0x2c, 0x36, 0xd7, 0x2a, 0xf5, 0xb5, - 0x62, 0xa3, 0xb4, 0x52, 0xf8, 0x38, 0x99, 0x2f, 0xf8, 0x06, 0x70, 0xc8, 0x2d, 0xf3, 0x45, 0xe1, - 0x31, 0xbd, 0xc8, 0x2b, 0xea, 0xe3, 0xfb, 0xc2, 0x1e, 0x6f, 0xc3, 0x7e, 0xc4, 0x1f, 0x1d, 0x16, - 0x39, 0x15, 0xba, 0x25, 0x01, 0xad, 0x64, 0x3a, 0xd4, 0x18, 0x42, 0x85, 0xae, 0x81, 0xab, 0xaa, - 0x65, 0x8a, 0x94, 0x5a, 0x2e, 0xd5, 0xce, 0x96, 0xd5, 0xe6, 0xb9, 0xe2, 0xea, 0x6a, 0xb9, 0xd1, - 0x5c, 0xaa, 0xa8, 0xf5, 0x46, 0x61, 0x13, 0xfd, 0xb3, 0xe4, 0xaf, 0xe6, 0x84, 0xa4, 0xf5, 0xd7, - 0x52, 0xd2, 0x66, 0x1d, 0xbb, 0x6a, 0xf3, 0x23, 0x90, 0xb7, 0x1d, 0xcd, 0xd9, 0xb5, 0x59, 0xab, - 0x7e, 0x4c, 0xff, 0x56, 0x3d, 0x5f, 0x27, 0x99, 0x54, 0x96, 0x19, 0xfd, 0x45, 0x26, 0x49, 0x33, - 0x1d, 0xc1, 0x82, 0x8e, 0x3e, 0x84, 0x88, 0x4f, 0x03, 0xf2, 0xb4, 0xbd, 0x52, 0x6f, 0x16, 0x57, - 0xd5, 0x72, 0x71, 0xf1, 0x3e, 0x7f, 0x19, 0x07, 0x2b, 0x27, 0xe0, 0xd8, 0x46, 0xb5, 0xb8, 0xb0, - 0x5a, 0x26, 0xcd, 0xa5, 0x56, 0xad, 0x96, 0x4b, 0xae, 0xdc, 0x7f, 0x96, 0x6c, 0x9a, 0xb8, 0x16, - 0x34, 0xe1, 0xdb, 0xb5, 0x72, 0x42, 0xf2, 0xff, 0x9a, 0xb0, 0x6f, 0x51, 0xa0, 0x61, 0x61, 0x5a, - 0xa3, 0xc5, 0xe1, 0xf3, 0x42, 0xee, 0x44, 0x42, 0x9c, 0x24, 0xc3, 0xe3, 0x3f, 0x0f, 0x81, 0xc7, - 0x09, 0x38, 0x16, 0xc6, 0x83, 0xb8, 0x15, 0x45, 0xc3, 0xf0, 0xe5, 0x49, 0xc8, 0xd7, 0x71, 0x07, - 0xb7, 0x1c, 0xf4, 0x96, 0x90, 0x31, 0x31, 0x07, 0x92, 0xef, 0xc6, 0x22, 0xe9, 0x6d, 0x6e, 0xfa, - 0x2c, 0xf5, 0x4c, 0x9f, 0x63, 0xcc, 0x00, 0x39, 0x91, 0x19, 0x90, 0x4d, 0xc1, 0x0c, 0xc8, 0x0d, - 0x6f, 0x06, 0xe4, 0x07, 0x99, 0x01, 0xe8, 0xb5, 0xf9, 0xa4, 0xbd, 0x04, 0x15, 0xf5, 0xe1, 0x0e, - 0xfe, 0xff, 0x33, 0x9b, 0xa4, 0x57, 0xe9, 0xcb, 0x71, 0x32, 0x2d, 0xfe, 0x9e, 0x9c, 0xc2, 0xf2, - 0x83, 0x72, 0x2d, 0x5c, 0x1d, 0xbc, 0x37, 0xcb, 0xcf, 0xa8, 0xd4, 0x1b, 0x75, 0x32, 0xe2, 0x97, - 0x6a, 0xaa, 0xba, 0xb1, 0x4e, 0xd7, 0x90, 0x4f, 0x82, 0x12, 0x50, 0x51, 0x37, 0xaa, 0x74, 0x7c, - 0xdf, 0xe2, 0xa9, 0x2f, 0x55, 0xaa, 0x8b, 0x4d, 0xbf, 0xcd, 0x54, 0x97, 0x6a, 0x85, 0x6d, 0x77, - 0xca, 0x16, 0xa2, 0xee, 0x0e, 0xd0, 0xac, 0x84, 0x62, 0x75, 0xb1, 0xb9, 0x56, 0x2d, 0xaf, 0xd5, - 0xaa, 0x95, 0x12, 0x49, 0xaf, 0x97, 0x1b, 0x05, 0xdd, 0x1d, 0x68, 0x7a, 0x2c, 0x8a, 0x7a, 0xb9, - 0xa8, 0x96, 0x56, 0xca, 0x2a, 0x2d, 0xf2, 0x7e, 0xe5, 0x7a, 0x38, 0x53, 0xac, 0xd6, 0x1a, 0x6e, - 0x4a, 0xb1, 0x7a, 0x5f, 0xe3, 0xbe, 0xf5, 0x72, 0x73, 0x5d, 0xad, 0x95, 0xca, 0xf5, 0xba, 0xdb, - 0x4e, 0x99, 0xfd, 0x51, 0xe8, 0x28, 0x4f, 0x87, 0xdb, 0x43, 0xac, 0x95, 0x1b, 0x64, 0xc3, 0x72, - 0xad, 0x46, 0x7c, 0x56, 0x16, 0xcb, 0xcd, 0x95, 0x62, 0xbd, 0x59, 0xa9, 0x96, 0x6a, 0x6b, 0xeb, - 0xc5, 0x46, 0xc5, 0x6d, 0xce, 0xeb, 0x6a, 0xad, 0x51, 0x6b, 0x9e, 0x2d, 0xab, 0xf5, 0x4a, 0xad, - 0x5a, 0x30, 0xdc, 0x2a, 0x87, 0xda, 0xbf, 0xd7, 0x0f, 0x9b, 0xca, 0x55, 0x70, 0xca, 0x4b, 0x5f, - 0xad, 0xb9, 0x82, 0x0e, 0x59, 0x24, 0xdd, 0x54, 0x2d, 0x92, 0x7f, 0x95, 0x20, 0x5b, 0x77, 0xcc, - 0x2e, 0xfa, 0xe1, 0xa0, 0x83, 0x39, 0x0d, 0x60, 0x91, 0xfd, 0x47, 0x77, 0x16, 0xc6, 0xe6, 0x65, - 0xa1, 0x14, 0xf4, 0x07, 0xc2, 0x9b, 0x26, 0x41, 0x9f, 0x6d, 0x76, 0x23, 0x6c, 0x95, 0xef, 0x88, - 0x9d, 0x22, 0x89, 0x26, 0x94, 0x4c, 0xdf, 0x7f, 0x61, 0x98, 0x6d, 0x11, 0x04, 0x27, 0x43, 0xb0, - 0xb9, 0xf2, 0xf7, 0x54, 0x02, 0x2b, 0x97, 0xc3, 0x65, 0x3d, 0xca, 0x45, 0x74, 0x6a, 0x53, 0xf9, - 0x21, 0x78, 0x4c, 0x48, 0xbd, 0xcb, 0x6b, 0xb5, 0xb3, 0x65, 0x5f, 0x91, 0x17, 0x8b, 0x8d, 0x62, - 0x61, 0x0b, 0x7d, 0x46, 0x86, 0xec, 0x9a, 0xb9, 0xd7, 0xbb, 0x57, 0x65, 0xe0, 0x8b, 0xa1, 0xb5, - 0x50, 0xef, 0x95, 0xf7, 0x9a, 0x17, 0x12, 0xfb, 0x5a, 0xf4, 0xbe, 0xf4, 0xe7, 0xa5, 0x24, 0x62, - 0x5f, 0x3b, 0xe8, 0x66, 0xf4, 0xdf, 0x0f, 0x23, 0xf6, 0x08, 0xd1, 0x62, 0xe5, 0x0c, 0x9c, 0x0e, - 0x3e, 0x54, 0x16, 0xcb, 0xd5, 0x46, 0x65, 0xe9, 0xbe, 0x40, 0xb8, 0x15, 0x55, 0x48, 0xfc, 0x83, - 0xba, 0xb1, 0xf8, 0x99, 0xc6, 0x29, 0x38, 0x1e, 0x7c, 0x5b, 0x2e, 0x37, 0xbc, 0x2f, 0xf7, 0xa3, - 0x07, 0x73, 0x30, 0x43, 0xbb, 0xf5, 0x8d, 0x6e, 0x5b, 0x73, 0x30, 0x7a, 0x52, 0x80, 0xee, 0x0d, - 0x70, 0xb4, 0xb2, 0xbe, 0x54, 0xaf, 0x3b, 0xa6, 0xa5, 0x6d, 0xe1, 0x62, 0xbb, 0x6d, 0x31, 0x69, - 0xf5, 0x26, 0xa3, 0x77, 0x0a, 0xaf, 0xf3, 0xf1, 0x43, 0x09, 0x2d, 0x33, 0x02, 0xf5, 0x2f, 0x09, - 0xad, 0xcb, 0x09, 0x10, 0x4c, 0x86, 0xfe, 0xfd, 0x23, 0x6e, 0x73, 0xd1, 0xb8, 0x6c, 0x9e, 0x79, - 0x8e, 0x04, 0x53, 0x0d, 0x7d, 0x07, 0x3f, 0xd3, 0x34, 0xb0, 0xad, 0x4c, 0x80, 0xbc, 0xbc, 0xd6, - 0x28, 0x1c, 0x71, 0x1f, 0x5c, 0xa3, 0x2a, 0x43, 0x1e, 0xca, 0x6e, 0x01, 0xee, 0x43, 0xb1, 0x51, - 0x90, 0xdd, 0x87, 0xb5, 0x72, 0xa3, 0x90, 0x75, 0x1f, 0xaa, 0xe5, 0x46, 0x21, 0xe7, 0x3e, 0xac, - 0xaf, 0x36, 0x0a, 0x79, 0xf7, 0xa1, 0x52, 0x6f, 0x14, 0x26, 0xdc, 0x87, 0x85, 0x7a, 0xa3, 0x30, - 0xe9, 0x3e, 0x9c, 0xad, 0x37, 0x0a, 0x53, 0xee, 0x43, 0xa9, 0xd1, 0x28, 0x80, 0xfb, 0x70, 0x4f, - 0xbd, 0x51, 0x98, 0x76, 0x1f, 0x8a, 0xa5, 0x46, 0x61, 0x86, 0x3c, 0x94, 0x1b, 0x85, 0x59, 0xf7, - 0xa1, 0x5e, 0x6f, 0x14, 0xe6, 0x08, 0xe5, 0x7a, 0xa3, 0x70, 0x94, 0x94, 0x55, 0x69, 0x14, 0x0a, - 0xee, 0xc3, 0x4a, 0xbd, 0x51, 0x38, 0x46, 0x32, 0xd7, 0x1b, 0x05, 0x85, 0x14, 0x5a, 0x6f, 0x14, - 0x2e, 0x23, 0x79, 0xea, 0x8d, 0xc2, 0x71, 0x52, 0x44, 0xbd, 0x51, 0x38, 0x41, 0xd8, 0x28, 0x37, - 0x0a, 0x27, 0x49, 0x1e, 0xb5, 0x51, 0xb8, 0x9c, 0x7c, 0xaa, 0x36, 0x0a, 0xa7, 0x08, 0x63, 0xe5, - 0x46, 0xe1, 0x0a, 0xf2, 0xa0, 0x36, 0x0a, 0x88, 0x7c, 0x2a, 0x36, 0x0a, 0x57, 0xa2, 0xc7, 0xc0, - 0xd4, 0x32, 0x76, 0x28, 0x88, 0xa8, 0x00, 0xf2, 0x32, 0x76, 0xc2, 0x66, 0xfc, 0x57, 0x64, 0xb8, - 0x9c, 0x4d, 0xfd, 0x96, 0x2c, 0x73, 0x67, 0x15, 0x6f, 0x69, 0xad, 0x4b, 0xe5, 0x07, 0x5c, 0x13, - 0x2a, 0xbc, 0x2f, 0xab, 0x40, 0xb6, 0x1b, 0x74, 0x46, 0xe4, 0x39, 0xd6, 0xe2, 0xf4, 0x16, 0xa3, - 0xe4, 0x60, 0x31, 0x8a, 0x59, 0x64, 0xff, 0x14, 0xd6, 0x68, 0x6e, 0xfd, 0x38, 0xd3, 0xb3, 0x7e, - 0xec, 0x36, 0x93, 0x2e, 0xb6, 0x6c, 0xd3, 0xd0, 0x3a, 0x75, 0xb6, 0x71, 0x4f, 0x57, 0xbd, 0x7a, - 0x93, 0x95, 0x1f, 0xf3, 0x5a, 0x06, 0xb5, 0xca, 0x9e, 0x16, 0x37, 0xc3, 0xed, 0xad, 0x66, 0x44, - 0x23, 0xf9, 0xb8, 0xdf, 0x48, 0x1a, 0x5c, 0x23, 0xb9, 0xfb, 0x00, 0xb4, 0x93, 0xb5, 0x97, 0xca, - 0x70, 0x53, 0x8b, 0xc0, 0xad, 0xd5, 0x5b, 0xae, 0x96, 0xd1, 0x67, 0x24, 0x38, 0x59, 0x36, 0xfa, - 0x59, 0xf8, 0x61, 0x5d, 0x78, 0x53, 0x18, 0x9a, 0x75, 0x5e, 0xa4, 0xb7, 0xf7, 0xad, 0x76, 0x7f, - 0x9a, 0x11, 0x12, 0xfd, 0xa4, 0x2f, 0xd1, 0x3a, 0x27, 0xd1, 0xbb, 0x86, 0x27, 0x9d, 0x4c, 0xa0, - 0xd5, 0x91, 0x76, 0x40, 0x59, 0xf4, 0xf5, 0x2c, 0x3c, 0x86, 0xfa, 0xde, 0x30, 0x0e, 0x69, 0x2b, - 0x2b, 0x1a, 0x6d, 0x15, 0xdb, 0x8e, 0x66, 0x39, 0xdc, 0x79, 0xe8, 0x9e, 0xa9, 0x54, 0x26, 0x85, - 0xa9, 0x94, 0x34, 0x70, 0x2a, 0x85, 0xde, 0x11, 0x36, 0x1f, 0xce, 0xf1, 0x18, 0x17, 0xfb, 0xf7, - 0xff, 0x71, 0x35, 0x8c, 0x82, 0xda, 0xb7, 0x2b, 0x7e, 0x9c, 0x83, 0x7a, 0xe9, 0xc0, 0x25, 0x24, - 0x43, 0xfc, 0x0f, 0x46, 0x6b, 0xe7, 0x65, 0xc3, 0xdf, 0x78, 0xa3, 0xa4, 0xd0, 0x4e, 0xd5, 0x40, - 0xff, 0xd4, 0x04, 0x4c, 0x91, 0xb6, 0xb0, 0xaa, 0x1b, 0x17, 0xd0, 0xc3, 0x32, 0xcc, 0x54, 0xf1, - 0xc5, 0xd2, 0xb6, 0xd6, 0xe9, 0x60, 0x63, 0x0b, 0x87, 0xcd, 0xf6, 0x53, 0x30, 0xa1, 0x75, 0xbb, - 0xd5, 0x60, 0x9f, 0xc1, 0x7b, 0x65, 0xfd, 0xef, 0xd7, 0xfa, 0x36, 0xf2, 0x4c, 0x4c, 0x23, 0xf7, - 0xcb, 0x9d, 0x0f, 0x97, 0x19, 0x31, 0x43, 0xbe, 0x06, 0xa6, 0x5b, 0x5e, 0x16, 0xff, 0xdc, 0x44, - 0x38, 0x09, 0xfd, 0x6d, 0xa2, 0x6e, 0x40, 0xa8, 0xf0, 0x64, 0x4a, 0x81, 0x47, 0x6c, 0x87, 0x9c, - 0x80, 0x63, 0x8d, 0x5a, 0xad, 0xb9, 0x56, 0xac, 0xde, 0x17, 0x9c, 0x57, 0xde, 0x44, 0x2f, 0xcf, - 0xc2, 0x5c, 0xdd, 0xec, 0xec, 0xe1, 0x00, 0xa6, 0x0a, 0xe7, 0x90, 0x13, 0x96, 0x53, 0x66, 0x9f, - 0x9c, 0x94, 0x93, 0x90, 0xd7, 0x0c, 0xfb, 0x22, 0xf6, 0x6c, 0x43, 0xf6, 0xc6, 0x60, 0x7c, 0x7f, - 0xb8, 0x1d, 0xab, 0x3c, 0x8c, 0x77, 0x0c, 0x90, 0x24, 0xcf, 0x55, 0x04, 0x90, 0x67, 0x60, 0xc6, - 0xa6, 0x9b, 0x85, 0x8d, 0xd0, 0x9e, 0x30, 0x97, 0x46, 0x58, 0xa4, 0xbb, 0xd5, 0x32, 0x63, 0x91, - 0xbc, 0xa1, 0x87, 0xfd, 0xe6, 0xbf, 0xc1, 0x41, 0x5c, 0x3c, 0x08, 0x63, 0xc9, 0x40, 0x7e, 0xe5, - 0xa8, 0x67, 0x78, 0xa7, 0xe0, 0x38, 0x6b, 0xb5, 0xcd, 0xd2, 0x4a, 0x71, 0x75, 0xb5, 0x5c, 0x5d, - 0x2e, 0x37, 0x2b, 0x8b, 0x74, 0xab, 0x22, 0x48, 0x29, 0x36, 0x1a, 0xe5, 0xb5, 0xf5, 0x46, 0xbd, - 0x59, 0x7e, 0x46, 0xa9, 0x5c, 0x5e, 0x24, 0x2e, 0x71, 0xe4, 0x4c, 0x8b, 0xe7, 0xbc, 0x58, 0xac, - 0xd6, 0xcf, 0x95, 0xd5, 0xc2, 0xf6, 0x99, 0x22, 0x4c, 0x87, 0xfa, 0x79, 0x97, 0xbb, 0x45, 0xbc, - 0xa9, 0xed, 0x76, 0x98, 0xad, 0x56, 0x38, 0xe2, 0x72, 0x47, 0x64, 0x53, 0x33, 0x3a, 0x97, 0x0a, - 0x19, 0xa5, 0x00, 0x33, 0xe1, 0x2e, 0xbd, 0x20, 0xa1, 0xb7, 0x5e, 0x05, 0x53, 0xe7, 0x4c, 0xeb, - 0x02, 0xf1, 0xe3, 0x42, 0xef, 0xa1, 0x71, 0x4d, 0xbc, 0x13, 0xa2, 0xa1, 0x81, 0xfd, 0x95, 0xe2, - 0xde, 0x02, 0x1e, 0xb5, 0xf9, 0x81, 0xa7, 0x40, 0xaf, 0x81, 0xe9, 0x8b, 0x5e, 0xee, 0xa0, 0xa5, - 0x87, 0x92, 0xd0, 0x6f, 0x88, 0xed, 0xff, 0x0f, 0x2e, 0x32, 0xfd, 0xfd, 0xe9, 0xb7, 0x48, 0x90, - 0x5f, 0xc6, 0x4e, 0xb1, 0xd3, 0x09, 0xcb, 0xed, 0xc5, 0xc2, 0x27, 0x7b, 0xb8, 0x4a, 0x14, 0x3b, - 0x9d, 0xe8, 0x46, 0x15, 0x12, 0x90, 0xe7, 0x81, 0xce, 0xa5, 0x09, 0xfa, 0xcd, 0x0d, 0x28, 0x30, - 0x7d, 0x89, 0x7d, 0x50, 0xf6, 0xf7, 0xb8, 0x1f, 0x09, 0x59, 0x39, 0x4f, 0x0c, 0x62, 0xda, 0x64, - 0xe2, 0xf7, 0xca, 0xbd, 0x7c, 0xca, 0xbd, 0x30, 0xb1, 0x6b, 0xe3, 0x92, 0x66, 0x63, 0xc2, 0x5b, - 0x6f, 0x4d, 0x6b, 0xe7, 0xef, 0xc7, 0x2d, 0x67, 0xbe, 0xb2, 0xe3, 0x1a, 0xd4, 0x1b, 0x34, 0xa3, - 0x1f, 0x26, 0x86, 0xbd, 0xab, 0x1e, 0x05, 0x77, 0x52, 0x72, 0x51, 0x77, 0xb6, 0x4b, 0xdb, 0x9a, - 0xc3, 0xd6, 0xb6, 0xfd, 0x77, 0xf4, 0xfc, 0x21, 0xe0, 0x8c, 0xdd, 0x0b, 0x8e, 0x3c, 0x20, 0x98, - 0x18, 0xc4, 0x11, 0x6c, 0xe0, 0x0e, 0x03, 0xe2, 0x3f, 0x48, 0x90, 0xad, 0x75, 0xb1, 0x21, 0x7c, - 0x1a, 0xc6, 0x97, 0xad, 0xd4, 0x23, 0xdb, 0x87, 0xc5, 0xbd, 0xc3, 0xfc, 0x4a, 0xbb, 0x25, 0x47, - 0x48, 0xf6, 0x66, 0xc8, 0xea, 0xc6, 0xa6, 0xc9, 0x0c, 0xd3, 0x2b, 0x23, 0x36, 0x81, 0x2a, 0xc6, - 0xa6, 0xa9, 0x92, 0x8c, 0xa2, 0x8e, 0x61, 0x71, 0x65, 0xa7, 0x2f, 0xee, 0x6f, 0x4c, 0x42, 0x9e, - 0xaa, 0x33, 0x7a, 0x91, 0x0c, 0x72, 0xb1, 0xdd, 0x8e, 0x10, 0xbc, 0xb4, 0x4f, 0xf0, 0x26, 0xf9, - 0xcd, 0xc7, 0xc4, 0x7f, 0xe7, 0x83, 0x99, 0x08, 0xf6, 0xed, 0xac, 0x49, 0x15, 0xdb, 0xed, 0x68, - 0x1f, 0x54, 0xbf, 0x40, 0x89, 0x2f, 0x30, 0xdc, 0xc2, 0x65, 0xb1, 0x16, 0x9e, 0x78, 0x20, 0x88, - 0xe4, 0x2f, 0x7d, 0x88, 0xfe, 0x49, 0x82, 0x89, 0x55, 0xdd, 0x76, 0x5c, 0x6c, 0x8a, 0x22, 0xd8, - 0x5c, 0x05, 0x53, 0x9e, 0x68, 0xdc, 0x2e, 0xcf, 0xed, 0xcf, 0x83, 0x04, 0xf4, 0x9a, 0x30, 0x3a, - 0xf7, 0xf0, 0xe8, 0x3c, 0x39, 0xbe, 0xf6, 0x8c, 0x8b, 0xe8, 0x53, 0x06, 0x41, 0xb1, 0x52, 0x6f, - 0xb1, 0xbf, 0xe5, 0x0b, 0x7c, 0x8d, 0x13, 0xf8, 0x6d, 0xc3, 0x14, 0x99, 0xbe, 0xd0, 0x3f, 0x2b, - 0x01, 0xb8, 0x65, 0xb3, 0xa3, 0x5c, 0x8f, 0xe3, 0x0e, 0x68, 0xc7, 0x48, 0xf7, 0xe5, 0x61, 0xe9, - 0xae, 0xf1, 0xd2, 0xfd, 0xd1, 0xc1, 0x55, 0x8d, 0x3b, 0xb2, 0xa5, 0x14, 0x40, 0xd6, 0x7d, 0xd1, - 0xba, 0x8f, 0xe8, 0x2d, 0xbe, 0x50, 0xd7, 0x39, 0xa1, 0xde, 0x31, 0x64, 0x49, 0xe9, 0xcb, 0xf5, - 0x2f, 0x25, 0x98, 0xa8, 0x63, 0xc7, 0xed, 0x26, 0xd1, 0x59, 0x91, 0x1e, 0x3e, 0xd4, 0xb6, 0x25, - 0xc1, 0xb6, 0xfd, 0xed, 0x8c, 0x68, 0xa0, 0x97, 0x40, 0x32, 0x8c, 0xa7, 0x88, 0xc5, 0x83, 0x47, - 0x84, 0x02, 0xbd, 0x0c, 0xa2, 0x96, 0xbe, 0x74, 0xdf, 0x24, 0xf9, 0x1b, 0xf3, 0xfc, 0x49, 0x8b, - 0xb0, 0x59, 0x9c, 0xd9, 0x6f, 0x16, 0x8b, 0x9f, 0xb4, 0x08, 0xd7, 0x31, 0x7a, 0x57, 0x3a, 0xb1, - 0xb1, 0x31, 0x82, 0x0d, 0xe3, 0x61, 0xe4, 0xf5, 0x6c, 0x19, 0xf2, 0x6c, 0x65, 0xf9, 0xae, 0xf8, - 0x95, 0xe5, 0xc1, 0x53, 0x8b, 0x77, 0x0f, 0x61, 0xca, 0xc5, 0x2d, 0xf7, 0xfa, 0x6c, 0x48, 0x21, - 0x36, 0x6e, 0x82, 0x1c, 0x89, 0x44, 0xc9, 0xc6, 0xb9, 0x60, 0xaf, 0xdf, 0x23, 0x51, 0x76, 0xbf, - 0xaa, 0x34, 0x53, 0x62, 0x14, 0x46, 0xb0, 0x42, 0x3c, 0x0c, 0x0a, 0xbf, 0xa6, 0x00, 0xac, 0xef, - 0x9e, 0xef, 0xe8, 0xf6, 0xb6, 0x6e, 0x6c, 0xa1, 0x2f, 0x67, 0x60, 0x86, 0xbd, 0xd2, 0x80, 0x8a, - 0xb1, 0xe6, 0x5f, 0xa4, 0x51, 0x50, 0x00, 0x79, 0xd7, 0xd2, 0xd9, 0x32, 0x80, 0xfb, 0xa8, 0xdc, - 0xe9, 0x3b, 0xf2, 0x64, 0x7b, 0x8e, 0xd2, 0xbb, 0x62, 0x08, 0x38, 0x98, 0x0f, 0x95, 0x1e, 0x38, - 0xf4, 0x84, 0xa3, 0x66, 0xe6, 0xf8, 0xa8, 0x99, 0xdc, 0xf9, 0xba, 0x7c, 0xcf, 0xf9, 0x3a, 0x17, - 0x47, 0x5b, 0x7f, 0x26, 0x26, 0xce, 0xa5, 0xb2, 0x4a, 0x9e, 0xd1, 0x07, 0x82, 0xa9, 0x8a, 0x29, - 0x68, 0xe7, 0x26, 0xa8, 0xe8, 0x55, 0x30, 0x75, 0xbf, 0xa9, 0x1b, 0x64, 0x2b, 0x82, 0x39, 0x0f, - 0x07, 0x09, 0xe8, 0xc3, 0xc2, 0x71, 0xb0, 0x42, 0x22, 0x89, 0x9d, 0x74, 0x30, 0x0e, 0x24, 0x9f, - 0x83, 0xd0, 0x7e, 0x5e, 0x5c, 0x87, 0x39, 0x88, 0x7e, 0x32, 0xd5, 0xdb, 0x19, 0x62, 0x79, 0x45, - 0x81, 0x39, 0xef, 0x5c, 0x61, 0x6d, 0xe1, 0x9e, 0x72, 0xa9, 0x51, 0xc0, 0xfb, 0xcf, 0x1a, 0x92, - 0x53, 0x85, 0xf4, 0x04, 0x61, 0xb0, 0x84, 0x82, 0xfe, 0x87, 0x04, 0x79, 0x66, 0x1d, 0xdc, 0x75, - 0x40, 0x08, 0xd1, 0x2b, 0x86, 0x81, 0x24, 0xf6, 0x78, 0xf7, 0x27, 0x92, 0x02, 0x30, 0x02, 0x7b, - 0xe0, 0xbe, 0xd4, 0x00, 0x40, 0xff, 0x22, 0x41, 0xd6, 0xb5, 0x5a, 0xc4, 0x0e, 0xcf, 0x7e, 0x5c, - 0xd8, 0x6d, 0x35, 0x24, 0x00, 0x97, 0x7c, 0x84, 0x7e, 0x2f, 0xc0, 0x54, 0x97, 0x66, 0xf4, 0x8f, - 0x6e, 0x5f, 0x27, 0xd0, 0x77, 0x60, 0x35, 0xf8, 0x0d, 0xbd, 0x4b, 0xc8, 0xf5, 0x35, 0x9e, 0x9f, - 0x64, 0x70, 0x94, 0x47, 0x71, 0xce, 0x76, 0x13, 0x7d, 0x57, 0x02, 0x50, 0xb1, 0x6d, 0x76, 0xf6, - 0xf0, 0x86, 0xa5, 0xa3, 0x2b, 0x03, 0x00, 0x58, 0xb3, 0xcf, 0x04, 0xcd, 0xfe, 0x53, 0x61, 0xc1, - 0x2f, 0xf3, 0x82, 0x7f, 0x62, 0xb4, 0xe6, 0x79, 0xc4, 0x23, 0xc4, 0xff, 0x74, 0x98, 0x60, 0x72, - 0x64, 0x26, 0xa0, 0x98, 0xf0, 0xbd, 0x9f, 0xd0, 0x7b, 0x7d, 0xd1, 0xdf, 0xc3, 0x89, 0xfe, 0x29, - 0x89, 0x39, 0x4a, 0x06, 0x40, 0x69, 0x08, 0x00, 0x8e, 0xc2, 0xb4, 0x07, 0xc0, 0x86, 0x5a, 0x29, - 0x60, 0xf4, 0x76, 0x99, 0xec, 0x96, 0xd3, 0xb1, 0xe8, 0xe0, 0x3d, 0xcd, 0x57, 0x85, 0xe7, 0xe6, - 0x21, 0x79, 0xf8, 0xe5, 0xa7, 0x04, 0xd0, 0x9f, 0x08, 0x4d, 0xc6, 0x05, 0x18, 0x7a, 0xb4, 0xf4, - 0x57, 0x67, 0xca, 0x30, 0xcb, 0x19, 0x11, 0xca, 0x29, 0x38, 0xce, 0x25, 0xd0, 0xf1, 0xae, 0x5d, - 0x38, 0xa2, 0x20, 0x38, 0xc9, 0x7d, 0x61, 0x2f, 0xb8, 0x5d, 0xc8, 0xa0, 0x3f, 0xfb, 0x4c, 0xc6, - 0x5f, 0x9e, 0x79, 0x77, 0x96, 0x2d, 0x8c, 0x7d, 0x94, 0x8f, 0x16, 0xd6, 0x32, 0x0d, 0x07, 0x3f, - 0x10, 0xf2, 0x56, 0xf0, 0x13, 0x62, 0xad, 0x86, 0x53, 0x30, 0xe1, 0x58, 0x61, 0x0f, 0x06, 0xef, - 0x35, 0xac, 0x58, 0x39, 0x5e, 0xb1, 0xaa, 0x70, 0x46, 0x37, 0x5a, 0x9d, 0xdd, 0x36, 0x56, 0x71, - 0x47, 0x73, 0x65, 0x68, 0x17, 0xed, 0x45, 0xdc, 0xc5, 0x46, 0x1b, 0x1b, 0x0e, 0xe5, 0xd3, 0x3b, - 0xad, 0x24, 0x90, 0x93, 0x57, 0xc6, 0x3b, 0x79, 0x65, 0x7c, 0x5c, 0xbf, 0x15, 0xd7, 0x98, 0xe5, - 0xb9, 0xdb, 0x00, 0x68, 0xdd, 0xce, 0xea, 0xf8, 0x22, 0x53, 0xc3, 0x2b, 0x7a, 0x16, 0xe9, 0x6a, - 0x7e, 0x06, 0x35, 0x94, 0x19, 0x7d, 0xd1, 0x57, 0xbf, 0xbb, 0x39, 0xf5, 0xbb, 0x49, 0x90, 0x85, - 0x64, 0x5a, 0xd7, 0x1d, 0x42, 0xeb, 0x66, 0x61, 0x2a, 0xd8, 0xbb, 0x95, 0x95, 0x2b, 0xe0, 0x84, - 0xe7, 0x0d, 0x5a, 0x2d, 0x97, 0x17, 0xeb, 0xcd, 0x8d, 0xf5, 0x65, 0xb5, 0xb8, 0x58, 0x2e, 0x80, - 0xab, 0x9f, 0x54, 0x2f, 0x7d, 0x27, 0xce, 0x2c, 0xfa, 0x73, 0x09, 0x72, 0xe4, 0xa8, 0x1d, 0xfa, - 0xc9, 0x11, 0x69, 0x8e, 0xcd, 0xf9, 0xbe, 0xf8, 0xe3, 0xae, 0x78, 0x14, 0x6f, 0x26, 0x4c, 0xc2, - 0xd5, 0x81, 0xa2, 0x78, 0xc7, 0x10, 0x4a, 0x7f, 0xe2, 0xe2, 0x36, 0xc9, 0xfa, 0xb6, 0x79, 0xf1, - 0x07, 0xb9, 0x49, 0xba, 0xf5, 0x3f, 0xe4, 0x26, 0xd9, 0x87, 0x85, 0xb1, 0x37, 0xc9, 0x3e, 0xed, - 0x2e, 0xa6, 0x99, 0xa2, 0x67, 0xe5, 0xfc, 0xf9, 0xdf, 0x73, 0xa4, 0x03, 0x6d, 0x55, 0x15, 0x61, - 0x56, 0x37, 0x1c, 0x6c, 0x19, 0x5a, 0x67, 0xa9, 0xa3, 0x6d, 0x79, 0xf6, 0x69, 0xef, 0xfe, 0x44, - 0x25, 0x94, 0x47, 0xe5, 0xff, 0x50, 0x4e, 0x03, 0x38, 0x78, 0xa7, 0xdb, 0xd1, 0x9c, 0x40, 0xf5, - 0x42, 0x29, 0x61, 0xed, 0xcb, 0xf2, 0xda, 0x77, 0x0b, 0x5c, 0x46, 0x41, 0x6b, 0x5c, 0xea, 0xe2, - 0x0d, 0x43, 0xff, 0xa9, 0x5d, 0x12, 0x5c, 0x92, 0xea, 0x68, 0xbf, 0x4f, 0xdc, 0x86, 0x4d, 0xbe, - 0x67, 0xc3, 0xe6, 0x1f, 0x84, 0x83, 0x56, 0x78, 0xad, 0x7e, 0x40, 0xd0, 0x0a, 0xbf, 0xa5, 0xc9, - 0x3d, 0x2d, 0xcd, 0x5f, 0x46, 0xc9, 0x0a, 0x2c, 0xa3, 0x84, 0x51, 0xc9, 0x09, 0x2e, 0x41, 0xbe, - 0x5a, 0x28, 0x2a, 0x46, 0x5c, 0x35, 0xc6, 0xb0, 0xc4, 0x2d, 0xc3, 0x1c, 0x2d, 0x7a, 0xc1, 0x34, - 0x2f, 0xec, 0x68, 0xd6, 0x05, 0x64, 0x1d, 0x48, 0x15, 0x63, 0x77, 0x8b, 0x22, 0xb7, 0x40, 0x3f, - 0x29, 0x3c, 0x67, 0xe0, 0xc4, 0xe5, 0xf1, 0x3c, 0x9e, 0xed, 0xa2, 0x37, 0x08, 0x4d, 0x21, 0x44, - 0x18, 0x4c, 0x1f, 0xd7, 0x3f, 0xf2, 0x71, 0xf5, 0x3a, 0xfa, 0xf0, 0x4a, 0xfb, 0x28, 0x71, 0x45, - 0x5f, 0x1a, 0x0e, 0x3b, 0x8f, 0xaf, 0x21, 0xb0, 0x2b, 0x80, 0x7c, 0xc1, 0x77, 0xee, 0x71, 0x1f, - 0xc3, 0x15, 0xca, 0xa6, 0x87, 0x66, 0x04, 0xcb, 0x63, 0x41, 0xf3, 0x38, 0xcf, 0x42, 0xad, 0x9b, - 0x2a, 0xa6, 0x5f, 0x10, 0xde, 0xc1, 0xea, 0x2b, 0x20, 0xca, 0xdd, 0x78, 0x5a, 0xa5, 0xd8, 0xf6, - 0x97, 0x38, 0x9b, 0xe9, 0xa3, 0xf9, 0x50, 0x0e, 0xa6, 0xbc, 0xb0, 0x22, 0xe4, 0xd6, 0x1b, 0x1f, - 0xc3, 0x93, 0x90, 0xb7, 0xcd, 0x5d, 0xab, 0x85, 0xd9, 0x9e, 0x22, 0x7b, 0x1b, 0x62, 0xff, 0x6b, - 0xe0, 0x78, 0xbe, 0xcf, 0x64, 0xc8, 0x26, 0x36, 0x19, 0xa2, 0x0d, 0xd2, 0xb8, 0x01, 0xfe, 0xf9, - 0xc2, 0xa1, 0xca, 0x39, 0xcc, 0xea, 0xd8, 0x79, 0x34, 0x8e, 0xf1, 0xbf, 0x2f, 0xb4, 0xbb, 0x32, - 0xa0, 0x26, 0xc9, 0x54, 0xae, 0x36, 0x84, 0xa1, 0x7a, 0x25, 0x5c, 0xee, 0xe5, 0x60, 0x16, 0x2a, - 0xb1, 0x48, 0x37, 0xd4, 0xd5, 0x82, 0x8c, 0x9e, 0x9d, 0x85, 0x02, 0x65, 0xad, 0xe6, 0x1b, 0x6b, - 0xe8, 0xc5, 0x99, 0xc3, 0xb6, 0x48, 0xa3, 0xa7, 0x98, 0x9f, 0x96, 0x44, 0xc3, 0xa1, 0x72, 0x82, - 0x0f, 0x6a, 0x17, 0xa1, 0x49, 0x43, 0x34, 0xb3, 0x18, 0xe5, 0x43, 0xbf, 0x99, 0x11, 0x89, 0xae, - 0x2a, 0xc6, 0x62, 0xfa, 0xbd, 0xd2, 0xe7, 0xb2, 0x5e, 0x74, 0xa8, 0x25, 0xcb, 0xdc, 0xd9, 0xb0, - 0x3a, 0xe8, 0xff, 0x16, 0x0a, 0x5e, 0x1d, 0x61, 0xfe, 0x4b, 0xd1, 0xe6, 0x3f, 0x59, 0x32, 0xee, - 0x04, 0x7b, 0x55, 0x9d, 0x21, 0x86, 0x6f, 0xe5, 0x7a, 0x98, 0xd3, 0xda, 0xed, 0x75, 0x6d, 0x0b, - 0x97, 0xdc, 0x79, 0xb5, 0xe1, 0xb0, 0xc8, 0x31, 0x3d, 0xa9, 0xb1, 0x5d, 0x91, 0xf8, 0x3a, 0x28, - 0x07, 0x12, 0x93, 0xcf, 0x58, 0x86, 0x37, 0x77, 0x48, 0x68, 0x6d, 0x6b, 0x41, 0x1c, 0x2b, 0xf6, - 0x26, 0xe8, 0xbb, 0x24, 0xc0, 0x77, 0xfa, 0x9a, 0xf5, 0xbb, 0x12, 0x4c, 0xb8, 0xf2, 0x2e, 0xb6, - 0xdb, 0xe8, 0xb1, 0x5c, 0xb8, 0xb7, 0x48, 0xef, 0xb1, 0x9f, 0x17, 0x76, 0xdb, 0xf3, 0x6a, 0x48, - 0xe9, 0x47, 0x60, 0x12, 0x08, 0x51, 0xe2, 0x84, 0x28, 0xe6, 0x9d, 0x17, 0x5b, 0x44, 0xfa, 0xe2, - 0xfb, 0xb8, 0x04, 0xb3, 0xde, 0x3c, 0x62, 0x09, 0x3b, 0xad, 0x6d, 0x74, 0x9b, 0xe8, 0x42, 0x13, - 0x6b, 0x69, 0xfe, 0x9e, 0x6c, 0x07, 0x7d, 0x2f, 0x93, 0x50, 0xe5, 0xb9, 0x92, 0x23, 0x56, 0xe9, - 0x12, 0xe9, 0x62, 0x1c, 0xc1, 0xf4, 0x85, 0xf9, 0x45, 0x09, 0xa0, 0x61, 0xfa, 0x73, 0xdd, 0x03, - 0x48, 0xf2, 0x85, 0xc2, 0xdb, 0xb5, 0xac, 0xe2, 0x41, 0xb1, 0xc9, 0x7b, 0x0e, 0x41, 0xe7, 0xa3, - 0x41, 0x25, 0x8d, 0xa5, 0xad, 0x4f, 0x2d, 0xee, 0x76, 0x3b, 0x7a, 0x4b, 0x73, 0x7a, 0x3d, 0xe6, - 0xa2, 0xc5, 0x4b, 0xae, 0x84, 0x4c, 0x64, 0x14, 0xfa, 0x65, 0x44, 0xc8, 0x92, 0x86, 0x21, 0x91, - 0xbc, 0x30, 0x24, 0x82, 0x5e, 0x30, 0x03, 0x88, 0x8f, 0x41, 0x3d, 0x65, 0x38, 0x5a, 0xeb, 0x62, - 0x63, 0xc1, 0xc2, 0x5a, 0xbb, 0x65, 0xed, 0xee, 0x9c, 0xb7, 0xc3, 0xee, 0x9e, 0xf1, 0x3a, 0x1a, - 0x5a, 0x3a, 0x96, 0xb8, 0xa5, 0x63, 0xf4, 0x73, 0xb2, 0x68, 0x50, 0x9c, 0xd0, 0x06, 0x47, 0x88, - 0x87, 0x21, 0x86, 0xba, 0x44, 0x4e, 0x4a, 0x3d, 0xab, 0xc4, 0xd9, 0x24, 0xab, 0xc4, 0x6f, 0x14, - 0x0a, 0xb1, 0x23, 0x54, 0xaf, 0xb1, 0xf8, 0x9a, 0xcd, 0xd5, 0xb1, 0x13, 0x01, 0xef, 0x75, 0x30, - 0x7b, 0x3e, 0xf8, 0xe2, 0x43, 0xcc, 0x27, 0xf6, 0xf1, 0x00, 0x7d, 0x53, 0xd2, 0x15, 0x18, 0x9e, - 0x85, 0x08, 0x74, 0x7d, 0x04, 0x25, 0x11, 0x37, 0xb3, 0x44, 0xcb, 0x29, 0xb1, 0xe5, 0xa7, 0x8f, - 0xc2, 0x87, 0x25, 0x98, 0x26, 0x17, 0x5d, 0x2e, 0x5c, 0x22, 0xe7, 0x16, 0x05, 0x8d, 0x92, 0x87, - 0xc2, 0x62, 0x56, 0x20, 0xdb, 0xd1, 0x8d, 0x0b, 0x9e, 0x7f, 0xa0, 0xfb, 0x1c, 0x5c, 0x9b, 0x26, - 0xf5, 0xb9, 0x36, 0xcd, 0xdf, 0xa7, 0xf0, 0xcb, 0x3d, 0xd0, 0x3d, 0xbe, 0x03, 0xc9, 0xa5, 0x2f, - 0xc6, 0xbf, 0xcb, 0x42, 0xbe, 0x8e, 0x35, 0xab, 0xb5, 0x8d, 0xde, 0x2d, 0xf5, 0x9d, 0x2a, 0x4c, - 0xf2, 0x53, 0x85, 0x25, 0x98, 0xd8, 0xd4, 0x3b, 0x0e, 0xb6, 0xa8, 0xcf, 0x74, 0xb8, 0x6b, 0xa7, - 0x4d, 0x7c, 0xa1, 0x63, 0xb6, 0x2e, 0xcc, 0x33, 0xd3, 0x7d, 0xde, 0x0b, 0xb3, 0x39, 0xbf, 0x44, - 0x7e, 0x52, 0xbd, 0x9f, 0x5d, 0x83, 0xd0, 0x36, 0x2d, 0x27, 0xea, 0x06, 0x85, 0x08, 0x2a, 0x75, - 0xd3, 0x72, 0x54, 0xfa, 0xa3, 0x0b, 0xf3, 0xe6, 0x6e, 0xa7, 0xd3, 0xc0, 0x0f, 0x38, 0xde, 0xb4, - 0xcd, 0x7b, 0x77, 0x8d, 0x45, 0x73, 0x73, 0xd3, 0xc6, 0x74, 0xd1, 0x20, 0xa7, 0xb2, 0x37, 0xe5, - 0x38, 0xe4, 0x3a, 0xfa, 0x8e, 0x4e, 0x27, 0x1a, 0x39, 0x95, 0xbe, 0x28, 0x37, 0x42, 0x21, 0x98, - 0xe3, 0x50, 0x46, 0x4f, 0xe5, 0x49, 0xd3, 0xdc, 0x97, 0xee, 0xea, 0xcc, 0x05, 0x7c, 0xc9, 0x3e, - 0x35, 0x41, 0xbe, 0x93, 0x67, 0xfe, 0x80, 0x8a, 0xc8, 0x7e, 0x07, 0x95, 0x78, 0xf4, 0x0c, 0xd6, - 0xc2, 0x2d, 0xd3, 0x6a, 0x7b, 0xb2, 0x89, 0x9e, 0x60, 0xb0, 0x7c, 0xc9, 0x76, 0x29, 0xfa, 0x16, - 0x9e, 0xbe, 0xa6, 0xbd, 0x23, 0xef, 0x76, 0x9b, 0x6e, 0xd1, 0xe7, 0x74, 0x67, 0x7b, 0x0d, 0x3b, - 0x1a, 0xfa, 0x3b, 0xb9, 0xaf, 0xc6, 0x4d, 0xff, 0x6f, 0x8d, 0x1b, 0xa0, 0x71, 0x34, 0x80, 0x92, - 0xb3, 0x6b, 0x19, 0xae, 0x1c, 0x59, 0xc8, 0xd2, 0x50, 0x8a, 0x72, 0x07, 0x5c, 0x11, 0xbc, 0x79, - 0x4b, 0xa5, 0x8b, 0x6c, 0xda, 0x3a, 0x45, 0xb2, 0x47, 0x67, 0x50, 0xd6, 0xe1, 0x5a, 0xfa, 0x71, - 0xa5, 0xb1, 0xb6, 0xba, 0xa2, 0x6f, 0x6d, 0x77, 0xf4, 0xad, 0x6d, 0xc7, 0xae, 0x18, 0xb6, 0x83, - 0xb5, 0x76, 0x6d, 0x53, 0xa5, 0x77, 0x9f, 0x00, 0xa1, 0x23, 0x92, 0x95, 0xf7, 0xa9, 0x16, 0x1b, - 0xdd, 0xc2, 0x9a, 0x12, 0xd1, 0x52, 0x9e, 0xe2, 0xb6, 0x14, 0x7b, 0xb7, 0xe3, 0x63, 0x7a, 0x55, - 0x0f, 0xa6, 0x81, 0xaa, 0xef, 0x76, 0x48, 0x73, 0x21, 0x99, 0x93, 0x8e, 0x73, 0x31, 0x9c, 0xa4, - 0xdf, 0x6c, 0xfe, 0xbf, 0x3c, 0xe4, 0x96, 0x2d, 0xad, 0xbb, 0x8d, 0x9e, 0x1d, 0xea, 0x9f, 0x47, - 0xd5, 0x26, 0x7c, 0xed, 0x94, 0x06, 0x69, 0xa7, 0x3c, 0x40, 0x3b, 0xb3, 0x21, 0xed, 0x8c, 0x5e, - 0x54, 0x3e, 0x03, 0x33, 0x2d, 0xb3, 0xd3, 0xc1, 0x2d, 0x57, 0x1e, 0x95, 0x36, 0x59, 0xcd, 0x99, - 0x52, 0xb9, 0x34, 0x12, 0x8a, 0x18, 0x3b, 0x75, 0xba, 0x86, 0x4e, 0x95, 0x3e, 0x48, 0x40, 0x2f, - 0x96, 0x20, 0x5b, 0x6e, 0x6f, 0x61, 0x6e, 0x9d, 0x3d, 0x13, 0x5a, 0x67, 0x3f, 0x09, 0x79, 0x47, - 0xb3, 0xb6, 0xb0, 0xe3, 0xad, 0x13, 0xd0, 0x37, 0x3f, 0x42, 0xb2, 0x1c, 0x8a, 0x90, 0xfc, 0xa3, - 0x90, 0x75, 0x65, 0xc6, 0xdc, 0xc8, 0xaf, 0xed, 0x07, 0x3f, 0x91, 0xfd, 0xbc, 0x5b, 0xe2, 0xbc, - 0x5b, 0x6b, 0x95, 0xfc, 0xd0, 0x8b, 0x75, 0x6e, 0x1f, 0xd6, 0xe4, 0x1a, 0xc7, 0x96, 0x69, 0x54, - 0x76, 0xb4, 0x2d, 0xcc, 0xaa, 0x19, 0x24, 0x78, 0x5f, 0xcb, 0x3b, 0xe6, 0xfd, 0x3a, 0x0b, 0x56, - 0x1c, 0x24, 0xb8, 0x55, 0xd8, 0xd6, 0xdb, 0x6d, 0x6c, 0xb0, 0x96, 0xcd, 0xde, 0xce, 0x9c, 0x86, - 0xac, 0xcb, 0x83, 0xab, 0x3f, 0xae, 0xb1, 0x50, 0x38, 0xa2, 0xcc, 0xb8, 0xcd, 0x8a, 0x36, 0xde, - 0x42, 0x86, 0x5f, 0x53, 0x15, 0x71, 0xdb, 0xa1, 0x95, 0xeb, 0xdf, 0xb8, 0x9e, 0x00, 0x39, 0xc3, - 0x6c, 0xe3, 0x81, 0x83, 0x10, 0xcd, 0xa5, 0x3c, 0x19, 0x72, 0xb8, 0xed, 0xf6, 0x0a, 0x32, 0xc9, - 0x7e, 0x3a, 0x5e, 0x96, 0x2a, 0xcd, 0x9c, 0xcc, 0x37, 0xa8, 0x1f, 0xb7, 0xe9, 0x37, 0xc0, 0x5f, - 0x9c, 0x80, 0xa3, 0xb4, 0x0f, 0xa8, 0xef, 0x9e, 0x77, 0x49, 0x9d, 0xc7, 0xe8, 0x91, 0xfe, 0x03, - 0xd7, 0x51, 0x5e, 0xd9, 0x8f, 0x43, 0xce, 0xde, 0x3d, 0xef, 0x1b, 0xa1, 0xf4, 0x25, 0xdc, 0x74, - 0xa5, 0x91, 0x0c, 0x67, 0xf2, 0xb0, 0xc3, 0x19, 0x37, 0x34, 0xc9, 0x5e, 0xe3, 0x0f, 0x06, 0x32, - 0x7a, 0x00, 0xc2, 0x1b, 0xc8, 0xfa, 0x0d, 0x43, 0xa7, 0x60, 0x42, 0xdb, 0x74, 0xb0, 0x15, 0x98, - 0x89, 0xec, 0xd5, 0x1d, 0x2a, 0xcf, 0xe3, 0x4d, 0xd3, 0x72, 0xc5, 0x32, 0x45, 0x87, 0x4a, 0xef, - 0x3d, 0xd4, 0x72, 0x81, 0xdb, 0x21, 0xbb, 0x09, 0x8e, 0x19, 0xe6, 0x22, 0xee, 0x32, 0x39, 0x53, - 0x14, 0x67, 0x49, 0x0b, 0xd8, 0xff, 0x61, 0x5f, 0x57, 0x32, 0xb7, 0xbf, 0x2b, 0x41, 0x9f, 0x4a, - 0x3a, 0x67, 0xee, 0x01, 0x7a, 0x64, 0x16, 0x9a, 0xf2, 0x34, 0x98, 0x69, 0x33, 0x17, 0xad, 0x96, - 0xee, 0xb7, 0x92, 0xc8, 0xff, 0xb8, 0xcc, 0x81, 0x22, 0x65, 0xc3, 0x8a, 0xb4, 0x0c, 0x93, 0xe4, - 0xa8, 0xb2, 0xab, 0x49, 0xb9, 0x1e, 0x97, 0x78, 0x32, 0xad, 0xf3, 0x2b, 0x15, 0x12, 0xdb, 0x7c, - 0x89, 0xfd, 0xa2, 0xfa, 0x3f, 0x27, 0x9b, 0x7d, 0xc7, 0x4b, 0x28, 0xfd, 0xe6, 0xf8, 0x5b, 0x79, - 0xb8, 0xa2, 0x64, 0x99, 0xb6, 0x4d, 0xce, 0xc0, 0xf4, 0x36, 0xcc, 0xd7, 0x4b, 0xdc, 0x5d, 0x09, - 0x8f, 0xea, 0xe6, 0xd7, 0xaf, 0x41, 0x8d, 0xaf, 0x69, 0x7c, 0x55, 0x38, 0xc8, 0x8b, 0xbf, 0xff, - 0x10, 0x21, 0xf4, 0x1f, 0x8c, 0x46, 0xf2, 0x8e, 0x8c, 0x48, 0xdc, 0x99, 0x84, 0xb2, 0x4a, 0xbf, - 0xb9, 0x7c, 0x41, 0x82, 0x2b, 0x7b, 0xb9, 0xd9, 0x30, 0x6c, 0xbf, 0xc1, 0x5c, 0x3d, 0xa0, 0xbd, - 0xf0, 0x71, 0x4a, 0x62, 0x6f, 0x29, 0x8c, 0xa8, 0x7b, 0xa8, 0xb4, 0x88, 0xc5, 0x92, 0xe0, 0x44, - 0x4d, 0xdc, 0x2d, 0x85, 0x89, 0xc9, 0xa7, 0x2f, 0xdc, 0x4f, 0x67, 0xe1, 0xe8, 0xb2, 0x65, 0xee, - 0x76, 0xed, 0xa0, 0x07, 0xfa, 0xeb, 0xfe, 0x1b, 0xae, 0x79, 0x11, 0xd3, 0xe0, 0x1a, 0x98, 0xb6, - 0x98, 0x35, 0x17, 0x6c, 0xbf, 0x86, 0x93, 0xc2, 0xbd, 0x97, 0x7c, 0x90, 0xde, 0x2b, 0xe8, 0x67, - 0xb2, 0x5c, 0x3f, 0xd3, 0xdb, 0x73, 0xe4, 0xfa, 0xf4, 0x1c, 0x7f, 0x25, 0x25, 0x1c, 0x54, 0x7b, - 0x44, 0x14, 0xd1, 0x5f, 0x94, 0x20, 0xbf, 0x45, 0x32, 0xb2, 0xee, 0xe2, 0xf1, 0x62, 0x35, 0x23, - 0xc4, 0x55, 0xf6, 0x6b, 0x20, 0x57, 0x39, 0xac, 0xc3, 0x89, 0x06, 0xb8, 0x78, 0x6e, 0xd3, 0x57, - 0xaa, 0x87, 0xb3, 0x30, 0xe3, 0x97, 0x5e, 0x69, 0xdb, 0xe8, 0xa1, 0xfe, 0x1a, 0x35, 0x2b, 0xa2, - 0x51, 0xfb, 0xd6, 0x99, 0xfd, 0x51, 0x47, 0x0e, 0x8d, 0x3a, 0x7d, 0x47, 0x97, 0x99, 0x88, 0xd1, - 0x05, 0x3d, 0x4b, 0x16, 0xbd, 0x6d, 0x88, 0xef, 0x5a, 0x49, 0x6d, 0x1e, 0xcd, 0x83, 0x85, 0xe0, - 0x9d, 0x47, 0x83, 0x6b, 0x95, 0xbe, 0x92, 0xbc, 0x4f, 0x82, 0x63, 0xfb, 0x3b, 0xf3, 0x1f, 0xe2, - 0xbd, 0xd0, 0xdc, 0x3a, 0xd9, 0xbe, 0x17, 0x1a, 0x79, 0xe3, 0x37, 0xe9, 0x62, 0x83, 0x86, 0x70, - 0xf6, 0xde, 0xe0, 0x4e, 0x5c, 0x2c, 0x2c, 0x88, 0x20, 0xd1, 0xf4, 0x05, 0xf8, 0x2b, 0x32, 0x4c, - 0xd5, 0xb1, 0xb3, 0xaa, 0x5d, 0x32, 0x77, 0x1d, 0xa4, 0x89, 0x6e, 0xcf, 0x3d, 0x15, 0xf2, 0x1d, - 0xf2, 0x0b, 0xbb, 0xc4, 0xfd, 0x9a, 0xbe, 0xfb, 0x5b, 0xc4, 0xf7, 0x87, 0x92, 0x56, 0x59, 0x7e, - 0x3e, 0x5a, 0x8b, 0xc8, 0xee, 0xa8, 0xcf, 0xdd, 0x48, 0xb6, 0x76, 0x12, 0xed, 0x9d, 0x46, 0x15, - 0x9d, 0x3e, 0x2c, 0x3f, 0x27, 0xc3, 0x6c, 0x1d, 0x3b, 0x15, 0x7b, 0x49, 0xdb, 0x33, 0x2d, 0xdd, - 0xc1, 0xe1, 0x5b, 0x1c, 0xe3, 0xa1, 0x39, 0x0d, 0xa0, 0xfb, 0xbf, 0xb1, 0x18, 0x52, 0xa1, 0x14, - 0xf4, 0x9b, 0x49, 0x1d, 0x85, 0x38, 0x3e, 0x46, 0x02, 0x42, 0x22, 0x1f, 0x8b, 0xb8, 0xe2, 0xd3, - 0x07, 0xe2, 0xf3, 0x12, 0x03, 0xa2, 0x68, 0xb5, 0xb6, 0xf5, 0x3d, 0xdc, 0x4e, 0x08, 0x84, 0xf7, - 0x5b, 0x00, 0x84, 0x4f, 0x28, 0xb1, 0xfb, 0x0a, 0xc7, 0xc7, 0x28, 0xdc, 0x57, 0xe2, 0x08, 0x8e, - 0x25, 0x0c, 0x94, 0xdb, 0xf5, 0xb0, 0xf5, 0xcc, 0xbb, 0x44, 0xc5, 0x1a, 0x98, 0x6c, 0x52, 0xd8, - 0x64, 0x1b, 0xaa, 0x63, 0xa1, 0x65, 0x0f, 0xd2, 0xe9, 0x6c, 0x1a, 0x1d, 0x4b, 0xdf, 0xa2, 0xd3, - 0x17, 0xfa, 0xbb, 0x64, 0x38, 0xe1, 0xc7, 0x47, 0xa9, 0x63, 0x67, 0x51, 0xb3, 0xb7, 0xcf, 0x9b, - 0x9a, 0xd5, 0x0e, 0x5f, 0xee, 0x3f, 0xf4, 0x89, 0x3f, 0xf4, 0xb9, 0x30, 0x08, 0x55, 0x1e, 0x84, - 0xbe, 0xae, 0xa2, 0x7d, 0x79, 0x19, 0x45, 0x27, 0x13, 0xeb, 0xcd, 0xfa, 0xdb, 0x3e, 0x58, 0x3f, - 0xc6, 0x81, 0x75, 0xe7, 0xb0, 0x2c, 0xa6, 0x0f, 0xdc, 0xaf, 0xd3, 0x11, 0x21, 0xe4, 0xd5, 0x7c, - 0x9f, 0x28, 0x60, 0x11, 0x5e, 0xad, 0x72, 0xa4, 0x57, 0xeb, 0x50, 0x63, 0xc4, 0x40, 0x8f, 0xe4, - 0x74, 0xc7, 0x88, 0x43, 0xf4, 0x36, 0x7e, 0x9b, 0x0c, 0x05, 0x12, 0x20, 0x2b, 0xe4, 0xf1, 0x8d, - 0xee, 0x17, 0x45, 0x67, 0x9f, 0x77, 0xf9, 0x44, 0x52, 0xef, 0x72, 0xf4, 0xd6, 0xa4, 0x3e, 0xe4, - 0xbd, 0xdc, 0x8e, 0x04, 0xb1, 0x44, 0x2e, 0xe2, 0x03, 0x38, 0x48, 0x1f, 0xb4, 0xff, 0x26, 0x03, - 0xb8, 0x0d, 0x9a, 0x9d, 0x7d, 0x78, 0x86, 0x28, 0x5c, 0x37, 0x87, 0xfd, 0xea, 0x5d, 0xa0, 0x4e, - 0xf4, 0x00, 0x45, 0x29, 0x06, 0xa7, 0x2a, 0x1e, 0x49, 0xea, 0x5b, 0x19, 0x70, 0x35, 0x12, 0x58, - 0x12, 0x79, 0x5b, 0x46, 0x96, 0x9d, 0x3e, 0x20, 0xff, 0x5d, 0x82, 0x5c, 0xc3, 0xac, 0x63, 0xe7, - 0xe0, 0xa6, 0x40, 0xe2, 0x63, 0xfb, 0xa4, 0xdc, 0x51, 0x1c, 0xdb, 0xef, 0x47, 0x28, 0x7d, 0xd1, - 0xbd, 0x53, 0x82, 0x99, 0x86, 0x59, 0xf2, 0x17, 0xa7, 0xc4, 0x7d, 0x55, 0xc5, 0x6f, 0x4c, 0xf6, - 0x2b, 0x18, 0x14, 0x73, 0xa0, 0x1b, 0x93, 0x07, 0xd3, 0x4b, 0x5f, 0x6e, 0xb7, 0xc1, 0xd1, 0x0d, - 0xa3, 0x6d, 0xaa, 0xb8, 0x6d, 0xb2, 0x95, 0x6e, 0x45, 0x81, 0xec, 0xae, 0xd1, 0x36, 0x09, 0xcb, - 0x39, 0x95, 0x3c, 0xbb, 0x69, 0x16, 0x6e, 0x9b, 0xcc, 0x37, 0x80, 0x3c, 0xa3, 0xaf, 0xca, 0x90, - 0x75, 0xff, 0x15, 0x17, 0xf5, 0xdb, 0xe4, 0x84, 0x81, 0x08, 0x5c, 0xf2, 0x23, 0xb1, 0x84, 0xee, - 0x0a, 0xad, 0xfd, 0x53, 0x0f, 0xd6, 0x6b, 0xa3, 0xca, 0x0b, 0x89, 0x22, 0x58, 0xf3, 0x57, 0x4e, - 0xc1, 0xc4, 0xf9, 0x8e, 0xd9, 0xba, 0x10, 0x9c, 0x97, 0x67, 0xaf, 0xca, 0x8d, 0x90, 0xb3, 0x34, - 0x63, 0x0b, 0xb3, 0x3d, 0x85, 0xe3, 0x3d, 0x7d, 0x21, 0xf1, 0x7a, 0x51, 0x69, 0x16, 0xf4, 0xd6, - 0x24, 0x21, 0x10, 0xfa, 0x54, 0x3e, 0x99, 0x3e, 0x2c, 0x0e, 0x71, 0xb2, 0xac, 0x00, 0x33, 0xa5, - 0x22, 0xbd, 0x9b, 0x7c, 0xad, 0x76, 0xb6, 0x5c, 0x90, 0x09, 0xcc, 0xae, 0x4c, 0x52, 0x84, 0xd9, - 0x25, 0xff, 0x03, 0x0b, 0x73, 0x9f, 0xca, 0x1f, 0x06, 0xcc, 0x1f, 0x97, 0x60, 0x76, 0x55, 0xb7, - 0x9d, 0x28, 0x6f, 0xff, 0x98, 0xf8, 0xb8, 0xcf, 0x4f, 0x6a, 0x2a, 0x73, 0xe5, 0x08, 0x07, 0xc6, - 0x4d, 0x64, 0x0e, 0xc7, 0x15, 0x31, 0x9e, 0x63, 0x29, 0x84, 0x03, 0x7a, 0x9f, 0xb0, 0xb0, 0x24, - 0x13, 0x1b, 0x4a, 0x41, 0x21, 0xe3, 0x37, 0x94, 0x22, 0xcb, 0x4e, 0x5f, 0xbe, 0x5f, 0x95, 0xe0, - 0x98, 0x5b, 0x7c, 0xdc, 0xb2, 0x54, 0xb4, 0x98, 0x07, 0x2e, 0x4b, 0x25, 0x5e, 0x19, 0xdf, 0xc7, - 0xcb, 0x28, 0x56, 0xc6, 0x07, 0x11, 0x1d, 0xb3, 0x98, 0x23, 0x96, 0x61, 0x07, 0x89, 0x39, 0x66, - 0x19, 0x76, 0x78, 0x31, 0xc7, 0x2f, 0xc5, 0x0e, 0x29, 0xe6, 0x43, 0x5b, 0x60, 0x7d, 0xad, 0xec, - 0x8b, 0x39, 0x72, 0x6d, 0x23, 0x46, 0xcc, 0x89, 0x4f, 0xec, 0xa2, 0xb7, 0x0f, 0x29, 0xf8, 0x11, - 0xaf, 0x6f, 0x0c, 0x03, 0xd3, 0x21, 0xae, 0x71, 0xbc, 0x44, 0x86, 0x39, 0xc6, 0x45, 0xff, 0x29, - 0x73, 0x0c, 0x46, 0x89, 0xa7, 0xcc, 0x89, 0xcf, 0x00, 0xf1, 0x9c, 0x8d, 0xff, 0x0c, 0x50, 0x6c, - 0xf9, 0xe9, 0x83, 0xf3, 0xb5, 0x2c, 0x9c, 0x74, 0x59, 0x58, 0x33, 0xdb, 0xfa, 0xe6, 0x25, 0xca, - 0xc5, 0x59, 0xad, 0xb3, 0x8b, 0x6d, 0xf4, 0x1e, 0x49, 0x14, 0xa5, 0xff, 0x04, 0x60, 0x76, 0xb1, - 0x45, 0x03, 0xa9, 0x31, 0xa0, 0xee, 0x88, 0xaa, 0xec, 0xfe, 0x92, 0xfc, 0xeb, 0x62, 0x6a, 0x1e, - 0x11, 0x35, 0x44, 0xcf, 0xb5, 0x0a, 0xa7, 0xfc, 0x2f, 0xbd, 0x0e, 0x1e, 0x99, 0xfd, 0x0e, 0x1e, - 0x37, 0x80, 0xac, 0xb5, 0xdb, 0x3e, 0x54, 0xbd, 0x9b, 0xd9, 0xa4, 0x4c, 0xd5, 0xcd, 0xe2, 0xe6, - 0xb4, 0x71, 0x70, 0x34, 0x2f, 0x22, 0xa7, 0x8d, 0x1d, 0x65, 0x1e, 0xf2, 0xf4, 0x6e, 0x65, 0x7f, - 0x45, 0xbf, 0x7f, 0x66, 0x96, 0x8b, 0x37, 0xed, 0x6a, 0xbc, 0x1a, 0xde, 0x96, 0x48, 0x32, 0xfd, - 0xfa, 0xe9, 0xc0, 0x4e, 0x56, 0x39, 0x05, 0x7b, 0xfa, 0xd0, 0x94, 0xc7, 0xb3, 0x1b, 0x56, 0xec, - 0x76, 0x3b, 0x97, 0x1a, 0x2c, 0xf8, 0x4a, 0xa2, 0xdd, 0xb0, 0x50, 0x0c, 0x17, 0xa9, 0x37, 0x86, - 0x4b, 0xf2, 0xdd, 0x30, 0x8e, 0x8f, 0x51, 0xec, 0x86, 0xc5, 0x11, 0x4c, 0x5f, 0xb4, 0x6f, 0xce, - 0x51, 0xab, 0x99, 0x45, 0xef, 0xff, 0xc3, 0xfe, 0x87, 0xd0, 0x80, 0x77, 0x76, 0xe9, 0x17, 0xd8, - 0x3f, 0xf6, 0xd6, 0x12, 0xe5, 0xc9, 0x90, 0xdf, 0x34, 0xad, 0x1d, 0xcd, 0xdb, 0xb8, 0xef, 0x3d, - 0x29, 0xc2, 0x22, 0xe6, 0x2f, 0x91, 0x3c, 0x2a, 0xcb, 0xeb, 0xce, 0x47, 0x9e, 0xa9, 0x77, 0x59, - 0xd4, 0x45, 0xf7, 0x51, 0xb9, 0x0e, 0x66, 0x59, 0xf0, 0xc5, 0x2a, 0xb6, 0x1d, 0xdc, 0x66, 0x11, - 0x2b, 0xf8, 0x44, 0xe5, 0x0c, 0xcc, 0xb0, 0x84, 0x25, 0xbd, 0x83, 0x6d, 0x16, 0xb4, 0x82, 0x4b, - 0x53, 0x4e, 0x42, 0x5e, 0xb7, 0xef, 0xb1, 0x4d, 0x83, 0xf8, 0xff, 0x4f, 0xaa, 0xec, 0x4d, 0xb9, - 0x01, 0x8e, 0xb2, 0x7c, 0xbe, 0xb1, 0x4a, 0x0f, 0xec, 0xf4, 0x26, 0xbb, 0xaa, 0x65, 0x98, 0xeb, - 0x96, 0xb9, 0x65, 0x61, 0xdb, 0x26, 0xa7, 0xa6, 0x26, 0xd5, 0x50, 0x0a, 0xfa, 0xcc, 0x30, 0x13, - 0x8b, 0xc4, 0x37, 0x19, 0xb8, 0x28, 0xed, 0xb6, 0x5a, 0x18, 0xb7, 0xd9, 0xc9, 0x27, 0xef, 0x35, - 0xe1, 0x1d, 0x07, 0x89, 0xa7, 0x21, 0x87, 0x74, 0xc9, 0xc1, 0x07, 0x4f, 0x40, 0x9e, 0x5e, 0x18, - 0x86, 0x5e, 0x34, 0xd7, 0x57, 0x59, 0xe7, 0x78, 0x65, 0xdd, 0x80, 0x19, 0xc3, 0x74, 0x8b, 0x5b, - 0xd7, 0x2c, 0x6d, 0xc7, 0x8e, 0x5b, 0x65, 0xa4, 0x74, 0xfd, 0x21, 0xa5, 0x1a, 0xfa, 0x6d, 0xe5, - 0x88, 0xca, 0x91, 0x51, 0xfe, 0x0f, 0x38, 0x7a, 0x9e, 0x45, 0x08, 0xb0, 0x19, 0x65, 0x29, 0xda, - 0x07, 0xaf, 0x87, 0xf2, 0x02, 0xff, 0xe7, 0xca, 0x11, 0xb5, 0x97, 0x98, 0xf2, 0x13, 0x30, 0xe7, - 0xbe, 0xb6, 0xcd, 0x8b, 0x1e, 0xe3, 0x72, 0xb4, 0x21, 0xd2, 0x43, 0x7e, 0x8d, 0xfb, 0x71, 0xe5, - 0x88, 0xda, 0x43, 0x4a, 0xa9, 0x01, 0x6c, 0x3b, 0x3b, 0x1d, 0x46, 0x38, 0x1b, 0xad, 0x92, 0x3d, - 0x84, 0x57, 0xfc, 0x9f, 0x56, 0x8e, 0xa8, 0x21, 0x12, 0xca, 0x2a, 0x4c, 0x39, 0x0f, 0x38, 0x8c, - 0x5e, 0x2e, 0x7a, 0xf3, 0xbb, 0x87, 0x5e, 0xc3, 0xfb, 0x67, 0xe5, 0x88, 0x1a, 0x10, 0x50, 0x2a, - 0x30, 0xd9, 0x3d, 0xcf, 0x88, 0xe5, 0xfb, 0x44, 0x9b, 0xef, 0x4f, 0x6c, 0xfd, 0xbc, 0x4f, 0xcb, - 0xff, 0xdd, 0x65, 0xac, 0x65, 0xef, 0x31, 0x5a, 0x13, 0xc2, 0x8c, 0x95, 0xbc, 0x7f, 0x5c, 0xc6, - 0x7c, 0x02, 0x4a, 0x05, 0xa6, 0x6c, 0x43, 0xeb, 0xda, 0xdb, 0xa6, 0x63, 0x9f, 0x9a, 0xec, 0xf1, - 0x93, 0x8c, 0xa6, 0x56, 0x67, 0xff, 0xa8, 0xc1, 0xdf, 0xca, 0x93, 0xe1, 0xc4, 0x2e, 0xb9, 0x78, - 0xbd, 0xfc, 0x80, 0x6e, 0x3b, 0xba, 0xb1, 0xe5, 0xc5, 0x98, 0xa5, 0xbd, 0x4d, 0xff, 0x8f, 0xca, - 0x3c, 0x3b, 0x31, 0x05, 0xa4, 0x6d, 0xa2, 0xde, 0xcd, 0x3a, 0x5a, 0x6c, 0xe8, 0xa0, 0xd4, 0xd3, - 0x20, 0xeb, 0x7e, 0x22, 0xbd, 0xd3, 0x5c, 0xff, 0x85, 0xc0, 0x5e, 0xdd, 0x21, 0x0d, 0xd8, 0xfd, - 0xa9, 0xa7, 0x83, 0x9b, 0xe9, 0xed, 0xe0, 0xdc, 0x06, 0xae, 0xdb, 0x6b, 0xfa, 0x16, 0xb5, 0xae, - 0x98, 0x3f, 0x7c, 0x38, 0x89, 0xce, 0x46, 0xab, 0xf8, 0x22, 0xbd, 0x41, 0xe3, 0xa8, 0x37, 0x1b, - 0xf5, 0x52, 0xd0, 0xf5, 0x30, 0x13, 0x6e, 0x64, 0xf4, 0xd6, 0x51, 0x3d, 0xb0, 0xcd, 0xd8, 0x1b, - 0xba, 0x0e, 0xe6, 0x78, 0x9d, 0x0e, 0x0d, 0x41, 0xb2, 0xd7, 0x15, 0xa2, 0x6b, 0xe1, 0x68, 0x4f, - 0xc3, 0xf2, 0x62, 0x8e, 0x64, 0x82, 0x98, 0x23, 0xd7, 0x00, 0x04, 0x5a, 0xdc, 0x97, 0xcc, 0xd5, - 0x30, 0xe5, 0xeb, 0x65, 0xdf, 0x0c, 0x5f, 0xce, 0xc0, 0xa4, 0xa7, 0x6c, 0xfd, 0x32, 0xb8, 0xe3, - 0x8f, 0x11, 0xda, 0x60, 0x60, 0xd3, 0x70, 0x2e, 0xcd, 0x1d, 0x67, 0x02, 0xb7, 0xde, 0x86, 0xee, - 0x74, 0xbc, 0xa3, 0x71, 0xbd, 0xc9, 0xca, 0x3a, 0x80, 0x4e, 0x30, 0x6a, 0x04, 0x67, 0xe5, 0x6e, - 0x49, 0xd0, 0x1e, 0xa8, 0x3e, 0x84, 0x68, 0x9c, 0xf9, 0x21, 0x76, 0x90, 0x6d, 0x0a, 0x72, 0x34, - 0xd0, 0xfa, 0x11, 0x65, 0x0e, 0xa0, 0xfc, 0x8c, 0xf5, 0xb2, 0x5a, 0x29, 0x57, 0x4b, 0xe5, 0x42, - 0x06, 0xbd, 0x54, 0x82, 0x29, 0xbf, 0x11, 0xf4, 0xad, 0x64, 0x99, 0xa9, 0xd6, 0xc0, 0x8b, 0x1d, - 0xf7, 0x37, 0xaa, 0xb0, 0x92, 0x3d, 0x15, 0x2e, 0xdf, 0xb5, 0xf1, 0x92, 0x6e, 0xd9, 0x8e, 0x6a, - 0x5e, 0x5c, 0x32, 0x2d, 0x3f, 0xaa, 0x32, 0x8b, 0x70, 0x1a, 0xf5, 0xd9, 0xb5, 0x38, 0xda, 0x98, - 0x1c, 0x9a, 0xc2, 0x16, 0x5b, 0x39, 0x0e, 0x12, 0x5c, 0xba, 0x8e, 0xa5, 0x19, 0x76, 0xd7, 0xb4, - 0xb1, 0x6a, 0x5e, 0xb4, 0x8b, 0x46, 0xbb, 0x64, 0x76, 0x76, 0x77, 0x0c, 0x9b, 0xd9, 0x0c, 0x51, - 0x9f, 0x5d, 0xe9, 0x90, 0x6b, 0x5b, 0xe7, 0x00, 0x4a, 0xb5, 0xd5, 0xd5, 0x72, 0xa9, 0x51, 0xa9, - 0x55, 0x0b, 0x47, 0x5c, 0x69, 0x35, 0x8a, 0x0b, 0xab, 0xae, 0x74, 0x7e, 0x12, 0x26, 0xbd, 0x36, - 0xcd, 0xc2, 0xa4, 0x64, 0xbc, 0x30, 0x29, 0x4a, 0x11, 0x26, 0xbd, 0x56, 0xce, 0x46, 0x84, 0xc7, - 0xf6, 0x1e, 0x8b, 0xdd, 0xd1, 0x2c, 0x87, 0xf8, 0x53, 0x7b, 0x44, 0x16, 0x34, 0x1b, 0xab, 0xfe, - 0x6f, 0x67, 0x9e, 0xc0, 0x38, 0x50, 0x60, 0xae, 0xb8, 0xba, 0xda, 0xac, 0xa9, 0xcd, 0x6a, 0xad, - 0xb1, 0x52, 0xa9, 0x2e, 0xd3, 0x11, 0xb2, 0xb2, 0x5c, 0xad, 0xa9, 0x65, 0x3a, 0x40, 0xd6, 0x0b, - 0x19, 0x7a, 0x6d, 0xf0, 0xc2, 0x24, 0xe4, 0xbb, 0x44, 0xba, 0xe8, 0x0b, 0x72, 0xc2, 0xf3, 0xf0, - 0x3e, 0x4e, 0x11, 0x17, 0x9b, 0x72, 0x3e, 0xe9, 0x52, 0x9f, 0x33, 0xa3, 0x67, 0x60, 0x86, 0xda, - 0x7a, 0x36, 0x59, 0xde, 0x27, 0xc8, 0xc9, 0x2a, 0x97, 0x86, 0x3e, 0x2c, 0x25, 0x38, 0x24, 0xdf, - 0x97, 0xa3, 0x64, 0xc6, 0xc5, 0x9f, 0x65, 0x86, 0xbb, 0x96, 0xa0, 0x52, 0x6d, 0x94, 0xd5, 0x6a, - 0x71, 0x95, 0x65, 0x91, 0x95, 0x53, 0x70, 0xbc, 0x5a, 0x63, 0x31, 0xff, 0xea, 0xcd, 0x46, 0xad, - 0x59, 0x59, 0x5b, 0xaf, 0xa9, 0x8d, 0x42, 0x4e, 0x39, 0x09, 0x0a, 0x7d, 0x6e, 0x56, 0xea, 0xcd, - 0x52, 0xb1, 0x5a, 0x2a, 0xaf, 0x96, 0x17, 0x0b, 0x79, 0xe5, 0x71, 0x70, 0x2d, 0xbd, 0xe6, 0xa6, - 0xb6, 0xd4, 0x54, 0x6b, 0xe7, 0xea, 0x2e, 0x82, 0x6a, 0x79, 0xb5, 0xe8, 0x2a, 0x52, 0xe8, 0xfa, - 0xe0, 0x09, 0xe5, 0x32, 0x38, 0x4a, 0xae, 0x06, 0x5f, 0xad, 0x15, 0x17, 0x59, 0x79, 0x93, 0xca, - 0x55, 0x70, 0xaa, 0x52, 0xad, 0x6f, 0x2c, 0x2d, 0x55, 0x4a, 0x95, 0x72, 0xb5, 0xd1, 0x5c, 0x2f, - 0xab, 0x6b, 0x95, 0x7a, 0xdd, 0xfd, 0xb7, 0x30, 0x45, 0x2e, 0x67, 0xa5, 0x7d, 0x26, 0x7a, 0xb7, - 0x0c, 0xb3, 0x67, 0xb5, 0x8e, 0xee, 0x0e, 0x14, 0xe4, 0xd6, 0xe6, 0x9e, 0xe3, 0x24, 0x0e, 0xb9, - 0xdd, 0x99, 0x39, 0xa4, 0x93, 0x17, 0xf4, 0xb3, 0x72, 0xc2, 0xe3, 0x24, 0x0c, 0x08, 0x5a, 0xe2, - 0x3c, 0x57, 0x5a, 0xc4, 0xe4, 0xe7, 0xd5, 0x52, 0x82, 0xe3, 0x24, 0xe2, 0xe4, 0x93, 0x81, 0xff, - 0xb2, 0x51, 0x81, 0x5f, 0x80, 0x99, 0x8d, 0x6a, 0x71, 0xa3, 0xb1, 0x52, 0x53, 0x2b, 0x3f, 0x4e, - 0xa2, 0x91, 0xcf, 0xc2, 0xd4, 0x52, 0x4d, 0x5d, 0xa8, 0x2c, 0x2e, 0x96, 0xab, 0x85, 0x9c, 0x72, - 0x39, 0x5c, 0x56, 0x2f, 0xab, 0x67, 0x2b, 0xa5, 0x72, 0x73, 0xa3, 0x5a, 0x3c, 0x5b, 0xac, 0xac, - 0x92, 0x3e, 0x22, 0x1f, 0x73, 0xe3, 0xf4, 0x04, 0xfa, 0xe9, 0x2c, 0x00, 0xad, 0x3a, 0xb9, 0x8c, - 0x27, 0x74, 0x2f, 0xf1, 0x9f, 0x27, 0x9d, 0x34, 0x04, 0x64, 0x22, 0xda, 0x6f, 0x05, 0x26, 0x2d, - 0xf6, 0x81, 0x2d, 0xaf, 0x0c, 0xa2, 0x43, 0x1f, 0x3d, 0x6a, 0xaa, 0xff, 0x3b, 0x7a, 0x4f, 0x92, - 0x39, 0x42, 0x24, 0x63, 0xc9, 0x90, 0x5c, 0x1a, 0x0d, 0x90, 0xe8, 0xa1, 0x0c, 0xcc, 0xf1, 0x15, - 0x73, 0x2b, 0x41, 0x8c, 0x29, 0xb1, 0x4a, 0xf0, 0x3f, 0x87, 0x8c, 0xac, 0x33, 0x4f, 0x62, 0xc3, - 0x29, 0x78, 0x2d, 0x93, 0x9e, 0x0c, 0xf7, 0x2c, 0x96, 0x42, 0xc6, 0x65, 0xde, 0x35, 0x3a, 0x0a, - 0x92, 0x32, 0x01, 0x72, 0xe3, 0x01, 0xa7, 0x20, 0xa3, 0x2f, 0xcb, 0x30, 0xcb, 0x5d, 0x7c, 0x8c, - 0x5e, 0x9d, 0x11, 0xb9, 0x94, 0x34, 0x74, 0xa5, 0x72, 0xe6, 0xa0, 0x57, 0x2a, 0x9f, 0xb9, 0x19, - 0x26, 0x58, 0x1a, 0x91, 0x6f, 0xad, 0xea, 0x9a, 0x02, 0x47, 0x61, 0x7a, 0xb9, 0xdc, 0x68, 0xd6, - 0x1b, 0x45, 0xb5, 0x51, 0x5e, 0x2c, 0x64, 0xdc, 0x81, 0xaf, 0xbc, 0xb6, 0xde, 0xb8, 0xaf, 0x20, - 0x25, 0xf7, 0xd0, 0xeb, 0x65, 0x64, 0xcc, 0x1e, 0x7a, 0x71, 0xc5, 0xa7, 0x3f, 0x57, 0xfd, 0x94, - 0x0c, 0x05, 0xca, 0x41, 0xf9, 0x81, 0x2e, 0xb6, 0x74, 0x6c, 0xb4, 0x30, 0xba, 0x20, 0x12, 0x11, - 0x74, 0x5f, 0xac, 0x3c, 0xd2, 0x9f, 0x87, 0xac, 0x44, 0xfa, 0xd2, 0x63, 0x60, 0x67, 0xf7, 0x19, - 0xd8, 0x9f, 0x4c, 0xea, 0xa2, 0xd7, 0xcb, 0xee, 0x48, 0x20, 0xfb, 0x58, 0x12, 0x17, 0xbd, 0x01, - 0x1c, 0x8c, 0x25, 0xd0, 0x6f, 0xc4, 0xf8, 0x5b, 0x90, 0xd1, 0xf3, 0x64, 0x38, 0xba, 0xa8, 0x39, - 0x78, 0xe1, 0x52, 0xc3, 0xbb, 0x98, 0x30, 0xe2, 0x32, 0xe1, 0xcc, 0xbe, 0xcb, 0x84, 0x83, 0xbb, - 0x0d, 0xa5, 0x9e, 0xbb, 0x0d, 0xd1, 0x3b, 0x92, 0x1e, 0xea, 0xeb, 0xe1, 0x61, 0x64, 0xd1, 0x78, - 0x93, 0x1d, 0xd6, 0x8b, 0xe7, 0x62, 0x0c, 0x77, 0xfb, 0x4f, 0x41, 0x81, 0xb2, 0x12, 0xf2, 0x42, - 0xfb, 0x15, 0x76, 0xff, 0x76, 0x33, 0x41, 0xd0, 0x3f, 0x2f, 0x8c, 0x82, 0xc4, 0x87, 0x51, 0xe0, - 0x16, 0x35, 0xe5, 0x5e, 0xcf, 0x81, 0xa4, 0x9d, 0x61, 0xc8, 0xe5, 0x2c, 0x3a, 0xce, 0x6a, 0x7a, - 0x9d, 0x61, 0x6c, 0xf1, 0xe3, 0xb9, 0x23, 0x96, 0xdd, 0xf3, 0x58, 0x16, 0x45, 0x26, 0xfe, 0x2a, - 0xec, 0xa4, 0xfe, 0xc7, 0x9c, 0xcb, 0x5f, 0xcc, 0xfd, 0xd0, 0xe9, 0xf9, 0x1f, 0x0f, 0xe2, 0x20, - 0x7d, 0x14, 0xbe, 0x27, 0x41, 0xb6, 0x6e, 0x5a, 0xce, 0xa8, 0x30, 0x48, 0xba, 0x67, 0x1a, 0x92, - 0x40, 0x3d, 0x7a, 0xce, 0x99, 0xde, 0x9e, 0x69, 0x7c, 0xf9, 0x63, 0x88, 0x9b, 0x78, 0x14, 0xe6, - 0x28, 0x27, 0xfe, 0xa5, 0x22, 0xdf, 0x95, 0x68, 0x7f, 0x75, 0xaf, 0x28, 0x22, 0x67, 0x60, 0x26, - 0xb4, 0x67, 0xe9, 0x81, 0xc2, 0xa5, 0xa1, 0xd7, 0x87, 0x71, 0x59, 0xe4, 0x71, 0xe9, 0x37, 0xe3, - 0xf6, 0xef, 0xe5, 0x18, 0x55, 0xcf, 0x94, 0x24, 0x04, 0x63, 0x4c, 0xe1, 0xe9, 0x23, 0xf2, 0xa0, - 0x0c, 0x79, 0xe6, 0x33, 0x36, 0x52, 0x04, 0x92, 0xb6, 0x0c, 0x5f, 0x08, 0x62, 0xbe, 0x65, 0xf2, - 0xa8, 0x5b, 0x46, 0x7c, 0xf9, 0xe9, 0xe3, 0xf0, 0xef, 0xcc, 0x19, 0xb2, 0xb8, 0xa7, 0xe9, 0x1d, - 0xed, 0x7c, 0x27, 0x41, 0xe8, 0xe3, 0x0f, 0x27, 0x3c, 0xfe, 0xe5, 0x57, 0x95, 0x2b, 0x2f, 0x42, - 0xe2, 0x3f, 0x02, 0x53, 0x96, 0xbf, 0x24, 0xe9, 0x9d, 0x8e, 0xef, 0x71, 0x44, 0x65, 0xdf, 0xd5, - 0x20, 0x67, 0xa2, 0xb3, 0x5e, 0x42, 0xfc, 0x8c, 0xe5, 0x6c, 0xca, 0x74, 0xb1, 0xdd, 0x5e, 0xc2, - 0x9a, 0xb3, 0x6b, 0xe1, 0x76, 0xa2, 0x21, 0x82, 0x17, 0xd1, 0x54, 0x58, 0x12, 0x5c, 0xf0, 0xc1, - 0x55, 0x1e, 0x9d, 0xa7, 0x0c, 0xe8, 0x0d, 0x3c, 0x5e, 0x46, 0xd2, 0x25, 0xbd, 0xd9, 0x87, 0xa4, - 0xc6, 0x41, 0xf2, 0xb4, 0xe1, 0x98, 0x18, 0xc3, 0x85, 0xee, 0x32, 0xcc, 0x51, 0x3b, 0x61, 0xd4, - 0x98, 0xfc, 0x5e, 0x42, 0x1f, 0x93, 0xd0, 0xb5, 0x4d, 0x61, 0x76, 0x46, 0x02, 0x4b, 0x12, 0x8f, - 0x14, 0x31, 0x3e, 0xd2, 0x47, 0xe6, 0x33, 0x79, 0x80, 0x90, 0xdf, 0xe0, 0x87, 0xf3, 0x41, 0x20, - 0x40, 0xf4, 0x56, 0x36, 0xff, 0xa8, 0x73, 0x51, 0xa9, 0x43, 0x3e, 0x81, 0xfe, 0x86, 0x14, 0x9f, - 0x28, 0x34, 0xaa, 0xfc, 0x59, 0x42, 0x9b, 0x97, 0x79, 0xed, 0x0d, 0x1c, 0xdc, 0x87, 0xec, 0xe5, - 0x3e, 0x92, 0xc0, 0xf8, 0x1d, 0xc4, 0x4a, 0x32, 0xd4, 0x56, 0x87, 0x98, 0xd9, 0x9f, 0x82, 0xe3, - 0x6a, 0xb9, 0xb8, 0x58, 0xab, 0xae, 0xde, 0x17, 0xbe, 0xc3, 0xa7, 0x20, 0x87, 0x27, 0x27, 0xa9, - 0xc0, 0xf6, 0x9a, 0x84, 0x7d, 0x20, 0x2f, 0xab, 0xd8, 0x1b, 0xea, 0x3f, 0x96, 0xa0, 0x57, 0x13, - 0x20, 0x7b, 0x98, 0x28, 0x3c, 0x08, 0xa1, 0x66, 0xf4, 0xf3, 0x32, 0x14, 0xdc, 0xf1, 0x90, 0x72, - 0xc9, 0x2e, 0x6b, 0xab, 0xf1, 0x6e, 0x85, 0x5d, 0xba, 0xff, 0x14, 0xb8, 0x15, 0x7a, 0x09, 0xca, - 0xf5, 0x30, 0xd7, 0xda, 0xc6, 0xad, 0x0b, 0x15, 0xc3, 0xdb, 0x57, 0xa7, 0x9b, 0xb0, 0x3d, 0xa9, - 0x3c, 0x30, 0xf7, 0xf2, 0xc0, 0xf0, 0x93, 0x68, 0x6e, 0x90, 0x0e, 0x33, 0x15, 0x81, 0xcb, 0x1f, - 0xfa, 0xb8, 0x54, 0x39, 0x5c, 0x6e, 0x1f, 0x8a, 0x6a, 0x32, 0x58, 0xaa, 0x43, 0xc0, 0x82, 0xe0, - 0x64, 0x6d, 0xbd, 0x51, 0xa9, 0x55, 0x9b, 0x1b, 0xf5, 0xf2, 0x62, 0x73, 0xc1, 0x03, 0xa7, 0x5e, - 0x90, 0xd1, 0xd7, 0x25, 0x98, 0xa0, 0x6c, 0xd9, 0xe8, 0xf1, 0x01, 0x04, 0x03, 0xfd, 0x29, 0xd1, - 0x5b, 0x84, 0xa3, 0x23, 0xf8, 0x82, 0x60, 0xe5, 0x44, 0xf4, 0x53, 0x4f, 0x85, 0x09, 0x0a, 0xb2, - 0xb7, 0xa2, 0x75, 0x3a, 0xa2, 0x97, 0x62, 0x64, 0x54, 0x2f, 0xbb, 0x60, 0xa4, 0x84, 0x01, 0x6c, - 0xa4, 0x3f, 0xb2, 0x3c, 0x2b, 0x4b, 0xcd, 0xe0, 0x73, 0xba, 0xb3, 0x4d, 0xdc, 0x2d, 0xd1, 0x8f, - 0x89, 0x2c, 0x2f, 0xde, 0x04, 0xb9, 0x3d, 0x37, 0xf7, 0x00, 0xd7, 0x55, 0x9a, 0x09, 0xbd, 0x4c, - 0x38, 0x30, 0x27, 0xa7, 0x9f, 0x3e, 0x4f, 0x11, 0xe0, 0xac, 0x41, 0xb6, 0xa3, 0xdb, 0x0e, 0x1b, - 0x3f, 0x6e, 0x4b, 0x44, 0xc8, 0x7b, 0xa8, 0x38, 0x78, 0x47, 0x25, 0x64, 0xd0, 0x3d, 0x30, 0x13, - 0x4e, 0x15, 0x70, 0xdf, 0x3d, 0x05, 0x13, 0xec, 0x58, 0x19, 0x5b, 0x62, 0xf5, 0x5e, 0x05, 0x97, - 0x35, 0x85, 0x6a, 0x9b, 0xbe, 0x0e, 0xfc, 0xbf, 0x47, 0x61, 0x62, 0x45, 0xb7, 0x1d, 0xd3, 0xba, - 0x84, 0x1e, 0xc9, 0xc0, 0xc4, 0x59, 0x6c, 0xd9, 0xba, 0x69, 0xec, 0x73, 0x35, 0xb8, 0x06, 0xa6, - 0xbb, 0x16, 0xde, 0xd3, 0xcd, 0x5d, 0x3b, 0x58, 0x9c, 0x09, 0x27, 0x29, 0x08, 0x26, 0xb5, 0x5d, - 0x67, 0xdb, 0xb4, 0x82, 0x68, 0x14, 0xde, 0xbb, 0x72, 0x1a, 0x80, 0x3e, 0x57, 0xb5, 0x1d, 0xcc, - 0x1c, 0x28, 0x42, 0x29, 0x8a, 0x02, 0x59, 0x47, 0xdf, 0xc1, 0x2c, 0x3c, 0x2d, 0x79, 0x76, 0x05, - 0x4c, 0x42, 0xbd, 0xb1, 0x90, 0x7a, 0xb2, 0xea, 0xbd, 0xa2, 0xcf, 0xc9, 0x30, 0xbd, 0x8c, 0x1d, - 0xc6, 0xaa, 0x8d, 0x9e, 0x9f, 0x11, 0xba, 0x11, 0xc2, 0x1d, 0x63, 0x3b, 0x9a, 0xed, 0xfd, 0xe7, - 0x2f, 0xc1, 0xf2, 0x89, 0x41, 0xac, 0x5c, 0x39, 0x1c, 0x28, 0x9b, 0x04, 0x4e, 0x73, 0x2a, 0xd4, - 0x2f, 0x93, 0x65, 0x66, 0x9b, 0x20, 0xfb, 0x3f, 0xa0, 0x77, 0x4a, 0xa2, 0x87, 0x8e, 0x99, 0xec, - 0xe7, 0x43, 0xf5, 0x89, 0xec, 0x8e, 0x26, 0xf7, 0x58, 0x8e, 0x7d, 0x31, 0xd0, 0xc3, 0x94, 0x18, - 0x19, 0xd5, 0xcf, 0x2d, 0x78, 0x5c, 0x79, 0x30, 0x27, 0xe9, 0x6b, 0xe3, 0xb7, 0x65, 0x98, 0xae, - 0x6f, 0x9b, 0x17, 0x3d, 0x39, 0xfe, 0xa4, 0x18, 0xb0, 0x57, 0xc1, 0xd4, 0x5e, 0x0f, 0xa8, 0x41, - 0x42, 0xf4, 0x1d, 0xed, 0xe8, 0xb9, 0x72, 0x52, 0x98, 0x42, 0xcc, 0x8d, 0xfc, 0x06, 0x75, 0xe5, - 0x29, 0x30, 0xc1, 0xb8, 0x66, 0x4b, 0x2e, 0xf1, 0x00, 0x7b, 0x99, 0xc3, 0x15, 0xcc, 0xf2, 0x15, - 0x4c, 0x86, 0x7c, 0x74, 0xe5, 0xd2, 0x47, 0xfe, 0x8f, 0x25, 0x12, 0xac, 0xc2, 0x03, 0xbe, 0x34, - 0x02, 0xe0, 0xd1, 0x77, 0x32, 0xa2, 0x0b, 0x93, 0xbe, 0x04, 0x7c, 0x0e, 0x0e, 0x74, 0xdb, 0xcb, - 0x40, 0x72, 0xe9, 0xcb, 0xf3, 0xa5, 0x59, 0x98, 0x59, 0xd4, 0x37, 0x37, 0xfd, 0x4e, 0xf2, 0x05, - 0x82, 0x9d, 0x64, 0xb4, 0x3b, 0x80, 0x6b, 0xe7, 0xee, 0x5a, 0x16, 0x36, 0xbc, 0x4a, 0xb1, 0xe6, - 0xd4, 0x93, 0xaa, 0xdc, 0x00, 0x47, 0xbd, 0x71, 0x21, 0xdc, 0x51, 0x4e, 0xa9, 0xbd, 0xc9, 0xe8, - 0x5b, 0xc2, 0xbb, 0x5a, 0x9e, 0x44, 0xc3, 0x55, 0x8a, 0x68, 0x80, 0x77, 0xc0, 0xec, 0x36, 0xcd, - 0x4d, 0xa6, 0xfe, 0x5e, 0x67, 0x79, 0xb2, 0x27, 0x18, 0xf0, 0x1a, 0xb6, 0x6d, 0x6d, 0x0b, 0xab, - 0x7c, 0xe6, 0x9e, 0xe6, 0x2b, 0x27, 0xb9, 0xda, 0x4a, 0x6c, 0x83, 0x4c, 0xa0, 0x26, 0x63, 0xd0, - 0x8e, 0x33, 0x90, 0x5d, 0xd2, 0x3b, 0x18, 0xfd, 0x82, 0x04, 0x53, 0x2a, 0x6e, 0x99, 0x46, 0xcb, - 0x7d, 0x0b, 0x39, 0x07, 0xfd, 0x63, 0x46, 0xf4, 0x4a, 0x47, 0x97, 0xce, 0xbc, 0x4f, 0x23, 0xa2, - 0xdd, 0x88, 0x5d, 0xdd, 0x18, 0x4b, 0x6a, 0x0c, 0x17, 0x70, 0xb8, 0x53, 0x8f, 0xcd, 0xcd, 0x8e, - 0xa9, 0x71, 0x8b, 0x5f, 0xbd, 0xa6, 0xd0, 0x8d, 0x50, 0xf0, 0xce, 0x80, 0x98, 0xce, 0xba, 0x6e, - 0x18, 0xfe, 0x21, 0xe3, 0x7d, 0xe9, 0xfc, 0xbe, 0x6d, 0x6c, 0x9c, 0x16, 0x52, 0x77, 0x56, 0x7a, - 0x84, 0x66, 0x5f, 0x0f, 0x73, 0xe7, 0x2f, 0x39, 0xd8, 0x66, 0xb9, 0x58, 0xb1, 0x59, 0xb5, 0x27, - 0x35, 0x14, 0x65, 0x39, 0x2e, 0x9e, 0x4b, 0x4c, 0x81, 0xc9, 0x44, 0xbd, 0x32, 0xc4, 0x0c, 0xf0, - 0x38, 0x14, 0xaa, 0xb5, 0xc5, 0x32, 0xf1, 0x55, 0xf3, 0xbc, 0x7f, 0xb6, 0xd0, 0x0b, 0x65, 0x98, - 0x21, 0xce, 0x24, 0x1e, 0x0a, 0xd7, 0x0a, 0xcc, 0x47, 0xd0, 0x17, 0x85, 0xfd, 0xd8, 0x48, 0x95, - 0xc3, 0x05, 0x44, 0x0b, 0x7a, 0x53, 0xef, 0xf4, 0x0a, 0x3a, 0xa7, 0xf6, 0xa4, 0xf6, 0x01, 0x44, - 0xee, 0x0b, 0xc8, 0xef, 0x08, 0x39, 0xb3, 0x0d, 0xe2, 0xee, 0xb0, 0x50, 0xf9, 0x5d, 0x19, 0xa6, - 0xdd, 0x49, 0x8a, 0x07, 0x4a, 0x8d, 0x03, 0xc5, 0x34, 0x3a, 0x97, 0x82, 0x65, 0x11, 0xef, 0x35, - 0x51, 0x23, 0xf9, 0x4b, 0xe1, 0x99, 0x3b, 0x11, 0x51, 0x88, 0x97, 0x31, 0xe1, 0xf7, 0x5e, 0xa1, - 0xf9, 0xfc, 0x00, 0xe6, 0x0e, 0x0b, 0xbe, 0xaf, 0xe6, 0x20, 0xbf, 0xd1, 0x25, 0xc8, 0xbd, 0x4c, - 0x16, 0x89, 0x58, 0xbe, 0xef, 0x20, 0x83, 0x6b, 0x66, 0x75, 0xcc, 0x96, 0xd6, 0x59, 0x0f, 0x4e, - 0x84, 0x05, 0x09, 0xca, 0xed, 0xcc, 0xb7, 0x91, 0x1e, 0xb7, 0xbb, 0x3e, 0x36, 0x98, 0x37, 0x91, - 0x51, 0xe8, 0xd0, 0xc8, 0x4d, 0x70, 0xac, 0xad, 0xdb, 0xda, 0xf9, 0x0e, 0x2e, 0x1b, 0x2d, 0xeb, - 0x12, 0x15, 0x07, 0x9b, 0x56, 0xed, 0xfb, 0xa0, 0xdc, 0x09, 0x39, 0xdb, 0xb9, 0xd4, 0xa1, 0xf3, - 0xc4, 0xf0, 0x19, 0x93, 0xc8, 0xa2, 0xea, 0x6e, 0x76, 0x95, 0xfe, 0x15, 0x76, 0x51, 0x9a, 0x10, - 0xbc, 0xcf, 0xf9, 0x49, 0x90, 0x37, 0x2d, 0x7d, 0x4b, 0xa7, 0xf7, 0xf3, 0xcc, 0xed, 0x8b, 0x59, - 0x47, 0x4d, 0x81, 0x1a, 0xc9, 0xa2, 0xb2, 0xac, 0xca, 0x53, 0x60, 0x4a, 0xdf, 0xd1, 0xb6, 0xf0, - 0xbd, 0xba, 0x41, 0x4f, 0xf4, 0xcd, 0xdd, 0x7a, 0x6a, 0xdf, 0xf1, 0x19, 0xf6, 0x5d, 0x0d, 0xb2, - 0xa2, 0xf7, 0x4a, 0xa2, 0x81, 0x75, 0x48, 0xdd, 0x28, 0xa8, 0x63, 0xb9, 0xd7, 0x1a, 0xbd, 0x52, - 0x28, 0xe4, 0x4d, 0x34, 0x5b, 0xe9, 0x0f, 0xde, 0x9f, 0x95, 0x60, 0x72, 0xd1, 0xbc, 0x68, 0x10, - 0x45, 0xbf, 0x4d, 0xcc, 0xd6, 0xed, 0x73, 0xc8, 0x91, 0xbf, 0x36, 0x32, 0xf6, 0x44, 0x03, 0xa9, - 0xad, 0x57, 0x64, 0x04, 0x0c, 0xb1, 0x2d, 0x47, 0xf0, 0x32, 0xbf, 0xb8, 0x72, 0xd2, 0x97, 0xeb, - 0x9f, 0xc8, 0x90, 0x5d, 0xb4, 0xcc, 0x2e, 0x7a, 0x73, 0x26, 0x81, 0xcb, 0x42, 0xdb, 0x32, 0xbb, - 0x0d, 0x72, 0x1b, 0x57, 0x70, 0x8c, 0x23, 0x9c, 0xa6, 0xdc, 0x06, 0x93, 0x5d, 0xd3, 0xd6, 0x1d, - 0x6f, 0x1a, 0x31, 0x77, 0xeb, 0x63, 0xfa, 0xb6, 0xe6, 0x75, 0x96, 0x49, 0xf5, 0xb3, 0xbb, 0xbd, - 0x36, 0x11, 0xa1, 0x2b, 0x17, 0x57, 0x8c, 0xde, 0x8d, 0x64, 0x3d, 0xa9, 0xe8, 0x45, 0x61, 0x24, - 0x9f, 0xc6, 0x23, 0xf9, 0xd8, 0x3e, 0x12, 0xb6, 0xcc, 0xee, 0x48, 0x36, 0x19, 0x5f, 0xee, 0xa3, - 0xfa, 0x74, 0x0e, 0xd5, 0x1b, 0x85, 0xca, 0x4c, 0x1f, 0xd1, 0xf7, 0x66, 0x01, 0x88, 0x99, 0xb1, - 0xe1, 0x4e, 0x80, 0xc4, 0x6c, 0xac, 0x9f, 0xcb, 0x86, 0x64, 0x59, 0xe4, 0x65, 0xf9, 0xf8, 0x08, - 0x2b, 0x86, 0x90, 0x8f, 0x90, 0x68, 0x11, 0x72, 0xbb, 0xee, 0x67, 0x26, 0x51, 0x41, 0x12, 0xe4, - 0x55, 0xa5, 0x7f, 0xa2, 0x3f, 0xce, 0x40, 0x8e, 0x24, 0x28, 0xa7, 0x01, 0xc8, 0xc0, 0x4e, 0x0f, - 0x04, 0x65, 0xc8, 0x10, 0x1e, 0x4a, 0x21, 0xda, 0xaa, 0xb7, 0xd9, 0x67, 0x6a, 0x32, 0x07, 0x09, - 0xee, 0xdf, 0x64, 0xb8, 0x27, 0xb4, 0x98, 0x01, 0x10, 0x4a, 0x71, 0xff, 0x26, 0x6f, 0xab, 0x78, - 0x93, 0x06, 0x4a, 0xce, 0xaa, 0x41, 0x82, 0xff, 0xf7, 0xaa, 0x7f, 0xbd, 0x96, 0xf7, 0x37, 0x49, - 0x71, 0x27, 0xc3, 0x44, 0x2d, 0x17, 0x82, 0x22, 0xf2, 0x24, 0x53, 0x6f, 0x32, 0x7a, 0x8d, 0xaf, - 0x36, 0x8b, 0x9c, 0xda, 0xdc, 0x92, 0x40, 0xbc, 0xe9, 0x2b, 0xcf, 0x97, 0x73, 0x30, 0x55, 0x35, - 0xdb, 0x4c, 0x77, 0x42, 0x13, 0xc6, 0x8f, 0xe5, 0x12, 0x4d, 0x18, 0x7d, 0x1a, 0x11, 0x0a, 0x72, - 0x37, 0xaf, 0x20, 0x62, 0x14, 0xc2, 0xfa, 0xa1, 0x2c, 0x40, 0x9e, 0x68, 0xef, 0xfe, 0x7b, 0x9b, - 0xe2, 0x48, 0x10, 0xd1, 0xaa, 0xec, 0xcf, 0xff, 0x70, 0x3a, 0xf6, 0x5f, 0x21, 0x47, 0x2a, 0x18, - 0xb3, 0xbb, 0xc3, 0x57, 0x54, 0x8a, 0xaf, 0xa8, 0x1c, 0x5f, 0xd1, 0x6c, 0x6f, 0x45, 0x93, 0xac, - 0x03, 0x44, 0x69, 0x48, 0xfa, 0x3a, 0xfe, 0x0f, 0x13, 0x00, 0x55, 0x6d, 0x4f, 0xdf, 0xa2, 0xbb, - 0xc3, 0x9f, 0xf3, 0xe6, 0x3f, 0x6c, 0x1f, 0xf7, 0xbf, 0x85, 0x06, 0xc2, 0xdb, 0x60, 0x82, 0x8d, - 0x7b, 0xac, 0x22, 0x57, 0x73, 0x15, 0x09, 0xa8, 0x50, 0xb3, 0xf4, 0x01, 0x47, 0xf5, 0xf2, 0x73, - 0x57, 0xcc, 0x4a, 0x3d, 0x57, 0xcc, 0xf6, 0xdf, 0x83, 0x88, 0xb8, 0x78, 0x16, 0xbd, 0x4b, 0xd8, - 0xa3, 0x3f, 0xc4, 0x4f, 0xa8, 0x46, 0x11, 0x4d, 0xf0, 0x49, 0x30, 0x61, 0xfa, 0x1b, 0xda, 0x72, - 0xe4, 0x3a, 0x58, 0xc5, 0xd8, 0x34, 0x55, 0x2f, 0xa7, 0xe0, 0xe6, 0x97, 0x10, 0x1f, 0x63, 0x39, - 0x34, 0x73, 0x72, 0xd9, 0x0b, 0x3a, 0xe5, 0xd6, 0xe3, 0x9c, 0xee, 0x6c, 0xaf, 0xea, 0xc6, 0x05, - 0x1b, 0xfd, 0x67, 0x31, 0x0b, 0x32, 0x84, 0xbf, 0x94, 0x0c, 0x7f, 0x3e, 0x66, 0x47, 0x9d, 0x47, - 0xed, 0xce, 0x28, 0x2a, 0xfd, 0xb9, 0x8d, 0x00, 0xf0, 0x76, 0xc8, 0x53, 0x46, 0x59, 0x27, 0x7a, - 0x26, 0x12, 0x3f, 0x9f, 0x92, 0xca, 0xfe, 0x40, 0xef, 0xf4, 0x71, 0x3c, 0xcb, 0xe1, 0xb8, 0x70, - 0x20, 0xce, 0x52, 0x87, 0xf4, 0xcc, 0x13, 0x61, 0x82, 0x49, 0x5a, 0x99, 0x0b, 0xb7, 0xe2, 0xc2, - 0x11, 0x05, 0x20, 0xbf, 0x66, 0xee, 0xe1, 0x86, 0x59, 0xc8, 0xb8, 0xcf, 0x2e, 0x7f, 0x0d, 0xb3, - 0x20, 0xa1, 0x57, 0x4c, 0xc2, 0xa4, 0x1f, 0xed, 0xe7, 0xb3, 0x12, 0x14, 0x4a, 0x16, 0xd6, 0x1c, - 0xbc, 0x64, 0x99, 0x3b, 0xb4, 0x46, 0xe2, 0xde, 0xa1, 0xbf, 0x26, 0xec, 0xe2, 0xe1, 0x47, 0xe1, - 0xe9, 0x2d, 0x2c, 0x02, 0x4b, 0xba, 0x08, 0x29, 0x79, 0x8b, 0x90, 0xe8, 0x4d, 0x42, 0x2e, 0x1f, - 0xa2, 0xa5, 0xa4, 0xdf, 0xd4, 0x3e, 0x29, 0x41, 0xae, 0xd4, 0x31, 0x0d, 0x1c, 0x3e, 0xc2, 0x34, - 0xf0, 0xac, 0x4c, 0xff, 0x9d, 0x08, 0xf4, 0x2c, 0x49, 0xd4, 0xd6, 0x08, 0x04, 0xe0, 0x96, 0x2d, - 0x28, 0x5b, 0xb1, 0x41, 0x2a, 0x96, 0x74, 0xfa, 0x02, 0xfd, 0xba, 0x04, 0x53, 0x34, 0x2e, 0x4e, - 0xb1, 0xd3, 0x41, 0x8f, 0x09, 0x84, 0xda, 0x27, 0x62, 0x12, 0xfa, 0x1d, 0x61, 0x17, 0x7d, 0xbf, - 0x56, 0x3e, 0xed, 0x04, 0x01, 0x82, 0x92, 0x79, 0x8c, 0x8b, 0xed, 0xa5, 0x0d, 0x64, 0x28, 0x7d, - 0x51, 0xff, 0xb9, 0xe4, 0x1a, 0x00, 0xc6, 0x85, 0x75, 0x0b, 0xef, 0xe9, 0xf8, 0x22, 0xba, 0x32, - 0x10, 0xf6, 0xfe, 0xa0, 0x1f, 0x6f, 0x10, 0x5e, 0xc4, 0x09, 0x91, 0x8c, 0xdc, 0xca, 0x9a, 0xee, - 0x04, 0x99, 0x58, 0x2f, 0xde, 0x1b, 0x89, 0x25, 0x44, 0x46, 0x0d, 0x67, 0x17, 0x5c, 0xb3, 0x89, - 0xe6, 0x22, 0x7d, 0xc1, 0x7e, 0x60, 0x02, 0x26, 0x37, 0x0c, 0xbb, 0xdb, 0xd1, 0xec, 0x6d, 0xf4, - 0x5d, 0x19, 0xf2, 0xf4, 0xb6, 0x30, 0xf4, 0x23, 0x5c, 0x6c, 0x81, 0x9f, 0xda, 0xc5, 0x96, 0xe7, - 0x82, 0x43, 0x5f, 0xfa, 0x5f, 0x66, 0x8e, 0xde, 0x2b, 0x8b, 0x4e, 0x52, 0xbd, 0x42, 0x43, 0xd7, - 0xc6, 0xf7, 0x3f, 0xce, 0xde, 0xd5, 0x5b, 0xce, 0xae, 0xe5, 0x5f, 0x8d, 0xfd, 0x04, 0x31, 0x2a, - 0xeb, 0xf4, 0x2f, 0xd5, 0xff, 0x1d, 0x69, 0x30, 0xc1, 0x12, 0xf7, 0x6d, 0x27, 0xed, 0x3f, 0x7f, - 0x7b, 0x12, 0xf2, 0x9a, 0xe5, 0xe8, 0xb6, 0xc3, 0x36, 0x58, 0xd9, 0x9b, 0xdb, 0x5d, 0xd2, 0xa7, - 0x0d, 0xab, 0xe3, 0x45, 0x21, 0xf1, 0x13, 0xd0, 0xef, 0x0a, 0xcd, 0x1f, 0xe3, 0x6b, 0x9e, 0x0c, - 0xf2, 0x7b, 0x87, 0x58, 0xa3, 0xbe, 0x1c, 0x2e, 0x53, 0x8b, 0x8d, 0x72, 0x93, 0x06, 0xad, 0xf0, - 0xe3, 0x53, 0xb4, 0xd1, 0x3b, 0xe4, 0xd0, 0xfa, 0xdd, 0x25, 0x6e, 0x8c, 0x60, 0x52, 0x0c, 0xc6, - 0x08, 0x3f, 0x21, 0x66, 0xb7, 0x9a, 0x5b, 0x84, 0x95, 0xc5, 0x17, 0x61, 0x7f, 0x4b, 0x78, 0x37, - 0xc9, 0x17, 0xe5, 0x80, 0x35, 0xc0, 0xb8, 0xdb, 0x84, 0xde, 0x27, 0xb4, 0x33, 0x34, 0xa8, 0xa4, - 0x43, 0x84, 0xed, 0xf5, 0x13, 0x30, 0xb1, 0xac, 0x75, 0x3a, 0xd8, 0xba, 0xe4, 0x0e, 0x49, 0x05, - 0x8f, 0xc3, 0x35, 0xcd, 0xd0, 0x37, 0xb1, 0xed, 0xc4, 0x77, 0x96, 0xef, 0x12, 0x8e, 0x54, 0xcb, - 0xca, 0x98, 0xef, 0xa5, 0x1f, 0x21, 0xf3, 0x9b, 0x21, 0xab, 0x1b, 0x9b, 0x26, 0xeb, 0x32, 0x7b, - 0x57, 0xed, 0xbd, 0x9f, 0xc9, 0xd4, 0x85, 0x64, 0x14, 0x0c, 0x56, 0x2b, 0xc8, 0x45, 0xfa, 0x3d, - 0xe7, 0x6f, 0x67, 0x61, 0xd6, 0x63, 0xa2, 0x62, 0xb4, 0xf1, 0x03, 0xe1, 0xa5, 0x98, 0x17, 0x66, - 0x45, 0x8f, 0x83, 0xf5, 0xd6, 0x87, 0x90, 0x8a, 0x10, 0x69, 0x03, 0xa0, 0xa5, 0x39, 0x78, 0xcb, - 0xb4, 0x74, 0xbf, 0x3f, 0x7c, 0x72, 0x12, 0x6a, 0x25, 0xfa, 0xf7, 0x25, 0x35, 0x44, 0x47, 0xb9, - 0x13, 0xa6, 0xb1, 0x7f, 0xfe, 0xde, 0x5b, 0xaa, 0x89, 0xc5, 0x2b, 0x9c, 0x1f, 0xfd, 0xb9, 0xd0, - 0xa9, 0x33, 0x91, 0x6a, 0x26, 0xc3, 0xac, 0x39, 0x5c, 0x1b, 0xda, 0xa8, 0xae, 0x15, 0xd5, 0xfa, - 0x4a, 0x71, 0x75, 0xb5, 0x52, 0x5d, 0xf6, 0x03, 0xbf, 0x28, 0x30, 0xb7, 0x58, 0x3b, 0x57, 0x0d, - 0x45, 0xe6, 0xc9, 0xa2, 0x75, 0x98, 0xf4, 0xe4, 0xd5, 0xcf, 0x17, 0x33, 0x2c, 0x33, 0xe6, 0x8b, - 0x19, 0x4a, 0x72, 0x8d, 0x33, 0xbd, 0xe5, 0x3b, 0xe8, 0x90, 0x67, 0xf4, 0x47, 0x1a, 0xe4, 0xc8, - 0x9a, 0x3a, 0x7a, 0x1b, 0xd9, 0x06, 0xec, 0x76, 0xb4, 0x16, 0x46, 0x3b, 0x09, 0xac, 0x71, 0xef, - 0xea, 0x04, 0x69, 0xdf, 0xd5, 0x09, 0xe4, 0x91, 0x59, 0x7d, 0xc7, 0xfb, 0xad, 0xe3, 0xab, 0x34, - 0x0b, 0x7f, 0x40, 0x2b, 0x76, 0x77, 0x85, 0x2e, 0xff, 0x33, 0x36, 0x23, 0x54, 0x32, 0x9a, 0xa7, - 0x64, 0x96, 0xa8, 0xd8, 0x3e, 0x4c, 0x1c, 0x47, 0x63, 0xb8, 0xde, 0x3b, 0x0b, 0xb9, 0x7a, 0xb7, - 0xa3, 0x3b, 0xe8, 0x25, 0xd2, 0x48, 0x30, 0xa3, 0xd7, 0x5d, 0xc8, 0x03, 0xaf, 0xbb, 0x08, 0x76, - 0x5d, 0xb3, 0x02, 0xbb, 0xae, 0x0d, 0xfc, 0x80, 0xc3, 0xef, 0xba, 0xde, 0xc6, 0x82, 0xb7, 0xd1, - 0x3d, 0xdb, 0xc7, 0xf6, 0x11, 0x29, 0xa9, 0x56, 0x9f, 0xa8, 0x80, 0x67, 0x9e, 0xc8, 0x82, 0x93, - 0x01, 0xe4, 0x17, 0x6a, 0x8d, 0x46, 0x6d, 0xad, 0x70, 0x84, 0x44, 0xb5, 0xa9, 0xad, 0xd3, 0x50, - 0x31, 0x95, 0x6a, 0xb5, 0xac, 0x16, 0x24, 0x12, 0x2e, 0xad, 0xd2, 0x58, 0x2d, 0x17, 0x64, 0x3e, - 0xf6, 0x79, 0xac, 0xf9, 0xcd, 0x97, 0x9d, 0xa6, 0x7a, 0x89, 0x19, 0xe2, 0xd1, 0xfc, 0xa4, 0xaf, - 0x5c, 0xbf, 0x2a, 0x43, 0x6e, 0x0d, 0x5b, 0x5b, 0x18, 0xfd, 0x54, 0x82, 0x4d, 0xbe, 0x4d, 0xdd, - 0xb2, 0x69, 0x70, 0xb9, 0x60, 0x93, 0x2f, 0x9c, 0xa6, 0x5c, 0x07, 0xb3, 0x36, 0x6e, 0x99, 0x46, - 0xdb, 0xcb, 0x44, 0xfb, 0x23, 0x3e, 0x91, 0xbf, 0x77, 0x5e, 0x00, 0x32, 0xc2, 0xe8, 0x48, 0x76, - 0xea, 0x92, 0x00, 0xd3, 0xaf, 0xd4, 0xf4, 0x81, 0xf9, 0x96, 0xec, 0xfe, 0xd4, 0xbd, 0x84, 0x5e, - 0x2c, 0xbc, 0xfb, 0x7a, 0x13, 0xe4, 0x89, 0x9a, 0x7a, 0x63, 0x74, 0xff, 0xfe, 0x98, 0xe5, 0x51, - 0x16, 0xe0, 0x98, 0x8d, 0x3b, 0xb8, 0xe5, 0xe0, 0xb6, 0xdb, 0x74, 0xd5, 0x81, 0x9d, 0xc2, 0xfe, - 0xec, 0xe8, 0x4f, 0xc3, 0x00, 0xde, 0xc1, 0x03, 0x78, 0x7d, 0x1f, 0x51, 0xba, 0x15, 0x8a, 0xb6, - 0x95, 0xdd, 0x6a, 0xd4, 0x3b, 0xa6, 0xbf, 0x28, 0xee, 0xbd, 0xbb, 0xdf, 0xb6, 0x9d, 0x9d, 0x0e, - 0xf9, 0xc6, 0x0e, 0x18, 0x78, 0xef, 0xca, 0x3c, 0x4c, 0x68, 0xc6, 0x25, 0xf2, 0x29, 0x1b, 0x53, - 0x6b, 0x2f, 0x13, 0x7a, 0x85, 0x8f, 0xfc, 0x5d, 0x1c, 0xf2, 0x8f, 0x17, 0x63, 0x37, 0x7d, 0xe0, - 0x7f, 0x76, 0x02, 0x72, 0xeb, 0x9a, 0xed, 0x60, 0xf4, 0xff, 0xc8, 0xa2, 0xc8, 0x5f, 0x0f, 0x73, - 0x9b, 0x66, 0x6b, 0xd7, 0xc6, 0x6d, 0xbe, 0x51, 0xf6, 0xa4, 0x8e, 0x02, 0x73, 0xe5, 0x46, 0x28, - 0x78, 0x89, 0x8c, 0xac, 0xb7, 0x0d, 0xbf, 0x2f, 0x9d, 0x44, 0xd2, 0xb6, 0xd7, 0x35, 0xcb, 0xa9, - 0x6d, 0x92, 0x34, 0x3f, 0x92, 0x76, 0x38, 0x91, 0x83, 0x3e, 0x1f, 0x03, 0xfd, 0x44, 0x34, 0xf4, - 0x93, 0x02, 0xd0, 0x2b, 0x45, 0x98, 0xdc, 0xd4, 0x3b, 0x98, 0xfc, 0x30, 0x45, 0x7e, 0xe8, 0x37, - 0x26, 0x11, 0xd9, 0xfb, 0x63, 0xd2, 0x92, 0xde, 0xc1, 0xaa, 0xff, 0x9b, 0x37, 0x91, 0x81, 0x60, - 0x22, 0xb3, 0x4a, 0xfd, 0x69, 0x5d, 0xc3, 0xcb, 0xd0, 0x76, 0xb0, 0xb7, 0xf8, 0x66, 0xb0, 0xc3, - 0x2d, 0x6d, 0xcd, 0xd1, 0x08, 0x18, 0x33, 0x2a, 0x79, 0xe6, 0xfd, 0x42, 0xe4, 0x5e, 0xbf, 0x90, - 0xe7, 0xc8, 0xc9, 0x7a, 0x44, 0x8f, 0xd9, 0x88, 0x16, 0x75, 0xde, 0x03, 0x88, 0x5a, 0x8a, 0xfe, - 0xbb, 0x0b, 0x4c, 0x4b, 0xb3, 0xb0, 0xb3, 0x1e, 0xf6, 0xc4, 0xc8, 0xa9, 0x7c, 0x22, 0x71, 0xe5, - 0xb3, 0xeb, 0xda, 0x0e, 0x26, 0x85, 0x95, 0xdc, 0x6f, 0xcc, 0x45, 0x6b, 0x5f, 0x7a, 0xd0, 0xff, - 0xe6, 0x46, 0xdd, 0xff, 0xf6, 0xab, 0x63, 0xfa, 0xcd, 0xf0, 0xd5, 0x59, 0x90, 0x4b, 0xbb, 0xce, - 0xa3, 0xba, 0xfb, 0xfd, 0x9e, 0xb0, 0x9f, 0x0b, 0xeb, 0xcf, 0x22, 0x2f, 0x9a, 0x1f, 0x53, 0xef, - 0x9b, 0x50, 0x4b, 0xc4, 0xfc, 0x69, 0xa2, 0xea, 0x36, 0x86, 0x7b, 0x0d, 0x64, 0xdf, 0xc1, 0xf2, - 0xc1, 0xcc, 0xc1, 0x4d, 0x73, 0x44, 0xfb, 0xa7, 0x50, 0xcf, 0xe0, 0xbf, 0x7b, 0x1d, 0x4f, 0x96, - 0x8b, 0xd5, 0x47, 0xb6, 0xd7, 0x89, 0x28, 0x67, 0x54, 0xfa, 0x82, 0x5e, 0x2a, 0xec, 0x76, 0x4e, - 0xc5, 0x16, 0xeb, 0x4a, 0x98, 0xcc, 0xa6, 0x12, 0xbb, 0x4c, 0x34, 0xa6, 0xd8, 0xf4, 0x01, 0xfb, - 0x66, 0xd8, 0x55, 0xb0, 0x78, 0x60, 0xc4, 0xd0, 0x2b, 0x85, 0xb7, 0xa3, 0x68, 0xb5, 0x07, 0xac, - 0x17, 0x26, 0x93, 0xb7, 0xd8, 0x66, 0x55, 0x6c, 0xc1, 0xe9, 0x4b, 0xfc, 0x1b, 0x32, 0xe4, 0xe9, - 0x16, 0x24, 0x7a, 0x63, 0x26, 0xc1, 0x2d, 0xec, 0x0e, 0xef, 0x42, 0xe8, 0xbf, 0x27, 0x59, 0x73, - 0xe0, 0x5c, 0x0d, 0xb3, 0x89, 0x5c, 0x0d, 0xf9, 0x73, 0x9c, 0x02, 0xed, 0x88, 0xd6, 0x31, 0xe5, - 0xe9, 0x64, 0x92, 0x16, 0xd6, 0x97, 0xa1, 0xf4, 0xf1, 0xfe, 0xf9, 0x1c, 0xcc, 0xd0, 0xa2, 0xcf, - 0xe9, 0xed, 0x2d, 0xec, 0xa0, 0x77, 0x48, 0xdf, 0x3f, 0xa8, 0x2b, 0x55, 0x98, 0xb9, 0x48, 0xd8, - 0x5e, 0xd5, 0x2e, 0x99, 0xbb, 0x0e, 0x5b, 0xb9, 0xb8, 0x31, 0x76, 0xdd, 0x83, 0xd6, 0x73, 0x9e, - 0xfe, 0xa1, 0x72, 0xff, 0xbb, 0x32, 0xa6, 0x0b, 0xfe, 0xd4, 0x81, 0x2b, 0x4f, 0x8c, 0xac, 0x70, - 0x92, 0x72, 0x12, 0xf2, 0x7b, 0x3a, 0xbe, 0x58, 0x69, 0x33, 0xeb, 0x96, 0xbd, 0xa1, 0xdf, 0x17, - 0xde, 0xb7, 0x0d, 0xc3, 0xcd, 0x78, 0x49, 0x57, 0x0b, 0xc5, 0x76, 0x6f, 0x07, 0xb2, 0x35, 0x86, - 0x33, 0xc5, 0xfc, 0x65, 0x9d, 0xa5, 0x04, 0x8a, 0x18, 0x65, 0x38, 0xf3, 0xa1, 0x3c, 0x62, 0x4f, - 0xac, 0x50, 0x01, 0x8c, 0xf8, 0x1e, 0x4f, 0xb1, 0xf8, 0x12, 0x03, 0x8a, 0x4e, 0x5f, 0xf2, 0xaf, - 0x91, 0x61, 0xaa, 0x8e, 0x9d, 0x25, 0x1d, 0x77, 0xda, 0x36, 0xb2, 0x0e, 0x6e, 0x1a, 0xdd, 0x0c, - 0xf9, 0x4d, 0x42, 0x6c, 0xd0, 0xb9, 0x05, 0x96, 0x0d, 0xbd, 0x5a, 0x12, 0xdd, 0x11, 0x66, 0xab, - 0x6f, 0x1e, 0xb7, 0x23, 0x81, 0x49, 0xcc, 0xa3, 0x37, 0xbe, 0xe4, 0x31, 0x04, 0xb6, 0x95, 0x61, - 0x86, 0xdd, 0xee, 0x57, 0xec, 0xe8, 0x5b, 0x06, 0xda, 0x1d, 0x41, 0x0b, 0x51, 0x6e, 0x81, 0x9c, - 0xe6, 0x52, 0x63, 0x5b, 0xaf, 0xa8, 0x6f, 0xe7, 0x49, 0xca, 0x53, 0x69, 0xc6, 0x04, 0x61, 0x24, - 0x03, 0xc5, 0xf6, 0x78, 0x1e, 0x63, 0x18, 0xc9, 0x81, 0x85, 0xa7, 0x8f, 0xd8, 0x97, 0x64, 0x38, - 0xce, 0x18, 0x38, 0x8b, 0x2d, 0x47, 0x6f, 0x69, 0x1d, 0x8a, 0xdc, 0x43, 0x99, 0x51, 0x40, 0xb7, - 0x02, 0xb3, 0x7b, 0x61, 0xb2, 0x0c, 0xc2, 0x33, 0x7d, 0x21, 0xe4, 0x18, 0x50, 0xf9, 0x1f, 0x13, - 0x84, 0xe3, 0xe3, 0xa4, 0xca, 0xd1, 0x1c, 0x63, 0x38, 0x3e, 0x61, 0x26, 0xd2, 0x87, 0xf8, 0x45, - 0x2c, 0x34, 0x4f, 0xd0, 0x7d, 0x7e, 0x4e, 0x18, 0xdb, 0x0d, 0x98, 0x26, 0x58, 0xd2, 0x1f, 0xd9, - 0x32, 0x44, 0x8c, 0x12, 0xfb, 0xfd, 0x0e, 0xbb, 0x30, 0xcc, 0xff, 0x57, 0x0d, 0xd3, 0x41, 0xe7, - 0x00, 0x82, 0x4f, 0xe1, 0x4e, 0x3a, 0x13, 0xd5, 0x49, 0x4b, 0x62, 0x9d, 0xf4, 0x1b, 0x84, 0x83, - 0xa5, 0xf4, 0x67, 0xfb, 0xe0, 0xea, 0x21, 0x16, 0x26, 0x63, 0x70, 0xe9, 0xe9, 0xeb, 0xc5, 0x2b, - 0xb2, 0xbd, 0xd7, 0xb8, 0x7f, 0x78, 0x24, 0xf3, 0xa9, 0x70, 0x7f, 0x20, 0xf7, 0xf4, 0x07, 0x07, - 0xb0, 0xa4, 0x6f, 0x80, 0xa3, 0xb4, 0x88, 0x92, 0xcf, 0x56, 0x8e, 0x86, 0x82, 0xe8, 0x49, 0x46, - 0x1f, 0x19, 0x42, 0x09, 0x06, 0xdd, 0x31, 0x1f, 0xd7, 0xc9, 0x25, 0x33, 0x76, 0x93, 0x2a, 0xc8, - 0xe1, 0x5d, 0x4d, 0xff, 0xf5, 0x2c, 0xb5, 0x76, 0x37, 0xc8, 0x9d, 0x6e, 0xe8, 0x2f, 0xb2, 0xa3, - 0x18, 0x11, 0xee, 0x86, 0x2c, 0x71, 0x71, 0x97, 0x23, 0x97, 0x34, 0x82, 0x22, 0x83, 0x0b, 0xf7, - 0xf0, 0x03, 0xce, 0xca, 0x11, 0x95, 0xfc, 0xa9, 0xdc, 0x08, 0x47, 0xcf, 0x6b, 0xad, 0x0b, 0x5b, - 0x96, 0xb9, 0x4b, 0x6e, 0xbf, 0x32, 0xd9, 0x35, 0x5a, 0xe4, 0x3a, 0x42, 0xfe, 0x83, 0x72, 0xab, - 0x67, 0x3a, 0xe4, 0x06, 0x99, 0x0e, 0x2b, 0x47, 0x98, 0xf1, 0xa0, 0x3c, 0xd1, 0xef, 0x74, 0xf2, - 0xb1, 0x9d, 0xce, 0xca, 0x11, 0xaf, 0xdb, 0x51, 0x16, 0x61, 0xb2, 0xad, 0xef, 0x91, 0xad, 0x6a, - 0x32, 0xeb, 0x1a, 0x74, 0x74, 0x79, 0x51, 0xdf, 0xa3, 0x1b, 0xdb, 0x2b, 0x47, 0x54, 0xff, 0x4f, - 0x65, 0x19, 0xa6, 0xc8, 0xb6, 0x00, 0x21, 0x33, 0x99, 0xe8, 0x58, 0xf2, 0xca, 0x11, 0x35, 0xf8, - 0xd7, 0xb5, 0x3e, 0xb2, 0xe4, 0xec, 0xc7, 0x5d, 0xde, 0x76, 0x7b, 0x26, 0xd1, 0x76, 0xbb, 0x2b, - 0x0b, 0xba, 0xe1, 0x7e, 0x12, 0x72, 0x2d, 0x22, 0x61, 0x89, 0x49, 0x98, 0xbe, 0x2a, 0x77, 0x40, - 0x76, 0x47, 0xb3, 0xbc, 0xc9, 0xf3, 0xf5, 0x83, 0xe9, 0xae, 0x69, 0xd6, 0x05, 0x17, 0x41, 0xf7, - 0xaf, 0x85, 0x09, 0xc8, 0x11, 0xc1, 0xf9, 0x0f, 0xe8, 0xcd, 0x59, 0x6a, 0x86, 0x94, 0x4c, 0xc3, - 0x1d, 0xf6, 0x1b, 0xa6, 0x77, 0x40, 0xe6, 0xf7, 0x33, 0xa3, 0xb1, 0x20, 0xfb, 0xde, 0x7b, 0x2e, - 0x47, 0xde, 0x7b, 0xde, 0x73, 0x01, 0x6f, 0xb6, 0xf7, 0x02, 0xde, 0x60, 0xf9, 0x20, 0x37, 0xd8, - 0x51, 0xe5, 0x4f, 0x87, 0x30, 0x5d, 0x7a, 0x05, 0x11, 0x3d, 0x03, 0xef, 0xe8, 0x46, 0xa8, 0xce, - 0xde, 0x6b, 0xc2, 0x4e, 0x29, 0xa9, 0x51, 0x33, 0x80, 0xbd, 0xf4, 0xfb, 0xa6, 0xdf, 0xcc, 0xc2, - 0x29, 0x7a, 0xcd, 0xf3, 0x1e, 0x6e, 0x98, 0xfc, 0x7d, 0x93, 0xe8, 0x13, 0x23, 0x51, 0x9a, 0x3e, - 0x03, 0x8e, 0xdc, 0x77, 0xc0, 0xd9, 0x77, 0x48, 0x39, 0x3b, 0xe0, 0x90, 0x72, 0x2e, 0xd9, 0xca, - 0xe1, 0xfb, 0xc3, 0xfa, 0xb3, 0xce, 0xeb, 0xcf, 0xed, 0x11, 0x00, 0xf5, 0x93, 0xcb, 0x48, 0xec, - 0x9b, 0xb7, 0xf9, 0x9a, 0x52, 0xe7, 0x34, 0xe5, 0xae, 0xe1, 0x19, 0x49, 0x5f, 0x5b, 0x7e, 0x2f, - 0x0b, 0x97, 0x05, 0xcc, 0x54, 0xf1, 0x45, 0xa6, 0x28, 0x9f, 0x1d, 0x89, 0xa2, 0x24, 0x8f, 0x81, - 0x90, 0xb6, 0xc6, 0xfc, 0xb1, 0xf0, 0xd9, 0xa1, 0x5e, 0xa0, 0x7c, 0xd9, 0x44, 0x28, 0xcb, 0x49, - 0xc8, 0xd3, 0x1e, 0x86, 0x41, 0xc3, 0xde, 0x12, 0x76, 0x37, 0x62, 0x27, 0x8e, 0x44, 0x79, 0x1b, - 0x83, 0xfe, 0xb0, 0x75, 0x8d, 0xc6, 0xae, 0x65, 0x54, 0x0c, 0xc7, 0x44, 0x3f, 0x33, 0x12, 0xc5, - 0xf1, 0xbd, 0xe1, 0xe4, 0x61, 0xbc, 0xe1, 0x86, 0x5a, 0xe5, 0xf0, 0x6a, 0x70, 0x28, 0xab, 0x1c, - 0x11, 0x85, 0xa7, 0x8f, 0xdf, 0x5b, 0x65, 0x38, 0xc9, 0x26, 0x5b, 0x0b, 0xbc, 0x85, 0x88, 0xee, - 0x1b, 0x05, 0x90, 0xc7, 0x3d, 0x33, 0x89, 0xdd, 0x72, 0x46, 0x5e, 0xf8, 0x93, 0x52, 0xb1, 0xf7, - 0x3b, 0x70, 0xd3, 0xc1, 0x1e, 0x0e, 0x47, 0x82, 0x94, 0xd8, 0xb5, 0x0e, 0x09, 0xd8, 0x48, 0x1f, - 0xb3, 0x17, 0xc8, 0x90, 0x67, 0xd7, 0xfb, 0x6f, 0xa4, 0xe2, 0x30, 0xc1, 0x47, 0x79, 0x16, 0xd8, - 0x91, 0x4b, 0x7c, 0xc9, 0x7d, 0x7a, 0x7b, 0x71, 0x87, 0x74, 0x8b, 0xfd, 0xb7, 0x24, 0x98, 0xae, - 0x63, 0xa7, 0xa4, 0x59, 0x96, 0xae, 0x6d, 0x8d, 0xca, 0xe3, 0x5b, 0xd4, 0x7b, 0x18, 0x7d, 0x3b, - 0x23, 0x7a, 0x9e, 0xc6, 0x5f, 0x08, 0xf7, 0x58, 0x8d, 0x88, 0x25, 0xf8, 0x88, 0xd0, 0x99, 0x99, - 0x41, 0xd4, 0xc6, 0xe0, 0xb1, 0x2d, 0xc1, 0x84, 0x77, 0x16, 0xef, 0x66, 0xee, 0x7c, 0xe6, 0xb6, - 0xb3, 0xe3, 0x1d, 0x83, 0x21, 0xcf, 0xfb, 0xcf, 0x80, 0xa1, 0x97, 0x27, 0x74, 0x94, 0x8f, 0x3f, - 0x48, 0x98, 0xac, 0x8d, 0x25, 0x71, 0x87, 0x3f, 0xac, 0xa3, 0x83, 0xbf, 0x33, 0xc1, 0x96, 0x23, - 0x57, 0x35, 0x07, 0x3f, 0x80, 0x3e, 0x27, 0xc3, 0x44, 0x1d, 0x3b, 0xee, 0x78, 0xcb, 0x5d, 0x6e, - 0x3a, 0xac, 0x86, 0x2b, 0xa1, 0x15, 0x8f, 0x29, 0xb6, 0x86, 0x71, 0x0f, 0x4c, 0x75, 0x2d, 0xb3, - 0x85, 0x6d, 0x9b, 0xad, 0x5e, 0x84, 0x1d, 0xd5, 0xfa, 0x8d, 0xfe, 0x84, 0xb5, 0xf9, 0x75, 0xef, - 0x1f, 0x35, 0xf8, 0x3d, 0xa9, 0x19, 0x40, 0x29, 0xb1, 0x0a, 0x8e, 0xdb, 0x0c, 0x88, 0x2b, 0x3c, - 0x7d, 0xa0, 0x3f, 0x2d, 0xc3, 0x4c, 0x1d, 0x3b, 0xbe, 0x14, 0x13, 0x6c, 0x72, 0x44, 0xc3, 0xcb, - 0x41, 0x29, 0x1f, 0x0c, 0x4a, 0xf1, 0xab, 0x01, 0x79, 0x69, 0xfa, 0xc4, 0xc6, 0x78, 0x35, 0xa0, - 0x18, 0x07, 0x63, 0x38, 0xbe, 0xf6, 0x58, 0x98, 0x22, 0xbc, 0x90, 0x06, 0xfb, 0x8b, 0xd9, 0xa0, - 0xf1, 0x7e, 0x3e, 0xa5, 0xc6, 0x7b, 0x27, 0xe4, 0x76, 0x34, 0xeb, 0x82, 0x4d, 0x1a, 0xee, 0xb4, - 0x88, 0xd9, 0xbe, 0xe6, 0x66, 0x57, 0xe9, 0x5f, 0xfd, 0xfd, 0x34, 0x73, 0xc9, 0xfc, 0x34, 0x1f, - 0x91, 0x12, 0x8d, 0x84, 0x74, 0xee, 0x30, 0xc2, 0x26, 0x9f, 0x60, 0xdc, 0x8c, 0x29, 0x3b, 0x7d, - 0xe5, 0x78, 0x48, 0x86, 0x49, 0x77, 0xdc, 0x26, 0xf6, 0xf8, 0xb9, 0x83, 0xab, 0x43, 0x7f, 0x43, - 0x3f, 0x61, 0x0f, 0xec, 0x49, 0x64, 0x74, 0xe6, 0x7d, 0x82, 0x1e, 0x38, 0xae, 0xf0, 0xf4, 0xf1, - 0x78, 0x3b, 0xc5, 0x83, 0xb4, 0x07, 0xf4, 0x3a, 0x19, 0xe4, 0x65, 0xec, 0x8c, 0xdb, 0x8a, 0x7c, - 0x8b, 0x70, 0x88, 0x23, 0x4e, 0x60, 0x84, 0xe7, 0xf9, 0x65, 0x3c, 0x9a, 0x06, 0x24, 0x16, 0xdb, - 0x48, 0x88, 0x81, 0xf4, 0x51, 0x7b, 0x37, 0x45, 0x8d, 0x6e, 0x2e, 0xfc, 0xf4, 0x08, 0x7a, 0xd5, - 0xf1, 0x2e, 0x7c, 0x78, 0x02, 0x24, 0x34, 0x0e, 0xab, 0xbd, 0xf5, 0x2b, 0x7c, 0x2c, 0x57, 0xf1, - 0x81, 0xdb, 0xd8, 0xb7, 0x71, 0xeb, 0x02, 0x6e, 0xa3, 0x9f, 0x38, 0x38, 0x74, 0xa7, 0x60, 0xa2, - 0x45, 0xa9, 0x11, 0xf0, 0x26, 0x55, 0xef, 0x35, 0xc1, 0xbd, 0xd2, 0x7c, 0x47, 0x44, 0x7f, 0x1f, - 0xe3, 0xbd, 0xd2, 0x02, 0xc5, 0x8f, 0xc1, 0x6c, 0xa1, 0xb3, 0x8c, 0x4a, 0xcb, 0x34, 0xd0, 0x7f, - 0x39, 0x38, 0x2c, 0x57, 0xc1, 0x94, 0xde, 0x32, 0x0d, 0x12, 0x86, 0xc2, 0x3b, 0x04, 0xe4, 0x27, - 0x78, 0x5f, 0xcb, 0x3b, 0xe6, 0xfd, 0x3a, 0xdb, 0x35, 0x0f, 0x12, 0x86, 0x35, 0x26, 0x5c, 0xd6, - 0x0f, 0xcb, 0x98, 0xe8, 0x53, 0x76, 0xfa, 0x90, 0x7d, 0x24, 0xf0, 0x6e, 0xa3, 0x5d, 0xe1, 0xa3, - 0x62, 0x15, 0x78, 0x98, 0xe1, 0x2c, 0x5c, 0x8b, 0x43, 0x19, 0xce, 0x62, 0x18, 0x18, 0xc3, 0x8d, - 0x15, 0x01, 0x8e, 0xa9, 0xaf, 0x01, 0x1f, 0x00, 0x9d, 0xd1, 0x99, 0x87, 0x43, 0xa2, 0x73, 0x38, - 0x26, 0xe2, 0xfb, 0x58, 0x88, 0x4c, 0x66, 0xf1, 0xa0, 0xff, 0x3a, 0x0a, 0x70, 0x6e, 0x1f, 0xc6, - 0x5f, 0x81, 0x7a, 0x2b, 0x24, 0xb8, 0x11, 0x7b, 0x9f, 0x04, 0x5d, 0x2a, 0x63, 0xbc, 0x2b, 0x5e, - 0xa4, 0xfc, 0xf4, 0x01, 0x7c, 0x9e, 0x0c, 0x73, 0xc4, 0x47, 0xa0, 0x83, 0x35, 0x8b, 0x76, 0x94, - 0x23, 0x71, 0x94, 0x7f, 0xbb, 0x70, 0x80, 0x1f, 0x5e, 0x0e, 0x01, 0x1f, 0x23, 0x81, 0x42, 0x2c, - 0xba, 0x8f, 0x20, 0x0b, 0x63, 0xd9, 0x46, 0x29, 0xf8, 0x2c, 0x30, 0x15, 0x1f, 0x0d, 0x1e, 0x09, - 0x3d, 0x72, 0x79, 0x61, 0x78, 0x8d, 0x6d, 0xcc, 0x1e, 0xb9, 0x22, 0x4c, 0xa4, 0x8f, 0xc9, 0xeb, - 0x6e, 0x61, 0x0b, 0xce, 0x0d, 0x72, 0x61, 0xfc, 0x2b, 0xb3, 0xfe, 0x89, 0xb6, 0x4f, 0x8f, 0xc4, - 0x03, 0xf3, 0x00, 0x01, 0xf1, 0x15, 0xc8, 0x5a, 0xe6, 0x45, 0xba, 0xb4, 0x35, 0xab, 0x92, 0x67, - 0x7a, 0x3d, 0x65, 0x67, 0x77, 0xc7, 0xa0, 0x27, 0x43, 0x67, 0x55, 0xef, 0x55, 0xb9, 0x0e, 0x66, - 0x2f, 0xea, 0xce, 0xf6, 0x0a, 0xd6, 0xda, 0xd8, 0x52, 0xcd, 0x8b, 0xc4, 0x63, 0x6e, 0x52, 0xe5, - 0x13, 0x79, 0xff, 0x15, 0x01, 0xfb, 0x92, 0xdc, 0x22, 0x3f, 0x96, 0xe3, 0x6f, 0x49, 0x2c, 0xcf, - 0x68, 0xae, 0xd2, 0x57, 0x98, 0xf7, 0xc8, 0x30, 0xa5, 0x9a, 0x17, 0x99, 0x92, 0xfc, 0x5f, 0x87, - 0xab, 0x23, 0x89, 0x27, 0x7a, 0x44, 0x72, 0x3e, 0xfb, 0x63, 0x9f, 0xe8, 0xc5, 0x16, 0x3f, 0x96, - 0x93, 0x4b, 0x33, 0xaa, 0x79, 0xb1, 0x8e, 0x1d, 0xda, 0x22, 0x50, 0x73, 0x44, 0x4e, 0xd6, 0xba, - 0x4d, 0x09, 0xb2, 0x79, 0xb8, 0xff, 0x9e, 0x74, 0x17, 0xc1, 0x17, 0x90, 0xcf, 0xe2, 0xb8, 0x77, - 0x11, 0x06, 0x72, 0x30, 0x86, 0x18, 0x29, 0x32, 0x4c, 0xab, 0xe6, 0x45, 0x77, 0x68, 0x58, 0xd2, - 0x3b, 0x9d, 0xd1, 0x8c, 0x90, 0x49, 0x8d, 0x7f, 0x4f, 0x0c, 0x1e, 0x17, 0x63, 0x37, 0xfe, 0x07, - 0x30, 0x90, 0x3e, 0x0c, 0xcf, 0xa1, 0x8d, 0xc5, 0x1b, 0xa1, 0x8d, 0xd1, 0xe0, 0x30, 0x6c, 0x83, - 0xf0, 0xd9, 0x38, 0xb4, 0x06, 0x11, 0xc5, 0xc1, 0x58, 0x76, 0x4e, 0xe6, 0x4a, 0x64, 0x98, 0x1f, - 0x6d, 0x9b, 0x78, 0x67, 0x32, 0xd7, 0x44, 0x36, 0xec, 0x72, 0x8c, 0x8c, 0x04, 0x8d, 0x04, 0x2e, - 0x88, 0x02, 0x3c, 0xa4, 0x8f, 0xc7, 0x07, 0x65, 0x98, 0xa1, 0x2c, 0x3c, 0x4a, 0xac, 0x80, 0xa1, - 0x1a, 0x55, 0xb8, 0x06, 0x87, 0xd3, 0xa8, 0x62, 0x38, 0x18, 0xcb, 0xad, 0xa0, 0xae, 0x1d, 0x37, - 0xc4, 0xf1, 0xf1, 0x28, 0x04, 0x87, 0x36, 0xc6, 0x46, 0x78, 0x84, 0x7c, 0x18, 0x63, 0xec, 0x90, - 0x8e, 0x91, 0x3f, 0xc7, 0x6f, 0x45, 0xa3, 0xc4, 0xe0, 0x00, 0x4d, 0x61, 0x84, 0x30, 0x0c, 0xd9, - 0x14, 0x0e, 0x09, 0x89, 0x2f, 0xcb, 0x00, 0x94, 0x81, 0x35, 0x73, 0x8f, 0x5c, 0xe6, 0x33, 0x82, - 0xee, 0xac, 0xd7, 0xad, 0x5e, 0x1e, 0xe0, 0x56, 0x9f, 0x30, 0x84, 0x4b, 0xd2, 0x95, 0xc0, 0x90, - 0x94, 0xdd, 0x4a, 0x8e, 0x7d, 0x25, 0x30, 0xbe, 0xfc, 0xf4, 0x31, 0xfe, 0x22, 0xb5, 0xe6, 0x82, - 0x03, 0xa6, 0xbf, 0x3e, 0x12, 0x94, 0x43, 0xb3, 0x7f, 0x99, 0x9f, 0xfd, 0x1f, 0x00, 0xdb, 0x61, - 0x6d, 0xc4, 0x41, 0x07, 0x47, 0xd3, 0xb7, 0x11, 0x0f, 0xef, 0x80, 0xe8, 0x4f, 0x67, 0xe1, 0x28, - 0xeb, 0x44, 0xbe, 0x1f, 0x20, 0x4e, 0x78, 0x0e, 0x8f, 0xeb, 0x24, 0x07, 0xa0, 0x3c, 0xaa, 0x05, - 0xa9, 0x24, 0x4b, 0x99, 0x02, 0xec, 0x8d, 0x65, 0x75, 0x23, 0x5f, 0x7e, 0xa0, 0xab, 0x19, 0x6d, - 0xf1, 0x70, 0xbf, 0x03, 0x80, 0xf7, 0xd6, 0x1a, 0x65, 0x7e, 0xad, 0xb1, 0xcf, 0xca, 0x64, 0xe2, - 0x9d, 0x6b, 0x22, 0x32, 0xca, 0xee, 0xd8, 0x77, 0xae, 0xa3, 0xcb, 0x4e, 0x1f, 0xa5, 0x77, 0xca, - 0x90, 0xad, 0x9b, 0x96, 0x83, 0x9e, 0x9b, 0xa4, 0x75, 0x52, 0xc9, 0x07, 0x20, 0x79, 0xef, 0x4a, - 0x89, 0xbb, 0xa5, 0xf9, 0xe6, 0xf8, 0xa3, 0xce, 0x9a, 0xa3, 0x11, 0xaf, 0x6e, 0xb7, 0xfc, 0xd0, - 0x75, 0xcd, 0x49, 0xe3, 0xe9, 0x50, 0xf9, 0xd5, 0xa3, 0x0f, 0x60, 0xa4, 0x16, 0x4f, 0x27, 0xb2, - 0xe4, 0xf4, 0x71, 0x7b, 0xf8, 0x28, 0xf3, 0x6d, 0x5d, 0xd2, 0x3b, 0x18, 0x3d, 0x97, 0xba, 0x8c, - 0x54, 0xb5, 0x1d, 0x2c, 0x7e, 0x24, 0x26, 0xd6, 0xb5, 0x95, 0xc4, 0x97, 0x95, 0x83, 0xf8, 0xb2, - 0x49, 0x1b, 0x14, 0x3d, 0x80, 0x4e, 0x59, 0x1a, 0x77, 0x83, 0x8a, 0x29, 0x7b, 0x2c, 0x71, 0x3a, - 0x8f, 0xd5, 0xb1, 0x43, 0x8d, 0xca, 0x9a, 0x77, 0x03, 0xcb, 0x4f, 0x8e, 0x24, 0x62, 0xa7, 0x7f, - 0xc1, 0x8b, 0xdc, 0x73, 0xc1, 0xcb, 0x7b, 0xc2, 0xe0, 0xac, 0xf1, 0xe0, 0xfc, 0x68, 0xb4, 0x80, - 0x78, 0x26, 0x47, 0x02, 0xd3, 0x5b, 0x7c, 0x98, 0xd6, 0x39, 0x98, 0xee, 0x18, 0x92, 0x8b, 0xf4, - 0x01, 0xfb, 0xa5, 0x1c, 0x1c, 0xa5, 0x93, 0xfe, 0xa2, 0xd1, 0x66, 0x11, 0x56, 0xdf, 0x28, 0x1d, - 0xf2, 0x66, 0xdb, 0xfe, 0x10, 0xac, 0x5c, 0x2c, 0xe7, 0x5c, 0xef, 0xed, 0xf8, 0x0b, 0x34, 0x9c, - 0xab, 0xdb, 0x89, 0x92, 0x9d, 0x36, 0xf1, 0x1b, 0xf2, 0xfd, 0xff, 0xf8, 0xbb, 0x8c, 0x26, 0xc4, - 0xef, 0x32, 0xfa, 0x93, 0x64, 0xeb, 0x76, 0xa4, 0xe8, 0x1e, 0x81, 0xa7, 0x6c, 0x3b, 0x25, 0x58, - 0xd1, 0x13, 0xe0, 0xee, 0x07, 0xc3, 0x9d, 0x2c, 0x88, 0x20, 0x32, 0xa4, 0x3b, 0x19, 0x21, 0x70, - 0x98, 0xee, 0x64, 0x83, 0x18, 0x18, 0xc3, 0xad, 0xf6, 0x39, 0xb6, 0x9b, 0x4f, 0xda, 0x0d, 0xfa, - 0x2b, 0x29, 0xf5, 0x51, 0xfa, 0x3b, 0x99, 0x44, 0xfe, 0xcf, 0x84, 0xaf, 0xf8, 0x61, 0x3a, 0x89, - 0x47, 0x73, 0x1c, 0xb9, 0x31, 0xac, 0x1b, 0x49, 0xc4, 0x17, 0xfd, 0x9c, 0xde, 0x76, 0xb6, 0x47, - 0x74, 0xa2, 0xe3, 0xa2, 0x4b, 0xcb, 0xbb, 0x1e, 0x99, 0xbc, 0xa0, 0x7f, 0xcb, 0x24, 0x0a, 0x21, - 0xe5, 0x8b, 0x84, 0xb0, 0x15, 0x21, 0xe2, 0x04, 0x81, 0x9f, 0x62, 0xe9, 0x8d, 0x51, 0xa3, 0xcf, - 0xea, 0x6d, 0x6c, 0x3e, 0x0a, 0x35, 0x9a, 0xf0, 0x35, 0x3a, 0x8d, 0x8e, 0x23, 0xf7, 0x03, 0xaa, - 0xd1, 0xbe, 0x48, 0x46, 0xa4, 0xd1, 0xb1, 0xf4, 0xd2, 0x97, 0xf1, 0xcb, 0x67, 0xd8, 0x44, 0x6a, - 0x55, 0x37, 0x2e, 0xa0, 0x7f, 0xce, 0x7b, 0x17, 0x33, 0x9f, 0xd3, 0x9d, 0x6d, 0x16, 0x0b, 0xe6, - 0xf7, 0x84, 0xef, 0x46, 0x19, 0x22, 0xde, 0x0b, 0x1f, 0x4e, 0x2a, 0xb7, 0x2f, 0x9c, 0x54, 0x11, - 0x66, 0x75, 0xc3, 0xc1, 0x96, 0xa1, 0x75, 0x96, 0x3a, 0xda, 0x96, 0x7d, 0x6a, 0xa2, 0xef, 0xe5, - 0x75, 0x95, 0x50, 0x1e, 0x95, 0xff, 0x23, 0x7c, 0x7d, 0xe5, 0x24, 0x7f, 0x7d, 0x65, 0x44, 0xf4, - 0xab, 0xa9, 0xe8, 0xe8, 0x57, 0x7e, 0x74, 0x2b, 0x18, 0x1c, 0x1c, 0x5b, 0xd4, 0x36, 0x4e, 0x18, - 0xee, 0xef, 0x66, 0xc1, 0x28, 0x6c, 0x7e, 0xe8, 0xc7, 0x57, 0xc9, 0x89, 0x56, 0xf7, 0x5c, 0x45, - 0x98, 0xef, 0x55, 0x82, 0xc4, 0x16, 0x6a, 0xb8, 0xf2, 0x72, 0x4f, 0xe5, 0x7d, 0x93, 0x27, 0x2b, - 0x60, 0xf2, 0x84, 0x95, 0x2a, 0x27, 0xa6, 0x54, 0x49, 0x16, 0x0b, 0x45, 0x6a, 0x3b, 0x86, 0xd3, - 0x48, 0x39, 0x38, 0xe6, 0x45, 0xbb, 0xed, 0x76, 0xb1, 0x66, 0x69, 0x46, 0x0b, 0xa3, 0x8f, 0x48, - 0xa3, 0x30, 0x7b, 0x97, 0x60, 0x52, 0x6f, 0x99, 0x46, 0x5d, 0x7f, 0xa6, 0x77, 0xb9, 0x5c, 0x7c, - 0x90, 0x75, 0x22, 0x91, 0x0a, 0xfb, 0x43, 0xf5, 0xff, 0x55, 0x2a, 0x30, 0xd5, 0xd2, 0xac, 0x36, - 0x0d, 0xc2, 0x97, 0xeb, 0xb9, 0xc8, 0x29, 0x92, 0x50, 0xc9, 0xfb, 0x45, 0x0d, 0xfe, 0x56, 0x6a, - 0xbc, 0x10, 0xf3, 0x3d, 0xd1, 0x3c, 0x22, 0x89, 0x2d, 0x06, 0x3f, 0x71, 0x32, 0x77, 0xa5, 0x63, - 0xe1, 0x0e, 0xb9, 0x83, 0x9e, 0xf6, 0x10, 0x53, 0x6a, 0x90, 0x90, 0x74, 0x79, 0x80, 0x14, 0xb5, - 0x0f, 0x8d, 0x71, 0x2f, 0x0f, 0x08, 0x71, 0x91, 0xbe, 0x66, 0xbe, 0x2d, 0x0f, 0xb3, 0xb4, 0x57, - 0x63, 0xe2, 0x44, 0xcf, 0x23, 0x57, 0x48, 0x3b, 0xf7, 0xe2, 0x4b, 0xa8, 0x7e, 0xf0, 0x31, 0xb9, - 0x00, 0xf2, 0x05, 0x3f, 0xe0, 0xa0, 0xfb, 0x98, 0x74, 0xdf, 0xde, 0xe3, 0x6b, 0x9e, 0xf2, 0x34, - 0xee, 0x7d, 0xfb, 0xf8, 0xe2, 0xd3, 0xc7, 0xe7, 0x97, 0x65, 0x90, 0x8b, 0xed, 0x36, 0x6a, 0x1d, - 0x1c, 0x8a, 0x6b, 0x60, 0xda, 0x6b, 0x33, 0x41, 0x0c, 0xc8, 0x70, 0x52, 0xd2, 0x45, 0x50, 0x5f, - 0x36, 0xc5, 0xf6, 0xd8, 0x77, 0x15, 0x62, 0xca, 0x4e, 0x1f, 0x94, 0x5f, 0x9f, 0x60, 0x8d, 0x66, - 0xc1, 0x34, 0x2f, 0x90, 0xa3, 0x32, 0xcf, 0x95, 0x21, 0xb7, 0x84, 0x9d, 0xd6, 0xf6, 0x88, 0xda, - 0xcc, 0xae, 0xd5, 0xf1, 0xda, 0xcc, 0xbe, 0xfb, 0xf0, 0x07, 0xdb, 0xb0, 0x1e, 0x5b, 0xf3, 0x84, - 0xa5, 0x71, 0x47, 0x77, 0x8e, 0x2d, 0x3d, 0x7d, 0x70, 0xfe, 0x4d, 0x86, 0x39, 0x7f, 0x85, 0x8b, - 0x62, 0xf2, 0x4b, 0x99, 0x47, 0xdb, 0x7a, 0x27, 0xfa, 0x6c, 0xb2, 0x10, 0x69, 0xbe, 0x4c, 0xf9, - 0x9a, 0xa5, 0xbc, 0xb0, 0x98, 0x20, 0x78, 0x9a, 0x18, 0x83, 0x63, 0x98, 0xc1, 0xcb, 0x30, 0x49, - 0x18, 0x5a, 0xd4, 0xf7, 0x88, 0xeb, 0x20, 0xb7, 0xd0, 0xf8, 0xac, 0x91, 0x2c, 0x34, 0xde, 0xc1, - 0x2f, 0x34, 0x0a, 0x46, 0x3c, 0xf6, 0xd6, 0x19, 0x13, 0xfa, 0xd2, 0xb8, 0xff, 0x8f, 0x7c, 0x99, - 0x31, 0x81, 0x2f, 0xcd, 0x80, 0xf2, 0xd3, 0x47, 0xf4, 0x55, 0xff, 0x89, 0x75, 0xb6, 0xde, 0x86, - 0x2a, 0xfa, 0x1f, 0xc7, 0x20, 0x7b, 0xd6, 0x7d, 0xf8, 0x5f, 0xc1, 0x8d, 0x58, 0x2f, 0x1e, 0x41, - 0x70, 0x86, 0xa7, 0x43, 0xd6, 0xa5, 0xcf, 0xa6, 0x2d, 0x37, 0x8a, 0xed, 0xee, 0xba, 0x8c, 0xa8, - 0xe4, 0x3f, 0xe5, 0x24, 0xe4, 0x6d, 0x73, 0xd7, 0x6a, 0xb9, 0xe6, 0xb3, 0xab, 0x31, 0xec, 0x2d, - 0x69, 0x50, 0x52, 0x8e, 0xf4, 0xfc, 0xe8, 0x5c, 0x46, 0x43, 0x17, 0x24, 0xc9, 0xdc, 0x05, 0x49, - 0x09, 0xf6, 0x0f, 0x04, 0x78, 0x4b, 0x5f, 0x23, 0xfe, 0x8a, 0xdc, 0x15, 0xd8, 0x1e, 0x15, 0xec, - 0x11, 0x62, 0x39, 0xa8, 0x3a, 0x24, 0x75, 0xf8, 0xe6, 0x45, 0xeb, 0xc7, 0x81, 0x1f, 0xab, 0xc3, - 0xb7, 0x00, 0x0f, 0x63, 0x39, 0xa5, 0x9e, 0x67, 0x4e, 0xaa, 0xf7, 0x8d, 0x12, 0xdd, 0x2c, 0xa7, - 0xf4, 0x07, 0x42, 0x67, 0x84, 0xce, 0xab, 0x43, 0xa3, 0x73, 0x48, 0xee, 0xab, 0x7f, 0x20, 0x93, - 0x48, 0x98, 0x9e, 0x91, 0x23, 0x7e, 0xd1, 0x51, 0x62, 0x88, 0xdc, 0x31, 0x98, 0x8b, 0x03, 0x3d, - 0x3b, 0x7c, 0x68, 0x70, 0x5e, 0x74, 0x21, 0xfe, 0xc7, 0x1d, 0x1a, 0x5c, 0x94, 0x91, 0xf4, 0x81, - 0x7c, 0x2d, 0xbd, 0x58, 0xac, 0xd8, 0x72, 0xf4, 0xbd, 0x11, 0xb7, 0x34, 0x7e, 0x78, 0x49, 0x18, - 0x0d, 0x78, 0x9f, 0x84, 0x28, 0x87, 0xe3, 0x8e, 0x06, 0x2c, 0xc6, 0x46, 0xfa, 0x30, 0xfd, 0x6d, - 0xde, 0x95, 0x1e, 0x5b, 0x9b, 0x79, 0x1d, 0x5b, 0x0d, 0xc0, 0x07, 0x47, 0xeb, 0x0c, 0xcc, 0x84, - 0xa6, 0xfe, 0xde, 0x85, 0x35, 0x5c, 0x5a, 0xd2, 0x83, 0xee, 0xbe, 0xc8, 0x46, 0xbe, 0x30, 0x90, - 0x60, 0xc1, 0x57, 0x84, 0x89, 0xb1, 0xdc, 0x07, 0xe7, 0x8d, 0x61, 0x63, 0xc2, 0xea, 0xf7, 0xc2, - 0x58, 0xd5, 0x78, 0xac, 0x6e, 0x13, 0x11, 0x93, 0xd8, 0x98, 0x26, 0x34, 0x6f, 0x7c, 0xab, 0x0f, - 0x97, 0xca, 0xc1, 0xf5, 0xf4, 0xa1, 0xf9, 0x48, 0x1f, 0xb1, 0x97, 0xd0, 0xee, 0xb0, 0x4e, 0x4d, - 0xf6, 0xd1, 0x74, 0x87, 0x6c, 0x36, 0x20, 0x73, 0xb3, 0x81, 0x84, 0xfe, 0xf6, 0x81, 0x1b, 0xa9, - 0xc7, 0xdc, 0x20, 0x88, 0xb2, 0x23, 0xf6, 0xb7, 0x1f, 0xc8, 0x41, 0xfa, 0xe0, 0xfc, 0xa3, 0x0c, - 0xb0, 0x6c, 0x99, 0xbb, 0xdd, 0x9a, 0xd5, 0xc6, 0x16, 0xfa, 0x9b, 0x60, 0x02, 0xf0, 0xc2, 0x11, - 0x4c, 0x00, 0xd6, 0x01, 0xb6, 0x7c, 0xe2, 0x4c, 0xc3, 0x6f, 0x11, 0x33, 0xf7, 0x03, 0xa6, 0xd4, - 0x10, 0x0d, 0xfe, 0xca, 0xd9, 0x1f, 0xe3, 0x31, 0x8e, 0xeb, 0xb3, 0x02, 0x72, 0xa3, 0x9c, 0x00, - 0xbc, 0xdd, 0xc7, 0xba, 0xc1, 0x61, 0x7d, 0xf7, 0x01, 0x38, 0x49, 0x1f, 0xf3, 0x7f, 0x9a, 0x80, - 0x69, 0xba, 0x5d, 0x47, 0x65, 0xfa, 0xf7, 0x01, 0xe8, 0xbf, 0x3e, 0x02, 0xd0, 0x37, 0x60, 0xc6, - 0x0c, 0xa8, 0xd3, 0x3e, 0x35, 0xbc, 0x00, 0x13, 0x0b, 0x7b, 0x88, 0x2f, 0x95, 0x23, 0x83, 0x3e, - 0x14, 0x46, 0x5e, 0xe5, 0x91, 0xbf, 0x23, 0x46, 0xde, 0x21, 0x8a, 0xa3, 0x84, 0xfe, 0x1d, 0x3e, - 0xf4, 0x1b, 0x1c, 0xf4, 0xc5, 0x83, 0xb0, 0x32, 0x86, 0x70, 0xfb, 0x32, 0x64, 0xc9, 0xe9, 0xb8, - 0xdf, 0x4c, 0x71, 0x7e, 0x7f, 0x0a, 0x26, 0x48, 0x93, 0xf5, 0xe7, 0x1d, 0xde, 0xab, 0xfb, 0x45, - 0xdb, 0x74, 0xb0, 0xe5, 0x7b, 0x2c, 0x78, 0xaf, 0x2e, 0x0f, 0x9e, 0x57, 0xb2, 0x7d, 0x2a, 0x4f, - 0x37, 0x22, 0xfd, 0x84, 0xa1, 0x27, 0x25, 0x61, 0x89, 0x8f, 0xec, 0xbc, 0xdc, 0x30, 0x93, 0x92, - 0x01, 0x8c, 0xa4, 0x0f, 0xfc, 0x5f, 0x64, 0xe1, 0x14, 0x5d, 0x55, 0x5a, 0xb2, 0xcc, 0x9d, 0x9e, - 0xdb, 0xad, 0xf4, 0x83, 0xeb, 0xc2, 0xf5, 0x30, 0xe7, 0x70, 0xfe, 0xd8, 0x4c, 0x27, 0x7a, 0x52, - 0xd1, 0x9f, 0x86, 0x7d, 0x2a, 0x9e, 0xc1, 0x23, 0xb9, 0x10, 0x23, 0xc0, 0x28, 0xde, 0x13, 0x2f, - 0xd4, 0x0b, 0x32, 0x1a, 0x5a, 0xa4, 0x92, 0x87, 0x5a, 0xb3, 0xf4, 0x75, 0x2a, 0x27, 0xa2, 0x53, - 0xef, 0xf5, 0x75, 0xea, 0x27, 0x38, 0x9d, 0x5a, 0x3e, 0xb8, 0x48, 0xd2, 0xd7, 0xad, 0x57, 0xfa, - 0x1b, 0x43, 0xfe, 0xb6, 0xdd, 0x4e, 0x0a, 0x9b, 0x75, 0x61, 0x7f, 0xa4, 0x2c, 0xe7, 0x8f, 0xc4, - 0xdf, 0x47, 0x91, 0x60, 0x26, 0xcc, 0x73, 0x1d, 0xa1, 0x4b, 0x73, 0x20, 0xe9, 0x1e, 0x77, 0x92, - 0xde, 0x1e, 0x6a, 0xae, 0x1b, 0x5b, 0xd0, 0x18, 0xd6, 0x96, 0xe6, 0x20, 0xbf, 0xa4, 0x77, 0x1c, - 0x6c, 0xa1, 0x2f, 0xb2, 0x99, 0xee, 0x2b, 0x53, 0x1c, 0x00, 0x16, 0x21, 0xbf, 0x49, 0x4a, 0x63, - 0x26, 0xf3, 0x4d, 0x62, 0xad, 0x87, 0x72, 0xa8, 0xb2, 0x7f, 0x93, 0x46, 0xe7, 0xeb, 0x21, 0x33, - 0xb2, 0x29, 0x72, 0x82, 0xe8, 0x7c, 0x83, 0x59, 0x18, 0xcb, 0xc5, 0x54, 0x79, 0x15, 0xef, 0xb8, - 0x63, 0xfc, 0x85, 0xf4, 0x10, 0x2e, 0x80, 0xac, 0xb7, 0x6d, 0xd2, 0x39, 0x4e, 0xa9, 0xee, 0x63, - 0x52, 0x5f, 0xa1, 0x5e, 0x51, 0x51, 0x96, 0xc7, 0xed, 0x2b, 0x24, 0xc4, 0x45, 0xfa, 0x98, 0x7d, - 0x87, 0x38, 0x8a, 0x76, 0x3b, 0x5a, 0x0b, 0xbb, 0xdc, 0xa7, 0x86, 0x1a, 0xed, 0xc9, 0xb2, 0x5e, - 0x4f, 0x16, 0x6a, 0xa7, 0xb9, 0x03, 0xb4, 0xd3, 0x61, 0x97, 0x21, 0x7d, 0x99, 0x93, 0x8a, 0x1f, - 0xda, 0x32, 0x64, 0x2c, 0x1b, 0x63, 0xb8, 0x76, 0xd4, 0x3b, 0x48, 0x3b, 0xd6, 0xd6, 0x3a, 0xec, - 0x26, 0x0d, 0x13, 0xd6, 0xc8, 0x0e, 0xcd, 0x0e, 0xb3, 0x49, 0x13, 0xcd, 0xc3, 0x18, 0xd0, 0x9a, - 0x63, 0x68, 0x7d, 0x86, 0x0d, 0xa3, 0x29, 0xef, 0x93, 0xda, 0xa6, 0xe5, 0x24, 0xdb, 0x27, 0x75, - 0xb9, 0x53, 0xc9, 0x7f, 0x49, 0x0f, 0x5e, 0xf1, 0xe7, 0xaa, 0x47, 0x35, 0x7c, 0x26, 0x38, 0x78, - 0x35, 0x88, 0x81, 0xf4, 0xe1, 0x7d, 0xd3, 0x21, 0x0d, 0x9e, 0xc3, 0x36, 0x47, 0xd6, 0x06, 0x46, - 0x36, 0x74, 0x0e, 0xd3, 0x1c, 0xa3, 0x79, 0x48, 0x1f, 0xaf, 0x6f, 0x86, 0x06, 0xce, 0x37, 0x8c, - 0x71, 0xe0, 0xf4, 0x5a, 0x66, 0x6e, 0xc8, 0x96, 0x39, 0xec, 0xfe, 0x0f, 0x93, 0xf5, 0xe8, 0x06, - 0xcc, 0x61, 0xf6, 0x7f, 0x62, 0x98, 0x48, 0x1f, 0xf1, 0x37, 0xca, 0x90, 0xab, 0x8f, 0x7f, 0xbc, - 0x1c, 0x76, 0x2e, 0x42, 0x64, 0x55, 0x1f, 0xd9, 0x70, 0x39, 0xcc, 0x5c, 0x24, 0x92, 0x85, 0x31, - 0x04, 0xde, 0x3f, 0x0a, 0x33, 0x64, 0x49, 0xc4, 0xdb, 0x66, 0xfd, 0x26, 0x1b, 0x35, 0x1f, 0x49, - 0xb1, 0xad, 0xde, 0x03, 0x93, 0xde, 0xfe, 0x1d, 0x1b, 0x39, 0xe7, 0xc5, 0xda, 0xa7, 0xc7, 0xa5, - 0xea, 0xff, 0x7f, 0x20, 0x67, 0x88, 0x91, 0xef, 0xd5, 0x0e, 0xeb, 0x0c, 0x71, 0xa8, 0xfb, 0xb5, - 0x7f, 0x12, 0x8c, 0xa8, 0xff, 0x25, 0x3d, 0xcc, 0x7b, 0xf7, 0x71, 0xb3, 0x7d, 0xf6, 0x71, 0x3f, - 0x12, 0xc6, 0xb2, 0xce, 0x63, 0x79, 0xa7, 0xa8, 0x08, 0x47, 0x38, 0xd6, 0xbe, 0xd3, 0x87, 0xf3, - 0x2c, 0x07, 0xe7, 0xc2, 0x81, 0x78, 0x19, 0xc3, 0xc1, 0xc7, 0x6c, 0x30, 0xe6, 0x7e, 0x34, 0xc5, - 0x76, 0xdc, 0x73, 0xaa, 0x22, 0xbb, 0xef, 0x54, 0x05, 0xd7, 0xd2, 0x73, 0x07, 0x6c, 0xe9, 0x1f, - 0x0d, 0x6b, 0x47, 0x83, 0xd7, 0x8e, 0xa7, 0x8b, 0x23, 0x32, 0xba, 0x91, 0xf9, 0x5d, 0xbe, 0x7a, - 0x9c, 0xe3, 0xd4, 0xa3, 0x74, 0x30, 0x66, 0xd2, 0xd7, 0x8f, 0x3f, 0xf4, 0x26, 0xb4, 0x87, 0xdc, - 0xde, 0x87, 0xdd, 0x2a, 0xe6, 0x84, 0x38, 0xb2, 0x91, 0x7b, 0x98, 0xad, 0xe2, 0x41, 0x9c, 0x8c, - 0x21, 0x16, 0xdb, 0x2c, 0x4c, 0x13, 0x9e, 0xce, 0xe9, 0xed, 0x2d, 0xec, 0xa0, 0x57, 0x51, 0x1f, - 0x45, 0x2f, 0xf2, 0xe5, 0x88, 0xc2, 0x13, 0x45, 0x9d, 0x77, 0x4d, 0xea, 0xd1, 0x41, 0x99, 0x9c, - 0x0f, 0x31, 0x38, 0xee, 0x08, 0x8a, 0x03, 0x39, 0x48, 0x1f, 0xb2, 0x0f, 0x51, 0x77, 0x9b, 0x55, - 0xed, 0x92, 0xb9, 0xeb, 0xa0, 0x07, 0x47, 0xd0, 0x41, 0x2f, 0x40, 0xbe, 0x43, 0xa8, 0xb1, 0x63, - 0x19, 0xf1, 0xd3, 0x1d, 0x26, 0x02, 0x5a, 0xbe, 0xca, 0xfe, 0x4c, 0x7a, 0x36, 0x23, 0x90, 0x23, - 0xa5, 0x33, 0xee, 0xb3, 0x19, 0x03, 0xca, 0x1f, 0xcb, 0x1d, 0x3b, 0x93, 0x6e, 0xe9, 0xfa, 0x8e, - 0xee, 0x8c, 0x28, 0x82, 0x43, 0xc7, 0xa5, 0xe5, 0x45, 0x70, 0x20, 0x2f, 0x49, 0x4f, 0x8c, 0x86, - 0xa4, 0xe2, 0xfe, 0x3e, 0xee, 0x13, 0xa3, 0xf1, 0xc5, 0xa7, 0x8f, 0xc9, 0xaf, 0xd2, 0x96, 0x75, - 0x96, 0x3a, 0xdf, 0xa6, 0xe8, 0xd7, 0x3b, 0x74, 0x63, 0xa1, 0xac, 0x1d, 0x5e, 0x63, 0xe9, 0x5b, - 0x7e, 0xfa, 0xc0, 0xfc, 0xc6, 0x0f, 0x43, 0x6e, 0x11, 0x9f, 0xdf, 0xdd, 0x42, 0x77, 0xc0, 0x64, - 0xc3, 0xc2, 0xb8, 0x62, 0x6c, 0x9a, 0xae, 0x74, 0x1d, 0xf7, 0xd9, 0x83, 0x84, 0xbd, 0xb9, 0x78, - 0x6c, 0x63, 0xad, 0x1d, 0x9c, 0x3f, 0xf3, 0x5e, 0xd1, 0x8b, 0x25, 0xc8, 0xd6, 0x1d, 0xcd, 0x41, - 0x53, 0x3e, 0xb6, 0xe8, 0xc1, 0x30, 0x16, 0x77, 0xf0, 0x58, 0x5c, 0xcf, 0xc9, 0x82, 0x70, 0x30, - 0xef, 0xfe, 0x1f, 0x01, 0x00, 0x82, 0xc9, 0xfb, 0x6d, 0xd3, 0x70, 0x73, 0x78, 0x47, 0x20, 0xbd, - 0x77, 0xf4, 0x0a, 0x5f, 0xdc, 0x77, 0x71, 0xe2, 0x7e, 0xbc, 0x58, 0x11, 0x63, 0x58, 0x69, 0x93, - 0x60, 0xca, 0x15, 0xed, 0x0a, 0xd6, 0xda, 0x36, 0xfa, 0xa1, 0x40, 0xf9, 0x23, 0xc4, 0x8c, 0xde, - 0x27, 0x1c, 0x8c, 0x93, 0xd6, 0xca, 0x27, 0x1e, 0xed, 0xd1, 0xe1, 0x6d, 0xfe, 0x4b, 0x7c, 0x30, - 0x92, 0x9b, 0x21, 0xab, 0x1b, 0x9b, 0x26, 0xf3, 0x2f, 0xbc, 0x32, 0x82, 0xb6, 0xab, 0x13, 0x2a, - 0xc9, 0x28, 0x18, 0xa9, 0x33, 0x9e, 0xad, 0xb1, 0x5c, 0x7a, 0x97, 0x75, 0x4b, 0x47, 0xff, 0xe7, - 0x40, 0x61, 0x2b, 0x0a, 0x64, 0xbb, 0x9a, 0xb3, 0xcd, 0x8a, 0x26, 0xcf, 0xae, 0x8d, 0xbc, 0x6b, - 0x68, 0x86, 0x69, 0x5c, 0xda, 0xd1, 0x9f, 0xe9, 0xdf, 0xad, 0xcb, 0xa5, 0xb9, 0x9c, 0x6f, 0x61, - 0x03, 0x5b, 0x9a, 0x83, 0xeb, 0x7b, 0x5b, 0x64, 0x8e, 0x35, 0xa9, 0x86, 0x93, 0x12, 0xeb, 0xbf, - 0xcb, 0x71, 0xb4, 0xfe, 0x6f, 0xea, 0x1d, 0x4c, 0x22, 0x35, 0x31, 0xfd, 0xf7, 0xde, 0x13, 0xe9, - 0x7f, 0x9f, 0x22, 0xd2, 0x47, 0xe3, 0xbb, 0x12, 0xcc, 0xd4, 0x5d, 0x85, 0xab, 0xef, 0xee, 0xec, - 0x68, 0xd6, 0x25, 0x74, 0x6d, 0x80, 0x4a, 0x48, 0x35, 0x33, 0xbc, 0x5f, 0xca, 0x1f, 0x08, 0x5f, - 0x2b, 0xcd, 0x9a, 0x76, 0xa8, 0x84, 0xc4, 0xed, 0xe0, 0x89, 0x90, 0x73, 0xd5, 0xdb, 0xf3, 0xb8, - 0x8c, 0x6d, 0x08, 0x34, 0xa7, 0x60, 0x44, 0xab, 0x81, 0xbc, 0x8d, 0x21, 0x9a, 0x86, 0x04, 0x47, - 0xeb, 0x8e, 0xd6, 0xba, 0xb0, 0x6c, 0x5a, 0xe6, 0xae, 0xa3, 0x1b, 0xd8, 0x46, 0x8f, 0x09, 0x10, - 0xf0, 0xf4, 0x3f, 0x13, 0xe8, 0x3f, 0xfa, 0xf7, 0x8c, 0xe8, 0x28, 0xea, 0x77, 0xab, 0x61, 0xf2, - 0x11, 0x01, 0xaa, 0xc4, 0xc6, 0x45, 0x11, 0x8a, 0xe9, 0x0b, 0xed, 0x0d, 0x32, 0x14, 0xca, 0x0f, - 0x74, 0x4d, 0xcb, 0x59, 0x35, 0x5b, 0x5a, 0xc7, 0x76, 0x4c, 0x0b, 0xa3, 0x5a, 0xac, 0xd4, 0xdc, - 0x1e, 0xa6, 0x6d, 0xb6, 0x82, 0xc1, 0x91, 0xbd, 0x85, 0xd5, 0x4e, 0xe6, 0x75, 0xfc, 0x43, 0xc2, - 0xbb, 0x8c, 0x54, 0x2a, 0xbd, 0x1c, 0x45, 0xe8, 0x79, 0xbf, 0x2e, 0x2d, 0xd9, 0x61, 0x09, 0xb1, - 0x9d, 0x47, 0x21, 0xa6, 0xc6, 0xb0, 0x54, 0x2e, 0xc1, 0x6c, 0x7d, 0xf7, 0xbc, 0x4f, 0xc4, 0x0e, - 0x1b, 0x21, 0xaf, 0x16, 0x8e, 0x52, 0xc1, 0x14, 0x2f, 0x4c, 0x28, 0x42, 0xbe, 0xd7, 0xc1, 0xac, - 0x1d, 0xce, 0xc6, 0xf0, 0xe6, 0x13, 0x05, 0xa3, 0x53, 0x0c, 0x2e, 0x35, 0x7d, 0x01, 0xbe, 0x4b, - 0x82, 0xd9, 0x5a, 0x17, 0x1b, 0xb8, 0x4d, 0xbd, 0x20, 0x39, 0x01, 0xbe, 0x38, 0xa1, 0x00, 0x39, - 0x42, 0x11, 0x02, 0x0c, 0x3c, 0x96, 0x17, 0x3d, 0xe1, 0x05, 0x09, 0x89, 0x04, 0x17, 0x57, 0x5a, - 0xfa, 0x82, 0xfb, 0x82, 0x04, 0xd3, 0xea, 0xae, 0xb1, 0x6e, 0x99, 0xee, 0x68, 0x6c, 0xa1, 0x3b, - 0x83, 0x0e, 0xe2, 0x26, 0x38, 0xd6, 0xde, 0xb5, 0xc8, 0xfa, 0x53, 0xc5, 0xa8, 0xe3, 0x96, 0x69, - 0xb4, 0x6d, 0x52, 0x8f, 0x9c, 0xba, 0xff, 0xc3, 0xed, 0xd9, 0xe7, 0x7e, 0x4d, 0xce, 0xa0, 0xe7, - 0x09, 0x87, 0xba, 0xa1, 0x95, 0x0f, 0x15, 0x2d, 0xde, 0x13, 0x08, 0x06, 0xb4, 0x19, 0x54, 0x42, - 0xfa, 0xc2, 0xfd, 0x8c, 0x04, 0x4a, 0xb1, 0xd5, 0x32, 0x77, 0x0d, 0xa7, 0x8e, 0x3b, 0xb8, 0xe5, - 0x34, 0x2c, 0xad, 0x85, 0xc3, 0xf6, 0x73, 0x01, 0xe4, 0xb6, 0x6e, 0xb1, 0x3e, 0xd8, 0x7d, 0x64, - 0x72, 0x7c, 0xb1, 0xf0, 0x8e, 0x23, 0xad, 0xe5, 0xfe, 0x52, 0x12, 0x88, 0x53, 0x6c, 0x5f, 0x51, - 0xb0, 0xa0, 0xf4, 0xa5, 0xfa, 0x51, 0x09, 0xa6, 0xbc, 0x1e, 0x7b, 0x4b, 0x44, 0x98, 0xbf, 0x9a, - 0x70, 0x32, 0xe2, 0x13, 0x4f, 0x20, 0xc3, 0xb7, 0x25, 0x98, 0x55, 0x44, 0xd1, 0x4f, 0x26, 0xba, - 0x62, 0x72, 0xd1, 0xb9, 0xaf, 0xd5, 0x5a, 0x73, 0xa9, 0xb6, 0xba, 0x58, 0x56, 0x0b, 0x32, 0xfa, - 0xa2, 0x04, 0xd9, 0x75, 0xdd, 0xd8, 0x0a, 0x47, 0x57, 0x3a, 0xee, 0xda, 0x91, 0x6d, 0xfc, 0x00, - 0x6b, 0xe9, 0xf4, 0x45, 0xb9, 0x15, 0x8e, 0x1b, 0xbb, 0x3b, 0xe7, 0xb1, 0x55, 0xdb, 0x24, 0xa3, - 0xac, 0xdd, 0x30, 0xeb, 0xd8, 0xa0, 0x46, 0x68, 0x4e, 0xed, 0xfb, 0x8d, 0x37, 0xc1, 0x04, 0x26, - 0x0f, 0x2e, 0x27, 0x11, 0x12, 0xf7, 0x99, 0x92, 0x42, 0x4c, 0x25, 0x9a, 0x36, 0xf4, 0x21, 0x9e, - 0xbe, 0xa6, 0xfe, 0x51, 0x0e, 0x4e, 0x14, 0x8d, 0x4b, 0xc4, 0xa6, 0xa0, 0x1d, 0x7c, 0x69, 0x5b, - 0x33, 0xb6, 0x30, 0x19, 0x20, 0x7c, 0x89, 0x87, 0x43, 0xf4, 0x67, 0xf8, 0x10, 0xfd, 0x8a, 0x0a, - 0x13, 0xa6, 0xd5, 0xc6, 0xd6, 0xc2, 0x25, 0xc2, 0x53, 0xef, 0xb2, 0x33, 0x6b, 0x93, 0xfd, 0x8a, - 0x98, 0x67, 0xe4, 0xe7, 0x6b, 0xf4, 0x7f, 0xd5, 0x23, 0x74, 0xe6, 0x26, 0x98, 0x60, 0x69, 0xca, - 0x0c, 0x4c, 0xd6, 0xd4, 0xc5, 0xb2, 0xda, 0xac, 0x2c, 0x16, 0x8e, 0x28, 0x97, 0xc1, 0xd1, 0x4a, - 0xa3, 0xac, 0x16, 0x1b, 0x95, 0x5a, 0xb5, 0x49, 0xd2, 0x0b, 0x19, 0xf4, 0x9c, 0xac, 0xa8, 0x67, - 0x6f, 0x3c, 0x33, 0xfd, 0x60, 0x55, 0x61, 0xa2, 0x45, 0x33, 0x90, 0x21, 0x74, 0x3a, 0x51, 0xed, - 0x18, 0x41, 0x9a, 0xa0, 0x7a, 0x84, 0x94, 0xd3, 0x00, 0x17, 0x2d, 0xd3, 0xd8, 0x0a, 0x4e, 0x1d, - 0x4e, 0xaa, 0xa1, 0x14, 0xf4, 0x60, 0x06, 0xf2, 0xf4, 0x1f, 0x72, 0x25, 0x09, 0x79, 0x0a, 0x04, - 0xef, 0xbd, 0xbb, 0x16, 0x2f, 0x91, 0x57, 0x30, 0xd1, 0x62, 0xaf, 0xae, 0x2e, 0x52, 0x19, 0x50, - 0x4b, 0x98, 0x55, 0xe5, 0x66, 0xc8, 0xd3, 0x7f, 0x99, 0xd7, 0x41, 0x74, 0x78, 0x51, 0x9a, 0x4d, - 0xd0, 0x4f, 0x59, 0x5c, 0xa6, 0xe9, 0x6b, 0xf3, 0xfb, 0x25, 0x98, 0xac, 0x62, 0xa7, 0xb4, 0x8d, - 0x5b, 0x17, 0xd0, 0xe3, 0xf8, 0x05, 0xd0, 0x8e, 0x8e, 0x0d, 0xe7, 0xbe, 0x9d, 0x8e, 0xbf, 0x00, - 0xea, 0x25, 0xa0, 0x9f, 0x0f, 0x77, 0xbe, 0x77, 0xf3, 0xfa, 0x73, 0x63, 0x9f, 0xba, 0x7a, 0x25, - 0x44, 0xa8, 0xcc, 0x49, 0xc8, 0x5b, 0xd8, 0xde, 0xed, 0x78, 0x8b, 0x68, 0xec, 0x0d, 0x3d, 0xec, - 0x8b, 0xb3, 0xc4, 0x89, 0xf3, 0x66, 0xf1, 0x22, 0xc6, 0x10, 0xaf, 0x34, 0x0b, 0x13, 0x15, 0x43, - 0x77, 0x74, 0xad, 0x83, 0x9e, 0x97, 0x85, 0xd9, 0x3a, 0x76, 0xd6, 0x35, 0x4b, 0xdb, 0xc1, 0x0e, - 0xb6, 0x6c, 0xf4, 0x6d, 0xbe, 0x4f, 0xe8, 0x76, 0x34, 0x67, 0xd3, 0xb4, 0x76, 0x3c, 0xd5, 0xf4, - 0xde, 0x5d, 0xd5, 0xdc, 0xc3, 0x96, 0x1d, 0xf0, 0xe5, 0xbd, 0xba, 0x5f, 0x2e, 0x9a, 0xd6, 0x05, - 0x77, 0x10, 0x64, 0xd3, 0x34, 0xf6, 0xea, 0xd2, 0xeb, 0x98, 0x5b, 0xab, 0x78, 0x0f, 0x7b, 0xe1, - 0xd2, 0xfc, 0x77, 0x77, 0x2e, 0xd0, 0x36, 0xab, 0xa6, 0xe3, 0x76, 0xda, 0xab, 0xe6, 0x16, 0x8d, - 0x17, 0x3b, 0xa9, 0xf2, 0x89, 0x41, 0x2e, 0x6d, 0x0f, 0x93, 0x5c, 0xf9, 0x70, 0x2e, 0x96, 0xa8, - 0xcc, 0x83, 0xe2, 0xff, 0xd6, 0xc0, 0x1d, 0xbc, 0x83, 0x1d, 0xeb, 0x12, 0xb9, 0x16, 0x62, 0x52, - 0xed, 0xf3, 0x85, 0x0d, 0xd0, 0xe2, 0x93, 0x75, 0x26, 0xbd, 0x79, 0x4e, 0x72, 0x07, 0x9a, 0xac, - 0x8b, 0x50, 0x1c, 0xcb, 0xb5, 0x57, 0xb2, 0x6b, 0xcd, 0xbc, 0x54, 0x86, 0x2c, 0x19, 0x3c, 0xdf, - 0x98, 0xe1, 0x56, 0x98, 0x76, 0xb0, 0x6d, 0x6b, 0x5b, 0xd8, 0x5b, 0x61, 0x62, 0xaf, 0xca, 0x6d, - 0x90, 0xeb, 0x10, 0x4c, 0xe9, 0xe0, 0x70, 0x2d, 0x57, 0x33, 0xd7, 0xc0, 0x70, 0x69, 0xf9, 0x23, - 0x01, 0x81, 0x5b, 0xa5, 0x7f, 0x9c, 0xb9, 0x07, 0x72, 0x14, 0xfe, 0x29, 0xc8, 0x2d, 0x96, 0x17, - 0x36, 0x96, 0x0b, 0x47, 0xdc, 0x47, 0x8f, 0xbf, 0x29, 0xc8, 0x2d, 0x15, 0x1b, 0xc5, 0xd5, 0x82, - 0xe4, 0xd6, 0xa3, 0x52, 0x5d, 0xaa, 0x15, 0x64, 0x37, 0x71, 0xbd, 0x58, 0xad, 0x94, 0x0a, 0x59, - 0x65, 0x1a, 0x26, 0xce, 0x15, 0xd5, 0x6a, 0xa5, 0xba, 0x5c, 0xc8, 0xa1, 0xbf, 0x0d, 0xe3, 0x77, - 0x3b, 0x8f, 0xdf, 0x75, 0x51, 0x3c, 0xf5, 0x83, 0xec, 0x65, 0x3e, 0x64, 0x77, 0x72, 0x90, 0xfd, - 0xb0, 0x08, 0x91, 0x31, 0xb8, 0x33, 0xe5, 0x61, 0x62, 0xdd, 0x32, 0x5b, 0xd8, 0xb6, 0xd1, 0xaf, - 0x49, 0x90, 0x2f, 0x69, 0x46, 0x0b, 0x77, 0xd0, 0x15, 0x01, 0x54, 0xd4, 0x55, 0x34, 0xe3, 0x9f, - 0x16, 0xfb, 0xc7, 0x8c, 0x68, 0xef, 0xc7, 0xe8, 0xce, 0x53, 0x9a, 0x11, 0xf2, 0x11, 0xeb, 0xe5, - 0x62, 0x49, 0x8d, 0xe1, 0x6a, 0x1c, 0x09, 0xa6, 0xd8, 0x6a, 0xc0, 0x79, 0x1c, 0x9e, 0x87, 0x7f, - 0x3b, 0x23, 0x3a, 0x39, 0xf4, 0x6a, 0xe0, 0x93, 0x89, 0x90, 0x87, 0xd8, 0x44, 0x70, 0x10, 0xb5, - 0x31, 0x6c, 0x1e, 0x4a, 0x30, 0xbd, 0x61, 0xd8, 0xfd, 0x84, 0x22, 0x1e, 0x47, 0xdf, 0xab, 0x46, - 0x88, 0xd0, 0x81, 0xe2, 0xe8, 0x0f, 0xa6, 0x97, 0xbe, 0x60, 0xbe, 0x9d, 0x81, 0xe3, 0xcb, 0xd8, - 0xc0, 0x96, 0xde, 0xa2, 0x35, 0xf0, 0x24, 0x71, 0x27, 0x2f, 0x89, 0xc7, 0x71, 0x9c, 0xf7, 0xfb, - 0x83, 0x97, 0xc0, 0x2b, 0x7d, 0x09, 0xdc, 0xcd, 0x49, 0xe0, 0x26, 0x41, 0x3a, 0x63, 0xb8, 0x0f, - 0x7d, 0x0a, 0x66, 0xaa, 0xa6, 0xa3, 0x6f, 0xea, 0x2d, 0xea, 0x83, 0xf6, 0x12, 0x19, 0xb2, 0xab, - 0xba, 0xed, 0xa0, 0x62, 0xd0, 0x9d, 0x5c, 0x03, 0xd3, 0xba, 0xd1, 0xea, 0xec, 0xb6, 0xb1, 0x8a, - 0x35, 0xda, 0xaf, 0x4c, 0xaa, 0xe1, 0xa4, 0x60, 0x6b, 0xdf, 0x65, 0x4b, 0xf6, 0xb6, 0xf6, 0x3f, - 0x29, 0xbc, 0x0c, 0x13, 0x66, 0x81, 0x04, 0xa4, 0x8c, 0xb0, 0xbb, 0x8a, 0x30, 0x6b, 0x84, 0xb2, - 0x7a, 0x06, 0x7b, 0xef, 0x85, 0x02, 0x61, 0x72, 0x2a, 0xff, 0x07, 0x7a, 0x8f, 0x50, 0x63, 0x1d, - 0xc4, 0x50, 0x32, 0x64, 0x96, 0x86, 0x98, 0x24, 0x2b, 0x30, 0x57, 0xa9, 0x36, 0xca, 0x6a, 0xb5, - 0xb8, 0xca, 0xb2, 0xc8, 0xe8, 0xbb, 0x12, 0xe4, 0x54, 0xdc, 0xed, 0x5c, 0x0a, 0x47, 0x8c, 0x66, - 0x8e, 0xe2, 0x19, 0xdf, 0x51, 0x5c, 0x59, 0x02, 0xd0, 0x5a, 0x6e, 0xc1, 0xe4, 0x4a, 0x2d, 0xa9, - 0x6f, 0x1c, 0x53, 0xae, 0x82, 0x45, 0x3f, 0xb7, 0x1a, 0xfa, 0x13, 0x3d, 0x24, 0xbc, 0x73, 0xc4, - 0x51, 0x23, 0x1c, 0x46, 0xf4, 0x09, 0xef, 0x15, 0xda, 0xec, 0x19, 0x48, 0xee, 0x70, 0xc4, 0xff, - 0x25, 0x09, 0xb2, 0x0d, 0xb7, 0xb7, 0x0c, 0x75, 0x9c, 0x9f, 0x18, 0x4e, 0xc7, 0x5d, 0x32, 0x11, - 0x3a, 0x7e, 0x17, 0xcc, 0x84, 0x35, 0x96, 0xb9, 0x4a, 0xc4, 0xaa, 0x38, 0xf7, 0xc3, 0x30, 0x1a, - 0xde, 0x87, 0x9d, 0xc3, 0x11, 0xf1, 0xc7, 0x1e, 0x0f, 0xb0, 0x86, 0x77, 0xce, 0x63, 0xcb, 0xde, - 0xd6, 0xbb, 0xe8, 0xef, 0x64, 0x98, 0x5a, 0xc6, 0x4e, 0xdd, 0xd1, 0x9c, 0x5d, 0xbb, 0x67, 0xbb, - 0xd3, 0x30, 0x4b, 0x5a, 0x6b, 0x1b, 0xb3, 0xee, 0xc8, 0x7b, 0x45, 0xef, 0x90, 0x45, 0xfd, 0x89, - 0x82, 0x72, 0xe6, 0xfd, 0x32, 0x22, 0x30, 0x79, 0x02, 0x64, 0xdb, 0x9a, 0xa3, 0x31, 0x2c, 0xae, - 0xe8, 0xc1, 0x22, 0x20, 0xa4, 0x92, 0x6c, 0xe8, 0xb7, 0x25, 0x11, 0x87, 0x22, 0x81, 0xf2, 0x93, - 0x81, 0xf0, 0x9e, 0xcc, 0x10, 0x28, 0x1c, 0x83, 0xd9, 0x6a, 0xad, 0xd1, 0x5c, 0xad, 0x2d, 0x2f, - 0x97, 0xdd, 0xd4, 0x82, 0xac, 0x9c, 0x04, 0x65, 0xbd, 0x78, 0xdf, 0x5a, 0xb9, 0xda, 0x68, 0x56, - 0x6b, 0x8b, 0x65, 0xf6, 0x67, 0x56, 0x39, 0x0a, 0xd3, 0xa5, 0x62, 0x69, 0xc5, 0x4b, 0xc8, 0x29, - 0xa7, 0xe0, 0xf8, 0x5a, 0x79, 0x6d, 0xa1, 0xac, 0xd6, 0x57, 0x2a, 0xeb, 0x4d, 0x97, 0xcc, 0x52, - 0x6d, 0xa3, 0xba, 0x58, 0xc8, 0x2b, 0x08, 0x4e, 0x86, 0xbe, 0x9c, 0x53, 0x6b, 0xd5, 0xe5, 0x66, - 0xbd, 0x51, 0x6c, 0x94, 0x0b, 0x13, 0xca, 0x65, 0x70, 0xb4, 0x54, 0xac, 0x92, 0xec, 0xa5, 0x5a, - 0xb5, 0x5a, 0x2e, 0x35, 0x0a, 0x93, 0xe8, 0xdf, 0xb3, 0x30, 0x5d, 0xb1, 0xab, 0xda, 0x0e, 0x3e, - 0xab, 0x75, 0xf4, 0x36, 0x7a, 0x5e, 0x68, 0xe6, 0x71, 0x1d, 0xcc, 0x5a, 0xf4, 0x11, 0xb7, 0x1b, - 0x3a, 0xa6, 0x68, 0xce, 0xaa, 0x7c, 0xa2, 0x3b, 0x27, 0x37, 0x08, 0x01, 0x6f, 0x4e, 0x4e, 0xdf, - 0x94, 0x05, 0x00, 0xfa, 0xd4, 0x08, 0x2e, 0x77, 0x3d, 0xd3, 0xdb, 0x9a, 0xb4, 0x1d, 0x6c, 0x63, - 0x6b, 0x4f, 0x6f, 0x61, 0x2f, 0xa7, 0x1a, 0xfa, 0x0b, 0x7d, 0x59, 0x16, 0xdd, 0x5f, 0x0c, 0x81, - 0x1a, 0xaa, 0x4e, 0x44, 0x6f, 0xf8, 0x0b, 0xb2, 0xc8, 0xee, 0xa0, 0x10, 0xc9, 0x64, 0x9a, 0xf2, - 0x02, 0x69, 0xb8, 0x65, 0xdb, 0x46, 0xad, 0xd6, 0xac, 0xaf, 0xd4, 0xd4, 0x46, 0x41, 0x56, 0x66, - 0x60, 0xd2, 0x7d, 0x5d, 0xad, 0x55, 0x97, 0x0b, 0x59, 0xe5, 0x04, 0x1c, 0x5b, 0x29, 0xd6, 0x9b, - 0x95, 0xea, 0xd9, 0xe2, 0x6a, 0x65, 0xb1, 0x59, 0x5a, 0x29, 0xaa, 0xf5, 0x42, 0x4e, 0xb9, 0x02, - 0x4e, 0x34, 0x2a, 0x65, 0xb5, 0xb9, 0x54, 0x2e, 0x36, 0x36, 0xd4, 0x72, 0xbd, 0x59, 0xad, 0x35, - 0xab, 0xc5, 0xb5, 0x72, 0x21, 0xef, 0x36, 0x7f, 0xf2, 0x29, 0x50, 0x9b, 0x89, 0xfd, 0xca, 0x38, - 0x19, 0xa1, 0x8c, 0x53, 0xbd, 0xca, 0x08, 0x61, 0xb5, 0x52, 0xcb, 0xf5, 0xb2, 0x7a, 0xb6, 0x5c, - 0x98, 0xee, 0xa7, 0x6b, 0x33, 0xca, 0x71, 0x28, 0xb8, 0x3c, 0x34, 0x2b, 0x75, 0x2f, 0xe7, 0x62, - 0x61, 0x16, 0x7d, 0x34, 0x0f, 0x27, 0x55, 0xbc, 0xa5, 0xdb, 0x0e, 0xb6, 0xd6, 0xb5, 0x4b, 0x3b, - 0xd8, 0x70, 0xbc, 0x4e, 0xfe, 0x5f, 0x12, 0x2b, 0xe3, 0x1a, 0xcc, 0x76, 0x29, 0x8d, 0x35, 0xec, - 0x6c, 0x9b, 0x6d, 0x36, 0x0a, 0x3f, 0x2e, 0xb2, 0xe7, 0x98, 0x5f, 0x0f, 0x67, 0x57, 0xf9, 0xbf, - 0x43, 0xba, 0x2d, 0xc7, 0xe8, 0x76, 0x76, 0x18, 0xdd, 0x56, 0xae, 0x82, 0xa9, 0x5d, 0x1b, 0x5b, - 0xe5, 0x1d, 0x4d, 0xef, 0x78, 0x97, 0x73, 0xfa, 0x09, 0xe8, 0xad, 0x59, 0xd1, 0x13, 0x2b, 0xa1, - 0xba, 0xf4, 0x17, 0x63, 0x44, 0xdf, 0x7a, 0x1a, 0x80, 0x55, 0x76, 0xc3, 0xea, 0x30, 0x65, 0x0d, - 0xa5, 0xb8, 0xfc, 0x9d, 0xd7, 0x3b, 0x1d, 0xdd, 0xd8, 0xf2, 0xf7, 0xfd, 0x83, 0x04, 0xf4, 0x02, - 0x59, 0xe4, 0x04, 0x4b, 0x52, 0xde, 0x92, 0xb5, 0xa6, 0x87, 0xa4, 0x31, 0xf7, 0xbb, 0xfb, 0x9b, - 0x4e, 0x5e, 0x29, 0xc0, 0x0c, 0x49, 0x63, 0x2d, 0xb0, 0x30, 0xe1, 0xf6, 0xc1, 0x1e, 0xb9, 0xb5, - 0x72, 0x63, 0xa5, 0xb6, 0xe8, 0x7f, 0x9b, 0x74, 0x49, 0xba, 0xcc, 0x14, 0xab, 0xf7, 0x91, 0xd6, - 0x38, 0xa5, 0x3c, 0x06, 0xae, 0x08, 0x75, 0xd8, 0xc5, 0x55, 0xb5, 0x5c, 0x5c, 0xbc, 0xaf, 0x59, - 0x7e, 0x46, 0xa5, 0xde, 0xa8, 0xf3, 0x8d, 0xcb, 0x6b, 0x47, 0xd3, 0x2e, 0xbf, 0xe5, 0xb5, 0x62, - 0x65, 0x95, 0xf5, 0xef, 0x4b, 0x35, 0x75, 0xad, 0xd8, 0x28, 0xcc, 0xa0, 0x97, 0xca, 0x50, 0x58, - 0xc6, 0xce, 0xba, 0x69, 0x39, 0x5a, 0x67, 0x55, 0x37, 0x2e, 0x6c, 0x58, 0x1d, 0x6e, 0xb2, 0x29, - 0x1c, 0xa6, 0x83, 0x1f, 0x22, 0x39, 0x82, 0xd1, 0x3b, 0xe2, 0x5d, 0x92, 0x2d, 0x50, 0xa6, 0x20, - 0x01, 0x3d, 0x4b, 0x12, 0x59, 0xee, 0x16, 0x2f, 0x35, 0x99, 0x9e, 0x3c, 0x7b, 0xdc, 0xe3, 0x73, - 0x1f, 0xd4, 0xf2, 0xe8, 0xb9, 0x59, 0x98, 0x5c, 0xd2, 0x0d, 0xad, 0xa3, 0x3f, 0x93, 0x8b, 0x5f, - 0x1a, 0xf4, 0x31, 0x99, 0x98, 0x3e, 0x46, 0x1a, 0x6a, 0xfc, 0xfc, 0x15, 0x59, 0x74, 0x79, 0x21, - 0x24, 0x7b, 0x8f, 0xc9, 0x88, 0xc1, 0xf3, 0x03, 0x92, 0xc8, 0xf2, 0xc2, 0x60, 0x7a, 0xc9, 0x30, - 0xfc, 0xf8, 0xf7, 0x87, 0x8d, 0xd5, 0xd3, 0xbe, 0x27, 0xfb, 0xa9, 0xc2, 0x14, 0xfa, 0x33, 0x19, - 0xd0, 0x32, 0x76, 0xce, 0x62, 0xcb, 0x9f, 0x0a, 0x90, 0x5e, 0x9f, 0xd9, 0xdb, 0xa1, 0x26, 0xfb, - 0xc6, 0x30, 0x80, 0xe7, 0x78, 0x00, 0x8b, 0x31, 0x8d, 0x27, 0x82, 0x74, 0x44, 0xe3, 0xad, 0x40, - 0xde, 0x26, 0xdf, 0x99, 0x9a, 0x3d, 0x31, 0x7a, 0xb8, 0x24, 0xc4, 0xc2, 0xd4, 0x29, 0x61, 0x95, - 0x11, 0x40, 0xdf, 0xf1, 0x27, 0x41, 0x3f, 0xce, 0x69, 0xc7, 0xd2, 0x81, 0x99, 0x4d, 0xa6, 0x2f, - 0x56, 0xba, 0xea, 0xd2, 0xcf, 0xbe, 0x41, 0x1f, 0xc8, 0xc1, 0xf1, 0x7e, 0xd5, 0x41, 0xbf, 0x93, - 0xe1, 0x76, 0xd8, 0x31, 0x19, 0xf2, 0x33, 0x6c, 0x03, 0xd1, 0x7d, 0x51, 0x9e, 0x0c, 0x27, 0xfc, - 0x65, 0xb8, 0x86, 0x59, 0xc5, 0x17, 0xed, 0x0e, 0x76, 0x1c, 0x6c, 0x91, 0xaa, 0x4d, 0xaa, 0xfd, - 0x3f, 0x2a, 0x4f, 0x85, 0xcb, 0x75, 0xc3, 0xd6, 0xdb, 0xd8, 0x6a, 0xe8, 0x5d, 0xbb, 0x68, 0xb4, - 0x1b, 0xbb, 0x8e, 0x69, 0xe9, 0x1a, 0xbb, 0x4a, 0x72, 0x52, 0x8d, 0xfa, 0xac, 0xdc, 0x08, 0x05, - 0xdd, 0xae, 0x19, 0xe7, 0x4d, 0xcd, 0x6a, 0xeb, 0xc6, 0xd6, 0xaa, 0x6e, 0x3b, 0xcc, 0x03, 0x78, - 0x5f, 0x3a, 0xfa, 0x7b, 0x59, 0xf4, 0x30, 0xdd, 0x00, 0x58, 0x23, 0x3a, 0x94, 0x9f, 0x97, 0x45, - 0x8e, 0xc7, 0x25, 0xa3, 0x9d, 0x4c, 0x59, 0x9e, 0x33, 0x6e, 0x43, 0xa2, 0xff, 0x08, 0x4e, 0xba, - 0x16, 0x9a, 0xee, 0x19, 0x02, 0x67, 0xcb, 0x6a, 0x65, 0xa9, 0x52, 0x76, 0xcd, 0x8a, 0x13, 0x70, - 0x2c, 0xf8, 0xb6, 0x78, 0x5f, 0xb3, 0x5e, 0xae, 0x36, 0x0a, 0x93, 0x6e, 0x3f, 0x45, 0x93, 0x97, - 0x8a, 0x95, 0xd5, 0xf2, 0x62, 0xb3, 0x51, 0x73, 0xbf, 0x2c, 0x0e, 0x67, 0x5a, 0xa0, 0x07, 0xb3, - 0x70, 0x94, 0xc8, 0xf6, 0x12, 0x91, 0xaa, 0x2b, 0x94, 0x1e, 0x5f, 0x5b, 0x1f, 0xa0, 0x29, 0x2a, - 0x5e, 0xf4, 0x69, 0xe1, 0x9b, 0x32, 0x43, 0x10, 0xf6, 0x94, 0x11, 0xa1, 0x19, 0xdf, 0x96, 0x44, - 0x22, 0x54, 0x08, 0x93, 0x4d, 0xa6, 0x14, 0xff, 0x3a, 0xee, 0x11, 0x27, 0x1a, 0x7c, 0x62, 0x65, - 0x96, 0xc8, 0xcf, 0xcf, 0x58, 0xaf, 0xa8, 0x44, 0x1d, 0xe6, 0x00, 0x48, 0x0a, 0xd1, 0x20, 0xaa, - 0x07, 0x7d, 0xc7, 0xab, 0x28, 0x3d, 0x28, 0x96, 0x1a, 0x95, 0xb3, 0xe5, 0x28, 0x3d, 0xf8, 0x94, - 0x0c, 0x93, 0xcb, 0xd8, 0x71, 0xe7, 0x54, 0x36, 0x7a, 0x9a, 0xc0, 0xfa, 0x8f, 0x6b, 0xc6, 0x74, - 0xcc, 0x96, 0xd6, 0xf1, 0x97, 0x01, 0xe8, 0x1b, 0xfa, 0xb9, 0x61, 0x4c, 0x10, 0xaf, 0xe8, 0x88, - 0xf1, 0xea, 0x47, 0x21, 0xe7, 0xb8, 0x9f, 0xd9, 0x32, 0xf4, 0x0f, 0x45, 0x0e, 0x57, 0x2e, 0x91, - 0x45, 0xcd, 0xd1, 0x54, 0x9a, 0x3f, 0x34, 0x3a, 0x09, 0xda, 0x2e, 0x11, 0x8c, 0x7c, 0x3f, 0xda, - 0x9f, 0x7f, 0x2b, 0xc3, 0x09, 0xda, 0x3e, 0x8a, 0xdd, 0x6e, 0xdd, 0x31, 0x2d, 0xac, 0xe2, 0x16, - 0xd6, 0xbb, 0x4e, 0xcf, 0xfa, 0x9e, 0x45, 0x53, 0xbd, 0xcd, 0x66, 0xf6, 0x8a, 0x5e, 0x27, 0x8b, - 0xc6, 0x60, 0xde, 0xd7, 0x1e, 0x7b, 0xca, 0x8b, 0x68, 0xec, 0x1f, 0x91, 0x44, 0xa2, 0x2a, 0x27, - 0x24, 0x9e, 0x0c, 0xa8, 0x0f, 0x1e, 0x02, 0x50, 0xde, 0xca, 0x8d, 0x5a, 0x2e, 0x95, 0x2b, 0xeb, - 0xee, 0x20, 0x70, 0x35, 0x5c, 0xb9, 0xbe, 0xa1, 0x96, 0x56, 0x8a, 0xf5, 0x72, 0x53, 0x2d, 0x2f, - 0x57, 0xea, 0x0d, 0xe6, 0x94, 0x45, 0xff, 0x9a, 0x50, 0xae, 0x82, 0x53, 0xf5, 0x8d, 0x85, 0x7a, - 0x49, 0xad, 0xac, 0x93, 0x74, 0xb5, 0x5c, 0x2d, 0x9f, 0x63, 0x5f, 0x27, 0xd1, 0xfb, 0x0a, 0x30, - 0xed, 0x4e, 0x00, 0xea, 0x74, 0x5e, 0x80, 0xbe, 0x91, 0x85, 0x69, 0x15, 0xdb, 0x66, 0x67, 0x8f, - 0xcc, 0x11, 0xc6, 0x35, 0xf5, 0xf8, 0x96, 0x2c, 0x7a, 0x7e, 0x3b, 0xc4, 0xec, 0x7c, 0x88, 0xd1, - 0xe8, 0x89, 0xa6, 0xb6, 0xa7, 0xe9, 0x1d, 0xed, 0x3c, 0xeb, 0x6a, 0x26, 0xd5, 0x20, 0x41, 0x99, - 0x07, 0xc5, 0xbc, 0x68, 0x60, 0xab, 0xde, 0xba, 0x58, 0x76, 0xb6, 0x8b, 0xed, 0xb6, 0x85, 0x6d, - 0x9b, 0xad, 0x5e, 0xf4, 0xf9, 0xa2, 0xdc, 0x00, 0x47, 0x49, 0x6a, 0x28, 0x33, 0x75, 0x90, 0xe9, - 0x4d, 0xf6, 0x73, 0x16, 0x8d, 0x4b, 0x5e, 0xce, 0x5c, 0x28, 0x67, 0x90, 0x1c, 0x3e, 0x2e, 0x91, - 0xe7, 0x4f, 0xe9, 0x5c, 0x03, 0xd3, 0x86, 0xb6, 0x83, 0xcb, 0x0f, 0x74, 0x75, 0x0b, 0xdb, 0xc4, - 0x31, 0x46, 0x56, 0xc3, 0x49, 0xe8, 0x03, 0x42, 0xe7, 0xcd, 0xc5, 0x24, 0x96, 0x4c, 0xf7, 0x97, - 0x87, 0x50, 0xfd, 0x3e, 0xfd, 0x8c, 0x8c, 0xde, 0x27, 0xc3, 0x0c, 0x63, 0xaa, 0x68, 0x5c, 0xaa, - 0xb4, 0xd1, 0xd5, 0x9c, 0xf1, 0xab, 0xb9, 0x69, 0x9e, 0xf1, 0x4b, 0x5e, 0xd0, 0x2f, 0xca, 0xa2, - 0xee, 0xce, 0x7d, 0x2a, 0x4e, 0xca, 0x88, 0x76, 0x1c, 0xdd, 0x34, 0x77, 0x99, 0xa3, 0xea, 0xa4, - 0x4a, 0x5f, 0xd2, 0x5c, 0xd4, 0x43, 0xbf, 0x2f, 0xe4, 0x4c, 0x2d, 0x58, 0x8d, 0x43, 0x02, 0xf0, - 0x63, 0x32, 0xcc, 0x31, 0xae, 0xea, 0xec, 0x9c, 0x8f, 0xd0, 0x81, 0xb7, 0x5f, 0x12, 0x36, 0x04, - 0xfb, 0xd4, 0x9f, 0x95, 0xf4, 0xa8, 0x01, 0xf2, 0x43, 0x42, 0xc1, 0xd1, 0x84, 0x2b, 0x72, 0x48, - 0x50, 0xbe, 0x2d, 0x0b, 0xd3, 0x1b, 0x36, 0xb6, 0x98, 0xdf, 0x3e, 0x7a, 0x38, 0x0b, 0xf2, 0x32, - 0xe6, 0x36, 0x52, 0x9f, 0x2f, 0xec, 0xe1, 0x1b, 0xae, 0x6c, 0x88, 0xa8, 0x6b, 0x23, 0x45, 0xc0, - 0x76, 0x3d, 0xcc, 0x51, 0x91, 0x16, 0x1d, 0xc7, 0x35, 0x12, 0x3d, 0x6f, 0xda, 0x9e, 0xd4, 0x51, - 0x6c, 0x15, 0x91, 0xb2, 0xdc, 0x2c, 0x25, 0x97, 0xa7, 0x55, 0xbc, 0x49, 0xe7, 0xb3, 0x59, 0xb5, - 0x27, 0x55, 0xb9, 0x05, 0x2e, 0x33, 0xbb, 0x98, 0x9e, 0x5f, 0x09, 0x65, 0xce, 0x91, 0xcc, 0xfd, - 0x3e, 0xa1, 0x6f, 0x08, 0xf9, 0xea, 0x8a, 0x4b, 0x27, 0x99, 0x2e, 0x74, 0x47, 0x63, 0x92, 0x1c, - 0x87, 0x82, 0x9b, 0x83, 0xec, 0xbf, 0xa8, 0xe5, 0x7a, 0x6d, 0xf5, 0x6c, 0xb9, 0xff, 0x32, 0x46, - 0x0e, 0x3d, 0x47, 0x86, 0xa9, 0x05, 0xcb, 0xd4, 0xda, 0x2d, 0xcd, 0x76, 0xd0, 0x77, 0x24, 0x98, - 0x59, 0xd7, 0x2e, 0x75, 0x4c, 0xad, 0x4d, 0xfc, 0xfb, 0x7b, 0xfa, 0x82, 0x2e, 0xfd, 0xe4, 0xf5, - 0x05, 0xec, 0x95, 0x3f, 0x18, 0xe8, 0x1f, 0xdd, 0xcb, 0x88, 0x5c, 0xa8, 0xe9, 0x6f, 0xf3, 0x49, - 0xfd, 0x82, 0x95, 0x7a, 0x7c, 0xcd, 0x87, 0x79, 0x8a, 0xb0, 0x28, 0xdf, 0x27, 0x16, 0x7e, 0x54, - 0x84, 0xe4, 0xe1, 0xec, 0xca, 0x3f, 0x77, 0x12, 0xf2, 0x8b, 0x98, 0x58, 0x71, 0xff, 0x5d, 0x82, - 0x89, 0x3a, 0x76, 0x88, 0x05, 0x77, 0x1b, 0xe7, 0x29, 0xdc, 0x26, 0x19, 0x02, 0x27, 0x76, 0xef, - 0xdd, 0x9d, 0xac, 0x87, 0xce, 0x5b, 0x93, 0xe7, 0x04, 0x1e, 0x89, 0xb4, 0xdc, 0x79, 0x56, 0xe6, - 0x81, 0x3c, 0x12, 0x63, 0x49, 0xa5, 0xef, 0x6b, 0xf5, 0x0e, 0x89, 0xb9, 0x56, 0x85, 0x7a, 0xbd, - 0x57, 0x85, 0xf5, 0x33, 0xd6, 0xdb, 0x8c, 0x31, 0x1f, 0xe3, 0x1c, 0xf5, 0x24, 0x98, 0xa0, 0x32, - 0xf7, 0xe6, 0xa3, 0xbd, 0x7e, 0x0a, 0x94, 0x04, 0x39, 0x7b, 0xed, 0xe5, 0x14, 0x74, 0x51, 0x8b, - 0x2e, 0x7c, 0x2c, 0x31, 0x08, 0x66, 0xaa, 0xd8, 0xb9, 0x68, 0x5a, 0x17, 0xea, 0x8e, 0xe6, 0x60, - 0xf4, 0xaf, 0x12, 0xc8, 0x75, 0xec, 0x84, 0xa3, 0x9f, 0x54, 0xe1, 0x18, 0xad, 0x10, 0xcb, 0x48, - 0xfa, 0x6f, 0x5a, 0x91, 0x6b, 0xfa, 0x0a, 0x21, 0x94, 0x4f, 0xdd, 0xff, 0x2b, 0xfa, 0xb5, 0xbe, - 0x41, 0x9f, 0xa4, 0x3e, 0x93, 0x06, 0x26, 0x99, 0x30, 0x83, 0xae, 0x82, 0x45, 0xe8, 0xe9, 0xfb, - 0x85, 0xcc, 0x6a, 0x31, 0x9a, 0x87, 0xd3, 0x15, 0x7c, 0xe8, 0x0a, 0xc8, 0x96, 0xb6, 0x35, 0x07, - 0xbd, 0x5d, 0x06, 0x28, 0xb6, 0xdb, 0x6b, 0xd4, 0x07, 0x3c, 0xec, 0x90, 0x76, 0x06, 0x66, 0x5a, - 0xdb, 0x5a, 0x70, 0xb7, 0x09, 0xed, 0x0f, 0xb8, 0x34, 0xe5, 0xc9, 0x81, 0x33, 0x39, 0x95, 0x2a, - 0xea, 0x81, 0xc9, 0x2d, 0x83, 0xd1, 0xf6, 0x1d, 0xcd, 0xf9, 0x50, 0x98, 0xb1, 0x47, 0xe8, 0xdc, - 0xdf, 0xe7, 0x03, 0xf6, 0xa2, 0xe7, 0x70, 0x8c, 0xb4, 0x7f, 0xc0, 0x26, 0x48, 0x48, 0x78, 0xd2, - 0x5b, 0x2c, 0xa0, 0x47, 0x3c, 0x5f, 0x63, 0x09, 0x5d, 0xab, 0x94, 0xdb, 0xba, 0x27, 0x5a, 0x16, - 0x30, 0x0b, 0x3d, 0x94, 0x49, 0x06, 0x5f, 0xbc, 0xe0, 0xee, 0x86, 0x59, 0xdc, 0xd6, 0x1d, 0xec, - 0xd5, 0x92, 0x09, 0x30, 0x0e, 0x62, 0xfe, 0x07, 0xf4, 0x6c, 0xe1, 0xa0, 0x6b, 0x44, 0xa0, 0xfb, - 0x6b, 0x14, 0xd1, 0xfe, 0xc4, 0xc2, 0xa8, 0x89, 0xd1, 0x4c, 0x1f, 0xac, 0x9f, 0x93, 0xe1, 0x44, - 0xc3, 0xdc, 0xda, 0xea, 0x60, 0x4f, 0x4c, 0x98, 0x7a, 0x67, 0x22, 0x6d, 0x94, 0x70, 0x91, 0x9d, - 0x20, 0xf3, 0x7e, 0xdd, 0x3f, 0x4a, 0xe6, 0xbe, 0xf0, 0x27, 0xa6, 0x62, 0x67, 0x51, 0x44, 0x5c, - 0x7d, 0xf9, 0x8c, 0x40, 0x41, 0x2c, 0xe0, 0xb3, 0x30, 0xd9, 0xf4, 0x81, 0xf8, 0xbc, 0x04, 0xb3, - 0xf4, 0xe6, 0x4a, 0x4f, 0x41, 0xef, 0x1d, 0x21, 0x00, 0xe8, 0x3b, 0x19, 0x51, 0x3f, 0x5b, 0x22, - 0x13, 0x8e, 0x93, 0x08, 0x11, 0x8b, 0x05, 0x55, 0x19, 0x48, 0x2e, 0x7d, 0xd1, 0xfe, 0xb1, 0x0c, - 0xd3, 0xcb, 0xd8, 0x6b, 0x69, 0x76, 0xe2, 0x9e, 0xe8, 0x0c, 0xcc, 0x90, 0xeb, 0xdb, 0x6a, 0xec, - 0x98, 0x24, 0x5d, 0x35, 0xe3, 0xd2, 0x94, 0xeb, 0x60, 0xf6, 0x3c, 0xde, 0x34, 0x2d, 0x5c, 0xe3, - 0xce, 0x52, 0xf2, 0x89, 0x11, 0xe1, 0xe9, 0xb8, 0x38, 0x68, 0x0b, 0x3c, 0x36, 0x37, 0xed, 0x17, - 0x66, 0xa8, 0x2a, 0x11, 0x63, 0xce, 0x53, 0x60, 0x92, 0x21, 0xef, 0x99, 0x69, 0x71, 0xfd, 0xa2, - 0x9f, 0x17, 0xbd, 0xd6, 0x47, 0xb4, 0xcc, 0x21, 0xfa, 0xc4, 0x24, 0x4c, 0x8c, 0xe5, 0x7e, 0xf7, - 0x42, 0xa8, 0xfc, 0x85, 0x4b, 0x95, 0xb6, 0x8d, 0xd6, 0x92, 0x61, 0x7a, 0x1a, 0xc0, 0x6f, 0x1c, - 0x5e, 0x58, 0x8b, 0x50, 0x0a, 0x1f, 0xb9, 0x3e, 0xf6, 0xa0, 0x5e, 0xaf, 0x38, 0x08, 0x3b, 0x23, - 0x06, 0x46, 0xec, 0x80, 0x9f, 0x08, 0x27, 0xe9, 0xa3, 0xf3, 0x49, 0x19, 0x4e, 0xf8, 0xe7, 0x8f, - 0x56, 0x35, 0x3b, 0x68, 0x77, 0xa5, 0x64, 0x10, 0x71, 0x07, 0x3e, 0xfc, 0xc6, 0xf2, 0xcd, 0x64, - 0x63, 0x46, 0x5f, 0x4e, 0x46, 0x8b, 0x8e, 0x72, 0x13, 0x1c, 0x33, 0x76, 0x77, 0x7c, 0xa9, 0x93, - 0x16, 0xcf, 0x5a, 0xf8, 0xfe, 0x0f, 0x49, 0x46, 0x26, 0x11, 0xe6, 0xc7, 0x32, 0xa7, 0xe4, 0x8e, - 0x74, 0x3d, 0x21, 0x11, 0x8c, 0xe8, 0x9f, 0x33, 0x89, 0x7a, 0xb7, 0xc1, 0x67, 0xbe, 0x12, 0xf4, - 0x52, 0x87, 0x78, 0xe0, 0xeb, 0xcc, 0x04, 0xe4, 0xca, 0x3b, 0x5d, 0xe7, 0xd2, 0x99, 0xc7, 0xc2, - 0x6c, 0xdd, 0xb1, 0xb0, 0xb6, 0x13, 0xda, 0x19, 0x70, 0xcc, 0x0b, 0xd8, 0xf0, 0x76, 0x06, 0xc8, - 0xcb, 0xed, 0xb7, 0xc1, 0x84, 0x61, 0x36, 0xb5, 0x5d, 0x67, 0x5b, 0xb9, 0x7a, 0xdf, 0x91, 0x7a, - 0x06, 0x7e, 0x8d, 0xc5, 0x30, 0xfa, 0xf2, 0x1d, 0x64, 0x6d, 0x38, 0x6f, 0x98, 0xc5, 0x5d, 0x67, - 0x7b, 0xe1, 0xaa, 0x8f, 0xfd, 0xcd, 0xe9, 0xcc, 0xa7, 0xfe, 0xe6, 0x74, 0xe6, 0x4b, 0x7f, 0x73, - 0x3a, 0xf3, 0x4b, 0x5f, 0x39, 0x7d, 0xe4, 0x53, 0x5f, 0x39, 0x7d, 0xe4, 0xf3, 0x5f, 0x39, 0x7d, - 0xe4, 0xc7, 0xa5, 0xee, 0xf9, 0xf3, 0x79, 0x42, 0xe5, 0x49, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xff, - 0xff, 0xd9, 0x46, 0xa2, 0x63, 0x08, 0x08, 0x02, 0x00, + // 19597 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xfd, 0x7d, 0x9c, 0x23, 0x47, + 0x75, 0x2f, 0x8c, 0xaf, 0xba, 0x25, 0xcd, 0xcc, 0x99, 0x97, 0xd5, 0xb6, 0x77, 0xd7, 0xeb, 0xb2, + 0x59, 0x3b, 0x6b, 0x63, 0x1c, 0x63, 0xc6, 0xc6, 0x10, 0x82, 0x8d, 0x8d, 0xad, 0xd1, 0x68, 0x66, + 0x64, 0xcf, 0x48, 0x93, 0x96, 0x66, 0x17, 0x27, 0x37, 0x3f, 0xdd, 0x5e, 0xa9, 0x66, 0xa6, 0xbd, + 0x9a, 0x6e, 0xa5, 0xbb, 0x67, 0xd6, 0xcb, 0xef, 0x73, 0x9f, 0x1b, 0x42, 0x1c, 0x48, 0x88, 0x2f, + 0x49, 0x08, 0x49, 0x78, 0x07, 0x83, 0xe1, 0x42, 0x02, 0x84, 0xf7, 0x0b, 0x49, 0x80, 0xf0, 0x1e, + 0x42, 0x08, 0x81, 0x10, 0x08, 0x09, 0x4f, 0x20, 0x10, 0x42, 0xee, 0x27, 0x5c, 0x9e, 0xe4, 0xb9, + 0x81, 0x90, 0xc0, 0xc3, 0xf3, 0xe9, 0xaa, 0xea, 0x97, 0xd2, 0xa8, 0x5b, 0xd5, 0x1a, 0xb5, 0xc6, + 0x84, 0xe7, 0xbf, 0xee, 0xea, 0xea, 0x53, 0xa7, 0xce, 0xf7, 0x54, 0xd5, 0xa9, 0xaa, 0x53, 0xa7, + 0xe0, 0x54, 0xf7, 0xfc, 0xcd, 0x5d, 0xcb, 0x74, 0x4c, 0xfb, 0xe6, 0x96, 0xb9, 0xb3, 0xa3, 0x19, + 0x6d, 0x7b, 0x9e, 0xbc, 0x2b, 0x13, 0x9a, 0x71, 0xc9, 0xb9, 0xd4, 0xc5, 0xe8, 0xba, 0xee, 0x85, + 0xad, 0x9b, 0x3b, 0xfa, 0xf9, 0x9b, 0xbb, 0xe7, 0x6f, 0xde, 0x31, 0xdb, 0xb8, 0xe3, 0xfd, 0x40, + 0x5e, 0x58, 0x76, 0x74, 0x43, 0x54, 0xae, 0x8e, 0xd9, 0xd2, 0x3a, 0xb6, 0x63, 0x5a, 0x98, 0xe5, + 0x3c, 0x19, 0x14, 0x89, 0xf7, 0xb0, 0xe1, 0x78, 0x14, 0xae, 0xda, 0x32, 0xcd, 0xad, 0x0e, 0xa6, + 0xdf, 0xce, 0xef, 0x6e, 0xde, 0x6c, 0x3b, 0xd6, 0x6e, 0xcb, 0x61, 0x5f, 0xaf, 0xe9, 0xfd, 0xda, + 0xc6, 0x76, 0xcb, 0xd2, 0xbb, 0x8e, 0x69, 0xd1, 0x1c, 0x67, 0x3e, 0xf2, 0xd0, 0x24, 0xc8, 0x6a, + 0xb7, 0x85, 0xbe, 0x35, 0x01, 0x72, 0xb1, 0xdb, 0x45, 0x1f, 0x96, 0x00, 0x96, 0xb1, 0x73, 0x16, + 0x5b, 0xb6, 0x6e, 0x1a, 0xe8, 0x28, 0x4c, 0xa8, 0xf8, 0x67, 0x76, 0xb1, 0xed, 0xdc, 0x9e, 0x7d, + 0xee, 0xd7, 0xe4, 0x0c, 0x7a, 0x44, 0x82, 0x49, 0x15, 0xdb, 0x5d, 0xd3, 0xb0, 0xb1, 0x72, 0x37, + 0xe4, 0xb0, 0x65, 0x99, 0xd6, 0xa9, 0xcc, 0x35, 0x99, 0x1b, 0xa6, 0x6f, 0xbd, 0x71, 0x9e, 0x55, + 0x7f, 0x5e, 0xed, 0xb6, 0xe6, 0x8b, 0xdd, 0xee, 0x7c, 0x40, 0x69, 0xde, 0xfb, 0x69, 0xbe, 0xec, + 0xfe, 0xa1, 0xd2, 0x1f, 0x95, 0x53, 0x30, 0xb1, 0x47, 0x33, 0x9c, 0x92, 0xae, 0xc9, 0xdc, 0x30, + 0xa5, 0x7a, 0xaf, 0xee, 0x97, 0x36, 0x76, 0x34, 0xbd, 0x63, 0x9f, 0x92, 0xe9, 0x17, 0xf6, 0x8a, + 0x1e, 0xce, 0x40, 0x8e, 0x10, 0x51, 0x4a, 0x90, 0x6d, 0x99, 0x6d, 0x4c, 0x8a, 0x9f, 0xbb, 0xf5, + 0x66, 0xf1, 0xe2, 0xe7, 0x4b, 0x66, 0x1b, 0xab, 0xe4, 0x67, 0xe5, 0x1a, 0x98, 0xf6, 0xc4, 0x12, + 0xb0, 0x11, 0x4e, 0x3a, 0x73, 0x2b, 0x64, 0xdd, 0xfc, 0xca, 0x24, 0x64, 0xab, 0x1b, 0xab, 0xab, + 0x85, 0x23, 0xca, 0x31, 0x98, 0xdd, 0xa8, 0xde, 0x5b, 0xad, 0x9d, 0xab, 0x36, 0xcb, 0xaa, 0x5a, + 0x53, 0x0b, 0x19, 0x65, 0x16, 0xa6, 0x16, 0x8a, 0x8b, 0xcd, 0x4a, 0x75, 0x7d, 0xa3, 0x51, 0x90, + 0xd0, 0xcb, 0x65, 0x98, 0xab, 0x63, 0x67, 0x11, 0xef, 0xe9, 0x2d, 0x5c, 0x77, 0x34, 0x07, 0xa3, + 0xe7, 0x67, 0x7c, 0x61, 0x2a, 0x1b, 0x6e, 0xa1, 0xfe, 0x27, 0x56, 0x81, 0x27, 0xed, 0xab, 0x00, + 0x4f, 0x61, 0x9e, 0xfd, 0x3d, 0x1f, 0x4a, 0x53, 0xc3, 0x74, 0xce, 0x3c, 0x01, 0xa6, 0x43, 0xdf, + 0x94, 0x39, 0x80, 0x85, 0x62, 0xe9, 0xde, 0x65, 0xb5, 0xb6, 0x51, 0x5d, 0x2c, 0x1c, 0x71, 0xdf, + 0x97, 0x6a, 0x6a, 0x99, 0xbd, 0x67, 0xd0, 0x77, 0x32, 0x21, 0x30, 0x17, 0x79, 0x30, 0xe7, 0x07, + 0x33, 0xd3, 0x07, 0x50, 0xf4, 0x5a, 0x1f, 0x9c, 0x65, 0x0e, 0x9c, 0x27, 0x25, 0x23, 0x97, 0x3e, + 0x40, 0x0f, 0x4a, 0x30, 0x59, 0xdf, 0xde, 0x75, 0xda, 0xe6, 0x45, 0x03, 0x4d, 0xf9, 0xc8, 0xa0, + 0x6f, 0x84, 0x65, 0xf2, 0x74, 0x5e, 0x26, 0x37, 0xec, 0xaf, 0x04, 0xa3, 0x10, 0x21, 0x8d, 0x57, + 0xfa, 0xd2, 0x28, 0x72, 0xd2, 0x78, 0x82, 0x28, 0xa1, 0xf4, 0xe5, 0xf0, 0xe2, 0xa7, 0x42, 0xae, + 0xde, 0xd5, 0x5a, 0x18, 0x7d, 0x42, 0x86, 0x99, 0x55, 0xac, 0xed, 0xe1, 0x62, 0xb7, 0x6b, 0x99, + 0x7b, 0x18, 0x95, 0x02, 0x7d, 0x3d, 0x05, 0x13, 0xb6, 0x9b, 0xa9, 0xd2, 0x26, 0x35, 0x98, 0x52, + 0xbd, 0x57, 0xe5, 0x34, 0x80, 0xde, 0xc6, 0x86, 0xa3, 0x3b, 0x3a, 0xb6, 0x4f, 0x49, 0xd7, 0xc8, + 0x37, 0x4c, 0xa9, 0xa1, 0x14, 0xf4, 0x2d, 0x49, 0x54, 0xc7, 0x08, 0x17, 0xf3, 0x61, 0x0e, 0x22, + 0xa4, 0xfa, 0x6a, 0x49, 0x44, 0xc7, 0x06, 0x92, 0x4b, 0x26, 0xdb, 0x37, 0x65, 0x92, 0x0b, 0xd7, + 0xcd, 0x51, 0xad, 0x35, 0xeb, 0x1b, 0xa5, 0x95, 0x66, 0x7d, 0xbd, 0x58, 0x2a, 0x17, 0xb0, 0x72, + 0x1c, 0x0a, 0xe4, 0xb1, 0x59, 0xa9, 0x37, 0x17, 0xcb, 0xab, 0xe5, 0x46, 0x79, 0xb1, 0xb0, 0xa9, + 0x28, 0x30, 0xa7, 0x96, 0x7f, 0x62, 0xa3, 0x5c, 0x6f, 0x34, 0x97, 0x8a, 0x95, 0xd5, 0xf2, 0x62, + 0x61, 0xcb, 0xfd, 0x79, 0xb5, 0xb2, 0x56, 0x69, 0x34, 0xd5, 0x72, 0xb1, 0xb4, 0x52, 0x5e, 0x2c, + 0x6c, 0x2b, 0x97, 0xc3, 0x65, 0xd5, 0x5a, 0xb3, 0xb8, 0xbe, 0xae, 0xd6, 0xce, 0x96, 0x9b, 0xec, + 0x8f, 0x7a, 0x41, 0xa7, 0x05, 0x35, 0x9a, 0xf5, 0x95, 0xa2, 0x5a, 0x2e, 0x2e, 0xac, 0x96, 0x0b, + 0xf7, 0xa3, 0x67, 0xcb, 0x30, 0xbb, 0xa6, 0x5d, 0xc0, 0xf5, 0x6d, 0xcd, 0xc2, 0xda, 0xf9, 0x0e, + 0x46, 0xd7, 0x0a, 0xe0, 0x89, 0x3e, 0x11, 0xc6, 0xab, 0xcc, 0xe3, 0x75, 0x73, 0x1f, 0x01, 0x73, + 0x45, 0x44, 0x00, 0xf6, 0xaf, 0x7e, 0x33, 0x58, 0xe1, 0x00, 0x7b, 0x72, 0x42, 0x7a, 0xc9, 0x10, + 0xfb, 0xb9, 0x47, 0x01, 0x62, 0xe8, 0x8b, 0x32, 0xcc, 0x55, 0x8c, 0x3d, 0xdd, 0xc1, 0xcb, 0xd8, + 0xc0, 0x96, 0x3b, 0x0e, 0x08, 0xc1, 0xf0, 0x88, 0x1c, 0x82, 0x61, 0x89, 0x87, 0xe1, 0x96, 0x3e, + 0x62, 0xe3, 0xcb, 0x88, 0x18, 0x6d, 0xaf, 0x82, 0x29, 0x9d, 0xe4, 0x2b, 0xe9, 0x6d, 0x26, 0xb1, + 0x20, 0x41, 0xb9, 0x0e, 0x66, 0xe9, 0xcb, 0x92, 0xde, 0xc1, 0xf7, 0xe2, 0x4b, 0x6c, 0xdc, 0xe5, + 0x13, 0xd1, 0x2f, 0xfb, 0x8d, 0xaf, 0xc2, 0x61, 0xf9, 0x63, 0x49, 0x99, 0x4a, 0x06, 0xe6, 0x0b, + 0x1f, 0x0d, 0xcd, 0x6f, 0x5f, 0x2b, 0xd3, 0xd1, 0xf7, 0x24, 0x98, 0xae, 0x3b, 0x66, 0xd7, 0x55, + 0x59, 0xdd, 0xd8, 0x12, 0x03, 0xf7, 0x63, 0xe1, 0x36, 0x56, 0xe2, 0xc1, 0x7d, 0x42, 0x1f, 0x39, + 0x86, 0x0a, 0x88, 0x68, 0x61, 0xdf, 0xf2, 0x5b, 0xd8, 0x12, 0x87, 0xca, 0xad, 0x89, 0xa8, 0xfd, + 0x00, 0xb6, 0xaf, 0x17, 0xca, 0x50, 0xf0, 0xd4, 0xcc, 0x29, 0xed, 0x5a, 0x16, 0x36, 0x1c, 0x31, + 0x10, 0xfe, 0x2a, 0x0c, 0xc2, 0x0a, 0x0f, 0xc2, 0xad, 0x31, 0xca, 0xec, 0x95, 0x92, 0x62, 0x1b, + 0x7b, 0xbf, 0x8f, 0xe6, 0xbd, 0x1c, 0x9a, 0x3f, 0x9e, 0x9c, 0xad, 0x64, 0x90, 0xae, 0x0c, 0x81, + 0xe8, 0x71, 0x28, 0xb8, 0x63, 0x52, 0xa9, 0x51, 0x39, 0x5b, 0x6e, 0x56, 0xaa, 0x67, 0x2b, 0x8d, + 0x72, 0x01, 0xa3, 0x17, 0xc8, 0x30, 0x43, 0x59, 0x53, 0xf1, 0x9e, 0x79, 0x41, 0xb0, 0xd7, 0xfb, + 0x62, 0x42, 0x63, 0x21, 0x5c, 0x42, 0x44, 0xcb, 0xf8, 0xa5, 0x04, 0xc6, 0x42, 0x0c, 0xb9, 0x47, + 0x53, 0x6f, 0xb5, 0xaf, 0x19, 0x6c, 0xf5, 0x69, 0x2d, 0x7d, 0x7b, 0xab, 0x17, 0x66, 0x01, 0x68, + 0x25, 0xcf, 0xea, 0xf8, 0x22, 0x5a, 0x0b, 0x30, 0xe1, 0xd4, 0x36, 0x33, 0x50, 0x6d, 0xa5, 0x7e, + 0x6a, 0xfb, 0xae, 0xf0, 0x98, 0xb5, 0xc0, 0xa3, 0x77, 0x53, 0xa4, 0xb8, 0x5d, 0x4e, 0xa2, 0x67, + 0x87, 0x9e, 0xa2, 0x48, 0xbc, 0xd5, 0x79, 0x15, 0x4c, 0x91, 0xc7, 0xaa, 0xb6, 0x83, 0x59, 0x1b, + 0x0a, 0x12, 0x94, 0x33, 0x30, 0x43, 0x33, 0xb6, 0x4c, 0xc3, 0xad, 0x4f, 0x96, 0x64, 0xe0, 0xd2, + 0x5c, 0x10, 0x5b, 0x16, 0xd6, 0x1c, 0xd3, 0x22, 0x34, 0x72, 0x14, 0xc4, 0x50, 0x12, 0xfa, 0xba, + 0xdf, 0x0a, 0xcb, 0x9c, 0xe6, 0x3c, 0x31, 0x49, 0x55, 0x92, 0xe9, 0xcd, 0xde, 0x70, 0xed, 0x8f, + 0xb6, 0xba, 0xa6, 0x8b, 0xf6, 0x12, 0x99, 0xda, 0x61, 0xe5, 0x24, 0x28, 0x2c, 0xd5, 0xcd, 0x5b, + 0xaa, 0x55, 0x1b, 0xe5, 0x6a, 0xa3, 0xb0, 0xd9, 0x57, 0xa3, 0xb6, 0xd0, 0xab, 0xb3, 0x90, 0xbd, + 0xc7, 0xd4, 0x0d, 0xf4, 0x60, 0x86, 0x53, 0x09, 0x03, 0x3b, 0x17, 0x4d, 0xeb, 0x82, 0xdf, 0x50, + 0x83, 0x84, 0x78, 0x6c, 0x02, 0x55, 0x92, 0x07, 0xaa, 0x52, 0xb6, 0x9f, 0x2a, 0xfd, 0x5a, 0x58, + 0x95, 0xee, 0xe0, 0x55, 0xe9, 0xfa, 0x3e, 0xf2, 0x77, 0x99, 0x8f, 0xe8, 0x00, 0x3e, 0xea, 0x77, + 0x00, 0x77, 0x71, 0x30, 0x3e, 0x5e, 0x8c, 0x4c, 0x32, 0x00, 0xbf, 0x90, 0x6a, 0xc3, 0xef, 0x07, + 0xf5, 0x56, 0x04, 0xd4, 0xdb, 0x7d, 0xfa, 0x04, 0x7d, 0x7f, 0xd7, 0x71, 0xff, 0xfe, 0x6e, 0xe2, + 0x82, 0x72, 0x02, 0x8e, 0x2d, 0x56, 0x96, 0x96, 0xca, 0x6a, 0xb9, 0xda, 0x68, 0x56, 0xcb, 0x8d, + 0x73, 0x35, 0xf5, 0xde, 0x42, 0x07, 0x3d, 0x2c, 0x03, 0xb8, 0x12, 0x2a, 0x69, 0x46, 0x0b, 0x77, + 0xc4, 0x7a, 0xf4, 0xff, 0x25, 0x25, 0xeb, 0x13, 0x02, 0xfa, 0x11, 0x70, 0xbe, 0x4c, 0x12, 0x6f, + 0x95, 0x91, 0xc4, 0x92, 0x81, 0xfa, 0x86, 0x47, 0x83, 0xed, 0x79, 0x19, 0x1c, 0xf5, 0xe8, 0xb1, + 0xec, 0xfd, 0xa7, 0x7d, 0x6f, 0xce, 0xc2, 0x1c, 0x83, 0xc5, 0x9b, 0xc7, 0x3f, 0x37, 0x23, 0x32, + 0x91, 0x47, 0x30, 0xc9, 0xa6, 0xed, 0x5e, 0xf7, 0xee, 0xbf, 0x2b, 0xcb, 0x30, 0xdd, 0xc5, 0xd6, + 0x8e, 0x6e, 0xdb, 0xba, 0x69, 0xd0, 0x05, 0xb9, 0xb9, 0x5b, 0x1f, 0xeb, 0x4b, 0x9c, 0xac, 0x5d, + 0xce, 0xaf, 0x6b, 0x96, 0xa3, 0xb7, 0xf4, 0xae, 0x66, 0x38, 0xeb, 0x41, 0x66, 0x35, 0xfc, 0x27, + 0xfa, 0xd5, 0x84, 0xd3, 0x1a, 0xbe, 0x26, 0x11, 0x2a, 0xf1, 0xfb, 0x09, 0xa6, 0x24, 0xb1, 0x04, + 0x93, 0xa9, 0xc5, 0x87, 0x53, 0x55, 0x8b, 0x3e, 0x78, 0x6f, 0x29, 0x57, 0xc0, 0x89, 0x4a, 0xb5, + 0x54, 0x53, 0xd5, 0x72, 0xa9, 0xd1, 0x5c, 0x2f, 0xab, 0x6b, 0x95, 0x7a, 0xbd, 0x52, 0xab, 0xd6, + 0x0f, 0xd2, 0xda, 0xd1, 0xc7, 0x65, 0x5f, 0x63, 0x16, 0x71, 0xab, 0xa3, 0x1b, 0x18, 0xdd, 0x75, + 0x40, 0x85, 0xe1, 0x57, 0x7d, 0xc4, 0x71, 0x66, 0xe5, 0x47, 0xe0, 0xfc, 0xaa, 0xe4, 0x38, 0xf7, + 0x27, 0xf8, 0x1f, 0xb8, 0xf9, 0x7f, 0x51, 0x86, 0x63, 0xa1, 0x86, 0xa8, 0xe2, 0x9d, 0x91, 0xad, + 0xe4, 0xfd, 0x5c, 0xb8, 0xed, 0x56, 0x78, 0x4c, 0xfb, 0x59, 0xd3, 0xfb, 0xd8, 0x88, 0x80, 0xf5, + 0x0d, 0x3e, 0xac, 0xab, 0x1c, 0xac, 0x4f, 0x1d, 0x82, 0x66, 0x32, 0x64, 0x7f, 0x37, 0x55, 0x64, + 0xaf, 0x80, 0x13, 0xeb, 0x45, 0xb5, 0x51, 0x29, 0x55, 0xd6, 0x8b, 0xee, 0x38, 0x1a, 0x1a, 0xb2, + 0x23, 0xcc, 0x75, 0x1e, 0xf4, 0xbe, 0xf8, 0xbe, 0x2f, 0x0b, 0x57, 0xf5, 0xef, 0x68, 0x4b, 0xdb, + 0x9a, 0xb1, 0x85, 0x91, 0x2e, 0x02, 0xf5, 0x22, 0x4c, 0xb4, 0x48, 0x76, 0x8a, 0x73, 0x78, 0xeb, + 0x26, 0xa6, 0x2f, 0xa7, 0x25, 0xa8, 0xde, 0xaf, 0xe8, 0x6d, 0x61, 0x85, 0x68, 0xf0, 0x0a, 0xf1, + 0xf4, 0x78, 0xf0, 0xf6, 0xf1, 0x1d, 0xa1, 0x1b, 0x9f, 0xf2, 0x75, 0xe3, 0x1c, 0xa7, 0x1b, 0xa5, + 0x83, 0x91, 0x4f, 0xa6, 0x26, 0x7f, 0xfc, 0x68, 0xe8, 0x00, 0x22, 0xb5, 0x49, 0x8f, 0x1e, 0x15, + 0xfa, 0x76, 0xf7, 0xaf, 0x90, 0x21, 0xbf, 0x88, 0x3b, 0x58, 0x74, 0x25, 0xf2, 0x9b, 0x92, 0xe8, + 0x86, 0x08, 0x85, 0x81, 0xd2, 0x8e, 0x5e, 0x1d, 0x71, 0xf4, 0x1d, 0x6c, 0x3b, 0xda, 0x4e, 0x97, + 0x88, 0x5a, 0x56, 0x83, 0x04, 0xf4, 0xf3, 0x92, 0xc8, 0x76, 0x49, 0x4c, 0x31, 0xff, 0x31, 0xd6, + 0x14, 0x3f, 0x23, 0xc1, 0x64, 0x1d, 0x3b, 0x35, 0xab, 0x8d, 0x2d, 0x54, 0x0f, 0x30, 0xba, 0x06, + 0xa6, 0x09, 0x28, 0xee, 0x34, 0xd3, 0xc7, 0x29, 0x9c, 0xa4, 0x5c, 0x0f, 0x73, 0xfe, 0x2b, 0xf9, + 0x9d, 0x75, 0xe3, 0x3d, 0xa9, 0xe8, 0x9f, 0x32, 0xa2, 0xbb, 0xb8, 0x6c, 0xc9, 0x90, 0x71, 0x13, + 0xd1, 0x4a, 0xc5, 0x76, 0x64, 0x63, 0x49, 0xa5, 0xbf, 0xd1, 0xf5, 0x16, 0x09, 0x60, 0xc3, 0xb0, + 0x3d, 0xb9, 0x3e, 0x3e, 0x81, 0x5c, 0xd1, 0xbf, 0x64, 0x92, 0xcd, 0x62, 0x82, 0x72, 0x22, 0x24, + 0xf6, 0x9a, 0x04, 0x6b, 0x0b, 0x91, 0xc4, 0xd2, 0x97, 0xd9, 0x57, 0xe6, 0x20, 0x7f, 0x4e, 0xeb, + 0x74, 0xb0, 0x83, 0xbe, 0x2a, 0x41, 0xbe, 0x64, 0x61, 0xcd, 0xc1, 0x61, 0xd1, 0x21, 0x98, 0xb4, + 0x4c, 0xd3, 0x59, 0xd7, 0x9c, 0x6d, 0x26, 0x37, 0xff, 0x9d, 0x39, 0x0c, 0xfc, 0x4e, 0xb8, 0xfb, + 0xb8, 0x8b, 0x17, 0xdd, 0x8f, 0x72, 0xb5, 0xa5, 0x05, 0xcd, 0xd3, 0x42, 0x22, 0xfa, 0x0f, 0x04, + 0x93, 0x3b, 0x06, 0xde, 0x31, 0x0d, 0xbd, 0xe5, 0xd9, 0x9c, 0xde, 0x3b, 0xfa, 0x80, 0x2f, 0xd3, + 0x05, 0x4e, 0xa6, 0xf3, 0xc2, 0xa5, 0x24, 0x13, 0x68, 0x7d, 0x88, 0xde, 0xe3, 0x6a, 0xb8, 0x92, + 0x76, 0x06, 0xcd, 0x46, 0xad, 0x59, 0x52, 0xcb, 0xc5, 0x46, 0xb9, 0xb9, 0x5a, 0x2b, 0x15, 0x57, + 0x9b, 0x6a, 0x79, 0xbd, 0x56, 0xc0, 0xe8, 0xef, 0x25, 0x57, 0xb8, 0x2d, 0x73, 0x0f, 0x5b, 0x68, + 0x59, 0x48, 0xce, 0x71, 0x32, 0x61, 0x18, 0xfc, 0x9a, 0xb0, 0xd3, 0x06, 0x93, 0x0e, 0xe3, 0x20, + 0x42, 0x79, 0x3f, 0x28, 0xd4, 0xdc, 0x63, 0x49, 0x3d, 0x0a, 0x24, 0xfd, 0xbf, 0x25, 0x98, 0x28, + 0x99, 0xc6, 0x1e, 0xb6, 0x9c, 0xf0, 0x7c, 0x27, 0x2c, 0xcd, 0x0c, 0x2f, 0x4d, 0x77, 0x90, 0xc4, + 0x86, 0x63, 0x99, 0x5d, 0x6f, 0xc2, 0xe3, 0xbd, 0xa2, 0xd7, 0x25, 0x95, 0x30, 0x2b, 0x39, 0x7a, + 0xe1, 0xb3, 0x7f, 0x41, 0x1c, 0x7b, 0x72, 0x4f, 0x03, 0x78, 0x38, 0x09, 0x2e, 0xfd, 0x19, 0x48, + 0xbf, 0x4b, 0xf9, 0x92, 0x0c, 0xb3, 0xb4, 0xf1, 0xd5, 0x31, 0xb1, 0xd0, 0x50, 0x2d, 0xbc, 0xe4, + 0xd8, 0x23, 0xfc, 0x95, 0x23, 0x9c, 0xf8, 0xf3, 0x5a, 0xb7, 0xeb, 0x2f, 0x3f, 0xaf, 0x1c, 0x51, + 0xd9, 0x3b, 0x55, 0xf3, 0x85, 0x3c, 0x64, 0xb5, 0x5d, 0x67, 0x1b, 0x7d, 0x4f, 0x78, 0xf2, 0xc9, + 0x75, 0x06, 0x8c, 0x9f, 0x08, 0x48, 0x8e, 0x43, 0xce, 0x31, 0x2f, 0x60, 0x4f, 0x0e, 0xf4, 0xc5, + 0x85, 0x43, 0xeb, 0x76, 0x1b, 0xe4, 0x03, 0x83, 0xc3, 0x7b, 0x77, 0x6d, 0x1d, 0xad, 0xd5, 0x32, + 0x77, 0x0d, 0xa7, 0xe2, 0x2d, 0x41, 0x07, 0x09, 0xe8, 0xf3, 0x19, 0x91, 0xc9, 0xac, 0x00, 0x83, + 0xc9, 0x20, 0x3b, 0x3f, 0x44, 0x53, 0x9a, 0x87, 0x1b, 0x8b, 0xeb, 0xeb, 0xcd, 0x46, 0xed, 0xde, + 0x72, 0x35, 0x30, 0x3c, 0x9b, 0x95, 0x6a, 0xb3, 0xb1, 0x52, 0x6e, 0x96, 0x36, 0x54, 0xb2, 0x4e, + 0x58, 0x2c, 0x95, 0x6a, 0x1b, 0xd5, 0x46, 0x01, 0xa3, 0x37, 0x4a, 0x30, 0x53, 0xea, 0x98, 0xb6, + 0x8f, 0xf0, 0xd5, 0x01, 0xc2, 0xbe, 0x18, 0x33, 0x21, 0x31, 0xa2, 0x7f, 0xcf, 0x88, 0x3a, 0x1d, + 0x78, 0x02, 0x09, 0x91, 0x8f, 0xe8, 0xa5, 0x5e, 0x27, 0xe4, 0x74, 0x30, 0x98, 0x5e, 0xfa, 0x4d, + 0xe2, 0x33, 0xb7, 0xc3, 0x44, 0x91, 0x2a, 0x06, 0xfa, 0x9b, 0x0c, 0xe4, 0x4b, 0xa6, 0xb1, 0xa9, + 0x6f, 0xb9, 0xc6, 0x1c, 0x36, 0xb4, 0xf3, 0x1d, 0xbc, 0xa8, 0x39, 0xda, 0x9e, 0x8e, 0x2f, 0x92, + 0x0a, 0x4c, 0xaa, 0x3d, 0xa9, 0x2e, 0x53, 0x2c, 0x05, 0x9f, 0xdf, 0xdd, 0x22, 0x4c, 0x4d, 0xaa, + 0xe1, 0x24, 0xe5, 0xa9, 0x70, 0x39, 0x7d, 0x5d, 0xb7, 0xb0, 0x85, 0x3b, 0x58, 0xb3, 0xb1, 0x3b, + 0x2d, 0x32, 0x70, 0x87, 0x28, 0xed, 0xa4, 0x1a, 0xf5, 0x59, 0x39, 0x03, 0x33, 0xf4, 0x13, 0x31, + 0x45, 0x6c, 0xa2, 0xc6, 0x93, 0x2a, 0x97, 0xa6, 0x3c, 0x01, 0x72, 0xf8, 0x01, 0xc7, 0xd2, 0x4e, + 0xb5, 0x09, 0x5e, 0x97, 0xcf, 0x53, 0xaf, 0xc3, 0x79, 0xcf, 0xeb, 0x70, 0xbe, 0x4e, 0x7c, 0x12, + 0x55, 0x9a, 0x0b, 0xbd, 0x74, 0xd2, 0x37, 0x24, 0xbe, 0x2f, 0x05, 0x8a, 0xa1, 0x40, 0xd6, 0xd0, + 0x76, 0x30, 0xd3, 0x0b, 0xf2, 0xac, 0xdc, 0x08, 0x47, 0xb5, 0x3d, 0xcd, 0xd1, 0xac, 0x55, 0xb3, + 0xa5, 0x75, 0xc8, 0xe0, 0xe7, 0xb5, 0xfc, 0xde, 0x0f, 0x64, 0x47, 0xc8, 0x31, 0x2d, 0x4c, 0x72, + 0x79, 0x3b, 0x42, 0x5e, 0x82, 0x4b, 0x5d, 0x6f, 0x99, 0x06, 0xe1, 0x5f, 0x56, 0xc9, 0xb3, 0x2b, + 0x95, 0xb6, 0x6e, 0xbb, 0x15, 0x21, 0x54, 0xaa, 0x74, 0x6b, 0xa3, 0x7e, 0xc9, 0x68, 0x91, 0xdd, + 0xa0, 0x49, 0x35, 0xea, 0xb3, 0xb2, 0x00, 0xd3, 0x6c, 0x23, 0x64, 0xcd, 0xd5, 0xab, 0x3c, 0xd1, + 0xab, 0x6b, 0x78, 0x9f, 0x2e, 0x8a, 0xe7, 0x7c, 0x35, 0xc8, 0xa7, 0x86, 0x7f, 0x52, 0xee, 0x86, + 0x2b, 0xd9, 0x6b, 0x69, 0xd7, 0x76, 0xcc, 0x1d, 0x0a, 0xfa, 0x92, 0xde, 0xa1, 0x35, 0x98, 0x20, + 0x35, 0x88, 0xcb, 0xa2, 0xdc, 0x0a, 0xc7, 0xbb, 0x16, 0xde, 0xc4, 0xd6, 0x7d, 0xda, 0xce, 0xee, + 0x03, 0x0d, 0x4b, 0x33, 0xec, 0xae, 0x69, 0x39, 0xa7, 0x26, 0x09, 0xf3, 0x7d, 0xbf, 0xb1, 0x8e, + 0x72, 0x12, 0xf2, 0x54, 0x7c, 0xe8, 0xf9, 0x39, 0x61, 0x77, 0x4e, 0x56, 0xa1, 0x58, 0xf3, 0xec, + 0x16, 0x98, 0x60, 0x3d, 0x1c, 0x01, 0x6a, 0xfa, 0xd6, 0x93, 0x3d, 0xeb, 0x0a, 0x8c, 0x8a, 0xea, + 0x65, 0x53, 0x9e, 0x04, 0xf9, 0x16, 0xa9, 0x16, 0xc1, 0x6c, 0xfa, 0xd6, 0x2b, 0xfb, 0x17, 0x4a, + 0xb2, 0xa8, 0x2c, 0x2b, 0xfa, 0x4b, 0x59, 0xc8, 0x03, 0x34, 0x8e, 0xe3, 0x64, 0xad, 0xfa, 0xeb, + 0xd2, 0x10, 0xdd, 0xe6, 0x4d, 0x70, 0x03, 0xeb, 0x13, 0x99, 0xfd, 0xb1, 0xd8, 0x5c, 0xd8, 0xf0, + 0x26, 0x83, 0xae, 0x55, 0x52, 0x6f, 0x14, 0x55, 0x77, 0x26, 0xbf, 0xe8, 0x4e, 0x22, 0x6f, 0x84, + 0xeb, 0x07, 0xe4, 0x2e, 0x37, 0x9a, 0xd5, 0xe2, 0x5a, 0xb9, 0xb0, 0xc9, 0xdb, 0x36, 0xf5, 0x46, + 0x6d, 0xbd, 0xa9, 0x6e, 0x54, 0xab, 0x95, 0xea, 0x32, 0x25, 0xe6, 0x9a, 0x84, 0x27, 0x83, 0x0c, + 0xe7, 0xd4, 0x4a, 0xa3, 0xdc, 0x2c, 0xd5, 0xaa, 0x4b, 0x95, 0xe5, 0x82, 0x3e, 0xc8, 0x30, 0xba, + 0x5f, 0xb9, 0x06, 0xae, 0xe2, 0x38, 0xa9, 0xd4, 0xaa, 0xee, 0xcc, 0xb6, 0x54, 0xac, 0x96, 0xca, + 0xee, 0x34, 0xf6, 0x82, 0x82, 0xe0, 0x04, 0x25, 0xd7, 0x5c, 0xaa, 0xac, 0x86, 0x37, 0xa3, 0x3e, + 0x96, 0x51, 0x4e, 0xc1, 0x65, 0xe1, 0x6f, 0x95, 0xea, 0xd9, 0xe2, 0x6a, 0x65, 0xb1, 0xf0, 0x47, + 0x19, 0xe5, 0x3a, 0xb8, 0x9a, 0xfb, 0x8b, 0xee, 0x2b, 0x35, 0x2b, 0x8b, 0xcd, 0xb5, 0x4a, 0x7d, + 0xad, 0xd8, 0x28, 0xad, 0x14, 0x3e, 0x4e, 0xe6, 0x0b, 0xbe, 0x01, 0x1c, 0x72, 0xcb, 0x7c, 0x61, + 0x78, 0x4c, 0x2f, 0xf2, 0x8a, 0xfa, 0xf8, 0xbe, 0xb0, 0xc7, 0xdb, 0xb0, 0x1f, 0xf6, 0x47, 0x87, + 0x45, 0x4e, 0x85, 0x6e, 0x49, 0x40, 0x2b, 0x99, 0x0e, 0x35, 0x86, 0x50, 0xa1, 0x6b, 0xe0, 0xaa, + 0x6a, 0x99, 0x22, 0xa5, 0x96, 0x4b, 0xb5, 0xb3, 0x65, 0xb5, 0x79, 0xae, 0xb8, 0xba, 0x5a, 0x6e, + 0x34, 0x97, 0x2a, 0x6a, 0xbd, 0x51, 0xd8, 0x44, 0xff, 0x22, 0xf9, 0xab, 0x39, 0x21, 0x69, 0xfd, + 0x8d, 0x94, 0xb4, 0x59, 0xc7, 0xae, 0xda, 0xfc, 0x18, 0xe4, 0x6d, 0x47, 0x73, 0x76, 0x6d, 0xd6, + 0xaa, 0x1f, 0xd3, 0xbf, 0x55, 0xcf, 0xd7, 0x49, 0x26, 0x95, 0x65, 0x46, 0x7f, 0x99, 0x49, 0xd2, + 0x4c, 0x47, 0xb0, 0xa0, 0xa3, 0x0f, 0x21, 0xe2, 0xd3, 0x80, 0x3c, 0x6d, 0xaf, 0xd4, 0x9b, 0xc5, + 0x55, 0xb5, 0x5c, 0x5c, 0xbc, 0xcf, 0x5f, 0xc6, 0xc1, 0xca, 0x09, 0x38, 0xb6, 0x51, 0x2d, 0x2e, + 0xac, 0x96, 0x49, 0x73, 0xa9, 0x55, 0xab, 0xe5, 0x92, 0x2b, 0xf7, 0x9f, 0x27, 0x9b, 0x26, 0xae, + 0x05, 0x4d, 0xf8, 0x76, 0xad, 0x9c, 0x90, 0xfc, 0xbf, 0x26, 0xec, 0x5b, 0x14, 0x68, 0x58, 0x98, + 0xd6, 0x68, 0x71, 0xf8, 0xbc, 0x90, 0x3b, 0x91, 0x10, 0x27, 0xc9, 0xf0, 0xf8, 0xcf, 0x43, 0xe0, + 0x71, 0x02, 0x8e, 0x85, 0xf1, 0x20, 0x6e, 0x45, 0xd1, 0x30, 0x7c, 0x79, 0x12, 0xf2, 0x75, 0xdc, + 0xc1, 0x2d, 0x07, 0xbd, 0x39, 0x64, 0x4c, 0xcc, 0x81, 0xe4, 0xbb, 0xb1, 0x48, 0x7a, 0x9b, 0x9b, + 0x3e, 0x4b, 0x3d, 0xd3, 0xe7, 0x18, 0x33, 0x40, 0x4e, 0x64, 0x06, 0x64, 0x53, 0x30, 0x03, 0x72, + 0xc3, 0x9b, 0x01, 0xf9, 0x41, 0x66, 0x00, 0x7a, 0x4d, 0x3e, 0x69, 0x2f, 0x41, 0x45, 0x7d, 0xb8, + 0x83, 0xff, 0xff, 0xca, 0x26, 0xe9, 0x55, 0xfa, 0x72, 0x9c, 0x4c, 0x8b, 0xbf, 0x27, 0xa7, 0xb0, + 0xfc, 0xa0, 0x5c, 0x0b, 0x57, 0x07, 0xef, 0xcd, 0xf2, 0x33, 0x2a, 0xf5, 0x46, 0x9d, 0x8c, 0xf8, + 0xa5, 0x9a, 0xaa, 0x6e, 0xac, 0xd3, 0x35, 0xe4, 0x93, 0xa0, 0x04, 0x54, 0xd4, 0x8d, 0x2a, 0x1d, + 0xdf, 0xb7, 0x78, 0xea, 0x4b, 0x95, 0xea, 0x62, 0xd3, 0x6f, 0x33, 0xd5, 0xa5, 0x5a, 0x61, 0xdb, + 0x9d, 0xb2, 0x85, 0xa8, 0xbb, 0x03, 0x34, 0x2b, 0xa1, 0x58, 0x5d, 0x6c, 0xae, 0x55, 0xcb, 0x6b, + 0xb5, 0x6a, 0xa5, 0x44, 0xd2, 0xeb, 0xe5, 0x46, 0x41, 0x77, 0x07, 0x9a, 0x1e, 0x8b, 0xa2, 0x5e, + 0x2e, 0xaa, 0xa5, 0x95, 0xb2, 0x4a, 0x8b, 0xbc, 0x5f, 0xb9, 0x1e, 0xce, 0x14, 0xab, 0xb5, 0x86, + 0x9b, 0x52, 0xac, 0xde, 0xd7, 0xb8, 0x6f, 0xbd, 0xdc, 0x5c, 0x57, 0x6b, 0xa5, 0x72, 0xbd, 0xee, + 0xb6, 0x53, 0x66, 0x7f, 0x14, 0x3a, 0xca, 0xd3, 0xe1, 0xf6, 0x10, 0x6b, 0xe5, 0x06, 0xd9, 0xb0, + 0x5c, 0xab, 0x11, 0x9f, 0x95, 0xc5, 0x72, 0x73, 0xa5, 0x58, 0x6f, 0x56, 0xaa, 0xa5, 0xda, 0xda, + 0x7a, 0xb1, 0x51, 0x71, 0x9b, 0xf3, 0xba, 0x5a, 0x6b, 0xd4, 0x9a, 0x67, 0xcb, 0x6a, 0xbd, 0x52, + 0xab, 0x16, 0x0c, 0xb7, 0xca, 0xa1, 0xf6, 0xef, 0xf5, 0xc3, 0xa6, 0x72, 0x15, 0x9c, 0xf2, 0xd2, + 0x57, 0x6b, 0xae, 0xa0, 0x43, 0x16, 0x49, 0x37, 0x55, 0x8b, 0xe4, 0xdf, 0x24, 0xc8, 0xd6, 0x1d, + 0xb3, 0x8b, 0x7e, 0x34, 0xe8, 0x60, 0x4e, 0x03, 0x58, 0x64, 0xff, 0xd1, 0x9d, 0x85, 0xb1, 0x79, + 0x59, 0x28, 0x05, 0x7d, 0x44, 0x78, 0xd3, 0x24, 0xe8, 0xb3, 0xcd, 0x6e, 0x84, 0xad, 0xf2, 0x1d, + 0xb1, 0x53, 0x24, 0xd1, 0x84, 0x92, 0xe9, 0xfb, 0x2f, 0x0d, 0xb3, 0x2d, 0x82, 0xe0, 0x64, 0x08, + 0x36, 0x57, 0xfe, 0x9e, 0x4a, 0x60, 0xe5, 0x72, 0xb8, 0xac, 0x47, 0xb9, 0x88, 0x4e, 0x6d, 0x2a, + 0x3f, 0x02, 0x8f, 0x09, 0xa9, 0x77, 0x79, 0xad, 0x76, 0xb6, 0xec, 0x2b, 0xf2, 0x62, 0xb1, 0x51, + 0x2c, 0x6c, 0xa1, 0xcf, 0xc8, 0x90, 0x5d, 0x33, 0xf7, 0x7a, 0xf7, 0xaa, 0x0c, 0x7c, 0x31, 0xb4, + 0x16, 0xea, 0xbd, 0xf2, 0x5e, 0xf3, 0x42, 0x62, 0x5f, 0x8b, 0xde, 0x97, 0xfe, 0xbc, 0x94, 0x44, + 0xec, 0x6b, 0x07, 0xdd, 0x8c, 0xfe, 0x87, 0x61, 0xc4, 0x1e, 0x21, 0x5a, 0xac, 0x9c, 0x81, 0xd3, + 0xc1, 0x87, 0xca, 0x62, 0xb9, 0xda, 0xa8, 0x2c, 0xdd, 0x17, 0x08, 0xb7, 0xa2, 0x0a, 0x89, 0x7f, + 0x50, 0x37, 0x16, 0x3f, 0xd3, 0x38, 0x05, 0xc7, 0x83, 0x6f, 0xcb, 0xe5, 0x86, 0xf7, 0xe5, 0x7e, + 0xf4, 0x60, 0x0e, 0x66, 0x68, 0xb7, 0xbe, 0xd1, 0x6d, 0x6b, 0x0e, 0x46, 0x4f, 0x0a, 0xd0, 0xbd, + 0x01, 0x8e, 0x56, 0xd6, 0x97, 0xea, 0x75, 0xc7, 0xb4, 0xb4, 0x2d, 0x5c, 0x6c, 0xb7, 0x2d, 0x26, + 0xad, 0xde, 0x64, 0xf4, 0x0e, 0xe1, 0x75, 0x3e, 0x7e, 0x28, 0xa1, 0x65, 0x46, 0xa0, 0xfe, 0x25, + 0xa1, 0x75, 0x39, 0x01, 0x82, 0xc9, 0xd0, 0xbf, 0x7f, 0xc4, 0x6d, 0x2e, 0x1a, 0x97, 0xcd, 0x33, + 0xcf, 0x91, 0x60, 0xaa, 0xa1, 0xef, 0xe0, 0x67, 0x9a, 0x06, 0xb6, 0x95, 0x09, 0x90, 0x97, 0xd7, + 0x1a, 0x85, 0x23, 0xee, 0x83, 0x6b, 0x54, 0x65, 0xc8, 0x43, 0xd9, 0x2d, 0xc0, 0x7d, 0x28, 0x36, + 0x0a, 0xb2, 0xfb, 0xb0, 0x56, 0x6e, 0x14, 0xb2, 0xee, 0x43, 0xb5, 0xdc, 0x28, 0xe4, 0xdc, 0x87, + 0xf5, 0xd5, 0x46, 0x21, 0xef, 0x3e, 0x54, 0xea, 0x8d, 0xc2, 0x84, 0xfb, 0xb0, 0x50, 0x6f, 0x14, + 0x26, 0xdd, 0x87, 0xb3, 0xf5, 0x46, 0x61, 0xca, 0x7d, 0x28, 0x35, 0x1a, 0x05, 0x70, 0x1f, 0xee, + 0xa9, 0x37, 0x0a, 0xd3, 0xee, 0x43, 0xb1, 0xd4, 0x28, 0xcc, 0x90, 0x87, 0x72, 0xa3, 0x30, 0xeb, + 0x3e, 0xd4, 0xeb, 0x8d, 0xc2, 0x1c, 0xa1, 0x5c, 0x6f, 0x14, 0x8e, 0x92, 0xb2, 0x2a, 0x8d, 0x42, + 0xc1, 0x7d, 0x58, 0xa9, 0x37, 0x0a, 0xc7, 0x48, 0xe6, 0x7a, 0xa3, 0xa0, 0x90, 0x42, 0xeb, 0x8d, + 0xc2, 0x65, 0x24, 0x4f, 0xbd, 0x51, 0x38, 0x4e, 0x8a, 0xa8, 0x37, 0x0a, 0x27, 0x08, 0x1b, 0xe5, + 0x46, 0xe1, 0x24, 0xc9, 0xa3, 0x36, 0x0a, 0x97, 0x93, 0x4f, 0xd5, 0x46, 0xe1, 0x14, 0x61, 0xac, + 0xdc, 0x28, 0x5c, 0x41, 0x1e, 0xd4, 0x46, 0x01, 0x91, 0x4f, 0xc5, 0x46, 0xe1, 0x4a, 0xf4, 0x18, + 0x98, 0x5a, 0xc6, 0x0e, 0x05, 0x11, 0x15, 0x40, 0x5e, 0xc6, 0x4e, 0xd8, 0x8c, 0xff, 0x8a, 0x0c, + 0x97, 0xb3, 0xa9, 0xdf, 0x92, 0x65, 0xee, 0xac, 0xe2, 0x2d, 0xad, 0x75, 0xa9, 0xfc, 0x80, 0x6b, + 0x42, 0x85, 0xf7, 0x65, 0x15, 0xc8, 0x76, 0x83, 0xce, 0x88, 0x3c, 0xc7, 0x5a, 0x9c, 0xde, 0x62, + 0x94, 0x1c, 0x2c, 0x46, 0x31, 0x8b, 0xec, 0x9f, 0xc3, 0x1a, 0xcd, 0xad, 0x1f, 0x67, 0x7a, 0xd6, + 0x8f, 0xdd, 0x66, 0xd2, 0xc5, 0x96, 0x6d, 0x1a, 0x5a, 0xa7, 0xce, 0x36, 0xee, 0xe9, 0xaa, 0x57, + 0x6f, 0xb2, 0xf2, 0x13, 0x5e, 0xcb, 0xa0, 0x56, 0xd9, 0xd3, 0xe2, 0x66, 0xb8, 0xbd, 0xd5, 0x8c, + 0x68, 0x24, 0x1f, 0xf7, 0x1b, 0x49, 0x83, 0x6b, 0x24, 0x77, 0x1f, 0x80, 0x76, 0xb2, 0xf6, 0x52, + 0x19, 0x6e, 0x6a, 0x11, 0xb8, 0xb5, 0x7a, 0xcb, 0xd5, 0x32, 0xfa, 0x8c, 0x04, 0x27, 0xcb, 0x46, + 0x3f, 0x0b, 0x3f, 0xac, 0x0b, 0x6f, 0x0c, 0x43, 0xb3, 0xce, 0x8b, 0xf4, 0xf6, 0xbe, 0xd5, 0xee, + 0x4f, 0x33, 0x42, 0xa2, 0x9f, 0xf4, 0x25, 0x5a, 0xe7, 0x24, 0x7a, 0xd7, 0xf0, 0xa4, 0x93, 0x09, + 0xb4, 0x3a, 0xd2, 0x0e, 0x28, 0x8b, 0xbe, 0x9e, 0x85, 0xc7, 0x50, 0xdf, 0x1b, 0xc6, 0x21, 0x6d, + 0x65, 0x45, 0xa3, 0xad, 0x62, 0xdb, 0xd1, 0x2c, 0x87, 0x3b, 0x0f, 0xdd, 0x33, 0x95, 0xca, 0xa4, + 0x30, 0x95, 0x92, 0x06, 0x4e, 0xa5, 0xd0, 0xdb, 0xc3, 0xe6, 0xc3, 0x39, 0x1e, 0xe3, 0x62, 0xff, + 0xfe, 0x3f, 0xae, 0x86, 0x51, 0x50, 0xfb, 0x76, 0xc5, 0x4f, 0x72, 0x50, 0x2f, 0x1d, 0xb8, 0x84, + 0x64, 0x88, 0x7f, 0x64, 0xb4, 0x76, 0x5e, 0x36, 0xfc, 0x8d, 0x37, 0x4a, 0x0a, 0xed, 0x54, 0x0d, + 0xf4, 0x4f, 0x4d, 0xc0, 0x14, 0x69, 0x0b, 0xab, 0xba, 0x71, 0x01, 0x3d, 0x2c, 0xc3, 0x4c, 0x15, + 0x5f, 0x2c, 0x6d, 0x6b, 0x9d, 0x0e, 0x36, 0xb6, 0x70, 0xd8, 0x6c, 0x3f, 0x05, 0x13, 0x5a, 0xb7, + 0x5b, 0x0d, 0xf6, 0x19, 0xbc, 0x57, 0xd6, 0xff, 0x7e, 0xad, 0x6f, 0x23, 0xcf, 0xc4, 0x34, 0x72, + 0xbf, 0xdc, 0xf9, 0x70, 0x99, 0x11, 0x33, 0xe4, 0x6b, 0x60, 0xba, 0xe5, 0x65, 0xf1, 0xcf, 0x4d, + 0x84, 0x93, 0xd0, 0xdf, 0x25, 0xea, 0x06, 0x84, 0x0a, 0x4f, 0xa6, 0x14, 0x78, 0xc4, 0x76, 0xc8, + 0x09, 0x38, 0xd6, 0xa8, 0xd5, 0x9a, 0x6b, 0xc5, 0xea, 0x7d, 0xc1, 0x79, 0xe5, 0x4d, 0xf4, 0xb2, + 0x2c, 0xcc, 0xd5, 0xcd, 0xce, 0x1e, 0x0e, 0x60, 0xaa, 0x70, 0x0e, 0x39, 0x61, 0x39, 0x65, 0xf6, + 0xc9, 0x49, 0x39, 0x09, 0x79, 0xcd, 0xb0, 0x2f, 0x62, 0xcf, 0x36, 0x64, 0x6f, 0x0c, 0xc6, 0xf7, + 0x85, 0xdb, 0xb1, 0xca, 0xc3, 0x78, 0xc7, 0x00, 0x49, 0xf2, 0x5c, 0x45, 0x00, 0x79, 0x06, 0x66, + 0x6c, 0xba, 0x59, 0xd8, 0x08, 0xed, 0x09, 0x73, 0x69, 0x84, 0x45, 0xba, 0x5b, 0x2d, 0x33, 0x16, + 0xc9, 0x1b, 0x7a, 0xd8, 0x6f, 0xfe, 0x1b, 0x1c, 0xc4, 0xc5, 0x83, 0x30, 0x96, 0x0c, 0xe4, 0x57, + 0x8c, 0x7a, 0x86, 0x77, 0x0a, 0x8e, 0xb3, 0x56, 0xdb, 0x2c, 0xad, 0x14, 0x57, 0x57, 0xcb, 0xd5, + 0xe5, 0x72, 0xb3, 0xb2, 0x48, 0xb7, 0x2a, 0x82, 0x94, 0x62, 0xa3, 0x51, 0x5e, 0x5b, 0x6f, 0xd4, + 0x9b, 0xe5, 0x67, 0x94, 0xca, 0xe5, 0x45, 0xe2, 0x12, 0x47, 0xce, 0xb4, 0x78, 0xce, 0x8b, 0xc5, + 0x6a, 0xfd, 0x5c, 0x59, 0x2d, 0x6c, 0x9f, 0x29, 0xc2, 0x74, 0xa8, 0x9f, 0x77, 0xb9, 0x5b, 0xc4, + 0x9b, 0xda, 0x6e, 0x87, 0xd9, 0x6a, 0x85, 0x23, 0x2e, 0x77, 0x44, 0x36, 0x35, 0xa3, 0x73, 0xa9, + 0x90, 0x51, 0x0a, 0x30, 0x13, 0xee, 0xd2, 0x0b, 0x12, 0x7a, 0xcb, 0x55, 0x30, 0x75, 0xce, 0xb4, + 0x2e, 0x10, 0x3f, 0x2e, 0xf4, 0x6e, 0x1a, 0xd7, 0xc4, 0x3b, 0x21, 0x1a, 0x1a, 0xd8, 0x5f, 0x21, + 0xee, 0x2d, 0xe0, 0x51, 0x9b, 0x1f, 0x78, 0x0a, 0xf4, 0x1a, 0x98, 0xbe, 0xe8, 0xe5, 0x0e, 0x5a, + 0x7a, 0x28, 0x09, 0xfd, 0x77, 0xb1, 0xfd, 0xff, 0xc1, 0x45, 0xa6, 0xbf, 0x3f, 0xfd, 0x66, 0x09, + 0xf2, 0xcb, 0xd8, 0x29, 0x76, 0x3a, 0x61, 0xb9, 0xbd, 0x48, 0xf8, 0x64, 0x0f, 0x57, 0x89, 0x62, + 0xa7, 0x13, 0xdd, 0xa8, 0x42, 0x02, 0xf2, 0x3c, 0xd0, 0xb9, 0x34, 0x41, 0xbf, 0xb9, 0x01, 0x05, + 0xa6, 0x2f, 0xb1, 0x0f, 0xc8, 0xfe, 0x1e, 0xf7, 0x23, 0x21, 0x2b, 0xe7, 0x89, 0x41, 0x4c, 0x9b, + 0x4c, 0xfc, 0x5e, 0xb9, 0x97, 0x4f, 0xb9, 0x17, 0x26, 0x76, 0x6d, 0x5c, 0xd2, 0x6c, 0x4c, 0x78, + 0xeb, 0xad, 0x69, 0xed, 0xfc, 0xfd, 0xb8, 0xe5, 0xcc, 0x57, 0x76, 0x5c, 0x83, 0x7a, 0x83, 0x66, + 0xf4, 0xc3, 0xc4, 0xb0, 0x77, 0xd5, 0xa3, 0xe0, 0x4e, 0x4a, 0x2e, 0xea, 0xce, 0x76, 0x69, 0x5b, + 0x73, 0xd8, 0xda, 0xb6, 0xff, 0x8e, 0x9e, 0x3f, 0x04, 0x9c, 0xb1, 0x7b, 0xc1, 0x91, 0x07, 0x04, + 0x13, 0x83, 0x38, 0x82, 0x0d, 0xdc, 0x61, 0x40, 0xfc, 0x47, 0x09, 0xb2, 0xb5, 0x2e, 0x36, 0x84, + 0x4f, 0xc3, 0xf8, 0xb2, 0x95, 0x7a, 0x64, 0xfb, 0xb0, 0xb8, 0x77, 0x98, 0x5f, 0x69, 0xb7, 0xe4, + 0x08, 0xc9, 0xde, 0x0c, 0x59, 0xdd, 0xd8, 0x34, 0x99, 0x61, 0x7a, 0x65, 0xc4, 0x26, 0x50, 0xc5, + 0xd8, 0x34, 0x55, 0x92, 0x51, 0xd4, 0x31, 0x2c, 0xae, 0xec, 0xf4, 0xc5, 0xfd, 0x8d, 0x49, 0xc8, + 0x53, 0x75, 0x46, 0x2f, 0x94, 0x41, 0x2e, 0xb6, 0xdb, 0x11, 0x82, 0x97, 0xf6, 0x09, 0xde, 0x24, + 0xbf, 0xf9, 0x98, 0xf8, 0xef, 0x7c, 0x30, 0x13, 0xc1, 0xbe, 0x9d, 0x35, 0xa9, 0x62, 0xbb, 0x1d, + 0xed, 0x83, 0xea, 0x17, 0x28, 0xf1, 0x05, 0x86, 0x5b, 0xb8, 0x2c, 0xd6, 0xc2, 0x13, 0x0f, 0x04, + 0x91, 0xfc, 0xa5, 0x0f, 0xd1, 0x3f, 0x4b, 0x30, 0xb1, 0xaa, 0xdb, 0x8e, 0x8b, 0x4d, 0x51, 0x04, + 0x9b, 0xab, 0x60, 0xca, 0x13, 0x8d, 0xdb, 0xe5, 0xb9, 0xfd, 0x79, 0x90, 0x80, 0x5e, 0x1d, 0x46, + 0xe7, 0x1e, 0x1e, 0x9d, 0x27, 0xc7, 0xd7, 0x9e, 0x71, 0x11, 0x7d, 0xca, 0x20, 0x28, 0x56, 0xea, + 0x2d, 0xf6, 0x77, 0x7c, 0x81, 0xaf, 0x71, 0x02, 0xbf, 0x6d, 0x98, 0x22, 0xd3, 0x17, 0xfa, 0x67, + 0x25, 0x00, 0xb7, 0x6c, 0x76, 0x94, 0xeb, 0x71, 0xdc, 0x01, 0xed, 0x18, 0xe9, 0xbe, 0x2c, 0x2c, + 0xdd, 0x35, 0x5e, 0xba, 0x3f, 0x3e, 0xb8, 0xaa, 0x71, 0x47, 0xb6, 0x94, 0x02, 0xc8, 0xba, 0x2f, + 0x5a, 0xf7, 0x11, 0xbd, 0xd9, 0x17, 0xea, 0x3a, 0x27, 0xd4, 0x3b, 0x86, 0x2c, 0x29, 0x7d, 0xb9, + 0xfe, 0x95, 0x04, 0x13, 0x75, 0xec, 0xb8, 0xdd, 0x24, 0x3a, 0x2b, 0xd2, 0xc3, 0x87, 0xda, 0xb6, + 0x24, 0xd8, 0xb6, 0xbf, 0x9d, 0x11, 0x0d, 0xf4, 0x12, 0x48, 0x86, 0xf1, 0x14, 0xb1, 0x78, 0xf0, + 0x88, 0x50, 0xa0, 0x97, 0x41, 0xd4, 0xd2, 0x97, 0xee, 0x1b, 0x25, 0x7f, 0x63, 0x9e, 0x3f, 0x69, + 0x11, 0x36, 0x8b, 0x33, 0xfb, 0xcd, 0x62, 0xf1, 0x93, 0x16, 0xe1, 0x3a, 0x46, 0xef, 0x4a, 0x27, + 0x36, 0x36, 0x46, 0xb0, 0x61, 0x3c, 0x8c, 0xbc, 0x9e, 0x2d, 0x43, 0x9e, 0xad, 0x2c, 0xdf, 0x15, + 0xbf, 0xb2, 0x3c, 0x78, 0x6a, 0xf1, 0xae, 0x21, 0x4c, 0xb9, 0xb8, 0xe5, 0x5e, 0x9f, 0x0d, 0x29, + 0xc4, 0xc6, 0x4d, 0x90, 0x23, 0x91, 0x28, 0xd9, 0x38, 0x17, 0xec, 0xf5, 0x7b, 0x24, 0xca, 0xee, + 0x57, 0x95, 0x66, 0x4a, 0x8c, 0xc2, 0x08, 0x56, 0x88, 0x87, 0x41, 0xe1, 0x1d, 0x0a, 0xc0, 0xfa, + 0xee, 0xf9, 0x8e, 0x6e, 0x6f, 0xeb, 0xc6, 0x16, 0xfa, 0x7e, 0x06, 0x66, 0xd8, 0x2b, 0x0d, 0xa8, + 0x18, 0x6b, 0xfe, 0x45, 0x1a, 0x05, 0x05, 0x90, 0x77, 0x2d, 0x9d, 0x2d, 0x03, 0xb8, 0x8f, 0xca, + 0x9d, 0xbe, 0x23, 0x4f, 0xb6, 0xe7, 0x28, 0xbd, 0x2b, 0x86, 0x80, 0x83, 0xf9, 0x50, 0xe9, 0x81, + 0x43, 0x4f, 0x38, 0x6a, 0x66, 0x8e, 0x8f, 0x9a, 0xc9, 0x9d, 0xaf, 0xcb, 0xf7, 0x9c, 0xaf, 0x73, + 0x71, 0xb4, 0xf5, 0x67, 0x62, 0xe2, 0x5c, 0x2a, 0xab, 0xe4, 0xd9, 0xfd, 0xe3, 0x7e, 0x53, 0x37, + 0xc8, 0x66, 0x01, 0x73, 0x1d, 0x0d, 0x12, 0xd0, 0xfb, 0x83, 0x89, 0x8c, 0x29, 0x68, 0x05, 0x27, + 0x10, 0x03, 0x57, 0x76, 0xb6, 0xb7, 0xec, 0x0f, 0x09, 0x47, 0xc9, 0x0a, 0x09, 0x2c, 0x76, 0x4a, + 0xc2, 0x38, 0x90, 0x7c, 0x0e, 0x42, 0xbb, 0x7d, 0x71, 0xdd, 0xe9, 0x20, 0xfa, 0xc9, 0x14, 0x73, + 0x67, 0x88, 0xc5, 0x17, 0x05, 0xe6, 0xbc, 0x53, 0x87, 0xb5, 0x85, 0x7b, 0xca, 0xa5, 0x46, 0x01, + 0xef, 0x3f, 0x89, 0x48, 0xce, 0x1c, 0xd2, 0xf3, 0x85, 0xc1, 0x02, 0x0b, 0xfa, 0x9f, 0x12, 0xe4, + 0x99, 0xed, 0x70, 0xd7, 0x01, 0x21, 0x44, 0x2f, 0x1f, 0x06, 0x92, 0xd8, 0xc3, 0xdf, 0x9f, 0x48, + 0x0a, 0xc0, 0x08, 0xac, 0x85, 0xfb, 0x52, 0x03, 0x00, 0xfd, 0xab, 0x04, 0x59, 0xd7, 0xa6, 0x11, + 0x3b, 0x5a, 0xfb, 0x71, 0x61, 0xa7, 0xd6, 0x90, 0x00, 0x5c, 0xf2, 0x11, 0xfa, 0xbd, 0x00, 0x53, + 0x5d, 0x9a, 0xd1, 0x3f, 0xd8, 0x7d, 0x9d, 0x40, 0xcf, 0x82, 0xd5, 0xe0, 0x37, 0xf4, 0x4e, 0x21, + 0xc7, 0xd8, 0x78, 0x7e, 0x92, 0xc1, 0x51, 0x1e, 0xc5, 0x29, 0xdc, 0x4d, 0xf4, 0x5d, 0x09, 0x40, + 0xc5, 0xb6, 0xd9, 0xd9, 0xc3, 0x1b, 0x96, 0x8e, 0xae, 0x0c, 0x00, 0x60, 0xcd, 0x3e, 0x13, 0x34, + 0xfb, 0x4f, 0x85, 0x05, 0xbf, 0xcc, 0x0b, 0xfe, 0x89, 0xd1, 0x9a, 0xe7, 0x11, 0x8f, 0x10, 0xff, + 0xd3, 0x61, 0x82, 0xc9, 0x91, 0x19, 0x88, 0x62, 0xc2, 0xf7, 0x7e, 0x42, 0xef, 0xf1, 0x45, 0x7f, + 0x0f, 0x27, 0xfa, 0xa7, 0x24, 0xe6, 0x28, 0x19, 0x00, 0xa5, 0x21, 0x00, 0x38, 0x0a, 0xd3, 0x1e, + 0x00, 0x1b, 0x6a, 0xa5, 0x80, 0xd1, 0xdb, 0x64, 0xb2, 0x97, 0x4e, 0x47, 0xaa, 0x83, 0xf7, 0x34, + 0x5f, 0x15, 0x9e, 0xb9, 0x87, 0xe4, 0xe1, 0x97, 0x9f, 0x12, 0x40, 0x7f, 0x2a, 0x34, 0x55, 0x17, + 0x60, 0xe8, 0xd1, 0xd2, 0x5f, 0x9d, 0x29, 0xc3, 0x2c, 0x67, 0x62, 0x28, 0xa7, 0xe0, 0x38, 0x97, + 0x40, 0xc7, 0xbb, 0x76, 0xe1, 0x88, 0x82, 0xe0, 0x24, 0xf7, 0x85, 0xbd, 0xe0, 0x76, 0x21, 0x83, + 0xfe, 0xfc, 0x33, 0x19, 0x7f, 0xf1, 0xe6, 0x5d, 0x59, 0xb6, 0x6c, 0xf6, 0x51, 0x3e, 0x96, 0x58, + 0xcb, 0x34, 0x1c, 0xfc, 0x40, 0xc8, 0x97, 0xc1, 0x4f, 0x88, 0xb5, 0x1a, 0x4e, 0xc1, 0x84, 0x63, + 0x85, 0xfd, 0x1b, 0xbc, 0xd7, 0xb0, 0x62, 0xe5, 0x78, 0xc5, 0xaa, 0xc2, 0x19, 0xdd, 0x68, 0x75, + 0x76, 0xdb, 0x58, 0xc5, 0x1d, 0xcd, 0x95, 0xa1, 0x5d, 0xb4, 0x17, 0x71, 0x17, 0x1b, 0x6d, 0x6c, + 0x38, 0x94, 0x4f, 0xef, 0x2c, 0x93, 0x40, 0x4e, 0x5e, 0x19, 0xef, 0xe4, 0x95, 0xf1, 0x71, 0xfd, + 0xd6, 0x63, 0x63, 0x16, 0xef, 0x6e, 0x03, 0xa0, 0x75, 0x3b, 0xab, 0xe3, 0x8b, 0x4c, 0x0d, 0xaf, + 0xe8, 0x59, 0xc2, 0xab, 0xf9, 0x19, 0xd4, 0x50, 0x66, 0xf4, 0x45, 0x5f, 0xfd, 0xee, 0xe6, 0xd4, + 0xef, 0x26, 0x41, 0x16, 0x92, 0x69, 0x5d, 0x77, 0x08, 0xad, 0x9b, 0x85, 0xa9, 0x60, 0x67, 0x57, + 0x56, 0xae, 0x80, 0x13, 0x9e, 0xaf, 0x68, 0xb5, 0x5c, 0x5e, 0xac, 0x37, 0x37, 0xd6, 0x97, 0xd5, + 0xe2, 0x62, 0xb9, 0x00, 0xae, 0x7e, 0x52, 0xbd, 0xf4, 0x5d, 0x3c, 0xb3, 0xe8, 0x2f, 0x24, 0xc8, + 0x91, 0x83, 0x78, 0xe8, 0xa7, 0x47, 0xa4, 0x39, 0x36, 0xe7, 0x19, 0xe3, 0x8f, 0xbb, 0xe2, 0x31, + 0xbe, 0x99, 0x30, 0x09, 0x57, 0x07, 0x8a, 0xf1, 0x1d, 0x43, 0x28, 0xfd, 0x69, 0x8d, 0xdb, 0x24, + 0xeb, 0xdb, 0xe6, 0xc5, 0x1f, 0xe6, 0x26, 0xe9, 0xd6, 0xff, 0x90, 0x9b, 0x64, 0x1f, 0x16, 0xc6, + 0xde, 0x24, 0xfb, 0xb4, 0xbb, 0x98, 0x66, 0x8a, 0x9e, 0x95, 0xf3, 0xe7, 0x7f, 0xcf, 0x91, 0x0e, + 0xb4, 0x91, 0x55, 0x84, 0x59, 0xdd, 0x70, 0xb0, 0x65, 0x68, 0x9d, 0xa5, 0x8e, 0xb6, 0xe5, 0xd9, + 0xa7, 0xbd, 0xbb, 0x17, 0x95, 0x50, 0x1e, 0x95, 0xff, 0x43, 0x39, 0x0d, 0xe0, 0xe0, 0x9d, 0x6e, + 0x47, 0x73, 0x02, 0xd5, 0x0b, 0xa5, 0x84, 0xb5, 0x2f, 0xcb, 0x6b, 0xdf, 0x2d, 0x70, 0x19, 0x05, + 0xad, 0x71, 0xa9, 0x8b, 0x37, 0x0c, 0xfd, 0x67, 0x76, 0x49, 0xe8, 0x49, 0xaa, 0xa3, 0xfd, 0x3e, + 0x71, 0xdb, 0x39, 0xf9, 0x9e, 0xed, 0x9c, 0x7f, 0x14, 0x0e, 0x69, 0xe1, 0xb5, 0xfa, 0x01, 0x21, + 0x2d, 0xfc, 0x96, 0x26, 0xf7, 0xb4, 0x34, 0x7f, 0x91, 0x25, 0x2b, 0xb0, 0xc8, 0x12, 0x46, 0x25, + 0x27, 0xb8, 0x40, 0xf9, 0x2a, 0xa1, 0x98, 0x19, 0x71, 0xd5, 0x18, 0xc3, 0x02, 0xb8, 0x0c, 0x73, + 0xb4, 0xe8, 0x05, 0xd3, 0xbc, 0xb0, 0xa3, 0x59, 0x17, 0x90, 0x75, 0x20, 0x55, 0x8c, 0xdd, 0x4b, + 0x8a, 0xdc, 0x20, 0xfd, 0xa4, 0xf0, 0x9c, 0x81, 0x13, 0x97, 0xc7, 0xf3, 0x78, 0x36, 0x93, 0x5e, + 0x2f, 0x34, 0x85, 0x10, 0x61, 0x30, 0x7d, 0x5c, 0xff, 0xd8, 0xc7, 0xd5, 0xeb, 0xe8, 0xc3, 0xeb, + 0xf0, 0xa3, 0xc4, 0x15, 0x7d, 0x69, 0x38, 0xec, 0x3c, 0xbe, 0x86, 0xc0, 0xae, 0x00, 0xf2, 0x05, + 0xdf, 0xf5, 0xc7, 0x7d, 0x0c, 0x57, 0x28, 0x9b, 0x1e, 0x9a, 0x11, 0x2c, 0x8f, 0x05, 0xcd, 0xe3, + 0x3c, 0x0b, 0xb5, 0x6e, 0xaa, 0x98, 0x7e, 0x41, 0x78, 0x7f, 0xab, 0xaf, 0x80, 0x28, 0x77, 0xe3, + 0x69, 0x95, 0x62, 0x9b, 0x63, 0xe2, 0x6c, 0xa6, 0x8f, 0xe6, 0x43, 0x39, 0x98, 0xf2, 0x82, 0x8e, + 0x90, 0x3b, 0x71, 0x7c, 0x0c, 0x4f, 0x42, 0xde, 0x36, 0x77, 0xad, 0x16, 0x66, 0x3b, 0x8e, 0xec, + 0x6d, 0x88, 0xdd, 0xb1, 0x81, 0xe3, 0xf9, 0x3e, 0x93, 0x21, 0x9b, 0xd8, 0x64, 0x88, 0x36, 0x48, + 0xe3, 0x06, 0xf8, 0xe7, 0x0b, 0x07, 0x32, 0xe7, 0x30, 0xab, 0x63, 0xe7, 0xd1, 0x38, 0xc6, 0xff, + 0xa1, 0xd0, 0xde, 0xcb, 0x80, 0x9a, 0x24, 0x53, 0xb9, 0xda, 0x10, 0x86, 0xea, 0x95, 0x70, 0xb9, + 0x97, 0x83, 0x59, 0xa8, 0xc4, 0x22, 0xdd, 0x50, 0x57, 0x0b, 0x32, 0x7a, 0x76, 0x16, 0x0a, 0x94, + 0xb5, 0x9a, 0x6f, 0xac, 0xa1, 0x17, 0x65, 0x0e, 0xdb, 0x22, 0x8d, 0x9e, 0x62, 0x7e, 0x5a, 0x12, + 0x0d, 0x96, 0xca, 0x09, 0x3e, 0xa8, 0x5d, 0x84, 0x26, 0x0d, 0xd1, 0xcc, 0x62, 0x94, 0x0f, 0xfd, + 0x76, 0x46, 0x24, 0xf6, 0xaa, 0x18, 0x8b, 0xe9, 0xf7, 0x4a, 0x9f, 0xcb, 0x7a, 0xb1, 0xa3, 0x96, + 0x2c, 0x73, 0x67, 0xc3, 0xea, 0xa0, 0xff, 0x53, 0x28, 0xb4, 0x75, 0x84, 0xf9, 0x2f, 0x45, 0x9b, + 0xff, 0x64, 0xc9, 0xb8, 0x13, 0xec, 0x55, 0x75, 0x86, 0x18, 0xbe, 0x95, 0xeb, 0x61, 0x4e, 0x6b, + 0xb7, 0xd7, 0xb5, 0x2d, 0x5c, 0x72, 0xe7, 0xd5, 0x86, 0xc3, 0xe2, 0xca, 0xf4, 0xa4, 0xc6, 0x76, + 0x45, 0xe2, 0xeb, 0xa0, 0x1c, 0x48, 0x4c, 0x3e, 0x63, 0x19, 0xde, 0xdc, 0x21, 0xa1, 0xb5, 0xad, + 0x05, 0x51, 0xae, 0xd8, 0x9b, 0xa0, 0x67, 0x93, 0x00, 0xdf, 0xe9, 0x6b, 0xd6, 0xef, 0x4b, 0x30, + 0xe1, 0xca, 0xbb, 0xd8, 0x6e, 0xa3, 0xc7, 0x72, 0xc1, 0xe0, 0x22, 0x7d, 0xcb, 0x7e, 0x51, 0xd8, + 0xa9, 0xcf, 0xab, 0x21, 0xa5, 0x1f, 0x81, 0x49, 0x20, 0x44, 0x89, 0x13, 0xa2, 0x98, 0xef, 0x5e, + 0x6c, 0x11, 0xe9, 0x8b, 0xef, 0xe3, 0x12, 0xcc, 0x7a, 0xf3, 0x88, 0x25, 0xec, 0xb4, 0xb6, 0xd1, + 0x6d, 0xa2, 0x0b, 0x4d, 0xac, 0xa5, 0xf9, 0x7b, 0xb2, 0x1d, 0xf4, 0xbd, 0x4c, 0x42, 0x95, 0xe7, + 0x4a, 0x8e, 0x58, 0xa5, 0x4b, 0xa4, 0x8b, 0x71, 0x04, 0xd3, 0x17, 0xe6, 0x17, 0x25, 0x80, 0x86, + 0xe9, 0xcf, 0x75, 0x0f, 0x20, 0xc9, 0x17, 0x08, 0x6f, 0xd7, 0xb2, 0x8a, 0x07, 0xc5, 0x26, 0xef, + 0x39, 0x04, 0x5d, 0x93, 0x06, 0x95, 0x34, 0x96, 0xb6, 0x3e, 0xb5, 0xb8, 0xdb, 0xed, 0xe8, 0x2d, + 0xcd, 0xe9, 0xf5, 0xa7, 0x8b, 0x16, 0x2f, 0xb9, 0x30, 0x32, 0x91, 0x51, 0xe8, 0x97, 0x11, 0x21, + 0x4b, 0x1a, 0xa4, 0x44, 0xf2, 0x82, 0x94, 0x08, 0xfa, 0xc8, 0x0c, 0x20, 0x3e, 0x06, 0xf5, 0x94, + 0xe1, 0x68, 0xad, 0x8b, 0x8d, 0x05, 0x0b, 0x6b, 0xed, 0x96, 0xb5, 0xbb, 0x73, 0xde, 0x0e, 0x3b, + 0x83, 0xc6, 0xeb, 0x68, 0x68, 0xe9, 0x58, 0xe2, 0x96, 0x8e, 0xd1, 0x2f, 0xc8, 0xa2, 0x21, 0x73, + 0x42, 0x1b, 0x1c, 0x21, 0x1e, 0x86, 0x18, 0xea, 0x12, 0xb9, 0x30, 0xf5, 0xac, 0x12, 0x67, 0x93, + 0xac, 0x12, 0xbf, 0x41, 0x28, 0x00, 0x8f, 0x50, 0xbd, 0xc6, 0xe2, 0x89, 0x36, 0x57, 0xc7, 0x4e, + 0x04, 0xbc, 0xd7, 0xc1, 0xec, 0xf9, 0xe0, 0x8b, 0x0f, 0x31, 0x9f, 0xd8, 0xc7, 0x3f, 0xf4, 0x8d, + 0x49, 0x57, 0x60, 0x78, 0x16, 0x22, 0xd0, 0xf5, 0x11, 0x94, 0x44, 0x9c, 0xd0, 0x12, 0x2d, 0xa7, + 0xc4, 0x96, 0x9f, 0x3e, 0x0a, 0x1f, 0x92, 0x60, 0x9a, 0x5c, 0x83, 0xb9, 0x70, 0x89, 0x9c, 0x6a, + 0x14, 0x34, 0x4a, 0x1e, 0x0a, 0x8b, 0x59, 0x81, 0x6c, 0x47, 0x37, 0x2e, 0x78, 0xde, 0x83, 0xee, + 0x73, 0x70, 0xa9, 0x9a, 0xd4, 0xe7, 0x52, 0x35, 0x7f, 0x9f, 0xc2, 0x2f, 0xf7, 0x40, 0xb7, 0xfc, + 0x0e, 0x24, 0x97, 0xbe, 0x18, 0xff, 0x3e, 0x0b, 0xf9, 0x3a, 0xd6, 0xac, 0xd6, 0x36, 0x7a, 0x97, + 0xd4, 0x77, 0xaa, 0x30, 0xc9, 0x4f, 0x15, 0x96, 0x60, 0x62, 0x53, 0xef, 0x38, 0xd8, 0xa2, 0x1e, + 0xd5, 0xe1, 0xae, 0x9d, 0x36, 0xf1, 0x85, 0x8e, 0xd9, 0xba, 0x30, 0xcf, 0x4c, 0xf7, 0x79, 0x2f, + 0x08, 0xe7, 0xfc, 0x12, 0xf9, 0x49, 0xf5, 0x7e, 0x76, 0x0d, 0x42, 0xdb, 0xb4, 0x9c, 0xa8, 0xfb, + 0x15, 0x22, 0xa8, 0xd4, 0x4d, 0xcb, 0x51, 0xe9, 0x8f, 0x2e, 0xcc, 0x9b, 0xbb, 0x9d, 0x4e, 0x03, + 0x3f, 0xe0, 0x78, 0xd3, 0x36, 0xef, 0xdd, 0x35, 0x16, 0xcd, 0xcd, 0x4d, 0x1b, 0xd3, 0x45, 0x83, + 0x9c, 0xca, 0xde, 0x94, 0xe3, 0x90, 0xeb, 0xe8, 0x3b, 0x3a, 0x9d, 0x68, 0xe4, 0x54, 0xfa, 0xa2, + 0xdc, 0x08, 0x85, 0x60, 0x8e, 0x43, 0x19, 0x3d, 0x95, 0x27, 0x4d, 0x73, 0x5f, 0xba, 0xab, 0x33, + 0x17, 0xf0, 0x25, 0xfb, 0xd4, 0x04, 0xf9, 0x4e, 0x9e, 0xf9, 0xe3, 0x2b, 0x22, 0xfb, 0x1d, 0x54, + 0xe2, 0xd1, 0x33, 0x58, 0x0b, 0xb7, 0x4c, 0xab, 0xed, 0xc9, 0x26, 0x7a, 0x82, 0xc1, 0xf2, 0x25, + 0xdb, 0xa5, 0xe8, 0x5b, 0x78, 0xfa, 0x9a, 0xf6, 0xf6, 0xbc, 0xdb, 0x6d, 0xba, 0x45, 0x9f, 0xd3, + 0x9d, 0xed, 0x35, 0xec, 0x68, 0xe8, 0xef, 0xe5, 0xbe, 0x1a, 0x37, 0xfd, 0xff, 0x69, 0xdc, 0x00, + 0x8d, 0xa3, 0xe1, 0x95, 0x9c, 0x5d, 0xcb, 0x70, 0xe5, 0xc8, 0xbc, 0x52, 0x43, 0x29, 0xca, 0x1d, + 0x70, 0x45, 0xf0, 0xe6, 0x2d, 0x95, 0x2e, 0xb2, 0x69, 0xeb, 0x14, 0xc9, 0x1e, 0x9d, 0x41, 0x59, + 0x87, 0x6b, 0xe9, 0xc7, 0x95, 0xc6, 0xda, 0xea, 0x8a, 0xbe, 0xb5, 0xdd, 0xd1, 0xb7, 0xb6, 0x1d, + 0xbb, 0x62, 0xd8, 0x0e, 0xd6, 0xda, 0xb5, 0x4d, 0x95, 0xde, 0x8c, 0x02, 0x84, 0x8e, 0x48, 0x56, + 0xde, 0xe3, 0x5a, 0x6c, 0x74, 0x0b, 0x6b, 0x4a, 0x44, 0x4b, 0x79, 0x8a, 0xdb, 0x52, 0xec, 0xdd, + 0x8e, 0x8f, 0xe9, 0x55, 0x3d, 0x98, 0x06, 0xaa, 0xbe, 0xdb, 0x21, 0xcd, 0x85, 0x64, 0x4e, 0x3a, + 0xce, 0xc5, 0x70, 0x92, 0x7e, 0xb3, 0xf9, 0x7f, 0xf2, 0x90, 0x5b, 0xb6, 0xb4, 0xee, 0x36, 0x7a, + 0x76, 0xa8, 0x7f, 0x1e, 0x55, 0x9b, 0xf0, 0xb5, 0x53, 0x1a, 0xa4, 0x9d, 0xf2, 0x00, 0xed, 0xcc, + 0x86, 0xb4, 0x33, 0x7a, 0x51, 0xf9, 0x0c, 0xcc, 0xb4, 0xcc, 0x4e, 0x07, 0xb7, 0x5c, 0x79, 0x54, + 0xda, 0x64, 0x35, 0x67, 0x4a, 0xe5, 0xd2, 0x48, 0xa0, 0x62, 0xec, 0xd4, 0xe9, 0x1a, 0x3a, 0x55, + 0xfa, 0x20, 0x01, 0xbd, 0x48, 0x82, 0x6c, 0xb9, 0xbd, 0x85, 0xb9, 0x75, 0xf6, 0x4c, 0x68, 0x9d, + 0xfd, 0x24, 0xe4, 0x1d, 0xcd, 0xda, 0xc2, 0x8e, 0xb7, 0x4e, 0x40, 0xdf, 0xfc, 0xf8, 0xc9, 0x72, + 0x28, 0x7e, 0xf2, 0x8f, 0x43, 0xd6, 0x95, 0x19, 0x73, 0x32, 0xbf, 0xb6, 0x1f, 0xfc, 0x44, 0xf6, + 0xf3, 0x6e, 0x89, 0xf3, 0x6e, 0xad, 0x55, 0xf2, 0x43, 0x2f, 0xd6, 0xb9, 0x7d, 0x58, 0x93, 0x4b, + 0x1e, 0x5b, 0xa6, 0x51, 0xd9, 0xd1, 0xb6, 0x30, 0xab, 0x66, 0x90, 0xe0, 0x7d, 0x2d, 0xef, 0x98, + 0xf7, 0xeb, 0x2c, 0x94, 0x71, 0x90, 0xe0, 0x56, 0x61, 0x5b, 0x6f, 0xb7, 0xb1, 0xc1, 0x5a, 0x36, + 0x7b, 0x3b, 0x73, 0x1a, 0xb2, 0x2e, 0x0f, 0xae, 0xfe, 0xb8, 0xc6, 0x42, 0xe1, 0x88, 0x32, 0xe3, + 0x36, 0x2b, 0xda, 0x78, 0x0b, 0x19, 0x7e, 0x4d, 0x55, 0xc4, 0x6d, 0x87, 0x56, 0xae, 0x7f, 0xe3, + 0x7a, 0x02, 0xe4, 0x0c, 0xb3, 0x8d, 0x07, 0x0e, 0x42, 0x34, 0x97, 0xf2, 0x64, 0xc8, 0xe1, 0xb6, + 0xdb, 0x2b, 0xc8, 0x24, 0xfb, 0xe9, 0x78, 0x59, 0xaa, 0x34, 0x73, 0x32, 0xdf, 0xa0, 0x7e, 0xdc, + 0xa6, 0xdf, 0x00, 0x7f, 0x79, 0x02, 0x8e, 0xd2, 0x3e, 0xa0, 0xbe, 0x7b, 0xde, 0x25, 0x75, 0x1e, + 0xa3, 0x47, 0xfa, 0x0f, 0x5c, 0x47, 0x79, 0x65, 0x3f, 0x0e, 0x39, 0x7b, 0xf7, 0xbc, 0x6f, 0x84, + 0xd2, 0x97, 0x70, 0xd3, 0x95, 0x46, 0x32, 0x9c, 0xc9, 0xc3, 0x0e, 0x67, 0xdc, 0xd0, 0x24, 0x7b, + 0x8d, 0x3f, 0x18, 0xc8, 0xe8, 0xf1, 0x08, 0x6f, 0x20, 0xeb, 0x37, 0x0c, 0x9d, 0x82, 0x09, 0x6d, + 0xd3, 0xc1, 0x56, 0x60, 0x26, 0xb2, 0x57, 0x77, 0xa8, 0x3c, 0x8f, 0x37, 0x4d, 0xcb, 0x15, 0xcb, + 0x14, 0x1d, 0x2a, 0xbd, 0xf7, 0x50, 0xcb, 0x05, 0x6e, 0x87, 0xec, 0x26, 0x38, 0x66, 0x98, 0x8b, + 0xb8, 0xcb, 0xe4, 0x4c, 0x51, 0x9c, 0x25, 0x2d, 0x60, 0xff, 0x87, 0x7d, 0x5d, 0xc9, 0xdc, 0xfe, + 0xae, 0x04, 0x7d, 0x2a, 0xe9, 0x9c, 0xb9, 0x07, 0xe8, 0x91, 0x59, 0x68, 0xca, 0xd3, 0x60, 0xa6, + 0xcd, 0x5c, 0xb4, 0x5a, 0xba, 0xdf, 0x4a, 0x22, 0xff, 0xe3, 0x32, 0x07, 0x8a, 0x94, 0x0d, 0x2b, + 0xd2, 0x32, 0x4c, 0x92, 0x83, 0xcc, 0xae, 0x26, 0xe5, 0x7a, 0x5c, 0xe2, 0xc9, 0xb4, 0xce, 0xaf, + 0x54, 0x48, 0x6c, 0xf3, 0x25, 0xf6, 0x8b, 0xea, 0xff, 0x9c, 0x6c, 0xf6, 0x1d, 0x2f, 0xa1, 0xf4, + 0x9b, 0xe3, 0xef, 0xe4, 0xe1, 0x8a, 0x92, 0x65, 0xda, 0x36, 0x39, 0x03, 0xd3, 0xdb, 0x30, 0x5f, + 0x27, 0x71, 0x37, 0x29, 0x3c, 0xaa, 0x9b, 0x5f, 0xbf, 0x06, 0x35, 0xbe, 0xa6, 0xf1, 0x55, 0xe1, + 0x10, 0x30, 0xfe, 0xfe, 0x43, 0x84, 0xd0, 0x7f, 0x38, 0x1a, 0xc9, 0xdb, 0x33, 0x22, 0x51, 0x69, + 0x12, 0xca, 0x2a, 0xfd, 0xe6, 0xf2, 0x05, 0x09, 0xae, 0xec, 0xe5, 0x66, 0xc3, 0xb0, 0xfd, 0x06, + 0x73, 0xf5, 0x80, 0xf6, 0xc2, 0x47, 0x31, 0x89, 0xbd, 0xc3, 0x30, 0xa2, 0xee, 0xa1, 0xd2, 0x22, + 0x16, 0x4b, 0x82, 0x13, 0x35, 0x71, 0x77, 0x18, 0x26, 0x26, 0x9f, 0xbe, 0x70, 0x3f, 0x9d, 0x85, + 0xa3, 0xcb, 0x96, 0xb9, 0xdb, 0xb5, 0x83, 0x1e, 0xe8, 0x6f, 0xfa, 0x6f, 0xb8, 0xe6, 0x45, 0x4c, + 0x83, 0x6b, 0x60, 0xda, 0x62, 0xd6, 0x5c, 0xb0, 0xfd, 0x1a, 0x4e, 0x0a, 0xf7, 0x5e, 0xf2, 0x41, + 0x7a, 0xaf, 0xa0, 0x9f, 0xc9, 0x72, 0xfd, 0x4c, 0x6f, 0xcf, 0x91, 0xeb, 0xd3, 0x73, 0xfc, 0xb5, + 0x94, 0x70, 0x50, 0xed, 0x11, 0x51, 0x44, 0x7f, 0x51, 0x82, 0xfc, 0x16, 0xc9, 0xc8, 0xba, 0x8b, + 0xc7, 0x8b, 0xd5, 0x8c, 0x10, 0x57, 0xd9, 0xaf, 0x81, 0x5c, 0xe5, 0xb0, 0x0e, 0x27, 0x1a, 0xe0, + 0xe2, 0xb9, 0x4d, 0x5f, 0xa9, 0x1e, 0xce, 0xc2, 0x8c, 0x5f, 0x7a, 0xa5, 0x6d, 0xa3, 0x87, 0xfa, + 0x6b, 0xd4, 0xac, 0x88, 0x46, 0xed, 0x5b, 0x67, 0xf6, 0x47, 0x1d, 0x39, 0x34, 0xea, 0xf4, 0x1d, + 0x5d, 0x66, 0x22, 0x46, 0x17, 0xf4, 0x2c, 0x59, 0xf4, 0x2e, 0x22, 0xbe, 0x6b, 0x25, 0xb5, 0x79, + 0x34, 0x0f, 0x16, 0x82, 0x37, 0x22, 0x0d, 0xae, 0x55, 0xfa, 0x4a, 0xf2, 0x5e, 0x09, 0x8e, 0xed, + 0xef, 0xcc, 0x7f, 0x84, 0xf7, 0x42, 0x73, 0xeb, 0x64, 0xfb, 0x5e, 0x68, 0xe4, 0x8d, 0xdf, 0xa4, + 0x8b, 0x0d, 0x29, 0xc2, 0xd9, 0x7b, 0x83, 0x3b, 0x71, 0xb1, 0xa0, 0x21, 0x82, 0x44, 0xd3, 0x17, + 0xe0, 0xaf, 0xcb, 0x30, 0x55, 0xc7, 0xce, 0xaa, 0x76, 0xc9, 0xdc, 0x75, 0x90, 0x26, 0xba, 0x3d, + 0xf7, 0x54, 0xc8, 0x77, 0xc8, 0x2f, 0xec, 0x8a, 0xf7, 0x6b, 0xfa, 0xee, 0x6f, 0x11, 0xdf, 0x1f, + 0x4a, 0x5a, 0x65, 0xf9, 0xf9, 0x58, 0x2e, 0x22, 0xbb, 0xa3, 0x3e, 0x77, 0x23, 0xd9, 0xda, 0x49, + 0xb4, 0x77, 0x1a, 0x55, 0x74, 0xfa, 0xb0, 0xfc, 0x82, 0x0c, 0xb3, 0x75, 0xec, 0x54, 0xec, 0x25, + 0x6d, 0xcf, 0xb4, 0x74, 0x07, 0x87, 0xef, 0x78, 0x8c, 0x87, 0xe6, 0x34, 0x80, 0xee, 0xff, 0xc6, + 0x22, 0x4c, 0x85, 0x52, 0xd0, 0x6f, 0x27, 0x75, 0x14, 0xe2, 0xf8, 0x18, 0x09, 0x08, 0x89, 0x7c, + 0x2c, 0xe2, 0x8a, 0x4f, 0x1f, 0x88, 0xcf, 0x4b, 0x0c, 0x88, 0xa2, 0xd5, 0xda, 0xd6, 0xf7, 0x70, + 0x3b, 0x21, 0x10, 0xde, 0x6f, 0x01, 0x10, 0x3e, 0xa1, 0xc4, 0xee, 0x2b, 0x1c, 0x1f, 0xa3, 0x70, + 0x5f, 0x89, 0x23, 0x38, 0x96, 0x20, 0x51, 0x6e, 0xd7, 0xc3, 0xd6, 0x33, 0xef, 0x12, 0x15, 0x6b, + 0x60, 0xb2, 0x49, 0x61, 0x93, 0x6d, 0xa8, 0x8e, 0x85, 0x96, 0x3d, 0x48, 0xa7, 0xb3, 0x69, 0x74, + 0x2c, 0x7d, 0x8b, 0x4e, 0x5f, 0xe8, 0xef, 0x94, 0xe1, 0x84, 0x1f, 0x3d, 0xa5, 0x8e, 0x9d, 0x45, + 0xcd, 0xde, 0x3e, 0x6f, 0x6a, 0x56, 0x3b, 0x7c, 0xf5, 0xff, 0xd0, 0x27, 0xfe, 0xd0, 0xe7, 0xc2, + 0x20, 0x54, 0x79, 0x10, 0xfa, 0xba, 0x8a, 0xf6, 0xe5, 0x65, 0x14, 0x9d, 0x4c, 0xac, 0x37, 0xeb, + 0xef, 0xfa, 0x60, 0xfd, 0x04, 0x07, 0xd6, 0x9d, 0xc3, 0xb2, 0x98, 0x3e, 0x70, 0xbf, 0x45, 0x47, + 0x84, 0x90, 0x57, 0xf3, 0x7d, 0xa2, 0x80, 0x45, 0x78, 0xb5, 0xca, 0x91, 0x5e, 0xad, 0x43, 0x8d, + 0x11, 0x03, 0x3d, 0x92, 0xd3, 0x1d, 0x23, 0x0e, 0xd1, 0xdb, 0xf8, 0xad, 0x32, 0x14, 0x48, 0xf8, + 0xac, 0x90, 0xc7, 0x37, 0xba, 0x5f, 0x14, 0x9d, 0x7d, 0xde, 0xe5, 0x13, 0x49, 0xbd, 0xcb, 0xd1, + 0x5b, 0x92, 0xfa, 0x90, 0xf7, 0x72, 0x3b, 0x12, 0xc4, 0x12, 0xb9, 0x88, 0x0f, 0xe0, 0x20, 0x7d, + 0xd0, 0xfe, 0x9b, 0x0c, 0xe0, 0x36, 0x68, 0x76, 0xf6, 0xe1, 0x19, 0xa2, 0x70, 0xdd, 0x1c, 0xf6, + 0xab, 0x77, 0x81, 0x3a, 0xd1, 0x03, 0x14, 0xa5, 0x18, 0x9c, 0xaa, 0x78, 0x24, 0xa9, 0x6f, 0x65, + 0xc0, 0xd5, 0x48, 0x60, 0x49, 0xe4, 0x6d, 0x19, 0x59, 0x76, 0xfa, 0x80, 0xfc, 0x0f, 0x09, 0x72, + 0x0d, 0xb3, 0x8e, 0x9d, 0x83, 0x9b, 0x02, 0x89, 0x8f, 0xed, 0x93, 0x72, 0x47, 0x71, 0x6c, 0xbf, + 0x1f, 0xa1, 0x31, 0x44, 0x23, 0x93, 0x60, 0xa6, 0x61, 0x96, 0xfc, 0xc5, 0x29, 0x71, 0x5f, 0x55, + 0xf1, 0xfb, 0x94, 0xfd, 0x0a, 0x06, 0xc5, 0x1c, 0xe8, 0x3e, 0xe5, 0xc1, 0xf4, 0xd2, 0x97, 0xdb, + 0x6d, 0x70, 0x74, 0xc3, 0x68, 0x9b, 0x2a, 0x6e, 0x9b, 0x6c, 0xa5, 0x5b, 0x51, 0x20, 0xbb, 0x6b, + 0xb4, 0x4d, 0xc2, 0x72, 0x4e, 0x25, 0xcf, 0x6e, 0x9a, 0x85, 0xdb, 0x26, 0xf3, 0x0d, 0x20, 0xcf, + 0xe8, 0xab, 0x32, 0x64, 0xdd, 0x7f, 0xc5, 0x45, 0xfd, 0x56, 0x39, 0x61, 0x20, 0x02, 0x97, 0xfc, + 0x48, 0x2c, 0xa1, 0xbb, 0x42, 0x6b, 0xff, 0xd4, 0x83, 0xf5, 0xda, 0xa8, 0xf2, 0x42, 0xa2, 0x08, + 0xd6, 0xfc, 0x95, 0x53, 0x30, 0x71, 0xbe, 0x63, 0xb6, 0x2e, 0x04, 0xe7, 0xe5, 0xd9, 0xab, 0x72, + 0x23, 0xe4, 0x2c, 0xcd, 0xd8, 0xc2, 0x6c, 0x4f, 0xe1, 0x78, 0x4f, 0x5f, 0x48, 0xbc, 0x5e, 0x54, + 0x9a, 0x05, 0xbd, 0x25, 0x49, 0x08, 0x84, 0x3e, 0x95, 0x4f, 0xa6, 0x0f, 0x8b, 0x43, 0x9c, 0x2c, + 0x2b, 0xc0, 0x4c, 0xa9, 0x48, 0x6f, 0x2e, 0x5f, 0xab, 0x9d, 0x2d, 0x17, 0x64, 0x02, 0xb3, 0x2b, + 0x93, 0x14, 0x61, 0x76, 0xc9, 0xff, 0xd0, 0xc2, 0xdc, 0xa7, 0xf2, 0x87, 0x01, 0xf3, 0xc7, 0x25, + 0x98, 0x5d, 0xd5, 0x6d, 0x27, 0xca, 0xdb, 0x3f, 0x26, 0x7a, 0xee, 0xf3, 0x93, 0x9a, 0xca, 0x5c, + 0x39, 0xc2, 0x61, 0x73, 0x13, 0x99, 0xc3, 0x71, 0x45, 0x8c, 0xe7, 0x58, 0x0a, 0xe1, 0x80, 0xde, + 0x36, 0x2c, 0x2c, 0xc9, 0xc4, 0x86, 0x52, 0x50, 0xc8, 0xf8, 0x0d, 0xa5, 0xc8, 0xb2, 0xd3, 0x97, + 0xef, 0x57, 0x25, 0x38, 0xe6, 0x16, 0x1f, 0xb7, 0x2c, 0x15, 0x2d, 0xe6, 0x81, 0xcb, 0x52, 0x89, + 0x57, 0xc6, 0xf7, 0xf1, 0x32, 0x8a, 0x95, 0xf1, 0x41, 0x44, 0xc7, 0x2c, 0xe6, 0x88, 0x65, 0xd8, + 0x41, 0x62, 0x8e, 0x59, 0x86, 0x1d, 0x5e, 0xcc, 0xf1, 0x4b, 0xb1, 0x43, 0x8a, 0xf9, 0xd0, 0x16, + 0x58, 0x5f, 0x23, 0xfb, 0x62, 0x8e, 0x5c, 0xdb, 0x88, 0x11, 0x73, 0xe2, 0x13, 0xbb, 0xe8, 0x6d, + 0x43, 0x0a, 0x7e, 0xc4, 0xeb, 0x1b, 0xc3, 0xc0, 0x74, 0x88, 0x6b, 0x1c, 0x2f, 0x96, 0x61, 0x8e, + 0x71, 0xd1, 0x7f, 0xca, 0x1c, 0x83, 0x51, 0xe2, 0x29, 0x73, 0xe2, 0x33, 0x40, 0x3c, 0x67, 0xe3, + 0x3f, 0x03, 0x14, 0x5b, 0x7e, 0xfa, 0xe0, 0x7c, 0x2d, 0x0b, 0x27, 0x5d, 0x16, 0xd6, 0xcc, 0xb6, + 0xbe, 0x79, 0x89, 0x72, 0x71, 0x56, 0xeb, 0xec, 0x62, 0x1b, 0xbd, 0x5b, 0x12, 0x45, 0xe9, 0x3f, + 0x01, 0x98, 0x5d, 0x6c, 0xd1, 0x40, 0x6a, 0x0c, 0xa8, 0x3b, 0xa2, 0x2a, 0xbb, 0xbf, 0x24, 0xff, + 0x32, 0x99, 0x9a, 0x47, 0x44, 0x0d, 0xd1, 0x73, 0xad, 0xc2, 0x29, 0xff, 0x4b, 0xaf, 0x83, 0x47, + 0x66, 0xbf, 0x83, 0xc7, 0x0d, 0x20, 0x6b, 0xed, 0xb6, 0x0f, 0x55, 0xef, 0x66, 0x36, 0x29, 0x53, + 0x75, 0xb3, 0xb8, 0x39, 0x6d, 0x1c, 0x1c, 0xcd, 0x8b, 0xc8, 0x69, 0x63, 0x47, 0x99, 0x87, 0x3c, + 0xbd, 0x79, 0xd9, 0x5f, 0xd1, 0xef, 0x9f, 0x99, 0xe5, 0xe2, 0x4d, 0xbb, 0x1a, 0xaf, 0x86, 0xb7, + 0x25, 0x92, 0x4c, 0xbf, 0x7e, 0x3a, 0xb0, 0x93, 0x55, 0x4e, 0xc1, 0x9e, 0x3e, 0x34, 0xe5, 0xf1, + 0xec, 0x86, 0x15, 0xbb, 0xdd, 0xce, 0xa5, 0x06, 0x0b, 0xbe, 0x92, 0x68, 0x37, 0x2c, 0x14, 0xc3, + 0x45, 0xea, 0x8d, 0xe1, 0x92, 0x7c, 0x37, 0x8c, 0xe3, 0x63, 0x14, 0xbb, 0x61, 0x71, 0x04, 0xd3, + 0x17, 0xed, 0x9b, 0x72, 0xd4, 0x6a, 0x66, 0xb1, 0xfd, 0xff, 0xa8, 0xff, 0x21, 0x34, 0xe0, 0x9d, + 0x5d, 0xfa, 0x85, 0xfd, 0x8f, 0xbd, 0xd3, 0x44, 0x79, 0x32, 0xe4, 0x37, 0x4d, 0x6b, 0x47, 0xf3, + 0x36, 0xee, 0x7b, 0x4f, 0x8a, 0xb0, 0x78, 0xfa, 0x4b, 0x24, 0x8f, 0xca, 0xf2, 0xba, 0xf3, 0x91, + 0x67, 0xea, 0x5d, 0x16, 0x75, 0xd1, 0x7d, 0x54, 0xae, 0x83, 0x59, 0x16, 0x7c, 0xb1, 0x8a, 0x6d, + 0x07, 0xb7, 0x59, 0xc4, 0x0a, 0x3e, 0x51, 0x39, 0x03, 0x33, 0x2c, 0x61, 0x49, 0xef, 0x60, 0x9b, + 0x05, 0xad, 0xe0, 0xd2, 0x94, 0x93, 0x90, 0xd7, 0xed, 0x7b, 0x6c, 0xd3, 0x20, 0xfe, 0xff, 0x93, + 0x2a, 0x7b, 0x53, 0x6e, 0x80, 0xa3, 0x2c, 0x9f, 0x6f, 0xac, 0xd2, 0x03, 0x3b, 0xbd, 0xc9, 0xae, + 0x6a, 0x19, 0xe6, 0xba, 0x65, 0x6e, 0x59, 0xd8, 0xb6, 0xc9, 0xa9, 0xa9, 0x49, 0x35, 0x94, 0x82, + 0x3e, 0x33, 0xcc, 0xc4, 0x22, 0xf1, 0x3d, 0x07, 0x2e, 0x4a, 0xbb, 0xad, 0x16, 0xc6, 0x6d, 0x76, + 0xf2, 0xc9, 0x7b, 0x4d, 0x78, 0x03, 0x42, 0xe2, 0x69, 0xc8, 0x21, 0x5d, 0x81, 0xf0, 0x81, 0x13, + 0x90, 0xa7, 0xd7, 0x89, 0xa1, 0x17, 0xce, 0xf5, 0x55, 0xd6, 0x39, 0x5e, 0x59, 0x37, 0x60, 0xc6, + 0x30, 0xdd, 0xe2, 0xd6, 0x35, 0x4b, 0xdb, 0xb1, 0xe3, 0x56, 0x19, 0x29, 0x5d, 0x7f, 0x48, 0xa9, + 0x86, 0x7e, 0x5b, 0x39, 0xa2, 0x72, 0x64, 0x94, 0xff, 0x1f, 0x1c, 0x3d, 0xcf, 0x22, 0x04, 0xd8, + 0x8c, 0xb2, 0x14, 0xed, 0x83, 0xd7, 0x43, 0x79, 0x81, 0xff, 0x73, 0xe5, 0x88, 0xda, 0x4b, 0x4c, + 0xf9, 0x29, 0x98, 0x73, 0x5f, 0xdb, 0xe6, 0x45, 0x8f, 0x71, 0x39, 0xda, 0x10, 0xe9, 0x21, 0xbf, + 0xc6, 0xfd, 0xb8, 0x72, 0x44, 0xed, 0x21, 0xa5, 0xd4, 0x00, 0xb6, 0x9d, 0x9d, 0x0e, 0x23, 0x9c, + 0x8d, 0x56, 0xc9, 0x1e, 0xc2, 0x2b, 0xfe, 0x4f, 0x2b, 0x47, 0xd4, 0x10, 0x09, 0x65, 0x15, 0xa6, + 0x9c, 0x07, 0x1c, 0x46, 0x2f, 0x17, 0xbd, 0xf9, 0xdd, 0x43, 0xaf, 0xe1, 0xfd, 0xb3, 0x72, 0x44, + 0x0d, 0x08, 0x28, 0x15, 0x98, 0xec, 0x9e, 0x67, 0xc4, 0xf2, 0x7d, 0xa2, 0xcd, 0xf7, 0x27, 0xb6, + 0x7e, 0xde, 0xa7, 0xe5, 0xff, 0xee, 0x32, 0xd6, 0xb2, 0xf7, 0x18, 0xad, 0x09, 0x61, 0xc6, 0x4a, + 0xde, 0x3f, 0x2e, 0x63, 0x3e, 0x01, 0xa5, 0x02, 0x53, 0xb6, 0xa1, 0x75, 0xed, 0x6d, 0xd3, 0xb1, + 0x4f, 0x4d, 0xf6, 0xf8, 0x49, 0x46, 0x53, 0xab, 0xb3, 0x7f, 0xd4, 0xe0, 0x6f, 0xe5, 0xc9, 0x70, + 0x62, 0x97, 0x5c, 0xcb, 0x5e, 0x7e, 0x40, 0xb7, 0x1d, 0xdd, 0xd8, 0xf2, 0x62, 0xcc, 0xd2, 0xde, + 0xa6, 0xff, 0x47, 0x65, 0x9e, 0x9d, 0x98, 0x02, 0xd2, 0x36, 0x51, 0xef, 0x66, 0x1d, 0x2d, 0x36, + 0x74, 0x50, 0xea, 0x69, 0x90, 0x75, 0x3f, 0x91, 0xde, 0x69, 0xae, 0xff, 0x42, 0x60, 0xaf, 0xee, + 0x90, 0x06, 0xec, 0xfe, 0xd4, 0xd3, 0xc1, 0xcd, 0xf4, 0x76, 0x70, 0x6e, 0x03, 0xd7, 0xed, 0x35, + 0x7d, 0x8b, 0x5a, 0x57, 0xcc, 0x1f, 0x3e, 0x9c, 0x44, 0x67, 0xa3, 0x55, 0x7c, 0x91, 0xde, 0xa0, + 0x71, 0xd4, 0x9b, 0x8d, 0x7a, 0x29, 0xe8, 0x7a, 0x98, 0x09, 0x37, 0x32, 0x7a, 0x27, 0xa9, 0x1e, + 0xd8, 0x66, 0xec, 0x0d, 0x5d, 0x07, 0x73, 0xbc, 0x4e, 0x87, 0x86, 0x20, 0xd9, 0xeb, 0x0a, 0xd1, + 0xb5, 0x70, 0xb4, 0xa7, 0x61, 0x79, 0x31, 0x47, 0x32, 0x41, 0xcc, 0x91, 0x6b, 0x00, 0x02, 0x2d, + 0xee, 0x4b, 0xe6, 0x6a, 0x98, 0xf2, 0xf5, 0xb2, 0x6f, 0x86, 0x2f, 0x67, 0x60, 0xd2, 0x53, 0xb6, + 0x7e, 0x19, 0xdc, 0xf1, 0xc7, 0x08, 0x6d, 0x30, 0xb0, 0x69, 0x38, 0x97, 0xe6, 0x8e, 0x33, 0x81, + 0x5b, 0x6f, 0x43, 0x77, 0x3a, 0xde, 0xd1, 0xb8, 0xde, 0x64, 0x65, 0x1d, 0x40, 0x27, 0x18, 0x35, + 0x82, 0xb3, 0x72, 0xb7, 0x24, 0x68, 0x0f, 0x54, 0x1f, 0x42, 0x34, 0xce, 0xfc, 0x08, 0x3b, 0xc8, + 0x36, 0x05, 0x39, 0x1a, 0x68, 0xfd, 0x88, 0x32, 0x07, 0x50, 0x7e, 0xc6, 0x7a, 0x59, 0xad, 0x94, + 0xab, 0xa5, 0x72, 0x21, 0x83, 0x5e, 0x22, 0xc1, 0x94, 0xdf, 0x08, 0xfa, 0x56, 0xb2, 0xcc, 0x54, + 0x6b, 0xe0, 0xb5, 0x8f, 0xfb, 0x1b, 0x55, 0x58, 0xc9, 0x9e, 0x0a, 0x97, 0xef, 0xda, 0x78, 0x49, + 0xb7, 0x6c, 0x47, 0x35, 0x2f, 0x2e, 0x99, 0x96, 0x1f, 0x55, 0x99, 0x45, 0x38, 0x8d, 0xfa, 0xec, + 0x5a, 0x1c, 0x6d, 0x4c, 0x0e, 0x4d, 0x61, 0x8b, 0xad, 0x1c, 0x07, 0x09, 0x2e, 0x5d, 0xc7, 0xd2, + 0x0c, 0xbb, 0x6b, 0xda, 0x58, 0x35, 0x2f, 0xda, 0x45, 0xa3, 0x5d, 0x32, 0x3b, 0xbb, 0x3b, 0x86, + 0xcd, 0x6c, 0x86, 0xa8, 0xcf, 0xae, 0x74, 0xc8, 0xa5, 0xae, 0x73, 0x00, 0xa5, 0xda, 0xea, 0x6a, + 0xb9, 0xd4, 0xa8, 0xd4, 0xaa, 0x85, 0x23, 0xae, 0xb4, 0x1a, 0xc5, 0x85, 0x55, 0x57, 0x3a, 0x3f, + 0x0d, 0x93, 0x5e, 0x9b, 0x66, 0x61, 0x52, 0x32, 0x5e, 0x98, 0x14, 0xa5, 0x08, 0x93, 0x5e, 0x2b, + 0x67, 0x23, 0xc2, 0x63, 0x7b, 0x8f, 0xc5, 0xee, 0x68, 0x96, 0x43, 0xfc, 0xa9, 0x3d, 0x22, 0x0b, + 0x9a, 0x8d, 0x55, 0xff, 0xb7, 0x33, 0x4f, 0x60, 0x1c, 0x28, 0x30, 0x57, 0x5c, 0x5d, 0x6d, 0xd6, + 0xd4, 0x66, 0xb5, 0xd6, 0x58, 0xa9, 0x54, 0x97, 0xe9, 0x08, 0x59, 0x59, 0xae, 0xd6, 0xd4, 0x32, + 0x1d, 0x20, 0xeb, 0x85, 0x0c, 0xbd, 0x54, 0x78, 0x61, 0x12, 0xf2, 0x5d, 0x22, 0x5d, 0xf4, 0x05, + 0x39, 0xe1, 0x79, 0x78, 0x1f, 0xa7, 0x88, 0x6b, 0x4f, 0x39, 0x9f, 0x74, 0xa9, 0xcf, 0x99, 0xd1, + 0x33, 0x30, 0x43, 0x6d, 0x3d, 0x9b, 0x2c, 0xef, 0x13, 0xe4, 0x64, 0x95, 0x4b, 0x43, 0x1f, 0x92, + 0x12, 0x1c, 0x92, 0xef, 0xcb, 0x51, 0x32, 0xe3, 0xe2, 0xcf, 0x33, 0xc3, 0x5d, 0x4b, 0x50, 0xa9, + 0x36, 0xca, 0x6a, 0xb5, 0xb8, 0xca, 0xb2, 0xc8, 0xca, 0x29, 0x38, 0x5e, 0xad, 0xb1, 0x98, 0x7f, + 0xf5, 0x66, 0xa3, 0xd6, 0xac, 0xac, 0xad, 0xd7, 0xd4, 0x46, 0x21, 0xa7, 0x9c, 0x04, 0x85, 0x3e, + 0x37, 0x2b, 0xf5, 0x66, 0xa9, 0x58, 0x2d, 0x95, 0x57, 0xcb, 0x8b, 0x85, 0xbc, 0xf2, 0x38, 0xb8, + 0x96, 0x5e, 0x73, 0x53, 0x5b, 0x6a, 0xaa, 0xb5, 0x73, 0x75, 0x17, 0x41, 0xb5, 0xbc, 0x5a, 0x74, + 0x15, 0x29, 0x74, 0xb9, 0xf0, 0x84, 0x72, 0x19, 0x1c, 0x25, 0x17, 0x87, 0xaf, 0xd6, 0x8a, 0x8b, + 0xac, 0xbc, 0x49, 0xe5, 0x2a, 0x38, 0x55, 0xa9, 0xd6, 0x37, 0x96, 0x96, 0x2a, 0xa5, 0x4a, 0xb9, + 0xda, 0x68, 0xae, 0x97, 0xd5, 0xb5, 0x4a, 0xbd, 0xee, 0xfe, 0x5b, 0x98, 0x22, 0x57, 0xb7, 0xd2, + 0x3e, 0x13, 0xbd, 0x4b, 0x86, 0xd9, 0xb3, 0x5a, 0x47, 0x77, 0x07, 0x0a, 0x72, 0xa7, 0x73, 0xcf, + 0x71, 0x12, 0x87, 0xdc, 0xfd, 0xcc, 0x1c, 0xd2, 0xc9, 0x0b, 0xfa, 0x79, 0x39, 0xe1, 0x71, 0x12, + 0x06, 0x04, 0x2d, 0x71, 0x9e, 0x2b, 0x2d, 0x62, 0xf2, 0xf3, 0x2a, 0x29, 0xc1, 0x71, 0x12, 0x71, + 0xf2, 0xc9, 0xc0, 0x7f, 0xe9, 0xa8, 0xc0, 0x2f, 0xc0, 0xcc, 0x46, 0xb5, 0xb8, 0xd1, 0x58, 0xa9, + 0xa9, 0x95, 0x9f, 0x24, 0xd1, 0xc8, 0x67, 0x61, 0x6a, 0xa9, 0xa6, 0x2e, 0x54, 0x16, 0x17, 0xcb, + 0xd5, 0x42, 0x4e, 0xb9, 0x1c, 0x2e, 0xab, 0x97, 0xd5, 0xb3, 0x95, 0x52, 0xb9, 0xb9, 0x51, 0x2d, + 0x9e, 0x2d, 0x56, 0x56, 0x49, 0x1f, 0x91, 0x8f, 0xb9, 0x8f, 0x7a, 0x02, 0xfd, 0x6c, 0x16, 0x80, + 0x56, 0x9d, 0x5c, 0xc6, 0x13, 0xba, 0xb5, 0xf8, 0x2f, 0x92, 0x4e, 0x1a, 0x02, 0x32, 0x11, 0xed, + 0xb7, 0x02, 0x93, 0x16, 0xfb, 0xc0, 0x96, 0x57, 0x06, 0xd1, 0xa1, 0x8f, 0x1e, 0x35, 0xd5, 0xff, + 0x1d, 0xbd, 0x3b, 0xc9, 0x1c, 0x21, 0x92, 0xb1, 0x64, 0x48, 0x2e, 0x8d, 0x06, 0x48, 0xf4, 0x50, + 0x06, 0xe6, 0xf8, 0x8a, 0xb9, 0x95, 0x20, 0xc6, 0x94, 0x58, 0x25, 0xf8, 0x9f, 0x43, 0x46, 0xd6, + 0x99, 0x27, 0xb1, 0xe1, 0x14, 0xbc, 0x96, 0x49, 0x4f, 0x86, 0x7b, 0x16, 0x4b, 0x21, 0xe3, 0x32, + 0xef, 0x1a, 0x1d, 0x05, 0x49, 0x99, 0x00, 0xb9, 0xf1, 0x80, 0x53, 0x90, 0xd1, 0x97, 0x65, 0x98, + 0xe5, 0xae, 0x45, 0x46, 0xaf, 0xca, 0x88, 0x5c, 0x59, 0x1a, 0xba, 0x70, 0x39, 0x73, 0xd0, 0x0b, + 0x97, 0xcf, 0xdc, 0x0c, 0x13, 0x2c, 0x8d, 0xc8, 0xb7, 0x56, 0x75, 0x4d, 0x81, 0xa3, 0x30, 0xbd, + 0x5c, 0x6e, 0x34, 0xeb, 0x8d, 0xa2, 0xda, 0x28, 0x2f, 0x16, 0x32, 0xee, 0xc0, 0x57, 0x5e, 0x5b, + 0x6f, 0xdc, 0x57, 0x90, 0x92, 0x7b, 0xe8, 0xf5, 0x32, 0x32, 0x66, 0x0f, 0xbd, 0xb8, 0xe2, 0xd3, + 0x9f, 0xab, 0x7e, 0x4a, 0x86, 0x02, 0xe5, 0xa0, 0xfc, 0x40, 0x17, 0x5b, 0x3a, 0x36, 0x5a, 0x18, + 0x5d, 0x10, 0x89, 0x08, 0xba, 0x2f, 0x56, 0x1e, 0xe9, 0xcf, 0x43, 0x56, 0x22, 0x7d, 0xe9, 0x31, + 0xb0, 0xb3, 0xfb, 0x0c, 0xec, 0x4f, 0x26, 0x75, 0xd1, 0xeb, 0x65, 0x77, 0x24, 0x90, 0x7d, 0x2c, + 0x89, 0x8b, 0xde, 0x00, 0x0e, 0xc6, 0x12, 0xe8, 0x37, 0x62, 0xfc, 0x2d, 0xc8, 0xe8, 0x79, 0x32, + 0x1c, 0x5d, 0xd4, 0x1c, 0xbc, 0x70, 0xa9, 0xe1, 0x5d, 0x5b, 0x18, 0x71, 0xd5, 0x70, 0x66, 0xdf, + 0x55, 0xc3, 0xc1, 0xcd, 0x87, 0x52, 0xcf, 0xcd, 0x87, 0xe8, 0xed, 0x49, 0x0f, 0xf5, 0xf5, 0xf0, + 0x30, 0xb2, 0x68, 0xbc, 0xc9, 0x0e, 0xeb, 0xc5, 0x73, 0x31, 0x86, 0x9b, 0xff, 0xa7, 0xa0, 0x40, + 0x59, 0x09, 0x79, 0xa1, 0xfd, 0x3a, 0xbb, 0x9d, 0xbb, 0x99, 0x20, 0xe8, 0x9f, 0x17, 0x46, 0x41, + 0xe2, 0xc3, 0x28, 0x70, 0x8b, 0x9a, 0x72, 0xaf, 0xe7, 0x40, 0xd2, 0xce, 0x30, 0xe4, 0x72, 0x16, + 0x1d, 0x67, 0x35, 0xbd, 0xce, 0x30, 0xb6, 0xf8, 0xf1, 0xdc, 0x20, 0xcb, 0xee, 0x79, 0x2c, 0x8b, + 0x22, 0x13, 0x7f, 0x51, 0x76, 0x52, 0xff, 0x63, 0xce, 0xe5, 0x2f, 0xe6, 0xf6, 0xe8, 0xf4, 0xfc, + 0x8f, 0x07, 0x71, 0x90, 0x3e, 0x0a, 0xdf, 0x93, 0x20, 0x5b, 0x37, 0x2d, 0x67, 0x54, 0x18, 0x24, + 0xdd, 0x33, 0x0d, 0x49, 0xa0, 0x1e, 0x3d, 0xe7, 0x4c, 0x6f, 0xcf, 0x34, 0xbe, 0xfc, 0x31, 0xc4, + 0x4d, 0x3c, 0x0a, 0x73, 0x94, 0x13, 0xff, 0x52, 0x91, 0xef, 0x4a, 0xb4, 0xbf, 0xba, 0x57, 0x14, + 0x91, 0x33, 0x30, 0x13, 0xda, 0xb3, 0xf4, 0x40, 0xe1, 0xd2, 0xd0, 0xeb, 0xc2, 0xb8, 0x2c, 0xf2, + 0xb8, 0xf4, 0x9b, 0x71, 0xfb, 0xf7, 0x72, 0x8c, 0xaa, 0x67, 0x4a, 0x12, 0x82, 0x31, 0xa6, 0xf0, + 0xf4, 0x11, 0x79, 0x50, 0x86, 0x3c, 0xf3, 0x19, 0x1b, 0x29, 0x02, 0x49, 0x5b, 0x86, 0x2f, 0x04, + 0x31, 0xdf, 0x32, 0x79, 0xd4, 0x2d, 0x23, 0xbe, 0xfc, 0xf4, 0x71, 0xf8, 0x3e, 0x73, 0x86, 0x2c, + 0xee, 0x69, 0x7a, 0x47, 0x3b, 0xdf, 0x49, 0x10, 0xfa, 0xf8, 0x43, 0x09, 0x8f, 0x7f, 0xf9, 0x55, + 0xe5, 0xca, 0x8b, 0x90, 0xf8, 0x8f, 0xc1, 0x94, 0xe5, 0x2f, 0x49, 0x7a, 0xa7, 0xe3, 0x7b, 0x1c, + 0x51, 0xd9, 0x77, 0x35, 0xc8, 0x99, 0xe8, 0xac, 0x97, 0x10, 0x3f, 0x63, 0x39, 0x9b, 0x32, 0x5d, + 0x6c, 0xb7, 0x97, 0xb0, 0xe6, 0xec, 0x5a, 0xb8, 0x9d, 0x68, 0x88, 0xe0, 0x45, 0x34, 0x15, 0x96, + 0x04, 0x17, 0x7c, 0x70, 0x95, 0x47, 0xe7, 0x29, 0x03, 0x7a, 0x03, 0x8f, 0x97, 0x91, 0x74, 0x49, + 0x6f, 0xf2, 0x21, 0xa9, 0x71, 0x90, 0x3c, 0x6d, 0x38, 0x26, 0xd2, 0x07, 0xe4, 0x37, 0x65, 0x98, + 0xa3, 0x76, 0xc2, 0xa8, 0x31, 0xf9, 0x83, 0x84, 0x3e, 0x26, 0xa1, 0x6b, 0x9b, 0xc2, 0xec, 0x8c, + 0x04, 0x96, 0x24, 0x1e, 0x29, 0x62, 0x7c, 0xa4, 0x8f, 0xcc, 0x67, 0xf2, 0x00, 0x21, 0xbf, 0xc1, + 0x0f, 0xe5, 0x83, 0x40, 0x80, 0xe8, 0x2d, 0x6c, 0xfe, 0x51, 0xe7, 0xa2, 0x52, 0x87, 0x7c, 0x02, + 0xfd, 0x0d, 0x29, 0x3e, 0x51, 0x68, 0x54, 0xf9, 0xf3, 0x84, 0x36, 0x2f, 0xf3, 0xda, 0x1b, 0x38, + 0xb8, 0x0f, 0xd9, 0xcb, 0x7d, 0x38, 0x81, 0xf1, 0x3b, 0x88, 0x95, 0x64, 0xa8, 0xad, 0x0e, 0x31, + 0xb3, 0x3f, 0x05, 0xc7, 0xd5, 0x72, 0x71, 0xb1, 0x56, 0x5d, 0xbd, 0x2f, 0x7c, 0x87, 0x4f, 0x41, + 0x0e, 0x4f, 0x4e, 0x52, 0x81, 0xed, 0xd5, 0x09, 0xfb, 0x40, 0x5e, 0x56, 0xb1, 0x37, 0xd4, 0x7f, + 0x2c, 0x41, 0xaf, 0x26, 0x40, 0xf6, 0x30, 0x51, 0x78, 0x10, 0x42, 0xcd, 0xe8, 0x17, 0x65, 0x28, + 0xb8, 0xe3, 0x21, 0xe5, 0x92, 0x5d, 0xd6, 0x56, 0xe3, 0xdd, 0x0a, 0xbb, 0x74, 0xff, 0x29, 0x70, + 0x2b, 0xf4, 0x12, 0x94, 0xeb, 0x61, 0xae, 0xb5, 0x8d, 0x5b, 0x17, 0x2a, 0x86, 0xb7, 0xaf, 0x4e, + 0x37, 0x61, 0x7b, 0x52, 0x79, 0x60, 0xee, 0xe5, 0x81, 0xe1, 0x27, 0xd1, 0xdc, 0x20, 0x1d, 0x66, + 0x2a, 0x02, 0x97, 0x3f, 0xf2, 0x71, 0xa9, 0x72, 0xb8, 0xdc, 0x3e, 0x14, 0xd5, 0x64, 0xb0, 0x54, + 0x87, 0x80, 0x05, 0xc1, 0xc9, 0xda, 0x7a, 0xa3, 0x52, 0xab, 0x36, 0x37, 0xea, 0xe5, 0xc5, 0xe6, + 0x82, 0x07, 0x4e, 0xbd, 0x20, 0xa3, 0xaf, 0x4b, 0x30, 0x41, 0xd9, 0xb2, 0xd1, 0xe3, 0x03, 0x08, + 0x06, 0xfa, 0x53, 0xa2, 0x37, 0x0b, 0x47, 0x47, 0xf0, 0x05, 0xc1, 0xca, 0x89, 0xe8, 0xa7, 0x9e, + 0x0a, 0x13, 0x14, 0x64, 0x6f, 0x45, 0xeb, 0x74, 0x44, 0x2f, 0xc5, 0xc8, 0xa8, 0x5e, 0x76, 0xc1, + 0x48, 0x09, 0x03, 0xd8, 0x48, 0x7f, 0x64, 0x79, 0x56, 0x96, 0x9a, 0xc1, 0xe7, 0x74, 0x67, 0x9b, + 0xb8, 0x5b, 0xa2, 0x9f, 0x10, 0x59, 0x5e, 0xbc, 0x09, 0x72, 0x7b, 0x6e, 0xee, 0x01, 0xae, 0xab, + 0x34, 0x13, 0x7a, 0xa9, 0x70, 0x60, 0x4e, 0x4e, 0x3f, 0x7d, 0x9e, 0x22, 0xc0, 0x59, 0x83, 0x6c, + 0x47, 0xb7, 0x1d, 0x36, 0x7e, 0xdc, 0x96, 0x88, 0x90, 0xf7, 0x50, 0x71, 0xf0, 0x8e, 0x4a, 0xc8, + 0xa0, 0x7b, 0x60, 0x26, 0x9c, 0x2a, 0xe0, 0xbe, 0x7b, 0x0a, 0x26, 0xd8, 0xb1, 0x32, 0xb6, 0xc4, + 0xea, 0xbd, 0x0a, 0x2e, 0x6b, 0x0a, 0xd5, 0x36, 0x7d, 0x1d, 0xf8, 0xbf, 0x8f, 0xc2, 0xc4, 0x8a, + 0x6e, 0x3b, 0xa6, 0x75, 0x09, 0x3d, 0x92, 0x81, 0x89, 0xb3, 0xd8, 0xb2, 0x75, 0xd3, 0xd8, 0xe7, + 0x6a, 0x70, 0x0d, 0x4c, 0x77, 0x2d, 0xbc, 0xa7, 0x9b, 0xbb, 0x76, 0xb0, 0x38, 0x13, 0x4e, 0x52, + 0x10, 0x4c, 0x6a, 0xbb, 0xce, 0xb6, 0x69, 0x05, 0xd1, 0x28, 0xbc, 0x77, 0xe5, 0x34, 0x00, 0x7d, + 0xae, 0x6a, 0x3b, 0x98, 0x39, 0x50, 0x84, 0x52, 0x14, 0x05, 0xb2, 0x8e, 0xbe, 0x83, 0x59, 0x78, + 0x5a, 0xf2, 0xec, 0x0a, 0x98, 0x84, 0x7a, 0x63, 0x21, 0xf5, 0x64, 0xd5, 0x7b, 0x45, 0x9f, 0x93, + 0x61, 0x7a, 0x19, 0x3b, 0x8c, 0x55, 0x1b, 0x3d, 0x3f, 0x23, 0x74, 0x23, 0x84, 0x3b, 0xc6, 0x76, + 0x34, 0xdb, 0xfb, 0xcf, 0x5f, 0x82, 0xe5, 0x13, 0x83, 0x58, 0xb9, 0x72, 0x38, 0x50, 0x36, 0x09, + 0x9c, 0xe6, 0x54, 0xa8, 0x5f, 0x26, 0xcb, 0xcc, 0x36, 0x41, 0xf6, 0x7f, 0x40, 0xef, 0x90, 0x44, + 0x0f, 0x1d, 0x33, 0xd9, 0xcf, 0x87, 0xea, 0x13, 0xd9, 0x1d, 0x4d, 0xee, 0xb1, 0x1c, 0xfb, 0x62, + 0xa0, 0x87, 0x29, 0x31, 0x32, 0xaa, 0x9f, 0x5b, 0xf0, 0xb8, 0xf2, 0x60, 0x4e, 0xd2, 0xd7, 0xc6, + 0x6f, 0xcb, 0x30, 0x5d, 0xdf, 0x36, 0x2f, 0x7a, 0x72, 0xfc, 0x69, 0x31, 0x60, 0xaf, 0x82, 0xa9, + 0xbd, 0x1e, 0x50, 0x83, 0x84, 0xe8, 0x3b, 0xda, 0xd1, 0x73, 0xe5, 0xa4, 0x30, 0x85, 0x98, 0x1b, + 0xf9, 0x0d, 0xea, 0xca, 0x53, 0x60, 0x82, 0x71, 0xcd, 0x96, 0x5c, 0xe2, 0x01, 0xf6, 0x32, 0x87, + 0x2b, 0x98, 0xe5, 0x2b, 0x98, 0x0c, 0xf9, 0xe8, 0xca, 0xa5, 0x8f, 0xfc, 0x9f, 0x48, 0x24, 0x58, + 0x85, 0x07, 0x7c, 0x69, 0x04, 0xc0, 0xa3, 0xef, 0x64, 0x44, 0x17, 0x26, 0x7d, 0x09, 0xf8, 0x1c, + 0x1c, 0xe8, 0xb6, 0x97, 0x81, 0xe4, 0xd2, 0x97, 0xe7, 0x4b, 0xb2, 0x30, 0xb3, 0xa8, 0x6f, 0x6e, + 0xfa, 0x9d, 0xe4, 0xaf, 0x0a, 0x76, 0x92, 0xd1, 0xee, 0x00, 0xae, 0x9d, 0xbb, 0x6b, 0x59, 0xd8, + 0xf0, 0x2a, 0xc5, 0x9a, 0x53, 0x4f, 0xaa, 0x72, 0x03, 0x1c, 0xf5, 0xc6, 0x85, 0x70, 0x47, 0x39, + 0xa5, 0xf6, 0x26, 0xa3, 0x6f, 0x09, 0xef, 0x6a, 0x79, 0x12, 0x0d, 0x57, 0x29, 0xa2, 0x01, 0xde, + 0x01, 0xb3, 0xdb, 0x34, 0x37, 0x99, 0xfa, 0x7b, 0x9d, 0xe5, 0xc9, 0x9e, 0x60, 0xc0, 0x6b, 0xd8, + 0xb6, 0xb5, 0x2d, 0xac, 0xf2, 0x99, 0x7b, 0x9a, 0xaf, 0x9c, 0xe4, 0x6a, 0x2b, 0xb1, 0x0d, 0x32, + 0x81, 0x9a, 0x8c, 0x41, 0x3b, 0xce, 0x40, 0x76, 0x49, 0xef, 0x60, 0xf4, 0x4b, 0x12, 0x4c, 0xa9, + 0xb8, 0x65, 0x1a, 0x2d, 0xf7, 0x2d, 0xe4, 0x1c, 0xf4, 0x4f, 0x19, 0xd1, 0x2b, 0x1d, 0x5d, 0x3a, + 0xf3, 0x3e, 0x8d, 0x88, 0x76, 0x23, 0x76, 0x75, 0x63, 0x2c, 0xa9, 0x31, 0x5c, 0xc0, 0xe1, 0x4e, + 0x3d, 0x36, 0x37, 0x3b, 0xa6, 0xc6, 0x2d, 0x7e, 0xf5, 0x9a, 0x42, 0x37, 0x42, 0xc1, 0x3b, 0x03, + 0x62, 0x3a, 0xeb, 0xba, 0x61, 0xf8, 0x87, 0x8c, 0xf7, 0xa5, 0xf3, 0xfb, 0xb6, 0xb1, 0x71, 0x5a, + 0x48, 0xdd, 0x59, 0xe9, 0x11, 0x9a, 0x7d, 0x3d, 0xcc, 0x9d, 0xbf, 0xe4, 0x60, 0x9b, 0xe5, 0x62, + 0xc5, 0x66, 0xd5, 0x9e, 0xd4, 0x50, 0x94, 0xe5, 0xb8, 0x78, 0x2e, 0x31, 0x05, 0x26, 0x13, 0xf5, + 0xca, 0x10, 0x33, 0xc0, 0xe3, 0x50, 0xa8, 0xd6, 0x16, 0xcb, 0xc4, 0x57, 0xcd, 0xf3, 0xfe, 0xd9, + 0x42, 0x2f, 0x90, 0x61, 0x86, 0x38, 0x93, 0x78, 0x28, 0x5c, 0x2b, 0x30, 0x1f, 0x41, 0x5f, 0x14, + 0xf6, 0x63, 0x23, 0x55, 0x0e, 0x17, 0x10, 0x2d, 0xe8, 0x4d, 0xbd, 0xd3, 0x2b, 0xe8, 0x9c, 0xda, + 0x93, 0xda, 0x07, 0x10, 0xb9, 0x2f, 0x20, 0xbf, 0x27, 0xe4, 0xcc, 0x36, 0x88, 0xbb, 0xc3, 0x42, + 0xe5, 0xf7, 0x65, 0x98, 0x76, 0x27, 0x29, 0x1e, 0x28, 0x35, 0x0e, 0x14, 0xd3, 0xe8, 0x5c, 0x0a, + 0x96, 0x45, 0xbc, 0xd7, 0x44, 0x8d, 0xe4, 0xaf, 0x84, 0x67, 0xee, 0x44, 0x44, 0x21, 0x5e, 0xc6, + 0x84, 0xdf, 0x7b, 0x84, 0xe6, 0xf3, 0x03, 0x98, 0x3b, 0x2c, 0xf8, 0xbe, 0x9a, 0x83, 0xfc, 0x46, + 0x97, 0x20, 0xf7, 0x52, 0x59, 0x24, 0x62, 0xf9, 0xbe, 0x83, 0x0c, 0xae, 0x99, 0xd5, 0x31, 0x5b, + 0x5a, 0x67, 0x3d, 0x38, 0x11, 0x16, 0x24, 0x28, 0xb7, 0x33, 0xdf, 0x46, 0x7a, 0xdc, 0xee, 0xfa, + 0xd8, 0x60, 0xde, 0x44, 0x46, 0xa1, 0x43, 0x23, 0x37, 0xc1, 0xb1, 0xb6, 0x6e, 0x6b, 0xe7, 0x3b, + 0xb8, 0x6c, 0xb4, 0xac, 0x4b, 0x54, 0x1c, 0x6c, 0x5a, 0xb5, 0xef, 0x83, 0x72, 0x27, 0xe4, 0x6c, + 0xe7, 0x52, 0x87, 0xce, 0x13, 0xc3, 0x67, 0x4c, 0x22, 0x8b, 0xaa, 0xbb, 0xd9, 0x55, 0xfa, 0x57, + 0xd8, 0x45, 0x69, 0x42, 0xf0, 0x3e, 0xe7, 0x27, 0x41, 0xde, 0xb4, 0xf4, 0x2d, 0x9d, 0xde, 0xcf, + 0x33, 0xb7, 0x2f, 0x66, 0x1d, 0x35, 0x05, 0x6a, 0x24, 0x8b, 0xca, 0xb2, 0x2a, 0x4f, 0x81, 0x29, + 0x7d, 0x47, 0xdb, 0xc2, 0xf7, 0xea, 0x06, 0x3d, 0xd1, 0x37, 0x77, 0xeb, 0xa9, 0x7d, 0xc7, 0x67, + 0xd8, 0x77, 0x35, 0xc8, 0x8a, 0xde, 0x23, 0x89, 0x06, 0xd6, 0x21, 0x75, 0xa3, 0xa0, 0x8e, 0xe5, + 0x5e, 0x6b, 0xf4, 0x0a, 0xa1, 0x90, 0x37, 0xd1, 0x6c, 0xa5, 0x3f, 0x78, 0x7f, 0x56, 0x82, 0xc9, + 0x45, 0xf3, 0xa2, 0x41, 0x14, 0xfd, 0x36, 0x31, 0x5b, 0xb7, 0xcf, 0x21, 0x47, 0xfe, 0xda, 0xc8, + 0xd8, 0x13, 0x0d, 0xa4, 0xb6, 0x5e, 0x91, 0x11, 0x30, 0xc4, 0xb6, 0x1c, 0xc1, 0xcb, 0xfc, 0xe2, + 0xca, 0x49, 0x5f, 0xae, 0x7f, 0x2a, 0x43, 0x76, 0xd1, 0x32, 0xbb, 0xe8, 0x4d, 0x99, 0x04, 0x2e, + 0x0b, 0x6d, 0xcb, 0xec, 0x36, 0xc8, 0x6d, 0x5c, 0xc1, 0x31, 0x8e, 0x70, 0x9a, 0x72, 0x1b, 0x4c, + 0x76, 0x4d, 0x5b, 0x77, 0xbc, 0x69, 0xc4, 0xdc, 0xad, 0x8f, 0xe9, 0xdb, 0x9a, 0xd7, 0x59, 0x26, + 0xd5, 0xcf, 0xee, 0xf6, 0xda, 0x44, 0x84, 0xae, 0x5c, 0x5c, 0x31, 0x7a, 0x37, 0x92, 0xf5, 0xa4, + 0xa2, 0x17, 0x86, 0x91, 0x7c, 0x1a, 0x8f, 0xe4, 0x63, 0xfb, 0x48, 0xd8, 0x32, 0xbb, 0x23, 0xd9, + 0x64, 0x7c, 0x99, 0x8f, 0xea, 0xd3, 0x39, 0x54, 0x6f, 0x14, 0x2a, 0x33, 0x7d, 0x44, 0xdf, 0x93, + 0x05, 0x20, 0x66, 0xc6, 0x86, 0x3b, 0x01, 0x12, 0xb3, 0xb1, 0x7e, 0x21, 0x1b, 0x92, 0x65, 0x91, + 0x97, 0xe5, 0xe3, 0x23, 0xac, 0x18, 0x42, 0x3e, 0x42, 0xa2, 0x45, 0xc8, 0xed, 0xba, 0x9f, 0x99, + 0x44, 0x05, 0x49, 0x90, 0x57, 0x95, 0xfe, 0x89, 0xfe, 0x24, 0x03, 0x39, 0x92, 0xa0, 0x9c, 0x06, + 0x20, 0x03, 0x3b, 0x3d, 0x10, 0x94, 0x21, 0x43, 0x78, 0x28, 0x85, 0x68, 0xab, 0xde, 0x66, 0x9f, + 0xa9, 0xc9, 0x1c, 0x24, 0xb8, 0x7f, 0x93, 0xe1, 0x9e, 0xd0, 0x62, 0x06, 0x40, 0x28, 0xc5, 0xfd, + 0x9b, 0xbc, 0xad, 0xe2, 0x4d, 0x1a, 0x28, 0x39, 0xab, 0x06, 0x09, 0xfe, 0xdf, 0xab, 0xfe, 0xf5, + 0x5a, 0xde, 0xdf, 0x24, 0xc5, 0x9d, 0x0c, 0x13, 0xb5, 0x5c, 0x08, 0x8a, 0xc8, 0x93, 0x4c, 0xbd, + 0xc9, 0xe8, 0xd5, 0xbe, 0xda, 0x2c, 0x72, 0x6a, 0x73, 0x4b, 0x02, 0xf1, 0xa6, 0xaf, 0x3c, 0x5f, + 0xce, 0xc1, 0x54, 0xd5, 0x6c, 0x33, 0xdd, 0x09, 0x4d, 0x18, 0x3f, 0x96, 0x4b, 0x34, 0x61, 0xf4, + 0x69, 0x44, 0x28, 0xc8, 0xdd, 0xbc, 0x82, 0x88, 0x51, 0x08, 0xeb, 0x87, 0xb2, 0x00, 0x79, 0xa2, + 0xbd, 0xfb, 0xef, 0x6d, 0x8a, 0x23, 0x41, 0x44, 0xab, 0xb2, 0x3f, 0xff, 0xc3, 0xe9, 0xd8, 0x7f, + 0x85, 0x1c, 0xa9, 0x60, 0xcc, 0xee, 0x0e, 0x5f, 0x51, 0x29, 0xbe, 0xa2, 0x72, 0x7c, 0x45, 0xb3, + 0xbd, 0x15, 0x4d, 0xb2, 0x0e, 0x10, 0xa5, 0x21, 0xe9, 0xeb, 0xf8, 0x3f, 0x4e, 0x00, 0x54, 0xb5, + 0x3d, 0x7d, 0x8b, 0xee, 0x0e, 0x7f, 0xce, 0x9b, 0xff, 0xb0, 0x7d, 0xdc, 0xff, 0x16, 0x1a, 0x08, + 0x6f, 0x83, 0x09, 0x36, 0xee, 0xb1, 0x8a, 0x5c, 0xcd, 0x55, 0x24, 0xa0, 0x42, 0xcd, 0xd2, 0x07, + 0x1c, 0xd5, 0xcb, 0xcf, 0x5d, 0x31, 0x2b, 0xf5, 0x5c, 0x31, 0xdb, 0x7f, 0x0f, 0x22, 0xe2, 0xe2, + 0x59, 0xf4, 0x4e, 0x61, 0x8f, 0xfe, 0x10, 0x3f, 0xa1, 0x1a, 0x45, 0x34, 0xc1, 0x27, 0xc1, 0x84, + 0xe9, 0x6f, 0x68, 0xcb, 0x91, 0xeb, 0x60, 0x15, 0x63, 0xd3, 0x54, 0xbd, 0x9c, 0x82, 0x9b, 0x5f, + 0x42, 0x7c, 0x8c, 0xe5, 0xd0, 0xcc, 0xc9, 0x65, 0x2f, 0xe8, 0x94, 0x5b, 0x8f, 0x73, 0xba, 0xb3, + 0xbd, 0xaa, 0x1b, 0x17, 0x6c, 0xf4, 0x9f, 0xc5, 0x2c, 0xc8, 0x10, 0xfe, 0x52, 0x32, 0xfc, 0xf9, + 0x98, 0x1d, 0x75, 0x1e, 0xb5, 0x3b, 0xa3, 0xa8, 0xf4, 0xe7, 0x36, 0x02, 0xc0, 0xdb, 0x21, 0x4f, + 0x19, 0x65, 0x9d, 0xe8, 0x99, 0x48, 0xfc, 0x7c, 0x4a, 0x2a, 0xfb, 0x03, 0xbd, 0xc3, 0xc7, 0xf1, + 0x2c, 0x87, 0xe3, 0xc2, 0x81, 0x38, 0x4b, 0x1d, 0xd2, 0x33, 0x4f, 0x84, 0x09, 0x26, 0x69, 0x65, + 0x2e, 0xdc, 0x8a, 0x0b, 0x47, 0x14, 0x80, 0xfc, 0x9a, 0xb9, 0x87, 0x1b, 0x66, 0x21, 0xe3, 0x3e, + 0xbb, 0xfc, 0x35, 0xcc, 0x82, 0x84, 0x5e, 0x3e, 0x09, 0x93, 0x7e, 0xb4, 0x9f, 0xcf, 0x4a, 0x50, + 0x28, 0x59, 0x58, 0x73, 0xf0, 0x92, 0x65, 0xee, 0xd0, 0x1a, 0x89, 0x7b, 0x87, 0xfe, 0xa6, 0xb0, + 0x8b, 0x87, 0x1f, 0x85, 0xa7, 0xb7, 0xb0, 0x08, 0x2c, 0xe9, 0x22, 0xa4, 0xe4, 0x2d, 0x42, 0xa2, + 0x37, 0x0a, 0xb9, 0x7c, 0x88, 0x96, 0x92, 0x7e, 0x53, 0xfb, 0xa4, 0x04, 0xb9, 0x52, 0xc7, 0x34, + 0x70, 0xf8, 0x08, 0xd3, 0xc0, 0xb3, 0x32, 0xfd, 0x77, 0x22, 0xd0, 0xb3, 0x24, 0x51, 0x5b, 0x23, + 0x10, 0x80, 0x5b, 0xb6, 0xa0, 0x6c, 0xc5, 0x06, 0xa9, 0x58, 0xd2, 0xe9, 0x0b, 0xf4, 0xeb, 0x12, + 0x4c, 0xd1, 0xb8, 0x38, 0xc5, 0x4e, 0x07, 0x3d, 0x26, 0x10, 0x6a, 0x9f, 0x88, 0x49, 0xe8, 0xf7, + 0x84, 0x5d, 0xf4, 0xfd, 0x5a, 0xf9, 0xb4, 0x13, 0x04, 0x08, 0x4a, 0xe6, 0x31, 0x2e, 0xb6, 0x97, + 0x36, 0x90, 0xa1, 0xf4, 0x45, 0xfd, 0x17, 0x92, 0x6b, 0x00, 0x18, 0x17, 0xd6, 0x2d, 0xbc, 0xa7, + 0xe3, 0x8b, 0xe8, 0xca, 0x40, 0xd8, 0xfb, 0x83, 0x7e, 0xbc, 0x5e, 0x78, 0x11, 0x27, 0x44, 0x32, + 0x72, 0x2b, 0x6b, 0xba, 0x13, 0x64, 0x62, 0xbd, 0x78, 0x6f, 0x24, 0x96, 0x10, 0x19, 0x35, 0x9c, + 0x5d, 0x70, 0xcd, 0x26, 0x9a, 0x8b, 0xf4, 0x05, 0xfb, 0xfe, 0x09, 0x98, 0xdc, 0x30, 0xec, 0x6e, + 0x47, 0xb3, 0xb7, 0xd1, 0x77, 0x65, 0xc8, 0xd3, 0xdb, 0xc2, 0xd0, 0x8f, 0x71, 0xb1, 0x05, 0x7e, + 0x66, 0x17, 0x5b, 0x9e, 0x0b, 0x0e, 0x7d, 0xe9, 0x7f, 0x99, 0x39, 0x7a, 0x8f, 0x2c, 0x3a, 0x49, + 0xf5, 0x0a, 0x0d, 0x5d, 0x1b, 0xdf, 0xff, 0x38, 0x7b, 0x57, 0x6f, 0x39, 0xbb, 0x96, 0x7f, 0x35, + 0xf6, 0x13, 0xc4, 0xa8, 0xac, 0xd3, 0xbf, 0x54, 0xff, 0x77, 0xa4, 0xc1, 0x04, 0x4b, 0xdc, 0xb7, + 0x9d, 0xb4, 0xff, 0xfc, 0xed, 0x49, 0xc8, 0x6b, 0x96, 0xa3, 0xdb, 0x0e, 0xdb, 0x60, 0x65, 0x6f, + 0x6e, 0x77, 0x49, 0x9f, 0x36, 0xac, 0x8e, 0x17, 0x85, 0xc4, 0x4f, 0x40, 0xbf, 0x2f, 0x34, 0x7f, + 0x8c, 0xaf, 0x79, 0x32, 0xc8, 0xef, 0x1d, 0x62, 0x8d, 0xfa, 0x72, 0xb8, 0x4c, 0x2d, 0x36, 0xca, + 0x4d, 0x1a, 0xb4, 0xc2, 0x8f, 0x4f, 0xd1, 0x46, 0x6f, 0x97, 0x43, 0xeb, 0x77, 0x97, 0xb8, 0x31, + 0x82, 0x49, 0x31, 0x18, 0x23, 0xfc, 0x84, 0x98, 0xdd, 0x6a, 0x6e, 0x11, 0x56, 0x16, 0x5f, 0x84, + 0xfd, 0x1d, 0xe1, 0xdd, 0x24, 0x5f, 0x94, 0x03, 0xd6, 0x00, 0xe3, 0x6e, 0x13, 0x7a, 0xaf, 0xd0, + 0xce, 0xd0, 0xa0, 0x92, 0x0e, 0x11, 0xb6, 0xd7, 0x4d, 0xc0, 0xc4, 0xb2, 0xd6, 0xe9, 0x60, 0xeb, + 0x92, 0x3b, 0x24, 0x15, 0x3c, 0x0e, 0xd7, 0x34, 0x43, 0xdf, 0xc4, 0xb6, 0x13, 0xdf, 0x59, 0xbe, + 0x53, 0x38, 0x52, 0x2d, 0x2b, 0x63, 0xbe, 0x97, 0x7e, 0x84, 0xcc, 0x6f, 0x86, 0xac, 0x6e, 0x6c, + 0x9a, 0xac, 0xcb, 0xec, 0x5d, 0xb5, 0xf7, 0x7e, 0x26, 0x53, 0x17, 0x92, 0x51, 0x30, 0x58, 0xad, + 0x20, 0x17, 0xe9, 0xf7, 0x9c, 0xbf, 0x9b, 0x85, 0x59, 0x8f, 0x89, 0x8a, 0xd1, 0xc6, 0x0f, 0x84, + 0x97, 0x62, 0x5e, 0x90, 0x15, 0x3d, 0x0e, 0xd6, 0x5b, 0x1f, 0x42, 0x2a, 0x42, 0xa4, 0x0d, 0x80, + 0x96, 0xe6, 0xe0, 0x2d, 0xd3, 0xd2, 0xfd, 0xfe, 0xf0, 0xc9, 0x49, 0xa8, 0x95, 0xe8, 0xdf, 0x97, + 0xd4, 0x10, 0x1d, 0xe5, 0x4e, 0x98, 0xc6, 0xfe, 0xf9, 0x7b, 0x6f, 0xa9, 0x26, 0x16, 0xaf, 0x70, + 0x7e, 0xf4, 0x17, 0x42, 0xa7, 0xce, 0x44, 0xaa, 0x99, 0x0c, 0xb3, 0xe6, 0x70, 0x6d, 0x68, 0xa3, + 0xba, 0x56, 0x54, 0xeb, 0x2b, 0xc5, 0xd5, 0xd5, 0x4a, 0x75, 0xd9, 0x0f, 0xfc, 0xa2, 0xc0, 0xdc, + 0x62, 0xed, 0x5c, 0x35, 0x14, 0x99, 0x27, 0x8b, 0xd6, 0x61, 0xd2, 0x93, 0x57, 0x3f, 0x5f, 0xcc, + 0xb0, 0xcc, 0x98, 0x2f, 0x66, 0x28, 0xc9, 0x35, 0xce, 0xf4, 0x96, 0xef, 0xa0, 0x43, 0x9e, 0xd1, + 0x1f, 0x6b, 0x90, 0x23, 0x6b, 0xea, 0xe8, 0xad, 0x64, 0x1b, 0xb0, 0xdb, 0xd1, 0x5a, 0x18, 0xed, + 0x24, 0xb0, 0xc6, 0xbd, 0xab, 0x13, 0xa4, 0x7d, 0x57, 0x27, 0x90, 0x47, 0x66, 0xf5, 0x1d, 0xef, + 0xb7, 0x8e, 0xaf, 0xd2, 0x2c, 0xfc, 0x01, 0xad, 0xd8, 0xdd, 0x15, 0xba, 0xfc, 0xcf, 0xd8, 0x8c, + 0x50, 0xc9, 0x68, 0x9e, 0x92, 0x59, 0xa2, 0x62, 0xfb, 0x30, 0x71, 0x1c, 0x8d, 0xe1, 0x7a, 0xef, + 0x2c, 0xe4, 0xea, 0xdd, 0x8e, 0xee, 0xa0, 0x17, 0x4b, 0x23, 0xc1, 0x8c, 0x5e, 0x77, 0x21, 0x0f, + 0xbc, 0xee, 0x22, 0xd8, 0x75, 0xcd, 0x0a, 0xec, 0xba, 0x36, 0xf0, 0x03, 0x0e, 0xbf, 0xeb, 0x7a, + 0x1b, 0x0b, 0xde, 0x46, 0xf7, 0x6c, 0x1f, 0xdb, 0x47, 0xa4, 0xa4, 0x5a, 0x7d, 0xa2, 0x02, 0x9e, + 0x79, 0x22, 0x0b, 0x4e, 0x06, 0x90, 0x5f, 0xa8, 0x35, 0x1a, 0xb5, 0xb5, 0xc2, 0x11, 0x12, 0xd5, + 0xa6, 0xb6, 0x4e, 0x43, 0xc5, 0x54, 0xaa, 0xd5, 0xb2, 0x5a, 0x90, 0x48, 0xb8, 0xb4, 0x4a, 0x63, + 0xb5, 0x5c, 0x90, 0xf9, 0xd8, 0xe7, 0xb1, 0xe6, 0x37, 0x5f, 0x76, 0x9a, 0xea, 0x25, 0x66, 0x88, + 0x47, 0xf3, 0x93, 0xbe, 0x72, 0xfd, 0x86, 0x0c, 0xb9, 0x35, 0x6c, 0x6d, 0x61, 0xf4, 0x33, 0x09, + 0x36, 0xf9, 0x36, 0x75, 0xcb, 0xa6, 0xc1, 0xe5, 0x82, 0x4d, 0xbe, 0x70, 0x9a, 0x72, 0x1d, 0xcc, + 0xda, 0xb8, 0x65, 0x1a, 0x6d, 0x2f, 0x13, 0xed, 0x8f, 0xf8, 0x44, 0xfe, 0xde, 0x79, 0x01, 0xc8, + 0x08, 0xa3, 0x23, 0xd9, 0xa9, 0x4b, 0x02, 0x4c, 0xbf, 0x52, 0xd3, 0x07, 0xe6, 0x5b, 0xb2, 0xfb, + 0x53, 0xf7, 0x12, 0x7a, 0x91, 0xf0, 0xee, 0xeb, 0x4d, 0x90, 0x27, 0x6a, 0xea, 0x8d, 0xd1, 0xfd, + 0xfb, 0x63, 0x96, 0x47, 0x59, 0x80, 0x63, 0x36, 0xee, 0xe0, 0x96, 0x83, 0xdb, 0x6e, 0xd3, 0x55, + 0x07, 0x76, 0x0a, 0xfb, 0xb3, 0xa3, 0x3f, 0x0b, 0x03, 0x78, 0x07, 0x0f, 0xe0, 0xf5, 0x7d, 0x44, + 0xe9, 0x56, 0x28, 0xda, 0x56, 0x76, 0xab, 0x51, 0xef, 0x98, 0xfe, 0xa2, 0xb8, 0xf7, 0xee, 0x7e, + 0xdb, 0x76, 0x76, 0x3a, 0xe4, 0x1b, 0x3b, 0x60, 0xe0, 0xbd, 0x2b, 0xf3, 0x30, 0xa1, 0x19, 0x97, + 0xc8, 0xa7, 0x6c, 0x4c, 0xad, 0xbd, 0x4c, 0xe8, 0xe5, 0x3e, 0xf2, 0x77, 0x71, 0xc8, 0x3f, 0x5e, + 0x8c, 0xdd, 0xf4, 0x81, 0xff, 0xf9, 0x09, 0xc8, 0xad, 0x6b, 0xb6, 0x83, 0xd1, 0xff, 0x25, 0x8b, + 0x22, 0x7f, 0x3d, 0xcc, 0x6d, 0x9a, 0xad, 0x5d, 0x1b, 0xb7, 0xf9, 0x46, 0xd9, 0x93, 0x3a, 0x0a, + 0xcc, 0x95, 0x1b, 0xa1, 0xe0, 0x25, 0x32, 0xb2, 0xde, 0x36, 0xfc, 0xbe, 0x74, 0x12, 0x49, 0xdb, + 0x5e, 0xd7, 0x2c, 0xa7, 0xb6, 0x49, 0xd2, 0xfc, 0x48, 0xda, 0xe1, 0x44, 0x0e, 0xfa, 0x7c, 0x0c, + 0xf4, 0x13, 0xd1, 0xd0, 0x4f, 0x0a, 0x40, 0xaf, 0x14, 0x61, 0x72, 0x53, 0xef, 0x60, 0xf2, 0xc3, + 0x14, 0xf9, 0xa1, 0xdf, 0x98, 0x44, 0x64, 0xef, 0x8f, 0x49, 0x4b, 0x7a, 0x07, 0xab, 0xfe, 0x6f, + 0xde, 0x44, 0x06, 0x82, 0x89, 0xcc, 0x2a, 0xf5, 0xa7, 0x75, 0x0d, 0x2f, 0x43, 0xdb, 0xc1, 0xde, + 0xe2, 0x9b, 0xc1, 0x0e, 0xb7, 0xb4, 0x35, 0x47, 0x23, 0x60, 0xcc, 0xa8, 0xe4, 0x99, 0xf7, 0x0b, + 0x91, 0x7b, 0xfd, 0x42, 0x9e, 0x23, 0x27, 0xeb, 0x11, 0x3d, 0x66, 0x23, 0x5a, 0xd4, 0x79, 0x0f, + 0x20, 0x6a, 0x29, 0xfa, 0xef, 0x2e, 0x30, 0x2d, 0xcd, 0xc2, 0xce, 0x7a, 0xd8, 0x13, 0x23, 0xa7, + 0xf2, 0x89, 0xc4, 0x95, 0xcf, 0xae, 0x6b, 0x3b, 0x98, 0x14, 0x56, 0x72, 0xbf, 0x31, 0x17, 0xad, + 0x7d, 0xe9, 0x41, 0xff, 0x9b, 0x1b, 0x75, 0xff, 0xdb, 0xaf, 0x8e, 0xe9, 0x37, 0xc3, 0x57, 0x65, + 0x41, 0x2e, 0xed, 0x3a, 0x8f, 0xea, 0xee, 0xf7, 0x7b, 0xc2, 0x7e, 0x2e, 0xac, 0x3f, 0x8b, 0xbc, + 0x68, 0x7e, 0x4c, 0xbd, 0x6f, 0x42, 0x2d, 0x11, 0xf3, 0xa7, 0x89, 0xaa, 0xdb, 0x18, 0xee, 0x35, + 0x90, 0x7d, 0x07, 0xcb, 0x07, 0x33, 0x07, 0x37, 0xcd, 0x11, 0xed, 0x9f, 0x42, 0x3d, 0x83, 0xff, + 0xee, 0x75, 0x3c, 0x59, 0x2e, 0x56, 0x1f, 0xd9, 0x5e, 0x27, 0xa2, 0x9c, 0x51, 0xe9, 0x0b, 0x7a, + 0x89, 0xb0, 0xdb, 0x39, 0x15, 0x5b, 0xac, 0x2b, 0x61, 0x32, 0x9b, 0x4a, 0xec, 0x32, 0xd1, 0x98, + 0x62, 0xd3, 0x07, 0xec, 0x9b, 0x61, 0x57, 0xc1, 0xe2, 0x81, 0x11, 0x43, 0xaf, 0x10, 0xde, 0x8e, + 0xa2, 0xd5, 0x1e, 0xb0, 0x5e, 0x98, 0x4c, 0xde, 0x62, 0x9b, 0x55, 0xb1, 0x05, 0xa7, 0x2f, 0xf1, + 0x6f, 0xc8, 0x90, 0xa7, 0x5b, 0x90, 0xe8, 0x0d, 0x99, 0x04, 0xb7, 0xb0, 0x3b, 0xbc, 0x0b, 0xa1, + 0xff, 0x9e, 0x64, 0xcd, 0x81, 0x73, 0x35, 0xcc, 0x26, 0x72, 0x35, 0xe4, 0xcf, 0x71, 0x0a, 0xb4, + 0x23, 0x5a, 0xc7, 0x94, 0xa7, 0x93, 0x49, 0x5a, 0x58, 0x5f, 0x86, 0xd2, 0xc7, 0xfb, 0x17, 0x73, + 0x30, 0x43, 0x8b, 0x3e, 0xa7, 0xb7, 0xb7, 0xb0, 0x83, 0xde, 0x2e, 0xfd, 0xe0, 0xa0, 0xae, 0x54, + 0x61, 0xe6, 0x22, 0x61, 0x7b, 0x55, 0xbb, 0x64, 0xee, 0x3a, 0x6c, 0xe5, 0xe2, 0xc6, 0xd8, 0x75, + 0x0f, 0x5a, 0xcf, 0x79, 0xfa, 0x87, 0xca, 0xfd, 0xef, 0xca, 0x98, 0x2e, 0xf8, 0x53, 0x07, 0xae, + 0x3c, 0x31, 0xb2, 0xc2, 0x49, 0xca, 0x49, 0xc8, 0xef, 0xe9, 0xf8, 0x62, 0xa5, 0xcd, 0xac, 0x5b, + 0xf6, 0x86, 0xfe, 0x50, 0x78, 0xdf, 0x36, 0x0c, 0x37, 0xe3, 0x25, 0x5d, 0x2d, 0x14, 0xdb, 0xbd, + 0x1d, 0xc8, 0xd6, 0x18, 0xce, 0x14, 0xf3, 0x97, 0x75, 0x96, 0x12, 0x28, 0x62, 0x94, 0xe1, 0xcc, + 0x87, 0xf2, 0x88, 0x3d, 0xb1, 0x42, 0x05, 0x30, 0xe2, 0x7b, 0x3c, 0xc5, 0xe2, 0x4b, 0x0c, 0x28, + 0x3a, 0x7d, 0xc9, 0xbf, 0x5a, 0x86, 0xa9, 0x3a, 0x76, 0x96, 0x74, 0xdc, 0x69, 0xdb, 0xc8, 0x3a, + 0xb8, 0x69, 0x74, 0x33, 0xe4, 0x37, 0x09, 0xb1, 0x41, 0xe7, 0x16, 0x58, 0x36, 0xf4, 0x2a, 0x49, + 0x74, 0x47, 0x98, 0xad, 0xbe, 0x79, 0xdc, 0x8e, 0x04, 0x26, 0x31, 0x8f, 0xde, 0xf8, 0x92, 0xc7, + 0x10, 0xd8, 0x56, 0x86, 0x19, 0x76, 0xbb, 0x5f, 0xb1, 0xa3, 0x6f, 0x19, 0x68, 0x77, 0x04, 0x2d, + 0x44, 0xb9, 0x05, 0x72, 0x9a, 0x4b, 0x8d, 0x6d, 0xbd, 0xa2, 0xbe, 0x9d, 0x27, 0x29, 0x4f, 0xa5, + 0x19, 0x13, 0x84, 0x91, 0x0c, 0x14, 0xdb, 0xe3, 0x79, 0x8c, 0x61, 0x24, 0x07, 0x16, 0x9e, 0x3e, + 0x62, 0x5f, 0x92, 0xe1, 0x38, 0x63, 0xe0, 0x2c, 0xb6, 0x1c, 0xbd, 0xa5, 0x75, 0x28, 0x72, 0x0f, + 0x65, 0x46, 0x01, 0xdd, 0x0a, 0xcc, 0xee, 0x85, 0xc9, 0x32, 0x08, 0xcf, 0xf4, 0x85, 0x90, 0x63, + 0x40, 0xe5, 0x7f, 0x4c, 0x10, 0x8e, 0x8f, 0x93, 0x2a, 0x47, 0x73, 0x8c, 0xe1, 0xf8, 0x84, 0x99, + 0x48, 0x1f, 0xe2, 0x17, 0xb2, 0xd0, 0x3c, 0x41, 0xf7, 0xf9, 0x39, 0x61, 0x6c, 0x37, 0x60, 0x9a, + 0x60, 0x49, 0x7f, 0x64, 0xcb, 0x10, 0x31, 0x4a, 0xec, 0xf7, 0x3b, 0xec, 0xc2, 0x30, 0xff, 0x5f, + 0x35, 0x4c, 0x07, 0x9d, 0x03, 0x08, 0x3e, 0x85, 0x3b, 0xe9, 0x4c, 0x54, 0x27, 0x2d, 0x89, 0x75, + 0xd2, 0xaf, 0x17, 0x0e, 0x96, 0xd2, 0x9f, 0xed, 0x83, 0xab, 0x87, 0x58, 0x98, 0x8c, 0xc1, 0xa5, + 0xa7, 0xaf, 0x17, 0x2f, 0xcf, 0xf6, 0x5e, 0xe3, 0xfe, 0xa1, 0x91, 0xcc, 0xa7, 0xc2, 0xfd, 0x81, + 0xdc, 0xd3, 0x1f, 0x1c, 0xc0, 0x92, 0xbe, 0x01, 0x8e, 0xd2, 0x22, 0x4a, 0x3e, 0x5b, 0x39, 0x1a, + 0x0a, 0xa2, 0x27, 0x19, 0x7d, 0x78, 0x08, 0x25, 0x18, 0x74, 0xc7, 0x7c, 0x5c, 0x27, 0x97, 0xcc, + 0xd8, 0x4d, 0xaa, 0x20, 0x87, 0x77, 0x35, 0xfd, 0xd7, 0xb3, 0xd4, 0xda, 0xdd, 0x20, 0x77, 0xba, + 0xa1, 0xbf, 0xcc, 0x8e, 0x62, 0x44, 0xb8, 0x1b, 0xb2, 0xc4, 0xc5, 0x5d, 0x8e, 0x5c, 0xd2, 0x08, + 0x8a, 0x0c, 0x2e, 0xdc, 0xc3, 0x0f, 0x38, 0x2b, 0x47, 0x54, 0xf2, 0xa7, 0x72, 0x23, 0x1c, 0x3d, + 0xaf, 0xb5, 0x2e, 0x6c, 0x59, 0xe6, 0x2e, 0xb9, 0xfd, 0xca, 0x64, 0xd7, 0x68, 0x91, 0xeb, 0x08, + 0xf9, 0x0f, 0xca, 0xad, 0x9e, 0xe9, 0x90, 0x1b, 0x64, 0x3a, 0xac, 0x1c, 0x61, 0xc6, 0x83, 0xf2, + 0x44, 0xbf, 0xd3, 0xc9, 0xc7, 0x76, 0x3a, 0x2b, 0x47, 0xbc, 0x6e, 0x47, 0x59, 0x84, 0xc9, 0xb6, + 0xbe, 0x47, 0xb6, 0xaa, 0xc9, 0xac, 0x6b, 0xd0, 0xd1, 0xe5, 0x45, 0x7d, 0x8f, 0x6e, 0x6c, 0xaf, + 0x1c, 0x51, 0xfd, 0x3f, 0x95, 0x65, 0x98, 0x22, 0xdb, 0x02, 0x84, 0xcc, 0x64, 0xa2, 0x63, 0xc9, + 0x2b, 0x47, 0xd4, 0xe0, 0x5f, 0xd7, 0xfa, 0xc8, 0x92, 0xb3, 0x1f, 0x77, 0x79, 0xdb, 0xed, 0x99, + 0x44, 0xdb, 0xed, 0xae, 0x2c, 0xe8, 0x86, 0xfb, 0x49, 0xc8, 0xb5, 0x88, 0x84, 0x25, 0x26, 0x61, + 0xfa, 0xaa, 0xdc, 0x01, 0xd9, 0x1d, 0xcd, 0xf2, 0x26, 0xcf, 0xd7, 0x0f, 0xa6, 0xbb, 0xa6, 0x59, + 0x17, 0x5c, 0x04, 0xdd, 0xbf, 0x16, 0x26, 0x20, 0x47, 0x04, 0xe7, 0x3f, 0xa0, 0x37, 0x65, 0xa9, + 0x19, 0x52, 0x32, 0x0d, 0x77, 0xd8, 0x6f, 0x98, 0xde, 0x01, 0x99, 0x3f, 0xcc, 0x8c, 0xc6, 0x82, + 0xec, 0x7b, 0xef, 0xb9, 0x1c, 0x79, 0xef, 0x79, 0xcf, 0x05, 0xbc, 0xd9, 0xde, 0x0b, 0x78, 0x83, + 0xe5, 0x83, 0xdc, 0x60, 0x47, 0x95, 0x3f, 0x1b, 0xc2, 0x74, 0xe9, 0x15, 0x44, 0xf4, 0x0c, 0xbc, + 0xa3, 0x1b, 0xa1, 0x3a, 0x7b, 0xaf, 0x09, 0x3b, 0xa5, 0xa4, 0x46, 0xcd, 0x00, 0xf6, 0xd2, 0xef, + 0x9b, 0x7e, 0x3b, 0x0b, 0xa7, 0xe8, 0x35, 0xcf, 0x7b, 0xb8, 0x61, 0xf2, 0xf7, 0x4d, 0xa2, 0x4f, + 0x8c, 0x44, 0x69, 0xfa, 0x0c, 0x38, 0x72, 0xdf, 0x01, 0x67, 0xdf, 0x21, 0xe5, 0xec, 0x80, 0x43, + 0xca, 0xb9, 0x64, 0x2b, 0x87, 0xef, 0x0b, 0xeb, 0xcf, 0x3a, 0xaf, 0x3f, 0xb7, 0x47, 0x00, 0xd4, + 0x4f, 0x2e, 0x23, 0xb1, 0x6f, 0xde, 0xea, 0x6b, 0x4a, 0x9d, 0xd3, 0x94, 0xbb, 0x86, 0x67, 0x24, + 0x7d, 0x6d, 0xf9, 0x83, 0x2c, 0x5c, 0x16, 0x30, 0x53, 0xc5, 0x17, 0x99, 0xa2, 0x7c, 0x76, 0x24, + 0x8a, 0x92, 0x3c, 0x06, 0x42, 0xda, 0x1a, 0xf3, 0x27, 0xc2, 0x67, 0x87, 0x7a, 0x81, 0xf2, 0x65, + 0x13, 0xa1, 0x2c, 0x27, 0x21, 0x4f, 0x7b, 0x18, 0x06, 0x0d, 0x7b, 0x4b, 0xd8, 0xdd, 0x88, 0x9d, + 0x38, 0x12, 0xe5, 0x6d, 0x0c, 0xfa, 0xc3, 0xd6, 0x35, 0x1a, 0xbb, 0x96, 0x51, 0x31, 0x1c, 0x13, + 0xfd, 0xdc, 0x48, 0x14, 0xc7, 0xf7, 0x86, 0x93, 0x87, 0xf1, 0x86, 0x1b, 0x6a, 0x95, 0xc3, 0xab, + 0xc1, 0xa1, 0xac, 0x72, 0x44, 0x14, 0x9e, 0x3e, 0x7e, 0x6f, 0x91, 0xe1, 0x24, 0x9b, 0x6c, 0x2d, + 0xf0, 0x16, 0x22, 0xba, 0x6f, 0x14, 0x40, 0x1e, 0xf7, 0xcc, 0x24, 0x76, 0xcb, 0x19, 0x79, 0xe1, + 0x4f, 0x4a, 0xc5, 0xde, 0xef, 0xc0, 0x4d, 0x07, 0x7b, 0x38, 0x1c, 0x09, 0x52, 0x62, 0xd7, 0x3a, + 0x24, 0x60, 0x23, 0x7d, 0xcc, 0x7e, 0x55, 0x86, 0x3c, 0xbb, 0xde, 0x7f, 0x23, 0x15, 0x87, 0x09, + 0x3e, 0xca, 0xb3, 0xc0, 0x8e, 0x5c, 0xe2, 0x4b, 0xee, 0xd3, 0xdb, 0x8b, 0x3b, 0xa4, 0x5b, 0xec, + 0xbf, 0x25, 0xc1, 0x74, 0x1d, 0x3b, 0x25, 0xcd, 0xb2, 0x74, 0x6d, 0x6b, 0x54, 0x1e, 0xdf, 0xa2, + 0xde, 0xc3, 0xe8, 0xdb, 0x19, 0xd1, 0xf3, 0x34, 0xfe, 0x42, 0xb8, 0xc7, 0x6a, 0x44, 0x2c, 0xc1, + 0x47, 0x84, 0xce, 0xcc, 0x0c, 0xa2, 0x36, 0x06, 0x8f, 0x6d, 0x09, 0x26, 0xbc, 0xb3, 0x78, 0x37, + 0x73, 0xe7, 0x33, 0xb7, 0x9d, 0x1d, 0xef, 0x18, 0x0c, 0x79, 0xde, 0x7f, 0x06, 0x0c, 0xbd, 0x2c, + 0xa1, 0xa3, 0x7c, 0xfc, 0x41, 0xc2, 0x64, 0x6d, 0x2c, 0x89, 0x3b, 0xfc, 0x61, 0x1d, 0x1d, 0xfc, + 0xbd, 0x09, 0xb6, 0x1c, 0xb9, 0xaa, 0x39, 0xf8, 0x01, 0xf4, 0x39, 0x19, 0x26, 0xea, 0xd8, 0x71, + 0xc7, 0x5b, 0xee, 0x72, 0xd3, 0x61, 0x35, 0x5c, 0x09, 0xad, 0x78, 0x4c, 0xb1, 0x35, 0x8c, 0x7b, + 0x60, 0xaa, 0x6b, 0x99, 0x2d, 0x6c, 0xdb, 0x6c, 0xf5, 0x22, 0xec, 0xa8, 0xd6, 0x6f, 0xf4, 0x27, + 0xac, 0xcd, 0xaf, 0x7b, 0xff, 0xa8, 0xc1, 0xef, 0x49, 0xcd, 0x00, 0x4a, 0x89, 0x55, 0x70, 0xdc, + 0x66, 0x40, 0x5c, 0xe1, 0xe9, 0x03, 0xfd, 0x69, 0x19, 0x66, 0xea, 0xd8, 0xf1, 0xa5, 0x98, 0x60, + 0x93, 0x23, 0x1a, 0x5e, 0x0e, 0x4a, 0xf9, 0x60, 0x50, 0x8a, 0x5f, 0x0d, 0xc8, 0x4b, 0xd3, 0x27, + 0x36, 0xc6, 0xab, 0x01, 0xc5, 0x38, 0x18, 0xc3, 0xf1, 0xb5, 0xc7, 0xc2, 0x14, 0xe1, 0x85, 0x34, + 0xd8, 0x5f, 0xce, 0x06, 0x8d, 0xf7, 0xf3, 0x29, 0x35, 0xde, 0x3b, 0x21, 0xb7, 0xa3, 0x59, 0x17, + 0x6c, 0xd2, 0x70, 0xa7, 0x45, 0xcc, 0xf6, 0x35, 0x37, 0xbb, 0x4a, 0xff, 0xea, 0xef, 0xa7, 0x99, + 0x4b, 0xe6, 0xa7, 0xf9, 0x88, 0x94, 0x68, 0x24, 0xa4, 0x73, 0x87, 0x11, 0x36, 0xf9, 0x04, 0xe3, + 0x66, 0x4c, 0xd9, 0xe9, 0x2b, 0xc7, 0x43, 0x32, 0x4c, 0xba, 0xe3, 0x36, 0xb1, 0xc7, 0xcf, 0x1d, + 0x5c, 0x1d, 0xfa, 0x1b, 0xfa, 0x09, 0x7b, 0x60, 0x4f, 0x22, 0xa3, 0x33, 0xef, 0x13, 0xf4, 0xc0, + 0x71, 0x85, 0xa7, 0x8f, 0xc7, 0xdb, 0x28, 0x1e, 0xa4, 0x3d, 0xa0, 0xd7, 0xca, 0x20, 0x2f, 0x63, + 0x67, 0xdc, 0x56, 0xe4, 0x9b, 0x85, 0x43, 0x1c, 0x71, 0x02, 0x23, 0x3c, 0xcf, 0x2f, 0xe3, 0xd1, + 0x34, 0x20, 0xb1, 0xd8, 0x46, 0x42, 0x0c, 0xa4, 0x8f, 0xda, 0xbb, 0x28, 0x6a, 0x74, 0x73, 0xe1, + 0x67, 0x47, 0xd0, 0xab, 0x8e, 0x77, 0xe1, 0xc3, 0x13, 0x20, 0xa1, 0x71, 0x58, 0xed, 0xad, 0x5f, + 0xe1, 0x63, 0xb9, 0x8a, 0x0f, 0xdc, 0xc6, 0xbe, 0x8d, 0x5b, 0x17, 0x70, 0x1b, 0xfd, 0xd4, 0xc1, + 0xa1, 0x3b, 0x05, 0x13, 0x2d, 0x4a, 0x8d, 0x80, 0x37, 0xa9, 0x7a, 0xaf, 0x09, 0xee, 0x95, 0xe6, + 0x3b, 0x22, 0xfa, 0xfb, 0x18, 0xef, 0x95, 0x16, 0x28, 0x7e, 0x0c, 0x66, 0x0b, 0x9d, 0x65, 0x54, + 0x5a, 0xa6, 0x81, 0xfe, 0xcb, 0xc1, 0x61, 0xb9, 0x0a, 0xa6, 0xf4, 0x96, 0x69, 0x90, 0x30, 0x14, + 0xde, 0x21, 0x20, 0x3f, 0xc1, 0xfb, 0x5a, 0xde, 0x31, 0xef, 0xd7, 0xd9, 0xae, 0x79, 0x90, 0x30, + 0xac, 0x31, 0xe1, 0xb2, 0x7e, 0x58, 0xc6, 0x44, 0x9f, 0xb2, 0xd3, 0x87, 0xec, 0xc3, 0x81, 0x77, + 0x1b, 0xed, 0x0a, 0x1f, 0x15, 0xab, 0xc0, 0xc3, 0x0c, 0x67, 0xe1, 0x5a, 0x1c, 0xca, 0x70, 0x16, + 0xc3, 0xc0, 0x18, 0x6e, 0xac, 0x08, 0x70, 0x4c, 0x7d, 0x0d, 0xf8, 0x00, 0xe8, 0x8c, 0xce, 0x3c, + 0x1c, 0x12, 0x9d, 0xc3, 0x31, 0x11, 0xdf, 0xcb, 0x42, 0x64, 0x32, 0x8b, 0x07, 0xfd, 0xd7, 0x51, + 0x80, 0x73, 0xfb, 0x30, 0xfe, 0x0a, 0xd4, 0x5b, 0x21, 0xc1, 0x8d, 0xd8, 0xfb, 0x24, 0xe8, 0x52, + 0x19, 0xe3, 0x5d, 0xf1, 0x22, 0xe5, 0xa7, 0x0f, 0xe0, 0xf3, 0x64, 0x98, 0x23, 0x3e, 0x02, 0x1d, + 0xac, 0x59, 0xb4, 0xa3, 0x1c, 0x89, 0xa3, 0xfc, 0xdb, 0x84, 0x03, 0xfc, 0xf0, 0x72, 0x08, 0xf8, + 0x18, 0x09, 0x14, 0x62, 0xd1, 0x7d, 0x04, 0x59, 0x18, 0xcb, 0x36, 0x4a, 0xc1, 0x67, 0x81, 0xa9, + 0xf8, 0x68, 0xf0, 0x48, 0xe8, 0x91, 0xcb, 0x0b, 0xc3, 0x6b, 0x6c, 0x63, 0xf6, 0xc8, 0x15, 0x61, + 0x22, 0x7d, 0x4c, 0x5e, 0x7b, 0x0b, 0x5b, 0x70, 0x6e, 0x90, 0x0b, 0xe3, 0x5f, 0x91, 0xf5, 0x4f, + 0xb4, 0x7d, 0x7a, 0x24, 0x1e, 0x98, 0x07, 0x08, 0x88, 0xaf, 0x40, 0xd6, 0x32, 0x2f, 0xd2, 0xa5, + 0xad, 0x59, 0x95, 0x3c, 0xd3, 0xeb, 0x29, 0x3b, 0xbb, 0x3b, 0x06, 0x3d, 0x19, 0x3a, 0xab, 0x7a, + 0xaf, 0xca, 0x75, 0x30, 0x7b, 0x51, 0x77, 0xb6, 0x57, 0xb0, 0xd6, 0xc6, 0x96, 0x6a, 0x5e, 0x24, + 0x1e, 0x73, 0x93, 0x2a, 0x9f, 0xc8, 0xfb, 0xaf, 0x08, 0xd8, 0x97, 0xe4, 0x16, 0xf9, 0xb1, 0x1c, + 0x7f, 0x4b, 0x62, 0x79, 0x46, 0x73, 0x95, 0xbe, 0xc2, 0xbc, 0x5b, 0x86, 0x29, 0xd5, 0xbc, 0xc8, + 0x94, 0xe4, 0xff, 0x38, 0x5c, 0x1d, 0x49, 0x3c, 0xd1, 0x23, 0x92, 0xf3, 0xd9, 0x1f, 0xfb, 0x44, + 0x2f, 0xb6, 0xf8, 0xb1, 0x9c, 0x5c, 0x9a, 0x51, 0xcd, 0x8b, 0x75, 0xec, 0xd0, 0x16, 0x81, 0x9a, + 0x23, 0x72, 0xb2, 0xd6, 0x6d, 0x4a, 0x90, 0xcd, 0xc3, 0xfd, 0xf7, 0xa4, 0xbb, 0x08, 0xbe, 0x80, + 0x7c, 0x16, 0xc7, 0xbd, 0x8b, 0x30, 0x90, 0x83, 0x31, 0xc4, 0x48, 0x91, 0x61, 0x5a, 0x35, 0x2f, + 0xba, 0x43, 0xc3, 0x92, 0xde, 0xe9, 0x8c, 0x66, 0x84, 0x4c, 0x6a, 0xfc, 0x7b, 0x62, 0xf0, 0xb8, + 0x18, 0xbb, 0xf1, 0x3f, 0x80, 0x81, 0xf4, 0x61, 0x78, 0x0e, 0x6d, 0x2c, 0xde, 0x08, 0x6d, 0x8c, + 0x06, 0x87, 0x61, 0x1b, 0x84, 0xcf, 0xc6, 0xa1, 0x35, 0x88, 0x28, 0x0e, 0xc6, 0xb2, 0x73, 0x32, + 0x57, 0x22, 0xc3, 0xfc, 0x68, 0xdb, 0xc4, 0x3b, 0x92, 0xb9, 0x26, 0xb2, 0x61, 0x97, 0x63, 0x64, + 0x24, 0x68, 0x24, 0x70, 0x41, 0x14, 0xe0, 0x21, 0x7d, 0x3c, 0x3e, 0x20, 0xc3, 0x0c, 0x65, 0xe1, + 0x51, 0x62, 0x05, 0x0c, 0xd5, 0xa8, 0xc2, 0x35, 0x38, 0x9c, 0x46, 0x15, 0xc3, 0xc1, 0x58, 0x6e, + 0x05, 0x75, 0xed, 0xb8, 0x21, 0x8e, 0x8f, 0x47, 0x21, 0x38, 0xb4, 0x31, 0x36, 0xc2, 0x23, 0xe4, + 0xc3, 0x18, 0x63, 0x87, 0x74, 0x8c, 0xfc, 0x39, 0x7e, 0x2b, 0x1a, 0x25, 0x06, 0x07, 0x68, 0x0a, + 0x23, 0x84, 0x61, 0xc8, 0xa6, 0x70, 0x48, 0x48, 0x7c, 0x59, 0x06, 0xa0, 0x0c, 0xac, 0x99, 0x7b, + 0xe4, 0x32, 0x9f, 0x11, 0x74, 0x67, 0xbd, 0x6e, 0xf5, 0xf2, 0x00, 0xb7, 0xfa, 0x84, 0x21, 0x5c, + 0x92, 0xae, 0x04, 0x86, 0xa4, 0xec, 0x56, 0x72, 0xec, 0x2b, 0x81, 0xf1, 0xe5, 0xa7, 0x8f, 0xf1, + 0x17, 0xa9, 0x35, 0x17, 0x1c, 0x30, 0xfd, 0xad, 0x91, 0xa0, 0x1c, 0x9a, 0xfd, 0xcb, 0xfc, 0xec, + 0xff, 0x00, 0xd8, 0x0e, 0x6b, 0x23, 0x0e, 0x3a, 0x38, 0x9a, 0xbe, 0x8d, 0x78, 0x78, 0x07, 0x44, + 0x7f, 0x36, 0x0b, 0x47, 0x59, 0x27, 0xf2, 0x83, 0x00, 0x71, 0xc2, 0x73, 0x78, 0x5c, 0x27, 0x39, + 0x00, 0xe5, 0x51, 0x2d, 0x48, 0x25, 0x59, 0xca, 0x14, 0x60, 0x6f, 0x2c, 0xab, 0x1b, 0xf9, 0xf2, + 0x03, 0x5d, 0xcd, 0x68, 0x8b, 0x87, 0xfb, 0x1d, 0x00, 0xbc, 0xb7, 0xd6, 0x28, 0xf3, 0x6b, 0x8d, + 0x7d, 0x56, 0x26, 0x13, 0xef, 0x5c, 0x13, 0x91, 0x51, 0x76, 0xc7, 0xbe, 0x73, 0x1d, 0x5d, 0x76, + 0xfa, 0x28, 0xbd, 0x43, 0x86, 0x6c, 0xdd, 0xb4, 0x1c, 0xf4, 0xdc, 0x24, 0xad, 0x93, 0x4a, 0x3e, + 0x00, 0xc9, 0x7b, 0x57, 0x4a, 0xdc, 0x2d, 0xcd, 0x37, 0xc7, 0x1f, 0x75, 0xd6, 0x1c, 0x8d, 0x78, + 0x75, 0xbb, 0xe5, 0x87, 0xae, 0x6b, 0x4e, 0x1a, 0x4f, 0x87, 0xca, 0xaf, 0x1e, 0x7d, 0x00, 0x23, + 0xb5, 0x78, 0x3a, 0x91, 0x25, 0xa7, 0x8f, 0xdb, 0xc3, 0x47, 0x99, 0x6f, 0xeb, 0x92, 0xde, 0xc1, + 0xe8, 0xb9, 0xd4, 0x65, 0xa4, 0xaa, 0xed, 0x60, 0xf1, 0x23, 0x31, 0xb1, 0xae, 0xad, 0x24, 0xbe, + 0xac, 0x1c, 0xc4, 0x97, 0x4d, 0xda, 0xa0, 0xe8, 0x01, 0x74, 0xca, 0xd2, 0xb8, 0x1b, 0x54, 0x4c, + 0xd9, 0x63, 0x89, 0xd3, 0x79, 0xac, 0x8e, 0x1d, 0x6a, 0x54, 0xd6, 0xbc, 0x1b, 0x58, 0x7e, 0x7a, + 0x24, 0x11, 0x3b, 0xfd, 0x0b, 0x5e, 0xe4, 0x9e, 0x0b, 0x5e, 0xde, 0x1d, 0x06, 0x67, 0x8d, 0x07, + 0xe7, 0xc7, 0xa3, 0x05, 0xc4, 0x33, 0x39, 0x12, 0x98, 0xde, 0xec, 0xc3, 0xb4, 0xce, 0xc1, 0x74, + 0xc7, 0x90, 0x5c, 0xa4, 0x0f, 0xd8, 0xaf, 0xe4, 0xe0, 0x28, 0x9d, 0xf4, 0x17, 0x8d, 0x36, 0x8b, + 0xb0, 0xfa, 0x06, 0xe9, 0x90, 0x37, 0xdb, 0xf6, 0x87, 0x60, 0xe5, 0x62, 0x39, 0xe7, 0x7a, 0x6f, + 0xc7, 0x5f, 0xa0, 0xe1, 0x5c, 0xdd, 0x4e, 0x94, 0xec, 0xb4, 0x89, 0xdf, 0x90, 0xef, 0xff, 0xc7, + 0xdf, 0x65, 0x34, 0x21, 0x7e, 0x97, 0xd1, 0x9f, 0x26, 0x5b, 0xb7, 0x23, 0x45, 0xf7, 0x08, 0x3c, + 0x65, 0xdb, 0x29, 0xc1, 0x8a, 0x9e, 0x00, 0x77, 0x3f, 0x1c, 0xee, 0x64, 0x41, 0x04, 0x91, 0x21, + 0xdd, 0xc9, 0x08, 0x81, 0xc3, 0x74, 0x27, 0x1b, 0xc4, 0xc0, 0x18, 0x6e, 0xb5, 0xcf, 0xb1, 0xdd, + 0x7c, 0xd2, 0x6e, 0xd0, 0x5f, 0x4b, 0xa9, 0x8f, 0xd2, 0xdf, 0xc9, 0x24, 0xf2, 0x7f, 0x26, 0x7c, + 0xc5, 0x0f, 0xd3, 0x49, 0x3c, 0x9a, 0xe3, 0xc8, 0x8d, 0x61, 0xdd, 0x48, 0x22, 0xbe, 0xe8, 0xe7, + 0xf4, 0xb6, 0xb3, 0x3d, 0xa2, 0x13, 0x1d, 0x17, 0x5d, 0x5a, 0xde, 0xf5, 0xc8, 0xe4, 0x05, 0xfd, + 0x7b, 0x26, 0x51, 0x08, 0x29, 0x5f, 0x24, 0x84, 0xad, 0x08, 0x11, 0x27, 0x08, 0xfc, 0x14, 0x4b, + 0x6f, 0x8c, 0x1a, 0x7d, 0x56, 0x6f, 0x63, 0xf3, 0x51, 0xa8, 0xd1, 0x84, 0xaf, 0xd1, 0x69, 0x74, + 0x1c, 0xb9, 0x1f, 0x52, 0x8d, 0xf6, 0x45, 0x32, 0x22, 0x8d, 0x8e, 0xa5, 0x97, 0xbe, 0x8c, 0x5f, + 0x36, 0xc3, 0x26, 0x52, 0xab, 0xba, 0x71, 0x01, 0xfd, 0x4b, 0xde, 0xbb, 0x98, 0xf9, 0x9c, 0xee, + 0x6c, 0xb3, 0x58, 0x30, 0x7f, 0x20, 0x7c, 0x37, 0xca, 0x10, 0xf1, 0x5e, 0xf8, 0x70, 0x52, 0xb9, + 0x7d, 0xe1, 0xa4, 0x8a, 0x30, 0xab, 0x1b, 0x0e, 0xb6, 0x0c, 0xad, 0xb3, 0xd4, 0xd1, 0xb6, 0xec, + 0x53, 0x13, 0x7d, 0x2f, 0xaf, 0xab, 0x84, 0xf2, 0xa8, 0xfc, 0x1f, 0xe1, 0xeb, 0x2b, 0x27, 0xf9, + 0xeb, 0x2b, 0x23, 0xa2, 0x5f, 0x4d, 0x45, 0x47, 0xbf, 0xf2, 0xa3, 0x5b, 0xc1, 0xe0, 0xe0, 0xd8, + 0xa2, 0xb6, 0x71, 0xc2, 0x70, 0x7f, 0x37, 0x0b, 0x46, 0x61, 0xf3, 0x43, 0x3f, 0xbe, 0x52, 0x4e, + 0xb4, 0xba, 0xe7, 0x2a, 0xc2, 0x7c, 0xaf, 0x12, 0x24, 0xb6, 0x50, 0xc3, 0x95, 0x97, 0x7b, 0x2a, + 0xef, 0x9b, 0x3c, 0x59, 0x01, 0x93, 0x27, 0xac, 0x54, 0x39, 0x31, 0xa5, 0x4a, 0xb2, 0x58, 0x28, + 0x52, 0xdb, 0x31, 0x9c, 0x46, 0xca, 0xc1, 0x31, 0x2f, 0xda, 0x6d, 0xb7, 0x8b, 0x35, 0x4b, 0x33, + 0x5a, 0x18, 0x7d, 0x58, 0x1a, 0x85, 0xd9, 0xbb, 0x04, 0x93, 0x7a, 0xcb, 0x34, 0xea, 0xfa, 0x33, + 0xbd, 0xcb, 0xe5, 0xe2, 0x83, 0xac, 0x13, 0x89, 0x54, 0xd8, 0x1f, 0xaa, 0xff, 0xaf, 0x52, 0x81, + 0xa9, 0x96, 0x66, 0xb5, 0x69, 0x10, 0xbe, 0x5c, 0xcf, 0x45, 0x4e, 0x91, 0x84, 0x4a, 0xde, 0x2f, + 0x6a, 0xf0, 0xb7, 0x52, 0xe3, 0x85, 0x98, 0xef, 0x89, 0xe6, 0x11, 0x49, 0x6c, 0x31, 0xf8, 0x89, + 0x93, 0xb9, 0x2b, 0x1d, 0x0b, 0x77, 0xc8, 0x1d, 0xf4, 0xb4, 0x87, 0x98, 0x52, 0x83, 0x84, 0xa4, + 0xcb, 0x03, 0xa4, 0xa8, 0x7d, 0x68, 0x8c, 0x7b, 0x79, 0x40, 0x88, 0x8b, 0xf4, 0x35, 0xf3, 0xad, + 0x79, 0x98, 0xa5, 0xbd, 0x1a, 0x13, 0x27, 0x7a, 0x1e, 0xb9, 0x42, 0xda, 0xb9, 0x17, 0x5f, 0x42, + 0xf5, 0x83, 0x8f, 0xc9, 0x05, 0x90, 0x2f, 0xf8, 0x01, 0x07, 0xdd, 0xc7, 0xa4, 0xfb, 0xf6, 0x1e, + 0x5f, 0xf3, 0x94, 0xa7, 0x71, 0xef, 0xdb, 0xc7, 0x17, 0x9f, 0x3e, 0x3e, 0xbf, 0x26, 0x83, 0x5c, + 0x6c, 0xb7, 0x51, 0xeb, 0xe0, 0x50, 0x5c, 0x03, 0xd3, 0x5e, 0x9b, 0x09, 0x62, 0x40, 0x86, 0x93, + 0x92, 0x2e, 0x82, 0xfa, 0xb2, 0x29, 0xb6, 0xc7, 0xbe, 0xab, 0x10, 0x53, 0x76, 0xfa, 0xa0, 0xfc, + 0xd6, 0x04, 0x6b, 0x34, 0x0b, 0xa6, 0x79, 0x81, 0x1c, 0x95, 0x79, 0xae, 0x0c, 0xb9, 0x25, 0xec, + 0xb4, 0xb6, 0x47, 0xd4, 0x66, 0x76, 0xad, 0x8e, 0xd7, 0x66, 0xf6, 0xdd, 0x87, 0x3f, 0xd8, 0x86, + 0xf5, 0xd8, 0x9a, 0x27, 0x2c, 0x8d, 0x3b, 0xba, 0x73, 0x6c, 0xe9, 0xe9, 0x83, 0xf3, 0xef, 0x32, + 0xcc, 0xf9, 0x2b, 0x5c, 0x14, 0x93, 0x5f, 0xc9, 0x3c, 0xda, 0xd6, 0x3b, 0xd1, 0x67, 0x93, 0x85, + 0x48, 0xf3, 0x65, 0xca, 0xd7, 0x2c, 0xe5, 0x85, 0xc5, 0x04, 0xc1, 0xd3, 0xc4, 0x18, 0x1c, 0xc3, + 0x0c, 0x5e, 0x86, 0x49, 0xc2, 0xd0, 0xa2, 0xbe, 0x47, 0x5c, 0x07, 0xb9, 0x85, 0xc6, 0x67, 0x8d, + 0x64, 0xa1, 0xf1, 0x0e, 0x7e, 0xa1, 0x51, 0x30, 0xe2, 0xb1, 0xb7, 0xce, 0x98, 0xd0, 0x97, 0xc6, + 0xfd, 0x7f, 0xe4, 0xcb, 0x8c, 0x09, 0x7c, 0x69, 0x06, 0x94, 0x9f, 0x3e, 0xa2, 0xaf, 0xfc, 0x4f, + 0xac, 0xb3, 0xf5, 0x36, 0x54, 0xd1, 0xff, 0x3c, 0x06, 0xd9, 0xb3, 0xee, 0xc3, 0xff, 0x0e, 0x6e, + 0xc4, 0x7a, 0xd1, 0x08, 0x82, 0x33, 0x3c, 0x1d, 0xb2, 0x2e, 0x7d, 0x36, 0x6d, 0xb9, 0x51, 0x6c, + 0x77, 0xd7, 0x65, 0x44, 0x25, 0xff, 0x29, 0x27, 0x21, 0x6f, 0x9b, 0xbb, 0x56, 0xcb, 0x35, 0x9f, + 0x5d, 0x8d, 0x61, 0x6f, 0x49, 0x83, 0x92, 0x72, 0xa4, 0xe7, 0x47, 0xe7, 0x32, 0x1a, 0xba, 0x20, + 0x49, 0xe6, 0x2e, 0x48, 0x4a, 0xb0, 0x7f, 0x20, 0xc0, 0x5b, 0xfa, 0x1a, 0xf1, 0xd7, 0xe4, 0xae, + 0xc0, 0xf6, 0xa8, 0x60, 0x8f, 0x10, 0xcb, 0x41, 0xd5, 0x21, 0xa9, 0xc3, 0x37, 0x2f, 0x5a, 0x3f, + 0x0e, 0xfc, 0x58, 0x1d, 0xbe, 0x05, 0x78, 0x18, 0xcb, 0x29, 0xf5, 0x3c, 0x73, 0x52, 0xbd, 0x6f, + 0x94, 0xe8, 0x66, 0x39, 0xa5, 0x3f, 0x10, 0x3a, 0x23, 0x74, 0x5e, 0x1d, 0x1a, 0x9d, 0x43, 0x72, + 0x5f, 0xfd, 0x88, 0x4c, 0x22, 0x61, 0x7a, 0x46, 0x8e, 0xf8, 0x45, 0x47, 0x89, 0x21, 0x72, 0xc7, + 0x60, 0x2e, 0x0e, 0xf4, 0xec, 0xf0, 0xa1, 0xc1, 0x79, 0xd1, 0x85, 0xf8, 0x1f, 0x77, 0x68, 0x70, + 0x51, 0x46, 0xd2, 0x07, 0xf2, 0x35, 0xf4, 0x62, 0xb1, 0x62, 0xcb, 0xd1, 0xf7, 0x46, 0xdc, 0xd2, + 0xf8, 0xe1, 0x25, 0x61, 0x34, 0xe0, 0x7d, 0x12, 0xa2, 0x1c, 0x8e, 0x3b, 0x1a, 0xb0, 0x18, 0x1b, + 0xe9, 0xc3, 0xf4, 0x77, 0x79, 0x57, 0x7a, 0x6c, 0x6d, 0xe6, 0xb5, 0x6c, 0x35, 0x00, 0x1f, 0x1c, + 0xad, 0x33, 0x30, 0x13, 0x9a, 0xfa, 0x7b, 0x17, 0xd6, 0x70, 0x69, 0x49, 0x0f, 0xba, 0xfb, 0x22, + 0x1b, 0xf9, 0xc2, 0x40, 0x82, 0x05, 0x5f, 0x11, 0x26, 0xc6, 0x72, 0x1f, 0x9c, 0x37, 0x86, 0x8d, + 0x09, 0xab, 0x3f, 0x08, 0x63, 0x55, 0xe3, 0xb1, 0xba, 0x4d, 0x44, 0x4c, 0x62, 0x63, 0x9a, 0xd0, + 0xbc, 0xf1, 0x2d, 0x3e, 0x5c, 0x2a, 0x07, 0xd7, 0xd3, 0x87, 0xe6, 0x23, 0x7d, 0xc4, 0x5e, 0x4c, + 0xbb, 0xc3, 0x3a, 0x35, 0xd9, 0x47, 0xd3, 0x1d, 0xb2, 0xd9, 0x80, 0xcc, 0xcd, 0x06, 0x12, 0xfa, + 0xdb, 0x07, 0x6e, 0xa4, 0x1e, 0x73, 0x83, 0x20, 0xca, 0x8e, 0xd8, 0xdf, 0x7e, 0x20, 0x07, 0xe9, + 0x83, 0xf3, 0x4f, 0x32, 0xc0, 0xb2, 0x65, 0xee, 0x76, 0x6b, 0x56, 0x1b, 0x5b, 0xe8, 0x6f, 0x83, + 0x09, 0xc0, 0x0b, 0x46, 0x30, 0x01, 0x58, 0x07, 0xd8, 0xf2, 0x89, 0x33, 0x0d, 0xbf, 0x45, 0xcc, + 0xdc, 0x0f, 0x98, 0x52, 0x43, 0x34, 0xf8, 0x2b, 0x67, 0x7f, 0x82, 0xc7, 0x38, 0xae, 0xcf, 0x0a, + 0xc8, 0x8d, 0x72, 0x02, 0xf0, 0x36, 0x1f, 0xeb, 0x06, 0x87, 0xf5, 0xdd, 0x07, 0xe0, 0x24, 0x7d, + 0xcc, 0xff, 0x79, 0x02, 0xa6, 0xe9, 0x76, 0x1d, 0x95, 0xe9, 0x3f, 0x04, 0xa0, 0xff, 0xd6, 0x08, + 0x40, 0xdf, 0x80, 0x19, 0x33, 0xa0, 0x4e, 0xfb, 0xd4, 0xf0, 0x02, 0x4c, 0x2c, 0xec, 0x21, 0xbe, + 0x54, 0x8e, 0x0c, 0xfa, 0x60, 0x18, 0x79, 0x95, 0x47, 0xfe, 0x8e, 0x18, 0x79, 0x87, 0x28, 0x8e, + 0x12, 0xfa, 0xb7, 0xfb, 0xd0, 0x6f, 0x70, 0xd0, 0x17, 0x0f, 0xc2, 0xca, 0x18, 0xc2, 0xed, 0xcb, + 0x90, 0x25, 0xa7, 0xe3, 0x7e, 0x3b, 0xc5, 0xf9, 0xfd, 0x29, 0x98, 0x20, 0x4d, 0xd6, 0x9f, 0x77, + 0x78, 0xaf, 0xee, 0x17, 0x6d, 0xd3, 0xc1, 0x96, 0xef, 0xb1, 0xe0, 0xbd, 0xba, 0x3c, 0x78, 0x5e, + 0xc9, 0xf6, 0xa9, 0x3c, 0xdd, 0x88, 0xf4, 0x13, 0x86, 0x9e, 0x94, 0x84, 0x25, 0x3e, 0xb2, 0xf3, + 0x72, 0xc3, 0x4c, 0x4a, 0x06, 0x30, 0x92, 0x3e, 0xf0, 0x7f, 0x99, 0x85, 0x53, 0x74, 0x55, 0x69, + 0xc9, 0x32, 0x77, 0x7a, 0x6e, 0xb7, 0xd2, 0x0f, 0xae, 0x0b, 0xd7, 0xc3, 0x9c, 0xc3, 0xf9, 0x63, + 0x33, 0x9d, 0xe8, 0x49, 0x45, 0x7f, 0x16, 0xf6, 0xa9, 0x78, 0x06, 0x8f, 0xe4, 0x42, 0x8c, 0x00, + 0xa3, 0x78, 0x4f, 0xbc, 0x50, 0x2f, 0xc8, 0x68, 0x68, 0x91, 0x4a, 0x1e, 0x6a, 0xcd, 0xd2, 0xd7, + 0xa9, 0x9c, 0x88, 0x4e, 0xbd, 0xc7, 0xd7, 0xa9, 0x9f, 0xe2, 0x74, 0x6a, 0xf9, 0xe0, 0x22, 0x49, + 0x5f, 0xb7, 0x5e, 0xe1, 0x6f, 0x0c, 0xf9, 0xdb, 0x76, 0x3b, 0x29, 0x6c, 0xd6, 0x85, 0xfd, 0x91, + 0xb2, 0x9c, 0x3f, 0x12, 0x7f, 0x1f, 0x45, 0x82, 0x99, 0x30, 0xcf, 0x75, 0x84, 0x2e, 0xcd, 0x81, + 0xa4, 0x7b, 0xdc, 0x49, 0x7a, 0x7b, 0xa8, 0xb9, 0x6e, 0x6c, 0x41, 0x63, 0x58, 0x5b, 0x9a, 0x83, + 0xfc, 0x92, 0xde, 0x71, 0xb0, 0x85, 0xbe, 0xc8, 0x66, 0xba, 0xaf, 0x48, 0x71, 0x00, 0x58, 0x84, + 0xfc, 0x26, 0x29, 0x8d, 0x99, 0xcc, 0x37, 0x89, 0xb5, 0x1e, 0xca, 0xa1, 0xca, 0xfe, 0x4d, 0x1a, + 0x9d, 0xaf, 0x87, 0xcc, 0xc8, 0xa6, 0xc8, 0x09, 0xa2, 0xf3, 0x0d, 0x66, 0x61, 0x2c, 0x17, 0x53, + 0xe5, 0x55, 0xbc, 0xe3, 0x8e, 0xf1, 0x17, 0xd2, 0x43, 0xb8, 0x00, 0xb2, 0xde, 0xb6, 0x49, 0xe7, + 0x38, 0xa5, 0xba, 0x8f, 0x49, 0x7d, 0x85, 0x7a, 0x45, 0x45, 0x59, 0x1e, 0xb7, 0xaf, 0x90, 0x10, + 0x17, 0xe9, 0x63, 0xf6, 0x1d, 0xe2, 0x28, 0xda, 0xed, 0x68, 0x2d, 0xec, 0x72, 0x9f, 0x1a, 0x6a, + 0xb4, 0x27, 0xcb, 0x7a, 0x3d, 0x59, 0xa8, 0x9d, 0xe6, 0x0e, 0xd0, 0x4e, 0x87, 0x5d, 0x86, 0xf4, + 0x65, 0x4e, 0x2a, 0x7e, 0x68, 0xcb, 0x90, 0xb1, 0x6c, 0x8c, 0xe1, 0xda, 0x51, 0xef, 0x20, 0xed, + 0x58, 0x5b, 0xeb, 0xb0, 0x9b, 0x34, 0x4c, 0x58, 0x23, 0x3b, 0x34, 0x3b, 0xcc, 0x26, 0x4d, 0x34, + 0x0f, 0x63, 0x40, 0x6b, 0x8e, 0xa1, 0xf5, 0x19, 0x36, 0x8c, 0xa6, 0xbc, 0x4f, 0x6a, 0x9b, 0x96, + 0x93, 0x6c, 0x9f, 0xd4, 0xe5, 0x4e, 0x25, 0xff, 0x25, 0x3d, 0x78, 0xc5, 0x9f, 0xab, 0x1e, 0xd5, + 0xf0, 0x99, 0xe0, 0xe0, 0xd5, 0x20, 0x06, 0xd2, 0x87, 0xf7, 0x8d, 0x87, 0x34, 0x78, 0x0e, 0xdb, + 0x1c, 0x59, 0x1b, 0x18, 0xd9, 0xd0, 0x39, 0x4c, 0x73, 0x8c, 0xe6, 0x21, 0x7d, 0xbc, 0xbe, 0x19, + 0x1a, 0x38, 0x5f, 0x3f, 0xc6, 0x81, 0xd3, 0x6b, 0x99, 0xb9, 0x21, 0x5b, 0xe6, 0xb0, 0xfb, 0x3f, + 0x4c, 0xd6, 0xa3, 0x1b, 0x30, 0x87, 0xd9, 0xff, 0x89, 0x61, 0x22, 0x7d, 0xc4, 0xdf, 0x20, 0x43, + 0xae, 0x3e, 0xfe, 0xf1, 0x72, 0xd8, 0xb9, 0x08, 0x91, 0x55, 0x7d, 0x64, 0xc3, 0xe5, 0x30, 0x73, + 0x91, 0x48, 0x16, 0xc6, 0x10, 0x78, 0xff, 0x28, 0xcc, 0x90, 0x25, 0x11, 0x6f, 0x9b, 0xf5, 0x9b, + 0x6c, 0xd4, 0x7c, 0x24, 0xc5, 0xb6, 0x7a, 0x0f, 0x4c, 0x7a, 0xfb, 0x77, 0x6c, 0xe4, 0x9c, 0x17, + 0x6b, 0x9f, 0x1e, 0x97, 0xaa, 0xff, 0xff, 0x81, 0x9c, 0x21, 0x46, 0xbe, 0x57, 0x3b, 0xac, 0x33, + 0xc4, 0xa1, 0xee, 0xd7, 0xfe, 0x69, 0x30, 0xa2, 0xfe, 0x97, 0xf4, 0x30, 0xef, 0xdd, 0xc7, 0xcd, + 0xf6, 0xd9, 0xc7, 0xfd, 0x70, 0x18, 0xcb, 0x3a, 0x8f, 0xe5, 0x9d, 0xa2, 0x22, 0x1c, 0xe1, 0x58, + 0xfb, 0x0e, 0x1f, 0xce, 0xb3, 0x1c, 0x9c, 0x0b, 0x07, 0xe2, 0x65, 0x0c, 0x07, 0x1f, 0xb3, 0xc1, + 0x98, 0xfb, 0xd1, 0x14, 0xdb, 0x71, 0xcf, 0xa9, 0x8a, 0xec, 0xbe, 0x53, 0x15, 0x5c, 0x4b, 0xcf, + 0x1d, 0xb0, 0xa5, 0x7f, 0x34, 0xac, 0x1d, 0x0d, 0x5e, 0x3b, 0x9e, 0x2e, 0x8e, 0xc8, 0xe8, 0x46, + 0xe6, 0x77, 0xfa, 0xea, 0x71, 0x8e, 0x53, 0x8f, 0xd2, 0xc1, 0x98, 0x49, 0x5f, 0x3f, 0xfe, 0xc8, + 0x9b, 0xd0, 0x1e, 0x72, 0x7b, 0x1f, 0x76, 0xab, 0x98, 0x13, 0xe2, 0xc8, 0x46, 0xee, 0x61, 0xb6, + 0x8a, 0x07, 0x71, 0x32, 0x86, 0x58, 0x6c, 0xb3, 0x30, 0x4d, 0x78, 0x3a, 0xa7, 0xb7, 0xb7, 0xb0, + 0x83, 0x5e, 0x49, 0x7d, 0x14, 0xbd, 0xc8, 0x97, 0x23, 0x0a, 0x4f, 0x14, 0x75, 0xde, 0x35, 0xa9, + 0x47, 0x07, 0x65, 0x72, 0x3e, 0xc4, 0xe0, 0xb8, 0x23, 0x28, 0x0e, 0xe4, 0x20, 0x7d, 0xc8, 0x3e, + 0x48, 0xdd, 0x6d, 0x56, 0xb5, 0x4b, 0xe6, 0xae, 0x83, 0x1e, 0x1c, 0x41, 0x07, 0xbd, 0x00, 0xf9, + 0x0e, 0xa1, 0xc6, 0x8e, 0x65, 0xc4, 0x4f, 0x77, 0x98, 0x08, 0x68, 0xf9, 0x2a, 0xfb, 0x33, 0xe9, + 0xd9, 0x8c, 0x40, 0x8e, 0x94, 0xce, 0xb8, 0xcf, 0x66, 0x0c, 0x28, 0x7f, 0x2c, 0x77, 0xec, 0x4c, + 0xba, 0xa5, 0xeb, 0x3b, 0xba, 0x33, 0xa2, 0x08, 0x0e, 0x1d, 0x97, 0x96, 0x17, 0xc1, 0x81, 0xbc, + 0x24, 0x3d, 0x31, 0x1a, 0x92, 0x8a, 0xfb, 0xfb, 0xb8, 0x4f, 0x8c, 0xc6, 0x17, 0x9f, 0x3e, 0x26, + 0xbf, 0x41, 0x5b, 0xd6, 0x59, 0xea, 0x7c, 0x9b, 0xa2, 0x5f, 0xef, 0xd0, 0x8d, 0x85, 0xb2, 0x76, + 0x78, 0x8d, 0xa5, 0x6f, 0xf9, 0xe9, 0x03, 0xf3, 0xdf, 0x7f, 0x14, 0x72, 0x8b, 0xf8, 0xfc, 0xee, + 0x16, 0xba, 0x03, 0x26, 0x1b, 0x16, 0xc6, 0x15, 0x63, 0xd3, 0x74, 0xa5, 0xeb, 0xb8, 0xcf, 0x1e, + 0x24, 0xec, 0xcd, 0xc5, 0x63, 0x1b, 0x6b, 0xed, 0xe0, 0xfc, 0x99, 0xf7, 0x8a, 0x5e, 0x24, 0x41, + 0xb6, 0xee, 0x68, 0x0e, 0x9a, 0xf2, 0xb1, 0x45, 0x0f, 0x86, 0xb1, 0xb8, 0x83, 0xc7, 0xe2, 0x7a, + 0x4e, 0x16, 0x84, 0x83, 0x79, 0xf7, 0xff, 0x08, 0x00, 0x10, 0x4c, 0xde, 0x6f, 0x9b, 0x86, 0x9b, + 0xc3, 0x3b, 0x02, 0xe9, 0xbd, 0xa3, 0x97, 0xfb, 0xe2, 0xbe, 0x8b, 0x13, 0xf7, 0xe3, 0xc5, 0x8a, + 0x18, 0xc3, 0x4a, 0x9b, 0x04, 0x53, 0xae, 0x68, 0x57, 0xb0, 0xd6, 0xb6, 0xd1, 0x8f, 0x04, 0xca, + 0x1f, 0x21, 0x66, 0xf4, 0x5e, 0xe1, 0x60, 0x9c, 0xb4, 0x56, 0x3e, 0xf1, 0x68, 0x8f, 0x0e, 0x6f, + 0xf3, 0x5f, 0xe2, 0x83, 0x91, 0xdc, 0x0c, 0x59, 0xdd, 0xd8, 0x34, 0x99, 0x7f, 0xe1, 0x95, 0x11, + 0xb4, 0x5d, 0x9d, 0x50, 0x49, 0x46, 0xc1, 0x48, 0x9d, 0xf1, 0x6c, 0x8d, 0xe5, 0xd2, 0xbb, 0xac, + 0x5b, 0x3a, 0xfa, 0xff, 0x0f, 0x14, 0xb6, 0xa2, 0x40, 0xb6, 0xab, 0x39, 0xdb, 0xac, 0x68, 0xf2, + 0xec, 0xda, 0xc8, 0xbb, 0x86, 0x66, 0x98, 0xc6, 0xa5, 0x1d, 0xfd, 0x99, 0xfe, 0xdd, 0xba, 0x5c, + 0x9a, 0xcb, 0xf9, 0x16, 0x36, 0xb0, 0xa5, 0x39, 0xb8, 0xbe, 0xb7, 0x45, 0xe6, 0x58, 0x93, 0x6a, + 0x38, 0x29, 0xb1, 0xfe, 0xbb, 0x1c, 0x47, 0xeb, 0xff, 0xa6, 0xde, 0xc1, 0x24, 0x52, 0x13, 0xd3, + 0x7f, 0xef, 0x3d, 0x91, 0xfe, 0xf7, 0x29, 0x22, 0x7d, 0x34, 0xbe, 0x2b, 0xc1, 0x4c, 0xdd, 0x55, + 0xb8, 0xfa, 0xee, 0xce, 0x8e, 0x66, 0x5d, 0x42, 0xd7, 0x06, 0xa8, 0x84, 0x54, 0x33, 0xc3, 0xfb, + 0xa5, 0x7c, 0x44, 0xf8, 0x5a, 0x69, 0xd6, 0xb4, 0x43, 0x25, 0x24, 0x6e, 0x07, 0x4f, 0x84, 0x9c, + 0xab, 0xde, 0x9e, 0xc7, 0x65, 0x6c, 0x43, 0xa0, 0x39, 0x05, 0x23, 0x5a, 0x0d, 0xe4, 0x6d, 0x0c, + 0xd1, 0x34, 0x24, 0x38, 0x5a, 0x77, 0xb4, 0xd6, 0x85, 0x65, 0xd3, 0x32, 0x77, 0x1d, 0xdd, 0xc0, + 0x36, 0x7a, 0x4c, 0x80, 0x80, 0xa7, 0xff, 0x99, 0x40, 0xff, 0xd1, 0xf7, 0x33, 0xa2, 0xa3, 0xa8, + 0xdf, 0xad, 0x86, 0xc9, 0x47, 0x04, 0xa8, 0x12, 0x1b, 0x17, 0x45, 0x28, 0xa6, 0x2f, 0xb4, 0xd7, + 0xcb, 0x50, 0x28, 0x3f, 0xd0, 0x35, 0x2d, 0x67, 0xd5, 0x6c, 0x69, 0x1d, 0xdb, 0x31, 0x2d, 0x8c, + 0x6a, 0xb1, 0x52, 0x73, 0x7b, 0x98, 0xb6, 0xd9, 0x0a, 0x06, 0x47, 0xf6, 0x16, 0x56, 0x3b, 0x99, + 0xd7, 0xf1, 0x0f, 0x0a, 0xef, 0x32, 0x52, 0xa9, 0xf4, 0x72, 0x14, 0xa1, 0xe7, 0xfd, 0xba, 0xb4, + 0x64, 0x87, 0x25, 0xc4, 0x76, 0x1e, 0x85, 0x98, 0x1a, 0xc3, 0x52, 0xb9, 0x04, 0xb3, 0xf5, 0xdd, + 0xf3, 0x3e, 0x11, 0x3b, 0x6c, 0x84, 0xbc, 0x4a, 0x38, 0x4a, 0x05, 0x53, 0xbc, 0x30, 0xa1, 0x08, + 0xf9, 0x5e, 0x07, 0xb3, 0x76, 0x38, 0x1b, 0xc3, 0x9b, 0x4f, 0x14, 0x8c, 0x4e, 0x31, 0xb8, 0xd4, + 0xf4, 0x05, 0xf8, 0x4e, 0x09, 0x66, 0x6b, 0x5d, 0x6c, 0xe0, 0x36, 0xf5, 0x82, 0xe4, 0x04, 0xf8, + 0xa2, 0x84, 0x02, 0xe4, 0x08, 0x45, 0x08, 0x30, 0xf0, 0x58, 0x5e, 0xf4, 0x84, 0x17, 0x24, 0x24, + 0x12, 0x5c, 0x5c, 0x69, 0xe9, 0x0b, 0xee, 0x0b, 0x12, 0x4c, 0xab, 0xbb, 0xc6, 0xba, 0x65, 0xba, + 0xa3, 0xb1, 0x85, 0xee, 0x0c, 0x3a, 0x88, 0x9b, 0xe0, 0x58, 0x7b, 0xd7, 0x22, 0xeb, 0x4f, 0x15, + 0xa3, 0x8e, 0x5b, 0xa6, 0xd1, 0xb6, 0x49, 0x3d, 0x72, 0xea, 0xfe, 0x0f, 0xb7, 0x67, 0x9f, 0xfb, + 0x35, 0x39, 0x83, 0x9e, 0x27, 0x1c, 0xea, 0x86, 0x56, 0x3e, 0x54, 0xb4, 0x78, 0x4f, 0x20, 0x18, + 0xd0, 0x66, 0x50, 0x09, 0xe9, 0x0b, 0xf7, 0x33, 0x12, 0x28, 0xc5, 0x56, 0xcb, 0xdc, 0x35, 0x9c, + 0x3a, 0xee, 0xe0, 0x96, 0xd3, 0xb0, 0xb4, 0x16, 0x0e, 0xdb, 0xcf, 0x05, 0x90, 0xdb, 0xba, 0xc5, + 0xfa, 0x60, 0xf7, 0x91, 0xc9, 0xf1, 0x45, 0xc2, 0x3b, 0x8e, 0xb4, 0x96, 0xfb, 0x4b, 0x49, 0x20, + 0x4e, 0xb1, 0x7d, 0x45, 0xc1, 0x82, 0xd2, 0x97, 0xea, 0x47, 0x25, 0x98, 0xf2, 0x7a, 0xec, 0x2d, + 0x11, 0x61, 0xfe, 0x46, 0xc2, 0xc9, 0x88, 0x4f, 0x3c, 0x81, 0x0c, 0xdf, 0x9a, 0x60, 0x56, 0x11, + 0x45, 0x3f, 0x99, 0xe8, 0x8a, 0xc9, 0x45, 0xe7, 0xbe, 0x56, 0x6b, 0xcd, 0xa5, 0xda, 0xea, 0x62, + 0x59, 0x2d, 0xc8, 0xe8, 0x8b, 0x12, 0x64, 0xd7, 0x75, 0x63, 0x2b, 0x1c, 0x5d, 0xe9, 0xb8, 0x6b, + 0x47, 0xb6, 0xf1, 0x03, 0xac, 0xa5, 0xd3, 0x17, 0xe5, 0x56, 0x38, 0x6e, 0xec, 0xee, 0x9c, 0xc7, + 0x56, 0x6d, 0x93, 0x8c, 0xb2, 0x76, 0xc3, 0xac, 0x63, 0x83, 0x1a, 0xa1, 0x39, 0xb5, 0xef, 0x37, + 0xde, 0x04, 0x13, 0x98, 0x3c, 0xb8, 0x9c, 0x44, 0x48, 0xdc, 0x67, 0x4a, 0x0a, 0x31, 0x95, 0x68, + 0xda, 0xd0, 0x87, 0x78, 0xfa, 0x9a, 0xfa, 0xc7, 0x39, 0x38, 0x51, 0x34, 0x2e, 0x11, 0x9b, 0x82, + 0x76, 0xf0, 0xa5, 0x6d, 0xcd, 0xd8, 0xc2, 0x64, 0x80, 0xf0, 0x25, 0x1e, 0x0e, 0xd1, 0x9f, 0xe1, + 0x43, 0xf4, 0x2b, 0x2a, 0x4c, 0x98, 0x56, 0x1b, 0x5b, 0x0b, 0x97, 0x08, 0x4f, 0xbd, 0xcb, 0xce, + 0xac, 0x4d, 0xf6, 0x2b, 0x62, 0x9e, 0x91, 0x9f, 0xaf, 0xd1, 0xff, 0x55, 0x8f, 0xd0, 0x99, 0x9b, + 0x60, 0x82, 0xa5, 0x29, 0x33, 0x30, 0x59, 0x53, 0x17, 0xcb, 0x6a, 0xb3, 0xb2, 0x58, 0x38, 0xa2, + 0x5c, 0x06, 0x47, 0x2b, 0x8d, 0xb2, 0x5a, 0x6c, 0x54, 0x6a, 0xd5, 0x26, 0x49, 0x2f, 0x64, 0xd0, + 0x73, 0xb2, 0xa2, 0x9e, 0xbd, 0xf1, 0xcc, 0xf4, 0x83, 0x55, 0x85, 0x89, 0x16, 0xcd, 0x40, 0x86, + 0xd0, 0xe9, 0x44, 0xb5, 0x63, 0x04, 0x69, 0x82, 0xea, 0x11, 0x52, 0x4e, 0x03, 0x5c, 0xb4, 0x4c, + 0x63, 0x2b, 0x38, 0x75, 0x38, 0xa9, 0x86, 0x52, 0xd0, 0x83, 0x19, 0xc8, 0xd3, 0x7f, 0xc8, 0x95, + 0x24, 0xe4, 0x29, 0x10, 0xbc, 0xf7, 0xee, 0x5a, 0xbc, 0x44, 0x5e, 0xc1, 0x44, 0x8b, 0xbd, 0xba, + 0xba, 0x48, 0x65, 0x40, 0x2d, 0x61, 0x56, 0x95, 0x9b, 0x21, 0x4f, 0xff, 0x65, 0x5e, 0x07, 0xd1, + 0xe1, 0x45, 0x69, 0x36, 0x41, 0x3f, 0x65, 0x71, 0x99, 0xa6, 0xaf, 0xcd, 0xef, 0x93, 0x60, 0xb2, + 0x8a, 0x9d, 0xd2, 0x36, 0x6e, 0x5d, 0x40, 0x8f, 0xe3, 0x17, 0x40, 0x3b, 0x3a, 0x36, 0x9c, 0xfb, + 0x76, 0x3a, 0xfe, 0x02, 0xa8, 0x97, 0x80, 0x7e, 0x31, 0xdc, 0xf9, 0xde, 0xcd, 0xeb, 0xcf, 0x8d, + 0x7d, 0xea, 0xea, 0x95, 0x10, 0xa1, 0x32, 0x27, 0x21, 0x6f, 0x61, 0x7b, 0xb7, 0xe3, 0x2d, 0xa2, + 0xb1, 0x37, 0xf4, 0xb0, 0x2f, 0xce, 0x12, 0x27, 0xce, 0x9b, 0xc5, 0x8b, 0x18, 0x43, 0xbc, 0xd2, + 0x2c, 0x4c, 0x54, 0x0c, 0xdd, 0xd1, 0xb5, 0x0e, 0x7a, 0x5e, 0x16, 0x66, 0xeb, 0xd8, 0x59, 0xd7, + 0x2c, 0x6d, 0x07, 0x3b, 0xd8, 0xb2, 0xd1, 0xb7, 0xf9, 0x3e, 0xa1, 0xdb, 0xd1, 0x9c, 0x4d, 0xd3, + 0xda, 0xf1, 0x54, 0xd3, 0x7b, 0x77, 0x55, 0x73, 0x0f, 0x5b, 0x76, 0xc0, 0x97, 0xf7, 0xea, 0x7e, + 0xb9, 0x68, 0x5a, 0x17, 0xdc, 0x41, 0x90, 0x4d, 0xd3, 0xd8, 0xab, 0x4b, 0xaf, 0x63, 0x6e, 0xad, + 0xe2, 0x3d, 0xec, 0x85, 0x4b, 0xf3, 0xdf, 0xdd, 0xb9, 0x40, 0xdb, 0xac, 0x9a, 0x8e, 0xdb, 0x69, + 0xaf, 0x9a, 0x5b, 0x34, 0x5e, 0xec, 0xa4, 0xca, 0x27, 0x06, 0xb9, 0xb4, 0x3d, 0x4c, 0x72, 0xe5, + 0xc3, 0xb9, 0x58, 0xa2, 0x32, 0x0f, 0x8a, 0xff, 0x5b, 0x03, 0x77, 0xf0, 0x0e, 0x76, 0xac, 0x4b, + 0xe4, 0x5a, 0x88, 0x49, 0xb5, 0xcf, 0x17, 0x36, 0x40, 0x8b, 0x4f, 0xd6, 0x99, 0xf4, 0xe6, 0x39, + 0xc9, 0x1d, 0x68, 0xb2, 0x2e, 0x42, 0x71, 0x2c, 0xd7, 0x5e, 0xc9, 0xae, 0x35, 0xf3, 0x12, 0x19, + 0xb2, 0x64, 0xf0, 0x7c, 0x43, 0x86, 0x5b, 0x61, 0xda, 0xc1, 0xb6, 0xad, 0x6d, 0x61, 0x6f, 0x85, + 0x89, 0xbd, 0x2a, 0xb7, 0x41, 0xae, 0x43, 0x30, 0xa5, 0x83, 0xc3, 0xb5, 0x5c, 0xcd, 0x5c, 0x03, + 0xc3, 0xa5, 0xe5, 0x8f, 0x04, 0x04, 0x6e, 0x95, 0xfe, 0x71, 0xe6, 0x1e, 0xc8, 0x51, 0xf8, 0xa7, + 0x20, 0xb7, 0x58, 0x5e, 0xd8, 0x58, 0x2e, 0x1c, 0x71, 0x1f, 0x3d, 0xfe, 0xa6, 0x20, 0xb7, 0x54, + 0x6c, 0x14, 0x57, 0x0b, 0x92, 0x5b, 0x8f, 0x4a, 0x75, 0xa9, 0x56, 0x90, 0xdd, 0xc4, 0xf5, 0x62, + 0xb5, 0x52, 0x2a, 0x64, 0x95, 0x69, 0x98, 0x38, 0x57, 0x54, 0xab, 0x95, 0xea, 0x72, 0x21, 0x87, + 0xfe, 0x2e, 0x8c, 0xdf, 0xed, 0x3c, 0x7e, 0xd7, 0x45, 0xf1, 0xd4, 0x0f, 0xb2, 0x97, 0xfa, 0x90, + 0xdd, 0xc9, 0x41, 0xf6, 0xa3, 0x22, 0x44, 0xc6, 0xe0, 0xce, 0x94, 0x87, 0x89, 0x75, 0xcb, 0x6c, + 0x61, 0xdb, 0x46, 0xbf, 0x29, 0x41, 0xbe, 0xa4, 0x19, 0x2d, 0xdc, 0x41, 0x57, 0x04, 0x50, 0x51, + 0x57, 0xd1, 0x8c, 0x7f, 0x5a, 0xec, 0x9f, 0x32, 0xa2, 0xbd, 0x1f, 0xa3, 0x3b, 0x4f, 0x69, 0x46, + 0xc8, 0x47, 0xac, 0x97, 0x8b, 0x25, 0x35, 0x86, 0xab, 0x71, 0x24, 0x98, 0x62, 0xab, 0x01, 0xe7, + 0x71, 0x78, 0x1e, 0xfe, 0xed, 0x8c, 0xe8, 0xe4, 0xd0, 0xab, 0x81, 0x4f, 0x26, 0x42, 0x1e, 0x62, + 0x13, 0xc1, 0x41, 0xd4, 0xc6, 0xb0, 0x79, 0x28, 0xc1, 0xf4, 0x86, 0x61, 0xf7, 0x13, 0x8a, 0x78, + 0x1c, 0x7d, 0xaf, 0x1a, 0x21, 0x42, 0x07, 0x8a, 0xa3, 0x3f, 0x98, 0x5e, 0xfa, 0x82, 0xf9, 0x76, + 0x06, 0x8e, 0x2f, 0x63, 0x03, 0x5b, 0x7a, 0x8b, 0xd6, 0xc0, 0x93, 0xc4, 0x9d, 0xbc, 0x24, 0x1e, + 0xc7, 0x71, 0xde, 0xef, 0x0f, 0x5e, 0x02, 0xaf, 0xf0, 0x25, 0x70, 0x37, 0x27, 0x81, 0x9b, 0x04, + 0xe9, 0x8c, 0xe1, 0x3e, 0xf4, 0x29, 0x98, 0xa9, 0x9a, 0x8e, 0xbe, 0xa9, 0xb7, 0xa8, 0x0f, 0xda, + 0x8b, 0x65, 0xc8, 0xae, 0xea, 0xb6, 0x83, 0x8a, 0x41, 0x77, 0x72, 0x0d, 0x4c, 0xeb, 0x46, 0xab, + 0xb3, 0xdb, 0xc6, 0x2a, 0xd6, 0x68, 0xbf, 0x32, 0xa9, 0x86, 0x93, 0x82, 0xad, 0x7d, 0x97, 0x2d, + 0xd9, 0xdb, 0xda, 0xff, 0xa4, 0xf0, 0x32, 0x4c, 0x98, 0x05, 0x12, 0x90, 0x32, 0xc2, 0xee, 0x2a, + 0xc2, 0xac, 0x11, 0xca, 0xea, 0x19, 0xec, 0xbd, 0x17, 0x0a, 0x84, 0xc9, 0xa9, 0xfc, 0x1f, 0xe8, + 0xdd, 0x42, 0x8d, 0x75, 0x10, 0x43, 0xc9, 0x90, 0x59, 0x1a, 0x62, 0x92, 0xac, 0xc0, 0x5c, 0xa5, + 0xda, 0x28, 0xab, 0xd5, 0xe2, 0x2a, 0xcb, 0x22, 0xa3, 0xef, 0x4a, 0x90, 0x53, 0x71, 0xb7, 0x73, + 0x29, 0x1c, 0x31, 0x9a, 0x39, 0x8a, 0x67, 0x7c, 0x47, 0x71, 0x65, 0x09, 0x40, 0x6b, 0xb9, 0x05, + 0x93, 0x2b, 0xb5, 0xa4, 0xbe, 0x71, 0x4c, 0xb9, 0x0a, 0x16, 0xfd, 0xdc, 0x6a, 0xe8, 0x4f, 0xf4, + 0x90, 0xf0, 0xce, 0x11, 0x47, 0x8d, 0x70, 0x18, 0xd1, 0x27, 0xbc, 0x47, 0x68, 0xb3, 0x67, 0x20, + 0xb9, 0xc3, 0x11, 0xff, 0x97, 0x24, 0xc8, 0x36, 0xdc, 0xde, 0x32, 0xd4, 0x71, 0x7e, 0x62, 0x38, + 0x1d, 0x77, 0xc9, 0x44, 0xe8, 0xf8, 0x5d, 0x30, 0x13, 0xd6, 0x58, 0xe6, 0x2a, 0x11, 0xab, 0xe2, + 0xdc, 0x0f, 0xc3, 0x68, 0x78, 0x1f, 0x76, 0x0e, 0x47, 0xc4, 0x1f, 0x7b, 0x3c, 0xc0, 0x1a, 0xde, + 0x39, 0x8f, 0x2d, 0x7b, 0x5b, 0xef, 0xa2, 0xbf, 0x97, 0x61, 0x6a, 0x19, 0x3b, 0x75, 0x47, 0x73, + 0x76, 0xed, 0x9e, 0xed, 0x4e, 0xc3, 0x2c, 0x69, 0xad, 0x6d, 0xcc, 0xba, 0x23, 0xef, 0x15, 0xbd, + 0x5d, 0x16, 0xf5, 0x27, 0x0a, 0xca, 0x99, 0xf7, 0xcb, 0x88, 0xc0, 0xe4, 0x09, 0x90, 0x6d, 0x6b, + 0x8e, 0xc6, 0xb0, 0xb8, 0xa2, 0x07, 0x8b, 0x80, 0x90, 0x4a, 0xb2, 0xa1, 0xdf, 0x95, 0x44, 0x1c, + 0x8a, 0x04, 0xca, 0x4f, 0x06, 0xc2, 0xbb, 0x33, 0x43, 0xa0, 0x70, 0x0c, 0x66, 0xab, 0xb5, 0x46, + 0x73, 0xb5, 0xb6, 0xbc, 0x5c, 0x76, 0x53, 0x0b, 0xb2, 0x72, 0x12, 0x94, 0xf5, 0xe2, 0x7d, 0x6b, + 0xe5, 0x6a, 0xa3, 0x59, 0xad, 0x2d, 0x96, 0xd9, 0x9f, 0x59, 0xe5, 0x28, 0x4c, 0x97, 0x8a, 0xa5, + 0x15, 0x2f, 0x21, 0xa7, 0x9c, 0x82, 0xe3, 0x6b, 0xe5, 0xb5, 0x85, 0xb2, 0x5a, 0x5f, 0xa9, 0xac, + 0x37, 0x5d, 0x32, 0x4b, 0xb5, 0x8d, 0xea, 0x62, 0x21, 0xaf, 0x20, 0x38, 0x19, 0xfa, 0x72, 0x4e, + 0xad, 0x55, 0x97, 0x9b, 0xf5, 0x46, 0xb1, 0x51, 0x2e, 0x4c, 0x28, 0x97, 0xc1, 0xd1, 0x52, 0xb1, + 0x4a, 0xb2, 0x97, 0x6a, 0xd5, 0x6a, 0xb9, 0xd4, 0x28, 0x4c, 0xa2, 0xef, 0x67, 0x61, 0xba, 0x62, + 0x57, 0xb5, 0x1d, 0x7c, 0x56, 0xeb, 0xe8, 0x6d, 0xf4, 0xbc, 0xd0, 0xcc, 0xe3, 0x3a, 0x98, 0xb5, + 0xe8, 0x23, 0x6e, 0x37, 0x74, 0x4c, 0xd1, 0x9c, 0x55, 0xf9, 0x44, 0x77, 0x4e, 0x6e, 0x10, 0x02, + 0xde, 0x9c, 0x9c, 0xbe, 0x29, 0x0b, 0x00, 0xf4, 0xa9, 0x11, 0x5c, 0xee, 0x7a, 0xa6, 0xb7, 0x35, + 0x69, 0x3b, 0xd8, 0xc6, 0xd6, 0x9e, 0xde, 0xc2, 0x5e, 0x4e, 0x35, 0xf4, 0x17, 0xfa, 0xb2, 0x2c, + 0xba, 0xbf, 0x18, 0x02, 0x35, 0x54, 0x9d, 0x88, 0xde, 0xf0, 0x97, 0x64, 0x91, 0xdd, 0x41, 0x21, + 0x92, 0xc9, 0x34, 0xe5, 0x57, 0xa5, 0xe1, 0x96, 0x6d, 0x1b, 0xb5, 0x5a, 0xb3, 0xbe, 0x52, 0x53, + 0x1b, 0x05, 0x59, 0x99, 0x81, 0x49, 0xf7, 0x75, 0xb5, 0x56, 0x5d, 0x2e, 0x64, 0x95, 0x13, 0x70, + 0x6c, 0xa5, 0x58, 0x6f, 0x56, 0xaa, 0x67, 0x8b, 0xab, 0x95, 0xc5, 0x66, 0x69, 0xa5, 0xa8, 0xd6, + 0x0b, 0x39, 0xe5, 0x0a, 0x38, 0xd1, 0xa8, 0x94, 0xd5, 0xe6, 0x52, 0xb9, 0xd8, 0xd8, 0x50, 0xcb, + 0xf5, 0x66, 0xb5, 0xd6, 0xac, 0x16, 0xd7, 0xca, 0x85, 0xbc, 0xdb, 0xfc, 0xc9, 0xa7, 0x40, 0x6d, + 0x26, 0xf6, 0x2b, 0xe3, 0x64, 0x84, 0x32, 0x4e, 0xf5, 0x2a, 0x23, 0x84, 0xd5, 0x4a, 0x2d, 0xd7, + 0xcb, 0xea, 0xd9, 0x72, 0x61, 0xba, 0x9f, 0xae, 0xcd, 0x28, 0xc7, 0xa1, 0xe0, 0xf2, 0xd0, 0xac, + 0xd4, 0xbd, 0x9c, 0x8b, 0x85, 0x59, 0xf4, 0xd1, 0x3c, 0x9c, 0x54, 0xf1, 0x96, 0x6e, 0x3b, 0xd8, + 0x5a, 0xd7, 0x2e, 0xed, 0x60, 0xc3, 0xf1, 0x3a, 0xf9, 0x7f, 0x4d, 0xac, 0x8c, 0x6b, 0x30, 0xdb, + 0xa5, 0x34, 0xd6, 0xb0, 0xb3, 0x6d, 0xb6, 0xd9, 0x28, 0xfc, 0xb8, 0xc8, 0x9e, 0x63, 0x7e, 0x3d, + 0x9c, 0x5d, 0xe5, 0xff, 0x0e, 0xe9, 0xb6, 0x1c, 0xa3, 0xdb, 0xd9, 0x61, 0x74, 0x5b, 0xb9, 0x0a, + 0xa6, 0x76, 0x6d, 0x6c, 0x95, 0x77, 0x34, 0xbd, 0xe3, 0x5d, 0xce, 0xe9, 0x27, 0xa0, 0xb7, 0x64, + 0x45, 0x4f, 0xac, 0x84, 0xea, 0xd2, 0x5f, 0x8c, 0x11, 0x7d, 0xeb, 0x69, 0x00, 0x56, 0xd9, 0x0d, + 0xab, 0xc3, 0x94, 0x35, 0x94, 0xe2, 0xf2, 0x77, 0x5e, 0xef, 0x74, 0x74, 0x63, 0xcb, 0xdf, 0xf7, + 0x0f, 0x12, 0xd0, 0xaf, 0xca, 0x22, 0x27, 0x58, 0x92, 0xf2, 0x96, 0xac, 0x35, 0x3d, 0x24, 0x8d, + 0xb9, 0xdf, 0xdd, 0xdf, 0x74, 0xf2, 0x4a, 0x01, 0x66, 0x48, 0x1a, 0x6b, 0x81, 0x85, 0x09, 0xb7, + 0x0f, 0xf6, 0xc8, 0xad, 0x95, 0x1b, 0x2b, 0xb5, 0x45, 0xff, 0xdb, 0xa4, 0x4b, 0xd2, 0x65, 0xa6, + 0x58, 0xbd, 0x8f, 0xb4, 0xc6, 0x29, 0xe5, 0x31, 0x70, 0x45, 0xa8, 0xc3, 0x2e, 0xae, 0xaa, 0xe5, + 0xe2, 0xe2, 0x7d, 0xcd, 0xf2, 0x33, 0x2a, 0xf5, 0x46, 0x9d, 0x6f, 0x5c, 0x5e, 0x3b, 0x9a, 0x76, + 0xf9, 0x2d, 0xaf, 0x15, 0x2b, 0xab, 0xac, 0x7f, 0x5f, 0xaa, 0xa9, 0x6b, 0xc5, 0x46, 0x61, 0x06, + 0xbd, 0x44, 0x86, 0xc2, 0x32, 0x76, 0xd6, 0x4d, 0xcb, 0xd1, 0x3a, 0xab, 0xba, 0x71, 0x61, 0xc3, + 0xea, 0x70, 0x93, 0x4d, 0xe1, 0x30, 0x1d, 0xfc, 0x10, 0xc9, 0x11, 0x8c, 0xde, 0x11, 0xef, 0x92, + 0x6c, 0x81, 0x32, 0x05, 0x09, 0xe8, 0x59, 0x92, 0xc8, 0x72, 0xb7, 0x78, 0xa9, 0xc9, 0xf4, 0xe4, + 0xd9, 0xe3, 0x1e, 0x9f, 0xfb, 0xa0, 0x96, 0x47, 0xcf, 0xcd, 0xc2, 0xe4, 0x92, 0x6e, 0x68, 0x1d, + 0xfd, 0x99, 0x5c, 0xfc, 0xd2, 0xa0, 0x8f, 0xc9, 0xc4, 0xf4, 0x31, 0xd2, 0x50, 0xe3, 0xe7, 0xaf, + 0xcb, 0xa2, 0xcb, 0x0b, 0x21, 0xd9, 0x7b, 0x4c, 0x46, 0x0c, 0x9e, 0xef, 0x97, 0x44, 0x96, 0x17, + 0x06, 0xd3, 0x4b, 0x86, 0xe1, 0xc7, 0x7f, 0x30, 0x6c, 0xac, 0x9e, 0xf6, 0x3d, 0xd9, 0x4f, 0x15, + 0xa6, 0xd0, 0x9f, 0xcb, 0x80, 0x96, 0xb1, 0x73, 0x16, 0x5b, 0xfe, 0x54, 0x80, 0xf4, 0xfa, 0xcc, + 0xde, 0x0e, 0x35, 0xd9, 0x37, 0x84, 0x01, 0x3c, 0xc7, 0x03, 0x58, 0x8c, 0x69, 0x3c, 0x11, 0xa4, + 0x23, 0x1a, 0x6f, 0x05, 0xf2, 0x36, 0xf9, 0xce, 0xd4, 0xec, 0x89, 0xd1, 0xc3, 0x25, 0x21, 0x16, + 0xa6, 0x4e, 0x09, 0xab, 0x8c, 0x00, 0xfa, 0x8e, 0x3f, 0x09, 0xfa, 0x49, 0x4e, 0x3b, 0x96, 0x0e, + 0xcc, 0x6c, 0x32, 0x7d, 0xb1, 0xd2, 0x55, 0x97, 0x7e, 0xf6, 0x0d, 0x7a, 0x7f, 0x0e, 0x8e, 0xf7, + 0xab, 0x0e, 0xfa, 0xbd, 0x0c, 0xb7, 0xc3, 0x8e, 0xc9, 0x90, 0x9f, 0x61, 0x1b, 0x88, 0xee, 0x8b, + 0xf2, 0x64, 0x38, 0xe1, 0x2f, 0xc3, 0x35, 0xcc, 0x2a, 0xbe, 0x68, 0x77, 0xb0, 0xe3, 0x60, 0x8b, + 0x54, 0x6d, 0x52, 0xed, 0xff, 0x51, 0x79, 0x2a, 0x5c, 0xae, 0x1b, 0xb6, 0xde, 0xc6, 0x56, 0x43, + 0xef, 0xda, 0x45, 0xa3, 0xdd, 0xd8, 0x75, 0x4c, 0x4b, 0xd7, 0xd8, 0x55, 0x92, 0x93, 0x6a, 0xd4, + 0x67, 0xe5, 0x46, 0x28, 0xe8, 0x76, 0xcd, 0x38, 0x6f, 0x6a, 0x56, 0x5b, 0x37, 0xb6, 0x56, 0x75, + 0xdb, 0x61, 0x1e, 0xc0, 0xfb, 0xd2, 0xd1, 0x3f, 0xc8, 0xa2, 0x87, 0xe9, 0x06, 0xc0, 0x1a, 0xd1, + 0xa1, 0xfc, 0xa2, 0x2c, 0x72, 0x3c, 0x2e, 0x19, 0xed, 0x64, 0xca, 0xf2, 0x9c, 0x71, 0x1b, 0x12, + 0xfd, 0x47, 0x70, 0xd2, 0xb5, 0xd0, 0x74, 0xcf, 0x10, 0x38, 0x5b, 0x56, 0x2b, 0x4b, 0x95, 0xb2, + 0x6b, 0x56, 0x9c, 0x80, 0x63, 0xc1, 0xb7, 0xc5, 0xfb, 0x9a, 0xf5, 0x72, 0xb5, 0x51, 0x98, 0x74, + 0xfb, 0x29, 0x9a, 0xbc, 0x54, 0xac, 0xac, 0x96, 0x17, 0x9b, 0x8d, 0x9a, 0xfb, 0x65, 0x71, 0x38, + 0xd3, 0x02, 0x3d, 0x98, 0x85, 0xa3, 0x44, 0xb6, 0x97, 0x88, 0x54, 0x5d, 0xa1, 0xf4, 0xf8, 0xda, + 0xfa, 0x00, 0x4d, 0x51, 0xf1, 0xa2, 0x4f, 0x0b, 0xdf, 0x94, 0x19, 0x82, 0xb0, 0xa7, 0x8c, 0x08, + 0xcd, 0xf8, 0xb6, 0x24, 0x12, 0xa1, 0x42, 0x98, 0x6c, 0x32, 0xa5, 0xf8, 0xb7, 0x71, 0x8f, 0x38, + 0xd1, 0xe0, 0x13, 0x2b, 0xb3, 0x44, 0x7e, 0x7e, 0xc6, 0x7a, 0x45, 0x25, 0xea, 0x30, 0x07, 0x40, + 0x52, 0x88, 0x06, 0x51, 0x3d, 0xe8, 0x3b, 0x5e, 0x45, 0xe9, 0x41, 0xb1, 0xd4, 0xa8, 0x9c, 0x2d, + 0x47, 0xe9, 0xc1, 0xa7, 0x64, 0x98, 0x5c, 0xc6, 0x8e, 0x3b, 0xa7, 0xb2, 0xd1, 0xd3, 0x04, 0xd6, + 0x7f, 0x5c, 0x33, 0xa6, 0x63, 0xb6, 0xb4, 0x8e, 0xbf, 0x0c, 0x40, 0xdf, 0xd0, 0x2f, 0x0c, 0x63, + 0x82, 0x78, 0x45, 0x47, 0x8c, 0x57, 0x3f, 0x0e, 0x39, 0xc7, 0xfd, 0xcc, 0x96, 0xa1, 0x7f, 0x24, + 0x72, 0xb8, 0x72, 0x89, 0x2c, 0x6a, 0x8e, 0xa6, 0xd2, 0xfc, 0xa1, 0xd1, 0x49, 0xd0, 0x76, 0x89, + 0x60, 0xe4, 0x07, 0xd1, 0xfe, 0xfc, 0x3b, 0x19, 0x4e, 0xd0, 0xf6, 0x51, 0xec, 0x76, 0xeb, 0x8e, + 0x69, 0x61, 0x15, 0xb7, 0xb0, 0xde, 0x75, 0x7a, 0xd6, 0xf7, 0x2c, 0x9a, 0xea, 0x6d, 0x36, 0xb3, + 0x57, 0xf4, 0x5a, 0x59, 0x34, 0x06, 0xf3, 0xbe, 0xf6, 0xd8, 0x53, 0x5e, 0x44, 0x63, 0xff, 0xb0, + 0x24, 0x12, 0x55, 0x39, 0x21, 0xf1, 0x64, 0x40, 0x7d, 0xe0, 0x10, 0x80, 0xf2, 0x56, 0x6e, 0xd4, + 0x72, 0xa9, 0x5c, 0x59, 0x77, 0x07, 0x81, 0xab, 0xe1, 0xca, 0xf5, 0x0d, 0xb5, 0xb4, 0x52, 0xac, + 0x97, 0x9b, 0x6a, 0x79, 0xb9, 0x52, 0x6f, 0x30, 0xa7, 0x2c, 0xfa, 0xd7, 0x84, 0x72, 0x15, 0x9c, + 0xaa, 0x6f, 0x2c, 0xd4, 0x4b, 0x6a, 0x65, 0x9d, 0xa4, 0xab, 0xe5, 0x6a, 0xf9, 0x1c, 0xfb, 0x3a, + 0x89, 0xde, 0x5b, 0x80, 0x69, 0x77, 0x02, 0x50, 0xa7, 0xf3, 0x02, 0xf4, 0x8d, 0x2c, 0x4c, 0xab, + 0xd8, 0x36, 0x3b, 0x7b, 0x64, 0x8e, 0x30, 0xae, 0xa9, 0xc7, 0xb7, 0x64, 0xd1, 0xf3, 0xdb, 0x21, + 0x66, 0xe7, 0x43, 0x8c, 0x46, 0x4f, 0x34, 0xb5, 0x3d, 0x4d, 0xef, 0x68, 0xe7, 0x59, 0x57, 0x33, + 0xa9, 0x06, 0x09, 0xca, 0x3c, 0x28, 0xe6, 0x45, 0x03, 0x5b, 0xf5, 0xd6, 0xc5, 0xb2, 0xb3, 0x5d, + 0x6c, 0xb7, 0x2d, 0x6c, 0xdb, 0x6c, 0xf5, 0xa2, 0xcf, 0x17, 0xe5, 0x06, 0x38, 0x4a, 0x52, 0x43, + 0x99, 0xa9, 0x83, 0x4c, 0x6f, 0xb2, 0x9f, 0xb3, 0x68, 0x5c, 0xf2, 0x72, 0xe6, 0x42, 0x39, 0x83, + 0xe4, 0xf0, 0x71, 0x89, 0x3c, 0x7f, 0x4a, 0xe7, 0x1a, 0x98, 0x36, 0xb4, 0x1d, 0x5c, 0x7e, 0xa0, + 0xab, 0x5b, 0xd8, 0x26, 0x8e, 0x31, 0xb2, 0x1a, 0x4e, 0x42, 0xef, 0x17, 0x3a, 0x6f, 0x2e, 0x26, + 0xb1, 0x64, 0xba, 0xbf, 0x3c, 0x84, 0xea, 0xf7, 0xe9, 0x67, 0x64, 0xf4, 0x5e, 0x19, 0x66, 0x18, + 0x53, 0x45, 0xe3, 0x52, 0xa5, 0x8d, 0xae, 0xe6, 0x8c, 0x5f, 0xcd, 0x4d, 0xf3, 0x8c, 0x5f, 0xf2, + 0x82, 0x7e, 0x59, 0x16, 0x75, 0x77, 0xee, 0x53, 0x71, 0x52, 0x46, 0xb4, 0xe3, 0xe8, 0xa6, 0xb9, + 0xcb, 0x1c, 0x55, 0x27, 0x55, 0xfa, 0x92, 0xe6, 0xa2, 0x1e, 0xfa, 0x43, 0x21, 0x67, 0x6a, 0xc1, + 0x6a, 0x1c, 0x12, 0x80, 0x1f, 0x93, 0x61, 0x8e, 0x71, 0x55, 0x67, 0xe7, 0x7c, 0x84, 0x0e, 0xbc, + 0xfd, 0x8a, 0xb0, 0x21, 0xd8, 0xa7, 0xfe, 0xac, 0xa4, 0x47, 0x0d, 0x90, 0x1f, 0x14, 0x0a, 0x8e, + 0x26, 0x5c, 0x91, 0x43, 0x82, 0xf2, 0xad, 0x59, 0x98, 0xde, 0xb0, 0xb1, 0xc5, 0xfc, 0xf6, 0xd1, + 0xc3, 0x59, 0x90, 0x97, 0x31, 0xb7, 0x91, 0xfa, 0x7c, 0x61, 0x0f, 0xdf, 0x70, 0x65, 0x43, 0x44, + 0x5d, 0x1b, 0x29, 0x02, 0xb6, 0xeb, 0x61, 0x8e, 0x8a, 0xb4, 0xe8, 0x38, 0xae, 0x91, 0xe8, 0x79, + 0xd3, 0xf6, 0xa4, 0x8e, 0x62, 0xab, 0x88, 0x94, 0xe5, 0x66, 0x29, 0xb9, 0x3c, 0xad, 0xe2, 0x4d, + 0x3a, 0x9f, 0xcd, 0xaa, 0x3d, 0xa9, 0xca, 0x2d, 0x70, 0x99, 0xd9, 0xc5, 0xf4, 0xfc, 0x4a, 0x28, + 0x73, 0x8e, 0x64, 0xee, 0xf7, 0x09, 0x7d, 0x43, 0xc8, 0x57, 0x57, 0x5c, 0x3a, 0xc9, 0x74, 0xa1, + 0x3b, 0x1a, 0x93, 0xe4, 0x38, 0x14, 0xdc, 0x1c, 0x64, 0xff, 0x45, 0x2d, 0xd7, 0x6b, 0xab, 0x67, + 0xcb, 0xfd, 0x97, 0x31, 0x72, 0xe8, 0x39, 0x32, 0x4c, 0x2d, 0x58, 0xa6, 0xd6, 0x6e, 0x69, 0xb6, + 0x83, 0xbe, 0x23, 0xc1, 0xcc, 0xba, 0x76, 0xa9, 0x63, 0x6a, 0x6d, 0xe2, 0xdf, 0xdf, 0xd3, 0x17, + 0x74, 0xe9, 0x27, 0xaf, 0x2f, 0x60, 0xaf, 0xfc, 0xc1, 0x40, 0xff, 0xe8, 0x5e, 0x46, 0xe4, 0x42, + 0x4d, 0x7f, 0x9b, 0x4f, 0xea, 0x17, 0xac, 0xd4, 0xe3, 0x6b, 0x3e, 0xcc, 0x53, 0x84, 0x45, 0xf9, + 0x5e, 0xb1, 0xf0, 0xa3, 0x22, 0x24, 0x0f, 0x67, 0x57, 0xfe, 0xb9, 0x93, 0x90, 0x5f, 0xc4, 0xc4, + 0x8a, 0xfb, 0x1f, 0x12, 0x4c, 0xd4, 0xb1, 0x43, 0x2c, 0xb8, 0xdb, 0x38, 0x4f, 0xe1, 0x36, 0xc9, + 0x10, 0x38, 0xb1, 0x7b, 0xef, 0xee, 0x64, 0x3d, 0x74, 0xde, 0x9a, 0x3c, 0x27, 0xf0, 0x48, 0xa4, + 0xe5, 0xce, 0xb3, 0x32, 0x0f, 0xe4, 0x91, 0x18, 0x4b, 0x2a, 0x7d, 0x5f, 0xab, 0xb7, 0x4b, 0xcc, + 0xb5, 0x2a, 0xd4, 0xeb, 0xbd, 0x32, 0xac, 0x9f, 0xb1, 0xde, 0x66, 0x8c, 0xf9, 0x18, 0xe7, 0xa8, + 0x27, 0xc1, 0x04, 0x95, 0xb9, 0x37, 0x1f, 0xed, 0xf5, 0x53, 0xa0, 0x24, 0xc8, 0xd9, 0x6b, 0x2f, + 0xa7, 0xa0, 0x8b, 0x5a, 0x74, 0xe1, 0x63, 0x89, 0x41, 0x30, 0x53, 0xc5, 0xce, 0x45, 0xd3, 0xba, + 0x50, 0x77, 0x34, 0x07, 0xa3, 0x7f, 0x93, 0x40, 0xae, 0x63, 0x27, 0x1c, 0xfd, 0xa4, 0x0a, 0xc7, + 0x68, 0x85, 0x58, 0x46, 0xd2, 0x7f, 0xd3, 0x8a, 0x5c, 0xd3, 0x57, 0x08, 0xa1, 0x7c, 0xea, 0xfe, + 0x5f, 0xd1, 0x6f, 0xf6, 0x0d, 0xfa, 0x24, 0xf5, 0x99, 0x34, 0x30, 0xc9, 0x84, 0x19, 0x74, 0x15, + 0x2c, 0x42, 0x4f, 0xdf, 0x27, 0x64, 0x56, 0x8b, 0xd1, 0x3c, 0x9c, 0xae, 0xe0, 0x83, 0x57, 0x40, + 0xb6, 0xb4, 0xad, 0x39, 0xe8, 0x6d, 0x32, 0x40, 0xb1, 0xdd, 0x5e, 0xa3, 0x3e, 0xe0, 0x61, 0x87, + 0xb4, 0x33, 0x30, 0xd3, 0xda, 0xd6, 0x82, 0xbb, 0x4d, 0x68, 0x7f, 0xc0, 0xa5, 0x29, 0x4f, 0x0e, + 0x9c, 0xc9, 0xa9, 0x54, 0x51, 0x0f, 0x4c, 0x6e, 0x19, 0x8c, 0xb6, 0xef, 0x68, 0xce, 0x87, 0xc2, + 0x8c, 0x3d, 0x42, 0xe7, 0xfe, 0x3e, 0x1f, 0xb0, 0x17, 0x3d, 0x87, 0x63, 0xa4, 0xfd, 0x03, 0x36, + 0x41, 0x42, 0xc2, 0x93, 0xde, 0x62, 0x01, 0x3d, 0xe2, 0xf9, 0x1a, 0x4b, 0xe8, 0x5a, 0xa5, 0xdc, + 0xd6, 0x3d, 0xd1, 0xb2, 0x80, 0x59, 0xe8, 0xa1, 0x4c, 0x32, 0xf8, 0xe2, 0x05, 0x77, 0x37, 0xcc, + 0xe2, 0xb6, 0xee, 0x60, 0xaf, 0x96, 0x4c, 0x80, 0x71, 0x10, 0xf3, 0x3f, 0xa0, 0x67, 0x0b, 0x07, + 0x5d, 0x23, 0x02, 0xdd, 0x5f, 0xa3, 0x88, 0xf6, 0x27, 0x16, 0x46, 0x4d, 0x8c, 0x66, 0xfa, 0x60, + 0xfd, 0x82, 0x0c, 0x27, 0x1a, 0xe6, 0xd6, 0x56, 0x07, 0x7b, 0x62, 0xc2, 0xd4, 0x3b, 0x13, 0x69, + 0xa3, 0x84, 0x8b, 0xec, 0x04, 0x99, 0xf7, 0xeb, 0xfe, 0x51, 0x32, 0xf7, 0x85, 0x3f, 0x31, 0x15, + 0x3b, 0x8b, 0x22, 0xe2, 0xea, 0xcb, 0x67, 0x04, 0x0a, 0x62, 0x01, 0x9f, 0x85, 0xc9, 0xa6, 0x0f, + 0xc4, 0xe7, 0x25, 0x98, 0xa5, 0x37, 0x57, 0x7a, 0x0a, 0x7a, 0xef, 0x08, 0x01, 0x40, 0xdf, 0xc9, + 0x88, 0xfa, 0xd9, 0x12, 0x99, 0x70, 0x9c, 0x44, 0x88, 0x58, 0x2c, 0xa8, 0xca, 0x40, 0x72, 0xe9, + 0x8b, 0xf6, 0x4f, 0x64, 0x98, 0x5e, 0xc6, 0x5e, 0x4b, 0xb3, 0x13, 0xf7, 0x44, 0x67, 0x60, 0x86, + 0x5c, 0xdf, 0x56, 0x63, 0xc7, 0x24, 0xe9, 0xaa, 0x19, 0x97, 0xa6, 0x5c, 0x07, 0xb3, 0xe7, 0xf1, + 0xa6, 0x69, 0xe1, 0x1a, 0x77, 0x96, 0x92, 0x4f, 0x8c, 0x08, 0x4f, 0xc7, 0xc5, 0x41, 0x5b, 0xe0, + 0xb1, 0xb9, 0x69, 0xbf, 0x30, 0x43, 0x55, 0x89, 0x18, 0x73, 0x9e, 0x02, 0x93, 0x0c, 0x79, 0xcf, + 0x4c, 0x8b, 0xeb, 0x17, 0xfd, 0xbc, 0xe8, 0x35, 0x3e, 0xa2, 0x65, 0x0e, 0xd1, 0x27, 0x26, 0x61, + 0x62, 0x2c, 0xf7, 0xbb, 0x17, 0x42, 0xe5, 0x2f, 0x5c, 0xaa, 0xb4, 0x6d, 0xb4, 0x96, 0x0c, 0xd3, + 0xd3, 0x00, 0x7e, 0xe3, 0xf0, 0xc2, 0x5a, 0x84, 0x52, 0xf8, 0xc8, 0xf5, 0xb1, 0x07, 0xf5, 0x7a, + 0xc5, 0x41, 0xd8, 0x19, 0x31, 0x30, 0x62, 0x07, 0xfc, 0x44, 0x38, 0x49, 0x1f, 0x9d, 0x4f, 0xca, + 0x70, 0xc2, 0x3f, 0x7f, 0xb4, 0xaa, 0xd9, 0x41, 0xbb, 0x2b, 0x25, 0x83, 0x88, 0x3b, 0xf0, 0xe1, + 0x37, 0x96, 0x6f, 0x26, 0x1b, 0x33, 0xfa, 0x72, 0x32, 0x5a, 0x74, 0x94, 0x9b, 0xe0, 0x98, 0xb1, + 0xbb, 0xe3, 0x4b, 0x9d, 0xb4, 0x78, 0xd6, 0xc2, 0xf7, 0x7f, 0x48, 0x32, 0x32, 0x89, 0x30, 0x3f, + 0x96, 0x39, 0x25, 0x77, 0xa4, 0xeb, 0x09, 0x89, 0x60, 0x44, 0xff, 0x92, 0x49, 0xd4, 0xbb, 0x0d, + 0x3e, 0xf3, 0x95, 0xa0, 0x97, 0x3a, 0xc4, 0x03, 0x5f, 0x67, 0x26, 0x20, 0x57, 0xde, 0xe9, 0x3a, + 0x97, 0xce, 0x3c, 0x16, 0x66, 0xeb, 0x8e, 0x85, 0xb5, 0x9d, 0xd0, 0xce, 0x80, 0x63, 0x5e, 0xc0, + 0x86, 0xb7, 0x33, 0x40, 0x5e, 0x6e, 0xbf, 0x0d, 0x26, 0x0c, 0xb3, 0xa9, 0xed, 0x3a, 0xdb, 0xca, + 0xd5, 0xfb, 0x8e, 0xd4, 0x33, 0xf0, 0x6b, 0x2c, 0x86, 0xd1, 0x97, 0xef, 0x20, 0x6b, 0xc3, 0x79, + 0xc3, 0x2c, 0xee, 0x3a, 0xdb, 0x0b, 0x57, 0x7d, 0xec, 0x6f, 0x4f, 0x67, 0x3e, 0xf5, 0xb7, 0xa7, + 0x33, 0x5f, 0xfa, 0xdb, 0xd3, 0x99, 0x5f, 0xf9, 0xca, 0xe9, 0x23, 0x9f, 0xfa, 0xca, 0xe9, 0x23, + 0x9f, 0xff, 0xca, 0xe9, 0x23, 0x3f, 0x29, 0x75, 0xcf, 0x9f, 0xcf, 0x13, 0x2a, 0x4f, 0xfa, 0x7f, + 0x03, 0x00, 0x00, 0xff, 0xff, 0x26, 0x07, 0x39, 0x30, 0x26, 0x08, 0x02, 0x00, } func (m *Rpc) Marshal() (dAtA []byte, err error) { @@ -80056,6 +80064,16 @@ func (m *RpcPublishingPublishState) MarshalToSizedBuffer(dAtA []byte) (int, erro _ = i var l int _ = l + if m.JoinSpace { + i-- + if m.JoinSpace { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x40 + } if m.Size_ != 0 { i = encodeVarintCommands(dAtA, i, uint64(m.Size_)) i-- @@ -121345,6 +121363,9 @@ func (m *RpcPublishingPublishState) Size() (n int) { if m.Size_ != 0 { n += 1 + sovCommands(uint64(m.Size_)) } + if m.JoinSpace { + n += 2 + } return n } @@ -155622,6 +155643,26 @@ func (m *RpcPublishingPublishState) Unmarshal(dAtA []byte) error { break } } + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field JoinSpace", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.JoinSpace = bool(v != 0) default: iNdEx = preIndex skippy, err := skipCommands(dAtA[iNdEx:]) diff --git a/pb/protos/commands.proto b/pb/protos/commands.proto index 2e0f8e5e1..d7288830a 100644 --- a/pb/protos/commands.proto +++ b/pb/protos/commands.proto @@ -1374,6 +1374,7 @@ message Rpc { string version = 5; int64 timestamp = 6; int64 size = 7; + bool joinSpace = 8; } message Create { From 6ea0a7face80799d6de31de5449336e4c30bb2c7 Mon Sep 17 00:00:00 2001 From: AnastasiaShemyakinskaya Date: Mon, 20 Jan 2025 22:15:02 +0100 Subject: [PATCH 197/279] GO-4886: use right error Signed-off-by: AnastasiaShemyakinskaya --- core/publish/service.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/publish/service.go b/core/publish/service.go index 65826b257..2d6e010b7 100644 --- a/core/publish/service.go +++ b/core/publish/service.go @@ -192,7 +192,7 @@ func (s *service) publishToPublishServer(ctx context.Context, spaceId, pageId, u func (s *service) applyInviteLink(ctx context.Context, spc clientspace.Space, snapshot *PublishingUberSnapshot, joinSpace bool) error { inviteLink, err := s.extractInviteLink(ctx, spc.Id(), joinSpace, spc.IsPersonal()) - if err != nil && errors.Is(err, ErrLimitExceeded) { + if err != nil && errors.Is(err, inviteservice.ErrInviteNotExists) { return nil } if err != nil { From c6093173965e512d658bd6cfed74fec01f08d726 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Tue, 21 Jan 2025 01:45:09 +0100 Subject: [PATCH 198/279] GO-4459: Fix crash on empty tags list --- core/api/services/object/service.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/api/services/object/service.go b/core/api/services/object/service.go index 2956900b9..f8a7eb109 100644 --- a/core/api/services/object/service.go +++ b/core/api/services/object/service.go @@ -430,7 +430,7 @@ func (s *ObjectService) getTags(resp *pb.RpcObjectShowResponse) []Tag { tags := []Tag{} tagField, ok := resp.ObjectView.Details[0].Details.Fields["tag"] - if !ok { + if !ok || tagField.GetListValue() == nil { return tags } From 94a36593263de7a305e6139cfe582be3c440c544 Mon Sep 17 00:00:00 2001 From: AnastasiaShemyakinskaya Date: Tue, 21 Jan 2025 11:08:48 +0100 Subject: [PATCH 199/279] GO-4886: remove not needed check Signed-off-by: AnastasiaShemyakinskaya --- core/publish/service.go | 3 --- 1 file changed, 3 deletions(-) diff --git a/core/publish/service.go b/core/publish/service.go index 2d6e010b7..dc1c9f702 100644 --- a/core/publish/service.go +++ b/core/publish/service.go @@ -192,9 +192,6 @@ func (s *service) publishToPublishServer(ctx context.Context, spaceId, pageId, u func (s *service) applyInviteLink(ctx context.Context, spc clientspace.Space, snapshot *PublishingUberSnapshot, joinSpace bool) error { inviteLink, err := s.extractInviteLink(ctx, spc.Id(), joinSpace, spc.IsPersonal()) - if err != nil && errors.Is(err, inviteservice.ErrInviteNotExists) { - return nil - } if err != nil { return err } From 37babffde88d84b932b9c6494a472f2db440d8df Mon Sep 17 00:00:00 2001 From: Sergey Date: Tue, 21 Jan 2025 11:39:53 +0100 Subject: [PATCH 200/279] GO-4146: Fix corrupted badger handling --- pkg/lib/datastore/clientds/clientds.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/pkg/lib/datastore/clientds/clientds.go b/pkg/lib/datastore/clientds/clientds.go index 43dce966a..fc7e492d5 100644 --- a/pkg/lib/datastore/clientds/clientds.go +++ b/pkg/lib/datastore/clientds/clientds.go @@ -170,10 +170,13 @@ func (r *clientds) Init(a *app.App) (err error) { r.localstoreDS, err = openBadgerWithRecover(opts) err = anyerror.CleanupError(err) if err != nil && isBadgerCorrupted(err) { + log.With("error", err).Error("badger db is corrupted") // because localstore contains mostly recoverable info (with th only exception of objects' lastOpenedDate) // we can just remove and recreate it - err2 := os.Rename(opts.Dir, filepath.Join(opts.Dir, "-corrupted")) - log.Errorf("failed to rename corrupted localstore: %s", err2) + err2 := os.Rename(opts.Dir, opts.Dir+"-corrupted") + if err2 != nil { + log.Errorf("failed to rename corrupted localstore: %s", err2) + } var errAfterRemove error r.localstoreDS, errAfterRemove = openBadgerWithRecover(opts) errAfterRemove = anyerror.CleanupError(errAfterRemove) From bbc4c63ca36e752774d065804bd3ebd01095a696 Mon Sep 17 00:00:00 2001 From: AnastasiaShemyakinskaya Date: Tue, 21 Jan 2025 13:09:32 +0100 Subject: [PATCH 201/279] GO-4418: fix comments Signed-off-by: AnastasiaShemyakinskaya --- core/block/import/common/source/directory.go | 22 ++++++++++--------- .../import/common/source/directory_test.go | 6 ++--- core/block/import/common/source/zip.go | 5 ++--- core/block/import/common/source/zip_test.go | 6 ++--- 4 files changed, 20 insertions(+), 19 deletions(-) diff --git a/core/block/import/common/source/directory.go b/core/block/import/common/source/directory.go index 07fc805c6..329996b59 100644 --- a/core/block/import/common/source/directory.go +++ b/core/block/import/common/source/directory.go @@ -4,7 +4,6 @@ import ( "io" "os" "path/filepath" - "slices" "sort" "strings" @@ -16,7 +15,7 @@ import ( type Directory struct { fileReaders map[string]struct{} importPath string - rootDirs []string + rootDirs map[string]bool } func NewDirectory() *Directory { @@ -89,37 +88,40 @@ func (d *Directory) CountFilesWithGivenExtensions(extension []string) int { func (d *Directory) IsRootFile(fileName string) bool { fileDir := filepath.Dir(fileName) - return fileDir == d.importPath || slices.Contains(d.rootDirs, fileDir) + return fileDir == d.importPath || d.rootDirs[fileDir] } func (d *Directory) Close() {} -func findNonEmptyDirs(files map[string]struct{}) []string { +func findNonEmptyDirs(files map[string]struct{}) map[string]bool { dirs := make([]string, 0, len(files)) for file := range files { dir := filepath.Dir(file) if dir == "." { - return []string{dir} + return map[string]bool{dir: true} } dirs = append(dirs, dir) } sort.Strings(dirs) - var result []string + result := make(map[string]bool) visited := make(map[string]bool) for _, dir := range dirs { + if _, ok := visited[dir]; ok { + continue + } + visited[dir] = true if isSubdirectoryOfAny(dir, result) { continue } - result = lo.Union(result, []string{dir}) - visited[dir] = true + result[dir] = true } return result } -func isSubdirectoryOfAny(dir string, directories []string) bool { - for _, base := range directories { +func isSubdirectoryOfAny(dir string, directories map[string]bool) bool { + for base := range directories { if strings.HasPrefix(dir, base+string(filepath.Separator)) { return true } diff --git a/core/block/import/common/source/directory_test.go b/core/block/import/common/source/directory_test.go index f4d33c7e0..5554abe3b 100644 --- a/core/block/import/common/source/directory_test.go +++ b/core/block/import/common/source/directory_test.go @@ -47,7 +47,7 @@ func TestDirectory_Initialize(t *testing.T) { assert.NoError(t, err) assert.Equal(t, tempDir, directory.importPath) assert.Len(t, directory.fileReaders, 2) - expectedRoots := []string{tempDir} + expectedRoots := map[string]bool{tempDir: true} assert.Equal(t, expectedRoots, directory.rootDirs) }) t.Run("directory with another dir inside", func(t *testing.T) { @@ -72,7 +72,7 @@ func TestDirectory_Initialize(t *testing.T) { assert.Equal(t, tempDir, directory.importPath) assert.Len(t, directory.fileReaders, 3) - expectedRoots := []string{filepath.Join(tempDir, "folder")} + expectedRoots := map[string]bool{filepath.Join(tempDir, "folder"): true} assert.Equal(t, expectedRoots, directory.rootDirs) }) t.Run("directory with 2 dirs inside", func(t *testing.T) { @@ -96,7 +96,7 @@ func TestDirectory_Initialize(t *testing.T) { assert.Equal(t, tempDir, directory.importPath) assert.Len(t, directory.fileReaders, 2) - expectedRoots := []string{filepath.Join(tempDir, "folder"), filepath.Join(tempDir, "folder1", "folder2")} + expectedRoots := map[string]bool{filepath.Join(tempDir, "folder"): true, filepath.Join(tempDir, "folder1", "folder2"): true} assert.Equal(t, expectedRoots, directory.rootDirs) }) } diff --git a/core/block/import/common/source/zip.go b/core/block/import/common/source/zip.go index 3c7103f9e..a6c43964e 100644 --- a/core/block/import/common/source/zip.go +++ b/core/block/import/common/source/zip.go @@ -5,7 +5,6 @@ import ( "fmt" "io" "path/filepath" - "slices" "strings" "github.com/samber/lo" @@ -21,7 +20,7 @@ type Zip struct { archiveReader *zip.ReadCloser fileReaders map[string]*zip.File originalToNormalizedNames map[string]string - rootDirs []string + rootDirs map[string]bool } func NewZip() *Zip { @@ -108,7 +107,7 @@ func (z *Zip) Close() { func (z *Zip) IsRootFile(fileName string) bool { fileDir := filepath.Dir(fileName) - return fileDir == "." || slices.Contains(z.rootDirs, fileDir) + return fileDir == "." || z.rootDirs[fileDir] } func (z *Zip) GetFileOriginalName(fileName string) string { diff --git a/core/block/import/common/source/zip_test.go b/core/block/import/common/source/zip_test.go index 6578715f8..5c3b20395 100644 --- a/core/block/import/common/source/zip_test.go +++ b/core/block/import/common/source/zip_test.go @@ -56,7 +56,7 @@ func TestZip_Initialize(t *testing.T) { assert.NotNil(t, zipInstance.archiveReader) assert.Len(t, zipInstance.fileReaders, 2) - expectedRoots := []string{"."} + expectedRoots := map[string]bool{".": true} assert.Equal(t, expectedRoots, zipInstance.rootDirs) }) t.Run("zip files with dir inside", func(t *testing.T) { @@ -80,7 +80,7 @@ func TestZip_Initialize(t *testing.T) { assert.NotNil(t, zipInstance.archiveReader) assert.Len(t, zipInstance.fileReaders, 3) - expectedRoots := []string{"folder"} + expectedRoots := map[string]bool{"folder": true} assert.Equal(t, expectedRoots, zipInstance.rootDirs) }) t.Run("zip files with 2 dirs inside", func(t *testing.T) { @@ -103,7 +103,7 @@ func TestZip_Initialize(t *testing.T) { assert.NotNil(t, zipInstance.archiveReader) assert.Len(t, zipInstance.fileReaders, 2) - expectedRoots := []string{"folder", filepath.Join("folder1", "folder2")} + expectedRoots := map[string]bool{"folder": true, filepath.Join("folder1", "folder2"): true} assert.Equal(t, expectedRoots, zipInstance.rootDirs) }) t.Run("invalid path", func(t *testing.T) { From cb7562fee979458ce7078cc686d41624ae4f9b15 Mon Sep 17 00:00:00 2001 From: Sergey Date: Tue, 21 Jan 2025 17:42:10 +0100 Subject: [PATCH 202/279] GO-4146: Estimate db size --- space/spacecore/oldstorage/storage.go | 1 + .../storage/badgerstorage/storageservice.go | 5 +++++ space/spacecore/storage/migrator/migrator.go | 13 +++++++++++++ space/spacecore/storage/sqlitestorage/service.go | 9 +++++++++ util/freespace/freespace_unix.go | 15 +++++++++++++++ util/freespace/freespace_windows.go | 15 +++++++++++++++ 6 files changed, 58 insertions(+) create mode 100644 util/freespace/freespace_unix.go create mode 100644 util/freespace/freespace_windows.go diff --git a/space/spacecore/oldstorage/storage.go b/space/spacecore/oldstorage/storage.go index 121b635f3..f90408942 100644 --- a/space/spacecore/oldstorage/storage.go +++ b/space/spacecore/oldstorage/storage.go @@ -29,6 +29,7 @@ type ClientStorage interface { AllSpaceIds() (ids []string, err error) DeleteSpaceStorage(ctx context.Context, spaceId string) error GetSpaceID(objectID string) (spaceID string, err error) + EstimateSize() (uint64, error) } // storageService is a proxy for the actual storage implementation diff --git a/space/spacecore/storage/badgerstorage/storageservice.go b/space/spacecore/storage/badgerstorage/storageservice.go index fa0d2c55b..815eecd1a 100644 --- a/space/spacecore/storage/badgerstorage/storageservice.go +++ b/space/spacecore/storage/badgerstorage/storageservice.go @@ -227,6 +227,11 @@ func (s *storageService) AllSpaceIds() (ids []string, err error) { return } +func (s *storageService) EstimateSize() (uint64, error) { + onDiskSize, _ := s.db.EstimateSize(nil) + return onDiskSize, nil +} + func (s *storageService) Run(ctx context.Context) (err error) { s.db, err = s.provider.SpaceStorage() if err != nil { diff --git a/space/spacecore/storage/migrator/migrator.go b/space/spacecore/storage/migrator/migrator.go index ec7aedf14..be5dd65fd 100644 --- a/space/spacecore/storage/migrator/migrator.go +++ b/space/spacecore/storage/migrator/migrator.go @@ -18,6 +18,7 @@ import ( "github.com/anyproto/anytype-heart/space/spacecore/oldstorage" "github.com/anyproto/anytype-heart/space/spacecore/storage" "github.com/anyproto/anytype-heart/space/spacecore/storage/migratorfinisher" + "github.com/anyproto/anytype-heart/util/freespace" ) const CName = "client.storage.migration" @@ -63,6 +64,18 @@ func (m *migrator) Name() (name string) { } func (m *migrator) Run(ctx context.Context) (err error) { + oldSize, err := m.oldStorage.EstimateSize() + if err != nil { + return fmt.Errorf("estimate size: %w", err) + } + free, err := freespace.GetFreeDiskSpace(m.path) + if err != nil { + return fmt.Errorf("get free disk space: %w", err) + } + if oldSize > free { + return fmt.Errorf("not enough disk space") + } + progress := process.NewProgress(&pb.ModelProcessMessageOfMigration{Migration: &pb.ModelProcessMigration{}}) progress.SetProgressMessage("Migrating spaces") err = m.process.Add(progress) diff --git a/space/spacecore/storage/sqlitestorage/service.go b/space/spacecore/storage/sqlitestorage/service.go index 4ee6ad52b..860f34cc4 100644 --- a/space/spacecore/storage/sqlitestorage/service.go +++ b/space/spacecore/storage/sqlitestorage/service.go @@ -5,6 +5,7 @@ import ( "database/sql" "errors" "net/url" + "os" "sync" "time" @@ -375,6 +376,14 @@ func (s *storageService) checkpoint() (err error) { return err } +func (s *storageService) EstimateSize() (uint64, error) { + stat, err := os.Stat(s.dbPath) + if err != nil { + return 0, err + } + return uint64(stat.Size()), nil +} + func (s *storageService) Close(ctx context.Context) (err error) { if s.ctxCancel != nil { s.ctxCancel() diff --git a/util/freespace/freespace_unix.go b/util/freespace/freespace_unix.go new file mode 100644 index 000000000..4fdc34b39 --- /dev/null +++ b/util/freespace/freespace_unix.go @@ -0,0 +1,15 @@ +//go:build !windows + +package freespace + +import "golang.org/x/sys/unix" + +func GetFreeDiskSpace(path string) (freeSpace uint64, err error) { + var stat unix.Statfs_t + err = unix.Statfs(path, &stat) + if err != nil { + return 0, err + } + freeSpace = stat.Bavail * uint64(stat.Bsize) + return freeSpace, nil +} diff --git a/util/freespace/freespace_windows.go b/util/freespace/freespace_windows.go new file mode 100644 index 000000000..acdeed5f9 --- /dev/null +++ b/util/freespace/freespace_windows.go @@ -0,0 +1,15 @@ +//go:build windows + +package freespace + +import "golang.org/x/sys/windows" + +func GetFreeDiskSpace(path string) (uint64, error) { + var freeBytesAvailable, totalNumberOfBytes, totalNumberOfFreeBytes uint64 + lpDirectoryName := windows.StringToUTF16Ptr(path) + err := windows.GetDiskFreeSpaceEx(lpDirectoryName, &freeBytesAvailable, &totalNumberOfBytes, &totalNumberOfFreeBytes) + if err != nil { + return 0, err + } + return freeBytesAvailable, nil +} From b3595bfec0da27ee6d13a048b4169900de47cb62 Mon Sep 17 00:00:00 2001 From: Sergey Date: Tue, 21 Jan 2025 17:55:15 +0100 Subject: [PATCH 203/279] GO-4146: Estimate db size: add multiplier --- space/spacecore/storage/migrator/migrator.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/space/spacecore/storage/migrator/migrator.go b/space/spacecore/storage/migrator/migrator.go index be5dd65fd..8ac7fc4c5 100644 --- a/space/spacecore/storage/migrator/migrator.go +++ b/space/spacecore/storage/migrator/migrator.go @@ -72,7 +72,7 @@ func (m *migrator) Run(ctx context.Context) (err error) { if err != nil { return fmt.Errorf("get free disk space: %w", err) } - if oldSize > free { + if oldSize*15/10 > free { return fmt.Errorf("not enough disk space") } From 34d0cf3c79d224ca46bd96233cb7fba206a4f42c Mon Sep 17 00:00:00 2001 From: Sergey Date: Tue, 21 Jan 2025 18:43:48 +0100 Subject: [PATCH 204/279] GO-4146: Estimate db size: add typed error --- core/account.go | 2 + core/util.go | 19 +- core/util_test.go | 20 +- docs/proto.md | 2 +- pb/commands.pb.go | 2390 +++++++++--------- pb/protos/commands.proto | 2 +- space/spacecore/storage/migrator/migrator.go | 34 +- 7 files changed, 1262 insertions(+), 1207 deletions(-) diff --git a/core/account.go b/core/account.go index ccc58a6d0..b82d3bc25 100644 --- a/core/account.go +++ b/core/account.go @@ -10,6 +10,7 @@ import ( "github.com/anyproto/anytype-heart/core/application" "github.com/anyproto/anytype-heart/core/session" "github.com/anyproto/anytype-heart/pb" + "github.com/anyproto/anytype-heart/space/spacecore/storage/migrator" ) func (mw *Middleware) AccountCreate(cctx context.Context, req *pb.RpcAccountCreateRequest) *pb.RpcAccountCreateResponse { @@ -55,6 +56,7 @@ func (mw *Middleware) AccountMigrate(cctx context.Context, req *pb.RpcAccountMig errToCode(application.ErrBadInput, pb.RpcAccountMigrateResponseError_BAD_INPUT), errToCode(application.ErrAccountNotFound, pb.RpcAccountMigrateResponseError_ACCOUNT_NOT_FOUND), errToCode(context.Canceled, pb.RpcAccountMigrateResponseError_CANCELED), + errTypeToCode(&migrator.NotEnoughFreeSpaceError{}, pb.RpcAccountMigrateResponseError_NOT_ENOUGH_FREE_SPACE), ) return &pb.RpcAccountMigrateResponse{ Error: &pb.RpcAccountMigrateResponseError{ diff --git a/core/util.go b/core/util.go index fe897d981..78e4c747d 100644 --- a/core/util.go +++ b/core/util.go @@ -24,10 +24,16 @@ func (mw *Middleware) getResponseEvent(ctx session.Context) *pb.ResponseEvent { type errToCodeTuple[T ~int32] struct { err error code T + + checkErrorType any } func errToCode[T ~int32](err error, code T) errToCodeTuple[T] { - return errToCodeTuple[T]{err, code} + return errToCodeTuple[T]{err: err, code: code} +} + +func errTypeToCode[T ~int32](errTypeProto any, code T) errToCodeTuple[T] { + return errToCodeTuple[T]{code: code, checkErrorType: errTypeProto} } func mapErrorCode[T ~int32](err error, mappings ...errToCodeTuple[T]) T { @@ -35,8 +41,15 @@ func mapErrorCode[T ~int32](err error, mappings ...errToCodeTuple[T]) T { return 0 } for _, m := range mappings { - if errors.Is(err, m.err) { - return m.code + if m.err != nil { + if errors.Is(err, m.err) { + return m.code + } + } + if m.checkErrorType != nil { + if errors.As(err, m.checkErrorType) { + return m.code + } } } // Unknown error diff --git a/core/util_test.go b/core/util_test.go index 15e347107..8034bec12 100644 --- a/core/util_test.go +++ b/core/util_test.go @@ -8,12 +8,20 @@ import ( "github.com/stretchr/testify/assert" ) +type testErrorType struct { +} + +func (t testErrorType) Error() string { + return "error type!" +} + type testCode int32 func TestErrorCodeMapping(t *testing.T) { err1 := errors.New("err1") err2 := errors.New("err2") err3 := errors.New("err3") + err4 := testErrorType{} wrapped1 := errors.Join(err1, fmt.Errorf("description of error")) wrapped2 := fmt.Errorf("description of error: %w", err2) @@ -23,12 +31,14 @@ func TestErrorCodeMapping(t *testing.T) { errToCode(err1, testCode(2)), errToCode(err2, testCode(3)), errToCode(err3, testCode(4)), + errTypeToCode(&testErrorType{}, testCode(5)), ) } - assert.True(t, 0 == mapper(nil)) - assert.True(t, 1 == mapper(errors.New("unknown error"))) - assert.True(t, 2 == mapper(wrapped1)) - assert.True(t, 3 == mapper(wrapped2)) - assert.True(t, 4 == mapper(err3)) + assert.Equal(t, testCode(0), mapper(nil)) + assert.Equal(t, testCode(1), mapper(errors.New("unknown error"))) + assert.Equal(t, testCode(2), mapper(wrapped1)) + assert.Equal(t, testCode(3), mapper(wrapped2)) + assert.Equal(t, testCode(4), mapper(err3)) + assert.Equal(t, testCode(5), mapper(err4)) } diff --git a/docs/proto.md b/docs/proto.md index 9c24d4d11..88945944b 100644 --- a/docs/proto.md +++ b/docs/proto.md @@ -20622,7 +20622,7 @@ Middleware-to-front-end response, that can contain a NULL error or a non-NULL er | BAD_INPUT | 2 | Id or root path is wrong | | ACCOUNT_NOT_FOUND | 101 | | | CANCELED | 102 | | -| NOT_ENOUGH_STORAGE | 103 | TODO: [storage] Add specific error codes for migration problems | +| NOT_ENOUGH_FREE_SPACE | 103 | TODO: [storage] Add specific error codes for migration problems | diff --git a/pb/commands.pb.go b/pb/commands.pb.go index 6145b5c84..c4d3f890a 100644 --- a/pb/commands.pb.go +++ b/pb/commands.pb.go @@ -1135,12 +1135,12 @@ func (RpcAccountRevertDeletionResponseErrorCode) EnumDescriptor() ([]byte, []int type RpcAccountMigrateResponseErrorCode int32 const ( - RpcAccountMigrateResponseError_NULL RpcAccountMigrateResponseErrorCode = 0 - RpcAccountMigrateResponseError_UNKNOWN_ERROR RpcAccountMigrateResponseErrorCode = 1 - RpcAccountMigrateResponseError_BAD_INPUT RpcAccountMigrateResponseErrorCode = 2 - RpcAccountMigrateResponseError_ACCOUNT_NOT_FOUND RpcAccountMigrateResponseErrorCode = 101 - RpcAccountMigrateResponseError_CANCELED RpcAccountMigrateResponseErrorCode = 102 - RpcAccountMigrateResponseError_NOT_ENOUGH_STORAGE RpcAccountMigrateResponseErrorCode = 103 + RpcAccountMigrateResponseError_NULL RpcAccountMigrateResponseErrorCode = 0 + RpcAccountMigrateResponseError_UNKNOWN_ERROR RpcAccountMigrateResponseErrorCode = 1 + RpcAccountMigrateResponseError_BAD_INPUT RpcAccountMigrateResponseErrorCode = 2 + RpcAccountMigrateResponseError_ACCOUNT_NOT_FOUND RpcAccountMigrateResponseErrorCode = 101 + RpcAccountMigrateResponseError_CANCELED RpcAccountMigrateResponseErrorCode = 102 + RpcAccountMigrateResponseError_NOT_ENOUGH_FREE_SPACE RpcAccountMigrateResponseErrorCode = 103 ) var RpcAccountMigrateResponseErrorCode_name = map[int32]string{ @@ -1149,16 +1149,16 @@ var RpcAccountMigrateResponseErrorCode_name = map[int32]string{ 2: "BAD_INPUT", 101: "ACCOUNT_NOT_FOUND", 102: "CANCELED", - 103: "NOT_ENOUGH_STORAGE", + 103: "NOT_ENOUGH_FREE_SPACE", } var RpcAccountMigrateResponseErrorCode_value = map[string]int32{ - "NULL": 0, - "UNKNOWN_ERROR": 1, - "BAD_INPUT": 2, - "ACCOUNT_NOT_FOUND": 101, - "CANCELED": 102, - "NOT_ENOUGH_STORAGE": 103, + "NULL": 0, + "UNKNOWN_ERROR": 1, + "BAD_INPUT": 2, + "ACCOUNT_NOT_FOUND": 101, + "CANCELED": 102, + "NOT_ENOUGH_FREE_SPACE": 103, } func (x RpcAccountMigrateResponseErrorCode) String() string { @@ -71212,26 +71212,26 @@ func init() { func init() { proto.RegisterFile("pb/protos/commands.proto", fileDescriptor_8261c968b2e6f45c) } var fileDescriptor_8261c968b2e6f45c = []byte{ - // 19338 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x7d, 0x98, 0x23, 0x47, - 0x79, 0x2f, 0xba, 0xea, 0x96, 0x34, 0x33, 0xef, 0x7c, 0xac, 0xb6, 0xbd, 0xbb, 0x5e, 0xb7, 0xcd, + // 19341 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x7f, 0x9c, 0x23, 0x47, + 0x75, 0x2f, 0xba, 0xea, 0x96, 0x34, 0x33, 0x67, 0x7e, 0xac, 0xb6, 0xbd, 0xbb, 0x5e, 0xb7, 0xcd, 0xda, 0x59, 0x1b, 0xe3, 0x18, 0x33, 0x36, 0x86, 0x10, 0x6c, 0x6c, 0x6c, 0x8d, 0xa6, 0x67, 0x46, - 0xf6, 0x8c, 0x34, 0x69, 0x69, 0x76, 0x71, 0x72, 0x72, 0x75, 0x7a, 0xa5, 0x9a, 0x99, 0xf6, 0x6a, - 0xba, 0x45, 0xab, 0x67, 0xd6, 0xcb, 0x7d, 0xce, 0x3d, 0x21, 0xc4, 0x7c, 0x84, 0x10, 0x42, 0x08, - 0x49, 0xf8, 0x06, 0x83, 0xe1, 0x40, 0xc2, 0xf7, 0xd7, 0x81, 0x24, 0x40, 0xf8, 0x08, 0x84, 0x24, - 0x84, 0x40, 0x08, 0x84, 0x84, 0x1b, 0x08, 0x84, 0x90, 0xfb, 0x84, 0xcb, 0x4d, 0xee, 0x09, 0x1c, - 0x92, 0x70, 0xb9, 0x4f, 0x57, 0x55, 0x77, 0x57, 0x69, 0xd4, 0xad, 0x6a, 0x8d, 0x5a, 0x63, 0xc2, - 0xf9, 0xaf, 0xbb, 0xba, 0xfa, 0xad, 0xb7, 0xde, 0xdf, 0x5b, 0x55, 0x6f, 0x55, 0xbd, 0xf5, 0x16, + 0xf6, 0x8c, 0x34, 0xb4, 0x34, 0xbb, 0x38, 0xb9, 0x79, 0xba, 0xbd, 0x52, 0xcd, 0x4c, 0x7b, 0x35, + 0xdd, 0xa2, 0xd5, 0x33, 0xeb, 0xe5, 0x7d, 0xee, 0xbb, 0x21, 0xc4, 0xfc, 0x08, 0x21, 0x84, 0x10, + 0x92, 0xf0, 0x1b, 0x4c, 0x0c, 0x17, 0x12, 0x20, 0xfc, 0xbe, 0x90, 0x04, 0x08, 0x3f, 0x02, 0x21, + 0x09, 0x21, 0x10, 0x02, 0x21, 0xe1, 0x05, 0x02, 0x21, 0xe4, 0x7d, 0xc2, 0xe3, 0x25, 0xef, 0x06, + 0x2e, 0x09, 0x3c, 0xde, 0xa7, 0xab, 0xaa, 0xbb, 0xab, 0x34, 0xea, 0x56, 0xb5, 0x46, 0xad, 0x31, + 0xe1, 0xfe, 0xd7, 0x5d, 0x5d, 0x7d, 0xea, 0xd4, 0xf9, 0x9e, 0xaa, 0x3a, 0x55, 0x75, 0xea, 0x14, 0x9c, 0xea, 0x9c, 0xbf, 0xb9, 0xe3, 0xd8, 0xae, 0xdd, 0xbd, 0xb9, 0x69, 0xef, 0xec, 0x18, 0x56, 0xab, 0x3b, 0x8f, 0xdf, 0x95, 0x09, 0xc3, 0xba, 0xe4, 0x5e, 0xea, 0x20, 0xf5, 0xba, 0xce, 0x85, 0xad, 0x9b, 0xdb, 0xe6, 0xf9, 0x9b, 0x3b, 0xe7, 0x6f, 0xde, 0xb1, 0x5b, 0xa8, 0xed, 0xff, 0x80, 0x5f, 0x68, 0x76, 0xf5, 0x86, 0xa8, 0x5c, 0x6d, 0xbb, 0x69, 0xb4, 0xbb, 0xae, 0xed, 0x20, 0x9a, 0xf3, 0x64, 0x58, 0x24, 0xda, 0x43, 0x96, 0xeb, 0x53, 0xb8, 0x6a, 0xcb, 0xb6, 0xb7, 0xda, 0x88, 0x7c, 0x3b, 0xbf, 0xbb, 0x79, 0x73, 0xd7, 0x75, 0x76, 0x9b, 0x2e, 0xfd, 0x7a, 0x4d, 0xef, 0xd7, - 0x16, 0xea, 0x36, 0x1d, 0xb3, 0xe3, 0xda, 0x0e, 0xc9, 0x71, 0xe6, 0x43, 0x3f, 0x37, 0x09, 0xb2, - 0xde, 0x69, 0xaa, 0xdf, 0x99, 0x00, 0xb9, 0xd8, 0xe9, 0xa8, 0x1f, 0x97, 0x00, 0x96, 0x91, 0x7b, - 0x16, 0x39, 0x5d, 0xd3, 0xb6, 0xd4, 0xa3, 0x30, 0xa1, 0xa3, 0xa7, 0xef, 0xa2, 0xae, 0x7b, 0x7b, - 0xf6, 0xb9, 0xdf, 0x90, 0x33, 0xea, 0xc3, 0x12, 0x4c, 0xea, 0xa8, 0xdb, 0xb1, 0xad, 0x2e, 0x52, + 0x16, 0xea, 0x36, 0x1d, 0xb3, 0xe3, 0xda, 0x0e, 0xc9, 0x71, 0xe6, 0xc3, 0x3f, 0x3b, 0x09, 0xb2, + 0xde, 0x69, 0xaa, 0xdf, 0x9e, 0x00, 0xb9, 0xd8, 0xe9, 0xa8, 0x1f, 0x93, 0x00, 0x96, 0x91, 0x7b, + 0x16, 0x39, 0x5d, 0xd3, 0xb6, 0xd4, 0xa3, 0x30, 0xa1, 0xa3, 0x67, 0xec, 0xa2, 0xae, 0x7b, 0x7b, + 0xf6, 0x79, 0x5f, 0x97, 0x33, 0xea, 0xc3, 0x12, 0x4c, 0xea, 0xa8, 0xdb, 0xb1, 0xad, 0x2e, 0x52, 0xee, 0x86, 0x1c, 0x72, 0x1c, 0xdb, 0x39, 0x95, 0xb9, 0x26, 0x73, 0xc3, 0xf4, 0xad, 0x37, 0xce, 0xd3, 0xea, 0xcf, 0xeb, 0x9d, 0xe6, 0x7c, 0xb1, 0xd3, 0x99, 0x0f, 0x29, 0xcd, 0xfb, 0x3f, 0xcd, 0x6b, 0xde, 0x1f, 0x3a, 0xf9, 0x51, 0x39, 0x05, 0x13, 0x7b, 0x24, 0xc3, 0x29, 0xe9, 0x9a, 0xcc, @@ -71241,1187 +71241,1187 @@ var fileDescriptor_8261c968b2e6f45c = []byte{ 0xb1, 0x84, 0x6c, 0xb0, 0x49, 0x67, 0x6e, 0x85, 0xac, 0x97, 0x5f, 0x99, 0x84, 0x6c, 0x65, 0x63, 0x75, 0xb5, 0x70, 0x44, 0x39, 0x06, 0xb3, 0x1b, 0x95, 0x7b, 0x2b, 0xd5, 0x73, 0x95, 0x86, 0xa6, 0xeb, 0x55, 0xbd, 0x90, 0x51, 0x66, 0x61, 0x6a, 0xa1, 0xb8, 0xd8, 0x28, 0x57, 0xd6, 0x37, 0xea, - 0x05, 0x49, 0x7d, 0x95, 0x0c, 0x73, 0x35, 0xe4, 0x2e, 0xa2, 0x3d, 0xb3, 0x89, 0x6a, 0xae, 0xe1, - 0x22, 0xf5, 0x85, 0x99, 0x40, 0x98, 0xca, 0x86, 0x57, 0x68, 0xf0, 0x89, 0x56, 0xe0, 0x09, 0xfb, + 0x05, 0x49, 0x7d, 0xb5, 0x0c, 0x73, 0x35, 0xe4, 0x2e, 0xa2, 0x3d, 0xb3, 0x89, 0x6a, 0xae, 0xe1, + 0x22, 0xf5, 0x45, 0x99, 0x40, 0x98, 0xca, 0x86, 0x57, 0x68, 0xf0, 0x89, 0x56, 0xe0, 0x09, 0xfb, 0x2a, 0xc0, 0x53, 0x98, 0xa7, 0x7f, 0xcf, 0x33, 0x69, 0x3a, 0x4b, 0xe7, 0xcc, 0xe3, 0x60, 0x9a, 0xf9, 0xa6, 0xcc, 0x01, 0x2c, 0x14, 0x4b, 0xf7, 0x2e, 0xeb, 0xd5, 0x8d, 0xca, 0x62, 0xe1, 0x88, - 0xf7, 0xbe, 0x54, 0xd5, 0x35, 0xfa, 0x9e, 0x51, 0xbf, 0x97, 0x61, 0xc0, 0x5c, 0xe4, 0xc1, 0x9c, + 0xf7, 0xbe, 0x54, 0xd5, 0x35, 0xfa, 0x9e, 0x51, 0xbf, 0x9b, 0x61, 0xc0, 0x5c, 0xe4, 0xc1, 0x9c, 0x1f, 0xcc, 0x4c, 0x1f, 0x40, 0xd5, 0x37, 0x04, 0xe0, 0x2c, 0x73, 0xe0, 0x3c, 0x21, 0x19, 0xb9, 0xf4, 0x01, 0x7a, 0x50, 0x82, 0xc9, 0xda, 0xf6, 0xae, 0xdb, 0xb2, 0x2f, 0x5a, 0xea, 0x54, 0x80, - 0x8c, 0xfa, 0x2d, 0x56, 0x26, 0x4f, 0xe5, 0x65, 0x72, 0xc3, 0xfe, 0x4a, 0x50, 0x0a, 0x11, 0xd2, - 0x78, 0x4d, 0x20, 0x8d, 0x22, 0x27, 0x8d, 0xc7, 0x89, 0x12, 0x4a, 0x5f, 0x0e, 0x2f, 0x7b, 0x32, - 0xe4, 0x6a, 0x1d, 0xa3, 0x89, 0xd4, 0x3f, 0x96, 0x61, 0x66, 0x15, 0x19, 0x7b, 0xa8, 0xd8, 0xe9, + 0x8c, 0xfa, 0x4d, 0x56, 0x26, 0x4f, 0xe5, 0x65, 0x72, 0xc3, 0xfe, 0x4a, 0x50, 0x0a, 0x11, 0xd2, + 0x78, 0x6d, 0x20, 0x8d, 0x22, 0x27, 0x8d, 0xc7, 0x89, 0x12, 0x4a, 0x5f, 0x0e, 0x2f, 0x7f, 0x32, + 0xe4, 0x6a, 0x1d, 0xa3, 0x89, 0xd4, 0x3f, 0x91, 0x61, 0x66, 0x15, 0x19, 0x7b, 0xa8, 0xd8, 0xe9, 0x38, 0xf6, 0x1e, 0x52, 0x4b, 0xa1, 0xbe, 0x9e, 0x82, 0x89, 0xae, 0x97, 0xa9, 0xdc, 0xc2, 0x35, 0x98, 0xd2, 0xfd, 0x57, 0xe5, 0x34, 0x80, 0xd9, 0x42, 0x96, 0x6b, 0xba, 0x26, 0xea, 0x9e, 0x92, - 0xae, 0x91, 0x6f, 0x98, 0xd2, 0x99, 0x14, 0xf5, 0x3b, 0x92, 0xa8, 0x8e, 0x61, 0x2e, 0xe6, 0x59, - 0x0e, 0x22, 0xa4, 0xfa, 0x3a, 0x49, 0x44, 0xc7, 0x06, 0x92, 0x4b, 0x26, 0xdb, 0xb7, 0x66, 0x92, + 0xae, 0x91, 0x6f, 0x98, 0xd2, 0x99, 0x14, 0xf5, 0xdb, 0x92, 0xa8, 0x8e, 0x61, 0x2e, 0xe6, 0x59, + 0x0e, 0x22, 0xa4, 0xfa, 0x7a, 0x49, 0x44, 0xc7, 0x06, 0x92, 0x4b, 0x26, 0xdb, 0xb7, 0x66, 0x92, 0x0b, 0xd7, 0xcb, 0x51, 0xa9, 0x36, 0x6a, 0x1b, 0xa5, 0x95, 0x46, 0x6d, 0xbd, 0x58, 0xd2, 0x0a, 0x48, 0x39, 0x0e, 0x05, 0xfc, 0xd8, 0x28, 0xd7, 0x1a, 0x8b, 0xda, 0xaa, 0x56, 0xd7, 0x16, 0x0b, - 0x9b, 0x8a, 0x02, 0x73, 0xba, 0xf6, 0x53, 0x1b, 0x5a, 0xad, 0xde, 0x58, 0x2a, 0x96, 0x57, 0xb5, - 0xc5, 0xc2, 0x96, 0xf7, 0xf3, 0x6a, 0x79, 0xad, 0x5c, 0x6f, 0xe8, 0x5a, 0xb1, 0xb4, 0xa2, 0x2d, - 0x16, 0xb6, 0x95, 0xcb, 0xe1, 0xb2, 0x4a, 0xb5, 0x51, 0x5c, 0x5f, 0xd7, 0xab, 0x67, 0xb5, 0x06, - 0xfd, 0xa3, 0x56, 0x30, 0x49, 0x41, 0xf5, 0x46, 0x6d, 0xa5, 0xa8, 0x6b, 0xc5, 0x85, 0x55, 0xad, - 0x70, 0xbf, 0xfa, 0x2c, 0x19, 0x66, 0xd7, 0x8c, 0x0b, 0xa8, 0xb6, 0x6d, 0x38, 0xc8, 0x38, 0xdf, - 0x46, 0xea, 0xb5, 0x02, 0x78, 0xaa, 0x7f, 0xcc, 0xe2, 0xa5, 0xf1, 0x78, 0xdd, 0xdc, 0x47, 0xc0, - 0x5c, 0x11, 0x11, 0x80, 0xfd, 0xcf, 0xa0, 0x19, 0xac, 0x70, 0x80, 0x3d, 0x31, 0x21, 0xbd, 0x64, - 0x88, 0xfd, 0xfc, 0x23, 0x00, 0x31, 0xf5, 0xcb, 0x32, 0xcc, 0x95, 0xad, 0x3d, 0xd3, 0x45, 0xcb, - 0xc8, 0x42, 0x8e, 0x37, 0x0e, 0x08, 0xc1, 0xf0, 0xb0, 0xcc, 0xc0, 0xb0, 0xc4, 0xc3, 0x70, 0x4b, - 0x1f, 0xb1, 0xf1, 0x65, 0x44, 0x8c, 0xb6, 0x57, 0xc1, 0x94, 0x89, 0xf3, 0x95, 0xcc, 0x16, 0x95, - 0x58, 0x98, 0xa0, 0x5c, 0x07, 0xb3, 0xe4, 0x65, 0xc9, 0x6c, 0xa3, 0x7b, 0xd1, 0x25, 0x3a, 0xee, - 0xf2, 0x89, 0xea, 0x2f, 0x05, 0x8d, 0xaf, 0xcc, 0x61, 0xf9, 0x13, 0x49, 0x99, 0x4a, 0x06, 0xe6, - 0x4b, 0x1e, 0x09, 0xcd, 0x6f, 0x5f, 0x2b, 0x33, 0xd5, 0xef, 0x4b, 0x30, 0x5d, 0x73, 0xed, 0x8e, - 0xa7, 0xb2, 0xa6, 0xb5, 0x25, 0x06, 0xee, 0x27, 0xd9, 0x36, 0x56, 0xe2, 0xc1, 0x7d, 0x5c, 0x1f, - 0x39, 0x32, 0x05, 0x44, 0xb4, 0xb0, 0xef, 0x04, 0x2d, 0x6c, 0x89, 0x43, 0xe5, 0xd6, 0x44, 0xd4, - 0x7e, 0x08, 0xdb, 0xd7, 0x4b, 0x64, 0x28, 0xf8, 0x6a, 0xe6, 0x96, 0x76, 0x1d, 0x07, 0x59, 0xae, - 0x18, 0x08, 0x7f, 0xc5, 0x82, 0xb0, 0xc2, 0x83, 0x70, 0x6b, 0x8c, 0x32, 0xfb, 0xa5, 0xa4, 0xd8, - 0xc6, 0x3e, 0x1c, 0xa0, 0x79, 0x2f, 0x87, 0xe6, 0x4f, 0x26, 0x67, 0x2b, 0x19, 0xa4, 0x2b, 0x43, - 0x20, 0x7a, 0x1c, 0x0a, 0xde, 0x98, 0x54, 0xaa, 0x97, 0xcf, 0x6a, 0x8d, 0x72, 0xe5, 0x6c, 0xb9, - 0xae, 0x15, 0x90, 0xfa, 0x62, 0x19, 0x66, 0x08, 0x6b, 0x3a, 0xda, 0xb3, 0x2f, 0x08, 0xf6, 0x7a, - 0x5f, 0x4e, 0x68, 0x2c, 0xb0, 0x25, 0x44, 0xb4, 0x8c, 0x5f, 0x4c, 0x60, 0x2c, 0xc4, 0x90, 0x7b, - 0x24, 0xf5, 0x56, 0xfb, 0x9a, 0xc1, 0x56, 0x9f, 0xd6, 0xd2, 0xb7, 0xb7, 0x7a, 0x49, 0x16, 0x80, - 0x54, 0xf2, 0xac, 0x89, 0x2e, 0xaa, 0x6b, 0x21, 0x26, 0x9c, 0xda, 0x66, 0x06, 0xaa, 0xad, 0xd4, - 0x4f, 0x6d, 0xdf, 0xc7, 0x8e, 0x59, 0x0b, 0x3c, 0x7a, 0x37, 0x45, 0x8a, 0xdb, 0xe3, 0x24, 0x7a, - 0x76, 0xe8, 0x2b, 0x8a, 0xc4, 0x5b, 0x9d, 0x57, 0xc1, 0x14, 0x7e, 0xac, 0x18, 0x3b, 0x88, 0xb6, - 0xa1, 0x30, 0x41, 0x39, 0x03, 0x33, 0x24, 0x63, 0xd3, 0xb6, 0xbc, 0xfa, 0x64, 0x71, 0x06, 0x2e, - 0xcd, 0x03, 0xb1, 0xe9, 0x20, 0xc3, 0xb5, 0x1d, 0x4c, 0x23, 0x47, 0x40, 0x64, 0x92, 0xd4, 0x6f, - 0x06, 0xad, 0x50, 0xe3, 0x34, 0xe7, 0xf1, 0x49, 0xaa, 0x92, 0x4c, 0x6f, 0xf6, 0x86, 0x6b, 0x7f, - 0xa4, 0xd5, 0x35, 0x3c, 0xb4, 0x97, 0xf0, 0xd4, 0x0e, 0x29, 0x27, 0x41, 0xa1, 0xa9, 0x5e, 0xde, - 0x52, 0xb5, 0x52, 0xd7, 0x2a, 0xf5, 0xc2, 0x66, 0x5f, 0x8d, 0xda, 0x52, 0x5f, 0x97, 0x85, 0xec, - 0x3d, 0xb6, 0x69, 0xa9, 0x0f, 0x66, 0x38, 0x95, 0xb0, 0x90, 0x7b, 0xd1, 0x76, 0x2e, 0x04, 0x0d, - 0x35, 0x4c, 0x88, 0xc7, 0x26, 0x54, 0x25, 0x79, 0xa0, 0x2a, 0x65, 0xfb, 0xa9, 0xd2, 0xaf, 0xb2, - 0xaa, 0x74, 0x07, 0xaf, 0x4a, 0xd7, 0xf7, 0x91, 0xbf, 0xc7, 0x7c, 0x44, 0x07, 0xf0, 0x89, 0xa0, - 0x03, 0xb8, 0x8b, 0x83, 0xf1, 0xb1, 0x62, 0x64, 0x92, 0x01, 0xf8, 0xa5, 0x54, 0x1b, 0x7e, 0x3f, - 0xa8, 0xb7, 0x22, 0xa0, 0xde, 0xee, 0xd3, 0x27, 0x98, 0xfb, 0xbb, 0x8e, 0xfb, 0xf7, 0x77, 0x13, - 0x17, 0x94, 0x13, 0x70, 0x6c, 0xb1, 0xbc, 0xb4, 0xa4, 0xe9, 0x5a, 0xa5, 0xde, 0xa8, 0x68, 0xf5, - 0x73, 0x55, 0xfd, 0xde, 0x42, 0x5b, 0x7d, 0x48, 0x06, 0xf0, 0x24, 0x54, 0x32, 0xac, 0x26, 0x6a, - 0x8b, 0xf5, 0xe8, 0xff, 0xb7, 0x94, 0xac, 0x4f, 0x08, 0xe9, 0x47, 0xc0, 0xf9, 0x4a, 0x49, 0xbc, - 0x55, 0x46, 0x12, 0x4b, 0x06, 0xea, 0x9b, 0x1f, 0x09, 0xb6, 0xe7, 0x65, 0x70, 0xd4, 0xa7, 0x47, - 0xb3, 0xf7, 0x9f, 0xf6, 0xbd, 0x2d, 0x0b, 0x73, 0x14, 0x16, 0x7f, 0x1e, 0xff, 0xdc, 0x8c, 0xc8, - 0x44, 0x5e, 0x85, 0x49, 0x3a, 0x6d, 0xf7, 0xbb, 0xf7, 0xe0, 0x5d, 0x59, 0x86, 0xe9, 0x0e, 0x72, - 0x76, 0xcc, 0x6e, 0xd7, 0xb4, 0x2d, 0xb2, 0x20, 0x37, 0x77, 0xeb, 0xa3, 0x03, 0x89, 0xe3, 0xb5, - 0xcb, 0xf9, 0x75, 0xc3, 0x71, 0xcd, 0xa6, 0xd9, 0x31, 0x2c, 0x77, 0x3d, 0xcc, 0xac, 0xb3, 0x7f, - 0xaa, 0x2f, 0x4a, 0x38, 0xad, 0xe1, 0x6b, 0x12, 0xa1, 0x12, 0xbf, 0x9b, 0x60, 0x4a, 0x12, 0x4b, - 0x30, 0x99, 0x5a, 0x7c, 0x3c, 0x55, 0xb5, 0xe8, 0x83, 0xf7, 0x96, 0x72, 0x05, 0x9c, 0x28, 0x57, - 0x4a, 0x55, 0x5d, 0xd7, 0x4a, 0xf5, 0xc6, 0xba, 0xa6, 0xaf, 0x95, 0x6b, 0xb5, 0x72, 0xb5, 0x52, - 0x3b, 0x48, 0x6b, 0x57, 0x3f, 0x25, 0x07, 0x1a, 0xb3, 0x88, 0x9a, 0x6d, 0xd3, 0x42, 0xea, 0x5d, - 0x07, 0x54, 0x18, 0x7e, 0xd5, 0x47, 0x1c, 0x67, 0x5a, 0x7e, 0x04, 0xce, 0xaf, 0x4d, 0x8e, 0x73, - 0x7f, 0x82, 0xff, 0x81, 0x9b, 0xff, 0x97, 0x65, 0x38, 0xc6, 0x34, 0x44, 0x1d, 0xed, 0x8c, 0x6c, - 0x25, 0xef, 0xe7, 0xd9, 0xb6, 0x5b, 0xe6, 0x31, 0xed, 0x67, 0x4d, 0xef, 0x63, 0x23, 0x02, 0xd6, - 0x37, 0x07, 0xb0, 0xae, 0x72, 0xb0, 0x3e, 0x79, 0x08, 0x9a, 0xc9, 0x90, 0x7d, 0x7b, 0xaa, 0xc8, + 0x9b, 0x8a, 0x02, 0x73, 0xba, 0xf6, 0xb4, 0x0d, 0xad, 0x56, 0x6f, 0x2c, 0x15, 0xcb, 0xab, 0xda, + 0x62, 0x61, 0xcb, 0xfb, 0x79, 0xb5, 0xbc, 0x56, 0xae, 0x37, 0x74, 0xad, 0x58, 0x5a, 0xd1, 0x16, + 0x0b, 0xdb, 0xca, 0xe5, 0x70, 0x59, 0xa5, 0xda, 0x28, 0xae, 0xaf, 0xeb, 0xd5, 0xb3, 0x5a, 0x83, + 0xfe, 0x51, 0x2b, 0x98, 0xa4, 0xa0, 0x7a, 0xa3, 0xb6, 0x52, 0xd4, 0xb5, 0xe2, 0xc2, 0xaa, 0x56, + 0xb8, 0x5f, 0x7d, 0xb6, 0x0c, 0xb3, 0x6b, 0xc6, 0x05, 0x54, 0xdb, 0x36, 0x1c, 0x64, 0x9c, 0x6f, + 0x23, 0xf5, 0x5a, 0x01, 0x3c, 0xd5, 0x3f, 0x61, 0xf1, 0xd2, 0x78, 0xbc, 0x6e, 0xee, 0x23, 0x60, + 0xae, 0x88, 0x08, 0xc0, 0xfe, 0x67, 0xd0, 0x0c, 0x56, 0x38, 0xc0, 0x9e, 0x98, 0x90, 0x5e, 0x32, + 0xc4, 0x7e, 0xee, 0x11, 0x80, 0x98, 0xfa, 0x25, 0x19, 0xe6, 0xca, 0xd6, 0x9e, 0xe9, 0xa2, 0x65, + 0x64, 0x21, 0xc7, 0x1b, 0x07, 0x84, 0x60, 0x78, 0x58, 0x66, 0x60, 0x58, 0xe2, 0x61, 0xb8, 0xa5, + 0x8f, 0xd8, 0xf8, 0x32, 0x22, 0x46, 0xdb, 0xab, 0x60, 0xca, 0xc4, 0xf9, 0x4a, 0x66, 0x8b, 0x4a, + 0x2c, 0x4c, 0x50, 0xae, 0x83, 0x59, 0xf2, 0xb2, 0x64, 0xb6, 0xd1, 0xbd, 0xe8, 0x12, 0x1d, 0x77, + 0xf9, 0x44, 0xf5, 0x17, 0x83, 0xc6, 0x57, 0xe6, 0xb0, 0xfc, 0x89, 0xa4, 0x4c, 0x25, 0x03, 0xf3, + 0xa5, 0x8f, 0x84, 0xe6, 0xb7, 0xaf, 0x95, 0x99, 0xea, 0xf7, 0x25, 0x98, 0xae, 0xb9, 0x76, 0xc7, + 0x53, 0x59, 0xd3, 0xda, 0x12, 0x03, 0xf7, 0x13, 0x6c, 0x1b, 0x2b, 0xf1, 0xe0, 0x3e, 0xae, 0x8f, + 0x1c, 0x99, 0x02, 0x22, 0x5a, 0xd8, 0xb7, 0x83, 0x16, 0xb6, 0xc4, 0xa1, 0x72, 0x6b, 0x22, 0x6a, + 0x3f, 0x84, 0xed, 0xeb, 0xa5, 0x32, 0x14, 0x7c, 0x35, 0x73, 0x4b, 0xbb, 0x8e, 0x83, 0x2c, 0x57, + 0x0c, 0x84, 0xbf, 0x66, 0x41, 0x58, 0xe1, 0x41, 0xb8, 0x35, 0x46, 0x99, 0xfd, 0x52, 0x52, 0x6c, + 0x63, 0x1f, 0x0a, 0xd0, 0xbc, 0x97, 0x43, 0xf3, 0x27, 0x93, 0xb3, 0x95, 0x0c, 0xd2, 0x95, 0x21, + 0x10, 0x3d, 0x0e, 0x05, 0x6f, 0x4c, 0x2a, 0xd5, 0xcb, 0x67, 0xb5, 0x46, 0xb9, 0x72, 0xb6, 0x5c, + 0xd7, 0x0a, 0x48, 0x7d, 0x89, 0x0c, 0x33, 0x84, 0x35, 0x1d, 0xed, 0xd9, 0x17, 0x04, 0x7b, 0xbd, + 0x2f, 0x25, 0x34, 0x16, 0xd8, 0x12, 0x22, 0x5a, 0xc6, 0x2f, 0x24, 0x30, 0x16, 0x62, 0xc8, 0x3d, + 0x92, 0x7a, 0xab, 0x7d, 0xcd, 0x60, 0xab, 0x4f, 0x6b, 0xe9, 0xdb, 0x5b, 0xbd, 0x34, 0x0b, 0x40, + 0x2a, 0x79, 0xd6, 0x44, 0x17, 0xd5, 0xb5, 0x10, 0x13, 0x4e, 0x6d, 0x33, 0x03, 0xd5, 0x56, 0xea, + 0xa7, 0xb6, 0xef, 0x65, 0xc7, 0xac, 0x05, 0x1e, 0xbd, 0x9b, 0x22, 0xc5, 0xed, 0x71, 0x12, 0x3d, + 0x3b, 0xf4, 0x15, 0x45, 0xe2, 0xad, 0xce, 0xab, 0x60, 0x0a, 0x3f, 0x56, 0x8c, 0x1d, 0x44, 0xdb, + 0x50, 0x98, 0xa0, 0x9c, 0x81, 0x19, 0x92, 0xb1, 0x69, 0x5b, 0x5e, 0x7d, 0xb2, 0x38, 0x03, 0x97, + 0xe6, 0x81, 0xd8, 0x74, 0x90, 0xe1, 0xda, 0x0e, 0xa6, 0x91, 0x23, 0x20, 0x32, 0x49, 0xea, 0x37, + 0x82, 0x56, 0xa8, 0x71, 0x9a, 0xf3, 0xf8, 0x24, 0x55, 0x49, 0xa6, 0x37, 0x7b, 0xc3, 0xb5, 0x3f, + 0xd2, 0xea, 0x1a, 0x1e, 0xda, 0x4b, 0x78, 0x6a, 0x87, 0x94, 0x93, 0xa0, 0xd0, 0x54, 0x2f, 0x6f, + 0xa9, 0x5a, 0xa9, 0x6b, 0x95, 0x7a, 0x61, 0xb3, 0xaf, 0x46, 0x6d, 0xa9, 0xaf, 0xcf, 0x42, 0xf6, + 0x1e, 0xdb, 0xb4, 0xd4, 0x07, 0x33, 0x9c, 0x4a, 0x58, 0xc8, 0xbd, 0x68, 0x3b, 0x17, 0x82, 0x86, + 0x1a, 0x26, 0xc4, 0x63, 0x13, 0xaa, 0x92, 0x3c, 0x50, 0x95, 0xb2, 0xfd, 0x54, 0xe9, 0x57, 0x58, + 0x55, 0xba, 0x83, 0x57, 0xa5, 0xeb, 0xfb, 0xc8, 0xdf, 0x63, 0x3e, 0xa2, 0x03, 0xf8, 0x78, 0xd0, + 0x01, 0xdc, 0xc5, 0xc1, 0xf8, 0x58, 0x31, 0x32, 0xc9, 0x00, 0xfc, 0x62, 0xaa, 0x0d, 0xbf, 0x1f, + 0xd4, 0x5b, 0x11, 0x50, 0x6f, 0xf7, 0xe9, 0x13, 0xcc, 0xfd, 0x5d, 0xc7, 0xfd, 0xfb, 0xbb, 0x89, + 0x0b, 0xca, 0x09, 0x38, 0xb6, 0x58, 0x5e, 0x5a, 0xd2, 0x74, 0xad, 0x52, 0x6f, 0x54, 0xb4, 0xfa, + 0xb9, 0xaa, 0x7e, 0x6f, 0xa1, 0xad, 0x3e, 0x24, 0x03, 0x78, 0x12, 0x2a, 0x19, 0x56, 0x13, 0xb5, + 0xc5, 0x7a, 0xf4, 0xff, 0x5b, 0x4a, 0xd6, 0x27, 0x84, 0xf4, 0x23, 0xe0, 0x7c, 0x95, 0x24, 0xde, + 0x2a, 0x23, 0x89, 0x25, 0x03, 0xf5, 0xcd, 0x8f, 0x04, 0xdb, 0xf3, 0x32, 0x38, 0xea, 0xd3, 0xa3, + 0xd9, 0xfb, 0x4f, 0xfb, 0xde, 0x96, 0x85, 0x39, 0x0a, 0x8b, 0x3f, 0x8f, 0x7f, 0x5e, 0x46, 0x64, + 0x22, 0xaf, 0xc2, 0x24, 0x9d, 0xb6, 0xfb, 0xdd, 0x7b, 0xf0, 0xae, 0x2c, 0xc3, 0x74, 0x07, 0x39, + 0x3b, 0x66, 0xb7, 0x6b, 0xda, 0x16, 0x59, 0x90, 0x9b, 0xbb, 0xf5, 0xd1, 0x81, 0xc4, 0xf1, 0xda, + 0xe5, 0xfc, 0xba, 0xe1, 0xb8, 0x66, 0xd3, 0xec, 0x18, 0x96, 0xbb, 0x1e, 0x66, 0xd6, 0xd9, 0x3f, + 0xd5, 0x17, 0x27, 0x9c, 0xd6, 0xf0, 0x35, 0x89, 0x50, 0x89, 0xdf, 0x4b, 0x30, 0x25, 0x89, 0x25, + 0x98, 0x4c, 0x2d, 0x3e, 0x96, 0xaa, 0x5a, 0xf4, 0xc1, 0x7b, 0x4b, 0xb9, 0x02, 0x4e, 0x94, 0x2b, + 0xa5, 0xaa, 0xae, 0x6b, 0xa5, 0x7a, 0x63, 0x5d, 0xd3, 0xd7, 0xca, 0xb5, 0x5a, 0xb9, 0x5a, 0xa9, + 0x1d, 0xa4, 0xb5, 0xab, 0x9f, 0x94, 0x03, 0x8d, 0x59, 0x44, 0xcd, 0xb6, 0x69, 0x21, 0xf5, 0xae, + 0x03, 0x2a, 0x0c, 0xbf, 0xea, 0x23, 0x8e, 0x33, 0x2d, 0x3f, 0x02, 0xe7, 0xd7, 0x25, 0xc7, 0xb9, + 0x3f, 0xc1, 0xff, 0xc0, 0xcd, 0xff, 0x4b, 0x32, 0x1c, 0x63, 0x1a, 0xa2, 0x8e, 0x76, 0x46, 0xb6, + 0x92, 0xf7, 0x73, 0x6c, 0xdb, 0x2d, 0xf3, 0x98, 0xf6, 0xb3, 0xa6, 0xf7, 0xb1, 0x11, 0x01, 0xeb, + 0x9b, 0x03, 0x58, 0x57, 0x39, 0x58, 0x9f, 0x3c, 0x04, 0xcd, 0x64, 0xc8, 0xfe, 0x4e, 0xaa, 0xc8, 0x5e, 0x01, 0x27, 0xd6, 0x8b, 0x7a, 0xbd, 0x5c, 0x2a, 0xaf, 0x17, 0xbd, 0x71, 0x94, 0x19, 0xb2, - 0x23, 0xcc, 0x75, 0x1e, 0xf4, 0xbe, 0xf8, 0x7e, 0x28, 0x0b, 0x57, 0xf5, 0xef, 0x68, 0x4b, 0xdb, + 0x23, 0xcc, 0x75, 0x1e, 0xf4, 0xbe, 0xf8, 0x7e, 0x30, 0x0b, 0x57, 0xf5, 0xef, 0x68, 0x4b, 0xdb, 0x86, 0xb5, 0x85, 0x54, 0x53, 0x04, 0xea, 0x45, 0x98, 0x68, 0xe2, 0xec, 0x04, 0x67, 0x76, 0xeb, - 0x26, 0xa6, 0x2f, 0x27, 0x25, 0xe8, 0xfe, 0xaf, 0xea, 0xbb, 0x58, 0x85, 0xa8, 0xf3, 0x0a, 0xf1, - 0xd4, 0x78, 0xf0, 0xf6, 0xf1, 0x1d, 0xa1, 0x1b, 0x9f, 0x09, 0x74, 0xe3, 0x1c, 0xa7, 0x1b, 0xa5, - 0x83, 0x91, 0x4f, 0xa6, 0x26, 0x7f, 0xf4, 0x48, 0xe8, 0x00, 0x22, 0xb5, 0xc9, 0x8c, 0x1e, 0x15, - 0xfa, 0x76, 0xf7, 0xaf, 0x96, 0x21, 0xbf, 0x88, 0xda, 0x48, 0x74, 0x25, 0xf2, 0xdb, 0x92, 0xe8, + 0x26, 0xa6, 0x2f, 0x27, 0x25, 0xe8, 0xfe, 0xaf, 0xea, 0x3b, 0x59, 0x85, 0xa8, 0xf3, 0x0a, 0xf1, + 0xd4, 0x78, 0xf0, 0xf6, 0xf1, 0x1d, 0xa1, 0x1b, 0x9f, 0x0e, 0x74, 0xe3, 0x1c, 0xa7, 0x1b, 0xa5, + 0x83, 0x91, 0x4f, 0xa6, 0x26, 0x7f, 0xfc, 0x48, 0xe8, 0x00, 0x22, 0xb5, 0xc9, 0x8c, 0x1e, 0x15, + 0xfa, 0x76, 0xf7, 0xaf, 0x91, 0x21, 0xbf, 0x88, 0xda, 0x48, 0x74, 0x25, 0xf2, 0x5b, 0x92, 0xe8, 0x86, 0x08, 0x81, 0x81, 0xd0, 0x8e, 0x5e, 0x1d, 0x71, 0xcd, 0x1d, 0xd4, 0x75, 0x8d, 0x9d, 0x0e, - 0x16, 0xb5, 0xac, 0x87, 0x09, 0xea, 0x2f, 0x48, 0x22, 0xdb, 0x25, 0x31, 0xc5, 0xfc, 0xc7, 0x58, - 0x53, 0xfc, 0x9c, 0x04, 0x93, 0x35, 0xe4, 0x56, 0x9d, 0x16, 0x72, 0xd4, 0x5a, 0x88, 0xd1, 0x35, + 0x16, 0xb5, 0xac, 0x87, 0x09, 0xea, 0xcf, 0x4b, 0x22, 0xdb, 0x25, 0x31, 0xc5, 0xfc, 0xc7, 0x58, + 0x53, 0xfc, 0xac, 0x04, 0x93, 0x35, 0xe4, 0x56, 0x9d, 0x16, 0x72, 0xd4, 0x5a, 0x88, 0xd1, 0x35, 0x30, 0x8d, 0x41, 0xf1, 0xa6, 0x99, 0x01, 0x4e, 0x6c, 0x92, 0x72, 0x3d, 0xcc, 0x05, 0xaf, 0xf8, - 0x77, 0xda, 0x8d, 0xf7, 0xa4, 0xaa, 0xff, 0x94, 0x11, 0xdd, 0xc5, 0xa5, 0x4b, 0x86, 0x94, 0x9b, - 0x88, 0x56, 0x2a, 0xb6, 0x23, 0x1b, 0x4b, 0x2a, 0xfd, 0x8d, 0xae, 0x77, 0x48, 0x00, 0x1b, 0x56, - 0xd7, 0x97, 0xeb, 0x63, 0x13, 0xc8, 0x55, 0xfd, 0x97, 0x4c, 0xb2, 0x59, 0x4c, 0x58, 0x4e, 0x84, - 0xc4, 0x5e, 0x9f, 0x60, 0x6d, 0x21, 0x92, 0x58, 0xfa, 0x32, 0xfb, 0xda, 0x1c, 0xe4, 0xcf, 0x19, - 0xed, 0x36, 0x72, 0xd5, 0xaf, 0x4b, 0x90, 0x2f, 0x39, 0xc8, 0x70, 0x11, 0x2b, 0x3a, 0x15, 0x26, - 0x1d, 0xdb, 0x76, 0xd7, 0x0d, 0x77, 0x9b, 0xca, 0x2d, 0x78, 0xa7, 0x0e, 0x03, 0xbf, 0xcd, 0x76, - 0x1f, 0x77, 0xf1, 0xa2, 0xfb, 0x71, 0xae, 0xb6, 0xa4, 0xa0, 0x79, 0x52, 0x48, 0x44, 0xff, 0xa1, - 0xc2, 0xe4, 0x8e, 0x85, 0x76, 0x6c, 0xcb, 0x6c, 0xfa, 0x36, 0xa7, 0xff, 0xae, 0x7e, 0x24, 0x90, - 0xe9, 0x02, 0x27, 0xd3, 0x79, 0xe1, 0x52, 0x92, 0x09, 0xb4, 0x36, 0x44, 0xef, 0x71, 0x35, 0x5c, - 0x49, 0x3a, 0x83, 0x46, 0xbd, 0xda, 0x28, 0xe9, 0x5a, 0xb1, 0xae, 0x35, 0x56, 0xab, 0xa5, 0xe2, - 0x6a, 0x43, 0xd7, 0xd6, 0xab, 0x05, 0xa4, 0xfe, 0xbd, 0xe4, 0x09, 0xb7, 0x69, 0xef, 0x21, 0x47, - 0x5d, 0x16, 0x92, 0x73, 0x9c, 0x4c, 0x28, 0x06, 0xbf, 0x2a, 0xec, 0xb4, 0x41, 0xa5, 0x43, 0x39, - 0x88, 0x50, 0xde, 0x8f, 0x0a, 0x35, 0xf7, 0x58, 0x52, 0x8f, 0x00, 0x49, 0xff, 0x0f, 0x09, 0x26, - 0x4a, 0xb6, 0xb5, 0x87, 0x1c, 0x97, 0x9d, 0xef, 0xb0, 0xd2, 0xcc, 0xf0, 0xd2, 0xf4, 0x06, 0x49, - 0x64, 0xb9, 0x8e, 0xdd, 0xf1, 0x27, 0x3c, 0xfe, 0xab, 0xfa, 0xc6, 0xa4, 0x12, 0xa6, 0x25, 0x47, - 0x2f, 0x7c, 0xf6, 0x2f, 0x88, 0x63, 0x4f, 0xee, 0x69, 0x00, 0x0f, 0x25, 0xc1, 0xa5, 0x3f, 0x03, - 0xe9, 0x77, 0x29, 0x5f, 0x91, 0x61, 0x96, 0x34, 0xbe, 0x1a, 0xc2, 0x16, 0x9a, 0x5a, 0x65, 0x97, - 0x1c, 0x7b, 0x84, 0xbf, 0x72, 0x84, 0x13, 0x7f, 0xde, 0xe8, 0x74, 0x82, 0xe5, 0xe7, 0x95, 0x23, - 0x3a, 0x7d, 0x27, 0x6a, 0xbe, 0x90, 0x87, 0xac, 0xb1, 0xeb, 0x6e, 0xab, 0xdf, 0x17, 0x9e, 0x7c, - 0x72, 0x9d, 0x01, 0xe5, 0x27, 0x02, 0x92, 0xe3, 0x90, 0x73, 0xed, 0x0b, 0xc8, 0x97, 0x03, 0x79, - 0xf1, 0xe0, 0x30, 0x3a, 0x9d, 0x3a, 0xfe, 0x40, 0xe1, 0xf0, 0xdf, 0x3d, 0x5b, 0xc7, 0x68, 0x36, - 0xed, 0x5d, 0xcb, 0x2d, 0xfb, 0x4b, 0xd0, 0x61, 0x82, 0xfa, 0xc5, 0x8c, 0xc8, 0x64, 0x56, 0x80, - 0xc1, 0x64, 0x90, 0x9d, 0x1f, 0xa2, 0x29, 0xcd, 0xc3, 0x8d, 0xc5, 0xf5, 0xf5, 0x46, 0xbd, 0x7a, - 0xaf, 0x56, 0x09, 0x0d, 0xcf, 0x46, 0xb9, 0xd2, 0xa8, 0xaf, 0x68, 0x8d, 0xd2, 0x86, 0x8e, 0xd7, - 0x09, 0x8b, 0xa5, 0x52, 0x75, 0xa3, 0x52, 0x2f, 0x20, 0xf5, 0x2d, 0x12, 0xcc, 0x94, 0xda, 0x76, - 0x37, 0x40, 0xf8, 0xea, 0x10, 0xe1, 0x40, 0x8c, 0x19, 0x46, 0x8c, 0xea, 0xbf, 0x65, 0x44, 0x9d, - 0x0e, 0x7c, 0x81, 0x30, 0xe4, 0x23, 0x7a, 0xa9, 0x37, 0x0a, 0x39, 0x1d, 0x0c, 0xa6, 0x97, 0x7e, - 0x93, 0x78, 0xfd, 0xdd, 0x30, 0x51, 0x24, 0x8a, 0xa1, 0xfe, 0x4d, 0x06, 0xf2, 0x25, 0xdb, 0xda, - 0x34, 0xb7, 0x3c, 0x63, 0x0e, 0x59, 0xc6, 0xf9, 0x36, 0x5a, 0x34, 0x5c, 0x63, 0xcf, 0x44, 0x17, - 0x71, 0x05, 0x26, 0xf5, 0x9e, 0x54, 0x8f, 0x29, 0x9a, 0x82, 0xce, 0xef, 0x6e, 0x61, 0xa6, 0x26, - 0x75, 0x36, 0x49, 0x79, 0x32, 0x5c, 0x4e, 0x5e, 0xd7, 0x1d, 0xe4, 0xa0, 0x36, 0x32, 0xba, 0xc8, - 0x9b, 0x16, 0x59, 0xa8, 0x8d, 0x95, 0x76, 0x52, 0x8f, 0xfa, 0xac, 0x9c, 0x81, 0x19, 0xf2, 0x09, - 0x9b, 0x22, 0x5d, 0xac, 0xc6, 0x93, 0x3a, 0x97, 0xa6, 0x3c, 0x0e, 0x72, 0xe8, 0x01, 0xd7, 0x31, - 0x4e, 0xb5, 0x30, 0x5e, 0x97, 0xcf, 0x13, 0xaf, 0xc3, 0x79, 0xdf, 0xeb, 0x70, 0xbe, 0x86, 0x7d, - 0x12, 0x75, 0x92, 0x4b, 0x7d, 0xc5, 0x64, 0x60, 0x48, 0xfc, 0x40, 0x0a, 0x15, 0x43, 0x81, 0xac, - 0x65, 0xec, 0x20, 0xaa, 0x17, 0xf8, 0x59, 0xb9, 0x11, 0x8e, 0x1a, 0x7b, 0x86, 0x6b, 0x38, 0xab, - 0x76, 0xd3, 0x68, 0xe3, 0xc1, 0xcf, 0x6f, 0xf9, 0xbd, 0x1f, 0xf0, 0x8e, 0x90, 0x6b, 0x3b, 0x08, - 0xe7, 0xf2, 0x77, 0x84, 0xfc, 0x04, 0x8f, 0xba, 0xd9, 0xb4, 0x2d, 0xcc, 0xbf, 0xac, 0xe3, 0x67, - 0x4f, 0x2a, 0x2d, 0xb3, 0xeb, 0x55, 0x04, 0x53, 0xa9, 0x90, 0xad, 0x8d, 0xda, 0x25, 0xab, 0x89, - 0x77, 0x83, 0x26, 0xf5, 0xa8, 0xcf, 0xca, 0x02, 0x4c, 0xd3, 0x8d, 0x90, 0x35, 0x4f, 0xaf, 0xf2, - 0x58, 0xaf, 0xae, 0xe1, 0x7d, 0xba, 0x08, 0x9e, 0xf3, 0x95, 0x30, 0x9f, 0xce, 0xfe, 0xa4, 0xdc, - 0x0d, 0x57, 0xd2, 0xd7, 0xd2, 0x6e, 0xd7, 0xb5, 0x77, 0x08, 0xe8, 0x4b, 0x66, 0x9b, 0xd4, 0x60, - 0x02, 0xd7, 0x20, 0x2e, 0x8b, 0x72, 0x2b, 0x1c, 0xef, 0x38, 0x68, 0x13, 0x39, 0xf7, 0x19, 0x3b, - 0xbb, 0x0f, 0xd4, 0x1d, 0xc3, 0xea, 0x76, 0x6c, 0xc7, 0x3d, 0x35, 0x89, 0x99, 0xef, 0xfb, 0x8d, - 0x76, 0x94, 0x93, 0x90, 0x27, 0xe2, 0x53, 0x5f, 0x98, 0x13, 0x76, 0xe7, 0xa4, 0x15, 0x8a, 0x35, - 0xcf, 0x6e, 0x81, 0x09, 0xda, 0xc3, 0x61, 0xa0, 0xa6, 0x6f, 0x3d, 0xd9, 0xb3, 0xae, 0x40, 0xa9, - 0xe8, 0x7e, 0x36, 0xe5, 0x09, 0x90, 0x6f, 0xe2, 0x6a, 0x61, 0xcc, 0xa6, 0x6f, 0xbd, 0xb2, 0x7f, - 0xa1, 0x38, 0x8b, 0x4e, 0xb3, 0xaa, 0x7f, 0x29, 0x0b, 0x79, 0x80, 0xc6, 0x71, 0x9c, 0xac, 0x55, - 0x7f, 0x53, 0x1a, 0xa2, 0xdb, 0xbc, 0x09, 0x6e, 0xa0, 0x7d, 0x22, 0xb5, 0x3f, 0x16, 0x1b, 0x0b, - 0x1b, 0xfe, 0x64, 0xd0, 0xb3, 0x4a, 0x6a, 0xf5, 0xa2, 0xee, 0xcd, 0xe4, 0x17, 0xbd, 0x49, 0xe4, - 0x8d, 0x70, 0xfd, 0x80, 0xdc, 0x5a, 0xbd, 0x51, 0x29, 0xae, 0x69, 0x85, 0x4d, 0xde, 0xb6, 0xa9, - 0xd5, 0xab, 0xeb, 0x0d, 0x7d, 0xa3, 0x52, 0x29, 0x57, 0x96, 0x09, 0x31, 0xcf, 0x24, 0x3c, 0x19, - 0x66, 0x38, 0xa7, 0x97, 0xeb, 0x5a, 0xa3, 0x54, 0xad, 0x2c, 0x95, 0x97, 0x0b, 0xe6, 0x20, 0xc3, - 0xe8, 0x7e, 0xe5, 0x1a, 0xb8, 0x8a, 0xe3, 0xa4, 0x5c, 0xad, 0x78, 0x33, 0xdb, 0x52, 0xb1, 0x52, - 0xd2, 0xbc, 0x69, 0xec, 0x05, 0x45, 0x85, 0x13, 0x84, 0x5c, 0x63, 0xa9, 0xbc, 0xca, 0x6e, 0x46, - 0x7d, 0x32, 0xa3, 0x9c, 0x82, 0xcb, 0xd8, 0x6f, 0xe5, 0xca, 0xd9, 0xe2, 0x6a, 0x79, 0xb1, 0xf0, - 0x87, 0x19, 0xe5, 0x3a, 0xb8, 0x9a, 0xfb, 0x8b, 0xec, 0x2b, 0x35, 0xca, 0x8b, 0x8d, 0xb5, 0x72, - 0x6d, 0xad, 0x58, 0x2f, 0xad, 0x14, 0x3e, 0x85, 0xe7, 0x0b, 0x81, 0x01, 0xcc, 0xb8, 0x65, 0xbe, - 0x84, 0x1d, 0xd3, 0x8b, 0xbc, 0xa2, 0x3e, 0xb6, 0x2f, 0xec, 0xf1, 0x36, 0xec, 0xc7, 0x83, 0xd1, - 0x61, 0x91, 0x53, 0xa1, 0x5b, 0x12, 0xd0, 0x4a, 0xa6, 0x43, 0xf5, 0x21, 0x54, 0xe8, 0x1a, 0xb8, - 0xaa, 0xa2, 0x11, 0xa4, 0x74, 0xad, 0x54, 0x3d, 0xab, 0xe9, 0x8d, 0x73, 0xc5, 0xd5, 0x55, 0xad, - 0xde, 0x58, 0x2a, 0xeb, 0xb5, 0x7a, 0x61, 0x53, 0xfd, 0x17, 0x29, 0x58, 0xcd, 0x61, 0xa4, 0xf5, - 0x37, 0x52, 0xd2, 0x66, 0x1d, 0xbb, 0x6a, 0xf3, 0x13, 0x90, 0xef, 0xba, 0x86, 0xbb, 0xdb, 0xa5, - 0xad, 0xfa, 0x51, 0xfd, 0x5b, 0xf5, 0x7c, 0x0d, 0x67, 0xd2, 0x69, 0x66, 0xf5, 0x2f, 0x33, 0x49, - 0x9a, 0xe9, 0x08, 0x16, 0x74, 0xcc, 0x21, 0x44, 0x7c, 0x1a, 0x54, 0x5f, 0xdb, 0xcb, 0xb5, 0x46, - 0x71, 0x55, 0xd7, 0x8a, 0x8b, 0xf7, 0x05, 0xcb, 0x38, 0x48, 0x39, 0x01, 0xc7, 0x36, 0x2a, 0xc5, - 0x85, 0x55, 0x0d, 0x37, 0x97, 0x6a, 0xa5, 0xa2, 0x95, 0x3c, 0xb9, 0xff, 0x02, 0xde, 0x34, 0xf1, - 0x2c, 0x68, 0xcc, 0xb7, 0x67, 0xe5, 0x30, 0xf2, 0xff, 0x86, 0xb0, 0x6f, 0x51, 0xa8, 0x61, 0x2c, - 0xad, 0xd1, 0xe2, 0xf0, 0x45, 0x21, 0x77, 0x22, 0x21, 0x4e, 0x92, 0xe1, 0xf1, 0x9f, 0x87, 0xc0, - 0xe3, 0x04, 0x1c, 0x63, 0xf1, 0xc0, 0x6e, 0x45, 0xd1, 0x30, 0x7c, 0x4f, 0x82, 0x89, 0x35, 0x73, - 0x0b, 0xfb, 0x55, 0x3e, 0x25, 0x34, 0x26, 0xe6, 0x40, 0x0a, 0xdc, 0x58, 0x24, 0xb3, 0xc5, 0x4d, - 0x9f, 0xa5, 0xbe, 0xcb, 0x14, 0x6f, 0x4f, 0xdc, 0xbf, 0xd0, 0x62, 0x23, 0xfa, 0x97, 0xaf, 0x24, - 0xea, 0x5f, 0xfa, 0xd3, 0x4a, 0x26, 0x6c, 0xfb, 0x60, 0xc2, 0x66, 0x9d, 0x47, 0x66, 0x60, 0x32, - 0xe8, 0xed, 0x37, 0x95, 0x93, 0xa0, 0x78, 0x1f, 0xb5, 0x4a, 0x75, 0x63, 0x79, 0xc5, 0x1b, 0x6e, - 0xf4, 0xe2, 0xb2, 0x56, 0xd8, 0x52, 0xdf, 0x29, 0xc1, 0x2c, 0x65, 0x9c, 0x7a, 0x04, 0x5c, 0x1d, - 0x89, 0x00, 0x95, 0xf2, 0x0f, 0x58, 0x3b, 0x7f, 0x99, 0x97, 0xf2, 0xe3, 0xe3, 0x24, 0x13, 0xeb, - 0x12, 0xf0, 0xa6, 0x40, 0xd6, 0xf7, 0x70, 0xb2, 0x7e, 0x52, 0x62, 0x8a, 0xe9, 0xdb, 0xfa, 0xcf, - 0x9c, 0x82, 0x7c, 0x0d, 0xb5, 0x51, 0xd3, 0x55, 0xdf, 0x26, 0x0d, 0xa5, 0xb0, 0x71, 0x76, 0xab, - 0x9c, 0xc8, 0x6e, 0xcd, 0xa6, 0x60, 0xb7, 0xe6, 0x86, 0xb7, 0x5b, 0xf3, 0x83, 0xec, 0x56, 0xf5, - 0x63, 0xf9, 0xa4, 0xc3, 0x1a, 0x11, 0xf5, 0xe1, 0x5a, 0xab, 0xbf, 0x9c, 0x4b, 0x32, 0x0c, 0xf6, - 0xe5, 0x38, 0x99, 0x5e, 0xbe, 0x32, 0x9b, 0xc2, 0x7a, 0x99, 0x72, 0x2d, 0x5c, 0x1d, 0xbe, 0x37, - 0xb4, 0xa7, 0x95, 0x6b, 0xf5, 0x1a, 0x36, 0x51, 0x4b, 0x55, 0x5d, 0xdf, 0x58, 0xaf, 0xfb, 0x7d, - 0x45, 0x48, 0x45, 0xdf, 0xa8, 0x10, 0x83, 0x74, 0x8b, 0xa7, 0xbe, 0x54, 0xae, 0x2c, 0x36, 0x82, - 0x4e, 0xbe, 0xb2, 0x54, 0x2d, 0x6c, 0x2b, 0xf3, 0x70, 0x23, 0x43, 0x1d, 0xf7, 0x37, 0xa4, 0x84, - 0x62, 0x65, 0xb1, 0xb1, 0x56, 0xd1, 0xd6, 0xaa, 0x95, 0x72, 0x09, 0xa7, 0xd7, 0xb4, 0x7a, 0xc1, - 0xf4, 0x2c, 0xa3, 0x1e, 0x13, 0xb8, 0xa6, 0x15, 0xf5, 0xd2, 0x8a, 0xa6, 0x93, 0x22, 0xef, 0x57, - 0xae, 0x87, 0x33, 0xc5, 0x4a, 0xb5, 0xee, 0xa5, 0x14, 0x2b, 0xf7, 0xd5, 0xef, 0x5b, 0xd7, 0x1a, - 0xeb, 0x7a, 0xb5, 0xa4, 0xd5, 0x6a, 0xde, 0xc0, 0x42, 0x0d, 0xe6, 0x42, 0x5b, 0x79, 0x2a, 0xdc, - 0xce, 0xb0, 0xa6, 0xd5, 0xf1, 0x0e, 0xfb, 0x5a, 0x15, 0x3b, 0x59, 0x2d, 0x6a, 0x8d, 0x95, 0x62, - 0xad, 0x51, 0xae, 0x94, 0xaa, 0x6b, 0xeb, 0xc5, 0x7a, 0xd9, 0x1b, 0x7f, 0xd6, 0xf5, 0x6a, 0xbd, - 0xda, 0x38, 0xab, 0xe9, 0xb5, 0x72, 0xb5, 0x52, 0xb0, 0xbc, 0x2a, 0x33, 0x03, 0x96, 0x6f, 0x38, - 0xd8, 0xca, 0x55, 0x70, 0xca, 0x4f, 0x5f, 0xad, 0x7a, 0x82, 0x66, 0x4c, 0xe8, 0x0e, 0x6b, 0x76, - 0x78, 0x3d, 0x2a, 0x31, 0xa2, 0xd7, 0xca, 0xcb, 0xba, 0x67, 0xf9, 0x17, 0x9e, 0x9e, 0xaa, 0x89, - 0xfd, 0xaf, 0x12, 0x64, 0x6b, 0xae, 0xdd, 0x51, 0x7f, 0x3c, 0xec, 0x80, 0x4e, 0x03, 0x38, 0x78, - 0x43, 0x7d, 0xd1, 0x70, 0x0d, 0xba, 0xd0, 0xc0, 0xa4, 0xa8, 0x7f, 0x20, 0xbc, 0x0b, 0x18, 0x1a, - 0x21, 0x76, 0x27, 0xa2, 0xc3, 0xfe, 0x9e, 0xd8, 0xb1, 0xa8, 0x68, 0x42, 0xc9, 0xda, 0xc3, 0x2f, - 0x0e, 0xb3, 0xcf, 0xa7, 0xc2, 0x49, 0x06, 0x56, 0x4f, 0xfe, 0xbe, 0xca, 0x20, 0xe5, 0x72, 0xb8, - 0xac, 0x47, 0xf9, 0xb0, 0xce, 0x6d, 0x2a, 0x3f, 0x06, 0x8f, 0x62, 0xd4, 0x5f, 0x5b, 0xab, 0x9e, - 0xd5, 0x02, 0x45, 0x5f, 0x2c, 0xd6, 0x8b, 0x85, 0x2d, 0xf5, 0x73, 0x32, 0x64, 0xd7, 0xec, 0xbd, - 0xde, 0xcd, 0x57, 0x0b, 0x5d, 0x64, 0x16, 0xf7, 0xfd, 0x57, 0xfe, 0x18, 0x88, 0x90, 0xd8, 0xd7, - 0xa2, 0x1d, 0x2d, 0xbe, 0x28, 0x25, 0x11, 0xfb, 0xda, 0x41, 0xbd, 0x2b, 0xfe, 0x61, 0x18, 0xb1, - 0x47, 0x88, 0x16, 0x29, 0x67, 0xe0, 0x74, 0xf8, 0xa1, 0xbc, 0xa8, 0x55, 0xea, 0xe5, 0xa5, 0xfb, - 0x42, 0xe1, 0x96, 0x75, 0x21, 0xf1, 0x0f, 0xea, 0xe6, 0xe2, 0xa7, 0xce, 0xa7, 0xe0, 0x78, 0xf8, - 0x6d, 0x59, 0xab, 0xfb, 0x5f, 0xee, 0x57, 0x1f, 0xcc, 0xc1, 0x0c, 0xe9, 0xf6, 0x37, 0x3a, 0x2d, - 0xcf, 0x18, 0x7d, 0x42, 0x88, 0xee, 0x0d, 0x70, 0xb4, 0xbc, 0xbe, 0x54, 0xab, 0xb9, 0xb6, 0x63, - 0x6c, 0xa1, 0x62, 0xab, 0xe5, 0x50, 0x69, 0xf5, 0x26, 0xab, 0xef, 0x11, 0x5e, 0xb8, 0xe6, 0x87, - 0x1a, 0x52, 0xe6, 0x40, 0x4b, 0x34, 0x6e, 0xa1, 0x59, 0x80, 0x60, 0x32, 0xf4, 0xef, 0x1f, 0x71, - 0x9b, 0x8b, 0xc6, 0x65, 0xf3, 0xcc, 0x73, 0x24, 0x98, 0xaa, 0x9b, 0x3b, 0xe8, 0x19, 0xb6, 0x85, - 0xba, 0xca, 0x04, 0xc8, 0xcb, 0x6b, 0xf5, 0xc2, 0x11, 0xef, 0xc1, 0x9b, 0x25, 0x64, 0xf0, 0x83, - 0xe6, 0x15, 0xe0, 0x3d, 0x14, 0xeb, 0x05, 0xd9, 0x7b, 0x58, 0xd3, 0xea, 0x85, 0xac, 0xf7, 0x50, - 0xd1, 0xea, 0x85, 0x9c, 0xf7, 0xb0, 0xbe, 0x5a, 0x2f, 0xe4, 0xbd, 0x87, 0x72, 0xad, 0x5e, 0x98, - 0xf0, 0x1e, 0x16, 0x6a, 0xf5, 0xc2, 0xa4, 0xf7, 0x70, 0xb6, 0x56, 0x2f, 0x4c, 0x79, 0x0f, 0xa5, - 0x7a, 0xbd, 0x00, 0xde, 0xc3, 0x3d, 0xb5, 0x7a, 0x61, 0xda, 0x7b, 0x28, 0x96, 0xea, 0x85, 0x19, - 0xfc, 0xa0, 0xd5, 0x0b, 0xb3, 0xde, 0x43, 0xad, 0x56, 0x2f, 0xcc, 0x61, 0xca, 0xb5, 0x7a, 0xe1, - 0x28, 0x2e, 0xab, 0x5c, 0x2f, 0x14, 0xbc, 0x87, 0x95, 0x5a, 0xbd, 0x70, 0x0c, 0x67, 0xae, 0xd5, - 0x0b, 0x0a, 0x2e, 0xb4, 0x56, 0x2f, 0x5c, 0x86, 0xf3, 0xd4, 0xea, 0x85, 0xe3, 0xb8, 0x88, 0x5a, - 0xbd, 0x70, 0x02, 0xb3, 0xa1, 0xd5, 0x0b, 0x27, 0x71, 0x1e, 0xbd, 0x5e, 0xb8, 0x1c, 0x7f, 0xaa, - 0xd4, 0x0b, 0xa7, 0x30, 0x63, 0x5a, 0xbd, 0x70, 0x05, 0x7e, 0xd0, 0xeb, 0x05, 0x15, 0x7f, 0x2a, - 0xd6, 0x0b, 0x57, 0xaa, 0x8f, 0x82, 0xa9, 0x65, 0xe4, 0x12, 0x10, 0xd5, 0x02, 0xc8, 0xcb, 0xc8, - 0x65, 0xe7, 0xa5, 0x5f, 0x93, 0xe1, 0x72, 0xba, 0x96, 0xb1, 0xe4, 0xd8, 0x3b, 0xab, 0x68, 0xcb, - 0x68, 0x5e, 0xd2, 0x1e, 0xf0, 0x4c, 0x2c, 0xd6, 0xd1, 0x40, 0x81, 0x6c, 0x27, 0xec, 0x8c, 0xf0, - 0x73, 0xac, 0x45, 0xea, 0xaf, 0xae, 0xca, 0xe1, 0xea, 0x2a, 0xb5, 0xd8, 0xfe, 0x99, 0xd5, 0x68, - 0x6e, 0x43, 0x24, 0xd3, 0xb3, 0x21, 0xe2, 0x35, 0x93, 0x0e, 0x72, 0xba, 0xb6, 0x65, 0xb4, 0x6b, - 0xd4, 0x13, 0x85, 0x2c, 0xe3, 0xf6, 0x26, 0x2b, 0x3f, 0xe5, 0xb7, 0x0c, 0x62, 0xb5, 0x3d, 0x25, - 0x6e, 0xc9, 0xa6, 0xb7, 0x9a, 0x11, 0x8d, 0xe4, 0x53, 0x41, 0x23, 0xa9, 0x73, 0x8d, 0xe4, 0xee, - 0x03, 0xd0, 0x4e, 0xd6, 0x5e, 0xca, 0xc3, 0x4d, 0xdf, 0x42, 0x3f, 0x6d, 0x7f, 0xff, 0x45, 0x56, - 0x3f, 0x27, 0xc1, 0x49, 0xcd, 0xea, 0x37, 0x03, 0x60, 0x75, 0xe1, 0x2d, 0x2c, 0x34, 0xeb, 0xbc, - 0x48, 0x6f, 0xef, 0x5b, 0xed, 0xfe, 0x34, 0x23, 0x24, 0xfa, 0xe9, 0x40, 0xa2, 0x35, 0x4e, 0xa2, - 0x77, 0x0d, 0x4f, 0x3a, 0x99, 0x40, 0x2b, 0x23, 0xed, 0x80, 0xb2, 0xea, 0x37, 0xb3, 0xf0, 0x28, - 0xe2, 0x4c, 0x46, 0x39, 0x24, 0xad, 0xac, 0x68, 0xb5, 0x74, 0xd4, 0x75, 0x0d, 0xc7, 0xe5, 0x0e, - 0xf8, 0xf7, 0x4c, 0xb5, 0x32, 0x29, 0x4c, 0xb5, 0xa4, 0x81, 0x53, 0x2d, 0xf5, 0xdd, 0xac, 0xf9, - 0x70, 0x8e, 0xc7, 0xb8, 0xd8, 0xbf, 0xff, 0x8f, 0xab, 0x61, 0x14, 0xd4, 0x81, 0x5d, 0xf1, 0xd3, - 0x1c, 0xd4, 0x4b, 0x07, 0x2e, 0x21, 0x19, 0xe2, 0x7f, 0x30, 0x5a, 0x3b, 0x2f, 0xcb, 0x7e, 0xe3, - 0x8d, 0x92, 0x42, 0x2b, 0x55, 0x03, 0xfd, 0x33, 0x13, 0x30, 0x85, 0xdb, 0xc2, 0xaa, 0x69, 0x5d, - 0x50, 0x1f, 0x92, 0x61, 0xa6, 0x82, 0x2e, 0x96, 0xb6, 0x8d, 0x76, 0x1b, 0x59, 0x5b, 0x88, 0x35, - 0xdb, 0x4f, 0xc1, 0x84, 0xd1, 0xe9, 0x54, 0xc2, 0x8d, 0x33, 0xff, 0x95, 0xf6, 0xbf, 0xdf, 0xe8, - 0xdb, 0xc8, 0x33, 0x31, 0x8d, 0x3c, 0x28, 0x77, 0x9e, 0x2d, 0x33, 0x62, 0x06, 0x7d, 0x0d, 0x4c, - 0x37, 0xfd, 0x2c, 0xc1, 0x41, 0x20, 0x36, 0x49, 0xfd, 0xbb, 0x44, 0xdd, 0x80, 0x50, 0xe1, 0xc9, - 0x94, 0x02, 0x8d, 0xd8, 0x0e, 0x39, 0x01, 0xc7, 0xea, 0xd5, 0x6a, 0x63, 0xad, 0x58, 0xb9, 0x2f, - 0x3c, 0x80, 0xbf, 0xa9, 0xbe, 0x32, 0x0b, 0x73, 0x35, 0xbb, 0xbd, 0x87, 0x42, 0x98, 0xca, 0x9c, - 0x87, 0x19, 0x2b, 0xa7, 0xcc, 0x3e, 0x39, 0x29, 0x27, 0x21, 0x6f, 0x58, 0xdd, 0x8b, 0xc8, 0xb7, - 0x0d, 0xe9, 0x1b, 0x85, 0xf1, 0x43, 0x6c, 0x3b, 0xd6, 0x79, 0x18, 0xef, 0x18, 0x20, 0x49, 0x9e, - 0xab, 0x08, 0x20, 0xcf, 0xc0, 0x4c, 0x97, 0xec, 0x7e, 0xd7, 0x19, 0x27, 0x07, 0x2e, 0x0d, 0xb3, - 0x48, 0xdc, 0x2f, 0x64, 0xca, 0x22, 0x7e, 0x53, 0x1f, 0x0a, 0x9a, 0xff, 0x06, 0x07, 0x71, 0xf1, - 0x20, 0x8c, 0x25, 0x03, 0xf9, 0xd5, 0xa3, 0x9e, 0xe1, 0x9d, 0x82, 0xe3, 0xb4, 0xd5, 0x36, 0x4a, - 0x2b, 0xc5, 0xd5, 0x55, 0xad, 0xb2, 0xac, 0x35, 0xca, 0x8b, 0x64, 0xef, 0x2d, 0x4c, 0x29, 0xd6, - 0xeb, 0xda, 0xda, 0x7a, 0xbd, 0xd6, 0xd0, 0x9e, 0x56, 0xd2, 0xb4, 0x45, 0xec, 0xe3, 0x89, 0x0f, - 0x69, 0xf9, 0xde, 0xb8, 0xc5, 0x4a, 0xed, 0x9c, 0xa6, 0x17, 0xb6, 0xcf, 0x14, 0x61, 0x9a, 0xe9, - 0xe7, 0x3d, 0xee, 0x16, 0xd1, 0xa6, 0xb1, 0xdb, 0xa6, 0xb6, 0x5a, 0xe1, 0x88, 0xc7, 0x1d, 0x96, - 0x4d, 0xd5, 0x6a, 0x5f, 0x2a, 0x64, 0x94, 0x02, 0xcc, 0xb0, 0x5d, 0x7a, 0x41, 0x52, 0xdf, 0x71, - 0x15, 0x4c, 0x9d, 0xb3, 0x9d, 0x0b, 0xd8, 0x31, 0x51, 0x7d, 0x3f, 0x09, 0xd4, 0xe3, 0x1f, 0x79, - 0x66, 0x06, 0xf6, 0x57, 0x8b, 0xbb, 0xbf, 0xf8, 0xd4, 0xe6, 0x07, 0x1e, 0x6b, 0xbe, 0x06, 0xa6, - 0x2f, 0xfa, 0xb9, 0xc3, 0x96, 0xce, 0x24, 0xa9, 0xff, 0x4d, 0xcc, 0xa1, 0x65, 0x70, 0x91, 0xe9, - 0x2f, 0xc2, 0xbe, 0x4d, 0x82, 0xfc, 0x32, 0x72, 0x8b, 0xed, 0x36, 0x2b, 0xb7, 0x97, 0x0a, 0x1f, - 0x55, 0xe3, 0x2a, 0x51, 0x6c, 0xb7, 0xa3, 0x1b, 0x15, 0x23, 0x20, 0xff, 0x48, 0x05, 0x97, 0x26, - 0xe8, 0x08, 0x3a, 0xa0, 0xc0, 0xf4, 0x25, 0xf6, 0x11, 0x39, 0x70, 0xda, 0x78, 0x98, 0xb1, 0x72, - 0x1e, 0x1f, 0x06, 0x69, 0xca, 0xc4, 0x3b, 0x7f, 0xf8, 0xf9, 0x94, 0x7b, 0x61, 0x62, 0xb7, 0x8b, - 0x4a, 0x46, 0x17, 0x61, 0xde, 0x7a, 0x6b, 0x5a, 0x3d, 0x7f, 0x3f, 0x6a, 0xba, 0xf3, 0xe5, 0x1d, - 0xcf, 0xa0, 0xde, 0x20, 0x19, 0x83, 0xb8, 0x47, 0xf4, 0x5d, 0xf7, 0x29, 0x78, 0x93, 0x92, 0x8b, - 0xa6, 0xbb, 0x5d, 0xda, 0x36, 0x5c, 0xba, 0xf6, 0x1d, 0xbc, 0xab, 0x2f, 0x1c, 0x02, 0xce, 0x58, - 0xe7, 0x86, 0xc8, 0x13, 0xaf, 0x89, 0x41, 0x1c, 0x81, 0x47, 0xc2, 0x30, 0x20, 0xfe, 0xa3, 0x04, - 0xd9, 0x6a, 0x07, 0x59, 0xc2, 0xc7, 0xbb, 0x02, 0xd9, 0x4a, 0x3d, 0xb2, 0x7d, 0x48, 0xdc, 0xdd, - 0x31, 0xa8, 0xb4, 0x57, 0x72, 0x84, 0x64, 0x6f, 0x86, 0xac, 0x69, 0x6d, 0xda, 0xd4, 0x30, 0xbd, - 0x32, 0x62, 0x57, 0xb3, 0x6c, 0x6d, 0xda, 0x3a, 0xce, 0x28, 0xea, 0xe9, 0x18, 0x57, 0x76, 0xfa, - 0xe2, 0xfe, 0xd6, 0x24, 0xe4, 0x89, 0x3a, 0xab, 0x2f, 0x91, 0x41, 0x2e, 0xb6, 0x5a, 0x11, 0x82, - 0x97, 0xf6, 0x09, 0xde, 0xc6, 0xbf, 0x05, 0x98, 0x04, 0xef, 0x7c, 0x74, 0x1e, 0xc1, 0xbe, 0x9d, - 0x36, 0xa9, 0x62, 0xab, 0x15, 0xed, 0x54, 0x1d, 0x14, 0x28, 0xf1, 0x05, 0xb2, 0x2d, 0x5c, 0x16, - 0x6b, 0xe1, 0x89, 0x07, 0x82, 0x48, 0xfe, 0xd2, 0x87, 0xe8, 0x9f, 0x25, 0x98, 0x58, 0x35, 0xbb, - 0xae, 0x87, 0x4d, 0x51, 0x04, 0x9b, 0xab, 0x60, 0xca, 0x17, 0x8d, 0xd7, 0xe5, 0x79, 0xfd, 0x79, - 0x98, 0xa0, 0xbe, 0x8e, 0x45, 0xe7, 0x1e, 0x1e, 0x9d, 0x27, 0xc6, 0xd7, 0x9e, 0x72, 0x11, 0x7d, - 0x6c, 0x26, 0x2c, 0x56, 0xea, 0x2d, 0xf6, 0xb7, 0x03, 0x81, 0xaf, 0x71, 0x02, 0xbf, 0x6d, 0x98, - 0x22, 0xd3, 0x17, 0xfa, 0xe7, 0x25, 0x00, 0xaf, 0x6c, 0x7a, 0x36, 0xf1, 0x31, 0x5c, 0xc4, 0x81, - 0x18, 0xe9, 0xbe, 0x92, 0x95, 0xee, 0x1a, 0x2f, 0xdd, 0x9f, 0x1c, 0x5c, 0xd5, 0xb8, 0x33, 0x88, - 0x4a, 0x01, 0x64, 0x33, 0x10, 0xad, 0xf7, 0xa8, 0xbe, 0x2d, 0x10, 0xea, 0x3a, 0x27, 0xd4, 0x3b, - 0x86, 0x2c, 0x29, 0x7d, 0xb9, 0xfe, 0x95, 0x04, 0x13, 0x35, 0xe4, 0x7a, 0xdd, 0xa4, 0x7a, 0x56, - 0xa4, 0x87, 0x67, 0xda, 0xb6, 0x24, 0xd8, 0xb6, 0xbf, 0x9b, 0x11, 0x8d, 0x5c, 0x14, 0x4a, 0x86, - 0xf2, 0x14, 0xb1, 0x78, 0xf0, 0xb0, 0x50, 0xe4, 0xa2, 0x41, 0xd4, 0xd2, 0x97, 0xee, 0x5b, 0xa4, - 0x60, 0xe3, 0x9e, 0x3f, 0x3a, 0xc4, 0x9a, 0xc5, 0x99, 0xfd, 0x66, 0xb1, 0xf8, 0xd1, 0x21, 0xb6, - 0x8e, 0xd1, 0xbb, 0xd6, 0x89, 0x8d, 0x8d, 0x11, 0x6c, 0x28, 0x0f, 0x23, 0xaf, 0x67, 0xc9, 0x90, - 0xa7, 0x2b, 0xcb, 0x77, 0xc5, 0xaf, 0x2c, 0x0f, 0x9e, 0x5a, 0xbc, 0x6f, 0x08, 0x53, 0x2e, 0x6e, - 0xb9, 0x37, 0x60, 0x43, 0x62, 0xd8, 0xb8, 0x09, 0x72, 0x38, 0xb4, 0x2a, 0x1d, 0xe7, 0x42, 0x5f, - 0x00, 0x9f, 0x84, 0xe6, 0x7d, 0xd5, 0x49, 0xa6, 0xc4, 0x28, 0x8c, 0x60, 0x85, 0x78, 0x18, 0x14, - 0xde, 0xfd, 0xb9, 0x4c, 0x60, 0x84, 0xbc, 0x2f, 0x4b, 0xcd, 0xbf, 0x4f, 0xf0, 0x41, 0x5e, 0x9a, - 0xb6, 0xe5, 0xa2, 0x07, 0x98, 0x35, 0xf9, 0x20, 0x21, 0xd6, 0x32, 0x38, 0x05, 0x13, 0xae, 0xc3, - 0xae, 0xd3, 0xfb, 0xaf, 0x6c, 0x8f, 0x93, 0xe3, 0x7b, 0x9c, 0x0a, 0x9c, 0x31, 0xad, 0x66, 0x7b, - 0xb7, 0x85, 0x74, 0xd4, 0x36, 0xbc, 0x5a, 0x75, 0x8b, 0xdd, 0x45, 0xd4, 0x41, 0x56, 0x0b, 0x59, - 0x2e, 0xe1, 0xd3, 0x77, 0x32, 0x17, 0xc8, 0xa9, 0x7e, 0x9d, 0x55, 0x8c, 0x3b, 0x79, 0xc5, 0x78, - 0x4c, 0xbf, 0x79, 0x45, 0x8c, 0x11, 0x7a, 0x1b, 0x00, 0xa9, 0xdb, 0x59, 0x13, 0x5d, 0xa4, 0x1d, - 0xe2, 0x15, 0x3d, 0xa6, 0x68, 0x35, 0xc8, 0xa0, 0x33, 0x99, 0xd5, 0x2f, 0x07, 0xca, 0x70, 0x37, - 0xa7, 0x0c, 0x37, 0x09, 0xb2, 0x90, 0x4c, 0x0f, 0x3a, 0x43, 0xac, 0x75, 0xcc, 0xc2, 0x54, 0xb8, - 0x42, 0x29, 0x2b, 0x57, 0xc0, 0x09, 0xdf, 0x27, 0xa2, 0xa2, 0x69, 0x8b, 0xb5, 0xc6, 0xc6, 0xfa, - 0xb2, 0x5e, 0x5c, 0xd4, 0x0a, 0xa0, 0x28, 0x30, 0x57, 0x5d, 0xb8, 0x47, 0x2b, 0xd5, 0x03, 0x57, - 0x86, 0xac, 0xfa, 0x17, 0x12, 0xe4, 0xf0, 0x09, 0x09, 0xf5, 0x67, 0x47, 0xa4, 0x39, 0x5d, 0x6e, - 0x87, 0x27, 0x98, 0x48, 0x89, 0x07, 0x5f, 0xa5, 0xc2, 0xc4, 0x5c, 0x1d, 0x28, 0xf8, 0x6a, 0x0c, - 0xa1, 0xf4, 0x9b, 0xa7, 0xd7, 0x24, 0x6b, 0xdb, 0xf6, 0xc5, 0x1f, 0xe5, 0x26, 0xe9, 0xd5, 0xff, - 0x90, 0x9b, 0x64, 0x1f, 0x16, 0xc6, 0xde, 0x24, 0xfb, 0xb4, 0xbb, 0x98, 0x66, 0xaa, 0x3e, 0x33, - 0x17, 0x2c, 0xc8, 0x3c, 0x47, 0x3a, 0xd0, 0x82, 0x4c, 0x11, 0x66, 0x4d, 0xcb, 0x45, 0x8e, 0x65, - 0xb4, 0x97, 0xda, 0xc6, 0x96, 0x1f, 0x11, 0xa2, 0x77, 0x16, 0x5e, 0x66, 0xf2, 0xe8, 0xfc, 0x1f, - 0xca, 0x69, 0x00, 0x17, 0xed, 0x74, 0xda, 0x86, 0x1b, 0xaa, 0x1e, 0x93, 0xc2, 0x6a, 0x5f, 0x96, - 0xd7, 0xbe, 0x5b, 0xe0, 0x32, 0x02, 0x5a, 0xfd, 0x52, 0x07, 0x6d, 0x58, 0xe6, 0xd3, 0x77, 0x71, - 0x4c, 0x30, 0xa2, 0xa3, 0xfd, 0x3e, 0x71, 0xcb, 0x12, 0xf9, 0x9e, 0x65, 0x89, 0x7f, 0x14, 0x3e, - 0x6b, 0xec, 0xb7, 0xfa, 0x01, 0x67, 0x8d, 0x83, 0x96, 0x26, 0xf7, 0xb4, 0xb4, 0xc0, 0x58, 0xc8, - 0x0a, 0x18, 0x0b, 0x2c, 0x2a, 0x39, 0x41, 0x43, 0xfb, 0xb5, 0x42, 0x87, 0x99, 0xe3, 0xaa, 0x31, - 0x86, 0x89, 0x9c, 0x0c, 0x73, 0xa4, 0xe8, 0x05, 0xdb, 0xbe, 0xb0, 0x63, 0x38, 0x17, 0x54, 0xe7, - 0x40, 0xaa, 0x18, 0xbb, 0x26, 0x12, 0xb9, 0xd0, 0xf7, 0x69, 0x49, 0xd4, 0xa9, 0x98, 0x13, 0x97, - 0xcf, 0xf3, 0x78, 0x16, 0x45, 0xc4, 0x7c, 0x94, 0x45, 0x18, 0x4c, 0x1f, 0xd7, 0x3f, 0x0a, 0x70, - 0xf5, 0x3b, 0x7a, 0x76, 0x3e, 0x39, 0x4a, 0x5c, 0xd5, 0xaf, 0x0c, 0x87, 0x9d, 0xcf, 0xd7, 0x10, - 0xd8, 0x15, 0x40, 0xbe, 0x10, 0x6c, 0x61, 0x79, 0x8f, 0x6c, 0x85, 0xb2, 0xe9, 0xa1, 0x19, 0xc1, - 0xf2, 0x58, 0xd0, 0x3c, 0xce, 0xb3, 0x50, 0xed, 0xa4, 0x8a, 0xe9, 0x97, 0x84, 0xd7, 0x69, 0xfa, - 0x0a, 0x88, 0x70, 0x37, 0x9e, 0x56, 0x29, 0xb6, 0xc8, 0x23, 0xce, 0x66, 0xfa, 0x68, 0xbe, 0x20, - 0x07, 0x53, 0xfe, 0x69, 0x70, 0x7c, 0x59, 0x41, 0x80, 0xe1, 0x49, 0xc8, 0x77, 0xed, 0x5d, 0xa7, - 0x89, 0xe8, 0xca, 0x19, 0x7d, 0x1b, 0x62, 0x95, 0x67, 0xe0, 0x78, 0xbe, 0xcf, 0x64, 0xc8, 0x26, - 0x36, 0x19, 0xa2, 0x0d, 0xd2, 0xb8, 0x01, 0xfe, 0x85, 0xc2, 0x11, 0x66, 0x39, 0xcc, 0x6a, 0xc8, - 0x7d, 0x24, 0x8e, 0xf1, 0xbf, 0x2f, 0xb4, 0x86, 0x30, 0xa0, 0x26, 0xc9, 0x54, 0xae, 0x3a, 0x84, - 0xa1, 0x7a, 0x25, 0x5c, 0xee, 0xe7, 0xa0, 0x16, 0x2a, 0xb6, 0x48, 0x37, 0xf4, 0xd5, 0x82, 0xac, - 0x3e, 0x2b, 0x0b, 0x05, 0xc2, 0x5a, 0x35, 0x30, 0xd6, 0xd4, 0x97, 0x66, 0x0e, 0xdb, 0x22, 0x8d, - 0x9e, 0x62, 0x7e, 0x56, 0x12, 0x8d, 0x62, 0xc7, 0x09, 0x3e, 0xac, 0x5d, 0x84, 0x26, 0x0d, 0xd1, - 0xcc, 0x62, 0x94, 0x4f, 0xfd, 0xad, 0x8c, 0x48, 0x50, 0x3c, 0x31, 0x16, 0xd3, 0xef, 0x95, 0xbe, - 0x90, 0xf5, 0x83, 0x7a, 0x2c, 0x39, 0xf6, 0xce, 0x86, 0xd3, 0x56, 0xff, 0x4f, 0xa1, 0x98, 0xa3, - 0x11, 0xe6, 0xbf, 0x14, 0x6d, 0xfe, 0x17, 0x40, 0xde, 0x75, 0xda, 0xfe, 0xf0, 0xbd, 0xeb, 0xb4, - 0x87, 0x18, 0xbe, 0x95, 0xeb, 0x61, 0xce, 0x68, 0xb5, 0xd6, 0x8d, 0x2d, 0x54, 0xf2, 0xe6, 0xd5, - 0x96, 0x4b, 0x0f, 0xfc, 0xf7, 0xa4, 0xc6, 0x76, 0x45, 0x5f, 0x17, 0xde, 0x89, 0xe3, 0x40, 0xa2, - 0xf2, 0x19, 0xcb, 0xf0, 0xe6, 0x0d, 0x09, 0xcd, 0x6d, 0x23, 0x0c, 0x3f, 0x42, 0xdf, 0x04, 0x77, - 0xe8, 0x04, 0xf8, 0x4e, 0x5f, 0xb3, 0x7e, 0x57, 0x82, 0x09, 0x4f, 0xde, 0xc5, 0x56, 0x4b, 0x7d, - 0x34, 0x17, 0xa5, 0x27, 0x72, 0x8f, 0xf4, 0x79, 0xc2, 0x9b, 0xd3, 0x7e, 0x0d, 0x09, 0xfd, 0x08, - 0x4c, 0x42, 0x21, 0x4a, 0x9c, 0x10, 0xc5, 0xf6, 0xa0, 0x63, 0x8b, 0x48, 0x5f, 0x7c, 0x9f, 0x92, - 0x60, 0xd6, 0x9f, 0x47, 0x2c, 0x21, 0xb7, 0xb9, 0xad, 0xde, 0x26, 0xba, 0xd0, 0x44, 0x5b, 0x9a, - 0x14, 0xb4, 0x34, 0xf5, 0xfb, 0x99, 0x84, 0x2a, 0xcf, 0x95, 0x1c, 0xb1, 0x4a, 0x97, 0x48, 0x17, - 0xe3, 0x08, 0xa6, 0x2f, 0xcc, 0x2f, 0x4b, 0x00, 0x75, 0x3b, 0x98, 0xeb, 0x1e, 0x40, 0x92, 0x2f, - 0x16, 0xbe, 0x00, 0x84, 0x56, 0x3c, 0x2c, 0x36, 0x79, 0xcf, 0x21, 0xb8, 0xc5, 0x36, 0xa8, 0xa4, - 0xb1, 0xb4, 0xf5, 0xa9, 0xc5, 0xdd, 0x4e, 0xdb, 0x6c, 0x1a, 0x6e, 0xef, 0xbe, 0x70, 0xb4, 0x78, - 0xf1, 0x4d, 0x5e, 0x89, 0x8c, 0xc2, 0xa0, 0x8c, 0x08, 0x59, 0x92, 0xc3, 0xb8, 0x92, 0x7f, 0x18, - 0x57, 0x70, 0xaf, 0x67, 0x00, 0xf1, 0x31, 0xa8, 0xa7, 0x0c, 0x47, 0xab, 0x1d, 0x64, 0x2d, 0x38, - 0xc8, 0x68, 0x35, 0x9d, 0xdd, 0x9d, 0xf3, 0x5d, 0xd6, 0xa9, 0x21, 0x5e, 0x47, 0x99, 0xa5, 0x63, - 0x89, 0x5b, 0x3a, 0x56, 0x9f, 0x2d, 0x8b, 0xc6, 0x32, 0x60, 0x36, 0x38, 0x18, 0x1e, 0x86, 0x18, - 0xea, 0x12, 0x6d, 0xc5, 0xf5, 0xac, 0x12, 0x67, 0x93, 0xac, 0x12, 0xbf, 0x59, 0x28, 0x32, 0x82, - 0x50, 0xbd, 0xc6, 0xb2, 0xa3, 0x3a, 0x57, 0x43, 0x6e, 0x04, 0xbc, 0xd7, 0xc1, 0xec, 0xf9, 0xf0, - 0x4b, 0x00, 0x31, 0x9f, 0xd8, 0xc7, 0xcf, 0xe1, 0x2d, 0x49, 0x57, 0x60, 0x78, 0x16, 0x22, 0xd0, - 0x0d, 0x10, 0x94, 0x44, 0x36, 0x53, 0x13, 0x2d, 0xa7, 0xc4, 0x96, 0x9f, 0x3e, 0x0a, 0x1f, 0x93, - 0x60, 0x1a, 0xdf, 0x4f, 0xb6, 0x70, 0x09, 0x7b, 0xe7, 0x0b, 0x1a, 0x25, 0x2f, 0x60, 0xc5, 0xac, - 0x40, 0xb6, 0x6d, 0x5a, 0x17, 0xfc, 0x5d, 0x70, 0xef, 0x39, 0xbc, 0xed, 0x46, 0xea, 0x73, 0xdb, - 0x4d, 0xb0, 0x4f, 0x11, 0x94, 0x7b, 0xa0, 0xeb, 0x17, 0x07, 0x92, 0x4b, 0x5f, 0x8c, 0x7f, 0x9f, - 0x85, 0x7c, 0x0d, 0x19, 0x4e, 0x73, 0x5b, 0x7d, 0x9f, 0xd4, 0x77, 0xaa, 0x30, 0xc9, 0x4f, 0x15, - 0x96, 0x60, 0x62, 0xd3, 0x6c, 0xbb, 0xc8, 0x21, 0x9e, 0x41, 0x6c, 0xd7, 0x4e, 0x9a, 0xf8, 0x42, - 0xdb, 0x6e, 0x5e, 0x98, 0xa7, 0xa6, 0xfb, 0xbc, 0x1f, 0x1d, 0x6d, 0x7e, 0x09, 0xff, 0xa4, 0xfb, - 0x3f, 0x7b, 0x06, 0x61, 0xd7, 0x76, 0xdc, 0xa8, 0xc0, 0xd7, 0x11, 0x54, 0x6a, 0xb6, 0xe3, 0xea, - 0xe4, 0x47, 0x0f, 0xe6, 0xcd, 0xdd, 0x76, 0xbb, 0x8e, 0x1e, 0x70, 0xfd, 0x69, 0x9b, 0xff, 0xee, - 0x19, 0x8b, 0xf6, 0xe6, 0x66, 0x17, 0x91, 0x45, 0x83, 0x9c, 0x4e, 0xdf, 0x94, 0xe3, 0x90, 0x6b, - 0x9b, 0x3b, 0x26, 0x99, 0x68, 0xe4, 0x74, 0xf2, 0xa2, 0xdc, 0x08, 0x85, 0x70, 0x8e, 0x43, 0x18, - 0x3d, 0x95, 0xc7, 0x4d, 0x73, 0x5f, 0xba, 0xa7, 0x33, 0x17, 0xd0, 0xa5, 0xee, 0xa9, 0x09, 0xfc, - 0x1d, 0x3f, 0xf3, 0x6e, 0x98, 0x22, 0xfb, 0x1d, 0x44, 0xe2, 0xd1, 0x33, 0x58, 0x07, 0x35, 0x6d, - 0xa7, 0xe5, 0xcb, 0x26, 0x7a, 0x82, 0x41, 0xf3, 0x25, 0xdb, 0xa5, 0xe8, 0x5b, 0xf8, 0x18, 0x5c, - 0x20, 0xf2, 0x5e, 0xb7, 0xe9, 0x15, 0x7d, 0xce, 0x74, 0xb7, 0xd7, 0x90, 0x6b, 0xa8, 0x7f, 0x2f, - 0xf7, 0xd5, 0xb8, 0xe9, 0xff, 0xa5, 0x71, 0x03, 0x34, 0x8e, 0x84, 0x09, 0x70, 0x77, 0x1d, 0xcb, - 0x93, 0x23, 0x8d, 0x34, 0xc7, 0xa4, 0x28, 0x77, 0xc0, 0x15, 0xe1, 0x9b, 0xbf, 0x54, 0xba, 0x48, - 0xa7, 0xad, 0x53, 0x38, 0x7b, 0x74, 0x06, 0x65, 0x1d, 0xae, 0x25, 0x1f, 0x57, 0xea, 0x6b, 0xab, - 0x2b, 0xe6, 0xd6, 0x76, 0xdb, 0xdc, 0xda, 0x76, 0xbb, 0x65, 0xab, 0xeb, 0x22, 0xa3, 0x55, 0xdd, - 0xd4, 0x49, 0xc8, 0x7a, 0xc0, 0x74, 0x44, 0xb2, 0xf2, 0x9e, 0x43, 0x62, 0xa3, 0x1b, 0xab, 0x29, - 0x11, 0x2d, 0xe5, 0x49, 0x5e, 0x4b, 0xe9, 0xee, 0xb6, 0x03, 0x4c, 0xaf, 0xea, 0xc1, 0x34, 0x54, - 0xf5, 0xdd, 0x36, 0x6e, 0x2e, 0x38, 0x73, 0xd2, 0x71, 0x2e, 0x86, 0x93, 0xf4, 0x9b, 0xcd, 0xff, - 0x97, 0x87, 0xdc, 0xb2, 0x63, 0x74, 0xb6, 0xd5, 0x67, 0x31, 0xfd, 0xf3, 0xa8, 0xda, 0x44, 0xa0, - 0x9d, 0xd2, 0x20, 0xed, 0x94, 0x07, 0x68, 0x67, 0x96, 0xd1, 0xce, 0xe8, 0x45, 0xe5, 0x33, 0x30, - 0xd3, 0xb4, 0xdb, 0x6d, 0xd4, 0xf4, 0xe4, 0x51, 0x6e, 0xe1, 0xd5, 0x9c, 0x29, 0x9d, 0x4b, 0xc3, - 0x11, 0x24, 0x91, 0x5b, 0x23, 0x6b, 0xe8, 0x44, 0xe9, 0xc3, 0x04, 0xf5, 0xa5, 0x12, 0x64, 0xb5, - 0xd6, 0x16, 0xe2, 0xd6, 0xd9, 0x33, 0xcc, 0x3a, 0xfb, 0x49, 0xc8, 0xbb, 0x86, 0xb3, 0x85, 0x5c, - 0x7f, 0x9d, 0x80, 0xbc, 0x05, 0x81, 0x2d, 0x65, 0x26, 0xb0, 0xe5, 0x4f, 0x42, 0xd6, 0x93, 0x19, - 0x8d, 0xc0, 0x73, 0x6d, 0x3f, 0xf8, 0xb1, 0xec, 0xe7, 0xbd, 0x12, 0xe7, 0xbd, 0x5a, 0xeb, 0xf8, - 0x87, 0x5e, 0xac, 0x73, 0xfb, 0xb0, 0xc6, 0xb7, 0x6f, 0x35, 0x6d, 0xab, 0xbc, 0x63, 0x6c, 0x21, - 0x5a, 0xcd, 0x30, 0xc1, 0xff, 0xaa, 0xed, 0xd8, 0xf7, 0x9b, 0x34, 0xc6, 0x64, 0x98, 0xe0, 0x55, - 0x61, 0xdb, 0x6c, 0xb5, 0x90, 0x45, 0x5b, 0x36, 0x7d, 0x3b, 0x73, 0x1a, 0xb2, 0x1e, 0x0f, 0x9e, - 0xfe, 0x78, 0xc6, 0x42, 0xe1, 0x88, 0x32, 0xe3, 0x35, 0x2b, 0xd2, 0x78, 0x0b, 0x19, 0x7e, 0x4d, - 0x55, 0xc4, 0x6d, 0x87, 0x54, 0xae, 0x7f, 0xe3, 0x7a, 0x1c, 0xe4, 0x2c, 0xbb, 0x85, 0x06, 0x0e, - 0x42, 0x24, 0x97, 0xf2, 0x44, 0xc8, 0xa1, 0x96, 0xd7, 0x2b, 0xc8, 0x38, 0xfb, 0xe9, 0x78, 0x59, - 0xea, 0x24, 0x73, 0x32, 0xdf, 0xa0, 0x7e, 0xdc, 0xa6, 0xdf, 0x00, 0x7f, 0x69, 0x02, 0x8e, 0x92, - 0x3e, 0xa0, 0xb6, 0x7b, 0xde, 0x23, 0x75, 0x1e, 0xa9, 0x0f, 0xf7, 0x1f, 0xb8, 0x8e, 0xf2, 0xca, - 0x7e, 0x1c, 0x72, 0xdd, 0xdd, 0xf3, 0x81, 0x11, 0x4a, 0x5e, 0xd8, 0xa6, 0x2b, 0x8d, 0x64, 0x38, - 0x93, 0x87, 0x1d, 0xce, 0xb8, 0xa1, 0x49, 0xf6, 0x1b, 0x7f, 0x38, 0x90, 0xe5, 0x71, 0xb2, 0x3f, - 0x90, 0xf5, 0x1b, 0x86, 0x4e, 0xc1, 0x84, 0xb1, 0xe9, 0x22, 0x27, 0x34, 0x13, 0xe9, 0xab, 0x37, - 0x54, 0x9e, 0x47, 0x9b, 0xb6, 0xe3, 0x89, 0x65, 0x8a, 0x0c, 0x95, 0xfe, 0x3b, 0xd3, 0x72, 0x81, - 0xdb, 0x21, 0xbb, 0x09, 0x8e, 0x59, 0xf6, 0x22, 0xea, 0x50, 0x39, 0x13, 0x14, 0x67, 0x71, 0x0b, - 0xd8, 0xff, 0x61, 0x5f, 0x57, 0x32, 0xb7, 0xbf, 0x2b, 0x51, 0x3f, 0x93, 0x74, 0xce, 0xdc, 0x03, - 0xf4, 0xc8, 0x2c, 0x34, 0xe5, 0x29, 0x30, 0xd3, 0xa2, 0x2e, 0x5a, 0x4d, 0x33, 0x68, 0x25, 0x91, - 0xff, 0x71, 0x99, 0x43, 0x45, 0xca, 0xb2, 0x8a, 0xb4, 0x0c, 0x93, 0xf8, 0x40, 0x8e, 0xa7, 0x49, - 0xb9, 0x9e, 0x00, 0x79, 0x78, 0x5a, 0x17, 0x54, 0x8a, 0x11, 0xdb, 0x7c, 0x89, 0xfe, 0xa2, 0x07, - 0x3f, 0x27, 0x9b, 0x7d, 0xc7, 0x4b, 0x28, 0xfd, 0xe6, 0xf8, 0xdb, 0x79, 0xb8, 0xa2, 0xe4, 0xd8, - 0xdd, 0x2e, 0x8e, 0x42, 0xd1, 0xdb, 0x30, 0xdf, 0x28, 0x71, 0x21, 0xae, 0x1f, 0xd1, 0xcd, 0xaf, - 0x5f, 0x83, 0x1a, 0x5f, 0xd3, 0xf8, 0xba, 0xf0, 0x51, 0xe6, 0x60, 0xff, 0x21, 0x42, 0xe8, 0x3f, - 0x1a, 0x8d, 0xe4, 0xdd, 0x19, 0x91, 0xd3, 0xd5, 0x09, 0x65, 0x95, 0x7e, 0x73, 0xf9, 0x92, 0x04, - 0x57, 0xf6, 0x72, 0xb3, 0x61, 0x75, 0x83, 0x06, 0x73, 0xf5, 0x80, 0xf6, 0xc2, 0x9f, 0xc6, 0x8d, - 0xbd, 0x5c, 0x2a, 0xa2, 0xee, 0x4c, 0x69, 0x11, 0x8b, 0x25, 0xef, 0xcd, 0x88, 0x5c, 0x2e, 0x95, - 0x98, 0x7c, 0xfa, 0xc2, 0xfd, 0x6c, 0x16, 0x8e, 0x2e, 0x3b, 0xf6, 0x6e, 0xa7, 0x1b, 0xf6, 0x40, - 0x7f, 0xd3, 0x7f, 0xc3, 0x35, 0x2f, 0x62, 0x1a, 0x5c, 0x03, 0xd3, 0x0e, 0xb5, 0xe6, 0xc2, 0xed, - 0x57, 0x36, 0x89, 0xed, 0xbd, 0xe4, 0x83, 0xf4, 0x5e, 0x61, 0x3f, 0x93, 0xe5, 0xfa, 0x99, 0xde, - 0x9e, 0x23, 0xd7, 0xa7, 0xe7, 0xf8, 0x6b, 0x29, 0xe1, 0xa0, 0xda, 0x23, 0xa2, 0x88, 0xfe, 0xa2, - 0x04, 0xf9, 0x2d, 0x9c, 0x91, 0x76, 0x17, 0x8f, 0x15, 0xab, 0x19, 0x26, 0xae, 0xd3, 0x5f, 0x43, - 0xb9, 0xca, 0xac, 0x0e, 0x27, 0x1a, 0xe0, 0xe2, 0xb9, 0x4d, 0x5f, 0xa9, 0x1e, 0xca, 0xc2, 0x4c, - 0x50, 0x7a, 0xb9, 0xd5, 0x55, 0x5f, 0xd0, 0x5f, 0xa3, 0x66, 0x45, 0x34, 0x6a, 0xdf, 0x3a, 0x73, - 0x30, 0xea, 0xc8, 0xcc, 0xa8, 0xd3, 0x77, 0x74, 0x99, 0x89, 0x18, 0x5d, 0xd4, 0x67, 0xca, 0xa2, - 0x97, 0x44, 0xf0, 0x5d, 0x2b, 0xae, 0xcd, 0x23, 0x79, 0xb0, 0x10, 0xbc, 0xaa, 0x62, 0x70, 0xad, - 0xd2, 0x57, 0x92, 0x0f, 0x4a, 0x70, 0x6c, 0x7f, 0x67, 0xfe, 0x63, 0xbc, 0x17, 0x9a, 0x57, 0xa7, - 0x6e, 0xe0, 0x85, 0x86, 0xdf, 0xf8, 0x4d, 0xba, 0xd8, 0xa3, 0xb1, 0x9c, 0xbd, 0x37, 0xb8, 0x13, - 0x17, 0x3b, 0xfc, 0x2a, 0x48, 0x34, 0x7d, 0x01, 0xfe, 0x9a, 0x0c, 0x53, 0x35, 0xe4, 0xae, 0x1a, - 0x97, 0xec, 0x5d, 0x57, 0x35, 0x44, 0xb7, 0xe7, 0x9e, 0x0c, 0xf9, 0x36, 0xfe, 0x85, 0xde, 0xbd, - 0x7b, 0x4d, 0xdf, 0xfd, 0x2d, 0xec, 0xfb, 0x43, 0x48, 0xeb, 0x34, 0x3f, 0x7f, 0x26, 0x59, 0x64, - 0x77, 0x34, 0xe0, 0x6e, 0x24, 0x5b, 0x3b, 0x89, 0xf6, 0x4e, 0xa3, 0x8a, 0x4e, 0x1f, 0x96, 0x67, - 0xcb, 0x30, 0x5b, 0x43, 0x6e, 0xb9, 0xbb, 0x64, 0xec, 0xd9, 0x8e, 0xe9, 0x22, 0xf6, 0xf2, 0xad, - 0x78, 0x68, 0x4e, 0x03, 0x98, 0xc1, 0x6f, 0x34, 0x52, 0x02, 0x93, 0xa2, 0xfe, 0x56, 0x52, 0x47, - 0x21, 0x8e, 0x8f, 0x91, 0x80, 0x90, 0xc8, 0xc7, 0x22, 0xae, 0xf8, 0xf4, 0x81, 0xf8, 0xa2, 0x44, - 0x81, 0x28, 0x3a, 0xcd, 0x6d, 0x73, 0x0f, 0xb5, 0x12, 0x02, 0xe1, 0xff, 0x16, 0x02, 0x11, 0x10, - 0x4a, 0xec, 0xbe, 0xc2, 0xf1, 0x31, 0x0a, 0xf7, 0x95, 0x38, 0x82, 0x63, 0x09, 0x76, 0xe0, 0x75, - 0x3d, 0x74, 0x3d, 0xf3, 0x2e, 0x51, 0xb1, 0x86, 0x26, 0x9b, 0xc4, 0x9a, 0x6c, 0x43, 0x75, 0x2c, - 0xa4, 0xec, 0x41, 0x3a, 0x9d, 0x4d, 0xa3, 0x63, 0xe9, 0x5b, 0x74, 0xfa, 0x42, 0x7f, 0xaf, 0x0c, - 0x27, 0x82, 0x53, 0xc0, 0x35, 0xe4, 0x2e, 0x1a, 0xdd, 0xed, 0xf3, 0xb6, 0xe1, 0xb4, 0xd8, 0x3b, - 0x99, 0x87, 0x3e, 0xf1, 0xa7, 0x7e, 0x81, 0x05, 0xa1, 0xc2, 0x83, 0xd0, 0xd7, 0x55, 0xb4, 0x2f, - 0x2f, 0xa3, 0xe8, 0x64, 0x62, 0xbd, 0x59, 0xdf, 0x1e, 0x80, 0xf5, 0x53, 0x1c, 0x58, 0x77, 0x0e, - 0xcb, 0x62, 0xfa, 0xc0, 0xfd, 0x26, 0x19, 0x11, 0x18, 0xaf, 0xe6, 0xfb, 0x44, 0x01, 0x8b, 0xf0, - 0x6a, 0x95, 0x23, 0xbd, 0x5a, 0x87, 0x1a, 0x23, 0x06, 0x7a, 0x24, 0xa7, 0x3b, 0x46, 0x1c, 0xa2, - 0xb7, 0xf1, 0x3b, 0x65, 0x28, 0xe0, 0x30, 0x10, 0x8c, 0xc7, 0xb7, 0x7a, 0xbf, 0x28, 0x3a, 0xfb, - 0xbc, 0xcb, 0x27, 0x92, 0x7a, 0x97, 0xab, 0xef, 0x48, 0xea, 0x43, 0xde, 0xcb, 0xed, 0x48, 0x10, - 0x4b, 0xe4, 0x22, 0x3e, 0x80, 0x83, 0xf4, 0x41, 0xfb, 0x65, 0x19, 0xc0, 0x6b, 0xd0, 0xf4, 0xec, - 0xc3, 0xd3, 0x44, 0xe1, 0xba, 0x99, 0xf5, 0xab, 0xf7, 0x80, 0x3a, 0xd1, 0x03, 0x14, 0xa1, 0x18, - 0x9e, 0xaa, 0x78, 0x38, 0xa9, 0x6f, 0x65, 0xc8, 0xd5, 0x48, 0x60, 0x49, 0xe4, 0x6d, 0x19, 0x59, - 0x76, 0xfa, 0x80, 0xfc, 0x77, 0x09, 0x72, 0x75, 0xbb, 0x86, 0xdc, 0x83, 0x9b, 0x02, 0x89, 0x8f, - 0xed, 0xe3, 0x72, 0x47, 0x71, 0x6c, 0xbf, 0x1f, 0xa1, 0xf4, 0x45, 0xf7, 0x1e, 0x09, 0x66, 0xea, - 0x76, 0x29, 0x58, 0x9c, 0x12, 0xf7, 0x55, 0x15, 0xbf, 0xe8, 0x32, 0xa8, 0x60, 0x58, 0xcc, 0x81, - 0x2e, 0xba, 0x1c, 0x4c, 0x2f, 0x7d, 0xb9, 0xdd, 0x06, 0x47, 0x37, 0xac, 0x96, 0xad, 0xa3, 0x96, - 0x4d, 0x57, 0xba, 0x15, 0x05, 0xb2, 0xbb, 0x56, 0xcb, 0xc6, 0x2c, 0xe7, 0x74, 0xfc, 0xec, 0xa5, - 0x39, 0xa8, 0x65, 0x53, 0xdf, 0x00, 0xfc, 0xac, 0x7e, 0x5d, 0x86, 0xac, 0xf7, 0xaf, 0xb8, 0xa8, - 0xdf, 0x29, 0x27, 0x0c, 0x44, 0xe0, 0x91, 0x1f, 0x89, 0x25, 0x74, 0x17, 0xb3, 0xf6, 0x4f, 0x3c, - 0x58, 0xaf, 0x8d, 0x2a, 0x8f, 0x11, 0x45, 0xb8, 0xe6, 0xaf, 0x9c, 0x82, 0x89, 0xf3, 0x6d, 0xbb, - 0x79, 0x21, 0x3c, 0x2f, 0x4f, 0x5f, 0x95, 0x1b, 0x21, 0xe7, 0x18, 0xd6, 0x16, 0xa2, 0x7b, 0x0a, - 0xc7, 0x7b, 0xfa, 0x42, 0xec, 0xf5, 0xa2, 0x93, 0x2c, 0xea, 0x3b, 0x92, 0x84, 0x40, 0xe8, 0x53, - 0xf9, 0x64, 0xfa, 0xb0, 0x38, 0xc4, 0xc9, 0xb2, 0x02, 0xcc, 0x94, 0x8a, 0xe4, 0x4a, 0xd9, 0xb5, - 0xea, 0x59, 0xad, 0x20, 0x63, 0x98, 0x3d, 0x99, 0xa4, 0x08, 0xb3, 0x47, 0xfe, 0x47, 0x16, 0xe6, - 0x3e, 0x95, 0x3f, 0x0c, 0x98, 0x3f, 0x25, 0xc1, 0xec, 0xaa, 0xd9, 0x75, 0xa3, 0xbc, 0xfd, 0x63, - 0xa2, 0xc0, 0xbd, 0x30, 0xa9, 0xa9, 0xcc, 0x95, 0x23, 0x1c, 0xfe, 0x2d, 0x91, 0x39, 0x1c, 0x57, - 0xc4, 0x78, 0x8e, 0xa5, 0x60, 0x0e, 0xc8, 0x35, 0x90, 0xc2, 0x92, 0x4c, 0x6c, 0x28, 0x85, 0x85, - 0x8c, 0xdf, 0x50, 0x8a, 0x2c, 0x3b, 0x7d, 0xf9, 0x7e, 0x5d, 0x82, 0x63, 0x5e, 0xf1, 0x71, 0xcb, - 0x52, 0xd1, 0x62, 0x1e, 0xb8, 0x2c, 0x95, 0x78, 0x65, 0x7c, 0x1f, 0x2f, 0xa3, 0x58, 0x19, 0x1f, - 0x44, 0x74, 0xcc, 0x62, 0x8e, 0x58, 0x86, 0x1d, 0x24, 0xe6, 0x98, 0x65, 0xd8, 0xe1, 0xc5, 0x1c, - 0xbf, 0x14, 0x3b, 0xa4, 0x98, 0x0f, 0x6d, 0x81, 0xf5, 0xf5, 0x72, 0x20, 0xe6, 0xc8, 0xb5, 0x8d, - 0x18, 0x31, 0x27, 0x3e, 0xb1, 0xab, 0xbe, 0x6b, 0x48, 0xc1, 0x8f, 0x78, 0x7d, 0x63, 0x18, 0x98, - 0x0e, 0x71, 0x8d, 0xe3, 0x65, 0x32, 0xcc, 0x51, 0x2e, 0xfa, 0x4f, 0x99, 0x63, 0x30, 0x4a, 0x3c, - 0x65, 0x4e, 0x7c, 0x06, 0x88, 0xe7, 0x6c, 0xfc, 0x67, 0x80, 0x62, 0xcb, 0x4f, 0x1f, 0x9c, 0x6f, - 0x64, 0xe1, 0xa4, 0xc7, 0xc2, 0x9a, 0xdd, 0x32, 0x37, 0x2f, 0x11, 0x2e, 0xce, 0x1a, 0xed, 0x5d, - 0xd4, 0x55, 0xdf, 0x2f, 0x89, 0xa2, 0xf4, 0x9f, 0x00, 0xec, 0x0e, 0x72, 0x48, 0x20, 0x35, 0x0a, - 0xd4, 0x1d, 0x51, 0x95, 0xdd, 0x5f, 0x52, 0x10, 0x14, 0xbd, 0xea, 0x13, 0xd1, 0x19, 0x7a, 0x9e, - 0x55, 0x38, 0x15, 0x7c, 0xe9, 0x75, 0xf0, 0xc8, 0xec, 0x77, 0xf0, 0xb8, 0x01, 0x64, 0xa3, 0xd5, - 0x0a, 0xa0, 0xea, 0xdd, 0xcc, 0xc6, 0x65, 0xea, 0x5e, 0x16, 0x2f, 0x67, 0x17, 0x85, 0x47, 0xf3, - 0x22, 0x72, 0x76, 0x91, 0xab, 0xcc, 0x43, 0x9e, 0xdc, 0x20, 0x18, 0xac, 0xe8, 0xf7, 0xcf, 0x4c, - 0x73, 0xf1, 0xa6, 0x5d, 0x95, 0x57, 0xc3, 0xdb, 0x12, 0x49, 0xa6, 0x5f, 0x3f, 0x1d, 0xda, 0xc9, - 0x3a, 0xa7, 0x60, 0x4f, 0x1d, 0x9a, 0xf2, 0x78, 0x76, 0xc3, 0x8a, 0x9d, 0x4e, 0xfb, 0x52, 0x9d, - 0x06, 0x5f, 0x49, 0xb4, 0x1b, 0xc6, 0xc4, 0x70, 0x91, 0x7a, 0x63, 0xb8, 0x24, 0xdf, 0x0d, 0xe3, - 0xf8, 0x18, 0xc5, 0x6e, 0x58, 0x1c, 0xc1, 0x31, 0xac, 0x47, 0xe6, 0x88, 0xd5, 0x4c, 0x63, 0xd4, - 0xbe, 0xa9, 0xff, 0x21, 0x34, 0xe0, 0x9d, 0x5d, 0xfa, 0x85, 0xaf, 0x8d, 0x8d, 0xcd, 0xad, 0x3c, - 0x11, 0xf2, 0x9b, 0xb6, 0xb3, 0x63, 0xf8, 0x1b, 0xf7, 0xbd, 0x27, 0x45, 0x68, 0x5c, 0xd8, 0x25, - 0x9c, 0x47, 0xa7, 0x79, 0xbd, 0xf9, 0xc8, 0x33, 0xcc, 0x0e, 0x8d, 0xba, 0xe8, 0x3d, 0x2a, 0xd7, - 0xc1, 0x2c, 0x0d, 0xbe, 0x58, 0x41, 0x5d, 0x17, 0xb5, 0x68, 0xc4, 0x0a, 0x3e, 0x51, 0x39, 0x03, - 0x33, 0x34, 0x61, 0xc9, 0x6c, 0xa3, 0x2e, 0x0d, 0x5a, 0xc1, 0xa5, 0x29, 0x27, 0x21, 0x6f, 0x76, - 0xef, 0xe9, 0xda, 0x16, 0xf6, 0xff, 0x9f, 0xd4, 0xe9, 0x9b, 0x72, 0x03, 0x1c, 0xa5, 0xf9, 0x02, - 0x63, 0x95, 0x1c, 0xd8, 0xe9, 0x4d, 0x56, 0x3f, 0x37, 0xcc, 0xc4, 0x21, 0x71, 0x3c, 0x5e, 0x0f, - 0x85, 0xdd, 0x66, 0x13, 0xa1, 0x16, 0x3d, 0xd9, 0xe4, 0xbf, 0x26, 0x8c, 0xd4, 0x9b, 0x78, 0x9a, - 0x71, 0x48, 0xa1, 0x7a, 0x3f, 0x72, 0x02, 0xf2, 0xe4, 0xda, 0x0b, 0xf5, 0x25, 0x73, 0x7d, 0x95, - 0x71, 0x8e, 0x57, 0xc6, 0x0d, 0x98, 0xb1, 0x6c, 0xaf, 0xb8, 0x75, 0xc3, 0x31, 0x76, 0xba, 0x71, - 0xab, 0x88, 0x84, 0x6e, 0x30, 0x64, 0x54, 0x98, 0xdf, 0x56, 0x8e, 0xe8, 0x1c, 0x19, 0xe5, 0x7f, - 0x83, 0xa3, 0xe7, 0x69, 0x04, 0x80, 0x2e, 0xa5, 0x2c, 0x45, 0xfb, 0xd8, 0xf5, 0x50, 0x5e, 0xe0, - 0xff, 0x5c, 0x39, 0xa2, 0xf7, 0x12, 0x53, 0x7e, 0x06, 0xe6, 0xbc, 0xd7, 0x96, 0x7d, 0xd1, 0x67, - 0x5c, 0x8e, 0x36, 0x34, 0x7a, 0xc8, 0xaf, 0x71, 0x3f, 0xae, 0x1c, 0xd1, 0x7b, 0x48, 0x29, 0x55, - 0x80, 0x6d, 0x77, 0xa7, 0x4d, 0x09, 0x67, 0xa3, 0x55, 0xb2, 0x87, 0xf0, 0x4a, 0xf0, 0xd3, 0xca, - 0x11, 0x9d, 0x21, 0xa1, 0xac, 0xc2, 0x94, 0xfb, 0x80, 0x4b, 0xe9, 0xe5, 0xa2, 0x37, 0xb7, 0x7b, - 0xe8, 0xd5, 0xfd, 0x7f, 0x56, 0x8e, 0xe8, 0x21, 0x01, 0xa5, 0x0c, 0x93, 0x9d, 0xf3, 0x94, 0x58, - 0xbe, 0xcf, 0xdd, 0xf2, 0xfd, 0x89, 0xad, 0x9f, 0x0f, 0x68, 0x05, 0xbf, 0x7b, 0x8c, 0x35, 0xbb, - 0x7b, 0x94, 0xd6, 0x84, 0x30, 0x63, 0x25, 0xff, 0x1f, 0x8f, 0xb1, 0x80, 0x80, 0x52, 0x86, 0xa9, - 0xae, 0x65, 0x74, 0xba, 0xdb, 0xb6, 0xdb, 0x3d, 0x35, 0xd9, 0xe3, 0x07, 0x19, 0x4d, 0xad, 0x46, - 0xff, 0xd1, 0xc3, 0xbf, 0x95, 0x27, 0xc2, 0x89, 0x5d, 0x7c, 0x7d, 0xa8, 0xf6, 0x80, 0xd9, 0x75, - 0x4d, 0x6b, 0xcb, 0x8f, 0x21, 0x4b, 0x7a, 0x93, 0xfe, 0x1f, 0x95, 0x79, 0x7a, 0x22, 0x0a, 0x70, - 0xdb, 0x54, 0x7b, 0x37, 0xe3, 0x48, 0xb1, 0xcc, 0x41, 0xa8, 0xa7, 0x40, 0xd6, 0xfb, 0x84, 0xcf, - 0x6c, 0xce, 0xf5, 0x5f, 0xe8, 0xeb, 0xd5, 0x1d, 0xdc, 0x80, 0xbd, 0x9f, 0xbc, 0xb1, 0xd1, 0xb2, - 0xd7, 0x1d, 0x7b, 0xcb, 0x41, 0xdd, 0x2e, 0x75, 0x38, 0x64, 0x52, 0xbc, 0x06, 0x6e, 0x76, 0xc9, - 0x3d, 0xf1, 0xa1, 0xbf, 0x3b, 0x9b, 0x44, 0x66, 0x9b, 0x15, 0x74, 0x11, 0x3b, 0x04, 0xe3, 0xf3, - 0x37, 0x78, 0xb6, 0xe9, 0xa7, 0xa8, 0xd7, 0xc3, 0x0c, 0xdb, 0xc8, 0xc8, 0xdd, 0x59, 0x66, 0x68, - 0x7b, 0xd1, 0x37, 0xf5, 0x3a, 0x98, 0xe3, 0x75, 0x9a, 0x19, 0x62, 0x64, 0xbf, 0x2b, 0x54, 0xaf, - 0x85, 0xa3, 0x3d, 0x0d, 0xcb, 0x8f, 0x29, 0x92, 0x09, 0x63, 0x8a, 0x5c, 0x03, 0x10, 0x6a, 0x71, - 0x5f, 0x32, 0x57, 0xc3, 0x54, 0xa0, 0x97, 0x7d, 0x33, 0x7c, 0x35, 0x03, 0x93, 0xbe, 0xb2, 0xf5, - 0xcb, 0xe0, 0x8d, 0x2f, 0x16, 0xb3, 0x81, 0x40, 0xa7, 0xd9, 0x5c, 0x9a, 0x37, 0x8e, 0x84, 0x6e, - 0xbb, 0x75, 0xd3, 0x6d, 0xfb, 0x47, 0xdf, 0x7a, 0x93, 0x95, 0x75, 0x00, 0x13, 0x63, 0x54, 0x0f, - 0xcf, 0xc2, 0xdd, 0x92, 0xa0, 0x3d, 0x10, 0x7d, 0x60, 0x68, 0x9c, 0xf9, 0x31, 0x7a, 0x50, 0x6d, - 0x0a, 0x72, 0xb5, 0xf5, 0x62, 0x49, 0x2b, 0x1c, 0x51, 0xe6, 0x00, 0xb4, 0xa7, 0xad, 0x6b, 0x7a, - 0x59, 0xab, 0x94, 0xb4, 0x42, 0x46, 0x7d, 0xb9, 0x04, 0x53, 0x41, 0x23, 0xe8, 0x5b, 0x49, 0x8d, - 0xaa, 0xd6, 0xc0, 0xeb, 0x89, 0xf6, 0x37, 0x2a, 0x56, 0xc9, 0x9e, 0x0c, 0x97, 0xef, 0x76, 0xd1, - 0x92, 0xe9, 0x74, 0x5d, 0xdd, 0xbe, 0xb8, 0x64, 0x3b, 0x41, 0xd4, 0x64, 0xff, 0x9a, 0xfe, 0x88, - 0xcf, 0x9e, 0x45, 0xd1, 0x42, 0xf8, 0x50, 0x14, 0x72, 0xe8, 0xca, 0x70, 0x98, 0xe0, 0xd1, 0x75, - 0xc9, 0xbd, 0xf8, 0x5d, 0xa4, 0xdb, 0x17, 0xbb, 0x45, 0xab, 0x55, 0xb2, 0xdb, 0xbb, 0x3b, 0x56, - 0x97, 0xda, 0x04, 0x51, 0x9f, 0x3d, 0xe9, 0xe0, 0xcb, 0xc7, 0xe6, 0x00, 0x4a, 0xd5, 0xd5, 0x55, - 0xad, 0x54, 0x2f, 0x57, 0x2b, 0x85, 0x23, 0x9e, 0xb4, 0xea, 0xc5, 0x85, 0x55, 0x4f, 0x3a, 0x3f, - 0x0b, 0x93, 0x7e, 0x9b, 0xa6, 0x61, 0x50, 0x32, 0x7e, 0x18, 0x14, 0xa5, 0x08, 0x93, 0x7e, 0x2b, - 0xa7, 0x23, 0xc2, 0xa3, 0x7b, 0x8f, 0xbd, 0xee, 0x18, 0x8e, 0x8b, 0xfd, 0xa5, 0x7d, 0x22, 0x0b, - 0x46, 0x17, 0xe9, 0xc1, 0x6f, 0x67, 0x1e, 0x47, 0x39, 0x50, 0x60, 0xae, 0xb8, 0xba, 0xda, 0xa8, - 0xea, 0x8d, 0x4a, 0xb5, 0xbe, 0x52, 0xae, 0x2c, 0x93, 0x11, 0xb2, 0xbc, 0x5c, 0xa9, 0xea, 0x1a, - 0x19, 0x20, 0x6b, 0x85, 0x0c, 0xb9, 0xfc, 0x6e, 0x61, 0x12, 0xf2, 0x1d, 0x2c, 0x5d, 0xf5, 0x4b, - 0x72, 0xc2, 0xf3, 0xee, 0x01, 0x4e, 0x11, 0xd7, 0x73, 0x71, 0x3e, 0xe7, 0x52, 0x9f, 0x33, 0xa1, - 0x67, 0x60, 0x86, 0xd8, 0x72, 0x5d, 0xbc, 0x7c, 0x4f, 0x6f, 0xb8, 0xe5, 0xd2, 0xd4, 0x8f, 0x49, - 0x09, 0x0e, 0xc1, 0xf7, 0xe5, 0x28, 0x99, 0x71, 0xf1, 0xe7, 0xc3, 0x5c, 0x76, 0xa7, 0xc0, 0x5c, - 0xb9, 0x52, 0xd7, 0xf4, 0x4a, 0x71, 0x95, 0x66, 0x91, 0x95, 0x53, 0x70, 0xbc, 0x52, 0xa5, 0x31, - 0xfd, 0x6a, 0xf8, 0x5a, 0xed, 0xb5, 0xf5, 0xaa, 0x5e, 0x2f, 0xe4, 0x94, 0x93, 0xa0, 0x90, 0x67, - 0xee, 0xd6, 0xfa, 0xbc, 0xf2, 0x18, 0xb8, 0x76, 0xb5, 0xbc, 0x56, 0xae, 0x37, 0xaa, 0x4b, 0x0d, - 0xbd, 0x7a, 0xae, 0xe6, 0x21, 0xa8, 0x6b, 0xab, 0x45, 0x4f, 0x91, 0x98, 0x4b, 0xf0, 0x26, 0x94, - 0xcb, 0xe0, 0x28, 0xbe, 0xe0, 0x12, 0xdf, 0x7c, 0x4f, 0xca, 0x9b, 0x54, 0xae, 0x82, 0x53, 0xe5, - 0x4a, 0x6d, 0x63, 0x69, 0xa9, 0x5c, 0x2a, 0x6b, 0x95, 0x7a, 0x63, 0x5d, 0xd3, 0xd7, 0xca, 0xb5, - 0x9a, 0xf7, 0x6f, 0x61, 0x0a, 0x5f, 0x31, 0x46, 0xfa, 0x4c, 0xf5, 0x7d, 0x32, 0xcc, 0x9e, 0x35, - 0xda, 0xa6, 0x37, 0x50, 0xe0, 0xbb, 0x07, 0x7b, 0x8e, 0x8b, 0xb8, 0xf8, 0x8e, 0x42, 0xea, 0x70, - 0x8e, 0x5f, 0xd4, 0x5f, 0x90, 0x13, 0x1e, 0x17, 0xa1, 0x40, 0x90, 0x12, 0xe7, 0xb9, 0xd2, 0x22, - 0x26, 0x37, 0xaf, 0x95, 0x12, 0x1c, 0x17, 0x11, 0x27, 0x9f, 0x0c, 0xfc, 0x57, 0x8c, 0x0a, 0xfc, - 0x02, 0xcc, 0x6c, 0x54, 0x8a, 0x1b, 0xf5, 0x95, 0xaa, 0x5e, 0xfe, 0x69, 0x1c, 0x6d, 0x7c, 0x16, - 0xa6, 0x96, 0xaa, 0xfa, 0x42, 0x79, 0x71, 0x51, 0xab, 0x14, 0x72, 0xca, 0xe5, 0x70, 0x59, 0x4d, - 0xd3, 0xcf, 0x96, 0x4b, 0x5a, 0x63, 0xa3, 0x52, 0x3c, 0x5b, 0x2c, 0xaf, 0xe2, 0x3e, 0x22, 0x1f, - 0x73, 0x6f, 0xe2, 0x84, 0xfa, 0x73, 0x59, 0x00, 0x52, 0x75, 0xcf, 0x92, 0x66, 0x6f, 0xd7, 0xfb, - 0x8b, 0xa4, 0x93, 0x86, 0x90, 0x4c, 0x44, 0xfb, 0x2d, 0xc3, 0xa4, 0x43, 0x3f, 0xd0, 0xe5, 0x93, - 0x41, 0x74, 0xc8, 0xa3, 0x4f, 0x4d, 0x0f, 0x7e, 0x57, 0xdf, 0x9f, 0x64, 0x8e, 0x10, 0xc9, 0x58, - 0x32, 0x24, 0x97, 0x46, 0x03, 0xa4, 0xfa, 0x82, 0x0c, 0xcc, 0xf1, 0x15, 0xf3, 0x2a, 0x81, 0x8d, - 0x29, 0xb1, 0x4a, 0xf0, 0x3f, 0x33, 0x46, 0xd6, 0x99, 0x27, 0xd0, 0xe1, 0x14, 0xfc, 0x96, 0x49, - 0x4e, 0x7e, 0xfb, 0x16, 0x4b, 0x21, 0xe3, 0x31, 0xef, 0x19, 0x1d, 0xe4, 0x6a, 0xf5, 0xfa, 0x03, - 0x6e, 0x41, 0x56, 0xbf, 0x2a, 0xc3, 0x2c, 0x77, 0x7d, 0x9f, 0xfa, 0xda, 0x8c, 0xc8, 0xd5, 0x5a, - 0xcc, 0xc5, 0x80, 0x99, 0x83, 0x5e, 0x0c, 0x78, 0xe6, 0x66, 0x98, 0xa0, 0x69, 0x58, 0xbe, 0xd5, - 0x8a, 0x67, 0x0a, 0x1c, 0x85, 0xe9, 0x65, 0xad, 0xde, 0xa8, 0xd5, 0x8b, 0x7a, 0x5d, 0x5b, 0x2c, - 0x64, 0xbc, 0x81, 0x4f, 0x5b, 0x5b, 0xaf, 0xdf, 0x57, 0x90, 0x92, 0x7b, 0xe0, 0xf5, 0x32, 0x32, - 0x66, 0x0f, 0xbc, 0xb8, 0xe2, 0xd3, 0x9f, 0xab, 0x7e, 0x46, 0x86, 0x02, 0xe1, 0x40, 0x7b, 0xa0, - 0x83, 0x1c, 0x13, 0x59, 0x4d, 0xa4, 0x5e, 0x10, 0x89, 0xf8, 0xb9, 0x2f, 0x16, 0x1e, 0xee, 0xcf, - 0x19, 0x2b, 0x91, 0xbc, 0xf4, 0x18, 0xd8, 0xd9, 0x7d, 0x06, 0xf6, 0xa7, 0x93, 0xba, 0xe0, 0xf5, - 0xb2, 0x3b, 0x12, 0xc8, 0x3e, 0x99, 0xc4, 0x05, 0x6f, 0x00, 0x07, 0x63, 0x09, 0xe4, 0x1b, 0x31, - 0xfe, 0x16, 0x64, 0xf5, 0xf9, 0x32, 0x1c, 0x5d, 0x34, 0x5c, 0xb4, 0x70, 0xa9, 0x6e, 0xee, 0xa0, - 0xae, 0x6b, 0xec, 0x74, 0x22, 0xae, 0xc4, 0xcb, 0xec, 0xbb, 0x12, 0xcf, 0xf5, 0xff, 0xc0, 0x9c, - 0xca, 0x7a, 0x98, 0xa0, 0xbe, 0x3b, 0xe9, 0xa1, 0xbd, 0x1e, 0x1e, 0x46, 0x16, 0x6d, 0x37, 0xd9, - 0x61, 0xbc, 0x78, 0x2e, 0xc6, 0x70, 0x43, 0xed, 0x14, 0x14, 0x08, 0x2b, 0x8c, 0x97, 0xd9, 0xaf, - 0xd1, 0x5b, 0x24, 0x1b, 0x09, 0x82, 0xfa, 0xf9, 0x61, 0x12, 0x24, 0x3e, 0x4c, 0x02, 0xb7, 0x68, - 0x29, 0xf7, 0x7a, 0x06, 0x24, 0xed, 0x0c, 0x19, 0x97, 0xb2, 0xe8, 0x38, 0xaa, 0xe9, 0x75, 0x86, - 0xb1, 0xc5, 0x8f, 0xe7, 0xa6, 0x33, 0x7a, 0x97, 0xa1, 0x26, 0x8a, 0x4c, 0xfc, 0x85, 0x8e, 0x49, - 0xfd, 0x8b, 0x39, 0x97, 0xbe, 0x98, 0x5b, 0x0e, 0xd3, 0xf3, 0x2f, 0x1e, 0xc4, 0x41, 0xfa, 0x28, - 0x7c, 0x5f, 0x82, 0x6c, 0xcd, 0x76, 0xdc, 0x51, 0x61, 0x90, 0x74, 0x4f, 0x94, 0x91, 0x40, 0x2d, - 0x7a, 0xce, 0x99, 0xde, 0x9e, 0x68, 0x7c, 0xf9, 0x63, 0x88, 0x8b, 0x78, 0x14, 0xe6, 0x08, 0x27, - 0xc1, 0xa5, 0x21, 0xff, 0x2e, 0x91, 0xfe, 0xea, 0x5e, 0x51, 0x44, 0xce, 0xc0, 0x0c, 0xb3, 0x27, - 0x19, 0x5c, 0x98, 0xcd, 0xa6, 0xa9, 0x6f, 0x64, 0x71, 0x59, 0xe4, 0x71, 0xe9, 0x37, 0xe3, 0x0e, - 0xee, 0xdd, 0x18, 0x55, 0xcf, 0x94, 0x24, 0xc4, 0x62, 0x4c, 0xe1, 0xe9, 0x23, 0xf2, 0xa0, 0x0c, - 0x79, 0xea, 0x13, 0x36, 0x52, 0x04, 0x92, 0xb6, 0x8c, 0x40, 0x08, 0x62, 0xbe, 0x63, 0xf2, 0xa8, - 0x5b, 0x46, 0x7c, 0xf9, 0xe9, 0xe3, 0xf0, 0x03, 0xea, 0xec, 0x58, 0xdc, 0x33, 0xcc, 0xb6, 0x71, - 0xbe, 0x9d, 0x20, 0xb4, 0xf1, 0xc7, 0x12, 0x1e, 0xef, 0x0a, 0xaa, 0xca, 0x95, 0x17, 0x21, 0xf1, - 0x9f, 0x80, 0x29, 0x27, 0x58, 0x92, 0xf4, 0x4f, 0xbf, 0xf7, 0x38, 0x9a, 0xd2, 0xef, 0x7a, 0x98, - 0x33, 0xd1, 0x59, 0x2e, 0x21, 0x7e, 0xc6, 0x72, 0xf6, 0x64, 0xba, 0xd8, 0x6a, 0x2d, 0x21, 0xc3, - 0xdd, 0x75, 0x50, 0x2b, 0xd1, 0x10, 0xc1, 0x8b, 0x68, 0x8a, 0x95, 0x04, 0x17, 0x5c, 0x70, 0x95, - 0x47, 0xe7, 0x49, 0x03, 0x7a, 0x03, 0x9f, 0x97, 0x91, 0x74, 0x49, 0x6f, 0x0d, 0x20, 0xa9, 0x72, - 0x90, 0x3c, 0x65, 0x38, 0x26, 0xd2, 0x07, 0xe4, 0x37, 0x64, 0x98, 0x23, 0x76, 0xc2, 0xa8, 0x31, - 0xf9, 0xbd, 0x84, 0x3e, 0x24, 0xcc, 0xb5, 0x4c, 0x2c, 0x3b, 0x23, 0x81, 0x25, 0x89, 0xc7, 0x89, - 0x18, 0x1f, 0xe9, 0x23, 0xf3, 0xb9, 0x3c, 0x00, 0xe3, 0x17, 0xf8, 0xb1, 0x7c, 0x18, 0xe8, 0x4f, - 0x7d, 0x07, 0x9d, 0x7f, 0xd4, 0xb8, 0xa8, 0xd3, 0x8c, 0xcf, 0x5f, 0xb0, 0x21, 0xc5, 0x27, 0x0a, - 0x8d, 0x2a, 0x7f, 0x9e, 0xd0, 0xe6, 0xa5, 0x5e, 0x79, 0x03, 0x07, 0xf7, 0x21, 0x7b, 0xb9, 0x8f, - 0x27, 0x30, 0x7e, 0x07, 0xb1, 0x92, 0x0c, 0xb5, 0xd5, 0x21, 0x66, 0xf6, 0xa7, 0xe0, 0xb8, 0xae, - 0x15, 0x17, 0xab, 0x95, 0xd5, 0xfb, 0xd8, 0x3b, 0x7a, 0x0a, 0x32, 0x3b, 0x39, 0x49, 0x05, 0xb6, - 0xd7, 0x25, 0xec, 0x03, 0x79, 0x59, 0xc5, 0xcd, 0x56, 0x98, 0xc5, 0x95, 0xc1, 0xbd, 0x9a, 0x00, - 0xd9, 0xc3, 0x44, 0xe1, 0x41, 0x60, 0x9a, 0xd1, 0xf3, 0x64, 0x28, 0x84, 0xd7, 0xc4, 0xd3, 0xcb, - 0xd8, 0xaa, 0xbc, 0xdb, 0x60, 0x87, 0xec, 0x3f, 0x85, 0x6e, 0x83, 0x7e, 0x82, 0x72, 0x3d, 0xcc, - 0x35, 0xb7, 0x51, 0xf3, 0x42, 0xd9, 0xf2, 0xf7, 0xd5, 0xc9, 0x26, 0x6c, 0x4f, 0x2a, 0x0f, 0xcc, - 0xbd, 0x3c, 0x30, 0xfc, 0x24, 0x9a, 0x1b, 0xa4, 0x59, 0xa6, 0x22, 0x70, 0xf9, 0xc3, 0x00, 0x97, - 0x0a, 0x87, 0xcb, 0xed, 0x43, 0x51, 0x4d, 0x06, 0x4b, 0x65, 0x08, 0x58, 0x54, 0x38, 0x59, 0x5d, - 0xaf, 0x97, 0xab, 0x95, 0xc6, 0x46, 0x4d, 0x5b, 0x6c, 0x2c, 0xf8, 0xe0, 0xd4, 0x0a, 0xb2, 0xfa, - 0x4d, 0x09, 0x26, 0x08, 0x5b, 0xdd, 0x9e, 0x6b, 0xdd, 0xe3, 0xfd, 0x25, 0xd5, 0xb7, 0x09, 0x47, - 0x3f, 0x08, 0x04, 0x41, 0xcb, 0x89, 0xe8, 0xa7, 0x9e, 0x0c, 0x13, 0x04, 0x64, 0x7f, 0x45, 0xeb, - 0x74, 0x44, 0x2f, 0x45, 0xc9, 0xe8, 0x7e, 0x76, 0xc1, 0x48, 0x08, 0x03, 0xd8, 0x48, 0x7f, 0x64, - 0x79, 0x66, 0x96, 0x98, 0xc1, 0xe7, 0x4c, 0x77, 0x1b, 0xbb, 0x53, 0xaa, 0x3f, 0x25, 0xb2, 0xbc, - 0x78, 0x13, 0xe4, 0xf6, 0xbc, 0xdc, 0x03, 0x5c, 0x53, 0x49, 0x26, 0xf5, 0x15, 0xc2, 0x81, 0x37, - 0x39, 0xfd, 0x0c, 0x78, 0x8a, 0x00, 0x67, 0x0d, 0xb2, 0x6d, 0xb3, 0xeb, 0xd2, 0xf1, 0xe3, 0xb6, - 0x44, 0x84, 0xfc, 0x87, 0xb2, 0x8b, 0x76, 0x74, 0x4c, 0x46, 0xbd, 0x07, 0x66, 0xd8, 0x54, 0x01, - 0xf7, 0xdc, 0x53, 0x30, 0x41, 0x8f, 0x8d, 0xd1, 0x25, 0x56, 0xff, 0x55, 0x70, 0x59, 0x53, 0xa8, - 0xb6, 0xe9, 0xeb, 0xc0, 0xff, 0x7b, 0x14, 0x26, 0x56, 0xcc, 0xae, 0x6b, 0x3b, 0x97, 0xd4, 0x87, - 0x33, 0x30, 0x71, 0x16, 0x39, 0x5d, 0xd3, 0xb6, 0xf6, 0xb9, 0x1a, 0x5c, 0x03, 0xd3, 0x1d, 0x07, - 0xed, 0x99, 0xf6, 0x6e, 0x37, 0x5c, 0x9c, 0x61, 0x93, 0x14, 0x15, 0x26, 0x8d, 0x5d, 0x77, 0xdb, - 0x76, 0xc2, 0x68, 0x13, 0xfe, 0xbb, 0x72, 0x1a, 0x80, 0x3c, 0x57, 0x8c, 0x1d, 0x44, 0x1d, 0x28, - 0x98, 0x14, 0x45, 0x81, 0xac, 0x6b, 0xee, 0x20, 0x1a, 0x7e, 0x16, 0x3f, 0x7b, 0x02, 0xc6, 0xa1, - 0xdc, 0x68, 0xc8, 0x3c, 0x59, 0xf7, 0x5f, 0xd5, 0x2f, 0xc8, 0x30, 0xbd, 0x8c, 0x5c, 0xca, 0x6a, - 0x57, 0x7d, 0x61, 0x46, 0xe8, 0xc6, 0x07, 0x6f, 0x8c, 0x6d, 0x1b, 0x5d, 0xff, 0xbf, 0x60, 0x09, - 0x96, 0x4f, 0x0c, 0x63, 0xe1, 0xca, 0x6c, 0x20, 0x6c, 0x1c, 0x18, 0xcd, 0x2d, 0x13, 0xbf, 0x4b, - 0x9a, 0x99, 0x6e, 0x82, 0xec, 0xff, 0xa0, 0xbe, 0x47, 0x12, 0x3d, 0x54, 0x4c, 0x65, 0x3f, 0xcf, - 0xd4, 0x27, 0xb2, 0x3b, 0x9a, 0xdc, 0xa3, 0x39, 0xf6, 0xc5, 0x38, 0x67, 0x29, 0x51, 0x32, 0x7a, - 0x90, 0x5b, 0xf0, 0x38, 0xf2, 0x60, 0x4e, 0xd2, 0xd7, 0xc6, 0xef, 0xca, 0x30, 0x5d, 0xdb, 0xb6, - 0x2f, 0xfa, 0x72, 0xfc, 0x59, 0x31, 0x60, 0xaf, 0x82, 0xa9, 0xbd, 0x1e, 0x50, 0xc3, 0x84, 0xe8, - 0x3b, 0xd8, 0xd5, 0xe7, 0xca, 0x49, 0x61, 0x62, 0x98, 0x1b, 0xf9, 0x0d, 0xe9, 0xca, 0x93, 0x60, - 0x82, 0x72, 0x4d, 0x97, 0x5c, 0xe2, 0x01, 0xf6, 0x33, 0xb3, 0x15, 0xcc, 0xf2, 0x15, 0x4c, 0x86, - 0x7c, 0x74, 0xe5, 0xd2, 0x47, 0xfe, 0x4f, 0x24, 0x1c, 0x8c, 0xc2, 0x07, 0xbe, 0x34, 0x02, 0xe0, - 0xd5, 0xef, 0x65, 0x44, 0x17, 0x26, 0x03, 0x09, 0x04, 0x1c, 0x1c, 0xe8, 0x36, 0x97, 0x81, 0xe4, - 0xd2, 0x97, 0xe7, 0xcb, 0xb3, 0x30, 0xb3, 0x68, 0x6e, 0x6e, 0x06, 0x9d, 0xe4, 0x8b, 0x04, 0x3b, - 0xc9, 0x68, 0x77, 0x00, 0xcf, 0xce, 0xdd, 0x75, 0x1c, 0x64, 0xf9, 0x95, 0xa2, 0xcd, 0xa9, 0x27, - 0x55, 0xb9, 0x01, 0x8e, 0xfa, 0xe3, 0x02, 0xdb, 0x51, 0x4e, 0xe9, 0xbd, 0xc9, 0xea, 0x77, 0x84, - 0x77, 0xb5, 0x7c, 0x89, 0xb2, 0x55, 0x8a, 0x68, 0x80, 0x77, 0xc0, 0xec, 0x36, 0xc9, 0x8d, 0xa7, - 0xfe, 0x7e, 0x67, 0x79, 0xb2, 0x27, 0xd8, 0xef, 0x1a, 0xea, 0x76, 0x8d, 0x2d, 0xa4, 0xf3, 0x99, - 0x7b, 0x9a, 0xaf, 0x9c, 0xe4, 0xea, 0x2a, 0xb1, 0x0d, 0x32, 0x81, 0x9a, 0x8c, 0x41, 0x3b, 0xce, - 0x40, 0x76, 0xc9, 0x6c, 0x23, 0xf5, 0x17, 0x25, 0x98, 0xd2, 0x51, 0xd3, 0xb6, 0x9a, 0xde, 0x1b, - 0xe3, 0x1c, 0xf4, 0x4f, 0x19, 0xd1, 0x2b, 0x1b, 0x3d, 0x3a, 0xf3, 0x01, 0x8d, 0x88, 0x76, 0x23, - 0x76, 0x35, 0x63, 0x2c, 0xa9, 0x31, 0x5c, 0xb0, 0xe1, 0x4d, 0x3d, 0x36, 0x37, 0xdb, 0xb6, 0xc1, - 0x2d, 0x7e, 0xf5, 0x9a, 0x42, 0x37, 0x42, 0xc1, 0x3f, 0xe3, 0x61, 0xbb, 0xeb, 0xa6, 0x65, 0x05, - 0x87, 0x88, 0xf7, 0xa5, 0xf3, 0xfb, 0xb6, 0xb1, 0x71, 0x58, 0x70, 0xdd, 0x69, 0xe9, 0x11, 0x9a, - 0x7d, 0x3d, 0xcc, 0x9d, 0xbf, 0xe4, 0xa2, 0x2e, 0xcd, 0x45, 0x8b, 0xcd, 0xea, 0x3d, 0xa9, 0x4c, - 0x14, 0xe5, 0xb8, 0x78, 0x2d, 0x31, 0x05, 0x26, 0x13, 0xf5, 0xca, 0x10, 0x33, 0xc0, 0xe3, 0x50, - 0xa8, 0x54, 0x17, 0x35, 0xec, 0xab, 0xe6, 0x7b, 0xff, 0x6c, 0xa9, 0x2f, 0x96, 0x61, 0x06, 0x3b, - 0x93, 0xf8, 0x28, 0x5c, 0x2b, 0x30, 0x1f, 0x51, 0xbf, 0x2c, 0xec, 0xc7, 0x86, 0xab, 0xcc, 0x16, - 0x10, 0x2d, 0xe8, 0x4d, 0xb3, 0xdd, 0x2b, 0xe8, 0x9c, 0xde, 0x93, 0xda, 0x07, 0x10, 0xb9, 0x2f, - 0x20, 0xbf, 0x23, 0xe4, 0xcc, 0x36, 0x88, 0xbb, 0xc3, 0x42, 0xe5, 0x77, 0x65, 0x98, 0xf6, 0x26, - 0x29, 0x3e, 0x28, 0x55, 0x0e, 0x14, 0xdb, 0x6a, 0x5f, 0x0a, 0x97, 0x45, 0xfc, 0xd7, 0x44, 0x8d, - 0xe4, 0xaf, 0x84, 0x67, 0xee, 0x58, 0x44, 0x0c, 0x2f, 0x63, 0xc2, 0xef, 0x03, 0x42, 0xf3, 0xf9, - 0x01, 0xcc, 0x1d, 0x16, 0x7c, 0x5f, 0xcf, 0x41, 0x7e, 0xa3, 0x83, 0x91, 0x7b, 0x85, 0x2c, 0x12, - 0x91, 0x7c, 0xdf, 0x41, 0x06, 0xcf, 0xcc, 0x6a, 0xdb, 0x4d, 0xa3, 0xbd, 0x1e, 0x9e, 0x08, 0x0b, - 0x13, 0x94, 0xdb, 0xa9, 0x6f, 0x23, 0x39, 0x4e, 0x77, 0x7d, 0x6c, 0xb0, 0x6e, 0x2c, 0x23, 0xe6, - 0xd0, 0xc8, 0x4d, 0x70, 0xac, 0x65, 0x76, 0x8d, 0xf3, 0x6d, 0xa4, 0x59, 0x4d, 0xe7, 0x12, 0x11, - 0x07, 0x9d, 0x56, 0xed, 0xfb, 0xa0, 0xdc, 0x09, 0xb9, 0xae, 0x7b, 0xa9, 0x4d, 0xe6, 0x89, 0xec, - 0x19, 0x93, 0xc8, 0xa2, 0x6a, 0x5e, 0x76, 0x9d, 0xfc, 0xc5, 0xba, 0x28, 0x4d, 0x08, 0xde, 0xd7, - 0xfc, 0x04, 0xc8, 0xdb, 0x8e, 0xb9, 0x65, 0x92, 0xfb, 0x77, 0xe6, 0xf6, 0xc5, 0xa4, 0x23, 0xa6, - 0x40, 0x15, 0x67, 0xd1, 0x69, 0x56, 0xe5, 0x49, 0x30, 0x65, 0xee, 0x18, 0x5b, 0xe8, 0x5e, 0xd3, - 0x22, 0x27, 0xf6, 0xe6, 0x6e, 0x3d, 0xb5, 0xef, 0xf8, 0x0c, 0xfd, 0xae, 0x87, 0x59, 0xd5, 0x0f, - 0x48, 0xa2, 0x81, 0x73, 0x70, 0xdd, 0x08, 0xa8, 0x63, 0xb9, 0xb7, 0x5a, 0x7d, 0xb5, 0x50, 0x48, - 0x9b, 0x68, 0xb6, 0xd2, 0x1f, 0xbc, 0x3f, 0x2f, 0xc1, 0xe4, 0xa2, 0x7d, 0xd1, 0xc2, 0x8a, 0x7e, - 0x9b, 0x98, 0xad, 0xdb, 0xe7, 0x90, 0x23, 0x7f, 0x2d, 0x64, 0xec, 0x89, 0x06, 0x5c, 0x5b, 0xbf, - 0xc8, 0x08, 0x18, 0x62, 0x5b, 0x8e, 0xe0, 0x65, 0x7d, 0x71, 0xe5, 0xa4, 0x2f, 0xd7, 0x3f, 0x95, - 0x21, 0xbb, 0xe8, 0xd8, 0x1d, 0xf5, 0xad, 0x99, 0x04, 0x2e, 0x0b, 0x2d, 0xc7, 0xee, 0xd4, 0xf1, - 0x6d, 0x5b, 0xe1, 0x31, 0x0e, 0x36, 0x4d, 0xb9, 0x0d, 0x26, 0x3b, 0x76, 0xd7, 0x74, 0xfd, 0x69, - 0xc4, 0xdc, 0xad, 0x8f, 0xea, 0xdb, 0x9a, 0xd7, 0x69, 0x26, 0x3d, 0xc8, 0xee, 0xf5, 0xda, 0x58, - 0x84, 0x9e, 0x5c, 0x3c, 0x31, 0xfa, 0x37, 0x8e, 0xf5, 0xa4, 0xaa, 0x2f, 0x61, 0x91, 0x7c, 0x0a, - 0x8f, 0xe4, 0xa3, 0xfb, 0x48, 0xd8, 0xb1, 0x3b, 0x23, 0xd9, 0x64, 0x7c, 0x65, 0x80, 0xea, 0x53, - 0x39, 0x54, 0x6f, 0x14, 0x2a, 0x33, 0x7d, 0x44, 0x3f, 0x90, 0x05, 0xc0, 0x66, 0xc6, 0x86, 0x37, - 0x01, 0x12, 0xb3, 0xb1, 0x9e, 0x9d, 0x65, 0x64, 0x59, 0xe4, 0x65, 0xf9, 0xd8, 0x08, 0x2b, 0x06, - 0x93, 0x8f, 0x90, 0x68, 0x11, 0x72, 0xbb, 0xde, 0x67, 0x2a, 0x51, 0x41, 0x12, 0xf8, 0x55, 0x27, - 0x7f, 0xaa, 0x7f, 0x92, 0x81, 0x1c, 0x4e, 0x50, 0x4e, 0x03, 0xe0, 0x81, 0x9d, 0x1c, 0x08, 0xca, - 0xe0, 0x21, 0x9c, 0x49, 0xc1, 0xda, 0x6a, 0xb6, 0xe8, 0x67, 0x62, 0x32, 0x87, 0x09, 0xde, 0xdf, - 0x78, 0xb8, 0xc7, 0xb4, 0xa8, 0x01, 0xc0, 0xa4, 0x78, 0x7f, 0xe3, 0xb7, 0x55, 0xb4, 0x49, 0x02, - 0x21, 0x67, 0xf5, 0x30, 0x21, 0xf8, 0x7b, 0x35, 0xb8, 0x3e, 0xcb, 0xff, 0x1b, 0xa7, 0x78, 0x93, - 0x61, 0xac, 0x96, 0x0b, 0x61, 0x11, 0x79, 0x9c, 0xa9, 0x37, 0x59, 0x7d, 0x5d, 0xa0, 0x36, 0x8b, - 0x9c, 0xda, 0xdc, 0x92, 0x40, 0xbc, 0xe9, 0x2b, 0xcf, 0x57, 0x73, 0x30, 0x55, 0xb1, 0x5b, 0x54, - 0x77, 0x98, 0x09, 0xe3, 0x27, 0x73, 0x89, 0x26, 0x8c, 0x01, 0x8d, 0x08, 0x05, 0xb9, 0x9b, 0x57, - 0x10, 0x31, 0x0a, 0xac, 0x7e, 0x28, 0x0b, 0x90, 0xc7, 0xda, 0xbb, 0xff, 0x5e, 0xa6, 0x38, 0x12, - 0x58, 0xb4, 0x3a, 0xfd, 0xf3, 0x3f, 0x9c, 0x8e, 0xfd, 0x57, 0xc8, 0xe1, 0x0a, 0xc6, 0xec, 0xee, - 0xf0, 0x15, 0x95, 0xe2, 0x2b, 0x2a, 0xc7, 0x57, 0x34, 0xdb, 0x5b, 0xd1, 0x24, 0xeb, 0x00, 0x51, - 0x1a, 0x92, 0xbe, 0x8e, 0xff, 0xe3, 0x04, 0x40, 0xc5, 0xd8, 0x33, 0xb7, 0xc8, 0xee, 0xf0, 0x17, - 0xfc, 0xf9, 0x0f, 0xdd, 0xc7, 0xfd, 0x65, 0x66, 0x20, 0xbc, 0x0d, 0x26, 0xe8, 0xb8, 0x47, 0x2b, - 0x72, 0x35, 0x57, 0x91, 0x90, 0x0a, 0x31, 0x4b, 0x1f, 0x70, 0x75, 0x3f, 0x3f, 0x77, 0x85, 0xac, - 0xd4, 0x73, 0x85, 0x6c, 0xff, 0x3d, 0x88, 0x88, 0x8b, 0x65, 0xd5, 0xf7, 0x0a, 0x7b, 0xf4, 0x33, - 0xfc, 0x30, 0x35, 0x8a, 0x68, 0x82, 0x4f, 0x80, 0x09, 0x3b, 0xd8, 0xd0, 0x96, 0x23, 0xd7, 0xc1, - 0xca, 0xd6, 0xa6, 0xad, 0xfb, 0x39, 0x05, 0x37, 0xbf, 0x84, 0xf8, 0x18, 0xcb, 0xa1, 0x99, 0x93, - 0xcb, 0x7e, 0x50, 0x29, 0xaf, 0x1e, 0xe7, 0x4c, 0x77, 0x7b, 0xd5, 0xb4, 0x2e, 0x74, 0xd5, 0xff, - 0x2c, 0x66, 0x41, 0x32, 0xf8, 0x4b, 0xc9, 0xf0, 0xe7, 0x63, 0x76, 0xd4, 0x78, 0xd4, 0xee, 0x8c, - 0xa2, 0xd2, 0x9f, 0xdb, 0x08, 0x00, 0x6f, 0x87, 0x3c, 0x61, 0x94, 0x76, 0xa2, 0x67, 0x22, 0xf1, - 0x0b, 0x28, 0xe9, 0xf4, 0x0f, 0xf5, 0x3d, 0x01, 0x8e, 0x67, 0x39, 0x1c, 0x17, 0x0e, 0xc4, 0x59, - 0xea, 0x90, 0x9e, 0x79, 0x3c, 0x4c, 0x50, 0x49, 0x2b, 0x73, 0x6c, 0x2b, 0x2e, 0x1c, 0x51, 0x00, - 0xf2, 0x6b, 0xf6, 0x1e, 0xaa, 0xdb, 0x85, 0x8c, 0xf7, 0xec, 0xf1, 0x57, 0xb7, 0x0b, 0x92, 0xfa, - 0xaa, 0x49, 0x98, 0x0c, 0xa2, 0xf9, 0x7c, 0x5e, 0x82, 0x42, 0xc9, 0x41, 0x86, 0x8b, 0x96, 0x1c, - 0x7b, 0x87, 0xd4, 0x48, 0xdc, 0x3b, 0xf4, 0x37, 0x84, 0x5d, 0x3c, 0x82, 0x28, 0x3b, 0xbd, 0x85, - 0x45, 0x60, 0x49, 0x16, 0x21, 0x25, 0x7f, 0x11, 0x52, 0x7d, 0x8b, 0x90, 0xcb, 0x87, 0x68, 0x29, - 0xe9, 0x37, 0xb5, 0x4f, 0x4b, 0x90, 0x2b, 0xb5, 0x6d, 0x0b, 0xb1, 0x47, 0x98, 0x06, 0x9e, 0x95, - 0xe9, 0xbf, 0x13, 0xa1, 0x3e, 0x53, 0x12, 0xb5, 0x35, 0x42, 0x01, 0x78, 0x65, 0x0b, 0xca, 0x56, - 0x6c, 0x90, 0x8a, 0x25, 0x9d, 0xbe, 0x40, 0xbf, 0x29, 0xc1, 0x14, 0x89, 0x8b, 0x53, 0x6c, 0xb7, - 0xd5, 0x47, 0x85, 0x42, 0xed, 0x13, 0x11, 0x49, 0xfd, 0x1d, 0x61, 0x17, 0xfd, 0xa0, 0x56, 0x01, - 0xed, 0x04, 0x01, 0x82, 0x92, 0x79, 0x8c, 0x8b, 0xed, 0xa5, 0x0d, 0x64, 0x28, 0x7d, 0x51, 0xff, - 0x85, 0xe4, 0x19, 0x00, 0xd6, 0x85, 0x75, 0x07, 0xed, 0x99, 0xe8, 0xa2, 0x7a, 0x65, 0x28, 0xec, - 0xfd, 0x41, 0x3f, 0xde, 0x24, 0xbc, 0x88, 0xc3, 0x90, 0x8c, 0xdc, 0xca, 0x9a, 0x6e, 0x87, 0x99, - 0x68, 0x2f, 0xde, 0x1b, 0x89, 0x85, 0x21, 0xa3, 0xb3, 0xd9, 0x05, 0xd7, 0x6c, 0xa2, 0xb9, 0x48, - 0x5f, 0xb0, 0x1f, 0x9e, 0x80, 0xc9, 0x0d, 0xab, 0xdb, 0x69, 0x1b, 0xdd, 0x6d, 0xf5, 0xdf, 0x65, - 0xc8, 0x93, 0xdb, 0xc0, 0xd4, 0x9f, 0xe0, 0x62, 0x0b, 0x3c, 0x7d, 0x17, 0x39, 0xbe, 0x0b, 0x0e, - 0x79, 0xe9, 0x7f, 0x59, 0xb9, 0xfa, 0x01, 0x59, 0x74, 0x92, 0xea, 0x17, 0xca, 0x5c, 0x0b, 0xdf, - 0xff, 0x38, 0x7b, 0xc7, 0x6c, 0xba, 0xbb, 0x4e, 0x70, 0xf5, 0xf5, 0xe3, 0xc4, 0xa8, 0xac, 0x93, - 0xbf, 0xf4, 0xe0, 0x77, 0xd5, 0x80, 0x09, 0x9a, 0xb8, 0x6f, 0x3b, 0x69, 0xff, 0xf9, 0xdb, 0x93, - 0x90, 0x37, 0x1c, 0xd7, 0xec, 0xba, 0x74, 0x83, 0x95, 0xbe, 0x79, 0xdd, 0x25, 0x79, 0xda, 0x70, - 0xda, 0x7e, 0x14, 0x92, 0x20, 0x41, 0xfd, 0x5d, 0xa1, 0xf9, 0x63, 0x7c, 0xcd, 0x93, 0x41, 0x7e, - 0xef, 0x10, 0x6b, 0xd4, 0x97, 0xc3, 0x65, 0x7a, 0xb1, 0xae, 0x35, 0x48, 0xd0, 0x8a, 0x20, 0x3e, - 0x45, 0x4b, 0x7d, 0xb7, 0xcc, 0xac, 0xdf, 0x5d, 0xe2, 0xc6, 0x08, 0x2a, 0xc5, 0x70, 0x8c, 0x08, - 0x12, 0x62, 0x76, 0xab, 0xb9, 0x45, 0x58, 0x59, 0x7c, 0x11, 0xf6, 0xb7, 0x85, 0x77, 0x93, 0x02, - 0x51, 0x0e, 0x58, 0x03, 0x8c, 0xbb, 0x2d, 0xe8, 0x83, 0x42, 0x3b, 0x43, 0x83, 0x4a, 0x3a, 0x44, - 0xd8, 0xde, 0x38, 0x01, 0x13, 0xcb, 0x46, 0xbb, 0x8d, 0x9c, 0x4b, 0xde, 0x90, 0x54, 0xf0, 0x39, - 0x5c, 0x33, 0x2c, 0x73, 0x13, 0x75, 0xdd, 0xf8, 0xce, 0xf2, 0xbd, 0xc2, 0x91, 0x68, 0x69, 0x19, - 0xf3, 0xbd, 0xf4, 0x23, 0x64, 0x7e, 0x33, 0x64, 0x4d, 0x6b, 0xd3, 0xa6, 0x5d, 0x66, 0xef, 0xaa, - 0xbd, 0xff, 0x33, 0x9e, 0xba, 0xe0, 0x8c, 0x82, 0xc1, 0x68, 0x05, 0xb9, 0x48, 0xbf, 0xe7, 0x7c, - 0x7b, 0x16, 0x66, 0x7d, 0x26, 0xca, 0x56, 0x0b, 0x3d, 0xc0, 0x2e, 0xc5, 0xbc, 0x38, 0x2b, 0x7a, - 0x1c, 0xac, 0xb7, 0x3e, 0x98, 0x54, 0x84, 0x48, 0xeb, 0x00, 0x4d, 0xc3, 0x45, 0x5b, 0xb6, 0x63, - 0x06, 0xfd, 0xe1, 0x13, 0x93, 0x50, 0x2b, 0x91, 0xbf, 0x2f, 0xe9, 0x0c, 0x1d, 0xe5, 0x4e, 0x98, - 0x46, 0xc1, 0xf9, 0x7b, 0x7f, 0xa9, 0x26, 0x16, 0x2f, 0x36, 0xbf, 0xfa, 0x17, 0x42, 0xa7, 0xce, - 0x44, 0xaa, 0x99, 0x0c, 0xb3, 0xc6, 0x70, 0x6d, 0x68, 0xa3, 0xb2, 0x56, 0xd4, 0x6b, 0x2b, 0xc5, - 0xd5, 0xd5, 0x72, 0x65, 0x39, 0x08, 0xfc, 0xa2, 0xc0, 0xdc, 0x62, 0xf5, 0x5c, 0x85, 0x89, 0xcc, - 0x93, 0x55, 0xd7, 0x61, 0xd2, 0x97, 0x57, 0x3f, 0x5f, 0x4c, 0x56, 0x66, 0xd4, 0x17, 0x93, 0x49, - 0xf2, 0x8c, 0x33, 0xb3, 0x19, 0x38, 0xe8, 0xe0, 0x67, 0xf5, 0x8f, 0x0c, 0xc8, 0xe1, 0x35, 0x75, - 0xf5, 0x9d, 0x78, 0x1b, 0xb0, 0xd3, 0x36, 0x9a, 0x48, 0xdd, 0x49, 0x60, 0x8d, 0xfb, 0x57, 0x23, - 0x48, 0xfb, 0xae, 0x46, 0xc0, 0x8f, 0xd4, 0xea, 0x3b, 0xde, 0x6f, 0x1d, 0x5f, 0x27, 0x59, 0xf8, - 0x03, 0x5a, 0xb1, 0xbb, 0x2b, 0x64, 0xf9, 0x9f, 0xb2, 0x19, 0xa1, 0x92, 0xd1, 0x3c, 0x25, 0xb3, - 0x44, 0xc5, 0xf6, 0x61, 0xe2, 0x38, 0x1a, 0xc3, 0xf5, 0xdd, 0x59, 0xc8, 0xd5, 0x3a, 0x6d, 0xd3, - 0x55, 0x5f, 0x26, 0x8d, 0x04, 0x33, 0x72, 0x9d, 0x85, 0x3c, 0xf0, 0x3a, 0x8b, 0x70, 0xd7, 0x35, - 0x2b, 0xb0, 0xeb, 0x5a, 0x47, 0x0f, 0xb8, 0xfc, 0xae, 0xeb, 0x6d, 0x34, 0x78, 0x1b, 0xd9, 0xb3, - 0x7d, 0x74, 0x1f, 0x91, 0xe2, 0x6a, 0xf5, 0x89, 0x0a, 0x78, 0xe6, 0xf1, 0x34, 0x38, 0x19, 0x40, - 0x7e, 0xa1, 0x5a, 0xaf, 0x57, 0xd7, 0x0a, 0x47, 0x70, 0x54, 0x9b, 0xea, 0x3a, 0x09, 0x15, 0x53, - 0xae, 0x54, 0x34, 0xbd, 0x20, 0xe1, 0x70, 0x69, 0xe5, 0xfa, 0xaa, 0x56, 0x90, 0xf9, 0xd8, 0xe6, - 0xb1, 0xe6, 0x37, 0x5f, 0x76, 0x9a, 0xea, 0x25, 0x66, 0x88, 0x47, 0xf3, 0x93, 0xbe, 0x72, 0xfd, - 0xba, 0x0c, 0xb9, 0x35, 0xe4, 0x6c, 0x21, 0xf5, 0xe9, 0x09, 0x36, 0xf9, 0x36, 0x4d, 0xa7, 0x4b, - 0x82, 0xcb, 0x85, 0x9b, 0x7c, 0x6c, 0x9a, 0x72, 0x1d, 0xcc, 0x76, 0x51, 0xd3, 0xb6, 0x5a, 0x7e, - 0x26, 0xd2, 0x1f, 0xf1, 0x89, 0xfc, 0xbd, 0xf2, 0x02, 0x90, 0x61, 0x46, 0x47, 0xb2, 0x53, 0x97, - 0x04, 0x98, 0x7e, 0xa5, 0xa6, 0x0f, 0xcc, 0x77, 0x64, 0xef, 0xa7, 0xce, 0x25, 0xf5, 0xa5, 0xc2, - 0xbb, 0xaf, 0x37, 0x41, 0x1e, 0xab, 0xa9, 0x3f, 0x46, 0xf7, 0xef, 0x8f, 0x69, 0x1e, 0x65, 0x01, - 0x8e, 0x75, 0x51, 0x1b, 0x35, 0x5d, 0xd4, 0xf2, 0x9a, 0xae, 0x3e, 0xb0, 0x53, 0xd8, 0x9f, 0x5d, - 0xfd, 0x33, 0x16, 0xc0, 0x3b, 0x78, 0x00, 0xaf, 0xef, 0x23, 0x4a, 0xaf, 0x42, 0xd1, 0xb6, 0xb2, - 0x57, 0x8d, 0x5a, 0xdb, 0x0e, 0x16, 0xc5, 0xfd, 0x77, 0xef, 0xdb, 0xb6, 0xbb, 0xd3, 0xc6, 0xdf, - 0xe8, 0x01, 0x03, 0xff, 0x5d, 0x99, 0x87, 0x09, 0xc3, 0xba, 0x84, 0x3f, 0x65, 0x63, 0x6a, 0xed, - 0x67, 0x52, 0x5f, 0x15, 0x20, 0x7f, 0x17, 0x87, 0xfc, 0x63, 0xc5, 0xd8, 0x4d, 0x1f, 0xf8, 0x5f, - 0x98, 0x80, 0xdc, 0xba, 0xd1, 0x75, 0x91, 0xfa, 0xff, 0xc8, 0xa2, 0xc8, 0x5f, 0x0f, 0x73, 0x9b, - 0x76, 0x73, 0xb7, 0x8b, 0x5a, 0x7c, 0xa3, 0xec, 0x49, 0x1d, 0x05, 0xe6, 0xca, 0x8d, 0x50, 0xf0, - 0x13, 0x29, 0x59, 0x7f, 0x1b, 0x7e, 0x5f, 0x3a, 0x8e, 0x94, 0xdd, 0x5d, 0x37, 0x1c, 0xb7, 0xba, - 0x89, 0xd3, 0x82, 0x48, 0xd9, 0x6c, 0x22, 0x07, 0x7d, 0x3e, 0x06, 0xfa, 0x89, 0x68, 0xe8, 0x27, - 0x05, 0xa0, 0x57, 0x8a, 0x30, 0xb9, 0x69, 0xb6, 0x11, 0xfe, 0x61, 0x0a, 0xff, 0xd0, 0x6f, 0x4c, - 0xc2, 0xb2, 0x0f, 0xc6, 0xa4, 0x25, 0xb3, 0x8d, 0xf4, 0xe0, 0x37, 0x7f, 0x22, 0x03, 0xe1, 0x44, - 0x66, 0x95, 0xf8, 0xd3, 0x7a, 0x86, 0x97, 0x65, 0xec, 0x20, 0x7f, 0xf1, 0xcd, 0xa2, 0x87, 0x5b, - 0x5a, 0x86, 0x6b, 0x60, 0x30, 0x66, 0x74, 0xfc, 0xcc, 0xfb, 0x85, 0xc8, 0xbd, 0x7e, 0x21, 0xcf, - 0x91, 0x93, 0xf5, 0x88, 0x3e, 0xb3, 0x11, 0x2d, 0xea, 0xbc, 0x0f, 0x10, 0xb1, 0x14, 0x83, 0x77, - 0x0f, 0x98, 0xa6, 0xe1, 0x20, 0x77, 0x9d, 0xf5, 0xc4, 0xc8, 0xe9, 0x7c, 0x22, 0x76, 0xe5, 0xeb, - 0xd6, 0x8c, 0x1d, 0x84, 0x0b, 0x2b, 0x79, 0xdf, 0xa8, 0x8b, 0xd6, 0xbe, 0xf4, 0xb0, 0xff, 0xcd, - 0x8d, 0xba, 0xff, 0xed, 0x57, 0xc7, 0xf4, 0x9b, 0xe1, 0x6b, 0xb3, 0x20, 0x97, 0x76, 0xdd, 0x47, - 0x74, 0xf7, 0xfb, 0x7d, 0x61, 0x3f, 0x17, 0xda, 0x9f, 0x45, 0x5e, 0x24, 0x3f, 0xa6, 0xde, 0x37, - 0xa1, 0x96, 0x88, 0xf9, 0xd3, 0x44, 0xd5, 0x2d, 0x7d, 0x1d, 0x79, 0xab, 0x1c, 0x38, 0x58, 0x3e, - 0x98, 0x39, 0xb8, 0x69, 0xae, 0x92, 0xfe, 0x89, 0xe9, 0x19, 0x82, 0x77, 0xbf, 0xe3, 0xc9, 0x72, - 0xb1, 0xfa, 0xf0, 0xf6, 0x3a, 0x16, 0xe5, 0x8c, 0x4e, 0x5e, 0xd4, 0x97, 0x0b, 0xbb, 0x9d, 0x13, - 0xb1, 0xc5, 0xba, 0x12, 0x26, 0xb3, 0xa9, 0xc4, 0x2e, 0x0b, 0x8d, 0x29, 0x36, 0x7d, 0xc0, 0xbe, - 0xcd, 0xba, 0x0a, 0x16, 0x0f, 0x8c, 0x98, 0xfa, 0x6a, 0xe1, 0xed, 0x28, 0x52, 0xed, 0x01, 0xeb, - 0x85, 0xc9, 0xe4, 0x2d, 0xb6, 0x59, 0x15, 0x5b, 0x70, 0xfa, 0x12, 0xff, 0x96, 0x0c, 0x79, 0xb2, - 0x05, 0xa9, 0xbe, 0x39, 0x93, 0xe0, 0x96, 0x75, 0x97, 0x77, 0x21, 0x0c, 0xde, 0x93, 0xac, 0x39, - 0x70, 0xae, 0x86, 0xd9, 0x44, 0xae, 0x86, 0xfc, 0x39, 0x4e, 0x81, 0x76, 0x44, 0xea, 0x98, 0xf2, - 0x74, 0x32, 0x49, 0x0b, 0xeb, 0xcb, 0x50, 0xfa, 0x78, 0x3f, 0x2f, 0x07, 0x33, 0xa4, 0xe8, 0x73, - 0x66, 0x6b, 0x0b, 0xb9, 0xea, 0xbb, 0xa5, 0x1f, 0x1e, 0xd4, 0x95, 0x0a, 0xcc, 0x5c, 0xc4, 0x6c, - 0xaf, 0x1a, 0x97, 0xec, 0x5d, 0x97, 0xae, 0x5c, 0xdc, 0x18, 0xbb, 0xee, 0x41, 0xea, 0x39, 0x4f, - 0xfe, 0xd0, 0xb9, 0xff, 0x3d, 0x19, 0x93, 0x05, 0x7f, 0xe2, 0xc0, 0x95, 0xc7, 0x46, 0x16, 0x9b, - 0xa4, 0x9c, 0x84, 0xfc, 0x9e, 0x89, 0x2e, 0x96, 0x5b, 0xd4, 0xba, 0xa5, 0x6f, 0xea, 0xef, 0x0b, - 0xef, 0xdb, 0xb2, 0x70, 0x53, 0x5e, 0xd2, 0xd5, 0x42, 0xb1, 0xdd, 0xdb, 0x81, 0x6c, 0x8d, 0xe1, - 0x4c, 0x31, 0x7f, 0x19, 0x67, 0x29, 0x81, 0x22, 0x46, 0x19, 0xce, 0x7c, 0x28, 0x8f, 0xd8, 0x13, - 0x2b, 0x44, 0x00, 0x23, 0xbe, 0xa7, 0x53, 0x2c, 0xbe, 0xc4, 0x80, 0xa2, 0xd3, 0x97, 0xfc, 0xeb, - 0x64, 0x98, 0xaa, 0x21, 0x77, 0xc9, 0x44, 0xed, 0x56, 0x57, 0x75, 0x0e, 0x6e, 0x1a, 0xdd, 0x0c, - 0xf9, 0x4d, 0x4c, 0x6c, 0xd0, 0xb9, 0x05, 0x9a, 0x4d, 0x7d, 0xad, 0x24, 0xba, 0x23, 0x4c, 0x57, - 0xdf, 0x7c, 0x6e, 0x47, 0x02, 0x93, 0x98, 0x47, 0x6f, 0x7c, 0xc9, 0x63, 0x08, 0x6c, 0x2b, 0xc3, - 0x0c, 0xbd, 0xbd, 0xaf, 0xd8, 0x36, 0xb7, 0x2c, 0x75, 0x77, 0x04, 0x2d, 0x44, 0xb9, 0x05, 0x72, - 0x86, 0x47, 0x8d, 0x6e, 0xbd, 0xaa, 0x7d, 0x3b, 0x4f, 0x5c, 0x9e, 0x4e, 0x32, 0x26, 0x08, 0x23, - 0x19, 0x2a, 0xb6, 0xcf, 0xf3, 0x18, 0xc3, 0x48, 0x0e, 0x2c, 0x3c, 0x7d, 0xc4, 0xbe, 0x22, 0xc3, - 0x71, 0xca, 0xc0, 0x59, 0xe4, 0xb8, 0x66, 0xd3, 0x68, 0x13, 0xe4, 0x5e, 0x90, 0x19, 0x05, 0x74, - 0x2b, 0x30, 0xbb, 0xc7, 0x92, 0xa5, 0x10, 0x9e, 0xe9, 0x0b, 0x21, 0xc7, 0x80, 0xce, 0xff, 0x98, - 0x20, 0x1c, 0x1f, 0x27, 0x55, 0x8e, 0xe6, 0x18, 0xc3, 0xf1, 0x09, 0x33, 0x91, 0x3e, 0xc4, 0x2f, - 0xa1, 0xa1, 0x79, 0xc2, 0xee, 0xf3, 0x0b, 0xc2, 0xd8, 0x6e, 0xc0, 0x34, 0xc6, 0x92, 0xfc, 0x48, - 0x97, 0x21, 0x62, 0x94, 0x38, 0xe8, 0x77, 0xe8, 0x85, 0x61, 0xc1, 0xbf, 0x3a, 0x4b, 0x47, 0x3d, - 0x07, 0x10, 0x7e, 0x62, 0x3b, 0xe9, 0x4c, 0x54, 0x27, 0x2d, 0x89, 0x75, 0xd2, 0x6f, 0x12, 0x0e, - 0x96, 0xd2, 0x9f, 0xed, 0x83, 0xab, 0x87, 0x58, 0x98, 0x8c, 0xc1, 0xa5, 0xa7, 0xaf, 0x17, 0xaf, - 0xca, 0xf6, 0x5e, 0xd3, 0xfe, 0xb1, 0x91, 0xcc, 0xa7, 0xd8, 0xfe, 0x40, 0xee, 0xe9, 0x0f, 0x0e, - 0x60, 0x49, 0xdf, 0x00, 0x47, 0x49, 0x11, 0xa5, 0x80, 0xad, 0x1c, 0x09, 0x05, 0xd1, 0x93, 0xac, - 0x7e, 0x7c, 0x08, 0x25, 0x18, 0x74, 0x87, 0x7c, 0x5c, 0x27, 0x97, 0xcc, 0xd8, 0x4d, 0xaa, 0x20, - 0x87, 0x77, 0xf5, 0xfc, 0x37, 0xb3, 0xc4, 0xda, 0xdd, 0xc0, 0x77, 0xba, 0xa9, 0x7f, 0x99, 0x1d, - 0xc5, 0x88, 0x70, 0x37, 0x64, 0xb1, 0x8b, 0xbb, 0x1c, 0xb9, 0xa4, 0x11, 0x16, 0x19, 0x5e, 0xb8, - 0x87, 0x1e, 0x70, 0x57, 0x8e, 0xe8, 0xf8, 0x4f, 0xe5, 0x46, 0x38, 0x7a, 0xde, 0x68, 0x5e, 0xd8, - 0x72, 0xec, 0x5d, 0x7c, 0xfb, 0x95, 0x4d, 0xaf, 0xd1, 0xc2, 0xd7, 0x11, 0xf2, 0x1f, 0x94, 0x5b, - 0x7d, 0xd3, 0x21, 0x37, 0xc8, 0x74, 0x58, 0x39, 0x42, 0x8d, 0x07, 0xe5, 0xf1, 0x41, 0xa7, 0x93, - 0x8f, 0xed, 0x74, 0x56, 0x8e, 0xf8, 0xdd, 0x8e, 0xb2, 0x08, 0x93, 0x2d, 0x73, 0x0f, 0x6f, 0x55, - 0xe3, 0x59, 0xd7, 0xa0, 0xa3, 0xcb, 0x8b, 0xe6, 0x1e, 0xd9, 0xd8, 0x5e, 0x39, 0xa2, 0x07, 0x7f, - 0x2a, 0xcb, 0x30, 0x85, 0xb7, 0x05, 0x30, 0x99, 0xc9, 0x44, 0xc7, 0x92, 0x57, 0x8e, 0xe8, 0xe1, - 0xbf, 0x9e, 0xf5, 0x91, 0xc5, 0x67, 0x3f, 0xee, 0xf2, 0xb7, 0xdb, 0x33, 0x89, 0xb6, 0xdb, 0x3d, - 0x59, 0x90, 0x0d, 0xf7, 0x93, 0x90, 0x6b, 0x62, 0x09, 0x4b, 0x54, 0xc2, 0xe4, 0x55, 0xb9, 0x03, - 0xb2, 0x3b, 0x86, 0xe3, 0x4f, 0x9e, 0xaf, 0x1f, 0x4c, 0x77, 0xcd, 0x70, 0x2e, 0x78, 0x08, 0x7a, - 0x7f, 0x2d, 0x4c, 0x40, 0x0e, 0x0b, 0x2e, 0x78, 0x50, 0xdf, 0x9a, 0x25, 0x66, 0x48, 0xc9, 0xb6, - 0xbc, 0x61, 0xbf, 0x6e, 0xfb, 0x07, 0x64, 0x7e, 0x3f, 0x33, 0x1a, 0x0b, 0xb2, 0xef, 0xbd, 0xe6, - 0x72, 0xe4, 0xbd, 0xe6, 0x3d, 0x17, 0xec, 0x66, 0x7b, 0x2f, 0xd8, 0x0d, 0x97, 0x0f, 0x72, 0x83, - 0x1d, 0x55, 0xfe, 0x6c, 0x08, 0xd3, 0xa5, 0x57, 0x10, 0xd1, 0x33, 0xf0, 0xb6, 0x69, 0x31, 0x75, - 0xf6, 0x5f, 0x13, 0x76, 0x4a, 0x49, 0x8d, 0x9a, 0x01, 0xec, 0xa5, 0xdf, 0x37, 0xfd, 0x56, 0x16, - 0x4e, 0x91, 0x6b, 0x9c, 0xf7, 0x50, 0xdd, 0xe6, 0xef, 0x9b, 0x54, 0xff, 0x78, 0x24, 0x4a, 0xd3, - 0x67, 0xc0, 0x91, 0xfb, 0x0e, 0x38, 0xfb, 0x0e, 0x29, 0x67, 0x07, 0x1c, 0x52, 0xce, 0x25, 0x5b, - 0x39, 0xfc, 0x10, 0xab, 0x3f, 0xeb, 0xbc, 0xfe, 0xdc, 0x1e, 0x01, 0x50, 0x3f, 0xb9, 0x8c, 0xc4, - 0xbe, 0x79, 0x67, 0xa0, 0x29, 0x35, 0x4e, 0x53, 0xee, 0x1a, 0x9e, 0x91, 0xf4, 0xb5, 0xe5, 0xf7, - 0xb2, 0x70, 0x59, 0xc8, 0x4c, 0x05, 0x5d, 0xa4, 0x8a, 0xf2, 0xf9, 0x91, 0x28, 0x4a, 0xf2, 0x18, - 0x08, 0x69, 0x6b, 0xcc, 0x9f, 0x08, 0x9f, 0x1d, 0xea, 0x05, 0x2a, 0x90, 0x4d, 0x84, 0xb2, 0x9c, - 0x84, 0x3c, 0xe9, 0x61, 0x28, 0x34, 0xf4, 0x2d, 0x61, 0x77, 0x23, 0x76, 0xe2, 0x48, 0x94, 0xb7, - 0x31, 0xe8, 0x0f, 0x5d, 0xd7, 0xa8, 0xef, 0x3a, 0x56, 0xd9, 0x72, 0x6d, 0xf5, 0xe7, 0x47, 0xa2, - 0x38, 0x81, 0x37, 0x9c, 0x3c, 0x8c, 0x37, 0xdc, 0x50, 0xab, 0x1c, 0x7e, 0x0d, 0x0e, 0x65, 0x95, - 0x23, 0xa2, 0xf0, 0xf4, 0xf1, 0x7b, 0x87, 0x0c, 0x27, 0xe9, 0x64, 0x6b, 0x81, 0xb7, 0x10, 0xd5, - 0xfb, 0x46, 0x01, 0xe4, 0x71, 0xdf, 0x4c, 0xa2, 0xb7, 0x9c, 0xe1, 0x17, 0xfe, 0xa4, 0x54, 0xec, - 0xfd, 0x0e, 0xdc, 0x74, 0xb0, 0x87, 0xc3, 0x91, 0x20, 0x25, 0x76, 0xad, 0x43, 0x02, 0x36, 0xd2, - 0xc7, 0xec, 0x45, 0x32, 0xe4, 0xe9, 0xf5, 0xfd, 0x1b, 0xa9, 0x38, 0x4c, 0xf0, 0x51, 0x9e, 0x05, - 0x76, 0xe4, 0x12, 0x5f, 0x72, 0x9f, 0xde, 0x5e, 0xdc, 0x21, 0xdd, 0x62, 0xff, 0x1d, 0x09, 0xa6, - 0x6b, 0xc8, 0x2d, 0x19, 0x8e, 0x63, 0x1a, 0x5b, 0xa3, 0xf2, 0xf8, 0x16, 0xf5, 0x1e, 0x56, 0xbf, - 0x9b, 0x11, 0x3d, 0x4f, 0x13, 0x2c, 0x84, 0xfb, 0xac, 0x46, 0xc4, 0x12, 0x7c, 0x58, 0xe8, 0xcc, - 0xcc, 0x20, 0x6a, 0x63, 0xf0, 0xd8, 0x96, 0x60, 0xc2, 0x3f, 0x8b, 0x77, 0x33, 0x77, 0x3e, 0x73, - 0xdb, 0xdd, 0xf1, 0x8f, 0xc1, 0xe0, 0xe7, 0xfd, 0x67, 0xc0, 0xd4, 0x57, 0x26, 0x74, 0x94, 0x8f, - 0x3f, 0x48, 0x98, 0xac, 0x8d, 0x25, 0x71, 0x87, 0x3f, 0xac, 0xa3, 0x83, 0xbf, 0x33, 0x41, 0x97, - 0x23, 0x57, 0x0d, 0x17, 0x3d, 0xa0, 0x7e, 0x41, 0x86, 0x89, 0x1a, 0x72, 0xbd, 0xf1, 0x96, 0xbb, - 0xdc, 0x74, 0x58, 0x0d, 0x57, 0x98, 0x15, 0x8f, 0x29, 0xba, 0x86, 0x71, 0x0f, 0x4c, 0x75, 0x1c, - 0xbb, 0x89, 0xba, 0x5d, 0xba, 0x7a, 0xc1, 0x3a, 0xaa, 0xf5, 0x1b, 0xfd, 0x31, 0x6b, 0xf3, 0xeb, - 0xfe, 0x3f, 0x7a, 0xf8, 0x7b, 0x52, 0x33, 0x80, 0x50, 0xa2, 0x15, 0x1c, 0xb7, 0x19, 0x10, 0x57, - 0x78, 0xfa, 0x40, 0x7f, 0x56, 0x86, 0x99, 0x1a, 0x72, 0x03, 0x29, 0x26, 0xd8, 0xe4, 0x88, 0x86, - 0x97, 0x83, 0x52, 0x3e, 0x18, 0x94, 0xe2, 0x57, 0x03, 0xf2, 0xd2, 0x0c, 0x88, 0x8d, 0xf1, 0x6a, - 0x40, 0x31, 0x0e, 0xc6, 0x70, 0x7c, 0xed, 0xd1, 0x30, 0x85, 0x79, 0xc1, 0x0d, 0xf6, 0x97, 0xb2, - 0x61, 0xe3, 0xfd, 0x62, 0x4a, 0x8d, 0xf7, 0x4e, 0xc8, 0xed, 0x18, 0xce, 0x85, 0x2e, 0x6e, 0xb8, - 0xd3, 0x22, 0x66, 0xfb, 0x9a, 0x97, 0x5d, 0x27, 0x7f, 0xf5, 0xf7, 0xd3, 0xcc, 0x25, 0xf3, 0xd3, - 0x7c, 0x58, 0x4a, 0x34, 0x12, 0x92, 0xb9, 0xc3, 0x08, 0x9b, 0x7c, 0x82, 0x71, 0x33, 0xa6, 0xec, - 0xf4, 0x95, 0xe3, 0x05, 0x32, 0x4c, 0x7a, 0xe3, 0x36, 0xb6, 0xc7, 0xcf, 0x1d, 0x5c, 0x1d, 0xfa, - 0x1b, 0xfa, 0x09, 0x7b, 0x60, 0x5f, 0x22, 0xa3, 0x33, 0xef, 0x13, 0xf4, 0xc0, 0x71, 0x85, 0xa7, - 0x8f, 0xc7, 0xbb, 0x08, 0x1e, 0xb8, 0x3d, 0xa8, 0x6f, 0x90, 0x41, 0x5e, 0x46, 0xee, 0xb8, 0xad, - 0xc8, 0xb7, 0x09, 0x87, 0x38, 0xe2, 0x04, 0x86, 0x79, 0x9e, 0x5f, 0x46, 0xa3, 0x69, 0x40, 0x62, - 0xb1, 0x8d, 0x84, 0x18, 0x48, 0x1f, 0xb5, 0xf7, 0x11, 0xd4, 0xc8, 0xe6, 0xc2, 0xcf, 0x8d, 0xa0, - 0x57, 0x1d, 0xef, 0xc2, 0x87, 0x2f, 0x40, 0x4c, 0xe3, 0xb0, 0xda, 0x5b, 0xbf, 0xc2, 0xc7, 0x72, - 0x15, 0x1f, 0x78, 0x8d, 0x7d, 0x1b, 0x35, 0x2f, 0xa0, 0x96, 0xfa, 0x33, 0x07, 0x87, 0xee, 0x14, - 0x4c, 0x34, 0x09, 0x35, 0x0c, 0xde, 0xa4, 0xee, 0xbf, 0x26, 0xb8, 0x57, 0x9a, 0xef, 0x88, 0xc8, - 0xef, 0x63, 0xbc, 0x57, 0x5a, 0xa0, 0xf8, 0x31, 0x98, 0x2d, 0x64, 0x96, 0x51, 0x6e, 0xda, 0x96, - 0xfa, 0x5f, 0x0e, 0x0e, 0xcb, 0x55, 0x30, 0x65, 0x36, 0x6d, 0x0b, 0x87, 0xa1, 0xf0, 0x0f, 0x01, - 0x05, 0x09, 0xfe, 0x57, 0x6d, 0xc7, 0xbe, 0xdf, 0xa4, 0xbb, 0xe6, 0x61, 0xc2, 0xb0, 0xc6, 0x84, - 0xc7, 0xfa, 0x61, 0x19, 0x13, 0x7d, 0xca, 0x4e, 0x1f, 0xb2, 0x8f, 0x87, 0xde, 0x6d, 0xa4, 0x2b, - 0x7c, 0x44, 0xac, 0x02, 0x0f, 0x33, 0x9c, 0xb1, 0xb5, 0x38, 0x94, 0xe1, 0x2c, 0x86, 0x81, 0x31, - 0xdc, 0x58, 0x11, 0xe2, 0x98, 0xfa, 0x1a, 0xf0, 0x01, 0xd0, 0x19, 0x9d, 0x79, 0x38, 0x24, 0x3a, - 0x87, 0x63, 0x22, 0x7e, 0x90, 0x86, 0xc8, 0xa4, 0x16, 0x8f, 0xfa, 0x5f, 0x47, 0x01, 0xce, 0xed, - 0xc3, 0xf8, 0x2b, 0x10, 0x6f, 0x85, 0x04, 0x37, 0x62, 0xef, 0x93, 0xa0, 0x47, 0x65, 0x8c, 0x77, - 0xc5, 0x8b, 0x94, 0x9f, 0x3e, 0x80, 0xcf, 0x97, 0x61, 0x0e, 0xfb, 0x08, 0xb4, 0x91, 0xe1, 0x90, - 0x8e, 0x72, 0x24, 0x8e, 0xf2, 0xef, 0x12, 0x0e, 0xf0, 0xc3, 0xcb, 0x21, 0xe4, 0x63, 0x24, 0x50, - 0x88, 0x45, 0xf7, 0x11, 0x64, 0x61, 0x2c, 0xdb, 0x28, 0x85, 0x80, 0x05, 0xaa, 0xe2, 0xa3, 0xc1, - 0x23, 0xa1, 0x47, 0x2e, 0x2f, 0x0c, 0xbf, 0xb1, 0x8d, 0xd9, 0x23, 0x57, 0x84, 0x89, 0xf4, 0x31, - 0x79, 0xc3, 0x2d, 0x74, 0xc1, 0xb9, 0x8e, 0x2f, 0x8c, 0x7f, 0x75, 0x36, 0x38, 0xd1, 0xf6, 0xd9, - 0x91, 0x78, 0x60, 0x1e, 0x20, 0x20, 0xbe, 0x02, 0x59, 0xc7, 0xbe, 0x48, 0x96, 0xb6, 0x66, 0x75, - 0xfc, 0x4c, 0xae, 0xa7, 0x6c, 0xef, 0xee, 0x58, 0xe4, 0x64, 0xe8, 0xac, 0xee, 0xbf, 0x2a, 0xd7, - 0xc1, 0xec, 0x45, 0xd3, 0xdd, 0x5e, 0x41, 0x46, 0x0b, 0x39, 0xba, 0x7d, 0x11, 0x7b, 0xcc, 0x4d, - 0xea, 0x7c, 0x22, 0xef, 0xbf, 0x22, 0x60, 0x5f, 0xe2, 0x5b, 0xe4, 0xc7, 0x72, 0xfc, 0x2d, 0x89, - 0xe5, 0x19, 0xcd, 0x55, 0xfa, 0x0a, 0xf3, 0x7e, 0x19, 0xa6, 0x74, 0xfb, 0x22, 0x55, 0x92, 0xff, - 0xe3, 0x70, 0x75, 0x24, 0xf1, 0x44, 0x0f, 0x4b, 0x2e, 0x60, 0x7f, 0xec, 0x13, 0xbd, 0xd8, 0xe2, - 0xc7, 0x72, 0x72, 0x69, 0x46, 0xb7, 0x2f, 0xd6, 0x90, 0x4b, 0x5a, 0x84, 0xda, 0x18, 0x91, 0x93, - 0xb5, 0xd9, 0x25, 0x04, 0xe9, 0x3c, 0x3c, 0x78, 0x4f, 0xba, 0x8b, 0x10, 0x08, 0x28, 0x60, 0x71, - 0xdc, 0xbb, 0x08, 0x03, 0x39, 0x18, 0x43, 0x8c, 0x14, 0x19, 0xa6, 0x75, 0xfb, 0xa2, 0x37, 0x34, - 0x2c, 0x99, 0xed, 0xf6, 0x68, 0x46, 0xc8, 0xa4, 0xc6, 0xbf, 0x2f, 0x06, 0x9f, 0x8b, 0xb1, 0x1b, - 0xff, 0x03, 0x18, 0x48, 0x1f, 0x86, 0xe7, 0x90, 0xc6, 0xe2, 0x8f, 0xd0, 0xd6, 0x68, 0x70, 0x18, - 0xb6, 0x41, 0x04, 0x6c, 0x1c, 0x5a, 0x83, 0x88, 0xe2, 0x60, 0x2c, 0x3b, 0x27, 0x73, 0x25, 0x3c, - 0xcc, 0x8f, 0xb6, 0x4d, 0xbc, 0x27, 0x99, 0x6b, 0x22, 0x1d, 0x76, 0x39, 0x46, 0x46, 0x82, 0x46, - 0x02, 0x17, 0x44, 0x01, 0x1e, 0xd2, 0xc7, 0xe3, 0x23, 0x32, 0xcc, 0x10, 0x16, 0x1e, 0x21, 0x56, - 0xc0, 0x50, 0x8d, 0x8a, 0xad, 0xc1, 0xe1, 0x34, 0xaa, 0x18, 0x0e, 0xc6, 0x72, 0x2b, 0xa8, 0x67, - 0xc7, 0x0d, 0x71, 0x7c, 0x3c, 0x0a, 0xc1, 0xa1, 0x8d, 0xb1, 0x11, 0x1e, 0x21, 0x1f, 0xc6, 0x18, - 0x3b, 0xa4, 0x63, 0xe4, 0xcf, 0x09, 0x5a, 0xd1, 0x28, 0x31, 0x38, 0x40, 0x53, 0x18, 0x21, 0x0c, - 0x43, 0x36, 0x85, 0x43, 0x42, 0xe2, 0xab, 0x32, 0x00, 0x61, 0x60, 0xcd, 0xde, 0xc3, 0x97, 0xf9, - 0x8c, 0xa0, 0x3b, 0xeb, 0x75, 0xab, 0x97, 0x07, 0xb8, 0xd5, 0x27, 0x0c, 0xe1, 0x92, 0x74, 0x25, - 0x90, 0x91, 0xb2, 0x57, 0xc9, 0xb1, 0xaf, 0x04, 0xc6, 0x97, 0x9f, 0x3e, 0xc6, 0x5f, 0x26, 0xd6, - 0x5c, 0x78, 0xc0, 0xf4, 0x37, 0x47, 0x82, 0x32, 0x33, 0xfb, 0x97, 0xf9, 0xd9, 0xff, 0x01, 0xb0, - 0x1d, 0xd6, 0x46, 0x1c, 0x74, 0x70, 0x34, 0x7d, 0x1b, 0xf1, 0xf0, 0x0e, 0x88, 0xfe, 0x5c, 0x16, - 0x8e, 0xd2, 0x4e, 0xe4, 0x87, 0x01, 0xe2, 0x84, 0xe7, 0xf0, 0xb8, 0x4e, 0x72, 0x00, 0xca, 0xa3, - 0x5a, 0x90, 0x4a, 0xb2, 0x94, 0x29, 0xc0, 0xde, 0x58, 0x56, 0x37, 0xf2, 0xda, 0x03, 0x1d, 0xc3, - 0x6a, 0x89, 0x87, 0xfb, 0x1d, 0x00, 0xbc, 0xbf, 0xd6, 0x28, 0xf3, 0x6b, 0x8d, 0x7d, 0x56, 0x26, - 0x13, 0xef, 0x5c, 0x63, 0x91, 0x11, 0x76, 0xc7, 0xbe, 0x73, 0x1d, 0x5d, 0x76, 0xfa, 0x28, 0xbd, - 0x47, 0x86, 0x6c, 0xcd, 0x76, 0x5c, 0xf5, 0xb9, 0x49, 0x5a, 0x27, 0x91, 0x7c, 0x08, 0x92, 0xff, - 0xae, 0x94, 0xb8, 0x5b, 0x9a, 0x6f, 0x8e, 0x3f, 0xea, 0x6c, 0xb8, 0x06, 0xf6, 0xea, 0xf6, 0xca, - 0x67, 0xae, 0x6b, 0x4e, 0x1a, 0x4f, 0x87, 0xc8, 0xaf, 0x16, 0x7d, 0x00, 0x23, 0xb5, 0x78, 0x3a, - 0x91, 0x25, 0xa7, 0x8f, 0xdb, 0x43, 0x47, 0xa9, 0x6f, 0xeb, 0x92, 0xd9, 0x46, 0xea, 0x73, 0x89, - 0xcb, 0x48, 0xc5, 0xd8, 0x41, 0xe2, 0x47, 0x62, 0x62, 0x5d, 0x5b, 0x71, 0x7c, 0x59, 0x39, 0x8c, - 0x2f, 0x9b, 0xb4, 0x41, 0x91, 0x03, 0xe8, 0x84, 0xa5, 0x71, 0x37, 0xa8, 0x98, 0xb2, 0xc7, 0x12, - 0xa7, 0xf3, 0x58, 0x0d, 0xb9, 0xc4, 0xa8, 0xac, 0xfa, 0x37, 0xb0, 0xfc, 0xec, 0x48, 0x22, 0x76, - 0x06, 0x17, 0xbc, 0xc8, 0x3d, 0x17, 0xbc, 0xbc, 0x9f, 0x05, 0x67, 0x8d, 0x07, 0xe7, 0x27, 0xa3, - 0x05, 0xc4, 0x33, 0x39, 0x12, 0x98, 0xde, 0x16, 0xc0, 0xb4, 0xce, 0xc1, 0x74, 0xc7, 0x90, 0x5c, - 0xa4, 0x0f, 0xd8, 0xaf, 0xe4, 0xe0, 0x28, 0x99, 0xf4, 0x17, 0xad, 0x16, 0x8d, 0xb0, 0xfa, 0x66, - 0xe9, 0x90, 0x37, 0xdb, 0xf6, 0x87, 0x60, 0xe5, 0x62, 0x39, 0xe7, 0x7a, 0x6f, 0xc7, 0x5f, 0x20, - 0xe1, 0x5c, 0xbd, 0x4e, 0x14, 0xef, 0xb4, 0x89, 0xdf, 0x90, 0x1f, 0xfc, 0xc7, 0xdf, 0x65, 0x34, - 0x21, 0x7e, 0x97, 0xd1, 0x9f, 0x26, 0x5b, 0xb7, 0xc3, 0x45, 0xf7, 0x08, 0x3c, 0x65, 0xdb, 0x29, - 0xc1, 0x8a, 0x9e, 0x00, 0x77, 0x3f, 0x1a, 0xee, 0x64, 0x61, 0x04, 0x91, 0x21, 0xdd, 0xc9, 0x30, - 0x81, 0xc3, 0x74, 0x27, 0x1b, 0xc4, 0xc0, 0x18, 0x6e, 0xb5, 0xcf, 0xd1, 0xdd, 0x7c, 0xdc, 0x6e, - 0xd4, 0xbf, 0x96, 0x52, 0x1f, 0xa5, 0xbf, 0x97, 0x49, 0xe4, 0xff, 0x8c, 0xf9, 0x8a, 0x1f, 0xa6, - 0x93, 0x78, 0x34, 0xc7, 0x91, 0x1b, 0xc3, 0xba, 0x91, 0x84, 0x7d, 0xd1, 0xcf, 0x99, 0x2d, 0x77, - 0x7b, 0x44, 0x27, 0x3a, 0x2e, 0x7a, 0xb4, 0xfc, 0xeb, 0x91, 0xf1, 0x8b, 0xfa, 0x6f, 0x99, 0x44, - 0x21, 0xa4, 0x02, 0x91, 0x60, 0xb6, 0x22, 0x44, 0x9c, 0x20, 0xf0, 0x53, 0x2c, 0xbd, 0x31, 0x6a, - 0xf4, 0x59, 0xb3, 0x85, 0xec, 0x47, 0xa0, 0x46, 0x63, 0xbe, 0x46, 0xa7, 0xd1, 0x71, 0xe4, 0x7e, - 0x44, 0x35, 0x3a, 0x10, 0xc9, 0x88, 0x34, 0x3a, 0x96, 0x5e, 0xfa, 0x32, 0x7e, 0xe5, 0x0c, 0x9d, - 0x48, 0xad, 0x9a, 0xd6, 0x05, 0xf5, 0x5f, 0xf2, 0xfe, 0xc5, 0xcc, 0xe7, 0x4c, 0x77, 0x9b, 0xc6, - 0x82, 0xf9, 0x3d, 0xe1, 0xbb, 0x51, 0x86, 0x88, 0xf7, 0xc2, 0x87, 0x93, 0xca, 0xed, 0x0b, 0x27, - 0x55, 0x84, 0x59, 0xd3, 0x72, 0x91, 0x63, 0x19, 0xed, 0xa5, 0xb6, 0xb1, 0xd5, 0x3d, 0x35, 0xd1, - 0xf7, 0xf2, 0xba, 0x32, 0x93, 0x47, 0xe7, 0xff, 0x60, 0xaf, 0xaf, 0x9c, 0xe4, 0xaf, 0xaf, 0x8c, - 0x88, 0x7e, 0x35, 0x15, 0x1d, 0xfd, 0x2a, 0x88, 0x6e, 0x05, 0x83, 0x83, 0x63, 0x8b, 0xda, 0xc6, - 0x09, 0xc3, 0xfd, 0xdd, 0x2c, 0x18, 0x85, 0x2d, 0x08, 0xfd, 0xf8, 0x1a, 0x39, 0xd1, 0xea, 0x9e, - 0xa7, 0x08, 0xf3, 0xbd, 0x4a, 0x90, 0xd8, 0x42, 0x65, 0x2b, 0x2f, 0xf7, 0x54, 0x3e, 0x30, 0x79, - 0xb2, 0x02, 0x26, 0x0f, 0xab, 0x54, 0x39, 0x31, 0xa5, 0x4a, 0xb2, 0x58, 0x28, 0x52, 0xdb, 0x31, - 0x9c, 0x46, 0xca, 0xc1, 0x31, 0x3f, 0xda, 0x6d, 0xa7, 0x83, 0x0c, 0xc7, 0xb0, 0x9a, 0x48, 0xfd, - 0xb8, 0x34, 0x0a, 0xb3, 0x77, 0x09, 0x26, 0xcd, 0xa6, 0x6d, 0xd5, 0xcc, 0x67, 0xf8, 0x97, 0xcb, - 0xc5, 0x07, 0x59, 0xc7, 0x12, 0x29, 0xd3, 0x3f, 0xf4, 0xe0, 0x5f, 0xa5, 0x0c, 0x53, 0x4d, 0xc3, - 0x69, 0x91, 0x20, 0x7c, 0xb9, 0x9e, 0x8b, 0x9c, 0x22, 0x09, 0x95, 0xfc, 0x5f, 0xf4, 0xf0, 0x6f, - 0xa5, 0xca, 0x0b, 0x31, 0xdf, 0x13, 0xcd, 0x23, 0x92, 0xd8, 0x62, 0xf8, 0x13, 0x27, 0x73, 0x4f, - 0x3a, 0x0e, 0x6a, 0xe3, 0x3b, 0xe8, 0x49, 0x0f, 0x31, 0xa5, 0x87, 0x09, 0x49, 0x97, 0x07, 0x70, - 0x51, 0xfb, 0xd0, 0x18, 0xf7, 0xf2, 0x80, 0x10, 0x17, 0xe9, 0x6b, 0xe6, 0x3b, 0xf3, 0x30, 0x4b, - 0x7a, 0x35, 0x2a, 0x4e, 0xf5, 0xf9, 0xf8, 0x0a, 0x69, 0xf7, 0x5e, 0x74, 0x49, 0xad, 0x1d, 0x7c, - 0x4c, 0x2e, 0x80, 0x7c, 0x21, 0x08, 0x38, 0xe8, 0x3d, 0x26, 0xdd, 0xb7, 0xf7, 0xf9, 0x9a, 0x27, - 0x3c, 0x8d, 0x7b, 0xdf, 0x3e, 0xbe, 0xf8, 0xf4, 0xf1, 0xf9, 0x55, 0x19, 0xe4, 0x62, 0xab, 0xa5, - 0x36, 0x0f, 0x0e, 0xc5, 0x35, 0x30, 0xed, 0xb7, 0x99, 0x30, 0x06, 0x24, 0x9b, 0x94, 0x74, 0x11, - 0x34, 0x90, 0x4d, 0xb1, 0x35, 0xf6, 0x5d, 0x85, 0x98, 0xb2, 0xd3, 0x07, 0xe5, 0x37, 0x27, 0x68, - 0xa3, 0x59, 0xb0, 0xed, 0x0b, 0xf8, 0xa8, 0xcc, 0x73, 0x65, 0xc8, 0x2d, 0x21, 0xb7, 0xb9, 0x3d, - 0xa2, 0x36, 0xb3, 0xeb, 0xb4, 0xfd, 0x36, 0xb3, 0xef, 0x3e, 0xfc, 0xc1, 0x36, 0xac, 0xcf, 0xd6, - 0x3c, 0x66, 0x69, 0xdc, 0xd1, 0x9d, 0x63, 0x4b, 0x4f, 0x1f, 0x9c, 0x7f, 0x93, 0x61, 0x2e, 0x58, - 0xe1, 0x22, 0x98, 0xfc, 0x4a, 0xe6, 0x91, 0xb6, 0xde, 0xa9, 0x7e, 0x3e, 0x59, 0x88, 0xb4, 0x40, - 0xa6, 0x7c, 0xcd, 0x52, 0x5e, 0x58, 0x4c, 0x10, 0x3c, 0x4d, 0x8c, 0xc1, 0x31, 0xcc, 0xe0, 0x65, - 0x98, 0xc4, 0x0c, 0x2d, 0x9a, 0x7b, 0xd8, 0x75, 0x90, 0x5b, 0x68, 0x7c, 0xe6, 0x48, 0x16, 0x1a, - 0xef, 0xe0, 0x17, 0x1a, 0x05, 0x23, 0x1e, 0xfb, 0xeb, 0x8c, 0x09, 0x7d, 0x69, 0xbc, 0xff, 0x47, - 0xbe, 0xcc, 0x98, 0xc0, 0x97, 0x66, 0x40, 0xf9, 0xe9, 0x23, 0xfa, 0x9a, 0xff, 0x44, 0x3b, 0x5b, - 0x7f, 0x43, 0x55, 0xfd, 0xbf, 0x8e, 0x41, 0xf6, 0xac, 0xf7, 0xf0, 0x3f, 0xc2, 0x1b, 0xb1, 0x5e, - 0x3a, 0x82, 0xe0, 0x0c, 0x4f, 0x85, 0xac, 0x47, 0x9f, 0x4e, 0x5b, 0x6e, 0x14, 0xdb, 0xdd, 0xf5, - 0x18, 0xd1, 0xf1, 0x7f, 0xca, 0x49, 0xc8, 0x77, 0xed, 0x5d, 0xa7, 0xe9, 0x99, 0xcf, 0x9e, 0xc6, - 0xd0, 0xb7, 0xa4, 0x41, 0x49, 0x39, 0xd2, 0xf3, 0xa3, 0x73, 0x19, 0x65, 0x2e, 0x48, 0x92, 0xb9, - 0x0b, 0x92, 0x12, 0xec, 0x1f, 0x08, 0xf0, 0x96, 0xbe, 0x46, 0xfc, 0x35, 0xbe, 0x2b, 0xb0, 0x35, - 0x2a, 0xd8, 0x23, 0xc4, 0x72, 0x50, 0x75, 0x48, 0xea, 0xf0, 0xcd, 0x8b, 0x36, 0x88, 0x03, 0x3f, - 0x56, 0x87, 0x6f, 0x01, 0x1e, 0xc6, 0x72, 0x4a, 0x3d, 0x4f, 0x9d, 0x54, 0xef, 0x1b, 0x25, 0xba, - 0x59, 0x4e, 0xe9, 0x0f, 0x84, 0xce, 0x08, 0x9d, 0x57, 0x87, 0x46, 0xe7, 0x90, 0xdc, 0x57, 0xff, - 0x40, 0xc6, 0x91, 0x30, 0x7d, 0x23, 0x47, 0xfc, 0xa2, 0xa3, 0xc4, 0x10, 0x79, 0x63, 0x30, 0x17, - 0x07, 0x7a, 0x76, 0xf8, 0xd0, 0xe0, 0xbc, 0xe8, 0x18, 0xfe, 0xc7, 0x1d, 0x1a, 0x5c, 0x94, 0x91, - 0xf4, 0x81, 0x7c, 0x3d, 0xb9, 0x58, 0xac, 0xd8, 0x74, 0xcd, 0xbd, 0x11, 0xb7, 0x34, 0x7e, 0x78, - 0x49, 0x18, 0x0d, 0x78, 0x9f, 0x84, 0x08, 0x87, 0xe3, 0x8e, 0x06, 0x2c, 0xc6, 0x46, 0xfa, 0x30, - 0xfd, 0x5d, 0xde, 0x93, 0x1e, 0x5d, 0x9b, 0x79, 0x03, 0x5d, 0x0d, 0x40, 0x07, 0x47, 0xeb, 0x0c, - 0xcc, 0x30, 0x53, 0x7f, 0xff, 0xc2, 0x1a, 0x2e, 0x2d, 0xe9, 0x41, 0xf7, 0x40, 0x64, 0x23, 0x5f, - 0x18, 0x48, 0xb0, 0xe0, 0x2b, 0xc2, 0xc4, 0x58, 0xee, 0x83, 0xf3, 0xc7, 0xb0, 0x31, 0x61, 0xf5, - 0x7b, 0x2c, 0x56, 0x55, 0x1e, 0xab, 0xdb, 0x44, 0xc4, 0x24, 0x36, 0xa6, 0x09, 0xcd, 0x1b, 0xdf, - 0x11, 0xc0, 0xa5, 0x73, 0x70, 0x3d, 0x75, 0x68, 0x3e, 0xd2, 0x47, 0xec, 0x65, 0xa4, 0x3b, 0xac, - 0x11, 0x93, 0x7d, 0x34, 0xdd, 0x21, 0x9d, 0x0d, 0xc8, 0xdc, 0x6c, 0x20, 0xa1, 0xbf, 0x7d, 0xe8, - 0x46, 0xea, 0x33, 0x37, 0x08, 0xa2, 0xec, 0x88, 0xfd, 0xed, 0x07, 0x72, 0x90, 0x3e, 0x38, 0xff, - 0x24, 0x03, 0x2c, 0x3b, 0xf6, 0x6e, 0xa7, 0xea, 0xb4, 0x90, 0xa3, 0xfe, 0x6d, 0x38, 0x01, 0x78, - 0xf1, 0x08, 0x26, 0x00, 0xeb, 0x00, 0x5b, 0x01, 0x71, 0xaa, 0xe1, 0xb7, 0x88, 0x99, 0xfb, 0x21, - 0x53, 0x3a, 0x43, 0x83, 0xbf, 0x72, 0xf6, 0xa7, 0x78, 0x8c, 0xe3, 0xfa, 0xac, 0x90, 0xdc, 0x28, - 0x27, 0x00, 0xef, 0x0a, 0xb0, 0xae, 0x73, 0x58, 0xdf, 0x7d, 0x00, 0x4e, 0xd2, 0xc7, 0xfc, 0x9f, - 0x27, 0x60, 0x9a, 0x6c, 0xd7, 0x11, 0x99, 0xfe, 0x43, 0x08, 0xfa, 0x6f, 0x8e, 0x00, 0xf4, 0x0d, - 0x98, 0xb1, 0x43, 0xea, 0xa4, 0x4f, 0x65, 0x17, 0x60, 0x62, 0x61, 0x67, 0xf8, 0xd2, 0x39, 0x32, - 0xea, 0x47, 0x59, 0xe4, 0x75, 0x1e, 0xf9, 0x3b, 0x62, 0xe4, 0xcd, 0x50, 0x1c, 0x25, 0xf4, 0xef, - 0x0e, 0xa0, 0xdf, 0xe0, 0xa0, 0x2f, 0x1e, 0x84, 0x95, 0x31, 0x84, 0xdb, 0x97, 0x21, 0x8b, 0x4f, - 0xc7, 0xfd, 0x56, 0x8a, 0xf3, 0xfb, 0x53, 0x30, 0x81, 0x9b, 0x6c, 0x30, 0xef, 0xf0, 0x5f, 0xbd, - 0x2f, 0xc6, 0xa6, 0x8b, 0x9c, 0xc0, 0x63, 0xc1, 0x7f, 0xf5, 0x78, 0xf0, 0xbd, 0x92, 0xbb, 0xa7, - 0xf2, 0x64, 0x23, 0x32, 0x48, 0x18, 0x7a, 0x52, 0xc2, 0x4a, 0x7c, 0x64, 0xe7, 0xe5, 0x86, 0x99, - 0x94, 0x0c, 0x60, 0x24, 0x7d, 0xe0, 0xff, 0x32, 0x0b, 0xa7, 0xc8, 0xaa, 0xd2, 0x92, 0x63, 0xef, - 0xf4, 0xdc, 0x6e, 0x65, 0x1e, 0x5c, 0x17, 0xae, 0x87, 0x39, 0x97, 0xf3, 0xc7, 0xa6, 0x3a, 0xd1, - 0x93, 0xaa, 0xfe, 0x19, 0xeb, 0x53, 0xf1, 0x34, 0x1e, 0xc9, 0x85, 0x18, 0x01, 0x46, 0xf1, 0x9e, - 0x78, 0xa1, 0x5e, 0x90, 0x51, 0x66, 0x91, 0x4a, 0x1e, 0x6a, 0xcd, 0x32, 0xd0, 0xa9, 0x9c, 0x88, - 0x4e, 0x7d, 0x20, 0xd0, 0xa9, 0x9f, 0xe1, 0x74, 0x6a, 0xf9, 0xe0, 0x22, 0x49, 0x5f, 0xb7, 0x5e, - 0x1d, 0x6c, 0x0c, 0x05, 0xdb, 0x76, 0x3b, 0x29, 0x6c, 0xd6, 0xb1, 0xfe, 0x48, 0x59, 0xce, 0x1f, - 0x89, 0xbf, 0x8f, 0x22, 0xc1, 0x4c, 0x98, 0xe7, 0x3a, 0x42, 0x97, 0xe6, 0x40, 0x32, 0x7d, 0xee, - 0x24, 0xb3, 0x35, 0xd4, 0x5c, 0x37, 0xb6, 0xa0, 0x31, 0xac, 0x2d, 0xcd, 0x41, 0x7e, 0xc9, 0x6c, - 0xbb, 0xc8, 0x51, 0xbf, 0x4c, 0x67, 0xba, 0xaf, 0x4e, 0x71, 0x00, 0x58, 0x84, 0xfc, 0x26, 0x2e, - 0x8d, 0x9a, 0xcc, 0x37, 0x89, 0xb5, 0x1e, 0xc2, 0xa1, 0x4e, 0xff, 0x4d, 0x1a, 0x9d, 0xaf, 0x87, - 0xcc, 0xc8, 0xa6, 0xc8, 0x09, 0xa2, 0xf3, 0x0d, 0x66, 0x61, 0x2c, 0x17, 0x53, 0xe5, 0x75, 0xb4, - 0xe3, 0x8d, 0xf1, 0x17, 0xd2, 0x43, 0xb8, 0x00, 0xb2, 0xd9, 0xea, 0xe2, 0xce, 0x71, 0x4a, 0xf7, - 0x1e, 0x93, 0xfa, 0x0a, 0xf5, 0x8a, 0x8a, 0xb0, 0x3c, 0x6e, 0x5f, 0x21, 0x21, 0x2e, 0xd2, 0xc7, - 0xec, 0x7b, 0xd8, 0x51, 0xb4, 0xd3, 0x36, 0x9a, 0xc8, 0xe3, 0x3e, 0x35, 0xd4, 0x48, 0x4f, 0x96, - 0xf5, 0x7b, 0x32, 0xa6, 0x9d, 0xe6, 0x0e, 0xd0, 0x4e, 0x87, 0x5d, 0x86, 0x0c, 0x64, 0x8e, 0x2b, - 0x7e, 0x68, 0xcb, 0x90, 0xb1, 0x6c, 0x8c, 0xe1, 0xda, 0x51, 0xff, 0x20, 0xed, 0x58, 0x5b, 0xeb, - 0xb0, 0x9b, 0x34, 0x54, 0x58, 0x23, 0x3b, 0x34, 0x3b, 0xcc, 0x26, 0x4d, 0x34, 0x0f, 0x63, 0x40, - 0x6b, 0x8e, 0xa2, 0xf5, 0x39, 0x3a, 0x8c, 0xa6, 0xbc, 0x4f, 0xda, 0xb5, 0x1d, 0x37, 0xd9, 0x3e, - 0xa9, 0xc7, 0x9d, 0x8e, 0xff, 0x4b, 0x7a, 0xf0, 0x8a, 0x3f, 0x57, 0x3d, 0xaa, 0xe1, 0x33, 0xc1, - 0xc1, 0xab, 0x41, 0x0c, 0xa4, 0x0f, 0xef, 0x5b, 0x0e, 0x69, 0xf0, 0x1c, 0xb6, 0x39, 0xd2, 0x36, - 0x30, 0xb2, 0xa1, 0x73, 0x98, 0xe6, 0x18, 0xcd, 0x43, 0xfa, 0x78, 0x7d, 0x9b, 0x19, 0x38, 0xdf, - 0x34, 0xc6, 0x81, 0xd3, 0x6f, 0x99, 0xb9, 0x21, 0x5b, 0xe6, 0xb0, 0xfb, 0x3f, 0x54, 0xd6, 0xa3, - 0x1b, 0x30, 0x87, 0xd9, 0xff, 0x89, 0x61, 0x22, 0x7d, 0xc4, 0xdf, 0x2c, 0x43, 0xae, 0x36, 0xfe, - 0xf1, 0x72, 0xd8, 0xb9, 0x08, 0x96, 0x55, 0x6d, 0x64, 0xc3, 0xe5, 0x30, 0x73, 0x91, 0x48, 0x16, - 0xc6, 0x10, 0x78, 0xff, 0x28, 0xcc, 0xe0, 0x25, 0x11, 0x7f, 0x9b, 0xf5, 0xdb, 0x74, 0xd4, 0x7c, - 0x38, 0xc5, 0xb6, 0x7a, 0x0f, 0x4c, 0xfa, 0xfb, 0x77, 0x74, 0xe4, 0x9c, 0x17, 0x6b, 0x9f, 0x3e, - 0x97, 0x7a, 0xf0, 0xff, 0x81, 0x9c, 0x21, 0x46, 0xbe, 0x57, 0x3b, 0xac, 0x33, 0xc4, 0xa1, 0xee, - 0xd7, 0xfe, 0x69, 0x38, 0xa2, 0xfe, 0x97, 0xf4, 0x30, 0xef, 0xdd, 0xc7, 0xcd, 0xf6, 0xd9, 0xc7, - 0xfd, 0x38, 0x8b, 0x65, 0x8d, 0xc7, 0xf2, 0x4e, 0x51, 0x11, 0x8e, 0x70, 0xac, 0x7d, 0x4f, 0x00, - 0xe7, 0x59, 0x0e, 0xce, 0x85, 0x03, 0xf1, 0x32, 0x86, 0x83, 0x8f, 0xd9, 0x70, 0xcc, 0xfd, 0x44, - 0x8a, 0xed, 0xb8, 0xe7, 0x54, 0x45, 0x76, 0xdf, 0xa9, 0x0a, 0xae, 0xa5, 0xe7, 0x0e, 0xd8, 0xd2, - 0x3f, 0xc1, 0x6a, 0x47, 0x9d, 0xd7, 0x8e, 0xa7, 0x8a, 0x23, 0x32, 0xba, 0x91, 0xf9, 0xbd, 0x81, - 0x7a, 0x9c, 0xe3, 0xd4, 0xa3, 0x74, 0x30, 0x66, 0xd2, 0xd7, 0x8f, 0x3f, 0xf4, 0x27, 0xb4, 0x87, - 0xdc, 0xde, 0x87, 0xdd, 0x2a, 0xe6, 0x84, 0x38, 0xb2, 0x91, 0x7b, 0x98, 0xad, 0xe2, 0x41, 0x9c, - 0x8c, 0x21, 0x16, 0xdb, 0x2c, 0x4c, 0x63, 0x9e, 0xce, 0x99, 0xad, 0x2d, 0xe4, 0xaa, 0xaf, 0x21, - 0x3e, 0x8a, 0x7e, 0xe4, 0xcb, 0x11, 0x85, 0x27, 0x8a, 0x3a, 0xef, 0x9a, 0xd4, 0xa3, 0x83, 0x30, - 0x39, 0xcf, 0x30, 0x38, 0xee, 0x08, 0x8a, 0x03, 0x39, 0x48, 0x1f, 0xb2, 0x8f, 0x12, 0x77, 0x9b, - 0x55, 0xe3, 0x92, 0xbd, 0xeb, 0xaa, 0x0f, 0x8e, 0xa0, 0x83, 0x5e, 0x80, 0x7c, 0x1b, 0x53, 0xa3, - 0xc7, 0x32, 0xe2, 0xa7, 0x3b, 0x54, 0x04, 0xa4, 0x7c, 0x9d, 0xfe, 0x99, 0xf4, 0x6c, 0x46, 0x28, - 0x47, 0x42, 0x67, 0xdc, 0x67, 0x33, 0x06, 0x94, 0x3f, 0x96, 0x3b, 0x76, 0x26, 0xbd, 0xd2, 0xcd, - 0x1d, 0xd3, 0x1d, 0x51, 0x04, 0x87, 0xb6, 0x47, 0xcb, 0x8f, 0xe0, 0x80, 0x5f, 0x92, 0x9e, 0x18, - 0x65, 0xa4, 0xe2, 0xfd, 0x3e, 0xee, 0x13, 0xa3, 0xf1, 0xc5, 0xa7, 0x8f, 0xc9, 0xaf, 0x93, 0x96, - 0x75, 0x96, 0x38, 0xdf, 0xa6, 0xe8, 0xd7, 0x3b, 0x74, 0x63, 0x21, 0xac, 0x1d, 0x5e, 0x63, 0xe9, - 0x5b, 0x7e, 0xfa, 0xc0, 0xfc, 0xb7, 0x1f, 0x87, 0xdc, 0x22, 0x3a, 0xbf, 0xbb, 0xa5, 0xde, 0x01, - 0x93, 0x75, 0x07, 0xa1, 0xb2, 0xb5, 0x69, 0x7b, 0xd2, 0x75, 0xbd, 0x67, 0x1f, 0x12, 0xfa, 0xe6, - 0xe1, 0xb1, 0x8d, 0x8c, 0x56, 0x78, 0xfe, 0xcc, 0x7f, 0x55, 0x5f, 0x2a, 0x41, 0xb6, 0xe6, 0x1a, - 0xae, 0x3a, 0x15, 0x60, 0xab, 0x3e, 0xc8, 0x62, 0x71, 0x07, 0x8f, 0xc5, 0xf5, 0x9c, 0x2c, 0x30, - 0x07, 0xf3, 0xde, 0xff, 0x11, 0x00, 0xa8, 0x30, 0x79, 0x7f, 0xd7, 0xb6, 0xbc, 0x1c, 0xfe, 0x11, - 0x48, 0xff, 0x5d, 0x7d, 0x55, 0x20, 0xee, 0xbb, 0x38, 0x71, 0x3f, 0x56, 0xac, 0x88, 0x31, 0xac, - 0xb4, 0x49, 0x30, 0xe5, 0x89, 0x76, 0x05, 0x19, 0xad, 0xae, 0xfa, 0x63, 0xa1, 0xf2, 0x47, 0x88, - 0x59, 0xfd, 0xa0, 0x70, 0x30, 0x4e, 0x52, 0xab, 0x80, 0x78, 0xb4, 0x47, 0x87, 0xbf, 0xf9, 0x2f, - 0xf1, 0xc1, 0x48, 0x6e, 0x86, 0xac, 0x69, 0x6d, 0xda, 0xd4, 0xbf, 0xf0, 0xca, 0x08, 0xda, 0x9e, - 0x4e, 0xe8, 0x38, 0xa3, 0x60, 0xa4, 0xce, 0x78, 0xb6, 0xc6, 0x72, 0xe9, 0x5d, 0xd6, 0x2b, 0x5d, - 0xfd, 0xdf, 0x07, 0x0a, 0x5b, 0x51, 0x20, 0xdb, 0x31, 0xdc, 0x6d, 0x5a, 0x34, 0x7e, 0xf6, 0x6c, - 0xe4, 0x5d, 0xcb, 0xb0, 0x6c, 0xeb, 0xd2, 0x8e, 0xf9, 0x8c, 0xe0, 0x6e, 0x5d, 0x2e, 0xcd, 0xe3, - 0x7c, 0x0b, 0x59, 0xc8, 0x31, 0x5c, 0x54, 0xdb, 0xdb, 0xc2, 0x73, 0xac, 0x49, 0x9d, 0x4d, 0x4a, - 0xac, 0xff, 0x1e, 0xc7, 0xd1, 0xfa, 0xbf, 0x69, 0xb6, 0x11, 0x8e, 0xd4, 0x44, 0xf5, 0xdf, 0x7f, - 0x4f, 0xa4, 0xff, 0x7d, 0x8a, 0x48, 0x1f, 0x8d, 0x7f, 0x97, 0x60, 0xa6, 0xe6, 0x29, 0x5c, 0x6d, - 0x77, 0x67, 0xc7, 0x70, 0x2e, 0xa9, 0xd7, 0x86, 0xa8, 0x30, 0xaa, 0x99, 0xe1, 0xfd, 0x52, 0xfe, - 0x40, 0xf8, 0x5a, 0x69, 0xda, 0xb4, 0x99, 0x12, 0x12, 0xb7, 0x83, 0xc7, 0x43, 0xce, 0x53, 0x6f, - 0xdf, 0xe3, 0x32, 0xb6, 0x21, 0x90, 0x9c, 0x82, 0x11, 0xad, 0x06, 0xf2, 0x36, 0x86, 0x68, 0x1a, - 0x12, 0x1c, 0xad, 0xb9, 0x46, 0xf3, 0xc2, 0xb2, 0xed, 0xd8, 0xbb, 0xae, 0x69, 0xa1, 0xae, 0xfa, - 0xa8, 0x10, 0x01, 0x5f, 0xff, 0x33, 0xa1, 0xfe, 0xab, 0x3f, 0xc8, 0x88, 0x8e, 0xa2, 0x41, 0xb7, - 0xca, 0x92, 0x8f, 0x08, 0x50, 0x25, 0x36, 0x2e, 0x8a, 0x50, 0x4c, 0x5f, 0x68, 0x6f, 0x92, 0xa1, - 0xa0, 0x3d, 0xd0, 0xb1, 0x1d, 0x77, 0xd5, 0x6e, 0x1a, 0xed, 0xae, 0x6b, 0x3b, 0x48, 0xad, 0xc6, - 0x4a, 0xcd, 0xeb, 0x61, 0x5a, 0x76, 0x33, 0x1c, 0x1c, 0xe9, 0x1b, 0xab, 0x76, 0x32, 0xaf, 0xe3, - 0x1f, 0x15, 0xde, 0x65, 0x24, 0x52, 0xe9, 0xe5, 0x28, 0x42, 0xcf, 0xfb, 0x75, 0x69, 0xc9, 0x0e, - 0x4b, 0x88, 0xed, 0x3c, 0x0a, 0x31, 0x35, 0x86, 0xa5, 0x72, 0x09, 0x66, 0x6b, 0xbb, 0xe7, 0x03, - 0x22, 0x5d, 0xd6, 0x08, 0x79, 0xad, 0x70, 0x94, 0x0a, 0xaa, 0x78, 0x2c, 0xa1, 0x08, 0xf9, 0x5e, - 0x07, 0xb3, 0x5d, 0x36, 0x1b, 0xc5, 0x9b, 0x4f, 0x14, 0x8c, 0x4e, 0x31, 0xb8, 0xd4, 0xf4, 0x05, - 0xf8, 0x5e, 0x09, 0x66, 0xab, 0x1d, 0x64, 0xa1, 0x16, 0xf1, 0x82, 0xe4, 0x04, 0xf8, 0xd2, 0x84, - 0x02, 0xe4, 0x08, 0x45, 0x08, 0x30, 0xf4, 0x58, 0x5e, 0xf4, 0x85, 0x17, 0x26, 0x24, 0x12, 0x5c, - 0x5c, 0x69, 0xe9, 0x0b, 0xee, 0x4b, 0x12, 0x4c, 0xeb, 0xbb, 0xd6, 0xba, 0x63, 0x7b, 0xa3, 0xb1, - 0xa3, 0xde, 0x19, 0x76, 0x10, 0x37, 0xc1, 0xb1, 0xd6, 0xae, 0x83, 0xd7, 0x9f, 0xca, 0x56, 0x0d, - 0x35, 0x6d, 0xab, 0xd5, 0xc5, 0xf5, 0xc8, 0xe9, 0xfb, 0x3f, 0xdc, 0x9e, 0x7d, 0xee, 0x37, 0xe4, - 0x8c, 0xfa, 0x7c, 0xe1, 0x50, 0x37, 0xa4, 0xf2, 0x4c, 0xd1, 0xe2, 0x3d, 0x81, 0x60, 0x40, 0x9b, - 0x41, 0x25, 0xa4, 0x2f, 0xdc, 0xcf, 0x49, 0xa0, 0x14, 0x9b, 0x4d, 0x7b, 0xd7, 0x72, 0x6b, 0xa8, - 0x8d, 0x9a, 0x6e, 0xdd, 0x31, 0x9a, 0x88, 0xb5, 0x9f, 0x0b, 0x20, 0xb7, 0x4c, 0x87, 0xf6, 0xc1, - 0xde, 0x23, 0x95, 0xe3, 0x4b, 0x85, 0x77, 0x1c, 0x49, 0x2d, 0xf7, 0x97, 0x92, 0x40, 0x9c, 0x62, - 0xfb, 0x8a, 0x82, 0x05, 0xa5, 0x2f, 0xd5, 0x4f, 0x48, 0x30, 0xe5, 0xf7, 0xd8, 0x5b, 0x22, 0xc2, - 0xfc, 0xf5, 0x84, 0x93, 0x91, 0x80, 0x78, 0x02, 0x19, 0xbe, 0x33, 0xc1, 0xac, 0x22, 0x8a, 0x7e, - 0x32, 0xd1, 0x15, 0x93, 0x8b, 0xce, 0x7b, 0xad, 0x54, 0x1b, 0x4b, 0xd5, 0xd5, 0x45, 0x4d, 0x2f, - 0xc8, 0xea, 0x97, 0x25, 0xc8, 0xae, 0x9b, 0xd6, 0x16, 0x1b, 0x5d, 0xe9, 0xb8, 0x67, 0x47, 0xb6, - 0xd0, 0x03, 0xb4, 0xa5, 0x93, 0x17, 0xe5, 0x56, 0x38, 0x6e, 0xed, 0xee, 0x9c, 0x47, 0x4e, 0x75, - 0x13, 0x8f, 0xb2, 0xdd, 0xba, 0x5d, 0x43, 0x16, 0x31, 0x42, 0x73, 0x7a, 0xdf, 0x6f, 0xbc, 0x09, - 0x26, 0x30, 0x79, 0xf0, 0x38, 0x89, 0x90, 0x78, 0xc0, 0x94, 0xc4, 0x30, 0x95, 0x68, 0xda, 0xd0, - 0x87, 0x78, 0xfa, 0x9a, 0xfa, 0x47, 0x39, 0x38, 0x51, 0xb4, 0x2e, 0x61, 0x9b, 0x82, 0x74, 0xf0, - 0xa5, 0x6d, 0xc3, 0xda, 0x42, 0x78, 0x80, 0x08, 0x24, 0xce, 0x86, 0xe8, 0xcf, 0xf0, 0x21, 0xfa, - 0x15, 0x1d, 0x26, 0x6c, 0xa7, 0x85, 0x9c, 0x85, 0x4b, 0x98, 0xa7, 0xde, 0x65, 0x67, 0xda, 0x26, - 0xfb, 0x15, 0x31, 0x4f, 0xc9, 0xcf, 0x57, 0xc9, 0xff, 0xba, 0x4f, 0xe8, 0xcc, 0x4d, 0x30, 0x41, - 0xd3, 0x94, 0x19, 0x98, 0xac, 0xea, 0x8b, 0x9a, 0xde, 0x28, 0x2f, 0x16, 0x8e, 0x28, 0x97, 0xc1, - 0xd1, 0x72, 0x5d, 0xd3, 0x8b, 0xf5, 0x72, 0xb5, 0xd2, 0xc0, 0xe9, 0x85, 0x8c, 0xfa, 0x9c, 0xac, - 0xa8, 0x67, 0x6f, 0x3c, 0x33, 0xfd, 0x60, 0xd5, 0x61, 0xa2, 0x49, 0x32, 0xe0, 0x21, 0x74, 0x3a, - 0x51, 0xed, 0x28, 0x41, 0x92, 0xa0, 0xfb, 0x84, 0x94, 0xd3, 0x00, 0x17, 0x1d, 0xdb, 0xda, 0x0a, - 0x4f, 0x1d, 0x4e, 0xea, 0x4c, 0x8a, 0xfa, 0x60, 0x06, 0xf2, 0xe4, 0x1f, 0x7c, 0x25, 0x09, 0x7e, - 0x0a, 0x05, 0xef, 0xbf, 0x7b, 0x16, 0x2f, 0x96, 0x57, 0x38, 0xd1, 0xa2, 0xaf, 0x9e, 0x2e, 0x12, - 0x19, 0x10, 0x4b, 0x98, 0x56, 0xe5, 0x66, 0xc8, 0x93, 0x7f, 0xa9, 0xd7, 0x41, 0x74, 0x78, 0x51, - 0x92, 0x4d, 0xd0, 0x4f, 0x59, 0x5c, 0xa6, 0xe9, 0x6b, 0xf3, 0x87, 0x24, 0x98, 0xac, 0x20, 0xb7, - 0xb4, 0x8d, 0x9a, 0x17, 0xd4, 0xc7, 0xf0, 0x0b, 0xa0, 0x6d, 0x13, 0x59, 0xee, 0x7d, 0x3b, 0xed, - 0x60, 0x01, 0xd4, 0x4f, 0x50, 0x9f, 0xc7, 0x76, 0xbe, 0x77, 0xf3, 0xfa, 0x73, 0x63, 0x9f, 0xba, - 0xfa, 0x25, 0x44, 0xa8, 0xcc, 0x49, 0xc8, 0x3b, 0xa8, 0xbb, 0xdb, 0xf6, 0x17, 0xd1, 0xe8, 0x9b, - 0xfa, 0x50, 0x20, 0xce, 0x12, 0x27, 0xce, 0x9b, 0xc5, 0x8b, 0x18, 0x43, 0xbc, 0xd2, 0x2c, 0x4c, - 0x94, 0x2d, 0xd3, 0x35, 0x8d, 0xb6, 0xfa, 0xfc, 0x2c, 0xcc, 0xd6, 0x90, 0xbb, 0x6e, 0x38, 0xc6, - 0x0e, 0x72, 0x91, 0xd3, 0x55, 0xbf, 0xcb, 0xf7, 0x09, 0x9d, 0xb6, 0xe1, 0x6e, 0xda, 0xce, 0x8e, - 0xaf, 0x9a, 0xfe, 0xbb, 0xa7, 0x9a, 0x7b, 0xc8, 0xe9, 0x86, 0x7c, 0xf9, 0xaf, 0xde, 0x97, 0x8b, - 0xb6, 0x73, 0xc1, 0x1b, 0x04, 0xe9, 0x34, 0x8d, 0xbe, 0x7a, 0xf4, 0xda, 0xf6, 0xd6, 0x2a, 0xda, - 0x43, 0x7e, 0xb8, 0xb4, 0xe0, 0xdd, 0x9b, 0x0b, 0xb4, 0xec, 0x8a, 0xed, 0x7a, 0x9d, 0xf6, 0xaa, - 0xbd, 0x45, 0xe2, 0xc5, 0x4e, 0xea, 0x7c, 0x62, 0x98, 0xcb, 0xd8, 0x43, 0x38, 0x57, 0x9e, 0xcd, - 0x45, 0x13, 0x95, 0x79, 0x50, 0x82, 0xdf, 0xea, 0xa8, 0x8d, 0x76, 0x90, 0xeb, 0x5c, 0xc2, 0xd7, - 0x42, 0x4c, 0xea, 0x7d, 0xbe, 0xd0, 0x01, 0x5a, 0x7c, 0xb2, 0x4e, 0xa5, 0x37, 0xcf, 0x49, 0xee, - 0x40, 0x93, 0x75, 0x11, 0x8a, 0x63, 0xb9, 0xf6, 0x4a, 0xf6, 0xac, 0x99, 0x97, 0xcb, 0x90, 0xc5, - 0x83, 0xe7, 0x9b, 0x33, 0xdc, 0x0a, 0xd3, 0x0e, 0xea, 0x76, 0x8d, 0x2d, 0xe4, 0xaf, 0x30, 0xd1, - 0x57, 0xe5, 0x36, 0xc8, 0xb5, 0x31, 0xa6, 0x64, 0x70, 0xb8, 0x96, 0xab, 0x99, 0x67, 0x60, 0x78, - 0xb4, 0x82, 0x91, 0x00, 0xc3, 0xad, 0x93, 0x3f, 0xce, 0xdc, 0x03, 0x39, 0x02, 0xff, 0x14, 0xe4, - 0x16, 0xb5, 0x85, 0x8d, 0xe5, 0xc2, 0x11, 0xef, 0xd1, 0xe7, 0x6f, 0x0a, 0x72, 0x4b, 0xc5, 0x7a, - 0x71, 0xb5, 0x20, 0x79, 0xf5, 0x28, 0x57, 0x96, 0xaa, 0x05, 0xd9, 0x4b, 0x5c, 0x2f, 0x56, 0xca, - 0xa5, 0x42, 0x56, 0x99, 0x86, 0x89, 0x73, 0x45, 0xbd, 0x52, 0xae, 0x2c, 0x17, 0x72, 0xea, 0xdf, - 0xb1, 0xf8, 0xdd, 0xce, 0xe3, 0x77, 0x5d, 0x14, 0x4f, 0xfd, 0x20, 0x7b, 0x45, 0x00, 0xd9, 0x9d, - 0x1c, 0x64, 0x3f, 0x2e, 0x42, 0x64, 0x0c, 0xee, 0x4c, 0x79, 0x98, 0x58, 0x77, 0xec, 0x26, 0xea, - 0x76, 0xd5, 0xdf, 0x90, 0x20, 0x5f, 0x32, 0xac, 0x26, 0x6a, 0xab, 0x57, 0x84, 0x50, 0x11, 0x57, - 0xd1, 0x4c, 0x70, 0x5a, 0xec, 0x9f, 0x32, 0xa2, 0xbd, 0x1f, 0xa5, 0x3b, 0x4f, 0x68, 0x46, 0xc8, - 0x47, 0xac, 0x97, 0x8b, 0x25, 0x35, 0x86, 0xab, 0x71, 0x24, 0x98, 0xa2, 0xab, 0x01, 0xe7, 0x11, - 0x3b, 0x0f, 0xff, 0x6e, 0x46, 0x74, 0x72, 0xe8, 0xd7, 0x20, 0x20, 0x13, 0x21, 0x0f, 0xb1, 0x89, - 0xe0, 0x20, 0x6a, 0x63, 0xd8, 0x3c, 0x94, 0x60, 0x7a, 0xc3, 0xea, 0xf6, 0x13, 0x8a, 0x78, 0x1c, - 0x7d, 0xbf, 0x1a, 0x0c, 0xa1, 0x03, 0xc5, 0xd1, 0x1f, 0x4c, 0x2f, 0x7d, 0xc1, 0x7c, 0x37, 0x03, - 0xc7, 0x97, 0x91, 0x85, 0x1c, 0xb3, 0x49, 0x6a, 0xe0, 0x4b, 0xe2, 0x4e, 0x5e, 0x12, 0x8f, 0xe1, - 0x38, 0xef, 0xf7, 0x07, 0x2f, 0x81, 0x57, 0x07, 0x12, 0xb8, 0x9b, 0x93, 0xc0, 0x4d, 0x82, 0x74, - 0xc6, 0x70, 0x1f, 0xfa, 0x14, 0xcc, 0x54, 0x6c, 0xd7, 0xdc, 0x34, 0x9b, 0xc4, 0x07, 0xed, 0x65, - 0x32, 0x64, 0x57, 0xcd, 0xae, 0xab, 0x16, 0xc3, 0xee, 0xe4, 0x1a, 0x98, 0x36, 0xad, 0x66, 0x7b, - 0xb7, 0x85, 0x74, 0x64, 0x90, 0x7e, 0x65, 0x52, 0x67, 0x93, 0xc2, 0xad, 0x7d, 0x8f, 0x2d, 0xd9, - 0xdf, 0xda, 0xff, 0xb4, 0xf0, 0x32, 0x0c, 0xcb, 0x02, 0x0e, 0x48, 0x19, 0x61, 0x77, 0x15, 0x61, - 0xd6, 0x62, 0xb2, 0xfa, 0x06, 0x7b, 0xef, 0x85, 0x02, 0x2c, 0x39, 0x9d, 0xff, 0x43, 0x7d, 0xbf, - 0x50, 0x63, 0x1d, 0xc4, 0x50, 0x32, 0x64, 0x96, 0x86, 0x98, 0x24, 0x2b, 0x30, 0x57, 0xae, 0xd4, - 0x35, 0xbd, 0x52, 0x5c, 0xa5, 0x59, 0x64, 0xf5, 0xdf, 0x25, 0xc8, 0xe9, 0xa8, 0xd3, 0xbe, 0xc4, - 0x46, 0x8c, 0xa6, 0x8e, 0xe2, 0x99, 0xc0, 0x51, 0x5c, 0x59, 0x02, 0x30, 0x9a, 0x5e, 0xc1, 0xf8, - 0x4a, 0x2d, 0xa9, 0x6f, 0x1c, 0x53, 0xae, 0x82, 0xc5, 0x20, 0xb7, 0xce, 0xfc, 0xa9, 0xbe, 0x40, - 0x78, 0xe7, 0x88, 0xa3, 0x86, 0x39, 0x8c, 0xe8, 0x13, 0x3e, 0x20, 0xb4, 0xd9, 0x33, 0x90, 0xdc, - 0xe1, 0x88, 0xff, 0x2b, 0x12, 0x64, 0xeb, 0x5e, 0x6f, 0xc9, 0x74, 0x9c, 0x7f, 0x3c, 0x9c, 0x8e, - 0x7b, 0x64, 0x22, 0x74, 0xfc, 0x2e, 0x98, 0x61, 0x35, 0x96, 0xba, 0x4a, 0xc4, 0xaa, 0x38, 0xf7, - 0xc3, 0x30, 0x1a, 0xde, 0x87, 0x9d, 0xc3, 0x11, 0xf1, 0x27, 0x1f, 0x0b, 0xb0, 0x86, 0x76, 0xce, - 0x23, 0xa7, 0xbb, 0x6d, 0x76, 0xd4, 0xbf, 0x97, 0x61, 0x6a, 0x19, 0xb9, 0x35, 0xd7, 0x70, 0x77, - 0xbb, 0x3d, 0xdb, 0x9d, 0x96, 0x5d, 0x32, 0x9a, 0xdb, 0x88, 0x76, 0x47, 0xfe, 0xab, 0xfa, 0x6e, - 0x59, 0xd4, 0x9f, 0x28, 0x2c, 0x67, 0x3e, 0x28, 0x23, 0x02, 0x93, 0xc7, 0x41, 0xb6, 0x65, 0xb8, - 0x06, 0xc5, 0xe2, 0x8a, 0x1e, 0x2c, 0x42, 0x42, 0x3a, 0xce, 0xa6, 0xbe, 0x5d, 0x12, 0x71, 0x28, - 0x12, 0x28, 0x3f, 0x19, 0x08, 0xef, 0xcf, 0x0c, 0x81, 0xc2, 0x31, 0x98, 0xad, 0x54, 0xeb, 0x8d, - 0xd5, 0xea, 0xf2, 0xb2, 0xe6, 0xa5, 0x16, 0x64, 0xe5, 0x24, 0x28, 0xeb, 0xc5, 0xfb, 0xd6, 0xb4, - 0x4a, 0xbd, 0x51, 0xa9, 0x2e, 0x6a, 0xf4, 0xcf, 0xac, 0x72, 0x14, 0xa6, 0x4b, 0xc5, 0xd2, 0x8a, - 0x9f, 0x90, 0x53, 0x4e, 0xc1, 0xf1, 0x35, 0x6d, 0x6d, 0x41, 0xd3, 0x6b, 0x2b, 0xe5, 0xf5, 0x86, - 0x47, 0x66, 0xa9, 0xba, 0x51, 0x59, 0x2c, 0xe4, 0x15, 0x15, 0x4e, 0x32, 0x5f, 0xce, 0xe9, 0xd5, - 0xca, 0x72, 0xa3, 0x56, 0x2f, 0xd6, 0xb5, 0xc2, 0x84, 0x72, 0x19, 0x1c, 0x2d, 0x15, 0x2b, 0x38, - 0x7b, 0xa9, 0x5a, 0xa9, 0x68, 0xa5, 0x7a, 0x61, 0x52, 0xfd, 0x41, 0x16, 0xa6, 0xcb, 0xdd, 0x8a, - 0xb1, 0x83, 0xce, 0x1a, 0x6d, 0xb3, 0xa5, 0x3e, 0x9f, 0x99, 0x79, 0x5c, 0x07, 0xb3, 0x0e, 0x79, - 0x44, 0xad, 0xba, 0x89, 0x08, 0x9a, 0xb3, 0x3a, 0x9f, 0xe8, 0xcd, 0xc9, 0x2d, 0x4c, 0xc0, 0x9f, - 0x93, 0x93, 0x37, 0x65, 0x01, 0x80, 0x3c, 0xd5, 0xc3, 0xcb, 0x5d, 0xcf, 0xf4, 0xb6, 0x26, 0x63, - 0x07, 0x75, 0x91, 0xb3, 0x67, 0x36, 0x91, 0x9f, 0x53, 0x67, 0xfe, 0x52, 0xbf, 0x2a, 0x8b, 0xee, - 0x2f, 0x32, 0xa0, 0x32, 0xd5, 0x89, 0xe8, 0x0d, 0x7f, 0x51, 0x16, 0xd9, 0x1d, 0x14, 0x22, 0x99, - 0x4c, 0x53, 0x5e, 0x24, 0x0d, 0xb7, 0x6c, 0x5b, 0xaf, 0x56, 0x1b, 0xb5, 0x95, 0xaa, 0x5e, 0x2f, - 0xc8, 0xca, 0x0c, 0x4c, 0x7a, 0xaf, 0xab, 0xd5, 0xca, 0x72, 0x21, 0xab, 0x9c, 0x80, 0x63, 0x2b, - 0xc5, 0x5a, 0xa3, 0x5c, 0x39, 0x5b, 0x5c, 0x2d, 0x2f, 0x36, 0x4a, 0x2b, 0x45, 0xbd, 0x56, 0xc8, - 0x29, 0x57, 0xc0, 0x89, 0x7a, 0x59, 0xd3, 0x1b, 0x4b, 0x5a, 0xb1, 0xbe, 0xa1, 0x6b, 0xb5, 0x46, - 0xa5, 0xda, 0xa8, 0x14, 0xd7, 0xb4, 0x42, 0xde, 0x6b, 0xfe, 0xf8, 0x53, 0xa8, 0x36, 0x13, 0xfb, - 0x95, 0x71, 0x32, 0x42, 0x19, 0xa7, 0x7a, 0x95, 0x11, 0x58, 0xb5, 0xd2, 0xb5, 0x9a, 0xa6, 0x9f, - 0xd5, 0x0a, 0xd3, 0xfd, 0x74, 0x6d, 0x46, 0x39, 0x0e, 0x05, 0x8f, 0x87, 0x46, 0xb9, 0xe6, 0xe7, - 0x5c, 0x2c, 0xcc, 0xaa, 0x9f, 0xc8, 0xc3, 0x49, 0x1d, 0x6d, 0x99, 0x5d, 0x17, 0x39, 0xeb, 0xc6, - 0xa5, 0x1d, 0x64, 0xb9, 0x7e, 0x27, 0xff, 0x3f, 0x13, 0x2b, 0xe3, 0x1a, 0xcc, 0x76, 0x08, 0x8d, - 0x35, 0xe4, 0x6e, 0xdb, 0x2d, 0x3a, 0x0a, 0x3f, 0x26, 0xb2, 0xe7, 0x98, 0x5f, 0x67, 0xb3, 0xeb, - 0xfc, 0xdf, 0x8c, 0x6e, 0xcb, 0x31, 0xba, 0x9d, 0x1d, 0x46, 0xb7, 0x95, 0xab, 0x60, 0x6a, 0xb7, - 0x8b, 0x1c, 0x6d, 0xc7, 0x30, 0xdb, 0xfe, 0xe5, 0x9c, 0x41, 0x82, 0xfa, 0x8e, 0xac, 0xe8, 0x89, - 0x15, 0xa6, 0x2e, 0xfd, 0xc5, 0x18, 0xd1, 0xb7, 0x9e, 0x06, 0xa0, 0x95, 0xdd, 0x70, 0xda, 0x54, - 0x59, 0x99, 0x14, 0x8f, 0xbf, 0xf3, 0x66, 0xbb, 0x6d, 0x5a, 0x5b, 0xc1, 0xbe, 0x7f, 0x98, 0xa0, - 0xbe, 0x48, 0x16, 0x39, 0xc1, 0x92, 0x94, 0xb7, 0x64, 0xad, 0xe9, 0x05, 0xd2, 0x98, 0xfb, 0xdd, - 0xfd, 0x4d, 0x27, 0xaf, 0x14, 0x60, 0x06, 0xa7, 0xd1, 0x16, 0x58, 0x98, 0xf0, 0xfa, 0x60, 0x9f, - 0xdc, 0x9a, 0x56, 0x5f, 0xa9, 0x2e, 0x06, 0xdf, 0x26, 0x3d, 0x92, 0x1e, 0x33, 0xc5, 0xca, 0x7d, - 0xb8, 0x35, 0x4e, 0x29, 0x8f, 0x82, 0x2b, 0x98, 0x0e, 0xbb, 0xb8, 0xaa, 0x6b, 0xc5, 0xc5, 0xfb, - 0x1a, 0xda, 0xd3, 0xca, 0xb5, 0x7a, 0x8d, 0x6f, 0x5c, 0x7e, 0x3b, 0x9a, 0xf6, 0xf8, 0xd5, 0xd6, - 0x8a, 0xe5, 0x55, 0xda, 0xbf, 0x2f, 0x55, 0xf5, 0xb5, 0x62, 0xbd, 0x30, 0xa3, 0xbe, 0x5c, 0x86, - 0xc2, 0x32, 0x72, 0xd7, 0x6d, 0xc7, 0x35, 0xda, 0xab, 0xa6, 0x75, 0x61, 0xc3, 0x69, 0x73, 0x93, - 0x4d, 0xe1, 0x30, 0x1d, 0xfc, 0x10, 0xc9, 0x11, 0x8c, 0xde, 0x11, 0xef, 0xe0, 0x6c, 0xa1, 0x32, - 0x85, 0x09, 0xea, 0x33, 0x25, 0x91, 0xe5, 0x6e, 0xf1, 0x52, 0x93, 0xe9, 0xc9, 0xb3, 0xc6, 0x3d, - 0x3e, 0xf7, 0x41, 0x2d, 0xaf, 0x3e, 0x37, 0x0b, 0x93, 0x4b, 0xa6, 0x65, 0xb4, 0xcd, 0x67, 0x70, - 0xf1, 0x4b, 0xc3, 0x3e, 0x26, 0x13, 0xd3, 0xc7, 0x48, 0x43, 0x8d, 0x9f, 0xbf, 0x26, 0x8b, 0x2e, - 0x2f, 0x30, 0xb2, 0xf7, 0x99, 0x8c, 0x18, 0x3c, 0x3f, 0x2c, 0x89, 0x2c, 0x2f, 0x0c, 0xa6, 0x97, - 0x0c, 0xc3, 0x4f, 0xfd, 0x70, 0xd8, 0x58, 0x3d, 0xed, 0x7b, 0xb2, 0x9f, 0x2a, 0x4c, 0xa9, 0x7f, - 0x2e, 0x83, 0xba, 0x8c, 0xdc, 0xb3, 0xc8, 0x09, 0xa6, 0x02, 0xb8, 0xd7, 0xa7, 0xf6, 0x36, 0xd3, - 0x64, 0xdf, 0xcc, 0x02, 0x78, 0x8e, 0x07, 0xb0, 0x18, 0xd3, 0x78, 0x22, 0x48, 0x47, 0x34, 0xde, - 0x32, 0xe4, 0xbb, 0xf8, 0x3b, 0x55, 0xb3, 0xc7, 0x47, 0x0f, 0x97, 0x98, 0x18, 0x4b, 0x9d, 0x10, - 0xd6, 0x29, 0x01, 0xf5, 0x7b, 0xc1, 0x24, 0xe8, 0xa7, 0x39, 0xed, 0x58, 0x3a, 0x30, 0xb3, 0xc9, - 0xf4, 0xc5, 0x49, 0x57, 0x5d, 0xfa, 0xd9, 0x37, 0xea, 0x87, 0x73, 0x70, 0xbc, 0x5f, 0x75, 0xd4, - 0xdf, 0xc9, 0x70, 0x3b, 0xec, 0x08, 0x0f, 0xf9, 0x19, 0xba, 0x81, 0xe8, 0xbd, 0x28, 0x4f, 0x84, - 0x13, 0xc1, 0x32, 0x5c, 0xdd, 0xae, 0xa0, 0x8b, 0xdd, 0x36, 0x72, 0x5d, 0xe4, 0xe0, 0xaa, 0x4d, - 0xea, 0xfd, 0x3f, 0x2a, 0x4f, 0x86, 0xcb, 0x4d, 0xab, 0x6b, 0xb6, 0x90, 0x53, 0x37, 0x3b, 0xdd, - 0xa2, 0xd5, 0xaa, 0xef, 0xba, 0xb6, 0x63, 0x1a, 0xf4, 0x2a, 0xc9, 0x49, 0x3d, 0xea, 0xb3, 0x72, - 0x23, 0x14, 0xcc, 0x6e, 0xd5, 0x3a, 0x6f, 0x1b, 0x4e, 0xcb, 0xb4, 0xb6, 0x56, 0xcd, 0xae, 0x4b, - 0x3d, 0x80, 0xf7, 0xa5, 0xab, 0xff, 0x20, 0x8b, 0x1e, 0xa6, 0x1b, 0x00, 0x6b, 0x44, 0x87, 0xf2, - 0x3c, 0x59, 0xe4, 0x78, 0x5c, 0x32, 0xda, 0xc9, 0x94, 0xe5, 0x39, 0xe3, 0x36, 0x24, 0xfa, 0x8f, - 0xe0, 0xb8, 0x6b, 0x21, 0xe9, 0xbe, 0x21, 0x70, 0x56, 0xd3, 0xcb, 0x4b, 0x65, 0xcd, 0x33, 0x2b, - 0x4e, 0xc0, 0xb1, 0xf0, 0xdb, 0xe2, 0x7d, 0x8d, 0x9a, 0x56, 0xa9, 0x17, 0x26, 0xbd, 0x7e, 0x8a, - 0x24, 0x2f, 0x15, 0xcb, 0xab, 0xda, 0x62, 0xa3, 0x5e, 0xf5, 0xbe, 0x2c, 0x0e, 0x67, 0x5a, 0xa8, - 0x0f, 0x66, 0xe1, 0x28, 0x96, 0xed, 0x25, 0x2c, 0x55, 0x4f, 0x28, 0x3d, 0xbe, 0xb6, 0x01, 0x40, - 0x53, 0x44, 0xbc, 0xea, 0x67, 0x85, 0x6f, 0xca, 0x64, 0x20, 0xec, 0x29, 0x23, 0x42, 0x33, 0xbe, - 0x2b, 0x89, 0x44, 0xa8, 0x10, 0x26, 0x9b, 0x4c, 0x29, 0xfe, 0x75, 0xdc, 0x23, 0x4e, 0x34, 0xf8, - 0xd8, 0xca, 0x2c, 0xe1, 0x9f, 0x9f, 0xb6, 0x5e, 0xd6, 0xb1, 0x3a, 0xcc, 0x01, 0xe0, 0x14, 0xac, - 0x41, 0x44, 0x0f, 0xfa, 0x8e, 0x57, 0x51, 0x7a, 0x50, 0x2c, 0xd5, 0xcb, 0x67, 0xb5, 0x28, 0x3d, - 0xf8, 0x8c, 0x0c, 0x93, 0xcb, 0xc8, 0xf5, 0xe6, 0x54, 0x5d, 0xf5, 0x29, 0x02, 0xeb, 0x3f, 0x9e, - 0x19, 0xd3, 0xb6, 0x9b, 0x46, 0x3b, 0x58, 0x06, 0x20, 0x6f, 0xea, 0xb3, 0x87, 0x31, 0x41, 0xfc, - 0xa2, 0x23, 0xc6, 0xab, 0x9f, 0x84, 0x9c, 0xeb, 0x7d, 0xa6, 0xcb, 0xd0, 0x3f, 0x16, 0x39, 0x5c, - 0x79, 0x44, 0x16, 0x0d, 0xd7, 0xd0, 0x49, 0x7e, 0x66, 0x74, 0x12, 0xb4, 0x5d, 0x22, 0x18, 0xf9, - 0x61, 0xb4, 0x3f, 0xff, 0x4e, 0x86, 0x13, 0xa4, 0x7d, 0x14, 0x3b, 0x9d, 0x9a, 0x6b, 0x3b, 0x48, - 0x47, 0x4d, 0x64, 0x76, 0xdc, 0x9e, 0xf5, 0x3d, 0x87, 0xa4, 0xfa, 0x9b, 0xcd, 0xf4, 0x55, 0x7d, - 0x83, 0x2c, 0x1a, 0x83, 0x79, 0x5f, 0x7b, 0xec, 0x29, 0x2f, 0xa2, 0xb1, 0x7f, 0x5c, 0x12, 0x89, - 0xaa, 0x9c, 0x90, 0x78, 0x32, 0xa0, 0x3e, 0x72, 0x08, 0x40, 0xf9, 0x2b, 0x37, 0xba, 0x56, 0xd2, - 0xca, 0xeb, 0xde, 0x20, 0x70, 0x35, 0x5c, 0xb9, 0xbe, 0xa1, 0x97, 0x56, 0x8a, 0x35, 0xad, 0xa1, - 0x6b, 0xcb, 0xe5, 0x5a, 0x9d, 0x3a, 0x65, 0x91, 0xbf, 0x26, 0x94, 0xab, 0xe0, 0x54, 0x6d, 0x63, - 0xa1, 0x56, 0xd2, 0xcb, 0xeb, 0x38, 0x5d, 0xd7, 0x2a, 0xda, 0x39, 0xfa, 0x75, 0x52, 0xfd, 0x60, - 0x01, 0xa6, 0xbd, 0x09, 0x40, 0x8d, 0xcc, 0x0b, 0xd4, 0x6f, 0x65, 0x61, 0x5a, 0x47, 0x5d, 0xbb, - 0xbd, 0x87, 0xe7, 0x08, 0xe3, 0x9a, 0x7a, 0x7c, 0x47, 0x16, 0x3d, 0xbf, 0xcd, 0x30, 0x3b, 0xcf, - 0x30, 0x1a, 0x3d, 0xd1, 0x34, 0xf6, 0x0c, 0xb3, 0x6d, 0x9c, 0xa7, 0x5d, 0xcd, 0xa4, 0x1e, 0x26, - 0x28, 0xf3, 0xa0, 0xd8, 0x17, 0x2d, 0xe4, 0xd4, 0x9a, 0x17, 0x35, 0x77, 0xbb, 0xd8, 0x6a, 0x39, - 0xa8, 0xdb, 0xa5, 0xab, 0x17, 0x7d, 0xbe, 0x28, 0x37, 0xc0, 0x51, 0x9c, 0xca, 0x64, 0x26, 0x0e, - 0x32, 0xbd, 0xc9, 0x41, 0xce, 0xa2, 0x75, 0xc9, 0xcf, 0x99, 0x63, 0x72, 0x86, 0xc9, 0xec, 0x71, - 0x89, 0x3c, 0x7f, 0x4a, 0xe7, 0x1a, 0x98, 0xb6, 0x8c, 0x1d, 0xa4, 0x3d, 0xd0, 0x31, 0x1d, 0xd4, - 0xc5, 0x8e, 0x31, 0xb2, 0xce, 0x26, 0xa9, 0x1f, 0x16, 0x3a, 0x6f, 0x2e, 0x26, 0xb1, 0x64, 0xba, - 0xbf, 0x3c, 0x84, 0xea, 0xf7, 0xe9, 0x67, 0x64, 0xf5, 0x83, 0x32, 0xcc, 0x50, 0xa6, 0x8a, 0xd6, - 0xa5, 0x72, 0x4b, 0xbd, 0x9a, 0x33, 0x7e, 0x0d, 0x2f, 0xcd, 0x37, 0x7e, 0xf1, 0x8b, 0xfa, 0x4b, - 0xb2, 0xa8, 0xbb, 0x73, 0x9f, 0x8a, 0xe3, 0x32, 0xa2, 0x1d, 0x47, 0x37, 0xed, 0x5d, 0xea, 0xa8, - 0x3a, 0xa9, 0x93, 0x97, 0x34, 0x17, 0xf5, 0xd4, 0xdf, 0x17, 0x72, 0xa6, 0x16, 0xac, 0xc6, 0x21, - 0x01, 0xf8, 0x49, 0x19, 0xe6, 0x28, 0x57, 0x35, 0x7a, 0xce, 0x47, 0xe8, 0xc0, 0xdb, 0xaf, 0x08, - 0x1b, 0x82, 0x7d, 0xea, 0x4f, 0x4b, 0x7a, 0xc4, 0x00, 0xf9, 0x51, 0xa1, 0xe0, 0x68, 0xc2, 0x15, - 0x39, 0x24, 0x28, 0xdf, 0x99, 0x85, 0xe9, 0x8d, 0x2e, 0x72, 0xa8, 0xdf, 0xbe, 0xfa, 0x50, 0x16, - 0xe4, 0x65, 0xc4, 0x6d, 0xa4, 0xbe, 0x50, 0xd8, 0xc3, 0x97, 0xad, 0x2c, 0x43, 0xd4, 0xb3, 0x91, - 0x22, 0x60, 0xbb, 0x1e, 0xe6, 0x88, 0x48, 0x8b, 0xae, 0xeb, 0x19, 0x89, 0xbe, 0x37, 0x6d, 0x4f, - 0xea, 0x28, 0xb6, 0x8a, 0x70, 0x59, 0x5e, 0x96, 0x92, 0xc7, 0xd3, 0x2a, 0xda, 0x24, 0xf3, 0xd9, - 0xac, 0xde, 0x93, 0xaa, 0xdc, 0x02, 0x97, 0xd9, 0x1d, 0x44, 0xce, 0xaf, 0x30, 0x99, 0x73, 0x38, - 0x73, 0xbf, 0x4f, 0xea, 0xb7, 0x84, 0x7c, 0x75, 0xc5, 0xa5, 0x93, 0x4c, 0x17, 0x3a, 0xa3, 0x31, - 0x49, 0x8e, 0x43, 0xc1, 0xcb, 0x81, 0xf7, 0x5f, 0x74, 0xad, 0x56, 0x5d, 0x3d, 0xab, 0xf5, 0x5f, - 0xc6, 0xc8, 0xa9, 0xcf, 0x91, 0x61, 0x6a, 0xc1, 0xb1, 0x8d, 0x56, 0xd3, 0xe8, 0xba, 0xea, 0xf7, - 0x24, 0x98, 0x59, 0x37, 0x2e, 0xb5, 0x6d, 0xa3, 0x85, 0xfd, 0xfb, 0x7b, 0xfa, 0x82, 0x0e, 0xf9, - 0xe4, 0xf7, 0x05, 0xf4, 0x95, 0x3f, 0x18, 0x18, 0x1c, 0xdd, 0xcb, 0x88, 0x5c, 0xa8, 0x19, 0x6c, - 0xf3, 0x49, 0xfd, 0x82, 0x95, 0xfa, 0x7c, 0xcd, 0xb3, 0x3c, 0x45, 0x58, 0x94, 0x1f, 0x14, 0x0b, - 0x3f, 0x2a, 0x42, 0xf2, 0x70, 0x76, 0xe5, 0x9f, 0x3b, 0x09, 0xf9, 0x45, 0x84, 0xad, 0xb8, 0xff, - 0x2e, 0xc1, 0x44, 0x0d, 0xb9, 0xd8, 0x82, 0xbb, 0x8d, 0xf3, 0x14, 0x6e, 0xe1, 0x0c, 0xa1, 0x13, - 0xbb, 0xff, 0xee, 0x4d, 0xd6, 0x99, 0xf3, 0xd6, 0xf8, 0x39, 0x81, 0x47, 0x22, 0x29, 0x77, 0x9e, - 0x96, 0x79, 0x20, 0x8f, 0xc4, 0x58, 0x52, 0xe9, 0xfb, 0x5a, 0xbd, 0x5b, 0xa2, 0xae, 0x55, 0x4c, - 0xaf, 0xf7, 0x1a, 0x56, 0x3f, 0x63, 0xbd, 0xcd, 0x28, 0xf3, 0x31, 0xce, 0x51, 0x4f, 0x80, 0x09, - 0x22, 0x73, 0x7f, 0x3e, 0xda, 0xeb, 0xa7, 0x40, 0x48, 0xe0, 0xb3, 0xd7, 0x7e, 0x4e, 0x41, 0x17, - 0xb5, 0xe8, 0xc2, 0xc7, 0x12, 0x83, 0x60, 0xa6, 0x82, 0xdc, 0x8b, 0xb6, 0x73, 0xa1, 0xe6, 0x1a, - 0x2e, 0x52, 0xff, 0x55, 0x02, 0xb9, 0x86, 0x5c, 0x36, 0xfa, 0x49, 0x05, 0x8e, 0x91, 0x0a, 0xd1, - 0x8c, 0xb8, 0xff, 0x26, 0x15, 0xb9, 0xa6, 0xaf, 0x10, 0x98, 0x7c, 0xfa, 0xfe, 0x5f, 0xd5, 0xdf, - 0xe8, 0x1b, 0xf4, 0x49, 0xea, 0x33, 0x69, 0xa0, 0x92, 0x61, 0x19, 0xf4, 0x14, 0x2c, 0x42, 0x4f, - 0x3f, 0x24, 0x64, 0x56, 0x8b, 0xd1, 0x3c, 0x9c, 0xae, 0xe0, 0xa3, 0x57, 0x40, 0xb6, 0xb4, 0x6d, - 0xb8, 0xea, 0xbb, 0x64, 0x80, 0x62, 0xab, 0xb5, 0x46, 0x7c, 0xc0, 0x59, 0x87, 0xb4, 0x33, 0x30, - 0xd3, 0xdc, 0x36, 0xc2, 0xbb, 0x4d, 0x48, 0x7f, 0xc0, 0xa5, 0x29, 0x4f, 0x0c, 0x9d, 0xc9, 0x89, - 0x54, 0xd5, 0x1e, 0x98, 0xbc, 0x32, 0x28, 0xed, 0xc0, 0xd1, 0x9c, 0x0f, 0x85, 0x19, 0x7b, 0x84, - 0xce, 0xfb, 0x7d, 0x3e, 0x64, 0x2f, 0x7a, 0x0e, 0x47, 0x49, 0x07, 0x07, 0x6c, 0xc2, 0x84, 0x84, - 0x27, 0xbd, 0xc5, 0x02, 0x7a, 0xc4, 0xf3, 0x35, 0x96, 0xd0, 0xb5, 0x8a, 0xd6, 0x32, 0x7d, 0xd1, - 0xd2, 0x80, 0x59, 0xea, 0x0b, 0x32, 0xc9, 0xe0, 0x8b, 0x17, 0xdc, 0xdd, 0x30, 0x8b, 0x5a, 0xa6, - 0x8b, 0xfc, 0x5a, 0x52, 0x01, 0xc6, 0x41, 0xcc, 0xff, 0xa0, 0x3e, 0x4b, 0x38, 0xe8, 0x1a, 0x16, - 0xe8, 0xfe, 0x1a, 0x45, 0xb4, 0x3f, 0xb1, 0x30, 0x6a, 0x62, 0x34, 0xd3, 0x07, 0xeb, 0xd9, 0x32, - 0x9c, 0xa8, 0xdb, 0x5b, 0x5b, 0x6d, 0xe4, 0x8b, 0x09, 0x11, 0xef, 0x4c, 0xd5, 0x18, 0x25, 0x5c, - 0x78, 0x27, 0xc8, 0xbe, 0xdf, 0x0c, 0x8e, 0x92, 0x79, 0x2f, 0xfc, 0x89, 0xa9, 0xd8, 0x59, 0x14, - 0x16, 0x57, 0x5f, 0x3e, 0x23, 0x50, 0x10, 0x0b, 0xf8, 0x2c, 0x4c, 0x36, 0x7d, 0x20, 0xbe, 0x28, - 0xc1, 0x2c, 0xb9, 0xb9, 0xd2, 0x57, 0xd0, 0x7b, 0x47, 0x08, 0x80, 0xfa, 0xbd, 0x8c, 0xa8, 0x9f, - 0x2d, 0x96, 0x09, 0xc7, 0x49, 0x84, 0x88, 0xc5, 0x82, 0xaa, 0x0c, 0x24, 0x97, 0xbe, 0x68, 0xff, - 0x44, 0x86, 0xe9, 0x65, 0xe4, 0xb7, 0xb4, 0x6e, 0xe2, 0x9e, 0xe8, 0x0c, 0xcc, 0xe0, 0xeb, 0xdb, - 0xaa, 0xf4, 0x98, 0x24, 0x59, 0x35, 0xe3, 0xd2, 0x94, 0xeb, 0x60, 0xf6, 0x3c, 0xda, 0xb4, 0x1d, - 0x54, 0xe5, 0xce, 0x52, 0xf2, 0x89, 0x11, 0xe1, 0xe9, 0xb8, 0x38, 0x68, 0x0b, 0x3c, 0x36, 0x37, - 0xed, 0x17, 0x26, 0x53, 0x95, 0x88, 0x31, 0xe7, 0x49, 0x30, 0x49, 0x91, 0xf7, 0xcd, 0xb4, 0xb8, - 0x7e, 0x31, 0xc8, 0xab, 0xbe, 0x3e, 0x40, 0x54, 0xe3, 0x10, 0x7d, 0x7c, 0x12, 0x26, 0xc6, 0x72, - 0xbf, 0x7b, 0x81, 0x29, 0x7f, 0xe1, 0x52, 0xb9, 0xd5, 0x55, 0xd7, 0x92, 0x61, 0x7a, 0x1a, 0x20, - 0x68, 0x1c, 0x7e, 0x58, 0x0b, 0x26, 0x85, 0x8f, 0x5c, 0x1f, 0x7b, 0x50, 0xaf, 0x57, 0x1c, 0x98, - 0x9d, 0x11, 0x03, 0x23, 0x76, 0xc0, 0x4f, 0x84, 0x93, 0xf4, 0xd1, 0xf9, 0xb4, 0x0c, 0x27, 0x82, - 0xf3, 0x47, 0xab, 0x46, 0x37, 0x6c, 0x77, 0xa5, 0x64, 0x10, 0x71, 0x07, 0x3e, 0x82, 0xc6, 0xf2, - 0xed, 0x64, 0x63, 0x46, 0x5f, 0x4e, 0x46, 0x8b, 0x8e, 0x72, 0x13, 0x1c, 0xb3, 0x76, 0x77, 0x02, - 0xa9, 0xe3, 0x16, 0x4f, 0x5b, 0xf8, 0xfe, 0x0f, 0x49, 0x46, 0x26, 0x11, 0xe6, 0xc7, 0x32, 0xa7, - 0xe4, 0x8e, 0x74, 0x3d, 0x2e, 0x11, 0x8c, 0xea, 0xbf, 0x64, 0x12, 0xf5, 0x6e, 0x83, 0xcf, 0x7c, - 0x25, 0xe8, 0xa5, 0x0e, 0xf1, 0xc0, 0xd7, 0x99, 0x09, 0xc8, 0x69, 0x3b, 0x1d, 0xf7, 0xd2, 0x99, - 0x47, 0xc3, 0x6c, 0xcd, 0x75, 0x90, 0xb1, 0xc3, 0xec, 0x0c, 0xb8, 0xf6, 0x05, 0x64, 0xf9, 0x3b, - 0x03, 0xf8, 0xe5, 0xf6, 0xdb, 0x60, 0xc2, 0xb2, 0x1b, 0xc6, 0xae, 0xbb, 0xad, 0x5c, 0xbd, 0xef, - 0x48, 0x3d, 0x05, 0xbf, 0x4a, 0x63, 0x18, 0x7d, 0xf5, 0x0e, 0xbc, 0x36, 0x9c, 0xb7, 0xec, 0xe2, - 0xae, 0xbb, 0xbd, 0x70, 0xd5, 0x27, 0xff, 0xf6, 0x74, 0xe6, 0x33, 0x7f, 0x7b, 0x3a, 0xf3, 0x95, - 0xbf, 0x3d, 0x9d, 0xf9, 0x95, 0xaf, 0x9d, 0x3e, 0xf2, 0x99, 0xaf, 0x9d, 0x3e, 0xf2, 0xc5, 0xaf, - 0x9d, 0x3e, 0xf2, 0xd3, 0x52, 0xe7, 0xfc, 0xf9, 0x3c, 0xa6, 0xf2, 0x84, 0xff, 0x3f, 0x00, 0x00, - 0xff, 0xff, 0x23, 0x5a, 0xda, 0x98, 0x9f, 0x01, 0x02, 0x00, + 0x77, 0xda, 0x8d, 0xf7, 0xa4, 0xaa, 0xff, 0x9c, 0x11, 0xdd, 0xc5, 0xa5, 0x4b, 0x86, 0x94, 0x9b, + 0x88, 0x56, 0x2a, 0xb6, 0x23, 0x1b, 0x4b, 0x2a, 0xfd, 0x8d, 0xae, 0xb7, 0x4b, 0x00, 0x1b, 0x56, + 0xd7, 0x97, 0xeb, 0x63, 0x13, 0xc8, 0x55, 0xfd, 0xd7, 0x4c, 0xb2, 0x59, 0x4c, 0x58, 0x4e, 0x84, + 0xc4, 0x7e, 0x33, 0xc1, 0xda, 0x42, 0x24, 0xb1, 0xf4, 0x65, 0xf6, 0xd5, 0x39, 0xc8, 0x9f, 0x33, + 0xda, 0x6d, 0xe4, 0xaa, 0x5f, 0x93, 0x20, 0x5f, 0x72, 0x90, 0xe1, 0x22, 0x56, 0x74, 0x2a, 0x4c, + 0x3a, 0xb6, 0xed, 0xae, 0x1b, 0xee, 0x36, 0x95, 0x5b, 0xf0, 0x4e, 0x1d, 0x06, 0x7e, 0x9b, 0xed, + 0x3e, 0xee, 0xe2, 0x45, 0xf7, 0xe3, 0x5c, 0x6d, 0x49, 0x41, 0xf3, 0xa4, 0x90, 0x88, 0xfe, 0x43, + 0x85, 0xc9, 0x1d, 0x0b, 0xed, 0xd8, 0x96, 0xd9, 0xf4, 0x6d, 0x4e, 0xff, 0x5d, 0xfd, 0x70, 0x20, + 0xd3, 0x05, 0x4e, 0xa6, 0xf3, 0xc2, 0xa5, 0x24, 0x13, 0x68, 0x6d, 0x88, 0xde, 0xe3, 0x6a, 0xb8, + 0x92, 0x74, 0x06, 0x8d, 0x7a, 0xb5, 0x51, 0xd2, 0xb5, 0x62, 0x5d, 0x6b, 0xac, 0x56, 0x4b, 0xc5, + 0xd5, 0x86, 0xae, 0xad, 0x57, 0x0b, 0x48, 0xfd, 0x07, 0xc9, 0x13, 0x6e, 0xd3, 0xde, 0x43, 0x8e, + 0xba, 0x2c, 0x24, 0xe7, 0x38, 0x99, 0x50, 0x0c, 0x7e, 0x45, 0xd8, 0x69, 0x83, 0x4a, 0x87, 0x72, + 0x10, 0xa1, 0xbc, 0x1f, 0x11, 0x6a, 0xee, 0xb1, 0xa4, 0x1e, 0x01, 0x92, 0xfe, 0x1f, 0x12, 0x4c, + 0x94, 0x6c, 0x6b, 0x0f, 0x39, 0x2e, 0x3b, 0xdf, 0x61, 0xa5, 0x99, 0xe1, 0xa5, 0xe9, 0x0d, 0x92, + 0xc8, 0x72, 0x1d, 0xbb, 0xe3, 0x4f, 0x78, 0xfc, 0x57, 0xf5, 0x8d, 0x49, 0x25, 0x4c, 0x4b, 0x8e, + 0x5e, 0xf8, 0xec, 0x5f, 0x10, 0xc7, 0x9e, 0xdc, 0xd3, 0x00, 0x1e, 0x4a, 0x82, 0x4b, 0x7f, 0x06, + 0xd2, 0xef, 0x52, 0xbe, 0x2c, 0xc3, 0x2c, 0x69, 0x7c, 0x35, 0x84, 0x2d, 0x34, 0xb5, 0xca, 0x2e, + 0x39, 0xf6, 0x08, 0x7f, 0xe5, 0x08, 0x27, 0xfe, 0xbc, 0xd1, 0xe9, 0x04, 0xcb, 0xcf, 0x2b, 0x47, + 0x74, 0xfa, 0x4e, 0xd4, 0x7c, 0x21, 0x0f, 0x59, 0x63, 0xd7, 0xdd, 0x56, 0xbf, 0x2f, 0x3c, 0xf9, + 0xe4, 0x3a, 0x03, 0xca, 0x4f, 0x04, 0x24, 0xc7, 0x21, 0xe7, 0xda, 0x17, 0x90, 0x2f, 0x07, 0xf2, + 0xe2, 0xc1, 0x61, 0x74, 0x3a, 0x75, 0xfc, 0x81, 0xc2, 0xe1, 0xbf, 0x7b, 0xb6, 0x8e, 0xd1, 0x6c, + 0xda, 0xbb, 0x96, 0x5b, 0xf6, 0x97, 0xa0, 0xc3, 0x04, 0xf5, 0x0b, 0x19, 0x91, 0xc9, 0xac, 0x00, + 0x83, 0xc9, 0x20, 0x3b, 0x3f, 0x44, 0x53, 0x9a, 0x87, 0x1b, 0x8b, 0xeb, 0xeb, 0x8d, 0x7a, 0xf5, + 0x5e, 0xad, 0x12, 0x1a, 0x9e, 0x8d, 0x72, 0xa5, 0x51, 0x5f, 0xd1, 0x1a, 0xa5, 0x0d, 0x1d, 0xaf, + 0x13, 0x16, 0x4b, 0xa5, 0xea, 0x46, 0xa5, 0x5e, 0x40, 0xea, 0x5b, 0x24, 0x98, 0x29, 0xb5, 0xed, + 0x6e, 0x80, 0xf0, 0xd5, 0x21, 0xc2, 0x81, 0x18, 0x33, 0x8c, 0x18, 0xd5, 0x7f, 0xcf, 0x88, 0x3a, + 0x1d, 0xf8, 0x02, 0x61, 0xc8, 0x47, 0xf4, 0x52, 0x6f, 0x14, 0x72, 0x3a, 0x18, 0x4c, 0x2f, 0xfd, + 0x26, 0xf1, 0xc6, 0xbb, 0x61, 0xa2, 0x48, 0x14, 0x43, 0xfd, 0xdb, 0x0c, 0xe4, 0x4b, 0xb6, 0xb5, + 0x69, 0x6e, 0x79, 0xc6, 0x1c, 0xb2, 0x8c, 0xf3, 0x6d, 0xb4, 0x68, 0xb8, 0xc6, 0x9e, 0x89, 0x2e, + 0xe2, 0x0a, 0x4c, 0xea, 0x3d, 0xa9, 0x1e, 0x53, 0x34, 0x05, 0x9d, 0xdf, 0xdd, 0xc2, 0x4c, 0x4d, + 0xea, 0x6c, 0x92, 0xf2, 0x64, 0xb8, 0x9c, 0xbc, 0xae, 0x3b, 0xc8, 0x41, 0x6d, 0x64, 0x74, 0x91, + 0x37, 0x2d, 0xb2, 0x50, 0x1b, 0x2b, 0xed, 0xa4, 0x1e, 0xf5, 0x59, 0x39, 0x03, 0x33, 0xe4, 0x13, + 0x36, 0x45, 0xba, 0x58, 0x8d, 0x27, 0x75, 0x2e, 0x4d, 0x79, 0x1c, 0xe4, 0xd0, 0x03, 0xae, 0x63, + 0x9c, 0x6a, 0x61, 0xbc, 0x2e, 0x9f, 0x27, 0x5e, 0x87, 0xf3, 0xbe, 0xd7, 0xe1, 0x7c, 0x0d, 0xfb, + 0x24, 0xea, 0x24, 0x97, 0xfa, 0xca, 0xc9, 0xc0, 0x90, 0xf8, 0x81, 0x14, 0x2a, 0x86, 0x02, 0x59, + 0xcb, 0xd8, 0x41, 0x54, 0x2f, 0xf0, 0xb3, 0x72, 0x23, 0x1c, 0x35, 0xf6, 0x0c, 0xd7, 0x70, 0x56, + 0xed, 0xa6, 0xd1, 0xc6, 0x83, 0x9f, 0xdf, 0xf2, 0x7b, 0x3f, 0xe0, 0x1d, 0x21, 0xd7, 0x76, 0x10, + 0xce, 0xe5, 0xef, 0x08, 0xf9, 0x09, 0x1e, 0x75, 0xb3, 0x69, 0x5b, 0x98, 0x7f, 0x59, 0xc7, 0xcf, + 0x9e, 0x54, 0x5a, 0x66, 0xd7, 0xab, 0x08, 0xa6, 0x52, 0x21, 0x5b, 0x1b, 0xb5, 0x4b, 0x56, 0x13, + 0xef, 0x06, 0x4d, 0xea, 0x51, 0x9f, 0x95, 0x05, 0x98, 0xa6, 0x1b, 0x21, 0x6b, 0x9e, 0x5e, 0xe5, + 0xb1, 0x5e, 0x5d, 0xc3, 0xfb, 0x74, 0x11, 0x3c, 0xe7, 0x2b, 0x61, 0x3e, 0x9d, 0xfd, 0x49, 0xb9, + 0x1b, 0xae, 0xa4, 0xaf, 0xa5, 0xdd, 0xae, 0x6b, 0xef, 0x10, 0xd0, 0x97, 0xcc, 0x36, 0xa9, 0xc1, + 0x04, 0xae, 0x41, 0x5c, 0x16, 0xe5, 0x56, 0x38, 0xde, 0x71, 0xd0, 0x26, 0x72, 0xee, 0x33, 0x76, + 0x76, 0x1f, 0xa8, 0x3b, 0x86, 0xd5, 0xed, 0xd8, 0x8e, 0x7b, 0x6a, 0x12, 0x33, 0xdf, 0xf7, 0x1b, + 0xed, 0x28, 0x27, 0x21, 0x4f, 0xc4, 0xa7, 0xbe, 0x28, 0x27, 0xec, 0xce, 0x49, 0x2b, 0x14, 0x6b, + 0x9e, 0xdd, 0x02, 0x13, 0xb4, 0x87, 0xc3, 0x40, 0x4d, 0xdf, 0x7a, 0xb2, 0x67, 0x5d, 0x81, 0x52, + 0xd1, 0xfd, 0x6c, 0xca, 0x13, 0x20, 0xdf, 0xc4, 0xd5, 0xc2, 0x98, 0x4d, 0xdf, 0x7a, 0x65, 0xff, + 0x42, 0x71, 0x16, 0x9d, 0x66, 0x55, 0xff, 0x4a, 0x16, 0xf2, 0x00, 0x8d, 0xe3, 0x38, 0x59, 0xab, + 0xfe, 0x86, 0x34, 0x44, 0xb7, 0x79, 0x13, 0xdc, 0x40, 0xfb, 0x44, 0x6a, 0x7f, 0x2c, 0x36, 0x16, + 0x36, 0xfc, 0xc9, 0xa0, 0x67, 0x95, 0xd4, 0xea, 0x45, 0xdd, 0x9b, 0xc9, 0x2f, 0x7a, 0x93, 0xc8, + 0x1b, 0xe1, 0xfa, 0x01, 0xb9, 0xb5, 0x7a, 0xa3, 0x52, 0x5c, 0xd3, 0x0a, 0x9b, 0xbc, 0x6d, 0x53, + 0xab, 0x57, 0xd7, 0x1b, 0xfa, 0x46, 0xa5, 0x52, 0xae, 0x2c, 0x13, 0x62, 0x9e, 0x49, 0x78, 0x32, + 0xcc, 0x70, 0x4e, 0x2f, 0xd7, 0xb5, 0x46, 0xa9, 0x5a, 0x59, 0x2a, 0x2f, 0x17, 0xcc, 0x41, 0x86, + 0xd1, 0xfd, 0xca, 0x35, 0x70, 0x15, 0xc7, 0x49, 0xb9, 0x5a, 0xf1, 0x66, 0xb6, 0xa5, 0x62, 0xa5, + 0xa4, 0x79, 0xd3, 0xd8, 0x0b, 0x8a, 0x0a, 0x27, 0x08, 0xb9, 0xc6, 0x52, 0x79, 0x95, 0xdd, 0x8c, + 0xfa, 0x44, 0x46, 0x39, 0x05, 0x97, 0xb1, 0xdf, 0xca, 0x95, 0xb3, 0xc5, 0xd5, 0xf2, 0x62, 0xe1, + 0x8f, 0x32, 0xca, 0x75, 0x70, 0x35, 0xf7, 0x17, 0xd9, 0x57, 0x6a, 0x94, 0x17, 0x1b, 0x6b, 0xe5, + 0xda, 0x5a, 0xb1, 0x5e, 0x5a, 0x29, 0x7c, 0x12, 0xcf, 0x17, 0x02, 0x03, 0x98, 0x71, 0xcb, 0x7c, + 0x29, 0x3b, 0xa6, 0x17, 0x79, 0x45, 0x7d, 0x6c, 0x5f, 0xd8, 0xe3, 0x6d, 0xd8, 0x8f, 0x05, 0xa3, + 0xc3, 0x22, 0xa7, 0x42, 0xb7, 0x24, 0xa0, 0x95, 0x4c, 0x87, 0xea, 0x43, 0xa8, 0xd0, 0x35, 0x70, + 0x55, 0x45, 0x23, 0x48, 0xe9, 0x5a, 0xa9, 0x7a, 0x56, 0xd3, 0x1b, 0xe7, 0x8a, 0xab, 0xab, 0x5a, + 0xbd, 0xb1, 0x54, 0xd6, 0x6b, 0xf5, 0xc2, 0xa6, 0xfa, 0xaf, 0x52, 0xb0, 0x9a, 0xc3, 0x48, 0xeb, + 0x6f, 0xa5, 0xa4, 0xcd, 0x3a, 0x76, 0xd5, 0xe6, 0x27, 0x20, 0xdf, 0x75, 0x0d, 0x77, 0xb7, 0x4b, + 0x5b, 0xf5, 0xa3, 0xfa, 0xb7, 0xea, 0xf9, 0x1a, 0xce, 0xa4, 0xd3, 0xcc, 0xea, 0x5f, 0x65, 0x92, + 0x34, 0xd3, 0x11, 0x2c, 0xe8, 0x98, 0x43, 0x88, 0xf8, 0x34, 0xa8, 0xbe, 0xb6, 0x97, 0x6b, 0x8d, + 0xe2, 0xaa, 0xae, 0x15, 0x17, 0xef, 0x0b, 0x96, 0x71, 0x90, 0x72, 0x02, 0x8e, 0x6d, 0x54, 0x8a, + 0x0b, 0xab, 0x1a, 0x6e, 0x2e, 0xd5, 0x4a, 0x45, 0x2b, 0x79, 0x72, 0xff, 0x79, 0xbc, 0x69, 0xe2, + 0x59, 0xd0, 0x98, 0x6f, 0xcf, 0xca, 0x61, 0xe4, 0xff, 0x75, 0x61, 0xdf, 0xa2, 0x50, 0xc3, 0x58, + 0x5a, 0xa3, 0xc5, 0xe1, 0x0b, 0x42, 0xee, 0x44, 0x42, 0x9c, 0x24, 0xc3, 0xe3, 0x3f, 0x0f, 0x81, + 0xc7, 0x09, 0x38, 0xc6, 0xe2, 0x81, 0xdd, 0x8a, 0xa2, 0x61, 0xf8, 0x9e, 0x04, 0x13, 0x6b, 0xe6, + 0x16, 0xf6, 0xab, 0x7c, 0x4a, 0x68, 0x4c, 0xcc, 0x81, 0x14, 0xb8, 0xb1, 0x48, 0x66, 0x8b, 0x9b, + 0x3e, 0x4b, 0x7d, 0x97, 0x29, 0xde, 0x99, 0xb8, 0x7f, 0xa1, 0xc5, 0x46, 0xf4, 0x2f, 0x5f, 0x4d, + 0xd4, 0xbf, 0xf4, 0xa7, 0x95, 0x4c, 0xd8, 0xce, 0xc1, 0x84, 0xcd, 0x3a, 0x8f, 0xcc, 0xc0, 0x64, + 0xd0, 0xdb, 0xe3, 0x7d, 0x0c, 0xef, 0xa3, 0x56, 0xa9, 0x6e, 0x2c, 0xaf, 0x34, 0x96, 0x74, 0x4d, + 0xa3, 0x2b, 0x9f, 0x5b, 0xea, 0x3b, 0x24, 0x98, 0xa5, 0xbc, 0x53, 0xa7, 0x80, 0xab, 0x23, 0x41, + 0xa0, 0x82, 0xfe, 0x01, 0x6b, 0xea, 0x2f, 0xf3, 0x82, 0x7e, 0x7c, 0x9c, 0x70, 0x62, 0xbd, 0x02, + 0xde, 0x14, 0x88, 0xfb, 0x1e, 0x4e, 0xdc, 0x4f, 0x4a, 0x4c, 0x31, 0x7d, 0x73, 0xff, 0x59, 0x53, + 0x90, 0xaf, 0xa1, 0x36, 0x6a, 0xba, 0xea, 0xdb, 0xa4, 0xa1, 0x74, 0x36, 0xce, 0x74, 0x95, 0x13, + 0x99, 0xae, 0xd9, 0x14, 0x4c, 0xd7, 0xdc, 0xf0, 0xa6, 0x6b, 0x7e, 0x90, 0xe9, 0xaa, 0x7e, 0x34, + 0x9f, 0x74, 0x64, 0x23, 0xa2, 0x3e, 0x5c, 0x83, 0xf5, 0x97, 0x72, 0x49, 0x46, 0xc2, 0xbe, 0x1c, + 0x27, 0xd3, 0xcb, 0x57, 0x65, 0x53, 0x58, 0x32, 0x53, 0xae, 0x85, 0xab, 0xc3, 0xf7, 0x86, 0xf6, + 0xf4, 0x72, 0xad, 0x5e, 0xc3, 0x56, 0x6a, 0xa9, 0xaa, 0xeb, 0x1b, 0xeb, 0x64, 0xdf, 0xe3, 0x24, + 0x28, 0x21, 0x15, 0x7d, 0xa3, 0x42, 0x6c, 0xd2, 0x2d, 0x9e, 0xfa, 0x52, 0xb9, 0xb2, 0xd8, 0x08, + 0xfa, 0xf9, 0xca, 0x52, 0xb5, 0xb0, 0xad, 0xcc, 0xc3, 0x8d, 0x0c, 0x75, 0xdc, 0xe5, 0x90, 0x12, + 0x8a, 0x95, 0xc5, 0xc6, 0x5a, 0x45, 0x5b, 0xab, 0x56, 0xca, 0x25, 0x9c, 0x5e, 0xd3, 0xea, 0x05, + 0xd3, 0x33, 0x8e, 0x7a, 0xac, 0xe0, 0x9a, 0x56, 0xd4, 0x4b, 0x2b, 0x9a, 0x4e, 0x8a, 0xbc, 0x5f, + 0xb9, 0x1e, 0xce, 0x14, 0x2b, 0xd5, 0xba, 0x97, 0x52, 0xac, 0xdc, 0x57, 0xbf, 0x6f, 0x5d, 0x6b, + 0xac, 0xeb, 0xd5, 0x92, 0x56, 0xab, 0x79, 0x63, 0x0b, 0xb5, 0x99, 0x0b, 0x6d, 0xe5, 0xa9, 0x70, + 0x3b, 0xc3, 0x9a, 0x56, 0xc7, 0x9b, 0xec, 0x6b, 0x55, 0xec, 0x67, 0xb5, 0xa8, 0x35, 0x56, 0x8a, + 0xb5, 0x46, 0xb9, 0x52, 0xaa, 0xae, 0xad, 0x17, 0xeb, 0x65, 0x6f, 0x08, 0x5a, 0xd7, 0xab, 0xf5, + 0x6a, 0xe3, 0xac, 0xa6, 0xd7, 0xca, 0xd5, 0x4a, 0xc1, 0xf2, 0xaa, 0xcc, 0x8c, 0x59, 0xbe, 0xed, + 0x60, 0x2b, 0x57, 0xc1, 0x29, 0x3f, 0x7d, 0xb5, 0xea, 0x09, 0x9a, 0xb1, 0xa2, 0x3b, 0xac, 0xe5, + 0x51, 0xab, 0x57, 0x75, 0x62, 0x47, 0xaf, 0x95, 0x97, 0x75, 0xcf, 0xf8, 0x2f, 0x3c, 0x23, 0x55, + 0x2b, 0xfb, 0xdf, 0x24, 0xc8, 0xd6, 0x5c, 0xbb, 0xa3, 0xfe, 0x78, 0xd8, 0x01, 0x9d, 0x06, 0x70, + 0xf0, 0x9e, 0xfa, 0xa2, 0xe1, 0x1a, 0x74, 0xad, 0x81, 0x49, 0x51, 0xff, 0x50, 0x78, 0x23, 0x30, + 0xb4, 0x43, 0xec, 0x4e, 0x44, 0x87, 0xfd, 0x5d, 0xb1, 0x93, 0x51, 0xd1, 0x84, 0x92, 0xb5, 0x87, + 0x5f, 0x18, 0x66, 0xab, 0x4f, 0x85, 0x93, 0x0c, 0xac, 0x9e, 0xfc, 0x7d, 0x95, 0x41, 0xca, 0xe5, + 0x70, 0x59, 0x8f, 0xf2, 0x61, 0x9d, 0xdb, 0x54, 0x7e, 0x0c, 0x1e, 0xc5, 0xa8, 0xbf, 0xb6, 0x56, + 0x3d, 0xab, 0x05, 0x8a, 0xbe, 0x58, 0xac, 0x17, 0x0b, 0x5b, 0xea, 0x67, 0x65, 0xc8, 0xae, 0xd9, + 0x7b, 0xbd, 0xfb, 0xaf, 0x16, 0xba, 0xc8, 0xac, 0xef, 0xfb, 0xaf, 0xfc, 0x49, 0x10, 0x21, 0xb1, + 0xaf, 0x45, 0xfb, 0x5a, 0x7c, 0x41, 0x4a, 0x22, 0xf6, 0xb5, 0x83, 0x3a, 0x58, 0xfc, 0xe3, 0x30, + 0x62, 0x8f, 0x10, 0x2d, 0x52, 0xce, 0xc0, 0xe9, 0xf0, 0x43, 0x79, 0x51, 0xab, 0xd4, 0xcb, 0x4b, + 0xf7, 0x85, 0xc2, 0x2d, 0xeb, 0x42, 0xe2, 0x1f, 0xd4, 0xcd, 0xc5, 0xcf, 0x9e, 0x4f, 0xc1, 0xf1, + 0xf0, 0xdb, 0xb2, 0x56, 0xf7, 0xbf, 0xdc, 0xaf, 0x3e, 0x98, 0x83, 0x19, 0xd2, 0xed, 0x6f, 0x74, + 0x5a, 0x9e, 0x3d, 0xfa, 0x84, 0x10, 0xdd, 0x1b, 0xe0, 0x68, 0x79, 0x7d, 0xa9, 0x56, 0x73, 0x6d, + 0xc7, 0xd8, 0x42, 0xc5, 0x56, 0xcb, 0xa1, 0xd2, 0xea, 0x4d, 0x56, 0xdf, 0x2d, 0xbc, 0x76, 0xcd, + 0x0f, 0x35, 0xa4, 0xcc, 0x08, 0xd4, 0xbf, 0x2c, 0xb4, 0xd6, 0x2c, 0x40, 0x30, 0x19, 0xfa, 0xf7, + 0x8f, 0xb8, 0xcd, 0x45, 0xe3, 0xb2, 0x79, 0xe6, 0xb9, 0x12, 0x4c, 0xd5, 0xcd, 0x1d, 0xf4, 0x4c, + 0xdb, 0x42, 0x5d, 0x65, 0x02, 0xe4, 0xe5, 0xb5, 0x7a, 0xe1, 0x88, 0xf7, 0xe0, 0x4d, 0x14, 0x32, + 0xf8, 0x41, 0xf3, 0x0a, 0xf0, 0x1e, 0x8a, 0xf5, 0x82, 0xec, 0x3d, 0xac, 0x69, 0xf5, 0x42, 0xd6, + 0x7b, 0xa8, 0x68, 0xf5, 0x42, 0xce, 0x7b, 0x58, 0x5f, 0xad, 0x17, 0xf2, 0xde, 0x43, 0xb9, 0x56, + 0x2f, 0x4c, 0x78, 0x0f, 0x0b, 0xb5, 0x7a, 0x61, 0xd2, 0x7b, 0x38, 0x5b, 0xab, 0x17, 0xa6, 0xbc, + 0x87, 0x52, 0xbd, 0x5e, 0x00, 0xef, 0xe1, 0x9e, 0x5a, 0xbd, 0x30, 0xed, 0x3d, 0x14, 0x4b, 0xf5, + 0xc2, 0x0c, 0x7e, 0xd0, 0xea, 0x85, 0x59, 0xef, 0xa1, 0x56, 0xab, 0x17, 0xe6, 0x30, 0xe5, 0x5a, + 0xbd, 0x70, 0x14, 0x97, 0x55, 0xae, 0x17, 0x0a, 0xde, 0xc3, 0x4a, 0xad, 0x5e, 0x38, 0x86, 0x33, + 0xd7, 0xea, 0x05, 0x05, 0x17, 0x5a, 0xab, 0x17, 0x2e, 0xc3, 0x79, 0x6a, 0xf5, 0xc2, 0x71, 0x5c, + 0x44, 0xad, 0x5e, 0x38, 0x81, 0xd9, 0xd0, 0xea, 0x85, 0x93, 0x38, 0x8f, 0x5e, 0x2f, 0x5c, 0x8e, + 0x3f, 0x55, 0xea, 0x85, 0x53, 0x98, 0x31, 0xad, 0x5e, 0xb8, 0x02, 0x3f, 0xe8, 0xf5, 0x82, 0x8a, + 0x3f, 0x15, 0xeb, 0x85, 0x2b, 0xd5, 0x47, 0xc1, 0xd4, 0x32, 0x72, 0x09, 0x88, 0x6a, 0x01, 0xe4, + 0x65, 0xe4, 0xb2, 0x53, 0xd3, 0xaf, 0xca, 0x70, 0x39, 0x5d, 0xce, 0x58, 0x72, 0xec, 0x9d, 0x55, + 0xb4, 0x65, 0x34, 0x2f, 0x69, 0x0f, 0x78, 0x26, 0x16, 0xeb, 0x6b, 0xa0, 0x40, 0xb6, 0x13, 0x76, + 0x46, 0xf8, 0x39, 0xd6, 0x22, 0xf5, 0x17, 0x58, 0xe5, 0x70, 0x81, 0x95, 0x5a, 0x6c, 0xff, 0xc2, + 0x6a, 0x34, 0xb7, 0x27, 0x92, 0xe9, 0xd9, 0x13, 0xf1, 0x9a, 0x49, 0x07, 0x39, 0x5d, 0xdb, 0x32, + 0xda, 0x35, 0xea, 0x8c, 0x42, 0x56, 0x72, 0x7b, 0x93, 0x95, 0xa7, 0xf9, 0x2d, 0x83, 0x58, 0x6d, + 0x4f, 0x89, 0x5b, 0xb5, 0xe9, 0xad, 0x66, 0x44, 0x23, 0xf9, 0x64, 0xd0, 0x48, 0xea, 0x5c, 0x23, + 0xb9, 0xfb, 0x00, 0xb4, 0x93, 0xb5, 0x97, 0xf2, 0x70, 0x33, 0xb8, 0xd0, 0x55, 0xdb, 0xdf, 0x82, + 0x91, 0xd5, 0xcf, 0x4a, 0x70, 0x52, 0xb3, 0xfa, 0xcd, 0x00, 0x58, 0x5d, 0x78, 0x0b, 0x0b, 0xcd, + 0x3a, 0x2f, 0xd2, 0xdb, 0xfb, 0x56, 0xbb, 0x3f, 0xcd, 0x08, 0x89, 0x7e, 0x2a, 0x90, 0x68, 0x8d, + 0x93, 0xe8, 0x5d, 0xc3, 0x93, 0x4e, 0x26, 0xd0, 0xca, 0x48, 0x3b, 0xa0, 0xac, 0xfa, 0x8d, 0x2c, + 0x3c, 0x8a, 0xf8, 0x93, 0x51, 0x0e, 0x49, 0x2b, 0x2b, 0x5a, 0x2d, 0x1d, 0x75, 0x5d, 0xc3, 0x71, + 0xb9, 0x33, 0xfe, 0x3d, 0x53, 0xad, 0x4c, 0x0a, 0x53, 0x2d, 0x69, 0xe0, 0x54, 0x4b, 0x7d, 0x17, + 0x6b, 0x3e, 0x9c, 0xe3, 0x31, 0x2e, 0xf6, 0xef, 0xff, 0xe3, 0x6a, 0x18, 0x05, 0x75, 0x60, 0x57, + 0xfc, 0x14, 0x07, 0xf5, 0xd2, 0x81, 0x4b, 0x48, 0x86, 0xf8, 0x1f, 0x8e, 0xd6, 0xce, 0xcb, 0xb2, + 0xdf, 0x78, 0xa3, 0xa4, 0xd0, 0x4a, 0xd5, 0x40, 0xff, 0xf4, 0x04, 0x4c, 0xe1, 0xb6, 0xb0, 0x6a, + 0x5a, 0x17, 0xd4, 0x87, 0x64, 0x98, 0xa9, 0xa0, 0x8b, 0xa5, 0x6d, 0xa3, 0xdd, 0x46, 0xd6, 0x16, + 0x62, 0xcd, 0xf6, 0x53, 0x30, 0x61, 0x74, 0x3a, 0x95, 0x70, 0xef, 0xcc, 0x7f, 0xa5, 0xfd, 0xef, + 0xd7, 0xfb, 0x36, 0xf2, 0x4c, 0x4c, 0x23, 0x0f, 0xca, 0x9d, 0x67, 0xcb, 0x8c, 0x98, 0x41, 0x5f, + 0x03, 0xd3, 0x4d, 0x3f, 0x4b, 0x70, 0x16, 0x88, 0x4d, 0x52, 0xff, 0x3e, 0x51, 0x37, 0x20, 0x54, + 0x78, 0x32, 0xa5, 0x40, 0x23, 0xb6, 0x43, 0x4e, 0xc0, 0xb1, 0x7a, 0xb5, 0xda, 0x58, 0x2b, 0x56, + 0xee, 0x0b, 0xcf, 0xe0, 0x6f, 0xaa, 0xaf, 0xca, 0xc2, 0x5c, 0xcd, 0x6e, 0xef, 0xa1, 0x10, 0xa6, + 0x32, 0xe7, 0x64, 0xc6, 0xca, 0x29, 0xb3, 0x4f, 0x4e, 0xca, 0x49, 0xc8, 0x1b, 0x56, 0xf7, 0x22, + 0xf2, 0x6d, 0x43, 0xfa, 0x46, 0x61, 0xfc, 0x20, 0xdb, 0x8e, 0x75, 0x1e, 0xc6, 0x3b, 0x06, 0x48, + 0x92, 0xe7, 0x2a, 0x02, 0xc8, 0x33, 0x30, 0xd3, 0x25, 0x1b, 0xe0, 0x75, 0xc6, 0xcf, 0x81, 0x4b, + 0xc3, 0x2c, 0x12, 0x0f, 0x0c, 0x99, 0xb2, 0x88, 0xdf, 0xd4, 0x87, 0x82, 0xe6, 0xbf, 0xc1, 0x41, + 0x5c, 0x3c, 0x08, 0x63, 0xc9, 0x40, 0x7e, 0xcd, 0xa8, 0x67, 0x78, 0xa7, 0xe0, 0x38, 0x6d, 0xb5, + 0x8d, 0xd2, 0x4a, 0x71, 0x75, 0x55, 0xab, 0x2c, 0x6b, 0x8d, 0xf2, 0x22, 0xd9, 0x7e, 0x0b, 0x53, + 0x8a, 0xf5, 0xba, 0xb6, 0xb6, 0x5e, 0xaf, 0x35, 0xb4, 0xa7, 0x97, 0x34, 0x6d, 0x11, 0xbb, 0x79, + 0xe2, 0x73, 0x5a, 0xbe, 0x43, 0x6e, 0xb1, 0x52, 0x3b, 0xa7, 0xe9, 0x85, 0xed, 0x33, 0x45, 0x98, + 0x66, 0xfa, 0x79, 0x8f, 0xbb, 0x45, 0xb4, 0x69, 0xec, 0xb6, 0xa9, 0xad, 0x56, 0x38, 0xe2, 0x71, + 0x87, 0x65, 0x53, 0xb5, 0xda, 0x97, 0x0a, 0x19, 0xa5, 0x00, 0x33, 0x6c, 0x97, 0x5e, 0x90, 0xd4, + 0xb7, 0x5f, 0x05, 0x53, 0xe7, 0x6c, 0xe7, 0x02, 0xf6, 0x4d, 0x54, 0xdf, 0x47, 0x62, 0xf5, 0xf8, + 0xa7, 0x9e, 0x99, 0x81, 0xfd, 0x35, 0xe2, 0x1e, 0x30, 0x3e, 0xb5, 0xf9, 0x81, 0x27, 0x9b, 0xaf, + 0x81, 0xe9, 0x8b, 0x7e, 0xee, 0xb0, 0xa5, 0x33, 0x49, 0xea, 0x7f, 0x13, 0xf3, 0x69, 0x19, 0x5c, + 0x64, 0xfa, 0x8b, 0xb0, 0x6f, 0x93, 0x20, 0xbf, 0x8c, 0xdc, 0x62, 0xbb, 0xcd, 0xca, 0xed, 0x65, + 0xc2, 0xa7, 0xd5, 0xb8, 0x4a, 0x14, 0xdb, 0xed, 0xe8, 0x46, 0xc5, 0x08, 0xc8, 0x3f, 0x55, 0xc1, + 0xa5, 0x09, 0xfa, 0x82, 0x0e, 0x28, 0x30, 0x7d, 0x89, 0x7d, 0x58, 0x0e, 0xfc, 0x36, 0x1e, 0x66, + 0xac, 0x9c, 0xc7, 0x87, 0x71, 0x9a, 0x32, 0xf1, 0xfe, 0x1f, 0x7e, 0x3e, 0xe5, 0x5e, 0x98, 0xd8, + 0xed, 0xa2, 0x92, 0xd1, 0x45, 0x98, 0xb7, 0xde, 0x9a, 0x56, 0xcf, 0xdf, 0x8f, 0x9a, 0xee, 0x7c, + 0x79, 0xc7, 0x33, 0xa8, 0x37, 0x48, 0xc6, 0x20, 0xf4, 0x11, 0x7d, 0xd7, 0x7d, 0x0a, 0xde, 0xa4, + 0xe4, 0xa2, 0xe9, 0x6e, 0x97, 0xb6, 0x0d, 0x97, 0xae, 0x7d, 0x07, 0xef, 0xea, 0x8b, 0x86, 0x80, + 0x33, 0xd6, 0xbf, 0x21, 0xf2, 0xd0, 0x6b, 0x62, 0x10, 0x47, 0xe0, 0x94, 0x30, 0x0c, 0x88, 0xff, + 0x24, 0x41, 0xb6, 0xda, 0x41, 0x96, 0xf0, 0x09, 0xaf, 0x40, 0xb6, 0x52, 0x8f, 0x6c, 0x1f, 0x12, + 0xf7, 0x78, 0x0c, 0x2a, 0xed, 0x95, 0x1c, 0x21, 0xd9, 0x9b, 0x21, 0x6b, 0x5a, 0x9b, 0x36, 0x35, + 0x4c, 0xaf, 0x8c, 0xd8, 0xd8, 0x2c, 0x5b, 0x9b, 0xb6, 0x8e, 0x33, 0x8a, 0x3a, 0x3b, 0xc6, 0x95, + 0x9d, 0xbe, 0xb8, 0xbf, 0x39, 0x09, 0x79, 0xa2, 0xce, 0xea, 0x4b, 0x65, 0x90, 0x8b, 0xad, 0x56, + 0x84, 0xe0, 0xa5, 0x7d, 0x82, 0xb7, 0xf1, 0x6f, 0x01, 0x26, 0xc1, 0x3b, 0x1f, 0xa0, 0x47, 0xb0, + 0x6f, 0xa7, 0x4d, 0xaa, 0xd8, 0x6a, 0x45, 0xfb, 0x55, 0x07, 0x05, 0x4a, 0x7c, 0x81, 0x6c, 0x0b, + 0x97, 0xc5, 0x5a, 0x78, 0xe2, 0x81, 0x20, 0x92, 0xbf, 0xf4, 0x21, 0xfa, 0x17, 0x09, 0x26, 0x56, + 0xcd, 0xae, 0xeb, 0x61, 0x53, 0x14, 0xc1, 0xe6, 0x2a, 0x98, 0xf2, 0x45, 0xe3, 0x75, 0x79, 0x5e, + 0x7f, 0x1e, 0x26, 0xa8, 0xaf, 0x67, 0xd1, 0xb9, 0x87, 0x47, 0xe7, 0x89, 0xf1, 0xb5, 0xa7, 0x5c, + 0x44, 0x9f, 0x9c, 0x09, 0x8b, 0x95, 0x7a, 0x8b, 0xfd, 0xed, 0x40, 0xe0, 0x6b, 0x9c, 0xc0, 0x6f, + 0x1b, 0xa6, 0xc8, 0xf4, 0x85, 0xfe, 0x39, 0x09, 0xc0, 0x2b, 0x9b, 0x1e, 0x4f, 0x7c, 0x0c, 0x17, + 0x74, 0x20, 0x46, 0xba, 0xaf, 0x62, 0xa5, 0xbb, 0xc6, 0x4b, 0xf7, 0x27, 0x07, 0x57, 0x35, 0xee, + 0x18, 0xa2, 0x52, 0x00, 0xd9, 0x0c, 0x44, 0xeb, 0x3d, 0xaa, 0x6f, 0x0b, 0x84, 0xba, 0xce, 0x09, + 0xf5, 0x8e, 0x21, 0x4b, 0x4a, 0x5f, 0xae, 0x7f, 0x2d, 0xc1, 0x44, 0x0d, 0xb9, 0x5e, 0x37, 0xa9, + 0x9e, 0x15, 0xe9, 0xe1, 0x99, 0xb6, 0x2d, 0x09, 0xb6, 0xed, 0xef, 0x64, 0x44, 0x83, 0x17, 0x85, + 0x92, 0xa1, 0x3c, 0x45, 0x2c, 0x1e, 0x3c, 0x2c, 0x14, 0xbc, 0x68, 0x10, 0xb5, 0xf4, 0xa5, 0xfb, + 0x16, 0x29, 0xd8, 0xb8, 0xe7, 0x4f, 0x0f, 0xb1, 0x66, 0x71, 0x66, 0xbf, 0x59, 0x2c, 0x7e, 0x7a, + 0x88, 0xad, 0x63, 0xf4, 0xae, 0x75, 0x62, 0x63, 0x63, 0x04, 0x1b, 0xca, 0xc3, 0xc8, 0xeb, 0xd9, + 0x32, 0xe4, 0xe9, 0xca, 0xf2, 0x5d, 0xf1, 0x2b, 0xcb, 0x83, 0xa7, 0x16, 0xef, 0x1d, 0xc2, 0x94, + 0x8b, 0x5b, 0xee, 0x0d, 0xd8, 0x90, 0x18, 0x36, 0x6e, 0x82, 0x1c, 0x8e, 0xae, 0x4a, 0xc7, 0xb9, + 0xd0, 0x17, 0xc0, 0x27, 0xa1, 0x79, 0x5f, 0x75, 0x92, 0x29, 0x31, 0x0a, 0x23, 0x58, 0x21, 0x1e, + 0x06, 0x85, 0x77, 0x7d, 0x36, 0x13, 0x18, 0x21, 0xef, 0xcd, 0x52, 0xf3, 0xef, 0xe3, 0x7c, 0x9c, + 0x97, 0xa6, 0x6d, 0xb9, 0xe8, 0x01, 0x66, 0x4d, 0x3e, 0x48, 0x88, 0xb5, 0x0c, 0x4e, 0xc1, 0x84, + 0xeb, 0xb0, 0xeb, 0xf4, 0xfe, 0x2b, 0xdb, 0xe3, 0xe4, 0xf8, 0x1e, 0xa7, 0x02, 0x67, 0x4c, 0xab, + 0xd9, 0xde, 0x6d, 0x21, 0x1d, 0xb5, 0x0d, 0xaf, 0x56, 0xdd, 0x62, 0x77, 0x11, 0x75, 0x90, 0xd5, + 0x42, 0x96, 0x4b, 0xf8, 0xf4, 0xfd, 0xcc, 0x05, 0x72, 0xaa, 0x5f, 0x63, 0x15, 0xe3, 0x4e, 0x5e, + 0x31, 0x1e, 0xd3, 0x6f, 0x5e, 0x11, 0x63, 0x84, 0xde, 0x06, 0x40, 0xea, 0x76, 0xd6, 0x44, 0x17, + 0x69, 0x87, 0x78, 0x45, 0x8f, 0x29, 0x5a, 0x0d, 0x32, 0xe8, 0x4c, 0x66, 0xf5, 0x4b, 0x81, 0x32, + 0xdc, 0xcd, 0x29, 0xc3, 0x4d, 0x82, 0x2c, 0x24, 0xd3, 0x83, 0xce, 0x10, 0x6b, 0x1d, 0xb3, 0x30, + 0x15, 0xae, 0x50, 0xca, 0xca, 0x15, 0x70, 0xc2, 0xf7, 0x89, 0xa8, 0x68, 0xda, 0x62, 0xad, 0xb1, + 0xb1, 0xbe, 0xac, 0x17, 0x17, 0xb5, 0x02, 0x28, 0x0a, 0xcc, 0x55, 0x17, 0xee, 0xd1, 0x4a, 0xf5, + 0xc0, 0x95, 0x21, 0xab, 0xfe, 0xa5, 0x04, 0x39, 0x7c, 0x48, 0x42, 0xfd, 0x99, 0x11, 0x69, 0x4e, + 0x97, 0xdb, 0xe1, 0x09, 0x26, 0x52, 0xe2, 0xf1, 0x57, 0xa9, 0x30, 0x31, 0x57, 0x07, 0x8a, 0xbf, + 0x1a, 0x43, 0x28, 0xfd, 0xe6, 0xe9, 0x35, 0xc9, 0xda, 0xb6, 0x7d, 0xf1, 0x47, 0xb9, 0x49, 0x7a, + 0xf5, 0x3f, 0xe4, 0x26, 0xd9, 0x87, 0x85, 0xb1, 0x37, 0xc9, 0x3e, 0xed, 0x2e, 0xa6, 0x99, 0xaa, + 0xcf, 0xca, 0x05, 0x0b, 0x32, 0xcf, 0x95, 0x0e, 0xb4, 0x20, 0x53, 0x84, 0x59, 0xd3, 0x72, 0x91, + 0x63, 0x19, 0xed, 0xa5, 0xb6, 0xb1, 0xe5, 0x07, 0x85, 0xe8, 0x9d, 0x85, 0x97, 0x99, 0x3c, 0x3a, + 0xff, 0x87, 0x72, 0x1a, 0xc0, 0x45, 0x3b, 0x9d, 0xb6, 0xe1, 0x86, 0xaa, 0xc7, 0xa4, 0xb0, 0xda, + 0x97, 0xe5, 0xb5, 0xef, 0x16, 0xb8, 0x8c, 0x80, 0x56, 0xbf, 0xd4, 0x41, 0x1b, 0x96, 0xf9, 0x8c, + 0x5d, 0x1c, 0x16, 0x8c, 0xe8, 0x68, 0xbf, 0x4f, 0xdc, 0xb2, 0x44, 0xbe, 0x67, 0x59, 0xe2, 0x9f, + 0x84, 0x8f, 0x1b, 0xfb, 0xad, 0x7e, 0xc0, 0x71, 0xe3, 0xa0, 0xa5, 0xc9, 0x3d, 0x2d, 0x2d, 0x30, + 0x16, 0xb2, 0x02, 0xc6, 0x02, 0x8b, 0x4a, 0x4e, 0xd0, 0xd0, 0x7e, 0x9d, 0xd0, 0x79, 0xe6, 0xb8, + 0x6a, 0x8c, 0x61, 0x22, 0x27, 0xc3, 0x1c, 0x29, 0x7a, 0xc1, 0xb6, 0x2f, 0xec, 0x18, 0xce, 0x05, + 0xd5, 0x39, 0x90, 0x2a, 0xc6, 0xae, 0x89, 0x44, 0x2e, 0xf4, 0x7d, 0x4a, 0x12, 0x75, 0x2a, 0xe6, + 0xc4, 0xe5, 0xf3, 0x3c, 0x9e, 0x45, 0x11, 0x31, 0x1f, 0x65, 0x11, 0x06, 0xd3, 0xc7, 0xf5, 0x8f, + 0x03, 0x5c, 0xfd, 0x8e, 0x9e, 0x9d, 0x4f, 0x8e, 0x12, 0x57, 0xf5, 0xcb, 0xc3, 0x61, 0xe7, 0xf3, + 0x35, 0x04, 0x76, 0x05, 0x90, 0x2f, 0x04, 0x5b, 0x58, 0xde, 0x23, 0x5b, 0xa1, 0x6c, 0x7a, 0x68, + 0x46, 0xb0, 0x3c, 0x16, 0x34, 0x8f, 0xf3, 0x2c, 0x54, 0x3b, 0xa9, 0x62, 0xfa, 0x45, 0xe1, 0x75, + 0x9a, 0xbe, 0x02, 0x22, 0xdc, 0x8d, 0xa7, 0x55, 0x8a, 0x2d, 0xf2, 0x88, 0xb3, 0x99, 0x3e, 0x9a, + 0x2f, 0xcc, 0xc1, 0x94, 0x7f, 0x20, 0x1c, 0xdf, 0x57, 0x10, 0x60, 0x78, 0x12, 0xf2, 0x5d, 0x7b, + 0xd7, 0x69, 0x22, 0xba, 0x72, 0x46, 0xdf, 0x86, 0x58, 0xe5, 0x19, 0x38, 0x9e, 0xef, 0x33, 0x19, + 0xb2, 0x89, 0x4d, 0x86, 0x68, 0x83, 0x34, 0x6e, 0x80, 0x7f, 0x91, 0x70, 0x90, 0x59, 0x0e, 0xb3, + 0x1a, 0x72, 0x1f, 0x89, 0x63, 0xfc, 0x1f, 0x08, 0xad, 0x21, 0x0c, 0xa8, 0x49, 0x32, 0x95, 0xab, + 0x0e, 0x61, 0xa8, 0x5e, 0x09, 0x97, 0xfb, 0x39, 0xa8, 0x85, 0x8a, 0x2d, 0xd2, 0x0d, 0x7d, 0xb5, + 0x20, 0xab, 0xcf, 0xce, 0x42, 0x81, 0xb0, 0x56, 0x0d, 0x8c, 0x35, 0xf5, 0x65, 0x99, 0xc3, 0xb6, + 0x48, 0xa3, 0xa7, 0x98, 0x9f, 0x91, 0x44, 0x03, 0xd9, 0x71, 0x82, 0x0f, 0x6b, 0x17, 0xa1, 0x49, + 0x43, 0x34, 0xb3, 0x18, 0xe5, 0x53, 0x7f, 0x2b, 0x23, 0x12, 0x17, 0x4f, 0x8c, 0xc5, 0xf4, 0x7b, + 0xa5, 0xcf, 0x67, 0xfd, 0xb8, 0x1e, 0x4b, 0x8e, 0xbd, 0xb3, 0xe1, 0xb4, 0xd5, 0xff, 0x53, 0x28, + 0xec, 0x68, 0x84, 0xf9, 0x2f, 0x45, 0x9b, 0xff, 0x05, 0x90, 0x77, 0x9d, 0xb6, 0x3f, 0x7c, 0xef, + 0x3a, 0xed, 0x21, 0x86, 0x6f, 0xe5, 0x7a, 0x98, 0x33, 0x5a, 0xad, 0x75, 0x63, 0x0b, 0x95, 0xbc, + 0x79, 0xb5, 0xe5, 0xd2, 0x33, 0xff, 0x3d, 0xa9, 0xb1, 0x5d, 0xd1, 0xd7, 0x84, 0x77, 0xe2, 0x38, + 0x90, 0xa8, 0x7c, 0xc6, 0x32, 0xbc, 0x79, 0x43, 0x42, 0x73, 0xdb, 0x08, 0x23, 0x90, 0xd0, 0x37, + 0xc1, 0x1d, 0x3a, 0x01, 0xbe, 0xd3, 0xd7, 0xac, 0xdf, 0x93, 0x60, 0xc2, 0x93, 0x77, 0xb1, 0xd5, + 0x52, 0x1f, 0xcd, 0x05, 0xea, 0x89, 0xdc, 0x23, 0x7d, 0xbe, 0xf0, 0xe6, 0xb4, 0x5f, 0x43, 0x42, + 0x3f, 0x02, 0x93, 0x50, 0x88, 0x12, 0x27, 0x44, 0xb1, 0x3d, 0xe8, 0xd8, 0x22, 0xd2, 0x17, 0xdf, + 0x27, 0x25, 0x98, 0xf5, 0xe7, 0x11, 0x4b, 0xc8, 0x6d, 0x6e, 0xab, 0xb7, 0x89, 0x2e, 0x34, 0xd1, + 0x96, 0x26, 0x05, 0x2d, 0x4d, 0xfd, 0x7e, 0x26, 0xa1, 0xca, 0x73, 0x25, 0x47, 0xac, 0xd2, 0x25, + 0xd2, 0xc5, 0x38, 0x82, 0xe9, 0x0b, 0xf3, 0x4b, 0x12, 0x40, 0xdd, 0x0e, 0xe6, 0xba, 0x07, 0x90, + 0xe4, 0x4b, 0x84, 0xef, 0x00, 0xa1, 0x15, 0x0f, 0x8b, 0x4d, 0xde, 0x73, 0x08, 0x6e, 0xb1, 0x0d, + 0x2a, 0x69, 0x2c, 0x6d, 0x7d, 0x6a, 0x71, 0xb7, 0xd3, 0x36, 0x9b, 0x86, 0xdb, 0xbb, 0x2f, 0x1c, + 0x2d, 0x5e, 0x7c, 0x99, 0x57, 0x22, 0xa3, 0x30, 0x28, 0x23, 0x42, 0x96, 0xe4, 0x30, 0xae, 0xe4, + 0x1f, 0xc6, 0x15, 0xdc, 0xeb, 0x19, 0x40, 0x7c, 0x0c, 0xea, 0x29, 0xc3, 0xd1, 0x6a, 0x07, 0x59, + 0x0b, 0x0e, 0x32, 0x5a, 0x4d, 0x67, 0x77, 0xe7, 0x7c, 0x97, 0x75, 0x6a, 0x88, 0xd7, 0x51, 0x66, + 0xe9, 0x58, 0xe2, 0x96, 0x8e, 0xd5, 0xe7, 0xc8, 0xa2, 0xe1, 0x0c, 0x98, 0x0d, 0x0e, 0x86, 0x87, + 0x21, 0x86, 0xba, 0x44, 0x5b, 0x71, 0x3d, 0xab, 0xc4, 0xd9, 0x24, 0xab, 0xc4, 0x6f, 0x16, 0x0a, + 0x8e, 0x20, 0x54, 0xaf, 0xb1, 0xec, 0xa8, 0xce, 0xd5, 0x90, 0x1b, 0x01, 0xef, 0x75, 0x30, 0x7b, + 0x3e, 0xfc, 0x12, 0x40, 0xcc, 0x27, 0xf6, 0xf1, 0x73, 0x78, 0x4b, 0xd2, 0x15, 0x18, 0x9e, 0x85, + 0x08, 0x74, 0x03, 0x04, 0x25, 0x91, 0xcd, 0xd4, 0x44, 0xcb, 0x29, 0xb1, 0xe5, 0xa7, 0x8f, 0xc2, + 0x47, 0x25, 0x98, 0xc6, 0x57, 0x94, 0x2d, 0x5c, 0xc2, 0xde, 0xf9, 0x82, 0x46, 0xc9, 0x0b, 0x59, + 0x31, 0x2b, 0x90, 0x6d, 0x9b, 0xd6, 0x05, 0x7f, 0x17, 0xdc, 0x7b, 0x0e, 0x2f, 0xbc, 0x91, 0xfa, + 0x5c, 0x78, 0x13, 0xec, 0x53, 0x04, 0xe5, 0x1e, 0xe8, 0x06, 0xc6, 0x81, 0xe4, 0xd2, 0x17, 0xe3, + 0x3f, 0x64, 0x21, 0x5f, 0x43, 0x86, 0xd3, 0xdc, 0x56, 0xdf, 0x2b, 0xf5, 0x9d, 0x2a, 0x4c, 0xf2, + 0x53, 0x85, 0x25, 0x98, 0xd8, 0x34, 0xdb, 0x2e, 0x72, 0x88, 0x67, 0x10, 0xdb, 0xb5, 0x93, 0x26, + 0xbe, 0xd0, 0xb6, 0x9b, 0x17, 0xe6, 0xa9, 0xe9, 0x3e, 0xef, 0x07, 0x48, 0x9b, 0x5f, 0xc2, 0x3f, + 0xe9, 0xfe, 0xcf, 0x9e, 0x41, 0xd8, 0xb5, 0x1d, 0x37, 0x2a, 0xf6, 0x75, 0x04, 0x95, 0x9a, 0xed, + 0xb8, 0x3a, 0xf9, 0xd1, 0x83, 0x79, 0x73, 0xb7, 0xdd, 0xae, 0xa3, 0x07, 0x5c, 0x7f, 0xda, 0xe6, + 0xbf, 0x7b, 0xc6, 0xa2, 0xbd, 0xb9, 0xd9, 0x45, 0x64, 0xd1, 0x20, 0xa7, 0xd3, 0x37, 0xe5, 0x38, + 0xe4, 0xda, 0xe6, 0x8e, 0x49, 0x26, 0x1a, 0x39, 0x9d, 0xbc, 0x28, 0x37, 0x42, 0x21, 0x9c, 0xe3, + 0x10, 0x46, 0x4f, 0xe5, 0x71, 0xd3, 0xdc, 0x97, 0xee, 0xe9, 0xcc, 0x05, 0x74, 0xa9, 0x7b, 0x6a, + 0x02, 0x7f, 0xc7, 0xcf, 0xbc, 0x1b, 0xa6, 0xc8, 0x7e, 0x07, 0x91, 0x78, 0xf4, 0x0c, 0xd6, 0x41, + 0x4d, 0xdb, 0x69, 0xf9, 0xb2, 0x89, 0x9e, 0x60, 0xd0, 0x7c, 0xc9, 0x76, 0x29, 0xfa, 0x16, 0x3e, + 0x06, 0x17, 0x88, 0xbc, 0xd7, 0x6d, 0x7a, 0x45, 0x9f, 0x33, 0xdd, 0xed, 0x35, 0xe4, 0x1a, 0xea, + 0x3f, 0xc8, 0x7d, 0x35, 0x6e, 0xfa, 0x7f, 0x69, 0xdc, 0x00, 0x8d, 0x23, 0x61, 0x02, 0xdc, 0x5d, + 0xc7, 0xf2, 0xe4, 0x48, 0x83, 0xcd, 0x31, 0x29, 0xca, 0x1d, 0x70, 0x45, 0xf8, 0xe6, 0x2f, 0x95, + 0x2e, 0xd2, 0x69, 0xeb, 0x14, 0xce, 0x1e, 0x9d, 0x41, 0x59, 0x87, 0x6b, 0xc9, 0xc7, 0x95, 0xfa, + 0xda, 0xea, 0x8a, 0xb9, 0xb5, 0xdd, 0x36, 0xb7, 0xb6, 0xdd, 0x6e, 0xd9, 0xea, 0xba, 0xc8, 0x68, + 0x55, 0x37, 0x75, 0x12, 0xb5, 0x1e, 0x30, 0x1d, 0x91, 0xac, 0xbc, 0xe7, 0x90, 0xd8, 0xe8, 0xc6, + 0x6a, 0x4a, 0x44, 0x4b, 0x79, 0x92, 0xd7, 0x52, 0xba, 0xbb, 0xed, 0x00, 0xd3, 0xab, 0x7a, 0x30, + 0x0d, 0x55, 0x7d, 0xb7, 0x8d, 0x9b, 0x0b, 0xce, 0x9c, 0x74, 0x9c, 0x8b, 0xe1, 0x24, 0xfd, 0x66, + 0xf3, 0xff, 0xe5, 0x21, 0xb7, 0xec, 0x18, 0x9d, 0x6d, 0xf5, 0xd9, 0x4c, 0xff, 0x3c, 0xaa, 0x36, + 0x11, 0x68, 0xa7, 0x34, 0x48, 0x3b, 0xe5, 0x01, 0xda, 0x99, 0x65, 0xb4, 0x33, 0x7a, 0x51, 0xf9, + 0x0c, 0xcc, 0x34, 0xed, 0x76, 0x1b, 0x35, 0x3d, 0x79, 0x94, 0x5b, 0x78, 0x35, 0x67, 0x4a, 0xe7, + 0xd2, 0x70, 0x10, 0x49, 0xe4, 0xd6, 0xc8, 0x1a, 0x3a, 0x51, 0xfa, 0x30, 0x41, 0x7d, 0x99, 0x04, + 0x59, 0xad, 0xb5, 0x85, 0xb8, 0x75, 0xf6, 0x0c, 0xb3, 0xce, 0x7e, 0x12, 0xf2, 0xae, 0xe1, 0x6c, + 0x21, 0xd7, 0x5f, 0x27, 0x20, 0x6f, 0x41, 0x6c, 0x4b, 0x99, 0x89, 0x6d, 0xf9, 0x93, 0x90, 0xf5, + 0x64, 0x46, 0x23, 0xf0, 0x5c, 0xdb, 0x0f, 0x7e, 0x2c, 0xfb, 0x79, 0xaf, 0xc4, 0x79, 0xaf, 0xd6, + 0x3a, 0xfe, 0xa1, 0x17, 0xeb, 0xdc, 0x3e, 0xac, 0xf1, 0x05, 0x5c, 0x4d, 0xdb, 0x2a, 0xef, 0x18, + 0x5b, 0x88, 0x56, 0x33, 0x4c, 0xf0, 0xbf, 0x6a, 0x3b, 0xf6, 0xfd, 0x26, 0x0d, 0x33, 0x19, 0x26, + 0x78, 0x55, 0xd8, 0x36, 0x5b, 0x2d, 0x64, 0xd1, 0x96, 0x4d, 0xdf, 0xce, 0x9c, 0x86, 0xac, 0xc7, + 0x83, 0xa7, 0x3f, 0x9e, 0xb1, 0x50, 0x38, 0xa2, 0xcc, 0x78, 0xcd, 0x8a, 0x34, 0xde, 0x42, 0x86, + 0x5f, 0x53, 0x15, 0x71, 0xdb, 0x21, 0x95, 0xeb, 0xdf, 0xb8, 0x1e, 0x07, 0x39, 0xcb, 0x6e, 0xa1, + 0x81, 0x83, 0x10, 0xc9, 0xa5, 0x3c, 0x11, 0x72, 0xa8, 0xe5, 0xf5, 0x0a, 0x32, 0xce, 0x7e, 0x3a, + 0x5e, 0x96, 0x3a, 0xc9, 0x9c, 0xcc, 0x37, 0xa8, 0x1f, 0xb7, 0xe9, 0x37, 0xc0, 0x5f, 0x9c, 0x80, + 0xa3, 0xa4, 0x0f, 0xa8, 0xed, 0x9e, 0xf7, 0x48, 0x9d, 0x47, 0xea, 0xc3, 0xfd, 0x07, 0xae, 0xa3, + 0xbc, 0xb2, 0x1f, 0x87, 0x5c, 0x77, 0xf7, 0x7c, 0x60, 0x84, 0x92, 0x17, 0xb6, 0xe9, 0x4a, 0x23, + 0x19, 0xce, 0xe4, 0x61, 0x87, 0x33, 0x6e, 0x68, 0x92, 0xfd, 0xc6, 0x1f, 0x0e, 0x64, 0x79, 0x9c, + 0xec, 0x0f, 0x64, 0xfd, 0x86, 0xa1, 0x53, 0x30, 0x61, 0x6c, 0xba, 0xc8, 0x09, 0xcd, 0x44, 0xfa, + 0xea, 0x0d, 0x95, 0xe7, 0xd1, 0xa6, 0xed, 0x78, 0x62, 0x99, 0x22, 0x43, 0xa5, 0xff, 0xce, 0xb4, + 0x5c, 0xe0, 0x76, 0xc8, 0x6e, 0x82, 0x63, 0x96, 0xbd, 0x88, 0x3a, 0x54, 0xce, 0x04, 0xc5, 0x59, + 0xdc, 0x02, 0xf6, 0x7f, 0xd8, 0xd7, 0x95, 0xcc, 0xed, 0xef, 0x4a, 0xd4, 0x4f, 0x27, 0x9d, 0x33, + 0xf7, 0x00, 0x3d, 0x32, 0x0b, 0x4d, 0x79, 0x0a, 0xcc, 0xb4, 0xa8, 0x8b, 0x56, 0xd3, 0x0c, 0x5a, + 0x49, 0xe4, 0x7f, 0x5c, 0xe6, 0x50, 0x91, 0xb2, 0xac, 0x22, 0x2d, 0xc3, 0x24, 0x3e, 0x90, 0xe3, + 0x69, 0x52, 0xae, 0x27, 0x46, 0x1e, 0x9e, 0xd6, 0x05, 0x95, 0x62, 0xc4, 0x36, 0x5f, 0xa2, 0xbf, + 0xe8, 0xc1, 0xcf, 0xc9, 0x66, 0xdf, 0xf1, 0x12, 0x4a, 0xbf, 0x39, 0xfe, 0x76, 0x1e, 0xae, 0x28, + 0x39, 0x76, 0xb7, 0x8b, 0xa3, 0x50, 0xf4, 0x36, 0xcc, 0x37, 0x4a, 0x5c, 0x94, 0xeb, 0x47, 0x74, + 0xf3, 0xeb, 0xd7, 0xa0, 0xc6, 0xd7, 0x34, 0xbe, 0x26, 0x7c, 0x94, 0x39, 0xd8, 0x7f, 0x88, 0x10, + 0xfa, 0x8f, 0x46, 0x23, 0x79, 0x57, 0x46, 0xe4, 0x74, 0x75, 0x42, 0x59, 0xa5, 0xdf, 0x5c, 0xbe, + 0x28, 0xc1, 0x95, 0xbd, 0xdc, 0x6c, 0x58, 0xdd, 0xa0, 0xc1, 0x5c, 0x3d, 0xa0, 0xbd, 0xf0, 0xa7, + 0x71, 0x63, 0xef, 0x97, 0x8a, 0xa8, 0x3b, 0x53, 0x5a, 0xc4, 0x62, 0xc9, 0x7b, 0x32, 0x22, 0xf7, + 0x4b, 0x25, 0x26, 0x9f, 0xbe, 0x70, 0x3f, 0x93, 0x85, 0xa3, 0xcb, 0x8e, 0xbd, 0xdb, 0xe9, 0x86, + 0x3d, 0xd0, 0xdf, 0xf6, 0xdf, 0x70, 0xcd, 0x8b, 0x98, 0x06, 0xd7, 0xc0, 0xb4, 0x43, 0xad, 0xb9, + 0x70, 0xfb, 0x95, 0x4d, 0x62, 0x7b, 0x2f, 0xf9, 0x20, 0xbd, 0x57, 0xd8, 0xcf, 0x64, 0xb9, 0x7e, + 0xa6, 0xb7, 0xe7, 0xc8, 0xf5, 0xe9, 0x39, 0xfe, 0x46, 0x4a, 0x38, 0xa8, 0xf6, 0x88, 0x28, 0xa2, + 0xbf, 0x28, 0x41, 0x7e, 0x0b, 0x67, 0xa4, 0xdd, 0xc5, 0x63, 0xc5, 0x6a, 0x86, 0x89, 0xeb, 0xf4, + 0xd7, 0x50, 0xae, 0x32, 0xab, 0xc3, 0x89, 0x06, 0xb8, 0x78, 0x6e, 0xd3, 0x57, 0xaa, 0x87, 0xb2, + 0x30, 0x13, 0x94, 0x5e, 0x6e, 0x75, 0xd5, 0x17, 0xf6, 0xd7, 0xa8, 0x59, 0x11, 0x8d, 0xda, 0xb7, + 0xce, 0x1c, 0x8c, 0x3a, 0x32, 0x33, 0xea, 0xf4, 0x1d, 0x5d, 0x66, 0x22, 0x46, 0x17, 0xf5, 0x59, + 0xb2, 0xe8, 0x3d, 0x11, 0x7c, 0xd7, 0x8a, 0x6b, 0xf3, 0x48, 0x1e, 0x2c, 0x04, 0x6f, 0xab, 0x18, + 0x5c, 0xab, 0xf4, 0x95, 0xe4, 0x03, 0x12, 0x1c, 0xdb, 0xdf, 0x99, 0xff, 0x18, 0xef, 0x85, 0xe6, + 0xd5, 0xa9, 0x1b, 0x78, 0xa1, 0xe1, 0x37, 0x7e, 0x93, 0x2e, 0xf6, 0x68, 0x2c, 0x67, 0xef, 0x0d, + 0xee, 0xc4, 0xc5, 0x0e, 0xbf, 0x0a, 0x12, 0x4d, 0x5f, 0x80, 0xbf, 0x2a, 0xc3, 0x54, 0x0d, 0xb9, + 0xab, 0xc6, 0x25, 0x7b, 0xd7, 0x55, 0x0d, 0xd1, 0xed, 0xb9, 0x27, 0x43, 0xbe, 0x8d, 0x7f, 0xa1, + 0xd7, 0xef, 0x5e, 0xd3, 0x77, 0x7f, 0x0b, 0xfb, 0xfe, 0x10, 0xd2, 0x3a, 0xcd, 0xcf, 0x9f, 0x49, + 0x16, 0xd9, 0x1d, 0x0d, 0xb8, 0x1b, 0xc9, 0xd6, 0x4e, 0xa2, 0xbd, 0xd3, 0xa8, 0xa2, 0xd3, 0x87, + 0xe5, 0x39, 0x32, 0xcc, 0xd6, 0x90, 0x5b, 0xee, 0x2e, 0x19, 0x7b, 0xb6, 0x63, 0xba, 0x88, 0xbd, + 0x7f, 0x2b, 0x1e, 0x9a, 0xd3, 0x00, 0x66, 0xf0, 0x1b, 0x8d, 0x94, 0xc0, 0xa4, 0xa8, 0xbf, 0x95, + 0xd4, 0x51, 0x88, 0xe3, 0x63, 0x24, 0x20, 0x24, 0xf2, 0xb1, 0x88, 0x2b, 0x3e, 0x7d, 0x20, 0xbe, + 0x20, 0x51, 0x20, 0x8a, 0x4e, 0x73, 0xdb, 0xdc, 0x43, 0xad, 0x84, 0x40, 0xf8, 0xbf, 0x85, 0x40, + 0x04, 0x84, 0x12, 0xbb, 0xaf, 0x70, 0x7c, 0x8c, 0xc2, 0x7d, 0x25, 0x8e, 0xe0, 0x58, 0x82, 0x1d, + 0x78, 0x5d, 0x0f, 0x5d, 0xcf, 0xbc, 0x4b, 0x54, 0xac, 0xa1, 0xc9, 0x26, 0xb1, 0x26, 0xdb, 0x50, + 0x1d, 0x0b, 0x29, 0x7b, 0x90, 0x4e, 0x67, 0xd3, 0xe8, 0x58, 0xfa, 0x16, 0x9d, 0xbe, 0xd0, 0xdf, + 0x23, 0xc3, 0x89, 0xe0, 0x14, 0x70, 0x0d, 0xb9, 0x8b, 0x46, 0x77, 0xfb, 0xbc, 0x6d, 0x38, 0x2d, + 0xf6, 0x5a, 0xe6, 0xa1, 0x4f, 0xfc, 0xa9, 0x9f, 0x67, 0x41, 0xa8, 0xf0, 0x20, 0xf4, 0x75, 0x15, + 0xed, 0xcb, 0xcb, 0x28, 0x3a, 0x99, 0x58, 0x6f, 0xd6, 0xdf, 0x09, 0xc0, 0x7a, 0x1a, 0x07, 0xd6, + 0x9d, 0xc3, 0xb2, 0x98, 0x3e, 0x70, 0xbf, 0x41, 0x46, 0x04, 0xc6, 0xab, 0xf9, 0x3e, 0x51, 0xc0, + 0x22, 0xbc, 0x5a, 0xe5, 0x48, 0xaf, 0xd6, 0xa1, 0xc6, 0x88, 0x81, 0x1e, 0xc9, 0xe9, 0x8e, 0x11, + 0x87, 0xe8, 0x6d, 0xfc, 0x0e, 0x19, 0x0a, 0x38, 0x0c, 0x04, 0xe3, 0xf1, 0xad, 0xde, 0x2f, 0x8a, + 0xce, 0x3e, 0xef, 0xf2, 0x89, 0xa4, 0xde, 0xe5, 0xea, 0xdb, 0x93, 0xfa, 0x90, 0xf7, 0x72, 0x3b, + 0x12, 0xc4, 0x12, 0xb9, 0x88, 0x0f, 0xe0, 0x20, 0x7d, 0xd0, 0x7e, 0x49, 0x06, 0xf0, 0x1a, 0x34, + 0x3d, 0xfb, 0xf0, 0x74, 0x51, 0xb8, 0x6e, 0x66, 0xfd, 0xea, 0x3d, 0xa0, 0x4e, 0xf4, 0x00, 0x45, + 0x28, 0x86, 0xa7, 0x2a, 0x1e, 0x4e, 0xea, 0x5b, 0x19, 0x72, 0x35, 0x12, 0x58, 0x12, 0x79, 0x5b, + 0x46, 0x96, 0x9d, 0x3e, 0x20, 0xff, 0x5d, 0x82, 0x5c, 0xdd, 0xae, 0x21, 0xf7, 0xe0, 0xa6, 0x40, + 0xe2, 0x63, 0xfb, 0xb8, 0xdc, 0x51, 0x1c, 0xdb, 0xef, 0x47, 0x28, 0x7d, 0xd1, 0xbd, 0x5b, 0x82, + 0x99, 0xba, 0x5d, 0x0a, 0x16, 0xa7, 0xc4, 0x7d, 0x55, 0xc5, 0xef, 0xba, 0x0c, 0x2a, 0x18, 0x16, + 0x73, 0xa0, 0xbb, 0x2e, 0x07, 0xd3, 0x4b, 0x5f, 0x6e, 0xb7, 0xc1, 0xd1, 0x0d, 0xab, 0x65, 0xeb, + 0xa8, 0x65, 0xd3, 0x95, 0x6e, 0x45, 0x81, 0xec, 0xae, 0xd5, 0xb2, 0x31, 0xcb, 0x39, 0x1d, 0x3f, + 0x7b, 0x69, 0x0e, 0x6a, 0xd9, 0xd4, 0x37, 0x00, 0x3f, 0xab, 0x5f, 0x93, 0x21, 0xeb, 0xfd, 0x2b, + 0x2e, 0xea, 0x77, 0xc8, 0x09, 0x03, 0x11, 0x78, 0xe4, 0x47, 0x62, 0x09, 0xdd, 0xc5, 0xac, 0xfd, + 0x13, 0x0f, 0xd6, 0x6b, 0xa3, 0xca, 0x63, 0x44, 0x11, 0xae, 0xf9, 0x2b, 0xa7, 0x60, 0xe2, 0x7c, + 0xdb, 0x6e, 0x5e, 0x08, 0xcf, 0xcb, 0xd3, 0x57, 0xe5, 0x46, 0xc8, 0x39, 0x86, 0xb5, 0x85, 0xe8, + 0x9e, 0xc2, 0xf1, 0x9e, 0xbe, 0x10, 0x7b, 0xbd, 0xe8, 0x24, 0x8b, 0xfa, 0xf6, 0x24, 0x21, 0x10, + 0xfa, 0x54, 0x3e, 0x99, 0x3e, 0x2c, 0x0e, 0x71, 0xb2, 0xac, 0x00, 0x33, 0xa5, 0x22, 0xb9, 0x55, + 0x76, 0xad, 0x7a, 0x56, 0x2b, 0xc8, 0x18, 0x66, 0x4f, 0x26, 0x29, 0xc2, 0xec, 0x91, 0xff, 0x91, + 0x85, 0xb9, 0x4f, 0xe5, 0x0f, 0x03, 0xe6, 0x4f, 0x4a, 0x30, 0xbb, 0x6a, 0x76, 0xdd, 0x28, 0x6f, + 0xff, 0x98, 0x28, 0x70, 0x2f, 0x4a, 0x6a, 0x2a, 0x73, 0xe5, 0x08, 0x87, 0x7f, 0x4b, 0x64, 0x0e, + 0xc7, 0x15, 0x31, 0x9e, 0x63, 0x29, 0x98, 0x03, 0x72, 0x13, 0xa4, 0xb0, 0x24, 0x13, 0x1b, 0x4a, + 0x61, 0x21, 0xe3, 0x37, 0x94, 0x22, 0xcb, 0x4e, 0x5f, 0xbe, 0x5f, 0x93, 0xe0, 0x98, 0x57, 0x7c, + 0xdc, 0xb2, 0x54, 0xb4, 0x98, 0x07, 0x2e, 0x4b, 0x25, 0x5e, 0x19, 0xdf, 0xc7, 0xcb, 0x28, 0x56, + 0xc6, 0x07, 0x11, 0x1d, 0xb3, 0x98, 0x23, 0x96, 0x61, 0x07, 0x89, 0x39, 0x66, 0x19, 0x76, 0x78, + 0x31, 0xc7, 0x2f, 0xc5, 0x0e, 0x29, 0xe6, 0x43, 0x5b, 0x60, 0xfd, 0x4d, 0x39, 0x10, 0x73, 0xe4, + 0xda, 0x46, 0x8c, 0x98, 0x13, 0x9f, 0xd8, 0xe5, 0x2f, 0xd7, 0x4c, 0x20, 0xf8, 0x11, 0xaf, 0x6f, + 0x0c, 0x03, 0xd3, 0x21, 0xae, 0x71, 0xbc, 0x5c, 0x86, 0x39, 0xca, 0x45, 0xff, 0x29, 0x73, 0x0c, + 0x46, 0x89, 0xa7, 0xcc, 0x89, 0xcf, 0x00, 0xf1, 0x9c, 0x8d, 0xff, 0x0c, 0x50, 0x6c, 0xf9, 0xe9, + 0x83, 0xf3, 0xf5, 0x2c, 0x9c, 0xf4, 0x58, 0x58, 0xb3, 0x5b, 0xe6, 0xe6, 0x25, 0xc2, 0xc5, 0x59, + 0xa3, 0xbd, 0x8b, 0xba, 0xea, 0xfb, 0x24, 0x51, 0x94, 0xfe, 0x13, 0x80, 0xdd, 0x41, 0x0e, 0x09, + 0xa4, 0x46, 0x81, 0xba, 0x23, 0xaa, 0xb2, 0xfb, 0x4b, 0x0a, 0x82, 0xa2, 0x57, 0x7d, 0x22, 0x3a, + 0x43, 0xcf, 0xb3, 0x0a, 0xa7, 0x82, 0x2f, 0xbd, 0x0e, 0x1e, 0x99, 0xfd, 0x0e, 0x1e, 0x37, 0x80, + 0x6c, 0xb4, 0x5a, 0x01, 0x54, 0xbd, 0x9b, 0xd9, 0xb8, 0x4c, 0xdd, 0xcb, 0xe2, 0xe5, 0xec, 0xa2, + 0xf0, 0x68, 0x5e, 0x44, 0xce, 0x2e, 0x72, 0x95, 0x79, 0xc8, 0x93, 0x1b, 0x04, 0x83, 0x15, 0xfd, + 0xfe, 0x99, 0x69, 0x2e, 0xde, 0xb4, 0xab, 0xf2, 0x6a, 0x78, 0x5b, 0x22, 0xc9, 0xf4, 0xeb, 0xa7, + 0x43, 0x3b, 0x59, 0xe7, 0x14, 0xec, 0xa9, 0x43, 0x53, 0x1e, 0xcf, 0x6e, 0x58, 0xb1, 0xd3, 0x69, + 0x5f, 0xaa, 0xd3, 0xe0, 0x2b, 0x89, 0x76, 0xc3, 0x98, 0x18, 0x2e, 0x52, 0x6f, 0x0c, 0x97, 0xe4, + 0xbb, 0x61, 0x1c, 0x1f, 0xa3, 0xd8, 0x0d, 0x8b, 0x23, 0x38, 0x86, 0xf5, 0xc8, 0x1c, 0xb1, 0x9a, + 0x69, 0x8c, 0xda, 0x37, 0xf5, 0x3f, 0x84, 0x06, 0xbc, 0xb3, 0x4b, 0xbf, 0xf0, 0xb5, 0xb1, 0xb1, + 0xb9, 0x95, 0x27, 0x42, 0x7e, 0xd3, 0x76, 0x76, 0x0c, 0x7f, 0xe3, 0xbe, 0xf7, 0xa4, 0x08, 0x8d, + 0x0b, 0xbb, 0x84, 0xf3, 0xe8, 0x34, 0xaf, 0x37, 0x1f, 0x79, 0xa6, 0xd9, 0xa1, 0x51, 0x17, 0xbd, + 0x47, 0xe5, 0x3a, 0x98, 0xa5, 0xc1, 0x17, 0x2b, 0xa8, 0xeb, 0xa2, 0x16, 0x8d, 0x58, 0xc1, 0x27, + 0x2a, 0x67, 0x60, 0x86, 0x26, 0x2c, 0x99, 0x6d, 0xd4, 0xa5, 0x41, 0x2b, 0xb8, 0x34, 0xe5, 0x24, + 0xe4, 0xcd, 0xee, 0x3d, 0x5d, 0xdb, 0xc2, 0xfe, 0xff, 0x93, 0x3a, 0x7d, 0x53, 0x6e, 0x80, 0xa3, + 0x34, 0x5f, 0x60, 0xac, 0x92, 0x03, 0x3b, 0xbd, 0xc9, 0xea, 0x67, 0x87, 0x99, 0x38, 0x24, 0x8e, + 0xc7, 0xeb, 0xa1, 0xb0, 0xdb, 0x6c, 0x22, 0xd4, 0xa2, 0x27, 0x9b, 0xfc, 0xd7, 0x84, 0x91, 0x7a, + 0x13, 0x4f, 0x33, 0x0e, 0x29, 0x54, 0xef, 0x87, 0x4f, 0x40, 0x9e, 0x5c, 0x7b, 0xa1, 0xbe, 0x74, + 0xae, 0xaf, 0x32, 0xce, 0xf1, 0xca, 0xb8, 0x01, 0x33, 0x96, 0xed, 0x15, 0xb7, 0x6e, 0x38, 0xc6, + 0x4e, 0x37, 0x6e, 0x15, 0x91, 0xd0, 0x0d, 0x86, 0x8c, 0x0a, 0xf3, 0xdb, 0xca, 0x11, 0x9d, 0x23, + 0xa3, 0xfc, 0x6f, 0x70, 0xf4, 0x3c, 0x8d, 0x00, 0xd0, 0xa5, 0x94, 0xa5, 0x68, 0x1f, 0xbb, 0x1e, + 0xca, 0x0b, 0xfc, 0x9f, 0x2b, 0x47, 0xf4, 0x5e, 0x62, 0xca, 0x4f, 0xc3, 0x9c, 0xf7, 0xda, 0xb2, + 0x2f, 0xfa, 0x8c, 0xcb, 0xd1, 0x86, 0x46, 0x0f, 0xf9, 0x35, 0xee, 0xc7, 0x95, 0x23, 0x7a, 0x0f, + 0x29, 0xa5, 0x0a, 0xb0, 0xed, 0xee, 0xb4, 0x29, 0xe1, 0x6c, 0xb4, 0x4a, 0xf6, 0x10, 0x5e, 0x09, + 0x7e, 0x5a, 0x39, 0xa2, 0x33, 0x24, 0x94, 0x55, 0x98, 0x72, 0x1f, 0x70, 0x29, 0xbd, 0x5c, 0xf4, + 0xe6, 0x76, 0x0f, 0xbd, 0xba, 0xff, 0xcf, 0xca, 0x11, 0x3d, 0x24, 0xa0, 0x94, 0x61, 0xb2, 0x73, + 0x9e, 0x12, 0xcb, 0xf7, 0xb9, 0x5e, 0xbe, 0x3f, 0xb1, 0xf5, 0xf3, 0x01, 0xad, 0xe0, 0x77, 0x8f, + 0xb1, 0x66, 0x77, 0x8f, 0xd2, 0x9a, 0x10, 0x66, 0xac, 0xe4, 0xff, 0xe3, 0x31, 0x16, 0x10, 0x50, + 0xca, 0x30, 0xd5, 0xb5, 0x8c, 0x4e, 0x77, 0xdb, 0x76, 0xbb, 0xa7, 0x26, 0x7b, 0xfc, 0x20, 0xa3, + 0xa9, 0xd5, 0xe8, 0x3f, 0x7a, 0xf8, 0xb7, 0xf2, 0x44, 0x38, 0xb1, 0x8b, 0xaf, 0x0f, 0xd5, 0x1e, + 0x30, 0xbb, 0xae, 0x69, 0x6d, 0xf9, 0x31, 0x64, 0x49, 0x6f, 0xd2, 0xff, 0xa3, 0x32, 0x4f, 0x4f, + 0x44, 0x01, 0x6e, 0x9b, 0x6a, 0xef, 0x66, 0x1c, 0x29, 0x96, 0x39, 0x08, 0xf5, 0x14, 0xc8, 0x7a, + 0x9f, 0xf0, 0x99, 0xcd, 0xb9, 0xfe, 0x0b, 0x7d, 0xbd, 0xba, 0x83, 0x1b, 0xb0, 0xf7, 0x93, 0x37, + 0x36, 0x5a, 0xf6, 0xba, 0x63, 0x6f, 0x39, 0xa8, 0xdb, 0xa5, 0x0e, 0x87, 0x4c, 0x8a, 0xd7, 0xc0, + 0xcd, 0x2e, 0xb9, 0x27, 0x3e, 0xf4, 0x77, 0x67, 0x93, 0xc8, 0x6c, 0xb3, 0x82, 0x2e, 0x62, 0x87, + 0x60, 0x7c, 0xfe, 0x06, 0xcf, 0x36, 0xfd, 0x14, 0xf5, 0x7a, 0x98, 0x61, 0x1b, 0x19, 0xb9, 0x3b, + 0xcb, 0x0c, 0x6d, 0x2f, 0xfa, 0xa6, 0x5e, 0x07, 0x73, 0xbc, 0x4e, 0x33, 0x43, 0x8c, 0xec, 0x77, + 0x85, 0xea, 0xb5, 0x70, 0xb4, 0xa7, 0x61, 0xf9, 0x31, 0x45, 0x32, 0x61, 0x4c, 0x91, 0x6b, 0x00, + 0x42, 0x2d, 0xee, 0x4b, 0xe6, 0x6a, 0x98, 0x0a, 0xf4, 0xb2, 0x6f, 0x86, 0xaf, 0x64, 0x60, 0xd2, + 0x57, 0xb6, 0x7e, 0x19, 0xbc, 0xf1, 0xc5, 0x62, 0x36, 0x10, 0xe8, 0x34, 0x9b, 0x4b, 0xf3, 0xc6, + 0x91, 0xd0, 0x6d, 0xb7, 0x6e, 0xba, 0x6d, 0xff, 0xe8, 0x5b, 0x6f, 0xb2, 0xb2, 0x0e, 0x60, 0x62, + 0x8c, 0xea, 0xe1, 0x59, 0xb8, 0x5b, 0x12, 0xb4, 0x07, 0xa2, 0x0f, 0x0c, 0x8d, 0x33, 0x3f, 0x46, + 0x0f, 0xaa, 0x4d, 0x41, 0xae, 0xb6, 0x5e, 0x2c, 0x69, 0x85, 0x23, 0xca, 0x1c, 0x80, 0xf6, 0xf4, + 0x75, 0x4d, 0x2f, 0x6b, 0x95, 0x92, 0x56, 0xc8, 0xa8, 0xaf, 0x90, 0x60, 0x2a, 0x68, 0x04, 0x7d, + 0x2b, 0xa9, 0x51, 0xd5, 0x1a, 0x78, 0x3d, 0xd1, 0xfe, 0x46, 0xc5, 0x2a, 0xd9, 0x93, 0xe1, 0xf2, + 0xdd, 0x2e, 0x5a, 0x32, 0x9d, 0xae, 0xab, 0xdb, 0x17, 0x97, 0x6c, 0x27, 0x88, 0x9a, 0xec, 0x5f, + 0xd3, 0x1f, 0xf1, 0xd9, 0xb3, 0x28, 0x5a, 0x08, 0x1f, 0x8a, 0x42, 0x0e, 0x5d, 0x19, 0x0e, 0x13, + 0x3c, 0xba, 0x2e, 0xb9, 0x17, 0xbf, 0x8b, 0x74, 0xfb, 0x62, 0xb7, 0x68, 0xb5, 0x4a, 0x76, 0x7b, + 0x77, 0xc7, 0xea, 0x52, 0x9b, 0x20, 0xea, 0xb3, 0x27, 0x1d, 0x7c, 0xf9, 0xd8, 0x1c, 0x40, 0xa9, + 0xba, 0xba, 0xaa, 0x95, 0xea, 0xe5, 0x6a, 0xa5, 0x70, 0xc4, 0x93, 0x56, 0xbd, 0xb8, 0xb0, 0xea, + 0x49, 0xe7, 0x67, 0x60, 0xd2, 0x6f, 0xd3, 0x34, 0x0c, 0x4a, 0xc6, 0x0f, 0x83, 0xa2, 0x14, 0x61, + 0xd2, 0x6f, 0xe5, 0x74, 0x44, 0x78, 0x74, 0xef, 0xb1, 0xd7, 0x1d, 0xc3, 0x71, 0xb1, 0xbf, 0xb4, + 0x4f, 0x64, 0xc1, 0xe8, 0x22, 0x3d, 0xf8, 0xed, 0xcc, 0xe3, 0x28, 0x07, 0x0a, 0xcc, 0x15, 0x57, + 0x57, 0x1b, 0x55, 0xbd, 0x51, 0xa9, 0xd6, 0x57, 0xca, 0x95, 0x65, 0x32, 0x42, 0x96, 0x97, 0x2b, + 0x55, 0x5d, 0x23, 0x03, 0x64, 0xad, 0x90, 0x21, 0x97, 0xdf, 0x2d, 0x4c, 0x42, 0xbe, 0x83, 0xa5, + 0xab, 0x7e, 0x51, 0x4e, 0x78, 0xde, 0x3d, 0xc0, 0x29, 0xe2, 0x7a, 0x2e, 0xce, 0xe7, 0x5c, 0xea, + 0x73, 0x26, 0xf4, 0x0c, 0xcc, 0x10, 0x5b, 0xae, 0x8b, 0x97, 0xef, 0xe9, 0x0d, 0xb7, 0x5c, 0x9a, + 0xfa, 0x51, 0x29, 0xc1, 0x21, 0xf8, 0xbe, 0x1c, 0x25, 0x33, 0x2e, 0xfe, 0x62, 0x98, 0xcb, 0xee, + 0x14, 0x98, 0x2b, 0x57, 0xea, 0x9a, 0x5e, 0x29, 0xae, 0xd2, 0x2c, 0xb2, 0x72, 0x0a, 0x8e, 0x57, + 0xaa, 0x34, 0xa6, 0x5f, 0x0d, 0x5f, 0xab, 0xbd, 0xb6, 0x5e, 0xd5, 0xeb, 0x85, 0x9c, 0x72, 0x12, + 0x14, 0xf2, 0xcc, 0xdd, 0x5a, 0x9f, 0x57, 0x1e, 0x03, 0xd7, 0xae, 0x96, 0xd7, 0xca, 0xf5, 0x46, + 0x75, 0xa9, 0xa1, 0x57, 0xcf, 0xd5, 0x3c, 0x04, 0x75, 0x6d, 0xb5, 0xe8, 0x29, 0x12, 0x73, 0x09, + 0xde, 0x84, 0x72, 0x19, 0x1c, 0xc5, 0x17, 0x5c, 0xe2, 0x9b, 0xef, 0x49, 0x79, 0x93, 0xca, 0x55, + 0x70, 0xaa, 0x5c, 0xa9, 0x6d, 0x2c, 0x2d, 0x95, 0x4b, 0x65, 0xad, 0x52, 0x6f, 0xac, 0x6b, 0xfa, + 0x5a, 0xb9, 0x56, 0xf3, 0xfe, 0x2d, 0x4c, 0xe1, 0x2b, 0xc6, 0x48, 0x9f, 0xa9, 0xbe, 0x57, 0x86, + 0xd9, 0xb3, 0x46, 0xdb, 0xf4, 0x06, 0x0a, 0x7c, 0xf7, 0x60, 0xcf, 0x71, 0x11, 0x17, 0xdf, 0x51, + 0x48, 0x1d, 0xce, 0xf1, 0x8b, 0xfa, 0xf3, 0x72, 0xc2, 0xe3, 0x22, 0x14, 0x08, 0x52, 0xe2, 0x3c, + 0x57, 0x5a, 0xc4, 0xe4, 0xe6, 0x75, 0x52, 0x82, 0xe3, 0x22, 0xe2, 0xe4, 0x93, 0x81, 0xff, 0xca, + 0x51, 0x81, 0x5f, 0x80, 0x99, 0x8d, 0x4a, 0x71, 0xa3, 0xbe, 0x52, 0xd5, 0xcb, 0x3f, 0x85, 0xa3, + 0x8d, 0xcf, 0xc2, 0xd4, 0x52, 0x55, 0x5f, 0x28, 0x2f, 0x2e, 0x6a, 0x95, 0x42, 0x4e, 0xb9, 0x1c, + 0x2e, 0xab, 0x69, 0xfa, 0xd9, 0x72, 0x49, 0x6b, 0x6c, 0x54, 0x8a, 0x67, 0x8b, 0xe5, 0x55, 0xdc, + 0x47, 0xe4, 0x63, 0xee, 0x4d, 0x9c, 0x50, 0x7f, 0x36, 0x0b, 0x40, 0xaa, 0xee, 0x59, 0xd2, 0xec, + 0xed, 0x7a, 0x7f, 0x99, 0x74, 0xd2, 0x10, 0x92, 0x89, 0x68, 0xbf, 0x65, 0x98, 0x74, 0xe8, 0x07, + 0xba, 0x7c, 0x32, 0x88, 0x0e, 0x79, 0xf4, 0xa9, 0xe9, 0xc1, 0xef, 0xea, 0xfb, 0x92, 0xcc, 0x11, + 0x22, 0x19, 0x4b, 0x86, 0xe4, 0xd2, 0x68, 0x80, 0x54, 0x5f, 0x98, 0x81, 0x39, 0xbe, 0x62, 0x5e, + 0x25, 0xb0, 0x31, 0x25, 0x56, 0x09, 0xfe, 0x67, 0xc6, 0xc8, 0x3a, 0xf3, 0x04, 0x3a, 0x9c, 0x82, + 0xdf, 0x32, 0xc9, 0xc9, 0x6f, 0xdf, 0x62, 0x29, 0x64, 0x3c, 0xe6, 0x3d, 0xa3, 0x83, 0x5c, 0xad, + 0x5e, 0x7f, 0xc0, 0x2d, 0xc8, 0xea, 0x57, 0x64, 0x98, 0xe5, 0xae, 0xef, 0x53, 0x5f, 0x97, 0x11, + 0xb9, 0x5a, 0x8b, 0xb9, 0x18, 0x30, 0x73, 0xd0, 0x8b, 0x01, 0xcf, 0xdc, 0x0c, 0x13, 0x34, 0x0d, + 0xcb, 0xb7, 0x5a, 0xf1, 0x4c, 0x81, 0xa3, 0x30, 0xbd, 0xac, 0xd5, 0x1b, 0xb5, 0x7a, 0x51, 0xaf, + 0x6b, 0x8b, 0x85, 0x8c, 0x37, 0xf0, 0x69, 0x6b, 0xeb, 0xf5, 0xfb, 0x0a, 0x52, 0x72, 0x0f, 0xbc, + 0x5e, 0x46, 0xc6, 0xec, 0x81, 0x17, 0x57, 0x7c, 0xfa, 0x73, 0xd5, 0x4f, 0xcb, 0x50, 0x20, 0x1c, + 0x68, 0x0f, 0x74, 0x90, 0x63, 0x22, 0xab, 0x89, 0xd4, 0x0b, 0x22, 0x11, 0x3f, 0xf7, 0xc5, 0xc2, + 0xc3, 0xfd, 0x39, 0x63, 0x25, 0x92, 0x97, 0x1e, 0x03, 0x3b, 0xbb, 0xcf, 0xc0, 0xfe, 0x54, 0x52, + 0x17, 0xbc, 0x5e, 0x76, 0x47, 0x02, 0xd9, 0x27, 0x92, 0xb8, 0xe0, 0x0d, 0xe0, 0x60, 0x2c, 0x81, + 0x7c, 0x23, 0xc6, 0xdf, 0x82, 0xac, 0xbe, 0x40, 0x86, 0xa3, 0x8b, 0x86, 0x8b, 0x16, 0x2e, 0xd5, + 0xcd, 0x1d, 0xd4, 0x75, 0x8d, 0x9d, 0x4e, 0xc4, 0x95, 0x78, 0x99, 0x7d, 0x57, 0xe2, 0xb9, 0xfe, + 0x1f, 0x98, 0x53, 0x59, 0x0f, 0x13, 0xd4, 0x77, 0x25, 0x3d, 0xb4, 0xd7, 0xc3, 0xc3, 0xc8, 0xa2, + 0xed, 0x26, 0x3b, 0x8c, 0x17, 0xcf, 0xc5, 0x18, 0x6e, 0xa8, 0x9d, 0x82, 0x02, 0x61, 0x85, 0xf1, + 0x32, 0xfb, 0x55, 0x7a, 0x8b, 0x64, 0x23, 0x41, 0x50, 0x3f, 0x3f, 0x4c, 0x82, 0xc4, 0x87, 0x49, + 0xe0, 0x16, 0x2d, 0xe5, 0x5e, 0xcf, 0x80, 0xa4, 0x9d, 0x21, 0xe3, 0x52, 0x16, 0x1d, 0x47, 0x35, + 0xbd, 0xce, 0x30, 0xb6, 0xf8, 0xf1, 0xdc, 0x74, 0x46, 0xef, 0x32, 0xd4, 0x44, 0x91, 0x89, 0xbf, + 0xd0, 0x31, 0xa9, 0x7f, 0x31, 0xe7, 0xd2, 0x17, 0x73, 0xcb, 0x61, 0x7a, 0xfe, 0xc5, 0x83, 0x38, + 0x48, 0x1f, 0x85, 0xef, 0x4b, 0x90, 0xad, 0xd9, 0x8e, 0x3b, 0x2a, 0x0c, 0x92, 0xee, 0x89, 0x32, + 0x12, 0xa8, 0x45, 0xcf, 0x39, 0xd3, 0xdb, 0x13, 0x8d, 0x2f, 0x7f, 0x0c, 0x71, 0x11, 0x8f, 0xc2, + 0x1c, 0xe1, 0x24, 0xb8, 0x34, 0xe4, 0x7b, 0x12, 0xe9, 0xaf, 0xee, 0x15, 0x45, 0xe4, 0x0c, 0xcc, + 0x30, 0x7b, 0x92, 0xc1, 0x85, 0xd9, 0x6c, 0x9a, 0xfa, 0x46, 0x16, 0x97, 0x45, 0x1e, 0x97, 0x7e, + 0x33, 0xee, 0xe0, 0xde, 0x8d, 0x51, 0xf5, 0x4c, 0x49, 0x42, 0x2c, 0xc6, 0x14, 0x9e, 0x3e, 0x22, + 0x0f, 0xca, 0x90, 0xa7, 0x3e, 0x61, 0x23, 0x45, 0x20, 0x69, 0xcb, 0x08, 0x84, 0x20, 0xe6, 0x3b, + 0x26, 0x8f, 0xba, 0x65, 0xc4, 0x97, 0x9f, 0x3e, 0x0e, 0x3f, 0xa0, 0xce, 0x8e, 0xc5, 0x3d, 0xc3, + 0x6c, 0x1b, 0xe7, 0xdb, 0x09, 0x42, 0x1b, 0x7f, 0x34, 0xe1, 0xf1, 0xae, 0xa0, 0xaa, 0x5c, 0x79, + 0x11, 0x12, 0xff, 0x09, 0x98, 0x72, 0x82, 0x25, 0x49, 0xff, 0xf4, 0x7b, 0x8f, 0xa3, 0x29, 0xfd, + 0xae, 0x87, 0x39, 0x13, 0x9d, 0xe5, 0x12, 0xe2, 0x67, 0x2c, 0x67, 0x4f, 0xa6, 0x8b, 0xad, 0xd6, + 0x12, 0x32, 0xdc, 0x5d, 0x07, 0xb5, 0x12, 0x0d, 0x11, 0xbc, 0x88, 0xa6, 0x58, 0x49, 0x70, 0xc1, + 0x05, 0x57, 0x79, 0x74, 0x9e, 0x34, 0xa0, 0x37, 0xf0, 0x79, 0x19, 0x49, 0x97, 0xf4, 0xd6, 0x00, + 0x92, 0x2a, 0x07, 0xc9, 0x53, 0x86, 0x63, 0x22, 0x7d, 0x40, 0x7e, 0x5d, 0x86, 0x39, 0x62, 0x27, + 0x8c, 0x1a, 0x93, 0xdf, 0x4f, 0xe8, 0x43, 0xc2, 0x5c, 0xcb, 0xc4, 0xb2, 0x33, 0x12, 0x58, 0x92, + 0x78, 0x9c, 0x88, 0xf1, 0x91, 0x3e, 0x32, 0x9f, 0xcd, 0x03, 0x30, 0x7e, 0x81, 0x1f, 0xcd, 0x87, + 0x81, 0xfe, 0xd4, 0xb7, 0xd3, 0xf9, 0x47, 0x8d, 0x8b, 0x3a, 0xcd, 0xf8, 0xfc, 0x05, 0x1b, 0x52, + 0x7c, 0xa2, 0xd0, 0xa8, 0xf2, 0x17, 0x09, 0x6d, 0x5e, 0xea, 0x95, 0x37, 0x70, 0x70, 0x1f, 0xb2, + 0x97, 0xfb, 0x58, 0x02, 0xe3, 0x77, 0x10, 0x2b, 0xc9, 0x50, 0x5b, 0x1d, 0x62, 0x66, 0x7f, 0x0a, + 0x8e, 0xeb, 0x5a, 0x71, 0xb1, 0x5a, 0x59, 0xbd, 0x8f, 0xbd, 0xa3, 0xa7, 0x20, 0xb3, 0x93, 0x93, + 0x54, 0x60, 0x7b, 0x7d, 0xc2, 0x3e, 0x90, 0x97, 0x55, 0xdc, 0x6c, 0x85, 0x59, 0x5c, 0x19, 0xdc, + 0xab, 0x09, 0x90, 0x3d, 0x4c, 0x14, 0x1e, 0x04, 0xa6, 0x19, 0x3d, 0x5f, 0x86, 0x42, 0x78, 0x4d, + 0x3c, 0xbd, 0x8c, 0xad, 0xca, 0xbb, 0x0d, 0x76, 0xc8, 0xfe, 0x53, 0xe8, 0x36, 0xe8, 0x27, 0x28, + 0xd7, 0xc3, 0x5c, 0x73, 0x1b, 0x35, 0x2f, 0x94, 0x2d, 0x7f, 0x5f, 0x9d, 0x6c, 0xc2, 0xf6, 0xa4, + 0xf2, 0xc0, 0xdc, 0xcb, 0x03, 0xc3, 0x4f, 0xa2, 0xb9, 0x41, 0x9a, 0x65, 0x2a, 0x02, 0x97, 0x3f, + 0x0a, 0x70, 0xa9, 0x70, 0xb8, 0xdc, 0x3e, 0x14, 0xd5, 0x64, 0xb0, 0x54, 0x86, 0x80, 0x45, 0x85, + 0x93, 0xd5, 0xf5, 0x7a, 0xb9, 0x5a, 0x69, 0x6c, 0xd4, 0xb4, 0xc5, 0xc6, 0x82, 0x0f, 0x4e, 0xad, + 0x20, 0xab, 0xdf, 0x90, 0x60, 0x82, 0xb0, 0xd5, 0xed, 0xb9, 0xd6, 0x3d, 0xde, 0x5f, 0x52, 0x7d, + 0x9b, 0x70, 0xf4, 0x83, 0x40, 0x10, 0xb4, 0x9c, 0x88, 0x7e, 0xea, 0xc9, 0x30, 0x41, 0x40, 0xf6, + 0x57, 0xb4, 0x4e, 0x47, 0xf4, 0x52, 0x94, 0x8c, 0xee, 0x67, 0x17, 0x8c, 0x84, 0x30, 0x80, 0x8d, + 0xf4, 0x47, 0x96, 0x67, 0x65, 0x89, 0x19, 0x7c, 0xce, 0x74, 0xb7, 0xb1, 0x3b, 0xa5, 0xfa, 0x34, + 0x91, 0xe5, 0xc5, 0x9b, 0x20, 0xb7, 0xe7, 0xe5, 0x1e, 0xe0, 0x9a, 0x4a, 0x32, 0xa9, 0xaf, 0x14, + 0x0e, 0xbc, 0xc9, 0xe9, 0x67, 0xc0, 0x53, 0x04, 0x38, 0x6b, 0x90, 0x6d, 0x9b, 0x5d, 0x97, 0x8e, + 0x1f, 0xb7, 0x25, 0x22, 0xe4, 0x3f, 0x94, 0x5d, 0xb4, 0xa3, 0x63, 0x32, 0xea, 0x3d, 0x30, 0xc3, + 0xa6, 0x0a, 0xb8, 0xe7, 0x9e, 0x82, 0x09, 0x7a, 0x6c, 0x8c, 0x2e, 0xb1, 0xfa, 0xaf, 0x82, 0xcb, + 0x9a, 0x42, 0xb5, 0x4d, 0x5f, 0x07, 0xfe, 0xdf, 0xa3, 0x30, 0xb1, 0x62, 0x76, 0x5d, 0xdb, 0xb9, + 0xa4, 0x3e, 0x9c, 0x81, 0x89, 0xb3, 0xc8, 0xe9, 0x9a, 0xb6, 0xb5, 0xcf, 0xd5, 0xe0, 0x1a, 0x98, + 0xee, 0x38, 0x68, 0xcf, 0xb4, 0x77, 0xbb, 0xe1, 0xe2, 0x0c, 0x9b, 0xa4, 0xa8, 0x30, 0x69, 0xec, + 0xba, 0xdb, 0xb6, 0x13, 0x46, 0x9b, 0xf0, 0xdf, 0x95, 0xd3, 0x00, 0xe4, 0xb9, 0x62, 0xec, 0x20, + 0xea, 0x40, 0xc1, 0xa4, 0x28, 0x0a, 0x64, 0x5d, 0x73, 0x07, 0xd1, 0xf0, 0xb3, 0xf8, 0xd9, 0x13, + 0x30, 0x0e, 0xe5, 0x46, 0x43, 0xe6, 0xc9, 0xba, 0xff, 0xaa, 0x7e, 0x5e, 0x86, 0xe9, 0x65, 0xe4, + 0x52, 0x56, 0xbb, 0xea, 0x8b, 0x32, 0x42, 0x37, 0x3e, 0x78, 0x63, 0x6c, 0xdb, 0xe8, 0xfa, 0xff, + 0x05, 0x4b, 0xb0, 0x7c, 0x62, 0x18, 0x0b, 0x57, 0x66, 0x03, 0x61, 0xe3, 0xc0, 0x68, 0x6e, 0x99, + 0xf8, 0x5d, 0xd2, 0xcc, 0x74, 0x13, 0x64, 0xff, 0x07, 0xf5, 0xdd, 0x92, 0xe8, 0xa1, 0x62, 0x2a, + 0xfb, 0x79, 0xa6, 0x3e, 0x91, 0xdd, 0xd1, 0xe4, 0x1e, 0xcd, 0xb1, 0x2f, 0xc6, 0x39, 0x4b, 0x89, + 0x92, 0xd1, 0x83, 0xdc, 0x82, 0xc7, 0x91, 0x07, 0x73, 0x92, 0xbe, 0x36, 0x7e, 0x47, 0x86, 0xe9, + 0xda, 0xb6, 0x7d, 0xd1, 0x97, 0xe3, 0xcf, 0x88, 0x01, 0x7b, 0x15, 0x4c, 0xed, 0xf5, 0x80, 0x1a, + 0x26, 0x44, 0xdf, 0xc1, 0xae, 0x3e, 0x4f, 0x4e, 0x0a, 0x13, 0xc3, 0xdc, 0xc8, 0x6f, 0x48, 0x57, + 0x9e, 0x04, 0x13, 0x94, 0x6b, 0xba, 0xe4, 0x12, 0x0f, 0xb0, 0x9f, 0x99, 0xad, 0x60, 0x96, 0xaf, + 0x60, 0x32, 0xe4, 0xa3, 0x2b, 0x97, 0x3e, 0xf2, 0x7f, 0x2a, 0xe1, 0x60, 0x14, 0x3e, 0xf0, 0xa5, + 0x11, 0x00, 0xaf, 0x7e, 0x37, 0x23, 0xba, 0x30, 0x19, 0x48, 0x20, 0xe0, 0xe0, 0x40, 0xb7, 0xb9, + 0x0c, 0x24, 0x97, 0xbe, 0x3c, 0x5f, 0x91, 0x85, 0x99, 0x45, 0x73, 0x73, 0x33, 0xe8, 0x24, 0x5f, + 0x2c, 0xd8, 0x49, 0x46, 0xbb, 0x03, 0x78, 0x76, 0xee, 0xae, 0xe3, 0x20, 0xcb, 0xaf, 0x14, 0x6d, + 0x4e, 0x3d, 0xa9, 0xca, 0x0d, 0x70, 0xd4, 0x1f, 0x17, 0xd8, 0x8e, 0x72, 0x4a, 0xef, 0x4d, 0x56, + 0xbf, 0x2d, 0xbc, 0xab, 0xe5, 0x4b, 0x94, 0xad, 0x52, 0x44, 0x03, 0xbc, 0x03, 0x66, 0xb7, 0x49, + 0x6e, 0x3c, 0xf5, 0xf7, 0x3b, 0xcb, 0x93, 0x3d, 0xc1, 0x7e, 0xd7, 0x50, 0xb7, 0x6b, 0x6c, 0x21, + 0x9d, 0xcf, 0xdc, 0xd3, 0x7c, 0xe5, 0x24, 0x57, 0x57, 0x89, 0x6d, 0x90, 0x09, 0xd4, 0x64, 0x0c, + 0xda, 0x71, 0x06, 0xb2, 0x4b, 0x66, 0x1b, 0xa9, 0xbf, 0x20, 0xc1, 0x94, 0x8e, 0x9a, 0xb6, 0xd5, + 0xf4, 0xde, 0x18, 0xe7, 0xa0, 0x7f, 0xce, 0x88, 0x5e, 0xd9, 0xe8, 0xd1, 0x99, 0x0f, 0x68, 0x44, + 0xb4, 0x1b, 0xb1, 0xab, 0x19, 0x63, 0x49, 0x8d, 0xe1, 0x82, 0x0d, 0x6f, 0xea, 0xb1, 0xb9, 0xd9, + 0xb6, 0x0d, 0x6e, 0xf1, 0xab, 0xd7, 0x14, 0xba, 0x11, 0x0a, 0xfe, 0x19, 0x0f, 0xdb, 0x5d, 0x37, + 0x2d, 0x2b, 0x38, 0x44, 0xbc, 0x2f, 0x9d, 0xdf, 0xb7, 0x8d, 0x8d, 0xc3, 0x82, 0xeb, 0x4e, 0x4b, + 0x8f, 0xd0, 0xec, 0xeb, 0x61, 0xee, 0xfc, 0x25, 0x17, 0x75, 0x69, 0x2e, 0x5a, 0x6c, 0x56, 0xef, + 0x49, 0x65, 0xa2, 0x28, 0xc7, 0xc5, 0x6b, 0x89, 0x29, 0x30, 0x99, 0xa8, 0x57, 0x86, 0x98, 0x01, + 0x1e, 0x87, 0x42, 0xa5, 0xba, 0xa8, 0x61, 0x5f, 0x35, 0xdf, 0xfb, 0x67, 0x4b, 0x7d, 0x89, 0x0c, + 0x33, 0xd8, 0x99, 0xc4, 0x47, 0xe1, 0x5a, 0x81, 0xf9, 0x88, 0xfa, 0x25, 0x61, 0x3f, 0x36, 0x5c, + 0x65, 0xb6, 0x80, 0x68, 0x41, 0x6f, 0x9a, 0xed, 0x5e, 0x41, 0xe7, 0xf4, 0x9e, 0xd4, 0x3e, 0x80, + 0xc8, 0x7d, 0x01, 0xf9, 0x5d, 0x21, 0x67, 0xb6, 0x41, 0xdc, 0x1d, 0x16, 0x2a, 0xbf, 0x27, 0xc3, + 0xb4, 0x37, 0x49, 0xf1, 0x41, 0xa9, 0x72, 0xa0, 0xd8, 0x56, 0xfb, 0x52, 0xb8, 0x2c, 0xe2, 0xbf, + 0x26, 0x6a, 0x24, 0x7f, 0x2d, 0x3c, 0x73, 0xc7, 0x22, 0x62, 0x78, 0x19, 0x13, 0x7e, 0xef, 0x17, + 0x9a, 0xcf, 0x0f, 0x60, 0xee, 0xb0, 0xe0, 0xfb, 0x5a, 0x0e, 0xf2, 0x1b, 0x1d, 0x8c, 0xdc, 0x2b, + 0x65, 0x91, 0x88, 0xe4, 0xfb, 0x0e, 0x32, 0x78, 0x66, 0x56, 0xdb, 0x6e, 0x1a, 0xed, 0xf5, 0xf0, + 0x44, 0x58, 0x98, 0xa0, 0xdc, 0x4e, 0x7d, 0x1b, 0xc9, 0x71, 0xba, 0xeb, 0x63, 0x83, 0x75, 0x63, + 0x19, 0x31, 0x87, 0x46, 0x6e, 0x82, 0x63, 0x2d, 0xb3, 0x6b, 0x9c, 0x6f, 0x23, 0xcd, 0x6a, 0x3a, + 0x97, 0x88, 0x38, 0xe8, 0xb4, 0x6a, 0xdf, 0x07, 0xe5, 0x4e, 0xc8, 0x75, 0xdd, 0x4b, 0x6d, 0x32, + 0x4f, 0x64, 0xcf, 0x98, 0x44, 0x16, 0x55, 0xf3, 0xb2, 0xeb, 0xe4, 0x2f, 0xd6, 0x45, 0x69, 0x42, + 0xf0, 0xbe, 0xe6, 0x27, 0x40, 0xde, 0x76, 0xcc, 0x2d, 0x93, 0xdc, 0xbf, 0x33, 0xb7, 0x2f, 0x26, + 0x1d, 0x31, 0x05, 0xaa, 0x38, 0x8b, 0x4e, 0xb3, 0x2a, 0x4f, 0x82, 0x29, 0x73, 0xc7, 0xd8, 0x42, + 0xf7, 0x9a, 0x16, 0x39, 0xb1, 0x37, 0x77, 0xeb, 0xa9, 0x7d, 0xc7, 0x67, 0xe8, 0x77, 0x3d, 0xcc, + 0xaa, 0xbe, 0x5f, 0x12, 0x0d, 0x9c, 0x83, 0xeb, 0x46, 0x40, 0x1d, 0xcb, 0xbd, 0xd5, 0xea, 0x6b, + 0x84, 0x42, 0xda, 0x44, 0xb3, 0x95, 0xfe, 0xe0, 0xfd, 0x39, 0x09, 0x26, 0x17, 0xed, 0x8b, 0x16, + 0x56, 0xf4, 0xdb, 0xc4, 0x6c, 0xdd, 0x3e, 0x87, 0x1c, 0xf9, 0x6b, 0x21, 0x63, 0x4f, 0x34, 0xe0, + 0xda, 0xfa, 0x45, 0x46, 0xc0, 0x10, 0xdb, 0x72, 0x04, 0x2f, 0xeb, 0x8b, 0x2b, 0x27, 0x7d, 0xb9, + 0xfe, 0x99, 0x0c, 0xd9, 0x45, 0xc7, 0xee, 0xa8, 0x6f, 0xcd, 0x24, 0x70, 0x59, 0x68, 0x39, 0x76, + 0xa7, 0x8e, 0x6f, 0xdb, 0x0a, 0x8f, 0x71, 0xb0, 0x69, 0xca, 0x6d, 0x30, 0xd9, 0xb1, 0xbb, 0xa6, + 0xeb, 0x4f, 0x23, 0xe6, 0x6e, 0x7d, 0x54, 0xdf, 0xd6, 0xbc, 0x4e, 0x33, 0xe9, 0x41, 0x76, 0xaf, + 0xd7, 0xc6, 0x22, 0xf4, 0xe4, 0xe2, 0x89, 0xd1, 0xbf, 0x71, 0xac, 0x27, 0x55, 0x7d, 0x29, 0x8b, + 0xe4, 0x53, 0x78, 0x24, 0x1f, 0xdd, 0x47, 0xc2, 0x8e, 0xdd, 0x19, 0xc9, 0x26, 0xe3, 0xab, 0x02, + 0x54, 0x9f, 0xca, 0xa1, 0x7a, 0xa3, 0x50, 0x99, 0xe9, 0x23, 0xfa, 0xfe, 0x2c, 0x00, 0x36, 0x33, + 0x36, 0xbc, 0x09, 0x90, 0x98, 0x8d, 0xf5, 0x9c, 0x2c, 0x23, 0xcb, 0x22, 0x2f, 0xcb, 0xc7, 0x46, + 0x58, 0x31, 0x98, 0x7c, 0x84, 0x44, 0x8b, 0x90, 0xdb, 0xf5, 0x3e, 0x53, 0x89, 0x0a, 0x92, 0xc0, + 0xaf, 0x3a, 0xf9, 0x53, 0xfd, 0xd3, 0x0c, 0xe4, 0x70, 0x82, 0x72, 0x1a, 0x00, 0x0f, 0xec, 0xe4, + 0x40, 0x50, 0x06, 0x0f, 0xe1, 0x4c, 0x0a, 0xd6, 0x56, 0xb3, 0x45, 0x3f, 0x13, 0x93, 0x39, 0x4c, + 0xf0, 0xfe, 0xc6, 0xc3, 0x3d, 0xa6, 0x45, 0x0d, 0x00, 0x26, 0xc5, 0xfb, 0x1b, 0xbf, 0xad, 0xa2, + 0x4d, 0x12, 0x08, 0x39, 0xab, 0x87, 0x09, 0xc1, 0xdf, 0xab, 0xc1, 0xf5, 0x59, 0xfe, 0xdf, 0x38, + 0xc5, 0x9b, 0x0c, 0x63, 0xb5, 0x5c, 0x08, 0x8b, 0xc8, 0xe3, 0x4c, 0xbd, 0xc9, 0xea, 0xeb, 0x03, + 0xb5, 0x59, 0xe4, 0xd4, 0xe6, 0x96, 0x04, 0xe2, 0x4d, 0x5f, 0x79, 0xbe, 0x92, 0x83, 0xa9, 0x8a, + 0xdd, 0xa2, 0xba, 0xc3, 0x4c, 0x18, 0x3f, 0x91, 0x4b, 0x34, 0x61, 0x0c, 0x68, 0x44, 0x28, 0xc8, + 0xdd, 0xbc, 0x82, 0x88, 0x51, 0x60, 0xf5, 0x43, 0x59, 0x80, 0x3c, 0xd6, 0xde, 0xfd, 0xf7, 0x32, + 0xc5, 0x91, 0xc0, 0xa2, 0xd5, 0xe9, 0x9f, 0xff, 0xe1, 0x74, 0xec, 0xbf, 0x42, 0x0e, 0x57, 0x30, + 0x66, 0x77, 0x87, 0xaf, 0xa8, 0x14, 0x5f, 0x51, 0x39, 0xbe, 0xa2, 0xd9, 0xde, 0x8a, 0x26, 0x59, + 0x07, 0x88, 0xd2, 0x90, 0xf4, 0x75, 0xfc, 0x9f, 0x26, 0x00, 0x2a, 0xc6, 0x9e, 0xb9, 0x45, 0x76, + 0x87, 0x3f, 0xef, 0xcf, 0x7f, 0xe8, 0x3e, 0xee, 0x2f, 0x31, 0x03, 0xe1, 0x6d, 0x30, 0x41, 0xc7, + 0x3d, 0x5a, 0x91, 0xab, 0xb9, 0x8a, 0x84, 0x54, 0x88, 0x59, 0xfa, 0x80, 0xab, 0xfb, 0xf9, 0xb9, + 0x2b, 0x64, 0xa5, 0x9e, 0x2b, 0x64, 0xfb, 0xef, 0x41, 0x44, 0x5c, 0x2c, 0xab, 0xbe, 0x47, 0xd8, + 0xa3, 0x9f, 0xe1, 0x87, 0xa9, 0x51, 0x44, 0x13, 0x7c, 0x02, 0x4c, 0xd8, 0xc1, 0x86, 0xb6, 0x1c, + 0xb9, 0x0e, 0x56, 0xb6, 0x36, 0x6d, 0xdd, 0xcf, 0x29, 0xb8, 0xf9, 0x25, 0xc4, 0xc7, 0x58, 0x0e, + 0xcd, 0x9c, 0x5c, 0xf6, 0x83, 0x4a, 0x79, 0xf5, 0x38, 0x67, 0xba, 0xdb, 0xab, 0xa6, 0x75, 0xa1, + 0xab, 0xfe, 0x67, 0x31, 0x0b, 0x92, 0xc1, 0x5f, 0x4a, 0x86, 0x3f, 0x1f, 0xb3, 0xa3, 0xc6, 0xa3, + 0x76, 0x67, 0x14, 0x95, 0xfe, 0xdc, 0x46, 0x00, 0x78, 0x3b, 0xe4, 0x09, 0xa3, 0xb4, 0x13, 0x3d, + 0x13, 0x89, 0x5f, 0x40, 0x49, 0xa7, 0x7f, 0xa8, 0xef, 0x0e, 0x70, 0x3c, 0xcb, 0xe1, 0xb8, 0x70, + 0x20, 0xce, 0x52, 0x87, 0xf4, 0xcc, 0xe3, 0x61, 0x82, 0x4a, 0x5a, 0x99, 0x63, 0x5b, 0x71, 0xe1, + 0x88, 0x02, 0x90, 0x5f, 0xb3, 0xf7, 0x50, 0xdd, 0x2e, 0x64, 0xbc, 0x67, 0x8f, 0xbf, 0xba, 0x5d, + 0x90, 0xd4, 0x57, 0x4f, 0xc2, 0x64, 0x10, 0xcd, 0xe7, 0x73, 0x12, 0x14, 0x4a, 0x0e, 0x32, 0x5c, + 0xb4, 0xe4, 0xd8, 0x3b, 0xa4, 0x46, 0xe2, 0xde, 0xa1, 0xbf, 0x2e, 0xec, 0xe2, 0x11, 0x44, 0xd9, + 0xe9, 0x2d, 0x2c, 0x02, 0x4b, 0xb2, 0x08, 0x29, 0xf9, 0x8b, 0x90, 0xea, 0x5b, 0x84, 0x5c, 0x3e, + 0x44, 0x4b, 0x49, 0xbf, 0xa9, 0x7d, 0x4a, 0x82, 0x5c, 0xa9, 0x6d, 0x5b, 0x88, 0x3d, 0xc2, 0x34, + 0xf0, 0xac, 0x4c, 0xff, 0x9d, 0x08, 0xf5, 0x59, 0x92, 0xa8, 0xad, 0x11, 0x0a, 0xc0, 0x2b, 0x5b, + 0x50, 0xb6, 0x62, 0x83, 0x54, 0x2c, 0xe9, 0xf4, 0x05, 0xfa, 0x0d, 0x09, 0xa6, 0x48, 0x5c, 0x9c, + 0x62, 0xbb, 0xad, 0x3e, 0x2a, 0x14, 0x6a, 0x9f, 0x88, 0x48, 0xea, 0xef, 0x0a, 0xbb, 0xe8, 0x07, + 0xb5, 0x0a, 0x68, 0x27, 0x08, 0x10, 0x94, 0xcc, 0x63, 0x5c, 0x6c, 0x2f, 0x6d, 0x20, 0x43, 0xe9, + 0x8b, 0xfa, 0x2f, 0x25, 0xcf, 0x00, 0xb0, 0x2e, 0xac, 0x3b, 0x68, 0xcf, 0x44, 0x17, 0xd5, 0x2b, + 0x43, 0x61, 0xef, 0x0f, 0xfa, 0xf1, 0x26, 0xe1, 0x45, 0x1c, 0x86, 0x64, 0xe4, 0x56, 0xd6, 0x74, + 0x3b, 0xcc, 0x44, 0x7b, 0xf1, 0xde, 0x48, 0x2c, 0x0c, 0x19, 0x9d, 0xcd, 0x2e, 0xb8, 0x66, 0x13, + 0xcd, 0x45, 0xfa, 0x82, 0xfd, 0xd0, 0x04, 0x4c, 0x6e, 0x58, 0xdd, 0x4e, 0xdb, 0xe8, 0x6e, 0xab, + 0xdf, 0x93, 0x21, 0x4f, 0x6e, 0x03, 0x53, 0x7f, 0x82, 0x8b, 0x2d, 0xf0, 0x8c, 0x5d, 0xe4, 0xf8, + 0x2e, 0x38, 0xe4, 0xa5, 0xff, 0x65, 0xe5, 0xea, 0xfb, 0x65, 0xd1, 0x49, 0xaa, 0x5f, 0x28, 0x73, + 0x2d, 0x7c, 0xff, 0xe3, 0xec, 0x1d, 0xb3, 0xe9, 0xee, 0x3a, 0xc1, 0xd5, 0xd7, 0x8f, 0x13, 0xa3, + 0xb2, 0x4e, 0xfe, 0xd2, 0x83, 0xdf, 0x55, 0x03, 0x26, 0x68, 0xe2, 0xbe, 0xed, 0xa4, 0xfd, 0xe7, + 0x6f, 0x4f, 0x42, 0xde, 0x70, 0x5c, 0xb3, 0xeb, 0xd2, 0x0d, 0x56, 0xfa, 0xe6, 0x75, 0x97, 0xe4, + 0x69, 0xc3, 0x69, 0xfb, 0x51, 0x48, 0x82, 0x04, 0xf5, 0xf7, 0x84, 0xe6, 0x8f, 0xf1, 0x35, 0x4f, + 0x06, 0xf9, 0xbd, 0x43, 0xac, 0x51, 0x5f, 0x0e, 0x97, 0xe9, 0xc5, 0xba, 0xd6, 0x20, 0x41, 0x2b, + 0x82, 0xf8, 0x14, 0x2d, 0xf5, 0x5d, 0x32, 0xb3, 0x7e, 0x77, 0x89, 0x1b, 0x23, 0xa8, 0x14, 0xc3, + 0x31, 0x22, 0x48, 0x88, 0xd9, 0xad, 0xe6, 0x16, 0x61, 0x65, 0xf1, 0x45, 0xd8, 0xdf, 0x16, 0xde, + 0x4d, 0x0a, 0x44, 0x39, 0x60, 0x0d, 0x30, 0xee, 0xb6, 0xa0, 0x0f, 0x08, 0xed, 0x0c, 0x0d, 0x2a, + 0xe9, 0x10, 0x61, 0x7b, 0xe3, 0x04, 0x4c, 0x2c, 0x1b, 0xed, 0x36, 0x72, 0x2e, 0x79, 0x43, 0x52, + 0xc1, 0xe7, 0x70, 0xcd, 0xb0, 0xcc, 0x4d, 0xd4, 0x75, 0xe3, 0x3b, 0xcb, 0xf7, 0x08, 0x47, 0xa2, + 0xa5, 0x65, 0xcc, 0xf7, 0xd2, 0x8f, 0x90, 0xf9, 0xcd, 0x90, 0x35, 0xad, 0x4d, 0x9b, 0x76, 0x99, + 0xbd, 0xab, 0xf6, 0xfe, 0xcf, 0x78, 0xea, 0x82, 0x33, 0x0a, 0x06, 0xa3, 0x15, 0xe4, 0x22, 0xfd, + 0x9e, 0xf3, 0x77, 0xb2, 0x30, 0xeb, 0x33, 0x51, 0xb6, 0x5a, 0xe8, 0x01, 0x76, 0x29, 0xe6, 0x25, + 0x59, 0xd1, 0xe3, 0x60, 0xbd, 0xf5, 0xc1, 0xa4, 0x22, 0x44, 0x5a, 0x07, 0x68, 0x1a, 0x2e, 0xda, + 0xb2, 0x1d, 0x33, 0xe8, 0x0f, 0x9f, 0x98, 0x84, 0x5a, 0x89, 0xfc, 0x7d, 0x49, 0x67, 0xe8, 0x28, + 0x77, 0xc2, 0x34, 0x0a, 0xce, 0xdf, 0xfb, 0x4b, 0x35, 0xb1, 0x78, 0xb1, 0xf9, 0xd5, 0xbf, 0x14, + 0x3a, 0x75, 0x26, 0x52, 0xcd, 0x64, 0x98, 0x35, 0x86, 0x6b, 0x43, 0x1b, 0x95, 0xb5, 0xa2, 0x5e, + 0x5b, 0x29, 0xae, 0xae, 0x96, 0x2b, 0xcb, 0x41, 0xe0, 0x17, 0x05, 0xe6, 0x16, 0xab, 0xe7, 0x2a, + 0x4c, 0x64, 0x9e, 0xac, 0xba, 0x0e, 0x93, 0xbe, 0xbc, 0xfa, 0xf9, 0x62, 0xb2, 0x32, 0xa3, 0xbe, + 0x98, 0x4c, 0x92, 0x67, 0x9c, 0x99, 0xcd, 0xc0, 0x41, 0x07, 0x3f, 0xab, 0x7f, 0x6c, 0x40, 0x0e, + 0xaf, 0xa9, 0xab, 0xef, 0xc0, 0xdb, 0x80, 0x9d, 0xb6, 0xd1, 0x44, 0xea, 0x4e, 0x02, 0x6b, 0xdc, + 0xbf, 0x1a, 0x41, 0xda, 0x77, 0x35, 0x02, 0x7e, 0xa4, 0x56, 0xdf, 0xf1, 0x7e, 0xeb, 0xf8, 0x3a, + 0xc9, 0xc2, 0x1f, 0xd0, 0x8a, 0xdd, 0x5d, 0x21, 0xcb, 0xff, 0x94, 0xcd, 0x08, 0x95, 0x8c, 0xe6, + 0x29, 0x99, 0x25, 0x2a, 0xb6, 0x0f, 0x13, 0xc7, 0xd1, 0x18, 0xae, 0xef, 0xce, 0x42, 0xae, 0xd6, + 0x69, 0x9b, 0xae, 0xfa, 0x72, 0x69, 0x24, 0x98, 0x91, 0xeb, 0x2c, 0xe4, 0x81, 0xd7, 0x59, 0x84, + 0xbb, 0xae, 0x59, 0x81, 0x5d, 0xd7, 0x3a, 0x7a, 0xc0, 0xe5, 0x77, 0x5d, 0x6f, 0xa3, 0xc1, 0xdb, + 0xc8, 0x9e, 0xed, 0xa3, 0xfb, 0x88, 0x14, 0x57, 0xab, 0x4f, 0x54, 0xc0, 0x33, 0x8f, 0xa7, 0xc1, + 0xc9, 0x00, 0xf2, 0x0b, 0xd5, 0x7a, 0xbd, 0xba, 0x56, 0x38, 0x82, 0xa3, 0xda, 0x54, 0xd7, 0x49, + 0xa8, 0x98, 0x72, 0xa5, 0xa2, 0xe9, 0x05, 0x09, 0x87, 0x4b, 0x2b, 0xd7, 0x57, 0xb5, 0x82, 0xcc, + 0xc7, 0x36, 0x8f, 0x35, 0xbf, 0xf9, 0xb2, 0xd3, 0x54, 0x2f, 0x31, 0x43, 0x3c, 0x9a, 0x9f, 0xf4, + 0x95, 0xeb, 0xd7, 0x64, 0xc8, 0xad, 0x21, 0x67, 0x0b, 0xa9, 0xcf, 0x48, 0xb0, 0xc9, 0xb7, 0x69, + 0x3a, 0x5d, 0x12, 0x5c, 0x2e, 0xdc, 0xe4, 0x63, 0xd3, 0x94, 0xeb, 0x60, 0xb6, 0x8b, 0x9a, 0xb6, + 0xd5, 0xf2, 0x33, 0x91, 0xfe, 0x88, 0x4f, 0xe4, 0xef, 0x95, 0x17, 0x80, 0x0c, 0x33, 0x3a, 0x92, + 0x9d, 0xba, 0x24, 0xc0, 0xf4, 0x2b, 0x35, 0x7d, 0x60, 0xbe, 0x2d, 0x7b, 0x3f, 0x75, 0x2e, 0xa9, + 0x2f, 0x13, 0xde, 0x7d, 0xbd, 0x09, 0xf2, 0x58, 0x4d, 0xfd, 0x31, 0xba, 0x7f, 0x7f, 0x4c, 0xf3, + 0x28, 0x0b, 0x70, 0xac, 0x8b, 0xda, 0xa8, 0xe9, 0xa2, 0x96, 0xd7, 0x74, 0xf5, 0x81, 0x9d, 0xc2, + 0xfe, 0xec, 0xea, 0x9f, 0xb3, 0x00, 0xde, 0xc1, 0x03, 0x78, 0x7d, 0x1f, 0x51, 0x7a, 0x15, 0x8a, + 0xb6, 0x95, 0xbd, 0x6a, 0xd4, 0xda, 0x76, 0xb0, 0x28, 0xee, 0xbf, 0x7b, 0xdf, 0xb6, 0xdd, 0x9d, + 0x36, 0xfe, 0x46, 0x0f, 0x18, 0xf8, 0xef, 0xca, 0x3c, 0x4c, 0x18, 0xd6, 0x25, 0xfc, 0x29, 0x1b, + 0x53, 0x6b, 0x3f, 0x93, 0xfa, 0xea, 0x00, 0xf9, 0xbb, 0x38, 0xe4, 0x1f, 0x2b, 0xc6, 0x6e, 0xfa, + 0xc0, 0xff, 0xfc, 0x04, 0xe4, 0xd6, 0x8d, 0xae, 0x8b, 0xd4, 0xff, 0x47, 0x16, 0x45, 0xfe, 0x7a, + 0x98, 0xdb, 0xb4, 0x9b, 0xbb, 0x5d, 0xd4, 0xe2, 0x1b, 0x65, 0x4f, 0xea, 0x28, 0x30, 0x57, 0x6e, + 0x84, 0x82, 0x9f, 0x48, 0xc9, 0xfa, 0xdb, 0xf0, 0xfb, 0xd2, 0x71, 0xa4, 0xec, 0xee, 0xba, 0xe1, + 0xb8, 0xd5, 0x4d, 0x9c, 0x16, 0x44, 0xca, 0x66, 0x13, 0x39, 0xe8, 0xf3, 0x31, 0xd0, 0x4f, 0x44, + 0x43, 0x3f, 0x29, 0x00, 0xbd, 0x52, 0x84, 0xc9, 0x4d, 0xb3, 0x8d, 0xf0, 0x0f, 0x53, 0xf8, 0x87, + 0x7e, 0x63, 0x12, 0x96, 0x7d, 0x30, 0x26, 0x2d, 0x99, 0x6d, 0xa4, 0x07, 0xbf, 0xf9, 0x13, 0x19, + 0x08, 0x27, 0x32, 0xab, 0xc4, 0x9f, 0xd6, 0x33, 0xbc, 0x2c, 0x63, 0x07, 0xf9, 0x8b, 0x6f, 0x16, + 0x3d, 0xdc, 0xd2, 0x32, 0x5c, 0x03, 0x83, 0x31, 0xa3, 0xe3, 0x67, 0xde, 0x2f, 0x44, 0xee, 0xf5, + 0x0b, 0x79, 0xae, 0x9c, 0xac, 0x47, 0xf4, 0x99, 0x8d, 0x68, 0x51, 0xe7, 0x7d, 0x80, 0x88, 0xa5, + 0x18, 0xbc, 0x7b, 0xc0, 0x34, 0x0d, 0x07, 0xb9, 0xeb, 0xac, 0x27, 0x46, 0x4e, 0xe7, 0x13, 0xb1, + 0x2b, 0x5f, 0xb7, 0x66, 0xec, 0x20, 0x5c, 0x58, 0xc9, 0xfb, 0x46, 0x5d, 0xb4, 0xf6, 0xa5, 0x87, + 0xfd, 0x6f, 0x6e, 0xd4, 0xfd, 0x6f, 0xbf, 0x3a, 0xa6, 0xdf, 0x0c, 0x5f, 0x97, 0x05, 0xb9, 0xb4, + 0xeb, 0x3e, 0xa2, 0xbb, 0xdf, 0xef, 0x0b, 0xfb, 0xb9, 0xd0, 0xfe, 0x2c, 0xf2, 0x22, 0xf9, 0x31, + 0xf5, 0xbe, 0x09, 0xb5, 0x44, 0xcc, 0x9f, 0x26, 0xaa, 0x6e, 0xe9, 0xeb, 0xc8, 0x5b, 0xe5, 0xc0, + 0xc1, 0xf2, 0xc1, 0xcc, 0xc1, 0x4d, 0x73, 0x95, 0xf4, 0x4f, 0x4c, 0xcf, 0x10, 0xbc, 0xfb, 0x1d, + 0x4f, 0x96, 0x8b, 0xd5, 0x87, 0xb7, 0xd7, 0xb1, 0x28, 0x67, 0x74, 0xf2, 0xa2, 0xbe, 0x42, 0xd8, + 0xed, 0x9c, 0x88, 0x2d, 0xd6, 0x95, 0x30, 0x99, 0x4d, 0x25, 0x76, 0x59, 0x68, 0x4c, 0xb1, 0xe9, + 0x03, 0xf6, 0x2d, 0xd6, 0x55, 0xb0, 0x78, 0x60, 0xc4, 0xd4, 0xd7, 0x08, 0x6f, 0x47, 0x91, 0x6a, + 0x0f, 0x58, 0x2f, 0x4c, 0x26, 0x6f, 0xb1, 0xcd, 0xaa, 0xd8, 0x82, 0xd3, 0x97, 0xf8, 0x37, 0x65, + 0xc8, 0x93, 0x2d, 0x48, 0xf5, 0xcd, 0x99, 0x04, 0xb7, 0xac, 0xbb, 0xbc, 0x0b, 0x61, 0xf0, 0x9e, + 0x64, 0xcd, 0x81, 0x73, 0x35, 0xcc, 0x26, 0x72, 0x35, 0xe4, 0xcf, 0x71, 0x0a, 0xb4, 0x23, 0x52, + 0xc7, 0x94, 0xa7, 0x93, 0x49, 0x5a, 0x58, 0x5f, 0x86, 0xd2, 0xc7, 0xfb, 0xf9, 0x39, 0x98, 0x21, + 0x45, 0x9f, 0x33, 0x5b, 0x5b, 0xc8, 0x55, 0xdf, 0x25, 0xfd, 0xf0, 0xa0, 0xae, 0x54, 0x60, 0xe6, + 0x22, 0x66, 0x7b, 0xd5, 0xb8, 0x64, 0xef, 0xba, 0x74, 0xe5, 0xe2, 0xc6, 0xd8, 0x75, 0x0f, 0x52, + 0xcf, 0x79, 0xf2, 0x87, 0xce, 0xfd, 0xef, 0xc9, 0x98, 0x2c, 0xf8, 0x13, 0x07, 0xae, 0x3c, 0x36, + 0xb2, 0xd8, 0x24, 0xe5, 0x24, 0xe4, 0xf7, 0x4c, 0x74, 0xb1, 0xdc, 0xa2, 0xd6, 0x2d, 0x7d, 0x53, + 0xff, 0x40, 0x78, 0xdf, 0x96, 0x85, 0x9b, 0xf2, 0x92, 0xae, 0x16, 0x8a, 0xed, 0xde, 0x0e, 0x64, + 0x6b, 0x0c, 0x67, 0x8a, 0xf9, 0xcb, 0x38, 0x4b, 0x09, 0x14, 0x31, 0xca, 0x70, 0xe6, 0x43, 0x79, + 0xc4, 0x9e, 0x58, 0x21, 0x02, 0x18, 0xf1, 0x3d, 0x9d, 0x62, 0xf1, 0x25, 0x06, 0x14, 0x9d, 0xbe, + 0xe4, 0x5f, 0x2f, 0xc3, 0x54, 0x0d, 0xb9, 0x4b, 0x26, 0x6a, 0xb7, 0xba, 0xaa, 0x73, 0x70, 0xd3, + 0xe8, 0x66, 0xc8, 0x6f, 0x62, 0x62, 0x83, 0xce, 0x2d, 0xd0, 0x6c, 0xea, 0xeb, 0x24, 0xd1, 0x1d, + 0x61, 0xba, 0xfa, 0xe6, 0x73, 0x3b, 0x12, 0x98, 0xc4, 0x3c, 0x7a, 0xe3, 0x4b, 0x1e, 0x43, 0x60, + 0x5b, 0x19, 0x66, 0xe8, 0xed, 0x7d, 0xc5, 0xb6, 0xb9, 0x65, 0xa9, 0xbb, 0x23, 0x68, 0x21, 0xca, + 0x2d, 0x90, 0x33, 0x3c, 0x6a, 0x74, 0xeb, 0x55, 0xed, 0xdb, 0x79, 0xe2, 0xf2, 0x74, 0x92, 0x31, + 0x41, 0x18, 0xc9, 0x50, 0xb1, 0x7d, 0x9e, 0xc7, 0x18, 0x46, 0x72, 0x60, 0xe1, 0xe9, 0x23, 0xf6, + 0x65, 0x19, 0x8e, 0x53, 0x06, 0xce, 0x22, 0xc7, 0x35, 0x9b, 0x46, 0x9b, 0x20, 0xf7, 0xc2, 0xcc, + 0x28, 0xa0, 0x5b, 0x81, 0xd9, 0x3d, 0x96, 0x2c, 0x85, 0xf0, 0x4c, 0x5f, 0x08, 0x39, 0x06, 0x74, + 0xfe, 0xc7, 0x04, 0xe1, 0xf8, 0x38, 0xa9, 0x72, 0x34, 0xc7, 0x18, 0x8e, 0x4f, 0x98, 0x89, 0xf4, + 0x21, 0x7e, 0x29, 0x0d, 0xcd, 0x13, 0x76, 0x9f, 0x9f, 0x17, 0xc6, 0x76, 0x03, 0xa6, 0x31, 0x96, + 0xe4, 0x47, 0xba, 0x0c, 0x11, 0xa3, 0xc4, 0x41, 0xbf, 0x43, 0x2f, 0x0c, 0x0b, 0xfe, 0xd5, 0x59, + 0x3a, 0xea, 0x39, 0x80, 0xf0, 0x13, 0xdb, 0x49, 0x67, 0xa2, 0x3a, 0x69, 0x49, 0xac, 0x93, 0x7e, + 0x93, 0x70, 0xb0, 0x94, 0xfe, 0x6c, 0x1f, 0x5c, 0x3d, 0xc4, 0xc2, 0x64, 0x0c, 0x2e, 0x3d, 0x7d, + 0xbd, 0x78, 0x75, 0xb6, 0xf7, 0x9a, 0xf6, 0x8f, 0x8e, 0x64, 0x3e, 0xc5, 0xf6, 0x07, 0x72, 0x4f, + 0x7f, 0x70, 0x00, 0x4b, 0xfa, 0x06, 0x38, 0x4a, 0x8a, 0x28, 0x05, 0x6c, 0xe5, 0x48, 0x28, 0x88, + 0x9e, 0x64, 0xf5, 0x63, 0x43, 0x28, 0xc1, 0xa0, 0x3b, 0xe4, 0xe3, 0x3a, 0xb9, 0x64, 0xc6, 0x6e, + 0x52, 0x05, 0x39, 0xbc, 0xab, 0xe7, 0xbf, 0x91, 0x25, 0xd6, 0xee, 0x06, 0xbe, 0xd3, 0x4d, 0xfd, + 0xab, 0xec, 0x28, 0x46, 0x84, 0xbb, 0x21, 0x8b, 0x5d, 0xdc, 0xe5, 0xc8, 0x25, 0x8d, 0xb0, 0xc8, + 0xf0, 0xc2, 0x3d, 0xf4, 0x80, 0xbb, 0x72, 0x44, 0xc7, 0x7f, 0x2a, 0x37, 0xc2, 0xd1, 0xf3, 0x46, + 0xf3, 0xc2, 0x96, 0x63, 0xef, 0xe2, 0xdb, 0xaf, 0x6c, 0x7a, 0x8d, 0x16, 0xbe, 0x8e, 0x90, 0xff, + 0xa0, 0xdc, 0xea, 0x9b, 0x0e, 0xb9, 0x41, 0xa6, 0xc3, 0xca, 0x11, 0x6a, 0x3c, 0x28, 0x8f, 0x0f, + 0x3a, 0x9d, 0x7c, 0x6c, 0xa7, 0xb3, 0x72, 0xc4, 0xef, 0x76, 0x94, 0x45, 0x98, 0x6c, 0x99, 0x7b, + 0x78, 0xab, 0x1a, 0xcf, 0xba, 0x06, 0x1d, 0x5d, 0x5e, 0x34, 0xf7, 0xc8, 0xc6, 0xf6, 0xca, 0x11, + 0x3d, 0xf8, 0x53, 0x59, 0x86, 0x29, 0xbc, 0x2d, 0x80, 0xc9, 0x4c, 0x26, 0x3a, 0x96, 0xbc, 0x72, + 0x44, 0x0f, 0xff, 0xf5, 0xac, 0x8f, 0x2c, 0x3e, 0xfb, 0x71, 0x97, 0xbf, 0xdd, 0x9e, 0x49, 0xb4, + 0xdd, 0xee, 0xc9, 0x82, 0x6c, 0xb8, 0x9f, 0x84, 0x5c, 0x13, 0x4b, 0x58, 0xa2, 0x12, 0x26, 0xaf, + 0xca, 0x1d, 0x90, 0xdd, 0x31, 0x1c, 0x7f, 0xf2, 0x7c, 0xfd, 0x60, 0xba, 0x6b, 0x86, 0x73, 0xc1, + 0x43, 0xd0, 0xfb, 0x6b, 0x61, 0x02, 0x72, 0x58, 0x70, 0xc1, 0x83, 0xfa, 0xd6, 0x2c, 0x31, 0x43, + 0x4a, 0xb6, 0xe5, 0x0d, 0xfb, 0x75, 0xdb, 0x3f, 0x20, 0xf3, 0x07, 0x99, 0xd1, 0x58, 0x90, 0x7d, + 0xef, 0x35, 0x97, 0x23, 0xef, 0x35, 0xef, 0xb9, 0x60, 0x37, 0xdb, 0x7b, 0xc1, 0x6e, 0xb8, 0x7c, + 0x90, 0x1b, 0xec, 0xa8, 0xf2, 0xe7, 0x43, 0x98, 0x2e, 0xbd, 0x82, 0x88, 0x9e, 0x81, 0xb7, 0x4d, + 0x8b, 0xa9, 0xb3, 0xff, 0x9a, 0xb0, 0x53, 0x4a, 0x6a, 0xd4, 0x0c, 0x60, 0x2f, 0xfd, 0xbe, 0xe9, + 0xb7, 0xb2, 0x70, 0x8a, 0x5c, 0xe3, 0xbc, 0x87, 0xea, 0x36, 0x7f, 0xdf, 0xa4, 0xfa, 0x27, 0x23, + 0x51, 0x9a, 0x3e, 0x03, 0x8e, 0xdc, 0x77, 0xc0, 0xd9, 0x77, 0x48, 0x39, 0x3b, 0xe0, 0x90, 0x72, + 0x2e, 0xd9, 0xca, 0xe1, 0x07, 0x59, 0xfd, 0x59, 0xe7, 0xf5, 0xe7, 0xf6, 0x08, 0x80, 0xfa, 0xc9, + 0x65, 0x24, 0xf6, 0xcd, 0x3b, 0x02, 0x4d, 0xa9, 0x71, 0x9a, 0x72, 0xd7, 0xf0, 0x8c, 0xa4, 0xaf, + 0x2d, 0xbf, 0x9f, 0x85, 0xcb, 0x42, 0x66, 0x2a, 0xe8, 0x22, 0x55, 0x94, 0xcf, 0x8d, 0x44, 0x51, + 0x92, 0xc7, 0x40, 0x48, 0x5b, 0x63, 0xfe, 0x54, 0xf8, 0xec, 0x50, 0x2f, 0x50, 0x81, 0x6c, 0x22, + 0x94, 0xe5, 0x24, 0xe4, 0x49, 0x0f, 0x43, 0xa1, 0xa1, 0x6f, 0x09, 0xbb, 0x1b, 0xb1, 0x13, 0x47, + 0xa2, 0xbc, 0x8d, 0x41, 0x7f, 0xe8, 0xba, 0x46, 0x7d, 0xd7, 0xb1, 0xca, 0x96, 0x6b, 0xab, 0x3f, + 0x37, 0x12, 0xc5, 0x09, 0xbc, 0xe1, 0xe4, 0x61, 0xbc, 0xe1, 0x86, 0x5a, 0xe5, 0xf0, 0x6b, 0x70, + 0x28, 0xab, 0x1c, 0x11, 0x85, 0xa7, 0x8f, 0xdf, 0xdb, 0x65, 0x38, 0x49, 0x27, 0x5b, 0x0b, 0xbc, + 0x85, 0xa8, 0xde, 0x37, 0x0a, 0x20, 0x8f, 0xfb, 0x66, 0x12, 0xbd, 0xe5, 0x0c, 0xbf, 0xf0, 0x27, + 0xa5, 0x62, 0xef, 0x77, 0xe0, 0xa6, 0x83, 0x3d, 0x1c, 0x8e, 0x04, 0x29, 0xb1, 0x6b, 0x1d, 0x12, + 0xb0, 0x91, 0x3e, 0x66, 0x2f, 0x96, 0x21, 0x4f, 0xaf, 0xef, 0xdf, 0x48, 0xc5, 0x61, 0x82, 0x8f, + 0xf2, 0x2c, 0xb0, 0x23, 0x97, 0xf8, 0x92, 0xfb, 0xf4, 0xf6, 0xe2, 0x0e, 0xe9, 0x16, 0xfb, 0x6f, + 0x4b, 0x30, 0x5d, 0x43, 0x6e, 0xc9, 0x70, 0x1c, 0xd3, 0xd8, 0x1a, 0x95, 0xc7, 0xb7, 0xa8, 0xf7, + 0xb0, 0xfa, 0x9d, 0x8c, 0xe8, 0x79, 0x9a, 0x60, 0x21, 0xdc, 0x67, 0x35, 0x22, 0x96, 0xe0, 0xc3, + 0x42, 0x67, 0x66, 0x06, 0x51, 0x1b, 0x83, 0xc7, 0xb6, 0x04, 0x13, 0xfe, 0x59, 0xbc, 0x9b, 0xb9, + 0xf3, 0x99, 0xdb, 0xee, 0x8e, 0x7f, 0x0c, 0x06, 0x3f, 0xef, 0x3f, 0x03, 0xa6, 0xbe, 0x2a, 0xa1, + 0xa3, 0x7c, 0xfc, 0x41, 0xc2, 0x64, 0x6d, 0x2c, 0x89, 0x3b, 0xfc, 0x61, 0x1d, 0x1d, 0xfc, 0xdd, + 0x09, 0xba, 0x1c, 0xb9, 0x6a, 0xb8, 0xe8, 0x01, 0xf5, 0xf3, 0x32, 0x4c, 0xd4, 0x90, 0xeb, 0x8d, + 0xb7, 0xdc, 0xe5, 0xa6, 0xc3, 0x6a, 0xb8, 0xc2, 0xac, 0x78, 0x4c, 0xd1, 0x35, 0x8c, 0x7b, 0x60, + 0xaa, 0xe3, 0xd8, 0x4d, 0xd4, 0xed, 0xd2, 0xd5, 0x0b, 0xd6, 0x51, 0xad, 0xdf, 0xe8, 0x8f, 0x59, + 0x9b, 0x5f, 0xf7, 0xff, 0xd1, 0xc3, 0xdf, 0x93, 0x9a, 0x01, 0x84, 0x12, 0xad, 0xe0, 0xb8, 0xcd, + 0x80, 0xb8, 0xc2, 0xd3, 0x07, 0xfa, 0x33, 0x32, 0xcc, 0xd4, 0x90, 0x1b, 0x48, 0x31, 0xc1, 0x26, + 0x47, 0x34, 0xbc, 0x1c, 0x94, 0xf2, 0xc1, 0xa0, 0x14, 0xbf, 0x1a, 0x90, 0x97, 0x66, 0x40, 0x6c, + 0x8c, 0x57, 0x03, 0x8a, 0x71, 0x30, 0x86, 0xe3, 0x6b, 0x8f, 0x86, 0x29, 0xcc, 0x0b, 0x6e, 0xb0, + 0xbf, 0x98, 0x0d, 0x1b, 0xef, 0x17, 0x52, 0x6a, 0xbc, 0x77, 0x42, 0x6e, 0xc7, 0x70, 0x2e, 0x74, + 0x71, 0xc3, 0x9d, 0x16, 0x31, 0xdb, 0xd7, 0xbc, 0xec, 0x3a, 0xf9, 0xab, 0xbf, 0x9f, 0x66, 0x2e, + 0x99, 0x9f, 0xe6, 0xc3, 0x52, 0xa2, 0x91, 0x90, 0xcc, 0x1d, 0x46, 0xd8, 0xe4, 0x13, 0x8c, 0x9b, + 0x31, 0x65, 0xa7, 0xaf, 0x1c, 0x2f, 0x94, 0x61, 0xd2, 0x1b, 0xb7, 0xb1, 0x3d, 0x7e, 0xee, 0xe0, + 0xea, 0xd0, 0xdf, 0xd0, 0x4f, 0xd8, 0x03, 0xfb, 0x12, 0x19, 0x9d, 0x79, 0x9f, 0xa0, 0x07, 0x8e, + 0x2b, 0x3c, 0x7d, 0x3c, 0xde, 0x49, 0xf0, 0xc0, 0xed, 0x41, 0x7d, 0x83, 0x0c, 0xf2, 0x32, 0x72, + 0xc7, 0x6d, 0x45, 0xbe, 0x4d, 0x38, 0xc4, 0x11, 0x27, 0x30, 0xcc, 0xf3, 0xfc, 0x32, 0x1a, 0x4d, + 0x03, 0x12, 0x8b, 0x6d, 0x24, 0xc4, 0x40, 0xfa, 0xa8, 0xbd, 0x97, 0xa0, 0x46, 0x36, 0x17, 0x7e, + 0x76, 0x04, 0xbd, 0xea, 0x78, 0x17, 0x3e, 0x7c, 0x01, 0x62, 0x1a, 0x87, 0xd5, 0xde, 0xfa, 0x15, + 0x3e, 0x96, 0xab, 0xf8, 0xc0, 0x6b, 0xec, 0xdb, 0xa8, 0x79, 0x01, 0xb5, 0xd4, 0x9f, 0x3e, 0x38, + 0x74, 0xa7, 0x60, 0xa2, 0x49, 0xa8, 0x61, 0xf0, 0x26, 0x75, 0xff, 0x35, 0xc1, 0xbd, 0xd2, 0x7c, + 0x47, 0x44, 0x7e, 0x1f, 0xe3, 0xbd, 0xd2, 0x02, 0xc5, 0x8f, 0xc1, 0x6c, 0x21, 0xb3, 0x8c, 0x72, + 0xd3, 0xb6, 0xd4, 0xff, 0x72, 0x70, 0x58, 0xae, 0x82, 0x29, 0xb3, 0x69, 0x5b, 0x38, 0x0c, 0x85, + 0x7f, 0x08, 0x28, 0x48, 0xf0, 0xbf, 0x6a, 0x3b, 0xf6, 0xfd, 0x26, 0xdd, 0x35, 0x0f, 0x13, 0x86, + 0x35, 0x26, 0x3c, 0xd6, 0x0f, 0xcb, 0x98, 0xe8, 0x53, 0x76, 0xfa, 0x90, 0x7d, 0x2c, 0xf4, 0x6e, + 0x23, 0x5d, 0xe1, 0x23, 0x62, 0x15, 0x78, 0x98, 0xe1, 0x8c, 0xad, 0xc5, 0xa1, 0x0c, 0x67, 0x31, + 0x0c, 0x8c, 0xe1, 0xc6, 0x8a, 0x10, 0xc7, 0xd4, 0xd7, 0x80, 0x0f, 0x80, 0xce, 0xe8, 0xcc, 0xc3, + 0x21, 0xd1, 0x39, 0x1c, 0x13, 0xf1, 0x03, 0x34, 0x44, 0x26, 0xb5, 0x78, 0xd4, 0xff, 0x3a, 0x0a, + 0x70, 0x6e, 0x1f, 0xc6, 0x5f, 0x81, 0x78, 0x2b, 0x24, 0xb8, 0x11, 0x7b, 0x9f, 0x04, 0x3d, 0x2a, + 0x63, 0xbc, 0x2b, 0x5e, 0xa4, 0xfc, 0xf4, 0x01, 0x7c, 0x81, 0x0c, 0x73, 0xd8, 0x47, 0xa0, 0x8d, + 0x0c, 0x87, 0x74, 0x94, 0x23, 0x71, 0x94, 0x7f, 0xa7, 0x70, 0x80, 0x1f, 0x5e, 0x0e, 0x21, 0x1f, + 0x23, 0x81, 0x42, 0x2c, 0xba, 0x8f, 0x20, 0x0b, 0x63, 0xd9, 0x46, 0x29, 0x04, 0x2c, 0x50, 0x15, + 0x1f, 0x0d, 0x1e, 0x09, 0x3d, 0x72, 0x79, 0x61, 0xf8, 0x8d, 0x6d, 0xcc, 0x1e, 0xb9, 0x22, 0x4c, + 0xa4, 0x8f, 0xc9, 0x1b, 0x6e, 0xa1, 0x0b, 0xce, 0x75, 0x7c, 0x61, 0xfc, 0x6b, 0xb2, 0xc1, 0x89, + 0xb6, 0xcf, 0x8c, 0xc4, 0x03, 0xf3, 0x00, 0x01, 0xf1, 0x15, 0xc8, 0x3a, 0xf6, 0x45, 0xb2, 0xb4, + 0x35, 0xab, 0xe3, 0x67, 0x72, 0x3d, 0x65, 0x7b, 0x77, 0xc7, 0x22, 0x27, 0x43, 0x67, 0x75, 0xff, + 0x55, 0xb9, 0x0e, 0x66, 0x2f, 0x9a, 0xee, 0xf6, 0x0a, 0x32, 0x5a, 0xc8, 0xd1, 0xed, 0x8b, 0xd8, + 0x63, 0x6e, 0x52, 0xe7, 0x13, 0x79, 0xff, 0x15, 0x01, 0xfb, 0x12, 0xdf, 0x22, 0x3f, 0x96, 0xe3, + 0x6f, 0x49, 0x2c, 0xcf, 0x68, 0xae, 0xd2, 0x57, 0x98, 0xf7, 0xc9, 0x30, 0xa5, 0xdb, 0x17, 0xa9, + 0x92, 0xfc, 0x1f, 0x87, 0xab, 0x23, 0x89, 0x27, 0x7a, 0x58, 0x72, 0x01, 0xfb, 0x63, 0x9f, 0xe8, + 0xc5, 0x16, 0x3f, 0x96, 0x93, 0x4b, 0x33, 0xba, 0x7d, 0xb1, 0x86, 0x5c, 0xd2, 0x22, 0xd4, 0xc6, + 0x88, 0x9c, 0xac, 0xcd, 0x2e, 0x21, 0x48, 0xe7, 0xe1, 0xc1, 0x7b, 0xd2, 0x5d, 0x84, 0x40, 0x40, + 0x01, 0x8b, 0xe3, 0xde, 0x45, 0x18, 0xc8, 0xc1, 0x18, 0x62, 0xa4, 0xc8, 0x30, 0xad, 0xdb, 0x17, + 0xbd, 0xa1, 0x61, 0xc9, 0x6c, 0xb7, 0x47, 0x33, 0x42, 0x26, 0x35, 0xfe, 0x7d, 0x31, 0xf8, 0x5c, + 0x8c, 0xdd, 0xf8, 0x1f, 0xc0, 0x40, 0xfa, 0x30, 0x3c, 0x97, 0x34, 0x16, 0x7f, 0x84, 0xb6, 0x46, + 0x83, 0xc3, 0xb0, 0x0d, 0x22, 0x60, 0xe3, 0xd0, 0x1a, 0x44, 0x14, 0x07, 0x63, 0xd9, 0x39, 0x99, + 0x2b, 0xe1, 0x61, 0x7e, 0xb4, 0x6d, 0xe2, 0xdd, 0xc9, 0x5c, 0x13, 0xe9, 0xb0, 0xcb, 0x31, 0x32, + 0x12, 0x34, 0x12, 0xb8, 0x20, 0x0a, 0xf0, 0x90, 0x3e, 0x1e, 0x1f, 0x96, 0x61, 0x86, 0xb0, 0xf0, + 0x08, 0xb1, 0x02, 0x86, 0x6a, 0x54, 0x6c, 0x0d, 0x0e, 0xa7, 0x51, 0xc5, 0x70, 0x30, 0x96, 0x5b, + 0x41, 0x3d, 0x3b, 0x6e, 0x88, 0xe3, 0xe3, 0x51, 0x08, 0x0e, 0x6d, 0x8c, 0x8d, 0xf0, 0x08, 0xf9, + 0x30, 0xc6, 0xd8, 0x21, 0x1d, 0x23, 0x7f, 0x6e, 0xd0, 0x8a, 0x46, 0x89, 0xc1, 0x01, 0x9a, 0xc2, + 0x08, 0x61, 0x18, 0xb2, 0x29, 0x1c, 0x12, 0x12, 0x5f, 0x91, 0x01, 0x08, 0x03, 0x6b, 0xf6, 0x1e, + 0xbe, 0xcc, 0x67, 0x04, 0xdd, 0x59, 0xaf, 0x5b, 0xbd, 0x3c, 0xc0, 0xad, 0x3e, 0x61, 0x08, 0x97, + 0xa4, 0x2b, 0x81, 0x8c, 0x94, 0xbd, 0x4a, 0x8e, 0x7d, 0x25, 0x30, 0xbe, 0xfc, 0xf4, 0x31, 0xfe, + 0x12, 0xb1, 0xe6, 0xc2, 0x03, 0xa6, 0xbf, 0x31, 0x12, 0x94, 0x99, 0xd9, 0xbf, 0xcc, 0xcf, 0xfe, + 0x0f, 0x80, 0xed, 0xb0, 0x36, 0xe2, 0xa0, 0x83, 0xa3, 0xe9, 0xdb, 0x88, 0x87, 0x77, 0x40, 0xf4, + 0x67, 0xb3, 0x70, 0x94, 0x76, 0x22, 0x3f, 0x0c, 0x10, 0x27, 0x3c, 0x87, 0xc7, 0x75, 0x92, 0x03, + 0x50, 0x1e, 0xd5, 0x82, 0x54, 0x92, 0xa5, 0x4c, 0x01, 0xf6, 0xc6, 0xb2, 0xba, 0x91, 0xd7, 0x1e, + 0xe8, 0x18, 0x56, 0x4b, 0x3c, 0xdc, 0xef, 0x00, 0xe0, 0xfd, 0xb5, 0x46, 0x99, 0x5f, 0x6b, 0xec, + 0xb3, 0x32, 0x99, 0x78, 0xe7, 0x1a, 0x8b, 0x8c, 0xb0, 0x3b, 0xf6, 0x9d, 0xeb, 0xe8, 0xb2, 0xd3, + 0x47, 0xe9, 0xdd, 0x32, 0x64, 0x6b, 0xb6, 0xe3, 0xaa, 0xcf, 0x4b, 0xd2, 0x3a, 0x89, 0xe4, 0x43, + 0x90, 0xfc, 0x77, 0xa5, 0xc4, 0xdd, 0xd2, 0x7c, 0x73, 0xfc, 0x51, 0x67, 0xc3, 0x35, 0xb0, 0x57, + 0xb7, 0x57, 0x3e, 0x73, 0x5d, 0x73, 0xd2, 0x78, 0x3a, 0x44, 0x7e, 0xb5, 0xe8, 0x03, 0x18, 0xa9, + 0xc5, 0xd3, 0x89, 0x2c, 0x39, 0x7d, 0xdc, 0x1e, 0x3a, 0x4a, 0x7d, 0x5b, 0x97, 0xcc, 0x36, 0x52, + 0x9f, 0x47, 0x5c, 0x46, 0x2a, 0xc6, 0x0e, 0x12, 0x3f, 0x12, 0x13, 0xeb, 0xda, 0x8a, 0xe3, 0xcb, + 0xca, 0x61, 0x7c, 0xd9, 0xa4, 0x0d, 0x8a, 0x1c, 0x40, 0x27, 0x2c, 0x8d, 0xbb, 0x41, 0xc5, 0x94, + 0x3d, 0x96, 0x38, 0x9d, 0xc7, 0x6a, 0xc8, 0x25, 0x46, 0x65, 0xd5, 0xbf, 0x81, 0xe5, 0x67, 0x46, + 0x12, 0xb1, 0x33, 0xb8, 0xe0, 0x45, 0xee, 0xb9, 0xe0, 0xe5, 0x7d, 0x2c, 0x38, 0x6b, 0x3c, 0x38, + 0x3f, 0x19, 0x2d, 0x20, 0x9e, 0xc9, 0x91, 0xc0, 0xf4, 0xb6, 0x00, 0xa6, 0x75, 0x0e, 0xa6, 0x3b, + 0x86, 0xe4, 0x22, 0x7d, 0xc0, 0x7e, 0x39, 0x07, 0x47, 0xc9, 0xa4, 0xbf, 0x68, 0xb5, 0x68, 0x84, + 0xd5, 0x37, 0x4b, 0x87, 0xbc, 0xd9, 0xb6, 0x3f, 0x04, 0x2b, 0x17, 0xcb, 0x39, 0xd7, 0x7b, 0x3b, + 0xfe, 0x02, 0x09, 0xe7, 0xea, 0x75, 0xa2, 0x78, 0xa7, 0x4d, 0xfc, 0x86, 0xfc, 0xe0, 0x3f, 0xfe, + 0x2e, 0xa3, 0x09, 0xf1, 0xbb, 0x8c, 0xfe, 0x2c, 0xd9, 0xba, 0x1d, 0x2e, 0xba, 0x47, 0xe0, 0x29, + 0xdb, 0x4e, 0x09, 0x56, 0xf4, 0x04, 0xb8, 0xfb, 0xd1, 0x70, 0x27, 0x0b, 0x23, 0x88, 0x0c, 0xe9, + 0x4e, 0x86, 0x09, 0x1c, 0xa6, 0x3b, 0xd9, 0x20, 0x06, 0xc6, 0x70, 0xab, 0x7d, 0x8e, 0xee, 0xe6, + 0xe3, 0x76, 0xa3, 0xfe, 0x8d, 0x94, 0xfa, 0x28, 0xfd, 0xdd, 0x4c, 0x22, 0xff, 0x67, 0xcc, 0x57, + 0xfc, 0x30, 0x9d, 0xc4, 0xa3, 0x39, 0x8e, 0xdc, 0x18, 0xd6, 0x8d, 0x24, 0xec, 0x8b, 0x7e, 0xce, + 0x6c, 0xb9, 0xdb, 0x23, 0x3a, 0xd1, 0x71, 0xd1, 0xa3, 0xe5, 0x5f, 0x8f, 0x8c, 0x5f, 0xd4, 0x7f, + 0xcf, 0x24, 0x0a, 0x21, 0x15, 0x88, 0x04, 0xb3, 0x15, 0x21, 0xe2, 0x04, 0x81, 0x9f, 0x62, 0xe9, + 0x8d, 0x51, 0xa3, 0xcf, 0x9a, 0x2d, 0x64, 0x3f, 0x02, 0x35, 0x1a, 0xf3, 0x35, 0x3a, 0x8d, 0x8e, + 0x23, 0xf7, 0x23, 0xaa, 0xd1, 0x81, 0x48, 0x46, 0xa4, 0xd1, 0xb1, 0xf4, 0xd2, 0x97, 0xf1, 0xab, + 0x66, 0xe8, 0x44, 0x6a, 0xd5, 0xb4, 0x2e, 0xa8, 0xff, 0x9a, 0xf7, 0x2f, 0x66, 0x3e, 0x67, 0xba, + 0xdb, 0x34, 0x16, 0xcc, 0xef, 0x0b, 0xdf, 0x8d, 0x32, 0x44, 0xbc, 0x17, 0x3e, 0x9c, 0x54, 0x6e, + 0x5f, 0x38, 0xa9, 0x22, 0xcc, 0x9a, 0x96, 0x8b, 0x1c, 0xcb, 0x68, 0x2f, 0xb5, 0x8d, 0xad, 0xee, + 0xa9, 0x89, 0xbe, 0x97, 0xd7, 0x95, 0x99, 0x3c, 0x3a, 0xff, 0x07, 0x7b, 0x7d, 0xe5, 0x24, 0x7f, + 0x7d, 0x65, 0x44, 0xf4, 0xab, 0xa9, 0xe8, 0xe8, 0x57, 0x41, 0x74, 0x2b, 0x18, 0x1c, 0x1c, 0x5b, + 0xd4, 0x36, 0x4e, 0x18, 0xee, 0xef, 0x66, 0xc1, 0x28, 0x6c, 0x41, 0xe8, 0xc7, 0xd7, 0xca, 0x89, + 0x56, 0xf7, 0x3c, 0x45, 0x98, 0xef, 0x55, 0x82, 0xc4, 0x16, 0x2a, 0x5b, 0x79, 0xb9, 0xa7, 0xf2, + 0x81, 0xc9, 0x93, 0x15, 0x30, 0x79, 0x58, 0xa5, 0xca, 0x89, 0x29, 0x55, 0x92, 0xc5, 0x42, 0x91, + 0xda, 0x8e, 0xe1, 0x34, 0x52, 0x0e, 0x8e, 0xf9, 0xd1, 0x6e, 0x3b, 0x1d, 0x64, 0x38, 0x86, 0xd5, + 0x44, 0xea, 0xc7, 0xa4, 0x51, 0x98, 0xbd, 0x4b, 0x30, 0x69, 0x36, 0x6d, 0xab, 0x66, 0x3e, 0xd3, + 0xbf, 0x5c, 0x2e, 0x3e, 0xc8, 0x3a, 0x96, 0x48, 0x99, 0xfe, 0xa1, 0x07, 0xff, 0x2a, 0x65, 0x98, + 0x6a, 0x1a, 0x4e, 0x8b, 0x04, 0xe1, 0xcb, 0xf5, 0x5c, 0xe4, 0x14, 0x49, 0xa8, 0xe4, 0xff, 0xa2, + 0x87, 0x7f, 0x2b, 0x55, 0x5e, 0x88, 0xf9, 0x9e, 0x68, 0x1e, 0x91, 0xc4, 0x16, 0xc3, 0x9f, 0x38, + 0x99, 0x7b, 0xd2, 0x71, 0x50, 0x1b, 0xdf, 0x41, 0x4f, 0x7a, 0x88, 0x29, 0x3d, 0x4c, 0x48, 0xba, + 0x3c, 0x80, 0x8b, 0xda, 0x87, 0xc6, 0xb8, 0x97, 0x07, 0x84, 0xb8, 0x48, 0x5f, 0x33, 0xdf, 0x91, + 0x87, 0x59, 0xd2, 0xab, 0x51, 0x71, 0xaa, 0x2f, 0xc0, 0x57, 0x48, 0xbb, 0xf7, 0xa2, 0x4b, 0x6a, + 0xed, 0xe0, 0x63, 0x72, 0x01, 0xe4, 0x0b, 0x41, 0xc0, 0x41, 0xef, 0x31, 0xe9, 0xbe, 0xbd, 0xcf, + 0xd7, 0x3c, 0xe1, 0x69, 0xdc, 0xfb, 0xf6, 0xf1, 0xc5, 0xa7, 0x8f, 0xcf, 0xaf, 0xc8, 0x20, 0x17, + 0x5b, 0x2d, 0xb5, 0x79, 0x70, 0x28, 0xae, 0x81, 0x69, 0xbf, 0xcd, 0x84, 0x31, 0x20, 0xd9, 0xa4, + 0xa4, 0x8b, 0xa0, 0x81, 0x6c, 0x8a, 0xad, 0xb1, 0xef, 0x2a, 0xc4, 0x94, 0x9d, 0x3e, 0x28, 0xbf, + 0x31, 0x41, 0x1b, 0xcd, 0x82, 0x6d, 0x5f, 0xc0, 0x47, 0x65, 0x9e, 0x27, 0x43, 0x6e, 0x09, 0xb9, + 0xcd, 0xed, 0x11, 0xb5, 0x99, 0x5d, 0xa7, 0xed, 0xb7, 0x99, 0x7d, 0xf7, 0xe1, 0x0f, 0xb6, 0x61, + 0x7d, 0xb6, 0xe6, 0x31, 0x4b, 0xe3, 0x8e, 0xee, 0x1c, 0x5b, 0x7a, 0xfa, 0xe0, 0xfc, 0xbb, 0x0c, + 0x73, 0xc1, 0x0a, 0x17, 0xc1, 0xe4, 0x97, 0x33, 0x8f, 0xb4, 0xf5, 0x4e, 0xf5, 0x73, 0xc9, 0x42, + 0xa4, 0x05, 0x32, 0xe5, 0x6b, 0x96, 0xf2, 0xc2, 0x62, 0x82, 0xe0, 0x69, 0x62, 0x0c, 0x8e, 0x61, + 0x06, 0x2f, 0xc3, 0x24, 0x66, 0x68, 0xd1, 0xdc, 0xc3, 0xae, 0x83, 0xdc, 0x42, 0xe3, 0xb3, 0x46, + 0xb2, 0xd0, 0x78, 0x07, 0xbf, 0xd0, 0x28, 0x18, 0xf1, 0xd8, 0x5f, 0x67, 0x4c, 0xe8, 0x4b, 0xe3, + 0xfd, 0x3f, 0xf2, 0x65, 0xc6, 0x04, 0xbe, 0x34, 0x03, 0xca, 0x4f, 0x1f, 0xd1, 0xd7, 0xfe, 0x27, + 0xda, 0xd9, 0xfa, 0x1b, 0xaa, 0xea, 0xff, 0x75, 0x0c, 0xb2, 0x67, 0xbd, 0x87, 0xff, 0x11, 0xde, + 0x88, 0xf5, 0xb2, 0x11, 0x04, 0x67, 0x78, 0x2a, 0x64, 0x3d, 0xfa, 0x74, 0xda, 0x72, 0xa3, 0xd8, + 0xee, 0xae, 0xc7, 0x88, 0x8e, 0xff, 0x53, 0x4e, 0x42, 0xbe, 0x6b, 0xef, 0x3a, 0x4d, 0xcf, 0x7c, + 0xf6, 0x34, 0x86, 0xbe, 0x25, 0x0d, 0x4a, 0xca, 0x91, 0x9e, 0x1f, 0x9d, 0xcb, 0x28, 0x73, 0x41, + 0x92, 0xcc, 0x5d, 0x90, 0x94, 0x60, 0xff, 0x40, 0x80, 0xb7, 0xf4, 0x35, 0xe2, 0x6f, 0xf0, 0x5d, + 0x81, 0xad, 0x51, 0xc1, 0x1e, 0x21, 0x96, 0x83, 0xaa, 0x43, 0x52, 0x87, 0x6f, 0x5e, 0xb4, 0x41, + 0x1c, 0xf8, 0xb1, 0x3a, 0x7c, 0x0b, 0xf0, 0x30, 0x96, 0x53, 0xea, 0x79, 0xea, 0xa4, 0x7a, 0xdf, + 0x28, 0xd1, 0xcd, 0x72, 0x4a, 0x7f, 0x20, 0x74, 0x46, 0xe8, 0xbc, 0x3a, 0x34, 0x3a, 0x87, 0xe4, + 0xbe, 0xfa, 0x87, 0x32, 0x8e, 0x84, 0xe9, 0x1b, 0x39, 0xe2, 0x17, 0x1d, 0x25, 0x86, 0xc8, 0x1b, + 0x83, 0xb9, 0x38, 0xd0, 0xb3, 0xc3, 0x87, 0x06, 0xe7, 0x45, 0xc7, 0xf0, 0x3f, 0xee, 0xd0, 0xe0, + 0xa2, 0x8c, 0xa4, 0x0f, 0xe4, 0x6f, 0x92, 0x8b, 0xc5, 0x8a, 0x4d, 0xd7, 0xdc, 0x1b, 0x71, 0x4b, + 0xe3, 0x87, 0x97, 0x84, 0xd1, 0x80, 0xf7, 0x49, 0x88, 0x70, 0x38, 0xee, 0x68, 0xc0, 0x62, 0x6c, + 0xa4, 0x0f, 0xd3, 0xdf, 0xe7, 0x3d, 0xe9, 0xd1, 0xb5, 0x99, 0x37, 0xd0, 0xd5, 0x00, 0x74, 0x70, + 0xb4, 0xce, 0xc0, 0x0c, 0x33, 0xf5, 0xf7, 0x2f, 0xac, 0xe1, 0xd2, 0x92, 0x1e, 0x74, 0x0f, 0x44, + 0x36, 0xf2, 0x85, 0x81, 0x04, 0x0b, 0xbe, 0x22, 0x4c, 0x8c, 0xe5, 0x3e, 0x38, 0x7f, 0x0c, 0x1b, + 0x13, 0x56, 0xbf, 0xcf, 0x62, 0x55, 0xe5, 0xb1, 0xba, 0x4d, 0x44, 0x4c, 0x62, 0x63, 0x9a, 0xd0, + 0xbc, 0xf1, 0xed, 0x01, 0x5c, 0x3a, 0x07, 0xd7, 0x53, 0x87, 0xe6, 0x23, 0x7d, 0xc4, 0x5e, 0x4e, + 0xba, 0xc3, 0x1a, 0x31, 0xd9, 0x47, 0xd3, 0x1d, 0xd2, 0xd9, 0x80, 0xcc, 0xcd, 0x06, 0x12, 0xfa, + 0xdb, 0x87, 0x6e, 0xa4, 0x3e, 0x73, 0x83, 0x20, 0xca, 0x8e, 0xd8, 0xdf, 0x7e, 0x20, 0x07, 0xe9, + 0x83, 0xf3, 0xcf, 0x32, 0xc0, 0xb2, 0x63, 0xef, 0x76, 0xaa, 0x4e, 0x0b, 0x39, 0xea, 0xdf, 0x85, + 0x13, 0x80, 0x97, 0x8c, 0x60, 0x02, 0xb0, 0x0e, 0xb0, 0x15, 0x10, 0xa7, 0x1a, 0x7e, 0x8b, 0x98, + 0xb9, 0x1f, 0x32, 0xa5, 0x33, 0x34, 0xf8, 0x2b, 0x67, 0x9f, 0xc6, 0x63, 0x1c, 0xd7, 0x67, 0x85, + 0xe4, 0x46, 0x39, 0x01, 0x78, 0x67, 0x80, 0x75, 0x9d, 0xc3, 0xfa, 0xee, 0x03, 0x70, 0x92, 0x3e, + 0xe6, 0xff, 0x32, 0x01, 0xd3, 0x64, 0xbb, 0x8e, 0xc8, 0xf4, 0x1f, 0x43, 0xd0, 0x7f, 0x63, 0x04, + 0xa0, 0x6f, 0xc0, 0x8c, 0x1d, 0x52, 0x27, 0x7d, 0x2a, 0xbb, 0x00, 0x13, 0x0b, 0x3b, 0xc3, 0x97, + 0xce, 0x91, 0x51, 0x3f, 0xc2, 0x22, 0xaf, 0xf3, 0xc8, 0xdf, 0x11, 0x23, 0x6f, 0x86, 0xe2, 0x28, + 0xa1, 0x7f, 0x57, 0x00, 0xfd, 0x06, 0x07, 0x7d, 0xf1, 0x20, 0xac, 0x8c, 0x21, 0xdc, 0xbe, 0x0c, + 0x59, 0x7c, 0x3a, 0xee, 0xb7, 0x52, 0x9c, 0xdf, 0x9f, 0x82, 0x09, 0xdc, 0x64, 0x83, 0x79, 0x87, + 0xff, 0xea, 0x7d, 0x31, 0x36, 0x5d, 0xe4, 0x04, 0x1e, 0x0b, 0xfe, 0xab, 0xc7, 0x83, 0xef, 0x95, + 0xdc, 0x3d, 0x95, 0x27, 0x1b, 0x91, 0x41, 0xc2, 0xd0, 0x93, 0x12, 0x56, 0xe2, 0x23, 0x3b, 0x2f, + 0x37, 0xcc, 0xa4, 0x64, 0x00, 0x23, 0xe9, 0x03, 0xff, 0x57, 0x59, 0x38, 0x45, 0x56, 0x95, 0x96, + 0x1c, 0x7b, 0xa7, 0xe7, 0x76, 0x2b, 0xf3, 0xe0, 0xba, 0x70, 0x3d, 0xcc, 0xb9, 0x9c, 0x3f, 0x36, + 0xd5, 0x89, 0x9e, 0x54, 0xf5, 0xcf, 0x59, 0x9f, 0x8a, 0xa7, 0xf3, 0x48, 0x2e, 0xc4, 0x08, 0x30, + 0x8a, 0xf7, 0xc4, 0x0b, 0xf5, 0x82, 0x8c, 0x32, 0x8b, 0x54, 0xf2, 0x50, 0x6b, 0x96, 0x81, 0x4e, + 0xe5, 0x44, 0x74, 0xea, 0xfd, 0x81, 0x4e, 0xfd, 0x34, 0xa7, 0x53, 0xcb, 0x07, 0x17, 0x49, 0xfa, + 0xba, 0xf5, 0x9a, 0x60, 0x63, 0x28, 0xd8, 0xb6, 0xdb, 0x49, 0x61, 0xb3, 0x8e, 0xf5, 0x47, 0xca, + 0x72, 0xfe, 0x48, 0xfc, 0x7d, 0x14, 0x09, 0x66, 0xc2, 0x3c, 0xd7, 0x11, 0xba, 0x34, 0x07, 0x92, + 0xe9, 0x73, 0x27, 0x99, 0xad, 0xa1, 0xe6, 0xba, 0xb1, 0x05, 0x8d, 0x61, 0x6d, 0x69, 0x0e, 0xf2, + 0x4b, 0x66, 0xdb, 0x45, 0x8e, 0xfa, 0x25, 0x3a, 0xd3, 0x7d, 0x4d, 0x8a, 0x03, 0xc0, 0x22, 0xe4, + 0x37, 0x71, 0x69, 0xd4, 0x64, 0xbe, 0x49, 0xac, 0xf5, 0x10, 0x0e, 0x75, 0xfa, 0x6f, 0xd2, 0xe8, + 0x7c, 0x3d, 0x64, 0x46, 0x36, 0x45, 0x4e, 0x10, 0x9d, 0x6f, 0x30, 0x0b, 0x63, 0xb9, 0x98, 0x2a, + 0xaf, 0xa3, 0x1d, 0x6f, 0x8c, 0xbf, 0x90, 0x1e, 0xc2, 0x05, 0x90, 0xcd, 0x56, 0x17, 0x77, 0x8e, + 0x53, 0xba, 0xf7, 0x98, 0xd4, 0x57, 0xa8, 0x57, 0x54, 0x84, 0xe5, 0x71, 0xfb, 0x0a, 0x09, 0x71, + 0x91, 0x3e, 0x66, 0xdf, 0xc5, 0x8e, 0xa2, 0x9d, 0xb6, 0xd1, 0x44, 0x1e, 0xf7, 0xa9, 0xa1, 0x46, + 0x7a, 0xb2, 0xac, 0xdf, 0x93, 0x31, 0xed, 0x34, 0x77, 0x80, 0x76, 0x3a, 0xec, 0x32, 0x64, 0x20, + 0x73, 0x5c, 0xf1, 0x43, 0x5b, 0x86, 0x8c, 0x65, 0x63, 0x0c, 0xd7, 0x8e, 0xfa, 0x07, 0x69, 0xc7, + 0xda, 0x5a, 0x87, 0xdd, 0xa4, 0xa1, 0xc2, 0x1a, 0xd9, 0xa1, 0xd9, 0x61, 0x36, 0x69, 0xa2, 0x79, + 0x18, 0x03, 0x5a, 0x73, 0x14, 0xad, 0xcf, 0xd2, 0x61, 0x34, 0xe5, 0x7d, 0xd2, 0xae, 0xed, 0xb8, + 0xc9, 0xf6, 0x49, 0x3d, 0xee, 0x74, 0xfc, 0x5f, 0xd2, 0x83, 0x57, 0xfc, 0xb9, 0xea, 0x51, 0x0d, + 0x9f, 0x09, 0x0e, 0x5e, 0x0d, 0x62, 0x20, 0x7d, 0x78, 0xdf, 0x72, 0x48, 0x83, 0xe7, 0xb0, 0xcd, + 0x91, 0xb6, 0x81, 0x91, 0x0d, 0x9d, 0xc3, 0x34, 0xc7, 0x68, 0x1e, 0xd2, 0xc7, 0xeb, 0x5b, 0xcc, + 0xc0, 0xf9, 0xa6, 0x31, 0x0e, 0x9c, 0x7e, 0xcb, 0xcc, 0x0d, 0xd9, 0x32, 0x87, 0xdd, 0xff, 0xa1, + 0xb2, 0x1e, 0xdd, 0x80, 0x39, 0xcc, 0xfe, 0x4f, 0x0c, 0x13, 0xe9, 0x23, 0xfe, 0x66, 0x19, 0x72, + 0xb5, 0xf1, 0x8f, 0x97, 0xc3, 0xce, 0x45, 0xb0, 0xac, 0x6a, 0x23, 0x1b, 0x2e, 0x87, 0x99, 0x8b, + 0x44, 0xb2, 0x30, 0x86, 0xc0, 0xfb, 0x47, 0x61, 0x06, 0x2f, 0x89, 0xf8, 0xdb, 0xac, 0xdf, 0xa2, + 0xa3, 0xe6, 0xc3, 0x29, 0xb6, 0xd5, 0x7b, 0x60, 0xd2, 0xdf, 0xbf, 0xa3, 0x23, 0xe7, 0xbc, 0x58, + 0xfb, 0xf4, 0xb9, 0xd4, 0x83, 0xff, 0x0f, 0xe4, 0x0c, 0x31, 0xf2, 0xbd, 0xda, 0x61, 0x9d, 0x21, + 0x0e, 0x75, 0xbf, 0xf6, 0xcf, 0xc2, 0x11, 0xf5, 0xbf, 0xa4, 0x87, 0x79, 0xef, 0x3e, 0x6e, 0xb6, + 0xcf, 0x3e, 0xee, 0xc7, 0x58, 0x2c, 0x6b, 0x3c, 0x96, 0x77, 0x8a, 0x8a, 0x70, 0x84, 0x63, 0xed, + 0xbb, 0x03, 0x38, 0xcf, 0x72, 0x70, 0x2e, 0x1c, 0x88, 0x97, 0x31, 0x1c, 0x7c, 0xcc, 0x86, 0x63, + 0xee, 0xc7, 0x53, 0x6c, 0xc7, 0x3d, 0xa7, 0x2a, 0xb2, 0xfb, 0x4e, 0x55, 0x70, 0x2d, 0x3d, 0x77, + 0xc0, 0x96, 0xfe, 0x71, 0x56, 0x3b, 0xea, 0xbc, 0x76, 0x3c, 0x55, 0x1c, 0x91, 0xd1, 0x8d, 0xcc, + 0xef, 0x09, 0xd4, 0xe3, 0x1c, 0xa7, 0x1e, 0xa5, 0x83, 0x31, 0x93, 0xbe, 0x7e, 0xfc, 0x91, 0x3f, + 0xa1, 0x3d, 0xe4, 0xf6, 0x3e, 0xec, 0x56, 0x31, 0x27, 0xc4, 0x91, 0x8d, 0xdc, 0xc3, 0x6c, 0x15, + 0x0f, 0xe2, 0x64, 0x0c, 0xb1, 0xd8, 0x66, 0x61, 0x1a, 0xf3, 0x74, 0xce, 0x6c, 0x6d, 0x21, 0x57, + 0x7d, 0x2d, 0xf1, 0x51, 0xf4, 0x23, 0x5f, 0x8e, 0x28, 0x3c, 0x51, 0xd4, 0x79, 0xd7, 0xa4, 0x1e, + 0x1d, 0x84, 0xc9, 0x79, 0x86, 0xc1, 0x71, 0x47, 0x50, 0x1c, 0xc8, 0x41, 0xfa, 0x90, 0x7d, 0x84, + 0xb8, 0xdb, 0xac, 0x1a, 0x97, 0xec, 0x5d, 0x57, 0x7d, 0x70, 0x04, 0x1d, 0xf4, 0x02, 0xe4, 0xdb, + 0x98, 0x1a, 0x3d, 0x96, 0x11, 0x3f, 0xdd, 0xa1, 0x22, 0x20, 0xe5, 0xeb, 0xf4, 0xcf, 0xa4, 0x67, + 0x33, 0x42, 0x39, 0x12, 0x3a, 0xe3, 0x3e, 0x9b, 0x31, 0xa0, 0xfc, 0xb1, 0xdc, 0xb1, 0x33, 0xe9, + 0x95, 0x6e, 0xee, 0x98, 0xee, 0x88, 0x22, 0x38, 0xb4, 0x3d, 0x5a, 0x7e, 0x04, 0x07, 0xfc, 0x92, + 0xf4, 0xc4, 0x28, 0x23, 0x15, 0xef, 0xf7, 0x71, 0x9f, 0x18, 0x8d, 0x2f, 0x3e, 0x7d, 0x4c, 0x7e, + 0x8d, 0xb4, 0xac, 0xb3, 0xc4, 0xf9, 0x36, 0x45, 0xbf, 0xde, 0xa1, 0x1b, 0x0b, 0x61, 0xed, 0xf0, + 0x1a, 0x4b, 0xdf, 0xf2, 0xd3, 0x07, 0xe6, 0xbf, 0xfd, 0x38, 0xe4, 0x16, 0xd1, 0xf9, 0xdd, 0x2d, + 0xf5, 0x0e, 0x98, 0xac, 0x3b, 0x08, 0x95, 0xad, 0x4d, 0xdb, 0x93, 0xae, 0xeb, 0x3d, 0xfb, 0x90, + 0xd0, 0x37, 0x0f, 0x8f, 0x6d, 0x64, 0xb4, 0xc2, 0xf3, 0x67, 0xfe, 0xab, 0xfa, 0x32, 0x09, 0xb2, + 0x35, 0xd7, 0x70, 0xd5, 0xa9, 0x00, 0x5b, 0xf5, 0x41, 0x16, 0x8b, 0x3b, 0x78, 0x2c, 0xae, 0xe7, + 0x64, 0x81, 0x39, 0x98, 0xf7, 0xfe, 0x8f, 0x00, 0x40, 0x85, 0xc9, 0xfb, 0xbb, 0xb6, 0xe5, 0xe5, + 0xf0, 0x8f, 0x40, 0xfa, 0xef, 0xea, 0xab, 0x03, 0x71, 0xdf, 0xc5, 0x89, 0xfb, 0xb1, 0x62, 0x45, + 0x8c, 0x61, 0xa5, 0x4d, 0x82, 0x29, 0x4f, 0xb4, 0x2b, 0xc8, 0x68, 0x75, 0xd5, 0x1f, 0x0b, 0x95, + 0x3f, 0x42, 0xcc, 0xea, 0x07, 0x84, 0x83, 0x71, 0x92, 0x5a, 0x05, 0xc4, 0xa3, 0x3d, 0x3a, 0xfc, + 0xcd, 0x7f, 0x89, 0x0f, 0x46, 0x72, 0x33, 0x64, 0x4d, 0x6b, 0xd3, 0xa6, 0xfe, 0x85, 0x57, 0x46, + 0xd0, 0xf6, 0x74, 0x42, 0xc7, 0x19, 0x05, 0x23, 0x75, 0xc6, 0xb3, 0x35, 0x96, 0x4b, 0xef, 0xb2, + 0x5e, 0xe9, 0xea, 0xff, 0x3e, 0x50, 0xd8, 0x8a, 0x02, 0xd9, 0x8e, 0xe1, 0x6e, 0xd3, 0xa2, 0xf1, + 0xb3, 0x67, 0x23, 0xef, 0x5a, 0x86, 0x65, 0x5b, 0x97, 0x76, 0xcc, 0x67, 0x06, 0x77, 0xeb, 0x72, + 0x69, 0x1e, 0xe7, 0x5b, 0xc8, 0x42, 0x8e, 0xe1, 0xa2, 0xda, 0xde, 0x16, 0x9e, 0x63, 0x4d, 0xea, + 0x6c, 0x52, 0x62, 0xfd, 0xf7, 0x38, 0x8e, 0xd6, 0xff, 0x4d, 0xb3, 0x8d, 0x70, 0xa4, 0x26, 0xaa, + 0xff, 0xfe, 0x7b, 0x22, 0xfd, 0xef, 0x53, 0x44, 0xfa, 0x68, 0x7c, 0x4f, 0x82, 0x99, 0x9a, 0xa7, + 0x70, 0xb5, 0xdd, 0x9d, 0x1d, 0xc3, 0xb9, 0xa4, 0x5e, 0x1b, 0xa2, 0xc2, 0xa8, 0x66, 0x86, 0xf7, + 0x4b, 0xf9, 0x43, 0xe1, 0x6b, 0xa5, 0x69, 0xd3, 0x66, 0x4a, 0x48, 0xdc, 0x0e, 0x1e, 0x0f, 0x39, + 0x4f, 0xbd, 0x7d, 0x8f, 0xcb, 0xd8, 0x86, 0x40, 0x72, 0x0a, 0x46, 0xb4, 0x1a, 0xc8, 0xdb, 0x18, + 0xa2, 0x69, 0x48, 0x70, 0xb4, 0xe6, 0x1a, 0xcd, 0x0b, 0xcb, 0xb6, 0x63, 0xef, 0xba, 0xa6, 0x85, + 0xba, 0xea, 0xa3, 0x42, 0x04, 0x7c, 0xfd, 0xcf, 0x84, 0xfa, 0xaf, 0xfe, 0x20, 0x23, 0x3a, 0x8a, + 0x06, 0xdd, 0x2a, 0x4b, 0x3e, 0x22, 0x40, 0x95, 0xd8, 0xb8, 0x28, 0x42, 0x31, 0x7d, 0xa1, 0xbd, + 0x49, 0x86, 0x82, 0xf6, 0x40, 0xc7, 0x76, 0xdc, 0x55, 0xbb, 0x69, 0xb4, 0xbb, 0xae, 0xed, 0x20, + 0xb5, 0x1a, 0x2b, 0x35, 0xaf, 0x87, 0x69, 0xd9, 0xcd, 0x70, 0x70, 0xa4, 0x6f, 0xac, 0xda, 0xc9, + 0xbc, 0x8e, 0x7f, 0x44, 0x78, 0x97, 0x91, 0x48, 0xa5, 0x97, 0xa3, 0x08, 0x3d, 0xef, 0xd7, 0xa5, + 0x25, 0x3b, 0x2c, 0x21, 0xb6, 0xf3, 0x28, 0xc4, 0xd4, 0x18, 0x96, 0xca, 0x25, 0x98, 0xad, 0xed, + 0x9e, 0x0f, 0x88, 0x74, 0x59, 0x23, 0xe4, 0x75, 0xc2, 0x51, 0x2a, 0xa8, 0xe2, 0xb1, 0x84, 0x22, + 0xe4, 0x7b, 0x1d, 0xcc, 0x76, 0xd9, 0x6c, 0x14, 0x6f, 0x3e, 0x51, 0x30, 0x3a, 0xc5, 0xe0, 0x52, + 0xd3, 0x17, 0xe0, 0x7b, 0x24, 0x98, 0xad, 0x76, 0x90, 0x85, 0x5a, 0xc4, 0x0b, 0x92, 0x13, 0xe0, + 0xcb, 0x12, 0x0a, 0x90, 0x23, 0x14, 0x21, 0xc0, 0xd0, 0x63, 0x79, 0xd1, 0x17, 0x5e, 0x98, 0x90, + 0x48, 0x70, 0x71, 0xa5, 0xa5, 0x2f, 0xb8, 0x2f, 0x4a, 0x30, 0xad, 0xef, 0x5a, 0xeb, 0x8e, 0xed, + 0x8d, 0xc6, 0x8e, 0x7a, 0x67, 0xd8, 0x41, 0xdc, 0x04, 0xc7, 0x5a, 0xbb, 0x0e, 0x5e, 0x7f, 0x2a, + 0x5b, 0x35, 0xd4, 0xb4, 0xad, 0x56, 0x17, 0xd7, 0x23, 0xa7, 0xef, 0xff, 0x70, 0x7b, 0xf6, 0x79, + 0x5f, 0x97, 0x33, 0xea, 0x0b, 0x84, 0x43, 0xdd, 0x90, 0xca, 0x33, 0x45, 0x8b, 0xf7, 0x04, 0x82, + 0x01, 0x6d, 0x06, 0x95, 0x90, 0xbe, 0x70, 0x3f, 0x2b, 0x81, 0x52, 0x6c, 0x36, 0xed, 0x5d, 0xcb, + 0xad, 0xa1, 0x36, 0x6a, 0xba, 0x75, 0xc7, 0x68, 0x22, 0xd6, 0x7e, 0x2e, 0x80, 0xdc, 0x32, 0x1d, + 0xda, 0x07, 0x7b, 0x8f, 0x54, 0x8e, 0x2f, 0x13, 0xde, 0x71, 0x24, 0xb5, 0xdc, 0x5f, 0x4a, 0x02, + 0x71, 0x8a, 0xed, 0x2b, 0x0a, 0x16, 0x94, 0xbe, 0x54, 0x3f, 0x2e, 0xc1, 0x94, 0xdf, 0x63, 0x6f, + 0x89, 0x08, 0xf3, 0xd7, 0x12, 0x4e, 0x46, 0x02, 0xe2, 0x09, 0x64, 0xf8, 0x8e, 0x04, 0xb3, 0x8a, + 0x28, 0xfa, 0xc9, 0x44, 0x57, 0x4c, 0x2e, 0x3a, 0xef, 0xb5, 0x52, 0x6d, 0x2c, 0x55, 0x57, 0x17, + 0x35, 0xbd, 0x20, 0xab, 0x5f, 0x92, 0x20, 0xbb, 0x6e, 0x5a, 0x5b, 0x6c, 0x74, 0xa5, 0xe3, 0x9e, + 0x1d, 0xd9, 0x42, 0x0f, 0xd0, 0x96, 0x4e, 0x5e, 0x94, 0x5b, 0xe1, 0xb8, 0xb5, 0xbb, 0x73, 0x1e, + 0x39, 0xd5, 0x4d, 0x3c, 0xca, 0x76, 0xeb, 0x76, 0x0d, 0x59, 0xc4, 0x08, 0xcd, 0xe9, 0x7d, 0xbf, + 0xf1, 0x26, 0x98, 0xc0, 0xe4, 0xc1, 0xe3, 0x24, 0x42, 0xe2, 0x01, 0x53, 0x12, 0xc3, 0x54, 0xa2, + 0x69, 0x43, 0x1f, 0xe2, 0xe9, 0x6b, 0xea, 0x1f, 0xe7, 0xe0, 0x44, 0xd1, 0xba, 0x84, 0x6d, 0x0a, + 0xd2, 0xc1, 0x97, 0xb6, 0x0d, 0x6b, 0x0b, 0xe1, 0x01, 0x22, 0x90, 0x38, 0x1b, 0xa2, 0x3f, 0xc3, + 0x87, 0xe8, 0x57, 0x74, 0x98, 0xb0, 0x9d, 0x16, 0x72, 0x16, 0x2e, 0x61, 0x9e, 0x7a, 0x97, 0x9d, + 0x69, 0x9b, 0xec, 0x57, 0xc4, 0x3c, 0x25, 0x3f, 0x5f, 0x25, 0xff, 0xeb, 0x3e, 0xa1, 0x33, 0x37, + 0xc1, 0x04, 0x4d, 0x53, 0x66, 0x60, 0xb2, 0xaa, 0x2f, 0x6a, 0x7a, 0xa3, 0xbc, 0x58, 0x38, 0xa2, + 0x5c, 0x06, 0x47, 0xcb, 0x75, 0x4d, 0x2f, 0xd6, 0xcb, 0xd5, 0x4a, 0x03, 0xa7, 0x17, 0x32, 0xea, + 0x73, 0xb3, 0xa2, 0x9e, 0xbd, 0xf1, 0xcc, 0xf4, 0x83, 0x55, 0x87, 0x89, 0x26, 0xc9, 0x80, 0x87, + 0xd0, 0xe9, 0x44, 0xb5, 0xa3, 0x04, 0x49, 0x82, 0xee, 0x13, 0x52, 0x4e, 0x03, 0x5c, 0x74, 0x6c, + 0x6b, 0x2b, 0x3c, 0x75, 0x38, 0xa9, 0x33, 0x29, 0xea, 0x83, 0x19, 0xc8, 0x93, 0x7f, 0xf0, 0x95, + 0x24, 0xf8, 0x29, 0x14, 0xbc, 0xff, 0xee, 0x59, 0xbc, 0x58, 0x5e, 0xe1, 0x44, 0x8b, 0xbe, 0x7a, + 0xba, 0x48, 0x64, 0x40, 0x2c, 0x61, 0x5a, 0x95, 0x9b, 0x21, 0x4f, 0xfe, 0xa5, 0x5e, 0x07, 0xd1, + 0xe1, 0x45, 0x49, 0x36, 0x41, 0x3f, 0x65, 0x71, 0x99, 0xa6, 0xaf, 0xcd, 0x1f, 0x94, 0x60, 0xb2, + 0x82, 0xdc, 0xd2, 0x36, 0x6a, 0x5e, 0x50, 0x1f, 0xc3, 0x2f, 0x80, 0xb6, 0x4d, 0x64, 0xb9, 0xf7, + 0xed, 0xb4, 0x83, 0x05, 0x50, 0x3f, 0x41, 0x7d, 0x3e, 0xdb, 0xf9, 0xde, 0xcd, 0xeb, 0xcf, 0x8d, + 0x7d, 0xea, 0xea, 0x97, 0x10, 0xa1, 0x32, 0x27, 0x21, 0xef, 0xa0, 0xee, 0x6e, 0xdb, 0x5f, 0x44, + 0xa3, 0x6f, 0xea, 0x43, 0x81, 0x38, 0x4b, 0x9c, 0x38, 0x6f, 0x16, 0x2f, 0x62, 0x0c, 0xf1, 0x4a, + 0xb3, 0x30, 0x51, 0xb6, 0x4c, 0xd7, 0x34, 0xda, 0xea, 0x0b, 0xb2, 0x30, 0x5b, 0x43, 0xee, 0xba, + 0xe1, 0x18, 0x3b, 0xc8, 0x45, 0x4e, 0x57, 0xfd, 0x0e, 0xdf, 0x27, 0x74, 0xda, 0x86, 0xbb, 0x69, + 0x3b, 0x3b, 0xbe, 0x6a, 0xfa, 0xef, 0x9e, 0x6a, 0xee, 0x21, 0xa7, 0x1b, 0xf2, 0xe5, 0xbf, 0x7a, + 0x5f, 0x2e, 0xda, 0xce, 0x05, 0x6f, 0x10, 0xa4, 0xd3, 0x34, 0xfa, 0xea, 0xd1, 0x6b, 0xdb, 0x5b, + 0xab, 0x68, 0x0f, 0xf9, 0xe1, 0xd2, 0x82, 0x77, 0x6f, 0x2e, 0xd0, 0xb2, 0x2b, 0xb6, 0xeb, 0x75, + 0xda, 0xab, 0xf6, 0x16, 0x89, 0x17, 0x3b, 0xa9, 0xf3, 0x89, 0x61, 0x2e, 0x63, 0x0f, 0xe1, 0x5c, + 0x79, 0x36, 0x17, 0x4d, 0x54, 0xe6, 0x41, 0x09, 0x7e, 0xab, 0xa3, 0x36, 0xda, 0x41, 0xae, 0x73, + 0x09, 0x5f, 0x0b, 0x31, 0xa9, 0xf7, 0xf9, 0x42, 0x07, 0x68, 0xf1, 0xc9, 0x3a, 0x95, 0xde, 0x3c, + 0x27, 0xb9, 0x03, 0x4d, 0xd6, 0x45, 0x28, 0x8e, 0xe5, 0xda, 0x2b, 0xd9, 0xb3, 0x66, 0x5e, 0x21, + 0x43, 0x16, 0x0f, 0x9e, 0x6f, 0xce, 0x70, 0x2b, 0x4c, 0x3b, 0xa8, 0xdb, 0x35, 0xb6, 0x90, 0xbf, + 0xc2, 0x44, 0x5f, 0x95, 0xdb, 0x20, 0xd7, 0xc6, 0x98, 0x92, 0xc1, 0xe1, 0x5a, 0xae, 0x66, 0x9e, + 0x81, 0xe1, 0xd1, 0x0a, 0x46, 0x02, 0x0c, 0xb7, 0x4e, 0xfe, 0x38, 0x73, 0x0f, 0xe4, 0x08, 0xfc, + 0x53, 0x90, 0x5b, 0xd4, 0x16, 0x36, 0x96, 0x0b, 0x47, 0xbc, 0x47, 0x9f, 0xbf, 0x29, 0xc8, 0x2d, + 0x15, 0xeb, 0xc5, 0xd5, 0x82, 0xe4, 0xd5, 0xa3, 0x5c, 0x59, 0xaa, 0x16, 0x64, 0x2f, 0x71, 0xbd, + 0x58, 0x29, 0x97, 0x0a, 0x59, 0x65, 0x1a, 0x26, 0xce, 0x15, 0xf5, 0x4a, 0xb9, 0xb2, 0x5c, 0xc8, + 0xa9, 0x7f, 0xcf, 0xe2, 0x77, 0x3b, 0x8f, 0xdf, 0x75, 0x51, 0x3c, 0xf5, 0x83, 0xec, 0x95, 0x01, + 0x64, 0x77, 0x72, 0x90, 0xfd, 0xb8, 0x08, 0x91, 0x31, 0xb8, 0x33, 0xe5, 0x61, 0x62, 0xdd, 0xb1, + 0x9b, 0xa8, 0xdb, 0x55, 0x7f, 0x5d, 0x82, 0x7c, 0xc9, 0xb0, 0x9a, 0xa8, 0xad, 0x5e, 0x11, 0x42, + 0x45, 0x5c, 0x45, 0x33, 0xc1, 0x69, 0xb1, 0x7f, 0xce, 0x88, 0xf6, 0x7e, 0x94, 0xee, 0x3c, 0xa1, + 0x19, 0x21, 0x1f, 0xb1, 0x5e, 0x2e, 0x96, 0xd4, 0x18, 0xae, 0xc6, 0x91, 0x60, 0x8a, 0xae, 0x06, + 0x9c, 0x47, 0xec, 0x3c, 0xfc, 0x3b, 0x19, 0xd1, 0xc9, 0xa1, 0x5f, 0x83, 0x80, 0x4c, 0x84, 0x3c, + 0xc4, 0x26, 0x82, 0x83, 0xa8, 0x8d, 0x61, 0xf3, 0x50, 0x82, 0xe9, 0x0d, 0xab, 0xdb, 0x4f, 0x28, + 0xe2, 0x71, 0xf4, 0xfd, 0x6a, 0x30, 0x84, 0x0e, 0x14, 0x47, 0x7f, 0x30, 0xbd, 0xf4, 0x05, 0xf3, + 0x9d, 0x0c, 0x1c, 0x5f, 0x46, 0x16, 0x72, 0xcc, 0x26, 0xa9, 0x81, 0x2f, 0x89, 0x3b, 0x79, 0x49, + 0x3c, 0x86, 0xe3, 0xbc, 0xdf, 0x1f, 0xbc, 0x04, 0x5e, 0x13, 0x48, 0xe0, 0x6e, 0x4e, 0x02, 0x37, + 0x09, 0xd2, 0x19, 0xc3, 0x7d, 0xe8, 0x53, 0x30, 0x53, 0xb1, 0x5d, 0x73, 0xd3, 0x6c, 0x12, 0x1f, + 0xb4, 0x97, 0xcb, 0x90, 0x5d, 0x35, 0xbb, 0xae, 0x5a, 0x0c, 0xbb, 0x93, 0x6b, 0x60, 0xda, 0xb4, + 0x9a, 0xed, 0xdd, 0x16, 0xd2, 0x91, 0x41, 0xfa, 0x95, 0x49, 0x9d, 0x4d, 0x0a, 0xb7, 0xf6, 0x3d, + 0xb6, 0x64, 0x7f, 0x6b, 0xff, 0x53, 0xc2, 0xcb, 0x30, 0x2c, 0x0b, 0x38, 0x20, 0x65, 0x84, 0xdd, + 0x55, 0x84, 0x59, 0x8b, 0xc9, 0xea, 0x1b, 0xec, 0xbd, 0x17, 0x0a, 0xb0, 0xe4, 0x74, 0xfe, 0x0f, + 0xf5, 0x7d, 0x42, 0x8d, 0x75, 0x10, 0x43, 0xc9, 0x90, 0x59, 0x1a, 0x62, 0x92, 0xac, 0xc0, 0x5c, + 0xb9, 0x52, 0xd7, 0xf4, 0x4a, 0x71, 0x95, 0x66, 0x91, 0xd5, 0xef, 0x49, 0x90, 0xd3, 0x51, 0xa7, + 0x7d, 0x89, 0x8d, 0x18, 0x4d, 0x1d, 0xc5, 0x33, 0x81, 0xa3, 0xb8, 0xb2, 0x04, 0x60, 0x34, 0xbd, + 0x82, 0xf1, 0x95, 0x5a, 0x52, 0xdf, 0x38, 0xa6, 0x5c, 0x05, 0x8b, 0x41, 0x6e, 0x9d, 0xf9, 0x53, + 0x7d, 0xa1, 0xf0, 0xce, 0x11, 0x47, 0x0d, 0x73, 0x18, 0xd1, 0x27, 0xbc, 0x5f, 0x68, 0xb3, 0x67, + 0x20, 0xb9, 0xc3, 0x11, 0xff, 0x97, 0x25, 0xc8, 0xd6, 0xbd, 0xde, 0x92, 0xe9, 0x38, 0xff, 0x64, + 0x38, 0x1d, 0xf7, 0xc8, 0x44, 0xe8, 0xf8, 0x5d, 0x30, 0xc3, 0x6a, 0x2c, 0x75, 0x95, 0x88, 0x55, + 0x71, 0xee, 0x87, 0x61, 0x34, 0xbc, 0x0f, 0x3b, 0x87, 0x23, 0xe2, 0x4f, 0x3c, 0x16, 0x60, 0x0d, + 0xed, 0x9c, 0x47, 0x4e, 0x77, 0xdb, 0xec, 0xa8, 0xff, 0x20, 0xc3, 0xd4, 0x32, 0x72, 0x6b, 0xae, + 0xe1, 0xee, 0x76, 0x7b, 0xb6, 0x3b, 0x2d, 0xbb, 0x64, 0x34, 0xb7, 0x11, 0xed, 0x8e, 0xfc, 0x57, + 0xf5, 0x5d, 0xb2, 0xa8, 0x3f, 0x51, 0x58, 0xce, 0x7c, 0x50, 0x46, 0x04, 0x26, 0x8f, 0x83, 0x6c, + 0xcb, 0x70, 0x0d, 0x8a, 0xc5, 0x15, 0x3d, 0x58, 0x84, 0x84, 0x74, 0x9c, 0x4d, 0xfd, 0x1d, 0x49, + 0xc4, 0xa1, 0x48, 0xa0, 0xfc, 0x64, 0x20, 0xbc, 0x2f, 0x33, 0x04, 0x0a, 0xc7, 0x60, 0xb6, 0x52, + 0xad, 0x37, 0x56, 0xab, 0xcb, 0xcb, 0x9a, 0x97, 0x5a, 0x90, 0x95, 0x93, 0xa0, 0xac, 0x17, 0xef, + 0x5b, 0xd3, 0x2a, 0xf5, 0x46, 0xa5, 0xba, 0xa8, 0xd1, 0x3f, 0xb3, 0xca, 0x51, 0x98, 0x2e, 0x15, + 0x4b, 0x2b, 0x7e, 0x42, 0x4e, 0x39, 0x05, 0xc7, 0xd7, 0xb4, 0xb5, 0x05, 0x4d, 0xaf, 0xad, 0x94, + 0xd7, 0x1b, 0x1e, 0x99, 0xa5, 0xea, 0x46, 0x65, 0xb1, 0x90, 0x57, 0x54, 0x38, 0xc9, 0x7c, 0x39, + 0xa7, 0x57, 0x2b, 0xcb, 0x8d, 0x5a, 0xbd, 0x58, 0xd7, 0x0a, 0x13, 0xca, 0x65, 0x70, 0xb4, 0x54, + 0xac, 0xe0, 0xec, 0xa5, 0x6a, 0xa5, 0xa2, 0x95, 0xea, 0x85, 0x49, 0xf5, 0x07, 0x59, 0x98, 0x2e, + 0x77, 0x2b, 0xc6, 0x0e, 0x3a, 0x6b, 0xb4, 0xcd, 0x96, 0xfa, 0x02, 0x66, 0xe6, 0x71, 0x1d, 0xcc, + 0x3a, 0xe4, 0x11, 0xb5, 0xea, 0x26, 0x22, 0x68, 0xce, 0xea, 0x7c, 0xa2, 0x37, 0x27, 0xb7, 0x30, + 0x01, 0x7f, 0x4e, 0x4e, 0xde, 0x94, 0x05, 0x00, 0xf2, 0x54, 0x0f, 0x2f, 0x77, 0x3d, 0xd3, 0xdb, + 0x9a, 0x8c, 0x1d, 0xd4, 0x45, 0xce, 0x9e, 0xd9, 0x44, 0x7e, 0x4e, 0x9d, 0xf9, 0x4b, 0xfd, 0x8a, + 0x2c, 0xba, 0xbf, 0xc8, 0x80, 0xca, 0x54, 0x27, 0xa2, 0x37, 0xfc, 0x05, 0x59, 0x64, 0x77, 0x50, + 0x88, 0x64, 0x32, 0x4d, 0x79, 0xb1, 0x34, 0xdc, 0xb2, 0x6d, 0xbd, 0x5a, 0x6d, 0xd4, 0x56, 0xaa, + 0x7a, 0xbd, 0x20, 0x2b, 0x33, 0x30, 0xe9, 0xbd, 0xae, 0x56, 0x2b, 0xcb, 0x85, 0xac, 0x72, 0x02, + 0x8e, 0xad, 0x14, 0x6b, 0x8d, 0x72, 0xe5, 0x6c, 0x71, 0xb5, 0xbc, 0xd8, 0x28, 0xad, 0x14, 0xf5, + 0x5a, 0x21, 0xa7, 0x5c, 0x01, 0x27, 0xea, 0x65, 0x4d, 0x6f, 0x2c, 0x69, 0xc5, 0xfa, 0x86, 0xae, + 0xd5, 0x1a, 0x95, 0x6a, 0xa3, 0x52, 0x5c, 0xd3, 0x0a, 0x79, 0xaf, 0xf9, 0xe3, 0x4f, 0xa1, 0xda, + 0x4c, 0xec, 0x57, 0xc6, 0xc9, 0x08, 0x65, 0x9c, 0xea, 0x55, 0x46, 0x60, 0xd5, 0x4a, 0xd7, 0x6a, + 0x9a, 0x7e, 0x56, 0x2b, 0x4c, 0xf7, 0xd3, 0xb5, 0x19, 0xe5, 0x38, 0x14, 0x3c, 0x1e, 0x1a, 0xe5, + 0x9a, 0x9f, 0x73, 0xb1, 0x30, 0xab, 0x7e, 0x3c, 0x0f, 0x27, 0x75, 0xb4, 0x65, 0x76, 0x5d, 0xe4, + 0xac, 0x1b, 0x97, 0x76, 0x90, 0xe5, 0xfa, 0x9d, 0xfc, 0xff, 0x4c, 0xac, 0x8c, 0x6b, 0x30, 0xdb, + 0x21, 0x34, 0xd6, 0x90, 0xbb, 0x6d, 0xb7, 0xe8, 0x28, 0xfc, 0x98, 0xc8, 0x9e, 0x63, 0x7e, 0x9d, + 0xcd, 0xae, 0xf3, 0x7f, 0x33, 0xba, 0x2d, 0xc7, 0xe8, 0x76, 0x76, 0x18, 0xdd, 0x56, 0xae, 0x82, + 0xa9, 0xdd, 0x2e, 0x72, 0xb4, 0x1d, 0xc3, 0x6c, 0xfb, 0x97, 0x73, 0x06, 0x09, 0xea, 0xdb, 0xb3, + 0xa2, 0x27, 0x56, 0x98, 0xba, 0xf4, 0x17, 0x63, 0x44, 0xdf, 0x7a, 0x1a, 0x80, 0x56, 0x76, 0xc3, + 0x69, 0x53, 0x65, 0x65, 0x52, 0x3c, 0xfe, 0xce, 0x9b, 0xed, 0xb6, 0x69, 0x6d, 0x05, 0xfb, 0xfe, + 0x61, 0x82, 0xfa, 0x62, 0x59, 0xe4, 0x04, 0x4b, 0x52, 0xde, 0x92, 0xb5, 0xa6, 0x17, 0x4a, 0x63, + 0xee, 0x77, 0xf7, 0x37, 0x9d, 0xbc, 0x52, 0x80, 0x19, 0x9c, 0x46, 0x5b, 0x60, 0x61, 0xc2, 0xeb, + 0x83, 0x7d, 0x72, 0x6b, 0x5a, 0x7d, 0xa5, 0xba, 0x18, 0x7c, 0x9b, 0xf4, 0x48, 0x7a, 0xcc, 0x14, + 0x2b, 0xf7, 0xe1, 0xd6, 0x38, 0xa5, 0x3c, 0x0a, 0xae, 0x60, 0x3a, 0xec, 0xe2, 0xaa, 0xae, 0x15, + 0x17, 0xef, 0x6b, 0x68, 0x4f, 0x2f, 0xd7, 0xea, 0x35, 0xbe, 0x71, 0xf9, 0xed, 0x68, 0xda, 0xe3, + 0x57, 0x5b, 0x2b, 0x96, 0x57, 0x69, 0xff, 0xbe, 0x54, 0xd5, 0xd7, 0x8a, 0xf5, 0xc2, 0x8c, 0xfa, + 0x0a, 0x19, 0x0a, 0xcb, 0xc8, 0x5d, 0xb7, 0x1d, 0xd7, 0x68, 0xaf, 0x9a, 0xd6, 0x85, 0x0d, 0xa7, + 0xcd, 0x4d, 0x36, 0x85, 0xc3, 0x74, 0xf0, 0x43, 0x24, 0x47, 0x30, 0x7a, 0x47, 0xbc, 0x83, 0xb3, + 0x85, 0xca, 0x14, 0x26, 0xa8, 0xcf, 0x92, 0x44, 0x96, 0xbb, 0xc5, 0x4b, 0x4d, 0xa6, 0x27, 0xcf, + 0x1e, 0xf7, 0xf8, 0xdc, 0x07, 0xb5, 0xbc, 0xfa, 0xbc, 0x2c, 0x4c, 0x2e, 0x99, 0x96, 0xd1, 0x36, + 0x9f, 0xc9, 0xc5, 0x2f, 0x0d, 0xfb, 0x98, 0x4c, 0x4c, 0x1f, 0x23, 0x0d, 0x35, 0x7e, 0xfe, 0xaa, + 0x2c, 0xba, 0xbc, 0xc0, 0xc8, 0xde, 0x67, 0x32, 0x62, 0xf0, 0xfc, 0x90, 0x24, 0xb2, 0xbc, 0x30, + 0x98, 0x5e, 0x32, 0x0c, 0x3f, 0xf9, 0xc3, 0x61, 0x63, 0xf5, 0xb4, 0xef, 0xc9, 0x7e, 0xaa, 0x30, + 0xa5, 0xfe, 0x85, 0x0c, 0xea, 0x32, 0x72, 0xcf, 0x22, 0x27, 0x98, 0x0a, 0xe0, 0x5e, 0x9f, 0xda, + 0xdb, 0x4c, 0x93, 0x7d, 0x33, 0x0b, 0xe0, 0x39, 0x1e, 0xc0, 0x62, 0x4c, 0xe3, 0x89, 0x20, 0x1d, + 0xd1, 0x78, 0xcb, 0x90, 0xef, 0xe2, 0xef, 0x54, 0xcd, 0x1e, 0x1f, 0x3d, 0x5c, 0x62, 0x62, 0x2c, + 0x75, 0x42, 0x58, 0xa7, 0x04, 0xd4, 0xef, 0x06, 0x93, 0xa0, 0x9f, 0xe2, 0xb4, 0x63, 0xe9, 0xc0, + 0xcc, 0x26, 0xd3, 0x17, 0x27, 0x5d, 0x75, 0xe9, 0x67, 0xdf, 0xa8, 0x1f, 0xca, 0xc1, 0xf1, 0x7e, + 0xd5, 0x51, 0x7f, 0x37, 0xc3, 0xed, 0xb0, 0x23, 0x3c, 0xe4, 0x67, 0xe8, 0x06, 0xa2, 0xf7, 0xa2, + 0x3c, 0x11, 0x4e, 0x04, 0xcb, 0x70, 0x75, 0xbb, 0x82, 0x2e, 0x76, 0xdb, 0xc8, 0x75, 0x91, 0x83, + 0xab, 0x36, 0xa9, 0xf7, 0xff, 0xa8, 0x3c, 0x19, 0x2e, 0x37, 0xad, 0xae, 0xd9, 0x42, 0x4e, 0xdd, + 0xec, 0x74, 0x8b, 0x56, 0xab, 0xbe, 0xeb, 0xda, 0x8e, 0x69, 0xd0, 0xab, 0x24, 0x27, 0xf5, 0xa8, + 0xcf, 0xca, 0x8d, 0x50, 0x30, 0xbb, 0x55, 0xeb, 0xbc, 0x6d, 0x38, 0x2d, 0xd3, 0xda, 0x5a, 0x35, + 0xbb, 0x2e, 0xf5, 0x00, 0xde, 0x97, 0xae, 0xfe, 0xa3, 0x2c, 0x7a, 0x98, 0x6e, 0x00, 0xac, 0x11, + 0x1d, 0xca, 0xf3, 0x65, 0x91, 0xe3, 0x71, 0xc9, 0x68, 0x27, 0x53, 0x96, 0xe7, 0x8e, 0xdb, 0x90, + 0xe8, 0x3f, 0x82, 0xe3, 0xae, 0x85, 0xa4, 0xfb, 0x86, 0xc0, 0x59, 0x4d, 0x2f, 0x2f, 0x95, 0x35, + 0xcf, 0xac, 0x38, 0x01, 0xc7, 0xc2, 0x6f, 0x8b, 0xf7, 0x35, 0x6a, 0x5a, 0xa5, 0x5e, 0x98, 0xf4, + 0xfa, 0x29, 0x92, 0xbc, 0x54, 0x2c, 0xaf, 0x6a, 0x8b, 0x8d, 0x7a, 0xd5, 0xfb, 0xb2, 0x38, 0x9c, + 0x69, 0xa1, 0x3e, 0x98, 0x85, 0xa3, 0x58, 0xb6, 0x97, 0xb0, 0x54, 0x3d, 0xa1, 0xf4, 0xf8, 0xda, + 0x06, 0x00, 0x4d, 0x11, 0xf1, 0xaa, 0x9f, 0x11, 0xbe, 0x29, 0x93, 0x81, 0xb0, 0xa7, 0x8c, 0x08, + 0xcd, 0xf8, 0x8e, 0x24, 0x12, 0xa1, 0x42, 0x98, 0x6c, 0x32, 0xa5, 0xf8, 0xb7, 0x71, 0x8f, 0x38, + 0xd1, 0xe0, 0x63, 0x2b, 0xb3, 0x84, 0x7f, 0x7e, 0xfa, 0x7a, 0x59, 0xc7, 0xea, 0x30, 0x07, 0x80, + 0x53, 0xb0, 0x06, 0x11, 0x3d, 0xe8, 0x3b, 0x5e, 0x45, 0xe9, 0x41, 0xb1, 0x54, 0x2f, 0x9f, 0xd5, + 0xa2, 0xf4, 0xe0, 0xd3, 0x32, 0x4c, 0x2e, 0x23, 0xd7, 0x9b, 0x53, 0x75, 0xd5, 0xa7, 0x08, 0xac, + 0xff, 0x78, 0x66, 0x4c, 0xdb, 0x6e, 0x1a, 0xed, 0x60, 0x19, 0x80, 0xbc, 0xa9, 0xcf, 0x19, 0xc6, + 0x04, 0xf1, 0x8b, 0x8e, 0x18, 0xaf, 0x7e, 0x12, 0x72, 0xae, 0xf7, 0x99, 0x2e, 0x43, 0xff, 0x58, + 0xe4, 0x70, 0xe5, 0x11, 0x59, 0x34, 0x5c, 0x43, 0x27, 0xf9, 0x99, 0xd1, 0x49, 0xd0, 0x76, 0x89, + 0x60, 0xe4, 0x87, 0xd1, 0xfe, 0xfc, 0x7b, 0x19, 0x4e, 0x90, 0xf6, 0x51, 0xec, 0x74, 0x6a, 0xae, + 0xed, 0x20, 0x1d, 0x35, 0x91, 0xd9, 0x71, 0x7b, 0xd6, 0xf7, 0x1c, 0x92, 0xea, 0x6f, 0x36, 0xd3, + 0x57, 0xf5, 0x0d, 0xb2, 0x68, 0x0c, 0xe6, 0x7d, 0xed, 0xb1, 0xa7, 0xbc, 0x88, 0xc6, 0xfe, 0x31, + 0x49, 0x24, 0xaa, 0x72, 0x42, 0xe2, 0xc9, 0x80, 0xfa, 0xf0, 0x21, 0x00, 0xe5, 0xaf, 0xdc, 0xe8, + 0x5a, 0x49, 0x2b, 0xaf, 0x7b, 0x83, 0xc0, 0xd5, 0x70, 0xe5, 0xfa, 0x86, 0x5e, 0x5a, 0x29, 0xd6, + 0xb4, 0x86, 0xae, 0x2d, 0x97, 0x6b, 0x75, 0xea, 0x94, 0x45, 0xfe, 0x9a, 0x50, 0xae, 0x82, 0x53, + 0xb5, 0x8d, 0x85, 0x5a, 0x49, 0x2f, 0xaf, 0xe3, 0x74, 0x5d, 0xab, 0x68, 0xe7, 0xe8, 0xd7, 0x49, + 0xf5, 0x03, 0x05, 0x98, 0xf6, 0x26, 0x00, 0x35, 0x32, 0x2f, 0x50, 0xbf, 0x99, 0x85, 0x69, 0x1d, + 0x75, 0xed, 0xf6, 0x1e, 0x9e, 0x23, 0x8c, 0x6b, 0xea, 0xf1, 0x6d, 0x59, 0xf4, 0xfc, 0x36, 0xc3, + 0xec, 0x3c, 0xc3, 0x68, 0xf4, 0x44, 0xd3, 0xd8, 0x33, 0xcc, 0xb6, 0x71, 0x9e, 0x76, 0x35, 0x93, + 0x7a, 0x98, 0xa0, 0xcc, 0x83, 0x62, 0x5f, 0xb4, 0x90, 0x53, 0x6b, 0x5e, 0xd4, 0xdc, 0xed, 0x62, + 0xab, 0xe5, 0xa0, 0x6e, 0x97, 0xae, 0x5e, 0xf4, 0xf9, 0xa2, 0xdc, 0x00, 0x47, 0x71, 0x2a, 0x93, + 0x99, 0x38, 0xc8, 0xf4, 0x26, 0x07, 0x39, 0x8b, 0xd6, 0x25, 0x3f, 0x67, 0x8e, 0xc9, 0x19, 0x26, + 0xb3, 0xc7, 0x25, 0xf2, 0xfc, 0x29, 0x9d, 0x6b, 0x60, 0xda, 0x32, 0x76, 0x90, 0xf6, 0x40, 0xc7, + 0x74, 0x50, 0x17, 0x3b, 0xc6, 0xc8, 0x3a, 0x9b, 0xa4, 0x7e, 0x48, 0xe8, 0xbc, 0xb9, 0x98, 0xc4, + 0x92, 0xe9, 0xfe, 0xf2, 0x10, 0xaa, 0xdf, 0xa7, 0x9f, 0x91, 0xd5, 0x0f, 0xc8, 0x30, 0x43, 0x99, + 0x2a, 0x5a, 0x97, 0xca, 0x2d, 0xf5, 0x6a, 0xce, 0xf8, 0x35, 0xbc, 0x34, 0xdf, 0xf8, 0xc5, 0x2f, + 0xea, 0x2f, 0xca, 0xa2, 0xee, 0xce, 0x7d, 0x2a, 0x8e, 0xcb, 0x88, 0x76, 0x1c, 0xdd, 0xb4, 0x77, + 0xa9, 0xa3, 0xea, 0xa4, 0x4e, 0x5e, 0xd2, 0x5c, 0xd4, 0x53, 0xff, 0x40, 0xc8, 0x99, 0x5a, 0xb0, + 0x1a, 0x87, 0x04, 0xe0, 0x27, 0x64, 0x98, 0xa3, 0x5c, 0xd5, 0xe8, 0x39, 0x1f, 0xa1, 0x03, 0x6f, + 0xbf, 0x2c, 0x6c, 0x08, 0xf6, 0xa9, 0x3f, 0x2d, 0xe9, 0x11, 0x03, 0xe4, 0x47, 0x84, 0x82, 0xa3, + 0x09, 0x57, 0xe4, 0x90, 0xa0, 0x7c, 0x47, 0x16, 0xa6, 0x37, 0xba, 0xc8, 0xa1, 0x7e, 0xfb, 0xea, + 0x43, 0x59, 0x90, 0x97, 0x11, 0xb7, 0x91, 0xfa, 0x22, 0x61, 0x0f, 0x5f, 0xb6, 0xb2, 0x0c, 0x51, + 0xcf, 0x46, 0x8a, 0x80, 0xed, 0x7a, 0x98, 0x23, 0x22, 0x2d, 0xba, 0xae, 0x67, 0x24, 0xfa, 0xde, + 0xb4, 0x3d, 0xa9, 0xa3, 0xd8, 0x2a, 0xc2, 0x65, 0x79, 0x59, 0x4a, 0x1e, 0x4f, 0xab, 0x68, 0x93, + 0xcc, 0x67, 0xb3, 0x7a, 0x4f, 0xaa, 0x72, 0x0b, 0x5c, 0x66, 0x77, 0x10, 0x39, 0xbf, 0xc2, 0x64, + 0xce, 0xe1, 0xcc, 0xfd, 0x3e, 0xa9, 0xdf, 0x14, 0xf2, 0xd5, 0x15, 0x97, 0x4e, 0x32, 0x5d, 0xe8, + 0x8c, 0xc6, 0x24, 0x39, 0x0e, 0x05, 0x2f, 0x07, 0xde, 0x7f, 0xd1, 0xb5, 0x5a, 0x75, 0xf5, 0xac, + 0xd6, 0x7f, 0x19, 0x23, 0xa7, 0x3e, 0x57, 0x86, 0xa9, 0x05, 0xc7, 0x36, 0x5a, 0x4d, 0xa3, 0xeb, + 0xaa, 0xdf, 0x95, 0x60, 0x66, 0xdd, 0xb8, 0xd4, 0xb6, 0x8d, 0x16, 0xf6, 0xef, 0xef, 0xe9, 0x0b, + 0x3a, 0xe4, 0x93, 0xdf, 0x17, 0xd0, 0x57, 0xfe, 0x60, 0x60, 0x70, 0x74, 0x2f, 0x23, 0x72, 0xa1, + 0x66, 0xb0, 0xcd, 0x27, 0xf5, 0x0b, 0x56, 0xea, 0xf3, 0x35, 0xcf, 0xf2, 0x14, 0x61, 0x51, 0x7e, + 0x40, 0x2c, 0xfc, 0xa8, 0x08, 0xc9, 0xc3, 0xd9, 0x95, 0x7f, 0xde, 0x24, 0xe4, 0x17, 0x11, 0xb6, + 0xe2, 0xfe, 0xbb, 0x04, 0x13, 0x35, 0xe4, 0x62, 0x0b, 0xee, 0x36, 0xce, 0x53, 0xb8, 0x85, 0x33, + 0x84, 0x4e, 0xec, 0xfe, 0xbb, 0x37, 0x59, 0x67, 0xce, 0x5b, 0xe3, 0xe7, 0x04, 0x1e, 0x89, 0xa4, + 0xdc, 0x79, 0x5a, 0xe6, 0x81, 0x3c, 0x12, 0x63, 0x49, 0xa5, 0xef, 0x6b, 0xf5, 0x2e, 0x89, 0xba, + 0x56, 0x31, 0xbd, 0xde, 0x6b, 0x59, 0xfd, 0x8c, 0xf5, 0x36, 0xa3, 0xcc, 0xc7, 0x38, 0x47, 0x3d, + 0x01, 0x26, 0x88, 0xcc, 0xfd, 0xf9, 0x68, 0xaf, 0x9f, 0x02, 0x21, 0x81, 0xcf, 0x5e, 0xfb, 0x39, + 0x05, 0x5d, 0xd4, 0xa2, 0x0b, 0x1f, 0x4b, 0x0c, 0x82, 0x99, 0x0a, 0x72, 0x2f, 0xda, 0xce, 0x85, + 0x9a, 0x6b, 0xb8, 0x48, 0xfd, 0x37, 0x09, 0xe4, 0x1a, 0x72, 0xd9, 0xe8, 0x27, 0x15, 0x38, 0x46, + 0x2a, 0x44, 0x33, 0xe2, 0xfe, 0x9b, 0x54, 0xe4, 0x9a, 0xbe, 0x42, 0x60, 0xf2, 0xe9, 0xfb, 0x7f, + 0x55, 0x7f, 0xbd, 0x6f, 0xd0, 0x27, 0xa9, 0xcf, 0xa4, 0x81, 0x4a, 0x86, 0x65, 0xd0, 0x53, 0xb0, + 0x08, 0x3d, 0xfd, 0xa0, 0x90, 0x59, 0x2d, 0x46, 0xf3, 0x70, 0xba, 0x82, 0x8f, 0x5c, 0x01, 0xd9, + 0xd2, 0xb6, 0xe1, 0xaa, 0xef, 0x94, 0x01, 0x8a, 0xad, 0xd6, 0x1a, 0xf1, 0x01, 0x67, 0x1d, 0xd2, + 0xce, 0xc0, 0x4c, 0x73, 0xdb, 0x08, 0xef, 0x36, 0x21, 0xfd, 0x01, 0x97, 0xa6, 0x3c, 0x31, 0x74, + 0x26, 0x27, 0x52, 0x55, 0x7b, 0x60, 0xf2, 0xca, 0xa0, 0xb4, 0x03, 0x47, 0x73, 0x3e, 0x14, 0x66, + 0xec, 0x11, 0x3a, 0xef, 0xf7, 0xf9, 0x90, 0xbd, 0xe8, 0x39, 0x1c, 0x25, 0x1d, 0x1c, 0xb0, 0x09, + 0x13, 0x12, 0x9e, 0xf4, 0x16, 0x0b, 0xe8, 0x11, 0xcf, 0xd7, 0x58, 0x42, 0xd7, 0x2a, 0x5a, 0xcb, + 0xf4, 0x45, 0x4b, 0x03, 0x66, 0xa9, 0x2f, 0xcc, 0x24, 0x83, 0x2f, 0x5e, 0x70, 0x77, 0xc3, 0x2c, + 0x6a, 0x99, 0x2e, 0xf2, 0x6b, 0x49, 0x05, 0x18, 0x07, 0x31, 0xff, 0x83, 0xfa, 0x6c, 0xe1, 0xa0, + 0x6b, 0x58, 0xa0, 0xfb, 0x6b, 0x14, 0xd1, 0xfe, 0xc4, 0xc2, 0xa8, 0x89, 0xd1, 0x4c, 0x1f, 0xac, + 0xe7, 0xc8, 0x70, 0xa2, 0x6e, 0x6f, 0x6d, 0xb5, 0x91, 0x2f, 0x26, 0x44, 0xbc, 0x33, 0x55, 0x63, + 0x94, 0x70, 0xe1, 0x9d, 0x20, 0xfb, 0x7e, 0x33, 0x38, 0x4a, 0xe6, 0xbd, 0xf0, 0x27, 0xa6, 0x62, + 0x67, 0x51, 0x58, 0x5c, 0x7d, 0xf9, 0x8c, 0x40, 0x41, 0x2c, 0xe0, 0xb3, 0x30, 0xd9, 0xf4, 0x81, + 0xf8, 0x82, 0x04, 0xb3, 0xe4, 0xe6, 0x4a, 0x5f, 0x41, 0xef, 0x1d, 0x21, 0x00, 0xea, 0x77, 0x33, + 0xa2, 0x7e, 0xb6, 0x58, 0x26, 0x1c, 0x27, 0x11, 0x22, 0x16, 0x0b, 0xaa, 0x32, 0x90, 0x5c, 0xfa, + 0xa2, 0xfd, 0x53, 0x19, 0xa6, 0x97, 0x91, 0xdf, 0xd2, 0xba, 0x89, 0x7b, 0xa2, 0x33, 0x30, 0x83, + 0xaf, 0x6f, 0xab, 0xd2, 0x63, 0x92, 0x64, 0xd5, 0x8c, 0x4b, 0x53, 0xae, 0x83, 0xd9, 0xf3, 0x68, + 0xd3, 0x76, 0x50, 0x95, 0x3b, 0x4b, 0xc9, 0x27, 0x46, 0x84, 0xa7, 0xe3, 0xe2, 0xa0, 0x2d, 0xf0, + 0xd8, 0xdc, 0xb4, 0x5f, 0x98, 0x4c, 0x55, 0x22, 0xc6, 0x9c, 0x27, 0xc1, 0x24, 0x45, 0xde, 0x37, + 0xd3, 0xe2, 0xfa, 0xc5, 0x20, 0xaf, 0xfa, 0x9b, 0x01, 0xa2, 0x1a, 0x87, 0xe8, 0xe3, 0x93, 0x30, + 0x31, 0x96, 0xfb, 0xdd, 0x0b, 0x4c, 0xf9, 0x0b, 0x97, 0xca, 0xad, 0xae, 0xba, 0x96, 0x0c, 0xd3, + 0xd3, 0x00, 0x41, 0xe3, 0xf0, 0xc3, 0x5a, 0x30, 0x29, 0x7c, 0xe4, 0xfa, 0xd8, 0x83, 0x7a, 0xbd, + 0xe2, 0xc0, 0xec, 0x8c, 0x18, 0x18, 0xb1, 0x03, 0x7e, 0x22, 0x9c, 0xa4, 0x8f, 0xce, 0xa7, 0x64, + 0x38, 0x11, 0x9c, 0x3f, 0x5a, 0x35, 0xba, 0x61, 0xbb, 0x2b, 0x25, 0x83, 0x88, 0x3b, 0xf0, 0x11, + 0x34, 0x96, 0x6f, 0x25, 0x1b, 0x33, 0xfa, 0x72, 0x32, 0x5a, 0x74, 0x94, 0x9b, 0xe0, 0x98, 0xb5, + 0xbb, 0x13, 0x48, 0x1d, 0xb7, 0x78, 0xda, 0xc2, 0xf7, 0x7f, 0x48, 0x32, 0x32, 0x89, 0x30, 0x3f, + 0x96, 0x39, 0x25, 0x77, 0xa4, 0xeb, 0x71, 0x89, 0x60, 0x54, 0xff, 0x35, 0x93, 0xa8, 0x77, 0x1b, + 0x7c, 0xe6, 0x2b, 0x41, 0x2f, 0x75, 0x88, 0x07, 0xbe, 0xce, 0x4c, 0x40, 0x4e, 0xdb, 0xe9, 0xb8, + 0x97, 0xce, 0x3c, 0x1a, 0x66, 0x6b, 0xae, 0x83, 0x8c, 0x1d, 0x66, 0x67, 0xc0, 0xb5, 0x2f, 0x20, + 0xcb, 0xdf, 0x19, 0xc0, 0x2f, 0xb7, 0xdf, 0x06, 0x13, 0x96, 0xdd, 0x30, 0x76, 0xdd, 0x6d, 0xe5, + 0xea, 0x7d, 0x47, 0xea, 0x29, 0xf8, 0x55, 0x1a, 0xc3, 0xe8, 0x2b, 0x77, 0xe0, 0xb5, 0xe1, 0xbc, + 0x65, 0x17, 0x77, 0xdd, 0xed, 0x85, 0xab, 0x3e, 0xf1, 0x77, 0xa7, 0x33, 0x9f, 0xfe, 0xbb, 0xd3, + 0x99, 0x2f, 0xff, 0xdd, 0xe9, 0xcc, 0x2f, 0x7f, 0xf5, 0xf4, 0x91, 0x4f, 0x7f, 0xf5, 0xf4, 0x91, + 0x2f, 0x7c, 0xf5, 0xf4, 0x91, 0x9f, 0x92, 0x3a, 0xe7, 0xcf, 0xe7, 0x31, 0x95, 0x27, 0xfc, 0xff, + 0x01, 0x00, 0x00, 0xff, 0xff, 0xa7, 0x2e, 0x86, 0xc5, 0xa2, 0x01, 0x02, 0x00, } func (m *Rpc) Marshal() (dAtA []byte, err error) { diff --git a/pb/protos/commands.proto b/pb/protos/commands.proto index ae962ebcf..5559966a3 100644 --- a/pb/protos/commands.proto +++ b/pb/protos/commands.proto @@ -831,7 +831,7 @@ message Rpc { ACCOUNT_NOT_FOUND = 101; CANCELED = 102; - NOT_ENOUGH_STORAGE = 103; + NOT_ENOUGH_FREE_SPACE = 103; // TODO: [storage] Add specific error codes for migration problems } } diff --git a/space/spacecore/storage/migrator/migrator.go b/space/spacecore/storage/migrator/migrator.go index 8ac7fc4c5..368343d74 100644 --- a/space/spacecore/storage/migrator/migrator.go +++ b/space/spacecore/storage/migrator/migrator.go @@ -6,6 +6,7 @@ import ( "fmt" "os" "path/filepath" + "strings" anystore "github.com/anyproto/any-store" "github.com/anyproto/any-sync/app" @@ -21,6 +22,18 @@ import ( "github.com/anyproto/anytype-heart/util/freespace" ) +type NotEnoughFreeSpaceError struct { + Free uint64 + Required uint64 +} + +func (e NotEnoughFreeSpaceError) Error() string { + if e.Required == 0 { + return fmt.Sprintf("not enough free space: %d", e.Free) + } + return fmt.Sprintf("Not enough free space: %d, required: %d", e.Free, e.Required) +} + const CName = "client.storage.migration" type migrator struct { @@ -72,10 +85,27 @@ func (m *migrator) Run(ctx context.Context) (err error) { if err != nil { return fmt.Errorf("get free disk space: %w", err) } - if oldSize*15/10 > free { - return fmt.Errorf("not enough disk space") + requiredDiskSpace := oldSize * 15 / 10 + if requiredDiskSpace > free { + return NotEnoughFreeSpaceError{ + Free: free, + Required: requiredDiskSpace, + } } + err = m.run(ctx) + if err != nil { + if strings.Contains(err.Error(), "disk is full") { + return NotEnoughFreeSpaceError{ + Free: free, + } + } + return err + } + return nil +} + +func (m *migrator) run(ctx context.Context) (err error) { progress := process.NewProgress(&pb.ModelProcessMessageOfMigration{Migration: &pb.ModelProcessMigration{}}) progress.SetProgressMessage("Migrating spaces") err = m.process.Add(progress) From 88abd69dfe99b07810a807aaa22b22d05b9dfc7e Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Wed, 22 Jan 2025 12:18:45 +0100 Subject: [PATCH 205/279] GO-4146 Update any-sync --- go.mod | 24 ++++++++++---------- go.sum | 72 +++++++++++++++++++++++++++++----------------------------- 2 files changed, 48 insertions(+), 48 deletions(-) diff --git a/go.mod b/go.mod index 902c19fd7..1ff4611fb 100644 --- a/go.mod +++ b/go.mod @@ -7,8 +7,8 @@ require ( github.com/PuerkitoBio/goquery v1.10.0 github.com/VividCortex/ewma v1.2.0 github.com/adrium/goheif v0.0.0-20230113233934-ca402e77a786 - github.com/anyproto/any-store v0.1.3 - github.com/anyproto/any-sync v0.6.0-alpha.4.0.20250115234555-3a6c0c1cae63 + github.com/anyproto/any-store v0.1.4 + github.com/anyproto/any-sync v0.6.0-alpha.5.0.20250122101259-cc0878975c43 github.com/anyproto/go-chash v0.1.0 github.com/anyproto/go-naturaldate/v2 v2.0.2-0.20230524105841-9829cfd13438 github.com/anyproto/go-slip10 v1.0.0 @@ -98,11 +98,12 @@ require ( go.uber.org/mock v0.5.0 go.uber.org/multierr v1.11.0 go.uber.org/zap v1.27.0 - golang.org/x/exp v0.0.0-20241217172543-b2144cdd0a67 + golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 golang.org/x/image v0.23.0 golang.org/x/mobile v0.0.0-20241108191957-fa514ef75a0f - golang.org/x/net v0.33.0 + golang.org/x/net v0.34.0 golang.org/x/oauth2 v0.24.0 + golang.org/x/sys v0.29.0 golang.org/x/text v0.21.0 google.golang.org/grpc v1.69.2 gopkg.in/Graylog2/go-gelf.v2 v2.0.0-20180125164251-1832d8546a9f @@ -247,23 +248,22 @@ require ( go.opentelemetry.io/otel v1.32.0 // indirect go.opentelemetry.io/otel/metric v1.32.0 // indirect go.opentelemetry.io/otel/trace v1.32.0 // indirect - golang.org/x/crypto v0.31.0 // indirect + golang.org/x/crypto v0.32.0 // indirect golang.org/x/mod v0.22.0 // indirect golang.org/x/sync v0.10.0 // indirect - golang.org/x/sys v0.28.0 // indirect - golang.org/x/term v0.27.0 // indirect + golang.org/x/term v0.28.0 // indirect golang.org/x/time v0.8.0 // indirect - golang.org/x/tools v0.28.0 // indirect + golang.org/x/tools v0.29.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20241021214115-324edc3d5d38 // indirect google.golang.org/protobuf v1.36.0 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect lukechampine.com/blake3 v1.3.0 // indirect - modernc.org/libc v1.61.0 // indirect - modernc.org/mathutil v1.6.0 // indirect - modernc.org/memory v1.8.0 // indirect - modernc.org/sqlite v1.33.1 // indirect + modernc.org/libc v1.61.9 // indirect + modernc.org/mathutil v1.7.1 // indirect + modernc.org/memory v1.8.2 // indirect + modernc.org/sqlite v1.34.5 // indirect nhooyr.io/websocket v1.8.7 // indirect ) diff --git a/go.sum b/go.sum index f485c751b..33369d5dc 100644 --- a/go.sum +++ b/go.sum @@ -76,10 +76,10 @@ github.com/alexbrainman/goissue34681 v0.0.0-20191006012335-3fc7a47baff5/go.mod h github.com/andybalholm/cascadia v1.3.1/go.mod h1:R4bJ1UQfqADjvDa4P6HZHLh/3OxWWEqc0Sk8XGwHqvA= github.com/andybalholm/cascadia v1.3.2 h1:3Xi6Dw5lHF15JtdcmAHD3i1+T8plmv7BQ/nsViSLyss= github.com/andybalholm/cascadia v1.3.2/go.mod h1:7gtRlve5FxPPgIgX36uWBX58OdBsSS6lUvCFb+h7KvU= -github.com/anyproto/any-store v0.1.3 h1:onWLP8tuWiUvYOyV3DoRODscTxAiGEjwQPm+NMxeq3M= -github.com/anyproto/any-store v0.1.3/go.mod h1:6/0OUKgSMWF/vYGoGYzQOl2CII5OdiuXbQlGDXYcNYc= -github.com/anyproto/any-sync v0.6.0-alpha.4.0.20250115234555-3a6c0c1cae63 h1:tXTfEzI7DHexYatBkHICnfGSmSfVI+iH8YaMU6c5xvk= -github.com/anyproto/any-sync v0.6.0-alpha.4.0.20250115234555-3a6c0c1cae63/go.mod h1:91ismOJy65b0sODYdZ0jAjKQouppbz8ans/gn+ytL90= +github.com/anyproto/any-store v0.1.4 h1:rIxMA2XugPtdHl2S/XWnNFAMxdBysFMT9ORoJWdWQwM= +github.com/anyproto/any-store v0.1.4/go.mod h1:nbyRoJYOlvSWU1xDOrmgPP96UeoTf4eYZ9k+qqLK9k8= +github.com/anyproto/any-sync v0.6.0-alpha.5.0.20250122101259-cc0878975c43 h1:EB20eBqUFzAXG1c9n9D8Y+8k7QkKbxjKVarACM0nLRM= +github.com/anyproto/any-sync v0.6.0-alpha.5.0.20250122101259-cc0878975c43/go.mod h1:Y8IxYfNrHzIKStyErWKeRIPehvqP2vT0B2T+FAhu5Zc= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580 h1:Ba80IlCCxkZ9H1GF+7vFu/TSpPvbpDCxXJ5ogc4euYc= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580/go.mod h1:T/uWAYxrXdaXw64ihI++9RMbKTCpKd/yE9+saARew7k= github.com/anyproto/go-chash v0.1.0 h1:I9meTPjXFRfXZHRJzjOHC/XF7Q5vzysKkiT/grsogXY= @@ -1105,8 +1105,8 @@ golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= -golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= -golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= +golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1121,8 +1121,8 @@ golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= -golang.org/x/exp v0.0.0-20241217172543-b2144cdd0a67 h1:1UoZQm6f0P/ZO0w1Ri+f+ifG/gXhegadRdwBIXEFWDo= -golang.org/x/exp v0.0.0-20241217172543-b2144cdd0a67/go.mod h1:qj5a5QZpwLU2NLQudwIN5koi3beDhSAlJwa67PuM98c= +golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 h1:yqrTHse8TCMW1M1ZCP+VAR/l0kKxwaAIqN/il7x4voA= +golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= @@ -1212,8 +1212,8 @@ golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= -golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I= -golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= +golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= +golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1316,16 +1316,16 @@ golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= -golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= +golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU= -golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= -golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= +golang.org/x/term v0.28.0 h1:/Ts8HFuMR2E6IP/jlo7QVLZHggjKQbhu/7H0LJFr3Gg= +golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1405,8 +1405,8 @@ golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.28.0 h1:WuB6qZ4RPCQo5aP3WdKZS7i595EdWqWR8vqJTlwTVK8= -golang.org/x/tools v0.28.0/go.mod h1:dcIOrVd3mfQKTgrDVQHqCPMWy6lnhfhtX3hLXYVLfRw= +golang.org/x/tools v0.29.0 h1:Xx0h3TtM9rzQpQuR4dKLrdglAmCEN5Oi+P74JdhdzXE= +golang.org/x/tools v0.29.0/go.mod h1:KMQVMRsVxU6nHCFXrBPhDB8XncLNLM0lIy/F14RP588= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1566,28 +1566,28 @@ honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9 honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= lukechampine.com/blake3 v1.3.0 h1:sJ3XhFINmHSrYCgl958hscfIa3bw8x4DqMP3u1YvoYE= lukechampine.com/blake3 v1.3.0/go.mod h1:0OFRp7fBtAylGVCO40o87sbupkyIGgbpv1+M1k1LM6k= -modernc.org/cc/v4 v4.21.4 h1:3Be/Rdo1fpr8GrQ7IVw9OHtplU4gWbb+wNgeoBMmGLQ= -modernc.org/cc/v4 v4.21.4/go.mod h1:HM7VJTZbUCR3rV8EYBi9wxnJ0ZBRiGE5OeGXNA0IsLQ= -modernc.org/ccgo/v4 v4.21.0 h1:kKPI3dF7RIag8YcToh5ZwDcVMIv6VGa0ED5cvh0LMW4= -modernc.org/ccgo/v4 v4.21.0/go.mod h1:h6kt6H/A2+ew/3MW/p6KEoQmrq/i3pr0J/SiwiaF/g0= +modernc.org/cc/v4 v4.24.4 h1:TFkx1s6dCkQpd6dKurBNmpo+G8Zl4Sq/ztJ+2+DEsh0= +modernc.org/cc/v4 v4.24.4/go.mod h1:uVtb5OGqUKpoLWhqwNQo/8LwvoiEBLvZXIQ/SmO6mL0= +modernc.org/ccgo/v4 v4.23.13 h1:PFiaemQwE/jdwi8XEHyEV+qYWoIuikLP3T4rvDeJb00= +modernc.org/ccgo/v4 v4.23.13/go.mod h1:vdN4h2WR5aEoNondUx26K7G8X+nuBscYnAEWSRmN2/0= modernc.org/fileutil v1.3.0 h1:gQ5SIzK3H9kdfai/5x41oQiKValumqNTDXMvKo62HvE= modernc.org/fileutil v1.3.0/go.mod h1:XatxS8fZi3pS8/hKG2GH/ArUogfxjpEKs3Ku3aK4JyQ= -modernc.org/gc/v2 v2.5.0 h1:bJ9ChznK1L1mUtAQtxi0wi5AtAs5jQuw4PrPHO5pb6M= -modernc.org/gc/v2 v2.5.0/go.mod h1:wzN5dK1AzVGoH6XOzc3YZ+ey/jPgYHLuVckd62P0GYU= -modernc.org/libc v1.61.0 h1:eGFcvWpqlnoGwzZeZe3PWJkkKbM/3SUGyk1DVZQ0TpE= -modernc.org/libc v1.61.0/go.mod h1:DvxVX89wtGTu+r72MLGhygpfi3aUGgZRdAYGCAVVud0= -modernc.org/mathutil v1.6.0 h1:fRe9+AmYlaej+64JsEEhoWuAYBkOtQiMEU7n/XgfYi4= -modernc.org/mathutil v1.6.0/go.mod h1:Ui5Q9q1TR2gFm0AQRqQUaBWFLAhQpCwNcuhBOSedWPo= -modernc.org/memory v1.8.0 h1:IqGTL6eFMaDZZhEWwcREgeMXYwmW83LYW8cROZYkg+E= -modernc.org/memory v1.8.0/go.mod h1:XPZ936zp5OMKGWPqbD3JShgd/ZoQ7899TUuQqxY+peU= -modernc.org/opt v0.1.3 h1:3XOZf2yznlhC+ibLltsDGzABUGVx8J6pnFMS3E4dcq4= -modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= -modernc.org/sortutil v1.2.0 h1:jQiD3PfS2REGJNzNCMMaLSp/wdMNieTbKX920Cqdgqc= -modernc.org/sortutil v1.2.0/go.mod h1:TKU2s7kJMf1AE84OoiGppNHJwvB753OYfNl2WRb++Ss= -modernc.org/sqlite v1.33.1 h1:trb6Z3YYoeM9eDL1O8do81kP+0ejv+YzgyFo+Gwy0nM= -modernc.org/sqlite v1.33.1/go.mod h1:pXV2xHxhzXZsgT/RtTFAPY6JJDEvOTcTdwADQCCWD4k= -modernc.org/strutil v1.2.0 h1:agBi9dp1I+eOnxXeiZawM8F4LawKv4NzGWSaLfyeNZA= -modernc.org/strutil v1.2.0/go.mod h1:/mdcBmfOibveCTBxUl5B5l6W+TTH1FXPLHZE6bTosX0= +modernc.org/gc/v2 v2.6.1 h1:+Qf6xdG8l7B27TQ8D8lw/iFMUj1RXRBOuMUWziJOsk8= +modernc.org/gc/v2 v2.6.1/go.mod h1:YgIahr1ypgfe7chRuJi2gD7DBQiKSLMPgBQe9oIiito= +modernc.org/libc v1.61.9 h1:PLSBXVkifXGELtJ5BOnBUyAHr7lsatNwFU/RRo4kfJM= +modernc.org/libc v1.61.9/go.mod h1:61xrnzk/aR8gr5bR7Uj/lLFLuXu2/zMpIjcry63Eumk= +modernc.org/mathutil v1.7.1 h1:GCZVGXdaN8gTqB1Mf/usp1Y/hSqgI2vAGGP4jZMCxOU= +modernc.org/mathutil v1.7.1/go.mod h1:4p5IwJITfppl0G4sUEDtCr4DthTaT47/N3aT6MhfgJg= +modernc.org/memory v1.8.2 h1:cL9L4bcoAObu4NkxOlKWBWtNHIsnnACGF/TbqQ6sbcI= +modernc.org/memory v1.8.2/go.mod h1:ZbjSvMO5NQ1A2i3bWeDiVMxIorXwdClKE/0SZ+BMotU= +modernc.org/opt v0.1.4 h1:2kNGMRiUjrp4LcaPuLY2PzUfqM/w9N23quVwhKt5Qm8= +modernc.org/opt v0.1.4/go.mod h1:03fq9lsNfvkYSfxrfUhZCWPk1lm4cq4N+Bh//bEtgns= +modernc.org/sortutil v1.2.1 h1:+xyoGf15mM3NMlPDnFqrteY07klSFxLElE2PVuWIJ7w= +modernc.org/sortutil v1.2.1/go.mod h1:7ZI3a3REbai7gzCLcotuw9AC4VZVpYMjDzETGsSMqJE= +modernc.org/sqlite v1.34.5 h1:Bb6SR13/fjp15jt70CL4f18JIN7p7dnMExd+UFnF15g= +modernc.org/sqlite v1.34.5/go.mod h1:YLuNmX9NKs8wRNK2ko1LW1NGYcc9FkBO69JOt1AR9JE= +modernc.org/strutil v1.2.1 h1:UneZBkQA+DX2Rp35KcM69cSsNES9ly8mQWD71HKlOA0= +modernc.org/strutil v1.2.1/go.mod h1:EHkiggD70koQxjVdSBM3JKM7k6L0FbGE5eymy9i3B9A= modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y= modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= From 1d3ee527cfa7303e7bf4db8124ecb319f52af84a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 22 Jan 2025 13:45:08 +0100 Subject: [PATCH 206/279] Bump github.com/anyproto/any-store from 0.1.3 to 0.1.4 (#2030) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 10 +++++----- go.sum | 44 ++++++++++++++++++++++---------------------- 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/go.mod b/go.mod index 8b8d069ca..061ce6110 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ require ( github.com/PuerkitoBio/goquery v1.10.1 github.com/VividCortex/ewma v1.2.0 github.com/adrium/goheif v0.0.0-20230113233934-ca402e77a786 - github.com/anyproto/any-store v0.1.3 + github.com/anyproto/any-store v0.1.4 github.com/anyproto/any-sync v0.5.25 github.com/anyproto/anytype-publish-server/publishclient v0.0.0-20241223184559-a5cacfe0950a github.com/anyproto/go-chash v0.1.0 @@ -263,10 +263,10 @@ require ( gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect lukechampine.com/blake3 v1.3.0 // indirect - modernc.org/libc v1.61.0 // indirect - modernc.org/mathutil v1.6.0 // indirect - modernc.org/memory v1.8.0 // indirect - modernc.org/sqlite v1.33.1 // indirect + modernc.org/libc v1.61.9 // indirect + modernc.org/mathutil v1.7.1 // indirect + modernc.org/memory v1.8.2 // indirect + modernc.org/sqlite v1.34.5 // indirect nhooyr.io/websocket v1.8.7 // indirect ) diff --git a/go.sum b/go.sum index 888393e93..d8a1d787c 100644 --- a/go.sum +++ b/go.sum @@ -76,8 +76,8 @@ github.com/alexbrainman/goissue34681 v0.0.0-20191006012335-3fc7a47baff5/go.mod h github.com/andybalholm/cascadia v1.3.1/go.mod h1:R4bJ1UQfqADjvDa4P6HZHLh/3OxWWEqc0Sk8XGwHqvA= github.com/andybalholm/cascadia v1.3.3 h1:AG2YHrzJIm4BZ19iwJ/DAua6Btl3IwJX+VI4kktS1LM= github.com/andybalholm/cascadia v1.3.3/go.mod h1:xNd9bqTn98Ln4DwST8/nG+H0yuB8Hmgu1YHNnWw0GeA= -github.com/anyproto/any-store v0.1.3 h1:onWLP8tuWiUvYOyV3DoRODscTxAiGEjwQPm+NMxeq3M= -github.com/anyproto/any-store v0.1.3/go.mod h1:6/0OUKgSMWF/vYGoGYzQOl2CII5OdiuXbQlGDXYcNYc= +github.com/anyproto/any-store v0.1.4 h1:rIxMA2XugPtdHl2S/XWnNFAMxdBysFMT9ORoJWdWQwM= +github.com/anyproto/any-store v0.1.4/go.mod h1:nbyRoJYOlvSWU1xDOrmgPP96UeoTf4eYZ9k+qqLK9k8= github.com/anyproto/any-sync v0.5.25 h1:v59eQ+C7YOKC18G1PVql17fuc42Mvgb7c7Ju855tc0Q= github.com/anyproto/any-sync v0.5.25/go.mod h1:NKQZqnU7NzOOjDQc/rKmiRmRDCrARdlEnVLYwWqTcfM= github.com/anyproto/anytype-publish-server/publishclient v0.0.0-20241223184559-a5cacfe0950a h1:kSNyLHsZ40JxlRAglr85YXH2ik2LH3AH5Hd3JL42KGo= @@ -1624,28 +1624,28 @@ honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9 honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= lukechampine.com/blake3 v1.3.0 h1:sJ3XhFINmHSrYCgl958hscfIa3bw8x4DqMP3u1YvoYE= lukechampine.com/blake3 v1.3.0/go.mod h1:0OFRp7fBtAylGVCO40o87sbupkyIGgbpv1+M1k1LM6k= -modernc.org/cc/v4 v4.21.4 h1:3Be/Rdo1fpr8GrQ7IVw9OHtplU4gWbb+wNgeoBMmGLQ= -modernc.org/cc/v4 v4.21.4/go.mod h1:HM7VJTZbUCR3rV8EYBi9wxnJ0ZBRiGE5OeGXNA0IsLQ= -modernc.org/ccgo/v4 v4.21.0 h1:kKPI3dF7RIag8YcToh5ZwDcVMIv6VGa0ED5cvh0LMW4= -modernc.org/ccgo/v4 v4.21.0/go.mod h1:h6kt6H/A2+ew/3MW/p6KEoQmrq/i3pr0J/SiwiaF/g0= +modernc.org/cc/v4 v4.24.4 h1:TFkx1s6dCkQpd6dKurBNmpo+G8Zl4Sq/ztJ+2+DEsh0= +modernc.org/cc/v4 v4.24.4/go.mod h1:uVtb5OGqUKpoLWhqwNQo/8LwvoiEBLvZXIQ/SmO6mL0= +modernc.org/ccgo/v4 v4.23.13 h1:PFiaemQwE/jdwi8XEHyEV+qYWoIuikLP3T4rvDeJb00= +modernc.org/ccgo/v4 v4.23.13/go.mod h1:vdN4h2WR5aEoNondUx26K7G8X+nuBscYnAEWSRmN2/0= modernc.org/fileutil v1.3.0 h1:gQ5SIzK3H9kdfai/5x41oQiKValumqNTDXMvKo62HvE= modernc.org/fileutil v1.3.0/go.mod h1:XatxS8fZi3pS8/hKG2GH/ArUogfxjpEKs3Ku3aK4JyQ= -modernc.org/gc/v2 v2.5.0 h1:bJ9ChznK1L1mUtAQtxi0wi5AtAs5jQuw4PrPHO5pb6M= -modernc.org/gc/v2 v2.5.0/go.mod h1:wzN5dK1AzVGoH6XOzc3YZ+ey/jPgYHLuVckd62P0GYU= -modernc.org/libc v1.61.0 h1:eGFcvWpqlnoGwzZeZe3PWJkkKbM/3SUGyk1DVZQ0TpE= -modernc.org/libc v1.61.0/go.mod h1:DvxVX89wtGTu+r72MLGhygpfi3aUGgZRdAYGCAVVud0= -modernc.org/mathutil v1.6.0 h1:fRe9+AmYlaej+64JsEEhoWuAYBkOtQiMEU7n/XgfYi4= -modernc.org/mathutil v1.6.0/go.mod h1:Ui5Q9q1TR2gFm0AQRqQUaBWFLAhQpCwNcuhBOSedWPo= -modernc.org/memory v1.8.0 h1:IqGTL6eFMaDZZhEWwcREgeMXYwmW83LYW8cROZYkg+E= -modernc.org/memory v1.8.0/go.mod h1:XPZ936zp5OMKGWPqbD3JShgd/ZoQ7899TUuQqxY+peU= -modernc.org/opt v0.1.3 h1:3XOZf2yznlhC+ibLltsDGzABUGVx8J6pnFMS3E4dcq4= -modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= -modernc.org/sortutil v1.2.0 h1:jQiD3PfS2REGJNzNCMMaLSp/wdMNieTbKX920Cqdgqc= -modernc.org/sortutil v1.2.0/go.mod h1:TKU2s7kJMf1AE84OoiGppNHJwvB753OYfNl2WRb++Ss= -modernc.org/sqlite v1.33.1 h1:trb6Z3YYoeM9eDL1O8do81kP+0ejv+YzgyFo+Gwy0nM= -modernc.org/sqlite v1.33.1/go.mod h1:pXV2xHxhzXZsgT/RtTFAPY6JJDEvOTcTdwADQCCWD4k= -modernc.org/strutil v1.2.0 h1:agBi9dp1I+eOnxXeiZawM8F4LawKv4NzGWSaLfyeNZA= -modernc.org/strutil v1.2.0/go.mod h1:/mdcBmfOibveCTBxUl5B5l6W+TTH1FXPLHZE6bTosX0= +modernc.org/gc/v2 v2.6.1 h1:+Qf6xdG8l7B27TQ8D8lw/iFMUj1RXRBOuMUWziJOsk8= +modernc.org/gc/v2 v2.6.1/go.mod h1:YgIahr1ypgfe7chRuJi2gD7DBQiKSLMPgBQe9oIiito= +modernc.org/libc v1.61.9 h1:PLSBXVkifXGELtJ5BOnBUyAHr7lsatNwFU/RRo4kfJM= +modernc.org/libc v1.61.9/go.mod h1:61xrnzk/aR8gr5bR7Uj/lLFLuXu2/zMpIjcry63Eumk= +modernc.org/mathutil v1.7.1 h1:GCZVGXdaN8gTqB1Mf/usp1Y/hSqgI2vAGGP4jZMCxOU= +modernc.org/mathutil v1.7.1/go.mod h1:4p5IwJITfppl0G4sUEDtCr4DthTaT47/N3aT6MhfgJg= +modernc.org/memory v1.8.2 h1:cL9L4bcoAObu4NkxOlKWBWtNHIsnnACGF/TbqQ6sbcI= +modernc.org/memory v1.8.2/go.mod h1:ZbjSvMO5NQ1A2i3bWeDiVMxIorXwdClKE/0SZ+BMotU= +modernc.org/opt v0.1.4 h1:2kNGMRiUjrp4LcaPuLY2PzUfqM/w9N23quVwhKt5Qm8= +modernc.org/opt v0.1.4/go.mod h1:03fq9lsNfvkYSfxrfUhZCWPk1lm4cq4N+Bh//bEtgns= +modernc.org/sortutil v1.2.1 h1:+xyoGf15mM3NMlPDnFqrteY07klSFxLElE2PVuWIJ7w= +modernc.org/sortutil v1.2.1/go.mod h1:7ZI3a3REbai7gzCLcotuw9AC4VZVpYMjDzETGsSMqJE= +modernc.org/sqlite v1.34.5 h1:Bb6SR13/fjp15jt70CL4f18JIN7p7dnMExd+UFnF15g= +modernc.org/sqlite v1.34.5/go.mod h1:YLuNmX9NKs8wRNK2ko1LW1NGYcc9FkBO69JOt1AR9JE= +modernc.org/strutil v1.2.1 h1:UneZBkQA+DX2Rp35KcM69cSsNES9ly8mQWD71HKlOA0= +modernc.org/strutil v1.2.1/go.mod h1:EHkiggD70koQxjVdSBM3JKM7k6L0FbGE5eymy9i3B9A= modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y= modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= From e7832e5655a7fa8047ec9df0de27efe7baa4e478 Mon Sep 17 00:00:00 2001 From: Mikhail Iudin Date: Wed, 22 Jan 2025 13:50:06 +0100 Subject: [PATCH 207/279] Fix merge main --- clientlibrary/service/service.pb.go | 750 ++--- go.mod | 3 +- go.sum | 1 + pb/commands.pb.go | 4022 ++++++++++++++++++--------- pb/service/service.pb.go | 748 ++--- 5 files changed, 3574 insertions(+), 1950 deletions(-) diff --git a/clientlibrary/service/service.pb.go b/clientlibrary/service/service.pb.go index cbd21b09e..145e27050 100644 --- a/clientlibrary/service/service.pb.go +++ b/clientlibrary/service/service.pb.go @@ -25,343 +25,345 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package func init() { proto.RegisterFile("pb/protos/service/service.proto", fileDescriptor_93a29dc403579097) } var fileDescriptor_93a29dc403579097 = []byte{ - // 5364 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x9d, 0xdf, 0x6f, 0x24, 0x49, - 0x52, 0xf8, 0xd7, 0x2f, 0xdf, 0xfd, 0x52, 0xc7, 0x2d, 0xd0, 0x0b, 0xcb, 0xde, 0x72, 0x37, 0xbf, - 0x76, 0xc6, 0xf6, 0x8c, 0xed, 0xf6, 0xec, 0xcc, 0xce, 0xee, 0xe9, 0x0e, 0x09, 0x79, 0xec, 0xb1, - 0xd7, 0x9c, 0xed, 0x31, 0xee, 0xf6, 0x8c, 0xb4, 0x12, 0x12, 0xe9, 0xea, 0x74, 0xbb, 0x70, 0x75, - 0x65, 0x5d, 0x55, 0x76, 0x7b, 0xfa, 0x10, 0x08, 0x04, 0x02, 0x81, 0x40, 0x9c, 0xf8, 0xf5, 0x8a, - 0xc4, 0x5f, 0xc3, 0xe3, 0x3d, 0xf2, 0x88, 0x76, 0x9f, 0xef, 0x7f, 0x40, 0x95, 0x95, 0x95, 0x3f, - 0xa2, 0x22, 0xb2, 0xca, 0xf7, 0x34, 0xa3, 0x8e, 0x4f, 0x44, 0x64, 0x56, 0x66, 0x46, 0x46, 0x66, - 0x65, 0xa5, 0xa3, 0xbb, 0xf9, 0xc5, 0x76, 0x5e, 0x08, 0x29, 0xca, 0xed, 0x92, 0x17, 0x8b, 0x24, - 0xe6, 0xcd, 0xbf, 0x43, 0xf5, 0xf3, 0xe0, 0x7d, 0x96, 0x2d, 0xe5, 0x32, 0xe7, 0x9f, 0x7c, 0x6c, - 0xc9, 0x58, 0xcc, 0x66, 0x2c, 0x9b, 0x94, 0x35, 0xf2, 0xc9, 0x47, 0x56, 0xc2, 0x17, 0x3c, 0x93, - 0xfa, 0xf7, 0x67, 0xbf, 0xfc, 0xe5, 0x4a, 0xf4, 0xc1, 0x6e, 0x9a, 0xf0, 0x4c, 0xee, 0x6a, 0x8d, - 0xc1, 0xd7, 0xd1, 0x77, 0x77, 0xf2, 0xfc, 0x80, 0xcb, 0x37, 0xbc, 0x28, 0x13, 0x91, 0x0d, 0x3e, - 0x1d, 0x6a, 0x07, 0xc3, 0xb3, 0x3c, 0x1e, 0xee, 0xe4, 0xf9, 0xd0, 0x0a, 0x87, 0x67, 0xfc, 0xa7, - 0x73, 0x5e, 0xca, 0x4f, 0x1e, 0x86, 0xa1, 0x32, 0x17, 0x59, 0xc9, 0x07, 0x97, 0xd1, 0x6f, 0xed, - 0xe4, 0xf9, 0x88, 0xcb, 0x3d, 0x5e, 0x55, 0x60, 0x24, 0x99, 0xe4, 0x83, 0xb5, 0x96, 0xaa, 0x0f, - 0x18, 0x1f, 0xeb, 0xdd, 0xa0, 0xf6, 0x33, 0x8e, 0xbe, 0x53, 0xf9, 0xb9, 0x9a, 0xcb, 0x89, 0xb8, - 0xc9, 0x06, 0xf7, 0xdb, 0x8a, 0x5a, 0x64, 0x6c, 0x3f, 0x08, 0x21, 0xda, 0xea, 0xdb, 0xe8, 0xd7, - 0xdf, 0xb2, 0x34, 0xe5, 0x72, 0xb7, 0xe0, 0x55, 0xc1, 0x7d, 0x9d, 0x5a, 0x34, 0xac, 0x65, 0xc6, - 0xee, 0xa7, 0x41, 0x46, 0x1b, 0xfe, 0x3a, 0xfa, 0x6e, 0x2d, 0x39, 0xe3, 0xb1, 0x58, 0xf0, 0x62, - 0x80, 0x6a, 0x69, 0x21, 0xf1, 0xc8, 0x5b, 0x10, 0xb4, 0xbd, 0x2b, 0xb2, 0x05, 0x2f, 0x24, 0x6e, - 0x5b, 0x0b, 0xc3, 0xb6, 0x2d, 0xa4, 0x6d, 0xff, 0xfd, 0x4a, 0xf4, 0xfd, 0x9d, 0x38, 0x16, 0xf3, - 0x4c, 0x1e, 0x89, 0x98, 0xa5, 0x47, 0x49, 0x76, 0x7d, 0xc2, 0x6f, 0x76, 0xaf, 0x2a, 0x3e, 0x9b, - 0xf2, 0xc1, 0x73, 0xff, 0xa9, 0xd6, 0xe8, 0xd0, 0xb0, 0x43, 0x17, 0x36, 0xbe, 0x3f, 0xbf, 0x9d, - 0x92, 0x2e, 0xcb, 0x3f, 0xaf, 0x44, 0x77, 0x60, 0x59, 0x46, 0x22, 0x5d, 0x70, 0x5b, 0x9a, 0x17, - 0x1d, 0x86, 0x7d, 0xdc, 0x94, 0xe7, 0x8b, 0xdb, 0xaa, 0xe9, 0x12, 0xa5, 0xd1, 0x87, 0x6e, 0x77, - 0x19, 0xf1, 0x52, 0x0d, 0xa7, 0xc7, 0x74, 0x8f, 0xd0, 0x88, 0xf1, 0xfc, 0xa4, 0x0f, 0xaa, 0xbd, - 0x25, 0xd1, 0x40, 0x7b, 0x4b, 0x45, 0x69, 0x9c, 0xad, 0xa3, 0x16, 0x1c, 0xc2, 0xf8, 0x7a, 0xdc, - 0x83, 0xd4, 0xae, 0xfe, 0x24, 0xfa, 0x8d, 0xb7, 0xa2, 0xb8, 0x2e, 0x73, 0x16, 0x73, 0x3d, 0x14, - 0x1e, 0xf9, 0xda, 0x8d, 0x14, 0x8e, 0x86, 0xd5, 0x2e, 0xcc, 0xe9, 0xb4, 0x8d, 0xf0, 0x75, 0xce, - 0x61, 0x0c, 0xb2, 0x8a, 0x95, 0x90, 0xea, 0xb4, 0x10, 0xd2, 0xb6, 0xaf, 0xa3, 0x81, 0xb5, 0x7d, - 0xf1, 0xa7, 0x3c, 0x96, 0x3b, 0x93, 0x09, 0x6c, 0x15, 0xab, 0xab, 0x88, 0xe1, 0xce, 0x64, 0x42, - 0xb5, 0x0a, 0x8e, 0x6a, 0x67, 0x37, 0xd1, 0x47, 0xc0, 0xd9, 0x51, 0x52, 0x2a, 0x87, 0x5b, 0x61, - 0x2b, 0x1a, 0x33, 0x4e, 0x87, 0x7d, 0x71, 0xed, 0xf8, 0x2f, 0x57, 0xa2, 0xef, 0x21, 0x9e, 0xcf, - 0xf8, 0x4c, 0x2c, 0xf8, 0xe0, 0x69, 0xb7, 0xb5, 0x9a, 0x34, 0xfe, 0x3f, 0xbb, 0x85, 0x06, 0xd2, - 0x4d, 0x46, 0x3c, 0xe5, 0xb1, 0x24, 0xbb, 0x49, 0x2d, 0xee, 0xec, 0x26, 0x06, 0x73, 0x46, 0x58, - 0x23, 0x3c, 0xe0, 0x72, 0x77, 0x5e, 0x14, 0x3c, 0x93, 0x64, 0x5b, 0x5a, 0xa4, 0xb3, 0x2d, 0x3d, - 0x14, 0xa9, 0xcf, 0x01, 0x97, 0x3b, 0x69, 0x4a, 0xd6, 0xa7, 0x16, 0x77, 0xd6, 0xc7, 0x60, 0xda, - 0x43, 0x1c, 0xfd, 0xa6, 0xf3, 0xc4, 0xe4, 0x61, 0x76, 0x29, 0x06, 0xf4, 0xb3, 0x50, 0x72, 0xe3, - 0x63, 0xad, 0x93, 0x43, 0xaa, 0xf1, 0xea, 0x5d, 0x2e, 0x0a, 0xba, 0x59, 0x6a, 0x71, 0x67, 0x35, - 0x0c, 0xa6, 0x3d, 0xfc, 0x71, 0xf4, 0x81, 0x8e, 0x92, 0xcd, 0x7c, 0xf6, 0x10, 0x0d, 0xa1, 0x70, - 0x42, 0x7b, 0xd4, 0x41, 0xd9, 0xe0, 0xa0, 0x65, 0x3a, 0xf8, 0x7c, 0x8a, 0xea, 0x81, 0xd0, 0xf3, - 0x30, 0x0c, 0xb5, 0x6c, 0xef, 0xf1, 0x94, 0x93, 0xb6, 0x6b, 0x61, 0x87, 0x6d, 0x03, 0x69, 0xdb, - 0x45, 0xf4, 0x3b, 0xe6, 0xb1, 0x54, 0xf3, 0xa8, 0x92, 0x57, 0x41, 0x7a, 0x83, 0xa8, 0xb7, 0x0b, - 0x19, 0x5f, 0x9b, 0xfd, 0xe0, 0x56, 0x7d, 0xf4, 0x08, 0xc4, 0xeb, 0x03, 0xc6, 0xdf, 0xc3, 0x30, - 0xa4, 0x6d, 0xff, 0xc3, 0x4a, 0xf4, 0x03, 0x2d, 0x7b, 0x95, 0xb1, 0x8b, 0x94, 0xab, 0x29, 0xf1, - 0x84, 0xcb, 0x1b, 0x51, 0x5c, 0x8f, 0x96, 0x59, 0x4c, 0x4c, 0xff, 0x38, 0xdc, 0x31, 0xfd, 0x93, - 0x4a, 0x4e, 0xc6, 0xa7, 0x2b, 0x2a, 0x45, 0x0e, 0x33, 0xbe, 0xa6, 0x06, 0x52, 0xe4, 0x54, 0xc6, - 0xe7, 0x23, 0x2d, 0xab, 0xc7, 0x55, 0xd8, 0xc4, 0xad, 0x1e, 0xbb, 0x71, 0xf2, 0x41, 0x08, 0xb1, - 0x61, 0xab, 0xe9, 0xc0, 0x22, 0xbb, 0x4c, 0xa6, 0xe7, 0xf9, 0xa4, 0xea, 0xc6, 0x8f, 0xf1, 0x1e, - 0xea, 0x20, 0x44, 0xd8, 0x22, 0x50, 0xed, 0xed, 0x9f, 0x6c, 0x62, 0xa4, 0x87, 0xd2, 0x7e, 0x21, - 0x66, 0x47, 0x7c, 0xca, 0xe2, 0xa5, 0x1e, 0xff, 0x9f, 0x87, 0x06, 0x1e, 0xa4, 0x4d, 0x21, 0x5e, - 0xdc, 0x52, 0x4b, 0x97, 0xe7, 0x3f, 0x57, 0xa2, 0x87, 0x4d, 0xf5, 0xaf, 0x58, 0x36, 0xe5, 0xba, - 0x3d, 0xeb, 0xd2, 0xef, 0x64, 0x93, 0x33, 0x5e, 0x4a, 0x56, 0xc8, 0xc1, 0x8f, 0xf0, 0x4a, 0x86, - 0x74, 0x4c, 0xd9, 0x7e, 0xfc, 0x2b, 0xe9, 0xda, 0x56, 0x1f, 0x55, 0x81, 0x4d, 0x87, 0x00, 0xbf, - 0xd5, 0x95, 0x04, 0x06, 0x80, 0x07, 0x21, 0xc4, 0xb6, 0xba, 0x12, 0x1c, 0x66, 0x8b, 0x44, 0xf2, - 0x03, 0x9e, 0xf1, 0xa2, 0xdd, 0xea, 0xb5, 0xaa, 0x8f, 0x10, 0xad, 0x4e, 0xa0, 0x36, 0xd8, 0x78, - 0xde, 0xcc, 0xe4, 0xb8, 0x11, 0x30, 0xd2, 0x9a, 0x1e, 0x37, 0xfb, 0xc1, 0x76, 0x75, 0xe7, 0xf8, - 0x3c, 0xe3, 0x0b, 0x71, 0x0d, 0x57, 0x77, 0xae, 0x89, 0x1a, 0x20, 0x56, 0x77, 0x28, 0x68, 0x67, - 0x30, 0xc7, 0xcf, 0x9b, 0x84, 0xdf, 0x80, 0x19, 0xcc, 0x55, 0xae, 0xc4, 0xc4, 0x0c, 0x86, 0x60, - 0xda, 0xc3, 0x49, 0xf4, 0x6b, 0x4a, 0xf8, 0x87, 0x22, 0xc9, 0x06, 0x77, 0x11, 0xa5, 0x4a, 0x60, - 0xac, 0xde, 0xa3, 0x01, 0x50, 0xe2, 0xea, 0xd7, 0x5d, 0x96, 0xc5, 0x3c, 0x45, 0x4b, 0x6c, 0xc5, - 0xc1, 0x12, 0x7b, 0x98, 0x4d, 0x1d, 0x94, 0xb0, 0x8a, 0x5f, 0xa3, 0x2b, 0x56, 0x24, 0xd9, 0x74, - 0x80, 0xe9, 0x3a, 0x72, 0x22, 0x75, 0xc0, 0x38, 0xd0, 0x85, 0xb5, 0xe2, 0x4e, 0x9e, 0x17, 0x55, - 0x58, 0xc4, 0xba, 0xb0, 0x8f, 0x04, 0xbb, 0x70, 0x0b, 0xc5, 0xbd, 0xed, 0xf1, 0x38, 0x4d, 0xb2, - 0xa0, 0x37, 0x8d, 0xf4, 0xf1, 0x66, 0x51, 0xd0, 0x79, 0x8f, 0x38, 0x5b, 0xf0, 0xa6, 0x66, 0xd8, - 0x93, 0x71, 0x81, 0x60, 0xe7, 0x05, 0xa0, 0x5d, 0xa7, 0x29, 0xf1, 0x31, 0xbb, 0xe6, 0xd5, 0x03, - 0xe6, 0xd5, 0xbc, 0x36, 0xc0, 0xf4, 0x3d, 0x82, 0x58, 0xa7, 0xe1, 0xa4, 0x76, 0x35, 0x8f, 0x3e, - 0x52, 0xf2, 0x53, 0x56, 0xc8, 0x24, 0x4e, 0x72, 0x96, 0x35, 0xf9, 0x3f, 0x36, 0xae, 0x5b, 0x94, - 0x71, 0xb9, 0xd5, 0x93, 0xd6, 0x6e, 0xff, 0x63, 0x25, 0xba, 0x0f, 0xfd, 0x9e, 0xf2, 0x62, 0x96, - 0xa8, 0x65, 0x64, 0x59, 0x07, 0xe1, 0xc1, 0x97, 0x61, 0xa3, 0x2d, 0x05, 0x53, 0x9a, 0x1f, 0xde, - 0x5e, 0xd1, 0x26, 0x43, 0x23, 0x9d, 0x5a, 0xbf, 0x2e, 0x26, 0xad, 0x6d, 0x96, 0x51, 0x93, 0x2f, - 0x2b, 0x21, 0x91, 0x0c, 0xb5, 0x20, 0x30, 0xc2, 0xcf, 0xb3, 0xb2, 0xb1, 0x8e, 0x8d, 0x70, 0x2b, - 0x0e, 0x8e, 0x70, 0x0f, 0xb3, 0x23, 0xfc, 0x74, 0x7e, 0x91, 0x26, 0xe5, 0x55, 0x92, 0x4d, 0x75, - 0xe6, 0xeb, 0xeb, 0x5a, 0x31, 0x4c, 0x7e, 0xd7, 0x3a, 0x39, 0xcc, 0x89, 0xee, 0x2c, 0xa4, 0x13, - 0xd0, 0x4d, 0xd6, 0x3a, 0x39, 0xbb, 0x3e, 0xb0, 0xd2, 0x6a, 0xe5, 0x08, 0xd6, 0x07, 0x8e, 0x6a, - 0x25, 0x25, 0xd6, 0x07, 0x6d, 0x4a, 0x9b, 0x17, 0xd1, 0x6f, 0xbb, 0x75, 0x28, 0x45, 0xba, 0xe0, - 0xe7, 0x45, 0x32, 0x78, 0x42, 0x97, 0xaf, 0x61, 0x8c, 0xab, 0x8d, 0x5e, 0xac, 0x0d, 0x54, 0x96, - 0x38, 0xe0, 0x72, 0x24, 0x99, 0x9c, 0x97, 0x20, 0x50, 0x39, 0x36, 0x0c, 0x42, 0x04, 0x2a, 0x02, - 0xd5, 0xde, 0xfe, 0x28, 0x8a, 0xea, 0x45, 0xb7, 0xda, 0x18, 0xf1, 0xe7, 0x1e, 0xbd, 0x1a, 0xf7, - 0x76, 0x45, 0xee, 0x07, 0x08, 0x9b, 0xf0, 0xd4, 0xbf, 0xab, 0xfd, 0x9e, 0x01, 0xaa, 0xa1, 0x44, - 0x44, 0xc2, 0x03, 0x10, 0x58, 0xd0, 0xd1, 0x95, 0xb8, 0xc1, 0x0b, 0x5a, 0x49, 0xc2, 0x05, 0xd5, - 0x84, 0xdd, 0x81, 0xd5, 0x05, 0xc5, 0x76, 0x60, 0x9b, 0x62, 0x84, 0x76, 0x60, 0x21, 0x63, 0xfb, - 0x8c, 0x6b, 0xf8, 0xa5, 0x10, 0xd7, 0x33, 0x56, 0x5c, 0x83, 0x3e, 0xe3, 0x29, 0x37, 0x0c, 0xd1, - 0x67, 0x28, 0xd6, 0xf6, 0x19, 0xd7, 0x61, 0x95, 0x2e, 0x9f, 0x17, 0x29, 0xe8, 0x33, 0x9e, 0x0d, - 0x8d, 0x10, 0x7d, 0x86, 0x40, 0x6d, 0x74, 0x72, 0xbd, 0x8d, 0x38, 0x5c, 0xf3, 0x7b, 0xea, 0x23, - 0x4e, 0xad, 0xf9, 0x11, 0x0c, 0x76, 0xa1, 0x83, 0x82, 0xe5, 0x57, 0x78, 0x17, 0x52, 0xa2, 0x70, - 0x17, 0x6a, 0x10, 0xd8, 0xde, 0x23, 0xce, 0x8a, 0xf8, 0x0a, 0x6f, 0xef, 0x5a, 0x16, 0x6e, 0x6f, - 0xc3, 0xc0, 0xf6, 0xae, 0x05, 0x6f, 0x13, 0x79, 0x75, 0xcc, 0x25, 0xc3, 0xdb, 0xdb, 0x67, 0xc2, - 0xed, 0xdd, 0x62, 0x6d, 0x3e, 0xee, 0x3a, 0x1c, 0xcd, 0x2f, 0xca, 0xb8, 0x48, 0x2e, 0xf8, 0x20, - 0x60, 0xc5, 0x40, 0x44, 0x3e, 0x4e, 0xc2, 0xda, 0xe7, 0xcf, 0x57, 0xa2, 0xbb, 0x4d, 0xb3, 0x8b, - 0xb2, 0xd4, 0x73, 0x9f, 0xef, 0xfe, 0x05, 0xde, 0xbe, 0x04, 0x4e, 0xec, 0x89, 0xf7, 0x50, 0x73, - 0x72, 0x03, 0xbc, 0x48, 0xe7, 0x59, 0x69, 0x0a, 0xf5, 0x65, 0x1f, 0xeb, 0x8e, 0x02, 0x91, 0x1b, - 0xf4, 0x52, 0xb4, 0x69, 0x99, 0x6e, 0x9f, 0x46, 0x76, 0x38, 0x29, 0x41, 0x5a, 0xd6, 0x3c, 0x6f, - 0x87, 0x20, 0xd2, 0x32, 0x9c, 0x84, 0x5d, 0xe1, 0xa0, 0x10, 0xf3, 0xbc, 0xec, 0xe8, 0x0a, 0x00, - 0x0a, 0x77, 0x85, 0x36, 0xac, 0x7d, 0xbe, 0x8b, 0x7e, 0xd7, 0xed, 0x7e, 0xee, 0xc3, 0xde, 0xa2, - 0xfb, 0x14, 0xf6, 0x88, 0x87, 0x7d, 0x71, 0x9b, 0x51, 0x34, 0x9e, 0xe5, 0x1e, 0x97, 0x2c, 0x49, - 0xcb, 0xc1, 0x2a, 0x6e, 0xa3, 0x91, 0x13, 0x19, 0x05, 0xc6, 0xc1, 0xf8, 0xb6, 0x37, 0xcf, 0xd3, - 0x24, 0x6e, 0xbf, 0x91, 0xd0, 0xba, 0x46, 0x1c, 0x8e, 0x6f, 0x2e, 0x06, 0xe3, 0x75, 0x95, 0xfa, - 0xa9, 0xff, 0x8c, 0x97, 0x39, 0xc7, 0xe3, 0xb5, 0x87, 0x84, 0xe3, 0x35, 0x44, 0x61, 0x7d, 0x46, - 0x5c, 0x1e, 0xb1, 0xa5, 0x98, 0x13, 0xf1, 0xda, 0x88, 0xc3, 0xf5, 0x71, 0x31, 0xbb, 0x36, 0x30, - 0x1e, 0x0e, 0x33, 0xc9, 0x8b, 0x8c, 0xa5, 0xfb, 0x29, 0x9b, 0x96, 0x03, 0x22, 0xc6, 0xf8, 0x14, - 0xb1, 0x36, 0xa0, 0x69, 0xe4, 0x31, 0x1e, 0x96, 0xfb, 0x6c, 0x21, 0x8a, 0x44, 0xd2, 0x8f, 0xd1, - 0x22, 0x9d, 0x8f, 0xd1, 0x43, 0x51, 0x6f, 0x3b, 0x45, 0x7c, 0x95, 0x2c, 0xf8, 0x24, 0xe0, 0xad, - 0x41, 0x7a, 0x78, 0x73, 0x50, 0xa4, 0xd1, 0x46, 0x62, 0x5e, 0xc4, 0x9c, 0x6c, 0xb4, 0x5a, 0xdc, - 0xd9, 0x68, 0x06, 0xd3, 0x1e, 0xfe, 0x66, 0x25, 0xfa, 0xbd, 0x5a, 0xea, 0xbe, 0x26, 0xd8, 0x63, - 0xe5, 0xd5, 0x85, 0x60, 0xc5, 0x64, 0xf0, 0x19, 0x66, 0x07, 0x45, 0x8d, 0xeb, 0x67, 0xb7, 0x51, - 0x81, 0x8f, 0xb5, 0xca, 0xbb, 0xed, 0x88, 0x43, 0x1f, 0xab, 0x87, 0x84, 0x1f, 0x2b, 0x44, 0x61, - 0x00, 0x51, 0xf2, 0x7a, 0x4b, 0x6e, 0x95, 0xd4, 0xf7, 0xf7, 0xe5, 0xd6, 0x3a, 0x39, 0x18, 0x1f, - 0x2b, 0xa1, 0xdf, 0x5b, 0xb6, 0x28, 0x1b, 0x78, 0x8f, 0x19, 0xf6, 0xc5, 0x49, 0xcf, 0x66, 0x54, - 0x84, 0x3d, 0xb7, 0x46, 0xc6, 0xb0, 0x2f, 0x4e, 0x78, 0x76, 0xc2, 0x5a, 0xc8, 0x33, 0x12, 0xda, - 0x86, 0x7d, 0x71, 0x98, 0x7d, 0x69, 0xa6, 0x99, 0x17, 0x9e, 0x04, 0xec, 0xc0, 0xb9, 0x61, 0xa3, - 0x17, 0xab, 0x1d, 0xfe, 0xdd, 0x4a, 0xf4, 0x7d, 0xeb, 0xf1, 0x58, 0x4c, 0x92, 0xcb, 0x65, 0x0d, - 0xbd, 0x61, 0xe9, 0x9c, 0x97, 0x83, 0x67, 0x94, 0xb5, 0x36, 0x6b, 0x4a, 0xf0, 0xfc, 0x56, 0x3a, - 0x70, 0xec, 0xec, 0xe4, 0x79, 0xba, 0x1c, 0xf3, 0x59, 0x9e, 0x92, 0x63, 0xc7, 0x43, 0xc2, 0x63, - 0x07, 0xa2, 0x30, 0x2b, 0x1f, 0x8b, 0x2a, 0xe7, 0x47, 0xb3, 0x72, 0x25, 0x0a, 0x67, 0xe5, 0x0d, - 0x02, 0x73, 0xa5, 0xb1, 0xd8, 0x15, 0x69, 0xca, 0x63, 0xd9, 0x3e, 0x6a, 0x60, 0x34, 0x2d, 0x11, - 0xce, 0x95, 0x00, 0x69, 0x77, 0xe5, 0x9a, 0x35, 0x24, 0x2b, 0xf8, 0xcb, 0xe5, 0x51, 0x92, 0x5d, - 0x0f, 0xf0, 0xb4, 0xc0, 0x02, 0xc4, 0xae, 0x1c, 0x0a, 0xc2, 0xb5, 0xea, 0x79, 0x36, 0x11, 0xf8, - 0x5a, 0xb5, 0x92, 0x84, 0xd7, 0xaa, 0x9a, 0x80, 0x26, 0xcf, 0x38, 0x65, 0xb2, 0x92, 0x84, 0x4d, - 0x6a, 0x02, 0x0b, 0x85, 0xfa, 0xdd, 0x0d, 0x19, 0x0a, 0xc1, 0xdb, 0x9a, 0xb5, 0x4e, 0x0e, 0xf6, - 0xd0, 0x66, 0xd1, 0xba, 0xcf, 0x65, 0x7c, 0x85, 0xf7, 0x50, 0x0f, 0x09, 0xf7, 0x50, 0x88, 0xc2, - 0x2a, 0x8d, 0x85, 0x59, 0x74, 0xaf, 0xe2, 0xfd, 0xa3, 0xb5, 0xe0, 0x5e, 0xeb, 0xe4, 0xe0, 0x32, - 0xf2, 0x70, 0xa6, 0x9e, 0x19, 0xda, 0xc9, 0x6b, 0x59, 0x78, 0x19, 0x69, 0x18, 0x58, 0xfa, 0x5a, - 0xa0, 0xf6, 0xb2, 0x56, 0x69, 0x45, 0x6f, 0x37, 0x6b, 0xad, 0x93, 0xd3, 0x4e, 0xfe, 0xcd, 0x2c, - 0xe3, 0x6a, 0xe9, 0x89, 0xa8, 0xc6, 0xc8, 0x1b, 0x96, 0x26, 0x13, 0x26, 0xf9, 0x58, 0x5c, 0xf3, - 0x0c, 0x5f, 0x31, 0xe9, 0xd2, 0xd6, 0xfc, 0xd0, 0x53, 0x08, 0xaf, 0x98, 0xc2, 0x8a, 0xb0, 0x9f, - 0xd4, 0xf4, 0x79, 0xc9, 0x77, 0x59, 0x49, 0x44, 0x32, 0x0f, 0x09, 0xf7, 0x13, 0x88, 0xc2, 0x7c, - 0xb5, 0x96, 0xbf, 0x7a, 0x97, 0xf3, 0x22, 0xe1, 0x59, 0xcc, 0xf1, 0x7c, 0x15, 0x52, 0xe1, 0x7c, - 0x15, 0xa1, 0xe1, 0x5a, 0x6d, 0x8f, 0x49, 0xfe, 0x72, 0x39, 0x4e, 0x66, 0xbc, 0x94, 0x6c, 0x96, - 0xe3, 0x6b, 0x35, 0x00, 0x85, 0xd7, 0x6a, 0x6d, 0xb8, 0xb5, 0x35, 0x64, 0x02, 0x62, 0xfb, 0x84, - 0x12, 0x24, 0x02, 0x27, 0x94, 0x08, 0x14, 0x3e, 0x58, 0x0b, 0xa0, 0x2f, 0x09, 0x5a, 0x56, 0x82, - 0x2f, 0x09, 0x68, 0xba, 0xb5, 0xe1, 0x66, 0x98, 0x51, 0x35, 0x34, 0x3b, 0x8a, 0x3e, 0x72, 0x87, - 0xe8, 0x46, 0x2f, 0x16, 0xdf, 0xe1, 0x3b, 0xe3, 0x29, 0x53, 0xd3, 0x56, 0x60, 0x1b, 0xad, 0x61, - 0xfa, 0xec, 0xf0, 0x39, 0xac, 0x76, 0xf8, 0x57, 0x2b, 0xd1, 0x27, 0x98, 0xc7, 0xd7, 0xb9, 0xf2, - 0xfb, 0xb4, 0xdb, 0x56, 0x4d, 0x12, 0x47, 0xb0, 0xc2, 0x1a, 0xba, 0x0c, 0x7f, 0x16, 0x7d, 0xdc, - 0x88, 0xec, 0x09, 0x2d, 0x5d, 0x00, 0x3f, 0x69, 0x33, 0xe5, 0x87, 0x9c, 0x71, 0xbf, 0xdd, 0x9b, - 0xb7, 0xeb, 0x21, 0xbf, 0x5c, 0x25, 0x58, 0x0f, 0x19, 0x1b, 0x5a, 0x4c, 0xac, 0x87, 0x10, 0xcc, - 0x8e, 0x4e, 0xb7, 0x7a, 0x6f, 0x13, 0x79, 0xa5, 0xf2, 0x2d, 0x30, 0x3a, 0xbd, 0xb2, 0x1a, 0x88, - 0x18, 0x9d, 0x24, 0x0c, 0x33, 0x92, 0x06, 0xac, 0xc6, 0x26, 0x16, 0xcb, 0x8d, 0x21, 0x77, 0x64, - 0xae, 0x77, 0x83, 0xb0, 0xbf, 0x36, 0x62, 0xbd, 0xf4, 0x79, 0x12, 0xb2, 0x00, 0x96, 0x3f, 0x1b, - 0xbd, 0x58, 0xed, 0xf0, 0x2f, 0xa2, 0xef, 0xb5, 0x2a, 0xb6, 0xcf, 0x99, 0x9c, 0x17, 0x7c, 0x32, - 0xd8, 0xee, 0x28, 0x77, 0x03, 0x1a, 0xd7, 0x4f, 0xfb, 0x2b, 0xb4, 0x72, 0xf4, 0x86, 0xab, 0xbb, - 0x95, 0x29, 0xc3, 0xb3, 0x90, 0x49, 0x9f, 0x0d, 0xe6, 0xe8, 0xb4, 0x4e, 0x6b, 0x99, 0xed, 0xf6, - 0xae, 0x9d, 0x05, 0x4b, 0x52, 0xf5, 0xb2, 0xf6, 0xb3, 0x90, 0x51, 0x0f, 0x0d, 0x2e, 0xb3, 0x49, - 0x95, 0x56, 0x64, 0x56, 0x63, 0xdc, 0x59, 0x9e, 0x6d, 0xd2, 0x91, 0x00, 0x59, 0x9d, 0x6d, 0xf5, - 0xa4, 0xb5, 0x5b, 0xd9, 0x4c, 0x79, 0xd5, 0xcf, 0x6e, 0x27, 0xc7, 0xbc, 0x6a, 0x55, 0xa4, 0xa7, - 0x6f, 0xf5, 0xa4, 0xb5, 0xd7, 0x3f, 0x8f, 0x3e, 0x6e, 0x7b, 0xd5, 0x13, 0xd1, 0x76, 0xa7, 0x29, - 0x30, 0x17, 0x3d, 0xed, 0xaf, 0x60, 0x97, 0x34, 0x5f, 0x25, 0xa5, 0x14, 0xc5, 0x72, 0x74, 0x25, - 0x6e, 0x9a, 0x2f, 0x1f, 0xfc, 0xd1, 0xaa, 0x81, 0xa1, 0x43, 0x10, 0x4b, 0x1a, 0x9c, 0x6c, 0xb9, - 0xb2, 0x5f, 0x48, 0x94, 0x84, 0x2b, 0x87, 0xe8, 0x70, 0xe5, 0x93, 0x36, 0x56, 0x35, 0xb5, 0xb2, - 0x9f, 0x73, 0xac, 0xe1, 0x45, 0x6d, 0x7f, 0xd2, 0xb1, 0xde, 0x0d, 0xda, 0x8c, 0x45, 0x8b, 0xf7, - 0x92, 0xcb, 0x4b, 0x53, 0x27, 0xbc, 0xa4, 0x2e, 0x42, 0x64, 0x2c, 0x04, 0x6a, 0x93, 0xee, 0xfd, - 0x24, 0xe5, 0x6a, 0x47, 0xff, 0xf5, 0xe5, 0x65, 0x2a, 0xd8, 0x04, 0x24, 0xdd, 0x95, 0x78, 0xe8, - 0xca, 0x89, 0xa4, 0x1b, 0xe3, 0xec, 0x59, 0x81, 0x4a, 0x7a, 0xc6, 0x63, 0x91, 0xc5, 0x49, 0x0a, - 0x0f, 0x82, 0x2a, 0x4d, 0x23, 0x24, 0xce, 0x0a, 0xb4, 0x20, 0x3b, 0x31, 0x56, 0xa2, 0x6a, 0xd8, - 0x37, 0xe5, 0x7f, 0xd4, 0x56, 0x74, 0xc4, 0xc4, 0xc4, 0x88, 0x60, 0x76, 0xed, 0x59, 0x09, 0xcf, - 0x73, 0x65, 0xfc, 0x5e, 0x5b, 0xab, 0x96, 0x10, 0x6b, 0x4f, 0x9f, 0xb0, 0x6b, 0xa8, 0xea, 0xf7, - 0x3d, 0x71, 0x93, 0x29, 0xa3, 0x0f, 0xda, 0x2a, 0x8d, 0x8c, 0x58, 0x43, 0x41, 0x46, 0x1b, 0xfe, - 0x49, 0xf4, 0xff, 0x95, 0xe1, 0x42, 0xe4, 0x83, 0x3b, 0x88, 0x42, 0xe1, 0x9c, 0xd9, 0xbc, 0x4b, - 0xca, 0xed, 0xd1, 0x02, 0xd3, 0x37, 0xce, 0x4b, 0x36, 0xe5, 0x83, 0x87, 0x44, 0x8b, 0x2b, 0x29, - 0x71, 0xb4, 0xa0, 0x4d, 0xf9, 0xbd, 0xe2, 0x44, 0x4c, 0xb4, 0x75, 0xa4, 0x86, 0x46, 0x18, 0xea, - 0x15, 0x2e, 0x64, 0x93, 0x99, 0x13, 0xb6, 0x48, 0xa6, 0x66, 0xc2, 0xa9, 0xe3, 0x56, 0x09, 0x92, - 0x19, 0xcb, 0x0c, 0x1d, 0x88, 0x48, 0x66, 0x48, 0x58, 0xfb, 0xfc, 0xd7, 0x95, 0xe8, 0x9e, 0x65, - 0x0e, 0x9a, 0xdd, 0xba, 0xc3, 0xec, 0x52, 0x54, 0xa9, 0xcf, 0x51, 0x92, 0x5d, 0x97, 0x83, 0x2f, - 0x28, 0x93, 0x38, 0x6f, 0x8a, 0xf2, 0xe5, 0xad, 0xf5, 0x6c, 0xd6, 0xda, 0x6c, 0x65, 0xd9, 0xf7, - 0xd9, 0xb5, 0x06, 0xc8, 0x5a, 0xcd, 0x8e, 0x17, 0xe4, 0x88, 0xac, 0x35, 0xc4, 0xdb, 0x26, 0x36, - 0xce, 0x53, 0x91, 0xc1, 0x26, 0xb6, 0x16, 0x2a, 0x21, 0xd1, 0xc4, 0x2d, 0xc8, 0xc6, 0xe3, 0x46, - 0x54, 0xef, 0xba, 0xec, 0xa4, 0x29, 0x88, 0xc7, 0x46, 0xd5, 0x00, 0x44, 0x3c, 0x46, 0x41, 0xed, - 0xe7, 0x2c, 0xfa, 0x4e, 0xf5, 0x48, 0x4f, 0x0b, 0xbe, 0x48, 0x38, 0x3c, 0x7a, 0xe1, 0x48, 0x88, - 0xf1, 0xef, 0x13, 0x76, 0x64, 0x9d, 0x67, 0x65, 0x9e, 0xb2, 0xf2, 0x4a, 0xbf, 0x8c, 0xf7, 0xeb, - 0xdc, 0x08, 0xe1, 0xeb, 0xf8, 0x47, 0x1d, 0x94, 0x0d, 0xea, 0x8d, 0xcc, 0x84, 0x98, 0x55, 0x5c, - 0xb5, 0x15, 0x66, 0xd6, 0x3a, 0x39, 0xbb, 0xe3, 0x7d, 0xc0, 0xd2, 0x94, 0x17, 0xcb, 0x46, 0x76, - 0xcc, 0xb2, 0xe4, 0x92, 0x97, 0x12, 0xec, 0x78, 0x6b, 0x6a, 0x08, 0x31, 0x62, 0xc7, 0x3b, 0x80, - 0xdb, 0x6c, 0x1e, 0x78, 0x3e, 0xcc, 0x26, 0xfc, 0x1d, 0xc8, 0xe6, 0xa1, 0x1d, 0xc5, 0x10, 0xd9, - 0x3c, 0xc5, 0xda, 0x9d, 0xdf, 0x97, 0xa9, 0x88, 0xaf, 0xf5, 0x14, 0xe0, 0x37, 0xb0, 0x92, 0xc0, - 0x39, 0xe0, 0x41, 0x08, 0xb1, 0x93, 0x80, 0x12, 0x9c, 0xf1, 0x3c, 0x65, 0x31, 0x3c, 0x7f, 0x53, - 0xeb, 0x68, 0x19, 0x31, 0x09, 0x40, 0x06, 0x14, 0x57, 0x9f, 0xeb, 0xc1, 0x8a, 0x0b, 0x8e, 0xf5, - 0x3c, 0x08, 0x21, 0x76, 0x1a, 0x54, 0x82, 0x51, 0x9e, 0x26, 0x12, 0x0c, 0x83, 0x5a, 0x43, 0x49, - 0x88, 0x61, 0xe0, 0x13, 0xc0, 0xe4, 0x31, 0x2f, 0xa6, 0x1c, 0x35, 0xa9, 0x24, 0x41, 0x93, 0x0d, - 0x61, 0x0f, 0x1b, 0xd7, 0x75, 0x17, 0xf9, 0x12, 0x1c, 0x36, 0xd6, 0xd5, 0x12, 0xf9, 0x92, 0x38, - 0x6c, 0xec, 0x01, 0xa0, 0x88, 0xa7, 0xac, 0x94, 0x78, 0x11, 0x95, 0x24, 0x58, 0xc4, 0x86, 0xb0, - 0x73, 0x74, 0x5d, 0xc4, 0xb9, 0x04, 0x73, 0xb4, 0x2e, 0x80, 0xf3, 0x06, 0xfa, 0x2e, 0x29, 0xb7, - 0x91, 0xa4, 0x6e, 0x15, 0x2e, 0xf7, 0x13, 0x9e, 0x4e, 0x4a, 0x10, 0x49, 0xf4, 0x73, 0x6f, 0xa4, - 0x44, 0x24, 0x69, 0x53, 0xa0, 0x2b, 0xe9, 0xfd, 0x71, 0xac, 0x76, 0x60, 0x6b, 0xfc, 0x41, 0x08, - 0xb1, 0xf1, 0xa9, 0x29, 0xf4, 0x2e, 0x2b, 0x8a, 0xa4, 0x9a, 0xfc, 0x57, 0xf1, 0x02, 0x35, 0x72, - 0x22, 0x3e, 0x61, 0x1c, 0x18, 0x5e, 0x4d, 0xe0, 0xc6, 0x0a, 0x06, 0x43, 0xf7, 0xa7, 0x41, 0xc6, - 0x66, 0x9c, 0x4a, 0xe2, 0xbc, 0x42, 0xc5, 0x9e, 0x26, 0xf2, 0x06, 0x75, 0xb5, 0x0b, 0x73, 0x3e, - 0x06, 0x32, 0x2e, 0x8e, 0xc5, 0x82, 0x8f, 0xc5, 0xab, 0x77, 0x49, 0x29, 0x93, 0x6c, 0xaa, 0x67, - 0xee, 0xe7, 0x84, 0x25, 0x0c, 0x26, 0x3e, 0x06, 0xea, 0x54, 0xb2, 0x09, 0x04, 0x28, 0xcb, 0x09, - 0xbf, 0x41, 0x13, 0x08, 0x68, 0xd1, 0x70, 0x44, 0x02, 0x11, 0xe2, 0xed, 0x3e, 0x8a, 0x71, 0xae, - 0xbf, 0x98, 0x1e, 0x8b, 0x26, 0x97, 0xa3, 0xac, 0x41, 0x90, 0x58, 0xca, 0x06, 0x15, 0xec, 0xfa, - 0xd2, 0xf8, 0xb7, 0x43, 0x6c, 0x9d, 0xb0, 0xd3, 0x1e, 0x66, 0x8f, 0x7b, 0x90, 0x88, 0x2b, 0x7b, - 0x0e, 0x80, 0x72, 0xd5, 0x3e, 0x06, 0xf0, 0xb8, 0x07, 0xe9, 0xec, 0xc9, 0xb8, 0xd5, 0x7a, 0xc9, - 0xe2, 0xeb, 0x69, 0x21, 0xe6, 0xd9, 0x64, 0x57, 0xa4, 0xa2, 0x00, 0x7b, 0x32, 0x5e, 0xa9, 0x01, - 0x4a, 0xec, 0xc9, 0x74, 0xa8, 0xd8, 0x0c, 0xce, 0x2d, 0xc5, 0x4e, 0x9a, 0x4c, 0xe1, 0x8a, 0xda, - 0x33, 0xa4, 0x00, 0x22, 0x83, 0x43, 0x41, 0xa4, 0x13, 0xd5, 0x2b, 0x6e, 0x99, 0xc4, 0x2c, 0xad, - 0xfd, 0x6d, 0xd3, 0x66, 0x3c, 0xb0, 0xb3, 0x13, 0x21, 0x0a, 0x48, 0x3d, 0xc7, 0xf3, 0x22, 0x3b, - 0xcc, 0xa4, 0x20, 0xeb, 0xd9, 0x00, 0x9d, 0xf5, 0x74, 0x40, 0x10, 0x56, 0xc7, 0xfc, 0x5d, 0x55, - 0x9a, 0xea, 0x1f, 0x2c, 0xac, 0x56, 0xbf, 0x0f, 0xb5, 0x3c, 0x14, 0x56, 0x01, 0x07, 0x2a, 0xa3, - 0x9d, 0xd4, 0x1d, 0x26, 0xa0, 0xed, 0x77, 0x93, 0xf5, 0x6e, 0x10, 0xf7, 0x33, 0x92, 0xcb, 0x94, - 0x87, 0xfc, 0x28, 0xa0, 0x8f, 0x9f, 0x06, 0xb4, 0xdb, 0x2d, 0x5e, 0x7d, 0xae, 0x78, 0x7c, 0xdd, - 0x3a, 0xd6, 0xe4, 0x17, 0xb4, 0x46, 0x88, 0xed, 0x16, 0x02, 0xc5, 0x9b, 0xe8, 0x30, 0x16, 0x59, - 0xa8, 0x89, 0x2a, 0x79, 0x9f, 0x26, 0xd2, 0x9c, 0x5d, 0xfc, 0x1a, 0xa9, 0xee, 0x99, 0x75, 0x33, - 0x6d, 0x10, 0x16, 0x5c, 0x88, 0x58, 0xfc, 0x92, 0xb0, 0xcd, 0xc9, 0xa1, 0xcf, 0xe3, 0xf6, 0x99, - 0xef, 0x96, 0x95, 0x63, 0xfa, 0xcc, 0x37, 0xc5, 0xd2, 0x95, 0xac, 0xfb, 0x48, 0x87, 0x15, 0xbf, - 0x9f, 0x6c, 0xf6, 0x83, 0xed, 0x92, 0xc7, 0xf3, 0xb9, 0x9b, 0x72, 0x56, 0xd4, 0x5e, 0xb7, 0x02, - 0x86, 0x2c, 0x46, 0x2c, 0x79, 0x02, 0x38, 0x08, 0x61, 0x9e, 0xe7, 0x5d, 0x91, 0x49, 0x9e, 0x49, - 0x2c, 0x84, 0xf9, 0xc6, 0x34, 0x18, 0x0a, 0x61, 0x94, 0x02, 0xe8, 0xb7, 0x6a, 0x3f, 0x88, 0xcb, - 0x13, 0x36, 0x43, 0x33, 0xb6, 0x7a, 0xaf, 0xa7, 0x96, 0x87, 0xfa, 0x2d, 0xe0, 0x9c, 0x97, 0x7c, - 0xae, 0x97, 0x31, 0x2b, 0xa6, 0x66, 0x77, 0x63, 0x32, 0x78, 0x4a, 0xdb, 0xf1, 0x49, 0xe2, 0x25, - 0x5f, 0x58, 0x03, 0x84, 0x9d, 0xc3, 0x19, 0x9b, 0x9a, 0x9a, 0x22, 0x35, 0x50, 0xf2, 0x56, 0x55, - 0xd7, 0xbb, 0x41, 0xe0, 0xe7, 0x4d, 0x32, 0xe1, 0x22, 0xe0, 0x47, 0xc9, 0xfb, 0xf8, 0x81, 0x20, - 0xc8, 0xde, 0xaa, 0x7a, 0xd7, 0x2b, 0xba, 0x9d, 0x6c, 0xa2, 0xd7, 0xb1, 0x43, 0xe2, 0xf1, 0x00, - 0x2e, 0x94, 0xbd, 0x11, 0x3c, 0x18, 0xa3, 0xcd, 0x06, 0x6d, 0x68, 0x8c, 0x9a, 0xfd, 0xd7, 0x3e, - 0x63, 0x14, 0x83, 0xb5, 0xcf, 0x9f, 0xe9, 0x31, 0xba, 0xc7, 0x24, 0xab, 0xf2, 0xf6, 0x37, 0x09, - 0xbf, 0xd1, 0x0b, 0x61, 0xa4, 0xbe, 0x0d, 0x35, 0x54, 0x9f, 0xac, 0x82, 0x55, 0xf1, 0x76, 0x6f, - 0x3e, 0xe0, 0x5b, 0xaf, 0x10, 0x3a, 0x7d, 0x83, 0xa5, 0xc2, 0x76, 0x6f, 0x3e, 0xe0, 0x5b, 0x7f, - 0x0b, 0xdf, 0xe9, 0x1b, 0x7c, 0x10, 0xbf, 0xdd, 0x9b, 0xd7, 0xbe, 0xff, 0xba, 0x19, 0xb8, 0xae, - 0xf3, 0x2a, 0x0f, 0x8b, 0x65, 0xb2, 0xe0, 0x58, 0x3a, 0xe9, 0xdb, 0x33, 0x68, 0x28, 0x9d, 0xa4, - 0x55, 0x9c, 0x0b, 0x94, 0xb0, 0x52, 0x9c, 0x8a, 0x32, 0x51, 0x2f, 0xe9, 0x9f, 0xf7, 0x30, 0xda, - 0xc0, 0xa1, 0x45, 0x53, 0x48, 0xc9, 0xbe, 0x6e, 0xf4, 0x50, 0x7b, 0x8a, 0x79, 0x33, 0x60, 0xaf, - 0x7d, 0x98, 0x79, 0xab, 0x27, 0x6d, 0x5f, 0xfc, 0x79, 0x8c, 0xfb, 0xc6, 0x31, 0xd4, 0xaa, 0xe8, - 0x4b, 0xc7, 0xa7, 0xfd, 0x15, 0xb4, 0xfb, 0xbf, 0x6d, 0xd6, 0x15, 0xd0, 0xbf, 0x1e, 0x04, 0xcf, - 0xfa, 0x58, 0x04, 0x03, 0xe1, 0xf9, 0xad, 0x74, 0x74, 0x41, 0xfe, 0xb1, 0x59, 0x40, 0x37, 0xa8, - 0xfa, 0x96, 0x43, 0x7d, 0x03, 0xaa, 0xc7, 0x44, 0xa8, 0x59, 0x2d, 0x0c, 0x47, 0xc6, 0x8b, 0x5b, - 0x6a, 0x39, 0xd7, 0x69, 0x79, 0xb0, 0xfe, 0xe6, 0xd0, 0x29, 0x4f, 0xc8, 0xb2, 0x43, 0xc3, 0x02, - 0x7d, 0x71, 0x5b, 0x35, 0x6a, 0xac, 0x38, 0xb0, 0xba, 0x9d, 0xe3, 0x79, 0x4f, 0xc3, 0xde, 0x7d, - 0x1d, 0x9f, 0xdf, 0x4e, 0x49, 0x97, 0xe5, 0xbf, 0x56, 0xa2, 0x47, 0x1e, 0x6b, 0xdf, 0x27, 0x80, - 0x5d, 0x8f, 0x1f, 0x07, 0xec, 0x53, 0x4a, 0xa6, 0x70, 0xbf, 0xff, 0xab, 0x29, 0xdb, 0xbb, 0xa7, - 0x3c, 0x95, 0xfd, 0x24, 0x95, 0xbc, 0x68, 0xdf, 0x3d, 0xe5, 0xdb, 0xad, 0xa9, 0x21, 0x7d, 0xf7, - 0x54, 0x00, 0x77, 0xee, 0x9e, 0x42, 0x3c, 0xa3, 0x77, 0x4f, 0xa1, 0xd6, 0x82, 0x77, 0x4f, 0x85, - 0x35, 0xa8, 0xf0, 0xde, 0x14, 0xa1, 0xde, 0xb7, 0xee, 0x65, 0xd1, 0xdf, 0xc6, 0x7e, 0x76, 0x1b, - 0x15, 0x62, 0x82, 0xab, 0x39, 0x75, 0xce, 0xad, 0xc7, 0x33, 0xf5, 0xce, 0xba, 0x6d, 0xf7, 0xe6, - 0xb5, 0xef, 0x9f, 0xea, 0xd5, 0x8d, 0x09, 0xe7, 0xa2, 0x50, 0xf7, 0x8e, 0x6d, 0x84, 0xc2, 0x73, - 0x65, 0xc1, 0x6d, 0xf9, 0xcd, 0x7e, 0x30, 0x51, 0xdd, 0x8a, 0xd0, 0x8d, 0x3e, 0xec, 0x32, 0x04, - 0x9a, 0x7c, 0xbb, 0x37, 0x4f, 0x4c, 0x23, 0xb5, 0xef, 0xba, 0xb5, 0x7b, 0x18, 0xf3, 0xdb, 0xfa, - 0x69, 0x7f, 0x05, 0xed, 0x7e, 0xa1, 0xd3, 0x46, 0xd7, 0xbd, 0x6a, 0xe7, 0xad, 0x2e, 0x53, 0x23, - 0xaf, 0x99, 0x87, 0x7d, 0xf1, 0x50, 0x02, 0xe1, 0x4e, 0xa1, 0x5d, 0x09, 0x04, 0x3a, 0x8d, 0x7e, - 0x7e, 0x3b, 0x25, 0x5d, 0x96, 0x7f, 0x59, 0x89, 0xee, 0x92, 0x65, 0xd1, 0xfd, 0xe0, 0x8b, 0xbe, - 0x96, 0x41, 0x7f, 0xf8, 0xf2, 0xd6, 0x7a, 0xba, 0x50, 0xff, 0xbe, 0x12, 0xdd, 0x0b, 0x14, 0xaa, - 0xee, 0x20, 0xb7, 0xb0, 0xee, 0x77, 0x94, 0x1f, 0xde, 0x5e, 0x91, 0x9a, 0xee, 0x5d, 0x7c, 0xd4, - 0xbe, 0x94, 0x29, 0x60, 0x7b, 0x44, 0x5f, 0xca, 0xd4, 0xad, 0x05, 0x37, 0x79, 0xd8, 0x45, 0xb3, - 0xe8, 0x42, 0x37, 0x79, 0xd4, 0x09, 0xb5, 0xe0, 0xe5, 0x12, 0x18, 0x87, 0x39, 0x79, 0xf5, 0x2e, - 0x67, 0xd9, 0x84, 0x76, 0x52, 0xcb, 0xbb, 0x9d, 0x18, 0x0e, 0x6e, 0x8e, 0x55, 0xd2, 0x33, 0xd1, - 0x2c, 0xa4, 0x1e, 0x53, 0xfa, 0x06, 0x09, 0x6e, 0x8e, 0xb5, 0x50, 0xc2, 0x9b, 0xce, 0x1a, 0x43, - 0xde, 0x40, 0xb2, 0xf8, 0xa4, 0x0f, 0x0a, 0x52, 0x74, 0xe3, 0xcd, 0xec, 0xb9, 0x6f, 0x86, 0xac, - 0xb4, 0xf6, 0xdd, 0xb7, 0x7a, 0xd2, 0x84, 0xdb, 0x11, 0x97, 0x5f, 0x71, 0x36, 0xe1, 0x45, 0xd0, - 0xad, 0xa1, 0x7a, 0xb9, 0x75, 0x69, 0xcc, 0xed, 0xae, 0x48, 0xe7, 0xb3, 0x4c, 0x37, 0x26, 0xe9, - 0xd6, 0xa5, 0xba, 0xdd, 0x02, 0x1a, 0x6e, 0x0b, 0x5a, 0xb7, 0x2a, 0xbd, 0x7c, 0x12, 0x36, 0xe3, - 0x65, 0x95, 0x1b, 0xbd, 0x58, 0xba, 0x9e, 0xba, 0x1b, 0x75, 0xd4, 0x13, 0xf4, 0xa4, 0xad, 0x9e, - 0x34, 0xdc, 0x9f, 0x73, 0xdc, 0x9a, 0xfe, 0xb4, 0xdd, 0x61, 0xab, 0xd5, 0xa5, 0x9e, 0xf6, 0x57, - 0x80, 0xbb, 0xa1, 0xba, 0x57, 0x1d, 0x25, 0xa5, 0xdc, 0x4f, 0xd2, 0x74, 0xb0, 0x11, 0xe8, 0x26, - 0x0d, 0x14, 0xdc, 0x0d, 0x45, 0x60, 0xa2, 0x27, 0x37, 0xbb, 0x87, 0xd9, 0xa0, 0xcb, 0x8e, 0xa2, - 0x7a, 0xf5, 0x64, 0x97, 0x06, 0x3b, 0x5a, 0xce, 0xa3, 0x36, 0xb5, 0x1d, 0x86, 0x1f, 0x5c, 0xab, - 0xc2, 0xdb, 0xbd, 0x79, 0xf0, 0xba, 0x5d, 0x51, 0x6a, 0x66, 0x79, 0x48, 0x99, 0xf0, 0x66, 0x92, - 0x47, 0x1d, 0x14, 0xd8, 0x15, 0xac, 0x87, 0xd1, 0xdb, 0x64, 0x32, 0xe5, 0x12, 0x7d, 0x53, 0xe4, - 0x02, 0xc1, 0x37, 0x45, 0x00, 0x04, 0x4d, 0x57, 0xff, 0x6e, 0xb6, 0x43, 0x0f, 0x27, 0x58, 0xd3, - 0x69, 0x65, 0x87, 0x0a, 0x35, 0x1d, 0x4a, 0x83, 0x68, 0x60, 0xdc, 0xea, 0xcf, 0xf1, 0x9f, 0x84, - 0xcc, 0x80, 0x6f, 0xf2, 0x37, 0x7a, 0xb1, 0x60, 0x46, 0xb1, 0x0e, 0x93, 0x59, 0x22, 0xb1, 0x19, - 0xc5, 0xb1, 0x51, 0x21, 0xa1, 0x19, 0xa5, 0x8d, 0x52, 0xd5, 0xab, 0x72, 0x84, 0xc3, 0x49, 0xb8, - 0x7a, 0x35, 0xd3, 0xaf, 0x7a, 0x86, 0x6d, 0xbd, 0xd8, 0xcc, 0x4c, 0x97, 0x91, 0x57, 0x7a, 0xb1, - 0x8c, 0xf4, 0x6d, 0xf5, 0x99, 0x26, 0x04, 0x43, 0x51, 0x87, 0x52, 0x80, 0x1b, 0xf6, 0x15, 0xd7, - 0xbc, 0x7b, 0xcd, 0x73, 0xce, 0x0a, 0x96, 0xc5, 0xe8, 0xe2, 0x54, 0x19, 0x6c, 0x91, 0xa1, 0xc5, - 0x29, 0xa9, 0x01, 0x5e, 0x9b, 0xfb, 0x1f, 0x58, 0x22, 0x43, 0xc1, 0x7c, 0xc9, 0xe8, 0x7f, 0x5f, - 0xf9, 0xb8, 0x07, 0x09, 0x5f, 0x9b, 0x37, 0x80, 0xd9, 0xf8, 0xae, 0x9d, 0x7e, 0x16, 0x30, 0xe5, - 0xa3, 0xa1, 0x85, 0x30, 0xad, 0x02, 0x3a, 0xb5, 0x49, 0x70, 0xb9, 0xfc, 0x09, 0x5f, 0x62, 0x9d, - 0xda, 0xe6, 0xa7, 0x0a, 0x09, 0x75, 0xea, 0x36, 0x0a, 0xf2, 0x4c, 0x77, 0x1d, 0xb4, 0x1a, 0xd0, - 0x77, 0x97, 0x3e, 0x6b, 0x9d, 0x1c, 0x18, 0x39, 0x7b, 0xc9, 0xc2, 0x7b, 0x4f, 0x80, 0x14, 0x74, - 0x2f, 0x59, 0xe0, 0xaf, 0x09, 0x36, 0x7a, 0xb1, 0xf0, 0x95, 0x3c, 0x93, 0xfc, 0x5d, 0xf3, 0xae, - 0x1c, 0x29, 0xae, 0x92, 0xb7, 0x5e, 0x96, 0xaf, 0x77, 0x83, 0xf6, 0x00, 0xec, 0x69, 0x21, 0x62, - 0x5e, 0x96, 0xfa, 0xa6, 0x4a, 0xff, 0x84, 0x91, 0x96, 0x0d, 0xc1, 0x3d, 0x95, 0x0f, 0xc3, 0x90, - 0x73, 0xbd, 0x5c, 0x2d, 0xb2, 0xb7, 0xde, 0xac, 0xa2, 0x9a, 0xed, 0x0b, 0x6f, 0xd6, 0x3a, 0x39, - 0x3b, 0xbc, 0xb4, 0xd4, 0xbd, 0xe6, 0x66, 0x1d, 0x55, 0xc7, 0x6e, 0xb8, 0x79, 0xdc, 0x83, 0xd4, - 0xae, 0xbe, 0x8a, 0xde, 0x3f, 0x12, 0xd3, 0x11, 0xcf, 0x26, 0x83, 0x1f, 0xf8, 0x47, 0x68, 0xc5, - 0x74, 0x58, 0xfd, 0x6c, 0x8c, 0xde, 0xa1, 0xc4, 0xf6, 0x10, 0xe0, 0x1e, 0xbf, 0x98, 0x4f, 0x47, - 0x92, 0x49, 0x70, 0x08, 0x50, 0xfd, 0x3e, 0xac, 0x04, 0xc4, 0x21, 0x40, 0x0f, 0x00, 0xf6, 0xc6, - 0x05, 0xe7, 0xa8, 0xbd, 0x4a, 0x10, 0xb4, 0xa7, 0x01, 0x9b, 0x45, 0x18, 0x7b, 0x55, 0xa2, 0x0e, - 0x0f, 0xed, 0x59, 0x1d, 0x25, 0x25, 0xb2, 0x88, 0x36, 0x65, 0x3b, 0x77, 0x5d, 0x7d, 0x75, 0xeb, - 0xc8, 0x7c, 0x36, 0x63, 0xc5, 0x12, 0x74, 0x6e, 0x5d, 0x4b, 0x07, 0x20, 0x3a, 0x37, 0x0a, 0xda, - 0x51, 0xdb, 0x3c, 0xe6, 0xf8, 0xfa, 0x40, 0x14, 0x62, 0x2e, 0x93, 0x8c, 0xc3, 0x9b, 0x27, 0xcc, - 0x03, 0x75, 0x19, 0x62, 0xd4, 0x52, 0xac, 0xcd, 0x72, 0x15, 0x51, 0x9f, 0x27, 0x54, 0xf7, 0x57, - 0x97, 0x52, 0x14, 0xf0, 0x7d, 0x62, 0x6d, 0x05, 0x42, 0x44, 0x96, 0x4b, 0xc2, 0xa0, 0xed, 0x4f, - 0x93, 0x6c, 0x8a, 0xb6, 0xfd, 0xa9, 0x7b, 0xfb, 0xeb, 0x3d, 0x1a, 0xb0, 0x03, 0xaa, 0x7e, 0x68, - 0xf5, 0x00, 0xd0, 0xdf, 0x72, 0xa2, 0x0f, 0xdd, 0x25, 0x88, 0x01, 0x85, 0x93, 0xc0, 0xd5, 0xeb, - 0x9c, 0x67, 0x7c, 0xd2, 0x9c, 0x9a, 0xc3, 0x5c, 0x79, 0x44, 0xd0, 0x15, 0x24, 0x6d, 0x2c, 0x52, - 0xf2, 0xb3, 0x79, 0x76, 0x5a, 0x88, 0xcb, 0x24, 0xe5, 0x05, 0x88, 0x45, 0xb5, 0xba, 0x23, 0x27, - 0x62, 0x11, 0xc6, 0xd9, 0xe3, 0x17, 0x4a, 0xea, 0x5d, 0xc2, 0x3e, 0x2e, 0x58, 0x0c, 0x8f, 0x5f, - 0xd4, 0x36, 0xda, 0x18, 0xb1, 0x33, 0x18, 0xc0, 0x9d, 0x44, 0xa7, 0x76, 0x9d, 0x2d, 0x55, 0xff, - 0xd0, 0xdf, 0x12, 0xaa, 0x3b, 0x51, 0x4b, 0x90, 0xe8, 0x68, 0x73, 0x18, 0x49, 0x24, 0x3a, 0x61, - 0x0d, 0x3b, 0x95, 0x28, 0xee, 0x44, 0x1f, 0x2b, 0x02, 0x53, 0x49, 0x6d, 0xa3, 0x11, 0x12, 0x53, - 0x49, 0x0b, 0x02, 0x01, 0xa9, 0x19, 0x06, 0x53, 0x34, 0x20, 0x19, 0x69, 0x30, 0x20, 0xb9, 0x94, - 0x0d, 0x14, 0x87, 0x59, 0x22, 0x13, 0x96, 0x8e, 0xb8, 0x3c, 0x65, 0x05, 0x9b, 0x71, 0xc9, 0x0b, - 0x18, 0x28, 0x34, 0x32, 0xf4, 0x18, 0x22, 0x50, 0x50, 0xac, 0x76, 0xf8, 0x07, 0xd1, 0x87, 0xd5, - 0xbc, 0xcf, 0x33, 0xfd, 0xe7, 0x56, 0x5e, 0xa9, 0xbf, 0xd3, 0x34, 0xf8, 0xc8, 0xd8, 0x18, 0xc9, - 0x82, 0xb3, 0x59, 0x63, 0xfb, 0x03, 0xf3, 0xbb, 0x02, 0x9f, 0xae, 0x54, 0xfd, 0xf9, 0x44, 0xc8, - 0xe4, 0xb2, 0x5a, 0x66, 0xeb, 0x2f, 0x88, 0x40, 0x7f, 0x76, 0xc5, 0xc3, 0xc0, 0x5d, 0x14, 0x18, - 0x67, 0xe3, 0xb4, 0x2b, 0x3d, 0xe3, 0x79, 0x0a, 0xe3, 0xb4, 0xa7, 0xad, 0x00, 0x22, 0x4e, 0xa3, - 0xa0, 0x1d, 0x9c, 0xae, 0x78, 0xcc, 0xc3, 0x95, 0x19, 0xf3, 0x7e, 0x95, 0x19, 0x7b, 0x1f, 0x65, - 0xa4, 0xd1, 0x87, 0xc7, 0x7c, 0x76, 0xc1, 0x8b, 0xf2, 0x2a, 0xc9, 0xa9, 0x7b, 0x5b, 0x2d, 0xd1, - 0x79, 0x6f, 0x2b, 0x81, 0xda, 0x99, 0xc0, 0x02, 0x87, 0xe5, 0x09, 0x9b, 0x71, 0x75, 0xb3, 0x06, - 0x98, 0x09, 0x1c, 0x23, 0x0e, 0x44, 0xcc, 0x04, 0x24, 0xec, 0x7c, 0xdf, 0x65, 0x99, 0x33, 0x3e, - 0xad, 0x7a, 0x58, 0x71, 0xca, 0x96, 0x33, 0x9e, 0x49, 0x6d, 0x12, 0xec, 0xc9, 0x3b, 0x26, 0x71, - 0x9e, 0xd8, 0x93, 0xef, 0xa3, 0xe7, 0x84, 0x26, 0xef, 0xc1, 0x9f, 0x8a, 0x42, 0xd6, 0x7f, 0x4c, - 0xe9, 0xbc, 0x48, 0x41, 0x68, 0xf2, 0x1f, 0xaa, 0x47, 0x12, 0xa1, 0x29, 0xac, 0xe1, 0xfc, 0x15, - 0x02, 0xaf, 0x0c, 0x6f, 0x78, 0x61, 0xfa, 0xc9, 0xab, 0x19, 0x4b, 0x52, 0xdd, 0x1b, 0x7e, 0x14, - 0xb0, 0x4d, 0xe8, 0x10, 0x7f, 0x85, 0xa0, 0xaf, 0xae, 0xf3, 0x77, 0x1b, 0xc2, 0x25, 0x04, 0xaf, - 0x08, 0x3a, 0xec, 0x13, 0xaf, 0x08, 0xba, 0xb5, 0xec, 0xca, 0xdd, 0xb2, 0x8a, 0x5b, 0x2a, 0x62, - 0x57, 0x4c, 0xe0, 0x7e, 0xa1, 0x63, 0x13, 0x80, 0xc4, 0xca, 0x3d, 0xa8, 0x60, 0x53, 0x03, 0x8b, - 0xed, 0x27, 0x19, 0x4b, 0x93, 0x9f, 0xc1, 0xb4, 0xde, 0xb1, 0xd3, 0x10, 0x44, 0x6a, 0x80, 0x93, - 0x98, 0xab, 0x03, 0x2e, 0xc7, 0x49, 0x15, 0xfa, 0xd7, 0x03, 0xcf, 0x4d, 0x11, 0xdd, 0xae, 0x1c, - 0xd2, 0xb9, 0xa3, 0x15, 0x3e, 0xd6, 0x9d, 0x3c, 0x1f, 0x55, 0xb3, 0xea, 0x19, 0x8f, 0x79, 0x92, - 0xcb, 0xc1, 0x8b, 0xf0, 0xb3, 0x02, 0x38, 0x71, 0xd0, 0xa2, 0x87, 0x9a, 0xf3, 0xfa, 0xbe, 0x8a, - 0x25, 0xa3, 0xfa, 0xaf, 0x0c, 0x9e, 0x97, 0xbc, 0xd0, 0x89, 0xc6, 0x01, 0x97, 0x60, 0x74, 0x3a, - 0xdc, 0xd0, 0x01, 0xab, 0x8a, 0x12, 0xa3, 0x33, 0xac, 0x61, 0x37, 0xfb, 0x1c, 0x4e, 0xdf, 0xb9, - 0xad, 0xce, 0x1b, 0x6e, 0x92, 0xc6, 0x1c, 0x8a, 0xd8, 0xec, 0xa3, 0x69, 0x9b, 0xad, 0xb5, 0xdd, - 0xee, 0x64, 0xcb, 0x43, 0x78, 0x64, 0x02, 0xb1, 0xa4, 0x30, 0x22, 0x5b, 0x0b, 0xe0, 0xce, 0x66, - 0x78, 0x21, 0xd8, 0x24, 0x66, 0xa5, 0x3c, 0x65, 0xcb, 0x54, 0xb0, 0x89, 0x9a, 0xd7, 0xe1, 0x66, - 0x78, 0xc3, 0x0c, 0x5d, 0x88, 0xda, 0x0c, 0xa7, 0x60, 0x37, 0x3b, 0x53, 0x7f, 0x3c, 0x51, 0x9f, - 0xe5, 0x84, 0xd9, 0x99, 0x2a, 0x2f, 0x3c, 0xc7, 0xf9, 0x30, 0x0c, 0xd9, 0x6f, 0xd0, 0x6a, 0x91, - 0x4a, 0x43, 0xee, 0x61, 0x3a, 0x5e, 0x02, 0x72, 0x3f, 0x40, 0xd8, 0x7b, 0x29, 0xea, 0xdf, 0x9b, - 0xbf, 0xff, 0x23, 0xf5, 0x4d, 0xd6, 0x9b, 0x98, 0xae, 0x0b, 0x0d, 0xdd, 0x0b, 0xee, 0xb6, 0x7a, - 0xd2, 0x36, 0xcd, 0xdc, 0xbd, 0x62, 0x72, 0x67, 0x32, 0x39, 0xe6, 0x25, 0xf2, 0x41, 0x79, 0x25, - 0x1c, 0x5a, 0x29, 0x91, 0x66, 0xb6, 0x29, 0xdb, 0xd1, 0x2b, 0xd9, 0xab, 0x49, 0x22, 0xb5, 0xac, - 0x39, 0x21, 0xbd, 0xd9, 0x36, 0xd0, 0xa6, 0x88, 0x5a, 0xd1, 0xb4, 0x8d, 0xe5, 0x15, 0x33, 0x16, - 0xd3, 0x69, 0xca, 0x35, 0x74, 0xc6, 0x59, 0x7d, 0x91, 0xdf, 0x76, 0xdb, 0x16, 0x0a, 0x12, 0xb1, - 0x3c, 0xa8, 0x60, 0xd3, 0xc8, 0x0a, 0xab, 0x5f, 0x49, 0x35, 0x0f, 0x76, 0xad, 0x6d, 0xc6, 0x03, - 0x88, 0x34, 0x12, 0x05, 0xed, 0x77, 0x6f, 0x95, 0xf8, 0x80, 0x37, 0x4f, 0x02, 0x5e, 0x41, 0xa4, - 0x94, 0x1d, 0x31, 0xf1, 0xdd, 0x1b, 0x82, 0xd9, 0x75, 0x02, 0xf0, 0xf0, 0x72, 0x79, 0x38, 0x81, - 0xeb, 0x04, 0xa8, 0xaf, 0x18, 0x62, 0x9d, 0x40, 0xb1, 0x7e, 0xd3, 0x99, 0x7d, 0xaf, 0x23, 0x56, - 0xda, 0xca, 0x21, 0x4d, 0x87, 0x82, 0xa1, 0xa6, 0xa3, 0x14, 0xfc, 0x47, 0xea, 0x6e, 0xad, 0x21, - 0x8f, 0x14, 0xdb, 0x57, 0x5b, 0xed, 0xc2, 0x6c, 0x5c, 0x32, 0xeb, 0x49, 0x75, 0x64, 0x09, 0xbf, - 0xc1, 0xbf, 0x16, 0x12, 0x71, 0xa9, 0x05, 0xd5, 0xb6, 0x5f, 0xde, 0xff, 0xef, 0x6f, 0xee, 0xac, - 0xfc, 0xe2, 0x9b, 0x3b, 0x2b, 0xff, 0xfb, 0xcd, 0x9d, 0x95, 0x9f, 0x7f, 0x7b, 0xe7, 0xbd, 0x5f, - 0x7c, 0x7b, 0xe7, 0xbd, 0xff, 0xf9, 0xf6, 0xce, 0x7b, 0x5f, 0xbf, 0xaf, 0xff, 0xa8, 0xee, 0xc5, - 0xff, 0x53, 0x7f, 0x1a, 0xf7, 0xf9, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0xb2, 0x7c, 0x4b, 0xdb, - 0x78, 0x77, 0x00, 0x00, + // 5400 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x9d, 0xdf, 0x6f, 0x1c, 0x39, + 0x72, 0xf8, 0x57, 0x2f, 0xdf, 0xfd, 0xa6, 0x2f, 0xb7, 0x49, 0x66, 0x93, 0xcd, 0xde, 0xe6, 0xce, + 0xf6, 0x7a, 0x6d, 0xc9, 0xb6, 0xac, 0x91, 0xd7, 0xde, 0x1f, 0x87, 0xbb, 0x00, 0x81, 0x2c, 0xd9, + 0x5a, 0xe5, 0x24, 0x59, 0xd1, 0x8c, 0x6c, 0x60, 0x81, 0x00, 0xa1, 0x66, 0xa8, 0x51, 0x47, 0x3d, + 0xcd, 0xbe, 0x6e, 0xce, 0xc8, 0x73, 0x41, 0x82, 0x04, 0x09, 0x12, 0x24, 0x48, 0x90, 0x43, 0x7e, + 0xbd, 0x06, 0xc8, 0xff, 0x91, 0xf7, 0x3c, 0xde, 0x63, 0x1e, 0x83, 0xdd, 0x3f, 0x20, 0xff, 0x42, + 0xd0, 0x24, 0x9b, 0x3f, 0xaa, 0xab, 0xd8, 0xad, 0x7b, 0xb2, 0x31, 0xf5, 0xa9, 0x2a, 0xb2, 0x49, + 0x16, 0x8b, 0x6c, 0x36, 0x95, 0xdc, 0x2e, 0xce, 0xb7, 0x8b, 0x52, 0x48, 0x51, 0x6d, 0x57, 0xbc, + 0x5c, 0xa6, 0x13, 0xde, 0xfc, 0x3b, 0x54, 0x3f, 0x0f, 0xde, 0x65, 0xf9, 0x4a, 0xae, 0x0a, 0xfe, + 0xd1, 0x87, 0x8e, 0x9c, 0x88, 0xf9, 0x9c, 0xe5, 0xd3, 0x4a, 0x23, 0x1f, 0x7d, 0xe0, 0x24, 0x7c, + 0xc9, 0x73, 0x69, 0x7e, 0x7f, 0xfa, 0x9f, 0xff, 0xbb, 0x96, 0xbc, 0xb7, 0x9b, 0xa5, 0x3c, 0x97, + 0xbb, 0x46, 0x63, 0xf0, 0x75, 0xf2, 0xdd, 0x9d, 0xa2, 0xd8, 0xe7, 0xf2, 0x35, 0x2f, 0xab, 0x54, + 0xe4, 0x83, 0x4f, 0x86, 0xc6, 0xc1, 0xf0, 0xb4, 0x98, 0x0c, 0x77, 0x8a, 0x62, 0xe8, 0x84, 0xc3, + 0x53, 0xfe, 0xd3, 0x05, 0xaf, 0xe4, 0x47, 0xf7, 0xe2, 0x50, 0x55, 0x88, 0xbc, 0xe2, 0x83, 0x8b, + 0xe4, 0x37, 0x76, 0x8a, 0x62, 0xc4, 0xe5, 0x1e, 0xaf, 0x2b, 0x30, 0x92, 0x4c, 0xf2, 0xc1, 0x46, + 0x4b, 0x35, 0x04, 0xac, 0x8f, 0x07, 0xdd, 0xa0, 0xf1, 0x33, 0x4e, 0xbe, 0x53, 0xfb, 0xb9, 0x5c, + 0xc8, 0xa9, 0xb8, 0xce, 0x07, 0x1f, 0xb7, 0x15, 0x8d, 0xc8, 0xda, 0xbe, 0x1b, 0x43, 0x8c, 0xd5, + 0x37, 0xc9, 0xaf, 0xbe, 0x61, 0x59, 0xc6, 0xe5, 0x6e, 0xc9, 0xeb, 0x82, 0x87, 0x3a, 0x5a, 0x34, + 0xd4, 0x32, 0x6b, 0xf7, 0x93, 0x28, 0x63, 0x0c, 0x7f, 0x9d, 0x7c, 0x57, 0x4b, 0x4e, 0xf9, 0x44, + 0x2c, 0x79, 0x39, 0x40, 0xb5, 0x8c, 0x90, 0x78, 0xe4, 0x2d, 0x08, 0xda, 0xde, 0x15, 0xf9, 0x92, + 0x97, 0x12, 0xb7, 0x6d, 0x84, 0x71, 0xdb, 0x0e, 0x32, 0xb6, 0xff, 0x76, 0x2d, 0xf9, 0xfe, 0xce, + 0x64, 0x22, 0x16, 0xb9, 0x3c, 0x14, 0x13, 0x96, 0x1d, 0xa6, 0xf9, 0xd5, 0x31, 0xbf, 0xde, 0xbd, + 0xac, 0xf9, 0x7c, 0xc6, 0x07, 0xcf, 0xc2, 0xa7, 0xaa, 0xd1, 0xa1, 0x65, 0x87, 0x3e, 0x6c, 0x7d, + 0x7f, 0x76, 0x33, 0x25, 0x53, 0x96, 0x7f, 0x5c, 0x4b, 0x6e, 0xc1, 0xb2, 0x8c, 0x44, 0xb6, 0xe4, + 0xae, 0x34, 0x9f, 0x77, 0x18, 0x0e, 0x71, 0x5b, 0x9e, 0x2f, 0x6e, 0xaa, 0x66, 0x4a, 0x94, 0x25, + 0xef, 0xfb, 0xdd, 0x65, 0xc4, 0x2b, 0x35, 0x9c, 0x1e, 0xd2, 0x3d, 0xc2, 0x20, 0xd6, 0xf3, 0xa3, + 0x3e, 0xa8, 0xf1, 0x96, 0x26, 0x03, 0xe3, 0x2d, 0x13, 0x95, 0x75, 0xf6, 0x00, 0xb5, 0xe0, 0x11, + 0xd6, 0xd7, 0xc3, 0x1e, 0xa4, 0x71, 0xf5, 0x47, 0xc9, 0xaf, 0xbd, 0x11, 0xe5, 0x55, 0x55, 0xb0, + 0x09, 0x37, 0x43, 0xe1, 0x7e, 0xa8, 0xdd, 0x48, 0xe1, 0x68, 0x58, 0xef, 0xc2, 0xbc, 0x4e, 0xdb, + 0x08, 0x5f, 0x15, 0x1c, 0xc6, 0x20, 0xa7, 0x58, 0x0b, 0xa9, 0x4e, 0x0b, 0x21, 0x63, 0xfb, 0x2a, + 0x19, 0x38, 0xdb, 0xe7, 0x7f, 0xcc, 0x27, 0x72, 0x67, 0x3a, 0x85, 0xad, 0xe2, 0x74, 0x15, 0x31, + 0xdc, 0x99, 0x4e, 0xa9, 0x56, 0xc1, 0x51, 0xe3, 0xec, 0x3a, 0xf9, 0x00, 0x38, 0x3b, 0x4c, 0x2b, + 0xe5, 0x70, 0x2b, 0x6e, 0xc5, 0x60, 0xd6, 0xe9, 0xb0, 0x2f, 0x6e, 0x1c, 0xff, 0xf9, 0x5a, 0xf2, + 0x3d, 0xc4, 0xf3, 0x29, 0x9f, 0x8b, 0x25, 0x1f, 0x3c, 0xe9, 0xb6, 0xa6, 0x49, 0xeb, 0xff, 0xd3, + 0x1b, 0x68, 0x20, 0xdd, 0x64, 0xc4, 0x33, 0x3e, 0x91, 0x64, 0x37, 0xd1, 0xe2, 0xce, 0x6e, 0x62, + 0x31, 0x6f, 0x84, 0x35, 0xc2, 0x7d, 0x2e, 0x77, 0x17, 0x65, 0xc9, 0x73, 0x49, 0xb6, 0xa5, 0x43, + 0x3a, 0xdb, 0x32, 0x40, 0x91, 0xfa, 0xec, 0x73, 0xb9, 0x93, 0x65, 0x64, 0x7d, 0xb4, 0xb8, 0xb3, + 0x3e, 0x16, 0x33, 0x1e, 0x26, 0xc9, 0xaf, 0x7b, 0x4f, 0x4c, 0x1e, 0xe4, 0x17, 0x62, 0x40, 0x3f, + 0x0b, 0x25, 0xb7, 0x3e, 0x36, 0x3a, 0x39, 0xa4, 0x1a, 0x2f, 0xde, 0x16, 0xa2, 0xa4, 0x9b, 0x45, + 0x8b, 0x3b, 0xab, 0x61, 0x31, 0xe3, 0xe1, 0x0f, 0x93, 0xf7, 0x4c, 0x94, 0x6c, 0xe6, 0xb3, 0x7b, + 0x68, 0x08, 0x85, 0x13, 0xda, 0xfd, 0x0e, 0xaa, 0x65, 0xfe, 0x28, 0x9d, 0x95, 0x75, 0xf4, 0xc1, + 0xcd, 0x1b, 0x69, 0x87, 0x79, 0x47, 0x19, 0xf3, 0x22, 0xf9, 0xcd, 0xd0, 0xfc, 0x2e, 0xcb, 0x27, + 0x3c, 0x1b, 0x3c, 0x8a, 0xa9, 0x6b, 0xc6, 0xba, 0xda, 0xec, 0xc5, 0xba, 0x60, 0x67, 0x08, 0x13, + 0x4c, 0x3f, 0x41, 0xb5, 0x41, 0x28, 0xbd, 0x17, 0x87, 0x5a, 0xb6, 0xf7, 0x78, 0xc6, 0x49, 0xdb, + 0x5a, 0xd8, 0x61, 0xdb, 0x42, 0xc6, 0x76, 0x99, 0xfc, 0x96, 0x6d, 0xe6, 0x3a, 0x2f, 0x50, 0xf2, + 0x7a, 0xd2, 0xd9, 0x24, 0xda, 0xd1, 0x87, 0xac, 0xaf, 0xc7, 0xfd, 0xe0, 0x56, 0x7d, 0x4c, 0x44, + 0xc1, 0xeb, 0x03, 0xe2, 0xc9, 0xbd, 0x38, 0x64, 0x6c, 0xff, 0xdd, 0x5a, 0xf2, 0x03, 0x23, 0x7b, + 0x91, 0xb3, 0xf3, 0x8c, 0xab, 0x29, 0xfe, 0x98, 0xcb, 0x6b, 0x51, 0x5e, 0x8d, 0x56, 0xf9, 0x84, + 0x48, 0x67, 0x70, 0xb8, 0x23, 0x9d, 0x21, 0x95, 0xbc, 0x0c, 0xd6, 0x54, 0x54, 0x8a, 0x02, 0x66, + 0xb0, 0x4d, 0x0d, 0xa4, 0x28, 0xa8, 0x0c, 0x36, 0x44, 0x5a, 0x56, 0x8f, 0xea, 0x69, 0x00, 0xb7, + 0x7a, 0xe4, 0xc7, 0xfd, 0xbb, 0x31, 0xc4, 0x85, 0xe1, 0xa6, 0x03, 0x8b, 0xfc, 0x22, 0x9d, 0x9d, + 0x15, 0xd3, 0xba, 0x1b, 0x3f, 0xc4, 0x7b, 0xa8, 0x87, 0x10, 0x61, 0x98, 0x40, 0x8d, 0xb7, 0x7f, + 0x70, 0x89, 0x9e, 0x09, 0x0d, 0x2f, 0x4b, 0x31, 0x3f, 0xe4, 0x33, 0x36, 0x59, 0x99, 0x78, 0xf6, + 0x59, 0x2c, 0x90, 0x40, 0xda, 0x16, 0xe2, 0xf3, 0x1b, 0x6a, 0x99, 0xf2, 0xfc, 0xfb, 0x5a, 0x72, + 0xaf, 0xa9, 0xfe, 0x25, 0xcb, 0x67, 0xdc, 0xb4, 0xa7, 0x2e, 0xfd, 0x4e, 0x3e, 0x3d, 0xe5, 0x95, + 0x64, 0xa5, 0x1c, 0xfc, 0x08, 0xaf, 0x64, 0x4c, 0xc7, 0x96, 0xed, 0xc7, 0xbf, 0x94, 0xae, 0x6b, + 0xf5, 0x51, 0x1d, 0xa8, 0x4d, 0x08, 0x08, 0x5b, 0x5d, 0x49, 0x60, 0x00, 0xb8, 0x1b, 0x43, 0x5c, + 0xab, 0x2b, 0xc1, 0x41, 0xbe, 0x4c, 0x25, 0xdf, 0xe7, 0x39, 0x2f, 0xdb, 0xad, 0xae, 0x55, 0x43, + 0x84, 0x68, 0x75, 0x02, 0x75, 0xc1, 0x26, 0xf0, 0x66, 0x27, 0xfb, 0xcd, 0x88, 0x91, 0xd6, 0x74, + 0xff, 0xb8, 0x1f, 0xec, 0x56, 0xab, 0x9e, 0xcf, 0x53, 0xbe, 0x14, 0x57, 0x70, 0xb5, 0xea, 0x9b, + 0xd0, 0x00, 0xb1, 0x5a, 0x45, 0x41, 0x37, 0x23, 0x7b, 0x7e, 0x5e, 0xa7, 0xfc, 0x1a, 0xcc, 0xc8, + 0xbe, 0x72, 0x2d, 0x26, 0x66, 0x64, 0x04, 0x33, 0x1e, 0x8e, 0x93, 0x5f, 0x51, 0xc2, 0xdf, 0x17, + 0x69, 0x3e, 0xb8, 0x8d, 0x28, 0xd5, 0x02, 0x6b, 0xf5, 0x0e, 0x0d, 0x80, 0x12, 0xd7, 0xbf, 0x9a, + 0xe9, 0xf1, 0x3e, 0xa1, 0x04, 0x66, 0xc6, 0xf5, 0x2e, 0xcc, 0xa5, 0x42, 0x4a, 0x58, 0xc7, 0xaf, + 0xd1, 0x25, 0x2b, 0xd3, 0x7c, 0x36, 0xc0, 0x74, 0x3d, 0x39, 0x91, 0x0a, 0x61, 0x1c, 0xe8, 0xc2, + 0x46, 0x71, 0xa7, 0x28, 0xca, 0x3a, 0x2c, 0x62, 0x5d, 0x38, 0x44, 0xa2, 0x5d, 0xb8, 0x85, 0xe2, + 0xde, 0xf6, 0xf8, 0x24, 0x4b, 0xf3, 0xa8, 0x37, 0x83, 0xf4, 0xf1, 0xe6, 0x50, 0xd0, 0x79, 0x0f, + 0x39, 0x5b, 0xf2, 0xa6, 0x66, 0xd8, 0x93, 0xf1, 0x81, 0x68, 0xe7, 0x05, 0xa0, 0x5b, 0x77, 0x2a, + 0xf1, 0x11, 0xbb, 0xe2, 0xf5, 0x03, 0xe6, 0xf5, 0xbc, 0x36, 0xc0, 0xf4, 0x03, 0x82, 0x58, 0x77, + 0xe2, 0xa4, 0x71, 0xb5, 0x48, 0x3e, 0x50, 0xf2, 0x13, 0x56, 0xca, 0x74, 0x92, 0x16, 0x2c, 0x6f, + 0xd6, 0x33, 0xd8, 0xb8, 0x6e, 0x51, 0xd6, 0xe5, 0x56, 0x4f, 0xda, 0xb8, 0xfd, 0xb7, 0xb5, 0xe4, + 0x63, 0xe8, 0xf7, 0x84, 0x97, 0xf3, 0x54, 0x2d, 0x8b, 0x2b, 0x1d, 0x84, 0x07, 0x5f, 0xc6, 0x8d, + 0xb6, 0x14, 0x6c, 0x69, 0x7e, 0x78, 0x73, 0x45, 0x97, 0x0c, 0x8d, 0xcc, 0x52, 0xe1, 0x55, 0x39, + 0x6d, 0x6d, 0x1b, 0x8d, 0x9a, 0xfc, 0x5f, 0x09, 0x89, 0x64, 0xa8, 0x05, 0x81, 0x11, 0x7e, 0x96, + 0x57, 0x8d, 0x75, 0x6c, 0x84, 0x3b, 0x71, 0x74, 0x84, 0x07, 0x98, 0x1b, 0xe1, 0x27, 0x8b, 0xf3, + 0x2c, 0xad, 0x2e, 0xd3, 0x7c, 0x66, 0x32, 0xdf, 0x50, 0xd7, 0x89, 0x61, 0xf2, 0xbb, 0xd1, 0xc9, + 0x61, 0x4e, 0x4c, 0x67, 0x21, 0x9d, 0x80, 0x6e, 0xb2, 0xd1, 0xc9, 0xb9, 0x05, 0x89, 0x93, 0xd6, + 0x2b, 0x61, 0xb0, 0x20, 0xf1, 0x54, 0x6b, 0x29, 0xb1, 0x20, 0x69, 0x53, 0x6e, 0x41, 0xe2, 0xd7, + 0xa1, 0x12, 0xd9, 0x92, 0x9f, 0x95, 0x29, 0x58, 0x90, 0x04, 0xe5, 0x6b, 0x18, 0x62, 0x41, 0x42, + 0xb1, 0x2e, 0x50, 0x39, 0x62, 0x9f, 0xcb, 0x91, 0x64, 0x72, 0x51, 0x81, 0x40, 0xe5, 0xd9, 0xb0, + 0x08, 0x11, 0xa8, 0x08, 0xd4, 0x78, 0xfb, 0x83, 0x24, 0xd1, 0x9b, 0x08, 0x6a, 0xa3, 0x27, 0x9c, + 0x7b, 0xcc, 0xee, 0x42, 0xb0, 0xcb, 0xf3, 0x71, 0x84, 0x70, 0x09, 0x8f, 0xfe, 0x5d, 0xed, 0x5f, + 0x0d, 0x50, 0x0d, 0x25, 0x22, 0x12, 0x1e, 0x80, 0xc0, 0x82, 0x8e, 0x2e, 0xc5, 0x35, 0x5e, 0xd0, + 0x5a, 0x12, 0x2f, 0xa8, 0x21, 0xdc, 0x8e, 0xb2, 0x29, 0x28, 0xb6, 0xa3, 0xdc, 0x14, 0x23, 0xb6, + 0xa3, 0x0c, 0x19, 0xd7, 0x67, 0x7c, 0xc3, 0xcf, 0x85, 0xb8, 0x9a, 0xb3, 0xf2, 0x0a, 0xf4, 0x99, + 0x40, 0xb9, 0x61, 0x88, 0x3e, 0x43, 0xb1, 0xae, 0xcf, 0xf8, 0x0e, 0xeb, 0x74, 0xf9, 0xac, 0xcc, + 0x40, 0x9f, 0x09, 0x6c, 0x18, 0x84, 0xe8, 0x33, 0x04, 0xea, 0xa2, 0x93, 0xef, 0x6d, 0xc4, 0xe1, + 0x1e, 0x46, 0xa0, 0x3e, 0xe2, 0xd4, 0x1e, 0x06, 0x82, 0xc1, 0x2e, 0xb4, 0x5f, 0xb2, 0xe2, 0x12, + 0xef, 0x42, 0x4a, 0x14, 0xef, 0x42, 0x0d, 0x02, 0xdb, 0x7b, 0xc4, 0x59, 0x39, 0xb9, 0xc4, 0xdb, + 0x5b, 0xcb, 0xe2, 0xed, 0x6d, 0x19, 0xd8, 0xde, 0x5a, 0xf0, 0x26, 0x95, 0x97, 0x47, 0x5c, 0x32, + 0xbc, 0xbd, 0x43, 0x26, 0xde, 0xde, 0x2d, 0xd6, 0xe5, 0xe3, 0xbe, 0xc3, 0xd1, 0xe2, 0xbc, 0x9a, + 0x94, 0xe9, 0x39, 0x1f, 0x44, 0xac, 0x58, 0x88, 0xc8, 0xc7, 0x49, 0xd8, 0xf8, 0xfc, 0xf9, 0x5a, + 0x72, 0xbb, 0x69, 0x76, 0x51, 0x55, 0x66, 0xee, 0x0b, 0xdd, 0x7f, 0x8e, 0xb7, 0x2f, 0x81, 0x13, + 0x7b, 0xfc, 0x3d, 0xd4, 0xbc, 0xdc, 0x00, 0x2f, 0xd2, 0x59, 0x5e, 0xd9, 0x42, 0x7d, 0xd9, 0xc7, + 0xba, 0xa7, 0x40, 0xe4, 0x06, 0xbd, 0x14, 0x5d, 0x5a, 0x66, 0xda, 0xa7, 0x91, 0x1d, 0x4c, 0x2b, + 0x90, 0x96, 0x35, 0xcf, 0xdb, 0x23, 0x88, 0xb4, 0x0c, 0x27, 0x61, 0x57, 0xd8, 0x2f, 0xc5, 0xa2, + 0xa8, 0x3a, 0xba, 0x02, 0x80, 0xe2, 0x5d, 0xa1, 0x0d, 0x1b, 0x9f, 0x6f, 0x93, 0xdf, 0xf6, 0xbb, + 0x9f, 0xff, 0xb0, 0xb7, 0xe8, 0x3e, 0x85, 0x3d, 0xe2, 0x61, 0x5f, 0xdc, 0x65, 0x14, 0x8d, 0x67, + 0xb9, 0xc7, 0x25, 0x4b, 0xb3, 0x6a, 0xb0, 0x8e, 0xdb, 0x68, 0xe4, 0x44, 0x46, 0x81, 0x71, 0x30, + 0xbe, 0xed, 0x2d, 0x8a, 0x2c, 0x9d, 0xb4, 0xdf, 0xb0, 0x18, 0x5d, 0x2b, 0x8e, 0xc7, 0x37, 0x1f, + 0x83, 0xf1, 0xba, 0x4e, 0xfd, 0xd4, 0x7f, 0xc6, 0xab, 0x82, 0xe3, 0xf1, 0x3a, 0x40, 0xe2, 0xf1, + 0x1a, 0xa2, 0xb0, 0x3e, 0x23, 0x2e, 0x0f, 0xd9, 0x4a, 0x2c, 0x88, 0x78, 0x6d, 0xc5, 0xf1, 0xfa, + 0xf8, 0x98, 0x5b, 0x1b, 0x58, 0x0f, 0x07, 0xb9, 0xe4, 0x65, 0xce, 0xb2, 0x97, 0x19, 0x9b, 0x55, + 0x03, 0x22, 0xc6, 0x84, 0x14, 0xb1, 0x36, 0xa0, 0x69, 0xe4, 0x31, 0x1e, 0x54, 0x2f, 0xd9, 0x52, + 0x94, 0xa9, 0xa4, 0x1f, 0xa3, 0x43, 0x3a, 0x1f, 0x63, 0x80, 0xa2, 0xde, 0x76, 0xca, 0xc9, 0x65, + 0xba, 0xe4, 0xd3, 0x88, 0xb7, 0x06, 0xe9, 0xe1, 0xcd, 0x43, 0x91, 0x46, 0x1b, 0x89, 0x45, 0x39, + 0xe1, 0x64, 0xa3, 0x69, 0x71, 0x67, 0xa3, 0x59, 0xcc, 0x78, 0xf8, 0xab, 0xb5, 0xe4, 0x77, 0xb4, + 0xd4, 0x7f, 0xed, 0xb1, 0xc7, 0xaa, 0xcb, 0x73, 0xc1, 0xca, 0xe9, 0xe0, 0x53, 0xcc, 0x0e, 0x8a, + 0x5a, 0xd7, 0x4f, 0x6f, 0xa2, 0x02, 0x1f, 0x6b, 0x9d, 0x77, 0xbb, 0x11, 0x87, 0x3e, 0xd6, 0x00, + 0x89, 0x3f, 0x56, 0x88, 0xc2, 0x00, 0xa2, 0xe4, 0x7a, 0x4b, 0x6e, 0x9d, 0xd4, 0x0f, 0xf7, 0xe5, + 0x36, 0x3a, 0x39, 0x18, 0x1f, 0x6b, 0x61, 0xd8, 0x5b, 0xb6, 0x28, 0x1b, 0x78, 0x8f, 0x19, 0xf6, + 0xc5, 0x49, 0xcf, 0x76, 0x54, 0xc4, 0x3d, 0xb7, 0x46, 0xc6, 0xb0, 0x2f, 0x4e, 0x78, 0xf6, 0xc2, + 0x5a, 0xcc, 0x33, 0x12, 0xda, 0x86, 0x7d, 0x71, 0x98, 0x7d, 0x19, 0xa6, 0x99, 0x17, 0x1e, 0x45, + 0xec, 0xc0, 0xb9, 0x61, 0xb3, 0x17, 0x6b, 0x1c, 0xfe, 0xcd, 0x5a, 0xf2, 0x7d, 0xe7, 0xf1, 0x48, + 0x4c, 0xd3, 0x8b, 0x95, 0x86, 0x5e, 0xb3, 0x6c, 0xc1, 0xab, 0xc1, 0x53, 0xca, 0x5a, 0x9b, 0xb5, + 0x25, 0x78, 0x76, 0x23, 0x1d, 0x38, 0x76, 0x76, 0x8a, 0x22, 0x5b, 0x8d, 0xf9, 0xbc, 0xc8, 0xc8, + 0xb1, 0x13, 0x20, 0xf1, 0xb1, 0x03, 0x51, 0x98, 0x95, 0x8f, 0x45, 0x9d, 0xf3, 0xa3, 0x59, 0xb9, + 0x12, 0xc5, 0xb3, 0xf2, 0x06, 0x81, 0xb9, 0xd2, 0x58, 0xec, 0x8a, 0x2c, 0xe3, 0x13, 0xd9, 0x3e, + 0x3a, 0x61, 0x35, 0x1d, 0x11, 0xcf, 0x95, 0x00, 0xe9, 0x76, 0xe5, 0x9a, 0x35, 0x24, 0x2b, 0xf9, + 0xf3, 0xd5, 0x61, 0x9a, 0x5f, 0x0d, 0xf0, 0xb4, 0xc0, 0x01, 0xc4, 0xae, 0x1c, 0x0a, 0xc2, 0xb5, + 0xea, 0x59, 0x3e, 0x15, 0xf8, 0x5a, 0xb5, 0x96, 0xc4, 0xd7, 0xaa, 0x86, 0x80, 0x26, 0x4f, 0x39, + 0x65, 0xb2, 0x96, 0xc4, 0x4d, 0x1a, 0x02, 0x0b, 0x85, 0xe6, 0xdd, 0x0d, 0x19, 0x0a, 0xc1, 0xdb, + 0x9a, 0x8d, 0x4e, 0x0e, 0xf6, 0xd0, 0x66, 0xd1, 0xfa, 0x92, 0xcb, 0xc9, 0x25, 0xde, 0x43, 0x03, + 0x24, 0xde, 0x43, 0x21, 0x0a, 0xab, 0x34, 0x16, 0x76, 0xd1, 0xbd, 0x8e, 0xf7, 0x8f, 0xd6, 0x82, + 0x7b, 0xa3, 0x93, 0x83, 0xcb, 0xc8, 0x83, 0xb9, 0x7a, 0x66, 0x68, 0x27, 0xd7, 0xb2, 0xf8, 0x32, + 0xd2, 0x32, 0xb0, 0xf4, 0x5a, 0xa0, 0xf6, 0xb2, 0xd6, 0x69, 0xc5, 0x60, 0x37, 0x6b, 0xa3, 0x93, + 0x33, 0x4e, 0xfe, 0xc5, 0x2e, 0xe3, 0xb4, 0xf4, 0x58, 0xd4, 0x63, 0xe4, 0x35, 0xcb, 0xd2, 0x29, + 0x93, 0x7c, 0x2c, 0xae, 0x78, 0x8e, 0xaf, 0x98, 0x4c, 0x69, 0x35, 0x3f, 0x0c, 0x14, 0xe2, 0x2b, + 0xa6, 0xb8, 0x22, 0xec, 0x27, 0x9a, 0x3e, 0xab, 0xf8, 0x2e, 0xab, 0x88, 0x48, 0x16, 0x20, 0xf1, + 0x7e, 0x02, 0x51, 0x98, 0xaf, 0x6a, 0xf9, 0x8b, 0xb7, 0x05, 0x2f, 0x53, 0x9e, 0x4f, 0x38, 0x9e, + 0xaf, 0x42, 0x2a, 0x9e, 0xaf, 0x22, 0x34, 0x5c, 0xab, 0xed, 0x31, 0xc9, 0x9f, 0xaf, 0xc6, 0xe9, + 0x9c, 0x57, 0x92, 0xcd, 0x0b, 0x7c, 0xad, 0x06, 0xa0, 0xf8, 0x5a, 0xad, 0x0d, 0xb7, 0xb6, 0x86, + 0x6c, 0x40, 0x6c, 0x9f, 0xb8, 0x82, 0x44, 0xe4, 0xc4, 0x15, 0x81, 0xc2, 0x07, 0xeb, 0x00, 0xf4, + 0x25, 0x41, 0xcb, 0x4a, 0xf4, 0x25, 0x01, 0x4d, 0xb7, 0x36, 0xdc, 0x2c, 0x33, 0xaa, 0x87, 0x66, + 0x47, 0xd1, 0x47, 0xfe, 0x10, 0xdd, 0xec, 0xc5, 0xe2, 0x3b, 0x7c, 0xa7, 0x3c, 0x63, 0x6a, 0xda, + 0x8a, 0x6c, 0xa3, 0x35, 0x4c, 0x9f, 0x1d, 0x3e, 0x8f, 0x35, 0x0e, 0xff, 0x62, 0x2d, 0xf9, 0x08, + 0xf3, 0xf8, 0xaa, 0x50, 0x7e, 0x9f, 0x74, 0xdb, 0xd2, 0x24, 0x71, 0xa4, 0x2c, 0xae, 0x61, 0xca, + 0xf0, 0x27, 0xc9, 0x87, 0x8d, 0xc8, 0x9d, 0x38, 0x33, 0x05, 0x08, 0x93, 0x36, 0x5b, 0x7e, 0xc8, + 0x59, 0xf7, 0xdb, 0xbd, 0x79, 0xb7, 0x1e, 0x0a, 0xcb, 0x55, 0x81, 0xf5, 0x90, 0xb5, 0x61, 0xc4, + 0xc4, 0x7a, 0x08, 0xc1, 0xdc, 0xe8, 0xf4, 0xab, 0xf7, 0x26, 0x95, 0x97, 0x2a, 0xdf, 0x02, 0xa3, + 0x33, 0x28, 0xab, 0x85, 0x88, 0xd1, 0x49, 0xc2, 0x30, 0x23, 0x69, 0xc0, 0x7a, 0x6c, 0x62, 0xb1, + 0xdc, 0x1a, 0xf2, 0x47, 0xe6, 0x83, 0x6e, 0x10, 0xf6, 0xd7, 0x46, 0x6c, 0x96, 0x3e, 0x8f, 0x62, + 0x16, 0xc0, 0xf2, 0x67, 0xb3, 0x17, 0x6b, 0x1c, 0xfe, 0x59, 0xf2, 0xbd, 0x56, 0xc5, 0x5e, 0x72, + 0x26, 0x17, 0x25, 0x9f, 0x0e, 0xb6, 0x3b, 0xca, 0xdd, 0x80, 0xd6, 0xf5, 0x93, 0xfe, 0x0a, 0xad, + 0x1c, 0xbd, 0xe1, 0x74, 0xb7, 0xb2, 0x65, 0x78, 0x1a, 0x33, 0x19, 0xb2, 0xd1, 0x1c, 0x9d, 0xd6, + 0x69, 0x2d, 0xb3, 0xfd, 0xde, 0xb5, 0xb3, 0x64, 0x69, 0xa6, 0x5e, 0xd6, 0x7e, 0x1a, 0x33, 0x1a, + 0xa0, 0xd1, 0x65, 0x36, 0xa9, 0xd2, 0x8a, 0xcc, 0x6a, 0x8c, 0x7b, 0xcb, 0xb3, 0xc7, 0x74, 0x24, + 0x40, 0x56, 0x67, 0x5b, 0x3d, 0x69, 0xe3, 0x56, 0x36, 0x53, 0x5e, 0xfd, 0xb3, 0xdf, 0xc9, 0x31, + 0xaf, 0x46, 0x15, 0xe9, 0xe9, 0x5b, 0x3d, 0x69, 0xe3, 0xf5, 0x4f, 0x93, 0x0f, 0xdb, 0x5e, 0xcd, + 0x44, 0xb4, 0xdd, 0x69, 0x0a, 0xcc, 0x45, 0x4f, 0xfa, 0x2b, 0xb8, 0x25, 0xcd, 0x57, 0x69, 0x25, + 0x45, 0xb9, 0x1a, 0x5d, 0x8a, 0xeb, 0xe6, 0x4b, 0x8e, 0x70, 0xb4, 0x1a, 0x60, 0xe8, 0x11, 0xc4, + 0x92, 0x06, 0x27, 0x5b, 0xae, 0xdc, 0x17, 0x1f, 0x15, 0xe1, 0xca, 0x23, 0x3a, 0x5c, 0x85, 0xa4, + 0x8b, 0x55, 0x4d, 0xad, 0xdc, 0xe7, 0x29, 0x1b, 0x78, 0x51, 0xdb, 0x9f, 0xa8, 0x3c, 0xe8, 0x06, + 0x5d, 0xc6, 0x62, 0xc4, 0x7b, 0xe9, 0xc5, 0x85, 0xad, 0x13, 0x5e, 0x52, 0x1f, 0x21, 0x32, 0x16, + 0x02, 0x75, 0x49, 0xf7, 0xcb, 0x34, 0xe3, 0x6a, 0x47, 0xff, 0xd5, 0xc5, 0x45, 0x26, 0xd8, 0x14, + 0x24, 0xdd, 0xb5, 0x78, 0xe8, 0xcb, 0x89, 0xa4, 0x1b, 0xe3, 0xdc, 0x59, 0x81, 0x5a, 0x7a, 0xca, + 0x27, 0x22, 0x9f, 0xa4, 0x19, 0x3c, 0x08, 0xaa, 0x34, 0xad, 0x90, 0x38, 0x2b, 0xd0, 0x82, 0xdc, + 0xc4, 0x58, 0x8b, 0xea, 0x61, 0xdf, 0x94, 0xff, 0x7e, 0x5b, 0xd1, 0x13, 0x13, 0x13, 0x23, 0x82, + 0xb9, 0xb5, 0x67, 0x2d, 0x3c, 0x2b, 0x94, 0xf1, 0x3b, 0x6d, 0x2d, 0x2d, 0x21, 0xd6, 0x9e, 0x21, + 0xe1, 0xd6, 0x50, 0xf5, 0xef, 0x7b, 0xe2, 0x3a, 0x57, 0x46, 0xef, 0xb6, 0x55, 0x1a, 0x19, 0xb1, + 0x86, 0x82, 0x8c, 0x31, 0xfc, 0x93, 0xe4, 0xff, 0x2b, 0xc3, 0xa5, 0x28, 0x06, 0xb7, 0x10, 0x85, + 0xd2, 0x3b, 0xb3, 0x79, 0x9b, 0x94, 0xbb, 0xa3, 0x05, 0xb6, 0x6f, 0x9c, 0x55, 0x6c, 0x06, 0xcf, + 0x3a, 0xbb, 0x16, 0x57, 0x52, 0xe2, 0x68, 0x41, 0x9b, 0x0a, 0x7b, 0xc5, 0xb1, 0x98, 0x1a, 0xeb, + 0x48, 0x0d, 0xad, 0x30, 0xd6, 0x2b, 0x7c, 0xc8, 0x25, 0x33, 0xc7, 0x6c, 0x99, 0xce, 0xec, 0x84, + 0xa3, 0xe3, 0x56, 0x05, 0x92, 0x19, 0xc7, 0x0c, 0x3d, 0x88, 0x48, 0x66, 0x48, 0xd8, 0xf8, 0xfc, + 0xe7, 0xb5, 0xe4, 0x8e, 0x63, 0xf6, 0x9b, 0xdd, 0xba, 0x83, 0xfc, 0x42, 0xd4, 0xa9, 0xcf, 0x61, + 0x9a, 0x5f, 0x55, 0x83, 0x2f, 0x28, 0x93, 0x38, 0x6f, 0x8b, 0xf2, 0xe5, 0x8d, 0xf5, 0x5c, 0xd6, + 0xda, 0x6c, 0x65, 0xb9, 0xf7, 0xd9, 0x5a, 0x03, 0x64, 0xad, 0x76, 0xc7, 0x0b, 0x72, 0x44, 0xd6, + 0x1a, 0xe3, 0x5d, 0x13, 0x5b, 0xe7, 0x99, 0xc8, 0x61, 0x13, 0x3b, 0x0b, 0xb5, 0x90, 0x68, 0xe2, + 0x16, 0xe4, 0xe2, 0x71, 0x23, 0xd2, 0xbb, 0x2e, 0x3b, 0x59, 0x06, 0xe2, 0xb1, 0x55, 0xb5, 0x00, + 0x11, 0x8f, 0x51, 0xd0, 0xf8, 0x39, 0x4d, 0xbe, 0x53, 0x3f, 0xd2, 0x93, 0x92, 0x2f, 0x53, 0x0e, + 0x8f, 0x5e, 0x78, 0x12, 0x62, 0xfc, 0x87, 0x84, 0x1b, 0x59, 0x67, 0x79, 0x55, 0x64, 0xac, 0xba, + 0x34, 0x2f, 0xe3, 0xc3, 0x3a, 0x37, 0x42, 0xf8, 0x3a, 0xfe, 0x7e, 0x07, 0xe5, 0x82, 0x7a, 0x23, + 0xb3, 0x21, 0x66, 0x1d, 0x57, 0x6d, 0x85, 0x99, 0x8d, 0x4e, 0xce, 0xed, 0x78, 0xef, 0xb3, 0x2c, + 0xe3, 0xe5, 0xaa, 0x91, 0x1d, 0xb1, 0x3c, 0xbd, 0xe0, 0x95, 0x04, 0x3b, 0xde, 0x86, 0x1a, 0x42, + 0x8c, 0xd8, 0xf1, 0x8e, 0xe0, 0x2e, 0x9b, 0x07, 0x9e, 0x0f, 0xf2, 0x29, 0x7f, 0x0b, 0xb2, 0x79, + 0x68, 0x47, 0x31, 0x44, 0x36, 0x4f, 0xb1, 0x6e, 0xe7, 0xf7, 0x79, 0x26, 0x26, 0x57, 0x66, 0x0a, + 0x08, 0x1b, 0x58, 0x49, 0xe0, 0x1c, 0x70, 0x37, 0x86, 0xb8, 0x49, 0x40, 0x09, 0x4e, 0x79, 0x91, + 0xb1, 0x09, 0x3c, 0x7f, 0xa3, 0x75, 0x8c, 0x8c, 0x98, 0x04, 0x20, 0x03, 0x8a, 0x6b, 0xce, 0xf5, + 0x60, 0xc5, 0x05, 0xc7, 0x7a, 0xee, 0xc6, 0x10, 0x37, 0x0d, 0x2a, 0xc1, 0xa8, 0xc8, 0x52, 0x09, + 0x86, 0x81, 0xd6, 0x50, 0x12, 0x62, 0x18, 0x84, 0x04, 0x30, 0x79, 0xc4, 0xcb, 0x19, 0x47, 0x4d, + 0x2a, 0x49, 0xd4, 0x64, 0x43, 0xb8, 0xc3, 0xc6, 0xba, 0xee, 0xa2, 0x58, 0x81, 0xc3, 0xc6, 0xa6, + 0x5a, 0xa2, 0x58, 0x11, 0x87, 0x8d, 0x03, 0x00, 0x14, 0xf1, 0x84, 0x55, 0x12, 0x2f, 0xa2, 0x92, + 0x44, 0x8b, 0xd8, 0x10, 0x6e, 0x8e, 0xd6, 0x45, 0x5c, 0x48, 0x30, 0x47, 0x9b, 0x02, 0x78, 0x6f, + 0xa0, 0x6f, 0x93, 0x72, 0x17, 0x49, 0x74, 0xab, 0x70, 0xf9, 0x32, 0xe5, 0xd9, 0xb4, 0x02, 0x91, + 0xc4, 0x3c, 0xf7, 0x46, 0x4a, 0x44, 0x92, 0x36, 0x05, 0xba, 0x92, 0xd9, 0x1f, 0xc7, 0x6a, 0x07, + 0xb6, 0xc6, 0xef, 0xc6, 0x10, 0x17, 0x9f, 0x9a, 0x42, 0xef, 0xb2, 0xb2, 0x4c, 0xeb, 0xc9, 0x7f, + 0x1d, 0x2f, 0x50, 0x23, 0x27, 0xe2, 0x13, 0xc6, 0x81, 0xe1, 0xd5, 0x04, 0x6e, 0xac, 0x60, 0x30, + 0x74, 0x7f, 0x12, 0x65, 0x5c, 0xc6, 0xa9, 0x24, 0xde, 0x2b, 0x54, 0xec, 0x69, 0x22, 0x6f, 0x50, + 0xd7, 0xbb, 0x30, 0xef, 0x63, 0x20, 0xeb, 0xe2, 0x48, 0x2c, 0xf9, 0x58, 0xbc, 0x78, 0x9b, 0x56, + 0x32, 0xcd, 0x67, 0x66, 0xe6, 0x7e, 0x46, 0x58, 0xc2, 0x60, 0xe2, 0x63, 0xa0, 0x4e, 0x25, 0x97, + 0x40, 0x80, 0xb2, 0x1c, 0xf3, 0x6b, 0x34, 0x81, 0x80, 0x16, 0x2d, 0x47, 0x24, 0x10, 0x31, 0xde, + 0xed, 0xa3, 0x58, 0xe7, 0xe6, 0x0b, 0xf0, 0xb1, 0x68, 0x72, 0x39, 0xca, 0x1a, 0x04, 0x89, 0xa5, + 0x6c, 0x54, 0xc1, 0xad, 0x2f, 0xad, 0x7f, 0x37, 0xc4, 0x1e, 0x10, 0x76, 0xda, 0xc3, 0xec, 0x61, + 0x0f, 0x12, 0x71, 0xe5, 0xce, 0x01, 0x50, 0xae, 0xda, 0xc7, 0x00, 0x1e, 0xf6, 0x20, 0xbd, 0x3d, + 0x19, 0xbf, 0x5a, 0xcf, 0xd9, 0xe4, 0x6a, 0x56, 0x8a, 0x45, 0x3e, 0xdd, 0x15, 0x99, 0x28, 0xc1, + 0x9e, 0x4c, 0x50, 0x6a, 0x80, 0x12, 0x7b, 0x32, 0x1d, 0x2a, 0x2e, 0x83, 0xf3, 0x4b, 0xb1, 0x93, + 0xa5, 0x33, 0xb8, 0xa2, 0x0e, 0x0c, 0x29, 0x80, 0xc8, 0xe0, 0x50, 0x10, 0xe9, 0x44, 0x7a, 0xc5, + 0x2d, 0xd3, 0x09, 0xcb, 0xb4, 0xbf, 0x6d, 0xda, 0x4c, 0x00, 0x76, 0x76, 0x22, 0x44, 0x01, 0xa9, + 0xe7, 0x78, 0x51, 0xe6, 0x07, 0xb9, 0x14, 0x64, 0x3d, 0x1b, 0xa0, 0xb3, 0x9e, 0x1e, 0x08, 0xc2, + 0xea, 0x98, 0xbf, 0xad, 0x4b, 0x53, 0xff, 0x83, 0x85, 0xd5, 0xfa, 0xf7, 0xa1, 0x91, 0xc7, 0xc2, + 0x2a, 0xe0, 0x40, 0x65, 0x8c, 0x13, 0xdd, 0x61, 0x22, 0xda, 0x61, 0x37, 0x79, 0xd0, 0x0d, 0xe2, + 0x7e, 0x46, 0x72, 0x95, 0xf1, 0x98, 0x1f, 0x05, 0xf4, 0xf1, 0xd3, 0x80, 0x6e, 0xbb, 0x25, 0xa8, + 0xcf, 0x25, 0x9f, 0x5c, 0xb5, 0x8e, 0x35, 0x85, 0x05, 0xd5, 0x08, 0xb1, 0xdd, 0x42, 0xa0, 0x78, + 0x13, 0x1d, 0x4c, 0x44, 0x1e, 0x6b, 0xa2, 0x5a, 0xde, 0xa7, 0x89, 0x0c, 0xe7, 0x16, 0xbf, 0x56, + 0x6a, 0x7a, 0xa6, 0x6e, 0xa6, 0x4d, 0xc2, 0x82, 0x0f, 0x11, 0x8b, 0x5f, 0x12, 0x76, 0x39, 0x39, + 0xf4, 0x79, 0xd4, 0x3e, 0xf3, 0xdd, 0xb2, 0x72, 0x44, 0x9f, 0xf9, 0xa6, 0x58, 0xba, 0x92, 0xba, + 0x8f, 0x74, 0x58, 0x09, 0xfb, 0xc9, 0xe3, 0x7e, 0xb0, 0x5b, 0xf2, 0x04, 0x3e, 0x77, 0x33, 0xce, + 0x4a, 0xed, 0x75, 0x2b, 0x62, 0xc8, 0x61, 0xc4, 0x92, 0x27, 0x82, 0x83, 0x10, 0x16, 0x78, 0xde, + 0x15, 0xb9, 0xe4, 0xb9, 0xc4, 0x42, 0x58, 0x68, 0xcc, 0x80, 0xb1, 0x10, 0x46, 0x29, 0x80, 0x7e, + 0xab, 0xf6, 0x83, 0xb8, 0x3c, 0x66, 0x73, 0x34, 0x63, 0xd3, 0x7b, 0x3d, 0x5a, 0x1e, 0xeb, 0xb7, + 0x80, 0xf3, 0x5e, 0xf2, 0xf9, 0x5e, 0xc6, 0xac, 0x9c, 0xd9, 0xdd, 0x8d, 0xe9, 0xe0, 0x09, 0x6d, + 0x27, 0x24, 0x89, 0x97, 0x7c, 0x71, 0x0d, 0x10, 0x76, 0x0e, 0xe6, 0x6c, 0x66, 0x6b, 0x8a, 0xd4, + 0x40, 0xc9, 0x5b, 0x55, 0x7d, 0xd0, 0x0d, 0x02, 0x3f, 0xaf, 0xd3, 0x29, 0x17, 0x11, 0x3f, 0x4a, + 0xde, 0xc7, 0x0f, 0x04, 0x41, 0xf6, 0x56, 0xd7, 0x5b, 0xaf, 0xe8, 0x76, 0xf2, 0xa9, 0x59, 0xc7, + 0x0e, 0x89, 0xc7, 0x03, 0xb8, 0x58, 0xf6, 0x46, 0xf0, 0x60, 0x8c, 0x36, 0x1b, 0xb4, 0xb1, 0x31, + 0x6a, 0xf7, 0x5f, 0xfb, 0x8c, 0x51, 0x0c, 0x36, 0x3e, 0x7f, 0x66, 0xc6, 0xe8, 0x1e, 0x93, 0xac, + 0xce, 0xdb, 0x5f, 0xa7, 0xfc, 0xda, 0x2c, 0x84, 0x91, 0xfa, 0x36, 0xd4, 0x50, 0x7d, 0xb2, 0x0a, + 0x56, 0xc5, 0xdb, 0xbd, 0xf9, 0x88, 0x6f, 0xb3, 0x42, 0xe8, 0xf4, 0x0d, 0x96, 0x0a, 0xdb, 0xbd, + 0xf9, 0x88, 0x6f, 0xf3, 0x2d, 0x7c, 0xa7, 0x6f, 0xf0, 0x41, 0xfc, 0x76, 0x6f, 0xde, 0xf8, 0xfe, + 0xcb, 0x66, 0xe0, 0xfa, 0xce, 0xeb, 0x3c, 0x6c, 0x22, 0xd3, 0x25, 0xc7, 0xd2, 0xc9, 0xd0, 0x9e, + 0x45, 0x63, 0xe9, 0x24, 0xad, 0xe2, 0x5d, 0x08, 0x85, 0x95, 0xe2, 0x44, 0x54, 0xa9, 0x7a, 0x49, + 0xff, 0xac, 0x87, 0xd1, 0x06, 0x8e, 0x2d, 0x9a, 0x62, 0x4a, 0xee, 0x75, 0x63, 0x80, 0xba, 0x53, + 0xcc, 0x8f, 0x23, 0xf6, 0xda, 0x87, 0x99, 0xb7, 0x7a, 0xd2, 0xee, 0xc5, 0x5f, 0xc0, 0xf8, 0x6f, + 0x1c, 0x63, 0xad, 0x8a, 0xbe, 0x74, 0x7c, 0xd2, 0x5f, 0xc1, 0xb8, 0xff, 0xeb, 0x66, 0x5d, 0x01, + 0xfd, 0x9b, 0x41, 0xf0, 0xb4, 0x8f, 0x45, 0x30, 0x10, 0x9e, 0xdd, 0x48, 0xc7, 0x14, 0xe4, 0xef, + 0x9b, 0x05, 0x74, 0x83, 0xaa, 0x6f, 0x39, 0xd4, 0x37, 0xa0, 0x66, 0x4c, 0xc4, 0x9a, 0xd5, 0xc1, + 0x70, 0x64, 0x7c, 0x7e, 0x43, 0x2d, 0xef, 0x7a, 0xb0, 0x00, 0x36, 0xdf, 0x1c, 0x7a, 0xe5, 0x89, + 0x59, 0xf6, 0x68, 0x58, 0xa0, 0x2f, 0x6e, 0xaa, 0x46, 0x8d, 0x15, 0x0f, 0x56, 0xb7, 0x73, 0x3c, + 0xeb, 0x69, 0x38, 0xb8, 0xaf, 0xe3, 0xb3, 0x9b, 0x29, 0x99, 0xb2, 0xfc, 0xc7, 0x5a, 0x72, 0x3f, + 0x60, 0xdd, 0xfb, 0x04, 0xb0, 0xeb, 0xf1, 0xe3, 0x88, 0x7d, 0x4a, 0xc9, 0x16, 0xee, 0x77, 0x7f, + 0x39, 0x65, 0x77, 0x97, 0x56, 0xa0, 0xf2, 0x32, 0xcd, 0x24, 0x2f, 0xdb, 0x77, 0x69, 0x85, 0x76, + 0x35, 0x35, 0xa4, 0xef, 0xd2, 0x8a, 0xe0, 0xde, 0x5d, 0x5a, 0x88, 0x67, 0xf4, 0x2e, 0x2d, 0xd4, + 0x5a, 0xf4, 0x2e, 0xad, 0xb8, 0x06, 0x15, 0xde, 0x9b, 0x22, 0xe8, 0x7d, 0xeb, 0x5e, 0x16, 0xc3, + 0x6d, 0xec, 0xa7, 0x37, 0x51, 0x21, 0x26, 0x38, 0xcd, 0xa9, 0x73, 0x6e, 0x3d, 0x9e, 0x69, 0x70, + 0xd6, 0x6d, 0xbb, 0x37, 0x6f, 0x7c, 0xff, 0xd4, 0xac, 0x6e, 0x6c, 0x38, 0x17, 0xa5, 0xba, 0x47, + 0x6d, 0x33, 0x16, 0x9e, 0x6b, 0x0b, 0x7e, 0xcb, 0x3f, 0xee, 0x07, 0x13, 0xd5, 0xad, 0x09, 0xd3, + 0xe8, 0xc3, 0x2e, 0x43, 0xa0, 0xc9, 0xb7, 0x7b, 0xf3, 0xc4, 0x34, 0xa2, 0x7d, 0xeb, 0xd6, 0xee, + 0x61, 0x2c, 0x6c, 0xeb, 0x27, 0xfd, 0x15, 0x8c, 0xfb, 0xa5, 0x49, 0x1b, 0x7d, 0xf7, 0xaa, 0x9d, + 0xb7, 0xba, 0x4c, 0x8d, 0x82, 0x66, 0x1e, 0xf6, 0xc5, 0x63, 0x09, 0x84, 0x3f, 0x85, 0x76, 0x25, + 0x10, 0xe8, 0x34, 0xfa, 0xd9, 0xcd, 0x94, 0x4c, 0x59, 0xfe, 0x69, 0x2d, 0xb9, 0x4d, 0x96, 0xc5, + 0xf4, 0x83, 0x2f, 0xfa, 0x5a, 0x06, 0xfd, 0xe1, 0xcb, 0x1b, 0xeb, 0x99, 0x42, 0xfd, 0xeb, 0x5a, + 0x72, 0x27, 0x52, 0x28, 0xdd, 0x41, 0x6e, 0x60, 0x3d, 0xec, 0x28, 0x3f, 0xbc, 0xb9, 0x22, 0x35, + 0xdd, 0xfb, 0xf8, 0xa8, 0x7d, 0x29, 0x53, 0xc4, 0xf6, 0x88, 0xbe, 0x94, 0xa9, 0x5b, 0x0b, 0x6e, + 0xf2, 0xb0, 0xf3, 0x66, 0xd1, 0x85, 0x6e, 0xf2, 0xa8, 0x13, 0x6a, 0xd1, 0xcb, 0x25, 0x30, 0x0e, + 0x73, 0xf2, 0xe2, 0x6d, 0xc1, 0xf2, 0x29, 0xed, 0x44, 0xcb, 0xbb, 0x9d, 0x58, 0x0e, 0x6e, 0x8e, + 0xd5, 0xd2, 0x53, 0xd1, 0x2c, 0xa4, 0x1e, 0x52, 0xfa, 0x16, 0x89, 0x6e, 0x8e, 0xb5, 0x50, 0xc2, + 0x9b, 0xc9, 0x1a, 0x63, 0xde, 0x40, 0xb2, 0xf8, 0xa8, 0x0f, 0x0a, 0x52, 0x74, 0xeb, 0xcd, 0xee, + 0xb9, 0x3f, 0x8e, 0x59, 0x69, 0xed, 0xbb, 0x6f, 0xf5, 0xa4, 0x09, 0xb7, 0x23, 0x2e, 0xbf, 0xe2, + 0x6c, 0xca, 0xcb, 0xa8, 0x5b, 0x4b, 0xf5, 0x72, 0xeb, 0xd3, 0x98, 0xdb, 0x5d, 0x91, 0x2d, 0xe6, + 0xb9, 0x69, 0x4c, 0xd2, 0xad, 0x4f, 0x75, 0xbb, 0x05, 0x34, 0xdc, 0x16, 0x74, 0x6e, 0x55, 0x7a, + 0xf9, 0x28, 0x6e, 0x26, 0xc8, 0x2a, 0x37, 0x7b, 0xb1, 0x74, 0x3d, 0x4d, 0x37, 0xea, 0xa8, 0x27, + 0xe8, 0x49, 0x5b, 0x3d, 0x69, 0xb8, 0x3f, 0xe7, 0xb9, 0xb5, 0xfd, 0x69, 0xbb, 0xc3, 0x56, 0xab, + 0x4b, 0x3d, 0xe9, 0xaf, 0x00, 0x77, 0x43, 0x4d, 0xaf, 0x3a, 0x4c, 0x2b, 0xf9, 0x32, 0xcd, 0xb2, + 0xc1, 0x66, 0xa4, 0x9b, 0x34, 0x50, 0x74, 0x37, 0x14, 0x81, 0x89, 0x9e, 0xdc, 0xec, 0x1e, 0xe6, + 0x83, 0x2e, 0x3b, 0x8a, 0xea, 0xd5, 0x93, 0x7d, 0x1a, 0xec, 0x68, 0x79, 0x8f, 0xda, 0xd6, 0x76, + 0x18, 0x7f, 0x70, 0xad, 0x0a, 0x6f, 0xf7, 0xe6, 0xc1, 0xeb, 0x76, 0x45, 0xa9, 0x99, 0xe5, 0x1e, + 0x65, 0x22, 0x98, 0x49, 0xee, 0x77, 0x50, 0x60, 0x57, 0x50, 0x0f, 0xa3, 0x37, 0xe9, 0x74, 0xc6, + 0x25, 0xfa, 0xa6, 0xc8, 0x07, 0xa2, 0x6f, 0x8a, 0x00, 0x08, 0x9a, 0x4e, 0xff, 0x6e, 0xb7, 0x43, + 0x0f, 0xa6, 0x58, 0xd3, 0x19, 0x65, 0x8f, 0x8a, 0x35, 0x1d, 0x4a, 0x83, 0x68, 0x60, 0xdd, 0x9a, + 0xcf, 0xf1, 0x1f, 0xc5, 0xcc, 0x80, 0x6f, 0xf2, 0x37, 0x7b, 0xb1, 0x60, 0x46, 0x71, 0x0e, 0xd3, + 0x79, 0x2a, 0xb1, 0x19, 0xc5, 0xb3, 0x51, 0x23, 0xb1, 0x19, 0xa5, 0x8d, 0x52, 0xd5, 0xab, 0x73, + 0x84, 0x83, 0x69, 0xbc, 0x7a, 0x9a, 0xe9, 0x57, 0x3d, 0xcb, 0xb6, 0x5e, 0x6c, 0xe6, 0xb6, 0xcb, + 0xc8, 0x4b, 0xb3, 0x58, 0x46, 0xfa, 0xb6, 0xfa, 0x4c, 0x13, 0x82, 0xb1, 0xa8, 0x43, 0x29, 0xc0, + 0x0d, 0xfb, 0x9a, 0x6b, 0xde, 0xbd, 0x16, 0x05, 0x67, 0x25, 0xcb, 0x27, 0xe8, 0xe2, 0x54, 0x19, + 0x6c, 0x91, 0xb1, 0xc5, 0x29, 0xa9, 0x01, 0x5e, 0x9b, 0x87, 0x1f, 0x58, 0x22, 0x43, 0xc1, 0x7e, + 0xc9, 0x18, 0x7e, 0x5f, 0xf9, 0xb0, 0x07, 0x09, 0x5f, 0x9b, 0x37, 0x80, 0xdd, 0xf8, 0xd6, 0x4e, + 0x3f, 0x8d, 0x98, 0x0a, 0xd1, 0xd8, 0x42, 0x98, 0x56, 0x01, 0x9d, 0xda, 0x26, 0xb8, 0x5c, 0xfe, + 0x84, 0xaf, 0xb0, 0x4e, 0xed, 0xf2, 0x53, 0x85, 0xc4, 0x3a, 0x75, 0x1b, 0x05, 0x79, 0xa6, 0xbf, + 0x0e, 0x5a, 0x8f, 0xe8, 0xfb, 0x4b, 0x9f, 0x8d, 0x4e, 0x0e, 0x8c, 0x9c, 0xbd, 0x74, 0x19, 0xbc, + 0x27, 0x40, 0x0a, 0xba, 0x97, 0x2e, 0xf1, 0xd7, 0x04, 0x9b, 0xbd, 0x58, 0xf8, 0x4a, 0x9e, 0x49, + 0xfe, 0xb6, 0x79, 0x57, 0x8e, 0x14, 0x57, 0xc9, 0x5b, 0x2f, 0xcb, 0x1f, 0x74, 0x83, 0xee, 0x00, + 0xec, 0x49, 0x29, 0x26, 0xbc, 0xaa, 0xcc, 0x4d, 0x95, 0xe1, 0x09, 0x23, 0x23, 0x1b, 0x82, 0x7b, + 0x2a, 0xef, 0xc5, 0x21, 0xef, 0x7a, 0x39, 0x2d, 0x72, 0xb7, 0xde, 0xac, 0xa3, 0x9a, 0xed, 0x0b, + 0x6f, 0x36, 0x3a, 0x39, 0x37, 0xbc, 0x8c, 0xd4, 0xbf, 0xe6, 0xe6, 0x01, 0xaa, 0x8e, 0xdd, 0x70, + 0xf3, 0xb0, 0x07, 0x69, 0x5c, 0x7d, 0x95, 0xbc, 0x7b, 0x28, 0x66, 0x23, 0x9e, 0x4f, 0x07, 0x3f, + 0x08, 0x8f, 0xd0, 0x8a, 0xd9, 0xb0, 0xfe, 0xd9, 0x1a, 0xbd, 0x45, 0x89, 0xdd, 0x21, 0xc0, 0x3d, + 0x7e, 0xbe, 0x98, 0x8d, 0x24, 0x93, 0xe0, 0x10, 0xa0, 0xfa, 0x7d, 0x58, 0x0b, 0x88, 0x43, 0x80, + 0x01, 0x00, 0xec, 0x8d, 0x4b, 0xce, 0x51, 0x7b, 0xb5, 0x20, 0x6a, 0xcf, 0x00, 0x2e, 0x8b, 0xb0, + 0xf6, 0xea, 0x44, 0x1d, 0x1e, 0xda, 0x73, 0x3a, 0x4a, 0x4a, 0x64, 0x11, 0x6d, 0xca, 0x75, 0x6e, + 0x5d, 0x7d, 0x75, 0xeb, 0xc8, 0x62, 0x3e, 0x67, 0xe5, 0x0a, 0x74, 0x6e, 0x53, 0x4b, 0x0f, 0x20, + 0x3a, 0x37, 0x0a, 0xba, 0x51, 0xdb, 0x3c, 0xe6, 0xc9, 0xd5, 0xbe, 0x28, 0xc5, 0x42, 0xa6, 0x39, + 0x87, 0x37, 0x4f, 0xd8, 0x07, 0xea, 0x33, 0xc4, 0xa8, 0xa5, 0x58, 0x97, 0xe5, 0x2a, 0x42, 0x9f, + 0x27, 0x54, 0xf7, 0x57, 0x57, 0x52, 0x94, 0xf0, 0x7d, 0xa2, 0xb6, 0x02, 0x21, 0x22, 0xcb, 0x25, + 0x61, 0xd0, 0xf6, 0x27, 0x69, 0x3e, 0x43, 0xdb, 0xfe, 0xc4, 0xbf, 0xfd, 0xf5, 0x0e, 0x0d, 0xb8, + 0x01, 0xa5, 0x1f, 0x9a, 0x1e, 0x00, 0xe6, 0x5b, 0x4e, 0xf4, 0xa1, 0xfb, 0x04, 0x31, 0xa0, 0x70, + 0x12, 0xb8, 0x7a, 0x55, 0xf0, 0x9c, 0x4f, 0x9b, 0x53, 0x73, 0x98, 0xab, 0x80, 0x88, 0xba, 0x82, + 0xa4, 0x8b, 0x45, 0x4a, 0x7e, 0xba, 0xc8, 0x4f, 0x4a, 0x71, 0x91, 0x66, 0xbc, 0x04, 0xb1, 0x48, + 0xab, 0x7b, 0x72, 0x22, 0x16, 0x61, 0x9c, 0x3b, 0x7e, 0xa1, 0xa4, 0xc1, 0x25, 0xec, 0xe3, 0x92, + 0x4d, 0xe0, 0xf1, 0x0b, 0x6d, 0xa3, 0x8d, 0x11, 0x3b, 0x83, 0x11, 0xdc, 0x4b, 0x74, 0xb4, 0xeb, + 0x7c, 0xa5, 0xfa, 0x87, 0xf9, 0x96, 0x50, 0xdd, 0x89, 0x5a, 0x81, 0x44, 0xc7, 0x98, 0xc3, 0x48, + 0x22, 0xd1, 0x89, 0x6b, 0xb8, 0xa9, 0x44, 0x71, 0xc7, 0xe6, 0x58, 0x11, 0x98, 0x4a, 0xb4, 0x8d, + 0x46, 0x48, 0x4c, 0x25, 0x2d, 0x08, 0x04, 0xa4, 0x66, 0x18, 0xcc, 0xd0, 0x80, 0x64, 0xa5, 0xd1, + 0x80, 0xe4, 0x53, 0x2e, 0x50, 0x1c, 0xe4, 0xa9, 0x4c, 0x59, 0x36, 0xe2, 0xf2, 0x84, 0x95, 0x6c, + 0xce, 0x25, 0x2f, 0x61, 0xa0, 0x30, 0xc8, 0x30, 0x60, 0x88, 0x40, 0x41, 0xb1, 0xc6, 0xe1, 0xef, + 0x25, 0xef, 0xd7, 0xf3, 0x3e, 0xcf, 0xcd, 0x9f, 0x8f, 0x79, 0xa1, 0xfe, 0xee, 0xd4, 0xe0, 0x03, + 0x6b, 0x63, 0x24, 0x4b, 0xce, 0xe6, 0x8d, 0xed, 0xf7, 0xec, 0xef, 0x0a, 0x7c, 0xb2, 0x56, 0xf7, + 0xe7, 0x63, 0x21, 0xd3, 0x8b, 0x7a, 0x99, 0x6d, 0xbe, 0x20, 0x02, 0xfd, 0xd9, 0x17, 0x0f, 0x23, + 0x77, 0x51, 0x60, 0x9c, 0x8b, 0xd3, 0xbe, 0xf4, 0x94, 0x17, 0x19, 0x8c, 0xd3, 0x81, 0xb6, 0x02, + 0x88, 0x38, 0x8d, 0x82, 0x6e, 0x70, 0xfa, 0xe2, 0x31, 0x8f, 0x57, 0x66, 0xcc, 0xfb, 0x55, 0x66, + 0x1c, 0x7c, 0x94, 0x91, 0x25, 0xef, 0x1f, 0xf1, 0xf9, 0x39, 0x2f, 0xab, 0xcb, 0xb4, 0xa0, 0xee, + 0x6d, 0x75, 0x44, 0xe7, 0xbd, 0xad, 0x04, 0xea, 0x66, 0x02, 0x07, 0x1c, 0x54, 0xc7, 0x6c, 0xce, + 0xd5, 0xcd, 0x1a, 0x60, 0x26, 0xf0, 0x8c, 0x78, 0x10, 0x31, 0x13, 0x90, 0xb0, 0xf7, 0x7d, 0x97, + 0x63, 0x4e, 0xf9, 0xac, 0xee, 0x61, 0xe5, 0x09, 0x5b, 0xcd, 0x79, 0x2e, 0x8d, 0x49, 0xb0, 0x27, + 0xef, 0x99, 0xc4, 0x79, 0x62, 0x4f, 0xbe, 0x8f, 0x9e, 0x17, 0x9a, 0x82, 0x07, 0x7f, 0x22, 0x4a, + 0xa9, 0xff, 0x38, 0xd4, 0x59, 0x99, 0x81, 0xd0, 0x14, 0x3e, 0xd4, 0x80, 0x24, 0x42, 0x53, 0x5c, + 0xc3, 0xfb, 0x2b, 0x04, 0x41, 0x19, 0x5e, 0xf3, 0xd2, 0xf6, 0x93, 0x17, 0x73, 0x96, 0x66, 0xa6, + 0x37, 0xfc, 0x28, 0x62, 0x9b, 0xd0, 0x21, 0xfe, 0x0a, 0x41, 0x5f, 0x5d, 0xef, 0xef, 0x36, 0xc4, + 0x4b, 0x08, 0x5e, 0x11, 0x74, 0xd8, 0x27, 0x5e, 0x11, 0x74, 0x6b, 0xb9, 0x95, 0xbb, 0x63, 0x15, + 0xb7, 0x52, 0xc4, 0xae, 0x98, 0xc2, 0xfd, 0x42, 0xcf, 0x26, 0x00, 0x89, 0x95, 0x7b, 0x54, 0xc1, + 0xa5, 0x06, 0x0e, 0x7b, 0x99, 0xe6, 0x2c, 0x4b, 0x7f, 0x06, 0xd3, 0x7a, 0xcf, 0x4e, 0x43, 0x10, + 0xa9, 0x01, 0x4e, 0x62, 0xae, 0xf6, 0xb9, 0x1c, 0xa7, 0x75, 0xe8, 0x7f, 0x10, 0x79, 0x6e, 0x8a, + 0xe8, 0x76, 0xe5, 0x91, 0xde, 0x1d, 0xad, 0xf0, 0xb1, 0xee, 0x14, 0xc5, 0xa8, 0x9e, 0x55, 0x4f, + 0xf9, 0x84, 0xa7, 0x85, 0x1c, 0x7c, 0x1e, 0x7f, 0x56, 0x00, 0x27, 0x0e, 0x5a, 0xf4, 0x50, 0xf3, + 0x5e, 0xdf, 0xd7, 0xb1, 0x64, 0xa4, 0xff, 0x6a, 0xe2, 0x59, 0xc5, 0x4b, 0x93, 0x68, 0xec, 0x73, + 0x09, 0x46, 0xa7, 0xc7, 0x0d, 0x3d, 0xb0, 0xae, 0x28, 0x31, 0x3a, 0xe3, 0x1a, 0x6e, 0xb3, 0xcf, + 0xe3, 0xcc, 0x9d, 0xdb, 0xea, 0xbc, 0xe1, 0x63, 0xd2, 0x98, 0x47, 0x11, 0x9b, 0x7d, 0x34, 0xed, + 0xb2, 0xb5, 0xb6, 0xdb, 0x9d, 0x7c, 0x75, 0x00, 0x8f, 0x4c, 0x20, 0x96, 0x14, 0x46, 0x64, 0x6b, + 0x11, 0xdc, 0xdb, 0x0c, 0x2f, 0x05, 0x9b, 0x4e, 0x58, 0x25, 0x4f, 0xd8, 0x2a, 0x13, 0x6c, 0xaa, + 0xe6, 0x75, 0xb8, 0x19, 0xde, 0x30, 0x43, 0x1f, 0xa2, 0x36, 0xc3, 0x29, 0xd8, 0xcf, 0xce, 0xd4, + 0x1f, 0x83, 0x34, 0x67, 0x39, 0x61, 0x76, 0xa6, 0xca, 0x0b, 0xcf, 0x71, 0xde, 0x8b, 0x43, 0xee, + 0x1b, 0x34, 0x2d, 0x52, 0x69, 0xc8, 0x1d, 0x4c, 0x27, 0x48, 0x40, 0x3e, 0x8e, 0x10, 0xee, 0x5e, + 0x0a, 0xfd, 0x7b, 0xf3, 0xf7, 0x7f, 0xa4, 0xb9, 0xc9, 0xfa, 0x31, 0xa6, 0xeb, 0x43, 0x43, 0xff, + 0x82, 0xbb, 0xad, 0x9e, 0xb4, 0x4b, 0x33, 0x77, 0x2f, 0x99, 0xdc, 0x99, 0x4e, 0x8f, 0x78, 0x85, + 0x7c, 0x50, 0x5e, 0x0b, 0x87, 0x4e, 0x4a, 0xa4, 0x99, 0x6d, 0xca, 0x75, 0xf4, 0x5a, 0xf6, 0x62, + 0x9a, 0x4a, 0x23, 0x6b, 0x4e, 0x48, 0x3f, 0x6e, 0x1b, 0x68, 0x53, 0x44, 0xad, 0x68, 0xda, 0xc5, + 0xf2, 0x9a, 0x19, 0x8b, 0xd9, 0x2c, 0xe3, 0x06, 0x3a, 0xe5, 0x4c, 0x5f, 0xe4, 0xb7, 0xdd, 0xb6, + 0x85, 0x82, 0x44, 0x2c, 0x8f, 0x2a, 0xb8, 0x34, 0xb2, 0xc6, 0xf4, 0x2b, 0xa9, 0xe6, 0xc1, 0x6e, + 0xb4, 0xcd, 0x04, 0x00, 0x91, 0x46, 0xa2, 0xa0, 0xfb, 0xee, 0xad, 0x16, 0xef, 0xf3, 0xe6, 0x49, + 0xc0, 0x2b, 0x88, 0x94, 0xb2, 0x27, 0x26, 0xbe, 0x7b, 0x43, 0x30, 0xb7, 0x4e, 0x00, 0x1e, 0x9e, + 0xaf, 0x0e, 0xa6, 0x70, 0x9d, 0x00, 0xf5, 0x15, 0x43, 0xac, 0x13, 0x28, 0x36, 0x6c, 0x3a, 0xbb, + 0xef, 0x75, 0xc8, 0x2a, 0x57, 0x39, 0xa4, 0xe9, 0x50, 0x30, 0xd6, 0x74, 0x94, 0x42, 0xf8, 0x48, + 0xfd, 0xad, 0x35, 0xe4, 0x91, 0x62, 0xfb, 0x6a, 0xeb, 0x5d, 0x98, 0x8b, 0x4b, 0x76, 0x3d, 0xa9, + 0x8e, 0x2c, 0xe1, 0x37, 0xf8, 0x6b, 0x21, 0x11, 0x97, 0x5a, 0x90, 0xb6, 0xfd, 0xfc, 0xe3, 0xff, + 0xfa, 0xe6, 0xd6, 0xda, 0x2f, 0xbe, 0xb9, 0xb5, 0xf6, 0x3f, 0xdf, 0xdc, 0x5a, 0xfb, 0xf9, 0xb7, + 0xb7, 0xde, 0xf9, 0xc5, 0xb7, 0xb7, 0xde, 0xf9, 0xef, 0x6f, 0x6f, 0xbd, 0xf3, 0xf5, 0xbb, 0xe6, + 0x8f, 0x04, 0x9f, 0xff, 0x3f, 0xf5, 0xa7, 0x7e, 0x9f, 0xfd, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xf7, 0x8b, 0x08, 0x78, 0x48, 0x78, 0x00, 0x00, } // This is a compile-time assertion to ensure that this generated file @@ -398,6 +400,8 @@ type ClientCommandsHandler interface { // Account // *** AccountRecover(context.Context, *pb.RpcAccountRecoverRequest) *pb.RpcAccountRecoverResponse + AccountMigrate(context.Context, *pb.RpcAccountMigrateRequest) *pb.RpcAccountMigrateResponse + AccountMigrateCancel(context.Context, *pb.RpcAccountMigrateCancelRequest) *pb.RpcAccountMigrateCancelResponse AccountCreate(context.Context, *pb.RpcAccountCreateRequest) *pb.RpcAccountCreateResponse AccountDelete(context.Context, *pb.RpcAccountDeleteRequest) *pb.RpcAccountDeleteResponse AccountRevertDeletion(context.Context, *pb.RpcAccountRevertDeletionRequest) *pb.RpcAccountRevertDeletionResponse @@ -1135,6 +1139,46 @@ func AccountRecover(b []byte) (resp []byte) { return resp } +func AccountMigrate(b []byte) (resp []byte) { + defer func() { + if PanicHandler != nil { + if r := recover(); r != nil { + resp, _ = (&pb.RpcAccountMigrateResponse{Error: &pb.RpcAccountMigrateResponseError{Code: pb.RpcAccountMigrateResponseError_UNKNOWN_ERROR, Description: "panic recovered"}}).Marshal() + PanicHandler(r) + } + } + }() + + in := new(pb.RpcAccountMigrateRequest) + if err := in.Unmarshal(b); err != nil { + resp, _ = (&pb.RpcAccountMigrateResponse{Error: &pb.RpcAccountMigrateResponseError{Code: pb.RpcAccountMigrateResponseError_BAD_INPUT, Description: err.Error()}}).Marshal() + return resp + } + + resp, _ = clientCommandsHandler.AccountMigrate(context.Background(), in).Marshal() + return resp +} + +func AccountMigrateCancel(b []byte) (resp []byte) { + defer func() { + if PanicHandler != nil { + if r := recover(); r != nil { + resp, _ = (&pb.RpcAccountMigrateCancelResponse{Error: &pb.RpcAccountMigrateCancelResponseError{Code: pb.RpcAccountMigrateCancelResponseError_UNKNOWN_ERROR, Description: "panic recovered"}}).Marshal() + PanicHandler(r) + } + } + }() + + in := new(pb.RpcAccountMigrateCancelRequest) + if err := in.Unmarshal(b); err != nil { + resp, _ = (&pb.RpcAccountMigrateCancelResponse{Error: &pb.RpcAccountMigrateCancelResponseError{Code: pb.RpcAccountMigrateCancelResponseError_BAD_INPUT, Description: err.Error()}}).Marshal() + return resp + } + + resp, _ = clientCommandsHandler.AccountMigrateCancel(context.Background(), in).Marshal() + return resp +} + func AccountCreate(b []byte) (resp []byte) { defer func() { if PanicHandler != nil { @@ -6243,6 +6287,10 @@ func CommandAsync(cmd string, data []byte, callback func(data []byte)) { cd = WorkspaceExport(data) case "AccountRecover": cd = AccountRecover(data) + case "AccountMigrate": + cd = AccountMigrate(data) + case "AccountMigrateCancel": + cd = AccountMigrateCancel(data) case "AccountCreate": cd = AccountCreate(data) case "AccountDelete": @@ -7065,6 +7113,34 @@ func (h *ClientCommandsHandlerProxy) AccountRecover(ctx context.Context, req *pb call, _ := actualCall(ctx, req) return call.(*pb.RpcAccountRecoverResponse) } +func (h *ClientCommandsHandlerProxy) AccountMigrate(ctx context.Context, req *pb.RpcAccountMigrateRequest) *pb.RpcAccountMigrateResponse { + actualCall := func(ctx context.Context, req any) (any, error) { + return h.client.AccountMigrate(ctx, req.(*pb.RpcAccountMigrateRequest)), nil + } + for _, interceptor := range h.interceptors { + toCall := actualCall + currentInterceptor := interceptor + actualCall = func(ctx context.Context, req any) (any, error) { + return currentInterceptor(ctx, req, "AccountMigrate", toCall) + } + } + call, _ := actualCall(ctx, req) + return call.(*pb.RpcAccountMigrateResponse) +} +func (h *ClientCommandsHandlerProxy) AccountMigrateCancel(ctx context.Context, req *pb.RpcAccountMigrateCancelRequest) *pb.RpcAccountMigrateCancelResponse { + actualCall := func(ctx context.Context, req any) (any, error) { + return h.client.AccountMigrateCancel(ctx, req.(*pb.RpcAccountMigrateCancelRequest)), nil + } + for _, interceptor := range h.interceptors { + toCall := actualCall + currentInterceptor := interceptor + actualCall = func(ctx context.Context, req any) (any, error) { + return currentInterceptor(ctx, req, "AccountMigrateCancel", toCall) + } + } + call, _ := actualCall(ctx, req) + return call.(*pb.RpcAccountMigrateCancelResponse) +} func (h *ClientCommandsHandlerProxy) AccountCreate(ctx context.Context, req *pb.RpcAccountCreateRequest) *pb.RpcAccountCreateResponse { actualCall := func(ctx context.Context, req any) (any, error) { return h.client.AccountCreate(ctx, req.(*pb.RpcAccountCreateRequest)), nil diff --git a/go.mod b/go.mod index 133fd934d..4de016dd3 100644 --- a/go.mod +++ b/go.mod @@ -8,8 +8,8 @@ require ( github.com/VividCortex/ewma v1.2.0 github.com/adrium/goheif v0.0.0-20230113233934-ca402e77a786 github.com/anyproto/any-store v0.1.4 - github.com/anyproto/anytype-publish-server/publishclient v0.0.0-20241223184559-a5cacfe0950a github.com/anyproto/any-sync v0.6.0-alpha.5.0.20250122101259-cc0878975c43 + github.com/anyproto/anytype-publish-server/publishclient v0.0.0-20241223184559-a5cacfe0950a github.com/anyproto/go-chash v0.1.0 github.com/anyproto/go-naturaldate/v2 v2.0.2-0.20230524105841-9829cfd13438 github.com/anyproto/go-slip10 v1.0.0 @@ -254,7 +254,6 @@ require ( golang.org/x/crypto v0.32.0 // indirect golang.org/x/mod v0.22.0 // indirect golang.org/x/sync v0.10.0 // indirect - golang.org/x/sys v0.29.0 // indirect golang.org/x/term v0.28.0 // indirect golang.org/x/time v0.9.0 // indirect golang.org/x/tools v0.29.0 // indirect diff --git a/go.sum b/go.sum index d8a1d787c..f04bbddc0 100644 --- a/go.sum +++ b/go.sum @@ -80,6 +80,7 @@ github.com/anyproto/any-store v0.1.4 h1:rIxMA2XugPtdHl2S/XWnNFAMxdBysFMT9ORoJWdW github.com/anyproto/any-store v0.1.4/go.mod h1:nbyRoJYOlvSWU1xDOrmgPP96UeoTf4eYZ9k+qqLK9k8= github.com/anyproto/any-sync v0.5.25 h1:v59eQ+C7YOKC18G1PVql17fuc42Mvgb7c7Ju855tc0Q= github.com/anyproto/any-sync v0.5.25/go.mod h1:NKQZqnU7NzOOjDQc/rKmiRmRDCrARdlEnVLYwWqTcfM= +github.com/anyproto/any-sync v0.6.0-alpha.5.0.20250122101259-cc0878975c43/go.mod h1:Y8IxYfNrHzIKStyErWKeRIPehvqP2vT0B2T+FAhu5Zc= github.com/anyproto/anytype-publish-server/publishclient v0.0.0-20241223184559-a5cacfe0950a h1:kSNyLHsZ40JxlRAglr85YXH2ik2LH3AH5Hd3JL42KGo= github.com/anyproto/anytype-publish-server/publishclient v0.0.0-20241223184559-a5cacfe0950a/go.mod h1:4fkueCZcGniSMXkrwESO8zzERrh/L7WHimRNWecfGM0= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580 h1:Ba80IlCCxkZ9H1GF+7vFu/TSpPvbpDCxXJ5ogc4euYc= diff --git a/pb/commands.pb.go b/pb/commands.pb.go index 556b69779..bdf1f75f9 100644 --- a/pb/commands.pb.go +++ b/pb/commands.pb.go @@ -1132,6 +1132,71 @@ func (RpcAccountRevertDeletionResponseErrorCode) EnumDescriptor() ([]byte, []int return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 4, 1, 0, 0} } +type RpcAccountMigrateResponseErrorCode int32 + +const ( + RpcAccountMigrateResponseError_NULL RpcAccountMigrateResponseErrorCode = 0 + RpcAccountMigrateResponseError_UNKNOWN_ERROR RpcAccountMigrateResponseErrorCode = 1 + RpcAccountMigrateResponseError_BAD_INPUT RpcAccountMigrateResponseErrorCode = 2 + RpcAccountMigrateResponseError_ACCOUNT_NOT_FOUND RpcAccountMigrateResponseErrorCode = 101 + RpcAccountMigrateResponseError_CANCELED RpcAccountMigrateResponseErrorCode = 102 + RpcAccountMigrateResponseError_NOT_ENOUGH_FREE_SPACE RpcAccountMigrateResponseErrorCode = 103 +) + +var RpcAccountMigrateResponseErrorCode_name = map[int32]string{ + 0: "NULL", + 1: "UNKNOWN_ERROR", + 2: "BAD_INPUT", + 101: "ACCOUNT_NOT_FOUND", + 102: "CANCELED", + 103: "NOT_ENOUGH_FREE_SPACE", +} + +var RpcAccountMigrateResponseErrorCode_value = map[string]int32{ + "NULL": 0, + "UNKNOWN_ERROR": 1, + "BAD_INPUT": 2, + "ACCOUNT_NOT_FOUND": 101, + "CANCELED": 102, + "NOT_ENOUGH_FREE_SPACE": 103, +} + +func (x RpcAccountMigrateResponseErrorCode) String() string { + return proto.EnumName(RpcAccountMigrateResponseErrorCode_name, int32(x)) +} + +func (RpcAccountMigrateResponseErrorCode) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 5, 1, 0, 0} +} + +type RpcAccountMigrateCancelResponseErrorCode int32 + +const ( + RpcAccountMigrateCancelResponseError_NULL RpcAccountMigrateCancelResponseErrorCode = 0 + RpcAccountMigrateCancelResponseError_UNKNOWN_ERROR RpcAccountMigrateCancelResponseErrorCode = 1 + RpcAccountMigrateCancelResponseError_BAD_INPUT RpcAccountMigrateCancelResponseErrorCode = 2 +) + +var RpcAccountMigrateCancelResponseErrorCode_name = map[int32]string{ + 0: "NULL", + 1: "UNKNOWN_ERROR", + 2: "BAD_INPUT", +} + +var RpcAccountMigrateCancelResponseErrorCode_value = map[string]int32{ + "NULL": 0, + "UNKNOWN_ERROR": 1, + "BAD_INPUT": 2, +} + +func (x RpcAccountMigrateCancelResponseErrorCode) String() string { + return proto.EnumName(RpcAccountMigrateCancelResponseErrorCode_name, int32(x)) +} + +func (RpcAccountMigrateCancelResponseErrorCode) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 6, 1, 0, 0} +} + type RpcAccountSelectResponseErrorCode int32 const ( @@ -1148,6 +1213,7 @@ const ( RpcAccountSelectResponseError_FAILED_TO_FETCH_REMOTE_NODE_HAS_INCOMPATIBLE_PROTO_VERSION RpcAccountSelectResponseErrorCode = 110 RpcAccountSelectResponseError_ACCOUNT_IS_DELETED RpcAccountSelectResponseErrorCode = 111 RpcAccountSelectResponseError_ACCOUNT_LOAD_IS_CANCELED RpcAccountSelectResponseErrorCode = 112 + RpcAccountSelectResponseError_ACCOUNT_STORE_NOT_MIGRATED RpcAccountSelectResponseErrorCode = 113 RpcAccountSelectResponseError_CONFIG_FILE_NOT_FOUND RpcAccountSelectResponseErrorCode = 200 RpcAccountSelectResponseError_CONFIG_FILE_INVALID RpcAccountSelectResponseErrorCode = 201 RpcAccountSelectResponseError_CONFIG_FILE_NETWORK_ID_MISMATCH RpcAccountSelectResponseErrorCode = 202 @@ -1167,6 +1233,7 @@ var RpcAccountSelectResponseErrorCode_name = map[int32]string{ 110: "FAILED_TO_FETCH_REMOTE_NODE_HAS_INCOMPATIBLE_PROTO_VERSION", 111: "ACCOUNT_IS_DELETED", 112: "ACCOUNT_LOAD_IS_CANCELED", + 113: "ACCOUNT_STORE_NOT_MIGRATED", 200: "CONFIG_FILE_NOT_FOUND", 201: "CONFIG_FILE_INVALID", 202: "CONFIG_FILE_NETWORK_ID_MISMATCH", @@ -1186,6 +1253,7 @@ var RpcAccountSelectResponseErrorCode_value = map[string]int32{ "FAILED_TO_FETCH_REMOTE_NODE_HAS_INCOMPATIBLE_PROTO_VERSION": 110, "ACCOUNT_IS_DELETED": 111, "ACCOUNT_LOAD_IS_CANCELED": 112, + "ACCOUNT_STORE_NOT_MIGRATED": 113, "CONFIG_FILE_NOT_FOUND": 200, "CONFIG_FILE_INVALID": 201, "CONFIG_FILE_NETWORK_ID_MISMATCH": 202, @@ -1196,7 +1264,7 @@ func (x RpcAccountSelectResponseErrorCode) String() string { } func (RpcAccountSelectResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 5, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 7, 1, 0, 0} } type RpcAccountStopResponseErrorCode int32 @@ -1233,7 +1301,7 @@ func (x RpcAccountStopResponseErrorCode) String() string { } func (RpcAccountStopResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 6, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 8, 1, 0, 0} } type RpcAccountMoveResponseErrorCode int32 @@ -1279,7 +1347,7 @@ func (x RpcAccountMoveResponseErrorCode) String() string { } func (RpcAccountMoveResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 7, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 9, 1, 0, 0} } type RpcAccountConfigUpdateTimezones int32 @@ -1382,7 +1450,7 @@ func (x RpcAccountConfigUpdateTimezones) String() string { } func (RpcAccountConfigUpdateTimezones) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 8, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 10, 0} } type RpcAccountConfigUpdateResponseErrorCode int32 @@ -1416,7 +1484,7 @@ func (x RpcAccountConfigUpdateResponseErrorCode) String() string { } func (RpcAccountConfigUpdateResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 8, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 10, 1, 0, 0} } type RpcAccountRecoverFromLegacyExportResponseErrorCode int32 @@ -1447,7 +1515,7 @@ func (x RpcAccountRecoverFromLegacyExportResponseErrorCode) String() string { } func (RpcAccountRecoverFromLegacyExportResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 10, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12, 1, 0, 0} } type RpcAccountEnableLocalNetworkSyncResponseErrorCode int32 @@ -1478,7 +1546,7 @@ func (x RpcAccountEnableLocalNetworkSyncResponseErrorCode) String() string { } func (RpcAccountEnableLocalNetworkSyncResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 11, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 1, 0, 0} } type RpcAccountChangeNetworkConfigAndRestartResponseErrorCode int32 @@ -1521,7 +1589,7 @@ func (x RpcAccountChangeNetworkConfigAndRestartResponseErrorCode) String() strin } func (RpcAccountChangeNetworkConfigAndRestartResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 1, 0, 0} } type RpcAccountLocalLinkNewChallengeResponseErrorCode int32 @@ -1555,7 +1623,7 @@ func (x RpcAccountLocalLinkNewChallengeResponseErrorCode) String() string { } func (RpcAccountLocalLinkNewChallengeResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 0, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 15, 0, 1, 0, 0} } type RpcAccountLocalLinkSolveChallengeResponseErrorCode int32 @@ -1595,7 +1663,7 @@ func (x RpcAccountLocalLinkSolveChallengeResponseErrorCode) String() string { } func (RpcAccountLocalLinkSolveChallengeResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 1, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 15, 1, 1, 0, 0} } type RpcWorkspaceGetCurrentResponseErrorCode int32 @@ -14806,6 +14874,366 @@ func (m *RpcAccountRevertDeletionResponseError) GetDescription() string { return "" } +type RpcAccountMigrate struct { +} + +func (m *RpcAccountMigrate) Reset() { *m = RpcAccountMigrate{} } +func (m *RpcAccountMigrate) String() string { return proto.CompactTextString(m) } +func (*RpcAccountMigrate) ProtoMessage() {} +func (*RpcAccountMigrate) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 5} +} +func (m *RpcAccountMigrate) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcAccountMigrate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcAccountMigrate.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcAccountMigrate) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcAccountMigrate.Merge(m, src) +} +func (m *RpcAccountMigrate) XXX_Size() int { + return m.Size() +} +func (m *RpcAccountMigrate) XXX_DiscardUnknown() { + xxx_messageInfo_RpcAccountMigrate.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcAccountMigrate proto.InternalMessageInfo + +type RpcAccountMigrateRequest struct { + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + RootPath string `protobuf:"bytes,2,opt,name=rootPath,proto3" json:"rootPath,omitempty"` +} + +func (m *RpcAccountMigrateRequest) Reset() { *m = RpcAccountMigrateRequest{} } +func (m *RpcAccountMigrateRequest) String() string { return proto.CompactTextString(m) } +func (*RpcAccountMigrateRequest) ProtoMessage() {} +func (*RpcAccountMigrateRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 5, 0} +} +func (m *RpcAccountMigrateRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcAccountMigrateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcAccountMigrateRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcAccountMigrateRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcAccountMigrateRequest.Merge(m, src) +} +func (m *RpcAccountMigrateRequest) XXX_Size() int { + return m.Size() +} +func (m *RpcAccountMigrateRequest) XXX_DiscardUnknown() { + xxx_messageInfo_RpcAccountMigrateRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcAccountMigrateRequest proto.InternalMessageInfo + +func (m *RpcAccountMigrateRequest) GetId() string { + if m != nil { + return m.Id + } + return "" +} + +func (m *RpcAccountMigrateRequest) GetRootPath() string { + if m != nil { + return m.RootPath + } + return "" +} + +type RpcAccountMigrateResponse struct { + Error *RpcAccountMigrateResponseError `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` +} + +func (m *RpcAccountMigrateResponse) Reset() { *m = RpcAccountMigrateResponse{} } +func (m *RpcAccountMigrateResponse) String() string { return proto.CompactTextString(m) } +func (*RpcAccountMigrateResponse) ProtoMessage() {} +func (*RpcAccountMigrateResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 5, 1} +} +func (m *RpcAccountMigrateResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcAccountMigrateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcAccountMigrateResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcAccountMigrateResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcAccountMigrateResponse.Merge(m, src) +} +func (m *RpcAccountMigrateResponse) XXX_Size() int { + return m.Size() +} +func (m *RpcAccountMigrateResponse) XXX_DiscardUnknown() { + xxx_messageInfo_RpcAccountMigrateResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcAccountMigrateResponse proto.InternalMessageInfo + +func (m *RpcAccountMigrateResponse) GetError() *RpcAccountMigrateResponseError { + if m != nil { + return m.Error + } + return nil +} + +type RpcAccountMigrateResponseError struct { + Code RpcAccountMigrateResponseErrorCode `protobuf:"varint,1,opt,name=code,proto3,enum=anytype.RpcAccountMigrateResponseErrorCode" json:"code,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` +} + +func (m *RpcAccountMigrateResponseError) Reset() { *m = RpcAccountMigrateResponseError{} } +func (m *RpcAccountMigrateResponseError) String() string { return proto.CompactTextString(m) } +func (*RpcAccountMigrateResponseError) ProtoMessage() {} +func (*RpcAccountMigrateResponseError) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 5, 1, 0} +} +func (m *RpcAccountMigrateResponseError) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcAccountMigrateResponseError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcAccountMigrateResponseError.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcAccountMigrateResponseError) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcAccountMigrateResponseError.Merge(m, src) +} +func (m *RpcAccountMigrateResponseError) XXX_Size() int { + return m.Size() +} +func (m *RpcAccountMigrateResponseError) XXX_DiscardUnknown() { + xxx_messageInfo_RpcAccountMigrateResponseError.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcAccountMigrateResponseError proto.InternalMessageInfo + +func (m *RpcAccountMigrateResponseError) GetCode() RpcAccountMigrateResponseErrorCode { + if m != nil { + return m.Code + } + return RpcAccountMigrateResponseError_NULL +} + +func (m *RpcAccountMigrateResponseError) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +type RpcAccountMigrateCancel struct { +} + +func (m *RpcAccountMigrateCancel) Reset() { *m = RpcAccountMigrateCancel{} } +func (m *RpcAccountMigrateCancel) String() string { return proto.CompactTextString(m) } +func (*RpcAccountMigrateCancel) ProtoMessage() {} +func (*RpcAccountMigrateCancel) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 6} +} +func (m *RpcAccountMigrateCancel) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcAccountMigrateCancel) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcAccountMigrateCancel.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcAccountMigrateCancel) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcAccountMigrateCancel.Merge(m, src) +} +func (m *RpcAccountMigrateCancel) XXX_Size() int { + return m.Size() +} +func (m *RpcAccountMigrateCancel) XXX_DiscardUnknown() { + xxx_messageInfo_RpcAccountMigrateCancel.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcAccountMigrateCancel proto.InternalMessageInfo + +type RpcAccountMigrateCancelRequest struct { + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` +} + +func (m *RpcAccountMigrateCancelRequest) Reset() { *m = RpcAccountMigrateCancelRequest{} } +func (m *RpcAccountMigrateCancelRequest) String() string { return proto.CompactTextString(m) } +func (*RpcAccountMigrateCancelRequest) ProtoMessage() {} +func (*RpcAccountMigrateCancelRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 6, 0} +} +func (m *RpcAccountMigrateCancelRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcAccountMigrateCancelRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcAccountMigrateCancelRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcAccountMigrateCancelRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcAccountMigrateCancelRequest.Merge(m, src) +} +func (m *RpcAccountMigrateCancelRequest) XXX_Size() int { + return m.Size() +} +func (m *RpcAccountMigrateCancelRequest) XXX_DiscardUnknown() { + xxx_messageInfo_RpcAccountMigrateCancelRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcAccountMigrateCancelRequest proto.InternalMessageInfo + +func (m *RpcAccountMigrateCancelRequest) GetId() string { + if m != nil { + return m.Id + } + return "" +} + +type RpcAccountMigrateCancelResponse struct { + Error *RpcAccountMigrateCancelResponseError `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` +} + +func (m *RpcAccountMigrateCancelResponse) Reset() { *m = RpcAccountMigrateCancelResponse{} } +func (m *RpcAccountMigrateCancelResponse) String() string { return proto.CompactTextString(m) } +func (*RpcAccountMigrateCancelResponse) ProtoMessage() {} +func (*RpcAccountMigrateCancelResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 6, 1} +} +func (m *RpcAccountMigrateCancelResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcAccountMigrateCancelResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcAccountMigrateCancelResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcAccountMigrateCancelResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcAccountMigrateCancelResponse.Merge(m, src) +} +func (m *RpcAccountMigrateCancelResponse) XXX_Size() int { + return m.Size() +} +func (m *RpcAccountMigrateCancelResponse) XXX_DiscardUnknown() { + xxx_messageInfo_RpcAccountMigrateCancelResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcAccountMigrateCancelResponse proto.InternalMessageInfo + +func (m *RpcAccountMigrateCancelResponse) GetError() *RpcAccountMigrateCancelResponseError { + if m != nil { + return m.Error + } + return nil +} + +type RpcAccountMigrateCancelResponseError struct { + Code RpcAccountMigrateCancelResponseErrorCode `protobuf:"varint,1,opt,name=code,proto3,enum=anytype.RpcAccountMigrateCancelResponseErrorCode" json:"code,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` +} + +func (m *RpcAccountMigrateCancelResponseError) Reset() { *m = RpcAccountMigrateCancelResponseError{} } +func (m *RpcAccountMigrateCancelResponseError) String() string { return proto.CompactTextString(m) } +func (*RpcAccountMigrateCancelResponseError) ProtoMessage() {} +func (*RpcAccountMigrateCancelResponseError) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 6, 1, 0} +} +func (m *RpcAccountMigrateCancelResponseError) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcAccountMigrateCancelResponseError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcAccountMigrateCancelResponseError.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcAccountMigrateCancelResponseError) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcAccountMigrateCancelResponseError.Merge(m, src) +} +func (m *RpcAccountMigrateCancelResponseError) XXX_Size() int { + return m.Size() +} +func (m *RpcAccountMigrateCancelResponseError) XXX_DiscardUnknown() { + xxx_messageInfo_RpcAccountMigrateCancelResponseError.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcAccountMigrateCancelResponseError proto.InternalMessageInfo + +func (m *RpcAccountMigrateCancelResponseError) GetCode() RpcAccountMigrateCancelResponseErrorCode { + if m != nil { + return m.Code + } + return RpcAccountMigrateCancelResponseError_NULL +} + +func (m *RpcAccountMigrateCancelResponseError) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + type RpcAccountSelect struct { } @@ -14813,7 +15241,7 @@ func (m *RpcAccountSelect) Reset() { *m = RpcAccountSelect{} } func (m *RpcAccountSelect) String() string { return proto.CompactTextString(m) } func (*RpcAccountSelect) ProtoMessage() {} func (*RpcAccountSelect) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 5} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 7} } func (m *RpcAccountSelect) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14858,7 +15286,7 @@ func (m *RpcAccountSelectRequest) Reset() { *m = RpcAccountSelectRequest func (m *RpcAccountSelectRequest) String() string { return proto.CompactTextString(m) } func (*RpcAccountSelectRequest) ProtoMessage() {} func (*RpcAccountSelectRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 5, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 7, 0} } func (m *RpcAccountSelectRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14941,7 +15369,7 @@ func (m *RpcAccountSelectResponse) Reset() { *m = RpcAccountSelectRespon func (m *RpcAccountSelectResponse) String() string { return proto.CompactTextString(m) } func (*RpcAccountSelectResponse) ProtoMessage() {} func (*RpcAccountSelectResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 5, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 7, 1} } func (m *RpcAccountSelectResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15000,7 +15428,7 @@ func (m *RpcAccountSelectResponseError) Reset() { *m = RpcAccountSelectR func (m *RpcAccountSelectResponseError) String() string { return proto.CompactTextString(m) } func (*RpcAccountSelectResponseError) ProtoMessage() {} func (*RpcAccountSelectResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 5, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 7, 1, 0} } func (m *RpcAccountSelectResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15050,7 +15478,7 @@ func (m *RpcAccountStop) Reset() { *m = RpcAccountStop{} } func (m *RpcAccountStop) String() string { return proto.CompactTextString(m) } func (*RpcAccountStop) ProtoMessage() {} func (*RpcAccountStop) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 6} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 8} } func (m *RpcAccountStop) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15089,7 +15517,7 @@ func (m *RpcAccountStopRequest) Reset() { *m = RpcAccountStopRequest{} } func (m *RpcAccountStopRequest) String() string { return proto.CompactTextString(m) } func (*RpcAccountStopRequest) ProtoMessage() {} func (*RpcAccountStopRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 6, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 8, 0} } func (m *RpcAccountStopRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15135,7 +15563,7 @@ func (m *RpcAccountStopResponse) Reset() { *m = RpcAccountStopResponse{} func (m *RpcAccountStopResponse) String() string { return proto.CompactTextString(m) } func (*RpcAccountStopResponse) ProtoMessage() {} func (*RpcAccountStopResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 6, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 8, 1} } func (m *RpcAccountStopResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15180,7 +15608,7 @@ func (m *RpcAccountStopResponseError) Reset() { *m = RpcAccountStopRespo func (m *RpcAccountStopResponseError) String() string { return proto.CompactTextString(m) } func (*RpcAccountStopResponseError) ProtoMessage() {} func (*RpcAccountStopResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 6, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 8, 1, 0} } func (m *RpcAccountStopResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15230,7 +15658,7 @@ func (m *RpcAccountMove) Reset() { *m = RpcAccountMove{} } func (m *RpcAccountMove) String() string { return proto.CompactTextString(m) } func (*RpcAccountMove) ProtoMessage() {} func (*RpcAccountMove) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 7} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 9} } func (m *RpcAccountMove) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15269,7 +15697,7 @@ func (m *RpcAccountMoveRequest) Reset() { *m = RpcAccountMoveRequest{} } func (m *RpcAccountMoveRequest) String() string { return proto.CompactTextString(m) } func (*RpcAccountMoveRequest) ProtoMessage() {} func (*RpcAccountMoveRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 7, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 9, 0} } func (m *RpcAccountMoveRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15313,7 +15741,7 @@ func (m *RpcAccountMoveResponse) Reset() { *m = RpcAccountMoveResponse{} func (m *RpcAccountMoveResponse) String() string { return proto.CompactTextString(m) } func (*RpcAccountMoveResponse) ProtoMessage() {} func (*RpcAccountMoveResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 7, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 9, 1} } func (m *RpcAccountMoveResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15358,7 +15786,7 @@ func (m *RpcAccountMoveResponseError) Reset() { *m = RpcAccountMoveRespo func (m *RpcAccountMoveResponseError) String() string { return proto.CompactTextString(m) } func (*RpcAccountMoveResponseError) ProtoMessage() {} func (*RpcAccountMoveResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 7, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 9, 1, 0} } func (m *RpcAccountMoveResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15408,7 +15836,7 @@ func (m *RpcAccountConfigUpdate) Reset() { *m = RpcAccountConfigUpdate{} func (m *RpcAccountConfigUpdate) String() string { return proto.CompactTextString(m) } func (*RpcAccountConfigUpdate) ProtoMessage() {} func (*RpcAccountConfigUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 8} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 10} } func (m *RpcAccountConfigUpdate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15445,7 +15873,7 @@ func (m *RpcAccountConfigUpdateRequest) Reset() { *m = RpcAccountConfigU func (m *RpcAccountConfigUpdateRequest) String() string { return proto.CompactTextString(m) } func (*RpcAccountConfigUpdateRequest) ProtoMessage() {} func (*RpcAccountConfigUpdateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 8, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 10, 0} } func (m *RpcAccountConfigUpdateRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15489,7 +15917,7 @@ func (m *RpcAccountConfigUpdateResponse) Reset() { *m = RpcAccountConfig func (m *RpcAccountConfigUpdateResponse) String() string { return proto.CompactTextString(m) } func (*RpcAccountConfigUpdateResponse) ProtoMessage() {} func (*RpcAccountConfigUpdateResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 8, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 10, 1} } func (m *RpcAccountConfigUpdateResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15534,7 +15962,7 @@ func (m *RpcAccountConfigUpdateResponseError) Reset() { *m = RpcAccountC func (m *RpcAccountConfigUpdateResponseError) String() string { return proto.CompactTextString(m) } func (*RpcAccountConfigUpdateResponseError) ProtoMessage() {} func (*RpcAccountConfigUpdateResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 8, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 10, 1, 0} } func (m *RpcAccountConfigUpdateResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15584,7 +16012,7 @@ func (m *RpcAccountGetConfig) Reset() { *m = RpcAccountGetConfig{} } func (m *RpcAccountGetConfig) String() string { return proto.CompactTextString(m) } func (*RpcAccountGetConfig) ProtoMessage() {} func (*RpcAccountGetConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 9} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 11} } func (m *RpcAccountGetConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15620,7 +16048,7 @@ func (m *RpcAccountGetConfigGet) Reset() { *m = RpcAccountGetConfigGet{} func (m *RpcAccountGetConfigGet) String() string { return proto.CompactTextString(m) } func (*RpcAccountGetConfigGet) ProtoMessage() {} func (*RpcAccountGetConfigGet) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 9, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 11, 0} } func (m *RpcAccountGetConfigGet) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15656,7 +16084,7 @@ func (m *RpcAccountGetConfigGetRequest) Reset() { *m = RpcAccountGetConf func (m *RpcAccountGetConfigGetRequest) String() string { return proto.CompactTextString(m) } func (*RpcAccountGetConfigGetRequest) ProtoMessage() {} func (*RpcAccountGetConfigGetRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 9, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 11, 0, 0} } func (m *RpcAccountGetConfigGetRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15692,7 +16120,7 @@ func (m *RpcAccountRecoverFromLegacyExport) Reset() { *m = RpcAccountRec func (m *RpcAccountRecoverFromLegacyExport) String() string { return proto.CompactTextString(m) } func (*RpcAccountRecoverFromLegacyExport) ProtoMessage() {} func (*RpcAccountRecoverFromLegacyExport) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 10} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12} } func (m *RpcAccountRecoverFromLegacyExport) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15733,7 +16161,7 @@ func (m *RpcAccountRecoverFromLegacyExportRequest) Reset() { func (m *RpcAccountRecoverFromLegacyExportRequest) String() string { return proto.CompactTextString(m) } func (*RpcAccountRecoverFromLegacyExportRequest) ProtoMessage() {} func (*RpcAccountRecoverFromLegacyExportRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 10, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12, 0} } func (m *RpcAccountRecoverFromLegacyExportRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15797,7 +16225,7 @@ func (m *RpcAccountRecoverFromLegacyExportResponse) String() string { } func (*RpcAccountRecoverFromLegacyExportResponse) ProtoMessage() {} func (*RpcAccountRecoverFromLegacyExportResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 10, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12, 1} } func (m *RpcAccountRecoverFromLegacyExportResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15860,7 +16288,7 @@ func (m *RpcAccountRecoverFromLegacyExportResponseError) String() string { } func (*RpcAccountRecoverFromLegacyExportResponseError) ProtoMessage() {} func (*RpcAccountRecoverFromLegacyExportResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 10, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12, 1, 0} } func (m *RpcAccountRecoverFromLegacyExportResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15910,7 +16338,7 @@ func (m *RpcAccountEnableLocalNetworkSync) Reset() { *m = RpcAccountEnab func (m *RpcAccountEnableLocalNetworkSync) String() string { return proto.CompactTextString(m) } func (*RpcAccountEnableLocalNetworkSync) ProtoMessage() {} func (*RpcAccountEnableLocalNetworkSync) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 11} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13} } func (m *RpcAccountEnableLocalNetworkSync) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15948,7 +16376,7 @@ func (m *RpcAccountEnableLocalNetworkSyncRequest) Reset() { func (m *RpcAccountEnableLocalNetworkSyncRequest) String() string { return proto.CompactTextString(m) } func (*RpcAccountEnableLocalNetworkSyncRequest) ProtoMessage() {} func (*RpcAccountEnableLocalNetworkSyncRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 11, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 0} } func (m *RpcAccountEnableLocalNetworkSyncRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15987,7 +16415,7 @@ func (m *RpcAccountEnableLocalNetworkSyncResponse) Reset() { func (m *RpcAccountEnableLocalNetworkSyncResponse) String() string { return proto.CompactTextString(m) } func (*RpcAccountEnableLocalNetworkSyncResponse) ProtoMessage() {} func (*RpcAccountEnableLocalNetworkSyncResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 11, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 1} } func (m *RpcAccountEnableLocalNetworkSyncResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16036,7 +16464,7 @@ func (m *RpcAccountEnableLocalNetworkSyncResponseError) String() string { } func (*RpcAccountEnableLocalNetworkSyncResponseError) ProtoMessage() {} func (*RpcAccountEnableLocalNetworkSyncResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 11, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 1, 0} } func (m *RpcAccountEnableLocalNetworkSyncResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16088,7 +16516,7 @@ func (m *RpcAccountChangeNetworkConfigAndRestart) Reset() { func (m *RpcAccountChangeNetworkConfigAndRestart) String() string { return proto.CompactTextString(m) } func (*RpcAccountChangeNetworkConfigAndRestart) ProtoMessage() {} func (*RpcAccountChangeNetworkConfigAndRestart) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14} } func (m *RpcAccountChangeNetworkConfigAndRestart) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16130,7 +16558,7 @@ func (m *RpcAccountChangeNetworkConfigAndRestartRequest) String() string { } func (*RpcAccountChangeNetworkConfigAndRestartRequest) ProtoMessage() {} func (*RpcAccountChangeNetworkConfigAndRestartRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 0} } func (m *RpcAccountChangeNetworkConfigAndRestartRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16185,7 +16613,7 @@ func (m *RpcAccountChangeNetworkConfigAndRestartResponse) String() string { } func (*RpcAccountChangeNetworkConfigAndRestartResponse) ProtoMessage() {} func (*RpcAccountChangeNetworkConfigAndRestartResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 1} } func (m *RpcAccountChangeNetworkConfigAndRestartResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16234,7 +16662,7 @@ func (m *RpcAccountChangeNetworkConfigAndRestartResponseError) String() string { } func (*RpcAccountChangeNetworkConfigAndRestartResponseError) ProtoMessage() {} func (*RpcAccountChangeNetworkConfigAndRestartResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 1, 0} } func (m *RpcAccountChangeNetworkConfigAndRestartResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16284,7 +16712,7 @@ func (m *RpcAccountLocalLink) Reset() { *m = RpcAccountLocalLink{} } func (m *RpcAccountLocalLink) String() string { return proto.CompactTextString(m) } func (*RpcAccountLocalLink) ProtoMessage() {} func (*RpcAccountLocalLink) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 15} } func (m *RpcAccountLocalLink) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16320,7 +16748,7 @@ func (m *RpcAccountLocalLinkNewChallenge) Reset() { *m = RpcAccountLocal func (m *RpcAccountLocalLinkNewChallenge) String() string { return proto.CompactTextString(m) } func (*RpcAccountLocalLinkNewChallenge) ProtoMessage() {} func (*RpcAccountLocalLinkNewChallenge) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 15, 0} } func (m *RpcAccountLocalLinkNewChallenge) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16359,7 +16787,7 @@ func (m *RpcAccountLocalLinkNewChallengeRequest) Reset() { func (m *RpcAccountLocalLinkNewChallengeRequest) String() string { return proto.CompactTextString(m) } func (*RpcAccountLocalLinkNewChallengeRequest) ProtoMessage() {} func (*RpcAccountLocalLinkNewChallengeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 15, 0, 0} } func (m *RpcAccountLocalLinkNewChallengeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16406,7 +16834,7 @@ func (m *RpcAccountLocalLinkNewChallengeResponse) Reset() { func (m *RpcAccountLocalLinkNewChallengeResponse) String() string { return proto.CompactTextString(m) } func (*RpcAccountLocalLinkNewChallengeResponse) ProtoMessage() {} func (*RpcAccountLocalLinkNewChallengeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 0, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 15, 0, 1} } func (m *RpcAccountLocalLinkNewChallengeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16462,7 +16890,7 @@ func (m *RpcAccountLocalLinkNewChallengeResponseError) String() string { } func (*RpcAccountLocalLinkNewChallengeResponseError) ProtoMessage() {} func (*RpcAccountLocalLinkNewChallengeResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 0, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 15, 0, 1, 0} } func (m *RpcAccountLocalLinkNewChallengeResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16512,7 +16940,7 @@ func (m *RpcAccountLocalLinkSolveChallenge) Reset() { *m = RpcAccountLoc func (m *RpcAccountLocalLinkSolveChallenge) String() string { return proto.CompactTextString(m) } func (*RpcAccountLocalLinkSolveChallenge) ProtoMessage() {} func (*RpcAccountLocalLinkSolveChallenge) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 15, 1} } func (m *RpcAccountLocalLinkSolveChallenge) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16552,7 +16980,7 @@ func (m *RpcAccountLocalLinkSolveChallengeRequest) Reset() { func (m *RpcAccountLocalLinkSolveChallengeRequest) String() string { return proto.CompactTextString(m) } func (*RpcAccountLocalLinkSolveChallengeRequest) ProtoMessage() {} func (*RpcAccountLocalLinkSolveChallengeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 15, 1, 0} } func (m *RpcAccountLocalLinkSolveChallengeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16609,7 +17037,7 @@ func (m *RpcAccountLocalLinkSolveChallengeResponse) String() string { } func (*RpcAccountLocalLinkSolveChallengeResponse) ProtoMessage() {} func (*RpcAccountLocalLinkSolveChallengeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 1, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 15, 1, 1} } func (m *RpcAccountLocalLinkSolveChallengeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16672,7 +17100,7 @@ func (m *RpcAccountLocalLinkSolveChallengeResponseError) String() string { } func (*RpcAccountLocalLinkSolveChallengeResponseError) ProtoMessage() {} func (*RpcAccountLocalLinkSolveChallengeResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 1, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 15, 1, 1, 0} } func (m *RpcAccountLocalLinkSolveChallengeResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -70592,6 +71020,8 @@ func init() { proto.RegisterEnum("anytype.RpcAccountRecoverResponseErrorCode", RpcAccountRecoverResponseErrorCode_name, RpcAccountRecoverResponseErrorCode_value) proto.RegisterEnum("anytype.RpcAccountDeleteResponseErrorCode", RpcAccountDeleteResponseErrorCode_name, RpcAccountDeleteResponseErrorCode_value) proto.RegisterEnum("anytype.RpcAccountRevertDeletionResponseErrorCode", RpcAccountRevertDeletionResponseErrorCode_name, RpcAccountRevertDeletionResponseErrorCode_value) + proto.RegisterEnum("anytype.RpcAccountMigrateResponseErrorCode", RpcAccountMigrateResponseErrorCode_name, RpcAccountMigrateResponseErrorCode_value) + proto.RegisterEnum("anytype.RpcAccountMigrateCancelResponseErrorCode", RpcAccountMigrateCancelResponseErrorCode_name, RpcAccountMigrateCancelResponseErrorCode_value) proto.RegisterEnum("anytype.RpcAccountSelectResponseErrorCode", RpcAccountSelectResponseErrorCode_name, RpcAccountSelectResponseErrorCode_value) proto.RegisterEnum("anytype.RpcAccountStopResponseErrorCode", RpcAccountStopResponseErrorCode_name, RpcAccountStopResponseErrorCode_value) proto.RegisterEnum("anytype.RpcAccountMoveResponseErrorCode", RpcAccountMoveResponseErrorCode_name, RpcAccountMoveResponseErrorCode_value) @@ -70979,6 +71409,14 @@ func init() { proto.RegisterType((*RpcAccountRevertDeletionRequest)(nil), "anytype.Rpc.Account.RevertDeletion.Request") proto.RegisterType((*RpcAccountRevertDeletionResponse)(nil), "anytype.Rpc.Account.RevertDeletion.Response") proto.RegisterType((*RpcAccountRevertDeletionResponseError)(nil), "anytype.Rpc.Account.RevertDeletion.Response.Error") + proto.RegisterType((*RpcAccountMigrate)(nil), "anytype.Rpc.Account.Migrate") + proto.RegisterType((*RpcAccountMigrateRequest)(nil), "anytype.Rpc.Account.Migrate.Request") + proto.RegisterType((*RpcAccountMigrateResponse)(nil), "anytype.Rpc.Account.Migrate.Response") + proto.RegisterType((*RpcAccountMigrateResponseError)(nil), "anytype.Rpc.Account.Migrate.Response.Error") + proto.RegisterType((*RpcAccountMigrateCancel)(nil), "anytype.Rpc.Account.MigrateCancel") + proto.RegisterType((*RpcAccountMigrateCancelRequest)(nil), "anytype.Rpc.Account.MigrateCancel.Request") + proto.RegisterType((*RpcAccountMigrateCancelResponse)(nil), "anytype.Rpc.Account.MigrateCancel.Response") + proto.RegisterType((*RpcAccountMigrateCancelResponseError)(nil), "anytype.Rpc.Account.MigrateCancel.Response.Error") proto.RegisterType((*RpcAccountSelect)(nil), "anytype.Rpc.Account.Select") proto.RegisterType((*RpcAccountSelectRequest)(nil), "anytype.Rpc.Account.Select.Request") proto.RegisterType((*RpcAccountSelectResponse)(nil), "anytype.Rpc.Account.Select.Response") @@ -72093,1232 +72531,1239 @@ func init() { func init() { proto.RegisterFile("pb/protos/commands.proto", fileDescriptor_8261c968b2e6f45c) } var fileDescriptor_8261c968b2e6f45c = []byte{ - // 19597 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xfd, 0x7d, 0x9c, 0x23, 0x47, - 0x75, 0x2f, 0x8c, 0xaf, 0xba, 0x25, 0xcd, 0xcc, 0x99, 0x97, 0xd5, 0xb6, 0x77, 0xd7, 0xeb, 0xb2, - 0x59, 0x3b, 0x6b, 0x63, 0x1c, 0x63, 0xc6, 0xc6, 0x10, 0x82, 0x8d, 0x8d, 0xad, 0xd1, 0x68, 0x66, - 0x64, 0xcf, 0x48, 0x93, 0x96, 0x66, 0x17, 0x27, 0x37, 0x3f, 0xdd, 0x5e, 0xa9, 0x66, 0xa6, 0xbd, - 0x9a, 0x6e, 0xa5, 0xbb, 0x67, 0xd6, 0xcb, 0xef, 0x73, 0x9f, 0x1b, 0x42, 0x1c, 0x48, 0x88, 0x2f, - 0x49, 0x08, 0x49, 0x78, 0x07, 0x83, 0xe1, 0x42, 0x02, 0x84, 0xf7, 0x0b, 0x49, 0x80, 0xf0, 0x1e, - 0x42, 0x08, 0x81, 0x10, 0x08, 0x09, 0x4f, 0x20, 0x10, 0x42, 0xee, 0x27, 0x5c, 0x9e, 0xe4, 0xb9, - 0x81, 0x90, 0xc0, 0xc3, 0xf3, 0xe9, 0xaa, 0xea, 0x97, 0xd2, 0xa8, 0x5b, 0xd5, 0x1a, 0xb5, 0xc6, - 0x84, 0xe7, 0xbf, 0xee, 0xea, 0xea, 0x53, 0xa7, 0xce, 0xf7, 0x54, 0xd5, 0xa9, 0xaa, 0x53, 0xa7, - 0xe0, 0x54, 0xf7, 0xfc, 0xcd, 0x5d, 0xcb, 0x74, 0x4c, 0xfb, 0xe6, 0x96, 0xb9, 0xb3, 0xa3, 0x19, - 0x6d, 0x7b, 0x9e, 0xbc, 0x2b, 0x13, 0x9a, 0x71, 0xc9, 0xb9, 0xd4, 0xc5, 0xe8, 0xba, 0xee, 0x85, - 0xad, 0x9b, 0x3b, 0xfa, 0xf9, 0x9b, 0xbb, 0xe7, 0x6f, 0xde, 0x31, 0xdb, 0xb8, 0xe3, 0xfd, 0x40, - 0x5e, 0x58, 0x76, 0x74, 0x43, 0x54, 0xae, 0x8e, 0xd9, 0xd2, 0x3a, 0xb6, 0x63, 0x5a, 0x98, 0xe5, - 0x3c, 0x19, 0x14, 0x89, 0xf7, 0xb0, 0xe1, 0x78, 0x14, 0xae, 0xda, 0x32, 0xcd, 0xad, 0x0e, 0xa6, - 0xdf, 0xce, 0xef, 0x6e, 0xde, 0x6c, 0x3b, 0xd6, 0x6e, 0xcb, 0x61, 0x5f, 0xaf, 0xe9, 0xfd, 0xda, - 0xc6, 0x76, 0xcb, 0xd2, 0xbb, 0x8e, 0x69, 0xd1, 0x1c, 0x67, 0x3e, 0xf2, 0xd0, 0x24, 0xc8, 0x6a, - 0xb7, 0x85, 0xbe, 0x35, 0x01, 0x72, 0xb1, 0xdb, 0x45, 0x1f, 0x96, 0x00, 0x96, 0xb1, 0x73, 0x16, - 0x5b, 0xb6, 0x6e, 0x1a, 0xe8, 0x28, 0x4c, 0xa8, 0xf8, 0x67, 0x76, 0xb1, 0xed, 0xdc, 0x9e, 0x7d, - 0xee, 0xd7, 0xe4, 0x0c, 0x7a, 0x44, 0x82, 0x49, 0x15, 0xdb, 0x5d, 0xd3, 0xb0, 0xb1, 0x72, 0x37, - 0xe4, 0xb0, 0x65, 0x99, 0xd6, 0xa9, 0xcc, 0x35, 0x99, 0x1b, 0xa6, 0x6f, 0xbd, 0x71, 0x9e, 0x55, - 0x7f, 0x5e, 0xed, 0xb6, 0xe6, 0x8b, 0xdd, 0xee, 0x7c, 0x40, 0x69, 0xde, 0xfb, 0x69, 0xbe, 0xec, - 0xfe, 0xa1, 0xd2, 0x1f, 0x95, 0x53, 0x30, 0xb1, 0x47, 0x33, 0x9c, 0x92, 0xae, 0xc9, 0xdc, 0x30, - 0xa5, 0x7a, 0xaf, 0xee, 0x97, 0x36, 0x76, 0x34, 0xbd, 0x63, 0x9f, 0x92, 0xe9, 0x17, 0xf6, 0x8a, - 0x1e, 0xce, 0x40, 0x8e, 0x10, 0x51, 0x4a, 0x90, 0x6d, 0x99, 0x6d, 0x4c, 0x8a, 0x9f, 0xbb, 0xf5, - 0x66, 0xf1, 0xe2, 0xe7, 0x4b, 0x66, 0x1b, 0xab, 0xe4, 0x67, 0xe5, 0x1a, 0x98, 0xf6, 0xc4, 0x12, - 0xb0, 0x11, 0x4e, 0x3a, 0x73, 0x2b, 0x64, 0xdd, 0xfc, 0xca, 0x24, 0x64, 0xab, 0x1b, 0xab, 0xab, - 0x85, 0x23, 0xca, 0x31, 0x98, 0xdd, 0xa8, 0xde, 0x5b, 0xad, 0x9d, 0xab, 0x36, 0xcb, 0xaa, 0x5a, - 0x53, 0x0b, 0x19, 0x65, 0x16, 0xa6, 0x16, 0x8a, 0x8b, 0xcd, 0x4a, 0x75, 0x7d, 0xa3, 0x51, 0x90, - 0xd0, 0xcb, 0x65, 0x98, 0xab, 0x63, 0x67, 0x11, 0xef, 0xe9, 0x2d, 0x5c, 0x77, 0x34, 0x07, 0xa3, - 0xe7, 0x67, 0x7c, 0x61, 0x2a, 0x1b, 0x6e, 0xa1, 0xfe, 0x27, 0x56, 0x81, 0x27, 0xed, 0xab, 0x00, - 0x4f, 0x61, 0x9e, 0xfd, 0x3d, 0x1f, 0x4a, 0x53, 0xc3, 0x74, 0xce, 0x3c, 0x01, 0xa6, 0x43, 0xdf, - 0x94, 0x39, 0x80, 0x85, 0x62, 0xe9, 0xde, 0x65, 0xb5, 0xb6, 0x51, 0x5d, 0x2c, 0x1c, 0x71, 0xdf, - 0x97, 0x6a, 0x6a, 0x99, 0xbd, 0x67, 0xd0, 0x77, 0x32, 0x21, 0x30, 0x17, 0x79, 0x30, 0xe7, 0x07, - 0x33, 0xd3, 0x07, 0x50, 0xf4, 0x5a, 0x1f, 0x9c, 0x65, 0x0e, 0x9c, 0x27, 0x25, 0x23, 0x97, 0x3e, - 0x40, 0x0f, 0x4a, 0x30, 0x59, 0xdf, 0xde, 0x75, 0xda, 0xe6, 0x45, 0x03, 0x4d, 0xf9, 0xc8, 0xa0, - 0x6f, 0x84, 0x65, 0xf2, 0x74, 0x5e, 0x26, 0x37, 0xec, 0xaf, 0x04, 0xa3, 0x10, 0x21, 0x8d, 0x57, - 0xfa, 0xd2, 0x28, 0x72, 0xd2, 0x78, 0x82, 0x28, 0xa1, 0xf4, 0xe5, 0xf0, 0xe2, 0xa7, 0x42, 0xae, - 0xde, 0xd5, 0x5a, 0x18, 0x7d, 0x42, 0x86, 0x99, 0x55, 0xac, 0xed, 0xe1, 0x62, 0xb7, 0x6b, 0x99, - 0x7b, 0x18, 0x95, 0x02, 0x7d, 0x3d, 0x05, 0x13, 0xb6, 0x9b, 0xa9, 0xd2, 0x26, 0x35, 0x98, 0x52, - 0xbd, 0x57, 0xe5, 0x34, 0x80, 0xde, 0xc6, 0x86, 0xa3, 0x3b, 0x3a, 0xb6, 0x4f, 0x49, 0xd7, 0xc8, - 0x37, 0x4c, 0xa9, 0xa1, 0x14, 0xf4, 0x2d, 0x49, 0x54, 0xc7, 0x08, 0x17, 0xf3, 0x61, 0x0e, 0x22, - 0xa4, 0xfa, 0x6a, 0x49, 0x44, 0xc7, 0x06, 0x92, 0x4b, 0x26, 0xdb, 0x37, 0x65, 0x92, 0x0b, 0xd7, - 0xcd, 0x51, 0xad, 0x35, 0xeb, 0x1b, 0xa5, 0x95, 0x66, 0x7d, 0xbd, 0x58, 0x2a, 0x17, 0xb0, 0x72, - 0x1c, 0x0a, 0xe4, 0xb1, 0x59, 0xa9, 0x37, 0x17, 0xcb, 0xab, 0xe5, 0x46, 0x79, 0xb1, 0xb0, 0xa9, - 0x28, 0x30, 0xa7, 0x96, 0x7f, 0x62, 0xa3, 0x5c, 0x6f, 0x34, 0x97, 0x8a, 0x95, 0xd5, 0xf2, 0x62, - 0x61, 0xcb, 0xfd, 0x79, 0xb5, 0xb2, 0x56, 0x69, 0x34, 0xd5, 0x72, 0xb1, 0xb4, 0x52, 0x5e, 0x2c, - 0x6c, 0x2b, 0x97, 0xc3, 0x65, 0xd5, 0x5a, 0xb3, 0xb8, 0xbe, 0xae, 0xd6, 0xce, 0x96, 0x9b, 0xec, - 0x8f, 0x7a, 0x41, 0xa7, 0x05, 0x35, 0x9a, 0xf5, 0x95, 0xa2, 0x5a, 0x2e, 0x2e, 0xac, 0x96, 0x0b, - 0xf7, 0xa3, 0x67, 0xcb, 0x30, 0xbb, 0xa6, 0x5d, 0xc0, 0xf5, 0x6d, 0xcd, 0xc2, 0xda, 0xf9, 0x0e, - 0x46, 0xd7, 0x0a, 0xe0, 0x89, 0x3e, 0x11, 0xc6, 0xab, 0xcc, 0xe3, 0x75, 0x73, 0x1f, 0x01, 0x73, - 0x45, 0x44, 0x00, 0xf6, 0xaf, 0x7e, 0x33, 0x58, 0xe1, 0x00, 0x7b, 0x72, 0x42, 0x7a, 0xc9, 0x10, - 0xfb, 0xb9, 0x47, 0x01, 0x62, 0xe8, 0x8b, 0x32, 0xcc, 0x55, 0x8c, 0x3d, 0xdd, 0xc1, 0xcb, 0xd8, - 0xc0, 0x96, 0x3b, 0x0e, 0x08, 0xc1, 0xf0, 0x88, 0x1c, 0x82, 0x61, 0x89, 0x87, 0xe1, 0x96, 0x3e, - 0x62, 0xe3, 0xcb, 0x88, 0x18, 0x6d, 0xaf, 0x82, 0x29, 0x9d, 0xe4, 0x2b, 0xe9, 0x6d, 0x26, 0xb1, - 0x20, 0x41, 0xb9, 0x0e, 0x66, 0xe9, 0xcb, 0x92, 0xde, 0xc1, 0xf7, 0xe2, 0x4b, 0x6c, 0xdc, 0xe5, - 0x13, 0xd1, 0x2f, 0xfb, 0x8d, 0xaf, 0xc2, 0x61, 0xf9, 0x63, 0x49, 0x99, 0x4a, 0x06, 0xe6, 0x0b, - 0x1f, 0x0d, 0xcd, 0x6f, 0x5f, 0x2b, 0xd3, 0xd1, 0xf7, 0x24, 0x98, 0xae, 0x3b, 0x66, 0xd7, 0x55, - 0x59, 0xdd, 0xd8, 0x12, 0x03, 0xf7, 0x63, 0xe1, 0x36, 0x56, 0xe2, 0xc1, 0x7d, 0x42, 0x1f, 0x39, - 0x86, 0x0a, 0x88, 0x68, 0x61, 0xdf, 0xf2, 0x5b, 0xd8, 0x12, 0x87, 0xca, 0xad, 0x89, 0xa8, 0xfd, - 0x00, 0xb6, 0xaf, 0x17, 0xca, 0x50, 0xf0, 0xd4, 0xcc, 0x29, 0xed, 0x5a, 0x16, 0x36, 0x1c, 0x31, - 0x10, 0xfe, 0x2a, 0x0c, 0xc2, 0x0a, 0x0f, 0xc2, 0xad, 0x31, 0xca, 0xec, 0x95, 0x92, 0x62, 0x1b, - 0x7b, 0xbf, 0x8f, 0xe6, 0xbd, 0x1c, 0x9a, 0x3f, 0x9e, 0x9c, 0xad, 0x64, 0x90, 0xae, 0x0c, 0x81, - 0xe8, 0x71, 0x28, 0xb8, 0x63, 0x52, 0xa9, 0x51, 0x39, 0x5b, 0x6e, 0x56, 0xaa, 0x67, 0x2b, 0x8d, - 0x72, 0x01, 0xa3, 0x17, 0xc8, 0x30, 0x43, 0x59, 0x53, 0xf1, 0x9e, 0x79, 0x41, 0xb0, 0xd7, 0xfb, - 0x62, 0x42, 0x63, 0x21, 0x5c, 0x42, 0x44, 0xcb, 0xf8, 0xa5, 0x04, 0xc6, 0x42, 0x0c, 0xb9, 0x47, - 0x53, 0x6f, 0xb5, 0xaf, 0x19, 0x6c, 0xf5, 0x69, 0x2d, 0x7d, 0x7b, 0xab, 0x17, 0x66, 0x01, 0x68, - 0x25, 0xcf, 0xea, 0xf8, 0x22, 0x5a, 0x0b, 0x30, 0xe1, 0xd4, 0x36, 0x33, 0x50, 0x6d, 0xa5, 0x7e, - 0x6a, 0xfb, 0xae, 0xf0, 0x98, 0xb5, 0xc0, 0xa3, 0x77, 0x53, 0xa4, 0xb8, 0x5d, 0x4e, 0xa2, 0x67, - 0x87, 0x9e, 0xa2, 0x48, 0xbc, 0xd5, 0x79, 0x15, 0x4c, 0x91, 0xc7, 0xaa, 0xb6, 0x83, 0x59, 0x1b, - 0x0a, 0x12, 0x94, 0x33, 0x30, 0x43, 0x33, 0xb6, 0x4c, 0xc3, 0xad, 0x4f, 0x96, 0x64, 0xe0, 0xd2, - 0x5c, 0x10, 0x5b, 0x16, 0xd6, 0x1c, 0xd3, 0x22, 0x34, 0x72, 0x14, 0xc4, 0x50, 0x12, 0xfa, 0xba, - 0xdf, 0x0a, 0xcb, 0x9c, 0xe6, 0x3c, 0x31, 0x49, 0x55, 0x92, 0xe9, 0xcd, 0xde, 0x70, 0xed, 0x8f, - 0xb6, 0xba, 0xa6, 0x8b, 0xf6, 0x12, 0x99, 0xda, 0x61, 0xe5, 0x24, 0x28, 0x2c, 0xd5, 0xcd, 0x5b, - 0xaa, 0x55, 0x1b, 0xe5, 0x6a, 0xa3, 0xb0, 0xd9, 0x57, 0xa3, 0xb6, 0xd0, 0xab, 0xb3, 0x90, 0xbd, - 0xc7, 0xd4, 0x0d, 0xf4, 0x60, 0x86, 0x53, 0x09, 0x03, 0x3b, 0x17, 0x4d, 0xeb, 0x82, 0xdf, 0x50, - 0x83, 0x84, 0x78, 0x6c, 0x02, 0x55, 0x92, 0x07, 0xaa, 0x52, 0xb6, 0x9f, 0x2a, 0xfd, 0x5a, 0x58, - 0x95, 0xee, 0xe0, 0x55, 0xe9, 0xfa, 0x3e, 0xf2, 0x77, 0x99, 0x8f, 0xe8, 0x00, 0x3e, 0xea, 0x77, - 0x00, 0x77, 0x71, 0x30, 0x3e, 0x5e, 0x8c, 0x4c, 0x32, 0x00, 0xbf, 0x90, 0x6a, 0xc3, 0xef, 0x07, - 0xf5, 0x56, 0x04, 0xd4, 0xdb, 0x7d, 0xfa, 0x04, 0x7d, 0x7f, 0xd7, 0x71, 0xff, 0xfe, 0x6e, 0xe2, - 0x82, 0x72, 0x02, 0x8e, 0x2d, 0x56, 0x96, 0x96, 0xca, 0x6a, 0xb9, 0xda, 0x68, 0x56, 0xcb, 0x8d, - 0x73, 0x35, 0xf5, 0xde, 0x42, 0x07, 0x3d, 0x2c, 0x03, 0xb8, 0x12, 0x2a, 0x69, 0x46, 0x0b, 0x77, - 0xc4, 0x7a, 0xf4, 0xff, 0x25, 0x25, 0xeb, 0x13, 0x02, 0xfa, 0x11, 0x70, 0xbe, 0x4c, 0x12, 0x6f, - 0x95, 0x91, 0xc4, 0x92, 0x81, 0xfa, 0x86, 0x47, 0x83, 0xed, 0x79, 0x19, 0x1c, 0xf5, 0xe8, 0xb1, - 0xec, 0xfd, 0xa7, 0x7d, 0x6f, 0xce, 0xc2, 0x1c, 0x83, 0xc5, 0x9b, 0xc7, 0x3f, 0x37, 0x23, 0x32, - 0x91, 0x47, 0x30, 0xc9, 0xa6, 0xed, 0x5e, 0xf7, 0xee, 0xbf, 0x2b, 0xcb, 0x30, 0xdd, 0xc5, 0xd6, - 0x8e, 0x6e, 0xdb, 0xba, 0x69, 0xd0, 0x05, 0xb9, 0xb9, 0x5b, 0x1f, 0xeb, 0x4b, 0x9c, 0xac, 0x5d, - 0xce, 0xaf, 0x6b, 0x96, 0xa3, 0xb7, 0xf4, 0xae, 0x66, 0x38, 0xeb, 0x41, 0x66, 0x35, 0xfc, 0x27, - 0xfa, 0xd5, 0x84, 0xd3, 0x1a, 0xbe, 0x26, 0x11, 0x2a, 0xf1, 0xfb, 0x09, 0xa6, 0x24, 0xb1, 0x04, - 0x93, 0xa9, 0xc5, 0x87, 0x53, 0x55, 0x8b, 0x3e, 0x78, 0x6f, 0x29, 0x57, 0xc0, 0x89, 0x4a, 0xb5, - 0x54, 0x53, 0xd5, 0x72, 0xa9, 0xd1, 0x5c, 0x2f, 0xab, 0x6b, 0x95, 0x7a, 0xbd, 0x52, 0xab, 0xd6, - 0x0f, 0xd2, 0xda, 0xd1, 0xc7, 0x65, 0x5f, 0x63, 0x16, 0x71, 0xab, 0xa3, 0x1b, 0x18, 0xdd, 0x75, - 0x40, 0x85, 0xe1, 0x57, 0x7d, 0xc4, 0x71, 0x66, 0xe5, 0x47, 0xe0, 0xfc, 0xaa, 0xe4, 0x38, 0xf7, - 0x27, 0xf8, 0x1f, 0xb8, 0xf9, 0x7f, 0x51, 0x86, 0x63, 0xa1, 0x86, 0xa8, 0xe2, 0x9d, 0x91, 0xad, - 0xe4, 0xfd, 0x5c, 0xb8, 0xed, 0x56, 0x78, 0x4c, 0xfb, 0x59, 0xd3, 0xfb, 0xd8, 0x88, 0x80, 0xf5, - 0x0d, 0x3e, 0xac, 0xab, 0x1c, 0xac, 0x4f, 0x1d, 0x82, 0x66, 0x32, 0x64, 0x7f, 0x37, 0x55, 0x64, - 0xaf, 0x80, 0x13, 0xeb, 0x45, 0xb5, 0x51, 0x29, 0x55, 0xd6, 0x8b, 0xee, 0x38, 0x1a, 0x1a, 0xb2, - 0x23, 0xcc, 0x75, 0x1e, 0xf4, 0xbe, 0xf8, 0xbe, 0x2f, 0x0b, 0x57, 0xf5, 0xef, 0x68, 0x4b, 0xdb, - 0x9a, 0xb1, 0x85, 0x91, 0x2e, 0x02, 0xf5, 0x22, 0x4c, 0xb4, 0x48, 0x76, 0x8a, 0x73, 0x78, 0xeb, - 0x26, 0xa6, 0x2f, 0xa7, 0x25, 0xa8, 0xde, 0xaf, 0xe8, 0x6d, 0x61, 0x85, 0x68, 0xf0, 0x0a, 0xf1, - 0xf4, 0x78, 0xf0, 0xf6, 0xf1, 0x1d, 0xa1, 0x1b, 0x9f, 0xf2, 0x75, 0xe3, 0x1c, 0xa7, 0x1b, 0xa5, - 0x83, 0x91, 0x4f, 0xa6, 0x26, 0x7f, 0xfc, 0x68, 0xe8, 0x00, 0x22, 0xb5, 0x49, 0x8f, 0x1e, 0x15, - 0xfa, 0x76, 0xf7, 0xaf, 0x90, 0x21, 0xbf, 0x88, 0x3b, 0x58, 0x74, 0x25, 0xf2, 0x9b, 0x92, 0xe8, - 0x86, 0x08, 0x85, 0x81, 0xd2, 0x8e, 0x5e, 0x1d, 0x71, 0xf4, 0x1d, 0x6c, 0x3b, 0xda, 0x4e, 0x97, - 0x88, 0x5a, 0x56, 0x83, 0x04, 0xf4, 0xf3, 0x92, 0xc8, 0x76, 0x49, 0x4c, 0x31, 0xff, 0x31, 0xd6, - 0x14, 0x3f, 0x23, 0xc1, 0x64, 0x1d, 0x3b, 0x35, 0xab, 0x8d, 0x2d, 0x54, 0x0f, 0x30, 0xba, 0x06, - 0xa6, 0x09, 0x28, 0xee, 0x34, 0xd3, 0xc7, 0x29, 0x9c, 0xa4, 0x5c, 0x0f, 0x73, 0xfe, 0x2b, 0xf9, - 0x9d, 0x75, 0xe3, 0x3d, 0xa9, 0xe8, 0x9f, 0x32, 0xa2, 0xbb, 0xb8, 0x6c, 0xc9, 0x90, 0x71, 0x13, - 0xd1, 0x4a, 0xc5, 0x76, 0x64, 0x63, 0x49, 0xa5, 0xbf, 0xd1, 0xf5, 0x16, 0x09, 0x60, 0xc3, 0xb0, - 0x3d, 0xb9, 0x3e, 0x3e, 0x81, 0x5c, 0xd1, 0xbf, 0x64, 0x92, 0xcd, 0x62, 0x82, 0x72, 0x22, 0x24, - 0xf6, 0x9a, 0x04, 0x6b, 0x0b, 0x91, 0xc4, 0xd2, 0x97, 0xd9, 0x57, 0xe6, 0x20, 0x7f, 0x4e, 0xeb, - 0x74, 0xb0, 0x83, 0xbe, 0x2a, 0x41, 0xbe, 0x64, 0x61, 0xcd, 0xc1, 0x61, 0xd1, 0x21, 0x98, 0xb4, - 0x4c, 0xd3, 0x59, 0xd7, 0x9c, 0x6d, 0x26, 0x37, 0xff, 0x9d, 0x39, 0x0c, 0xfc, 0x4e, 0xb8, 0xfb, - 0xb8, 0x8b, 0x17, 0xdd, 0x8f, 0x72, 0xb5, 0xa5, 0x05, 0xcd, 0xd3, 0x42, 0x22, 0xfa, 0x0f, 0x04, - 0x93, 0x3b, 0x06, 0xde, 0x31, 0x0d, 0xbd, 0xe5, 0xd9, 0x9c, 0xde, 0x3b, 0xfa, 0x80, 0x2f, 0xd3, - 0x05, 0x4e, 0xa6, 0xf3, 0xc2, 0xa5, 0x24, 0x13, 0x68, 0x7d, 0x88, 0xde, 0xe3, 0x6a, 0xb8, 0x92, - 0x76, 0x06, 0xcd, 0x46, 0xad, 0x59, 0x52, 0xcb, 0xc5, 0x46, 0xb9, 0xb9, 0x5a, 0x2b, 0x15, 0x57, - 0x9b, 0x6a, 0x79, 0xbd, 0x56, 0xc0, 0xe8, 0xef, 0x25, 0x57, 0xb8, 0x2d, 0x73, 0x0f, 0x5b, 0x68, - 0x59, 0x48, 0xce, 0x71, 0x32, 0x61, 0x18, 0xfc, 0x9a, 0xb0, 0xd3, 0x06, 0x93, 0x0e, 0xe3, 0x20, - 0x42, 0x79, 0x3f, 0x28, 0xd4, 0xdc, 0x63, 0x49, 0x3d, 0x0a, 0x24, 0xfd, 0xbf, 0x25, 0x98, 0x28, - 0x99, 0xc6, 0x1e, 0xb6, 0x9c, 0xf0, 0x7c, 0x27, 0x2c, 0xcd, 0x0c, 0x2f, 0x4d, 0x77, 0x90, 0xc4, - 0x86, 0x63, 0x99, 0x5d, 0x6f, 0xc2, 0xe3, 0xbd, 0xa2, 0xd7, 0x25, 0x95, 0x30, 0x2b, 0x39, 0x7a, - 0xe1, 0xb3, 0x7f, 0x41, 0x1c, 0x7b, 0x72, 0x4f, 0x03, 0x78, 0x38, 0x09, 0x2e, 0xfd, 0x19, 0x48, - 0xbf, 0x4b, 0xf9, 0x92, 0x0c, 0xb3, 0xb4, 0xf1, 0xd5, 0x31, 0xb1, 0xd0, 0x50, 0x2d, 0xbc, 0xe4, - 0xd8, 0x23, 0xfc, 0x95, 0x23, 0x9c, 0xf8, 0xf3, 0x5a, 0xb7, 0xeb, 0x2f, 0x3f, 0xaf, 0x1c, 0x51, - 0xd9, 0x3b, 0x55, 0xf3, 0x85, 0x3c, 0x64, 0xb5, 0x5d, 0x67, 0x1b, 0x7d, 0x4f, 0x78, 0xf2, 0xc9, - 0x75, 0x06, 0x8c, 0x9f, 0x08, 0x48, 0x8e, 0x43, 0xce, 0x31, 0x2f, 0x60, 0x4f, 0x0e, 0xf4, 0xc5, - 0x85, 0x43, 0xeb, 0x76, 0x1b, 0xe4, 0x03, 0x83, 0xc3, 0x7b, 0x77, 0x6d, 0x1d, 0xad, 0xd5, 0x32, - 0x77, 0x0d, 0xa7, 0xe2, 0x2d, 0x41, 0x07, 0x09, 0xe8, 0xf3, 0x19, 0x91, 0xc9, 0xac, 0x00, 0x83, - 0xc9, 0x20, 0x3b, 0x3f, 0x44, 0x53, 0x9a, 0x87, 0x1b, 0x8b, 0xeb, 0xeb, 0xcd, 0x46, 0xed, 0xde, - 0x72, 0x35, 0x30, 0x3c, 0x9b, 0x95, 0x6a, 0xb3, 0xb1, 0x52, 0x6e, 0x96, 0x36, 0x54, 0xb2, 0x4e, - 0x58, 0x2c, 0x95, 0x6a, 0x1b, 0xd5, 0x46, 0x01, 0xa3, 0x37, 0x4a, 0x30, 0x53, 0xea, 0x98, 0xb6, - 0x8f, 0xf0, 0xd5, 0x01, 0xc2, 0xbe, 0x18, 0x33, 0x21, 0x31, 0xa2, 0x7f, 0xcf, 0x88, 0x3a, 0x1d, - 0x78, 0x02, 0x09, 0x91, 0x8f, 0xe8, 0xa5, 0x5e, 0x27, 0xe4, 0x74, 0x30, 0x98, 0x5e, 0xfa, 0x4d, - 0xe2, 0x33, 0xb7, 0xc3, 0x44, 0x91, 0x2a, 0x06, 0xfa, 0x9b, 0x0c, 0xe4, 0x4b, 0xa6, 0xb1, 0xa9, - 0x6f, 0xb9, 0xc6, 0x1c, 0x36, 0xb4, 0xf3, 0x1d, 0xbc, 0xa8, 0x39, 0xda, 0x9e, 0x8e, 0x2f, 0x92, - 0x0a, 0x4c, 0xaa, 0x3d, 0xa9, 0x2e, 0x53, 0x2c, 0x05, 0x9f, 0xdf, 0xdd, 0x22, 0x4c, 0x4d, 0xaa, - 0xe1, 0x24, 0xe5, 0xa9, 0x70, 0x39, 0x7d, 0x5d, 0xb7, 0xb0, 0x85, 0x3b, 0x58, 0xb3, 0xb1, 0x3b, - 0x2d, 0x32, 0x70, 0x87, 0x28, 0xed, 0xa4, 0x1a, 0xf5, 0x59, 0x39, 0x03, 0x33, 0xf4, 0x13, 0x31, - 0x45, 0x6c, 0xa2, 0xc6, 0x93, 0x2a, 0x97, 0xa6, 0x3c, 0x01, 0x72, 0xf8, 0x01, 0xc7, 0xd2, 0x4e, - 0xb5, 0x09, 0x5e, 0x97, 0xcf, 0x53, 0xaf, 0xc3, 0x79, 0xcf, 0xeb, 0x70, 0xbe, 0x4e, 0x7c, 0x12, - 0x55, 0x9a, 0x0b, 0xbd, 0x74, 0xd2, 0x37, 0x24, 0xbe, 0x2f, 0x05, 0x8a, 0xa1, 0x40, 0xd6, 0xd0, - 0x76, 0x30, 0xd3, 0x0b, 0xf2, 0xac, 0xdc, 0x08, 0x47, 0xb5, 0x3d, 0xcd, 0xd1, 0xac, 0x55, 0xb3, - 0xa5, 0x75, 0xc8, 0xe0, 0xe7, 0xb5, 0xfc, 0xde, 0x0f, 0x64, 0x47, 0xc8, 0x31, 0x2d, 0x4c, 0x72, - 0x79, 0x3b, 0x42, 0x5e, 0x82, 0x4b, 0x5d, 0x6f, 0x99, 0x06, 0xe1, 0x5f, 0x56, 0xc9, 0xb3, 0x2b, - 0x95, 0xb6, 0x6e, 0xbb, 0x15, 0x21, 0x54, 0xaa, 0x74, 0x6b, 0xa3, 0x7e, 0xc9, 0x68, 0x91, 0xdd, - 0xa0, 0x49, 0x35, 0xea, 0xb3, 0xb2, 0x00, 0xd3, 0x6c, 0x23, 0x64, 0xcd, 0xd5, 0xab, 0x3c, 0xd1, - 0xab, 0x6b, 0x78, 0x9f, 0x2e, 0x8a, 0xe7, 0x7c, 0x35, 0xc8, 0xa7, 0x86, 0x7f, 0x52, 0xee, 0x86, - 0x2b, 0xd9, 0x6b, 0x69, 0xd7, 0x76, 0xcc, 0x1d, 0x0a, 0xfa, 0x92, 0xde, 0xa1, 0x35, 0x98, 0x20, - 0x35, 0x88, 0xcb, 0xa2, 0xdc, 0x0a, 0xc7, 0xbb, 0x16, 0xde, 0xc4, 0xd6, 0x7d, 0xda, 0xce, 0xee, - 0x03, 0x0d, 0x4b, 0x33, 0xec, 0xae, 0x69, 0x39, 0xa7, 0x26, 0x09, 0xf3, 0x7d, 0xbf, 0xb1, 0x8e, - 0x72, 0x12, 0xf2, 0x54, 0x7c, 0xe8, 0xf9, 0x39, 0x61, 0x77, 0x4e, 0x56, 0xa1, 0x58, 0xf3, 0xec, - 0x16, 0x98, 0x60, 0x3d, 0x1c, 0x01, 0x6a, 0xfa, 0xd6, 0x93, 0x3d, 0xeb, 0x0a, 0x8c, 0x8a, 0xea, - 0x65, 0x53, 0x9e, 0x04, 0xf9, 0x16, 0xa9, 0x16, 0xc1, 0x6c, 0xfa, 0xd6, 0x2b, 0xfb, 0x17, 0x4a, - 0xb2, 0xa8, 0x2c, 0x2b, 0xfa, 0x4b, 0x59, 0xc8, 0x03, 0x34, 0x8e, 0xe3, 0x64, 0xad, 0xfa, 0xeb, - 0xd2, 0x10, 0xdd, 0xe6, 0x4d, 0x70, 0x03, 0xeb, 0x13, 0x99, 0xfd, 0xb1, 0xd8, 0x5c, 0xd8, 0xf0, - 0x26, 0x83, 0xae, 0x55, 0x52, 0x6f, 0x14, 0x55, 0x77, 0x26, 0xbf, 0xe8, 0x4e, 0x22, 0x6f, 0x84, - 0xeb, 0x07, 0xe4, 0x2e, 0x37, 0x9a, 0xd5, 0xe2, 0x5a, 0xb9, 0xb0, 0xc9, 0xdb, 0x36, 0xf5, 0x46, - 0x6d, 0xbd, 0xa9, 0x6e, 0x54, 0xab, 0x95, 0xea, 0x32, 0x25, 0xe6, 0x9a, 0x84, 0x27, 0x83, 0x0c, - 0xe7, 0xd4, 0x4a, 0xa3, 0xdc, 0x2c, 0xd5, 0xaa, 0x4b, 0x95, 0xe5, 0x82, 0x3e, 0xc8, 0x30, 0xba, - 0x5f, 0xb9, 0x06, 0xae, 0xe2, 0x38, 0xa9, 0xd4, 0xaa, 0xee, 0xcc, 0xb6, 0x54, 0xac, 0x96, 0xca, - 0xee, 0x34, 0xf6, 0x82, 0x82, 0xe0, 0x04, 0x25, 0xd7, 0x5c, 0xaa, 0xac, 0x86, 0x37, 0xa3, 0x3e, - 0x96, 0x51, 0x4e, 0xc1, 0x65, 0xe1, 0x6f, 0x95, 0xea, 0xd9, 0xe2, 0x6a, 0x65, 0xb1, 0xf0, 0x47, - 0x19, 0xe5, 0x3a, 0xb8, 0x9a, 0xfb, 0x8b, 0xee, 0x2b, 0x35, 0x2b, 0x8b, 0xcd, 0xb5, 0x4a, 0x7d, - 0xad, 0xd8, 0x28, 0xad, 0x14, 0x3e, 0x4e, 0xe6, 0x0b, 0xbe, 0x01, 0x1c, 0x72, 0xcb, 0x7c, 0x61, - 0x78, 0x4c, 0x2f, 0xf2, 0x8a, 0xfa, 0xf8, 0xbe, 0xb0, 0xc7, 0xdb, 0xb0, 0x1f, 0xf6, 0x47, 0x87, - 0x45, 0x4e, 0x85, 0x6e, 0x49, 0x40, 0x2b, 0x99, 0x0e, 0x35, 0x86, 0x50, 0xa1, 0x6b, 0xe0, 0xaa, - 0x6a, 0x99, 0x22, 0xa5, 0x96, 0x4b, 0xb5, 0xb3, 0x65, 0xb5, 0x79, 0xae, 0xb8, 0xba, 0x5a, 0x6e, - 0x34, 0x97, 0x2a, 0x6a, 0xbd, 0x51, 0xd8, 0x44, 0xff, 0x22, 0xf9, 0xab, 0x39, 0x21, 0x69, 0xfd, - 0x8d, 0x94, 0xb4, 0x59, 0xc7, 0xae, 0xda, 0xfc, 0x18, 0xe4, 0x6d, 0x47, 0x73, 0x76, 0x6d, 0xd6, - 0xaa, 0x1f, 0xd3, 0xbf, 0x55, 0xcf, 0xd7, 0x49, 0x26, 0x95, 0x65, 0x46, 0x7f, 0x99, 0x49, 0xd2, - 0x4c, 0x47, 0xb0, 0xa0, 0xa3, 0x0f, 0x21, 0xe2, 0xd3, 0x80, 0x3c, 0x6d, 0xaf, 0xd4, 0x9b, 0xc5, - 0x55, 0xb5, 0x5c, 0x5c, 0xbc, 0xcf, 0x5f, 0xc6, 0xc1, 0xca, 0x09, 0x38, 0xb6, 0x51, 0x2d, 0x2e, - 0xac, 0x96, 0x49, 0x73, 0xa9, 0x55, 0xab, 0xe5, 0x92, 0x2b, 0xf7, 0x9f, 0x27, 0x9b, 0x26, 0xae, - 0x05, 0x4d, 0xf8, 0x76, 0xad, 0x9c, 0x90, 0xfc, 0xbf, 0x26, 0xec, 0x5b, 0x14, 0x68, 0x58, 0x98, - 0xd6, 0x68, 0x71, 0xf8, 0xbc, 0x90, 0x3b, 0x91, 0x10, 0x27, 0xc9, 0xf0, 0xf8, 0xcf, 0x43, 0xe0, - 0x71, 0x02, 0x8e, 0x85, 0xf1, 0x20, 0x6e, 0x45, 0xd1, 0x30, 0x7c, 0x79, 0x12, 0xf2, 0x75, 0xdc, - 0xc1, 0x2d, 0x07, 0xbd, 0x39, 0x64, 0x4c, 0xcc, 0x81, 0xe4, 0xbb, 0xb1, 0x48, 0x7a, 0x9b, 0x9b, - 0x3e, 0x4b, 0x3d, 0xd3, 0xe7, 0x18, 0x33, 0x40, 0x4e, 0x64, 0x06, 0x64, 0x53, 0x30, 0x03, 0x72, - 0xc3, 0x9b, 0x01, 0xf9, 0x41, 0x66, 0x00, 0x7a, 0x4d, 0x3e, 0x69, 0x2f, 0x41, 0x45, 0x7d, 0xb8, - 0x83, 0xff, 0xff, 0xca, 0x26, 0xe9, 0x55, 0xfa, 0x72, 0x9c, 0x4c, 0x8b, 0xbf, 0x27, 0xa7, 0xb0, - 0xfc, 0xa0, 0x5c, 0x0b, 0x57, 0x07, 0xef, 0xcd, 0xf2, 0x33, 0x2a, 0xf5, 0x46, 0x9d, 0x8c, 0xf8, - 0xa5, 0x9a, 0xaa, 0x6e, 0xac, 0xd3, 0x35, 0xe4, 0x93, 0xa0, 0x04, 0x54, 0xd4, 0x8d, 0x2a, 0x1d, - 0xdf, 0xb7, 0x78, 0xea, 0x4b, 0x95, 0xea, 0x62, 0xd3, 0x6f, 0x33, 0xd5, 0xa5, 0x5a, 0x61, 0xdb, - 0x9d, 0xb2, 0x85, 0xa8, 0xbb, 0x03, 0x34, 0x2b, 0xa1, 0x58, 0x5d, 0x6c, 0xae, 0x55, 0xcb, 0x6b, - 0xb5, 0x6a, 0xa5, 0x44, 0xd2, 0xeb, 0xe5, 0x46, 0x41, 0x77, 0x07, 0x9a, 0x1e, 0x8b, 0xa2, 0x5e, - 0x2e, 0xaa, 0xa5, 0x95, 0xb2, 0x4a, 0x8b, 0xbc, 0x5f, 0xb9, 0x1e, 0xce, 0x14, 0xab, 0xb5, 0x86, - 0x9b, 0x52, 0xac, 0xde, 0xd7, 0xb8, 0x6f, 0xbd, 0xdc, 0x5c, 0x57, 0x6b, 0xa5, 0x72, 0xbd, 0xee, - 0xb6, 0x53, 0x66, 0x7f, 0x14, 0x3a, 0xca, 0xd3, 0xe1, 0xf6, 0x10, 0x6b, 0xe5, 0x06, 0xd9, 0xb0, - 0x5c, 0xab, 0x11, 0x9f, 0x95, 0xc5, 0x72, 0x73, 0xa5, 0x58, 0x6f, 0x56, 0xaa, 0xa5, 0xda, 0xda, - 0x7a, 0xb1, 0x51, 0x71, 0x9b, 0xf3, 0xba, 0x5a, 0x6b, 0xd4, 0x9a, 0x67, 0xcb, 0x6a, 0xbd, 0x52, - 0xab, 0x16, 0x0c, 0xb7, 0xca, 0xa1, 0xf6, 0xef, 0xf5, 0xc3, 0xa6, 0x72, 0x15, 0x9c, 0xf2, 0xd2, - 0x57, 0x6b, 0xae, 0xa0, 0x43, 0x16, 0x49, 0x37, 0x55, 0x8b, 0xe4, 0xdf, 0x24, 0xc8, 0xd6, 0x1d, - 0xb3, 0x8b, 0x7e, 0x34, 0xe8, 0x60, 0x4e, 0x03, 0x58, 0x64, 0xff, 0xd1, 0x9d, 0x85, 0xb1, 0x79, - 0x59, 0x28, 0x05, 0x7d, 0x44, 0x78, 0xd3, 0x24, 0xe8, 0xb3, 0xcd, 0x6e, 0x84, 0xad, 0xf2, 0x1d, - 0xb1, 0x53, 0x24, 0xd1, 0x84, 0x92, 0xe9, 0xfb, 0x2f, 0x0d, 0xb3, 0x2d, 0x82, 0xe0, 0x64, 0x08, - 0x36, 0x57, 0xfe, 0x9e, 0x4a, 0x60, 0xe5, 0x72, 0xb8, 0xac, 0x47, 0xb9, 0x88, 0x4e, 0x6d, 0x2a, - 0x3f, 0x02, 0x8f, 0x09, 0xa9, 0x77, 0x79, 0xad, 0x76, 0xb6, 0xec, 0x2b, 0xf2, 0x62, 0xb1, 0x51, - 0x2c, 0x6c, 0xa1, 0xcf, 0xc8, 0x90, 0x5d, 0x33, 0xf7, 0x7a, 0xf7, 0xaa, 0x0c, 0x7c, 0x31, 0xb4, - 0x16, 0xea, 0xbd, 0xf2, 0x5e, 0xf3, 0x42, 0x62, 0x5f, 0x8b, 0xde, 0x97, 0xfe, 0xbc, 0x94, 0x44, - 0xec, 0x6b, 0x07, 0xdd, 0x8c, 0xfe, 0x87, 0x61, 0xc4, 0x1e, 0x21, 0x5a, 0xac, 0x9c, 0x81, 0xd3, - 0xc1, 0x87, 0xca, 0x62, 0xb9, 0xda, 0xa8, 0x2c, 0xdd, 0x17, 0x08, 0xb7, 0xa2, 0x0a, 0x89, 0x7f, - 0x50, 0x37, 0x16, 0x3f, 0xd3, 0x38, 0x05, 0xc7, 0x83, 0x6f, 0xcb, 0xe5, 0x86, 0xf7, 0xe5, 0x7e, - 0xf4, 0x60, 0x0e, 0x66, 0x68, 0xb7, 0xbe, 0xd1, 0x6d, 0x6b, 0x0e, 0x46, 0x4f, 0x0a, 0xd0, 0xbd, - 0x01, 0x8e, 0x56, 0xd6, 0x97, 0xea, 0x75, 0xc7, 0xb4, 0xb4, 0x2d, 0x5c, 0x6c, 0xb7, 0x2d, 0x26, - 0xad, 0xde, 0x64, 0xf4, 0x0e, 0xe1, 0x75, 0x3e, 0x7e, 0x28, 0xa1, 0x65, 0x46, 0xa0, 0xfe, 0x25, - 0xa1, 0x75, 0x39, 0x01, 0x82, 0xc9, 0xd0, 0xbf, 0x7f, 0xc4, 0x6d, 0x2e, 0x1a, 0x97, 0xcd, 0x33, - 0xcf, 0x91, 0x60, 0xaa, 0xa1, 0xef, 0xe0, 0x67, 0x9a, 0x06, 0xb6, 0x95, 0x09, 0x90, 0x97, 0xd7, - 0x1a, 0x85, 0x23, 0xee, 0x83, 0x6b, 0x54, 0x65, 0xc8, 0x43, 0xd9, 0x2d, 0xc0, 0x7d, 0x28, 0x36, - 0x0a, 0xb2, 0xfb, 0xb0, 0x56, 0x6e, 0x14, 0xb2, 0xee, 0x43, 0xb5, 0xdc, 0x28, 0xe4, 0xdc, 0x87, - 0xf5, 0xd5, 0x46, 0x21, 0xef, 0x3e, 0x54, 0xea, 0x8d, 0xc2, 0x84, 0xfb, 0xb0, 0x50, 0x6f, 0x14, - 0x26, 0xdd, 0x87, 0xb3, 0xf5, 0x46, 0x61, 0xca, 0x7d, 0x28, 0x35, 0x1a, 0x05, 0x70, 0x1f, 0xee, - 0xa9, 0x37, 0x0a, 0xd3, 0xee, 0x43, 0xb1, 0xd4, 0x28, 0xcc, 0x90, 0x87, 0x72, 0xa3, 0x30, 0xeb, - 0x3e, 0xd4, 0xeb, 0x8d, 0xc2, 0x1c, 0xa1, 0x5c, 0x6f, 0x14, 0x8e, 0x92, 0xb2, 0x2a, 0x8d, 0x42, - 0xc1, 0x7d, 0x58, 0xa9, 0x37, 0x0a, 0xc7, 0x48, 0xe6, 0x7a, 0xa3, 0xa0, 0x90, 0x42, 0xeb, 0x8d, - 0xc2, 0x65, 0x24, 0x4f, 0xbd, 0x51, 0x38, 0x4e, 0x8a, 0xa8, 0x37, 0x0a, 0x27, 0x08, 0x1b, 0xe5, - 0x46, 0xe1, 0x24, 0xc9, 0xa3, 0x36, 0x0a, 0x97, 0x93, 0x4f, 0xd5, 0x46, 0xe1, 0x14, 0x61, 0xac, - 0xdc, 0x28, 0x5c, 0x41, 0x1e, 0xd4, 0x46, 0x01, 0x91, 0x4f, 0xc5, 0x46, 0xe1, 0x4a, 0xf4, 0x18, - 0x98, 0x5a, 0xc6, 0x0e, 0x05, 0x11, 0x15, 0x40, 0x5e, 0xc6, 0x4e, 0xd8, 0x8c, 0xff, 0x8a, 0x0c, - 0x97, 0xb3, 0xa9, 0xdf, 0x92, 0x65, 0xee, 0xac, 0xe2, 0x2d, 0xad, 0x75, 0xa9, 0xfc, 0x80, 0x6b, - 0x42, 0x85, 0xf7, 0x65, 0x15, 0xc8, 0x76, 0x83, 0xce, 0x88, 0x3c, 0xc7, 0x5a, 0x9c, 0xde, 0x62, - 0x94, 0x1c, 0x2c, 0x46, 0x31, 0x8b, 0xec, 0x9f, 0xc3, 0x1a, 0xcd, 0xad, 0x1f, 0x67, 0x7a, 0xd6, - 0x8f, 0xdd, 0x66, 0xd2, 0xc5, 0x96, 0x6d, 0x1a, 0x5a, 0xa7, 0xce, 0x36, 0xee, 0xe9, 0xaa, 0x57, - 0x6f, 0xb2, 0xf2, 0x13, 0x5e, 0xcb, 0xa0, 0x56, 0xd9, 0xd3, 0xe2, 0x66, 0xb8, 0xbd, 0xd5, 0x8c, - 0x68, 0x24, 0x1f, 0xf7, 0x1b, 0x49, 0x83, 0x6b, 0x24, 0x77, 0x1f, 0x80, 0x76, 0xb2, 0xf6, 0x52, - 0x19, 0x6e, 0x6a, 0x11, 0xb8, 0xb5, 0x7a, 0xcb, 0xd5, 0x32, 0xfa, 0x8c, 0x04, 0x27, 0xcb, 0x46, - 0x3f, 0x0b, 0x3f, 0xac, 0x0b, 0x6f, 0x0c, 0x43, 0xb3, 0xce, 0x8b, 0xf4, 0xf6, 0xbe, 0xd5, 0xee, - 0x4f, 0x33, 0x42, 0xa2, 0x9f, 0xf4, 0x25, 0x5a, 0xe7, 0x24, 0x7a, 0xd7, 0xf0, 0xa4, 0x93, 0x09, - 0xb4, 0x3a, 0xd2, 0x0e, 0x28, 0x8b, 0xbe, 0x9e, 0x85, 0xc7, 0x50, 0xdf, 0x1b, 0xc6, 0x21, 0x6d, - 0x65, 0x45, 0xa3, 0xad, 0x62, 0xdb, 0xd1, 0x2c, 0x87, 0x3b, 0x0f, 0xdd, 0x33, 0x95, 0xca, 0xa4, - 0x30, 0x95, 0x92, 0x06, 0x4e, 0xa5, 0xd0, 0xdb, 0xc3, 0xe6, 0xc3, 0x39, 0x1e, 0xe3, 0x62, 0xff, - 0xfe, 0x3f, 0xae, 0x86, 0x51, 0x50, 0xfb, 0x76, 0xc5, 0x4f, 0x72, 0x50, 0x2f, 0x1d, 0xb8, 0x84, - 0x64, 0x88, 0x7f, 0x64, 0xb4, 0x76, 0x5e, 0x36, 0xfc, 0x8d, 0x37, 0x4a, 0x0a, 0xed, 0x54, 0x0d, - 0xf4, 0x4f, 0x4d, 0xc0, 0x14, 0x69, 0x0b, 0xab, 0xba, 0x71, 0x01, 0x3d, 0x2c, 0xc3, 0x4c, 0x15, - 0x5f, 0x2c, 0x6d, 0x6b, 0x9d, 0x0e, 0x36, 0xb6, 0x70, 0xd8, 0x6c, 0x3f, 0x05, 0x13, 0x5a, 0xb7, - 0x5b, 0x0d, 0xf6, 0x19, 0xbc, 0x57, 0xd6, 0xff, 0x7e, 0xad, 0x6f, 0x23, 0xcf, 0xc4, 0x34, 0x72, - 0xbf, 0xdc, 0xf9, 0x70, 0x99, 0x11, 0x33, 0xe4, 0x6b, 0x60, 0xba, 0xe5, 0x65, 0xf1, 0xcf, 0x4d, - 0x84, 0x93, 0xd0, 0xdf, 0x25, 0xea, 0x06, 0x84, 0x0a, 0x4f, 0xa6, 0x14, 0x78, 0xc4, 0x76, 0xc8, - 0x09, 0x38, 0xd6, 0xa8, 0xd5, 0x9a, 0x6b, 0xc5, 0xea, 0x7d, 0xc1, 0x79, 0xe5, 0x4d, 0xf4, 0xb2, - 0x2c, 0xcc, 0xd5, 0xcd, 0xce, 0x1e, 0x0e, 0x60, 0xaa, 0x70, 0x0e, 0x39, 0x61, 0x39, 0x65, 0xf6, - 0xc9, 0x49, 0x39, 0x09, 0x79, 0xcd, 0xb0, 0x2f, 0x62, 0xcf, 0x36, 0x64, 0x6f, 0x0c, 0xc6, 0xf7, - 0x85, 0xdb, 0xb1, 0xca, 0xc3, 0x78, 0xc7, 0x00, 0x49, 0xf2, 0x5c, 0x45, 0x00, 0x79, 0x06, 0x66, - 0x6c, 0xba, 0x59, 0xd8, 0x08, 0xed, 0x09, 0x73, 0x69, 0x84, 0x45, 0xba, 0x5b, 0x2d, 0x33, 0x16, - 0xc9, 0x1b, 0x7a, 0xd8, 0x6f, 0xfe, 0x1b, 0x1c, 0xc4, 0xc5, 0x83, 0x30, 0x96, 0x0c, 0xe4, 0x57, - 0x8c, 0x7a, 0x86, 0x77, 0x0a, 0x8e, 0xb3, 0x56, 0xdb, 0x2c, 0xad, 0x14, 0x57, 0x57, 0xcb, 0xd5, - 0xe5, 0x72, 0xb3, 0xb2, 0x48, 0xb7, 0x2a, 0x82, 0x94, 0x62, 0xa3, 0x51, 0x5e, 0x5b, 0x6f, 0xd4, - 0x9b, 0xe5, 0x67, 0x94, 0xca, 0xe5, 0x45, 0xe2, 0x12, 0x47, 0xce, 0xb4, 0x78, 0xce, 0x8b, 0xc5, - 0x6a, 0xfd, 0x5c, 0x59, 0x2d, 0x6c, 0x9f, 0x29, 0xc2, 0x74, 0xa8, 0x9f, 0x77, 0xb9, 0x5b, 0xc4, - 0x9b, 0xda, 0x6e, 0x87, 0xd9, 0x6a, 0x85, 0x23, 0x2e, 0x77, 0x44, 0x36, 0x35, 0xa3, 0x73, 0xa9, - 0x90, 0x51, 0x0a, 0x30, 0x13, 0xee, 0xd2, 0x0b, 0x12, 0x7a, 0xcb, 0x55, 0x30, 0x75, 0xce, 0xb4, - 0x2e, 0x10, 0x3f, 0x2e, 0xf4, 0x6e, 0x1a, 0xd7, 0xc4, 0x3b, 0x21, 0x1a, 0x1a, 0xd8, 0x5f, 0x21, - 0xee, 0x2d, 0xe0, 0x51, 0x9b, 0x1f, 0x78, 0x0a, 0xf4, 0x1a, 0x98, 0xbe, 0xe8, 0xe5, 0x0e, 0x5a, - 0x7a, 0x28, 0x09, 0xfd, 0x77, 0xb1, 0xfd, 0xff, 0xc1, 0x45, 0xa6, 0xbf, 0x3f, 0xfd, 0x66, 0x09, - 0xf2, 0xcb, 0xd8, 0x29, 0x76, 0x3a, 0x61, 0xb9, 0xbd, 0x48, 0xf8, 0x64, 0x0f, 0x57, 0x89, 0x62, - 0xa7, 0x13, 0xdd, 0xa8, 0x42, 0x02, 0xf2, 0x3c, 0xd0, 0xb9, 0x34, 0x41, 0xbf, 0xb9, 0x01, 0x05, - 0xa6, 0x2f, 0xb1, 0x0f, 0xc8, 0xfe, 0x1e, 0xf7, 0x23, 0x21, 0x2b, 0xe7, 0x89, 0x41, 0x4c, 0x9b, - 0x4c, 0xfc, 0x5e, 0xb9, 0x97, 0x4f, 0xb9, 0x17, 0x26, 0x76, 0x6d, 0x5c, 0xd2, 0x6c, 0x4c, 0x78, - 0xeb, 0xad, 0x69, 0xed, 0xfc, 0xfd, 0xb8, 0xe5, 0xcc, 0x57, 0x76, 0x5c, 0x83, 0x7a, 0x83, 0x66, - 0xf4, 0xc3, 0xc4, 0xb0, 0x77, 0xd5, 0xa3, 0xe0, 0x4e, 0x4a, 0x2e, 0xea, 0xce, 0x76, 0x69, 0x5b, - 0x73, 0xd8, 0xda, 0xb6, 0xff, 0x8e, 0x9e, 0x3f, 0x04, 0x9c, 0xb1, 0x7b, 0xc1, 0x91, 0x07, 0x04, - 0x13, 0x83, 0x38, 0x82, 0x0d, 0xdc, 0x61, 0x40, 0xfc, 0x47, 0x09, 0xb2, 0xb5, 0x2e, 0x36, 0x84, - 0x4f, 0xc3, 0xf8, 0xb2, 0x95, 0x7a, 0x64, 0xfb, 0xb0, 0xb8, 0x77, 0x98, 0x5f, 0x69, 0xb7, 0xe4, - 0x08, 0xc9, 0xde, 0x0c, 0x59, 0xdd, 0xd8, 0x34, 0x99, 0x61, 0x7a, 0x65, 0xc4, 0x26, 0x50, 0xc5, - 0xd8, 0x34, 0x55, 0x92, 0x51, 0xd4, 0x31, 0x2c, 0xae, 0xec, 0xf4, 0xc5, 0xfd, 0x8d, 0x49, 0xc8, - 0x53, 0x75, 0x46, 0x2f, 0x94, 0x41, 0x2e, 0xb6, 0xdb, 0x11, 0x82, 0x97, 0xf6, 0x09, 0xde, 0x24, - 0xbf, 0xf9, 0x98, 0xf8, 0xef, 0x7c, 0x30, 0x13, 0xc1, 0xbe, 0x9d, 0x35, 0xa9, 0x62, 0xbb, 0x1d, - 0xed, 0x83, 0xea, 0x17, 0x28, 0xf1, 0x05, 0x86, 0x5b, 0xb8, 0x2c, 0xd6, 0xc2, 0x13, 0x0f, 0x04, - 0x91, 0xfc, 0xa5, 0x0f, 0xd1, 0x3f, 0x4b, 0x30, 0xb1, 0xaa, 0xdb, 0x8e, 0x8b, 0x4d, 0x51, 0x04, - 0x9b, 0xab, 0x60, 0xca, 0x13, 0x8d, 0xdb, 0xe5, 0xb9, 0xfd, 0x79, 0x90, 0x80, 0x5e, 0x1d, 0x46, - 0xe7, 0x1e, 0x1e, 0x9d, 0x27, 0xc7, 0xd7, 0x9e, 0x71, 0x11, 0x7d, 0xca, 0x20, 0x28, 0x56, 0xea, - 0x2d, 0xf6, 0x77, 0x7c, 0x81, 0xaf, 0x71, 0x02, 0xbf, 0x6d, 0x98, 0x22, 0xd3, 0x17, 0xfa, 0x67, - 0x25, 0x00, 0xb7, 0x6c, 0x76, 0x94, 0xeb, 0x71, 0xdc, 0x01, 0xed, 0x18, 0xe9, 0xbe, 0x2c, 0x2c, - 0xdd, 0x35, 0x5e, 0xba, 0x3f, 0x3e, 0xb8, 0xaa, 0x71, 0x47, 0xb6, 0x94, 0x02, 0xc8, 0xba, 0x2f, - 0x5a, 0xf7, 0x11, 0xbd, 0xd9, 0x17, 0xea, 0x3a, 0x27, 0xd4, 0x3b, 0x86, 0x2c, 0x29, 0x7d, 0xb9, - 0xfe, 0x95, 0x04, 0x13, 0x75, 0xec, 0xb8, 0xdd, 0x24, 0x3a, 0x2b, 0xd2, 0xc3, 0x87, 0xda, 0xb6, - 0x24, 0xd8, 0xb6, 0xbf, 0x9d, 0x11, 0x0d, 0xf4, 0x12, 0x48, 0x86, 0xf1, 0x14, 0xb1, 0x78, 0xf0, - 0x88, 0x50, 0xa0, 0x97, 0x41, 0xd4, 0xd2, 0x97, 0xee, 0x1b, 0x25, 0x7f, 0x63, 0x9e, 0x3f, 0x69, - 0x11, 0x36, 0x8b, 0x33, 0xfb, 0xcd, 0x62, 0xf1, 0x93, 0x16, 0xe1, 0x3a, 0x46, 0xef, 0x4a, 0x27, - 0x36, 0x36, 0x46, 0xb0, 0x61, 0x3c, 0x8c, 0xbc, 0x9e, 0x2d, 0x43, 0x9e, 0xad, 0x2c, 0xdf, 0x15, - 0xbf, 0xb2, 0x3c, 0x78, 0x6a, 0xf1, 0xae, 0x21, 0x4c, 0xb9, 0xb8, 0xe5, 0x5e, 0x9f, 0x0d, 0x29, - 0xc4, 0xc6, 0x4d, 0x90, 0x23, 0x91, 0x28, 0xd9, 0x38, 0x17, 0xec, 0xf5, 0x7b, 0x24, 0xca, 0xee, - 0x57, 0x95, 0x66, 0x4a, 0x8c, 0xc2, 0x08, 0x56, 0x88, 0x87, 0x41, 0xe1, 0x1d, 0x0a, 0xc0, 0xfa, - 0xee, 0xf9, 0x8e, 0x6e, 0x6f, 0xeb, 0xc6, 0x16, 0xfa, 0x7e, 0x06, 0x66, 0xd8, 0x2b, 0x0d, 0xa8, - 0x18, 0x6b, 0xfe, 0x45, 0x1a, 0x05, 0x05, 0x90, 0x77, 0x2d, 0x9d, 0x2d, 0x03, 0xb8, 0x8f, 0xca, - 0x9d, 0xbe, 0x23, 0x4f, 0xb6, 0xe7, 0x28, 0xbd, 0x2b, 0x86, 0x80, 0x83, 0xf9, 0x50, 0xe9, 0x81, - 0x43, 0x4f, 0x38, 0x6a, 0x66, 0x8e, 0x8f, 0x9a, 0xc9, 0x9d, 0xaf, 0xcb, 0xf7, 0x9c, 0xaf, 0x73, - 0x71, 0xb4, 0xf5, 0x67, 0x62, 0xe2, 0x5c, 0x2a, 0xab, 0xe4, 0xd9, 0xfd, 0xe3, 0x7e, 0x53, 0x37, - 0xc8, 0x66, 0x01, 0x73, 0x1d, 0x0d, 0x12, 0xd0, 0xfb, 0x83, 0x89, 0x8c, 0x29, 0x68, 0x05, 0x27, - 0x10, 0x03, 0x57, 0x76, 0xb6, 0xb7, 0xec, 0x0f, 0x09, 0x47, 0xc9, 0x0a, 0x09, 0x2c, 0x76, 0x4a, - 0xc2, 0x38, 0x90, 0x7c, 0x0e, 0x42, 0xbb, 0x7d, 0x71, 0xdd, 0xe9, 0x20, 0xfa, 0xc9, 0x14, 0x73, - 0x67, 0x88, 0xc5, 0x17, 0x05, 0xe6, 0xbc, 0x53, 0x87, 0xb5, 0x85, 0x7b, 0xca, 0xa5, 0x46, 0x01, - 0xef, 0x3f, 0x89, 0x48, 0xce, 0x1c, 0xd2, 0xf3, 0x85, 0xc1, 0x02, 0x0b, 0xfa, 0x9f, 0x12, 0xe4, - 0x99, 0xed, 0x70, 0xd7, 0x01, 0x21, 0x44, 0x2f, 0x1f, 0x06, 0x92, 0xd8, 0xc3, 0xdf, 0x9f, 0x48, - 0x0a, 0xc0, 0x08, 0xac, 0x85, 0xfb, 0x52, 0x03, 0x00, 0xfd, 0xab, 0x04, 0x59, 0xd7, 0xa6, 0x11, - 0x3b, 0x5a, 0xfb, 0x71, 0x61, 0xa7, 0xd6, 0x90, 0x00, 0x5c, 0xf2, 0x11, 0xfa, 0xbd, 0x00, 0x53, - 0x5d, 0x9a, 0xd1, 0x3f, 0xd8, 0x7d, 0x9d, 0x40, 0xcf, 0x82, 0xd5, 0xe0, 0x37, 0xf4, 0x4e, 0x21, - 0xc7, 0xd8, 0x78, 0x7e, 0x92, 0xc1, 0x51, 0x1e, 0xc5, 0x29, 0xdc, 0x4d, 0xf4, 0x5d, 0x09, 0x40, - 0xc5, 0xb6, 0xd9, 0xd9, 0xc3, 0x1b, 0x96, 0x8e, 0xae, 0x0c, 0x00, 0x60, 0xcd, 0x3e, 0x13, 0x34, - 0xfb, 0x4f, 0x85, 0x05, 0xbf, 0xcc, 0x0b, 0xfe, 0x89, 0xd1, 0x9a, 0xe7, 0x11, 0x8f, 0x10, 0xff, - 0xd3, 0x61, 0x82, 0xc9, 0x91, 0x19, 0x88, 0x62, 0xc2, 0xf7, 0x7e, 0x42, 0xef, 0xf1, 0x45, 0x7f, - 0x0f, 0x27, 0xfa, 0xa7, 0x24, 0xe6, 0x28, 0x19, 0x00, 0xa5, 0x21, 0x00, 0x38, 0x0a, 0xd3, 0x1e, - 0x00, 0x1b, 0x6a, 0xa5, 0x80, 0xd1, 0xdb, 0x64, 0xb2, 0x97, 0x4e, 0x47, 0xaa, 0x83, 0xf7, 0x34, - 0x5f, 0x15, 0x9e, 0xb9, 0x87, 0xe4, 0xe1, 0x97, 0x9f, 0x12, 0x40, 0x7f, 0x2a, 0x34, 0x55, 0x17, - 0x60, 0xe8, 0xd1, 0xd2, 0x5f, 0x9d, 0x29, 0xc3, 0x2c, 0x67, 0x62, 0x28, 0xa7, 0xe0, 0x38, 0x97, - 0x40, 0xc7, 0xbb, 0x76, 0xe1, 0x88, 0x82, 0xe0, 0x24, 0xf7, 0x85, 0xbd, 0xe0, 0x76, 0x21, 0x83, - 0xfe, 0xfc, 0x33, 0x19, 0x7f, 0xf1, 0xe6, 0x5d, 0x59, 0xb6, 0x6c, 0xf6, 0x51, 0x3e, 0x96, 0x58, - 0xcb, 0x34, 0x1c, 0xfc, 0x40, 0xc8, 0x97, 0xc1, 0x4f, 0x88, 0xb5, 0x1a, 0x4e, 0xc1, 0x84, 0x63, - 0x85, 0xfd, 0x1b, 0xbc, 0xd7, 0xb0, 0x62, 0xe5, 0x78, 0xc5, 0xaa, 0xc2, 0x19, 0xdd, 0x68, 0x75, - 0x76, 0xdb, 0x58, 0xc5, 0x1d, 0xcd, 0x95, 0xa1, 0x5d, 0xb4, 0x17, 0x71, 0x17, 0x1b, 0x6d, 0x6c, - 0x38, 0x94, 0x4f, 0xef, 0x2c, 0x93, 0x40, 0x4e, 0x5e, 0x19, 0xef, 0xe4, 0x95, 0xf1, 0x71, 0xfd, - 0xd6, 0x63, 0x63, 0x16, 0xef, 0x6e, 0x03, 0xa0, 0x75, 0x3b, 0xab, 0xe3, 0x8b, 0x4c, 0x0d, 0xaf, - 0xe8, 0x59, 0xc2, 0xab, 0xf9, 0x19, 0xd4, 0x50, 0x66, 0xf4, 0x45, 0x5f, 0xfd, 0xee, 0xe6, 0xd4, - 0xef, 0x26, 0x41, 0x16, 0x92, 0x69, 0x5d, 0x77, 0x08, 0xad, 0x9b, 0x85, 0xa9, 0x60, 0x67, 0x57, - 0x56, 0xae, 0x80, 0x13, 0x9e, 0xaf, 0x68, 0xb5, 0x5c, 0x5e, 0xac, 0x37, 0x37, 0xd6, 0x97, 0xd5, - 0xe2, 0x62, 0xb9, 0x00, 0xae, 0x7e, 0x52, 0xbd, 0xf4, 0x5d, 0x3c, 0xb3, 0xe8, 0x2f, 0x24, 0xc8, - 0x91, 0x83, 0x78, 0xe8, 0xa7, 0x47, 0xa4, 0x39, 0x36, 0xe7, 0x19, 0xe3, 0x8f, 0xbb, 0xe2, 0x31, - 0xbe, 0x99, 0x30, 0x09, 0x57, 0x07, 0x8a, 0xf1, 0x1d, 0x43, 0x28, 0xfd, 0x69, 0x8d, 0xdb, 0x24, - 0xeb, 0xdb, 0xe6, 0xc5, 0x1f, 0xe6, 0x26, 0xe9, 0xd6, 0xff, 0x90, 0x9b, 0x64, 0x1f, 0x16, 0xc6, - 0xde, 0x24, 0xfb, 0xb4, 0xbb, 0x98, 0x66, 0x8a, 0x9e, 0x95, 0xf3, 0xe7, 0x7f, 0xcf, 0x91, 0x0e, - 0xb4, 0x91, 0x55, 0x84, 0x59, 0xdd, 0x70, 0xb0, 0x65, 0x68, 0x9d, 0xa5, 0x8e, 0xb6, 0xe5, 0xd9, - 0xa7, 0xbd, 0xbb, 0x17, 0x95, 0x50, 0x1e, 0x95, 0xff, 0x43, 0x39, 0x0d, 0xe0, 0xe0, 0x9d, 0x6e, - 0x47, 0x73, 0x02, 0xd5, 0x0b, 0xa5, 0x84, 0xb5, 0x2f, 0xcb, 0x6b, 0xdf, 0x2d, 0x70, 0x19, 0x05, - 0xad, 0x71, 0xa9, 0x8b, 0x37, 0x0c, 0xfd, 0x67, 0x76, 0x49, 0xe8, 0x49, 0xaa, 0xa3, 0xfd, 0x3e, - 0x71, 0xdb, 0x39, 0xf9, 0x9e, 0xed, 0x9c, 0x7f, 0x14, 0x0e, 0x69, 0xe1, 0xb5, 0xfa, 0x01, 0x21, - 0x2d, 0xfc, 0x96, 0x26, 0xf7, 0xb4, 0x34, 0x7f, 0x91, 0x25, 0x2b, 0xb0, 0xc8, 0x12, 0x46, 0x25, - 0x27, 0xb8, 0x40, 0xf9, 0x2a, 0xa1, 0x98, 0x19, 0x71, 0xd5, 0x18, 0xc3, 0x02, 0xb8, 0x0c, 0x73, - 0xb4, 0xe8, 0x05, 0xd3, 0xbc, 0xb0, 0xa3, 0x59, 0x17, 0x90, 0x75, 0x20, 0x55, 0x8c, 0xdd, 0x4b, - 0x8a, 0xdc, 0x20, 0xfd, 0xa4, 0xf0, 0x9c, 0x81, 0x13, 0x97, 0xc7, 0xf3, 0x78, 0x36, 0x93, 0x5e, - 0x2f, 0x34, 0x85, 0x10, 0x61, 0x30, 0x7d, 0x5c, 0xff, 0xd8, 0xc7, 0xd5, 0xeb, 0xe8, 0xc3, 0xeb, - 0xf0, 0xa3, 0xc4, 0x15, 0x7d, 0x69, 0x38, 0xec, 0x3c, 0xbe, 0x86, 0xc0, 0xae, 0x00, 0xf2, 0x05, - 0xdf, 0xf5, 0xc7, 0x7d, 0x0c, 0x57, 0x28, 0x9b, 0x1e, 0x9a, 0x11, 0x2c, 0x8f, 0x05, 0xcd, 0xe3, - 0x3c, 0x0b, 0xb5, 0x6e, 0xaa, 0x98, 0x7e, 0x41, 0x78, 0x7f, 0xab, 0xaf, 0x80, 0x28, 0x77, 0xe3, - 0x69, 0x95, 0x62, 0x9b, 0x63, 0xe2, 0x6c, 0xa6, 0x8f, 0xe6, 0x43, 0x39, 0x98, 0xf2, 0x82, 0x8e, - 0x90, 0x3b, 0x71, 0x7c, 0x0c, 0x4f, 0x42, 0xde, 0x36, 0x77, 0xad, 0x16, 0x66, 0x3b, 0x8e, 0xec, - 0x6d, 0x88, 0xdd, 0xb1, 0x81, 0xe3, 0xf9, 0x3e, 0x93, 0x21, 0x9b, 0xd8, 0x64, 0x88, 0x36, 0x48, - 0xe3, 0x06, 0xf8, 0xe7, 0x0b, 0x07, 0x32, 0xe7, 0x30, 0xab, 0x63, 0xe7, 0xd1, 0x38, 0xc6, 0xff, - 0xa1, 0xd0, 0xde, 0xcb, 0x80, 0x9a, 0x24, 0x53, 0xb9, 0xda, 0x10, 0x86, 0xea, 0x95, 0x70, 0xb9, - 0x97, 0x83, 0x59, 0xa8, 0xc4, 0x22, 0xdd, 0x50, 0x57, 0x0b, 0x32, 0x7a, 0x76, 0x16, 0x0a, 0x94, - 0xb5, 0x9a, 0x6f, 0xac, 0xa1, 0x17, 0x65, 0x0e, 0xdb, 0x22, 0x8d, 0x9e, 0x62, 0x7e, 0x5a, 0x12, - 0x0d, 0x96, 0xca, 0x09, 0x3e, 0xa8, 0x5d, 0x84, 0x26, 0x0d, 0xd1, 0xcc, 0x62, 0x94, 0x0f, 0xfd, - 0x76, 0x46, 0x24, 0xf6, 0xaa, 0x18, 0x8b, 0xe9, 0xf7, 0x4a, 0x9f, 0xcb, 0x7a, 0xb1, 0xa3, 0x96, - 0x2c, 0x73, 0x67, 0xc3, 0xea, 0xa0, 0xff, 0x53, 0x28, 0xb4, 0x75, 0x84, 0xf9, 0x2f, 0x45, 0x9b, - 0xff, 0x64, 0xc9, 0xb8, 0x13, 0xec, 0x55, 0x75, 0x86, 0x18, 0xbe, 0x95, 0xeb, 0x61, 0x4e, 0x6b, - 0xb7, 0xd7, 0xb5, 0x2d, 0x5c, 0x72, 0xe7, 0xd5, 0x86, 0xc3, 0xe2, 0xca, 0xf4, 0xa4, 0xc6, 0x76, - 0x45, 0xe2, 0xeb, 0xa0, 0x1c, 0x48, 0x4c, 0x3e, 0x63, 0x19, 0xde, 0xdc, 0x21, 0xa1, 0xb5, 0xad, - 0x05, 0x51, 0xae, 0xd8, 0x9b, 0xa0, 0x67, 0x93, 0x00, 0xdf, 0xe9, 0x6b, 0xd6, 0xef, 0x4b, 0x30, - 0xe1, 0xca, 0xbb, 0xd8, 0x6e, 0xa3, 0xc7, 0x72, 0xc1, 0xe0, 0x22, 0x7d, 0xcb, 0x7e, 0x51, 0xd8, - 0xa9, 0xcf, 0xab, 0x21, 0xa5, 0x1f, 0x81, 0x49, 0x20, 0x44, 0x89, 0x13, 0xa2, 0x98, 0xef, 0x5e, - 0x6c, 0x11, 0xe9, 0x8b, 0xef, 0xe3, 0x12, 0xcc, 0x7a, 0xf3, 0x88, 0x25, 0xec, 0xb4, 0xb6, 0xd1, - 0x6d, 0xa2, 0x0b, 0x4d, 0xac, 0xa5, 0xf9, 0x7b, 0xb2, 0x1d, 0xf4, 0xbd, 0x4c, 0x42, 0x95, 0xe7, - 0x4a, 0x8e, 0x58, 0xa5, 0x4b, 0xa4, 0x8b, 0x71, 0x04, 0xd3, 0x17, 0xe6, 0x17, 0x25, 0x80, 0x86, - 0xe9, 0xcf, 0x75, 0x0f, 0x20, 0xc9, 0x17, 0x08, 0x6f, 0xd7, 0xb2, 0x8a, 0x07, 0xc5, 0x26, 0xef, - 0x39, 0x04, 0x5d, 0x93, 0x06, 0x95, 0x34, 0x96, 0xb6, 0x3e, 0xb5, 0xb8, 0xdb, 0xed, 0xe8, 0x2d, - 0xcd, 0xe9, 0xf5, 0xa7, 0x8b, 0x16, 0x2f, 0xb9, 0x30, 0x32, 0x91, 0x51, 0xe8, 0x97, 0x11, 0x21, - 0x4b, 0x1a, 0xa4, 0x44, 0xf2, 0x82, 0x94, 0x08, 0xfa, 0xc8, 0x0c, 0x20, 0x3e, 0x06, 0xf5, 0x94, - 0xe1, 0x68, 0xad, 0x8b, 0x8d, 0x05, 0x0b, 0x6b, 0xed, 0x96, 0xb5, 0xbb, 0x73, 0xde, 0x0e, 0x3b, - 0x83, 0xc6, 0xeb, 0x68, 0x68, 0xe9, 0x58, 0xe2, 0x96, 0x8e, 0xd1, 0x2f, 0xc8, 0xa2, 0x21, 0x73, - 0x42, 0x1b, 0x1c, 0x21, 0x1e, 0x86, 0x18, 0xea, 0x12, 0xb9, 0x30, 0xf5, 0xac, 0x12, 0x67, 0x93, - 0xac, 0x12, 0xbf, 0x41, 0x28, 0x00, 0x8f, 0x50, 0xbd, 0xc6, 0xe2, 0x89, 0x36, 0x57, 0xc7, 0x4e, - 0x04, 0xbc, 0xd7, 0xc1, 0xec, 0xf9, 0xe0, 0x8b, 0x0f, 0x31, 0x9f, 0xd8, 0xc7, 0x3f, 0xf4, 0x8d, - 0x49, 0x57, 0x60, 0x78, 0x16, 0x22, 0xd0, 0xf5, 0x11, 0x94, 0x44, 0x9c, 0xd0, 0x12, 0x2d, 0xa7, - 0xc4, 0x96, 0x9f, 0x3e, 0x0a, 0x1f, 0x92, 0x60, 0x9a, 0x5c, 0x83, 0xb9, 0x70, 0x89, 0x9c, 0x6a, - 0x14, 0x34, 0x4a, 0x1e, 0x0a, 0x8b, 0x59, 0x81, 0x6c, 0x47, 0x37, 0x2e, 0x78, 0xde, 0x83, 0xee, - 0x73, 0x70, 0xa9, 0x9a, 0xd4, 0xe7, 0x52, 0x35, 0x7f, 0x9f, 0xc2, 0x2f, 0xf7, 0x40, 0xb7, 0xfc, - 0x0e, 0x24, 0x97, 0xbe, 0x18, 0xff, 0x3e, 0x0b, 0xf9, 0x3a, 0xd6, 0xac, 0xd6, 0x36, 0x7a, 0x97, - 0xd4, 0x77, 0xaa, 0x30, 0xc9, 0x4f, 0x15, 0x96, 0x60, 0x62, 0x53, 0xef, 0x38, 0xd8, 0xa2, 0x1e, - 0xd5, 0xe1, 0xae, 0x9d, 0x36, 0xf1, 0x85, 0x8e, 0xd9, 0xba, 0x30, 0xcf, 0x4c, 0xf7, 0x79, 0x2f, - 0x08, 0xe7, 0xfc, 0x12, 0xf9, 0x49, 0xf5, 0x7e, 0x76, 0x0d, 0x42, 0xdb, 0xb4, 0x9c, 0xa8, 0xfb, - 0x15, 0x22, 0xa8, 0xd4, 0x4d, 0xcb, 0x51, 0xe9, 0x8f, 0x2e, 0xcc, 0x9b, 0xbb, 0x9d, 0x4e, 0x03, - 0x3f, 0xe0, 0x78, 0xd3, 0x36, 0xef, 0xdd, 0x35, 0x16, 0xcd, 0xcd, 0x4d, 0x1b, 0xd3, 0x45, 0x83, - 0x9c, 0xca, 0xde, 0x94, 0xe3, 0x90, 0xeb, 0xe8, 0x3b, 0x3a, 0x9d, 0x68, 0xe4, 0x54, 0xfa, 0xa2, - 0xdc, 0x08, 0x85, 0x60, 0x8e, 0x43, 0x19, 0x3d, 0x95, 0x27, 0x4d, 0x73, 0x5f, 0xba, 0xab, 0x33, - 0x17, 0xf0, 0x25, 0xfb, 0xd4, 0x04, 0xf9, 0x4e, 0x9e, 0xf9, 0xe3, 0x2b, 0x22, 0xfb, 0x1d, 0x54, - 0xe2, 0xd1, 0x33, 0x58, 0x0b, 0xb7, 0x4c, 0xab, 0xed, 0xc9, 0x26, 0x7a, 0x82, 0xc1, 0xf2, 0x25, - 0xdb, 0xa5, 0xe8, 0x5b, 0x78, 0xfa, 0x9a, 0xf6, 0xf6, 0xbc, 0xdb, 0x6d, 0xba, 0x45, 0x9f, 0xd3, - 0x9d, 0xed, 0x35, 0xec, 0x68, 0xe8, 0xef, 0xe5, 0xbe, 0x1a, 0x37, 0xfd, 0xff, 0x69, 0xdc, 0x00, - 0x8d, 0xa3, 0xe1, 0x95, 0x9c, 0x5d, 0xcb, 0x70, 0xe5, 0xc8, 0xbc, 0x52, 0x43, 0x29, 0xca, 0x1d, - 0x70, 0x45, 0xf0, 0xe6, 0x2d, 0x95, 0x2e, 0xb2, 0x69, 0xeb, 0x14, 0xc9, 0x1e, 0x9d, 0x41, 0x59, - 0x87, 0x6b, 0xe9, 0xc7, 0x95, 0xc6, 0xda, 0xea, 0x8a, 0xbe, 0xb5, 0xdd, 0xd1, 0xb7, 0xb6, 0x1d, - 0xbb, 0x62, 0xd8, 0x0e, 0xd6, 0xda, 0xb5, 0x4d, 0x95, 0xde, 0x8c, 0x02, 0x84, 0x8e, 0x48, 0x56, - 0xde, 0xe3, 0x5a, 0x6c, 0x74, 0x0b, 0x6b, 0x4a, 0x44, 0x4b, 0x79, 0x8a, 0xdb, 0x52, 0xec, 0xdd, - 0x8e, 0x8f, 0xe9, 0x55, 0x3d, 0x98, 0x06, 0xaa, 0xbe, 0xdb, 0x21, 0xcd, 0x85, 0x64, 0x4e, 0x3a, - 0xce, 0xc5, 0x70, 0x92, 0x7e, 0xb3, 0xf9, 0x7f, 0xf2, 0x90, 0x5b, 0xb6, 0xb4, 0xee, 0x36, 0x7a, - 0x76, 0xa8, 0x7f, 0x1e, 0x55, 0x9b, 0xf0, 0xb5, 0x53, 0x1a, 0xa4, 0x9d, 0xf2, 0x00, 0xed, 0xcc, - 0x86, 0xb4, 0x33, 0x7a, 0x51, 0xf9, 0x0c, 0xcc, 0xb4, 0xcc, 0x4e, 0x07, 0xb7, 0x5c, 0x79, 0x54, - 0xda, 0x64, 0x35, 0x67, 0x4a, 0xe5, 0xd2, 0x48, 0xa0, 0x62, 0xec, 0xd4, 0xe9, 0x1a, 0x3a, 0x55, - 0xfa, 0x20, 0x01, 0xbd, 0x48, 0x82, 0x6c, 0xb9, 0xbd, 0x85, 0xb9, 0x75, 0xf6, 0x4c, 0x68, 0x9d, - 0xfd, 0x24, 0xe4, 0x1d, 0xcd, 0xda, 0xc2, 0x8e, 0xb7, 0x4e, 0x40, 0xdf, 0xfc, 0xf8, 0xc9, 0x72, - 0x28, 0x7e, 0xf2, 0x8f, 0x43, 0xd6, 0x95, 0x19, 0x73, 0x32, 0xbf, 0xb6, 0x1f, 0xfc, 0x44, 0xf6, - 0xf3, 0x6e, 0x89, 0xf3, 0x6e, 0xad, 0x55, 0xf2, 0x43, 0x2f, 0xd6, 0xb9, 0x7d, 0x58, 0x93, 0x4b, - 0x1e, 0x5b, 0xa6, 0x51, 0xd9, 0xd1, 0xb6, 0x30, 0xab, 0x66, 0x90, 0xe0, 0x7d, 0x2d, 0xef, 0x98, - 0xf7, 0xeb, 0x2c, 0x94, 0x71, 0x90, 0xe0, 0x56, 0x61, 0x5b, 0x6f, 0xb7, 0xb1, 0xc1, 0x5a, 0x36, - 0x7b, 0x3b, 0x73, 0x1a, 0xb2, 0x2e, 0x0f, 0xae, 0xfe, 0xb8, 0xc6, 0x42, 0xe1, 0x88, 0x32, 0xe3, - 0x36, 0x2b, 0xda, 0x78, 0x0b, 0x19, 0x7e, 0x4d, 0x55, 0xc4, 0x6d, 0x87, 0x56, 0xae, 0x7f, 0xe3, - 0x7a, 0x02, 0xe4, 0x0c, 0xb3, 0x8d, 0x07, 0x0e, 0x42, 0x34, 0x97, 0xf2, 0x64, 0xc8, 0xe1, 0xb6, - 0xdb, 0x2b, 0xc8, 0x24, 0xfb, 0xe9, 0x78, 0x59, 0xaa, 0x34, 0x73, 0x32, 0xdf, 0xa0, 0x7e, 0xdc, - 0xa6, 0xdf, 0x00, 0x7f, 0x79, 0x02, 0x8e, 0xd2, 0x3e, 0xa0, 0xbe, 0x7b, 0xde, 0x25, 0x75, 0x1e, - 0xa3, 0x47, 0xfa, 0x0f, 0x5c, 0x47, 0x79, 0x65, 0x3f, 0x0e, 0x39, 0x7b, 0xf7, 0xbc, 0x6f, 0x84, - 0xd2, 0x97, 0x70, 0xd3, 0x95, 0x46, 0x32, 0x9c, 0xc9, 0xc3, 0x0e, 0x67, 0xdc, 0xd0, 0x24, 0x7b, - 0x8d, 0x3f, 0x18, 0xc8, 0xe8, 0xf1, 0x08, 0x6f, 0x20, 0xeb, 0x37, 0x0c, 0x9d, 0x82, 0x09, 0x6d, - 0xd3, 0xc1, 0x56, 0x60, 0x26, 0xb2, 0x57, 0x77, 0xa8, 0x3c, 0x8f, 0x37, 0x4d, 0xcb, 0x15, 0xcb, - 0x14, 0x1d, 0x2a, 0xbd, 0xf7, 0x50, 0xcb, 0x05, 0x6e, 0x87, 0xec, 0x26, 0x38, 0x66, 0x98, 0x8b, - 0xb8, 0xcb, 0xe4, 0x4c, 0x51, 0x9c, 0x25, 0x2d, 0x60, 0xff, 0x87, 0x7d, 0x5d, 0xc9, 0xdc, 0xfe, - 0xae, 0x04, 0x7d, 0x2a, 0xe9, 0x9c, 0xb9, 0x07, 0xe8, 0x91, 0x59, 0x68, 0xca, 0xd3, 0x60, 0xa6, - 0xcd, 0x5c, 0xb4, 0x5a, 0xba, 0xdf, 0x4a, 0x22, 0xff, 0xe3, 0x32, 0x07, 0x8a, 0x94, 0x0d, 0x2b, - 0xd2, 0x32, 0x4c, 0x92, 0x83, 0xcc, 0xae, 0x26, 0xe5, 0x7a, 0x5c, 0xe2, 0xc9, 0xb4, 0xce, 0xaf, - 0x54, 0x48, 0x6c, 0xf3, 0x25, 0xf6, 0x8b, 0xea, 0xff, 0x9c, 0x6c, 0xf6, 0x1d, 0x2f, 0xa1, 0xf4, - 0x9b, 0xe3, 0xef, 0xe4, 0xe1, 0x8a, 0x92, 0x65, 0xda, 0x36, 0x39, 0x03, 0xd3, 0xdb, 0x30, 0x5f, - 0x27, 0x71, 0x37, 0x29, 0x3c, 0xaa, 0x9b, 0x5f, 0xbf, 0x06, 0x35, 0xbe, 0xa6, 0xf1, 0x55, 0xe1, - 0x10, 0x30, 0xfe, 0xfe, 0x43, 0x84, 0xd0, 0x7f, 0x38, 0x1a, 0xc9, 0xdb, 0x33, 0x22, 0x51, 0x69, - 0x12, 0xca, 0x2a, 0xfd, 0xe6, 0xf2, 0x05, 0x09, 0xae, 0xec, 0xe5, 0x66, 0xc3, 0xb0, 0xfd, 0x06, - 0x73, 0xf5, 0x80, 0xf6, 0xc2, 0x47, 0x31, 0x89, 0xbd, 0xc3, 0x30, 0xa2, 0xee, 0xa1, 0xd2, 0x22, - 0x16, 0x4b, 0x82, 0x13, 0x35, 0x71, 0x77, 0x18, 0x26, 0x26, 0x9f, 0xbe, 0x70, 0x3f, 0x9d, 0x85, - 0xa3, 0xcb, 0x96, 0xb9, 0xdb, 0xb5, 0x83, 0x1e, 0xe8, 0x6f, 0xfa, 0x6f, 0xb8, 0xe6, 0x45, 0x4c, - 0x83, 0x6b, 0x60, 0xda, 0x62, 0xd6, 0x5c, 0xb0, 0xfd, 0x1a, 0x4e, 0x0a, 0xf7, 0x5e, 0xf2, 0x41, - 0x7a, 0xaf, 0xa0, 0x9f, 0xc9, 0x72, 0xfd, 0x4c, 0x6f, 0xcf, 0x91, 0xeb, 0xd3, 0x73, 0xfc, 0xb5, - 0x94, 0x70, 0x50, 0xed, 0x11, 0x51, 0x44, 0x7f, 0x51, 0x82, 0xfc, 0x16, 0xc9, 0xc8, 0xba, 0x8b, - 0xc7, 0x8b, 0xd5, 0x8c, 0x10, 0x57, 0xd9, 0xaf, 0x81, 0x5c, 0xe5, 0xb0, 0x0e, 0x27, 0x1a, 0xe0, - 0xe2, 0xb9, 0x4d, 0x5f, 0xa9, 0x1e, 0xce, 0xc2, 0x8c, 0x5f, 0x7a, 0xa5, 0x6d, 0xa3, 0x87, 0xfa, - 0x6b, 0xd4, 0xac, 0x88, 0x46, 0xed, 0x5b, 0x67, 0xf6, 0x47, 0x1d, 0x39, 0x34, 0xea, 0xf4, 0x1d, - 0x5d, 0x66, 0x22, 0x46, 0x17, 0xf4, 0x2c, 0x59, 0xf4, 0x2e, 0x22, 0xbe, 0x6b, 0x25, 0xb5, 0x79, - 0x34, 0x0f, 0x16, 0x82, 0x37, 0x22, 0x0d, 0xae, 0x55, 0xfa, 0x4a, 0xf2, 0x5e, 0x09, 0x8e, 0xed, - 0xef, 0xcc, 0x7f, 0x84, 0xf7, 0x42, 0x73, 0xeb, 0x64, 0xfb, 0x5e, 0x68, 0xe4, 0x8d, 0xdf, 0xa4, - 0x8b, 0x0d, 0x29, 0xc2, 0xd9, 0x7b, 0x83, 0x3b, 0x71, 0xb1, 0xa0, 0x21, 0x82, 0x44, 0xd3, 0x17, - 0xe0, 0xaf, 0xcb, 0x30, 0x55, 0xc7, 0xce, 0xaa, 0x76, 0xc9, 0xdc, 0x75, 0x90, 0x26, 0xba, 0x3d, - 0xf7, 0x54, 0xc8, 0x77, 0xc8, 0x2f, 0xec, 0x8a, 0xf7, 0x6b, 0xfa, 0xee, 0x6f, 0x11, 0xdf, 0x1f, - 0x4a, 0x5a, 0x65, 0xf9, 0xf9, 0x58, 0x2e, 0x22, 0xbb, 0xa3, 0x3e, 0x77, 0x23, 0xd9, 0xda, 0x49, - 0xb4, 0x77, 0x1a, 0x55, 0x74, 0xfa, 0xb0, 0xfc, 0x82, 0x0c, 0xb3, 0x75, 0xec, 0x54, 0xec, 0x25, - 0x6d, 0xcf, 0xb4, 0x74, 0x07, 0x87, 0xef, 0x78, 0x8c, 0x87, 0xe6, 0x34, 0x80, 0xee, 0xff, 0xc6, - 0x22, 0x4c, 0x85, 0x52, 0xd0, 0x6f, 0x27, 0x75, 0x14, 0xe2, 0xf8, 0x18, 0x09, 0x08, 0x89, 0x7c, - 0x2c, 0xe2, 0x8a, 0x4f, 0x1f, 0x88, 0xcf, 0x4b, 0x0c, 0x88, 0xa2, 0xd5, 0xda, 0xd6, 0xf7, 0x70, - 0x3b, 0x21, 0x10, 0xde, 0x6f, 0x01, 0x10, 0x3e, 0xa1, 0xc4, 0xee, 0x2b, 0x1c, 0x1f, 0xa3, 0x70, - 0x5f, 0x89, 0x23, 0x38, 0x96, 0x20, 0x51, 0x6e, 0xd7, 0xc3, 0xd6, 0x33, 0xef, 0x12, 0x15, 0x6b, - 0x60, 0xb2, 0x49, 0x61, 0x93, 0x6d, 0xa8, 0x8e, 0x85, 0x96, 0x3d, 0x48, 0xa7, 0xb3, 0x69, 0x74, - 0x2c, 0x7d, 0x8b, 0x4e, 0x5f, 0xe8, 0xef, 0x94, 0xe1, 0x84, 0x1f, 0x3d, 0xa5, 0x8e, 0x9d, 0x45, - 0xcd, 0xde, 0x3e, 0x6f, 0x6a, 0x56, 0x3b, 0x7c, 0xf5, 0xff, 0xd0, 0x27, 0xfe, 0xd0, 0xe7, 0xc2, - 0x20, 0x54, 0x79, 0x10, 0xfa, 0xba, 0x8a, 0xf6, 0xe5, 0x65, 0x14, 0x9d, 0x4c, 0xac, 0x37, 0xeb, - 0xef, 0xfa, 0x60, 0xfd, 0x04, 0x07, 0xd6, 0x9d, 0xc3, 0xb2, 0x98, 0x3e, 0x70, 0xbf, 0x45, 0x47, - 0x84, 0x90, 0x57, 0xf3, 0x7d, 0xa2, 0x80, 0x45, 0x78, 0xb5, 0xca, 0x91, 0x5e, 0xad, 0x43, 0x8d, - 0x11, 0x03, 0x3d, 0x92, 0xd3, 0x1d, 0x23, 0x0e, 0xd1, 0xdb, 0xf8, 0xad, 0x32, 0x14, 0x48, 0xf8, - 0xac, 0x90, 0xc7, 0x37, 0xba, 0x5f, 0x14, 0x9d, 0x7d, 0xde, 0xe5, 0x13, 0x49, 0xbd, 0xcb, 0xd1, - 0x5b, 0x92, 0xfa, 0x90, 0xf7, 0x72, 0x3b, 0x12, 0xc4, 0x12, 0xb9, 0x88, 0x0f, 0xe0, 0x20, 0x7d, - 0xd0, 0xfe, 0x9b, 0x0c, 0xe0, 0x36, 0x68, 0x76, 0xf6, 0xe1, 0x19, 0xa2, 0x70, 0xdd, 0x1c, 0xf6, - 0xab, 0x77, 0x81, 0x3a, 0xd1, 0x03, 0x14, 0xa5, 0x18, 0x9c, 0xaa, 0x78, 0x24, 0xa9, 0x6f, 0x65, - 0xc0, 0xd5, 0x48, 0x60, 0x49, 0xe4, 0x6d, 0x19, 0x59, 0x76, 0xfa, 0x80, 0xfc, 0x0f, 0x09, 0x72, - 0x0d, 0xb3, 0x8e, 0x9d, 0x83, 0x9b, 0x02, 0x89, 0x8f, 0xed, 0x93, 0x72, 0x47, 0x71, 0x6c, 0xbf, - 0x1f, 0xa1, 0x31, 0x44, 0x23, 0x93, 0x60, 0xa6, 0x61, 0x96, 0xfc, 0xc5, 0x29, 0x71, 0x5f, 0x55, - 0xf1, 0xfb, 0x94, 0xfd, 0x0a, 0x06, 0xc5, 0x1c, 0xe8, 0x3e, 0xe5, 0xc1, 0xf4, 0xd2, 0x97, 0xdb, - 0x6d, 0x70, 0x74, 0xc3, 0x68, 0x9b, 0x2a, 0x6e, 0x9b, 0x6c, 0xa5, 0x5b, 0x51, 0x20, 0xbb, 0x6b, - 0xb4, 0x4d, 0xc2, 0x72, 0x4e, 0x25, 0xcf, 0x6e, 0x9a, 0x85, 0xdb, 0x26, 0xf3, 0x0d, 0x20, 0xcf, - 0xe8, 0xab, 0x32, 0x64, 0xdd, 0x7f, 0xc5, 0x45, 0xfd, 0x56, 0x39, 0x61, 0x20, 0x02, 0x97, 0xfc, - 0x48, 0x2c, 0xa1, 0xbb, 0x42, 0x6b, 0xff, 0xd4, 0x83, 0xf5, 0xda, 0xa8, 0xf2, 0x42, 0xa2, 0x08, - 0xd6, 0xfc, 0x95, 0x53, 0x30, 0x71, 0xbe, 0x63, 0xb6, 0x2e, 0x04, 0xe7, 0xe5, 0xd9, 0xab, 0x72, - 0x23, 0xe4, 0x2c, 0xcd, 0xd8, 0xc2, 0x6c, 0x4f, 0xe1, 0x78, 0x4f, 0x5f, 0x48, 0xbc, 0x5e, 0x54, - 0x9a, 0x05, 0xbd, 0x25, 0x49, 0x08, 0x84, 0x3e, 0x95, 0x4f, 0xa6, 0x0f, 0x8b, 0x43, 0x9c, 0x2c, - 0x2b, 0xc0, 0x4c, 0xa9, 0x48, 0x6f, 0x2e, 0x5f, 0xab, 0x9d, 0x2d, 0x17, 0x64, 0x02, 0xb3, 0x2b, - 0x93, 0x14, 0x61, 0x76, 0xc9, 0xff, 0xd0, 0xc2, 0xdc, 0xa7, 0xf2, 0x87, 0x01, 0xf3, 0xc7, 0x25, - 0x98, 0x5d, 0xd5, 0x6d, 0x27, 0xca, 0xdb, 0x3f, 0x26, 0x7a, 0xee, 0xf3, 0x93, 0x9a, 0xca, 0x5c, - 0x39, 0xc2, 0x61, 0x73, 0x13, 0x99, 0xc3, 0x71, 0x45, 0x8c, 0xe7, 0x58, 0x0a, 0xe1, 0x80, 0xde, - 0x36, 0x2c, 0x2c, 0xc9, 0xc4, 0x86, 0x52, 0x50, 0xc8, 0xf8, 0x0d, 0xa5, 0xc8, 0xb2, 0xd3, 0x97, - 0xef, 0x57, 0x25, 0x38, 0xe6, 0x16, 0x1f, 0xb7, 0x2c, 0x15, 0x2d, 0xe6, 0x81, 0xcb, 0x52, 0x89, - 0x57, 0xc6, 0xf7, 0xf1, 0x32, 0x8a, 0x95, 0xf1, 0x41, 0x44, 0xc7, 0x2c, 0xe6, 0x88, 0x65, 0xd8, - 0x41, 0x62, 0x8e, 0x59, 0x86, 0x1d, 0x5e, 0xcc, 0xf1, 0x4b, 0xb1, 0x43, 0x8a, 0xf9, 0xd0, 0x16, - 0x58, 0x5f, 0x23, 0xfb, 0x62, 0x8e, 0x5c, 0xdb, 0x88, 0x11, 0x73, 0xe2, 0x13, 0xbb, 0xe8, 0x6d, - 0x43, 0x0a, 0x7e, 0xc4, 0xeb, 0x1b, 0xc3, 0xc0, 0x74, 0x88, 0x6b, 0x1c, 0x2f, 0x96, 0x61, 0x8e, - 0x71, 0xd1, 0x7f, 0xca, 0x1c, 0x83, 0x51, 0xe2, 0x29, 0x73, 0xe2, 0x33, 0x40, 0x3c, 0x67, 0xe3, - 0x3f, 0x03, 0x14, 0x5b, 0x7e, 0xfa, 0xe0, 0x7c, 0x2d, 0x0b, 0x27, 0x5d, 0x16, 0xd6, 0xcc, 0xb6, - 0xbe, 0x79, 0x89, 0x72, 0x71, 0x56, 0xeb, 0xec, 0x62, 0x1b, 0xbd, 0x5b, 0x12, 0x45, 0xe9, 0x3f, - 0x01, 0x98, 0x5d, 0x6c, 0xd1, 0x40, 0x6a, 0x0c, 0xa8, 0x3b, 0xa2, 0x2a, 0xbb, 0xbf, 0x24, 0xff, - 0x32, 0x99, 0x9a, 0x47, 0x44, 0x0d, 0xd1, 0x73, 0xad, 0xc2, 0x29, 0xff, 0x4b, 0xaf, 0x83, 0x47, - 0x66, 0xbf, 0x83, 0xc7, 0x0d, 0x20, 0x6b, 0xed, 0xb6, 0x0f, 0x55, 0xef, 0x66, 0x36, 0x29, 0x53, - 0x75, 0xb3, 0xb8, 0x39, 0x6d, 0x1c, 0x1c, 0xcd, 0x8b, 0xc8, 0x69, 0x63, 0x47, 0x99, 0x87, 0x3c, - 0xbd, 0x79, 0xd9, 0x5f, 0xd1, 0xef, 0x9f, 0x99, 0xe5, 0xe2, 0x4d, 0xbb, 0x1a, 0xaf, 0x86, 0xb7, - 0x25, 0x92, 0x4c, 0xbf, 0x7e, 0x3a, 0xb0, 0x93, 0x55, 0x4e, 0xc1, 0x9e, 0x3e, 0x34, 0xe5, 0xf1, - 0xec, 0x86, 0x15, 0xbb, 0xdd, 0xce, 0xa5, 0x06, 0x0b, 0xbe, 0x92, 0x68, 0x37, 0x2c, 0x14, 0xc3, - 0x45, 0xea, 0x8d, 0xe1, 0x92, 0x7c, 0x37, 0x8c, 0xe3, 0x63, 0x14, 0xbb, 0x61, 0x71, 0x04, 0xd3, - 0x17, 0xed, 0x9b, 0x72, 0xd4, 0x6a, 0x66, 0xb1, 0xfd, 0xff, 0xa8, 0xff, 0x21, 0x34, 0xe0, 0x9d, - 0x5d, 0xfa, 0x85, 0xfd, 0x8f, 0xbd, 0xd3, 0x44, 0x79, 0x32, 0xe4, 0x37, 0x4d, 0x6b, 0x47, 0xf3, - 0x36, 0xee, 0x7b, 0x4f, 0x8a, 0xb0, 0x78, 0xfa, 0x4b, 0x24, 0x8f, 0xca, 0xf2, 0xba, 0xf3, 0x91, - 0x67, 0xea, 0x5d, 0x16, 0x75, 0xd1, 0x7d, 0x54, 0xae, 0x83, 0x59, 0x16, 0x7c, 0xb1, 0x8a, 0x6d, - 0x07, 0xb7, 0x59, 0xc4, 0x0a, 0x3e, 0x51, 0x39, 0x03, 0x33, 0x2c, 0x61, 0x49, 0xef, 0x60, 0x9b, - 0x05, 0xad, 0xe0, 0xd2, 0x94, 0x93, 0x90, 0xd7, 0xed, 0x7b, 0x6c, 0xd3, 0x20, 0xfe, 0xff, 0x93, - 0x2a, 0x7b, 0x53, 0x6e, 0x80, 0xa3, 0x2c, 0x9f, 0x6f, 0xac, 0xd2, 0x03, 0x3b, 0xbd, 0xc9, 0xae, - 0x6a, 0x19, 0xe6, 0xba, 0x65, 0x6e, 0x59, 0xd8, 0xb6, 0xc9, 0xa9, 0xa9, 0x49, 0x35, 0x94, 0x82, - 0x3e, 0x33, 0xcc, 0xc4, 0x22, 0xf1, 0x3d, 0x07, 0x2e, 0x4a, 0xbb, 0xad, 0x16, 0xc6, 0x6d, 0x76, - 0xf2, 0xc9, 0x7b, 0x4d, 0x78, 0x03, 0x42, 0xe2, 0x69, 0xc8, 0x21, 0x5d, 0x81, 0xf0, 0x81, 0x13, - 0x90, 0xa7, 0xd7, 0x89, 0xa1, 0x17, 0xce, 0xf5, 0x55, 0xd6, 0x39, 0x5e, 0x59, 0x37, 0x60, 0xc6, - 0x30, 0xdd, 0xe2, 0xd6, 0x35, 0x4b, 0xdb, 0xb1, 0xe3, 0x56, 0x19, 0x29, 0x5d, 0x7f, 0x48, 0xa9, - 0x86, 0x7e, 0x5b, 0x39, 0xa2, 0x72, 0x64, 0x94, 0xff, 0x1f, 0x1c, 0x3d, 0xcf, 0x22, 0x04, 0xd8, - 0x8c, 0xb2, 0x14, 0xed, 0x83, 0xd7, 0x43, 0x79, 0x81, 0xff, 0x73, 0xe5, 0x88, 0xda, 0x4b, 0x4c, - 0xf9, 0x29, 0x98, 0x73, 0x5f, 0xdb, 0xe6, 0x45, 0x8f, 0x71, 0x39, 0xda, 0x10, 0xe9, 0x21, 0xbf, - 0xc6, 0xfd, 0xb8, 0x72, 0x44, 0xed, 0x21, 0xa5, 0xd4, 0x00, 0xb6, 0x9d, 0x9d, 0x0e, 0x23, 0x9c, - 0x8d, 0x56, 0xc9, 0x1e, 0xc2, 0x2b, 0xfe, 0x4f, 0x2b, 0x47, 0xd4, 0x10, 0x09, 0x65, 0x15, 0xa6, - 0x9c, 0x07, 0x1c, 0x46, 0x2f, 0x17, 0xbd, 0xf9, 0xdd, 0x43, 0xaf, 0xe1, 0xfd, 0xb3, 0x72, 0x44, - 0x0d, 0x08, 0x28, 0x15, 0x98, 0xec, 0x9e, 0x67, 0xc4, 0xf2, 0x7d, 0xa2, 0xcd, 0xf7, 0x27, 0xb6, - 0x7e, 0xde, 0xa7, 0xe5, 0xff, 0xee, 0x32, 0xd6, 0xb2, 0xf7, 0x18, 0xad, 0x09, 0x61, 0xc6, 0x4a, - 0xde, 0x3f, 0x2e, 0x63, 0x3e, 0x01, 0xa5, 0x02, 0x53, 0xb6, 0xa1, 0x75, 0xed, 0x6d, 0xd3, 0xb1, - 0x4f, 0x4d, 0xf6, 0xf8, 0x49, 0x46, 0x53, 0xab, 0xb3, 0x7f, 0xd4, 0xe0, 0x6f, 0xe5, 0xc9, 0x70, - 0x62, 0x97, 0x5c, 0xcb, 0x5e, 0x7e, 0x40, 0xb7, 0x1d, 0xdd, 0xd8, 0xf2, 0x62, 0xcc, 0xd2, 0xde, - 0xa6, 0xff, 0x47, 0x65, 0x9e, 0x9d, 0x98, 0x02, 0xd2, 0x36, 0x51, 0xef, 0x66, 0x1d, 0x2d, 0x36, - 0x74, 0x50, 0xea, 0x69, 0x90, 0x75, 0x3f, 0x91, 0xde, 0x69, 0xae, 0xff, 0x42, 0x60, 0xaf, 0xee, - 0x90, 0x06, 0xec, 0xfe, 0xd4, 0xd3, 0xc1, 0xcd, 0xf4, 0x76, 0x70, 0x6e, 0x03, 0xd7, 0xed, 0x35, - 0x7d, 0x8b, 0x5a, 0x57, 0xcc, 0x1f, 0x3e, 0x9c, 0x44, 0x67, 0xa3, 0x55, 0x7c, 0x91, 0xde, 0xa0, - 0x71, 0xd4, 0x9b, 0x8d, 0x7a, 0x29, 0xe8, 0x7a, 0x98, 0x09, 0x37, 0x32, 0x7a, 0x27, 0xa9, 0x1e, - 0xd8, 0x66, 0xec, 0x0d, 0x5d, 0x07, 0x73, 0xbc, 0x4e, 0x87, 0x86, 0x20, 0xd9, 0xeb, 0x0a, 0xd1, - 0xb5, 0x70, 0xb4, 0xa7, 0x61, 0x79, 0x31, 0x47, 0x32, 0x41, 0xcc, 0x91, 0x6b, 0x00, 0x02, 0x2d, - 0xee, 0x4b, 0xe6, 0x6a, 0x98, 0xf2, 0xf5, 0xb2, 0x6f, 0x86, 0x2f, 0x67, 0x60, 0xd2, 0x53, 0xb6, - 0x7e, 0x19, 0xdc, 0xf1, 0xc7, 0x08, 0x6d, 0x30, 0xb0, 0x69, 0x38, 0x97, 0xe6, 0x8e, 0x33, 0x81, - 0x5b, 0x6f, 0x43, 0x77, 0x3a, 0xde, 0xd1, 0xb8, 0xde, 0x64, 0x65, 0x1d, 0x40, 0x27, 0x18, 0x35, - 0x82, 0xb3, 0x72, 0xb7, 0x24, 0x68, 0x0f, 0x54, 0x1f, 0x42, 0x34, 0xce, 0xfc, 0x08, 0x3b, 0xc8, - 0x36, 0x05, 0x39, 0x1a, 0x68, 0xfd, 0x88, 0x32, 0x07, 0x50, 0x7e, 0xc6, 0x7a, 0x59, 0xad, 0x94, - 0xab, 0xa5, 0x72, 0x21, 0x83, 0x5e, 0x22, 0xc1, 0x94, 0xdf, 0x08, 0xfa, 0x56, 0xb2, 0xcc, 0x54, - 0x6b, 0xe0, 0xb5, 0x8f, 0xfb, 0x1b, 0x55, 0x58, 0xc9, 0x9e, 0x0a, 0x97, 0xef, 0xda, 0x78, 0x49, - 0xb7, 0x6c, 0x47, 0x35, 0x2f, 0x2e, 0x99, 0x96, 0x1f, 0x55, 0x99, 0x45, 0x38, 0x8d, 0xfa, 0xec, - 0x5a, 0x1c, 0x6d, 0x4c, 0x0e, 0x4d, 0x61, 0x8b, 0xad, 0x1c, 0x07, 0x09, 0x2e, 0x5d, 0xc7, 0xd2, - 0x0c, 0xbb, 0x6b, 0xda, 0x58, 0x35, 0x2f, 0xda, 0x45, 0xa3, 0x5d, 0x32, 0x3b, 0xbb, 0x3b, 0x86, - 0xcd, 0x6c, 0x86, 0xa8, 0xcf, 0xae, 0x74, 0xc8, 0xa5, 0xae, 0x73, 0x00, 0xa5, 0xda, 0xea, 0x6a, - 0xb9, 0xd4, 0xa8, 0xd4, 0xaa, 0x85, 0x23, 0xae, 0xb4, 0x1a, 0xc5, 0x85, 0x55, 0x57, 0x3a, 0x3f, - 0x0d, 0x93, 0x5e, 0x9b, 0x66, 0x61, 0x52, 0x32, 0x5e, 0x98, 0x14, 0xa5, 0x08, 0x93, 0x5e, 0x2b, - 0x67, 0x23, 0xc2, 0x63, 0x7b, 0x8f, 0xc5, 0xee, 0x68, 0x96, 0x43, 0xfc, 0xa9, 0x3d, 0x22, 0x0b, - 0x9a, 0x8d, 0x55, 0xff, 0xb7, 0x33, 0x4f, 0x60, 0x1c, 0x28, 0x30, 0x57, 0x5c, 0x5d, 0x6d, 0xd6, - 0xd4, 0x66, 0xb5, 0xd6, 0x58, 0xa9, 0x54, 0x97, 0xe9, 0x08, 0x59, 0x59, 0xae, 0xd6, 0xd4, 0x32, - 0x1d, 0x20, 0xeb, 0x85, 0x0c, 0xbd, 0x54, 0x78, 0x61, 0x12, 0xf2, 0x5d, 0x22, 0x5d, 0xf4, 0x05, - 0x39, 0xe1, 0x79, 0x78, 0x1f, 0xa7, 0x88, 0x6b, 0x4f, 0x39, 0x9f, 0x74, 0xa9, 0xcf, 0x99, 0xd1, - 0x33, 0x30, 0x43, 0x6d, 0x3d, 0x9b, 0x2c, 0xef, 0x13, 0xe4, 0x64, 0x95, 0x4b, 0x43, 0x1f, 0x92, - 0x12, 0x1c, 0x92, 0xef, 0xcb, 0x51, 0x32, 0xe3, 0xe2, 0xcf, 0x33, 0xc3, 0x5d, 0x4b, 0x50, 0xa9, - 0x36, 0xca, 0x6a, 0xb5, 0xb8, 0xca, 0xb2, 0xc8, 0xca, 0x29, 0x38, 0x5e, 0xad, 0xb1, 0x98, 0x7f, - 0xf5, 0x66, 0xa3, 0xd6, 0xac, 0xac, 0xad, 0xd7, 0xd4, 0x46, 0x21, 0xa7, 0x9c, 0x04, 0x85, 0x3e, - 0x37, 0x2b, 0xf5, 0x66, 0xa9, 0x58, 0x2d, 0x95, 0x57, 0xcb, 0x8b, 0x85, 0xbc, 0xf2, 0x38, 0xb8, - 0x96, 0x5e, 0x73, 0x53, 0x5b, 0x6a, 0xaa, 0xb5, 0x73, 0x75, 0x17, 0x41, 0xb5, 0xbc, 0x5a, 0x74, - 0x15, 0x29, 0x74, 0xb9, 0xf0, 0x84, 0x72, 0x19, 0x1c, 0x25, 0x17, 0x87, 0xaf, 0xd6, 0x8a, 0x8b, - 0xac, 0xbc, 0x49, 0xe5, 0x2a, 0x38, 0x55, 0xa9, 0xd6, 0x37, 0x96, 0x96, 0x2a, 0xa5, 0x4a, 0xb9, - 0xda, 0x68, 0xae, 0x97, 0xd5, 0xb5, 0x4a, 0xbd, 0xee, 0xfe, 0x5b, 0x98, 0x22, 0x57, 0xb7, 0xd2, - 0x3e, 0x13, 0xbd, 0x4b, 0x86, 0xd9, 0xb3, 0x5a, 0x47, 0x77, 0x07, 0x0a, 0x72, 0xa7, 0x73, 0xcf, - 0x71, 0x12, 0x87, 0xdc, 0xfd, 0xcc, 0x1c, 0xd2, 0xc9, 0x0b, 0xfa, 0x79, 0x39, 0xe1, 0x71, 0x12, - 0x06, 0x04, 0x2d, 0x71, 0x9e, 0x2b, 0x2d, 0x62, 0xf2, 0xf3, 0x2a, 0x29, 0xc1, 0x71, 0x12, 0x71, - 0xf2, 0xc9, 0xc0, 0x7f, 0xe9, 0xa8, 0xc0, 0x2f, 0xc0, 0xcc, 0x46, 0xb5, 0xb8, 0xd1, 0x58, 0xa9, - 0xa9, 0x95, 0x9f, 0x24, 0xd1, 0xc8, 0x67, 0x61, 0x6a, 0xa9, 0xa6, 0x2e, 0x54, 0x16, 0x17, 0xcb, - 0xd5, 0x42, 0x4e, 0xb9, 0x1c, 0x2e, 0xab, 0x97, 0xd5, 0xb3, 0x95, 0x52, 0xb9, 0xb9, 0x51, 0x2d, - 0x9e, 0x2d, 0x56, 0x56, 0x49, 0x1f, 0x91, 0x8f, 0xb9, 0x8f, 0x7a, 0x02, 0xfd, 0x6c, 0x16, 0x80, - 0x56, 0x9d, 0x5c, 0xc6, 0x13, 0xba, 0xb5, 0xf8, 0x2f, 0x92, 0x4e, 0x1a, 0x02, 0x32, 0x11, 0xed, - 0xb7, 0x02, 0x93, 0x16, 0xfb, 0xc0, 0x96, 0x57, 0x06, 0xd1, 0xa1, 0x8f, 0x1e, 0x35, 0xd5, 0xff, - 0x1d, 0xbd, 0x3b, 0xc9, 0x1c, 0x21, 0x92, 0xb1, 0x64, 0x48, 0x2e, 0x8d, 0x06, 0x48, 0xf4, 0x50, - 0x06, 0xe6, 0xf8, 0x8a, 0xb9, 0x95, 0x20, 0xc6, 0x94, 0x58, 0x25, 0xf8, 0x9f, 0x43, 0x46, 0xd6, - 0x99, 0x27, 0xb1, 0xe1, 0x14, 0xbc, 0x96, 0x49, 0x4f, 0x86, 0x7b, 0x16, 0x4b, 0x21, 0xe3, 0x32, - 0xef, 0x1a, 0x1d, 0x05, 0x49, 0x99, 0x00, 0xb9, 0xf1, 0x80, 0x53, 0x90, 0xd1, 0x97, 0x65, 0x98, - 0xe5, 0xae, 0x45, 0x46, 0xaf, 0xca, 0x88, 0x5c, 0x59, 0x1a, 0xba, 0x70, 0x39, 0x73, 0xd0, 0x0b, - 0x97, 0xcf, 0xdc, 0x0c, 0x13, 0x2c, 0x8d, 0xc8, 0xb7, 0x56, 0x75, 0x4d, 0x81, 0xa3, 0x30, 0xbd, - 0x5c, 0x6e, 0x34, 0xeb, 0x8d, 0xa2, 0xda, 0x28, 0x2f, 0x16, 0x32, 0xee, 0xc0, 0x57, 0x5e, 0x5b, - 0x6f, 0xdc, 0x57, 0x90, 0x92, 0x7b, 0xe8, 0xf5, 0x32, 0x32, 0x66, 0x0f, 0xbd, 0xb8, 0xe2, 0xd3, - 0x9f, 0xab, 0x7e, 0x4a, 0x86, 0x02, 0xe5, 0xa0, 0xfc, 0x40, 0x17, 0x5b, 0x3a, 0x36, 0x5a, 0x18, - 0x5d, 0x10, 0x89, 0x08, 0xba, 0x2f, 0x56, 0x1e, 0xe9, 0xcf, 0x43, 0x56, 0x22, 0x7d, 0xe9, 0x31, - 0xb0, 0xb3, 0xfb, 0x0c, 0xec, 0x4f, 0x26, 0x75, 0xd1, 0xeb, 0x65, 0x77, 0x24, 0x90, 0x7d, 0x2c, - 0x89, 0x8b, 0xde, 0x00, 0x0e, 0xc6, 0x12, 0xe8, 0x37, 0x62, 0xfc, 0x2d, 0xc8, 0xe8, 0x79, 0x32, - 0x1c, 0x5d, 0xd4, 0x1c, 0xbc, 0x70, 0xa9, 0xe1, 0x5d, 0x5b, 0x18, 0x71, 0xd5, 0x70, 0x66, 0xdf, - 0x55, 0xc3, 0xc1, 0xcd, 0x87, 0x52, 0xcf, 0xcd, 0x87, 0xe8, 0xed, 0x49, 0x0f, 0xf5, 0xf5, 0xf0, - 0x30, 0xb2, 0x68, 0xbc, 0xc9, 0x0e, 0xeb, 0xc5, 0x73, 0x31, 0x86, 0x9b, 0xff, 0xa7, 0xa0, 0x40, - 0x59, 0x09, 0x79, 0xa1, 0xfd, 0x3a, 0xbb, 0x9d, 0xbb, 0x99, 0x20, 0xe8, 0x9f, 0x17, 0x46, 0x41, - 0xe2, 0xc3, 0x28, 0x70, 0x8b, 0x9a, 0x72, 0xaf, 0xe7, 0x40, 0xd2, 0xce, 0x30, 0xe4, 0x72, 0x16, - 0x1d, 0x67, 0x35, 0xbd, 0xce, 0x30, 0xb6, 0xf8, 0xf1, 0xdc, 0x20, 0xcb, 0xee, 0x79, 0x2c, 0x8b, - 0x22, 0x13, 0x7f, 0x51, 0x76, 0x52, 0xff, 0x63, 0xce, 0xe5, 0x2f, 0xe6, 0xf6, 0xe8, 0xf4, 0xfc, - 0x8f, 0x07, 0x71, 0x90, 0x3e, 0x0a, 0xdf, 0x93, 0x20, 0x5b, 0x37, 0x2d, 0x67, 0x54, 0x18, 0x24, - 0xdd, 0x33, 0x0d, 0x49, 0xa0, 0x1e, 0x3d, 0xe7, 0x4c, 0x6f, 0xcf, 0x34, 0xbe, 0xfc, 0x31, 0xc4, - 0x4d, 0x3c, 0x0a, 0x73, 0x94, 0x13, 0xff, 0x52, 0x91, 0xef, 0x4a, 0xb4, 0xbf, 0xba, 0x57, 0x14, - 0x91, 0x33, 0x30, 0x13, 0xda, 0xb3, 0xf4, 0x40, 0xe1, 0xd2, 0xd0, 0xeb, 0xc2, 0xb8, 0x2c, 0xf2, - 0xb8, 0xf4, 0x9b, 0x71, 0xfb, 0xf7, 0x72, 0x8c, 0xaa, 0x67, 0x4a, 0x12, 0x82, 0x31, 0xa6, 0xf0, - 0xf4, 0x11, 0x79, 0x50, 0x86, 0x3c, 0xf3, 0x19, 0x1b, 0x29, 0x02, 0x49, 0x5b, 0x86, 0x2f, 0x04, - 0x31, 0xdf, 0x32, 0x79, 0xd4, 0x2d, 0x23, 0xbe, 0xfc, 0xf4, 0x71, 0xf8, 0x3e, 0x73, 0x86, 0x2c, - 0xee, 0x69, 0x7a, 0x47, 0x3b, 0xdf, 0x49, 0x10, 0xfa, 0xf8, 0x43, 0x09, 0x8f, 0x7f, 0xf9, 0x55, - 0xe5, 0xca, 0x8b, 0x90, 0xf8, 0x8f, 0xc1, 0x94, 0xe5, 0x2f, 0x49, 0x7a, 0xa7, 0xe3, 0x7b, 0x1c, - 0x51, 0xd9, 0x77, 0x35, 0xc8, 0x99, 0xe8, 0xac, 0x97, 0x10, 0x3f, 0x63, 0x39, 0x9b, 0x32, 0x5d, - 0x6c, 0xb7, 0x97, 0xb0, 0xe6, 0xec, 0x5a, 0xb8, 0x9d, 0x68, 0x88, 0xe0, 0x45, 0x34, 0x15, 0x96, - 0x04, 0x17, 0x7c, 0x70, 0x95, 0x47, 0xe7, 0x29, 0x03, 0x7a, 0x03, 0x8f, 0x97, 0x91, 0x74, 0x49, - 0x6f, 0xf2, 0x21, 0xa9, 0x71, 0x90, 0x3c, 0x6d, 0x38, 0x26, 0xd2, 0x07, 0xe4, 0x37, 0x65, 0x98, - 0xa3, 0x76, 0xc2, 0xa8, 0x31, 0xf9, 0x83, 0x84, 0x3e, 0x26, 0xa1, 0x6b, 0x9b, 0xc2, 0xec, 0x8c, - 0x04, 0x96, 0x24, 0x1e, 0x29, 0x62, 0x7c, 0xa4, 0x8f, 0xcc, 0x67, 0xf2, 0x00, 0x21, 0xbf, 0xc1, - 0x0f, 0xe5, 0x83, 0x40, 0x80, 0xe8, 0x2d, 0x6c, 0xfe, 0x51, 0xe7, 0xa2, 0x52, 0x87, 0x7c, 0x02, - 0xfd, 0x0d, 0x29, 0x3e, 0x51, 0x68, 0x54, 0xf9, 0xf3, 0x84, 0x36, 0x2f, 0xf3, 0xda, 0x1b, 0x38, - 0xb8, 0x0f, 0xd9, 0xcb, 0x7d, 0x38, 0x81, 0xf1, 0x3b, 0x88, 0x95, 0x64, 0xa8, 0xad, 0x0e, 0x31, - 0xb3, 0x3f, 0x05, 0xc7, 0xd5, 0x72, 0x71, 0xb1, 0x56, 0x5d, 0xbd, 0x2f, 0x7c, 0x87, 0x4f, 0x41, - 0x0e, 0x4f, 0x4e, 0x52, 0x81, 0xed, 0xd5, 0x09, 0xfb, 0x40, 0x5e, 0x56, 0xb1, 0x37, 0xd4, 0x7f, - 0x2c, 0x41, 0xaf, 0x26, 0x40, 0xf6, 0x30, 0x51, 0x78, 0x10, 0x42, 0xcd, 0xe8, 0x17, 0x65, 0x28, - 0xb8, 0xe3, 0x21, 0xe5, 0x92, 0x5d, 0xd6, 0x56, 0xe3, 0xdd, 0x0a, 0xbb, 0x74, 0xff, 0x29, 0x70, - 0x2b, 0xf4, 0x12, 0x94, 0xeb, 0x61, 0xae, 0xb5, 0x8d, 0x5b, 0x17, 0x2a, 0x86, 0xb7, 0xaf, 0x4e, - 0x37, 0x61, 0x7b, 0x52, 0x79, 0x60, 0xee, 0xe5, 0x81, 0xe1, 0x27, 0xd1, 0xdc, 0x20, 0x1d, 0x66, - 0x2a, 0x02, 0x97, 0x3f, 0xf2, 0x71, 0xa9, 0x72, 0xb8, 0xdc, 0x3e, 0x14, 0xd5, 0x64, 0xb0, 0x54, - 0x87, 0x80, 0x05, 0xc1, 0xc9, 0xda, 0x7a, 0xa3, 0x52, 0xab, 0x36, 0x37, 0xea, 0xe5, 0xc5, 0xe6, - 0x82, 0x07, 0x4e, 0xbd, 0x20, 0xa3, 0xaf, 0x4b, 0x30, 0x41, 0xd9, 0xb2, 0xd1, 0xe3, 0x03, 0x08, - 0x06, 0xfa, 0x53, 0xa2, 0x37, 0x0b, 0x47, 0x47, 0xf0, 0x05, 0xc1, 0xca, 0x89, 0xe8, 0xa7, 0x9e, - 0x0a, 0x13, 0x14, 0x64, 0x6f, 0x45, 0xeb, 0x74, 0x44, 0x2f, 0xc5, 0xc8, 0xa8, 0x5e, 0x76, 0xc1, - 0x48, 0x09, 0x03, 0xd8, 0x48, 0x7f, 0x64, 0x79, 0x56, 0x96, 0x9a, 0xc1, 0xe7, 0x74, 0x67, 0x9b, - 0xb8, 0x5b, 0xa2, 0x9f, 0x10, 0x59, 0x5e, 0xbc, 0x09, 0x72, 0x7b, 0x6e, 0xee, 0x01, 0xae, 0xab, - 0x34, 0x13, 0x7a, 0xa9, 0x70, 0x60, 0x4e, 0x4e, 0x3f, 0x7d, 0x9e, 0x22, 0xc0, 0x59, 0x83, 0x6c, - 0x47, 0xb7, 0x1d, 0x36, 0x7e, 0xdc, 0x96, 0x88, 0x90, 0xf7, 0x50, 0x71, 0xf0, 0x8e, 0x4a, 0xc8, - 0xa0, 0x7b, 0x60, 0x26, 0x9c, 0x2a, 0xe0, 0xbe, 0x7b, 0x0a, 0x26, 0xd8, 0xb1, 0x32, 0xb6, 0xc4, - 0xea, 0xbd, 0x0a, 0x2e, 0x6b, 0x0a, 0xd5, 0x36, 0x7d, 0x1d, 0xf8, 0xbf, 0x8f, 0xc2, 0xc4, 0x8a, - 0x6e, 0x3b, 0xa6, 0x75, 0x09, 0x3d, 0x92, 0x81, 0x89, 0xb3, 0xd8, 0xb2, 0x75, 0xd3, 0xd8, 0xe7, - 0x6a, 0x70, 0x0d, 0x4c, 0x77, 0x2d, 0xbc, 0xa7, 0x9b, 0xbb, 0x76, 0xb0, 0x38, 0x13, 0x4e, 0x52, - 0x10, 0x4c, 0x6a, 0xbb, 0xce, 0xb6, 0x69, 0x05, 0xd1, 0x28, 0xbc, 0x77, 0xe5, 0x34, 0x00, 0x7d, - 0xae, 0x6a, 0x3b, 0x98, 0x39, 0x50, 0x84, 0x52, 0x14, 0x05, 0xb2, 0x8e, 0xbe, 0x83, 0x59, 0x78, - 0x5a, 0xf2, 0xec, 0x0a, 0x98, 0x84, 0x7a, 0x63, 0x21, 0xf5, 0x64, 0xd5, 0x7b, 0x45, 0x9f, 0x93, - 0x61, 0x7a, 0x19, 0x3b, 0x8c, 0x55, 0x1b, 0x3d, 0x3f, 0x23, 0x74, 0x23, 0x84, 0x3b, 0xc6, 0x76, - 0x34, 0xdb, 0xfb, 0xcf, 0x5f, 0x82, 0xe5, 0x13, 0x83, 0x58, 0xb9, 0x72, 0x38, 0x50, 0x36, 0x09, - 0x9c, 0xe6, 0x54, 0xa8, 0x5f, 0x26, 0xcb, 0xcc, 0x36, 0x41, 0xf6, 0x7f, 0x40, 0xef, 0x90, 0x44, - 0x0f, 0x1d, 0x33, 0xd9, 0xcf, 0x87, 0xea, 0x13, 0xd9, 0x1d, 0x4d, 0xee, 0xb1, 0x1c, 0xfb, 0x62, - 0xa0, 0x87, 0x29, 0x31, 0x32, 0xaa, 0x9f, 0x5b, 0xf0, 0xb8, 0xf2, 0x60, 0x4e, 0xd2, 0xd7, 0xc6, - 0x6f, 0xcb, 0x30, 0x5d, 0xdf, 0x36, 0x2f, 0x7a, 0x72, 0xfc, 0x69, 0x31, 0x60, 0xaf, 0x82, 0xa9, - 0xbd, 0x1e, 0x50, 0x83, 0x84, 0xe8, 0x3b, 0xda, 0xd1, 0x73, 0xe5, 0xa4, 0x30, 0x85, 0x98, 0x1b, - 0xf9, 0x0d, 0xea, 0xca, 0x53, 0x60, 0x82, 0x71, 0xcd, 0x96, 0x5c, 0xe2, 0x01, 0xf6, 0x32, 0x87, - 0x2b, 0x98, 0xe5, 0x2b, 0x98, 0x0c, 0xf9, 0xe8, 0xca, 0xa5, 0x8f, 0xfc, 0x9f, 0x48, 0x24, 0x58, - 0x85, 0x07, 0x7c, 0x69, 0x04, 0xc0, 0xa3, 0xef, 0x64, 0x44, 0x17, 0x26, 0x7d, 0x09, 0xf8, 0x1c, - 0x1c, 0xe8, 0xb6, 0x97, 0x81, 0xe4, 0xd2, 0x97, 0xe7, 0x4b, 0xb2, 0x30, 0xb3, 0xa8, 0x6f, 0x6e, - 0xfa, 0x9d, 0xe4, 0xaf, 0x0a, 0x76, 0x92, 0xd1, 0xee, 0x00, 0xae, 0x9d, 0xbb, 0x6b, 0x59, 0xd8, - 0xf0, 0x2a, 0xc5, 0x9a, 0x53, 0x4f, 0xaa, 0x72, 0x03, 0x1c, 0xf5, 0xc6, 0x85, 0x70, 0x47, 0x39, - 0xa5, 0xf6, 0x26, 0xa3, 0x6f, 0x09, 0xef, 0x6a, 0x79, 0x12, 0x0d, 0x57, 0x29, 0xa2, 0x01, 0xde, - 0x01, 0xb3, 0xdb, 0x34, 0x37, 0x99, 0xfa, 0x7b, 0x9d, 0xe5, 0xc9, 0x9e, 0x60, 0xc0, 0x6b, 0xd8, - 0xb6, 0xb5, 0x2d, 0xac, 0xf2, 0x99, 0x7b, 0x9a, 0xaf, 0x9c, 0xe4, 0x6a, 0x2b, 0xb1, 0x0d, 0x32, - 0x81, 0x9a, 0x8c, 0x41, 0x3b, 0xce, 0x40, 0x76, 0x49, 0xef, 0x60, 0xf4, 0x4b, 0x12, 0x4c, 0xa9, - 0xb8, 0x65, 0x1a, 0x2d, 0xf7, 0x2d, 0xe4, 0x1c, 0xf4, 0x4f, 0x19, 0xd1, 0x2b, 0x1d, 0x5d, 0x3a, - 0xf3, 0x3e, 0x8d, 0x88, 0x76, 0x23, 0x76, 0x75, 0x63, 0x2c, 0xa9, 0x31, 0x5c, 0xc0, 0xe1, 0x4e, - 0x3d, 0x36, 0x37, 0x3b, 0xa6, 0xc6, 0x2d, 0x7e, 0xf5, 0x9a, 0x42, 0x37, 0x42, 0xc1, 0x3b, 0x03, - 0x62, 0x3a, 0xeb, 0xba, 0x61, 0xf8, 0x87, 0x8c, 0xf7, 0xa5, 0xf3, 0xfb, 0xb6, 0xb1, 0x71, 0x5a, - 0x48, 0xdd, 0x59, 0xe9, 0x11, 0x9a, 0x7d, 0x3d, 0xcc, 0x9d, 0xbf, 0xe4, 0x60, 0x9b, 0xe5, 0x62, - 0xc5, 0x66, 0xd5, 0x9e, 0xd4, 0x50, 0x94, 0xe5, 0xb8, 0x78, 0x2e, 0x31, 0x05, 0x26, 0x13, 0xf5, - 0xca, 0x10, 0x33, 0xc0, 0xe3, 0x50, 0xa8, 0xd6, 0x16, 0xcb, 0xc4, 0x57, 0xcd, 0xf3, 0xfe, 0xd9, - 0x42, 0x2f, 0x90, 0x61, 0x86, 0x38, 0x93, 0x78, 0x28, 0x5c, 0x2b, 0x30, 0x1f, 0x41, 0x5f, 0x14, - 0xf6, 0x63, 0x23, 0x55, 0x0e, 0x17, 0x10, 0x2d, 0xe8, 0x4d, 0xbd, 0xd3, 0x2b, 0xe8, 0x9c, 0xda, - 0x93, 0xda, 0x07, 0x10, 0xb9, 0x2f, 0x20, 0xbf, 0x27, 0xe4, 0xcc, 0x36, 0x88, 0xbb, 0xc3, 0x42, - 0xe5, 0xf7, 0x65, 0x98, 0x76, 0x27, 0x29, 0x1e, 0x28, 0x35, 0x0e, 0x14, 0xd3, 0xe8, 0x5c, 0x0a, - 0x96, 0x45, 0xbc, 0xd7, 0x44, 0x8d, 0xe4, 0xaf, 0x84, 0x67, 0xee, 0x44, 0x44, 0x21, 0x5e, 0xc6, - 0x84, 0xdf, 0x7b, 0x84, 0xe6, 0xf3, 0x03, 0x98, 0x3b, 0x2c, 0xf8, 0xbe, 0x9a, 0x83, 0xfc, 0x46, - 0x97, 0x20, 0xf7, 0x52, 0x59, 0x24, 0x62, 0xf9, 0xbe, 0x83, 0x0c, 0xae, 0x99, 0xd5, 0x31, 0x5b, - 0x5a, 0x67, 0x3d, 0x38, 0x11, 0x16, 0x24, 0x28, 0xb7, 0x33, 0xdf, 0x46, 0x7a, 0xdc, 0xee, 0xfa, - 0xd8, 0x60, 0xde, 0x44, 0x46, 0xa1, 0x43, 0x23, 0x37, 0xc1, 0xb1, 0xb6, 0x6e, 0x6b, 0xe7, 0x3b, - 0xb8, 0x6c, 0xb4, 0xac, 0x4b, 0x54, 0x1c, 0x6c, 0x5a, 0xb5, 0xef, 0x83, 0x72, 0x27, 0xe4, 0x6c, - 0xe7, 0x52, 0x87, 0xce, 0x13, 0xc3, 0x67, 0x4c, 0x22, 0x8b, 0xaa, 0xbb, 0xd9, 0x55, 0xfa, 0x57, - 0xd8, 0x45, 0x69, 0x42, 0xf0, 0x3e, 0xe7, 0x27, 0x41, 0xde, 0xb4, 0xf4, 0x2d, 0x9d, 0xde, 0xcf, - 0x33, 0xb7, 0x2f, 0x66, 0x1d, 0x35, 0x05, 0x6a, 0x24, 0x8b, 0xca, 0xb2, 0x2a, 0x4f, 0x81, 0x29, - 0x7d, 0x47, 0xdb, 0xc2, 0xf7, 0xea, 0x06, 0x3d, 0xd1, 0x37, 0x77, 0xeb, 0xa9, 0x7d, 0xc7, 0x67, - 0xd8, 0x77, 0x35, 0xc8, 0x8a, 0xde, 0x23, 0x89, 0x06, 0xd6, 0x21, 0x75, 0xa3, 0xa0, 0x8e, 0xe5, - 0x5e, 0x6b, 0xf4, 0x0a, 0xa1, 0x90, 0x37, 0xd1, 0x6c, 0xa5, 0x3f, 0x78, 0x7f, 0x56, 0x82, 0xc9, - 0x45, 0xf3, 0xa2, 0x41, 0x14, 0xfd, 0x36, 0x31, 0x5b, 0xb7, 0xcf, 0x21, 0x47, 0xfe, 0xda, 0xc8, - 0xd8, 0x13, 0x0d, 0xa4, 0xb6, 0x5e, 0x91, 0x11, 0x30, 0xc4, 0xb6, 0x1c, 0xc1, 0xcb, 0xfc, 0xe2, - 0xca, 0x49, 0x5f, 0xae, 0x7f, 0x2a, 0x43, 0x76, 0xd1, 0x32, 0xbb, 0xe8, 0x4d, 0x99, 0x04, 0x2e, - 0x0b, 0x6d, 0xcb, 0xec, 0x36, 0xc8, 0x6d, 0x5c, 0xc1, 0x31, 0x8e, 0x70, 0x9a, 0x72, 0x1b, 0x4c, - 0x76, 0x4d, 0x5b, 0x77, 0xbc, 0x69, 0xc4, 0xdc, 0xad, 0x8f, 0xe9, 0xdb, 0x9a, 0xd7, 0x59, 0x26, - 0xd5, 0xcf, 0xee, 0xf6, 0xda, 0x44, 0x84, 0xae, 0x5c, 0x5c, 0x31, 0x7a, 0x37, 0x92, 0xf5, 0xa4, - 0xa2, 0x17, 0x86, 0x91, 0x7c, 0x1a, 0x8f, 0xe4, 0x63, 0xfb, 0x48, 0xd8, 0x32, 0xbb, 0x23, 0xd9, - 0x64, 0x7c, 0x99, 0x8f, 0xea, 0xd3, 0x39, 0x54, 0x6f, 0x14, 0x2a, 0x33, 0x7d, 0x44, 0xdf, 0x93, - 0x05, 0x20, 0x66, 0xc6, 0x86, 0x3b, 0x01, 0x12, 0xb3, 0xb1, 0x7e, 0x21, 0x1b, 0x92, 0x65, 0x91, - 0x97, 0xe5, 0xe3, 0x23, 0xac, 0x18, 0x42, 0x3e, 0x42, 0xa2, 0x45, 0xc8, 0xed, 0xba, 0x9f, 0x99, - 0x44, 0x05, 0x49, 0x90, 0x57, 0x95, 0xfe, 0x89, 0xfe, 0x24, 0x03, 0x39, 0x92, 0xa0, 0x9c, 0x06, - 0x20, 0x03, 0x3b, 0x3d, 0x10, 0x94, 0x21, 0x43, 0x78, 0x28, 0x85, 0x68, 0xab, 0xde, 0x66, 0x9f, - 0xa9, 0xc9, 0x1c, 0x24, 0xb8, 0x7f, 0x93, 0xe1, 0x9e, 0xd0, 0x62, 0x06, 0x40, 0x28, 0xc5, 0xfd, - 0x9b, 0xbc, 0xad, 0xe2, 0x4d, 0x1a, 0x28, 0x39, 0xab, 0x06, 0x09, 0xfe, 0xdf, 0xab, 0xfe, 0xf5, - 0x5a, 0xde, 0xdf, 0x24, 0xc5, 0x9d, 0x0c, 0x13, 0xb5, 0x5c, 0x08, 0x8a, 0xc8, 0x93, 0x4c, 0xbd, - 0xc9, 0xe8, 0xd5, 0xbe, 0xda, 0x2c, 0x72, 0x6a, 0x73, 0x4b, 0x02, 0xf1, 0xa6, 0xaf, 0x3c, 0x5f, - 0xce, 0xc1, 0x54, 0xd5, 0x6c, 0x33, 0xdd, 0x09, 0x4d, 0x18, 0x3f, 0x96, 0x4b, 0x34, 0x61, 0xf4, - 0x69, 0x44, 0x28, 0xc8, 0xdd, 0xbc, 0x82, 0x88, 0x51, 0x08, 0xeb, 0x87, 0xb2, 0x00, 0x79, 0xa2, - 0xbd, 0xfb, 0xef, 0x6d, 0x8a, 0x23, 0x41, 0x44, 0xab, 0xb2, 0x3f, 0xff, 0xc3, 0xe9, 0xd8, 0x7f, - 0x85, 0x1c, 0xa9, 0x60, 0xcc, 0xee, 0x0e, 0x5f, 0x51, 0x29, 0xbe, 0xa2, 0x72, 0x7c, 0x45, 0xb3, - 0xbd, 0x15, 0x4d, 0xb2, 0x0e, 0x10, 0xa5, 0x21, 0xe9, 0xeb, 0xf8, 0x3f, 0x4e, 0x00, 0x54, 0xb5, - 0x3d, 0x7d, 0x8b, 0xee, 0x0e, 0x7f, 0xce, 0x9b, 0xff, 0xb0, 0x7d, 0xdc, 0xff, 0x16, 0x1a, 0x08, - 0x6f, 0x83, 0x09, 0x36, 0xee, 0xb1, 0x8a, 0x5c, 0xcd, 0x55, 0x24, 0xa0, 0x42, 0xcd, 0xd2, 0x07, - 0x1c, 0xd5, 0xcb, 0xcf, 0x5d, 0x31, 0x2b, 0xf5, 0x5c, 0x31, 0xdb, 0x7f, 0x0f, 0x22, 0xe2, 0xe2, - 0x59, 0xf4, 0x4e, 0x61, 0x8f, 0xfe, 0x10, 0x3f, 0xa1, 0x1a, 0x45, 0x34, 0xc1, 0x27, 0xc1, 0x84, - 0xe9, 0x6f, 0x68, 0xcb, 0x91, 0xeb, 0x60, 0x15, 0x63, 0xd3, 0x54, 0xbd, 0x9c, 0x82, 0x9b, 0x5f, - 0x42, 0x7c, 0x8c, 0xe5, 0xd0, 0xcc, 0xc9, 0x65, 0x2f, 0xe8, 0x94, 0x5b, 0x8f, 0x73, 0xba, 0xb3, - 0xbd, 0xaa, 0x1b, 0x17, 0x6c, 0xf4, 0x9f, 0xc5, 0x2c, 0xc8, 0x10, 0xfe, 0x52, 0x32, 0xfc, 0xf9, - 0x98, 0x1d, 0x75, 0x1e, 0xb5, 0x3b, 0xa3, 0xa8, 0xf4, 0xe7, 0x36, 0x02, 0xc0, 0xdb, 0x21, 0x4f, - 0x19, 0x65, 0x9d, 0xe8, 0x99, 0x48, 0xfc, 0x7c, 0x4a, 0x2a, 0xfb, 0x03, 0xbd, 0xc3, 0xc7, 0xf1, - 0x2c, 0x87, 0xe3, 0xc2, 0x81, 0x38, 0x4b, 0x1d, 0xd2, 0x33, 0x4f, 0x84, 0x09, 0x26, 0x69, 0x65, - 0x2e, 0xdc, 0x8a, 0x0b, 0x47, 0x14, 0x80, 0xfc, 0x9a, 0xb9, 0x87, 0x1b, 0x66, 0x21, 0xe3, 0x3e, - 0xbb, 0xfc, 0x35, 0xcc, 0x82, 0x84, 0x5e, 0x3e, 0x09, 0x93, 0x7e, 0xb4, 0x9f, 0xcf, 0x4a, 0x50, - 0x28, 0x59, 0x58, 0x73, 0xf0, 0x92, 0x65, 0xee, 0xd0, 0x1a, 0x89, 0x7b, 0x87, 0xfe, 0xa6, 0xb0, - 0x8b, 0x87, 0x1f, 0x85, 0xa7, 0xb7, 0xb0, 0x08, 0x2c, 0xe9, 0x22, 0xa4, 0xe4, 0x2d, 0x42, 0xa2, - 0x37, 0x0a, 0xb9, 0x7c, 0x88, 0x96, 0x92, 0x7e, 0x53, 0xfb, 0xa4, 0x04, 0xb9, 0x52, 0xc7, 0x34, - 0x70, 0xf8, 0x08, 0xd3, 0xc0, 0xb3, 0x32, 0xfd, 0x77, 0x22, 0xd0, 0xb3, 0x24, 0x51, 0x5b, 0x23, - 0x10, 0x80, 0x5b, 0xb6, 0xa0, 0x6c, 0xc5, 0x06, 0xa9, 0x58, 0xd2, 0xe9, 0x0b, 0xf4, 0xeb, 0x12, - 0x4c, 0xd1, 0xb8, 0x38, 0xc5, 0x4e, 0x07, 0x3d, 0x26, 0x10, 0x6a, 0x9f, 0x88, 0x49, 0xe8, 0xf7, - 0x84, 0x5d, 0xf4, 0xfd, 0x5a, 0xf9, 0xb4, 0x13, 0x04, 0x08, 0x4a, 0xe6, 0x31, 0x2e, 0xb6, 0x97, - 0x36, 0x90, 0xa1, 0xf4, 0x45, 0xfd, 0x17, 0x92, 0x6b, 0x00, 0x18, 0x17, 0xd6, 0x2d, 0xbc, 0xa7, - 0xe3, 0x8b, 0xe8, 0xca, 0x40, 0xd8, 0xfb, 0x83, 0x7e, 0xbc, 0x5e, 0x78, 0x11, 0x27, 0x44, 0x32, - 0x72, 0x2b, 0x6b, 0xba, 0x13, 0x64, 0x62, 0xbd, 0x78, 0x6f, 0x24, 0x96, 0x10, 0x19, 0x35, 0x9c, - 0x5d, 0x70, 0xcd, 0x26, 0x9a, 0x8b, 0xf4, 0x05, 0xfb, 0xfe, 0x09, 0x98, 0xdc, 0x30, 0xec, 0x6e, - 0x47, 0xb3, 0xb7, 0xd1, 0x77, 0x65, 0xc8, 0xd3, 0xdb, 0xc2, 0xd0, 0x8f, 0x71, 0xb1, 0x05, 0x7e, - 0x66, 0x17, 0x5b, 0x9e, 0x0b, 0x0e, 0x7d, 0xe9, 0x7f, 0x99, 0x39, 0x7a, 0x8f, 0x2c, 0x3a, 0x49, - 0xf5, 0x0a, 0x0d, 0x5d, 0x1b, 0xdf, 0xff, 0x38, 0x7b, 0x57, 0x6f, 0x39, 0xbb, 0x96, 0x7f, 0x35, - 0xf6, 0x13, 0xc4, 0xa8, 0xac, 0xd3, 0xbf, 0x54, 0xff, 0x77, 0xa4, 0xc1, 0x04, 0x4b, 0xdc, 0xb7, - 0x9d, 0xb4, 0xff, 0xfc, 0xed, 0x49, 0xc8, 0x6b, 0x96, 0xa3, 0xdb, 0x0e, 0xdb, 0x60, 0x65, 0x6f, - 0x6e, 0x77, 0x49, 0x9f, 0x36, 0xac, 0x8e, 0x17, 0x85, 0xc4, 0x4f, 0x40, 0xbf, 0x2f, 0x34, 0x7f, - 0x8c, 0xaf, 0x79, 0x32, 0xc8, 0xef, 0x1d, 0x62, 0x8d, 0xfa, 0x72, 0xb8, 0x4c, 0x2d, 0x36, 0xca, - 0x4d, 0x1a, 0xb4, 0xc2, 0x8f, 0x4f, 0xd1, 0x46, 0x6f, 0x97, 0x43, 0xeb, 0x77, 0x97, 0xb8, 0x31, - 0x82, 0x49, 0x31, 0x18, 0x23, 0xfc, 0x84, 0x98, 0xdd, 0x6a, 0x6e, 0x11, 0x56, 0x16, 0x5f, 0x84, - 0xfd, 0x1d, 0xe1, 0xdd, 0x24, 0x5f, 0x94, 0x03, 0xd6, 0x00, 0xe3, 0x6e, 0x13, 0x7a, 0xaf, 0xd0, - 0xce, 0xd0, 0xa0, 0x92, 0x0e, 0x11, 0xb6, 0xd7, 0x4d, 0xc0, 0xc4, 0xb2, 0xd6, 0xe9, 0x60, 0xeb, - 0x92, 0x3b, 0x24, 0x15, 0x3c, 0x0e, 0xd7, 0x34, 0x43, 0xdf, 0xc4, 0xb6, 0x13, 0xdf, 0x59, 0xbe, - 0x53, 0x38, 0x52, 0x2d, 0x2b, 0x63, 0xbe, 0x97, 0x7e, 0x84, 0xcc, 0x6f, 0x86, 0xac, 0x6e, 0x6c, - 0x9a, 0xac, 0xcb, 0xec, 0x5d, 0xb5, 0xf7, 0x7e, 0x26, 0x53, 0x17, 0x92, 0x51, 0x30, 0x58, 0xad, - 0x20, 0x17, 0xe9, 0xf7, 0x9c, 0xbf, 0x9b, 0x85, 0x59, 0x8f, 0x89, 0x8a, 0xd1, 0xc6, 0x0f, 0x84, - 0x97, 0x62, 0x5e, 0x90, 0x15, 0x3d, 0x0e, 0xd6, 0x5b, 0x1f, 0x42, 0x2a, 0x42, 0xa4, 0x0d, 0x80, - 0x96, 0xe6, 0xe0, 0x2d, 0xd3, 0xd2, 0xfd, 0xfe, 0xf0, 0xc9, 0x49, 0xa8, 0x95, 0xe8, 0xdf, 0x97, - 0xd4, 0x10, 0x1d, 0xe5, 0x4e, 0x98, 0xc6, 0xfe, 0xf9, 0x7b, 0x6f, 0xa9, 0x26, 0x16, 0xaf, 0x70, - 0x7e, 0xf4, 0x17, 0x42, 0xa7, 0xce, 0x44, 0xaa, 0x99, 0x0c, 0xb3, 0xe6, 0x70, 0x6d, 0x68, 0xa3, - 0xba, 0x56, 0x54, 0xeb, 0x2b, 0xc5, 0xd5, 0xd5, 0x4a, 0x75, 0xd9, 0x0f, 0xfc, 0xa2, 0xc0, 0xdc, - 0x62, 0xed, 0x5c, 0x35, 0x14, 0x99, 0x27, 0x8b, 0xd6, 0x61, 0xd2, 0x93, 0x57, 0x3f, 0x5f, 0xcc, - 0xb0, 0xcc, 0x98, 0x2f, 0x66, 0x28, 0xc9, 0x35, 0xce, 0xf4, 0x96, 0xef, 0xa0, 0x43, 0x9e, 0xd1, - 0x1f, 0x6b, 0x90, 0x23, 0x6b, 0xea, 0xe8, 0xad, 0x64, 0x1b, 0xb0, 0xdb, 0xd1, 0x5a, 0x18, 0xed, - 0x24, 0xb0, 0xc6, 0xbd, 0xab, 0x13, 0xa4, 0x7d, 0x57, 0x27, 0x90, 0x47, 0x66, 0xf5, 0x1d, 0xef, - 0xb7, 0x8e, 0xaf, 0xd2, 0x2c, 0xfc, 0x01, 0xad, 0xd8, 0xdd, 0x15, 0xba, 0xfc, 0xcf, 0xd8, 0x8c, - 0x50, 0xc9, 0x68, 0x9e, 0x92, 0x59, 0xa2, 0x62, 0xfb, 0x30, 0x71, 0x1c, 0x8d, 0xe1, 0x7a, 0xef, - 0x2c, 0xe4, 0xea, 0xdd, 0x8e, 0xee, 0xa0, 0x17, 0x4b, 0x23, 0xc1, 0x8c, 0x5e, 0x77, 0x21, 0x0f, - 0xbc, 0xee, 0x22, 0xd8, 0x75, 0xcd, 0x0a, 0xec, 0xba, 0x36, 0xf0, 0x03, 0x0e, 0xbf, 0xeb, 0x7a, - 0x1b, 0x0b, 0xde, 0x46, 0xf7, 0x6c, 0x1f, 0xdb, 0x47, 0xa4, 0xa4, 0x5a, 0x7d, 0xa2, 0x02, 0x9e, - 0x79, 0x22, 0x0b, 0x4e, 0x06, 0x90, 0x5f, 0xa8, 0x35, 0x1a, 0xb5, 0xb5, 0xc2, 0x11, 0x12, 0xd5, - 0xa6, 0xb6, 0x4e, 0x43, 0xc5, 0x54, 0xaa, 0xd5, 0xb2, 0x5a, 0x90, 0x48, 0xb8, 0xb4, 0x4a, 0x63, - 0xb5, 0x5c, 0x90, 0xf9, 0xd8, 0xe7, 0xb1, 0xe6, 0x37, 0x5f, 0x76, 0x9a, 0xea, 0x25, 0x66, 0x88, - 0x47, 0xf3, 0x93, 0xbe, 0x72, 0xfd, 0x86, 0x0c, 0xb9, 0x35, 0x6c, 0x6d, 0x61, 0xf4, 0x33, 0x09, - 0x36, 0xf9, 0x36, 0x75, 0xcb, 0xa6, 0xc1, 0xe5, 0x82, 0x4d, 0xbe, 0x70, 0x9a, 0x72, 0x1d, 0xcc, - 0xda, 0xb8, 0x65, 0x1a, 0x6d, 0x2f, 0x13, 0xed, 0x8f, 0xf8, 0x44, 0xfe, 0xde, 0x79, 0x01, 0xc8, - 0x08, 0xa3, 0x23, 0xd9, 0xa9, 0x4b, 0x02, 0x4c, 0xbf, 0x52, 0xd3, 0x07, 0xe6, 0x5b, 0xb2, 0xfb, - 0x53, 0xf7, 0x12, 0x7a, 0x91, 0xf0, 0xee, 0xeb, 0x4d, 0x90, 0x27, 0x6a, 0xea, 0x8d, 0xd1, 0xfd, - 0xfb, 0x63, 0x96, 0x47, 0x59, 0x80, 0x63, 0x36, 0xee, 0xe0, 0x96, 0x83, 0xdb, 0x6e, 0xd3, 0x55, - 0x07, 0x76, 0x0a, 0xfb, 0xb3, 0xa3, 0x3f, 0x0b, 0x03, 0x78, 0x07, 0x0f, 0xe0, 0xf5, 0x7d, 0x44, - 0xe9, 0x56, 0x28, 0xda, 0x56, 0x76, 0xab, 0x51, 0xef, 0x98, 0xfe, 0xa2, 0xb8, 0xf7, 0xee, 0x7e, - 0xdb, 0x76, 0x76, 0x3a, 0xe4, 0x1b, 0x3b, 0x60, 0xe0, 0xbd, 0x2b, 0xf3, 0x30, 0xa1, 0x19, 0x97, - 0xc8, 0xa7, 0x6c, 0x4c, 0xad, 0xbd, 0x4c, 0xe8, 0xe5, 0x3e, 0xf2, 0x77, 0x71, 0xc8, 0x3f, 0x5e, - 0x8c, 0xdd, 0xf4, 0x81, 0xff, 0xf9, 0x09, 0xc8, 0xad, 0x6b, 0xb6, 0x83, 0xd1, 0xff, 0x25, 0x8b, - 0x22, 0x7f, 0x3d, 0xcc, 0x6d, 0x9a, 0xad, 0x5d, 0x1b, 0xb7, 0xf9, 0x46, 0xd9, 0x93, 0x3a, 0x0a, - 0xcc, 0x95, 0x1b, 0xa1, 0xe0, 0x25, 0x32, 0xb2, 0xde, 0x36, 0xfc, 0xbe, 0x74, 0x12, 0x49, 0xdb, - 0x5e, 0xd7, 0x2c, 0xa7, 0xb6, 0x49, 0xd2, 0xfc, 0x48, 0xda, 0xe1, 0x44, 0x0e, 0xfa, 0x7c, 0x0c, - 0xf4, 0x13, 0xd1, 0xd0, 0x4f, 0x0a, 0x40, 0xaf, 0x14, 0x61, 0x72, 0x53, 0xef, 0x60, 0xf2, 0xc3, - 0x14, 0xf9, 0xa1, 0xdf, 0x98, 0x44, 0x64, 0xef, 0x8f, 0x49, 0x4b, 0x7a, 0x07, 0xab, 0xfe, 0x6f, - 0xde, 0x44, 0x06, 0x82, 0x89, 0xcc, 0x2a, 0xf5, 0xa7, 0x75, 0x0d, 0x2f, 0x43, 0xdb, 0xc1, 0xde, - 0xe2, 0x9b, 0xc1, 0x0e, 0xb7, 0xb4, 0x35, 0x47, 0x23, 0x60, 0xcc, 0xa8, 0xe4, 0x99, 0xf7, 0x0b, - 0x91, 0x7b, 0xfd, 0x42, 0x9e, 0x23, 0x27, 0xeb, 0x11, 0x3d, 0x66, 0x23, 0x5a, 0xd4, 0x79, 0x0f, - 0x20, 0x6a, 0x29, 0xfa, 0xef, 0x2e, 0x30, 0x2d, 0xcd, 0xc2, 0xce, 0x7a, 0xd8, 0x13, 0x23, 0xa7, - 0xf2, 0x89, 0xc4, 0x95, 0xcf, 0xae, 0x6b, 0x3b, 0x98, 0x14, 0x56, 0x72, 0xbf, 0x31, 0x17, 0xad, - 0x7d, 0xe9, 0x41, 0xff, 0x9b, 0x1b, 0x75, 0xff, 0xdb, 0xaf, 0x8e, 0xe9, 0x37, 0xc3, 0x57, 0x65, - 0x41, 0x2e, 0xed, 0x3a, 0x8f, 0xea, 0xee, 0xf7, 0x7b, 0xc2, 0x7e, 0x2e, 0xac, 0x3f, 0x8b, 0xbc, - 0x68, 0x7e, 0x4c, 0xbd, 0x6f, 0x42, 0x2d, 0x11, 0xf3, 0xa7, 0x89, 0xaa, 0xdb, 0x18, 0xee, 0x35, - 0x90, 0x7d, 0x07, 0xcb, 0x07, 0x33, 0x07, 0x37, 0xcd, 0x11, 0xed, 0x9f, 0x42, 0x3d, 0x83, 0xff, - 0xee, 0x75, 0x3c, 0x59, 0x2e, 0x56, 0x1f, 0xd9, 0x5e, 0x27, 0xa2, 0x9c, 0x51, 0xe9, 0x0b, 0x7a, - 0x89, 0xb0, 0xdb, 0x39, 0x15, 0x5b, 0xac, 0x2b, 0x61, 0x32, 0x9b, 0x4a, 0xec, 0x32, 0xd1, 0x98, - 0x62, 0xd3, 0x07, 0xec, 0x9b, 0x61, 0x57, 0xc1, 0xe2, 0x81, 0x11, 0x43, 0xaf, 0x10, 0xde, 0x8e, - 0xa2, 0xd5, 0x1e, 0xb0, 0x5e, 0x98, 0x4c, 0xde, 0x62, 0x9b, 0x55, 0xb1, 0x05, 0xa7, 0x2f, 0xf1, - 0x6f, 0xc8, 0x90, 0xa7, 0x5b, 0x90, 0xe8, 0x0d, 0x99, 0x04, 0xb7, 0xb0, 0x3b, 0xbc, 0x0b, 0xa1, - 0xff, 0x9e, 0x64, 0xcd, 0x81, 0x73, 0x35, 0xcc, 0x26, 0x72, 0x35, 0xe4, 0xcf, 0x71, 0x0a, 0xb4, - 0x23, 0x5a, 0xc7, 0x94, 0xa7, 0x93, 0x49, 0x5a, 0x58, 0x5f, 0x86, 0xd2, 0xc7, 0xfb, 0x17, 0x73, - 0x30, 0x43, 0x8b, 0x3e, 0xa7, 0xb7, 0xb7, 0xb0, 0x83, 0xde, 0x2e, 0xfd, 0xe0, 0xa0, 0xae, 0x54, - 0x61, 0xe6, 0x22, 0x61, 0x7b, 0x55, 0xbb, 0x64, 0xee, 0x3a, 0x6c, 0xe5, 0xe2, 0xc6, 0xd8, 0x75, - 0x0f, 0x5a, 0xcf, 0x79, 0xfa, 0x87, 0xca, 0xfd, 0xef, 0xca, 0x98, 0x2e, 0xf8, 0x53, 0x07, 0xae, - 0x3c, 0x31, 0xb2, 0xc2, 0x49, 0xca, 0x49, 0xc8, 0xef, 0xe9, 0xf8, 0x62, 0xa5, 0xcd, 0xac, 0x5b, - 0xf6, 0x86, 0xfe, 0x50, 0x78, 0xdf, 0x36, 0x0c, 0x37, 0xe3, 0x25, 0x5d, 0x2d, 0x14, 0xdb, 0xbd, - 0x1d, 0xc8, 0xd6, 0x18, 0xce, 0x14, 0xf3, 0x97, 0x75, 0x96, 0x12, 0x28, 0x62, 0x94, 0xe1, 0xcc, - 0x87, 0xf2, 0x88, 0x3d, 0xb1, 0x42, 0x05, 0x30, 0xe2, 0x7b, 0x3c, 0xc5, 0xe2, 0x4b, 0x0c, 0x28, - 0x3a, 0x7d, 0xc9, 0xbf, 0x5a, 0x86, 0xa9, 0x3a, 0x76, 0x96, 0x74, 0xdc, 0x69, 0xdb, 0xc8, 0x3a, - 0xb8, 0x69, 0x74, 0x33, 0xe4, 0x37, 0x09, 0xb1, 0x41, 0xe7, 0x16, 0x58, 0x36, 0xf4, 0x2a, 0x49, - 0x74, 0x47, 0x98, 0xad, 0xbe, 0x79, 0xdc, 0x8e, 0x04, 0x26, 0x31, 0x8f, 0xde, 0xf8, 0x92, 0xc7, - 0x10, 0xd8, 0x56, 0x86, 0x19, 0x76, 0xbb, 0x5f, 0xb1, 0xa3, 0x6f, 0x19, 0x68, 0x77, 0x04, 0x2d, - 0x44, 0xb9, 0x05, 0x72, 0x9a, 0x4b, 0x8d, 0x6d, 0xbd, 0xa2, 0xbe, 0x9d, 0x27, 0x29, 0x4f, 0xa5, - 0x19, 0x13, 0x84, 0x91, 0x0c, 0x14, 0xdb, 0xe3, 0x79, 0x8c, 0x61, 0x24, 0x07, 0x16, 0x9e, 0x3e, - 0x62, 0x5f, 0x92, 0xe1, 0x38, 0x63, 0xe0, 0x2c, 0xb6, 0x1c, 0xbd, 0xa5, 0x75, 0x28, 0x72, 0x0f, - 0x65, 0x46, 0x01, 0xdd, 0x0a, 0xcc, 0xee, 0x85, 0xc9, 0x32, 0x08, 0xcf, 0xf4, 0x85, 0x90, 0x63, - 0x40, 0xe5, 0x7f, 0x4c, 0x10, 0x8e, 0x8f, 0x93, 0x2a, 0x47, 0x73, 0x8c, 0xe1, 0xf8, 0x84, 0x99, - 0x48, 0x1f, 0xe2, 0x17, 0xb2, 0xd0, 0x3c, 0x41, 0xf7, 0xf9, 0x39, 0x61, 0x6c, 0x37, 0x60, 0x9a, - 0x60, 0x49, 0x7f, 0x64, 0xcb, 0x10, 0x31, 0x4a, 0xec, 0xf7, 0x3b, 0xec, 0xc2, 0x30, 0xff, 0x5f, - 0x35, 0x4c, 0x07, 0x9d, 0x03, 0x08, 0x3e, 0x85, 0x3b, 0xe9, 0x4c, 0x54, 0x27, 0x2d, 0x89, 0x75, - 0xd2, 0xaf, 0x17, 0x0e, 0x96, 0xd2, 0x9f, 0xed, 0x83, 0xab, 0x87, 0x58, 0x98, 0x8c, 0xc1, 0xa5, - 0xa7, 0xaf, 0x17, 0x2f, 0xcf, 0xf6, 0x5e, 0xe3, 0xfe, 0xa1, 0x91, 0xcc, 0xa7, 0xc2, 0xfd, 0x81, - 0xdc, 0xd3, 0x1f, 0x1c, 0xc0, 0x92, 0xbe, 0x01, 0x8e, 0xd2, 0x22, 0x4a, 0x3e, 0x5b, 0x39, 0x1a, - 0x0a, 0xa2, 0x27, 0x19, 0x7d, 0x78, 0x08, 0x25, 0x18, 0x74, 0xc7, 0x7c, 0x5c, 0x27, 0x97, 0xcc, - 0xd8, 0x4d, 0xaa, 0x20, 0x87, 0x77, 0x35, 0xfd, 0xd7, 0xb3, 0xd4, 0xda, 0xdd, 0x20, 0x77, 0xba, - 0xa1, 0xbf, 0xcc, 0x8e, 0x62, 0x44, 0xb8, 0x1b, 0xb2, 0xc4, 0xc5, 0x5d, 0x8e, 0x5c, 0xd2, 0x08, - 0x8a, 0x0c, 0x2e, 0xdc, 0xc3, 0x0f, 0x38, 0x2b, 0x47, 0x54, 0xf2, 0xa7, 0x72, 0x23, 0x1c, 0x3d, - 0xaf, 0xb5, 0x2e, 0x6c, 0x59, 0xe6, 0x2e, 0xb9, 0xfd, 0xca, 0x64, 0xd7, 0x68, 0x91, 0xeb, 0x08, - 0xf9, 0x0f, 0xca, 0xad, 0x9e, 0xe9, 0x90, 0x1b, 0x64, 0x3a, 0xac, 0x1c, 0x61, 0xc6, 0x83, 0xf2, - 0x44, 0xbf, 0xd3, 0xc9, 0xc7, 0x76, 0x3a, 0x2b, 0x47, 0xbc, 0x6e, 0x47, 0x59, 0x84, 0xc9, 0xb6, - 0xbe, 0x47, 0xb6, 0xaa, 0xc9, 0xac, 0x6b, 0xd0, 0xd1, 0xe5, 0x45, 0x7d, 0x8f, 0x6e, 0x6c, 0xaf, - 0x1c, 0x51, 0xfd, 0x3f, 0x95, 0x65, 0x98, 0x22, 0xdb, 0x02, 0x84, 0xcc, 0x64, 0xa2, 0x63, 0xc9, - 0x2b, 0x47, 0xd4, 0xe0, 0x5f, 0xd7, 0xfa, 0xc8, 0x92, 0xb3, 0x1f, 0x77, 0x79, 0xdb, 0xed, 0x99, - 0x44, 0xdb, 0xed, 0xae, 0x2c, 0xe8, 0x86, 0xfb, 0x49, 0xc8, 0xb5, 0x88, 0x84, 0x25, 0x26, 0x61, - 0xfa, 0xaa, 0xdc, 0x01, 0xd9, 0x1d, 0xcd, 0xf2, 0x26, 0xcf, 0xd7, 0x0f, 0xa6, 0xbb, 0xa6, 0x59, - 0x17, 0x5c, 0x04, 0xdd, 0xbf, 0x16, 0x26, 0x20, 0x47, 0x04, 0xe7, 0x3f, 0xa0, 0x37, 0x65, 0xa9, - 0x19, 0x52, 0x32, 0x0d, 0x77, 0xd8, 0x6f, 0x98, 0xde, 0x01, 0x99, 0x3f, 0xcc, 0x8c, 0xc6, 0x82, - 0xec, 0x7b, 0xef, 0xb9, 0x1c, 0x79, 0xef, 0x79, 0xcf, 0x05, 0xbc, 0xd9, 0xde, 0x0b, 0x78, 0x83, - 0xe5, 0x83, 0xdc, 0x60, 0x47, 0x95, 0x3f, 0x1b, 0xc2, 0x74, 0xe9, 0x15, 0x44, 0xf4, 0x0c, 0xbc, - 0xa3, 0x1b, 0xa1, 0x3a, 0x7b, 0xaf, 0x09, 0x3b, 0xa5, 0xa4, 0x46, 0xcd, 0x00, 0xf6, 0xd2, 0xef, - 0x9b, 0x7e, 0x3b, 0x0b, 0xa7, 0xe8, 0x35, 0xcf, 0x7b, 0xb8, 0x61, 0xf2, 0xf7, 0x4d, 0xa2, 0x4f, - 0x8c, 0x44, 0x69, 0xfa, 0x0c, 0x38, 0x72, 0xdf, 0x01, 0x67, 0xdf, 0x21, 0xe5, 0xec, 0x80, 0x43, - 0xca, 0xb9, 0x64, 0x2b, 0x87, 0xef, 0x0b, 0xeb, 0xcf, 0x3a, 0xaf, 0x3f, 0xb7, 0x47, 0x00, 0xd4, - 0x4f, 0x2e, 0x23, 0xb1, 0x6f, 0xde, 0xea, 0x6b, 0x4a, 0x9d, 0xd3, 0x94, 0xbb, 0x86, 0x67, 0x24, - 0x7d, 0x6d, 0xf9, 0x83, 0x2c, 0x5c, 0x16, 0x30, 0x53, 0xc5, 0x17, 0x99, 0xa2, 0x7c, 0x76, 0x24, - 0x8a, 0x92, 0x3c, 0x06, 0x42, 0xda, 0x1a, 0xf3, 0x27, 0xc2, 0x67, 0x87, 0x7a, 0x81, 0xf2, 0x65, - 0x13, 0xa1, 0x2c, 0x27, 0x21, 0x4f, 0x7b, 0x18, 0x06, 0x0d, 0x7b, 0x4b, 0xd8, 0xdd, 0x88, 0x9d, - 0x38, 0x12, 0xe5, 0x6d, 0x0c, 0xfa, 0xc3, 0xd6, 0x35, 0x1a, 0xbb, 0x96, 0x51, 0x31, 0x1c, 0x13, - 0xfd, 0xdc, 0x48, 0x14, 0xc7, 0xf7, 0x86, 0x93, 0x87, 0xf1, 0x86, 0x1b, 0x6a, 0x95, 0xc3, 0xab, - 0xc1, 0xa1, 0xac, 0x72, 0x44, 0x14, 0x9e, 0x3e, 0x7e, 0x6f, 0x91, 0xe1, 0x24, 0x9b, 0x6c, 0x2d, - 0xf0, 0x16, 0x22, 0xba, 0x6f, 0x14, 0x40, 0x1e, 0xf7, 0xcc, 0x24, 0x76, 0xcb, 0x19, 0x79, 0xe1, - 0x4f, 0x4a, 0xc5, 0xde, 0xef, 0xc0, 0x4d, 0x07, 0x7b, 0x38, 0x1c, 0x09, 0x52, 0x62, 0xd7, 0x3a, - 0x24, 0x60, 0x23, 0x7d, 0xcc, 0x7e, 0x55, 0x86, 0x3c, 0xbb, 0xde, 0x7f, 0x23, 0x15, 0x87, 0x09, - 0x3e, 0xca, 0xb3, 0xc0, 0x8e, 0x5c, 0xe2, 0x4b, 0xee, 0xd3, 0xdb, 0x8b, 0x3b, 0xa4, 0x5b, 0xec, - 0xbf, 0x25, 0xc1, 0x74, 0x1d, 0x3b, 0x25, 0xcd, 0xb2, 0x74, 0x6d, 0x6b, 0x54, 0x1e, 0xdf, 0xa2, - 0xde, 0xc3, 0xe8, 0xdb, 0x19, 0xd1, 0xf3, 0x34, 0xfe, 0x42, 0xb8, 0xc7, 0x6a, 0x44, 0x2c, 0xc1, - 0x47, 0x84, 0xce, 0xcc, 0x0c, 0xa2, 0x36, 0x06, 0x8f, 0x6d, 0x09, 0x26, 0xbc, 0xb3, 0x78, 0x37, - 0x73, 0xe7, 0x33, 0xb7, 0x9d, 0x1d, 0xef, 0x18, 0x0c, 0x79, 0xde, 0x7f, 0x06, 0x0c, 0xbd, 0x2c, - 0xa1, 0xa3, 0x7c, 0xfc, 0x41, 0xc2, 0x64, 0x6d, 0x2c, 0x89, 0x3b, 0xfc, 0x61, 0x1d, 0x1d, 0xfc, - 0xbd, 0x09, 0xb6, 0x1c, 0xb9, 0xaa, 0x39, 0xf8, 0x01, 0xf4, 0x39, 0x19, 0x26, 0xea, 0xd8, 0x71, - 0xc7, 0x5b, 0xee, 0x72, 0xd3, 0x61, 0x35, 0x5c, 0x09, 0xad, 0x78, 0x4c, 0xb1, 0x35, 0x8c, 0x7b, - 0x60, 0xaa, 0x6b, 0x99, 0x2d, 0x6c, 0xdb, 0x6c, 0xf5, 0x22, 0xec, 0xa8, 0xd6, 0x6f, 0xf4, 0x27, - 0xac, 0xcd, 0xaf, 0x7b, 0xff, 0xa8, 0xc1, 0xef, 0x49, 0xcd, 0x00, 0x4a, 0x89, 0x55, 0x70, 0xdc, - 0x66, 0x40, 0x5c, 0xe1, 0xe9, 0x03, 0xfd, 0x69, 0x19, 0x66, 0xea, 0xd8, 0xf1, 0xa5, 0x98, 0x60, - 0x93, 0x23, 0x1a, 0x5e, 0x0e, 0x4a, 0xf9, 0x60, 0x50, 0x8a, 0x5f, 0x0d, 0xc8, 0x4b, 0xd3, 0x27, - 0x36, 0xc6, 0xab, 0x01, 0xc5, 0x38, 0x18, 0xc3, 0xf1, 0xb5, 0xc7, 0xc2, 0x14, 0xe1, 0x85, 0x34, - 0xd8, 0x5f, 0xce, 0x06, 0x8d, 0xf7, 0xf3, 0x29, 0x35, 0xde, 0x3b, 0x21, 0xb7, 0xa3, 0x59, 0x17, - 0x6c, 0xd2, 0x70, 0xa7, 0x45, 0xcc, 0xf6, 0x35, 0x37, 0xbb, 0x4a, 0xff, 0xea, 0xef, 0xa7, 0x99, - 0x4b, 0xe6, 0xa7, 0xf9, 0x88, 0x94, 0x68, 0x24, 0xa4, 0x73, 0x87, 0x11, 0x36, 0xf9, 0x04, 0xe3, - 0x66, 0x4c, 0xd9, 0xe9, 0x2b, 0xc7, 0x43, 0x32, 0x4c, 0xba, 0xe3, 0x36, 0xb1, 0xc7, 0xcf, 0x1d, - 0x5c, 0x1d, 0xfa, 0x1b, 0xfa, 0x09, 0x7b, 0x60, 0x4f, 0x22, 0xa3, 0x33, 0xef, 0x13, 0xf4, 0xc0, - 0x71, 0x85, 0xa7, 0x8f, 0xc7, 0xdb, 0x28, 0x1e, 0xa4, 0x3d, 0xa0, 0xd7, 0xca, 0x20, 0x2f, 0x63, - 0x67, 0xdc, 0x56, 0xe4, 0x9b, 0x85, 0x43, 0x1c, 0x71, 0x02, 0x23, 0x3c, 0xcf, 0x2f, 0xe3, 0xd1, - 0x34, 0x20, 0xb1, 0xd8, 0x46, 0x42, 0x0c, 0xa4, 0x8f, 0xda, 0xbb, 0x28, 0x6a, 0x74, 0x73, 0xe1, - 0x67, 0x47, 0xd0, 0xab, 0x8e, 0x77, 0xe1, 0xc3, 0x13, 0x20, 0xa1, 0x71, 0x58, 0xed, 0xad, 0x5f, - 0xe1, 0x63, 0xb9, 0x8a, 0x0f, 0xdc, 0xc6, 0xbe, 0x8d, 0x5b, 0x17, 0x70, 0x1b, 0xfd, 0xd4, 0xc1, - 0xa1, 0x3b, 0x05, 0x13, 0x2d, 0x4a, 0x8d, 0x80, 0x37, 0xa9, 0x7a, 0xaf, 0x09, 0xee, 0x95, 0xe6, - 0x3b, 0x22, 0xfa, 0xfb, 0x18, 0xef, 0x95, 0x16, 0x28, 0x7e, 0x0c, 0x66, 0x0b, 0x9d, 0x65, 0x54, - 0x5a, 0xa6, 0x81, 0xfe, 0xcb, 0xc1, 0x61, 0xb9, 0x0a, 0xa6, 0xf4, 0x96, 0x69, 0x90, 0x30, 0x14, - 0xde, 0x21, 0x20, 0x3f, 0xc1, 0xfb, 0x5a, 0xde, 0x31, 0xef, 0xd7, 0xd9, 0xae, 0x79, 0x90, 0x30, - 0xac, 0x31, 0xe1, 0xb2, 0x7e, 0x58, 0xc6, 0x44, 0x9f, 0xb2, 0xd3, 0x87, 0xec, 0xc3, 0x81, 0x77, - 0x1b, 0xed, 0x0a, 0x1f, 0x15, 0xab, 0xc0, 0xc3, 0x0c, 0x67, 0xe1, 0x5a, 0x1c, 0xca, 0x70, 0x16, - 0xc3, 0xc0, 0x18, 0x6e, 0xac, 0x08, 0x70, 0x4c, 0x7d, 0x0d, 0xf8, 0x00, 0xe8, 0x8c, 0xce, 0x3c, - 0x1c, 0x12, 0x9d, 0xc3, 0x31, 0x11, 0xdf, 0xcb, 0x42, 0x64, 0x32, 0x8b, 0x07, 0xfd, 0xd7, 0x51, - 0x80, 0x73, 0xfb, 0x30, 0xfe, 0x0a, 0xd4, 0x5b, 0x21, 0xc1, 0x8d, 0xd8, 0xfb, 0x24, 0xe8, 0x52, - 0x19, 0xe3, 0x5d, 0xf1, 0x22, 0xe5, 0xa7, 0x0f, 0xe0, 0xf3, 0x64, 0x98, 0x23, 0x3e, 0x02, 0x1d, - 0xac, 0x59, 0xb4, 0xa3, 0x1c, 0x89, 0xa3, 0xfc, 0xdb, 0x84, 0x03, 0xfc, 0xf0, 0x72, 0x08, 0xf8, - 0x18, 0x09, 0x14, 0x62, 0xd1, 0x7d, 0x04, 0x59, 0x18, 0xcb, 0x36, 0x4a, 0xc1, 0x67, 0x81, 0xa9, - 0xf8, 0x68, 0xf0, 0x48, 0xe8, 0x91, 0xcb, 0x0b, 0xc3, 0x6b, 0x6c, 0x63, 0xf6, 0xc8, 0x15, 0x61, - 0x22, 0x7d, 0x4c, 0x5e, 0x7b, 0x0b, 0x5b, 0x70, 0x6e, 0x90, 0x0b, 0xe3, 0x5f, 0x91, 0xf5, 0x4f, - 0xb4, 0x7d, 0x7a, 0x24, 0x1e, 0x98, 0x07, 0x08, 0x88, 0xaf, 0x40, 0xd6, 0x32, 0x2f, 0xd2, 0xa5, - 0xad, 0x59, 0x95, 0x3c, 0xd3, 0xeb, 0x29, 0x3b, 0xbb, 0x3b, 0x06, 0x3d, 0x19, 0x3a, 0xab, 0x7a, - 0xaf, 0xca, 0x75, 0x30, 0x7b, 0x51, 0x77, 0xb6, 0x57, 0xb0, 0xd6, 0xc6, 0x96, 0x6a, 0x5e, 0x24, - 0x1e, 0x73, 0x93, 0x2a, 0x9f, 0xc8, 0xfb, 0xaf, 0x08, 0xd8, 0x97, 0xe4, 0x16, 0xf9, 0xb1, 0x1c, - 0x7f, 0x4b, 0x62, 0x79, 0x46, 0x73, 0x95, 0xbe, 0xc2, 0xbc, 0x5b, 0x86, 0x29, 0xd5, 0xbc, 0xc8, - 0x94, 0xe4, 0xff, 0x38, 0x5c, 0x1d, 0x49, 0x3c, 0xd1, 0x23, 0x92, 0xf3, 0xd9, 0x1f, 0xfb, 0x44, - 0x2f, 0xb6, 0xf8, 0xb1, 0x9c, 0x5c, 0x9a, 0x51, 0xcd, 0x8b, 0x75, 0xec, 0xd0, 0x16, 0x81, 0x9a, - 0x23, 0x72, 0xb2, 0xd6, 0x6d, 0x4a, 0x90, 0xcd, 0xc3, 0xfd, 0xf7, 0xa4, 0xbb, 0x08, 0xbe, 0x80, - 0x7c, 0x16, 0xc7, 0xbd, 0x8b, 0x30, 0x90, 0x83, 0x31, 0xc4, 0x48, 0x91, 0x61, 0x5a, 0x35, 0x2f, - 0xba, 0x43, 0xc3, 0x92, 0xde, 0xe9, 0x8c, 0x66, 0x84, 0x4c, 0x6a, 0xfc, 0x7b, 0x62, 0xf0, 0xb8, - 0x18, 0xbb, 0xf1, 0x3f, 0x80, 0x81, 0xf4, 0x61, 0x78, 0x0e, 0x6d, 0x2c, 0xde, 0x08, 0x6d, 0x8c, - 0x06, 0x87, 0x61, 0x1b, 0x84, 0xcf, 0xc6, 0xa1, 0x35, 0x88, 0x28, 0x0e, 0xc6, 0xb2, 0x73, 0x32, - 0x57, 0x22, 0xc3, 0xfc, 0x68, 0xdb, 0xc4, 0x3b, 0x92, 0xb9, 0x26, 0xb2, 0x61, 0x97, 0x63, 0x64, - 0x24, 0x68, 0x24, 0x70, 0x41, 0x14, 0xe0, 0x21, 0x7d, 0x3c, 0x3e, 0x20, 0xc3, 0x0c, 0x65, 0xe1, - 0x51, 0x62, 0x05, 0x0c, 0xd5, 0xa8, 0xc2, 0x35, 0x38, 0x9c, 0x46, 0x15, 0xc3, 0xc1, 0x58, 0x6e, - 0x05, 0x75, 0xed, 0xb8, 0x21, 0x8e, 0x8f, 0x47, 0x21, 0x38, 0xb4, 0x31, 0x36, 0xc2, 0x23, 0xe4, - 0xc3, 0x18, 0x63, 0x87, 0x74, 0x8c, 0xfc, 0x39, 0x7e, 0x2b, 0x1a, 0x25, 0x06, 0x07, 0x68, 0x0a, - 0x23, 0x84, 0x61, 0xc8, 0xa6, 0x70, 0x48, 0x48, 0x7c, 0x59, 0x06, 0xa0, 0x0c, 0xac, 0x99, 0x7b, - 0xe4, 0x32, 0x9f, 0x11, 0x74, 0x67, 0xbd, 0x6e, 0xf5, 0xf2, 0x00, 0xb7, 0xfa, 0x84, 0x21, 0x5c, - 0x92, 0xae, 0x04, 0x86, 0xa4, 0xec, 0x56, 0x72, 0xec, 0x2b, 0x81, 0xf1, 0xe5, 0xa7, 0x8f, 0xf1, - 0x17, 0xa9, 0x35, 0x17, 0x1c, 0x30, 0xfd, 0xad, 0x91, 0xa0, 0x1c, 0x9a, 0xfd, 0xcb, 0xfc, 0xec, - 0xff, 0x00, 0xd8, 0x0e, 0x6b, 0x23, 0x0e, 0x3a, 0x38, 0x9a, 0xbe, 0x8d, 0x78, 0x78, 0x07, 0x44, - 0x7f, 0x36, 0x0b, 0x47, 0x59, 0x27, 0xf2, 0x83, 0x00, 0x71, 0xc2, 0x73, 0x78, 0x5c, 0x27, 0x39, - 0x00, 0xe5, 0x51, 0x2d, 0x48, 0x25, 0x59, 0xca, 0x14, 0x60, 0x6f, 0x2c, 0xab, 0x1b, 0xf9, 0xf2, - 0x03, 0x5d, 0xcd, 0x68, 0x8b, 0x87, 0xfb, 0x1d, 0x00, 0xbc, 0xb7, 0xd6, 0x28, 0xf3, 0x6b, 0x8d, - 0x7d, 0x56, 0x26, 0x13, 0xef, 0x5c, 0x13, 0x91, 0x51, 0x76, 0xc7, 0xbe, 0x73, 0x1d, 0x5d, 0x76, - 0xfa, 0x28, 0xbd, 0x43, 0x86, 0x6c, 0xdd, 0xb4, 0x1c, 0xf4, 0xdc, 0x24, 0xad, 0x93, 0x4a, 0x3e, - 0x00, 0xc9, 0x7b, 0x57, 0x4a, 0xdc, 0x2d, 0xcd, 0x37, 0xc7, 0x1f, 0x75, 0xd6, 0x1c, 0x8d, 0x78, - 0x75, 0xbb, 0xe5, 0x87, 0xae, 0x6b, 0x4e, 0x1a, 0x4f, 0x87, 0xca, 0xaf, 0x1e, 0x7d, 0x00, 0x23, - 0xb5, 0x78, 0x3a, 0x91, 0x25, 0xa7, 0x8f, 0xdb, 0xc3, 0x47, 0x99, 0x6f, 0xeb, 0x92, 0xde, 0xc1, - 0xe8, 0xb9, 0xd4, 0x65, 0xa4, 0xaa, 0xed, 0x60, 0xf1, 0x23, 0x31, 0xb1, 0xae, 0xad, 0x24, 0xbe, - 0xac, 0x1c, 0xc4, 0x97, 0x4d, 0xda, 0xa0, 0xe8, 0x01, 0x74, 0xca, 0xd2, 0xb8, 0x1b, 0x54, 0x4c, - 0xd9, 0x63, 0x89, 0xd3, 0x79, 0xac, 0x8e, 0x1d, 0x6a, 0x54, 0xd6, 0xbc, 0x1b, 0x58, 0x7e, 0x7a, - 0x24, 0x11, 0x3b, 0xfd, 0x0b, 0x5e, 0xe4, 0x9e, 0x0b, 0x5e, 0xde, 0x1d, 0x06, 0x67, 0x8d, 0x07, - 0xe7, 0xc7, 0xa3, 0x05, 0xc4, 0x33, 0x39, 0x12, 0x98, 0xde, 0xec, 0xc3, 0xb4, 0xce, 0xc1, 0x74, - 0xc7, 0x90, 0x5c, 0xa4, 0x0f, 0xd8, 0xaf, 0xe4, 0xe0, 0x28, 0x9d, 0xf4, 0x17, 0x8d, 0x36, 0x8b, - 0xb0, 0xfa, 0x06, 0xe9, 0x90, 0x37, 0xdb, 0xf6, 0x87, 0x60, 0xe5, 0x62, 0x39, 0xe7, 0x7a, 0x6f, - 0xc7, 0x5f, 0xa0, 0xe1, 0x5c, 0xdd, 0x4e, 0x94, 0xec, 0xb4, 0x89, 0xdf, 0x90, 0xef, 0xff, 0xc7, - 0xdf, 0x65, 0x34, 0x21, 0x7e, 0x97, 0xd1, 0x9f, 0x26, 0x5b, 0xb7, 0x23, 0x45, 0xf7, 0x08, 0x3c, - 0x65, 0xdb, 0x29, 0xc1, 0x8a, 0x9e, 0x00, 0x77, 0x3f, 0x1c, 0xee, 0x64, 0x41, 0x04, 0x91, 0x21, - 0xdd, 0xc9, 0x08, 0x81, 0xc3, 0x74, 0x27, 0x1b, 0xc4, 0xc0, 0x18, 0x6e, 0xb5, 0xcf, 0xb1, 0xdd, - 0x7c, 0xd2, 0x6e, 0xd0, 0x5f, 0x4b, 0xa9, 0x8f, 0xd2, 0xdf, 0xc9, 0x24, 0xf2, 0x7f, 0x26, 0x7c, - 0xc5, 0x0f, 0xd3, 0x49, 0x3c, 0x9a, 0xe3, 0xc8, 0x8d, 0x61, 0xdd, 0x48, 0x22, 0xbe, 0xe8, 0xe7, - 0xf4, 0xb6, 0xb3, 0x3d, 0xa2, 0x13, 0x1d, 0x17, 0x5d, 0x5a, 0xde, 0xf5, 0xc8, 0xe4, 0x05, 0xfd, - 0x7b, 0x26, 0x51, 0x08, 0x29, 0x5f, 0x24, 0x84, 0xad, 0x08, 0x11, 0x27, 0x08, 0xfc, 0x14, 0x4b, - 0x6f, 0x8c, 0x1a, 0x7d, 0x56, 0x6f, 0x63, 0xf3, 0x51, 0xa8, 0xd1, 0x84, 0xaf, 0xd1, 0x69, 0x74, - 0x1c, 0xb9, 0x1f, 0x52, 0x8d, 0xf6, 0x45, 0x32, 0x22, 0x8d, 0x8e, 0xa5, 0x97, 0xbe, 0x8c, 0x5f, - 0x36, 0xc3, 0x26, 0x52, 0xab, 0xba, 0x71, 0x01, 0xfd, 0x4b, 0xde, 0xbb, 0x98, 0xf9, 0x9c, 0xee, - 0x6c, 0xb3, 0x58, 0x30, 0x7f, 0x20, 0x7c, 0x37, 0xca, 0x10, 0xf1, 0x5e, 0xf8, 0x70, 0x52, 0xb9, - 0x7d, 0xe1, 0xa4, 0x8a, 0x30, 0xab, 0x1b, 0x0e, 0xb6, 0x0c, 0xad, 0xb3, 0xd4, 0xd1, 0xb6, 0xec, - 0x53, 0x13, 0x7d, 0x2f, 0xaf, 0xab, 0x84, 0xf2, 0xa8, 0xfc, 0x1f, 0xe1, 0xeb, 0x2b, 0x27, 0xf9, - 0xeb, 0x2b, 0x23, 0xa2, 0x5f, 0x4d, 0x45, 0x47, 0xbf, 0xf2, 0xa3, 0x5b, 0xc1, 0xe0, 0xe0, 0xd8, - 0xa2, 0xb6, 0x71, 0xc2, 0x70, 0x7f, 0x37, 0x0b, 0x46, 0x61, 0xf3, 0x43, 0x3f, 0xbe, 0x52, 0x4e, - 0xb4, 0xba, 0xe7, 0x2a, 0xc2, 0x7c, 0xaf, 0x12, 0x24, 0xb6, 0x50, 0xc3, 0x95, 0x97, 0x7b, 0x2a, - 0xef, 0x9b, 0x3c, 0x59, 0x01, 0x93, 0x27, 0xac, 0x54, 0x39, 0x31, 0xa5, 0x4a, 0xb2, 0x58, 0x28, - 0x52, 0xdb, 0x31, 0x9c, 0x46, 0xca, 0xc1, 0x31, 0x2f, 0xda, 0x6d, 0xb7, 0x8b, 0x35, 0x4b, 0x33, - 0x5a, 0x18, 0x7d, 0x58, 0x1a, 0x85, 0xd9, 0xbb, 0x04, 0x93, 0x7a, 0xcb, 0x34, 0xea, 0xfa, 0x33, - 0xbd, 0xcb, 0xe5, 0xe2, 0x83, 0xac, 0x13, 0x89, 0x54, 0xd8, 0x1f, 0xaa, 0xff, 0xaf, 0x52, 0x81, - 0xa9, 0x96, 0x66, 0xb5, 0x69, 0x10, 0xbe, 0x5c, 0xcf, 0x45, 0x4e, 0x91, 0x84, 0x4a, 0xde, 0x2f, - 0x6a, 0xf0, 0xb7, 0x52, 0xe3, 0x85, 0x98, 0xef, 0x89, 0xe6, 0x11, 0x49, 0x6c, 0x31, 0xf8, 0x89, - 0x93, 0xb9, 0x2b, 0x1d, 0x0b, 0x77, 0xc8, 0x1d, 0xf4, 0xb4, 0x87, 0x98, 0x52, 0x83, 0x84, 0xa4, - 0xcb, 0x03, 0xa4, 0xa8, 0x7d, 0x68, 0x8c, 0x7b, 0x79, 0x40, 0x88, 0x8b, 0xf4, 0x35, 0xf3, 0xad, - 0x79, 0x98, 0xa5, 0xbd, 0x1a, 0x13, 0x27, 0x7a, 0x1e, 0xb9, 0x42, 0xda, 0xb9, 0x17, 0x5f, 0x42, - 0xf5, 0x83, 0x8f, 0xc9, 0x05, 0x90, 0x2f, 0xf8, 0x01, 0x07, 0xdd, 0xc7, 0xa4, 0xfb, 0xf6, 0x1e, - 0x5f, 0xf3, 0x94, 0xa7, 0x71, 0xef, 0xdb, 0xc7, 0x17, 0x9f, 0x3e, 0x3e, 0xbf, 0x26, 0x83, 0x5c, - 0x6c, 0xb7, 0x51, 0xeb, 0xe0, 0x50, 0x5c, 0x03, 0xd3, 0x5e, 0x9b, 0x09, 0x62, 0x40, 0x86, 0x93, - 0x92, 0x2e, 0x82, 0xfa, 0xb2, 0x29, 0xb6, 0xc7, 0xbe, 0xab, 0x10, 0x53, 0x76, 0xfa, 0xa0, 0xfc, - 0xd6, 0x04, 0x6b, 0x34, 0x0b, 0xa6, 0x79, 0x81, 0x1c, 0x95, 0x79, 0xae, 0x0c, 0xb9, 0x25, 0xec, - 0xb4, 0xb6, 0x47, 0xd4, 0x66, 0x76, 0xad, 0x8e, 0xd7, 0x66, 0xf6, 0xdd, 0x87, 0x3f, 0xd8, 0x86, - 0xf5, 0xd8, 0x9a, 0x27, 0x2c, 0x8d, 0x3b, 0xba, 0x73, 0x6c, 0xe9, 0xe9, 0x83, 0xf3, 0xef, 0x32, - 0xcc, 0xf9, 0x2b, 0x5c, 0x14, 0x93, 0x5f, 0xc9, 0x3c, 0xda, 0xd6, 0x3b, 0xd1, 0x67, 0x93, 0x85, - 0x48, 0xf3, 0x65, 0xca, 0xd7, 0x2c, 0xe5, 0x85, 0xc5, 0x04, 0xc1, 0xd3, 0xc4, 0x18, 0x1c, 0xc3, - 0x0c, 0x5e, 0x86, 0x49, 0xc2, 0xd0, 0xa2, 0xbe, 0x47, 0x5c, 0x07, 0xb9, 0x85, 0xc6, 0x67, 0x8d, - 0x64, 0xa1, 0xf1, 0x0e, 0x7e, 0xa1, 0x51, 0x30, 0xe2, 0xb1, 0xb7, 0xce, 0x98, 0xd0, 0x97, 0xc6, - 0xfd, 0x7f, 0xe4, 0xcb, 0x8c, 0x09, 0x7c, 0x69, 0x06, 0x94, 0x9f, 0x3e, 0xa2, 0xaf, 0xfc, 0x4f, - 0xac, 0xb3, 0xf5, 0x36, 0x54, 0xd1, 0xff, 0x3c, 0x06, 0xd9, 0xb3, 0xee, 0xc3, 0xff, 0x0e, 0x6e, - 0xc4, 0x7a, 0xd1, 0x08, 0x82, 0x33, 0x3c, 0x1d, 0xb2, 0x2e, 0x7d, 0x36, 0x6d, 0xb9, 0x51, 0x6c, - 0x77, 0xd7, 0x65, 0x44, 0x25, 0xff, 0x29, 0x27, 0x21, 0x6f, 0x9b, 0xbb, 0x56, 0xcb, 0x35, 0x9f, - 0x5d, 0x8d, 0x61, 0x6f, 0x49, 0x83, 0x92, 0x72, 0xa4, 0xe7, 0x47, 0xe7, 0x32, 0x1a, 0xba, 0x20, - 0x49, 0xe6, 0x2e, 0x48, 0x4a, 0xb0, 0x7f, 0x20, 0xc0, 0x5b, 0xfa, 0x1a, 0xf1, 0xd7, 0xe4, 0xae, - 0xc0, 0xf6, 0xa8, 0x60, 0x8f, 0x10, 0xcb, 0x41, 0xd5, 0x21, 0xa9, 0xc3, 0x37, 0x2f, 0x5a, 0x3f, - 0x0e, 0xfc, 0x58, 0x1d, 0xbe, 0x05, 0x78, 0x18, 0xcb, 0x29, 0xf5, 0x3c, 0x73, 0x52, 0xbd, 0x6f, - 0x94, 0xe8, 0x66, 0x39, 0xa5, 0x3f, 0x10, 0x3a, 0x23, 0x74, 0x5e, 0x1d, 0x1a, 0x9d, 0x43, 0x72, - 0x5f, 0xfd, 0x88, 0x4c, 0x22, 0x61, 0x7a, 0x46, 0x8e, 0xf8, 0x45, 0x47, 0x89, 0x21, 0x72, 0xc7, - 0x60, 0x2e, 0x0e, 0xf4, 0xec, 0xf0, 0xa1, 0xc1, 0x79, 0xd1, 0x85, 0xf8, 0x1f, 0x77, 0x68, 0x70, - 0x51, 0x46, 0xd2, 0x07, 0xf2, 0x35, 0xf4, 0x62, 0xb1, 0x62, 0xcb, 0xd1, 0xf7, 0x46, 0xdc, 0xd2, - 0xf8, 0xe1, 0x25, 0x61, 0x34, 0xe0, 0x7d, 0x12, 0xa2, 0x1c, 0x8e, 0x3b, 0x1a, 0xb0, 0x18, 0x1b, - 0xe9, 0xc3, 0xf4, 0x77, 0x79, 0x57, 0x7a, 0x6c, 0x6d, 0xe6, 0xb5, 0x6c, 0x35, 0x00, 0x1f, 0x1c, - 0xad, 0x33, 0x30, 0x13, 0x9a, 0xfa, 0x7b, 0x17, 0xd6, 0x70, 0x69, 0x49, 0x0f, 0xba, 0xfb, 0x22, - 0x1b, 0xf9, 0xc2, 0x40, 0x82, 0x05, 0x5f, 0x11, 0x26, 0xc6, 0x72, 0x1f, 0x9c, 0x37, 0x86, 0x8d, - 0x09, 0xab, 0x3f, 0x08, 0x63, 0x55, 0xe3, 0xb1, 0xba, 0x4d, 0x44, 0x4c, 0x62, 0x63, 0x9a, 0xd0, - 0xbc, 0xf1, 0x2d, 0x3e, 0x5c, 0x2a, 0x07, 0xd7, 0xd3, 0x87, 0xe6, 0x23, 0x7d, 0xc4, 0x5e, 0x4c, - 0xbb, 0xc3, 0x3a, 0x35, 0xd9, 0x47, 0xd3, 0x1d, 0xb2, 0xd9, 0x80, 0xcc, 0xcd, 0x06, 0x12, 0xfa, - 0xdb, 0x07, 0x6e, 0xa4, 0x1e, 0x73, 0x83, 0x20, 0xca, 0x8e, 0xd8, 0xdf, 0x7e, 0x20, 0x07, 0xe9, - 0x83, 0xf3, 0x4f, 0x32, 0xc0, 0xb2, 0x65, 0xee, 0x76, 0x6b, 0x56, 0x1b, 0x5b, 0xe8, 0x6f, 0x83, - 0x09, 0xc0, 0x0b, 0x46, 0x30, 0x01, 0x58, 0x07, 0xd8, 0xf2, 0x89, 0x33, 0x0d, 0xbf, 0x45, 0xcc, - 0xdc, 0x0f, 0x98, 0x52, 0x43, 0x34, 0xf8, 0x2b, 0x67, 0x7f, 0x82, 0xc7, 0x38, 0xae, 0xcf, 0x0a, - 0xc8, 0x8d, 0x72, 0x02, 0xf0, 0x36, 0x1f, 0xeb, 0x06, 0x87, 0xf5, 0xdd, 0x07, 0xe0, 0x24, 0x7d, - 0xcc, 0xff, 0x79, 0x02, 0xa6, 0xe9, 0x76, 0x1d, 0x95, 0xe9, 0x3f, 0x04, 0xa0, 0xff, 0xd6, 0x08, - 0x40, 0xdf, 0x80, 0x19, 0x33, 0xa0, 0x4e, 0xfb, 0xd4, 0xf0, 0x02, 0x4c, 0x2c, 0xec, 0x21, 0xbe, - 0x54, 0x8e, 0x0c, 0xfa, 0x60, 0x18, 0x79, 0x95, 0x47, 0xfe, 0x8e, 0x18, 0x79, 0x87, 0x28, 0x8e, - 0x12, 0xfa, 0xb7, 0xfb, 0xd0, 0x6f, 0x70, 0xd0, 0x17, 0x0f, 0xc2, 0xca, 0x18, 0xc2, 0xed, 0xcb, - 0x90, 0x25, 0xa7, 0xe3, 0x7e, 0x3b, 0xc5, 0xf9, 0xfd, 0x29, 0x98, 0x20, 0x4d, 0xd6, 0x9f, 0x77, - 0x78, 0xaf, 0xee, 0x17, 0x6d, 0xd3, 0xc1, 0x96, 0xef, 0xb1, 0xe0, 0xbd, 0xba, 0x3c, 0x78, 0x5e, - 0xc9, 0xf6, 0xa9, 0x3c, 0xdd, 0x88, 0xf4, 0x13, 0x86, 0x9e, 0x94, 0x84, 0x25, 0x3e, 0xb2, 0xf3, + // 19709 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x7d, 0x98, 0x23, 0x47, + 0x79, 0x2f, 0xba, 0xea, 0x96, 0x34, 0x33, 0xef, 0x7c, 0xac, 0xb6, 0xbd, 0xbb, 0x5e, 0x97, 0xcd, + 0xda, 0x59, 0x1b, 0xe3, 0x18, 0x33, 0x36, 0x86, 0x10, 0x6c, 0x6c, 0x6c, 0x8d, 0xa6, 0x67, 0x46, + 0xf6, 0x8c, 0x34, 0x69, 0x69, 0x76, 0x71, 0xce, 0xc9, 0xd5, 0xe9, 0x95, 0x6a, 0x66, 0xda, 0xab, + 0xe9, 0x16, 0xad, 0x9e, 0x59, 0x2f, 0xf7, 0x39, 0xf7, 0x84, 0x10, 0xf3, 0x11, 0x42, 0x08, 0x21, + 0x24, 0xe1, 0x1b, 0x4c, 0x0c, 0x07, 0x12, 0x20, 0x7c, 0x1f, 0x48, 0x02, 0x84, 0x8f, 0x40, 0x08, + 0x21, 0x04, 0x42, 0x20, 0x24, 0xdc, 0x40, 0x20, 0x84, 0x9c, 0x27, 0x5c, 0x6e, 0x72, 0x4f, 0x20, + 0x24, 0x70, 0xb9, 0x4f, 0x57, 0x55, 0x7f, 0x94, 0x46, 0xdd, 0xaa, 0xd6, 0xa8, 0x35, 0x26, 0xdc, + 0xff, 0xba, 0xab, 0xab, 0xdf, 0x7a, 0xeb, 0xfd, 0xbd, 0x55, 0xf5, 0x56, 0xd5, 0x5b, 0x6f, 0xc1, + 0xa9, 0xce, 0xf9, 0x9b, 0x3b, 0xb6, 0xe5, 0x58, 0xdd, 0x9b, 0x9b, 0xd6, 0xce, 0x8e, 0x6e, 0xb6, + 0xba, 0xf3, 0xe4, 0x5d, 0x99, 0xd0, 0xcd, 0x4b, 0xce, 0xa5, 0x0e, 0x46, 0xd7, 0x75, 0x2e, 0x6c, + 0xdd, 0xdc, 0x36, 0xce, 0xdf, 0xdc, 0x39, 0x7f, 0xf3, 0x8e, 0xd5, 0xc2, 0x6d, 0xef, 0x07, 0xf2, + 0xc2, 0xb2, 0xa3, 0x1b, 0xa2, 0x72, 0xb5, 0xad, 0xa6, 0xde, 0xee, 0x3a, 0x96, 0x8d, 0x59, 0xce, + 0x93, 0x41, 0x91, 0x78, 0x0f, 0x9b, 0x8e, 0x47, 0xe1, 0xaa, 0x2d, 0xcb, 0xda, 0x6a, 0x63, 0xfa, + 0xed, 0xfc, 0xee, 0xe6, 0xcd, 0x5d, 0xc7, 0xde, 0x6d, 0x3a, 0xec, 0xeb, 0x35, 0xbd, 0x5f, 0x5b, + 0xb8, 0xdb, 0xb4, 0x8d, 0x8e, 0x63, 0xd9, 0x34, 0xc7, 0x99, 0x97, 0xbd, 0x78, 0x12, 0x64, 0xad, + 0xd3, 0x44, 0xdf, 0x9e, 0x00, 0xb9, 0xd8, 0xe9, 0xa0, 0x8f, 0x4a, 0x00, 0xcb, 0xd8, 0x39, 0x8b, + 0xed, 0xae, 0x61, 0x99, 0xe8, 0x28, 0x4c, 0x68, 0xf8, 0xe9, 0xbb, 0xb8, 0xeb, 0xdc, 0x9e, 0x7d, + 0xee, 0xd7, 0xe5, 0x0c, 0x7a, 0x58, 0x82, 0x49, 0x0d, 0x77, 0x3b, 0x96, 0xd9, 0xc5, 0xca, 0xdd, + 0x90, 0xc3, 0xb6, 0x6d, 0xd9, 0xa7, 0x32, 0xd7, 0x64, 0x6e, 0x98, 0xbe, 0xf5, 0xc6, 0x79, 0x56, + 0xfd, 0x79, 0xad, 0xd3, 0x9c, 0x2f, 0x76, 0x3a, 0xf3, 0x01, 0xa5, 0x79, 0xef, 0xa7, 0x79, 0xd5, + 0xfd, 0x43, 0xa3, 0x3f, 0x2a, 0xa7, 0x60, 0x62, 0x8f, 0x66, 0x38, 0x25, 0x5d, 0x93, 0xb9, 0x61, + 0x4a, 0xf3, 0x5e, 0xdd, 0x2f, 0x2d, 0xec, 0xe8, 0x46, 0xbb, 0x7b, 0x4a, 0xa6, 0x5f, 0xd8, 0x2b, + 0x7a, 0x28, 0x03, 0x39, 0x42, 0x44, 0x29, 0x41, 0xb6, 0x69, 0xb5, 0x30, 0x29, 0x7e, 0xee, 0xd6, + 0x9b, 0xc5, 0x8b, 0x9f, 0x2f, 0x59, 0x2d, 0xac, 0x91, 0x9f, 0x95, 0x6b, 0x60, 0xda, 0x13, 0x4b, + 0xc0, 0x46, 0x38, 0xe9, 0xcc, 0xad, 0x90, 0x75, 0xf3, 0x2b, 0x93, 0x90, 0xad, 0x6c, 0xac, 0xae, + 0x16, 0x8e, 0x28, 0xc7, 0x60, 0x76, 0xa3, 0x72, 0x6f, 0xa5, 0x7a, 0xae, 0xd2, 0x50, 0x35, 0xad, + 0xaa, 0x15, 0x32, 0xca, 0x2c, 0x4c, 0x2d, 0x14, 0x17, 0x1b, 0xe5, 0xca, 0xfa, 0x46, 0xbd, 0x20, + 0xa1, 0x57, 0xc9, 0x30, 0x57, 0xc3, 0xce, 0x22, 0xde, 0x33, 0x9a, 0xb8, 0xe6, 0xe8, 0x0e, 0x46, + 0x2f, 0xcc, 0xf8, 0xc2, 0x54, 0x36, 0xdc, 0x42, 0xfd, 0x4f, 0xac, 0x02, 0x4f, 0xd8, 0x57, 0x01, + 0x9e, 0xc2, 0x3c, 0xfb, 0x7b, 0x3e, 0x94, 0xa6, 0x85, 0xe9, 0x9c, 0x79, 0x1c, 0x4c, 0x87, 0xbe, + 0x29, 0x73, 0x00, 0x0b, 0xc5, 0xd2, 0xbd, 0xcb, 0x5a, 0x75, 0xa3, 0xb2, 0x58, 0x38, 0xe2, 0xbe, + 0x2f, 0x55, 0x35, 0x95, 0xbd, 0x67, 0xd0, 0x77, 0x33, 0x21, 0x30, 0x17, 0x79, 0x30, 0xe7, 0x07, + 0x33, 0xd3, 0x07, 0x50, 0xf4, 0x7a, 0x1f, 0x9c, 0x65, 0x0e, 0x9c, 0x27, 0x24, 0x23, 0x97, 0x3e, + 0x40, 0x0f, 0x4a, 0x30, 0x59, 0xdb, 0xde, 0x75, 0x5a, 0xd6, 0x45, 0x13, 0x4d, 0xf9, 0xc8, 0xa0, + 0x6f, 0x86, 0x65, 0xf2, 0x54, 0x5e, 0x26, 0x37, 0xec, 0xaf, 0x04, 0xa3, 0x10, 0x21, 0x8d, 0xd7, + 0xf8, 0xd2, 0x28, 0x72, 0xd2, 0x78, 0x9c, 0x28, 0xa1, 0xf4, 0xe5, 0xf0, 0xb2, 0x27, 0x43, 0xae, + 0xd6, 0xd1, 0x9b, 0x18, 0x7d, 0x52, 0x86, 0x99, 0x55, 0xac, 0xef, 0xe1, 0x62, 0xa7, 0x63, 0x5b, + 0x7b, 0x18, 0x95, 0x02, 0x7d, 0x3d, 0x05, 0x13, 0x5d, 0x37, 0x53, 0xb9, 0x45, 0x6a, 0x30, 0xa5, + 0x79, 0xaf, 0xca, 0x69, 0x00, 0xa3, 0x85, 0x4d, 0xc7, 0x70, 0x0c, 0xdc, 0x3d, 0x25, 0x5d, 0x23, + 0xdf, 0x30, 0xa5, 0x85, 0x52, 0xd0, 0xb7, 0x25, 0x51, 0x1d, 0x23, 0x5c, 0xcc, 0x87, 0x39, 0x88, + 0x90, 0xea, 0xeb, 0x24, 0x11, 0x1d, 0x1b, 0x48, 0x2e, 0x99, 0x6c, 0xdf, 0x92, 0x49, 0x2e, 0x5c, + 0x37, 0x47, 0xa5, 0xda, 0xa8, 0x6d, 0x94, 0x56, 0x1a, 0xb5, 0xf5, 0x62, 0x49, 0x2d, 0x60, 0xe5, + 0x38, 0x14, 0xc8, 0x63, 0xa3, 0x5c, 0x6b, 0x2c, 0xaa, 0xab, 0x6a, 0x5d, 0x5d, 0x2c, 0x6c, 0x2a, + 0x0a, 0xcc, 0x69, 0xea, 0x4f, 0x6d, 0xa8, 0xb5, 0x7a, 0x63, 0xa9, 0x58, 0x5e, 0x55, 0x17, 0x0b, + 0x5b, 0xee, 0xcf, 0xab, 0xe5, 0xb5, 0x72, 0xbd, 0xa1, 0xa9, 0xc5, 0xd2, 0x8a, 0xba, 0x58, 0xd8, + 0x56, 0x2e, 0x87, 0xcb, 0x2a, 0xd5, 0x46, 0x71, 0x7d, 0x5d, 0xab, 0x9e, 0x55, 0x1b, 0xec, 0x8f, + 0x5a, 0xc1, 0xa0, 0x05, 0xd5, 0x1b, 0xb5, 0x95, 0xa2, 0xa6, 0x16, 0x17, 0x56, 0xd5, 0xc2, 0xfd, + 0xe8, 0x59, 0x32, 0xcc, 0xae, 0xe9, 0x17, 0x70, 0x6d, 0x5b, 0xb7, 0xb1, 0x7e, 0xbe, 0x8d, 0xd1, + 0xb5, 0x02, 0x78, 0xa2, 0x4f, 0x86, 0xf1, 0x52, 0x79, 0xbc, 0x6e, 0xee, 0x23, 0x60, 0xae, 0x88, + 0x08, 0xc0, 0xfe, 0xd5, 0x6f, 0x06, 0x2b, 0x1c, 0x60, 0x4f, 0x4c, 0x48, 0x2f, 0x19, 0x62, 0x3f, + 0xf7, 0x08, 0x40, 0x0c, 0x7d, 0x49, 0x86, 0xb9, 0xb2, 0xb9, 0x67, 0x38, 0x78, 0x19, 0x9b, 0xd8, + 0x76, 0xc7, 0x01, 0x21, 0x18, 0x1e, 0x96, 0x43, 0x30, 0x2c, 0xf1, 0x30, 0xdc, 0xd2, 0x47, 0x6c, + 0x7c, 0x19, 0x11, 0xa3, 0xed, 0x55, 0x30, 0x65, 0x90, 0x7c, 0x25, 0xa3, 0xc5, 0x24, 0x16, 0x24, + 0x28, 0xd7, 0xc1, 0x2c, 0x7d, 0x59, 0x32, 0xda, 0xf8, 0x5e, 0x7c, 0x89, 0x8d, 0xbb, 0x7c, 0x22, + 0xfa, 0x45, 0xbf, 0xf1, 0x95, 0x39, 0x2c, 0x7f, 0x22, 0x29, 0x53, 0xc9, 0xc0, 0x7c, 0xc9, 0x23, + 0xa1, 0xf9, 0xed, 0x6b, 0x65, 0x06, 0xfa, 0xbe, 0x04, 0xd3, 0x35, 0xc7, 0xea, 0xb8, 0x2a, 0x6b, + 0x98, 0x5b, 0x62, 0xe0, 0x7e, 0x3c, 0xdc, 0xc6, 0x4a, 0x3c, 0xb8, 0x8f, 0xeb, 0x23, 0xc7, 0x50, + 0x01, 0x11, 0x2d, 0xec, 0xdb, 0x7e, 0x0b, 0x5b, 0xe2, 0x50, 0xb9, 0x35, 0x11, 0xb5, 0x1f, 0xc2, + 0xf6, 0xf5, 0x12, 0x19, 0x0a, 0x9e, 0x9a, 0x39, 0xa5, 0x5d, 0xdb, 0xc6, 0xa6, 0x23, 0x06, 0xc2, + 0x5f, 0x85, 0x41, 0x58, 0xe1, 0x41, 0xb8, 0x35, 0x46, 0x99, 0xbd, 0x52, 0x52, 0x6c, 0x63, 0x1f, + 0xf4, 0xd1, 0xbc, 0x97, 0x43, 0xf3, 0x27, 0x93, 0xb3, 0x95, 0x0c, 0xd2, 0x95, 0x21, 0x10, 0x3d, + 0x0e, 0x05, 0x77, 0x4c, 0x2a, 0xd5, 0xcb, 0x67, 0xd5, 0x46, 0xb9, 0x72, 0xb6, 0x5c, 0x57, 0x0b, + 0x18, 0xbd, 0x58, 0x86, 0x19, 0xca, 0x9a, 0x86, 0xf7, 0xac, 0x0b, 0x82, 0xbd, 0xde, 0x97, 0x12, + 0x1a, 0x0b, 0xe1, 0x12, 0x22, 0x5a, 0xc6, 0x2f, 0x24, 0x30, 0x16, 0x62, 0xc8, 0x3d, 0x92, 0x7a, + 0xab, 0x7d, 0xcd, 0x60, 0xab, 0x4f, 0x6b, 0xe9, 0xdb, 0x5b, 0xbd, 0x24, 0x0b, 0x40, 0x2b, 0x79, + 0xd6, 0xc0, 0x17, 0xd1, 0x5a, 0x80, 0x09, 0xa7, 0xb6, 0x99, 0x81, 0x6a, 0x2b, 0xf5, 0x53, 0xdb, + 0xf7, 0x84, 0xc7, 0xac, 0x05, 0x1e, 0xbd, 0x9b, 0x22, 0xc5, 0xed, 0x72, 0x12, 0x3d, 0x3b, 0xf4, + 0x14, 0x45, 0xe2, 0xad, 0xce, 0xab, 0x60, 0x8a, 0x3c, 0x56, 0xf4, 0x1d, 0xcc, 0xda, 0x50, 0x90, + 0xa0, 0x9c, 0x81, 0x19, 0x9a, 0xb1, 0x69, 0x99, 0x6e, 0x7d, 0xb2, 0x24, 0x03, 0x97, 0xe6, 0x82, + 0xd8, 0xb4, 0xb1, 0xee, 0x58, 0x36, 0xa1, 0x91, 0xa3, 0x20, 0x86, 0x92, 0xd0, 0x37, 0xfc, 0x56, + 0xa8, 0x72, 0x9a, 0xf3, 0xf8, 0x24, 0x55, 0x49, 0xa6, 0x37, 0x7b, 0xc3, 0xb5, 0x3f, 0xda, 0xea, + 0x1a, 0x2e, 0xda, 0x4b, 0x64, 0x6a, 0x87, 0x95, 0x93, 0xa0, 0xb0, 0x54, 0x37, 0x6f, 0xa9, 0x5a, + 0xa9, 0xab, 0x95, 0x7a, 0x61, 0xb3, 0xaf, 0x46, 0x6d, 0xa1, 0xd7, 0x65, 0x21, 0x7b, 0x8f, 0x65, + 0x98, 0xe8, 0xc1, 0x0c, 0xa7, 0x12, 0x26, 0x76, 0x2e, 0x5a, 0xf6, 0x05, 0xbf, 0xa1, 0x06, 0x09, + 0xf1, 0xd8, 0x04, 0xaa, 0x24, 0x0f, 0x54, 0xa5, 0x6c, 0x3f, 0x55, 0xfa, 0x95, 0xb0, 0x2a, 0xdd, + 0xc1, 0xab, 0xd2, 0xf5, 0x7d, 0xe4, 0xef, 0x32, 0x1f, 0xd1, 0x01, 0x7c, 0xcc, 0xef, 0x00, 0xee, + 0xe2, 0x60, 0x7c, 0xac, 0x18, 0x99, 0x64, 0x00, 0x7e, 0x31, 0xd5, 0x86, 0xdf, 0x0f, 0xea, 0xad, + 0x08, 0xa8, 0xb7, 0xfb, 0xf4, 0x09, 0xc6, 0xfe, 0xae, 0xe3, 0xfe, 0xfd, 0xdd, 0xc4, 0x05, 0xe5, + 0x04, 0x1c, 0x5b, 0x2c, 0x2f, 0x2d, 0xa9, 0x9a, 0x5a, 0xa9, 0x37, 0x2a, 0x6a, 0xfd, 0x5c, 0x55, + 0xbb, 0xb7, 0xd0, 0x46, 0x0f, 0xc9, 0x00, 0xae, 0x84, 0x4a, 0xba, 0xd9, 0xc4, 0x6d, 0xb1, 0x1e, + 0xfd, 0xff, 0x92, 0x92, 0xf5, 0x09, 0x01, 0xfd, 0x08, 0x38, 0x5f, 0x29, 0x89, 0xb7, 0xca, 0x48, + 0x62, 0xc9, 0x40, 0x7d, 0xd3, 0x23, 0xc1, 0xf6, 0xbc, 0x0c, 0x8e, 0x7a, 0xf4, 0x58, 0xf6, 0xfe, + 0xd3, 0xbe, 0xb7, 0x66, 0x61, 0x8e, 0xc1, 0xe2, 0xcd, 0xe3, 0x9f, 0x9b, 0x11, 0x99, 0xc8, 0x23, + 0x98, 0x64, 0xd3, 0x76, 0xaf, 0x7b, 0xf7, 0xdf, 0x95, 0x65, 0x98, 0xee, 0x60, 0x7b, 0xc7, 0xe8, + 0x76, 0x0d, 0xcb, 0xa4, 0x0b, 0x72, 0x73, 0xb7, 0x3e, 0xda, 0x97, 0x38, 0x59, 0xbb, 0x9c, 0x5f, + 0xd7, 0x6d, 0xc7, 0x68, 0x1a, 0x1d, 0xdd, 0x74, 0xd6, 0x83, 0xcc, 0x5a, 0xf8, 0x4f, 0xf4, 0xa2, + 0x84, 0xd3, 0x1a, 0xbe, 0x26, 0x11, 0x2a, 0xf1, 0x7b, 0x09, 0xa6, 0x24, 0xb1, 0x04, 0x93, 0xa9, + 0xc5, 0x47, 0x53, 0x55, 0x8b, 0x3e, 0x78, 0x6f, 0x29, 0x57, 0xc0, 0x89, 0x72, 0xa5, 0x54, 0xd5, + 0x34, 0xb5, 0x54, 0x6f, 0xac, 0xab, 0xda, 0x5a, 0xb9, 0x56, 0x2b, 0x57, 0x2b, 0xb5, 0x83, 0xb4, + 0x76, 0xf4, 0x09, 0xd9, 0xd7, 0x98, 0x45, 0xdc, 0x6c, 0x1b, 0x26, 0x46, 0x77, 0x1d, 0x50, 0x61, + 0xf8, 0x55, 0x1f, 0x71, 0x9c, 0x59, 0xf9, 0x11, 0x38, 0xbf, 0x36, 0x39, 0xce, 0xfd, 0x09, 0xfe, + 0x07, 0x6e, 0xfe, 0x5f, 0x92, 0xe1, 0x58, 0xa8, 0x21, 0x6a, 0x78, 0x67, 0x64, 0x2b, 0x79, 0x3f, + 0x17, 0x6e, 0xbb, 0x65, 0x1e, 0xd3, 0x7e, 0xd6, 0xf4, 0x3e, 0x36, 0x22, 0x60, 0x7d, 0x93, 0x0f, + 0xeb, 0x2a, 0x07, 0xeb, 0x93, 0x87, 0xa0, 0x99, 0x0c, 0xd9, 0xdf, 0x49, 0x15, 0xd9, 0x2b, 0xe0, + 0xc4, 0x7a, 0x51, 0xab, 0x97, 0x4b, 0xe5, 0xf5, 0xa2, 0x3b, 0x8e, 0x86, 0x86, 0xec, 0x08, 0x73, + 0x9d, 0x07, 0xbd, 0x2f, 0xbe, 0x1f, 0xc8, 0xc2, 0x55, 0xfd, 0x3b, 0xda, 0xd2, 0xb6, 0x6e, 0x6e, + 0x61, 0x64, 0x88, 0x40, 0xbd, 0x08, 0x13, 0x4d, 0x92, 0x9d, 0xe2, 0x1c, 0xde, 0xba, 0x89, 0xe9, + 0xcb, 0x69, 0x09, 0x9a, 0xf7, 0x2b, 0x7a, 0x47, 0x58, 0x21, 0xea, 0xbc, 0x42, 0x3c, 0x35, 0x1e, + 0xbc, 0x7d, 0x7c, 0x47, 0xe8, 0xc6, 0xa7, 0x7d, 0xdd, 0x38, 0xc7, 0xe9, 0x46, 0xe9, 0x60, 0xe4, + 0x93, 0xa9, 0xc9, 0x1f, 0x3f, 0x12, 0x3a, 0x80, 0x48, 0x6d, 0x32, 0xa2, 0x47, 0x85, 0xbe, 0xdd, + 0xfd, 0xab, 0x65, 0xc8, 0x2f, 0xe2, 0x36, 0x16, 0x5d, 0x89, 0xfc, 0x96, 0x24, 0xba, 0x21, 0x42, + 0x61, 0xa0, 0xb4, 0xa3, 0x57, 0x47, 0x1c, 0x63, 0x07, 0x77, 0x1d, 0x7d, 0xa7, 0x43, 0x44, 0x2d, + 0x6b, 0x41, 0x02, 0xfa, 0x79, 0x49, 0x64, 0xbb, 0x24, 0xa6, 0x98, 0xff, 0x18, 0x6b, 0x8a, 0x9f, + 0x95, 0x60, 0xb2, 0x86, 0x9d, 0xaa, 0xdd, 0xc2, 0x36, 0xaa, 0x05, 0x18, 0x5d, 0x03, 0xd3, 0x04, + 0x14, 0x77, 0x9a, 0xe9, 0xe3, 0x14, 0x4e, 0x52, 0xae, 0x87, 0x39, 0xff, 0x95, 0xfc, 0xce, 0xba, + 0xf1, 0x9e, 0x54, 0xf4, 0x4f, 0x19, 0xd1, 0x5d, 0x5c, 0xb6, 0x64, 0xc8, 0xb8, 0x89, 0x68, 0xa5, + 0x62, 0x3b, 0xb2, 0xb1, 0xa4, 0xd2, 0xdf, 0xe8, 0x7a, 0x9b, 0x04, 0xb0, 0x61, 0x76, 0x3d, 0xb9, + 0x3e, 0x36, 0x81, 0x5c, 0xd1, 0xbf, 0x64, 0x92, 0xcd, 0x62, 0x82, 0x72, 0x22, 0x24, 0xf6, 0x9b, + 0x09, 0xd6, 0x16, 0x22, 0x89, 0xa5, 0x2f, 0xb3, 0xaf, 0xce, 0x41, 0xfe, 0x9c, 0xde, 0x6e, 0x63, + 0x07, 0x7d, 0x4d, 0x82, 0x7c, 0xc9, 0xc6, 0xba, 0x83, 0xc3, 0xa2, 0x43, 0x30, 0x69, 0x5b, 0x96, + 0xb3, 0xae, 0x3b, 0xdb, 0x4c, 0x6e, 0xfe, 0x3b, 0x73, 0x18, 0xf8, 0xed, 0x70, 0xf7, 0x71, 0x17, + 0x2f, 0xba, 0x1f, 0xe7, 0x6a, 0x4b, 0x0b, 0x9a, 0xa7, 0x85, 0x44, 0xf4, 0x1f, 0x08, 0x26, 0x77, + 0x4c, 0xbc, 0x63, 0x99, 0x46, 0xd3, 0xb3, 0x39, 0xbd, 0x77, 0xf4, 0x21, 0x5f, 0xa6, 0x0b, 0x9c, + 0x4c, 0xe7, 0x85, 0x4b, 0x49, 0x26, 0xd0, 0xda, 0x10, 0xbd, 0xc7, 0xd5, 0x70, 0x25, 0xed, 0x0c, + 0x1a, 0xf5, 0x6a, 0xa3, 0xa4, 0xa9, 0xc5, 0xba, 0xda, 0x58, 0xad, 0x96, 0x8a, 0xab, 0x0d, 0x4d, + 0x5d, 0xaf, 0x16, 0x30, 0xfa, 0x7b, 0xc9, 0x15, 0x6e, 0xd3, 0xda, 0xc3, 0x36, 0x5a, 0x16, 0x92, + 0x73, 0x9c, 0x4c, 0x18, 0x06, 0xbf, 0x22, 0xec, 0xb4, 0xc1, 0xa4, 0xc3, 0x38, 0x88, 0x50, 0xde, + 0x0f, 0x0b, 0x35, 0xf7, 0x58, 0x52, 0x8f, 0x00, 0x49, 0xff, 0x2f, 0x09, 0x26, 0x4a, 0x96, 0xb9, + 0x87, 0x6d, 0x27, 0x3c, 0xdf, 0x09, 0x4b, 0x33, 0xc3, 0x4b, 0xd3, 0x1d, 0x24, 0xb1, 0xe9, 0xd8, + 0x56, 0xc7, 0x9b, 0xf0, 0x78, 0xaf, 0xe8, 0x0d, 0x49, 0x25, 0xcc, 0x4a, 0x8e, 0x5e, 0xf8, 0xec, + 0x5f, 0x10, 0xc7, 0x9e, 0xdc, 0xd3, 0x00, 0x1e, 0x4a, 0x82, 0x4b, 0x7f, 0x06, 0xd2, 0xef, 0x52, + 0xbe, 0x2c, 0xc3, 0x2c, 0x6d, 0x7c, 0x35, 0x4c, 0x2c, 0x34, 0x54, 0x0d, 0x2f, 0x39, 0xf6, 0x08, + 0x7f, 0xe5, 0x08, 0x27, 0xfe, 0xbc, 0xde, 0xe9, 0xf8, 0xcb, 0xcf, 0x2b, 0x47, 0x34, 0xf6, 0x4e, + 0xd5, 0x7c, 0x21, 0x0f, 0x59, 0x7d, 0xd7, 0xd9, 0x46, 0xdf, 0x17, 0x9e, 0x7c, 0x72, 0x9d, 0x01, + 0xe3, 0x27, 0x02, 0x92, 0xe3, 0x90, 0x73, 0xac, 0x0b, 0xd8, 0x93, 0x03, 0x7d, 0x71, 0xe1, 0xd0, + 0x3b, 0x9d, 0x3a, 0xf9, 0xc0, 0xe0, 0xf0, 0xde, 0x5d, 0x5b, 0x47, 0x6f, 0x36, 0xad, 0x5d, 0xd3, + 0x29, 0x7b, 0x4b, 0xd0, 0x41, 0x02, 0xfa, 0x42, 0x46, 0x64, 0x32, 0x2b, 0xc0, 0x60, 0x32, 0xc8, + 0xce, 0x0f, 0xd1, 0x94, 0xe6, 0xe1, 0xc6, 0xe2, 0xfa, 0x7a, 0xa3, 0x5e, 0xbd, 0x57, 0xad, 0x04, + 0x86, 0x67, 0xa3, 0x5c, 0x69, 0xd4, 0x57, 0xd4, 0x46, 0x69, 0x43, 0x23, 0xeb, 0x84, 0xc5, 0x52, + 0xa9, 0xba, 0x51, 0xa9, 0x17, 0x30, 0x7a, 0xb3, 0x04, 0x33, 0xa5, 0xb6, 0xd5, 0xf5, 0x11, 0xbe, + 0x3a, 0x40, 0xd8, 0x17, 0x63, 0x26, 0x24, 0x46, 0xf4, 0xef, 0x19, 0x51, 0xa7, 0x03, 0x4f, 0x20, + 0x21, 0xf2, 0x11, 0xbd, 0xd4, 0x1b, 0x84, 0x9c, 0x0e, 0x06, 0xd3, 0x4b, 0xbf, 0x49, 0xbc, 0xe1, + 0x6e, 0x98, 0x28, 0x52, 0xc5, 0x40, 0x7f, 0x93, 0x81, 0x7c, 0xc9, 0x32, 0x37, 0x8d, 0x2d, 0xd7, + 0x98, 0xc3, 0xa6, 0x7e, 0xbe, 0x8d, 0x17, 0x75, 0x47, 0xdf, 0x33, 0xf0, 0x45, 0x52, 0x81, 0x49, + 0xad, 0x27, 0xd5, 0x65, 0x8a, 0xa5, 0xe0, 0xf3, 0xbb, 0x5b, 0x84, 0xa9, 0x49, 0x2d, 0x9c, 0xa4, + 0x3c, 0x19, 0x2e, 0xa7, 0xaf, 0xeb, 0x36, 0xb6, 0x71, 0x1b, 0xeb, 0x5d, 0xec, 0x4e, 0x8b, 0x4c, + 0xdc, 0x26, 0x4a, 0x3b, 0xa9, 0x45, 0x7d, 0x56, 0xce, 0xc0, 0x0c, 0xfd, 0x44, 0x4c, 0x91, 0x2e, + 0x51, 0xe3, 0x49, 0x8d, 0x4b, 0x53, 0x1e, 0x07, 0x39, 0xfc, 0x80, 0x63, 0xeb, 0xa7, 0x5a, 0x04, + 0xaf, 0xcb, 0xe7, 0xa9, 0xd7, 0xe1, 0xbc, 0xe7, 0x75, 0x38, 0x5f, 0x23, 0x3e, 0x89, 0x1a, 0xcd, + 0x85, 0x5e, 0x31, 0xe9, 0x1b, 0x12, 0x3f, 0x90, 0x02, 0xc5, 0x50, 0x20, 0x6b, 0xea, 0x3b, 0x98, + 0xe9, 0x05, 0x79, 0x56, 0x6e, 0x84, 0xa3, 0xfa, 0x9e, 0xee, 0xe8, 0xf6, 0xaa, 0xd5, 0xd4, 0xdb, + 0x64, 0xf0, 0xf3, 0x5a, 0x7e, 0xef, 0x07, 0xb2, 0x23, 0xe4, 0x58, 0x36, 0x26, 0xb9, 0xbc, 0x1d, + 0x21, 0x2f, 0xc1, 0xa5, 0x6e, 0x34, 0x2d, 0x93, 0xf0, 0x2f, 0x6b, 0xe4, 0xd9, 0x95, 0x4a, 0xcb, + 0xe8, 0xba, 0x15, 0x21, 0x54, 0x2a, 0x74, 0x6b, 0xa3, 0x76, 0xc9, 0x6c, 0x92, 0xdd, 0xa0, 0x49, + 0x2d, 0xea, 0xb3, 0xb2, 0x00, 0xd3, 0x6c, 0x23, 0x64, 0xcd, 0xd5, 0xab, 0x3c, 0xd1, 0xab, 0x6b, + 0x78, 0x9f, 0x2e, 0x8a, 0xe7, 0x7c, 0x25, 0xc8, 0xa7, 0x85, 0x7f, 0x52, 0xee, 0x86, 0x2b, 0xd9, + 0x6b, 0x69, 0xb7, 0xeb, 0x58, 0x3b, 0x14, 0xf4, 0x25, 0xa3, 0x4d, 0x6b, 0x30, 0x41, 0x6a, 0x10, + 0x97, 0x45, 0xb9, 0x15, 0x8e, 0x77, 0x6c, 0xbc, 0x89, 0xed, 0xfb, 0xf4, 0x9d, 0xdd, 0x07, 0xea, + 0xb6, 0x6e, 0x76, 0x3b, 0x96, 0xed, 0x9c, 0x9a, 0x24, 0xcc, 0xf7, 0xfd, 0xc6, 0x3a, 0xca, 0x49, + 0xc8, 0x53, 0xf1, 0xa1, 0x17, 0xe6, 0x84, 0xdd, 0x39, 0x59, 0x85, 0x62, 0xcd, 0xb3, 0x5b, 0x60, + 0x82, 0xf5, 0x70, 0x04, 0xa8, 0xe9, 0x5b, 0x4f, 0xf6, 0xac, 0x2b, 0x30, 0x2a, 0x9a, 0x97, 0x4d, + 0x79, 0x02, 0xe4, 0x9b, 0xa4, 0x5a, 0x04, 0xb3, 0xe9, 0x5b, 0xaf, 0xec, 0x5f, 0x28, 0xc9, 0xa2, + 0xb1, 0xac, 0xe8, 0x2f, 0x65, 0x21, 0x0f, 0xd0, 0x38, 0x8e, 0x93, 0xb5, 0xea, 0x6f, 0x48, 0x43, + 0x74, 0x9b, 0x37, 0xc1, 0x0d, 0xac, 0x4f, 0x64, 0xf6, 0xc7, 0x62, 0x63, 0x61, 0xc3, 0x9b, 0x0c, + 0xba, 0x56, 0x49, 0xad, 0x5e, 0xd4, 0xdc, 0x99, 0xfc, 0xa2, 0x3b, 0x89, 0xbc, 0x11, 0xae, 0x1f, + 0x90, 0x5b, 0xad, 0x37, 0x2a, 0xc5, 0x35, 0xb5, 0xb0, 0xc9, 0xdb, 0x36, 0xb5, 0x7a, 0x75, 0xbd, + 0xa1, 0x6d, 0x54, 0x2a, 0xe5, 0xca, 0x32, 0x25, 0xe6, 0x9a, 0x84, 0x27, 0x83, 0x0c, 0xe7, 0xb4, + 0x72, 0x5d, 0x6d, 0x94, 0xaa, 0x95, 0xa5, 0xf2, 0x72, 0xc1, 0x18, 0x64, 0x18, 0xdd, 0xaf, 0x5c, + 0x03, 0x57, 0x71, 0x9c, 0x94, 0xab, 0x15, 0x77, 0x66, 0x5b, 0x2a, 0x56, 0x4a, 0xaa, 0x3b, 0x8d, + 0xbd, 0xa0, 0x20, 0x38, 0x41, 0xc9, 0x35, 0x96, 0xca, 0xab, 0xe1, 0xcd, 0xa8, 0x8f, 0x67, 0x94, + 0x53, 0x70, 0x59, 0xf8, 0x5b, 0xb9, 0x72, 0xb6, 0xb8, 0x5a, 0x5e, 0x2c, 0xfc, 0x51, 0x46, 0xb9, + 0x0e, 0xae, 0xe6, 0xfe, 0xa2, 0xfb, 0x4a, 0x8d, 0xf2, 0x62, 0x63, 0xad, 0x5c, 0x5b, 0x2b, 0xd6, + 0x4b, 0x2b, 0x85, 0x4f, 0x90, 0xf9, 0x82, 0x6f, 0x00, 0x87, 0xdc, 0x32, 0x5f, 0x12, 0x1e, 0xd3, + 0x8b, 0xbc, 0xa2, 0x3e, 0xb6, 0x2f, 0xec, 0xf1, 0x36, 0xec, 0x47, 0xfd, 0xd1, 0x61, 0x91, 0x53, + 0xa1, 0x5b, 0x12, 0xd0, 0x4a, 0xa6, 0x43, 0xf5, 0x21, 0x54, 0xe8, 0x1a, 0xb8, 0xaa, 0xa2, 0x52, + 0xa4, 0x34, 0xb5, 0x54, 0x3d, 0xab, 0x6a, 0x8d, 0x73, 0xc5, 0xd5, 0x55, 0xb5, 0xde, 0x58, 0x2a, + 0x6b, 0xb5, 0x7a, 0x61, 0x13, 0xfd, 0x8b, 0xe4, 0xaf, 0xe6, 0x84, 0xa4, 0xf5, 0x37, 0x52, 0xd2, + 0x66, 0x1d, 0xbb, 0x6a, 0xf3, 0x13, 0x90, 0xef, 0x3a, 0xba, 0xb3, 0xdb, 0x65, 0xad, 0xfa, 0x51, + 0xfd, 0x5b, 0xf5, 0x7c, 0x8d, 0x64, 0xd2, 0x58, 0x66, 0xf4, 0x97, 0x99, 0x24, 0xcd, 0x74, 0x04, + 0x0b, 0x3a, 0xc6, 0x10, 0x22, 0x3e, 0x0d, 0xc8, 0xd3, 0xf6, 0x72, 0xad, 0x51, 0x5c, 0xd5, 0xd4, + 0xe2, 0xe2, 0x7d, 0xfe, 0x32, 0x0e, 0x56, 0x4e, 0xc0, 0xb1, 0x8d, 0x4a, 0x71, 0x61, 0x55, 0x25, + 0xcd, 0xa5, 0x5a, 0xa9, 0xa8, 0x25, 0x57, 0xee, 0x3f, 0x4f, 0x36, 0x4d, 0x5c, 0x0b, 0x9a, 0xf0, + 0xed, 0x5a, 0x39, 0x21, 0xf9, 0x7f, 0x5d, 0xd8, 0xb7, 0x28, 0xd0, 0xb0, 0x30, 0xad, 0xd1, 0xe2, + 0xf0, 0x05, 0x21, 0x77, 0x22, 0x21, 0x4e, 0x92, 0xe1, 0xf1, 0x5f, 0x86, 0xc0, 0xe3, 0x04, 0x1c, + 0x0b, 0xe3, 0x41, 0xdc, 0x8a, 0xa2, 0x61, 0xf8, 0x9e, 0x04, 0x13, 0x6b, 0xc6, 0x16, 0xf1, 0xab, + 0x7c, 0x4a, 0x60, 0x4c, 0xcc, 0x81, 0xe4, 0xbb, 0xb1, 0x48, 0x46, 0x8b, 0x9b, 0x3e, 0x4b, 0x7d, + 0x97, 0x29, 0xde, 0x91, 0xb8, 0x7f, 0x61, 0xc5, 0x46, 0xf4, 0x2f, 0x5f, 0x4d, 0xd4, 0xbf, 0xf4, + 0xa7, 0x95, 0x4c, 0xd8, 0xf6, 0xc1, 0x84, 0x1d, 0x76, 0x1e, 0x99, 0x81, 0x49, 0xbf, 0xb7, 0x27, + 0xfb, 0x18, 0xee, 0x47, 0xb5, 0x52, 0xdd, 0x58, 0x5e, 0x69, 0x2c, 0x69, 0xaa, 0xca, 0x56, 0x3e, + 0xb7, 0xd0, 0xdb, 0x25, 0x98, 0x65, 0xbc, 0x33, 0xa7, 0x80, 0xab, 0x23, 0x41, 0x60, 0x82, 0xfe, + 0x41, 0xd8, 0xd4, 0x5f, 0xe6, 0x05, 0xfd, 0xf8, 0x38, 0xe1, 0xc4, 0x7a, 0x05, 0xbc, 0xd1, 0x17, + 0xf7, 0x3d, 0x9c, 0xb8, 0x9f, 0x94, 0x98, 0x62, 0xfa, 0xe6, 0xfe, 0x33, 0xa7, 0x20, 0x5f, 0xc3, + 0x6d, 0xdc, 0x74, 0xd0, 0x5b, 0xa5, 0xa1, 0x74, 0x36, 0xce, 0x74, 0x95, 0x13, 0x99, 0xae, 0xd9, + 0x14, 0x4c, 0xd7, 0xdc, 0xf0, 0xa6, 0x6b, 0x7e, 0x90, 0xe9, 0x8a, 0x3e, 0x92, 0x4f, 0x3a, 0xb2, + 0x51, 0x51, 0x1f, 0xae, 0xc1, 0xfa, 0x4b, 0xb9, 0x24, 0x23, 0x61, 0x5f, 0x8e, 0x93, 0xe9, 0xe5, + 0x2b, 0xb3, 0x29, 0x2c, 0x99, 0x29, 0xd7, 0xc2, 0xd5, 0xc1, 0x7b, 0x43, 0x7d, 0x5a, 0xb9, 0x56, + 0xaf, 0x11, 0x2b, 0xb5, 0x54, 0xd5, 0xb4, 0x8d, 0x75, 0xba, 0xef, 0x71, 0x12, 0x94, 0x80, 0x8a, + 0xb6, 0x51, 0xa1, 0x36, 0xe9, 0x16, 0x4f, 0x7d, 0xa9, 0x5c, 0x59, 0x6c, 0xf8, 0xfd, 0x7c, 0x65, + 0xa9, 0x5a, 0xd8, 0x56, 0xe6, 0xe1, 0xc6, 0x10, 0x75, 0xd2, 0xe5, 0xd0, 0x12, 0x8a, 0x95, 0xc5, + 0xc6, 0x5a, 0x45, 0x5d, 0xab, 0x56, 0xca, 0x25, 0x92, 0x5e, 0x53, 0xeb, 0x05, 0xc3, 0x35, 0x8e, + 0x7a, 0xac, 0xe0, 0x9a, 0x5a, 0xd4, 0x4a, 0x2b, 0xaa, 0x46, 0x8b, 0xbc, 0x5f, 0xb9, 0x1e, 0xce, + 0x14, 0x2b, 0xd5, 0xba, 0x9b, 0x52, 0xac, 0xdc, 0x57, 0xbf, 0x6f, 0x5d, 0x6d, 0xac, 0x6b, 0xd5, + 0x92, 0x5a, 0xab, 0xb9, 0x63, 0x0b, 0xb3, 0x99, 0x0b, 0x6d, 0xe5, 0xa9, 0x70, 0x7b, 0x88, 0x35, + 0xb5, 0x4e, 0x36, 0xd9, 0xd7, 0xaa, 0xc4, 0xcf, 0x6a, 0x51, 0x6d, 0xac, 0x14, 0x6b, 0x8d, 0x72, + 0xa5, 0x54, 0x5d, 0x5b, 0x2f, 0xd6, 0xcb, 0xee, 0x10, 0xb4, 0xae, 0x55, 0xeb, 0xd5, 0xc6, 0x59, + 0x55, 0xab, 0x95, 0xab, 0x95, 0x82, 0xe9, 0x56, 0x39, 0x34, 0x66, 0x79, 0xb6, 0x83, 0xa5, 0x5c, + 0x05, 0xa7, 0xbc, 0xf4, 0xd5, 0xaa, 0x2b, 0xe8, 0x90, 0x15, 0xdd, 0x09, 0x5b, 0x1e, 0xb5, 0x7a, + 0x55, 0xa3, 0x76, 0xf4, 0x5a, 0x79, 0x59, 0x73, 0x8d, 0xff, 0xc2, 0xd3, 0x53, 0xb5, 0xb2, 0xff, + 0x4d, 0x82, 0x6c, 0xcd, 0xb1, 0x3a, 0xe8, 0xc7, 0x83, 0x0e, 0xe8, 0x34, 0x80, 0x4d, 0xf6, 0xd4, + 0x17, 0x75, 0x47, 0x67, 0x6b, 0x0d, 0xa1, 0x14, 0xf4, 0x87, 0xc2, 0x1b, 0x81, 0x81, 0x1d, 0x62, + 0x75, 0x22, 0x3a, 0xec, 0xef, 0x8a, 0x9d, 0x8c, 0x8a, 0x26, 0x94, 0xac, 0x3d, 0xfc, 0xc2, 0x30, + 0x5b, 0x7d, 0x08, 0x4e, 0x86, 0x60, 0x75, 0xe5, 0xef, 0xa9, 0x0c, 0x56, 0x2e, 0x87, 0xcb, 0x7a, + 0x94, 0x8f, 0xe8, 0xdc, 0xa6, 0xf2, 0x63, 0xf0, 0xa8, 0x90, 0xfa, 0xab, 0x6b, 0xd5, 0xb3, 0xaa, + 0xaf, 0xe8, 0x8b, 0xc5, 0x7a, 0xb1, 0xb0, 0x85, 0x3e, 0x2b, 0x43, 0x76, 0xcd, 0xda, 0xeb, 0xdd, + 0x7f, 0x35, 0xf1, 0xc5, 0xd0, 0xfa, 0xbe, 0xf7, 0xca, 0x9f, 0x04, 0x11, 0x12, 0xfb, 0x5a, 0xb4, + 0xaf, 0xc5, 0x17, 0xa4, 0x24, 0x62, 0x5f, 0x3b, 0xa8, 0x83, 0xc5, 0x3f, 0x0c, 0x23, 0xf6, 0x08, + 0xd1, 0x62, 0xe5, 0x0c, 0x9c, 0x0e, 0x3e, 0x94, 0x17, 0xd5, 0x4a, 0xbd, 0xbc, 0x74, 0x5f, 0x20, + 0xdc, 0xb2, 0x26, 0x24, 0xfe, 0x41, 0xdd, 0x5c, 0xfc, 0xec, 0xf9, 0x14, 0x1c, 0x0f, 0xbe, 0x2d, + 0xab, 0x75, 0xef, 0xcb, 0xfd, 0xe8, 0xc1, 0x1c, 0xcc, 0xd0, 0x6e, 0x7f, 0xa3, 0xd3, 0x72, 0xed, + 0xd1, 0x27, 0x04, 0xe8, 0xde, 0x00, 0x47, 0xcb, 0xeb, 0x4b, 0xb5, 0x9a, 0x63, 0xd9, 0xfa, 0x16, + 0x2e, 0xb6, 0x5a, 0x36, 0x93, 0x56, 0x6f, 0x32, 0x7a, 0x97, 0xf0, 0xda, 0x35, 0x3f, 0xd4, 0xd0, + 0x32, 0x23, 0x50, 0xff, 0xb2, 0xd0, 0x5a, 0xb3, 0x00, 0xc1, 0x64, 0xe8, 0xdf, 0x3f, 0xe2, 0x36, + 0x17, 0x8d, 0xcb, 0xe6, 0x99, 0xe7, 0x48, 0x30, 0x55, 0x37, 0x76, 0xf0, 0x33, 0x2c, 0x13, 0x77, + 0x95, 0x09, 0x90, 0x97, 0xd7, 0xea, 0x85, 0x23, 0xee, 0x83, 0x3b, 0x51, 0xc8, 0x90, 0x07, 0xd5, + 0x2d, 0xc0, 0x7d, 0x28, 0xd6, 0x0b, 0xb2, 0xfb, 0xb0, 0xa6, 0xd6, 0x0b, 0x59, 0xf7, 0xa1, 0xa2, + 0xd6, 0x0b, 0x39, 0xf7, 0x61, 0x7d, 0xb5, 0x5e, 0xc8, 0xbb, 0x0f, 0xe5, 0x5a, 0xbd, 0x30, 0xe1, + 0x3e, 0x2c, 0xd4, 0xea, 0x85, 0x49, 0xf7, 0xe1, 0x6c, 0xad, 0x5e, 0x98, 0x72, 0x1f, 0x4a, 0xf5, + 0x7a, 0x01, 0xdc, 0x87, 0x7b, 0x6a, 0xf5, 0xc2, 0xb4, 0xfb, 0x50, 0x2c, 0xd5, 0x0b, 0x33, 0xe4, + 0x41, 0xad, 0x17, 0x66, 0xdd, 0x87, 0x5a, 0xad, 0x5e, 0x98, 0x23, 0x94, 0x6b, 0xf5, 0xc2, 0x51, + 0x52, 0x56, 0xb9, 0x5e, 0x28, 0xb8, 0x0f, 0x2b, 0xb5, 0x7a, 0xe1, 0x18, 0xc9, 0x5c, 0xab, 0x17, + 0x14, 0x52, 0x68, 0xad, 0x5e, 0xb8, 0x8c, 0xe4, 0xa9, 0xd5, 0x0b, 0xc7, 0x49, 0x11, 0xb5, 0x7a, + 0xe1, 0x04, 0x61, 0x43, 0xad, 0x17, 0x4e, 0x92, 0x3c, 0x5a, 0xbd, 0x70, 0x39, 0xf9, 0x54, 0xa9, + 0x17, 0x4e, 0x11, 0xc6, 0xd4, 0x7a, 0xe1, 0x0a, 0xf2, 0xa0, 0xd5, 0x0b, 0x88, 0x7c, 0x2a, 0xd6, + 0x0b, 0x57, 0xa2, 0x47, 0xc1, 0xd4, 0x32, 0x76, 0x28, 0x88, 0xa8, 0x00, 0xf2, 0x32, 0x76, 0xc2, + 0x53, 0xd3, 0xaf, 0xca, 0x70, 0x39, 0x5b, 0xce, 0x58, 0xb2, 0xad, 0x9d, 0x55, 0xbc, 0xa5, 0x37, + 0x2f, 0xa9, 0x0f, 0xb8, 0x26, 0x56, 0xd8, 0xd7, 0x40, 0x81, 0x6c, 0x27, 0xe8, 0x8c, 0xc8, 0x73, + 0xac, 0x45, 0xea, 0x2d, 0xb0, 0xca, 0xc1, 0x02, 0x2b, 0xb3, 0xd8, 0xfe, 0x39, 0xac, 0xd1, 0xdc, + 0x9e, 0x48, 0xa6, 0x67, 0x4f, 0xc4, 0x6d, 0x26, 0x1d, 0x6c, 0x77, 0x2d, 0x53, 0x6f, 0xd7, 0x98, + 0x33, 0x0a, 0x5d, 0xc9, 0xed, 0x4d, 0x56, 0x7e, 0xca, 0x6b, 0x19, 0xd4, 0x6a, 0x7b, 0x4a, 0xdc, + 0xaa, 0x4d, 0x6f, 0x35, 0x23, 0x1a, 0xc9, 0x27, 0xfc, 0x46, 0x52, 0xe7, 0x1a, 0xc9, 0xdd, 0x07, + 0xa0, 0x9d, 0xac, 0xbd, 0x94, 0x87, 0x9b, 0xc1, 0x05, 0xae, 0xda, 0xde, 0x16, 0x8c, 0x8c, 0x3e, + 0x2b, 0xc1, 0x49, 0xd5, 0xec, 0x37, 0x03, 0x08, 0xeb, 0xc2, 0x9b, 0xc3, 0xd0, 0xac, 0xf3, 0x22, + 0xbd, 0xbd, 0x6f, 0xb5, 0xfb, 0xd3, 0x8c, 0x90, 0xe8, 0xa7, 0x7c, 0x89, 0xd6, 0x38, 0x89, 0xde, + 0x35, 0x3c, 0xe9, 0x64, 0x02, 0xad, 0x8c, 0xb4, 0x03, 0xca, 0xa2, 0x6f, 0x64, 0xe1, 0x51, 0xd4, + 0x9f, 0x8c, 0x71, 0x48, 0x5b, 0x59, 0xd1, 0x6c, 0x69, 0xb8, 0xeb, 0xe8, 0xb6, 0xc3, 0x9d, 0xf1, + 0xef, 0x99, 0x6a, 0x65, 0x52, 0x98, 0x6a, 0x49, 0x03, 0xa7, 0x5a, 0xe8, 0x9d, 0x61, 0xf3, 0xe1, + 0x1c, 0x8f, 0x71, 0xb1, 0x7f, 0xff, 0x1f, 0x57, 0xc3, 0x28, 0xa8, 0x7d, 0xbb, 0xe2, 0xa7, 0x39, + 0xa8, 0x97, 0x0e, 0x5c, 0x42, 0x32, 0xc4, 0xff, 0x70, 0xb4, 0x76, 0x5e, 0x36, 0xfc, 0x8d, 0x37, + 0x4a, 0x0a, 0xad, 0x54, 0x0d, 0xf4, 0x4f, 0x4f, 0xc0, 0x14, 0x69, 0x0b, 0xab, 0x86, 0x79, 0x01, + 0x3d, 0x24, 0xc3, 0x4c, 0x05, 0x5f, 0x2c, 0x6d, 0xeb, 0xed, 0x36, 0x36, 0xb7, 0x70, 0xd8, 0x6c, + 0x3f, 0x05, 0x13, 0x7a, 0xa7, 0x53, 0x09, 0xf6, 0xce, 0xbc, 0x57, 0xd6, 0xff, 0x7e, 0xbd, 0x6f, + 0x23, 0xcf, 0xc4, 0x34, 0x72, 0xbf, 0xdc, 0xf9, 0x70, 0x99, 0x11, 0x33, 0xe8, 0x6b, 0x60, 0xba, + 0xe9, 0x65, 0xf1, 0xcf, 0x02, 0x85, 0x93, 0xd0, 0xdf, 0x25, 0xea, 0x06, 0x84, 0x0a, 0x4f, 0xa6, + 0x14, 0x78, 0xc4, 0x76, 0xc8, 0x09, 0x38, 0x56, 0xaf, 0x56, 0x1b, 0x6b, 0xc5, 0xca, 0x7d, 0xc1, + 0x19, 0xfc, 0x4d, 0xf4, 0xca, 0x2c, 0xcc, 0xd5, 0xac, 0xf6, 0x1e, 0x0e, 0x60, 0x2a, 0x73, 0x4e, + 0x66, 0x61, 0x39, 0x65, 0xf6, 0xc9, 0x49, 0x39, 0x09, 0x79, 0xdd, 0xec, 0x5e, 0xc4, 0x9e, 0x6d, + 0xc8, 0xde, 0x18, 0x8c, 0x1f, 0x08, 0xb7, 0x63, 0x8d, 0x87, 0xf1, 0x8e, 0x01, 0x92, 0xe4, 0xb9, + 0x8a, 0x00, 0xf2, 0x0c, 0xcc, 0x74, 0xe9, 0x06, 0x78, 0x3d, 0xe4, 0xe7, 0xc0, 0xa5, 0x11, 0x16, + 0xa9, 0x07, 0x86, 0xcc, 0x58, 0x24, 0x6f, 0xe8, 0x21, 0xbf, 0xf9, 0x6f, 0x70, 0x10, 0x17, 0x0f, + 0xc2, 0x58, 0x32, 0x90, 0x5f, 0x3d, 0xea, 0x19, 0xde, 0x29, 0x38, 0xce, 0x5a, 0x6d, 0xa3, 0xb4, + 0x52, 0x5c, 0x5d, 0x55, 0x2b, 0xcb, 0x6a, 0xa3, 0xbc, 0x48, 0xb7, 0xdf, 0x82, 0x94, 0x62, 0xbd, + 0xae, 0xae, 0xad, 0xd7, 0x6b, 0x0d, 0xf5, 0x69, 0x25, 0x55, 0x5d, 0x24, 0x6e, 0x9e, 0xe4, 0x9c, + 0x96, 0xe7, 0x90, 0x5b, 0xac, 0xd4, 0xce, 0xa9, 0x5a, 0x61, 0xfb, 0x4c, 0x11, 0xa6, 0x43, 0xfd, + 0xbc, 0xcb, 0xdd, 0x22, 0xde, 0xd4, 0x77, 0xdb, 0xcc, 0x56, 0x2b, 0x1c, 0x71, 0xb9, 0x23, 0xb2, + 0xa9, 0x9a, 0xed, 0x4b, 0x85, 0x8c, 0x52, 0x80, 0x99, 0x70, 0x97, 0x5e, 0x90, 0xd0, 0xdb, 0xae, + 0x82, 0xa9, 0x73, 0x96, 0x7d, 0x81, 0xf8, 0x26, 0xa2, 0xf7, 0xd2, 0x58, 0x3d, 0xde, 0xa9, 0xe7, + 0xd0, 0xc0, 0xfe, 0x6a, 0x71, 0x0f, 0x18, 0x8f, 0xda, 0xfc, 0xc0, 0x93, 0xcd, 0xd7, 0xc0, 0xf4, + 0x45, 0x2f, 0x77, 0xd0, 0xd2, 0x43, 0x49, 0xe8, 0xbf, 0x8b, 0xf9, 0xb4, 0x0c, 0x2e, 0x32, 0xfd, + 0x45, 0xd8, 0xb7, 0x4a, 0x90, 0x5f, 0xc6, 0x4e, 0xb1, 0xdd, 0x0e, 0xcb, 0xed, 0xa5, 0xc2, 0xa7, + 0xd5, 0xb8, 0x4a, 0x14, 0xdb, 0xed, 0xe8, 0x46, 0x15, 0x12, 0x90, 0x77, 0xaa, 0x82, 0x4b, 0x13, + 0xf4, 0x05, 0x1d, 0x50, 0x60, 0xfa, 0x12, 0xfb, 0x90, 0xec, 0xfb, 0x6d, 0x3c, 0x1c, 0xb2, 0x72, + 0x1e, 0x1f, 0xc4, 0x69, 0xca, 0xc4, 0xfb, 0x7f, 0x78, 0xf9, 0x94, 0x7b, 0x61, 0x62, 0xb7, 0x8b, + 0x4b, 0x7a, 0x17, 0x13, 0xde, 0x7a, 0x6b, 0x5a, 0x3d, 0x7f, 0x3f, 0x6e, 0x3a, 0xf3, 0xe5, 0x1d, + 0xd7, 0xa0, 0xde, 0xa0, 0x19, 0xfd, 0xd0, 0x47, 0xec, 0x5d, 0xf3, 0x28, 0xb8, 0x93, 0x92, 0x8b, + 0x86, 0xb3, 0x5d, 0xda, 0xd6, 0x1d, 0xb6, 0xf6, 0xed, 0xbf, 0xa3, 0x17, 0x0e, 0x01, 0x67, 0xac, + 0x7f, 0x43, 0xe4, 0xa1, 0xd7, 0xc4, 0x20, 0x8e, 0xc0, 0x29, 0x61, 0x18, 0x10, 0xff, 0x51, 0x82, + 0x6c, 0xb5, 0x83, 0x4d, 0xe1, 0x13, 0x5e, 0xbe, 0x6c, 0xa5, 0x1e, 0xd9, 0x3e, 0x24, 0xee, 0xf1, + 0xe8, 0x57, 0xda, 0x2d, 0x39, 0x42, 0xb2, 0x37, 0x43, 0xd6, 0x30, 0x37, 0x2d, 0x66, 0x98, 0x5e, + 0x19, 0xb1, 0xb1, 0x59, 0x36, 0x37, 0x2d, 0x8d, 0x64, 0x14, 0x75, 0x76, 0x8c, 0x2b, 0x3b, 0x7d, + 0x71, 0x7f, 0x73, 0x12, 0xf2, 0x54, 0x9d, 0xd1, 0x4b, 0x64, 0x90, 0x8b, 0xad, 0x56, 0x84, 0xe0, + 0xa5, 0x7d, 0x82, 0xb7, 0xc8, 0x6f, 0x3e, 0x26, 0xfe, 0x3b, 0x1f, 0xa0, 0x47, 0xb0, 0x6f, 0x67, + 0x4d, 0xaa, 0xd8, 0x6a, 0x45, 0xfb, 0x55, 0xfb, 0x05, 0x4a, 0x7c, 0x81, 0xe1, 0x16, 0x2e, 0x8b, + 0xb5, 0xf0, 0xc4, 0x03, 0x41, 0x24, 0x7f, 0xe9, 0x43, 0xf4, 0xcf, 0x12, 0x4c, 0xac, 0x1a, 0x5d, + 0xc7, 0xc5, 0xa6, 0x28, 0x82, 0xcd, 0x55, 0x30, 0xe5, 0x89, 0xc6, 0xed, 0xf2, 0xdc, 0xfe, 0x3c, + 0x48, 0x40, 0xaf, 0x0b, 0xa3, 0x73, 0x0f, 0x8f, 0xce, 0x13, 0xe3, 0x6b, 0xcf, 0xb8, 0x88, 0x3e, + 0x39, 0x13, 0x14, 0x2b, 0xf5, 0x16, 0xfb, 0xdb, 0xbe, 0xc0, 0xd7, 0x38, 0x81, 0xdf, 0x36, 0x4c, + 0x91, 0xe9, 0x0b, 0xfd, 0x73, 0x12, 0x80, 0x5b, 0x36, 0x3b, 0x9e, 0xf8, 0x18, 0x2e, 0xe8, 0x40, + 0x8c, 0x74, 0x5f, 0x19, 0x96, 0xee, 0x1a, 0x2f, 0xdd, 0x9f, 0x1c, 0x5c, 0xd5, 0xb8, 0x63, 0x88, + 0x4a, 0x01, 0x64, 0xc3, 0x17, 0xad, 0xfb, 0x88, 0xde, 0xea, 0x0b, 0x75, 0x9d, 0x13, 0xea, 0x1d, + 0x43, 0x96, 0x94, 0xbe, 0x5c, 0xff, 0x4a, 0x82, 0x89, 0x1a, 0x76, 0xdc, 0x6e, 0x12, 0x9d, 0x15, + 0xe9, 0xe1, 0x43, 0x6d, 0x5b, 0x12, 0x6c, 0xdb, 0xdf, 0xc9, 0x88, 0x06, 0x2f, 0x0a, 0x24, 0xc3, + 0x78, 0x8a, 0x58, 0x3c, 0x78, 0x58, 0x28, 0x78, 0xd1, 0x20, 0x6a, 0xe9, 0x4b, 0xf7, 0xcd, 0x92, + 0xbf, 0x71, 0xcf, 0x9f, 0x1e, 0x0a, 0x9b, 0xc5, 0x99, 0xfd, 0x66, 0xb1, 0xf8, 0xe9, 0xa1, 0x70, + 0x1d, 0xa3, 0x77, 0xad, 0x13, 0x1b, 0x1b, 0x23, 0xd8, 0x50, 0x1e, 0x46, 0x5e, 0xcf, 0x92, 0x21, + 0xcf, 0x56, 0x96, 0xef, 0x8a, 0x5f, 0x59, 0x1e, 0x3c, 0xb5, 0x78, 0xcf, 0x10, 0xa6, 0x5c, 0xdc, + 0x72, 0xaf, 0xcf, 0x86, 0x14, 0x62, 0xe3, 0x26, 0xc8, 0x91, 0xe8, 0xaa, 0x6c, 0x9c, 0x0b, 0x7c, + 0x01, 0x3c, 0x12, 0xaa, 0xfb, 0x55, 0xa3, 0x99, 0x12, 0xa3, 0x30, 0x82, 0x15, 0xe2, 0x61, 0x50, + 0x78, 0x97, 0x02, 0xb0, 0xbe, 0x7b, 0xbe, 0x6d, 0x74, 0xb7, 0x0d, 0x73, 0x0b, 0xfd, 0x20, 0x03, + 0x33, 0xec, 0x95, 0x06, 0x09, 0x8d, 0x35, 0xff, 0x22, 0x8d, 0x82, 0x02, 0xc8, 0xbb, 0xb6, 0xc1, + 0x96, 0x01, 0xdc, 0x47, 0xe5, 0x4e, 0xdf, 0x39, 0x2d, 0xdb, 0x13, 0x1e, 0xc2, 0x15, 0x43, 0xc0, + 0xc1, 0x7c, 0xa8, 0xf4, 0xc0, 0x49, 0x2d, 0x1c, 0x09, 0x36, 0xc7, 0x47, 0x82, 0xe5, 0xce, 0x8c, + 0xe6, 0x7b, 0xce, 0x8c, 0xba, 0x38, 0x76, 0x8d, 0x67, 0x60, 0xe2, 0x30, 0x2d, 0x6b, 0xe4, 0xd9, + 0xfd, 0xe3, 0x7e, 0xcb, 0x30, 0xc9, 0x66, 0x01, 0x73, 0x87, 0x0e, 0x12, 0xd0, 0x07, 0x83, 0x89, + 0x8c, 0x25, 0x68, 0x05, 0x27, 0x10, 0x03, 0x57, 0x76, 0xb6, 0xb7, 0xec, 0x8f, 0x08, 0x47, 0x7e, + 0x0b, 0x09, 0x2c, 0x76, 0x4a, 0xc2, 0x38, 0x90, 0x7c, 0x0e, 0x42, 0xbb, 0x7d, 0x71, 0xdd, 0xe9, + 0x20, 0xfa, 0xc9, 0x14, 0x73, 0x67, 0x88, 0xc5, 0x17, 0x05, 0xe6, 0xbc, 0x93, 0xb4, 0xd5, 0x85, + 0x7b, 0xd4, 0x52, 0xbd, 0x80, 0xf7, 0x9f, 0xae, 0x25, 0xe7, 0x68, 0xe9, 0x99, 0xd9, 0x60, 0x81, + 0x05, 0xfd, 0x4f, 0x09, 0xf2, 0xcc, 0x76, 0xb8, 0xeb, 0x80, 0x10, 0xa2, 0x57, 0x0d, 0x03, 0x49, + 0x6c, 0x40, 0x83, 0x4f, 0x26, 0x05, 0x60, 0x04, 0xd6, 0xc2, 0x7d, 0xa9, 0x01, 0x80, 0xfe, 0x55, + 0x82, 0xac, 0x6b, 0xd3, 0x88, 0x1d, 0x17, 0xff, 0x84, 0xb0, 0x23, 0x65, 0x48, 0x00, 0x2e, 0xf9, + 0x08, 0xfd, 0x5e, 0x80, 0xa9, 0x0e, 0xcd, 0xe8, 0x07, 0x2b, 0xb8, 0x4e, 0xa0, 0x67, 0xc1, 0x5a, + 0xf0, 0x1b, 0x7a, 0xb7, 0x90, 0x33, 0x66, 0x3c, 0x3f, 0xc9, 0xe0, 0x50, 0x47, 0x71, 0xb2, 0x9c, + 0xb8, 0xb7, 0x82, 0x86, 0xbb, 0x56, 0x7b, 0x0f, 0x6f, 0xd8, 0x06, 0xba, 0x32, 0x00, 0x80, 0x35, + 0xfb, 0x4c, 0xd0, 0xec, 0x3f, 0x2d, 0x89, 0x3a, 0x56, 0x72, 0x9a, 0xe7, 0x11, 0x8f, 0x10, 0xff, + 0x53, 0x61, 0x82, 0xc9, 0x91, 0x19, 0x88, 0x62, 0xc2, 0xf7, 0x7e, 0x42, 0xef, 0x13, 0x72, 0xcc, + 0x14, 0xe1, 0x28, 0x19, 0x00, 0xa5, 0x21, 0x00, 0x38, 0x0a, 0xd3, 0x1e, 0x00, 0x1b, 0x5a, 0xb9, + 0x80, 0xd1, 0x3b, 0x64, 0xb2, 0x97, 0x4e, 0x47, 0xaa, 0x83, 0xf7, 0x34, 0x5f, 0x13, 0x9e, 0xb9, + 0x87, 0xe4, 0xe1, 0x97, 0x9f, 0x12, 0x40, 0x7f, 0x2a, 0x34, 0x55, 0x17, 0x60, 0xe8, 0x91, 0xd2, + 0x5f, 0x9d, 0x51, 0x61, 0x96, 0x33, 0x31, 0x94, 0x53, 0x70, 0x9c, 0x4b, 0xa0, 0xe3, 0x5d, 0xab, + 0x70, 0x44, 0x41, 0x70, 0x92, 0xfb, 0xc2, 0x5e, 0x70, 0xab, 0x90, 0x41, 0x7f, 0xfe, 0xd9, 0x8c, + 0xbf, 0x78, 0xf3, 0x9e, 0x2c, 0x5b, 0x36, 0xfb, 0x18, 0x1f, 0x1f, 0xaf, 0x69, 0x99, 0x0e, 0x7e, + 0x20, 0xe4, 0xcb, 0xe0, 0x27, 0xc4, 0x5a, 0x0d, 0xa7, 0x60, 0xc2, 0xb1, 0xc3, 0xfe, 0x0d, 0xde, + 0x6b, 0x58, 0xb1, 0x72, 0xbc, 0x62, 0x55, 0xe0, 0x8c, 0x61, 0x36, 0xdb, 0xbb, 0x2d, 0xac, 0xe1, + 0xb6, 0xee, 0xca, 0xb0, 0x5b, 0xec, 0x2e, 0xe2, 0x0e, 0x36, 0x5b, 0xd8, 0x74, 0x28, 0x9f, 0xde, + 0xf9, 0x3c, 0x81, 0x9c, 0xbc, 0x32, 0xde, 0xc9, 0x2b, 0xe3, 0x63, 0xfa, 0xad, 0xc7, 0xc6, 0x2c, + 0xde, 0xdd, 0x06, 0x40, 0xeb, 0x76, 0xd6, 0xc0, 0x17, 0x99, 0x1a, 0x5e, 0xd1, 0xb3, 0x84, 0x57, + 0xf5, 0x33, 0x68, 0xa1, 0xcc, 0xe8, 0x4b, 0xbe, 0xfa, 0xdd, 0xcd, 0xa9, 0xdf, 0x4d, 0x82, 0x2c, + 0x24, 0xd3, 0xba, 0xce, 0x10, 0x5a, 0x37, 0x0b, 0x53, 0xc1, 0xce, 0xae, 0xac, 0x5c, 0x01, 0x27, + 0x3c, 0x5f, 0xd2, 0x8a, 0xaa, 0x2e, 0xd6, 0x1a, 0x1b, 0xeb, 0xcb, 0x5a, 0x71, 0x51, 0x2d, 0x80, + 0xab, 0x9f, 0x54, 0x2f, 0x7d, 0x17, 0xd0, 0x2c, 0xfa, 0x0b, 0x09, 0x72, 0xe4, 0x70, 0x29, 0xfa, + 0x99, 0x11, 0x69, 0x4e, 0x97, 0xf3, 0x8c, 0xf1, 0xc7, 0x5d, 0xf1, 0xb8, 0xf5, 0x4c, 0x98, 0x84, + 0xab, 0x03, 0xc5, 0xad, 0x8f, 0x21, 0x94, 0xfe, 0xb4, 0xc6, 0x6d, 0x92, 0xb5, 0x6d, 0xeb, 0xe2, + 0x8f, 0x72, 0x93, 0x74, 0xeb, 0x7f, 0xc8, 0x4d, 0xb2, 0x0f, 0x0b, 0x63, 0x6f, 0x92, 0x7d, 0xda, + 0x5d, 0x4c, 0x33, 0x45, 0xcf, 0xcc, 0xf9, 0xf3, 0xbf, 0xe7, 0x48, 0x07, 0xda, 0xc8, 0x2a, 0xc2, + 0xac, 0x61, 0x3a, 0xd8, 0x36, 0xf5, 0xf6, 0x52, 0x5b, 0xdf, 0xf2, 0xec, 0xd3, 0xde, 0xdd, 0x8b, + 0x72, 0x28, 0x8f, 0xc6, 0xff, 0xa1, 0x9c, 0x06, 0x70, 0xf0, 0x4e, 0xa7, 0xad, 0x3b, 0x81, 0xea, + 0x85, 0x52, 0xc2, 0xda, 0x97, 0xe5, 0xb5, 0xef, 0x16, 0xb8, 0x8c, 0x82, 0x56, 0xbf, 0xd4, 0xc1, + 0x1b, 0xa6, 0xf1, 0xf4, 0x5d, 0x12, 0x4e, 0x95, 0xea, 0x68, 0xbf, 0x4f, 0xdc, 0x76, 0x4e, 0xbe, + 0x67, 0x3b, 0xe7, 0x1f, 0x85, 0xc3, 0xb4, 0x78, 0xad, 0x7e, 0x40, 0x98, 0x16, 0xbf, 0xa5, 0xc9, + 0x3d, 0x2d, 0xcd, 0x5f, 0x64, 0xc9, 0x0a, 0x2c, 0xb2, 0x84, 0x51, 0xc9, 0x09, 0x2e, 0x50, 0xbe, + 0x56, 0x28, 0x0e, 0x4c, 0x5c, 0x35, 0xc6, 0xb0, 0x00, 0x2e, 0xc3, 0x1c, 0x2d, 0x7a, 0xc1, 0xb2, + 0x2e, 0xec, 0xe8, 0xf6, 0x05, 0x64, 0x1f, 0x48, 0x15, 0x63, 0xf7, 0x92, 0x22, 0x37, 0x48, 0x3f, + 0x25, 0x3c, 0x67, 0xe0, 0xc4, 0xe5, 0xf1, 0x3c, 0x9e, 0xcd, 0x24, 0xb1, 0xb3, 0x5d, 0x22, 0x0c, + 0xa6, 0x8f, 0xeb, 0x1f, 0xfb, 0xb8, 0x7a, 0x1d, 0x7d, 0x78, 0x1d, 0x7e, 0x94, 0xb8, 0xa2, 0x2f, + 0x0f, 0x87, 0x9d, 0xc7, 0xd7, 0x10, 0xd8, 0x15, 0x40, 0xbe, 0xe0, 0xbb, 0xfe, 0xb8, 0x8f, 0xe1, + 0x0a, 0x65, 0xd3, 0x43, 0x33, 0x82, 0xe5, 0xb1, 0xa0, 0x79, 0x9c, 0x67, 0xa1, 0xda, 0x49, 0x15, + 0xd3, 0x2f, 0x0a, 0xef, 0x6f, 0xf5, 0x15, 0x10, 0xe5, 0x6e, 0x3c, 0xad, 0x52, 0x6c, 0x73, 0x4c, + 0x9c, 0xcd, 0xf4, 0xd1, 0x7c, 0x41, 0x0e, 0xa6, 0xbc, 0x40, 0x3a, 0xe4, 0x9e, 0x27, 0x1f, 0xc3, + 0x93, 0x90, 0xef, 0x5a, 0xbb, 0x76, 0x13, 0xb3, 0x1d, 0x47, 0xf6, 0x36, 0xc4, 0xee, 0xd8, 0xc0, + 0xf1, 0x7c, 0x9f, 0xc9, 0x90, 0x4d, 0x6c, 0x32, 0x44, 0x1b, 0xa4, 0x71, 0x03, 0xfc, 0x0b, 0x85, + 0x83, 0xf3, 0x73, 0x98, 0xd5, 0xb0, 0xf3, 0x48, 0x1c, 0xe3, 0xff, 0x40, 0x68, 0xef, 0x65, 0x40, + 0x4d, 0x92, 0xa9, 0x5c, 0x75, 0x08, 0x43, 0xf5, 0x4a, 0xb8, 0xdc, 0xcb, 0xc1, 0x2c, 0x54, 0x62, + 0x91, 0x6e, 0x68, 0xab, 0x05, 0x19, 0x3d, 0x2b, 0x0b, 0x05, 0xca, 0x5a, 0xd5, 0x37, 0xd6, 0xd0, + 0x4b, 0x33, 0x87, 0x6d, 0x91, 0x46, 0x4f, 0x31, 0x3f, 0x23, 0x89, 0x06, 0x00, 0xe6, 0x04, 0x1f, + 0xd4, 0x2e, 0x42, 0x93, 0x86, 0x68, 0x66, 0x31, 0xca, 0x87, 0x7e, 0x2b, 0x23, 0x12, 0x4f, 0x58, + 0x8c, 0xc5, 0xf4, 0x7b, 0xa5, 0xcf, 0x67, 0xbd, 0x78, 0x68, 0x4b, 0xb6, 0xb5, 0xb3, 0x61, 0xb7, + 0xd1, 0xff, 0x29, 0x14, 0xae, 0x3d, 0xc2, 0xfc, 0x97, 0xa2, 0xcd, 0x7f, 0xb2, 0x64, 0xdc, 0x0e, + 0xf6, 0xaa, 0xda, 0x43, 0x0c, 0xdf, 0xca, 0xf5, 0x30, 0xa7, 0xb7, 0x5a, 0xeb, 0xfa, 0x16, 0x2e, + 0xb9, 0xf3, 0x6a, 0xd3, 0x61, 0xb1, 0x92, 0x7a, 0x52, 0x63, 0xbb, 0x22, 0xf1, 0x75, 0x50, 0x0e, + 0x24, 0x26, 0x9f, 0xb1, 0x0c, 0x6f, 0xee, 0x90, 0xd0, 0xdc, 0xd6, 0x83, 0xc8, 0x6d, 0xec, 0x4d, + 0xd0, 0xb3, 0x49, 0x80, 0xef, 0xf4, 0x35, 0xeb, 0xf7, 0x24, 0x98, 0x70, 0xe5, 0x5d, 0x6c, 0xb5, + 0xd0, 0xa3, 0xb9, 0x00, 0x87, 0x91, 0xbe, 0x65, 0xcf, 0x13, 0x76, 0xea, 0xf3, 0x6a, 0x48, 0xe9, + 0x47, 0x60, 0x12, 0x08, 0x51, 0xe2, 0x84, 0x28, 0xe6, 0xbb, 0x17, 0x5b, 0x44, 0xfa, 0xe2, 0xfb, + 0x84, 0x04, 0xb3, 0xde, 0x3c, 0x62, 0x09, 0x3b, 0xcd, 0x6d, 0x74, 0x9b, 0xe8, 0x42, 0x13, 0x6b, + 0x69, 0xfe, 0x9e, 0x6c, 0x1b, 0x7d, 0x3f, 0x93, 0x50, 0xe5, 0xb9, 0x92, 0x23, 0x56, 0xe9, 0x12, + 0xe9, 0x62, 0x1c, 0xc1, 0xf4, 0x85, 0xf9, 0x25, 0x09, 0xa0, 0x6e, 0xf9, 0x73, 0xdd, 0x03, 0x48, + 0xf2, 0xc5, 0xc2, 0xdb, 0xb5, 0xac, 0xe2, 0x41, 0xb1, 0xc9, 0x7b, 0x0e, 0x41, 0xd7, 0xa4, 0x41, + 0x25, 0x8d, 0xa5, 0xad, 0x4f, 0x2d, 0xee, 0x76, 0xda, 0x46, 0x53, 0x77, 0x7a, 0xfd, 0xe9, 0xa2, + 0xc5, 0x4b, 0x2e, 0x41, 0x4d, 0x64, 0x14, 0xfa, 0x65, 0x44, 0xc8, 0x92, 0x06, 0x31, 0x91, 0xbc, + 0x20, 0x26, 0x82, 0x3e, 0x32, 0x03, 0x88, 0x8f, 0x41, 0x3d, 0x65, 0x38, 0x5a, 0xed, 0x60, 0x73, + 0xc1, 0xc6, 0x7a, 0xab, 0x69, 0xef, 0xee, 0x9c, 0xef, 0x86, 0x9d, 0x41, 0xe3, 0x75, 0x34, 0xb4, + 0x74, 0x2c, 0x71, 0x4b, 0xc7, 0xe8, 0xd9, 0xb2, 0x68, 0x18, 0xa8, 0xd0, 0x06, 0x47, 0x88, 0x87, + 0x21, 0x86, 0xba, 0x44, 0x2e, 0x4c, 0x3d, 0xab, 0xc4, 0xd9, 0x24, 0xab, 0xc4, 0x6f, 0x12, 0x0a, + 0x2a, 0x25, 0x54, 0xaf, 0xb1, 0x78, 0xa2, 0xcd, 0xd5, 0xb0, 0x13, 0x01, 0xef, 0x75, 0x30, 0x7b, + 0x3e, 0xf8, 0xe2, 0x43, 0xcc, 0x27, 0xf6, 0xf1, 0x0f, 0x7d, 0x73, 0xd2, 0x15, 0x18, 0x9e, 0x85, + 0x08, 0x74, 0x7d, 0x04, 0x25, 0x11, 0x27, 0xb4, 0x44, 0xcb, 0x29, 0xb1, 0xe5, 0xa7, 0x8f, 0xc2, + 0x47, 0x24, 0x98, 0x26, 0x57, 0xbb, 0x2e, 0x5c, 0x22, 0xa7, 0x1a, 0x05, 0x8d, 0x92, 0x17, 0x84, + 0xc5, 0xac, 0x40, 0xb6, 0x6d, 0x98, 0x17, 0x3c, 0xef, 0x41, 0xf7, 0x39, 0xb8, 0x28, 0x50, 0xea, + 0x73, 0x51, 0xa0, 0xbf, 0x4f, 0xe1, 0x97, 0x7b, 0xa0, 0x9b, 0xab, 0x07, 0x92, 0x4b, 0x5f, 0x8c, + 0x7f, 0x9f, 0x85, 0x7c, 0x0d, 0xeb, 0x76, 0x73, 0x1b, 0xbd, 0x47, 0xea, 0x3b, 0x55, 0x98, 0xe4, + 0xa7, 0x0a, 0x4b, 0x30, 0xb1, 0x69, 0xb4, 0x1d, 0x6c, 0x53, 0x8f, 0xea, 0x70, 0xd7, 0x4e, 0x9b, + 0xf8, 0x42, 0xdb, 0x6a, 0x5e, 0x98, 0x67, 0xa6, 0xfb, 0xbc, 0x17, 0x58, 0x76, 0x7e, 0x89, 0xfc, + 0xa4, 0x79, 0x3f, 0xbb, 0x06, 0x61, 0xd7, 0xb2, 0x9d, 0xa8, 0x3b, 0x43, 0x22, 0xa8, 0xd4, 0x2c, + 0xdb, 0xd1, 0xe8, 0x8f, 0x2e, 0xcc, 0x9b, 0xbb, 0xed, 0x76, 0x1d, 0x3f, 0xe0, 0x78, 0xd3, 0x36, + 0xef, 0xdd, 0x35, 0x16, 0xad, 0xcd, 0xcd, 0x2e, 0xa6, 0x8b, 0x06, 0x39, 0x8d, 0xbd, 0x29, 0xc7, + 0x21, 0xd7, 0x36, 0x76, 0x0c, 0x3a, 0xd1, 0xc8, 0x69, 0xf4, 0x45, 0xb9, 0x11, 0x0a, 0xc1, 0x1c, + 0x87, 0x32, 0x7a, 0x2a, 0x4f, 0x9a, 0xe6, 0xbe, 0x74, 0x57, 0x67, 0x2e, 0xe0, 0x4b, 0xdd, 0x53, + 0x13, 0xe4, 0x3b, 0x79, 0xe6, 0x8f, 0xaf, 0x88, 0xec, 0x77, 0x50, 0x89, 0x47, 0xcf, 0x60, 0x6d, + 0xdc, 0xb4, 0xec, 0x96, 0x27, 0x9b, 0xe8, 0x09, 0x06, 0xcb, 0x97, 0x6c, 0x97, 0xa2, 0x6f, 0xe1, + 0xe9, 0x6b, 0xda, 0x3b, 0xf3, 0x6e, 0xb7, 0xe9, 0x16, 0x7d, 0xce, 0x70, 0xb6, 0xd7, 0xb0, 0xa3, + 0xa3, 0xbf, 0x97, 0xfb, 0x6a, 0xdc, 0xf4, 0xff, 0xaf, 0x71, 0x03, 0x34, 0x8e, 0x86, 0x57, 0x72, + 0x76, 0x6d, 0xd3, 0x95, 0x23, 0xf3, 0x4a, 0x0d, 0xa5, 0x28, 0x77, 0xc0, 0x15, 0xc1, 0x9b, 0xb7, + 0x54, 0xba, 0xc8, 0xa6, 0xad, 0x53, 0x24, 0x7b, 0x74, 0x06, 0x65, 0x1d, 0xae, 0xa5, 0x1f, 0x57, + 0xea, 0x6b, 0xab, 0x2b, 0xc6, 0xd6, 0x76, 0xdb, 0xd8, 0xda, 0x76, 0xba, 0x65, 0xb3, 0xeb, 0x60, + 0xbd, 0x55, 0xdd, 0xd4, 0xe8, 0x6d, 0x3f, 0x40, 0xe8, 0x88, 0x64, 0xe5, 0x3d, 0xae, 0xc5, 0x46, + 0xb7, 0xb0, 0xa6, 0x44, 0xb4, 0x94, 0x27, 0xb9, 0x2d, 0xa5, 0xbb, 0xdb, 0xf6, 0x31, 0xbd, 0xaa, + 0x07, 0xd3, 0x40, 0xd5, 0x77, 0xdb, 0xa4, 0xb9, 0x90, 0xcc, 0x49, 0xc7, 0xb9, 0x18, 0x4e, 0xd2, + 0x6f, 0x36, 0xff, 0x6f, 0x1e, 0x72, 0xcb, 0xb6, 0xde, 0xd9, 0x46, 0xcf, 0x0a, 0xf5, 0xcf, 0xa3, + 0x6a, 0x13, 0xbe, 0x76, 0x4a, 0x83, 0xb4, 0x53, 0x1e, 0xa0, 0x9d, 0xd9, 0x90, 0x76, 0x46, 0x2f, + 0x2a, 0x9f, 0x81, 0x99, 0xa6, 0xd5, 0x6e, 0xe3, 0xa6, 0x2b, 0x8f, 0x72, 0x8b, 0xac, 0xe6, 0x4c, + 0x69, 0x5c, 0x1a, 0x09, 0xbe, 0x8d, 0x9d, 0x1a, 0x5d, 0x43, 0xa7, 0x4a, 0x1f, 0x24, 0xa0, 0x97, + 0x4a, 0x90, 0x55, 0x5b, 0x5b, 0x98, 0x5b, 0x67, 0xcf, 0x84, 0xd6, 0xd9, 0x4f, 0x42, 0xde, 0xd1, + 0xed, 0x2d, 0xec, 0x78, 0xeb, 0x04, 0xf4, 0xcd, 0x8f, 0x09, 0x2e, 0x87, 0x62, 0x82, 0xff, 0x24, + 0x64, 0x5d, 0x99, 0x31, 0x27, 0xf3, 0x6b, 0xfb, 0xc1, 0x4f, 0x64, 0x3f, 0xef, 0x96, 0x38, 0xef, + 0xd6, 0x5a, 0x23, 0x3f, 0xf4, 0x62, 0x9d, 0xdb, 0x87, 0x35, 0xb9, 0xb8, 0xb4, 0x69, 0x99, 0xe5, + 0x1d, 0x7d, 0x0b, 0xb3, 0x6a, 0x06, 0x09, 0xde, 0x57, 0x75, 0xc7, 0xba, 0xdf, 0x60, 0xe1, 0xb9, + 0x83, 0x04, 0xb7, 0x0a, 0xdb, 0x46, 0xab, 0x85, 0x4d, 0xd6, 0xb2, 0xd9, 0xdb, 0x99, 0xd3, 0x90, + 0x75, 0x79, 0x70, 0xf5, 0xc7, 0x35, 0x16, 0x0a, 0x47, 0x94, 0x19, 0xb7, 0x59, 0xd1, 0xc6, 0x5b, + 0xc8, 0xf0, 0x6b, 0xaa, 0x22, 0x6e, 0x3b, 0xb4, 0x72, 0xfd, 0x1b, 0xd7, 0xe3, 0x20, 0x67, 0x5a, + 0x2d, 0x3c, 0x70, 0x10, 0xa2, 0xb9, 0x94, 0x27, 0x42, 0x0e, 0xb7, 0xdc, 0x5e, 0x41, 0x26, 0xd9, + 0x4f, 0xc7, 0xcb, 0x52, 0xa3, 0x99, 0x93, 0xf9, 0x06, 0xf5, 0xe3, 0x36, 0xfd, 0x06, 0xf8, 0x8b, + 0x13, 0x70, 0x94, 0xf6, 0x01, 0xb5, 0xdd, 0xf3, 0x2e, 0xa9, 0xf3, 0x18, 0x3d, 0xdc, 0x7f, 0xe0, + 0x3a, 0xca, 0x2b, 0xfb, 0x71, 0xc8, 0x75, 0x77, 0xcf, 0xfb, 0x46, 0x28, 0x7d, 0x09, 0x37, 0x5d, + 0x69, 0x24, 0xc3, 0x99, 0x3c, 0xec, 0x70, 0xc6, 0x0d, 0x4d, 0xb2, 0xd7, 0xf8, 0x83, 0x81, 0x8c, + 0x1e, 0x8f, 0xf0, 0x06, 0xb2, 0x7e, 0xc3, 0xd0, 0x29, 0x98, 0xd0, 0x37, 0x1d, 0x6c, 0x07, 0x66, + 0x22, 0x7b, 0x75, 0x87, 0xca, 0xf3, 0x78, 0xd3, 0xb2, 0x5d, 0xb1, 0x4c, 0xd1, 0xa1, 0xd2, 0x7b, + 0x0f, 0xb5, 0x5c, 0xe0, 0x76, 0xc8, 0x6e, 0x82, 0x63, 0xa6, 0xb5, 0x88, 0x3b, 0x4c, 0xce, 0x14, + 0xc5, 0x59, 0xd2, 0x02, 0xf6, 0x7f, 0xd8, 0xd7, 0x95, 0xcc, 0xed, 0xef, 0x4a, 0xd0, 0xa7, 0x93, + 0xce, 0x99, 0x7b, 0x80, 0x1e, 0x99, 0x85, 0xa6, 0x3c, 0x05, 0x66, 0x5a, 0xcc, 0x45, 0xab, 0x69, + 0xf8, 0xad, 0x24, 0xf2, 0x3f, 0x2e, 0x73, 0xa0, 0x48, 0xd9, 0xb0, 0x22, 0x2d, 0xc3, 0x24, 0x39, + 0xc8, 0xec, 0x6a, 0x52, 0xae, 0xc7, 0x25, 0x9e, 0x4c, 0xeb, 0xfc, 0x4a, 0x85, 0xc4, 0x36, 0x5f, + 0x62, 0xbf, 0x68, 0xfe, 0xcf, 0xc9, 0x66, 0xdf, 0xf1, 0x12, 0x4a, 0xbf, 0x39, 0xfe, 0x76, 0x1e, + 0xae, 0x28, 0xd9, 0x56, 0xb7, 0x4b, 0xce, 0xc0, 0xf4, 0x36, 0xcc, 0x37, 0x48, 0xdc, 0xed, 0x20, + 0x8f, 0xe8, 0xe6, 0xd7, 0xaf, 0x41, 0x8d, 0xaf, 0x69, 0x7c, 0x4d, 0x38, 0x04, 0x8c, 0xbf, 0xff, + 0x10, 0x21, 0xf4, 0x1f, 0x8d, 0x46, 0xf2, 0xce, 0x8c, 0x48, 0x54, 0x9a, 0x84, 0xb2, 0x4a, 0xbf, + 0xb9, 0x7c, 0x51, 0x82, 0x2b, 0x7b, 0xb9, 0xd9, 0x30, 0xbb, 0x7e, 0x83, 0xb9, 0x7a, 0x40, 0x7b, + 0xe1, 0xa3, 0x98, 0xc4, 0xde, 0xcb, 0x19, 0x51, 0xf7, 0x50, 0x69, 0x11, 0x8b, 0x25, 0xc1, 0x89, + 0x9a, 0xb8, 0x7b, 0x39, 0x13, 0x93, 0x4f, 0x5f, 0xb8, 0x9f, 0xc9, 0xc2, 0xd1, 0x65, 0xdb, 0xda, + 0xed, 0x74, 0x83, 0x1e, 0xe8, 0x6f, 0xfa, 0x6f, 0xb8, 0xe6, 0x45, 0x4c, 0x83, 0x6b, 0x60, 0xda, + 0x66, 0xd6, 0x5c, 0xb0, 0xfd, 0x1a, 0x4e, 0x0a, 0xf7, 0x5e, 0xf2, 0x41, 0x7a, 0xaf, 0xa0, 0x9f, + 0xc9, 0x72, 0xfd, 0x4c, 0x6f, 0xcf, 0x91, 0xeb, 0xd3, 0x73, 0xfc, 0xb5, 0x94, 0x70, 0x50, 0xed, + 0x11, 0x51, 0x44, 0x7f, 0x51, 0x82, 0xfc, 0x16, 0xc9, 0xc8, 0xba, 0x8b, 0xc7, 0x8a, 0xd5, 0x8c, + 0x10, 0xd7, 0xd8, 0xaf, 0x81, 0x5c, 0xe5, 0xb0, 0x0e, 0x27, 0x1a, 0xe0, 0xe2, 0xb9, 0x4d, 0x5f, + 0xa9, 0x1e, 0xca, 0xc2, 0x8c, 0x5f, 0x7a, 0xb9, 0xd5, 0x45, 0x2f, 0xe8, 0xaf, 0x51, 0xb3, 0x22, + 0x1a, 0xb5, 0x6f, 0x9d, 0xd9, 0x1f, 0x75, 0xe4, 0xd0, 0xa8, 0xd3, 0x77, 0x74, 0x99, 0x89, 0x18, + 0x5d, 0xd0, 0x33, 0x65, 0xd1, 0xfb, 0xb5, 0xf8, 0xae, 0x95, 0xd4, 0xe6, 0x91, 0x3c, 0x58, 0x08, + 0xde, 0xf2, 0x35, 0xb8, 0x56, 0xe9, 0x2b, 0xc9, 0xfb, 0x25, 0x38, 0xb6, 0xbf, 0x33, 0xff, 0x31, + 0xde, 0x0b, 0xcd, 0xad, 0x53, 0xd7, 0xf7, 0x42, 0x23, 0x6f, 0xfc, 0x26, 0x5d, 0x6c, 0x48, 0x11, + 0xce, 0xde, 0x1b, 0xdc, 0x89, 0x8b, 0x05, 0x0d, 0x11, 0x24, 0x9a, 0xbe, 0x00, 0x7f, 0x55, 0x86, + 0xa9, 0x1a, 0x76, 0x56, 0xf5, 0x4b, 0xd6, 0xae, 0x83, 0x74, 0xd1, 0xed, 0xb9, 0x27, 0x43, 0xbe, + 0x4d, 0x7e, 0x21, 0x1d, 0x4c, 0x38, 0x02, 0x67, 0x78, 0x7f, 0x8b, 0xf8, 0xfe, 0x50, 0xd2, 0x1a, + 0xcb, 0xcf, 0xc7, 0x72, 0x11, 0xd9, 0x1d, 0xf5, 0xb9, 0x1b, 0xc9, 0xd6, 0x4e, 0xa2, 0xbd, 0xd3, + 0xa8, 0xa2, 0xd3, 0x87, 0xe5, 0xd9, 0x32, 0xcc, 0xd6, 0xb0, 0x53, 0xee, 0x2e, 0xe9, 0x7b, 0x96, + 0x6d, 0x38, 0x38, 0x7c, 0x6f, 0x69, 0x3c, 0x34, 0xa7, 0x01, 0x0c, 0xff, 0x37, 0x16, 0x61, 0x2a, + 0x94, 0x82, 0x7e, 0x2b, 0xa9, 0xa3, 0x10, 0xc7, 0xc7, 0x48, 0x40, 0x48, 0xe4, 0x63, 0x11, 0x57, + 0x7c, 0xfa, 0x40, 0x7c, 0x41, 0x62, 0x40, 0x14, 0xed, 0xe6, 0xb6, 0xb1, 0x87, 0x5b, 0x09, 0x81, + 0xf0, 0x7e, 0x0b, 0x80, 0xf0, 0x09, 0x25, 0x76, 0x5f, 0xe1, 0xf8, 0x18, 0x85, 0xfb, 0x4a, 0x1c, + 0xc1, 0xb1, 0x04, 0x89, 0x72, 0xbb, 0x1e, 0xb6, 0x9e, 0x79, 0x97, 0xa8, 0x58, 0x03, 0x93, 0x4d, + 0x0a, 0x9b, 0x6c, 0x43, 0x75, 0x2c, 0xb4, 0xec, 0x41, 0x3a, 0x9d, 0x4d, 0xa3, 0x63, 0xe9, 0x5b, + 0x74, 0xfa, 0x42, 0x7f, 0xb7, 0x0c, 0x27, 0xfc, 0xe8, 0x29, 0x35, 0xec, 0x2c, 0xea, 0xdd, 0xed, + 0xf3, 0x96, 0x6e, 0xb7, 0x50, 0x69, 0x04, 0x27, 0xfe, 0xd0, 0xe7, 0xc3, 0x20, 0x54, 0x78, 0x10, + 0xfa, 0xba, 0x8a, 0xf6, 0xe5, 0x65, 0x14, 0x9d, 0x4c, 0xac, 0x37, 0xeb, 0xef, 0xf8, 0x60, 0xfd, + 0x14, 0x07, 0xd6, 0x9d, 0xc3, 0xb2, 0x98, 0x3e, 0x70, 0xbf, 0x41, 0x47, 0x84, 0x90, 0x57, 0xf3, + 0x7d, 0xa2, 0x80, 0x45, 0x78, 0xb5, 0xca, 0x91, 0x5e, 0xad, 0x43, 0x8d, 0x11, 0x03, 0x3d, 0x92, + 0xd3, 0x1d, 0x23, 0x0e, 0xd1, 0xdb, 0xf8, 0xed, 0x32, 0x14, 0x48, 0xf8, 0xac, 0x90, 0xc7, 0x37, + 0xba, 0x5f, 0x14, 0x9d, 0x7d, 0xde, 0xe5, 0x13, 0x49, 0xbd, 0xcb, 0xd1, 0xdb, 0x92, 0xfa, 0x90, + 0xf7, 0x72, 0x3b, 0x12, 0xc4, 0x12, 0xb9, 0x88, 0x0f, 0xe0, 0x20, 0x7d, 0xd0, 0x7e, 0x49, 0x06, + 0x70, 0x1b, 0x34, 0x3b, 0xfb, 0xf0, 0x34, 0x51, 0xb8, 0x6e, 0x0e, 0xfb, 0xd5, 0xbb, 0x40, 0x9d, + 0xe8, 0x01, 0x8a, 0x52, 0x0c, 0x4e, 0x55, 0x3c, 0x9c, 0xd4, 0xb7, 0x32, 0xe0, 0x6a, 0x24, 0xb0, + 0x24, 0xf2, 0xb6, 0x8c, 0x2c, 0x3b, 0x7d, 0x40, 0xfe, 0x87, 0x04, 0xb9, 0xba, 0x55, 0xc3, 0xce, + 0xc1, 0x4d, 0x81, 0xc4, 0xc7, 0xf6, 0x49, 0xb9, 0xa3, 0x38, 0xb6, 0xdf, 0x8f, 0xd0, 0x18, 0xa2, + 0x91, 0x49, 0x30, 0x53, 0xb7, 0x4a, 0xfe, 0xe2, 0x94, 0xb8, 0xaf, 0xaa, 0xf8, 0x1d, 0xe1, 0x7e, + 0x05, 0x83, 0x62, 0x0e, 0x74, 0x47, 0xf8, 0x60, 0x7a, 0xe9, 0xcb, 0xed, 0x36, 0x38, 0xba, 0x61, + 0xb6, 0x2c, 0x0d, 0xb7, 0x2c, 0xb6, 0xd2, 0xad, 0x28, 0x90, 0xdd, 0x35, 0x5b, 0x16, 0x61, 0x39, + 0xa7, 0x91, 0x67, 0x37, 0xcd, 0xc6, 0x2d, 0x8b, 0xf9, 0x06, 0x90, 0x67, 0xf4, 0x35, 0x19, 0xb2, + 0xee, 0xbf, 0xe2, 0xa2, 0x7e, 0xbb, 0x9c, 0x30, 0x10, 0x81, 0x4b, 0x7e, 0x24, 0x96, 0xd0, 0x5d, + 0xa1, 0xb5, 0x7f, 0xea, 0xc1, 0x7a, 0x6d, 0x54, 0x79, 0x21, 0x51, 0x04, 0x6b, 0xfe, 0xca, 0x29, + 0x98, 0x38, 0xdf, 0xb6, 0x9a, 0x17, 0x82, 0xf3, 0xf2, 0xec, 0x55, 0xb9, 0x11, 0x72, 0xb6, 0x6e, + 0x6e, 0x61, 0xb6, 0xa7, 0x70, 0xbc, 0xa7, 0x2f, 0x24, 0x5e, 0x2f, 0x1a, 0xcd, 0x82, 0xde, 0x96, + 0x24, 0x04, 0x42, 0x9f, 0xca, 0x27, 0xd3, 0x87, 0xc5, 0x21, 0x4e, 0x96, 0x15, 0x60, 0xa6, 0x54, + 0xa4, 0xb7, 0xf1, 0xaf, 0x55, 0xcf, 0xaa, 0x05, 0x99, 0xc0, 0xec, 0xca, 0x24, 0x45, 0x98, 0x5d, + 0xf2, 0x3f, 0xb2, 0x30, 0xf7, 0xa9, 0xfc, 0x61, 0xc0, 0xfc, 0x09, 0x09, 0x66, 0x57, 0x8d, 0xae, + 0x13, 0xe5, 0xed, 0x1f, 0x13, 0x3d, 0xf7, 0x85, 0x49, 0x4d, 0x65, 0xae, 0x1c, 0xe1, 0xb0, 0xb9, + 0x89, 0xcc, 0xe1, 0xb8, 0x22, 0xc6, 0x73, 0x2c, 0x85, 0x70, 0x40, 0x6f, 0xd0, 0x16, 0x96, 0x64, + 0x62, 0x43, 0x29, 0x28, 0x64, 0xfc, 0x86, 0x52, 0x64, 0xd9, 0xe9, 0xcb, 0xf7, 0x6b, 0x12, 0x1c, + 0x73, 0x8b, 0x8f, 0x5b, 0x96, 0x8a, 0x16, 0xf3, 0xc0, 0x65, 0xa9, 0xc4, 0x2b, 0xe3, 0xfb, 0x78, + 0x19, 0xc5, 0xca, 0xf8, 0x20, 0xa2, 0x63, 0x16, 0x73, 0xc4, 0x32, 0xec, 0x20, 0x31, 0xc7, 0x2c, + 0xc3, 0x0e, 0x2f, 0xe6, 0xf8, 0xa5, 0xd8, 0x21, 0xc5, 0x7c, 0x68, 0x0b, 0xac, 0xbf, 0x29, 0xfb, + 0x62, 0x8e, 0x5c, 0xdb, 0x88, 0x11, 0x73, 0xe2, 0x13, 0xbb, 0xfc, 0xa5, 0xe4, 0x09, 0x04, 0x3f, + 0xe2, 0xf5, 0x8d, 0x61, 0x60, 0x3a, 0xc4, 0x35, 0x8e, 0x97, 0xc9, 0x30, 0xc7, 0xb8, 0xe8, 0x3f, + 0x65, 0x8e, 0xc1, 0x28, 0xf1, 0x94, 0x39, 0xf1, 0x19, 0x20, 0x9e, 0xb3, 0xf1, 0x9f, 0x01, 0x8a, + 0x2d, 0x3f, 0x7d, 0x70, 0xbe, 0x9e, 0x85, 0x93, 0x2e, 0x0b, 0x6b, 0x56, 0xcb, 0xd8, 0xbc, 0x44, + 0xb9, 0x38, 0xab, 0xb7, 0x77, 0x71, 0x17, 0xbd, 0x57, 0x12, 0x45, 0xe9, 0x3f, 0x03, 0x58, 0x1d, + 0x6c, 0xd3, 0x40, 0x6a, 0x0c, 0xa8, 0x3b, 0xa2, 0x2a, 0xbb, 0xbf, 0x24, 0xff, 0x32, 0x99, 0xaa, + 0x47, 0x44, 0x0b, 0xd1, 0x73, 0xad, 0xc2, 0x29, 0xff, 0x4b, 0xaf, 0x83, 0x47, 0x66, 0xbf, 0x83, + 0xc7, 0x0d, 0x20, 0xeb, 0xad, 0x96, 0x0f, 0x55, 0xef, 0x66, 0x36, 0x29, 0x53, 0x73, 0xb3, 0xb8, + 0x39, 0xbb, 0x38, 0x38, 0x9a, 0x17, 0x91, 0xb3, 0x8b, 0x1d, 0x65, 0x1e, 0xf2, 0xf4, 0xe6, 0x65, + 0x7f, 0x45, 0xbf, 0x7f, 0x66, 0x96, 0x8b, 0x37, 0xed, 0xaa, 0xbc, 0x1a, 0xde, 0x96, 0x48, 0x32, + 0xfd, 0xfa, 0xe9, 0xc0, 0x4e, 0xd6, 0x38, 0x05, 0x7b, 0xea, 0xd0, 0x94, 0xc7, 0xb3, 0x1b, 0x56, + 0xec, 0x74, 0xda, 0x97, 0xea, 0x2c, 0xf8, 0x4a, 0xa2, 0xdd, 0xb0, 0x50, 0x0c, 0x17, 0xa9, 0x37, + 0x86, 0x4b, 0xf2, 0xdd, 0x30, 0x8e, 0x8f, 0x51, 0xec, 0x86, 0xc5, 0x11, 0x4c, 0x5f, 0xb4, 0x6f, + 0xc9, 0x51, 0xab, 0x99, 0xc5, 0xf6, 0xff, 0xa3, 0xfe, 0x87, 0xd0, 0x80, 0x77, 0x76, 0xe9, 0x17, + 0xf6, 0x3f, 0xf6, 0x4e, 0x13, 0xe5, 0x89, 0x90, 0xdf, 0xb4, 0xec, 0x1d, 0xdd, 0xdb, 0xb8, 0xef, + 0x3d, 0x29, 0xc2, 0xe2, 0xe9, 0x2f, 0x91, 0x3c, 0x1a, 0xcb, 0xeb, 0xce, 0x47, 0x9e, 0x61, 0x74, + 0x58, 0xd4, 0x45, 0xf7, 0x51, 0xb9, 0x0e, 0x66, 0x59, 0xf0, 0xc5, 0x0a, 0xee, 0x3a, 0xb8, 0xc5, + 0x22, 0x56, 0xf0, 0x89, 0xca, 0x19, 0x98, 0x61, 0x09, 0x4b, 0x46, 0x1b, 0x77, 0x59, 0xd0, 0x0a, + 0x2e, 0x4d, 0x39, 0x09, 0x79, 0xa3, 0x7b, 0x4f, 0xd7, 0x32, 0x89, 0xff, 0xff, 0xa4, 0xc6, 0xde, + 0x94, 0x1b, 0xe0, 0x28, 0xcb, 0xe7, 0x1b, 0xab, 0xf4, 0xc0, 0x4e, 0x6f, 0xb2, 0xab, 0x5a, 0xa6, + 0xb5, 0x6e, 0x5b, 0x5b, 0x36, 0xee, 0x76, 0xc9, 0xa9, 0xa9, 0x49, 0x2d, 0x94, 0x82, 0x3e, 0x3b, + 0xcc, 0xc4, 0x22, 0xf1, 0x3d, 0x07, 0x2e, 0x4a, 0xbb, 0xcd, 0x26, 0xc6, 0x2d, 0x76, 0xf2, 0xc9, + 0x7b, 0x4d, 0x78, 0x03, 0x42, 0xe2, 0x69, 0xc8, 0x21, 0x5d, 0x81, 0xf0, 0xa1, 0x13, 0x90, 0xa7, + 0xd7, 0x89, 0xa1, 0x97, 0xcc, 0xf5, 0x55, 0xd6, 0x39, 0x5e, 0x59, 0x37, 0x60, 0xc6, 0xb4, 0xdc, + 0xe2, 0xd6, 0x75, 0x5b, 0xdf, 0xe9, 0xc6, 0xad, 0x32, 0x52, 0xba, 0xfe, 0x90, 0x52, 0x09, 0xfd, + 0xb6, 0x72, 0x44, 0xe3, 0xc8, 0x28, 0xff, 0x1b, 0x1c, 0x3d, 0xcf, 0x22, 0x04, 0x74, 0x19, 0x65, + 0x29, 0xda, 0x07, 0xaf, 0x87, 0xf2, 0x02, 0xff, 0xe7, 0xca, 0x11, 0xad, 0x97, 0x98, 0xf2, 0x9f, + 0x60, 0xce, 0x7d, 0x6d, 0x59, 0x17, 0x3d, 0xc6, 0xe5, 0x68, 0x43, 0xa4, 0x87, 0xfc, 0x1a, 0xf7, + 0xe3, 0xca, 0x11, 0xad, 0x87, 0x94, 0x52, 0x05, 0xd8, 0x76, 0x76, 0xda, 0x8c, 0x70, 0x36, 0x5a, + 0x25, 0x7b, 0x08, 0xaf, 0xf8, 0x3f, 0xad, 0x1c, 0xd1, 0x42, 0x24, 0x94, 0x55, 0x98, 0x72, 0x1e, + 0x70, 0x18, 0xbd, 0x5c, 0xf4, 0xe6, 0x77, 0x0f, 0xbd, 0xba, 0xf7, 0xcf, 0xca, 0x11, 0x2d, 0x20, + 0xa0, 0x94, 0x61, 0xb2, 0x73, 0x9e, 0x11, 0xcb, 0xf7, 0x89, 0x36, 0xdf, 0x9f, 0xd8, 0xfa, 0x79, + 0x9f, 0x96, 0xff, 0xbb, 0xcb, 0x58, 0xb3, 0xbb, 0xc7, 0x68, 0x4d, 0x08, 0x33, 0x56, 0xf2, 0xfe, + 0x71, 0x19, 0xf3, 0x09, 0x28, 0x65, 0x98, 0xea, 0x9a, 0x7a, 0xa7, 0xbb, 0x6d, 0x39, 0xdd, 0x53, + 0x93, 0x3d, 0x7e, 0x92, 0xd1, 0xd4, 0x6a, 0xec, 0x1f, 0x2d, 0xf8, 0x5b, 0x79, 0x22, 0x9c, 0xd8, + 0x25, 0xd7, 0xb2, 0xab, 0x0f, 0x18, 0x5d, 0xc7, 0x30, 0xb7, 0xbc, 0x18, 0xb3, 0xb4, 0xb7, 0xe9, + 0xff, 0x51, 0x99, 0x67, 0x27, 0xa6, 0x80, 0xb4, 0x4d, 0xd4, 0xbb, 0x59, 0x47, 0x8b, 0x0d, 0x1d, + 0x94, 0x7a, 0x0a, 0x64, 0xdd, 0x4f, 0xa4, 0x77, 0x9a, 0xeb, 0xbf, 0x10, 0xd8, 0xab, 0x3b, 0xa4, + 0x01, 0xbb, 0x3f, 0xf5, 0x74, 0x70, 0x33, 0xbd, 0x1d, 0x9c, 0xdb, 0xc0, 0x8d, 0xee, 0x9a, 0xb1, + 0x45, 0xad, 0x2b, 0xe6, 0x0f, 0x1f, 0x4e, 0xa2, 0xb3, 0xd1, 0x0a, 0xbe, 0x48, 0x6f, 0xd0, 0x38, + 0xea, 0xcd, 0x46, 0xbd, 0x14, 0x74, 0x3d, 0xcc, 0x84, 0x1b, 0x19, 0xbd, 0x93, 0xd4, 0x08, 0x6c, + 0x33, 0xf6, 0x86, 0xae, 0x83, 0x39, 0x5e, 0xa7, 0x43, 0x43, 0x90, 0xec, 0x75, 0x85, 0xe8, 0x5a, + 0x38, 0xda, 0xd3, 0xb0, 0xbc, 0x98, 0x23, 0x99, 0x20, 0xe6, 0xc8, 0x35, 0x00, 0x81, 0x16, 0xf7, + 0x25, 0x73, 0x35, 0x4c, 0xf9, 0x7a, 0xd9, 0x37, 0xc3, 0x57, 0x32, 0x30, 0xe9, 0x29, 0x5b, 0xbf, + 0x0c, 0xee, 0xf8, 0x63, 0x86, 0x36, 0x18, 0xd8, 0x34, 0x9c, 0x4b, 0x73, 0xc7, 0x99, 0xc0, 0xad, + 0xb7, 0x6e, 0x38, 0x6d, 0xef, 0x68, 0x5c, 0x6f, 0xb2, 0xb2, 0x0e, 0x60, 0x10, 0x8c, 0xea, 0xc1, + 0x59, 0xb9, 0x5b, 0x12, 0xb4, 0x07, 0xaa, 0x0f, 0x21, 0x1a, 0x67, 0x7e, 0x8c, 0x1d, 0x64, 0x9b, + 0x82, 0x1c, 0x0d, 0xb4, 0x7e, 0x44, 0x99, 0x03, 0x50, 0x9f, 0xb6, 0xae, 0x6a, 0x65, 0xb5, 0x52, + 0x52, 0x0b, 0x19, 0xf4, 0x72, 0x09, 0xa6, 0xfc, 0x46, 0xd0, 0xb7, 0x92, 0x2a, 0x53, 0xad, 0x81, + 0xd7, 0x3e, 0xee, 0x6f, 0x54, 0x61, 0x25, 0x7b, 0x32, 0x5c, 0xbe, 0xdb, 0xc5, 0x4b, 0x86, 0xdd, + 0x75, 0x34, 0xeb, 0xe2, 0x92, 0x65, 0xfb, 0x51, 0x95, 0x59, 0x84, 0xd3, 0xa8, 0xcf, 0xae, 0xc5, + 0xd1, 0xc2, 0xe4, 0xd0, 0x14, 0xb6, 0xd9, 0xca, 0x71, 0x90, 0xe0, 0xd2, 0x75, 0x6c, 0xdd, 0xec, + 0x76, 0xac, 0x2e, 0xd6, 0xac, 0x8b, 0xdd, 0xa2, 0xd9, 0x2a, 0x59, 0xed, 0xdd, 0x1d, 0xb3, 0xcb, + 0x6c, 0x86, 0xa8, 0xcf, 0xae, 0x74, 0xc8, 0xa5, 0xae, 0x73, 0x00, 0xa5, 0xea, 0xea, 0xaa, 0x5a, + 0xaa, 0x97, 0xab, 0x95, 0xc2, 0x11, 0x57, 0x5a, 0xf5, 0xe2, 0xc2, 0xaa, 0x2b, 0x9d, 0x9f, 0x81, + 0x49, 0xaf, 0x4d, 0xb3, 0x30, 0x29, 0x19, 0x2f, 0x4c, 0x8a, 0x52, 0x84, 0x49, 0xaf, 0x95, 0xb3, + 0x11, 0xe1, 0xd1, 0xbd, 0xc7, 0x62, 0x77, 0x74, 0xdb, 0x21, 0xfe, 0xd4, 0x1e, 0x91, 0x05, 0xbd, + 0x8b, 0x35, 0xff, 0xb7, 0x33, 0x8f, 0x63, 0x1c, 0x28, 0x30, 0x57, 0x5c, 0x5d, 0x6d, 0x54, 0xb5, + 0x46, 0xa5, 0x5a, 0x5f, 0x29, 0x57, 0x96, 0xe9, 0x08, 0x59, 0x5e, 0xae, 0x54, 0x35, 0x95, 0x0e, + 0x90, 0xb5, 0x42, 0x86, 0x5e, 0x2a, 0xbc, 0x30, 0x09, 0xf9, 0x0e, 0x91, 0x2e, 0xfa, 0xa2, 0x9c, + 0xf0, 0x3c, 0xbc, 0x8f, 0x53, 0xc4, 0xb5, 0xa7, 0x9c, 0x4f, 0xba, 0xd4, 0xe7, 0xcc, 0xe8, 0x19, + 0x98, 0xa1, 0xb6, 0x5e, 0x97, 0x2c, 0xef, 0x13, 0xe4, 0x64, 0x8d, 0x4b, 0x43, 0x1f, 0x91, 0x12, + 0x1c, 0x92, 0xef, 0xcb, 0x51, 0x32, 0xe3, 0xe2, 0xcf, 0x33, 0xc3, 0x5d, 0x4b, 0x50, 0xae, 0xd4, + 0x55, 0xad, 0x52, 0x5c, 0x65, 0x59, 0x64, 0xe5, 0x14, 0x1c, 0xaf, 0x54, 0x59, 0xcc, 0xbf, 0x5a, + 0xa3, 0x5e, 0x6d, 0x94, 0xd7, 0xd6, 0xab, 0x5a, 0xbd, 0x90, 0x53, 0x4e, 0x82, 0x42, 0x9f, 0x1b, + 0xe5, 0x5a, 0xa3, 0x54, 0xac, 0x94, 0xd4, 0x55, 0x75, 0xb1, 0x90, 0x57, 0x1e, 0x03, 0xd7, 0xd2, + 0x6b, 0x6e, 0xaa, 0x4b, 0x0d, 0xad, 0x7a, 0xae, 0xe6, 0x22, 0xa8, 0xa9, 0xab, 0x45, 0x57, 0x91, + 0x42, 0x97, 0x0b, 0x4f, 0x28, 0x97, 0xc1, 0x51, 0x72, 0x71, 0xf8, 0x6a, 0xb5, 0xb8, 0xc8, 0xca, + 0x9b, 0x54, 0xae, 0x82, 0x53, 0xe5, 0x4a, 0x6d, 0x63, 0x69, 0xa9, 0x5c, 0x2a, 0xab, 0x95, 0x7a, + 0x63, 0x5d, 0xd5, 0xd6, 0xca, 0xb5, 0x9a, 0xfb, 0x6f, 0x61, 0x8a, 0x5c, 0xdd, 0x4a, 0xfb, 0x4c, + 0xf4, 0x1e, 0x19, 0x66, 0xcf, 0xea, 0x6d, 0xc3, 0x1d, 0x28, 0xc8, 0x9d, 0xce, 0x3d, 0xc7, 0x49, + 0x1c, 0x72, 0xf7, 0x33, 0x73, 0x48, 0x27, 0x2f, 0xe8, 0xe7, 0xe5, 0x84, 0xc7, 0x49, 0x18, 0x10, + 0xb4, 0xc4, 0x79, 0xae, 0xb4, 0x88, 0xc9, 0xcf, 0x6b, 0xa5, 0x04, 0xc7, 0x49, 0xc4, 0xc9, 0x27, + 0x03, 0xff, 0x15, 0xa3, 0x02, 0xbf, 0x00, 0x33, 0x1b, 0x95, 0xe2, 0x46, 0x7d, 0xa5, 0xaa, 0x95, + 0x7f, 0x9a, 0x44, 0x23, 0x9f, 0x85, 0xa9, 0xa5, 0xaa, 0xb6, 0x50, 0x5e, 0x5c, 0x54, 0x2b, 0x85, + 0x9c, 0x72, 0x39, 0x5c, 0x56, 0x53, 0xb5, 0xb3, 0xe5, 0x92, 0xda, 0xd8, 0xa8, 0x14, 0xcf, 0x16, + 0xcb, 0xab, 0xa4, 0x8f, 0xc8, 0xc7, 0xdc, 0x47, 0x3d, 0x81, 0x7e, 0x36, 0x0b, 0x40, 0xab, 0x4e, + 0x2e, 0xe3, 0x09, 0xdd, 0x5a, 0xfc, 0x17, 0x49, 0x27, 0x0d, 0x01, 0x99, 0x88, 0xf6, 0x5b, 0x86, + 0x49, 0x9b, 0x7d, 0x60, 0xcb, 0x2b, 0x83, 0xe8, 0xd0, 0x47, 0x8f, 0x9a, 0xe6, 0xff, 0x8e, 0xde, + 0x9b, 0x64, 0x8e, 0x10, 0xc9, 0x58, 0x32, 0x24, 0x97, 0x46, 0x03, 0x24, 0x7a, 0x41, 0x06, 0xe6, + 0xf8, 0x8a, 0xb9, 0x95, 0x20, 0xc6, 0x94, 0x58, 0x25, 0xf8, 0x9f, 0x43, 0x46, 0xd6, 0x99, 0x27, + 0xb0, 0xe1, 0x14, 0xbc, 0x96, 0x49, 0x4f, 0x86, 0x7b, 0x16, 0x4b, 0x21, 0xe3, 0x32, 0xef, 0x1a, + 0x1d, 0x05, 0x49, 0x99, 0x00, 0xb9, 0xfe, 0x80, 0x53, 0x90, 0xd1, 0x57, 0x64, 0x98, 0xe5, 0xae, + 0x45, 0x46, 0xaf, 0xcd, 0x88, 0x5c, 0x59, 0x1a, 0xba, 0x70, 0x39, 0x73, 0xd0, 0x0b, 0x97, 0xcf, + 0xdc, 0x0c, 0x13, 0x2c, 0x8d, 0xc8, 0xb7, 0x5a, 0x71, 0x4d, 0x81, 0xa3, 0x30, 0xbd, 0xac, 0xd6, + 0x1b, 0xb5, 0x7a, 0x51, 0xab, 0xab, 0x8b, 0x85, 0x8c, 0x3b, 0xf0, 0xa9, 0x6b, 0xeb, 0xf5, 0xfb, + 0x0a, 0x52, 0x72, 0x0f, 0xbd, 0x5e, 0x46, 0xc6, 0xec, 0xa1, 0x17, 0x57, 0x7c, 0xfa, 0x73, 0xd5, + 0x4f, 0xcb, 0x50, 0xa0, 0x1c, 0xa8, 0x0f, 0x74, 0xb0, 0x6d, 0x60, 0xb3, 0x89, 0xd1, 0x05, 0x91, + 0x88, 0xa0, 0xfb, 0x62, 0xe5, 0x91, 0xfe, 0x3c, 0x64, 0x25, 0xd2, 0x97, 0x1e, 0x03, 0x3b, 0xbb, + 0xcf, 0xc0, 0xfe, 0x54, 0x52, 0x17, 0xbd, 0x5e, 0x76, 0x47, 0x02, 0xd9, 0xc7, 0x93, 0xb8, 0xe8, + 0x0d, 0xe0, 0x60, 0x2c, 0x81, 0x7e, 0x23, 0xc6, 0xdf, 0x82, 0x8c, 0x9e, 0x2f, 0xc3, 0xd1, 0x45, + 0xdd, 0xc1, 0x0b, 0x97, 0xea, 0xde, 0xb5, 0x85, 0x11, 0x57, 0x0d, 0x67, 0xf6, 0x5d, 0x35, 0x1c, + 0xdc, 0x7c, 0x28, 0xf5, 0xdc, 0x7c, 0x88, 0xde, 0x99, 0xf4, 0x50, 0x5f, 0x0f, 0x0f, 0x23, 0x8b, + 0xc6, 0x9b, 0xec, 0xb0, 0x5e, 0x3c, 0x17, 0x63, 0xb8, 0xf9, 0x7f, 0x0a, 0x0a, 0x94, 0x95, 0x90, + 0x17, 0xda, 0xaf, 0xb2, 0xdb, 0xb9, 0x1b, 0x09, 0x82, 0xfe, 0x79, 0x61, 0x14, 0x24, 0x3e, 0x8c, + 0x02, 0xb7, 0xa8, 0x29, 0xf7, 0x7a, 0x0e, 0x24, 0xed, 0x0c, 0x43, 0x2e, 0x67, 0xd1, 0x71, 0x56, + 0xd3, 0xeb, 0x0c, 0x63, 0x8b, 0x1f, 0xcf, 0x0d, 0xb2, 0xec, 0x9e, 0x47, 0x55, 0x14, 0x99, 0xf8, + 0x8b, 0xb2, 0x93, 0xfa, 0x1f, 0x73, 0x2e, 0x7f, 0x31, 0xb7, 0x47, 0xa7, 0xe7, 0x7f, 0x3c, 0x88, + 0x83, 0xf4, 0x51, 0xf8, 0xbe, 0x04, 0xd9, 0x9a, 0x65, 0x3b, 0xa3, 0xc2, 0x20, 0xe9, 0x9e, 0x69, + 0x48, 0x02, 0xb5, 0xe8, 0x39, 0x67, 0x7a, 0x7b, 0xa6, 0xf1, 0xe5, 0x8f, 0x21, 0x6e, 0xe2, 0x51, + 0x98, 0xa3, 0x9c, 0xf8, 0x97, 0x8a, 0x7c, 0x4f, 0xa2, 0xfd, 0xd5, 0xbd, 0xa2, 0x88, 0x9c, 0x81, + 0x99, 0xd0, 0x9e, 0xa5, 0x07, 0x0a, 0x97, 0x86, 0xde, 0x10, 0xc6, 0x65, 0x91, 0xc7, 0xa5, 0xdf, + 0x8c, 0xdb, 0xbf, 0x97, 0x63, 0x54, 0x3d, 0x53, 0x92, 0x10, 0x8c, 0x31, 0x85, 0xa7, 0x8f, 0xc8, + 0x83, 0x32, 0xe4, 0x99, 0xcf, 0xd8, 0x48, 0x11, 0x48, 0xda, 0x32, 0x7c, 0x21, 0x88, 0xf9, 0x96, + 0xc9, 0xa3, 0x6e, 0x19, 0xf1, 0xe5, 0xa7, 0x8f, 0xc3, 0x0f, 0x98, 0x33, 0x64, 0x71, 0x4f, 0x37, + 0xda, 0xfa, 0xf9, 0x76, 0x82, 0xd0, 0xc7, 0x1f, 0x49, 0x78, 0xfc, 0xcb, 0xaf, 0x2a, 0x57, 0x5e, + 0x84, 0xc4, 0x7f, 0x02, 0xa6, 0x6c, 0x7f, 0x49, 0xd2, 0x3b, 0x1d, 0xdf, 0xe3, 0x88, 0xca, 0xbe, + 0x6b, 0x41, 0xce, 0x44, 0x67, 0xbd, 0x84, 0xf8, 0x19, 0xcb, 0xd9, 0x94, 0xe9, 0x62, 0xab, 0xb5, + 0x84, 0x75, 0x67, 0xd7, 0xc6, 0xad, 0x44, 0x43, 0x04, 0x2f, 0xa2, 0xa9, 0xb0, 0x24, 0xb8, 0xe0, + 0x83, 0xab, 0x3c, 0x3a, 0x4f, 0x1a, 0xd0, 0x1b, 0x78, 0xbc, 0x8c, 0xa4, 0x4b, 0x7a, 0x8b, 0x0f, + 0x49, 0x95, 0x83, 0xe4, 0x29, 0xc3, 0x31, 0x91, 0x3e, 0x20, 0xbf, 0x2e, 0xc3, 0x1c, 0xb5, 0x13, + 0x46, 0x8d, 0xc9, 0xef, 0x27, 0xf4, 0x31, 0x09, 0x5d, 0xdb, 0x14, 0x66, 0x67, 0x24, 0xb0, 0x24, + 0xf1, 0x48, 0x11, 0xe3, 0x23, 0x7d, 0x64, 0x3e, 0x9b, 0x07, 0x08, 0xf9, 0x0d, 0x7e, 0x24, 0x1f, + 0x04, 0x02, 0x44, 0x6f, 0x63, 0xf3, 0x8f, 0x1a, 0x17, 0x95, 0x3a, 0xe4, 0x13, 0xe8, 0x6f, 0x48, + 0xf1, 0x89, 0x42, 0xa3, 0xca, 0x9f, 0x27, 0xb4, 0x79, 0x99, 0xd7, 0xde, 0xc0, 0xc1, 0x7d, 0xc8, + 0x5e, 0xee, 0xa3, 0x09, 0x8c, 0xdf, 0x41, 0xac, 0x24, 0x43, 0x6d, 0x75, 0x88, 0x99, 0xfd, 0x29, + 0x38, 0xae, 0xa9, 0xc5, 0xc5, 0x6a, 0x65, 0xf5, 0xbe, 0xf0, 0x1d, 0x3e, 0x05, 0x39, 0x3c, 0x39, + 0x49, 0x05, 0xb6, 0xd7, 0x25, 0xec, 0x03, 0x79, 0x59, 0xc5, 0xde, 0x50, 0xff, 0xf1, 0x04, 0xbd, + 0x9a, 0x00, 0xd9, 0xc3, 0x44, 0xe1, 0x41, 0x08, 0x35, 0xa3, 0xe7, 0xc9, 0x50, 0x70, 0xc7, 0x43, + 0xca, 0x25, 0xbb, 0xac, 0xad, 0xca, 0xbb, 0x15, 0x76, 0xe8, 0xfe, 0x53, 0xe0, 0x56, 0xe8, 0x25, + 0x28, 0xd7, 0xc3, 0x5c, 0x73, 0x1b, 0x37, 0x2f, 0x94, 0x4d, 0x6f, 0x5f, 0x9d, 0x6e, 0xc2, 0xf6, + 0xa4, 0xf2, 0xc0, 0xdc, 0xcb, 0x03, 0xc3, 0x4f, 0xa2, 0xb9, 0x41, 0x3a, 0xcc, 0x54, 0x04, 0x2e, + 0x7f, 0xe4, 0xe3, 0x52, 0xe1, 0x70, 0xb9, 0x7d, 0x28, 0xaa, 0xc9, 0x60, 0xa9, 0x0c, 0x01, 0x0b, + 0x82, 0x93, 0xd5, 0xf5, 0x7a, 0xb9, 0x5a, 0x69, 0x6c, 0xd4, 0xd4, 0xc5, 0xc6, 0x82, 0x07, 0x4e, + 0xad, 0x20, 0xa3, 0x6f, 0x48, 0x30, 0x41, 0xd9, 0xea, 0xa2, 0xc7, 0x06, 0x10, 0x0c, 0xf4, 0xa7, + 0x44, 0x6f, 0x15, 0x8e, 0x8e, 0xe0, 0x0b, 0x82, 0x95, 0x13, 0xd1, 0x4f, 0x3d, 0x19, 0x26, 0x28, + 0xc8, 0xde, 0x8a, 0xd6, 0xe9, 0x88, 0x5e, 0x8a, 0x91, 0xd1, 0xbc, 0xec, 0x82, 0x91, 0x12, 0x06, + 0xb0, 0x91, 0xfe, 0xc8, 0xf2, 0xcc, 0x2c, 0x35, 0x83, 0xcf, 0x19, 0xce, 0x36, 0x71, 0xb7, 0x44, + 0x3f, 0x25, 0xb2, 0xbc, 0x78, 0x13, 0xe4, 0xf6, 0xdc, 0xdc, 0x03, 0x5c, 0x57, 0x69, 0x26, 0xf4, + 0x0a, 0xe1, 0xc0, 0x9c, 0x9c, 0x7e, 0xfa, 0x3c, 0x45, 0x80, 0xb3, 0x06, 0xd9, 0xb6, 0xd1, 0x75, + 0xd8, 0xf8, 0x71, 0x5b, 0x22, 0x42, 0xde, 0x43, 0xd9, 0xc1, 0x3b, 0x1a, 0x21, 0x83, 0xee, 0x81, + 0x99, 0x70, 0xaa, 0x80, 0xfb, 0xee, 0x29, 0x98, 0x60, 0xc7, 0xca, 0xd8, 0x12, 0xab, 0xf7, 0x2a, + 0xb8, 0xac, 0x29, 0x54, 0xdb, 0xf4, 0x75, 0xe0, 0xff, 0x39, 0x0a, 0x13, 0x2b, 0x46, 0xd7, 0xb1, + 0xec, 0x4b, 0xe8, 0xe1, 0x0c, 0x4c, 0x9c, 0xc5, 0x76, 0xd7, 0xb0, 0xcc, 0x7d, 0xae, 0x06, 0xd7, + 0xc0, 0x74, 0xc7, 0xc6, 0x7b, 0x86, 0xb5, 0xdb, 0x0d, 0x16, 0x67, 0xc2, 0x49, 0x0a, 0x82, 0x49, + 0x7d, 0xd7, 0xd9, 0xb6, 0xec, 0x20, 0x1a, 0x85, 0xf7, 0xae, 0x9c, 0x06, 0xa0, 0xcf, 0x15, 0x7d, + 0x07, 0x33, 0x07, 0x8a, 0x50, 0x8a, 0xa2, 0x40, 0xd6, 0x31, 0x76, 0x30, 0x0b, 0x4f, 0x4b, 0x9e, + 0x5d, 0x01, 0x93, 0x50, 0x6f, 0x2c, 0xa4, 0x9e, 0xac, 0x79, 0xaf, 0xe8, 0xf3, 0x32, 0x4c, 0x2f, + 0x63, 0x87, 0xb1, 0xda, 0x45, 0x2f, 0xcc, 0x08, 0xdd, 0x08, 0xe1, 0x8e, 0xb1, 0x6d, 0xbd, 0xeb, + 0xfd, 0xe7, 0x2f, 0xc1, 0xf2, 0x89, 0x41, 0xac, 0x5c, 0x39, 0x1c, 0x28, 0x9b, 0x04, 0x4e, 0x73, + 0xca, 0xd4, 0x2f, 0x93, 0x65, 0x66, 0x9b, 0x20, 0xfb, 0x3f, 0xa0, 0x77, 0x49, 0xa2, 0x87, 0x8e, + 0x99, 0xec, 0xe7, 0x43, 0xf5, 0x89, 0xec, 0x8e, 0x26, 0xf7, 0x58, 0x8e, 0x7d, 0x31, 0xd0, 0xc3, + 0x94, 0x18, 0x19, 0xcd, 0xcf, 0x2d, 0x78, 0x5c, 0x79, 0x30, 0x27, 0xe9, 0x6b, 0xe3, 0x77, 0x64, + 0x98, 0xae, 0x6d, 0x5b, 0x17, 0x3d, 0x39, 0xfe, 0x8c, 0x18, 0xb0, 0x57, 0xc1, 0xd4, 0x5e, 0x0f, + 0xa8, 0x41, 0x42, 0xf4, 0x1d, 0xed, 0xe8, 0xb9, 0x72, 0x52, 0x98, 0x42, 0xcc, 0x8d, 0xfc, 0x06, + 0x75, 0xe5, 0x49, 0x30, 0xc1, 0xb8, 0x66, 0x4b, 0x2e, 0xf1, 0x00, 0x7b, 0x99, 0xc3, 0x15, 0xcc, + 0xf2, 0x15, 0x4c, 0x86, 0x7c, 0x74, 0xe5, 0xd2, 0x47, 0xfe, 0x4f, 0x24, 0x12, 0xac, 0xc2, 0x03, + 0xbe, 0x34, 0x02, 0xe0, 0xd1, 0x77, 0x33, 0xa2, 0x0b, 0x93, 0xbe, 0x04, 0x7c, 0x0e, 0x0e, 0x74, + 0xdb, 0xcb, 0x40, 0x72, 0xe9, 0xcb, 0xf3, 0xe5, 0x59, 0x98, 0x59, 0x34, 0x36, 0x37, 0xfd, 0x4e, + 0xf2, 0x45, 0x82, 0x9d, 0x64, 0xb4, 0x3b, 0x80, 0x6b, 0xe7, 0xee, 0xda, 0x36, 0x36, 0xbd, 0x4a, + 0xb1, 0xe6, 0xd4, 0x93, 0xaa, 0xdc, 0x00, 0x47, 0xbd, 0x71, 0x21, 0xdc, 0x51, 0x4e, 0x69, 0xbd, + 0xc9, 0xe8, 0xdb, 0xc2, 0xbb, 0x5a, 0x9e, 0x44, 0xc3, 0x55, 0x8a, 0x68, 0x80, 0x77, 0xc0, 0xec, + 0x36, 0xcd, 0x4d, 0xa6, 0xfe, 0x5e, 0x67, 0x79, 0xb2, 0x27, 0x18, 0xf0, 0x1a, 0xee, 0x76, 0xf5, + 0x2d, 0xac, 0xf1, 0x99, 0x7b, 0x9a, 0xaf, 0x9c, 0xe4, 0x6a, 0x2b, 0xb1, 0x0d, 0x32, 0x81, 0x9a, + 0x8c, 0x41, 0x3b, 0xce, 0x40, 0x76, 0xc9, 0x68, 0x63, 0xf4, 0x0b, 0x12, 0x4c, 0x69, 0xb8, 0x69, + 0x99, 0x4d, 0xf7, 0x2d, 0xe4, 0x1c, 0xf4, 0x4f, 0x19, 0xd1, 0x2b, 0x1d, 0x5d, 0x3a, 0xf3, 0x3e, + 0x8d, 0x88, 0x76, 0x23, 0x76, 0x75, 0x63, 0x2c, 0xa9, 0x31, 0x5c, 0xc0, 0xe1, 0x4e, 0x3d, 0x36, + 0x37, 0xdb, 0x96, 0xce, 0x2d, 0x7e, 0xf5, 0x9a, 0x42, 0x37, 0x42, 0xc1, 0x3b, 0x03, 0x62, 0x39, + 0xeb, 0x86, 0x69, 0xfa, 0x87, 0x8c, 0xf7, 0xa5, 0xf3, 0xfb, 0xb6, 0xb1, 0x71, 0x5a, 0x48, 0xdd, + 0x59, 0xe9, 0x11, 0x9a, 0x7d, 0x3d, 0xcc, 0x9d, 0xbf, 0xe4, 0xe0, 0x2e, 0xcb, 0xc5, 0x8a, 0xcd, + 0x6a, 0x3d, 0xa9, 0xa1, 0x28, 0xcb, 0x71, 0xf1, 0x5c, 0x62, 0x0a, 0x4c, 0x26, 0xea, 0x95, 0x21, + 0x66, 0x80, 0xc7, 0xa1, 0x50, 0xa9, 0x2e, 0xaa, 0xc4, 0x57, 0xcd, 0xf3, 0xfe, 0xd9, 0x42, 0x2f, + 0x96, 0x61, 0x86, 0x38, 0x93, 0x78, 0x28, 0x5c, 0x2b, 0x30, 0x1f, 0x41, 0x5f, 0x12, 0xf6, 0x63, + 0x23, 0x55, 0x0e, 0x17, 0x10, 0x2d, 0xe8, 0x4d, 0xa3, 0xdd, 0x2b, 0xe8, 0x9c, 0xd6, 0x93, 0xda, + 0x07, 0x10, 0xb9, 0x2f, 0x20, 0xbf, 0x2b, 0xe4, 0xcc, 0x36, 0x88, 0xbb, 0xc3, 0x42, 0xe5, 0xf7, + 0x64, 0x98, 0x76, 0x27, 0x29, 0x1e, 0x28, 0x55, 0x0e, 0x14, 0xcb, 0x6c, 0x5f, 0x0a, 0x96, 0x45, + 0xbc, 0xd7, 0x44, 0x8d, 0xe4, 0xaf, 0x84, 0x67, 0xee, 0x44, 0x44, 0x21, 0x5e, 0xc6, 0x84, 0xdf, + 0xfb, 0x84, 0xe6, 0xf3, 0x03, 0x98, 0x3b, 0x2c, 0xf8, 0xbe, 0x96, 0x83, 0xfc, 0x46, 0x87, 0x20, + 0xf7, 0x0a, 0x59, 0x24, 0x62, 0xf9, 0xbe, 0x83, 0x0c, 0xae, 0x99, 0xd5, 0xb6, 0x9a, 0x7a, 0x7b, + 0x3d, 0x38, 0x11, 0x16, 0x24, 0x28, 0xb7, 0x33, 0xdf, 0x46, 0x7a, 0xdc, 0xee, 0xfa, 0xd8, 0x60, + 0xde, 0x44, 0x46, 0xa1, 0x43, 0x23, 0x37, 0xc1, 0xb1, 0x96, 0xd1, 0xd5, 0xcf, 0xb7, 0xb1, 0x6a, + 0x36, 0xed, 0x4b, 0x54, 0x1c, 0x6c, 0x5a, 0xb5, 0xef, 0x83, 0x72, 0x27, 0xe4, 0xba, 0xce, 0xa5, + 0x36, 0x9d, 0x27, 0x86, 0xcf, 0x98, 0x44, 0x16, 0x55, 0x73, 0xb3, 0x6b, 0xf4, 0xaf, 0xb0, 0x8b, + 0xd2, 0x84, 0xe0, 0x7d, 0xce, 0x4f, 0x80, 0xbc, 0x65, 0x1b, 0x5b, 0x06, 0xbd, 0x9f, 0x67, 0x6e, + 0x5f, 0xcc, 0x3a, 0x6a, 0x0a, 0x54, 0x49, 0x16, 0x8d, 0x65, 0x55, 0x9e, 0x04, 0x53, 0xc6, 0x8e, + 0xbe, 0x85, 0xef, 0x35, 0x4c, 0x7a, 0xa2, 0x6f, 0xee, 0xd6, 0x53, 0xfb, 0x8e, 0xcf, 0xb0, 0xef, + 0x5a, 0x90, 0x15, 0xbd, 0x4f, 0x12, 0x0d, 0xac, 0x43, 0xea, 0x46, 0x41, 0x1d, 0xcb, 0xbd, 0xd6, + 0xe8, 0xd5, 0x42, 0x21, 0x6f, 0xa2, 0xd9, 0x4a, 0x7f, 0xf0, 0xfe, 0x9c, 0x04, 0x93, 0x8b, 0xd6, + 0x45, 0x93, 0x28, 0xfa, 0x6d, 0x62, 0xb6, 0x6e, 0x9f, 0x43, 0x8e, 0xfc, 0xb5, 0x91, 0xb1, 0x27, + 0x1a, 0x48, 0x6d, 0xbd, 0x22, 0x23, 0x60, 0x88, 0x6d, 0x39, 0x82, 0x97, 0xf9, 0xc5, 0x95, 0x93, + 0xbe, 0x5c, 0xff, 0x54, 0x86, 0xec, 0xa2, 0x6d, 0x75, 0xd0, 0x5b, 0x32, 0x09, 0x5c, 0x16, 0x5a, + 0xb6, 0xd5, 0xa9, 0x93, 0xdb, 0xb8, 0x82, 0x63, 0x1c, 0xe1, 0x34, 0xe5, 0x36, 0x98, 0xec, 0x58, + 0x5d, 0xc3, 0xf1, 0xa6, 0x11, 0x73, 0xb7, 0x3e, 0xaa, 0x6f, 0x6b, 0x5e, 0x67, 0x99, 0x34, 0x3f, + 0xbb, 0xdb, 0x6b, 0x13, 0x11, 0xba, 0x72, 0x71, 0xc5, 0xe8, 0xdd, 0x48, 0xd6, 0x93, 0x8a, 0x5e, + 0x12, 0x46, 0xf2, 0x29, 0x3c, 0x92, 0x8f, 0xee, 0x23, 0x61, 0xdb, 0xea, 0x8c, 0x64, 0x93, 0xf1, + 0x95, 0x3e, 0xaa, 0x4f, 0xe5, 0x50, 0xbd, 0x51, 0xa8, 0xcc, 0xf4, 0x11, 0x7d, 0x5f, 0x16, 0x80, + 0x98, 0x19, 0x1b, 0xee, 0x04, 0x48, 0xcc, 0xc6, 0x7a, 0x76, 0x36, 0x24, 0xcb, 0x22, 0x2f, 0xcb, + 0xc7, 0x46, 0x58, 0x31, 0x84, 0x7c, 0x84, 0x44, 0x8b, 0x90, 0xdb, 0x75, 0x3f, 0x33, 0x89, 0x0a, + 0x92, 0x20, 0xaf, 0x1a, 0xfd, 0x13, 0xfd, 0x49, 0x06, 0x72, 0x24, 0x41, 0x39, 0x0d, 0x40, 0x06, + 0x76, 0x7a, 0x20, 0x28, 0x43, 0x86, 0xf0, 0x50, 0x0a, 0xd1, 0x56, 0xa3, 0xc5, 0x3e, 0x53, 0x93, + 0x39, 0x48, 0x70, 0xff, 0x26, 0xc3, 0x3d, 0xa1, 0xc5, 0x0c, 0x80, 0x50, 0x8a, 0xfb, 0x37, 0x79, + 0x5b, 0xc5, 0x9b, 0x34, 0x50, 0x72, 0x56, 0x0b, 0x12, 0xfc, 0xbf, 0x57, 0xfd, 0xeb, 0xb5, 0xbc, + 0xbf, 0x49, 0x8a, 0x3b, 0x19, 0x26, 0x6a, 0xb9, 0x10, 0x14, 0x91, 0x27, 0x99, 0x7a, 0x93, 0xd1, + 0xeb, 0x7c, 0xb5, 0x59, 0xe4, 0xd4, 0xe6, 0x96, 0x04, 0xe2, 0x4d, 0x5f, 0x79, 0xbe, 0x92, 0x83, + 0xa9, 0x8a, 0xd5, 0x62, 0xba, 0x13, 0x9a, 0x30, 0x7e, 0x3c, 0x97, 0x68, 0xc2, 0xe8, 0xd3, 0x88, + 0x50, 0x90, 0xbb, 0x79, 0x05, 0x11, 0xa3, 0x10, 0xd6, 0x0f, 0x65, 0x01, 0xf2, 0x44, 0x7b, 0xf7, + 0xdf, 0xdb, 0x14, 0x47, 0x82, 0x88, 0x56, 0x63, 0x7f, 0xfe, 0x87, 0xd3, 0xb1, 0xff, 0x06, 0x39, + 0x52, 0xc1, 0x98, 0xdd, 0x1d, 0xbe, 0xa2, 0x52, 0x7c, 0x45, 0xe5, 0xf8, 0x8a, 0x66, 0x7b, 0x2b, + 0x9a, 0x64, 0x1d, 0x20, 0x4a, 0x43, 0xd2, 0xd7, 0xf1, 0x7f, 0x9c, 0x00, 0xa8, 0xe8, 0x7b, 0xc6, + 0x16, 0xdd, 0x1d, 0xfe, 0xbc, 0x37, 0xff, 0x61, 0xfb, 0xb8, 0xbf, 0x14, 0x1a, 0x08, 0x6f, 0x83, + 0x09, 0x36, 0xee, 0xb1, 0x8a, 0x5c, 0xcd, 0x55, 0x24, 0xa0, 0x42, 0xcd, 0xd2, 0x07, 0x1c, 0xcd, + 0xcb, 0xcf, 0x5d, 0x31, 0x2b, 0xf5, 0x5c, 0x31, 0xdb, 0x7f, 0x0f, 0x22, 0xe2, 0xe2, 0x59, 0xf4, + 0x6e, 0x61, 0x8f, 0xfe, 0x10, 0x3f, 0xa1, 0x1a, 0x45, 0x34, 0xc1, 0x27, 0xc0, 0x84, 0xe5, 0x6f, + 0x68, 0xcb, 0x91, 0xeb, 0x60, 0x65, 0x73, 0xd3, 0xd2, 0xbc, 0x9c, 0x82, 0x9b, 0x5f, 0x42, 0x7c, + 0x8c, 0xe5, 0xd0, 0xcc, 0xc9, 0x65, 0x2f, 0xe8, 0x94, 0x5b, 0x8f, 0x73, 0x86, 0xb3, 0xbd, 0x6a, + 0x98, 0x17, 0xba, 0xe8, 0xbf, 0x88, 0x59, 0x90, 0x21, 0xfc, 0xa5, 0x64, 0xf8, 0xf3, 0x31, 0x3b, + 0x6a, 0x3c, 0x6a, 0x77, 0x46, 0x51, 0xe9, 0xcf, 0x6d, 0x04, 0x80, 0xb7, 0x43, 0x9e, 0x32, 0xca, + 0x3a, 0xd1, 0x33, 0x91, 0xf8, 0xf9, 0x94, 0x34, 0xf6, 0x07, 0x7a, 0x97, 0x8f, 0xe3, 0x59, 0x0e, + 0xc7, 0x85, 0x03, 0x71, 0x96, 0x3a, 0xa4, 0x67, 0x1e, 0x0f, 0x13, 0x4c, 0xd2, 0xca, 0x5c, 0xb8, + 0x15, 0x17, 0x8e, 0x28, 0x00, 0xf9, 0x35, 0x6b, 0x0f, 0xd7, 0xad, 0x42, 0xc6, 0x7d, 0x76, 0xf9, + 0xab, 0x5b, 0x05, 0x09, 0xbd, 0x6a, 0x12, 0x26, 0xfd, 0x68, 0x3f, 0x9f, 0x93, 0xa0, 0x50, 0xb2, + 0xb1, 0xee, 0xe0, 0x25, 0xdb, 0xda, 0xa1, 0x35, 0x12, 0xf7, 0x0e, 0xfd, 0x75, 0x61, 0x17, 0x0f, + 0x3f, 0x0a, 0x4f, 0x6f, 0x61, 0x11, 0x58, 0xd2, 0x45, 0x48, 0xc9, 0x5b, 0x84, 0x44, 0x6f, 0x16, + 0x72, 0xf9, 0x10, 0x2d, 0x25, 0xfd, 0xa6, 0xf6, 0x29, 0x09, 0x72, 0xa5, 0xb6, 0x65, 0xe2, 0xf0, + 0x11, 0xa6, 0x81, 0x67, 0x65, 0xfa, 0xef, 0x44, 0xa0, 0x67, 0x4a, 0xa2, 0xb6, 0x46, 0x20, 0x00, + 0xb7, 0x6c, 0x41, 0xd9, 0x8a, 0x0d, 0x52, 0xb1, 0xa4, 0xd3, 0x17, 0xe8, 0x37, 0x24, 0x98, 0xa2, + 0x71, 0x71, 0x8a, 0xed, 0x36, 0x7a, 0x54, 0x20, 0xd4, 0x3e, 0x11, 0x93, 0xd0, 0xef, 0x0a, 0xbb, + 0xe8, 0xfb, 0xb5, 0xf2, 0x69, 0x27, 0x08, 0x10, 0x94, 0xcc, 0x63, 0x5c, 0x6c, 0x2f, 0x6d, 0x20, + 0x43, 0xe9, 0x8b, 0xfa, 0x2f, 0x24, 0xd7, 0x00, 0x30, 0x2f, 0xac, 0xdb, 0x78, 0xcf, 0xc0, 0x17, + 0xd1, 0x95, 0x81, 0xb0, 0xf7, 0x07, 0xfd, 0x78, 0xa3, 0xf0, 0x22, 0x4e, 0x88, 0x64, 0xe4, 0x56, + 0xd6, 0x74, 0x3b, 0xc8, 0xc4, 0x7a, 0xf1, 0xde, 0x48, 0x2c, 0x21, 0x32, 0x5a, 0x38, 0xbb, 0xe0, + 0x9a, 0x4d, 0x34, 0x17, 0xe9, 0x0b, 0xf6, 0x83, 0x13, 0x30, 0xb9, 0x61, 0x76, 0x3b, 0x6d, 0xbd, + 0xbb, 0x8d, 0xbe, 0x27, 0x43, 0x9e, 0xde, 0x16, 0x86, 0x7e, 0x82, 0x8b, 0x2d, 0xf0, 0xf4, 0x5d, + 0x6c, 0x7b, 0x2e, 0x38, 0xf4, 0xa5, 0xff, 0x65, 0xe6, 0xe8, 0x7d, 0xb2, 0xe8, 0x24, 0xd5, 0x2b, + 0x34, 0x74, 0x6d, 0x7c, 0xff, 0xe3, 0xec, 0x1d, 0xa3, 0xe9, 0xec, 0xda, 0xfe, 0xd5, 0xd8, 0x8f, + 0x13, 0xa3, 0xb2, 0x4e, 0xff, 0xd2, 0xfc, 0xdf, 0x91, 0x0e, 0x13, 0x2c, 0x71, 0xdf, 0x76, 0xd2, + 0xfe, 0xf3, 0xb7, 0x27, 0x21, 0xaf, 0xdb, 0x8e, 0xd1, 0x75, 0xd8, 0x06, 0x2b, 0x7b, 0x73, 0xbb, + 0x4b, 0xfa, 0xb4, 0x61, 0xb7, 0xbd, 0x28, 0x24, 0x7e, 0x02, 0xfa, 0x3d, 0xa1, 0xf9, 0x63, 0x7c, + 0xcd, 0x93, 0x41, 0x7e, 0xef, 0x10, 0x6b, 0xd4, 0x97, 0xc3, 0x65, 0x5a, 0xb1, 0xae, 0x36, 0x68, + 0xd0, 0x0a, 0x3f, 0x3e, 0x45, 0x0b, 0xbd, 0x53, 0x0e, 0xad, 0xdf, 0x5d, 0xe2, 0xc6, 0x08, 0x26, + 0xc5, 0x60, 0x8c, 0xf0, 0x13, 0x62, 0x76, 0xab, 0xb9, 0x45, 0x58, 0x59, 0x7c, 0x11, 0xf6, 0xb7, + 0x85, 0x77, 0x93, 0x7c, 0x51, 0x0e, 0x58, 0x03, 0x8c, 0xbb, 0x4d, 0xe8, 0xfd, 0x42, 0x3b, 0x43, + 0x83, 0x4a, 0x3a, 0x44, 0xd8, 0xde, 0x30, 0x01, 0x13, 0xcb, 0x7a, 0xbb, 0x8d, 0xed, 0x4b, 0xee, + 0x90, 0x54, 0xf0, 0x38, 0x5c, 0xd3, 0x4d, 0x63, 0x13, 0x77, 0x9d, 0xf8, 0xce, 0xf2, 0xdd, 0xc2, + 0x91, 0x6a, 0x59, 0x19, 0xf3, 0xbd, 0xf4, 0x23, 0x64, 0x7e, 0x33, 0x64, 0x0d, 0x73, 0xd3, 0x62, + 0x5d, 0x66, 0xef, 0xaa, 0xbd, 0xf7, 0x33, 0x99, 0xba, 0x90, 0x8c, 0x82, 0xc1, 0x6a, 0x05, 0xb9, + 0x48, 0xbf, 0xe7, 0xfc, 0x9d, 0x2c, 0xcc, 0x7a, 0x4c, 0x94, 0xcd, 0x16, 0x7e, 0x20, 0xbc, 0x14, + 0xf3, 0xe2, 0xac, 0xe8, 0x71, 0xb0, 0xde, 0xfa, 0x10, 0x52, 0x11, 0x22, 0xad, 0x03, 0x34, 0x75, + 0x07, 0x6f, 0x59, 0xb6, 0xe1, 0xf7, 0x87, 0x4f, 0x4c, 0x42, 0xad, 0x44, 0xff, 0xbe, 0xa4, 0x85, + 0xe8, 0x28, 0x77, 0xc2, 0x34, 0xf6, 0xcf, 0xdf, 0x7b, 0x4b, 0x35, 0xb1, 0x78, 0x85, 0xf3, 0xa3, + 0xbf, 0x10, 0x3a, 0x75, 0x26, 0x52, 0xcd, 0x64, 0x98, 0x35, 0x86, 0x6b, 0x43, 0x1b, 0x95, 0xb5, + 0xa2, 0x56, 0x5b, 0x29, 0xae, 0xae, 0x96, 0x2b, 0xcb, 0x7e, 0xe0, 0x17, 0x05, 0xe6, 0x16, 0xab, + 0xe7, 0x2a, 0xa1, 0xc8, 0x3c, 0x59, 0xb4, 0x0e, 0x93, 0x9e, 0xbc, 0xfa, 0xf9, 0x62, 0x86, 0x65, + 0xc6, 0x7c, 0x31, 0x43, 0x49, 0xae, 0x71, 0x66, 0x34, 0x7d, 0x07, 0x1d, 0xf2, 0x8c, 0xfe, 0x58, + 0x87, 0x1c, 0x59, 0x53, 0x47, 0x6f, 0x27, 0xdb, 0x80, 0x9d, 0xb6, 0xde, 0xc4, 0x68, 0x27, 0x81, + 0x35, 0xee, 0x5d, 0x9d, 0x20, 0xed, 0xbb, 0x3a, 0x81, 0x3c, 0x32, 0xab, 0xef, 0x78, 0xbf, 0x75, + 0x7c, 0x8d, 0x66, 0xe1, 0x0f, 0x68, 0xc5, 0xee, 0xae, 0xd0, 0xe5, 0x7f, 0xc6, 0x66, 0x84, 0x4a, + 0x46, 0xf3, 0x94, 0xcc, 0x12, 0x15, 0xdb, 0x87, 0x89, 0xe3, 0x68, 0x0c, 0xd7, 0x7b, 0x67, 0x21, + 0x57, 0xeb, 0xb4, 0x0d, 0x07, 0xbd, 0x4c, 0x1a, 0x09, 0x66, 0xf4, 0xba, 0x0b, 0x79, 0xe0, 0x75, + 0x17, 0xc1, 0xae, 0x6b, 0x56, 0x60, 0xd7, 0xb5, 0x8e, 0x1f, 0x70, 0xf8, 0x5d, 0xd7, 0xdb, 0x58, + 0xf0, 0x36, 0xba, 0x67, 0xfb, 0xe8, 0x3e, 0x22, 0x25, 0xd5, 0xea, 0x13, 0x15, 0xf0, 0xcc, 0xe3, + 0x59, 0x70, 0x32, 0x80, 0xfc, 0x42, 0xb5, 0x5e, 0xaf, 0xae, 0x15, 0x8e, 0x90, 0xa8, 0x36, 0xd5, + 0x75, 0x1a, 0x2a, 0xa6, 0x5c, 0xa9, 0xa8, 0x5a, 0x41, 0x22, 0xe1, 0xd2, 0xca, 0xf5, 0x55, 0xb5, + 0x20, 0xf3, 0xb1, 0xcf, 0x63, 0xcd, 0x6f, 0xbe, 0xec, 0x34, 0xd5, 0x4b, 0xcc, 0x10, 0x8f, 0xe6, + 0x27, 0x7d, 0xe5, 0xfa, 0x35, 0x19, 0x72, 0x6b, 0xd8, 0xde, 0xc2, 0xe8, 0xe9, 0x09, 0x36, 0xf9, + 0x36, 0x0d, 0xbb, 0x4b, 0x83, 0xcb, 0x05, 0x9b, 0x7c, 0xe1, 0x34, 0xe5, 0x3a, 0x98, 0xed, 0xe2, + 0xa6, 0x65, 0xb6, 0xbc, 0x4c, 0xb4, 0x3f, 0xe2, 0x13, 0xf9, 0x7b, 0xe7, 0x05, 0x20, 0x23, 0x8c, + 0x8e, 0x64, 0xa7, 0x2e, 0x09, 0x30, 0xfd, 0x4a, 0x4d, 0x1f, 0x98, 0x6f, 0xcb, 0xee, 0x4f, 0x9d, + 0x4b, 0xe8, 0xa5, 0xc2, 0xbb, 0xaf, 0x37, 0x41, 0x9e, 0xa8, 0xa9, 0x37, 0x46, 0xf7, 0xef, 0x8f, + 0x59, 0x1e, 0x65, 0x01, 0x8e, 0x75, 0x71, 0x1b, 0x37, 0x1d, 0xdc, 0x72, 0x9b, 0xae, 0x36, 0xb0, + 0x53, 0xd8, 0x9f, 0x1d, 0xfd, 0x59, 0x18, 0xc0, 0x3b, 0x78, 0x00, 0xaf, 0xef, 0x23, 0x4a, 0xb7, + 0x42, 0xd1, 0xb6, 0xb2, 0x5b, 0x8d, 0x5a, 0xdb, 0xf2, 0x17, 0xc5, 0xbd, 0x77, 0xf7, 0xdb, 0xb6, + 0xb3, 0xd3, 0x26, 0xdf, 0xd8, 0x01, 0x03, 0xef, 0x5d, 0x99, 0x87, 0x09, 0xdd, 0xbc, 0x44, 0x3e, + 0x65, 0x63, 0x6a, 0xed, 0x65, 0x42, 0xaf, 0xf2, 0x91, 0xbf, 0x8b, 0x43, 0xfe, 0xb1, 0x62, 0xec, + 0xa6, 0x0f, 0xfc, 0xcf, 0x4f, 0x40, 0x6e, 0x5d, 0xef, 0x3a, 0x18, 0xfd, 0xdf, 0xb2, 0x28, 0xf2, + 0xd7, 0xc3, 0xdc, 0xa6, 0xd5, 0xdc, 0xed, 0xe2, 0x16, 0xdf, 0x28, 0x7b, 0x52, 0x47, 0x81, 0xb9, + 0x72, 0x23, 0x14, 0xbc, 0x44, 0x46, 0xd6, 0xdb, 0x86, 0xdf, 0x97, 0x4e, 0x22, 0x69, 0x77, 0xd7, + 0x75, 0xdb, 0xa9, 0x6e, 0x92, 0x34, 0x3f, 0x92, 0x76, 0x38, 0x91, 0x83, 0x3e, 0x1f, 0x03, 0xfd, + 0x44, 0x34, 0xf4, 0x93, 0x02, 0xd0, 0x2b, 0x45, 0x98, 0xdc, 0x34, 0xda, 0x98, 0xfc, 0x30, 0x45, + 0x7e, 0xe8, 0x37, 0x26, 0x11, 0xd9, 0xfb, 0x63, 0xd2, 0x92, 0xd1, 0xc6, 0x9a, 0xff, 0x9b, 0x37, + 0x91, 0x81, 0x60, 0x22, 0xb3, 0x4a, 0xfd, 0x69, 0x5d, 0xc3, 0xcb, 0xd4, 0x77, 0xb0, 0xb7, 0xf8, + 0x66, 0xb2, 0xc3, 0x2d, 0x2d, 0xdd, 0xd1, 0x09, 0x18, 0x33, 0x1a, 0x79, 0xe6, 0xfd, 0x42, 0xe4, + 0x5e, 0xbf, 0x90, 0xe7, 0xc8, 0xc9, 0x7a, 0x44, 0x8f, 0xd9, 0x88, 0x16, 0x75, 0xde, 0x03, 0x88, + 0x5a, 0x8a, 0xfe, 0xbb, 0x0b, 0x4c, 0x53, 0xb7, 0xb1, 0xb3, 0x1e, 0xf6, 0xc4, 0xc8, 0x69, 0x7c, + 0x22, 0x71, 0xe5, 0xeb, 0xd6, 0xf4, 0x1d, 0x4c, 0x0a, 0x2b, 0xb9, 0xdf, 0x98, 0x8b, 0xd6, 0xbe, + 0xf4, 0xa0, 0xff, 0xcd, 0x8d, 0xba, 0xff, 0xed, 0x57, 0xc7, 0xf4, 0x9b, 0xe1, 0x6b, 0xb3, 0x20, + 0x97, 0x76, 0x9d, 0x47, 0x74, 0xf7, 0xfb, 0x7d, 0x61, 0x3f, 0x17, 0xd6, 0x9f, 0x45, 0x5e, 0x34, + 0x3f, 0xa6, 0xde, 0x37, 0xa1, 0x96, 0x88, 0xf9, 0xd3, 0x44, 0xd5, 0x6d, 0x0c, 0xf7, 0x1a, 0xc8, + 0xbe, 0x83, 0xe5, 0x83, 0x99, 0x83, 0x9b, 0xe6, 0x88, 0xf6, 0x4f, 0xa1, 0x9e, 0xc1, 0x7f, 0xf7, + 0x3a, 0x9e, 0x2c, 0x17, 0xab, 0x8f, 0x6c, 0xaf, 0x13, 0x51, 0xce, 0x68, 0xf4, 0x05, 0xbd, 0x5c, + 0xd8, 0xed, 0x9c, 0x8a, 0x2d, 0xd6, 0x95, 0x30, 0x99, 0x4d, 0x25, 0x76, 0x99, 0x68, 0x4c, 0xb1, + 0xe9, 0x03, 0xf6, 0xad, 0xb0, 0xab, 0x60, 0xf1, 0xc0, 0x88, 0xa1, 0x57, 0x0b, 0x6f, 0x47, 0xd1, + 0x6a, 0x0f, 0x58, 0x2f, 0x4c, 0x26, 0x6f, 0xb1, 0xcd, 0xaa, 0xd8, 0x82, 0xd3, 0x97, 0xf8, 0x37, + 0x65, 0xc8, 0xd3, 0x2d, 0x48, 0xf4, 0xa6, 0x4c, 0x82, 0x5b, 0xd8, 0x1d, 0xde, 0x85, 0xd0, 0x7f, + 0x4f, 0xb2, 0xe6, 0xc0, 0xb9, 0x1a, 0x66, 0x13, 0xb9, 0x1a, 0xf2, 0xe7, 0x38, 0x05, 0xda, 0x11, + 0xad, 0x63, 0xca, 0xd3, 0xc9, 0x24, 0x2d, 0xac, 0x2f, 0x43, 0xe9, 0xe3, 0xfd, 0xbc, 0x1c, 0xcc, + 0xd0, 0xa2, 0xcf, 0x19, 0xad, 0x2d, 0xec, 0xa0, 0x77, 0x4a, 0x3f, 0x3c, 0xa8, 0x2b, 0x15, 0x98, + 0xb9, 0x48, 0xd8, 0x5e, 0xd5, 0x2f, 0x59, 0xbb, 0x0e, 0x5b, 0xb9, 0xb8, 0x31, 0x76, 0xdd, 0x83, + 0xd6, 0x73, 0x9e, 0xfe, 0xa1, 0x71, 0xff, 0xbb, 0x32, 0xa6, 0x0b, 0xfe, 0xd4, 0x81, 0x2b, 0x4f, + 0x8c, 0xac, 0x70, 0x92, 0x72, 0x12, 0xf2, 0x7b, 0x06, 0xbe, 0x58, 0x6e, 0x31, 0xeb, 0x96, 0xbd, + 0xa1, 0x3f, 0x10, 0xde, 0xb7, 0x0d, 0xc3, 0xcd, 0x78, 0x49, 0x57, 0x0b, 0xc5, 0x76, 0x6f, 0x07, + 0xb2, 0x35, 0x86, 0x33, 0xc5, 0xfc, 0x65, 0x9d, 0xa5, 0x04, 0x8a, 0x18, 0x65, 0x38, 0xf3, 0xa1, + 0x3c, 0x62, 0x4f, 0xac, 0x50, 0x01, 0x8c, 0xf8, 0x1e, 0x4f, 0xb1, 0xf8, 0x12, 0x03, 0x8a, 0x4e, + 0x5f, 0xf2, 0xaf, 0x93, 0x61, 0xaa, 0x86, 0x9d, 0x25, 0x03, 0xb7, 0x5b, 0x5d, 0x64, 0x1f, 0xdc, + 0x34, 0xba, 0x19, 0xf2, 0x9b, 0x84, 0xd8, 0xa0, 0x73, 0x0b, 0x2c, 0x1b, 0x7a, 0xad, 0x24, 0xba, + 0x23, 0xcc, 0x56, 0xdf, 0x3c, 0x6e, 0x47, 0x02, 0x93, 0x98, 0x47, 0x6f, 0x7c, 0xc9, 0x63, 0x08, + 0x6c, 0x2b, 0xc3, 0x0c, 0xbb, 0xdd, 0xaf, 0xd8, 0x36, 0xb6, 0x4c, 0xb4, 0x3b, 0x82, 0x16, 0xa2, + 0xdc, 0x02, 0x39, 0xdd, 0xa5, 0xc6, 0xb6, 0x5e, 0x51, 0xdf, 0xce, 0x93, 0x94, 0xa7, 0xd1, 0x8c, + 0x09, 0xc2, 0x48, 0x06, 0x8a, 0xed, 0xf1, 0x3c, 0xc6, 0x30, 0x92, 0x03, 0x0b, 0x4f, 0x1f, 0xb1, + 0x2f, 0xcb, 0x70, 0x9c, 0x31, 0x70, 0x16, 0xdb, 0x8e, 0xd1, 0xd4, 0xdb, 0x14, 0xb9, 0x17, 0x64, + 0x46, 0x01, 0xdd, 0x0a, 0xcc, 0xee, 0x85, 0xc9, 0x32, 0x08, 0xcf, 0xf4, 0x85, 0x90, 0x63, 0x40, + 0xe3, 0x7f, 0x4c, 0x10, 0x8e, 0x8f, 0x93, 0x2a, 0x47, 0x73, 0x8c, 0xe1, 0xf8, 0x84, 0x99, 0x48, + 0x1f, 0xe2, 0x97, 0xb0, 0xd0, 0x3c, 0x41, 0xf7, 0xf9, 0x79, 0x61, 0x6c, 0x37, 0x60, 0x9a, 0x60, + 0x49, 0x7f, 0x64, 0xcb, 0x10, 0x31, 0x4a, 0xec, 0xf7, 0x3b, 0xec, 0xc2, 0x30, 0xff, 0x5f, 0x2d, + 0x4c, 0x07, 0x9d, 0x03, 0x08, 0x3e, 0x85, 0x3b, 0xe9, 0x4c, 0x54, 0x27, 0x2d, 0x89, 0x75, 0xd2, + 0x6f, 0x14, 0x0e, 0x96, 0xd2, 0x9f, 0xed, 0x83, 0xab, 0x87, 0x58, 0x98, 0x8c, 0xc1, 0xa5, 0xa7, + 0xaf, 0x17, 0xaf, 0xca, 0xf6, 0x5e, 0xe3, 0xfe, 0x91, 0x91, 0xcc, 0xa7, 0xc2, 0xfd, 0x81, 0xdc, + 0xd3, 0x1f, 0x1c, 0xc0, 0x92, 0xbe, 0x01, 0x8e, 0xd2, 0x22, 0x4a, 0x3e, 0x5b, 0x39, 0x1a, 0x0a, + 0xa2, 0x27, 0x19, 0x7d, 0x74, 0x08, 0x25, 0x18, 0x74, 0xc7, 0x7c, 0x5c, 0x27, 0x97, 0xcc, 0xd8, + 0x4d, 0xaa, 0x20, 0x87, 0x77, 0x35, 0xfd, 0x37, 0xb2, 0xd4, 0xda, 0xdd, 0x20, 0x77, 0xba, 0xa1, + 0xbf, 0xcc, 0x8e, 0x62, 0x44, 0xb8, 0x1b, 0xb2, 0xc4, 0xc5, 0x5d, 0x8e, 0x5c, 0xd2, 0x08, 0x8a, + 0x0c, 0x2e, 0xdc, 0xc3, 0x0f, 0x38, 0x2b, 0x47, 0x34, 0xf2, 0xa7, 0x72, 0x23, 0x1c, 0x3d, 0xaf, + 0x37, 0x2f, 0x6c, 0xd9, 0xd6, 0x2e, 0xb9, 0xfd, 0xca, 0x62, 0xd7, 0x68, 0x91, 0xeb, 0x08, 0xf9, + 0x0f, 0xca, 0xad, 0x9e, 0xe9, 0x90, 0x1b, 0x64, 0x3a, 0xac, 0x1c, 0x61, 0xc6, 0x83, 0xf2, 0x78, + 0xbf, 0xd3, 0xc9, 0xc7, 0x76, 0x3a, 0x2b, 0x47, 0xbc, 0x6e, 0x47, 0x59, 0x84, 0xc9, 0x96, 0xb1, + 0x47, 0xb6, 0xaa, 0xc9, 0xac, 0x6b, 0xd0, 0xd1, 0xe5, 0x45, 0x63, 0x8f, 0x6e, 0x6c, 0xaf, 0x1c, + 0xd1, 0xfc, 0x3f, 0x95, 0x65, 0x98, 0x22, 0xdb, 0x02, 0x84, 0xcc, 0x64, 0xa2, 0x63, 0xc9, 0x2b, + 0x47, 0xb4, 0xe0, 0x5f, 0xd7, 0xfa, 0xc8, 0x92, 0xb3, 0x1f, 0x77, 0x79, 0xdb, 0xed, 0x99, 0x44, + 0xdb, 0xed, 0xae, 0x2c, 0xe8, 0x86, 0xfb, 0x49, 0xc8, 0x35, 0x89, 0x84, 0x25, 0x26, 0x61, 0xfa, + 0xaa, 0xdc, 0x01, 0xd9, 0x1d, 0xdd, 0xf6, 0x26, 0xcf, 0xd7, 0x0f, 0xa6, 0xbb, 0xa6, 0xdb, 0x17, + 0x5c, 0x04, 0xdd, 0xbf, 0x16, 0x26, 0x20, 0x47, 0x04, 0xe7, 0x3f, 0xa0, 0xb7, 0x64, 0xa9, 0x19, + 0x52, 0xb2, 0x4c, 0x77, 0xd8, 0xaf, 0x5b, 0xde, 0x01, 0x99, 0x3f, 0xc8, 0x8c, 0xc6, 0x82, 0xec, + 0x7b, 0xef, 0xb9, 0x1c, 0x79, 0xef, 0x79, 0xcf, 0x05, 0xbc, 0xd9, 0xde, 0x0b, 0x78, 0x83, 0xe5, + 0x83, 0xdc, 0x60, 0x47, 0x95, 0x3f, 0x1b, 0xc2, 0x74, 0xe9, 0x15, 0x44, 0xf4, 0x0c, 0xbc, 0x6d, + 0x98, 0xa1, 0x3a, 0x7b, 0xaf, 0x09, 0x3b, 0xa5, 0xa4, 0x46, 0xcd, 0x00, 0xf6, 0xd2, 0xef, 0x9b, + 0x7e, 0x2b, 0x0b, 0xa7, 0xe8, 0x35, 0xcf, 0x7b, 0xb8, 0x6e, 0xf1, 0xf7, 0x4d, 0xa2, 0x4f, 0x8e, + 0x44, 0x69, 0xfa, 0x0c, 0x38, 0x72, 0xdf, 0x01, 0x67, 0xdf, 0x21, 0xe5, 0xec, 0x80, 0x43, 0xca, + 0xb9, 0x64, 0x2b, 0x87, 0x1f, 0x08, 0xeb, 0xcf, 0x3a, 0xaf, 0x3f, 0xb7, 0x47, 0x00, 0xd4, 0x4f, + 0x2e, 0x23, 0xb1, 0x6f, 0xde, 0xee, 0x6b, 0x4a, 0x8d, 0xd3, 0x94, 0xbb, 0x86, 0x67, 0x24, 0x7d, + 0x6d, 0xf9, 0xfd, 0x2c, 0x5c, 0x16, 0x30, 0x53, 0xc1, 0x17, 0x99, 0xa2, 0x7c, 0x6e, 0x24, 0x8a, + 0x92, 0x3c, 0x06, 0x42, 0xda, 0x1a, 0xf3, 0x27, 0xc2, 0x67, 0x87, 0x7a, 0x81, 0xf2, 0x65, 0x13, + 0xa1, 0x2c, 0x27, 0x21, 0x4f, 0x7b, 0x18, 0x06, 0x0d, 0x7b, 0x4b, 0xd8, 0xdd, 0x88, 0x9d, 0x38, + 0x12, 0xe5, 0x6d, 0x0c, 0xfa, 0xc3, 0xd6, 0x35, 0xea, 0xbb, 0xb6, 0x59, 0x36, 0x1d, 0x0b, 0xfd, + 0xdc, 0x48, 0x14, 0xc7, 0xf7, 0x86, 0x93, 0x87, 0xf1, 0x86, 0x1b, 0x6a, 0x95, 0xc3, 0xab, 0xc1, + 0xa1, 0xac, 0x72, 0x44, 0x14, 0x9e, 0x3e, 0x7e, 0x6f, 0x93, 0xe1, 0x24, 0x9b, 0x6c, 0x2d, 0xf0, + 0x16, 0x22, 0xba, 0x6f, 0x14, 0x40, 0x1e, 0xf7, 0xcc, 0x24, 0x76, 0xcb, 0x19, 0x79, 0xe1, 0x4f, + 0x4a, 0xc5, 0xde, 0xef, 0xc0, 0x4d, 0x07, 0x7b, 0x38, 0x1c, 0x09, 0x52, 0x62, 0xd7, 0x3a, 0x24, + 0x60, 0x23, 0x7d, 0xcc, 0x5e, 0x24, 0x43, 0x9e, 0x5d, 0xef, 0xbf, 0x91, 0x8a, 0xc3, 0x04, 0x1f, + 0xe5, 0x59, 0x60, 0x47, 0x2e, 0xf1, 0x25, 0xf7, 0xe9, 0xed, 0xc5, 0x1d, 0xd2, 0x2d, 0xf6, 0xdf, + 0x96, 0x60, 0xba, 0x86, 0x9d, 0x92, 0x6e, 0xdb, 0x86, 0xbe, 0x35, 0x2a, 0x8f, 0x6f, 0x51, 0xef, + 0x61, 0xf4, 0x9d, 0x8c, 0xe8, 0x79, 0x1a, 0x7f, 0x21, 0xdc, 0x63, 0x35, 0x22, 0x96, 0xe0, 0xc3, + 0x42, 0x67, 0x66, 0x06, 0x51, 0x1b, 0x83, 0xc7, 0xb6, 0x04, 0x13, 0xde, 0x59, 0xbc, 0x9b, 0xb9, + 0xf3, 0x99, 0xdb, 0xce, 0x8e, 0x77, 0x0c, 0x86, 0x3c, 0xef, 0x3f, 0x03, 0x86, 0x5e, 0x99, 0xd0, + 0x51, 0x3e, 0xfe, 0x20, 0x61, 0xb2, 0x36, 0x96, 0xc4, 0x1d, 0xfe, 0xb0, 0x8e, 0x0e, 0xfe, 0xee, + 0x04, 0x5b, 0x8e, 0x5c, 0xd5, 0x1d, 0xfc, 0x00, 0xfa, 0xbc, 0x0c, 0x13, 0x35, 0xec, 0xb8, 0xe3, + 0x2d, 0x77, 0xb9, 0xe9, 0xb0, 0x1a, 0xae, 0x84, 0x56, 0x3c, 0xa6, 0xd8, 0x1a, 0xc6, 0x3d, 0x30, + 0xd5, 0xb1, 0xad, 0x26, 0xee, 0x76, 0xd9, 0xea, 0x45, 0xd8, 0x51, 0xad, 0xdf, 0xe8, 0x4f, 0x58, + 0x9b, 0x5f, 0xf7, 0xfe, 0xd1, 0x82, 0xdf, 0x93, 0x9a, 0x01, 0x94, 0x12, 0xab, 0xe0, 0xb8, 0xcd, + 0x80, 0xb8, 0xc2, 0xd3, 0x07, 0xfa, 0x33, 0x32, 0xcc, 0xd4, 0xb0, 0xe3, 0x4b, 0x31, 0xc1, 0x26, + 0x47, 0x34, 0xbc, 0x1c, 0x94, 0xf2, 0xc1, 0xa0, 0x14, 0xbf, 0x1a, 0x90, 0x97, 0xa6, 0x4f, 0x6c, + 0x8c, 0x57, 0x03, 0x8a, 0x71, 0x30, 0x86, 0xe3, 0x6b, 0x8f, 0x86, 0x29, 0xc2, 0x0b, 0x69, 0xb0, + 0xbf, 0x98, 0x0d, 0x1a, 0xef, 0x17, 0x52, 0x6a, 0xbc, 0x77, 0x42, 0x6e, 0x47, 0xb7, 0x2f, 0x74, + 0x49, 0xc3, 0x9d, 0x16, 0x31, 0xdb, 0xd7, 0xdc, 0xec, 0x1a, 0xfd, 0xab, 0xbf, 0x9f, 0x66, 0x2e, + 0x99, 0x9f, 0xe6, 0xc3, 0x52, 0xa2, 0x91, 0x90, 0xce, 0x1d, 0x46, 0xd8, 0xe4, 0x13, 0x8c, 0x9b, + 0x31, 0x65, 0xa7, 0xaf, 0x1c, 0x2f, 0x90, 0x61, 0xd2, 0x1d, 0xb7, 0x89, 0x3d, 0x7e, 0xee, 0xe0, + 0xea, 0xd0, 0xdf, 0xd0, 0x4f, 0xd8, 0x03, 0x7b, 0x12, 0x19, 0x9d, 0x79, 0x9f, 0xa0, 0x07, 0x8e, + 0x2b, 0x3c, 0x7d, 0x3c, 0xde, 0x41, 0xf1, 0x20, 0xed, 0x01, 0xbd, 0x5e, 0x06, 0x79, 0x19, 0x3b, + 0xe3, 0xb6, 0x22, 0xdf, 0x2a, 0x1c, 0xe2, 0x88, 0x13, 0x18, 0xe1, 0x79, 0x7e, 0x19, 0x8f, 0xa6, + 0x01, 0x89, 0xc5, 0x36, 0x12, 0x62, 0x20, 0x7d, 0xd4, 0xde, 0x43, 0x51, 0xa3, 0x9b, 0x0b, 0x3f, + 0x3b, 0x82, 0x5e, 0x75, 0xbc, 0x0b, 0x1f, 0x9e, 0x00, 0x09, 0x8d, 0xc3, 0x6a, 0x6f, 0xfd, 0x0a, + 0x1f, 0xcb, 0x55, 0x7c, 0xe0, 0x36, 0xf6, 0x6d, 0xdc, 0xbc, 0x80, 0x5b, 0xe8, 0x3f, 0x1d, 0x1c, + 0xba, 0x53, 0x30, 0xd1, 0xa4, 0xd4, 0x08, 0x78, 0x93, 0x9a, 0xf7, 0x9a, 0xe0, 0x5e, 0x69, 0xbe, + 0x23, 0xa2, 0xbf, 0x8f, 0xf1, 0x5e, 0x69, 0x81, 0xe2, 0xc7, 0x60, 0xb6, 0xd0, 0x59, 0x46, 0xb9, + 0x69, 0x99, 0xe8, 0xbf, 0x1e, 0x1c, 0x96, 0xab, 0x60, 0xca, 0x68, 0x5a, 0x26, 0x09, 0x43, 0xe1, + 0x1d, 0x02, 0xf2, 0x13, 0xbc, 0xaf, 0xea, 0x8e, 0x75, 0xbf, 0xc1, 0x76, 0xcd, 0x83, 0x84, 0x61, + 0x8d, 0x09, 0x97, 0xf5, 0xc3, 0x32, 0x26, 0xfa, 0x94, 0x9d, 0x3e, 0x64, 0x1f, 0x0d, 0xbc, 0xdb, + 0x68, 0x57, 0xf8, 0x88, 0x58, 0x05, 0x1e, 0x66, 0x38, 0x0b, 0xd7, 0xe2, 0x50, 0x86, 0xb3, 0x18, + 0x06, 0xc6, 0x70, 0x63, 0x45, 0x80, 0x63, 0xea, 0x6b, 0xc0, 0x07, 0x40, 0x67, 0x74, 0xe6, 0xe1, + 0x90, 0xe8, 0x1c, 0x8e, 0x89, 0xf8, 0x7e, 0x16, 0x22, 0x93, 0x59, 0x3c, 0xe8, 0xbf, 0x8d, 0x02, + 0x9c, 0xdb, 0x87, 0xf1, 0x57, 0xa0, 0xde, 0x0a, 0x09, 0x6e, 0xc4, 0xde, 0x27, 0x41, 0x97, 0xca, + 0x18, 0xef, 0x8a, 0x17, 0x29, 0x3f, 0x7d, 0x00, 0x9f, 0x2f, 0xc3, 0x1c, 0xf1, 0x11, 0x68, 0x63, + 0xdd, 0xa6, 0x1d, 0xe5, 0x48, 0x1c, 0xe5, 0xdf, 0x21, 0x1c, 0xe0, 0x87, 0x97, 0x43, 0xc0, 0xc7, + 0x48, 0xa0, 0x10, 0x8b, 0xee, 0x23, 0xc8, 0xc2, 0x58, 0xb6, 0x51, 0x0a, 0x3e, 0x0b, 0x4c, 0xc5, + 0x47, 0x83, 0x47, 0x42, 0x8f, 0x5c, 0x5e, 0x18, 0x5e, 0x63, 0x1b, 0xb3, 0x47, 0xae, 0x08, 0x13, + 0xe9, 0x63, 0xf2, 0xfa, 0x5b, 0xd8, 0x82, 0x73, 0x9d, 0x5c, 0x18, 0xff, 0xea, 0xac, 0x7f, 0xa2, + 0xed, 0x33, 0x23, 0xf1, 0xc0, 0x3c, 0x40, 0x40, 0x7c, 0x05, 0xb2, 0xb6, 0x75, 0x91, 0x2e, 0x6d, + 0xcd, 0x6a, 0xe4, 0x99, 0x5e, 0x4f, 0xd9, 0xde, 0xdd, 0x31, 0xe9, 0xc9, 0xd0, 0x59, 0xcd, 0x7b, + 0x55, 0xae, 0x83, 0xd9, 0x8b, 0x86, 0xb3, 0xbd, 0x82, 0xf5, 0x16, 0xb6, 0x35, 0xeb, 0x22, 0xf1, + 0x98, 0x9b, 0xd4, 0xf8, 0x44, 0xde, 0x7f, 0x45, 0xc0, 0xbe, 0x24, 0xb7, 0xc8, 0x8f, 0xe5, 0xf8, + 0x5b, 0x12, 0xcb, 0x33, 0x9a, 0xab, 0xf4, 0x15, 0xe6, 0xbd, 0x32, 0x4c, 0x69, 0xd6, 0x45, 0xa6, + 0x24, 0xff, 0xc7, 0xe1, 0xea, 0x48, 0xe2, 0x89, 0x1e, 0x91, 0x9c, 0xcf, 0xfe, 0xd8, 0x27, 0x7a, + 0xb1, 0xc5, 0x8f, 0xe5, 0xe4, 0xd2, 0x8c, 0x66, 0x5d, 0xac, 0x61, 0x87, 0xb6, 0x08, 0xd4, 0x18, + 0x91, 0x93, 0xb5, 0xd1, 0xa5, 0x04, 0xd9, 0x3c, 0xdc, 0x7f, 0x4f, 0xba, 0x8b, 0xe0, 0x0b, 0xc8, + 0x67, 0x71, 0xdc, 0xbb, 0x08, 0x03, 0x39, 0x18, 0x43, 0x8c, 0x14, 0x19, 0xa6, 0x35, 0xeb, 0xa2, + 0x3b, 0x34, 0x2c, 0x19, 0xed, 0xf6, 0x68, 0x46, 0xc8, 0xa4, 0xc6, 0xbf, 0x27, 0x06, 0x8f, 0x8b, + 0xb1, 0x1b, 0xff, 0x03, 0x18, 0x48, 0x1f, 0x86, 0xe7, 0xd0, 0xc6, 0xe2, 0x8d, 0xd0, 0xe6, 0x68, + 0x70, 0x18, 0xb6, 0x41, 0xf8, 0x6c, 0x1c, 0x5a, 0x83, 0x88, 0xe2, 0x60, 0x2c, 0x3b, 0x27, 0x73, + 0x25, 0x32, 0xcc, 0x8f, 0xb6, 0x4d, 0xbc, 0x2b, 0x99, 0x6b, 0x22, 0x1b, 0x76, 0x39, 0x46, 0x46, + 0x82, 0x46, 0x02, 0x17, 0x44, 0x01, 0x1e, 0xd2, 0xc7, 0xe3, 0x43, 0x32, 0xcc, 0x50, 0x16, 0x1e, + 0x21, 0x56, 0xc0, 0x50, 0x8d, 0x2a, 0x5c, 0x83, 0xc3, 0x69, 0x54, 0x31, 0x1c, 0x8c, 0xe5, 0x56, + 0x50, 0xd7, 0x8e, 0x1b, 0xe2, 0xf8, 0x78, 0x14, 0x82, 0x43, 0x1b, 0x63, 0x23, 0x3c, 0x42, 0x3e, + 0x8c, 0x31, 0x76, 0x48, 0xc7, 0xc8, 0x9f, 0xe3, 0xb7, 0xa2, 0x51, 0x62, 0x70, 0x80, 0xa6, 0x30, + 0x42, 0x18, 0x86, 0x6c, 0x0a, 0x87, 0x84, 0xc4, 0x57, 0x64, 0x00, 0xca, 0xc0, 0x9a, 0xb5, 0x47, + 0x2e, 0xf3, 0x19, 0x41, 0x77, 0xd6, 0xeb, 0x56, 0x2f, 0x0f, 0x70, 0xab, 0x4f, 0x18, 0xc2, 0x25, + 0xe9, 0x4a, 0x60, 0x48, 0xca, 0x6e, 0x25, 0xc7, 0xbe, 0x12, 0x18, 0x5f, 0x7e, 0xfa, 0x18, 0x7f, + 0x89, 0x5a, 0x73, 0xc1, 0x01, 0xd3, 0xdf, 0x18, 0x09, 0xca, 0xa1, 0xd9, 0xbf, 0xcc, 0xcf, 0xfe, + 0x0f, 0x80, 0xed, 0xb0, 0x36, 0xe2, 0xa0, 0x83, 0xa3, 0xe9, 0xdb, 0x88, 0x87, 0x77, 0x40, 0xf4, + 0x67, 0xb3, 0x70, 0x94, 0x75, 0x22, 0x3f, 0x0c, 0x10, 0x27, 0x3c, 0x87, 0xc7, 0x75, 0x92, 0x03, + 0x50, 0x1e, 0xd5, 0x82, 0x54, 0x92, 0xa5, 0x4c, 0x01, 0xf6, 0xc6, 0xb2, 0xba, 0x91, 0x57, 0x1f, + 0xe8, 0xe8, 0x66, 0x4b, 0x3c, 0xdc, 0xef, 0x00, 0xe0, 0xbd, 0xb5, 0x46, 0x99, 0x5f, 0x6b, 0xec, + 0xb3, 0x32, 0x99, 0x78, 0xe7, 0x9a, 0x88, 0x8c, 0xb2, 0x3b, 0xf6, 0x9d, 0xeb, 0xe8, 0xb2, 0xd3, + 0x47, 0xe9, 0x5d, 0x32, 0x64, 0x6b, 0x96, 0xed, 0xa0, 0xe7, 0x26, 0x69, 0x9d, 0x54, 0xf2, 0x01, + 0x48, 0xde, 0xbb, 0x52, 0xe2, 0x6e, 0x69, 0xbe, 0x39, 0xfe, 0xa8, 0xb3, 0xee, 0xe8, 0xc4, 0xab, + 0xdb, 0x2d, 0x3f, 0x74, 0x5d, 0x73, 0xd2, 0x78, 0x3a, 0x54, 0x7e, 0xb5, 0xe8, 0x03, 0x18, 0xa9, + 0xc5, 0xd3, 0x89, 0x2c, 0x39, 0x7d, 0xdc, 0x1e, 0x3a, 0xca, 0x7c, 0x5b, 0x97, 0x8c, 0x36, 0x46, + 0xcf, 0xa5, 0x2e, 0x23, 0x15, 0x7d, 0x07, 0x8b, 0x1f, 0x89, 0x89, 0x75, 0x6d, 0x25, 0xf1, 0x65, + 0xe5, 0x20, 0xbe, 0x6c, 0xd2, 0x06, 0x45, 0x0f, 0xa0, 0x53, 0x96, 0xc6, 0xdd, 0xa0, 0x62, 0xca, + 0x1e, 0x4b, 0x9c, 0xce, 0x63, 0x35, 0xec, 0x50, 0xa3, 0xb2, 0xea, 0xdd, 0xc0, 0xf2, 0x33, 0x23, + 0x89, 0xd8, 0xe9, 0x5f, 0xf0, 0x22, 0xf7, 0x5c, 0xf0, 0xf2, 0xde, 0x30, 0x38, 0x6b, 0x3c, 0x38, + 0x3f, 0x19, 0x2d, 0x20, 0x9e, 0xc9, 0x91, 0xc0, 0xf4, 0x56, 0x1f, 0xa6, 0x75, 0x0e, 0xa6, 0x3b, + 0x86, 0xe4, 0x22, 0x7d, 0xc0, 0x7e, 0x39, 0x07, 0x47, 0xe9, 0xa4, 0xbf, 0x68, 0xb6, 0x58, 0x84, + 0xd5, 0x37, 0x49, 0x87, 0xbc, 0xd9, 0xb6, 0x3f, 0x04, 0x2b, 0x17, 0xcb, 0x39, 0xd7, 0x7b, 0x3b, + 0xfe, 0x02, 0x0d, 0xe7, 0xea, 0x76, 0xa2, 0x64, 0xa7, 0x4d, 0xfc, 0x86, 0x7c, 0xff, 0x3f, 0xfe, + 0x2e, 0xa3, 0x09, 0xf1, 0xbb, 0x8c, 0xfe, 0x34, 0xd9, 0xba, 0x1d, 0x29, 0xba, 0x47, 0xe0, 0x29, + 0xdb, 0x4e, 0x09, 0x56, 0xf4, 0x04, 0xb8, 0xfb, 0xd1, 0x70, 0x27, 0x0b, 0x22, 0x88, 0x0c, 0xe9, + 0x4e, 0x46, 0x08, 0x1c, 0xa6, 0x3b, 0xd9, 0x20, 0x06, 0xc6, 0x70, 0xab, 0x7d, 0x8e, 0xed, 0xe6, + 0x93, 0x76, 0x83, 0xfe, 0x5a, 0x4a, 0x7d, 0x94, 0xfe, 0x6e, 0x26, 0x91, 0xff, 0x33, 0xe1, 0x2b, + 0x7e, 0x98, 0x4e, 0xe2, 0xd1, 0x1c, 0x47, 0x6e, 0x0c, 0xeb, 0x46, 0x12, 0xf1, 0x45, 0x3f, 0x67, + 0xb4, 0x9c, 0xed, 0x11, 0x9d, 0xe8, 0xb8, 0xe8, 0xd2, 0xf2, 0xae, 0x47, 0x26, 0x2f, 0xe8, 0xdf, + 0x33, 0x89, 0x42, 0x48, 0xf9, 0x22, 0x21, 0x6c, 0x45, 0x88, 0x38, 0x41, 0xe0, 0xa7, 0x58, 0x7a, + 0x63, 0xd4, 0xe8, 0xb3, 0x46, 0x0b, 0x5b, 0x8f, 0x40, 0x8d, 0x26, 0x7c, 0x8d, 0x4e, 0xa3, 0xe3, + 0xc8, 0xfd, 0x88, 0x6a, 0xb4, 0x2f, 0x92, 0x11, 0x69, 0x74, 0x2c, 0xbd, 0xf4, 0x65, 0xfc, 0xca, + 0x19, 0x36, 0x91, 0x5a, 0x35, 0xcc, 0x0b, 0xe8, 0x5f, 0xf2, 0xde, 0xc5, 0xcc, 0xe7, 0x0c, 0x67, + 0x9b, 0xc5, 0x82, 0xf9, 0x7d, 0xe1, 0xbb, 0x51, 0x86, 0x88, 0xf7, 0xc2, 0x87, 0x93, 0xca, 0xed, + 0x0b, 0x27, 0x55, 0x84, 0x59, 0xc3, 0x74, 0xb0, 0x6d, 0xea, 0xed, 0xa5, 0xb6, 0xbe, 0xd5, 0x3d, + 0x35, 0xd1, 0xf7, 0xf2, 0xba, 0x72, 0x28, 0x8f, 0xc6, 0xff, 0x11, 0xbe, 0xbe, 0x72, 0x92, 0xbf, + 0xbe, 0x32, 0x22, 0xfa, 0xd5, 0x54, 0x74, 0xf4, 0x2b, 0x3f, 0xba, 0x15, 0x0c, 0x0e, 0x8e, 0x2d, + 0x6a, 0x1b, 0x27, 0x0c, 0xf7, 0x77, 0xb3, 0x60, 0x14, 0x36, 0x3f, 0xf4, 0xe3, 0x6b, 0xe4, 0x44, + 0xab, 0x7b, 0xae, 0x22, 0xcc, 0xf7, 0x2a, 0x41, 0x62, 0x0b, 0x35, 0x5c, 0x79, 0xb9, 0xa7, 0xf2, + 0xbe, 0xc9, 0x93, 0x15, 0x30, 0x79, 0xc2, 0x4a, 0x95, 0x13, 0x53, 0xaa, 0x24, 0x8b, 0x85, 0x22, + 0xb5, 0x1d, 0xc3, 0x69, 0xa4, 0x1c, 0x1c, 0xf3, 0xa2, 0xdd, 0x76, 0x3a, 0x58, 0xb7, 0x75, 0xb3, + 0x89, 0xd1, 0x47, 0xa5, 0x51, 0x98, 0xbd, 0x4b, 0x30, 0x69, 0x34, 0x2d, 0xb3, 0x66, 0x3c, 0xc3, + 0xbb, 0x5c, 0x2e, 0x3e, 0xc8, 0x3a, 0x91, 0x48, 0x99, 0xfd, 0xa1, 0xf9, 0xff, 0x2a, 0x65, 0x98, + 0x6a, 0xea, 0x76, 0x8b, 0x06, 0xe1, 0xcb, 0xf5, 0x5c, 0xe4, 0x14, 0x49, 0xa8, 0xe4, 0xfd, 0xa2, + 0x05, 0x7f, 0x2b, 0x55, 0x5e, 0x88, 0xf9, 0x9e, 0x68, 0x1e, 0x91, 0xc4, 0x16, 0x83, 0x9f, 0x38, + 0x99, 0xbb, 0xd2, 0xb1, 0x71, 0x9b, 0xdc, 0x41, 0x4f, 0x7b, 0x88, 0x29, 0x2d, 0x48, 0x48, 0xba, + 0x3c, 0x40, 0x8a, 0xda, 0x87, 0xc6, 0xb8, 0x97, 0x07, 0x84, 0xb8, 0x48, 0x5f, 0x33, 0xdf, 0x9e, + 0x87, 0x59, 0xda, 0xab, 0x31, 0x71, 0xa2, 0xe7, 0x93, 0x2b, 0xa4, 0x9d, 0x7b, 0xf1, 0x25, 0x54, + 0x3b, 0xf8, 0x98, 0x5c, 0x00, 0xf9, 0x82, 0x1f, 0x70, 0xd0, 0x7d, 0x4c, 0xba, 0x6f, 0xef, 0xf1, + 0x35, 0x4f, 0x79, 0x1a, 0xf7, 0xbe, 0x7d, 0x7c, 0xf1, 0xe9, 0xe3, 0xf3, 0x2b, 0x32, 0xc8, 0xc5, + 0x56, 0x0b, 0x35, 0x0f, 0x0e, 0xc5, 0x35, 0x30, 0xed, 0xb5, 0x99, 0x20, 0x06, 0x64, 0x38, 0x29, + 0xe9, 0x22, 0xa8, 0x2f, 0x9b, 0x62, 0x6b, 0xec, 0xbb, 0x0a, 0x31, 0x65, 0xa7, 0x0f, 0xca, 0x6f, + 0x4c, 0xb0, 0x46, 0xb3, 0x60, 0x59, 0x17, 0xc8, 0x51, 0x99, 0xe7, 0xca, 0x90, 0x5b, 0xc2, 0x4e, + 0x73, 0x7b, 0x44, 0x6d, 0x66, 0xd7, 0x6e, 0x7b, 0x6d, 0x66, 0xdf, 0x7d, 0xf8, 0x83, 0x6d, 0x58, + 0x8f, 0xad, 0x79, 0xc2, 0xd2, 0xb8, 0xa3, 0x3b, 0xc7, 0x96, 0x9e, 0x3e, 0x38, 0xff, 0x2e, 0xc3, + 0x9c, 0xbf, 0xc2, 0x45, 0x31, 0xf9, 0xe5, 0xcc, 0x23, 0x6d, 0xbd, 0x13, 0x7d, 0x2e, 0x59, 0x88, + 0x34, 0x5f, 0xa6, 0x7c, 0xcd, 0x52, 0x5e, 0x58, 0x4c, 0x10, 0x3c, 0x4d, 0x8c, 0xc1, 0x31, 0xcc, + 0xe0, 0x65, 0x98, 0x24, 0x0c, 0x2d, 0x1a, 0x7b, 0xc4, 0x75, 0x90, 0x5b, 0x68, 0x7c, 0xe6, 0x48, + 0x16, 0x1a, 0xef, 0xe0, 0x17, 0x1a, 0x05, 0x23, 0x1e, 0x7b, 0xeb, 0x8c, 0x09, 0x7d, 0x69, 0xdc, + 0xff, 0x47, 0xbe, 0xcc, 0x98, 0xc0, 0x97, 0x66, 0x40, 0xf9, 0xe9, 0x23, 0xfa, 0x9a, 0xff, 0xcc, + 0x3a, 0x5b, 0x6f, 0x43, 0x15, 0xfd, 0xcf, 0x63, 0x90, 0x3d, 0xeb, 0x3e, 0xfc, 0xaf, 0xe0, 0x46, + 0xac, 0x97, 0x8e, 0x20, 0x38, 0xc3, 0x53, 0x21, 0xeb, 0xd2, 0x67, 0xd3, 0x96, 0x1b, 0xc5, 0x76, + 0x77, 0x5d, 0x46, 0x34, 0xf2, 0x9f, 0x72, 0x12, 0xf2, 0x5d, 0x6b, 0xd7, 0x6e, 0xba, 0xe6, 0xb3, + 0xab, 0x31, 0xec, 0x2d, 0x69, 0x50, 0x52, 0x8e, 0xf4, 0xfc, 0xe8, 0x5c, 0x46, 0x43, 0x17, 0x24, + 0xc9, 0xdc, 0x05, 0x49, 0x09, 0xf6, 0x0f, 0x04, 0x78, 0x4b, 0x5f, 0x23, 0xfe, 0x9a, 0xdc, 0x15, + 0xd8, 0x1a, 0x15, 0xec, 0x11, 0x62, 0x39, 0xa8, 0x3a, 0x24, 0x75, 0xf8, 0xe6, 0x45, 0xeb, 0xc7, + 0x81, 0x1f, 0xab, 0xc3, 0xb7, 0x00, 0x0f, 0x63, 0x39, 0xa5, 0x9e, 0x67, 0x4e, 0xaa, 0xf7, 0x8d, + 0x12, 0xdd, 0x2c, 0xa7, 0xf4, 0x07, 0x42, 0x67, 0x84, 0xce, 0xab, 0x43, 0xa3, 0x73, 0x48, 0xee, + 0xab, 0x7f, 0x28, 0x93, 0x48, 0x98, 0x9e, 0x91, 0x23, 0x7e, 0xd1, 0x51, 0x62, 0x88, 0xdc, 0x31, + 0x98, 0x8b, 0x03, 0x3d, 0x3b, 0x7c, 0x68, 0x70, 0x5e, 0x74, 0x21, 0xfe, 0xc7, 0x1d, 0x1a, 0x5c, + 0x94, 0x91, 0xf4, 0x81, 0xfc, 0x4d, 0x7a, 0xb1, 0x58, 0xb1, 0xe9, 0x18, 0x7b, 0x23, 0x6e, 0x69, + 0xfc, 0xf0, 0x92, 0x30, 0x1a, 0xf0, 0x3e, 0x09, 0x51, 0x0e, 0xc7, 0x1d, 0x0d, 0x58, 0x8c, 0x8d, + 0xf4, 0x61, 0xfa, 0xbb, 0xbc, 0x2b, 0x3d, 0xb6, 0x36, 0xf3, 0x7a, 0xb6, 0x1a, 0x80, 0x0f, 0x8e, + 0xd6, 0x19, 0x98, 0x09, 0x4d, 0xfd, 0xbd, 0x0b, 0x6b, 0xb8, 0xb4, 0xa4, 0x07, 0xdd, 0x7d, 0x91, + 0x8d, 0x7c, 0x61, 0x20, 0xc1, 0x82, 0xaf, 0x08, 0x13, 0x63, 0xb9, 0x0f, 0xce, 0x1b, 0xc3, 0xc6, + 0x84, 0xd5, 0xef, 0x87, 0xb1, 0xaa, 0xf2, 0x58, 0xdd, 0x26, 0x22, 0x26, 0xb1, 0x31, 0x4d, 0x68, + 0xde, 0xf8, 0x36, 0x1f, 0x2e, 0x8d, 0x83, 0xeb, 0xa9, 0x43, 0xf3, 0x91, 0x3e, 0x62, 0x2f, 0xa3, + 0xdd, 0x61, 0x8d, 0x9a, 0xec, 0xa3, 0xe9, 0x0e, 0xd9, 0x6c, 0x40, 0xe6, 0x66, 0x03, 0x09, 0xfd, + 0xed, 0x03, 0x37, 0x52, 0x8f, 0xb9, 0x41, 0x10, 0x65, 0x47, 0xec, 0x6f, 0x3f, 0x90, 0x83, 0xf4, + 0xc1, 0xf9, 0x27, 0x19, 0x60, 0xd9, 0xb6, 0x76, 0x3b, 0x55, 0xbb, 0x85, 0x6d, 0xf4, 0xb7, 0xc1, + 0x04, 0xe0, 0xc5, 0x23, 0x98, 0x00, 0xac, 0x03, 0x6c, 0xf9, 0xc4, 0x99, 0x86, 0xdf, 0x22, 0x66, + 0xee, 0x07, 0x4c, 0x69, 0x21, 0x1a, 0xfc, 0x95, 0xb3, 0x3f, 0xc5, 0x63, 0x1c, 0xd7, 0x67, 0x05, + 0xe4, 0x46, 0x39, 0x01, 0x78, 0x87, 0x8f, 0x75, 0x9d, 0xc3, 0xfa, 0xee, 0x03, 0x70, 0x92, 0x3e, + 0xe6, 0xff, 0x3c, 0x01, 0xd3, 0x74, 0xbb, 0x8e, 0xca, 0xf4, 0x1f, 0x02, 0xd0, 0x7f, 0x63, 0x04, + 0xa0, 0x6f, 0xc0, 0x8c, 0x15, 0x50, 0xa7, 0x7d, 0x6a, 0x78, 0x01, 0x26, 0x16, 0xf6, 0x10, 0x5f, + 0x1a, 0x47, 0x06, 0x7d, 0x38, 0x8c, 0xbc, 0xc6, 0x23, 0x7f, 0x47, 0x8c, 0xbc, 0x43, 0x14, 0x47, + 0x09, 0xfd, 0x3b, 0x7d, 0xe8, 0x37, 0x38, 0xe8, 0x8b, 0x07, 0x61, 0x65, 0x0c, 0xe1, 0xf6, 0x65, + 0xc8, 0x92, 0xd3, 0x71, 0xbf, 0x95, 0xe2, 0xfc, 0xfe, 0x14, 0x4c, 0x90, 0x26, 0xeb, 0xcf, 0x3b, + 0xbc, 0x57, 0xf7, 0x8b, 0xbe, 0xe9, 0x60, 0xdb, 0xf7, 0x58, 0xf0, 0x5e, 0x5d, 0x1e, 0x3c, 0xaf, + 0xe4, 0xee, 0xa9, 0x3c, 0xdd, 0x88, 0xf4, 0x13, 0x86, 0x9e, 0x94, 0x84, 0x25, 0x3e, 0xb2, 0xf3, 0x72, 0xc3, 0x4c, 0x4a, 0x06, 0x30, 0x92, 0x3e, 0xf0, 0x7f, 0x99, 0x85, 0x53, 0x74, 0x55, 0x69, - 0xc9, 0x32, 0x77, 0x7a, 0x6e, 0xb7, 0xd2, 0x0f, 0xae, 0x0b, 0xd7, 0xc3, 0x9c, 0xc3, 0xf9, 0x63, - 0x33, 0x9d, 0xe8, 0x49, 0x45, 0x7f, 0x16, 0xf6, 0xa9, 0x78, 0x06, 0x8f, 0xe4, 0x42, 0x8c, 0x00, + 0xc9, 0xb6, 0x76, 0x7a, 0x6e, 0xb7, 0x32, 0x0e, 0xae, 0x0b, 0xd7, 0xc3, 0x9c, 0xc3, 0xf9, 0x63, + 0x33, 0x9d, 0xe8, 0x49, 0x45, 0x7f, 0x16, 0xf6, 0xa9, 0x78, 0x1a, 0x8f, 0xe4, 0x42, 0x8c, 0x00, 0xa3, 0x78, 0x4f, 0xbc, 0x50, 0x2f, 0xc8, 0x68, 0x68, 0x91, 0x4a, 0x1e, 0x6a, 0xcd, 0xd2, 0xd7, - 0xa9, 0x9c, 0x88, 0x4e, 0xbd, 0xc7, 0xd7, 0xa9, 0x9f, 0xe2, 0x74, 0x6a, 0xf9, 0xe0, 0x22, 0x49, - 0x5f, 0xb7, 0x5e, 0xe1, 0x6f, 0x0c, 0xf9, 0xdb, 0x76, 0x3b, 0x29, 0x6c, 0xd6, 0x85, 0xfd, 0x91, - 0xb2, 0x9c, 0x3f, 0x12, 0x7f, 0x1f, 0x45, 0x82, 0x99, 0x30, 0xcf, 0x75, 0x84, 0x2e, 0xcd, 0x81, - 0xa4, 0x7b, 0xdc, 0x49, 0x7a, 0x7b, 0xa8, 0xb9, 0x6e, 0x6c, 0x41, 0x63, 0x58, 0x5b, 0x9a, 0x83, - 0xfc, 0x92, 0xde, 0x71, 0xb0, 0x85, 0xbe, 0xc8, 0x66, 0xba, 0xaf, 0x48, 0x71, 0x00, 0x58, 0x84, - 0xfc, 0x26, 0x29, 0x8d, 0x99, 0xcc, 0x37, 0x89, 0xb5, 0x1e, 0xca, 0xa1, 0xca, 0xfe, 0x4d, 0x1a, - 0x9d, 0xaf, 0x87, 0xcc, 0xc8, 0xa6, 0xc8, 0x09, 0xa2, 0xf3, 0x0d, 0x66, 0x61, 0x2c, 0x17, 0x53, - 0xe5, 0x55, 0xbc, 0xe3, 0x8e, 0xf1, 0x17, 0xd2, 0x43, 0xb8, 0x00, 0xb2, 0xde, 0xb6, 0x49, 0xe7, - 0x38, 0xa5, 0xba, 0x8f, 0x49, 0x7d, 0x85, 0x7a, 0x45, 0x45, 0x59, 0x1e, 0xb7, 0xaf, 0x90, 0x10, - 0x17, 0xe9, 0x63, 0xf6, 0x1d, 0xe2, 0x28, 0xda, 0xed, 0x68, 0x2d, 0xec, 0x72, 0x9f, 0x1a, 0x6a, - 0xb4, 0x27, 0xcb, 0x7a, 0x3d, 0x59, 0xa8, 0x9d, 0xe6, 0x0e, 0xd0, 0x4e, 0x87, 0x5d, 0x86, 0xf4, - 0x65, 0x4e, 0x2a, 0x7e, 0x68, 0xcb, 0x90, 0xb1, 0x6c, 0x8c, 0xe1, 0xda, 0x51, 0xef, 0x20, 0xed, - 0x58, 0x5b, 0xeb, 0xb0, 0x9b, 0x34, 0x4c, 0x58, 0x23, 0x3b, 0x34, 0x3b, 0xcc, 0x26, 0x4d, 0x34, - 0x0f, 0x63, 0x40, 0x6b, 0x8e, 0xa1, 0xf5, 0x19, 0x36, 0x8c, 0xa6, 0xbc, 0x4f, 0x6a, 0x9b, 0x96, - 0x93, 0x6c, 0x9f, 0xd4, 0xe5, 0x4e, 0x25, 0xff, 0x25, 0x3d, 0x78, 0xc5, 0x9f, 0xab, 0x1e, 0xd5, - 0xf0, 0x99, 0xe0, 0xe0, 0xd5, 0x20, 0x06, 0xd2, 0x87, 0xf7, 0x8d, 0x87, 0x34, 0x78, 0x0e, 0xdb, - 0x1c, 0x59, 0x1b, 0x18, 0xd9, 0xd0, 0x39, 0x4c, 0x73, 0x8c, 0xe6, 0x21, 0x7d, 0xbc, 0xbe, 0x19, - 0x1a, 0x38, 0x5f, 0x3f, 0xc6, 0x81, 0xd3, 0x6b, 0x99, 0xb9, 0x21, 0x5b, 0xe6, 0xb0, 0xfb, 0x3f, - 0x4c, 0xd6, 0xa3, 0x1b, 0x30, 0x87, 0xd9, 0xff, 0x89, 0x61, 0x22, 0x7d, 0xc4, 0xdf, 0x20, 0x43, - 0xae, 0x3e, 0xfe, 0xf1, 0x72, 0xd8, 0xb9, 0x08, 0x91, 0x55, 0x7d, 0x64, 0xc3, 0xe5, 0x30, 0x73, - 0x91, 0x48, 0x16, 0xc6, 0x10, 0x78, 0xff, 0x28, 0xcc, 0x90, 0x25, 0x11, 0x6f, 0x9b, 0xf5, 0x9b, - 0x6c, 0xd4, 0x7c, 0x24, 0xc5, 0xb6, 0x7a, 0x0f, 0x4c, 0x7a, 0xfb, 0x77, 0x6c, 0xe4, 0x9c, 0x17, - 0x6b, 0x9f, 0x1e, 0x97, 0xaa, 0xff, 0xff, 0x81, 0x9c, 0x21, 0x46, 0xbe, 0x57, 0x3b, 0xac, 0x33, - 0xc4, 0xa1, 0xee, 0xd7, 0xfe, 0x69, 0x30, 0xa2, 0xfe, 0x97, 0xf4, 0x30, 0xef, 0xdd, 0xc7, 0xcd, - 0xf6, 0xd9, 0xc7, 0xfd, 0x70, 0x18, 0xcb, 0x3a, 0x8f, 0xe5, 0x9d, 0xa2, 0x22, 0x1c, 0xe1, 0x58, - 0xfb, 0x0e, 0x1f, 0xce, 0xb3, 0x1c, 0x9c, 0x0b, 0x07, 0xe2, 0x65, 0x0c, 0x07, 0x1f, 0xb3, 0xc1, - 0x98, 0xfb, 0xd1, 0x14, 0xdb, 0x71, 0xcf, 0xa9, 0x8a, 0xec, 0xbe, 0x53, 0x15, 0x5c, 0x4b, 0xcf, - 0x1d, 0xb0, 0xa5, 0x7f, 0x34, 0xac, 0x1d, 0x0d, 0x5e, 0x3b, 0x9e, 0x2e, 0x8e, 0xc8, 0xe8, 0x46, - 0xe6, 0x77, 0xfa, 0xea, 0x71, 0x8e, 0x53, 0x8f, 0xd2, 0xc1, 0x98, 0x49, 0x5f, 0x3f, 0xfe, 0xc8, - 0x9b, 0xd0, 0x1e, 0x72, 0x7b, 0x1f, 0x76, 0xab, 0x98, 0x13, 0xe2, 0xc8, 0x46, 0xee, 0x61, 0xb6, - 0x8a, 0x07, 0x71, 0x32, 0x86, 0x58, 0x6c, 0xb3, 0x30, 0x4d, 0x78, 0x3a, 0xa7, 0xb7, 0xb7, 0xb0, - 0x83, 0x5e, 0x49, 0x7d, 0x14, 0xbd, 0xc8, 0x97, 0x23, 0x0a, 0x4f, 0x14, 0x75, 0xde, 0x35, 0xa9, - 0x47, 0x07, 0x65, 0x72, 0x3e, 0xc4, 0xe0, 0xb8, 0x23, 0x28, 0x0e, 0xe4, 0x20, 0x7d, 0xc8, 0x3e, - 0x48, 0xdd, 0x6d, 0x56, 0xb5, 0x4b, 0xe6, 0xae, 0x83, 0x1e, 0x1c, 0x41, 0x07, 0xbd, 0x00, 0xf9, - 0x0e, 0xa1, 0xc6, 0x8e, 0x65, 0xc4, 0x4f, 0x77, 0x98, 0x08, 0x68, 0xf9, 0x2a, 0xfb, 0x33, 0xe9, - 0xd9, 0x8c, 0x40, 0x8e, 0x94, 0xce, 0xb8, 0xcf, 0x66, 0x0c, 0x28, 0x7f, 0x2c, 0x77, 0xec, 0x4c, - 0xba, 0xa5, 0xeb, 0x3b, 0xba, 0x33, 0xa2, 0x08, 0x0e, 0x1d, 0x97, 0x96, 0x17, 0xc1, 0x81, 0xbc, - 0x24, 0x3d, 0x31, 0x1a, 0x92, 0x8a, 0xfb, 0xfb, 0xb8, 0x4f, 0x8c, 0xc6, 0x17, 0x9f, 0x3e, 0x26, - 0xbf, 0x41, 0x5b, 0xd6, 0x59, 0xea, 0x7c, 0x9b, 0xa2, 0x5f, 0xef, 0xd0, 0x8d, 0x85, 0xb2, 0x76, - 0x78, 0x8d, 0xa5, 0x6f, 0xf9, 0xe9, 0x03, 0xf3, 0xdf, 0x7f, 0x14, 0x72, 0x8b, 0xf8, 0xfc, 0xee, - 0x16, 0xba, 0x03, 0x26, 0x1b, 0x16, 0xc6, 0x15, 0x63, 0xd3, 0x74, 0xa5, 0xeb, 0xb8, 0xcf, 0x1e, - 0x24, 0xec, 0xcd, 0xc5, 0x63, 0x1b, 0x6b, 0xed, 0xe0, 0xfc, 0x99, 0xf7, 0x8a, 0x5e, 0x24, 0x41, - 0xb6, 0xee, 0x68, 0x0e, 0x9a, 0xf2, 0xb1, 0x45, 0x0f, 0x86, 0xb1, 0xb8, 0x83, 0xc7, 0xe2, 0x7a, - 0x4e, 0x16, 0x84, 0x83, 0x79, 0xf7, 0xff, 0x08, 0x00, 0x10, 0x4c, 0xde, 0x6f, 0x9b, 0x86, 0x9b, - 0xc3, 0x3b, 0x02, 0xe9, 0xbd, 0xa3, 0x97, 0xfb, 0xe2, 0xbe, 0x8b, 0x13, 0xf7, 0xe3, 0xc5, 0x8a, - 0x18, 0xc3, 0x4a, 0x9b, 0x04, 0x53, 0xae, 0x68, 0x57, 0xb0, 0xd6, 0xb6, 0xd1, 0x8f, 0x04, 0xca, - 0x1f, 0x21, 0x66, 0xf4, 0x5e, 0xe1, 0x60, 0x9c, 0xb4, 0x56, 0x3e, 0xf1, 0x68, 0x8f, 0x0e, 0x6f, - 0xf3, 0x5f, 0xe2, 0x83, 0x91, 0xdc, 0x0c, 0x59, 0xdd, 0xd8, 0x34, 0x99, 0x7f, 0xe1, 0x95, 0x11, - 0xb4, 0x5d, 0x9d, 0x50, 0x49, 0x46, 0xc1, 0x48, 0x9d, 0xf1, 0x6c, 0x8d, 0xe5, 0xd2, 0xbb, 0xac, - 0x5b, 0x3a, 0xfa, 0xff, 0x0f, 0x14, 0xb6, 0xa2, 0x40, 0xb6, 0xab, 0x39, 0xdb, 0xac, 0x68, 0xf2, - 0xec, 0xda, 0xc8, 0xbb, 0x86, 0x66, 0x98, 0xc6, 0xa5, 0x1d, 0xfd, 0x99, 0xfe, 0xdd, 0xba, 0x5c, - 0x9a, 0xcb, 0xf9, 0x16, 0x36, 0xb0, 0xa5, 0x39, 0xb8, 0xbe, 0xb7, 0x45, 0xe6, 0x58, 0x93, 0x6a, - 0x38, 0x29, 0xb1, 0xfe, 0xbb, 0x1c, 0x47, 0xeb, 0xff, 0xa6, 0xde, 0xc1, 0x24, 0x52, 0x13, 0xd3, - 0x7f, 0xef, 0x3d, 0x91, 0xfe, 0xf7, 0x29, 0x22, 0x7d, 0x34, 0xbe, 0x2b, 0xc1, 0x4c, 0xdd, 0x55, - 0xb8, 0xfa, 0xee, 0xce, 0x8e, 0x66, 0x5d, 0x42, 0xd7, 0x06, 0xa8, 0x84, 0x54, 0x33, 0xc3, 0xfb, - 0xa5, 0x7c, 0x44, 0xf8, 0x5a, 0x69, 0xd6, 0xb4, 0x43, 0x25, 0x24, 0x6e, 0x07, 0x4f, 0x84, 0x9c, - 0xab, 0xde, 0x9e, 0xc7, 0x65, 0x6c, 0x43, 0xa0, 0x39, 0x05, 0x23, 0x5a, 0x0d, 0xe4, 0x6d, 0x0c, - 0xd1, 0x34, 0x24, 0x38, 0x5a, 0x77, 0xb4, 0xd6, 0x85, 0x65, 0xd3, 0x32, 0x77, 0x1d, 0xdd, 0xc0, - 0x36, 0x7a, 0x4c, 0x80, 0x80, 0xa7, 0xff, 0x99, 0x40, 0xff, 0xd1, 0xf7, 0x33, 0xa2, 0xa3, 0xa8, - 0xdf, 0xad, 0x86, 0xc9, 0x47, 0x04, 0xa8, 0x12, 0x1b, 0x17, 0x45, 0x28, 0xa6, 0x2f, 0xb4, 0xd7, - 0xcb, 0x50, 0x28, 0x3f, 0xd0, 0x35, 0x2d, 0x67, 0xd5, 0x6c, 0x69, 0x1d, 0xdb, 0x31, 0x2d, 0x8c, - 0x6a, 0xb1, 0x52, 0x73, 0x7b, 0x98, 0xb6, 0xd9, 0x0a, 0x06, 0x47, 0xf6, 0x16, 0x56, 0x3b, 0x99, - 0xd7, 0xf1, 0x0f, 0x0a, 0xef, 0x32, 0x52, 0xa9, 0xf4, 0x72, 0x14, 0xa1, 0xe7, 0xfd, 0xba, 0xb4, - 0x64, 0x87, 0x25, 0xc4, 0x76, 0x1e, 0x85, 0x98, 0x1a, 0xc3, 0x52, 0xb9, 0x04, 0xb3, 0xf5, 0xdd, - 0xf3, 0x3e, 0x11, 0x3b, 0x6c, 0x84, 0xbc, 0x4a, 0x38, 0x4a, 0x05, 0x53, 0xbc, 0x30, 0xa1, 0x08, - 0xf9, 0x5e, 0x07, 0xb3, 0x76, 0x38, 0x1b, 0xc3, 0x9b, 0x4f, 0x14, 0x8c, 0x4e, 0x31, 0xb8, 0xd4, - 0xf4, 0x05, 0xf8, 0x4e, 0x09, 0x66, 0x6b, 0x5d, 0x6c, 0xe0, 0x36, 0xf5, 0x82, 0xe4, 0x04, 0xf8, - 0xa2, 0x84, 0x02, 0xe4, 0x08, 0x45, 0x08, 0x30, 0xf0, 0x58, 0x5e, 0xf4, 0x84, 0x17, 0x24, 0x24, - 0x12, 0x5c, 0x5c, 0x69, 0xe9, 0x0b, 0xee, 0x0b, 0x12, 0x4c, 0xab, 0xbb, 0xc6, 0xba, 0x65, 0xba, - 0xa3, 0xb1, 0x85, 0xee, 0x0c, 0x3a, 0x88, 0x9b, 0xe0, 0x58, 0x7b, 0xd7, 0x22, 0xeb, 0x4f, 0x15, - 0xa3, 0x8e, 0x5b, 0xa6, 0xd1, 0xb6, 0x49, 0x3d, 0x72, 0xea, 0xfe, 0x0f, 0xb7, 0x67, 0x9f, 0xfb, - 0x35, 0x39, 0x83, 0x9e, 0x27, 0x1c, 0xea, 0x86, 0x56, 0x3e, 0x54, 0xb4, 0x78, 0x4f, 0x20, 0x18, - 0xd0, 0x66, 0x50, 0x09, 0xe9, 0x0b, 0xf7, 0x33, 0x12, 0x28, 0xc5, 0x56, 0xcb, 0xdc, 0x35, 0x9c, - 0x3a, 0xee, 0xe0, 0x96, 0xd3, 0xb0, 0xb4, 0x16, 0x0e, 0xdb, 0xcf, 0x05, 0x90, 0xdb, 0xba, 0xc5, - 0xfa, 0x60, 0xf7, 0x91, 0xc9, 0xf1, 0x45, 0xc2, 0x3b, 0x8e, 0xb4, 0x96, 0xfb, 0x4b, 0x49, 0x20, - 0x4e, 0xb1, 0x7d, 0x45, 0xc1, 0x82, 0xd2, 0x97, 0xea, 0x47, 0x25, 0x98, 0xf2, 0x7a, 0xec, 0x2d, - 0x11, 0x61, 0xfe, 0x46, 0xc2, 0xc9, 0x88, 0x4f, 0x3c, 0x81, 0x0c, 0xdf, 0x9a, 0x60, 0x56, 0x11, - 0x45, 0x3f, 0x99, 0xe8, 0x8a, 0xc9, 0x45, 0xe7, 0xbe, 0x56, 0x6b, 0xcd, 0xa5, 0xda, 0xea, 0x62, - 0x59, 0x2d, 0xc8, 0xe8, 0x8b, 0x12, 0x64, 0xd7, 0x75, 0x63, 0x2b, 0x1c, 0x5d, 0xe9, 0xb8, 0x6b, - 0x47, 0xb6, 0xf1, 0x03, 0xac, 0xa5, 0xd3, 0x17, 0xe5, 0x56, 0x38, 0x6e, 0xec, 0xee, 0x9c, 0xc7, - 0x56, 0x6d, 0x93, 0x8c, 0xb2, 0x76, 0xc3, 0xac, 0x63, 0x83, 0x1a, 0xa1, 0x39, 0xb5, 0xef, 0x37, - 0xde, 0x04, 0x13, 0x98, 0x3c, 0xb8, 0x9c, 0x44, 0x48, 0xdc, 0x67, 0x4a, 0x0a, 0x31, 0x95, 0x68, - 0xda, 0xd0, 0x87, 0x78, 0xfa, 0x9a, 0xfa, 0xc7, 0x39, 0x38, 0x51, 0x34, 0x2e, 0x11, 0x9b, 0x82, - 0x76, 0xf0, 0xa5, 0x6d, 0xcd, 0xd8, 0xc2, 0x64, 0x80, 0xf0, 0x25, 0x1e, 0x0e, 0xd1, 0x9f, 0xe1, - 0x43, 0xf4, 0x2b, 0x2a, 0x4c, 0x98, 0x56, 0x1b, 0x5b, 0x0b, 0x97, 0x08, 0x4f, 0xbd, 0xcb, 0xce, - 0xac, 0x4d, 0xf6, 0x2b, 0x62, 0x9e, 0x91, 0x9f, 0xaf, 0xd1, 0xff, 0x55, 0x8f, 0xd0, 0x99, 0x9b, - 0x60, 0x82, 0xa5, 0x29, 0x33, 0x30, 0x59, 0x53, 0x17, 0xcb, 0x6a, 0xb3, 0xb2, 0x58, 0x38, 0xa2, - 0x5c, 0x06, 0x47, 0x2b, 0x8d, 0xb2, 0x5a, 0x6c, 0x54, 0x6a, 0xd5, 0x26, 0x49, 0x2f, 0x64, 0xd0, - 0x73, 0xb2, 0xa2, 0x9e, 0xbd, 0xf1, 0xcc, 0xf4, 0x83, 0x55, 0x85, 0x89, 0x16, 0xcd, 0x40, 0x86, - 0xd0, 0xe9, 0x44, 0xb5, 0x63, 0x04, 0x69, 0x82, 0xea, 0x11, 0x52, 0x4e, 0x03, 0x5c, 0xb4, 0x4c, - 0x63, 0x2b, 0x38, 0x75, 0x38, 0xa9, 0x86, 0x52, 0xd0, 0x83, 0x19, 0xc8, 0xd3, 0x7f, 0xc8, 0x95, - 0x24, 0xe4, 0x29, 0x10, 0xbc, 0xf7, 0xee, 0x5a, 0xbc, 0x44, 0x5e, 0xc1, 0x44, 0x8b, 0xbd, 0xba, - 0xba, 0x48, 0x65, 0x40, 0x2d, 0x61, 0x56, 0x95, 0x9b, 0x21, 0x4f, 0xff, 0x65, 0x5e, 0x07, 0xd1, - 0xe1, 0x45, 0x69, 0x36, 0x41, 0x3f, 0x65, 0x71, 0x99, 0xa6, 0xaf, 0xcd, 0xef, 0x93, 0x60, 0xb2, - 0x8a, 0x9d, 0xd2, 0x36, 0x6e, 0x5d, 0x40, 0x8f, 0xe3, 0x17, 0x40, 0x3b, 0x3a, 0x36, 0x9c, 0xfb, - 0x76, 0x3a, 0xfe, 0x02, 0xa8, 0x97, 0x80, 0x7e, 0x31, 0xdc, 0xf9, 0xde, 0xcd, 0xeb, 0xcf, 0x8d, - 0x7d, 0xea, 0xea, 0x95, 0x10, 0xa1, 0x32, 0x27, 0x21, 0x6f, 0x61, 0x7b, 0xb7, 0xe3, 0x2d, 0xa2, - 0xb1, 0x37, 0xf4, 0xb0, 0x2f, 0xce, 0x12, 0x27, 0xce, 0x9b, 0xc5, 0x8b, 0x18, 0x43, 0xbc, 0xd2, - 0x2c, 0x4c, 0x54, 0x0c, 0xdd, 0xd1, 0xb5, 0x0e, 0x7a, 0x5e, 0x16, 0x66, 0xeb, 0xd8, 0x59, 0xd7, - 0x2c, 0x6d, 0x07, 0x3b, 0xd8, 0xb2, 0xd1, 0xb7, 0xf9, 0x3e, 0xa1, 0xdb, 0xd1, 0x9c, 0x4d, 0xd3, - 0xda, 0xf1, 0x54, 0xd3, 0x7b, 0x77, 0x55, 0x73, 0x0f, 0x5b, 0x76, 0xc0, 0x97, 0xf7, 0xea, 0x7e, - 0xb9, 0x68, 0x5a, 0x17, 0xdc, 0x41, 0x90, 0x4d, 0xd3, 0xd8, 0xab, 0x4b, 0xaf, 0x63, 0x6e, 0xad, - 0xe2, 0x3d, 0xec, 0x85, 0x4b, 0xf3, 0xdf, 0xdd, 0xb9, 0x40, 0xdb, 0xac, 0x9a, 0x8e, 0xdb, 0x69, - 0xaf, 0x9a, 0x5b, 0x34, 0x5e, 0xec, 0xa4, 0xca, 0x27, 0x06, 0xb9, 0xb4, 0x3d, 0x4c, 0x72, 0xe5, - 0xc3, 0xb9, 0x58, 0xa2, 0x32, 0x0f, 0x8a, 0xff, 0x5b, 0x03, 0x77, 0xf0, 0x0e, 0x76, 0xac, 0x4b, - 0xe4, 0x5a, 0x88, 0x49, 0xb5, 0xcf, 0x17, 0x36, 0x40, 0x8b, 0x4f, 0xd6, 0x99, 0xf4, 0xe6, 0x39, - 0xc9, 0x1d, 0x68, 0xb2, 0x2e, 0x42, 0x71, 0x2c, 0xd7, 0x5e, 0xc9, 0xae, 0x35, 0xf3, 0x12, 0x19, - 0xb2, 0x64, 0xf0, 0x7c, 0x43, 0x86, 0x5b, 0x61, 0xda, 0xc1, 0xb6, 0xad, 0x6d, 0x61, 0x6f, 0x85, - 0x89, 0xbd, 0x2a, 0xb7, 0x41, 0xae, 0x43, 0x30, 0xa5, 0x83, 0xc3, 0xb5, 0x5c, 0xcd, 0x5c, 0x03, - 0xc3, 0xa5, 0xe5, 0x8f, 0x04, 0x04, 0x6e, 0x95, 0xfe, 0x71, 0xe6, 0x1e, 0xc8, 0x51, 0xf8, 0xa7, - 0x20, 0xb7, 0x58, 0x5e, 0xd8, 0x58, 0x2e, 0x1c, 0x71, 0x1f, 0x3d, 0xfe, 0xa6, 0x20, 0xb7, 0x54, - 0x6c, 0x14, 0x57, 0x0b, 0x92, 0x5b, 0x8f, 0x4a, 0x75, 0xa9, 0x56, 0x90, 0xdd, 0xc4, 0xf5, 0x62, - 0xb5, 0x52, 0x2a, 0x64, 0x95, 0x69, 0x98, 0x38, 0x57, 0x54, 0xab, 0x95, 0xea, 0x72, 0x21, 0x87, - 0xfe, 0x2e, 0x8c, 0xdf, 0xed, 0x3c, 0x7e, 0xd7, 0x45, 0xf1, 0xd4, 0x0f, 0xb2, 0x97, 0xfa, 0x90, - 0xdd, 0xc9, 0x41, 0xf6, 0xa3, 0x22, 0x44, 0xc6, 0xe0, 0xce, 0x94, 0x87, 0x89, 0x75, 0xcb, 0x6c, - 0x61, 0xdb, 0x46, 0xbf, 0x29, 0x41, 0xbe, 0xa4, 0x19, 0x2d, 0xdc, 0x41, 0x57, 0x04, 0x50, 0x51, - 0x57, 0xd1, 0x8c, 0x7f, 0x5a, 0xec, 0x9f, 0x32, 0xa2, 0xbd, 0x1f, 0xa3, 0x3b, 0x4f, 0x69, 0x46, - 0xc8, 0x47, 0xac, 0x97, 0x8b, 0x25, 0x35, 0x86, 0xab, 0x71, 0x24, 0x98, 0x62, 0xab, 0x01, 0xe7, - 0x71, 0x78, 0x1e, 0xfe, 0xed, 0x8c, 0xe8, 0xe4, 0xd0, 0xab, 0x81, 0x4f, 0x26, 0x42, 0x1e, 0x62, - 0x13, 0xc1, 0x41, 0xd4, 0xc6, 0xb0, 0x79, 0x28, 0xc1, 0xf4, 0x86, 0x61, 0xf7, 0x13, 0x8a, 0x78, - 0x1c, 0x7d, 0xaf, 0x1a, 0x21, 0x42, 0x07, 0x8a, 0xa3, 0x3f, 0x98, 0x5e, 0xfa, 0x82, 0xf9, 0x76, - 0x06, 0x8e, 0x2f, 0x63, 0x03, 0x5b, 0x7a, 0x8b, 0xd6, 0xc0, 0x93, 0xc4, 0x9d, 0xbc, 0x24, 0x1e, - 0xc7, 0x71, 0xde, 0xef, 0x0f, 0x5e, 0x02, 0xaf, 0xf0, 0x25, 0x70, 0x37, 0x27, 0x81, 0x9b, 0x04, - 0xe9, 0x8c, 0xe1, 0x3e, 0xf4, 0x29, 0x98, 0xa9, 0x9a, 0x8e, 0xbe, 0xa9, 0xb7, 0xa8, 0x0f, 0xda, - 0x8b, 0x65, 0xc8, 0xae, 0xea, 0xb6, 0x83, 0x8a, 0x41, 0x77, 0x72, 0x0d, 0x4c, 0xeb, 0x46, 0xab, - 0xb3, 0xdb, 0xc6, 0x2a, 0xd6, 0x68, 0xbf, 0x32, 0xa9, 0x86, 0x93, 0x82, 0xad, 0x7d, 0x97, 0x2d, - 0xd9, 0xdb, 0xda, 0xff, 0xa4, 0xf0, 0x32, 0x4c, 0x98, 0x05, 0x12, 0x90, 0x32, 0xc2, 0xee, 0x2a, - 0xc2, 0xac, 0x11, 0xca, 0xea, 0x19, 0xec, 0xbd, 0x17, 0x0a, 0x84, 0xc9, 0xa9, 0xfc, 0x1f, 0xe8, - 0xdd, 0x42, 0x8d, 0x75, 0x10, 0x43, 0xc9, 0x90, 0x59, 0x1a, 0x62, 0x92, 0xac, 0xc0, 0x5c, 0xa5, - 0xda, 0x28, 0xab, 0xd5, 0xe2, 0x2a, 0xcb, 0x22, 0xa3, 0xef, 0x4a, 0x90, 0x53, 0x71, 0xb7, 0x73, - 0x29, 0x1c, 0x31, 0x9a, 0x39, 0x8a, 0x67, 0x7c, 0x47, 0x71, 0x65, 0x09, 0x40, 0x6b, 0xb9, 0x05, - 0x93, 0x2b, 0xb5, 0xa4, 0xbe, 0x71, 0x4c, 0xb9, 0x0a, 0x16, 0xfd, 0xdc, 0x6a, 0xe8, 0x4f, 0xf4, - 0x90, 0xf0, 0xce, 0x11, 0x47, 0x8d, 0x70, 0x18, 0xd1, 0x27, 0xbc, 0x47, 0x68, 0xb3, 0x67, 0x20, - 0xb9, 0xc3, 0x11, 0xff, 0x97, 0x24, 0xc8, 0x36, 0xdc, 0xde, 0x32, 0xd4, 0x71, 0x7e, 0x62, 0x38, - 0x1d, 0x77, 0xc9, 0x44, 0xe8, 0xf8, 0x5d, 0x30, 0x13, 0xd6, 0x58, 0xe6, 0x2a, 0x11, 0xab, 0xe2, - 0xdc, 0x0f, 0xc3, 0x68, 0x78, 0x1f, 0x76, 0x0e, 0x47, 0xc4, 0x1f, 0x7b, 0x3c, 0xc0, 0x1a, 0xde, - 0x39, 0x8f, 0x2d, 0x7b, 0x5b, 0xef, 0xa2, 0xbf, 0x97, 0x61, 0x6a, 0x19, 0x3b, 0x75, 0x47, 0x73, - 0x76, 0xed, 0x9e, 0xed, 0x4e, 0xc3, 0x2c, 0x69, 0xad, 0x6d, 0xcc, 0xba, 0x23, 0xef, 0x15, 0xbd, - 0x5d, 0x16, 0xf5, 0x27, 0x0a, 0xca, 0x99, 0xf7, 0xcb, 0x88, 0xc0, 0xe4, 0x09, 0x90, 0x6d, 0x6b, - 0x8e, 0xc6, 0xb0, 0xb8, 0xa2, 0x07, 0x8b, 0x80, 0x90, 0x4a, 0xb2, 0xa1, 0xdf, 0x95, 0x44, 0x1c, - 0x8a, 0x04, 0xca, 0x4f, 0x06, 0xc2, 0xbb, 0x33, 0x43, 0xa0, 0x70, 0x0c, 0x66, 0xab, 0xb5, 0x46, - 0x73, 0xb5, 0xb6, 0xbc, 0x5c, 0x76, 0x53, 0x0b, 0xb2, 0x72, 0x12, 0x94, 0xf5, 0xe2, 0x7d, 0x6b, - 0xe5, 0x6a, 0xa3, 0x59, 0xad, 0x2d, 0x96, 0xd9, 0x9f, 0x59, 0xe5, 0x28, 0x4c, 0x97, 0x8a, 0xa5, - 0x15, 0x2f, 0x21, 0xa7, 0x9c, 0x82, 0xe3, 0x6b, 0xe5, 0xb5, 0x85, 0xb2, 0x5a, 0x5f, 0xa9, 0xac, - 0x37, 0x5d, 0x32, 0x4b, 0xb5, 0x8d, 0xea, 0x62, 0x21, 0xaf, 0x20, 0x38, 0x19, 0xfa, 0x72, 0x4e, - 0xad, 0x55, 0x97, 0x9b, 0xf5, 0x46, 0xb1, 0x51, 0x2e, 0x4c, 0x28, 0x97, 0xc1, 0xd1, 0x52, 0xb1, - 0x4a, 0xb2, 0x97, 0x6a, 0xd5, 0x6a, 0xb9, 0xd4, 0x28, 0x4c, 0xa2, 0xef, 0x67, 0x61, 0xba, 0x62, - 0x57, 0xb5, 0x1d, 0x7c, 0x56, 0xeb, 0xe8, 0x6d, 0xf4, 0xbc, 0xd0, 0xcc, 0xe3, 0x3a, 0x98, 0xb5, - 0xe8, 0x23, 0x6e, 0x37, 0x74, 0x4c, 0xd1, 0x9c, 0x55, 0xf9, 0x44, 0x77, 0x4e, 0x6e, 0x10, 0x02, - 0xde, 0x9c, 0x9c, 0xbe, 0x29, 0x0b, 0x00, 0xf4, 0xa9, 0x11, 0x5c, 0xee, 0x7a, 0xa6, 0xb7, 0x35, - 0x69, 0x3b, 0xd8, 0xc6, 0xd6, 0x9e, 0xde, 0xc2, 0x5e, 0x4e, 0x35, 0xf4, 0x17, 0xfa, 0xb2, 0x2c, - 0xba, 0xbf, 0x18, 0x02, 0x35, 0x54, 0x9d, 0x88, 0xde, 0xf0, 0x97, 0x64, 0x91, 0xdd, 0x41, 0x21, - 0x92, 0xc9, 0x34, 0xe5, 0x57, 0xa5, 0xe1, 0x96, 0x6d, 0x1b, 0xb5, 0x5a, 0xb3, 0xbe, 0x52, 0x53, - 0x1b, 0x05, 0x59, 0x99, 0x81, 0x49, 0xf7, 0x75, 0xb5, 0x56, 0x5d, 0x2e, 0x64, 0x95, 0x13, 0x70, - 0x6c, 0xa5, 0x58, 0x6f, 0x56, 0xaa, 0x67, 0x8b, 0xab, 0x95, 0xc5, 0x66, 0x69, 0xa5, 0xa8, 0xd6, - 0x0b, 0x39, 0xe5, 0x0a, 0x38, 0xd1, 0xa8, 0x94, 0xd5, 0xe6, 0x52, 0xb9, 0xd8, 0xd8, 0x50, 0xcb, - 0xf5, 0x66, 0xb5, 0xd6, 0xac, 0x16, 0xd7, 0xca, 0x85, 0xbc, 0xdb, 0xfc, 0xc9, 0xa7, 0x40, 0x6d, - 0x26, 0xf6, 0x2b, 0xe3, 0x64, 0x84, 0x32, 0x4e, 0xf5, 0x2a, 0x23, 0x84, 0xd5, 0x4a, 0x2d, 0xd7, - 0xcb, 0xea, 0xd9, 0x72, 0x61, 0xba, 0x9f, 0xae, 0xcd, 0x28, 0xc7, 0xa1, 0xe0, 0xf2, 0xd0, 0xac, - 0xd4, 0xbd, 0x9c, 0x8b, 0x85, 0x59, 0xf4, 0xd1, 0x3c, 0x9c, 0x54, 0xf1, 0x96, 0x6e, 0x3b, 0xd8, - 0x5a, 0xd7, 0x2e, 0xed, 0x60, 0xc3, 0xf1, 0x3a, 0xf9, 0x7f, 0x4d, 0xac, 0x8c, 0x6b, 0x30, 0xdb, - 0xa5, 0x34, 0xd6, 0xb0, 0xb3, 0x6d, 0xb6, 0xd9, 0x28, 0xfc, 0xb8, 0xc8, 0x9e, 0x63, 0x7e, 0x3d, - 0x9c, 0x5d, 0xe5, 0xff, 0x0e, 0xe9, 0xb6, 0x1c, 0xa3, 0xdb, 0xd9, 0x61, 0x74, 0x5b, 0xb9, 0x0a, - 0xa6, 0x76, 0x6d, 0x6c, 0x95, 0x77, 0x34, 0xbd, 0xe3, 0x5d, 0xce, 0xe9, 0x27, 0xa0, 0xb7, 0x64, - 0x45, 0x4f, 0xac, 0x84, 0xea, 0xd2, 0x5f, 0x8c, 0x11, 0x7d, 0xeb, 0x69, 0x00, 0x56, 0xd9, 0x0d, - 0xab, 0xc3, 0x94, 0x35, 0x94, 0xe2, 0xf2, 0x77, 0x5e, 0xef, 0x74, 0x74, 0x63, 0xcb, 0xdf, 0xf7, - 0x0f, 0x12, 0xd0, 0xaf, 0xca, 0x22, 0x27, 0x58, 0x92, 0xf2, 0x96, 0xac, 0x35, 0x3d, 0x24, 0x8d, - 0xb9, 0xdf, 0xdd, 0xdf, 0x74, 0xf2, 0x4a, 0x01, 0x66, 0x48, 0x1a, 0x6b, 0x81, 0x85, 0x09, 0xb7, - 0x0f, 0xf6, 0xc8, 0xad, 0x95, 0x1b, 0x2b, 0xb5, 0x45, 0xff, 0xdb, 0xa4, 0x4b, 0xd2, 0x65, 0xa6, - 0x58, 0xbd, 0x8f, 0xb4, 0xc6, 0x29, 0xe5, 0x31, 0x70, 0x45, 0xa8, 0xc3, 0x2e, 0xae, 0xaa, 0xe5, - 0xe2, 0xe2, 0x7d, 0xcd, 0xf2, 0x33, 0x2a, 0xf5, 0x46, 0x9d, 0x6f, 0x5c, 0x5e, 0x3b, 0x9a, 0x76, - 0xf9, 0x2d, 0xaf, 0x15, 0x2b, 0xab, 0xac, 0x7f, 0x5f, 0xaa, 0xa9, 0x6b, 0xc5, 0x46, 0x61, 0x06, - 0xbd, 0x44, 0x86, 0xc2, 0x32, 0x76, 0xd6, 0x4d, 0xcb, 0xd1, 0x3a, 0xab, 0xba, 0x71, 0x61, 0xc3, - 0xea, 0x70, 0x93, 0x4d, 0xe1, 0x30, 0x1d, 0xfc, 0x10, 0xc9, 0x11, 0x8c, 0xde, 0x11, 0xef, 0x92, - 0x6c, 0x81, 0x32, 0x05, 0x09, 0xe8, 0x59, 0x92, 0xc8, 0x72, 0xb7, 0x78, 0xa9, 0xc9, 0xf4, 0xe4, - 0xd9, 0xe3, 0x1e, 0x9f, 0xfb, 0xa0, 0x96, 0x47, 0xcf, 0xcd, 0xc2, 0xe4, 0x92, 0x6e, 0x68, 0x1d, - 0xfd, 0x99, 0x5c, 0xfc, 0xd2, 0xa0, 0x8f, 0xc9, 0xc4, 0xf4, 0x31, 0xd2, 0x50, 0xe3, 0xe7, 0xaf, - 0xcb, 0xa2, 0xcb, 0x0b, 0x21, 0xd9, 0x7b, 0x4c, 0x46, 0x0c, 0x9e, 0xef, 0x97, 0x44, 0x96, 0x17, - 0x06, 0xd3, 0x4b, 0x86, 0xe1, 0xc7, 0x7f, 0x30, 0x6c, 0xac, 0x9e, 0xf6, 0x3d, 0xd9, 0x4f, 0x15, - 0xa6, 0xd0, 0x9f, 0xcb, 0x80, 0x96, 0xb1, 0x73, 0x16, 0x5b, 0xfe, 0x54, 0x80, 0xf4, 0xfa, 0xcc, - 0xde, 0x0e, 0x35, 0xd9, 0x37, 0x84, 0x01, 0x3c, 0xc7, 0x03, 0x58, 0x8c, 0x69, 0x3c, 0x11, 0xa4, - 0x23, 0x1a, 0x6f, 0x05, 0xf2, 0x36, 0xf9, 0xce, 0xd4, 0xec, 0x89, 0xd1, 0xc3, 0x25, 0x21, 0x16, - 0xa6, 0x4e, 0x09, 0xab, 0x8c, 0x00, 0xfa, 0x8e, 0x3f, 0x09, 0xfa, 0x49, 0x4e, 0x3b, 0x96, 0x0e, - 0xcc, 0x6c, 0x32, 0x7d, 0xb1, 0xd2, 0x55, 0x97, 0x7e, 0xf6, 0x0d, 0x7a, 0x7f, 0x0e, 0x8e, 0xf7, - 0xab, 0x0e, 0xfa, 0xbd, 0x0c, 0xb7, 0xc3, 0x8e, 0xc9, 0x90, 0x9f, 0x61, 0x1b, 0x88, 0xee, 0x8b, - 0xf2, 0x64, 0x38, 0xe1, 0x2f, 0xc3, 0x35, 0xcc, 0x2a, 0xbe, 0x68, 0x77, 0xb0, 0xe3, 0x60, 0x8b, - 0x54, 0x6d, 0x52, 0xed, 0xff, 0x51, 0x79, 0x2a, 0x5c, 0xae, 0x1b, 0xb6, 0xde, 0xc6, 0x56, 0x43, - 0xef, 0xda, 0x45, 0xa3, 0xdd, 0xd8, 0x75, 0x4c, 0x4b, 0xd7, 0xd8, 0x55, 0x92, 0x93, 0x6a, 0xd4, - 0x67, 0xe5, 0x46, 0x28, 0xe8, 0x76, 0xcd, 0x38, 0x6f, 0x6a, 0x56, 0x5b, 0x37, 0xb6, 0x56, 0x75, - 0xdb, 0x61, 0x1e, 0xc0, 0xfb, 0xd2, 0xd1, 0x3f, 0xc8, 0xa2, 0x87, 0xe9, 0x06, 0xc0, 0x1a, 0xd1, - 0xa1, 0xfc, 0xa2, 0x2c, 0x72, 0x3c, 0x2e, 0x19, 0xed, 0x64, 0xca, 0xf2, 0x9c, 0x71, 0x1b, 0x12, - 0xfd, 0x47, 0x70, 0xd2, 0xb5, 0xd0, 0x74, 0xcf, 0x10, 0x38, 0x5b, 0x56, 0x2b, 0x4b, 0x95, 0xb2, - 0x6b, 0x56, 0x9c, 0x80, 0x63, 0xc1, 0xb7, 0xc5, 0xfb, 0x9a, 0xf5, 0x72, 0xb5, 0x51, 0x98, 0x74, - 0xfb, 0x29, 0x9a, 0xbc, 0x54, 0xac, 0xac, 0x96, 0x17, 0x9b, 0x8d, 0x9a, 0xfb, 0x65, 0x71, 0x38, - 0xd3, 0x02, 0x3d, 0x98, 0x85, 0xa3, 0x44, 0xb6, 0x97, 0x88, 0x54, 0x5d, 0xa1, 0xf4, 0xf8, 0xda, - 0xfa, 0x00, 0x4d, 0x51, 0xf1, 0xa2, 0x4f, 0x0b, 0xdf, 0x94, 0x19, 0x82, 0xb0, 0xa7, 0x8c, 0x08, - 0xcd, 0xf8, 0xb6, 0x24, 0x12, 0xa1, 0x42, 0x98, 0x6c, 0x32, 0xa5, 0xf8, 0xb7, 0x71, 0x8f, 0x38, - 0xd1, 0xe0, 0x13, 0x2b, 0xb3, 0x44, 0x7e, 0x7e, 0xc6, 0x7a, 0x45, 0x25, 0xea, 0x30, 0x07, 0x40, - 0x52, 0x88, 0x06, 0x51, 0x3d, 0xe8, 0x3b, 0x5e, 0x45, 0xe9, 0x41, 0xb1, 0xd4, 0xa8, 0x9c, 0x2d, - 0x47, 0xe9, 0xc1, 0xa7, 0x64, 0x98, 0x5c, 0xc6, 0x8e, 0x3b, 0xa7, 0xb2, 0xd1, 0xd3, 0x04, 0xd6, - 0x7f, 0x5c, 0x33, 0xa6, 0x63, 0xb6, 0xb4, 0x8e, 0xbf, 0x0c, 0x40, 0xdf, 0xd0, 0x2f, 0x0c, 0x63, - 0x82, 0x78, 0x45, 0x47, 0x8c, 0x57, 0x3f, 0x0e, 0x39, 0xc7, 0xfd, 0xcc, 0x96, 0xa1, 0x7f, 0x24, - 0x72, 0xb8, 0x72, 0x89, 0x2c, 0x6a, 0x8e, 0xa6, 0xd2, 0xfc, 0xa1, 0xd1, 0x49, 0xd0, 0x76, 0x89, - 0x60, 0xe4, 0x07, 0xd1, 0xfe, 0xfc, 0x3b, 0x19, 0x4e, 0xd0, 0xf6, 0x51, 0xec, 0x76, 0xeb, 0x8e, - 0x69, 0x61, 0x15, 0xb7, 0xb0, 0xde, 0x75, 0x7a, 0xd6, 0xf7, 0x2c, 0x9a, 0xea, 0x6d, 0x36, 0xb3, - 0x57, 0xf4, 0x5a, 0x59, 0x34, 0x06, 0xf3, 0xbe, 0xf6, 0xd8, 0x53, 0x5e, 0x44, 0x63, 0xff, 0xb0, - 0x24, 0x12, 0x55, 0x39, 0x21, 0xf1, 0x64, 0x40, 0x7d, 0xe0, 0x10, 0x80, 0xf2, 0x56, 0x6e, 0xd4, - 0x72, 0xa9, 0x5c, 0x59, 0x77, 0x07, 0x81, 0xab, 0xe1, 0xca, 0xf5, 0x0d, 0xb5, 0xb4, 0x52, 0xac, - 0x97, 0x9b, 0x6a, 0x79, 0xb9, 0x52, 0x6f, 0x30, 0xa7, 0x2c, 0xfa, 0xd7, 0x84, 0x72, 0x15, 0x9c, - 0xaa, 0x6f, 0x2c, 0xd4, 0x4b, 0x6a, 0x65, 0x9d, 0xa4, 0xab, 0xe5, 0x6a, 0xf9, 0x1c, 0xfb, 0x3a, - 0x89, 0xde, 0x5b, 0x80, 0x69, 0x77, 0x02, 0x50, 0xa7, 0xf3, 0x02, 0xf4, 0x8d, 0x2c, 0x4c, 0xab, - 0xd8, 0x36, 0x3b, 0x7b, 0x64, 0x8e, 0x30, 0xae, 0xa9, 0xc7, 0xb7, 0x64, 0xd1, 0xf3, 0xdb, 0x21, - 0x66, 0xe7, 0x43, 0x8c, 0x46, 0x4f, 0x34, 0xb5, 0x3d, 0x4d, 0xef, 0x68, 0xe7, 0x59, 0x57, 0x33, - 0xa9, 0x06, 0x09, 0xca, 0x3c, 0x28, 0xe6, 0x45, 0x03, 0x5b, 0xf5, 0xd6, 0xc5, 0xb2, 0xb3, 0x5d, - 0x6c, 0xb7, 0x2d, 0x6c, 0xdb, 0x6c, 0xf5, 0xa2, 0xcf, 0x17, 0xe5, 0x06, 0x38, 0x4a, 0x52, 0x43, - 0x99, 0xa9, 0x83, 0x4c, 0x6f, 0xb2, 0x9f, 0xb3, 0x68, 0x5c, 0xf2, 0x72, 0xe6, 0x42, 0x39, 0x83, - 0xe4, 0xf0, 0x71, 0x89, 0x3c, 0x7f, 0x4a, 0xe7, 0x1a, 0x98, 0x36, 0xb4, 0x1d, 0x5c, 0x7e, 0xa0, - 0xab, 0x5b, 0xd8, 0x26, 0x8e, 0x31, 0xb2, 0x1a, 0x4e, 0x42, 0xef, 0x17, 0x3a, 0x6f, 0x2e, 0x26, - 0xb1, 0x64, 0xba, 0xbf, 0x3c, 0x84, 0xea, 0xf7, 0xe9, 0x67, 0x64, 0xf4, 0x5e, 0x19, 0x66, 0x18, - 0x53, 0x45, 0xe3, 0x52, 0xa5, 0x8d, 0xae, 0xe6, 0x8c, 0x5f, 0xcd, 0x4d, 0xf3, 0x8c, 0x5f, 0xf2, - 0x82, 0x7e, 0x59, 0x16, 0x75, 0x77, 0xee, 0x53, 0x71, 0x52, 0x46, 0xb4, 0xe3, 0xe8, 0xa6, 0xb9, - 0xcb, 0x1c, 0x55, 0x27, 0x55, 0xfa, 0x92, 0xe6, 0xa2, 0x1e, 0xfa, 0x43, 0x21, 0x67, 0x6a, 0xc1, - 0x6a, 0x1c, 0x12, 0x80, 0x1f, 0x93, 0x61, 0x8e, 0x71, 0x55, 0x67, 0xe7, 0x7c, 0x84, 0x0e, 0xbc, - 0xfd, 0x8a, 0xb0, 0x21, 0xd8, 0xa7, 0xfe, 0xac, 0xa4, 0x47, 0x0d, 0x90, 0x1f, 0x14, 0x0a, 0x8e, - 0x26, 0x5c, 0x91, 0x43, 0x82, 0xf2, 0xad, 0x59, 0x98, 0xde, 0xb0, 0xb1, 0xc5, 0xfc, 0xf6, 0xd1, - 0xc3, 0x59, 0x90, 0x97, 0x31, 0xb7, 0x91, 0xfa, 0x7c, 0x61, 0x0f, 0xdf, 0x70, 0x65, 0x43, 0x44, - 0x5d, 0x1b, 0x29, 0x02, 0xb6, 0xeb, 0x61, 0x8e, 0x8a, 0xb4, 0xe8, 0x38, 0xae, 0x91, 0xe8, 0x79, - 0xd3, 0xf6, 0xa4, 0x8e, 0x62, 0xab, 0x88, 0x94, 0xe5, 0x66, 0x29, 0xb9, 0x3c, 0xad, 0xe2, 0x4d, - 0x3a, 0x9f, 0xcd, 0xaa, 0x3d, 0xa9, 0xca, 0x2d, 0x70, 0x99, 0xd9, 0xc5, 0xf4, 0xfc, 0x4a, 0x28, - 0x73, 0x8e, 0x64, 0xee, 0xf7, 0x09, 0x7d, 0x43, 0xc8, 0x57, 0x57, 0x5c, 0x3a, 0xc9, 0x74, 0xa1, - 0x3b, 0x1a, 0x93, 0xe4, 0x38, 0x14, 0xdc, 0x1c, 0x64, 0xff, 0x45, 0x2d, 0xd7, 0x6b, 0xab, 0x67, - 0xcb, 0xfd, 0x97, 0x31, 0x72, 0xe8, 0x39, 0x32, 0x4c, 0x2d, 0x58, 0xa6, 0xd6, 0x6e, 0x69, 0xb6, - 0x83, 0xbe, 0x23, 0xc1, 0xcc, 0xba, 0x76, 0xa9, 0x63, 0x6a, 0x6d, 0xe2, 0xdf, 0xdf, 0xd3, 0x17, - 0x74, 0xe9, 0x27, 0xaf, 0x2f, 0x60, 0xaf, 0xfc, 0xc1, 0x40, 0xff, 0xe8, 0x5e, 0x46, 0xe4, 0x42, - 0x4d, 0x7f, 0x9b, 0x4f, 0xea, 0x17, 0xac, 0xd4, 0xe3, 0x6b, 0x3e, 0xcc, 0x53, 0x84, 0x45, 0xf9, - 0x5e, 0xb1, 0xf0, 0xa3, 0x22, 0x24, 0x0f, 0x67, 0x57, 0xfe, 0xb9, 0x93, 0x90, 0x5f, 0xc4, 0xc4, - 0x8a, 0xfb, 0x1f, 0x12, 0x4c, 0xd4, 0xb1, 0x43, 0x2c, 0xb8, 0xdb, 0x38, 0x4f, 0xe1, 0x36, 0xc9, - 0x10, 0x38, 0xb1, 0x7b, 0xef, 0xee, 0x64, 0x3d, 0x74, 0xde, 0x9a, 0x3c, 0x27, 0xf0, 0x48, 0xa4, - 0xe5, 0xce, 0xb3, 0x32, 0x0f, 0xe4, 0x91, 0x18, 0x4b, 0x2a, 0x7d, 0x5f, 0xab, 0xb7, 0x4b, 0xcc, - 0xb5, 0x2a, 0xd4, 0xeb, 0xbd, 0x32, 0xac, 0x9f, 0xb1, 0xde, 0x66, 0x8c, 0xf9, 0x18, 0xe7, 0xa8, - 0x27, 0xc1, 0x04, 0x95, 0xb9, 0x37, 0x1f, 0xed, 0xf5, 0x53, 0xa0, 0x24, 0xc8, 0xd9, 0x6b, 0x2f, - 0xa7, 0xa0, 0x8b, 0x5a, 0x74, 0xe1, 0x63, 0x89, 0x41, 0x30, 0x53, 0xc5, 0xce, 0x45, 0xd3, 0xba, - 0x50, 0x77, 0x34, 0x07, 0xa3, 0x7f, 0x93, 0x40, 0xae, 0x63, 0x27, 0x1c, 0xfd, 0xa4, 0x0a, 0xc7, - 0x68, 0x85, 0x58, 0x46, 0xd2, 0x7f, 0xd3, 0x8a, 0x5c, 0xd3, 0x57, 0x08, 0xa1, 0x7c, 0xea, 0xfe, - 0x5f, 0xd1, 0x6f, 0xf6, 0x0d, 0xfa, 0x24, 0xf5, 0x99, 0x34, 0x30, 0xc9, 0x84, 0x19, 0x74, 0x15, - 0x2c, 0x42, 0x4f, 0xdf, 0x27, 0x64, 0x56, 0x8b, 0xd1, 0x3c, 0x9c, 0xae, 0xe0, 0x83, 0x57, 0x40, - 0xb6, 0xb4, 0xad, 0x39, 0xe8, 0x6d, 0x32, 0x40, 0xb1, 0xdd, 0x5e, 0xa3, 0x3e, 0xe0, 0x61, 0x87, - 0xb4, 0x33, 0x30, 0xd3, 0xda, 0xd6, 0x82, 0xbb, 0x4d, 0x68, 0x7f, 0xc0, 0xa5, 0x29, 0x4f, 0x0e, - 0x9c, 0xc9, 0xa9, 0x54, 0x51, 0x0f, 0x4c, 0x6e, 0x19, 0x8c, 0xb6, 0xef, 0x68, 0xce, 0x87, 0xc2, - 0x8c, 0x3d, 0x42, 0xe7, 0xfe, 0x3e, 0x1f, 0xb0, 0x17, 0x3d, 0x87, 0x63, 0xa4, 0xfd, 0x03, 0x36, - 0x41, 0x42, 0xc2, 0x93, 0xde, 0x62, 0x01, 0x3d, 0xe2, 0xf9, 0x1a, 0x4b, 0xe8, 0x5a, 0xa5, 0xdc, - 0xd6, 0x3d, 0xd1, 0xb2, 0x80, 0x59, 0xe8, 0xa1, 0x4c, 0x32, 0xf8, 0xe2, 0x05, 0x77, 0x37, 0xcc, - 0xe2, 0xb6, 0xee, 0x60, 0xaf, 0x96, 0x4c, 0x80, 0x71, 0x10, 0xf3, 0x3f, 0xa0, 0x67, 0x0b, 0x07, - 0x5d, 0x23, 0x02, 0xdd, 0x5f, 0xa3, 0x88, 0xf6, 0x27, 0x16, 0x46, 0x4d, 0x8c, 0x66, 0xfa, 0x60, - 0xfd, 0x82, 0x0c, 0x27, 0x1a, 0xe6, 0xd6, 0x56, 0x07, 0x7b, 0x62, 0xc2, 0xd4, 0x3b, 0x13, 0x69, - 0xa3, 0x84, 0x8b, 0xec, 0x04, 0x99, 0xf7, 0xeb, 0xfe, 0x51, 0x32, 0xf7, 0x85, 0x3f, 0x31, 0x15, - 0x3b, 0x8b, 0x22, 0xe2, 0xea, 0xcb, 0x67, 0x04, 0x0a, 0x62, 0x01, 0x9f, 0x85, 0xc9, 0xa6, 0x0f, - 0xc4, 0xe7, 0x25, 0x98, 0xa5, 0x37, 0x57, 0x7a, 0x0a, 0x7a, 0xef, 0x08, 0x01, 0x40, 0xdf, 0xc9, - 0x88, 0xfa, 0xd9, 0x12, 0x99, 0x70, 0x9c, 0x44, 0x88, 0x58, 0x2c, 0xa8, 0xca, 0x40, 0x72, 0xe9, - 0x8b, 0xf6, 0x4f, 0x64, 0x98, 0x5e, 0xc6, 0x5e, 0x4b, 0xb3, 0x13, 0xf7, 0x44, 0x67, 0x60, 0x86, - 0x5c, 0xdf, 0x56, 0x63, 0xc7, 0x24, 0xe9, 0xaa, 0x19, 0x97, 0xa6, 0x5c, 0x07, 0xb3, 0xe7, 0xf1, - 0xa6, 0x69, 0xe1, 0x1a, 0x77, 0x96, 0x92, 0x4f, 0x8c, 0x08, 0x4f, 0xc7, 0xc5, 0x41, 0x5b, 0xe0, - 0xb1, 0xb9, 0x69, 0xbf, 0x30, 0x43, 0x55, 0x89, 0x18, 0x73, 0x9e, 0x02, 0x93, 0x0c, 0x79, 0xcf, - 0x4c, 0x8b, 0xeb, 0x17, 0xfd, 0xbc, 0xe8, 0x35, 0x3e, 0xa2, 0x65, 0x0e, 0xd1, 0x27, 0x26, 0x61, - 0x62, 0x2c, 0xf7, 0xbb, 0x17, 0x42, 0xe5, 0x2f, 0x5c, 0xaa, 0xb4, 0x6d, 0xb4, 0x96, 0x0c, 0xd3, - 0xd3, 0x00, 0x7e, 0xe3, 0xf0, 0xc2, 0x5a, 0x84, 0x52, 0xf8, 0xc8, 0xf5, 0xb1, 0x07, 0xf5, 0x7a, - 0xc5, 0x41, 0xd8, 0x19, 0x31, 0x30, 0x62, 0x07, 0xfc, 0x44, 0x38, 0x49, 0x1f, 0x9d, 0x4f, 0xca, - 0x70, 0xc2, 0x3f, 0x7f, 0xb4, 0xaa, 0xd9, 0x41, 0xbb, 0x2b, 0x25, 0x83, 0x88, 0x3b, 0xf0, 0xe1, - 0x37, 0x96, 0x6f, 0x26, 0x1b, 0x33, 0xfa, 0x72, 0x32, 0x5a, 0x74, 0x94, 0x9b, 0xe0, 0x98, 0xb1, - 0xbb, 0xe3, 0x4b, 0x9d, 0xb4, 0x78, 0xd6, 0xc2, 0xf7, 0x7f, 0x48, 0x32, 0x32, 0x89, 0x30, 0x3f, - 0x96, 0x39, 0x25, 0x77, 0xa4, 0xeb, 0x09, 0x89, 0x60, 0x44, 0xff, 0x92, 0x49, 0xd4, 0xbb, 0x0d, - 0x3e, 0xf3, 0x95, 0xa0, 0x97, 0x3a, 0xc4, 0x03, 0x5f, 0x67, 0x26, 0x20, 0x57, 0xde, 0xe9, 0x3a, - 0x97, 0xce, 0x3c, 0x16, 0x66, 0xeb, 0x8e, 0x85, 0xb5, 0x9d, 0xd0, 0xce, 0x80, 0x63, 0x5e, 0xc0, - 0x86, 0xb7, 0x33, 0x40, 0x5e, 0x6e, 0xbf, 0x0d, 0x26, 0x0c, 0xb3, 0xa9, 0xed, 0x3a, 0xdb, 0xca, - 0xd5, 0xfb, 0x8e, 0xd4, 0x33, 0xf0, 0x6b, 0x2c, 0x86, 0xd1, 0x97, 0xef, 0x20, 0x6b, 0xc3, 0x79, - 0xc3, 0x2c, 0xee, 0x3a, 0xdb, 0x0b, 0x57, 0x7d, 0xec, 0x6f, 0x4f, 0x67, 0x3e, 0xf5, 0xb7, 0xa7, - 0x33, 0x5f, 0xfa, 0xdb, 0xd3, 0x99, 0x5f, 0xf9, 0xca, 0xe9, 0x23, 0x9f, 0xfa, 0xca, 0xe9, 0x23, - 0x9f, 0xff, 0xca, 0xe9, 0x23, 0x3f, 0x29, 0x75, 0xcf, 0x9f, 0xcf, 0x13, 0x2a, 0x4f, 0xfa, 0x7f, - 0x03, 0x00, 0x00, 0xff, 0xff, 0x26, 0x07, 0x39, 0x30, 0x26, 0x08, 0x02, 0x00, + 0xa9, 0x9c, 0x88, 0x4e, 0xbd, 0xcf, 0xd7, 0xa9, 0xff, 0xc4, 0xe9, 0xd4, 0xf2, 0xc1, 0x45, 0x92, + 0xbe, 0x6e, 0xbd, 0xda, 0xdf, 0x18, 0xf2, 0xb7, 0xed, 0x76, 0x52, 0xd8, 0xac, 0x0b, 0xfb, 0x23, + 0x65, 0x39, 0x7f, 0x24, 0xfe, 0x3e, 0x8a, 0x04, 0x33, 0x61, 0x9e, 0xeb, 0x08, 0x5d, 0x9a, 0x03, + 0xc9, 0xf0, 0xb8, 0x93, 0x8c, 0xd6, 0x50, 0x73, 0xdd, 0xd8, 0x82, 0xc6, 0xb0, 0xb6, 0x34, 0x07, + 0xf9, 0x25, 0xa3, 0xed, 0x60, 0x1b, 0x7d, 0x89, 0xcd, 0x74, 0x5f, 0x9d, 0xe2, 0x00, 0xb0, 0x08, + 0xf9, 0x4d, 0x52, 0x1a, 0x33, 0x99, 0x6f, 0x12, 0x6b, 0x3d, 0x94, 0x43, 0x8d, 0xfd, 0x9b, 0x34, + 0x3a, 0x5f, 0x0f, 0x99, 0x91, 0x4d, 0x91, 0x13, 0x44, 0xe7, 0x1b, 0xcc, 0xc2, 0x58, 0x2e, 0xa6, + 0xca, 0x6b, 0x78, 0xc7, 0x1d, 0xe3, 0x2f, 0xa4, 0x87, 0x70, 0x01, 0x64, 0xa3, 0xd5, 0x25, 0x9d, + 0xe3, 0x94, 0xe6, 0x3e, 0x26, 0xf5, 0x15, 0xea, 0x15, 0x15, 0x65, 0x79, 0xdc, 0xbe, 0x42, 0x42, + 0x5c, 0xa4, 0x8f, 0xd9, 0x77, 0x89, 0xa3, 0x68, 0xa7, 0xad, 0x37, 0xb1, 0xcb, 0x7d, 0x6a, 0xa8, + 0xd1, 0x9e, 0x2c, 0xeb, 0xf5, 0x64, 0xa1, 0x76, 0x9a, 0x3b, 0x40, 0x3b, 0x1d, 0x76, 0x19, 0xd2, + 0x97, 0x39, 0xa9, 0xf8, 0xa1, 0x2d, 0x43, 0xc6, 0xb2, 0x31, 0x86, 0x6b, 0x47, 0xbd, 0x83, 0xb4, + 0x63, 0x6d, 0xad, 0xc3, 0x6e, 0xd2, 0x30, 0x61, 0x8d, 0xec, 0xd0, 0xec, 0x30, 0x9b, 0x34, 0xd1, + 0x3c, 0x8c, 0x01, 0xad, 0x39, 0x86, 0xd6, 0x67, 0xd9, 0x30, 0x9a, 0xf2, 0x3e, 0x69, 0xd7, 0xb2, + 0x9d, 0x64, 0xfb, 0xa4, 0x2e, 0x77, 0x1a, 0xf9, 0x2f, 0xe9, 0xc1, 0x2b, 0xfe, 0x5c, 0xf5, 0xa8, + 0x86, 0xcf, 0x04, 0x07, 0xaf, 0x06, 0x31, 0x90, 0x3e, 0xbc, 0x6f, 0x3e, 0xa4, 0xc1, 0x73, 0xd8, + 0xe6, 0xc8, 0xda, 0xc0, 0xc8, 0x86, 0xce, 0x61, 0x9a, 0x63, 0x34, 0x0f, 0xe9, 0xe3, 0xf5, 0xad, + 0xd0, 0xc0, 0xf9, 0xc6, 0x31, 0x0e, 0x9c, 0x5e, 0xcb, 0xcc, 0x0d, 0xd9, 0x32, 0x87, 0xdd, 0xff, + 0x61, 0xb2, 0x1e, 0xdd, 0x80, 0x39, 0xcc, 0xfe, 0x4f, 0x0c, 0x13, 0xe9, 0x23, 0xfe, 0x26, 0x19, + 0x72, 0xb5, 0xf1, 0x8f, 0x97, 0xc3, 0xce, 0x45, 0x88, 0xac, 0x6a, 0x23, 0x1b, 0x2e, 0x87, 0x99, + 0x8b, 0x44, 0xb2, 0x30, 0x86, 0xc0, 0xfb, 0x47, 0x61, 0x86, 0x2c, 0x89, 0x78, 0xdb, 0xac, 0xdf, + 0x62, 0xa3, 0xe6, 0xc3, 0x29, 0xb6, 0xd5, 0x7b, 0x60, 0xd2, 0xdb, 0xbf, 0x63, 0x23, 0xe7, 0xbc, + 0x58, 0xfb, 0xf4, 0xb8, 0xd4, 0xfc, 0xff, 0x0f, 0xe4, 0x0c, 0x31, 0xf2, 0xbd, 0xda, 0x61, 0x9d, + 0x21, 0x0e, 0x75, 0xbf, 0xf6, 0x4f, 0x83, 0x11, 0xf5, 0xbf, 0xa6, 0x87, 0x79, 0xef, 0x3e, 0x6e, + 0xb6, 0xcf, 0x3e, 0xee, 0x47, 0xc3, 0x58, 0xd6, 0x78, 0x2c, 0xef, 0x14, 0x15, 0xe1, 0x08, 0xc7, + 0xda, 0x77, 0xf9, 0x70, 0x9e, 0xe5, 0xe0, 0x5c, 0x38, 0x10, 0x2f, 0x63, 0x38, 0xf8, 0x98, 0x0d, + 0xc6, 0xdc, 0x8f, 0xa5, 0xd8, 0x8e, 0x7b, 0x4e, 0x55, 0x64, 0xf7, 0x9d, 0xaa, 0xe0, 0x5a, 0x7a, + 0xee, 0x80, 0x2d, 0xfd, 0x63, 0x61, 0xed, 0xa8, 0xf3, 0xda, 0xf1, 0x54, 0x71, 0x44, 0x46, 0x37, + 0x32, 0xbf, 0xdb, 0x57, 0x8f, 0x73, 0x9c, 0x7a, 0x94, 0x0e, 0xc6, 0x4c, 0xfa, 0xfa, 0xf1, 0x47, + 0xde, 0x84, 0xf6, 0x90, 0xdb, 0xfb, 0xb0, 0x5b, 0xc5, 0x9c, 0x10, 0x47, 0x36, 0x72, 0x0f, 0xb3, + 0x55, 0x3c, 0x88, 0x93, 0x31, 0xc4, 0x62, 0x9b, 0x85, 0x69, 0xc2, 0xd3, 0x39, 0xa3, 0xb5, 0x85, + 0x1d, 0xf4, 0x1a, 0xea, 0xa3, 0xe8, 0x45, 0xbe, 0x1c, 0x51, 0x78, 0xa2, 0xa8, 0xf3, 0xae, 0x49, + 0x3d, 0x3a, 0x28, 0x93, 0xf3, 0x21, 0x06, 0xc7, 0x1d, 0x41, 0x71, 0x20, 0x07, 0xe9, 0x43, 0xf6, + 0x61, 0xea, 0x6e, 0xb3, 0xaa, 0x5f, 0xb2, 0x76, 0x1d, 0xf4, 0xe0, 0x08, 0x3a, 0xe8, 0x05, 0xc8, + 0xb7, 0x09, 0x35, 0x76, 0x2c, 0x23, 0x7e, 0xba, 0xc3, 0x44, 0x40, 0xcb, 0xd7, 0xd8, 0x9f, 0x49, + 0xcf, 0x66, 0x04, 0x72, 0xa4, 0x74, 0xc6, 0x7d, 0x36, 0x63, 0x40, 0xf9, 0x63, 0xb9, 0x63, 0x67, + 0xd2, 0x2d, 0xdd, 0xd8, 0x31, 0x9c, 0x11, 0x45, 0x70, 0x68, 0xbb, 0xb4, 0xbc, 0x08, 0x0e, 0xe4, + 0x25, 0xe9, 0x89, 0xd1, 0x90, 0x54, 0xdc, 0xdf, 0xc7, 0x7d, 0x62, 0x34, 0xbe, 0xf8, 0xf4, 0x31, + 0xf9, 0x35, 0xda, 0xb2, 0xce, 0x52, 0xe7, 0xdb, 0x14, 0xfd, 0x7a, 0x87, 0x6e, 0x2c, 0x94, 0xb5, + 0xc3, 0x6b, 0x2c, 0x7d, 0xcb, 0x4f, 0x1f, 0x98, 0xff, 0xfe, 0xe3, 0x90, 0x5b, 0xc4, 0xe7, 0x77, + 0xb7, 0xd0, 0x1d, 0x30, 0x59, 0xb7, 0x31, 0x2e, 0x9b, 0x9b, 0x96, 0x2b, 0x5d, 0xc7, 0x7d, 0xf6, + 0x20, 0x61, 0x6f, 0x2e, 0x1e, 0xdb, 0x58, 0x6f, 0x05, 0xe7, 0xcf, 0xbc, 0x57, 0xf4, 0x52, 0x09, + 0xb2, 0x35, 0x47, 0x77, 0xd0, 0x94, 0x8f, 0x2d, 0x7a, 0x30, 0x8c, 0xc5, 0x1d, 0x3c, 0x16, 0xd7, + 0x73, 0xb2, 0x20, 0x1c, 0xcc, 0xbb, 0xff, 0x47, 0x00, 0x80, 0x60, 0xf2, 0xfe, 0xae, 0x65, 0xba, + 0x39, 0xbc, 0x23, 0x90, 0xde, 0x3b, 0x7a, 0x95, 0x2f, 0xee, 0xbb, 0x38, 0x71, 0x3f, 0x56, 0xac, + 0x88, 0x31, 0xac, 0xb4, 0x49, 0x30, 0xe5, 0x8a, 0x76, 0x05, 0xeb, 0xad, 0x2e, 0xfa, 0xb1, 0x40, + 0xf9, 0x23, 0xc4, 0x8c, 0xde, 0x2f, 0x1c, 0x8c, 0x93, 0xd6, 0xca, 0x27, 0x1e, 0xed, 0xd1, 0xe1, + 0x6d, 0xfe, 0x4b, 0x7c, 0x30, 0x92, 0x9b, 0x21, 0x6b, 0x98, 0x9b, 0x16, 0xf3, 0x2f, 0xbc, 0x32, + 0x82, 0xb6, 0xab, 0x13, 0x1a, 0xc9, 0x28, 0x18, 0xa9, 0x33, 0x9e, 0xad, 0xb1, 0x5c, 0x7a, 0x97, + 0x75, 0x4b, 0x47, 0xff, 0xfb, 0x40, 0x61, 0x2b, 0x0a, 0x64, 0x3b, 0xba, 0xb3, 0xcd, 0x8a, 0x26, + 0xcf, 0xae, 0x8d, 0xbc, 0x6b, 0xea, 0xa6, 0x65, 0x5e, 0xda, 0x31, 0x9e, 0xe1, 0xdf, 0xad, 0xcb, + 0xa5, 0xb9, 0x9c, 0x6f, 0x61, 0x13, 0xdb, 0xba, 0x83, 0x6b, 0x7b, 0x5b, 0x64, 0x8e, 0x35, 0xa9, + 0x85, 0x93, 0x12, 0xeb, 0xbf, 0xcb, 0x71, 0xb4, 0xfe, 0x6f, 0x1a, 0x6d, 0x4c, 0x22, 0x35, 0x31, + 0xfd, 0xf7, 0xde, 0x13, 0xe9, 0x7f, 0x9f, 0x22, 0xd2, 0x47, 0xe3, 0x7b, 0x12, 0xcc, 0xd4, 0x5c, + 0x85, 0xab, 0xed, 0xee, 0xec, 0xe8, 0xf6, 0x25, 0x74, 0x6d, 0x80, 0x4a, 0x48, 0x35, 0x33, 0xbc, + 0x5f, 0xca, 0x1f, 0x0a, 0x5f, 0x2b, 0xcd, 0x9a, 0x76, 0xa8, 0x84, 0xc4, 0xed, 0xe0, 0xf1, 0x90, + 0x73, 0xd5, 0xdb, 0xf3, 0xb8, 0x8c, 0x6d, 0x08, 0x34, 0xa7, 0x60, 0x44, 0xab, 0x81, 0xbc, 0x8d, + 0x21, 0x9a, 0x86, 0x04, 0x47, 0x6b, 0x8e, 0xde, 0xbc, 0xb0, 0x6c, 0xd9, 0xd6, 0xae, 0x63, 0x98, + 0xb8, 0x8b, 0x1e, 0x15, 0x20, 0xe0, 0xe9, 0x7f, 0x26, 0xd0, 0x7f, 0xf4, 0x83, 0x8c, 0xe8, 0x28, + 0xea, 0x77, 0xab, 0x61, 0xf2, 0x11, 0x01, 0xaa, 0xc4, 0xc6, 0x45, 0x11, 0x8a, 0xe9, 0x0b, 0xed, + 0x8d, 0x32, 0x14, 0xd4, 0x07, 0x3a, 0x96, 0xed, 0xac, 0x5a, 0x4d, 0xbd, 0xdd, 0x75, 0x2c, 0x1b, + 0xa3, 0x6a, 0xac, 0xd4, 0xdc, 0x1e, 0xa6, 0x65, 0x35, 0x83, 0xc1, 0x91, 0xbd, 0x85, 0xd5, 0x4e, + 0xe6, 0x75, 0xfc, 0xc3, 0xc2, 0xbb, 0x8c, 0x54, 0x2a, 0xbd, 0x1c, 0x45, 0xe8, 0x79, 0xbf, 0x2e, + 0x2d, 0xd9, 0x61, 0x09, 0xb1, 0x9d, 0x47, 0x21, 0xa6, 0xc6, 0xb0, 0x54, 0x2e, 0xc1, 0x6c, 0x6d, + 0xf7, 0xbc, 0x4f, 0xa4, 0x1b, 0x36, 0x42, 0x5e, 0x2b, 0x1c, 0xa5, 0x82, 0x29, 0x5e, 0x98, 0x50, + 0x84, 0x7c, 0xaf, 0x83, 0xd9, 0x6e, 0x38, 0x1b, 0xc3, 0x9b, 0x4f, 0x14, 0x8c, 0x4e, 0x31, 0xb8, + 0xd4, 0xf4, 0x05, 0xf8, 0x6e, 0x09, 0x66, 0xab, 0x1d, 0x6c, 0xe2, 0x16, 0xf5, 0x82, 0xe4, 0x04, + 0xf8, 0xd2, 0x84, 0x02, 0xe4, 0x08, 0x45, 0x08, 0x30, 0xf0, 0x58, 0x5e, 0xf4, 0x84, 0x17, 0x24, + 0x24, 0x12, 0x5c, 0x5c, 0x69, 0xe9, 0x0b, 0xee, 0x8b, 0x12, 0x4c, 0x6b, 0xbb, 0xe6, 0xba, 0x6d, + 0xb9, 0xa3, 0xb1, 0x8d, 0xee, 0x0c, 0x3a, 0x88, 0x9b, 0xe0, 0x58, 0x6b, 0xd7, 0x26, 0xeb, 0x4f, + 0x65, 0xb3, 0x86, 0x9b, 0x96, 0xd9, 0xea, 0x92, 0x7a, 0xe4, 0xb4, 0xfd, 0x1f, 0x6e, 0xcf, 0x3e, + 0xf7, 0xeb, 0x72, 0x06, 0x3d, 0x5f, 0x38, 0xd4, 0x0d, 0xad, 0x7c, 0xa8, 0x68, 0xf1, 0x9e, 0x40, + 0x30, 0xa0, 0xcd, 0xa0, 0x12, 0xd2, 0x17, 0xee, 0x67, 0x25, 0x50, 0x8a, 0xcd, 0xa6, 0xb5, 0x6b, + 0x3a, 0x35, 0xdc, 0xc6, 0x4d, 0xa7, 0x6e, 0xeb, 0x4d, 0x1c, 0xb6, 0x9f, 0x0b, 0x20, 0xb7, 0x0c, + 0x9b, 0xf5, 0xc1, 0xee, 0x23, 0x93, 0xe3, 0x4b, 0x85, 0x77, 0x1c, 0x69, 0x2d, 0xf7, 0x97, 0x92, + 0x40, 0x9c, 0x62, 0xfb, 0x8a, 0x82, 0x05, 0xa5, 0x2f, 0xd5, 0x8f, 0x49, 0x30, 0xe5, 0xf5, 0xd8, + 0x5b, 0x22, 0xc2, 0xfc, 0xb5, 0x84, 0x93, 0x11, 0x9f, 0x78, 0x02, 0x19, 0xbe, 0x3d, 0xc1, 0xac, + 0x22, 0x8a, 0x7e, 0x32, 0xd1, 0x15, 0x93, 0x8b, 0xce, 0x7d, 0xad, 0x54, 0x1b, 0x4b, 0xd5, 0xd5, + 0x45, 0x55, 0x2b, 0xc8, 0xe8, 0x4b, 0x12, 0x64, 0xd7, 0x0d, 0x73, 0x2b, 0x1c, 0x5d, 0xe9, 0xb8, + 0x6b, 0x47, 0xb6, 0xf0, 0x03, 0xac, 0xa5, 0xd3, 0x17, 0xe5, 0x56, 0x38, 0x6e, 0xee, 0xee, 0x9c, + 0xc7, 0x76, 0x75, 0x93, 0x8c, 0xb2, 0xdd, 0xba, 0x55, 0xc3, 0x26, 0x35, 0x42, 0x73, 0x5a, 0xdf, + 0x6f, 0xbc, 0x09, 0x26, 0x30, 0x79, 0x70, 0x39, 0x89, 0x90, 0xb8, 0xcf, 0x94, 0x14, 0x62, 0x2a, + 0xd1, 0xb4, 0xa1, 0x0f, 0xf1, 0xf4, 0x35, 0xf5, 0x8f, 0x73, 0x70, 0xa2, 0x68, 0x5e, 0x22, 0x36, + 0x05, 0xed, 0xe0, 0x4b, 0xdb, 0xba, 0xb9, 0x85, 0xc9, 0x00, 0xe1, 0x4b, 0x3c, 0x1c, 0xa2, 0x3f, + 0xc3, 0x87, 0xe8, 0x57, 0x34, 0x98, 0xb0, 0xec, 0x16, 0xb6, 0x17, 0x2e, 0x11, 0x9e, 0x7a, 0x97, + 0x9d, 0x59, 0x9b, 0xec, 0x57, 0xc4, 0x3c, 0x23, 0x3f, 0x5f, 0xa5, 0xff, 0x6b, 0x1e, 0xa1, 0x33, + 0x37, 0xc1, 0x04, 0x4b, 0x53, 0x66, 0x60, 0xb2, 0xaa, 0x2d, 0xaa, 0x5a, 0xa3, 0xbc, 0x58, 0x38, + 0xa2, 0x5c, 0x06, 0x47, 0xcb, 0x75, 0x55, 0x2b, 0xd6, 0xcb, 0xd5, 0x4a, 0x83, 0xa4, 0x17, 0x32, + 0xe8, 0x39, 0x59, 0x51, 0xcf, 0xde, 0x78, 0x66, 0xfa, 0xc1, 0xaa, 0xc1, 0x44, 0x93, 0x66, 0x20, + 0x43, 0xe8, 0x74, 0xa2, 0xda, 0x31, 0x82, 0x34, 0x41, 0xf3, 0x08, 0x29, 0xa7, 0x01, 0x2e, 0xda, + 0x96, 0xb9, 0x15, 0x9c, 0x3a, 0x9c, 0xd4, 0x42, 0x29, 0xe8, 0xc1, 0x0c, 0xe4, 0xe9, 0x3f, 0xe4, + 0x4a, 0x12, 0xf2, 0x14, 0x08, 0xde, 0x7b, 0x77, 0x2d, 0x5e, 0x22, 0xaf, 0x60, 0xa2, 0xc5, 0x5e, + 0x5d, 0x5d, 0xa4, 0x32, 0xa0, 0x96, 0x30, 0xab, 0xca, 0xcd, 0x90, 0xa7, 0xff, 0x32, 0xaf, 0x83, + 0xe8, 0xf0, 0xa2, 0x34, 0x9b, 0xa0, 0x9f, 0xb2, 0xb8, 0x4c, 0xd3, 0xd7, 0xe6, 0x0f, 0x48, 0x30, + 0x59, 0xc1, 0x4e, 0x69, 0x1b, 0x37, 0x2f, 0xa0, 0xc7, 0xf0, 0x0b, 0xa0, 0x6d, 0x03, 0x9b, 0xce, + 0x7d, 0x3b, 0x6d, 0x7f, 0x01, 0xd4, 0x4b, 0x40, 0xcf, 0x0b, 0x77, 0xbe, 0x77, 0xf3, 0xfa, 0x73, + 0x63, 0x9f, 0xba, 0x7a, 0x25, 0x44, 0xa8, 0xcc, 0x49, 0xc8, 0xdb, 0xb8, 0xbb, 0xdb, 0xf6, 0x16, + 0xd1, 0xd8, 0x1b, 0x7a, 0xc8, 0x17, 0x67, 0x89, 0x13, 0xe7, 0xcd, 0xe2, 0x45, 0x8c, 0x21, 0x5e, + 0x69, 0x16, 0x26, 0xca, 0xa6, 0xe1, 0x18, 0x7a, 0x1b, 0x3d, 0x3f, 0x0b, 0xb3, 0x35, 0xec, 0xac, + 0xeb, 0xb6, 0xbe, 0x83, 0x1d, 0x6c, 0x77, 0xd1, 0x77, 0xf8, 0x3e, 0xa1, 0xd3, 0xd6, 0x9d, 0x4d, + 0xcb, 0xde, 0xf1, 0x54, 0xd3, 0x7b, 0x77, 0x55, 0x73, 0x0f, 0xdb, 0xdd, 0x80, 0x2f, 0xef, 0xd5, + 0xfd, 0x72, 0xd1, 0xb2, 0x2f, 0xb8, 0x83, 0x20, 0x9b, 0xa6, 0xb1, 0x57, 0x97, 0x5e, 0xdb, 0xda, + 0x5a, 0xc5, 0x7b, 0xd8, 0x0b, 0x97, 0xe6, 0xbf, 0xbb, 0x73, 0x81, 0x96, 0x55, 0xb1, 0x1c, 0xb7, + 0xd3, 0x5e, 0xb5, 0xb6, 0x68, 0xbc, 0xd8, 0x49, 0x8d, 0x4f, 0x0c, 0x72, 0xe9, 0x7b, 0x98, 0xe4, + 0xca, 0x87, 0x73, 0xb1, 0x44, 0x65, 0x1e, 0x14, 0xff, 0xb7, 0x3a, 0x6e, 0xe3, 0x1d, 0xec, 0xd8, + 0x97, 0xc8, 0xb5, 0x10, 0x93, 0x5a, 0x9f, 0x2f, 0x6c, 0x80, 0x16, 0x9f, 0xac, 0x33, 0xe9, 0xcd, + 0x73, 0x92, 0x3b, 0xd0, 0x64, 0x5d, 0x84, 0xe2, 0x58, 0xae, 0xbd, 0x92, 0x5d, 0x6b, 0xe6, 0xe5, + 0x32, 0x64, 0xc9, 0xe0, 0xf9, 0xa6, 0x0c, 0xb7, 0xc2, 0xb4, 0x83, 0xbb, 0x5d, 0x7d, 0x0b, 0x7b, + 0x2b, 0x4c, 0xec, 0x55, 0xb9, 0x0d, 0x72, 0x6d, 0x82, 0x29, 0x1d, 0x1c, 0xae, 0xe5, 0x6a, 0xe6, + 0x1a, 0x18, 0x2e, 0x2d, 0x7f, 0x24, 0x20, 0x70, 0x6b, 0xf4, 0x8f, 0x33, 0xf7, 0x40, 0x8e, 0xc2, + 0x3f, 0x05, 0xb9, 0x45, 0x75, 0x61, 0x63, 0xb9, 0x70, 0xc4, 0x7d, 0xf4, 0xf8, 0x9b, 0x82, 0xdc, + 0x52, 0xb1, 0x5e, 0x5c, 0x2d, 0x48, 0x6e, 0x3d, 0xca, 0x95, 0xa5, 0x6a, 0x41, 0x76, 0x13, 0xd7, + 0x8b, 0x95, 0x72, 0xa9, 0x90, 0x55, 0xa6, 0x61, 0xe2, 0x5c, 0x51, 0xab, 0x94, 0x2b, 0xcb, 0x85, + 0x1c, 0xfa, 0xbb, 0x30, 0x7e, 0xb7, 0xf3, 0xf8, 0x5d, 0x17, 0xc5, 0x53, 0x3f, 0xc8, 0x5e, 0xe1, + 0x43, 0x76, 0x27, 0x07, 0xd9, 0x8f, 0x8b, 0x10, 0x19, 0x83, 0x3b, 0x53, 0x1e, 0x26, 0xd6, 0x6d, + 0xab, 0x89, 0xbb, 0x5d, 0xf4, 0xeb, 0x12, 0xe4, 0x4b, 0xba, 0xd9, 0xc4, 0x6d, 0x74, 0x45, 0x00, + 0x15, 0x75, 0x15, 0xcd, 0xf8, 0xa7, 0xc5, 0xfe, 0x29, 0x23, 0xda, 0xfb, 0x31, 0xba, 0xf3, 0x94, + 0x66, 0x84, 0x7c, 0xc4, 0x7a, 0xb9, 0x58, 0x52, 0x63, 0xb8, 0x1a, 0x47, 0x82, 0x29, 0xb6, 0x1a, + 0x70, 0x1e, 0x87, 0xe7, 0xe1, 0xdf, 0xc9, 0x88, 0x4e, 0x0e, 0xbd, 0x1a, 0xf8, 0x64, 0x22, 0xe4, + 0x21, 0x36, 0x11, 0x1c, 0x44, 0x6d, 0x0c, 0x9b, 0x87, 0x12, 0x4c, 0x6f, 0x98, 0xdd, 0x7e, 0x42, + 0x11, 0x8f, 0xa3, 0xef, 0x55, 0x23, 0x44, 0xe8, 0x40, 0x71, 0xf4, 0x07, 0xd3, 0x4b, 0x5f, 0x30, + 0xdf, 0xc9, 0xc0, 0xf1, 0x65, 0x6c, 0x62, 0xdb, 0x68, 0xd2, 0x1a, 0x78, 0x92, 0xb8, 0x93, 0x97, + 0xc4, 0x63, 0x38, 0xce, 0xfb, 0xfd, 0xc1, 0x4b, 0xe0, 0xd5, 0xbe, 0x04, 0xee, 0xe6, 0x24, 0x70, + 0x93, 0x20, 0x9d, 0x31, 0xdc, 0x87, 0x3e, 0x05, 0x33, 0x15, 0xcb, 0x31, 0x36, 0x8d, 0x26, 0xf5, + 0x41, 0x7b, 0x99, 0x0c, 0xd9, 0x55, 0xa3, 0xeb, 0xa0, 0x62, 0xd0, 0x9d, 0x5c, 0x03, 0xd3, 0x86, + 0xd9, 0x6c, 0xef, 0xb6, 0xb0, 0x86, 0x75, 0xda, 0xaf, 0x4c, 0x6a, 0xe1, 0xa4, 0x60, 0x6b, 0xdf, + 0x65, 0x4b, 0xf6, 0xb6, 0xf6, 0x3f, 0x25, 0xbc, 0x0c, 0x13, 0x66, 0x81, 0x04, 0xa4, 0x8c, 0xb0, + 0xbb, 0x8a, 0x30, 0x6b, 0x86, 0xb2, 0x7a, 0x06, 0x7b, 0xef, 0x85, 0x02, 0x61, 0x72, 0x1a, 0xff, + 0x07, 0x7a, 0xaf, 0x50, 0x63, 0x1d, 0xc4, 0x50, 0x32, 0x64, 0x96, 0x86, 0x98, 0x24, 0x2b, 0x30, + 0x57, 0xae, 0xd4, 0x55, 0xad, 0x52, 0x5c, 0x65, 0x59, 0x64, 0xf4, 0x3d, 0x09, 0x72, 0x1a, 0xee, + 0xb4, 0x2f, 0x85, 0x23, 0x46, 0x33, 0x47, 0xf1, 0x8c, 0xef, 0x28, 0xae, 0x2c, 0x01, 0xe8, 0x4d, + 0xb7, 0x60, 0x72, 0xa5, 0x96, 0xd4, 0x37, 0x8e, 0x29, 0x57, 0xc1, 0xa2, 0x9f, 0x5b, 0x0b, 0xfd, + 0x89, 0x5e, 0x20, 0xbc, 0x73, 0xc4, 0x51, 0x23, 0x1c, 0x46, 0xf4, 0x09, 0xef, 0x13, 0xda, 0xec, + 0x19, 0x48, 0xee, 0x70, 0xc4, 0xff, 0x65, 0x09, 0xb2, 0x75, 0xb7, 0xb7, 0x0c, 0x75, 0x9c, 0x9f, + 0x1c, 0x4e, 0xc7, 0x5d, 0x32, 0x11, 0x3a, 0x7e, 0x17, 0xcc, 0x84, 0x35, 0x96, 0xb9, 0x4a, 0xc4, + 0xaa, 0x38, 0xf7, 0xc3, 0x30, 0x1a, 0xde, 0x87, 0x9d, 0xc3, 0x11, 0xf1, 0xc7, 0x1f, 0x0b, 0xb0, + 0x86, 0x77, 0xce, 0x63, 0xbb, 0xbb, 0x6d, 0x74, 0xd0, 0xdf, 0xcb, 0x30, 0xb5, 0x8c, 0x9d, 0x9a, + 0xa3, 0x3b, 0xbb, 0xdd, 0x9e, 0xed, 0x4e, 0xd3, 0x2a, 0xe9, 0xcd, 0x6d, 0xcc, 0xba, 0x23, 0xef, + 0x15, 0xbd, 0x53, 0x16, 0xf5, 0x27, 0x0a, 0xca, 0x99, 0xf7, 0xcb, 0x88, 0xc0, 0xe4, 0x71, 0x90, + 0x6d, 0xe9, 0x8e, 0xce, 0xb0, 0xb8, 0xa2, 0x07, 0x8b, 0x80, 0x90, 0x46, 0xb2, 0xa1, 0xdf, 0x91, + 0x44, 0x1c, 0x8a, 0x04, 0xca, 0x4f, 0x06, 0xc2, 0x7b, 0x33, 0x43, 0xa0, 0x70, 0x0c, 0x66, 0x2b, + 0xd5, 0x7a, 0x63, 0xb5, 0xba, 0xbc, 0xac, 0xba, 0xa9, 0x05, 0x59, 0x39, 0x09, 0xca, 0x7a, 0xf1, + 0xbe, 0x35, 0xb5, 0x52, 0x6f, 0x54, 0xaa, 0x8b, 0x2a, 0xfb, 0x33, 0xab, 0x1c, 0x85, 0xe9, 0x52, + 0xb1, 0xb4, 0xe2, 0x25, 0xe4, 0x94, 0x53, 0x70, 0x7c, 0x4d, 0x5d, 0x5b, 0x50, 0xb5, 0xda, 0x4a, + 0x79, 0xbd, 0xe1, 0x92, 0x59, 0xaa, 0x6e, 0x54, 0x16, 0x0b, 0x79, 0x05, 0xc1, 0xc9, 0xd0, 0x97, + 0x73, 0x5a, 0xb5, 0xb2, 0xdc, 0xa8, 0xd5, 0x8b, 0x75, 0xb5, 0x30, 0xa1, 0x5c, 0x06, 0x47, 0x4b, + 0xc5, 0x0a, 0xc9, 0x5e, 0xaa, 0x56, 0x2a, 0x6a, 0xa9, 0x5e, 0x98, 0x44, 0x3f, 0xc8, 0xc2, 0x74, + 0xb9, 0x5b, 0xd1, 0x77, 0xf0, 0x59, 0xbd, 0x6d, 0xb4, 0xd0, 0xf3, 0x43, 0x33, 0x8f, 0xeb, 0x60, + 0xd6, 0xa6, 0x8f, 0xb8, 0x55, 0x37, 0x30, 0x45, 0x73, 0x56, 0xe3, 0x13, 0xdd, 0x39, 0xb9, 0x49, + 0x08, 0x78, 0x73, 0x72, 0xfa, 0xa6, 0x2c, 0x00, 0xd0, 0xa7, 0x7a, 0x70, 0xb9, 0xeb, 0x99, 0xde, + 0xd6, 0xa4, 0xef, 0xe0, 0x2e, 0xb6, 0xf7, 0x8c, 0x26, 0xf6, 0x72, 0x6a, 0xa1, 0xbf, 0xd0, 0x57, + 0x64, 0xd1, 0xfd, 0xc5, 0x10, 0xa8, 0xa1, 0xea, 0x44, 0xf4, 0x86, 0xbf, 0x20, 0x8b, 0xec, 0x0e, + 0x0a, 0x91, 0x4c, 0xa6, 0x29, 0x2f, 0x92, 0x86, 0x5b, 0xb6, 0xad, 0x57, 0xab, 0x8d, 0xda, 0x4a, + 0x55, 0xab, 0x17, 0x64, 0x65, 0x06, 0x26, 0xdd, 0xd7, 0xd5, 0x6a, 0x65, 0xb9, 0x90, 0x55, 0x4e, + 0xc0, 0xb1, 0x95, 0x62, 0xad, 0x51, 0xae, 0x9c, 0x2d, 0xae, 0x96, 0x17, 0x1b, 0xa5, 0x95, 0xa2, + 0x56, 0x2b, 0xe4, 0x94, 0x2b, 0xe0, 0x44, 0xbd, 0xac, 0x6a, 0x8d, 0x25, 0xb5, 0x58, 0xdf, 0xd0, + 0xd4, 0x5a, 0xa3, 0x52, 0x6d, 0x54, 0x8a, 0x6b, 0x6a, 0x21, 0xef, 0x36, 0x7f, 0xf2, 0x29, 0x50, + 0x9b, 0x89, 0xfd, 0xca, 0x38, 0x19, 0xa1, 0x8c, 0x53, 0xbd, 0xca, 0x08, 0x61, 0xb5, 0xd2, 0xd4, + 0x9a, 0xaa, 0x9d, 0x55, 0x0b, 0xd3, 0xfd, 0x74, 0x6d, 0x46, 0x39, 0x0e, 0x05, 0x97, 0x87, 0x46, + 0xb9, 0xe6, 0xe5, 0x5c, 0x2c, 0xcc, 0xa2, 0x8f, 0xe5, 0xe1, 0xa4, 0x86, 0xb7, 0x8c, 0xae, 0x83, + 0xed, 0x75, 0xfd, 0xd2, 0x0e, 0x36, 0x1d, 0xaf, 0x93, 0xff, 0xd7, 0xc4, 0xca, 0xb8, 0x06, 0xb3, + 0x1d, 0x4a, 0x63, 0x0d, 0x3b, 0xdb, 0x56, 0x8b, 0x8d, 0xc2, 0x8f, 0x89, 0xec, 0x39, 0xe6, 0xd7, + 0xc3, 0xd9, 0x35, 0xfe, 0xef, 0x90, 0x6e, 0xcb, 0x31, 0xba, 0x9d, 0x1d, 0x46, 0xb7, 0x95, 0xab, + 0x60, 0x6a, 0xb7, 0x8b, 0x6d, 0x75, 0x47, 0x37, 0xda, 0xde, 0xe5, 0x9c, 0x7e, 0x02, 0x7a, 0x5b, + 0x56, 0xf4, 0xc4, 0x4a, 0xa8, 0x2e, 0xfd, 0xc5, 0x18, 0xd1, 0xb7, 0x9e, 0x06, 0x60, 0x95, 0xdd, + 0xb0, 0xdb, 0x4c, 0x59, 0x43, 0x29, 0x2e, 0x7f, 0xe7, 0x8d, 0x76, 0xdb, 0x30, 0xb7, 0xfc, 0x7d, + 0xff, 0x20, 0x01, 0xbd, 0x48, 0x16, 0x39, 0xc1, 0x92, 0x94, 0xb7, 0x64, 0xad, 0xe9, 0x05, 0xd2, + 0x98, 0xfb, 0xdd, 0xfd, 0x4d, 0x27, 0xaf, 0x14, 0x60, 0x86, 0xa4, 0xb1, 0x16, 0x58, 0x98, 0x70, + 0xfb, 0x60, 0x8f, 0xdc, 0x9a, 0x5a, 0x5f, 0xa9, 0x2e, 0xfa, 0xdf, 0x26, 0x5d, 0x92, 0x2e, 0x33, + 0xc5, 0xca, 0x7d, 0xa4, 0x35, 0x4e, 0x29, 0x8f, 0x82, 0x2b, 0x42, 0x1d, 0x76, 0x71, 0x55, 0x53, + 0x8b, 0x8b, 0xf7, 0x35, 0xd4, 0xa7, 0x95, 0x6b, 0xf5, 0x1a, 0xdf, 0xb8, 0xbc, 0x76, 0x34, 0xed, + 0xf2, 0xab, 0xae, 0x15, 0xcb, 0xab, 0xac, 0x7f, 0x5f, 0xaa, 0x6a, 0x6b, 0xc5, 0x7a, 0x61, 0x06, + 0xbd, 0x5c, 0x86, 0xc2, 0x32, 0x76, 0xd6, 0x2d, 0xdb, 0xd1, 0xdb, 0xab, 0x86, 0x79, 0x61, 0xc3, + 0x6e, 0x73, 0x93, 0x4d, 0xe1, 0x30, 0x1d, 0xfc, 0x10, 0xc9, 0x11, 0x8c, 0xde, 0x11, 0xef, 0x90, + 0x6c, 0x81, 0x32, 0x05, 0x09, 0xe8, 0x99, 0x92, 0xc8, 0x72, 0xb7, 0x78, 0xa9, 0xc9, 0xf4, 0xe4, + 0x59, 0xe3, 0x1e, 0x9f, 0xfb, 0xa0, 0x96, 0x47, 0xcf, 0xcd, 0xc2, 0xe4, 0x92, 0x61, 0xea, 0x6d, + 0xe3, 0x19, 0x5c, 0xfc, 0xd2, 0xa0, 0x8f, 0xc9, 0xc4, 0xf4, 0x31, 0xd2, 0x50, 0xe3, 0xe7, 0xaf, + 0xca, 0xa2, 0xcb, 0x0b, 0x21, 0xd9, 0x7b, 0x4c, 0x46, 0x0c, 0x9e, 0x1f, 0x94, 0x44, 0x96, 0x17, + 0x06, 0xd3, 0x4b, 0x86, 0xe1, 0x27, 0x7e, 0x38, 0x6c, 0xac, 0x9e, 0xf6, 0x3d, 0xd9, 0x4f, 0x15, + 0xa6, 0xd0, 0x9f, 0xcb, 0x80, 0x96, 0xb1, 0x73, 0x16, 0xdb, 0xfe, 0x54, 0x80, 0xf4, 0xfa, 0xcc, + 0xde, 0x0e, 0x35, 0xd9, 0x37, 0x85, 0x01, 0x3c, 0xc7, 0x03, 0x58, 0x8c, 0x69, 0x3c, 0x11, 0xa4, + 0x23, 0x1a, 0x6f, 0x19, 0xf2, 0x5d, 0xf2, 0x9d, 0xa9, 0xd9, 0xe3, 0xa3, 0x87, 0x4b, 0x42, 0x2c, + 0x4c, 0x9d, 0x12, 0xd6, 0x18, 0x01, 0xf4, 0x5d, 0x7f, 0x12, 0xf4, 0xd3, 0x9c, 0x76, 0x2c, 0x1d, + 0x98, 0xd9, 0x64, 0xfa, 0x62, 0xa7, 0xab, 0x2e, 0xfd, 0xec, 0x1b, 0xf4, 0xc1, 0x1c, 0x1c, 0xef, + 0x57, 0x1d, 0xf4, 0xbb, 0x19, 0x6e, 0x87, 0x1d, 0x93, 0x21, 0x3f, 0xc3, 0x36, 0x10, 0xdd, 0x17, + 0xe5, 0x89, 0x70, 0xc2, 0x5f, 0x86, 0xab, 0x5b, 0x15, 0x7c, 0xb1, 0xdb, 0xc6, 0x8e, 0x83, 0x6d, + 0x52, 0xb5, 0x49, 0xad, 0xff, 0x47, 0xe5, 0xc9, 0x70, 0xb9, 0x61, 0x76, 0x8d, 0x16, 0xb6, 0xeb, + 0x46, 0xa7, 0x5b, 0x34, 0x5b, 0xf5, 0x5d, 0xc7, 0xb2, 0x0d, 0x9d, 0x5d, 0x25, 0x39, 0xa9, 0x45, + 0x7d, 0x56, 0x6e, 0x84, 0x82, 0xd1, 0xad, 0x9a, 0xe7, 0x2d, 0xdd, 0x6e, 0x19, 0xe6, 0xd6, 0xaa, + 0xd1, 0x75, 0x98, 0x07, 0xf0, 0xbe, 0x74, 0xf4, 0x0f, 0xb2, 0xe8, 0x61, 0xba, 0x01, 0xb0, 0x46, + 0x74, 0x28, 0xcf, 0x93, 0x45, 0x8e, 0xc7, 0x25, 0xa3, 0x9d, 0x4c, 0x59, 0x9e, 0x33, 0x6e, 0x43, + 0xa2, 0xff, 0x08, 0x4e, 0xba, 0x16, 0x9a, 0xee, 0x19, 0x02, 0x67, 0x55, 0xad, 0xbc, 0x54, 0x56, + 0x5d, 0xb3, 0xe2, 0x04, 0x1c, 0x0b, 0xbe, 0x2d, 0xde, 0xd7, 0xa8, 0xa9, 0x95, 0x7a, 0x61, 0xd2, + 0xed, 0xa7, 0x68, 0xf2, 0x52, 0xb1, 0xbc, 0xaa, 0x2e, 0x36, 0xea, 0x55, 0xf7, 0xcb, 0xe2, 0x70, + 0xa6, 0x05, 0x7a, 0x30, 0x0b, 0x47, 0x89, 0x6c, 0x2f, 0x11, 0xa9, 0xba, 0x42, 0xe9, 0xf1, 0xb5, + 0xf5, 0x01, 0x9a, 0xa2, 0xe2, 0x45, 0x9f, 0x11, 0xbe, 0x29, 0x33, 0x04, 0x61, 0x4f, 0x19, 0x11, + 0x9a, 0xf1, 0x1d, 0x49, 0x24, 0x42, 0x85, 0x30, 0xd9, 0x64, 0x4a, 0xf1, 0x6f, 0xe3, 0x1e, 0x71, + 0xa2, 0xc1, 0x27, 0x56, 0x66, 0x89, 0xfc, 0xfc, 0xb4, 0xf5, 0xb2, 0x46, 0xd4, 0x61, 0x0e, 0x80, + 0xa4, 0x10, 0x0d, 0xa2, 0x7a, 0xd0, 0x77, 0xbc, 0x8a, 0xd2, 0x83, 0x62, 0xa9, 0x5e, 0x3e, 0xab, + 0x46, 0xe9, 0xc1, 0xa7, 0x65, 0x98, 0x5c, 0xc6, 0x8e, 0x3b, 0xa7, 0xea, 0xa2, 0xa7, 0x08, 0xac, + 0xff, 0xb8, 0x66, 0x4c, 0xdb, 0x6a, 0xea, 0x6d, 0x7f, 0x19, 0x80, 0xbe, 0xa1, 0x67, 0x0f, 0x63, + 0x82, 0x78, 0x45, 0x47, 0x8c, 0x57, 0x3f, 0x09, 0x39, 0xc7, 0xfd, 0xcc, 0x96, 0xa1, 0x7f, 0x2c, + 0x72, 0xb8, 0x72, 0x89, 0x2c, 0xea, 0x8e, 0xae, 0xd1, 0xfc, 0xa1, 0xd1, 0x49, 0xd0, 0x76, 0x89, + 0x60, 0xe4, 0x87, 0xd1, 0xfe, 0xfc, 0x3b, 0x19, 0x4e, 0xd0, 0xf6, 0x51, 0xec, 0x74, 0x6a, 0x8e, + 0x65, 0x63, 0x0d, 0x37, 0xb1, 0xd1, 0x71, 0x7a, 0xd6, 0xf7, 0x6c, 0x9a, 0xea, 0x6d, 0x36, 0xb3, + 0x57, 0xf4, 0x7a, 0x59, 0x34, 0x06, 0xf3, 0xbe, 0xf6, 0xd8, 0x53, 0x5e, 0x44, 0x63, 0xff, 0xa8, + 0x24, 0x12, 0x55, 0x39, 0x21, 0xf1, 0x64, 0x40, 0x7d, 0xe8, 0x10, 0x80, 0xf2, 0x56, 0x6e, 0x34, + 0xb5, 0xa4, 0x96, 0xd7, 0xdd, 0x41, 0xe0, 0x6a, 0xb8, 0x72, 0x7d, 0x43, 0x2b, 0xad, 0x14, 0x6b, + 0x6a, 0x43, 0x53, 0x97, 0xcb, 0xb5, 0x3a, 0x73, 0xca, 0xa2, 0x7f, 0x4d, 0x28, 0x57, 0xc1, 0xa9, + 0xda, 0xc6, 0x42, 0xad, 0xa4, 0x95, 0xd7, 0x49, 0xba, 0xa6, 0x56, 0xd4, 0x73, 0xec, 0xeb, 0x24, + 0x7a, 0x7f, 0x01, 0xa6, 0xdd, 0x09, 0x40, 0x8d, 0xce, 0x0b, 0xd0, 0x37, 0xb3, 0x30, 0xad, 0xe1, + 0xae, 0xd5, 0xde, 0x23, 0x73, 0x84, 0x71, 0x4d, 0x3d, 0xbe, 0x2d, 0x8b, 0x9e, 0xdf, 0x0e, 0x31, + 0x3b, 0x1f, 0x62, 0x34, 0x7a, 0xa2, 0xa9, 0xef, 0xe9, 0x46, 0x5b, 0x3f, 0xcf, 0xba, 0x9a, 0x49, + 0x2d, 0x48, 0x50, 0xe6, 0x41, 0xb1, 0x2e, 0x9a, 0xd8, 0xae, 0x35, 0x2f, 0xaa, 0xce, 0x76, 0xb1, + 0xd5, 0xb2, 0x71, 0xb7, 0xcb, 0x56, 0x2f, 0xfa, 0x7c, 0x51, 0x6e, 0x80, 0xa3, 0x24, 0x35, 0x94, + 0x99, 0x3a, 0xc8, 0xf4, 0x26, 0xfb, 0x39, 0x8b, 0xe6, 0x25, 0x2f, 0x67, 0x2e, 0x94, 0x33, 0x48, + 0x0e, 0x1f, 0x97, 0xc8, 0xf3, 0xa7, 0x74, 0xae, 0x81, 0x69, 0x53, 0xdf, 0xc1, 0xea, 0x03, 0x1d, + 0xc3, 0xc6, 0x5d, 0xe2, 0x18, 0x23, 0x6b, 0xe1, 0x24, 0xf4, 0x41, 0xa1, 0xf3, 0xe6, 0x62, 0x12, + 0x4b, 0xa6, 0xfb, 0xcb, 0x43, 0xa8, 0x7e, 0x9f, 0x7e, 0x46, 0x46, 0xef, 0x97, 0x61, 0x86, 0x31, + 0x55, 0x34, 0x2f, 0x95, 0x5b, 0xe8, 0x6a, 0xce, 0xf8, 0xd5, 0xdd, 0x34, 0xcf, 0xf8, 0x25, 0x2f, + 0xe8, 0x17, 0x65, 0x51, 0x77, 0xe7, 0x3e, 0x15, 0x27, 0x65, 0x44, 0x3b, 0x8e, 0x6e, 0x5a, 0xbb, + 0xcc, 0x51, 0x75, 0x52, 0xa3, 0x2f, 0x69, 0x2e, 0xea, 0xa1, 0x3f, 0x10, 0x72, 0xa6, 0x16, 0xac, + 0xc6, 0x21, 0x01, 0xf8, 0x71, 0x19, 0xe6, 0x18, 0x57, 0x35, 0x76, 0xce, 0x47, 0xe8, 0xc0, 0xdb, + 0x2f, 0x0b, 0x1b, 0x82, 0x7d, 0xea, 0xcf, 0x4a, 0x7a, 0xc4, 0x00, 0xf9, 0x61, 0xa1, 0xe0, 0x68, + 0xc2, 0x15, 0x39, 0x24, 0x28, 0xdf, 0x9e, 0x85, 0xe9, 0x8d, 0x2e, 0xb6, 0x99, 0xdf, 0x3e, 0x7a, + 0x28, 0x0b, 0xf2, 0x32, 0xe6, 0x36, 0x52, 0x5f, 0x28, 0xec, 0xe1, 0x1b, 0xae, 0x6c, 0x88, 0xa8, + 0x6b, 0x23, 0x45, 0xc0, 0x76, 0x3d, 0xcc, 0x51, 0x91, 0x16, 0x1d, 0xc7, 0x35, 0x12, 0x3d, 0x6f, + 0xda, 0x9e, 0xd4, 0x51, 0x6c, 0x15, 0x91, 0xb2, 0xdc, 0x2c, 0x25, 0x97, 0xa7, 0x55, 0xbc, 0x49, + 0xe7, 0xb3, 0x59, 0xad, 0x27, 0x55, 0xb9, 0x05, 0x2e, 0xb3, 0x3a, 0x98, 0x9e, 0x5f, 0x09, 0x65, + 0xce, 0x91, 0xcc, 0xfd, 0x3e, 0xa1, 0x6f, 0x0a, 0xf9, 0xea, 0x8a, 0x4b, 0x27, 0x99, 0x2e, 0x74, + 0x46, 0x63, 0x92, 0x1c, 0x87, 0x82, 0x9b, 0x83, 0xec, 0xbf, 0x68, 0x6a, 0xad, 0xba, 0x7a, 0x56, + 0xed, 0xbf, 0x8c, 0x91, 0x43, 0xcf, 0x91, 0x61, 0x6a, 0xc1, 0xb6, 0xf4, 0x56, 0x53, 0xef, 0x3a, + 0xe8, 0xbb, 0x12, 0xcc, 0xac, 0xeb, 0x97, 0xda, 0x96, 0xde, 0x22, 0xfe, 0xfd, 0x3d, 0x7d, 0x41, + 0x87, 0x7e, 0xf2, 0xfa, 0x02, 0xf6, 0xca, 0x1f, 0x0c, 0xf4, 0x8f, 0xee, 0x65, 0x44, 0x2e, 0xd4, + 0xf4, 0xb7, 0xf9, 0xa4, 0x7e, 0xc1, 0x4a, 0x3d, 0xbe, 0xe6, 0xc3, 0x3c, 0x45, 0x58, 0x94, 0xef, + 0x17, 0x0b, 0x3f, 0x2a, 0x42, 0xf2, 0x70, 0x76, 0xe5, 0x9f, 0x3b, 0x09, 0xf9, 0x45, 0x4c, 0xac, + 0xb8, 0xff, 0x21, 0xc1, 0x44, 0x0d, 0x3b, 0xc4, 0x82, 0xbb, 0x8d, 0xf3, 0x14, 0x6e, 0x91, 0x0c, + 0x81, 0x13, 0xbb, 0xf7, 0xee, 0x4e, 0xd6, 0x43, 0xe7, 0xad, 0xc9, 0x73, 0x02, 0x8f, 0x44, 0x5a, + 0xee, 0x3c, 0x2b, 0xf3, 0x40, 0x1e, 0x89, 0xb1, 0xa4, 0xd2, 0xf7, 0xb5, 0x7a, 0xa7, 0xc4, 0x5c, + 0xab, 0x42, 0xbd, 0xde, 0x6b, 0xc2, 0xfa, 0x19, 0xeb, 0x6d, 0xc6, 0x98, 0x8f, 0x71, 0x8e, 0x7a, + 0x02, 0x4c, 0x50, 0x99, 0x7b, 0xf3, 0xd1, 0x5e, 0x3f, 0x05, 0x4a, 0x82, 0x9c, 0xbd, 0xf6, 0x72, + 0x0a, 0xba, 0xa8, 0x45, 0x17, 0x3e, 0x96, 0x18, 0x04, 0x33, 0x15, 0xec, 0x5c, 0xb4, 0xec, 0x0b, + 0x35, 0x47, 0x77, 0x30, 0xfa, 0x37, 0x09, 0xe4, 0x1a, 0x76, 0xc2, 0xd1, 0x4f, 0x2a, 0x70, 0x8c, + 0x56, 0x88, 0x65, 0x24, 0xfd, 0x37, 0xad, 0xc8, 0x35, 0x7d, 0x85, 0x10, 0xca, 0xa7, 0xed, 0xff, + 0x15, 0xfd, 0x7a, 0xdf, 0xa0, 0x4f, 0x52, 0x9f, 0x49, 0x03, 0x93, 0x4c, 0x98, 0x41, 0x57, 0xc1, + 0x22, 0xf4, 0xf4, 0x03, 0x42, 0x66, 0xb5, 0x18, 0xcd, 0xc3, 0xe9, 0x0a, 0x3e, 0x7c, 0x05, 0x64, + 0x4b, 0xdb, 0xba, 0x83, 0xde, 0x21, 0x03, 0x14, 0x5b, 0xad, 0x35, 0xea, 0x03, 0x1e, 0x76, 0x48, + 0x3b, 0x03, 0x33, 0xcd, 0x6d, 0x3d, 0xb8, 0xdb, 0x84, 0xf6, 0x07, 0x5c, 0x9a, 0xf2, 0xc4, 0xc0, + 0x99, 0x9c, 0x4a, 0x15, 0xf5, 0xc0, 0xe4, 0x96, 0xc1, 0x68, 0xfb, 0x8e, 0xe6, 0x7c, 0x28, 0xcc, + 0xd8, 0x23, 0x74, 0xee, 0xef, 0xf3, 0x01, 0x7b, 0xd1, 0x73, 0x38, 0x46, 0xda, 0x3f, 0x60, 0x13, + 0x24, 0x24, 0x3c, 0xe9, 0x2d, 0x16, 0xd0, 0x23, 0x9e, 0xaf, 0xb1, 0x84, 0xae, 0x55, 0xd4, 0x96, + 0xe1, 0x89, 0x96, 0x05, 0xcc, 0x42, 0x2f, 0xc8, 0x24, 0x83, 0x2f, 0x5e, 0x70, 0x77, 0xc3, 0x2c, + 0x6e, 0x19, 0x0e, 0xf6, 0x6a, 0xc9, 0x04, 0x18, 0x07, 0x31, 0xff, 0x03, 0x7a, 0x96, 0x70, 0xd0, + 0x35, 0x22, 0xd0, 0xfd, 0x35, 0x8a, 0x68, 0x7f, 0x62, 0x61, 0xd4, 0xc4, 0x68, 0xa6, 0x0f, 0xd6, + 0xb3, 0x65, 0x38, 0x51, 0xb7, 0xb6, 0xb6, 0xda, 0xd8, 0x13, 0x13, 0xa6, 0xde, 0x99, 0x48, 0x1f, + 0x25, 0x5c, 0x64, 0x27, 0xc8, 0xba, 0xdf, 0xf0, 0x8f, 0x92, 0xb9, 0x2f, 0xfc, 0x89, 0xa9, 0xd8, + 0x59, 0x14, 0x11, 0x57, 0x5f, 0x3e, 0x23, 0x50, 0x10, 0x0b, 0xf8, 0x2c, 0x4c, 0x36, 0x7d, 0x20, + 0xbe, 0x20, 0xc1, 0x2c, 0xbd, 0xb9, 0xd2, 0x53, 0xd0, 0x7b, 0x47, 0x08, 0x00, 0xfa, 0x6e, 0x46, + 0xd4, 0xcf, 0x96, 0xc8, 0x84, 0xe3, 0x24, 0x42, 0xc4, 0x62, 0x41, 0x55, 0x06, 0x92, 0x4b, 0x5f, + 0xb4, 0x7f, 0x22, 0xc3, 0xf4, 0x32, 0xf6, 0x5a, 0x5a, 0x37, 0x71, 0x4f, 0x74, 0x06, 0x66, 0xc8, + 0xf5, 0x6d, 0x55, 0x76, 0x4c, 0x92, 0xae, 0x9a, 0x71, 0x69, 0xca, 0x75, 0x30, 0x7b, 0x1e, 0x6f, + 0x5a, 0x36, 0xae, 0x72, 0x67, 0x29, 0xf9, 0xc4, 0x88, 0xf0, 0x74, 0x5c, 0x1c, 0xb4, 0x05, 0x1e, + 0x9b, 0x9b, 0xf6, 0x0b, 0x33, 0x54, 0x95, 0x88, 0x31, 0xe7, 0x49, 0x30, 0xc9, 0x90, 0xf7, 0xcc, + 0xb4, 0xb8, 0x7e, 0xd1, 0xcf, 0x8b, 0x7e, 0xd3, 0x47, 0x54, 0xe5, 0x10, 0x7d, 0x7c, 0x12, 0x26, + 0xc6, 0x72, 0xbf, 0x7b, 0x21, 0x54, 0xfe, 0xc2, 0xa5, 0x72, 0xab, 0x8b, 0xd6, 0x92, 0x61, 0x7a, + 0x1a, 0xc0, 0x6f, 0x1c, 0x5e, 0x58, 0x8b, 0x50, 0x0a, 0x1f, 0xb9, 0x3e, 0xf6, 0xa0, 0x5e, 0xaf, + 0x38, 0x08, 0x3b, 0x23, 0x06, 0x46, 0xec, 0x80, 0x9f, 0x08, 0x27, 0xe9, 0xa3, 0xf3, 0x29, 0x19, + 0x4e, 0xf8, 0xe7, 0x8f, 0x56, 0xf5, 0x6e, 0xd0, 0xee, 0x4a, 0xc9, 0x20, 0xe2, 0x0e, 0x7c, 0xf8, + 0x8d, 0xe5, 0x5b, 0xc9, 0xc6, 0x8c, 0xbe, 0x9c, 0x8c, 0x16, 0x1d, 0xe5, 0x26, 0x38, 0x66, 0xee, + 0xee, 0xf8, 0x52, 0x27, 0x2d, 0x9e, 0xb5, 0xf0, 0xfd, 0x1f, 0x92, 0x8c, 0x4c, 0x22, 0xcc, 0x8f, + 0x65, 0x4e, 0xc9, 0x1d, 0xe9, 0x7a, 0x5c, 0x22, 0x18, 0xd1, 0xbf, 0x64, 0x12, 0xf5, 0x6e, 0x83, + 0xcf, 0x7c, 0x25, 0xe8, 0xa5, 0x0e, 0xf1, 0xc0, 0xd7, 0x99, 0x09, 0xc8, 0xa9, 0x3b, 0x1d, 0xe7, + 0xd2, 0x99, 0x47, 0xc3, 0x6c, 0xcd, 0xb1, 0xb1, 0xbe, 0x13, 0xda, 0x19, 0x70, 0xac, 0x0b, 0xd8, + 0xf4, 0x76, 0x06, 0xc8, 0xcb, 0xed, 0xb7, 0xc1, 0x84, 0x69, 0x35, 0xf4, 0x5d, 0x67, 0x5b, 0xb9, + 0x7a, 0xdf, 0x91, 0x7a, 0x06, 0x7e, 0x95, 0xc5, 0x30, 0xfa, 0xca, 0x1d, 0x64, 0x6d, 0x38, 0x6f, + 0x5a, 0xc5, 0x5d, 0x67, 0x7b, 0xe1, 0xaa, 0x8f, 0xff, 0xed, 0xe9, 0xcc, 0xa7, 0xff, 0xf6, 0x74, + 0xe6, 0xcb, 0x7f, 0x7b, 0x3a, 0xf3, 0xcb, 0x5f, 0x3d, 0x7d, 0xe4, 0xd3, 0x5f, 0x3d, 0x7d, 0xe4, + 0x0b, 0x5f, 0x3d, 0x7d, 0xe4, 0xa7, 0xa5, 0xce, 0xf9, 0xf3, 0x79, 0x42, 0xe5, 0x09, 0xff, 0x5f, + 0x00, 0x00, 0x00, 0xff, 0xff, 0x9b, 0xc3, 0x6d, 0x76, 0xfa, 0x0a, 0x02, 0x00, } func (m *Rpc) Marshal() (dAtA []byte, err error) { @@ -77284,6 +77729,259 @@ func (m *RpcAccountRevertDeletionResponseError) MarshalToSizedBuffer(dAtA []byte return len(dAtA) - i, nil } +func (m *RpcAccountMigrate) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcAccountMigrate) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcAccountMigrate) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *RpcAccountMigrateRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcAccountMigrateRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcAccountMigrateRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.RootPath) > 0 { + i -= len(m.RootPath) + copy(dAtA[i:], m.RootPath) + i = encodeVarintCommands(dAtA, i, uint64(len(m.RootPath))) + i-- + dAtA[i] = 0x12 + } + if len(m.Id) > 0 { + i -= len(m.Id) + copy(dAtA[i:], m.Id) + i = encodeVarintCommands(dAtA, i, uint64(len(m.Id))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *RpcAccountMigrateResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcAccountMigrateResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcAccountMigrateResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Error != nil { + { + size, err := m.Error.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCommands(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *RpcAccountMigrateResponseError) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcAccountMigrateResponseError) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcAccountMigrateResponseError) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Description) > 0 { + i -= len(m.Description) + copy(dAtA[i:], m.Description) + i = encodeVarintCommands(dAtA, i, uint64(len(m.Description))) + i-- + dAtA[i] = 0x12 + } + if m.Code != 0 { + i = encodeVarintCommands(dAtA, i, uint64(m.Code)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *RpcAccountMigrateCancel) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcAccountMigrateCancel) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcAccountMigrateCancel) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *RpcAccountMigrateCancelRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcAccountMigrateCancelRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcAccountMigrateCancelRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Id) > 0 { + i -= len(m.Id) + copy(dAtA[i:], m.Id) + i = encodeVarintCommands(dAtA, i, uint64(len(m.Id))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *RpcAccountMigrateCancelResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcAccountMigrateCancelResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcAccountMigrateCancelResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Error != nil { + { + size, err := m.Error.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCommands(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *RpcAccountMigrateCancelResponseError) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcAccountMigrateCancelResponseError) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcAccountMigrateCancelResponseError) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Description) > 0 { + i -= len(m.Description) + copy(dAtA[i:], m.Description) + i = encodeVarintCommands(dAtA, i, uint64(len(m.Description))) + i-- + dAtA[i] = 0x12 + } + if m.Code != 0 { + i = encodeVarintCommands(dAtA, i, uint64(m.Code)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + func (m *RpcAccountSelect) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -120179,6 +120877,112 @@ func (m *RpcAccountRevertDeletionResponseError) Size() (n int) { return n } +func (m *RpcAccountMigrate) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *RpcAccountMigrateRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Id) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + l = len(m.RootPath) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + +func (m *RpcAccountMigrateResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Error != nil { + l = m.Error.Size() + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + +func (m *RpcAccountMigrateResponseError) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Code != 0 { + n += 1 + sovCommands(uint64(m.Code)) + } + l = len(m.Description) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + +func (m *RpcAccountMigrateCancel) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *RpcAccountMigrateCancelRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Id) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + +func (m *RpcAccountMigrateCancelResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Error != nil { + l = m.Error.Size() + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + +func (m *RpcAccountMigrateCancelResponseError) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Code != 0 { + n += 1 + sovCommands(uint64(m.Code)) + } + l = len(m.Description) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + func (m *RpcAccountSelect) Size() (n int) { if m == nil { return 0 @@ -148142,6 +148946,676 @@ func (m *RpcAccountRevertDeletionResponseError) Unmarshal(dAtA []byte) error { } return nil } +func (m *RpcAccountMigrate) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Migrate: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Migrate: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcAccountMigrateRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Request: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Request: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Id = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RootPath", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RootPath = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcAccountMigrateResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Response: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Response: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Error == nil { + m.Error = &RpcAccountMigrateResponseError{} + } + if err := m.Error.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcAccountMigrateResponseError) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Error: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Error: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Code", wireType) + } + m.Code = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Code |= RpcAccountMigrateResponseErrorCode(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcAccountMigrateCancel) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MigrateCancel: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MigrateCancel: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcAccountMigrateCancelRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Request: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Request: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Id = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcAccountMigrateCancelResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Response: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Response: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Error == nil { + m.Error = &RpcAccountMigrateCancelResponseError{} + } + if err := m.Error.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcAccountMigrateCancelResponseError) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Error: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Error: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Code", wireType) + } + m.Code = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Code |= RpcAccountMigrateCancelResponseErrorCode(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *RpcAccountSelect) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/pb/service/service.pb.go b/pb/service/service.pb.go index 8adc4974b..645339e43 100644 --- a/pb/service/service.pb.go +++ b/pb/service/service.pb.go @@ -26,343 +26,345 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package func init() { proto.RegisterFile("pb/protos/service/service.proto", fileDescriptor_93a29dc403579097) } var fileDescriptor_93a29dc403579097 = []byte{ - // 5364 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x9d, 0xdf, 0x6f, 0x24, 0x49, - 0x52, 0xf8, 0xd7, 0x2f, 0xdf, 0xfd, 0x52, 0xc7, 0x2d, 0xd0, 0x0b, 0xcb, 0xde, 0x72, 0x37, 0xbf, - 0x76, 0xc6, 0xf6, 0x8c, 0xed, 0xf6, 0xec, 0xcc, 0xce, 0xee, 0xe9, 0x0e, 0x09, 0x79, 0xec, 0xb1, - 0xd7, 0x9c, 0xed, 0x31, 0xee, 0xf6, 0x8c, 0xb4, 0x12, 0x12, 0xe9, 0xea, 0x74, 0xbb, 0x70, 0x75, - 0x65, 0x5d, 0x55, 0x76, 0x7b, 0xfa, 0x10, 0x08, 0x04, 0x02, 0x81, 0x40, 0x9c, 0xf8, 0xf5, 0x8a, - 0xc4, 0x5f, 0xc3, 0xe3, 0x3d, 0xf2, 0x88, 0x76, 0x9f, 0xef, 0x7f, 0x40, 0x95, 0x95, 0x95, 0x3f, - 0xa2, 0x22, 0xb2, 0xca, 0xf7, 0x34, 0xa3, 0x8e, 0x4f, 0x44, 0x64, 0x56, 0x66, 0x46, 0x46, 0x66, - 0x65, 0xa5, 0xa3, 0xbb, 0xf9, 0xc5, 0x76, 0x5e, 0x08, 0x29, 0xca, 0xed, 0x92, 0x17, 0x8b, 0x24, - 0xe6, 0xcd, 0xbf, 0x43, 0xf5, 0xf3, 0xe0, 0x7d, 0x96, 0x2d, 0xe5, 0x32, 0xe7, 0x9f, 0x7c, 0x6c, - 0xc9, 0x58, 0xcc, 0x66, 0x2c, 0x9b, 0x94, 0x35, 0xf2, 0xc9, 0x47, 0x56, 0xc2, 0x17, 0x3c, 0x93, - 0xfa, 0xf7, 0x67, 0xbf, 0xfc, 0xe5, 0x4a, 0xf4, 0xc1, 0x6e, 0x9a, 0xf0, 0x4c, 0xee, 0x6a, 0x8d, - 0xc1, 0xd7, 0xd1, 0x77, 0x77, 0xf2, 0xfc, 0x80, 0xcb, 0x37, 0xbc, 0x28, 0x13, 0x91, 0x0d, 0x3e, - 0x1d, 0x6a, 0x07, 0xc3, 0xb3, 0x3c, 0x1e, 0xee, 0xe4, 0xf9, 0xd0, 0x0a, 0x87, 0x67, 0xfc, 0xa7, - 0x73, 0x5e, 0xca, 0x4f, 0x1e, 0x86, 0xa1, 0x32, 0x17, 0x59, 0xc9, 0x07, 0x97, 0xd1, 0x6f, 0xed, - 0xe4, 0xf9, 0x88, 0xcb, 0x3d, 0x5e, 0x55, 0x60, 0x24, 0x99, 0xe4, 0x83, 0xb5, 0x96, 0xaa, 0x0f, - 0x18, 0x1f, 0xeb, 0xdd, 0xa0, 0xf6, 0x33, 0x8e, 0xbe, 0x53, 0xf9, 0xb9, 0x9a, 0xcb, 0x89, 0xb8, - 0xc9, 0x06, 0xf7, 0xdb, 0x8a, 0x5a, 0x64, 0x6c, 0x3f, 0x08, 0x21, 0xda, 0xea, 0xdb, 0xe8, 0xd7, - 0xdf, 0xb2, 0x34, 0xe5, 0x72, 0xb7, 0xe0, 0x55, 0xc1, 0x7d, 0x9d, 0x5a, 0x34, 0xac, 0x65, 0xc6, - 0xee, 0xa7, 0x41, 0x46, 0x1b, 0xfe, 0x3a, 0xfa, 0x6e, 0x2d, 0x39, 0xe3, 0xb1, 0x58, 0xf0, 0x62, - 0x80, 0x6a, 0x69, 0x21, 0xf1, 0xc8, 0x5b, 0x10, 0xb4, 0xbd, 0x2b, 0xb2, 0x05, 0x2f, 0x24, 0x6e, - 0x5b, 0x0b, 0xc3, 0xb6, 0x2d, 0xa4, 0x6d, 0xff, 0xfd, 0x4a, 0xf4, 0xfd, 0x9d, 0x38, 0x16, 0xf3, - 0x4c, 0x1e, 0x89, 0x98, 0xa5, 0x47, 0x49, 0x76, 0x7d, 0xc2, 0x6f, 0x76, 0xaf, 0x2a, 0x3e, 0x9b, - 0xf2, 0xc1, 0x73, 0xff, 0xa9, 0xd6, 0xe8, 0xd0, 0xb0, 0x43, 0x17, 0x36, 0xbe, 0x3f, 0xbf, 0x9d, - 0x92, 0x2e, 0xcb, 0x3f, 0xaf, 0x44, 0x77, 0x60, 0x59, 0x46, 0x22, 0x5d, 0x70, 0x5b, 0x9a, 0x17, - 0x1d, 0x86, 0x7d, 0xdc, 0x94, 0xe7, 0x8b, 0xdb, 0xaa, 0xe9, 0x12, 0xa5, 0xd1, 0x87, 0x6e, 0x77, - 0x19, 0xf1, 0x52, 0x0d, 0xa7, 0xc7, 0x74, 0x8f, 0xd0, 0x88, 0xf1, 0xfc, 0xa4, 0x0f, 0xaa, 0xbd, - 0x25, 0xd1, 0x40, 0x7b, 0x4b, 0x45, 0x69, 0x9c, 0xad, 0xa3, 0x16, 0x1c, 0xc2, 0xf8, 0x7a, 0xdc, - 0x83, 0xd4, 0xae, 0xfe, 0x24, 0xfa, 0x8d, 0xb7, 0xa2, 0xb8, 0x2e, 0x73, 0x16, 0x73, 0x3d, 0x14, - 0x1e, 0xf9, 0xda, 0x8d, 0x14, 0x8e, 0x86, 0xd5, 0x2e, 0xcc, 0xe9, 0xb4, 0x8d, 0xf0, 0x75, 0xce, - 0x61, 0x0c, 0xb2, 0x8a, 0x95, 0x90, 0xea, 0xb4, 0x10, 0xd2, 0xb6, 0xaf, 0xa3, 0x81, 0xb5, 0x7d, - 0xf1, 0xa7, 0x3c, 0x96, 0x3b, 0x93, 0x09, 0x6c, 0x15, 0xab, 0xab, 0x88, 0xe1, 0xce, 0x64, 0x42, - 0xb5, 0x0a, 0x8e, 0x6a, 0x67, 0x37, 0xd1, 0x47, 0xc0, 0xd9, 0x51, 0x52, 0x2a, 0x87, 0x5b, 0x61, - 0x2b, 0x1a, 0x33, 0x4e, 0x87, 0x7d, 0x71, 0xed, 0xf8, 0x2f, 0x57, 0xa2, 0xef, 0x21, 0x9e, 0xcf, - 0xf8, 0x4c, 0x2c, 0xf8, 0xe0, 0x69, 0xb7, 0xb5, 0x9a, 0x34, 0xfe, 0x3f, 0xbb, 0x85, 0x06, 0xd2, - 0x4d, 0x46, 0x3c, 0xe5, 0xb1, 0x24, 0xbb, 0x49, 0x2d, 0xee, 0xec, 0x26, 0x06, 0x73, 0x46, 0x58, - 0x23, 0x3c, 0xe0, 0x72, 0x77, 0x5e, 0x14, 0x3c, 0x93, 0x64, 0x5b, 0x5a, 0xa4, 0xb3, 0x2d, 0x3d, - 0x14, 0xa9, 0xcf, 0x01, 0x97, 0x3b, 0x69, 0x4a, 0xd6, 0xa7, 0x16, 0x77, 0xd6, 0xc7, 0x60, 0xda, - 0x43, 0x1c, 0xfd, 0xa6, 0xf3, 0xc4, 0xe4, 0x61, 0x76, 0x29, 0x06, 0xf4, 0xb3, 0x50, 0x72, 0xe3, - 0x63, 0xad, 0x93, 0x43, 0xaa, 0xf1, 0xea, 0x5d, 0x2e, 0x0a, 0xba, 0x59, 0x6a, 0x71, 0x67, 0x35, - 0x0c, 0xa6, 0x3d, 0xfc, 0x71, 0xf4, 0x81, 0x8e, 0x92, 0xcd, 0x7c, 0xf6, 0x10, 0x0d, 0xa1, 0x70, - 0x42, 0x7b, 0xd4, 0x41, 0xd9, 0xe0, 0xa0, 0x65, 0x3a, 0xf8, 0x7c, 0x8a, 0xea, 0x81, 0xd0, 0xf3, - 0x30, 0x0c, 0xb5, 0x6c, 0xef, 0xf1, 0x94, 0x93, 0xb6, 0x6b, 0x61, 0x87, 0x6d, 0x03, 0x69, 0xdb, - 0x45, 0xf4, 0x3b, 0xe6, 0xb1, 0x54, 0xf3, 0xa8, 0x92, 0x57, 0x41, 0x7a, 0x83, 0xa8, 0xb7, 0x0b, - 0x19, 0x5f, 0x9b, 0xfd, 0xe0, 0x56, 0x7d, 0xf4, 0x08, 0xc4, 0xeb, 0x03, 0xc6, 0xdf, 0xc3, 0x30, - 0xa4, 0x6d, 0xff, 0xc3, 0x4a, 0xf4, 0x03, 0x2d, 0x7b, 0x95, 0xb1, 0x8b, 0x94, 0xab, 0x29, 0xf1, - 0x84, 0xcb, 0x1b, 0x51, 0x5c, 0x8f, 0x96, 0x59, 0x4c, 0x4c, 0xff, 0x38, 0xdc, 0x31, 0xfd, 0x93, - 0x4a, 0x4e, 0xc6, 0xa7, 0x2b, 0x2a, 0x45, 0x0e, 0x33, 0xbe, 0xa6, 0x06, 0x52, 0xe4, 0x54, 0xc6, - 0xe7, 0x23, 0x2d, 0xab, 0xc7, 0x55, 0xd8, 0xc4, 0xad, 0x1e, 0xbb, 0x71, 0xf2, 0x41, 0x08, 0xb1, - 0x61, 0xab, 0xe9, 0xc0, 0x22, 0xbb, 0x4c, 0xa6, 0xe7, 0xf9, 0xa4, 0xea, 0xc6, 0x8f, 0xf1, 0x1e, - 0xea, 0x20, 0x44, 0xd8, 0x22, 0x50, 0xed, 0xed, 0x9f, 0x6c, 0x62, 0xa4, 0x87, 0xd2, 0x7e, 0x21, - 0x66, 0x47, 0x7c, 0xca, 0xe2, 0xa5, 0x1e, 0xff, 0x9f, 0x87, 0x06, 0x1e, 0xa4, 0x4d, 0x21, 0x5e, - 0xdc, 0x52, 0x4b, 0x97, 0xe7, 0x3f, 0x57, 0xa2, 0x87, 0x4d, 0xf5, 0xaf, 0x58, 0x36, 0xe5, 0xba, - 0x3d, 0xeb, 0xd2, 0xef, 0x64, 0x93, 0x33, 0x5e, 0x4a, 0x56, 0xc8, 0xc1, 0x8f, 0xf0, 0x4a, 0x86, - 0x74, 0x4c, 0xd9, 0x7e, 0xfc, 0x2b, 0xe9, 0xda, 0x56, 0x1f, 0x55, 0x81, 0x4d, 0x87, 0x00, 0xbf, - 0xd5, 0x95, 0x04, 0x06, 0x80, 0x07, 0x21, 0xc4, 0xb6, 0xba, 0x12, 0x1c, 0x66, 0x8b, 0x44, 0xf2, - 0x03, 0x9e, 0xf1, 0xa2, 0xdd, 0xea, 0xb5, 0xaa, 0x8f, 0x10, 0xad, 0x4e, 0xa0, 0x36, 0xd8, 0x78, - 0xde, 0xcc, 0xe4, 0xb8, 0x11, 0x30, 0xd2, 0x9a, 0x1e, 0x37, 0xfb, 0xc1, 0x76, 0x75, 0xe7, 0xf8, - 0x3c, 0xe3, 0x0b, 0x71, 0x0d, 0x57, 0x77, 0xae, 0x89, 0x1a, 0x20, 0x56, 0x77, 0x28, 0x68, 0x67, - 0x30, 0xc7, 0xcf, 0x9b, 0x84, 0xdf, 0x80, 0x19, 0xcc, 0x55, 0xae, 0xc4, 0xc4, 0x0c, 0x86, 0x60, - 0xda, 0xc3, 0x49, 0xf4, 0x6b, 0x4a, 0xf8, 0x87, 0x22, 0xc9, 0x06, 0x77, 0x11, 0xa5, 0x4a, 0x60, - 0xac, 0xde, 0xa3, 0x01, 0x50, 0xe2, 0xea, 0xd7, 0x5d, 0x96, 0xc5, 0x3c, 0x45, 0x4b, 0x6c, 0xc5, - 0xc1, 0x12, 0x7b, 0x98, 0x4d, 0x1d, 0x94, 0xb0, 0x8a, 0x5f, 0xa3, 0x2b, 0x56, 0x24, 0xd9, 0x74, - 0x80, 0xe9, 0x3a, 0x72, 0x22, 0x75, 0xc0, 0x38, 0xd0, 0x85, 0xb5, 0xe2, 0x4e, 0x9e, 0x17, 0x55, - 0x58, 0xc4, 0xba, 0xb0, 0x8f, 0x04, 0xbb, 0x70, 0x0b, 0xc5, 0xbd, 0xed, 0xf1, 0x38, 0x4d, 0xb2, - 0xa0, 0x37, 0x8d, 0xf4, 0xf1, 0x66, 0x51, 0xd0, 0x79, 0x8f, 0x38, 0x5b, 0xf0, 0xa6, 0x66, 0xd8, - 0x93, 0x71, 0x81, 0x60, 0xe7, 0x05, 0xa0, 0x5d, 0xa7, 0x29, 0xf1, 0x31, 0xbb, 0xe6, 0xd5, 0x03, - 0xe6, 0xd5, 0xbc, 0x36, 0xc0, 0xf4, 0x3d, 0x82, 0x58, 0xa7, 0xe1, 0xa4, 0x76, 0x35, 0x8f, 0x3e, - 0x52, 0xf2, 0x53, 0x56, 0xc8, 0x24, 0x4e, 0x72, 0x96, 0x35, 0xf9, 0x3f, 0x36, 0xae, 0x5b, 0x94, - 0x71, 0xb9, 0xd5, 0x93, 0xd6, 0x6e, 0xff, 0x63, 0x25, 0xba, 0x0f, 0xfd, 0x9e, 0xf2, 0x62, 0x96, - 0xa8, 0x65, 0x64, 0x59, 0x07, 0xe1, 0xc1, 0x97, 0x61, 0xa3, 0x2d, 0x05, 0x53, 0x9a, 0x1f, 0xde, - 0x5e, 0xd1, 0x26, 0x43, 0x23, 0x9d, 0x5a, 0xbf, 0x2e, 0x26, 0xad, 0x6d, 0x96, 0x51, 0x93, 0x2f, - 0x2b, 0x21, 0x91, 0x0c, 0xb5, 0x20, 0x30, 0xc2, 0xcf, 0xb3, 0xb2, 0xb1, 0x8e, 0x8d, 0x70, 0x2b, - 0x0e, 0x8e, 0x70, 0x0f, 0xb3, 0x23, 0xfc, 0x74, 0x7e, 0x91, 0x26, 0xe5, 0x55, 0x92, 0x4d, 0x75, - 0xe6, 0xeb, 0xeb, 0x5a, 0x31, 0x4c, 0x7e, 0xd7, 0x3a, 0x39, 0xcc, 0x89, 0xee, 0x2c, 0xa4, 0x13, - 0xd0, 0x4d, 0xd6, 0x3a, 0x39, 0xbb, 0x3e, 0xb0, 0xd2, 0x6a, 0xe5, 0x08, 0xd6, 0x07, 0x8e, 0x6a, - 0x25, 0x25, 0xd6, 0x07, 0x6d, 0x4a, 0x9b, 0x17, 0xd1, 0x6f, 0xbb, 0x75, 0x28, 0x45, 0xba, 0xe0, - 0xe7, 0x45, 0x32, 0x78, 0x42, 0x97, 0xaf, 0x61, 0x8c, 0xab, 0x8d, 0x5e, 0xac, 0x0d, 0x54, 0x96, - 0x38, 0xe0, 0x72, 0x24, 0x99, 0x9c, 0x97, 0x20, 0x50, 0x39, 0x36, 0x0c, 0x42, 0x04, 0x2a, 0x02, - 0xd5, 0xde, 0xfe, 0x28, 0x8a, 0xea, 0x45, 0xb7, 0xda, 0x18, 0xf1, 0xe7, 0x1e, 0xbd, 0x1a, 0xf7, - 0x76, 0x45, 0xee, 0x07, 0x08, 0x9b, 0xf0, 0xd4, 0xbf, 0xab, 0xfd, 0x9e, 0x01, 0xaa, 0xa1, 0x44, - 0x44, 0xc2, 0x03, 0x10, 0x58, 0xd0, 0xd1, 0x95, 0xb8, 0xc1, 0x0b, 0x5a, 0x49, 0xc2, 0x05, 0xd5, - 0x84, 0xdd, 0x81, 0xd5, 0x05, 0xc5, 0x76, 0x60, 0x9b, 0x62, 0x84, 0x76, 0x60, 0x21, 0x63, 0xfb, - 0x8c, 0x6b, 0xf8, 0xa5, 0x10, 0xd7, 0x33, 0x56, 0x5c, 0x83, 0x3e, 0xe3, 0x29, 0x37, 0x0c, 0xd1, - 0x67, 0x28, 0xd6, 0xf6, 0x19, 0xd7, 0x61, 0x95, 0x2e, 0x9f, 0x17, 0x29, 0xe8, 0x33, 0x9e, 0x0d, - 0x8d, 0x10, 0x7d, 0x86, 0x40, 0x6d, 0x74, 0x72, 0xbd, 0x8d, 0x38, 0x5c, 0xf3, 0x7b, 0xea, 0x23, - 0x4e, 0xad, 0xf9, 0x11, 0x0c, 0x76, 0xa1, 0x83, 0x82, 0xe5, 0x57, 0x78, 0x17, 0x52, 0xa2, 0x70, - 0x17, 0x6a, 0x10, 0xd8, 0xde, 0x23, 0xce, 0x8a, 0xf8, 0x0a, 0x6f, 0xef, 0x5a, 0x16, 0x6e, 0x6f, - 0xc3, 0xc0, 0xf6, 0xae, 0x05, 0x6f, 0x13, 0x79, 0x75, 0xcc, 0x25, 0xc3, 0xdb, 0xdb, 0x67, 0xc2, - 0xed, 0xdd, 0x62, 0x6d, 0x3e, 0xee, 0x3a, 0x1c, 0xcd, 0x2f, 0xca, 0xb8, 0x48, 0x2e, 0xf8, 0x20, - 0x60, 0xc5, 0x40, 0x44, 0x3e, 0x4e, 0xc2, 0xda, 0xe7, 0xcf, 0x57, 0xa2, 0xbb, 0x4d, 0xb3, 0x8b, - 0xb2, 0xd4, 0x73, 0x9f, 0xef, 0xfe, 0x05, 0xde, 0xbe, 0x04, 0x4e, 0xec, 0x89, 0xf7, 0x50, 0x73, - 0x72, 0x03, 0xbc, 0x48, 0xe7, 0x59, 0x69, 0x0a, 0xf5, 0x65, 0x1f, 0xeb, 0x8e, 0x02, 0x91, 0x1b, - 0xf4, 0x52, 0xb4, 0x69, 0x99, 0x6e, 0x9f, 0x46, 0x76, 0x38, 0x29, 0x41, 0x5a, 0xd6, 0x3c, 0x6f, - 0x87, 0x20, 0xd2, 0x32, 0x9c, 0x84, 0x5d, 0xe1, 0xa0, 0x10, 0xf3, 0xbc, 0xec, 0xe8, 0x0a, 0x00, - 0x0a, 0x77, 0x85, 0x36, 0xac, 0x7d, 0xbe, 0x8b, 0x7e, 0xd7, 0xed, 0x7e, 0xee, 0xc3, 0xde, 0xa2, - 0xfb, 0x14, 0xf6, 0x88, 0x87, 0x7d, 0x71, 0x9b, 0x51, 0x34, 0x9e, 0xe5, 0x1e, 0x97, 0x2c, 0x49, - 0xcb, 0xc1, 0x2a, 0x6e, 0xa3, 0x91, 0x13, 0x19, 0x05, 0xc6, 0xc1, 0xf8, 0xb6, 0x37, 0xcf, 0xd3, - 0x24, 0x6e, 0xbf, 0x91, 0xd0, 0xba, 0x46, 0x1c, 0x8e, 0x6f, 0x2e, 0x06, 0xe3, 0x75, 0x95, 0xfa, - 0xa9, 0xff, 0x8c, 0x97, 0x39, 0xc7, 0xe3, 0xb5, 0x87, 0x84, 0xe3, 0x35, 0x44, 0x61, 0x7d, 0x46, - 0x5c, 0x1e, 0xb1, 0xa5, 0x98, 0x13, 0xf1, 0xda, 0x88, 0xc3, 0xf5, 0x71, 0x31, 0xbb, 0x36, 0x30, - 0x1e, 0x0e, 0x33, 0xc9, 0x8b, 0x8c, 0xa5, 0xfb, 0x29, 0x9b, 0x96, 0x03, 0x22, 0xc6, 0xf8, 0x14, - 0xb1, 0x36, 0xa0, 0x69, 0xe4, 0x31, 0x1e, 0x96, 0xfb, 0x6c, 0x21, 0x8a, 0x44, 0xd2, 0x8f, 0xd1, - 0x22, 0x9d, 0x8f, 0xd1, 0x43, 0x51, 0x6f, 0x3b, 0x45, 0x7c, 0x95, 0x2c, 0xf8, 0x24, 0xe0, 0xad, - 0x41, 0x7a, 0x78, 0x73, 0x50, 0xa4, 0xd1, 0x46, 0x62, 0x5e, 0xc4, 0x9c, 0x6c, 0xb4, 0x5a, 0xdc, - 0xd9, 0x68, 0x06, 0xd3, 0x1e, 0xfe, 0x66, 0x25, 0xfa, 0xbd, 0x5a, 0xea, 0xbe, 0x26, 0xd8, 0x63, - 0xe5, 0xd5, 0x85, 0x60, 0xc5, 0x64, 0xf0, 0x19, 0x66, 0x07, 0x45, 0x8d, 0xeb, 0x67, 0xb7, 0x51, - 0x81, 0x8f, 0xb5, 0xca, 0xbb, 0xed, 0x88, 0x43, 0x1f, 0xab, 0x87, 0x84, 0x1f, 0x2b, 0x44, 0x61, - 0x00, 0x51, 0xf2, 0x7a, 0x4b, 0x6e, 0x95, 0xd4, 0xf7, 0xf7, 0xe5, 0xd6, 0x3a, 0x39, 0x18, 0x1f, - 0x2b, 0xa1, 0xdf, 0x5b, 0xb6, 0x28, 0x1b, 0x78, 0x8f, 0x19, 0xf6, 0xc5, 0x49, 0xcf, 0x66, 0x54, - 0x84, 0x3d, 0xb7, 0x46, 0xc6, 0xb0, 0x2f, 0x4e, 0x78, 0x76, 0xc2, 0x5a, 0xc8, 0x33, 0x12, 0xda, - 0x86, 0x7d, 0x71, 0x98, 0x7d, 0x69, 0xa6, 0x99, 0x17, 0x9e, 0x04, 0xec, 0xc0, 0xb9, 0x61, 0xa3, - 0x17, 0xab, 0x1d, 0xfe, 0xdd, 0x4a, 0xf4, 0x7d, 0xeb, 0xf1, 0x58, 0x4c, 0x92, 0xcb, 0x65, 0x0d, - 0xbd, 0x61, 0xe9, 0x9c, 0x97, 0x83, 0x67, 0x94, 0xb5, 0x36, 0x6b, 0x4a, 0xf0, 0xfc, 0x56, 0x3a, - 0x70, 0xec, 0xec, 0xe4, 0x79, 0xba, 0x1c, 0xf3, 0x59, 0x9e, 0x92, 0x63, 0xc7, 0x43, 0xc2, 0x63, - 0x07, 0xa2, 0x30, 0x2b, 0x1f, 0x8b, 0x2a, 0xe7, 0x47, 0xb3, 0x72, 0x25, 0x0a, 0x67, 0xe5, 0x0d, - 0x02, 0x73, 0xa5, 0xb1, 0xd8, 0x15, 0x69, 0xca, 0x63, 0xd9, 0x3e, 0x6a, 0x60, 0x34, 0x2d, 0x11, - 0xce, 0x95, 0x00, 0x69, 0x77, 0xe5, 0x9a, 0x35, 0x24, 0x2b, 0xf8, 0xcb, 0xe5, 0x51, 0x92, 0x5d, - 0x0f, 0xf0, 0xb4, 0xc0, 0x02, 0xc4, 0xae, 0x1c, 0x0a, 0xc2, 0xb5, 0xea, 0x79, 0x36, 0x11, 0xf8, - 0x5a, 0xb5, 0x92, 0x84, 0xd7, 0xaa, 0x9a, 0x80, 0x26, 0xcf, 0x38, 0x65, 0xb2, 0x92, 0x84, 0x4d, - 0x6a, 0x02, 0x0b, 0x85, 0xfa, 0xdd, 0x0d, 0x19, 0x0a, 0xc1, 0xdb, 0x9a, 0xb5, 0x4e, 0x0e, 0xf6, - 0xd0, 0x66, 0xd1, 0xba, 0xcf, 0x65, 0x7c, 0x85, 0xf7, 0x50, 0x0f, 0x09, 0xf7, 0x50, 0x88, 0xc2, - 0x2a, 0x8d, 0x85, 0x59, 0x74, 0xaf, 0xe2, 0xfd, 0xa3, 0xb5, 0xe0, 0x5e, 0xeb, 0xe4, 0xe0, 0x32, - 0xf2, 0x70, 0xa6, 0x9e, 0x19, 0xda, 0xc9, 0x6b, 0x59, 0x78, 0x19, 0x69, 0x18, 0x58, 0xfa, 0x5a, - 0xa0, 0xf6, 0xb2, 0x56, 0x69, 0x45, 0x6f, 0x37, 0x6b, 0xad, 0x93, 0xd3, 0x4e, 0xfe, 0xcd, 0x2c, - 0xe3, 0x6a, 0xe9, 0x89, 0xa8, 0xc6, 0xc8, 0x1b, 0x96, 0x26, 0x13, 0x26, 0xf9, 0x58, 0x5c, 0xf3, - 0x0c, 0x5f, 0x31, 0xe9, 0xd2, 0xd6, 0xfc, 0xd0, 0x53, 0x08, 0xaf, 0x98, 0xc2, 0x8a, 0xb0, 0x9f, - 0xd4, 0xf4, 0x79, 0xc9, 0x77, 0x59, 0x49, 0x44, 0x32, 0x0f, 0x09, 0xf7, 0x13, 0x88, 0xc2, 0x7c, - 0xb5, 0x96, 0xbf, 0x7a, 0x97, 0xf3, 0x22, 0xe1, 0x59, 0xcc, 0xf1, 0x7c, 0x15, 0x52, 0xe1, 0x7c, - 0x15, 0xa1, 0xe1, 0x5a, 0x6d, 0x8f, 0x49, 0xfe, 0x72, 0x39, 0x4e, 0x66, 0xbc, 0x94, 0x6c, 0x96, - 0xe3, 0x6b, 0x35, 0x00, 0x85, 0xd7, 0x6a, 0x6d, 0xb8, 0xb5, 0x35, 0x64, 0x02, 0x62, 0xfb, 0x84, - 0x12, 0x24, 0x02, 0x27, 0x94, 0x08, 0x14, 0x3e, 0x58, 0x0b, 0xa0, 0x2f, 0x09, 0x5a, 0x56, 0x82, - 0x2f, 0x09, 0x68, 0xba, 0xb5, 0xe1, 0x66, 0x98, 0x51, 0x35, 0x34, 0x3b, 0x8a, 0x3e, 0x72, 0x87, - 0xe8, 0x46, 0x2f, 0x16, 0xdf, 0xe1, 0x3b, 0xe3, 0x29, 0x53, 0xd3, 0x56, 0x60, 0x1b, 0xad, 0x61, - 0xfa, 0xec, 0xf0, 0x39, 0xac, 0x76, 0xf8, 0x57, 0x2b, 0xd1, 0x27, 0x98, 0xc7, 0xd7, 0xb9, 0xf2, - 0xfb, 0xb4, 0xdb, 0x56, 0x4d, 0x12, 0x47, 0xb0, 0xc2, 0x1a, 0xba, 0x0c, 0x7f, 0x16, 0x7d, 0xdc, - 0x88, 0xec, 0x09, 0x2d, 0x5d, 0x00, 0x3f, 0x69, 0x33, 0xe5, 0x87, 0x9c, 0x71, 0xbf, 0xdd, 0x9b, - 0xb7, 0xeb, 0x21, 0xbf, 0x5c, 0x25, 0x58, 0x0f, 0x19, 0x1b, 0x5a, 0x4c, 0xac, 0x87, 0x10, 0xcc, - 0x8e, 0x4e, 0xb7, 0x7a, 0x6f, 0x13, 0x79, 0xa5, 0xf2, 0x2d, 0x30, 0x3a, 0xbd, 0xb2, 0x1a, 0x88, - 0x18, 0x9d, 0x24, 0x0c, 0x33, 0x92, 0x06, 0xac, 0xc6, 0x26, 0x16, 0xcb, 0x8d, 0x21, 0x77, 0x64, - 0xae, 0x77, 0x83, 0xb0, 0xbf, 0x36, 0x62, 0xbd, 0xf4, 0x79, 0x12, 0xb2, 0x00, 0x96, 0x3f, 0x1b, - 0xbd, 0x58, 0xed, 0xf0, 0x2f, 0xa2, 0xef, 0xb5, 0x2a, 0xb6, 0xcf, 0x99, 0x9c, 0x17, 0x7c, 0x32, - 0xd8, 0xee, 0x28, 0x77, 0x03, 0x1a, 0xd7, 0x4f, 0xfb, 0x2b, 0xb4, 0x72, 0xf4, 0x86, 0xab, 0xbb, - 0x95, 0x29, 0xc3, 0xb3, 0x90, 0x49, 0x9f, 0x0d, 0xe6, 0xe8, 0xb4, 0x4e, 0x6b, 0x99, 0xed, 0xf6, - 0xae, 0x9d, 0x05, 0x4b, 0x52, 0xf5, 0xb2, 0xf6, 0xb3, 0x90, 0x51, 0x0f, 0x0d, 0x2e, 0xb3, 0x49, - 0x95, 0x56, 0x64, 0x56, 0x63, 0xdc, 0x59, 0x9e, 0x6d, 0xd2, 0x91, 0x00, 0x59, 0x9d, 0x6d, 0xf5, - 0xa4, 0xb5, 0x5b, 0xd9, 0x4c, 0x79, 0xd5, 0xcf, 0x6e, 0x27, 0xc7, 0xbc, 0x6a, 0x55, 0xa4, 0xa7, - 0x6f, 0xf5, 0xa4, 0xb5, 0xd7, 0x3f, 0x8f, 0x3e, 0x6e, 0x7b, 0xd5, 0x13, 0xd1, 0x76, 0xa7, 0x29, - 0x30, 0x17, 0x3d, 0xed, 0xaf, 0x60, 0x97, 0x34, 0x5f, 0x25, 0xa5, 0x14, 0xc5, 0x72, 0x74, 0x25, - 0x6e, 0x9a, 0x2f, 0x1f, 0xfc, 0xd1, 0xaa, 0x81, 0xa1, 0x43, 0x10, 0x4b, 0x1a, 0x9c, 0x6c, 0xb9, - 0xb2, 0x5f, 0x48, 0x94, 0x84, 0x2b, 0x87, 0xe8, 0x70, 0xe5, 0x93, 0x36, 0x56, 0x35, 0xb5, 0xb2, - 0x9f, 0x73, 0xac, 0xe1, 0x45, 0x6d, 0x7f, 0xd2, 0xb1, 0xde, 0x0d, 0xda, 0x8c, 0x45, 0x8b, 0xf7, - 0x92, 0xcb, 0x4b, 0x53, 0x27, 0xbc, 0xa4, 0x2e, 0x42, 0x64, 0x2c, 0x04, 0x6a, 0x93, 0xee, 0xfd, - 0x24, 0xe5, 0x6a, 0x47, 0xff, 0xf5, 0xe5, 0x65, 0x2a, 0xd8, 0x04, 0x24, 0xdd, 0x95, 0x78, 0xe8, - 0xca, 0x89, 0xa4, 0x1b, 0xe3, 0xec, 0x59, 0x81, 0x4a, 0x7a, 0xc6, 0x63, 0x91, 0xc5, 0x49, 0x0a, - 0x0f, 0x82, 0x2a, 0x4d, 0x23, 0x24, 0xce, 0x0a, 0xb4, 0x20, 0x3b, 0x31, 0x56, 0xa2, 0x6a, 0xd8, - 0x37, 0xe5, 0x7f, 0xd4, 0x56, 0x74, 0xc4, 0xc4, 0xc4, 0x88, 0x60, 0x76, 0xed, 0x59, 0x09, 0xcf, - 0x73, 0x65, 0xfc, 0x5e, 0x5b, 0xab, 0x96, 0x10, 0x6b, 0x4f, 0x9f, 0xb0, 0x6b, 0xa8, 0xea, 0xf7, - 0x3d, 0x71, 0x93, 0x29, 0xa3, 0x0f, 0xda, 0x2a, 0x8d, 0x8c, 0x58, 0x43, 0x41, 0x46, 0x1b, 0xfe, - 0x49, 0xf4, 0xff, 0x95, 0xe1, 0x42, 0xe4, 0x83, 0x3b, 0x88, 0x42, 0xe1, 0x9c, 0xd9, 0xbc, 0x4b, - 0xca, 0xed, 0xd1, 0x02, 0xd3, 0x37, 0xce, 0x4b, 0x36, 0xe5, 0x83, 0x87, 0x44, 0x8b, 0x2b, 0x29, - 0x71, 0xb4, 0xa0, 0x4d, 0xf9, 0xbd, 0xe2, 0x44, 0x4c, 0xb4, 0x75, 0xa4, 0x86, 0x46, 0x18, 0xea, - 0x15, 0x2e, 0x64, 0x93, 0x99, 0x13, 0xb6, 0x48, 0xa6, 0x66, 0xc2, 0xa9, 0xe3, 0x56, 0x09, 0x92, - 0x19, 0xcb, 0x0c, 0x1d, 0x88, 0x48, 0x66, 0x48, 0x58, 0xfb, 0xfc, 0xd7, 0x95, 0xe8, 0x9e, 0x65, - 0x0e, 0x9a, 0xdd, 0xba, 0xc3, 0xec, 0x52, 0x54, 0xa9, 0xcf, 0x51, 0x92, 0x5d, 0x97, 0x83, 0x2f, - 0x28, 0x93, 0x38, 0x6f, 0x8a, 0xf2, 0xe5, 0xad, 0xf5, 0x6c, 0xd6, 0xda, 0x6c, 0x65, 0xd9, 0xf7, - 0xd9, 0xb5, 0x06, 0xc8, 0x5a, 0xcd, 0x8e, 0x17, 0xe4, 0x88, 0xac, 0x35, 0xc4, 0xdb, 0x26, 0x36, - 0xce, 0x53, 0x91, 0xc1, 0x26, 0xb6, 0x16, 0x2a, 0x21, 0xd1, 0xc4, 0x2d, 0xc8, 0xc6, 0xe3, 0x46, - 0x54, 0xef, 0xba, 0xec, 0xa4, 0x29, 0x88, 0xc7, 0x46, 0xd5, 0x00, 0x44, 0x3c, 0x46, 0x41, 0xed, - 0xe7, 0x2c, 0xfa, 0x4e, 0xf5, 0x48, 0x4f, 0x0b, 0xbe, 0x48, 0x38, 0x3c, 0x7a, 0xe1, 0x48, 0x88, - 0xf1, 0xef, 0x13, 0x76, 0x64, 0x9d, 0x67, 0x65, 0x9e, 0xb2, 0xf2, 0x4a, 0xbf, 0x8c, 0xf7, 0xeb, - 0xdc, 0x08, 0xe1, 0xeb, 0xf8, 0x47, 0x1d, 0x94, 0x0d, 0xea, 0x8d, 0xcc, 0x84, 0x98, 0x55, 0x5c, - 0xb5, 0x15, 0x66, 0xd6, 0x3a, 0x39, 0xbb, 0xe3, 0x7d, 0xc0, 0xd2, 0x94, 0x17, 0xcb, 0x46, 0x76, - 0xcc, 0xb2, 0xe4, 0x92, 0x97, 0x12, 0xec, 0x78, 0x6b, 0x6a, 0x08, 0x31, 0x62, 0xc7, 0x3b, 0x80, - 0xdb, 0x6c, 0x1e, 0x78, 0x3e, 0xcc, 0x26, 0xfc, 0x1d, 0xc8, 0xe6, 0xa1, 0x1d, 0xc5, 0x10, 0xd9, - 0x3c, 0xc5, 0xda, 0x9d, 0xdf, 0x97, 0xa9, 0x88, 0xaf, 0xf5, 0x14, 0xe0, 0x37, 0xb0, 0x92, 0xc0, - 0x39, 0xe0, 0x41, 0x08, 0xb1, 0x93, 0x80, 0x12, 0x9c, 0xf1, 0x3c, 0x65, 0x31, 0x3c, 0x7f, 0x53, - 0xeb, 0x68, 0x19, 0x31, 0x09, 0x40, 0x06, 0x14, 0x57, 0x9f, 0xeb, 0xc1, 0x8a, 0x0b, 0x8e, 0xf5, - 0x3c, 0x08, 0x21, 0x76, 0x1a, 0x54, 0x82, 0x51, 0x9e, 0x26, 0x12, 0x0c, 0x83, 0x5a, 0x43, 0x49, - 0x88, 0x61, 0xe0, 0x13, 0xc0, 0xe4, 0x31, 0x2f, 0xa6, 0x1c, 0x35, 0xa9, 0x24, 0x41, 0x93, 0x0d, - 0x61, 0x0f, 0x1b, 0xd7, 0x75, 0x17, 0xf9, 0x12, 0x1c, 0x36, 0xd6, 0xd5, 0x12, 0xf9, 0x92, 0x38, - 0x6c, 0xec, 0x01, 0xa0, 0x88, 0xa7, 0xac, 0x94, 0x78, 0x11, 0x95, 0x24, 0x58, 0xc4, 0x86, 0xb0, - 0x73, 0x74, 0x5d, 0xc4, 0xb9, 0x04, 0x73, 0xb4, 0x2e, 0x80, 0xf3, 0x06, 0xfa, 0x2e, 0x29, 0xb7, - 0x91, 0xa4, 0x6e, 0x15, 0x2e, 0xf7, 0x13, 0x9e, 0x4e, 0x4a, 0x10, 0x49, 0xf4, 0x73, 0x6f, 0xa4, - 0x44, 0x24, 0x69, 0x53, 0xa0, 0x2b, 0xe9, 0xfd, 0x71, 0xac, 0x76, 0x60, 0x6b, 0xfc, 0x41, 0x08, - 0xb1, 0xf1, 0xa9, 0x29, 0xf4, 0x2e, 0x2b, 0x8a, 0xa4, 0x9a, 0xfc, 0x57, 0xf1, 0x02, 0x35, 0x72, - 0x22, 0x3e, 0x61, 0x1c, 0x18, 0x5e, 0x4d, 0xe0, 0xc6, 0x0a, 0x06, 0x43, 0xf7, 0xa7, 0x41, 0xc6, - 0x66, 0x9c, 0x4a, 0xe2, 0xbc, 0x42, 0xc5, 0x9e, 0x26, 0xf2, 0x06, 0x75, 0xb5, 0x0b, 0x73, 0x3e, - 0x06, 0x32, 0x2e, 0x8e, 0xc5, 0x82, 0x8f, 0xc5, 0xab, 0x77, 0x49, 0x29, 0x93, 0x6c, 0xaa, 0x67, - 0xee, 0xe7, 0x84, 0x25, 0x0c, 0x26, 0x3e, 0x06, 0xea, 0x54, 0xb2, 0x09, 0x04, 0x28, 0xcb, 0x09, - 0xbf, 0x41, 0x13, 0x08, 0x68, 0xd1, 0x70, 0x44, 0x02, 0x11, 0xe2, 0xed, 0x3e, 0x8a, 0x71, 0xae, - 0xbf, 0x98, 0x1e, 0x8b, 0x26, 0x97, 0xa3, 0xac, 0x41, 0x90, 0x58, 0xca, 0x06, 0x15, 0xec, 0xfa, - 0xd2, 0xf8, 0xb7, 0x43, 0x6c, 0x9d, 0xb0, 0xd3, 0x1e, 0x66, 0x8f, 0x7b, 0x90, 0x88, 0x2b, 0x7b, - 0x0e, 0x80, 0x72, 0xd5, 0x3e, 0x06, 0xf0, 0xb8, 0x07, 0xe9, 0xec, 0xc9, 0xb8, 0xd5, 0x7a, 0xc9, - 0xe2, 0xeb, 0x69, 0x21, 0xe6, 0xd9, 0x64, 0x57, 0xa4, 0xa2, 0x00, 0x7b, 0x32, 0x5e, 0xa9, 0x01, - 0x4a, 0xec, 0xc9, 0x74, 0xa8, 0xd8, 0x0c, 0xce, 0x2d, 0xc5, 0x4e, 0x9a, 0x4c, 0xe1, 0x8a, 0xda, - 0x33, 0xa4, 0x00, 0x22, 0x83, 0x43, 0x41, 0xa4, 0x13, 0xd5, 0x2b, 0x6e, 0x99, 0xc4, 0x2c, 0xad, - 0xfd, 0x6d, 0xd3, 0x66, 0x3c, 0xb0, 0xb3, 0x13, 0x21, 0x0a, 0x48, 0x3d, 0xc7, 0xf3, 0x22, 0x3b, - 0xcc, 0xa4, 0x20, 0xeb, 0xd9, 0x00, 0x9d, 0xf5, 0x74, 0x40, 0x10, 0x56, 0xc7, 0xfc, 0x5d, 0x55, - 0x9a, 0xea, 0x1f, 0x2c, 0xac, 0x56, 0xbf, 0x0f, 0xb5, 0x3c, 0x14, 0x56, 0x01, 0x07, 0x2a, 0xa3, - 0x9d, 0xd4, 0x1d, 0x26, 0xa0, 0xed, 0x77, 0x93, 0xf5, 0x6e, 0x10, 0xf7, 0x33, 0x92, 0xcb, 0x94, - 0x87, 0xfc, 0x28, 0xa0, 0x8f, 0x9f, 0x06, 0xb4, 0xdb, 0x2d, 0x5e, 0x7d, 0xae, 0x78, 0x7c, 0xdd, - 0x3a, 0xd6, 0xe4, 0x17, 0xb4, 0x46, 0x88, 0xed, 0x16, 0x02, 0xc5, 0x9b, 0xe8, 0x30, 0x16, 0x59, - 0xa8, 0x89, 0x2a, 0x79, 0x9f, 0x26, 0xd2, 0x9c, 0x5d, 0xfc, 0x1a, 0xa9, 0xee, 0x99, 0x75, 0x33, - 0x6d, 0x10, 0x16, 0x5c, 0x88, 0x58, 0xfc, 0x92, 0xb0, 0xcd, 0xc9, 0xa1, 0xcf, 0xe3, 0xf6, 0x99, - 0xef, 0x96, 0x95, 0x63, 0xfa, 0xcc, 0x37, 0xc5, 0xd2, 0x95, 0xac, 0xfb, 0x48, 0x87, 0x15, 0xbf, - 0x9f, 0x6c, 0xf6, 0x83, 0xed, 0x92, 0xc7, 0xf3, 0xb9, 0x9b, 0x72, 0x56, 0xd4, 0x5e, 0xb7, 0x02, - 0x86, 0x2c, 0x46, 0x2c, 0x79, 0x02, 0x38, 0x08, 0x61, 0x9e, 0xe7, 0x5d, 0x91, 0x49, 0x9e, 0x49, - 0x2c, 0x84, 0xf9, 0xc6, 0x34, 0x18, 0x0a, 0x61, 0x94, 0x02, 0xe8, 0xb7, 0x6a, 0x3f, 0x88, 0xcb, - 0x13, 0x36, 0x43, 0x33, 0xb6, 0x7a, 0xaf, 0xa7, 0x96, 0x87, 0xfa, 0x2d, 0xe0, 0x9c, 0x97, 0x7c, - 0xae, 0x97, 0x31, 0x2b, 0xa6, 0x66, 0x77, 0x63, 0x32, 0x78, 0x4a, 0xdb, 0xf1, 0x49, 0xe2, 0x25, - 0x5f, 0x58, 0x03, 0x84, 0x9d, 0xc3, 0x19, 0x9b, 0x9a, 0x9a, 0x22, 0x35, 0x50, 0xf2, 0x56, 0x55, - 0xd7, 0xbb, 0x41, 0xe0, 0xe7, 0x4d, 0x32, 0xe1, 0x22, 0xe0, 0x47, 0xc9, 0xfb, 0xf8, 0x81, 0x20, - 0xc8, 0xde, 0xaa, 0x7a, 0xd7, 0x2b, 0xba, 0x9d, 0x6c, 0xa2, 0xd7, 0xb1, 0x43, 0xe2, 0xf1, 0x00, - 0x2e, 0x94, 0xbd, 0x11, 0x3c, 0x18, 0xa3, 0xcd, 0x06, 0x6d, 0x68, 0x8c, 0x9a, 0xfd, 0xd7, 0x3e, - 0x63, 0x14, 0x83, 0xb5, 0xcf, 0x9f, 0xe9, 0x31, 0xba, 0xc7, 0x24, 0xab, 0xf2, 0xf6, 0x37, 0x09, - 0xbf, 0xd1, 0x0b, 0x61, 0xa4, 0xbe, 0x0d, 0x35, 0x54, 0x9f, 0xac, 0x82, 0x55, 0xf1, 0x76, 0x6f, - 0x3e, 0xe0, 0x5b, 0xaf, 0x10, 0x3a, 0x7d, 0x83, 0xa5, 0xc2, 0x76, 0x6f, 0x3e, 0xe0, 0x5b, 0x7f, - 0x0b, 0xdf, 0xe9, 0x1b, 0x7c, 0x10, 0xbf, 0xdd, 0x9b, 0xd7, 0xbe, 0xff, 0xba, 0x19, 0xb8, 0xae, - 0xf3, 0x2a, 0x0f, 0x8b, 0x65, 0xb2, 0xe0, 0x58, 0x3a, 0xe9, 0xdb, 0x33, 0x68, 0x28, 0x9d, 0xa4, - 0x55, 0x9c, 0x0b, 0x94, 0xb0, 0x52, 0x9c, 0x8a, 0x32, 0x51, 0x2f, 0xe9, 0x9f, 0xf7, 0x30, 0xda, - 0xc0, 0xa1, 0x45, 0x53, 0x48, 0xc9, 0xbe, 0x6e, 0xf4, 0x50, 0x7b, 0x8a, 0x79, 0x33, 0x60, 0xaf, - 0x7d, 0x98, 0x79, 0xab, 0x27, 0x6d, 0x5f, 0xfc, 0x79, 0x8c, 0xfb, 0xc6, 0x31, 0xd4, 0xaa, 0xe8, - 0x4b, 0xc7, 0xa7, 0xfd, 0x15, 0xb4, 0xfb, 0xbf, 0x6d, 0xd6, 0x15, 0xd0, 0xbf, 0x1e, 0x04, 0xcf, - 0xfa, 0x58, 0x04, 0x03, 0xe1, 0xf9, 0xad, 0x74, 0x74, 0x41, 0xfe, 0xb1, 0x59, 0x40, 0x37, 0xa8, - 0xfa, 0x96, 0x43, 0x7d, 0x03, 0xaa, 0xc7, 0x44, 0xa8, 0x59, 0x2d, 0x0c, 0x47, 0xc6, 0x8b, 0x5b, - 0x6a, 0x39, 0xd7, 0x69, 0x79, 0xb0, 0xfe, 0xe6, 0xd0, 0x29, 0x4f, 0xc8, 0xb2, 0x43, 0xc3, 0x02, - 0x7d, 0x71, 0x5b, 0x35, 0x6a, 0xac, 0x38, 0xb0, 0xba, 0x9d, 0xe3, 0x79, 0x4f, 0xc3, 0xde, 0x7d, - 0x1d, 0x9f, 0xdf, 0x4e, 0x49, 0x97, 0xe5, 0xbf, 0x56, 0xa2, 0x47, 0x1e, 0x6b, 0xdf, 0x27, 0x80, - 0x5d, 0x8f, 0x1f, 0x07, 0xec, 0x53, 0x4a, 0xa6, 0x70, 0xbf, 0xff, 0xab, 0x29, 0xdb, 0xbb, 0xa7, - 0x3c, 0x95, 0xfd, 0x24, 0x95, 0xbc, 0x68, 0xdf, 0x3d, 0xe5, 0xdb, 0xad, 0xa9, 0x21, 0x7d, 0xf7, - 0x54, 0x00, 0x77, 0xee, 0x9e, 0x42, 0x3c, 0xa3, 0x77, 0x4f, 0xa1, 0xd6, 0x82, 0x77, 0x4f, 0x85, - 0x35, 0xa8, 0xf0, 0xde, 0x14, 0xa1, 0xde, 0xb7, 0xee, 0x65, 0xd1, 0xdf, 0xc6, 0x7e, 0x76, 0x1b, - 0x15, 0x62, 0x82, 0xab, 0x39, 0x75, 0xce, 0xad, 0xc7, 0x33, 0xf5, 0xce, 0xba, 0x6d, 0xf7, 0xe6, - 0xb5, 0xef, 0x9f, 0xea, 0xd5, 0x8d, 0x09, 0xe7, 0xa2, 0x50, 0xf7, 0x8e, 0x6d, 0x84, 0xc2, 0x73, - 0x65, 0xc1, 0x6d, 0xf9, 0xcd, 0x7e, 0x30, 0x51, 0xdd, 0x8a, 0xd0, 0x8d, 0x3e, 0xec, 0x32, 0x04, - 0x9a, 0x7c, 0xbb, 0x37, 0x4f, 0x4c, 0x23, 0xb5, 0xef, 0xba, 0xb5, 0x7b, 0x18, 0xf3, 0xdb, 0xfa, - 0x69, 0x7f, 0x05, 0xed, 0x7e, 0xa1, 0xd3, 0x46, 0xd7, 0xbd, 0x6a, 0xe7, 0xad, 0x2e, 0x53, 0x23, - 0xaf, 0x99, 0x87, 0x7d, 0xf1, 0x50, 0x02, 0xe1, 0x4e, 0xa1, 0x5d, 0x09, 0x04, 0x3a, 0x8d, 0x7e, - 0x7e, 0x3b, 0x25, 0x5d, 0x96, 0x7f, 0x59, 0x89, 0xee, 0x92, 0x65, 0xd1, 0xfd, 0xe0, 0x8b, 0xbe, - 0x96, 0x41, 0x7f, 0xf8, 0xf2, 0xd6, 0x7a, 0xba, 0x50, 0xff, 0xbe, 0x12, 0xdd, 0x0b, 0x14, 0xaa, - 0xee, 0x20, 0xb7, 0xb0, 0xee, 0x77, 0x94, 0x1f, 0xde, 0x5e, 0x91, 0x9a, 0xee, 0x5d, 0x7c, 0xd4, - 0xbe, 0x94, 0x29, 0x60, 0x7b, 0x44, 0x5f, 0xca, 0xd4, 0xad, 0x05, 0x37, 0x79, 0xd8, 0x45, 0xb3, - 0xe8, 0x42, 0x37, 0x79, 0xd4, 0x09, 0xb5, 0xe0, 0xe5, 0x12, 0x18, 0x87, 0x39, 0x79, 0xf5, 0x2e, - 0x67, 0xd9, 0x84, 0x76, 0x52, 0xcb, 0xbb, 0x9d, 0x18, 0x0e, 0x6e, 0x8e, 0x55, 0xd2, 0x33, 0xd1, - 0x2c, 0xa4, 0x1e, 0x53, 0xfa, 0x06, 0x09, 0x6e, 0x8e, 0xb5, 0x50, 0xc2, 0x9b, 0xce, 0x1a, 0x43, - 0xde, 0x40, 0xb2, 0xf8, 0xa4, 0x0f, 0x0a, 0x52, 0x74, 0xe3, 0xcd, 0xec, 0xb9, 0x6f, 0x86, 0xac, - 0xb4, 0xf6, 0xdd, 0xb7, 0x7a, 0xd2, 0x84, 0xdb, 0x11, 0x97, 0x5f, 0x71, 0x36, 0xe1, 0x45, 0xd0, - 0xad, 0xa1, 0x7a, 0xb9, 0x75, 0x69, 0xcc, 0xed, 0xae, 0x48, 0xe7, 0xb3, 0x4c, 0x37, 0x26, 0xe9, - 0xd6, 0xa5, 0xba, 0xdd, 0x02, 0x1a, 0x6e, 0x0b, 0x5a, 0xb7, 0x2a, 0xbd, 0x7c, 0x12, 0x36, 0xe3, - 0x65, 0x95, 0x1b, 0xbd, 0x58, 0xba, 0x9e, 0xba, 0x1b, 0x75, 0xd4, 0x13, 0xf4, 0xa4, 0xad, 0x9e, - 0x34, 0xdc, 0x9f, 0x73, 0xdc, 0x9a, 0xfe, 0xb4, 0xdd, 0x61, 0xab, 0xd5, 0xa5, 0x9e, 0xf6, 0x57, - 0x80, 0xbb, 0xa1, 0xba, 0x57, 0x1d, 0x25, 0xa5, 0xdc, 0x4f, 0xd2, 0x74, 0xb0, 0x11, 0xe8, 0x26, - 0x0d, 0x14, 0xdc, 0x0d, 0x45, 0x60, 0xa2, 0x27, 0x37, 0xbb, 0x87, 0xd9, 0xa0, 0xcb, 0x8e, 0xa2, - 0x7a, 0xf5, 0x64, 0x97, 0x06, 0x3b, 0x5a, 0xce, 0xa3, 0x36, 0xb5, 0x1d, 0x86, 0x1f, 0x5c, 0xab, - 0xc2, 0xdb, 0xbd, 0x79, 0xf0, 0xba, 0x5d, 0x51, 0x6a, 0x66, 0x79, 0x48, 0x99, 0xf0, 0x66, 0x92, - 0x47, 0x1d, 0x14, 0xd8, 0x15, 0xac, 0x87, 0xd1, 0xdb, 0x64, 0x32, 0xe5, 0x12, 0x7d, 0x53, 0xe4, - 0x02, 0xc1, 0x37, 0x45, 0x00, 0x04, 0x4d, 0x57, 0xff, 0x6e, 0xb6, 0x43, 0x0f, 0x27, 0x58, 0xd3, - 0x69, 0x65, 0x87, 0x0a, 0x35, 0x1d, 0x4a, 0x83, 0x68, 0x60, 0xdc, 0xea, 0xcf, 0xf1, 0x9f, 0x84, - 0xcc, 0x80, 0x6f, 0xf2, 0x37, 0x7a, 0xb1, 0x60, 0x46, 0xb1, 0x0e, 0x93, 0x59, 0x22, 0xb1, 0x19, - 0xc5, 0xb1, 0x51, 0x21, 0xa1, 0x19, 0xa5, 0x8d, 0x52, 0xd5, 0xab, 0x72, 0x84, 0xc3, 0x49, 0xb8, - 0x7a, 0x35, 0xd3, 0xaf, 0x7a, 0x86, 0x6d, 0xbd, 0xd8, 0xcc, 0x4c, 0x97, 0x91, 0x57, 0x7a, 0xb1, - 0x8c, 0xf4, 0x6d, 0xf5, 0x99, 0x26, 0x04, 0x43, 0x51, 0x87, 0x52, 0x80, 0x1b, 0xf6, 0x15, 0xd7, - 0xbc, 0x7b, 0xcd, 0x73, 0xce, 0x0a, 0x96, 0xc5, 0xe8, 0xe2, 0x54, 0x19, 0x6c, 0x91, 0xa1, 0xc5, - 0x29, 0xa9, 0x01, 0x5e, 0x9b, 0xfb, 0x1f, 0x58, 0x22, 0x43, 0xc1, 0x7c, 0xc9, 0xe8, 0x7f, 0x5f, - 0xf9, 0xb8, 0x07, 0x09, 0x5f, 0x9b, 0x37, 0x80, 0xd9, 0xf8, 0xae, 0x9d, 0x7e, 0x16, 0x30, 0xe5, - 0xa3, 0xa1, 0x85, 0x30, 0xad, 0x02, 0x3a, 0xb5, 0x49, 0x70, 0xb9, 0xfc, 0x09, 0x5f, 0x62, 0x9d, - 0xda, 0xe6, 0xa7, 0x0a, 0x09, 0x75, 0xea, 0x36, 0x0a, 0xf2, 0x4c, 0x77, 0x1d, 0xb4, 0x1a, 0xd0, - 0x77, 0x97, 0x3e, 0x6b, 0x9d, 0x1c, 0x18, 0x39, 0x7b, 0xc9, 0xc2, 0x7b, 0x4f, 0x80, 0x14, 0x74, - 0x2f, 0x59, 0xe0, 0xaf, 0x09, 0x36, 0x7a, 0xb1, 0xf0, 0x95, 0x3c, 0x93, 0xfc, 0x5d, 0xf3, 0xae, - 0x1c, 0x29, 0xae, 0x92, 0xb7, 0x5e, 0x96, 0xaf, 0x77, 0x83, 0xf6, 0x00, 0xec, 0x69, 0x21, 0x62, - 0x5e, 0x96, 0xfa, 0xa6, 0x4a, 0xff, 0x84, 0x91, 0x96, 0x0d, 0xc1, 0x3d, 0x95, 0x0f, 0xc3, 0x90, - 0x73, 0xbd, 0x5c, 0x2d, 0xb2, 0xb7, 0xde, 0xac, 0xa2, 0x9a, 0xed, 0x0b, 0x6f, 0xd6, 0x3a, 0x39, - 0x3b, 0xbc, 0xb4, 0xd4, 0xbd, 0xe6, 0x66, 0x1d, 0x55, 0xc7, 0x6e, 0xb8, 0x79, 0xdc, 0x83, 0xd4, - 0xae, 0xbe, 0x8a, 0xde, 0x3f, 0x12, 0xd3, 0x11, 0xcf, 0x26, 0x83, 0x1f, 0xf8, 0x47, 0x68, 0xc5, - 0x74, 0x58, 0xfd, 0x6c, 0x8c, 0xde, 0xa1, 0xc4, 0xf6, 0x10, 0xe0, 0x1e, 0xbf, 0x98, 0x4f, 0x47, - 0x92, 0x49, 0x70, 0x08, 0x50, 0xfd, 0x3e, 0xac, 0x04, 0xc4, 0x21, 0x40, 0x0f, 0x00, 0xf6, 0xc6, - 0x05, 0xe7, 0xa8, 0xbd, 0x4a, 0x10, 0xb4, 0xa7, 0x01, 0x9b, 0x45, 0x18, 0x7b, 0x55, 0xa2, 0x0e, - 0x0f, 0xed, 0x59, 0x1d, 0x25, 0x25, 0xb2, 0x88, 0x36, 0x65, 0x3b, 0x77, 0x5d, 0x7d, 0x75, 0xeb, - 0xc8, 0x7c, 0x36, 0x63, 0xc5, 0x12, 0x74, 0x6e, 0x5d, 0x4b, 0x07, 0x20, 0x3a, 0x37, 0x0a, 0xda, - 0x51, 0xdb, 0x3c, 0xe6, 0xf8, 0xfa, 0x40, 0x14, 0x62, 0x2e, 0x93, 0x8c, 0xc3, 0x9b, 0x27, 0xcc, - 0x03, 0x75, 0x19, 0x62, 0xd4, 0x52, 0xac, 0xcd, 0x72, 0x15, 0x51, 0x9f, 0x27, 0x54, 0xf7, 0x57, - 0x97, 0x52, 0x14, 0xf0, 0x7d, 0x62, 0x6d, 0x05, 0x42, 0x44, 0x96, 0x4b, 0xc2, 0xa0, 0xed, 0x4f, - 0x93, 0x6c, 0x8a, 0xb6, 0xfd, 0xa9, 0x7b, 0xfb, 0xeb, 0x3d, 0x1a, 0xb0, 0x03, 0xaa, 0x7e, 0x68, - 0xf5, 0x00, 0xd0, 0xdf, 0x72, 0xa2, 0x0f, 0xdd, 0x25, 0x88, 0x01, 0x85, 0x93, 0xc0, 0xd5, 0xeb, - 0x9c, 0x67, 0x7c, 0xd2, 0x9c, 0x9a, 0xc3, 0x5c, 0x79, 0x44, 0xd0, 0x15, 0x24, 0x6d, 0x2c, 0x52, - 0xf2, 0xb3, 0x79, 0x76, 0x5a, 0x88, 0xcb, 0x24, 0xe5, 0x05, 0x88, 0x45, 0xb5, 0xba, 0x23, 0x27, - 0x62, 0x11, 0xc6, 0xd9, 0xe3, 0x17, 0x4a, 0xea, 0x5d, 0xc2, 0x3e, 0x2e, 0x58, 0x0c, 0x8f, 0x5f, - 0xd4, 0x36, 0xda, 0x18, 0xb1, 0x33, 0x18, 0xc0, 0x9d, 0x44, 0xa7, 0x76, 0x9d, 0x2d, 0x55, 0xff, - 0xd0, 0xdf, 0x12, 0xaa, 0x3b, 0x51, 0x4b, 0x90, 0xe8, 0x68, 0x73, 0x18, 0x49, 0x24, 0x3a, 0x61, - 0x0d, 0x3b, 0x95, 0x28, 0xee, 0x44, 0x1f, 0x2b, 0x02, 0x53, 0x49, 0x6d, 0xa3, 0x11, 0x12, 0x53, - 0x49, 0x0b, 0x02, 0x01, 0xa9, 0x19, 0x06, 0x53, 0x34, 0x20, 0x19, 0x69, 0x30, 0x20, 0xb9, 0x94, - 0x0d, 0x14, 0x87, 0x59, 0x22, 0x13, 0x96, 0x8e, 0xb8, 0x3c, 0x65, 0x05, 0x9b, 0x71, 0xc9, 0x0b, - 0x18, 0x28, 0x34, 0x32, 0xf4, 0x18, 0x22, 0x50, 0x50, 0xac, 0x76, 0xf8, 0x07, 0xd1, 0x87, 0xd5, - 0xbc, 0xcf, 0x33, 0xfd, 0xe7, 0x56, 0x5e, 0xa9, 0xbf, 0xd3, 0x34, 0xf8, 0xc8, 0xd8, 0x18, 0xc9, - 0x82, 0xb3, 0x59, 0x63, 0xfb, 0x03, 0xf3, 0xbb, 0x02, 0x9f, 0xae, 0x54, 0xfd, 0xf9, 0x44, 0xc8, - 0xe4, 0xb2, 0x5a, 0x66, 0xeb, 0x2f, 0x88, 0x40, 0x7f, 0x76, 0xc5, 0xc3, 0xc0, 0x5d, 0x14, 0x18, - 0x67, 0xe3, 0xb4, 0x2b, 0x3d, 0xe3, 0x79, 0x0a, 0xe3, 0xb4, 0xa7, 0xad, 0x00, 0x22, 0x4e, 0xa3, - 0xa0, 0x1d, 0x9c, 0xae, 0x78, 0xcc, 0xc3, 0x95, 0x19, 0xf3, 0x7e, 0x95, 0x19, 0x7b, 0x1f, 0x65, - 0xa4, 0xd1, 0x87, 0xc7, 0x7c, 0x76, 0xc1, 0x8b, 0xf2, 0x2a, 0xc9, 0xa9, 0x7b, 0x5b, 0x2d, 0xd1, - 0x79, 0x6f, 0x2b, 0x81, 0xda, 0x99, 0xc0, 0x02, 0x87, 0xe5, 0x09, 0x9b, 0x71, 0x75, 0xb3, 0x06, - 0x98, 0x09, 0x1c, 0x23, 0x0e, 0x44, 0xcc, 0x04, 0x24, 0xec, 0x7c, 0xdf, 0x65, 0x99, 0x33, 0x3e, - 0xad, 0x7a, 0x58, 0x71, 0xca, 0x96, 0x33, 0x9e, 0x49, 0x6d, 0x12, 0xec, 0xc9, 0x3b, 0x26, 0x71, - 0x9e, 0xd8, 0x93, 0xef, 0xa3, 0xe7, 0x84, 0x26, 0xef, 0xc1, 0x9f, 0x8a, 0x42, 0xd6, 0x7f, 0x4c, - 0xe9, 0xbc, 0x48, 0x41, 0x68, 0xf2, 0x1f, 0xaa, 0x47, 0x12, 0xa1, 0x29, 0xac, 0xe1, 0xfc, 0x15, - 0x02, 0xaf, 0x0c, 0x6f, 0x78, 0x61, 0xfa, 0xc9, 0xab, 0x19, 0x4b, 0x52, 0xdd, 0x1b, 0x7e, 0x14, - 0xb0, 0x4d, 0xe8, 0x10, 0x7f, 0x85, 0xa0, 0xaf, 0xae, 0xf3, 0x77, 0x1b, 0xc2, 0x25, 0x04, 0xaf, - 0x08, 0x3a, 0xec, 0x13, 0xaf, 0x08, 0xba, 0xb5, 0xec, 0xca, 0xdd, 0xb2, 0x8a, 0x5b, 0x2a, 0x62, - 0x57, 0x4c, 0xe0, 0x7e, 0xa1, 0x63, 0x13, 0x80, 0xc4, 0xca, 0x3d, 0xa8, 0x60, 0x53, 0x03, 0x8b, - 0xed, 0x27, 0x19, 0x4b, 0x93, 0x9f, 0xc1, 0xb4, 0xde, 0xb1, 0xd3, 0x10, 0x44, 0x6a, 0x80, 0x93, - 0x98, 0xab, 0x03, 0x2e, 0xc7, 0x49, 0x15, 0xfa, 0xd7, 0x03, 0xcf, 0x4d, 0x11, 0xdd, 0xae, 0x1c, - 0xd2, 0xb9, 0xa3, 0x15, 0x3e, 0xd6, 0x9d, 0x3c, 0x1f, 0x55, 0xb3, 0xea, 0x19, 0x8f, 0x79, 0x92, - 0xcb, 0xc1, 0x8b, 0xf0, 0xb3, 0x02, 0x38, 0x71, 0xd0, 0xa2, 0x87, 0x9a, 0xf3, 0xfa, 0xbe, 0x8a, - 0x25, 0xa3, 0xfa, 0xaf, 0x0c, 0x9e, 0x97, 0xbc, 0xd0, 0x89, 0xc6, 0x01, 0x97, 0x60, 0x74, 0x3a, - 0xdc, 0xd0, 0x01, 0xab, 0x8a, 0x12, 0xa3, 0x33, 0xac, 0x61, 0x37, 0xfb, 0x1c, 0x4e, 0xdf, 0xb9, - 0xad, 0xce, 0x1b, 0x6e, 0x92, 0xc6, 0x1c, 0x8a, 0xd8, 0xec, 0xa3, 0x69, 0x9b, 0xad, 0xb5, 0xdd, - 0xee, 0x64, 0xcb, 0x43, 0x78, 0x64, 0x02, 0xb1, 0xa4, 0x30, 0x22, 0x5b, 0x0b, 0xe0, 0xce, 0x66, - 0x78, 0x21, 0xd8, 0x24, 0x66, 0xa5, 0x3c, 0x65, 0xcb, 0x54, 0xb0, 0x89, 0x9a, 0xd7, 0xe1, 0x66, - 0x78, 0xc3, 0x0c, 0x5d, 0x88, 0xda, 0x0c, 0xa7, 0x60, 0x37, 0x3b, 0x53, 0x7f, 0x3c, 0x51, 0x9f, - 0xe5, 0x84, 0xd9, 0x99, 0x2a, 0x2f, 0x3c, 0xc7, 0xf9, 0x30, 0x0c, 0xd9, 0x6f, 0xd0, 0x6a, 0x91, - 0x4a, 0x43, 0xee, 0x61, 0x3a, 0x5e, 0x02, 0x72, 0x3f, 0x40, 0xd8, 0x7b, 0x29, 0xea, 0xdf, 0x9b, - 0xbf, 0xff, 0x23, 0xf5, 0x4d, 0xd6, 0x9b, 0x98, 0xae, 0x0b, 0x0d, 0xdd, 0x0b, 0xee, 0xb6, 0x7a, - 0xd2, 0x36, 0xcd, 0xdc, 0xbd, 0x62, 0x72, 0x67, 0x32, 0x39, 0xe6, 0x25, 0xf2, 0x41, 0x79, 0x25, - 0x1c, 0x5a, 0x29, 0x91, 0x66, 0xb6, 0x29, 0xdb, 0xd1, 0x2b, 0xd9, 0xab, 0x49, 0x22, 0xb5, 0xac, - 0x39, 0x21, 0xbd, 0xd9, 0x36, 0xd0, 0xa6, 0x88, 0x5a, 0xd1, 0xb4, 0x8d, 0xe5, 0x15, 0x33, 0x16, - 0xd3, 0x69, 0xca, 0x35, 0x74, 0xc6, 0x59, 0x7d, 0x91, 0xdf, 0x76, 0xdb, 0x16, 0x0a, 0x12, 0xb1, - 0x3c, 0xa8, 0x60, 0xd3, 0xc8, 0x0a, 0xab, 0x5f, 0x49, 0x35, 0x0f, 0x76, 0xad, 0x6d, 0xc6, 0x03, - 0x88, 0x34, 0x12, 0x05, 0xed, 0x77, 0x6f, 0x95, 0xf8, 0x80, 0x37, 0x4f, 0x02, 0x5e, 0x41, 0xa4, - 0x94, 0x1d, 0x31, 0xf1, 0xdd, 0x1b, 0x82, 0xd9, 0x75, 0x02, 0xf0, 0xf0, 0x72, 0x79, 0x38, 0x81, - 0xeb, 0x04, 0xa8, 0xaf, 0x18, 0x62, 0x9d, 0x40, 0xb1, 0x7e, 0xd3, 0x99, 0x7d, 0xaf, 0x23, 0x56, - 0xda, 0xca, 0x21, 0x4d, 0x87, 0x82, 0xa1, 0xa6, 0xa3, 0x14, 0xfc, 0x47, 0xea, 0x6e, 0xad, 0x21, - 0x8f, 0x14, 0xdb, 0x57, 0x5b, 0xed, 0xc2, 0x6c, 0x5c, 0x32, 0xeb, 0x49, 0x75, 0x64, 0x09, 0xbf, - 0xc1, 0xbf, 0x16, 0x12, 0x71, 0xa9, 0x05, 0xd5, 0xb6, 0x5f, 0xde, 0xff, 0xef, 0x6f, 0xee, 0xac, - 0xfc, 0xe2, 0x9b, 0x3b, 0x2b, 0xff, 0xfb, 0xcd, 0x9d, 0x95, 0x9f, 0x7f, 0x7b, 0xe7, 0xbd, 0x5f, - 0x7c, 0x7b, 0xe7, 0xbd, 0xff, 0xf9, 0xf6, 0xce, 0x7b, 0x5f, 0xbf, 0xaf, 0xff, 0xa8, 0xee, 0xc5, - 0xff, 0x53, 0x7f, 0x1a, 0xf7, 0xf9, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0xb2, 0x7c, 0x4b, 0xdb, - 0x78, 0x77, 0x00, 0x00, + // 5400 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x9d, 0xdf, 0x6f, 0x1c, 0x39, + 0x72, 0xf8, 0x57, 0x2f, 0xdf, 0xfd, 0xa6, 0x2f, 0xb7, 0x49, 0x66, 0x93, 0xcd, 0xde, 0xe6, 0xce, + 0xf6, 0x7a, 0x6d, 0xc9, 0xb6, 0xac, 0x91, 0xd7, 0xde, 0x1f, 0x87, 0xbb, 0x00, 0x81, 0x2c, 0xd9, + 0x5a, 0xe5, 0x24, 0x59, 0xd1, 0x8c, 0x6c, 0x60, 0x81, 0x00, 0xa1, 0x66, 0xa8, 0x51, 0x47, 0x3d, + 0xcd, 0xbe, 0x6e, 0xce, 0xc8, 0x73, 0x41, 0x82, 0x04, 0x09, 0x12, 0x24, 0x48, 0x90, 0x43, 0x7e, + 0xbd, 0x06, 0xc8, 0xff, 0x91, 0xf7, 0x3c, 0xde, 0x63, 0x1e, 0x83, 0xdd, 0x3f, 0x20, 0xff, 0x42, + 0xd0, 0x24, 0x9b, 0x3f, 0xaa, 0xab, 0xd8, 0xad, 0x7b, 0xb2, 0x31, 0xf5, 0xa9, 0x2a, 0xb2, 0x49, + 0x16, 0x8b, 0x6c, 0x36, 0x95, 0xdc, 0x2e, 0xce, 0xb7, 0x8b, 0x52, 0x48, 0x51, 0x6d, 0x57, 0xbc, + 0x5c, 0xa6, 0x13, 0xde, 0xfc, 0x3b, 0x54, 0x3f, 0x0f, 0xde, 0x65, 0xf9, 0x4a, 0xae, 0x0a, 0xfe, + 0xd1, 0x87, 0x8e, 0x9c, 0x88, 0xf9, 0x9c, 0xe5, 0xd3, 0x4a, 0x23, 0x1f, 0x7d, 0xe0, 0x24, 0x7c, + 0xc9, 0x73, 0x69, 0x7e, 0x7f, 0xfa, 0x9f, 0xff, 0xbb, 0x96, 0xbc, 0xb7, 0x9b, 0xa5, 0x3c, 0x97, + 0xbb, 0x46, 0x63, 0xf0, 0x75, 0xf2, 0xdd, 0x9d, 0xa2, 0xd8, 0xe7, 0xf2, 0x35, 0x2f, 0xab, 0x54, + 0xe4, 0x83, 0x4f, 0x86, 0xc6, 0xc1, 0xf0, 0xb4, 0x98, 0x0c, 0x77, 0x8a, 0x62, 0xe8, 0x84, 0xc3, + 0x53, 0xfe, 0xd3, 0x05, 0xaf, 0xe4, 0x47, 0xf7, 0xe2, 0x50, 0x55, 0x88, 0xbc, 0xe2, 0x83, 0x8b, + 0xe4, 0x37, 0x76, 0x8a, 0x62, 0xc4, 0xe5, 0x1e, 0xaf, 0x2b, 0x30, 0x92, 0x4c, 0xf2, 0xc1, 0x46, + 0x4b, 0x35, 0x04, 0xac, 0x8f, 0x07, 0xdd, 0xa0, 0xf1, 0x33, 0x4e, 0xbe, 0x53, 0xfb, 0xb9, 0x5c, + 0xc8, 0xa9, 0xb8, 0xce, 0x07, 0x1f, 0xb7, 0x15, 0x8d, 0xc8, 0xda, 0xbe, 0x1b, 0x43, 0x8c, 0xd5, + 0x37, 0xc9, 0xaf, 0xbe, 0x61, 0x59, 0xc6, 0xe5, 0x6e, 0xc9, 0xeb, 0x82, 0x87, 0x3a, 0x5a, 0x34, + 0xd4, 0x32, 0x6b, 0xf7, 0x93, 0x28, 0x63, 0x0c, 0x7f, 0x9d, 0x7c, 0x57, 0x4b, 0x4e, 0xf9, 0x44, + 0x2c, 0x79, 0x39, 0x40, 0xb5, 0x8c, 0x90, 0x78, 0xe4, 0x2d, 0x08, 0xda, 0xde, 0x15, 0xf9, 0x92, + 0x97, 0x12, 0xb7, 0x6d, 0x84, 0x71, 0xdb, 0x0e, 0x32, 0xb6, 0xff, 0x76, 0x2d, 0xf9, 0xfe, 0xce, + 0x64, 0x22, 0x16, 0xb9, 0x3c, 0x14, 0x13, 0x96, 0x1d, 0xa6, 0xf9, 0xd5, 0x31, 0xbf, 0xde, 0xbd, + 0xac, 0xf9, 0x7c, 0xc6, 0x07, 0xcf, 0xc2, 0xa7, 0xaa, 0xd1, 0xa1, 0x65, 0x87, 0x3e, 0x6c, 0x7d, + 0x7f, 0x76, 0x33, 0x25, 0x53, 0x96, 0x7f, 0x5c, 0x4b, 0x6e, 0xc1, 0xb2, 0x8c, 0x44, 0xb6, 0xe4, + 0xae, 0x34, 0x9f, 0x77, 0x18, 0x0e, 0x71, 0x5b, 0x9e, 0x2f, 0x6e, 0xaa, 0x66, 0x4a, 0x94, 0x25, + 0xef, 0xfb, 0xdd, 0x65, 0xc4, 0x2b, 0x35, 0x9c, 0x1e, 0xd2, 0x3d, 0xc2, 0x20, 0xd6, 0xf3, 0xa3, + 0x3e, 0xa8, 0xf1, 0x96, 0x26, 0x03, 0xe3, 0x2d, 0x13, 0x95, 0x75, 0xf6, 0x00, 0xb5, 0xe0, 0x11, + 0xd6, 0xd7, 0xc3, 0x1e, 0xa4, 0x71, 0xf5, 0x47, 0xc9, 0xaf, 0xbd, 0x11, 0xe5, 0x55, 0x55, 0xb0, + 0x09, 0x37, 0x43, 0xe1, 0x7e, 0xa8, 0xdd, 0x48, 0xe1, 0x68, 0x58, 0xef, 0xc2, 0xbc, 0x4e, 0xdb, + 0x08, 0x5f, 0x15, 0x1c, 0xc6, 0x20, 0xa7, 0x58, 0x0b, 0xa9, 0x4e, 0x0b, 0x21, 0x63, 0xfb, 0x2a, + 0x19, 0x38, 0xdb, 0xe7, 0x7f, 0xcc, 0x27, 0x72, 0x67, 0x3a, 0x85, 0xad, 0xe2, 0x74, 0x15, 0x31, + 0xdc, 0x99, 0x4e, 0xa9, 0x56, 0xc1, 0x51, 0xe3, 0xec, 0x3a, 0xf9, 0x00, 0x38, 0x3b, 0x4c, 0x2b, + 0xe5, 0x70, 0x2b, 0x6e, 0xc5, 0x60, 0xd6, 0xe9, 0xb0, 0x2f, 0x6e, 0x1c, 0xff, 0xf9, 0x5a, 0xf2, + 0x3d, 0xc4, 0xf3, 0x29, 0x9f, 0x8b, 0x25, 0x1f, 0x3c, 0xe9, 0xb6, 0xa6, 0x49, 0xeb, 0xff, 0xd3, + 0x1b, 0x68, 0x20, 0xdd, 0x64, 0xc4, 0x33, 0x3e, 0x91, 0x64, 0x37, 0xd1, 0xe2, 0xce, 0x6e, 0x62, + 0x31, 0x6f, 0x84, 0x35, 0xc2, 0x7d, 0x2e, 0x77, 0x17, 0x65, 0xc9, 0x73, 0x49, 0xb6, 0xa5, 0x43, + 0x3a, 0xdb, 0x32, 0x40, 0x91, 0xfa, 0xec, 0x73, 0xb9, 0x93, 0x65, 0x64, 0x7d, 0xb4, 0xb8, 0xb3, + 0x3e, 0x16, 0x33, 0x1e, 0x26, 0xc9, 0xaf, 0x7b, 0x4f, 0x4c, 0x1e, 0xe4, 0x17, 0x62, 0x40, 0x3f, + 0x0b, 0x25, 0xb7, 0x3e, 0x36, 0x3a, 0x39, 0xa4, 0x1a, 0x2f, 0xde, 0x16, 0xa2, 0xa4, 0x9b, 0x45, + 0x8b, 0x3b, 0xab, 0x61, 0x31, 0xe3, 0xe1, 0x0f, 0x93, 0xf7, 0x4c, 0x94, 0x6c, 0xe6, 0xb3, 0x7b, + 0x68, 0x08, 0x85, 0x13, 0xda, 0xfd, 0x0e, 0xaa, 0x65, 0xfe, 0x28, 0x9d, 0x95, 0x75, 0xf4, 0xc1, + 0xcd, 0x1b, 0x69, 0x87, 0x79, 0x47, 0x19, 0xf3, 0x22, 0xf9, 0xcd, 0xd0, 0xfc, 0x2e, 0xcb, 0x27, + 0x3c, 0x1b, 0x3c, 0x8a, 0xa9, 0x6b, 0xc6, 0xba, 0xda, 0xec, 0xc5, 0xba, 0x60, 0x67, 0x08, 0x13, + 0x4c, 0x3f, 0x41, 0xb5, 0x41, 0x28, 0xbd, 0x17, 0x87, 0x5a, 0xb6, 0xf7, 0x78, 0xc6, 0x49, 0xdb, + 0x5a, 0xd8, 0x61, 0xdb, 0x42, 0xc6, 0x76, 0x99, 0xfc, 0x96, 0x6d, 0xe6, 0x3a, 0x2f, 0x50, 0xf2, + 0x7a, 0xd2, 0xd9, 0x24, 0xda, 0xd1, 0x87, 0xac, 0xaf, 0xc7, 0xfd, 0xe0, 0x56, 0x7d, 0x4c, 0x44, + 0xc1, 0xeb, 0x03, 0xe2, 0xc9, 0xbd, 0x38, 0x64, 0x6c, 0xff, 0xdd, 0x5a, 0xf2, 0x03, 0x23, 0x7b, + 0x91, 0xb3, 0xf3, 0x8c, 0xab, 0x29, 0xfe, 0x98, 0xcb, 0x6b, 0x51, 0x5e, 0x8d, 0x56, 0xf9, 0x84, + 0x48, 0x67, 0x70, 0xb8, 0x23, 0x9d, 0x21, 0x95, 0xbc, 0x0c, 0xd6, 0x54, 0x54, 0x8a, 0x02, 0x66, + 0xb0, 0x4d, 0x0d, 0xa4, 0x28, 0xa8, 0x0c, 0x36, 0x44, 0x5a, 0x56, 0x8f, 0xea, 0x69, 0x00, 0xb7, + 0x7a, 0xe4, 0xc7, 0xfd, 0xbb, 0x31, 0xc4, 0x85, 0xe1, 0xa6, 0x03, 0x8b, 0xfc, 0x22, 0x9d, 0x9d, + 0x15, 0xd3, 0xba, 0x1b, 0x3f, 0xc4, 0x7b, 0xa8, 0x87, 0x10, 0x61, 0x98, 0x40, 0x8d, 0xb7, 0x7f, + 0x70, 0x89, 0x9e, 0x09, 0x0d, 0x2f, 0x4b, 0x31, 0x3f, 0xe4, 0x33, 0x36, 0x59, 0x99, 0x78, 0xf6, + 0x59, 0x2c, 0x90, 0x40, 0xda, 0x16, 0xe2, 0xf3, 0x1b, 0x6a, 0x99, 0xf2, 0xfc, 0xfb, 0x5a, 0x72, + 0xaf, 0xa9, 0xfe, 0x25, 0xcb, 0x67, 0xdc, 0xb4, 0xa7, 0x2e, 0xfd, 0x4e, 0x3e, 0x3d, 0xe5, 0x95, + 0x64, 0xa5, 0x1c, 0xfc, 0x08, 0xaf, 0x64, 0x4c, 0xc7, 0x96, 0xed, 0xc7, 0xbf, 0x94, 0xae, 0x6b, + 0xf5, 0x51, 0x1d, 0xa8, 0x4d, 0x08, 0x08, 0x5b, 0x5d, 0x49, 0x60, 0x00, 0xb8, 0x1b, 0x43, 0x5c, + 0xab, 0x2b, 0xc1, 0x41, 0xbe, 0x4c, 0x25, 0xdf, 0xe7, 0x39, 0x2f, 0xdb, 0xad, 0xae, 0x55, 0x43, + 0x84, 0x68, 0x75, 0x02, 0x75, 0xc1, 0x26, 0xf0, 0x66, 0x27, 0xfb, 0xcd, 0x88, 0x91, 0xd6, 0x74, + 0xff, 0xb8, 0x1f, 0xec, 0x56, 0xab, 0x9e, 0xcf, 0x53, 0xbe, 0x14, 0x57, 0x70, 0xb5, 0xea, 0x9b, + 0xd0, 0x00, 0xb1, 0x5a, 0x45, 0x41, 0x37, 0x23, 0x7b, 0x7e, 0x5e, 0xa7, 0xfc, 0x1a, 0xcc, 0xc8, + 0xbe, 0x72, 0x2d, 0x26, 0x66, 0x64, 0x04, 0x33, 0x1e, 0x8e, 0x93, 0x5f, 0x51, 0xc2, 0xdf, 0x17, + 0x69, 0x3e, 0xb8, 0x8d, 0x28, 0xd5, 0x02, 0x6b, 0xf5, 0x0e, 0x0d, 0x80, 0x12, 0xd7, 0xbf, 0x9a, + 0xe9, 0xf1, 0x3e, 0xa1, 0x04, 0x66, 0xc6, 0xf5, 0x2e, 0xcc, 0xa5, 0x42, 0x4a, 0x58, 0xc7, 0xaf, + 0xd1, 0x25, 0x2b, 0xd3, 0x7c, 0x36, 0xc0, 0x74, 0x3d, 0x39, 0x91, 0x0a, 0x61, 0x1c, 0xe8, 0xc2, + 0x46, 0x71, 0xa7, 0x28, 0xca, 0x3a, 0x2c, 0x62, 0x5d, 0x38, 0x44, 0xa2, 0x5d, 0xb8, 0x85, 0xe2, + 0xde, 0xf6, 0xf8, 0x24, 0x4b, 0xf3, 0xa8, 0x37, 0x83, 0xf4, 0xf1, 0xe6, 0x50, 0xd0, 0x79, 0x0f, + 0x39, 0x5b, 0xf2, 0xa6, 0x66, 0xd8, 0x93, 0xf1, 0x81, 0x68, 0xe7, 0x05, 0xa0, 0x5b, 0x77, 0x2a, + 0xf1, 0x11, 0xbb, 0xe2, 0xf5, 0x03, 0xe6, 0xf5, 0xbc, 0x36, 0xc0, 0xf4, 0x03, 0x82, 0x58, 0x77, + 0xe2, 0xa4, 0x71, 0xb5, 0x48, 0x3e, 0x50, 0xf2, 0x13, 0x56, 0xca, 0x74, 0x92, 0x16, 0x2c, 0x6f, + 0xd6, 0x33, 0xd8, 0xb8, 0x6e, 0x51, 0xd6, 0xe5, 0x56, 0x4f, 0xda, 0xb8, 0xfd, 0xb7, 0xb5, 0xe4, + 0x63, 0xe8, 0xf7, 0x84, 0x97, 0xf3, 0x54, 0x2d, 0x8b, 0x2b, 0x1d, 0x84, 0x07, 0x5f, 0xc6, 0x8d, + 0xb6, 0x14, 0x6c, 0x69, 0x7e, 0x78, 0x73, 0x45, 0x97, 0x0c, 0x8d, 0xcc, 0x52, 0xe1, 0x55, 0x39, + 0x6d, 0x6d, 0x1b, 0x8d, 0x9a, 0xfc, 0x5f, 0x09, 0x89, 0x64, 0xa8, 0x05, 0x81, 0x11, 0x7e, 0x96, + 0x57, 0x8d, 0x75, 0x6c, 0x84, 0x3b, 0x71, 0x74, 0x84, 0x07, 0x98, 0x1b, 0xe1, 0x27, 0x8b, 0xf3, + 0x2c, 0xad, 0x2e, 0xd3, 0x7c, 0x66, 0x32, 0xdf, 0x50, 0xd7, 0x89, 0x61, 0xf2, 0xbb, 0xd1, 0xc9, + 0x61, 0x4e, 0x4c, 0x67, 0x21, 0x9d, 0x80, 0x6e, 0xb2, 0xd1, 0xc9, 0xb9, 0x05, 0x89, 0x93, 0xd6, + 0x2b, 0x61, 0xb0, 0x20, 0xf1, 0x54, 0x6b, 0x29, 0xb1, 0x20, 0x69, 0x53, 0x6e, 0x41, 0xe2, 0xd7, + 0xa1, 0x12, 0xd9, 0x92, 0x9f, 0x95, 0x29, 0x58, 0x90, 0x04, 0xe5, 0x6b, 0x18, 0x62, 0x41, 0x42, + 0xb1, 0x2e, 0x50, 0x39, 0x62, 0x9f, 0xcb, 0x91, 0x64, 0x72, 0x51, 0x81, 0x40, 0xe5, 0xd9, 0xb0, + 0x08, 0x11, 0xa8, 0x08, 0xd4, 0x78, 0xfb, 0x83, 0x24, 0xd1, 0x9b, 0x08, 0x6a, 0xa3, 0x27, 0x9c, + 0x7b, 0xcc, 0xee, 0x42, 0xb0, 0xcb, 0xf3, 0x71, 0x84, 0x70, 0x09, 0x8f, 0xfe, 0x5d, 0xed, 0x5f, + 0x0d, 0x50, 0x0d, 0x25, 0x22, 0x12, 0x1e, 0x80, 0xc0, 0x82, 0x8e, 0x2e, 0xc5, 0x35, 0x5e, 0xd0, + 0x5a, 0x12, 0x2f, 0xa8, 0x21, 0xdc, 0x8e, 0xb2, 0x29, 0x28, 0xb6, 0xa3, 0xdc, 0x14, 0x23, 0xb6, + 0xa3, 0x0c, 0x19, 0xd7, 0x67, 0x7c, 0xc3, 0xcf, 0x85, 0xb8, 0x9a, 0xb3, 0xf2, 0x0a, 0xf4, 0x99, + 0x40, 0xb9, 0x61, 0x88, 0x3e, 0x43, 0xb1, 0xae, 0xcf, 0xf8, 0x0e, 0xeb, 0x74, 0xf9, 0xac, 0xcc, + 0x40, 0x9f, 0x09, 0x6c, 0x18, 0x84, 0xe8, 0x33, 0x04, 0xea, 0xa2, 0x93, 0xef, 0x6d, 0xc4, 0xe1, + 0x1e, 0x46, 0xa0, 0x3e, 0xe2, 0xd4, 0x1e, 0x06, 0x82, 0xc1, 0x2e, 0xb4, 0x5f, 0xb2, 0xe2, 0x12, + 0xef, 0x42, 0x4a, 0x14, 0xef, 0x42, 0x0d, 0x02, 0xdb, 0x7b, 0xc4, 0x59, 0x39, 0xb9, 0xc4, 0xdb, + 0x5b, 0xcb, 0xe2, 0xed, 0x6d, 0x19, 0xd8, 0xde, 0x5a, 0xf0, 0x26, 0x95, 0x97, 0x47, 0x5c, 0x32, + 0xbc, 0xbd, 0x43, 0x26, 0xde, 0xde, 0x2d, 0xd6, 0xe5, 0xe3, 0xbe, 0xc3, 0xd1, 0xe2, 0xbc, 0x9a, + 0x94, 0xe9, 0x39, 0x1f, 0x44, 0xac, 0x58, 0x88, 0xc8, 0xc7, 0x49, 0xd8, 0xf8, 0xfc, 0xf9, 0x5a, + 0x72, 0xbb, 0x69, 0x76, 0x51, 0x55, 0x66, 0xee, 0x0b, 0xdd, 0x7f, 0x8e, 0xb7, 0x2f, 0x81, 0x13, + 0x7b, 0xfc, 0x3d, 0xd4, 0xbc, 0xdc, 0x00, 0x2f, 0xd2, 0x59, 0x5e, 0xd9, 0x42, 0x7d, 0xd9, 0xc7, + 0xba, 0xa7, 0x40, 0xe4, 0x06, 0xbd, 0x14, 0x5d, 0x5a, 0x66, 0xda, 0xa7, 0x91, 0x1d, 0x4c, 0x2b, + 0x90, 0x96, 0x35, 0xcf, 0xdb, 0x23, 0x88, 0xb4, 0x0c, 0x27, 0x61, 0x57, 0xd8, 0x2f, 0xc5, 0xa2, + 0xa8, 0x3a, 0xba, 0x02, 0x80, 0xe2, 0x5d, 0xa1, 0x0d, 0x1b, 0x9f, 0x6f, 0x93, 0xdf, 0xf6, 0xbb, + 0x9f, 0xff, 0xb0, 0xb7, 0xe8, 0x3e, 0x85, 0x3d, 0xe2, 0x61, 0x5f, 0xdc, 0x65, 0x14, 0x8d, 0x67, + 0xb9, 0xc7, 0x25, 0x4b, 0xb3, 0x6a, 0xb0, 0x8e, 0xdb, 0x68, 0xe4, 0x44, 0x46, 0x81, 0x71, 0x30, + 0xbe, 0xed, 0x2d, 0x8a, 0x2c, 0x9d, 0xb4, 0xdf, 0xb0, 0x18, 0x5d, 0x2b, 0x8e, 0xc7, 0x37, 0x1f, + 0x83, 0xf1, 0xba, 0x4e, 0xfd, 0xd4, 0x7f, 0xc6, 0xab, 0x82, 0xe3, 0xf1, 0x3a, 0x40, 0xe2, 0xf1, + 0x1a, 0xa2, 0xb0, 0x3e, 0x23, 0x2e, 0x0f, 0xd9, 0x4a, 0x2c, 0x88, 0x78, 0x6d, 0xc5, 0xf1, 0xfa, + 0xf8, 0x98, 0x5b, 0x1b, 0x58, 0x0f, 0x07, 0xb9, 0xe4, 0x65, 0xce, 0xb2, 0x97, 0x19, 0x9b, 0x55, + 0x03, 0x22, 0xc6, 0x84, 0x14, 0xb1, 0x36, 0xa0, 0x69, 0xe4, 0x31, 0x1e, 0x54, 0x2f, 0xd9, 0x52, + 0x94, 0xa9, 0xa4, 0x1f, 0xa3, 0x43, 0x3a, 0x1f, 0x63, 0x80, 0xa2, 0xde, 0x76, 0xca, 0xc9, 0x65, + 0xba, 0xe4, 0xd3, 0x88, 0xb7, 0x06, 0xe9, 0xe1, 0xcd, 0x43, 0x91, 0x46, 0x1b, 0x89, 0x45, 0x39, + 0xe1, 0x64, 0xa3, 0x69, 0x71, 0x67, 0xa3, 0x59, 0xcc, 0x78, 0xf8, 0xab, 0xb5, 0xe4, 0x77, 0xb4, + 0xd4, 0x7f, 0xed, 0xb1, 0xc7, 0xaa, 0xcb, 0x73, 0xc1, 0xca, 0xe9, 0xe0, 0x53, 0xcc, 0x0e, 0x8a, + 0x5a, 0xd7, 0x4f, 0x6f, 0xa2, 0x02, 0x1f, 0x6b, 0x9d, 0x77, 0xbb, 0x11, 0x87, 0x3e, 0xd6, 0x00, + 0x89, 0x3f, 0x56, 0x88, 0xc2, 0x00, 0xa2, 0xe4, 0x7a, 0x4b, 0x6e, 0x9d, 0xd4, 0x0f, 0xf7, 0xe5, + 0x36, 0x3a, 0x39, 0x18, 0x1f, 0x6b, 0x61, 0xd8, 0x5b, 0xb6, 0x28, 0x1b, 0x78, 0x8f, 0x19, 0xf6, + 0xc5, 0x49, 0xcf, 0x76, 0x54, 0xc4, 0x3d, 0xb7, 0x46, 0xc6, 0xb0, 0x2f, 0x4e, 0x78, 0xf6, 0xc2, + 0x5a, 0xcc, 0x33, 0x12, 0xda, 0x86, 0x7d, 0x71, 0x98, 0x7d, 0x19, 0xa6, 0x99, 0x17, 0x1e, 0x45, + 0xec, 0xc0, 0xb9, 0x61, 0xb3, 0x17, 0x6b, 0x1c, 0xfe, 0xcd, 0x5a, 0xf2, 0x7d, 0xe7, 0xf1, 0x48, + 0x4c, 0xd3, 0x8b, 0x95, 0x86, 0x5e, 0xb3, 0x6c, 0xc1, 0xab, 0xc1, 0x53, 0xca, 0x5a, 0x9b, 0xb5, + 0x25, 0x78, 0x76, 0x23, 0x1d, 0x38, 0x76, 0x76, 0x8a, 0x22, 0x5b, 0x8d, 0xf9, 0xbc, 0xc8, 0xc8, + 0xb1, 0x13, 0x20, 0xf1, 0xb1, 0x03, 0x51, 0x98, 0x95, 0x8f, 0x45, 0x9d, 0xf3, 0xa3, 0x59, 0xb9, + 0x12, 0xc5, 0xb3, 0xf2, 0x06, 0x81, 0xb9, 0xd2, 0x58, 0xec, 0x8a, 0x2c, 0xe3, 0x13, 0xd9, 0x3e, + 0x3a, 0x61, 0x35, 0x1d, 0x11, 0xcf, 0x95, 0x00, 0xe9, 0x76, 0xe5, 0x9a, 0x35, 0x24, 0x2b, 0xf9, + 0xf3, 0xd5, 0x61, 0x9a, 0x5f, 0x0d, 0xf0, 0xb4, 0xc0, 0x01, 0xc4, 0xae, 0x1c, 0x0a, 0xc2, 0xb5, + 0xea, 0x59, 0x3e, 0x15, 0xf8, 0x5a, 0xb5, 0x96, 0xc4, 0xd7, 0xaa, 0x86, 0x80, 0x26, 0x4f, 0x39, + 0x65, 0xb2, 0x96, 0xc4, 0x4d, 0x1a, 0x02, 0x0b, 0x85, 0xe6, 0xdd, 0x0d, 0x19, 0x0a, 0xc1, 0xdb, + 0x9a, 0x8d, 0x4e, 0x0e, 0xf6, 0xd0, 0x66, 0xd1, 0xfa, 0x92, 0xcb, 0xc9, 0x25, 0xde, 0x43, 0x03, + 0x24, 0xde, 0x43, 0x21, 0x0a, 0xab, 0x34, 0x16, 0x76, 0xd1, 0xbd, 0x8e, 0xf7, 0x8f, 0xd6, 0x82, + 0x7b, 0xa3, 0x93, 0x83, 0xcb, 0xc8, 0x83, 0xb9, 0x7a, 0x66, 0x68, 0x27, 0xd7, 0xb2, 0xf8, 0x32, + 0xd2, 0x32, 0xb0, 0xf4, 0x5a, 0xa0, 0xf6, 0xb2, 0xd6, 0x69, 0xc5, 0x60, 0x37, 0x6b, 0xa3, 0x93, + 0x33, 0x4e, 0xfe, 0xc5, 0x2e, 0xe3, 0xb4, 0xf4, 0x58, 0xd4, 0x63, 0xe4, 0x35, 0xcb, 0xd2, 0x29, + 0x93, 0x7c, 0x2c, 0xae, 0x78, 0x8e, 0xaf, 0x98, 0x4c, 0x69, 0x35, 0x3f, 0x0c, 0x14, 0xe2, 0x2b, + 0xa6, 0xb8, 0x22, 0xec, 0x27, 0x9a, 0x3e, 0xab, 0xf8, 0x2e, 0xab, 0x88, 0x48, 0x16, 0x20, 0xf1, + 0x7e, 0x02, 0x51, 0x98, 0xaf, 0x6a, 0xf9, 0x8b, 0xb7, 0x05, 0x2f, 0x53, 0x9e, 0x4f, 0x38, 0x9e, + 0xaf, 0x42, 0x2a, 0x9e, 0xaf, 0x22, 0x34, 0x5c, 0xab, 0xed, 0x31, 0xc9, 0x9f, 0xaf, 0xc6, 0xe9, + 0x9c, 0x57, 0x92, 0xcd, 0x0b, 0x7c, 0xad, 0x06, 0xa0, 0xf8, 0x5a, 0xad, 0x0d, 0xb7, 0xb6, 0x86, + 0x6c, 0x40, 0x6c, 0x9f, 0xb8, 0x82, 0x44, 0xe4, 0xc4, 0x15, 0x81, 0xc2, 0x07, 0xeb, 0x00, 0xf4, + 0x25, 0x41, 0xcb, 0x4a, 0xf4, 0x25, 0x01, 0x4d, 0xb7, 0x36, 0xdc, 0x2c, 0x33, 0xaa, 0x87, 0x66, + 0x47, 0xd1, 0x47, 0xfe, 0x10, 0xdd, 0xec, 0xc5, 0xe2, 0x3b, 0x7c, 0xa7, 0x3c, 0x63, 0x6a, 0xda, + 0x8a, 0x6c, 0xa3, 0x35, 0x4c, 0x9f, 0x1d, 0x3e, 0x8f, 0x35, 0x0e, 0xff, 0x62, 0x2d, 0xf9, 0x08, + 0xf3, 0xf8, 0xaa, 0x50, 0x7e, 0x9f, 0x74, 0xdb, 0xd2, 0x24, 0x71, 0xa4, 0x2c, 0xae, 0x61, 0xca, + 0xf0, 0x27, 0xc9, 0x87, 0x8d, 0xc8, 0x9d, 0x38, 0x33, 0x05, 0x08, 0x93, 0x36, 0x5b, 0x7e, 0xc8, + 0x59, 0xf7, 0xdb, 0xbd, 0x79, 0xb7, 0x1e, 0x0a, 0xcb, 0x55, 0x81, 0xf5, 0x90, 0xb5, 0x61, 0xc4, + 0xc4, 0x7a, 0x08, 0xc1, 0xdc, 0xe8, 0xf4, 0xab, 0xf7, 0x26, 0x95, 0x97, 0x2a, 0xdf, 0x02, 0xa3, + 0x33, 0x28, 0xab, 0x85, 0x88, 0xd1, 0x49, 0xc2, 0x30, 0x23, 0x69, 0xc0, 0x7a, 0x6c, 0x62, 0xb1, + 0xdc, 0x1a, 0xf2, 0x47, 0xe6, 0x83, 0x6e, 0x10, 0xf6, 0xd7, 0x46, 0x6c, 0x96, 0x3e, 0x8f, 0x62, + 0x16, 0xc0, 0xf2, 0x67, 0xb3, 0x17, 0x6b, 0x1c, 0xfe, 0x59, 0xf2, 0xbd, 0x56, 0xc5, 0x5e, 0x72, + 0x26, 0x17, 0x25, 0x9f, 0x0e, 0xb6, 0x3b, 0xca, 0xdd, 0x80, 0xd6, 0xf5, 0x93, 0xfe, 0x0a, 0xad, + 0x1c, 0xbd, 0xe1, 0x74, 0xb7, 0xb2, 0x65, 0x78, 0x1a, 0x33, 0x19, 0xb2, 0xd1, 0x1c, 0x9d, 0xd6, + 0x69, 0x2d, 0xb3, 0xfd, 0xde, 0xb5, 0xb3, 0x64, 0x69, 0xa6, 0x5e, 0xd6, 0x7e, 0x1a, 0x33, 0x1a, + 0xa0, 0xd1, 0x65, 0x36, 0xa9, 0xd2, 0x8a, 0xcc, 0x6a, 0x8c, 0x7b, 0xcb, 0xb3, 0xc7, 0x74, 0x24, + 0x40, 0x56, 0x67, 0x5b, 0x3d, 0x69, 0xe3, 0x56, 0x36, 0x53, 0x5e, 0xfd, 0xb3, 0xdf, 0xc9, 0x31, + 0xaf, 0x46, 0x15, 0xe9, 0xe9, 0x5b, 0x3d, 0x69, 0xe3, 0xf5, 0x4f, 0x93, 0x0f, 0xdb, 0x5e, 0xcd, + 0x44, 0xb4, 0xdd, 0x69, 0x0a, 0xcc, 0x45, 0x4f, 0xfa, 0x2b, 0xb8, 0x25, 0xcd, 0x57, 0x69, 0x25, + 0x45, 0xb9, 0x1a, 0x5d, 0x8a, 0xeb, 0xe6, 0x4b, 0x8e, 0x70, 0xb4, 0x1a, 0x60, 0xe8, 0x11, 0xc4, + 0x92, 0x06, 0x27, 0x5b, 0xae, 0xdc, 0x17, 0x1f, 0x15, 0xe1, 0xca, 0x23, 0x3a, 0x5c, 0x85, 0xa4, + 0x8b, 0x55, 0x4d, 0xad, 0xdc, 0xe7, 0x29, 0x1b, 0x78, 0x51, 0xdb, 0x9f, 0xa8, 0x3c, 0xe8, 0x06, + 0x5d, 0xc6, 0x62, 0xc4, 0x7b, 0xe9, 0xc5, 0x85, 0xad, 0x13, 0x5e, 0x52, 0x1f, 0x21, 0x32, 0x16, + 0x02, 0x75, 0x49, 0xf7, 0xcb, 0x34, 0xe3, 0x6a, 0x47, 0xff, 0xd5, 0xc5, 0x45, 0x26, 0xd8, 0x14, + 0x24, 0xdd, 0xb5, 0x78, 0xe8, 0xcb, 0x89, 0xa4, 0x1b, 0xe3, 0xdc, 0x59, 0x81, 0x5a, 0x7a, 0xca, + 0x27, 0x22, 0x9f, 0xa4, 0x19, 0x3c, 0x08, 0xaa, 0x34, 0xad, 0x90, 0x38, 0x2b, 0xd0, 0x82, 0xdc, + 0xc4, 0x58, 0x8b, 0xea, 0x61, 0xdf, 0x94, 0xff, 0x7e, 0x5b, 0xd1, 0x13, 0x13, 0x13, 0x23, 0x82, + 0xb9, 0xb5, 0x67, 0x2d, 0x3c, 0x2b, 0x94, 0xf1, 0x3b, 0x6d, 0x2d, 0x2d, 0x21, 0xd6, 0x9e, 0x21, + 0xe1, 0xd6, 0x50, 0xf5, 0xef, 0x7b, 0xe2, 0x3a, 0x57, 0x46, 0xef, 0xb6, 0x55, 0x1a, 0x19, 0xb1, + 0x86, 0x82, 0x8c, 0x31, 0xfc, 0x93, 0xe4, 0xff, 0x2b, 0xc3, 0xa5, 0x28, 0x06, 0xb7, 0x10, 0x85, + 0xd2, 0x3b, 0xb3, 0x79, 0x9b, 0x94, 0xbb, 0xa3, 0x05, 0xb6, 0x6f, 0x9c, 0x55, 0x6c, 0x06, 0xcf, + 0x3a, 0xbb, 0x16, 0x57, 0x52, 0xe2, 0x68, 0x41, 0x9b, 0x0a, 0x7b, 0xc5, 0xb1, 0x98, 0x1a, 0xeb, + 0x48, 0x0d, 0xad, 0x30, 0xd6, 0x2b, 0x7c, 0xc8, 0x25, 0x33, 0xc7, 0x6c, 0x99, 0xce, 0xec, 0x84, + 0xa3, 0xe3, 0x56, 0x05, 0x92, 0x19, 0xc7, 0x0c, 0x3d, 0x88, 0x48, 0x66, 0x48, 0xd8, 0xf8, 0xfc, + 0xe7, 0xb5, 0xe4, 0x8e, 0x63, 0xf6, 0x9b, 0xdd, 0xba, 0x83, 0xfc, 0x42, 0xd4, 0xa9, 0xcf, 0x61, + 0x9a, 0x5f, 0x55, 0x83, 0x2f, 0x28, 0x93, 0x38, 0x6f, 0x8b, 0xf2, 0xe5, 0x8d, 0xf5, 0x5c, 0xd6, + 0xda, 0x6c, 0x65, 0xb9, 0xf7, 0xd9, 0x5a, 0x03, 0x64, 0xad, 0x76, 0xc7, 0x0b, 0x72, 0x44, 0xd6, + 0x1a, 0xe3, 0x5d, 0x13, 0x5b, 0xe7, 0x99, 0xc8, 0x61, 0x13, 0x3b, 0x0b, 0xb5, 0x90, 0x68, 0xe2, + 0x16, 0xe4, 0xe2, 0x71, 0x23, 0xd2, 0xbb, 0x2e, 0x3b, 0x59, 0x06, 0xe2, 0xb1, 0x55, 0xb5, 0x00, + 0x11, 0x8f, 0x51, 0xd0, 0xf8, 0x39, 0x4d, 0xbe, 0x53, 0x3f, 0xd2, 0x93, 0x92, 0x2f, 0x53, 0x0e, + 0x8f, 0x5e, 0x78, 0x12, 0x62, 0xfc, 0x87, 0x84, 0x1b, 0x59, 0x67, 0x79, 0x55, 0x64, 0xac, 0xba, + 0x34, 0x2f, 0xe3, 0xc3, 0x3a, 0x37, 0x42, 0xf8, 0x3a, 0xfe, 0x7e, 0x07, 0xe5, 0x82, 0x7a, 0x23, + 0xb3, 0x21, 0x66, 0x1d, 0x57, 0x6d, 0x85, 0x99, 0x8d, 0x4e, 0xce, 0xed, 0x78, 0xef, 0xb3, 0x2c, + 0xe3, 0xe5, 0xaa, 0x91, 0x1d, 0xb1, 0x3c, 0xbd, 0xe0, 0x95, 0x04, 0x3b, 0xde, 0x86, 0x1a, 0x42, + 0x8c, 0xd8, 0xf1, 0x8e, 0xe0, 0x2e, 0x9b, 0x07, 0x9e, 0x0f, 0xf2, 0x29, 0x7f, 0x0b, 0xb2, 0x79, + 0x68, 0x47, 0x31, 0x44, 0x36, 0x4f, 0xb1, 0x6e, 0xe7, 0xf7, 0x79, 0x26, 0x26, 0x57, 0x66, 0x0a, + 0x08, 0x1b, 0x58, 0x49, 0xe0, 0x1c, 0x70, 0x37, 0x86, 0xb8, 0x49, 0x40, 0x09, 0x4e, 0x79, 0x91, + 0xb1, 0x09, 0x3c, 0x7f, 0xa3, 0x75, 0x8c, 0x8c, 0x98, 0x04, 0x20, 0x03, 0x8a, 0x6b, 0xce, 0xf5, + 0x60, 0xc5, 0x05, 0xc7, 0x7a, 0xee, 0xc6, 0x10, 0x37, 0x0d, 0x2a, 0xc1, 0xa8, 0xc8, 0x52, 0x09, + 0x86, 0x81, 0xd6, 0x50, 0x12, 0x62, 0x18, 0x84, 0x04, 0x30, 0x79, 0xc4, 0xcb, 0x19, 0x47, 0x4d, + 0x2a, 0x49, 0xd4, 0x64, 0x43, 0xb8, 0xc3, 0xc6, 0xba, 0xee, 0xa2, 0x58, 0x81, 0xc3, 0xc6, 0xa6, + 0x5a, 0xa2, 0x58, 0x11, 0x87, 0x8d, 0x03, 0x00, 0x14, 0xf1, 0x84, 0x55, 0x12, 0x2f, 0xa2, 0x92, + 0x44, 0x8b, 0xd8, 0x10, 0x6e, 0x8e, 0xd6, 0x45, 0x5c, 0x48, 0x30, 0x47, 0x9b, 0x02, 0x78, 0x6f, + 0xa0, 0x6f, 0x93, 0x72, 0x17, 0x49, 0x74, 0xab, 0x70, 0xf9, 0x32, 0xe5, 0xd9, 0xb4, 0x02, 0x91, + 0xc4, 0x3c, 0xf7, 0x46, 0x4a, 0x44, 0x92, 0x36, 0x05, 0xba, 0x92, 0xd9, 0x1f, 0xc7, 0x6a, 0x07, + 0xb6, 0xc6, 0xef, 0xc6, 0x10, 0x17, 0x9f, 0x9a, 0x42, 0xef, 0xb2, 0xb2, 0x4c, 0xeb, 0xc9, 0x7f, + 0x1d, 0x2f, 0x50, 0x23, 0x27, 0xe2, 0x13, 0xc6, 0x81, 0xe1, 0xd5, 0x04, 0x6e, 0xac, 0x60, 0x30, + 0x74, 0x7f, 0x12, 0x65, 0x5c, 0xc6, 0xa9, 0x24, 0xde, 0x2b, 0x54, 0xec, 0x69, 0x22, 0x6f, 0x50, + 0xd7, 0xbb, 0x30, 0xef, 0x63, 0x20, 0xeb, 0xe2, 0x48, 0x2c, 0xf9, 0x58, 0xbc, 0x78, 0x9b, 0x56, + 0x32, 0xcd, 0x67, 0x66, 0xe6, 0x7e, 0x46, 0x58, 0xc2, 0x60, 0xe2, 0x63, 0xa0, 0x4e, 0x25, 0x97, + 0x40, 0x80, 0xb2, 0x1c, 0xf3, 0x6b, 0x34, 0x81, 0x80, 0x16, 0x2d, 0x47, 0x24, 0x10, 0x31, 0xde, + 0xed, 0xa3, 0x58, 0xe7, 0xe6, 0x0b, 0xf0, 0xb1, 0x68, 0x72, 0x39, 0xca, 0x1a, 0x04, 0x89, 0xa5, + 0x6c, 0x54, 0xc1, 0xad, 0x2f, 0xad, 0x7f, 0x37, 0xc4, 0x1e, 0x10, 0x76, 0xda, 0xc3, 0xec, 0x61, + 0x0f, 0x12, 0x71, 0xe5, 0xce, 0x01, 0x50, 0xae, 0xda, 0xc7, 0x00, 0x1e, 0xf6, 0x20, 0xbd, 0x3d, + 0x19, 0xbf, 0x5a, 0xcf, 0xd9, 0xe4, 0x6a, 0x56, 0x8a, 0x45, 0x3e, 0xdd, 0x15, 0x99, 0x28, 0xc1, + 0x9e, 0x4c, 0x50, 0x6a, 0x80, 0x12, 0x7b, 0x32, 0x1d, 0x2a, 0x2e, 0x83, 0xf3, 0x4b, 0xb1, 0x93, + 0xa5, 0x33, 0xb8, 0xa2, 0x0e, 0x0c, 0x29, 0x80, 0xc8, 0xe0, 0x50, 0x10, 0xe9, 0x44, 0x7a, 0xc5, + 0x2d, 0xd3, 0x09, 0xcb, 0xb4, 0xbf, 0x6d, 0xda, 0x4c, 0x00, 0x76, 0x76, 0x22, 0x44, 0x01, 0xa9, + 0xe7, 0x78, 0x51, 0xe6, 0x07, 0xb9, 0x14, 0x64, 0x3d, 0x1b, 0xa0, 0xb3, 0x9e, 0x1e, 0x08, 0xc2, + 0xea, 0x98, 0xbf, 0xad, 0x4b, 0x53, 0xff, 0x83, 0x85, 0xd5, 0xfa, 0xf7, 0xa1, 0x91, 0xc7, 0xc2, + 0x2a, 0xe0, 0x40, 0x65, 0x8c, 0x13, 0xdd, 0x61, 0x22, 0xda, 0x61, 0x37, 0x79, 0xd0, 0x0d, 0xe2, + 0x7e, 0x46, 0x72, 0x95, 0xf1, 0x98, 0x1f, 0x05, 0xf4, 0xf1, 0xd3, 0x80, 0x6e, 0xbb, 0x25, 0xa8, + 0xcf, 0x25, 0x9f, 0x5c, 0xb5, 0x8e, 0x35, 0x85, 0x05, 0xd5, 0x08, 0xb1, 0xdd, 0x42, 0xa0, 0x78, + 0x13, 0x1d, 0x4c, 0x44, 0x1e, 0x6b, 0xa2, 0x5a, 0xde, 0xa7, 0x89, 0x0c, 0xe7, 0x16, 0xbf, 0x56, + 0x6a, 0x7a, 0xa6, 0x6e, 0xa6, 0x4d, 0xc2, 0x82, 0x0f, 0x11, 0x8b, 0x5f, 0x12, 0x76, 0x39, 0x39, + 0xf4, 0x79, 0xd4, 0x3e, 0xf3, 0xdd, 0xb2, 0x72, 0x44, 0x9f, 0xf9, 0xa6, 0x58, 0xba, 0x92, 0xba, + 0x8f, 0x74, 0x58, 0x09, 0xfb, 0xc9, 0xe3, 0x7e, 0xb0, 0x5b, 0xf2, 0x04, 0x3e, 0x77, 0x33, 0xce, + 0x4a, 0xed, 0x75, 0x2b, 0x62, 0xc8, 0x61, 0xc4, 0x92, 0x27, 0x82, 0x83, 0x10, 0x16, 0x78, 0xde, + 0x15, 0xb9, 0xe4, 0xb9, 0xc4, 0x42, 0x58, 0x68, 0xcc, 0x80, 0xb1, 0x10, 0x46, 0x29, 0x80, 0x7e, + 0xab, 0xf6, 0x83, 0xb8, 0x3c, 0x66, 0x73, 0x34, 0x63, 0xd3, 0x7b, 0x3d, 0x5a, 0x1e, 0xeb, 0xb7, + 0x80, 0xf3, 0x5e, 0xf2, 0xf9, 0x5e, 0xc6, 0xac, 0x9c, 0xd9, 0xdd, 0x8d, 0xe9, 0xe0, 0x09, 0x6d, + 0x27, 0x24, 0x89, 0x97, 0x7c, 0x71, 0x0d, 0x10, 0x76, 0x0e, 0xe6, 0x6c, 0x66, 0x6b, 0x8a, 0xd4, + 0x40, 0xc9, 0x5b, 0x55, 0x7d, 0xd0, 0x0d, 0x02, 0x3f, 0xaf, 0xd3, 0x29, 0x17, 0x11, 0x3f, 0x4a, + 0xde, 0xc7, 0x0f, 0x04, 0x41, 0xf6, 0x56, 0xd7, 0x5b, 0xaf, 0xe8, 0x76, 0xf2, 0xa9, 0x59, 0xc7, + 0x0e, 0x89, 0xc7, 0x03, 0xb8, 0x58, 0xf6, 0x46, 0xf0, 0x60, 0x8c, 0x36, 0x1b, 0xb4, 0xb1, 0x31, + 0x6a, 0xf7, 0x5f, 0xfb, 0x8c, 0x51, 0x0c, 0x36, 0x3e, 0x7f, 0x66, 0xc6, 0xe8, 0x1e, 0x93, 0xac, + 0xce, 0xdb, 0x5f, 0xa7, 0xfc, 0xda, 0x2c, 0x84, 0x91, 0xfa, 0x36, 0xd4, 0x50, 0x7d, 0xb2, 0x0a, + 0x56, 0xc5, 0xdb, 0xbd, 0xf9, 0x88, 0x6f, 0xb3, 0x42, 0xe8, 0xf4, 0x0d, 0x96, 0x0a, 0xdb, 0xbd, + 0xf9, 0x88, 0x6f, 0xf3, 0x2d, 0x7c, 0xa7, 0x6f, 0xf0, 0x41, 0xfc, 0x76, 0x6f, 0xde, 0xf8, 0xfe, + 0xcb, 0x66, 0xe0, 0xfa, 0xce, 0xeb, 0x3c, 0x6c, 0x22, 0xd3, 0x25, 0xc7, 0xd2, 0xc9, 0xd0, 0x9e, + 0x45, 0x63, 0xe9, 0x24, 0xad, 0xe2, 0x5d, 0x08, 0x85, 0x95, 0xe2, 0x44, 0x54, 0xa9, 0x7a, 0x49, + 0xff, 0xac, 0x87, 0xd1, 0x06, 0x8e, 0x2d, 0x9a, 0x62, 0x4a, 0xee, 0x75, 0x63, 0x80, 0xba, 0x53, + 0xcc, 0x8f, 0x23, 0xf6, 0xda, 0x87, 0x99, 0xb7, 0x7a, 0xd2, 0xee, 0xc5, 0x5f, 0xc0, 0xf8, 0x6f, + 0x1c, 0x63, 0xad, 0x8a, 0xbe, 0x74, 0x7c, 0xd2, 0x5f, 0xc1, 0xb8, 0xff, 0xeb, 0x66, 0x5d, 0x01, + 0xfd, 0x9b, 0x41, 0xf0, 0xb4, 0x8f, 0x45, 0x30, 0x10, 0x9e, 0xdd, 0x48, 0xc7, 0x14, 0xe4, 0xef, + 0x9b, 0x05, 0x74, 0x83, 0xaa, 0x6f, 0x39, 0xd4, 0x37, 0xa0, 0x66, 0x4c, 0xc4, 0x9a, 0xd5, 0xc1, + 0x70, 0x64, 0x7c, 0x7e, 0x43, 0x2d, 0xef, 0x7a, 0xb0, 0x00, 0x36, 0xdf, 0x1c, 0x7a, 0xe5, 0x89, + 0x59, 0xf6, 0x68, 0x58, 0xa0, 0x2f, 0x6e, 0xaa, 0x46, 0x8d, 0x15, 0x0f, 0x56, 0xb7, 0x73, 0x3c, + 0xeb, 0x69, 0x38, 0xb8, 0xaf, 0xe3, 0xb3, 0x9b, 0x29, 0x99, 0xb2, 0xfc, 0xc7, 0x5a, 0x72, 0x3f, + 0x60, 0xdd, 0xfb, 0x04, 0xb0, 0xeb, 0xf1, 0xe3, 0x88, 0x7d, 0x4a, 0xc9, 0x16, 0xee, 0x77, 0x7f, + 0x39, 0x65, 0x77, 0x97, 0x56, 0xa0, 0xf2, 0x32, 0xcd, 0x24, 0x2f, 0xdb, 0x77, 0x69, 0x85, 0x76, + 0x35, 0x35, 0xa4, 0xef, 0xd2, 0x8a, 0xe0, 0xde, 0x5d, 0x5a, 0x88, 0x67, 0xf4, 0x2e, 0x2d, 0xd4, + 0x5a, 0xf4, 0x2e, 0xad, 0xb8, 0x06, 0x15, 0xde, 0x9b, 0x22, 0xe8, 0x7d, 0xeb, 0x5e, 0x16, 0xc3, + 0x6d, 0xec, 0xa7, 0x37, 0x51, 0x21, 0x26, 0x38, 0xcd, 0xa9, 0x73, 0x6e, 0x3d, 0x9e, 0x69, 0x70, + 0xd6, 0x6d, 0xbb, 0x37, 0x6f, 0x7c, 0xff, 0xd4, 0xac, 0x6e, 0x6c, 0x38, 0x17, 0xa5, 0xba, 0x47, + 0x6d, 0x33, 0x16, 0x9e, 0x6b, 0x0b, 0x7e, 0xcb, 0x3f, 0xee, 0x07, 0x13, 0xd5, 0xad, 0x09, 0xd3, + 0xe8, 0xc3, 0x2e, 0x43, 0xa0, 0xc9, 0xb7, 0x7b, 0xf3, 0xc4, 0x34, 0xa2, 0x7d, 0xeb, 0xd6, 0xee, + 0x61, 0x2c, 0x6c, 0xeb, 0x27, 0xfd, 0x15, 0x8c, 0xfb, 0xa5, 0x49, 0x1b, 0x7d, 0xf7, 0xaa, 0x9d, + 0xb7, 0xba, 0x4c, 0x8d, 0x82, 0x66, 0x1e, 0xf6, 0xc5, 0x63, 0x09, 0x84, 0x3f, 0x85, 0x76, 0x25, + 0x10, 0xe8, 0x34, 0xfa, 0xd9, 0xcd, 0x94, 0x4c, 0x59, 0xfe, 0x69, 0x2d, 0xb9, 0x4d, 0x96, 0xc5, + 0xf4, 0x83, 0x2f, 0xfa, 0x5a, 0x06, 0xfd, 0xe1, 0xcb, 0x1b, 0xeb, 0x99, 0x42, 0xfd, 0xeb, 0x5a, + 0x72, 0x27, 0x52, 0x28, 0xdd, 0x41, 0x6e, 0x60, 0x3d, 0xec, 0x28, 0x3f, 0xbc, 0xb9, 0x22, 0x35, + 0xdd, 0xfb, 0xf8, 0xa8, 0x7d, 0x29, 0x53, 0xc4, 0xf6, 0x88, 0xbe, 0x94, 0xa9, 0x5b, 0x0b, 0x6e, + 0xf2, 0xb0, 0xf3, 0x66, 0xd1, 0x85, 0x6e, 0xf2, 0xa8, 0x13, 0x6a, 0xd1, 0xcb, 0x25, 0x30, 0x0e, + 0x73, 0xf2, 0xe2, 0x6d, 0xc1, 0xf2, 0x29, 0xed, 0x44, 0xcb, 0xbb, 0x9d, 0x58, 0x0e, 0x6e, 0x8e, + 0xd5, 0xd2, 0x53, 0xd1, 0x2c, 0xa4, 0x1e, 0x52, 0xfa, 0x16, 0x89, 0x6e, 0x8e, 0xb5, 0x50, 0xc2, + 0x9b, 0xc9, 0x1a, 0x63, 0xde, 0x40, 0xb2, 0xf8, 0xa8, 0x0f, 0x0a, 0x52, 0x74, 0xeb, 0xcd, 0xee, + 0xb9, 0x3f, 0x8e, 0x59, 0x69, 0xed, 0xbb, 0x6f, 0xf5, 0xa4, 0x09, 0xb7, 0x23, 0x2e, 0xbf, 0xe2, + 0x6c, 0xca, 0xcb, 0xa8, 0x5b, 0x4b, 0xf5, 0x72, 0xeb, 0xd3, 0x98, 0xdb, 0x5d, 0x91, 0x2d, 0xe6, + 0xb9, 0x69, 0x4c, 0xd2, 0xad, 0x4f, 0x75, 0xbb, 0x05, 0x34, 0xdc, 0x16, 0x74, 0x6e, 0x55, 0x7a, + 0xf9, 0x28, 0x6e, 0x26, 0xc8, 0x2a, 0x37, 0x7b, 0xb1, 0x74, 0x3d, 0x4d, 0x37, 0xea, 0xa8, 0x27, + 0xe8, 0x49, 0x5b, 0x3d, 0x69, 0xb8, 0x3f, 0xe7, 0xb9, 0xb5, 0xfd, 0x69, 0xbb, 0xc3, 0x56, 0xab, + 0x4b, 0x3d, 0xe9, 0xaf, 0x00, 0x77, 0x43, 0x4d, 0xaf, 0x3a, 0x4c, 0x2b, 0xf9, 0x32, 0xcd, 0xb2, + 0xc1, 0x66, 0xa4, 0x9b, 0x34, 0x50, 0x74, 0x37, 0x14, 0x81, 0x89, 0x9e, 0xdc, 0xec, 0x1e, 0xe6, + 0x83, 0x2e, 0x3b, 0x8a, 0xea, 0xd5, 0x93, 0x7d, 0x1a, 0xec, 0x68, 0x79, 0x8f, 0xda, 0xd6, 0x76, + 0x18, 0x7f, 0x70, 0xad, 0x0a, 0x6f, 0xf7, 0xe6, 0xc1, 0xeb, 0x76, 0x45, 0xa9, 0x99, 0xe5, 0x1e, + 0x65, 0x22, 0x98, 0x49, 0xee, 0x77, 0x50, 0x60, 0x57, 0x50, 0x0f, 0xa3, 0x37, 0xe9, 0x74, 0xc6, + 0x25, 0xfa, 0xa6, 0xc8, 0x07, 0xa2, 0x6f, 0x8a, 0x00, 0x08, 0x9a, 0x4e, 0xff, 0x6e, 0xb7, 0x43, + 0x0f, 0xa6, 0x58, 0xd3, 0x19, 0x65, 0x8f, 0x8a, 0x35, 0x1d, 0x4a, 0x83, 0x68, 0x60, 0xdd, 0x9a, + 0xcf, 0xf1, 0x1f, 0xc5, 0xcc, 0x80, 0x6f, 0xf2, 0x37, 0x7b, 0xb1, 0x60, 0x46, 0x71, 0x0e, 0xd3, + 0x79, 0x2a, 0xb1, 0x19, 0xc5, 0xb3, 0x51, 0x23, 0xb1, 0x19, 0xa5, 0x8d, 0x52, 0xd5, 0xab, 0x73, + 0x84, 0x83, 0x69, 0xbc, 0x7a, 0x9a, 0xe9, 0x57, 0x3d, 0xcb, 0xb6, 0x5e, 0x6c, 0xe6, 0xb6, 0xcb, + 0xc8, 0x4b, 0xb3, 0x58, 0x46, 0xfa, 0xb6, 0xfa, 0x4c, 0x13, 0x82, 0xb1, 0xa8, 0x43, 0x29, 0xc0, + 0x0d, 0xfb, 0x9a, 0x6b, 0xde, 0xbd, 0x16, 0x05, 0x67, 0x25, 0xcb, 0x27, 0xe8, 0xe2, 0x54, 0x19, + 0x6c, 0x91, 0xb1, 0xc5, 0x29, 0xa9, 0x01, 0x5e, 0x9b, 0x87, 0x1f, 0x58, 0x22, 0x43, 0xc1, 0x7e, + 0xc9, 0x18, 0x7e, 0x5f, 0xf9, 0xb0, 0x07, 0x09, 0x5f, 0x9b, 0x37, 0x80, 0xdd, 0xf8, 0xd6, 0x4e, + 0x3f, 0x8d, 0x98, 0x0a, 0xd1, 0xd8, 0x42, 0x98, 0x56, 0x01, 0x9d, 0xda, 0x26, 0xb8, 0x5c, 0xfe, + 0x84, 0xaf, 0xb0, 0x4e, 0xed, 0xf2, 0x53, 0x85, 0xc4, 0x3a, 0x75, 0x1b, 0x05, 0x79, 0xa6, 0xbf, + 0x0e, 0x5a, 0x8f, 0xe8, 0xfb, 0x4b, 0x9f, 0x8d, 0x4e, 0x0e, 0x8c, 0x9c, 0xbd, 0x74, 0x19, 0xbc, + 0x27, 0x40, 0x0a, 0xba, 0x97, 0x2e, 0xf1, 0xd7, 0x04, 0x9b, 0xbd, 0x58, 0xf8, 0x4a, 0x9e, 0x49, + 0xfe, 0xb6, 0x79, 0x57, 0x8e, 0x14, 0x57, 0xc9, 0x5b, 0x2f, 0xcb, 0x1f, 0x74, 0x83, 0xee, 0x00, + 0xec, 0x49, 0x29, 0x26, 0xbc, 0xaa, 0xcc, 0x4d, 0x95, 0xe1, 0x09, 0x23, 0x23, 0x1b, 0x82, 0x7b, + 0x2a, 0xef, 0xc5, 0x21, 0xef, 0x7a, 0x39, 0x2d, 0x72, 0xb7, 0xde, 0xac, 0xa3, 0x9a, 0xed, 0x0b, + 0x6f, 0x36, 0x3a, 0x39, 0x37, 0xbc, 0x8c, 0xd4, 0xbf, 0xe6, 0xe6, 0x01, 0xaa, 0x8e, 0xdd, 0x70, + 0xf3, 0xb0, 0x07, 0x69, 0x5c, 0x7d, 0x95, 0xbc, 0x7b, 0x28, 0x66, 0x23, 0x9e, 0x4f, 0x07, 0x3f, + 0x08, 0x8f, 0xd0, 0x8a, 0xd9, 0xb0, 0xfe, 0xd9, 0x1a, 0xbd, 0x45, 0x89, 0xdd, 0x21, 0xc0, 0x3d, + 0x7e, 0xbe, 0x98, 0x8d, 0x24, 0x93, 0xe0, 0x10, 0xa0, 0xfa, 0x7d, 0x58, 0x0b, 0x88, 0x43, 0x80, + 0x01, 0x00, 0xec, 0x8d, 0x4b, 0xce, 0x51, 0x7b, 0xb5, 0x20, 0x6a, 0xcf, 0x00, 0x2e, 0x8b, 0xb0, + 0xf6, 0xea, 0x44, 0x1d, 0x1e, 0xda, 0x73, 0x3a, 0x4a, 0x4a, 0x64, 0x11, 0x6d, 0xca, 0x75, 0x6e, + 0x5d, 0x7d, 0x75, 0xeb, 0xc8, 0x62, 0x3e, 0x67, 0xe5, 0x0a, 0x74, 0x6e, 0x53, 0x4b, 0x0f, 0x20, + 0x3a, 0x37, 0x0a, 0xba, 0x51, 0xdb, 0x3c, 0xe6, 0xc9, 0xd5, 0xbe, 0x28, 0xc5, 0x42, 0xa6, 0x39, + 0x87, 0x37, 0x4f, 0xd8, 0x07, 0xea, 0x33, 0xc4, 0xa8, 0xa5, 0x58, 0x97, 0xe5, 0x2a, 0x42, 0x9f, + 0x27, 0x54, 0xf7, 0x57, 0x57, 0x52, 0x94, 0xf0, 0x7d, 0xa2, 0xb6, 0x02, 0x21, 0x22, 0xcb, 0x25, + 0x61, 0xd0, 0xf6, 0x27, 0x69, 0x3e, 0x43, 0xdb, 0xfe, 0xc4, 0xbf, 0xfd, 0xf5, 0x0e, 0x0d, 0xb8, + 0x01, 0xa5, 0x1f, 0x9a, 0x1e, 0x00, 0xe6, 0x5b, 0x4e, 0xf4, 0xa1, 0xfb, 0x04, 0x31, 0xa0, 0x70, + 0x12, 0xb8, 0x7a, 0x55, 0xf0, 0x9c, 0x4f, 0x9b, 0x53, 0x73, 0x98, 0xab, 0x80, 0x88, 0xba, 0x82, + 0xa4, 0x8b, 0x45, 0x4a, 0x7e, 0xba, 0xc8, 0x4f, 0x4a, 0x71, 0x91, 0x66, 0xbc, 0x04, 0xb1, 0x48, + 0xab, 0x7b, 0x72, 0x22, 0x16, 0x61, 0x9c, 0x3b, 0x7e, 0xa1, 0xa4, 0xc1, 0x25, 0xec, 0xe3, 0x92, + 0x4d, 0xe0, 0xf1, 0x0b, 0x6d, 0xa3, 0x8d, 0x11, 0x3b, 0x83, 0x11, 0xdc, 0x4b, 0x74, 0xb4, 0xeb, + 0x7c, 0xa5, 0xfa, 0x87, 0xf9, 0x96, 0x50, 0xdd, 0x89, 0x5a, 0x81, 0x44, 0xc7, 0x98, 0xc3, 0x48, + 0x22, 0xd1, 0x89, 0x6b, 0xb8, 0xa9, 0x44, 0x71, 0xc7, 0xe6, 0x58, 0x11, 0x98, 0x4a, 0xb4, 0x8d, + 0x46, 0x48, 0x4c, 0x25, 0x2d, 0x08, 0x04, 0xa4, 0x66, 0x18, 0xcc, 0xd0, 0x80, 0x64, 0xa5, 0xd1, + 0x80, 0xe4, 0x53, 0x2e, 0x50, 0x1c, 0xe4, 0xa9, 0x4c, 0x59, 0x36, 0xe2, 0xf2, 0x84, 0x95, 0x6c, + 0xce, 0x25, 0x2f, 0x61, 0xa0, 0x30, 0xc8, 0x30, 0x60, 0x88, 0x40, 0x41, 0xb1, 0xc6, 0xe1, 0xef, + 0x25, 0xef, 0xd7, 0xf3, 0x3e, 0xcf, 0xcd, 0x9f, 0x8f, 0x79, 0xa1, 0xfe, 0xee, 0xd4, 0xe0, 0x03, + 0x6b, 0x63, 0x24, 0x4b, 0xce, 0xe6, 0x8d, 0xed, 0xf7, 0xec, 0xef, 0x0a, 0x7c, 0xb2, 0x56, 0xf7, + 0xe7, 0x63, 0x21, 0xd3, 0x8b, 0x7a, 0x99, 0x6d, 0xbe, 0x20, 0x02, 0xfd, 0xd9, 0x17, 0x0f, 0x23, + 0x77, 0x51, 0x60, 0x9c, 0x8b, 0xd3, 0xbe, 0xf4, 0x94, 0x17, 0x19, 0x8c, 0xd3, 0x81, 0xb6, 0x02, + 0x88, 0x38, 0x8d, 0x82, 0x6e, 0x70, 0xfa, 0xe2, 0x31, 0x8f, 0x57, 0x66, 0xcc, 0xfb, 0x55, 0x66, + 0x1c, 0x7c, 0x94, 0x91, 0x25, 0xef, 0x1f, 0xf1, 0xf9, 0x39, 0x2f, 0xab, 0xcb, 0xb4, 0xa0, 0xee, + 0x6d, 0x75, 0x44, 0xe7, 0xbd, 0xad, 0x04, 0xea, 0x66, 0x02, 0x07, 0x1c, 0x54, 0xc7, 0x6c, 0xce, + 0xd5, 0xcd, 0x1a, 0x60, 0x26, 0xf0, 0x8c, 0x78, 0x10, 0x31, 0x13, 0x90, 0xb0, 0xf7, 0x7d, 0x97, + 0x63, 0x4e, 0xf9, 0xac, 0xee, 0x61, 0xe5, 0x09, 0x5b, 0xcd, 0x79, 0x2e, 0x8d, 0x49, 0xb0, 0x27, + 0xef, 0x99, 0xc4, 0x79, 0x62, 0x4f, 0xbe, 0x8f, 0x9e, 0x17, 0x9a, 0x82, 0x07, 0x7f, 0x22, 0x4a, + 0xa9, 0xff, 0x38, 0xd4, 0x59, 0x99, 0x81, 0xd0, 0x14, 0x3e, 0xd4, 0x80, 0x24, 0x42, 0x53, 0x5c, + 0xc3, 0xfb, 0x2b, 0x04, 0x41, 0x19, 0x5e, 0xf3, 0xd2, 0xf6, 0x93, 0x17, 0x73, 0x96, 0x66, 0xa6, + 0x37, 0xfc, 0x28, 0x62, 0x9b, 0xd0, 0x21, 0xfe, 0x0a, 0x41, 0x5f, 0x5d, 0xef, 0xef, 0x36, 0xc4, + 0x4b, 0x08, 0x5e, 0x11, 0x74, 0xd8, 0x27, 0x5e, 0x11, 0x74, 0x6b, 0xb9, 0x95, 0xbb, 0x63, 0x15, + 0xb7, 0x52, 0xc4, 0xae, 0x98, 0xc2, 0xfd, 0x42, 0xcf, 0x26, 0x00, 0x89, 0x95, 0x7b, 0x54, 0xc1, + 0xa5, 0x06, 0x0e, 0x7b, 0x99, 0xe6, 0x2c, 0x4b, 0x7f, 0x06, 0xd3, 0x7a, 0xcf, 0x4e, 0x43, 0x10, + 0xa9, 0x01, 0x4e, 0x62, 0xae, 0xf6, 0xb9, 0x1c, 0xa7, 0x75, 0xe8, 0x7f, 0x10, 0x79, 0x6e, 0x8a, + 0xe8, 0x76, 0xe5, 0x91, 0xde, 0x1d, 0xad, 0xf0, 0xb1, 0xee, 0x14, 0xc5, 0xa8, 0x9e, 0x55, 0x4f, + 0xf9, 0x84, 0xa7, 0x85, 0x1c, 0x7c, 0x1e, 0x7f, 0x56, 0x00, 0x27, 0x0e, 0x5a, 0xf4, 0x50, 0xf3, + 0x5e, 0xdf, 0xd7, 0xb1, 0x64, 0xa4, 0xff, 0x6a, 0xe2, 0x59, 0xc5, 0x4b, 0x93, 0x68, 0xec, 0x73, + 0x09, 0x46, 0xa7, 0xc7, 0x0d, 0x3d, 0xb0, 0xae, 0x28, 0x31, 0x3a, 0xe3, 0x1a, 0x6e, 0xb3, 0xcf, + 0xe3, 0xcc, 0x9d, 0xdb, 0xea, 0xbc, 0xe1, 0x63, 0xd2, 0x98, 0x47, 0x11, 0x9b, 0x7d, 0x34, 0xed, + 0xb2, 0xb5, 0xb6, 0xdb, 0x9d, 0x7c, 0x75, 0x00, 0x8f, 0x4c, 0x20, 0x96, 0x14, 0x46, 0x64, 0x6b, + 0x11, 0xdc, 0xdb, 0x0c, 0x2f, 0x05, 0x9b, 0x4e, 0x58, 0x25, 0x4f, 0xd8, 0x2a, 0x13, 0x6c, 0xaa, + 0xe6, 0x75, 0xb8, 0x19, 0xde, 0x30, 0x43, 0x1f, 0xa2, 0x36, 0xc3, 0x29, 0xd8, 0xcf, 0xce, 0xd4, + 0x1f, 0x83, 0x34, 0x67, 0x39, 0x61, 0x76, 0xa6, 0xca, 0x0b, 0xcf, 0x71, 0xde, 0x8b, 0x43, 0xee, + 0x1b, 0x34, 0x2d, 0x52, 0x69, 0xc8, 0x1d, 0x4c, 0x27, 0x48, 0x40, 0x3e, 0x8e, 0x10, 0xee, 0x5e, + 0x0a, 0xfd, 0x7b, 0xf3, 0xf7, 0x7f, 0xa4, 0xb9, 0xc9, 0xfa, 0x31, 0xa6, 0xeb, 0x43, 0x43, 0xff, + 0x82, 0xbb, 0xad, 0x9e, 0xb4, 0x4b, 0x33, 0x77, 0x2f, 0x99, 0xdc, 0x99, 0x4e, 0x8f, 0x78, 0x85, + 0x7c, 0x50, 0x5e, 0x0b, 0x87, 0x4e, 0x4a, 0xa4, 0x99, 0x6d, 0xca, 0x75, 0xf4, 0x5a, 0xf6, 0x62, + 0x9a, 0x4a, 0x23, 0x6b, 0x4e, 0x48, 0x3f, 0x6e, 0x1b, 0x68, 0x53, 0x44, 0xad, 0x68, 0xda, 0xc5, + 0xf2, 0x9a, 0x19, 0x8b, 0xd9, 0x2c, 0xe3, 0x06, 0x3a, 0xe5, 0x4c, 0x5f, 0xe4, 0xb7, 0xdd, 0xb6, + 0x85, 0x82, 0x44, 0x2c, 0x8f, 0x2a, 0xb8, 0x34, 0xb2, 0xc6, 0xf4, 0x2b, 0xa9, 0xe6, 0xc1, 0x6e, + 0xb4, 0xcd, 0x04, 0x00, 0x91, 0x46, 0xa2, 0xa0, 0xfb, 0xee, 0xad, 0x16, 0xef, 0xf3, 0xe6, 0x49, + 0xc0, 0x2b, 0x88, 0x94, 0xb2, 0x27, 0x26, 0xbe, 0x7b, 0x43, 0x30, 0xb7, 0x4e, 0x00, 0x1e, 0x9e, + 0xaf, 0x0e, 0xa6, 0x70, 0x9d, 0x00, 0xf5, 0x15, 0x43, 0xac, 0x13, 0x28, 0x36, 0x6c, 0x3a, 0xbb, + 0xef, 0x75, 0xc8, 0x2a, 0x57, 0x39, 0xa4, 0xe9, 0x50, 0x30, 0xd6, 0x74, 0x94, 0x42, 0xf8, 0x48, + 0xfd, 0xad, 0x35, 0xe4, 0x91, 0x62, 0xfb, 0x6a, 0xeb, 0x5d, 0x98, 0x8b, 0x4b, 0x76, 0x3d, 0xa9, + 0x8e, 0x2c, 0xe1, 0x37, 0xf8, 0x6b, 0x21, 0x11, 0x97, 0x5a, 0x90, 0xb6, 0xfd, 0xfc, 0xe3, 0xff, + 0xfa, 0xe6, 0xd6, 0xda, 0x2f, 0xbe, 0xb9, 0xb5, 0xf6, 0x3f, 0xdf, 0xdc, 0x5a, 0xfb, 0xf9, 0xb7, + 0xb7, 0xde, 0xf9, 0xc5, 0xb7, 0xb7, 0xde, 0xf9, 0xef, 0x6f, 0x6f, 0xbd, 0xf3, 0xf5, 0xbb, 0xe6, + 0x8f, 0x04, 0x9f, 0xff, 0x3f, 0xf5, 0xa7, 0x7e, 0x9f, 0xfd, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xf7, 0x8b, 0x08, 0x78, 0x48, 0x78, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -404,6 +406,8 @@ type ClientCommandsClient interface { // Account // *** AccountRecover(ctx context.Context, in *pb.RpcAccountRecoverRequest, opts ...grpc.CallOption) (*pb.RpcAccountRecoverResponse, error) + AccountMigrate(ctx context.Context, in *pb.RpcAccountMigrateRequest, opts ...grpc.CallOption) (*pb.RpcAccountMigrateResponse, error) + AccountMigrateCancel(ctx context.Context, in *pb.RpcAccountMigrateCancelRequest, opts ...grpc.CallOption) (*pb.RpcAccountMigrateCancelResponse, error) AccountCreate(ctx context.Context, in *pb.RpcAccountCreateRequest, opts ...grpc.CallOption) (*pb.RpcAccountCreateResponse, error) AccountDelete(ctx context.Context, in *pb.RpcAccountDeleteRequest, opts ...grpc.CallOption) (*pb.RpcAccountDeleteResponse, error) AccountRevertDeletion(ctx context.Context, in *pb.RpcAccountRevertDeletionRequest, opts ...grpc.CallOption) (*pb.RpcAccountRevertDeletionResponse, error) @@ -914,6 +918,24 @@ func (c *clientCommandsClient) AccountRecover(ctx context.Context, in *pb.RpcAcc return out, nil } +func (c *clientCommandsClient) AccountMigrate(ctx context.Context, in *pb.RpcAccountMigrateRequest, opts ...grpc.CallOption) (*pb.RpcAccountMigrateResponse, error) { + out := new(pb.RpcAccountMigrateResponse) + err := c.cc.Invoke(ctx, "/anytype.ClientCommands/AccountMigrate", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *clientCommandsClient) AccountMigrateCancel(ctx context.Context, in *pb.RpcAccountMigrateCancelRequest, opts ...grpc.CallOption) (*pb.RpcAccountMigrateCancelResponse, error) { + out := new(pb.RpcAccountMigrateCancelResponse) + err := c.cc.Invoke(ctx, "/anytype.ClientCommands/AccountMigrateCancel", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *clientCommandsClient) AccountCreate(ctx context.Context, in *pb.RpcAccountCreateRequest, opts ...grpc.CallOption) (*pb.RpcAccountCreateResponse, error) { out := new(pb.RpcAccountCreateResponse) err := c.cc.Invoke(ctx, "/anytype.ClientCommands/AccountCreate", in, out, opts...) @@ -3252,6 +3274,8 @@ type ClientCommandsServer interface { // Account // *** AccountRecover(context.Context, *pb.RpcAccountRecoverRequest) *pb.RpcAccountRecoverResponse + AccountMigrate(context.Context, *pb.RpcAccountMigrateRequest) *pb.RpcAccountMigrateResponse + AccountMigrateCancel(context.Context, *pb.RpcAccountMigrateCancelRequest) *pb.RpcAccountMigrateCancelResponse AccountCreate(context.Context, *pb.RpcAccountCreateRequest) *pb.RpcAccountCreateResponse AccountDelete(context.Context, *pb.RpcAccountDeleteRequest) *pb.RpcAccountDeleteResponse AccountRevertDeletion(context.Context, *pb.RpcAccountRevertDeletionRequest) *pb.RpcAccountRevertDeletionResponse @@ -3632,6 +3656,12 @@ func (*UnimplementedClientCommandsServer) WorkspaceExport(ctx context.Context, r func (*UnimplementedClientCommandsServer) AccountRecover(ctx context.Context, req *pb.RpcAccountRecoverRequest) *pb.RpcAccountRecoverResponse { return nil } +func (*UnimplementedClientCommandsServer) AccountMigrate(ctx context.Context, req *pb.RpcAccountMigrateRequest) *pb.RpcAccountMigrateResponse { + return nil +} +func (*UnimplementedClientCommandsServer) AccountMigrateCancel(ctx context.Context, req *pb.RpcAccountMigrateCancelRequest) *pb.RpcAccountMigrateCancelResponse { + return nil +} func (*UnimplementedClientCommandsServer) AccountCreate(ctx context.Context, req *pb.RpcAccountCreateRequest) *pb.RpcAccountCreateResponse { return nil } @@ -4777,6 +4807,42 @@ func _ClientCommands_AccountRecover_Handler(srv interface{}, ctx context.Context return interceptor(ctx, in, info, handler) } +func _ClientCommands_AccountMigrate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(pb.RpcAccountMigrateRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ClientCommandsServer).AccountMigrate(ctx, in), nil + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/anytype.ClientCommands/AccountMigrate", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ClientCommandsServer).AccountMigrate(ctx, req.(*pb.RpcAccountMigrateRequest)), nil + } + return interceptor(ctx, in, info, handler) +} + +func _ClientCommands_AccountMigrateCancel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(pb.RpcAccountMigrateCancelRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ClientCommandsServer).AccountMigrateCancel(ctx, in), nil + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/anytype.ClientCommands/AccountMigrateCancel", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ClientCommandsServer).AccountMigrateCancel(ctx, req.(*pb.RpcAccountMigrateCancelRequest)), nil + } + return interceptor(ctx, in, info, handler) +} + func _ClientCommands_AccountCreate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(pb.RpcAccountCreateRequest) if err := dec(in); err != nil { @@ -9441,6 +9507,14 @@ var _ClientCommands_serviceDesc = grpc.ServiceDesc{ MethodName: "AccountRecover", Handler: _ClientCommands_AccountRecover_Handler, }, + { + MethodName: "AccountMigrate", + Handler: _ClientCommands_AccountMigrate_Handler, + }, + { + MethodName: "AccountMigrateCancel", + Handler: _ClientCommands_AccountMigrateCancel_Handler, + }, { MethodName: "AccountCreate", Handler: _ClientCommands_AccountCreate_Handler, From 0ac863cea32aa086c29724776e81e0b6f14d38de Mon Sep 17 00:00:00 2001 From: Mikhail Iudin Date: Wed, 22 Jan 2025 14:18:23 +0100 Subject: [PATCH 208/279] GO-4146 Fix merge main --- core/publish/service.go | 8 ++++---- go.sum | 3 +-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/core/publish/service.go b/core/publish/service.go index dc1c9f702..ddd2e81b2 100644 --- a/core/publish/service.go +++ b/core/publish/service.go @@ -178,7 +178,7 @@ func (s *service) publishToPublishServer(ctx context.Context, spaceId, pageId, u return err } - version, err := s.evaluateDocumentVersion(spc, pageId, joinSpace) + version, err := s.evaluateDocumentVersion(ctx, spc, pageId, joinSpace) if err != nil { return err } @@ -357,12 +357,12 @@ func (s *service) extractInviteLink(ctx context.Context, spaceId string, joinSpa return inviteLink, nil } -func (s *service) evaluateDocumentVersion(spc clientspace.Space, pageId string, joinSpace bool) (string, error) { - treeStorage, err := spc.Storage().TreeStorage(pageId) +func (s *service) evaluateDocumentVersion(ctx context.Context, spc clientspace.Space, pageId string, joinSpace bool) (string, error) { + treeStorage, err := spc.Storage().TreeStorage(ctx, pageId) if err != nil { return "", err } - heads, err := treeStorage.Heads() + heads, err := treeStorage.Heads(ctx) if err != nil { return "", err } diff --git a/go.sum b/go.sum index f04bbddc0..c47859eff 100644 --- a/go.sum +++ b/go.sum @@ -78,8 +78,7 @@ github.com/andybalholm/cascadia v1.3.3 h1:AG2YHrzJIm4BZ19iwJ/DAua6Btl3IwJX+VI4kk github.com/andybalholm/cascadia v1.3.3/go.mod h1:xNd9bqTn98Ln4DwST8/nG+H0yuB8Hmgu1YHNnWw0GeA= github.com/anyproto/any-store v0.1.4 h1:rIxMA2XugPtdHl2S/XWnNFAMxdBysFMT9ORoJWdWQwM= github.com/anyproto/any-store v0.1.4/go.mod h1:nbyRoJYOlvSWU1xDOrmgPP96UeoTf4eYZ9k+qqLK9k8= -github.com/anyproto/any-sync v0.5.25 h1:v59eQ+C7YOKC18G1PVql17fuc42Mvgb7c7Ju855tc0Q= -github.com/anyproto/any-sync v0.5.25/go.mod h1:NKQZqnU7NzOOjDQc/rKmiRmRDCrARdlEnVLYwWqTcfM= +github.com/anyproto/any-sync v0.6.0-alpha.5.0.20250122101259-cc0878975c43 h1:EB20eBqUFzAXG1c9n9D8Y+8k7QkKbxjKVarACM0nLRM= github.com/anyproto/any-sync v0.6.0-alpha.5.0.20250122101259-cc0878975c43/go.mod h1:Y8IxYfNrHzIKStyErWKeRIPehvqP2vT0B2T+FAhu5Zc= github.com/anyproto/anytype-publish-server/publishclient v0.0.0-20241223184559-a5cacfe0950a h1:kSNyLHsZ40JxlRAglr85YXH2ik2LH3AH5Hd3JL42KGo= github.com/anyproto/anytype-publish-server/publishclient v0.0.0-20241223184559-a5cacfe0950a/go.mod h1:4fkueCZcGniSMXkrwESO8zzERrh/L7WHimRNWecfGM0= From bbee43dae82fa021a5f25c870bda32da9f869106 Mon Sep 17 00:00:00 2001 From: AnastasiaShemyakinskaya Date: Wed, 22 Jan 2025 15:29:46 +0100 Subject: [PATCH 209/279] GO-4889: add dependency details Signed-off-by: AnastasiaShemyakinskaya --- core/block/export/export.go | 66 +- core/converter/pbc/pbc.go | 28 +- core/converter/pbc/pbc_test.go | 2 +- core/publish/service.go | 17 +- docs/proto.md | 19 + pb/commands.pb.go | 2495 ++++++++++++++++---------------- pb/protos/commands.proto | 2 + pb/protos/snapshot.proto | 6 + pb/snapshot.pb.go | 346 ++++- 9 files changed, 1692 insertions(+), 1289 deletions(-) diff --git a/core/block/export/export.go b/core/block/export/export.go index 9a0302621..b99c06a13 100644 --- a/core/block/export/export.go +++ b/core/block/export/export.go @@ -135,33 +135,35 @@ func (e *export) finishWithNotification(spaceId string, exportFormat model.Expor } type exportContext struct { - spaceId string - docs map[string]*domain.Details - includeArchive bool - includeNested bool - includeFiles bool - format model.ExportFormat - isJson bool - reqIds []string - zip bool - path string + spaceId string + docs map[string]*domain.Details + includeArchive bool + includeNested bool + includeFiles bool + format model.ExportFormat + isJson bool + reqIds []string + zip bool + path string + includeDependentDetails bool *export } func newExportContext(e *export, req pb.RpcObjectListExportRequest) *exportContext { return &exportContext{ - path: req.Path, - spaceId: req.SpaceId, - docs: map[string]*domain.Details{}, - includeArchive: req.IncludeArchived, - includeNested: req.IncludeNested, - includeFiles: req.IncludeFiles, - format: req.Format, - isJson: req.IsJson, - reqIds: req.ObjectIds, - zip: req.Zip, - export: e, + path: req.Path, + spaceId: req.SpaceId, + docs: map[string]*domain.Details{}, + includeArchive: req.IncludeArchived, + includeNested: req.IncludeNested, + includeFiles: req.IncludeFiles, + format: req.Format, + isJson: req.IsJson, + reqIds: req.ObjectIds, + zip: req.Zip, + includeDependentDetails: req.IncludeDependentDetails, + export: e, } } @@ -969,12 +971,16 @@ func (e *exportContext) writeDoc(ctx context.Context, wr writer, docId string) ( } } + dependentDetails, err := e.getDependentDetails(b, st, err) + if err != nil { + return err + } var conv converter.Converter switch e.format { case model.Export_Markdown: conv = md.NewMDConverter(st, wr.Namer()) case model.Export_Protobuf: - conv = pbc.NewConverter(st, e.isJson) + conv = pbc.NewConverter(st, e.isJson, dependentDetails) case model.Export_JSON: conv = pbjson.NewConverter(st) } @@ -996,6 +1002,22 @@ func (e *exportContext) writeDoc(ctx context.Context, wr writer, docId string) ( }) } +func (e *exportContext) getDependentDetails(b sb.SmartBlock, st *state.State, err error) ([]database.Record, error) { + var dependentDetails []database.Record + if e.includeDependentDetails { + dependentObjectIDs := objectlink.DependentObjectIDs(st, b.Space(), objectlink.Flags{ + Blocks: true, + Details: true, + Types: true, + }) + dependentDetails, err = e.objectStore.SpaceIndex(b.SpaceID()).QueryByIds(dependentObjectIDs) + if err != nil { + return nil, err + } + } + return dependentDetails, nil +} + func (e *exportContext) saveFile(ctx context.Context, wr writer, fileObject sb.SmartBlock, exportAllSpaces bool) (fileName string, err error) { fullId := domain.FullFileId{ SpaceId: fileObject.Space().Id(), diff --git a/core/converter/pbc/pbc.go b/core/converter/pbc/pbc.go index 112d4fa92..020febbdc 100644 --- a/core/converter/pbc/pbc.go +++ b/core/converter/pbc/pbc.go @@ -7,22 +7,26 @@ import ( "github.com/anyproto/anytype-heart/core/converter" "github.com/anyproto/anytype-heart/core/domain" "github.com/anyproto/anytype-heart/pb" + "github.com/anyproto/anytype-heart/pkg/lib/bundle" + "github.com/anyproto/anytype-heart/pkg/lib/database" "github.com/anyproto/anytype-heart/pkg/lib/logging" "github.com/anyproto/anytype-heart/pkg/lib/pb/model" ) var log = logging.Logger("pb-converter") -func NewConverter(s state.Doc, isJSON bool) converter.Converter { +func NewConverter(s state.Doc, isJSON bool, dependentDetails []database.Record) converter.Converter { return &pbc{ - s: s, - isJSON: isJSON, + s: s, + isJSON: isJSON, + dependentDetails: dependentDetails, } } type pbc struct { - s state.Doc - isJSON bool + s state.Doc + isJSON bool + dependentDetails []database.Record } func (p *pbc) Convert(sbType model.SmartBlockType) []byte { @@ -38,12 +42,20 @@ func (p *pbc) Convert(sbType model.SmartBlockType) []byte { FileInfo: st.GetFileInfo().ToModel(), }, } + dependentDetails := make([]*pb.DependantDetail, 0, len(p.dependentDetails)) + for _, detail := range p.dependentDetails { + dependentDetails = append(dependentDetails, &pb.DependantDetail{ + Id: detail.Details.GetString(bundle.RelationKeyId), + Details: detail.Details.ToProto(), + }) + } mo := &pb.SnapshotWithType{ - SbType: sbType, - Snapshot: snapshot, + SbType: sbType, + Snapshot: snapshot, + DependantDetails: dependentDetails, } if p.isJSON { - m := jsonpb.Marshaler{Indent: " ", EmitDefaults: true} + m := jsonpb.Marshaler{Indent: " "} result, err := m.MarshalToString(mo) if err != nil { log.Errorf("failed to convert object to json: %s", err) diff --git a/core/converter/pbc/pbc_test.go b/core/converter/pbc/pbc_test.go index 66d74d210..420043f7d 100644 --- a/core/converter/pbc/pbc_test.go +++ b/core/converter/pbc/pbc_test.go @@ -13,7 +13,7 @@ import ( func TestPbc_Convert(t *testing.T) { s := state.NewDoc("root", nil).(*state.State) template.InitTemplate(s, template.WithTitle) - c := NewConverter(s, false) + c := NewConverter(s, false, nil) result := c.Convert(model.SmartBlockType_Page) assert.NotEmpty(t, result) } diff --git a/core/publish/service.go b/core/publish/service.go index dc1c9f702..e95bfcb96 100644 --- a/core/publish/service.go +++ b/core/publish/service.go @@ -122,14 +122,15 @@ func uniqName() string { func (s *service) exportToDir(ctx context.Context, spaceId, pageId string) (dirEntries []fs.DirEntry, exportPath string, err error) { tempDir := os.TempDir() exportPath, _, err = s.exportService.Export(ctx, pb.RpcObjectListExportRequest{ - SpaceId: spaceId, - Format: model.Export_Protobuf, - IncludeFiles: true, - IsJson: false, - Zip: false, - Path: tempDir, - ObjectIds: []string{pageId}, - NoProgress: true, + SpaceId: spaceId, + Format: model.Export_Protobuf, + IncludeFiles: true, + IsJson: false, + Zip: false, + Path: tempDir, + ObjectIds: []string{pageId}, + NoProgress: true, + IncludeDependentDetails: true, }) if err != nil { return diff --git a/docs/proto.md b/docs/proto.md index bfba4db14..2fae09a17 100644 --- a/docs/proto.md +++ b/docs/proto.md @@ -1795,6 +1795,7 @@ - [Model.Process.State](#anytype-Model-Process-State) - [pb/protos/snapshot.proto](#pb_protos_snapshot-proto) + - [DependantDetail](#anytype-DependantDetail) - [Profile](#anytype-Profile) - [SnapshotWithType](#anytype-SnapshotWithType) @@ -15485,6 +15486,7 @@ Deletes the object, keys from the local store and unsubscribe from remote change | isJson | [bool](#bool) | | for protobuf export | | includeArchived | [bool](#bool) | | for migration | | noProgress | [bool](#bool) | | for integrations like raycast and web publishing | +| includeDependentDetails | [bool](#bool) | | for web publising, just add details of dependent objects in result snapshot | @@ -28257,6 +28259,22 @@ Precondition: user A and user B opened the same block + + +### DependantDetail + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [string](#string) | | | +| details | [google.protobuf.Struct](#google-protobuf-Struct) | | | + + + + + + ### Profile @@ -28287,6 +28305,7 @@ Precondition: user A and user B opened the same block | ----- | ---- | ----- | ----------- | | sbType | [model.SmartBlockType](#anytype-model-SmartBlockType) | | | | snapshot | [Change.Snapshot](#anytype-Change-Snapshot) | | | +| dependantDetails | [DependantDetail](#anytype-DependantDetail) | repeated | | diff --git a/pb/commands.pb.go b/pb/commands.pb.go index 556b69779..19779b4e2 100644 --- a/pb/commands.pb.go +++ b/pb/commands.pb.go @@ -29575,6 +29575,8 @@ type RpcObjectListExportRequest struct { IncludeArchived bool `protobuf:"varint,9,opt,name=includeArchived,proto3" json:"includeArchived,omitempty"` // for integrations like raycast and web publishing NoProgress bool `protobuf:"varint,11,opt,name=noProgress,proto3" json:"noProgress,omitempty"` + // for web publising, just add details of dependent objects in result snapshot + IncludeDependentDetails bool `protobuf:"varint,12,opt,name=includeDependentDetails,proto3" json:"includeDependentDetails,omitempty"` } func (m *RpcObjectListExportRequest) Reset() { *m = RpcObjectListExportRequest{} } @@ -29680,6 +29682,13 @@ func (m *RpcObjectListExportRequest) GetNoProgress() bool { return false } +func (m *RpcObjectListExportRequest) GetIncludeDependentDetails() bool { + if m != nil { + return m.IncludeDependentDetails + } + return false +} + type RpcObjectListExportResponse struct { Error *RpcObjectListExportResponseError `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` @@ -72093,1232 +72102,1233 @@ func init() { func init() { proto.RegisterFile("pb/protos/commands.proto", fileDescriptor_8261c968b2e6f45c) } var fileDescriptor_8261c968b2e6f45c = []byte{ - // 19597 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xfd, 0x7d, 0x9c, 0x23, 0x47, - 0x75, 0x2f, 0x8c, 0xaf, 0xba, 0x25, 0xcd, 0xcc, 0x99, 0x97, 0xd5, 0xb6, 0x77, 0xd7, 0xeb, 0xb2, - 0x59, 0x3b, 0x6b, 0x63, 0x1c, 0x63, 0xc6, 0xc6, 0x10, 0x82, 0x8d, 0x8d, 0xad, 0xd1, 0x68, 0x66, - 0x64, 0xcf, 0x48, 0x93, 0x96, 0x66, 0x17, 0x27, 0x37, 0x3f, 0xdd, 0x5e, 0xa9, 0x66, 0xa6, 0xbd, - 0x9a, 0x6e, 0xa5, 0xbb, 0x67, 0xd6, 0xcb, 0xef, 0x73, 0x9f, 0x1b, 0x42, 0x1c, 0x48, 0x88, 0x2f, - 0x49, 0x08, 0x49, 0x78, 0x07, 0x83, 0xe1, 0x42, 0x02, 0x84, 0xf7, 0x0b, 0x49, 0x80, 0xf0, 0x1e, - 0x42, 0x08, 0x81, 0x10, 0x08, 0x09, 0x4f, 0x20, 0x10, 0x42, 0xee, 0x27, 0x5c, 0x9e, 0xe4, 0xb9, - 0x81, 0x90, 0xc0, 0xc3, 0xf3, 0xe9, 0xaa, 0xea, 0x97, 0xd2, 0xa8, 0x5b, 0xd5, 0x1a, 0xb5, 0xc6, - 0x84, 0xe7, 0xbf, 0xee, 0xea, 0xea, 0x53, 0xa7, 0xce, 0xf7, 0x54, 0xd5, 0xa9, 0xaa, 0x53, 0xa7, - 0xe0, 0x54, 0xf7, 0xfc, 0xcd, 0x5d, 0xcb, 0x74, 0x4c, 0xfb, 0xe6, 0x96, 0xb9, 0xb3, 0xa3, 0x19, - 0x6d, 0x7b, 0x9e, 0xbc, 0x2b, 0x13, 0x9a, 0x71, 0xc9, 0xb9, 0xd4, 0xc5, 0xe8, 0xba, 0xee, 0x85, - 0xad, 0x9b, 0x3b, 0xfa, 0xf9, 0x9b, 0xbb, 0xe7, 0x6f, 0xde, 0x31, 0xdb, 0xb8, 0xe3, 0xfd, 0x40, - 0x5e, 0x58, 0x76, 0x74, 0x43, 0x54, 0xae, 0x8e, 0xd9, 0xd2, 0x3a, 0xb6, 0x63, 0x5a, 0x98, 0xe5, - 0x3c, 0x19, 0x14, 0x89, 0xf7, 0xb0, 0xe1, 0x78, 0x14, 0xae, 0xda, 0x32, 0xcd, 0xad, 0x0e, 0xa6, - 0xdf, 0xce, 0xef, 0x6e, 0xde, 0x6c, 0x3b, 0xd6, 0x6e, 0xcb, 0x61, 0x5f, 0xaf, 0xe9, 0xfd, 0xda, - 0xc6, 0x76, 0xcb, 0xd2, 0xbb, 0x8e, 0x69, 0xd1, 0x1c, 0x67, 0x3e, 0xf2, 0xd0, 0x24, 0xc8, 0x6a, - 0xb7, 0x85, 0xbe, 0x35, 0x01, 0x72, 0xb1, 0xdb, 0x45, 0x1f, 0x96, 0x00, 0x96, 0xb1, 0x73, 0x16, - 0x5b, 0xb6, 0x6e, 0x1a, 0xe8, 0x28, 0x4c, 0xa8, 0xf8, 0x67, 0x76, 0xb1, 0xed, 0xdc, 0x9e, 0x7d, - 0xee, 0xd7, 0xe4, 0x0c, 0x7a, 0x44, 0x82, 0x49, 0x15, 0xdb, 0x5d, 0xd3, 0xb0, 0xb1, 0x72, 0x37, - 0xe4, 0xb0, 0x65, 0x99, 0xd6, 0xa9, 0xcc, 0x35, 0x99, 0x1b, 0xa6, 0x6f, 0xbd, 0x71, 0x9e, 0x55, - 0x7f, 0x5e, 0xed, 0xb6, 0xe6, 0x8b, 0xdd, 0xee, 0x7c, 0x40, 0x69, 0xde, 0xfb, 0x69, 0xbe, 0xec, - 0xfe, 0xa1, 0xd2, 0x1f, 0x95, 0x53, 0x30, 0xb1, 0x47, 0x33, 0x9c, 0x92, 0xae, 0xc9, 0xdc, 0x30, - 0xa5, 0x7a, 0xaf, 0xee, 0x97, 0x36, 0x76, 0x34, 0xbd, 0x63, 0x9f, 0x92, 0xe9, 0x17, 0xf6, 0x8a, - 0x1e, 0xce, 0x40, 0x8e, 0x10, 0x51, 0x4a, 0x90, 0x6d, 0x99, 0x6d, 0x4c, 0x8a, 0x9f, 0xbb, 0xf5, - 0x66, 0xf1, 0xe2, 0xe7, 0x4b, 0x66, 0x1b, 0xab, 0xe4, 0x67, 0xe5, 0x1a, 0x98, 0xf6, 0xc4, 0x12, - 0xb0, 0x11, 0x4e, 0x3a, 0x73, 0x2b, 0x64, 0xdd, 0xfc, 0xca, 0x24, 0x64, 0xab, 0x1b, 0xab, 0xab, - 0x85, 0x23, 0xca, 0x31, 0x98, 0xdd, 0xa8, 0xde, 0x5b, 0xad, 0x9d, 0xab, 0x36, 0xcb, 0xaa, 0x5a, - 0x53, 0x0b, 0x19, 0x65, 0x16, 0xa6, 0x16, 0x8a, 0x8b, 0xcd, 0x4a, 0x75, 0x7d, 0xa3, 0x51, 0x90, - 0xd0, 0xcb, 0x65, 0x98, 0xab, 0x63, 0x67, 0x11, 0xef, 0xe9, 0x2d, 0x5c, 0x77, 0x34, 0x07, 0xa3, - 0xe7, 0x67, 0x7c, 0x61, 0x2a, 0x1b, 0x6e, 0xa1, 0xfe, 0x27, 0x56, 0x81, 0x27, 0xed, 0xab, 0x00, - 0x4f, 0x61, 0x9e, 0xfd, 0x3d, 0x1f, 0x4a, 0x53, 0xc3, 0x74, 0xce, 0x3c, 0x01, 0xa6, 0x43, 0xdf, - 0x94, 0x39, 0x80, 0x85, 0x62, 0xe9, 0xde, 0x65, 0xb5, 0xb6, 0x51, 0x5d, 0x2c, 0x1c, 0x71, 0xdf, - 0x97, 0x6a, 0x6a, 0x99, 0xbd, 0x67, 0xd0, 0x77, 0x32, 0x21, 0x30, 0x17, 0x79, 0x30, 0xe7, 0x07, - 0x33, 0xd3, 0x07, 0x50, 0xf4, 0x5a, 0x1f, 0x9c, 0x65, 0x0e, 0x9c, 0x27, 0x25, 0x23, 0x97, 0x3e, - 0x40, 0x0f, 0x4a, 0x30, 0x59, 0xdf, 0xde, 0x75, 0xda, 0xe6, 0x45, 0x03, 0x4d, 0xf9, 0xc8, 0xa0, - 0x6f, 0x84, 0x65, 0xf2, 0x74, 0x5e, 0x26, 0x37, 0xec, 0xaf, 0x04, 0xa3, 0x10, 0x21, 0x8d, 0x57, - 0xfa, 0xd2, 0x28, 0x72, 0xd2, 0x78, 0x82, 0x28, 0xa1, 0xf4, 0xe5, 0xf0, 0xe2, 0xa7, 0x42, 0xae, - 0xde, 0xd5, 0x5a, 0x18, 0x7d, 0x42, 0x86, 0x99, 0x55, 0xac, 0xed, 0xe1, 0x62, 0xb7, 0x6b, 0x99, - 0x7b, 0x18, 0x95, 0x02, 0x7d, 0x3d, 0x05, 0x13, 0xb6, 0x9b, 0xa9, 0xd2, 0x26, 0x35, 0x98, 0x52, - 0xbd, 0x57, 0xe5, 0x34, 0x80, 0xde, 0xc6, 0x86, 0xa3, 0x3b, 0x3a, 0xb6, 0x4f, 0x49, 0xd7, 0xc8, - 0x37, 0x4c, 0xa9, 0xa1, 0x14, 0xf4, 0x2d, 0x49, 0x54, 0xc7, 0x08, 0x17, 0xf3, 0x61, 0x0e, 0x22, - 0xa4, 0xfa, 0x6a, 0x49, 0x44, 0xc7, 0x06, 0x92, 0x4b, 0x26, 0xdb, 0x37, 0x65, 0x92, 0x0b, 0xd7, - 0xcd, 0x51, 0xad, 0x35, 0xeb, 0x1b, 0xa5, 0x95, 0x66, 0x7d, 0xbd, 0x58, 0x2a, 0x17, 0xb0, 0x72, - 0x1c, 0x0a, 0xe4, 0xb1, 0x59, 0xa9, 0x37, 0x17, 0xcb, 0xab, 0xe5, 0x46, 0x79, 0xb1, 0xb0, 0xa9, - 0x28, 0x30, 0xa7, 0x96, 0x7f, 0x62, 0xa3, 0x5c, 0x6f, 0x34, 0x97, 0x8a, 0x95, 0xd5, 0xf2, 0x62, - 0x61, 0xcb, 0xfd, 0x79, 0xb5, 0xb2, 0x56, 0x69, 0x34, 0xd5, 0x72, 0xb1, 0xb4, 0x52, 0x5e, 0x2c, - 0x6c, 0x2b, 0x97, 0xc3, 0x65, 0xd5, 0x5a, 0xb3, 0xb8, 0xbe, 0xae, 0xd6, 0xce, 0x96, 0x9b, 0xec, - 0x8f, 0x7a, 0x41, 0xa7, 0x05, 0x35, 0x9a, 0xf5, 0x95, 0xa2, 0x5a, 0x2e, 0x2e, 0xac, 0x96, 0x0b, - 0xf7, 0xa3, 0x67, 0xcb, 0x30, 0xbb, 0xa6, 0x5d, 0xc0, 0xf5, 0x6d, 0xcd, 0xc2, 0xda, 0xf9, 0x0e, - 0x46, 0xd7, 0x0a, 0xe0, 0x89, 0x3e, 0x11, 0xc6, 0xab, 0xcc, 0xe3, 0x75, 0x73, 0x1f, 0x01, 0x73, - 0x45, 0x44, 0x00, 0xf6, 0xaf, 0x7e, 0x33, 0x58, 0xe1, 0x00, 0x7b, 0x72, 0x42, 0x7a, 0xc9, 0x10, - 0xfb, 0xb9, 0x47, 0x01, 0x62, 0xe8, 0x8b, 0x32, 0xcc, 0x55, 0x8c, 0x3d, 0xdd, 0xc1, 0xcb, 0xd8, - 0xc0, 0x96, 0x3b, 0x0e, 0x08, 0xc1, 0xf0, 0x88, 0x1c, 0x82, 0x61, 0x89, 0x87, 0xe1, 0x96, 0x3e, - 0x62, 0xe3, 0xcb, 0x88, 0x18, 0x6d, 0xaf, 0x82, 0x29, 0x9d, 0xe4, 0x2b, 0xe9, 0x6d, 0x26, 0xb1, - 0x20, 0x41, 0xb9, 0x0e, 0x66, 0xe9, 0xcb, 0x92, 0xde, 0xc1, 0xf7, 0xe2, 0x4b, 0x6c, 0xdc, 0xe5, - 0x13, 0xd1, 0x2f, 0xfb, 0x8d, 0xaf, 0xc2, 0x61, 0xf9, 0x63, 0x49, 0x99, 0x4a, 0x06, 0xe6, 0x0b, - 0x1f, 0x0d, 0xcd, 0x6f, 0x5f, 0x2b, 0xd3, 0xd1, 0xf7, 0x24, 0x98, 0xae, 0x3b, 0x66, 0xd7, 0x55, - 0x59, 0xdd, 0xd8, 0x12, 0x03, 0xf7, 0x63, 0xe1, 0x36, 0x56, 0xe2, 0xc1, 0x7d, 0x42, 0x1f, 0x39, - 0x86, 0x0a, 0x88, 0x68, 0x61, 0xdf, 0xf2, 0x5b, 0xd8, 0x12, 0x87, 0xca, 0xad, 0x89, 0xa8, 0xfd, - 0x00, 0xb6, 0xaf, 0x17, 0xca, 0x50, 0xf0, 0xd4, 0xcc, 0x29, 0xed, 0x5a, 0x16, 0x36, 0x1c, 0x31, - 0x10, 0xfe, 0x2a, 0x0c, 0xc2, 0x0a, 0x0f, 0xc2, 0xad, 0x31, 0xca, 0xec, 0x95, 0x92, 0x62, 0x1b, - 0x7b, 0xbf, 0x8f, 0xe6, 0xbd, 0x1c, 0x9a, 0x3f, 0x9e, 0x9c, 0xad, 0x64, 0x90, 0xae, 0x0c, 0x81, - 0xe8, 0x71, 0x28, 0xb8, 0x63, 0x52, 0xa9, 0x51, 0x39, 0x5b, 0x6e, 0x56, 0xaa, 0x67, 0x2b, 0x8d, - 0x72, 0x01, 0xa3, 0x17, 0xc8, 0x30, 0x43, 0x59, 0x53, 0xf1, 0x9e, 0x79, 0x41, 0xb0, 0xd7, 0xfb, - 0x62, 0x42, 0x63, 0x21, 0x5c, 0x42, 0x44, 0xcb, 0xf8, 0xa5, 0x04, 0xc6, 0x42, 0x0c, 0xb9, 0x47, - 0x53, 0x6f, 0xb5, 0xaf, 0x19, 0x6c, 0xf5, 0x69, 0x2d, 0x7d, 0x7b, 0xab, 0x17, 0x66, 0x01, 0x68, - 0x25, 0xcf, 0xea, 0xf8, 0x22, 0x5a, 0x0b, 0x30, 0xe1, 0xd4, 0x36, 0x33, 0x50, 0x6d, 0xa5, 0x7e, - 0x6a, 0xfb, 0xae, 0xf0, 0x98, 0xb5, 0xc0, 0xa3, 0x77, 0x53, 0xa4, 0xb8, 0x5d, 0x4e, 0xa2, 0x67, - 0x87, 0x9e, 0xa2, 0x48, 0xbc, 0xd5, 0x79, 0x15, 0x4c, 0x91, 0xc7, 0xaa, 0xb6, 0x83, 0x59, 0x1b, - 0x0a, 0x12, 0x94, 0x33, 0x30, 0x43, 0x33, 0xb6, 0x4c, 0xc3, 0xad, 0x4f, 0x96, 0x64, 0xe0, 0xd2, - 0x5c, 0x10, 0x5b, 0x16, 0xd6, 0x1c, 0xd3, 0x22, 0x34, 0x72, 0x14, 0xc4, 0x50, 0x12, 0xfa, 0xba, - 0xdf, 0x0a, 0xcb, 0x9c, 0xe6, 0x3c, 0x31, 0x49, 0x55, 0x92, 0xe9, 0xcd, 0xde, 0x70, 0xed, 0x8f, - 0xb6, 0xba, 0xa6, 0x8b, 0xf6, 0x12, 0x99, 0xda, 0x61, 0xe5, 0x24, 0x28, 0x2c, 0xd5, 0xcd, 0x5b, - 0xaa, 0x55, 0x1b, 0xe5, 0x6a, 0xa3, 0xb0, 0xd9, 0x57, 0xa3, 0xb6, 0xd0, 0xab, 0xb3, 0x90, 0xbd, - 0xc7, 0xd4, 0x0d, 0xf4, 0x60, 0x86, 0x53, 0x09, 0x03, 0x3b, 0x17, 0x4d, 0xeb, 0x82, 0xdf, 0x50, - 0x83, 0x84, 0x78, 0x6c, 0x02, 0x55, 0x92, 0x07, 0xaa, 0x52, 0xb6, 0x9f, 0x2a, 0xfd, 0x5a, 0x58, - 0x95, 0xee, 0xe0, 0x55, 0xe9, 0xfa, 0x3e, 0xf2, 0x77, 0x99, 0x8f, 0xe8, 0x00, 0x3e, 0xea, 0x77, - 0x00, 0x77, 0x71, 0x30, 0x3e, 0x5e, 0x8c, 0x4c, 0x32, 0x00, 0xbf, 0x90, 0x6a, 0xc3, 0xef, 0x07, - 0xf5, 0x56, 0x04, 0xd4, 0xdb, 0x7d, 0xfa, 0x04, 0x7d, 0x7f, 0xd7, 0x71, 0xff, 0xfe, 0x6e, 0xe2, - 0x82, 0x72, 0x02, 0x8e, 0x2d, 0x56, 0x96, 0x96, 0xca, 0x6a, 0xb9, 0xda, 0x68, 0x56, 0xcb, 0x8d, - 0x73, 0x35, 0xf5, 0xde, 0x42, 0x07, 0x3d, 0x2c, 0x03, 0xb8, 0x12, 0x2a, 0x69, 0x46, 0x0b, 0x77, - 0xc4, 0x7a, 0xf4, 0xff, 0x25, 0x25, 0xeb, 0x13, 0x02, 0xfa, 0x11, 0x70, 0xbe, 0x4c, 0x12, 0x6f, - 0x95, 0x91, 0xc4, 0x92, 0x81, 0xfa, 0x86, 0x47, 0x83, 0xed, 0x79, 0x19, 0x1c, 0xf5, 0xe8, 0xb1, - 0xec, 0xfd, 0xa7, 0x7d, 0x6f, 0xce, 0xc2, 0x1c, 0x83, 0xc5, 0x9b, 0xc7, 0x3f, 0x37, 0x23, 0x32, - 0x91, 0x47, 0x30, 0xc9, 0xa6, 0xed, 0x5e, 0xf7, 0xee, 0xbf, 0x2b, 0xcb, 0x30, 0xdd, 0xc5, 0xd6, - 0x8e, 0x6e, 0xdb, 0xba, 0x69, 0xd0, 0x05, 0xb9, 0xb9, 0x5b, 0x1f, 0xeb, 0x4b, 0x9c, 0xac, 0x5d, - 0xce, 0xaf, 0x6b, 0x96, 0xa3, 0xb7, 0xf4, 0xae, 0x66, 0x38, 0xeb, 0x41, 0x66, 0x35, 0xfc, 0x27, - 0xfa, 0xd5, 0x84, 0xd3, 0x1a, 0xbe, 0x26, 0x11, 0x2a, 0xf1, 0xfb, 0x09, 0xa6, 0x24, 0xb1, 0x04, - 0x93, 0xa9, 0xc5, 0x87, 0x53, 0x55, 0x8b, 0x3e, 0x78, 0x6f, 0x29, 0x57, 0xc0, 0x89, 0x4a, 0xb5, - 0x54, 0x53, 0xd5, 0x72, 0xa9, 0xd1, 0x5c, 0x2f, 0xab, 0x6b, 0x95, 0x7a, 0xbd, 0x52, 0xab, 0xd6, - 0x0f, 0xd2, 0xda, 0xd1, 0xc7, 0x65, 0x5f, 0x63, 0x16, 0x71, 0xab, 0xa3, 0x1b, 0x18, 0xdd, 0x75, - 0x40, 0x85, 0xe1, 0x57, 0x7d, 0xc4, 0x71, 0x66, 0xe5, 0x47, 0xe0, 0xfc, 0xaa, 0xe4, 0x38, 0xf7, - 0x27, 0xf8, 0x1f, 0xb8, 0xf9, 0x7f, 0x51, 0x86, 0x63, 0xa1, 0x86, 0xa8, 0xe2, 0x9d, 0x91, 0xad, - 0xe4, 0xfd, 0x5c, 0xb8, 0xed, 0x56, 0x78, 0x4c, 0xfb, 0x59, 0xd3, 0xfb, 0xd8, 0x88, 0x80, 0xf5, - 0x0d, 0x3e, 0xac, 0xab, 0x1c, 0xac, 0x4f, 0x1d, 0x82, 0x66, 0x32, 0x64, 0x7f, 0x37, 0x55, 0x64, - 0xaf, 0x80, 0x13, 0xeb, 0x45, 0xb5, 0x51, 0x29, 0x55, 0xd6, 0x8b, 0xee, 0x38, 0x1a, 0x1a, 0xb2, - 0x23, 0xcc, 0x75, 0x1e, 0xf4, 0xbe, 0xf8, 0xbe, 0x2f, 0x0b, 0x57, 0xf5, 0xef, 0x68, 0x4b, 0xdb, - 0x9a, 0xb1, 0x85, 0x91, 0x2e, 0x02, 0xf5, 0x22, 0x4c, 0xb4, 0x48, 0x76, 0x8a, 0x73, 0x78, 0xeb, - 0x26, 0xa6, 0x2f, 0xa7, 0x25, 0xa8, 0xde, 0xaf, 0xe8, 0x6d, 0x61, 0x85, 0x68, 0xf0, 0x0a, 0xf1, - 0xf4, 0x78, 0xf0, 0xf6, 0xf1, 0x1d, 0xa1, 0x1b, 0x9f, 0xf2, 0x75, 0xe3, 0x1c, 0xa7, 0x1b, 0xa5, - 0x83, 0x91, 0x4f, 0xa6, 0x26, 0x7f, 0xfc, 0x68, 0xe8, 0x00, 0x22, 0xb5, 0x49, 0x8f, 0x1e, 0x15, - 0xfa, 0x76, 0xf7, 0xaf, 0x90, 0x21, 0xbf, 0x88, 0x3b, 0x58, 0x74, 0x25, 0xf2, 0x9b, 0x92, 0xe8, - 0x86, 0x08, 0x85, 0x81, 0xd2, 0x8e, 0x5e, 0x1d, 0x71, 0xf4, 0x1d, 0x6c, 0x3b, 0xda, 0x4e, 0x97, - 0x88, 0x5a, 0x56, 0x83, 0x04, 0xf4, 0xf3, 0x92, 0xc8, 0x76, 0x49, 0x4c, 0x31, 0xff, 0x31, 0xd6, - 0x14, 0x3f, 0x23, 0xc1, 0x64, 0x1d, 0x3b, 0x35, 0xab, 0x8d, 0x2d, 0x54, 0x0f, 0x30, 0xba, 0x06, - 0xa6, 0x09, 0x28, 0xee, 0x34, 0xd3, 0xc7, 0x29, 0x9c, 0xa4, 0x5c, 0x0f, 0x73, 0xfe, 0x2b, 0xf9, - 0x9d, 0x75, 0xe3, 0x3d, 0xa9, 0xe8, 0x9f, 0x32, 0xa2, 0xbb, 0xb8, 0x6c, 0xc9, 0x90, 0x71, 0x13, - 0xd1, 0x4a, 0xc5, 0x76, 0x64, 0x63, 0x49, 0xa5, 0xbf, 0xd1, 0xf5, 0x16, 0x09, 0x60, 0xc3, 0xb0, - 0x3d, 0xb9, 0x3e, 0x3e, 0x81, 0x5c, 0xd1, 0xbf, 0x64, 0x92, 0xcd, 0x62, 0x82, 0x72, 0x22, 0x24, - 0xf6, 0x9a, 0x04, 0x6b, 0x0b, 0x91, 0xc4, 0xd2, 0x97, 0xd9, 0x57, 0xe6, 0x20, 0x7f, 0x4e, 0xeb, - 0x74, 0xb0, 0x83, 0xbe, 0x2a, 0x41, 0xbe, 0x64, 0x61, 0xcd, 0xc1, 0x61, 0xd1, 0x21, 0x98, 0xb4, - 0x4c, 0xd3, 0x59, 0xd7, 0x9c, 0x6d, 0x26, 0x37, 0xff, 0x9d, 0x39, 0x0c, 0xfc, 0x4e, 0xb8, 0xfb, - 0xb8, 0x8b, 0x17, 0xdd, 0x8f, 0x72, 0xb5, 0xa5, 0x05, 0xcd, 0xd3, 0x42, 0x22, 0xfa, 0x0f, 0x04, - 0x93, 0x3b, 0x06, 0xde, 0x31, 0x0d, 0xbd, 0xe5, 0xd9, 0x9c, 0xde, 0x3b, 0xfa, 0x80, 0x2f, 0xd3, - 0x05, 0x4e, 0xa6, 0xf3, 0xc2, 0xa5, 0x24, 0x13, 0x68, 0x7d, 0x88, 0xde, 0xe3, 0x6a, 0xb8, 0x92, - 0x76, 0x06, 0xcd, 0x46, 0xad, 0x59, 0x52, 0xcb, 0xc5, 0x46, 0xb9, 0xb9, 0x5a, 0x2b, 0x15, 0x57, - 0x9b, 0x6a, 0x79, 0xbd, 0x56, 0xc0, 0xe8, 0xef, 0x25, 0x57, 0xb8, 0x2d, 0x73, 0x0f, 0x5b, 0x68, - 0x59, 0x48, 0xce, 0x71, 0x32, 0x61, 0x18, 0xfc, 0x9a, 0xb0, 0xd3, 0x06, 0x93, 0x0e, 0xe3, 0x20, - 0x42, 0x79, 0x3f, 0x28, 0xd4, 0xdc, 0x63, 0x49, 0x3d, 0x0a, 0x24, 0xfd, 0xbf, 0x25, 0x98, 0x28, - 0x99, 0xc6, 0x1e, 0xb6, 0x9c, 0xf0, 0x7c, 0x27, 0x2c, 0xcd, 0x0c, 0x2f, 0x4d, 0x77, 0x90, 0xc4, - 0x86, 0x63, 0x99, 0x5d, 0x6f, 0xc2, 0xe3, 0xbd, 0xa2, 0xd7, 0x25, 0x95, 0x30, 0x2b, 0x39, 0x7a, - 0xe1, 0xb3, 0x7f, 0x41, 0x1c, 0x7b, 0x72, 0x4f, 0x03, 0x78, 0x38, 0x09, 0x2e, 0xfd, 0x19, 0x48, - 0xbf, 0x4b, 0xf9, 0x92, 0x0c, 0xb3, 0xb4, 0xf1, 0xd5, 0x31, 0xb1, 0xd0, 0x50, 0x2d, 0xbc, 0xe4, - 0xd8, 0x23, 0xfc, 0x95, 0x23, 0x9c, 0xf8, 0xf3, 0x5a, 0xb7, 0xeb, 0x2f, 0x3f, 0xaf, 0x1c, 0x51, - 0xd9, 0x3b, 0x55, 0xf3, 0x85, 0x3c, 0x64, 0xb5, 0x5d, 0x67, 0x1b, 0x7d, 0x4f, 0x78, 0xf2, 0xc9, - 0x75, 0x06, 0x8c, 0x9f, 0x08, 0x48, 0x8e, 0x43, 0xce, 0x31, 0x2f, 0x60, 0x4f, 0x0e, 0xf4, 0xc5, - 0x85, 0x43, 0xeb, 0x76, 0x1b, 0xe4, 0x03, 0x83, 0xc3, 0x7b, 0x77, 0x6d, 0x1d, 0xad, 0xd5, 0x32, - 0x77, 0x0d, 0xa7, 0xe2, 0x2d, 0x41, 0x07, 0x09, 0xe8, 0xf3, 0x19, 0x91, 0xc9, 0xac, 0x00, 0x83, - 0xc9, 0x20, 0x3b, 0x3f, 0x44, 0x53, 0x9a, 0x87, 0x1b, 0x8b, 0xeb, 0xeb, 0xcd, 0x46, 0xed, 0xde, - 0x72, 0x35, 0x30, 0x3c, 0x9b, 0x95, 0x6a, 0xb3, 0xb1, 0x52, 0x6e, 0x96, 0x36, 0x54, 0xb2, 0x4e, - 0x58, 0x2c, 0x95, 0x6a, 0x1b, 0xd5, 0x46, 0x01, 0xa3, 0x37, 0x4a, 0x30, 0x53, 0xea, 0x98, 0xb6, - 0x8f, 0xf0, 0xd5, 0x01, 0xc2, 0xbe, 0x18, 0x33, 0x21, 0x31, 0xa2, 0x7f, 0xcf, 0x88, 0x3a, 0x1d, - 0x78, 0x02, 0x09, 0x91, 0x8f, 0xe8, 0xa5, 0x5e, 0x27, 0xe4, 0x74, 0x30, 0x98, 0x5e, 0xfa, 0x4d, - 0xe2, 0x33, 0xb7, 0xc3, 0x44, 0x91, 0x2a, 0x06, 0xfa, 0x9b, 0x0c, 0xe4, 0x4b, 0xa6, 0xb1, 0xa9, - 0x6f, 0xb9, 0xc6, 0x1c, 0x36, 0xb4, 0xf3, 0x1d, 0xbc, 0xa8, 0x39, 0xda, 0x9e, 0x8e, 0x2f, 0x92, - 0x0a, 0x4c, 0xaa, 0x3d, 0xa9, 0x2e, 0x53, 0x2c, 0x05, 0x9f, 0xdf, 0xdd, 0x22, 0x4c, 0x4d, 0xaa, - 0xe1, 0x24, 0xe5, 0xa9, 0x70, 0x39, 0x7d, 0x5d, 0xb7, 0xb0, 0x85, 0x3b, 0x58, 0xb3, 0xb1, 0x3b, - 0x2d, 0x32, 0x70, 0x87, 0x28, 0xed, 0xa4, 0x1a, 0xf5, 0x59, 0x39, 0x03, 0x33, 0xf4, 0x13, 0x31, - 0x45, 0x6c, 0xa2, 0xc6, 0x93, 0x2a, 0x97, 0xa6, 0x3c, 0x01, 0x72, 0xf8, 0x01, 0xc7, 0xd2, 0x4e, - 0xb5, 0x09, 0x5e, 0x97, 0xcf, 0x53, 0xaf, 0xc3, 0x79, 0xcf, 0xeb, 0x70, 0xbe, 0x4e, 0x7c, 0x12, - 0x55, 0x9a, 0x0b, 0xbd, 0x74, 0xd2, 0x37, 0x24, 0xbe, 0x2f, 0x05, 0x8a, 0xa1, 0x40, 0xd6, 0xd0, - 0x76, 0x30, 0xd3, 0x0b, 0xf2, 0xac, 0xdc, 0x08, 0x47, 0xb5, 0x3d, 0xcd, 0xd1, 0xac, 0x55, 0xb3, - 0xa5, 0x75, 0xc8, 0xe0, 0xe7, 0xb5, 0xfc, 0xde, 0x0f, 0x64, 0x47, 0xc8, 0x31, 0x2d, 0x4c, 0x72, - 0x79, 0x3b, 0x42, 0x5e, 0x82, 0x4b, 0x5d, 0x6f, 0x99, 0x06, 0xe1, 0x5f, 0x56, 0xc9, 0xb3, 0x2b, - 0x95, 0xb6, 0x6e, 0xbb, 0x15, 0x21, 0x54, 0xaa, 0x74, 0x6b, 0xa3, 0x7e, 0xc9, 0x68, 0x91, 0xdd, - 0xa0, 0x49, 0x35, 0xea, 0xb3, 0xb2, 0x00, 0xd3, 0x6c, 0x23, 0x64, 0xcd, 0xd5, 0xab, 0x3c, 0xd1, - 0xab, 0x6b, 0x78, 0x9f, 0x2e, 0x8a, 0xe7, 0x7c, 0x35, 0xc8, 0xa7, 0x86, 0x7f, 0x52, 0xee, 0x86, - 0x2b, 0xd9, 0x6b, 0x69, 0xd7, 0x76, 0xcc, 0x1d, 0x0a, 0xfa, 0x92, 0xde, 0xa1, 0x35, 0x98, 0x20, - 0x35, 0x88, 0xcb, 0xa2, 0xdc, 0x0a, 0xc7, 0xbb, 0x16, 0xde, 0xc4, 0xd6, 0x7d, 0xda, 0xce, 0xee, - 0x03, 0x0d, 0x4b, 0x33, 0xec, 0xae, 0x69, 0x39, 0xa7, 0x26, 0x09, 0xf3, 0x7d, 0xbf, 0xb1, 0x8e, - 0x72, 0x12, 0xf2, 0x54, 0x7c, 0xe8, 0xf9, 0x39, 0x61, 0x77, 0x4e, 0x56, 0xa1, 0x58, 0xf3, 0xec, - 0x16, 0x98, 0x60, 0x3d, 0x1c, 0x01, 0x6a, 0xfa, 0xd6, 0x93, 0x3d, 0xeb, 0x0a, 0x8c, 0x8a, 0xea, - 0x65, 0x53, 0x9e, 0x04, 0xf9, 0x16, 0xa9, 0x16, 0xc1, 0x6c, 0xfa, 0xd6, 0x2b, 0xfb, 0x17, 0x4a, - 0xb2, 0xa8, 0x2c, 0x2b, 0xfa, 0x4b, 0x59, 0xc8, 0x03, 0x34, 0x8e, 0xe3, 0x64, 0xad, 0xfa, 0xeb, - 0xd2, 0x10, 0xdd, 0xe6, 0x4d, 0x70, 0x03, 0xeb, 0x13, 0x99, 0xfd, 0xb1, 0xd8, 0x5c, 0xd8, 0xf0, - 0x26, 0x83, 0xae, 0x55, 0x52, 0x6f, 0x14, 0x55, 0x77, 0x26, 0xbf, 0xe8, 0x4e, 0x22, 0x6f, 0x84, - 0xeb, 0x07, 0xe4, 0x2e, 0x37, 0x9a, 0xd5, 0xe2, 0x5a, 0xb9, 0xb0, 0xc9, 0xdb, 0x36, 0xf5, 0x46, - 0x6d, 0xbd, 0xa9, 0x6e, 0x54, 0xab, 0x95, 0xea, 0x32, 0x25, 0xe6, 0x9a, 0x84, 0x27, 0x83, 0x0c, - 0xe7, 0xd4, 0x4a, 0xa3, 0xdc, 0x2c, 0xd5, 0xaa, 0x4b, 0x95, 0xe5, 0x82, 0x3e, 0xc8, 0x30, 0xba, - 0x5f, 0xb9, 0x06, 0xae, 0xe2, 0x38, 0xa9, 0xd4, 0xaa, 0xee, 0xcc, 0xb6, 0x54, 0xac, 0x96, 0xca, - 0xee, 0x34, 0xf6, 0x82, 0x82, 0xe0, 0x04, 0x25, 0xd7, 0x5c, 0xaa, 0xac, 0x86, 0x37, 0xa3, 0x3e, - 0x96, 0x51, 0x4e, 0xc1, 0x65, 0xe1, 0x6f, 0x95, 0xea, 0xd9, 0xe2, 0x6a, 0x65, 0xb1, 0xf0, 0x47, - 0x19, 0xe5, 0x3a, 0xb8, 0x9a, 0xfb, 0x8b, 0xee, 0x2b, 0x35, 0x2b, 0x8b, 0xcd, 0xb5, 0x4a, 0x7d, - 0xad, 0xd8, 0x28, 0xad, 0x14, 0x3e, 0x4e, 0xe6, 0x0b, 0xbe, 0x01, 0x1c, 0x72, 0xcb, 0x7c, 0x61, - 0x78, 0x4c, 0x2f, 0xf2, 0x8a, 0xfa, 0xf8, 0xbe, 0xb0, 0xc7, 0xdb, 0xb0, 0x1f, 0xf6, 0x47, 0x87, - 0x45, 0x4e, 0x85, 0x6e, 0x49, 0x40, 0x2b, 0x99, 0x0e, 0x35, 0x86, 0x50, 0xa1, 0x6b, 0xe0, 0xaa, - 0x6a, 0x99, 0x22, 0xa5, 0x96, 0x4b, 0xb5, 0xb3, 0x65, 0xb5, 0x79, 0xae, 0xb8, 0xba, 0x5a, 0x6e, - 0x34, 0x97, 0x2a, 0x6a, 0xbd, 0x51, 0xd8, 0x44, 0xff, 0x22, 0xf9, 0xab, 0x39, 0x21, 0x69, 0xfd, - 0x8d, 0x94, 0xb4, 0x59, 0xc7, 0xae, 0xda, 0xfc, 0x18, 0xe4, 0x6d, 0x47, 0x73, 0x76, 0x6d, 0xd6, - 0xaa, 0x1f, 0xd3, 0xbf, 0x55, 0xcf, 0xd7, 0x49, 0x26, 0x95, 0x65, 0x46, 0x7f, 0x99, 0x49, 0xd2, - 0x4c, 0x47, 0xb0, 0xa0, 0xa3, 0x0f, 0x21, 0xe2, 0xd3, 0x80, 0x3c, 0x6d, 0xaf, 0xd4, 0x9b, 0xc5, - 0x55, 0xb5, 0x5c, 0x5c, 0xbc, 0xcf, 0x5f, 0xc6, 0xc1, 0xca, 0x09, 0x38, 0xb6, 0x51, 0x2d, 0x2e, - 0xac, 0x96, 0x49, 0x73, 0xa9, 0x55, 0xab, 0xe5, 0x92, 0x2b, 0xf7, 0x9f, 0x27, 0x9b, 0x26, 0xae, - 0x05, 0x4d, 0xf8, 0x76, 0xad, 0x9c, 0x90, 0xfc, 0xbf, 0x26, 0xec, 0x5b, 0x14, 0x68, 0x58, 0x98, - 0xd6, 0x68, 0x71, 0xf8, 0xbc, 0x90, 0x3b, 0x91, 0x10, 0x27, 0xc9, 0xf0, 0xf8, 0xcf, 0x43, 0xe0, - 0x71, 0x02, 0x8e, 0x85, 0xf1, 0x20, 0x6e, 0x45, 0xd1, 0x30, 0x7c, 0x79, 0x12, 0xf2, 0x75, 0xdc, - 0xc1, 0x2d, 0x07, 0xbd, 0x39, 0x64, 0x4c, 0xcc, 0x81, 0xe4, 0xbb, 0xb1, 0x48, 0x7a, 0x9b, 0x9b, - 0x3e, 0x4b, 0x3d, 0xd3, 0xe7, 0x18, 0x33, 0x40, 0x4e, 0x64, 0x06, 0x64, 0x53, 0x30, 0x03, 0x72, - 0xc3, 0x9b, 0x01, 0xf9, 0x41, 0x66, 0x00, 0x7a, 0x4d, 0x3e, 0x69, 0x2f, 0x41, 0x45, 0x7d, 0xb8, - 0x83, 0xff, 0xff, 0xca, 0x26, 0xe9, 0x55, 0xfa, 0x72, 0x9c, 0x4c, 0x8b, 0xbf, 0x27, 0xa7, 0xb0, - 0xfc, 0xa0, 0x5c, 0x0b, 0x57, 0x07, 0xef, 0xcd, 0xf2, 0x33, 0x2a, 0xf5, 0x46, 0x9d, 0x8c, 0xf8, - 0xa5, 0x9a, 0xaa, 0x6e, 0xac, 0xd3, 0x35, 0xe4, 0x93, 0xa0, 0x04, 0x54, 0xd4, 0x8d, 0x2a, 0x1d, - 0xdf, 0xb7, 0x78, 0xea, 0x4b, 0x95, 0xea, 0x62, 0xd3, 0x6f, 0x33, 0xd5, 0xa5, 0x5a, 0x61, 0xdb, - 0x9d, 0xb2, 0x85, 0xa8, 0xbb, 0x03, 0x34, 0x2b, 0xa1, 0x58, 0x5d, 0x6c, 0xae, 0x55, 0xcb, 0x6b, - 0xb5, 0x6a, 0xa5, 0x44, 0xd2, 0xeb, 0xe5, 0x46, 0x41, 0x77, 0x07, 0x9a, 0x1e, 0x8b, 0xa2, 0x5e, - 0x2e, 0xaa, 0xa5, 0x95, 0xb2, 0x4a, 0x8b, 0xbc, 0x5f, 0xb9, 0x1e, 0xce, 0x14, 0xab, 0xb5, 0x86, - 0x9b, 0x52, 0xac, 0xde, 0xd7, 0xb8, 0x6f, 0xbd, 0xdc, 0x5c, 0x57, 0x6b, 0xa5, 0x72, 0xbd, 0xee, - 0xb6, 0x53, 0x66, 0x7f, 0x14, 0x3a, 0xca, 0xd3, 0xe1, 0xf6, 0x10, 0x6b, 0xe5, 0x06, 0xd9, 0xb0, - 0x5c, 0xab, 0x11, 0x9f, 0x95, 0xc5, 0x72, 0x73, 0xa5, 0x58, 0x6f, 0x56, 0xaa, 0xa5, 0xda, 0xda, - 0x7a, 0xb1, 0x51, 0x71, 0x9b, 0xf3, 0xba, 0x5a, 0x6b, 0xd4, 0x9a, 0x67, 0xcb, 0x6a, 0xbd, 0x52, - 0xab, 0x16, 0x0c, 0xb7, 0xca, 0xa1, 0xf6, 0xef, 0xf5, 0xc3, 0xa6, 0x72, 0x15, 0x9c, 0xf2, 0xd2, - 0x57, 0x6b, 0xae, 0xa0, 0x43, 0x16, 0x49, 0x37, 0x55, 0x8b, 0xe4, 0xdf, 0x24, 0xc8, 0xd6, 0x1d, - 0xb3, 0x8b, 0x7e, 0x34, 0xe8, 0x60, 0x4e, 0x03, 0x58, 0x64, 0xff, 0xd1, 0x9d, 0x85, 0xb1, 0x79, - 0x59, 0x28, 0x05, 0x7d, 0x44, 0x78, 0xd3, 0x24, 0xe8, 0xb3, 0xcd, 0x6e, 0x84, 0xad, 0xf2, 0x1d, - 0xb1, 0x53, 0x24, 0xd1, 0x84, 0x92, 0xe9, 0xfb, 0x2f, 0x0d, 0xb3, 0x2d, 0x82, 0xe0, 0x64, 0x08, - 0x36, 0x57, 0xfe, 0x9e, 0x4a, 0x60, 0xe5, 0x72, 0xb8, 0xac, 0x47, 0xb9, 0x88, 0x4e, 0x6d, 0x2a, - 0x3f, 0x02, 0x8f, 0x09, 0xa9, 0x77, 0x79, 0xad, 0x76, 0xb6, 0xec, 0x2b, 0xf2, 0x62, 0xb1, 0x51, - 0x2c, 0x6c, 0xa1, 0xcf, 0xc8, 0x90, 0x5d, 0x33, 0xf7, 0x7a, 0xf7, 0xaa, 0x0c, 0x7c, 0x31, 0xb4, - 0x16, 0xea, 0xbd, 0xf2, 0x5e, 0xf3, 0x42, 0x62, 0x5f, 0x8b, 0xde, 0x97, 0xfe, 0xbc, 0x94, 0x44, - 0xec, 0x6b, 0x07, 0xdd, 0x8c, 0xfe, 0x87, 0x61, 0xc4, 0x1e, 0x21, 0x5a, 0xac, 0x9c, 0x81, 0xd3, - 0xc1, 0x87, 0xca, 0x62, 0xb9, 0xda, 0xa8, 0x2c, 0xdd, 0x17, 0x08, 0xb7, 0xa2, 0x0a, 0x89, 0x7f, - 0x50, 0x37, 0x16, 0x3f, 0xd3, 0x38, 0x05, 0xc7, 0x83, 0x6f, 0xcb, 0xe5, 0x86, 0xf7, 0xe5, 0x7e, - 0xf4, 0x60, 0x0e, 0x66, 0x68, 0xb7, 0xbe, 0xd1, 0x6d, 0x6b, 0x0e, 0x46, 0x4f, 0x0a, 0xd0, 0xbd, - 0x01, 0x8e, 0x56, 0xd6, 0x97, 0xea, 0x75, 0xc7, 0xb4, 0xb4, 0x2d, 0x5c, 0x6c, 0xb7, 0x2d, 0x26, - 0xad, 0xde, 0x64, 0xf4, 0x0e, 0xe1, 0x75, 0x3e, 0x7e, 0x28, 0xa1, 0x65, 0x46, 0xa0, 0xfe, 0x25, - 0xa1, 0x75, 0x39, 0x01, 0x82, 0xc9, 0xd0, 0xbf, 0x7f, 0xc4, 0x6d, 0x2e, 0x1a, 0x97, 0xcd, 0x33, - 0xcf, 0x91, 0x60, 0xaa, 0xa1, 0xef, 0xe0, 0x67, 0x9a, 0x06, 0xb6, 0x95, 0x09, 0x90, 0x97, 0xd7, - 0x1a, 0x85, 0x23, 0xee, 0x83, 0x6b, 0x54, 0x65, 0xc8, 0x43, 0xd9, 0x2d, 0xc0, 0x7d, 0x28, 0x36, - 0x0a, 0xb2, 0xfb, 0xb0, 0x56, 0x6e, 0x14, 0xb2, 0xee, 0x43, 0xb5, 0xdc, 0x28, 0xe4, 0xdc, 0x87, - 0xf5, 0xd5, 0x46, 0x21, 0xef, 0x3e, 0x54, 0xea, 0x8d, 0xc2, 0x84, 0xfb, 0xb0, 0x50, 0x6f, 0x14, - 0x26, 0xdd, 0x87, 0xb3, 0xf5, 0x46, 0x61, 0xca, 0x7d, 0x28, 0x35, 0x1a, 0x05, 0x70, 0x1f, 0xee, - 0xa9, 0x37, 0x0a, 0xd3, 0xee, 0x43, 0xb1, 0xd4, 0x28, 0xcc, 0x90, 0x87, 0x72, 0xa3, 0x30, 0xeb, - 0x3e, 0xd4, 0xeb, 0x8d, 0xc2, 0x1c, 0xa1, 0x5c, 0x6f, 0x14, 0x8e, 0x92, 0xb2, 0x2a, 0x8d, 0x42, - 0xc1, 0x7d, 0x58, 0xa9, 0x37, 0x0a, 0xc7, 0x48, 0xe6, 0x7a, 0xa3, 0xa0, 0x90, 0x42, 0xeb, 0x8d, - 0xc2, 0x65, 0x24, 0x4f, 0xbd, 0x51, 0x38, 0x4e, 0x8a, 0xa8, 0x37, 0x0a, 0x27, 0x08, 0x1b, 0xe5, - 0x46, 0xe1, 0x24, 0xc9, 0xa3, 0x36, 0x0a, 0x97, 0x93, 0x4f, 0xd5, 0x46, 0xe1, 0x14, 0x61, 0xac, - 0xdc, 0x28, 0x5c, 0x41, 0x1e, 0xd4, 0x46, 0x01, 0x91, 0x4f, 0xc5, 0x46, 0xe1, 0x4a, 0xf4, 0x18, - 0x98, 0x5a, 0xc6, 0x0e, 0x05, 0x11, 0x15, 0x40, 0x5e, 0xc6, 0x4e, 0xd8, 0x8c, 0xff, 0x8a, 0x0c, - 0x97, 0xb3, 0xa9, 0xdf, 0x92, 0x65, 0xee, 0xac, 0xe2, 0x2d, 0xad, 0x75, 0xa9, 0xfc, 0x80, 0x6b, - 0x42, 0x85, 0xf7, 0x65, 0x15, 0xc8, 0x76, 0x83, 0xce, 0x88, 0x3c, 0xc7, 0x5a, 0x9c, 0xde, 0x62, - 0x94, 0x1c, 0x2c, 0x46, 0x31, 0x8b, 0xec, 0x9f, 0xc3, 0x1a, 0xcd, 0xad, 0x1f, 0x67, 0x7a, 0xd6, - 0x8f, 0xdd, 0x66, 0xd2, 0xc5, 0x96, 0x6d, 0x1a, 0x5a, 0xa7, 0xce, 0x36, 0xee, 0xe9, 0xaa, 0x57, - 0x6f, 0xb2, 0xf2, 0x13, 0x5e, 0xcb, 0xa0, 0x56, 0xd9, 0xd3, 0xe2, 0x66, 0xb8, 0xbd, 0xd5, 0x8c, - 0x68, 0x24, 0x1f, 0xf7, 0x1b, 0x49, 0x83, 0x6b, 0x24, 0x77, 0x1f, 0x80, 0x76, 0xb2, 0xf6, 0x52, - 0x19, 0x6e, 0x6a, 0x11, 0xb8, 0xb5, 0x7a, 0xcb, 0xd5, 0x32, 0xfa, 0x8c, 0x04, 0x27, 0xcb, 0x46, - 0x3f, 0x0b, 0x3f, 0xac, 0x0b, 0x6f, 0x0c, 0x43, 0xb3, 0xce, 0x8b, 0xf4, 0xf6, 0xbe, 0xd5, 0xee, - 0x4f, 0x33, 0x42, 0xa2, 0x9f, 0xf4, 0x25, 0x5a, 0xe7, 0x24, 0x7a, 0xd7, 0xf0, 0xa4, 0x93, 0x09, - 0xb4, 0x3a, 0xd2, 0x0e, 0x28, 0x8b, 0xbe, 0x9e, 0x85, 0xc7, 0x50, 0xdf, 0x1b, 0xc6, 0x21, 0x6d, - 0x65, 0x45, 0xa3, 0xad, 0x62, 0xdb, 0xd1, 0x2c, 0x87, 0x3b, 0x0f, 0xdd, 0x33, 0x95, 0xca, 0xa4, - 0x30, 0x95, 0x92, 0x06, 0x4e, 0xa5, 0xd0, 0xdb, 0xc3, 0xe6, 0xc3, 0x39, 0x1e, 0xe3, 0x62, 0xff, - 0xfe, 0x3f, 0xae, 0x86, 0x51, 0x50, 0xfb, 0x76, 0xc5, 0x4f, 0x72, 0x50, 0x2f, 0x1d, 0xb8, 0x84, - 0x64, 0x88, 0x7f, 0x64, 0xb4, 0x76, 0x5e, 0x36, 0xfc, 0x8d, 0x37, 0x4a, 0x0a, 0xed, 0x54, 0x0d, - 0xf4, 0x4f, 0x4d, 0xc0, 0x14, 0x69, 0x0b, 0xab, 0xba, 0x71, 0x01, 0x3d, 0x2c, 0xc3, 0x4c, 0x15, - 0x5f, 0x2c, 0x6d, 0x6b, 0x9d, 0x0e, 0x36, 0xb6, 0x70, 0xd8, 0x6c, 0x3f, 0x05, 0x13, 0x5a, 0xb7, - 0x5b, 0x0d, 0xf6, 0x19, 0xbc, 0x57, 0xd6, 0xff, 0x7e, 0xad, 0x6f, 0x23, 0xcf, 0xc4, 0x34, 0x72, - 0xbf, 0xdc, 0xf9, 0x70, 0x99, 0x11, 0x33, 0xe4, 0x6b, 0x60, 0xba, 0xe5, 0x65, 0xf1, 0xcf, 0x4d, - 0x84, 0x93, 0xd0, 0xdf, 0x25, 0xea, 0x06, 0x84, 0x0a, 0x4f, 0xa6, 0x14, 0x78, 0xc4, 0x76, 0xc8, - 0x09, 0x38, 0xd6, 0xa8, 0xd5, 0x9a, 0x6b, 0xc5, 0xea, 0x7d, 0xc1, 0x79, 0xe5, 0x4d, 0xf4, 0xb2, - 0x2c, 0xcc, 0xd5, 0xcd, 0xce, 0x1e, 0x0e, 0x60, 0xaa, 0x70, 0x0e, 0x39, 0x61, 0x39, 0x65, 0xf6, - 0xc9, 0x49, 0x39, 0x09, 0x79, 0xcd, 0xb0, 0x2f, 0x62, 0xcf, 0x36, 0x64, 0x6f, 0x0c, 0xc6, 0xf7, - 0x85, 0xdb, 0xb1, 0xca, 0xc3, 0x78, 0xc7, 0x00, 0x49, 0xf2, 0x5c, 0x45, 0x00, 0x79, 0x06, 0x66, - 0x6c, 0xba, 0x59, 0xd8, 0x08, 0xed, 0x09, 0x73, 0x69, 0x84, 0x45, 0xba, 0x5b, 0x2d, 0x33, 0x16, - 0xc9, 0x1b, 0x7a, 0xd8, 0x6f, 0xfe, 0x1b, 0x1c, 0xc4, 0xc5, 0x83, 0x30, 0x96, 0x0c, 0xe4, 0x57, - 0x8c, 0x7a, 0x86, 0x77, 0x0a, 0x8e, 0xb3, 0x56, 0xdb, 0x2c, 0xad, 0x14, 0x57, 0x57, 0xcb, 0xd5, - 0xe5, 0x72, 0xb3, 0xb2, 0x48, 0xb7, 0x2a, 0x82, 0x94, 0x62, 0xa3, 0x51, 0x5e, 0x5b, 0x6f, 0xd4, - 0x9b, 0xe5, 0x67, 0x94, 0xca, 0xe5, 0x45, 0xe2, 0x12, 0x47, 0xce, 0xb4, 0x78, 0xce, 0x8b, 0xc5, - 0x6a, 0xfd, 0x5c, 0x59, 0x2d, 0x6c, 0x9f, 0x29, 0xc2, 0x74, 0xa8, 0x9f, 0x77, 0xb9, 0x5b, 0xc4, - 0x9b, 0xda, 0x6e, 0x87, 0xd9, 0x6a, 0x85, 0x23, 0x2e, 0x77, 0x44, 0x36, 0x35, 0xa3, 0x73, 0xa9, - 0x90, 0x51, 0x0a, 0x30, 0x13, 0xee, 0xd2, 0x0b, 0x12, 0x7a, 0xcb, 0x55, 0x30, 0x75, 0xce, 0xb4, - 0x2e, 0x10, 0x3f, 0x2e, 0xf4, 0x6e, 0x1a, 0xd7, 0xc4, 0x3b, 0x21, 0x1a, 0x1a, 0xd8, 0x5f, 0x21, - 0xee, 0x2d, 0xe0, 0x51, 0x9b, 0x1f, 0x78, 0x0a, 0xf4, 0x1a, 0x98, 0xbe, 0xe8, 0xe5, 0x0e, 0x5a, - 0x7a, 0x28, 0x09, 0xfd, 0x77, 0xb1, 0xfd, 0xff, 0xc1, 0x45, 0xa6, 0xbf, 0x3f, 0xfd, 0x66, 0x09, - 0xf2, 0xcb, 0xd8, 0x29, 0x76, 0x3a, 0x61, 0xb9, 0xbd, 0x48, 0xf8, 0x64, 0x0f, 0x57, 0x89, 0x62, - 0xa7, 0x13, 0xdd, 0xa8, 0x42, 0x02, 0xf2, 0x3c, 0xd0, 0xb9, 0x34, 0x41, 0xbf, 0xb9, 0x01, 0x05, - 0xa6, 0x2f, 0xb1, 0x0f, 0xc8, 0xfe, 0x1e, 0xf7, 0x23, 0x21, 0x2b, 0xe7, 0x89, 0x41, 0x4c, 0x9b, - 0x4c, 0xfc, 0x5e, 0xb9, 0x97, 0x4f, 0xb9, 0x17, 0x26, 0x76, 0x6d, 0x5c, 0xd2, 0x6c, 0x4c, 0x78, - 0xeb, 0xad, 0x69, 0xed, 0xfc, 0xfd, 0xb8, 0xe5, 0xcc, 0x57, 0x76, 0x5c, 0x83, 0x7a, 0x83, 0x66, - 0xf4, 0xc3, 0xc4, 0xb0, 0x77, 0xd5, 0xa3, 0xe0, 0x4e, 0x4a, 0x2e, 0xea, 0xce, 0x76, 0x69, 0x5b, - 0x73, 0xd8, 0xda, 0xb6, 0xff, 0x8e, 0x9e, 0x3f, 0x04, 0x9c, 0xb1, 0x7b, 0xc1, 0x91, 0x07, 0x04, - 0x13, 0x83, 0x38, 0x82, 0x0d, 0xdc, 0x61, 0x40, 0xfc, 0x47, 0x09, 0xb2, 0xb5, 0x2e, 0x36, 0x84, - 0x4f, 0xc3, 0xf8, 0xb2, 0x95, 0x7a, 0x64, 0xfb, 0xb0, 0xb8, 0x77, 0x98, 0x5f, 0x69, 0xb7, 0xe4, - 0x08, 0xc9, 0xde, 0x0c, 0x59, 0xdd, 0xd8, 0x34, 0x99, 0x61, 0x7a, 0x65, 0xc4, 0x26, 0x50, 0xc5, - 0xd8, 0x34, 0x55, 0x92, 0x51, 0xd4, 0x31, 0x2c, 0xae, 0xec, 0xf4, 0xc5, 0xfd, 0x8d, 0x49, 0xc8, - 0x53, 0x75, 0x46, 0x2f, 0x94, 0x41, 0x2e, 0xb6, 0xdb, 0x11, 0x82, 0x97, 0xf6, 0x09, 0xde, 0x24, - 0xbf, 0xf9, 0x98, 0xf8, 0xef, 0x7c, 0x30, 0x13, 0xc1, 0xbe, 0x9d, 0x35, 0xa9, 0x62, 0xbb, 0x1d, - 0xed, 0x83, 0xea, 0x17, 0x28, 0xf1, 0x05, 0x86, 0x5b, 0xb8, 0x2c, 0xd6, 0xc2, 0x13, 0x0f, 0x04, - 0x91, 0xfc, 0xa5, 0x0f, 0xd1, 0x3f, 0x4b, 0x30, 0xb1, 0xaa, 0xdb, 0x8e, 0x8b, 0x4d, 0x51, 0x04, - 0x9b, 0xab, 0x60, 0xca, 0x13, 0x8d, 0xdb, 0xe5, 0xb9, 0xfd, 0x79, 0x90, 0x80, 0x5e, 0x1d, 0x46, - 0xe7, 0x1e, 0x1e, 0x9d, 0x27, 0xc7, 0xd7, 0x9e, 0x71, 0x11, 0x7d, 0xca, 0x20, 0x28, 0x56, 0xea, - 0x2d, 0xf6, 0x77, 0x7c, 0x81, 0xaf, 0x71, 0x02, 0xbf, 0x6d, 0x98, 0x22, 0xd3, 0x17, 0xfa, 0x67, - 0x25, 0x00, 0xb7, 0x6c, 0x76, 0x94, 0xeb, 0x71, 0xdc, 0x01, 0xed, 0x18, 0xe9, 0xbe, 0x2c, 0x2c, - 0xdd, 0x35, 0x5e, 0xba, 0x3f, 0x3e, 0xb8, 0xaa, 0x71, 0x47, 0xb6, 0x94, 0x02, 0xc8, 0xba, 0x2f, - 0x5a, 0xf7, 0x11, 0xbd, 0xd9, 0x17, 0xea, 0x3a, 0x27, 0xd4, 0x3b, 0x86, 0x2c, 0x29, 0x7d, 0xb9, - 0xfe, 0x95, 0x04, 0x13, 0x75, 0xec, 0xb8, 0xdd, 0x24, 0x3a, 0x2b, 0xd2, 0xc3, 0x87, 0xda, 0xb6, - 0x24, 0xd8, 0xb6, 0xbf, 0x9d, 0x11, 0x0d, 0xf4, 0x12, 0x48, 0x86, 0xf1, 0x14, 0xb1, 0x78, 0xf0, - 0x88, 0x50, 0xa0, 0x97, 0x41, 0xd4, 0xd2, 0x97, 0xee, 0x1b, 0x25, 0x7f, 0x63, 0x9e, 0x3f, 0x69, - 0x11, 0x36, 0x8b, 0x33, 0xfb, 0xcd, 0x62, 0xf1, 0x93, 0x16, 0xe1, 0x3a, 0x46, 0xef, 0x4a, 0x27, - 0x36, 0x36, 0x46, 0xb0, 0x61, 0x3c, 0x8c, 0xbc, 0x9e, 0x2d, 0x43, 0x9e, 0xad, 0x2c, 0xdf, 0x15, - 0xbf, 0xb2, 0x3c, 0x78, 0x6a, 0xf1, 0xae, 0x21, 0x4c, 0xb9, 0xb8, 0xe5, 0x5e, 0x9f, 0x0d, 0x29, - 0xc4, 0xc6, 0x4d, 0x90, 0x23, 0x91, 0x28, 0xd9, 0x38, 0x17, 0xec, 0xf5, 0x7b, 0x24, 0xca, 0xee, - 0x57, 0x95, 0x66, 0x4a, 0x8c, 0xc2, 0x08, 0x56, 0x88, 0x87, 0x41, 0xe1, 0x1d, 0x0a, 0xc0, 0xfa, - 0xee, 0xf9, 0x8e, 0x6e, 0x6f, 0xeb, 0xc6, 0x16, 0xfa, 0x7e, 0x06, 0x66, 0xd8, 0x2b, 0x0d, 0xa8, - 0x18, 0x6b, 0xfe, 0x45, 0x1a, 0x05, 0x05, 0x90, 0x77, 0x2d, 0x9d, 0x2d, 0x03, 0xb8, 0x8f, 0xca, - 0x9d, 0xbe, 0x23, 0x4f, 0xb6, 0xe7, 0x28, 0xbd, 0x2b, 0x86, 0x80, 0x83, 0xf9, 0x50, 0xe9, 0x81, - 0x43, 0x4f, 0x38, 0x6a, 0x66, 0x8e, 0x8f, 0x9a, 0xc9, 0x9d, 0xaf, 0xcb, 0xf7, 0x9c, 0xaf, 0x73, - 0x71, 0xb4, 0xf5, 0x67, 0x62, 0xe2, 0x5c, 0x2a, 0xab, 0xe4, 0xd9, 0xfd, 0xe3, 0x7e, 0x53, 0x37, - 0xc8, 0x66, 0x01, 0x73, 0x1d, 0x0d, 0x12, 0xd0, 0xfb, 0x83, 0x89, 0x8c, 0x29, 0x68, 0x05, 0x27, - 0x10, 0x03, 0x57, 0x76, 0xb6, 0xb7, 0xec, 0x0f, 0x09, 0x47, 0xc9, 0x0a, 0x09, 0x2c, 0x76, 0x4a, - 0xc2, 0x38, 0x90, 0x7c, 0x0e, 0x42, 0xbb, 0x7d, 0x71, 0xdd, 0xe9, 0x20, 0xfa, 0xc9, 0x14, 0x73, - 0x67, 0x88, 0xc5, 0x17, 0x05, 0xe6, 0xbc, 0x53, 0x87, 0xb5, 0x85, 0x7b, 0xca, 0xa5, 0x46, 0x01, - 0xef, 0x3f, 0x89, 0x48, 0xce, 0x1c, 0xd2, 0xf3, 0x85, 0xc1, 0x02, 0x0b, 0xfa, 0x9f, 0x12, 0xe4, - 0x99, 0xed, 0x70, 0xd7, 0x01, 0x21, 0x44, 0x2f, 0x1f, 0x06, 0x92, 0xd8, 0xc3, 0xdf, 0x9f, 0x48, - 0x0a, 0xc0, 0x08, 0xac, 0x85, 0xfb, 0x52, 0x03, 0x00, 0xfd, 0xab, 0x04, 0x59, 0xd7, 0xa6, 0x11, - 0x3b, 0x5a, 0xfb, 0x71, 0x61, 0xa7, 0xd6, 0x90, 0x00, 0x5c, 0xf2, 0x11, 0xfa, 0xbd, 0x00, 0x53, - 0x5d, 0x9a, 0xd1, 0x3f, 0xd8, 0x7d, 0x9d, 0x40, 0xcf, 0x82, 0xd5, 0xe0, 0x37, 0xf4, 0x4e, 0x21, - 0xc7, 0xd8, 0x78, 0x7e, 0x92, 0xc1, 0x51, 0x1e, 0xc5, 0x29, 0xdc, 0x4d, 0xf4, 0x5d, 0x09, 0x40, - 0xc5, 0xb6, 0xd9, 0xd9, 0xc3, 0x1b, 0x96, 0x8e, 0xae, 0x0c, 0x00, 0x60, 0xcd, 0x3e, 0x13, 0x34, - 0xfb, 0x4f, 0x85, 0x05, 0xbf, 0xcc, 0x0b, 0xfe, 0x89, 0xd1, 0x9a, 0xe7, 0x11, 0x8f, 0x10, 0xff, - 0xd3, 0x61, 0x82, 0xc9, 0x91, 0x19, 0x88, 0x62, 0xc2, 0xf7, 0x7e, 0x42, 0xef, 0xf1, 0x45, 0x7f, - 0x0f, 0x27, 0xfa, 0xa7, 0x24, 0xe6, 0x28, 0x19, 0x00, 0xa5, 0x21, 0x00, 0x38, 0x0a, 0xd3, 0x1e, - 0x00, 0x1b, 0x6a, 0xa5, 0x80, 0xd1, 0xdb, 0x64, 0xb2, 0x97, 0x4e, 0x47, 0xaa, 0x83, 0xf7, 0x34, - 0x5f, 0x15, 0x9e, 0xb9, 0x87, 0xe4, 0xe1, 0x97, 0x9f, 0x12, 0x40, 0x7f, 0x2a, 0x34, 0x55, 0x17, - 0x60, 0xe8, 0xd1, 0xd2, 0x5f, 0x9d, 0x29, 0xc3, 0x2c, 0x67, 0x62, 0x28, 0xa7, 0xe0, 0x38, 0x97, - 0x40, 0xc7, 0xbb, 0x76, 0xe1, 0x88, 0x82, 0xe0, 0x24, 0xf7, 0x85, 0xbd, 0xe0, 0x76, 0x21, 0x83, - 0xfe, 0xfc, 0x33, 0x19, 0x7f, 0xf1, 0xe6, 0x5d, 0x59, 0xb6, 0x6c, 0xf6, 0x51, 0x3e, 0x96, 0x58, - 0xcb, 0x34, 0x1c, 0xfc, 0x40, 0xc8, 0x97, 0xc1, 0x4f, 0x88, 0xb5, 0x1a, 0x4e, 0xc1, 0x84, 0x63, - 0x85, 0xfd, 0x1b, 0xbc, 0xd7, 0xb0, 0x62, 0xe5, 0x78, 0xc5, 0xaa, 0xc2, 0x19, 0xdd, 0x68, 0x75, - 0x76, 0xdb, 0x58, 0xc5, 0x1d, 0xcd, 0x95, 0xa1, 0x5d, 0xb4, 0x17, 0x71, 0x17, 0x1b, 0x6d, 0x6c, - 0x38, 0x94, 0x4f, 0xef, 0x2c, 0x93, 0x40, 0x4e, 0x5e, 0x19, 0xef, 0xe4, 0x95, 0xf1, 0x71, 0xfd, - 0xd6, 0x63, 0x63, 0x16, 0xef, 0x6e, 0x03, 0xa0, 0x75, 0x3b, 0xab, 0xe3, 0x8b, 0x4c, 0x0d, 0xaf, - 0xe8, 0x59, 0xc2, 0xab, 0xf9, 0x19, 0xd4, 0x50, 0x66, 0xf4, 0x45, 0x5f, 0xfd, 0xee, 0xe6, 0xd4, - 0xef, 0x26, 0x41, 0x16, 0x92, 0x69, 0x5d, 0x77, 0x08, 0xad, 0x9b, 0x85, 0xa9, 0x60, 0x67, 0x57, - 0x56, 0xae, 0x80, 0x13, 0x9e, 0xaf, 0x68, 0xb5, 0x5c, 0x5e, 0xac, 0x37, 0x37, 0xd6, 0x97, 0xd5, - 0xe2, 0x62, 0xb9, 0x00, 0xae, 0x7e, 0x52, 0xbd, 0xf4, 0x5d, 0x3c, 0xb3, 0xe8, 0x2f, 0x24, 0xc8, - 0x91, 0x83, 0x78, 0xe8, 0xa7, 0x47, 0xa4, 0x39, 0x36, 0xe7, 0x19, 0xe3, 0x8f, 0xbb, 0xe2, 0x31, - 0xbe, 0x99, 0x30, 0x09, 0x57, 0x07, 0x8a, 0xf1, 0x1d, 0x43, 0x28, 0xfd, 0x69, 0x8d, 0xdb, 0x24, - 0xeb, 0xdb, 0xe6, 0xc5, 0x1f, 0xe6, 0x26, 0xe9, 0xd6, 0xff, 0x90, 0x9b, 0x64, 0x1f, 0x16, 0xc6, - 0xde, 0x24, 0xfb, 0xb4, 0xbb, 0x98, 0x66, 0x8a, 0x9e, 0x95, 0xf3, 0xe7, 0x7f, 0xcf, 0x91, 0x0e, - 0xb4, 0x91, 0x55, 0x84, 0x59, 0xdd, 0x70, 0xb0, 0x65, 0x68, 0x9d, 0xa5, 0x8e, 0xb6, 0xe5, 0xd9, - 0xa7, 0xbd, 0xbb, 0x17, 0x95, 0x50, 0x1e, 0x95, 0xff, 0x43, 0x39, 0x0d, 0xe0, 0xe0, 0x9d, 0x6e, - 0x47, 0x73, 0x02, 0xd5, 0x0b, 0xa5, 0x84, 0xb5, 0x2f, 0xcb, 0x6b, 0xdf, 0x2d, 0x70, 0x19, 0x05, - 0xad, 0x71, 0xa9, 0x8b, 0x37, 0x0c, 0xfd, 0x67, 0x76, 0x49, 0xe8, 0x49, 0xaa, 0xa3, 0xfd, 0x3e, - 0x71, 0xdb, 0x39, 0xf9, 0x9e, 0xed, 0x9c, 0x7f, 0x14, 0x0e, 0x69, 0xe1, 0xb5, 0xfa, 0x01, 0x21, - 0x2d, 0xfc, 0x96, 0x26, 0xf7, 0xb4, 0x34, 0x7f, 0x91, 0x25, 0x2b, 0xb0, 0xc8, 0x12, 0x46, 0x25, - 0x27, 0xb8, 0x40, 0xf9, 0x2a, 0xa1, 0x98, 0x19, 0x71, 0xd5, 0x18, 0xc3, 0x02, 0xb8, 0x0c, 0x73, - 0xb4, 0xe8, 0x05, 0xd3, 0xbc, 0xb0, 0xa3, 0x59, 0x17, 0x90, 0x75, 0x20, 0x55, 0x8c, 0xdd, 0x4b, - 0x8a, 0xdc, 0x20, 0xfd, 0xa4, 0xf0, 0x9c, 0x81, 0x13, 0x97, 0xc7, 0xf3, 0x78, 0x36, 0x93, 0x5e, - 0x2f, 0x34, 0x85, 0x10, 0x61, 0x30, 0x7d, 0x5c, 0xff, 0xd8, 0xc7, 0xd5, 0xeb, 0xe8, 0xc3, 0xeb, - 0xf0, 0xa3, 0xc4, 0x15, 0x7d, 0x69, 0x38, 0xec, 0x3c, 0xbe, 0x86, 0xc0, 0xae, 0x00, 0xf2, 0x05, - 0xdf, 0xf5, 0xc7, 0x7d, 0x0c, 0x57, 0x28, 0x9b, 0x1e, 0x9a, 0x11, 0x2c, 0x8f, 0x05, 0xcd, 0xe3, - 0x3c, 0x0b, 0xb5, 0x6e, 0xaa, 0x98, 0x7e, 0x41, 0x78, 0x7f, 0xab, 0xaf, 0x80, 0x28, 0x77, 0xe3, - 0x69, 0x95, 0x62, 0x9b, 0x63, 0xe2, 0x6c, 0xa6, 0x8f, 0xe6, 0x43, 0x39, 0x98, 0xf2, 0x82, 0x8e, - 0x90, 0x3b, 0x71, 0x7c, 0x0c, 0x4f, 0x42, 0xde, 0x36, 0x77, 0xad, 0x16, 0x66, 0x3b, 0x8e, 0xec, - 0x6d, 0x88, 0xdd, 0xb1, 0x81, 0xe3, 0xf9, 0x3e, 0x93, 0x21, 0x9b, 0xd8, 0x64, 0x88, 0x36, 0x48, - 0xe3, 0x06, 0xf8, 0xe7, 0x0b, 0x07, 0x32, 0xe7, 0x30, 0xab, 0x63, 0xe7, 0xd1, 0x38, 0xc6, 0xff, - 0xa1, 0xd0, 0xde, 0xcb, 0x80, 0x9a, 0x24, 0x53, 0xb9, 0xda, 0x10, 0x86, 0xea, 0x95, 0x70, 0xb9, - 0x97, 0x83, 0x59, 0xa8, 0xc4, 0x22, 0xdd, 0x50, 0x57, 0x0b, 0x32, 0x7a, 0x76, 0x16, 0x0a, 0x94, - 0xb5, 0x9a, 0x6f, 0xac, 0xa1, 0x17, 0x65, 0x0e, 0xdb, 0x22, 0x8d, 0x9e, 0x62, 0x7e, 0x5a, 0x12, - 0x0d, 0x96, 0xca, 0x09, 0x3e, 0xa8, 0x5d, 0x84, 0x26, 0x0d, 0xd1, 0xcc, 0x62, 0x94, 0x0f, 0xfd, - 0x76, 0x46, 0x24, 0xf6, 0xaa, 0x18, 0x8b, 0xe9, 0xf7, 0x4a, 0x9f, 0xcb, 0x7a, 0xb1, 0xa3, 0x96, - 0x2c, 0x73, 0x67, 0xc3, 0xea, 0xa0, 0xff, 0x53, 0x28, 0xb4, 0x75, 0x84, 0xf9, 0x2f, 0x45, 0x9b, - 0xff, 0x64, 0xc9, 0xb8, 0x13, 0xec, 0x55, 0x75, 0x86, 0x18, 0xbe, 0x95, 0xeb, 0x61, 0x4e, 0x6b, - 0xb7, 0xd7, 0xb5, 0x2d, 0x5c, 0x72, 0xe7, 0xd5, 0x86, 0xc3, 0xe2, 0xca, 0xf4, 0xa4, 0xc6, 0x76, - 0x45, 0xe2, 0xeb, 0xa0, 0x1c, 0x48, 0x4c, 0x3e, 0x63, 0x19, 0xde, 0xdc, 0x21, 0xa1, 0xb5, 0xad, - 0x05, 0x51, 0xae, 0xd8, 0x9b, 0xa0, 0x67, 0x93, 0x00, 0xdf, 0xe9, 0x6b, 0xd6, 0xef, 0x4b, 0x30, - 0xe1, 0xca, 0xbb, 0xd8, 0x6e, 0xa3, 0xc7, 0x72, 0xc1, 0xe0, 0x22, 0x7d, 0xcb, 0x7e, 0x51, 0xd8, - 0xa9, 0xcf, 0xab, 0x21, 0xa5, 0x1f, 0x81, 0x49, 0x20, 0x44, 0x89, 0x13, 0xa2, 0x98, 0xef, 0x5e, - 0x6c, 0x11, 0xe9, 0x8b, 0xef, 0xe3, 0x12, 0xcc, 0x7a, 0xf3, 0x88, 0x25, 0xec, 0xb4, 0xb6, 0xd1, - 0x6d, 0xa2, 0x0b, 0x4d, 0xac, 0xa5, 0xf9, 0x7b, 0xb2, 0x1d, 0xf4, 0xbd, 0x4c, 0x42, 0x95, 0xe7, - 0x4a, 0x8e, 0x58, 0xa5, 0x4b, 0xa4, 0x8b, 0x71, 0x04, 0xd3, 0x17, 0xe6, 0x17, 0x25, 0x80, 0x86, - 0xe9, 0xcf, 0x75, 0x0f, 0x20, 0xc9, 0x17, 0x08, 0x6f, 0xd7, 0xb2, 0x8a, 0x07, 0xc5, 0x26, 0xef, - 0x39, 0x04, 0x5d, 0x93, 0x06, 0x95, 0x34, 0x96, 0xb6, 0x3e, 0xb5, 0xb8, 0xdb, 0xed, 0xe8, 0x2d, - 0xcd, 0xe9, 0xf5, 0xa7, 0x8b, 0x16, 0x2f, 0xb9, 0x30, 0x32, 0x91, 0x51, 0xe8, 0x97, 0x11, 0x21, - 0x4b, 0x1a, 0xa4, 0x44, 0xf2, 0x82, 0x94, 0x08, 0xfa, 0xc8, 0x0c, 0x20, 0x3e, 0x06, 0xf5, 0x94, - 0xe1, 0x68, 0xad, 0x8b, 0x8d, 0x05, 0x0b, 0x6b, 0xed, 0x96, 0xb5, 0xbb, 0x73, 0xde, 0x0e, 0x3b, - 0x83, 0xc6, 0xeb, 0x68, 0x68, 0xe9, 0x58, 0xe2, 0x96, 0x8e, 0xd1, 0x2f, 0xc8, 0xa2, 0x21, 0x73, - 0x42, 0x1b, 0x1c, 0x21, 0x1e, 0x86, 0x18, 0xea, 0x12, 0xb9, 0x30, 0xf5, 0xac, 0x12, 0x67, 0x93, - 0xac, 0x12, 0xbf, 0x41, 0x28, 0x00, 0x8f, 0x50, 0xbd, 0xc6, 0xe2, 0x89, 0x36, 0x57, 0xc7, 0x4e, - 0x04, 0xbc, 0xd7, 0xc1, 0xec, 0xf9, 0xe0, 0x8b, 0x0f, 0x31, 0x9f, 0xd8, 0xc7, 0x3f, 0xf4, 0x8d, - 0x49, 0x57, 0x60, 0x78, 0x16, 0x22, 0xd0, 0xf5, 0x11, 0x94, 0x44, 0x9c, 0xd0, 0x12, 0x2d, 0xa7, - 0xc4, 0x96, 0x9f, 0x3e, 0x0a, 0x1f, 0x92, 0x60, 0x9a, 0x5c, 0x83, 0xb9, 0x70, 0x89, 0x9c, 0x6a, - 0x14, 0x34, 0x4a, 0x1e, 0x0a, 0x8b, 0x59, 0x81, 0x6c, 0x47, 0x37, 0x2e, 0x78, 0xde, 0x83, 0xee, - 0x73, 0x70, 0xa9, 0x9a, 0xd4, 0xe7, 0x52, 0x35, 0x7f, 0x9f, 0xc2, 0x2f, 0xf7, 0x40, 0xb7, 0xfc, - 0x0e, 0x24, 0x97, 0xbe, 0x18, 0xff, 0x3e, 0x0b, 0xf9, 0x3a, 0xd6, 0xac, 0xd6, 0x36, 0x7a, 0x97, - 0xd4, 0x77, 0xaa, 0x30, 0xc9, 0x4f, 0x15, 0x96, 0x60, 0x62, 0x53, 0xef, 0x38, 0xd8, 0xa2, 0x1e, - 0xd5, 0xe1, 0xae, 0x9d, 0x36, 0xf1, 0x85, 0x8e, 0xd9, 0xba, 0x30, 0xcf, 0x4c, 0xf7, 0x79, 0x2f, - 0x08, 0xe7, 0xfc, 0x12, 0xf9, 0x49, 0xf5, 0x7e, 0x76, 0x0d, 0x42, 0xdb, 0xb4, 0x9c, 0xa8, 0xfb, - 0x15, 0x22, 0xa8, 0xd4, 0x4d, 0xcb, 0x51, 0xe9, 0x8f, 0x2e, 0xcc, 0x9b, 0xbb, 0x9d, 0x4e, 0x03, - 0x3f, 0xe0, 0x78, 0xd3, 0x36, 0xef, 0xdd, 0x35, 0x16, 0xcd, 0xcd, 0x4d, 0x1b, 0xd3, 0x45, 0x83, - 0x9c, 0xca, 0xde, 0x94, 0xe3, 0x90, 0xeb, 0xe8, 0x3b, 0x3a, 0x9d, 0x68, 0xe4, 0x54, 0xfa, 0xa2, - 0xdc, 0x08, 0x85, 0x60, 0x8e, 0x43, 0x19, 0x3d, 0x95, 0x27, 0x4d, 0x73, 0x5f, 0xba, 0xab, 0x33, - 0x17, 0xf0, 0x25, 0xfb, 0xd4, 0x04, 0xf9, 0x4e, 0x9e, 0xf9, 0xe3, 0x2b, 0x22, 0xfb, 0x1d, 0x54, - 0xe2, 0xd1, 0x33, 0x58, 0x0b, 0xb7, 0x4c, 0xab, 0xed, 0xc9, 0x26, 0x7a, 0x82, 0xc1, 0xf2, 0x25, - 0xdb, 0xa5, 0xe8, 0x5b, 0x78, 0xfa, 0x9a, 0xf6, 0xf6, 0xbc, 0xdb, 0x6d, 0xba, 0x45, 0x9f, 0xd3, - 0x9d, 0xed, 0x35, 0xec, 0x68, 0xe8, 0xef, 0xe5, 0xbe, 0x1a, 0x37, 0xfd, 0xff, 0x69, 0xdc, 0x00, - 0x8d, 0xa3, 0xe1, 0x95, 0x9c, 0x5d, 0xcb, 0x70, 0xe5, 0xc8, 0xbc, 0x52, 0x43, 0x29, 0xca, 0x1d, - 0x70, 0x45, 0xf0, 0xe6, 0x2d, 0x95, 0x2e, 0xb2, 0x69, 0xeb, 0x14, 0xc9, 0x1e, 0x9d, 0x41, 0x59, - 0x87, 0x6b, 0xe9, 0xc7, 0x95, 0xc6, 0xda, 0xea, 0x8a, 0xbe, 0xb5, 0xdd, 0xd1, 0xb7, 0xb6, 0x1d, - 0xbb, 0x62, 0xd8, 0x0e, 0xd6, 0xda, 0xb5, 0x4d, 0x95, 0xde, 0x8c, 0x02, 0x84, 0x8e, 0x48, 0x56, - 0xde, 0xe3, 0x5a, 0x6c, 0x74, 0x0b, 0x6b, 0x4a, 0x44, 0x4b, 0x79, 0x8a, 0xdb, 0x52, 0xec, 0xdd, - 0x8e, 0x8f, 0xe9, 0x55, 0x3d, 0x98, 0x06, 0xaa, 0xbe, 0xdb, 0x21, 0xcd, 0x85, 0x64, 0x4e, 0x3a, - 0xce, 0xc5, 0x70, 0x92, 0x7e, 0xb3, 0xf9, 0x7f, 0xf2, 0x90, 0x5b, 0xb6, 0xb4, 0xee, 0x36, 0x7a, - 0x76, 0xa8, 0x7f, 0x1e, 0x55, 0x9b, 0xf0, 0xb5, 0x53, 0x1a, 0xa4, 0x9d, 0xf2, 0x00, 0xed, 0xcc, - 0x86, 0xb4, 0x33, 0x7a, 0x51, 0xf9, 0x0c, 0xcc, 0xb4, 0xcc, 0x4e, 0x07, 0xb7, 0x5c, 0x79, 0x54, - 0xda, 0x64, 0x35, 0x67, 0x4a, 0xe5, 0xd2, 0x48, 0xa0, 0x62, 0xec, 0xd4, 0xe9, 0x1a, 0x3a, 0x55, - 0xfa, 0x20, 0x01, 0xbd, 0x48, 0x82, 0x6c, 0xb9, 0xbd, 0x85, 0xb9, 0x75, 0xf6, 0x4c, 0x68, 0x9d, - 0xfd, 0x24, 0xe4, 0x1d, 0xcd, 0xda, 0xc2, 0x8e, 0xb7, 0x4e, 0x40, 0xdf, 0xfc, 0xf8, 0xc9, 0x72, - 0x28, 0x7e, 0xf2, 0x8f, 0x43, 0xd6, 0x95, 0x19, 0x73, 0x32, 0xbf, 0xb6, 0x1f, 0xfc, 0x44, 0xf6, - 0xf3, 0x6e, 0x89, 0xf3, 0x6e, 0xad, 0x55, 0xf2, 0x43, 0x2f, 0xd6, 0xb9, 0x7d, 0x58, 0x93, 0x4b, - 0x1e, 0x5b, 0xa6, 0x51, 0xd9, 0xd1, 0xb6, 0x30, 0xab, 0x66, 0x90, 0xe0, 0x7d, 0x2d, 0xef, 0x98, - 0xf7, 0xeb, 0x2c, 0x94, 0x71, 0x90, 0xe0, 0x56, 0x61, 0x5b, 0x6f, 0xb7, 0xb1, 0xc1, 0x5a, 0x36, - 0x7b, 0x3b, 0x73, 0x1a, 0xb2, 0x2e, 0x0f, 0xae, 0xfe, 0xb8, 0xc6, 0x42, 0xe1, 0x88, 0x32, 0xe3, - 0x36, 0x2b, 0xda, 0x78, 0x0b, 0x19, 0x7e, 0x4d, 0x55, 0xc4, 0x6d, 0x87, 0x56, 0xae, 0x7f, 0xe3, - 0x7a, 0x02, 0xe4, 0x0c, 0xb3, 0x8d, 0x07, 0x0e, 0x42, 0x34, 0x97, 0xf2, 0x64, 0xc8, 0xe1, 0xb6, - 0xdb, 0x2b, 0xc8, 0x24, 0xfb, 0xe9, 0x78, 0x59, 0xaa, 0x34, 0x73, 0x32, 0xdf, 0xa0, 0x7e, 0xdc, - 0xa6, 0xdf, 0x00, 0x7f, 0x79, 0x02, 0x8e, 0xd2, 0x3e, 0xa0, 0xbe, 0x7b, 0xde, 0x25, 0x75, 0x1e, - 0xa3, 0x47, 0xfa, 0x0f, 0x5c, 0x47, 0x79, 0x65, 0x3f, 0x0e, 0x39, 0x7b, 0xf7, 0xbc, 0x6f, 0x84, - 0xd2, 0x97, 0x70, 0xd3, 0x95, 0x46, 0x32, 0x9c, 0xc9, 0xc3, 0x0e, 0x67, 0xdc, 0xd0, 0x24, 0x7b, - 0x8d, 0x3f, 0x18, 0xc8, 0xe8, 0xf1, 0x08, 0x6f, 0x20, 0xeb, 0x37, 0x0c, 0x9d, 0x82, 0x09, 0x6d, - 0xd3, 0xc1, 0x56, 0x60, 0x26, 0xb2, 0x57, 0x77, 0xa8, 0x3c, 0x8f, 0x37, 0x4d, 0xcb, 0x15, 0xcb, - 0x14, 0x1d, 0x2a, 0xbd, 0xf7, 0x50, 0xcb, 0x05, 0x6e, 0x87, 0xec, 0x26, 0x38, 0x66, 0x98, 0x8b, - 0xb8, 0xcb, 0xe4, 0x4c, 0x51, 0x9c, 0x25, 0x2d, 0x60, 0xff, 0x87, 0x7d, 0x5d, 0xc9, 0xdc, 0xfe, - 0xae, 0x04, 0x7d, 0x2a, 0xe9, 0x9c, 0xb9, 0x07, 0xe8, 0x91, 0x59, 0x68, 0xca, 0xd3, 0x60, 0xa6, - 0xcd, 0x5c, 0xb4, 0x5a, 0xba, 0xdf, 0x4a, 0x22, 0xff, 0xe3, 0x32, 0x07, 0x8a, 0x94, 0x0d, 0x2b, - 0xd2, 0x32, 0x4c, 0x92, 0x83, 0xcc, 0xae, 0x26, 0xe5, 0x7a, 0x5c, 0xe2, 0xc9, 0xb4, 0xce, 0xaf, - 0x54, 0x48, 0x6c, 0xf3, 0x25, 0xf6, 0x8b, 0xea, 0xff, 0x9c, 0x6c, 0xf6, 0x1d, 0x2f, 0xa1, 0xf4, - 0x9b, 0xe3, 0xef, 0xe4, 0xe1, 0x8a, 0x92, 0x65, 0xda, 0x36, 0x39, 0x03, 0xd3, 0xdb, 0x30, 0x5f, - 0x27, 0x71, 0x37, 0x29, 0x3c, 0xaa, 0x9b, 0x5f, 0xbf, 0x06, 0x35, 0xbe, 0xa6, 0xf1, 0x55, 0xe1, - 0x10, 0x30, 0xfe, 0xfe, 0x43, 0x84, 0xd0, 0x7f, 0x38, 0x1a, 0xc9, 0xdb, 0x33, 0x22, 0x51, 0x69, - 0x12, 0xca, 0x2a, 0xfd, 0xe6, 0xf2, 0x05, 0x09, 0xae, 0xec, 0xe5, 0x66, 0xc3, 0xb0, 0xfd, 0x06, - 0x73, 0xf5, 0x80, 0xf6, 0xc2, 0x47, 0x31, 0x89, 0xbd, 0xc3, 0x30, 0xa2, 0xee, 0xa1, 0xd2, 0x22, - 0x16, 0x4b, 0x82, 0x13, 0x35, 0x71, 0x77, 0x18, 0x26, 0x26, 0x9f, 0xbe, 0x70, 0x3f, 0x9d, 0x85, - 0xa3, 0xcb, 0x96, 0xb9, 0xdb, 0xb5, 0x83, 0x1e, 0xe8, 0x6f, 0xfa, 0x6f, 0xb8, 0xe6, 0x45, 0x4c, - 0x83, 0x6b, 0x60, 0xda, 0x62, 0xd6, 0x5c, 0xb0, 0xfd, 0x1a, 0x4e, 0x0a, 0xf7, 0x5e, 0xf2, 0x41, - 0x7a, 0xaf, 0xa0, 0x9f, 0xc9, 0x72, 0xfd, 0x4c, 0x6f, 0xcf, 0x91, 0xeb, 0xd3, 0x73, 0xfc, 0xb5, - 0x94, 0x70, 0x50, 0xed, 0x11, 0x51, 0x44, 0x7f, 0x51, 0x82, 0xfc, 0x16, 0xc9, 0xc8, 0xba, 0x8b, - 0xc7, 0x8b, 0xd5, 0x8c, 0x10, 0x57, 0xd9, 0xaf, 0x81, 0x5c, 0xe5, 0xb0, 0x0e, 0x27, 0x1a, 0xe0, - 0xe2, 0xb9, 0x4d, 0x5f, 0xa9, 0x1e, 0xce, 0xc2, 0x8c, 0x5f, 0x7a, 0xa5, 0x6d, 0xa3, 0x87, 0xfa, - 0x6b, 0xd4, 0xac, 0x88, 0x46, 0xed, 0x5b, 0x67, 0xf6, 0x47, 0x1d, 0x39, 0x34, 0xea, 0xf4, 0x1d, - 0x5d, 0x66, 0x22, 0x46, 0x17, 0xf4, 0x2c, 0x59, 0xf4, 0x2e, 0x22, 0xbe, 0x6b, 0x25, 0xb5, 0x79, - 0x34, 0x0f, 0x16, 0x82, 0x37, 0x22, 0x0d, 0xae, 0x55, 0xfa, 0x4a, 0xf2, 0x5e, 0x09, 0x8e, 0xed, - 0xef, 0xcc, 0x7f, 0x84, 0xf7, 0x42, 0x73, 0xeb, 0x64, 0xfb, 0x5e, 0x68, 0xe4, 0x8d, 0xdf, 0xa4, - 0x8b, 0x0d, 0x29, 0xc2, 0xd9, 0x7b, 0x83, 0x3b, 0x71, 0xb1, 0xa0, 0x21, 0x82, 0x44, 0xd3, 0x17, - 0xe0, 0xaf, 0xcb, 0x30, 0x55, 0xc7, 0xce, 0xaa, 0x76, 0xc9, 0xdc, 0x75, 0x90, 0x26, 0xba, 0x3d, - 0xf7, 0x54, 0xc8, 0x77, 0xc8, 0x2f, 0xec, 0x8a, 0xf7, 0x6b, 0xfa, 0xee, 0x6f, 0x11, 0xdf, 0x1f, - 0x4a, 0x5a, 0x65, 0xf9, 0xf9, 0x58, 0x2e, 0x22, 0xbb, 0xa3, 0x3e, 0x77, 0x23, 0xd9, 0xda, 0x49, - 0xb4, 0x77, 0x1a, 0x55, 0x74, 0xfa, 0xb0, 0xfc, 0x82, 0x0c, 0xb3, 0x75, 0xec, 0x54, 0xec, 0x25, - 0x6d, 0xcf, 0xb4, 0x74, 0x07, 0x87, 0xef, 0x78, 0x8c, 0x87, 0xe6, 0x34, 0x80, 0xee, 0xff, 0xc6, - 0x22, 0x4c, 0x85, 0x52, 0xd0, 0x6f, 0x27, 0x75, 0x14, 0xe2, 0xf8, 0x18, 0x09, 0x08, 0x89, 0x7c, - 0x2c, 0xe2, 0x8a, 0x4f, 0x1f, 0x88, 0xcf, 0x4b, 0x0c, 0x88, 0xa2, 0xd5, 0xda, 0xd6, 0xf7, 0x70, - 0x3b, 0x21, 0x10, 0xde, 0x6f, 0x01, 0x10, 0x3e, 0xa1, 0xc4, 0xee, 0x2b, 0x1c, 0x1f, 0xa3, 0x70, - 0x5f, 0x89, 0x23, 0x38, 0x96, 0x20, 0x51, 0x6e, 0xd7, 0xc3, 0xd6, 0x33, 0xef, 0x12, 0x15, 0x6b, - 0x60, 0xb2, 0x49, 0x61, 0x93, 0x6d, 0xa8, 0x8e, 0x85, 0x96, 0x3d, 0x48, 0xa7, 0xb3, 0x69, 0x74, - 0x2c, 0x7d, 0x8b, 0x4e, 0x5f, 0xe8, 0xef, 0x94, 0xe1, 0x84, 0x1f, 0x3d, 0xa5, 0x8e, 0x9d, 0x45, - 0xcd, 0xde, 0x3e, 0x6f, 0x6a, 0x56, 0x3b, 0x7c, 0xf5, 0xff, 0xd0, 0x27, 0xfe, 0xd0, 0xe7, 0xc2, - 0x20, 0x54, 0x79, 0x10, 0xfa, 0xba, 0x8a, 0xf6, 0xe5, 0x65, 0x14, 0x9d, 0x4c, 0xac, 0x37, 0xeb, - 0xef, 0xfa, 0x60, 0xfd, 0x04, 0x07, 0xd6, 0x9d, 0xc3, 0xb2, 0x98, 0x3e, 0x70, 0xbf, 0x45, 0x47, - 0x84, 0x90, 0x57, 0xf3, 0x7d, 0xa2, 0x80, 0x45, 0x78, 0xb5, 0xca, 0x91, 0x5e, 0xad, 0x43, 0x8d, - 0x11, 0x03, 0x3d, 0x92, 0xd3, 0x1d, 0x23, 0x0e, 0xd1, 0xdb, 0xf8, 0xad, 0x32, 0x14, 0x48, 0xf8, - 0xac, 0x90, 0xc7, 0x37, 0xba, 0x5f, 0x14, 0x9d, 0x7d, 0xde, 0xe5, 0x13, 0x49, 0xbd, 0xcb, 0xd1, - 0x5b, 0x92, 0xfa, 0x90, 0xf7, 0x72, 0x3b, 0x12, 0xc4, 0x12, 0xb9, 0x88, 0x0f, 0xe0, 0x20, 0x7d, - 0xd0, 0xfe, 0x9b, 0x0c, 0xe0, 0x36, 0x68, 0x76, 0xf6, 0xe1, 0x19, 0xa2, 0x70, 0xdd, 0x1c, 0xf6, - 0xab, 0x77, 0x81, 0x3a, 0xd1, 0x03, 0x14, 0xa5, 0x18, 0x9c, 0xaa, 0x78, 0x24, 0xa9, 0x6f, 0x65, - 0xc0, 0xd5, 0x48, 0x60, 0x49, 0xe4, 0x6d, 0x19, 0x59, 0x76, 0xfa, 0x80, 0xfc, 0x0f, 0x09, 0x72, - 0x0d, 0xb3, 0x8e, 0x9d, 0x83, 0x9b, 0x02, 0x89, 0x8f, 0xed, 0x93, 0x72, 0x47, 0x71, 0x6c, 0xbf, - 0x1f, 0xa1, 0x31, 0x44, 0x23, 0x93, 0x60, 0xa6, 0x61, 0x96, 0xfc, 0xc5, 0x29, 0x71, 0x5f, 0x55, - 0xf1, 0xfb, 0x94, 0xfd, 0x0a, 0x06, 0xc5, 0x1c, 0xe8, 0x3e, 0xe5, 0xc1, 0xf4, 0xd2, 0x97, 0xdb, - 0x6d, 0x70, 0x74, 0xc3, 0x68, 0x9b, 0x2a, 0x6e, 0x9b, 0x6c, 0xa5, 0x5b, 0x51, 0x20, 0xbb, 0x6b, - 0xb4, 0x4d, 0xc2, 0x72, 0x4e, 0x25, 0xcf, 0x6e, 0x9a, 0x85, 0xdb, 0x26, 0xf3, 0x0d, 0x20, 0xcf, - 0xe8, 0xab, 0x32, 0x64, 0xdd, 0x7f, 0xc5, 0x45, 0xfd, 0x56, 0x39, 0x61, 0x20, 0x02, 0x97, 0xfc, - 0x48, 0x2c, 0xa1, 0xbb, 0x42, 0x6b, 0xff, 0xd4, 0x83, 0xf5, 0xda, 0xa8, 0xf2, 0x42, 0xa2, 0x08, - 0xd6, 0xfc, 0x95, 0x53, 0x30, 0x71, 0xbe, 0x63, 0xb6, 0x2e, 0x04, 0xe7, 0xe5, 0xd9, 0xab, 0x72, - 0x23, 0xe4, 0x2c, 0xcd, 0xd8, 0xc2, 0x6c, 0x4f, 0xe1, 0x78, 0x4f, 0x5f, 0x48, 0xbc, 0x5e, 0x54, - 0x9a, 0x05, 0xbd, 0x25, 0x49, 0x08, 0x84, 0x3e, 0x95, 0x4f, 0xa6, 0x0f, 0x8b, 0x43, 0x9c, 0x2c, - 0x2b, 0xc0, 0x4c, 0xa9, 0x48, 0x6f, 0x2e, 0x5f, 0xab, 0x9d, 0x2d, 0x17, 0x64, 0x02, 0xb3, 0x2b, - 0x93, 0x14, 0x61, 0x76, 0xc9, 0xff, 0xd0, 0xc2, 0xdc, 0xa7, 0xf2, 0x87, 0x01, 0xf3, 0xc7, 0x25, - 0x98, 0x5d, 0xd5, 0x6d, 0x27, 0xca, 0xdb, 0x3f, 0x26, 0x7a, 0xee, 0xf3, 0x93, 0x9a, 0xca, 0x5c, - 0x39, 0xc2, 0x61, 0x73, 0x13, 0x99, 0xc3, 0x71, 0x45, 0x8c, 0xe7, 0x58, 0x0a, 0xe1, 0x80, 0xde, - 0x36, 0x2c, 0x2c, 0xc9, 0xc4, 0x86, 0x52, 0x50, 0xc8, 0xf8, 0x0d, 0xa5, 0xc8, 0xb2, 0xd3, 0x97, - 0xef, 0x57, 0x25, 0x38, 0xe6, 0x16, 0x1f, 0xb7, 0x2c, 0x15, 0x2d, 0xe6, 0x81, 0xcb, 0x52, 0x89, - 0x57, 0xc6, 0xf7, 0xf1, 0x32, 0x8a, 0x95, 0xf1, 0x41, 0x44, 0xc7, 0x2c, 0xe6, 0x88, 0x65, 0xd8, - 0x41, 0x62, 0x8e, 0x59, 0x86, 0x1d, 0x5e, 0xcc, 0xf1, 0x4b, 0xb1, 0x43, 0x8a, 0xf9, 0xd0, 0x16, - 0x58, 0x5f, 0x23, 0xfb, 0x62, 0x8e, 0x5c, 0xdb, 0x88, 0x11, 0x73, 0xe2, 0x13, 0xbb, 0xe8, 0x6d, - 0x43, 0x0a, 0x7e, 0xc4, 0xeb, 0x1b, 0xc3, 0xc0, 0x74, 0x88, 0x6b, 0x1c, 0x2f, 0x96, 0x61, 0x8e, - 0x71, 0xd1, 0x7f, 0xca, 0x1c, 0x83, 0x51, 0xe2, 0x29, 0x73, 0xe2, 0x33, 0x40, 0x3c, 0x67, 0xe3, - 0x3f, 0x03, 0x14, 0x5b, 0x7e, 0xfa, 0xe0, 0x7c, 0x2d, 0x0b, 0x27, 0x5d, 0x16, 0xd6, 0xcc, 0xb6, - 0xbe, 0x79, 0x89, 0x72, 0x71, 0x56, 0xeb, 0xec, 0x62, 0x1b, 0xbd, 0x5b, 0x12, 0x45, 0xe9, 0x3f, - 0x01, 0x98, 0x5d, 0x6c, 0xd1, 0x40, 0x6a, 0x0c, 0xa8, 0x3b, 0xa2, 0x2a, 0xbb, 0xbf, 0x24, 0xff, - 0x32, 0x99, 0x9a, 0x47, 0x44, 0x0d, 0xd1, 0x73, 0xad, 0xc2, 0x29, 0xff, 0x4b, 0xaf, 0x83, 0x47, - 0x66, 0xbf, 0x83, 0xc7, 0x0d, 0x20, 0x6b, 0xed, 0xb6, 0x0f, 0x55, 0xef, 0x66, 0x36, 0x29, 0x53, - 0x75, 0xb3, 0xb8, 0x39, 0x6d, 0x1c, 0x1c, 0xcd, 0x8b, 0xc8, 0x69, 0x63, 0x47, 0x99, 0x87, 0x3c, - 0xbd, 0x79, 0xd9, 0x5f, 0xd1, 0xef, 0x9f, 0x99, 0xe5, 0xe2, 0x4d, 0xbb, 0x1a, 0xaf, 0x86, 0xb7, - 0x25, 0x92, 0x4c, 0xbf, 0x7e, 0x3a, 0xb0, 0x93, 0x55, 0x4e, 0xc1, 0x9e, 0x3e, 0x34, 0xe5, 0xf1, - 0xec, 0x86, 0x15, 0xbb, 0xdd, 0xce, 0xa5, 0x06, 0x0b, 0xbe, 0x92, 0x68, 0x37, 0x2c, 0x14, 0xc3, - 0x45, 0xea, 0x8d, 0xe1, 0x92, 0x7c, 0x37, 0x8c, 0xe3, 0x63, 0x14, 0xbb, 0x61, 0x71, 0x04, 0xd3, - 0x17, 0xed, 0x9b, 0x72, 0xd4, 0x6a, 0x66, 0xb1, 0xfd, 0xff, 0xa8, 0xff, 0x21, 0x34, 0xe0, 0x9d, - 0x5d, 0xfa, 0x85, 0xfd, 0x8f, 0xbd, 0xd3, 0x44, 0x79, 0x32, 0xe4, 0x37, 0x4d, 0x6b, 0x47, 0xf3, - 0x36, 0xee, 0x7b, 0x4f, 0x8a, 0xb0, 0x78, 0xfa, 0x4b, 0x24, 0x8f, 0xca, 0xf2, 0xba, 0xf3, 0x91, - 0x67, 0xea, 0x5d, 0x16, 0x75, 0xd1, 0x7d, 0x54, 0xae, 0x83, 0x59, 0x16, 0x7c, 0xb1, 0x8a, 0x6d, - 0x07, 0xb7, 0x59, 0xc4, 0x0a, 0x3e, 0x51, 0x39, 0x03, 0x33, 0x2c, 0x61, 0x49, 0xef, 0x60, 0x9b, - 0x05, 0xad, 0xe0, 0xd2, 0x94, 0x93, 0x90, 0xd7, 0xed, 0x7b, 0x6c, 0xd3, 0x20, 0xfe, 0xff, 0x93, - 0x2a, 0x7b, 0x53, 0x6e, 0x80, 0xa3, 0x2c, 0x9f, 0x6f, 0xac, 0xd2, 0x03, 0x3b, 0xbd, 0xc9, 0xae, - 0x6a, 0x19, 0xe6, 0xba, 0x65, 0x6e, 0x59, 0xd8, 0xb6, 0xc9, 0xa9, 0xa9, 0x49, 0x35, 0x94, 0x82, - 0x3e, 0x33, 0xcc, 0xc4, 0x22, 0xf1, 0x3d, 0x07, 0x2e, 0x4a, 0xbb, 0xad, 0x16, 0xc6, 0x6d, 0x76, - 0xf2, 0xc9, 0x7b, 0x4d, 0x78, 0x03, 0x42, 0xe2, 0x69, 0xc8, 0x21, 0x5d, 0x81, 0xf0, 0x81, 0x13, - 0x90, 0xa7, 0xd7, 0x89, 0xa1, 0x17, 0xce, 0xf5, 0x55, 0xd6, 0x39, 0x5e, 0x59, 0x37, 0x60, 0xc6, - 0x30, 0xdd, 0xe2, 0xd6, 0x35, 0x4b, 0xdb, 0xb1, 0xe3, 0x56, 0x19, 0x29, 0x5d, 0x7f, 0x48, 0xa9, - 0x86, 0x7e, 0x5b, 0x39, 0xa2, 0x72, 0x64, 0x94, 0xff, 0x1f, 0x1c, 0x3d, 0xcf, 0x22, 0x04, 0xd8, - 0x8c, 0xb2, 0x14, 0xed, 0x83, 0xd7, 0x43, 0x79, 0x81, 0xff, 0x73, 0xe5, 0x88, 0xda, 0x4b, 0x4c, - 0xf9, 0x29, 0x98, 0x73, 0x5f, 0xdb, 0xe6, 0x45, 0x8f, 0x71, 0x39, 0xda, 0x10, 0xe9, 0x21, 0xbf, - 0xc6, 0xfd, 0xb8, 0x72, 0x44, 0xed, 0x21, 0xa5, 0xd4, 0x00, 0xb6, 0x9d, 0x9d, 0x0e, 0x23, 0x9c, - 0x8d, 0x56, 0xc9, 0x1e, 0xc2, 0x2b, 0xfe, 0x4f, 0x2b, 0x47, 0xd4, 0x10, 0x09, 0x65, 0x15, 0xa6, - 0x9c, 0x07, 0x1c, 0x46, 0x2f, 0x17, 0xbd, 0xf9, 0xdd, 0x43, 0xaf, 0xe1, 0xfd, 0xb3, 0x72, 0x44, - 0x0d, 0x08, 0x28, 0x15, 0x98, 0xec, 0x9e, 0x67, 0xc4, 0xf2, 0x7d, 0xa2, 0xcd, 0xf7, 0x27, 0xb6, - 0x7e, 0xde, 0xa7, 0xe5, 0xff, 0xee, 0x32, 0xd6, 0xb2, 0xf7, 0x18, 0xad, 0x09, 0x61, 0xc6, 0x4a, - 0xde, 0x3f, 0x2e, 0x63, 0x3e, 0x01, 0xa5, 0x02, 0x53, 0xb6, 0xa1, 0x75, 0xed, 0x6d, 0xd3, 0xb1, - 0x4f, 0x4d, 0xf6, 0xf8, 0x49, 0x46, 0x53, 0xab, 0xb3, 0x7f, 0xd4, 0xe0, 0x6f, 0xe5, 0xc9, 0x70, - 0x62, 0x97, 0x5c, 0xcb, 0x5e, 0x7e, 0x40, 0xb7, 0x1d, 0xdd, 0xd8, 0xf2, 0x62, 0xcc, 0xd2, 0xde, - 0xa6, 0xff, 0x47, 0x65, 0x9e, 0x9d, 0x98, 0x02, 0xd2, 0x36, 0x51, 0xef, 0x66, 0x1d, 0x2d, 0x36, - 0x74, 0x50, 0xea, 0x69, 0x90, 0x75, 0x3f, 0x91, 0xde, 0x69, 0xae, 0xff, 0x42, 0x60, 0xaf, 0xee, - 0x90, 0x06, 0xec, 0xfe, 0xd4, 0xd3, 0xc1, 0xcd, 0xf4, 0x76, 0x70, 0x6e, 0x03, 0xd7, 0xed, 0x35, - 0x7d, 0x8b, 0x5a, 0x57, 0xcc, 0x1f, 0x3e, 0x9c, 0x44, 0x67, 0xa3, 0x55, 0x7c, 0x91, 0xde, 0xa0, - 0x71, 0xd4, 0x9b, 0x8d, 0x7a, 0x29, 0xe8, 0x7a, 0x98, 0x09, 0x37, 0x32, 0x7a, 0x27, 0xa9, 0x1e, - 0xd8, 0x66, 0xec, 0x0d, 0x5d, 0x07, 0x73, 0xbc, 0x4e, 0x87, 0x86, 0x20, 0xd9, 0xeb, 0x0a, 0xd1, - 0xb5, 0x70, 0xb4, 0xa7, 0x61, 0x79, 0x31, 0x47, 0x32, 0x41, 0xcc, 0x91, 0x6b, 0x00, 0x02, 0x2d, - 0xee, 0x4b, 0xe6, 0x6a, 0x98, 0xf2, 0xf5, 0xb2, 0x6f, 0x86, 0x2f, 0x67, 0x60, 0xd2, 0x53, 0xb6, - 0x7e, 0x19, 0xdc, 0xf1, 0xc7, 0x08, 0x6d, 0x30, 0xb0, 0x69, 0x38, 0x97, 0xe6, 0x8e, 0x33, 0x81, - 0x5b, 0x6f, 0x43, 0x77, 0x3a, 0xde, 0xd1, 0xb8, 0xde, 0x64, 0x65, 0x1d, 0x40, 0x27, 0x18, 0x35, - 0x82, 0xb3, 0x72, 0xb7, 0x24, 0x68, 0x0f, 0x54, 0x1f, 0x42, 0x34, 0xce, 0xfc, 0x08, 0x3b, 0xc8, - 0x36, 0x05, 0x39, 0x1a, 0x68, 0xfd, 0x88, 0x32, 0x07, 0x50, 0x7e, 0xc6, 0x7a, 0x59, 0xad, 0x94, - 0xab, 0xa5, 0x72, 0x21, 0x83, 0x5e, 0x22, 0xc1, 0x94, 0xdf, 0x08, 0xfa, 0x56, 0xb2, 0xcc, 0x54, - 0x6b, 0xe0, 0xb5, 0x8f, 0xfb, 0x1b, 0x55, 0x58, 0xc9, 0x9e, 0x0a, 0x97, 0xef, 0xda, 0x78, 0x49, - 0xb7, 0x6c, 0x47, 0x35, 0x2f, 0x2e, 0x99, 0x96, 0x1f, 0x55, 0x99, 0x45, 0x38, 0x8d, 0xfa, 0xec, - 0x5a, 0x1c, 0x6d, 0x4c, 0x0e, 0x4d, 0x61, 0x8b, 0xad, 0x1c, 0x07, 0x09, 0x2e, 0x5d, 0xc7, 0xd2, - 0x0c, 0xbb, 0x6b, 0xda, 0x58, 0x35, 0x2f, 0xda, 0x45, 0xa3, 0x5d, 0x32, 0x3b, 0xbb, 0x3b, 0x86, - 0xcd, 0x6c, 0x86, 0xa8, 0xcf, 0xae, 0x74, 0xc8, 0xa5, 0xae, 0x73, 0x00, 0xa5, 0xda, 0xea, 0x6a, - 0xb9, 0xd4, 0xa8, 0xd4, 0xaa, 0x85, 0x23, 0xae, 0xb4, 0x1a, 0xc5, 0x85, 0x55, 0x57, 0x3a, 0x3f, - 0x0d, 0x93, 0x5e, 0x9b, 0x66, 0x61, 0x52, 0x32, 0x5e, 0x98, 0x14, 0xa5, 0x08, 0x93, 0x5e, 0x2b, - 0x67, 0x23, 0xc2, 0x63, 0x7b, 0x8f, 0xc5, 0xee, 0x68, 0x96, 0x43, 0xfc, 0xa9, 0x3d, 0x22, 0x0b, - 0x9a, 0x8d, 0x55, 0xff, 0xb7, 0x33, 0x4f, 0x60, 0x1c, 0x28, 0x30, 0x57, 0x5c, 0x5d, 0x6d, 0xd6, - 0xd4, 0x66, 0xb5, 0xd6, 0x58, 0xa9, 0x54, 0x97, 0xe9, 0x08, 0x59, 0x59, 0xae, 0xd6, 0xd4, 0x32, - 0x1d, 0x20, 0xeb, 0x85, 0x0c, 0xbd, 0x54, 0x78, 0x61, 0x12, 0xf2, 0x5d, 0x22, 0x5d, 0xf4, 0x05, - 0x39, 0xe1, 0x79, 0x78, 0x1f, 0xa7, 0x88, 0x6b, 0x4f, 0x39, 0x9f, 0x74, 0xa9, 0xcf, 0x99, 0xd1, - 0x33, 0x30, 0x43, 0x6d, 0x3d, 0x9b, 0x2c, 0xef, 0x13, 0xe4, 0x64, 0x95, 0x4b, 0x43, 0x1f, 0x92, - 0x12, 0x1c, 0x92, 0xef, 0xcb, 0x51, 0x32, 0xe3, 0xe2, 0xcf, 0x33, 0xc3, 0x5d, 0x4b, 0x50, 0xa9, - 0x36, 0xca, 0x6a, 0xb5, 0xb8, 0xca, 0xb2, 0xc8, 0xca, 0x29, 0x38, 0x5e, 0xad, 0xb1, 0x98, 0x7f, - 0xf5, 0x66, 0xa3, 0xd6, 0xac, 0xac, 0xad, 0xd7, 0xd4, 0x46, 0x21, 0xa7, 0x9c, 0x04, 0x85, 0x3e, - 0x37, 0x2b, 0xf5, 0x66, 0xa9, 0x58, 0x2d, 0x95, 0x57, 0xcb, 0x8b, 0x85, 0xbc, 0xf2, 0x38, 0xb8, - 0x96, 0x5e, 0x73, 0x53, 0x5b, 0x6a, 0xaa, 0xb5, 0x73, 0x75, 0x17, 0x41, 0xb5, 0xbc, 0x5a, 0x74, - 0x15, 0x29, 0x74, 0xb9, 0xf0, 0x84, 0x72, 0x19, 0x1c, 0x25, 0x17, 0x87, 0xaf, 0xd6, 0x8a, 0x8b, - 0xac, 0xbc, 0x49, 0xe5, 0x2a, 0x38, 0x55, 0xa9, 0xd6, 0x37, 0x96, 0x96, 0x2a, 0xa5, 0x4a, 0xb9, - 0xda, 0x68, 0xae, 0x97, 0xd5, 0xb5, 0x4a, 0xbd, 0xee, 0xfe, 0x5b, 0x98, 0x22, 0x57, 0xb7, 0xd2, - 0x3e, 0x13, 0xbd, 0x4b, 0x86, 0xd9, 0xb3, 0x5a, 0x47, 0x77, 0x07, 0x0a, 0x72, 0xa7, 0x73, 0xcf, - 0x71, 0x12, 0x87, 0xdc, 0xfd, 0xcc, 0x1c, 0xd2, 0xc9, 0x0b, 0xfa, 0x79, 0x39, 0xe1, 0x71, 0x12, - 0x06, 0x04, 0x2d, 0x71, 0x9e, 0x2b, 0x2d, 0x62, 0xf2, 0xf3, 0x2a, 0x29, 0xc1, 0x71, 0x12, 0x71, - 0xf2, 0xc9, 0xc0, 0x7f, 0xe9, 0xa8, 0xc0, 0x2f, 0xc0, 0xcc, 0x46, 0xb5, 0xb8, 0xd1, 0x58, 0xa9, - 0xa9, 0x95, 0x9f, 0x24, 0xd1, 0xc8, 0x67, 0x61, 0x6a, 0xa9, 0xa6, 0x2e, 0x54, 0x16, 0x17, 0xcb, - 0xd5, 0x42, 0x4e, 0xb9, 0x1c, 0x2e, 0xab, 0x97, 0xd5, 0xb3, 0x95, 0x52, 0xb9, 0xb9, 0x51, 0x2d, - 0x9e, 0x2d, 0x56, 0x56, 0x49, 0x1f, 0x91, 0x8f, 0xb9, 0x8f, 0x7a, 0x02, 0xfd, 0x6c, 0x16, 0x80, - 0x56, 0x9d, 0x5c, 0xc6, 0x13, 0xba, 0xb5, 0xf8, 0x2f, 0x92, 0x4e, 0x1a, 0x02, 0x32, 0x11, 0xed, - 0xb7, 0x02, 0x93, 0x16, 0xfb, 0xc0, 0x96, 0x57, 0x06, 0xd1, 0xa1, 0x8f, 0x1e, 0x35, 0xd5, 0xff, - 0x1d, 0xbd, 0x3b, 0xc9, 0x1c, 0x21, 0x92, 0xb1, 0x64, 0x48, 0x2e, 0x8d, 0x06, 0x48, 0xf4, 0x50, - 0x06, 0xe6, 0xf8, 0x8a, 0xb9, 0x95, 0x20, 0xc6, 0x94, 0x58, 0x25, 0xf8, 0x9f, 0x43, 0x46, 0xd6, - 0x99, 0x27, 0xb1, 0xe1, 0x14, 0xbc, 0x96, 0x49, 0x4f, 0x86, 0x7b, 0x16, 0x4b, 0x21, 0xe3, 0x32, - 0xef, 0x1a, 0x1d, 0x05, 0x49, 0x99, 0x00, 0xb9, 0xf1, 0x80, 0x53, 0x90, 0xd1, 0x97, 0x65, 0x98, - 0xe5, 0xae, 0x45, 0x46, 0xaf, 0xca, 0x88, 0x5c, 0x59, 0x1a, 0xba, 0x70, 0x39, 0x73, 0xd0, 0x0b, - 0x97, 0xcf, 0xdc, 0x0c, 0x13, 0x2c, 0x8d, 0xc8, 0xb7, 0x56, 0x75, 0x4d, 0x81, 0xa3, 0x30, 0xbd, - 0x5c, 0x6e, 0x34, 0xeb, 0x8d, 0xa2, 0xda, 0x28, 0x2f, 0x16, 0x32, 0xee, 0xc0, 0x57, 0x5e, 0x5b, - 0x6f, 0xdc, 0x57, 0x90, 0x92, 0x7b, 0xe8, 0xf5, 0x32, 0x32, 0x66, 0x0f, 0xbd, 0xb8, 0xe2, 0xd3, - 0x9f, 0xab, 0x7e, 0x4a, 0x86, 0x02, 0xe5, 0xa0, 0xfc, 0x40, 0x17, 0x5b, 0x3a, 0x36, 0x5a, 0x18, - 0x5d, 0x10, 0x89, 0x08, 0xba, 0x2f, 0x56, 0x1e, 0xe9, 0xcf, 0x43, 0x56, 0x22, 0x7d, 0xe9, 0x31, - 0xb0, 0xb3, 0xfb, 0x0c, 0xec, 0x4f, 0x26, 0x75, 0xd1, 0xeb, 0x65, 0x77, 0x24, 0x90, 0x7d, 0x2c, - 0x89, 0x8b, 0xde, 0x00, 0x0e, 0xc6, 0x12, 0xe8, 0x37, 0x62, 0xfc, 0x2d, 0xc8, 0xe8, 0x79, 0x32, - 0x1c, 0x5d, 0xd4, 0x1c, 0xbc, 0x70, 0xa9, 0xe1, 0x5d, 0x5b, 0x18, 0x71, 0xd5, 0x70, 0x66, 0xdf, - 0x55, 0xc3, 0xc1, 0xcd, 0x87, 0x52, 0xcf, 0xcd, 0x87, 0xe8, 0xed, 0x49, 0x0f, 0xf5, 0xf5, 0xf0, - 0x30, 0xb2, 0x68, 0xbc, 0xc9, 0x0e, 0xeb, 0xc5, 0x73, 0x31, 0x86, 0x9b, 0xff, 0xa7, 0xa0, 0x40, - 0x59, 0x09, 0x79, 0xa1, 0xfd, 0x3a, 0xbb, 0x9d, 0xbb, 0x99, 0x20, 0xe8, 0x9f, 0x17, 0x46, 0x41, - 0xe2, 0xc3, 0x28, 0x70, 0x8b, 0x9a, 0x72, 0xaf, 0xe7, 0x40, 0xd2, 0xce, 0x30, 0xe4, 0x72, 0x16, - 0x1d, 0x67, 0x35, 0xbd, 0xce, 0x30, 0xb6, 0xf8, 0xf1, 0xdc, 0x20, 0xcb, 0xee, 0x79, 0x2c, 0x8b, - 0x22, 0x13, 0x7f, 0x51, 0x76, 0x52, 0xff, 0x63, 0xce, 0xe5, 0x2f, 0xe6, 0xf6, 0xe8, 0xf4, 0xfc, - 0x8f, 0x07, 0x71, 0x90, 0x3e, 0x0a, 0xdf, 0x93, 0x20, 0x5b, 0x37, 0x2d, 0x67, 0x54, 0x18, 0x24, - 0xdd, 0x33, 0x0d, 0x49, 0xa0, 0x1e, 0x3d, 0xe7, 0x4c, 0x6f, 0xcf, 0x34, 0xbe, 0xfc, 0x31, 0xc4, - 0x4d, 0x3c, 0x0a, 0x73, 0x94, 0x13, 0xff, 0x52, 0x91, 0xef, 0x4a, 0xb4, 0xbf, 0xba, 0x57, 0x14, - 0x91, 0x33, 0x30, 0x13, 0xda, 0xb3, 0xf4, 0x40, 0xe1, 0xd2, 0xd0, 0xeb, 0xc2, 0xb8, 0x2c, 0xf2, - 0xb8, 0xf4, 0x9b, 0x71, 0xfb, 0xf7, 0x72, 0x8c, 0xaa, 0x67, 0x4a, 0x12, 0x82, 0x31, 0xa6, 0xf0, - 0xf4, 0x11, 0x79, 0x50, 0x86, 0x3c, 0xf3, 0x19, 0x1b, 0x29, 0x02, 0x49, 0x5b, 0x86, 0x2f, 0x04, - 0x31, 0xdf, 0x32, 0x79, 0xd4, 0x2d, 0x23, 0xbe, 0xfc, 0xf4, 0x71, 0xf8, 0x3e, 0x73, 0x86, 0x2c, - 0xee, 0x69, 0x7a, 0x47, 0x3b, 0xdf, 0x49, 0x10, 0xfa, 0xf8, 0x43, 0x09, 0x8f, 0x7f, 0xf9, 0x55, - 0xe5, 0xca, 0x8b, 0x90, 0xf8, 0x8f, 0xc1, 0x94, 0xe5, 0x2f, 0x49, 0x7a, 0xa7, 0xe3, 0x7b, 0x1c, - 0x51, 0xd9, 0x77, 0x35, 0xc8, 0x99, 0xe8, 0xac, 0x97, 0x10, 0x3f, 0x63, 0x39, 0x9b, 0x32, 0x5d, - 0x6c, 0xb7, 0x97, 0xb0, 0xe6, 0xec, 0x5a, 0xb8, 0x9d, 0x68, 0x88, 0xe0, 0x45, 0x34, 0x15, 0x96, - 0x04, 0x17, 0x7c, 0x70, 0x95, 0x47, 0xe7, 0x29, 0x03, 0x7a, 0x03, 0x8f, 0x97, 0x91, 0x74, 0x49, - 0x6f, 0xf2, 0x21, 0xa9, 0x71, 0x90, 0x3c, 0x6d, 0x38, 0x26, 0xd2, 0x07, 0xe4, 0x37, 0x65, 0x98, - 0xa3, 0x76, 0xc2, 0xa8, 0x31, 0xf9, 0x83, 0x84, 0x3e, 0x26, 0xa1, 0x6b, 0x9b, 0xc2, 0xec, 0x8c, - 0x04, 0x96, 0x24, 0x1e, 0x29, 0x62, 0x7c, 0xa4, 0x8f, 0xcc, 0x67, 0xf2, 0x00, 0x21, 0xbf, 0xc1, - 0x0f, 0xe5, 0x83, 0x40, 0x80, 0xe8, 0x2d, 0x6c, 0xfe, 0x51, 0xe7, 0xa2, 0x52, 0x87, 0x7c, 0x02, - 0xfd, 0x0d, 0x29, 0x3e, 0x51, 0x68, 0x54, 0xf9, 0xf3, 0x84, 0x36, 0x2f, 0xf3, 0xda, 0x1b, 0x38, - 0xb8, 0x0f, 0xd9, 0xcb, 0x7d, 0x38, 0x81, 0xf1, 0x3b, 0x88, 0x95, 0x64, 0xa8, 0xad, 0x0e, 0x31, - 0xb3, 0x3f, 0x05, 0xc7, 0xd5, 0x72, 0x71, 0xb1, 0x56, 0x5d, 0xbd, 0x2f, 0x7c, 0x87, 0x4f, 0x41, - 0x0e, 0x4f, 0x4e, 0x52, 0x81, 0xed, 0xd5, 0x09, 0xfb, 0x40, 0x5e, 0x56, 0xb1, 0x37, 0xd4, 0x7f, - 0x2c, 0x41, 0xaf, 0x26, 0x40, 0xf6, 0x30, 0x51, 0x78, 0x10, 0x42, 0xcd, 0xe8, 0x17, 0x65, 0x28, - 0xb8, 0xe3, 0x21, 0xe5, 0x92, 0x5d, 0xd6, 0x56, 0xe3, 0xdd, 0x0a, 0xbb, 0x74, 0xff, 0x29, 0x70, - 0x2b, 0xf4, 0x12, 0x94, 0xeb, 0x61, 0xae, 0xb5, 0x8d, 0x5b, 0x17, 0x2a, 0x86, 0xb7, 0xaf, 0x4e, - 0x37, 0x61, 0x7b, 0x52, 0x79, 0x60, 0xee, 0xe5, 0x81, 0xe1, 0x27, 0xd1, 0xdc, 0x20, 0x1d, 0x66, - 0x2a, 0x02, 0x97, 0x3f, 0xf2, 0x71, 0xa9, 0x72, 0xb8, 0xdc, 0x3e, 0x14, 0xd5, 0x64, 0xb0, 0x54, - 0x87, 0x80, 0x05, 0xc1, 0xc9, 0xda, 0x7a, 0xa3, 0x52, 0xab, 0x36, 0x37, 0xea, 0xe5, 0xc5, 0xe6, - 0x82, 0x07, 0x4e, 0xbd, 0x20, 0xa3, 0xaf, 0x4b, 0x30, 0x41, 0xd9, 0xb2, 0xd1, 0xe3, 0x03, 0x08, - 0x06, 0xfa, 0x53, 0xa2, 0x37, 0x0b, 0x47, 0x47, 0xf0, 0x05, 0xc1, 0xca, 0x89, 0xe8, 0xa7, 0x9e, - 0x0a, 0x13, 0x14, 0x64, 0x6f, 0x45, 0xeb, 0x74, 0x44, 0x2f, 0xc5, 0xc8, 0xa8, 0x5e, 0x76, 0xc1, - 0x48, 0x09, 0x03, 0xd8, 0x48, 0x7f, 0x64, 0x79, 0x56, 0x96, 0x9a, 0xc1, 0xe7, 0x74, 0x67, 0x9b, - 0xb8, 0x5b, 0xa2, 0x9f, 0x10, 0x59, 0x5e, 0xbc, 0x09, 0x72, 0x7b, 0x6e, 0xee, 0x01, 0xae, 0xab, - 0x34, 0x13, 0x7a, 0xa9, 0x70, 0x60, 0x4e, 0x4e, 0x3f, 0x7d, 0x9e, 0x22, 0xc0, 0x59, 0x83, 0x6c, - 0x47, 0xb7, 0x1d, 0x36, 0x7e, 0xdc, 0x96, 0x88, 0x90, 0xf7, 0x50, 0x71, 0xf0, 0x8e, 0x4a, 0xc8, - 0xa0, 0x7b, 0x60, 0x26, 0x9c, 0x2a, 0xe0, 0xbe, 0x7b, 0x0a, 0x26, 0xd8, 0xb1, 0x32, 0xb6, 0xc4, - 0xea, 0xbd, 0x0a, 0x2e, 0x6b, 0x0a, 0xd5, 0x36, 0x7d, 0x1d, 0xf8, 0xbf, 0x8f, 0xc2, 0xc4, 0x8a, - 0x6e, 0x3b, 0xa6, 0x75, 0x09, 0x3d, 0x92, 0x81, 0x89, 0xb3, 0xd8, 0xb2, 0x75, 0xd3, 0xd8, 0xe7, - 0x6a, 0x70, 0x0d, 0x4c, 0x77, 0x2d, 0xbc, 0xa7, 0x9b, 0xbb, 0x76, 0xb0, 0x38, 0x13, 0x4e, 0x52, - 0x10, 0x4c, 0x6a, 0xbb, 0xce, 0xb6, 0x69, 0x05, 0xd1, 0x28, 0xbc, 0x77, 0xe5, 0x34, 0x00, 0x7d, - 0xae, 0x6a, 0x3b, 0x98, 0x39, 0x50, 0x84, 0x52, 0x14, 0x05, 0xb2, 0x8e, 0xbe, 0x83, 0x59, 0x78, - 0x5a, 0xf2, 0xec, 0x0a, 0x98, 0x84, 0x7a, 0x63, 0x21, 0xf5, 0x64, 0xd5, 0x7b, 0x45, 0x9f, 0x93, - 0x61, 0x7a, 0x19, 0x3b, 0x8c, 0x55, 0x1b, 0x3d, 0x3f, 0x23, 0x74, 0x23, 0x84, 0x3b, 0xc6, 0x76, - 0x34, 0xdb, 0xfb, 0xcf, 0x5f, 0x82, 0xe5, 0x13, 0x83, 0x58, 0xb9, 0x72, 0x38, 0x50, 0x36, 0x09, - 0x9c, 0xe6, 0x54, 0xa8, 0x5f, 0x26, 0xcb, 0xcc, 0x36, 0x41, 0xf6, 0x7f, 0x40, 0xef, 0x90, 0x44, - 0x0f, 0x1d, 0x33, 0xd9, 0xcf, 0x87, 0xea, 0x13, 0xd9, 0x1d, 0x4d, 0xee, 0xb1, 0x1c, 0xfb, 0x62, - 0xa0, 0x87, 0x29, 0x31, 0x32, 0xaa, 0x9f, 0x5b, 0xf0, 0xb8, 0xf2, 0x60, 0x4e, 0xd2, 0xd7, 0xc6, - 0x6f, 0xcb, 0x30, 0x5d, 0xdf, 0x36, 0x2f, 0x7a, 0x72, 0xfc, 0x69, 0x31, 0x60, 0xaf, 0x82, 0xa9, - 0xbd, 0x1e, 0x50, 0x83, 0x84, 0xe8, 0x3b, 0xda, 0xd1, 0x73, 0xe5, 0xa4, 0x30, 0x85, 0x98, 0x1b, - 0xf9, 0x0d, 0xea, 0xca, 0x53, 0x60, 0x82, 0x71, 0xcd, 0x96, 0x5c, 0xe2, 0x01, 0xf6, 0x32, 0x87, - 0x2b, 0x98, 0xe5, 0x2b, 0x98, 0x0c, 0xf9, 0xe8, 0xca, 0xa5, 0x8f, 0xfc, 0x9f, 0x48, 0x24, 0x58, - 0x85, 0x07, 0x7c, 0x69, 0x04, 0xc0, 0xa3, 0xef, 0x64, 0x44, 0x17, 0x26, 0x7d, 0x09, 0xf8, 0x1c, - 0x1c, 0xe8, 0xb6, 0x97, 0x81, 0xe4, 0xd2, 0x97, 0xe7, 0x4b, 0xb2, 0x30, 0xb3, 0xa8, 0x6f, 0x6e, - 0xfa, 0x9d, 0xe4, 0xaf, 0x0a, 0x76, 0x92, 0xd1, 0xee, 0x00, 0xae, 0x9d, 0xbb, 0x6b, 0x59, 0xd8, - 0xf0, 0x2a, 0xc5, 0x9a, 0x53, 0x4f, 0xaa, 0x72, 0x03, 0x1c, 0xf5, 0xc6, 0x85, 0x70, 0x47, 0x39, - 0xa5, 0xf6, 0x26, 0xa3, 0x6f, 0x09, 0xef, 0x6a, 0x79, 0x12, 0x0d, 0x57, 0x29, 0xa2, 0x01, 0xde, - 0x01, 0xb3, 0xdb, 0x34, 0x37, 0x99, 0xfa, 0x7b, 0x9d, 0xe5, 0xc9, 0x9e, 0x60, 0xc0, 0x6b, 0xd8, - 0xb6, 0xb5, 0x2d, 0xac, 0xf2, 0x99, 0x7b, 0x9a, 0xaf, 0x9c, 0xe4, 0x6a, 0x2b, 0xb1, 0x0d, 0x32, - 0x81, 0x9a, 0x8c, 0x41, 0x3b, 0xce, 0x40, 0x76, 0x49, 0xef, 0x60, 0xf4, 0x4b, 0x12, 0x4c, 0xa9, - 0xb8, 0x65, 0x1a, 0x2d, 0xf7, 0x2d, 0xe4, 0x1c, 0xf4, 0x4f, 0x19, 0xd1, 0x2b, 0x1d, 0x5d, 0x3a, - 0xf3, 0x3e, 0x8d, 0x88, 0x76, 0x23, 0x76, 0x75, 0x63, 0x2c, 0xa9, 0x31, 0x5c, 0xc0, 0xe1, 0x4e, - 0x3d, 0x36, 0x37, 0x3b, 0xa6, 0xc6, 0x2d, 0x7e, 0xf5, 0x9a, 0x42, 0x37, 0x42, 0xc1, 0x3b, 0x03, - 0x62, 0x3a, 0xeb, 0xba, 0x61, 0xf8, 0x87, 0x8c, 0xf7, 0xa5, 0xf3, 0xfb, 0xb6, 0xb1, 0x71, 0x5a, - 0x48, 0xdd, 0x59, 0xe9, 0x11, 0x9a, 0x7d, 0x3d, 0xcc, 0x9d, 0xbf, 0xe4, 0x60, 0x9b, 0xe5, 0x62, - 0xc5, 0x66, 0xd5, 0x9e, 0xd4, 0x50, 0x94, 0xe5, 0xb8, 0x78, 0x2e, 0x31, 0x05, 0x26, 0x13, 0xf5, - 0xca, 0x10, 0x33, 0xc0, 0xe3, 0x50, 0xa8, 0xd6, 0x16, 0xcb, 0xc4, 0x57, 0xcd, 0xf3, 0xfe, 0xd9, - 0x42, 0x2f, 0x90, 0x61, 0x86, 0x38, 0x93, 0x78, 0x28, 0x5c, 0x2b, 0x30, 0x1f, 0x41, 0x5f, 0x14, - 0xf6, 0x63, 0x23, 0x55, 0x0e, 0x17, 0x10, 0x2d, 0xe8, 0x4d, 0xbd, 0xd3, 0x2b, 0xe8, 0x9c, 0xda, - 0x93, 0xda, 0x07, 0x10, 0xb9, 0x2f, 0x20, 0xbf, 0x27, 0xe4, 0xcc, 0x36, 0x88, 0xbb, 0xc3, 0x42, - 0xe5, 0xf7, 0x65, 0x98, 0x76, 0x27, 0x29, 0x1e, 0x28, 0x35, 0x0e, 0x14, 0xd3, 0xe8, 0x5c, 0x0a, - 0x96, 0x45, 0xbc, 0xd7, 0x44, 0x8d, 0xe4, 0xaf, 0x84, 0x67, 0xee, 0x44, 0x44, 0x21, 0x5e, 0xc6, - 0x84, 0xdf, 0x7b, 0x84, 0xe6, 0xf3, 0x03, 0x98, 0x3b, 0x2c, 0xf8, 0xbe, 0x9a, 0x83, 0xfc, 0x46, - 0x97, 0x20, 0xf7, 0x52, 0x59, 0x24, 0x62, 0xf9, 0xbe, 0x83, 0x0c, 0xae, 0x99, 0xd5, 0x31, 0x5b, - 0x5a, 0x67, 0x3d, 0x38, 0x11, 0x16, 0x24, 0x28, 0xb7, 0x33, 0xdf, 0x46, 0x7a, 0xdc, 0xee, 0xfa, - 0xd8, 0x60, 0xde, 0x44, 0x46, 0xa1, 0x43, 0x23, 0x37, 0xc1, 0xb1, 0xb6, 0x6e, 0x6b, 0xe7, 0x3b, - 0xb8, 0x6c, 0xb4, 0xac, 0x4b, 0x54, 0x1c, 0x6c, 0x5a, 0xb5, 0xef, 0x83, 0x72, 0x27, 0xe4, 0x6c, - 0xe7, 0x52, 0x87, 0xce, 0x13, 0xc3, 0x67, 0x4c, 0x22, 0x8b, 0xaa, 0xbb, 0xd9, 0x55, 0xfa, 0x57, - 0xd8, 0x45, 0x69, 0x42, 0xf0, 0x3e, 0xe7, 0x27, 0x41, 0xde, 0xb4, 0xf4, 0x2d, 0x9d, 0xde, 0xcf, - 0x33, 0xb7, 0x2f, 0x66, 0x1d, 0x35, 0x05, 0x6a, 0x24, 0x8b, 0xca, 0xb2, 0x2a, 0x4f, 0x81, 0x29, - 0x7d, 0x47, 0xdb, 0xc2, 0xf7, 0xea, 0x06, 0x3d, 0xd1, 0x37, 0x77, 0xeb, 0xa9, 0x7d, 0xc7, 0x67, - 0xd8, 0x77, 0x35, 0xc8, 0x8a, 0xde, 0x23, 0x89, 0x06, 0xd6, 0x21, 0x75, 0xa3, 0xa0, 0x8e, 0xe5, - 0x5e, 0x6b, 0xf4, 0x0a, 0xa1, 0x90, 0x37, 0xd1, 0x6c, 0xa5, 0x3f, 0x78, 0x7f, 0x56, 0x82, 0xc9, - 0x45, 0xf3, 0xa2, 0x41, 0x14, 0xfd, 0x36, 0x31, 0x5b, 0xb7, 0xcf, 0x21, 0x47, 0xfe, 0xda, 0xc8, - 0xd8, 0x13, 0x0d, 0xa4, 0xb6, 0x5e, 0x91, 0x11, 0x30, 0xc4, 0xb6, 0x1c, 0xc1, 0xcb, 0xfc, 0xe2, - 0xca, 0x49, 0x5f, 0xae, 0x7f, 0x2a, 0x43, 0x76, 0xd1, 0x32, 0xbb, 0xe8, 0x4d, 0x99, 0x04, 0x2e, - 0x0b, 0x6d, 0xcb, 0xec, 0x36, 0xc8, 0x6d, 0x5c, 0xc1, 0x31, 0x8e, 0x70, 0x9a, 0x72, 0x1b, 0x4c, - 0x76, 0x4d, 0x5b, 0x77, 0xbc, 0x69, 0xc4, 0xdc, 0xad, 0x8f, 0xe9, 0xdb, 0x9a, 0xd7, 0x59, 0x26, - 0xd5, 0xcf, 0xee, 0xf6, 0xda, 0x44, 0x84, 0xae, 0x5c, 0x5c, 0x31, 0x7a, 0x37, 0x92, 0xf5, 0xa4, - 0xa2, 0x17, 0x86, 0x91, 0x7c, 0x1a, 0x8f, 0xe4, 0x63, 0xfb, 0x48, 0xd8, 0x32, 0xbb, 0x23, 0xd9, - 0x64, 0x7c, 0x99, 0x8f, 0xea, 0xd3, 0x39, 0x54, 0x6f, 0x14, 0x2a, 0x33, 0x7d, 0x44, 0xdf, 0x93, - 0x05, 0x20, 0x66, 0xc6, 0x86, 0x3b, 0x01, 0x12, 0xb3, 0xb1, 0x7e, 0x21, 0x1b, 0x92, 0x65, 0x91, - 0x97, 0xe5, 0xe3, 0x23, 0xac, 0x18, 0x42, 0x3e, 0x42, 0xa2, 0x45, 0xc8, 0xed, 0xba, 0x9f, 0x99, - 0x44, 0x05, 0x49, 0x90, 0x57, 0x95, 0xfe, 0x89, 0xfe, 0x24, 0x03, 0x39, 0x92, 0xa0, 0x9c, 0x06, - 0x20, 0x03, 0x3b, 0x3d, 0x10, 0x94, 0x21, 0x43, 0x78, 0x28, 0x85, 0x68, 0xab, 0xde, 0x66, 0x9f, - 0xa9, 0xc9, 0x1c, 0x24, 0xb8, 0x7f, 0x93, 0xe1, 0x9e, 0xd0, 0x62, 0x06, 0x40, 0x28, 0xc5, 0xfd, - 0x9b, 0xbc, 0xad, 0xe2, 0x4d, 0x1a, 0x28, 0x39, 0xab, 0x06, 0x09, 0xfe, 0xdf, 0xab, 0xfe, 0xf5, - 0x5a, 0xde, 0xdf, 0x24, 0xc5, 0x9d, 0x0c, 0x13, 0xb5, 0x5c, 0x08, 0x8a, 0xc8, 0x93, 0x4c, 0xbd, - 0xc9, 0xe8, 0xd5, 0xbe, 0xda, 0x2c, 0x72, 0x6a, 0x73, 0x4b, 0x02, 0xf1, 0xa6, 0xaf, 0x3c, 0x5f, - 0xce, 0xc1, 0x54, 0xd5, 0x6c, 0x33, 0xdd, 0x09, 0x4d, 0x18, 0x3f, 0x96, 0x4b, 0x34, 0x61, 0xf4, - 0x69, 0x44, 0x28, 0xc8, 0xdd, 0xbc, 0x82, 0x88, 0x51, 0x08, 0xeb, 0x87, 0xb2, 0x00, 0x79, 0xa2, - 0xbd, 0xfb, 0xef, 0x6d, 0x8a, 0x23, 0x41, 0x44, 0xab, 0xb2, 0x3f, 0xff, 0xc3, 0xe9, 0xd8, 0x7f, - 0x85, 0x1c, 0xa9, 0x60, 0xcc, 0xee, 0x0e, 0x5f, 0x51, 0x29, 0xbe, 0xa2, 0x72, 0x7c, 0x45, 0xb3, - 0xbd, 0x15, 0x4d, 0xb2, 0x0e, 0x10, 0xa5, 0x21, 0xe9, 0xeb, 0xf8, 0x3f, 0x4e, 0x00, 0x54, 0xb5, - 0x3d, 0x7d, 0x8b, 0xee, 0x0e, 0x7f, 0xce, 0x9b, 0xff, 0xb0, 0x7d, 0xdc, 0xff, 0x16, 0x1a, 0x08, - 0x6f, 0x83, 0x09, 0x36, 0xee, 0xb1, 0x8a, 0x5c, 0xcd, 0x55, 0x24, 0xa0, 0x42, 0xcd, 0xd2, 0x07, - 0x1c, 0xd5, 0xcb, 0xcf, 0x5d, 0x31, 0x2b, 0xf5, 0x5c, 0x31, 0xdb, 0x7f, 0x0f, 0x22, 0xe2, 0xe2, - 0x59, 0xf4, 0x4e, 0x61, 0x8f, 0xfe, 0x10, 0x3f, 0xa1, 0x1a, 0x45, 0x34, 0xc1, 0x27, 0xc1, 0x84, - 0xe9, 0x6f, 0x68, 0xcb, 0x91, 0xeb, 0x60, 0x15, 0x63, 0xd3, 0x54, 0xbd, 0x9c, 0x82, 0x9b, 0x5f, - 0x42, 0x7c, 0x8c, 0xe5, 0xd0, 0xcc, 0xc9, 0x65, 0x2f, 0xe8, 0x94, 0x5b, 0x8f, 0x73, 0xba, 0xb3, - 0xbd, 0xaa, 0x1b, 0x17, 0x6c, 0xf4, 0x9f, 0xc5, 0x2c, 0xc8, 0x10, 0xfe, 0x52, 0x32, 0xfc, 0xf9, - 0x98, 0x1d, 0x75, 0x1e, 0xb5, 0x3b, 0xa3, 0xa8, 0xf4, 0xe7, 0x36, 0x02, 0xc0, 0xdb, 0x21, 0x4f, - 0x19, 0x65, 0x9d, 0xe8, 0x99, 0x48, 0xfc, 0x7c, 0x4a, 0x2a, 0xfb, 0x03, 0xbd, 0xc3, 0xc7, 0xf1, - 0x2c, 0x87, 0xe3, 0xc2, 0x81, 0x38, 0x4b, 0x1d, 0xd2, 0x33, 0x4f, 0x84, 0x09, 0x26, 0x69, 0x65, - 0x2e, 0xdc, 0x8a, 0x0b, 0x47, 0x14, 0x80, 0xfc, 0x9a, 0xb9, 0x87, 0x1b, 0x66, 0x21, 0xe3, 0x3e, - 0xbb, 0xfc, 0x35, 0xcc, 0x82, 0x84, 0x5e, 0x3e, 0x09, 0x93, 0x7e, 0xb4, 0x9f, 0xcf, 0x4a, 0x50, - 0x28, 0x59, 0x58, 0x73, 0xf0, 0x92, 0x65, 0xee, 0xd0, 0x1a, 0x89, 0x7b, 0x87, 0xfe, 0xa6, 0xb0, - 0x8b, 0x87, 0x1f, 0x85, 0xa7, 0xb7, 0xb0, 0x08, 0x2c, 0xe9, 0x22, 0xa4, 0xe4, 0x2d, 0x42, 0xa2, - 0x37, 0x0a, 0xb9, 0x7c, 0x88, 0x96, 0x92, 0x7e, 0x53, 0xfb, 0xa4, 0x04, 0xb9, 0x52, 0xc7, 0x34, - 0x70, 0xf8, 0x08, 0xd3, 0xc0, 0xb3, 0x32, 0xfd, 0x77, 0x22, 0xd0, 0xb3, 0x24, 0x51, 0x5b, 0x23, - 0x10, 0x80, 0x5b, 0xb6, 0xa0, 0x6c, 0xc5, 0x06, 0xa9, 0x58, 0xd2, 0xe9, 0x0b, 0xf4, 0xeb, 0x12, - 0x4c, 0xd1, 0xb8, 0x38, 0xc5, 0x4e, 0x07, 0x3d, 0x26, 0x10, 0x6a, 0x9f, 0x88, 0x49, 0xe8, 0xf7, - 0x84, 0x5d, 0xf4, 0xfd, 0x5a, 0xf9, 0xb4, 0x13, 0x04, 0x08, 0x4a, 0xe6, 0x31, 0x2e, 0xb6, 0x97, - 0x36, 0x90, 0xa1, 0xf4, 0x45, 0xfd, 0x17, 0x92, 0x6b, 0x00, 0x18, 0x17, 0xd6, 0x2d, 0xbc, 0xa7, - 0xe3, 0x8b, 0xe8, 0xca, 0x40, 0xd8, 0xfb, 0x83, 0x7e, 0xbc, 0x5e, 0x78, 0x11, 0x27, 0x44, 0x32, - 0x72, 0x2b, 0x6b, 0xba, 0x13, 0x64, 0x62, 0xbd, 0x78, 0x6f, 0x24, 0x96, 0x10, 0x19, 0x35, 0x9c, - 0x5d, 0x70, 0xcd, 0x26, 0x9a, 0x8b, 0xf4, 0x05, 0xfb, 0xfe, 0x09, 0x98, 0xdc, 0x30, 0xec, 0x6e, - 0x47, 0xb3, 0xb7, 0xd1, 0x77, 0x65, 0xc8, 0xd3, 0xdb, 0xc2, 0xd0, 0x8f, 0x71, 0xb1, 0x05, 0x7e, - 0x66, 0x17, 0x5b, 0x9e, 0x0b, 0x0e, 0x7d, 0xe9, 0x7f, 0x99, 0x39, 0x7a, 0x8f, 0x2c, 0x3a, 0x49, - 0xf5, 0x0a, 0x0d, 0x5d, 0x1b, 0xdf, 0xff, 0x38, 0x7b, 0x57, 0x6f, 0x39, 0xbb, 0x96, 0x7f, 0x35, - 0xf6, 0x13, 0xc4, 0xa8, 0xac, 0xd3, 0xbf, 0x54, 0xff, 0x77, 0xa4, 0xc1, 0x04, 0x4b, 0xdc, 0xb7, - 0x9d, 0xb4, 0xff, 0xfc, 0xed, 0x49, 0xc8, 0x6b, 0x96, 0xa3, 0xdb, 0x0e, 0xdb, 0x60, 0x65, 0x6f, - 0x6e, 0x77, 0x49, 0x9f, 0x36, 0xac, 0x8e, 0x17, 0x85, 0xc4, 0x4f, 0x40, 0xbf, 0x2f, 0x34, 0x7f, - 0x8c, 0xaf, 0x79, 0x32, 0xc8, 0xef, 0x1d, 0x62, 0x8d, 0xfa, 0x72, 0xb8, 0x4c, 0x2d, 0x36, 0xca, - 0x4d, 0x1a, 0xb4, 0xc2, 0x8f, 0x4f, 0xd1, 0x46, 0x6f, 0x97, 0x43, 0xeb, 0x77, 0x97, 0xb8, 0x31, - 0x82, 0x49, 0x31, 0x18, 0x23, 0xfc, 0x84, 0x98, 0xdd, 0x6a, 0x6e, 0x11, 0x56, 0x16, 0x5f, 0x84, - 0xfd, 0x1d, 0xe1, 0xdd, 0x24, 0x5f, 0x94, 0x03, 0xd6, 0x00, 0xe3, 0x6e, 0x13, 0x7a, 0xaf, 0xd0, - 0xce, 0xd0, 0xa0, 0x92, 0x0e, 0x11, 0xb6, 0xd7, 0x4d, 0xc0, 0xc4, 0xb2, 0xd6, 0xe9, 0x60, 0xeb, - 0x92, 0x3b, 0x24, 0x15, 0x3c, 0x0e, 0xd7, 0x34, 0x43, 0xdf, 0xc4, 0xb6, 0x13, 0xdf, 0x59, 0xbe, - 0x53, 0x38, 0x52, 0x2d, 0x2b, 0x63, 0xbe, 0x97, 0x7e, 0x84, 0xcc, 0x6f, 0x86, 0xac, 0x6e, 0x6c, - 0x9a, 0xac, 0xcb, 0xec, 0x5d, 0xb5, 0xf7, 0x7e, 0x26, 0x53, 0x17, 0x92, 0x51, 0x30, 0x58, 0xad, - 0x20, 0x17, 0xe9, 0xf7, 0x9c, 0xbf, 0x9b, 0x85, 0x59, 0x8f, 0x89, 0x8a, 0xd1, 0xc6, 0x0f, 0x84, - 0x97, 0x62, 0x5e, 0x90, 0x15, 0x3d, 0x0e, 0xd6, 0x5b, 0x1f, 0x42, 0x2a, 0x42, 0xa4, 0x0d, 0x80, - 0x96, 0xe6, 0xe0, 0x2d, 0xd3, 0xd2, 0xfd, 0xfe, 0xf0, 0xc9, 0x49, 0xa8, 0x95, 0xe8, 0xdf, 0x97, - 0xd4, 0x10, 0x1d, 0xe5, 0x4e, 0x98, 0xc6, 0xfe, 0xf9, 0x7b, 0x6f, 0xa9, 0x26, 0x16, 0xaf, 0x70, - 0x7e, 0xf4, 0x17, 0x42, 0xa7, 0xce, 0x44, 0xaa, 0x99, 0x0c, 0xb3, 0xe6, 0x70, 0x6d, 0x68, 0xa3, - 0xba, 0x56, 0x54, 0xeb, 0x2b, 0xc5, 0xd5, 0xd5, 0x4a, 0x75, 0xd9, 0x0f, 0xfc, 0xa2, 0xc0, 0xdc, - 0x62, 0xed, 0x5c, 0x35, 0x14, 0x99, 0x27, 0x8b, 0xd6, 0x61, 0xd2, 0x93, 0x57, 0x3f, 0x5f, 0xcc, - 0xb0, 0xcc, 0x98, 0x2f, 0x66, 0x28, 0xc9, 0x35, 0xce, 0xf4, 0x96, 0xef, 0xa0, 0x43, 0x9e, 0xd1, - 0x1f, 0x6b, 0x90, 0x23, 0x6b, 0xea, 0xe8, 0xad, 0x64, 0x1b, 0xb0, 0xdb, 0xd1, 0x5a, 0x18, 0xed, - 0x24, 0xb0, 0xc6, 0xbd, 0xab, 0x13, 0xa4, 0x7d, 0x57, 0x27, 0x90, 0x47, 0x66, 0xf5, 0x1d, 0xef, - 0xb7, 0x8e, 0xaf, 0xd2, 0x2c, 0xfc, 0x01, 0xad, 0xd8, 0xdd, 0x15, 0xba, 0xfc, 0xcf, 0xd8, 0x8c, - 0x50, 0xc9, 0x68, 0x9e, 0x92, 0x59, 0xa2, 0x62, 0xfb, 0x30, 0x71, 0x1c, 0x8d, 0xe1, 0x7a, 0xef, - 0x2c, 0xe4, 0xea, 0xdd, 0x8e, 0xee, 0xa0, 0x17, 0x4b, 0x23, 0xc1, 0x8c, 0x5e, 0x77, 0x21, 0x0f, - 0xbc, 0xee, 0x22, 0xd8, 0x75, 0xcd, 0x0a, 0xec, 0xba, 0x36, 0xf0, 0x03, 0x0e, 0xbf, 0xeb, 0x7a, - 0x1b, 0x0b, 0xde, 0x46, 0xf7, 0x6c, 0x1f, 0xdb, 0x47, 0xa4, 0xa4, 0x5a, 0x7d, 0xa2, 0x02, 0x9e, - 0x79, 0x22, 0x0b, 0x4e, 0x06, 0x90, 0x5f, 0xa8, 0x35, 0x1a, 0xb5, 0xb5, 0xc2, 0x11, 0x12, 0xd5, - 0xa6, 0xb6, 0x4e, 0x43, 0xc5, 0x54, 0xaa, 0xd5, 0xb2, 0x5a, 0x90, 0x48, 0xb8, 0xb4, 0x4a, 0x63, - 0xb5, 0x5c, 0x90, 0xf9, 0xd8, 0xe7, 0xb1, 0xe6, 0x37, 0x5f, 0x76, 0x9a, 0xea, 0x25, 0x66, 0x88, - 0x47, 0xf3, 0x93, 0xbe, 0x72, 0xfd, 0x86, 0x0c, 0xb9, 0x35, 0x6c, 0x6d, 0x61, 0xf4, 0x33, 0x09, - 0x36, 0xf9, 0x36, 0x75, 0xcb, 0xa6, 0xc1, 0xe5, 0x82, 0x4d, 0xbe, 0x70, 0x9a, 0x72, 0x1d, 0xcc, - 0xda, 0xb8, 0x65, 0x1a, 0x6d, 0x2f, 0x13, 0xed, 0x8f, 0xf8, 0x44, 0xfe, 0xde, 0x79, 0x01, 0xc8, - 0x08, 0xa3, 0x23, 0xd9, 0xa9, 0x4b, 0x02, 0x4c, 0xbf, 0x52, 0xd3, 0x07, 0xe6, 0x5b, 0xb2, 0xfb, - 0x53, 0xf7, 0x12, 0x7a, 0x91, 0xf0, 0xee, 0xeb, 0x4d, 0x90, 0x27, 0x6a, 0xea, 0x8d, 0xd1, 0xfd, - 0xfb, 0x63, 0x96, 0x47, 0x59, 0x80, 0x63, 0x36, 0xee, 0xe0, 0x96, 0x83, 0xdb, 0x6e, 0xd3, 0x55, - 0x07, 0x76, 0x0a, 0xfb, 0xb3, 0xa3, 0x3f, 0x0b, 0x03, 0x78, 0x07, 0x0f, 0xe0, 0xf5, 0x7d, 0x44, - 0xe9, 0x56, 0x28, 0xda, 0x56, 0x76, 0xab, 0x51, 0xef, 0x98, 0xfe, 0xa2, 0xb8, 0xf7, 0xee, 0x7e, - 0xdb, 0x76, 0x76, 0x3a, 0xe4, 0x1b, 0x3b, 0x60, 0xe0, 0xbd, 0x2b, 0xf3, 0x30, 0xa1, 0x19, 0x97, - 0xc8, 0xa7, 0x6c, 0x4c, 0xad, 0xbd, 0x4c, 0xe8, 0xe5, 0x3e, 0xf2, 0x77, 0x71, 0xc8, 0x3f, 0x5e, - 0x8c, 0xdd, 0xf4, 0x81, 0xff, 0xf9, 0x09, 0xc8, 0xad, 0x6b, 0xb6, 0x83, 0xd1, 0xff, 0x25, 0x8b, - 0x22, 0x7f, 0x3d, 0xcc, 0x6d, 0x9a, 0xad, 0x5d, 0x1b, 0xb7, 0xf9, 0x46, 0xd9, 0x93, 0x3a, 0x0a, - 0xcc, 0x95, 0x1b, 0xa1, 0xe0, 0x25, 0x32, 0xb2, 0xde, 0x36, 0xfc, 0xbe, 0x74, 0x12, 0x49, 0xdb, - 0x5e, 0xd7, 0x2c, 0xa7, 0xb6, 0x49, 0xd2, 0xfc, 0x48, 0xda, 0xe1, 0x44, 0x0e, 0xfa, 0x7c, 0x0c, - 0xf4, 0x13, 0xd1, 0xd0, 0x4f, 0x0a, 0x40, 0xaf, 0x14, 0x61, 0x72, 0x53, 0xef, 0x60, 0xf2, 0xc3, - 0x14, 0xf9, 0xa1, 0xdf, 0x98, 0x44, 0x64, 0xef, 0x8f, 0x49, 0x4b, 0x7a, 0x07, 0xab, 0xfe, 0x6f, - 0xde, 0x44, 0x06, 0x82, 0x89, 0xcc, 0x2a, 0xf5, 0xa7, 0x75, 0x0d, 0x2f, 0x43, 0xdb, 0xc1, 0xde, - 0xe2, 0x9b, 0xc1, 0x0e, 0xb7, 0xb4, 0x35, 0x47, 0x23, 0x60, 0xcc, 0xa8, 0xe4, 0x99, 0xf7, 0x0b, - 0x91, 0x7b, 0xfd, 0x42, 0x9e, 0x23, 0x27, 0xeb, 0x11, 0x3d, 0x66, 0x23, 0x5a, 0xd4, 0x79, 0x0f, - 0x20, 0x6a, 0x29, 0xfa, 0xef, 0x2e, 0x30, 0x2d, 0xcd, 0xc2, 0xce, 0x7a, 0xd8, 0x13, 0x23, 0xa7, - 0xf2, 0x89, 0xc4, 0x95, 0xcf, 0xae, 0x6b, 0x3b, 0x98, 0x14, 0x56, 0x72, 0xbf, 0x31, 0x17, 0xad, - 0x7d, 0xe9, 0x41, 0xff, 0x9b, 0x1b, 0x75, 0xff, 0xdb, 0xaf, 0x8e, 0xe9, 0x37, 0xc3, 0x57, 0x65, - 0x41, 0x2e, 0xed, 0x3a, 0x8f, 0xea, 0xee, 0xf7, 0x7b, 0xc2, 0x7e, 0x2e, 0xac, 0x3f, 0x8b, 0xbc, - 0x68, 0x7e, 0x4c, 0xbd, 0x6f, 0x42, 0x2d, 0x11, 0xf3, 0xa7, 0x89, 0xaa, 0xdb, 0x18, 0xee, 0x35, - 0x90, 0x7d, 0x07, 0xcb, 0x07, 0x33, 0x07, 0x37, 0xcd, 0x11, 0xed, 0x9f, 0x42, 0x3d, 0x83, 0xff, - 0xee, 0x75, 0x3c, 0x59, 0x2e, 0x56, 0x1f, 0xd9, 0x5e, 0x27, 0xa2, 0x9c, 0x51, 0xe9, 0x0b, 0x7a, - 0x89, 0xb0, 0xdb, 0x39, 0x15, 0x5b, 0xac, 0x2b, 0x61, 0x32, 0x9b, 0x4a, 0xec, 0x32, 0xd1, 0x98, - 0x62, 0xd3, 0x07, 0xec, 0x9b, 0x61, 0x57, 0xc1, 0xe2, 0x81, 0x11, 0x43, 0xaf, 0x10, 0xde, 0x8e, - 0xa2, 0xd5, 0x1e, 0xb0, 0x5e, 0x98, 0x4c, 0xde, 0x62, 0x9b, 0x55, 0xb1, 0x05, 0xa7, 0x2f, 0xf1, - 0x6f, 0xc8, 0x90, 0xa7, 0x5b, 0x90, 0xe8, 0x0d, 0x99, 0x04, 0xb7, 0xb0, 0x3b, 0xbc, 0x0b, 0xa1, - 0xff, 0x9e, 0x64, 0xcd, 0x81, 0x73, 0x35, 0xcc, 0x26, 0x72, 0x35, 0xe4, 0xcf, 0x71, 0x0a, 0xb4, - 0x23, 0x5a, 0xc7, 0x94, 0xa7, 0x93, 0x49, 0x5a, 0x58, 0x5f, 0x86, 0xd2, 0xc7, 0xfb, 0x17, 0x73, - 0x30, 0x43, 0x8b, 0x3e, 0xa7, 0xb7, 0xb7, 0xb0, 0x83, 0xde, 0x2e, 0xfd, 0xe0, 0xa0, 0xae, 0x54, - 0x61, 0xe6, 0x22, 0x61, 0x7b, 0x55, 0xbb, 0x64, 0xee, 0x3a, 0x6c, 0xe5, 0xe2, 0xc6, 0xd8, 0x75, - 0x0f, 0x5a, 0xcf, 0x79, 0xfa, 0x87, 0xca, 0xfd, 0xef, 0xca, 0x98, 0x2e, 0xf8, 0x53, 0x07, 0xae, - 0x3c, 0x31, 0xb2, 0xc2, 0x49, 0xca, 0x49, 0xc8, 0xef, 0xe9, 0xf8, 0x62, 0xa5, 0xcd, 0xac, 0x5b, - 0xf6, 0x86, 0xfe, 0x50, 0x78, 0xdf, 0x36, 0x0c, 0x37, 0xe3, 0x25, 0x5d, 0x2d, 0x14, 0xdb, 0xbd, - 0x1d, 0xc8, 0xd6, 0x18, 0xce, 0x14, 0xf3, 0x97, 0x75, 0x96, 0x12, 0x28, 0x62, 0x94, 0xe1, 0xcc, - 0x87, 0xf2, 0x88, 0x3d, 0xb1, 0x42, 0x05, 0x30, 0xe2, 0x7b, 0x3c, 0xc5, 0xe2, 0x4b, 0x0c, 0x28, - 0x3a, 0x7d, 0xc9, 0xbf, 0x5a, 0x86, 0xa9, 0x3a, 0x76, 0x96, 0x74, 0xdc, 0x69, 0xdb, 0xc8, 0x3a, - 0xb8, 0x69, 0x74, 0x33, 0xe4, 0x37, 0x09, 0xb1, 0x41, 0xe7, 0x16, 0x58, 0x36, 0xf4, 0x2a, 0x49, - 0x74, 0x47, 0x98, 0xad, 0xbe, 0x79, 0xdc, 0x8e, 0x04, 0x26, 0x31, 0x8f, 0xde, 0xf8, 0x92, 0xc7, - 0x10, 0xd8, 0x56, 0x86, 0x19, 0x76, 0xbb, 0x5f, 0xb1, 0xa3, 0x6f, 0x19, 0x68, 0x77, 0x04, 0x2d, - 0x44, 0xb9, 0x05, 0x72, 0x9a, 0x4b, 0x8d, 0x6d, 0xbd, 0xa2, 0xbe, 0x9d, 0x27, 0x29, 0x4f, 0xa5, - 0x19, 0x13, 0x84, 0x91, 0x0c, 0x14, 0xdb, 0xe3, 0x79, 0x8c, 0x61, 0x24, 0x07, 0x16, 0x9e, 0x3e, - 0x62, 0x5f, 0x92, 0xe1, 0x38, 0x63, 0xe0, 0x2c, 0xb6, 0x1c, 0xbd, 0xa5, 0x75, 0x28, 0x72, 0x0f, - 0x65, 0x46, 0x01, 0xdd, 0x0a, 0xcc, 0xee, 0x85, 0xc9, 0x32, 0x08, 0xcf, 0xf4, 0x85, 0x90, 0x63, - 0x40, 0xe5, 0x7f, 0x4c, 0x10, 0x8e, 0x8f, 0x93, 0x2a, 0x47, 0x73, 0x8c, 0xe1, 0xf8, 0x84, 0x99, - 0x48, 0x1f, 0xe2, 0x17, 0xb2, 0xd0, 0x3c, 0x41, 0xf7, 0xf9, 0x39, 0x61, 0x6c, 0x37, 0x60, 0x9a, - 0x60, 0x49, 0x7f, 0x64, 0xcb, 0x10, 0x31, 0x4a, 0xec, 0xf7, 0x3b, 0xec, 0xc2, 0x30, 0xff, 0x5f, - 0x35, 0x4c, 0x07, 0x9d, 0x03, 0x08, 0x3e, 0x85, 0x3b, 0xe9, 0x4c, 0x54, 0x27, 0x2d, 0x89, 0x75, - 0xd2, 0xaf, 0x17, 0x0e, 0x96, 0xd2, 0x9f, 0xed, 0x83, 0xab, 0x87, 0x58, 0x98, 0x8c, 0xc1, 0xa5, - 0xa7, 0xaf, 0x17, 0x2f, 0xcf, 0xf6, 0x5e, 0xe3, 0xfe, 0xa1, 0x91, 0xcc, 0xa7, 0xc2, 0xfd, 0x81, - 0xdc, 0xd3, 0x1f, 0x1c, 0xc0, 0x92, 0xbe, 0x01, 0x8e, 0xd2, 0x22, 0x4a, 0x3e, 0x5b, 0x39, 0x1a, - 0x0a, 0xa2, 0x27, 0x19, 0x7d, 0x78, 0x08, 0x25, 0x18, 0x74, 0xc7, 0x7c, 0x5c, 0x27, 0x97, 0xcc, - 0xd8, 0x4d, 0xaa, 0x20, 0x87, 0x77, 0x35, 0xfd, 0xd7, 0xb3, 0xd4, 0xda, 0xdd, 0x20, 0x77, 0xba, - 0xa1, 0xbf, 0xcc, 0x8e, 0x62, 0x44, 0xb8, 0x1b, 0xb2, 0xc4, 0xc5, 0x5d, 0x8e, 0x5c, 0xd2, 0x08, - 0x8a, 0x0c, 0x2e, 0xdc, 0xc3, 0x0f, 0x38, 0x2b, 0x47, 0x54, 0xf2, 0xa7, 0x72, 0x23, 0x1c, 0x3d, - 0xaf, 0xb5, 0x2e, 0x6c, 0x59, 0xe6, 0x2e, 0xb9, 0xfd, 0xca, 0x64, 0xd7, 0x68, 0x91, 0xeb, 0x08, - 0xf9, 0x0f, 0xca, 0xad, 0x9e, 0xe9, 0x90, 0x1b, 0x64, 0x3a, 0xac, 0x1c, 0x61, 0xc6, 0x83, 0xf2, - 0x44, 0xbf, 0xd3, 0xc9, 0xc7, 0x76, 0x3a, 0x2b, 0x47, 0xbc, 0x6e, 0x47, 0x59, 0x84, 0xc9, 0xb6, - 0xbe, 0x47, 0xb6, 0xaa, 0xc9, 0xac, 0x6b, 0xd0, 0xd1, 0xe5, 0x45, 0x7d, 0x8f, 0x6e, 0x6c, 0xaf, - 0x1c, 0x51, 0xfd, 0x3f, 0x95, 0x65, 0x98, 0x22, 0xdb, 0x02, 0x84, 0xcc, 0x64, 0xa2, 0x63, 0xc9, - 0x2b, 0x47, 0xd4, 0xe0, 0x5f, 0xd7, 0xfa, 0xc8, 0x92, 0xb3, 0x1f, 0x77, 0x79, 0xdb, 0xed, 0x99, - 0x44, 0xdb, 0xed, 0xae, 0x2c, 0xe8, 0x86, 0xfb, 0x49, 0xc8, 0xb5, 0x88, 0x84, 0x25, 0x26, 0x61, - 0xfa, 0xaa, 0xdc, 0x01, 0xd9, 0x1d, 0xcd, 0xf2, 0x26, 0xcf, 0xd7, 0x0f, 0xa6, 0xbb, 0xa6, 0x59, - 0x17, 0x5c, 0x04, 0xdd, 0xbf, 0x16, 0x26, 0x20, 0x47, 0x04, 0xe7, 0x3f, 0xa0, 0x37, 0x65, 0xa9, - 0x19, 0x52, 0x32, 0x0d, 0x77, 0xd8, 0x6f, 0x98, 0xde, 0x01, 0x99, 0x3f, 0xcc, 0x8c, 0xc6, 0x82, - 0xec, 0x7b, 0xef, 0xb9, 0x1c, 0x79, 0xef, 0x79, 0xcf, 0x05, 0xbc, 0xd9, 0xde, 0x0b, 0x78, 0x83, - 0xe5, 0x83, 0xdc, 0x60, 0x47, 0x95, 0x3f, 0x1b, 0xc2, 0x74, 0xe9, 0x15, 0x44, 0xf4, 0x0c, 0xbc, - 0xa3, 0x1b, 0xa1, 0x3a, 0x7b, 0xaf, 0x09, 0x3b, 0xa5, 0xa4, 0x46, 0xcd, 0x00, 0xf6, 0xd2, 0xef, - 0x9b, 0x7e, 0x3b, 0x0b, 0xa7, 0xe8, 0x35, 0xcf, 0x7b, 0xb8, 0x61, 0xf2, 0xf7, 0x4d, 0xa2, 0x4f, - 0x8c, 0x44, 0x69, 0xfa, 0x0c, 0x38, 0x72, 0xdf, 0x01, 0x67, 0xdf, 0x21, 0xe5, 0xec, 0x80, 0x43, - 0xca, 0xb9, 0x64, 0x2b, 0x87, 0xef, 0x0b, 0xeb, 0xcf, 0x3a, 0xaf, 0x3f, 0xb7, 0x47, 0x00, 0xd4, - 0x4f, 0x2e, 0x23, 0xb1, 0x6f, 0xde, 0xea, 0x6b, 0x4a, 0x9d, 0xd3, 0x94, 0xbb, 0x86, 0x67, 0x24, - 0x7d, 0x6d, 0xf9, 0x83, 0x2c, 0x5c, 0x16, 0x30, 0x53, 0xc5, 0x17, 0x99, 0xa2, 0x7c, 0x76, 0x24, - 0x8a, 0x92, 0x3c, 0x06, 0x42, 0xda, 0x1a, 0xf3, 0x27, 0xc2, 0x67, 0x87, 0x7a, 0x81, 0xf2, 0x65, - 0x13, 0xa1, 0x2c, 0x27, 0x21, 0x4f, 0x7b, 0x18, 0x06, 0x0d, 0x7b, 0x4b, 0xd8, 0xdd, 0x88, 0x9d, - 0x38, 0x12, 0xe5, 0x6d, 0x0c, 0xfa, 0xc3, 0xd6, 0x35, 0x1a, 0xbb, 0x96, 0x51, 0x31, 0x1c, 0x13, - 0xfd, 0xdc, 0x48, 0x14, 0xc7, 0xf7, 0x86, 0x93, 0x87, 0xf1, 0x86, 0x1b, 0x6a, 0x95, 0xc3, 0xab, - 0xc1, 0xa1, 0xac, 0x72, 0x44, 0x14, 0x9e, 0x3e, 0x7e, 0x6f, 0x91, 0xe1, 0x24, 0x9b, 0x6c, 0x2d, - 0xf0, 0x16, 0x22, 0xba, 0x6f, 0x14, 0x40, 0x1e, 0xf7, 0xcc, 0x24, 0x76, 0xcb, 0x19, 0x79, 0xe1, - 0x4f, 0x4a, 0xc5, 0xde, 0xef, 0xc0, 0x4d, 0x07, 0x7b, 0x38, 0x1c, 0x09, 0x52, 0x62, 0xd7, 0x3a, - 0x24, 0x60, 0x23, 0x7d, 0xcc, 0x7e, 0x55, 0x86, 0x3c, 0xbb, 0xde, 0x7f, 0x23, 0x15, 0x87, 0x09, - 0x3e, 0xca, 0xb3, 0xc0, 0x8e, 0x5c, 0xe2, 0x4b, 0xee, 0xd3, 0xdb, 0x8b, 0x3b, 0xa4, 0x5b, 0xec, - 0xbf, 0x25, 0xc1, 0x74, 0x1d, 0x3b, 0x25, 0xcd, 0xb2, 0x74, 0x6d, 0x6b, 0x54, 0x1e, 0xdf, 0xa2, - 0xde, 0xc3, 0xe8, 0xdb, 0x19, 0xd1, 0xf3, 0x34, 0xfe, 0x42, 0xb8, 0xc7, 0x6a, 0x44, 0x2c, 0xc1, - 0x47, 0x84, 0xce, 0xcc, 0x0c, 0xa2, 0x36, 0x06, 0x8f, 0x6d, 0x09, 0x26, 0xbc, 0xb3, 0x78, 0x37, - 0x73, 0xe7, 0x33, 0xb7, 0x9d, 0x1d, 0xef, 0x18, 0x0c, 0x79, 0xde, 0x7f, 0x06, 0x0c, 0xbd, 0x2c, - 0xa1, 0xa3, 0x7c, 0xfc, 0x41, 0xc2, 0x64, 0x6d, 0x2c, 0x89, 0x3b, 0xfc, 0x61, 0x1d, 0x1d, 0xfc, - 0xbd, 0x09, 0xb6, 0x1c, 0xb9, 0xaa, 0x39, 0xf8, 0x01, 0xf4, 0x39, 0x19, 0x26, 0xea, 0xd8, 0x71, - 0xc7, 0x5b, 0xee, 0x72, 0xd3, 0x61, 0x35, 0x5c, 0x09, 0xad, 0x78, 0x4c, 0xb1, 0x35, 0x8c, 0x7b, - 0x60, 0xaa, 0x6b, 0x99, 0x2d, 0x6c, 0xdb, 0x6c, 0xf5, 0x22, 0xec, 0xa8, 0xd6, 0x6f, 0xf4, 0x27, - 0xac, 0xcd, 0xaf, 0x7b, 0xff, 0xa8, 0xc1, 0xef, 0x49, 0xcd, 0x00, 0x4a, 0x89, 0x55, 0x70, 0xdc, - 0x66, 0x40, 0x5c, 0xe1, 0xe9, 0x03, 0xfd, 0x69, 0x19, 0x66, 0xea, 0xd8, 0xf1, 0xa5, 0x98, 0x60, - 0x93, 0x23, 0x1a, 0x5e, 0x0e, 0x4a, 0xf9, 0x60, 0x50, 0x8a, 0x5f, 0x0d, 0xc8, 0x4b, 0xd3, 0x27, - 0x36, 0xc6, 0xab, 0x01, 0xc5, 0x38, 0x18, 0xc3, 0xf1, 0xb5, 0xc7, 0xc2, 0x14, 0xe1, 0x85, 0x34, - 0xd8, 0x5f, 0xce, 0x06, 0x8d, 0xf7, 0xf3, 0x29, 0x35, 0xde, 0x3b, 0x21, 0xb7, 0xa3, 0x59, 0x17, - 0x6c, 0xd2, 0x70, 0xa7, 0x45, 0xcc, 0xf6, 0x35, 0x37, 0xbb, 0x4a, 0xff, 0xea, 0xef, 0xa7, 0x99, - 0x4b, 0xe6, 0xa7, 0xf9, 0x88, 0x94, 0x68, 0x24, 0xa4, 0x73, 0x87, 0x11, 0x36, 0xf9, 0x04, 0xe3, - 0x66, 0x4c, 0xd9, 0xe9, 0x2b, 0xc7, 0x43, 0x32, 0x4c, 0xba, 0xe3, 0x36, 0xb1, 0xc7, 0xcf, 0x1d, - 0x5c, 0x1d, 0xfa, 0x1b, 0xfa, 0x09, 0x7b, 0x60, 0x4f, 0x22, 0xa3, 0x33, 0xef, 0x13, 0xf4, 0xc0, - 0x71, 0x85, 0xa7, 0x8f, 0xc7, 0xdb, 0x28, 0x1e, 0xa4, 0x3d, 0xa0, 0xd7, 0xca, 0x20, 0x2f, 0x63, - 0x67, 0xdc, 0x56, 0xe4, 0x9b, 0x85, 0x43, 0x1c, 0x71, 0x02, 0x23, 0x3c, 0xcf, 0x2f, 0xe3, 0xd1, - 0x34, 0x20, 0xb1, 0xd8, 0x46, 0x42, 0x0c, 0xa4, 0x8f, 0xda, 0xbb, 0x28, 0x6a, 0x74, 0x73, 0xe1, - 0x67, 0x47, 0xd0, 0xab, 0x8e, 0x77, 0xe1, 0xc3, 0x13, 0x20, 0xa1, 0x71, 0x58, 0xed, 0xad, 0x5f, - 0xe1, 0x63, 0xb9, 0x8a, 0x0f, 0xdc, 0xc6, 0xbe, 0x8d, 0x5b, 0x17, 0x70, 0x1b, 0xfd, 0xd4, 0xc1, - 0xa1, 0x3b, 0x05, 0x13, 0x2d, 0x4a, 0x8d, 0x80, 0x37, 0xa9, 0x7a, 0xaf, 0x09, 0xee, 0x95, 0xe6, - 0x3b, 0x22, 0xfa, 0xfb, 0x18, 0xef, 0x95, 0x16, 0x28, 0x7e, 0x0c, 0x66, 0x0b, 0x9d, 0x65, 0x54, - 0x5a, 0xa6, 0x81, 0xfe, 0xcb, 0xc1, 0x61, 0xb9, 0x0a, 0xa6, 0xf4, 0x96, 0x69, 0x90, 0x30, 0x14, - 0xde, 0x21, 0x20, 0x3f, 0xc1, 0xfb, 0x5a, 0xde, 0x31, 0xef, 0xd7, 0xd9, 0xae, 0x79, 0x90, 0x30, - 0xac, 0x31, 0xe1, 0xb2, 0x7e, 0x58, 0xc6, 0x44, 0x9f, 0xb2, 0xd3, 0x87, 0xec, 0xc3, 0x81, 0x77, - 0x1b, 0xed, 0x0a, 0x1f, 0x15, 0xab, 0xc0, 0xc3, 0x0c, 0x67, 0xe1, 0x5a, 0x1c, 0xca, 0x70, 0x16, - 0xc3, 0xc0, 0x18, 0x6e, 0xac, 0x08, 0x70, 0x4c, 0x7d, 0x0d, 0xf8, 0x00, 0xe8, 0x8c, 0xce, 0x3c, - 0x1c, 0x12, 0x9d, 0xc3, 0x31, 0x11, 0xdf, 0xcb, 0x42, 0x64, 0x32, 0x8b, 0x07, 0xfd, 0xd7, 0x51, - 0x80, 0x73, 0xfb, 0x30, 0xfe, 0x0a, 0xd4, 0x5b, 0x21, 0xc1, 0x8d, 0xd8, 0xfb, 0x24, 0xe8, 0x52, - 0x19, 0xe3, 0x5d, 0xf1, 0x22, 0xe5, 0xa7, 0x0f, 0xe0, 0xf3, 0x64, 0x98, 0x23, 0x3e, 0x02, 0x1d, - 0xac, 0x59, 0xb4, 0xa3, 0x1c, 0x89, 0xa3, 0xfc, 0xdb, 0x84, 0x03, 0xfc, 0xf0, 0x72, 0x08, 0xf8, - 0x18, 0x09, 0x14, 0x62, 0xd1, 0x7d, 0x04, 0x59, 0x18, 0xcb, 0x36, 0x4a, 0xc1, 0x67, 0x81, 0xa9, - 0xf8, 0x68, 0xf0, 0x48, 0xe8, 0x91, 0xcb, 0x0b, 0xc3, 0x6b, 0x6c, 0x63, 0xf6, 0xc8, 0x15, 0x61, - 0x22, 0x7d, 0x4c, 0x5e, 0x7b, 0x0b, 0x5b, 0x70, 0x6e, 0x90, 0x0b, 0xe3, 0x5f, 0x91, 0xf5, 0x4f, - 0xb4, 0x7d, 0x7a, 0x24, 0x1e, 0x98, 0x07, 0x08, 0x88, 0xaf, 0x40, 0xd6, 0x32, 0x2f, 0xd2, 0xa5, - 0xad, 0x59, 0x95, 0x3c, 0xd3, 0xeb, 0x29, 0x3b, 0xbb, 0x3b, 0x06, 0x3d, 0x19, 0x3a, 0xab, 0x7a, - 0xaf, 0xca, 0x75, 0x30, 0x7b, 0x51, 0x77, 0xb6, 0x57, 0xb0, 0xd6, 0xc6, 0x96, 0x6a, 0x5e, 0x24, - 0x1e, 0x73, 0x93, 0x2a, 0x9f, 0xc8, 0xfb, 0xaf, 0x08, 0xd8, 0x97, 0xe4, 0x16, 0xf9, 0xb1, 0x1c, - 0x7f, 0x4b, 0x62, 0x79, 0x46, 0x73, 0x95, 0xbe, 0xc2, 0xbc, 0x5b, 0x86, 0x29, 0xd5, 0xbc, 0xc8, - 0x94, 0xe4, 0xff, 0x38, 0x5c, 0x1d, 0x49, 0x3c, 0xd1, 0x23, 0x92, 0xf3, 0xd9, 0x1f, 0xfb, 0x44, - 0x2f, 0xb6, 0xf8, 0xb1, 0x9c, 0x5c, 0x9a, 0x51, 0xcd, 0x8b, 0x75, 0xec, 0xd0, 0x16, 0x81, 0x9a, - 0x23, 0x72, 0xb2, 0xd6, 0x6d, 0x4a, 0x90, 0xcd, 0xc3, 0xfd, 0xf7, 0xa4, 0xbb, 0x08, 0xbe, 0x80, - 0x7c, 0x16, 0xc7, 0xbd, 0x8b, 0x30, 0x90, 0x83, 0x31, 0xc4, 0x48, 0x91, 0x61, 0x5a, 0x35, 0x2f, - 0xba, 0x43, 0xc3, 0x92, 0xde, 0xe9, 0x8c, 0x66, 0x84, 0x4c, 0x6a, 0xfc, 0x7b, 0x62, 0xf0, 0xb8, - 0x18, 0xbb, 0xf1, 0x3f, 0x80, 0x81, 0xf4, 0x61, 0x78, 0x0e, 0x6d, 0x2c, 0xde, 0x08, 0x6d, 0x8c, - 0x06, 0x87, 0x61, 0x1b, 0x84, 0xcf, 0xc6, 0xa1, 0x35, 0x88, 0x28, 0x0e, 0xc6, 0xb2, 0x73, 0x32, - 0x57, 0x22, 0xc3, 0xfc, 0x68, 0xdb, 0xc4, 0x3b, 0x92, 0xb9, 0x26, 0xb2, 0x61, 0x97, 0x63, 0x64, - 0x24, 0x68, 0x24, 0x70, 0x41, 0x14, 0xe0, 0x21, 0x7d, 0x3c, 0x3e, 0x20, 0xc3, 0x0c, 0x65, 0xe1, - 0x51, 0x62, 0x05, 0x0c, 0xd5, 0xa8, 0xc2, 0x35, 0x38, 0x9c, 0x46, 0x15, 0xc3, 0xc1, 0x58, 0x6e, - 0x05, 0x75, 0xed, 0xb8, 0x21, 0x8e, 0x8f, 0x47, 0x21, 0x38, 0xb4, 0x31, 0x36, 0xc2, 0x23, 0xe4, - 0xc3, 0x18, 0x63, 0x87, 0x74, 0x8c, 0xfc, 0x39, 0x7e, 0x2b, 0x1a, 0x25, 0x06, 0x07, 0x68, 0x0a, - 0x23, 0x84, 0x61, 0xc8, 0xa6, 0x70, 0x48, 0x48, 0x7c, 0x59, 0x06, 0xa0, 0x0c, 0xac, 0x99, 0x7b, - 0xe4, 0x32, 0x9f, 0x11, 0x74, 0x67, 0xbd, 0x6e, 0xf5, 0xf2, 0x00, 0xb7, 0xfa, 0x84, 0x21, 0x5c, - 0x92, 0xae, 0x04, 0x86, 0xa4, 0xec, 0x56, 0x72, 0xec, 0x2b, 0x81, 0xf1, 0xe5, 0xa7, 0x8f, 0xf1, - 0x17, 0xa9, 0x35, 0x17, 0x1c, 0x30, 0xfd, 0xad, 0x91, 0xa0, 0x1c, 0x9a, 0xfd, 0xcb, 0xfc, 0xec, - 0xff, 0x00, 0xd8, 0x0e, 0x6b, 0x23, 0x0e, 0x3a, 0x38, 0x9a, 0xbe, 0x8d, 0x78, 0x78, 0x07, 0x44, - 0x7f, 0x36, 0x0b, 0x47, 0x59, 0x27, 0xf2, 0x83, 0x00, 0x71, 0xc2, 0x73, 0x78, 0x5c, 0x27, 0x39, - 0x00, 0xe5, 0x51, 0x2d, 0x48, 0x25, 0x59, 0xca, 0x14, 0x60, 0x6f, 0x2c, 0xab, 0x1b, 0xf9, 0xf2, - 0x03, 0x5d, 0xcd, 0x68, 0x8b, 0x87, 0xfb, 0x1d, 0x00, 0xbc, 0xb7, 0xd6, 0x28, 0xf3, 0x6b, 0x8d, - 0x7d, 0x56, 0x26, 0x13, 0xef, 0x5c, 0x13, 0x91, 0x51, 0x76, 0xc7, 0xbe, 0x73, 0x1d, 0x5d, 0x76, - 0xfa, 0x28, 0xbd, 0x43, 0x86, 0x6c, 0xdd, 0xb4, 0x1c, 0xf4, 0xdc, 0x24, 0xad, 0x93, 0x4a, 0x3e, - 0x00, 0xc9, 0x7b, 0x57, 0x4a, 0xdc, 0x2d, 0xcd, 0x37, 0xc7, 0x1f, 0x75, 0xd6, 0x1c, 0x8d, 0x78, - 0x75, 0xbb, 0xe5, 0x87, 0xae, 0x6b, 0x4e, 0x1a, 0x4f, 0x87, 0xca, 0xaf, 0x1e, 0x7d, 0x00, 0x23, - 0xb5, 0x78, 0x3a, 0x91, 0x25, 0xa7, 0x8f, 0xdb, 0xc3, 0x47, 0x99, 0x6f, 0xeb, 0x92, 0xde, 0xc1, - 0xe8, 0xb9, 0xd4, 0x65, 0xa4, 0xaa, 0xed, 0x60, 0xf1, 0x23, 0x31, 0xb1, 0xae, 0xad, 0x24, 0xbe, - 0xac, 0x1c, 0xc4, 0x97, 0x4d, 0xda, 0xa0, 0xe8, 0x01, 0x74, 0xca, 0xd2, 0xb8, 0x1b, 0x54, 0x4c, - 0xd9, 0x63, 0x89, 0xd3, 0x79, 0xac, 0x8e, 0x1d, 0x6a, 0x54, 0xd6, 0xbc, 0x1b, 0x58, 0x7e, 0x7a, - 0x24, 0x11, 0x3b, 0xfd, 0x0b, 0x5e, 0xe4, 0x9e, 0x0b, 0x5e, 0xde, 0x1d, 0x06, 0x67, 0x8d, 0x07, - 0xe7, 0xc7, 0xa3, 0x05, 0xc4, 0x33, 0x39, 0x12, 0x98, 0xde, 0xec, 0xc3, 0xb4, 0xce, 0xc1, 0x74, - 0xc7, 0x90, 0x5c, 0xa4, 0x0f, 0xd8, 0xaf, 0xe4, 0xe0, 0x28, 0x9d, 0xf4, 0x17, 0x8d, 0x36, 0x8b, - 0xb0, 0xfa, 0x06, 0xe9, 0x90, 0x37, 0xdb, 0xf6, 0x87, 0x60, 0xe5, 0x62, 0x39, 0xe7, 0x7a, 0x6f, - 0xc7, 0x5f, 0xa0, 0xe1, 0x5c, 0xdd, 0x4e, 0x94, 0xec, 0xb4, 0x89, 0xdf, 0x90, 0xef, 0xff, 0xc7, - 0xdf, 0x65, 0x34, 0x21, 0x7e, 0x97, 0xd1, 0x9f, 0x26, 0x5b, 0xb7, 0x23, 0x45, 0xf7, 0x08, 0x3c, - 0x65, 0xdb, 0x29, 0xc1, 0x8a, 0x9e, 0x00, 0x77, 0x3f, 0x1c, 0xee, 0x64, 0x41, 0x04, 0x91, 0x21, - 0xdd, 0xc9, 0x08, 0x81, 0xc3, 0x74, 0x27, 0x1b, 0xc4, 0xc0, 0x18, 0x6e, 0xb5, 0xcf, 0xb1, 0xdd, - 0x7c, 0xd2, 0x6e, 0xd0, 0x5f, 0x4b, 0xa9, 0x8f, 0xd2, 0xdf, 0xc9, 0x24, 0xf2, 0x7f, 0x26, 0x7c, - 0xc5, 0x0f, 0xd3, 0x49, 0x3c, 0x9a, 0xe3, 0xc8, 0x8d, 0x61, 0xdd, 0x48, 0x22, 0xbe, 0xe8, 0xe7, - 0xf4, 0xb6, 0xb3, 0x3d, 0xa2, 0x13, 0x1d, 0x17, 0x5d, 0x5a, 0xde, 0xf5, 0xc8, 0xe4, 0x05, 0xfd, - 0x7b, 0x26, 0x51, 0x08, 0x29, 0x5f, 0x24, 0x84, 0xad, 0x08, 0x11, 0x27, 0x08, 0xfc, 0x14, 0x4b, - 0x6f, 0x8c, 0x1a, 0x7d, 0x56, 0x6f, 0x63, 0xf3, 0x51, 0xa8, 0xd1, 0x84, 0xaf, 0xd1, 0x69, 0x74, - 0x1c, 0xb9, 0x1f, 0x52, 0x8d, 0xf6, 0x45, 0x32, 0x22, 0x8d, 0x8e, 0xa5, 0x97, 0xbe, 0x8c, 0x5f, - 0x36, 0xc3, 0x26, 0x52, 0xab, 0xba, 0x71, 0x01, 0xfd, 0x4b, 0xde, 0xbb, 0x98, 0xf9, 0x9c, 0xee, - 0x6c, 0xb3, 0x58, 0x30, 0x7f, 0x20, 0x7c, 0x37, 0xca, 0x10, 0xf1, 0x5e, 0xf8, 0x70, 0x52, 0xb9, - 0x7d, 0xe1, 0xa4, 0x8a, 0x30, 0xab, 0x1b, 0x0e, 0xb6, 0x0c, 0xad, 0xb3, 0xd4, 0xd1, 0xb6, 0xec, - 0x53, 0x13, 0x7d, 0x2f, 0xaf, 0xab, 0x84, 0xf2, 0xa8, 0xfc, 0x1f, 0xe1, 0xeb, 0x2b, 0x27, 0xf9, - 0xeb, 0x2b, 0x23, 0xa2, 0x5f, 0x4d, 0x45, 0x47, 0xbf, 0xf2, 0xa3, 0x5b, 0xc1, 0xe0, 0xe0, 0xd8, - 0xa2, 0xb6, 0x71, 0xc2, 0x70, 0x7f, 0x37, 0x0b, 0x46, 0x61, 0xf3, 0x43, 0x3f, 0xbe, 0x52, 0x4e, - 0xb4, 0xba, 0xe7, 0x2a, 0xc2, 0x7c, 0xaf, 0x12, 0x24, 0xb6, 0x50, 0xc3, 0x95, 0x97, 0x7b, 0x2a, - 0xef, 0x9b, 0x3c, 0x59, 0x01, 0x93, 0x27, 0xac, 0x54, 0x39, 0x31, 0xa5, 0x4a, 0xb2, 0x58, 0x28, - 0x52, 0xdb, 0x31, 0x9c, 0x46, 0xca, 0xc1, 0x31, 0x2f, 0xda, 0x6d, 0xb7, 0x8b, 0x35, 0x4b, 0x33, - 0x5a, 0x18, 0x7d, 0x58, 0x1a, 0x85, 0xd9, 0xbb, 0x04, 0x93, 0x7a, 0xcb, 0x34, 0xea, 0xfa, 0x33, - 0xbd, 0xcb, 0xe5, 0xe2, 0x83, 0xac, 0x13, 0x89, 0x54, 0xd8, 0x1f, 0xaa, 0xff, 0xaf, 0x52, 0x81, - 0xa9, 0x96, 0x66, 0xb5, 0x69, 0x10, 0xbe, 0x5c, 0xcf, 0x45, 0x4e, 0x91, 0x84, 0x4a, 0xde, 0x2f, - 0x6a, 0xf0, 0xb7, 0x52, 0xe3, 0x85, 0x98, 0xef, 0x89, 0xe6, 0x11, 0x49, 0x6c, 0x31, 0xf8, 0x89, - 0x93, 0xb9, 0x2b, 0x1d, 0x0b, 0x77, 0xc8, 0x1d, 0xf4, 0xb4, 0x87, 0x98, 0x52, 0x83, 0x84, 0xa4, - 0xcb, 0x03, 0xa4, 0xa8, 0x7d, 0x68, 0x8c, 0x7b, 0x79, 0x40, 0x88, 0x8b, 0xf4, 0x35, 0xf3, 0xad, - 0x79, 0x98, 0xa5, 0xbd, 0x1a, 0x13, 0x27, 0x7a, 0x1e, 0xb9, 0x42, 0xda, 0xb9, 0x17, 0x5f, 0x42, - 0xf5, 0x83, 0x8f, 0xc9, 0x05, 0x90, 0x2f, 0xf8, 0x01, 0x07, 0xdd, 0xc7, 0xa4, 0xfb, 0xf6, 0x1e, - 0x5f, 0xf3, 0x94, 0xa7, 0x71, 0xef, 0xdb, 0xc7, 0x17, 0x9f, 0x3e, 0x3e, 0xbf, 0x26, 0x83, 0x5c, - 0x6c, 0xb7, 0x51, 0xeb, 0xe0, 0x50, 0x5c, 0x03, 0xd3, 0x5e, 0x9b, 0x09, 0x62, 0x40, 0x86, 0x93, - 0x92, 0x2e, 0x82, 0xfa, 0xb2, 0x29, 0xb6, 0xc7, 0xbe, 0xab, 0x10, 0x53, 0x76, 0xfa, 0xa0, 0xfc, - 0xd6, 0x04, 0x6b, 0x34, 0x0b, 0xa6, 0x79, 0x81, 0x1c, 0x95, 0x79, 0xae, 0x0c, 0xb9, 0x25, 0xec, - 0xb4, 0xb6, 0x47, 0xd4, 0x66, 0x76, 0xad, 0x8e, 0xd7, 0x66, 0xf6, 0xdd, 0x87, 0x3f, 0xd8, 0x86, - 0xf5, 0xd8, 0x9a, 0x27, 0x2c, 0x8d, 0x3b, 0xba, 0x73, 0x6c, 0xe9, 0xe9, 0x83, 0xf3, 0xef, 0x32, - 0xcc, 0xf9, 0x2b, 0x5c, 0x14, 0x93, 0x5f, 0xc9, 0x3c, 0xda, 0xd6, 0x3b, 0xd1, 0x67, 0x93, 0x85, - 0x48, 0xf3, 0x65, 0xca, 0xd7, 0x2c, 0xe5, 0x85, 0xc5, 0x04, 0xc1, 0xd3, 0xc4, 0x18, 0x1c, 0xc3, - 0x0c, 0x5e, 0x86, 0x49, 0xc2, 0xd0, 0xa2, 0xbe, 0x47, 0x5c, 0x07, 0xb9, 0x85, 0xc6, 0x67, 0x8d, - 0x64, 0xa1, 0xf1, 0x0e, 0x7e, 0xa1, 0x51, 0x30, 0xe2, 0xb1, 0xb7, 0xce, 0x98, 0xd0, 0x97, 0xc6, - 0xfd, 0x7f, 0xe4, 0xcb, 0x8c, 0x09, 0x7c, 0x69, 0x06, 0x94, 0x9f, 0x3e, 0xa2, 0xaf, 0xfc, 0x4f, - 0xac, 0xb3, 0xf5, 0x36, 0x54, 0xd1, 0xff, 0x3c, 0x06, 0xd9, 0xb3, 0xee, 0xc3, 0xff, 0x0e, 0x6e, - 0xc4, 0x7a, 0xd1, 0x08, 0x82, 0x33, 0x3c, 0x1d, 0xb2, 0x2e, 0x7d, 0x36, 0x6d, 0xb9, 0x51, 0x6c, - 0x77, 0xd7, 0x65, 0x44, 0x25, 0xff, 0x29, 0x27, 0x21, 0x6f, 0x9b, 0xbb, 0x56, 0xcb, 0x35, 0x9f, - 0x5d, 0x8d, 0x61, 0x6f, 0x49, 0x83, 0x92, 0x72, 0xa4, 0xe7, 0x47, 0xe7, 0x32, 0x1a, 0xba, 0x20, - 0x49, 0xe6, 0x2e, 0x48, 0x4a, 0xb0, 0x7f, 0x20, 0xc0, 0x5b, 0xfa, 0x1a, 0xf1, 0xd7, 0xe4, 0xae, - 0xc0, 0xf6, 0xa8, 0x60, 0x8f, 0x10, 0xcb, 0x41, 0xd5, 0x21, 0xa9, 0xc3, 0x37, 0x2f, 0x5a, 0x3f, - 0x0e, 0xfc, 0x58, 0x1d, 0xbe, 0x05, 0x78, 0x18, 0xcb, 0x29, 0xf5, 0x3c, 0x73, 0x52, 0xbd, 0x6f, - 0x94, 0xe8, 0x66, 0x39, 0xa5, 0x3f, 0x10, 0x3a, 0x23, 0x74, 0x5e, 0x1d, 0x1a, 0x9d, 0x43, 0x72, - 0x5f, 0xfd, 0x88, 0x4c, 0x22, 0x61, 0x7a, 0x46, 0x8e, 0xf8, 0x45, 0x47, 0x89, 0x21, 0x72, 0xc7, - 0x60, 0x2e, 0x0e, 0xf4, 0xec, 0xf0, 0xa1, 0xc1, 0x79, 0xd1, 0x85, 0xf8, 0x1f, 0x77, 0x68, 0x70, - 0x51, 0x46, 0xd2, 0x07, 0xf2, 0x35, 0xf4, 0x62, 0xb1, 0x62, 0xcb, 0xd1, 0xf7, 0x46, 0xdc, 0xd2, - 0xf8, 0xe1, 0x25, 0x61, 0x34, 0xe0, 0x7d, 0x12, 0xa2, 0x1c, 0x8e, 0x3b, 0x1a, 0xb0, 0x18, 0x1b, - 0xe9, 0xc3, 0xf4, 0x77, 0x79, 0x57, 0x7a, 0x6c, 0x6d, 0xe6, 0xb5, 0x6c, 0x35, 0x00, 0x1f, 0x1c, - 0xad, 0x33, 0x30, 0x13, 0x9a, 0xfa, 0x7b, 0x17, 0xd6, 0x70, 0x69, 0x49, 0x0f, 0xba, 0xfb, 0x22, - 0x1b, 0xf9, 0xc2, 0x40, 0x82, 0x05, 0x5f, 0x11, 0x26, 0xc6, 0x72, 0x1f, 0x9c, 0x37, 0x86, 0x8d, - 0x09, 0xab, 0x3f, 0x08, 0x63, 0x55, 0xe3, 0xb1, 0xba, 0x4d, 0x44, 0x4c, 0x62, 0x63, 0x9a, 0xd0, - 0xbc, 0xf1, 0x2d, 0x3e, 0x5c, 0x2a, 0x07, 0xd7, 0xd3, 0x87, 0xe6, 0x23, 0x7d, 0xc4, 0x5e, 0x4c, - 0xbb, 0xc3, 0x3a, 0x35, 0xd9, 0x47, 0xd3, 0x1d, 0xb2, 0xd9, 0x80, 0xcc, 0xcd, 0x06, 0x12, 0xfa, - 0xdb, 0x07, 0x6e, 0xa4, 0x1e, 0x73, 0x83, 0x20, 0xca, 0x8e, 0xd8, 0xdf, 0x7e, 0x20, 0x07, 0xe9, - 0x83, 0xf3, 0x4f, 0x32, 0xc0, 0xb2, 0x65, 0xee, 0x76, 0x6b, 0x56, 0x1b, 0x5b, 0xe8, 0x6f, 0x83, - 0x09, 0xc0, 0x0b, 0x46, 0x30, 0x01, 0x58, 0x07, 0xd8, 0xf2, 0x89, 0x33, 0x0d, 0xbf, 0x45, 0xcc, - 0xdc, 0x0f, 0x98, 0x52, 0x43, 0x34, 0xf8, 0x2b, 0x67, 0x7f, 0x82, 0xc7, 0x38, 0xae, 0xcf, 0x0a, - 0xc8, 0x8d, 0x72, 0x02, 0xf0, 0x36, 0x1f, 0xeb, 0x06, 0x87, 0xf5, 0xdd, 0x07, 0xe0, 0x24, 0x7d, - 0xcc, 0xff, 0x79, 0x02, 0xa6, 0xe9, 0x76, 0x1d, 0x95, 0xe9, 0x3f, 0x04, 0xa0, 0xff, 0xd6, 0x08, - 0x40, 0xdf, 0x80, 0x19, 0x33, 0xa0, 0x4e, 0xfb, 0xd4, 0xf0, 0x02, 0x4c, 0x2c, 0xec, 0x21, 0xbe, - 0x54, 0x8e, 0x0c, 0xfa, 0x60, 0x18, 0x79, 0x95, 0x47, 0xfe, 0x8e, 0x18, 0x79, 0x87, 0x28, 0x8e, - 0x12, 0xfa, 0xb7, 0xfb, 0xd0, 0x6f, 0x70, 0xd0, 0x17, 0x0f, 0xc2, 0xca, 0x18, 0xc2, 0xed, 0xcb, - 0x90, 0x25, 0xa7, 0xe3, 0x7e, 0x3b, 0xc5, 0xf9, 0xfd, 0x29, 0x98, 0x20, 0x4d, 0xd6, 0x9f, 0x77, - 0x78, 0xaf, 0xee, 0x17, 0x6d, 0xd3, 0xc1, 0x96, 0xef, 0xb1, 0xe0, 0xbd, 0xba, 0x3c, 0x78, 0x5e, - 0xc9, 0xf6, 0xa9, 0x3c, 0xdd, 0x88, 0xf4, 0x13, 0x86, 0x9e, 0x94, 0x84, 0x25, 0x3e, 0xb2, 0xf3, - 0x72, 0xc3, 0x4c, 0x4a, 0x06, 0x30, 0x92, 0x3e, 0xf0, 0x7f, 0x99, 0x85, 0x53, 0x74, 0x55, 0x69, - 0xc9, 0x32, 0x77, 0x7a, 0x6e, 0xb7, 0xd2, 0x0f, 0xae, 0x0b, 0xd7, 0xc3, 0x9c, 0xc3, 0xf9, 0x63, - 0x33, 0x9d, 0xe8, 0x49, 0x45, 0x7f, 0x16, 0xf6, 0xa9, 0x78, 0x06, 0x8f, 0xe4, 0x42, 0x8c, 0x00, - 0xa3, 0x78, 0x4f, 0xbc, 0x50, 0x2f, 0xc8, 0x68, 0x68, 0x91, 0x4a, 0x1e, 0x6a, 0xcd, 0xd2, 0xd7, - 0xa9, 0x9c, 0x88, 0x4e, 0xbd, 0xc7, 0xd7, 0xa9, 0x9f, 0xe2, 0x74, 0x6a, 0xf9, 0xe0, 0x22, 0x49, - 0x5f, 0xb7, 0x5e, 0xe1, 0x6f, 0x0c, 0xf9, 0xdb, 0x76, 0x3b, 0x29, 0x6c, 0xd6, 0x85, 0xfd, 0x91, - 0xb2, 0x9c, 0x3f, 0x12, 0x7f, 0x1f, 0x45, 0x82, 0x99, 0x30, 0xcf, 0x75, 0x84, 0x2e, 0xcd, 0x81, - 0xa4, 0x7b, 0xdc, 0x49, 0x7a, 0x7b, 0xa8, 0xb9, 0x6e, 0x6c, 0x41, 0x63, 0x58, 0x5b, 0x9a, 0x83, - 0xfc, 0x92, 0xde, 0x71, 0xb0, 0x85, 0xbe, 0xc8, 0x66, 0xba, 0xaf, 0x48, 0x71, 0x00, 0x58, 0x84, - 0xfc, 0x26, 0x29, 0x8d, 0x99, 0xcc, 0x37, 0x89, 0xb5, 0x1e, 0xca, 0xa1, 0xca, 0xfe, 0x4d, 0x1a, - 0x9d, 0xaf, 0x87, 0xcc, 0xc8, 0xa6, 0xc8, 0x09, 0xa2, 0xf3, 0x0d, 0x66, 0x61, 0x2c, 0x17, 0x53, - 0xe5, 0x55, 0xbc, 0xe3, 0x8e, 0xf1, 0x17, 0xd2, 0x43, 0xb8, 0x00, 0xb2, 0xde, 0xb6, 0x49, 0xe7, - 0x38, 0xa5, 0xba, 0x8f, 0x49, 0x7d, 0x85, 0x7a, 0x45, 0x45, 0x59, 0x1e, 0xb7, 0xaf, 0x90, 0x10, - 0x17, 0xe9, 0x63, 0xf6, 0x1d, 0xe2, 0x28, 0xda, 0xed, 0x68, 0x2d, 0xec, 0x72, 0x9f, 0x1a, 0x6a, - 0xb4, 0x27, 0xcb, 0x7a, 0x3d, 0x59, 0xa8, 0x9d, 0xe6, 0x0e, 0xd0, 0x4e, 0x87, 0x5d, 0x86, 0xf4, - 0x65, 0x4e, 0x2a, 0x7e, 0x68, 0xcb, 0x90, 0xb1, 0x6c, 0x8c, 0xe1, 0xda, 0x51, 0xef, 0x20, 0xed, - 0x58, 0x5b, 0xeb, 0xb0, 0x9b, 0x34, 0x4c, 0x58, 0x23, 0x3b, 0x34, 0x3b, 0xcc, 0x26, 0x4d, 0x34, - 0x0f, 0x63, 0x40, 0x6b, 0x8e, 0xa1, 0xf5, 0x19, 0x36, 0x8c, 0xa6, 0xbc, 0x4f, 0x6a, 0x9b, 0x96, - 0x93, 0x6c, 0x9f, 0xd4, 0xe5, 0x4e, 0x25, 0xff, 0x25, 0x3d, 0x78, 0xc5, 0x9f, 0xab, 0x1e, 0xd5, - 0xf0, 0x99, 0xe0, 0xe0, 0xd5, 0x20, 0x06, 0xd2, 0x87, 0xf7, 0x8d, 0x87, 0x34, 0x78, 0x0e, 0xdb, - 0x1c, 0x59, 0x1b, 0x18, 0xd9, 0xd0, 0x39, 0x4c, 0x73, 0x8c, 0xe6, 0x21, 0x7d, 0xbc, 0xbe, 0x19, - 0x1a, 0x38, 0x5f, 0x3f, 0xc6, 0x81, 0xd3, 0x6b, 0x99, 0xb9, 0x21, 0x5b, 0xe6, 0xb0, 0xfb, 0x3f, - 0x4c, 0xd6, 0xa3, 0x1b, 0x30, 0x87, 0xd9, 0xff, 0x89, 0x61, 0x22, 0x7d, 0xc4, 0xdf, 0x20, 0x43, - 0xae, 0x3e, 0xfe, 0xf1, 0x72, 0xd8, 0xb9, 0x08, 0x91, 0x55, 0x7d, 0x64, 0xc3, 0xe5, 0x30, 0x73, - 0x91, 0x48, 0x16, 0xc6, 0x10, 0x78, 0xff, 0x28, 0xcc, 0x90, 0x25, 0x11, 0x6f, 0x9b, 0xf5, 0x9b, - 0x6c, 0xd4, 0x7c, 0x24, 0xc5, 0xb6, 0x7a, 0x0f, 0x4c, 0x7a, 0xfb, 0x77, 0x6c, 0xe4, 0x9c, 0x17, - 0x6b, 0x9f, 0x1e, 0x97, 0xaa, 0xff, 0xff, 0x81, 0x9c, 0x21, 0x46, 0xbe, 0x57, 0x3b, 0xac, 0x33, - 0xc4, 0xa1, 0xee, 0xd7, 0xfe, 0x69, 0x30, 0xa2, 0xfe, 0x97, 0xf4, 0x30, 0xef, 0xdd, 0xc7, 0xcd, - 0xf6, 0xd9, 0xc7, 0xfd, 0x70, 0x18, 0xcb, 0x3a, 0x8f, 0xe5, 0x9d, 0xa2, 0x22, 0x1c, 0xe1, 0x58, - 0xfb, 0x0e, 0x1f, 0xce, 0xb3, 0x1c, 0x9c, 0x0b, 0x07, 0xe2, 0x65, 0x0c, 0x07, 0x1f, 0xb3, 0xc1, - 0x98, 0xfb, 0xd1, 0x14, 0xdb, 0x71, 0xcf, 0xa9, 0x8a, 0xec, 0xbe, 0x53, 0x15, 0x5c, 0x4b, 0xcf, - 0x1d, 0xb0, 0xa5, 0x7f, 0x34, 0xac, 0x1d, 0x0d, 0x5e, 0x3b, 0x9e, 0x2e, 0x8e, 0xc8, 0xe8, 0x46, - 0xe6, 0x77, 0xfa, 0xea, 0x71, 0x8e, 0x53, 0x8f, 0xd2, 0xc1, 0x98, 0x49, 0x5f, 0x3f, 0xfe, 0xc8, - 0x9b, 0xd0, 0x1e, 0x72, 0x7b, 0x1f, 0x76, 0xab, 0x98, 0x13, 0xe2, 0xc8, 0x46, 0xee, 0x61, 0xb6, - 0x8a, 0x07, 0x71, 0x32, 0x86, 0x58, 0x6c, 0xb3, 0x30, 0x4d, 0x78, 0x3a, 0xa7, 0xb7, 0xb7, 0xb0, - 0x83, 0x5e, 0x49, 0x7d, 0x14, 0xbd, 0xc8, 0x97, 0x23, 0x0a, 0x4f, 0x14, 0x75, 0xde, 0x35, 0xa9, - 0x47, 0x07, 0x65, 0x72, 0x3e, 0xc4, 0xe0, 0xb8, 0x23, 0x28, 0x0e, 0xe4, 0x20, 0x7d, 0xc8, 0x3e, - 0x48, 0xdd, 0x6d, 0x56, 0xb5, 0x4b, 0xe6, 0xae, 0x83, 0x1e, 0x1c, 0x41, 0x07, 0xbd, 0x00, 0xf9, - 0x0e, 0xa1, 0xc6, 0x8e, 0x65, 0xc4, 0x4f, 0x77, 0x98, 0x08, 0x68, 0xf9, 0x2a, 0xfb, 0x33, 0xe9, - 0xd9, 0x8c, 0x40, 0x8e, 0x94, 0xce, 0xb8, 0xcf, 0x66, 0x0c, 0x28, 0x7f, 0x2c, 0x77, 0xec, 0x4c, - 0xba, 0xa5, 0xeb, 0x3b, 0xba, 0x33, 0xa2, 0x08, 0x0e, 0x1d, 0x97, 0x96, 0x17, 0xc1, 0x81, 0xbc, - 0x24, 0x3d, 0x31, 0x1a, 0x92, 0x8a, 0xfb, 0xfb, 0xb8, 0x4f, 0x8c, 0xc6, 0x17, 0x9f, 0x3e, 0x26, - 0xbf, 0x41, 0x5b, 0xd6, 0x59, 0xea, 0x7c, 0x9b, 0xa2, 0x5f, 0xef, 0xd0, 0x8d, 0x85, 0xb2, 0x76, - 0x78, 0x8d, 0xa5, 0x6f, 0xf9, 0xe9, 0x03, 0xf3, 0xdf, 0x7f, 0x14, 0x72, 0x8b, 0xf8, 0xfc, 0xee, - 0x16, 0xba, 0x03, 0x26, 0x1b, 0x16, 0xc6, 0x15, 0x63, 0xd3, 0x74, 0xa5, 0xeb, 0xb8, 0xcf, 0x1e, - 0x24, 0xec, 0xcd, 0xc5, 0x63, 0x1b, 0x6b, 0xed, 0xe0, 0xfc, 0x99, 0xf7, 0x8a, 0x5e, 0x24, 0x41, - 0xb6, 0xee, 0x68, 0x0e, 0x9a, 0xf2, 0xb1, 0x45, 0x0f, 0x86, 0xb1, 0xb8, 0x83, 0xc7, 0xe2, 0x7a, - 0x4e, 0x16, 0x84, 0x83, 0x79, 0xf7, 0xff, 0x08, 0x00, 0x10, 0x4c, 0xde, 0x6f, 0x9b, 0x86, 0x9b, - 0xc3, 0x3b, 0x02, 0xe9, 0xbd, 0xa3, 0x97, 0xfb, 0xe2, 0xbe, 0x8b, 0x13, 0xf7, 0xe3, 0xc5, 0x8a, - 0x18, 0xc3, 0x4a, 0x9b, 0x04, 0x53, 0xae, 0x68, 0x57, 0xb0, 0xd6, 0xb6, 0xd1, 0x8f, 0x04, 0xca, - 0x1f, 0x21, 0x66, 0xf4, 0x5e, 0xe1, 0x60, 0x9c, 0xb4, 0x56, 0x3e, 0xf1, 0x68, 0x8f, 0x0e, 0x6f, - 0xf3, 0x5f, 0xe2, 0x83, 0x91, 0xdc, 0x0c, 0x59, 0xdd, 0xd8, 0x34, 0x99, 0x7f, 0xe1, 0x95, 0x11, - 0xb4, 0x5d, 0x9d, 0x50, 0x49, 0x46, 0xc1, 0x48, 0x9d, 0xf1, 0x6c, 0x8d, 0xe5, 0xd2, 0xbb, 0xac, - 0x5b, 0x3a, 0xfa, 0xff, 0x0f, 0x14, 0xb6, 0xa2, 0x40, 0xb6, 0xab, 0x39, 0xdb, 0xac, 0x68, 0xf2, - 0xec, 0xda, 0xc8, 0xbb, 0x86, 0x66, 0x98, 0xc6, 0xa5, 0x1d, 0xfd, 0x99, 0xfe, 0xdd, 0xba, 0x5c, - 0x9a, 0xcb, 0xf9, 0x16, 0x36, 0xb0, 0xa5, 0x39, 0xb8, 0xbe, 0xb7, 0x45, 0xe6, 0x58, 0x93, 0x6a, - 0x38, 0x29, 0xb1, 0xfe, 0xbb, 0x1c, 0x47, 0xeb, 0xff, 0xa6, 0xde, 0xc1, 0x24, 0x52, 0x13, 0xd3, - 0x7f, 0xef, 0x3d, 0x91, 0xfe, 0xf7, 0x29, 0x22, 0x7d, 0x34, 0xbe, 0x2b, 0xc1, 0x4c, 0xdd, 0x55, - 0xb8, 0xfa, 0xee, 0xce, 0x8e, 0x66, 0x5d, 0x42, 0xd7, 0x06, 0xa8, 0x84, 0x54, 0x33, 0xc3, 0xfb, - 0xa5, 0x7c, 0x44, 0xf8, 0x5a, 0x69, 0xd6, 0xb4, 0x43, 0x25, 0x24, 0x6e, 0x07, 0x4f, 0x84, 0x9c, - 0xab, 0xde, 0x9e, 0xc7, 0x65, 0x6c, 0x43, 0xa0, 0x39, 0x05, 0x23, 0x5a, 0x0d, 0xe4, 0x6d, 0x0c, - 0xd1, 0x34, 0x24, 0x38, 0x5a, 0x77, 0xb4, 0xd6, 0x85, 0x65, 0xd3, 0x32, 0x77, 0x1d, 0xdd, 0xc0, - 0x36, 0x7a, 0x4c, 0x80, 0x80, 0xa7, 0xff, 0x99, 0x40, 0xff, 0xd1, 0xf7, 0x33, 0xa2, 0xa3, 0xa8, - 0xdf, 0xad, 0x86, 0xc9, 0x47, 0x04, 0xa8, 0x12, 0x1b, 0x17, 0x45, 0x28, 0xa6, 0x2f, 0xb4, 0xd7, - 0xcb, 0x50, 0x28, 0x3f, 0xd0, 0x35, 0x2d, 0x67, 0xd5, 0x6c, 0x69, 0x1d, 0xdb, 0x31, 0x2d, 0x8c, - 0x6a, 0xb1, 0x52, 0x73, 0x7b, 0x98, 0xb6, 0xd9, 0x0a, 0x06, 0x47, 0xf6, 0x16, 0x56, 0x3b, 0x99, - 0xd7, 0xf1, 0x0f, 0x0a, 0xef, 0x32, 0x52, 0xa9, 0xf4, 0x72, 0x14, 0xa1, 0xe7, 0xfd, 0xba, 0xb4, - 0x64, 0x87, 0x25, 0xc4, 0x76, 0x1e, 0x85, 0x98, 0x1a, 0xc3, 0x52, 0xb9, 0x04, 0xb3, 0xf5, 0xdd, - 0xf3, 0x3e, 0x11, 0x3b, 0x6c, 0x84, 0xbc, 0x4a, 0x38, 0x4a, 0x05, 0x53, 0xbc, 0x30, 0xa1, 0x08, - 0xf9, 0x5e, 0x07, 0xb3, 0x76, 0x38, 0x1b, 0xc3, 0x9b, 0x4f, 0x14, 0x8c, 0x4e, 0x31, 0xb8, 0xd4, - 0xf4, 0x05, 0xf8, 0x4e, 0x09, 0x66, 0x6b, 0x5d, 0x6c, 0xe0, 0x36, 0xf5, 0x82, 0xe4, 0x04, 0xf8, - 0xa2, 0x84, 0x02, 0xe4, 0x08, 0x45, 0x08, 0x30, 0xf0, 0x58, 0x5e, 0xf4, 0x84, 0x17, 0x24, 0x24, - 0x12, 0x5c, 0x5c, 0x69, 0xe9, 0x0b, 0xee, 0x0b, 0x12, 0x4c, 0xab, 0xbb, 0xc6, 0xba, 0x65, 0xba, - 0xa3, 0xb1, 0x85, 0xee, 0x0c, 0x3a, 0x88, 0x9b, 0xe0, 0x58, 0x7b, 0xd7, 0x22, 0xeb, 0x4f, 0x15, - 0xa3, 0x8e, 0x5b, 0xa6, 0xd1, 0xb6, 0x49, 0x3d, 0x72, 0xea, 0xfe, 0x0f, 0xb7, 0x67, 0x9f, 0xfb, - 0x35, 0x39, 0x83, 0x9e, 0x27, 0x1c, 0xea, 0x86, 0x56, 0x3e, 0x54, 0xb4, 0x78, 0x4f, 0x20, 0x18, - 0xd0, 0x66, 0x50, 0x09, 0xe9, 0x0b, 0xf7, 0x33, 0x12, 0x28, 0xc5, 0x56, 0xcb, 0xdc, 0x35, 0x9c, - 0x3a, 0xee, 0xe0, 0x96, 0xd3, 0xb0, 0xb4, 0x16, 0x0e, 0xdb, 0xcf, 0x05, 0x90, 0xdb, 0xba, 0xc5, - 0xfa, 0x60, 0xf7, 0x91, 0xc9, 0xf1, 0x45, 0xc2, 0x3b, 0x8e, 0xb4, 0x96, 0xfb, 0x4b, 0x49, 0x20, - 0x4e, 0xb1, 0x7d, 0x45, 0xc1, 0x82, 0xd2, 0x97, 0xea, 0x47, 0x25, 0x98, 0xf2, 0x7a, 0xec, 0x2d, - 0x11, 0x61, 0xfe, 0x46, 0xc2, 0xc9, 0x88, 0x4f, 0x3c, 0x81, 0x0c, 0xdf, 0x9a, 0x60, 0x56, 0x11, - 0x45, 0x3f, 0x99, 0xe8, 0x8a, 0xc9, 0x45, 0xe7, 0xbe, 0x56, 0x6b, 0xcd, 0xa5, 0xda, 0xea, 0x62, - 0x59, 0x2d, 0xc8, 0xe8, 0x8b, 0x12, 0x64, 0xd7, 0x75, 0x63, 0x2b, 0x1c, 0x5d, 0xe9, 0xb8, 0x6b, - 0x47, 0xb6, 0xf1, 0x03, 0xac, 0xa5, 0xd3, 0x17, 0xe5, 0x56, 0x38, 0x6e, 0xec, 0xee, 0x9c, 0xc7, - 0x56, 0x6d, 0x93, 0x8c, 0xb2, 0x76, 0xc3, 0xac, 0x63, 0x83, 0x1a, 0xa1, 0x39, 0xb5, 0xef, 0x37, - 0xde, 0x04, 0x13, 0x98, 0x3c, 0xb8, 0x9c, 0x44, 0x48, 0xdc, 0x67, 0x4a, 0x0a, 0x31, 0x95, 0x68, - 0xda, 0xd0, 0x87, 0x78, 0xfa, 0x9a, 0xfa, 0xc7, 0x39, 0x38, 0x51, 0x34, 0x2e, 0x11, 0x9b, 0x82, - 0x76, 0xf0, 0xa5, 0x6d, 0xcd, 0xd8, 0xc2, 0x64, 0x80, 0xf0, 0x25, 0x1e, 0x0e, 0xd1, 0x9f, 0xe1, - 0x43, 0xf4, 0x2b, 0x2a, 0x4c, 0x98, 0x56, 0x1b, 0x5b, 0x0b, 0x97, 0x08, 0x4f, 0xbd, 0xcb, 0xce, - 0xac, 0x4d, 0xf6, 0x2b, 0x62, 0x9e, 0x91, 0x9f, 0xaf, 0xd1, 0xff, 0x55, 0x8f, 0xd0, 0x99, 0x9b, - 0x60, 0x82, 0xa5, 0x29, 0x33, 0x30, 0x59, 0x53, 0x17, 0xcb, 0x6a, 0xb3, 0xb2, 0x58, 0x38, 0xa2, - 0x5c, 0x06, 0x47, 0x2b, 0x8d, 0xb2, 0x5a, 0x6c, 0x54, 0x6a, 0xd5, 0x26, 0x49, 0x2f, 0x64, 0xd0, - 0x73, 0xb2, 0xa2, 0x9e, 0xbd, 0xf1, 0xcc, 0xf4, 0x83, 0x55, 0x85, 0x89, 0x16, 0xcd, 0x40, 0x86, - 0xd0, 0xe9, 0x44, 0xb5, 0x63, 0x04, 0x69, 0x82, 0xea, 0x11, 0x52, 0x4e, 0x03, 0x5c, 0xb4, 0x4c, - 0x63, 0x2b, 0x38, 0x75, 0x38, 0xa9, 0x86, 0x52, 0xd0, 0x83, 0x19, 0xc8, 0xd3, 0x7f, 0xc8, 0x95, - 0x24, 0xe4, 0x29, 0x10, 0xbc, 0xf7, 0xee, 0x5a, 0xbc, 0x44, 0x5e, 0xc1, 0x44, 0x8b, 0xbd, 0xba, - 0xba, 0x48, 0x65, 0x40, 0x2d, 0x61, 0x56, 0x95, 0x9b, 0x21, 0x4f, 0xff, 0x65, 0x5e, 0x07, 0xd1, - 0xe1, 0x45, 0x69, 0x36, 0x41, 0x3f, 0x65, 0x71, 0x99, 0xa6, 0xaf, 0xcd, 0xef, 0x93, 0x60, 0xb2, - 0x8a, 0x9d, 0xd2, 0x36, 0x6e, 0x5d, 0x40, 0x8f, 0xe3, 0x17, 0x40, 0x3b, 0x3a, 0x36, 0x9c, 0xfb, - 0x76, 0x3a, 0xfe, 0x02, 0xa8, 0x97, 0x80, 0x7e, 0x31, 0xdc, 0xf9, 0xde, 0xcd, 0xeb, 0xcf, 0x8d, - 0x7d, 0xea, 0xea, 0x95, 0x10, 0xa1, 0x32, 0x27, 0x21, 0x6f, 0x61, 0x7b, 0xb7, 0xe3, 0x2d, 0xa2, - 0xb1, 0x37, 0xf4, 0xb0, 0x2f, 0xce, 0x12, 0x27, 0xce, 0x9b, 0xc5, 0x8b, 0x18, 0x43, 0xbc, 0xd2, - 0x2c, 0x4c, 0x54, 0x0c, 0xdd, 0xd1, 0xb5, 0x0e, 0x7a, 0x5e, 0x16, 0x66, 0xeb, 0xd8, 0x59, 0xd7, - 0x2c, 0x6d, 0x07, 0x3b, 0xd8, 0xb2, 0xd1, 0xb7, 0xf9, 0x3e, 0xa1, 0xdb, 0xd1, 0x9c, 0x4d, 0xd3, - 0xda, 0xf1, 0x54, 0xd3, 0x7b, 0x77, 0x55, 0x73, 0x0f, 0x5b, 0x76, 0xc0, 0x97, 0xf7, 0xea, 0x7e, - 0xb9, 0x68, 0x5a, 0x17, 0xdc, 0x41, 0x90, 0x4d, 0xd3, 0xd8, 0xab, 0x4b, 0xaf, 0x63, 0x6e, 0xad, - 0xe2, 0x3d, 0xec, 0x85, 0x4b, 0xf3, 0xdf, 0xdd, 0xb9, 0x40, 0xdb, 0xac, 0x9a, 0x8e, 0xdb, 0x69, - 0xaf, 0x9a, 0x5b, 0x34, 0x5e, 0xec, 0xa4, 0xca, 0x27, 0x06, 0xb9, 0xb4, 0x3d, 0x4c, 0x72, 0xe5, - 0xc3, 0xb9, 0x58, 0xa2, 0x32, 0x0f, 0x8a, 0xff, 0x5b, 0x03, 0x77, 0xf0, 0x0e, 0x76, 0xac, 0x4b, - 0xe4, 0x5a, 0x88, 0x49, 0xb5, 0xcf, 0x17, 0x36, 0x40, 0x8b, 0x4f, 0xd6, 0x99, 0xf4, 0xe6, 0x39, - 0xc9, 0x1d, 0x68, 0xb2, 0x2e, 0x42, 0x71, 0x2c, 0xd7, 0x5e, 0xc9, 0xae, 0x35, 0xf3, 0x12, 0x19, - 0xb2, 0x64, 0xf0, 0x7c, 0x43, 0x86, 0x5b, 0x61, 0xda, 0xc1, 0xb6, 0xad, 0x6d, 0x61, 0x6f, 0x85, - 0x89, 0xbd, 0x2a, 0xb7, 0x41, 0xae, 0x43, 0x30, 0xa5, 0x83, 0xc3, 0xb5, 0x5c, 0xcd, 0x5c, 0x03, - 0xc3, 0xa5, 0xe5, 0x8f, 0x04, 0x04, 0x6e, 0x95, 0xfe, 0x71, 0xe6, 0x1e, 0xc8, 0x51, 0xf8, 0xa7, - 0x20, 0xb7, 0x58, 0x5e, 0xd8, 0x58, 0x2e, 0x1c, 0x71, 0x1f, 0x3d, 0xfe, 0xa6, 0x20, 0xb7, 0x54, - 0x6c, 0x14, 0x57, 0x0b, 0x92, 0x5b, 0x8f, 0x4a, 0x75, 0xa9, 0x56, 0x90, 0xdd, 0xc4, 0xf5, 0x62, - 0xb5, 0x52, 0x2a, 0x64, 0x95, 0x69, 0x98, 0x38, 0x57, 0x54, 0xab, 0x95, 0xea, 0x72, 0x21, 0x87, - 0xfe, 0x2e, 0x8c, 0xdf, 0xed, 0x3c, 0x7e, 0xd7, 0x45, 0xf1, 0xd4, 0x0f, 0xb2, 0x97, 0xfa, 0x90, - 0xdd, 0xc9, 0x41, 0xf6, 0xa3, 0x22, 0x44, 0xc6, 0xe0, 0xce, 0x94, 0x87, 0x89, 0x75, 0xcb, 0x6c, - 0x61, 0xdb, 0x46, 0xbf, 0x29, 0x41, 0xbe, 0xa4, 0x19, 0x2d, 0xdc, 0x41, 0x57, 0x04, 0x50, 0x51, - 0x57, 0xd1, 0x8c, 0x7f, 0x5a, 0xec, 0x9f, 0x32, 0xa2, 0xbd, 0x1f, 0xa3, 0x3b, 0x4f, 0x69, 0x46, - 0xc8, 0x47, 0xac, 0x97, 0x8b, 0x25, 0x35, 0x86, 0xab, 0x71, 0x24, 0x98, 0x62, 0xab, 0x01, 0xe7, - 0x71, 0x78, 0x1e, 0xfe, 0xed, 0x8c, 0xe8, 0xe4, 0xd0, 0xab, 0x81, 0x4f, 0x26, 0x42, 0x1e, 0x62, - 0x13, 0xc1, 0x41, 0xd4, 0xc6, 0xb0, 0x79, 0x28, 0xc1, 0xf4, 0x86, 0x61, 0xf7, 0x13, 0x8a, 0x78, - 0x1c, 0x7d, 0xaf, 0x1a, 0x21, 0x42, 0x07, 0x8a, 0xa3, 0x3f, 0x98, 0x5e, 0xfa, 0x82, 0xf9, 0x76, - 0x06, 0x8e, 0x2f, 0x63, 0x03, 0x5b, 0x7a, 0x8b, 0xd6, 0xc0, 0x93, 0xc4, 0x9d, 0xbc, 0x24, 0x1e, - 0xc7, 0x71, 0xde, 0xef, 0x0f, 0x5e, 0x02, 0xaf, 0xf0, 0x25, 0x70, 0x37, 0x27, 0x81, 0x9b, 0x04, - 0xe9, 0x8c, 0xe1, 0x3e, 0xf4, 0x29, 0x98, 0xa9, 0x9a, 0x8e, 0xbe, 0xa9, 0xb7, 0xa8, 0x0f, 0xda, - 0x8b, 0x65, 0xc8, 0xae, 0xea, 0xb6, 0x83, 0x8a, 0x41, 0x77, 0x72, 0x0d, 0x4c, 0xeb, 0x46, 0xab, - 0xb3, 0xdb, 0xc6, 0x2a, 0xd6, 0x68, 0xbf, 0x32, 0xa9, 0x86, 0x93, 0x82, 0xad, 0x7d, 0x97, 0x2d, - 0xd9, 0xdb, 0xda, 0xff, 0xa4, 0xf0, 0x32, 0x4c, 0x98, 0x05, 0x12, 0x90, 0x32, 0xc2, 0xee, 0x2a, - 0xc2, 0xac, 0x11, 0xca, 0xea, 0x19, 0xec, 0xbd, 0x17, 0x0a, 0x84, 0xc9, 0xa9, 0xfc, 0x1f, 0xe8, - 0xdd, 0x42, 0x8d, 0x75, 0x10, 0x43, 0xc9, 0x90, 0x59, 0x1a, 0x62, 0x92, 0xac, 0xc0, 0x5c, 0xa5, - 0xda, 0x28, 0xab, 0xd5, 0xe2, 0x2a, 0xcb, 0x22, 0xa3, 0xef, 0x4a, 0x90, 0x53, 0x71, 0xb7, 0x73, - 0x29, 0x1c, 0x31, 0x9a, 0x39, 0x8a, 0x67, 0x7c, 0x47, 0x71, 0x65, 0x09, 0x40, 0x6b, 0xb9, 0x05, - 0x93, 0x2b, 0xb5, 0xa4, 0xbe, 0x71, 0x4c, 0xb9, 0x0a, 0x16, 0xfd, 0xdc, 0x6a, 0xe8, 0x4f, 0xf4, - 0x90, 0xf0, 0xce, 0x11, 0x47, 0x8d, 0x70, 0x18, 0xd1, 0x27, 0xbc, 0x47, 0x68, 0xb3, 0x67, 0x20, - 0xb9, 0xc3, 0x11, 0xff, 0x97, 0x24, 0xc8, 0x36, 0xdc, 0xde, 0x32, 0xd4, 0x71, 0x7e, 0x62, 0x38, - 0x1d, 0x77, 0xc9, 0x44, 0xe8, 0xf8, 0x5d, 0x30, 0x13, 0xd6, 0x58, 0xe6, 0x2a, 0x11, 0xab, 0xe2, - 0xdc, 0x0f, 0xc3, 0x68, 0x78, 0x1f, 0x76, 0x0e, 0x47, 0xc4, 0x1f, 0x7b, 0x3c, 0xc0, 0x1a, 0xde, - 0x39, 0x8f, 0x2d, 0x7b, 0x5b, 0xef, 0xa2, 0xbf, 0x97, 0x61, 0x6a, 0x19, 0x3b, 0x75, 0x47, 0x73, - 0x76, 0xed, 0x9e, 0xed, 0x4e, 0xc3, 0x2c, 0x69, 0xad, 0x6d, 0xcc, 0xba, 0x23, 0xef, 0x15, 0xbd, - 0x5d, 0x16, 0xf5, 0x27, 0x0a, 0xca, 0x99, 0xf7, 0xcb, 0x88, 0xc0, 0xe4, 0x09, 0x90, 0x6d, 0x6b, - 0x8e, 0xc6, 0xb0, 0xb8, 0xa2, 0x07, 0x8b, 0x80, 0x90, 0x4a, 0xb2, 0xa1, 0xdf, 0x95, 0x44, 0x1c, - 0x8a, 0x04, 0xca, 0x4f, 0x06, 0xc2, 0xbb, 0x33, 0x43, 0xa0, 0x70, 0x0c, 0x66, 0xab, 0xb5, 0x46, - 0x73, 0xb5, 0xb6, 0xbc, 0x5c, 0x76, 0x53, 0x0b, 0xb2, 0x72, 0x12, 0x94, 0xf5, 0xe2, 0x7d, 0x6b, - 0xe5, 0x6a, 0xa3, 0x59, 0xad, 0x2d, 0x96, 0xd9, 0x9f, 0x59, 0xe5, 0x28, 0x4c, 0x97, 0x8a, 0xa5, - 0x15, 0x2f, 0x21, 0xa7, 0x9c, 0x82, 0xe3, 0x6b, 0xe5, 0xb5, 0x85, 0xb2, 0x5a, 0x5f, 0xa9, 0xac, - 0x37, 0x5d, 0x32, 0x4b, 0xb5, 0x8d, 0xea, 0x62, 0x21, 0xaf, 0x20, 0x38, 0x19, 0xfa, 0x72, 0x4e, - 0xad, 0x55, 0x97, 0x9b, 0xf5, 0x46, 0xb1, 0x51, 0x2e, 0x4c, 0x28, 0x97, 0xc1, 0xd1, 0x52, 0xb1, - 0x4a, 0xb2, 0x97, 0x6a, 0xd5, 0x6a, 0xb9, 0xd4, 0x28, 0x4c, 0xa2, 0xef, 0x67, 0x61, 0xba, 0x62, - 0x57, 0xb5, 0x1d, 0x7c, 0x56, 0xeb, 0xe8, 0x6d, 0xf4, 0xbc, 0xd0, 0xcc, 0xe3, 0x3a, 0x98, 0xb5, - 0xe8, 0x23, 0x6e, 0x37, 0x74, 0x4c, 0xd1, 0x9c, 0x55, 0xf9, 0x44, 0x77, 0x4e, 0x6e, 0x10, 0x02, - 0xde, 0x9c, 0x9c, 0xbe, 0x29, 0x0b, 0x00, 0xf4, 0xa9, 0x11, 0x5c, 0xee, 0x7a, 0xa6, 0xb7, 0x35, - 0x69, 0x3b, 0xd8, 0xc6, 0xd6, 0x9e, 0xde, 0xc2, 0x5e, 0x4e, 0x35, 0xf4, 0x17, 0xfa, 0xb2, 0x2c, - 0xba, 0xbf, 0x18, 0x02, 0x35, 0x54, 0x9d, 0x88, 0xde, 0xf0, 0x97, 0x64, 0x91, 0xdd, 0x41, 0x21, - 0x92, 0xc9, 0x34, 0xe5, 0x57, 0xa5, 0xe1, 0x96, 0x6d, 0x1b, 0xb5, 0x5a, 0xb3, 0xbe, 0x52, 0x53, - 0x1b, 0x05, 0x59, 0x99, 0x81, 0x49, 0xf7, 0x75, 0xb5, 0x56, 0x5d, 0x2e, 0x64, 0x95, 0x13, 0x70, - 0x6c, 0xa5, 0x58, 0x6f, 0x56, 0xaa, 0x67, 0x8b, 0xab, 0x95, 0xc5, 0x66, 0x69, 0xa5, 0xa8, 0xd6, - 0x0b, 0x39, 0xe5, 0x0a, 0x38, 0xd1, 0xa8, 0x94, 0xd5, 0xe6, 0x52, 0xb9, 0xd8, 0xd8, 0x50, 0xcb, - 0xf5, 0x66, 0xb5, 0xd6, 0xac, 0x16, 0xd7, 0xca, 0x85, 0xbc, 0xdb, 0xfc, 0xc9, 0xa7, 0x40, 0x6d, - 0x26, 0xf6, 0x2b, 0xe3, 0x64, 0x84, 0x32, 0x4e, 0xf5, 0x2a, 0x23, 0x84, 0xd5, 0x4a, 0x2d, 0xd7, - 0xcb, 0xea, 0xd9, 0x72, 0x61, 0xba, 0x9f, 0xae, 0xcd, 0x28, 0xc7, 0xa1, 0xe0, 0xf2, 0xd0, 0xac, - 0xd4, 0xbd, 0x9c, 0x8b, 0x85, 0x59, 0xf4, 0xd1, 0x3c, 0x9c, 0x54, 0xf1, 0x96, 0x6e, 0x3b, 0xd8, - 0x5a, 0xd7, 0x2e, 0xed, 0x60, 0xc3, 0xf1, 0x3a, 0xf9, 0x7f, 0x4d, 0xac, 0x8c, 0x6b, 0x30, 0xdb, - 0xa5, 0x34, 0xd6, 0xb0, 0xb3, 0x6d, 0xb6, 0xd9, 0x28, 0xfc, 0xb8, 0xc8, 0x9e, 0x63, 0x7e, 0x3d, - 0x9c, 0x5d, 0xe5, 0xff, 0x0e, 0xe9, 0xb6, 0x1c, 0xa3, 0xdb, 0xd9, 0x61, 0x74, 0x5b, 0xb9, 0x0a, - 0xa6, 0x76, 0x6d, 0x6c, 0x95, 0x77, 0x34, 0xbd, 0xe3, 0x5d, 0xce, 0xe9, 0x27, 0xa0, 0xb7, 0x64, - 0x45, 0x4f, 0xac, 0x84, 0xea, 0xd2, 0x5f, 0x8c, 0x11, 0x7d, 0xeb, 0x69, 0x00, 0x56, 0xd9, 0x0d, - 0xab, 0xc3, 0x94, 0x35, 0x94, 0xe2, 0xf2, 0x77, 0x5e, 0xef, 0x74, 0x74, 0x63, 0xcb, 0xdf, 0xf7, - 0x0f, 0x12, 0xd0, 0xaf, 0xca, 0x22, 0x27, 0x58, 0x92, 0xf2, 0x96, 0xac, 0x35, 0x3d, 0x24, 0x8d, - 0xb9, 0xdf, 0xdd, 0xdf, 0x74, 0xf2, 0x4a, 0x01, 0x66, 0x48, 0x1a, 0x6b, 0x81, 0x85, 0x09, 0xb7, - 0x0f, 0xf6, 0xc8, 0xad, 0x95, 0x1b, 0x2b, 0xb5, 0x45, 0xff, 0xdb, 0xa4, 0x4b, 0xd2, 0x65, 0xa6, - 0x58, 0xbd, 0x8f, 0xb4, 0xc6, 0x29, 0xe5, 0x31, 0x70, 0x45, 0xa8, 0xc3, 0x2e, 0xae, 0xaa, 0xe5, - 0xe2, 0xe2, 0x7d, 0xcd, 0xf2, 0x33, 0x2a, 0xf5, 0x46, 0x9d, 0x6f, 0x5c, 0x5e, 0x3b, 0x9a, 0x76, - 0xf9, 0x2d, 0xaf, 0x15, 0x2b, 0xab, 0xac, 0x7f, 0x5f, 0xaa, 0xa9, 0x6b, 0xc5, 0x46, 0x61, 0x06, - 0xbd, 0x44, 0x86, 0xc2, 0x32, 0x76, 0xd6, 0x4d, 0xcb, 0xd1, 0x3a, 0xab, 0xba, 0x71, 0x61, 0xc3, - 0xea, 0x70, 0x93, 0x4d, 0xe1, 0x30, 0x1d, 0xfc, 0x10, 0xc9, 0x11, 0x8c, 0xde, 0x11, 0xef, 0x92, - 0x6c, 0x81, 0x32, 0x05, 0x09, 0xe8, 0x59, 0x92, 0xc8, 0x72, 0xb7, 0x78, 0xa9, 0xc9, 0xf4, 0xe4, - 0xd9, 0xe3, 0x1e, 0x9f, 0xfb, 0xa0, 0x96, 0x47, 0xcf, 0xcd, 0xc2, 0xe4, 0x92, 0x6e, 0x68, 0x1d, - 0xfd, 0x99, 0x5c, 0xfc, 0xd2, 0xa0, 0x8f, 0xc9, 0xc4, 0xf4, 0x31, 0xd2, 0x50, 0xe3, 0xe7, 0xaf, - 0xcb, 0xa2, 0xcb, 0x0b, 0x21, 0xd9, 0x7b, 0x4c, 0x46, 0x0c, 0x9e, 0xef, 0x97, 0x44, 0x96, 0x17, - 0x06, 0xd3, 0x4b, 0x86, 0xe1, 0xc7, 0x7f, 0x30, 0x6c, 0xac, 0x9e, 0xf6, 0x3d, 0xd9, 0x4f, 0x15, - 0xa6, 0xd0, 0x9f, 0xcb, 0x80, 0x96, 0xb1, 0x73, 0x16, 0x5b, 0xfe, 0x54, 0x80, 0xf4, 0xfa, 0xcc, - 0xde, 0x0e, 0x35, 0xd9, 0x37, 0x84, 0x01, 0x3c, 0xc7, 0x03, 0x58, 0x8c, 0x69, 0x3c, 0x11, 0xa4, - 0x23, 0x1a, 0x6f, 0x05, 0xf2, 0x36, 0xf9, 0xce, 0xd4, 0xec, 0x89, 0xd1, 0xc3, 0x25, 0x21, 0x16, - 0xa6, 0x4e, 0x09, 0xab, 0x8c, 0x00, 0xfa, 0x8e, 0x3f, 0x09, 0xfa, 0x49, 0x4e, 0x3b, 0x96, 0x0e, - 0xcc, 0x6c, 0x32, 0x7d, 0xb1, 0xd2, 0x55, 0x97, 0x7e, 0xf6, 0x0d, 0x7a, 0x7f, 0x0e, 0x8e, 0xf7, - 0xab, 0x0e, 0xfa, 0xbd, 0x0c, 0xb7, 0xc3, 0x8e, 0xc9, 0x90, 0x9f, 0x61, 0x1b, 0x88, 0xee, 0x8b, - 0xf2, 0x64, 0x38, 0xe1, 0x2f, 0xc3, 0x35, 0xcc, 0x2a, 0xbe, 0x68, 0x77, 0xb0, 0xe3, 0x60, 0x8b, - 0x54, 0x6d, 0x52, 0xed, 0xff, 0x51, 0x79, 0x2a, 0x5c, 0xae, 0x1b, 0xb6, 0xde, 0xc6, 0x56, 0x43, - 0xef, 0xda, 0x45, 0xa3, 0xdd, 0xd8, 0x75, 0x4c, 0x4b, 0xd7, 0xd8, 0x55, 0x92, 0x93, 0x6a, 0xd4, - 0x67, 0xe5, 0x46, 0x28, 0xe8, 0x76, 0xcd, 0x38, 0x6f, 0x6a, 0x56, 0x5b, 0x37, 0xb6, 0x56, 0x75, - 0xdb, 0x61, 0x1e, 0xc0, 0xfb, 0xd2, 0xd1, 0x3f, 0xc8, 0xa2, 0x87, 0xe9, 0x06, 0xc0, 0x1a, 0xd1, - 0xa1, 0xfc, 0xa2, 0x2c, 0x72, 0x3c, 0x2e, 0x19, 0xed, 0x64, 0xca, 0xf2, 0x9c, 0x71, 0x1b, 0x12, - 0xfd, 0x47, 0x70, 0xd2, 0xb5, 0xd0, 0x74, 0xcf, 0x10, 0x38, 0x5b, 0x56, 0x2b, 0x4b, 0x95, 0xb2, - 0x6b, 0x56, 0x9c, 0x80, 0x63, 0xc1, 0xb7, 0xc5, 0xfb, 0x9a, 0xf5, 0x72, 0xb5, 0x51, 0x98, 0x74, - 0xfb, 0x29, 0x9a, 0xbc, 0x54, 0xac, 0xac, 0x96, 0x17, 0x9b, 0x8d, 0x9a, 0xfb, 0x65, 0x71, 0x38, - 0xd3, 0x02, 0x3d, 0x98, 0x85, 0xa3, 0x44, 0xb6, 0x97, 0x88, 0x54, 0x5d, 0xa1, 0xf4, 0xf8, 0xda, - 0xfa, 0x00, 0x4d, 0x51, 0xf1, 0xa2, 0x4f, 0x0b, 0xdf, 0x94, 0x19, 0x82, 0xb0, 0xa7, 0x8c, 0x08, - 0xcd, 0xf8, 0xb6, 0x24, 0x12, 0xa1, 0x42, 0x98, 0x6c, 0x32, 0xa5, 0xf8, 0xb7, 0x71, 0x8f, 0x38, - 0xd1, 0xe0, 0x13, 0x2b, 0xb3, 0x44, 0x7e, 0x7e, 0xc6, 0x7a, 0x45, 0x25, 0xea, 0x30, 0x07, 0x40, - 0x52, 0x88, 0x06, 0x51, 0x3d, 0xe8, 0x3b, 0x5e, 0x45, 0xe9, 0x41, 0xb1, 0xd4, 0xa8, 0x9c, 0x2d, - 0x47, 0xe9, 0xc1, 0xa7, 0x64, 0x98, 0x5c, 0xc6, 0x8e, 0x3b, 0xa7, 0xb2, 0xd1, 0xd3, 0x04, 0xd6, - 0x7f, 0x5c, 0x33, 0xa6, 0x63, 0xb6, 0xb4, 0x8e, 0xbf, 0x0c, 0x40, 0xdf, 0xd0, 0x2f, 0x0c, 0x63, - 0x82, 0x78, 0x45, 0x47, 0x8c, 0x57, 0x3f, 0x0e, 0x39, 0xc7, 0xfd, 0xcc, 0x96, 0xa1, 0x7f, 0x24, - 0x72, 0xb8, 0x72, 0x89, 0x2c, 0x6a, 0x8e, 0xa6, 0xd2, 0xfc, 0xa1, 0xd1, 0x49, 0xd0, 0x76, 0x89, - 0x60, 0xe4, 0x07, 0xd1, 0xfe, 0xfc, 0x3b, 0x19, 0x4e, 0xd0, 0xf6, 0x51, 0xec, 0x76, 0xeb, 0x8e, - 0x69, 0x61, 0x15, 0xb7, 0xb0, 0xde, 0x75, 0x7a, 0xd6, 0xf7, 0x2c, 0x9a, 0xea, 0x6d, 0x36, 0xb3, - 0x57, 0xf4, 0x5a, 0x59, 0x34, 0x06, 0xf3, 0xbe, 0xf6, 0xd8, 0x53, 0x5e, 0x44, 0x63, 0xff, 0xb0, - 0x24, 0x12, 0x55, 0x39, 0x21, 0xf1, 0x64, 0x40, 0x7d, 0xe0, 0x10, 0x80, 0xf2, 0x56, 0x6e, 0xd4, - 0x72, 0xa9, 0x5c, 0x59, 0x77, 0x07, 0x81, 0xab, 0xe1, 0xca, 0xf5, 0x0d, 0xb5, 0xb4, 0x52, 0xac, - 0x97, 0x9b, 0x6a, 0x79, 0xb9, 0x52, 0x6f, 0x30, 0xa7, 0x2c, 0xfa, 0xd7, 0x84, 0x72, 0x15, 0x9c, - 0xaa, 0x6f, 0x2c, 0xd4, 0x4b, 0x6a, 0x65, 0x9d, 0xa4, 0xab, 0xe5, 0x6a, 0xf9, 0x1c, 0xfb, 0x3a, - 0x89, 0xde, 0x5b, 0x80, 0x69, 0x77, 0x02, 0x50, 0xa7, 0xf3, 0x02, 0xf4, 0x8d, 0x2c, 0x4c, 0xab, - 0xd8, 0x36, 0x3b, 0x7b, 0x64, 0x8e, 0x30, 0xae, 0xa9, 0xc7, 0xb7, 0x64, 0xd1, 0xf3, 0xdb, 0x21, - 0x66, 0xe7, 0x43, 0x8c, 0x46, 0x4f, 0x34, 0xb5, 0x3d, 0x4d, 0xef, 0x68, 0xe7, 0x59, 0x57, 0x33, - 0xa9, 0x06, 0x09, 0xca, 0x3c, 0x28, 0xe6, 0x45, 0x03, 0x5b, 0xf5, 0xd6, 0xc5, 0xb2, 0xb3, 0x5d, - 0x6c, 0xb7, 0x2d, 0x6c, 0xdb, 0x6c, 0xf5, 0xa2, 0xcf, 0x17, 0xe5, 0x06, 0x38, 0x4a, 0x52, 0x43, - 0x99, 0xa9, 0x83, 0x4c, 0x6f, 0xb2, 0x9f, 0xb3, 0x68, 0x5c, 0xf2, 0x72, 0xe6, 0x42, 0x39, 0x83, - 0xe4, 0xf0, 0x71, 0x89, 0x3c, 0x7f, 0x4a, 0xe7, 0x1a, 0x98, 0x36, 0xb4, 0x1d, 0x5c, 0x7e, 0xa0, - 0xab, 0x5b, 0xd8, 0x26, 0x8e, 0x31, 0xb2, 0x1a, 0x4e, 0x42, 0xef, 0x17, 0x3a, 0x6f, 0x2e, 0x26, - 0xb1, 0x64, 0xba, 0xbf, 0x3c, 0x84, 0xea, 0xf7, 0xe9, 0x67, 0x64, 0xf4, 0x5e, 0x19, 0x66, 0x18, - 0x53, 0x45, 0xe3, 0x52, 0xa5, 0x8d, 0xae, 0xe6, 0x8c, 0x5f, 0xcd, 0x4d, 0xf3, 0x8c, 0x5f, 0xf2, - 0x82, 0x7e, 0x59, 0x16, 0x75, 0x77, 0xee, 0x53, 0x71, 0x52, 0x46, 0xb4, 0xe3, 0xe8, 0xa6, 0xb9, - 0xcb, 0x1c, 0x55, 0x27, 0x55, 0xfa, 0x92, 0xe6, 0xa2, 0x1e, 0xfa, 0x43, 0x21, 0x67, 0x6a, 0xc1, - 0x6a, 0x1c, 0x12, 0x80, 0x1f, 0x93, 0x61, 0x8e, 0x71, 0x55, 0x67, 0xe7, 0x7c, 0x84, 0x0e, 0xbc, - 0xfd, 0x8a, 0xb0, 0x21, 0xd8, 0xa7, 0xfe, 0xac, 0xa4, 0x47, 0x0d, 0x90, 0x1f, 0x14, 0x0a, 0x8e, - 0x26, 0x5c, 0x91, 0x43, 0x82, 0xf2, 0xad, 0x59, 0x98, 0xde, 0xb0, 0xb1, 0xc5, 0xfc, 0xf6, 0xd1, - 0xc3, 0x59, 0x90, 0x97, 0x31, 0xb7, 0x91, 0xfa, 0x7c, 0x61, 0x0f, 0xdf, 0x70, 0x65, 0x43, 0x44, - 0x5d, 0x1b, 0x29, 0x02, 0xb6, 0xeb, 0x61, 0x8e, 0x8a, 0xb4, 0xe8, 0x38, 0xae, 0x91, 0xe8, 0x79, - 0xd3, 0xf6, 0xa4, 0x8e, 0x62, 0xab, 0x88, 0x94, 0xe5, 0x66, 0x29, 0xb9, 0x3c, 0xad, 0xe2, 0x4d, - 0x3a, 0x9f, 0xcd, 0xaa, 0x3d, 0xa9, 0xca, 0x2d, 0x70, 0x99, 0xd9, 0xc5, 0xf4, 0xfc, 0x4a, 0x28, - 0x73, 0x8e, 0x64, 0xee, 0xf7, 0x09, 0x7d, 0x43, 0xc8, 0x57, 0x57, 0x5c, 0x3a, 0xc9, 0x74, 0xa1, - 0x3b, 0x1a, 0x93, 0xe4, 0x38, 0x14, 0xdc, 0x1c, 0x64, 0xff, 0x45, 0x2d, 0xd7, 0x6b, 0xab, 0x67, - 0xcb, 0xfd, 0x97, 0x31, 0x72, 0xe8, 0x39, 0x32, 0x4c, 0x2d, 0x58, 0xa6, 0xd6, 0x6e, 0x69, 0xb6, - 0x83, 0xbe, 0x23, 0xc1, 0xcc, 0xba, 0x76, 0xa9, 0x63, 0x6a, 0x6d, 0xe2, 0xdf, 0xdf, 0xd3, 0x17, - 0x74, 0xe9, 0x27, 0xaf, 0x2f, 0x60, 0xaf, 0xfc, 0xc1, 0x40, 0xff, 0xe8, 0x5e, 0x46, 0xe4, 0x42, - 0x4d, 0x7f, 0x9b, 0x4f, 0xea, 0x17, 0xac, 0xd4, 0xe3, 0x6b, 0x3e, 0xcc, 0x53, 0x84, 0x45, 0xf9, - 0x5e, 0xb1, 0xf0, 0xa3, 0x22, 0x24, 0x0f, 0x67, 0x57, 0xfe, 0xb9, 0x93, 0x90, 0x5f, 0xc4, 0xc4, - 0x8a, 0xfb, 0x1f, 0x12, 0x4c, 0xd4, 0xb1, 0x43, 0x2c, 0xb8, 0xdb, 0x38, 0x4f, 0xe1, 0x36, 0xc9, - 0x10, 0x38, 0xb1, 0x7b, 0xef, 0xee, 0x64, 0x3d, 0x74, 0xde, 0x9a, 0x3c, 0x27, 0xf0, 0x48, 0xa4, - 0xe5, 0xce, 0xb3, 0x32, 0x0f, 0xe4, 0x91, 0x18, 0x4b, 0x2a, 0x7d, 0x5f, 0xab, 0xb7, 0x4b, 0xcc, - 0xb5, 0x2a, 0xd4, 0xeb, 0xbd, 0x32, 0xac, 0x9f, 0xb1, 0xde, 0x66, 0x8c, 0xf9, 0x18, 0xe7, 0xa8, - 0x27, 0xc1, 0x04, 0x95, 0xb9, 0x37, 0x1f, 0xed, 0xf5, 0x53, 0xa0, 0x24, 0xc8, 0xd9, 0x6b, 0x2f, - 0xa7, 0xa0, 0x8b, 0x5a, 0x74, 0xe1, 0x63, 0x89, 0x41, 0x30, 0x53, 0xc5, 0xce, 0x45, 0xd3, 0xba, - 0x50, 0x77, 0x34, 0x07, 0xa3, 0x7f, 0x93, 0x40, 0xae, 0x63, 0x27, 0x1c, 0xfd, 0xa4, 0x0a, 0xc7, - 0x68, 0x85, 0x58, 0x46, 0xd2, 0x7f, 0xd3, 0x8a, 0x5c, 0xd3, 0x57, 0x08, 0xa1, 0x7c, 0xea, 0xfe, - 0x5f, 0xd1, 0x6f, 0xf6, 0x0d, 0xfa, 0x24, 0xf5, 0x99, 0x34, 0x30, 0xc9, 0x84, 0x19, 0x74, 0x15, - 0x2c, 0x42, 0x4f, 0xdf, 0x27, 0x64, 0x56, 0x8b, 0xd1, 0x3c, 0x9c, 0xae, 0xe0, 0x83, 0x57, 0x40, - 0xb6, 0xb4, 0xad, 0x39, 0xe8, 0x6d, 0x32, 0x40, 0xb1, 0xdd, 0x5e, 0xa3, 0x3e, 0xe0, 0x61, 0x87, - 0xb4, 0x33, 0x30, 0xd3, 0xda, 0xd6, 0x82, 0xbb, 0x4d, 0x68, 0x7f, 0xc0, 0xa5, 0x29, 0x4f, 0x0e, - 0x9c, 0xc9, 0xa9, 0x54, 0x51, 0x0f, 0x4c, 0x6e, 0x19, 0x8c, 0xb6, 0xef, 0x68, 0xce, 0x87, 0xc2, - 0x8c, 0x3d, 0x42, 0xe7, 0xfe, 0x3e, 0x1f, 0xb0, 0x17, 0x3d, 0x87, 0x63, 0xa4, 0xfd, 0x03, 0x36, - 0x41, 0x42, 0xc2, 0x93, 0xde, 0x62, 0x01, 0x3d, 0xe2, 0xf9, 0x1a, 0x4b, 0xe8, 0x5a, 0xa5, 0xdc, - 0xd6, 0x3d, 0xd1, 0xb2, 0x80, 0x59, 0xe8, 0xa1, 0x4c, 0x32, 0xf8, 0xe2, 0x05, 0x77, 0x37, 0xcc, - 0xe2, 0xb6, 0xee, 0x60, 0xaf, 0x96, 0x4c, 0x80, 0x71, 0x10, 0xf3, 0x3f, 0xa0, 0x67, 0x0b, 0x07, - 0x5d, 0x23, 0x02, 0xdd, 0x5f, 0xa3, 0x88, 0xf6, 0x27, 0x16, 0x46, 0x4d, 0x8c, 0x66, 0xfa, 0x60, - 0xfd, 0x82, 0x0c, 0x27, 0x1a, 0xe6, 0xd6, 0x56, 0x07, 0x7b, 0x62, 0xc2, 0xd4, 0x3b, 0x13, 0x69, - 0xa3, 0x84, 0x8b, 0xec, 0x04, 0x99, 0xf7, 0xeb, 0xfe, 0x51, 0x32, 0xf7, 0x85, 0x3f, 0x31, 0x15, - 0x3b, 0x8b, 0x22, 0xe2, 0xea, 0xcb, 0x67, 0x04, 0x0a, 0x62, 0x01, 0x9f, 0x85, 0xc9, 0xa6, 0x0f, - 0xc4, 0xe7, 0x25, 0x98, 0xa5, 0x37, 0x57, 0x7a, 0x0a, 0x7a, 0xef, 0x08, 0x01, 0x40, 0xdf, 0xc9, - 0x88, 0xfa, 0xd9, 0x12, 0x99, 0x70, 0x9c, 0x44, 0x88, 0x58, 0x2c, 0xa8, 0xca, 0x40, 0x72, 0xe9, - 0x8b, 0xf6, 0x4f, 0x64, 0x98, 0x5e, 0xc6, 0x5e, 0x4b, 0xb3, 0x13, 0xf7, 0x44, 0x67, 0x60, 0x86, - 0x5c, 0xdf, 0x56, 0x63, 0xc7, 0x24, 0xe9, 0xaa, 0x19, 0x97, 0xa6, 0x5c, 0x07, 0xb3, 0xe7, 0xf1, - 0xa6, 0x69, 0xe1, 0x1a, 0x77, 0x96, 0x92, 0x4f, 0x8c, 0x08, 0x4f, 0xc7, 0xc5, 0x41, 0x5b, 0xe0, - 0xb1, 0xb9, 0x69, 0xbf, 0x30, 0x43, 0x55, 0x89, 0x18, 0x73, 0x9e, 0x02, 0x93, 0x0c, 0x79, 0xcf, - 0x4c, 0x8b, 0xeb, 0x17, 0xfd, 0xbc, 0xe8, 0x35, 0x3e, 0xa2, 0x65, 0x0e, 0xd1, 0x27, 0x26, 0x61, - 0x62, 0x2c, 0xf7, 0xbb, 0x17, 0x42, 0xe5, 0x2f, 0x5c, 0xaa, 0xb4, 0x6d, 0xb4, 0x96, 0x0c, 0xd3, - 0xd3, 0x00, 0x7e, 0xe3, 0xf0, 0xc2, 0x5a, 0x84, 0x52, 0xf8, 0xc8, 0xf5, 0xb1, 0x07, 0xf5, 0x7a, - 0xc5, 0x41, 0xd8, 0x19, 0x31, 0x30, 0x62, 0x07, 0xfc, 0x44, 0x38, 0x49, 0x1f, 0x9d, 0x4f, 0xca, - 0x70, 0xc2, 0x3f, 0x7f, 0xb4, 0xaa, 0xd9, 0x41, 0xbb, 0x2b, 0x25, 0x83, 0x88, 0x3b, 0xf0, 0xe1, - 0x37, 0x96, 0x6f, 0x26, 0x1b, 0x33, 0xfa, 0x72, 0x32, 0x5a, 0x74, 0x94, 0x9b, 0xe0, 0x98, 0xb1, - 0xbb, 0xe3, 0x4b, 0x9d, 0xb4, 0x78, 0xd6, 0xc2, 0xf7, 0x7f, 0x48, 0x32, 0x32, 0x89, 0x30, 0x3f, - 0x96, 0x39, 0x25, 0x77, 0xa4, 0xeb, 0x09, 0x89, 0x60, 0x44, 0xff, 0x92, 0x49, 0xd4, 0xbb, 0x0d, - 0x3e, 0xf3, 0x95, 0xa0, 0x97, 0x3a, 0xc4, 0x03, 0x5f, 0x67, 0x26, 0x20, 0x57, 0xde, 0xe9, 0x3a, - 0x97, 0xce, 0x3c, 0x16, 0x66, 0xeb, 0x8e, 0x85, 0xb5, 0x9d, 0xd0, 0xce, 0x80, 0x63, 0x5e, 0xc0, - 0x86, 0xb7, 0x33, 0x40, 0x5e, 0x6e, 0xbf, 0x0d, 0x26, 0x0c, 0xb3, 0xa9, 0xed, 0x3a, 0xdb, 0xca, - 0xd5, 0xfb, 0x8e, 0xd4, 0x33, 0xf0, 0x6b, 0x2c, 0x86, 0xd1, 0x97, 0xef, 0x20, 0x6b, 0xc3, 0x79, - 0xc3, 0x2c, 0xee, 0x3a, 0xdb, 0x0b, 0x57, 0x7d, 0xec, 0x6f, 0x4f, 0x67, 0x3e, 0xf5, 0xb7, 0xa7, - 0x33, 0x5f, 0xfa, 0xdb, 0xd3, 0x99, 0x5f, 0xf9, 0xca, 0xe9, 0x23, 0x9f, 0xfa, 0xca, 0xe9, 0x23, - 0x9f, 0xff, 0xca, 0xe9, 0x23, 0x3f, 0x29, 0x75, 0xcf, 0x9f, 0xcf, 0x13, 0x2a, 0x4f, 0xfa, 0x7f, - 0x03, 0x00, 0x00, 0xff, 0xff, 0x26, 0x07, 0x39, 0x30, 0x26, 0x08, 0x02, 0x00, + // 19614 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x7d, 0x98, 0x23, 0x47, + 0x79, 0x2f, 0xba, 0xea, 0x96, 0x34, 0x33, 0xef, 0x7c, 0xac, 0xb6, 0xbd, 0xbb, 0x5e, 0x97, 0xcd, + 0x7a, 0xb3, 0x36, 0xc6, 0x31, 0x66, 0x6c, 0x0c, 0x21, 0xd8, 0xd8, 0xd8, 0x1a, 0x8d, 0x66, 0x46, + 0xf6, 0x8c, 0x34, 0x69, 0x69, 0x76, 0x71, 0x72, 0x72, 0x75, 0x7a, 0xa5, 0x9a, 0x99, 0xf6, 0x6a, + 0xba, 0x95, 0xee, 0x9e, 0x59, 0x2f, 0xf7, 0x39, 0xf7, 0x84, 0x10, 0x07, 0x12, 0x42, 0xc8, 0x17, + 0x49, 0x08, 0xdf, 0x06, 0xc3, 0x81, 0x04, 0x08, 0xdf, 0x07, 0x92, 0x00, 0xe1, 0x23, 0x10, 0x42, + 0x08, 0x81, 0x10, 0x08, 0x09, 0x37, 0x10, 0x08, 0x21, 0xe7, 0x09, 0x87, 0x9b, 0xdc, 0x13, 0x08, + 0x09, 0x5c, 0xee, 0xd3, 0x55, 0xd5, 0x1f, 0xa5, 0x51, 0xb7, 0xaa, 0x35, 0x6a, 0x8d, 0x09, 0xe7, + 0xbf, 0xee, 0xea, 0xea, 0xb7, 0xde, 0x7a, 0x7f, 0x6f, 0x55, 0xbd, 0x55, 0xf5, 0xd6, 0x5b, 0x70, + 0xaa, 0x7b, 0xe1, 0x96, 0xae, 0x65, 0x3a, 0xa6, 0x7d, 0x4b, 0xcb, 0xdc, 0xd9, 0xd1, 0x8c, 0xb6, + 0x3d, 0x4f, 0xde, 0x95, 0x09, 0xcd, 0xb8, 0xec, 0x5c, 0xee, 0x62, 0x74, 0x7d, 0xf7, 0xe2, 0xd6, + 0x2d, 0x1d, 0xfd, 0xc2, 0x2d, 0xdd, 0x0b, 0xb7, 0xec, 0x98, 0x6d, 0xdc, 0xf1, 0x7e, 0x20, 0x2f, + 0x2c, 0x3b, 0xba, 0x31, 0x2a, 0x57, 0xc7, 0x6c, 0x69, 0x1d, 0xdb, 0x31, 0x2d, 0xcc, 0x72, 0x9e, + 0x0c, 0x8a, 0xc4, 0x7b, 0xd8, 0x70, 0x3c, 0x0a, 0xd7, 0x6c, 0x99, 0xe6, 0x56, 0x07, 0xd3, 0x6f, + 0x17, 0x76, 0x37, 0x6f, 0xb1, 0x1d, 0x6b, 0xb7, 0xe5, 0xb0, 0xaf, 0x67, 0x7a, 0xbf, 0xb6, 0xb1, + 0xdd, 0xb2, 0xf4, 0xae, 0x63, 0x5a, 0x34, 0xc7, 0xd9, 0x9f, 0xfc, 0x85, 0x49, 0x90, 0xd5, 0x6e, + 0x0b, 0x7d, 0x63, 0x02, 0xe4, 0x62, 0xb7, 0x8b, 0x3e, 0x24, 0x01, 0x2c, 0x63, 0xe7, 0x1c, 0xb6, + 0x6c, 0xdd, 0x34, 0xd0, 0x51, 0x98, 0x50, 0xf1, 0x4f, 0xec, 0x62, 0xdb, 0xb9, 0x23, 0xfb, 0xdc, + 0xaf, 0xc8, 0x19, 0xf4, 0x88, 0x04, 0x93, 0x2a, 0xb6, 0xbb, 0xa6, 0x61, 0x63, 0xe5, 0x1e, 0xc8, + 0x61, 0xcb, 0x32, 0xad, 0x53, 0x99, 0x33, 0x99, 0x1b, 0xa7, 0x6f, 0xbb, 0x69, 0x9e, 0x55, 0x7f, + 0x5e, 0xed, 0xb6, 0xe6, 0x8b, 0xdd, 0xee, 0x7c, 0x40, 0x69, 0xde, 0xfb, 0x69, 0xbe, 0xec, 0xfe, + 0xa1, 0xd2, 0x1f, 0x95, 0x53, 0x30, 0xb1, 0x47, 0x33, 0x9c, 0x92, 0xce, 0x64, 0x6e, 0x9c, 0x52, + 0xbd, 0x57, 0xf7, 0x4b, 0x1b, 0x3b, 0x9a, 0xde, 0xb1, 0x4f, 0xc9, 0xf4, 0x0b, 0x7b, 0x45, 0x0f, + 0x67, 0x20, 0x47, 0x88, 0x28, 0x25, 0xc8, 0xb6, 0xcc, 0x36, 0x26, 0xc5, 0xcf, 0xdd, 0x76, 0x8b, + 0x78, 0xf1, 0xf3, 0x25, 0xb3, 0x8d, 0x55, 0xf2, 0xb3, 0x72, 0x06, 0xa6, 0x3d, 0xb1, 0x04, 0x6c, + 0x84, 0x93, 0xce, 0xde, 0x06, 0x59, 0x37, 0xbf, 0x32, 0x09, 0xd9, 0xea, 0xc6, 0xea, 0x6a, 0xe1, + 0x88, 0x72, 0x0c, 0x66, 0x37, 0xaa, 0xf7, 0x55, 0x6b, 0xe7, 0xab, 0xcd, 0xb2, 0xaa, 0xd6, 0xd4, + 0x42, 0x46, 0x99, 0x85, 0xa9, 0x85, 0xe2, 0x62, 0xb3, 0x52, 0x5d, 0xdf, 0x68, 0x14, 0x24, 0xf4, + 0x32, 0x19, 0xe6, 0xea, 0xd8, 0x59, 0xc4, 0x7b, 0x7a, 0x0b, 0xd7, 0x1d, 0xcd, 0xc1, 0xe8, 0x05, + 0x19, 0x5f, 0x98, 0xca, 0x86, 0x5b, 0xa8, 0xff, 0x89, 0x55, 0xe0, 0x49, 0xfb, 0x2a, 0xc0, 0x53, + 0x98, 0x67, 0x7f, 0xcf, 0x87, 0xd2, 0xd4, 0x30, 0x9d, 0xb3, 0x4f, 0x80, 0xe9, 0xd0, 0x37, 0x65, + 0x0e, 0x60, 0xa1, 0x58, 0xba, 0x6f, 0x59, 0xad, 0x6d, 0x54, 0x17, 0x0b, 0x47, 0xdc, 0xf7, 0xa5, + 0x9a, 0x5a, 0x66, 0xef, 0x19, 0xf4, 0xad, 0x4c, 0x08, 0xcc, 0x45, 0x1e, 0xcc, 0xf9, 0xc1, 0xcc, + 0xf4, 0x01, 0x14, 0xbd, 0xc6, 0x07, 0x67, 0x99, 0x03, 0xe7, 0x49, 0xc9, 0xc8, 0xa5, 0x0f, 0xd0, + 0x43, 0x12, 0x4c, 0xd6, 0xb7, 0x77, 0x9d, 0xb6, 0x79, 0xc9, 0x40, 0x53, 0x3e, 0x32, 0xe8, 0x6b, + 0x61, 0x99, 0x3c, 0x9d, 0x97, 0xc9, 0x8d, 0xfb, 0x2b, 0xc1, 0x28, 0x44, 0x48, 0xe3, 0x15, 0xbe, + 0x34, 0x8a, 0x9c, 0x34, 0x9e, 0x20, 0x4a, 0x28, 0x7d, 0x39, 0xfc, 0xe6, 0x53, 0x21, 0x57, 0xef, + 0x6a, 0x2d, 0x8c, 0x3e, 0x26, 0xc3, 0xcc, 0x2a, 0xd6, 0xf6, 0x70, 0xb1, 0xdb, 0xb5, 0xcc, 0x3d, + 0x8c, 0x4a, 0x81, 0xbe, 0x9e, 0x82, 0x09, 0xdb, 0xcd, 0x54, 0x69, 0x93, 0x1a, 0x4c, 0xa9, 0xde, + 0xab, 0x72, 0x1a, 0x40, 0x6f, 0x63, 0xc3, 0xd1, 0x1d, 0x1d, 0xdb, 0xa7, 0xa4, 0x33, 0xf2, 0x8d, + 0x53, 0x6a, 0x28, 0x05, 0x7d, 0x43, 0x12, 0xd5, 0x31, 0xc2, 0xc5, 0x7c, 0x98, 0x83, 0x08, 0xa9, + 0xbe, 0x4a, 0x12, 0xd1, 0xb1, 0x81, 0xe4, 0x92, 0xc9, 0xf6, 0x8d, 0x99, 0xe4, 0xc2, 0x75, 0x73, + 0x54, 0x6b, 0xcd, 0xfa, 0x46, 0x69, 0xa5, 0x59, 0x5f, 0x2f, 0x96, 0xca, 0x05, 0xac, 0x1c, 0x87, + 0x02, 0x79, 0x6c, 0x56, 0xea, 0xcd, 0xc5, 0xf2, 0x6a, 0xb9, 0x51, 0x5e, 0x2c, 0x6c, 0x2a, 0x0a, + 0xcc, 0xa9, 0xe5, 0x1f, 0xd9, 0x28, 0xd7, 0x1b, 0xcd, 0xa5, 0x62, 0x65, 0xb5, 0xbc, 0x58, 0xd8, + 0x72, 0x7f, 0x5e, 0xad, 0xac, 0x55, 0x1a, 0x4d, 0xb5, 0x5c, 0x2c, 0xad, 0x94, 0x17, 0x0b, 0xdb, + 0xca, 0x95, 0x70, 0x45, 0xb5, 0xd6, 0x2c, 0xae, 0xaf, 0xab, 0xb5, 0x73, 0xe5, 0x26, 0xfb, 0xa3, + 0x5e, 0xd0, 0x69, 0x41, 0x8d, 0x66, 0x7d, 0xa5, 0xa8, 0x96, 0x8b, 0x0b, 0xab, 0xe5, 0xc2, 0x03, + 0xe8, 0xd9, 0x32, 0xcc, 0xae, 0x69, 0x17, 0x71, 0x7d, 0x5b, 0xb3, 0xb0, 0x76, 0xa1, 0x83, 0xd1, + 0x75, 0x02, 0x78, 0xa2, 0x8f, 0x85, 0xf1, 0x2a, 0xf3, 0x78, 0xdd, 0xd2, 0x47, 0xc0, 0x5c, 0x11, + 0x11, 0x80, 0xfd, 0xab, 0xdf, 0x0c, 0x56, 0x38, 0xc0, 0x9e, 0x9c, 0x90, 0x5e, 0x32, 0xc4, 0x7e, + 0xea, 0x51, 0x80, 0x18, 0xfa, 0xbc, 0x0c, 0x73, 0x15, 0x63, 0x4f, 0x77, 0xf0, 0x32, 0x36, 0xb0, + 0xe5, 0x8e, 0x03, 0x42, 0x30, 0x3c, 0x22, 0x87, 0x60, 0x58, 0xe2, 0x61, 0xb8, 0xb5, 0x8f, 0xd8, + 0xf8, 0x32, 0x22, 0x46, 0xdb, 0x6b, 0x60, 0x4a, 0x27, 0xf9, 0x4a, 0x7a, 0x9b, 0x49, 0x2c, 0x48, + 0x50, 0xae, 0x87, 0x59, 0xfa, 0xb2, 0xa4, 0x77, 0xf0, 0x7d, 0xf8, 0x32, 0x1b, 0x77, 0xf9, 0x44, + 0xf4, 0xf3, 0x7e, 0xe3, 0xab, 0x70, 0x58, 0xfe, 0x50, 0x52, 0xa6, 0x92, 0x81, 0xf9, 0xc2, 0x47, + 0x43, 0xf3, 0xdb, 0xd7, 0xca, 0x74, 0xf4, 0x1d, 0x09, 0xa6, 0xeb, 0x8e, 0xd9, 0x75, 0x55, 0x56, + 0x37, 0xb6, 0xc4, 0xc0, 0xfd, 0x48, 0xb8, 0x8d, 0x95, 0x78, 0x70, 0x9f, 0xd0, 0x47, 0x8e, 0xa1, + 0x02, 0x22, 0x5a, 0xd8, 0x37, 0xfc, 0x16, 0xb6, 0xc4, 0xa1, 0x72, 0x5b, 0x22, 0x6a, 0xdf, 0x83, + 0xed, 0xeb, 0x85, 0x32, 0x14, 0x3c, 0x35, 0x73, 0x4a, 0xbb, 0x96, 0x85, 0x0d, 0x47, 0x0c, 0x84, + 0xbf, 0x0a, 0x83, 0xb0, 0xc2, 0x83, 0x70, 0x5b, 0x8c, 0x32, 0x7b, 0xa5, 0xa4, 0xd8, 0xc6, 0xde, + 0xe7, 0xa3, 0x79, 0x1f, 0x87, 0xe6, 0x0f, 0x27, 0x67, 0x2b, 0x19, 0xa4, 0x2b, 0x43, 0x20, 0x7a, + 0x1c, 0x0a, 0xee, 0x98, 0x54, 0x6a, 0x54, 0xce, 0x95, 0x9b, 0x95, 0xea, 0xb9, 0x4a, 0xa3, 0x5c, + 0xc0, 0xe8, 0x57, 0x64, 0x98, 0xa1, 0xac, 0xa9, 0x78, 0xcf, 0xbc, 0x28, 0xd8, 0xeb, 0x7d, 0x3e, + 0xa1, 0xb1, 0x10, 0x2e, 0x21, 0xa2, 0x65, 0xfc, 0x5c, 0x02, 0x63, 0x21, 0x86, 0xdc, 0xa3, 0xa9, + 0xb7, 0xda, 0xd7, 0x0c, 0xb6, 0xfa, 0xb4, 0x96, 0xbe, 0xbd, 0xd5, 0x0b, 0xb3, 0x00, 0xb4, 0x92, + 0xe7, 0x74, 0x7c, 0x09, 0xad, 0x05, 0x98, 0x70, 0x6a, 0x9b, 0x19, 0xa8, 0xb6, 0x52, 0x3f, 0xb5, + 0x7d, 0x67, 0x78, 0xcc, 0x5a, 0xe0, 0xd1, 0xbb, 0x39, 0x52, 0xdc, 0x2e, 0x27, 0xd1, 0xb3, 0x43, + 0x4f, 0x51, 0x24, 0xde, 0xea, 0xbc, 0x06, 0xa6, 0xc8, 0x63, 0x55, 0xdb, 0xc1, 0xac, 0x0d, 0x05, + 0x09, 0xca, 0x59, 0x98, 0xa1, 0x19, 0x5b, 0xa6, 0xe1, 0xd6, 0x27, 0x4b, 0x32, 0x70, 0x69, 0x2e, + 0x88, 0x2d, 0x0b, 0x6b, 0x8e, 0x69, 0x11, 0x1a, 0x39, 0x0a, 0x62, 0x28, 0x09, 0x7d, 0xd5, 0x6f, + 0x85, 0x65, 0x4e, 0x73, 0x9e, 0x98, 0xa4, 0x2a, 0xc9, 0xf4, 0x66, 0x6f, 0xb8, 0xf6, 0x47, 0x5b, + 0x5d, 0xd3, 0x45, 0x7b, 0x89, 0x4c, 0xed, 0xb0, 0x72, 0x12, 0x14, 0x96, 0xea, 0xe6, 0x2d, 0xd5, + 0xaa, 0x8d, 0x72, 0xb5, 0x51, 0xd8, 0xec, 0xab, 0x51, 0x5b, 0xe8, 0x55, 0x59, 0xc8, 0xde, 0x6b, + 0xea, 0x06, 0x7a, 0x28, 0xc3, 0xa9, 0x84, 0x81, 0x9d, 0x4b, 0xa6, 0x75, 0xd1, 0x6f, 0xa8, 0x41, + 0x42, 0x3c, 0x36, 0x81, 0x2a, 0xc9, 0x03, 0x55, 0x29, 0xdb, 0x4f, 0x95, 0x7e, 0x39, 0xac, 0x4a, + 0x77, 0xf2, 0xaa, 0x74, 0x43, 0x1f, 0xf9, 0xbb, 0xcc, 0x47, 0x74, 0x00, 0x1f, 0xf6, 0x3b, 0x80, + 0xbb, 0x39, 0x18, 0x1f, 0x2f, 0x46, 0x26, 0x19, 0x80, 0x9f, 0x4b, 0xb5, 0xe1, 0xf7, 0x83, 0x7a, + 0x2b, 0x02, 0xea, 0xed, 0x3e, 0x7d, 0x82, 0xbe, 0xbf, 0xeb, 0x78, 0x60, 0x7f, 0x37, 0x71, 0x51, + 0x39, 0x01, 0xc7, 0x16, 0x2b, 0x4b, 0x4b, 0x65, 0xb5, 0x5c, 0x6d, 0x34, 0xab, 0xe5, 0xc6, 0xf9, + 0x9a, 0x7a, 0x5f, 0xa1, 0x83, 0x1e, 0x96, 0x01, 0x5c, 0x09, 0x95, 0x34, 0xa3, 0x85, 0x3b, 0x62, + 0x3d, 0xfa, 0xff, 0x94, 0x92, 0xf5, 0x09, 0x01, 0xfd, 0x08, 0x38, 0x5f, 0x2a, 0x89, 0xb7, 0xca, + 0x48, 0x62, 0xc9, 0x40, 0x7d, 0xfd, 0xa3, 0xc1, 0xf6, 0xbc, 0x02, 0x8e, 0x7a, 0xf4, 0x58, 0xf6, + 0xfe, 0xd3, 0xbe, 0x37, 0x65, 0x61, 0x8e, 0xc1, 0xe2, 0xcd, 0xe3, 0x9f, 0x9b, 0x11, 0x99, 0xc8, + 0x23, 0x98, 0x64, 0xd3, 0x76, 0xaf, 0x7b, 0xf7, 0xdf, 0x95, 0x65, 0x98, 0xee, 0x62, 0x6b, 0x47, + 0xb7, 0x6d, 0xdd, 0x34, 0xe8, 0x82, 0xdc, 0xdc, 0x6d, 0x8f, 0xf5, 0x25, 0x4e, 0xd6, 0x2e, 0xe7, + 0xd7, 0x35, 0xcb, 0xd1, 0x5b, 0x7a, 0x57, 0x33, 0x9c, 0xf5, 0x20, 0xb3, 0x1a, 0xfe, 0x13, 0xfd, + 0x52, 0xc2, 0x69, 0x0d, 0x5f, 0x93, 0x08, 0x95, 0xf8, 0xbd, 0x04, 0x53, 0x92, 0x58, 0x82, 0xc9, + 0xd4, 0xe2, 0x43, 0xa9, 0xaa, 0x45, 0x1f, 0xbc, 0xb7, 0x94, 0xab, 0xe0, 0x44, 0xa5, 0x5a, 0xaa, + 0xa9, 0x6a, 0xb9, 0xd4, 0x68, 0xae, 0x97, 0xd5, 0xb5, 0x4a, 0xbd, 0x5e, 0xa9, 0x55, 0xeb, 0x07, + 0x69, 0xed, 0xe8, 0xa3, 0xb2, 0xaf, 0x31, 0x8b, 0xb8, 0xd5, 0xd1, 0x0d, 0x8c, 0xee, 0x3e, 0xa0, + 0xc2, 0xf0, 0xab, 0x3e, 0xe2, 0x38, 0xb3, 0xf2, 0x23, 0x70, 0x7e, 0x65, 0x72, 0x9c, 0xfb, 0x13, + 0xfc, 0x0f, 0xdc, 0xfc, 0x3f, 0x2f, 0xc3, 0xb1, 0x50, 0x43, 0x54, 0xf1, 0xce, 0xc8, 0x56, 0xf2, + 0x7e, 0x2a, 0xdc, 0x76, 0x2b, 0x3c, 0xa6, 0xfd, 0xac, 0xe9, 0x7d, 0x6c, 0x44, 0xc0, 0xfa, 0x7a, + 0x1f, 0xd6, 0x55, 0x0e, 0xd6, 0xa7, 0x0e, 0x41, 0x33, 0x19, 0xb2, 0xbf, 0x93, 0x2a, 0xb2, 0x57, + 0xc1, 0x89, 0xf5, 0xa2, 0xda, 0xa8, 0x94, 0x2a, 0xeb, 0x45, 0x77, 0x1c, 0x0d, 0x0d, 0xd9, 0x11, + 0xe6, 0x3a, 0x0f, 0x7a, 0x5f, 0x7c, 0xdf, 0x9b, 0x85, 0x6b, 0xfa, 0x77, 0xb4, 0xa5, 0x6d, 0xcd, + 0xd8, 0xc2, 0x48, 0x17, 0x81, 0x7a, 0x11, 0x26, 0x5a, 0x24, 0x3b, 0xc5, 0x39, 0xbc, 0x75, 0x13, + 0xd3, 0x97, 0xd3, 0x12, 0x54, 0xef, 0x57, 0xf4, 0xd6, 0xb0, 0x42, 0x34, 0x78, 0x85, 0x78, 0x7a, + 0x3c, 0x78, 0xfb, 0xf8, 0x8e, 0xd0, 0x8d, 0x4f, 0xf8, 0xba, 0x71, 0x9e, 0xd3, 0x8d, 0xd2, 0xc1, + 0xc8, 0x27, 0x53, 0x93, 0x3f, 0x7e, 0x34, 0x74, 0x00, 0x91, 0xda, 0xa4, 0x47, 0x8f, 0x0a, 0x7d, + 0xbb, 0xfb, 0x97, 0xcb, 0x90, 0x5f, 0xc4, 0x1d, 0x2c, 0xba, 0x12, 0xf9, 0x75, 0x49, 0x74, 0x43, + 0x84, 0xc2, 0x40, 0x69, 0x47, 0xaf, 0x8e, 0x38, 0xfa, 0x0e, 0xb6, 0x1d, 0x6d, 0xa7, 0x4b, 0x44, + 0x2d, 0xab, 0x41, 0x02, 0xfa, 0x69, 0x49, 0x64, 0xbb, 0x24, 0xa6, 0x98, 0xff, 0x18, 0x6b, 0x8a, + 0x9f, 0x92, 0x60, 0xb2, 0x8e, 0x9d, 0x9a, 0xd5, 0xc6, 0x16, 0xaa, 0x07, 0x18, 0x9d, 0x81, 0x69, + 0x02, 0x8a, 0x3b, 0xcd, 0xf4, 0x71, 0x0a, 0x27, 0x29, 0x37, 0xc0, 0x9c, 0xff, 0x4a, 0x7e, 0x67, + 0xdd, 0x78, 0x4f, 0x2a, 0xfa, 0xa7, 0x8c, 0xe8, 0x2e, 0x2e, 0x5b, 0x32, 0x64, 0xdc, 0x44, 0xb4, + 0x52, 0xb1, 0x1d, 0xd9, 0x58, 0x52, 0xe9, 0x6f, 0x74, 0xbd, 0x59, 0x02, 0xd8, 0x30, 0x6c, 0x4f, + 0xae, 0x8f, 0x4f, 0x20, 0x57, 0xf4, 0x2f, 0x99, 0x64, 0xb3, 0x98, 0xa0, 0x9c, 0x08, 0x89, 0xbd, + 0x3a, 0xc1, 0xda, 0x42, 0x24, 0xb1, 0xf4, 0x65, 0xf6, 0xa5, 0x39, 0xc8, 0x9f, 0xd7, 0x3a, 0x1d, + 0xec, 0xa0, 0x2f, 0x4b, 0x90, 0x2f, 0x59, 0x58, 0x73, 0x70, 0x58, 0x74, 0x08, 0x26, 0x2d, 0xd3, + 0x74, 0xd6, 0x35, 0x67, 0x9b, 0xc9, 0xcd, 0x7f, 0x67, 0x0e, 0x03, 0xbf, 0x1d, 0xee, 0x3e, 0xee, + 0xe6, 0x45, 0xf7, 0x83, 0x5c, 0x6d, 0x69, 0x41, 0xf3, 0xb4, 0x90, 0x88, 0xfe, 0x03, 0xc1, 0xe4, + 0x8e, 0x81, 0x77, 0x4c, 0x43, 0x6f, 0x79, 0x36, 0xa7, 0xf7, 0x8e, 0xde, 0xef, 0xcb, 0x74, 0x81, + 0x93, 0xe9, 0xbc, 0x70, 0x29, 0xc9, 0x04, 0x5a, 0x1f, 0xa2, 0xf7, 0xb8, 0x16, 0xae, 0xa6, 0x9d, + 0x41, 0xb3, 0x51, 0x6b, 0x96, 0xd4, 0x72, 0xb1, 0x51, 0x6e, 0xae, 0xd6, 0x4a, 0xc5, 0xd5, 0xa6, + 0x5a, 0x5e, 0xaf, 0x15, 0x30, 0xfa, 0x7b, 0xc9, 0x15, 0x6e, 0xcb, 0xdc, 0xc3, 0x16, 0x5a, 0x16, + 0x92, 0x73, 0x9c, 0x4c, 0x18, 0x06, 0xbf, 0x2c, 0xec, 0xb4, 0xc1, 0xa4, 0xc3, 0x38, 0x88, 0x50, + 0xde, 0x0f, 0x08, 0x35, 0xf7, 0x58, 0x52, 0x8f, 0x02, 0x49, 0xff, 0x2f, 0x09, 0x26, 0x4a, 0xa6, + 0xb1, 0x87, 0x2d, 0x27, 0x3c, 0xdf, 0x09, 0x4b, 0x33, 0xc3, 0x4b, 0xd3, 0x1d, 0x24, 0xb1, 0xe1, + 0x58, 0x66, 0xd7, 0x9b, 0xf0, 0x78, 0xaf, 0xe8, 0xb5, 0x49, 0x25, 0xcc, 0x4a, 0x8e, 0x5e, 0xf8, + 0xec, 0x5f, 0x10, 0xc7, 0x9e, 0xdc, 0xd3, 0x00, 0x1e, 0x4e, 0x82, 0x4b, 0x7f, 0x06, 0xd2, 0xef, + 0x52, 0xbe, 0x20, 0xc3, 0x2c, 0x6d, 0x7c, 0x75, 0x4c, 0x2c, 0x34, 0x54, 0x0b, 0x2f, 0x39, 0xf6, + 0x08, 0x7f, 0xe5, 0x08, 0x27, 0xfe, 0xbc, 0xd6, 0xed, 0xfa, 0xcb, 0xcf, 0x2b, 0x47, 0x54, 0xf6, + 0x4e, 0xd5, 0x7c, 0x21, 0x0f, 0x59, 0x6d, 0xd7, 0xd9, 0x46, 0xdf, 0x11, 0x9e, 0x7c, 0x72, 0x9d, + 0x01, 0xe3, 0x27, 0x02, 0x92, 0xe3, 0x90, 0x73, 0xcc, 0x8b, 0xd8, 0x93, 0x03, 0x7d, 0x71, 0xe1, + 0xd0, 0xba, 0xdd, 0x06, 0xf9, 0xc0, 0xe0, 0xf0, 0xde, 0x5d, 0x5b, 0x47, 0x6b, 0xb5, 0xcc, 0x5d, + 0xc3, 0xa9, 0x78, 0x4b, 0xd0, 0x41, 0x02, 0xfa, 0x6c, 0x46, 0x64, 0x32, 0x2b, 0xc0, 0x60, 0x32, + 0xc8, 0x2e, 0x0c, 0xd1, 0x94, 0xe6, 0xe1, 0xa6, 0xe2, 0xfa, 0x7a, 0xb3, 0x51, 0xbb, 0xaf, 0x5c, + 0x0d, 0x0c, 0xcf, 0x66, 0xa5, 0xda, 0x6c, 0xac, 0x94, 0x9b, 0xa5, 0x0d, 0x95, 0xac, 0x13, 0x16, + 0x4b, 0xa5, 0xda, 0x46, 0xb5, 0x51, 0xc0, 0xe8, 0x0d, 0x12, 0xcc, 0x94, 0x3a, 0xa6, 0xed, 0x23, + 0x7c, 0x6d, 0x80, 0xb0, 0x2f, 0xc6, 0x4c, 0x48, 0x8c, 0xe8, 0xdf, 0x33, 0xa2, 0x4e, 0x07, 0x9e, + 0x40, 0x42, 0xe4, 0x23, 0x7a, 0xa9, 0xd7, 0x0a, 0x39, 0x1d, 0x0c, 0xa6, 0x97, 0x7e, 0x93, 0xf8, + 0xd4, 0x1d, 0x30, 0x51, 0xa4, 0x8a, 0x81, 0xfe, 0x26, 0x03, 0xf9, 0x92, 0x69, 0x6c, 0xea, 0x5b, + 0xae, 0x31, 0x87, 0x0d, 0xed, 0x42, 0x07, 0x2f, 0x6a, 0x8e, 0xb6, 0xa7, 0xe3, 0x4b, 0xa4, 0x02, + 0x93, 0x6a, 0x4f, 0xaa, 0xcb, 0x14, 0x4b, 0xc1, 0x17, 0x76, 0xb7, 0x08, 0x53, 0x93, 0x6a, 0x38, + 0x49, 0x79, 0x2a, 0x5c, 0x49, 0x5f, 0xd7, 0x2d, 0x6c, 0xe1, 0x0e, 0xd6, 0x6c, 0xec, 0x4e, 0x8b, + 0x0c, 0xdc, 0x21, 0x4a, 0x3b, 0xa9, 0x46, 0x7d, 0x56, 0xce, 0xc2, 0x0c, 0xfd, 0x44, 0x4c, 0x11, + 0x9b, 0xa8, 0xf1, 0xa4, 0xca, 0xa5, 0x29, 0x4f, 0x80, 0x1c, 0x7e, 0xd0, 0xb1, 0xb4, 0x53, 0x6d, + 0x82, 0xd7, 0x95, 0xf3, 0xd4, 0xeb, 0x70, 0xde, 0xf3, 0x3a, 0x9c, 0xaf, 0x13, 0x9f, 0x44, 0x95, + 0xe6, 0x42, 0x2f, 0x99, 0xf4, 0x0d, 0x89, 0xef, 0x4a, 0x81, 0x62, 0x28, 0x90, 0x35, 0xb4, 0x1d, + 0xcc, 0xf4, 0x82, 0x3c, 0x2b, 0x37, 0xc1, 0x51, 0x6d, 0x4f, 0x73, 0x34, 0x6b, 0xd5, 0x6c, 0x69, + 0x1d, 0x32, 0xf8, 0x79, 0x2d, 0xbf, 0xf7, 0x03, 0xd9, 0x11, 0x72, 0x4c, 0x0b, 0x93, 0x5c, 0xde, + 0x8e, 0x90, 0x97, 0xe0, 0x52, 0xd7, 0x5b, 0xa6, 0x41, 0xf8, 0x97, 0x55, 0xf2, 0xec, 0x4a, 0xa5, + 0xad, 0xdb, 0x6e, 0x45, 0x08, 0x95, 0x2a, 0xdd, 0xda, 0xa8, 0x5f, 0x36, 0x5a, 0x64, 0x37, 0x68, + 0x52, 0x8d, 0xfa, 0xac, 0x2c, 0xc0, 0x34, 0xdb, 0x08, 0x59, 0x73, 0xf5, 0x2a, 0x4f, 0xf4, 0xea, + 0x0c, 0xef, 0xd3, 0x45, 0xf1, 0x9c, 0xaf, 0x06, 0xf9, 0xd4, 0xf0, 0x4f, 0xca, 0x3d, 0x70, 0x35, + 0x7b, 0x2d, 0xed, 0xda, 0x8e, 0xb9, 0x43, 0x41, 0x5f, 0xd2, 0x3b, 0xb4, 0x06, 0x13, 0xa4, 0x06, + 0x71, 0x59, 0x94, 0xdb, 0xe0, 0x78, 0xd7, 0xc2, 0x9b, 0xd8, 0xba, 0x5f, 0xdb, 0xd9, 0x7d, 0xb0, + 0x61, 0x69, 0x86, 0xdd, 0x35, 0x2d, 0xe7, 0xd4, 0x24, 0x61, 0xbe, 0xef, 0x37, 0xd6, 0x51, 0x4e, + 0x42, 0x9e, 0x8a, 0x0f, 0xbd, 0x20, 0x27, 0xec, 0xce, 0xc9, 0x2a, 0x14, 0x6b, 0x9e, 0xdd, 0x0a, + 0x13, 0xac, 0x87, 0x23, 0x40, 0x4d, 0xdf, 0x76, 0xb2, 0x67, 0x5d, 0x81, 0x51, 0x51, 0xbd, 0x6c, + 0xca, 0x93, 0x20, 0xdf, 0x22, 0xd5, 0x22, 0x98, 0x4d, 0xdf, 0x76, 0x75, 0xff, 0x42, 0x49, 0x16, + 0x95, 0x65, 0x45, 0x7f, 0x29, 0x0b, 0x79, 0x80, 0xc6, 0x71, 0x9c, 0xac, 0x55, 0x7f, 0x55, 0x1a, + 0xa2, 0xdb, 0xbc, 0x19, 0x6e, 0x64, 0x7d, 0x22, 0xb3, 0x3f, 0x16, 0x9b, 0x0b, 0x1b, 0xde, 0x64, + 0xd0, 0xb5, 0x4a, 0xea, 0x8d, 0xa2, 0xea, 0xce, 0xe4, 0x17, 0xdd, 0x49, 0xe4, 0x4d, 0x70, 0xc3, + 0x80, 0xdc, 0xe5, 0x46, 0xb3, 0x5a, 0x5c, 0x2b, 0x17, 0x36, 0x79, 0xdb, 0xa6, 0xde, 0xa8, 0xad, + 0x37, 0xd5, 0x8d, 0x6a, 0xb5, 0x52, 0x5d, 0xa6, 0xc4, 0x5c, 0x93, 0xf0, 0x64, 0x90, 0xe1, 0xbc, + 0x5a, 0x69, 0x94, 0x9b, 0xa5, 0x5a, 0x75, 0xa9, 0xb2, 0x5c, 0xd0, 0x07, 0x19, 0x46, 0x0f, 0x28, + 0x67, 0xe0, 0x1a, 0x8e, 0x93, 0x4a, 0xad, 0xea, 0xce, 0x6c, 0x4b, 0xc5, 0x6a, 0xa9, 0xec, 0x4e, + 0x63, 0x2f, 0x2a, 0x08, 0x4e, 0x50, 0x72, 0xcd, 0xa5, 0xca, 0x6a, 0x78, 0x33, 0xea, 0x23, 0x19, + 0xe5, 0x14, 0x5c, 0x11, 0xfe, 0x56, 0xa9, 0x9e, 0x2b, 0xae, 0x56, 0x16, 0x0b, 0x7f, 0x94, 0x51, + 0xae, 0x87, 0x6b, 0xb9, 0xbf, 0xe8, 0xbe, 0x52, 0xb3, 0xb2, 0xd8, 0x5c, 0xab, 0xd4, 0xd7, 0x8a, + 0x8d, 0xd2, 0x4a, 0xe1, 0xa3, 0x64, 0xbe, 0xe0, 0x1b, 0xc0, 0x21, 0xb7, 0xcc, 0x17, 0x86, 0xc7, + 0xf4, 0x22, 0xaf, 0xa8, 0x8f, 0xef, 0x0b, 0x7b, 0xbc, 0x0d, 0xfb, 0x21, 0x7f, 0x74, 0x58, 0xe4, + 0x54, 0xe8, 0xd6, 0x04, 0xb4, 0x92, 0xe9, 0x50, 0x63, 0x08, 0x15, 0x3a, 0x03, 0xd7, 0x54, 0xcb, + 0x14, 0x29, 0xb5, 0x5c, 0xaa, 0x9d, 0x2b, 0xab, 0xcd, 0xf3, 0xc5, 0xd5, 0xd5, 0x72, 0xa3, 0xb9, + 0x54, 0x51, 0xeb, 0x8d, 0xc2, 0x26, 0xfa, 0x17, 0xc9, 0x5f, 0xcd, 0x09, 0x49, 0xeb, 0x6f, 0xa4, + 0xa4, 0xcd, 0x3a, 0x76, 0xd5, 0xe6, 0x87, 0x20, 0x6f, 0x3b, 0x9a, 0xb3, 0x6b, 0xb3, 0x56, 0xfd, + 0x98, 0xfe, 0xad, 0x7a, 0xbe, 0x4e, 0x32, 0xa9, 0x2c, 0x33, 0xfa, 0xcb, 0x4c, 0x92, 0x66, 0x3a, + 0x82, 0x05, 0x1d, 0x7d, 0x08, 0x11, 0x9f, 0x06, 0xe4, 0x69, 0x7b, 0xa5, 0xde, 0x2c, 0xae, 0xaa, + 0xe5, 0xe2, 0xe2, 0xfd, 0xfe, 0x32, 0x0e, 0x56, 0x4e, 0xc0, 0xb1, 0x8d, 0x6a, 0x71, 0x61, 0xb5, + 0x4c, 0x9a, 0x4b, 0xad, 0x5a, 0x2d, 0x97, 0x5c, 0xb9, 0xff, 0x34, 0xd9, 0x34, 0x71, 0x2d, 0x68, + 0xc2, 0xb7, 0x6b, 0xe5, 0x84, 0xe4, 0xff, 0x15, 0x61, 0xdf, 0xa2, 0x40, 0xc3, 0xc2, 0xb4, 0x46, + 0x8b, 0xc3, 0x67, 0x85, 0xdc, 0x89, 0x84, 0x38, 0x49, 0x86, 0xc7, 0x7f, 0x1e, 0x02, 0x8f, 0x13, + 0x70, 0x2c, 0x8c, 0x07, 0x71, 0x2b, 0x8a, 0x86, 0xe1, 0x8b, 0x93, 0x90, 0xaf, 0xe3, 0x0e, 0x6e, + 0x39, 0xe8, 0x4d, 0x21, 0x63, 0x62, 0x0e, 0x24, 0xdf, 0x8d, 0x45, 0xd2, 0xdb, 0xdc, 0xf4, 0x59, + 0xea, 0x99, 0x3e, 0xc7, 0x98, 0x01, 0x72, 0x22, 0x33, 0x20, 0x9b, 0x82, 0x19, 0x90, 0x1b, 0xde, + 0x0c, 0xc8, 0x0f, 0x32, 0x03, 0xd0, 0xab, 0xf3, 0x49, 0x7b, 0x09, 0x2a, 0xea, 0xc3, 0x1d, 0xfc, + 0xff, 0x67, 0x36, 0x49, 0xaf, 0xd2, 0x97, 0xe3, 0x64, 0x5a, 0xfc, 0x1d, 0x39, 0x85, 0xe5, 0x07, + 0xe5, 0x3a, 0xb8, 0x36, 0x78, 0x6f, 0x96, 0x9f, 0x51, 0xa9, 0x37, 0xea, 0x64, 0xc4, 0x2f, 0xd5, + 0x54, 0x75, 0x63, 0x9d, 0xae, 0x21, 0x9f, 0x04, 0x25, 0xa0, 0xa2, 0x6e, 0x54, 0xe9, 0xf8, 0xbe, + 0xc5, 0x53, 0x5f, 0xaa, 0x54, 0x17, 0x9b, 0x7e, 0x9b, 0xa9, 0x2e, 0xd5, 0x0a, 0xdb, 0xee, 0x94, + 0x2d, 0x44, 0xdd, 0x1d, 0xa0, 0x59, 0x09, 0xc5, 0xea, 0x62, 0x73, 0xad, 0x5a, 0x5e, 0xab, 0x55, + 0x2b, 0x25, 0x92, 0x5e, 0x2f, 0x37, 0x0a, 0xba, 0x3b, 0xd0, 0xf4, 0x58, 0x14, 0xf5, 0x72, 0x51, + 0x2d, 0xad, 0x94, 0x55, 0x5a, 0xe4, 0x03, 0xca, 0x0d, 0x70, 0xb6, 0x58, 0xad, 0x35, 0xdc, 0x94, + 0x62, 0xf5, 0xfe, 0xc6, 0xfd, 0xeb, 0xe5, 0xe6, 0xba, 0x5a, 0x2b, 0x95, 0xeb, 0x75, 0xb7, 0x9d, + 0x32, 0xfb, 0xa3, 0xd0, 0x51, 0x9e, 0x0e, 0x77, 0x84, 0x58, 0x2b, 0x37, 0xc8, 0x86, 0xe5, 0x5a, + 0x8d, 0xf8, 0xac, 0x2c, 0x96, 0x9b, 0x2b, 0xc5, 0x7a, 0xb3, 0x52, 0x2d, 0xd5, 0xd6, 0xd6, 0x8b, + 0x8d, 0x8a, 0xdb, 0x9c, 0xd7, 0xd5, 0x5a, 0xa3, 0xd6, 0x3c, 0x57, 0x56, 0xeb, 0x95, 0x5a, 0xb5, + 0x60, 0xb8, 0x55, 0x0e, 0xb5, 0x7f, 0xaf, 0x1f, 0x36, 0x95, 0x6b, 0xe0, 0x94, 0x97, 0xbe, 0x5a, + 0x73, 0x05, 0x1d, 0xb2, 0x48, 0xba, 0xa9, 0x5a, 0x24, 0xff, 0x26, 0x41, 0xb6, 0xee, 0x98, 0x5d, + 0xf4, 0x83, 0x41, 0x07, 0x73, 0x1a, 0xc0, 0x22, 0xfb, 0x8f, 0xee, 0x2c, 0x8c, 0xcd, 0xcb, 0x42, + 0x29, 0xe8, 0x0f, 0x85, 0x37, 0x4d, 0x82, 0x3e, 0xdb, 0xec, 0x46, 0xd8, 0x2a, 0xdf, 0x12, 0x3b, + 0x45, 0x12, 0x4d, 0x28, 0x99, 0xbe, 0xff, 0xdc, 0x30, 0xdb, 0x22, 0x08, 0x4e, 0x86, 0x60, 0x73, + 0xe5, 0xef, 0xa9, 0x04, 0x56, 0xae, 0x84, 0x2b, 0x7a, 0x94, 0x8b, 0xe8, 0xd4, 0xa6, 0xf2, 0x03, + 0xf0, 0x98, 0x90, 0x7a, 0x97, 0xd7, 0x6a, 0xe7, 0xca, 0xbe, 0x22, 0x2f, 0x16, 0x1b, 0xc5, 0xc2, + 0x16, 0xfa, 0x94, 0x0c, 0xd9, 0x35, 0x73, 0xaf, 0x77, 0xaf, 0xca, 0xc0, 0x97, 0x42, 0x6b, 0xa1, + 0xde, 0x2b, 0xef, 0x35, 0x2f, 0x24, 0xf6, 0xb5, 0xe8, 0x7d, 0xe9, 0xcf, 0x4a, 0x49, 0xc4, 0xbe, + 0x76, 0xd0, 0xcd, 0xe8, 0x7f, 0x18, 0x46, 0xec, 0x11, 0xa2, 0xc5, 0xca, 0x59, 0x38, 0x1d, 0x7c, + 0xa8, 0x2c, 0x96, 0xab, 0x8d, 0xca, 0xd2, 0xfd, 0x81, 0x70, 0x2b, 0xaa, 0x90, 0xf8, 0x07, 0x75, + 0x63, 0xf1, 0x33, 0x8d, 0x53, 0x70, 0x3c, 0xf8, 0xb6, 0x5c, 0x6e, 0x78, 0x5f, 0x1e, 0x40, 0x0f, + 0xe5, 0x60, 0x86, 0x76, 0xeb, 0x1b, 0xdd, 0xb6, 0xe6, 0x60, 0xf4, 0xa4, 0x00, 0xdd, 0x1b, 0xe1, + 0x68, 0x65, 0x7d, 0xa9, 0x5e, 0x77, 0x4c, 0x4b, 0xdb, 0xc2, 0xc5, 0x76, 0xdb, 0x62, 0xd2, 0xea, + 0x4d, 0x46, 0x6f, 0x17, 0x5e, 0xe7, 0xe3, 0x87, 0x12, 0x5a, 0x66, 0x04, 0xea, 0x5f, 0x10, 0x5a, + 0x97, 0x13, 0x20, 0x98, 0x0c, 0xfd, 0x07, 0x46, 0xdc, 0xe6, 0xa2, 0x71, 0xd9, 0x3c, 0xfb, 0x1c, + 0x09, 0xa6, 0x1a, 0xfa, 0x0e, 0x7e, 0xa6, 0x69, 0x60, 0x5b, 0x99, 0x00, 0x79, 0x79, 0xad, 0x51, + 0x38, 0xe2, 0x3e, 0xb8, 0x46, 0x55, 0x86, 0x3c, 0x94, 0xdd, 0x02, 0xdc, 0x87, 0x62, 0xa3, 0x20, + 0xbb, 0x0f, 0x6b, 0xe5, 0x46, 0x21, 0xeb, 0x3e, 0x54, 0xcb, 0x8d, 0x42, 0xce, 0x7d, 0x58, 0x5f, + 0x6d, 0x14, 0xf2, 0xee, 0x43, 0xa5, 0xde, 0x28, 0x4c, 0xb8, 0x0f, 0x0b, 0xf5, 0x46, 0x61, 0xd2, + 0x7d, 0x38, 0x57, 0x6f, 0x14, 0xa6, 0xdc, 0x87, 0x52, 0xa3, 0x51, 0x00, 0xf7, 0xe1, 0xde, 0x7a, + 0xa3, 0x30, 0xed, 0x3e, 0x14, 0x4b, 0x8d, 0xc2, 0x0c, 0x79, 0x28, 0x37, 0x0a, 0xb3, 0xee, 0x43, + 0xbd, 0xde, 0x28, 0xcc, 0x11, 0xca, 0xf5, 0x46, 0xe1, 0x28, 0x29, 0xab, 0xd2, 0x28, 0x14, 0xdc, + 0x87, 0x95, 0x7a, 0xa3, 0x70, 0x8c, 0x64, 0xae, 0x37, 0x0a, 0x0a, 0x29, 0xb4, 0xde, 0x28, 0x5c, + 0x41, 0xf2, 0xd4, 0x1b, 0x85, 0xe3, 0xa4, 0x88, 0x7a, 0xa3, 0x70, 0x82, 0xb0, 0x51, 0x6e, 0x14, + 0x4e, 0x92, 0x3c, 0x6a, 0xa3, 0x70, 0x25, 0xf9, 0x54, 0x6d, 0x14, 0x4e, 0x11, 0xc6, 0xca, 0x8d, + 0xc2, 0x55, 0xe4, 0x41, 0x6d, 0x14, 0x10, 0xf9, 0x54, 0x6c, 0x14, 0xae, 0x46, 0x8f, 0x81, 0xa9, + 0x65, 0xec, 0x50, 0x10, 0x51, 0x01, 0xe4, 0x65, 0xec, 0x84, 0xcd, 0xf8, 0x2f, 0xc9, 0x70, 0x25, + 0x9b, 0xfa, 0x2d, 0x59, 0xe6, 0xce, 0x2a, 0xde, 0xd2, 0x5a, 0x97, 0xcb, 0x0f, 0xba, 0x26, 0x54, + 0x78, 0x5f, 0x56, 0x81, 0x6c, 0x37, 0xe8, 0x8c, 0xc8, 0x73, 0xac, 0xc5, 0xe9, 0x2d, 0x46, 0xc9, + 0xc1, 0x62, 0x14, 0xb3, 0xc8, 0xfe, 0x39, 0xac, 0xd1, 0xdc, 0xfa, 0x71, 0xa6, 0x67, 0xfd, 0xd8, + 0x6d, 0x26, 0x5d, 0x6c, 0xd9, 0xa6, 0xa1, 0x75, 0xea, 0x6c, 0xe3, 0x9e, 0xae, 0x7a, 0xf5, 0x26, + 0x2b, 0x3f, 0xe2, 0xb5, 0x0c, 0x6a, 0x95, 0x3d, 0x2d, 0x6e, 0x86, 0xdb, 0x5b, 0xcd, 0x88, 0x46, + 0xf2, 0x51, 0xbf, 0x91, 0x34, 0xb8, 0x46, 0x72, 0xcf, 0x01, 0x68, 0x27, 0x6b, 0x2f, 0x95, 0xe1, + 0xa6, 0x16, 0x81, 0x5b, 0xab, 0xb7, 0x5c, 0x2d, 0xa3, 0x4f, 0x49, 0x70, 0xb2, 0x6c, 0xf4, 0xb3, + 0xf0, 0xc3, 0xba, 0xf0, 0x86, 0x30, 0x34, 0xeb, 0xbc, 0x48, 0xef, 0xe8, 0x5b, 0xed, 0xfe, 0x34, + 0x23, 0x24, 0xfa, 0x71, 0x5f, 0xa2, 0x75, 0x4e, 0xa2, 0x77, 0x0f, 0x4f, 0x3a, 0x99, 0x40, 0xab, + 0x23, 0xed, 0x80, 0xb2, 0xe8, 0xab, 0x59, 0x78, 0x0c, 0xf5, 0xbd, 0x61, 0x1c, 0xd2, 0x56, 0x56, + 0x34, 0xda, 0x2a, 0xb6, 0x1d, 0xcd, 0x72, 0xb8, 0xf3, 0xd0, 0x3d, 0x53, 0xa9, 0x4c, 0x0a, 0x53, + 0x29, 0x69, 0xe0, 0x54, 0x0a, 0xbd, 0x2d, 0x6c, 0x3e, 0x9c, 0xe7, 0x31, 0x2e, 0xf6, 0xef, 0xff, + 0xe3, 0x6a, 0x18, 0x05, 0xb5, 0x6f, 0x57, 0xfc, 0x28, 0x07, 0xf5, 0xd2, 0x81, 0x4b, 0x48, 0x86, + 0xf8, 0x1f, 0x8e, 0xd6, 0xce, 0xcb, 0x86, 0xbf, 0xf1, 0x46, 0x49, 0xa1, 0x9d, 0xaa, 0x81, 0xfe, + 0x89, 0x09, 0x98, 0x22, 0x6d, 0x61, 0x55, 0x37, 0x2e, 0xa2, 0x87, 0x65, 0x98, 0xa9, 0xe2, 0x4b, + 0xa5, 0x6d, 0xad, 0xd3, 0xc1, 0xc6, 0x16, 0x0e, 0x9b, 0xed, 0xa7, 0x60, 0x42, 0xeb, 0x76, 0xab, + 0xc1, 0x3e, 0x83, 0xf7, 0xca, 0xfa, 0xdf, 0xaf, 0xf4, 0x6d, 0xe4, 0x99, 0x98, 0x46, 0xee, 0x97, + 0x3b, 0x1f, 0x2e, 0x33, 0x62, 0x86, 0x7c, 0x06, 0xa6, 0x5b, 0x5e, 0x16, 0xff, 0xdc, 0x44, 0x38, + 0x09, 0xfd, 0x5d, 0xa2, 0x6e, 0x40, 0xa8, 0xf0, 0x64, 0x4a, 0x81, 0x47, 0x6c, 0x87, 0x9c, 0x80, + 0x63, 0x8d, 0x5a, 0xad, 0xb9, 0x56, 0xac, 0xde, 0x1f, 0x9c, 0x57, 0xde, 0x44, 0x2f, 0xcd, 0xc2, + 0x5c, 0xdd, 0xec, 0xec, 0xe1, 0x00, 0xa6, 0x0a, 0xe7, 0x90, 0x13, 0x96, 0x53, 0x66, 0x9f, 0x9c, + 0x94, 0x93, 0x90, 0xd7, 0x0c, 0xfb, 0x12, 0xf6, 0x6c, 0x43, 0xf6, 0xc6, 0x60, 0x7c, 0x6f, 0xb8, + 0x1d, 0xab, 0x3c, 0x8c, 0x77, 0x0e, 0x90, 0x24, 0xcf, 0x55, 0x04, 0x90, 0x67, 0x61, 0xc6, 0xa6, + 0x9b, 0x85, 0x8d, 0xd0, 0x9e, 0x30, 0x97, 0x46, 0x58, 0xa4, 0xbb, 0xd5, 0x32, 0x63, 0x91, 0xbc, + 0xa1, 0x87, 0xfd, 0xe6, 0xbf, 0xc1, 0x41, 0x5c, 0x3c, 0x08, 0x63, 0xc9, 0x40, 0x7e, 0xf9, 0xa8, + 0x67, 0x78, 0xa7, 0xe0, 0x38, 0x6b, 0xb5, 0xcd, 0xd2, 0x4a, 0x71, 0x75, 0xb5, 0x5c, 0x5d, 0x2e, + 0x37, 0x2b, 0x8b, 0x74, 0xab, 0x22, 0x48, 0x29, 0x36, 0x1a, 0xe5, 0xb5, 0xf5, 0x46, 0xbd, 0x59, + 0x7e, 0x46, 0xa9, 0x5c, 0x5e, 0x24, 0x2e, 0x71, 0xe4, 0x4c, 0x8b, 0xe7, 0xbc, 0x58, 0xac, 0xd6, + 0xcf, 0x97, 0xd5, 0xc2, 0xf6, 0xd9, 0x22, 0x4c, 0x87, 0xfa, 0x79, 0x97, 0xbb, 0x45, 0xbc, 0xa9, + 0xed, 0x76, 0x98, 0xad, 0x56, 0x38, 0xe2, 0x72, 0x47, 0x64, 0x53, 0x33, 0x3a, 0x97, 0x0b, 0x19, + 0xa5, 0x00, 0x33, 0xe1, 0x2e, 0xbd, 0x20, 0xa1, 0x37, 0x5f, 0x03, 0x53, 0xe7, 0x4d, 0xeb, 0x22, + 0xf1, 0xe3, 0x42, 0xef, 0xa2, 0x71, 0x4d, 0xbc, 0x13, 0xa2, 0xa1, 0x81, 0xfd, 0xe5, 0xe2, 0xde, + 0x02, 0x1e, 0xb5, 0xf9, 0x81, 0xa7, 0x40, 0xcf, 0xc0, 0xf4, 0x25, 0x2f, 0x77, 0xd0, 0xd2, 0x43, + 0x49, 0xe8, 0xbf, 0x89, 0xed, 0xff, 0x0f, 0x2e, 0x32, 0xfd, 0xfd, 0xe9, 0x37, 0x49, 0x90, 0x5f, + 0xc6, 0x4e, 0xb1, 0xd3, 0x09, 0xcb, 0xed, 0x45, 0xc2, 0x27, 0x7b, 0xb8, 0x4a, 0x14, 0x3b, 0x9d, + 0xe8, 0x46, 0x15, 0x12, 0x90, 0xe7, 0x81, 0xce, 0xa5, 0x09, 0xfa, 0xcd, 0x0d, 0x28, 0x30, 0x7d, + 0x89, 0xbd, 0x5f, 0xf6, 0xf7, 0xb8, 0x1f, 0x09, 0x59, 0x39, 0x4f, 0x0c, 0x62, 0xda, 0x64, 0xe2, + 0xf7, 0xca, 0xbd, 0x7c, 0xca, 0x7d, 0x30, 0xb1, 0x6b, 0xe3, 0x92, 0x66, 0x63, 0xc2, 0x5b, 0x6f, + 0x4d, 0x6b, 0x17, 0x1e, 0xc0, 0x2d, 0x67, 0xbe, 0xb2, 0xe3, 0x1a, 0xd4, 0x1b, 0x34, 0xa3, 0x1f, + 0x26, 0x86, 0xbd, 0xab, 0x1e, 0x05, 0x77, 0x52, 0x72, 0x49, 0x77, 0xb6, 0x4b, 0xdb, 0x9a, 0xc3, + 0xd6, 0xb6, 0xfd, 0x77, 0xf4, 0x82, 0x21, 0xe0, 0x8c, 0xdd, 0x0b, 0x8e, 0x3c, 0x20, 0x98, 0x18, + 0xc4, 0x11, 0x6c, 0xe0, 0x0e, 0x03, 0xe2, 0x3f, 0x4a, 0x90, 0xad, 0x75, 0xb1, 0x21, 0x7c, 0x1a, + 0xc6, 0x97, 0xad, 0xd4, 0x23, 0xdb, 0x87, 0xc5, 0xbd, 0xc3, 0xfc, 0x4a, 0xbb, 0x25, 0x47, 0x48, + 0xf6, 0x16, 0xc8, 0xea, 0xc6, 0xa6, 0xc9, 0x0c, 0xd3, 0xab, 0x23, 0x36, 0x81, 0x2a, 0xc6, 0xa6, + 0xa9, 0x92, 0x8c, 0xa2, 0x8e, 0x61, 0x71, 0x65, 0xa7, 0x2f, 0xee, 0xaf, 0x4d, 0x42, 0x9e, 0xaa, + 0x33, 0x7a, 0xa1, 0x0c, 0x72, 0xb1, 0xdd, 0x8e, 0x10, 0xbc, 0xb4, 0x4f, 0xf0, 0x26, 0xf9, 0xcd, + 0xc7, 0xc4, 0x7f, 0xe7, 0x83, 0x99, 0x08, 0xf6, 0xed, 0xac, 0x49, 0x15, 0xdb, 0xed, 0x68, 0x1f, + 0x54, 0xbf, 0x40, 0x89, 0x2f, 0x30, 0xdc, 0xc2, 0x65, 0xb1, 0x16, 0x9e, 0x78, 0x20, 0x88, 0xe4, + 0x2f, 0x7d, 0x88, 0xfe, 0x59, 0x82, 0x89, 0x55, 0xdd, 0x76, 0x5c, 0x6c, 0x8a, 0x22, 0xd8, 0x5c, + 0x03, 0x53, 0x9e, 0x68, 0xdc, 0x2e, 0xcf, 0xed, 0xcf, 0x83, 0x04, 0xf4, 0xaa, 0x30, 0x3a, 0xf7, + 0xf2, 0xe8, 0x3c, 0x39, 0xbe, 0xf6, 0x8c, 0x8b, 0xe8, 0x53, 0x06, 0x41, 0xb1, 0x52, 0x6f, 0xb1, + 0xbf, 0xed, 0x0b, 0x7c, 0x8d, 0x13, 0xf8, 0xed, 0xc3, 0x14, 0x99, 0xbe, 0xd0, 0x3f, 0x2d, 0x01, + 0xb8, 0x65, 0xb3, 0xa3, 0x5c, 0x8f, 0xe3, 0x0e, 0x68, 0xc7, 0x48, 0xf7, 0xa5, 0x61, 0xe9, 0xae, + 0xf1, 0xd2, 0xfd, 0xe1, 0xc1, 0x55, 0x8d, 0x3b, 0xb2, 0xa5, 0x14, 0x40, 0xd6, 0x7d, 0xd1, 0xba, + 0x8f, 0xe8, 0x4d, 0xbe, 0x50, 0xd7, 0x39, 0xa1, 0xde, 0x39, 0x64, 0x49, 0xe9, 0xcb, 0xf5, 0xaf, + 0x24, 0x98, 0xa8, 0x63, 0xc7, 0xed, 0x26, 0xd1, 0x39, 0x91, 0x1e, 0x3e, 0xd4, 0xb6, 0x25, 0xc1, + 0xb6, 0xfd, 0xcd, 0x8c, 0x68, 0xa0, 0x97, 0x40, 0x32, 0x8c, 0xa7, 0x88, 0xc5, 0x83, 0x47, 0x84, + 0x02, 0xbd, 0x0c, 0xa2, 0x96, 0xbe, 0x74, 0xdf, 0x20, 0xf9, 0x1b, 0xf3, 0xfc, 0x49, 0x8b, 0xb0, + 0x59, 0x9c, 0xd9, 0x6f, 0x16, 0x8b, 0x9f, 0xb4, 0x08, 0xd7, 0x31, 0x7a, 0x57, 0x3a, 0xb1, 0xb1, + 0x31, 0x82, 0x0d, 0xe3, 0x61, 0xe4, 0xf5, 0x6c, 0x19, 0xf2, 0x6c, 0x65, 0xf9, 0xee, 0xf8, 0x95, + 0xe5, 0xc1, 0x53, 0x8b, 0x77, 0x0e, 0x61, 0xca, 0xc5, 0x2d, 0xf7, 0xfa, 0x6c, 0x48, 0x21, 0x36, + 0x6e, 0x86, 0x1c, 0x89, 0x44, 0xc9, 0xc6, 0xb9, 0x60, 0xaf, 0xdf, 0x23, 0x51, 0x76, 0xbf, 0xaa, + 0x34, 0x53, 0x62, 0x14, 0x46, 0xb0, 0x42, 0x3c, 0x0c, 0x0a, 0x6f, 0x57, 0x00, 0xd6, 0x77, 0x2f, + 0x74, 0x74, 0x7b, 0x5b, 0x37, 0xb6, 0xd0, 0x77, 0x33, 0x30, 0xc3, 0x5e, 0x69, 0x40, 0xc5, 0x58, + 0xf3, 0x2f, 0xd2, 0x28, 0x28, 0x80, 0xbc, 0x6b, 0xe9, 0x6c, 0x19, 0xc0, 0x7d, 0x54, 0xee, 0xf2, + 0x1d, 0x79, 0xb2, 0x3d, 0x47, 0xe9, 0x5d, 0x31, 0x04, 0x1c, 0xcc, 0x87, 0x4a, 0x0f, 0x1c, 0x7a, + 0xc2, 0x51, 0x33, 0x73, 0x7c, 0xd4, 0x4c, 0xee, 0x7c, 0x5d, 0xbe, 0xe7, 0x7c, 0x9d, 0x8b, 0xa3, + 0xad, 0x3f, 0x13, 0x13, 0xe7, 0x52, 0x59, 0x25, 0xcf, 0xee, 0x1f, 0x0f, 0x98, 0xba, 0x41, 0x36, + 0x0b, 0x98, 0xeb, 0x68, 0x90, 0x80, 0xde, 0x17, 0x4c, 0x64, 0x4c, 0x41, 0x2b, 0x38, 0x81, 0x18, + 0xb8, 0xb2, 0xb3, 0xbd, 0x65, 0x7f, 0x50, 0x38, 0x4a, 0x56, 0x48, 0x60, 0xb1, 0x53, 0x12, 0xc6, + 0x81, 0xe4, 0x73, 0x10, 0xda, 0xed, 0x8b, 0xeb, 0x4e, 0x07, 0xd1, 0x4f, 0xa6, 0x98, 0x3b, 0x43, + 0x2c, 0xbe, 0x28, 0x30, 0xe7, 0x9d, 0x3a, 0xac, 0x2d, 0xdc, 0x5b, 0x2e, 0x35, 0x0a, 0x78, 0xff, + 0x49, 0x44, 0x72, 0xe6, 0x90, 0x9e, 0x2f, 0x0c, 0x16, 0x58, 0xd0, 0xff, 0x90, 0x20, 0xcf, 0x6c, + 0x87, 0xbb, 0x0f, 0x08, 0x21, 0x7a, 0xd9, 0x30, 0x90, 0xc4, 0x1e, 0xfe, 0xfe, 0x58, 0x52, 0x00, + 0x46, 0x60, 0x2d, 0xdc, 0x9f, 0x1a, 0x00, 0xe8, 0x5f, 0x25, 0xc8, 0xba, 0x36, 0x8d, 0xd8, 0xd1, + 0xda, 0x8f, 0x0a, 0x3b, 0xb5, 0x86, 0x04, 0xe0, 0x92, 0x8f, 0xd0, 0xef, 0x05, 0x98, 0xea, 0xd2, + 0x8c, 0xfe, 0xc1, 0xee, 0xeb, 0x05, 0x7a, 0x16, 0xac, 0x06, 0xbf, 0xa1, 0x77, 0x08, 0x39, 0xc6, + 0xc6, 0xf3, 0x93, 0x0c, 0x8e, 0xf2, 0x28, 0x4e, 0xe1, 0x6e, 0xa2, 0x6f, 0x4b, 0x00, 0x2a, 0xb6, + 0xcd, 0xce, 0x1e, 0xde, 0xb0, 0x74, 0x74, 0x75, 0x00, 0x00, 0x6b, 0xf6, 0x99, 0xa0, 0xd9, 0x7f, + 0x22, 0x2c, 0xf8, 0x65, 0x5e, 0xf0, 0x4f, 0x8c, 0xd6, 0x3c, 0x8f, 0x78, 0x84, 0xf8, 0x9f, 0x0e, + 0x13, 0x4c, 0x8e, 0xcc, 0x40, 0x14, 0x13, 0xbe, 0xf7, 0x13, 0x7a, 0xb7, 0x2f, 0xfa, 0x7b, 0x39, + 0xd1, 0x3f, 0x25, 0x31, 0x47, 0xc9, 0x00, 0x28, 0x0d, 0x01, 0xc0, 0x51, 0x98, 0xf6, 0x00, 0xd8, + 0x50, 0x2b, 0x05, 0x8c, 0xde, 0x2a, 0x93, 0xbd, 0x74, 0x3a, 0x52, 0x1d, 0xbc, 0xa7, 0xf9, 0xb2, + 0xf0, 0xcc, 0x3d, 0x24, 0x0f, 0xbf, 0xfc, 0x94, 0x00, 0xfa, 0x53, 0xa1, 0xa9, 0xba, 0x00, 0x43, + 0x8f, 0x96, 0xfe, 0xea, 0x6c, 0x19, 0x66, 0x39, 0x13, 0x43, 0x39, 0x05, 0xc7, 0xb9, 0x04, 0x3a, + 0xde, 0xb5, 0x0b, 0x47, 0x14, 0x04, 0x27, 0xb9, 0x2f, 0xec, 0x05, 0xb7, 0x0b, 0x19, 0xf4, 0x0b, + 0x7f, 0x9e, 0xf1, 0x17, 0x6f, 0xde, 0x99, 0x65, 0xcb, 0x66, 0x1f, 0xe6, 0x63, 0x89, 0xb5, 0x4c, + 0xc3, 0xc1, 0x0f, 0x86, 0x7c, 0x19, 0xfc, 0x84, 0x58, 0xab, 0xe1, 0x14, 0x4c, 0x38, 0x56, 0xd8, + 0xbf, 0xc1, 0x7b, 0x0d, 0x2b, 0x56, 0x8e, 0x57, 0xac, 0x2a, 0x9c, 0xd5, 0x8d, 0x56, 0x67, 0xb7, + 0x8d, 0x55, 0xdc, 0xd1, 0x5c, 0x19, 0xda, 0x45, 0x7b, 0x11, 0x77, 0xb1, 0xd1, 0xc6, 0x86, 0x43, + 0xf9, 0xf4, 0xce, 0x32, 0x09, 0xe4, 0xe4, 0x95, 0xf1, 0x2e, 0x5e, 0x19, 0x1f, 0xd7, 0x6f, 0x3d, + 0x36, 0x66, 0xf1, 0xee, 0x76, 0x00, 0x5a, 0xb7, 0x73, 0x3a, 0xbe, 0xc4, 0xd4, 0xf0, 0xaa, 0x9e, + 0x25, 0xbc, 0x9a, 0x9f, 0x41, 0x0d, 0x65, 0x46, 0x9f, 0xf7, 0xd5, 0xef, 0x1e, 0x4e, 0xfd, 0x6e, + 0x16, 0x64, 0x21, 0x99, 0xd6, 0x75, 0x87, 0xd0, 0xba, 0x59, 0x98, 0x0a, 0x76, 0x76, 0x65, 0xe5, + 0x2a, 0x38, 0xe1, 0xf9, 0x8a, 0x56, 0xcb, 0xe5, 0xc5, 0x7a, 0x73, 0x63, 0x7d, 0x59, 0x2d, 0x2e, + 0x96, 0x0b, 0xe0, 0xea, 0x27, 0xd5, 0x4b, 0xdf, 0xc5, 0x33, 0x8b, 0xfe, 0x42, 0x82, 0x1c, 0x39, + 0x88, 0x87, 0x7e, 0x7c, 0x44, 0x9a, 0x63, 0x73, 0x9e, 0x31, 0xfe, 0xb8, 0x2b, 0x1e, 0xe3, 0x9b, + 0x09, 0x93, 0x70, 0x75, 0xa0, 0x18, 0xdf, 0x31, 0x84, 0xd2, 0x9f, 0xd6, 0xb8, 0x4d, 0xb2, 0xbe, + 0x6d, 0x5e, 0xfa, 0x7e, 0x6e, 0x92, 0x6e, 0xfd, 0x0f, 0xb9, 0x49, 0xf6, 0x61, 0x61, 0xec, 0x4d, + 0xb2, 0x4f, 0xbb, 0x8b, 0x69, 0xa6, 0xe8, 0x59, 0x39, 0x7f, 0xfe, 0xf7, 0x1c, 0xe9, 0x40, 0x1b, + 0x59, 0x45, 0x98, 0xd5, 0x0d, 0x07, 0x5b, 0x86, 0xd6, 0x59, 0xea, 0x68, 0x5b, 0x9e, 0x7d, 0xda, + 0xbb, 0x7b, 0x51, 0x09, 0xe5, 0x51, 0xf9, 0x3f, 0x94, 0xd3, 0x00, 0x0e, 0xde, 0xe9, 0x76, 0x34, + 0x27, 0x50, 0xbd, 0x50, 0x4a, 0x58, 0xfb, 0xb2, 0xbc, 0xf6, 0xdd, 0x0a, 0x57, 0x50, 0xd0, 0x1a, + 0x97, 0xbb, 0x78, 0xc3, 0xd0, 0x7f, 0x62, 0x97, 0x84, 0x9e, 0xa4, 0x3a, 0xda, 0xef, 0x13, 0xb7, + 0x9d, 0x93, 0xef, 0xd9, 0xce, 0xf9, 0x47, 0xe1, 0x90, 0x16, 0x5e, 0xab, 0x1f, 0x10, 0xd2, 0xc2, + 0x6f, 0x69, 0x72, 0x4f, 0x4b, 0xf3, 0x17, 0x59, 0xb2, 0x02, 0x8b, 0x2c, 0x61, 0x54, 0x72, 0x82, + 0x0b, 0x94, 0xaf, 0x14, 0x8a, 0x99, 0x11, 0x57, 0x8d, 0x31, 0x2c, 0x80, 0xcb, 0x30, 0x47, 0x8b, + 0x5e, 0x30, 0xcd, 0x8b, 0x3b, 0x9a, 0x75, 0x11, 0x59, 0x07, 0x52, 0xc5, 0xd8, 0xbd, 0xa4, 0xc8, + 0x0d, 0xd2, 0x8f, 0x0b, 0xcf, 0x19, 0x38, 0x71, 0x79, 0x3c, 0x8f, 0x67, 0x33, 0xe9, 0x75, 0x42, + 0x53, 0x08, 0x11, 0x06, 0xd3, 0xc7, 0xf5, 0x8f, 0x7d, 0x5c, 0xbd, 0x8e, 0x3e, 0xbc, 0x0e, 0x3f, + 0x4a, 0x5c, 0xd1, 0x17, 0x86, 0xc3, 0xce, 0xe3, 0x6b, 0x08, 0xec, 0x0a, 0x20, 0x5f, 0xf4, 0x5d, + 0x7f, 0xdc, 0xc7, 0x70, 0x85, 0xb2, 0xe9, 0xa1, 0x19, 0xc1, 0xf2, 0x58, 0xd0, 0x3c, 0xce, 0xb3, + 0x50, 0xeb, 0xa6, 0x8a, 0xe9, 0xe7, 0x84, 0xf7, 0xb7, 0xfa, 0x0a, 0x88, 0x72, 0x37, 0x9e, 0x56, + 0x29, 0xb6, 0x39, 0x26, 0xce, 0x66, 0xfa, 0x68, 0x3e, 0x3f, 0x07, 0x53, 0x5e, 0xd0, 0x11, 0x72, + 0x27, 0x8e, 0x8f, 0xe1, 0x49, 0xc8, 0xdb, 0xe6, 0xae, 0xd5, 0xc2, 0x6c, 0xc7, 0x91, 0xbd, 0x0d, + 0xb1, 0x3b, 0x36, 0x70, 0x3c, 0xdf, 0x67, 0x32, 0x64, 0x13, 0x9b, 0x0c, 0xd1, 0x06, 0x69, 0xdc, + 0x00, 0xff, 0x02, 0xe1, 0x40, 0xe6, 0x1c, 0x66, 0x75, 0xec, 0x3c, 0x1a, 0xc7, 0xf8, 0x3f, 0x10, + 0xda, 0x7b, 0x19, 0x50, 0x93, 0x64, 0x2a, 0x57, 0x1b, 0xc2, 0x50, 0xbd, 0x1a, 0xae, 0xf4, 0x72, + 0x30, 0x0b, 0x95, 0x58, 0xa4, 0x1b, 0xea, 0x6a, 0x41, 0x46, 0xcf, 0xce, 0x42, 0x81, 0xb2, 0x56, + 0xf3, 0x8d, 0x35, 0xf4, 0xa2, 0xcc, 0x61, 0x5b, 0xa4, 0xd1, 0x53, 0xcc, 0x4f, 0x4a, 0xa2, 0xc1, + 0x52, 0x39, 0xc1, 0x07, 0xb5, 0x8b, 0xd0, 0xa4, 0x21, 0x9a, 0x59, 0x8c, 0xf2, 0xa1, 0xdf, 0xca, + 0x88, 0xc4, 0x5e, 0x15, 0x63, 0x31, 0xfd, 0x5e, 0xe9, 0x33, 0x59, 0x2f, 0x76, 0xd4, 0x92, 0x65, + 0xee, 0x6c, 0x58, 0x1d, 0xf4, 0x7f, 0x0b, 0x85, 0xb6, 0x8e, 0x30, 0xff, 0xa5, 0x68, 0xf3, 0x9f, + 0x2c, 0x19, 0x77, 0x82, 0xbd, 0xaa, 0xce, 0x10, 0xc3, 0xb7, 0x72, 0x03, 0xcc, 0x69, 0xed, 0xf6, + 0xba, 0xb6, 0x85, 0x4b, 0xee, 0xbc, 0xda, 0x70, 0x58, 0x5c, 0x99, 0x9e, 0xd4, 0xd8, 0xae, 0x48, + 0x7c, 0x1d, 0x94, 0x03, 0x89, 0xc9, 0x67, 0x2c, 0xc3, 0x9b, 0x3b, 0x24, 0xb4, 0xb6, 0xb5, 0x20, + 0xca, 0x15, 0x7b, 0x13, 0xf4, 0x6c, 0x12, 0xe0, 0x3b, 0x7d, 0xcd, 0xfa, 0x3d, 0x09, 0x26, 0x5c, + 0x79, 0x17, 0xdb, 0x6d, 0xf4, 0x58, 0x2e, 0x18, 0x5c, 0xa4, 0x6f, 0xd9, 0xcf, 0x0a, 0x3b, 0xf5, + 0x79, 0x35, 0xa4, 0xf4, 0x23, 0x30, 0x09, 0x84, 0x28, 0x71, 0x42, 0x14, 0xf3, 0xdd, 0x8b, 0x2d, + 0x22, 0x7d, 0xf1, 0x7d, 0x54, 0x82, 0x59, 0x6f, 0x1e, 0xb1, 0x84, 0x9d, 0xd6, 0x36, 0xba, 0x5d, + 0x74, 0xa1, 0x89, 0xb5, 0x34, 0x7f, 0x4f, 0xb6, 0x83, 0xbe, 0x93, 0x49, 0xa8, 0xf2, 0x5c, 0xc9, + 0x11, 0xab, 0x74, 0x89, 0x74, 0x31, 0x8e, 0x60, 0xfa, 0xc2, 0xfc, 0xbc, 0x04, 0xd0, 0x30, 0xfd, + 0xb9, 0xee, 0x01, 0x24, 0xf9, 0x2b, 0xc2, 0xdb, 0xb5, 0xac, 0xe2, 0x41, 0xb1, 0xc9, 0x7b, 0x0e, + 0x41, 0xd7, 0xa4, 0x41, 0x25, 0x8d, 0xa5, 0xad, 0x4f, 0x2d, 0xee, 0x76, 0x3b, 0x7a, 0x4b, 0x73, + 0x7a, 0xfd, 0xe9, 0xa2, 0xc5, 0x4b, 0x2e, 0x8c, 0x4c, 0x64, 0x14, 0xfa, 0x65, 0x44, 0xc8, 0x92, + 0x06, 0x29, 0x91, 0xbc, 0x20, 0x25, 0x82, 0x3e, 0x32, 0x03, 0x88, 0x8f, 0x41, 0x3d, 0x65, 0x38, + 0x5a, 0xeb, 0x62, 0x63, 0xc1, 0xc2, 0x5a, 0xbb, 0x65, 0xed, 0xee, 0x5c, 0xb0, 0xc3, 0xce, 0xa0, + 0xf1, 0x3a, 0x1a, 0x5a, 0x3a, 0x96, 0xb8, 0xa5, 0x63, 0xf4, 0x33, 0xb2, 0x68, 0xc8, 0x9c, 0xd0, + 0x06, 0x47, 0x88, 0x87, 0x21, 0x86, 0xba, 0x44, 0x2e, 0x4c, 0x3d, 0xab, 0xc4, 0xd9, 0x24, 0xab, + 0xc4, 0xaf, 0x17, 0x0a, 0xc0, 0x23, 0x54, 0xaf, 0xb1, 0x78, 0xa2, 0xcd, 0xd5, 0xb1, 0x13, 0x01, + 0xef, 0xf5, 0x30, 0x7b, 0x21, 0xf8, 0xe2, 0x43, 0xcc, 0x27, 0xf6, 0xf1, 0x0f, 0x7d, 0x43, 0xd2, + 0x15, 0x18, 0x9e, 0x85, 0x08, 0x74, 0x7d, 0x04, 0x25, 0x11, 0x27, 0xb4, 0x44, 0xcb, 0x29, 0xb1, + 0xe5, 0xa7, 0x8f, 0xc2, 0x07, 0x25, 0x98, 0x26, 0xd7, 0x60, 0x2e, 0x5c, 0x26, 0xa7, 0x1a, 0x05, + 0x8d, 0x92, 0xe7, 0x87, 0xc5, 0xac, 0x40, 0xb6, 0xa3, 0x1b, 0x17, 0x3d, 0xef, 0x41, 0xf7, 0x39, + 0xb8, 0x54, 0x4d, 0xea, 0x73, 0xa9, 0x9a, 0xbf, 0x4f, 0xe1, 0x97, 0x7b, 0xa0, 0x5b, 0x7e, 0x07, + 0x92, 0x4b, 0x5f, 0x8c, 0x7f, 0x9f, 0x85, 0x7c, 0x1d, 0x6b, 0x56, 0x6b, 0x1b, 0xbd, 0x53, 0xea, + 0x3b, 0x55, 0x98, 0xe4, 0xa7, 0x0a, 0x4b, 0x30, 0xb1, 0xa9, 0x77, 0x1c, 0x6c, 0x51, 0x8f, 0xea, + 0x70, 0xd7, 0x4e, 0x9b, 0xf8, 0x42, 0xc7, 0x6c, 0x5d, 0x9c, 0x67, 0xa6, 0xfb, 0xbc, 0x17, 0x84, + 0x73, 0x7e, 0x89, 0xfc, 0xa4, 0x7a, 0x3f, 0xbb, 0x06, 0xa1, 0x6d, 0x5a, 0x4e, 0xd4, 0xfd, 0x0a, + 0x11, 0x54, 0xea, 0xa6, 0xe5, 0xa8, 0xf4, 0x47, 0x17, 0xe6, 0xcd, 0xdd, 0x4e, 0xa7, 0x81, 0x1f, + 0x74, 0xbc, 0x69, 0x9b, 0xf7, 0xee, 0x1a, 0x8b, 0xe6, 0xe6, 0xa6, 0x8d, 0xe9, 0xa2, 0x41, 0x4e, + 0x65, 0x6f, 0xca, 0x71, 0xc8, 0x75, 0xf4, 0x1d, 0x9d, 0x4e, 0x34, 0x72, 0x2a, 0x7d, 0x51, 0x6e, + 0x82, 0x42, 0x30, 0xc7, 0xa1, 0x8c, 0x9e, 0xca, 0x93, 0xa6, 0xb9, 0x2f, 0xdd, 0xd5, 0x99, 0x8b, + 0xf8, 0xb2, 0x7d, 0x6a, 0x82, 0x7c, 0x27, 0xcf, 0xfc, 0xf1, 0x15, 0x91, 0xfd, 0x0e, 0x2a, 0xf1, + 0xe8, 0x19, 0xac, 0x85, 0x5b, 0xa6, 0xd5, 0xf6, 0x64, 0x13, 0x3d, 0xc1, 0x60, 0xf9, 0x92, 0xed, + 0x52, 0xf4, 0x2d, 0x3c, 0x7d, 0x4d, 0x7b, 0x5b, 0xde, 0xed, 0x36, 0xdd, 0xa2, 0xcf, 0xeb, 0xce, + 0xf6, 0x1a, 0x76, 0x34, 0xf4, 0xf7, 0x72, 0x5f, 0x8d, 0x9b, 0xfe, 0xdf, 0x1a, 0x37, 0x40, 0xe3, + 0x68, 0x78, 0x25, 0x67, 0xd7, 0x32, 0x5c, 0x39, 0x32, 0xaf, 0xd4, 0x50, 0x8a, 0x72, 0x27, 0x5c, + 0x15, 0xbc, 0x79, 0x4b, 0xa5, 0x8b, 0x6c, 0xda, 0x3a, 0x45, 0xb2, 0x47, 0x67, 0x50, 0xd6, 0xe1, + 0x3a, 0xfa, 0x71, 0xa5, 0xb1, 0xb6, 0xba, 0xa2, 0x6f, 0x6d, 0x77, 0xf4, 0xad, 0x6d, 0xc7, 0xae, + 0x18, 0xb6, 0x83, 0xb5, 0x76, 0x6d, 0x53, 0xa5, 0x37, 0xa3, 0x00, 0xa1, 0x23, 0x92, 0x95, 0xf7, + 0xb8, 0x16, 0x1b, 0xdd, 0xc2, 0x9a, 0x12, 0xd1, 0x52, 0x9e, 0xe2, 0xb6, 0x14, 0x7b, 0xb7, 0xe3, + 0x63, 0x7a, 0x4d, 0x0f, 0xa6, 0x81, 0xaa, 0xef, 0x76, 0x48, 0x73, 0x21, 0x99, 0x93, 0x8e, 0x73, + 0x31, 0x9c, 0xa4, 0xdf, 0x6c, 0xfe, 0xbf, 0x3c, 0xe4, 0x96, 0x2d, 0xad, 0xbb, 0x8d, 0x9e, 0x1d, + 0xea, 0x9f, 0x47, 0xd5, 0x26, 0x7c, 0xed, 0x94, 0x06, 0x69, 0xa7, 0x3c, 0x40, 0x3b, 0xb3, 0x21, + 0xed, 0x8c, 0x5e, 0x54, 0x3e, 0x0b, 0x33, 0x2d, 0xb3, 0xd3, 0xc1, 0x2d, 0x57, 0x1e, 0x95, 0x36, + 0x59, 0xcd, 0x99, 0x52, 0xb9, 0x34, 0x12, 0xa8, 0x18, 0x3b, 0x75, 0xba, 0x86, 0x4e, 0x95, 0x3e, + 0x48, 0x40, 0x2f, 0x92, 0x20, 0x5b, 0x6e, 0x6f, 0x61, 0x6e, 0x9d, 0x3d, 0x13, 0x5a, 0x67, 0x3f, + 0x09, 0x79, 0x47, 0xb3, 0xb6, 0xb0, 0xe3, 0xad, 0x13, 0xd0, 0x37, 0x3f, 0x7e, 0xb2, 0x1c, 0x8a, + 0x9f, 0xfc, 0xc3, 0x90, 0x75, 0x65, 0xc6, 0x9c, 0xcc, 0xaf, 0xeb, 0x07, 0x3f, 0x91, 0xfd, 0xbc, + 0x5b, 0xe2, 0xbc, 0x5b, 0x6b, 0x95, 0xfc, 0xd0, 0x8b, 0x75, 0x6e, 0x1f, 0xd6, 0xe4, 0x92, 0xc7, + 0x96, 0x69, 0x54, 0x76, 0xb4, 0x2d, 0xcc, 0xaa, 0x19, 0x24, 0x78, 0x5f, 0xcb, 0x3b, 0xe6, 0x03, + 0x3a, 0x0b, 0x65, 0x1c, 0x24, 0xb8, 0x55, 0xd8, 0xd6, 0xdb, 0x6d, 0x6c, 0xb0, 0x96, 0xcd, 0xde, + 0xce, 0x9e, 0x86, 0xac, 0xcb, 0x83, 0xab, 0x3f, 0xae, 0xb1, 0x50, 0x38, 0xa2, 0xcc, 0xb8, 0xcd, + 0x8a, 0x36, 0xde, 0x42, 0x86, 0x5f, 0x53, 0x15, 0x71, 0xdb, 0xa1, 0x95, 0xeb, 0xdf, 0xb8, 0x9e, + 0x00, 0x39, 0xc3, 0x6c, 0xe3, 0x81, 0x83, 0x10, 0xcd, 0xa5, 0x3c, 0x19, 0x72, 0xb8, 0xed, 0xf6, + 0x0a, 0x32, 0xc9, 0x7e, 0x3a, 0x5e, 0x96, 0x2a, 0xcd, 0x9c, 0xcc, 0x37, 0xa8, 0x1f, 0xb7, 0xe9, + 0x37, 0xc0, 0x9f, 0x9f, 0x80, 0xa3, 0xb4, 0x0f, 0xa8, 0xef, 0x5e, 0x70, 0x49, 0x5d, 0xc0, 0xe8, + 0x91, 0xfe, 0x03, 0xd7, 0x51, 0x5e, 0xd9, 0x8f, 0x43, 0xce, 0xde, 0xbd, 0xe0, 0x1b, 0xa1, 0xf4, + 0x25, 0xdc, 0x74, 0xa5, 0x91, 0x0c, 0x67, 0xf2, 0xb0, 0xc3, 0x19, 0x37, 0x34, 0xc9, 0x5e, 0xe3, + 0x0f, 0x06, 0x32, 0x7a, 0x3c, 0xc2, 0x1b, 0xc8, 0xfa, 0x0d, 0x43, 0xa7, 0x60, 0x42, 0xdb, 0x74, + 0xb0, 0x15, 0x98, 0x89, 0xec, 0xd5, 0x1d, 0x2a, 0x2f, 0xe0, 0x4d, 0xd3, 0x72, 0xc5, 0x32, 0x45, + 0x87, 0x4a, 0xef, 0x3d, 0xd4, 0x72, 0x81, 0xdb, 0x21, 0xbb, 0x19, 0x8e, 0x19, 0xe6, 0x22, 0xee, + 0x32, 0x39, 0x53, 0x14, 0x67, 0x49, 0x0b, 0xd8, 0xff, 0x61, 0x5f, 0x57, 0x32, 0xb7, 0xbf, 0x2b, + 0x41, 0x9f, 0x48, 0x3a, 0x67, 0xee, 0x01, 0x7a, 0x64, 0x16, 0x9a, 0xf2, 0x34, 0x98, 0x69, 0x33, + 0x17, 0xad, 0x96, 0xee, 0xb7, 0x92, 0xc8, 0xff, 0xb8, 0xcc, 0x81, 0x22, 0x65, 0xc3, 0x8a, 0xb4, + 0x0c, 0x93, 0xe4, 0x20, 0xb3, 0xab, 0x49, 0xb9, 0x1e, 0x97, 0x78, 0x32, 0xad, 0xf3, 0x2b, 0x15, + 0x12, 0xdb, 0x7c, 0x89, 0xfd, 0xa2, 0xfa, 0x3f, 0x27, 0x9b, 0x7d, 0xc7, 0x4b, 0x28, 0xfd, 0xe6, + 0xf8, 0xdb, 0x79, 0xb8, 0xaa, 0x64, 0x99, 0xb6, 0x4d, 0xce, 0xc0, 0xf4, 0x36, 0xcc, 0xd7, 0x4a, + 0xdc, 0x4d, 0x0a, 0x8f, 0xea, 0xe6, 0xd7, 0xaf, 0x41, 0x8d, 0xaf, 0x69, 0x7c, 0x59, 0x38, 0x04, + 0x8c, 0xbf, 0xff, 0x10, 0x21, 0xf4, 0xef, 0x8f, 0x46, 0xf2, 0xb6, 0x8c, 0x48, 0x54, 0x9a, 0x84, + 0xb2, 0x4a, 0xbf, 0xb9, 0x7c, 0x4e, 0x82, 0xab, 0x7b, 0xb9, 0xd9, 0x30, 0x6c, 0xbf, 0xc1, 0x5c, + 0x3b, 0xa0, 0xbd, 0xf0, 0x51, 0x4c, 0x62, 0xef, 0x30, 0x8c, 0xa8, 0x7b, 0xa8, 0xb4, 0x88, 0xc5, + 0x92, 0xe0, 0x44, 0x4d, 0xdc, 0x1d, 0x86, 0x89, 0xc9, 0xa7, 0x2f, 0xdc, 0x4f, 0x66, 0xe1, 0xe8, + 0xb2, 0x65, 0xee, 0x76, 0xed, 0xa0, 0x07, 0xfa, 0x9b, 0xfe, 0x1b, 0xae, 0x79, 0x11, 0xd3, 0xe0, + 0x0c, 0x4c, 0x5b, 0xcc, 0x9a, 0x0b, 0xb6, 0x5f, 0xc3, 0x49, 0xe1, 0xde, 0x4b, 0x3e, 0x48, 0xef, + 0x15, 0xf4, 0x33, 0x59, 0xae, 0x9f, 0xe9, 0xed, 0x39, 0x72, 0x7d, 0x7a, 0x8e, 0xbf, 0x96, 0x12, + 0x0e, 0xaa, 0x3d, 0x22, 0x8a, 0xe8, 0x2f, 0x4a, 0x90, 0xdf, 0x22, 0x19, 0x59, 0x77, 0xf1, 0x78, + 0xb1, 0x9a, 0x11, 0xe2, 0x2a, 0xfb, 0x35, 0x90, 0xab, 0x1c, 0xd6, 0xe1, 0x44, 0x03, 0x5c, 0x3c, + 0xb7, 0xe9, 0x2b, 0xd5, 0xc3, 0x59, 0x98, 0xf1, 0x4b, 0xaf, 0xb4, 0x6d, 0xf4, 0xfc, 0xfe, 0x1a, + 0x35, 0x2b, 0xa2, 0x51, 0xfb, 0xd6, 0x99, 0xfd, 0x51, 0x47, 0x0e, 0x8d, 0x3a, 0x7d, 0x47, 0x97, + 0x99, 0x88, 0xd1, 0x05, 0x3d, 0x4b, 0x16, 0xbd, 0x8b, 0x88, 0xef, 0x5a, 0x49, 0x6d, 0x1e, 0xcd, + 0x83, 0x85, 0xe0, 0x8d, 0x48, 0x83, 0x6b, 0x95, 0xbe, 0x92, 0xbc, 0x47, 0x82, 0x63, 0xfb, 0x3b, + 0xf3, 0x1f, 0xe0, 0xbd, 0xd0, 0xdc, 0x3a, 0xd9, 0xbe, 0x17, 0x1a, 0x79, 0xe3, 0x37, 0xe9, 0x62, + 0x43, 0x8a, 0x70, 0xf6, 0xde, 0xe0, 0x4e, 0x5c, 0x2c, 0x68, 0x88, 0x20, 0xd1, 0xf4, 0x05, 0xf8, + 0xab, 0x32, 0x4c, 0xd5, 0xb1, 0xb3, 0xaa, 0x5d, 0x36, 0x77, 0x1d, 0xa4, 0x89, 0x6e, 0xcf, 0x3d, + 0x15, 0xf2, 0x1d, 0xf2, 0x0b, 0xbb, 0xe2, 0xfd, 0x4c, 0xdf, 0xfd, 0x2d, 0xe2, 0xfb, 0x43, 0x49, + 0xab, 0x2c, 0x3f, 0x1f, 0xcb, 0x45, 0x64, 0x77, 0xd4, 0xe7, 0x6e, 0x24, 0x5b, 0x3b, 0x89, 0xf6, + 0x4e, 0xa3, 0x8a, 0x4e, 0x1f, 0x96, 0x9f, 0x91, 0x61, 0xb6, 0x8e, 0x9d, 0x8a, 0xbd, 0xa4, 0xed, + 0x99, 0x96, 0xee, 0xe0, 0xf0, 0x1d, 0x8f, 0xf1, 0xd0, 0x9c, 0x06, 0xd0, 0xfd, 0xdf, 0x58, 0x84, + 0xa9, 0x50, 0x0a, 0xfa, 0xad, 0xa4, 0x8e, 0x42, 0x1c, 0x1f, 0x23, 0x01, 0x21, 0x91, 0x8f, 0x45, + 0x5c, 0xf1, 0xe9, 0x03, 0xf1, 0x59, 0x89, 0x01, 0x51, 0xb4, 0x5a, 0xdb, 0xfa, 0x1e, 0x6e, 0x27, + 0x04, 0xc2, 0xfb, 0x2d, 0x00, 0xc2, 0x27, 0x94, 0xd8, 0x7d, 0x85, 0xe3, 0x63, 0x14, 0xee, 0x2b, + 0x71, 0x04, 0xc7, 0x12, 0x24, 0xca, 0xed, 0x7a, 0xd8, 0x7a, 0xe6, 0xdd, 0xa2, 0x62, 0x0d, 0x4c, + 0x36, 0x29, 0x6c, 0xb2, 0x0d, 0xd5, 0xb1, 0xd0, 0xb2, 0x07, 0xe9, 0x74, 0x36, 0x8d, 0x8e, 0xa5, + 0x6f, 0xd1, 0xe9, 0x0b, 0xfd, 0x1d, 0x32, 0x9c, 0xf0, 0xa3, 0xa7, 0xd4, 0xb1, 0xb3, 0xa8, 0xd9, + 0xdb, 0x17, 0x4c, 0xcd, 0x6a, 0x87, 0xaf, 0xfe, 0x1f, 0xfa, 0xc4, 0x1f, 0xfa, 0x4c, 0x18, 0x84, + 0x2a, 0x0f, 0x42, 0x5f, 0x57, 0xd1, 0xbe, 0xbc, 0x8c, 0xa2, 0x93, 0x89, 0xf5, 0x66, 0xfd, 0x1d, + 0x1f, 0xac, 0x1f, 0xe1, 0xc0, 0xba, 0x6b, 0x58, 0x16, 0xd3, 0x07, 0xee, 0x37, 0xe8, 0x88, 0x10, + 0xf2, 0x6a, 0xbe, 0x5f, 0x14, 0xb0, 0x08, 0xaf, 0x56, 0x39, 0xd2, 0xab, 0x75, 0xa8, 0x31, 0x62, + 0xa0, 0x47, 0x72, 0xba, 0x63, 0xc4, 0x21, 0x7a, 0x1b, 0xbf, 0x45, 0x86, 0x02, 0x09, 0x9f, 0x15, + 0xf2, 0xf8, 0x46, 0x0f, 0x88, 0xa2, 0xb3, 0xcf, 0xbb, 0x7c, 0x22, 0xa9, 0x77, 0x39, 0x7a, 0x73, + 0x52, 0x1f, 0xf2, 0x5e, 0x6e, 0x47, 0x82, 0x58, 0x22, 0x17, 0xf1, 0x01, 0x1c, 0xa4, 0x0f, 0xda, + 0x2f, 0xc8, 0x00, 0x6e, 0x83, 0x66, 0x67, 0x1f, 0x9e, 0x21, 0x0a, 0xd7, 0x2d, 0x61, 0xbf, 0x7a, + 0x17, 0xa8, 0x13, 0x3d, 0x40, 0x51, 0x8a, 0xc1, 0xa9, 0x8a, 0x47, 0x92, 0xfa, 0x56, 0x06, 0x5c, + 0x8d, 0x04, 0x96, 0x44, 0xde, 0x96, 0x91, 0x65, 0xa7, 0x0f, 0xc8, 0x7f, 0x97, 0x20, 0xd7, 0x30, + 0xeb, 0xd8, 0x39, 0xb8, 0x29, 0x90, 0xf8, 0xd8, 0x3e, 0x29, 0x77, 0x14, 0xc7, 0xf6, 0xfb, 0x11, + 0x1a, 0x43, 0x34, 0x32, 0x09, 0x66, 0x1a, 0x66, 0xc9, 0x5f, 0x9c, 0x12, 0xf7, 0x55, 0x15, 0xbf, + 0x4f, 0xd9, 0xaf, 0x60, 0x50, 0xcc, 0x81, 0xee, 0x53, 0x1e, 0x4c, 0x2f, 0x7d, 0xb9, 0xdd, 0x0e, + 0x47, 0x37, 0x8c, 0xb6, 0xa9, 0xe2, 0xb6, 0xc9, 0x56, 0xba, 0x15, 0x05, 0xb2, 0xbb, 0x46, 0xdb, + 0x24, 0x2c, 0xe7, 0x54, 0xf2, 0xec, 0xa6, 0x59, 0xb8, 0x6d, 0x32, 0xdf, 0x00, 0xf2, 0x8c, 0xbe, + 0x2c, 0x43, 0xd6, 0xfd, 0x57, 0x5c, 0xd4, 0x6f, 0x91, 0x13, 0x06, 0x22, 0x70, 0xc9, 0x8f, 0xc4, + 0x12, 0xba, 0x3b, 0xb4, 0xf6, 0x4f, 0x3d, 0x58, 0xaf, 0x8b, 0x2a, 0x2f, 0x24, 0x8a, 0x60, 0xcd, + 0x5f, 0x39, 0x05, 0x13, 0x17, 0x3a, 0x66, 0xeb, 0x62, 0x70, 0x5e, 0x9e, 0xbd, 0x2a, 0x37, 0x41, + 0xce, 0xd2, 0x8c, 0x2d, 0xcc, 0xf6, 0x14, 0x8e, 0xf7, 0xf4, 0x85, 0xc4, 0xeb, 0x45, 0xa5, 0x59, + 0xd0, 0x9b, 0x93, 0x84, 0x40, 0xe8, 0x53, 0xf9, 0x64, 0xfa, 0xb0, 0x38, 0xc4, 0xc9, 0xb2, 0x02, + 0xcc, 0x94, 0x8a, 0xf4, 0xe6, 0xf2, 0xb5, 0xda, 0xb9, 0x72, 0x41, 0x26, 0x30, 0xbb, 0x32, 0x49, + 0x11, 0x66, 0x97, 0xfc, 0xf7, 0x2d, 0xcc, 0x7d, 0x2a, 0x7f, 0x18, 0x30, 0x7f, 0x54, 0x82, 0xd9, + 0x55, 0xdd, 0x76, 0xa2, 0xbc, 0xfd, 0x63, 0xa2, 0xe7, 0xbe, 0x20, 0xa9, 0xa9, 0xcc, 0x95, 0x23, + 0x1c, 0x36, 0x37, 0x91, 0x39, 0x1c, 0x57, 0xc4, 0x78, 0x8e, 0xa5, 0x10, 0x0e, 0xe8, 0x6d, 0xc3, + 0xc2, 0x92, 0x4c, 0x6c, 0x28, 0x05, 0x85, 0x8c, 0xdf, 0x50, 0x8a, 0x2c, 0x3b, 0x7d, 0xf9, 0x7e, + 0x59, 0x82, 0x63, 0x6e, 0xf1, 0x71, 0xcb, 0x52, 0xd1, 0x62, 0x1e, 0xb8, 0x2c, 0x95, 0x78, 0x65, + 0x7c, 0x1f, 0x2f, 0xa3, 0x58, 0x19, 0x1f, 0x44, 0x74, 0xcc, 0x62, 0x8e, 0x58, 0x86, 0x1d, 0x24, + 0xe6, 0x98, 0x65, 0xd8, 0xe1, 0xc5, 0x1c, 0xbf, 0x14, 0x3b, 0xa4, 0x98, 0x0f, 0x6d, 0x81, 0xf5, + 0xd5, 0xb2, 0x2f, 0xe6, 0xc8, 0xb5, 0x8d, 0x18, 0x31, 0x27, 0x3e, 0xb1, 0x8b, 0xde, 0x3a, 0xa4, + 0xe0, 0x47, 0xbc, 0xbe, 0x31, 0x0c, 0x4c, 0x87, 0xb8, 0xc6, 0xf1, 0x9b, 0x32, 0xcc, 0x31, 0x2e, + 0xfa, 0x4f, 0x99, 0x63, 0x30, 0x4a, 0x3c, 0x65, 0x4e, 0x7c, 0x06, 0x88, 0xe7, 0x6c, 0xfc, 0x67, + 0x80, 0x62, 0xcb, 0x4f, 0x1f, 0x9c, 0xaf, 0x64, 0xe1, 0xa4, 0xcb, 0xc2, 0x9a, 0xd9, 0xd6, 0x37, + 0x2f, 0x53, 0x2e, 0xce, 0x69, 0x9d, 0x5d, 0x6c, 0xa3, 0x77, 0x49, 0xa2, 0x28, 0xfd, 0x27, 0x00, + 0xb3, 0x8b, 0x2d, 0x1a, 0x48, 0x8d, 0x01, 0x75, 0x67, 0x54, 0x65, 0xf7, 0x97, 0xe4, 0x5f, 0x26, + 0x53, 0xf3, 0x88, 0xa8, 0x21, 0x7a, 0xae, 0x55, 0x38, 0xe5, 0x7f, 0xe9, 0x75, 0xf0, 0xc8, 0xec, + 0x77, 0xf0, 0xb8, 0x11, 0x64, 0xad, 0xdd, 0xf6, 0xa1, 0xea, 0xdd, 0xcc, 0x26, 0x65, 0xaa, 0x6e, + 0x16, 0x37, 0xa7, 0x8d, 0x83, 0xa3, 0x79, 0x11, 0x39, 0x6d, 0xec, 0x28, 0xf3, 0x90, 0xa7, 0x37, + 0x2f, 0xfb, 0x2b, 0xfa, 0xfd, 0x33, 0xb3, 0x5c, 0xbc, 0x69, 0x57, 0xe3, 0xd5, 0xf0, 0xf6, 0x44, + 0x92, 0xe9, 0xd7, 0x4f, 0x07, 0x76, 0xb2, 0xca, 0x29, 0xd8, 0xd3, 0x87, 0xa6, 0x3c, 0x9e, 0xdd, + 0xb0, 0x62, 0xb7, 0xdb, 0xb9, 0xdc, 0x60, 0xc1, 0x57, 0x12, 0xed, 0x86, 0x85, 0x62, 0xb8, 0x48, + 0xbd, 0x31, 0x5c, 0x92, 0xef, 0x86, 0x71, 0x7c, 0x8c, 0x62, 0x37, 0x2c, 0x8e, 0x60, 0xfa, 0xa2, + 0xfd, 0x6a, 0x8e, 0x5a, 0xcd, 0x2c, 0xb6, 0xff, 0xb3, 0xfb, 0x7b, 0x56, 0x03, 0xef, 0xec, 0xd2, + 0x2f, 0xec, 0x7f, 0xec, 0x9d, 0x26, 0xca, 0x93, 0x21, 0xbf, 0x69, 0x5a, 0x3b, 0x9a, 0xb7, 0x71, + 0xdf, 0x7b, 0x52, 0x84, 0xc5, 0xd3, 0x5f, 0x22, 0x79, 0x54, 0x96, 0xd7, 0x9d, 0x8f, 0x3c, 0x53, + 0xef, 0xb2, 0xa8, 0x8b, 0xee, 0xa3, 0x72, 0x3d, 0xcc, 0xb2, 0xe0, 0x8b, 0x55, 0x6c, 0x3b, 0xb8, + 0xcd, 0x22, 0x56, 0xf0, 0x89, 0xca, 0x59, 0x98, 0x61, 0x09, 0x4b, 0x7a, 0x07, 0xdb, 0x2c, 0x68, + 0x05, 0x97, 0xa6, 0x9c, 0x84, 0xbc, 0x6e, 0xdf, 0x6b, 0x9b, 0x06, 0xf1, 0xff, 0x9f, 0x54, 0xd9, + 0x9b, 0x72, 0x23, 0x1c, 0x65, 0xf9, 0x7c, 0x63, 0x95, 0x1e, 0xd8, 0xe9, 0x4d, 0x76, 0x55, 0xcb, + 0x30, 0xd7, 0x2d, 0x73, 0xcb, 0xc2, 0xb6, 0x4d, 0x4e, 0x4d, 0x4d, 0xaa, 0xa1, 0x14, 0xe5, 0xa9, + 0x70, 0x25, 0xfb, 0xc5, 0x8f, 0x0e, 0xe9, 0x1d, 0x01, 0xa2, 0xce, 0x3d, 0x51, 0x9f, 0xd1, 0xa7, + 0x86, 0x99, 0x92, 0x24, 0xbe, 0x21, 0xc1, 0xc5, 0x77, 0xb7, 0xd5, 0xc2, 0xb8, 0xcd, 0xce, 0x4c, + 0x79, 0xaf, 0x09, 0xef, 0x4e, 0x48, 0x3c, 0x81, 0x39, 0xa4, 0xcb, 0x13, 0xde, 0x7f, 0x02, 0xf2, + 0xf4, 0x22, 0x32, 0xf4, 0xc2, 0xb9, 0xbe, 0x6a, 0x3e, 0xc7, 0xab, 0xf9, 0x06, 0xcc, 0x18, 0xa6, + 0x5b, 0xdc, 0xba, 0x66, 0x69, 0x3b, 0x76, 0xdc, 0xfa, 0x24, 0xa5, 0xeb, 0x0f, 0x46, 0xd5, 0xd0, + 0x6f, 0x2b, 0x47, 0x54, 0x8e, 0x8c, 0xf2, 0x7f, 0xc0, 0xd1, 0x0b, 0x2c, 0xb6, 0x80, 0xcd, 0x28, + 0x4b, 0xd1, 0xde, 0x7b, 0x3d, 0x94, 0x17, 0xf8, 0x3f, 0x57, 0x8e, 0xa8, 0xbd, 0xc4, 0x94, 0x1f, + 0x83, 0x39, 0xf7, 0xb5, 0x6d, 0x5e, 0xf2, 0x18, 0x97, 0xa3, 0x4d, 0x98, 0x1e, 0xf2, 0x6b, 0xdc, + 0x8f, 0x2b, 0x47, 0xd4, 0x1e, 0x52, 0x4a, 0x0d, 0x60, 0xdb, 0xd9, 0xe9, 0x30, 0xc2, 0xd9, 0x68, + 0x95, 0xec, 0x21, 0xbc, 0xe2, 0xff, 0xb4, 0x72, 0x44, 0x0d, 0x91, 0x50, 0x56, 0x61, 0xca, 0x79, + 0xd0, 0x61, 0xf4, 0x72, 0xd1, 0xdb, 0xe6, 0x3d, 0xf4, 0x1a, 0xde, 0x3f, 0x2b, 0x47, 0xd4, 0x80, + 0x80, 0x52, 0x81, 0xc9, 0xee, 0x05, 0x46, 0x2c, 0xdf, 0x27, 0x4e, 0x7d, 0x7f, 0x62, 0xeb, 0x17, + 0x7c, 0x5a, 0xfe, 0xef, 0x2e, 0x63, 0x2d, 0x7b, 0x8f, 0xd1, 0x9a, 0x10, 0x66, 0xac, 0xe4, 0xfd, + 0xe3, 0x32, 0xe6, 0x13, 0x50, 0x2a, 0x30, 0x65, 0x1b, 0x5a, 0xd7, 0xde, 0x36, 0x1d, 0xfb, 0xd4, + 0x64, 0x8f, 0x87, 0x65, 0x34, 0xb5, 0x3a, 0xfb, 0x47, 0x0d, 0xfe, 0x56, 0x9e, 0x0c, 0x27, 0x76, + 0xc9, 0x85, 0xee, 0xe5, 0x07, 0x75, 0xdb, 0xd1, 0x8d, 0x2d, 0x2f, 0x3a, 0x2d, 0xed, 0xa7, 0xfa, + 0x7f, 0x54, 0xe6, 0xd9, 0x59, 0x2b, 0x20, 0x6d, 0x13, 0xf5, 0x6e, 0xf3, 0xd1, 0x62, 0x43, 0x47, + 0xac, 0x9e, 0x06, 0x59, 0xf7, 0x13, 0xe9, 0xd7, 0xe6, 0xfa, 0x2f, 0x21, 0xf6, 0xea, 0x0e, 0x69, + 0xc0, 0xee, 0x4f, 0x3d, 0x5d, 0xe3, 0xcc, 0xbe, 0xae, 0xf1, 0x0c, 0x4c, 0xeb, 0xf6, 0x9a, 0xbe, + 0x45, 0xed, 0x32, 0xe6, 0x49, 0x1f, 0x4e, 0xa2, 0xf3, 0xd8, 0x2a, 0xbe, 0x44, 0xef, 0xde, 0x38, + 0xea, 0xcd, 0x63, 0xbd, 0x14, 0x74, 0x03, 0xcc, 0x84, 0x1b, 0x19, 0xbd, 0xcd, 0x54, 0x0f, 0xac, + 0x3a, 0xf6, 0x86, 0xae, 0x87, 0x39, 0x5e, 0xa7, 0x43, 0x83, 0x97, 0xec, 0x75, 0x85, 0xe8, 0x3a, + 0x38, 0xda, 0xd3, 0xb0, 0xbc, 0x68, 0x25, 0x99, 0x20, 0x5a, 0xc9, 0x19, 0x80, 0x40, 0x8b, 0xfb, + 0x92, 0xb9, 0x16, 0xa6, 0x7c, 0xbd, 0xec, 0x9b, 0xe1, 0x8b, 0x19, 0x98, 0xf4, 0x94, 0xad, 0x5f, + 0x06, 0x77, 0xe4, 0x32, 0x42, 0x5b, 0x13, 0x6c, 0x02, 0xcf, 0xa5, 0xb9, 0x23, 0x54, 0xe0, 0x10, + 0xdc, 0xd0, 0x9d, 0x8e, 0x77, 0xa8, 0xae, 0x37, 0x59, 0x59, 0x07, 0xd0, 0x09, 0x46, 0x8d, 0xe0, + 0x94, 0xdd, 0xad, 0x09, 0xda, 0x03, 0xd5, 0x87, 0x10, 0x8d, 0xb3, 0x3f, 0xc0, 0x8e, 0xc0, 0x4d, + 0x41, 0x8e, 0x86, 0x68, 0x3f, 0xa2, 0xcc, 0x01, 0x94, 0x9f, 0xb1, 0x5e, 0x56, 0x2b, 0xe5, 0x6a, + 0xa9, 0x5c, 0xc8, 0xa0, 0x17, 0x4b, 0x30, 0xe5, 0x37, 0x82, 0xbe, 0x95, 0x2c, 0x33, 0xd5, 0x1a, + 0x78, 0x61, 0xe4, 0xfe, 0x46, 0x15, 0x56, 0xb2, 0xa7, 0xc2, 0x95, 0xbb, 0x36, 0x5e, 0xd2, 0x2d, + 0xdb, 0x51, 0xcd, 0x4b, 0x4b, 0xa6, 0xe5, 0xc7, 0x63, 0x66, 0xb1, 0x51, 0xa3, 0x3e, 0xbb, 0xb6, + 0x4a, 0x1b, 0x93, 0xe3, 0x56, 0xd8, 0x62, 0x6b, 0xce, 0x41, 0x82, 0x4b, 0xd7, 0xb1, 0x34, 0xc3, + 0xee, 0x9a, 0x36, 0x56, 0xcd, 0x4b, 0x76, 0xd1, 0x68, 0x97, 0xcc, 0xce, 0xee, 0x8e, 0x61, 0x33, + 0x6b, 0x23, 0xea, 0xb3, 0x2b, 0x1d, 0x72, 0x1d, 0xec, 0x1c, 0x40, 0xa9, 0xb6, 0xba, 0x5a, 0x2e, + 0x35, 0x2a, 0xb5, 0x6a, 0xe1, 0x88, 0x2b, 0xad, 0x46, 0x71, 0x61, 0xd5, 0x95, 0xce, 0x8f, 0xc3, + 0xa4, 0xd7, 0xa6, 0x59, 0x80, 0x95, 0x8c, 0x17, 0x60, 0x45, 0x29, 0xc2, 0xa4, 0xd7, 0xca, 0xd9, + 0x88, 0xf0, 0xd8, 0xde, 0x03, 0xb5, 0x3b, 0x9a, 0xe5, 0x10, 0x4f, 0x6c, 0x8f, 0xc8, 0x82, 0x66, + 0x63, 0xd5, 0xff, 0xed, 0xec, 0x13, 0x18, 0x07, 0x0a, 0xcc, 0x15, 0x57, 0x57, 0x9b, 0x35, 0xb5, + 0x59, 0xad, 0x35, 0x56, 0x2a, 0xd5, 0x65, 0x3a, 0x42, 0x56, 0x96, 0xab, 0x35, 0xb5, 0x4c, 0x07, + 0xc8, 0x7a, 0x21, 0x43, 0xaf, 0x23, 0x5e, 0x98, 0x84, 0x7c, 0x97, 0x48, 0x17, 0x7d, 0x4e, 0x4e, + 0x78, 0x92, 0xde, 0xc7, 0x29, 0xe2, 0xc2, 0x54, 0xce, 0x9b, 0x5d, 0xea, 0x73, 0xda, 0xf4, 0x2c, + 0xcc, 0x50, 0x2b, 0xd1, 0x26, 0x1b, 0x03, 0x04, 0x39, 0x59, 0xe5, 0xd2, 0xd0, 0x07, 0xa5, 0x04, + 0xc7, 0xeb, 0xfb, 0x72, 0x94, 0xcc, 0xb8, 0xf8, 0xf3, 0xcc, 0x70, 0x17, 0x1a, 0x54, 0xaa, 0x8d, + 0xb2, 0x5a, 0x2d, 0xae, 0xb2, 0x2c, 0xb2, 0x72, 0x0a, 0x8e, 0x57, 0x6b, 0x2c, 0x5a, 0x60, 0xbd, + 0xd9, 0xa8, 0x35, 0x2b, 0x6b, 0xeb, 0x35, 0xb5, 0x51, 0xc8, 0x29, 0x27, 0x41, 0xa1, 0xcf, 0xcd, + 0x4a, 0xbd, 0x59, 0x2a, 0x56, 0x4b, 0xe5, 0xd5, 0xf2, 0x62, 0x21, 0xaf, 0x3c, 0x0e, 0xae, 0xa3, + 0x17, 0xe4, 0xd4, 0x96, 0x9a, 0x6a, 0xed, 0x7c, 0xdd, 0x45, 0x50, 0x2d, 0xaf, 0x16, 0x5d, 0x45, + 0x0a, 0x5d, 0x4b, 0x3c, 0xa1, 0x5c, 0x01, 0x47, 0xc9, 0x95, 0xe3, 0xab, 0xb5, 0xe2, 0x22, 0x2b, + 0x6f, 0x52, 0xb9, 0x06, 0x4e, 0x55, 0xaa, 0xf5, 0x8d, 0xa5, 0xa5, 0x4a, 0xa9, 0x52, 0xae, 0x36, + 0x9a, 0xeb, 0x65, 0x75, 0xad, 0x52, 0xaf, 0xbb, 0xff, 0x16, 0xa6, 0xc8, 0xa5, 0xaf, 0xb4, 0xcf, + 0x44, 0xef, 0x94, 0x61, 0xf6, 0x9c, 0xd6, 0xd1, 0xdd, 0x81, 0x82, 0xdc, 0x06, 0xdd, 0x73, 0x10, + 0xc5, 0x21, 0xb7, 0x46, 0x33, 0x57, 0x76, 0xf2, 0x82, 0x7e, 0x5a, 0x4e, 0x78, 0x10, 0x85, 0x01, + 0x41, 0x4b, 0x9c, 0xe7, 0x4a, 0x8b, 0x98, 0x36, 0xbd, 0x52, 0x4a, 0x70, 0x10, 0x45, 0x9c, 0x7c, + 0x32, 0xf0, 0x5f, 0x32, 0x2a, 0xf0, 0x0b, 0x30, 0xb3, 0x51, 0x2d, 0x6e, 0x34, 0x56, 0x6a, 0x6a, + 0xe5, 0x47, 0x49, 0x1c, 0xf3, 0x59, 0x98, 0x5a, 0xaa, 0xa9, 0x0b, 0x95, 0xc5, 0xc5, 0x72, 0xb5, + 0x90, 0x53, 0xae, 0x84, 0x2b, 0xea, 0x65, 0xf5, 0x5c, 0xa5, 0x54, 0x6e, 0x6e, 0x54, 0x8b, 0xe7, + 0x8a, 0x95, 0x55, 0xd2, 0x47, 0xe4, 0x63, 0x6e, 0xb2, 0x9e, 0x40, 0x3f, 0x99, 0x05, 0xa0, 0x55, + 0x27, 0xd7, 0xf8, 0x84, 0xee, 0x3b, 0xfe, 0x8b, 0xa4, 0x93, 0x86, 0x80, 0x4c, 0x44, 0xfb, 0xad, + 0xc0, 0xa4, 0xc5, 0x3e, 0xb0, 0x85, 0x99, 0x41, 0x74, 0xe8, 0xa3, 0x47, 0x4d, 0xf5, 0x7f, 0x47, + 0xef, 0x4a, 0x32, 0x47, 0x88, 0x64, 0x2c, 0x19, 0x92, 0x4b, 0xa3, 0x01, 0x12, 0x3d, 0x3f, 0x03, + 0x73, 0x7c, 0xc5, 0xdc, 0x4a, 0x10, 0x63, 0x4a, 0xac, 0x12, 0xfc, 0xcf, 0x21, 0x23, 0xeb, 0xec, + 0x93, 0xd8, 0x70, 0x0a, 0x5e, 0xcb, 0xa4, 0x67, 0xca, 0x3d, 0x8b, 0xa5, 0x90, 0x71, 0x99, 0x77, + 0x8d, 0x8e, 0x82, 0xa4, 0x4c, 0x80, 0xdc, 0x78, 0xd0, 0x29, 0xc8, 0xe8, 0x8b, 0x32, 0xcc, 0x72, + 0x17, 0x2a, 0xa3, 0x57, 0x66, 0x44, 0x2e, 0x3b, 0x0d, 0x5d, 0xd5, 0x9c, 0x39, 0xe8, 0x55, 0xcd, + 0x67, 0x6f, 0x81, 0x09, 0x96, 0x46, 0xe4, 0x5b, 0xab, 0xba, 0xa6, 0xc0, 0x51, 0x98, 0x5e, 0x2e, + 0x37, 0x9a, 0xf5, 0x46, 0x51, 0x6d, 0x94, 0x17, 0x0b, 0x19, 0x77, 0xe0, 0x2b, 0xaf, 0xad, 0x37, + 0xee, 0x2f, 0x48, 0xc9, 0x7d, 0xfb, 0x7a, 0x19, 0x19, 0xb3, 0x6f, 0x5f, 0x5c, 0xf1, 0xe9, 0xcf, + 0x55, 0x3f, 0x21, 0x43, 0x81, 0x72, 0x50, 0x7e, 0xb0, 0x8b, 0x2d, 0x1d, 0x1b, 0x2d, 0x8c, 0x2e, + 0x8a, 0xc4, 0x12, 0xdd, 0x17, 0x65, 0x8f, 0xf4, 0xe7, 0x21, 0x2b, 0x91, 0xbe, 0xf4, 0x18, 0xd8, + 0xd9, 0x7d, 0x06, 0xf6, 0xc7, 0x93, 0x3a, 0xf7, 0xf5, 0xb2, 0x3b, 0x12, 0xc8, 0x3e, 0x92, 0xc4, + 0xb9, 0x6f, 0x00, 0x07, 0x63, 0x09, 0x11, 0x1c, 0x31, 0xfe, 0x16, 0x64, 0xf4, 0x3c, 0x19, 0x8e, + 0x2e, 0x6a, 0x0e, 0x5e, 0xb8, 0xdc, 0xf0, 0x2e, 0x3c, 0x8c, 0xb8, 0xa4, 0x38, 0xb3, 0xef, 0x92, + 0xe2, 0xe0, 0xce, 0x44, 0xa9, 0xe7, 0xce, 0x44, 0xf4, 0xb6, 0xa4, 0xc7, 0x01, 0x7b, 0x78, 0x18, + 0x59, 0x1c, 0xdf, 0x64, 0xc7, 0xfc, 0xe2, 0xb9, 0x48, 0xbf, 0x81, 0xbd, 0x69, 0x0a, 0x0a, 0x94, + 0x95, 0x90, 0xff, 0xda, 0xaf, 0xb2, 0x7b, 0xbd, 0x9b, 0x09, 0xc2, 0x05, 0x7a, 0x01, 0x18, 0x24, + 0x3e, 0x00, 0x03, 0xb7, 0x1c, 0x2a, 0xf7, 0xfa, 0x1c, 0x24, 0xed, 0x0c, 0x43, 0xce, 0x6a, 0xd1, + 0x11, 0x5a, 0xd3, 0xeb, 0x0c, 0x63, 0x8b, 0x1f, 0xcf, 0xdd, 0xb3, 0xec, 0x86, 0xc8, 0xb2, 0x28, + 0x32, 0xf1, 0x57, 0x6c, 0x27, 0xf5, 0x5c, 0xe6, 0x9c, 0x05, 0x63, 0xee, 0x9d, 0x4e, 0xcf, 0x73, + 0x79, 0x10, 0x07, 0xe9, 0xa3, 0xf0, 0x1d, 0x09, 0xb2, 0x75, 0xd3, 0x72, 0x46, 0x85, 0x41, 0xd2, + 0xdd, 0xd6, 0x90, 0x04, 0xea, 0xd1, 0x73, 0xce, 0xf4, 0x76, 0x5b, 0xe3, 0xcb, 0x1f, 0x43, 0xc4, + 0xc5, 0xa3, 0x30, 0x47, 0x39, 0xf1, 0xaf, 0x23, 0xf9, 0xb6, 0x44, 0xfb, 0xab, 0xfb, 0x44, 0x11, + 0x39, 0x0b, 0x33, 0xa1, 0xdd, 0x4e, 0x0f, 0x14, 0x2e, 0x0d, 0xbd, 0x36, 0x8c, 0xcb, 0x22, 0x8f, + 0x4b, 0xbf, 0x19, 0xb7, 0x7f, 0xa3, 0xc7, 0xa8, 0x7a, 0xa6, 0x24, 0xc1, 0x1b, 0x63, 0x0a, 0x4f, + 0x1f, 0x91, 0x87, 0x64, 0xc8, 0x33, 0x6f, 0xb3, 0x91, 0x22, 0x90, 0xb4, 0x65, 0xf8, 0x42, 0x10, + 0xf3, 0x4a, 0x93, 0x47, 0xdd, 0x32, 0xe2, 0xcb, 0x4f, 0x1f, 0x87, 0xef, 0x32, 0x37, 0xca, 0xe2, + 0x9e, 0xa6, 0x77, 0xb4, 0x0b, 0x9d, 0x04, 0x41, 0x93, 0x3f, 0x98, 0xf0, 0xe0, 0x98, 0x5f, 0x55, + 0xae, 0xbc, 0x08, 0x89, 0xff, 0x10, 0x4c, 0x59, 0xfe, 0x92, 0xa4, 0x77, 0xae, 0xbe, 0xc7, 0x85, + 0x95, 0x7d, 0x57, 0x83, 0x9c, 0x89, 0x4e, 0x89, 0x09, 0xf1, 0x33, 0x96, 0x53, 0x2d, 0xd3, 0xc5, + 0x76, 0x7b, 0x09, 0x6b, 0xce, 0xae, 0x85, 0xdb, 0x89, 0x86, 0x08, 0x5e, 0x44, 0x53, 0x61, 0x49, + 0x70, 0x61, 0x0b, 0x57, 0x79, 0x74, 0x9e, 0x32, 0xa0, 0x37, 0xf0, 0x78, 0x19, 0x49, 0x97, 0xf4, + 0x46, 0x1f, 0x92, 0x1a, 0x07, 0xc9, 0xd3, 0x86, 0x63, 0x22, 0x7d, 0x40, 0x7e, 0x5d, 0x86, 0x39, + 0x6a, 0x27, 0x8c, 0x1a, 0x93, 0xdf, 0x4f, 0xe8, 0x9d, 0x12, 0xba, 0xf0, 0x29, 0xcc, 0xce, 0x48, + 0x60, 0x49, 0xe2, 0xcb, 0x22, 0xc6, 0x47, 0xfa, 0xc8, 0x7c, 0x2a, 0x0f, 0x10, 0xf2, 0x38, 0xfc, + 0x60, 0x3e, 0x08, 0x21, 0x88, 0xde, 0xcc, 0xe6, 0x1f, 0x75, 0x2e, 0x9e, 0x75, 0xc8, 0x9b, 0xd0, + 0xdf, 0x90, 0xe2, 0x13, 0x85, 0x46, 0x95, 0x3f, 0x4f, 0x68, 0xf3, 0x32, 0x7f, 0xbf, 0x81, 0x83, + 0xfb, 0x90, 0xbd, 0xdc, 0x87, 0x12, 0x18, 0xbf, 0x83, 0x58, 0x49, 0x86, 0xda, 0xea, 0x10, 0x33, + 0xfb, 0x53, 0x70, 0x5c, 0x2d, 0x17, 0x17, 0x6b, 0xd5, 0xd5, 0xfb, 0xc3, 0xb7, 0xff, 0x14, 0xe4, + 0xf0, 0xe4, 0x24, 0x15, 0xd8, 0x5e, 0x95, 0xb0, 0x0f, 0xe4, 0x65, 0x15, 0x7b, 0xb7, 0xfd, 0x47, + 0x12, 0xf4, 0x6a, 0x02, 0x64, 0x0f, 0x13, 0x85, 0x87, 0x20, 0xd4, 0x8c, 0x7e, 0x56, 0x86, 0x82, + 0x3b, 0x1e, 0x52, 0x2e, 0xd9, 0x35, 0x6f, 0x35, 0xde, 0x21, 0xb1, 0x4b, 0xf7, 0x9f, 0x02, 0x87, + 0x44, 0x2f, 0x41, 0xb9, 0x01, 0xe6, 0x5a, 0xdb, 0xb8, 0x75, 0xb1, 0x62, 0x78, 0xfb, 0xea, 0x74, + 0x13, 0xb6, 0x27, 0x95, 0x07, 0xe6, 0x3e, 0x1e, 0x18, 0x7e, 0x12, 0xcd, 0x0d, 0xd2, 0x61, 0xa6, + 0x22, 0x70, 0xf9, 0x23, 0x1f, 0x97, 0x2a, 0x87, 0xcb, 0x1d, 0x43, 0x51, 0x4d, 0x06, 0x4b, 0x75, + 0x08, 0x58, 0x10, 0x9c, 0xac, 0xad, 0x37, 0x2a, 0xb5, 0x6a, 0x73, 0xa3, 0x5e, 0x5e, 0x6c, 0x2e, + 0x78, 0xe0, 0xd4, 0x0b, 0x32, 0xfa, 0xaa, 0x04, 0x13, 0x94, 0x2d, 0x1b, 0x3d, 0x3e, 0x80, 0x60, + 0xa0, 0x27, 0x26, 0x7a, 0x93, 0x70, 0x5c, 0x05, 0x5f, 0x10, 0xac, 0x9c, 0x88, 0x7e, 0xea, 0xa9, + 0x30, 0x41, 0x41, 0xf6, 0x56, 0xb4, 0x4e, 0x47, 0xf4, 0x52, 0x8c, 0x8c, 0xea, 0x65, 0x17, 0x8c, + 0xb1, 0x30, 0x80, 0x8d, 0xf4, 0x47, 0x96, 0x67, 0x65, 0xa9, 0x19, 0x7c, 0x5e, 0x77, 0xb6, 0x89, + 0xa3, 0x26, 0xfa, 0x11, 0x91, 0xe5, 0xc5, 0x9b, 0x21, 0xb7, 0xe7, 0xe6, 0x1e, 0xe0, 0xf4, 0x4a, + 0x33, 0xa1, 0x97, 0x08, 0x87, 0xf4, 0xe4, 0xf4, 0xd3, 0xe7, 0x29, 0x02, 0x9c, 0x35, 0xc8, 0x76, + 0x74, 0xdb, 0x61, 0xe3, 0xc7, 0xed, 0x89, 0x08, 0x79, 0x0f, 0x15, 0x07, 0xef, 0xa8, 0x84, 0x0c, + 0xba, 0x17, 0x66, 0xc2, 0xa9, 0x02, 0x8e, 0xbf, 0xa7, 0x60, 0x82, 0x1d, 0x48, 0x63, 0x4b, 0xac, + 0xde, 0xab, 0xe0, 0xb2, 0xa6, 0x50, 0x6d, 0xd3, 0xd7, 0x81, 0xff, 0xf7, 0x28, 0x4c, 0xac, 0xe8, + 0xb6, 0x63, 0x5a, 0x97, 0xd1, 0x23, 0x19, 0x98, 0x38, 0x87, 0x2d, 0x5b, 0x37, 0x8d, 0x7d, 0xae, + 0x06, 0x67, 0x60, 0xba, 0x6b, 0xe1, 0x3d, 0xdd, 0xdc, 0xb5, 0x83, 0xc5, 0x99, 0x70, 0x92, 0x82, + 0x60, 0x52, 0xdb, 0x75, 0xb6, 0x4d, 0x2b, 0x88, 0x63, 0xe1, 0xbd, 0x2b, 0xa7, 0x01, 0xe8, 0x73, + 0x55, 0xdb, 0xc1, 0xcc, 0x81, 0x22, 0x94, 0xa2, 0x28, 0x90, 0x75, 0xf4, 0x1d, 0xcc, 0x02, 0xdb, + 0x92, 0x67, 0x57, 0xc0, 0x24, 0x48, 0x1c, 0x0b, 0xc6, 0x27, 0xab, 0xde, 0x2b, 0xfa, 0x8c, 0x0c, + 0xd3, 0xcb, 0xd8, 0x61, 0xac, 0xda, 0xe8, 0x05, 0x19, 0xa1, 0xbb, 0x24, 0xdc, 0x31, 0xb6, 0xa3, + 0xd9, 0xde, 0x7f, 0xfe, 0x12, 0x2c, 0x9f, 0x18, 0x44, 0xd9, 0x95, 0xc3, 0x21, 0xb6, 0x49, 0xc8, + 0x35, 0xa7, 0x42, 0xfd, 0x2f, 0x59, 0x66, 0xb6, 0x09, 0xb2, 0xff, 0x03, 0x7a, 0xbb, 0x24, 0x7a, + 0x5c, 0x99, 0xc9, 0x7e, 0x3e, 0x54, 0x9f, 0xc8, 0xee, 0x68, 0x72, 0x8f, 0xe5, 0xd8, 0x17, 0x3d, + 0x3d, 0x4c, 0x89, 0x91, 0x51, 0xfd, 0xdc, 0x82, 0x07, 0x9d, 0x07, 0x73, 0x92, 0xbe, 0x36, 0x7e, + 0x53, 0x86, 0xe9, 0xfa, 0xb6, 0x79, 0xc9, 0x93, 0xe3, 0x8f, 0x8b, 0x01, 0x7b, 0x0d, 0x4c, 0xed, + 0xf5, 0x80, 0x1a, 0x24, 0x44, 0xdf, 0xee, 0x8e, 0x9e, 0x2b, 0x27, 0x85, 0x29, 0xc4, 0xdc, 0xc8, + 0xef, 0x5e, 0x57, 0x9e, 0x02, 0x13, 0x8c, 0x6b, 0xb6, 0xe4, 0x12, 0x0f, 0xb0, 0x97, 0x39, 0x5c, + 0xc1, 0x2c, 0x5f, 0xc1, 0x64, 0xc8, 0x47, 0x57, 0x2e, 0x7d, 0xe4, 0xff, 0x44, 0x22, 0x61, 0x2e, + 0x3c, 0xe0, 0x4b, 0x23, 0x00, 0x1e, 0x7d, 0x2b, 0x23, 0xba, 0x30, 0xe9, 0x4b, 0xc0, 0xe7, 0xe0, + 0x40, 0xf7, 0xc4, 0x0c, 0x24, 0x97, 0xbe, 0x3c, 0x5f, 0x9c, 0x85, 0x99, 0x45, 0x7d, 0x73, 0xd3, + 0xef, 0x24, 0x7f, 0x49, 0xb0, 0x93, 0x8c, 0x76, 0x07, 0x70, 0xed, 0xdc, 0x5d, 0xcb, 0xc2, 0x86, + 0x57, 0x29, 0xd6, 0x9c, 0x7a, 0x52, 0x95, 0x1b, 0xe1, 0xa8, 0x37, 0x2e, 0x84, 0x3b, 0xca, 0x29, + 0xb5, 0x37, 0x19, 0x7d, 0x43, 0x78, 0x57, 0xcb, 0x93, 0x68, 0xb8, 0x4a, 0x11, 0x0d, 0xf0, 0x4e, + 0x98, 0xdd, 0xa6, 0xb9, 0xc9, 0xd4, 0xdf, 0xeb, 0x2c, 0x4f, 0xf6, 0x84, 0x11, 0x5e, 0xc3, 0xb6, + 0xad, 0x6d, 0x61, 0x95, 0xcf, 0xdc, 0xd3, 0x7c, 0xe5, 0x24, 0x97, 0x62, 0x89, 0x6d, 0x90, 0x09, + 0xd4, 0x64, 0x0c, 0xda, 0x71, 0x16, 0xb2, 0x4b, 0x7a, 0x07, 0xa3, 0x9f, 0x93, 0x60, 0x4a, 0xc5, + 0x2d, 0xd3, 0x68, 0xb9, 0x6f, 0x21, 0xe7, 0xa0, 0x7f, 0xca, 0x88, 0x5e, 0x06, 0xe9, 0xd2, 0x99, + 0xf7, 0x69, 0x44, 0xb4, 0x1b, 0xb1, 0x4b, 0x1f, 0x63, 0x49, 0x8d, 0xe1, 0xea, 0x0e, 0x77, 0xea, + 0xb1, 0xb9, 0xd9, 0x31, 0x35, 0x6e, 0xf1, 0xab, 0xd7, 0x14, 0xba, 0x09, 0x0a, 0xde, 0xe9, 0x11, + 0xd3, 0x59, 0xd7, 0x0d, 0xc3, 0x3f, 0x9e, 0xbc, 0x2f, 0x9d, 0xdf, 0xb7, 0x8d, 0x8d, 0xf0, 0x42, + 0xea, 0xce, 0x4a, 0x8f, 0xd0, 0xec, 0x1b, 0x60, 0xee, 0xc2, 0x65, 0x07, 0xdb, 0x2c, 0x17, 0x2b, + 0x36, 0xab, 0xf6, 0xa4, 0x86, 0xe2, 0x33, 0xc7, 0x45, 0x82, 0x89, 0x29, 0x30, 0x99, 0xa8, 0x57, + 0x86, 0x98, 0x01, 0x1e, 0x87, 0x42, 0xb5, 0xb6, 0x58, 0x26, 0xbe, 0x6a, 0x9e, 0xf7, 0xcf, 0x16, + 0xfa, 0x15, 0x19, 0x66, 0x88, 0x33, 0x89, 0x87, 0xc2, 0x75, 0x02, 0xf3, 0x11, 0xf4, 0x79, 0x61, + 0x3f, 0x36, 0x52, 0xe5, 0x70, 0x01, 0xd1, 0x82, 0xde, 0xd4, 0x3b, 0xbd, 0x82, 0xce, 0xa9, 0x3d, + 0xa9, 0x7d, 0x00, 0x91, 0xfb, 0x02, 0xf2, 0xbb, 0x42, 0xce, 0x6c, 0x83, 0xb8, 0x3b, 0x2c, 0x54, + 0x7e, 0x4f, 0x86, 0x69, 0x77, 0x92, 0xe2, 0x81, 0x52, 0xe3, 0x40, 0x31, 0x8d, 0xce, 0xe5, 0x60, + 0x59, 0xc4, 0x7b, 0x4d, 0xd4, 0x48, 0xfe, 0x4a, 0x78, 0xe6, 0x4e, 0x44, 0x14, 0xe2, 0x65, 0x4c, + 0xf8, 0xbd, 0x5b, 0x68, 0x3e, 0x3f, 0x80, 0xb9, 0xc3, 0x82, 0xef, 0xcb, 0x39, 0xc8, 0x6f, 0x74, + 0x09, 0x72, 0x2f, 0x91, 0x45, 0x62, 0x9d, 0xef, 0x3b, 0xc8, 0xe0, 0x9a, 0x59, 0x1d, 0xb3, 0xa5, + 0x75, 0xd6, 0x83, 0x13, 0x61, 0x41, 0x82, 0x72, 0x07, 0xf3, 0x6d, 0xa4, 0x07, 0xf5, 0x6e, 0x88, + 0x0d, 0x03, 0x4e, 0x64, 0x14, 0x3a, 0x34, 0x72, 0x33, 0x1c, 0x6b, 0xeb, 0xb6, 0x76, 0xa1, 0x83, + 0xcb, 0x46, 0xcb, 0xba, 0x4c, 0xc5, 0xc1, 0xa6, 0x55, 0xfb, 0x3e, 0x28, 0x77, 0x41, 0xce, 0x76, + 0x2e, 0x77, 0xe8, 0x3c, 0x31, 0x7c, 0xc6, 0x24, 0xb2, 0xa8, 0xba, 0x9b, 0x5d, 0xa5, 0x7f, 0x85, + 0x5d, 0x94, 0x26, 0x04, 0x6f, 0x82, 0x7e, 0x12, 0xe4, 0x4d, 0x4b, 0xdf, 0xd2, 0xe9, 0xcd, 0x3e, + 0x73, 0xfb, 0xa2, 0xdd, 0x51, 0x53, 0xa0, 0x46, 0xb2, 0xa8, 0x2c, 0xab, 0xf2, 0x14, 0x98, 0xd2, + 0x77, 0xb4, 0x2d, 0x7c, 0x9f, 0x6e, 0xd0, 0xb3, 0x80, 0x73, 0xb7, 0x9d, 0xda, 0x77, 0x7c, 0x86, + 0x7d, 0x57, 0x83, 0xac, 0xe8, 0xdd, 0x92, 0x68, 0x48, 0x1e, 0x52, 0x37, 0x0a, 0xea, 0x58, 0x6e, + 0xc4, 0x46, 0x2f, 0x17, 0x0a, 0x96, 0x13, 0xcd, 0x56, 0xfa, 0x83, 0xf7, 0xa7, 0x25, 0x98, 0x5c, + 0x34, 0x2f, 0x19, 0x44, 0xd1, 0x6f, 0x17, 0xb3, 0x75, 0xfb, 0x1c, 0x72, 0xe4, 0x2f, 0x9c, 0x8c, + 0x3d, 0xd1, 0x40, 0x6a, 0xeb, 0x15, 0x19, 0x01, 0x43, 0x6c, 0xcb, 0x11, 0xbc, 0x06, 0x30, 0xae, + 0x9c, 0xf4, 0xe5, 0xfa, 0xa7, 0x32, 0x64, 0x17, 0x2d, 0xb3, 0x8b, 0xde, 0x98, 0x49, 0xe0, 0xb2, + 0xd0, 0xb6, 0xcc, 0x6e, 0x83, 0xdc, 0xe3, 0x15, 0x1c, 0xe3, 0x08, 0xa7, 0x29, 0xb7, 0xc3, 0x64, + 0xd7, 0xb4, 0x75, 0xc7, 0x9b, 0x46, 0xcc, 0xdd, 0xf6, 0x98, 0xbe, 0xad, 0x79, 0x9d, 0x65, 0x52, + 0xfd, 0xec, 0x6e, 0xaf, 0x4d, 0x44, 0xe8, 0xca, 0xc5, 0x15, 0xa3, 0x77, 0x97, 0x59, 0x4f, 0x2a, + 0x7a, 0x61, 0x18, 0xc9, 0xa7, 0xf1, 0x48, 0x3e, 0xb6, 0x8f, 0x84, 0x2d, 0xb3, 0x3b, 0x92, 0x4d, + 0xc6, 0x97, 0xfa, 0xa8, 0x3e, 0x9d, 0x43, 0xf5, 0x26, 0xa1, 0x32, 0xd3, 0x47, 0xf4, 0xdd, 0x59, + 0x00, 0x62, 0x66, 0x6c, 0xb8, 0x13, 0x20, 0x31, 0x1b, 0xeb, 0x67, 0xb2, 0x21, 0x59, 0x16, 0x79, + 0x59, 0x3e, 0x3e, 0xc2, 0x8a, 0x21, 0xe4, 0x23, 0x24, 0x5a, 0x84, 0xdc, 0xae, 0xfb, 0x99, 0x49, + 0x54, 0x90, 0x04, 0x79, 0x55, 0xe9, 0x9f, 0xe8, 0x4f, 0x32, 0x90, 0x23, 0x09, 0xca, 0x69, 0x00, + 0x32, 0xb0, 0xd3, 0x03, 0x41, 0x19, 0x32, 0x84, 0x87, 0x52, 0x88, 0xb6, 0xea, 0x6d, 0xf6, 0x99, + 0x9a, 0xcc, 0x41, 0x82, 0xfb, 0x37, 0x19, 0xee, 0x09, 0x2d, 0x66, 0x00, 0x84, 0x52, 0xdc, 0xbf, + 0xc9, 0xdb, 0x2a, 0xde, 0xa4, 0x21, 0x96, 0xb3, 0x6a, 0x90, 0xe0, 0xff, 0xbd, 0xea, 0x5f, 0xcc, + 0xe5, 0xfd, 0x4d, 0x52, 0xdc, 0xc9, 0x30, 0x51, 0xcb, 0x85, 0xa0, 0x88, 0x3c, 0xc9, 0xd4, 0x9b, + 0x8c, 0x5e, 0xe5, 0xab, 0xcd, 0x22, 0xa7, 0x36, 0xb7, 0x26, 0x10, 0x6f, 0xfa, 0xca, 0xf3, 0xc5, + 0x1c, 0x4c, 0x55, 0xcd, 0x36, 0xd3, 0x9d, 0xd0, 0x84, 0xf1, 0x23, 0xb9, 0x44, 0x13, 0x46, 0x9f, + 0x46, 0x84, 0x82, 0xdc, 0xc3, 0x2b, 0x88, 0x18, 0x85, 0xb0, 0x7e, 0x28, 0x0b, 0x90, 0x27, 0xda, + 0xbb, 0xff, 0xc6, 0xa7, 0x38, 0x12, 0x44, 0xb4, 0x2a, 0xfb, 0xf3, 0x3f, 0x9c, 0x8e, 0xfd, 0x57, + 0xc8, 0x91, 0x0a, 0xc6, 0xec, 0xee, 0xf0, 0x15, 0x95, 0xe2, 0x2b, 0x2a, 0xc7, 0x57, 0x34, 0xdb, + 0x5b, 0xd1, 0x24, 0xeb, 0x00, 0x51, 0x1a, 0x92, 0xbe, 0x8e, 0xff, 0xe3, 0x04, 0x40, 0x55, 0xdb, + 0xd3, 0xb7, 0xe8, 0xee, 0xf0, 0x67, 0xbc, 0xf9, 0x0f, 0xdb, 0xc7, 0xfd, 0x85, 0xd0, 0x40, 0x78, + 0x3b, 0x4c, 0xb0, 0x71, 0x8f, 0x55, 0xe4, 0x5a, 0xae, 0x22, 0x01, 0x15, 0x6a, 0x96, 0x3e, 0xe8, + 0xa8, 0x5e, 0x7e, 0xee, 0x72, 0x5a, 0xa9, 0xe7, 0x72, 0xda, 0xfe, 0x7b, 0x10, 0x11, 0x57, 0xd6, + 0xa2, 0x77, 0x08, 0x7b, 0xf4, 0x87, 0xf8, 0x09, 0xd5, 0x28, 0xa2, 0x09, 0x3e, 0x09, 0x26, 0x4c, + 0x7f, 0x43, 0x5b, 0x8e, 0x5c, 0x07, 0xab, 0x18, 0x9b, 0xa6, 0xea, 0xe5, 0x14, 0xdc, 0xfc, 0x12, + 0xe2, 0x63, 0x2c, 0x87, 0x66, 0x4e, 0x2e, 0x7b, 0xe1, 0xaa, 0xdc, 0x7a, 0x9c, 0xd7, 0x9d, 0xed, + 0x55, 0xdd, 0xb8, 0x68, 0xa3, 0xff, 0x2c, 0x66, 0x41, 0x86, 0xf0, 0x97, 0x92, 0xe1, 0xcf, 0xc7, + 0xec, 0xa8, 0xf3, 0xa8, 0xdd, 0x15, 0x45, 0xa5, 0x3f, 0xb7, 0x11, 0x00, 0xde, 0x01, 0x79, 0xca, + 0x28, 0xeb, 0x44, 0xcf, 0x46, 0xe2, 0xe7, 0x53, 0x52, 0xd9, 0x1f, 0xe8, 0xed, 0x3e, 0x8e, 0xe7, + 0x38, 0x1c, 0x17, 0x0e, 0xc4, 0x59, 0xea, 0x90, 0x9e, 0x7d, 0x22, 0x4c, 0x30, 0x49, 0x2b, 0x73, + 0xe1, 0x56, 0x5c, 0x38, 0xa2, 0x00, 0xe4, 0xd7, 0xcc, 0x3d, 0xdc, 0x30, 0x0b, 0x19, 0xf7, 0xd9, + 0xe5, 0xaf, 0x61, 0x16, 0x24, 0xf4, 0xb2, 0x49, 0x98, 0xf4, 0xe3, 0x04, 0x7d, 0x5a, 0x82, 0x42, + 0xc9, 0xc2, 0x9a, 0x83, 0x97, 0x2c, 0x73, 0x87, 0xd6, 0x48, 0xdc, 0x3b, 0xf4, 0xd7, 0x85, 0x5d, + 0x3c, 0xfc, 0xf8, 0x3d, 0xbd, 0x85, 0x45, 0x60, 0x49, 0x17, 0x21, 0x25, 0x6f, 0x11, 0x12, 0xbd, + 0x41, 0xc8, 0xe5, 0x43, 0xb4, 0x94, 0xf4, 0x9b, 0xda, 0xc7, 0x25, 0xc8, 0x95, 0x3a, 0xa6, 0x81, + 0xc3, 0x47, 0x98, 0x06, 0x9e, 0x95, 0xe9, 0xbf, 0x13, 0x81, 0x9e, 0x25, 0x89, 0xda, 0x1a, 0x81, + 0x00, 0xdc, 0xb2, 0x05, 0x65, 0x2b, 0x36, 0x48, 0xc5, 0x92, 0x1e, 0x43, 0x1c, 0x26, 0x09, 0xa6, + 0x68, 0x5c, 0x9c, 0x62, 0xa7, 0x83, 0x1e, 0x13, 0x08, 0xb5, 0x4f, 0xac, 0x25, 0xf4, 0xbb, 0xc2, + 0x2e, 0xfa, 0x7e, 0xad, 0x7c, 0xda, 0x09, 0x02, 0x04, 0x25, 0xf3, 0x18, 0x17, 0xdb, 0x4b, 0x1b, + 0xc8, 0x50, 0xfa, 0xa2, 0xfe, 0x0b, 0xc9, 0x35, 0x00, 0x8c, 0x8b, 0xeb, 0x16, 0xde, 0xd3, 0xf1, + 0x25, 0x74, 0x75, 0x20, 0xec, 0xfd, 0x41, 0x3f, 0x5e, 0x27, 0xbc, 0x88, 0x13, 0x22, 0x19, 0xb9, + 0x95, 0x35, 0xdd, 0x09, 0x32, 0xb1, 0x5e, 0xbc, 0x37, 0x12, 0x4b, 0x88, 0x8c, 0x1a, 0xce, 0x2e, + 0xb8, 0x66, 0x13, 0xcd, 0x45, 0xfa, 0x82, 0x7d, 0xdf, 0x04, 0x4c, 0x6e, 0x18, 0x76, 0xb7, 0xa3, + 0xd9, 0xdb, 0xe8, 0xdb, 0x32, 0xe4, 0xe9, 0x3d, 0x63, 0xe8, 0x87, 0xb8, 0xd8, 0x02, 0x3f, 0xb1, + 0x8b, 0x2d, 0xcf, 0x05, 0x87, 0xbe, 0xf4, 0xbf, 0x06, 0x1d, 0xbd, 0x5b, 0x16, 0x9d, 0xa4, 0x7a, + 0x85, 0x86, 0x2e, 0x9c, 0xef, 0x7f, 0x9c, 0xbd, 0xab, 0xb7, 0x9c, 0x5d, 0xcb, 0xbf, 0x54, 0xfb, + 0x09, 0x62, 0x54, 0xd6, 0xe9, 0x5f, 0xaa, 0xff, 0x3b, 0xd2, 0x60, 0x82, 0x25, 0xee, 0xdb, 0x4e, + 0xda, 0x7f, 0xfe, 0xf6, 0x24, 0xe4, 0x35, 0xcb, 0xd1, 0x6d, 0x87, 0x6d, 0xb0, 0xb2, 0x37, 0xb7, + 0xbb, 0xa4, 0x4f, 0x1b, 0x56, 0xc7, 0x8b, 0x42, 0xe2, 0x27, 0xa0, 0xdf, 0x13, 0x9a, 0x3f, 0xc6, + 0xd7, 0x3c, 0x19, 0xe4, 0xf7, 0x0d, 0xb1, 0x46, 0x7d, 0x25, 0x5c, 0xa1, 0x16, 0x1b, 0xe5, 0x26, + 0x0d, 0x5a, 0xe1, 0xc7, 0xa7, 0x68, 0xa3, 0xb7, 0xc9, 0xa1, 0xf5, 0xbb, 0xcb, 0xdc, 0x18, 0xc1, + 0xa4, 0x18, 0x8c, 0x11, 0x7e, 0x42, 0xcc, 0x6e, 0x35, 0xb7, 0x08, 0x2b, 0x8b, 0x2f, 0xc2, 0xfe, + 0xb6, 0xf0, 0x6e, 0x92, 0x2f, 0xca, 0x01, 0x6b, 0x80, 0x71, 0xf7, 0x10, 0xbd, 0x47, 0x68, 0x67, + 0x68, 0x50, 0x49, 0x87, 0x08, 0xdb, 0x6b, 0x27, 0x60, 0x62, 0x59, 0xeb, 0x74, 0xb0, 0x75, 0xd9, + 0x1d, 0x92, 0x0a, 0x1e, 0x87, 0x6b, 0x9a, 0xa1, 0x6f, 0x62, 0xdb, 0x89, 0xef, 0x2c, 0xdf, 0x21, + 0x1c, 0xe3, 0x96, 0x95, 0x31, 0xdf, 0x4b, 0x3f, 0x42, 0xe6, 0xb7, 0x40, 0x56, 0x37, 0x36, 0x4d, + 0xd6, 0x65, 0xf6, 0xae, 0xda, 0x7b, 0x3f, 0x93, 0xa9, 0x0b, 0xc9, 0x28, 0x18, 0xe6, 0x56, 0x90, + 0x8b, 0xf4, 0x7b, 0xce, 0xdf, 0xc9, 0xc2, 0xac, 0xc7, 0x44, 0xc5, 0x68, 0xe3, 0x07, 0xc3, 0x4b, + 0x31, 0xbf, 0x92, 0x15, 0x3d, 0x0e, 0xd6, 0x5b, 0x1f, 0x42, 0x2a, 0x42, 0xa4, 0x0d, 0x80, 0x96, + 0xe6, 0xe0, 0x2d, 0xd3, 0xd2, 0xfd, 0xfe, 0xf0, 0xc9, 0x49, 0xa8, 0x95, 0xe8, 0xdf, 0x97, 0xd5, + 0x10, 0x1d, 0xe5, 0x2e, 0x98, 0xc6, 0xfe, 0xf9, 0x7b, 0x6f, 0xa9, 0x26, 0x16, 0xaf, 0x70, 0x7e, + 0xf4, 0x17, 0x42, 0xa7, 0xce, 0x44, 0xaa, 0x99, 0x0c, 0xb3, 0xe6, 0x70, 0x6d, 0x68, 0xa3, 0xba, + 0x56, 0x54, 0xeb, 0x2b, 0xc5, 0xd5, 0xd5, 0x4a, 0x75, 0xd9, 0x0f, 0xfc, 0xa2, 0xc0, 0xdc, 0x62, + 0xed, 0x7c, 0x35, 0x14, 0x99, 0x27, 0x8b, 0xd6, 0x61, 0xd2, 0x93, 0x57, 0x3f, 0x5f, 0xcc, 0xb0, + 0xcc, 0x98, 0x2f, 0x66, 0x28, 0xc9, 0x35, 0xce, 0xf4, 0x96, 0xef, 0xa0, 0x43, 0x9e, 0xd1, 0x1f, + 0x6b, 0x90, 0x23, 0x6b, 0xea, 0xe8, 0x2d, 0x64, 0x1b, 0xb0, 0xdb, 0xd1, 0x5a, 0x18, 0xed, 0x24, + 0xb0, 0xc6, 0xbd, 0x4b, 0x17, 0xa4, 0x7d, 0x97, 0x2e, 0x90, 0x47, 0x66, 0xf5, 0x1d, 0xef, 0xb7, + 0x8e, 0xaf, 0xd2, 0x2c, 0xfc, 0x01, 0xad, 0xd8, 0xdd, 0x15, 0xba, 0xfc, 0xcf, 0xd8, 0x8c, 0x50, + 0xc9, 0x68, 0x9e, 0x92, 0x59, 0xa2, 0x62, 0xfb, 0x30, 0x71, 0x1c, 0x8d, 0xe1, 0x62, 0xf0, 0x2c, + 0xe4, 0xea, 0xdd, 0x8e, 0xee, 0xa0, 0xdf, 0x94, 0x46, 0x82, 0x19, 0xbd, 0x28, 0x43, 0x1e, 0x78, + 0x51, 0x46, 0xb0, 0xeb, 0x9a, 0x15, 0xd8, 0x75, 0x6d, 0xe0, 0x07, 0x1d, 0x7e, 0xd7, 0xf5, 0x76, + 0x16, 0xbc, 0x8d, 0xee, 0xd9, 0x3e, 0xb6, 0x8f, 0x48, 0x49, 0xb5, 0xfa, 0x44, 0x05, 0x3c, 0xfb, + 0x44, 0x16, 0x9c, 0x0c, 0x20, 0xbf, 0x50, 0x6b, 0x34, 0x6a, 0x6b, 0x85, 0x23, 0x24, 0xaa, 0x4d, + 0x6d, 0x9d, 0x86, 0x8a, 0xa9, 0x54, 0xab, 0x65, 0xb5, 0x20, 0x91, 0x70, 0x69, 0x95, 0xc6, 0x6a, + 0xb9, 0x20, 0xf3, 0x51, 0xd3, 0x63, 0xcd, 0x6f, 0xbe, 0xec, 0x34, 0xd5, 0x4b, 0xcc, 0x10, 0x8f, + 0xe6, 0x27, 0x7d, 0xe5, 0xfa, 0x35, 0x19, 0x72, 0x6b, 0xd8, 0xda, 0xc2, 0xe8, 0x27, 0x12, 0x6c, + 0xf2, 0x6d, 0xea, 0x96, 0x4d, 0x83, 0xcb, 0x05, 0x9b, 0x7c, 0xe1, 0x34, 0xe5, 0x7a, 0x98, 0xb5, + 0x71, 0xcb, 0x34, 0xda, 0x5e, 0x26, 0xda, 0x1f, 0xf1, 0x89, 0xfc, 0x8d, 0xf5, 0x02, 0x90, 0x11, + 0x46, 0x47, 0xb2, 0x53, 0x97, 0x04, 0x98, 0x7e, 0xa5, 0xa6, 0x0f, 0xcc, 0x37, 0x64, 0xf7, 0xa7, + 0xee, 0x65, 0xf4, 0x22, 0xe1, 0xdd, 0xd7, 0x9b, 0x21, 0x4f, 0xd4, 0xd4, 0x1b, 0xa3, 0xfb, 0xf7, + 0xc7, 0x2c, 0x8f, 0xb2, 0x00, 0xc7, 0x6c, 0xdc, 0xc1, 0x2d, 0x07, 0xb7, 0xdd, 0xa6, 0xab, 0x0e, + 0xec, 0x14, 0xf6, 0x67, 0x47, 0x7f, 0x16, 0x06, 0xf0, 0x4e, 0x1e, 0xc0, 0x1b, 0xfa, 0x88, 0xd2, + 0xad, 0x50, 0xb4, 0xad, 0xec, 0x56, 0xa3, 0xde, 0x31, 0xfd, 0x45, 0x71, 0xef, 0xdd, 0xfd, 0xb6, + 0xed, 0xec, 0x74, 0xc8, 0x37, 0x76, 0xc0, 0xc0, 0x7b, 0x57, 0xe6, 0x61, 0x42, 0x33, 0x2e, 0x93, + 0x4f, 0xd9, 0x98, 0x5a, 0x7b, 0x99, 0xd0, 0xcb, 0x7c, 0xe4, 0xef, 0xe6, 0x90, 0x7f, 0xbc, 0x18, + 0xbb, 0xe9, 0x03, 0xff, 0xd3, 0x13, 0x90, 0x5b, 0xd7, 0x6c, 0x07, 0xa3, 0xff, 0x47, 0x16, 0x45, + 0xfe, 0x06, 0x98, 0xdb, 0x34, 0x5b, 0xbb, 0x36, 0x6e, 0xf3, 0x8d, 0xb2, 0x27, 0x75, 0x14, 0x98, + 0x2b, 0x37, 0x41, 0xc1, 0x4b, 0x64, 0x64, 0xbd, 0x6d, 0xf8, 0x7d, 0xe9, 0x24, 0x06, 0xb7, 0xbd, + 0xae, 0x59, 0x4e, 0x6d, 0x93, 0xa4, 0xf9, 0x31, 0xb8, 0xc3, 0x89, 0x1c, 0xf4, 0xf9, 0x18, 0xe8, + 0x27, 0xa2, 0xa1, 0x9f, 0x14, 0x80, 0x5e, 0x29, 0xc2, 0xe4, 0xa6, 0xde, 0xc1, 0xe4, 0x87, 0x29, + 0xf2, 0x43, 0xbf, 0x31, 0x89, 0xc8, 0xde, 0x1f, 0x93, 0x96, 0xf4, 0x0e, 0x56, 0xfd, 0xdf, 0xbc, + 0x89, 0x0c, 0x04, 0x13, 0x99, 0x55, 0xea, 0x4f, 0xeb, 0x1a, 0x5e, 0x86, 0xb6, 0x83, 0xbd, 0xc5, + 0x37, 0x83, 0x1d, 0x6e, 0x69, 0x6b, 0x8e, 0x46, 0xc0, 0x98, 0x51, 0xc9, 0x33, 0xef, 0x17, 0x22, + 0xf7, 0xfa, 0x85, 0x3c, 0x47, 0x4e, 0xd6, 0x23, 0x7a, 0xcc, 0x46, 0xb4, 0xa8, 0x0b, 0x1e, 0x40, + 0xd4, 0x52, 0xf4, 0xdf, 0x5d, 0x60, 0x5a, 0x9a, 0x85, 0x9d, 0xf5, 0xb0, 0x27, 0x46, 0x4e, 0xe5, + 0x13, 0x89, 0x2b, 0x9f, 0x5d, 0xd7, 0x76, 0x30, 0x29, 0xac, 0xe4, 0x7e, 0x63, 0x2e, 0x5a, 0xfb, + 0xd2, 0x83, 0xfe, 0x37, 0x37, 0xea, 0xfe, 0xb7, 0x5f, 0x1d, 0xd3, 0x6f, 0x86, 0xaf, 0xcc, 0x82, + 0x5c, 0xda, 0x75, 0x1e, 0xd5, 0xdd, 0xef, 0x77, 0x84, 0xfd, 0x5c, 0x58, 0x7f, 0x16, 0x79, 0x45, + 0xfd, 0x98, 0x7a, 0xdf, 0x84, 0x5a, 0x22, 0xe6, 0x4f, 0x13, 0x55, 0xb7, 0xf4, 0x75, 0xe4, 0x8d, + 0xb2, 0xef, 0x60, 0xf9, 0x50, 0xe6, 0xe0, 0xa6, 0x39, 0xa2, 0xfd, 0x53, 0xa8, 0x67, 0xf0, 0xdf, + 0xbd, 0x8e, 0x27, 0xcb, 0xc5, 0xea, 0x23, 0xdb, 0xeb, 0x44, 0x94, 0x33, 0x2a, 0x7d, 0x41, 0x2f, + 0x16, 0x76, 0x3b, 0xa7, 0x62, 0x8b, 0x75, 0x25, 0x4c, 0x66, 0x53, 0x89, 0x5d, 0x43, 0x1a, 0x53, + 0x6c, 0xfa, 0x80, 0x7d, 0x3d, 0xec, 0x2a, 0x58, 0x3c, 0x30, 0x62, 0xe8, 0xe5, 0xc2, 0xdb, 0x51, + 0xb4, 0xda, 0x03, 0xd6, 0x0b, 0x93, 0xc9, 0x5b, 0x6c, 0xb3, 0x2a, 0xb6, 0xe0, 0xf4, 0x25, 0xfe, + 0x35, 0x19, 0xf2, 0x74, 0x0b, 0x12, 0xbd, 0x3e, 0x93, 0xe0, 0xfe, 0x76, 0x87, 0x77, 0x21, 0xf4, + 0xdf, 0x93, 0xac, 0x39, 0x70, 0xae, 0x86, 0xd9, 0x44, 0xae, 0x86, 0xfc, 0x39, 0x4e, 0x81, 0x76, + 0x44, 0xeb, 0x98, 0xf2, 0x74, 0x32, 0x49, 0x0b, 0xeb, 0xcb, 0x50, 0xfa, 0x78, 0xff, 0x6c, 0x0e, + 0x66, 0x68, 0xd1, 0xe7, 0xf5, 0xf6, 0x16, 0x76, 0xd0, 0xdb, 0xa4, 0xef, 0x1d, 0xd4, 0x95, 0x2a, + 0xcc, 0x5c, 0x22, 0x6c, 0xaf, 0x6a, 0x97, 0xcd, 0x5d, 0x87, 0xad, 0x5c, 0xdc, 0x14, 0xbb, 0xee, + 0x41, 0xeb, 0x39, 0x4f, 0xff, 0x50, 0xb9, 0xff, 0x5d, 0x19, 0xd3, 0x05, 0x7f, 0xea, 0xc0, 0x95, + 0x27, 0x46, 0x56, 0x38, 0x49, 0x39, 0x09, 0xf9, 0x3d, 0x1d, 0x5f, 0xaa, 0xb4, 0x99, 0x75, 0xcb, + 0xde, 0xd0, 0x1f, 0x08, 0xef, 0xdb, 0x86, 0xe1, 0x66, 0xbc, 0xa4, 0xab, 0x85, 0x62, 0xbb, 0xb7, + 0x03, 0xd9, 0x1a, 0xc3, 0x99, 0x62, 0xfe, 0x9a, 0xcf, 0x52, 0x02, 0x45, 0x8c, 0x32, 0x9c, 0xf9, + 0x50, 0x1e, 0xb1, 0x27, 0x56, 0xa8, 0x00, 0x46, 0x7c, 0x03, 0xa8, 0x58, 0x7c, 0x89, 0x01, 0x45, + 0xa7, 0x2f, 0xf9, 0x57, 0xc9, 0x30, 0x55, 0xc7, 0xce, 0x92, 0x8e, 0x3b, 0x6d, 0x1b, 0x59, 0x07, + 0x37, 0x8d, 0x6e, 0x81, 0xfc, 0x26, 0x21, 0x36, 0xe8, 0xdc, 0x02, 0xcb, 0x86, 0x5e, 0x29, 0x89, + 0xee, 0x08, 0xb3, 0xd5, 0x37, 0x8f, 0xdb, 0x91, 0xc0, 0x24, 0xe6, 0xd1, 0x1b, 0x5f, 0xf2, 0x18, + 0x02, 0xdb, 0xca, 0x30, 0xc3, 0xee, 0x05, 0x2c, 0x76, 0xf4, 0x2d, 0x03, 0xed, 0x8e, 0xa0, 0x85, + 0x28, 0xb7, 0x42, 0x4e, 0x73, 0xa9, 0xb1, 0xad, 0x57, 0xd4, 0xb7, 0xf3, 0x24, 0xe5, 0xa9, 0x34, + 0x63, 0x82, 0x30, 0x92, 0x81, 0x62, 0x7b, 0x3c, 0x8f, 0x31, 0x8c, 0xe4, 0xc0, 0xc2, 0xd3, 0x47, + 0xec, 0x0b, 0x32, 0x1c, 0x67, 0x0c, 0x9c, 0xc3, 0x96, 0xa3, 0xb7, 0xb4, 0x0e, 0x45, 0xee, 0xf9, + 0x99, 0x51, 0x40, 0xb7, 0x02, 0xb3, 0x7b, 0x61, 0xb2, 0x0c, 0xc2, 0xb3, 0x7d, 0x21, 0xe4, 0x18, + 0x50, 0xf9, 0x1f, 0x13, 0x84, 0xe3, 0xe3, 0xa4, 0xca, 0xd1, 0x1c, 0x63, 0x38, 0x3e, 0x61, 0x26, + 0xd2, 0x87, 0xf8, 0x85, 0x2c, 0x34, 0x4f, 0xd0, 0x7d, 0x7e, 0x46, 0x18, 0xdb, 0x0d, 0x98, 0x26, + 0x58, 0xd2, 0x1f, 0xd9, 0x32, 0x44, 0x8c, 0x12, 0xfb, 0xfd, 0x0e, 0xbb, 0x30, 0xcc, 0xff, 0x57, + 0x0d, 0xd3, 0x41, 0xe7, 0x01, 0x82, 0x4f, 0xe1, 0x4e, 0x3a, 0x13, 0xd5, 0x49, 0x4b, 0x62, 0x9d, + 0xf4, 0xeb, 0x84, 0x83, 0xa5, 0xf4, 0x67, 0xfb, 0xe0, 0xea, 0x21, 0x16, 0x26, 0x63, 0x70, 0xe9, + 0xe9, 0xeb, 0xc5, 0xcb, 0xb2, 0xbd, 0x17, 0xc0, 0x7f, 0x70, 0x24, 0xf3, 0xa9, 0x70, 0x7f, 0x20, + 0xf7, 0xf4, 0x07, 0x07, 0xb0, 0xa4, 0x6f, 0x84, 0xa3, 0xb4, 0x88, 0x92, 0xcf, 0x56, 0x8e, 0x86, + 0x82, 0xe8, 0x49, 0x46, 0x1f, 0x1a, 0x42, 0x09, 0x06, 0xdd, 0x4e, 0x1f, 0xd7, 0xc9, 0x25, 0x33, + 0x76, 0x93, 0x2a, 0xc8, 0xe1, 0x5d, 0x6a, 0xff, 0xd5, 0x2c, 0xb5, 0x76, 0x37, 0xc8, 0x9d, 0x6e, + 0xe8, 0x2f, 0xb3, 0xa3, 0x18, 0x11, 0xee, 0x81, 0x2c, 0x71, 0x71, 0x97, 0x23, 0x97, 0x34, 0x82, + 0x22, 0x83, 0x0b, 0xf7, 0xf0, 0x83, 0xce, 0xca, 0x11, 0x95, 0xfc, 0xa9, 0xdc, 0x04, 0x47, 0x2f, + 0x68, 0xad, 0x8b, 0x5b, 0x96, 0xb9, 0x4b, 0x6e, 0xbf, 0x32, 0xd9, 0x35, 0x5a, 0xe4, 0x3a, 0x42, + 0xfe, 0x83, 0x72, 0x9b, 0x67, 0x3a, 0xe4, 0x06, 0x99, 0x0e, 0x2b, 0x47, 0x98, 0xf1, 0xa0, 0x3c, + 0xd1, 0xef, 0x74, 0xf2, 0xb1, 0x9d, 0xce, 0xca, 0x11, 0xaf, 0xdb, 0x51, 0x16, 0x61, 0xb2, 0xad, + 0xef, 0x91, 0xad, 0x6a, 0x32, 0xeb, 0x1a, 0x74, 0x74, 0x79, 0x51, 0xdf, 0xa3, 0x1b, 0xdb, 0x2b, + 0x47, 0x54, 0xff, 0x4f, 0x65, 0x19, 0xa6, 0xc8, 0xb6, 0x00, 0x21, 0x33, 0x99, 0xe8, 0x58, 0xf2, + 0xca, 0x11, 0x35, 0xf8, 0xd7, 0xb5, 0x3e, 0xb2, 0xe4, 0xec, 0xc7, 0xdd, 0xde, 0x76, 0x7b, 0x26, + 0xd1, 0x76, 0xbb, 0x2b, 0x0b, 0xba, 0xe1, 0x7e, 0x12, 0x72, 0x2d, 0x22, 0x61, 0x89, 0x49, 0x98, + 0xbe, 0x2a, 0x77, 0x42, 0x76, 0x47, 0xb3, 0xbc, 0xc9, 0xf3, 0x0d, 0x83, 0xe9, 0xae, 0x69, 0xd6, + 0x45, 0x17, 0x41, 0xf7, 0xaf, 0x85, 0x09, 0xc8, 0x11, 0xc1, 0xf9, 0x0f, 0xe8, 0x8d, 0x59, 0x6a, + 0x86, 0x94, 0x4c, 0xc3, 0x1d, 0xf6, 0x1b, 0xa6, 0x77, 0x40, 0xe6, 0x0f, 0x32, 0xa3, 0xb1, 0x20, + 0xfb, 0xde, 0x98, 0x2e, 0x47, 0xde, 0x98, 0xde, 0x73, 0x75, 0x6f, 0xb6, 0xf7, 0xea, 0xde, 0x60, + 0xf9, 0x20, 0x37, 0xd8, 0x51, 0xe5, 0xcf, 0x86, 0x30, 0x5d, 0x7a, 0x05, 0x11, 0x3d, 0x03, 0xef, + 0xe8, 0x46, 0xa8, 0xce, 0xde, 0x6b, 0xc2, 0x4e, 0x29, 0xa9, 0x51, 0x33, 0x80, 0xbd, 0xf4, 0xfb, + 0xa6, 0xdf, 0xca, 0xc2, 0x29, 0x7a, 0x41, 0xf4, 0x1e, 0x6e, 0x98, 0xfc, 0x7d, 0x93, 0xe8, 0x63, + 0x23, 0x51, 0x9a, 0x3e, 0x03, 0x8e, 0xdc, 0x77, 0xc0, 0xd9, 0x77, 0x48, 0x39, 0x3b, 0xe0, 0x90, + 0x72, 0x2e, 0xd9, 0xca, 0xe1, 0x7b, 0xc3, 0xfa, 0xb3, 0xce, 0xeb, 0xcf, 0x1d, 0x11, 0x00, 0xf5, + 0x93, 0xcb, 0x48, 0xec, 0x9b, 0xb7, 0xf8, 0x9a, 0x52, 0xe7, 0x34, 0xe5, 0xee, 0xe1, 0x19, 0x49, + 0x5f, 0x5b, 0x7e, 0x3f, 0x0b, 0x57, 0x04, 0xcc, 0x54, 0xf1, 0x25, 0xa6, 0x28, 0x9f, 0x1e, 0x89, + 0xa2, 0x24, 0x8f, 0x81, 0x90, 0xb6, 0xc6, 0xfc, 0x89, 0xf0, 0xd9, 0xa1, 0x5e, 0xa0, 0x7c, 0xd9, + 0x44, 0x28, 0xcb, 0x49, 0xc8, 0xd3, 0x1e, 0x86, 0x41, 0xc3, 0xde, 0x12, 0x76, 0x37, 0x62, 0x27, + 0x8e, 0x44, 0x79, 0x1b, 0x83, 0xfe, 0xb0, 0x75, 0x8d, 0xc6, 0xae, 0x65, 0x54, 0x0c, 0xc7, 0x44, + 0x3f, 0x35, 0x12, 0xc5, 0xf1, 0xbd, 0xe1, 0xe4, 0x61, 0xbc, 0xe1, 0x86, 0x5a, 0xe5, 0xf0, 0x6a, + 0x70, 0x28, 0xab, 0x1c, 0x11, 0x85, 0xa7, 0x8f, 0xdf, 0x9b, 0x65, 0x38, 0xc9, 0x26, 0x5b, 0x0b, + 0xbc, 0x85, 0x88, 0xee, 0x1f, 0x05, 0x90, 0xc7, 0x3d, 0x33, 0x89, 0xdd, 0x72, 0x46, 0x5e, 0xf8, + 0x93, 0x52, 0xb1, 0xf7, 0x3b, 0x70, 0xd3, 0xc1, 0x1e, 0x0e, 0x47, 0x82, 0x94, 0xd8, 0xb5, 0x0e, + 0x09, 0xd8, 0x48, 0x1f, 0xb3, 0x5f, 0x92, 0x21, 0x4f, 0xcf, 0x69, 0xa1, 0x8d, 0x54, 0x1c, 0x26, + 0xf8, 0x28, 0xcf, 0x02, 0x3b, 0x72, 0x89, 0x2f, 0xb9, 0x4f, 0x6f, 0x2f, 0xee, 0x90, 0x6e, 0xb1, + 0xff, 0x86, 0x04, 0xd3, 0x75, 0xec, 0x94, 0x34, 0xcb, 0xd2, 0xb5, 0xad, 0x51, 0x79, 0x7c, 0x8b, + 0x7a, 0x0f, 0xa3, 0x6f, 0x66, 0x44, 0xcf, 0xd3, 0xf8, 0x0b, 0xe1, 0x1e, 0xab, 0x11, 0xb1, 0x04, + 0x1f, 0x11, 0x3a, 0x33, 0x33, 0x88, 0xda, 0x18, 0x3c, 0xb6, 0x25, 0x98, 0xf0, 0xce, 0xe2, 0xdd, + 0xc2, 0x9d, 0xcf, 0xdc, 0x76, 0x76, 0xbc, 0x63, 0x30, 0xe4, 0x79, 0xff, 0x19, 0x30, 0xf4, 0xd2, + 0x84, 0x8e, 0xf2, 0xf1, 0x07, 0x09, 0x93, 0xb5, 0xb1, 0x24, 0xee, 0xf0, 0x87, 0x75, 0x74, 0xf0, + 0x77, 0x27, 0xd8, 0x72, 0xe4, 0xaa, 0xe6, 0xe0, 0x07, 0xd1, 0x67, 0x64, 0x98, 0xa8, 0x63, 0xc7, + 0x1d, 0x6f, 0xb9, 0xcb, 0x4d, 0x87, 0xd5, 0x70, 0x25, 0xb4, 0xe2, 0x31, 0xc5, 0xd6, 0x30, 0xee, + 0x85, 0xa9, 0xae, 0x65, 0xb6, 0xb0, 0x6d, 0xb3, 0xd5, 0x8b, 0xb0, 0xa3, 0x5a, 0xbf, 0xd1, 0x9f, + 0xb0, 0x36, 0xbf, 0xee, 0xfd, 0xa3, 0x06, 0xbf, 0x27, 0x35, 0x03, 0x28, 0x25, 0x56, 0xc1, 0x71, + 0x9b, 0x01, 0x71, 0x85, 0xa7, 0x0f, 0xf4, 0x27, 0x65, 0x98, 0xa9, 0x63, 0xc7, 0x97, 0x62, 0x82, + 0x4d, 0x8e, 0x68, 0x78, 0x39, 0x28, 0xe5, 0x83, 0x41, 0x29, 0x7e, 0x35, 0x20, 0x2f, 0x4d, 0x9f, + 0xd8, 0x18, 0xaf, 0x06, 0x14, 0xe3, 0x60, 0x0c, 0xc7, 0xd7, 0x1e, 0x0b, 0x53, 0x84, 0x17, 0xd2, + 0x60, 0x7f, 0x3e, 0x1b, 0x34, 0xde, 0xcf, 0xa6, 0xd4, 0x78, 0xef, 0x82, 0xdc, 0x8e, 0x66, 0x5d, + 0xb4, 0x49, 0xc3, 0x9d, 0x16, 0x31, 0xdb, 0xd7, 0xdc, 0xec, 0x2a, 0xfd, 0xab, 0xbf, 0x9f, 0x66, + 0x2e, 0x99, 0x9f, 0xe6, 0x23, 0x52, 0xa2, 0x91, 0x90, 0xce, 0x1d, 0x46, 0xd8, 0xe4, 0x13, 0x8c, + 0x9b, 0x31, 0x65, 0xa7, 0xaf, 0x1c, 0xcf, 0x97, 0x61, 0xd2, 0x1d, 0xb7, 0x89, 0x3d, 0x7e, 0xfe, + 0xe0, 0xea, 0xd0, 0xdf, 0xd0, 0x4f, 0xd8, 0x03, 0x7b, 0x12, 0x19, 0x9d, 0x79, 0x9f, 0xa0, 0x07, + 0x8e, 0x2b, 0x3c, 0x7d, 0x3c, 0xde, 0x4a, 0xf1, 0x20, 0xed, 0x01, 0xbd, 0x46, 0x06, 0x79, 0x19, + 0x3b, 0xe3, 0xb6, 0x22, 0xdf, 0x24, 0x1c, 0xe2, 0x88, 0x13, 0x18, 0xe1, 0x79, 0x7e, 0x19, 0x8f, + 0xa6, 0x01, 0x89, 0xc5, 0x36, 0x12, 0x62, 0x20, 0x7d, 0xd4, 0xde, 0x49, 0x51, 0xa3, 0x9b, 0x0b, + 0x3f, 0x39, 0x82, 0x5e, 0x75, 0xbc, 0x0b, 0x1f, 0x9e, 0x00, 0x09, 0x8d, 0xc3, 0x6a, 0x6f, 0xfd, + 0x0a, 0x1f, 0xcb, 0x55, 0x7c, 0xe0, 0x36, 0xf6, 0x6d, 0xdc, 0xba, 0x88, 0xdb, 0xe8, 0xc7, 0x0e, + 0x0e, 0xdd, 0x29, 0x98, 0x68, 0x51, 0x6a, 0x04, 0xbc, 0x49, 0xd5, 0x7b, 0x4d, 0x70, 0xaf, 0x34, + 0xdf, 0x11, 0xd1, 0xdf, 0xc7, 0x78, 0xaf, 0xb4, 0x40, 0xf1, 0x63, 0x30, 0x5b, 0xe8, 0x2c, 0xa3, + 0xd2, 0x32, 0x0d, 0xf4, 0x5f, 0x0e, 0x0e, 0xcb, 0x35, 0x30, 0xa5, 0xb7, 0x4c, 0x83, 0x84, 0xa1, + 0xf0, 0x0e, 0x01, 0xf9, 0x09, 0xde, 0xd7, 0xf2, 0x8e, 0xf9, 0x80, 0xce, 0x76, 0xcd, 0x83, 0x84, + 0x61, 0x8d, 0x09, 0x97, 0xf5, 0xc3, 0x32, 0x26, 0xfa, 0x94, 0x9d, 0x3e, 0x64, 0x1f, 0x0a, 0xbc, + 0xdb, 0x68, 0x57, 0xf8, 0xa8, 0x58, 0x05, 0x1e, 0x66, 0x38, 0x0b, 0xd7, 0xe2, 0x50, 0x86, 0xb3, + 0x18, 0x06, 0xc6, 0x70, 0x63, 0x45, 0x80, 0x63, 0xea, 0x6b, 0xc0, 0x07, 0x40, 0x67, 0x74, 0xe6, + 0xe1, 0x90, 0xe8, 0x1c, 0x8e, 0x89, 0xf8, 0x1e, 0x16, 0x22, 0x93, 0x59, 0x3c, 0xe8, 0xbf, 0x8e, + 0x02, 0x9c, 0x3b, 0x86, 0xf1, 0x57, 0xa0, 0xde, 0x0a, 0x09, 0x6e, 0xc4, 0xde, 0x27, 0x41, 0x97, + 0xca, 0x18, 0xef, 0x8a, 0x17, 0x29, 0x3f, 0x7d, 0x00, 0x9f, 0x27, 0xc3, 0x1c, 0xf1, 0x11, 0xe8, + 0x60, 0xcd, 0xa2, 0x1d, 0xe5, 0x48, 0x1c, 0xe5, 0xdf, 0x2a, 0x1c, 0xe0, 0x87, 0x97, 0x43, 0xc0, + 0xc7, 0x48, 0xa0, 0x10, 0x8b, 0xee, 0x23, 0xc8, 0xc2, 0x58, 0xb6, 0x51, 0x0a, 0x3e, 0x0b, 0x4c, + 0xc5, 0x47, 0x83, 0x47, 0x42, 0x8f, 0x5c, 0x5e, 0x18, 0x5e, 0x63, 0x1b, 0xb3, 0x47, 0xae, 0x08, + 0x13, 0xe9, 0x63, 0xf2, 0x9a, 0x5b, 0xd9, 0x82, 0x73, 0x83, 0x5c, 0x18, 0xff, 0xf2, 0xac, 0x7f, + 0xa2, 0xed, 0x93, 0x23, 0xf1, 0xc0, 0x3c, 0x40, 0x40, 0x7c, 0x05, 0xb2, 0x96, 0x79, 0x89, 0x2e, + 0x6d, 0xcd, 0xaa, 0xe4, 0x99, 0x5e, 0x4f, 0xd9, 0xd9, 0xdd, 0x31, 0xe8, 0xc9, 0xd0, 0x59, 0xd5, + 0x7b, 0x55, 0xae, 0x87, 0xd9, 0x4b, 0xba, 0xb3, 0xbd, 0x82, 0xb5, 0x36, 0xb6, 0x54, 0xf3, 0x12, + 0xf1, 0x98, 0x9b, 0x54, 0xf9, 0x44, 0xde, 0x7f, 0x45, 0xc0, 0xbe, 0x24, 0xb7, 0xc8, 0x8f, 0xe5, + 0xf8, 0x5b, 0x12, 0xcb, 0x33, 0x9a, 0xab, 0xf4, 0x15, 0xe6, 0x5d, 0x32, 0x4c, 0xa9, 0xe6, 0x25, + 0xa6, 0x24, 0xff, 0xd7, 0xe1, 0xea, 0x48, 0xe2, 0x89, 0x1e, 0x91, 0x9c, 0xcf, 0xfe, 0xd8, 0x27, + 0x7a, 0xb1, 0xc5, 0x8f, 0xe5, 0xe4, 0xd2, 0x8c, 0x6a, 0x5e, 0xaa, 0x63, 0x87, 0xb6, 0x08, 0xd4, + 0x1c, 0x91, 0x93, 0xb5, 0x6e, 0x53, 0x82, 0x6c, 0x1e, 0xee, 0xbf, 0x27, 0xdd, 0x45, 0xf0, 0x05, + 0xe4, 0xb3, 0x38, 0xee, 0x5d, 0x84, 0x81, 0x1c, 0x8c, 0x21, 0x46, 0x8a, 0x0c, 0xd3, 0xaa, 0x79, + 0xc9, 0x1d, 0x1a, 0x96, 0xf4, 0x4e, 0x67, 0x34, 0x23, 0x64, 0x52, 0xe3, 0xdf, 0x13, 0x83, 0xc7, + 0xc5, 0xd8, 0x8d, 0xff, 0x01, 0x0c, 0xa4, 0x0f, 0xc3, 0x73, 0x68, 0x63, 0xf1, 0x46, 0x68, 0x63, + 0x34, 0x38, 0x0c, 0xdb, 0x20, 0x7c, 0x36, 0x0e, 0xad, 0x41, 0x44, 0x71, 0x30, 0x96, 0x9d, 0x93, + 0xb9, 0x12, 0x19, 0xe6, 0x47, 0xdb, 0x26, 0xde, 0x9e, 0xcc, 0x35, 0x91, 0x0d, 0xbb, 0x1c, 0x23, + 0x23, 0x41, 0x23, 0x81, 0x0b, 0xa2, 0x00, 0x0f, 0xe9, 0xe3, 0xf1, 0x7e, 0x19, 0x66, 0x28, 0x0b, + 0x8f, 0x12, 0x2b, 0x60, 0xa8, 0x46, 0x15, 0xae, 0xc1, 0xe1, 0x34, 0xaa, 0x18, 0x0e, 0xc6, 0x72, + 0x2b, 0xa8, 0x6b, 0xc7, 0x0d, 0x71, 0x7c, 0x3c, 0x0a, 0xc1, 0xa1, 0x8d, 0xb1, 0x11, 0x1e, 0x21, + 0x1f, 0xc6, 0x18, 0x3b, 0xa4, 0x63, 0xe4, 0xcf, 0xf1, 0x5b, 0xd1, 0x28, 0x31, 0x38, 0x40, 0x53, + 0x18, 0x21, 0x0c, 0x43, 0x36, 0x85, 0x43, 0x42, 0xe2, 0x8b, 0x32, 0x00, 0x65, 0x60, 0xcd, 0xdc, + 0x23, 0x97, 0xf9, 0x8c, 0xa0, 0x3b, 0xeb, 0x75, 0xab, 0x97, 0x07, 0xb8, 0xd5, 0x27, 0x0c, 0xe1, + 0x92, 0x74, 0x25, 0x30, 0x24, 0x65, 0xb7, 0x92, 0x63, 0x5f, 0x09, 0x8c, 0x2f, 0x3f, 0x7d, 0x8c, + 0x3f, 0x4f, 0xad, 0xb9, 0xe0, 0x80, 0xe9, 0x6f, 0x8c, 0x04, 0xe5, 0xd0, 0xec, 0x5f, 0xe6, 0x67, + 0xff, 0x07, 0xc0, 0x76, 0x58, 0x1b, 0x71, 0xd0, 0xc1, 0xd1, 0xf4, 0x6d, 0xc4, 0xc3, 0x3b, 0x20, + 0xfa, 0x93, 0x59, 0x38, 0xca, 0x3a, 0x91, 0xef, 0x05, 0x88, 0x13, 0x9e, 0xc3, 0xe3, 0x3a, 0xc9, + 0x01, 0x28, 0x8f, 0x6a, 0x41, 0x2a, 0xc9, 0x52, 0xa6, 0x00, 0x7b, 0x63, 0x59, 0xdd, 0xc8, 0x97, + 0x1f, 0xec, 0x6a, 0x46, 0x5b, 0x3c, 0xdc, 0xef, 0x00, 0xe0, 0xbd, 0xb5, 0x46, 0x99, 0x5f, 0x6b, + 0xec, 0xb3, 0x32, 0x99, 0x78, 0xe7, 0x9a, 0x88, 0x8c, 0xb2, 0x3b, 0xf6, 0x9d, 0xeb, 0xe8, 0xb2, + 0xd3, 0x47, 0xe9, 0xed, 0x32, 0x64, 0xeb, 0xa6, 0xe5, 0xa0, 0xe7, 0x26, 0x69, 0x9d, 0x54, 0xf2, + 0x01, 0x48, 0xde, 0xbb, 0x52, 0xe2, 0x6e, 0x69, 0xbe, 0x25, 0xfe, 0xa8, 0xb3, 0xe6, 0x68, 0xc4, + 0xab, 0xdb, 0x2d, 0x3f, 0x74, 0x5d, 0x73, 0xd2, 0x78, 0x3a, 0x54, 0x7e, 0xf5, 0xe8, 0x03, 0x18, + 0xa9, 0xc5, 0xd3, 0x89, 0x2c, 0x39, 0x7d, 0xdc, 0x1e, 0x3e, 0xca, 0x7c, 0x5b, 0x97, 0xf4, 0x0e, + 0x46, 0xcf, 0xa5, 0x2e, 0x23, 0x55, 0x6d, 0x07, 0x8b, 0x1f, 0x89, 0x89, 0x75, 0x6d, 0x25, 0xf1, + 0x65, 0xe5, 0x20, 0xbe, 0x6c, 0xd2, 0x06, 0x45, 0x0f, 0xa0, 0x53, 0x96, 0xc6, 0xdd, 0xa0, 0x62, + 0xca, 0x1e, 0x4b, 0x9c, 0xce, 0x63, 0x75, 0xec, 0x50, 0xa3, 0xb2, 0xe6, 0xdd, 0xc0, 0xf2, 0xe3, + 0x23, 0x89, 0xd8, 0xe9, 0x5f, 0xf0, 0x22, 0xf7, 0x5c, 0xf0, 0xf2, 0xae, 0x30, 0x38, 0x6b, 0x3c, + 0x38, 0x3f, 0x1c, 0x2d, 0x20, 0x9e, 0xc9, 0x91, 0xc0, 0xf4, 0x26, 0x1f, 0xa6, 0x75, 0x0e, 0xa6, + 0x3b, 0x87, 0xe4, 0x22, 0x7d, 0xc0, 0x7e, 0x31, 0x07, 0x47, 0xe9, 0xa4, 0xbf, 0x68, 0xb4, 0x59, + 0x84, 0xd5, 0xd7, 0x4b, 0x87, 0xbc, 0xd9, 0xb6, 0x3f, 0x04, 0x2b, 0x17, 0xcb, 0x39, 0xd7, 0x7b, + 0x3b, 0xfe, 0x02, 0x0d, 0xe7, 0xea, 0x76, 0xa2, 0x64, 0xa7, 0x4d, 0xfc, 0x86, 0x7c, 0xff, 0x3f, + 0xfe, 0x2e, 0xa3, 0x09, 0xf1, 0xbb, 0x8c, 0xfe, 0x34, 0xd9, 0xba, 0x1d, 0x29, 0xba, 0x47, 0xe0, + 0x29, 0xdb, 0x4e, 0x09, 0x56, 0xf4, 0x04, 0xb8, 0xfb, 0xfe, 0x70, 0x27, 0x0b, 0x22, 0x88, 0x0c, + 0xe9, 0x4e, 0x46, 0x08, 0x1c, 0xa6, 0x3b, 0xd9, 0x20, 0x06, 0xc6, 0x70, 0xab, 0x7d, 0x8e, 0xed, + 0xe6, 0x93, 0x76, 0x83, 0xfe, 0x5a, 0x4a, 0x7d, 0x94, 0xfe, 0x56, 0x26, 0x91, 0xff, 0x33, 0xe1, + 0x2b, 0x7e, 0x98, 0x4e, 0xe2, 0xd1, 0x1c, 0x47, 0x6e, 0x0c, 0xeb, 0x46, 0x12, 0xf1, 0x45, 0x3f, + 0xaf, 0xb7, 0x9d, 0xed, 0x11, 0x9d, 0xe8, 0xb8, 0xe4, 0xd2, 0xf2, 0xae, 0x47, 0x26, 0x2f, 0xe8, + 0xdf, 0x33, 0x89, 0x42, 0x48, 0xf9, 0x22, 0x21, 0x6c, 0x45, 0x88, 0x38, 0x41, 0xe0, 0xa7, 0x58, + 0x7a, 0x63, 0xd4, 0xe8, 0x73, 0x7a, 0x1b, 0x9b, 0x8f, 0x42, 0x8d, 0x26, 0x7c, 0x8d, 0x4e, 0xa3, + 0xe3, 0xc8, 0x7d, 0x9f, 0x6a, 0xb4, 0x2f, 0x92, 0x11, 0x69, 0x74, 0x2c, 0xbd, 0xf4, 0x65, 0xfc, + 0xd2, 0x19, 0x36, 0x91, 0x5a, 0xd5, 0x8d, 0x8b, 0xe8, 0x5f, 0xf2, 0xde, 0xc5, 0xcc, 0xe7, 0x75, + 0x67, 0x9b, 0xc5, 0x82, 0xf9, 0x7d, 0xe1, 0xbb, 0x51, 0x86, 0x88, 0xf7, 0xc2, 0x87, 0x93, 0xca, + 0xed, 0x0b, 0x27, 0x55, 0x84, 0x59, 0xdd, 0x70, 0xb0, 0x65, 0x68, 0x9d, 0xa5, 0x8e, 0xb6, 0x65, + 0x9f, 0x9a, 0xe8, 0x7b, 0x79, 0x5d, 0x25, 0x94, 0x47, 0xe5, 0xff, 0x08, 0x5f, 0x5f, 0x39, 0xc9, + 0x5f, 0x5f, 0x19, 0x11, 0xfd, 0x6a, 0x2a, 0x3a, 0xfa, 0x95, 0x1f, 0xdd, 0x0a, 0x06, 0x07, 0xc7, + 0x16, 0xb5, 0x8d, 0x13, 0x86, 0xfb, 0xbb, 0x45, 0x30, 0x0a, 0x9b, 0x1f, 0xfa, 0xf1, 0x15, 0x72, + 0xa2, 0xd5, 0x3d, 0x57, 0x11, 0xe6, 0x7b, 0x95, 0x20, 0xb1, 0x85, 0x1a, 0xae, 0xbc, 0xdc, 0x53, + 0x79, 0xdf, 0xe4, 0xc9, 0x0a, 0x98, 0x3c, 0x61, 0xa5, 0xca, 0x89, 0x29, 0x55, 0x92, 0xc5, 0x42, + 0x91, 0xda, 0x8e, 0xe1, 0x34, 0x52, 0x0e, 0x8e, 0x79, 0xd1, 0x6e, 0xbb, 0x5d, 0xac, 0x59, 0x9a, + 0xd1, 0xc2, 0xe8, 0x43, 0xd2, 0x28, 0xcc, 0xde, 0x25, 0x98, 0xd4, 0x5b, 0xa6, 0x51, 0xd7, 0x9f, + 0xe9, 0x5d, 0x2e, 0x17, 0x1f, 0x64, 0x9d, 0x48, 0xa4, 0xc2, 0xfe, 0x50, 0xfd, 0x7f, 0x95, 0x0a, + 0x4c, 0xb5, 0x34, 0xab, 0x4d, 0x83, 0xf0, 0xe5, 0x7a, 0x2e, 0x72, 0x8a, 0x24, 0x54, 0xf2, 0x7e, + 0x51, 0x83, 0xbf, 0x95, 0x1a, 0x2f, 0xc4, 0x7c, 0x4f, 0x34, 0x8f, 0x48, 0x62, 0x8b, 0xc1, 0x4f, + 0x9c, 0xcc, 0x5d, 0xe9, 0x58, 0xb8, 0x43, 0xee, 0xa0, 0xa7, 0x3d, 0xc4, 0x94, 0x1a, 0x24, 0x24, + 0x5d, 0x1e, 0x20, 0x45, 0xed, 0x43, 0x63, 0xdc, 0xcb, 0x03, 0x42, 0x5c, 0xa4, 0xaf, 0x99, 0x6f, + 0xc9, 0xc3, 0x2c, 0xed, 0xd5, 0x98, 0x38, 0xd1, 0xf3, 0xc8, 0x15, 0xd2, 0xce, 0x7d, 0xf8, 0x32, + 0xaa, 0x1f, 0x7c, 0x4c, 0x2e, 0x80, 0x7c, 0xd1, 0x0f, 0x38, 0xe8, 0x3e, 0x26, 0xdd, 0xb7, 0xf7, + 0xf8, 0x9a, 0xa7, 0x3c, 0x8d, 0x7b, 0xdf, 0x3e, 0xbe, 0xf8, 0xf4, 0xf1, 0xf9, 0x65, 0x19, 0xe4, + 0x62, 0xbb, 0x8d, 0x5a, 0x07, 0x87, 0xe2, 0x0c, 0x4c, 0x7b, 0x6d, 0x26, 0x88, 0x01, 0x19, 0x4e, + 0x4a, 0xba, 0x08, 0xea, 0xcb, 0xa6, 0xd8, 0x1e, 0xfb, 0xae, 0x42, 0x4c, 0xd9, 0xe9, 0x83, 0xf2, + 0x1b, 0x13, 0xac, 0xd1, 0x2c, 0x98, 0xe6, 0x45, 0x72, 0x54, 0xe6, 0xb9, 0x32, 0xe4, 0x96, 0xb0, + 0xd3, 0xda, 0x1e, 0x51, 0x9b, 0xd9, 0xb5, 0x3a, 0x5e, 0x9b, 0xd9, 0x77, 0x1f, 0xfe, 0x60, 0x1b, + 0xd6, 0x63, 0x6b, 0x9e, 0xb0, 0x34, 0xee, 0xe8, 0xce, 0xb1, 0xa5, 0xa7, 0x0f, 0xce, 0xbf, 0xcb, + 0x30, 0xe7, 0xaf, 0x70, 0x51, 0x4c, 0x7e, 0x31, 0xf3, 0x68, 0x5b, 0xef, 0x44, 0x9f, 0x4e, 0x16, + 0x22, 0xcd, 0x97, 0x29, 0x5f, 0xb3, 0x94, 0x17, 0x16, 0x13, 0x04, 0x4f, 0x13, 0x63, 0x70, 0x0c, + 0x33, 0x78, 0x19, 0x26, 0x09, 0x43, 0x8b, 0xfa, 0x1e, 0x71, 0x1d, 0xe4, 0x16, 0x1a, 0x9f, 0x35, + 0x92, 0x85, 0xc6, 0x3b, 0xf9, 0x85, 0x46, 0xc1, 0x88, 0xc7, 0xde, 0x3a, 0x63, 0x42, 0x5f, 0x1a, + 0xf7, 0xff, 0x91, 0x2f, 0x33, 0x26, 0xf0, 0xa5, 0x19, 0x50, 0x7e, 0xfa, 0x88, 0xbe, 0xe2, 0x3f, + 0xb1, 0xce, 0xd6, 0xdb, 0x50, 0x45, 0xff, 0xe3, 0x18, 0x64, 0xcf, 0xb9, 0x0f, 0xff, 0x2b, 0xb8, + 0x11, 0xeb, 0x45, 0x23, 0x08, 0xce, 0xf0, 0x74, 0xc8, 0xba, 0xf4, 0xd9, 0xb4, 0xe5, 0x26, 0xb1, + 0xdd, 0x5d, 0x97, 0x11, 0x95, 0xfc, 0xa7, 0x9c, 0x84, 0xbc, 0x6d, 0xee, 0x5a, 0x2d, 0xd7, 0x7c, + 0x76, 0x35, 0x86, 0xbd, 0x25, 0x0d, 0x4a, 0xca, 0x91, 0x9e, 0x1f, 0x9d, 0xcb, 0x68, 0xe8, 0x82, + 0x24, 0x99, 0xbb, 0x20, 0x29, 0xc1, 0xfe, 0x81, 0x00, 0x6f, 0xe9, 0x6b, 0xc4, 0x5f, 0x93, 0xbb, + 0x02, 0xdb, 0xa3, 0x82, 0x3d, 0x42, 0x2c, 0x07, 0x55, 0x87, 0xa4, 0x0e, 0xdf, 0xbc, 0x68, 0xfd, + 0x38, 0xf0, 0x63, 0x75, 0xf8, 0x16, 0xe0, 0x61, 0x2c, 0xa7, 0xd4, 0xf3, 0xcc, 0x49, 0xf5, 0xfe, + 0x51, 0xa2, 0x9b, 0xe5, 0x94, 0xfe, 0x40, 0xe8, 0x8c, 0xd0, 0x79, 0x75, 0x68, 0x74, 0x0e, 0xc9, + 0x7d, 0xf5, 0x0f, 0x65, 0x12, 0x09, 0xd3, 0x33, 0x72, 0xc4, 0x2f, 0x3a, 0x4a, 0x0c, 0x91, 0x3b, + 0x06, 0x73, 0x71, 0xa0, 0x67, 0x87, 0x0f, 0x0d, 0xce, 0x8b, 0x2e, 0xc4, 0xff, 0xb8, 0x43, 0x83, + 0x8b, 0x32, 0x92, 0x3e, 0x90, 0xaf, 0xa6, 0x17, 0x8b, 0x15, 0x5b, 0x8e, 0xbe, 0x37, 0xe2, 0x96, + 0xc6, 0x0f, 0x2f, 0x09, 0xa3, 0x01, 0xef, 0x93, 0x10, 0xe5, 0x70, 0xdc, 0xd1, 0x80, 0xc5, 0xd8, + 0x48, 0x1f, 0xa6, 0xbf, 0xcb, 0xbb, 0xd2, 0x63, 0x6b, 0x33, 0xaf, 0x61, 0xab, 0x01, 0xf8, 0xe0, + 0x68, 0x9d, 0x85, 0x99, 0xd0, 0xd4, 0xdf, 0xbb, 0xb0, 0x86, 0x4b, 0x4b, 0x7a, 0xd0, 0xdd, 0x17, + 0xd9, 0xc8, 0x17, 0x06, 0x12, 0x2c, 0xf8, 0x8a, 0x30, 0x31, 0x96, 0xfb, 0xe0, 0xbc, 0x31, 0x6c, + 0x4c, 0x58, 0xfd, 0x7e, 0x18, 0xab, 0x1a, 0x8f, 0xd5, 0xed, 0x22, 0x62, 0x12, 0x1b, 0xd3, 0x84, + 0xe6, 0x8d, 0x6f, 0xf6, 0xe1, 0x52, 0x39, 0xb8, 0x9e, 0x3e, 0x34, 0x1f, 0xe9, 0x23, 0xf6, 0x9b, + 0xb4, 0x3b, 0xac, 0x53, 0x93, 0x7d, 0x34, 0xdd, 0x21, 0x9b, 0x0d, 0xc8, 0xdc, 0x6c, 0x20, 0xa1, + 0xbf, 0x7d, 0xe0, 0x46, 0xea, 0x31, 0x37, 0x08, 0xa2, 0xec, 0x88, 0xfd, 0xed, 0x07, 0x72, 0x90, + 0x3e, 0x38, 0xff, 0x24, 0x03, 0x2c, 0x5b, 0xe6, 0x6e, 0xb7, 0x66, 0xb5, 0xb1, 0x85, 0xfe, 0x36, + 0x98, 0x00, 0xfc, 0xca, 0x08, 0x26, 0x00, 0xeb, 0x00, 0x5b, 0x3e, 0x71, 0xa6, 0xe1, 0xb7, 0x8a, + 0x99, 0xfb, 0x01, 0x53, 0x6a, 0x88, 0x06, 0x7f, 0xe5, 0xec, 0x8f, 0xf0, 0x18, 0xc7, 0xf5, 0x59, + 0x01, 0xb9, 0x51, 0x4e, 0x00, 0xde, 0xea, 0x63, 0xdd, 0xe0, 0xb0, 0xbe, 0xe7, 0x00, 0x9c, 0xa4, + 0x8f, 0xf9, 0x3f, 0x4f, 0xc0, 0x34, 0xdd, 0xae, 0xa3, 0x32, 0xfd, 0x87, 0x00, 0xf4, 0xdf, 0x18, + 0x01, 0xe8, 0x1b, 0x30, 0x63, 0x06, 0xd4, 0x69, 0x9f, 0x1a, 0x5e, 0x80, 0x89, 0x85, 0x3d, 0xc4, + 0x97, 0xca, 0x91, 0x41, 0x1f, 0x08, 0x23, 0xaf, 0xf2, 0xc8, 0xdf, 0x19, 0x23, 0xef, 0x10, 0xc5, + 0x51, 0x42, 0xff, 0x36, 0x1f, 0xfa, 0x0d, 0x0e, 0xfa, 0xe2, 0x41, 0x58, 0x19, 0x43, 0xb8, 0x7d, + 0x19, 0xb2, 0xe4, 0x74, 0xdc, 0x6f, 0xa5, 0x38, 0xbf, 0x3f, 0x05, 0x13, 0xa4, 0xc9, 0xfa, 0xf3, + 0x0e, 0xef, 0xd5, 0xfd, 0xa2, 0x6d, 0x3a, 0xd8, 0xf2, 0x3d, 0x16, 0xbc, 0x57, 0x97, 0x07, 0xcf, + 0x2b, 0xd9, 0x3e, 0x95, 0xa7, 0x1b, 0x91, 0x7e, 0xc2, 0xd0, 0x93, 0x92, 0xb0, 0xc4, 0x47, 0x76, + 0x5e, 0x6e, 0x98, 0x49, 0xc9, 0x00, 0x46, 0xd2, 0x07, 0xfe, 0x2f, 0xb3, 0x70, 0x8a, 0xae, 0x2a, + 0x2d, 0x59, 0xe6, 0x4e, 0xcf, 0xed, 0x56, 0xfa, 0xc1, 0x75, 0xe1, 0x06, 0x98, 0x73, 0x38, 0x7f, + 0x6c, 0xa6, 0x13, 0x3d, 0xa9, 0xe8, 0xcf, 0xc2, 0x3e, 0x15, 0xcf, 0xe0, 0x91, 0x5c, 0x88, 0x11, + 0x60, 0x14, 0xef, 0x89, 0x17, 0xea, 0x05, 0x19, 0x0d, 0x2d, 0x52, 0xc9, 0x43, 0xad, 0x59, 0xfa, + 0x3a, 0x95, 0x13, 0xd1, 0xa9, 0x77, 0xfb, 0x3a, 0xf5, 0x63, 0x9c, 0x4e, 0x2d, 0x1f, 0x5c, 0x24, + 0xe9, 0xeb, 0xd6, 0xcb, 0xfd, 0x8d, 0x21, 0x7f, 0xdb, 0x6e, 0x27, 0x85, 0xcd, 0xba, 0xb0, 0x3f, + 0x52, 0x96, 0xf3, 0x47, 0xe2, 0xef, 0xa3, 0x48, 0x30, 0x13, 0xe6, 0xb9, 0x8e, 0xd0, 0xa5, 0x39, + 0x90, 0x74, 0x8f, 0x3b, 0x49, 0x6f, 0x0f, 0x35, 0xd7, 0x8d, 0x2d, 0x68, 0x0c, 0x6b, 0x4b, 0x73, + 0x90, 0x5f, 0xd2, 0x3b, 0x0e, 0xb6, 0xd0, 0xe7, 0xd9, 0x4c, 0xf7, 0xe5, 0x29, 0x0e, 0x00, 0x8b, + 0x90, 0xdf, 0x24, 0xa5, 0x31, 0x93, 0xf9, 0x66, 0xb1, 0xd6, 0x43, 0x39, 0x54, 0xd9, 0xbf, 0x49, + 0xa3, 0xf3, 0xf5, 0x90, 0x19, 0xd9, 0x14, 0x39, 0x41, 0x74, 0xbe, 0xc1, 0x2c, 0x8c, 0xe5, 0x62, + 0xaa, 0xbc, 0x8a, 0x77, 0xdc, 0x31, 0xfe, 0x62, 0x7a, 0x08, 0x17, 0x40, 0xd6, 0xdb, 0x36, 0xe9, + 0x1c, 0xa7, 0x54, 0xf7, 0x31, 0xa9, 0xaf, 0x50, 0xaf, 0xa8, 0x28, 0xcb, 0xe3, 0xf6, 0x15, 0x12, + 0xe2, 0x22, 0x7d, 0xcc, 0xbe, 0x45, 0x1c, 0x45, 0xbb, 0x1d, 0xad, 0x85, 0x5d, 0xee, 0x53, 0x43, + 0x8d, 0xf6, 0x64, 0x59, 0xaf, 0x27, 0x0b, 0xb5, 0xd3, 0xdc, 0x01, 0xda, 0xe9, 0xb0, 0xcb, 0x90, + 0xbe, 0xcc, 0x49, 0xc5, 0x0f, 0x6d, 0x19, 0x32, 0x96, 0x8d, 0x31, 0x5c, 0x3b, 0xea, 0x1d, 0xa4, + 0x1d, 0x6b, 0x6b, 0x1d, 0x76, 0x93, 0x86, 0x09, 0x6b, 0x64, 0x87, 0x66, 0x87, 0xd9, 0xa4, 0x89, + 0xe6, 0x61, 0x0c, 0x68, 0xcd, 0x31, 0xb4, 0x3e, 0xc5, 0x86, 0xd1, 0x94, 0xf7, 0x49, 0x6d, 0xd3, + 0x72, 0x92, 0xed, 0x93, 0xba, 0xdc, 0xa9, 0xe4, 0xbf, 0xa4, 0x07, 0xaf, 0xf8, 0x73, 0xd5, 0xa3, + 0x1a, 0x3e, 0x13, 0x1c, 0xbc, 0x1a, 0xc4, 0x40, 0xfa, 0xf0, 0xbe, 0xe1, 0x90, 0x06, 0xcf, 0x61, + 0x9b, 0x23, 0x6b, 0x03, 0x23, 0x1b, 0x3a, 0x87, 0x69, 0x8e, 0xd1, 0x3c, 0xa4, 0x8f, 0xd7, 0xd7, + 0x43, 0x03, 0xe7, 0xeb, 0xc6, 0x38, 0x70, 0x7a, 0x2d, 0x33, 0x37, 0x64, 0xcb, 0x1c, 0x76, 0xff, + 0x87, 0xc9, 0x7a, 0x74, 0x03, 0xe6, 0x30, 0xfb, 0x3f, 0x31, 0x4c, 0xa4, 0x8f, 0xf8, 0xeb, 0x65, + 0xc8, 0xd5, 0xc7, 0x3f, 0x5e, 0x0e, 0x3b, 0x17, 0x21, 0xb2, 0xaa, 0x8f, 0x6c, 0xb8, 0x1c, 0x66, + 0x2e, 0x12, 0xc9, 0xc2, 0x18, 0x02, 0xef, 0x1f, 0x85, 0x19, 0xb2, 0x24, 0xe2, 0x6d, 0xb3, 0x7e, + 0x9d, 0x8d, 0x9a, 0x8f, 0xa4, 0xd8, 0x56, 0xef, 0x85, 0x49, 0x6f, 0xff, 0x8e, 0x8d, 0x9c, 0xf3, + 0x62, 0xed, 0xd3, 0xe3, 0x52, 0xf5, 0xff, 0x3f, 0x90, 0x33, 0xc4, 0xc8, 0xf7, 0x6a, 0x87, 0x75, + 0x86, 0x38, 0xd4, 0xfd, 0xda, 0x3f, 0x0d, 0x46, 0xd4, 0xff, 0x92, 0x1e, 0xe6, 0xbd, 0xfb, 0xb8, + 0xd9, 0x3e, 0xfb, 0xb8, 0x1f, 0x0a, 0x63, 0x59, 0xe7, 0xb1, 0xbc, 0x4b, 0x54, 0x84, 0x23, 0x1c, + 0x6b, 0xdf, 0xee, 0xc3, 0x79, 0x8e, 0x83, 0x73, 0xe1, 0x40, 0xbc, 0x8c, 0xe1, 0xe0, 0x63, 0x36, + 0x18, 0x73, 0x3f, 0x9c, 0x62, 0x3b, 0xee, 0x39, 0x55, 0x91, 0xdd, 0x77, 0xaa, 0x82, 0x6b, 0xe9, + 0xb9, 0x03, 0xb6, 0xf4, 0x0f, 0x87, 0xb5, 0xa3, 0xc1, 0x6b, 0xc7, 0xd3, 0xc5, 0x11, 0x19, 0xdd, + 0xc8, 0xfc, 0x0e, 0x5f, 0x3d, 0xce, 0x73, 0xea, 0x51, 0x3a, 0x18, 0x33, 0xe9, 0xeb, 0xc7, 0x1f, + 0x79, 0x13, 0xda, 0x43, 0x6e, 0xef, 0xc3, 0x6e, 0x15, 0x73, 0x42, 0x1c, 0xd9, 0xc8, 0x3d, 0xcc, + 0x56, 0xf1, 0x20, 0x4e, 0xc6, 0x10, 0x8b, 0x6d, 0x16, 0xa6, 0x09, 0x4f, 0xe7, 0xf5, 0xf6, 0x16, + 0x76, 0xd0, 0x2b, 0xa8, 0x8f, 0xa2, 0x17, 0xf9, 0x72, 0x44, 0xe1, 0x89, 0xa2, 0xce, 0xbb, 0x26, + 0xf5, 0xe8, 0xa0, 0x4c, 0xce, 0x87, 0x18, 0x1c, 0x77, 0x04, 0xc5, 0x81, 0x1c, 0xa4, 0x0f, 0xd9, + 0x07, 0xa8, 0xbb, 0xcd, 0xaa, 0x76, 0xd9, 0xdc, 0x75, 0xd0, 0x43, 0x23, 0xe8, 0xa0, 0x17, 0x20, + 0xdf, 0x21, 0xd4, 0xd8, 0xb1, 0x8c, 0xf8, 0xe9, 0x0e, 0x13, 0x01, 0x2d, 0x5f, 0x65, 0x7f, 0x26, + 0x3d, 0x9b, 0x11, 0xc8, 0x91, 0xd2, 0x19, 0xf7, 0xd9, 0x8c, 0x01, 0xe5, 0x8f, 0xe5, 0x8e, 0x9d, + 0x49, 0xb7, 0x74, 0x7d, 0x47, 0x77, 0x46, 0x14, 0xc1, 0xa1, 0xe3, 0xd2, 0xf2, 0x22, 0x38, 0x90, + 0x97, 0xa4, 0x27, 0x46, 0x43, 0x52, 0x71, 0x7f, 0x1f, 0xf7, 0x89, 0xd1, 0xf8, 0xe2, 0xd3, 0xc7, + 0xe4, 0xd7, 0x68, 0xcb, 0x3a, 0x47, 0x9d, 0x6f, 0x53, 0xf4, 0xeb, 0x1d, 0xba, 0xb1, 0x50, 0xd6, + 0x0e, 0xaf, 0xb1, 0xf4, 0x2d, 0x3f, 0x7d, 0x60, 0xfe, 0xdb, 0x0f, 0x42, 0x6e, 0x11, 0x5f, 0xd8, + 0xdd, 0x42, 0x77, 0xc2, 0x64, 0xc3, 0xc2, 0xb8, 0x62, 0x6c, 0x9a, 0xae, 0x74, 0x1d, 0xf7, 0xd9, + 0x83, 0x84, 0xbd, 0xb9, 0x78, 0x6c, 0x63, 0xad, 0x1d, 0x9c, 0x3f, 0xf3, 0x5e, 0xd1, 0x8b, 0x24, + 0xc8, 0xd6, 0x1d, 0xcd, 0x41, 0x53, 0x3e, 0xb6, 0xe8, 0xa1, 0x30, 0x16, 0x77, 0xf2, 0x58, 0xdc, + 0xc0, 0xc9, 0x82, 0x70, 0x30, 0xef, 0xfe, 0x1f, 0x01, 0x00, 0x82, 0xc9, 0x07, 0x6c, 0xd3, 0x70, + 0x73, 0x78, 0x47, 0x20, 0xbd, 0x77, 0xf4, 0x32, 0x5f, 0xdc, 0x77, 0x73, 0xe2, 0x7e, 0xbc, 0x58, + 0x11, 0x63, 0x58, 0x69, 0x93, 0x60, 0xca, 0x15, 0xed, 0x0a, 0xd6, 0xda, 0x36, 0xfa, 0x81, 0x40, + 0xf9, 0x23, 0xc4, 0x8c, 0xde, 0x23, 0x1c, 0x8c, 0x93, 0xd6, 0xca, 0x27, 0x1e, 0xed, 0xd1, 0xe1, + 0x6d, 0xfe, 0x4b, 0x7c, 0x30, 0x92, 0x5b, 0x20, 0xab, 0x1b, 0x9b, 0x26, 0xf3, 0x2f, 0xbc, 0x3a, + 0x82, 0xb6, 0xab, 0x13, 0x2a, 0xc9, 0x28, 0x18, 0xa9, 0x33, 0x9e, 0xad, 0xb1, 0x5c, 0x7a, 0x97, + 0x75, 0x4b, 0x47, 0xff, 0xe7, 0x40, 0x61, 0x2b, 0x0a, 0x64, 0xbb, 0x9a, 0xb3, 0xcd, 0x8a, 0x26, + 0xcf, 0xae, 0x8d, 0xbc, 0x6b, 0x68, 0x86, 0x69, 0x5c, 0xde, 0xd1, 0x9f, 0xe9, 0xdf, 0xad, 0xcb, + 0xa5, 0xb9, 0x9c, 0x6f, 0x61, 0x03, 0x5b, 0x9a, 0x83, 0xeb, 0x7b, 0x5b, 0x64, 0x8e, 0x35, 0xa9, + 0x86, 0x93, 0x12, 0xeb, 0xbf, 0xcb, 0x71, 0xb4, 0xfe, 0x6f, 0xea, 0x1d, 0x4c, 0x22, 0x35, 0x31, + 0xfd, 0xf7, 0xde, 0x13, 0xe9, 0x7f, 0x9f, 0x22, 0xd2, 0x47, 0xe3, 0xdb, 0x12, 0xcc, 0xd4, 0x5d, + 0x85, 0xab, 0xef, 0xee, 0xec, 0x68, 0xd6, 0x65, 0x74, 0x5d, 0x80, 0x4a, 0x48, 0x35, 0x33, 0xbc, + 0x5f, 0xca, 0x1f, 0x0a, 0x5f, 0x2b, 0xcd, 0x9a, 0x76, 0xa8, 0x84, 0xc4, 0xed, 0xe0, 0x89, 0x90, + 0x73, 0xd5, 0xdb, 0xf3, 0xb8, 0x8c, 0x6d, 0x08, 0x34, 0xa7, 0x60, 0x44, 0xab, 0x81, 0xbc, 0x8d, + 0x21, 0x9a, 0x86, 0x04, 0x47, 0xeb, 0x8e, 0xd6, 0xba, 0xb8, 0x6c, 0x5a, 0xe6, 0xae, 0xa3, 0x1b, + 0xd8, 0x46, 0x8f, 0x09, 0x10, 0xf0, 0xf4, 0x3f, 0x13, 0xe8, 0x3f, 0xfa, 0x6e, 0x46, 0x74, 0x14, + 0xf5, 0xbb, 0xd5, 0x30, 0xf9, 0x88, 0x00, 0x55, 0x62, 0xe3, 0xa2, 0x08, 0xc5, 0xf4, 0x85, 0xf6, + 0x3a, 0x19, 0x0a, 0xe5, 0x07, 0xbb, 0xa6, 0xe5, 0xac, 0x9a, 0x2d, 0xad, 0x63, 0x3b, 0xa6, 0x85, + 0x51, 0x2d, 0x56, 0x6a, 0x6e, 0x0f, 0xd3, 0x36, 0x5b, 0xc1, 0xe0, 0xc8, 0xde, 0xc2, 0x6a, 0x27, + 0xf3, 0x3a, 0xfe, 0x01, 0xe1, 0x5d, 0x46, 0x2a, 0x95, 0x5e, 0x8e, 0x22, 0xf4, 0xbc, 0x5f, 0x97, + 0x96, 0xec, 0xb0, 0x84, 0xd8, 0xce, 0xa3, 0x10, 0x53, 0x63, 0x58, 0x2a, 0x97, 0x60, 0xb6, 0xbe, + 0x7b, 0xc1, 0x27, 0x62, 0x87, 0x8d, 0x90, 0x57, 0x0a, 0x47, 0xa9, 0x60, 0x8a, 0x17, 0x26, 0x14, + 0x21, 0xdf, 0xeb, 0x61, 0xd6, 0x0e, 0x67, 0x63, 0x78, 0xf3, 0x89, 0x82, 0xd1, 0x29, 0x06, 0x97, + 0x9a, 0xbe, 0x00, 0xdf, 0x21, 0xc1, 0x6c, 0xad, 0x8b, 0x0d, 0xdc, 0xa6, 0x5e, 0x90, 0x9c, 0x00, + 0x5f, 0x94, 0x50, 0x80, 0x1c, 0xa1, 0x08, 0x01, 0x06, 0x1e, 0xcb, 0x8b, 0x9e, 0xf0, 0x82, 0x84, + 0x44, 0x82, 0x8b, 0x2b, 0x2d, 0x7d, 0xc1, 0x7d, 0x4e, 0x82, 0x69, 0x75, 0xd7, 0x58, 0xb7, 0x4c, + 0x77, 0x34, 0xb6, 0xd0, 0x5d, 0x41, 0x07, 0x71, 0x33, 0x1c, 0x6b, 0xef, 0x5a, 0x64, 0xfd, 0xa9, + 0x62, 0xd4, 0x71, 0xcb, 0x34, 0xda, 0x36, 0xa9, 0x47, 0x4e, 0xdd, 0xff, 0xe1, 0x8e, 0xec, 0x73, + 0xbf, 0x22, 0x67, 0xd0, 0xf3, 0x84, 0x43, 0xdd, 0xd0, 0xca, 0x87, 0x8a, 0x16, 0xef, 0x09, 0x04, + 0x03, 0xda, 0x0c, 0x2a, 0x21, 0x7d, 0xe1, 0x7e, 0x4a, 0x02, 0xa5, 0xd8, 0x6a, 0x99, 0xbb, 0x86, + 0x53, 0xc7, 0x1d, 0xdc, 0x72, 0x1a, 0x96, 0xd6, 0xc2, 0x61, 0xfb, 0xb9, 0x00, 0x72, 0x5b, 0xb7, + 0x58, 0x1f, 0xec, 0x3e, 0x32, 0x39, 0xbe, 0x48, 0x78, 0xc7, 0x91, 0xd6, 0x72, 0x7f, 0x29, 0x09, + 0xc4, 0x29, 0xb6, 0xaf, 0x28, 0x58, 0x50, 0xfa, 0x52, 0xfd, 0xb0, 0x04, 0x53, 0x5e, 0x8f, 0xbd, + 0x25, 0x22, 0xcc, 0x5f, 0x4b, 0x38, 0x19, 0xf1, 0x89, 0x27, 0x90, 0xe1, 0x5b, 0x12, 0xcc, 0x2a, + 0xa2, 0xe8, 0x27, 0x13, 0x5d, 0x31, 0xb9, 0xe8, 0xdc, 0xd7, 0x6a, 0xad, 0xb9, 0x54, 0x5b, 0x5d, + 0x2c, 0xab, 0x05, 0x19, 0x7d, 0x5e, 0x82, 0xec, 0xba, 0x6e, 0x6c, 0x85, 0xa3, 0x2b, 0x1d, 0x77, + 0xed, 0xc8, 0x36, 0x7e, 0x90, 0xb5, 0x74, 0xfa, 0xa2, 0xdc, 0x06, 0xc7, 0x8d, 0xdd, 0x9d, 0x0b, + 0xd8, 0xaa, 0x6d, 0x92, 0x51, 0xd6, 0x6e, 0x98, 0x75, 0x6c, 0x50, 0x23, 0x34, 0xa7, 0xf6, 0xfd, + 0xc6, 0x9b, 0x60, 0x02, 0x93, 0x07, 0x97, 0x93, 0x08, 0x89, 0xfb, 0x4c, 0x49, 0x21, 0xa6, 0x12, + 0x4d, 0x1b, 0xfa, 0x10, 0x4f, 0x5f, 0x53, 0xff, 0x38, 0x07, 0x27, 0x8a, 0xc6, 0x65, 0x62, 0x53, + 0xd0, 0x0e, 0xbe, 0xb4, 0xad, 0x19, 0x5b, 0x98, 0x0c, 0x10, 0xbe, 0xc4, 0xc3, 0x21, 0xfa, 0x33, + 0x7c, 0x88, 0x7e, 0x45, 0x85, 0x09, 0xd3, 0x6a, 0x63, 0x6b, 0xe1, 0x32, 0xe1, 0xa9, 0x77, 0xd9, + 0x99, 0xb5, 0xc9, 0x7e, 0x45, 0xcc, 0x33, 0xf2, 0xf3, 0x35, 0xfa, 0xbf, 0xea, 0x11, 0x3a, 0x7b, + 0x33, 0x4c, 0xb0, 0x34, 0x65, 0x06, 0x26, 0x6b, 0xea, 0x62, 0x59, 0x6d, 0x56, 0x16, 0x0b, 0x47, + 0x94, 0x2b, 0xe0, 0x68, 0xa5, 0x51, 0x56, 0x8b, 0x8d, 0x4a, 0xad, 0xda, 0x24, 0xe9, 0x85, 0x0c, + 0x7a, 0x4e, 0x56, 0xd4, 0xb3, 0x37, 0x9e, 0x99, 0x7e, 0xb0, 0xaa, 0x30, 0xd1, 0xa2, 0x19, 0xc8, + 0x10, 0x3a, 0x9d, 0xa8, 0x76, 0x8c, 0x20, 0x4d, 0x50, 0x3d, 0x42, 0xca, 0x69, 0x80, 0x4b, 0x96, + 0x69, 0x6c, 0x05, 0xa7, 0x0e, 0x27, 0xd5, 0x50, 0x0a, 0x7a, 0x28, 0x03, 0x79, 0xfa, 0x0f, 0xb9, + 0x92, 0x84, 0x3c, 0x05, 0x82, 0xf7, 0xde, 0x5d, 0x8b, 0x97, 0xc8, 0x2b, 0x98, 0x68, 0xb1, 0x57, + 0x57, 0x17, 0xa9, 0x0c, 0xa8, 0x25, 0xcc, 0xaa, 0x72, 0x0b, 0xe4, 0xe9, 0xbf, 0xcc, 0xeb, 0x20, + 0x3a, 0xbc, 0x28, 0xcd, 0x26, 0xe8, 0xa7, 0x2c, 0x2e, 0xd3, 0xf4, 0xb5, 0xf9, 0xbd, 0x12, 0x4c, + 0x56, 0xb1, 0x53, 0xda, 0xc6, 0xad, 0x8b, 0xe8, 0x71, 0xfc, 0x02, 0x68, 0x47, 0xc7, 0x86, 0x73, + 0xff, 0x4e, 0xc7, 0x5f, 0x00, 0xf5, 0x12, 0xd0, 0xcf, 0x86, 0x3b, 0xdf, 0x7b, 0x78, 0xfd, 0xb9, + 0xa9, 0x4f, 0x5d, 0xbd, 0x12, 0x22, 0x54, 0xe6, 0x24, 0xe4, 0x2d, 0x6c, 0xef, 0x76, 0xbc, 0x45, + 0x34, 0xf6, 0x86, 0x1e, 0xf6, 0xc5, 0x59, 0xe2, 0xc4, 0x79, 0x8b, 0x78, 0x11, 0x63, 0x88, 0x57, + 0x9a, 0x85, 0x89, 0x8a, 0xa1, 0x3b, 0xba, 0xd6, 0x41, 0xcf, 0xcb, 0xc2, 0x6c, 0x1d, 0x3b, 0xeb, + 0x9a, 0xa5, 0xed, 0x60, 0x07, 0x5b, 0x36, 0xfa, 0x26, 0xdf, 0x27, 0x74, 0x3b, 0x9a, 0xb3, 0x69, + 0x5a, 0x3b, 0x9e, 0x6a, 0x7a, 0xef, 0xae, 0x6a, 0xee, 0x61, 0xcb, 0x0e, 0xf8, 0xf2, 0x5e, 0xdd, + 0x2f, 0x97, 0x4c, 0xeb, 0xa2, 0x3b, 0x08, 0xb2, 0x69, 0x1a, 0x7b, 0x75, 0xe9, 0x75, 0xcc, 0xad, + 0x55, 0xbc, 0x87, 0xbd, 0x70, 0x69, 0xfe, 0xbb, 0x3b, 0x17, 0x68, 0x9b, 0x55, 0xd3, 0x71, 0x3b, + 0xed, 0x55, 0x73, 0x8b, 0xc6, 0x8b, 0x9d, 0x54, 0xf9, 0xc4, 0x20, 0x97, 0xb6, 0x87, 0x49, 0xae, + 0x7c, 0x38, 0x17, 0x4b, 0x54, 0xe6, 0x41, 0xf1, 0x7f, 0x6b, 0xe0, 0x0e, 0xde, 0xc1, 0x8e, 0x75, + 0x99, 0x5c, 0x0b, 0x31, 0xa9, 0xf6, 0xf9, 0xc2, 0x06, 0x68, 0xf1, 0xc9, 0x3a, 0x93, 0xde, 0x3c, + 0x27, 0xb9, 0x03, 0x4d, 0xd6, 0x45, 0x28, 0x8e, 0xe5, 0xda, 0x2b, 0xd9, 0xb5, 0x66, 0x5e, 0x2c, + 0x43, 0x96, 0x0c, 0x9e, 0xaf, 0xcf, 0x70, 0x2b, 0x4c, 0x3b, 0xd8, 0xb6, 0xb5, 0x2d, 0xec, 0xad, + 0x30, 0xb1, 0x57, 0xe5, 0x76, 0xc8, 0x75, 0x08, 0xa6, 0x74, 0x70, 0xb8, 0x8e, 0xab, 0x99, 0x6b, + 0x60, 0xb8, 0xb4, 0xfc, 0x91, 0x80, 0xc0, 0xad, 0xd2, 0x3f, 0xce, 0xde, 0x0b, 0x39, 0x0a, 0xff, + 0x14, 0xe4, 0x16, 0xcb, 0x0b, 0x1b, 0xcb, 0x85, 0x23, 0xee, 0xa3, 0xc7, 0xdf, 0x14, 0xe4, 0x96, + 0x8a, 0x8d, 0xe2, 0x6a, 0x41, 0x72, 0xeb, 0x51, 0xa9, 0x2e, 0xd5, 0x0a, 0xb2, 0x9b, 0xb8, 0x5e, + 0xac, 0x56, 0x4a, 0x85, 0xac, 0x32, 0x0d, 0x13, 0xe7, 0x8b, 0x6a, 0xb5, 0x52, 0x5d, 0x2e, 0xe4, + 0xd0, 0xdf, 0x85, 0xf1, 0xbb, 0x83, 0xc7, 0xef, 0xfa, 0x28, 0x9e, 0xfa, 0x41, 0xf6, 0x12, 0x1f, + 0xb2, 0xbb, 0x38, 0xc8, 0x7e, 0x50, 0x84, 0xc8, 0x18, 0xdc, 0x99, 0xf2, 0x30, 0xb1, 0x6e, 0x99, + 0x2d, 0x6c, 0xdb, 0xe8, 0xd7, 0x25, 0xc8, 0x97, 0x34, 0xa3, 0x85, 0x3b, 0xe8, 0xaa, 0x00, 0x2a, + 0xea, 0x2a, 0x9a, 0xf1, 0x4f, 0x8b, 0xfd, 0x53, 0x46, 0xb4, 0xf7, 0x63, 0x74, 0xe7, 0x29, 0xcd, + 0x08, 0xf9, 0x88, 0xf5, 0x72, 0xb1, 0xa4, 0xc6, 0x70, 0x35, 0x8e, 0x04, 0x53, 0x6c, 0x35, 0xe0, + 0x02, 0x0e, 0xcf, 0xc3, 0xbf, 0x99, 0x11, 0x9d, 0x1c, 0x7a, 0x35, 0xf0, 0xc9, 0x44, 0xc8, 0x43, + 0x6c, 0x22, 0x38, 0x88, 0xda, 0x18, 0x36, 0x0f, 0x25, 0x98, 0xde, 0x30, 0xec, 0x7e, 0x42, 0x11, + 0x8f, 0xa3, 0xef, 0x55, 0x23, 0x44, 0xe8, 0x40, 0x71, 0xf4, 0x07, 0xd3, 0x4b, 0x5f, 0x30, 0xdf, + 0xcc, 0xc0, 0xf1, 0x65, 0x6c, 0x60, 0x4b, 0x6f, 0xd1, 0x1a, 0x78, 0x92, 0xb8, 0x8b, 0x97, 0xc4, + 0xe3, 0x38, 0xce, 0xfb, 0xfd, 0xc1, 0x4b, 0xe0, 0xe5, 0xbe, 0x04, 0xee, 0xe1, 0x24, 0x70, 0xb3, + 0x20, 0x9d, 0x31, 0xdc, 0x87, 0x3e, 0x05, 0x33, 0x55, 0xd3, 0xd1, 0x37, 0xf5, 0x16, 0xf5, 0x41, + 0xfb, 0x4d, 0x19, 0xb2, 0xab, 0xba, 0xed, 0xa0, 0x62, 0xd0, 0x9d, 0x9c, 0x81, 0x69, 0xdd, 0x68, + 0x75, 0x76, 0xdb, 0x58, 0xc5, 0x1a, 0xed, 0x57, 0x26, 0xd5, 0x70, 0x52, 0xb0, 0xb5, 0xef, 0xb2, + 0x25, 0x7b, 0x5b, 0xfb, 0x1f, 0x17, 0x5e, 0x86, 0x09, 0xb3, 0x40, 0x02, 0x52, 0x46, 0xd8, 0x5d, + 0x45, 0x98, 0x35, 0x42, 0x59, 0x3d, 0x83, 0xbd, 0xf7, 0x42, 0x81, 0x30, 0x39, 0x95, 0xff, 0x03, + 0xbd, 0x4b, 0xa8, 0xb1, 0x0e, 0x62, 0x28, 0x19, 0x32, 0x4b, 0x43, 0x4c, 0x92, 0x15, 0x98, 0xab, + 0x54, 0x1b, 0x65, 0xb5, 0x5a, 0x5c, 0x65, 0x59, 0x64, 0xf4, 0x6d, 0x09, 0x72, 0x2a, 0xee, 0x76, + 0x2e, 0x87, 0x23, 0x46, 0x33, 0x47, 0xf1, 0x8c, 0xef, 0x28, 0xae, 0x2c, 0x01, 0x68, 0x2d, 0xb7, + 0x60, 0x72, 0xa5, 0x96, 0xd4, 0x37, 0x8e, 0x29, 0x57, 0xc1, 0xa2, 0x9f, 0x5b, 0x0d, 0xfd, 0x89, + 0x9e, 0x2f, 0xbc, 0x73, 0xc4, 0x51, 0x23, 0x1c, 0x46, 0xf4, 0x09, 0xef, 0x16, 0xda, 0xec, 0x19, + 0x48, 0xee, 0x70, 0xc4, 0xff, 0x05, 0x09, 0xb2, 0x0d, 0xb7, 0xb7, 0x0c, 0x75, 0x9c, 0x1f, 0x1b, + 0x4e, 0xc7, 0x5d, 0x32, 0x11, 0x3a, 0x7e, 0x37, 0xcc, 0x84, 0x35, 0x96, 0xb9, 0x4a, 0xc4, 0xaa, + 0x38, 0xf7, 0xc3, 0x30, 0x1a, 0xde, 0x87, 0x9d, 0xc3, 0x11, 0xf1, 0x47, 0x1e, 0x0f, 0xb0, 0x86, + 0x77, 0x2e, 0x60, 0xcb, 0xde, 0xd6, 0xbb, 0xe8, 0xef, 0x65, 0x98, 0x5a, 0xc6, 0x4e, 0xdd, 0xd1, + 0x9c, 0x5d, 0xbb, 0x67, 0xbb, 0xd3, 0x30, 0x4b, 0x5a, 0x6b, 0x1b, 0xb3, 0xee, 0xc8, 0x7b, 0x45, + 0x6f, 0x93, 0x45, 0xfd, 0x89, 0x82, 0x72, 0xe6, 0xfd, 0x32, 0x22, 0x30, 0x79, 0x02, 0x64, 0xdb, + 0x9a, 0xa3, 0x31, 0x2c, 0xae, 0xea, 0xc1, 0x22, 0x20, 0xa4, 0x92, 0x6c, 0xe8, 0x77, 0x24, 0x11, + 0x87, 0x22, 0x81, 0xf2, 0x93, 0x81, 0xf0, 0xae, 0xcc, 0x10, 0x28, 0x1c, 0x83, 0xd9, 0x6a, 0xad, + 0xd1, 0x5c, 0xad, 0x2d, 0x2f, 0x97, 0xdd, 0xd4, 0x82, 0xac, 0x9c, 0x04, 0x65, 0xbd, 0x78, 0xff, + 0x5a, 0xb9, 0xda, 0x68, 0x56, 0x6b, 0x8b, 0x65, 0xf6, 0x67, 0x56, 0x39, 0x0a, 0xd3, 0xa5, 0x62, + 0x69, 0xc5, 0x4b, 0xc8, 0x29, 0xa7, 0xe0, 0xf8, 0x5a, 0x79, 0x6d, 0xa1, 0xac, 0xd6, 0x57, 0x2a, + 0xeb, 0x4d, 0x97, 0xcc, 0x52, 0x6d, 0xa3, 0xba, 0x58, 0xc8, 0x2b, 0x08, 0x4e, 0x86, 0xbe, 0x9c, + 0x57, 0x6b, 0xd5, 0xe5, 0x66, 0xbd, 0x51, 0x6c, 0x94, 0x0b, 0x13, 0xca, 0x15, 0x70, 0xb4, 0x54, + 0xac, 0x92, 0xec, 0xa5, 0x5a, 0xb5, 0x5a, 0x2e, 0x35, 0x0a, 0x93, 0xe8, 0xbb, 0x59, 0x98, 0xae, + 0xd8, 0x55, 0x6d, 0x07, 0x9f, 0xd3, 0x3a, 0x7a, 0x1b, 0x3d, 0x2f, 0x34, 0xf3, 0xb8, 0x1e, 0x66, + 0x2d, 0xfa, 0x88, 0xdb, 0x0d, 0x1d, 0x53, 0x34, 0x67, 0x55, 0x3e, 0xd1, 0x9d, 0x93, 0x1b, 0x84, + 0x80, 0x37, 0x27, 0xa7, 0x6f, 0xca, 0x02, 0x00, 0x7d, 0x6a, 0x04, 0x97, 0xbb, 0x9e, 0xed, 0x6d, + 0x4d, 0xda, 0x0e, 0xb6, 0xb1, 0xb5, 0xa7, 0xb7, 0xb0, 0x97, 0x53, 0x0d, 0xfd, 0x85, 0xbe, 0x28, + 0x8b, 0xee, 0x2f, 0x86, 0x40, 0x0d, 0x55, 0x27, 0xa2, 0x37, 0xfc, 0x39, 0x59, 0x64, 0x77, 0x50, + 0x88, 0x64, 0x32, 0x4d, 0xf9, 0x25, 0x69, 0xb8, 0x65, 0xdb, 0x46, 0xad, 0xd6, 0xac, 0xaf, 0xd4, + 0xd4, 0x46, 0x41, 0x56, 0x66, 0x60, 0xd2, 0x7d, 0x5d, 0xad, 0x55, 0x97, 0x0b, 0x59, 0xe5, 0x04, + 0x1c, 0x5b, 0x29, 0xd6, 0x9b, 0x95, 0xea, 0xb9, 0xe2, 0x6a, 0x65, 0xb1, 0x59, 0x5a, 0x29, 0xaa, + 0xf5, 0x42, 0x4e, 0xb9, 0x0a, 0x4e, 0x34, 0x2a, 0x65, 0xb5, 0xb9, 0x54, 0x2e, 0x36, 0x36, 0xd4, + 0x72, 0xbd, 0x59, 0xad, 0x35, 0xab, 0xc5, 0xb5, 0x72, 0x21, 0xef, 0x36, 0x7f, 0xf2, 0x29, 0x50, + 0x9b, 0x89, 0xfd, 0xca, 0x38, 0x19, 0xa1, 0x8c, 0x53, 0xbd, 0xca, 0x08, 0x61, 0xb5, 0x52, 0xcb, + 0xf5, 0xb2, 0x7a, 0xae, 0x5c, 0x98, 0xee, 0xa7, 0x6b, 0x33, 0xca, 0x71, 0x28, 0xb8, 0x3c, 0x34, + 0x2b, 0x75, 0x2f, 0xe7, 0x62, 0x61, 0x16, 0x7d, 0x38, 0x0f, 0x27, 0x55, 0xbc, 0xa5, 0xdb, 0x0e, + 0xb6, 0xd6, 0xb5, 0xcb, 0x3b, 0xd8, 0x70, 0xbc, 0x4e, 0xfe, 0x5f, 0x13, 0x2b, 0xe3, 0x1a, 0xcc, + 0x76, 0x29, 0x8d, 0x35, 0xec, 0x6c, 0x9b, 0x6d, 0x36, 0x0a, 0x3f, 0x2e, 0xb2, 0xe7, 0x98, 0x5f, + 0x0f, 0x67, 0x57, 0xf9, 0xbf, 0x43, 0xba, 0x2d, 0xc7, 0xe8, 0x76, 0x76, 0x18, 0xdd, 0x56, 0xae, + 0x81, 0xa9, 0x5d, 0x1b, 0x5b, 0xe5, 0x1d, 0x4d, 0xef, 0x78, 0x97, 0x73, 0xfa, 0x09, 0xe8, 0xcd, + 0x59, 0xd1, 0x13, 0x2b, 0xa1, 0xba, 0xf4, 0x17, 0x63, 0x44, 0xdf, 0x7a, 0x1a, 0x80, 0x55, 0x76, + 0xc3, 0xea, 0x30, 0x65, 0x0d, 0xa5, 0xb8, 0xfc, 0x5d, 0xd0, 0x3b, 0x1d, 0xdd, 0xd8, 0xf2, 0xf7, + 0xfd, 0x83, 0x04, 0xf4, 0x4b, 0xb2, 0xc8, 0x09, 0x96, 0xa4, 0xbc, 0x25, 0x6b, 0x4d, 0xcf, 0x97, + 0xc6, 0xdc, 0xef, 0xee, 0x6f, 0x3a, 0x79, 0xa5, 0x00, 0x33, 0x24, 0x8d, 0xb5, 0xc0, 0xc2, 0x84, + 0xdb, 0x07, 0x7b, 0xe4, 0xd6, 0xca, 0x8d, 0x95, 0xda, 0xa2, 0xff, 0x6d, 0xd2, 0x25, 0xe9, 0x32, + 0x53, 0xac, 0xde, 0x4f, 0x5a, 0xe3, 0x94, 0xf2, 0x18, 0xb8, 0x2a, 0xd4, 0x61, 0x17, 0x57, 0xd5, + 0x72, 0x71, 0xf1, 0xfe, 0x66, 0xf9, 0x19, 0x95, 0x7a, 0xa3, 0xce, 0x37, 0x2e, 0xaf, 0x1d, 0x4d, + 0xbb, 0xfc, 0x96, 0xd7, 0x8a, 0x95, 0x55, 0xd6, 0xbf, 0x2f, 0xd5, 0xd4, 0xb5, 0x62, 0xa3, 0x30, + 0x83, 0x5e, 0x2c, 0x43, 0x61, 0x19, 0x3b, 0xeb, 0xa6, 0xe5, 0x68, 0x9d, 0x55, 0xdd, 0xb8, 0xb8, + 0x61, 0x75, 0xb8, 0xc9, 0xa6, 0x70, 0x98, 0x0e, 0x7e, 0x88, 0xe4, 0x08, 0x46, 0xef, 0x88, 0x77, + 0x49, 0xb6, 0x40, 0x99, 0x82, 0x04, 0xf4, 0x2c, 0x49, 0x64, 0xb9, 0x5b, 0xbc, 0xd4, 0x64, 0x7a, + 0xf2, 0xec, 0x71, 0x8f, 0xcf, 0x7d, 0x50, 0xcb, 0xa3, 0xe7, 0x66, 0x61, 0x72, 0x49, 0x37, 0xb4, + 0x8e, 0xfe, 0x4c, 0x2e, 0x7e, 0x69, 0xd0, 0xc7, 0x64, 0x62, 0xfa, 0x18, 0x69, 0xa8, 0xf1, 0xf3, + 0x57, 0x65, 0xd1, 0xe5, 0x85, 0x90, 0xec, 0x3d, 0x26, 0x23, 0x06, 0xcf, 0xf7, 0x49, 0x22, 0xcb, + 0x0b, 0x83, 0xe9, 0x25, 0xc3, 0xf0, 0xa3, 0xdf, 0x1b, 0x36, 0x56, 0x4f, 0xfb, 0x9e, 0xec, 0xa7, + 0x0a, 0x53, 0xe8, 0xcf, 0x65, 0x40, 0xcb, 0xd8, 0x39, 0x87, 0x2d, 0x7f, 0x2a, 0x40, 0x7a, 0x7d, + 0x66, 0x6f, 0x87, 0x9a, 0xec, 0xeb, 0xc3, 0x00, 0x9e, 0xe7, 0x01, 0x2c, 0xc6, 0x34, 0x9e, 0x08, + 0xd2, 0x11, 0x8d, 0xb7, 0x02, 0x79, 0x9b, 0x7c, 0x67, 0x6a, 0xf6, 0xc4, 0xe8, 0xe1, 0x92, 0x10, + 0x0b, 0x53, 0xa7, 0x84, 0x55, 0x46, 0x00, 0x7d, 0xcb, 0x9f, 0x04, 0xfd, 0x28, 0xa7, 0x1d, 0x4b, + 0x07, 0x66, 0x36, 0x99, 0xbe, 0x58, 0xe9, 0xaa, 0x4b, 0x3f, 0xfb, 0x06, 0xbd, 0x2f, 0x07, 0xc7, + 0xfb, 0x55, 0x07, 0xfd, 0x6e, 0x86, 0xdb, 0x61, 0xc7, 0x64, 0xc8, 0xcf, 0xb0, 0x0d, 0x44, 0xf7, + 0x45, 0x79, 0x32, 0x9c, 0xf0, 0x97, 0xe1, 0x1a, 0x66, 0x15, 0x5f, 0xb2, 0x3b, 0xd8, 0x71, 0xb0, + 0x45, 0xaa, 0x36, 0xa9, 0xf6, 0xff, 0xa8, 0x3c, 0x15, 0xae, 0xd4, 0x0d, 0x5b, 0x6f, 0x63, 0xab, + 0xa1, 0x77, 0xed, 0xa2, 0xd1, 0x6e, 0xec, 0x3a, 0xa6, 0xa5, 0x6b, 0xec, 0x2a, 0xc9, 0x49, 0x35, + 0xea, 0xb3, 0x72, 0x13, 0x14, 0x74, 0xbb, 0x66, 0x5c, 0x30, 0x35, 0xab, 0xad, 0x1b, 0x5b, 0xab, + 0xba, 0xed, 0x30, 0x0f, 0xe0, 0x7d, 0xe9, 0xe8, 0x1f, 0x64, 0xd1, 0xc3, 0x74, 0x03, 0x60, 0x8d, + 0xe8, 0x50, 0x7e, 0x56, 0x16, 0x39, 0x1e, 0x97, 0x8c, 0x76, 0x32, 0x65, 0x79, 0xce, 0xb8, 0x0d, + 0x89, 0xfe, 0x23, 0x38, 0xe9, 0x5a, 0x68, 0xba, 0x67, 0x08, 0x9c, 0x2b, 0xab, 0x95, 0xa5, 0x4a, + 0xd9, 0x35, 0x2b, 0x4e, 0xc0, 0xb1, 0xe0, 0xdb, 0xe2, 0xfd, 0xcd, 0x7a, 0xb9, 0xda, 0x28, 0x4c, + 0xba, 0xfd, 0x14, 0x4d, 0x5e, 0x2a, 0x56, 0x56, 0xcb, 0x8b, 0xcd, 0x46, 0xcd, 0xfd, 0xb2, 0x38, + 0x9c, 0x69, 0x81, 0x1e, 0xca, 0xc2, 0x51, 0x22, 0xdb, 0xcb, 0x44, 0xaa, 0xae, 0x50, 0x7a, 0x7c, + 0x6d, 0x7d, 0x80, 0xa6, 0xa8, 0x78, 0xd1, 0x27, 0x85, 0x6f, 0xca, 0x0c, 0x41, 0xd8, 0x53, 0x46, + 0x84, 0x66, 0x7c, 0x53, 0x12, 0x89, 0x50, 0x21, 0x4c, 0x36, 0x99, 0x52, 0xfc, 0xdb, 0xb8, 0x47, + 0x9c, 0x68, 0xf0, 0x89, 0x95, 0x59, 0x22, 0x3f, 0x3f, 0x63, 0xbd, 0xa2, 0x12, 0x75, 0x98, 0x03, + 0x20, 0x29, 0x44, 0x83, 0xa8, 0x1e, 0xf4, 0x1d, 0xaf, 0xa2, 0xf4, 0xa0, 0x58, 0x6a, 0x54, 0xce, + 0x95, 0xa3, 0xf4, 0xe0, 0x13, 0x32, 0x4c, 0x2e, 0x63, 0xc7, 0x9d, 0x53, 0xd9, 0xe8, 0x69, 0x02, + 0xeb, 0x3f, 0xae, 0x19, 0xd3, 0x31, 0x5b, 0x5a, 0xc7, 0x5f, 0x06, 0xa0, 0x6f, 0xe8, 0x67, 0x86, + 0x31, 0x41, 0xbc, 0xa2, 0x23, 0xc6, 0xab, 0x1f, 0x86, 0x9c, 0xe3, 0x7e, 0x66, 0xcb, 0xd0, 0x3f, + 0x10, 0x39, 0x5c, 0xb9, 0x44, 0x16, 0x35, 0x47, 0x53, 0x69, 0xfe, 0xd0, 0xe8, 0x24, 0x68, 0xbb, + 0x44, 0x30, 0xf2, 0xbd, 0x68, 0x7f, 0xfe, 0x9d, 0x0c, 0x27, 0x68, 0xfb, 0x28, 0x76, 0xbb, 0x75, + 0xc7, 0xb4, 0xb0, 0x8a, 0x5b, 0x58, 0xef, 0x3a, 0x3d, 0xeb, 0x7b, 0x16, 0x4d, 0xf5, 0x36, 0x9b, + 0xd9, 0x2b, 0x7a, 0x8d, 0x2c, 0x1a, 0x83, 0x79, 0x5f, 0x7b, 0xec, 0x29, 0x2f, 0xa2, 0xb1, 0x7f, + 0x48, 0x12, 0x89, 0xaa, 0x9c, 0x90, 0x78, 0x32, 0xa0, 0xde, 0x7f, 0x08, 0x40, 0x79, 0x2b, 0x37, + 0x6a, 0xb9, 0x54, 0xae, 0xac, 0xbb, 0x83, 0xc0, 0xb5, 0x70, 0xf5, 0xfa, 0x86, 0x5a, 0x5a, 0x29, + 0xd6, 0xcb, 0x4d, 0xb5, 0xbc, 0x5c, 0xa9, 0x37, 0x98, 0x53, 0x16, 0xfd, 0x6b, 0x42, 0xb9, 0x06, + 0x4e, 0xd5, 0x37, 0x16, 0xea, 0x25, 0xb5, 0xb2, 0x4e, 0xd2, 0xd5, 0x72, 0xb5, 0x7c, 0x9e, 0x7d, + 0x9d, 0x44, 0xef, 0x29, 0xc0, 0xb4, 0x3b, 0x01, 0xa8, 0xd3, 0x79, 0x01, 0xfa, 0x5a, 0x16, 0xa6, + 0x55, 0x6c, 0x9b, 0x9d, 0x3d, 0x32, 0x47, 0x18, 0xd7, 0xd4, 0xe3, 0x1b, 0xb2, 0xe8, 0xf9, 0xed, + 0x10, 0xb3, 0xf3, 0x21, 0x46, 0xa3, 0x27, 0x9a, 0xda, 0x9e, 0xa6, 0x77, 0xb4, 0x0b, 0xac, 0xab, + 0x99, 0x54, 0x83, 0x04, 0x65, 0x1e, 0x14, 0xf3, 0x92, 0x81, 0xad, 0x7a, 0xeb, 0x52, 0xd9, 0xd9, + 0x2e, 0xb6, 0xdb, 0x16, 0xb6, 0x6d, 0xb6, 0x7a, 0xd1, 0xe7, 0x8b, 0x72, 0x23, 0x1c, 0x25, 0xa9, + 0xa1, 0xcc, 0xd4, 0x41, 0xa6, 0x37, 0xd9, 0xcf, 0x59, 0x34, 0x2e, 0x7b, 0x39, 0x73, 0xa1, 0x9c, + 0x41, 0x72, 0xf8, 0xb8, 0x44, 0x9e, 0x3f, 0xa5, 0x73, 0x06, 0xa6, 0x0d, 0x6d, 0x07, 0x97, 0x1f, + 0xec, 0xea, 0x16, 0xb6, 0x89, 0x63, 0x8c, 0xac, 0x86, 0x93, 0xd0, 0xfb, 0x84, 0xce, 0x9b, 0x8b, + 0x49, 0x2c, 0x99, 0xee, 0x2f, 0x0f, 0xa1, 0xfa, 0x7d, 0xfa, 0x19, 0x19, 0xbd, 0x47, 0x86, 0x19, + 0xc6, 0x54, 0xd1, 0xb8, 0x5c, 0x69, 0xa3, 0x6b, 0x39, 0xe3, 0x57, 0x73, 0xd3, 0x3c, 0xe3, 0x97, + 0xbc, 0xa0, 0x9f, 0x97, 0x45, 0xdd, 0x9d, 0xfb, 0x54, 0x9c, 0x94, 0x11, 0xed, 0x38, 0xba, 0x69, + 0xee, 0x32, 0x47, 0xd5, 0x49, 0x95, 0xbe, 0xa4, 0xb9, 0xa8, 0x87, 0xfe, 0x40, 0xc8, 0x99, 0x5a, + 0xb0, 0x1a, 0x87, 0x04, 0xe0, 0x47, 0x64, 0x98, 0x63, 0x5c, 0xd5, 0xd9, 0x39, 0x1f, 0xa1, 0x03, + 0x6f, 0xbf, 0x28, 0x6c, 0x08, 0xf6, 0xa9, 0x3f, 0x2b, 0xe9, 0x51, 0x03, 0xe4, 0x07, 0x84, 0x82, + 0xa3, 0x09, 0x57, 0xe4, 0x90, 0xa0, 0x7c, 0x4b, 0x16, 0xa6, 0x37, 0x6c, 0x6c, 0x31, 0xbf, 0x7d, + 0xf4, 0x70, 0x16, 0xe4, 0x65, 0xcc, 0x6d, 0xa4, 0xbe, 0x40, 0xd8, 0xc3, 0x37, 0x5c, 0xd9, 0x10, + 0x51, 0xd7, 0x46, 0x8a, 0x80, 0xed, 0x06, 0x98, 0xa3, 0x22, 0x2d, 0x3a, 0x8e, 0x6b, 0x24, 0x7a, + 0xde, 0xb4, 0x3d, 0xa9, 0xa3, 0xd8, 0x2a, 0x22, 0x65, 0xb9, 0x59, 0x4a, 0x2e, 0x4f, 0xab, 0x78, + 0x93, 0xce, 0x67, 0xb3, 0x6a, 0x4f, 0xaa, 0x72, 0x2b, 0x5c, 0x61, 0x76, 0x31, 0x3d, 0xbf, 0x12, + 0xca, 0x9c, 0x23, 0x99, 0xfb, 0x7d, 0x42, 0x5f, 0x13, 0xf2, 0xd5, 0x15, 0x97, 0x4e, 0x32, 0x5d, + 0xe8, 0x8e, 0xc6, 0x24, 0x39, 0x0e, 0x05, 0x37, 0x07, 0xd9, 0x7f, 0x51, 0xcb, 0xf5, 0xda, 0xea, + 0xb9, 0x72, 0xff, 0x65, 0x8c, 0x1c, 0x7a, 0x8e, 0x0c, 0x53, 0x0b, 0x96, 0xa9, 0xb5, 0x5b, 0x9a, + 0xed, 0xa0, 0x6f, 0x49, 0x30, 0xb3, 0xae, 0x5d, 0xee, 0x98, 0x5a, 0x9b, 0xf8, 0xf7, 0xf7, 0xf4, + 0x05, 0x5d, 0xfa, 0xc9, 0xeb, 0x0b, 0xd8, 0x2b, 0x7f, 0x30, 0xd0, 0x3f, 0xba, 0x97, 0x11, 0xb9, + 0x50, 0xd3, 0xdf, 0xe6, 0x93, 0xfa, 0x05, 0x2b, 0xf5, 0xf8, 0x9a, 0x0f, 0xf3, 0x14, 0x61, 0x51, + 0xbe, 0x47, 0x2c, 0xfc, 0xa8, 0x08, 0xc9, 0xc3, 0xd9, 0x95, 0x7f, 0xee, 0x24, 0xe4, 0x17, 0x31, + 0xb1, 0xe2, 0xfe, 0xbb, 0x04, 0x13, 0x75, 0xec, 0x10, 0x0b, 0xee, 0x76, 0xce, 0x53, 0xb8, 0x4d, + 0x32, 0x04, 0x4e, 0xec, 0xde, 0xbb, 0x3b, 0x59, 0x0f, 0x9d, 0xb7, 0x26, 0xcf, 0x09, 0x3c, 0x12, + 0x69, 0xb9, 0xf3, 0xac, 0xcc, 0x03, 0x79, 0x24, 0xc6, 0x92, 0x4a, 0xdf, 0xd7, 0xea, 0x6d, 0x12, + 0x73, 0xad, 0x0a, 0xf5, 0x7a, 0xaf, 0x08, 0xeb, 0x67, 0xac, 0xb7, 0x19, 0x63, 0x3e, 0xc6, 0x39, + 0xea, 0x49, 0x30, 0x41, 0x65, 0xee, 0xcd, 0x47, 0x7b, 0xfd, 0x14, 0x28, 0x09, 0x72, 0xf6, 0xda, + 0xcb, 0x29, 0xe8, 0xa2, 0x16, 0x5d, 0xf8, 0x58, 0x62, 0x10, 0xcc, 0x54, 0xb1, 0x73, 0xc9, 0xb4, + 0x2e, 0xd6, 0x1d, 0xcd, 0xc1, 0xe8, 0xdf, 0x24, 0x90, 0xeb, 0xd8, 0x09, 0x47, 0x3f, 0xa9, 0xc2, + 0x31, 0x5a, 0x21, 0x96, 0x91, 0xf4, 0xdf, 0xb4, 0x22, 0x67, 0xfa, 0x0a, 0x21, 0x94, 0x4f, 0xdd, + 0xff, 0x2b, 0xfa, 0xf5, 0xbe, 0x41, 0x9f, 0xa4, 0x3e, 0x93, 0x06, 0x26, 0x99, 0x30, 0x83, 0xae, + 0x82, 0x45, 0xe8, 0xe9, 0x7b, 0x85, 0xcc, 0x6a, 0x31, 0x9a, 0x87, 0xd3, 0x15, 0x7c, 0xe0, 0x2a, + 0xc8, 0x96, 0xb6, 0x35, 0x07, 0xbd, 0x55, 0x06, 0x28, 0xb6, 0xdb, 0x6b, 0xd4, 0x07, 0x3c, 0xec, + 0x90, 0x76, 0x16, 0x66, 0x5a, 0xdb, 0x5a, 0x70, 0xb7, 0x09, 0xed, 0x0f, 0xb8, 0x34, 0xe5, 0xc9, + 0x81, 0x33, 0x39, 0x95, 0x2a, 0xea, 0x81, 0xc9, 0x2d, 0x83, 0xd1, 0xf6, 0x1d, 0xcd, 0xf9, 0x50, + 0x98, 0xb1, 0x47, 0xe8, 0xdc, 0xdf, 0xe7, 0x03, 0xf6, 0xa2, 0xe7, 0x70, 0x8c, 0xb4, 0x7f, 0xc0, + 0x26, 0x48, 0x48, 0x78, 0xd2, 0x5b, 0x2c, 0xa0, 0x47, 0x3c, 0x5f, 0x63, 0x09, 0x5d, 0xab, 0x94, + 0xdb, 0xba, 0x27, 0x5a, 0x16, 0x30, 0x0b, 0x3d, 0x3f, 0x93, 0x0c, 0xbe, 0x78, 0xc1, 0xdd, 0x03, + 0xb3, 0xb8, 0xad, 0x3b, 0xd8, 0xab, 0x25, 0x13, 0x60, 0x1c, 0xc4, 0xfc, 0x0f, 0xe8, 0xd9, 0xc2, + 0x41, 0xd7, 0x88, 0x40, 0xf7, 0xd7, 0x28, 0xa2, 0xfd, 0x89, 0x85, 0x51, 0x13, 0xa3, 0x99, 0x3e, + 0x58, 0x3f, 0x23, 0xc3, 0x89, 0x86, 0xb9, 0xb5, 0xd5, 0xc1, 0x9e, 0x98, 0x30, 0xf5, 0xce, 0x44, + 0xda, 0x28, 0xe1, 0x22, 0x3b, 0x41, 0xe6, 0x03, 0xba, 0x7f, 0x94, 0xcc, 0x7d, 0xe1, 0x4f, 0x4c, + 0xc5, 0xce, 0xa2, 0x88, 0xb8, 0xfa, 0xf2, 0x19, 0x81, 0x82, 0x58, 0xc0, 0x67, 0x61, 0xb2, 0xe9, + 0x03, 0xf1, 0x59, 0x09, 0x66, 0xe9, 0xcd, 0x95, 0x9e, 0x82, 0xde, 0x37, 0x42, 0x00, 0xd0, 0xb7, + 0x32, 0xa2, 0x7e, 0xb6, 0x44, 0x26, 0x1c, 0x27, 0x11, 0x22, 0x16, 0x0b, 0xaa, 0x32, 0x90, 0x5c, + 0xfa, 0xa2, 0xfd, 0x13, 0x19, 0xa6, 0x97, 0xb1, 0xd7, 0xd2, 0xec, 0xc4, 0x3d, 0xd1, 0x59, 0x98, + 0x21, 0xd7, 0xb7, 0xd5, 0xd8, 0x31, 0x49, 0xba, 0x6a, 0xc6, 0xa5, 0x29, 0xd7, 0xc3, 0xec, 0x05, + 0xbc, 0x69, 0x5a, 0xb8, 0xc6, 0x9d, 0xa5, 0xe4, 0x13, 0x23, 0xc2, 0xd3, 0x71, 0x71, 0xd0, 0x16, + 0x78, 0x6c, 0x6e, 0xde, 0x2f, 0xcc, 0x50, 0x55, 0x22, 0xc6, 0x9c, 0xa7, 0xc0, 0x24, 0x43, 0xde, + 0x33, 0xd3, 0xe2, 0xfa, 0x45, 0x3f, 0x2f, 0x7a, 0xb5, 0x8f, 0x68, 0x99, 0x43, 0xf4, 0x89, 0x49, + 0x98, 0x18, 0xcb, 0xfd, 0xee, 0x85, 0x50, 0xf9, 0x0b, 0x97, 0x2b, 0x6d, 0x1b, 0xad, 0x25, 0xc3, + 0xf4, 0x34, 0x80, 0xdf, 0x38, 0xbc, 0xb0, 0x16, 0xa1, 0x14, 0x3e, 0x72, 0x7d, 0xec, 0x41, 0xbd, + 0x5e, 0x71, 0x10, 0x76, 0x46, 0x0c, 0x8c, 0xd8, 0x01, 0x3f, 0x11, 0x4e, 0xd2, 0x47, 0xe7, 0xe3, + 0x32, 0x9c, 0xf0, 0xcf, 0x1f, 0xad, 0x6a, 0x76, 0xd0, 0xee, 0x4a, 0xc9, 0x20, 0xe2, 0x0e, 0x7c, + 0xf8, 0x8d, 0xe5, 0xeb, 0xc9, 0xc6, 0x8c, 0xbe, 0x9c, 0x8c, 0x16, 0x1d, 0xe5, 0x66, 0x38, 0x66, + 0xec, 0xee, 0xf8, 0x52, 0x27, 0x2d, 0x9e, 0xb5, 0xf0, 0xfd, 0x1f, 0x92, 0x8c, 0x4c, 0x22, 0xcc, + 0x8f, 0x65, 0x4e, 0xc9, 0x1d, 0xe9, 0x7a, 0x42, 0x22, 0x18, 0xd1, 0xbf, 0x64, 0x12, 0xf5, 0x6e, + 0x83, 0xcf, 0x7c, 0x25, 0xe8, 0xa5, 0x0e, 0xf1, 0xc0, 0xd7, 0xd9, 0x09, 0xc8, 0x95, 0x77, 0xba, + 0xce, 0xe5, 0xb3, 0x8f, 0x85, 0xd9, 0xba, 0x63, 0x61, 0x6d, 0x27, 0xb4, 0x33, 0xe0, 0x98, 0x17, + 0xb1, 0xe1, 0xed, 0x0c, 0x90, 0x97, 0x3b, 0x6e, 0x87, 0x09, 0xc3, 0x6c, 0x6a, 0xbb, 0xce, 0xb6, + 0x72, 0xed, 0xbe, 0x23, 0xf5, 0x0c, 0xfc, 0x1a, 0x8b, 0x61, 0xf4, 0xc5, 0x3b, 0xc9, 0xda, 0x70, + 0xde, 0x30, 0x8b, 0xbb, 0xce, 0xf6, 0xc2, 0x35, 0x1f, 0xf9, 0xdb, 0xd3, 0x99, 0x4f, 0xfc, 0xed, + 0xe9, 0xcc, 0x17, 0xfe, 0xf6, 0x74, 0xe6, 0x17, 0xbf, 0x74, 0xfa, 0xc8, 0x27, 0xbe, 0x74, 0xfa, + 0xc8, 0x67, 0xbf, 0x74, 0xfa, 0xc8, 0x8f, 0x4a, 0xdd, 0x0b, 0x17, 0xf2, 0x84, 0xca, 0x93, 0xfe, + 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x7f, 0x7f, 0x9b, 0x26, 0x60, 0x08, 0x02, 0x00, } func (m *Rpc) Marshal() (dAtA []byte, err error) { @@ -88349,6 +88359,16 @@ func (m *RpcObjectListExportRequest) MarshalToSizedBuffer(dAtA []byte) (int, err _ = i var l int _ = l + if m.IncludeDependentDetails { + i-- + if m.IncludeDependentDetails { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x60 + } if m.NoProgress { i-- if m.NoProgress { @@ -124886,6 +124906,9 @@ func (m *RpcObjectListExportRequest) Size() (n int) { if m.NoProgress { n += 2 } + if m.IncludeDependentDetails { + n += 2 + } return n } @@ -178314,6 +178337,26 @@ func (m *RpcObjectListExportRequest) Unmarshal(dAtA []byte) error { } } m.NoProgress = bool(v != 0) + case 12: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field IncludeDependentDetails", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.IncludeDependentDetails = bool(v != 0) default: iNdEx = preIndex skippy, err := skipCommands(dAtA[iNdEx:]) diff --git a/pb/protos/commands.proto b/pb/protos/commands.proto index d7288830a..57dec8582 100644 --- a/pb/protos/commands.proto +++ b/pb/protos/commands.proto @@ -2757,6 +2757,8 @@ message Rpc { bool includeArchived = 9; // for integrations like raycast and web publishing bool noProgress = 11; + // for web publising, just add details of dependent objects in result snapshot + bool includeDependentDetails = 12; } message Response { diff --git a/pb/protos/snapshot.proto b/pb/protos/snapshot.proto index 849260742..248af50d7 100644 --- a/pb/protos/snapshot.proto +++ b/pb/protos/snapshot.proto @@ -4,12 +4,18 @@ option go_package = "pb"; import "pkg/lib/pb/model/protos/models.proto"; import "pb/protos/changes.proto"; +import "google/protobuf/struct.proto"; message SnapshotWithType { anytype.model.SmartBlockType sbType = 1; anytype.Change.Snapshot snapshot = 2; + repeated DependantDetail dependantDetails = 3; } +message DependantDetail { + string id = 1; + google.protobuf.Struct details = 2; +} message Profile { string name = 1; string avatar = 2; diff --git a/pb/snapshot.pb.go b/pb/snapshot.pb.go index 68eb46309..260899f46 100644 --- a/pb/snapshot.pb.go +++ b/pb/snapshot.pb.go @@ -7,6 +7,7 @@ import ( fmt "fmt" model "github.com/anyproto/anytype-heart/pkg/lib/pb/model" proto "github.com/gogo/protobuf/proto" + types "github.com/gogo/protobuf/types" io "io" math "math" math_bits "math/bits" @@ -24,8 +25,9 @@ var _ = math.Inf const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package type SnapshotWithType struct { - SbType model.SmartBlockType `protobuf:"varint,1,opt,name=sbType,proto3,enum=anytype.model.SmartBlockType" json:"sbType,omitempty"` - Snapshot *ChangeSnapshot `protobuf:"bytes,2,opt,name=snapshot,proto3" json:"snapshot,omitempty"` + SbType model.SmartBlockType `protobuf:"varint,1,opt,name=sbType,proto3,enum=anytype.model.SmartBlockType" json:"sbType,omitempty"` + Snapshot *ChangeSnapshot `protobuf:"bytes,2,opt,name=snapshot,proto3" json:"snapshot,omitempty"` + DependantDetails []*DependantDetail `protobuf:"bytes,3,rep,name=dependantDetails,proto3" json:"dependantDetails,omitempty"` } func (m *SnapshotWithType) Reset() { *m = SnapshotWithType{} } @@ -75,6 +77,65 @@ func (m *SnapshotWithType) GetSnapshot() *ChangeSnapshot { return nil } +func (m *SnapshotWithType) GetDependantDetails() []*DependantDetail { + if m != nil { + return m.DependantDetails + } + return nil +} + +type DependantDetail struct { + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Details *types.Struct `protobuf:"bytes,2,opt,name=details,proto3" json:"details,omitempty"` +} + +func (m *DependantDetail) Reset() { *m = DependantDetail{} } +func (m *DependantDetail) String() string { return proto.CompactTextString(m) } +func (*DependantDetail) ProtoMessage() {} +func (*DependantDetail) Descriptor() ([]byte, []int) { + return fileDescriptor_022f1596c727bff6, []int{1} +} +func (m *DependantDetail) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *DependantDetail) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_DependantDetail.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *DependantDetail) XXX_Merge(src proto.Message) { + xxx_messageInfo_DependantDetail.Merge(m, src) +} +func (m *DependantDetail) XXX_Size() int { + return m.Size() +} +func (m *DependantDetail) XXX_DiscardUnknown() { + xxx_messageInfo_DependantDetail.DiscardUnknown(m) +} + +var xxx_messageInfo_DependantDetail proto.InternalMessageInfo + +func (m *DependantDetail) GetId() string { + if m != nil { + return m.Id + } + return "" +} + +func (m *DependantDetail) GetDetails() *types.Struct { + if m != nil { + return m.Details + } + return nil +} + type Profile struct { Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` Avatar string `protobuf:"bytes,2,opt,name=avatar,proto3" json:"avatar,omitempty"` @@ -88,7 +149,7 @@ func (m *Profile) Reset() { *m = Profile{} } func (m *Profile) String() string { return proto.CompactTextString(m) } func (*Profile) ProtoMessage() {} func (*Profile) Descriptor() ([]byte, []int) { - return fileDescriptor_022f1596c727bff6, []int{1} + return fileDescriptor_022f1596c727bff6, []int{2} } func (m *Profile) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -161,33 +222,39 @@ func (m *Profile) GetAnalyticsId() string { func init() { proto.RegisterType((*SnapshotWithType)(nil), "anytype.SnapshotWithType") + proto.RegisterType((*DependantDetail)(nil), "anytype.DependantDetail") proto.RegisterType((*Profile)(nil), "anytype.Profile") } func init() { proto.RegisterFile("pb/protos/snapshot.proto", fileDescriptor_022f1596c727bff6) } var fileDescriptor_022f1596c727bff6 = []byte{ - // 318 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x90, 0xc1, 0x4a, 0xc3, 0x30, - 0x18, 0xc7, 0x97, 0x31, 0x5b, 0x97, 0x81, 0x8c, 0x1c, 0x34, 0x8c, 0x59, 0xc6, 0xf0, 0x30, 0x3c, - 0xb4, 0x30, 0xf5, 0x05, 0xa6, 0x97, 0xdd, 0xa4, 0x13, 0x04, 0x6f, 0x5f, 0x9a, 0xb8, 0x96, 0x75, - 0x4d, 0x48, 0x82, 0xd0, 0x93, 0xaf, 0xe0, 0xfb, 0xf8, 0x02, 0x1e, 0x77, 0xf4, 0x28, 0xdb, 0x8b, - 0xc8, 0xd2, 0x76, 0x13, 0xbc, 0x7d, 0xff, 0xef, 0xff, 0xfb, 0xfe, 0xff, 0x10, 0x4c, 0x15, 0x8b, - 0x94, 0x96, 0x56, 0x9a, 0xc8, 0x14, 0xa0, 0x4c, 0x2a, 0x6d, 0xe8, 0x34, 0xf1, 0xa1, 0x28, 0x6d, - 0xa9, 0xc4, 0xe0, 0x4a, 0xad, 0x96, 0x51, 0x9e, 0xb1, 0x48, 0xb1, 0x68, 0x2d, 0xb9, 0xc8, 0x9b, - 0x03, 0x27, 0x4c, 0x85, 0x0f, 0x2e, 0x8e, 0x41, 0x49, 0x0a, 0xc5, 0x52, 0xd4, 0xc6, 0xf8, 0x1d, - 0xf7, 0x17, 0x75, 0xf2, 0x73, 0x66, 0xd3, 0xa7, 0x52, 0x09, 0x72, 0x87, 0x3d, 0xc3, 0xf6, 0x13, - 0x45, 0x23, 0x34, 0x39, 0x9b, 0x5e, 0x86, 0x75, 0x59, 0xe8, 0x32, 0xc3, 0xc5, 0x1a, 0xb4, 0x9d, - 0xe5, 0x32, 0x59, 0xed, 0xa1, 0xb8, 0x86, 0xc9, 0x2d, 0x3e, 0x6d, 0x1e, 0x49, 0xdb, 0x23, 0x34, - 0xe9, 0x4d, 0xe9, 0xe1, 0xf0, 0xde, 0x95, 0x86, 0x4d, 0x55, 0x7c, 0x20, 0xc7, 0x9f, 0x08, 0xfb, - 0x8f, 0x5a, 0xbe, 0x66, 0xb9, 0x20, 0x04, 0x77, 0x0a, 0x58, 0x57, 0xb5, 0xdd, 0xd8, 0xcd, 0xe4, - 0x1c, 0x7b, 0xf0, 0x06, 0x16, 0xb4, 0xcb, 0xec, 0xc6, 0xb5, 0x22, 0x14, 0xfb, 0xc0, 0xb9, 0x16, - 0xc6, 0xd0, 0x8e, 0x33, 0x1a, 0x49, 0xae, 0x71, 0xdf, 0x28, 0x48, 0xc4, 0x03, 0x98, 0x94, 0x49, - 0xd0, 0x7c, 0xce, 0xe9, 0x89, 0x43, 0xfe, 0xed, 0xc9, 0x10, 0x77, 0x55, 0x55, 0x3e, 0xe7, 0xd4, - 0x73, 0xd0, 0x71, 0x41, 0x46, 0xb8, 0x07, 0x05, 0xe4, 0xa5, 0xcd, 0x12, 0x33, 0xe7, 0xd4, 0x77, - 0xfe, 0xdf, 0xd5, 0x6c, 0xf8, 0xb5, 0x0d, 0xd0, 0x66, 0x1b, 0xa0, 0x9f, 0x6d, 0x80, 0x3e, 0x76, - 0x41, 0x6b, 0xb3, 0x0b, 0x5a, 0xdf, 0xbb, 0xa0, 0xf5, 0xd2, 0x56, 0x8c, 0x79, 0xee, 0x8f, 0x6f, - 0x7e, 0x03, 0x00, 0x00, 0xff, 0xff, 0xab, 0x51, 0x3f, 0xdf, 0xc7, 0x01, 0x00, 0x00, + // 399 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x90, 0xcf, 0x8e, 0xd3, 0x30, + 0x10, 0xc6, 0xeb, 0xec, 0x92, 0x50, 0xaf, 0xb4, 0x54, 0x3e, 0xb0, 0xd6, 0xaa, 0x44, 0x51, 0xc5, + 0x61, 0xc5, 0xc1, 0x11, 0x0b, 0xbc, 0xc0, 0x92, 0x4b, 0x6f, 0x28, 0x5d, 0x09, 0x89, 0xdb, 0x38, + 0xf6, 0x26, 0x51, 0xd3, 0xd8, 0x8a, 0x5d, 0xa4, 0xbc, 0x05, 0xef, 0xc3, 0x19, 0x89, 0x63, 0x8f, + 0x1c, 0x51, 0xfb, 0x22, 0xa8, 0x4e, 0xd2, 0xd2, 0xed, 0x6d, 0xfe, 0xfc, 0xe6, 0xfb, 0x66, 0x06, + 0x53, 0xcd, 0x63, 0xdd, 0x28, 0xab, 0x4c, 0x6c, 0x6a, 0xd0, 0xa6, 0x50, 0x96, 0xb9, 0x9c, 0x04, + 0x50, 0xb7, 0xb6, 0xd5, 0xf2, 0xf6, 0xad, 0x5e, 0xe6, 0x71, 0x55, 0xf2, 0x58, 0xf3, 0x78, 0xa5, + 0x84, 0xac, 0x86, 0x01, 0x97, 0x98, 0x0e, 0xbf, 0xbd, 0x39, 0x0a, 0x65, 0x05, 0xd4, 0xb9, 0x1c, + 0x1a, 0xd3, 0x5c, 0xa9, 0xbc, 0x92, 0x5d, 0x93, 0xaf, 0x9f, 0x62, 0x63, 0x9b, 0x75, 0xd6, 0xbb, + 0xcc, 0x7e, 0x21, 0x3c, 0x59, 0xf4, 0xc6, 0x5f, 0x4b, 0x5b, 0x3c, 0xb6, 0x5a, 0x92, 0x4f, 0xd8, + 0x37, 0x7c, 0x1f, 0x51, 0x14, 0xa1, 0xbb, 0xeb, 0xfb, 0x37, 0xac, 0xdf, 0x85, 0x39, 0x4b, 0xb6, + 0x58, 0x41, 0x63, 0x1f, 0x2a, 0x95, 0x2d, 0xf7, 0x50, 0xda, 0xc3, 0xe4, 0x23, 0x7e, 0x39, 0xdc, + 0x40, 0xbd, 0x08, 0xdd, 0x5d, 0xdd, 0xd3, 0xc3, 0xe0, 0x67, 0xb7, 0x13, 0x1b, 0xac, 0xd2, 0x03, + 0x49, 0x12, 0x3c, 0x11, 0x52, 0xcb, 0x5a, 0x40, 0x6d, 0x13, 0x69, 0xa1, 0xac, 0x0c, 0xbd, 0x88, + 0x2e, 0x4e, 0xa6, 0x93, 0x53, 0x20, 0x3d, 0x9b, 0x98, 0x3d, 0xe2, 0x57, 0xcf, 0x20, 0x72, 0x8d, + 0xbd, 0x52, 0xb8, 0x0b, 0xc6, 0xa9, 0x57, 0x0a, 0xf2, 0x1e, 0x07, 0xa2, 0xd7, 0xef, 0xb6, 0xbb, + 0x61, 0xdd, 0x6b, 0xd8, 0xf0, 0x1a, 0xb6, 0x70, 0xaf, 0x49, 0x07, 0x6e, 0xf6, 0x13, 0xe1, 0xe0, + 0x4b, 0xa3, 0x9e, 0xca, 0x4a, 0x12, 0x82, 0x2f, 0x6b, 0x58, 0xc9, 0x5e, 0xd0, 0xc5, 0xe4, 0x35, + 0xf6, 0xe1, 0x3b, 0x58, 0x68, 0x9c, 0xe2, 0x38, 0xed, 0x33, 0x42, 0x71, 0x00, 0x42, 0x34, 0xd2, + 0x18, 0x7a, 0xe9, 0x1a, 0x43, 0x4a, 0xde, 0xe1, 0x89, 0xd1, 0x90, 0xc9, 0x04, 0x4c, 0xc1, 0x15, + 0x34, 0x62, 0x2e, 0xe8, 0x0b, 0x87, 0x9c, 0xd5, 0xc9, 0x14, 0x8f, 0x75, 0x67, 0x3e, 0x17, 0xd4, + 0x77, 0xd0, 0xb1, 0x40, 0x22, 0x7c, 0x05, 0x35, 0x54, 0xad, 0x2d, 0x33, 0x33, 0x17, 0x34, 0x70, + 0xfd, 0xff, 0x4b, 0x0f, 0xd3, 0xdf, 0xdb, 0x10, 0x6d, 0xb6, 0x21, 0xfa, 0xbb, 0x0d, 0xd1, 0x8f, + 0x5d, 0x38, 0xda, 0xec, 0xc2, 0xd1, 0x9f, 0x5d, 0x38, 0xfa, 0xe6, 0x69, 0xce, 0x7d, 0x77, 0xf5, + 0x87, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x36, 0x2f, 0x5b, 0x24, 0x82, 0x02, 0x00, 0x00, } func (m *SnapshotWithType) Marshal() (dAtA []byte, err error) { @@ -210,6 +277,20 @@ func (m *SnapshotWithType) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.DependantDetails) > 0 { + for iNdEx := len(m.DependantDetails) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.DependantDetails[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintSnapshot(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } if m.Snapshot != nil { { size, err := m.Snapshot.MarshalToSizedBuffer(dAtA[:i]) @@ -230,6 +311,48 @@ func (m *SnapshotWithType) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *DependantDetail) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *DependantDetail) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *DependantDetail) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Details != nil { + { + size, err := m.Details.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintSnapshot(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.Id) > 0 { + i -= len(m.Id) + copy(dAtA[i:], m.Id) + i = encodeVarintSnapshot(dAtA, i, uint64(len(m.Id))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func (m *Profile) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -319,6 +442,29 @@ func (m *SnapshotWithType) Size() (n int) { l = m.Snapshot.Size() n += 1 + l + sovSnapshot(uint64(l)) } + if len(m.DependantDetails) > 0 { + for _, e := range m.DependantDetails { + l = e.Size() + n += 1 + l + sovSnapshot(uint64(l)) + } + } + return n +} + +func (m *DependantDetail) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Id) + if l > 0 { + n += 1 + l + sovSnapshot(uint64(l)) + } + if m.Details != nil { + l = m.Details.Size() + n += 1 + l + sovSnapshot(uint64(l)) + } return n } @@ -445,6 +591,158 @@ func (m *SnapshotWithType) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DependantDetails", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSnapshot + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthSnapshot + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthSnapshot + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DependantDetails = append(m.DependantDetails, &DependantDetail{}) + if err := m.DependantDetails[len(m.DependantDetails)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipSnapshot(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthSnapshot + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DependantDetail) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSnapshot + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DependantDetail: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DependantDetail: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSnapshot + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthSnapshot + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthSnapshot + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Id = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Details", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSnapshot + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthSnapshot + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthSnapshot + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Details == nil { + m.Details = &types.Struct{} + } + if err := m.Details.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipSnapshot(dAtA[iNdEx:]) From 8e14863b212c5c3bffe6dc26b4d9a5051f66b176 Mon Sep 17 00:00:00 2001 From: Roman Khafizianov Date: Wed, 22 Jan 2025 17:23:41 +0100 Subject: [PATCH 210/279] GO-4459 add jsonApiListenAddr to AccountStart/Create RPCs --- clientlibrary/service/service.pb.go | 712 ++--- core/account.go | 13 + core/anytype/config/config.go | 1 + core/api/server/middleware.go | 10 +- core/api/server/router.go | 19 +- core/api/server/server.go | 6 +- core/api/service.go | 73 +- core/application/account_config_update.go | 15 + core/application/account_create.go | 5 +- core/application/account_select.go | 8 +- core/application/account_stop.go | 2 +- docs/proto.md | 78 + pb/commands.pb.go | 3284 +++++++++++++-------- pb/protos/commands.proto | 24 + pb/protos/service/service.proto | 2 + pb/service/service.pb.go | 711 ++--- 16 files changed, 3020 insertions(+), 1943 deletions(-) diff --git a/clientlibrary/service/service.pb.go b/clientlibrary/service/service.pb.go index cbd21b09e..e50edb608 100644 --- a/clientlibrary/service/service.pb.go +++ b/clientlibrary/service/service.pb.go @@ -25,343 +25,344 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package func init() { proto.RegisterFile("pb/protos/service/service.proto", fileDescriptor_93a29dc403579097) } var fileDescriptor_93a29dc403579097 = []byte{ - // 5364 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x9d, 0xdf, 0x6f, 0x24, 0x49, - 0x52, 0xf8, 0xd7, 0x2f, 0xdf, 0xfd, 0x52, 0xc7, 0x2d, 0xd0, 0x0b, 0xcb, 0xde, 0x72, 0x37, 0xbf, - 0x76, 0xc6, 0xf6, 0x8c, 0xed, 0xf6, 0xec, 0xcc, 0xce, 0xee, 0xe9, 0x0e, 0x09, 0x79, 0xec, 0xb1, - 0xd7, 0x9c, 0xed, 0x31, 0xee, 0xf6, 0x8c, 0xb4, 0x12, 0x12, 0xe9, 0xea, 0x74, 0xbb, 0x70, 0x75, - 0x65, 0x5d, 0x55, 0x76, 0x7b, 0xfa, 0x10, 0x08, 0x04, 0x02, 0x81, 0x40, 0x9c, 0xf8, 0xf5, 0x8a, - 0xc4, 0x5f, 0xc3, 0xe3, 0x3d, 0xf2, 0x88, 0x76, 0x9f, 0xef, 0x7f, 0x40, 0x95, 0x95, 0x95, 0x3f, - 0xa2, 0x22, 0xb2, 0xca, 0xf7, 0x34, 0xa3, 0x8e, 0x4f, 0x44, 0x64, 0x56, 0x66, 0x46, 0x46, 0x66, - 0x65, 0xa5, 0xa3, 0xbb, 0xf9, 0xc5, 0x76, 0x5e, 0x08, 0x29, 0xca, 0xed, 0x92, 0x17, 0x8b, 0x24, - 0xe6, 0xcd, 0xbf, 0x43, 0xf5, 0xf3, 0xe0, 0x7d, 0x96, 0x2d, 0xe5, 0x32, 0xe7, 0x9f, 0x7c, 0x6c, - 0xc9, 0x58, 0xcc, 0x66, 0x2c, 0x9b, 0x94, 0x35, 0xf2, 0xc9, 0x47, 0x56, 0xc2, 0x17, 0x3c, 0x93, - 0xfa, 0xf7, 0x67, 0xbf, 0xfc, 0xe5, 0x4a, 0xf4, 0xc1, 0x6e, 0x9a, 0xf0, 0x4c, 0xee, 0x6a, 0x8d, - 0xc1, 0xd7, 0xd1, 0x77, 0x77, 0xf2, 0xfc, 0x80, 0xcb, 0x37, 0xbc, 0x28, 0x13, 0x91, 0x0d, 0x3e, - 0x1d, 0x6a, 0x07, 0xc3, 0xb3, 0x3c, 0x1e, 0xee, 0xe4, 0xf9, 0xd0, 0x0a, 0x87, 0x67, 0xfc, 0xa7, - 0x73, 0x5e, 0xca, 0x4f, 0x1e, 0x86, 0xa1, 0x32, 0x17, 0x59, 0xc9, 0x07, 0x97, 0xd1, 0x6f, 0xed, - 0xe4, 0xf9, 0x88, 0xcb, 0x3d, 0x5e, 0x55, 0x60, 0x24, 0x99, 0xe4, 0x83, 0xb5, 0x96, 0xaa, 0x0f, - 0x18, 0x1f, 0xeb, 0xdd, 0xa0, 0xf6, 0x33, 0x8e, 0xbe, 0x53, 0xf9, 0xb9, 0x9a, 0xcb, 0x89, 0xb8, - 0xc9, 0x06, 0xf7, 0xdb, 0x8a, 0x5a, 0x64, 0x6c, 0x3f, 0x08, 0x21, 0xda, 0xea, 0xdb, 0xe8, 0xd7, - 0xdf, 0xb2, 0x34, 0xe5, 0x72, 0xb7, 0xe0, 0x55, 0xc1, 0x7d, 0x9d, 0x5a, 0x34, 0xac, 0x65, 0xc6, - 0xee, 0xa7, 0x41, 0x46, 0x1b, 0xfe, 0x3a, 0xfa, 0x6e, 0x2d, 0x39, 0xe3, 0xb1, 0x58, 0xf0, 0x62, - 0x80, 0x6a, 0x69, 0x21, 0xf1, 0xc8, 0x5b, 0x10, 0xb4, 0xbd, 0x2b, 0xb2, 0x05, 0x2f, 0x24, 0x6e, - 0x5b, 0x0b, 0xc3, 0xb6, 0x2d, 0xa4, 0x6d, 0xff, 0xfd, 0x4a, 0xf4, 0xfd, 0x9d, 0x38, 0x16, 0xf3, - 0x4c, 0x1e, 0x89, 0x98, 0xa5, 0x47, 0x49, 0x76, 0x7d, 0xc2, 0x6f, 0x76, 0xaf, 0x2a, 0x3e, 0x9b, - 0xf2, 0xc1, 0x73, 0xff, 0xa9, 0xd6, 0xe8, 0xd0, 0xb0, 0x43, 0x17, 0x36, 0xbe, 0x3f, 0xbf, 0x9d, - 0x92, 0x2e, 0xcb, 0x3f, 0xaf, 0x44, 0x77, 0x60, 0x59, 0x46, 0x22, 0x5d, 0x70, 0x5b, 0x9a, 0x17, - 0x1d, 0x86, 0x7d, 0xdc, 0x94, 0xe7, 0x8b, 0xdb, 0xaa, 0xe9, 0x12, 0xa5, 0xd1, 0x87, 0x6e, 0x77, - 0x19, 0xf1, 0x52, 0x0d, 0xa7, 0xc7, 0x74, 0x8f, 0xd0, 0x88, 0xf1, 0xfc, 0xa4, 0x0f, 0xaa, 0xbd, - 0x25, 0xd1, 0x40, 0x7b, 0x4b, 0x45, 0x69, 0x9c, 0xad, 0xa3, 0x16, 0x1c, 0xc2, 0xf8, 0x7a, 0xdc, - 0x83, 0xd4, 0xae, 0xfe, 0x24, 0xfa, 0x8d, 0xb7, 0xa2, 0xb8, 0x2e, 0x73, 0x16, 0x73, 0x3d, 0x14, - 0x1e, 0xf9, 0xda, 0x8d, 0x14, 0x8e, 0x86, 0xd5, 0x2e, 0xcc, 0xe9, 0xb4, 0x8d, 0xf0, 0x75, 0xce, - 0x61, 0x0c, 0xb2, 0x8a, 0x95, 0x90, 0xea, 0xb4, 0x10, 0xd2, 0xb6, 0xaf, 0xa3, 0x81, 0xb5, 0x7d, - 0xf1, 0xa7, 0x3c, 0x96, 0x3b, 0x93, 0x09, 0x6c, 0x15, 0xab, 0xab, 0x88, 0xe1, 0xce, 0x64, 0x42, - 0xb5, 0x0a, 0x8e, 0x6a, 0x67, 0x37, 0xd1, 0x47, 0xc0, 0xd9, 0x51, 0x52, 0x2a, 0x87, 0x5b, 0x61, - 0x2b, 0x1a, 0x33, 0x4e, 0x87, 0x7d, 0x71, 0xed, 0xf8, 0x2f, 0x57, 0xa2, 0xef, 0x21, 0x9e, 0xcf, - 0xf8, 0x4c, 0x2c, 0xf8, 0xe0, 0x69, 0xb7, 0xb5, 0x9a, 0x34, 0xfe, 0x3f, 0xbb, 0x85, 0x06, 0xd2, - 0x4d, 0x46, 0x3c, 0xe5, 0xb1, 0x24, 0xbb, 0x49, 0x2d, 0xee, 0xec, 0x26, 0x06, 0x73, 0x46, 0x58, - 0x23, 0x3c, 0xe0, 0x72, 0x77, 0x5e, 0x14, 0x3c, 0x93, 0x64, 0x5b, 0x5a, 0xa4, 0xb3, 0x2d, 0x3d, - 0x14, 0xa9, 0xcf, 0x01, 0x97, 0x3b, 0x69, 0x4a, 0xd6, 0xa7, 0x16, 0x77, 0xd6, 0xc7, 0x60, 0xda, - 0x43, 0x1c, 0xfd, 0xa6, 0xf3, 0xc4, 0xe4, 0x61, 0x76, 0x29, 0x06, 0xf4, 0xb3, 0x50, 0x72, 0xe3, - 0x63, 0xad, 0x93, 0x43, 0xaa, 0xf1, 0xea, 0x5d, 0x2e, 0x0a, 0xba, 0x59, 0x6a, 0x71, 0x67, 0x35, - 0x0c, 0xa6, 0x3d, 0xfc, 0x71, 0xf4, 0x81, 0x8e, 0x92, 0xcd, 0x7c, 0xf6, 0x10, 0x0d, 0xa1, 0x70, - 0x42, 0x7b, 0xd4, 0x41, 0xd9, 0xe0, 0xa0, 0x65, 0x3a, 0xf8, 0x7c, 0x8a, 0xea, 0x81, 0xd0, 0xf3, - 0x30, 0x0c, 0xb5, 0x6c, 0xef, 0xf1, 0x94, 0x93, 0xb6, 0x6b, 0x61, 0x87, 0x6d, 0x03, 0x69, 0xdb, - 0x45, 0xf4, 0x3b, 0xe6, 0xb1, 0x54, 0xf3, 0xa8, 0x92, 0x57, 0x41, 0x7a, 0x83, 0xa8, 0xb7, 0x0b, - 0x19, 0x5f, 0x9b, 0xfd, 0xe0, 0x56, 0x7d, 0xf4, 0x08, 0xc4, 0xeb, 0x03, 0xc6, 0xdf, 0xc3, 0x30, - 0xa4, 0x6d, 0xff, 0xc3, 0x4a, 0xf4, 0x03, 0x2d, 0x7b, 0x95, 0xb1, 0x8b, 0x94, 0xab, 0x29, 0xf1, - 0x84, 0xcb, 0x1b, 0x51, 0x5c, 0x8f, 0x96, 0x59, 0x4c, 0x4c, 0xff, 0x38, 0xdc, 0x31, 0xfd, 0x93, - 0x4a, 0x4e, 0xc6, 0xa7, 0x2b, 0x2a, 0x45, 0x0e, 0x33, 0xbe, 0xa6, 0x06, 0x52, 0xe4, 0x54, 0xc6, - 0xe7, 0x23, 0x2d, 0xab, 0xc7, 0x55, 0xd8, 0xc4, 0xad, 0x1e, 0xbb, 0x71, 0xf2, 0x41, 0x08, 0xb1, - 0x61, 0xab, 0xe9, 0xc0, 0x22, 0xbb, 0x4c, 0xa6, 0xe7, 0xf9, 0xa4, 0xea, 0xc6, 0x8f, 0xf1, 0x1e, - 0xea, 0x20, 0x44, 0xd8, 0x22, 0x50, 0xed, 0xed, 0x9f, 0x6c, 0x62, 0xa4, 0x87, 0xd2, 0x7e, 0x21, - 0x66, 0x47, 0x7c, 0xca, 0xe2, 0xa5, 0x1e, 0xff, 0x9f, 0x87, 0x06, 0x1e, 0xa4, 0x4d, 0x21, 0x5e, - 0xdc, 0x52, 0x4b, 0x97, 0xe7, 0x3f, 0x57, 0xa2, 0x87, 0x4d, 0xf5, 0xaf, 0x58, 0x36, 0xe5, 0xba, - 0x3d, 0xeb, 0xd2, 0xef, 0x64, 0x93, 0x33, 0x5e, 0x4a, 0x56, 0xc8, 0xc1, 0x8f, 0xf0, 0x4a, 0x86, - 0x74, 0x4c, 0xd9, 0x7e, 0xfc, 0x2b, 0xe9, 0xda, 0x56, 0x1f, 0x55, 0x81, 0x4d, 0x87, 0x00, 0xbf, - 0xd5, 0x95, 0x04, 0x06, 0x80, 0x07, 0x21, 0xc4, 0xb6, 0xba, 0x12, 0x1c, 0x66, 0x8b, 0x44, 0xf2, - 0x03, 0x9e, 0xf1, 0xa2, 0xdd, 0xea, 0xb5, 0xaa, 0x8f, 0x10, 0xad, 0x4e, 0xa0, 0x36, 0xd8, 0x78, - 0xde, 0xcc, 0xe4, 0xb8, 0x11, 0x30, 0xd2, 0x9a, 0x1e, 0x37, 0xfb, 0xc1, 0x76, 0x75, 0xe7, 0xf8, - 0x3c, 0xe3, 0x0b, 0x71, 0x0d, 0x57, 0x77, 0xae, 0x89, 0x1a, 0x20, 0x56, 0x77, 0x28, 0x68, 0x67, - 0x30, 0xc7, 0xcf, 0x9b, 0x84, 0xdf, 0x80, 0x19, 0xcc, 0x55, 0xae, 0xc4, 0xc4, 0x0c, 0x86, 0x60, - 0xda, 0xc3, 0x49, 0xf4, 0x6b, 0x4a, 0xf8, 0x87, 0x22, 0xc9, 0x06, 0x77, 0x11, 0xa5, 0x4a, 0x60, - 0xac, 0xde, 0xa3, 0x01, 0x50, 0xe2, 0xea, 0xd7, 0x5d, 0x96, 0xc5, 0x3c, 0x45, 0x4b, 0x6c, 0xc5, - 0xc1, 0x12, 0x7b, 0x98, 0x4d, 0x1d, 0x94, 0xb0, 0x8a, 0x5f, 0xa3, 0x2b, 0x56, 0x24, 0xd9, 0x74, - 0x80, 0xe9, 0x3a, 0x72, 0x22, 0x75, 0xc0, 0x38, 0xd0, 0x85, 0xb5, 0xe2, 0x4e, 0x9e, 0x17, 0x55, - 0x58, 0xc4, 0xba, 0xb0, 0x8f, 0x04, 0xbb, 0x70, 0x0b, 0xc5, 0xbd, 0xed, 0xf1, 0x38, 0x4d, 0xb2, - 0xa0, 0x37, 0x8d, 0xf4, 0xf1, 0x66, 0x51, 0xd0, 0x79, 0x8f, 0x38, 0x5b, 0xf0, 0xa6, 0x66, 0xd8, - 0x93, 0x71, 0x81, 0x60, 0xe7, 0x05, 0xa0, 0x5d, 0xa7, 0x29, 0xf1, 0x31, 0xbb, 0xe6, 0xd5, 0x03, - 0xe6, 0xd5, 0xbc, 0x36, 0xc0, 0xf4, 0x3d, 0x82, 0x58, 0xa7, 0xe1, 0xa4, 0x76, 0x35, 0x8f, 0x3e, - 0x52, 0xf2, 0x53, 0x56, 0xc8, 0x24, 0x4e, 0x72, 0x96, 0x35, 0xf9, 0x3f, 0x36, 0xae, 0x5b, 0x94, - 0x71, 0xb9, 0xd5, 0x93, 0xd6, 0x6e, 0xff, 0x63, 0x25, 0xba, 0x0f, 0xfd, 0x9e, 0xf2, 0x62, 0x96, - 0xa8, 0x65, 0x64, 0x59, 0x07, 0xe1, 0xc1, 0x97, 0x61, 0xa3, 0x2d, 0x05, 0x53, 0x9a, 0x1f, 0xde, - 0x5e, 0xd1, 0x26, 0x43, 0x23, 0x9d, 0x5a, 0xbf, 0x2e, 0x26, 0xad, 0x6d, 0x96, 0x51, 0x93, 0x2f, - 0x2b, 0x21, 0x91, 0x0c, 0xb5, 0x20, 0x30, 0xc2, 0xcf, 0xb3, 0xb2, 0xb1, 0x8e, 0x8d, 0x70, 0x2b, - 0x0e, 0x8e, 0x70, 0x0f, 0xb3, 0x23, 0xfc, 0x74, 0x7e, 0x91, 0x26, 0xe5, 0x55, 0x92, 0x4d, 0x75, - 0xe6, 0xeb, 0xeb, 0x5a, 0x31, 0x4c, 0x7e, 0xd7, 0x3a, 0x39, 0xcc, 0x89, 0xee, 0x2c, 0xa4, 0x13, - 0xd0, 0x4d, 0xd6, 0x3a, 0x39, 0xbb, 0x3e, 0xb0, 0xd2, 0x6a, 0xe5, 0x08, 0xd6, 0x07, 0x8e, 0x6a, - 0x25, 0x25, 0xd6, 0x07, 0x6d, 0x4a, 0x9b, 0x17, 0xd1, 0x6f, 0xbb, 0x75, 0x28, 0x45, 0xba, 0xe0, - 0xe7, 0x45, 0x32, 0x78, 0x42, 0x97, 0xaf, 0x61, 0x8c, 0xab, 0x8d, 0x5e, 0xac, 0x0d, 0x54, 0x96, - 0x38, 0xe0, 0x72, 0x24, 0x99, 0x9c, 0x97, 0x20, 0x50, 0x39, 0x36, 0x0c, 0x42, 0x04, 0x2a, 0x02, - 0xd5, 0xde, 0xfe, 0x28, 0x8a, 0xea, 0x45, 0xb7, 0xda, 0x18, 0xf1, 0xe7, 0x1e, 0xbd, 0x1a, 0xf7, - 0x76, 0x45, 0xee, 0x07, 0x08, 0x9b, 0xf0, 0xd4, 0xbf, 0xab, 0xfd, 0x9e, 0x01, 0xaa, 0xa1, 0x44, - 0x44, 0xc2, 0x03, 0x10, 0x58, 0xd0, 0xd1, 0x95, 0xb8, 0xc1, 0x0b, 0x5a, 0x49, 0xc2, 0x05, 0xd5, - 0x84, 0xdd, 0x81, 0xd5, 0x05, 0xc5, 0x76, 0x60, 0x9b, 0x62, 0x84, 0x76, 0x60, 0x21, 0x63, 0xfb, - 0x8c, 0x6b, 0xf8, 0xa5, 0x10, 0xd7, 0x33, 0x56, 0x5c, 0x83, 0x3e, 0xe3, 0x29, 0x37, 0x0c, 0xd1, - 0x67, 0x28, 0xd6, 0xf6, 0x19, 0xd7, 0x61, 0x95, 0x2e, 0x9f, 0x17, 0x29, 0xe8, 0x33, 0x9e, 0x0d, - 0x8d, 0x10, 0x7d, 0x86, 0x40, 0x6d, 0x74, 0x72, 0xbd, 0x8d, 0x38, 0x5c, 0xf3, 0x7b, 0xea, 0x23, - 0x4e, 0xad, 0xf9, 0x11, 0x0c, 0x76, 0xa1, 0x83, 0x82, 0xe5, 0x57, 0x78, 0x17, 0x52, 0xa2, 0x70, - 0x17, 0x6a, 0x10, 0xd8, 0xde, 0x23, 0xce, 0x8a, 0xf8, 0x0a, 0x6f, 0xef, 0x5a, 0x16, 0x6e, 0x6f, - 0xc3, 0xc0, 0xf6, 0xae, 0x05, 0x6f, 0x13, 0x79, 0x75, 0xcc, 0x25, 0xc3, 0xdb, 0xdb, 0x67, 0xc2, - 0xed, 0xdd, 0x62, 0x6d, 0x3e, 0xee, 0x3a, 0x1c, 0xcd, 0x2f, 0xca, 0xb8, 0x48, 0x2e, 0xf8, 0x20, - 0x60, 0xc5, 0x40, 0x44, 0x3e, 0x4e, 0xc2, 0xda, 0xe7, 0xcf, 0x57, 0xa2, 0xbb, 0x4d, 0xb3, 0x8b, - 0xb2, 0xd4, 0x73, 0x9f, 0xef, 0xfe, 0x05, 0xde, 0xbe, 0x04, 0x4e, 0xec, 0x89, 0xf7, 0x50, 0x73, - 0x72, 0x03, 0xbc, 0x48, 0xe7, 0x59, 0x69, 0x0a, 0xf5, 0x65, 0x1f, 0xeb, 0x8e, 0x02, 0x91, 0x1b, - 0xf4, 0x52, 0xb4, 0x69, 0x99, 0x6e, 0x9f, 0x46, 0x76, 0x38, 0x29, 0x41, 0x5a, 0xd6, 0x3c, 0x6f, - 0x87, 0x20, 0xd2, 0x32, 0x9c, 0x84, 0x5d, 0xe1, 0xa0, 0x10, 0xf3, 0xbc, 0xec, 0xe8, 0x0a, 0x00, - 0x0a, 0x77, 0x85, 0x36, 0xac, 0x7d, 0xbe, 0x8b, 0x7e, 0xd7, 0xed, 0x7e, 0xee, 0xc3, 0xde, 0xa2, - 0xfb, 0x14, 0xf6, 0x88, 0x87, 0x7d, 0x71, 0x9b, 0x51, 0x34, 0x9e, 0xe5, 0x1e, 0x97, 0x2c, 0x49, - 0xcb, 0xc1, 0x2a, 0x6e, 0xa3, 0x91, 0x13, 0x19, 0x05, 0xc6, 0xc1, 0xf8, 0xb6, 0x37, 0xcf, 0xd3, - 0x24, 0x6e, 0xbf, 0x91, 0xd0, 0xba, 0x46, 0x1c, 0x8e, 0x6f, 0x2e, 0x06, 0xe3, 0x75, 0x95, 0xfa, - 0xa9, 0xff, 0x8c, 0x97, 0x39, 0xc7, 0xe3, 0xb5, 0x87, 0x84, 0xe3, 0x35, 0x44, 0x61, 0x7d, 0x46, - 0x5c, 0x1e, 0xb1, 0xa5, 0x98, 0x13, 0xf1, 0xda, 0x88, 0xc3, 0xf5, 0x71, 0x31, 0xbb, 0x36, 0x30, - 0x1e, 0x0e, 0x33, 0xc9, 0x8b, 0x8c, 0xa5, 0xfb, 0x29, 0x9b, 0x96, 0x03, 0x22, 0xc6, 0xf8, 0x14, - 0xb1, 0x36, 0xa0, 0x69, 0xe4, 0x31, 0x1e, 0x96, 0xfb, 0x6c, 0x21, 0x8a, 0x44, 0xd2, 0x8f, 0xd1, - 0x22, 0x9d, 0x8f, 0xd1, 0x43, 0x51, 0x6f, 0x3b, 0x45, 0x7c, 0x95, 0x2c, 0xf8, 0x24, 0xe0, 0xad, - 0x41, 0x7a, 0x78, 0x73, 0x50, 0xa4, 0xd1, 0x46, 0x62, 0x5e, 0xc4, 0x9c, 0x6c, 0xb4, 0x5a, 0xdc, - 0xd9, 0x68, 0x06, 0xd3, 0x1e, 0xfe, 0x66, 0x25, 0xfa, 0xbd, 0x5a, 0xea, 0xbe, 0x26, 0xd8, 0x63, - 0xe5, 0xd5, 0x85, 0x60, 0xc5, 0x64, 0xf0, 0x19, 0x66, 0x07, 0x45, 0x8d, 0xeb, 0x67, 0xb7, 0x51, - 0x81, 0x8f, 0xb5, 0xca, 0xbb, 0xed, 0x88, 0x43, 0x1f, 0xab, 0x87, 0x84, 0x1f, 0x2b, 0x44, 0x61, - 0x00, 0x51, 0xf2, 0x7a, 0x4b, 0x6e, 0x95, 0xd4, 0xf7, 0xf7, 0xe5, 0xd6, 0x3a, 0x39, 0x18, 0x1f, - 0x2b, 0xa1, 0xdf, 0x5b, 0xb6, 0x28, 0x1b, 0x78, 0x8f, 0x19, 0xf6, 0xc5, 0x49, 0xcf, 0x66, 0x54, - 0x84, 0x3d, 0xb7, 0x46, 0xc6, 0xb0, 0x2f, 0x4e, 0x78, 0x76, 0xc2, 0x5a, 0xc8, 0x33, 0x12, 0xda, - 0x86, 0x7d, 0x71, 0x98, 0x7d, 0x69, 0xa6, 0x99, 0x17, 0x9e, 0x04, 0xec, 0xc0, 0xb9, 0x61, 0xa3, - 0x17, 0xab, 0x1d, 0xfe, 0xdd, 0x4a, 0xf4, 0x7d, 0xeb, 0xf1, 0x58, 0x4c, 0x92, 0xcb, 0x65, 0x0d, - 0xbd, 0x61, 0xe9, 0x9c, 0x97, 0x83, 0x67, 0x94, 0xb5, 0x36, 0x6b, 0x4a, 0xf0, 0xfc, 0x56, 0x3a, - 0x70, 0xec, 0xec, 0xe4, 0x79, 0xba, 0x1c, 0xf3, 0x59, 0x9e, 0x92, 0x63, 0xc7, 0x43, 0xc2, 0x63, - 0x07, 0xa2, 0x30, 0x2b, 0x1f, 0x8b, 0x2a, 0xe7, 0x47, 0xb3, 0x72, 0x25, 0x0a, 0x67, 0xe5, 0x0d, - 0x02, 0x73, 0xa5, 0xb1, 0xd8, 0x15, 0x69, 0xca, 0x63, 0xd9, 0x3e, 0x6a, 0x60, 0x34, 0x2d, 0x11, - 0xce, 0x95, 0x00, 0x69, 0x77, 0xe5, 0x9a, 0x35, 0x24, 0x2b, 0xf8, 0xcb, 0xe5, 0x51, 0x92, 0x5d, - 0x0f, 0xf0, 0xb4, 0xc0, 0x02, 0xc4, 0xae, 0x1c, 0x0a, 0xc2, 0xb5, 0xea, 0x79, 0x36, 0x11, 0xf8, - 0x5a, 0xb5, 0x92, 0x84, 0xd7, 0xaa, 0x9a, 0x80, 0x26, 0xcf, 0x38, 0x65, 0xb2, 0x92, 0x84, 0x4d, - 0x6a, 0x02, 0x0b, 0x85, 0xfa, 0xdd, 0x0d, 0x19, 0x0a, 0xc1, 0xdb, 0x9a, 0xb5, 0x4e, 0x0e, 0xf6, - 0xd0, 0x66, 0xd1, 0xba, 0xcf, 0x65, 0x7c, 0x85, 0xf7, 0x50, 0x0f, 0x09, 0xf7, 0x50, 0x88, 0xc2, - 0x2a, 0x8d, 0x85, 0x59, 0x74, 0xaf, 0xe2, 0xfd, 0xa3, 0xb5, 0xe0, 0x5e, 0xeb, 0xe4, 0xe0, 0x32, - 0xf2, 0x70, 0xa6, 0x9e, 0x19, 0xda, 0xc9, 0x6b, 0x59, 0x78, 0x19, 0x69, 0x18, 0x58, 0xfa, 0x5a, - 0xa0, 0xf6, 0xb2, 0x56, 0x69, 0x45, 0x6f, 0x37, 0x6b, 0xad, 0x93, 0xd3, 0x4e, 0xfe, 0xcd, 0x2c, - 0xe3, 0x6a, 0xe9, 0x89, 0xa8, 0xc6, 0xc8, 0x1b, 0x96, 0x26, 0x13, 0x26, 0xf9, 0x58, 0x5c, 0xf3, - 0x0c, 0x5f, 0x31, 0xe9, 0xd2, 0xd6, 0xfc, 0xd0, 0x53, 0x08, 0xaf, 0x98, 0xc2, 0x8a, 0xb0, 0x9f, - 0xd4, 0xf4, 0x79, 0xc9, 0x77, 0x59, 0x49, 0x44, 0x32, 0x0f, 0x09, 0xf7, 0x13, 0x88, 0xc2, 0x7c, - 0xb5, 0x96, 0xbf, 0x7a, 0x97, 0xf3, 0x22, 0xe1, 0x59, 0xcc, 0xf1, 0x7c, 0x15, 0x52, 0xe1, 0x7c, - 0x15, 0xa1, 0xe1, 0x5a, 0x6d, 0x8f, 0x49, 0xfe, 0x72, 0x39, 0x4e, 0x66, 0xbc, 0x94, 0x6c, 0x96, - 0xe3, 0x6b, 0x35, 0x00, 0x85, 0xd7, 0x6a, 0x6d, 0xb8, 0xb5, 0x35, 0x64, 0x02, 0x62, 0xfb, 0x84, - 0x12, 0x24, 0x02, 0x27, 0x94, 0x08, 0x14, 0x3e, 0x58, 0x0b, 0xa0, 0x2f, 0x09, 0x5a, 0x56, 0x82, - 0x2f, 0x09, 0x68, 0xba, 0xb5, 0xe1, 0x66, 0x98, 0x51, 0x35, 0x34, 0x3b, 0x8a, 0x3e, 0x72, 0x87, - 0xe8, 0x46, 0x2f, 0x16, 0xdf, 0xe1, 0x3b, 0xe3, 0x29, 0x53, 0xd3, 0x56, 0x60, 0x1b, 0xad, 0x61, - 0xfa, 0xec, 0xf0, 0x39, 0xac, 0x76, 0xf8, 0x57, 0x2b, 0xd1, 0x27, 0x98, 0xc7, 0xd7, 0xb9, 0xf2, - 0xfb, 0xb4, 0xdb, 0x56, 0x4d, 0x12, 0x47, 0xb0, 0xc2, 0x1a, 0xba, 0x0c, 0x7f, 0x16, 0x7d, 0xdc, - 0x88, 0xec, 0x09, 0x2d, 0x5d, 0x00, 0x3f, 0x69, 0x33, 0xe5, 0x87, 0x9c, 0x71, 0xbf, 0xdd, 0x9b, - 0xb7, 0xeb, 0x21, 0xbf, 0x5c, 0x25, 0x58, 0x0f, 0x19, 0x1b, 0x5a, 0x4c, 0xac, 0x87, 0x10, 0xcc, - 0x8e, 0x4e, 0xb7, 0x7a, 0x6f, 0x13, 0x79, 0xa5, 0xf2, 0x2d, 0x30, 0x3a, 0xbd, 0xb2, 0x1a, 0x88, - 0x18, 0x9d, 0x24, 0x0c, 0x33, 0x92, 0x06, 0xac, 0xc6, 0x26, 0x16, 0xcb, 0x8d, 0x21, 0x77, 0x64, - 0xae, 0x77, 0x83, 0xb0, 0xbf, 0x36, 0x62, 0xbd, 0xf4, 0x79, 0x12, 0xb2, 0x00, 0x96, 0x3f, 0x1b, - 0xbd, 0x58, 0xed, 0xf0, 0x2f, 0xa2, 0xef, 0xb5, 0x2a, 0xb6, 0xcf, 0x99, 0x9c, 0x17, 0x7c, 0x32, - 0xd8, 0xee, 0x28, 0x77, 0x03, 0x1a, 0xd7, 0x4f, 0xfb, 0x2b, 0xb4, 0x72, 0xf4, 0x86, 0xab, 0xbb, - 0x95, 0x29, 0xc3, 0xb3, 0x90, 0x49, 0x9f, 0x0d, 0xe6, 0xe8, 0xb4, 0x4e, 0x6b, 0x99, 0xed, 0xf6, - 0xae, 0x9d, 0x05, 0x4b, 0x52, 0xf5, 0xb2, 0xf6, 0xb3, 0x90, 0x51, 0x0f, 0x0d, 0x2e, 0xb3, 0x49, - 0x95, 0x56, 0x64, 0x56, 0x63, 0xdc, 0x59, 0x9e, 0x6d, 0xd2, 0x91, 0x00, 0x59, 0x9d, 0x6d, 0xf5, - 0xa4, 0xb5, 0x5b, 0xd9, 0x4c, 0x79, 0xd5, 0xcf, 0x6e, 0x27, 0xc7, 0xbc, 0x6a, 0x55, 0xa4, 0xa7, - 0x6f, 0xf5, 0xa4, 0xb5, 0xd7, 0x3f, 0x8f, 0x3e, 0x6e, 0x7b, 0xd5, 0x13, 0xd1, 0x76, 0xa7, 0x29, - 0x30, 0x17, 0x3d, 0xed, 0xaf, 0x60, 0x97, 0x34, 0x5f, 0x25, 0xa5, 0x14, 0xc5, 0x72, 0x74, 0x25, - 0x6e, 0x9a, 0x2f, 0x1f, 0xfc, 0xd1, 0xaa, 0x81, 0xa1, 0x43, 0x10, 0x4b, 0x1a, 0x9c, 0x6c, 0xb9, - 0xb2, 0x5f, 0x48, 0x94, 0x84, 0x2b, 0x87, 0xe8, 0x70, 0xe5, 0x93, 0x36, 0x56, 0x35, 0xb5, 0xb2, - 0x9f, 0x73, 0xac, 0xe1, 0x45, 0x6d, 0x7f, 0xd2, 0xb1, 0xde, 0x0d, 0xda, 0x8c, 0x45, 0x8b, 0xf7, - 0x92, 0xcb, 0x4b, 0x53, 0x27, 0xbc, 0xa4, 0x2e, 0x42, 0x64, 0x2c, 0x04, 0x6a, 0x93, 0xee, 0xfd, - 0x24, 0xe5, 0x6a, 0x47, 0xff, 0xf5, 0xe5, 0x65, 0x2a, 0xd8, 0x04, 0x24, 0xdd, 0x95, 0x78, 0xe8, - 0xca, 0x89, 0xa4, 0x1b, 0xe3, 0xec, 0x59, 0x81, 0x4a, 0x7a, 0xc6, 0x63, 0x91, 0xc5, 0x49, 0x0a, - 0x0f, 0x82, 0x2a, 0x4d, 0x23, 0x24, 0xce, 0x0a, 0xb4, 0x20, 0x3b, 0x31, 0x56, 0xa2, 0x6a, 0xd8, - 0x37, 0xe5, 0x7f, 0xd4, 0x56, 0x74, 0xc4, 0xc4, 0xc4, 0x88, 0x60, 0x76, 0xed, 0x59, 0x09, 0xcf, - 0x73, 0x65, 0xfc, 0x5e, 0x5b, 0xab, 0x96, 0x10, 0x6b, 0x4f, 0x9f, 0xb0, 0x6b, 0xa8, 0xea, 0xf7, - 0x3d, 0x71, 0x93, 0x29, 0xa3, 0x0f, 0xda, 0x2a, 0x8d, 0x8c, 0x58, 0x43, 0x41, 0x46, 0x1b, 0xfe, - 0x49, 0xf4, 0xff, 0x95, 0xe1, 0x42, 0xe4, 0x83, 0x3b, 0x88, 0x42, 0xe1, 0x9c, 0xd9, 0xbc, 0x4b, - 0xca, 0xed, 0xd1, 0x02, 0xd3, 0x37, 0xce, 0x4b, 0x36, 0xe5, 0x83, 0x87, 0x44, 0x8b, 0x2b, 0x29, - 0x71, 0xb4, 0xa0, 0x4d, 0xf9, 0xbd, 0xe2, 0x44, 0x4c, 0xb4, 0x75, 0xa4, 0x86, 0x46, 0x18, 0xea, - 0x15, 0x2e, 0x64, 0x93, 0x99, 0x13, 0xb6, 0x48, 0xa6, 0x66, 0xc2, 0xa9, 0xe3, 0x56, 0x09, 0x92, - 0x19, 0xcb, 0x0c, 0x1d, 0x88, 0x48, 0x66, 0x48, 0x58, 0xfb, 0xfc, 0xd7, 0x95, 0xe8, 0x9e, 0x65, - 0x0e, 0x9a, 0xdd, 0xba, 0xc3, 0xec, 0x52, 0x54, 0xa9, 0xcf, 0x51, 0x92, 0x5d, 0x97, 0x83, 0x2f, - 0x28, 0x93, 0x38, 0x6f, 0x8a, 0xf2, 0xe5, 0xad, 0xf5, 0x6c, 0xd6, 0xda, 0x6c, 0x65, 0xd9, 0xf7, - 0xd9, 0xb5, 0x06, 0xc8, 0x5a, 0xcd, 0x8e, 0x17, 0xe4, 0x88, 0xac, 0x35, 0xc4, 0xdb, 0x26, 0x36, - 0xce, 0x53, 0x91, 0xc1, 0x26, 0xb6, 0x16, 0x2a, 0x21, 0xd1, 0xc4, 0x2d, 0xc8, 0xc6, 0xe3, 0x46, - 0x54, 0xef, 0xba, 0xec, 0xa4, 0x29, 0x88, 0xc7, 0x46, 0xd5, 0x00, 0x44, 0x3c, 0x46, 0x41, 0xed, - 0xe7, 0x2c, 0xfa, 0x4e, 0xf5, 0x48, 0x4f, 0x0b, 0xbe, 0x48, 0x38, 0x3c, 0x7a, 0xe1, 0x48, 0x88, - 0xf1, 0xef, 0x13, 0x76, 0x64, 0x9d, 0x67, 0x65, 0x9e, 0xb2, 0xf2, 0x4a, 0xbf, 0x8c, 0xf7, 0xeb, - 0xdc, 0x08, 0xe1, 0xeb, 0xf8, 0x47, 0x1d, 0x94, 0x0d, 0xea, 0x8d, 0xcc, 0x84, 0x98, 0x55, 0x5c, - 0xb5, 0x15, 0x66, 0xd6, 0x3a, 0x39, 0xbb, 0xe3, 0x7d, 0xc0, 0xd2, 0x94, 0x17, 0xcb, 0x46, 0x76, - 0xcc, 0xb2, 0xe4, 0x92, 0x97, 0x12, 0xec, 0x78, 0x6b, 0x6a, 0x08, 0x31, 0x62, 0xc7, 0x3b, 0x80, - 0xdb, 0x6c, 0x1e, 0x78, 0x3e, 0xcc, 0x26, 0xfc, 0x1d, 0xc8, 0xe6, 0xa1, 0x1d, 0xc5, 0x10, 0xd9, - 0x3c, 0xc5, 0xda, 0x9d, 0xdf, 0x97, 0xa9, 0x88, 0xaf, 0xf5, 0x14, 0xe0, 0x37, 0xb0, 0x92, 0xc0, - 0x39, 0xe0, 0x41, 0x08, 0xb1, 0x93, 0x80, 0x12, 0x9c, 0xf1, 0x3c, 0x65, 0x31, 0x3c, 0x7f, 0x53, - 0xeb, 0x68, 0x19, 0x31, 0x09, 0x40, 0x06, 0x14, 0x57, 0x9f, 0xeb, 0xc1, 0x8a, 0x0b, 0x8e, 0xf5, - 0x3c, 0x08, 0x21, 0x76, 0x1a, 0x54, 0x82, 0x51, 0x9e, 0x26, 0x12, 0x0c, 0x83, 0x5a, 0x43, 0x49, - 0x88, 0x61, 0xe0, 0x13, 0xc0, 0xe4, 0x31, 0x2f, 0xa6, 0x1c, 0x35, 0xa9, 0x24, 0x41, 0x93, 0x0d, - 0x61, 0x0f, 0x1b, 0xd7, 0x75, 0x17, 0xf9, 0x12, 0x1c, 0x36, 0xd6, 0xd5, 0x12, 0xf9, 0x92, 0x38, - 0x6c, 0xec, 0x01, 0xa0, 0x88, 0xa7, 0xac, 0x94, 0x78, 0x11, 0x95, 0x24, 0x58, 0xc4, 0x86, 0xb0, - 0x73, 0x74, 0x5d, 0xc4, 0xb9, 0x04, 0x73, 0xb4, 0x2e, 0x80, 0xf3, 0x06, 0xfa, 0x2e, 0x29, 0xb7, - 0x91, 0xa4, 0x6e, 0x15, 0x2e, 0xf7, 0x13, 0x9e, 0x4e, 0x4a, 0x10, 0x49, 0xf4, 0x73, 0x6f, 0xa4, - 0x44, 0x24, 0x69, 0x53, 0xa0, 0x2b, 0xe9, 0xfd, 0x71, 0xac, 0x76, 0x60, 0x6b, 0xfc, 0x41, 0x08, - 0xb1, 0xf1, 0xa9, 0x29, 0xf4, 0x2e, 0x2b, 0x8a, 0xa4, 0x9a, 0xfc, 0x57, 0xf1, 0x02, 0x35, 0x72, - 0x22, 0x3e, 0x61, 0x1c, 0x18, 0x5e, 0x4d, 0xe0, 0xc6, 0x0a, 0x06, 0x43, 0xf7, 0xa7, 0x41, 0xc6, - 0x66, 0x9c, 0x4a, 0xe2, 0xbc, 0x42, 0xc5, 0x9e, 0x26, 0xf2, 0x06, 0x75, 0xb5, 0x0b, 0x73, 0x3e, - 0x06, 0x32, 0x2e, 0x8e, 0xc5, 0x82, 0x8f, 0xc5, 0xab, 0x77, 0x49, 0x29, 0x93, 0x6c, 0xaa, 0x67, - 0xee, 0xe7, 0x84, 0x25, 0x0c, 0x26, 0x3e, 0x06, 0xea, 0x54, 0xb2, 0x09, 0x04, 0x28, 0xcb, 0x09, - 0xbf, 0x41, 0x13, 0x08, 0x68, 0xd1, 0x70, 0x44, 0x02, 0x11, 0xe2, 0xed, 0x3e, 0x8a, 0x71, 0xae, - 0xbf, 0x98, 0x1e, 0x8b, 0x26, 0x97, 0xa3, 0xac, 0x41, 0x90, 0x58, 0xca, 0x06, 0x15, 0xec, 0xfa, - 0xd2, 0xf8, 0xb7, 0x43, 0x6c, 0x9d, 0xb0, 0xd3, 0x1e, 0x66, 0x8f, 0x7b, 0x90, 0x88, 0x2b, 0x7b, - 0x0e, 0x80, 0x72, 0xd5, 0x3e, 0x06, 0xf0, 0xb8, 0x07, 0xe9, 0xec, 0xc9, 0xb8, 0xd5, 0x7a, 0xc9, - 0xe2, 0xeb, 0x69, 0x21, 0xe6, 0xd9, 0x64, 0x57, 0xa4, 0xa2, 0x00, 0x7b, 0x32, 0x5e, 0xa9, 0x01, - 0x4a, 0xec, 0xc9, 0x74, 0xa8, 0xd8, 0x0c, 0xce, 0x2d, 0xc5, 0x4e, 0x9a, 0x4c, 0xe1, 0x8a, 0xda, - 0x33, 0xa4, 0x00, 0x22, 0x83, 0x43, 0x41, 0xa4, 0x13, 0xd5, 0x2b, 0x6e, 0x99, 0xc4, 0x2c, 0xad, - 0xfd, 0x6d, 0xd3, 0x66, 0x3c, 0xb0, 0xb3, 0x13, 0x21, 0x0a, 0x48, 0x3d, 0xc7, 0xf3, 0x22, 0x3b, - 0xcc, 0xa4, 0x20, 0xeb, 0xd9, 0x00, 0x9d, 0xf5, 0x74, 0x40, 0x10, 0x56, 0xc7, 0xfc, 0x5d, 0x55, - 0x9a, 0xea, 0x1f, 0x2c, 0xac, 0x56, 0xbf, 0x0f, 0xb5, 0x3c, 0x14, 0x56, 0x01, 0x07, 0x2a, 0xa3, - 0x9d, 0xd4, 0x1d, 0x26, 0xa0, 0xed, 0x77, 0x93, 0xf5, 0x6e, 0x10, 0xf7, 0x33, 0x92, 0xcb, 0x94, - 0x87, 0xfc, 0x28, 0xa0, 0x8f, 0x9f, 0x06, 0xb4, 0xdb, 0x2d, 0x5e, 0x7d, 0xae, 0x78, 0x7c, 0xdd, - 0x3a, 0xd6, 0xe4, 0x17, 0xb4, 0x46, 0x88, 0xed, 0x16, 0x02, 0xc5, 0x9b, 0xe8, 0x30, 0x16, 0x59, - 0xa8, 0x89, 0x2a, 0x79, 0x9f, 0x26, 0xd2, 0x9c, 0x5d, 0xfc, 0x1a, 0xa9, 0xee, 0x99, 0x75, 0x33, - 0x6d, 0x10, 0x16, 0x5c, 0x88, 0x58, 0xfc, 0x92, 0xb0, 0xcd, 0xc9, 0xa1, 0xcf, 0xe3, 0xf6, 0x99, - 0xef, 0x96, 0x95, 0x63, 0xfa, 0xcc, 0x37, 0xc5, 0xd2, 0x95, 0xac, 0xfb, 0x48, 0x87, 0x15, 0xbf, - 0x9f, 0x6c, 0xf6, 0x83, 0xed, 0x92, 0xc7, 0xf3, 0xb9, 0x9b, 0x72, 0x56, 0xd4, 0x5e, 0xb7, 0x02, - 0x86, 0x2c, 0x46, 0x2c, 0x79, 0x02, 0x38, 0x08, 0x61, 0x9e, 0xe7, 0x5d, 0x91, 0x49, 0x9e, 0x49, - 0x2c, 0x84, 0xf9, 0xc6, 0x34, 0x18, 0x0a, 0x61, 0x94, 0x02, 0xe8, 0xb7, 0x6a, 0x3f, 0x88, 0xcb, - 0x13, 0x36, 0x43, 0x33, 0xb6, 0x7a, 0xaf, 0xa7, 0x96, 0x87, 0xfa, 0x2d, 0xe0, 0x9c, 0x97, 0x7c, - 0xae, 0x97, 0x31, 0x2b, 0xa6, 0x66, 0x77, 0x63, 0x32, 0x78, 0x4a, 0xdb, 0xf1, 0x49, 0xe2, 0x25, - 0x5f, 0x58, 0x03, 0x84, 0x9d, 0xc3, 0x19, 0x9b, 0x9a, 0x9a, 0x22, 0x35, 0x50, 0xf2, 0x56, 0x55, - 0xd7, 0xbb, 0x41, 0xe0, 0xe7, 0x4d, 0x32, 0xe1, 0x22, 0xe0, 0x47, 0xc9, 0xfb, 0xf8, 0x81, 0x20, - 0xc8, 0xde, 0xaa, 0x7a, 0xd7, 0x2b, 0xba, 0x9d, 0x6c, 0xa2, 0xd7, 0xb1, 0x43, 0xe2, 0xf1, 0x00, - 0x2e, 0x94, 0xbd, 0x11, 0x3c, 0x18, 0xa3, 0xcd, 0x06, 0x6d, 0x68, 0x8c, 0x9a, 0xfd, 0xd7, 0x3e, - 0x63, 0x14, 0x83, 0xb5, 0xcf, 0x9f, 0xe9, 0x31, 0xba, 0xc7, 0x24, 0xab, 0xf2, 0xf6, 0x37, 0x09, - 0xbf, 0xd1, 0x0b, 0x61, 0xa4, 0xbe, 0x0d, 0x35, 0x54, 0x9f, 0xac, 0x82, 0x55, 0xf1, 0x76, 0x6f, - 0x3e, 0xe0, 0x5b, 0xaf, 0x10, 0x3a, 0x7d, 0x83, 0xa5, 0xc2, 0x76, 0x6f, 0x3e, 0xe0, 0x5b, 0x7f, - 0x0b, 0xdf, 0xe9, 0x1b, 0x7c, 0x10, 0xbf, 0xdd, 0x9b, 0xd7, 0xbe, 0xff, 0xba, 0x19, 0xb8, 0xae, - 0xf3, 0x2a, 0x0f, 0x8b, 0x65, 0xb2, 0xe0, 0x58, 0x3a, 0xe9, 0xdb, 0x33, 0x68, 0x28, 0x9d, 0xa4, - 0x55, 0x9c, 0x0b, 0x94, 0xb0, 0x52, 0x9c, 0x8a, 0x32, 0x51, 0x2f, 0xe9, 0x9f, 0xf7, 0x30, 0xda, - 0xc0, 0xa1, 0x45, 0x53, 0x48, 0xc9, 0xbe, 0x6e, 0xf4, 0x50, 0x7b, 0x8a, 0x79, 0x33, 0x60, 0xaf, - 0x7d, 0x98, 0x79, 0xab, 0x27, 0x6d, 0x5f, 0xfc, 0x79, 0x8c, 0xfb, 0xc6, 0x31, 0xd4, 0xaa, 0xe8, - 0x4b, 0xc7, 0xa7, 0xfd, 0x15, 0xb4, 0xfb, 0xbf, 0x6d, 0xd6, 0x15, 0xd0, 0xbf, 0x1e, 0x04, 0xcf, - 0xfa, 0x58, 0x04, 0x03, 0xe1, 0xf9, 0xad, 0x74, 0x74, 0x41, 0xfe, 0xb1, 0x59, 0x40, 0x37, 0xa8, - 0xfa, 0x96, 0x43, 0x7d, 0x03, 0xaa, 0xc7, 0x44, 0xa8, 0x59, 0x2d, 0x0c, 0x47, 0xc6, 0x8b, 0x5b, - 0x6a, 0x39, 0xd7, 0x69, 0x79, 0xb0, 0xfe, 0xe6, 0xd0, 0x29, 0x4f, 0xc8, 0xb2, 0x43, 0xc3, 0x02, - 0x7d, 0x71, 0x5b, 0x35, 0x6a, 0xac, 0x38, 0xb0, 0xba, 0x9d, 0xe3, 0x79, 0x4f, 0xc3, 0xde, 0x7d, - 0x1d, 0x9f, 0xdf, 0x4e, 0x49, 0x97, 0xe5, 0xbf, 0x56, 0xa2, 0x47, 0x1e, 0x6b, 0xdf, 0x27, 0x80, - 0x5d, 0x8f, 0x1f, 0x07, 0xec, 0x53, 0x4a, 0xa6, 0x70, 0xbf, 0xff, 0xab, 0x29, 0xdb, 0xbb, 0xa7, - 0x3c, 0x95, 0xfd, 0x24, 0x95, 0xbc, 0x68, 0xdf, 0x3d, 0xe5, 0xdb, 0xad, 0xa9, 0x21, 0x7d, 0xf7, - 0x54, 0x00, 0x77, 0xee, 0x9e, 0x42, 0x3c, 0xa3, 0x77, 0x4f, 0xa1, 0xd6, 0x82, 0x77, 0x4f, 0x85, - 0x35, 0xa8, 0xf0, 0xde, 0x14, 0xa1, 0xde, 0xb7, 0xee, 0x65, 0xd1, 0xdf, 0xc6, 0x7e, 0x76, 0x1b, - 0x15, 0x62, 0x82, 0xab, 0x39, 0x75, 0xce, 0xad, 0xc7, 0x33, 0xf5, 0xce, 0xba, 0x6d, 0xf7, 0xe6, - 0xb5, 0xef, 0x9f, 0xea, 0xd5, 0x8d, 0x09, 0xe7, 0xa2, 0x50, 0xf7, 0x8e, 0x6d, 0x84, 0xc2, 0x73, - 0x65, 0xc1, 0x6d, 0xf9, 0xcd, 0x7e, 0x30, 0x51, 0xdd, 0x8a, 0xd0, 0x8d, 0x3e, 0xec, 0x32, 0x04, - 0x9a, 0x7c, 0xbb, 0x37, 0x4f, 0x4c, 0x23, 0xb5, 0xef, 0xba, 0xb5, 0x7b, 0x18, 0xf3, 0xdb, 0xfa, - 0x69, 0x7f, 0x05, 0xed, 0x7e, 0xa1, 0xd3, 0x46, 0xd7, 0xbd, 0x6a, 0xe7, 0xad, 0x2e, 0x53, 0x23, - 0xaf, 0x99, 0x87, 0x7d, 0xf1, 0x50, 0x02, 0xe1, 0x4e, 0xa1, 0x5d, 0x09, 0x04, 0x3a, 0x8d, 0x7e, - 0x7e, 0x3b, 0x25, 0x5d, 0x96, 0x7f, 0x59, 0x89, 0xee, 0x92, 0x65, 0xd1, 0xfd, 0xe0, 0x8b, 0xbe, - 0x96, 0x41, 0x7f, 0xf8, 0xf2, 0xd6, 0x7a, 0xba, 0x50, 0xff, 0xbe, 0x12, 0xdd, 0x0b, 0x14, 0xaa, - 0xee, 0x20, 0xb7, 0xb0, 0xee, 0x77, 0x94, 0x1f, 0xde, 0x5e, 0x91, 0x9a, 0xee, 0x5d, 0x7c, 0xd4, - 0xbe, 0x94, 0x29, 0x60, 0x7b, 0x44, 0x5f, 0xca, 0xd4, 0xad, 0x05, 0x37, 0x79, 0xd8, 0x45, 0xb3, - 0xe8, 0x42, 0x37, 0x79, 0xd4, 0x09, 0xb5, 0xe0, 0xe5, 0x12, 0x18, 0x87, 0x39, 0x79, 0xf5, 0x2e, - 0x67, 0xd9, 0x84, 0x76, 0x52, 0xcb, 0xbb, 0x9d, 0x18, 0x0e, 0x6e, 0x8e, 0x55, 0xd2, 0x33, 0xd1, - 0x2c, 0xa4, 0x1e, 0x53, 0xfa, 0x06, 0x09, 0x6e, 0x8e, 0xb5, 0x50, 0xc2, 0x9b, 0xce, 0x1a, 0x43, - 0xde, 0x40, 0xb2, 0xf8, 0xa4, 0x0f, 0x0a, 0x52, 0x74, 0xe3, 0xcd, 0xec, 0xb9, 0x6f, 0x86, 0xac, - 0xb4, 0xf6, 0xdd, 0xb7, 0x7a, 0xd2, 0x84, 0xdb, 0x11, 0x97, 0x5f, 0x71, 0x36, 0xe1, 0x45, 0xd0, - 0xad, 0xa1, 0x7a, 0xb9, 0x75, 0x69, 0xcc, 0xed, 0xae, 0x48, 0xe7, 0xb3, 0x4c, 0x37, 0x26, 0xe9, - 0xd6, 0xa5, 0xba, 0xdd, 0x02, 0x1a, 0x6e, 0x0b, 0x5a, 0xb7, 0x2a, 0xbd, 0x7c, 0x12, 0x36, 0xe3, - 0x65, 0x95, 0x1b, 0xbd, 0x58, 0xba, 0x9e, 0xba, 0x1b, 0x75, 0xd4, 0x13, 0xf4, 0xa4, 0xad, 0x9e, - 0x34, 0xdc, 0x9f, 0x73, 0xdc, 0x9a, 0xfe, 0xb4, 0xdd, 0x61, 0xab, 0xd5, 0xa5, 0x9e, 0xf6, 0x57, - 0x80, 0xbb, 0xa1, 0xba, 0x57, 0x1d, 0x25, 0xa5, 0xdc, 0x4f, 0xd2, 0x74, 0xb0, 0x11, 0xe8, 0x26, - 0x0d, 0x14, 0xdc, 0x0d, 0x45, 0x60, 0xa2, 0x27, 0x37, 0xbb, 0x87, 0xd9, 0xa0, 0xcb, 0x8e, 0xa2, - 0x7a, 0xf5, 0x64, 0x97, 0x06, 0x3b, 0x5a, 0xce, 0xa3, 0x36, 0xb5, 0x1d, 0x86, 0x1f, 0x5c, 0xab, - 0xc2, 0xdb, 0xbd, 0x79, 0xf0, 0xba, 0x5d, 0x51, 0x6a, 0x66, 0x79, 0x48, 0x99, 0xf0, 0x66, 0x92, - 0x47, 0x1d, 0x14, 0xd8, 0x15, 0xac, 0x87, 0xd1, 0xdb, 0x64, 0x32, 0xe5, 0x12, 0x7d, 0x53, 0xe4, - 0x02, 0xc1, 0x37, 0x45, 0x00, 0x04, 0x4d, 0x57, 0xff, 0x6e, 0xb6, 0x43, 0x0f, 0x27, 0x58, 0xd3, - 0x69, 0x65, 0x87, 0x0a, 0x35, 0x1d, 0x4a, 0x83, 0x68, 0x60, 0xdc, 0xea, 0xcf, 0xf1, 0x9f, 0x84, - 0xcc, 0x80, 0x6f, 0xf2, 0x37, 0x7a, 0xb1, 0x60, 0x46, 0xb1, 0x0e, 0x93, 0x59, 0x22, 0xb1, 0x19, - 0xc5, 0xb1, 0x51, 0x21, 0xa1, 0x19, 0xa5, 0x8d, 0x52, 0xd5, 0xab, 0x72, 0x84, 0xc3, 0x49, 0xb8, - 0x7a, 0x35, 0xd3, 0xaf, 0x7a, 0x86, 0x6d, 0xbd, 0xd8, 0xcc, 0x4c, 0x97, 0x91, 0x57, 0x7a, 0xb1, - 0x8c, 0xf4, 0x6d, 0xf5, 0x99, 0x26, 0x04, 0x43, 0x51, 0x87, 0x52, 0x80, 0x1b, 0xf6, 0x15, 0xd7, - 0xbc, 0x7b, 0xcd, 0x73, 0xce, 0x0a, 0x96, 0xc5, 0xe8, 0xe2, 0x54, 0x19, 0x6c, 0x91, 0xa1, 0xc5, - 0x29, 0xa9, 0x01, 0x5e, 0x9b, 0xfb, 0x1f, 0x58, 0x22, 0x43, 0xc1, 0x7c, 0xc9, 0xe8, 0x7f, 0x5f, - 0xf9, 0xb8, 0x07, 0x09, 0x5f, 0x9b, 0x37, 0x80, 0xd9, 0xf8, 0xae, 0x9d, 0x7e, 0x16, 0x30, 0xe5, - 0xa3, 0xa1, 0x85, 0x30, 0xad, 0x02, 0x3a, 0xb5, 0x49, 0x70, 0xb9, 0xfc, 0x09, 0x5f, 0x62, 0x9d, - 0xda, 0xe6, 0xa7, 0x0a, 0x09, 0x75, 0xea, 0x36, 0x0a, 0xf2, 0x4c, 0x77, 0x1d, 0xb4, 0x1a, 0xd0, - 0x77, 0x97, 0x3e, 0x6b, 0x9d, 0x1c, 0x18, 0x39, 0x7b, 0xc9, 0xc2, 0x7b, 0x4f, 0x80, 0x14, 0x74, - 0x2f, 0x59, 0xe0, 0xaf, 0x09, 0x36, 0x7a, 0xb1, 0xf0, 0x95, 0x3c, 0x93, 0xfc, 0x5d, 0xf3, 0xae, - 0x1c, 0x29, 0xae, 0x92, 0xb7, 0x5e, 0x96, 0xaf, 0x77, 0x83, 0xf6, 0x00, 0xec, 0x69, 0x21, 0x62, - 0x5e, 0x96, 0xfa, 0xa6, 0x4a, 0xff, 0x84, 0x91, 0x96, 0x0d, 0xc1, 0x3d, 0x95, 0x0f, 0xc3, 0x90, - 0x73, 0xbd, 0x5c, 0x2d, 0xb2, 0xb7, 0xde, 0xac, 0xa2, 0x9a, 0xed, 0x0b, 0x6f, 0xd6, 0x3a, 0x39, - 0x3b, 0xbc, 0xb4, 0xd4, 0xbd, 0xe6, 0x66, 0x1d, 0x55, 0xc7, 0x6e, 0xb8, 0x79, 0xdc, 0x83, 0xd4, - 0xae, 0xbe, 0x8a, 0xde, 0x3f, 0x12, 0xd3, 0x11, 0xcf, 0x26, 0x83, 0x1f, 0xf8, 0x47, 0x68, 0xc5, - 0x74, 0x58, 0xfd, 0x6c, 0x8c, 0xde, 0xa1, 0xc4, 0xf6, 0x10, 0xe0, 0x1e, 0xbf, 0x98, 0x4f, 0x47, - 0x92, 0x49, 0x70, 0x08, 0x50, 0xfd, 0x3e, 0xac, 0x04, 0xc4, 0x21, 0x40, 0x0f, 0x00, 0xf6, 0xc6, - 0x05, 0xe7, 0xa8, 0xbd, 0x4a, 0x10, 0xb4, 0xa7, 0x01, 0x9b, 0x45, 0x18, 0x7b, 0x55, 0xa2, 0x0e, - 0x0f, 0xed, 0x59, 0x1d, 0x25, 0x25, 0xb2, 0x88, 0x36, 0x65, 0x3b, 0x77, 0x5d, 0x7d, 0x75, 0xeb, - 0xc8, 0x7c, 0x36, 0x63, 0xc5, 0x12, 0x74, 0x6e, 0x5d, 0x4b, 0x07, 0x20, 0x3a, 0x37, 0x0a, 0xda, - 0x51, 0xdb, 0x3c, 0xe6, 0xf8, 0xfa, 0x40, 0x14, 0x62, 0x2e, 0x93, 0x8c, 0xc3, 0x9b, 0x27, 0xcc, - 0x03, 0x75, 0x19, 0x62, 0xd4, 0x52, 0xac, 0xcd, 0x72, 0x15, 0x51, 0x9f, 0x27, 0x54, 0xf7, 0x57, - 0x97, 0x52, 0x14, 0xf0, 0x7d, 0x62, 0x6d, 0x05, 0x42, 0x44, 0x96, 0x4b, 0xc2, 0xa0, 0xed, 0x4f, - 0x93, 0x6c, 0x8a, 0xb6, 0xfd, 0xa9, 0x7b, 0xfb, 0xeb, 0x3d, 0x1a, 0xb0, 0x03, 0xaa, 0x7e, 0x68, - 0xf5, 0x00, 0xd0, 0xdf, 0x72, 0xa2, 0x0f, 0xdd, 0x25, 0x88, 0x01, 0x85, 0x93, 0xc0, 0xd5, 0xeb, - 0x9c, 0x67, 0x7c, 0xd2, 0x9c, 0x9a, 0xc3, 0x5c, 0x79, 0x44, 0xd0, 0x15, 0x24, 0x6d, 0x2c, 0x52, - 0xf2, 0xb3, 0x79, 0x76, 0x5a, 0x88, 0xcb, 0x24, 0xe5, 0x05, 0x88, 0x45, 0xb5, 0xba, 0x23, 0x27, - 0x62, 0x11, 0xc6, 0xd9, 0xe3, 0x17, 0x4a, 0xea, 0x5d, 0xc2, 0x3e, 0x2e, 0x58, 0x0c, 0x8f, 0x5f, - 0xd4, 0x36, 0xda, 0x18, 0xb1, 0x33, 0x18, 0xc0, 0x9d, 0x44, 0xa7, 0x76, 0x9d, 0x2d, 0x55, 0xff, - 0xd0, 0xdf, 0x12, 0xaa, 0x3b, 0x51, 0x4b, 0x90, 0xe8, 0x68, 0x73, 0x18, 0x49, 0x24, 0x3a, 0x61, - 0x0d, 0x3b, 0x95, 0x28, 0xee, 0x44, 0x1f, 0x2b, 0x02, 0x53, 0x49, 0x6d, 0xa3, 0x11, 0x12, 0x53, - 0x49, 0x0b, 0x02, 0x01, 0xa9, 0x19, 0x06, 0x53, 0x34, 0x20, 0x19, 0x69, 0x30, 0x20, 0xb9, 0x94, - 0x0d, 0x14, 0x87, 0x59, 0x22, 0x13, 0x96, 0x8e, 0xb8, 0x3c, 0x65, 0x05, 0x9b, 0x71, 0xc9, 0x0b, - 0x18, 0x28, 0x34, 0x32, 0xf4, 0x18, 0x22, 0x50, 0x50, 0xac, 0x76, 0xf8, 0x07, 0xd1, 0x87, 0xd5, - 0xbc, 0xcf, 0x33, 0xfd, 0xe7, 0x56, 0x5e, 0xa9, 0xbf, 0xd3, 0x34, 0xf8, 0xc8, 0xd8, 0x18, 0xc9, - 0x82, 0xb3, 0x59, 0x63, 0xfb, 0x03, 0xf3, 0xbb, 0x02, 0x9f, 0xae, 0x54, 0xfd, 0xf9, 0x44, 0xc8, - 0xe4, 0xb2, 0x5a, 0x66, 0xeb, 0x2f, 0x88, 0x40, 0x7f, 0x76, 0xc5, 0xc3, 0xc0, 0x5d, 0x14, 0x18, - 0x67, 0xe3, 0xb4, 0x2b, 0x3d, 0xe3, 0x79, 0x0a, 0xe3, 0xb4, 0xa7, 0xad, 0x00, 0x22, 0x4e, 0xa3, - 0xa0, 0x1d, 0x9c, 0xae, 0x78, 0xcc, 0xc3, 0x95, 0x19, 0xf3, 0x7e, 0x95, 0x19, 0x7b, 0x1f, 0x65, - 0xa4, 0xd1, 0x87, 0xc7, 0x7c, 0x76, 0xc1, 0x8b, 0xf2, 0x2a, 0xc9, 0xa9, 0x7b, 0x5b, 0x2d, 0xd1, - 0x79, 0x6f, 0x2b, 0x81, 0xda, 0x99, 0xc0, 0x02, 0x87, 0xe5, 0x09, 0x9b, 0x71, 0x75, 0xb3, 0x06, - 0x98, 0x09, 0x1c, 0x23, 0x0e, 0x44, 0xcc, 0x04, 0x24, 0xec, 0x7c, 0xdf, 0x65, 0x99, 0x33, 0x3e, - 0xad, 0x7a, 0x58, 0x71, 0xca, 0x96, 0x33, 0x9e, 0x49, 0x6d, 0x12, 0xec, 0xc9, 0x3b, 0x26, 0x71, - 0x9e, 0xd8, 0x93, 0xef, 0xa3, 0xe7, 0x84, 0x26, 0xef, 0xc1, 0x9f, 0x8a, 0x42, 0xd6, 0x7f, 0x4c, - 0xe9, 0xbc, 0x48, 0x41, 0x68, 0xf2, 0x1f, 0xaa, 0x47, 0x12, 0xa1, 0x29, 0xac, 0xe1, 0xfc, 0x15, - 0x02, 0xaf, 0x0c, 0x6f, 0x78, 0x61, 0xfa, 0xc9, 0xab, 0x19, 0x4b, 0x52, 0xdd, 0x1b, 0x7e, 0x14, - 0xb0, 0x4d, 0xe8, 0x10, 0x7f, 0x85, 0xa0, 0xaf, 0xae, 0xf3, 0x77, 0x1b, 0xc2, 0x25, 0x04, 0xaf, - 0x08, 0x3a, 0xec, 0x13, 0xaf, 0x08, 0xba, 0xb5, 0xec, 0xca, 0xdd, 0xb2, 0x8a, 0x5b, 0x2a, 0x62, - 0x57, 0x4c, 0xe0, 0x7e, 0xa1, 0x63, 0x13, 0x80, 0xc4, 0xca, 0x3d, 0xa8, 0x60, 0x53, 0x03, 0x8b, - 0xed, 0x27, 0x19, 0x4b, 0x93, 0x9f, 0xc1, 0xb4, 0xde, 0xb1, 0xd3, 0x10, 0x44, 0x6a, 0x80, 0x93, - 0x98, 0xab, 0x03, 0x2e, 0xc7, 0x49, 0x15, 0xfa, 0xd7, 0x03, 0xcf, 0x4d, 0x11, 0xdd, 0xae, 0x1c, - 0xd2, 0xb9, 0xa3, 0x15, 0x3e, 0xd6, 0x9d, 0x3c, 0x1f, 0x55, 0xb3, 0xea, 0x19, 0x8f, 0x79, 0x92, - 0xcb, 0xc1, 0x8b, 0xf0, 0xb3, 0x02, 0x38, 0x71, 0xd0, 0xa2, 0x87, 0x9a, 0xf3, 0xfa, 0xbe, 0x8a, - 0x25, 0xa3, 0xfa, 0xaf, 0x0c, 0x9e, 0x97, 0xbc, 0xd0, 0x89, 0xc6, 0x01, 0x97, 0x60, 0x74, 0x3a, - 0xdc, 0xd0, 0x01, 0xab, 0x8a, 0x12, 0xa3, 0x33, 0xac, 0x61, 0x37, 0xfb, 0x1c, 0x4e, 0xdf, 0xb9, - 0xad, 0xce, 0x1b, 0x6e, 0x92, 0xc6, 0x1c, 0x8a, 0xd8, 0xec, 0xa3, 0x69, 0x9b, 0xad, 0xb5, 0xdd, - 0xee, 0x64, 0xcb, 0x43, 0x78, 0x64, 0x02, 0xb1, 0xa4, 0x30, 0x22, 0x5b, 0x0b, 0xe0, 0xce, 0x66, - 0x78, 0x21, 0xd8, 0x24, 0x66, 0xa5, 0x3c, 0x65, 0xcb, 0x54, 0xb0, 0x89, 0x9a, 0xd7, 0xe1, 0x66, - 0x78, 0xc3, 0x0c, 0x5d, 0x88, 0xda, 0x0c, 0xa7, 0x60, 0x37, 0x3b, 0x53, 0x7f, 0x3c, 0x51, 0x9f, - 0xe5, 0x84, 0xd9, 0x99, 0x2a, 0x2f, 0x3c, 0xc7, 0xf9, 0x30, 0x0c, 0xd9, 0x6f, 0xd0, 0x6a, 0x91, - 0x4a, 0x43, 0xee, 0x61, 0x3a, 0x5e, 0x02, 0x72, 0x3f, 0x40, 0xd8, 0x7b, 0x29, 0xea, 0xdf, 0x9b, - 0xbf, 0xff, 0x23, 0xf5, 0x4d, 0xd6, 0x9b, 0x98, 0xae, 0x0b, 0x0d, 0xdd, 0x0b, 0xee, 0xb6, 0x7a, - 0xd2, 0x36, 0xcd, 0xdc, 0xbd, 0x62, 0x72, 0x67, 0x32, 0x39, 0xe6, 0x25, 0xf2, 0x41, 0x79, 0x25, - 0x1c, 0x5a, 0x29, 0x91, 0x66, 0xb6, 0x29, 0xdb, 0xd1, 0x2b, 0xd9, 0xab, 0x49, 0x22, 0xb5, 0xac, - 0x39, 0x21, 0xbd, 0xd9, 0x36, 0xd0, 0xa6, 0x88, 0x5a, 0xd1, 0xb4, 0x8d, 0xe5, 0x15, 0x33, 0x16, - 0xd3, 0x69, 0xca, 0x35, 0x74, 0xc6, 0x59, 0x7d, 0x91, 0xdf, 0x76, 0xdb, 0x16, 0x0a, 0x12, 0xb1, - 0x3c, 0xa8, 0x60, 0xd3, 0xc8, 0x0a, 0xab, 0x5f, 0x49, 0x35, 0x0f, 0x76, 0xad, 0x6d, 0xc6, 0x03, - 0x88, 0x34, 0x12, 0x05, 0xed, 0x77, 0x6f, 0x95, 0xf8, 0x80, 0x37, 0x4f, 0x02, 0x5e, 0x41, 0xa4, - 0x94, 0x1d, 0x31, 0xf1, 0xdd, 0x1b, 0x82, 0xd9, 0x75, 0x02, 0xf0, 0xf0, 0x72, 0x79, 0x38, 0x81, - 0xeb, 0x04, 0xa8, 0xaf, 0x18, 0x62, 0x9d, 0x40, 0xb1, 0x7e, 0xd3, 0x99, 0x7d, 0xaf, 0x23, 0x56, - 0xda, 0xca, 0x21, 0x4d, 0x87, 0x82, 0xa1, 0xa6, 0xa3, 0x14, 0xfc, 0x47, 0xea, 0x6e, 0xad, 0x21, - 0x8f, 0x14, 0xdb, 0x57, 0x5b, 0xed, 0xc2, 0x6c, 0x5c, 0x32, 0xeb, 0x49, 0x75, 0x64, 0x09, 0xbf, - 0xc1, 0xbf, 0x16, 0x12, 0x71, 0xa9, 0x05, 0xd5, 0xb6, 0x5f, 0xde, 0xff, 0xef, 0x6f, 0xee, 0xac, - 0xfc, 0xe2, 0x9b, 0x3b, 0x2b, 0xff, 0xfb, 0xcd, 0x9d, 0x95, 0x9f, 0x7f, 0x7b, 0xe7, 0xbd, 0x5f, - 0x7c, 0x7b, 0xe7, 0xbd, 0xff, 0xf9, 0xf6, 0xce, 0x7b, 0x5f, 0xbf, 0xaf, 0xff, 0xa8, 0xee, 0xc5, - 0xff, 0x53, 0x7f, 0x1a, 0xf7, 0xf9, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0xb2, 0x7c, 0x4b, 0xdb, - 0x78, 0x77, 0x00, 0x00, + // 5389 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x9d, 0xdd, 0x6f, 0x24, 0x49, + 0x52, 0xc0, 0xcf, 0x2f, 0x2c, 0xd4, 0x71, 0x0b, 0xf4, 0xc2, 0xb2, 0xb7, 0xdc, 0xcd, 0xcc, 0xce, + 0xce, 0xd8, 0x33, 0x63, 0xbb, 0x3d, 0x3b, 0xb3, 0x1f, 0xa7, 0x3b, 0x24, 0xd4, 0x63, 0x8f, 0xbd, + 0xbe, 0xb3, 0x3d, 0xc6, 0xdd, 0x9e, 0x91, 0x56, 0x42, 0x22, 0xdd, 0x95, 0x6e, 0x17, 0xae, 0xae, + 0xac, 0xab, 0xca, 0x6e, 0x4f, 0x1f, 0x02, 0x81, 0x40, 0x20, 0x10, 0x88, 0x13, 0x5f, 0xaf, 0x48, + 0xfc, 0x35, 0x3c, 0xde, 0x23, 0x8f, 0x68, 0xf7, 0x8d, 0x07, 0xfe, 0x06, 0x54, 0x59, 0x59, 0xf9, + 0x11, 0x15, 0x91, 0x55, 0xbe, 0xa7, 0x19, 0x75, 0xfc, 0x22, 0x22, 0x3f, 0x23, 0x23, 0xb3, 0xb2, + 0xca, 0xd1, 0xdd, 0xfc, 0x62, 0x27, 0x2f, 0x84, 0x14, 0xe5, 0x4e, 0xc9, 0x8b, 0x65, 0x32, 0xe5, + 0xcd, 0xbf, 0x43, 0xf5, 0xf3, 0xe0, 0x1d, 0x96, 0xad, 0xe4, 0x2a, 0xe7, 0x1f, 0x7e, 0x60, 0xc9, + 0xa9, 0x98, 0xcf, 0x59, 0x16, 0x97, 0x35, 0xf2, 0xe1, 0xfb, 0x56, 0xc2, 0x97, 0x3c, 0x93, 0xfa, + 0xf7, 0x67, 0xff, 0xfb, 0x7f, 0x6b, 0xd1, 0xbb, 0xbb, 0x69, 0xc2, 0x33, 0xb9, 0xab, 0x35, 0x06, + 0x5f, 0x45, 0xdf, 0x19, 0xe5, 0xf9, 0x01, 0x97, 0xaf, 0x79, 0x51, 0x26, 0x22, 0x1b, 0x7c, 0x3c, + 0xd4, 0x0e, 0x86, 0x67, 0xf9, 0x74, 0x38, 0xca, 0xf3, 0xa1, 0x15, 0x0e, 0xcf, 0xf8, 0x4f, 0x17, + 0xbc, 0x94, 0x1f, 0x3e, 0x08, 0x43, 0x65, 0x2e, 0xb2, 0x92, 0x0f, 0x2e, 0xa3, 0xdf, 0x1a, 0xe5, + 0xf9, 0x98, 0xcb, 0x3d, 0x5e, 0x55, 0x60, 0x2c, 0x99, 0xe4, 0x83, 0x8d, 0x96, 0xaa, 0x0f, 0x18, + 0x1f, 0x8f, 0xba, 0x41, 0xed, 0x67, 0x12, 0x7d, 0xbb, 0xf2, 0x73, 0xb5, 0x90, 0xb1, 0xb8, 0xc9, + 0x06, 0x1f, 0xb5, 0x15, 0xb5, 0xc8, 0xd8, 0xbe, 0x1f, 0x42, 0xb4, 0xd5, 0x37, 0xd1, 0xaf, 0xbf, + 0x61, 0x69, 0xca, 0xe5, 0x6e, 0xc1, 0xab, 0x82, 0xfb, 0x3a, 0xb5, 0x68, 0x58, 0xcb, 0x8c, 0xdd, + 0x8f, 0x83, 0x8c, 0x36, 0xfc, 0x55, 0xf4, 0x9d, 0x5a, 0x72, 0xc6, 0xa7, 0x62, 0xc9, 0x8b, 0x01, + 0xaa, 0xa5, 0x85, 0x44, 0x93, 0xb7, 0x20, 0x68, 0x7b, 0x57, 0x64, 0x4b, 0x5e, 0x48, 0xdc, 0xb6, + 0x16, 0x86, 0x6d, 0x5b, 0x48, 0xdb, 0xfe, 0xbb, 0xb5, 0xe8, 0x7b, 0xa3, 0xe9, 0x54, 0x2c, 0x32, + 0x79, 0x24, 0xa6, 0x2c, 0x3d, 0x4a, 0xb2, 0xeb, 0x13, 0x7e, 0xb3, 0x7b, 0x55, 0xf1, 0xd9, 0x8c, + 0x0f, 0x9e, 0xfb, 0xad, 0x5a, 0xa3, 0x43, 0xc3, 0x0e, 0x5d, 0xd8, 0xf8, 0xfe, 0xf4, 0x76, 0x4a, + 0xba, 0x2c, 0xff, 0xb4, 0x16, 0xdd, 0x81, 0x65, 0x19, 0x8b, 0x74, 0xc9, 0x6d, 0x69, 0x3e, 0xeb, + 0x30, 0xec, 0xe3, 0xa6, 0x3c, 0x9f, 0xdf, 0x56, 0x4d, 0x97, 0x28, 0x8d, 0xde, 0x73, 0x87, 0xcb, + 0x98, 0x97, 0x6a, 0x3a, 0x3d, 0xa6, 0x47, 0x84, 0x46, 0x8c, 0xe7, 0x27, 0x7d, 0x50, 0xed, 0x2d, + 0x89, 0x06, 0xda, 0x5b, 0x2a, 0x4a, 0xe3, 0xec, 0x11, 0x6a, 0xc1, 0x21, 0x8c, 0xaf, 0xc7, 0x3d, + 0x48, 0xed, 0xea, 0x8f, 0xa3, 0xdf, 0x78, 0x23, 0x8a, 0xeb, 0x32, 0x67, 0x53, 0xae, 0xa7, 0xc2, + 0x43, 0x5f, 0xbb, 0x91, 0xc2, 0xd9, 0xb0, 0xde, 0x85, 0x39, 0x83, 0xb6, 0x11, 0xbe, 0xca, 0x39, + 0x8c, 0x41, 0x56, 0xb1, 0x12, 0x52, 0x83, 0x16, 0x42, 0xda, 0xf6, 0x75, 0x34, 0xb0, 0xb6, 0x2f, + 0xfe, 0x84, 0x4f, 0xe5, 0x28, 0x8e, 0x61, 0xaf, 0x58, 0x5d, 0x45, 0x0c, 0x47, 0x71, 0x4c, 0xf5, + 0x0a, 0x8e, 0x6a, 0x67, 0x37, 0xd1, 0xfb, 0xc0, 0xd9, 0x51, 0x52, 0x2a, 0x87, 0xdb, 0x61, 0x2b, + 0x1a, 0x33, 0x4e, 0x87, 0x7d, 0x71, 0xed, 0xf8, 0x2f, 0xd6, 0xa2, 0xef, 0x22, 0x9e, 0xcf, 0xf8, + 0x5c, 0x2c, 0xf9, 0xe0, 0x69, 0xb7, 0xb5, 0x9a, 0x34, 0xfe, 0x3f, 0xb9, 0x85, 0x06, 0x32, 0x4c, + 0xc6, 0x3c, 0xe5, 0x53, 0x49, 0x0e, 0x93, 0x5a, 0xdc, 0x39, 0x4c, 0x0c, 0xe6, 0xcc, 0xb0, 0x46, + 0x78, 0xc0, 0xe5, 0xee, 0xa2, 0x28, 0x78, 0x26, 0xc9, 0xbe, 0xb4, 0x48, 0x67, 0x5f, 0x7a, 0x28, + 0x52, 0x9f, 0x03, 0x2e, 0x47, 0x69, 0x4a, 0xd6, 0xa7, 0x16, 0x77, 0xd6, 0xc7, 0x60, 0xda, 0xc3, + 0x34, 0xfa, 0x4d, 0xa7, 0xc5, 0xe4, 0x61, 0x76, 0x29, 0x06, 0x74, 0x5b, 0x28, 0xb9, 0xf1, 0xb1, + 0xd1, 0xc9, 0x21, 0xd5, 0x78, 0xf9, 0x36, 0x17, 0x05, 0xdd, 0x2d, 0xb5, 0xb8, 0xb3, 0x1a, 0x06, + 0xd3, 0x1e, 0xfe, 0x28, 0x7a, 0x57, 0x47, 0xc9, 0x66, 0x3d, 0x7b, 0x80, 0x86, 0x50, 0xb8, 0xa0, + 0x3d, 0xec, 0xa0, 0x6c, 0x70, 0xd0, 0x32, 0x1d, 0x7c, 0x3e, 0x46, 0xf5, 0x40, 0xe8, 0x79, 0x10, + 0x86, 0x5a, 0xb6, 0xf7, 0x78, 0xca, 0x49, 0xdb, 0xb5, 0xb0, 0xc3, 0xb6, 0x81, 0xb4, 0xed, 0x22, + 0xfa, 0x1d, 0xd3, 0x2c, 0xd5, 0x3a, 0xaa, 0xe4, 0x55, 0x90, 0xde, 0x24, 0xea, 0xed, 0x42, 0xc6, + 0xd7, 0x56, 0x3f, 0xb8, 0x55, 0x1f, 0x3d, 0x03, 0xf1, 0xfa, 0x80, 0xf9, 0xf7, 0x20, 0x0c, 0x69, + 0xdb, 0x7f, 0xbf, 0x16, 0x7d, 0x5f, 0xcb, 0x5e, 0x66, 0xec, 0x22, 0xe5, 0x6a, 0x49, 0x3c, 0xe1, + 0xf2, 0x46, 0x14, 0xd7, 0xe3, 0x55, 0x36, 0x25, 0x96, 0x7f, 0x1c, 0xee, 0x58, 0xfe, 0x49, 0x25, + 0x5d, 0x98, 0x3f, 0x8d, 0x3e, 0x68, 0x06, 0xc5, 0x15, 0xcb, 0x66, 0xfc, 0xc7, 0xa5, 0xc8, 0x46, + 0x79, 0x32, 0x8a, 0xe3, 0x62, 0x30, 0xc4, 0xbb, 0x1e, 0x72, 0xa6, 0x04, 0x3b, 0xbd, 0x79, 0x27, + 0xdd, 0xd4, 0xad, 0x2c, 0x45, 0x0e, 0xd3, 0xcd, 0xa6, 0xf9, 0xa4, 0xc8, 0xa9, 0x74, 0xd3, 0x47, + 0x5a, 0x56, 0x8f, 0xab, 0x98, 0x8d, 0x5b, 0x3d, 0x76, 0x83, 0xf4, 0xfd, 0x10, 0x62, 0x63, 0x66, + 0xd3, 0x50, 0x22, 0xbb, 0x4c, 0x66, 0xe7, 0x79, 0x5c, 0xcd, 0xa1, 0xc7, 0x78, 0x9d, 0x1d, 0x84, + 0x88, 0x99, 0x04, 0xaa, 0xbd, 0xfd, 0xa3, 0xcd, 0xca, 0xf4, 0x3c, 0xde, 0x2f, 0xc4, 0xfc, 0x88, + 0xcf, 0xd8, 0x74, 0xa5, 0x83, 0xcf, 0xa7, 0xa1, 0x59, 0x0f, 0x69, 0x53, 0x88, 0xcf, 0x6e, 0xa9, + 0xa5, 0xcb, 0xf3, 0x1f, 0x6b, 0xd1, 0x03, 0x6f, 0x9c, 0xe8, 0xc1, 0x54, 0x97, 0x7e, 0x94, 0xc5, + 0x67, 0xbc, 0x94, 0xac, 0x90, 0x83, 0x1f, 0x06, 0xc6, 0x00, 0xa1, 0x63, 0xca, 0xf6, 0xa3, 0x5f, + 0x4a, 0xd7, 0xf6, 0xfa, 0xb8, 0x8a, 0xaa, 0x3a, 0xfe, 0xf8, 0xbd, 0xae, 0x24, 0x30, 0xfa, 0xdc, + 0x0f, 0x21, 0xb6, 0xd7, 0x95, 0xe0, 0x30, 0x5b, 0x26, 0x92, 0x1f, 0xf0, 0x8c, 0x17, 0xed, 0x5e, + 0xaf, 0x55, 0x7d, 0x84, 0xe8, 0x75, 0x02, 0xb5, 0x91, 0xce, 0xf3, 0x66, 0x56, 0xe6, 0xcd, 0x80, + 0x91, 0xd6, 0xda, 0xbc, 0xd5, 0x0f, 0xb6, 0x5b, 0x4b, 0xc7, 0xe7, 0x19, 0x5f, 0x8a, 0x6b, 0xb8, + 0xb5, 0x74, 0x4d, 0xd4, 0x00, 0xb1, 0xb5, 0x44, 0x41, 0xbb, 0x7c, 0x3a, 0x7e, 0x5e, 0x27, 0xfc, + 0x06, 0x2c, 0x9f, 0xae, 0x72, 0x25, 0x26, 0x96, 0x4f, 0x04, 0xd3, 0x1e, 0x4e, 0xa2, 0x5f, 0x53, + 0xc2, 0x1f, 0x8b, 0x24, 0x1b, 0xdc, 0x45, 0x94, 0x2a, 0x81, 0xb1, 0x7a, 0x8f, 0x06, 0x40, 0x89, + 0xab, 0x5f, 0x77, 0x59, 0x36, 0xe5, 0x29, 0x5a, 0x62, 0x2b, 0x0e, 0x96, 0xd8, 0xc3, 0x6c, 0xde, + 0xa2, 0x84, 0x55, 0xfc, 0x1a, 0x5f, 0xb1, 0x22, 0xc9, 0x66, 0x03, 0x4c, 0xd7, 0x91, 0x13, 0x79, + 0x0b, 0xc6, 0x81, 0x21, 0xac, 0x15, 0x47, 0x79, 0x5e, 0x54, 0x61, 0x11, 0x1b, 0xc2, 0x3e, 0x12, + 0x1c, 0xc2, 0x2d, 0x14, 0xf7, 0xb6, 0xc7, 0xa7, 0x69, 0x92, 0x05, 0xbd, 0x69, 0xa4, 0x8f, 0x37, + 0x8b, 0x82, 0xc1, 0x7b, 0xc4, 0xd9, 0x92, 0x37, 0x35, 0xc3, 0x5a, 0xc6, 0x05, 0x82, 0x83, 0x17, + 0x80, 0x76, 0x93, 0xa8, 0xc4, 0xc7, 0xec, 0x9a, 0x57, 0x0d, 0xcc, 0xab, 0x45, 0x75, 0x80, 0xe9, + 0x7b, 0x04, 0xb1, 0x49, 0xc4, 0x49, 0xed, 0x6a, 0x11, 0xbd, 0xaf, 0xe4, 0xa7, 0xac, 0x90, 0xc9, + 0x34, 0xc9, 0x59, 0xd6, 0x6c, 0x3e, 0xb0, 0x79, 0xdd, 0xa2, 0x8c, 0xcb, 0xed, 0x9e, 0xb4, 0x76, + 0xfb, 0xef, 0x6b, 0xd1, 0x47, 0xd0, 0xef, 0x29, 0x2f, 0xe6, 0x89, 0xda, 0xc3, 0x96, 0x75, 0x10, + 0x1e, 0x7c, 0x11, 0x36, 0xda, 0x52, 0x30, 0xa5, 0xf9, 0xc1, 0xed, 0x15, 0x6d, 0x26, 0x36, 0xd6, + 0x79, 0xfd, 0xab, 0x22, 0x6e, 0x9d, 0xf1, 0x8c, 0x9b, 0x64, 0x5d, 0x09, 0x89, 0x4c, 0xac, 0x05, + 0x81, 0x19, 0x7e, 0x9e, 0x95, 0x8d, 0x75, 0x6c, 0x86, 0x5b, 0x71, 0x70, 0x86, 0x7b, 0x98, 0x9d, + 0xe1, 0xa7, 0x8b, 0x8b, 0x34, 0x29, 0xaf, 0x92, 0x6c, 0xa6, 0xd3, 0x6e, 0x5f, 0xd7, 0x8a, 0x61, + 0xe6, 0xbd, 0xd1, 0xc9, 0x61, 0x4e, 0xf4, 0x60, 0x21, 0x9d, 0x80, 0x61, 0xb2, 0xd1, 0xc9, 0xd9, + 0xcd, 0x89, 0x95, 0x56, 0xdb, 0x56, 0xb0, 0x39, 0x71, 0x54, 0x2b, 0x29, 0xb1, 0x39, 0x69, 0x53, + 0xda, 0xbc, 0x88, 0x7e, 0xdb, 0xad, 0x43, 0x29, 0xd2, 0x25, 0x3f, 0x2f, 0x92, 0xc1, 0x13, 0xba, + 0x7c, 0x0d, 0x63, 0x5c, 0x6d, 0xf6, 0x62, 0x6d, 0xa0, 0xb2, 0xc4, 0x01, 0x97, 0x63, 0xc9, 0xe4, + 0xa2, 0x04, 0x81, 0xca, 0xb1, 0x61, 0x10, 0x22, 0x50, 0x11, 0xa8, 0xf6, 0xf6, 0x87, 0x51, 0x54, + 0xef, 0xf8, 0xd5, 0xa9, 0x8c, 0xbf, 0xf6, 0xe8, 0xa3, 0x00, 0xef, 0x48, 0xe6, 0xa3, 0x00, 0x61, + 0x13, 0x9e, 0xfa, 0x77, 0x75, 0xd8, 0x34, 0x40, 0x35, 0x94, 0x88, 0x48, 0x78, 0x00, 0x02, 0x0b, + 0x3a, 0xbe, 0x12, 0x37, 0x78, 0x41, 0x2b, 0x49, 0xb8, 0xa0, 0x9a, 0xb0, 0xc7, 0xbf, 0xba, 0xa0, + 0xd8, 0xf1, 0x6f, 0x53, 0x8c, 0xd0, 0xf1, 0x2f, 0x64, 0xec, 0x98, 0x71, 0x0d, 0xbf, 0x10, 0xe2, + 0x7a, 0xce, 0x8a, 0x6b, 0x30, 0x66, 0x3c, 0xe5, 0x86, 0x21, 0xc6, 0x0c, 0xc5, 0xda, 0x31, 0xe3, + 0x3a, 0xac, 0xd2, 0xe5, 0xf3, 0x22, 0x05, 0x63, 0xc6, 0xb3, 0xa1, 0x11, 0x62, 0xcc, 0x10, 0xa8, + 0x8d, 0x4e, 0xae, 0xb7, 0x31, 0x87, 0x07, 0x0e, 0x9e, 0xfa, 0x98, 0x53, 0x07, 0x0e, 0x08, 0x06, + 0x87, 0xd0, 0x41, 0xc1, 0xf2, 0x2b, 0x7c, 0x08, 0x29, 0x51, 0x78, 0x08, 0x35, 0x08, 0xec, 0xef, + 0x31, 0x67, 0xc5, 0xf4, 0x0a, 0xef, 0xef, 0x5a, 0x16, 0xee, 0x6f, 0xc3, 0xc0, 0xfe, 0xae, 0x05, + 0x6f, 0x12, 0x79, 0x75, 0xcc, 0x25, 0xc3, 0xfb, 0xdb, 0x67, 0xc2, 0xfd, 0xdd, 0x62, 0x6d, 0x3e, + 0xee, 0x3a, 0x1c, 0x2f, 0x2e, 0xca, 0x69, 0x91, 0x5c, 0xf0, 0x41, 0xc0, 0x8a, 0x81, 0x88, 0x7c, + 0x9c, 0x84, 0xb5, 0xcf, 0x9f, 0xaf, 0x45, 0x77, 0x9b, 0x6e, 0x17, 0x65, 0xa9, 0xd7, 0x3e, 0xdf, + 0xfd, 0x67, 0x78, 0xff, 0x12, 0x38, 0x71, 0x20, 0xdf, 0x43, 0xcd, 0xc9, 0x0d, 0xf0, 0x22, 0x9d, + 0x67, 0xa5, 0x29, 0xd4, 0x17, 0x7d, 0xac, 0x3b, 0x0a, 0x44, 0x6e, 0xd0, 0x4b, 0xd1, 0xa6, 0x65, + 0xba, 0x7f, 0x1a, 0xd9, 0x61, 0x5c, 0x82, 0xb4, 0xac, 0x69, 0x6f, 0x87, 0x20, 0xd2, 0x32, 0x9c, + 0x84, 0x43, 0xe1, 0xa0, 0x10, 0x8b, 0xbc, 0xec, 0x18, 0x0a, 0x00, 0x0a, 0x0f, 0x85, 0x36, 0xac, + 0x7d, 0xbe, 0x8d, 0x7e, 0xd7, 0x1d, 0x7e, 0x6e, 0x63, 0x6f, 0xd3, 0x63, 0x0a, 0x6b, 0xe2, 0x61, + 0x5f, 0xdc, 0x66, 0x14, 0x8d, 0x67, 0xb9, 0xc7, 0x25, 0x4b, 0xd2, 0x72, 0xb0, 0x8e, 0xdb, 0x68, + 0xe4, 0x44, 0x46, 0x81, 0x71, 0x30, 0xbe, 0xed, 0x2d, 0xf2, 0x34, 0x99, 0xb6, 0x1f, 0x87, 0x68, + 0x5d, 0x23, 0x0e, 0xc7, 0x37, 0x17, 0x83, 0xf1, 0xba, 0x4a, 0xfd, 0xd4, 0x7f, 0x26, 0xab, 0x9c, + 0xe3, 0xf1, 0xda, 0x43, 0xc2, 0xf1, 0x1a, 0xa2, 0xb0, 0x3e, 0x63, 0x2e, 0x8f, 0xd8, 0x4a, 0x2c, + 0x88, 0x78, 0x6d, 0xc4, 0xe1, 0xfa, 0xb8, 0x98, 0xdd, 0x1b, 0x18, 0x0f, 0x87, 0x99, 0xe4, 0x45, + 0xc6, 0xd2, 0xfd, 0x94, 0xcd, 0xca, 0x01, 0x11, 0x63, 0x7c, 0x8a, 0xd8, 0x1b, 0xd0, 0x34, 0xd2, + 0x8c, 0x87, 0xe5, 0x3e, 0x5b, 0x8a, 0x22, 0x91, 0x74, 0x33, 0x5a, 0xa4, 0xb3, 0x19, 0x3d, 0x14, + 0xf5, 0x36, 0x2a, 0xa6, 0x57, 0xc9, 0x92, 0xc7, 0x01, 0x6f, 0x0d, 0xd2, 0xc3, 0x9b, 0x83, 0x22, + 0x9d, 0x36, 0x16, 0x8b, 0x62, 0xca, 0xc9, 0x4e, 0xab, 0xc5, 0x9d, 0x9d, 0x66, 0x30, 0xed, 0xe1, + 0xaf, 0xd7, 0xa2, 0xdf, 0xab, 0xa5, 0xee, 0x33, 0x8a, 0x3d, 0x56, 0x5e, 0x5d, 0x08, 0x56, 0xc4, + 0x83, 0x4f, 0x30, 0x3b, 0x28, 0x6a, 0x5c, 0x3f, 0xbb, 0x8d, 0x0a, 0x6c, 0xd6, 0x2a, 0xef, 0xb6, + 0x33, 0x0e, 0x6d, 0x56, 0x0f, 0x09, 0x37, 0x2b, 0x44, 0x61, 0x00, 0x51, 0xf2, 0xfa, 0x48, 0x6e, + 0x9d, 0xd4, 0xf7, 0xcf, 0xe5, 0x36, 0x3a, 0x39, 0x18, 0x1f, 0x2b, 0xa1, 0x3f, 0x5a, 0xb6, 0x29, + 0x1b, 0xf8, 0x88, 0x19, 0xf6, 0xc5, 0x49, 0xcf, 0x66, 0x56, 0x84, 0x3d, 0xb7, 0x66, 0xc6, 0xb0, + 0x2f, 0x4e, 0x78, 0x76, 0xc2, 0x5a, 0xc8, 0x33, 0x12, 0xda, 0x86, 0x7d, 0x71, 0x98, 0x7d, 0x69, + 0xa6, 0x59, 0x17, 0x9e, 0x04, 0xec, 0xc0, 0xb5, 0x61, 0xb3, 0x17, 0xab, 0x1d, 0xfe, 0xed, 0x5a, + 0xf4, 0x3d, 0xeb, 0xf1, 0x58, 0xc4, 0xc9, 0xe5, 0xaa, 0x86, 0x5e, 0xb3, 0x74, 0xc1, 0xcb, 0xc1, + 0x33, 0xca, 0x5a, 0x9b, 0x35, 0x25, 0x78, 0x7e, 0x2b, 0x1d, 0x38, 0x77, 0x46, 0x79, 0x9e, 0xae, + 0x26, 0x7c, 0x9e, 0xa7, 0xe4, 0xdc, 0xf1, 0x90, 0xf0, 0xdc, 0x81, 0x28, 0xcc, 0xca, 0x27, 0xa2, + 0xca, 0xf9, 0xd1, 0xac, 0x5c, 0x89, 0xc2, 0x59, 0x79, 0x83, 0xc0, 0x5c, 0x69, 0x22, 0x76, 0x45, + 0x9a, 0xf2, 0xa9, 0x6c, 0xdf, 0x73, 0x30, 0x9a, 0x96, 0x08, 0xe7, 0x4a, 0x80, 0xb4, 0xa7, 0x72, + 0xcd, 0x1e, 0x92, 0x15, 0xfc, 0xc5, 0xea, 0x28, 0xc9, 0xae, 0x07, 0x78, 0x5a, 0x60, 0x01, 0xe2, + 0x54, 0x0e, 0x05, 0xe1, 0x5e, 0xf5, 0x3c, 0x8b, 0x05, 0xbe, 0x57, 0xad, 0x24, 0xe1, 0xbd, 0xaa, + 0x26, 0xa0, 0xc9, 0x33, 0x4e, 0x99, 0xac, 0x24, 0x61, 0x93, 0x9a, 0xc0, 0x42, 0xa1, 0x7e, 0x76, + 0x43, 0x86, 0x42, 0xf0, 0xb4, 0x66, 0xa3, 0x93, 0x83, 0x23, 0xb4, 0xd9, 0xb4, 0xee, 0x73, 0x39, + 0xbd, 0xc2, 0x47, 0xa8, 0x87, 0x84, 0x47, 0x28, 0x44, 0x61, 0x95, 0x26, 0xc2, 0x6c, 0xba, 0xd7, + 0xf1, 0xf1, 0xd1, 0xda, 0x70, 0x6f, 0x74, 0x72, 0x70, 0x1b, 0x79, 0x38, 0x57, 0x6d, 0x86, 0x0e, + 0xf2, 0x5a, 0x16, 0xde, 0x46, 0x1a, 0x06, 0x96, 0xbe, 0x16, 0xa8, 0xb3, 0xac, 0x75, 0x5a, 0xd1, + 0x3b, 0xcd, 0xda, 0xe8, 0xe4, 0xb4, 0x93, 0x7f, 0x35, 0xdb, 0xb8, 0x5a, 0x7a, 0x22, 0xaa, 0x39, + 0xf2, 0x9a, 0xa5, 0x49, 0xcc, 0x24, 0x9f, 0x88, 0x6b, 0x9e, 0xe1, 0x3b, 0x26, 0x5d, 0xda, 0x9a, + 0x1f, 0x7a, 0x0a, 0xe1, 0x1d, 0x53, 0x58, 0x11, 0x8e, 0x93, 0x9a, 0x3e, 0x2f, 0xf9, 0x2e, 0x2b, + 0x89, 0x48, 0xe6, 0x21, 0xe1, 0x71, 0x02, 0x51, 0x98, 0xaf, 0xd6, 0xf2, 0x97, 0x6f, 0x73, 0x5e, + 0x24, 0x3c, 0x9b, 0x72, 0x3c, 0x5f, 0x85, 0x54, 0x38, 0x5f, 0x45, 0x68, 0xb8, 0x57, 0xdb, 0x63, + 0x92, 0xbf, 0x58, 0x4d, 0x92, 0x39, 0x2f, 0x25, 0x9b, 0xe7, 0xf8, 0x5e, 0x0d, 0x40, 0xe1, 0xbd, + 0x5a, 0x1b, 0x6e, 0x1d, 0x0d, 0x99, 0x80, 0xd8, 0xbe, 0x1e, 0x05, 0x89, 0xc0, 0xf5, 0x28, 0x02, + 0x85, 0x0d, 0x6b, 0x01, 0xf4, 0x21, 0x41, 0xcb, 0x4a, 0xf0, 0x21, 0x01, 0x4d, 0xb7, 0x0e, 0xdc, + 0x0c, 0x33, 0xae, 0xa6, 0x66, 0x47, 0xd1, 0xc7, 0xee, 0x14, 0xdd, 0xec, 0xc5, 0xe2, 0x27, 0x7c, + 0x67, 0x3c, 0x65, 0x6a, 0xd9, 0x0a, 0x1c, 0xa3, 0x35, 0x4c, 0x9f, 0x13, 0x3e, 0x87, 0xd5, 0x0e, + 0xff, 0x72, 0x2d, 0xfa, 0x10, 0xf3, 0xf8, 0x2a, 0x57, 0x7e, 0x9f, 0x76, 0xdb, 0xaa, 0x49, 0xe2, + 0xfe, 0x57, 0x58, 0xc3, 0x5e, 0xc9, 0x68, 0x44, 0xf6, 0x7a, 0x98, 0x2e, 0x80, 0x9f, 0xb4, 0x99, + 0xf2, 0x43, 0x8e, 0xb8, 0x92, 0x11, 0xe2, 0xed, 0x7e, 0xc8, 0x2f, 0x57, 0x09, 0xf6, 0x43, 0xc6, + 0x86, 0x16, 0x13, 0xfb, 0x21, 0x04, 0xb3, 0xb3, 0xd3, 0xad, 0xde, 0x9b, 0x44, 0x5e, 0xa9, 0x7c, + 0x0b, 0xcc, 0x4e, 0xaf, 0xac, 0x06, 0x22, 0x66, 0x27, 0x09, 0xc3, 0x8c, 0xa4, 0x01, 0xab, 0xb9, + 0x89, 0xc5, 0x72, 0x63, 0xc8, 0x9d, 0x99, 0x8f, 0xba, 0x41, 0x38, 0x5e, 0x1b, 0xb1, 0xde, 0xfa, + 0x3c, 0x09, 0x59, 0x00, 0xdb, 0x9f, 0xcd, 0x5e, 0xac, 0x76, 0xf8, 0xe7, 0xd1, 0x77, 0x5b, 0x15, + 0xdb, 0xe7, 0x4c, 0x2e, 0x0a, 0x1e, 0x0f, 0x76, 0x3a, 0xca, 0xdd, 0x80, 0xc6, 0xf5, 0xd3, 0xfe, + 0x0a, 0xad, 0x1c, 0xbd, 0xe1, 0xea, 0x61, 0x65, 0xca, 0xf0, 0x2c, 0x64, 0xd2, 0x67, 0x83, 0x39, + 0x3a, 0xad, 0xd3, 0xda, 0x66, 0xbb, 0xa3, 0x6b, 0xb4, 0x64, 0x49, 0xaa, 0x1e, 0xd6, 0x7e, 0x12, + 0x32, 0xea, 0xa1, 0xc1, 0x6d, 0x36, 0xa9, 0xd2, 0x8a, 0xcc, 0x6a, 0x8e, 0x3b, 0xdb, 0xb3, 0x2d, + 0x3a, 0x12, 0x20, 0xbb, 0xb3, 0xed, 0x9e, 0xb4, 0x76, 0x2b, 0x9b, 0x25, 0xaf, 0xfa, 0xd9, 0x1d, + 0xe4, 0x98, 0x57, 0xad, 0x8a, 0x8c, 0xf4, 0xed, 0x9e, 0xb4, 0xf6, 0xfa, 0x67, 0xd1, 0x07, 0x6d, + 0xaf, 0x7a, 0x21, 0xda, 0xe9, 0x34, 0x05, 0xd6, 0xa2, 0xa7, 0xfd, 0x15, 0xec, 0x96, 0xe6, 0xcb, + 0xa4, 0x94, 0xa2, 0x58, 0x8d, 0xaf, 0xc4, 0x4d, 0xf3, 0xda, 0x85, 0x3f, 0x5b, 0x35, 0x30, 0x74, + 0x08, 0x62, 0x4b, 0x83, 0x93, 0x2d, 0x57, 0xf6, 0xf5, 0x8c, 0x92, 0x70, 0xe5, 0x10, 0x1d, 0xae, + 0x7c, 0xd2, 0xc6, 0xaa, 0xa6, 0x56, 0xf6, 0x5d, 0x92, 0x0d, 0xbc, 0xa8, 0xed, 0xf7, 0x49, 0x1e, + 0x75, 0x83, 0x36, 0x63, 0xd1, 0xe2, 0xbd, 0xe4, 0xf2, 0xd2, 0xd4, 0x09, 0x2f, 0xa9, 0x8b, 0x10, + 0x19, 0x0b, 0x81, 0xda, 0xa4, 0x7b, 0x3f, 0x49, 0xb9, 0x3a, 0xd1, 0x7f, 0x75, 0x79, 0x99, 0x0a, + 0x16, 0x83, 0xa4, 0xbb, 0x12, 0x0f, 0x5d, 0x39, 0x91, 0x74, 0x63, 0x9c, 0xbd, 0x2b, 0x50, 0x49, + 0xcf, 0xf8, 0x54, 0x64, 0xd3, 0x24, 0x85, 0xb7, 0x50, 0x95, 0xa6, 0x11, 0x12, 0x77, 0x05, 0x5a, + 0x90, 0x5d, 0x18, 0x2b, 0x51, 0x35, 0xed, 0x9b, 0xf2, 0x3f, 0x6c, 0x2b, 0x3a, 0x62, 0x62, 0x61, + 0x44, 0x30, 0xbb, 0xf7, 0xac, 0x84, 0xe7, 0xb9, 0x32, 0x7e, 0xaf, 0xad, 0x55, 0x4b, 0x88, 0xbd, + 0xa7, 0x4f, 0xd8, 0x3d, 0x54, 0xf5, 0xfb, 0x9e, 0xb8, 0xc9, 0x94, 0xd1, 0xfb, 0x6d, 0x95, 0x46, + 0x46, 0xec, 0xa1, 0x20, 0xa3, 0x0d, 0xff, 0x24, 0xfa, 0x55, 0x65, 0xb8, 0x10, 0xf9, 0xe0, 0x0e, + 0xa2, 0x50, 0x38, 0x77, 0x36, 0xef, 0x92, 0x72, 0x7b, 0xb5, 0xc0, 0x8c, 0x8d, 0xf3, 0x92, 0xcd, + 0xf8, 0xe0, 0x01, 0xd1, 0xe3, 0x4a, 0x4a, 0x5c, 0x2d, 0x68, 0x53, 0xfe, 0xa8, 0x38, 0x11, 0xb1, + 0xb6, 0x8e, 0xd4, 0xd0, 0x08, 0x43, 0xa3, 0xc2, 0x85, 0x6c, 0x32, 0x73, 0xc2, 0x96, 0xc9, 0xcc, + 0x2c, 0x38, 0x75, 0xdc, 0x2a, 0x41, 0x32, 0x63, 0x99, 0xa1, 0x03, 0x11, 0xc9, 0x0c, 0x09, 0x6b, + 0x9f, 0xff, 0xb2, 0x16, 0xdd, 0xb3, 0xcc, 0x41, 0x73, 0x5a, 0x77, 0x98, 0x5d, 0x8a, 0x2a, 0xf5, + 0x39, 0x4a, 0xb2, 0xeb, 0x72, 0xf0, 0x39, 0x65, 0x12, 0xe7, 0x4d, 0x51, 0xbe, 0xb8, 0xb5, 0x9e, + 0xcd, 0x5a, 0x9b, 0xa3, 0x2c, 0xfb, 0x3c, 0xbb, 0xd6, 0x00, 0x59, 0xab, 0x39, 0xf1, 0x82, 0x1c, + 0x91, 0xb5, 0x86, 0x78, 0xdb, 0xc5, 0xc6, 0x79, 0x2a, 0x32, 0xd8, 0xc5, 0xd6, 0x42, 0x25, 0x24, + 0xba, 0xb8, 0x05, 0xd9, 0x78, 0xdc, 0x88, 0xea, 0x53, 0x97, 0x51, 0x9a, 0x82, 0x78, 0x6c, 0x54, + 0x0d, 0x40, 0xc4, 0x63, 0x14, 0xd4, 0x7e, 0xce, 0xa2, 0x6f, 0x57, 0x4d, 0x7a, 0x5a, 0xf0, 0x65, + 0xc2, 0xe1, 0xd5, 0x0b, 0x47, 0x42, 0xcc, 0x7f, 0x9f, 0xb0, 0x33, 0xeb, 0x3c, 0x2b, 0xf3, 0x94, + 0x95, 0x57, 0xfa, 0x61, 0xbc, 0x5f, 0xe7, 0x46, 0x08, 0x1f, 0xc7, 0x3f, 0xec, 0xa0, 0x6c, 0x50, + 0x6f, 0x64, 0x26, 0xc4, 0xac, 0xe3, 0xaa, 0xad, 0x30, 0xb3, 0xd1, 0xc9, 0xd9, 0x13, 0xef, 0x03, + 0x96, 0xa6, 0xbc, 0x58, 0x35, 0xb2, 0x63, 0x96, 0x25, 0x97, 0xbc, 0x94, 0xe0, 0xc4, 0x5b, 0x53, + 0x43, 0x88, 0x11, 0x27, 0xde, 0x01, 0xdc, 0x66, 0xf3, 0xc0, 0xf3, 0x61, 0x16, 0xf3, 0xb7, 0x20, + 0x9b, 0x87, 0x76, 0x14, 0x43, 0x64, 0xf3, 0x14, 0x6b, 0x4f, 0x7e, 0x5f, 0xa4, 0x62, 0x7a, 0xad, + 0x97, 0x00, 0xbf, 0x83, 0x95, 0x04, 0xae, 0x01, 0xf7, 0x43, 0x88, 0x5d, 0x04, 0x94, 0xe0, 0x8c, + 0xe7, 0x29, 0x9b, 0xc2, 0xfb, 0x37, 0xb5, 0x8e, 0x96, 0x11, 0x8b, 0x00, 0x64, 0x40, 0x71, 0xf5, + 0xbd, 0x1e, 0xac, 0xb8, 0xe0, 0x5a, 0xcf, 0xfd, 0x10, 0x62, 0x97, 0x41, 0x25, 0x18, 0xe7, 0x69, + 0x22, 0xc1, 0x34, 0xa8, 0x35, 0x94, 0x84, 0x98, 0x06, 0x3e, 0x01, 0x4c, 0x1e, 0xf3, 0x62, 0xc6, + 0x51, 0x93, 0x4a, 0x12, 0x34, 0xd9, 0x10, 0xf6, 0xb2, 0x71, 0x5d, 0x77, 0x91, 0xaf, 0xc0, 0x65, + 0x63, 0x5d, 0x2d, 0x91, 0xaf, 0x88, 0xcb, 0xc6, 0x1e, 0x00, 0x8a, 0x78, 0xca, 0x4a, 0x89, 0x17, + 0x51, 0x49, 0x82, 0x45, 0x6c, 0x08, 0xbb, 0x46, 0xd7, 0x45, 0x5c, 0x48, 0xb0, 0x46, 0xeb, 0x02, + 0x38, 0x4f, 0xa0, 0xef, 0x92, 0x72, 0x1b, 0x49, 0xea, 0x5e, 0xe1, 0x72, 0x3f, 0xe1, 0x69, 0x5c, + 0x82, 0x48, 0xa2, 0xdb, 0xbd, 0x91, 0x12, 0x91, 0xa4, 0x4d, 0x81, 0xa1, 0xa4, 0xcf, 0xc7, 0xb1, + 0xda, 0x81, 0xa3, 0xf1, 0xfb, 0x21, 0xc4, 0xc6, 0xa7, 0xa6, 0xd0, 0xbb, 0xac, 0x28, 0x92, 0x6a, + 0xf1, 0x5f, 0xc7, 0x0b, 0xd4, 0xc8, 0x89, 0xf8, 0x84, 0x71, 0x60, 0x7a, 0x35, 0x81, 0x1b, 0x2b, + 0x18, 0x0c, 0xdd, 0x1f, 0x07, 0x19, 0x9b, 0x71, 0x2a, 0x89, 0xf3, 0x08, 0x15, 0x6b, 0x4d, 0xe4, + 0x09, 0xea, 0x7a, 0x17, 0xe6, 0xbc, 0x89, 0x64, 0x5c, 0x1c, 0x8b, 0x25, 0x9f, 0x88, 0x97, 0x6f, + 0x93, 0x52, 0x26, 0xd9, 0x4c, 0xaf, 0xdc, 0xcf, 0x09, 0x4b, 0x18, 0x4c, 0xbc, 0x89, 0xd4, 0xa9, + 0x64, 0x13, 0x08, 0x50, 0x96, 0x13, 0x7e, 0x83, 0x26, 0x10, 0xd0, 0xa2, 0xe1, 0x88, 0x04, 0x22, + 0xc4, 0xdb, 0x73, 0x14, 0xe3, 0x5c, 0xbf, 0xae, 0x3d, 0x11, 0x4d, 0x2e, 0x47, 0x59, 0x83, 0x20, + 0xb1, 0x95, 0x0d, 0x2a, 0xd8, 0xfd, 0xa5, 0xf1, 0x6f, 0xa7, 0xd8, 0x23, 0xc2, 0x4e, 0x7b, 0x9a, + 0x3d, 0xee, 0x41, 0x22, 0xae, 0xec, 0x3d, 0x00, 0xca, 0x55, 0xfb, 0x1a, 0xc0, 0xe3, 0x1e, 0xa4, + 0x73, 0x26, 0xe3, 0x56, 0xeb, 0x05, 0x9b, 0x5e, 0xcf, 0x0a, 0xb1, 0xc8, 0xe2, 0x5d, 0x91, 0x8a, + 0x02, 0x9c, 0xc9, 0x78, 0xa5, 0x06, 0x28, 0x71, 0x26, 0xd3, 0xa1, 0x62, 0x33, 0x38, 0xb7, 0x14, + 0xa3, 0x34, 0x99, 0xc1, 0x1d, 0xb5, 0x67, 0x48, 0x01, 0x44, 0x06, 0x87, 0x82, 0xc8, 0x20, 0xaa, + 0x77, 0xdc, 0x32, 0x99, 0xb2, 0xb4, 0xf6, 0xb7, 0x43, 0x9b, 0xf1, 0xc0, 0xce, 0x41, 0x84, 0x28, + 0x20, 0xf5, 0x9c, 0x2c, 0x8a, 0xec, 0x30, 0x93, 0x82, 0xac, 0x67, 0x03, 0x74, 0xd6, 0xd3, 0x01, + 0x41, 0x58, 0x9d, 0xf0, 0xb7, 0x55, 0x69, 0xaa, 0x7f, 0xb0, 0xb0, 0x5a, 0xfd, 0x3e, 0xd4, 0xf2, + 0x50, 0x58, 0x05, 0x1c, 0xa8, 0x8c, 0x76, 0x52, 0x0f, 0x98, 0x80, 0xb6, 0x3f, 0x4c, 0x1e, 0x75, + 0x83, 0xb8, 0x9f, 0xb1, 0x5c, 0xa5, 0x3c, 0xe4, 0x47, 0x01, 0x7d, 0xfc, 0x34, 0xa0, 0x3d, 0x6e, + 0xf1, 0xea, 0x73, 0xc5, 0xa7, 0xd7, 0xad, 0x6b, 0x4d, 0x7e, 0x41, 0x6b, 0x84, 0x38, 0x6e, 0x21, + 0x50, 0xbc, 0x8b, 0x0e, 0xa7, 0x22, 0x0b, 0x75, 0x51, 0x25, 0xef, 0xd3, 0x45, 0x9a, 0xb3, 0x9b, + 0x5f, 0x23, 0xd5, 0x23, 0xb3, 0xee, 0xa6, 0x4d, 0xc2, 0x82, 0x0b, 0x11, 0x9b, 0x5f, 0x12, 0xb6, + 0x39, 0x39, 0xf4, 0x79, 0xdc, 0xbe, 0xf3, 0xdd, 0xb2, 0x72, 0x4c, 0xdf, 0xf9, 0xa6, 0x58, 0xba, + 0x92, 0xf5, 0x18, 0xe9, 0xb0, 0xe2, 0x8f, 0x93, 0xad, 0x7e, 0xb0, 0xdd, 0xf2, 0x78, 0x3e, 0x77, + 0x53, 0xce, 0x8a, 0xda, 0xeb, 0x76, 0xc0, 0x90, 0xc5, 0x88, 0x2d, 0x4f, 0x00, 0x07, 0x21, 0xcc, + 0xf3, 0xbc, 0x2b, 0x32, 0xc9, 0x33, 0x89, 0x85, 0x30, 0xdf, 0x98, 0x06, 0x43, 0x21, 0x8c, 0x52, + 0x00, 0xe3, 0x56, 0x9d, 0x07, 0x71, 0x79, 0xc2, 0xe6, 0x68, 0xc6, 0x56, 0x9f, 0xf5, 0xd4, 0xf2, + 0xd0, 0xb8, 0x05, 0x9c, 0xf3, 0x90, 0xcf, 0xf5, 0x32, 0x61, 0xc5, 0xcc, 0x9c, 0x6e, 0xc4, 0x83, + 0xa7, 0xb4, 0x1d, 0x9f, 0x24, 0x1e, 0xf2, 0x85, 0x35, 0x40, 0xd8, 0x39, 0x9c, 0xb3, 0x99, 0xa9, + 0x29, 0x52, 0x03, 0x25, 0x6f, 0x55, 0xf5, 0x51, 0x37, 0x08, 0xfc, 0xbc, 0x4e, 0x62, 0x2e, 0x02, + 0x7e, 0x94, 0xbc, 0x8f, 0x1f, 0x08, 0x82, 0xec, 0xad, 0xaa, 0x77, 0xbd, 0xa3, 0x1b, 0x65, 0xb1, + 0xde, 0xc7, 0x0e, 0x89, 0xe6, 0x01, 0x5c, 0x28, 0x7b, 0x23, 0x78, 0x30, 0x47, 0x9b, 0x03, 0xda, + 0xd0, 0x1c, 0x35, 0xe7, 0xaf, 0x7d, 0xe6, 0x28, 0x06, 0x6b, 0x9f, 0x3f, 0xd3, 0x73, 0x74, 0x8f, + 0x49, 0x56, 0xe5, 0xed, 0xaf, 0x13, 0x7e, 0xa3, 0x37, 0xc2, 0x48, 0x7d, 0x1b, 0x6a, 0xa8, 0x5e, + 0x59, 0x05, 0xbb, 0xe2, 0x9d, 0xde, 0x7c, 0xc0, 0xb7, 0xde, 0x21, 0x74, 0xfa, 0x06, 0x5b, 0x85, + 0x9d, 0xde, 0x7c, 0xc0, 0xb7, 0x7e, 0x17, 0xbe, 0xd3, 0x37, 0x78, 0x21, 0x7e, 0xa7, 0x37, 0xaf, + 0x7d, 0xff, 0x55, 0x33, 0x71, 0x5d, 0xe7, 0x55, 0x1e, 0x36, 0x95, 0xc9, 0x92, 0x63, 0xe9, 0xa4, + 0x6f, 0xcf, 0xa0, 0xa1, 0x74, 0x92, 0x56, 0x71, 0xbe, 0xde, 0x84, 0x95, 0xe2, 0x54, 0x94, 0x89, + 0x7a, 0x48, 0xff, 0xbc, 0x87, 0xd1, 0x06, 0x0e, 0x6d, 0x9a, 0x42, 0x4a, 0xf6, 0x71, 0xa3, 0x87, + 0xda, 0x5b, 0xcc, 0x5b, 0x01, 0x7b, 0xed, 0xcb, 0xcc, 0xdb, 0x3d, 0x69, 0xfb, 0xe0, 0xcf, 0x63, + 0xdc, 0x27, 0x8e, 0xa1, 0x5e, 0x45, 0x1f, 0x3a, 0x3e, 0xed, 0xaf, 0xa0, 0xdd, 0xff, 0x4d, 0xb3, + 0xaf, 0x80, 0xfe, 0xf5, 0x24, 0x78, 0xd6, 0xc7, 0x22, 0x98, 0x08, 0xcf, 0x6f, 0xa5, 0xa3, 0x0b, + 0xf2, 0x0f, 0xcd, 0x06, 0xba, 0x41, 0xd5, 0xbb, 0x1c, 0xea, 0x1d, 0x50, 0x3d, 0x27, 0x42, 0xdd, + 0x6a, 0x61, 0x38, 0x33, 0x3e, 0xbb, 0xa5, 0x96, 0xf3, 0x2d, 0x2f, 0x0f, 0xd6, 0xef, 0x1c, 0x3a, + 0xe5, 0x09, 0x59, 0x76, 0x68, 0x58, 0xa0, 0xcf, 0x6f, 0xab, 0x46, 0xcd, 0x15, 0x07, 0x56, 0x5f, + 0xe7, 0x78, 0xde, 0xd3, 0xb0, 0xf7, 0xbd, 0x8e, 0x4f, 0x6f, 0xa7, 0xa4, 0xcb, 0xf2, 0x9f, 0x6b, + 0xd1, 0x43, 0x8f, 0xb5, 0xcf, 0x13, 0xc0, 0xa9, 0xc7, 0x8f, 0x02, 0xf6, 0x29, 0x25, 0x53, 0xb8, + 0xdf, 0xff, 0xe5, 0x94, 0xed, 0x87, 0xaf, 0x3c, 0x95, 0xfd, 0x24, 0x95, 0xbc, 0x68, 0x7f, 0xf8, + 0xca, 0xb7, 0x5b, 0x53, 0x43, 0xfa, 0xc3, 0x57, 0x01, 0xdc, 0xf9, 0xf0, 0x15, 0xe2, 0x19, 0xfd, + 0xf0, 0x15, 0x6a, 0x2d, 0xf8, 0xe1, 0xab, 0xb0, 0x06, 0x15, 0xde, 0x9b, 0x22, 0xd4, 0xe7, 0xd6, + 0xbd, 0x2c, 0xfa, 0xc7, 0xd8, 0xcf, 0x6e, 0xa3, 0x42, 0x2c, 0x70, 0x35, 0xa7, 0xee, 0xb9, 0xf5, + 0x68, 0x53, 0xef, 0xae, 0xdb, 0x4e, 0x6f, 0x5e, 0xfb, 0xfe, 0xa9, 0xde, 0xdd, 0x98, 0x70, 0x2e, + 0x0a, 0xf5, 0xd1, 0xb3, 0xcd, 0x50, 0x78, 0xae, 0x2c, 0xb8, 0x3d, 0xbf, 0xd5, 0x0f, 0x26, 0xaa, + 0x5b, 0x11, 0xba, 0xd3, 0x87, 0x5d, 0x86, 0x40, 0x97, 0xef, 0xf4, 0xe6, 0x89, 0x65, 0xa4, 0xf6, + 0x5d, 0xf7, 0x76, 0x0f, 0x63, 0x7e, 0x5f, 0x3f, 0xed, 0xaf, 0xa0, 0xdd, 0x2f, 0x75, 0xda, 0xe8, + 0xba, 0x57, 0xfd, 0xbc, 0xdd, 0x65, 0x6a, 0xec, 0x75, 0xf3, 0xb0, 0x2f, 0x1e, 0x4a, 0x20, 0xdc, + 0x25, 0xb4, 0x2b, 0x81, 0x40, 0x97, 0xd1, 0x4f, 0x6f, 0xa7, 0xa4, 0xcb, 0xf2, 0xcf, 0x6b, 0xd1, + 0x5d, 0xb2, 0x2c, 0x7a, 0x1c, 0x7c, 0xde, 0xd7, 0x32, 0x18, 0x0f, 0x5f, 0xdc, 0x5a, 0x4f, 0x17, + 0xea, 0xdf, 0xd6, 0xa2, 0x7b, 0x81, 0x42, 0xd5, 0x03, 0xe4, 0x16, 0xd6, 0xfd, 0x81, 0xf2, 0x83, + 0xdb, 0x2b, 0x52, 0xcb, 0xbd, 0x8b, 0x8f, 0xdb, 0x1f, 0x65, 0x0a, 0xd8, 0x1e, 0xd3, 0x1f, 0x65, + 0xea, 0xd6, 0x82, 0x87, 0x3c, 0xec, 0xa2, 0xd9, 0x74, 0xa1, 0x87, 0x3c, 0xea, 0x86, 0x5a, 0xf0, + 0xe3, 0x12, 0x18, 0x87, 0x39, 0x79, 0xf9, 0x36, 0x67, 0x59, 0x4c, 0x3b, 0xa9, 0xe5, 0xdd, 0x4e, + 0x0c, 0x07, 0x0f, 0xc7, 0x2a, 0xe9, 0x99, 0x68, 0x36, 0x52, 0x8f, 0x29, 0x7d, 0x83, 0x04, 0x0f, + 0xc7, 0x5a, 0x28, 0xe1, 0x4d, 0x67, 0x8d, 0x21, 0x6f, 0x20, 0x59, 0x7c, 0xd2, 0x07, 0x05, 0x29, + 0xba, 0xf1, 0x66, 0xce, 0xdc, 0xb7, 0x42, 0x56, 0x5a, 0xe7, 0xee, 0xdb, 0x3d, 0x69, 0xc2, 0xed, + 0x98, 0xcb, 0x2f, 0x39, 0x8b, 0x79, 0x11, 0x74, 0x6b, 0xa8, 0x5e, 0x6e, 0x5d, 0x1a, 0x73, 0xbb, + 0x2b, 0xd2, 0xc5, 0x3c, 0xd3, 0x9d, 0x49, 0xba, 0x75, 0xa9, 0x6e, 0xb7, 0x80, 0x86, 0xc7, 0x82, + 0xd6, 0xad, 0x4a, 0x2f, 0x9f, 0x84, 0xcd, 0x78, 0x59, 0xe5, 0x66, 0x2f, 0x96, 0xae, 0xa7, 0x1e, + 0x46, 0x1d, 0xf5, 0x04, 0x23, 0x69, 0xbb, 0x27, 0x0d, 0xcf, 0xe7, 0x1c, 0xb7, 0x66, 0x3c, 0xed, + 0x74, 0xd8, 0x6a, 0x0d, 0xa9, 0xa7, 0xfd, 0x15, 0xe0, 0x69, 0xa8, 0x1e, 0x55, 0x47, 0x49, 0x29, + 0xf7, 0x93, 0x34, 0x1d, 0x6c, 0x06, 0x86, 0x49, 0x03, 0x05, 0x4f, 0x43, 0x11, 0x98, 0x18, 0xc9, + 0xcd, 0xe9, 0x61, 0x36, 0xe8, 0xb2, 0xa3, 0xa8, 0x5e, 0x23, 0xd9, 0xa5, 0xc1, 0x89, 0x96, 0xd3, + 0xd4, 0xa6, 0xb6, 0xc3, 0x70, 0xc3, 0xb5, 0x2a, 0xbc, 0xd3, 0x9b, 0x07, 0x8f, 0xdb, 0x15, 0xa5, + 0x56, 0x96, 0x07, 0x94, 0x09, 0x6f, 0x25, 0x79, 0xd8, 0x41, 0x81, 0x53, 0xc1, 0x7a, 0x1a, 0xbd, + 0x49, 0xe2, 0x19, 0x97, 0xe8, 0x93, 0x22, 0x17, 0x08, 0x3e, 0x29, 0x02, 0x20, 0xe8, 0xba, 0xfa, + 0x77, 0x73, 0x1c, 0x7a, 0x18, 0x63, 0x5d, 0xa7, 0x95, 0x1d, 0x2a, 0xd4, 0x75, 0x28, 0x0d, 0xa2, + 0x81, 0x71, 0xab, 0x5f, 0xc7, 0x7f, 0x12, 0x32, 0x03, 0xde, 0xc9, 0xdf, 0xec, 0xc5, 0x82, 0x15, + 0xc5, 0x3a, 0x4c, 0xe6, 0x89, 0xc4, 0x56, 0x14, 0xc7, 0x46, 0x85, 0x84, 0x56, 0x94, 0x36, 0x4a, + 0x55, 0xaf, 0xca, 0x11, 0x0e, 0xe3, 0x70, 0xf5, 0x6a, 0xa6, 0x5f, 0xf5, 0x0c, 0xdb, 0x7a, 0xb0, + 0x99, 0x99, 0x21, 0x23, 0xaf, 0xf4, 0x66, 0x19, 0x19, 0xdb, 0xea, 0x35, 0x4d, 0x08, 0x86, 0xa2, + 0x0e, 0xa5, 0x00, 0x0f, 0xec, 0x2b, 0xae, 0x79, 0xf6, 0x9a, 0xe7, 0x9c, 0x15, 0x2c, 0x9b, 0xa2, + 0x9b, 0x53, 0x65, 0xb0, 0x45, 0x86, 0x36, 0xa7, 0xa4, 0x06, 0x78, 0x6c, 0xee, 0xbf, 0x60, 0x89, + 0x4c, 0x05, 0xf3, 0x26, 0xa3, 0xff, 0x7e, 0xe5, 0xe3, 0x1e, 0x24, 0x7c, 0x6c, 0xde, 0x00, 0xe6, + 0xe0, 0xbb, 0x76, 0xfa, 0x49, 0xc0, 0x94, 0x8f, 0x86, 0x36, 0xc2, 0xb4, 0x0a, 0x18, 0xd4, 0x26, + 0xc1, 0xe5, 0xf2, 0x27, 0x7c, 0x85, 0x0d, 0x6a, 0x9b, 0x9f, 0x2a, 0x24, 0x34, 0xa8, 0xdb, 0x28, + 0xc8, 0x33, 0xdd, 0x7d, 0xd0, 0x7a, 0x40, 0xdf, 0xdd, 0xfa, 0x6c, 0x74, 0x72, 0x60, 0xe6, 0xec, + 0x25, 0x4b, 0xef, 0x39, 0x01, 0x52, 0xd0, 0xbd, 0x64, 0x89, 0x3f, 0x26, 0xd8, 0xec, 0xc5, 0xc2, + 0x47, 0xf2, 0x4c, 0xf2, 0xb7, 0xcd, 0xb3, 0x72, 0xa4, 0xb8, 0x4a, 0xde, 0x7a, 0x58, 0xfe, 0xa8, + 0x1b, 0xb4, 0x17, 0x60, 0x4f, 0x0b, 0x31, 0xe5, 0x65, 0xa9, 0xbf, 0x54, 0xe9, 0xdf, 0x30, 0xd2, + 0xb2, 0x21, 0xf8, 0x4e, 0xe5, 0x83, 0x30, 0xe4, 0x7c, 0x5e, 0xae, 0x16, 0xd9, 0xaf, 0xde, 0xac, + 0xa3, 0x9a, 0xed, 0x0f, 0xde, 0x6c, 0x74, 0x72, 0x76, 0x7a, 0x69, 0xa9, 0xfb, 0x99, 0x9b, 0x47, + 0xa8, 0x3a, 0xf6, 0x85, 0x9b, 0xc7, 0x3d, 0x48, 0xed, 0xea, 0xcb, 0xe8, 0x9d, 0x23, 0x31, 0x1b, + 0xf3, 0x2c, 0x1e, 0x7c, 0xdf, 0xbf, 0x42, 0x2b, 0x66, 0xc3, 0xea, 0x67, 0x63, 0xf4, 0x0e, 0x25, + 0xb6, 0x97, 0x00, 0xf7, 0xf8, 0xc5, 0x62, 0x36, 0x96, 0x4c, 0x82, 0x4b, 0x80, 0xea, 0xf7, 0x61, + 0x25, 0x20, 0x2e, 0x01, 0x7a, 0x00, 0xb0, 0x37, 0x29, 0x38, 0x47, 0xed, 0x55, 0x82, 0xa0, 0x3d, + 0x0d, 0xd8, 0x2c, 0xc2, 0xd8, 0xab, 0x12, 0x75, 0x78, 0x69, 0xcf, 0xea, 0x28, 0x29, 0x91, 0x45, + 0xb4, 0x29, 0x3b, 0xb8, 0xeb, 0xea, 0xab, 0xaf, 0x8e, 0x2c, 0xe6, 0x73, 0x56, 0xac, 0xc0, 0xe0, + 0xd6, 0xb5, 0x74, 0x00, 0x62, 0x70, 0xa3, 0xa0, 0x9d, 0xb5, 0x4d, 0x33, 0x4f, 0xaf, 0x0f, 0x44, + 0x21, 0x16, 0x32, 0xc9, 0x38, 0xfc, 0xf2, 0x84, 0x69, 0x50, 0x97, 0x21, 0x66, 0x2d, 0xc5, 0xda, + 0x2c, 0x57, 0x11, 0xf5, 0x7d, 0x42, 0xf5, 0xf1, 0xec, 0x52, 0x8a, 0x02, 0x3e, 0x4f, 0xac, 0xad, + 0x40, 0x88, 0xc8, 0x72, 0x49, 0x18, 0xf4, 0xfd, 0x69, 0x92, 0xcd, 0xd0, 0xbe, 0x3f, 0x75, 0xbf, + 0xfe, 0x7a, 0x8f, 0x06, 0xec, 0x84, 0xaa, 0x1b, 0xad, 0x9e, 0x00, 0xfa, 0x5d, 0x4e, 0xb4, 0xd1, + 0x5d, 0x82, 0x98, 0x50, 0x38, 0x09, 0x5c, 0xbd, 0xca, 0x79, 0xc6, 0xe3, 0xe6, 0xd6, 0x1c, 0xe6, + 0xca, 0x23, 0x82, 0xae, 0x20, 0x69, 0x63, 0x91, 0x92, 0x9f, 0x2d, 0xb2, 0xd3, 0x42, 0x5c, 0x26, + 0x29, 0x2f, 0x40, 0x2c, 0xaa, 0xd5, 0x1d, 0x39, 0x11, 0x8b, 0x30, 0xce, 0x5e, 0xbf, 0x50, 0x52, + 0xef, 0x0b, 0xf0, 0x93, 0x82, 0x4d, 0xe1, 0xf5, 0x8b, 0xda, 0x46, 0x1b, 0x23, 0x4e, 0x06, 0x03, + 0xb8, 0x93, 0xe8, 0xd4, 0xae, 0xb3, 0x95, 0x1a, 0x1f, 0xfa, 0x5d, 0x42, 0xf5, 0x4d, 0xd4, 0x12, + 0x24, 0x3a, 0xda, 0x1c, 0x46, 0x12, 0x89, 0x4e, 0x58, 0xc3, 0x2e, 0x25, 0x8a, 0x3b, 0xd1, 0xd7, + 0x8a, 0xc0, 0x52, 0x52, 0xdb, 0x68, 0x84, 0xc4, 0x52, 0xd2, 0x82, 0x40, 0x40, 0x6a, 0xa6, 0xc1, + 0x0c, 0x0d, 0x48, 0x46, 0x1a, 0x0c, 0x48, 0x2e, 0x65, 0x03, 0xc5, 0x61, 0x96, 0xc8, 0x84, 0xa5, + 0x63, 0x2e, 0x4f, 0x59, 0xc1, 0xe6, 0x5c, 0xf2, 0x02, 0x06, 0x0a, 0x8d, 0x0c, 0x3d, 0x86, 0x08, + 0x14, 0x14, 0xab, 0x1d, 0xfe, 0x41, 0xf4, 0x5e, 0xb5, 0xee, 0xf3, 0x4c, 0xff, 0xad, 0x97, 0x97, + 0xea, 0x8f, 0x44, 0x0d, 0xde, 0x37, 0x36, 0xc6, 0xb2, 0xe0, 0x6c, 0xde, 0xd8, 0x7e, 0xd7, 0xfc, + 0xae, 0xc0, 0xa7, 0x6b, 0xd5, 0x78, 0x3e, 0x11, 0x32, 0xb9, 0xac, 0xb6, 0xd9, 0xfa, 0x0d, 0x22, + 0x30, 0x9e, 0x5d, 0xf1, 0x30, 0xf0, 0x2d, 0x0a, 0x8c, 0xb3, 0x71, 0xda, 0x95, 0x9e, 0xf1, 0x3c, + 0x85, 0x71, 0xda, 0xd3, 0x56, 0x00, 0x11, 0xa7, 0x51, 0xd0, 0x4e, 0x4e, 0x57, 0x3c, 0xe1, 0xe1, + 0xca, 0x4c, 0x78, 0xbf, 0xca, 0x4c, 0xbc, 0x97, 0x32, 0xd2, 0xe8, 0xbd, 0x63, 0x3e, 0xbf, 0xe0, + 0x45, 0x79, 0x95, 0xe4, 0xd4, 0x77, 0x5b, 0x2d, 0xd1, 0xf9, 0xdd, 0x56, 0x02, 0xb5, 0x2b, 0x81, + 0x05, 0x0e, 0xcb, 0x13, 0x36, 0xe7, 0xea, 0xcb, 0x1a, 0x60, 0x25, 0x70, 0x8c, 0x38, 0x10, 0xb1, + 0x12, 0x90, 0xb0, 0xf3, 0x7e, 0x97, 0x65, 0xce, 0xf8, 0xac, 0x1a, 0x61, 0xc5, 0x29, 0x5b, 0xcd, + 0x79, 0x26, 0xb5, 0x49, 0x70, 0x26, 0xef, 0x98, 0xc4, 0x79, 0xe2, 0x4c, 0xbe, 0x8f, 0x9e, 0x13, + 0x9a, 0xbc, 0x86, 0x3f, 0x15, 0x85, 0xac, 0xff, 0x92, 0xd3, 0x79, 0x91, 0x82, 0xd0, 0xe4, 0x37, + 0xaa, 0x47, 0x12, 0xa1, 0x29, 0xac, 0xe1, 0xfc, 0x15, 0x02, 0xaf, 0x0c, 0xaf, 0x79, 0x61, 0xc6, + 0xc9, 0xcb, 0x39, 0x4b, 0x52, 0x3d, 0x1a, 0x7e, 0x18, 0xb0, 0x4d, 0xe8, 0x10, 0x7f, 0x85, 0xa0, + 0xaf, 0xae, 0xf3, 0x77, 0x1b, 0xc2, 0x25, 0x04, 0x8f, 0x08, 0x3a, 0xec, 0x13, 0x8f, 0x08, 0xba, + 0xb5, 0xec, 0xce, 0xdd, 0xb2, 0x8a, 0x5b, 0x29, 0x62, 0x57, 0xc4, 0xf0, 0xbc, 0xd0, 0xb1, 0x09, + 0x40, 0x62, 0xe7, 0x1e, 0x54, 0xb0, 0xa9, 0x81, 0xc5, 0xf6, 0x93, 0x8c, 0xa5, 0xc9, 0xcf, 0x60, + 0x5a, 0xef, 0xd8, 0x69, 0x08, 0x22, 0x35, 0xc0, 0x49, 0xcc, 0xd5, 0x01, 0x97, 0x93, 0xa4, 0x0a, + 0xfd, 0x8f, 0x02, 0xed, 0xa6, 0x88, 0x6e, 0x57, 0x0e, 0xe9, 0x7c, 0xa3, 0x15, 0x36, 0xeb, 0x28, + 0xcf, 0xc7, 0xd5, 0xaa, 0x7a, 0xc6, 0xa7, 0x3c, 0xc9, 0xe5, 0xe0, 0xb3, 0x70, 0x5b, 0x01, 0x9c, + 0xb8, 0x68, 0xd1, 0x43, 0xcd, 0x79, 0x7c, 0x5f, 0xc5, 0x92, 0x71, 0xfd, 0x27, 0x0e, 0xcf, 0x4b, + 0x5e, 0xe8, 0x44, 0xe3, 0x80, 0x4b, 0x30, 0x3b, 0x1d, 0x6e, 0xe8, 0x80, 0x55, 0x45, 0x89, 0xd9, + 0x19, 0xd6, 0xb0, 0x87, 0x7d, 0x0e, 0xa7, 0xbf, 0xb9, 0xad, 0xee, 0x1b, 0x6e, 0x91, 0xc6, 0x1c, + 0x8a, 0x38, 0xec, 0xa3, 0x69, 0x9b, 0xad, 0xb5, 0xdd, 0x8e, 0xb2, 0xd5, 0x21, 0xbc, 0x32, 0x81, + 0x58, 0x52, 0x18, 0x91, 0xad, 0x05, 0x70, 0xe7, 0x30, 0xbc, 0x10, 0x2c, 0x9e, 0xb2, 0x52, 0x9e, + 0xb2, 0x55, 0x2a, 0x58, 0xac, 0xd6, 0x75, 0x78, 0x18, 0xde, 0x30, 0x43, 0x17, 0xa2, 0x0e, 0xc3, + 0x29, 0xd8, 0xcd, 0xce, 0xd4, 0x5f, 0x6e, 0xd4, 0x77, 0x39, 0x61, 0x76, 0xa6, 0xca, 0x0b, 0xef, + 0x71, 0x3e, 0x08, 0x43, 0xf6, 0x1d, 0xb4, 0x5a, 0xa4, 0xd2, 0x90, 0x7b, 0x98, 0x8e, 0x97, 0x80, + 0x7c, 0x14, 0x20, 0xec, 0x77, 0x29, 0xea, 0xdf, 0x9b, 0x3f, 0x3e, 0x24, 0xf5, 0x97, 0xac, 0xb7, + 0x30, 0x5d, 0x17, 0x1a, 0xba, 0x1f, 0xb8, 0xdb, 0xee, 0x49, 0xdb, 0x34, 0x73, 0xf7, 0x8a, 0xc9, + 0x51, 0x1c, 0x1f, 0xf3, 0x12, 0x79, 0xa1, 0xbc, 0x12, 0x0e, 0xad, 0x94, 0x48, 0x33, 0xdb, 0x94, + 0x1d, 0xe8, 0x95, 0xec, 0x65, 0x9c, 0x48, 0x2d, 0x6b, 0x6e, 0x48, 0x6f, 0xb5, 0x0d, 0xb4, 0x29, + 0xa2, 0x56, 0x34, 0x6d, 0x63, 0x79, 0xc5, 0x4c, 0xc4, 0x6c, 0x96, 0x72, 0x0d, 0x9d, 0x71, 0x56, + 0x7f, 0xc8, 0x6f, 0xa7, 0x6d, 0x0b, 0x05, 0x89, 0x58, 0x1e, 0x54, 0xb0, 0x69, 0x64, 0x85, 0xd5, + 0x8f, 0xa4, 0x9a, 0x86, 0xdd, 0x68, 0x9b, 0xf1, 0x00, 0x22, 0x8d, 0x44, 0x41, 0xfb, 0xde, 0x5b, + 0x25, 0x3e, 0xe0, 0x4d, 0x4b, 0xc0, 0x4f, 0x10, 0x29, 0x65, 0x47, 0x4c, 0xbc, 0xf7, 0x86, 0x60, + 0x76, 0x9f, 0x00, 0x3c, 0xbc, 0x58, 0x1d, 0xc6, 0x70, 0x9f, 0x00, 0xf5, 0x15, 0x43, 0xec, 0x13, + 0x28, 0xd6, 0xef, 0x3a, 0x73, 0xee, 0x75, 0xc4, 0x4a, 0x5b, 0x39, 0xa4, 0xeb, 0x50, 0x30, 0xd4, + 0x75, 0x94, 0x82, 0xdf, 0xa4, 0xee, 0xd1, 0x1a, 0xd2, 0xa4, 0xd8, 0xb9, 0xda, 0x7a, 0x17, 0x66, + 0xe3, 0x92, 0xd9, 0x4f, 0xaa, 0x2b, 0x4b, 0xf8, 0x17, 0xfc, 0x6b, 0x21, 0x11, 0x97, 0x5a, 0x50, + 0x6d, 0xfb, 0xc5, 0x47, 0xff, 0xf5, 0xf5, 0x9d, 0xb5, 0x5f, 0x7c, 0x7d, 0x67, 0xed, 0x7f, 0xbe, + 0xbe, 0xb3, 0xf6, 0xf3, 0x6f, 0xee, 0x7c, 0xeb, 0x17, 0xdf, 0xdc, 0xf9, 0xd6, 0x7f, 0x7f, 0x73, + 0xe7, 0x5b, 0x5f, 0xbd, 0xa3, 0xff, 0xa2, 0xef, 0xc5, 0xaf, 0xa8, 0xbf, 0xcb, 0xfb, 0xfc, 0xff, + 0x03, 0x00, 0x00, 0xff, 0xff, 0xda, 0x50, 0xa4, 0x4a, 0xf5, 0x77, 0x00, 0x00, } // This is a compile-time assertion to ensure that this generated file @@ -403,6 +404,7 @@ type ClientCommandsHandler interface { AccountRevertDeletion(context.Context, *pb.RpcAccountRevertDeletionRequest) *pb.RpcAccountRevertDeletionResponse AccountSelect(context.Context, *pb.RpcAccountSelectRequest) *pb.RpcAccountSelectResponse AccountEnableLocalNetworkSync(context.Context, *pb.RpcAccountEnableLocalNetworkSyncRequest) *pb.RpcAccountEnableLocalNetworkSyncResponse + AccountChangeJsonApiAddr(context.Context, *pb.RpcAccountChangeJsonApiAddrRequest) *pb.RpcAccountChangeJsonApiAddrResponse AccountStop(context.Context, *pb.RpcAccountStopRequest) *pb.RpcAccountStopResponse AccountMove(context.Context, *pb.RpcAccountMoveRequest) *pb.RpcAccountMoveResponse AccountConfigUpdate(context.Context, *pb.RpcAccountConfigUpdateRequest) *pb.RpcAccountConfigUpdateResponse @@ -1235,6 +1237,26 @@ func AccountEnableLocalNetworkSync(b []byte) (resp []byte) { return resp } +func AccountChangeJsonApiAddr(b []byte) (resp []byte) { + defer func() { + if PanicHandler != nil { + if r := recover(); r != nil { + resp, _ = (&pb.RpcAccountChangeJsonApiAddrResponse{Error: &pb.RpcAccountChangeJsonApiAddrResponseError{Code: pb.RpcAccountChangeJsonApiAddrResponseError_UNKNOWN_ERROR, Description: "panic recovered"}}).Marshal() + PanicHandler(r) + } + } + }() + + in := new(pb.RpcAccountChangeJsonApiAddrRequest) + if err := in.Unmarshal(b); err != nil { + resp, _ = (&pb.RpcAccountChangeJsonApiAddrResponse{Error: &pb.RpcAccountChangeJsonApiAddrResponseError{Code: pb.RpcAccountChangeJsonApiAddrResponseError_BAD_INPUT, Description: err.Error()}}).Marshal() + return resp + } + + resp, _ = clientCommandsHandler.AccountChangeJsonApiAddr(context.Background(), in).Marshal() + return resp +} + func AccountStop(b []byte) (resp []byte) { defer func() { if PanicHandler != nil { @@ -6253,6 +6275,8 @@ func CommandAsync(cmd string, data []byte, callback func(data []byte)) { cd = AccountSelect(data) case "AccountEnableLocalNetworkSync": cd = AccountEnableLocalNetworkSync(data) + case "AccountChangeJsonApiAddr": + cd = AccountChangeJsonApiAddr(data) case "AccountStop": cd = AccountStop(data) case "AccountMove": @@ -7135,6 +7159,20 @@ func (h *ClientCommandsHandlerProxy) AccountEnableLocalNetworkSync(ctx context.C call, _ := actualCall(ctx, req) return call.(*pb.RpcAccountEnableLocalNetworkSyncResponse) } +func (h *ClientCommandsHandlerProxy) AccountChangeJsonApiAddr(ctx context.Context, req *pb.RpcAccountChangeJsonApiAddrRequest) *pb.RpcAccountChangeJsonApiAddrResponse { + actualCall := func(ctx context.Context, req any) (any, error) { + return h.client.AccountChangeJsonApiAddr(ctx, req.(*pb.RpcAccountChangeJsonApiAddrRequest)), nil + } + for _, interceptor := range h.interceptors { + toCall := actualCall + currentInterceptor := interceptor + actualCall = func(ctx context.Context, req any) (any, error) { + return currentInterceptor(ctx, req, "AccountChangeJsonApiAddr", toCall) + } + } + call, _ := actualCall(ctx, req) + return call.(*pb.RpcAccountChangeJsonApiAddrResponse) +} func (h *ClientCommandsHandlerProxy) AccountStop(ctx context.Context, req *pb.RpcAccountStopRequest) *pb.RpcAccountStopResponse { actualCall := func(ctx context.Context, req any) (any, error) { return h.client.AccountStop(ctx, req.(*pb.RpcAccountStopRequest)), nil diff --git a/core/account.go b/core/account.go index fa243b00e..52b2f275a 100644 --- a/core/account.go +++ b/core/account.go @@ -198,6 +198,19 @@ func (mw *Middleware) AccountEnableLocalNetworkSync(_ context.Context, req *pb.R } } +func (mw *Middleware) AccountChangeJsonApiAddr(ctx context.Context, req *pb.RpcAccountChangeJsonApiAddrRequest) *pb.RpcAccountChangeJsonApiAddrResponse { + err := mw.applicationService.AccountChangeJsonApiAddr(ctx, req.ListenAddr) + code := mapErrorCode(err, + errToCode(application.ErrApplicationIsNotRunning, pb.RpcAccountChangeJsonApiAddrResponseError_ACCOUNT_IS_NOT_RUNNING), + ) + return &pb.RpcAccountChangeJsonApiAddrResponse{ + Error: &pb.RpcAccountChangeJsonApiAddrResponseError{ + Code: code, + Description: getErrorDescription(err), + }, + } +} + func (mw *Middleware) AccountLocalLinkNewChallenge(ctx context.Context, request *pb.RpcAccountLocalLinkNewChallengeRequest) *pb.RpcAccountLocalLinkNewChallengeResponse { info := getClientInfo(ctx) diff --git a/core/anytype/config/config.go b/core/anytype/config/config.go index 6c4bd90f0..61c2e141f 100644 --- a/core/anytype/config/config.go +++ b/core/anytype/config/config.go @@ -74,6 +74,7 @@ type Config struct { NetworkCustomConfigFilePath string `json:",omitempty"` // not saved to config SqliteTempPath string `json:",omitempty"` // not saved to config AnyStoreConfig *anystore.Config `json:",omitempty"` // not saved to config + JsonApiListenAddr string `json:",omitempty"` // empty means disabled RepoPath string AnalyticsId string diff --git a/core/api/server/middleware.go b/core/api/server/middleware.go index b1604a6a2..da05740b8 100644 --- a/core/api/server/middleware.go +++ b/core/api/server/middleware.go @@ -6,7 +6,6 @@ import ( "net/http" "strings" - "github.com/anyproto/any-sync/app" "github.com/didip/tollbooth/v8" "github.com/didip/tollbooth/v8/limiter" "github.com/gin-gonic/gin" @@ -75,14 +74,9 @@ func (s *Server) ensureAuthenticated(mw service.ClientCommandsServer) gin.Handle } // ensureAccountInfo is a middleware that ensures the account info is available in the services. -func (s *Server) ensureAccountInfo(a *app.App) gin.HandlerFunc { +func (s *Server) ensureAccountInfo(accountService account.Service) gin.HandlerFunc { return func(c *gin.Context) { - if a == nil { - c.AbortWithStatusJSON(http.StatusForbidden, gin.H{"error": "failed to get app instance"}) - return - } - - accInfo, err := a.Component(account.CName).(account.Service).GetInfo(context.Background()) + accInfo, err := accountService.GetInfo(context.Background()) if err != nil { c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"error": fmt.Sprintf("failed to get account info: %v", err)}) return diff --git a/core/api/server/router.go b/core/api/server/router.go index 0cacec0d4..09aa81078 100644 --- a/core/api/server/router.go +++ b/core/api/server/router.go @@ -1,11 +1,13 @@ package server import ( - "github.com/anyproto/any-sync/app" + "os" + "github.com/gin-gonic/gin" swaggerFiles "github.com/swaggo/files" ginSwagger "github.com/swaggo/gin-swagger" + "github.com/anyproto/anytype-heart/core/anytype/account" "github.com/anyproto/anytype-heart/core/api/pagination" "github.com/anyproto/anytype-heart/core/api/services/auth" "github.com/anyproto/anytype-heart/core/api/services/export" @@ -24,9 +26,18 @@ const ( ) // NewRouter builds and returns a *gin.Engine with all routes configured. -func (s *Server) NewRouter(a *app.App, mw service.ClientCommandsServer) *gin.Engine { - router := gin.Default() +func (s *Server) NewRouter(accountService account.Service, mw service.ClientCommandsServer) *gin.Engine { + debug := os.Getenv("ANYTYPE_API_DEBUG") == "1" + if !debug { + gin.SetMode(gin.ReleaseMode) + } + router := gin.New() + router.Use(gin.Recovery()) + + if debug { + router.Use(gin.Logger()) + } paginator := pagination.New(pagination.Config{ DefaultPage: defaultPage, DefaultPageSize: defaultPageSize, @@ -48,7 +59,7 @@ func (s *Server) NewRouter(a *app.App, mw service.ClientCommandsServer) *gin.Eng v1 := router.Group("/v1") v1.Use(paginator) v1.Use(s.ensureAuthenticated(mw)) - v1.Use(s.ensureAccountInfo(a)) + v1.Use(s.ensureAccountInfo(accountService)) { // Export v1.POST("/spaces/:space_id/objects/:object_id/export/:format", export.GetObjectExportHandler(s.exportService)) diff --git a/core/api/server/server.go b/core/api/server/server.go index ae69f8204..c178ef40d 100644 --- a/core/api/server/server.go +++ b/core/api/server/server.go @@ -3,9 +3,9 @@ package server import ( "sync" - "github.com/anyproto/any-sync/app" "github.com/gin-gonic/gin" + "github.com/anyproto/anytype-heart/core/anytype/account" "github.com/anyproto/anytype-heart/core/api/services/auth" "github.com/anyproto/anytype-heart/core/api/services/export" "github.com/anyproto/anytype-heart/core/api/services/object" @@ -29,7 +29,7 @@ type Server struct { } // NewServer constructs a new Server with default config and sets up the routes. -func NewServer(a *app.App, mw service.ClientCommandsServer) *Server { +func NewServer(accountService account.Service, mw service.ClientCommandsServer) *Server { s := &Server{ authService: auth.NewService(mw), exportService: export.NewService(mw), @@ -38,7 +38,7 @@ func NewServer(a *app.App, mw service.ClientCommandsServer) *Server { s.objectService = object.NewService(mw, s.spaceService) s.searchService = search.NewService(mw, s.spaceService, s.objectService) - s.engine = s.NewRouter(a, mw) + s.engine = s.NewRouter(accountService, mw) s.KeyToToken = make(map[string]string) return s diff --git a/core/api/service.go b/core/api/service.go index 1becdd27d..84cd86be3 100644 --- a/core/api/service.go +++ b/core/api/service.go @@ -5,18 +5,20 @@ import ( "errors" "fmt" "net/http" + "sync" "time" "github.com/anyproto/any-sync/app" + "github.com/anyproto/anytype-heart/core/anytype/account" + "github.com/anyproto/anytype-heart/core/anytype/config" "github.com/anyproto/anytype-heart/core/api/server" "github.com/anyproto/anytype-heart/pb/service" ) const ( - CName = "api" - httpPort = ":31009" - timeout = 5 * time.Second + CName = "api" + readTimeout = 5 * time.Second ) var ( @@ -25,12 +27,16 @@ var ( type Service interface { app.ComponentRunnable + ReassignAddress(ctx context.Context, listenAddr string) (err error) } type apiService struct { - srv *server.Server - httpSrv *http.Server - mw service.ClientCommandsServer + srv *server.Server + httpSrv *http.Server + mw service.ClientCommandsServer + accountService account.Service + listenAddr string + lock sync.Mutex } func New() Service { @@ -58,16 +64,32 @@ func (s *apiService) Name() (name string) { // @externalDocs.description OpenAPI // @externalDocs.url https://swagger.io/resources/open-api/ func (s *apiService) Init(a *app.App) (err error) { - s.srv = server.NewServer(a, s.mw) - s.httpSrv = &http.Server{ - Addr: httpPort, - Handler: s.srv.Engine(), - ReadHeaderTimeout: timeout, - } + s.listenAddr = a.MustComponent(config.CName).(*config.Config).JsonApiListenAddr + s.accountService = a.MustComponent(account.CName).(account.Service) + return nil } func (s *apiService) Run(ctx context.Context) (err error) { + s.runServer() + return nil +} + +func (s *apiService) runServer() { + s.lock.Lock() + defer s.lock.Unlock() + if s.listenAddr == "" { + // means that API is disabled + return + } + + s.srv = server.NewServer(s.accountService, s.mw) + s.httpSrv = &http.Server{ + Addr: s.listenAddr, + Handler: s.srv.Engine(), + ReadHeaderTimeout: readTimeout, + } + fmt.Printf("Starting API server on %s\n", s.httpSrv.Addr) go func() { @@ -76,11 +98,17 @@ func (s *apiService) Run(ctx context.Context) (err error) { } }() - return nil + return } -func (s *apiService) Close(ctx context.Context) (err error) { - shutdownCtx, cancel := context.WithTimeout(ctx, timeout) +func (s *apiService) shutdown(ctx context.Context) (err error) { + if s.httpSrv == nil { + return nil + } + s.lock.Lock() + defer s.lock.Unlock() + // we don't want graceful shutdown here and block tha app close + shutdownCtx, cancel := context.WithTimeout(ctx, time.Millisecond) defer cancel() if err := s.httpSrv.Shutdown(shutdownCtx); err != nil { @@ -90,6 +118,21 @@ func (s *apiService) Close(ctx context.Context) (err error) { return nil } +func (s *apiService) Close(ctx context.Context) (err error) { + return s.shutdown(ctx) +} + +func (s *apiService) ReassignAddress(ctx context.Context, listenAddr string) (err error) { + err = s.shutdown(ctx) + if err != nil { + return err + } + + s.listenAddr = listenAddr + s.runServer() + return nil +} + func SetMiddlewareParams(mw service.ClientCommandsServer) { mwSrv = mw } diff --git a/core/application/account_config_update.go b/core/application/account_config_update.go index 49142cf11..8697fdd04 100644 --- a/core/application/account_config_update.go +++ b/core/application/account_config_update.go @@ -1,9 +1,13 @@ package application import ( + "context" "errors" + "github.com/anyproto/any-sync/app" + "github.com/anyproto/anytype-heart/core/anytype/config" + "github.com/anyproto/anytype-heart/core/api" "github.com/anyproto/anytype-heart/pb" ) @@ -24,3 +28,14 @@ func (s *Service) AccountConfigUpdate(req *pb.RpcAccountConfigUpdateRequest) err } return nil } + +func (s *Service) AccountChangeJsonApiAddr(ctx context.Context, addr string) error { + s.lock.RLock() + defer s.lock.RUnlock() + + if s.app == nil { + return ErrApplicationIsNotRunning + } + apiService := app.MustComponent[api.Service](s.app) + return apiService.ReassignAddress(ctx, addr) +} diff --git a/core/application/account_create.go b/core/application/account_create.go index c1ff2a7ac..0c2fa5189 100644 --- a/core/application/account_create.go +++ b/core/application/account_create.go @@ -12,8 +12,8 @@ import ( "github.com/anyproto/anytype-heart/core/anytype/account" "github.com/anyproto/anytype-heart/core/anytype/config" "github.com/anyproto/anytype-heart/core/block" - "github.com/anyproto/anytype-heart/core/domain" "github.com/anyproto/anytype-heart/core/block/detailservice" + "github.com/anyproto/anytype-heart/core/domain" "github.com/anyproto/anytype-heart/core/domain/objectorigin" "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/pkg/lib/bundle" @@ -57,6 +57,9 @@ func (s *Service) AccountCreate(ctx context.Context, req *pb.RpcAccountCreateReq cfg.NetworkMode = req.NetworkMode cfg.NetworkCustomConfigFilePath = req.NetworkCustomConfigFilePath } + if req.JsonApiListenAddr != "" { + cfg.JsonApiListenAddr = req.JsonApiListenAddr + } comps := []app.Component{ cfg, anytype.BootstrapWallet(s.rootPath, derivationResult), diff --git a/core/application/account_select.go b/core/application/account_select.go index c700f8dec..6f22b7f86 100644 --- a/core/application/account_select.go +++ b/core/application/account_select.go @@ -74,10 +74,10 @@ func (s *Service) AccountSelect(ctx context.Context, req *pb.RpcAccountSelectReq } metrics.Service.SetWorkingDir(req.RootPath, req.Id) - return s.start(ctx, req.Id, req.RootPath, req.DisableLocalNetworkSync, req.PreferYamuxTransport, req.NetworkMode, req.NetworkCustomConfigFilePath) + return s.start(ctx, req.Id, req.RootPath, req.DisableLocalNetworkSync, req.JsonApiListenAddr, req.PreferYamuxTransport, req.NetworkMode, req.NetworkCustomConfigFilePath) } -func (s *Service) start(ctx context.Context, id string, rootPath string, disableLocalNetworkSync bool, preferYamux bool, networkMode pb.RpcAccountNetworkMode, networkConfigFilePath string) (*model.Account, error) { +func (s *Service) start(ctx context.Context, id string, rootPath string, disableLocalNetworkSync bool, jsonApiListenAddr string, preferYamux bool, networkMode pb.RpcAccountNetworkMode, networkConfigFilePath string) (*model.Account, error) { ctx, task := trace2.NewTask(ctx, "application.start") defer task.End() @@ -108,6 +108,10 @@ func (s *Service) start(ctx context.Context, id string, rootPath string, disable if disableLocalNetworkSync { cfg.DontStartLocalNetworkSyncAutomatically = true } + + if jsonApiListenAddr != "" { + cfg.JsonApiListenAddr = jsonApiListenAddr + } if preferYamux { cfg.PeferYamuxTransport = true } diff --git a/core/application/account_stop.go b/core/application/account_stop.go index 616461f69..b5f1f353e 100644 --- a/core/application/account_stop.go +++ b/core/application/account_stop.go @@ -89,7 +89,7 @@ func (s *Service) AccountChangeNetworkConfigAndRestart(ctx context.Context, req return ErrFailedToStopApplication } - _, err = s.start(ctx, accountId, rootPath, conf.DontStartLocalNetworkSyncAutomatically, conf.PeferYamuxTransport, req.NetworkMode, req.NetworkCustomConfigFilePath) + _, err = s.start(ctx, accountId, rootPath, conf.DontStartLocalNetworkSyncAutomatically, conf.JsonApiListenAddr, conf.PeferYamuxTransport, req.NetworkMode, req.NetworkCustomConfigFilePath) return err } diff --git a/docs/proto.md b/docs/proto.md index ea94570d6..cd2d8f005 100644 --- a/docs/proto.md +++ b/docs/proto.md @@ -50,6 +50,10 @@ - [Empty](#anytype-Empty) - [Rpc](#anytype-Rpc) - [Rpc.Account](#anytype-Rpc-Account) + - [Rpc.Account.ChangeJsonApiAddr](#anytype-Rpc-Account-ChangeJsonApiAddr) + - [Rpc.Account.ChangeJsonApiAddr.Request](#anytype-Rpc-Account-ChangeJsonApiAddr-Request) + - [Rpc.Account.ChangeJsonApiAddr.Response](#anytype-Rpc-Account-ChangeJsonApiAddr-Response) + - [Rpc.Account.ChangeJsonApiAddr.Response.Error](#anytype-Rpc-Account-ChangeJsonApiAddr-Response-Error) - [Rpc.Account.ChangeNetworkConfigAndRestart](#anytype-Rpc-Account-ChangeNetworkConfigAndRestart) - [Rpc.Account.ChangeNetworkConfigAndRestart.Request](#anytype-Rpc-Account-ChangeNetworkConfigAndRestart-Request) - [Rpc.Account.ChangeNetworkConfigAndRestart.Response](#anytype-Rpc-Account-ChangeNetworkConfigAndRestart-Response) @@ -1274,6 +1278,7 @@ - [Rpc.Workspace.SetInfo.Response.Error](#anytype-Rpc-Workspace-SetInfo-Response-Error) - [StreamRequest](#anytype-StreamRequest) + - [Rpc.Account.ChangeJsonApiAddr.Response.Error.Code](#anytype-Rpc-Account-ChangeJsonApiAddr-Response-Error-Code) - [Rpc.Account.ChangeNetworkConfigAndRestart.Response.Error.Code](#anytype-Rpc-Account-ChangeNetworkConfigAndRestart-Response-Error-Code) - [Rpc.Account.ConfigUpdate.Response.Error.Code](#anytype-Rpc-Account-ConfigUpdate-Response-Error-Code) - [Rpc.Account.ConfigUpdate.Timezones](#anytype-Rpc-Account-ConfigUpdate-Timezones) @@ -2020,6 +2025,7 @@ | AccountRevertDeletion | [Rpc.Account.RevertDeletion.Request](#anytype-Rpc-Account-RevertDeletion-Request) | [Rpc.Account.RevertDeletion.Response](#anytype-Rpc-Account-RevertDeletion-Response) | | | AccountSelect | [Rpc.Account.Select.Request](#anytype-Rpc-Account-Select-Request) | [Rpc.Account.Select.Response](#anytype-Rpc-Account-Select-Response) | | | AccountEnableLocalNetworkSync | [Rpc.Account.EnableLocalNetworkSync.Request](#anytype-Rpc-Account-EnableLocalNetworkSync-Request) | [Rpc.Account.EnableLocalNetworkSync.Response](#anytype-Rpc-Account-EnableLocalNetworkSync-Response) | | +| AccountChangeJsonApiAddr | [Rpc.Account.ChangeJsonApiAddr.Request](#anytype-Rpc-Account-ChangeJsonApiAddr-Request) | [Rpc.Account.ChangeJsonApiAddr.Response](#anytype-Rpc-Account-ChangeJsonApiAddr-Response) | | | AccountStop | [Rpc.Account.Stop.Request](#anytype-Rpc-Account-Stop-Request) | [Rpc.Account.Stop.Response](#anytype-Rpc-Account-Stop-Response) | | | AccountMove | [Rpc.Account.Move.Request](#anytype-Rpc-Account-Move-Request) | [Rpc.Account.Move.Response](#anytype-Rpc-Account-Move-Response) | | | AccountConfigUpdate | [Rpc.Account.ConfigUpdate.Request](#anytype-Rpc-Account-ConfigUpdate-Request) | [Rpc.Account.ConfigUpdate.Response](#anytype-Rpc-Account-ConfigUpdate-Response) | | @@ -2942,6 +2948,62 @@ Response – message from a middleware. + + +### Rpc.Account.ChangeJsonApiAddr + + + + + + + + + +### Rpc.Account.ChangeJsonApiAddr.Request + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| listenAddr | [string](#string) | | make sure to use 127.0.0.1:x to not listen on all interfaces; recommended value is 127.0.0.1:31009 | + + + + + + + + +### Rpc.Account.ChangeJsonApiAddr.Response + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| error | [Rpc.Account.ChangeJsonApiAddr.Response.Error](#anytype-Rpc-Account-ChangeJsonApiAddr-Response-Error) | | | + + + + + + + + +### Rpc.Account.ChangeJsonApiAddr.Response.Error + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| code | [Rpc.Account.ChangeJsonApiAddr.Response.Error.Code](#anytype-Rpc-Account-ChangeJsonApiAddr-Response-Error-Code) | | | +| description | [string](#string) | | | + + + + + + ### Rpc.Account.ChangeNetworkConfigAndRestart @@ -3100,6 +3162,7 @@ Front end to middleware request-to-create-an account | networkMode | [Rpc.Account.NetworkMode](#anytype-Rpc-Account-NetworkMode) | | optional, default is DefaultConfig | | networkCustomConfigFilePath | [string](#string) | | config path for the custom network mode } | | preferYamuxTransport | [bool](#bool) | | optional, default is false, recommended in case of problems with QUIC transport | +| jsonApiListenAddr | [string](#string) | | optional, if empty json api will not be started; 127.0.0.1:31009 should be the default one | @@ -3644,6 +3707,7 @@ User can select an account from those, that came with an AccountAdd events | networkMode | [Rpc.Account.NetworkMode](#anytype-Rpc-Account-NetworkMode) | | optional, default is DefaultConfig | | networkCustomConfigFilePath | [string](#string) | | config path for the custom network mode | | preferYamuxTransport | [bool](#bool) | | optional, default is false, recommended in case of problems with QUIC transport | +| jsonApiListenAddr | [string](#string) | | optional, if empty json api will not be started; 127.0.0.1:31009 should be the default one | @@ -20689,6 +20753,20 @@ Middleware-to-front-end response, that can contain a NULL error or a non-NULL er + + +### Rpc.Account.ChangeJsonApiAddr.Response.Error.Code + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| NULL | 0 | | +| UNKNOWN_ERROR | 1 | | +| BAD_INPUT | 2 | | +| ACCOUNT_IS_NOT_RUNNING | 4 | | + + + ### Rpc.Account.ChangeNetworkConfigAndRestart.Response.Error.Code diff --git a/pb/commands.pb.go b/pb/commands.pb.go index 9782590c2..8e97796ca 100644 --- a/pb/commands.pb.go +++ b/pb/commands.pb.go @@ -1481,6 +1481,37 @@ func (RpcAccountEnableLocalNetworkSyncResponseErrorCode) EnumDescriptor() ([]byt return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 11, 1, 0, 0} } +type RpcAccountChangeJsonApiAddrResponseErrorCode int32 + +const ( + RpcAccountChangeJsonApiAddrResponseError_NULL RpcAccountChangeJsonApiAddrResponseErrorCode = 0 + RpcAccountChangeJsonApiAddrResponseError_UNKNOWN_ERROR RpcAccountChangeJsonApiAddrResponseErrorCode = 1 + RpcAccountChangeJsonApiAddrResponseError_BAD_INPUT RpcAccountChangeJsonApiAddrResponseErrorCode = 2 + RpcAccountChangeJsonApiAddrResponseError_ACCOUNT_IS_NOT_RUNNING RpcAccountChangeJsonApiAddrResponseErrorCode = 4 +) + +var RpcAccountChangeJsonApiAddrResponseErrorCode_name = map[int32]string{ + 0: "NULL", + 1: "UNKNOWN_ERROR", + 2: "BAD_INPUT", + 4: "ACCOUNT_IS_NOT_RUNNING", +} + +var RpcAccountChangeJsonApiAddrResponseErrorCode_value = map[string]int32{ + "NULL": 0, + "UNKNOWN_ERROR": 1, + "BAD_INPUT": 2, + "ACCOUNT_IS_NOT_RUNNING": 4, +} + +func (x RpcAccountChangeJsonApiAddrResponseErrorCode) String() string { + return proto.EnumName(RpcAccountChangeJsonApiAddrResponseErrorCode_name, int32(x)) +} + +func (RpcAccountChangeJsonApiAddrResponseErrorCode) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12, 1, 0, 0} +} + type RpcAccountChangeNetworkConfigAndRestartResponseErrorCode int32 const ( @@ -1521,7 +1552,7 @@ func (x RpcAccountChangeNetworkConfigAndRestartResponseErrorCode) String() strin } func (RpcAccountChangeNetworkConfigAndRestartResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 1, 0, 0} } type RpcAccountLocalLinkNewChallengeResponseErrorCode int32 @@ -1555,7 +1586,7 @@ func (x RpcAccountLocalLinkNewChallengeResponseErrorCode) String() string { } func (RpcAccountLocalLinkNewChallengeResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 0, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 0, 1, 0, 0} } type RpcAccountLocalLinkSolveChallengeResponseErrorCode int32 @@ -1595,7 +1626,7 @@ func (x RpcAccountLocalLinkSolveChallengeResponseErrorCode) String() string { } func (RpcAccountLocalLinkSolveChallengeResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 1, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 1, 1, 0, 0} } type RpcWorkspaceGetCurrentResponseErrorCode int32 @@ -14050,6 +14081,7 @@ type RpcAccountCreateRequest struct { NetworkMode RpcAccountNetworkMode `protobuf:"varint,6,opt,name=networkMode,proto3,enum=anytype.RpcAccountNetworkMode" json:"networkMode,omitempty"` NetworkCustomConfigFilePath string `protobuf:"bytes,7,opt,name=networkCustomConfigFilePath,proto3" json:"networkCustomConfigFilePath,omitempty"` PreferYamuxTransport bool `protobuf:"varint,8,opt,name=preferYamuxTransport,proto3" json:"preferYamuxTransport,omitempty"` + JsonApiListenAddr string `protobuf:"bytes,9,opt,name=jsonApiListenAddr,proto3" json:"jsonApiListenAddr,omitempty"` } func (m *RpcAccountCreateRequest) Reset() { *m = RpcAccountCreateRequest{} } @@ -14160,6 +14192,13 @@ func (m *RpcAccountCreateRequest) GetPreferYamuxTransport() bool { return false } +func (m *RpcAccountCreateRequest) GetJsonApiListenAddr() string { + if m != nil { + return m.JsonApiListenAddr + } + return "" +} + // XXX_OneofWrappers is for the internal use of the proto package. func (*RpcAccountCreateRequest) XXX_OneofWrappers() []interface{} { return []interface{}{ @@ -14852,6 +14891,7 @@ type RpcAccountSelectRequest struct { NetworkMode RpcAccountNetworkMode `protobuf:"varint,4,opt,name=networkMode,proto3,enum=anytype.RpcAccountNetworkMode" json:"networkMode,omitempty"` NetworkCustomConfigFilePath string `protobuf:"bytes,5,opt,name=networkCustomConfigFilePath,proto3" json:"networkCustomConfigFilePath,omitempty"` PreferYamuxTransport bool `protobuf:"varint,6,opt,name=preferYamuxTransport,proto3" json:"preferYamuxTransport,omitempty"` + JsonApiListenAddr string `protobuf:"bytes,7,opt,name=jsonApiListenAddr,proto3" json:"jsonApiListenAddr,omitempty"` } func (m *RpcAccountSelectRequest) Reset() { *m = RpcAccountSelectRequest{} } @@ -14929,6 +14969,13 @@ func (m *RpcAccountSelectRequest) GetPreferYamuxTransport() bool { return false } +func (m *RpcAccountSelectRequest) GetJsonApiListenAddr() string { + if m != nil { + return m.JsonApiListenAddr + } + return "" +} + // * // Middleware-to-front-end response for an account select request, that can contain a NULL error and selected account or a non-NULL error and an empty account type RpcAccountSelectResponse struct { @@ -16079,6 +16126,184 @@ func (m *RpcAccountEnableLocalNetworkSyncResponseError) GetDescription() string return "" } +type RpcAccountChangeJsonApiAddr struct { +} + +func (m *RpcAccountChangeJsonApiAddr) Reset() { *m = RpcAccountChangeJsonApiAddr{} } +func (m *RpcAccountChangeJsonApiAddr) String() string { return proto.CompactTextString(m) } +func (*RpcAccountChangeJsonApiAddr) ProtoMessage() {} +func (*RpcAccountChangeJsonApiAddr) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12} +} +func (m *RpcAccountChangeJsonApiAddr) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcAccountChangeJsonApiAddr) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcAccountChangeJsonApiAddr.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcAccountChangeJsonApiAddr) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcAccountChangeJsonApiAddr.Merge(m, src) +} +func (m *RpcAccountChangeJsonApiAddr) XXX_Size() int { + return m.Size() +} +func (m *RpcAccountChangeJsonApiAddr) XXX_DiscardUnknown() { + xxx_messageInfo_RpcAccountChangeJsonApiAddr.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcAccountChangeJsonApiAddr proto.InternalMessageInfo + +type RpcAccountChangeJsonApiAddrRequest struct { + ListenAddr string `protobuf:"bytes,1,opt,name=listenAddr,proto3" json:"listenAddr,omitempty"` +} + +func (m *RpcAccountChangeJsonApiAddrRequest) Reset() { *m = RpcAccountChangeJsonApiAddrRequest{} } +func (m *RpcAccountChangeJsonApiAddrRequest) String() string { return proto.CompactTextString(m) } +func (*RpcAccountChangeJsonApiAddrRequest) ProtoMessage() {} +func (*RpcAccountChangeJsonApiAddrRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12, 0} +} +func (m *RpcAccountChangeJsonApiAddrRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcAccountChangeJsonApiAddrRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcAccountChangeJsonApiAddrRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcAccountChangeJsonApiAddrRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcAccountChangeJsonApiAddrRequest.Merge(m, src) +} +func (m *RpcAccountChangeJsonApiAddrRequest) XXX_Size() int { + return m.Size() +} +func (m *RpcAccountChangeJsonApiAddrRequest) XXX_DiscardUnknown() { + xxx_messageInfo_RpcAccountChangeJsonApiAddrRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcAccountChangeJsonApiAddrRequest proto.InternalMessageInfo + +func (m *RpcAccountChangeJsonApiAddrRequest) GetListenAddr() string { + if m != nil { + return m.ListenAddr + } + return "" +} + +type RpcAccountChangeJsonApiAddrResponse struct { + Error *RpcAccountChangeJsonApiAddrResponseError `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"` +} + +func (m *RpcAccountChangeJsonApiAddrResponse) Reset() { *m = RpcAccountChangeJsonApiAddrResponse{} } +func (m *RpcAccountChangeJsonApiAddrResponse) String() string { return proto.CompactTextString(m) } +func (*RpcAccountChangeJsonApiAddrResponse) ProtoMessage() {} +func (*RpcAccountChangeJsonApiAddrResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12, 1} +} +func (m *RpcAccountChangeJsonApiAddrResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcAccountChangeJsonApiAddrResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcAccountChangeJsonApiAddrResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcAccountChangeJsonApiAddrResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcAccountChangeJsonApiAddrResponse.Merge(m, src) +} +func (m *RpcAccountChangeJsonApiAddrResponse) XXX_Size() int { + return m.Size() +} +func (m *RpcAccountChangeJsonApiAddrResponse) XXX_DiscardUnknown() { + xxx_messageInfo_RpcAccountChangeJsonApiAddrResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcAccountChangeJsonApiAddrResponse proto.InternalMessageInfo + +func (m *RpcAccountChangeJsonApiAddrResponse) GetError() *RpcAccountChangeJsonApiAddrResponseError { + if m != nil { + return m.Error + } + return nil +} + +type RpcAccountChangeJsonApiAddrResponseError struct { + Code RpcAccountChangeJsonApiAddrResponseErrorCode `protobuf:"varint,1,opt,name=code,proto3,enum=anytype.RpcAccountChangeJsonApiAddrResponseErrorCode" json:"code,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` +} + +func (m *RpcAccountChangeJsonApiAddrResponseError) Reset() { + *m = RpcAccountChangeJsonApiAddrResponseError{} +} +func (m *RpcAccountChangeJsonApiAddrResponseError) String() string { return proto.CompactTextString(m) } +func (*RpcAccountChangeJsonApiAddrResponseError) ProtoMessage() {} +func (*RpcAccountChangeJsonApiAddrResponseError) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12, 1, 0} +} +func (m *RpcAccountChangeJsonApiAddrResponseError) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcAccountChangeJsonApiAddrResponseError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcAccountChangeJsonApiAddrResponseError.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcAccountChangeJsonApiAddrResponseError) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcAccountChangeJsonApiAddrResponseError.Merge(m, src) +} +func (m *RpcAccountChangeJsonApiAddrResponseError) XXX_Size() int { + return m.Size() +} +func (m *RpcAccountChangeJsonApiAddrResponseError) XXX_DiscardUnknown() { + xxx_messageInfo_RpcAccountChangeJsonApiAddrResponseError.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcAccountChangeJsonApiAddrResponseError proto.InternalMessageInfo + +func (m *RpcAccountChangeJsonApiAddrResponseError) GetCode() RpcAccountChangeJsonApiAddrResponseErrorCode { + if m != nil { + return m.Code + } + return RpcAccountChangeJsonApiAddrResponseError_NULL +} + +func (m *RpcAccountChangeJsonApiAddrResponseError) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + type RpcAccountChangeNetworkConfigAndRestart struct { } @@ -16088,7 +16313,7 @@ func (m *RpcAccountChangeNetworkConfigAndRestart) Reset() { func (m *RpcAccountChangeNetworkConfigAndRestart) String() string { return proto.CompactTextString(m) } func (*RpcAccountChangeNetworkConfigAndRestart) ProtoMessage() {} func (*RpcAccountChangeNetworkConfigAndRestart) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13} } func (m *RpcAccountChangeNetworkConfigAndRestart) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16130,7 +16355,7 @@ func (m *RpcAccountChangeNetworkConfigAndRestartRequest) String() string { } func (*RpcAccountChangeNetworkConfigAndRestartRequest) ProtoMessage() {} func (*RpcAccountChangeNetworkConfigAndRestartRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 0} } func (m *RpcAccountChangeNetworkConfigAndRestartRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16185,7 +16410,7 @@ func (m *RpcAccountChangeNetworkConfigAndRestartResponse) String() string { } func (*RpcAccountChangeNetworkConfigAndRestartResponse) ProtoMessage() {} func (*RpcAccountChangeNetworkConfigAndRestartResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 1} } func (m *RpcAccountChangeNetworkConfigAndRestartResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16234,7 +16459,7 @@ func (m *RpcAccountChangeNetworkConfigAndRestartResponseError) String() string { } func (*RpcAccountChangeNetworkConfigAndRestartResponseError) ProtoMessage() {} func (*RpcAccountChangeNetworkConfigAndRestartResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 1, 0} } func (m *RpcAccountChangeNetworkConfigAndRestartResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16284,7 +16509,7 @@ func (m *RpcAccountLocalLink) Reset() { *m = RpcAccountLocalLink{} } func (m *RpcAccountLocalLink) String() string { return proto.CompactTextString(m) } func (*RpcAccountLocalLink) ProtoMessage() {} func (*RpcAccountLocalLink) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14} } func (m *RpcAccountLocalLink) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16320,7 +16545,7 @@ func (m *RpcAccountLocalLinkNewChallenge) Reset() { *m = RpcAccountLocal func (m *RpcAccountLocalLinkNewChallenge) String() string { return proto.CompactTextString(m) } func (*RpcAccountLocalLinkNewChallenge) ProtoMessage() {} func (*RpcAccountLocalLinkNewChallenge) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 0} } func (m *RpcAccountLocalLinkNewChallenge) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16360,7 +16585,7 @@ func (m *RpcAccountLocalLinkNewChallengeRequest) Reset() { func (m *RpcAccountLocalLinkNewChallengeRequest) String() string { return proto.CompactTextString(m) } func (*RpcAccountLocalLinkNewChallengeRequest) ProtoMessage() {} func (*RpcAccountLocalLinkNewChallengeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 0, 0} } func (m *RpcAccountLocalLinkNewChallengeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16414,7 +16639,7 @@ func (m *RpcAccountLocalLinkNewChallengeResponse) Reset() { func (m *RpcAccountLocalLinkNewChallengeResponse) String() string { return proto.CompactTextString(m) } func (*RpcAccountLocalLinkNewChallengeResponse) ProtoMessage() {} func (*RpcAccountLocalLinkNewChallengeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 0, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 0, 1} } func (m *RpcAccountLocalLinkNewChallengeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16470,7 +16695,7 @@ func (m *RpcAccountLocalLinkNewChallengeResponseError) String() string { } func (*RpcAccountLocalLinkNewChallengeResponseError) ProtoMessage() {} func (*RpcAccountLocalLinkNewChallengeResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 0, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 0, 1, 0} } func (m *RpcAccountLocalLinkNewChallengeResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16520,7 +16745,7 @@ func (m *RpcAccountLocalLinkSolveChallenge) Reset() { *m = RpcAccountLoc func (m *RpcAccountLocalLinkSolveChallenge) String() string { return proto.CompactTextString(m) } func (*RpcAccountLocalLinkSolveChallenge) ProtoMessage() {} func (*RpcAccountLocalLinkSolveChallenge) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 1} } func (m *RpcAccountLocalLinkSolveChallenge) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16560,7 +16785,7 @@ func (m *RpcAccountLocalLinkSolveChallengeRequest) Reset() { func (m *RpcAccountLocalLinkSolveChallengeRequest) String() string { return proto.CompactTextString(m) } func (*RpcAccountLocalLinkSolveChallengeRequest) ProtoMessage() {} func (*RpcAccountLocalLinkSolveChallengeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 1, 0} } func (m *RpcAccountLocalLinkSolveChallengeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16617,7 +16842,7 @@ func (m *RpcAccountLocalLinkSolveChallengeResponse) String() string { } func (*RpcAccountLocalLinkSolveChallengeResponse) ProtoMessage() {} func (*RpcAccountLocalLinkSolveChallengeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 1, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 1, 1} } func (m *RpcAccountLocalLinkSolveChallengeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16680,7 +16905,7 @@ func (m *RpcAccountLocalLinkSolveChallengeResponseError) String() string { } func (*RpcAccountLocalLinkSolveChallengeResponseError) ProtoMessage() {} func (*RpcAccountLocalLinkSolveChallengeResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 1, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 1, 1, 0} } func (m *RpcAccountLocalLinkSolveChallengeResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -70599,6 +70824,7 @@ func init() { proto.RegisterEnum("anytype.RpcAccountConfigUpdateResponseErrorCode", RpcAccountConfigUpdateResponseErrorCode_name, RpcAccountConfigUpdateResponseErrorCode_value) proto.RegisterEnum("anytype.RpcAccountRecoverFromLegacyExportResponseErrorCode", RpcAccountRecoverFromLegacyExportResponseErrorCode_name, RpcAccountRecoverFromLegacyExportResponseErrorCode_value) proto.RegisterEnum("anytype.RpcAccountEnableLocalNetworkSyncResponseErrorCode", RpcAccountEnableLocalNetworkSyncResponseErrorCode_name, RpcAccountEnableLocalNetworkSyncResponseErrorCode_value) + proto.RegisterEnum("anytype.RpcAccountChangeJsonApiAddrResponseErrorCode", RpcAccountChangeJsonApiAddrResponseErrorCode_name, RpcAccountChangeJsonApiAddrResponseErrorCode_value) proto.RegisterEnum("anytype.RpcAccountChangeNetworkConfigAndRestartResponseErrorCode", RpcAccountChangeNetworkConfigAndRestartResponseErrorCode_name, RpcAccountChangeNetworkConfigAndRestartResponseErrorCode_value) proto.RegisterEnum("anytype.RpcAccountLocalLinkNewChallengeResponseErrorCode", RpcAccountLocalLinkNewChallengeResponseErrorCode_name, RpcAccountLocalLinkNewChallengeResponseErrorCode_value) proto.RegisterEnum("anytype.RpcAccountLocalLinkSolveChallengeResponseErrorCode", RpcAccountLocalLinkSolveChallengeResponseErrorCode_name, RpcAccountLocalLinkSolveChallengeResponseErrorCode_value) @@ -71006,6 +71232,10 @@ func init() { proto.RegisterType((*RpcAccountEnableLocalNetworkSyncRequest)(nil), "anytype.Rpc.Account.EnableLocalNetworkSync.Request") proto.RegisterType((*RpcAccountEnableLocalNetworkSyncResponse)(nil), "anytype.Rpc.Account.EnableLocalNetworkSync.Response") proto.RegisterType((*RpcAccountEnableLocalNetworkSyncResponseError)(nil), "anytype.Rpc.Account.EnableLocalNetworkSync.Response.Error") + proto.RegisterType((*RpcAccountChangeJsonApiAddr)(nil), "anytype.Rpc.Account.ChangeJsonApiAddr") + proto.RegisterType((*RpcAccountChangeJsonApiAddrRequest)(nil), "anytype.Rpc.Account.ChangeJsonApiAddr.Request") + proto.RegisterType((*RpcAccountChangeJsonApiAddrResponse)(nil), "anytype.Rpc.Account.ChangeJsonApiAddr.Response") + proto.RegisterType((*RpcAccountChangeJsonApiAddrResponseError)(nil), "anytype.Rpc.Account.ChangeJsonApiAddr.Response.Error") proto.RegisterType((*RpcAccountChangeNetworkConfigAndRestart)(nil), "anytype.Rpc.Account.ChangeNetworkConfigAndRestart") proto.RegisterType((*RpcAccountChangeNetworkConfigAndRestartRequest)(nil), "anytype.Rpc.Account.ChangeNetworkConfigAndRestart.Request") proto.RegisterType((*RpcAccountChangeNetworkConfigAndRestartResponse)(nil), "anytype.Rpc.Account.ChangeNetworkConfigAndRestart.Response") @@ -72093,1234 +72323,1239 @@ func init() { func init() { proto.RegisterFile("pb/protos/commands.proto", fileDescriptor_8261c968b2e6f45c) } var fileDescriptor_8261c968b2e6f45c = []byte{ - // 19622 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xfd, 0x7d, 0x9c, 0x23, 0x47, - 0x75, 0x2f, 0x8c, 0xaf, 0xba, 0x25, 0xcd, 0xcc, 0x99, 0x97, 0xd5, 0xb6, 0x77, 0xd7, 0xeb, 0xb2, - 0x59, 0x3b, 0x6b, 0x63, 0x1c, 0x63, 0xc6, 0xc6, 0x10, 0x82, 0x8d, 0x8d, 0xad, 0xd1, 0x68, 0x66, - 0x64, 0xcf, 0x48, 0x43, 0x4b, 0xb3, 0x8b, 0x93, 0x9b, 0x9f, 0x6e, 0xaf, 0x54, 0x33, 0xd3, 0x5e, - 0x4d, 0xb7, 0xd2, 0xdd, 0x33, 0xeb, 0xe5, 0xf7, 0xb9, 0xcf, 0x0d, 0x21, 0xe6, 0x25, 0xc4, 0x97, - 0x10, 0x42, 0x12, 0xde, 0x5f, 0x0d, 0x17, 0x12, 0x20, 0xbc, 0x5f, 0x48, 0x02, 0x84, 0x97, 0x40, - 0x08, 0x21, 0x04, 0x42, 0x20, 0x24, 0x3c, 0x81, 0x40, 0x08, 0xb9, 0x9f, 0x70, 0x79, 0x92, 0xe7, - 0x06, 0x42, 0x02, 0x4f, 0x9e, 0x4f, 0x57, 0x55, 0xbf, 0x94, 0x46, 0xdd, 0xaa, 0xd6, 0xa8, 0x35, - 0x26, 0x3c, 0xff, 0x75, 0x57, 0x57, 0x9f, 0x3a, 0x75, 0xbe, 0xa7, 0xaa, 0x4e, 0x55, 0x9d, 0x3a, - 0x05, 0xa7, 0xba, 0xe7, 0x6f, 0xee, 0x5a, 0xa6, 0x63, 0xda, 0x37, 0xb7, 0xcc, 0x9d, 0x1d, 0xcd, - 0x68, 0xdb, 0xf3, 0xe4, 0x5d, 0x99, 0xd0, 0x8c, 0x4b, 0xce, 0xa5, 0x2e, 0x46, 0xd7, 0x75, 0x2f, - 0x6c, 0xdd, 0xdc, 0xd1, 0xcf, 0xdf, 0xdc, 0x3d, 0x7f, 0xf3, 0x8e, 0xd9, 0xc6, 0x1d, 0xef, 0x07, - 0xf2, 0xc2, 0xb2, 0xa3, 0x1b, 0xa2, 0x72, 0x75, 0xcc, 0x96, 0xd6, 0xb1, 0x1d, 0xd3, 0xc2, 0x2c, - 0xe7, 0xc9, 0xa0, 0x48, 0xbc, 0x87, 0x0d, 0xc7, 0xa3, 0x70, 0xd5, 0x96, 0x69, 0x6e, 0x75, 0x30, - 0xfd, 0x76, 0x7e, 0x77, 0xf3, 0x66, 0xdb, 0xb1, 0x76, 0x5b, 0x0e, 0xfb, 0x7a, 0x4d, 0xef, 0xd7, - 0x36, 0xb6, 0x5b, 0x96, 0xde, 0x75, 0x4c, 0x8b, 0xe6, 0x38, 0xf3, 0xf7, 0x0f, 0x4d, 0x82, 0xac, - 0x76, 0x5b, 0xe8, 0x3b, 0x13, 0x20, 0x17, 0xbb, 0x5d, 0xf4, 0x31, 0x09, 0x60, 0x19, 0x3b, 0x67, - 0xb1, 0x65, 0xeb, 0xa6, 0x81, 0x8e, 0xc2, 0x84, 0x8a, 0x7f, 0x76, 0x17, 0xdb, 0xce, 0xed, 0xd9, - 0xe7, 0x7e, 0x43, 0xce, 0xa0, 0x87, 0x25, 0x98, 0x54, 0xb1, 0xdd, 0x35, 0x0d, 0x1b, 0x2b, 0x77, - 0x43, 0x0e, 0x5b, 0x96, 0x69, 0x9d, 0xca, 0x5c, 0x93, 0xb9, 0x61, 0xfa, 0xd6, 0x1b, 0xe7, 0x59, - 0xf5, 0xe7, 0xd5, 0x6e, 0x6b, 0xbe, 0xd8, 0xed, 0xce, 0x07, 0x94, 0xe6, 0xbd, 0x9f, 0xe6, 0xcb, - 0xee, 0x1f, 0x2a, 0xfd, 0x51, 0x39, 0x05, 0x13, 0x7b, 0x34, 0xc3, 0x29, 0xe9, 0x9a, 0xcc, 0x0d, - 0x53, 0xaa, 0xf7, 0xea, 0x7e, 0x69, 0x63, 0x47, 0xd3, 0x3b, 0xf6, 0x29, 0x99, 0x7e, 0x61, 0xaf, - 0xe8, 0xb5, 0x19, 0xc8, 0x11, 0x22, 0x4a, 0x09, 0xb2, 0x2d, 0xb3, 0x8d, 0x49, 0xf1, 0x73, 0xb7, - 0xde, 0x2c, 0x5e, 0xfc, 0x7c, 0xc9, 0x6c, 0x63, 0x95, 0xfc, 0xac, 0x5c, 0x03, 0xd3, 0x9e, 0x58, - 0x02, 0x36, 0xc2, 0x49, 0x67, 0x6e, 0x85, 0xac, 0x9b, 0x5f, 0x99, 0x84, 0x6c, 0x75, 0x63, 0x75, - 0xb5, 0x70, 0x44, 0x39, 0x06, 0xb3, 0x1b, 0xd5, 0x7b, 0xab, 0xb5, 0x73, 0xd5, 0x66, 0x59, 0x55, - 0x6b, 0x6a, 0x21, 0xa3, 0xcc, 0xc2, 0xd4, 0x42, 0x71, 0xb1, 0x59, 0xa9, 0xae, 0x6f, 0x34, 0x0a, - 0x12, 0x7a, 0xa5, 0x0c, 0x73, 0x75, 0xec, 0x2c, 0xe2, 0x3d, 0xbd, 0x85, 0xeb, 0x8e, 0xe6, 0x60, - 0xf4, 0x82, 0x8c, 0x2f, 0x4c, 0x65, 0xc3, 0x2d, 0xd4, 0xff, 0xc4, 0x2a, 0xf0, 0x84, 0x7d, 0x15, - 0xe0, 0x29, 0xcc, 0xb3, 0xbf, 0xe7, 0x43, 0x69, 0x6a, 0x98, 0xce, 0x99, 0xc7, 0xc1, 0x74, 0xe8, - 0x9b, 0x32, 0x07, 0xb0, 0x50, 0x2c, 0xdd, 0xbb, 0xac, 0xd6, 0x36, 0xaa, 0x8b, 0x85, 0x23, 0xee, - 0xfb, 0x52, 0x4d, 0x2d, 0xb3, 0xf7, 0x0c, 0xfa, 0x5e, 0x26, 0x04, 0xe6, 0x22, 0x0f, 0xe6, 0xfc, - 0x60, 0x66, 0xfa, 0x00, 0x8a, 0xde, 0xe0, 0x83, 0xb3, 0xcc, 0x81, 0xf3, 0x84, 0x64, 0xe4, 0xd2, - 0x07, 0xe8, 0x41, 0x09, 0x26, 0xeb, 0xdb, 0xbb, 0x4e, 0xdb, 0xbc, 0x68, 0xa0, 0x29, 0x1f, 0x19, - 0xf4, 0xad, 0xb0, 0x4c, 0x9e, 0xca, 0xcb, 0xe4, 0x86, 0xfd, 0x95, 0x60, 0x14, 0x22, 0xa4, 0xf1, - 0x6a, 0x5f, 0x1a, 0x45, 0x4e, 0x1a, 0x8f, 0x13, 0x25, 0x94, 0xbe, 0x1c, 0x5e, 0xfa, 0x64, 0xc8, - 0xd5, 0xbb, 0x5a, 0x0b, 0xa3, 0x4f, 0xc9, 0x30, 0xb3, 0x8a, 0xb5, 0x3d, 0x5c, 0xec, 0x76, 0x2d, - 0x73, 0x0f, 0xa3, 0x52, 0xa0, 0xaf, 0xa7, 0x60, 0xc2, 0x76, 0x33, 0x55, 0xda, 0xa4, 0x06, 0x53, - 0xaa, 0xf7, 0xaa, 0x9c, 0x06, 0xd0, 0xdb, 0xd8, 0x70, 0x74, 0x47, 0xc7, 0xf6, 0x29, 0xe9, 0x1a, - 0xf9, 0x86, 0x29, 0x35, 0x94, 0x82, 0xbe, 0x23, 0x89, 0xea, 0x18, 0xe1, 0x62, 0x3e, 0xcc, 0x41, - 0x84, 0x54, 0x5f, 0x27, 0x89, 0xe8, 0xd8, 0x40, 0x72, 0xc9, 0x64, 0xfb, 0xd6, 0x4c, 0x72, 0xe1, - 0xba, 0x39, 0xaa, 0xb5, 0x66, 0x7d, 0xa3, 0xb4, 0xd2, 0xac, 0xaf, 0x17, 0x4b, 0xe5, 0x02, 0x56, - 0x8e, 0x43, 0x81, 0x3c, 0x36, 0x2b, 0xf5, 0xe6, 0x62, 0x79, 0xb5, 0xdc, 0x28, 0x2f, 0x16, 0x36, - 0x15, 0x05, 0xe6, 0xd4, 0xf2, 0xd3, 0x36, 0xca, 0xf5, 0x46, 0x73, 0xa9, 0x58, 0x59, 0x2d, 0x2f, - 0x16, 0xb6, 0xdc, 0x9f, 0x57, 0x2b, 0x6b, 0x95, 0x46, 0x53, 0x2d, 0x17, 0x4b, 0x2b, 0xe5, 0xc5, - 0xc2, 0xb6, 0x72, 0x39, 0x5c, 0x56, 0xad, 0x35, 0x8b, 0xeb, 0xeb, 0x6a, 0xed, 0x6c, 0xb9, 0xc9, - 0xfe, 0xa8, 0x17, 0x74, 0x5a, 0x50, 0xa3, 0x59, 0x5f, 0x29, 0xaa, 0xe5, 0xe2, 0xc2, 0x6a, 0xb9, - 0x70, 0x3f, 0x7a, 0x96, 0x0c, 0xb3, 0x6b, 0xda, 0x05, 0x5c, 0xdf, 0xd6, 0x2c, 0xac, 0x9d, 0xef, - 0x60, 0x74, 0xad, 0x00, 0x9e, 0xe8, 0x53, 0x61, 0xbc, 0xca, 0x3c, 0x5e, 0x37, 0xf7, 0x11, 0x30, - 0x57, 0x44, 0x04, 0x60, 0xff, 0xe2, 0x37, 0x83, 0x15, 0x0e, 0xb0, 0x27, 0x26, 0xa4, 0x97, 0x0c, - 0xb1, 0x9f, 0x7f, 0x04, 0x20, 0x86, 0xbe, 0x2c, 0xc3, 0x5c, 0xc5, 0xd8, 0xd3, 0x1d, 0xbc, 0x8c, - 0x0d, 0x6c, 0xb9, 0xe3, 0x80, 0x10, 0x0c, 0x0f, 0xcb, 0x21, 0x18, 0x96, 0x78, 0x18, 0x6e, 0xe9, - 0x23, 0x36, 0xbe, 0x8c, 0x88, 0xd1, 0xf6, 0x2a, 0x98, 0xd2, 0x49, 0xbe, 0x92, 0xde, 0x66, 0x12, - 0x0b, 0x12, 0x94, 0xeb, 0x60, 0x96, 0xbe, 0x2c, 0xe9, 0x1d, 0x7c, 0x2f, 0xbe, 0xc4, 0xc6, 0x5d, - 0x3e, 0x11, 0xfd, 0x92, 0xdf, 0xf8, 0x2a, 0x1c, 0x96, 0x3f, 0x91, 0x94, 0xa9, 0x64, 0x60, 0xbe, - 0xf8, 0x91, 0xd0, 0xfc, 0xf6, 0xb5, 0x32, 0x1d, 0xfd, 0x40, 0x82, 0xe9, 0xba, 0x63, 0x76, 0x5d, - 0x95, 0xd5, 0x8d, 0x2d, 0x31, 0x70, 0x3f, 0x11, 0x6e, 0x63, 0x25, 0x1e, 0xdc, 0xc7, 0xf5, 0x91, - 0x63, 0xa8, 0x80, 0x88, 0x16, 0xf6, 0x1d, 0xbf, 0x85, 0x2d, 0x71, 0xa8, 0xdc, 0x9a, 0x88, 0xda, - 0x0f, 0x61, 0xfb, 0x7a, 0xb1, 0x0c, 0x05, 0x4f, 0xcd, 0x9c, 0xd2, 0xae, 0x65, 0x61, 0xc3, 0x11, - 0x03, 0xe1, 0x2f, 0xc3, 0x20, 0xac, 0xf0, 0x20, 0xdc, 0x1a, 0xa3, 0xcc, 0x5e, 0x29, 0x29, 0xb6, - 0xb1, 0x0f, 0xf9, 0x68, 0xde, 0xcb, 0xa1, 0xf9, 0x93, 0xc9, 0xd9, 0x4a, 0x06, 0xe9, 0xca, 0x10, - 0x88, 0x1e, 0x87, 0x82, 0x3b, 0x26, 0x95, 0x1a, 0x95, 0xb3, 0xe5, 0x66, 0xa5, 0x7a, 0xb6, 0xd2, - 0x28, 0x17, 0x30, 0x7a, 0x91, 0x0c, 0x33, 0x94, 0x35, 0x15, 0xef, 0x99, 0x17, 0x04, 0x7b, 0xbd, - 0x2f, 0x27, 0x34, 0x16, 0xc2, 0x25, 0x44, 0xb4, 0x8c, 0x5f, 0x4c, 0x60, 0x2c, 0xc4, 0x90, 0x7b, - 0x24, 0xf5, 0x56, 0xfb, 0x9a, 0xc1, 0x56, 0x9f, 0xd6, 0xd2, 0xb7, 0xb7, 0x7a, 0x71, 0x16, 0x80, + // 19697 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xfd, 0x7b, 0x9c, 0x24, 0x49, + 0x59, 0x2f, 0x8c, 0x4f, 0x65, 0x56, 0x55, 0x77, 0x3f, 0x7d, 0x99, 0x9a, 0xdc, 0x99, 0xd9, 0xd9, + 0xd8, 0x65, 0x76, 0x9d, 0x5d, 0x96, 0x75, 0x59, 0x7a, 0x97, 0x05, 0x91, 0x5d, 0xf6, 0x56, 0x5d, + 0x5d, 0xdd, 0x5d, 0xbb, 0xdd, 0x55, 0x6d, 0x56, 0xf5, 0x0c, 0xab, 0xc7, 0x5f, 0x9d, 0x9c, 0xaa, + 0xe8, 0xee, 0xdc, 0xa9, 0xce, 0x2c, 0x33, 0xb3, 0x7b, 0x76, 0xf8, 0x7d, 0xce, 0x7b, 0x44, 0x5c, + 0x41, 0x91, 0x83, 0x88, 0xa8, 0x80, 0xdc, 0x59, 0x38, 0x20, 0x17, 0xb9, 0x1f, 0x50, 0x01, 0xb9, + 0xc8, 0x45, 0x44, 0x04, 0x11, 0x44, 0xf7, 0x15, 0x04, 0x11, 0xcf, 0x47, 0x0e, 0xaf, 0xbe, 0x47, + 0x10, 0x85, 0xd7, 0xf7, 0x93, 0x11, 0x91, 0x97, 0xa8, 0xae, 0xcc, 0x8a, 0xac, 0xae, 0xac, 0x5e, + 0xe4, 0xfd, 0x2f, 0x33, 0x32, 0xf2, 0x89, 0x27, 0x9e, 0xef, 0x13, 0x11, 0x4f, 0x44, 0x3c, 0xf1, + 0x04, 0x9c, 0xea, 0x9e, 0xbf, 0xb9, 0x6b, 0x99, 0x8e, 0x69, 0xdf, 0xdc, 0x32, 0x77, 0x76, 0x34, + 0xa3, 0x6d, 0xcf, 0x93, 0x77, 0x65, 0x42, 0x33, 0x2e, 0x39, 0x97, 0xba, 0x18, 0x5d, 0xd7, 0xbd, + 0xb0, 0x75, 0x73, 0x47, 0x3f, 0x7f, 0x73, 0xf7, 0xfc, 0xcd, 0x3b, 0x66, 0x1b, 0x77, 0xbc, 0x1f, + 0xc8, 0x0b, 0xcb, 0x8e, 0x6e, 0x88, 0xca, 0xd5, 0x31, 0x5b, 0x5a, 0xc7, 0x76, 0x4c, 0x0b, 0xb3, + 0x9c, 0x27, 0x83, 0x22, 0xf1, 0x1e, 0x36, 0x1c, 0x8f, 0xc2, 0x55, 0x5b, 0xa6, 0xb9, 0xd5, 0xc1, + 0xf4, 0xdb, 0xf9, 0xdd, 0xcd, 0x9b, 0x6d, 0xc7, 0xda, 0x6d, 0x39, 0xec, 0xeb, 0x35, 0xbd, 0x5f, + 0xdb, 0xd8, 0x6e, 0x59, 0x7a, 0xd7, 0x31, 0x2d, 0x9a, 0xe3, 0xcc, 0x9b, 0x5e, 0x30, 0x09, 0xb2, + 0xda, 0x6d, 0xa1, 0x6f, 0x4f, 0x80, 0x5c, 0xec, 0x76, 0xd1, 0x47, 0x25, 0x80, 0x65, 0xec, 0x9c, + 0xc5, 0x96, 0xad, 0x9b, 0x06, 0x3a, 0x0a, 0x13, 0x2a, 0xfe, 0x99, 0x5d, 0x6c, 0x3b, 0xb7, 0x67, + 0x9f, 0xf3, 0x75, 0x39, 0x83, 0x1e, 0x96, 0x60, 0x52, 0xc5, 0x76, 0xd7, 0x34, 0x6c, 0xac, 0xdc, + 0x03, 0x39, 0x6c, 0x59, 0xa6, 0x75, 0x2a, 0x73, 0x4d, 0xe6, 0x86, 0xe9, 0x5b, 0x6f, 0x9c, 0x67, + 0xd5, 0x9f, 0x57, 0xbb, 0xad, 0xf9, 0x62, 0xb7, 0x3b, 0x1f, 0x50, 0x9a, 0xf7, 0x7e, 0x9a, 0x2f, + 0xbb, 0x7f, 0xa8, 0xf4, 0x47, 0xe5, 0x14, 0x4c, 0xec, 0xd1, 0x0c, 0xa7, 0xa4, 0x6b, 0x32, 0x37, + 0x4c, 0xa9, 0xde, 0xab, 0xfb, 0xa5, 0x8d, 0x1d, 0x4d, 0xef, 0xd8, 0xa7, 0x64, 0xfa, 0x85, 0xbd, + 0xa2, 0x57, 0x67, 0x20, 0x47, 0x88, 0x28, 0x25, 0xc8, 0xb6, 0xcc, 0x36, 0x26, 0xc5, 0xcf, 0xdd, + 0x7a, 0xb3, 0x78, 0xf1, 0xf3, 0x25, 0xb3, 0x8d, 0x55, 0xf2, 0xb3, 0x72, 0x0d, 0x4c, 0x7b, 0x62, + 0x09, 0xd8, 0x08, 0x27, 0x9d, 0xb9, 0x15, 0xb2, 0x6e, 0x7e, 0x65, 0x12, 0xb2, 0xd5, 0x8d, 0xd5, + 0xd5, 0xc2, 0x11, 0xe5, 0x18, 0xcc, 0x6e, 0x54, 0xef, 0xab, 0xd6, 0xce, 0x55, 0x9b, 0x65, 0x55, + 0xad, 0xa9, 0x85, 0x8c, 0x32, 0x0b, 0x53, 0x0b, 0xc5, 0xc5, 0x66, 0xa5, 0xba, 0xbe, 0xd1, 0x28, + 0x48, 0xe8, 0xe5, 0x32, 0xcc, 0xd5, 0xb1, 0xb3, 0x88, 0xf7, 0xf4, 0x16, 0xae, 0x3b, 0x9a, 0x83, + 0xd1, 0xf3, 0x33, 0xbe, 0x30, 0x95, 0x0d, 0xb7, 0x50, 0xff, 0x13, 0xab, 0xc0, 0x93, 0xf6, 0x55, + 0x80, 0xa7, 0x30, 0xcf, 0xfe, 0x9e, 0x0f, 0xa5, 0xa9, 0x61, 0x3a, 0x67, 0x9e, 0x00, 0xd3, 0xa1, + 0x6f, 0xca, 0x1c, 0xc0, 0x42, 0xb1, 0x74, 0xdf, 0xb2, 0x5a, 0xdb, 0xa8, 0x2e, 0x16, 0x8e, 0xb8, + 0xef, 0x4b, 0x35, 0xb5, 0xcc, 0xde, 0x33, 0xe8, 0xbb, 0x99, 0x10, 0x98, 0x8b, 0x3c, 0x98, 0xf3, + 0x83, 0x99, 0xe9, 0x03, 0x28, 0x7a, 0x9d, 0x0f, 0xce, 0x32, 0x07, 0xce, 0x93, 0x92, 0x91, 0x4b, + 0x1f, 0xa0, 0x87, 0x24, 0x98, 0xac, 0x6f, 0xef, 0x3a, 0x6d, 0xf3, 0xa2, 0x81, 0xa6, 0x7c, 0x64, + 0xd0, 0x37, 0xc3, 0x32, 0xb9, 0x8b, 0x97, 0xc9, 0x0d, 0xfb, 0x2b, 0xc1, 0x28, 0x44, 0x48, 0xe3, + 0x95, 0xbe, 0x34, 0x8a, 0x9c, 0x34, 0x9e, 0x20, 0x4a, 0x28, 0x7d, 0x39, 0xbc, 0xe4, 0xa9, 0x90, + 0xab, 0x77, 0xb5, 0x16, 0x46, 0x9f, 0x92, 0x61, 0x66, 0x15, 0x6b, 0x7b, 0xb8, 0xd8, 0xed, 0x5a, + 0xe6, 0x1e, 0x46, 0xa5, 0x40, 0x5f, 0x4f, 0xc1, 0x84, 0xed, 0x66, 0xaa, 0xb4, 0x49, 0x0d, 0xa6, + 0x54, 0xef, 0x55, 0x39, 0x0d, 0xa0, 0xb7, 0xb1, 0xe1, 0xe8, 0x8e, 0x8e, 0xed, 0x53, 0xd2, 0x35, + 0xf2, 0x0d, 0x53, 0x6a, 0x28, 0x05, 0x7d, 0x5b, 0x12, 0xd5, 0x31, 0xc2, 0xc5, 0x7c, 0x98, 0x83, + 0x08, 0xa9, 0xbe, 0x46, 0x12, 0xd1, 0xb1, 0x81, 0xe4, 0x92, 0xc9, 0xf6, 0x2d, 0x99, 0xe4, 0xc2, + 0x75, 0x73, 0x54, 0x6b, 0xcd, 0xfa, 0x46, 0x69, 0xa5, 0x59, 0x5f, 0x2f, 0x96, 0xca, 0x05, 0xac, + 0x1c, 0x87, 0x02, 0x79, 0x6c, 0x56, 0xea, 0xcd, 0xc5, 0xf2, 0x6a, 0xb9, 0x51, 0x5e, 0x2c, 0x6c, + 0x2a, 0x0a, 0xcc, 0xa9, 0xe5, 0x9f, 0xd8, 0x28, 0xd7, 0x1b, 0xcd, 0xa5, 0x62, 0x65, 0xb5, 0xbc, + 0x58, 0xd8, 0x72, 0x7f, 0x5e, 0xad, 0xac, 0x55, 0x1a, 0x4d, 0xb5, 0x5c, 0x2c, 0xad, 0x94, 0x17, + 0x0b, 0xdb, 0xca, 0xe5, 0x70, 0x59, 0xb5, 0xd6, 0x2c, 0xae, 0xaf, 0xab, 0xb5, 0xb3, 0xe5, 0x26, + 0xfb, 0xa3, 0x5e, 0xd0, 0x69, 0x41, 0x8d, 0x66, 0x7d, 0xa5, 0xa8, 0x96, 0x8b, 0x0b, 0xab, 0xe5, + 0xc2, 0x03, 0xe8, 0x59, 0x32, 0xcc, 0xae, 0x69, 0x17, 0x70, 0x7d, 0x5b, 0xb3, 0xb0, 0x76, 0xbe, + 0x83, 0xd1, 0xb5, 0x02, 0x78, 0xa2, 0x4f, 0x85, 0xf1, 0x2a, 0xf3, 0x78, 0xdd, 0xdc, 0x47, 0xc0, + 0x5c, 0x11, 0x11, 0x80, 0xfd, 0x8b, 0xdf, 0x0c, 0x56, 0x38, 0xc0, 0x9e, 0x9c, 0x90, 0x5e, 0x32, + 0xc4, 0x7e, 0xee, 0x51, 0x80, 0x18, 0x7a, 0x44, 0x86, 0xb9, 0x8a, 0xb1, 0xa7, 0x3b, 0x78, 0x19, + 0x1b, 0xd8, 0x72, 0xc7, 0x01, 0x21, 0x18, 0x1e, 0x96, 0x43, 0x30, 0x2c, 0xf1, 0x30, 0xdc, 0xd2, + 0x47, 0x6c, 0x7c, 0x19, 0x11, 0xa3, 0xed, 0x55, 0x30, 0xa5, 0x93, 0x7c, 0x25, 0xbd, 0xcd, 0x24, + 0x16, 0x24, 0x28, 0xd7, 0xc1, 0x2c, 0x7d, 0x59, 0xd2, 0x3b, 0xf8, 0x3e, 0x7c, 0x89, 0x8d, 0xbb, + 0x7c, 0x22, 0xfa, 0x65, 0xbf, 0xf1, 0x55, 0x38, 0x2c, 0x7f, 0x2c, 0x29, 0x53, 0xc9, 0xc0, 0x7c, + 0xd1, 0xa3, 0xa1, 0xf9, 0xed, 0x6b, 0x65, 0x3a, 0xfa, 0xbe, 0x04, 0xd3, 0x75, 0xc7, 0xec, 0xba, + 0x2a, 0xab, 0x1b, 0x5b, 0x62, 0xe0, 0x7e, 0x3c, 0xdc, 0xc6, 0x4a, 0x3c, 0xb8, 0x4f, 0xe8, 0x23, + 0xc7, 0x50, 0x01, 0x11, 0x2d, 0xec, 0xdb, 0x7e, 0x0b, 0x5b, 0xe2, 0x50, 0xb9, 0x35, 0x11, 0xb5, + 0x1f, 0xc0, 0xf6, 0xf5, 0x22, 0x19, 0x0a, 0x9e, 0x9a, 0x39, 0xa5, 0x5d, 0xcb, 0xc2, 0x86, 0x23, + 0x06, 0xc2, 0x5f, 0x86, 0x41, 0x58, 0xe1, 0x41, 0xb8, 0x35, 0x46, 0x99, 0xbd, 0x52, 0x52, 0x6c, + 0x63, 0x1f, 0xf4, 0xd1, 0xbc, 0x8f, 0x43, 0xf3, 0xc7, 0x93, 0xb3, 0x95, 0x0c, 0xd2, 0x95, 0x21, + 0x10, 0x3d, 0x0e, 0x05, 0x77, 0x4c, 0x2a, 0x35, 0x2a, 0x67, 0xcb, 0xcd, 0x4a, 0xf5, 0x6c, 0xa5, + 0x51, 0x2e, 0x60, 0xf4, 0x42, 0x19, 0x66, 0x28, 0x6b, 0x2a, 0xde, 0x33, 0x2f, 0x08, 0xf6, 0x7a, + 0x8f, 0x24, 0x34, 0x16, 0xc2, 0x25, 0x44, 0xb4, 0x8c, 0x5f, 0x4a, 0x60, 0x2c, 0xc4, 0x90, 0x7b, + 0x34, 0xf5, 0x56, 0xfb, 0x9a, 0xc1, 0x56, 0x9f, 0xd6, 0xd2, 0xb7, 0xb7, 0x7a, 0x51, 0x16, 0x80, 0x56, 0xf2, 0xac, 0x8e, 0x2f, 0xa2, 0xb5, 0x00, 0x13, 0x4e, 0x6d, 0x33, 0x03, 0xd5, 0x56, 0xea, - 0xa7, 0xb6, 0xef, 0x0d, 0x8f, 0x59, 0x0b, 0x3c, 0x7a, 0x37, 0x45, 0x8a, 0xdb, 0xe5, 0x24, 0x7a, + 0xa7, 0xb6, 0xef, 0x09, 0x8f, 0x59, 0x0b, 0x3c, 0x7a, 0x37, 0x45, 0x8a, 0xdb, 0xe5, 0x24, 0x7a, 0x76, 0xe8, 0x29, 0x8a, 0xc4, 0x5b, 0x9d, 0x57, 0xc1, 0x14, 0x79, 0xac, 0x6a, 0x3b, 0x98, 0xb5, 0xa1, 0x20, 0x41, 0x39, 0x03, 0x33, 0x34, 0x63, 0xcb, 0x34, 0xdc, 0xfa, 0x64, 0x49, 0x06, 0x2e, 0xcd, 0x05, 0xb1, 0x65, 0x61, 0xcd, 0x31, 0x2d, 0x42, 0x23, 0x47, 0x41, 0x0c, 0x25, 0xa1, 0x6f, - 0xfa, 0xad, 0xb0, 0xcc, 0x69, 0xce, 0xe3, 0x93, 0x54, 0x25, 0x99, 0xde, 0xec, 0x0d, 0xd7, 0xfe, + 0xf8, 0xad, 0xb0, 0xcc, 0x69, 0xce, 0x13, 0x93, 0x54, 0x25, 0x99, 0xde, 0xec, 0x0d, 0xd7, 0xfe, 0x68, 0xab, 0x6b, 0xba, 0x68, 0x2f, 0x91, 0xa9, 0x1d, 0x56, 0x4e, 0x82, 0xc2, 0x52, 0xdd, 0xbc, - 0xa5, 0x5a, 0xb5, 0x51, 0xae, 0x36, 0x0a, 0x9b, 0x7d, 0x35, 0x6a, 0x0b, 0xbd, 0x2e, 0x0b, 0xd9, - 0x7b, 0x4c, 0xdd, 0x40, 0x0f, 0x66, 0x38, 0x95, 0x30, 0xb0, 0x73, 0xd1, 0xb4, 0x2e, 0xf8, 0x0d, - 0x35, 0x48, 0x88, 0xc7, 0x26, 0x50, 0x25, 0x79, 0xa0, 0x2a, 0x65, 0xfb, 0xa9, 0xd2, 0xaf, 0x84, - 0x55, 0xe9, 0x0e, 0x5e, 0x95, 0xae, 0xef, 0x23, 0x7f, 0x97, 0xf9, 0x88, 0x0e, 0xe0, 0xe3, 0x7e, - 0x07, 0x70, 0x17, 0x07, 0xe3, 0x63, 0xc5, 0xc8, 0x24, 0x03, 0xf0, 0x4b, 0xa9, 0x36, 0xfc, 0x7e, - 0x50, 0x6f, 0x45, 0x40, 0xbd, 0xdd, 0xa7, 0x4f, 0xd0, 0xf7, 0x77, 0x1d, 0xf7, 0xef, 0xef, 0x26, + 0xa5, 0x5a, 0xb5, 0x51, 0xae, 0x36, 0x0a, 0x9b, 0x7d, 0x35, 0x6a, 0x0b, 0xbd, 0x26, 0x0b, 0xd9, + 0x7b, 0x4d, 0xdd, 0x40, 0x0f, 0x65, 0x38, 0x95, 0x30, 0xb0, 0x73, 0xd1, 0xb4, 0x2e, 0xf8, 0x0d, + 0x35, 0x48, 0x88, 0xc7, 0x26, 0x50, 0x25, 0x79, 0xa0, 0x2a, 0x65, 0xfb, 0xa9, 0xd2, 0xaf, 0x86, + 0x55, 0xe9, 0x0e, 0x5e, 0x95, 0xae, 0xef, 0x23, 0x7f, 0x97, 0xf9, 0x88, 0x0e, 0xe0, 0x63, 0x7e, + 0x07, 0x70, 0x37, 0x07, 0xe3, 0xe3, 0xc5, 0xc8, 0x24, 0x03, 0xf0, 0x4b, 0xa9, 0x36, 0xfc, 0x7e, + 0x50, 0x6f, 0x45, 0x40, 0xbd, 0xdd, 0xa7, 0x4f, 0xd0, 0xf7, 0x77, 0x1d, 0x0f, 0xec, 0xef, 0x26, 0x2e, 0x28, 0x27, 0xe0, 0xd8, 0x62, 0x65, 0x69, 0xa9, 0xac, 0x96, 0xab, 0x8d, 0x66, 0xb5, 0xdc, - 0x38, 0x57, 0x53, 0xef, 0x2d, 0x74, 0xd0, 0x6b, 0x65, 0x00, 0x57, 0x42, 0x25, 0xcd, 0x68, 0xe1, - 0x8e, 0x58, 0x8f, 0xfe, 0xbf, 0xa4, 0x64, 0x7d, 0x42, 0x40, 0x3f, 0x02, 0xce, 0x57, 0x48, 0xe2, - 0xad, 0x32, 0x92, 0x58, 0x32, 0x50, 0xdf, 0xfc, 0x48, 0xb0, 0x3d, 0x2f, 0x83, 0xa3, 0x1e, 0x3d, - 0x96, 0xbd, 0xff, 0xb4, 0xef, 0x6d, 0x59, 0x98, 0x63, 0xb0, 0x78, 0xf3, 0xf8, 0xe7, 0x66, 0x44, + 0x38, 0x57, 0x53, 0xef, 0x2b, 0x74, 0xd0, 0xab, 0x65, 0x00, 0x57, 0x42, 0x25, 0xcd, 0x68, 0xe1, + 0x8e, 0x58, 0x8f, 0xfe, 0xbf, 0xa4, 0x64, 0x7d, 0x42, 0x40, 0x3f, 0x02, 0xce, 0x97, 0x49, 0xe2, + 0xad, 0x32, 0x92, 0x58, 0x32, 0x50, 0xdf, 0xf8, 0x68, 0xb0, 0x3d, 0x2f, 0x83, 0xa3, 0x1e, 0x3d, + 0x96, 0xbd, 0xff, 0xb4, 0xef, 0xad, 0x59, 0x98, 0x63, 0xb0, 0x78, 0xf3, 0xf8, 0xe7, 0x64, 0x44, 0x26, 0xf2, 0x08, 0x26, 0xd9, 0xb4, 0xdd, 0xeb, 0xde, 0xfd, 0x77, 0x65, 0x19, 0xa6, 0xbb, 0xd8, - 0xda, 0xd1, 0x6d, 0x5b, 0x37, 0x0d, 0xba, 0x20, 0x37, 0x77, 0xeb, 0xa3, 0x7d, 0x89, 0x93, 0xb5, + 0xda, 0xd1, 0x6d, 0x5b, 0x37, 0x0d, 0xba, 0x20, 0x37, 0x77, 0xeb, 0x63, 0x7d, 0x89, 0x93, 0xb5, 0xcb, 0xf9, 0x75, 0xcd, 0x72, 0xf4, 0x96, 0xde, 0xd5, 0x0c, 0x67, 0x3d, 0xc8, 0xac, 0x86, 0xff, - 0x44, 0x2f, 0x4c, 0x38, 0xad, 0xe1, 0x6b, 0x12, 0xa1, 0x12, 0xbf, 0x9b, 0x60, 0x4a, 0x12, 0x4b, - 0x30, 0x99, 0x5a, 0x7c, 0x2c, 0x55, 0xb5, 0xe8, 0x83, 0xf7, 0x96, 0x72, 0x05, 0x9c, 0xa8, 0x54, + 0x44, 0x2f, 0x48, 0x38, 0xad, 0xe1, 0x6b, 0x12, 0xa1, 0x12, 0xbf, 0x97, 0x60, 0x4a, 0x12, 0x4b, + 0x30, 0x99, 0x5a, 0x7c, 0x34, 0x55, 0xb5, 0xe8, 0x83, 0xf7, 0x96, 0x72, 0x05, 0x9c, 0xa8, 0x54, 0x4b, 0x35, 0x55, 0x2d, 0x97, 0x1a, 0xcd, 0xf5, 0xb2, 0xba, 0x56, 0xa9, 0xd7, 0x2b, 0xb5, 0x6a, - 0xfd, 0x20, 0xad, 0x1d, 0x7d, 0x52, 0xf6, 0x35, 0x66, 0x11, 0xb7, 0x3a, 0xba, 0x81, 0xd1, 0x5d, - 0x07, 0x54, 0x18, 0x7e, 0xd5, 0x47, 0x1c, 0x67, 0x56, 0x7e, 0x04, 0xce, 0xaf, 0x49, 0x8e, 0x73, - 0x7f, 0x82, 0xff, 0x81, 0x9b, 0xff, 0x97, 0x65, 0x38, 0x16, 0x6a, 0x88, 0x2a, 0xde, 0x19, 0xd9, - 0x4a, 0xde, 0xcf, 0x87, 0xdb, 0x6e, 0x85, 0xc7, 0xb4, 0x9f, 0x35, 0xbd, 0x8f, 0x8d, 0x08, 0x58, - 0xdf, 0xec, 0xc3, 0xba, 0xca, 0xc1, 0xfa, 0xe4, 0x21, 0x68, 0x26, 0x43, 0xf6, 0xb7, 0x53, 0x45, - 0xf6, 0x0a, 0x38, 0xb1, 0x5e, 0x54, 0x1b, 0x95, 0x52, 0x65, 0xbd, 0xe8, 0x8e, 0xa3, 0xa1, 0x21, - 0x3b, 0xc2, 0x5c, 0xe7, 0x41, 0xef, 0x8b, 0xef, 0x07, 0xb3, 0x70, 0x55, 0xff, 0x8e, 0xb6, 0xb4, - 0xad, 0x19, 0x5b, 0x18, 0xe9, 0x22, 0x50, 0x2f, 0xc2, 0x44, 0x8b, 0x64, 0xa7, 0x38, 0x87, 0xb7, - 0x6e, 0x62, 0xfa, 0x72, 0x5a, 0x82, 0xea, 0xfd, 0x8a, 0xde, 0x19, 0x56, 0x88, 0x06, 0xaf, 0x10, - 0x4f, 0x8d, 0x07, 0x6f, 0x1f, 0xdf, 0x11, 0xba, 0xf1, 0x19, 0x5f, 0x37, 0xce, 0x71, 0xba, 0x51, - 0x3a, 0x18, 0xf9, 0x64, 0x6a, 0xf2, 0x47, 0x8f, 0x84, 0x0e, 0x20, 0x52, 0x9b, 0xf4, 0xe8, 0x51, - 0xa1, 0x6f, 0x77, 0xff, 0x2a, 0x19, 0xf2, 0x8b, 0xb8, 0x83, 0x45, 0x57, 0x22, 0xbf, 0x2d, 0x89, - 0x6e, 0x88, 0x50, 0x18, 0x28, 0xed, 0xe8, 0xd5, 0x11, 0x47, 0xdf, 0xc1, 0xb6, 0xa3, 0xed, 0x74, - 0x89, 0xa8, 0x65, 0x35, 0x48, 0x40, 0xbf, 0x20, 0x89, 0x6c, 0x97, 0xc4, 0x14, 0xf3, 0x1f, 0x63, - 0x4d, 0xf1, 0x73, 0x12, 0x4c, 0xd6, 0xb1, 0x53, 0xb3, 0xda, 0xd8, 0x42, 0xf5, 0x00, 0xa3, 0x6b, - 0x60, 0x9a, 0x80, 0xe2, 0x4e, 0x33, 0x7d, 0x9c, 0xc2, 0x49, 0xca, 0xf5, 0x30, 0xe7, 0xbf, 0x92, - 0xdf, 0x59, 0x37, 0xde, 0x93, 0x8a, 0xfe, 0x31, 0x23, 0xba, 0x8b, 0xcb, 0x96, 0x0c, 0x19, 0x37, - 0x11, 0xad, 0x54, 0x6c, 0x47, 0x36, 0x96, 0x54, 0xfa, 0x1b, 0x5d, 0x6f, 0x97, 0x00, 0x36, 0x0c, - 0xdb, 0x93, 0xeb, 0x63, 0x13, 0xc8, 0x15, 0xfd, 0x73, 0x26, 0xd9, 0x2c, 0x26, 0x28, 0x27, 0x42, - 0x62, 0xaf, 0x4f, 0xb0, 0xb6, 0x10, 0x49, 0x2c, 0x7d, 0x99, 0x7d, 0x6d, 0x0e, 0xf2, 0xe7, 0xb4, - 0x4e, 0x07, 0x3b, 0xe8, 0xeb, 0x12, 0xe4, 0x4b, 0x16, 0xd6, 0x1c, 0x1c, 0x16, 0x1d, 0x82, 0x49, - 0xcb, 0x34, 0x9d, 0x75, 0xcd, 0xd9, 0x66, 0x72, 0xf3, 0xdf, 0x99, 0xc3, 0xc0, 0x6f, 0x85, 0xbb, - 0x8f, 0xbb, 0x78, 0xd1, 0xfd, 0x38, 0x57, 0x5b, 0x5a, 0xd0, 0x3c, 0x2d, 0x24, 0xa2, 0xff, 0x40, - 0x30, 0xb9, 0x63, 0xe0, 0x1d, 0xd3, 0xd0, 0x5b, 0x9e, 0xcd, 0xe9, 0xbd, 0xa3, 0x0f, 0xfb, 0x32, - 0x5d, 0xe0, 0x64, 0x3a, 0x2f, 0x5c, 0x4a, 0x32, 0x81, 0xd6, 0x87, 0xe8, 0x3d, 0xae, 0x86, 0x2b, - 0x69, 0x67, 0xd0, 0x6c, 0xd4, 0x9a, 0x25, 0xb5, 0x5c, 0x6c, 0x94, 0x9b, 0xab, 0xb5, 0x52, 0x71, - 0xb5, 0xa9, 0x96, 0xd7, 0x6b, 0x05, 0x8c, 0xfe, 0x4e, 0x72, 0x85, 0xdb, 0x32, 0xf7, 0xb0, 0x85, - 0x96, 0x85, 0xe4, 0x1c, 0x27, 0x13, 0x86, 0xc1, 0xaf, 0x08, 0x3b, 0x6d, 0x30, 0xe9, 0x30, 0x0e, - 0x22, 0x94, 0xf7, 0x23, 0x42, 0xcd, 0x3d, 0x96, 0xd4, 0x23, 0x40, 0xd2, 0xff, 0x5b, 0x82, 0x89, - 0x92, 0x69, 0xec, 0x61, 0xcb, 0x09, 0xcf, 0x77, 0xc2, 0xd2, 0xcc, 0xf0, 0xd2, 0x74, 0x07, 0x49, - 0x6c, 0x38, 0x96, 0xd9, 0xf5, 0x26, 0x3c, 0xde, 0x2b, 0x7a, 0x63, 0x52, 0x09, 0xb3, 0x92, 0xa3, - 0x17, 0x3e, 0xfb, 0x17, 0xc4, 0xb1, 0x27, 0xf7, 0x34, 0x80, 0xd7, 0x26, 0xc1, 0xa5, 0x3f, 0x03, - 0xe9, 0x77, 0x29, 0x5f, 0x91, 0x61, 0x96, 0x36, 0xbe, 0x3a, 0x26, 0x16, 0x1a, 0xaa, 0x85, 0x97, - 0x1c, 0x7b, 0x84, 0xbf, 0x72, 0x84, 0x13, 0x7f, 0x5e, 0xeb, 0x76, 0xfd, 0xe5, 0xe7, 0x95, 0x23, - 0x2a, 0x7b, 0xa7, 0x6a, 0xbe, 0x90, 0x87, 0xac, 0xb6, 0xeb, 0x6c, 0xa3, 0x1f, 0x08, 0x4f, 0x3e, - 0xb9, 0xce, 0x80, 0xf1, 0x13, 0x01, 0xc9, 0x71, 0xc8, 0x39, 0xe6, 0x05, 0xec, 0xc9, 0x81, 0xbe, - 0xb8, 0x70, 0x68, 0xdd, 0x6e, 0x83, 0x7c, 0x60, 0x70, 0x78, 0xef, 0xae, 0xad, 0xa3, 0xb5, 0x5a, - 0xe6, 0xae, 0xe1, 0x54, 0xbc, 0x25, 0xe8, 0x20, 0x01, 0x7d, 0x31, 0x23, 0x32, 0x99, 0x15, 0x60, - 0x30, 0x19, 0x64, 0xe7, 0x87, 0x68, 0x4a, 0xf3, 0x70, 0x63, 0x71, 0x7d, 0xbd, 0xd9, 0xa8, 0xdd, - 0x5b, 0xae, 0x06, 0x86, 0x67, 0xb3, 0x52, 0x6d, 0x36, 0x56, 0xca, 0xcd, 0xd2, 0x86, 0x4a, 0xd6, - 0x09, 0x8b, 0xa5, 0x52, 0x6d, 0xa3, 0xda, 0x28, 0x60, 0xf4, 0x16, 0x09, 0x66, 0x4a, 0x1d, 0xd3, - 0xf6, 0x11, 0xbe, 0x3a, 0x40, 0xd8, 0x17, 0x63, 0x26, 0x24, 0x46, 0xf4, 0x6f, 0x19, 0x51, 0xa7, - 0x03, 0x4f, 0x20, 0x21, 0xf2, 0x11, 0xbd, 0xd4, 0x1b, 0x85, 0x9c, 0x0e, 0x06, 0xd3, 0x4b, 0xbf, - 0x49, 0xfc, 0xea, 0x53, 0x60, 0xa2, 0x48, 0x15, 0x03, 0xfd, 0x75, 0x06, 0xf2, 0x25, 0xd3, 0xd8, - 0xd4, 0xb7, 0x5c, 0x63, 0x0e, 0x1b, 0xda, 0xf9, 0x0e, 0x5e, 0xd4, 0x1c, 0x6d, 0x4f, 0xc7, 0x17, - 0x49, 0x05, 0x26, 0xd5, 0x9e, 0x54, 0x97, 0x29, 0x96, 0x82, 0xcf, 0xef, 0x6e, 0x11, 0xa6, 0x26, - 0xd5, 0x70, 0x92, 0xf2, 0x64, 0xb8, 0x9c, 0xbe, 0xae, 0x5b, 0xd8, 0xc2, 0x1d, 0xac, 0xd9, 0xd8, - 0x9d, 0x16, 0x19, 0xb8, 0x43, 0x94, 0x76, 0x52, 0x8d, 0xfa, 0xac, 0x9c, 0x81, 0x19, 0xfa, 0x89, - 0x98, 0x22, 0x36, 0x51, 0xe3, 0x49, 0x95, 0x4b, 0x53, 0x1e, 0x07, 0x39, 0xfc, 0x80, 0x63, 0x69, - 0xa7, 0xda, 0x04, 0xaf, 0xcb, 0xe7, 0xa9, 0xd7, 0xe1, 0xbc, 0xe7, 0x75, 0x38, 0x5f, 0x27, 0x3e, - 0x89, 0x2a, 0xcd, 0x85, 0x5e, 0x3e, 0xe9, 0x1b, 0x12, 0xff, 0x2e, 0x05, 0x8a, 0xa1, 0x40, 0xd6, - 0xd0, 0x76, 0x30, 0xd3, 0x0b, 0xf2, 0xac, 0xdc, 0x08, 0x47, 0xb5, 0x3d, 0xcd, 0xd1, 0xac, 0x55, - 0xb3, 0xa5, 0x75, 0xc8, 0xe0, 0xe7, 0xb5, 0xfc, 0xde, 0x0f, 0x64, 0x47, 0xc8, 0x31, 0x2d, 0x4c, - 0x72, 0x79, 0x3b, 0x42, 0x5e, 0x82, 0x4b, 0x5d, 0x6f, 0x99, 0x06, 0xe1, 0x5f, 0x56, 0xc9, 0xb3, - 0x2b, 0x95, 0xb6, 0x6e, 0xbb, 0x15, 0x21, 0x54, 0xaa, 0x74, 0x6b, 0xa3, 0x7e, 0xc9, 0x68, 0x91, - 0xdd, 0xa0, 0x49, 0x35, 0xea, 0xb3, 0xb2, 0x00, 0xd3, 0x6c, 0x23, 0x64, 0xcd, 0xd5, 0xab, 0x3c, - 0xd1, 0xab, 0x6b, 0x78, 0x9f, 0x2e, 0x8a, 0xe7, 0x7c, 0x35, 0xc8, 0xa7, 0x86, 0x7f, 0x52, 0xee, - 0x86, 0x2b, 0xd9, 0x6b, 0x69, 0xd7, 0x76, 0xcc, 0x1d, 0x0a, 0xfa, 0x92, 0xde, 0xa1, 0x35, 0x98, - 0x20, 0x35, 0x88, 0xcb, 0xa2, 0xdc, 0x0a, 0xc7, 0xbb, 0x16, 0xde, 0xc4, 0xd6, 0x7d, 0xda, 0xce, - 0xee, 0x03, 0x0d, 0x4b, 0x33, 0xec, 0xae, 0x69, 0x39, 0xa7, 0x26, 0x09, 0xf3, 0x7d, 0xbf, 0xb1, - 0x8e, 0x72, 0x12, 0xf2, 0x54, 0x7c, 0xe8, 0x05, 0x39, 0x61, 0x77, 0x4e, 0x56, 0xa1, 0x58, 0xf3, - 0xec, 0x16, 0x98, 0x60, 0x3d, 0x1c, 0x01, 0x6a, 0xfa, 0xd6, 0x93, 0x3d, 0xeb, 0x0a, 0x8c, 0x8a, - 0xea, 0x65, 0x53, 0x9e, 0x00, 0xf9, 0x16, 0xa9, 0x16, 0xc1, 0x6c, 0xfa, 0xd6, 0x2b, 0xfb, 0x17, - 0x4a, 0xb2, 0xa8, 0x2c, 0x2b, 0xfa, 0x0b, 0x59, 0xc8, 0x03, 0x34, 0x8e, 0xe3, 0x64, 0xad, 0xfa, - 0x9b, 0xd2, 0x10, 0xdd, 0xe6, 0x4d, 0x70, 0x03, 0xeb, 0x13, 0x99, 0xfd, 0xb1, 0xd8, 0x5c, 0xd8, - 0xf0, 0x26, 0x83, 0xae, 0x55, 0x52, 0x6f, 0x14, 0x55, 0x77, 0x26, 0xbf, 0xe8, 0x4e, 0x22, 0x6f, - 0x84, 0xeb, 0x07, 0xe4, 0x2e, 0x37, 0x9a, 0xd5, 0xe2, 0x5a, 0xb9, 0xb0, 0xc9, 0xdb, 0x36, 0xf5, - 0x46, 0x6d, 0xbd, 0xa9, 0x6e, 0x54, 0xab, 0x95, 0xea, 0x32, 0x25, 0xe6, 0x9a, 0x84, 0x27, 0x83, - 0x0c, 0xe7, 0xd4, 0x4a, 0xa3, 0xdc, 0x2c, 0xd5, 0xaa, 0x4b, 0x95, 0xe5, 0x82, 0x3e, 0xc8, 0x30, - 0xba, 0x5f, 0xb9, 0x06, 0xae, 0xe2, 0x38, 0xa9, 0xd4, 0xaa, 0xee, 0xcc, 0xb6, 0x54, 0xac, 0x96, - 0xca, 0xee, 0x34, 0xf6, 0x82, 0x82, 0xe0, 0x04, 0x25, 0xd7, 0x5c, 0xaa, 0xac, 0x86, 0x37, 0xa3, - 0x3e, 0x91, 0x51, 0x4e, 0xc1, 0x65, 0xe1, 0x6f, 0x95, 0xea, 0xd9, 0xe2, 0x6a, 0x65, 0xb1, 0xf0, - 0x87, 0x19, 0xe5, 0x3a, 0xb8, 0x9a, 0xfb, 0x8b, 0xee, 0x2b, 0x35, 0x2b, 0x8b, 0xcd, 0xb5, 0x4a, - 0x7d, 0xad, 0xd8, 0x28, 0xad, 0x14, 0x3e, 0x49, 0xe6, 0x0b, 0xbe, 0x01, 0x1c, 0x72, 0xcb, 0x7c, - 0x71, 0x78, 0x4c, 0x2f, 0xf2, 0x8a, 0xfa, 0xd8, 0xbe, 0xb0, 0xc7, 0xdb, 0xb0, 0x1f, 0xf3, 0x47, - 0x87, 0x45, 0x4e, 0x85, 0x6e, 0x49, 0x40, 0x2b, 0x99, 0x0e, 0x35, 0x86, 0x50, 0xa1, 0x6b, 0xe0, - 0xaa, 0x6a, 0x99, 0x22, 0xa5, 0x96, 0x4b, 0xb5, 0xb3, 0x65, 0xb5, 0x79, 0xae, 0xb8, 0xba, 0x5a, - 0x6e, 0x34, 0x97, 0x2a, 0x6a, 0xbd, 0x51, 0xd8, 0x44, 0xff, 0x2c, 0xf9, 0xab, 0x39, 0x21, 0x69, - 0xfd, 0xb5, 0x94, 0xb4, 0x59, 0xc7, 0xae, 0xda, 0xfc, 0x04, 0xe4, 0x6d, 0x47, 0x73, 0x76, 0x6d, - 0xd6, 0xaa, 0x1f, 0xd5, 0xbf, 0x55, 0xcf, 0xd7, 0x49, 0x26, 0x95, 0x65, 0x46, 0x7f, 0x91, 0x49, - 0xd2, 0x4c, 0x47, 0xb0, 0xa0, 0xa3, 0x0f, 0x21, 0xe2, 0xd3, 0x80, 0x3c, 0x6d, 0xaf, 0xd4, 0x9b, - 0xc5, 0x55, 0xb5, 0x5c, 0x5c, 0xbc, 0xcf, 0x5f, 0xc6, 0xc1, 0xca, 0x09, 0x38, 0xb6, 0x51, 0x2d, - 0x2e, 0xac, 0x96, 0x49, 0x73, 0xa9, 0x55, 0xab, 0xe5, 0x92, 0x2b, 0xf7, 0x5f, 0x20, 0x9b, 0x26, - 0xae, 0x05, 0x4d, 0xf8, 0x76, 0xad, 0x9c, 0x90, 0xfc, 0xbf, 0x21, 0xec, 0x5b, 0x14, 0x68, 0x58, - 0x98, 0xd6, 0x68, 0x71, 0xf8, 0xa2, 0x90, 0x3b, 0x91, 0x10, 0x27, 0xc9, 0xf0, 0xf8, 0xcf, 0x43, - 0xe0, 0x71, 0x02, 0x8e, 0x85, 0xf1, 0x20, 0x6e, 0x45, 0xd1, 0x30, 0x7c, 0x75, 0x12, 0xf2, 0x75, - 0xdc, 0xc1, 0x2d, 0x07, 0xbd, 0x2d, 0x64, 0x4c, 0xcc, 0x81, 0xe4, 0xbb, 0xb1, 0x48, 0x7a, 0x9b, - 0x9b, 0x3e, 0x4b, 0x3d, 0xd3, 0xe7, 0x18, 0x33, 0x40, 0x4e, 0x64, 0x06, 0x64, 0x53, 0x30, 0x03, - 0x72, 0xc3, 0x9b, 0x01, 0xf9, 0x41, 0x66, 0x00, 0x7a, 0x7d, 0x3e, 0x69, 0x2f, 0x41, 0x45, 0x7d, - 0xb8, 0x83, 0xff, 0xff, 0xca, 0x26, 0xe9, 0x55, 0xfa, 0x72, 0x9c, 0x4c, 0x8b, 0x7f, 0x20, 0xa7, - 0xb0, 0xfc, 0xa0, 0x5c, 0x0b, 0x57, 0x07, 0xef, 0xcd, 0xf2, 0xd3, 0x2b, 0xf5, 0x46, 0x9d, 0x8c, - 0xf8, 0xa5, 0x9a, 0xaa, 0x6e, 0xac, 0xd3, 0x35, 0xe4, 0x93, 0xa0, 0x04, 0x54, 0xd4, 0x8d, 0x2a, - 0x1d, 0xdf, 0xb7, 0x78, 0xea, 0x4b, 0x95, 0xea, 0x62, 0xd3, 0x6f, 0x33, 0xd5, 0xa5, 0x5a, 0x61, - 0xdb, 0x9d, 0xb2, 0x85, 0xa8, 0xbb, 0x03, 0x34, 0x2b, 0xa1, 0x58, 0x5d, 0x6c, 0xae, 0x55, 0xcb, - 0x6b, 0xb5, 0x6a, 0xa5, 0x44, 0xd2, 0xeb, 0xe5, 0x46, 0x41, 0x77, 0x07, 0x9a, 0x1e, 0x8b, 0xa2, - 0x5e, 0x2e, 0xaa, 0xa5, 0x95, 0xb2, 0x4a, 0x8b, 0xbc, 0x5f, 0xb9, 0x1e, 0xce, 0x14, 0xab, 0xb5, - 0x86, 0x9b, 0x52, 0xac, 0xde, 0xd7, 0xb8, 0x6f, 0xbd, 0xdc, 0x5c, 0x57, 0x6b, 0xa5, 0x72, 0xbd, - 0xee, 0xb6, 0x53, 0x66, 0x7f, 0x14, 0x3a, 0xca, 0x53, 0xe1, 0xf6, 0x10, 0x6b, 0xe5, 0x06, 0xd9, - 0xb0, 0x5c, 0xab, 0x11, 0x9f, 0x95, 0xc5, 0x72, 0x73, 0xa5, 0x58, 0x6f, 0x56, 0xaa, 0xa5, 0xda, - 0xda, 0x7a, 0xb1, 0x51, 0x71, 0x9b, 0xf3, 0xba, 0x5a, 0x6b, 0xd4, 0x9a, 0x67, 0xcb, 0x6a, 0xbd, - 0x52, 0xab, 0x16, 0x0c, 0xb7, 0xca, 0xa1, 0xf6, 0xef, 0xf5, 0xc3, 0xa6, 0x72, 0x15, 0x9c, 0xf2, - 0xd2, 0x57, 0x6b, 0xae, 0xa0, 0x43, 0x16, 0x49, 0x37, 0x55, 0x8b, 0xe4, 0x5f, 0x25, 0xc8, 0xd6, - 0x1d, 0xb3, 0x8b, 0x7e, 0x3c, 0xe8, 0x60, 0x4e, 0x03, 0x58, 0x64, 0xff, 0xd1, 0x9d, 0x85, 0xb1, - 0x79, 0x59, 0x28, 0x05, 0xfd, 0x81, 0xf0, 0xa6, 0x49, 0xd0, 0x67, 0x9b, 0xdd, 0x08, 0x5b, 0xe5, - 0x7b, 0x62, 0xa7, 0x48, 0xa2, 0x09, 0x25, 0xd3, 0xf7, 0x5f, 0x1c, 0x66, 0x5b, 0x04, 0xc1, 0xc9, - 0x10, 0x6c, 0xae, 0xfc, 0x3d, 0x95, 0xc0, 0xca, 0xe5, 0x70, 0x59, 0x8f, 0x72, 0x11, 0x9d, 0xda, - 0x54, 0x7e, 0x0c, 0x1e, 0x15, 0x52, 0xef, 0xf2, 0x5a, 0xed, 0x6c, 0xd9, 0x57, 0xe4, 0xc5, 0x62, - 0xa3, 0x58, 0xd8, 0x42, 0x9f, 0x93, 0x21, 0xbb, 0x66, 0xee, 0xf5, 0xee, 0x55, 0x19, 0xf8, 0x62, - 0x68, 0x2d, 0xd4, 0x7b, 0xe5, 0xbd, 0xe6, 0x85, 0xc4, 0xbe, 0x16, 0xbd, 0x2f, 0xfd, 0x45, 0x29, - 0x89, 0xd8, 0xd7, 0x0e, 0xba, 0x19, 0xfd, 0xf7, 0xc3, 0x88, 0x3d, 0x42, 0xb4, 0x58, 0x39, 0x03, - 0xa7, 0x83, 0x0f, 0x95, 0xc5, 0x72, 0xb5, 0x51, 0x59, 0xba, 0x2f, 0x10, 0x6e, 0x45, 0x15, 0x12, - 0xff, 0xa0, 0x6e, 0x2c, 0x7e, 0xa6, 0x71, 0x0a, 0x8e, 0x07, 0xdf, 0x96, 0xcb, 0x0d, 0xef, 0xcb, - 0xfd, 0xe8, 0xc1, 0x1c, 0xcc, 0xd0, 0x6e, 0x7d, 0xa3, 0xdb, 0xd6, 0x1c, 0x8c, 0x9e, 0x10, 0xa0, - 0x7b, 0x03, 0x1c, 0xad, 0xac, 0x2f, 0xd5, 0xeb, 0x8e, 0x69, 0x69, 0x5b, 0xb8, 0xd8, 0x6e, 0x5b, - 0x4c, 0x5a, 0xbd, 0xc9, 0xe8, 0xdd, 0xc2, 0xeb, 0x7c, 0xfc, 0x50, 0x42, 0xcb, 0x8c, 0x40, 0xfd, - 0x2b, 0x42, 0xeb, 0x72, 0x02, 0x04, 0x93, 0xa1, 0x7f, 0xff, 0x88, 0xdb, 0x5c, 0x34, 0x2e, 0x9b, - 0x67, 0x9e, 0x23, 0xc1, 0x54, 0x43, 0xdf, 0xc1, 0xcf, 0x30, 0x0d, 0x6c, 0x2b, 0x13, 0x20, 0x2f, - 0xaf, 0x35, 0x0a, 0x47, 0xdc, 0x07, 0xd7, 0xa8, 0xca, 0x90, 0x87, 0xb2, 0x5b, 0x80, 0xfb, 0x50, - 0x6c, 0x14, 0x64, 0xf7, 0x61, 0xad, 0xdc, 0x28, 0x64, 0xdd, 0x87, 0x6a, 0xb9, 0x51, 0xc8, 0xb9, - 0x0f, 0xeb, 0xab, 0x8d, 0x42, 0xde, 0x7d, 0xa8, 0xd4, 0x1b, 0x85, 0x09, 0xf7, 0x61, 0xa1, 0xde, - 0x28, 0x4c, 0xba, 0x0f, 0x67, 0xeb, 0x8d, 0xc2, 0x94, 0xfb, 0x50, 0x6a, 0x34, 0x0a, 0xe0, 0x3e, - 0xdc, 0x53, 0x6f, 0x14, 0xa6, 0xdd, 0x87, 0x62, 0xa9, 0x51, 0x98, 0x21, 0x0f, 0xe5, 0x46, 0x61, - 0xd6, 0x7d, 0xa8, 0xd7, 0x1b, 0x85, 0x39, 0x42, 0xb9, 0xde, 0x28, 0x1c, 0x25, 0x65, 0x55, 0x1a, - 0x85, 0x82, 0xfb, 0xb0, 0x52, 0x6f, 0x14, 0x8e, 0x91, 0xcc, 0xf5, 0x46, 0x41, 0x21, 0x85, 0xd6, - 0x1b, 0x85, 0xcb, 0x48, 0x9e, 0x7a, 0xa3, 0x70, 0x9c, 0x14, 0x51, 0x6f, 0x14, 0x4e, 0x10, 0x36, - 0xca, 0x8d, 0xc2, 0x49, 0x92, 0x47, 0x6d, 0x14, 0x2e, 0x27, 0x9f, 0xaa, 0x8d, 0xc2, 0x29, 0xc2, - 0x58, 0xb9, 0x51, 0xb8, 0x82, 0x3c, 0xa8, 0x8d, 0x02, 0x22, 0x9f, 0x8a, 0x8d, 0xc2, 0x95, 0xe8, - 0x51, 0x30, 0xb5, 0x8c, 0x1d, 0x0a, 0x22, 0x2a, 0x80, 0xbc, 0x8c, 0x9d, 0xb0, 0x19, 0xff, 0x35, - 0x19, 0x2e, 0x67, 0x53, 0xbf, 0x25, 0xcb, 0xdc, 0x59, 0xc5, 0x5b, 0x5a, 0xeb, 0x52, 0xf9, 0x01, - 0xd7, 0x84, 0x0a, 0xef, 0xcb, 0x2a, 0x90, 0xed, 0x06, 0x9d, 0x11, 0x79, 0x8e, 0xb5, 0x38, 0xbd, - 0xc5, 0x28, 0x39, 0x58, 0x8c, 0x62, 0x16, 0xd9, 0x3f, 0x85, 0x35, 0x9a, 0x5b, 0x3f, 0xce, 0xf4, - 0xac, 0x1f, 0xbb, 0xcd, 0xa4, 0x8b, 0x2d, 0xdb, 0x34, 0xb4, 0x4e, 0x9d, 0x6d, 0xdc, 0xd3, 0x55, - 0xaf, 0xde, 0x64, 0xe5, 0x69, 0x5e, 0xcb, 0xa0, 0x56, 0xd9, 0x53, 0xe2, 0x66, 0xb8, 0xbd, 0xd5, - 0x8c, 0x68, 0x24, 0x9f, 0xf4, 0x1b, 0x49, 0x83, 0x6b, 0x24, 0x77, 0x1f, 0x80, 0x76, 0xb2, 0xf6, - 0x52, 0x19, 0x6e, 0x6a, 0x11, 0xb8, 0xb5, 0x7a, 0xcb, 0xd5, 0x32, 0xfa, 0x9c, 0x04, 0x27, 0xcb, - 0x46, 0x3f, 0x0b, 0x3f, 0xac, 0x0b, 0x6f, 0x09, 0x43, 0xb3, 0xce, 0x8b, 0xf4, 0xf6, 0xbe, 0xd5, - 0xee, 0x4f, 0x33, 0x42, 0xa2, 0x9f, 0xf6, 0x25, 0x5a, 0xe7, 0x24, 0x7a, 0xd7, 0xf0, 0xa4, 0x93, - 0x09, 0xb4, 0x3a, 0xd2, 0x0e, 0x28, 0x8b, 0xbe, 0x99, 0x85, 0x47, 0x51, 0xdf, 0x1b, 0xc6, 0x21, - 0x6d, 0x65, 0x45, 0xa3, 0xad, 0x62, 0xdb, 0xd1, 0x2c, 0x87, 0x3b, 0x0f, 0xdd, 0x33, 0x95, 0xca, - 0xa4, 0x30, 0x95, 0x92, 0x06, 0x4e, 0xa5, 0xd0, 0xbb, 0xc2, 0xe6, 0xc3, 0x39, 0x1e, 0xe3, 0x62, - 0xff, 0xfe, 0x3f, 0xae, 0x86, 0x51, 0x50, 0xfb, 0x76, 0xc5, 0x4f, 0x71, 0x50, 0x2f, 0x1d, 0xb8, - 0x84, 0x64, 0x88, 0xff, 0xc1, 0x68, 0xed, 0xbc, 0x6c, 0xf8, 0x1b, 0x6f, 0x94, 0x14, 0xda, 0xa9, - 0x1a, 0xe8, 0x2f, 0x9c, 0x84, 0x29, 0xd2, 0x16, 0x56, 0x75, 0xe3, 0x82, 0xdb, 0x69, 0xcf, 0x54, - 0xf1, 0xc5, 0xd2, 0xb6, 0xd6, 0xe9, 0x60, 0x63, 0x0b, 0xa3, 0xfb, 0x39, 0xcb, 0x51, 0xeb, 0x76, - 0xab, 0xc1, 0x3e, 0x83, 0xf7, 0xaa, 0xdc, 0x05, 0x39, 0xbb, 0x65, 0x76, 0x31, 0x11, 0xd4, 0x5c, - 0xc8, 0x33, 0x81, 0x5f, 0x59, 0x29, 0xee, 0x3a, 0xdb, 0xf3, 0xa4, 0xac, 0x62, 0x57, 0xaf, 0xbb, - 0x3f, 0xa8, 0xf4, 0x3f, 0xd6, 0x81, 0x7f, 0xa3, 0x6f, 0x2f, 0x91, 0x89, 0xe9, 0x25, 0x7c, 0xc6, - 0xe7, 0xc3, 0x4c, 0x47, 0x4c, 0xb1, 0xaf, 0x81, 0xe9, 0x96, 0x97, 0xc5, 0x3f, 0x78, 0x11, 0x4e, - 0x42, 0x7f, 0x9b, 0xa8, 0x1f, 0x11, 0x2a, 0x3c, 0x99, 0x56, 0xe1, 0x11, 0x1b, 0x32, 0x27, 0xe0, - 0x58, 0xa3, 0x56, 0x6b, 0xae, 0x15, 0xab, 0xf7, 0x05, 0x07, 0x9e, 0x37, 0xd1, 0x2b, 0xb2, 0x30, - 0x57, 0x37, 0x3b, 0x7b, 0x38, 0xc0, 0xb9, 0xc2, 0x79, 0xf4, 0x84, 0xe5, 0x94, 0xd9, 0x27, 0x27, - 0xe5, 0x24, 0xe4, 0x35, 0xc3, 0xbe, 0x88, 0x3d, 0xe3, 0x92, 0xbd, 0x31, 0x18, 0x3f, 0x18, 0xee, - 0x08, 0x54, 0x1e, 0xc6, 0x3b, 0x06, 0x48, 0x92, 0xe7, 0x2a, 0x02, 0xc8, 0x33, 0x30, 0x63, 0xd3, - 0xdd, 0xc6, 0x46, 0x68, 0x53, 0x99, 0x4b, 0x23, 0x2c, 0xd2, 0xed, 0x6e, 0x99, 0xb1, 0x48, 0xde, - 0xd0, 0x6b, 0xfd, 0xfe, 0x63, 0x83, 0x83, 0xb8, 0x78, 0x10, 0xc6, 0x92, 0x81, 0xfc, 0xaa, 0x51, - 0x4f, 0x11, 0x4f, 0xc1, 0x71, 0xd6, 0xec, 0x9b, 0xa5, 0x95, 0xe2, 0xea, 0x6a, 0xb9, 0xba, 0x5c, - 0x6e, 0x56, 0x16, 0xe9, 0x5e, 0x47, 0x90, 0x52, 0x6c, 0x34, 0xca, 0x6b, 0xeb, 0x8d, 0x7a, 0xb3, - 0xfc, 0xf4, 0x52, 0xb9, 0xbc, 0x48, 0x7c, 0xea, 0xc8, 0xa1, 0x18, 0xcf, 0xfb, 0xb1, 0x58, 0xad, - 0x9f, 0x2b, 0xab, 0x85, 0xed, 0x33, 0x45, 0x98, 0x0e, 0x0d, 0x14, 0x2e, 0x77, 0x8b, 0x78, 0x53, - 0xdb, 0xed, 0x30, 0x63, 0xaf, 0x70, 0xc4, 0xe5, 0x8e, 0xc8, 0xa6, 0x66, 0x74, 0x2e, 0x15, 0x32, - 0x4a, 0x01, 0x66, 0xc2, 0x63, 0x42, 0x41, 0x42, 0x6f, 0xbf, 0x0a, 0xa6, 0xce, 0x99, 0xd6, 0x05, - 0xe2, 0x08, 0x86, 0xde, 0x47, 0x03, 0xa3, 0x78, 0x47, 0x4c, 0x43, 0x96, 0xc1, 0xab, 0xc4, 0xdd, - 0x0d, 0x3c, 0x6a, 0xf3, 0x03, 0x8f, 0x91, 0x5e, 0x03, 0xd3, 0x17, 0xbd, 0xdc, 0x41, 0x4b, 0x0f, - 0x25, 0xa1, 0xff, 0x2e, 0xe6, 0x40, 0x30, 0xb8, 0xc8, 0xf4, 0x37, 0xb8, 0xdf, 0x26, 0x41, 0x7e, - 0x19, 0x3b, 0xc5, 0x4e, 0x27, 0x2c, 0xb7, 0x97, 0x08, 0x1f, 0x0d, 0xe2, 0x2a, 0x51, 0xec, 0x74, - 0xa2, 0x1b, 0x55, 0x48, 0x40, 0x9e, 0x0b, 0x3b, 0x97, 0x26, 0xe8, 0x78, 0x37, 0xa0, 0xc0, 0xf4, - 0x25, 0xf6, 0x61, 0xd9, 0xdf, 0x24, 0x7f, 0x38, 0x64, 0x26, 0x3d, 0x3e, 0x08, 0x8a, 0x93, 0x89, - 0xdf, 0x6c, 0xf7, 0xf2, 0x29, 0xf7, 0xc2, 0xc4, 0xae, 0x8d, 0x4b, 0x9a, 0xed, 0x0d, 0x6d, 0x7c, - 0x4d, 0x6b, 0xe7, 0xef, 0xc7, 0x2d, 0x67, 0xbe, 0xb2, 0xe3, 0x5a, 0xe4, 0x1b, 0x34, 0xa3, 0x1f, - 0x67, 0x86, 0xbd, 0xab, 0x1e, 0x05, 0x77, 0x56, 0x73, 0x51, 0x77, 0xb6, 0x4b, 0xdb, 0x9a, 0xc3, - 0x16, 0xc7, 0xfd, 0x77, 0xf4, 0x82, 0x21, 0xe0, 0x8c, 0xdd, 0x4c, 0x8e, 0x3c, 0x61, 0x98, 0x18, - 0xc4, 0x11, 0xec, 0x00, 0x0f, 0x03, 0xe2, 0x3f, 0x48, 0x90, 0xad, 0x75, 0xb1, 0x21, 0x7c, 0x9c, - 0xc6, 0x97, 0xad, 0xd4, 0x23, 0xdb, 0xd7, 0x8a, 0xbb, 0x97, 0xf9, 0x95, 0x76, 0x4b, 0x8e, 0x90, - 0xec, 0xcd, 0x90, 0xd5, 0x8d, 0x4d, 0x93, 0x59, 0xb6, 0x57, 0x46, 0xd8, 0x3a, 0x15, 0x63, 0xd3, - 0x54, 0x49, 0x46, 0x51, 0xcf, 0xb2, 0xb8, 0xb2, 0xd3, 0x17, 0xf7, 0xb7, 0x26, 0x21, 0x4f, 0xd5, - 0x19, 0xbd, 0x58, 0x06, 0xb9, 0xd8, 0x6e, 0x47, 0x08, 0x5e, 0xda, 0x27, 0x78, 0x93, 0xfc, 0xe6, - 0x63, 0xe2, 0xbf, 0xf3, 0xd1, 0x50, 0x04, 0xfb, 0x76, 0xd6, 0xa4, 0x8a, 0xed, 0x76, 0xb4, 0x13, - 0xab, 0x5f, 0xa0, 0xc4, 0x17, 0x18, 0x6e, 0xe1, 0xb2, 0x58, 0x0b, 0x4f, 0x3c, 0x10, 0x44, 0xf2, - 0x97, 0x3e, 0x44, 0xff, 0x24, 0xc1, 0xc4, 0xaa, 0x6e, 0x3b, 0x2e, 0x36, 0x45, 0x11, 0x6c, 0xae, - 0x82, 0x29, 0x4f, 0x34, 0x6e, 0x97, 0xe7, 0xf6, 0xe7, 0x41, 0x02, 0x7a, 0x5d, 0x18, 0x9d, 0x7b, - 0x78, 0x74, 0x9e, 0x18, 0x5f, 0x7b, 0xc6, 0x45, 0xf4, 0x31, 0x85, 0xa0, 0x58, 0xa9, 0xb7, 0xd8, - 0xdf, 0xf2, 0x05, 0xbe, 0xc6, 0x09, 0xfc, 0xb6, 0x61, 0x8a, 0x4c, 0x5f, 0xe8, 0x9f, 0x97, 0x00, - 0xdc, 0xb2, 0xd9, 0x59, 0xb0, 0xc7, 0x70, 0x27, 0xbc, 0x63, 0xa4, 0xfb, 0x8a, 0xb0, 0x74, 0xd7, - 0x78, 0xe9, 0xfe, 0xe4, 0xe0, 0xaa, 0xc6, 0x9d, 0xf9, 0x52, 0x0a, 0x20, 0xeb, 0xbe, 0x68, 0xdd, - 0x47, 0xf4, 0x36, 0x5f, 0xa8, 0xeb, 0x9c, 0x50, 0xef, 0x18, 0xb2, 0xa4, 0xf4, 0xe5, 0xfa, 0x97, - 0x12, 0x4c, 0xd4, 0xb1, 0xe3, 0x76, 0x93, 0xe8, 0xac, 0x48, 0x0f, 0x1f, 0x6a, 0xdb, 0x92, 0x60, - 0xdb, 0xfe, 0x6e, 0x46, 0x34, 0x52, 0x4c, 0x20, 0x19, 0xc6, 0x53, 0xc4, 0xea, 0xc3, 0xc3, 0x42, - 0x91, 0x62, 0x06, 0x51, 0x4b, 0x5f, 0xba, 0x6f, 0x91, 0xfc, 0x9d, 0x7d, 0xfe, 0xa8, 0x46, 0xd8, - 0x2c, 0xce, 0xec, 0x37, 0x8b, 0xc5, 0x8f, 0x6a, 0x84, 0xeb, 0x18, 0xbd, 0xad, 0x9d, 0xd8, 0xd8, - 0x18, 0xc1, 0x8e, 0xf3, 0x30, 0xf2, 0x7a, 0x96, 0x0c, 0x79, 0xb6, 0x34, 0x7d, 0x57, 0xfc, 0xd2, - 0xf4, 0xe0, 0xa9, 0xc5, 0x7b, 0x87, 0x30, 0xe5, 0xe2, 0xd6, 0x8b, 0x7d, 0x36, 0xa4, 0x10, 0x1b, - 0x37, 0x41, 0x8e, 0x84, 0xb2, 0x64, 0xe3, 0x5c, 0xe0, 0x2c, 0xe0, 0x91, 0x28, 0xbb, 0x5f, 0x55, - 0x9a, 0x29, 0x31, 0x0a, 0x23, 0x58, 0x62, 0x1e, 0x06, 0x85, 0x5f, 0x57, 0x00, 0xd6, 0x77, 0xcf, - 0x77, 0x74, 0x7b, 0x5b, 0x37, 0xb6, 0xd0, 0x57, 0x33, 0x30, 0xc3, 0x5e, 0x69, 0x44, 0xc6, 0x58, - 0xf3, 0x2f, 0xd2, 0x28, 0x28, 0x80, 0xbc, 0x6b, 0xe9, 0x6c, 0x19, 0xc0, 0x7d, 0x54, 0xee, 0xf4, - 0x3d, 0x81, 0xb2, 0x3d, 0x67, 0xf1, 0x5d, 0x31, 0x04, 0x1c, 0xcc, 0x87, 0x4a, 0x0f, 0x3c, 0x82, - 0xc2, 0x61, 0x37, 0x73, 0x7c, 0xd8, 0x4d, 0xee, 0x80, 0x5e, 0xbe, 0xe7, 0x80, 0x9e, 0x8b, 0xa3, - 0xad, 0x3f, 0x03, 0x13, 0xef, 0x54, 0x59, 0x25, 0xcf, 0xe8, 0x43, 0xc1, 0x54, 0xc5, 0x14, 0xb4, - 0x73, 0x13, 0x54, 0xf4, 0x2a, 0x98, 0xba, 0xdf, 0xd4, 0x0d, 0xb2, 0x97, 0xc1, 0xbc, 0x8f, 0x83, - 0x04, 0xf4, 0x51, 0xe1, 0x40, 0x5a, 0x21, 0x91, 0xc4, 0x4e, 0x3a, 0x18, 0x07, 0x92, 0xcf, 0x41, - 0x68, 0x43, 0x30, 0xae, 0xc3, 0x1c, 0x44, 0x3f, 0x99, 0xea, 0xed, 0x0c, 0xb1, 0xbc, 0xa2, 0xc0, - 0x9c, 0x77, 0x30, 0xb1, 0xb6, 0x70, 0x4f, 0xb9, 0xd4, 0x28, 0xe0, 0xfd, 0x87, 0x15, 0xc9, 0xb1, - 0x44, 0x7a, 0x04, 0x31, 0x58, 0x42, 0x41, 0xff, 0x53, 0x82, 0x3c, 0xb3, 0x0e, 0xee, 0x3a, 0x20, - 0x84, 0xe8, 0x95, 0xc3, 0x40, 0x12, 0x7b, 0x3e, 0xfc, 0x53, 0x49, 0x01, 0x18, 0x81, 0x3d, 0x70, - 0x5f, 0x6a, 0x00, 0xa0, 0x7f, 0x91, 0x20, 0xeb, 0x5a, 0x2d, 0x62, 0xa7, 0x6f, 0x3f, 0x29, 0xec, - 0xf7, 0x1a, 0x12, 0x80, 0x4b, 0x3e, 0x42, 0xbf, 0x17, 0x60, 0xaa, 0x4b, 0x33, 0xfa, 0x67, 0xbf, - 0xaf, 0x13, 0xe8, 0x3b, 0xb0, 0x1a, 0xfc, 0x86, 0xde, 0x23, 0xe4, 0x3b, 0x1b, 0xcf, 0x4f, 0x32, - 0x38, 0xca, 0xa3, 0x38, 0xa8, 0xbb, 0x89, 0xbe, 0x2f, 0x01, 0xa8, 0xd8, 0x36, 0x3b, 0x7b, 0x78, - 0xc3, 0xd2, 0xd1, 0x95, 0x01, 0x00, 0xac, 0xd9, 0x67, 0x82, 0x66, 0xff, 0x99, 0xb0, 0xe0, 0x97, - 0x79, 0xc1, 0x3f, 0x3e, 0x5a, 0xf3, 0x3c, 0xe2, 0x11, 0xe2, 0x7f, 0x2a, 0x4c, 0x30, 0x39, 0x32, - 0x13, 0x50, 0x4c, 0xf8, 0xde, 0x4f, 0xe8, 0xfd, 0xbe, 0xe8, 0xef, 0xe1, 0x44, 0xff, 0xa4, 0xc4, - 0x1c, 0x25, 0x03, 0xa0, 0x34, 0x04, 0x00, 0x47, 0x61, 0xda, 0x03, 0x60, 0x43, 0xad, 0x14, 0x30, - 0x7a, 0xa7, 0x4c, 0xb6, 0xdb, 0xe9, 0x58, 0x74, 0xf0, 0x9e, 0xe6, 0xeb, 0xc2, 0x73, 0xf3, 0x90, - 0x3c, 0xfc, 0xf2, 0x53, 0x02, 0xe8, 0x4f, 0x84, 0x26, 0xe3, 0x02, 0x0c, 0x3d, 0x52, 0xfa, 0xab, - 0x33, 0x65, 0x98, 0xe5, 0x8c, 0x08, 0xe5, 0x14, 0x1c, 0xe7, 0x12, 0xe8, 0x78, 0xd7, 0x2e, 0x1c, - 0x51, 0x10, 0x9c, 0xe4, 0xbe, 0xb0, 0x17, 0xdc, 0x2e, 0x64, 0xd0, 0x9f, 0x7d, 0x2e, 0xe3, 0x2f, - 0xcf, 0xbc, 0x37, 0xcb, 0x16, 0xc6, 0x3e, 0xce, 0x87, 0x1b, 0x6b, 0x99, 0x86, 0x83, 0x1f, 0x08, - 0xb9, 0x3b, 0xf8, 0x09, 0xb1, 0x56, 0xc3, 0x29, 0x98, 0x70, 0xac, 0xb0, 0x0b, 0x84, 0xf7, 0x1a, - 0x56, 0xac, 0x1c, 0xaf, 0x58, 0x55, 0x38, 0xa3, 0x1b, 0xad, 0xce, 0x6e, 0x1b, 0xab, 0xb8, 0xa3, - 0xb9, 0x32, 0xb4, 0x8b, 0xf6, 0x22, 0xee, 0x62, 0xa3, 0x8d, 0x0d, 0x87, 0xf2, 0xe9, 0x1d, 0x77, - 0x12, 0xc8, 0xc9, 0x2b, 0xe3, 0x9d, 0xbc, 0x32, 0x3e, 0xa6, 0xdf, 0x8a, 0x6b, 0xcc, 0xf2, 0xdc, - 0x6d, 0x00, 0xb4, 0x6e, 0x67, 0x75, 0x7c, 0x91, 0xa9, 0xe1, 0x15, 0x3d, 0x8b, 0x74, 0x35, 0x3f, - 0x83, 0x1a, 0xca, 0x8c, 0xbe, 0xec, 0xab, 0xdf, 0xdd, 0x9c, 0xfa, 0xdd, 0x24, 0xc8, 0x42, 0x32, - 0xad, 0xeb, 0x0e, 0xa1, 0x75, 0xb3, 0x30, 0x15, 0x6c, 0xfe, 0xca, 0xca, 0x15, 0x70, 0xc2, 0x73, - 0x27, 0xad, 0x96, 0xcb, 0x8b, 0xf5, 0xe6, 0xc6, 0xfa, 0xb2, 0x5a, 0x5c, 0x2c, 0x17, 0xc0, 0xd5, - 0x4f, 0xaa, 0x97, 0xbe, 0x17, 0x68, 0x16, 0xfd, 0xb9, 0x04, 0x39, 0x72, 0x56, 0x0f, 0xfd, 0xcc, - 0x88, 0x34, 0xc7, 0xe6, 0x9c, 0x67, 0xfc, 0x71, 0x57, 0x3c, 0x0c, 0x38, 0x13, 0x26, 0xe1, 0xea, - 0x40, 0x61, 0xc0, 0x63, 0x08, 0xa5, 0x3f, 0x71, 0x71, 0x9b, 0x64, 0x7d, 0xdb, 0xbc, 0xf8, 0xa3, - 0xdc, 0x24, 0xdd, 0xfa, 0x1f, 0x72, 0x93, 0xec, 0xc3, 0xc2, 0xd8, 0x9b, 0x64, 0x9f, 0x76, 0x17, - 0xd3, 0x4c, 0xd1, 0x33, 0x73, 0xfe, 0xfc, 0xef, 0x39, 0xd2, 0x81, 0xb6, 0xaa, 0x8a, 0x30, 0xab, - 0x1b, 0x0e, 0xb6, 0x0c, 0xad, 0xb3, 0xd4, 0xd1, 0xb6, 0x3c, 0xfb, 0xb4, 0x77, 0x7f, 0xa2, 0x12, - 0xca, 0xa3, 0xf2, 0x7f, 0x28, 0xa7, 0x01, 0x1c, 0xbc, 0xd3, 0xed, 0x68, 0x4e, 0xa0, 0x7a, 0xa1, - 0x94, 0xb0, 0xf6, 0x65, 0x79, 0xed, 0xbb, 0x05, 0x2e, 0xa3, 0xa0, 0x35, 0x2e, 0x75, 0xf1, 0x86, - 0xa1, 0xff, 0xec, 0x2e, 0x89, 0x4e, 0x49, 0x75, 0xb4, 0xdf, 0x27, 0x6e, 0xc3, 0x26, 0xdf, 0xb3, - 0x61, 0xf3, 0x0f, 0xc2, 0x51, 0x2f, 0xbc, 0x56, 0x3f, 0x20, 0xea, 0x85, 0xdf, 0xd2, 0xe4, 0x9e, - 0x96, 0xe6, 0x2f, 0xa3, 0x64, 0x05, 0x96, 0x51, 0xc2, 0xa8, 0xe4, 0x04, 0x97, 0x20, 0x5f, 0x23, - 0x14, 0x56, 0x23, 0xae, 0x1a, 0x63, 0x58, 0xe2, 0x96, 0x61, 0x8e, 0x16, 0xbd, 0x60, 0x9a, 0x17, - 0x76, 0x34, 0xeb, 0x02, 0xb2, 0x0e, 0xa4, 0x8a, 0xb1, 0xbb, 0x45, 0x91, 0x5b, 0xa0, 0x9f, 0x16, - 0x9e, 0x33, 0x70, 0xe2, 0xf2, 0x78, 0x1e, 0xcf, 0x76, 0xd1, 0x9b, 0x84, 0xa6, 0x10, 0x22, 0x0c, - 0xa6, 0x8f, 0xeb, 0x1f, 0xf9, 0xb8, 0x7a, 0x1d, 0x7d, 0x78, 0xa5, 0x7d, 0x94, 0xb8, 0xa2, 0xaf, - 0x0c, 0x87, 0x9d, 0xc7, 0xd7, 0x10, 0xd8, 0x15, 0x40, 0xbe, 0xe0, 0x3b, 0xf7, 0xb8, 0x8f, 0xe1, - 0x0a, 0x65, 0xd3, 0x43, 0x33, 0x82, 0xe5, 0xb1, 0xa0, 0x79, 0x9c, 0x67, 0xa1, 0xd6, 0x4d, 0x15, - 0xd3, 0x2f, 0x09, 0xef, 0x60, 0xf5, 0x15, 0x10, 0xe5, 0x6e, 0x3c, 0xad, 0x52, 0x6c, 0xfb, 0x4b, - 0x9c, 0xcd, 0xf4, 0xd1, 0x7c, 0x28, 0x07, 0x53, 0x5e, 0x5c, 0x12, 0x72, 0x6d, 0x8e, 0x8f, 0xe1, - 0x49, 0xc8, 0xdb, 0xe6, 0xae, 0xd5, 0xc2, 0x6c, 0x4f, 0x91, 0xbd, 0x0d, 0xb1, 0xff, 0x35, 0x70, - 0x3c, 0xdf, 0x67, 0x32, 0x64, 0x13, 0x9b, 0x0c, 0xd1, 0x06, 0x69, 0xdc, 0x00, 0xff, 0x02, 0xe1, - 0x58, 0xe7, 0x1c, 0x66, 0x75, 0xec, 0x3c, 0x12, 0xc7, 0xf8, 0xdf, 0x17, 0xda, 0x5d, 0x19, 0x50, - 0x93, 0x64, 0x2a, 0x57, 0x1b, 0xc2, 0x50, 0xbd, 0x12, 0x2e, 0xf7, 0x72, 0x30, 0x0b, 0x95, 0x58, - 0xa4, 0x1b, 0xea, 0x6a, 0x41, 0x46, 0xcf, 0xca, 0x42, 0x81, 0xb2, 0x56, 0xf3, 0x8d, 0x35, 0xf4, - 0x92, 0xcc, 0x61, 0x5b, 0xa4, 0xd1, 0x53, 0xcc, 0xcf, 0x4a, 0xa2, 0xf1, 0x54, 0x39, 0xc1, 0x07, - 0xb5, 0x8b, 0xd0, 0xa4, 0x21, 0x9a, 0x59, 0x8c, 0xf2, 0xa1, 0xdf, 0xcc, 0x88, 0x84, 0x67, 0x15, - 0x63, 0x31, 0xfd, 0x5e, 0xe9, 0x0b, 0x59, 0x2f, 0xbc, 0xd4, 0x92, 0x65, 0xee, 0x6c, 0x58, 0x1d, - 0xf4, 0x7f, 0x0a, 0x45, 0xbf, 0x8e, 0x30, 0xff, 0xa5, 0x68, 0xf3, 0x9f, 0x2c, 0x19, 0x77, 0x82, - 0xbd, 0xaa, 0xce, 0x10, 0xc3, 0xb7, 0x72, 0x3d, 0xcc, 0x69, 0xed, 0xf6, 0xba, 0xb6, 0x85, 0x4b, - 0xee, 0xbc, 0xda, 0x70, 0x58, 0xe8, 0x99, 0x9e, 0xd4, 0xd8, 0xae, 0x48, 0x7c, 0x1d, 0x94, 0x03, - 0x89, 0xc9, 0x67, 0x2c, 0xc3, 0x9b, 0x3b, 0x24, 0xb4, 0xb6, 0xb5, 0x20, 0x10, 0x16, 0x7b, 0x13, - 0xf4, 0x5d, 0x12, 0xe0, 0x3b, 0x7d, 0xcd, 0xfa, 0x5d, 0x09, 0x26, 0x5c, 0x79, 0x17, 0xdb, 0x6d, - 0xf4, 0x68, 0x2e, 0x5e, 0x5c, 0xa4, 0xf7, 0xd8, 0xf3, 0x84, 0xdd, 0xf6, 0xbc, 0x1a, 0x52, 0xfa, - 0x11, 0x98, 0x04, 0x42, 0x94, 0x38, 0x21, 0x8a, 0x79, 0xe7, 0xc5, 0x16, 0x91, 0xbe, 0xf8, 0x3e, - 0x29, 0xc1, 0xac, 0x37, 0x8f, 0x58, 0xc2, 0x4e, 0x6b, 0x1b, 0xdd, 0x26, 0xba, 0xd0, 0xc4, 0x5a, - 0x9a, 0xbf, 0x27, 0xdb, 0x41, 0x3f, 0xc8, 0x24, 0x54, 0x79, 0xae, 0xe4, 0x88, 0x55, 0xba, 0x44, - 0xba, 0x18, 0x47, 0x30, 0x7d, 0x61, 0x7e, 0x59, 0x02, 0x68, 0x98, 0xfe, 0x5c, 0xf7, 0x00, 0x92, - 0x7c, 0x91, 0xf0, 0x76, 0x2d, 0xab, 0x78, 0x50, 0x6c, 0xf2, 0x9e, 0x43, 0xd0, 0xf9, 0x68, 0x50, - 0x49, 0x63, 0x69, 0xeb, 0x53, 0x8b, 0xbb, 0xdd, 0x8e, 0xde, 0xd2, 0x9c, 0x5e, 0x8f, 0xb9, 0x68, - 0xf1, 0x92, 0x3b, 0x25, 0x13, 0x19, 0x85, 0x7e, 0x19, 0x11, 0xb2, 0xa4, 0x71, 0x4c, 0x24, 0x2f, - 0x8e, 0x89, 0xa0, 0x17, 0xcc, 0x00, 0xe2, 0x63, 0x50, 0x4f, 0x19, 0x8e, 0xd6, 0xba, 0xd8, 0x58, - 0xb0, 0xb0, 0xd6, 0x6e, 0x59, 0xbb, 0x3b, 0xe7, 0xed, 0xb0, 0xbb, 0x67, 0xbc, 0x8e, 0x86, 0x96, - 0x8e, 0x25, 0x6e, 0xe9, 0x18, 0x3d, 0x5b, 0x16, 0x8d, 0xaa, 0x13, 0xda, 0xe0, 0x08, 0xf1, 0x30, - 0xc4, 0x50, 0x97, 0xc8, 0x49, 0xa9, 0x67, 0x95, 0x38, 0x9b, 0x64, 0x95, 0xf8, 0xcd, 0x42, 0x31, - 0x7a, 0x84, 0xea, 0x35, 0x16, 0x5f, 0xb3, 0xb9, 0x3a, 0x76, 0x22, 0xe0, 0xbd, 0x0e, 0x66, 0xcf, - 0x07, 0x5f, 0x7c, 0x88, 0xf9, 0xc4, 0x3e, 0x1e, 0xa0, 0x6f, 0x49, 0xba, 0x02, 0xc3, 0xb3, 0x10, - 0x81, 0xae, 0x8f, 0xa0, 0x24, 0xe2, 0x66, 0x96, 0x68, 0x39, 0x25, 0xb6, 0xfc, 0xf4, 0x51, 0xf8, - 0xa8, 0x04, 0xd3, 0xe4, 0xa6, 0xcc, 0x85, 0x4b, 0xe4, 0xe0, 0xa3, 0xa0, 0x51, 0xf2, 0x50, 0x58, - 0xcc, 0x0a, 0x64, 0x3b, 0xba, 0x71, 0xc1, 0xf3, 0x0f, 0x74, 0x9f, 0x83, 0x7b, 0xd7, 0xa4, 0x3e, - 0xf7, 0xae, 0xf9, 0xfb, 0x14, 0x7e, 0xb9, 0x07, 0xba, 0x08, 0x78, 0x20, 0xb9, 0xf4, 0xc5, 0xf8, - 0x77, 0x59, 0xc8, 0xd7, 0xb1, 0x66, 0xb5, 0xb6, 0xd1, 0x7b, 0xa5, 0xbe, 0x53, 0x85, 0x49, 0x7e, - 0xaa, 0xb0, 0x04, 0x13, 0x9b, 0x7a, 0xc7, 0xc1, 0x16, 0xf5, 0x99, 0x0e, 0x77, 0xed, 0xb4, 0x89, - 0x2f, 0x74, 0xcc, 0xd6, 0x85, 0x79, 0x66, 0xba, 0xcf, 0x7b, 0x71, 0x3a, 0xe7, 0x97, 0xc8, 0x4f, - 0xaa, 0xf7, 0xb3, 0x6b, 0x10, 0xda, 0xa6, 0xe5, 0x44, 0x5d, 0xc1, 0x10, 0x41, 0xa5, 0x6e, 0x5a, - 0x8e, 0x4a, 0x7f, 0x74, 0x61, 0xde, 0xdc, 0xed, 0x74, 0x1a, 0xf8, 0x01, 0xc7, 0x9b, 0xb6, 0x79, - 0xef, 0xae, 0xb1, 0x68, 0x6e, 0x6e, 0xda, 0x98, 0x2e, 0x1a, 0xe4, 0x54, 0xf6, 0xa6, 0x1c, 0x87, - 0x5c, 0x47, 0xdf, 0xd1, 0xe9, 0x44, 0x23, 0xa7, 0xd2, 0x17, 0xe5, 0x46, 0x28, 0x04, 0x73, 0x1c, - 0xca, 0xe8, 0xa9, 0x3c, 0x69, 0x9a, 0xfb, 0xd2, 0x5d, 0x9d, 0xb9, 0x80, 0x2f, 0xd9, 0xa7, 0x26, - 0xc8, 0x77, 0xf2, 0xcc, 0x1f, 0x50, 0x11, 0xd9, 0xef, 0xa0, 0x12, 0x8f, 0x9e, 0xc1, 0x5a, 0xb8, - 0x65, 0x5a, 0x6d, 0x4f, 0x36, 0xd1, 0x13, 0x0c, 0x96, 0x2f, 0xd9, 0x2e, 0x45, 0xdf, 0xc2, 0xd3, - 0xd7, 0xb4, 0x77, 0xe5, 0xdd, 0x6e, 0xd3, 0x2d, 0xfa, 0x9c, 0xee, 0x6c, 0xaf, 0x61, 0x47, 0x43, - 0x7f, 0x27, 0xf7, 0xd5, 0xb8, 0xe9, 0xff, 0x4f, 0xe3, 0x06, 0x68, 0x1c, 0x8d, 0xc0, 0xe4, 0xec, - 0x5a, 0x86, 0x2b, 0x47, 0x16, 0xf3, 0x34, 0x94, 0xa2, 0xdc, 0x01, 0x57, 0x04, 0x6f, 0xde, 0x52, - 0xe9, 0x22, 0x9b, 0xb6, 0x4e, 0x91, 0xec, 0xd1, 0x19, 0x94, 0x75, 0xb8, 0x96, 0x7e, 0x5c, 0x69, - 0xac, 0xad, 0xae, 0xe8, 0x5b, 0xdb, 0x1d, 0x7d, 0x6b, 0xdb, 0xb1, 0x2b, 0x86, 0xed, 0x60, 0xad, - 0x5d, 0xdb, 0x54, 0xe9, 0xe5, 0x29, 0x40, 0xe8, 0x88, 0x64, 0xe5, 0x7d, 0xaa, 0xc5, 0x46, 0xb7, - 0xb0, 0xa6, 0x44, 0xb4, 0x94, 0x27, 0xb9, 0x2d, 0xc5, 0xde, 0xed, 0xf8, 0x98, 0x5e, 0xd5, 0x83, - 0x69, 0xa0, 0xea, 0xbb, 0x1d, 0xd2, 0x5c, 0x48, 0xe6, 0xa4, 0xe3, 0x5c, 0x0c, 0x27, 0xe9, 0x37, - 0x9b, 0xff, 0x27, 0x0f, 0xb9, 0x65, 0x4b, 0xeb, 0x6e, 0xa3, 0x67, 0x85, 0xfa, 0xe7, 0x51, 0xb5, - 0x09, 0x5f, 0x3b, 0xa5, 0x41, 0xda, 0x29, 0x0f, 0xd0, 0xce, 0x6c, 0x48, 0x3b, 0xa3, 0x17, 0x95, - 0xcf, 0xc0, 0x4c, 0xcb, 0xec, 0x74, 0x70, 0xcb, 0x95, 0x47, 0xa5, 0x4d, 0x56, 0x73, 0xa6, 0x54, - 0x2e, 0x8d, 0xc4, 0x32, 0xc6, 0x4e, 0x9d, 0xae, 0xa1, 0x53, 0xa5, 0x0f, 0x12, 0xd0, 0x4b, 0x24, - 0xc8, 0x96, 0xdb, 0x5b, 0x98, 0x5b, 0x67, 0xcf, 0x84, 0xd6, 0xd9, 0x4f, 0x42, 0xde, 0xd1, 0xac, - 0x2d, 0xec, 0x78, 0xeb, 0x04, 0xf4, 0xcd, 0x0f, 0xb1, 0x2c, 0x87, 0x42, 0x2c, 0xff, 0x24, 0x64, - 0x5d, 0x99, 0x31, 0x37, 0xf2, 0x6b, 0xfb, 0xc1, 0x4f, 0x64, 0x3f, 0xef, 0x96, 0x38, 0xef, 0xd6, - 0x5a, 0x25, 0x3f, 0xf4, 0x62, 0x9d, 0xdb, 0x87, 0x35, 0xb9, 0x07, 0xb2, 0x65, 0x1a, 0x95, 0x1d, - 0x6d, 0x0b, 0xb3, 0x6a, 0x06, 0x09, 0xde, 0xd7, 0xf2, 0x8e, 0x79, 0xbf, 0xce, 0xa2, 0x1d, 0x07, - 0x09, 0x6e, 0x15, 0xb6, 0xf5, 0x76, 0x1b, 0x1b, 0xac, 0x65, 0xb3, 0xb7, 0x33, 0xa7, 0x21, 0xeb, - 0xf2, 0xe0, 0xea, 0x8f, 0x6b, 0x2c, 0x14, 0x8e, 0x28, 0x33, 0x6e, 0xb3, 0xa2, 0x8d, 0xb7, 0x90, - 0xe1, 0xd7, 0x54, 0x45, 0xdc, 0x76, 0x68, 0xe5, 0xfa, 0x37, 0xae, 0xc7, 0x41, 0xce, 0x30, 0xdb, - 0x78, 0xe0, 0x20, 0x44, 0x73, 0x29, 0x4f, 0x84, 0x1c, 0x6e, 0xbb, 0xbd, 0x82, 0x4c, 0xb2, 0x9f, - 0x8e, 0x97, 0xa5, 0x4a, 0x33, 0x27, 0xf3, 0x0d, 0xea, 0xc7, 0x6d, 0xfa, 0x0d, 0xf0, 0x97, 0x26, - 0xe0, 0x28, 0xed, 0x03, 0xea, 0xbb, 0xe7, 0x5d, 0x52, 0xe7, 0x31, 0x7a, 0xb8, 0xff, 0xc0, 0x75, - 0x94, 0x57, 0xf6, 0xe3, 0x90, 0xb3, 0x77, 0xcf, 0xfb, 0x46, 0x28, 0x7d, 0x09, 0x37, 0x5d, 0x69, - 0x24, 0xc3, 0x99, 0x3c, 0xec, 0x70, 0xc6, 0x0d, 0x4d, 0xb2, 0xd7, 0xf8, 0x83, 0x81, 0x8c, 0x1e, - 0x80, 0xf0, 0x06, 0xb2, 0x7e, 0xc3, 0xd0, 0x29, 0x98, 0xd0, 0x36, 0x1d, 0x6c, 0x05, 0x66, 0x22, - 0x7b, 0x75, 0x87, 0xca, 0xf3, 0x78, 0xd3, 0xb4, 0x5c, 0xb1, 0x4c, 0xd1, 0xa1, 0xd2, 0x7b, 0x0f, - 0xb5, 0x5c, 0xe0, 0x76, 0xc8, 0x6e, 0x82, 0x63, 0x86, 0xb9, 0x88, 0xbb, 0x4c, 0xce, 0x14, 0xc5, - 0x59, 0xd2, 0x02, 0xf6, 0x7f, 0xd8, 0xd7, 0x95, 0xcc, 0xed, 0xef, 0x4a, 0xd0, 0x67, 0x92, 0xce, - 0x99, 0x7b, 0x80, 0x1e, 0x99, 0x85, 0xa6, 0x3c, 0x05, 0x66, 0xda, 0xcc, 0x45, 0xab, 0xa5, 0xfb, - 0xad, 0x24, 0xf2, 0x3f, 0x2e, 0x73, 0xa0, 0x48, 0xd9, 0xb0, 0x22, 0x2d, 0xc3, 0x24, 0x39, 0xaa, - 0xec, 0x6a, 0x52, 0xae, 0xc7, 0x25, 0x9e, 0x4c, 0xeb, 0xfc, 0x4a, 0x85, 0xc4, 0x36, 0x5f, 0x62, - 0xbf, 0xa8, 0xfe, 0xcf, 0xc9, 0x66, 0xdf, 0xf1, 0x12, 0x4a, 0xbf, 0x39, 0xfe, 0x56, 0x1e, 0xae, - 0x28, 0x59, 0xa6, 0x6d, 0x93, 0x33, 0x30, 0xbd, 0x0d, 0xf3, 0x8d, 0x12, 0x77, 0xd9, 0xc2, 0x23, - 0xba, 0xf9, 0xf5, 0x6b, 0x50, 0xe3, 0x6b, 0x1a, 0x5f, 0x17, 0x0e, 0xf2, 0xe2, 0xef, 0x3f, 0x44, - 0x08, 0xfd, 0x47, 0xa3, 0x91, 0xbc, 0x2b, 0x23, 0x12, 0x77, 0x26, 0xa1, 0xac, 0xd2, 0x6f, 0x2e, - 0x5f, 0x92, 0xe0, 0xca, 0x5e, 0x6e, 0x36, 0x0c, 0xdb, 0x6f, 0x30, 0x57, 0x0f, 0x68, 0x2f, 0x7c, - 0x9c, 0x92, 0xd8, 0x6b, 0x0e, 0x23, 0xea, 0x1e, 0x2a, 0x2d, 0x62, 0xb1, 0x24, 0x38, 0x51, 0x13, - 0x77, 0xcd, 0x61, 0x62, 0xf2, 0xe9, 0x0b, 0xf7, 0xb3, 0x59, 0x38, 0xba, 0x6c, 0x99, 0xbb, 0x5d, - 0x3b, 0xe8, 0x81, 0xfe, 0xba, 0xff, 0x86, 0x6b, 0x5e, 0xc4, 0x34, 0xb8, 0x06, 0xa6, 0x2d, 0x66, - 0xcd, 0x05, 0xdb, 0xaf, 0xe1, 0xa4, 0x70, 0xef, 0x25, 0x1f, 0xa4, 0xf7, 0x0a, 0xfa, 0x99, 0x2c, - 0xd7, 0xcf, 0xf4, 0xf6, 0x1c, 0xb9, 0x3e, 0x3d, 0xc7, 0x5f, 0x49, 0x09, 0x07, 0xd5, 0x1e, 0x11, - 0x45, 0xf4, 0x17, 0x25, 0xc8, 0x6f, 0x91, 0x8c, 0xac, 0xbb, 0x78, 0xac, 0x58, 0xcd, 0x08, 0x71, - 0x95, 0xfd, 0x1a, 0xc8, 0x55, 0x0e, 0xeb, 0x70, 0xa2, 0x01, 0x2e, 0x9e, 0xdb, 0xf4, 0x95, 0xea, - 0xb5, 0x59, 0x98, 0xf1, 0x4b, 0xaf, 0xb4, 0x6d, 0xf4, 0x50, 0x7f, 0x8d, 0x9a, 0x15, 0xd1, 0xa8, - 0x7d, 0xeb, 0xcc, 0xfe, 0xa8, 0x23, 0x87, 0x46, 0x9d, 0xbe, 0xa3, 0xcb, 0x4c, 0xc4, 0xe8, 0x82, - 0x9e, 0x29, 0x8b, 0x5e, 0x57, 0xc4, 0x77, 0xad, 0xa4, 0x36, 0x8f, 0xe4, 0xc1, 0x42, 0xf0, 0xd2, - 0xa4, 0xc1, 0xb5, 0x4a, 0x5f, 0x49, 0x3e, 0x20, 0xc1, 0xb1, 0xfd, 0x9d, 0xf9, 0x8f, 0xf1, 0x5e, - 0x68, 0x6e, 0x9d, 0x6c, 0xdf, 0x0b, 0x8d, 0xbc, 0xf1, 0x9b, 0x74, 0xb1, 0x41, 0x43, 0x38, 0x7b, - 0x6f, 0x70, 0x27, 0x2e, 0x16, 0x16, 0x44, 0x90, 0xe8, 0x18, 0x6e, 0x9d, 0x92, 0x61, 0xaa, 0x8e, - 0x9d, 0x55, 0xed, 0x92, 0xb9, 0xeb, 0x20, 0x4d, 0x74, 0x7b, 0xee, 0xc9, 0x90, 0xef, 0x90, 0x5f, - 0xd8, 0x2d, 0xf0, 0xd7, 0xf4, 0xdd, 0xdf, 0x22, 0xbe, 0x3f, 0x94, 0xb4, 0xca, 0xf2, 0xf3, 0xd1, - 0x5a, 0x44, 0x76, 0x47, 0x7d, 0xee, 0x46, 0xb2, 0xb5, 0x93, 0x68, 0xef, 0x34, 0xaa, 0xe8, 0xf4, - 0x61, 0x79, 0xb6, 0x0c, 0xb3, 0x75, 0xec, 0x54, 0xec, 0x25, 0x6d, 0xcf, 0xb4, 0x74, 0x07, 0x87, - 0xaf, 0x81, 0x8c, 0x87, 0xe6, 0x34, 0x80, 0xee, 0xff, 0xc6, 0x62, 0x48, 0x85, 0x52, 0xd0, 0x6f, - 0x26, 0x75, 0x14, 0xe2, 0xf8, 0x18, 0x09, 0x08, 0x89, 0x7c, 0x2c, 0xe2, 0x8a, 0x4f, 0x1f, 0x88, - 0x2f, 0x4a, 0x0c, 0x88, 0xa2, 0xd5, 0xda, 0xd6, 0xf7, 0x70, 0x3b, 0x21, 0x10, 0xde, 0x6f, 0x01, - 0x10, 0x3e, 0xa1, 0xc4, 0xee, 0x2b, 0x1c, 0x1f, 0xa3, 0x70, 0x5f, 0x89, 0x23, 0x38, 0x96, 0x30, - 0x50, 0x6e, 0xd7, 0xc3, 0xd6, 0x33, 0xef, 0x12, 0x15, 0x6b, 0x60, 0xb2, 0x49, 0x61, 0x93, 0x6d, - 0xa8, 0x8e, 0x85, 0x96, 0x3d, 0x48, 0xa7, 0xb3, 0x69, 0x74, 0x2c, 0x7d, 0x8b, 0x4e, 0x5f, 0xe8, - 0xef, 0x91, 0xe1, 0x84, 0x1f, 0x1f, 0xa5, 0x8e, 0x9d, 0x45, 0xcd, 0xde, 0x3e, 0x6f, 0x6a, 0x56, - 0x1b, 0x95, 0x46, 0x70, 0xe2, 0x0f, 0x7d, 0x21, 0x0c, 0x42, 0x95, 0x07, 0xa1, 0xaf, 0xab, 0x68, - 0x5f, 0x5e, 0x46, 0xd1, 0xc9, 0xc4, 0x7a, 0xb3, 0xfe, 0xb6, 0x0f, 0xd6, 0xd3, 0x38, 0xb0, 0xee, - 0x1c, 0x96, 0xc5, 0xf4, 0x81, 0xfb, 0x0d, 0x3a, 0x22, 0x84, 0xbc, 0x9a, 0xef, 0x13, 0x05, 0x2c, - 0xc2, 0xab, 0x55, 0x8e, 0xf4, 0x6a, 0x1d, 0x6a, 0x8c, 0x18, 0xe8, 0x91, 0x9c, 0xee, 0x18, 0x71, - 0x88, 0xde, 0xc6, 0xef, 0x90, 0xa1, 0x40, 0x02, 0x64, 0x85, 0x3c, 0xbe, 0xc3, 0xf1, 0xa6, 0xe3, - 0xd1, 0xd9, 0xe7, 0x5d, 0x3e, 0x91, 0xd4, 0xbb, 0x1c, 0xbd, 0x3d, 0xa9, 0x0f, 0x79, 0x2f, 0xb7, - 0x23, 0x41, 0x2c, 0x91, 0x8b, 0xf8, 0x00, 0x0e, 0xd2, 0x07, 0xed, 0xbf, 0xc9, 0x00, 0x6e, 0x83, - 0x66, 0x67, 0x1f, 0x9e, 0x2e, 0x0a, 0xd7, 0xcd, 0x61, 0xbf, 0x7a, 0x17, 0xa8, 0x13, 0x3d, 0x40, - 0x51, 0x8a, 0xc1, 0xa9, 0x8a, 0x87, 0x93, 0xfa, 0x56, 0x06, 0x5c, 0x8d, 0x04, 0x96, 0x44, 0xde, - 0x96, 0x91, 0x65, 0xa7, 0x0f, 0xc8, 0xff, 0x90, 0x20, 0xd7, 0x30, 0xeb, 0xd8, 0x39, 0xb8, 0x29, - 0x90, 0xf8, 0xd8, 0x3e, 0x29, 0x77, 0x14, 0xc7, 0xf6, 0xfb, 0x11, 0x4a, 0x5f, 0x74, 0xef, 0x96, - 0x60, 0xa6, 0x61, 0x96, 0xfc, 0xc5, 0x29, 0x71, 0x5f, 0x55, 0xf1, 0x2b, 0x97, 0xfd, 0x0a, 0x06, - 0xc5, 0x1c, 0xe8, 0xca, 0xe5, 0xc1, 0xf4, 0xd2, 0x97, 0xdb, 0x6d, 0x70, 0x74, 0xc3, 0x68, 0x9b, - 0x2a, 0x6e, 0x9b, 0x6c, 0xa5, 0x5b, 0x51, 0x20, 0xbb, 0x6b, 0xb4, 0x4d, 0xc2, 0x72, 0x4e, 0x25, - 0xcf, 0x6e, 0x9a, 0x85, 0xdb, 0x26, 0xf3, 0x0d, 0x20, 0xcf, 0xe8, 0xeb, 0x32, 0x64, 0xdd, 0x7f, - 0xc5, 0x45, 0xfd, 0x0e, 0x39, 0x61, 0x20, 0x02, 0x97, 0xfc, 0x48, 0x2c, 0xa1, 0xbb, 0x42, 0x6b, - 0xff, 0xd4, 0x83, 0xf5, 0xda, 0xa8, 0xf2, 0x42, 0xa2, 0x08, 0xd6, 0xfc, 0x95, 0x53, 0x30, 0x71, - 0xbe, 0x63, 0xb6, 0x2e, 0x04, 0xe7, 0xe5, 0xd9, 0xab, 0x72, 0x23, 0xe4, 0x2c, 0xcd, 0xd8, 0xc2, - 0x6c, 0x4f, 0xe1, 0x78, 0x4f, 0x5f, 0x48, 0xbc, 0x5e, 0x54, 0x9a, 0x05, 0xbd, 0x3d, 0x49, 0x08, - 0x84, 0x3e, 0x95, 0x4f, 0xa6, 0x0f, 0x8b, 0x43, 0x9c, 0x2c, 0x2b, 0xc0, 0x4c, 0xa9, 0x48, 0x2f, - 0x37, 0x5f, 0xab, 0x9d, 0x2d, 0x17, 0x64, 0x02, 0xb3, 0x2b, 0x93, 0x14, 0x61, 0x76, 0xc9, 0xff, - 0xc8, 0xc2, 0xdc, 0xa7, 0xf2, 0x87, 0x01, 0xf3, 0x27, 0x25, 0x98, 0x5d, 0xd5, 0x6d, 0x27, 0xca, - 0xdb, 0x3f, 0x26, 0x3e, 0xee, 0x0b, 0x92, 0x9a, 0xca, 0x5c, 0x39, 0xc2, 0x81, 0x71, 0x13, 0x99, - 0xc3, 0x71, 0x45, 0x8c, 0xe7, 0x58, 0x0a, 0xe1, 0x80, 0x5e, 0x48, 0x2c, 0x2c, 0xc9, 0xc4, 0x86, - 0x52, 0x50, 0xc8, 0xf8, 0x0d, 0xa5, 0xc8, 0xb2, 0xd3, 0x97, 0xef, 0xd7, 0x25, 0x38, 0xe6, 0x16, - 0x1f, 0xb7, 0x2c, 0x15, 0x2d, 0xe6, 0x81, 0xcb, 0x52, 0x89, 0x57, 0xc6, 0xf7, 0xf1, 0x32, 0x8a, - 0x95, 0xf1, 0x41, 0x44, 0xc7, 0x2c, 0xe6, 0x88, 0x65, 0xd8, 0x41, 0x62, 0x8e, 0x59, 0x86, 0x1d, - 0x5e, 0xcc, 0xf1, 0x4b, 0xb1, 0x43, 0x8a, 0xf9, 0xd0, 0x16, 0x58, 0x5f, 0x2f, 0xfb, 0x62, 0x8e, - 0x5c, 0xdb, 0x88, 0x11, 0x73, 0xe2, 0x13, 0xbb, 0xe8, 0x9d, 0x43, 0x0a, 0x7e, 0xc4, 0xeb, 0x1b, - 0xc3, 0xc0, 0x74, 0x88, 0x6b, 0x1c, 0x2f, 0x95, 0x61, 0x8e, 0x71, 0xd1, 0x7f, 0xca, 0x1c, 0x83, - 0x51, 0xe2, 0x29, 0x73, 0xe2, 0x33, 0x40, 0x3c, 0x67, 0xe3, 0x3f, 0x03, 0x14, 0x5b, 0x7e, 0xfa, - 0xe0, 0x7c, 0x23, 0x0b, 0x27, 0x5d, 0x16, 0xd6, 0xcc, 0xb6, 0xbe, 0x79, 0x89, 0x72, 0x71, 0x56, - 0xeb, 0xec, 0x62, 0x1b, 0xbd, 0x4f, 0x12, 0x45, 0xe9, 0x3f, 0x01, 0x98, 0x5d, 0x6c, 0xd1, 0x40, - 0x6a, 0x0c, 0xa8, 0x3b, 0xa2, 0x2a, 0xbb, 0xbf, 0x24, 0xff, 0xba, 0x98, 0x9a, 0x47, 0x44, 0x0d, - 0xd1, 0x73, 0xad, 0xc2, 0x29, 0xff, 0x4b, 0xaf, 0x83, 0x47, 0x66, 0xbf, 0x83, 0xc7, 0x0d, 0x20, - 0x6b, 0xed, 0xb6, 0x0f, 0x55, 0xef, 0x66, 0x36, 0x29, 0x53, 0x75, 0xb3, 0xb8, 0x39, 0x6d, 0x1c, - 0x1c, 0xcd, 0x8b, 0xc8, 0x69, 0x63, 0x47, 0x99, 0x87, 0x3c, 0xbd, 0x9c, 0xd9, 0x5f, 0xd1, 0xef, - 0x9f, 0x99, 0xe5, 0xe2, 0x4d, 0xbb, 0x1a, 0xaf, 0x86, 0xb7, 0x25, 0x92, 0x4c, 0xbf, 0x7e, 0x3a, - 0xb0, 0x93, 0x55, 0x4e, 0xc1, 0x9e, 0x3a, 0x34, 0xe5, 0xf1, 0xec, 0x86, 0x15, 0xbb, 0xdd, 0xce, - 0xa5, 0x06, 0x0b, 0xbe, 0x92, 0x68, 0x37, 0x2c, 0x14, 0xc3, 0x45, 0xea, 0x8d, 0xe1, 0x92, 0x7c, - 0x37, 0x8c, 0xe3, 0x63, 0x14, 0xbb, 0x61, 0x71, 0x04, 0xd3, 0x17, 0xed, 0x5b, 0x73, 0xd4, 0x6a, - 0x66, 0xd1, 0xfb, 0xff, 0xb0, 0xff, 0x21, 0x34, 0xe0, 0x9d, 0x5d, 0xfa, 0x05, 0xf6, 0x8f, 0xbd, - 0xb5, 0x44, 0x79, 0x22, 0xe4, 0x37, 0x4d, 0x6b, 0x47, 0xf3, 0x36, 0xee, 0x7b, 0x4f, 0x8a, 0xb0, - 0x88, 0xf9, 0x4b, 0x24, 0x8f, 0xca, 0xf2, 0xba, 0xf3, 0x91, 0x67, 0xe8, 0x5d, 0x16, 0x75, 0xd1, - 0x7d, 0x54, 0xae, 0x83, 0x59, 0x16, 0x7c, 0xb1, 0x8a, 0x6d, 0x07, 0xb7, 0x59, 0xc4, 0x0a, 0x3e, - 0x51, 0x39, 0x03, 0x33, 0x2c, 0x61, 0x49, 0xef, 0x60, 0x9b, 0x05, 0xad, 0xe0, 0xd2, 0x94, 0x93, - 0x90, 0xd7, 0xed, 0x7b, 0x6c, 0xd3, 0x20, 0xfe, 0xff, 0x93, 0x2a, 0x7b, 0x53, 0x6e, 0x80, 0xa3, - 0x2c, 0x9f, 0x6f, 0xac, 0xd2, 0x03, 0x3b, 0xbd, 0xc9, 0xae, 0x6a, 0x19, 0xe6, 0xba, 0x65, 0x6e, - 0x59, 0xd8, 0xb6, 0xc9, 0xa9, 0xa9, 0x49, 0x35, 0x94, 0x82, 0x3e, 0x37, 0xcc, 0xc4, 0x22, 0xf1, - 0x4d, 0x06, 0x2e, 0x4a, 0xbb, 0xad, 0x16, 0xc6, 0x6d, 0x76, 0xf2, 0xc9, 0x7b, 0x4d, 0x78, 0xc7, - 0x41, 0xe2, 0x69, 0xc8, 0x21, 0x5d, 0x72, 0xf0, 0xe1, 0x13, 0x90, 0xa7, 0x17, 0x86, 0xa1, 0x17, - 0xcf, 0xf5, 0x55, 0xd6, 0x39, 0x5e, 0x59, 0x37, 0x60, 0xc6, 0x30, 0xdd, 0xe2, 0xd6, 0x35, 0x4b, - 0xdb, 0xb1, 0xe3, 0x56, 0x19, 0x29, 0x5d, 0x7f, 0x48, 0xa9, 0x86, 0x7e, 0x5b, 0x39, 0xa2, 0x72, - 0x64, 0x94, 0xff, 0x1f, 0x1c, 0x3d, 0xcf, 0x22, 0x04, 0xd8, 0x8c, 0xb2, 0x14, 0xed, 0x83, 0xd7, - 0x43, 0x79, 0x81, 0xff, 0x73, 0xe5, 0x88, 0xda, 0x4b, 0x4c, 0xf9, 0x69, 0x98, 0x73, 0x5f, 0xdb, - 0xe6, 0x45, 0x8f, 0x71, 0x39, 0xda, 0x10, 0xe9, 0x21, 0xbf, 0xc6, 0xfd, 0xb8, 0x72, 0x44, 0xed, - 0x21, 0xa5, 0xd4, 0x00, 0xb6, 0x9d, 0x9d, 0x0e, 0x23, 0x9c, 0x8d, 0x56, 0xc9, 0x1e, 0xc2, 0x2b, - 0xfe, 0x4f, 0x2b, 0x47, 0xd4, 0x10, 0x09, 0x65, 0x15, 0xa6, 0x9c, 0x07, 0x1c, 0x46, 0x2f, 0x17, - 0xbd, 0xf9, 0xdd, 0x43, 0xaf, 0xe1, 0xfd, 0xb3, 0x72, 0x44, 0x0d, 0x08, 0x28, 0x15, 0x98, 0xec, - 0x9e, 0x67, 0xc4, 0xf2, 0x7d, 0xa2, 0xcd, 0xf7, 0x27, 0xb6, 0x7e, 0xde, 0xa7, 0xe5, 0xff, 0xee, - 0x32, 0xd6, 0xb2, 0xf7, 0x18, 0xad, 0x09, 0x61, 0xc6, 0x4a, 0xde, 0x3f, 0x2e, 0x63, 0x3e, 0x01, - 0xa5, 0x02, 0x53, 0xb6, 0xa1, 0x75, 0xed, 0x6d, 0xd3, 0xb1, 0x4f, 0x4d, 0xf6, 0xf8, 0x49, 0x46, - 0x53, 0xab, 0xb3, 0x7f, 0xd4, 0xe0, 0x6f, 0xe5, 0x89, 0x70, 0x62, 0x97, 0xdc, 0xdc, 0x5e, 0x7e, - 0x40, 0xb7, 0x1d, 0xdd, 0xd8, 0xf2, 0x62, 0xcc, 0xd2, 0xde, 0xa6, 0xff, 0x47, 0x65, 0x9e, 0x9d, - 0x98, 0x02, 0xd2, 0x36, 0x51, 0xef, 0x66, 0x1d, 0x2d, 0x36, 0x74, 0x50, 0xea, 0x29, 0x90, 0x75, - 0x3f, 0x91, 0xde, 0x69, 0xae, 0xff, 0x42, 0x60, 0xaf, 0xee, 0x90, 0x06, 0xec, 0xfe, 0xd4, 0xd3, - 0xc1, 0xcd, 0xf4, 0x76, 0x70, 0x6e, 0x03, 0xd7, 0xed, 0x35, 0x7d, 0x8b, 0x5a, 0x57, 0xcc, 0x1f, - 0x3e, 0x9c, 0x44, 0x67, 0xa3, 0x55, 0x7c, 0x91, 0xde, 0xa0, 0x71, 0xd4, 0x9b, 0x8d, 0x7a, 0x29, - 0xe8, 0x7a, 0x98, 0x09, 0x37, 0x32, 0x7a, 0xeb, 0xa8, 0x1e, 0xd8, 0x66, 0xec, 0x0d, 0x5d, 0x07, - 0x73, 0xbc, 0x4e, 0x87, 0x86, 0x20, 0xd9, 0xeb, 0x0a, 0xd1, 0xb5, 0x70, 0xb4, 0xa7, 0x61, 0x79, - 0x31, 0x47, 0x32, 0x41, 0xcc, 0x91, 0x6b, 0x00, 0x02, 0x2d, 0xee, 0x4b, 0xe6, 0x6a, 0x98, 0xf2, - 0xf5, 0xb2, 0x6f, 0x86, 0xaf, 0x66, 0x60, 0xd2, 0x53, 0xb6, 0x7e, 0x19, 0xdc, 0xf1, 0xc7, 0x08, - 0x6d, 0x30, 0xb0, 0x69, 0x38, 0x97, 0xe6, 0x8e, 0x33, 0x81, 0x5b, 0x6f, 0x43, 0x77, 0x3a, 0xde, - 0xd1, 0xb8, 0xde, 0x64, 0x65, 0x1d, 0x40, 0x27, 0x18, 0x35, 0x82, 0xb3, 0x72, 0xb7, 0x24, 0x68, - 0x0f, 0x54, 0x1f, 0x42, 0x34, 0xce, 0xfc, 0x18, 0x3b, 0xc8, 0x36, 0x05, 0x39, 0x1a, 0x68, 0xfd, - 0x88, 0x32, 0x07, 0x50, 0x7e, 0xfa, 0x7a, 0x59, 0xad, 0x94, 0xab, 0xa5, 0x72, 0x21, 0x83, 0x5e, - 0x26, 0xc1, 0x94, 0xdf, 0x08, 0xfa, 0x56, 0xb2, 0xcc, 0x54, 0x6b, 0xe0, 0xc5, 0x8e, 0xfb, 0x1b, - 0x55, 0x58, 0xc9, 0x9e, 0x0c, 0x97, 0xef, 0xda, 0x78, 0x49, 0xb7, 0x6c, 0x47, 0x35, 0x2f, 0x2e, - 0x99, 0x96, 0x1f, 0x55, 0x99, 0x45, 0x38, 0x8d, 0xfa, 0xec, 0x5a, 0x1c, 0x6d, 0x4c, 0x0e, 0x4d, - 0x61, 0x8b, 0xad, 0x1c, 0x07, 0x09, 0x2e, 0x5d, 0xc7, 0xd2, 0x0c, 0xbb, 0x6b, 0xda, 0x58, 0x35, - 0x2f, 0xda, 0x45, 0xa3, 0x5d, 0x32, 0x3b, 0xbb, 0x3b, 0x86, 0xcd, 0x6c, 0x86, 0xa8, 0xcf, 0xae, - 0x74, 0xc8, 0xb5, 0xad, 0x73, 0x00, 0xa5, 0xda, 0xea, 0x6a, 0xb9, 0xd4, 0xa8, 0xd4, 0xaa, 0x85, - 0x23, 0xae, 0xb4, 0x1a, 0xc5, 0x85, 0x55, 0x57, 0x3a, 0x3f, 0x03, 0x93, 0x5e, 0x9b, 0x66, 0x61, - 0x52, 0x32, 0x5e, 0x98, 0x14, 0xa5, 0x08, 0x93, 0x5e, 0x2b, 0x67, 0x23, 0xc2, 0xa3, 0x7b, 0x8f, - 0xc5, 0xee, 0x68, 0x96, 0x43, 0xfc, 0xa9, 0x3d, 0x22, 0x0b, 0x9a, 0x8d, 0x55, 0xff, 0xb7, 0x33, - 0x8f, 0x63, 0x1c, 0x28, 0x30, 0x57, 0x5c, 0x5d, 0x6d, 0xd6, 0xd4, 0x66, 0xb5, 0xd6, 0x58, 0xa9, - 0x54, 0x97, 0xe9, 0x08, 0x59, 0x59, 0xae, 0xd6, 0xd4, 0x32, 0x1d, 0x20, 0xeb, 0x85, 0x0c, 0xbd, - 0x36, 0x78, 0x61, 0x12, 0xf2, 0x5d, 0x22, 0x5d, 0xf4, 0x25, 0x39, 0xe1, 0x79, 0x78, 0x1f, 0xa7, - 0x88, 0x8b, 0x4d, 0x39, 0x9f, 0x74, 0xa9, 0xcf, 0x99, 0xd1, 0x33, 0x30, 0x43, 0x6d, 0x3d, 0x9b, - 0x2c, 0xef, 0x13, 0xe4, 0x64, 0x95, 0x4b, 0x43, 0x1f, 0x95, 0x12, 0x1c, 0x92, 0xef, 0xcb, 0x51, - 0x32, 0xe3, 0xe2, 0xcf, 0x32, 0xc3, 0x5d, 0x4b, 0x50, 0xa9, 0x36, 0xca, 0x6a, 0xb5, 0xb8, 0xca, - 0xb2, 0xc8, 0xca, 0x29, 0x38, 0x5e, 0xad, 0xb1, 0x98, 0x7f, 0xf5, 0x66, 0xa3, 0xd6, 0xac, 0xac, - 0xad, 0xd7, 0xd4, 0x46, 0x21, 0xa7, 0x9c, 0x04, 0x85, 0x3e, 0x37, 0x2b, 0xf5, 0x66, 0xa9, 0x58, - 0x2d, 0x95, 0x57, 0xcb, 0x8b, 0x85, 0xbc, 0xf2, 0x18, 0xb8, 0x96, 0x5e, 0x73, 0x53, 0x5b, 0x6a, - 0xaa, 0xb5, 0x73, 0x75, 0x17, 0x41, 0xb5, 0xbc, 0x5a, 0x74, 0x15, 0x29, 0x74, 0x7d, 0xf0, 0x84, - 0x72, 0x19, 0x1c, 0x25, 0x77, 0x8b, 0xaf, 0xd6, 0x8a, 0x8b, 0xac, 0xbc, 0x49, 0xe5, 0x2a, 0x38, - 0x55, 0xa9, 0xd6, 0x37, 0x96, 0x96, 0x2a, 0xa5, 0x4a, 0xb9, 0xda, 0x68, 0xae, 0x97, 0xd5, 0xb5, - 0x4a, 0xbd, 0xee, 0xfe, 0x5b, 0x98, 0x22, 0x97, 0xb3, 0xd2, 0x3e, 0x13, 0xbd, 0x57, 0x86, 0xd9, - 0xb3, 0x5a, 0x47, 0x77, 0x07, 0x0a, 0x72, 0x6b, 0x73, 0xcf, 0x71, 0x12, 0x87, 0xdc, 0xee, 0xcc, - 0x1c, 0xd2, 0xc9, 0x0b, 0xfa, 0x05, 0x39, 0xe1, 0x71, 0x12, 0x06, 0x04, 0x2d, 0x71, 0x9e, 0x2b, - 0x2d, 0x62, 0xf2, 0xf3, 0x1a, 0x29, 0xc1, 0x71, 0x12, 0x71, 0xf2, 0xc9, 0xc0, 0x7f, 0xf9, 0xa8, - 0xc0, 0x2f, 0xc0, 0xcc, 0x46, 0xb5, 0xb8, 0xd1, 0x58, 0xa9, 0xa9, 0x95, 0x9f, 0x22, 0xd1, 0xc8, - 0x67, 0x61, 0x6a, 0xa9, 0xa6, 0x2e, 0x54, 0x16, 0x17, 0xcb, 0xd5, 0x42, 0x4e, 0xb9, 0x1c, 0x2e, - 0xab, 0x97, 0xd5, 0xb3, 0x95, 0x52, 0xb9, 0xb9, 0x51, 0x2d, 0x9e, 0x2d, 0x56, 0x56, 0x49, 0x1f, - 0x91, 0x8f, 0xb9, 0x71, 0x7a, 0x02, 0xfd, 0x5c, 0x16, 0x80, 0x56, 0x9d, 0x5c, 0xc6, 0x13, 0xba, - 0x97, 0xf8, 0xcf, 0x93, 0x4e, 0x1a, 0x02, 0x32, 0x11, 0xed, 0xb7, 0x02, 0x93, 0x16, 0xfb, 0xc0, - 0x96, 0x57, 0x06, 0xd1, 0xa1, 0x8f, 0x1e, 0x35, 0xd5, 0xff, 0x1d, 0xbd, 0x2f, 0xc9, 0x1c, 0x21, - 0x92, 0xb1, 0x64, 0x48, 0x2e, 0x8d, 0x06, 0x48, 0xf4, 0x50, 0x06, 0xe6, 0xf8, 0x8a, 0xb9, 0x95, - 0x20, 0xc6, 0x94, 0x58, 0x25, 0xf8, 0x9f, 0x43, 0x46, 0xd6, 0x99, 0x27, 0xb0, 0xe1, 0x14, 0xbc, - 0x96, 0x49, 0x4f, 0x86, 0x7b, 0x16, 0x4b, 0x21, 0xe3, 0x32, 0xef, 0x1a, 0x1d, 0x05, 0x49, 0x99, - 0x00, 0xb9, 0xf1, 0x80, 0x53, 0x90, 0xd1, 0x57, 0x65, 0x98, 0xe5, 0x2e, 0x3e, 0x46, 0xaf, 0xc9, - 0x88, 0x5c, 0x4a, 0x1a, 0xba, 0x52, 0x39, 0x73, 0xd0, 0x2b, 0x95, 0xcf, 0xdc, 0x0c, 0x13, 0x2c, - 0x8d, 0xc8, 0xb7, 0x56, 0x75, 0x4d, 0x81, 0xa3, 0x30, 0xbd, 0x5c, 0x6e, 0x34, 0xeb, 0x8d, 0xa2, - 0xda, 0x28, 0x2f, 0x16, 0x32, 0xee, 0xc0, 0x57, 0x5e, 0x5b, 0x6f, 0xdc, 0x57, 0x90, 0x92, 0x7b, - 0xe8, 0xf5, 0x32, 0x32, 0x66, 0x0f, 0xbd, 0xb8, 0xe2, 0xd3, 0x9f, 0xab, 0x7e, 0x46, 0x86, 0x02, - 0xe5, 0xa0, 0xfc, 0x40, 0x17, 0x5b, 0x3a, 0x36, 0x5a, 0x18, 0x5d, 0x10, 0x89, 0x08, 0xba, 0x2f, - 0x56, 0x1e, 0xe9, 0xcf, 0x43, 0x56, 0x22, 0x7d, 0xe9, 0x31, 0xb0, 0xb3, 0xfb, 0x0c, 0xec, 0x4f, - 0x27, 0x75, 0xd1, 0xeb, 0x65, 0x77, 0x24, 0x90, 0x7d, 0x22, 0x89, 0x8b, 0xde, 0x00, 0x0e, 0xc6, - 0x12, 0xe8, 0x37, 0x62, 0xfc, 0x2d, 0xc8, 0xe8, 0xf9, 0x32, 0x1c, 0x5d, 0xd4, 0x1c, 0xbc, 0x70, - 0xa9, 0xe1, 0x5d, 0x4c, 0x18, 0x71, 0x99, 0x70, 0x66, 0xdf, 0x65, 0xc2, 0xc1, 0xdd, 0x86, 0x52, - 0xcf, 0xdd, 0x86, 0xe8, 0x5d, 0x49, 0x0f, 0xf5, 0xf5, 0xf0, 0x30, 0xb2, 0x68, 0xbc, 0xc9, 0x0e, - 0xeb, 0xc5, 0x73, 0x31, 0x86, 0xbb, 0xfd, 0xa7, 0xa0, 0x40, 0x59, 0x09, 0x79, 0xa1, 0xfd, 0x2a, - 0xbb, 0x7f, 0xbb, 0x99, 0x20, 0xe8, 0x9f, 0x17, 0x46, 0x41, 0xe2, 0xc3, 0x28, 0x70, 0x8b, 0x9a, - 0x72, 0xaf, 0xe7, 0x40, 0xd2, 0xce, 0x30, 0xe4, 0x72, 0x16, 0x1d, 0x67, 0x35, 0xbd, 0xce, 0x30, - 0xb6, 0xf8, 0xf1, 0xdc, 0x11, 0xcb, 0xee, 0x79, 0x2c, 0x8b, 0x22, 0x13, 0x7f, 0x15, 0x76, 0x52, - 0xff, 0x63, 0xce, 0xe5, 0x2f, 0xe6, 0x7e, 0xe8, 0xf4, 0xfc, 0x8f, 0x07, 0x71, 0x90, 0x3e, 0x0a, - 0x3f, 0x90, 0x20, 0x5b, 0x37, 0x2d, 0x67, 0x54, 0x18, 0x24, 0xdd, 0x33, 0x0d, 0x49, 0xa0, 0x1e, - 0x3d, 0xe7, 0x4c, 0x6f, 0xcf, 0x34, 0xbe, 0xfc, 0x31, 0xc4, 0x4d, 0x3c, 0x0a, 0x73, 0x94, 0x13, - 0xff, 0x52, 0x91, 0xef, 0x4b, 0xb4, 0xbf, 0xba, 0x57, 0x14, 0x91, 0x33, 0x30, 0x13, 0xda, 0xb3, - 0xf4, 0x40, 0xe1, 0xd2, 0xd0, 0x1b, 0xc3, 0xb8, 0x2c, 0xf2, 0xb8, 0xf4, 0x9b, 0x71, 0xfb, 0xf7, - 0x72, 0x8c, 0xaa, 0x67, 0x4a, 0x12, 0x82, 0x31, 0xa6, 0xf0, 0xf4, 0x11, 0x79, 0x50, 0x86, 0x3c, - 0xf3, 0x19, 0x1b, 0x29, 0x02, 0x49, 0x5b, 0x86, 0x2f, 0x04, 0x31, 0xdf, 0x32, 0x79, 0xd4, 0x2d, - 0x23, 0xbe, 0xfc, 0xf4, 0x71, 0xf8, 0x77, 0xe6, 0x0c, 0x59, 0xdc, 0xd3, 0xf4, 0x8e, 0x76, 0xbe, - 0x93, 0x20, 0xf4, 0xf1, 0x47, 0x13, 0x1e, 0xff, 0xf2, 0xab, 0xca, 0x95, 0x17, 0x21, 0xf1, 0x9f, - 0x80, 0x29, 0xcb, 0x5f, 0x92, 0xf4, 0x4e, 0xc7, 0xf7, 0x38, 0xa2, 0xb2, 0xef, 0x6a, 0x90, 0x33, - 0xd1, 0x59, 0x2f, 0x21, 0x7e, 0xc6, 0x72, 0x36, 0x65, 0xba, 0xd8, 0x6e, 0x2f, 0x61, 0xcd, 0xd9, - 0xb5, 0x70, 0x3b, 0xd1, 0x10, 0xc1, 0x8b, 0x68, 0x2a, 0x2c, 0x09, 0x2e, 0xf8, 0xe0, 0x2a, 0x8f, - 0xce, 0x93, 0x06, 0xf4, 0x06, 0x1e, 0x2f, 0x23, 0xe9, 0x92, 0xde, 0xea, 0x43, 0x52, 0xe3, 0x20, - 0x79, 0xca, 0x70, 0x4c, 0x8c, 0xe1, 0x42, 0x77, 0x19, 0xe6, 0xa8, 0x9d, 0x30, 0x6a, 0x4c, 0x7e, - 0x2f, 0xa1, 0x8f, 0x49, 0xe8, 0xda, 0xa6, 0x30, 0x3b, 0x23, 0x81, 0x25, 0x89, 0x47, 0x8a, 0x18, - 0x1f, 0xe9, 0x23, 0xf3, 0xb9, 0x3c, 0x40, 0xc8, 0x6f, 0xf0, 0xa3, 0xf9, 0x20, 0x10, 0x20, 0x7a, - 0x3b, 0x9b, 0x7f, 0xd4, 0xb9, 0xa8, 0xd4, 0x21, 0x9f, 0x40, 0x7f, 0x43, 0x8a, 0x4f, 0x14, 0x1a, - 0x55, 0xfe, 0x2c, 0xa1, 0xcd, 0xcb, 0xbc, 0xf6, 0x06, 0x0e, 0xee, 0x43, 0xf6, 0x72, 0x1f, 0x4b, - 0x60, 0xfc, 0x0e, 0x62, 0x25, 0x19, 0x6a, 0xab, 0x43, 0xcc, 0xec, 0x4f, 0xc1, 0x71, 0xb5, 0x5c, - 0x5c, 0xac, 0x55, 0x57, 0xef, 0x0b, 0xdf, 0xe1, 0x53, 0x90, 0xc3, 0x93, 0x93, 0x54, 0x60, 0x7b, - 0x5d, 0xc2, 0x3e, 0x90, 0x97, 0x55, 0xec, 0x0d, 0xf5, 0x9f, 0x48, 0xd0, 0xab, 0x09, 0x90, 0x3d, - 0x4c, 0x14, 0x1e, 0x84, 0x50, 0x33, 0x7a, 0x9e, 0x0c, 0x05, 0x77, 0x3c, 0xa4, 0x5c, 0xb2, 0xcb, - 0xda, 0x6a, 0xbc, 0x5b, 0x61, 0x97, 0xee, 0x3f, 0x05, 0x6e, 0x85, 0x5e, 0x82, 0x72, 0x3d, 0xcc, - 0xb5, 0xb6, 0x71, 0xeb, 0x42, 0xc5, 0xf0, 0xf6, 0xd5, 0xe9, 0x26, 0x6c, 0x4f, 0x2a, 0x0f, 0xcc, - 0xbd, 0x3c, 0x30, 0xfc, 0x24, 0x9a, 0x1b, 0xa4, 0xc3, 0x4c, 0x45, 0xe0, 0xf2, 0x87, 0x3e, 0x2e, - 0x55, 0x0e, 0x97, 0xdb, 0x87, 0xa2, 0x9a, 0x0c, 0x96, 0xea, 0x10, 0xb0, 0x20, 0x38, 0x59, 0x5b, - 0x6f, 0x54, 0x6a, 0xd5, 0xe6, 0x46, 0xbd, 0xbc, 0xd8, 0x5c, 0xf0, 0xc0, 0xa9, 0x17, 0x64, 0xf4, - 0x4d, 0x09, 0x26, 0x28, 0x5b, 0x36, 0x7a, 0x6c, 0x00, 0xc1, 0x40, 0x7f, 0x4a, 0xf4, 0x36, 0xe1, - 0xe8, 0x08, 0xbe, 0x20, 0x58, 0x39, 0x11, 0xfd, 0xd4, 0x93, 0x61, 0x82, 0x82, 0xec, 0xad, 0x68, - 0x9d, 0x8e, 0xe8, 0xa5, 0x18, 0x19, 0xd5, 0xcb, 0x2e, 0x18, 0x29, 0x61, 0x00, 0x1b, 0xe9, 0x8f, - 0x2c, 0xcf, 0xcc, 0x52, 0x33, 0xf8, 0x9c, 0xee, 0x6c, 0x13, 0x77, 0x4b, 0xf4, 0x34, 0x91, 0xe5, - 0xc5, 0x9b, 0x20, 0xb7, 0xe7, 0xe6, 0x1e, 0xe0, 0xba, 0x4a, 0x33, 0xa1, 0x97, 0x0b, 0x07, 0xe6, - 0xe4, 0xf4, 0xd3, 0xe7, 0x29, 0x02, 0x9c, 0x35, 0xc8, 0x76, 0x74, 0xdb, 0x61, 0xe3, 0xc7, 0x6d, - 0x89, 0x08, 0x79, 0x0f, 0x15, 0x07, 0xef, 0xa8, 0x84, 0x0c, 0xba, 0x07, 0x66, 0xc2, 0xa9, 0x02, - 0xee, 0xbb, 0xa7, 0x60, 0x82, 0x1d, 0x2b, 0x63, 0x4b, 0xac, 0xde, 0xab, 0xe0, 0xb2, 0xa6, 0x50, - 0x6d, 0xd3, 0xd7, 0x81, 0xff, 0xfb, 0x28, 0x4c, 0xac, 0xe8, 0xb6, 0x63, 0x5a, 0x97, 0xd0, 0xc3, - 0x19, 0x98, 0x38, 0x8b, 0x2d, 0x5b, 0x37, 0x8d, 0x7d, 0xae, 0x06, 0xd7, 0xc0, 0x74, 0xd7, 0xc2, - 0x7b, 0xba, 0xb9, 0x6b, 0x07, 0x8b, 0x33, 0xe1, 0x24, 0x05, 0xc1, 0xa4, 0xb6, 0xeb, 0x6c, 0x9b, - 0x56, 0x10, 0x8d, 0xc2, 0x7b, 0x57, 0x4e, 0x03, 0xd0, 0xe7, 0xaa, 0xb6, 0x83, 0x99, 0x03, 0x45, - 0x28, 0x45, 0x51, 0x20, 0xeb, 0xe8, 0x3b, 0x98, 0x85, 0xa7, 0x25, 0xcf, 0xae, 0x80, 0x49, 0xa8, - 0x37, 0x16, 0x52, 0x4f, 0x56, 0xbd, 0x57, 0xf4, 0x05, 0x19, 0xa6, 0x97, 0xb1, 0xc3, 0x58, 0xb5, - 0xd1, 0x0b, 0x32, 0x42, 0x37, 0x42, 0xb8, 0x63, 0x6c, 0x47, 0xb3, 0xbd, 0xff, 0xfc, 0x25, 0x58, - 0x3e, 0x31, 0x88, 0x95, 0x2b, 0x87, 0x03, 0x65, 0x93, 0xc0, 0x69, 0x4e, 0x85, 0xfa, 0x65, 0xb2, - 0xcc, 0x6c, 0x13, 0x64, 0xff, 0x07, 0xf4, 0x6e, 0x49, 0xf4, 0xd0, 0x31, 0x93, 0xfd, 0x7c, 0xa8, - 0x3e, 0x91, 0xdd, 0xd1, 0xe4, 0x1e, 0xcb, 0xb1, 0x2f, 0x06, 0x7a, 0x98, 0x12, 0x23, 0xa3, 0xfa, - 0xb9, 0x05, 0x8f, 0x2b, 0x0f, 0xe6, 0x24, 0x7d, 0x6d, 0xfc, 0xae, 0x0c, 0xd3, 0xf5, 0x6d, 0xf3, - 0xa2, 0x27, 0xc7, 0x9f, 0x11, 0x03, 0xf6, 0x2a, 0x98, 0xda, 0xeb, 0x01, 0x35, 0x48, 0x88, 0xbe, - 0xa3, 0x1d, 0x3d, 0x57, 0x4e, 0x0a, 0x53, 0x88, 0xb9, 0x91, 0xdf, 0xa0, 0xae, 0x3c, 0x09, 0x26, - 0x18, 0xd7, 0x6c, 0xc9, 0x25, 0x1e, 0x60, 0x2f, 0x73, 0xb8, 0x82, 0x59, 0xbe, 0x82, 0xc9, 0x90, - 0x8f, 0xae, 0x5c, 0xfa, 0xc8, 0xff, 0xb1, 0x44, 0x82, 0x55, 0x78, 0xc0, 0x97, 0x46, 0x00, 0x3c, - 0xfa, 0x5e, 0x46, 0x74, 0x61, 0xd2, 0x97, 0x80, 0xcf, 0xc1, 0x81, 0x6e, 0x7b, 0x19, 0x48, 0x2e, - 0x7d, 0x79, 0xbe, 0x2c, 0x0b, 0x33, 0x8b, 0xfa, 0xe6, 0xa6, 0xdf, 0x49, 0xbe, 0x50, 0xb0, 0x93, - 0x8c, 0x76, 0x07, 0x70, 0xed, 0xdc, 0x5d, 0xcb, 0xc2, 0x86, 0x57, 0x29, 0xd6, 0x9c, 0x7a, 0x52, - 0x95, 0x1b, 0xe0, 0xa8, 0x37, 0x2e, 0x84, 0x3b, 0xca, 0x29, 0xb5, 0x37, 0x19, 0x7d, 0x47, 0x78, - 0x57, 0xcb, 0x93, 0x68, 0xb8, 0x4a, 0x11, 0x0d, 0xf0, 0x0e, 0x98, 0xdd, 0xa6, 0xb9, 0xc9, 0xd4, - 0xdf, 0xeb, 0x2c, 0x4f, 0xf6, 0x04, 0x03, 0x5e, 0xc3, 0xb6, 0xad, 0x6d, 0x61, 0x95, 0xcf, 0xdc, - 0xd3, 0x7c, 0xe5, 0x24, 0x57, 0x5b, 0x89, 0x6d, 0x90, 0x09, 0xd4, 0x64, 0x0c, 0xda, 0x71, 0x06, - 0xb2, 0x4b, 0x7a, 0x07, 0xa3, 0x5f, 0x94, 0x60, 0x4a, 0xc5, 0x2d, 0xd3, 0x68, 0xb9, 0x6f, 0x21, - 0xe7, 0xa0, 0x7f, 0xcc, 0x88, 0x5e, 0xe9, 0xe8, 0xd2, 0x99, 0xf7, 0x69, 0x44, 0xb4, 0x1b, 0xb1, - 0xab, 0x1b, 0x63, 0x49, 0x8d, 0xe1, 0x02, 0x0e, 0x77, 0xea, 0xb1, 0xb9, 0xd9, 0x31, 0x35, 0x6e, - 0xf1, 0xab, 0xd7, 0x14, 0xba, 0x11, 0x0a, 0xde, 0x19, 0x10, 0xd3, 0x59, 0xd7, 0x0d, 0xc3, 0x3f, - 0x64, 0xbc, 0x2f, 0x9d, 0xdf, 0xb7, 0x8d, 0x8d, 0xd3, 0x42, 0xea, 0xce, 0x4a, 0x8f, 0xd0, 0xec, - 0xeb, 0x61, 0xee, 0xfc, 0x25, 0x07, 0xdb, 0x2c, 0x17, 0x2b, 0x36, 0xab, 0xf6, 0xa4, 0x86, 0xa2, - 0x2c, 0xc7, 0xc5, 0x73, 0x89, 0x29, 0x30, 0x99, 0xa8, 0x57, 0x86, 0x98, 0x01, 0x1e, 0x87, 0x42, - 0xb5, 0xb6, 0x58, 0x26, 0xbe, 0x6a, 0x9e, 0xf7, 0xcf, 0x16, 0x7a, 0x91, 0x0c, 0x33, 0xc4, 0x99, - 0xc4, 0x43, 0xe1, 0x5a, 0x81, 0xf9, 0x08, 0xfa, 0xb2, 0xb0, 0x1f, 0x1b, 0xa9, 0x72, 0xb8, 0x80, - 0x68, 0x41, 0x6f, 0xea, 0x9d, 0x5e, 0x41, 0xe7, 0xd4, 0x9e, 0xd4, 0x3e, 0x80, 0xc8, 0x7d, 0x01, - 0xf9, 0x1d, 0x21, 0x67, 0xb6, 0x41, 0xdc, 0x1d, 0x16, 0x2a, 0xbf, 0x2b, 0xc3, 0xb4, 0x3b, 0x49, - 0xf1, 0x40, 0xa9, 0x71, 0xa0, 0x98, 0x46, 0xe7, 0x52, 0xb0, 0x2c, 0xe2, 0xbd, 0x26, 0x6a, 0x24, - 0x7f, 0x29, 0x3c, 0x73, 0x27, 0x22, 0x0a, 0xf1, 0x32, 0x26, 0xfc, 0xde, 0x2f, 0x34, 0x9f, 0x1f, - 0xc0, 0xdc, 0x61, 0xc1, 0xf7, 0xf5, 0x1c, 0xe4, 0x37, 0xba, 0x04, 0xb9, 0x97, 0xcb, 0x22, 0x11, - 0xcb, 0xf7, 0x1d, 0x64, 0x70, 0xcd, 0xac, 0x8e, 0xd9, 0xd2, 0x3a, 0xeb, 0xc1, 0x89, 0xb0, 0x20, - 0x41, 0xb9, 0x9d, 0xf9, 0x36, 0xd2, 0xe3, 0x76, 0xd7, 0xc7, 0x06, 0xf3, 0x26, 0x32, 0x0a, 0x1d, - 0x1a, 0xb9, 0x09, 0x8e, 0xb5, 0x75, 0x5b, 0x3b, 0xdf, 0xc1, 0x65, 0xa3, 0x65, 0x5d, 0xa2, 0xe2, - 0x60, 0xd3, 0xaa, 0x7d, 0x1f, 0x94, 0x3b, 0x21, 0x67, 0x3b, 0x97, 0x3a, 0x74, 0x9e, 0x18, 0x3e, - 0x63, 0x12, 0x59, 0x54, 0xdd, 0xcd, 0xae, 0xd2, 0xbf, 0xc2, 0x2e, 0x4a, 0x13, 0x82, 0xf7, 0x39, - 0x3f, 0x01, 0xf2, 0xa6, 0xa5, 0x6f, 0xe9, 0xf4, 0x7e, 0x9e, 0xb9, 0x7d, 0x31, 0xeb, 0xa8, 0x29, - 0x50, 0x23, 0x59, 0x54, 0x96, 0x55, 0x79, 0x12, 0x4c, 0xe9, 0x3b, 0xda, 0x16, 0xbe, 0x57, 0x37, - 0xe8, 0x89, 0xbe, 0xb9, 0x5b, 0x4f, 0xed, 0x3b, 0x3e, 0xc3, 0xbe, 0xab, 0x41, 0x56, 0xf4, 0x7e, - 0x49, 0x34, 0xb0, 0x0e, 0xa9, 0x1b, 0x05, 0x75, 0x2c, 0xf7, 0x5a, 0xa3, 0x57, 0x09, 0x85, 0xbc, - 0x89, 0x66, 0x2b, 0xfd, 0xc1, 0xfb, 0xf3, 0x12, 0x4c, 0x2e, 0x9a, 0x17, 0x0d, 0xa2, 0xe8, 0xb7, - 0x89, 0xd9, 0xba, 0x7d, 0x0e, 0x39, 0xf2, 0xd7, 0x46, 0xc6, 0x9e, 0x68, 0x20, 0xb5, 0xf5, 0x8a, - 0x8c, 0x80, 0x21, 0xb6, 0xe5, 0x08, 0x5e, 0xe6, 0x17, 0x57, 0x4e, 0xfa, 0x72, 0xfd, 0x13, 0x19, - 0xb2, 0x8b, 0x96, 0xd9, 0x45, 0x6f, 0xcd, 0x24, 0x70, 0x59, 0x68, 0x5b, 0x66, 0xb7, 0x41, 0x6e, - 0xe3, 0x0a, 0x8e, 0x71, 0x84, 0xd3, 0x94, 0xdb, 0x60, 0xb2, 0x6b, 0xda, 0xba, 0xe3, 0x4d, 0x23, - 0xe6, 0x6e, 0x7d, 0x54, 0xdf, 0xd6, 0xbc, 0xce, 0x32, 0xa9, 0x7e, 0x76, 0xb7, 0xd7, 0x26, 0x22, - 0x74, 0xe5, 0xe2, 0x8a, 0xd1, 0xbb, 0x91, 0xac, 0x27, 0x15, 0xbd, 0x38, 0x8c, 0xe4, 0x53, 0x78, - 0x24, 0x1f, 0xdd, 0x47, 0xc2, 0x96, 0xd9, 0x1d, 0xc9, 0x26, 0xe3, 0x2b, 0x7c, 0x54, 0x9f, 0xca, - 0xa1, 0x7a, 0xa3, 0x50, 0x99, 0xe9, 0x23, 0xfa, 0xfe, 0x2c, 0x00, 0x31, 0x33, 0x36, 0xdc, 0x09, - 0x90, 0x98, 0x8d, 0xf5, 0xec, 0x6c, 0x48, 0x96, 0x45, 0x5e, 0x96, 0x8f, 0x8d, 0xb0, 0x62, 0x08, - 0xf9, 0x08, 0x89, 0x16, 0x21, 0xb7, 0xeb, 0x7e, 0x66, 0x12, 0x15, 0x24, 0x41, 0x5e, 0x55, 0xfa, - 0x27, 0xfa, 0xe3, 0x0c, 0xe4, 0x48, 0x82, 0x72, 0x1a, 0x80, 0x0c, 0xec, 0xf4, 0x40, 0x50, 0x86, - 0x0c, 0xe1, 0xa1, 0x14, 0xa2, 0xad, 0x7a, 0x9b, 0x7d, 0xa6, 0x26, 0x73, 0x90, 0xe0, 0xfe, 0x4d, - 0x86, 0x7b, 0x42, 0x8b, 0x19, 0x00, 0xa1, 0x14, 0xf7, 0x6f, 0xf2, 0xb6, 0x8a, 0x37, 0x69, 0xa0, - 0xe4, 0xac, 0x1a, 0x24, 0xf8, 0x7f, 0xaf, 0xfa, 0xd7, 0x6b, 0x79, 0x7f, 0x93, 0x14, 0x77, 0x32, - 0x4c, 0xd4, 0x72, 0x21, 0x28, 0x22, 0x4f, 0x32, 0xf5, 0x26, 0xa3, 0xd7, 0xf9, 0x6a, 0xb3, 0xc8, - 0xa9, 0xcd, 0x2d, 0x09, 0xc4, 0x9b, 0xbe, 0xf2, 0x7c, 0x35, 0x07, 0x53, 0x55, 0xb3, 0xcd, 0x74, - 0x27, 0x34, 0x61, 0xfc, 0x44, 0x2e, 0xd1, 0x84, 0xd1, 0xa7, 0x11, 0xa1, 0x20, 0x77, 0xf3, 0x0a, - 0x22, 0x46, 0x21, 0xac, 0x1f, 0xca, 0x02, 0xe4, 0x89, 0xf6, 0xee, 0xbf, 0xb7, 0x29, 0x8e, 0x04, - 0x11, 0xad, 0xca, 0xfe, 0xfc, 0x0f, 0xa7, 0x63, 0xff, 0x15, 0x72, 0xa4, 0x82, 0x31, 0xbb, 0x3b, - 0x7c, 0x45, 0xa5, 0xf8, 0x8a, 0xca, 0xf1, 0x15, 0xcd, 0xf6, 0x56, 0x34, 0xc9, 0x3a, 0x40, 0x94, - 0x86, 0xa4, 0xaf, 0xe3, 0xff, 0x30, 0x01, 0x50, 0xd5, 0xf6, 0xf4, 0x2d, 0xba, 0x3b, 0xfc, 0x05, - 0x6f, 0xfe, 0xc3, 0xf6, 0x71, 0xff, 0x5b, 0x68, 0x20, 0xbc, 0x0d, 0x26, 0xd8, 0xb8, 0xc7, 0x2a, - 0x72, 0x35, 0x57, 0x91, 0x80, 0x0a, 0x35, 0x4b, 0x1f, 0x70, 0x54, 0x2f, 0x3f, 0x77, 0xc5, 0xac, - 0xd4, 0x73, 0xc5, 0x6c, 0xff, 0x3d, 0x88, 0x88, 0x8b, 0x67, 0xd1, 0x7b, 0x84, 0x3d, 0xfa, 0x43, - 0xfc, 0x84, 0x6a, 0x14, 0xd1, 0x04, 0x9f, 0x00, 0x13, 0xa6, 0xbf, 0xa1, 0x2d, 0x47, 0xae, 0x83, - 0x55, 0x8c, 0x4d, 0x53, 0xf5, 0x72, 0x0a, 0x6e, 0x7e, 0x09, 0xf1, 0x31, 0x96, 0x43, 0x33, 0x27, - 0x97, 0xbd, 0xa0, 0x53, 0x6e, 0x3d, 0xce, 0xe9, 0xce, 0xf6, 0xaa, 0x6e, 0x5c, 0xb0, 0xd1, 0x7f, - 0x16, 0xb3, 0x20, 0x43, 0xf8, 0x4b, 0xc9, 0xf0, 0xe7, 0x63, 0x76, 0xd4, 0x79, 0xd4, 0xee, 0x8c, - 0xa2, 0xd2, 0x9f, 0xdb, 0x08, 0x00, 0x6f, 0x87, 0x3c, 0x65, 0x94, 0x75, 0xa2, 0x67, 0x22, 0xf1, - 0xf3, 0x29, 0xa9, 0xec, 0x0f, 0xf4, 0x6e, 0x1f, 0xc7, 0xb3, 0x1c, 0x8e, 0x0b, 0x07, 0xe2, 0x2c, - 0x75, 0x48, 0xcf, 0x3c, 0x1e, 0x26, 0x98, 0xa4, 0x95, 0xb9, 0x70, 0x2b, 0x2e, 0x1c, 0x51, 0x00, - 0xf2, 0x6b, 0xe6, 0x1e, 0x6e, 0x98, 0x85, 0x8c, 0xfb, 0xec, 0xf2, 0xd7, 0x30, 0x0b, 0x12, 0x7a, - 0xe5, 0x24, 0x4c, 0xfa, 0xd1, 0x7e, 0x3e, 0x2f, 0x41, 0xa1, 0x64, 0x61, 0xcd, 0xc1, 0x4b, 0x96, - 0xb9, 0x43, 0x6b, 0x24, 0xee, 0x1d, 0xfa, 0xeb, 0xc2, 0x2e, 0x1e, 0x7e, 0x14, 0x9e, 0xde, 0xc2, - 0x22, 0xb0, 0xa4, 0x8b, 0x90, 0x92, 0xb7, 0x08, 0x89, 0xde, 0x22, 0xe4, 0xf2, 0x21, 0x5a, 0x4a, - 0xfa, 0x4d, 0xed, 0xd3, 0x12, 0xe4, 0x4a, 0x1d, 0xd3, 0xc0, 0xe1, 0x23, 0x4c, 0x03, 0xcf, 0xca, - 0xf4, 0xdf, 0x89, 0x40, 0xcf, 0x94, 0x44, 0x6d, 0x8d, 0x40, 0x00, 0x6e, 0xd9, 0x82, 0xb2, 0x15, - 0x1b, 0xa4, 0x62, 0x49, 0xa7, 0x2f, 0xd0, 0x6f, 0x4a, 0x30, 0x45, 0xe3, 0xe2, 0x14, 0x3b, 0x1d, - 0xf4, 0xa8, 0x40, 0xa8, 0x7d, 0x22, 0x26, 0xa1, 0xdf, 0x11, 0x76, 0xd1, 0xf7, 0x6b, 0xe5, 0xd3, - 0x4e, 0x10, 0x20, 0x28, 0x99, 0xc7, 0xb8, 0xd8, 0x5e, 0xda, 0x40, 0x86, 0xd2, 0x17, 0xf5, 0x9f, - 0x4b, 0xae, 0x01, 0x60, 0x5c, 0x58, 0xb7, 0xf0, 0x9e, 0x8e, 0x2f, 0xa2, 0x2b, 0x03, 0x61, 0xef, - 0x0f, 0xfa, 0xf1, 0x26, 0xe1, 0x45, 0x9c, 0x10, 0xc9, 0xc8, 0xad, 0xac, 0xe9, 0x4e, 0x90, 0x89, - 0xf5, 0xe2, 0xbd, 0x91, 0x58, 0x42, 0x64, 0xd4, 0x70, 0x76, 0xc1, 0x35, 0x9b, 0x68, 0x2e, 0xd2, - 0x17, 0xec, 0x87, 0x26, 0x60, 0x72, 0xc3, 0xb0, 0xbb, 0x1d, 0xcd, 0xde, 0x46, 0xdf, 0x97, 0x21, - 0x4f, 0x6f, 0x0b, 0x43, 0x3f, 0xc1, 0xc5, 0x16, 0xf8, 0xd9, 0x5d, 0x6c, 0x79, 0x2e, 0x38, 0xf4, - 0xa5, 0xff, 0x65, 0xe6, 0xe8, 0xfd, 0xb2, 0xe8, 0x24, 0xd5, 0x2b, 0x34, 0x74, 0x6d, 0x7c, 0xff, - 0xe3, 0xec, 0x5d, 0xbd, 0xe5, 0xec, 0x5a, 0xfe, 0xd5, 0xd8, 0x8f, 0x13, 0xa3, 0xb2, 0x4e, 0xff, - 0x52, 0xfd, 0xdf, 0x91, 0x06, 0x13, 0x2c, 0x71, 0xdf, 0x76, 0xd2, 0xfe, 0xf3, 0xb7, 0x27, 0x21, - 0xaf, 0x59, 0x8e, 0x6e, 0x3b, 0x6c, 0x83, 0x95, 0xbd, 0xb9, 0xdd, 0x25, 0x7d, 0xda, 0xb0, 0x3a, - 0x5e, 0x14, 0x12, 0x3f, 0x01, 0xfd, 0xae, 0xd0, 0xfc, 0x31, 0xbe, 0xe6, 0xc9, 0x20, 0xbf, 0x77, - 0x88, 0x35, 0xea, 0xcb, 0xe1, 0x32, 0xb5, 0xd8, 0x28, 0x37, 0x69, 0xd0, 0x0a, 0x3f, 0x3e, 0x45, - 0x1b, 0xbd, 0x4b, 0x0e, 0xad, 0xdf, 0x5d, 0xe2, 0xc6, 0x08, 0x26, 0xc5, 0x60, 0x8c, 0xf0, 0x13, - 0x62, 0x76, 0xab, 0xb9, 0x45, 0x58, 0x59, 0x7c, 0x11, 0xf6, 0xb7, 0x84, 0x77, 0x93, 0x7c, 0x51, - 0x0e, 0x58, 0x03, 0x8c, 0xbb, 0x4d, 0xe8, 0x03, 0x42, 0x3b, 0x43, 0x83, 0x4a, 0x3a, 0x44, 0xd8, - 0xde, 0x38, 0x01, 0x13, 0xcb, 0x5a, 0xa7, 0x83, 0xad, 0x4b, 0xee, 0x90, 0x54, 0xf0, 0x38, 0x5c, - 0xd3, 0x0c, 0x7d, 0x13, 0xdb, 0x4e, 0x7c, 0x67, 0xf9, 0x1e, 0xe1, 0x48, 0xb5, 0xac, 0x8c, 0xf9, - 0x5e, 0xfa, 0x11, 0x32, 0xbf, 0x19, 0xb2, 0xba, 0xb1, 0x69, 0xb2, 0x2e, 0xb3, 0x77, 0xd5, 0xde, - 0xfb, 0x99, 0x4c, 0x5d, 0x48, 0x46, 0xc1, 0x60, 0xb5, 0x82, 0x5c, 0xa4, 0xdf, 0x73, 0xfe, 0x76, - 0x16, 0x66, 0x3d, 0x26, 0x2a, 0x46, 0x1b, 0x3f, 0x10, 0x5e, 0x8a, 0x79, 0x51, 0x56, 0xf4, 0x38, - 0x58, 0x6f, 0x7d, 0x08, 0xa9, 0x08, 0x91, 0x36, 0x00, 0x5a, 0x9a, 0x83, 0xb7, 0x4c, 0x4b, 0xf7, - 0xfb, 0xc3, 0x27, 0x26, 0xa1, 0x56, 0xa2, 0x7f, 0x5f, 0x52, 0x43, 0x74, 0x94, 0x3b, 0x61, 0x1a, - 0xfb, 0xe7, 0xef, 0xbd, 0xa5, 0x9a, 0x58, 0xbc, 0xc2, 0xf9, 0xd1, 0x9f, 0x0b, 0x9d, 0x3a, 0x13, - 0xa9, 0x66, 0x32, 0xcc, 0x9a, 0xc3, 0xb5, 0xa1, 0x8d, 0xea, 0x5a, 0x51, 0xad, 0xaf, 0x14, 0x57, - 0x57, 0x2b, 0xd5, 0x65, 0x3f, 0xf0, 0x8b, 0x02, 0x73, 0x8b, 0xb5, 0x73, 0xd5, 0x50, 0x64, 0x9e, - 0x2c, 0x5a, 0x87, 0x49, 0x4f, 0x5e, 0xfd, 0x7c, 0x31, 0xc3, 0x32, 0x63, 0xbe, 0x98, 0xa1, 0x24, - 0xd7, 0x38, 0xd3, 0x5b, 0xbe, 0x83, 0x0e, 0x79, 0x46, 0x7f, 0xa4, 0x41, 0x8e, 0xac, 0xa9, 0xa3, - 0x77, 0x90, 0x6d, 0xc0, 0x6e, 0x47, 0x6b, 0x61, 0xb4, 0x93, 0xc0, 0x1a, 0xf7, 0xae, 0x4e, 0x90, - 0xf6, 0x5d, 0x9d, 0x40, 0x1e, 0x99, 0xd5, 0x77, 0xbc, 0xdf, 0x3a, 0xbe, 0x4a, 0xb3, 0xf0, 0x07, - 0xb4, 0x62, 0x77, 0x57, 0xe8, 0xf2, 0x3f, 0x63, 0x33, 0x42, 0x25, 0xa3, 0x79, 0x4a, 0x66, 0x89, - 0x8a, 0xed, 0xc3, 0xc4, 0x71, 0x34, 0x86, 0xeb, 0xbd, 0xb3, 0x90, 0xab, 0x77, 0x3b, 0xba, 0x83, - 0x5e, 0x2a, 0x8d, 0x04, 0x33, 0x7a, 0xdd, 0x85, 0x3c, 0xf0, 0xba, 0x8b, 0x60, 0xd7, 0x35, 0x2b, - 0xb0, 0xeb, 0xda, 0xc0, 0x0f, 0x38, 0xfc, 0xae, 0xeb, 0x6d, 0x2c, 0x78, 0x1b, 0xdd, 0xb3, 0x7d, - 0x74, 0x1f, 0x91, 0x92, 0x6a, 0xf5, 0x89, 0x0a, 0x78, 0xe6, 0xf1, 0x2c, 0x38, 0x19, 0x40, 0x7e, - 0xa1, 0xd6, 0x68, 0xd4, 0xd6, 0x0a, 0x47, 0x48, 0x54, 0x9b, 0xda, 0x3a, 0x0d, 0x15, 0x53, 0xa9, - 0x56, 0xcb, 0x6a, 0x41, 0x22, 0xe1, 0xd2, 0x2a, 0x8d, 0xd5, 0x72, 0x41, 0xe6, 0x63, 0x9f, 0xc7, - 0x9a, 0xdf, 0x7c, 0xd9, 0x69, 0xaa, 0x97, 0x98, 0x21, 0x1e, 0xcd, 0x4f, 0xfa, 0xca, 0xf5, 0x6b, - 0x32, 0xe4, 0xd6, 0xb0, 0xb5, 0x85, 0xd1, 0xcf, 0x26, 0xd8, 0xe4, 0xdb, 0xd4, 0x2d, 0x9b, 0x06, - 0x97, 0x0b, 0x36, 0xf9, 0xc2, 0x69, 0xca, 0x75, 0x30, 0x6b, 0xe3, 0x96, 0x69, 0xb4, 0xbd, 0x4c, - 0xb4, 0x3f, 0xe2, 0x13, 0xf9, 0x7b, 0xe7, 0x05, 0x20, 0x23, 0x8c, 0x8e, 0x64, 0xa7, 0x2e, 0x09, - 0x30, 0xfd, 0x4a, 0x4d, 0x1f, 0x98, 0xef, 0xc8, 0xee, 0x4f, 0xdd, 0x4b, 0xe8, 0x25, 0xc2, 0xbb, - 0xaf, 0x37, 0x41, 0x9e, 0xa8, 0xa9, 0x37, 0x46, 0xf7, 0xef, 0x8f, 0x59, 0x1e, 0x65, 0x01, 0x8e, - 0xd9, 0xb8, 0x83, 0x5b, 0x0e, 0x6e, 0xbb, 0x4d, 0x57, 0x1d, 0xd8, 0x29, 0xec, 0xcf, 0x8e, 0xfe, - 0x34, 0x0c, 0xe0, 0x1d, 0x3c, 0x80, 0xd7, 0xf7, 0x11, 0xa5, 0x5b, 0xa1, 0x68, 0x5b, 0xd9, 0xad, - 0x46, 0xbd, 0x63, 0xfa, 0x8b, 0xe2, 0xde, 0xbb, 0xfb, 0x6d, 0xdb, 0xd9, 0xe9, 0x90, 0x6f, 0xec, - 0x80, 0x81, 0xf7, 0xae, 0xcc, 0xc3, 0x84, 0x66, 0x5c, 0x22, 0x9f, 0xb2, 0x31, 0xb5, 0xf6, 0x32, - 0xa1, 0x57, 0xfa, 0xc8, 0xdf, 0xc5, 0x21, 0xff, 0x58, 0x31, 0x76, 0xd3, 0x07, 0xfe, 0x17, 0x26, - 0x20, 0xb7, 0xae, 0xd9, 0x0e, 0x46, 0xff, 0x97, 0x2c, 0x8a, 0xfc, 0xf5, 0x30, 0xb7, 0x69, 0xb6, - 0x76, 0x6d, 0xdc, 0xe6, 0x1b, 0x65, 0x4f, 0xea, 0x28, 0x30, 0x57, 0x6e, 0x84, 0x82, 0x97, 0xc8, - 0xc8, 0x7a, 0xdb, 0xf0, 0xfb, 0xd2, 0x49, 0x24, 0x6d, 0x7b, 0x5d, 0xb3, 0x9c, 0xda, 0x26, 0x49, - 0xf3, 0x23, 0x69, 0x87, 0x13, 0x39, 0xe8, 0xf3, 0x31, 0xd0, 0x4f, 0x44, 0x43, 0x3f, 0x29, 0x00, - 0xbd, 0x52, 0x84, 0xc9, 0x4d, 0xbd, 0x83, 0xc9, 0x0f, 0x53, 0xe4, 0x87, 0x7e, 0x63, 0x12, 0x91, - 0xbd, 0x3f, 0x26, 0x2d, 0xe9, 0x1d, 0xac, 0xfa, 0xbf, 0x79, 0x13, 0x19, 0x08, 0x26, 0x32, 0xab, - 0xd4, 0x9f, 0xd6, 0x35, 0xbc, 0x0c, 0x6d, 0x07, 0x7b, 0x8b, 0x6f, 0x06, 0x3b, 0xdc, 0xd2, 0xd6, - 0x1c, 0x8d, 0x80, 0x31, 0xa3, 0x92, 0x67, 0xde, 0x2f, 0x44, 0xee, 0xf5, 0x0b, 0x79, 0x8e, 0x9c, - 0xac, 0x47, 0xf4, 0x98, 0x8d, 0x68, 0x51, 0xe7, 0x3d, 0x80, 0xa8, 0xa5, 0xe8, 0xbf, 0xbb, 0xc0, - 0xb4, 0x34, 0x0b, 0x3b, 0xeb, 0x61, 0x4f, 0x8c, 0x9c, 0xca, 0x27, 0x12, 0x57, 0x3e, 0xbb, 0xae, - 0xed, 0x60, 0x52, 0x58, 0xc9, 0xfd, 0xc6, 0x5c, 0xb4, 0xf6, 0xa5, 0x07, 0xfd, 0x6f, 0x6e, 0xd4, - 0xfd, 0x6f, 0xbf, 0x3a, 0xa6, 0xdf, 0x0c, 0x5f, 0x93, 0x05, 0xb9, 0xb4, 0xeb, 0x3c, 0xa2, 0xbb, - 0xdf, 0x1f, 0x08, 0xfb, 0xb9, 0xb0, 0xfe, 0x2c, 0xf2, 0xa2, 0xf9, 0x31, 0xf5, 0xbe, 0x09, 0xb5, - 0x44, 0xcc, 0x9f, 0x26, 0xaa, 0x6e, 0x63, 0xb8, 0xd7, 0x40, 0xf6, 0x1d, 0x2c, 0x1f, 0xcc, 0x1c, - 0xdc, 0x34, 0x47, 0xb4, 0x7f, 0x0a, 0xf5, 0x0c, 0xfe, 0xbb, 0xd7, 0xf1, 0x64, 0xb9, 0x58, 0x7d, - 0x64, 0x7b, 0x9d, 0x88, 0x72, 0x46, 0xa5, 0x2f, 0xe8, 0x65, 0xc2, 0x6e, 0xe7, 0x54, 0x6c, 0xb1, - 0xae, 0x84, 0xc9, 0x6c, 0x2a, 0xb1, 0xcb, 0x44, 0x63, 0x8a, 0x4d, 0x1f, 0xb0, 0x6f, 0x87, 0x5d, - 0x05, 0x8b, 0x07, 0x46, 0x0c, 0xbd, 0x4a, 0x78, 0x3b, 0x8a, 0x56, 0x7b, 0xc0, 0x7a, 0x61, 0x32, - 0x79, 0x8b, 0x6d, 0x56, 0xc5, 0x16, 0x9c, 0xbe, 0xc4, 0xbf, 0x25, 0x43, 0x9e, 0x6e, 0x41, 0xa2, - 0x37, 0x67, 0x12, 0xdc, 0xc2, 0xee, 0xf0, 0x2e, 0x84, 0xfe, 0x7b, 0x92, 0x35, 0x07, 0xce, 0xd5, - 0x30, 0x9b, 0xc8, 0xd5, 0x90, 0x3f, 0xc7, 0x29, 0xd0, 0x8e, 0x68, 0x1d, 0x53, 0x9e, 0x4e, 0x26, - 0x69, 0x61, 0x7d, 0x19, 0x4a, 0x1f, 0xef, 0xe7, 0xe5, 0x60, 0x86, 0x16, 0x7d, 0x4e, 0x6f, 0x6f, - 0x61, 0x07, 0xbd, 0x4b, 0xfa, 0xe1, 0x41, 0x5d, 0xa9, 0xc2, 0xcc, 0x45, 0xc2, 0xf6, 0xaa, 0x76, - 0xc9, 0xdc, 0x75, 0xd8, 0xca, 0xc5, 0x8d, 0xb1, 0xeb, 0x1e, 0xb4, 0x9e, 0xf3, 0xf4, 0x0f, 0x95, - 0xfb, 0xdf, 0x95, 0x31, 0x5d, 0xf0, 0xa7, 0x0e, 0x5c, 0x79, 0x62, 0x64, 0x85, 0x93, 0x94, 0x93, - 0x90, 0xdf, 0xd3, 0xf1, 0xc5, 0x4a, 0x9b, 0x59, 0xb7, 0xec, 0x0d, 0xfd, 0xbe, 0xf0, 0xbe, 0x6d, - 0x18, 0x6e, 0xc6, 0x4b, 0xba, 0x5a, 0x28, 0xb6, 0x7b, 0x3b, 0x90, 0xad, 0x31, 0x9c, 0x29, 0xe6, - 0x2f, 0xeb, 0x2c, 0x25, 0x50, 0xc4, 0x28, 0xc3, 0x99, 0x0f, 0xe5, 0x11, 0x7b, 0x62, 0x85, 0x0a, - 0x60, 0xc4, 0xf7, 0x78, 0x8a, 0xc5, 0x97, 0x18, 0x50, 0x74, 0xfa, 0x92, 0x7f, 0x9d, 0x0c, 0x53, - 0x75, 0xec, 0x2c, 0xe9, 0xb8, 0xd3, 0xb6, 0x91, 0x75, 0x70, 0xd3, 0xe8, 0x66, 0xc8, 0x6f, 0x12, - 0x62, 0x83, 0xce, 0x2d, 0xb0, 0x6c, 0xe8, 0x35, 0x92, 0xe8, 0x8e, 0x30, 0x5b, 0x7d, 0xf3, 0xb8, - 0x1d, 0x09, 0x4c, 0x62, 0x1e, 0xbd, 0xf1, 0x25, 0x8f, 0x21, 0xb0, 0xad, 0x0c, 0x33, 0xec, 0x76, - 0xbf, 0x62, 0x47, 0xdf, 0x32, 0xd0, 0xee, 0x08, 0x5a, 0x88, 0x72, 0x0b, 0xe4, 0x34, 0x97, 0x1a, - 0xdb, 0x7a, 0x45, 0x7d, 0x3b, 0x4f, 0x52, 0x9e, 0x4a, 0x33, 0x26, 0x08, 0x23, 0x19, 0x28, 0xb6, - 0xc7, 0xf3, 0x18, 0xc3, 0x48, 0x0e, 0x2c, 0x3c, 0x7d, 0xc4, 0xbe, 0x22, 0xc3, 0x71, 0xc6, 0xc0, - 0x59, 0x6c, 0x39, 0x7a, 0x4b, 0xeb, 0x50, 0xe4, 0x1e, 0xca, 0x8c, 0x02, 0xba, 0x15, 0x98, 0xdd, - 0x0b, 0x93, 0x65, 0x10, 0x9e, 0xe9, 0x0b, 0x21, 0xc7, 0x80, 0xca, 0xff, 0x98, 0x20, 0x1c, 0x1f, - 0x27, 0x55, 0x8e, 0xe6, 0x18, 0xc3, 0xf1, 0x09, 0x33, 0x91, 0x3e, 0xc4, 0x2f, 0x66, 0xa1, 0x79, - 0x82, 0xee, 0xf3, 0x0b, 0xc2, 0xd8, 0x6e, 0xc0, 0x34, 0xc1, 0x92, 0xfe, 0xc8, 0x96, 0x21, 0x62, - 0x94, 0xd8, 0xef, 0x77, 0xd8, 0x85, 0x61, 0xfe, 0xbf, 0x6a, 0x98, 0x0e, 0x3a, 0x07, 0x10, 0x7c, - 0x0a, 0x77, 0xd2, 0x99, 0xa8, 0x4e, 0x5a, 0x12, 0xeb, 0xa4, 0xdf, 0x24, 0x1c, 0x2c, 0xa5, 0x3f, - 0xdb, 0x07, 0x57, 0x0f, 0xb1, 0x30, 0x19, 0x83, 0x4b, 0x4f, 0x5f, 0x2f, 0x5e, 0x99, 0xed, 0xbd, - 0xc6, 0xfd, 0xa3, 0x23, 0x99, 0x4f, 0x85, 0xfb, 0x03, 0xb9, 0xa7, 0x3f, 0x38, 0x80, 0x25, 0x7d, - 0x03, 0x1c, 0xa5, 0x45, 0x94, 0x7c, 0xb6, 0x72, 0x34, 0x14, 0x44, 0x4f, 0x32, 0xfa, 0xd8, 0x10, - 0x4a, 0x30, 0xe8, 0x8e, 0xf9, 0xb8, 0x4e, 0x2e, 0x99, 0xb1, 0x9b, 0x54, 0x41, 0x0e, 0xef, 0x6a, - 0xfa, 0x6f, 0x66, 0xa9, 0xb5, 0xbb, 0x41, 0xee, 0x74, 0x43, 0x7f, 0x91, 0x1d, 0xc5, 0x88, 0x70, - 0x37, 0x64, 0x89, 0x8b, 0xbb, 0x1c, 0xb9, 0xa4, 0x11, 0x14, 0x19, 0x5c, 0xb8, 0x87, 0x1f, 0x70, - 0x56, 0x8e, 0xa8, 0xe4, 0x4f, 0xe5, 0x46, 0x38, 0x7a, 0x5e, 0x6b, 0x5d, 0xd8, 0xb2, 0xcc, 0x5d, - 0x72, 0xfb, 0x95, 0xc9, 0xae, 0xd1, 0x22, 0xd7, 0x11, 0xf2, 0x1f, 0x94, 0x5b, 0x3d, 0xd3, 0x21, - 0x37, 0xc8, 0x74, 0x58, 0x39, 0xc2, 0x8c, 0x07, 0xe5, 0xf1, 0x7e, 0xa7, 0x93, 0x8f, 0xed, 0x74, - 0x56, 0x8e, 0x78, 0xdd, 0x8e, 0xb2, 0x08, 0x93, 0x6d, 0x7d, 0x8f, 0x6c, 0x55, 0x93, 0x59, 0xd7, - 0xa0, 0xa3, 0xcb, 0x8b, 0xfa, 0x1e, 0xdd, 0xd8, 0x5e, 0x39, 0xa2, 0xfa, 0x7f, 0x2a, 0xcb, 0x30, - 0x45, 0xb6, 0x05, 0x08, 0x99, 0xc9, 0x44, 0xc7, 0x92, 0x57, 0x8e, 0xa8, 0xc1, 0xbf, 0xae, 0xf5, - 0x91, 0x25, 0x67, 0x3f, 0xee, 0xf2, 0xb6, 0xdb, 0x33, 0x89, 0xb6, 0xdb, 0x5d, 0x59, 0xd0, 0x0d, - 0xf7, 0x93, 0x90, 0x6b, 0x11, 0x09, 0x4b, 0x4c, 0xc2, 0xf4, 0x55, 0xb9, 0x03, 0xb2, 0x3b, 0x9a, - 0xe5, 0x4d, 0x9e, 0xaf, 0x1f, 0x4c, 0x77, 0x4d, 0xb3, 0x2e, 0xb8, 0x08, 0xba, 0x7f, 0x2d, 0x4c, - 0x40, 0x8e, 0x08, 0xce, 0x7f, 0x40, 0x6f, 0xcd, 0x52, 0x33, 0xa4, 0x64, 0x1a, 0xee, 0xb0, 0xdf, - 0x30, 0xbd, 0x03, 0x32, 0xbf, 0x9f, 0x19, 0x8d, 0x05, 0xd9, 0xf7, 0xde, 0x73, 0x39, 0xf2, 0xde, - 0xf3, 0x9e, 0x0b, 0x78, 0xb3, 0xbd, 0x17, 0xf0, 0x06, 0xcb, 0x07, 0xb9, 0xc1, 0x8e, 0x2a, 0x7f, - 0x3a, 0x84, 0xe9, 0xd2, 0x2b, 0x88, 0xe8, 0x19, 0x78, 0x47, 0x37, 0x42, 0x75, 0xf6, 0x5e, 0x13, - 0x76, 0x4a, 0x49, 0x8d, 0x9a, 0x01, 0xec, 0xa5, 0xdf, 0x37, 0xfd, 0x66, 0x16, 0x4e, 0xd1, 0x6b, - 0x9e, 0xf7, 0x70, 0xc3, 0xe4, 0xef, 0x9b, 0x44, 0x9f, 0x1a, 0x89, 0xd2, 0xf4, 0x19, 0x70, 0xe4, - 0xbe, 0x03, 0xce, 0xbe, 0x43, 0xca, 0xd9, 0x01, 0x87, 0x94, 0x73, 0xc9, 0x56, 0x0e, 0x3f, 0x18, - 0xd6, 0x9f, 0x75, 0x5e, 0x7f, 0x6e, 0x8f, 0x00, 0xa8, 0x9f, 0x5c, 0x46, 0x62, 0xdf, 0xbc, 0xc3, - 0xd7, 0x94, 0x3a, 0xa7, 0x29, 0x77, 0x0d, 0xcf, 0x48, 0xfa, 0xda, 0xf2, 0x7b, 0x59, 0xb8, 0x2c, - 0x60, 0xa6, 0x8a, 0x2f, 0x32, 0x45, 0xf9, 0xfc, 0x48, 0x14, 0x25, 0x79, 0x0c, 0x84, 0xb4, 0x35, - 0xe6, 0x8f, 0x85, 0xcf, 0x0e, 0xf5, 0x02, 0xe5, 0xcb, 0x26, 0x42, 0x59, 0x4e, 0x42, 0x9e, 0xf6, - 0x30, 0x0c, 0x1a, 0xf6, 0x96, 0xb0, 0xbb, 0x11, 0x3b, 0x71, 0x24, 0xca, 0xdb, 0x18, 0xf4, 0x87, - 0xad, 0x6b, 0x34, 0x76, 0x2d, 0xa3, 0x62, 0x38, 0x26, 0xfa, 0xf9, 0x91, 0x28, 0x8e, 0xef, 0x0d, - 0x27, 0x0f, 0xe3, 0x0d, 0x37, 0xd4, 0x2a, 0x87, 0x57, 0x83, 0x43, 0x59, 0xe5, 0x88, 0x28, 0x3c, - 0x7d, 0xfc, 0xde, 0x2e, 0xc3, 0x49, 0x36, 0xd9, 0x5a, 0xe0, 0x2d, 0x44, 0x74, 0xdf, 0x28, 0x80, - 0x3c, 0xee, 0x99, 0x49, 0xec, 0x96, 0x33, 0xf2, 0xc2, 0x9f, 0x94, 0x8a, 0xbd, 0xdf, 0x81, 0x9b, - 0x0e, 0xf6, 0x70, 0x38, 0x12, 0xa4, 0xc4, 0xae, 0x75, 0x48, 0xc0, 0x46, 0xfa, 0x98, 0xbd, 0x50, - 0x86, 0x3c, 0xbb, 0xde, 0x7f, 0x23, 0x15, 0x87, 0x09, 0x3e, 0xca, 0xb3, 0xc0, 0x8e, 0x5c, 0xe2, - 0x4b, 0xee, 0xd3, 0xdb, 0x8b, 0x3b, 0xa4, 0x5b, 0xec, 0xbf, 0x23, 0xc1, 0x74, 0x1d, 0x3b, 0x25, - 0xcd, 0xb2, 0x74, 0x6d, 0x6b, 0x54, 0x1e, 0xdf, 0xa2, 0xde, 0xc3, 0xe8, 0xbb, 0x19, 0xd1, 0xf3, - 0x34, 0xfe, 0x42, 0xb8, 0xc7, 0x6a, 0x44, 0x2c, 0xc1, 0x87, 0x85, 0xce, 0xcc, 0x0c, 0xa2, 0x36, - 0x06, 0x8f, 0x6d, 0x09, 0x26, 0xbc, 0xb3, 0x78, 0x37, 0x73, 0xe7, 0x33, 0xb7, 0x9d, 0x1d, 0xef, - 0x18, 0x0c, 0x79, 0xde, 0x7f, 0x06, 0x0c, 0xbd, 0x22, 0xa1, 0xa3, 0x7c, 0xfc, 0x41, 0xc2, 0x64, - 0x6d, 0x2c, 0x89, 0x3b, 0xfc, 0x61, 0x1d, 0x1d, 0xfc, 0x9d, 0x09, 0xb6, 0x1c, 0xb9, 0xaa, 0x39, - 0xf8, 0x01, 0xf4, 0x05, 0x19, 0x26, 0xea, 0xd8, 0x71, 0xc7, 0x5b, 0xee, 0x72, 0xd3, 0x61, 0x35, - 0x5c, 0x09, 0xad, 0x78, 0x4c, 0xb1, 0x35, 0x8c, 0x7b, 0x60, 0xaa, 0x6b, 0x99, 0x2d, 0x6c, 0xdb, - 0x6c, 0xf5, 0x22, 0xec, 0xa8, 0xd6, 0x6f, 0xf4, 0x27, 0xac, 0xcd, 0xaf, 0x7b, 0xff, 0xa8, 0xc1, - 0xef, 0x49, 0xcd, 0x00, 0x4a, 0x89, 0x55, 0x70, 0xdc, 0x66, 0x40, 0x5c, 0xe1, 0xe9, 0x03, 0xfd, - 0x59, 0x19, 0x66, 0xea, 0xd8, 0xf1, 0xa5, 0x98, 0x60, 0x93, 0x23, 0x1a, 0x5e, 0x0e, 0x4a, 0xf9, - 0x60, 0x50, 0x8a, 0x5f, 0x0d, 0xc8, 0x4b, 0xd3, 0x27, 0x36, 0xc6, 0xab, 0x01, 0xc5, 0x38, 0x18, - 0xc3, 0xf1, 0xb5, 0x47, 0xc3, 0x14, 0xe1, 0x85, 0x34, 0xd8, 0x5f, 0xca, 0x06, 0x8d, 0xf7, 0x8b, - 0x29, 0x35, 0xde, 0x3b, 0x21, 0xb7, 0xa3, 0x59, 0x17, 0x6c, 0xd2, 0x70, 0xa7, 0x45, 0xcc, 0xf6, - 0x35, 0x37, 0xbb, 0x4a, 0xff, 0xea, 0xef, 0xa7, 0x99, 0x4b, 0xe6, 0xa7, 0xf9, 0xb0, 0x94, 0x68, - 0x24, 0xa4, 0x73, 0x87, 0x11, 0x36, 0xf9, 0x04, 0xe3, 0x66, 0x4c, 0xd9, 0xe9, 0x2b, 0xc7, 0x43, - 0x32, 0x4c, 0xba, 0xe3, 0x36, 0xb1, 0xc7, 0xcf, 0x1d, 0x5c, 0x1d, 0xfa, 0x1b, 0xfa, 0x09, 0x7b, - 0x60, 0x4f, 0x22, 0xa3, 0x33, 0xef, 0x13, 0xf4, 0xc0, 0x71, 0x85, 0xa7, 0x8f, 0xc7, 0x3b, 0x29, - 0x1e, 0xa4, 0x3d, 0xa0, 0x37, 0xc8, 0x20, 0x2f, 0x63, 0x67, 0xdc, 0x56, 0xe4, 0xdb, 0x84, 0x43, - 0x1c, 0x71, 0x02, 0x23, 0x3c, 0xcf, 0x2f, 0xe3, 0xd1, 0x34, 0x20, 0xb1, 0xd8, 0x46, 0x42, 0x0c, - 0xa4, 0x8f, 0xda, 0x7b, 0x29, 0x6a, 0x74, 0x73, 0xe1, 0xe7, 0x46, 0xd0, 0xab, 0x8e, 0x77, 0xe1, - 0xc3, 0x13, 0x20, 0xa1, 0x71, 0x58, 0xed, 0xad, 0x5f, 0xe1, 0x63, 0xb9, 0x8a, 0x0f, 0xdc, 0xc6, - 0xbe, 0x8d, 0x5b, 0x17, 0x70, 0x1b, 0xfd, 0xf4, 0xc1, 0xa1, 0x3b, 0x05, 0x13, 0x2d, 0x4a, 0x8d, - 0x80, 0x37, 0xa9, 0x7a, 0xaf, 0x09, 0xee, 0x95, 0xe6, 0x3b, 0x22, 0xfa, 0xfb, 0x18, 0xef, 0x95, - 0x16, 0x28, 0x7e, 0x0c, 0x66, 0x0b, 0x9d, 0x65, 0x54, 0x5a, 0xa6, 0x81, 0xfe, 0xcb, 0xc1, 0x61, - 0xb9, 0x0a, 0xa6, 0xf4, 0x96, 0x69, 0x90, 0x30, 0x14, 0xde, 0x21, 0x20, 0x3f, 0xc1, 0xfb, 0x5a, - 0xde, 0x31, 0xef, 0xd7, 0xd9, 0xae, 0x79, 0x90, 0x30, 0xac, 0x31, 0xe1, 0xb2, 0x7e, 0x58, 0xc6, - 0x44, 0x9f, 0xb2, 0xd3, 0x87, 0xec, 0x63, 0x81, 0x77, 0x1b, 0xed, 0x0a, 0x1f, 0x11, 0xab, 0xc0, - 0xc3, 0x0c, 0x67, 0xe1, 0x5a, 0x1c, 0xca, 0x70, 0x16, 0xc3, 0xc0, 0x18, 0x6e, 0xac, 0x08, 0x70, - 0x4c, 0x7d, 0x0d, 0xf8, 0x00, 0xe8, 0x8c, 0xce, 0x3c, 0x1c, 0x12, 0x9d, 0xc3, 0x31, 0x11, 0x3f, - 0xc0, 0x42, 0x64, 0x32, 0x8b, 0x07, 0xfd, 0xd7, 0x51, 0x80, 0x73, 0xfb, 0x30, 0xfe, 0x0a, 0xd4, - 0x5b, 0x21, 0xc1, 0x8d, 0xd8, 0xfb, 0x24, 0xe8, 0x52, 0x19, 0xe3, 0x5d, 0xf1, 0x22, 0xe5, 0xa7, - 0x0f, 0xe0, 0xf3, 0x65, 0x98, 0x23, 0x3e, 0x02, 0x1d, 0xac, 0x59, 0xb4, 0xa3, 0x1c, 0x89, 0xa3, - 0xfc, 0x3b, 0x85, 0x03, 0xfc, 0xf0, 0x72, 0x08, 0xf8, 0x18, 0x09, 0x14, 0x62, 0xd1, 0x7d, 0x04, - 0x59, 0x18, 0xcb, 0x36, 0x4a, 0xc1, 0x67, 0x81, 0xa9, 0xf8, 0x68, 0xf0, 0x48, 0xe8, 0x91, 0xcb, - 0x0b, 0xc3, 0x6b, 0x6c, 0x63, 0xf6, 0xc8, 0x15, 0x61, 0x22, 0x7d, 0x4c, 0xde, 0x70, 0x0b, 0x5b, - 0x70, 0x6e, 0x90, 0x0b, 0xe3, 0x5f, 0x95, 0xf5, 0x4f, 0xb4, 0x7d, 0x76, 0x24, 0x1e, 0x98, 0x07, - 0x08, 0x88, 0xaf, 0x40, 0xd6, 0x32, 0x2f, 0xd2, 0xa5, 0xad, 0x59, 0x95, 0x3c, 0xd3, 0xeb, 0x29, - 0x3b, 0xbb, 0x3b, 0x06, 0x3d, 0x19, 0x3a, 0xab, 0x7a, 0xaf, 0xca, 0x75, 0x30, 0x7b, 0x51, 0x77, - 0xb6, 0x57, 0xb0, 0xd6, 0xc6, 0x96, 0x6a, 0x5e, 0x24, 0x1e, 0x73, 0x93, 0x2a, 0x9f, 0xc8, 0xfb, - 0xaf, 0x08, 0xd8, 0x97, 0xe4, 0x16, 0xf9, 0xb1, 0x1c, 0x7f, 0x4b, 0x62, 0x79, 0x46, 0x73, 0x95, - 0xbe, 0xc2, 0xbc, 0x4f, 0x86, 0x29, 0xd5, 0xbc, 0xc8, 0x94, 0xe4, 0xff, 0x38, 0x5c, 0x1d, 0x49, - 0x3c, 0xd1, 0x23, 0x92, 0xf3, 0xd9, 0x1f, 0xfb, 0x44, 0x2f, 0xb6, 0xf8, 0xb1, 0x9c, 0x5c, 0x9a, - 0x51, 0xcd, 0x8b, 0x75, 0xec, 0xd0, 0x16, 0x81, 0x9a, 0x23, 0x72, 0xb2, 0xd6, 0x6d, 0x4a, 0x90, - 0xcd, 0xc3, 0xfd, 0xf7, 0xa4, 0xbb, 0x08, 0xbe, 0x80, 0x7c, 0x16, 0xc7, 0xbd, 0x8b, 0x30, 0x90, - 0x83, 0x31, 0xc4, 0x48, 0x91, 0x61, 0x5a, 0x35, 0x2f, 0xba, 0x43, 0xc3, 0x92, 0xde, 0xe9, 0x8c, - 0x66, 0x84, 0x4c, 0x6a, 0xfc, 0x7b, 0x62, 0xf0, 0xb8, 0x18, 0xbb, 0xf1, 0x3f, 0x80, 0x81, 0xf4, - 0x61, 0x78, 0x0e, 0x6d, 0x2c, 0xde, 0x08, 0x6d, 0x8c, 0x06, 0x87, 0x61, 0x1b, 0x84, 0xcf, 0xc6, - 0xa1, 0x35, 0x88, 0x28, 0x0e, 0xc6, 0xb2, 0x73, 0x32, 0x57, 0x22, 0xc3, 0xfc, 0x68, 0xdb, 0xc4, - 0xbb, 0x93, 0xb9, 0x26, 0xb2, 0x61, 0x97, 0x63, 0x64, 0x24, 0x68, 0x24, 0x70, 0x41, 0x14, 0xe0, - 0x21, 0x7d, 0x3c, 0x3e, 0x2c, 0xc3, 0x0c, 0x65, 0xe1, 0x11, 0x62, 0x05, 0x0c, 0xd5, 0xa8, 0xc2, - 0x35, 0x38, 0x9c, 0x46, 0x15, 0xc3, 0xc1, 0x58, 0x6e, 0x05, 0x75, 0xed, 0xb8, 0x21, 0x8e, 0x8f, - 0x47, 0x21, 0x38, 0xb4, 0x31, 0x36, 0xc2, 0x23, 0xe4, 0xc3, 0x18, 0x63, 0x87, 0x74, 0x8c, 0xfc, - 0x39, 0x7e, 0x2b, 0x1a, 0x25, 0x06, 0x07, 0x68, 0x0a, 0x23, 0x84, 0x61, 0xc8, 0xa6, 0x70, 0x48, - 0x48, 0x7c, 0x55, 0x06, 0xa0, 0x0c, 0xac, 0x99, 0x7b, 0xe4, 0x32, 0x9f, 0x11, 0x74, 0x67, 0xbd, - 0x6e, 0xf5, 0xf2, 0x00, 0xb7, 0xfa, 0x84, 0x21, 0x5c, 0x92, 0xae, 0x04, 0x86, 0xa4, 0xec, 0x56, - 0x72, 0xec, 0x2b, 0x81, 0xf1, 0xe5, 0xa7, 0x8f, 0xf1, 0x97, 0xa9, 0x35, 0x17, 0x1c, 0x30, 0xfd, - 0x8d, 0x91, 0xa0, 0x1c, 0x9a, 0xfd, 0xcb, 0xfc, 0xec, 0xff, 0x00, 0xd8, 0x0e, 0x6b, 0x23, 0x0e, - 0x3a, 0x38, 0x9a, 0xbe, 0x8d, 0x78, 0x78, 0x07, 0x44, 0x7f, 0x2e, 0x0b, 0x47, 0x59, 0x27, 0xf2, - 0xc3, 0x00, 0x71, 0xc2, 0x73, 0x78, 0x5c, 0x27, 0x39, 0x00, 0xe5, 0x51, 0x2d, 0x48, 0x25, 0x59, - 0xca, 0x14, 0x60, 0x6f, 0x2c, 0xab, 0x1b, 0xf9, 0xf2, 0x03, 0x5d, 0xcd, 0x68, 0x8b, 0x87, 0xfb, - 0x1d, 0x00, 0xbc, 0xb7, 0xd6, 0x28, 0xf3, 0x6b, 0x8d, 0x7d, 0x56, 0x26, 0x13, 0xef, 0x5c, 0x13, - 0x91, 0x51, 0x76, 0xc7, 0xbe, 0x73, 0x1d, 0x5d, 0x76, 0xfa, 0x28, 0xbd, 0x5b, 0x86, 0x6c, 0xdd, - 0xb4, 0x1c, 0xf4, 0xdc, 0x24, 0xad, 0x93, 0x4a, 0x3e, 0x00, 0xc9, 0x7b, 0x57, 0x4a, 0xdc, 0x2d, - 0xcd, 0x37, 0xc7, 0x1f, 0x75, 0xd6, 0x1c, 0x8d, 0x78, 0x75, 0xbb, 0xe5, 0x87, 0xae, 0x6b, 0x4e, - 0x1a, 0x4f, 0x87, 0xca, 0xaf, 0x1e, 0x7d, 0x00, 0x23, 0xb5, 0x78, 0x3a, 0x91, 0x25, 0xa7, 0x8f, - 0xdb, 0x6b, 0x8f, 0x32, 0xdf, 0xd6, 0x25, 0xbd, 0x83, 0xd1, 0x73, 0xa9, 0xcb, 0x48, 0x55, 0xdb, - 0xc1, 0xe2, 0x47, 0x62, 0x62, 0x5d, 0x5b, 0x49, 0x7c, 0x59, 0x39, 0x88, 0x2f, 0x9b, 0xb4, 0x41, - 0xd1, 0x03, 0xe8, 0x94, 0xa5, 0x71, 0x37, 0xa8, 0x98, 0xb2, 0xc7, 0x12, 0xa7, 0xf3, 0x58, 0x1d, - 0x3b, 0xd4, 0xa8, 0xac, 0x79, 0x37, 0xb0, 0xfc, 0xcc, 0x48, 0x22, 0x76, 0xfa, 0x17, 0xbc, 0xc8, - 0x3d, 0x17, 0xbc, 0xbc, 0x2f, 0x0c, 0xce, 0x1a, 0x0f, 0xce, 0x4f, 0x46, 0x0b, 0x88, 0x67, 0x72, - 0x24, 0x30, 0xbd, 0xcd, 0x87, 0x69, 0x9d, 0x83, 0xe9, 0x8e, 0x21, 0xb9, 0x48, 0x1f, 0xb0, 0x5f, - 0xce, 0xc1, 0x51, 0x3a, 0xe9, 0x2f, 0x1a, 0x6d, 0x16, 0x61, 0xf5, 0xcd, 0xd2, 0x21, 0x6f, 0xb6, - 0xed, 0x0f, 0xc1, 0xca, 0xc5, 0x72, 0xce, 0xf5, 0xde, 0x8e, 0xbf, 0x40, 0xc3, 0xb9, 0xba, 0x9d, - 0x28, 0xd9, 0x69, 0x13, 0xbf, 0x21, 0xdf, 0xff, 0x8f, 0xbf, 0xcb, 0x68, 0x42, 0xfc, 0x2e, 0xa3, - 0x3f, 0x49, 0xb6, 0x6e, 0x47, 0x8a, 0xee, 0x11, 0x78, 0xca, 0xb6, 0x53, 0x82, 0x15, 0x3d, 0x01, - 0xee, 0x7e, 0x34, 0xdc, 0xc9, 0x82, 0x08, 0x22, 0x43, 0xba, 0x93, 0x11, 0x02, 0x87, 0xe9, 0x4e, - 0x36, 0x88, 0x81, 0x31, 0xdc, 0x6a, 0x9f, 0x63, 0xbb, 0xf9, 0xa4, 0xdd, 0xa0, 0xbf, 0x92, 0x52, - 0x1f, 0xa5, 0xbf, 0x97, 0x49, 0xe4, 0xff, 0x4c, 0xf8, 0x8a, 0x1f, 0xa6, 0x93, 0x78, 0x34, 0xc7, - 0x91, 0x1b, 0xc3, 0xba, 0x91, 0x44, 0x7c, 0xd1, 0xcf, 0xe9, 0x6d, 0x67, 0x7b, 0x44, 0x27, 0x3a, - 0x2e, 0xba, 0xb4, 0xbc, 0xeb, 0x91, 0xc9, 0x0b, 0xfa, 0xb7, 0x4c, 0xa2, 0x10, 0x52, 0xbe, 0x48, - 0x08, 0x5b, 0x11, 0x22, 0x4e, 0x10, 0xf8, 0x29, 0x96, 0xde, 0x18, 0x35, 0xfa, 0xac, 0xde, 0xc6, - 0xe6, 0x23, 0x50, 0xa3, 0x09, 0x5f, 0xa3, 0xd3, 0xe8, 0x38, 0x72, 0x3f, 0xa2, 0x1a, 0xed, 0x8b, - 0x64, 0x44, 0x1a, 0x1d, 0x4b, 0x2f, 0x7d, 0x19, 0xbf, 0x62, 0x86, 0x4d, 0xa4, 0x56, 0x75, 0xe3, - 0x02, 0xfa, 0xe7, 0xbc, 0x77, 0x31, 0xf3, 0x39, 0xdd, 0xd9, 0x66, 0xb1, 0x60, 0x7e, 0x4f, 0xf8, - 0x6e, 0x94, 0x21, 0xe2, 0xbd, 0xf0, 0xe1, 0xa4, 0x72, 0xfb, 0xc2, 0x49, 0x15, 0x61, 0x56, 0x37, - 0x1c, 0x6c, 0x19, 0x5a, 0x67, 0xa9, 0xa3, 0x6d, 0xd9, 0xa7, 0x26, 0xfa, 0x5e, 0x5e, 0x57, 0x09, - 0xe5, 0x51, 0xf9, 0x3f, 0xc2, 0xd7, 0x57, 0x4e, 0xf2, 0xd7, 0x57, 0x46, 0x44, 0xbf, 0x9a, 0x8a, - 0x8e, 0x7e, 0xe5, 0x47, 0xb7, 0x82, 0xc1, 0xc1, 0xb1, 0x45, 0x6d, 0xe3, 0x84, 0xe1, 0xfe, 0x6e, - 0x16, 0x8c, 0xc2, 0xe6, 0x87, 0x7e, 0x7c, 0xb5, 0x9c, 0x68, 0x75, 0xcf, 0x55, 0x84, 0xf9, 0x5e, - 0x25, 0x48, 0x6c, 0xa1, 0x86, 0x2b, 0x2f, 0xf7, 0x54, 0xde, 0x37, 0x79, 0xb2, 0x02, 0x26, 0x4f, - 0x58, 0xa9, 0x72, 0x62, 0x4a, 0x95, 0x64, 0xb1, 0x50, 0xa4, 0xb6, 0x63, 0x38, 0x8d, 0x94, 0x83, - 0x63, 0x5e, 0xb4, 0xdb, 0x6e, 0x17, 0x6b, 0x96, 0x66, 0xb4, 0x30, 0xfa, 0x98, 0x34, 0x0a, 0xb3, - 0x77, 0x09, 0x26, 0xf5, 0x96, 0x69, 0xd4, 0xf5, 0x67, 0x78, 0x97, 0xcb, 0xc5, 0x07, 0x59, 0x27, - 0x12, 0xa9, 0xb0, 0x3f, 0x54, 0xff, 0x5f, 0xa5, 0x02, 0x53, 0x2d, 0xcd, 0x6a, 0xd3, 0x20, 0x7c, - 0xb9, 0x9e, 0x8b, 0x9c, 0x22, 0x09, 0x95, 0xbc, 0x5f, 0xd4, 0xe0, 0x6f, 0xa5, 0xc6, 0x0b, 0x31, - 0xdf, 0x13, 0xcd, 0x23, 0x92, 0xd8, 0x62, 0xf0, 0x13, 0x27, 0x73, 0x57, 0x3a, 0x16, 0xee, 0x90, - 0x3b, 0xe8, 0x69, 0x0f, 0x31, 0xa5, 0x06, 0x09, 0x49, 0x97, 0x07, 0x48, 0x51, 0xfb, 0xd0, 0x18, - 0xf7, 0xf2, 0x80, 0x10, 0x17, 0xe9, 0x6b, 0xe6, 0x3b, 0xf2, 0x30, 0x4b, 0x7b, 0x35, 0x26, 0x4e, - 0xf4, 0x7c, 0x72, 0x85, 0xb4, 0x73, 0x2f, 0xbe, 0x84, 0xea, 0x07, 0x1f, 0x93, 0x0b, 0x20, 0x5f, - 0xf0, 0x03, 0x0e, 0xba, 0x8f, 0x49, 0xf7, 0xed, 0x3d, 0xbe, 0xe6, 0x29, 0x4f, 0xe3, 0xde, 0xb7, - 0x8f, 0x2f, 0x3e, 0x7d, 0x7c, 0x7e, 0x45, 0x06, 0xb9, 0xd8, 0x6e, 0xa3, 0xd6, 0xc1, 0xa1, 0xb8, - 0x06, 0xa6, 0xbd, 0x36, 0x13, 0xc4, 0x80, 0x0c, 0x27, 0x25, 0x5d, 0x04, 0xf5, 0x65, 0x53, 0x6c, - 0x8f, 0x7d, 0x57, 0x21, 0xa6, 0xec, 0xf4, 0x41, 0xf9, 0x8d, 0x09, 0xd6, 0x68, 0x16, 0x4c, 0xf3, - 0x02, 0x39, 0x2a, 0xf3, 0x5c, 0x19, 0x72, 0x4b, 0xd8, 0x69, 0x6d, 0x8f, 0xa8, 0xcd, 0xec, 0x5a, - 0x1d, 0xaf, 0xcd, 0xec, 0xbb, 0x0f, 0x7f, 0xb0, 0x0d, 0xeb, 0xb1, 0x35, 0x4f, 0x58, 0x1a, 0x77, - 0x74, 0xe7, 0xd8, 0xd2, 0xd3, 0x07, 0xe7, 0xdf, 0x64, 0x98, 0xf3, 0x57, 0xb8, 0x28, 0x26, 0xbf, - 0x9c, 0x79, 0xa4, 0xad, 0x77, 0xa2, 0xcf, 0x27, 0x0b, 0x91, 0xe6, 0xcb, 0x94, 0xaf, 0x59, 0xca, - 0x0b, 0x8b, 0x09, 0x82, 0xa7, 0x89, 0x31, 0x38, 0x86, 0x19, 0xbc, 0x0c, 0x93, 0x84, 0xa1, 0x45, - 0x7d, 0x8f, 0xb8, 0x0e, 0x72, 0x0b, 0x8d, 0xcf, 0x1c, 0xc9, 0x42, 0xe3, 0x1d, 0xfc, 0x42, 0xa3, - 0x60, 0xc4, 0x63, 0x6f, 0x9d, 0x31, 0xa1, 0x2f, 0x8d, 0xfb, 0xff, 0xc8, 0x97, 0x19, 0x13, 0xf8, - 0xd2, 0x0c, 0x28, 0x3f, 0x7d, 0x44, 0x5f, 0xfd, 0x9f, 0x58, 0x67, 0xeb, 0x6d, 0xa8, 0xa2, 0xff, - 0x79, 0x0c, 0xb2, 0x67, 0xdd, 0x87, 0xff, 0x1d, 0xdc, 0x88, 0xf5, 0x92, 0x11, 0x04, 0x67, 0x78, - 0x2a, 0x64, 0x5d, 0xfa, 0x6c, 0xda, 0x72, 0xa3, 0xd8, 0xee, 0xae, 0xcb, 0x88, 0x4a, 0xfe, 0x53, - 0x4e, 0x42, 0xde, 0x36, 0x77, 0xad, 0x96, 0x6b, 0x3e, 0xbb, 0x1a, 0xc3, 0xde, 0x92, 0x06, 0x25, - 0xe5, 0x48, 0xcf, 0x8f, 0xce, 0x65, 0x34, 0x74, 0x41, 0x92, 0xcc, 0x5d, 0x90, 0x94, 0x60, 0xff, - 0x40, 0x80, 0xb7, 0xf4, 0x35, 0xe2, 0xaf, 0xc8, 0x5d, 0x81, 0xed, 0x51, 0xc1, 0x1e, 0x21, 0x96, - 0x83, 0xaa, 0x43, 0x52, 0x87, 0x6f, 0x5e, 0xb4, 0x7e, 0x1c, 0xf8, 0xb1, 0x3a, 0x7c, 0x0b, 0xf0, - 0x30, 0x96, 0x53, 0xea, 0x79, 0xe6, 0xa4, 0x7a, 0xdf, 0x28, 0xd1, 0xcd, 0x72, 0x4a, 0x7f, 0x20, - 0x74, 0x46, 0xe8, 0xbc, 0x3a, 0x34, 0x3a, 0x87, 0xe4, 0xbe, 0xfa, 0x07, 0x32, 0x89, 0x84, 0xe9, - 0x19, 0x39, 0xe2, 0x17, 0x1d, 0x25, 0x86, 0xc8, 0x1d, 0x83, 0xb9, 0x38, 0xd0, 0xb3, 0xc3, 0x87, - 0x06, 0xe7, 0x45, 0x17, 0xe2, 0x7f, 0xdc, 0xa1, 0xc1, 0x45, 0x19, 0x49, 0x1f, 0xc8, 0xd7, 0xd3, - 0x8b, 0xc5, 0x8a, 0x2d, 0x47, 0xdf, 0x1b, 0x71, 0x4b, 0xe3, 0x87, 0x97, 0x84, 0xd1, 0x80, 0xf7, - 0x49, 0x88, 0x72, 0x38, 0xee, 0x68, 0xc0, 0x62, 0x6c, 0xa4, 0x0f, 0xd3, 0xdf, 0xe6, 0x5d, 0xe9, - 0xb1, 0xb5, 0x99, 0x37, 0xb0, 0xd5, 0x00, 0x7c, 0x70, 0xb4, 0xce, 0xc0, 0x4c, 0x68, 0xea, 0xef, - 0x5d, 0x58, 0xc3, 0xa5, 0x25, 0x3d, 0xe8, 0xee, 0x8b, 0x6c, 0xe4, 0x0b, 0x03, 0x09, 0x16, 0x7c, - 0x45, 0x98, 0x18, 0xcb, 0x7d, 0x70, 0xde, 0x18, 0x36, 0x26, 0xac, 0x7e, 0x2f, 0x8c, 0x55, 0x8d, - 0xc7, 0xea, 0x36, 0x11, 0x31, 0x89, 0x8d, 0x69, 0x42, 0xf3, 0xc6, 0xb7, 0xfb, 0x70, 0xa9, 0x1c, - 0x5c, 0x4f, 0x1d, 0x9a, 0x8f, 0xf4, 0x11, 0x7b, 0x29, 0xed, 0x0e, 0xeb, 0xd4, 0x64, 0x1f, 0x4d, - 0x77, 0xc8, 0x66, 0x03, 0x32, 0x37, 0x1b, 0x48, 0xe8, 0x6f, 0x1f, 0xb8, 0x91, 0x7a, 0xcc, 0x0d, - 0x82, 0x28, 0x3b, 0x62, 0x7f, 0xfb, 0x81, 0x1c, 0xa4, 0x0f, 0xce, 0x3f, 0xca, 0x00, 0xcb, 0x96, - 0xb9, 0xdb, 0xad, 0x59, 0x6d, 0x6c, 0xa1, 0xbf, 0x09, 0x26, 0x00, 0x2f, 0x1a, 0xc1, 0x04, 0x60, - 0x1d, 0x60, 0xcb, 0x27, 0xce, 0x34, 0xfc, 0x16, 0x31, 0x73, 0x3f, 0x60, 0x4a, 0x0d, 0xd1, 0xe0, - 0xaf, 0x9c, 0x7d, 0x1a, 0x8f, 0x71, 0x5c, 0x9f, 0x15, 0x90, 0x1b, 0xe5, 0x04, 0xe0, 0x9d, 0x3e, - 0xd6, 0x0d, 0x0e, 0xeb, 0xbb, 0x0f, 0xc0, 0x49, 0xfa, 0x98, 0xff, 0xd3, 0x04, 0x4c, 0xd3, 0xed, - 0x3a, 0x2a, 0xd3, 0xbf, 0x0f, 0x40, 0xff, 0x8d, 0x11, 0x80, 0xbe, 0x01, 0x33, 0x66, 0x40, 0x9d, - 0xf6, 0xa9, 0xe1, 0x05, 0x98, 0x58, 0xd8, 0x43, 0x7c, 0xa9, 0x1c, 0x19, 0xf4, 0x91, 0x30, 0xf2, - 0x2a, 0x8f, 0xfc, 0x1d, 0x31, 0xf2, 0x0e, 0x51, 0x1c, 0x25, 0xf4, 0xef, 0xf2, 0xa1, 0xdf, 0xe0, - 0xa0, 0x2f, 0x1e, 0x84, 0x95, 0x31, 0x84, 0xdb, 0x97, 0x21, 0x4b, 0x4e, 0xc7, 0xfd, 0x66, 0x8a, - 0xf3, 0xfb, 0x53, 0x30, 0x41, 0x9a, 0xac, 0x3f, 0xef, 0xf0, 0x5e, 0xdd, 0x2f, 0xda, 0xa6, 0x83, - 0x2d, 0xdf, 0x63, 0xc1, 0x7b, 0x75, 0x79, 0xf0, 0xbc, 0x92, 0xed, 0x53, 0x79, 0xba, 0x11, 0xe9, - 0x27, 0x0c, 0x3d, 0x29, 0x09, 0x4b, 0x7c, 0x64, 0xe7, 0xe5, 0x86, 0x99, 0x94, 0x0c, 0x60, 0x24, - 0x7d, 0xe0, 0xff, 0x22, 0x0b, 0xa7, 0xe8, 0xaa, 0xd2, 0x92, 0x65, 0xee, 0xf4, 0xdc, 0x6e, 0xa5, - 0x1f, 0x5c, 0x17, 0xae, 0x87, 0x39, 0x87, 0xf3, 0xc7, 0x66, 0x3a, 0xd1, 0x93, 0x8a, 0xfe, 0x34, - 0xec, 0x53, 0xf1, 0x74, 0x1e, 0xc9, 0x85, 0x18, 0x01, 0x46, 0xf1, 0x9e, 0x78, 0xa1, 0x5e, 0x90, - 0xd1, 0xd0, 0x22, 0x95, 0x3c, 0xd4, 0x9a, 0xa5, 0xaf, 0x53, 0x39, 0x11, 0x9d, 0x7a, 0xbf, 0xaf, - 0x53, 0x3f, 0xcd, 0xe9, 0xd4, 0xf2, 0xc1, 0x45, 0x92, 0xbe, 0x6e, 0xbd, 0xca, 0xdf, 0x18, 0xf2, - 0xb7, 0xed, 0x76, 0x52, 0xd8, 0xac, 0x0b, 0xfb, 0x23, 0x65, 0x39, 0x7f, 0x24, 0xfe, 0x3e, 0x8a, - 0x04, 0x33, 0x61, 0x9e, 0xeb, 0x08, 0x5d, 0x9a, 0x03, 0x49, 0xf7, 0xb8, 0x93, 0xf4, 0xf6, 0x50, - 0x73, 0xdd, 0xd8, 0x82, 0xc6, 0xb0, 0xb6, 0x34, 0x07, 0xf9, 0x25, 0xbd, 0xe3, 0x60, 0x0b, 0x7d, - 0x99, 0xcd, 0x74, 0x5f, 0x95, 0xe2, 0x00, 0xb0, 0x08, 0xf9, 0x4d, 0x52, 0x1a, 0x33, 0x99, 0x6f, - 0x12, 0x6b, 0x3d, 0x94, 0x43, 0x95, 0xfd, 0x9b, 0x34, 0x3a, 0x5f, 0x0f, 0x99, 0x91, 0x4d, 0x91, - 0x13, 0x44, 0xe7, 0x1b, 0xcc, 0xc2, 0x58, 0x2e, 0xa6, 0xca, 0xab, 0x78, 0xc7, 0x1d, 0xe3, 0x2f, - 0xa4, 0x87, 0x70, 0x01, 0x64, 0xbd, 0x6d, 0x93, 0xce, 0x71, 0x4a, 0x75, 0x1f, 0x93, 0xfa, 0x0a, - 0xf5, 0x8a, 0x8a, 0xb2, 0x3c, 0x6e, 0x5f, 0x21, 0x21, 0x2e, 0xd2, 0xc7, 0xec, 0x7b, 0xc4, 0x51, - 0xb4, 0xdb, 0xd1, 0x5a, 0xd8, 0xe5, 0x3e, 0x35, 0xd4, 0x68, 0x4f, 0x96, 0xf5, 0x7a, 0xb2, 0x50, - 0x3b, 0xcd, 0x1d, 0xa0, 0x9d, 0x0e, 0xbb, 0x0c, 0xe9, 0xcb, 0x9c, 0x54, 0xfc, 0xd0, 0x96, 0x21, - 0x63, 0xd9, 0x18, 0xc3, 0xb5, 0xa3, 0xde, 0x41, 0xda, 0xb1, 0xb6, 0xd6, 0x61, 0x37, 0x69, 0x98, - 0xb0, 0x46, 0x76, 0x68, 0x76, 0x98, 0x4d, 0x9a, 0x68, 0x1e, 0xc6, 0x80, 0xd6, 0x1c, 0x43, 0xeb, - 0x73, 0x6c, 0x18, 0x4d, 0x79, 0x9f, 0xd4, 0x36, 0x2d, 0x27, 0xd9, 0x3e, 0xa9, 0xcb, 0x9d, 0x4a, - 0xfe, 0x4b, 0x7a, 0xf0, 0x8a, 0x3f, 0x57, 0x3d, 0xaa, 0xe1, 0x33, 0xc1, 0xc1, 0xab, 0x41, 0x0c, - 0xa4, 0x0f, 0xef, 0x5b, 0x0e, 0x69, 0xf0, 0x1c, 0xb6, 0x39, 0xb2, 0x36, 0x30, 0xb2, 0xa1, 0x73, - 0x98, 0xe6, 0x18, 0xcd, 0x43, 0xfa, 0x78, 0x7d, 0x3b, 0x34, 0x70, 0xbe, 0x69, 0x8c, 0x03, 0xa7, - 0xd7, 0x32, 0x73, 0x43, 0xb6, 0xcc, 0x61, 0xf7, 0x7f, 0x98, 0xac, 0x47, 0x37, 0x60, 0x0e, 0xb3, - 0xff, 0x13, 0xc3, 0x44, 0xfa, 0x88, 0xbf, 0x59, 0x86, 0x5c, 0x7d, 0xfc, 0xe3, 0xe5, 0xb0, 0x73, - 0x11, 0x22, 0xab, 0xfa, 0xc8, 0x86, 0xcb, 0x61, 0xe6, 0x22, 0x91, 0x2c, 0x8c, 0x21, 0xf0, 0xfe, - 0x51, 0x98, 0x21, 0x4b, 0x22, 0xde, 0x36, 0xeb, 0xb7, 0xd9, 0xa8, 0xf9, 0x70, 0x8a, 0x6d, 0xf5, - 0x1e, 0x98, 0xf4, 0xf6, 0xef, 0xd8, 0xc8, 0x39, 0x2f, 0xd6, 0x3e, 0x3d, 0x2e, 0x55, 0xff, 0xff, - 0x03, 0x39, 0x43, 0x8c, 0x7c, 0xaf, 0x76, 0x58, 0x67, 0x88, 0x43, 0xdd, 0xaf, 0xfd, 0x93, 0x60, - 0x44, 0xfd, 0x2f, 0xe9, 0x61, 0xde, 0xbb, 0x8f, 0x9b, 0xed, 0xb3, 0x8f, 0xfb, 0xb1, 0x30, 0x96, - 0x75, 0x1e, 0xcb, 0x3b, 0x45, 0x45, 0x38, 0xc2, 0xb1, 0xf6, 0xdd, 0x3e, 0x9c, 0x67, 0x39, 0x38, - 0x17, 0x0e, 0xc4, 0xcb, 0x18, 0x0e, 0x3e, 0x66, 0x83, 0x31, 0xf7, 0xe3, 0x29, 0xb6, 0xe3, 0x9e, - 0x53, 0x15, 0xd9, 0x7d, 0xa7, 0x2a, 0xb8, 0x96, 0x9e, 0x3b, 0x60, 0x4b, 0xff, 0x78, 0x58, 0x3b, - 0x1a, 0xbc, 0x76, 0x3c, 0x55, 0x1c, 0x91, 0xd1, 0x8d, 0xcc, 0xef, 0xf1, 0xd5, 0xe3, 0x1c, 0xa7, - 0x1e, 0xa5, 0x83, 0x31, 0x93, 0xbe, 0x7e, 0xfc, 0xa1, 0x37, 0xa1, 0x3d, 0xe4, 0xf6, 0x3e, 0xec, - 0x56, 0x31, 0x27, 0xc4, 0x91, 0x8d, 0xdc, 0xc3, 0x6c, 0x15, 0x0f, 0xe2, 0x64, 0x0c, 0xb1, 0xd8, - 0x66, 0x61, 0x9a, 0xf0, 0x74, 0x4e, 0x6f, 0x6f, 0x61, 0x07, 0xbd, 0x9a, 0xfa, 0x28, 0x7a, 0x91, - 0x2f, 0x47, 0x14, 0x9e, 0x28, 0xea, 0xbc, 0x6b, 0x52, 0x8f, 0x0e, 0xca, 0xe4, 0x7c, 0x88, 0xc1, - 0x71, 0x47, 0x50, 0x1c, 0xc8, 0x41, 0xfa, 0x90, 0x7d, 0x84, 0xba, 0xdb, 0xac, 0x6a, 0x97, 0xcc, - 0x5d, 0x07, 0x3d, 0x38, 0x82, 0x0e, 0x7a, 0x01, 0xf2, 0x1d, 0x42, 0x8d, 0x1d, 0xcb, 0x88, 0x9f, - 0xee, 0x30, 0x11, 0xd0, 0xf2, 0x55, 0xf6, 0x67, 0xd2, 0xb3, 0x19, 0x81, 0x1c, 0x29, 0x9d, 0x71, - 0x9f, 0xcd, 0x18, 0x50, 0xfe, 0x58, 0xee, 0xd8, 0x99, 0x74, 0x4b, 0xd7, 0x77, 0x74, 0x67, 0x44, - 0x11, 0x1c, 0x3a, 0x2e, 0x2d, 0x2f, 0x82, 0x03, 0x79, 0x49, 0x7a, 0x62, 0x34, 0x24, 0x15, 0xf7, - 0xf7, 0x71, 0x9f, 0x18, 0x8d, 0x2f, 0x3e, 0x7d, 0x4c, 0x7e, 0x8d, 0xb6, 0xac, 0xb3, 0xd4, 0xf9, - 0x36, 0x45, 0xbf, 0xde, 0xa1, 0x1b, 0x0b, 0x65, 0xed, 0xf0, 0x1a, 0x4b, 0xdf, 0xf2, 0xd3, 0x07, - 0xe6, 0xbf, 0xff, 0x38, 0xe4, 0x16, 0xf1, 0xf9, 0xdd, 0x2d, 0x74, 0x07, 0x4c, 0x36, 0x2c, 0x8c, - 0x2b, 0xc6, 0xa6, 0xe9, 0x4a, 0xd7, 0x71, 0x9f, 0x3d, 0x48, 0xd8, 0x9b, 0x8b, 0xc7, 0x36, 0xd6, - 0xda, 0xc1, 0xf9, 0x33, 0xef, 0x15, 0xbd, 0x44, 0x82, 0x6c, 0xdd, 0xd1, 0x1c, 0x34, 0xe5, 0x63, - 0x8b, 0x1e, 0x0c, 0x63, 0x71, 0x07, 0x8f, 0xc5, 0xf5, 0x9c, 0x2c, 0x08, 0x07, 0xf3, 0xee, 0xff, - 0x11, 0x00, 0x20, 0x98, 0xbc, 0xdf, 0x36, 0x0d, 0x37, 0x87, 0x77, 0x04, 0xd2, 0x7b, 0x47, 0xaf, - 0xf4, 0xc5, 0x7d, 0x17, 0x27, 0xee, 0xc7, 0x8a, 0x15, 0x31, 0x86, 0x95, 0x36, 0x09, 0xa6, 0x5c, - 0xd1, 0xae, 0x60, 0xad, 0x6d, 0xa3, 0x1f, 0x0b, 0x94, 0x3f, 0x42, 0xcc, 0xe8, 0x03, 0xc2, 0xc1, - 0x38, 0x69, 0xad, 0x7c, 0xe2, 0xd1, 0x1e, 0x1d, 0xde, 0xe6, 0xbf, 0xc4, 0x07, 0x23, 0xb9, 0x19, - 0xb2, 0xba, 0xb1, 0x69, 0x32, 0xff, 0xc2, 0x2b, 0x23, 0x68, 0xbb, 0x3a, 0xa1, 0x92, 0x8c, 0x82, - 0x91, 0x3a, 0xe3, 0xd9, 0x1a, 0xcb, 0xa5, 0x77, 0x59, 0xb7, 0x74, 0xf4, 0xff, 0x1f, 0x28, 0x6c, - 0x45, 0x81, 0x6c, 0x57, 0x73, 0xb6, 0x59, 0xd1, 0xe4, 0xd9, 0xb5, 0x91, 0x77, 0x0d, 0xcd, 0x30, - 0x8d, 0x4b, 0x3b, 0xfa, 0x33, 0xfc, 0xbb, 0x75, 0xb9, 0x34, 0x97, 0xf3, 0x2d, 0x6c, 0x60, 0x4b, - 0x73, 0x70, 0x7d, 0x6f, 0x8b, 0xcc, 0xb1, 0x26, 0xd5, 0x70, 0x52, 0x62, 0xfd, 0x77, 0x39, 0x8e, - 0xd6, 0xff, 0x4d, 0xbd, 0x83, 0x49, 0xa4, 0x26, 0xa6, 0xff, 0xde, 0x7b, 0x22, 0xfd, 0xef, 0x53, - 0x44, 0xfa, 0x68, 0x7c, 0x5f, 0x82, 0x99, 0xba, 0xab, 0x70, 0xf5, 0xdd, 0x9d, 0x1d, 0xcd, 0xba, - 0x84, 0xae, 0x0d, 0x50, 0x09, 0xa9, 0x66, 0x86, 0xf7, 0x4b, 0xf9, 0x03, 0xe1, 0x6b, 0xa5, 0x59, - 0xd3, 0x0e, 0x95, 0x90, 0xb8, 0x1d, 0x3c, 0x1e, 0x72, 0xae, 0x7a, 0x7b, 0x1e, 0x97, 0xb1, 0x0d, - 0x81, 0xe6, 0x14, 0x8c, 0x68, 0x35, 0x90, 0xb7, 0x31, 0x44, 0xd3, 0x90, 0xe0, 0x68, 0xdd, 0xd1, - 0x5a, 0x17, 0x96, 0x4d, 0xcb, 0xdc, 0x75, 0x74, 0x03, 0xdb, 0xe8, 0x51, 0x01, 0x02, 0x9e, 0xfe, - 0x67, 0x02, 0xfd, 0x47, 0xff, 0x9e, 0x11, 0x1d, 0x45, 0xfd, 0x6e, 0x35, 0x4c, 0x3e, 0x22, 0x40, - 0x95, 0xd8, 0xb8, 0x28, 0x42, 0x31, 0x7d, 0xa1, 0xbd, 0x49, 0x86, 0x42, 0xf9, 0x81, 0xae, 0x69, - 0x39, 0xab, 0x66, 0x4b, 0xeb, 0xd8, 0x8e, 0x69, 0x61, 0x54, 0x8b, 0x95, 0x9a, 0xdb, 0xc3, 0xb4, - 0xcd, 0x56, 0x30, 0x38, 0xb2, 0xb7, 0xb0, 0xda, 0xc9, 0xbc, 0x8e, 0x7f, 0x44, 0x78, 0x97, 0x91, - 0x4a, 0xa5, 0x97, 0xa3, 0x08, 0x3d, 0xef, 0xd7, 0xa5, 0x25, 0x3b, 0x2c, 0x21, 0xb6, 0xf3, 0x28, - 0xc4, 0xd4, 0x18, 0x96, 0xca, 0x25, 0x98, 0xad, 0xef, 0x9e, 0xf7, 0x89, 0xd8, 0x61, 0x23, 0xe4, - 0x35, 0xc2, 0x51, 0x2a, 0x98, 0xe2, 0x85, 0x09, 0x45, 0xc8, 0xf7, 0x3a, 0x98, 0xb5, 0xc3, 0xd9, - 0x18, 0xde, 0x7c, 0xa2, 0x60, 0x74, 0x8a, 0xc1, 0xa5, 0xa6, 0x2f, 0xc0, 0xf7, 0x48, 0x30, 0x5b, - 0xeb, 0x62, 0x03, 0xb7, 0xa9, 0x17, 0x24, 0x27, 0xc0, 0x97, 0x24, 0x14, 0x20, 0x47, 0x28, 0x42, - 0x80, 0x81, 0xc7, 0xf2, 0xa2, 0x27, 0xbc, 0x20, 0x21, 0x91, 0xe0, 0xe2, 0x4a, 0x4b, 0x5f, 0x70, - 0x5f, 0x92, 0x60, 0x5a, 0xdd, 0x35, 0xd6, 0x2d, 0xd3, 0x1d, 0x8d, 0x2d, 0x74, 0x67, 0xd0, 0x41, - 0xdc, 0x04, 0xc7, 0xda, 0xbb, 0x16, 0x59, 0x7f, 0xaa, 0x18, 0x75, 0xdc, 0x32, 0x8d, 0xb6, 0x4d, - 0xea, 0x91, 0x53, 0xf7, 0x7f, 0xb8, 0x3d, 0xfb, 0xdc, 0x6f, 0xc8, 0x19, 0xf4, 0x7c, 0xe1, 0x50, - 0x37, 0xb4, 0xf2, 0xa1, 0xa2, 0xc5, 0x7b, 0x02, 0xc1, 0x80, 0x36, 0x83, 0x4a, 0x48, 0x5f, 0xb8, - 0x9f, 0x93, 0x40, 0x29, 0xb6, 0x5a, 0xe6, 0xae, 0xe1, 0xd4, 0x71, 0x07, 0xb7, 0x9c, 0x86, 0xa5, - 0xb5, 0x70, 0xd8, 0x7e, 0x2e, 0x80, 0xdc, 0xd6, 0x2d, 0xd6, 0x07, 0xbb, 0x8f, 0x4c, 0x8e, 0x2f, - 0x11, 0xde, 0x71, 0xa4, 0xb5, 0xdc, 0x5f, 0x4a, 0x02, 0x71, 0x8a, 0xed, 0x2b, 0x0a, 0x16, 0x94, - 0xbe, 0x54, 0x3f, 0x2e, 0xc1, 0x94, 0xd7, 0x63, 0x6f, 0x89, 0x08, 0xf3, 0xd7, 0x12, 0x4e, 0x46, - 0x7c, 0xe2, 0x09, 0x64, 0xf8, 0x8e, 0x04, 0xb3, 0x8a, 0x28, 0xfa, 0xc9, 0x44, 0x57, 0x4c, 0x2e, - 0x3a, 0xf7, 0xb5, 0x5a, 0x6b, 0x2e, 0xd5, 0x56, 0x17, 0xcb, 0x6a, 0x41, 0x46, 0x5f, 0x96, 0x20, - 0xbb, 0xae, 0x1b, 0x5b, 0xe1, 0xe8, 0x4a, 0xc7, 0x5d, 0x3b, 0xb2, 0x8d, 0x1f, 0x60, 0x2d, 0x9d, - 0xbe, 0x28, 0xb7, 0xc2, 0x71, 0x63, 0x77, 0xe7, 0x3c, 0xb6, 0x6a, 0x9b, 0x64, 0x94, 0xb5, 0x1b, - 0x66, 0x1d, 0x1b, 0xd4, 0x08, 0xcd, 0xa9, 0x7d, 0xbf, 0xf1, 0x26, 0x98, 0xc0, 0xe4, 0xc1, 0xe5, - 0x24, 0x42, 0xe2, 0x3e, 0x53, 0x52, 0x88, 0xa9, 0x44, 0xd3, 0x86, 0x3e, 0xc4, 0xd3, 0xd7, 0xd4, - 0x3f, 0xca, 0xc1, 0x89, 0xa2, 0x71, 0x89, 0xd8, 0x14, 0xb4, 0x83, 0x2f, 0x6d, 0x6b, 0xc6, 0x16, - 0x26, 0x03, 0x84, 0x2f, 0xf1, 0x70, 0x88, 0xfe, 0x0c, 0x1f, 0xa2, 0x5f, 0x51, 0x61, 0xc2, 0xb4, - 0xda, 0xd8, 0x5a, 0xb8, 0x44, 0x78, 0xea, 0x5d, 0x76, 0x66, 0x6d, 0xb2, 0x5f, 0x11, 0xf3, 0x8c, - 0xfc, 0x7c, 0x8d, 0xfe, 0xaf, 0x7a, 0x84, 0xce, 0xdc, 0x04, 0x13, 0x2c, 0x4d, 0x99, 0x81, 0xc9, - 0x9a, 0xba, 0x58, 0x56, 0x9b, 0x95, 0xc5, 0xc2, 0x11, 0xe5, 0x32, 0x38, 0x5a, 0x69, 0x94, 0xd5, - 0x62, 0xa3, 0x52, 0xab, 0x36, 0x49, 0x7a, 0x21, 0x83, 0x9e, 0x93, 0x15, 0xf5, 0xec, 0x8d, 0x67, - 0xa6, 0x1f, 0xac, 0x2a, 0x4c, 0xb4, 0x68, 0x06, 0x32, 0x84, 0x4e, 0x27, 0xaa, 0x1d, 0x23, 0x48, - 0x13, 0x54, 0x8f, 0x90, 0x72, 0x1a, 0xe0, 0xa2, 0x65, 0x1a, 0x5b, 0xc1, 0xa9, 0xc3, 0x49, 0x35, - 0x94, 0x82, 0x1e, 0xcc, 0x40, 0x9e, 0xfe, 0x43, 0xae, 0x24, 0x21, 0x4f, 0x81, 0xe0, 0xbd, 0x77, - 0xd7, 0xe2, 0x25, 0xf2, 0x0a, 0x26, 0x5a, 0xec, 0xd5, 0xd5, 0x45, 0x2a, 0x03, 0x6a, 0x09, 0xb3, - 0xaa, 0xdc, 0x0c, 0x79, 0xfa, 0x2f, 0xf3, 0x3a, 0x88, 0x0e, 0x2f, 0x4a, 0xb3, 0x09, 0xfa, 0x29, - 0x8b, 0xcb, 0x34, 0x7d, 0x6d, 0xfe, 0xa0, 0x04, 0x93, 0x55, 0xec, 0x94, 0xb6, 0x71, 0xeb, 0x02, - 0x7a, 0x0c, 0xbf, 0x00, 0xda, 0xd1, 0xb1, 0xe1, 0xdc, 0xb7, 0xd3, 0xf1, 0x17, 0x40, 0xbd, 0x04, - 0xf4, 0xbc, 0x70, 0xe7, 0x7b, 0x37, 0xaf, 0x3f, 0x37, 0xf6, 0xa9, 0xab, 0x57, 0x42, 0x84, 0xca, - 0x9c, 0x84, 0xbc, 0x85, 0xed, 0xdd, 0x8e, 0xb7, 0x88, 0xc6, 0xde, 0xd0, 0x6b, 0x7d, 0x71, 0x96, - 0x38, 0x71, 0xde, 0x2c, 0x5e, 0xc4, 0x18, 0xe2, 0x95, 0x66, 0x61, 0xa2, 0x62, 0xe8, 0x8e, 0xae, - 0x75, 0xd0, 0xf3, 0xb3, 0x30, 0x5b, 0xc7, 0xce, 0xba, 0x66, 0x69, 0x3b, 0xd8, 0xc1, 0x96, 0x8d, - 0xbe, 0xcb, 0xf7, 0x09, 0xdd, 0x8e, 0xe6, 0x6c, 0x9a, 0xd6, 0x8e, 0xa7, 0x9a, 0xde, 0xbb, 0xab, - 0x9a, 0x7b, 0xd8, 0xb2, 0x03, 0xbe, 0xbc, 0x57, 0xf7, 0xcb, 0x45, 0xd3, 0xba, 0xe0, 0x0e, 0x82, - 0x6c, 0x9a, 0xc6, 0x5e, 0x5d, 0x7a, 0x1d, 0x73, 0x6b, 0x15, 0xef, 0x61, 0x2f, 0x5c, 0x9a, 0xff, - 0xee, 0xce, 0x05, 0xda, 0x66, 0xd5, 0x74, 0xdc, 0x4e, 0x7b, 0xd5, 0xdc, 0xa2, 0xf1, 0x62, 0x27, - 0x55, 0x3e, 0x31, 0xc8, 0xa5, 0xed, 0x61, 0x92, 0x2b, 0x1f, 0xce, 0xc5, 0x12, 0x95, 0x79, 0x50, - 0xfc, 0xdf, 0x1a, 0xb8, 0x83, 0x77, 0xb0, 0x63, 0x5d, 0x22, 0xd7, 0x42, 0x4c, 0xaa, 0x7d, 0xbe, - 0xb0, 0x01, 0x5a, 0x7c, 0xb2, 0xce, 0xa4, 0x37, 0xcf, 0x49, 0xee, 0x40, 0x93, 0x75, 0x11, 0x8a, - 0x63, 0xb9, 0xf6, 0x4a, 0x76, 0xad, 0x99, 0x97, 0xc9, 0x90, 0x25, 0x83, 0xe7, 0x9b, 0x33, 0xdc, - 0x0a, 0xd3, 0x0e, 0xb6, 0x6d, 0x6d, 0x0b, 0x7b, 0x2b, 0x4c, 0xec, 0x55, 0xb9, 0x0d, 0x72, 0x1d, - 0x82, 0x29, 0x1d, 0x1c, 0xae, 0xe5, 0x6a, 0xe6, 0x1a, 0x18, 0x2e, 0x2d, 0x7f, 0x24, 0x20, 0x70, - 0xab, 0xf4, 0x8f, 0x33, 0xf7, 0x40, 0x8e, 0xc2, 0x3f, 0x05, 0xb9, 0xc5, 0xf2, 0xc2, 0xc6, 0x72, - 0xe1, 0x88, 0xfb, 0xe8, 0xf1, 0x37, 0x05, 0xb9, 0xa5, 0x62, 0xa3, 0xb8, 0x5a, 0x90, 0xdc, 0x7a, - 0x54, 0xaa, 0x4b, 0xb5, 0x82, 0xec, 0x26, 0xae, 0x17, 0xab, 0x95, 0x52, 0x21, 0xab, 0x4c, 0xc3, - 0xc4, 0xb9, 0xa2, 0x5a, 0xad, 0x54, 0x97, 0x0b, 0x39, 0xf4, 0xb7, 0x61, 0xfc, 0x6e, 0xe7, 0xf1, - 0xbb, 0x2e, 0x8a, 0xa7, 0x7e, 0x90, 0xbd, 0xdc, 0x87, 0xec, 0x4e, 0x0e, 0xb2, 0x1f, 0x17, 0x21, - 0x32, 0x06, 0x77, 0xa6, 0x3c, 0x4c, 0xac, 0x5b, 0x66, 0x0b, 0xdb, 0x36, 0xfa, 0x75, 0x09, 0xf2, - 0x25, 0xcd, 0x68, 0xe1, 0x0e, 0xba, 0x22, 0x80, 0x8a, 0xba, 0x8a, 0x66, 0xfc, 0xd3, 0x62, 0xff, - 0x98, 0x11, 0xed, 0xfd, 0x18, 0xdd, 0x79, 0x4a, 0x33, 0x42, 0x3e, 0x62, 0xbd, 0x5c, 0x2c, 0xa9, - 0x31, 0x5c, 0x8d, 0x23, 0xc1, 0x14, 0x5b, 0x0d, 0x38, 0x8f, 0xc3, 0xf3, 0xf0, 0xef, 0x66, 0x44, - 0x27, 0x87, 0x5e, 0x0d, 0x7c, 0x32, 0x11, 0xf2, 0x10, 0x9b, 0x08, 0x0e, 0xa2, 0x36, 0x86, 0xcd, - 0x43, 0x09, 0xa6, 0x37, 0x0c, 0xbb, 0x9f, 0x50, 0xc4, 0xe3, 0xe8, 0x7b, 0xd5, 0x08, 0x11, 0x3a, - 0x50, 0x1c, 0xfd, 0xc1, 0xf4, 0xd2, 0x17, 0xcc, 0x77, 0x33, 0x70, 0x7c, 0x19, 0x1b, 0xd8, 0xd2, - 0x5b, 0xb4, 0x06, 0x9e, 0x24, 0xee, 0xe4, 0x25, 0xf1, 0x18, 0x8e, 0xf3, 0x7e, 0x7f, 0xf0, 0x12, - 0x78, 0x95, 0x2f, 0x81, 0xbb, 0x39, 0x09, 0xdc, 0x24, 0x48, 0x67, 0x0c, 0xf7, 0xa1, 0x4f, 0xc1, - 0x4c, 0xd5, 0x74, 0xf4, 0x4d, 0xbd, 0x45, 0x7d, 0xd0, 0x5e, 0x2a, 0x43, 0x76, 0x55, 0xb7, 0x1d, - 0x54, 0x0c, 0xba, 0x93, 0x6b, 0x60, 0x5a, 0x37, 0x5a, 0x9d, 0xdd, 0x36, 0x56, 0xb1, 0x46, 0xfb, - 0x95, 0x49, 0x35, 0x9c, 0x14, 0x6c, 0xed, 0xbb, 0x6c, 0xc9, 0xde, 0xd6, 0xfe, 0xa7, 0x85, 0x97, - 0x61, 0xc2, 0x2c, 0x90, 0x80, 0x94, 0x11, 0x76, 0x57, 0x11, 0x66, 0x8d, 0x50, 0x56, 0xcf, 0x60, - 0xef, 0xbd, 0x50, 0x20, 0x4c, 0x4e, 0xe5, 0xff, 0x40, 0xef, 0x13, 0x6a, 0xac, 0x83, 0x18, 0x4a, - 0x86, 0xcc, 0xd2, 0x10, 0x93, 0x64, 0x05, 0xe6, 0x2a, 0xd5, 0x46, 0x59, 0xad, 0x16, 0x57, 0x59, - 0x16, 0x19, 0x7d, 0x5f, 0x82, 0x9c, 0x8a, 0xbb, 0x9d, 0x4b, 0xe1, 0x88, 0xd1, 0xcc, 0x51, 0x3c, - 0xe3, 0x3b, 0x8a, 0x2b, 0x4b, 0x00, 0x5a, 0xcb, 0x2d, 0x98, 0x5c, 0xa9, 0x25, 0xf5, 0x8d, 0x63, - 0xca, 0x55, 0xb0, 0xe8, 0xe7, 0x56, 0x43, 0x7f, 0xa2, 0x87, 0x84, 0x77, 0x8e, 0x38, 0x6a, 0x84, - 0xc3, 0x88, 0x3e, 0xe1, 0xfd, 0x42, 0x9b, 0x3d, 0x03, 0xc9, 0x1d, 0x8e, 0xf8, 0xbf, 0x22, 0x41, - 0xb6, 0xe1, 0xf6, 0x96, 0xa1, 0x8e, 0xf3, 0x53, 0xc3, 0xe9, 0xb8, 0x4b, 0x26, 0x42, 0xc7, 0xef, - 0x82, 0x99, 0xb0, 0xc6, 0x32, 0x57, 0x89, 0x58, 0x15, 0xe7, 0x7e, 0x18, 0x46, 0xc3, 0xfb, 0xb0, - 0x73, 0x38, 0x22, 0xfe, 0xc4, 0x63, 0x01, 0xd6, 0xf0, 0xce, 0x79, 0x6c, 0xd9, 0xdb, 0x7a, 0x17, - 0xfd, 0x9d, 0x0c, 0x53, 0xcb, 0xd8, 0xa9, 0x3b, 0x9a, 0xb3, 0x6b, 0xf7, 0x6c, 0x77, 0x1a, 0x66, - 0x49, 0x6b, 0x6d, 0x63, 0xd6, 0x1d, 0x79, 0xaf, 0xe8, 0x5d, 0xb2, 0xa8, 0x3f, 0x51, 0x50, 0xce, - 0xbc, 0x5f, 0x46, 0x04, 0x26, 0x8f, 0x83, 0x6c, 0x5b, 0x73, 0x34, 0x86, 0xc5, 0x15, 0x3d, 0x58, - 0x04, 0x84, 0x54, 0x92, 0x0d, 0xfd, 0xb6, 0x24, 0xe2, 0x50, 0x24, 0x50, 0x7e, 0x32, 0x10, 0xde, - 0x97, 0x19, 0x02, 0x85, 0x63, 0x30, 0x5b, 0xad, 0x35, 0x9a, 0xab, 0xb5, 0xe5, 0xe5, 0xb2, 0x9b, - 0x5a, 0x90, 0x95, 0x93, 0xa0, 0xac, 0x17, 0xef, 0x5b, 0x2b, 0x57, 0x1b, 0xcd, 0x6a, 0x6d, 0xb1, - 0xcc, 0xfe, 0xcc, 0x2a, 0x47, 0x61, 0xba, 0x54, 0x2c, 0xad, 0x78, 0x09, 0x39, 0xe5, 0x14, 0x1c, - 0x5f, 0x2b, 0xaf, 0x2d, 0x94, 0xd5, 0xfa, 0x4a, 0x65, 0xbd, 0xe9, 0x92, 0x59, 0xaa, 0x6d, 0x54, - 0x17, 0x0b, 0x79, 0x05, 0xc1, 0xc9, 0xd0, 0x97, 0x73, 0x6a, 0xad, 0xba, 0xdc, 0xac, 0x37, 0x8a, - 0x8d, 0x72, 0x61, 0x42, 0xb9, 0x0c, 0x8e, 0x96, 0x8a, 0x55, 0x92, 0xbd, 0x54, 0xab, 0x56, 0xcb, - 0xa5, 0x46, 0x61, 0x12, 0xfd, 0x7b, 0x16, 0xa6, 0x2b, 0x76, 0x55, 0xdb, 0xc1, 0x67, 0xb5, 0x8e, - 0xde, 0x46, 0xcf, 0x0f, 0xcd, 0x3c, 0xae, 0x83, 0x59, 0x8b, 0x3e, 0xe2, 0x76, 0x43, 0xc7, 0x14, - 0xcd, 0x59, 0x95, 0x4f, 0x74, 0xe7, 0xe4, 0x06, 0x21, 0xe0, 0xcd, 0xc9, 0xe9, 0x9b, 0xb2, 0x00, - 0x40, 0x9f, 0x1a, 0xc1, 0xe5, 0xae, 0x67, 0x7a, 0x5b, 0x93, 0xb6, 0x83, 0x6d, 0x6c, 0xed, 0xe9, - 0x2d, 0xec, 0xe5, 0x54, 0x43, 0x7f, 0xa1, 0xaf, 0xca, 0xa2, 0xfb, 0x8b, 0x21, 0x50, 0x43, 0xd5, - 0x89, 0xe8, 0x0d, 0x7f, 0x51, 0x16, 0xd9, 0x1d, 0x14, 0x22, 0x99, 0x4c, 0x53, 0x5e, 0x28, 0x0d, - 0xb7, 0x6c, 0xdb, 0xa8, 0xd5, 0x9a, 0xf5, 0x95, 0x9a, 0xda, 0x28, 0xc8, 0xca, 0x0c, 0x4c, 0xba, - 0xaf, 0xab, 0xb5, 0xea, 0x72, 0x21, 0xab, 0x9c, 0x80, 0x63, 0x2b, 0xc5, 0x7a, 0xb3, 0x52, 0x3d, - 0x5b, 0x5c, 0xad, 0x2c, 0x36, 0x4b, 0x2b, 0x45, 0xb5, 0x5e, 0xc8, 0x29, 0x57, 0xc0, 0x89, 0x46, - 0xa5, 0xac, 0x36, 0x97, 0xca, 0xc5, 0xc6, 0x86, 0x5a, 0xae, 0x37, 0xab, 0xb5, 0x66, 0xb5, 0xb8, - 0x56, 0x2e, 0xe4, 0xdd, 0xe6, 0x4f, 0x3e, 0x05, 0x6a, 0x33, 0xb1, 0x5f, 0x19, 0x27, 0x23, 0x94, - 0x71, 0xaa, 0x57, 0x19, 0x21, 0xac, 0x56, 0x6a, 0xb9, 0x5e, 0x56, 0xcf, 0x96, 0x0b, 0xd3, 0xfd, - 0x74, 0x6d, 0x46, 0x39, 0x0e, 0x05, 0x97, 0x87, 0x66, 0xa5, 0xee, 0xe5, 0x5c, 0x2c, 0xcc, 0xa2, - 0x8f, 0xe7, 0xe1, 0xa4, 0x8a, 0xb7, 0x74, 0xdb, 0xc1, 0xd6, 0xba, 0x76, 0x69, 0x07, 0x1b, 0x8e, - 0xd7, 0xc9, 0xff, 0x4b, 0x62, 0x65, 0x5c, 0x83, 0xd9, 0x2e, 0xa5, 0xb1, 0x86, 0x9d, 0x6d, 0xb3, - 0xcd, 0x46, 0xe1, 0xc7, 0x44, 0xf6, 0x1c, 0xf3, 0xeb, 0xe1, 0xec, 0x2a, 0xff, 0x77, 0x48, 0xb7, - 0xe5, 0x18, 0xdd, 0xce, 0x0e, 0xa3, 0xdb, 0xca, 0x55, 0x30, 0xb5, 0x6b, 0x63, 0xab, 0xbc, 0xa3, - 0xe9, 0x1d, 0xef, 0x72, 0x4e, 0x3f, 0x01, 0xbd, 0x3d, 0x2b, 0x7a, 0x62, 0x25, 0x54, 0x97, 0xfe, - 0x62, 0x8c, 0xe8, 0x5b, 0x4f, 0x03, 0xb0, 0xca, 0x6e, 0x58, 0x1d, 0xa6, 0xac, 0xa1, 0x14, 0x97, - 0xbf, 0xf3, 0x7a, 0xa7, 0xa3, 0x1b, 0x5b, 0xfe, 0xbe, 0x7f, 0x90, 0x80, 0x5e, 0x28, 0x8b, 0x9c, - 0x60, 0x49, 0xca, 0x5b, 0xb2, 0xd6, 0xf4, 0x90, 0x34, 0xe6, 0x7e, 0x77, 0x7f, 0xd3, 0xc9, 0x2b, - 0x05, 0x98, 0x21, 0x69, 0xac, 0x05, 0x16, 0x26, 0xdc, 0x3e, 0xd8, 0x23, 0xb7, 0x56, 0x6e, 0xac, - 0xd4, 0x16, 0xfd, 0x6f, 0x93, 0x2e, 0x49, 0x97, 0x99, 0x62, 0xf5, 0x3e, 0xd2, 0x1a, 0xa7, 0x94, - 0x47, 0xc1, 0x15, 0xa1, 0x0e, 0xbb, 0xb8, 0xaa, 0x96, 0x8b, 0x8b, 0xf7, 0x35, 0xcb, 0x4f, 0xaf, - 0xd4, 0x1b, 0x75, 0xbe, 0x71, 0x79, 0xed, 0x68, 0xda, 0xe5, 0xb7, 0xbc, 0x56, 0xac, 0xac, 0xb2, - 0xfe, 0x7d, 0xa9, 0xa6, 0xae, 0x15, 0x1b, 0x85, 0x19, 0xf4, 0x32, 0x19, 0x0a, 0xcb, 0xd8, 0x59, - 0x37, 0x2d, 0x47, 0xeb, 0xac, 0xea, 0xc6, 0x85, 0x0d, 0xab, 0xc3, 0x4d, 0x36, 0x85, 0xc3, 0x74, - 0xf0, 0x43, 0x24, 0x47, 0x30, 0x7a, 0x47, 0xbc, 0x4b, 0xb2, 0x05, 0xca, 0x14, 0x24, 0xa0, 0x67, - 0x4a, 0x22, 0xcb, 0xdd, 0xe2, 0xa5, 0x26, 0xd3, 0x93, 0x67, 0x8d, 0x7b, 0x7c, 0xee, 0x83, 0x5a, - 0x1e, 0x3d, 0x37, 0x0b, 0x93, 0x4b, 0xba, 0xa1, 0x75, 0xf4, 0x67, 0x70, 0xf1, 0x4b, 0x83, 0x3e, - 0x26, 0x13, 0xd3, 0xc7, 0x48, 0x43, 0x8d, 0x9f, 0xbf, 0x2a, 0x8b, 0x2e, 0x2f, 0x84, 0x64, 0xef, - 0x31, 0x19, 0x31, 0x78, 0x7e, 0x48, 0x12, 0x59, 0x5e, 0x18, 0x4c, 0x2f, 0x19, 0x86, 0x9f, 0xfc, - 0xe1, 0xb0, 0xb1, 0x7a, 0xda, 0xf7, 0x64, 0x3f, 0x55, 0x98, 0x42, 0x7f, 0x26, 0x03, 0x5a, 0xc6, - 0xce, 0x59, 0x6c, 0xf9, 0x53, 0x01, 0xd2, 0xeb, 0x33, 0x7b, 0x3b, 0xd4, 0x64, 0xdf, 0x1c, 0x06, - 0xf0, 0x1c, 0x0f, 0x60, 0x31, 0xa6, 0xf1, 0x44, 0x90, 0x8e, 0x68, 0xbc, 0x15, 0xc8, 0xdb, 0xe4, - 0x3b, 0x53, 0xb3, 0xc7, 0x47, 0x0f, 0x97, 0x84, 0x58, 0x98, 0x3a, 0x25, 0xac, 0x32, 0x02, 0xe8, - 0x7b, 0xfe, 0x24, 0xe8, 0xa7, 0x38, 0xed, 0x58, 0x3a, 0x30, 0xb3, 0xc9, 0xf4, 0xc5, 0x4a, 0x57, - 0x5d, 0xfa, 0xd9, 0x37, 0xe8, 0x43, 0x39, 0x38, 0xde, 0xaf, 0x3a, 0xe8, 0x77, 0x32, 0xdc, 0x0e, - 0x3b, 0x26, 0x43, 0x7e, 0x86, 0x6d, 0x20, 0xba, 0x2f, 0xca, 0x13, 0xe1, 0x84, 0xbf, 0x0c, 0xd7, - 0x30, 0xab, 0xf8, 0xa2, 0xdd, 0xc1, 0x8e, 0x83, 0x2d, 0x52, 0xb5, 0x49, 0xb5, 0xff, 0x47, 0xe5, - 0xc9, 0x70, 0xb9, 0x6e, 0xd8, 0x7a, 0x1b, 0x5b, 0x0d, 0xbd, 0x6b, 0x17, 0x8d, 0x76, 0x63, 0xd7, - 0x31, 0x2d, 0x5d, 0x63, 0x57, 0x49, 0x4e, 0xaa, 0x51, 0x9f, 0x95, 0x1b, 0xa1, 0xa0, 0xdb, 0x35, - 0xe3, 0xbc, 0xa9, 0x59, 0x6d, 0xdd, 0xd8, 0x5a, 0xd5, 0x6d, 0x87, 0x79, 0x00, 0xef, 0x4b, 0x47, - 0x7f, 0x2f, 0x8b, 0x1e, 0xa6, 0x1b, 0x00, 0x6b, 0x44, 0x87, 0xf2, 0x3c, 0x59, 0xe4, 0x78, 0x5c, - 0x32, 0xda, 0xc9, 0x94, 0xe5, 0x39, 0xe3, 0x36, 0x24, 0xfa, 0x8f, 0xe0, 0xa4, 0x6b, 0xa1, 0xe9, - 0x9e, 0x21, 0x70, 0xb6, 0xac, 0x56, 0x96, 0x2a, 0x65, 0xd7, 0xac, 0x38, 0x01, 0xc7, 0x82, 0x6f, - 0x8b, 0xf7, 0x35, 0xeb, 0xe5, 0x6a, 0xa3, 0x30, 0xe9, 0xf6, 0x53, 0x34, 0x79, 0xa9, 0x58, 0x59, - 0x2d, 0x2f, 0x36, 0x1b, 0x35, 0xf7, 0xcb, 0xe2, 0x70, 0xa6, 0x05, 0x7a, 0x30, 0x0b, 0x47, 0x89, - 0x6c, 0x2f, 0x11, 0xa9, 0xba, 0x42, 0xe9, 0xf1, 0xb5, 0xf5, 0x01, 0x9a, 0xa2, 0xe2, 0x45, 0x9f, - 0x15, 0xbe, 0x29, 0x33, 0x04, 0x61, 0x4f, 0x19, 0x11, 0x9a, 0xf1, 0x5d, 0x49, 0x24, 0x42, 0x85, - 0x30, 0xd9, 0x64, 0x4a, 0xf1, 0xaf, 0xe3, 0x1e, 0x71, 0xa2, 0xc1, 0x27, 0x56, 0x66, 0x89, 0xfc, - 0xfc, 0xf4, 0xf5, 0x8a, 0x4a, 0xd4, 0x61, 0x0e, 0x80, 0xa4, 0x10, 0x0d, 0xa2, 0x7a, 0xd0, 0x77, - 0xbc, 0x8a, 0xd2, 0x83, 0x62, 0xa9, 0x51, 0x39, 0x5b, 0x8e, 0xd2, 0x83, 0xcf, 0xc8, 0x30, 0xb9, - 0x8c, 0x1d, 0x77, 0x4e, 0x65, 0xa3, 0xa7, 0x08, 0xac, 0xff, 0xb8, 0x66, 0x4c, 0xc7, 0x6c, 0x69, - 0x1d, 0x7f, 0x19, 0x80, 0xbe, 0xa1, 0x67, 0x0f, 0x63, 0x82, 0x78, 0x45, 0x47, 0x8c, 0x57, 0x3f, - 0x09, 0x39, 0xc7, 0xfd, 0xcc, 0x96, 0xa1, 0x7f, 0x2c, 0x72, 0xb8, 0x72, 0x89, 0x2c, 0x6a, 0x8e, - 0xa6, 0xd2, 0xfc, 0xa1, 0xd1, 0x49, 0xd0, 0x76, 0x89, 0x60, 0xe4, 0x87, 0xd1, 0xfe, 0xfc, 0x5b, - 0x19, 0x4e, 0xd0, 0xf6, 0x51, 0xec, 0x76, 0xeb, 0x8e, 0x69, 0x61, 0x15, 0xb7, 0xb0, 0xde, 0x75, - 0x7a, 0xd6, 0xf7, 0x2c, 0x9a, 0xea, 0x6d, 0x36, 0xb3, 0x57, 0xf4, 0x06, 0x59, 0x34, 0x06, 0xf3, - 0xbe, 0xf6, 0xd8, 0x53, 0x5e, 0x44, 0x63, 0xff, 0x98, 0x24, 0x12, 0x55, 0x39, 0x21, 0xf1, 0x64, - 0x40, 0x7d, 0xf8, 0x10, 0x80, 0xf2, 0x56, 0x6e, 0xd4, 0x72, 0xa9, 0x5c, 0x59, 0x77, 0x07, 0x81, - 0xab, 0xe1, 0xca, 0xf5, 0x0d, 0xb5, 0xb4, 0x52, 0xac, 0x97, 0x9b, 0x6a, 0x79, 0xb9, 0x52, 0x6f, - 0x30, 0xa7, 0x2c, 0xfa, 0xd7, 0x84, 0x72, 0x15, 0x9c, 0xaa, 0x6f, 0x2c, 0xd4, 0x4b, 0x6a, 0x65, - 0x9d, 0xa4, 0xab, 0xe5, 0x6a, 0xf9, 0x1c, 0xfb, 0x3a, 0x89, 0x3e, 0x50, 0x80, 0x69, 0x77, 0x02, - 0x50, 0xa7, 0xf3, 0x02, 0xf4, 0xad, 0x2c, 0x4c, 0xab, 0xd8, 0x36, 0x3b, 0x7b, 0x64, 0x8e, 0x30, - 0xae, 0xa9, 0xc7, 0x77, 0x64, 0xd1, 0xf3, 0xdb, 0x21, 0x66, 0xe7, 0x43, 0x8c, 0x46, 0x4f, 0x34, - 0xb5, 0x3d, 0x4d, 0xef, 0x68, 0xe7, 0x59, 0x57, 0x33, 0xa9, 0x06, 0x09, 0xca, 0x3c, 0x28, 0xe6, - 0x45, 0x03, 0x5b, 0xf5, 0xd6, 0xc5, 0xb2, 0xb3, 0x5d, 0x6c, 0xb7, 0x2d, 0x6c, 0xdb, 0x6c, 0xf5, - 0xa2, 0xcf, 0x17, 0xe5, 0x06, 0x38, 0x4a, 0x52, 0x43, 0x99, 0xa9, 0x83, 0x4c, 0x6f, 0xb2, 0x9f, - 0xb3, 0x68, 0x5c, 0xf2, 0x72, 0xe6, 0x42, 0x39, 0x83, 0xe4, 0xf0, 0x71, 0x89, 0x3c, 0x7f, 0x4a, - 0xe7, 0x1a, 0x98, 0x36, 0xb4, 0x1d, 0x5c, 0x7e, 0xa0, 0xab, 0x5b, 0xd8, 0x26, 0x8e, 0x31, 0xb2, - 0x1a, 0x4e, 0x42, 0x1f, 0x12, 0x3a, 0x6f, 0x2e, 0x26, 0xb1, 0x64, 0xba, 0xbf, 0x3c, 0x84, 0xea, - 0xf7, 0xe9, 0x67, 0x64, 0xf4, 0x01, 0x19, 0x66, 0x18, 0x53, 0x45, 0xe3, 0x52, 0xa5, 0x8d, 0xae, - 0xe6, 0x8c, 0x5f, 0xcd, 0x4d, 0xf3, 0x8c, 0x5f, 0xf2, 0x82, 0x7e, 0x49, 0x16, 0x75, 0x77, 0xee, - 0x53, 0x71, 0x52, 0x46, 0xb4, 0xe3, 0xe8, 0xa6, 0xb9, 0xcb, 0x1c, 0x55, 0x27, 0x55, 0xfa, 0x92, - 0xe6, 0xa2, 0x1e, 0xfa, 0x7d, 0x21, 0x67, 0x6a, 0xc1, 0x6a, 0x1c, 0x12, 0x80, 0x9f, 0x90, 0x61, - 0x8e, 0x71, 0x55, 0x67, 0xe7, 0x7c, 0x84, 0x0e, 0xbc, 0xfd, 0xb2, 0xb0, 0x21, 0xd8, 0xa7, 0xfe, - 0xac, 0xa4, 0x47, 0x0c, 0x90, 0x1f, 0x11, 0x0a, 0x8e, 0x26, 0x5c, 0x91, 0x43, 0x82, 0xf2, 0x1d, - 0x59, 0x98, 0xde, 0xb0, 0xb1, 0xc5, 0xfc, 0xf6, 0xd1, 0x6b, 0xb3, 0x20, 0x2f, 0x63, 0x6e, 0x23, - 0xf5, 0x05, 0xc2, 0x1e, 0xbe, 0xe1, 0xca, 0x86, 0x88, 0xba, 0x36, 0x52, 0x04, 0x6c, 0xd7, 0xc3, - 0x1c, 0x15, 0x69, 0xd1, 0x71, 0x5c, 0x23, 0xd1, 0xf3, 0xa6, 0xed, 0x49, 0x1d, 0xc5, 0x56, 0x11, - 0x29, 0xcb, 0xcd, 0x52, 0x72, 0x79, 0x5a, 0xc5, 0x9b, 0x74, 0x3e, 0x9b, 0x55, 0x7b, 0x52, 0x95, - 0x5b, 0xe0, 0x32, 0xb3, 0x8b, 0xe9, 0xf9, 0x95, 0x50, 0xe6, 0x1c, 0xc9, 0xdc, 0xef, 0x13, 0xfa, - 0x96, 0x90, 0xaf, 0xae, 0xb8, 0x74, 0x92, 0xe9, 0x42, 0x77, 0x34, 0x26, 0xc9, 0x71, 0x28, 0xb8, - 0x39, 0xc8, 0xfe, 0x8b, 0x5a, 0xae, 0xd7, 0x56, 0xcf, 0x96, 0xfb, 0x2f, 0x63, 0xe4, 0xd0, 0x73, - 0x64, 0x98, 0x5a, 0xb0, 0x4c, 0xad, 0xdd, 0xd2, 0x6c, 0x07, 0x7d, 0x4f, 0x82, 0x99, 0x75, 0xed, - 0x52, 0xc7, 0xd4, 0xda, 0xc4, 0xbf, 0xbf, 0xa7, 0x2f, 0xe8, 0xd2, 0x4f, 0x5e, 0x5f, 0xc0, 0x5e, - 0xf9, 0x83, 0x81, 0xfe, 0xd1, 0xbd, 0x8c, 0xc8, 0x85, 0x9a, 0xfe, 0x36, 0x9f, 0xd4, 0x2f, 0x58, - 0xa9, 0xc7, 0xd7, 0x7c, 0x98, 0xa7, 0x08, 0x8b, 0xf2, 0x03, 0x62, 0xe1, 0x47, 0x45, 0x48, 0x1e, - 0xce, 0xae, 0xfc, 0x73, 0x27, 0x21, 0xbf, 0x88, 0x89, 0x15, 0xf7, 0x3f, 0x24, 0x98, 0xa8, 0x63, - 0x87, 0x58, 0x70, 0xb7, 0x71, 0x9e, 0xc2, 0x6d, 0x92, 0x21, 0x70, 0x62, 0xf7, 0xde, 0xdd, 0xc9, - 0x7a, 0xe8, 0xbc, 0x35, 0x79, 0x4e, 0xe0, 0x91, 0x48, 0xcb, 0x9d, 0x67, 0x65, 0x1e, 0xc8, 0x23, - 0x31, 0x96, 0x54, 0xfa, 0xbe, 0x56, 0xef, 0x92, 0x98, 0x6b, 0x55, 0xa8, 0xd7, 0x7b, 0x75, 0x58, - 0x3f, 0x63, 0xbd, 0xcd, 0x18, 0xf3, 0x31, 0xce, 0x51, 0x4f, 0x80, 0x09, 0x2a, 0x73, 0x6f, 0x3e, - 0xda, 0xeb, 0xa7, 0x40, 0x49, 0x90, 0xb3, 0xd7, 0x5e, 0x4e, 0x41, 0x17, 0xb5, 0xe8, 0xc2, 0xc7, - 0x12, 0x83, 0x60, 0xa6, 0x8a, 0x9d, 0x8b, 0xa6, 0x75, 0xa1, 0xee, 0x68, 0x0e, 0x46, 0xff, 0x2a, - 0x81, 0x5c, 0xc7, 0x4e, 0x38, 0xfa, 0x49, 0x15, 0x8e, 0xd1, 0x0a, 0xb1, 0x8c, 0xa4, 0xff, 0xa6, - 0x15, 0xb9, 0xa6, 0xaf, 0x10, 0x42, 0xf9, 0xd4, 0xfd, 0xbf, 0xa2, 0x5f, 0xef, 0x1b, 0xf4, 0x49, - 0xea, 0x33, 0x69, 0x60, 0x92, 0x09, 0x33, 0xe8, 0x2a, 0x58, 0x84, 0x9e, 0x7e, 0x50, 0xc8, 0xac, - 0x16, 0xa3, 0x79, 0x38, 0x5d, 0xc1, 0x47, 0xae, 0x80, 0x6c, 0x69, 0x5b, 0x73, 0xd0, 0x3b, 0x65, - 0x80, 0x62, 0xbb, 0xbd, 0x46, 0x7d, 0xc0, 0xc3, 0x0e, 0x69, 0x67, 0x60, 0xa6, 0xb5, 0xad, 0x05, - 0x77, 0x9b, 0xd0, 0xfe, 0x80, 0x4b, 0x53, 0x9e, 0x18, 0x38, 0x93, 0x53, 0xa9, 0xa2, 0x1e, 0x98, - 0xdc, 0x32, 0x18, 0x6d, 0xdf, 0xd1, 0x9c, 0x0f, 0x85, 0x19, 0x7b, 0x84, 0xce, 0xfd, 0x7d, 0x3e, - 0x60, 0x2f, 0x7a, 0x0e, 0xc7, 0x48, 0xfb, 0x07, 0x6c, 0x82, 0x84, 0x84, 0x27, 0xbd, 0xc5, 0x02, - 0x7a, 0xc4, 0xf3, 0x35, 0x96, 0xd0, 0xb5, 0x4a, 0xb9, 0xad, 0x7b, 0xa2, 0x65, 0x01, 0xb3, 0xd0, - 0x43, 0x99, 0x64, 0xf0, 0xc5, 0x0b, 0xee, 0x6e, 0x98, 0xc5, 0x6d, 0xdd, 0xc1, 0x5e, 0x2d, 0x99, - 0x00, 0xe3, 0x20, 0xe6, 0x7f, 0x40, 0xcf, 0x12, 0x0e, 0xba, 0x46, 0x04, 0xba, 0xbf, 0x46, 0x11, - 0xed, 0x4f, 0x2c, 0x8c, 0x9a, 0x18, 0xcd, 0xf4, 0xc1, 0x7a, 0xb6, 0x0c, 0x27, 0x1a, 0xe6, 0xd6, - 0x56, 0x07, 0x7b, 0x62, 0xc2, 0xd4, 0x3b, 0x13, 0x69, 0xa3, 0x84, 0x8b, 0xec, 0x04, 0x99, 0xf7, - 0xeb, 0xfe, 0x51, 0x32, 0xf7, 0x85, 0x3f, 0x31, 0x15, 0x3b, 0x8b, 0x22, 0xe2, 0xea, 0xcb, 0x67, - 0x04, 0x0a, 0x62, 0x01, 0x9f, 0x85, 0xc9, 0xa6, 0x0f, 0xc4, 0x17, 0x25, 0x98, 0xa5, 0x37, 0x57, - 0x7a, 0x0a, 0x7a, 0xef, 0x08, 0x01, 0x40, 0xdf, 0xcb, 0x88, 0xfa, 0xd9, 0x12, 0x99, 0x70, 0x9c, - 0x44, 0x88, 0x58, 0x2c, 0xa8, 0xca, 0x40, 0x72, 0xe9, 0x8b, 0xf6, 0x8f, 0x65, 0x98, 0x5e, 0xc6, - 0x5e, 0x4b, 0xb3, 0x13, 0xf7, 0x44, 0x67, 0x60, 0x86, 0x5c, 0xdf, 0x56, 0x63, 0xc7, 0x24, 0xe9, - 0xaa, 0x19, 0x97, 0xa6, 0x5c, 0x07, 0xb3, 0xe7, 0xf1, 0xa6, 0x69, 0xe1, 0x1a, 0x77, 0x96, 0x92, - 0x4f, 0x8c, 0x08, 0x4f, 0xc7, 0xc5, 0x41, 0x5b, 0xe0, 0xb1, 0xb9, 0x69, 0xbf, 0x30, 0x43, 0x55, - 0x89, 0x18, 0x73, 0x9e, 0x04, 0x93, 0x0c, 0x79, 0xcf, 0x4c, 0x8b, 0xeb, 0x17, 0xfd, 0xbc, 0xe8, - 0xf5, 0x3e, 0xa2, 0x65, 0x0e, 0xd1, 0xc7, 0x27, 0x61, 0x62, 0x2c, 0xf7, 0xbb, 0x17, 0x42, 0xe5, - 0x2f, 0x5c, 0xaa, 0xb4, 0x6d, 0xb4, 0x96, 0x0c, 0xd3, 0xd3, 0x00, 0x7e, 0xe3, 0xf0, 0xc2, 0x5a, - 0x84, 0x52, 0xf8, 0xc8, 0xf5, 0xb1, 0x07, 0xf5, 0x7a, 0xc5, 0x41, 0xd8, 0x19, 0x31, 0x30, 0x62, - 0x07, 0xfc, 0x44, 0x38, 0x49, 0x1f, 0x9d, 0x4f, 0xcb, 0x70, 0xc2, 0x3f, 0x7f, 0xb4, 0xaa, 0xd9, - 0x41, 0xbb, 0x2b, 0x25, 0x83, 0x88, 0x3b, 0xf0, 0xe1, 0x37, 0x96, 0x6f, 0x27, 0x1b, 0x33, 0xfa, - 0x72, 0x32, 0x5a, 0x74, 0x94, 0x9b, 0xe0, 0x98, 0xb1, 0xbb, 0xe3, 0x4b, 0x9d, 0xb4, 0x78, 0xd6, - 0xc2, 0xf7, 0x7f, 0x48, 0x32, 0x32, 0x89, 0x30, 0x3f, 0x96, 0x39, 0x25, 0x77, 0xa4, 0xeb, 0x71, - 0x89, 0x60, 0x44, 0xff, 0x9c, 0x49, 0xd4, 0xbb, 0x0d, 0x3e, 0xf3, 0x95, 0xa0, 0x97, 0x3a, 0xc4, - 0x03, 0x5f, 0x67, 0x26, 0x20, 0x57, 0xde, 0xe9, 0x3a, 0x97, 0xce, 0x3c, 0x1a, 0x66, 0xeb, 0x8e, - 0x85, 0xb5, 0x9d, 0xd0, 0xce, 0x80, 0x63, 0x5e, 0xc0, 0x86, 0xb7, 0x33, 0x40, 0x5e, 0x6e, 0xbf, - 0x0d, 0x26, 0x0c, 0xb3, 0xa9, 0xed, 0x3a, 0xdb, 0xca, 0xd5, 0xfb, 0x8e, 0xd4, 0x33, 0xf0, 0x6b, - 0x2c, 0x86, 0xd1, 0x57, 0xef, 0x20, 0x6b, 0xc3, 0x79, 0xc3, 0x2c, 0xee, 0x3a, 0xdb, 0x0b, 0x57, - 0x7d, 0xe2, 0x6f, 0x4e, 0x67, 0x3e, 0xf3, 0x37, 0xa7, 0x33, 0x5f, 0xf9, 0x9b, 0xd3, 0x99, 0x5f, - 0xfe, 0xda, 0xe9, 0x23, 0x9f, 0xf9, 0xda, 0xe9, 0x23, 0x5f, 0xfc, 0xda, 0xe9, 0x23, 0x3f, 0x25, - 0x75, 0xcf, 0x9f, 0xcf, 0x13, 0x2a, 0x4f, 0xf8, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x77, 0x3a, - 0x9d, 0xaf, 0x49, 0x08, 0x02, 0x00, + 0xfd, 0x20, 0xad, 0x1d, 0x7d, 0x52, 0xf6, 0x35, 0x66, 0x11, 0xb7, 0x3a, 0xba, 0x81, 0xd1, 0xdd, + 0x07, 0x54, 0x18, 0x7e, 0xd5, 0x47, 0x1c, 0x67, 0x56, 0x7e, 0x04, 0xce, 0xaf, 0x4a, 0x8e, 0x73, + 0x7f, 0x82, 0xff, 0x81, 0x9b, 0xff, 0x23, 0x32, 0x1c, 0x0b, 0x35, 0x44, 0x15, 0xef, 0x8c, 0x6c, + 0x25, 0xef, 0xe7, 0xc2, 0x6d, 0xb7, 0xc2, 0x63, 0xda, 0xcf, 0x9a, 0xde, 0xc7, 0x46, 0x04, 0xac, + 0x6f, 0xf4, 0x61, 0x5d, 0xe5, 0x60, 0x7d, 0xea, 0x10, 0x34, 0x93, 0x21, 0xfb, 0x3b, 0xa9, 0x22, + 0x7b, 0x05, 0x9c, 0x58, 0x2f, 0xaa, 0x8d, 0x4a, 0xa9, 0xb2, 0x5e, 0x74, 0xc7, 0xd1, 0xd0, 0x90, + 0x1d, 0x61, 0xae, 0xf3, 0xa0, 0xf7, 0xc5, 0xf7, 0x03, 0x59, 0xb8, 0xaa, 0x7f, 0x47, 0x5b, 0xda, + 0xd6, 0x8c, 0x2d, 0x8c, 0x74, 0x11, 0xa8, 0x17, 0x61, 0xa2, 0x45, 0xb2, 0x53, 0x9c, 0xc3, 0x5b, + 0x37, 0x31, 0x7d, 0x39, 0x2d, 0x41, 0xf5, 0x7e, 0x45, 0xef, 0x08, 0x2b, 0x44, 0x83, 0x57, 0x88, + 0xbb, 0xe2, 0xc1, 0xdb, 0xc7, 0x77, 0x84, 0x6e, 0x7c, 0xc6, 0xd7, 0x8d, 0x73, 0x9c, 0x6e, 0x94, + 0x0e, 0x46, 0x3e, 0x99, 0x9a, 0xfc, 0xd1, 0xa3, 0xa1, 0x03, 0x88, 0xd4, 0x26, 0x3d, 0x7a, 0x54, + 0xe8, 0xdb, 0xdd, 0xbf, 0x42, 0x86, 0xfc, 0x22, 0xee, 0x60, 0xd1, 0x95, 0xc8, 0x6f, 0x49, 0xa2, + 0x1b, 0x22, 0x14, 0x06, 0x4a, 0x3b, 0x7a, 0x75, 0xc4, 0xd1, 0x77, 0xb0, 0xed, 0x68, 0x3b, 0x5d, + 0x22, 0x6a, 0x59, 0x0d, 0x12, 0xd0, 0xcf, 0x4b, 0x22, 0xdb, 0x25, 0x31, 0xc5, 0xfc, 0xc7, 0x58, + 0x53, 0xfc, 0x9c, 0x04, 0x93, 0x75, 0xec, 0xd4, 0xac, 0x36, 0xb6, 0x50, 0x3d, 0xc0, 0xe8, 0x1a, + 0x98, 0x26, 0xa0, 0xb8, 0xd3, 0x4c, 0x1f, 0xa7, 0x70, 0x92, 0x72, 0x3d, 0xcc, 0xf9, 0xaf, 0xe4, + 0x77, 0xd6, 0x8d, 0xf7, 0xa4, 0xa2, 0x7f, 0xcc, 0x88, 0xee, 0xe2, 0xb2, 0x25, 0x43, 0xc6, 0x4d, + 0x44, 0x2b, 0x15, 0xdb, 0x91, 0x8d, 0x25, 0x95, 0xfe, 0x46, 0xd7, 0xdb, 0x24, 0x80, 0x0d, 0xc3, + 0xf6, 0xe4, 0xfa, 0xf8, 0x04, 0x72, 0x45, 0xff, 0x9c, 0x49, 0x36, 0x8b, 0x09, 0xca, 0x89, 0x90, + 0xd8, 0x6b, 0x13, 0xac, 0x2d, 0x44, 0x12, 0x4b, 0x5f, 0x66, 0x5f, 0x9d, 0x83, 0xfc, 0x39, 0xad, + 0xd3, 0xc1, 0x0e, 0xfa, 0x9a, 0x04, 0xf9, 0x92, 0x85, 0x35, 0x07, 0x87, 0x45, 0x87, 0x60, 0xd2, + 0x32, 0x4d, 0x67, 0x5d, 0x73, 0xb6, 0x99, 0xdc, 0xfc, 0x77, 0xe6, 0x30, 0xf0, 0xa6, 0x70, 0xf7, + 0x71, 0x37, 0x2f, 0xba, 0x1f, 0xe5, 0x6a, 0x4b, 0x0b, 0x9a, 0xa7, 0x85, 0x44, 0xf4, 0x1f, 0x08, + 0x26, 0x77, 0x0c, 0xbc, 0x63, 0x1a, 0x7a, 0xcb, 0xb3, 0x39, 0xbd, 0x77, 0xf4, 0x21, 0x5f, 0xa6, + 0x0b, 0x9c, 0x4c, 0xe7, 0x85, 0x4b, 0x49, 0x26, 0xd0, 0xfa, 0x10, 0xbd, 0xc7, 0xd5, 0x70, 0x25, + 0xed, 0x0c, 0x9a, 0x8d, 0x5a, 0xb3, 0xa4, 0x96, 0x8b, 0x8d, 0x72, 0x73, 0xb5, 0x56, 0x2a, 0xae, + 0x36, 0xd5, 0xf2, 0x7a, 0xad, 0x80, 0xd1, 0xdf, 0x49, 0xae, 0x70, 0x5b, 0xe6, 0x1e, 0xb6, 0xd0, + 0xb2, 0x90, 0x9c, 0xe3, 0x64, 0xc2, 0x30, 0xf8, 0x55, 0x61, 0xa7, 0x0d, 0x26, 0x1d, 0xc6, 0x41, + 0x84, 0xf2, 0x7e, 0x58, 0xa8, 0xb9, 0xc7, 0x92, 0x7a, 0x14, 0x48, 0xfa, 0x7f, 0x4b, 0x30, 0x51, + 0x32, 0x8d, 0x3d, 0x6c, 0x39, 0xe1, 0xf9, 0x4e, 0x58, 0x9a, 0x19, 0x5e, 0x9a, 0xee, 0x20, 0x89, + 0x0d, 0xc7, 0x32, 0xbb, 0xde, 0x84, 0xc7, 0x7b, 0x45, 0xaf, 0x4f, 0x2a, 0x61, 0x56, 0x72, 0xf4, + 0xc2, 0x67, 0xff, 0x82, 0x38, 0xf6, 0xe4, 0x9e, 0x06, 0xf0, 0xea, 0x24, 0xb8, 0xf4, 0x67, 0x20, + 0xfd, 0x2e, 0xe5, 0xcb, 0x32, 0xcc, 0xd2, 0xc6, 0x57, 0xc7, 0xc4, 0x42, 0x43, 0xb5, 0xf0, 0x92, + 0x63, 0x8f, 0xf0, 0x57, 0x8e, 0x70, 0xe2, 0xcf, 0x6b, 0xdd, 0xae, 0xbf, 0xfc, 0xbc, 0x72, 0x44, + 0x65, 0xef, 0x54, 0xcd, 0x17, 0xf2, 0x90, 0xd5, 0x76, 0x9d, 0x6d, 0xf4, 0x7d, 0xe1, 0xc9, 0x27, + 0xd7, 0x19, 0x30, 0x7e, 0x22, 0x20, 0x39, 0x0e, 0x39, 0xc7, 0xbc, 0x80, 0x3d, 0x39, 0xd0, 0x17, + 0x17, 0x0e, 0xad, 0xdb, 0x6d, 0x90, 0x0f, 0x0c, 0x0e, 0xef, 0xdd, 0xb5, 0x75, 0xb4, 0x56, 0xcb, + 0xdc, 0x35, 0x9c, 0x8a, 0xb7, 0x04, 0x1d, 0x24, 0xa0, 0x2f, 0x66, 0x44, 0x26, 0xb3, 0x02, 0x0c, + 0x26, 0x83, 0xec, 0xfc, 0x10, 0x4d, 0x69, 0x1e, 0x6e, 0x2c, 0xae, 0xaf, 0x37, 0x1b, 0xb5, 0xfb, + 0xca, 0xd5, 0xc0, 0xf0, 0x6c, 0x56, 0xaa, 0xcd, 0xc6, 0x4a, 0xb9, 0x59, 0xda, 0x50, 0xc9, 0x3a, + 0x61, 0xb1, 0x54, 0xaa, 0x6d, 0x54, 0x1b, 0x05, 0x8c, 0xde, 0x2c, 0xc1, 0x4c, 0xa9, 0x63, 0xda, + 0x3e, 0xc2, 0x57, 0x07, 0x08, 0xfb, 0x62, 0xcc, 0x84, 0xc4, 0x88, 0xfe, 0x2d, 0x23, 0xea, 0x74, + 0xe0, 0x09, 0x24, 0x44, 0x3e, 0xa2, 0x97, 0x7a, 0xbd, 0x90, 0xd3, 0xc1, 0x60, 0x7a, 0xe9, 0x37, + 0x89, 0x2f, 0xdc, 0x05, 0x13, 0x45, 0xaa, 0x18, 0xe8, 0xaf, 0x33, 0x90, 0x2f, 0x99, 0xc6, 0xa6, + 0xbe, 0xe5, 0x1a, 0x73, 0xd8, 0xd0, 0xce, 0x77, 0xf0, 0xa2, 0xe6, 0x68, 0x7b, 0x3a, 0xbe, 0x48, + 0x2a, 0x30, 0xa9, 0xf6, 0xa4, 0xba, 0x4c, 0xb1, 0x14, 0x7c, 0x7e, 0x77, 0x8b, 0x30, 0x35, 0xa9, + 0x86, 0x93, 0x94, 0xa7, 0xc2, 0xe5, 0xf4, 0x75, 0xdd, 0xc2, 0x16, 0xee, 0x60, 0xcd, 0xc6, 0xee, + 0xb4, 0xc8, 0xc0, 0x1d, 0xa2, 0xb4, 0x93, 0x6a, 0xd4, 0x67, 0xe5, 0x0c, 0xcc, 0xd0, 0x4f, 0xc4, + 0x14, 0xb1, 0x89, 0x1a, 0x4f, 0xaa, 0x5c, 0x9a, 0xf2, 0x04, 0xc8, 0xe1, 0x07, 0x1d, 0x4b, 0x3b, + 0xd5, 0x26, 0x78, 0x5d, 0x3e, 0x4f, 0xbd, 0x0e, 0xe7, 0x3d, 0xaf, 0xc3, 0xf9, 0x3a, 0xf1, 0x49, + 0x54, 0x69, 0x2e, 0xf4, 0xc9, 0x49, 0xdf, 0x90, 0x78, 0xb3, 0x1c, 0x28, 0x86, 0x02, 0x59, 0x43, + 0xdb, 0xc1, 0x4c, 0x2f, 0xc8, 0xb3, 0x72, 0x23, 0x1c, 0xd5, 0xf6, 0x34, 0x47, 0xb3, 0x56, 0xcd, + 0x96, 0xd6, 0x21, 0x83, 0x9f, 0xd7, 0xf2, 0x7b, 0x3f, 0x90, 0x1d, 0x21, 0xc7, 0xb4, 0x30, 0xc9, + 0xe5, 0xed, 0x08, 0x79, 0x09, 0x2e, 0x75, 0xbd, 0x65, 0x1a, 0x84, 0x7f, 0x59, 0x25, 0xcf, 0xae, + 0x54, 0xda, 0xba, 0xed, 0x56, 0x84, 0x50, 0xa9, 0xd2, 0xad, 0x8d, 0xfa, 0x25, 0xa3, 0x45, 0x76, + 0x83, 0x26, 0xd5, 0xa8, 0xcf, 0xca, 0x02, 0x4c, 0xb3, 0x8d, 0x90, 0x35, 0x57, 0xaf, 0xf2, 0x44, + 0xaf, 0xae, 0xe1, 0x7d, 0xba, 0x28, 0x9e, 0xf3, 0xd5, 0x20, 0x9f, 0x1a, 0xfe, 0x49, 0xb9, 0x07, + 0xae, 0x64, 0xaf, 0xa5, 0x5d, 0xdb, 0x31, 0x77, 0x28, 0xe8, 0x4b, 0x7a, 0x87, 0xd6, 0x60, 0x82, + 0xd4, 0x20, 0x2e, 0x8b, 0x72, 0x2b, 0x1c, 0xef, 0x5a, 0x78, 0x13, 0x5b, 0xf7, 0x6b, 0x3b, 0xbb, + 0x0f, 0x36, 0x2c, 0xcd, 0xb0, 0xbb, 0xa6, 0xe5, 0x9c, 0x9a, 0x24, 0xcc, 0xf7, 0xfd, 0xa6, 0xdc, + 0x04, 0xc7, 0x1e, 0xb0, 0x4d, 0xa3, 0xd8, 0xd5, 0x57, 0x75, 0xdb, 0xc1, 0x46, 0xb1, 0xdd, 0xb6, + 0x4e, 0x4d, 0x91, 0xb2, 0xf6, 0x7f, 0x60, 0xdd, 0xea, 0x24, 0xe4, 0xa9, 0xb0, 0xd1, 0xf3, 0x73, + 0xc2, 0xce, 0x9f, 0xac, 0xfa, 0xb1, 0xc6, 0xdc, 0x2d, 0x30, 0xc1, 0xfa, 0x43, 0x02, 0xeb, 0xf4, + 0xad, 0x27, 0x7b, 0x56, 0x21, 0x18, 0x15, 0xd5, 0xcb, 0xa6, 0x3c, 0x09, 0xf2, 0x2d, 0x22, 0x04, + 0x82, 0xf0, 0xf4, 0xad, 0x57, 0xf6, 0x2f, 0x94, 0x64, 0x51, 0x59, 0x56, 0xf4, 0x17, 0xb2, 0x90, + 0xbf, 0x68, 0x1c, 0xc7, 0xc9, 0xfa, 0x80, 0x6f, 0x48, 0x43, 0x74, 0xb2, 0x37, 0xc1, 0x0d, 0xac, + 0x07, 0x65, 0xd6, 0xca, 0x62, 0x73, 0x61, 0xc3, 0x9b, 0x3a, 0xba, 0x36, 0x4c, 0xbd, 0x51, 0x54, + 0xdd, 0x79, 0xff, 0xa2, 0x3b, 0xe5, 0xbc, 0x11, 0xae, 0x1f, 0x90, 0xbb, 0xdc, 0x68, 0x56, 0x8b, + 0x6b, 0xe5, 0xc2, 0x26, 0x6f, 0x09, 0xd5, 0x1b, 0xb5, 0xf5, 0xa6, 0xba, 0x51, 0xad, 0x56, 0xaa, + 0xcb, 0x94, 0x98, 0x6b, 0x40, 0x9e, 0x0c, 0x32, 0x9c, 0x53, 0x2b, 0x8d, 0x72, 0xb3, 0x54, 0xab, + 0x2e, 0x55, 0x96, 0x0b, 0xfa, 0x20, 0x33, 0xea, 0x01, 0xe5, 0x1a, 0xb8, 0x8a, 0xe3, 0xa4, 0x52, + 0xab, 0xba, 0xf3, 0xe0, 0x52, 0xb1, 0x5a, 0x2a, 0xbb, 0x93, 0xde, 0x0b, 0x0a, 0x82, 0x13, 0x94, + 0x5c, 0x73, 0xa9, 0xb2, 0x1a, 0xde, 0xba, 0xfa, 0x78, 0x46, 0x39, 0x05, 0x97, 0x85, 0xbf, 0x55, + 0xaa, 0x67, 0x8b, 0xab, 0x95, 0xc5, 0xc2, 0x27, 0x32, 0xca, 0x75, 0x70, 0x35, 0xf7, 0x17, 0xdd, + 0x85, 0x6a, 0x56, 0x16, 0x9b, 0x6b, 0x95, 0xfa, 0x5a, 0xb1, 0x51, 0x5a, 0x29, 0x7c, 0x92, 0xcc, + 0x2e, 0x7c, 0x73, 0x39, 0xe4, 0xc4, 0xf9, 0xa2, 0xb0, 0x05, 0x50, 0xe4, 0x15, 0xf5, 0xf1, 0x7d, + 0x61, 0x8f, 0xb7, 0x78, 0x3f, 0xea, 0x8f, 0x25, 0x8b, 0x9c, 0x0a, 0xdd, 0x92, 0x80, 0x56, 0x32, + 0x1d, 0x6a, 0x0c, 0xa1, 0x42, 0xd7, 0xc0, 0x55, 0xd5, 0x32, 0x45, 0x4a, 0x2d, 0x97, 0x6a, 0x67, + 0xcb, 0x6a, 0xf3, 0x5c, 0x71, 0x75, 0xb5, 0xdc, 0x68, 0x2e, 0x55, 0xd4, 0x7a, 0xa3, 0xb0, 0x89, + 0xfe, 0x59, 0xf2, 0xd7, 0x7e, 0x42, 0xd2, 0xfa, 0x6b, 0x29, 0x69, 0xb3, 0x8e, 0x5d, 0xe3, 0xf9, + 0x31, 0xc8, 0xdb, 0x8e, 0xe6, 0xec, 0xda, 0xac, 0x55, 0x3f, 0xa6, 0x7f, 0xab, 0x9e, 0xaf, 0x93, + 0x4c, 0x2a, 0xcb, 0x8c, 0xfe, 0x22, 0x93, 0xa4, 0x99, 0x8e, 0x60, 0xf9, 0x47, 0x1f, 0x42, 0xc4, + 0xa7, 0x01, 0x79, 0xda, 0x5e, 0xa9, 0x37, 0x8b, 0xab, 0x6a, 0xb9, 0xb8, 0x78, 0xbf, 0xbf, 0xe8, + 0x83, 0x95, 0x13, 0x70, 0x6c, 0xa3, 0x5a, 0x5c, 0x58, 0x2d, 0x93, 0xe6, 0x52, 0xab, 0x56, 0xcb, + 0x25, 0x57, 0xee, 0x3f, 0x4f, 0xb6, 0x58, 0x5c, 0x7b, 0x9b, 0xf0, 0xed, 0xda, 0x44, 0x21, 0xf9, + 0x7f, 0x5d, 0xd8, 0x13, 0x29, 0xd0, 0xb0, 0x30, 0xad, 0xd1, 0xe2, 0xf0, 0x45, 0x21, 0xe7, 0x23, + 0x21, 0x4e, 0x92, 0xe1, 0xf1, 0x9f, 0x87, 0xc0, 0xe3, 0x04, 0x1c, 0x0b, 0xe3, 0x41, 0x9c, 0x90, + 0xa2, 0x61, 0x78, 0xfe, 0x14, 0xe4, 0xeb, 0xb8, 0x83, 0x5b, 0x0e, 0x7a, 0x44, 0x0a, 0x4c, 0x8f, + 0x39, 0x90, 0x7c, 0xa7, 0x17, 0x49, 0x6f, 0x73, 0x93, 0x6d, 0xa9, 0x67, 0xb2, 0x1d, 0x63, 0x34, + 0xc8, 0x89, 0x8c, 0x86, 0x6c, 0x0a, 0x46, 0x43, 0x6e, 0x78, 0xa3, 0x21, 0x9f, 0xd4, 0x68, 0x98, + 0x88, 0x35, 0x1a, 0xd0, 0x6b, 0xf3, 0x49, 0xfb, 0x14, 0x0a, 0xcc, 0xe1, 0x9a, 0x0a, 0xff, 0x2b, + 0x9b, 0xa4, 0x0f, 0xea, 0xcb, 0x71, 0x32, 0x9d, 0xff, 0xbe, 0x9c, 0xc2, 0xd2, 0x86, 0x72, 0x2d, + 0x5c, 0x1d, 0xbc, 0x37, 0xcb, 0x4f, 0xaf, 0xd4, 0x1b, 0x75, 0x62, 0x1f, 0x94, 0x6a, 0xaa, 0xba, + 0xb1, 0x4e, 0xd7, 0xa7, 0x4f, 0x82, 0x12, 0x50, 0x51, 0x37, 0xaa, 0xd4, 0x1a, 0xd8, 0xe2, 0xa9, + 0x2f, 0x55, 0xaa, 0x8b, 0x4d, 0xbf, 0x85, 0x55, 0x97, 0x6a, 0x85, 0x6d, 0x77, 0x3a, 0x18, 0xa2, + 0xee, 0x0e, 0xe7, 0xac, 0x84, 0x62, 0x75, 0xb1, 0xb9, 0x56, 0x2d, 0xaf, 0xd5, 0xaa, 0x95, 0x12, + 0x49, 0xaf, 0x97, 0x1b, 0x05, 0xdd, 0x1d, 0x96, 0x7a, 0xec, 0x8f, 0x7a, 0xb9, 0xa8, 0x96, 0x56, + 0xca, 0x2a, 0x2d, 0xf2, 0x01, 0xe5, 0x7a, 0x38, 0x53, 0xac, 0xd6, 0x1a, 0x6e, 0x4a, 0xb1, 0x7a, + 0x7f, 0xe3, 0xfe, 0xf5, 0x72, 0x73, 0x5d, 0xad, 0x95, 0xca, 0xf5, 0xba, 0xdb, 0xaa, 0x99, 0xb5, + 0x52, 0xe8, 0x28, 0x77, 0xc1, 0xed, 0x21, 0xd6, 0xca, 0x0d, 0xb2, 0x19, 0xba, 0x56, 0x23, 0xfe, + 0x30, 0x8b, 0xe5, 0xe6, 0x4a, 0xb1, 0xde, 0xac, 0x54, 0x4b, 0xb5, 0xb5, 0xf5, 0x62, 0xa3, 0xe2, + 0x36, 0xfe, 0x75, 0xb5, 0xd6, 0xa8, 0x35, 0xcf, 0x96, 0xd5, 0x7a, 0xa5, 0x56, 0x2d, 0x18, 0x6e, + 0x95, 0x43, 0xbd, 0x85, 0xd7, 0x6b, 0x9b, 0xca, 0x55, 0x70, 0xca, 0x4b, 0x5f, 0xad, 0xb9, 0x82, + 0x0e, 0xd9, 0x2f, 0xdd, 0x54, 0xed, 0x97, 0x7f, 0x95, 0x20, 0x5b, 0x77, 0xcc, 0x2e, 0xfa, 0xd1, + 0xa0, 0x3b, 0x3a, 0x0d, 0x60, 0x91, 0xbd, 0x4d, 0x77, 0x86, 0xc7, 0xe6, 0x7c, 0xa1, 0x14, 0xf4, + 0x87, 0xc2, 0x1b, 0x32, 0x41, 0x0f, 0x6f, 0x76, 0x23, 0x2c, 0x9b, 0xef, 0x8a, 0x9d, 0x50, 0x89, + 0x26, 0x94, 0x4c, 0xdf, 0x7f, 0x69, 0x98, 0x2d, 0x17, 0x04, 0x27, 0x43, 0xb0, 0xb9, 0xf2, 0xf7, + 0x54, 0x02, 0x2b, 0x97, 0xc3, 0x65, 0x3d, 0xca, 0x45, 0x74, 0x6a, 0x53, 0xf9, 0x11, 0x78, 0x4c, + 0x48, 0xbd, 0xcb, 0x6b, 0xb5, 0xb3, 0x65, 0x5f, 0x91, 0x17, 0x8b, 0x8d, 0x62, 0x61, 0x0b, 0x7d, + 0x4e, 0x86, 0xec, 0x9a, 0xb9, 0xd7, 0xbb, 0x0f, 0x66, 0xe0, 0x8b, 0xa1, 0x75, 0x56, 0xef, 0x95, + 0xf7, 0xc8, 0x17, 0x12, 0xfb, 0x5a, 0xf4, 0x9e, 0xf7, 0x17, 0xa5, 0x24, 0x62, 0x5f, 0x3b, 0xe8, + 0x46, 0xf7, 0xdf, 0x0f, 0x23, 0xf6, 0x08, 0xd1, 0x62, 0xe5, 0x0c, 0x9c, 0x0e, 0x3e, 0x54, 0x16, + 0xcb, 0xd5, 0x46, 0x65, 0xe9, 0xfe, 0x40, 0xb8, 0x15, 0x55, 0x48, 0xfc, 0x83, 0xba, 0xb1, 0xf8, + 0x79, 0xc9, 0x29, 0x38, 0x1e, 0x7c, 0x5b, 0x2e, 0x37, 0xbc, 0x2f, 0x0f, 0xa0, 0x87, 0x72, 0x30, + 0x43, 0xbb, 0xf5, 0x8d, 0x6e, 0x5b, 0x73, 0x30, 0x7a, 0x52, 0x80, 0xee, 0x0d, 0x70, 0xb4, 0xb2, + 0xbe, 0x54, 0xaf, 0x3b, 0xa6, 0xa5, 0x6d, 0x61, 0x32, 0x8e, 0x51, 0x69, 0xf5, 0x26, 0xa3, 0x77, + 0x09, 0xaf, 0x21, 0xf2, 0x43, 0x09, 0x2d, 0x33, 0x02, 0xf5, 0x2f, 0x0b, 0xad, 0xf9, 0x09, 0x10, + 0x4c, 0x86, 0xfe, 0x03, 0x23, 0x6e, 0x73, 0xd1, 0xb8, 0x6c, 0x9e, 0x79, 0xb6, 0x04, 0x53, 0x0d, + 0x7d, 0x07, 0x3f, 0xc3, 0x34, 0xb0, 0xad, 0x4c, 0x80, 0xbc, 0xbc, 0xd6, 0x28, 0x1c, 0x71, 0x1f, + 0x5c, 0x13, 0x2c, 0x43, 0x1e, 0xca, 0x6e, 0x01, 0xee, 0x43, 0xb1, 0x51, 0x90, 0xdd, 0x87, 0xb5, + 0x72, 0xa3, 0x90, 0x75, 0x1f, 0xaa, 0xe5, 0x46, 0x21, 0xe7, 0x3e, 0xac, 0xaf, 0x36, 0x0a, 0x79, + 0xf7, 0xa1, 0x52, 0x6f, 0x14, 0x26, 0xdc, 0x87, 0x85, 0x7a, 0xa3, 0x30, 0xe9, 0x3e, 0x9c, 0xad, + 0x37, 0x0a, 0x53, 0xee, 0x43, 0xa9, 0xd1, 0x28, 0x80, 0xfb, 0x70, 0x6f, 0xbd, 0x51, 0x98, 0x76, + 0x1f, 0x8a, 0xa5, 0x46, 0x61, 0x86, 0x3c, 0x94, 0x1b, 0x85, 0x59, 0xf7, 0xa1, 0x5e, 0x6f, 0x14, + 0xe6, 0x08, 0xe5, 0x7a, 0xa3, 0x70, 0x94, 0x94, 0x55, 0x69, 0x14, 0x0a, 0xee, 0xc3, 0x4a, 0xbd, + 0x51, 0x38, 0x46, 0x32, 0xd7, 0x1b, 0x05, 0x85, 0x14, 0x5a, 0x6f, 0x14, 0x2e, 0x23, 0x79, 0xea, + 0x8d, 0xc2, 0x71, 0x52, 0x44, 0xbd, 0x51, 0x38, 0x41, 0xd8, 0x28, 0x37, 0x0a, 0x27, 0x49, 0x1e, + 0xb5, 0x51, 0xb8, 0x9c, 0x7c, 0xaa, 0x36, 0x0a, 0xa7, 0x08, 0x63, 0xe5, 0x46, 0xe1, 0x0a, 0xf2, + 0xa0, 0x36, 0x0a, 0x88, 0x7c, 0x2a, 0x36, 0x0a, 0x57, 0xa2, 0xc7, 0xc0, 0xd4, 0x32, 0x76, 0x28, + 0x88, 0xa8, 0x00, 0xf2, 0x32, 0x76, 0xc2, 0x46, 0xff, 0x57, 0x65, 0xb8, 0x9c, 0x4d, 0x14, 0x97, + 0x2c, 0x73, 0x67, 0x15, 0x6f, 0x69, 0xad, 0x4b, 0xe5, 0x07, 0x5d, 0x83, 0x2b, 0xbc, 0xe7, 0xab, + 0x40, 0xb6, 0x1b, 0x74, 0x46, 0xe4, 0x39, 0xd6, 0x3e, 0xf5, 0x16, 0xba, 0xe4, 0x60, 0xa1, 0x8b, + 0x59, 0x64, 0xff, 0x14, 0xd6, 0x68, 0x6e, 0x6d, 0x3a, 0xd3, 0xb3, 0x36, 0xed, 0x36, 0x93, 0x2e, + 0xb6, 0x6c, 0xd3, 0xd0, 0x3a, 0x75, 0xe6, 0x14, 0x40, 0x57, 0xd4, 0x7a, 0x93, 0x95, 0x9f, 0xf0, + 0x5a, 0x06, 0xb5, 0xca, 0x9e, 0x16, 0x37, 0x1f, 0xee, 0xad, 0x66, 0x44, 0x23, 0xf9, 0xa4, 0xdf, + 0x48, 0x1a, 0x5c, 0x23, 0xb9, 0xe7, 0x00, 0xb4, 0x93, 0xb5, 0x97, 0xca, 0x70, 0x13, 0x91, 0xc0, + 0x65, 0xd6, 0x5b, 0x0a, 0x97, 0xd1, 0xe7, 0x24, 0x38, 0x59, 0x36, 0xfa, 0xcd, 0x07, 0xc2, 0xba, + 0xf0, 0xe6, 0x30, 0x34, 0xeb, 0xbc, 0x48, 0x6f, 0xef, 0x5b, 0xed, 0xfe, 0x34, 0x23, 0x24, 0xfa, + 0x69, 0x5f, 0xa2, 0x75, 0x4e, 0xa2, 0x77, 0x0f, 0x4f, 0x3a, 0x99, 0x40, 0xab, 0x23, 0xed, 0x80, + 0xb2, 0xe8, 0x6b, 0x12, 0x1c, 0xa3, 0x7e, 0x3d, 0xf7, 0xd2, 0xe9, 0x07, 0xe9, 0xb2, 0x79, 0x13, + 0xaa, 0x13, 0x4c, 0x55, 0xa8, 0x7e, 0x87, 0x52, 0xd0, 0x6b, 0xc2, 0x02, 0xbf, 0x8f, 0x17, 0x78, + 0x44, 0x67, 0xdc, 0x5b, 0x5c, 0x84, 0xac, 0x3f, 0xe1, 0xcb, 0xba, 0xca, 0xc9, 0xfa, 0xf6, 0xa1, + 0xa8, 0x1e, 0xae, 0x98, 0xbf, 0x91, 0x85, 0xc7, 0x50, 0x0e, 0x99, 0x22, 0xd0, 0xce, 0xac, 0x68, + 0xb4, 0x55, 0x6c, 0x3b, 0x9a, 0xe5, 0x70, 0x47, 0xda, 0x7b, 0xe6, 0xb7, 0x99, 0x14, 0xe6, 0xb7, + 0xd2, 0xc0, 0xf9, 0x2d, 0x7a, 0x67, 0xd8, 0x4a, 0x3b, 0xc7, 0x23, 0x5b, 0x8c, 0xc1, 0x20, 0xa2, + 0x86, 0x51, 0x2d, 0xca, 0x37, 0xdf, 0x7e, 0x92, 0x43, 0x79, 0xe9, 0xc0, 0x25, 0x24, 0x43, 0xfc, + 0x0f, 0x47, 0x6b, 0x4e, 0x67, 0xc3, 0xdf, 0x78, 0xdb, 0xaf, 0xd0, 0x4e, 0x75, 0x1e, 0xf4, 0x82, + 0x49, 0x98, 0x22, 0x5d, 0xce, 0xaa, 0x6e, 0x5c, 0x70, 0xc7, 0xc6, 0x99, 0x2a, 0xbe, 0x58, 0xda, + 0xd6, 0x3a, 0x1d, 0x6c, 0x6c, 0x61, 0xf4, 0x00, 0x67, 0xa0, 0x6b, 0xdd, 0x6e, 0x35, 0xd8, 0x2a, + 0xf2, 0x5e, 0x95, 0xbb, 0x21, 0x67, 0xb7, 0xcc, 0x2e, 0x26, 0x82, 0x9a, 0x0b, 0x39, 0x97, 0xf0, + 0xcb, 0x5d, 0xc5, 0x5d, 0x67, 0x7b, 0x9e, 0x94, 0x55, 0xec, 0xea, 0x75, 0xf7, 0x07, 0x95, 0xfe, + 0xc7, 0xc6, 0xc9, 0xaf, 0xf7, 0xed, 0x8c, 0x33, 0x31, 0x9d, 0xb1, 0xcf, 0xf8, 0x7c, 0x98, 0xe9, + 0x88, 0x95, 0x8c, 0x6b, 0x60, 0xba, 0xe5, 0x65, 0xf1, 0xcf, 0xce, 0x84, 0x93, 0xd0, 0xdf, 0x26, + 0xea, 0xae, 0x85, 0x0a, 0x4f, 0xa6, 0x55, 0x78, 0xc4, 0xf6, 0xe2, 0x09, 0x38, 0xd6, 0xa8, 0xd5, + 0x9a, 0x6b, 0xc5, 0xea, 0xfd, 0xc1, 0x99, 0xf5, 0x4d, 0xf4, 0xb2, 0x2c, 0xcc, 0xd5, 0xcd, 0xce, + 0x1e, 0x0e, 0x70, 0xae, 0x70, 0x4e, 0x59, 0x61, 0x39, 0x65, 0xf6, 0xc9, 0x49, 0x39, 0x09, 0x79, + 0xcd, 0xb0, 0x2f, 0x62, 0xcf, 0x86, 0x67, 0x6f, 0x0c, 0xc6, 0x0f, 0x84, 0x3b, 0x02, 0x95, 0x87, + 0xf1, 0x8e, 0x01, 0x92, 0xe4, 0xb9, 0x8a, 0x00, 0xf2, 0x0c, 0xcc, 0xd8, 0x74, 0xc3, 0xb8, 0x11, + 0xf2, 0x0b, 0xe0, 0xd2, 0x08, 0x8b, 0xd4, 0x63, 0x41, 0x66, 0x2c, 0x92, 0x37, 0xf4, 0x6a, 0xbf, + 0xff, 0xd8, 0xe0, 0x20, 0x2e, 0x1e, 0x84, 0xb1, 0x64, 0x20, 0xbf, 0x62, 0xd4, 0x33, 0xf1, 0x53, + 0x70, 0x9c, 0x35, 0xfb, 0x66, 0x69, 0xa5, 0xb8, 0xba, 0x5a, 0xae, 0x2e, 0x97, 0x9b, 0x95, 0x45, + 0xba, 0x01, 0x15, 0xa4, 0x14, 0x1b, 0x8d, 0xf2, 0xda, 0x7a, 0xa3, 0xde, 0x2c, 0x3f, 0xbd, 0x54, + 0x2e, 0x2f, 0x12, 0xb7, 0x48, 0x72, 0xae, 0xc9, 0x73, 0x60, 0x2d, 0x56, 0xeb, 0xe7, 0xca, 0x6a, + 0x61, 0xfb, 0x4c, 0x11, 0xa6, 0x43, 0x03, 0x85, 0xcb, 0xdd, 0x22, 0xde, 0xd4, 0x76, 0x3b, 0xcc, + 0xa6, 0x2e, 0x1c, 0x71, 0xb9, 0x23, 0xb2, 0xa9, 0x19, 0x9d, 0x4b, 0x85, 0x8c, 0x52, 0x80, 0x99, + 0xf0, 0x98, 0x50, 0x90, 0xd0, 0xdb, 0xae, 0x82, 0xa9, 0x73, 0xa6, 0x75, 0x81, 0xf8, 0xf2, 0xa1, + 0xf7, 0xd2, 0xd8, 0x36, 0xde, 0x29, 0xe1, 0x90, 0x01, 0xf6, 0x0a, 0x71, 0x8f, 0x11, 0x8f, 0xda, + 0xfc, 0xc0, 0x93, 0xc0, 0xd7, 0xc0, 0xf4, 0x45, 0x2f, 0x77, 0xd0, 0xd2, 0x43, 0x49, 0xe8, 0xbf, + 0x8b, 0xf9, 0x80, 0x0c, 0x2e, 0x32, 0x7d, 0x1f, 0x85, 0xb7, 0x4a, 0x90, 0x5f, 0xc6, 0x4e, 0xb1, + 0xd3, 0x09, 0xcb, 0xed, 0xc5, 0xc2, 0xa7, 0xbb, 0xb8, 0x4a, 0x14, 0x3b, 0x9d, 0xe8, 0x46, 0x15, + 0x12, 0x90, 0x77, 0x0a, 0x81, 0x4b, 0x13, 0xf4, 0x9d, 0x1c, 0x50, 0x60, 0xfa, 0x12, 0xfb, 0x90, + 0xec, 0xfb, 0x39, 0x3c, 0x1c, 0x32, 0x93, 0x9e, 0x18, 0xc4, 0x35, 0xca, 0xc4, 0xfb, 0x4b, 0x78, + 0xf9, 0x94, 0xfb, 0x60, 0x62, 0xd7, 0xc6, 0x25, 0xcd, 0xf6, 0x86, 0x36, 0xbe, 0xa6, 0xb5, 0xf3, + 0x0f, 0xe0, 0x96, 0x33, 0x5f, 0xd9, 0x71, 0x27, 0x3e, 0x1b, 0x34, 0xa3, 0x1f, 0x2a, 0x88, 0xbd, + 0xab, 0x1e, 0x05, 0x77, 0xf2, 0x78, 0x51, 0x77, 0xb6, 0x4b, 0xdb, 0x9a, 0xc3, 0x76, 0x2c, 0xfc, + 0x77, 0xf4, 0xfc, 0x21, 0xe0, 0x8c, 0xdd, 0xe1, 0x8f, 0x3c, 0x24, 0x9a, 0x18, 0xc4, 0x11, 0x6c, + 0xcb, 0x0f, 0x03, 0xe2, 0x3f, 0x48, 0x90, 0xad, 0x75, 0xb1, 0x21, 0x7c, 0x22, 0xca, 0x97, 0xad, + 0xd4, 0x23, 0xdb, 0x57, 0x8b, 0x7b, 0x08, 0xfa, 0x95, 0x76, 0x4b, 0x8e, 0x90, 0xec, 0xcd, 0x90, + 0xd5, 0x8d, 0x4d, 0x93, 0x59, 0xb6, 0x57, 0x46, 0xd8, 0x3a, 0x15, 0x63, 0xd3, 0x54, 0x49, 0x46, + 0x51, 0xe7, 0xc0, 0xb8, 0xb2, 0xd3, 0x17, 0xf7, 0x37, 0x27, 0x21, 0x4f, 0xd5, 0x19, 0xbd, 0x48, + 0x06, 0xb9, 0xd8, 0x6e, 0x47, 0x08, 0x5e, 0xda, 0x27, 0x78, 0x93, 0xfc, 0xe6, 0x63, 0xe2, 0xbf, + 0xf3, 0x01, 0x6d, 0x04, 0xfb, 0x76, 0xd6, 0xa4, 0x8a, 0xed, 0x76, 0xb4, 0x1f, 0xb2, 0x5f, 0xa0, + 0xc4, 0x17, 0x18, 0x6e, 0xe1, 0xb2, 0x58, 0x0b, 0x4f, 0x3c, 0x10, 0x44, 0xf2, 0x97, 0x3e, 0x44, + 0xff, 0x24, 0xc1, 0xc4, 0xaa, 0x6e, 0x3b, 0x2e, 0x36, 0x45, 0x11, 0x6c, 0xae, 0x82, 0x29, 0x4f, + 0x34, 0x6e, 0x97, 0xe7, 0xf6, 0xe7, 0x41, 0x02, 0x3f, 0x13, 0xbf, 0x97, 0x47, 0xe7, 0xc9, 0xf1, + 0xb5, 0x67, 0x5c, 0x44, 0x9f, 0x34, 0x09, 0x8a, 0x95, 0x7a, 0x8b, 0x7d, 0x93, 0x2f, 0xf0, 0x35, + 0x4e, 0xe0, 0xb7, 0x0d, 0x53, 0x64, 0xfa, 0x42, 0xff, 0xbc, 0x04, 0xe0, 0x96, 0xcd, 0x8e, 0xf3, + 0x3d, 0x8e, 0x3b, 0xa4, 0x1f, 0x23, 0xdd, 0x97, 0x85, 0xa5, 0xbb, 0xc6, 0x4b, 0xf7, 0xc7, 0x07, + 0x57, 0x35, 0xee, 0xd8, 0x9e, 0x52, 0x00, 0x59, 0xf7, 0x45, 0xeb, 0x3e, 0xa2, 0xb7, 0xfa, 0x42, + 0x5d, 0xe7, 0x84, 0x7a, 0xc7, 0x90, 0x25, 0xa5, 0x2f, 0xd7, 0xbf, 0x94, 0x60, 0xa2, 0x8e, 0x1d, + 0xb7, 0x9b, 0x44, 0x67, 0x45, 0x7a, 0xf8, 0x50, 0xdb, 0x96, 0x04, 0xdb, 0xf6, 0x77, 0x32, 0xa2, + 0xc1, 0x7e, 0x02, 0xc9, 0x30, 0x9e, 0x22, 0x56, 0x1f, 0x1e, 0x16, 0x0a, 0xf6, 0x33, 0x88, 0x5a, + 0xfa, 0xd2, 0x7d, 0xb3, 0xe4, 0xbb, 0x5b, 0xf0, 0xa7, 0x6d, 0xc2, 0x66, 0x71, 0x66, 0xbf, 0x59, + 0x2c, 0x7e, 0xda, 0x26, 0x5c, 0xc7, 0x68, 0xef, 0x81, 0xc4, 0xc6, 0xc6, 0x08, 0x36, 0xf6, 0x87, + 0x91, 0xd7, 0xb3, 0x64, 0xc8, 0xb3, 0x1d, 0x80, 0xbb, 0xe3, 0x77, 0x00, 0x06, 0x4f, 0x2d, 0xde, + 0x33, 0x84, 0x29, 0x17, 0xb7, 0x2c, 0xef, 0xb3, 0x21, 0x85, 0xd8, 0xb8, 0x09, 0x72, 0x24, 0x1a, + 0x29, 0x1b, 0xe7, 0x02, 0x9f, 0x0c, 0x8f, 0x44, 0xd9, 0xfd, 0xaa, 0xd2, 0x4c, 0x89, 0x51, 0x18, + 0xc1, 0x4a, 0xfe, 0x30, 0x28, 0xfc, 0x86, 0x02, 0xb0, 0xbe, 0x7b, 0xbe, 0xa3, 0xdb, 0xdb, 0xba, + 0xb1, 0x85, 0xbe, 0x92, 0x81, 0x19, 0xf6, 0x4a, 0x83, 0x6a, 0xc6, 0x9a, 0x7f, 0x91, 0x46, 0x41, + 0x01, 0xe4, 0x5d, 0x4b, 0x67, 0xcb, 0x00, 0xee, 0xa3, 0x72, 0xa7, 0xef, 0x9e, 0x95, 0xed, 0x09, + 0xa7, 0xe0, 0x8a, 0x21, 0xe0, 0x60, 0x3e, 0x54, 0x7a, 0xe0, 0xa6, 0x15, 0x8e, 0x9c, 0x9a, 0xe3, + 0x23, 0xa7, 0x72, 0x67, 0x2c, 0xf3, 0x3d, 0x67, 0x2c, 0x5d, 0x1c, 0x6d, 0xfd, 0x19, 0x98, 0xf8, + 0xef, 0xc8, 0x2a, 0x79, 0x46, 0x1f, 0x0c, 0xa6, 0x2a, 0xa6, 0xa0, 0x9d, 0x9b, 0xa0, 0xa2, 0x57, + 0xc1, 0xd4, 0x03, 0xa6, 0x6e, 0x90, 0x2d, 0x23, 0xe6, 0x40, 0x1e, 0x24, 0xa0, 0x8f, 0x08, 0xc7, + 0x42, 0x0b, 0x89, 0x24, 0x76, 0xd2, 0xc1, 0x38, 0x90, 0x7c, 0x0e, 0x42, 0xfb, 0xae, 0x71, 0x1d, + 0xe6, 0x20, 0xfa, 0xc9, 0x54, 0x6f, 0x67, 0x88, 0xe5, 0x15, 0x05, 0xe6, 0xbc, 0xb3, 0xa5, 0xb5, + 0x85, 0x7b, 0xcb, 0xa5, 0x46, 0x01, 0xef, 0x3f, 0x6f, 0x4a, 0x4e, 0x96, 0xd2, 0x53, 0xa4, 0xc1, + 0x12, 0x0a, 0xfa, 0x9f, 0x12, 0xe4, 0x99, 0x75, 0x70, 0xf7, 0x01, 0x21, 0x44, 0x2f, 0x1f, 0x06, + 0x92, 0xd8, 0x23, 0xfe, 0x9f, 0x4a, 0x0a, 0xc0, 0x08, 0xec, 0x81, 0xfb, 0x53, 0x03, 0x00, 0xfd, + 0x8b, 0x04, 0x59, 0xd7, 0x6a, 0x11, 0x3b, 0x40, 0xfd, 0x49, 0x61, 0x67, 0xe4, 0x90, 0x00, 0x5c, + 0xf2, 0x11, 0xfa, 0xbd, 0x00, 0x53, 0x5d, 0x9a, 0xd1, 0x3f, 0xbe, 0x7f, 0x9d, 0x40, 0xdf, 0x81, + 0xd5, 0xe0, 0x37, 0xf4, 0x6e, 0x21, 0x87, 0xe6, 0x78, 0x7e, 0x92, 0xc1, 0x51, 0x1e, 0xc5, 0x59, + 0xeb, 0x4d, 0xf4, 0x3d, 0x09, 0x40, 0xc5, 0xb6, 0xd9, 0xd9, 0xc3, 0x1b, 0x96, 0x8e, 0xae, 0x0c, + 0x00, 0x60, 0xcd, 0x3e, 0x13, 0x34, 0xfb, 0xcf, 0x84, 0x05, 0xbf, 0xcc, 0x0b, 0xfe, 0x89, 0xd1, + 0x9a, 0xe7, 0x11, 0x8f, 0x10, 0xff, 0x5d, 0x30, 0xc1, 0xe4, 0xc8, 0x4c, 0x40, 0x31, 0xe1, 0x7b, + 0x3f, 0xa1, 0xf7, 0xf9, 0xa2, 0xbf, 0x97, 0x13, 0xfd, 0x53, 0x12, 0x73, 0x94, 0x0c, 0x80, 0xd2, + 0x10, 0x00, 0x1c, 0x85, 0x69, 0x0f, 0x80, 0x0d, 0xb5, 0x52, 0xc0, 0xe8, 0x1d, 0x32, 0xf1, 0x6a, + 0xa0, 0x63, 0xd1, 0xc1, 0x7b, 0x9a, 0xaf, 0x09, 0xcf, 0xcd, 0x43, 0xf2, 0xf0, 0xcb, 0x4f, 0x09, + 0xa0, 0x3f, 0x11, 0x9a, 0x8c, 0x0b, 0x30, 0xf4, 0x68, 0xe9, 0xaf, 0xce, 0x94, 0x61, 0x96, 0x33, + 0x22, 0x94, 0x53, 0x70, 0x9c, 0x4b, 0xa0, 0xe3, 0x5d, 0xbb, 0x70, 0x44, 0x41, 0x70, 0x92, 0xfb, + 0xc2, 0x5e, 0x70, 0xbb, 0x90, 0x41, 0x7f, 0xf6, 0xb9, 0x8c, 0xbf, 0x3c, 0xf3, 0x9e, 0x2c, 0x5b, + 0x18, 0xfb, 0x18, 0x1f, 0x31, 0xae, 0x65, 0x1a, 0x0e, 0x7e, 0x30, 0xe4, 0x55, 0xe2, 0x27, 0xc4, + 0x5a, 0x0d, 0xa7, 0x60, 0xc2, 0xb1, 0xc2, 0x9e, 0x26, 0xde, 0x6b, 0x58, 0xb1, 0x72, 0xbc, 0x62, + 0x55, 0xe1, 0x8c, 0x6e, 0xb4, 0x3a, 0xbb, 0x6d, 0xac, 0xe2, 0x8e, 0xe6, 0xca, 0xd0, 0x2e, 0xda, + 0x8b, 0xb8, 0x8b, 0x8d, 0x36, 0x36, 0x1c, 0xca, 0xa7, 0x77, 0x62, 0x4d, 0x20, 0x27, 0xaf, 0x8c, + 0x77, 0xf2, 0xca, 0xf8, 0xb8, 0x7e, 0x2b, 0xae, 0x31, 0xcb, 0x73, 0xb7, 0x01, 0xd0, 0xba, 0x9d, + 0xd5, 0xf1, 0x45, 0xa6, 0x86, 0x57, 0xf4, 0x2c, 0xd2, 0xd5, 0xfc, 0x0c, 0x6a, 0x28, 0x33, 0x7a, + 0xc4, 0x57, 0xbf, 0x7b, 0x38, 0xf5, 0xbb, 0x49, 0x90, 0x85, 0x64, 0x5a, 0xd7, 0x1d, 0x42, 0xeb, + 0x66, 0x61, 0x2a, 0xd8, 0xfc, 0x95, 0x95, 0x2b, 0xe0, 0x84, 0xe7, 0xb5, 0x5b, 0x2d, 0x97, 0x17, + 0xeb, 0xcd, 0x8d, 0xf5, 0x65, 0xb5, 0xb8, 0x58, 0x2e, 0x80, 0xab, 0x9f, 0x54, 0x2f, 0x7d, 0x67, + 0xdb, 0x2c, 0xfa, 0x73, 0x09, 0x72, 0xe4, 0xb8, 0x25, 0xfa, 0xe9, 0x11, 0x69, 0x8e, 0xcd, 0xf9, + 0x28, 0xf9, 0xe3, 0xae, 0x78, 0x24, 0x77, 0x26, 0x4c, 0xc2, 0xd5, 0x81, 0x22, 0xb9, 0xc7, 0x10, + 0x4a, 0x7f, 0xe2, 0xe2, 0x36, 0xc9, 0xfa, 0xb6, 0x79, 0xf1, 0x87, 0xb9, 0x49, 0xba, 0xf5, 0x3f, + 0xe4, 0x26, 0xd9, 0x87, 0x85, 0xb1, 0x37, 0xc9, 0x3e, 0xed, 0x2e, 0xa6, 0x99, 0xa2, 0x67, 0xe6, + 0xfc, 0xf9, 0xdf, 0xb3, 0xa5, 0x03, 0x6d, 0x55, 0x15, 0x61, 0x56, 0x37, 0x1c, 0x6c, 0x19, 0x5a, + 0x67, 0xa9, 0xa3, 0x6d, 0x79, 0xf6, 0x69, 0xef, 0xfe, 0x44, 0x25, 0x94, 0x47, 0xe5, 0xff, 0x50, + 0x4e, 0x03, 0x38, 0x78, 0xa7, 0xdb, 0xd1, 0x9c, 0x40, 0xf5, 0x42, 0x29, 0x61, 0xed, 0xcb, 0xf2, + 0xda, 0x77, 0x0b, 0x5c, 0x46, 0x41, 0x6b, 0x5c, 0xea, 0xe2, 0x0d, 0x43, 0xff, 0x99, 0x5d, 0x12, + 0x60, 0x94, 0xea, 0x68, 0xbf, 0x4f, 0xdc, 0x86, 0x4d, 0xbe, 0x67, 0xc3, 0xe6, 0x1f, 0x84, 0x03, + 0x97, 0x78, 0xad, 0x7e, 0x40, 0xe0, 0x12, 0xbf, 0xa5, 0xc9, 0x3d, 0x2d, 0xcd, 0x5f, 0x46, 0xc9, + 0x0a, 0x2c, 0xa3, 0x84, 0x51, 0xc9, 0x09, 0x2e, 0x41, 0xbe, 0x4a, 0x28, 0x32, 0x4a, 0x5c, 0x35, + 0xc6, 0xb0, 0xc4, 0x2d, 0xc3, 0x1c, 0x2d, 0x7a, 0xc1, 0x34, 0x2f, 0xec, 0x68, 0xd6, 0x05, 0x64, + 0x1d, 0x48, 0x15, 0x63, 0x77, 0x8b, 0x22, 0xb7, 0x40, 0x3f, 0x2d, 0x3c, 0x67, 0xe0, 0xc4, 0xe5, + 0xf1, 0x3c, 0x9e, 0xed, 0xa2, 0x37, 0x08, 0x4d, 0x21, 0x44, 0x18, 0x4c, 0x1f, 0xd7, 0x3f, 0xf2, + 0x71, 0xf5, 0x3a, 0xfa, 0xf0, 0x4a, 0xfb, 0x28, 0x71, 0x45, 0x5f, 0x1e, 0x0e, 0x3b, 0x8f, 0xaf, + 0x21, 0xb0, 0x2b, 0x80, 0x7c, 0xc1, 0x77, 0xee, 0x71, 0x1f, 0xc3, 0x15, 0xca, 0xa6, 0x87, 0x66, + 0x04, 0xcb, 0x63, 0x41, 0xf3, 0x38, 0xcf, 0x42, 0xad, 0x9b, 0x2a, 0xa6, 0x5f, 0x12, 0xde, 0xc1, + 0xea, 0x2b, 0x20, 0xca, 0xdd, 0x78, 0x5a, 0xa5, 0xd8, 0xf6, 0x97, 0x38, 0x9b, 0xe9, 0xa3, 0xf9, + 0xbc, 0x1c, 0x4c, 0x79, 0xa1, 0x65, 0xc8, 0xcd, 0x47, 0x3e, 0x86, 0x27, 0x21, 0x6f, 0x9b, 0xbb, + 0x56, 0x0b, 0xb3, 0x3d, 0x45, 0xf6, 0x36, 0xc4, 0xfe, 0xd7, 0xc0, 0xf1, 0x7c, 0x9f, 0xc9, 0x90, + 0x4d, 0x6c, 0x32, 0x44, 0x1b, 0xa4, 0x71, 0x03, 0xfc, 0xf3, 0x85, 0xc3, 0xd5, 0x73, 0x98, 0xd5, + 0xb1, 0xf3, 0x68, 0x1c, 0xe3, 0xff, 0x40, 0x68, 0x77, 0x65, 0x40, 0x4d, 0x92, 0xa9, 0x5c, 0x6d, + 0x08, 0x43, 0xf5, 0x4a, 0xb8, 0xdc, 0xcb, 0xc1, 0x2c, 0x54, 0x62, 0x91, 0x6e, 0xa8, 0xab, 0x05, + 0x19, 0x3d, 0x2b, 0x0b, 0x05, 0xca, 0x5a, 0xcd, 0x37, 0xd6, 0xd0, 0x8b, 0x33, 0x87, 0x6d, 0x91, + 0x46, 0x4f, 0x31, 0x3f, 0x2b, 0x89, 0x86, 0xc4, 0xe5, 0x04, 0x1f, 0xd4, 0x2e, 0x42, 0x93, 0x86, + 0x68, 0x66, 0x31, 0xca, 0x87, 0x7e, 0x3b, 0x23, 0x12, 0x61, 0x57, 0x8c, 0xc5, 0x31, 0x84, 0x43, + 0xca, 0x7a, 0x11, 0xc2, 0x96, 0x2c, 0x73, 0x67, 0xc3, 0xea, 0xa0, 0xff, 0x53, 0x28, 0x80, 0x79, + 0x84, 0xf9, 0x2f, 0x45, 0x9b, 0xff, 0x64, 0xc9, 0xb8, 0x13, 0xec, 0x55, 0x75, 0x86, 0x18, 0xbe, + 0x95, 0xeb, 0x61, 0x4e, 0x6b, 0xb7, 0xd7, 0xb5, 0x2d, 0x5c, 0x72, 0xe7, 0xd5, 0x86, 0xc3, 0xa2, + 0x07, 0xf5, 0xa4, 0xc6, 0x76, 0x45, 0xe2, 0xeb, 0xa0, 0x1c, 0x48, 0x4c, 0x3e, 0x63, 0x19, 0xde, + 0xdc, 0x21, 0xa1, 0xb5, 0xad, 0x05, 0xb1, 0xcc, 0xd8, 0x9b, 0xa0, 0xef, 0x92, 0x00, 0xdf, 0xe9, + 0x6b, 0xd6, 0xef, 0x49, 0x30, 0xe1, 0xca, 0xbb, 0xd8, 0x6e, 0xa3, 0xc7, 0x72, 0x21, 0xff, 0x22, + 0xbd, 0xc7, 0x7e, 0x51, 0xd8, 0x6d, 0xcf, 0xab, 0x21, 0xa5, 0x1f, 0x81, 0x49, 0x20, 0x44, 0x89, + 0x13, 0xa2, 0x98, 0x77, 0x5e, 0x6c, 0x11, 0xe9, 0x8b, 0xef, 0x93, 0x12, 0xcc, 0x7a, 0xf3, 0x88, + 0x25, 0xec, 0xb4, 0xb6, 0xd1, 0x6d, 0xa2, 0x0b, 0x4d, 0xac, 0xa5, 0xf9, 0x7b, 0xb2, 0x1d, 0xf4, + 0xfd, 0x4c, 0x42, 0x95, 0xe7, 0x4a, 0x8e, 0x58, 0xa5, 0x4b, 0xa4, 0x8b, 0x71, 0x04, 0xd3, 0x17, + 0xe6, 0x23, 0x12, 0x40, 0xc3, 0xf4, 0xe7, 0xba, 0x07, 0x90, 0xe4, 0x0b, 0x85, 0xb7, 0x6b, 0x59, + 0xc5, 0x83, 0x62, 0x93, 0xf7, 0x1c, 0x82, 0xce, 0x47, 0x83, 0x4a, 0x1a, 0x4b, 0x5b, 0x9f, 0x5a, + 0xdc, 0xed, 0x76, 0xf4, 0x96, 0xe6, 0xf4, 0x7a, 0xcc, 0x45, 0x8b, 0x97, 0x5c, 0x0b, 0x9a, 0xc8, + 0x28, 0xf4, 0xcb, 0x88, 0x90, 0x25, 0x0d, 0x2e, 0x23, 0x79, 0xc1, 0x65, 0x04, 0xbd, 0x60, 0x06, + 0x10, 0x1f, 0x83, 0x7a, 0xca, 0x70, 0xb4, 0xd6, 0xc5, 0xc6, 0x82, 0x85, 0xb5, 0x76, 0xcb, 0xda, + 0xdd, 0x39, 0x6f, 0x87, 0xdd, 0x3d, 0xe3, 0x75, 0x34, 0xb4, 0x74, 0x2c, 0x71, 0x4b, 0xc7, 0xe8, + 0x17, 0x64, 0xd1, 0x50, 0x47, 0xa1, 0x0d, 0x8e, 0x10, 0x0f, 0x43, 0x0c, 0x75, 0x89, 0x9c, 0x94, + 0x7a, 0x56, 0x89, 0xb3, 0x49, 0x56, 0x89, 0xdf, 0x28, 0x14, 0x38, 0x49, 0xa8, 0x5e, 0x63, 0xf1, + 0x35, 0x9b, 0xab, 0x63, 0x27, 0x02, 0xde, 0xeb, 0x60, 0xf6, 0x7c, 0xf0, 0xc5, 0x87, 0x98, 0x4f, + 0xec, 0xe3, 0x01, 0xfa, 0xe6, 0xa4, 0x2b, 0x30, 0x3c, 0x0b, 0x11, 0xe8, 0xfa, 0x08, 0x4a, 0x22, + 0x6e, 0x66, 0x89, 0x96, 0x53, 0x62, 0xcb, 0x4f, 0x1f, 0x85, 0x8f, 0x48, 0x30, 0x4d, 0x2e, 0x3b, + 0x5d, 0xb8, 0x44, 0x0e, 0x3e, 0x0a, 0x1a, 0x25, 0xcf, 0x0b, 0x8b, 0x59, 0x81, 0x6c, 0x47, 0x37, + 0x2e, 0x78, 0xfe, 0x81, 0xee, 0x73, 0x70, 0x75, 0x9e, 0xd4, 0xe7, 0xea, 0x3c, 0x7f, 0x9f, 0xc2, + 0x2f, 0xf7, 0x40, 0x77, 0x39, 0x0f, 0x24, 0x97, 0xbe, 0x18, 0xff, 0x2e, 0x0b, 0xf9, 0x3a, 0xd6, + 0xac, 0xd6, 0x36, 0x7a, 0x8f, 0xd4, 0x77, 0xaa, 0x30, 0xc9, 0x4f, 0x15, 0x96, 0x60, 0x62, 0x53, + 0xef, 0x38, 0xd8, 0xa2, 0x3e, 0xd3, 0xe1, 0xae, 0x9d, 0x36, 0xf1, 0x85, 0x8e, 0xd9, 0xba, 0x30, + 0xcf, 0x4c, 0xf7, 0x79, 0x2f, 0xd4, 0xea, 0xfc, 0x12, 0xf9, 0x49, 0xf5, 0x7e, 0x76, 0x0d, 0x42, + 0xdb, 0xb4, 0x9c, 0xa8, 0x5b, 0x34, 0x22, 0xa8, 0xd4, 0x4d, 0xcb, 0x51, 0xe9, 0x8f, 0x2e, 0xcc, + 0x9b, 0xbb, 0x9d, 0x4e, 0x03, 0x3f, 0xe8, 0x78, 0xd3, 0x36, 0xef, 0xdd, 0x35, 0x16, 0xcd, 0xcd, + 0x4d, 0x1b, 0xd3, 0x45, 0x83, 0x9c, 0xca, 0xde, 0x94, 0xe3, 0x90, 0xeb, 0xe8, 0x3b, 0x3a, 0x9d, + 0x68, 0xe4, 0x54, 0xfa, 0xa2, 0xdc, 0x08, 0x85, 0x60, 0x8e, 0x43, 0x19, 0x3d, 0x95, 0x27, 0x4d, + 0x73, 0x5f, 0xba, 0xab, 0x33, 0x17, 0xf0, 0x25, 0xfb, 0xd4, 0x04, 0xf9, 0x4e, 0x9e, 0xf9, 0x03, + 0x2a, 0x22, 0xfb, 0x1d, 0x54, 0xe2, 0xd1, 0x33, 0x58, 0x0b, 0xb7, 0x4c, 0xab, 0xed, 0xc9, 0x26, + 0x7a, 0x82, 0xc1, 0xf2, 0x25, 0xdb, 0xa5, 0xe8, 0x5b, 0x78, 0xfa, 0x9a, 0xf6, 0xce, 0xbc, 0xdb, + 0x6d, 0xba, 0x45, 0x9f, 0xd3, 0x9d, 0xed, 0x35, 0xec, 0x68, 0xe8, 0xef, 0xe4, 0xbe, 0x1a, 0x37, + 0xfd, 0xff, 0x69, 0xdc, 0x00, 0x8d, 0xa3, 0x81, 0xae, 0x9c, 0x5d, 0xcb, 0x70, 0xe5, 0xc8, 0xc2, + 0xd6, 0x86, 0x52, 0x94, 0x3b, 0xe0, 0x8a, 0xe0, 0xcd, 0x5b, 0x2a, 0x5d, 0x64, 0xd3, 0xd6, 0x29, + 0x92, 0x3d, 0x3a, 0x83, 0xb2, 0x0e, 0xd7, 0xd2, 0x8f, 0x2b, 0x8d, 0xb5, 0xd5, 0x15, 0x7d, 0x6b, + 0xbb, 0xa3, 0x6f, 0x6d, 0x3b, 0x76, 0xc5, 0xb0, 0x1d, 0xac, 0xb5, 0x6b, 0x9b, 0x2a, 0xbd, 0xff, + 0x06, 0x08, 0x1d, 0x91, 0xac, 0xbc, 0x4f, 0xb5, 0xd8, 0xe8, 0x16, 0xd6, 0x94, 0x88, 0x96, 0xf2, + 0x14, 0xb7, 0xa5, 0xd8, 0xbb, 0x1d, 0x1f, 0xd3, 0xab, 0x7a, 0x30, 0x0d, 0x54, 0x7d, 0xb7, 0x43, + 0x9a, 0x0b, 0xc9, 0x9c, 0x74, 0x9c, 0x8b, 0xe1, 0x24, 0xfd, 0x66, 0xf3, 0xff, 0xe4, 0x21, 0xb7, + 0x6c, 0x69, 0xdd, 0x6d, 0xf4, 0xac, 0x50, 0xff, 0x3c, 0xaa, 0x36, 0xe1, 0x6b, 0xa7, 0x34, 0x48, + 0x3b, 0xe5, 0x01, 0xda, 0x99, 0x0d, 0x69, 0x67, 0xf4, 0xa2, 0xf2, 0x19, 0x98, 0x69, 0x99, 0x9d, + 0x0e, 0x6e, 0xb9, 0xf2, 0xa8, 0xb4, 0xc9, 0x6a, 0xce, 0x94, 0xca, 0xa5, 0x91, 0x70, 0xd4, 0xd8, + 0xa9, 0xd3, 0x35, 0x74, 0xaa, 0xf4, 0x41, 0x02, 0x7a, 0xb1, 0x04, 0xd9, 0x72, 0x7b, 0x0b, 0x73, + 0xeb, 0xec, 0x99, 0xd0, 0x3a, 0xfb, 0x49, 0xc8, 0x3b, 0x9a, 0xb5, 0x85, 0x1d, 0x6f, 0x9d, 0x80, + 0xbe, 0xf9, 0x51, 0xb2, 0xe5, 0x50, 0x94, 0xec, 0x1f, 0x87, 0xac, 0x2b, 0x33, 0xe6, 0x46, 0x7e, + 0x6d, 0x3f, 0xf8, 0x89, 0xec, 0xe7, 0xdd, 0x12, 0xe7, 0xdd, 0x5a, 0xab, 0xe4, 0x87, 0x5e, 0xac, + 0x73, 0xfb, 0xb0, 0x26, 0x57, 0x79, 0xb6, 0x4c, 0xa3, 0xb2, 0xa3, 0x6d, 0x61, 0x56, 0xcd, 0x20, + 0xc1, 0xfb, 0x5a, 0xde, 0x31, 0x1f, 0xd0, 0x59, 0x3c, 0xc8, 0x20, 0xc1, 0xad, 0xc2, 0xb6, 0xde, + 0x6e, 0x63, 0x83, 0xb5, 0x6c, 0xf6, 0x76, 0xe6, 0x34, 0x64, 0x5d, 0x1e, 0x5c, 0xfd, 0x71, 0x8d, + 0x85, 0xc2, 0x11, 0x65, 0xc6, 0x6d, 0x56, 0xb4, 0xf1, 0x16, 0x32, 0xfc, 0x9a, 0xaa, 0x88, 0xdb, + 0x0e, 0xad, 0x5c, 0xff, 0xc6, 0xf5, 0x04, 0xc8, 0x19, 0x66, 0x1b, 0x0f, 0x1c, 0x84, 0x68, 0x2e, + 0xe5, 0xc9, 0x90, 0xc3, 0x6d, 0xb7, 0x57, 0x90, 0x49, 0xf6, 0xd3, 0xf1, 0xb2, 0x54, 0x69, 0xe6, + 0x64, 0xbe, 0x41, 0xfd, 0xb8, 0x4d, 0xbf, 0x01, 0xfe, 0xf2, 0x04, 0x1c, 0xa5, 0x7d, 0x40, 0x7d, + 0xf7, 0xbc, 0x4b, 0xea, 0x3c, 0x46, 0x0f, 0xf7, 0x1f, 0xb8, 0x8e, 0xf2, 0xca, 0x7e, 0x1c, 0x72, + 0xf6, 0xee, 0x79, 0xdf, 0x08, 0xa5, 0x2f, 0xe1, 0xa6, 0x2b, 0x8d, 0x64, 0x38, 0x93, 0x87, 0x1d, + 0xce, 0xb8, 0xa1, 0x49, 0xf6, 0x1a, 0x7f, 0x30, 0x90, 0xd1, 0x03, 0x10, 0xde, 0x40, 0xd6, 0x6f, + 0x18, 0x3a, 0x05, 0x13, 0xda, 0xa6, 0x83, 0xad, 0xc0, 0x4c, 0x64, 0xaf, 0xee, 0x50, 0x79, 0x1e, + 0x6f, 0x9a, 0x96, 0x2b, 0x16, 0x1a, 0x24, 0xdd, 0x7f, 0x0f, 0xb5, 0x5c, 0xe0, 0x76, 0xc8, 0x6e, + 0x82, 0x63, 0x86, 0xb9, 0x88, 0xbb, 0x4c, 0xce, 0x14, 0xc5, 0x59, 0xd2, 0x02, 0xf6, 0x7f, 0xd8, + 0xd7, 0x95, 0xcc, 0xed, 0xef, 0x4a, 0xd0, 0x67, 0x92, 0xce, 0x99, 0x7b, 0x80, 0x1e, 0x99, 0x85, + 0xa6, 0x3c, 0x0d, 0x66, 0xda, 0xcc, 0x45, 0xab, 0xa5, 0xfb, 0xad, 0x24, 0xf2, 0x3f, 0x2e, 0x73, + 0xa0, 0x48, 0xd9, 0xb0, 0x22, 0x2d, 0xc3, 0x24, 0x39, 0xaa, 0xec, 0x6a, 0x52, 0xae, 0xc7, 0x25, + 0x9e, 0x4c, 0xeb, 0xfc, 0x4a, 0x85, 0xc4, 0x36, 0x5f, 0x62, 0xbf, 0xa8, 0xfe, 0xcf, 0xc9, 0x66, + 0xdf, 0xf1, 0x12, 0x4a, 0xbf, 0x39, 0xbe, 0x29, 0x0f, 0x57, 0x94, 0x2c, 0xd3, 0xb6, 0xc9, 0x19, + 0x98, 0xde, 0x86, 0xf9, 0x7a, 0x89, 0xbb, 0x2f, 0xe3, 0x51, 0xdd, 0xfc, 0xfa, 0x35, 0xa8, 0xf1, + 0x35, 0x8d, 0xaf, 0x09, 0x07, 0x79, 0xf1, 0xf7, 0x1f, 0x22, 0x84, 0xfe, 0xc3, 0xd1, 0x48, 0xde, + 0x99, 0x11, 0x89, 0x3b, 0x93, 0x50, 0x56, 0xe9, 0x37, 0x97, 0x2f, 0x49, 0x70, 0x65, 0x2f, 0x37, + 0x1b, 0x86, 0xed, 0x37, 0x98, 0xab, 0x07, 0xb4, 0x17, 0x3e, 0x4e, 0x49, 0xec, 0x4d, 0x95, 0x11, + 0x75, 0x0f, 0x95, 0x16, 0xb1, 0x58, 0x12, 0x9c, 0xa8, 0x89, 0xbb, 0xa9, 0x32, 0x31, 0xf9, 0xf4, + 0x85, 0xfb, 0xd9, 0x2c, 0x1c, 0x5d, 0xb6, 0xcc, 0xdd, 0xae, 0x1d, 0xf4, 0x40, 0x7f, 0xdd, 0x7f, + 0xc3, 0x35, 0x2f, 0x62, 0x1a, 0x5c, 0x03, 0xd3, 0x16, 0xb3, 0xe6, 0x82, 0xed, 0xd7, 0x70, 0x52, + 0xb8, 0xf7, 0x92, 0x0f, 0xd2, 0x7b, 0x05, 0xfd, 0x4c, 0x96, 0xeb, 0x67, 0x7a, 0x7b, 0x8e, 0x5c, + 0x9f, 0x9e, 0xe3, 0xaf, 0xa4, 0x84, 0x83, 0x6a, 0x8f, 0x88, 0x22, 0xfa, 0x8b, 0x12, 0xe4, 0xb7, + 0x48, 0x46, 0xd6, 0x5d, 0x3c, 0x5e, 0xac, 0x66, 0x84, 0xb8, 0xca, 0x7e, 0x0d, 0xe4, 0x2a, 0x87, + 0x75, 0x38, 0xd1, 0x00, 0x17, 0xcf, 0x6d, 0xfa, 0x4a, 0xf5, 0xea, 0x2c, 0xcc, 0xf8, 0xa5, 0x57, + 0xda, 0x36, 0x7a, 0x5e, 0x7f, 0x8d, 0x9a, 0x15, 0xd1, 0xa8, 0x7d, 0xeb, 0xcc, 0xfe, 0xa8, 0x23, + 0x87, 0x46, 0x9d, 0xbe, 0xa3, 0xcb, 0x4c, 0xc4, 0xe8, 0x82, 0x9e, 0x29, 0x8b, 0xde, 0x38, 0xc5, + 0x77, 0xad, 0xa4, 0x36, 0x8f, 0xe6, 0xc1, 0x42, 0xf0, 0xde, 0xab, 0xc1, 0xb5, 0x4a, 0x5f, 0x49, + 0xde, 0x2f, 0xc1, 0xb1, 0xfd, 0x9d, 0xf9, 0x8f, 0xf0, 0x5e, 0x68, 0x6e, 0x9d, 0x6c, 0xdf, 0x0b, + 0x8d, 0xbc, 0xf1, 0x9b, 0x74, 0xb1, 0x41, 0x43, 0x38, 0x7b, 0x6f, 0x70, 0x27, 0x2e, 0x16, 0x16, + 0x44, 0x90, 0x68, 0xfa, 0x02, 0xfc, 0x35, 0x19, 0xa6, 0xea, 0xd8, 0x59, 0xd5, 0x2e, 0x99, 0xbb, + 0x0e, 0xd2, 0x44, 0xb7, 0xe7, 0x9e, 0x0a, 0xf9, 0x0e, 0xf9, 0x85, 0x5d, 0xe4, 0x7f, 0x4d, 0xdf, + 0xfd, 0x2d, 0xe2, 0xfb, 0x43, 0x49, 0xab, 0x2c, 0x3f, 0x1f, 0xad, 0x45, 0x64, 0x77, 0xd4, 0xe7, + 0x6e, 0x24, 0x5b, 0x3b, 0x89, 0xf6, 0x4e, 0xa3, 0x8a, 0x4e, 0x1f, 0x96, 0x5f, 0x90, 0x61, 0xb6, + 0x8e, 0x9d, 0x8a, 0xbd, 0xa4, 0xed, 0x99, 0x96, 0xee, 0xe0, 0xf0, 0x4d, 0x9e, 0xf1, 0xd0, 0x9c, + 0x06, 0xd0, 0xfd, 0xdf, 0x58, 0x0c, 0xa9, 0x50, 0x0a, 0xfa, 0xed, 0xa4, 0x8e, 0x42, 0x1c, 0x1f, + 0x23, 0x01, 0x21, 0x91, 0x8f, 0x45, 0x5c, 0xf1, 0xe9, 0x03, 0xf1, 0x45, 0x89, 0x01, 0x51, 0xb4, + 0x5a, 0xdb, 0xfa, 0x1e, 0x6e, 0x27, 0x04, 0xc2, 0xfb, 0x2d, 0x00, 0xc2, 0x27, 0x94, 0xd8, 0x7d, + 0x85, 0xe3, 0x63, 0x14, 0xee, 0x2b, 0x71, 0x04, 0xc7, 0x12, 0x06, 0xca, 0xed, 0x7a, 0xd8, 0x7a, + 0xe6, 0xdd, 0xa2, 0x62, 0x0d, 0x4c, 0x36, 0x29, 0x6c, 0xb2, 0x0d, 0xd5, 0xb1, 0xd0, 0xb2, 0x07, + 0xe9, 0x74, 0x36, 0x8d, 0x8e, 0xa5, 0x6f, 0xd1, 0xe9, 0x0b, 0xfd, 0xdd, 0x32, 0x9c, 0xf0, 0xe3, + 0xa3, 0xd4, 0xb1, 0xb3, 0xa8, 0xd9, 0xdb, 0xe7, 0x4d, 0xcd, 0x6a, 0xa3, 0xd2, 0x08, 0x4e, 0xfc, + 0xa1, 0x2f, 0x84, 0x41, 0xa8, 0xf2, 0x20, 0xf4, 0x75, 0x15, 0xed, 0xcb, 0xcb, 0x28, 0x3a, 0x99, + 0x58, 0x6f, 0xd6, 0xdf, 0xf1, 0xc1, 0xfa, 0x09, 0x0e, 0xac, 0x3b, 0x87, 0x65, 0x31, 0x7d, 0xe0, + 0x7e, 0x93, 0x8e, 0x08, 0x21, 0xaf, 0xe6, 0xfb, 0x45, 0x01, 0x8b, 0xf0, 0x6a, 0x95, 0x23, 0xbd, + 0x5a, 0x87, 0x1a, 0x23, 0x06, 0x7a, 0x24, 0xa7, 0x3b, 0x46, 0x1c, 0xa2, 0xb7, 0xf1, 0xdb, 0x65, + 0x28, 0x90, 0x00, 0x59, 0x21, 0x8f, 0xef, 0x70, 0xbc, 0xe9, 0x78, 0x74, 0xf6, 0x79, 0x97, 0x4f, + 0x24, 0xf5, 0x2e, 0x47, 0x6f, 0x4b, 0xea, 0x43, 0xde, 0xcb, 0xed, 0x48, 0x10, 0x4b, 0xe4, 0x22, + 0x3e, 0x80, 0x83, 0xf4, 0x41, 0xfb, 0x6f, 0x32, 0x80, 0xdb, 0xa0, 0xd9, 0xd9, 0x87, 0xa7, 0x8b, + 0xc2, 0x75, 0x73, 0xd8, 0xaf, 0xde, 0x05, 0xea, 0x44, 0x0f, 0x50, 0x94, 0x62, 0x70, 0xaa, 0xe2, + 0xe1, 0xa4, 0xbe, 0x95, 0x01, 0x57, 0x23, 0x81, 0x25, 0x91, 0xb7, 0x65, 0x64, 0xd9, 0xe9, 0x03, + 0xf2, 0x3f, 0x24, 0xc8, 0x35, 0xcc, 0x3a, 0x76, 0x0e, 0x6e, 0x0a, 0x24, 0x3e, 0xb6, 0x4f, 0xca, + 0x1d, 0xc5, 0xb1, 0xfd, 0x7e, 0x84, 0xd2, 0x17, 0xdd, 0xbb, 0x24, 0x98, 0x69, 0x98, 0x25, 0x7f, + 0x71, 0x4a, 0xdc, 0x57, 0x55, 0xfc, 0xd6, 0x6c, 0xbf, 0x82, 0x41, 0x31, 0x07, 0xba, 0x35, 0x7b, + 0x30, 0xbd, 0xf4, 0xe5, 0x76, 0x1b, 0x1c, 0xdd, 0x30, 0xda, 0xa6, 0x8a, 0xdb, 0x26, 0x5b, 0xe9, + 0x56, 0x14, 0xc8, 0xee, 0x1a, 0x6d, 0x93, 0xb0, 0x9c, 0x53, 0xc9, 0xb3, 0x9b, 0x66, 0xe1, 0xb6, + 0xc9, 0x7c, 0x03, 0xc8, 0x33, 0xfa, 0x9a, 0x0c, 0x59, 0xf7, 0x5f, 0x71, 0x51, 0xbf, 0x5d, 0x4e, + 0x18, 0x88, 0xc0, 0x25, 0x3f, 0x12, 0x4b, 0xe8, 0xee, 0xd0, 0xda, 0x3f, 0xf5, 0x60, 0xbd, 0x36, + 0xaa, 0xbc, 0x90, 0x28, 0x82, 0x35, 0x7f, 0xe5, 0x14, 0x4c, 0x9c, 0xef, 0x98, 0xad, 0x0b, 0xc1, + 0x79, 0x79, 0xf6, 0xaa, 0xdc, 0x08, 0x39, 0x4b, 0x33, 0xb6, 0x30, 0xdb, 0x53, 0x38, 0xde, 0xd3, + 0x17, 0x12, 0xaf, 0x17, 0x95, 0x66, 0x41, 0x6f, 0x4b, 0x12, 0x02, 0xa1, 0x4f, 0xe5, 0x93, 0xe9, + 0xc3, 0xe2, 0x10, 0x27, 0xcb, 0x0a, 0x30, 0x53, 0x2a, 0xd2, 0xfb, 0xe9, 0xd7, 0x6a, 0x67, 0xcb, + 0x05, 0x99, 0xc0, 0xec, 0xca, 0x24, 0x45, 0x98, 0x5d, 0xf2, 0x3f, 0xb4, 0x30, 0xf7, 0xa9, 0xfc, + 0x61, 0xc0, 0xfc, 0x49, 0x09, 0x66, 0x57, 0x75, 0xdb, 0x89, 0xf2, 0xf6, 0x8f, 0x89, 0x8f, 0xfb, + 0xfc, 0xa4, 0xa6, 0x32, 0x57, 0x8e, 0x70, 0x60, 0xdc, 0x44, 0xe6, 0x70, 0x5c, 0x11, 0xe3, 0x39, + 0x96, 0x42, 0x38, 0xa0, 0xb7, 0x44, 0x0b, 0x4b, 0x32, 0xb1, 0xa1, 0x14, 0x14, 0x32, 0x7e, 0x43, + 0x29, 0xb2, 0xec, 0xf4, 0xe5, 0xfb, 0x35, 0x09, 0x8e, 0xb9, 0xc5, 0xc7, 0x2d, 0x4b, 0x45, 0x8b, + 0x79, 0xe0, 0xb2, 0x54, 0xe2, 0x95, 0xf1, 0x7d, 0xbc, 0x8c, 0x62, 0x65, 0x7c, 0x10, 0xd1, 0x31, + 0x8b, 0x39, 0x62, 0x19, 0x76, 0x90, 0x98, 0x63, 0x96, 0x61, 0x87, 0x17, 0x73, 0xfc, 0x52, 0xec, + 0x90, 0x62, 0x3e, 0xb4, 0x05, 0xd6, 0xd7, 0xca, 0xbe, 0x98, 0x23, 0xd7, 0x36, 0x62, 0xc4, 0x9c, + 0xf8, 0xc4, 0x2e, 0x7a, 0xc7, 0x90, 0x82, 0x1f, 0xf1, 0xfa, 0xc6, 0x30, 0x30, 0x1d, 0xe2, 0x1a, + 0xc7, 0x4b, 0x64, 0x98, 0x63, 0x5c, 0xf4, 0x9f, 0x32, 0xc7, 0x60, 0x94, 0x78, 0xca, 0x9c, 0xf8, + 0x0c, 0x10, 0xcf, 0xd9, 0xf8, 0xcf, 0x00, 0xc5, 0x96, 0x9f, 0x3e, 0x38, 0x5f, 0xcf, 0xc2, 0x49, + 0x97, 0x85, 0x35, 0xb3, 0xad, 0x6f, 0x5e, 0xa2, 0x5c, 0x9c, 0xd5, 0x3a, 0xbb, 0xd8, 0x46, 0xef, + 0x95, 0x44, 0x51, 0xfa, 0x4f, 0x00, 0x66, 0x17, 0x5b, 0x34, 0x90, 0x1a, 0x03, 0xea, 0x8e, 0xa8, + 0xca, 0xee, 0x2f, 0xc9, 0xbf, 0x2e, 0xa6, 0xe6, 0x11, 0x51, 0x43, 0xf4, 0x5c, 0xab, 0x70, 0xca, + 0xff, 0xd2, 0xeb, 0xe0, 0x91, 0xd9, 0xef, 0xe0, 0x71, 0x03, 0xc8, 0x5a, 0xbb, 0xed, 0x43, 0xd5, + 0xbb, 0x99, 0x4d, 0xca, 0x54, 0xdd, 0x2c, 0x6e, 0x4e, 0x1b, 0x07, 0x47, 0xf3, 0x22, 0x72, 0xda, + 0xd8, 0x51, 0xe6, 0x21, 0x4f, 0xef, 0xc0, 0xf6, 0x57, 0xf4, 0xfb, 0x67, 0x66, 0xb9, 0x78, 0xd3, + 0xae, 0xc6, 0xab, 0xe1, 0x6d, 0x89, 0x24, 0xd3, 0xaf, 0x9f, 0x0e, 0xec, 0x64, 0x95, 0x53, 0xb0, + 0xbb, 0x86, 0xa6, 0x3c, 0x9e, 0xdd, 0xb0, 0x62, 0xb7, 0xdb, 0xb9, 0xd4, 0x60, 0xc1, 0x57, 0x12, + 0xed, 0x86, 0x85, 0x62, 0xb8, 0x48, 0xbd, 0x31, 0x5c, 0x92, 0xef, 0x86, 0x71, 0x7c, 0x8c, 0x62, + 0x37, 0x2c, 0x8e, 0x60, 0xfa, 0xa2, 0x7d, 0x4b, 0x8e, 0x5a, 0xcd, 0x2c, 0x7a, 0xff, 0x27, 0xfa, + 0x1f, 0x42, 0x03, 0xde, 0xd9, 0xa5, 0x5f, 0x60, 0xff, 0xd8, 0x5b, 0x4b, 0x94, 0x27, 0x43, 0x7e, + 0xd3, 0xb4, 0x76, 0x34, 0x6f, 0xe3, 0xbe, 0xf7, 0xa4, 0x08, 0x8b, 0x98, 0xbf, 0x44, 0xf2, 0xa8, + 0x2c, 0xaf, 0x3b, 0x1f, 0x79, 0x86, 0xde, 0x65, 0x51, 0x17, 0xdd, 0x47, 0xe5, 0x3a, 0x98, 0x65, + 0xc1, 0x17, 0xab, 0xd8, 0x76, 0x70, 0x9b, 0x45, 0xac, 0xe0, 0x13, 0x95, 0x33, 0x30, 0xc3, 0x12, + 0x96, 0xf4, 0x0e, 0xb6, 0x59, 0xd0, 0x0a, 0x2e, 0x4d, 0x39, 0x09, 0x79, 0xdd, 0xbe, 0xd7, 0x36, + 0x0d, 0xe2, 0xff, 0x3f, 0xa9, 0xb2, 0x37, 0xe5, 0x06, 0x38, 0xca, 0xf2, 0xf9, 0xc6, 0x2a, 0x3d, + 0xb0, 0xd3, 0x9b, 0xec, 0xaa, 0x96, 0x61, 0xae, 0x5b, 0xe6, 0x96, 0x85, 0x6d, 0x9b, 0x9c, 0x9a, + 0x9a, 0x54, 0x43, 0x29, 0xe8, 0x73, 0xc3, 0x4c, 0x2c, 0x12, 0xdf, 0x64, 0xe0, 0xa2, 0xb4, 0xdb, + 0x6a, 0x61, 0xdc, 0x66, 0x27, 0x9f, 0xbc, 0xd7, 0x84, 0x77, 0x1c, 0x24, 0x9e, 0x86, 0x1c, 0xd2, + 0x25, 0x07, 0x1f, 0x3a, 0x01, 0x79, 0x7a, 0x61, 0x18, 0x7a, 0xd1, 0x5c, 0x5f, 0x65, 0x9d, 0xe3, + 0x95, 0x75, 0x03, 0x66, 0x0c, 0xd3, 0x2d, 0x6e, 0x5d, 0xb3, 0xb4, 0x1d, 0x3b, 0x6e, 0x95, 0x91, + 0xd2, 0xf5, 0x87, 0x94, 0x6a, 0xe8, 0xb7, 0x95, 0x23, 0x2a, 0x47, 0x46, 0xf9, 0xff, 0xc1, 0xd1, + 0xf3, 0x2c, 0x42, 0x80, 0xcd, 0x28, 0x4b, 0xd1, 0x3e, 0x78, 0x3d, 0x94, 0x17, 0xf8, 0x3f, 0x57, + 0x8e, 0xa8, 0xbd, 0xc4, 0x94, 0x9f, 0x82, 0x39, 0xf7, 0xb5, 0x6d, 0x5e, 0xf4, 0x18, 0x97, 0xa3, + 0x0d, 0x91, 0x1e, 0xf2, 0x6b, 0xdc, 0x8f, 0x2b, 0x47, 0xd4, 0x1e, 0x52, 0x4a, 0x0d, 0x60, 0xdb, + 0xd9, 0xe9, 0x30, 0xc2, 0xd9, 0x68, 0x95, 0xec, 0x21, 0xbc, 0xe2, 0xff, 0xb4, 0x72, 0x44, 0x0d, + 0x91, 0x50, 0x56, 0x61, 0xca, 0x79, 0xd0, 0x61, 0xf4, 0x72, 0xd1, 0x9b, 0xdf, 0x3d, 0xf4, 0x1a, + 0xde, 0x3f, 0x2b, 0x47, 0xd4, 0x80, 0x80, 0x52, 0x81, 0xc9, 0xee, 0x79, 0x46, 0x2c, 0xdf, 0x27, + 0xda, 0x7c, 0x7f, 0x62, 0xeb, 0xe7, 0x7d, 0x5a, 0xfe, 0xef, 0x2e, 0x63, 0x2d, 0x7b, 0x8f, 0xd1, + 0x9a, 0x10, 0x66, 0xac, 0xe4, 0xfd, 0xe3, 0x32, 0xe6, 0x13, 0x50, 0x2a, 0x30, 0x65, 0x1b, 0x5a, + 0xd7, 0xde, 0x36, 0x1d, 0xfb, 0xd4, 0x64, 0x8f, 0x9f, 0x64, 0x34, 0xb5, 0x3a, 0xfb, 0x47, 0x0d, + 0xfe, 0x56, 0x9e, 0x0c, 0x27, 0x76, 0xc9, 0x05, 0xf9, 0xe5, 0x07, 0x75, 0xdb, 0xd1, 0x8d, 0x2d, + 0x2f, 0xc6, 0x2c, 0xed, 0x6d, 0xfa, 0x7f, 0x54, 0xe6, 0xd9, 0x89, 0x29, 0x20, 0x6d, 0x13, 0xf5, + 0x6e, 0xd6, 0xd1, 0x62, 0x43, 0x07, 0xa5, 0x9e, 0x06, 0x59, 0xf7, 0x13, 0xe9, 0x9d, 0xe6, 0xfa, + 0x2f, 0x04, 0xf6, 0xea, 0x0e, 0x69, 0xc0, 0xee, 0x4f, 0x3d, 0x1d, 0xdc, 0x4c, 0x6f, 0x07, 0xe7, + 0x36, 0x70, 0xdd, 0x5e, 0xd3, 0xb7, 0xa8, 0x75, 0xc5, 0xfc, 0xe1, 0xc3, 0x49, 0x74, 0x36, 0x5a, + 0xc5, 0x17, 0xe9, 0x0d, 0x1a, 0x47, 0xbd, 0xd9, 0xa8, 0x97, 0x82, 0xae, 0x87, 0x99, 0x70, 0x23, + 0xa3, 0xb7, 0x8e, 0xea, 0x81, 0x6d, 0xc6, 0xde, 0xd0, 0x75, 0x30, 0xc7, 0xeb, 0x74, 0x68, 0x08, + 0x92, 0xbd, 0xae, 0x10, 0x5d, 0x0b, 0x47, 0x7b, 0x1a, 0x96, 0x17, 0x73, 0x24, 0x13, 0xc4, 0x1c, + 0xb9, 0x06, 0x20, 0xd0, 0xe2, 0xbe, 0x64, 0xae, 0x86, 0x29, 0x5f, 0x2f, 0xfb, 0x66, 0xf8, 0x4a, + 0x06, 0x26, 0x3d, 0x65, 0xeb, 0x97, 0xc1, 0x1d, 0x7f, 0x8c, 0xd0, 0x06, 0x03, 0x9b, 0x86, 0x73, + 0x69, 0xee, 0x38, 0x13, 0xb8, 0xf5, 0x36, 0x74, 0xa7, 0xe3, 0x1d, 0x8d, 0xeb, 0x4d, 0x56, 0xd6, + 0x01, 0x74, 0x82, 0x51, 0x23, 0x38, 0x2b, 0x77, 0x4b, 0x82, 0xf6, 0x40, 0xf5, 0x21, 0x44, 0xe3, + 0xcc, 0x8f, 0xb0, 0x83, 0x6c, 0x53, 0x90, 0xa3, 0x81, 0xd6, 0x8f, 0x28, 0x73, 0x00, 0xe5, 0xa7, + 0xaf, 0x97, 0xd5, 0x4a, 0xb9, 0x5a, 0x2a, 0x17, 0x32, 0xe8, 0xa5, 0x12, 0x4c, 0xf9, 0x8d, 0xa0, + 0x6f, 0x25, 0xcb, 0x4c, 0xb5, 0x06, 0x5e, 0xec, 0xb8, 0xbf, 0x51, 0x85, 0x95, 0xec, 0xa9, 0x70, + 0xf9, 0xae, 0x8d, 0x97, 0x74, 0xcb, 0x76, 0x54, 0xf3, 0xe2, 0x92, 0x69, 0xf9, 0x51, 0x95, 0x59, + 0x84, 0xd3, 0xa8, 0xcf, 0xae, 0xc5, 0xd1, 0xc6, 0xe4, 0xd0, 0x14, 0xb6, 0xd8, 0xca, 0x71, 0x90, + 0xe0, 0xd2, 0x75, 0x2c, 0xcd, 0xb0, 0xbb, 0xa6, 0x8d, 0x55, 0xf3, 0xa2, 0x5d, 0x34, 0xda, 0x25, + 0xb3, 0xb3, 0xbb, 0x63, 0xd8, 0xcc, 0x66, 0x88, 0xfa, 0xec, 0x4a, 0x87, 0x5c, 0xdb, 0x3a, 0x07, + 0x50, 0xaa, 0xad, 0xae, 0x96, 0x4b, 0x8d, 0x4a, 0xad, 0x5a, 0x38, 0xe2, 0x4a, 0xab, 0x51, 0x5c, + 0x58, 0x75, 0xa5, 0xf3, 0xd3, 0x30, 0xe9, 0xb5, 0x69, 0x16, 0x26, 0x25, 0xe3, 0x85, 0x49, 0x51, + 0x8a, 0x30, 0xe9, 0xb5, 0x72, 0x36, 0x22, 0x3c, 0xb6, 0xf7, 0x58, 0xec, 0x8e, 0x66, 0x39, 0xc4, + 0x9f, 0xda, 0x23, 0xb2, 0xa0, 0xd9, 0x58, 0xf5, 0x7f, 0x3b, 0xf3, 0x04, 0xc6, 0x81, 0x02, 0x73, + 0xc5, 0xd5, 0xd5, 0x66, 0x4d, 0x6d, 0x56, 0x6b, 0x8d, 0x95, 0x4a, 0x75, 0x99, 0x8e, 0x90, 0x95, + 0xe5, 0x6a, 0x4d, 0x2d, 0xd3, 0x01, 0xb2, 0x5e, 0xc8, 0xd0, 0x6b, 0x83, 0x17, 0x26, 0x21, 0xdf, + 0x25, 0xd2, 0x45, 0x5f, 0x92, 0x13, 0x9e, 0x87, 0xf7, 0x71, 0x8a, 0xb8, 0xd8, 0x94, 0xf3, 0x49, + 0x97, 0xfa, 0x9c, 0x19, 0x3d, 0x03, 0x33, 0xd4, 0xd6, 0xb3, 0xc9, 0xf2, 0x3e, 0x41, 0x4e, 0x56, + 0xb9, 0x34, 0xf4, 0x11, 0x29, 0xc1, 0x21, 0xf9, 0xbe, 0x1c, 0x25, 0x33, 0x2e, 0xfe, 0x2c, 0x33, + 0xdc, 0xb5, 0x04, 0x95, 0x6a, 0xa3, 0xac, 0x56, 0x8b, 0xab, 0x2c, 0x8b, 0xac, 0x9c, 0x82, 0xe3, + 0xd5, 0x1a, 0x8b, 0xf9, 0x57, 0x6f, 0x36, 0x6a, 0xcd, 0xca, 0xda, 0x7a, 0x4d, 0x6d, 0x14, 0x72, + 0xca, 0x49, 0x50, 0xe8, 0x73, 0xb3, 0x52, 0x6f, 0x96, 0x8a, 0xd5, 0x52, 0x79, 0xb5, 0xbc, 0x58, + 0xc8, 0x2b, 0x8f, 0x83, 0x6b, 0xe9, 0x35, 0x37, 0xb5, 0xa5, 0xa6, 0x5a, 0x3b, 0x57, 0x77, 0x11, + 0x54, 0xcb, 0xab, 0x45, 0x57, 0x91, 0x42, 0xd7, 0x07, 0x4f, 0x28, 0x97, 0xc1, 0x51, 0x72, 0xb7, + 0xf8, 0x6a, 0xad, 0xb8, 0xc8, 0xca, 0x9b, 0x54, 0xae, 0x82, 0x53, 0x95, 0x6a, 0x7d, 0x63, 0x69, + 0xa9, 0x52, 0xaa, 0x94, 0xab, 0x8d, 0xe6, 0x7a, 0x59, 0x5d, 0xab, 0xd4, 0xeb, 0xee, 0xbf, 0x85, + 0x29, 0x72, 0x39, 0x2b, 0xed, 0x33, 0xd1, 0x7b, 0x64, 0x98, 0x3d, 0xab, 0x75, 0x74, 0x77, 0xa0, + 0x20, 0xb7, 0x36, 0xf7, 0x1c, 0x27, 0x71, 0xc8, 0xed, 0xce, 0xcc, 0x21, 0x9d, 0xbc, 0xa0, 0x9f, + 0x97, 0x13, 0x1e, 0x27, 0x61, 0x40, 0xd0, 0x12, 0xe7, 0xb9, 0xd2, 0x22, 0x26, 0x3f, 0xaf, 0x92, + 0x12, 0x1c, 0x27, 0x11, 0x27, 0x9f, 0x0c, 0xfc, 0xdf, 0x1a, 0x15, 0xf8, 0x05, 0x98, 0xd9, 0xa8, + 0x16, 0x37, 0x1a, 0x2b, 0x35, 0xb5, 0xf2, 0x93, 0x24, 0x1a, 0xf9, 0x2c, 0x4c, 0x2d, 0xd5, 0xd4, + 0x85, 0xca, 0xe2, 0x62, 0xb9, 0x5a, 0xc8, 0x29, 0x97, 0xc3, 0x65, 0xf5, 0xb2, 0x7a, 0xb6, 0x52, + 0x2a, 0x37, 0x37, 0xaa, 0xc5, 0xb3, 0xc5, 0xca, 0x2a, 0xe9, 0x23, 0xf2, 0x31, 0x37, 0x4e, 0x4f, + 0xa0, 0x9f, 0xcd, 0x02, 0xd0, 0xaa, 0x93, 0xcb, 0x78, 0x42, 0xf7, 0x12, 0xff, 0x79, 0xd2, 0x49, + 0x43, 0x40, 0x26, 0xa2, 0xfd, 0x56, 0x60, 0xd2, 0x62, 0x1f, 0xd8, 0xf2, 0xca, 0x20, 0x3a, 0xf4, + 0xd1, 0xa3, 0xa6, 0xfa, 0xbf, 0xa3, 0xf7, 0x26, 0x99, 0x23, 0x44, 0x32, 0x96, 0x0c, 0xc9, 0xa5, + 0xd1, 0x00, 0x89, 0x9e, 0x97, 0x81, 0x39, 0xbe, 0x62, 0x6e, 0x25, 0x88, 0x31, 0x25, 0x56, 0x09, + 0xfe, 0xe7, 0x90, 0x91, 0x75, 0xe6, 0x49, 0x6c, 0x38, 0x05, 0xaf, 0x65, 0xd2, 0x93, 0xe1, 0x9e, + 0xc5, 0x52, 0xc8, 0xb8, 0xcc, 0xbb, 0x46, 0x47, 0x41, 0x52, 0x26, 0x40, 0x6e, 0x3c, 0xe8, 0x14, + 0x64, 0xf4, 0x15, 0x19, 0x66, 0xb9, 0x8b, 0x8f, 0xd1, 0xab, 0x32, 0x22, 0x97, 0x92, 0x86, 0xae, + 0x54, 0xce, 0x1c, 0xf4, 0x4a, 0xe5, 0x33, 0x37, 0xc3, 0x04, 0x4b, 0x23, 0xf2, 0xad, 0x55, 0x5d, + 0x53, 0xe0, 0x28, 0x4c, 0x2f, 0x97, 0x1b, 0xcd, 0x7a, 0xa3, 0xa8, 0x36, 0xca, 0x8b, 0x85, 0x8c, + 0x3b, 0xf0, 0x95, 0xd7, 0xd6, 0x1b, 0xf7, 0x17, 0xa4, 0xe4, 0x1e, 0x7a, 0xbd, 0x8c, 0x8c, 0xd9, + 0x43, 0x2f, 0xae, 0xf8, 0xf4, 0xe7, 0xaa, 0x9f, 0x91, 0xa1, 0x40, 0x39, 0x28, 0x3f, 0xd8, 0xc5, + 0x96, 0x8e, 0x8d, 0x16, 0x46, 0x17, 0x44, 0x22, 0x82, 0xee, 0x8b, 0x95, 0x47, 0xfa, 0xf3, 0x90, + 0x95, 0x48, 0x5f, 0x7a, 0x0c, 0xec, 0xec, 0x3e, 0x03, 0xfb, 0xd3, 0x49, 0x5d, 0xf4, 0x7a, 0xd9, + 0x1d, 0x09, 0x64, 0x1f, 0x4f, 0xe2, 0xa2, 0x37, 0x80, 0x83, 0xb1, 0x04, 0xfa, 0x8d, 0x18, 0x7f, + 0x0b, 0x32, 0x7a, 0xae, 0x0c, 0x47, 0x17, 0x35, 0x07, 0x2f, 0x5c, 0x6a, 0x78, 0x17, 0x13, 0x46, + 0x5c, 0x26, 0x9c, 0xd9, 0x77, 0x99, 0x70, 0x70, 0xb7, 0xa1, 0xd4, 0x73, 0xb7, 0x21, 0x7a, 0x67, + 0xd2, 0x43, 0x7d, 0x3d, 0x3c, 0x8c, 0x2c, 0x1a, 0x6f, 0xb2, 0xc3, 0x7a, 0xf1, 0x5c, 0x8c, 0xe1, + 0x6e, 0xff, 0x29, 0x28, 0x50, 0x56, 0x42, 0x5e, 0x68, 0xbf, 0xc6, 0xee, 0xdf, 0x6e, 0x26, 0x08, + 0xfa, 0xe7, 0x85, 0x51, 0x90, 0xf8, 0x30, 0x0a, 0xdc, 0xa2, 0xa6, 0xdc, 0xeb, 0x39, 0x90, 0xb4, + 0x33, 0x0c, 0xb9, 0x9c, 0x45, 0xc7, 0x59, 0x4d, 0xaf, 0x33, 0x8c, 0x2d, 0x7e, 0x3c, 0x77, 0xc4, + 0xb2, 0x7b, 0x1e, 0xcb, 0xa2, 0xc8, 0xc4, 0x5f, 0x85, 0x9d, 0xd4, 0xff, 0x98, 0x73, 0xf9, 0x8b, + 0xb9, 0x1f, 0x3a, 0x3d, 0xff, 0xe3, 0x41, 0x1c, 0xa4, 0x8f, 0xc2, 0xf7, 0x25, 0xc8, 0xd6, 0x4d, + 0xcb, 0x19, 0x15, 0x06, 0x49, 0xf7, 0x4c, 0x43, 0x12, 0xa8, 0x47, 0xcf, 0x39, 0xd3, 0xdb, 0x33, + 0x8d, 0x2f, 0x7f, 0x0c, 0x71, 0x13, 0x8f, 0xc2, 0x1c, 0xe5, 0xc4, 0xbf, 0x54, 0xe4, 0x7b, 0x12, + 0xed, 0xaf, 0xee, 0x13, 0x45, 0xe4, 0x0c, 0xcc, 0x84, 0xf6, 0x2c, 0x3d, 0x50, 0xb8, 0x34, 0xf4, + 0xfa, 0x30, 0x2e, 0x8b, 0x3c, 0x2e, 0xfd, 0x66, 0xdc, 0xfe, 0xbd, 0x1c, 0xa3, 0xea, 0x99, 0x92, + 0x84, 0x60, 0x8c, 0x29, 0x3c, 0x7d, 0x44, 0x1e, 0x92, 0x21, 0xcf, 0x7c, 0xc6, 0x46, 0x8a, 0x40, + 0xd2, 0x96, 0xe1, 0x0b, 0x41, 0xcc, 0xb7, 0x4c, 0x1e, 0x75, 0xcb, 0x88, 0x2f, 0x3f, 0x7d, 0x1c, + 0xfe, 0x9d, 0x39, 0x43, 0x16, 0xf7, 0x34, 0xbd, 0xa3, 0x9d, 0xef, 0x24, 0x08, 0x7d, 0xfc, 0x91, + 0x84, 0xc7, 0xbf, 0xfc, 0xaa, 0x72, 0xe5, 0x45, 0x48, 0xfc, 0xc7, 0x60, 0xca, 0xf2, 0x97, 0x24, + 0xbd, 0xd3, 0xf1, 0x3d, 0x8e, 0xa8, 0xec, 0xbb, 0x1a, 0xe4, 0x4c, 0x74, 0xd6, 0x4b, 0x88, 0x9f, + 0xb1, 0x9c, 0x4d, 0x99, 0x2e, 0xb6, 0xdb, 0x4b, 0x58, 0x73, 0x76, 0x2d, 0xdc, 0x4e, 0x34, 0x44, + 0xf0, 0x22, 0x9a, 0x0a, 0x4b, 0x82, 0x0b, 0x3e, 0xb8, 0xca, 0xa3, 0xf3, 0x94, 0x01, 0xbd, 0x81, + 0xc7, 0xcb, 0x48, 0xba, 0xa4, 0xb7, 0xf8, 0x90, 0xd4, 0x38, 0x48, 0x9e, 0x36, 0x1c, 0x13, 0x63, + 0xb8, 0xd0, 0x5d, 0x86, 0x39, 0x6a, 0x27, 0x8c, 0x1a, 0x93, 0xdf, 0x4f, 0xe8, 0x63, 0x12, 0xba, + 0xb6, 0x29, 0xcc, 0xce, 0x48, 0x60, 0x49, 0xe2, 0x91, 0x22, 0xc6, 0x47, 0xfa, 0xc8, 0x7c, 0x2e, + 0x0f, 0x10, 0xf2, 0x1b, 0xfc, 0x48, 0x3e, 0x08, 0x04, 0x88, 0xde, 0xc6, 0xe6, 0x1f, 0x75, 0x2e, + 0x2a, 0x75, 0xc8, 0x27, 0xd0, 0xdf, 0x90, 0xe2, 0x13, 0x85, 0x46, 0x95, 0x3f, 0x4b, 0x68, 0xf3, + 0x32, 0xaf, 0xbd, 0x81, 0x83, 0xfb, 0x90, 0xbd, 0xdc, 0x47, 0x13, 0x18, 0xbf, 0x83, 0x58, 0x49, + 0x86, 0xda, 0xea, 0x10, 0x33, 0xfb, 0x53, 0x70, 0x5c, 0x2d, 0x17, 0x17, 0x6b, 0xd5, 0xd5, 0xfb, + 0xc3, 0x77, 0xf8, 0x14, 0xe4, 0xf0, 0xe4, 0x24, 0x15, 0xd8, 0x5e, 0x93, 0xb0, 0x0f, 0xe4, 0x65, + 0x15, 0x7b, 0x43, 0xfd, 0xc7, 0x13, 0xf4, 0x6a, 0x02, 0x64, 0x0f, 0x13, 0x85, 0x87, 0x20, 0xd4, + 0x8c, 0x7e, 0x51, 0x86, 0x82, 0x3b, 0x1e, 0x52, 0x2e, 0xd9, 0x65, 0x6d, 0x35, 0xde, 0xad, 0xb0, + 0x4b, 0xf7, 0x9f, 0x02, 0xb7, 0x42, 0x2f, 0x41, 0xb9, 0x1e, 0xe6, 0x5a, 0xdb, 0xb8, 0x75, 0xa1, + 0x62, 0x78, 0xfb, 0xea, 0x74, 0x13, 0xb6, 0x27, 0x95, 0x07, 0xe6, 0x3e, 0x1e, 0x18, 0x7e, 0x12, + 0xcd, 0x0d, 0xd2, 0x61, 0xa6, 0x22, 0x70, 0xf9, 0x84, 0x8f, 0x4b, 0x95, 0xc3, 0xe5, 0xf6, 0xa1, + 0xa8, 0x26, 0x83, 0xa5, 0x3a, 0x04, 0x2c, 0x08, 0x4e, 0xd6, 0xd6, 0x1b, 0x95, 0x5a, 0xb5, 0xb9, + 0x51, 0x2f, 0x2f, 0x36, 0x17, 0x3c, 0x70, 0xea, 0x05, 0x19, 0x7d, 0x43, 0x82, 0x09, 0xca, 0x96, + 0x8d, 0x1e, 0x1f, 0x40, 0x30, 0xd0, 0x9f, 0x12, 0xbd, 0x55, 0x38, 0x3a, 0x82, 0x2f, 0x08, 0x56, + 0x4e, 0x44, 0x3f, 0xf5, 0x54, 0x98, 0xa0, 0x20, 0x7b, 0x2b, 0x5a, 0xa7, 0x23, 0x7a, 0x29, 0x46, + 0x46, 0xf5, 0xb2, 0x0b, 0x46, 0x4a, 0x18, 0xc0, 0x46, 0xfa, 0x23, 0xcb, 0x33, 0xb3, 0xd4, 0x0c, + 0x3e, 0xa7, 0x3b, 0xdb, 0xc4, 0xdd, 0x12, 0xfd, 0x84, 0xc8, 0xf2, 0xe2, 0x4d, 0x90, 0xdb, 0x73, + 0x73, 0x0f, 0x70, 0x5d, 0xa5, 0x99, 0xd0, 0x6f, 0x09, 0x07, 0xe6, 0xe4, 0xf4, 0xd3, 0xe7, 0x29, + 0x02, 0x9c, 0x35, 0xc8, 0x76, 0x74, 0xdb, 0x61, 0xe3, 0xc7, 0x6d, 0x89, 0x08, 0x79, 0x0f, 0x15, + 0x07, 0xef, 0xa8, 0x84, 0x0c, 0xba, 0x17, 0x66, 0xc2, 0xa9, 0x02, 0xee, 0xbb, 0xa7, 0x60, 0x82, + 0x1d, 0x2b, 0x63, 0x4b, 0xac, 0xde, 0xab, 0xe0, 0xb2, 0xa6, 0x50, 0x6d, 0xd3, 0xd7, 0x81, 0xff, + 0xfb, 0x28, 0x4c, 0xac, 0xe8, 0xb6, 0x63, 0x5a, 0x97, 0xd0, 0xc3, 0x19, 0x98, 0x38, 0x8b, 0x2d, + 0x5b, 0x37, 0x8d, 0x7d, 0xae, 0x06, 0xd7, 0xc0, 0x74, 0xd7, 0xc2, 0x7b, 0xba, 0xb9, 0x6b, 0x07, + 0x8b, 0x33, 0xe1, 0x24, 0x05, 0xc1, 0xa4, 0xb6, 0xeb, 0x6c, 0x9b, 0x56, 0x10, 0x8d, 0xc2, 0x7b, + 0x57, 0x4e, 0x03, 0xd0, 0xe7, 0xaa, 0xb6, 0x83, 0x99, 0x03, 0x45, 0x28, 0x45, 0x51, 0x20, 0xeb, + 0xe8, 0x3b, 0x98, 0x85, 0xa7, 0x25, 0xcf, 0xae, 0x80, 0x49, 0xa8, 0x37, 0x16, 0x52, 0x4f, 0x56, + 0xbd, 0x57, 0xf4, 0x05, 0x19, 0xa6, 0x97, 0xb1, 0xc3, 0x58, 0xb5, 0xd1, 0xf3, 0x33, 0x42, 0x37, + 0x42, 0xb8, 0x63, 0x6c, 0x47, 0xb3, 0xbd, 0xff, 0xfc, 0x25, 0x58, 0x3e, 0x31, 0x88, 0x95, 0x2b, + 0x87, 0x03, 0x65, 0x93, 0xc0, 0x69, 0x4e, 0x85, 0xfa, 0x65, 0xb2, 0xcc, 0x6c, 0x13, 0x64, 0xff, + 0x07, 0xf4, 0x2e, 0x49, 0xf4, 0xd0, 0x31, 0x93, 0xfd, 0x7c, 0xa8, 0x3e, 0x91, 0xdd, 0xd1, 0xe4, + 0x1e, 0xcb, 0xb1, 0x2f, 0x06, 0x7a, 0x98, 0x12, 0x23, 0xa3, 0xfa, 0xb9, 0x05, 0x8f, 0x2b, 0x0f, + 0xe6, 0x24, 0x7d, 0x6d, 0xfc, 0x8e, 0x0c, 0xd3, 0xf5, 0x6d, 0xf3, 0xa2, 0x27, 0xc7, 0x9f, 0x16, + 0x03, 0xf6, 0x2a, 0x98, 0xda, 0xeb, 0x01, 0x35, 0x48, 0x88, 0xbe, 0xa3, 0x1d, 0x3d, 0x47, 0x4e, + 0x0a, 0x53, 0x88, 0xb9, 0x91, 0xdf, 0xa0, 0xae, 0x3c, 0x05, 0x26, 0x18, 0xd7, 0x6c, 0xc9, 0x25, + 0x1e, 0x60, 0x2f, 0x73, 0xb8, 0x82, 0x59, 0xbe, 0x82, 0xc9, 0x90, 0x8f, 0xae, 0x5c, 0xfa, 0xc8, + 0xff, 0xb1, 0x44, 0x82, 0x55, 0x78, 0xc0, 0x97, 0x46, 0x00, 0x3c, 0xfa, 0x6e, 0x46, 0x74, 0x61, + 0xd2, 0x97, 0x80, 0xcf, 0xc1, 0x81, 0x6e, 0x7b, 0x19, 0x48, 0x2e, 0x7d, 0x79, 0xbe, 0x34, 0x0b, + 0x33, 0x8b, 0xfa, 0xe6, 0xa6, 0xdf, 0x49, 0xbe, 0x40, 0xb0, 0x93, 0x8c, 0x76, 0x07, 0x70, 0xed, + 0xdc, 0x5d, 0xcb, 0xc2, 0x86, 0x57, 0x29, 0xd6, 0x9c, 0x7a, 0x52, 0x95, 0x1b, 0xe0, 0xa8, 0x37, + 0x2e, 0x84, 0x3b, 0xca, 0x29, 0xb5, 0x37, 0x19, 0x7d, 0x5b, 0x78, 0x57, 0xcb, 0x93, 0x68, 0xb8, + 0x4a, 0x11, 0x0d, 0xf0, 0x0e, 0x98, 0xdd, 0xa6, 0xb9, 0xc9, 0xd4, 0xdf, 0xeb, 0x2c, 0x4f, 0xf6, + 0x04, 0x03, 0x5e, 0xc3, 0xb6, 0xad, 0x6d, 0x61, 0x95, 0xcf, 0xdc, 0xd3, 0x7c, 0xe5, 0x24, 0x57, + 0x5b, 0x89, 0x6d, 0x90, 0x09, 0xd4, 0x64, 0x0c, 0xda, 0x71, 0x06, 0xb2, 0x4b, 0x7a, 0x07, 0xa3, + 0x5f, 0x92, 0x60, 0x4a, 0xc5, 0x2d, 0xd3, 0x68, 0xb9, 0x6f, 0x21, 0xe7, 0xa0, 0x7f, 0xcc, 0x88, + 0x5e, 0xe9, 0xe8, 0xd2, 0x99, 0xf7, 0x69, 0x44, 0xb4, 0x1b, 0xb1, 0xab, 0x1b, 0x63, 0x49, 0x8d, + 0xe1, 0x02, 0x0e, 0x77, 0xea, 0xb1, 0xb9, 0xd9, 0x31, 0x35, 0x6e, 0xf1, 0xab, 0xd7, 0x14, 0xba, + 0x11, 0x0a, 0xde, 0x19, 0x10, 0xd3, 0x59, 0xd7, 0x0d, 0xc3, 0x3f, 0x64, 0xbc, 0x2f, 0x9d, 0xdf, + 0xb7, 0x8d, 0x8d, 0xd3, 0x42, 0xea, 0xce, 0x4a, 0x8f, 0xd0, 0xec, 0xeb, 0x61, 0xee, 0xfc, 0x25, + 0x07, 0xdb, 0x2c, 0x17, 0x2b, 0x36, 0xab, 0xf6, 0xa4, 0x86, 0xa2, 0x2c, 0xc7, 0xc5, 0x73, 0x89, + 0x29, 0x30, 0x99, 0xa8, 0x57, 0x86, 0x98, 0x01, 0x1e, 0x87, 0x42, 0xb5, 0xb6, 0x58, 0x26, 0xbe, + 0x6a, 0x9e, 0xf7, 0xcf, 0x16, 0x7a, 0xa1, 0x0c, 0x33, 0xc4, 0x99, 0xc4, 0x43, 0xe1, 0x5a, 0x81, + 0xf9, 0x08, 0x7a, 0x44, 0xd8, 0x8f, 0x8d, 0x54, 0x39, 0x5c, 0x40, 0xb4, 0xa0, 0x37, 0xf5, 0x4e, + 0xaf, 0xa0, 0x73, 0x6a, 0x4f, 0x6a, 0x1f, 0x40, 0xe4, 0xbe, 0x80, 0xfc, 0xae, 0x90, 0x33, 0xdb, + 0x20, 0xee, 0x0e, 0x0b, 0x95, 0xdf, 0x93, 0x61, 0xda, 0x9d, 0xa4, 0x78, 0xa0, 0xd4, 0x38, 0x50, + 0x4c, 0xa3, 0x73, 0x29, 0x58, 0x16, 0xf1, 0x5e, 0x13, 0x35, 0x92, 0xbf, 0x14, 0x9e, 0xb9, 0x13, + 0x11, 0x85, 0x78, 0x19, 0x13, 0x7e, 0xef, 0x13, 0x9a, 0xcf, 0x0f, 0x60, 0xee, 0xb0, 0xe0, 0xfb, + 0x5a, 0x0e, 0xf2, 0x1b, 0x5d, 0x82, 0xdc, 0x6f, 0xc9, 0x22, 0x11, 0xcb, 0xf7, 0x1d, 0x64, 0x70, + 0xcd, 0xac, 0x8e, 0xd9, 0xd2, 0x3a, 0xeb, 0xc1, 0x89, 0xb0, 0x20, 0x41, 0xb9, 0x9d, 0xf9, 0x36, + 0xd2, 0xe3, 0x76, 0xd7, 0xc7, 0x06, 0xf3, 0x26, 0x32, 0x0a, 0x1d, 0x1a, 0xb9, 0x09, 0x8e, 0xb5, + 0x75, 0x5b, 0x3b, 0xdf, 0xc1, 0x65, 0xa3, 0x65, 0x5d, 0xa2, 0xe2, 0x60, 0xd3, 0xaa, 0x7d, 0x1f, + 0x94, 0x3b, 0x21, 0x67, 0x3b, 0x97, 0x3a, 0x74, 0x9e, 0x18, 0x3e, 0x63, 0x12, 0x59, 0x54, 0xdd, + 0xcd, 0xae, 0xd2, 0xbf, 0xc2, 0x2e, 0x4a, 0x13, 0x82, 0xf7, 0x39, 0x3f, 0x09, 0xf2, 0xa6, 0xa5, + 0x6f, 0xe9, 0xf4, 0x7e, 0x9e, 0xb9, 0x7d, 0x31, 0xeb, 0xa8, 0x29, 0x50, 0x23, 0x59, 0x54, 0x96, + 0x55, 0x79, 0x0a, 0x4c, 0xe9, 0x3b, 0xda, 0x16, 0xbe, 0x4f, 0x37, 0xe8, 0x89, 0xbe, 0xb9, 0x5b, + 0x4f, 0xed, 0x3b, 0x3e, 0xc3, 0xbe, 0xab, 0x41, 0x56, 0xf4, 0x3e, 0x49, 0x34, 0xb0, 0x0e, 0xa9, + 0x1b, 0x05, 0x75, 0x2c, 0xf7, 0x5a, 0xa3, 0x57, 0x08, 0x85, 0xbc, 0x89, 0x66, 0x2b, 0xfd, 0xc1, + 0xfb, 0xf3, 0x12, 0x4c, 0x2e, 0x9a, 0x17, 0x0d, 0xa2, 0xe8, 0xb7, 0x89, 0xd9, 0xba, 0x7d, 0x0e, + 0x39, 0xf2, 0xd7, 0x46, 0xc6, 0x9e, 0x68, 0x20, 0xb5, 0xf5, 0x8a, 0x8c, 0x80, 0x21, 0xb6, 0xe5, + 0x08, 0x5e, 0xe6, 0x17, 0x57, 0x4e, 0xfa, 0x72, 0xfd, 0x13, 0x19, 0xb2, 0x8b, 0x96, 0xd9, 0x45, + 0x6f, 0xc9, 0x24, 0x70, 0x59, 0x68, 0x5b, 0x66, 0xb7, 0x41, 0x6e, 0xe3, 0x0a, 0x8e, 0x71, 0x84, + 0xd3, 0x94, 0xdb, 0x60, 0xb2, 0x6b, 0xda, 0xba, 0xe3, 0x4d, 0x23, 0xe6, 0x6e, 0x7d, 0x4c, 0xdf, + 0xd6, 0xbc, 0xce, 0x32, 0xa9, 0x7e, 0x76, 0xb7, 0xd7, 0x26, 0x22, 0x74, 0xe5, 0xe2, 0x8a, 0xd1, + 0xbb, 0x91, 0xac, 0x27, 0x15, 0xbd, 0x28, 0x8c, 0xe4, 0xd3, 0x78, 0x24, 0x1f, 0xdb, 0x47, 0xc2, + 0x96, 0xd9, 0x1d, 0xc9, 0x26, 0xe3, 0xcb, 0x7c, 0x54, 0xef, 0xe2, 0x50, 0xbd, 0x51, 0xa8, 0xcc, + 0xf4, 0x11, 0x7d, 0x5f, 0x16, 0x80, 0x98, 0x19, 0x1b, 0xee, 0x04, 0x48, 0xcc, 0xc6, 0xfa, 0x85, + 0x6c, 0x48, 0x96, 0x45, 0x5e, 0x96, 0x8f, 0x8f, 0xb0, 0x62, 0x08, 0xf9, 0x08, 0x89, 0x16, 0x21, + 0xb7, 0xeb, 0x7e, 0x66, 0x12, 0x15, 0x24, 0x41, 0x5e, 0x55, 0xfa, 0x27, 0xfa, 0xe3, 0x0c, 0xe4, + 0x48, 0x82, 0x72, 0x1a, 0x80, 0x0c, 0xec, 0xf4, 0x40, 0x50, 0x86, 0x0c, 0xe1, 0xa1, 0x14, 0xa2, + 0xad, 0x7a, 0x9b, 0x7d, 0xa6, 0x26, 0x73, 0x90, 0xe0, 0xfe, 0x4d, 0x86, 0x7b, 0x42, 0x8b, 0x19, + 0x00, 0xa1, 0x14, 0xf7, 0x6f, 0xf2, 0xb6, 0x8a, 0x37, 0x69, 0xa0, 0xe4, 0xac, 0x1a, 0x24, 0xf8, + 0x7f, 0xaf, 0xfa, 0xd7, 0x6b, 0x79, 0x7f, 0x93, 0x14, 0x77, 0x32, 0x4c, 0xd4, 0x72, 0x21, 0x28, + 0x22, 0x4f, 0x32, 0xf5, 0x26, 0xa3, 0xd7, 0xf8, 0x6a, 0xb3, 0xc8, 0xa9, 0xcd, 0x2d, 0x09, 0xc4, + 0x9b, 0xbe, 0xf2, 0x7c, 0x25, 0x07, 0x53, 0x55, 0xb3, 0xcd, 0x74, 0x27, 0x34, 0x61, 0xfc, 0x78, + 0x2e, 0xd1, 0x84, 0xd1, 0xa7, 0x11, 0xa1, 0x20, 0xf7, 0xf0, 0x0a, 0x22, 0x46, 0x21, 0xac, 0x1f, + 0xca, 0x02, 0xe4, 0x89, 0xf6, 0xee, 0xbf, 0xb7, 0x29, 0x8e, 0x04, 0x11, 0xad, 0xca, 0xfe, 0xfc, + 0x0f, 0xa7, 0x63, 0xff, 0x15, 0x72, 0xa4, 0x82, 0x31, 0xbb, 0x3b, 0x7c, 0x45, 0xa5, 0xf8, 0x8a, + 0xca, 0xf1, 0x15, 0xcd, 0xf6, 0x56, 0x34, 0xc9, 0x3a, 0x40, 0x94, 0x86, 0xa4, 0xaf, 0xe3, 0xff, + 0x30, 0x01, 0x50, 0xd5, 0xf6, 0xf4, 0x2d, 0xba, 0x3b, 0xfc, 0x05, 0x6f, 0xfe, 0xc3, 0xf6, 0x71, + 0xff, 0x5b, 0x68, 0x20, 0xbc, 0x0d, 0x26, 0xd8, 0xb8, 0xc7, 0x2a, 0x72, 0x35, 0x57, 0x91, 0x80, + 0x0a, 0x35, 0x4b, 0x1f, 0x74, 0x54, 0x2f, 0x3f, 0x77, 0xc5, 0xac, 0xd4, 0x73, 0xc5, 0x6c, 0xff, + 0x3d, 0x88, 0x88, 0x8b, 0x67, 0xd1, 0xbb, 0x85, 0x3d, 0xfa, 0x43, 0xfc, 0x84, 0x6a, 0x14, 0xd1, + 0x04, 0x9f, 0x04, 0x13, 0xa6, 0xbf, 0xa1, 0x2d, 0x47, 0xae, 0x83, 0x55, 0x8c, 0x4d, 0x53, 0xf5, + 0x72, 0x0a, 0x6e, 0x7e, 0x09, 0xf1, 0x31, 0x96, 0x43, 0x33, 0x27, 0x97, 0xbd, 0xa0, 0x53, 0x6e, + 0x3d, 0xce, 0xe9, 0xce, 0xf6, 0xaa, 0x6e, 0x5c, 0xb0, 0xd1, 0x7f, 0x16, 0xb3, 0x20, 0x43, 0xf8, + 0x4b, 0xc9, 0xf0, 0xe7, 0x63, 0x76, 0xd4, 0x79, 0xd4, 0xee, 0x8c, 0xa2, 0xd2, 0x9f, 0xdb, 0x08, + 0x00, 0x6f, 0x87, 0x3c, 0x65, 0x94, 0x75, 0xa2, 0x67, 0x22, 0xf1, 0xf3, 0x29, 0xa9, 0xec, 0x0f, + 0xf4, 0x2e, 0x1f, 0xc7, 0xb3, 0x1c, 0x8e, 0x0b, 0x07, 0xe2, 0x2c, 0x75, 0x48, 0xcf, 0x3c, 0x11, + 0x26, 0x98, 0xa4, 0x95, 0xb9, 0x70, 0x2b, 0x2e, 0x1c, 0x51, 0x00, 0xf2, 0x6b, 0xe6, 0x1e, 0x6e, + 0x98, 0x85, 0x8c, 0xfb, 0xec, 0xf2, 0xd7, 0x30, 0x0b, 0x12, 0x7a, 0xf9, 0x24, 0x4c, 0xfa, 0xd1, + 0x7e, 0x3e, 0x2f, 0x41, 0xa1, 0x64, 0x61, 0xcd, 0xc1, 0x4b, 0x96, 0xb9, 0x43, 0x6b, 0x24, 0xee, + 0x1d, 0xfa, 0x1b, 0xc2, 0x2e, 0x1e, 0x7e, 0x14, 0x9e, 0xde, 0xc2, 0x22, 0xb0, 0xa4, 0x8b, 0x90, + 0x92, 0xb7, 0x08, 0x89, 0xde, 0x2c, 0xe4, 0xf2, 0x21, 0x5a, 0x4a, 0xfa, 0x4d, 0xed, 0xd3, 0x12, + 0xe4, 0x4a, 0x1d, 0xd3, 0xc0, 0xe1, 0x23, 0x4c, 0x03, 0xcf, 0xca, 0xf4, 0xdf, 0x89, 0x40, 0xcf, + 0x94, 0x44, 0x6d, 0x8d, 0x40, 0x00, 0x6e, 0xd9, 0x82, 0xb2, 0x15, 0x1b, 0xa4, 0x62, 0x49, 0xa7, + 0x2f, 0xd0, 0x6f, 0x48, 0x30, 0x45, 0xe3, 0xe2, 0x14, 0x3b, 0x1d, 0xf4, 0x98, 0x40, 0xa8, 0x7d, + 0x22, 0x26, 0xa1, 0xdf, 0x15, 0x76, 0xd1, 0xf7, 0x6b, 0xe5, 0xd3, 0x4e, 0x10, 0x20, 0x28, 0x99, + 0xc7, 0xb8, 0xd8, 0x5e, 0xda, 0x40, 0x86, 0xd2, 0x17, 0xf5, 0x9f, 0x4b, 0xae, 0x01, 0x60, 0x5c, + 0x58, 0xb7, 0xf0, 0x9e, 0x8e, 0x2f, 0xa2, 0x2b, 0x03, 0x61, 0xef, 0x0f, 0xfa, 0xf1, 0x06, 0xe1, + 0x45, 0x9c, 0x10, 0xc9, 0xc8, 0xad, 0xac, 0xe9, 0x4e, 0x90, 0x89, 0xf5, 0xe2, 0xbd, 0x91, 0x58, + 0x42, 0x64, 0xd4, 0x70, 0x76, 0xc1, 0x35, 0x9b, 0x68, 0x2e, 0xd2, 0x17, 0xec, 0x07, 0x27, 0x60, + 0x72, 0xc3, 0xb0, 0xbb, 0x1d, 0xcd, 0xde, 0x46, 0xdf, 0x93, 0x21, 0x4f, 0x6f, 0x0b, 0x43, 0x3f, + 0xc6, 0xc5, 0x16, 0xf8, 0x99, 0x5d, 0x6c, 0x79, 0x2e, 0x38, 0xf4, 0xa5, 0xff, 0x65, 0xe6, 0xe8, + 0x7d, 0xb2, 0xe8, 0x24, 0xd5, 0x2b, 0x34, 0x74, 0x6d, 0x7c, 0xff, 0xe3, 0xec, 0x5d, 0xbd, 0xe5, + 0xec, 0x5a, 0xfe, 0xd5, 0xd8, 0x4f, 0x10, 0xa3, 0xb2, 0x4e, 0xff, 0x52, 0xfd, 0xdf, 0x91, 0x06, + 0x13, 0x2c, 0x71, 0xdf, 0x76, 0xd2, 0xfe, 0xf3, 0xb7, 0x27, 0x21, 0xaf, 0x59, 0x8e, 0x6e, 0x3b, + 0x6c, 0x83, 0x95, 0xbd, 0xb9, 0xdd, 0x25, 0x7d, 0xda, 0xb0, 0x3a, 0x5e, 0x14, 0x12, 0x3f, 0x01, + 0xfd, 0x9e, 0xd0, 0xfc, 0x31, 0xbe, 0xe6, 0xc9, 0x20, 0xbf, 0x6f, 0x88, 0x35, 0xea, 0xcb, 0xe1, + 0x32, 0xb5, 0xd8, 0x28, 0x37, 0x69, 0xd0, 0x0a, 0x3f, 0x3e, 0x45, 0x1b, 0xbd, 0x53, 0x0e, 0xad, + 0xdf, 0x5d, 0xe2, 0xc6, 0x08, 0x26, 0xc5, 0x60, 0x8c, 0xf0, 0x13, 0x62, 0x76, 0xab, 0xb9, 0x45, + 0x58, 0x59, 0x7c, 0x11, 0xf6, 0x4d, 0xc2, 0xbb, 0x49, 0xbe, 0x28, 0x07, 0xac, 0x01, 0xc6, 0xdd, + 0x26, 0xf4, 0x7e, 0xa1, 0x9d, 0xa1, 0x41, 0x25, 0x1d, 0x22, 0x6c, 0xaf, 0x9f, 0x80, 0x89, 0x65, + 0xad, 0xd3, 0xc1, 0xd6, 0x25, 0x77, 0x48, 0x2a, 0x78, 0x1c, 0xae, 0x69, 0x86, 0xbe, 0x89, 0x6d, + 0x27, 0xbe, 0xb3, 0x7c, 0xb7, 0x70, 0xa4, 0x5a, 0x56, 0xc6, 0x7c, 0x2f, 0xfd, 0x08, 0x99, 0xdf, + 0x0c, 0x59, 0xdd, 0xd8, 0x34, 0x59, 0x97, 0xd9, 0xbb, 0x6a, 0xef, 0xfd, 0x4c, 0xa6, 0x2e, 0x24, + 0xa3, 0x60, 0xb0, 0x5a, 0x41, 0x2e, 0xd2, 0xef, 0x39, 0x7f, 0x27, 0x0b, 0xb3, 0x1e, 0x13, 0x15, + 0xa3, 0x8d, 0x1f, 0x0c, 0x2f, 0xc5, 0xbc, 0x30, 0x2b, 0x7a, 0x1c, 0xac, 0xb7, 0x3e, 0x84, 0x54, + 0x84, 0x48, 0x1b, 0x00, 0x2d, 0xcd, 0xc1, 0x5b, 0xa6, 0xa5, 0xfb, 0xfd, 0xe1, 0x93, 0x93, 0x50, + 0x2b, 0xd1, 0xbf, 0x2f, 0xa9, 0x21, 0x3a, 0xca, 0x9d, 0x30, 0x8d, 0xfd, 0xf3, 0xf7, 0xde, 0x52, + 0x4d, 0x2c, 0x5e, 0xe1, 0xfc, 0xe8, 0xcf, 0x85, 0x4e, 0x9d, 0x89, 0x54, 0x33, 0x19, 0x66, 0xcd, + 0xe1, 0xda, 0xd0, 0x46, 0x75, 0xad, 0xa8, 0xd6, 0x57, 0x8a, 0xab, 0xab, 0x95, 0xea, 0xb2, 0x1f, + 0xf8, 0x45, 0x81, 0xb9, 0xc5, 0xda, 0xb9, 0x6a, 0x28, 0x32, 0x4f, 0x16, 0xad, 0xc3, 0xa4, 0x27, + 0xaf, 0x7e, 0xbe, 0x98, 0x61, 0x99, 0x31, 0x5f, 0xcc, 0x50, 0x92, 0x6b, 0x9c, 0xe9, 0x2d, 0xdf, + 0x41, 0x87, 0x3c, 0xa3, 0x3f, 0xd2, 0x20, 0x47, 0xd6, 0xd4, 0xd1, 0xdb, 0xc9, 0x36, 0x60, 0xb7, + 0xa3, 0xb5, 0x30, 0xda, 0x49, 0x60, 0x8d, 0x7b, 0x57, 0x27, 0x48, 0xfb, 0xae, 0x4e, 0x20, 0x8f, + 0xcc, 0xea, 0x3b, 0xde, 0x6f, 0x1d, 0x5f, 0xa5, 0x59, 0xf8, 0x03, 0x5a, 0xb1, 0xbb, 0x2b, 0x74, + 0xf9, 0x9f, 0xb1, 0x19, 0xa1, 0x92, 0xd1, 0x3c, 0x25, 0xb3, 0x44, 0xc5, 0xf6, 0x61, 0xe2, 0x38, + 0x1a, 0xc3, 0xf5, 0xde, 0x59, 0xc8, 0xd5, 0xbb, 0x1d, 0xdd, 0x41, 0x2f, 0x91, 0x46, 0x82, 0x19, + 0xbd, 0xee, 0x42, 0x1e, 0x78, 0xdd, 0x45, 0xb0, 0xeb, 0x9a, 0x15, 0xd8, 0x75, 0x6d, 0xe0, 0x07, + 0x1d, 0x7e, 0xd7, 0xf5, 0x36, 0x16, 0xbc, 0x8d, 0xee, 0xd9, 0x3e, 0xb6, 0x8f, 0x48, 0x49, 0xb5, + 0xfa, 0x44, 0x05, 0x3c, 0xf3, 0x44, 0x16, 0x9c, 0x0c, 0x20, 0xbf, 0x50, 0x6b, 0x34, 0x6a, 0x6b, + 0x85, 0x23, 0x24, 0xaa, 0x4d, 0x6d, 0x9d, 0x86, 0x8a, 0xa9, 0x54, 0xab, 0x65, 0xb5, 0x20, 0x91, + 0x70, 0x69, 0x95, 0xc6, 0x6a, 0xb9, 0x20, 0xf3, 0xb1, 0xcf, 0x63, 0xcd, 0x6f, 0xbe, 0xec, 0x34, + 0xd5, 0x4b, 0xcc, 0x10, 0x8f, 0xe6, 0x27, 0x7d, 0xe5, 0xfa, 0x75, 0x19, 0x72, 0x6b, 0xd8, 0xda, + 0xc2, 0xe8, 0x67, 0x12, 0x6c, 0xf2, 0x6d, 0xea, 0x96, 0x4d, 0x83, 0xcb, 0x05, 0x9b, 0x7c, 0xe1, + 0x34, 0xe5, 0x3a, 0x98, 0xb5, 0x71, 0xcb, 0x34, 0xda, 0x5e, 0x26, 0xda, 0x1f, 0xf1, 0x89, 0xfc, + 0xbd, 0xf3, 0x02, 0x90, 0x11, 0x46, 0x47, 0xb2, 0x53, 0x97, 0x04, 0x98, 0x7e, 0xa5, 0xa6, 0x0f, + 0xcc, 0xb7, 0x65, 0xf7, 0xa7, 0xee, 0x25, 0xf4, 0x62, 0xe1, 0xdd, 0xd7, 0x9b, 0x20, 0x4f, 0xd4, + 0xd4, 0x1b, 0xa3, 0xfb, 0xf7, 0xc7, 0x2c, 0x8f, 0xb2, 0x00, 0xc7, 0x6c, 0xdc, 0xc1, 0x2d, 0x07, + 0xb7, 0xdd, 0xa6, 0xab, 0x0e, 0xec, 0x14, 0xf6, 0x67, 0x47, 0x7f, 0x1a, 0x06, 0xf0, 0x0e, 0x1e, + 0xc0, 0xeb, 0xfb, 0x88, 0xd2, 0xad, 0x50, 0xb4, 0xad, 0xec, 0x56, 0xa3, 0xde, 0x31, 0xfd, 0x45, + 0x71, 0xef, 0xdd, 0xfd, 0xb6, 0xed, 0xec, 0x74, 0xc8, 0x37, 0x76, 0xc0, 0xc0, 0x7b, 0x57, 0xe6, + 0x61, 0x42, 0x33, 0x2e, 0x91, 0x4f, 0xd9, 0x98, 0x5a, 0x7b, 0x99, 0xd0, 0xcb, 0x7d, 0xe4, 0xef, + 0xe6, 0x90, 0x7f, 0xbc, 0x18, 0xbb, 0xe9, 0x03, 0xff, 0xf3, 0x13, 0x90, 0x5b, 0xd7, 0x6c, 0x07, + 0xa3, 0xff, 0x4b, 0x16, 0x45, 0xfe, 0x7a, 0x98, 0xdb, 0x34, 0x5b, 0xbb, 0x36, 0x6e, 0xf3, 0x8d, + 0xb2, 0x27, 0x75, 0x14, 0x98, 0x2b, 0x37, 0x42, 0xc1, 0x4b, 0x64, 0x64, 0xbd, 0x6d, 0xf8, 0x7d, + 0xe9, 0x24, 0x92, 0xb6, 0xbd, 0xae, 0x59, 0x4e, 0x6d, 0x93, 0xa4, 0xf9, 0x91, 0xb4, 0xc3, 0x89, + 0x1c, 0xf4, 0xf9, 0x18, 0xe8, 0x27, 0xa2, 0xa1, 0x9f, 0x14, 0x80, 0x5e, 0x29, 0xc2, 0xe4, 0xa6, + 0xde, 0xc1, 0xe4, 0x87, 0x29, 0xf2, 0x43, 0xbf, 0x31, 0x89, 0xc8, 0xde, 0x1f, 0x93, 0x96, 0xf4, + 0x0e, 0x56, 0xfd, 0xdf, 0xbc, 0x89, 0x0c, 0x04, 0x13, 0x99, 0x55, 0xea, 0x4f, 0xeb, 0x1a, 0x5e, + 0x86, 0xb6, 0x83, 0xbd, 0xc5, 0x37, 0x83, 0x1d, 0x6e, 0x69, 0x6b, 0x8e, 0x46, 0xc0, 0x98, 0x51, + 0xc9, 0x33, 0xef, 0x17, 0x22, 0xf7, 0xfa, 0x85, 0x3c, 0x5b, 0x4e, 0xd6, 0x23, 0x7a, 0xcc, 0x46, + 0xb4, 0xa8, 0xf3, 0x1e, 0x40, 0xd4, 0x52, 0xf4, 0xdf, 0x5d, 0x60, 0x5a, 0x9a, 0x85, 0x9d, 0xf5, + 0xb0, 0x27, 0x46, 0x4e, 0xe5, 0x13, 0x89, 0x2b, 0x9f, 0x5d, 0xd7, 0x76, 0x30, 0x29, 0xac, 0xe4, + 0x7e, 0x63, 0x2e, 0x5a, 0xfb, 0xd2, 0x83, 0xfe, 0x37, 0x37, 0xea, 0xfe, 0xb7, 0x5f, 0x1d, 0xd3, + 0x6f, 0x86, 0xaf, 0xca, 0x82, 0x5c, 0xda, 0x75, 0x1e, 0xd5, 0xdd, 0xef, 0xf7, 0x85, 0xfd, 0x5c, + 0x58, 0x7f, 0x16, 0x79, 0xd1, 0xfc, 0x98, 0x7a, 0xdf, 0x84, 0x5a, 0x22, 0xe6, 0x4f, 0x13, 0x55, + 0xb7, 0x31, 0xdc, 0x6b, 0x20, 0xfb, 0x0e, 0x96, 0x0f, 0x65, 0x0e, 0x6e, 0x9a, 0x23, 0xda, 0x3f, + 0x85, 0x7a, 0x06, 0xff, 0xdd, 0xeb, 0x78, 0xb2, 0x5c, 0xac, 0x3e, 0xb2, 0xbd, 0x4e, 0x44, 0x39, + 0xa3, 0xd2, 0x17, 0xf4, 0x52, 0x61, 0xb7, 0x73, 0x2a, 0xb6, 0x58, 0x57, 0xc2, 0x64, 0x36, 0x95, + 0xd8, 0x65, 0xa2, 0x31, 0xc5, 0xa6, 0x0f, 0xd8, 0xb7, 0xc2, 0xae, 0x82, 0xc5, 0x03, 0x23, 0x86, + 0x5e, 0x21, 0xbc, 0x1d, 0x45, 0xab, 0x3d, 0x60, 0xbd, 0x30, 0x99, 0xbc, 0xc5, 0x36, 0xab, 0x62, + 0x0b, 0x4e, 0x5f, 0xe2, 0xdf, 0x94, 0x21, 0x4f, 0xb7, 0x20, 0xd1, 0x1b, 0x33, 0x09, 0x6e, 0x61, + 0x77, 0x78, 0x17, 0x42, 0xff, 0x3d, 0xc9, 0x9a, 0x03, 0xe7, 0x6a, 0x98, 0x4d, 0xe4, 0x6a, 0xc8, + 0x9f, 0xe3, 0x14, 0x68, 0x47, 0xb4, 0x8e, 0x29, 0x4f, 0x27, 0x93, 0xb4, 0xb0, 0xbe, 0x0c, 0xa5, + 0x8f, 0xf7, 0x2f, 0xe6, 0x60, 0x86, 0x16, 0x7d, 0x4e, 0x6f, 0x6f, 0x61, 0x07, 0xbd, 0x53, 0xfa, + 0xc1, 0x41, 0x5d, 0xa9, 0xc2, 0xcc, 0x45, 0xc2, 0xf6, 0xaa, 0x76, 0xc9, 0xdc, 0x75, 0xd8, 0xca, + 0xc5, 0x8d, 0xb1, 0xeb, 0x1e, 0xb4, 0x9e, 0xf3, 0xf4, 0x0f, 0x95, 0xfb, 0xdf, 0x95, 0x31, 0x5d, + 0xf0, 0xa7, 0x0e, 0x5c, 0x79, 0x62, 0x64, 0x85, 0x93, 0x94, 0x93, 0x90, 0xdf, 0xd3, 0xf1, 0xc5, + 0x4a, 0x9b, 0x59, 0xb7, 0xec, 0x0d, 0xfd, 0x81, 0xf0, 0xbe, 0x6d, 0x18, 0x6e, 0xc6, 0x4b, 0xba, + 0x5a, 0x28, 0xb6, 0x7b, 0x3b, 0x90, 0xad, 0x31, 0x9c, 0x29, 0xe6, 0x2f, 0xeb, 0x2c, 0x25, 0x50, + 0xc4, 0x28, 0xc3, 0x99, 0x0f, 0xe5, 0x11, 0x7b, 0x62, 0x85, 0x0a, 0x60, 0xc4, 0xf7, 0x78, 0x8a, + 0xc5, 0x97, 0x18, 0x50, 0x74, 0xfa, 0x92, 0x7f, 0x8d, 0x0c, 0x53, 0x75, 0xec, 0x2c, 0xe9, 0xb8, + 0xd3, 0xb6, 0x91, 0x75, 0x70, 0xd3, 0xe8, 0x66, 0xc8, 0x6f, 0x12, 0x62, 0x83, 0xce, 0x2d, 0xb0, + 0x6c, 0xe8, 0x55, 0x92, 0xe8, 0x8e, 0x30, 0x5b, 0x7d, 0xf3, 0xb8, 0x1d, 0x09, 0x4c, 0x62, 0x1e, + 0xbd, 0xf1, 0x25, 0x8f, 0x21, 0xb0, 0xad, 0x0c, 0x33, 0xec, 0x76, 0xbf, 0x62, 0x47, 0xdf, 0x32, + 0xd0, 0xee, 0x08, 0x5a, 0x88, 0x72, 0x0b, 0xe4, 0x34, 0x97, 0x1a, 0xdb, 0x7a, 0x45, 0x7d, 0x3b, + 0x4f, 0x52, 0x9e, 0x4a, 0x33, 0x26, 0x08, 0x23, 0x19, 0x28, 0xb6, 0xc7, 0xf3, 0x18, 0xc3, 0x48, + 0x0e, 0x2c, 0x3c, 0x7d, 0xc4, 0xbe, 0x2c, 0xc3, 0x71, 0xc6, 0xc0, 0x59, 0x6c, 0x39, 0x7a, 0x4b, + 0xeb, 0x50, 0xe4, 0x9e, 0x97, 0x19, 0x05, 0x74, 0x2b, 0x30, 0xbb, 0x17, 0x26, 0xcb, 0x20, 0x3c, + 0xd3, 0x17, 0x42, 0x8e, 0x01, 0x95, 0xff, 0x31, 0x41, 0x38, 0x3e, 0x4e, 0xaa, 0x1c, 0xcd, 0x31, + 0x86, 0xe3, 0x13, 0x66, 0x22, 0x7d, 0x88, 0x5f, 0xc4, 0x42, 0xf3, 0x04, 0xdd, 0xe7, 0x17, 0x84, + 0xb1, 0xdd, 0x80, 0x69, 0x82, 0x25, 0xfd, 0x91, 0x2d, 0x43, 0xc4, 0x28, 0xb1, 0xdf, 0xef, 0xb0, + 0x0b, 0xc3, 0xfc, 0x7f, 0xd5, 0x30, 0x1d, 0x74, 0x0e, 0x20, 0xf8, 0x14, 0xee, 0xa4, 0x33, 0x51, + 0x9d, 0xb4, 0x24, 0xd6, 0x49, 0xbf, 0x41, 0x38, 0x58, 0x4a, 0x7f, 0xb6, 0x0f, 0xae, 0x1e, 0x62, + 0x61, 0x32, 0x06, 0x97, 0x9e, 0xbe, 0x5e, 0xbc, 0x3c, 0xdb, 0x7b, 0x8d, 0xfb, 0x47, 0x46, 0x32, + 0x9f, 0x0a, 0xf7, 0x07, 0x72, 0x4f, 0x7f, 0x70, 0x00, 0x4b, 0xfa, 0x06, 0x38, 0x4a, 0x8b, 0x28, + 0xf9, 0x6c, 0xe5, 0x68, 0x28, 0x88, 0x9e, 0x64, 0xf4, 0xd1, 0x21, 0x94, 0x60, 0xd0, 0x1d, 0xf3, + 0x71, 0x9d, 0x5c, 0x32, 0x63, 0x37, 0xa9, 0x82, 0x1c, 0xde, 0xd5, 0xf4, 0xdf, 0xc8, 0x52, 0x6b, + 0x77, 0x83, 0xdc, 0xe9, 0x86, 0xfe, 0x22, 0x3b, 0x8a, 0x11, 0xe1, 0x1e, 0xc8, 0x12, 0x17, 0x77, + 0x39, 0x72, 0x49, 0x23, 0x28, 0x32, 0xb8, 0x70, 0x0f, 0x3f, 0xe8, 0xac, 0x1c, 0x51, 0xc9, 0x9f, + 0xca, 0x8d, 0x70, 0xf4, 0xbc, 0xd6, 0xba, 0xb0, 0x65, 0x99, 0xbb, 0xe4, 0xf6, 0x2b, 0x93, 0x5d, + 0xa3, 0x45, 0xae, 0x23, 0xe4, 0x3f, 0x28, 0xb7, 0x7a, 0xa6, 0x43, 0x6e, 0x90, 0xe9, 0xb0, 0x72, + 0x84, 0x19, 0x0f, 0xca, 0x13, 0xfd, 0x4e, 0x27, 0x1f, 0xdb, 0xe9, 0xac, 0x1c, 0xf1, 0xba, 0x1d, + 0x65, 0x11, 0x26, 0xdb, 0xfa, 0x1e, 0xd9, 0xaa, 0x26, 0xb3, 0xae, 0x41, 0x47, 0x97, 0x17, 0xf5, + 0x3d, 0xba, 0xb1, 0xbd, 0x72, 0x44, 0xf5, 0xff, 0x54, 0x96, 0x61, 0x8a, 0x6c, 0x0b, 0x10, 0x32, + 0x93, 0x89, 0x8e, 0x25, 0xaf, 0x1c, 0x51, 0x83, 0x7f, 0x5d, 0xeb, 0x23, 0x4b, 0xce, 0x7e, 0xdc, + 0xed, 0x6d, 0xb7, 0x67, 0x12, 0x6d, 0xb7, 0xbb, 0xb2, 0xa0, 0x1b, 0xee, 0x27, 0x21, 0xd7, 0x22, + 0x12, 0x96, 0x98, 0x84, 0xe9, 0xab, 0x72, 0x07, 0x64, 0x77, 0x34, 0xcb, 0x9b, 0x3c, 0x5f, 0x3f, + 0x98, 0xee, 0x9a, 0x66, 0x5d, 0x70, 0x11, 0x74, 0xff, 0x5a, 0x98, 0x80, 0x1c, 0x11, 0x9c, 0xff, + 0x80, 0xde, 0x92, 0xa5, 0x66, 0x48, 0xc9, 0x34, 0xdc, 0x61, 0xbf, 0x61, 0x7a, 0x07, 0x64, 0xfe, + 0x20, 0x33, 0x1a, 0x0b, 0xb2, 0xef, 0xbd, 0xe7, 0x72, 0xe4, 0xbd, 0xe7, 0x3d, 0x17, 0xf0, 0x66, + 0x7b, 0x2f, 0xe0, 0x0d, 0x96, 0x0f, 0x72, 0x83, 0x1d, 0x55, 0xfe, 0x74, 0x08, 0xd3, 0xa5, 0x57, + 0x10, 0xd1, 0x33, 0xf0, 0x8e, 0x6e, 0x84, 0xea, 0xec, 0xbd, 0x26, 0xec, 0x94, 0x92, 0x1a, 0x35, + 0x03, 0xd8, 0x4b, 0xbf, 0x6f, 0xfa, 0xed, 0x2c, 0x9c, 0xa2, 0xd7, 0x3c, 0xef, 0xe1, 0x86, 0xc9, + 0xdf, 0x37, 0x89, 0x3e, 0x35, 0x12, 0xa5, 0xe9, 0x33, 0xe0, 0xc8, 0x7d, 0x07, 0x9c, 0x7d, 0x87, + 0x94, 0xb3, 0x03, 0x0e, 0x29, 0xe7, 0x92, 0xad, 0x1c, 0x7e, 0x20, 0xac, 0x3f, 0xeb, 0xbc, 0xfe, + 0xdc, 0x1e, 0x01, 0x50, 0x3f, 0xb9, 0x8c, 0xc4, 0xbe, 0x79, 0xbb, 0xaf, 0x29, 0x75, 0x4e, 0x53, + 0xee, 0x1e, 0x9e, 0x91, 0xf4, 0xb5, 0xe5, 0xf7, 0xb3, 0x70, 0x59, 0xc0, 0x4c, 0x15, 0x5f, 0x64, + 0x8a, 0xf2, 0xf9, 0x91, 0x28, 0x4a, 0xf2, 0x18, 0x08, 0x69, 0x6b, 0xcc, 0x1f, 0x0b, 0x9f, 0x1d, + 0xea, 0x05, 0xca, 0x97, 0x4d, 0x84, 0xb2, 0x9c, 0x84, 0x3c, 0xed, 0x61, 0x18, 0x34, 0xec, 0x2d, + 0x61, 0x77, 0x23, 0x76, 0xe2, 0x48, 0x94, 0xb7, 0x31, 0xe8, 0x0f, 0x5b, 0xd7, 0x68, 0xec, 0x5a, + 0x46, 0xc5, 0x70, 0x4c, 0xf4, 0x73, 0x23, 0x51, 0x1c, 0xdf, 0x1b, 0x4e, 0x1e, 0xc6, 0x1b, 0x6e, + 0xa8, 0x55, 0x0e, 0xaf, 0x06, 0x87, 0xb2, 0xca, 0x11, 0x51, 0x78, 0xfa, 0xf8, 0xbd, 0x4d, 0x86, + 0x93, 0x6c, 0xb2, 0xb5, 0xc0, 0x5b, 0x88, 0xe8, 0xfe, 0x51, 0x00, 0x79, 0xdc, 0x33, 0x93, 0xd8, + 0x2d, 0x67, 0xe4, 0x85, 0x3f, 0x29, 0x15, 0x7b, 0xbf, 0x03, 0x37, 0x1d, 0xec, 0xe1, 0x70, 0x24, + 0x48, 0x89, 0x5d, 0xeb, 0x90, 0x80, 0x8d, 0xf4, 0x31, 0x7b, 0x81, 0x0c, 0x79, 0x76, 0xbd, 0xff, + 0x46, 0x2a, 0x0e, 0x13, 0x7c, 0x94, 0x67, 0x81, 0x1d, 0xb9, 0xc4, 0x97, 0xdc, 0xa7, 0xb7, 0x17, + 0x77, 0x48, 0xb7, 0xd8, 0x7f, 0x5b, 0x82, 0xe9, 0x3a, 0x76, 0x4a, 0x9a, 0x65, 0xe9, 0xda, 0xd6, + 0xa8, 0x3c, 0xbe, 0x45, 0xbd, 0x87, 0xd1, 0x77, 0x32, 0xa2, 0xe7, 0x69, 0xfc, 0x85, 0x70, 0x8f, + 0xd5, 0x88, 0x58, 0x82, 0x0f, 0x0b, 0x9d, 0x99, 0x19, 0x44, 0x6d, 0x0c, 0x1e, 0xdb, 0x12, 0x4c, + 0x78, 0x67, 0xf1, 0x6e, 0xe6, 0xce, 0x67, 0x6e, 0x3b, 0x3b, 0xde, 0x31, 0x18, 0xf2, 0xbc, 0xff, + 0x0c, 0x18, 0x7a, 0x59, 0x42, 0x47, 0xf9, 0xf8, 0x83, 0x84, 0xc9, 0xda, 0x58, 0x12, 0x77, 0xf8, + 0xc3, 0x3a, 0x3a, 0xf8, 0xbb, 0x13, 0x6c, 0x39, 0x72, 0x55, 0x73, 0xf0, 0x83, 0xe8, 0x0b, 0x32, + 0x4c, 0xd4, 0xb1, 0xe3, 0x8e, 0xb7, 0xdc, 0xe5, 0xa6, 0xc3, 0x6a, 0xb8, 0x12, 0x5a, 0xf1, 0x98, + 0x62, 0x6b, 0x18, 0xf7, 0xc2, 0x54, 0xd7, 0x32, 0x5b, 0xd8, 0xb6, 0xd9, 0xea, 0x45, 0xd8, 0x51, + 0xad, 0xdf, 0xe8, 0x4f, 0x58, 0x9b, 0x5f, 0xf7, 0xfe, 0x51, 0x83, 0xdf, 0x93, 0x9a, 0x01, 0x94, + 0x12, 0xab, 0xe0, 0xb8, 0xcd, 0x80, 0xb8, 0xc2, 0xd3, 0x07, 0xfa, 0xb3, 0x32, 0xcc, 0xd4, 0xb1, + 0xe3, 0x4b, 0x31, 0xc1, 0x26, 0x47, 0x34, 0xbc, 0x1c, 0x94, 0xf2, 0xc1, 0xa0, 0x14, 0xbf, 0x1a, + 0x90, 0x97, 0xa6, 0x4f, 0x6c, 0x8c, 0x57, 0x03, 0x8a, 0x71, 0x30, 0x86, 0xe3, 0x6b, 0x8f, 0x85, + 0x29, 0xc2, 0x0b, 0x69, 0xb0, 0xbf, 0x9c, 0x0d, 0x1a, 0xef, 0x17, 0x53, 0x6a, 0xbc, 0x77, 0x42, + 0x6e, 0x47, 0xb3, 0x2e, 0xd8, 0xa4, 0xe1, 0x4e, 0x8b, 0x98, 0xed, 0x6b, 0x6e, 0x76, 0x95, 0xfe, + 0xd5, 0xdf, 0x4f, 0x33, 0x97, 0xcc, 0x4f, 0xf3, 0x61, 0x29, 0xd1, 0x48, 0x48, 0xe7, 0x0e, 0x23, + 0x6c, 0xf2, 0x09, 0xc6, 0xcd, 0x98, 0xb2, 0xd3, 0x57, 0x8e, 0xe7, 0xc9, 0x30, 0xe9, 0x8e, 0xdb, + 0xc4, 0x1e, 0x3f, 0x77, 0x70, 0x75, 0xe8, 0x6f, 0xe8, 0x27, 0xec, 0x81, 0x3d, 0x89, 0x8c, 0xce, + 0xbc, 0x4f, 0xd0, 0x03, 0xc7, 0x15, 0x9e, 0x3e, 0x1e, 0xef, 0xa0, 0x78, 0x90, 0xf6, 0x80, 0x5e, + 0x27, 0x83, 0xbc, 0x8c, 0x9d, 0x71, 0x5b, 0x91, 0x6f, 0x15, 0x0e, 0x71, 0xc4, 0x09, 0x8c, 0xf0, + 0x3c, 0xbf, 0x8c, 0x47, 0xd3, 0x80, 0xc4, 0x62, 0x1b, 0x09, 0x31, 0x90, 0x3e, 0x6a, 0xef, 0xa1, + 0xa8, 0xd1, 0xcd, 0x85, 0x9f, 0x1d, 0x41, 0xaf, 0x3a, 0xde, 0x85, 0x0f, 0x4f, 0x80, 0x84, 0xc6, + 0x61, 0xb5, 0xb7, 0x7e, 0x85, 0x8f, 0xe5, 0x2a, 0x3e, 0x70, 0x1b, 0xfb, 0x36, 0x6e, 0x5d, 0xc0, + 0x6d, 0xf4, 0x53, 0x07, 0x87, 0xee, 0x14, 0x4c, 0xb4, 0x28, 0x35, 0x02, 0xde, 0xa4, 0xea, 0xbd, + 0x26, 0xb8, 0x57, 0x9a, 0xef, 0x88, 0xe8, 0xef, 0x63, 0xbc, 0x57, 0x5a, 0xa0, 0xf8, 0x31, 0x98, + 0x2d, 0x74, 0x96, 0x51, 0x69, 0x99, 0x06, 0xfa, 0x2f, 0x07, 0x87, 0xe5, 0x2a, 0x98, 0xd2, 0x5b, + 0xa6, 0x41, 0xc2, 0x50, 0x78, 0x87, 0x80, 0xfc, 0x04, 0xef, 0x6b, 0x79, 0xc7, 0x7c, 0x40, 0x67, + 0xbb, 0xe6, 0x41, 0xc2, 0xb0, 0xc6, 0x84, 0xcb, 0xfa, 0x61, 0x19, 0x13, 0x7d, 0xca, 0x4e, 0x1f, + 0xb2, 0x8f, 0x06, 0xde, 0x6d, 0xb4, 0x2b, 0x7c, 0x54, 0xac, 0x02, 0x0f, 0x33, 0x9c, 0x85, 0x6b, + 0x71, 0x28, 0xc3, 0x59, 0x0c, 0x03, 0x63, 0xb8, 0xb1, 0x22, 0xc0, 0x31, 0xf5, 0x35, 0xe0, 0x03, + 0xa0, 0x33, 0x3a, 0xf3, 0x70, 0x48, 0x74, 0x0e, 0xc7, 0x44, 0x7c, 0x3f, 0x0b, 0x91, 0xc9, 0x2c, + 0x1e, 0xf4, 0x5f, 0x47, 0x01, 0xce, 0xed, 0xc3, 0xf8, 0x2b, 0x50, 0x6f, 0x85, 0x04, 0x37, 0x62, + 0xef, 0x93, 0xa0, 0x4b, 0x65, 0x8c, 0x77, 0xc5, 0x8b, 0x94, 0x9f, 0x3e, 0x80, 0xcf, 0x95, 0x61, + 0x8e, 0xf8, 0x08, 0x74, 0xb0, 0x66, 0xd1, 0x8e, 0x72, 0x24, 0x8e, 0xf2, 0xef, 0x10, 0x0e, 0xf0, + 0xc3, 0xcb, 0x21, 0xe0, 0x63, 0x24, 0x50, 0x88, 0x45, 0xf7, 0x11, 0x64, 0x61, 0x2c, 0xdb, 0x28, + 0x05, 0x9f, 0x05, 0xa6, 0xe2, 0xa3, 0xc1, 0x23, 0xa1, 0x47, 0x2e, 0x2f, 0x0c, 0xaf, 0xb1, 0x8d, + 0xd9, 0x23, 0x57, 0x84, 0x89, 0xf4, 0x31, 0x79, 0xdd, 0x2d, 0x6c, 0xc1, 0xb9, 0x41, 0x2e, 0x8c, + 0x7f, 0x45, 0xd6, 0x3f, 0xd1, 0xf6, 0xd9, 0x91, 0x78, 0x60, 0x1e, 0x20, 0x20, 0xbe, 0x02, 0x59, + 0xcb, 0xbc, 0x48, 0x97, 0xb6, 0x66, 0x55, 0xf2, 0x4c, 0xaf, 0xa7, 0xec, 0xec, 0xee, 0x18, 0xf4, + 0x64, 0xe8, 0xac, 0xea, 0xbd, 0x2a, 0xd7, 0xc1, 0xec, 0x45, 0xdd, 0xd9, 0x5e, 0xc1, 0x5a, 0x1b, + 0x5b, 0xaa, 0x79, 0x91, 0x78, 0xcc, 0x4d, 0xaa, 0x7c, 0x22, 0xef, 0xbf, 0x22, 0x60, 0x5f, 0x92, + 0x5b, 0xe4, 0xc7, 0x72, 0xfc, 0x2d, 0x89, 0xe5, 0x19, 0xcd, 0x55, 0xfa, 0x0a, 0xf3, 0x5e, 0x19, + 0xa6, 0x54, 0xf3, 0x22, 0x53, 0x92, 0xff, 0xe3, 0x70, 0x75, 0x24, 0xf1, 0x44, 0x8f, 0x48, 0xce, + 0x67, 0x7f, 0xec, 0x13, 0xbd, 0xd8, 0xe2, 0xc7, 0x72, 0x72, 0x69, 0x46, 0x35, 0x2f, 0xd6, 0xb1, + 0x43, 0x5b, 0x04, 0x6a, 0x8e, 0xc8, 0xc9, 0x5a, 0xb7, 0x29, 0x41, 0x36, 0x0f, 0xf7, 0xdf, 0x93, + 0xee, 0x22, 0xf8, 0x02, 0xf2, 0x59, 0x1c, 0xf7, 0x2e, 0xc2, 0x40, 0x0e, 0xc6, 0x10, 0x23, 0x45, + 0x86, 0x69, 0xd5, 0xbc, 0xe8, 0x0e, 0x0d, 0x4b, 0x7a, 0xa7, 0x33, 0x9a, 0x11, 0x32, 0xa9, 0xf1, + 0xef, 0x89, 0xc1, 0xe3, 0x62, 0xec, 0xc6, 0xff, 0x00, 0x06, 0xd2, 0x87, 0xe1, 0xd9, 0xb4, 0xb1, + 0x78, 0x23, 0xb4, 0x31, 0x1a, 0x1c, 0x86, 0x6d, 0x10, 0x3e, 0x1b, 0x87, 0xd6, 0x20, 0xa2, 0x38, + 0x18, 0xcb, 0xce, 0xc9, 0x5c, 0x89, 0x0c, 0xf3, 0xa3, 0x6d, 0x13, 0xef, 0x4a, 0xe6, 0x9a, 0xc8, + 0x86, 0x5d, 0x8e, 0x91, 0x91, 0xa0, 0x91, 0xc0, 0x05, 0x51, 0x80, 0x87, 0xf4, 0xf1, 0xf8, 0x90, + 0x0c, 0x33, 0x94, 0x85, 0x47, 0x89, 0x15, 0x30, 0x54, 0xa3, 0x0a, 0xd7, 0xe0, 0x70, 0x1a, 0x55, + 0x0c, 0x07, 0x63, 0xb9, 0x15, 0xd4, 0xb5, 0xe3, 0x86, 0x38, 0x3e, 0x1e, 0x85, 0xe0, 0xd0, 0xc6, + 0xd8, 0x08, 0x8f, 0x90, 0x0f, 0x63, 0x8c, 0x1d, 0xd2, 0x31, 0xf2, 0x67, 0xfb, 0xad, 0x68, 0x94, + 0x18, 0x1c, 0xa0, 0x29, 0x8c, 0x10, 0x86, 0x21, 0x9b, 0xc2, 0x21, 0x21, 0xf1, 0x15, 0x19, 0x80, + 0x32, 0xb0, 0x66, 0xee, 0x91, 0xcb, 0x7c, 0x46, 0xd0, 0x9d, 0xf5, 0xba, 0xd5, 0xcb, 0x03, 0xdc, + 0xea, 0x13, 0x86, 0x70, 0x49, 0xba, 0x12, 0x18, 0x92, 0xb2, 0x5b, 0xc9, 0xb1, 0xaf, 0x04, 0xc6, + 0x97, 0x9f, 0x3e, 0xc6, 0x8f, 0x50, 0x6b, 0x2e, 0x38, 0x60, 0xfa, 0x9b, 0x23, 0x41, 0x39, 0x34, + 0xfb, 0x97, 0xf9, 0xd9, 0xff, 0x01, 0xb0, 0x1d, 0xd6, 0x46, 0x1c, 0x74, 0x70, 0x34, 0x7d, 0x1b, + 0xf1, 0xf0, 0x0e, 0x88, 0xfe, 0x6c, 0x16, 0x8e, 0xb2, 0x4e, 0xe4, 0x07, 0x01, 0xe2, 0x84, 0xe7, + 0xf0, 0xb8, 0x4e, 0x72, 0x00, 0xca, 0xa3, 0x5a, 0x90, 0x4a, 0xb2, 0x94, 0x29, 0xc0, 0xde, 0x58, + 0x56, 0x37, 0xf2, 0xe5, 0x07, 0xbb, 0x9a, 0xd1, 0x16, 0x0f, 0xf7, 0x3b, 0x00, 0x78, 0x6f, 0xad, + 0x51, 0xe6, 0xd7, 0x1a, 0xfb, 0xac, 0x4c, 0x26, 0xde, 0xb9, 0x26, 0x22, 0xa3, 0xec, 0x8e, 0x7d, + 0xe7, 0x3a, 0xba, 0xec, 0xf4, 0x51, 0x7a, 0x97, 0x0c, 0xd9, 0xba, 0x69, 0x39, 0xe8, 0x39, 0x49, + 0x5a, 0x27, 0x95, 0x7c, 0x00, 0x92, 0xf7, 0xae, 0x94, 0xb8, 0x5b, 0x9a, 0x6f, 0x8e, 0x3f, 0xea, + 0xac, 0x39, 0x1a, 0xf1, 0xea, 0x76, 0xcb, 0x0f, 0x5d, 0xd7, 0x9c, 0x34, 0x9e, 0x0e, 0x95, 0x5f, + 0x3d, 0xfa, 0x00, 0x46, 0x6a, 0xf1, 0x74, 0x22, 0x4b, 0x4e, 0x1f, 0xb7, 0x57, 0x1f, 0x65, 0xbe, + 0xad, 0x4b, 0x7a, 0x07, 0xa3, 0xe7, 0x50, 0x97, 0x91, 0xaa, 0xb6, 0x83, 0xc5, 0x8f, 0xc4, 0xc4, + 0xba, 0xb6, 0x92, 0xf8, 0xb2, 0x72, 0x10, 0x5f, 0x36, 0x69, 0x83, 0xa2, 0x07, 0xd0, 0x29, 0x4b, + 0xe3, 0x6e, 0x50, 0x31, 0x65, 0x8f, 0x25, 0x4e, 0xe7, 0xb1, 0x3a, 0x76, 0xa8, 0x51, 0x59, 0xf3, + 0x6e, 0x60, 0xf9, 0xe9, 0x91, 0x44, 0xec, 0xf4, 0x2f, 0x78, 0x91, 0x7b, 0x2e, 0x78, 0x79, 0x6f, + 0x18, 0x9c, 0x35, 0x1e, 0x9c, 0x1f, 0x8f, 0x16, 0x10, 0xcf, 0xe4, 0x48, 0x60, 0x7a, 0xab, 0x0f, + 0xd3, 0x3a, 0x07, 0xd3, 0x1d, 0x43, 0x72, 0x91, 0x3e, 0x60, 0xbf, 0x92, 0x83, 0xa3, 0x74, 0xd2, + 0x5f, 0x34, 0xda, 0x2c, 0xc2, 0xea, 0x1b, 0xa5, 0x43, 0xde, 0x6c, 0xdb, 0x1f, 0x82, 0x95, 0x8b, + 0xe5, 0x9c, 0xeb, 0xbd, 0x1d, 0x7f, 0x81, 0x86, 0x73, 0x75, 0x3b, 0x51, 0xb2, 0xd3, 0x26, 0x7e, + 0x43, 0xbe, 0xff, 0x1f, 0x7f, 0x97, 0xd1, 0x84, 0xf8, 0x5d, 0x46, 0x7f, 0x92, 0x6c, 0xdd, 0x8e, + 0x14, 0xdd, 0x23, 0xf0, 0x94, 0x6d, 0xa7, 0x04, 0x2b, 0x7a, 0x02, 0xdc, 0xfd, 0x70, 0xb8, 0x93, + 0x05, 0x11, 0x44, 0x86, 0x74, 0x27, 0x23, 0x04, 0x0e, 0xd3, 0x9d, 0x6c, 0x10, 0x03, 0x63, 0xb8, + 0xd5, 0x3e, 0xc7, 0x76, 0xf3, 0x49, 0xbb, 0x41, 0x7f, 0x25, 0xa5, 0x3e, 0x4a, 0x7f, 0x37, 0x93, + 0xc8, 0xff, 0x99, 0xf0, 0x15, 0x3f, 0x4c, 0x27, 0xf1, 0x68, 0x8e, 0x23, 0x37, 0x86, 0x75, 0x23, + 0x89, 0xf8, 0xa2, 0x9f, 0xd3, 0xdb, 0xce, 0xf6, 0x88, 0x4e, 0x74, 0x5c, 0x74, 0x69, 0x79, 0xd7, + 0x23, 0x93, 0x17, 0xf4, 0x6f, 0x99, 0x44, 0x21, 0xa4, 0x7c, 0x91, 0x10, 0xb6, 0x22, 0x44, 0x9c, + 0x20, 0xf0, 0x53, 0x2c, 0xbd, 0x31, 0x6a, 0xf4, 0x59, 0xbd, 0x8d, 0xcd, 0x47, 0xa1, 0x46, 0x13, + 0xbe, 0x46, 0xa7, 0xd1, 0x71, 0xe4, 0x7e, 0x48, 0x35, 0xda, 0x17, 0xc9, 0x88, 0x34, 0x3a, 0x96, + 0x5e, 0xfa, 0x32, 0x7e, 0xd9, 0x0c, 0x9b, 0x48, 0xad, 0xea, 0xc6, 0x05, 0xf4, 0xcf, 0x79, 0xef, + 0x62, 0xe6, 0x73, 0xba, 0xb3, 0xcd, 0x62, 0xc1, 0xfc, 0xbe, 0xf0, 0xdd, 0x28, 0x43, 0xc4, 0x7b, + 0xe1, 0xc3, 0x49, 0xe5, 0xf6, 0x85, 0x93, 0x2a, 0xc2, 0xac, 0x6e, 0x38, 0xd8, 0x32, 0xb4, 0xce, + 0x52, 0x47, 0xdb, 0xb2, 0x4f, 0x4d, 0xf4, 0xbd, 0xbc, 0xae, 0x12, 0xca, 0xa3, 0xf2, 0x7f, 0x84, + 0xaf, 0xaf, 0x9c, 0xe4, 0xaf, 0xaf, 0x8c, 0x88, 0x7e, 0x35, 0x15, 0x1d, 0xfd, 0xca, 0x8f, 0x6e, + 0x05, 0x83, 0x83, 0x63, 0x8b, 0xda, 0xc6, 0x09, 0xc3, 0xfd, 0xdd, 0x2c, 0x18, 0x85, 0xcd, 0x0f, + 0xfd, 0xf8, 0x4a, 0x39, 0xd1, 0xea, 0x9e, 0xab, 0x08, 0xf3, 0xbd, 0x4a, 0x90, 0xd8, 0x42, 0x0d, + 0x57, 0x5e, 0xee, 0xa9, 0xbc, 0x6f, 0xf2, 0x64, 0x05, 0x4c, 0x9e, 0xb0, 0x52, 0xe5, 0xc4, 0x94, + 0x2a, 0xc9, 0x62, 0xa1, 0x48, 0x6d, 0xc7, 0x70, 0x1a, 0x29, 0x07, 0xc7, 0xbc, 0x68, 0xb7, 0xdd, + 0x2e, 0xd6, 0x2c, 0xcd, 0x68, 0x61, 0xf4, 0x51, 0x69, 0x14, 0x66, 0xef, 0x12, 0x4c, 0xea, 0x2d, + 0xd3, 0xa8, 0xeb, 0xcf, 0xf0, 0x2e, 0x97, 0x8b, 0x0f, 0xb2, 0x4e, 0x24, 0x52, 0x61, 0x7f, 0xa8, + 0xfe, 0xbf, 0x4a, 0x05, 0xa6, 0x5a, 0x9a, 0xd5, 0xa6, 0x41, 0xf8, 0x72, 0x3d, 0x17, 0x39, 0x45, + 0x12, 0x2a, 0x79, 0xbf, 0xa8, 0xc1, 0xdf, 0x4a, 0x8d, 0x17, 0x62, 0xbe, 0x27, 0x9a, 0x47, 0x24, + 0xb1, 0xc5, 0xe0, 0x27, 0x4e, 0xe6, 0xae, 0x74, 0x2c, 0xdc, 0x21, 0x77, 0xd0, 0xd3, 0x1e, 0x62, + 0x4a, 0x0d, 0x12, 0x92, 0x2e, 0x0f, 0x90, 0xa2, 0xf6, 0xa1, 0x31, 0xee, 0xe5, 0x01, 0x21, 0x2e, + 0xd2, 0xd7, 0xcc, 0xb7, 0xe7, 0x61, 0x96, 0xf6, 0x6a, 0x4c, 0x9c, 0xe8, 0xb9, 0xe4, 0x0a, 0x69, + 0xe7, 0x3e, 0x7c, 0x09, 0xd5, 0x0f, 0x3e, 0x26, 0x17, 0x40, 0xbe, 0xe0, 0x07, 0x1c, 0x74, 0x1f, + 0x93, 0xee, 0xdb, 0x7b, 0x7c, 0xcd, 0x53, 0x9e, 0xc6, 0xbd, 0x6f, 0x1f, 0x5f, 0x7c, 0xfa, 0xf8, + 0xfc, 0xaa, 0x0c, 0x72, 0xb1, 0xdd, 0x46, 0xad, 0x83, 0x43, 0x71, 0x0d, 0x4c, 0x7b, 0x6d, 0x26, + 0x88, 0x01, 0x19, 0x4e, 0x4a, 0xba, 0x08, 0xea, 0xcb, 0xa6, 0xd8, 0x1e, 0xfb, 0xae, 0x42, 0x4c, + 0xd9, 0xe9, 0x83, 0xf2, 0x9b, 0x13, 0xac, 0xd1, 0x2c, 0x98, 0xe6, 0x05, 0x72, 0x54, 0xe6, 0x39, + 0x32, 0xe4, 0x96, 0xb0, 0xd3, 0xda, 0x1e, 0x51, 0x9b, 0xd9, 0xb5, 0x3a, 0x5e, 0x9b, 0xd9, 0x77, + 0x1f, 0xfe, 0x60, 0x1b, 0xd6, 0x63, 0x6b, 0x9e, 0xb0, 0x34, 0xee, 0xe8, 0xce, 0xb1, 0xa5, 0xa7, + 0x0f, 0xce, 0xbf, 0xc9, 0x30, 0xe7, 0xaf, 0x70, 0x51, 0x4c, 0x7e, 0x25, 0xf3, 0x68, 0x5b, 0xef, + 0x44, 0x9f, 0x4f, 0x16, 0x22, 0xcd, 0x97, 0x29, 0x5f, 0xb3, 0x94, 0x17, 0x16, 0x13, 0x04, 0x4f, + 0x13, 0x63, 0x70, 0x0c, 0x33, 0x78, 0x19, 0x26, 0x09, 0x43, 0x8b, 0xfa, 0x1e, 0x71, 0x1d, 0xe4, + 0x16, 0x1a, 0x9f, 0x39, 0x92, 0x85, 0xc6, 0x3b, 0xf8, 0x85, 0x46, 0xc1, 0x88, 0xc7, 0xde, 0x3a, + 0x63, 0x42, 0x5f, 0x1a, 0xf7, 0xff, 0x91, 0x2f, 0x33, 0x26, 0xf0, 0xa5, 0x19, 0x50, 0x7e, 0xfa, + 0x88, 0xbe, 0xf2, 0x3f, 0xb1, 0xce, 0xd6, 0xdb, 0x50, 0x45, 0xff, 0xf3, 0x18, 0x64, 0xcf, 0xba, + 0x0f, 0xff, 0x3b, 0xb8, 0x11, 0xeb, 0xc5, 0x23, 0x08, 0xce, 0x70, 0x17, 0x64, 0x5d, 0xfa, 0x6c, + 0xda, 0x72, 0xa3, 0xd8, 0xee, 0xae, 0xcb, 0x88, 0x4a, 0xfe, 0x53, 0x4e, 0x42, 0xde, 0x36, 0x77, + 0xad, 0x96, 0x6b, 0x3e, 0xbb, 0x1a, 0xc3, 0xde, 0x92, 0x06, 0x25, 0xe5, 0x48, 0xcf, 0x8f, 0xce, + 0x65, 0x34, 0x74, 0x41, 0x92, 0xcc, 0x5d, 0x90, 0x94, 0x60, 0xff, 0x40, 0x80, 0xb7, 0xf4, 0x35, + 0xe2, 0xaf, 0xc8, 0x5d, 0x81, 0xed, 0x51, 0xc1, 0x1e, 0x21, 0x96, 0x83, 0xaa, 0x43, 0x52, 0x87, + 0x6f, 0x5e, 0xb4, 0x7e, 0x1c, 0xf8, 0xb1, 0x3a, 0x7c, 0x0b, 0xf0, 0x30, 0x96, 0x53, 0xea, 0x79, + 0xe6, 0xa4, 0x7a, 0xff, 0x28, 0xd1, 0xcd, 0x72, 0x4a, 0x7f, 0x20, 0x74, 0x46, 0xe8, 0xbc, 0x3a, + 0x34, 0x3a, 0x87, 0xe4, 0xbe, 0xfa, 0x87, 0x32, 0x89, 0x84, 0xe9, 0x19, 0x39, 0xe2, 0x17, 0x1d, + 0x25, 0x86, 0xc8, 0x1d, 0x83, 0xb9, 0x38, 0xd0, 0xb3, 0xc3, 0x87, 0x06, 0xe7, 0x45, 0x17, 0xe2, + 0x7f, 0xdc, 0xa1, 0xc1, 0x45, 0x19, 0x49, 0x1f, 0xc8, 0xd7, 0xd2, 0x8b, 0xc5, 0x8a, 0x2d, 0x47, + 0xdf, 0x1b, 0x71, 0x4b, 0xe3, 0x87, 0x97, 0x84, 0xd1, 0x80, 0xf7, 0x49, 0x88, 0x72, 0x38, 0xee, + 0x68, 0xc0, 0x62, 0x6c, 0xa4, 0x0f, 0xd3, 0xdf, 0xe6, 0x5d, 0xe9, 0xb1, 0xb5, 0x99, 0xd7, 0xb1, + 0xd5, 0x00, 0x7c, 0x70, 0xb4, 0xce, 0xc0, 0x4c, 0x68, 0xea, 0xef, 0x5d, 0x58, 0xc3, 0xa5, 0x25, + 0x3d, 0xe8, 0xee, 0x8b, 0x6c, 0xe4, 0x0b, 0x03, 0x09, 0x16, 0x7c, 0x45, 0x98, 0x18, 0xcb, 0x7d, + 0x70, 0xde, 0x18, 0x36, 0x26, 0xac, 0x7e, 0x3f, 0x8c, 0x55, 0x8d, 0xc7, 0xea, 0x36, 0x11, 0x31, + 0x89, 0x8d, 0x69, 0x42, 0xf3, 0xc6, 0xb7, 0xf9, 0x70, 0xa9, 0x1c, 0x5c, 0x77, 0x0d, 0xcd, 0x47, + 0xfa, 0x88, 0xbd, 0x84, 0x76, 0x87, 0x75, 0x6a, 0xb2, 0x8f, 0xa6, 0x3b, 0x64, 0xb3, 0x01, 0x99, + 0x9b, 0x0d, 0x24, 0xf4, 0xb7, 0x0f, 0xdc, 0x48, 0x3d, 0xe6, 0x06, 0x41, 0x94, 0x1d, 0xb1, 0xbf, + 0xfd, 0x40, 0x0e, 0xd2, 0x07, 0xe7, 0x1f, 0x65, 0x80, 0x65, 0xcb, 0xdc, 0xed, 0xd6, 0xac, 0x36, + 0xb6, 0xd0, 0xdf, 0x04, 0x13, 0x80, 0x17, 0x8e, 0x60, 0x02, 0xb0, 0x0e, 0xb0, 0xe5, 0x13, 0x67, + 0x1a, 0x7e, 0x8b, 0x98, 0xb9, 0x1f, 0x30, 0xa5, 0x86, 0x68, 0xf0, 0x57, 0xce, 0xfe, 0x04, 0x8f, + 0x71, 0x5c, 0x9f, 0x15, 0x90, 0x1b, 0xe5, 0x04, 0xe0, 0x1d, 0x3e, 0xd6, 0x0d, 0x0e, 0xeb, 0x7b, + 0x0e, 0xc0, 0x49, 0xfa, 0x98, 0xff, 0xd3, 0x04, 0x4c, 0xd3, 0xed, 0x3a, 0x2a, 0xd3, 0xbf, 0x0f, + 0x40, 0xff, 0xcd, 0x11, 0x80, 0xbe, 0x01, 0x33, 0x66, 0x40, 0x9d, 0xf6, 0xa9, 0xe1, 0x05, 0x98, + 0x58, 0xd8, 0x43, 0x7c, 0xa9, 0x1c, 0x19, 0xf4, 0xe1, 0x30, 0xf2, 0x2a, 0x8f, 0xfc, 0x1d, 0x31, + 0xf2, 0x0e, 0x51, 0x1c, 0x25, 0xf4, 0xef, 0xf4, 0xa1, 0xdf, 0xe0, 0xa0, 0x2f, 0x1e, 0x84, 0x95, + 0x31, 0x84, 0xdb, 0x97, 0x21, 0x4b, 0x4e, 0xc7, 0xfd, 0x76, 0x8a, 0xf3, 0xfb, 0x53, 0x30, 0x41, + 0x9a, 0xac, 0x3f, 0xef, 0xf0, 0x5e, 0xdd, 0x2f, 0xda, 0xa6, 0x83, 0x2d, 0xdf, 0x63, 0xc1, 0x7b, + 0x75, 0x79, 0xf0, 0xbc, 0x92, 0xed, 0x53, 0x79, 0xba, 0x11, 0xe9, 0x27, 0x0c, 0x3d, 0x29, 0x09, + 0x4b, 0x7c, 0x64, 0xe7, 0xe5, 0x86, 0x99, 0x94, 0x0c, 0x60, 0x24, 0x7d, 0xe0, 0xff, 0x22, 0x0b, + 0xa7, 0xe8, 0xaa, 0xd2, 0x92, 0x65, 0xee, 0xf4, 0xdc, 0x6e, 0xa5, 0x1f, 0x5c, 0x17, 0xae, 0x87, + 0x39, 0x87, 0xf3, 0xc7, 0x66, 0x3a, 0xd1, 0x93, 0x8a, 0xfe, 0x34, 0xec, 0x53, 0xf1, 0x74, 0x1e, + 0xc9, 0x85, 0x18, 0x01, 0x46, 0xf1, 0x9e, 0x78, 0xa1, 0x5e, 0x90, 0xd1, 0xd0, 0x22, 0x95, 0x3c, + 0xd4, 0x9a, 0xa5, 0xaf, 0x53, 0x39, 0x11, 0x9d, 0x7a, 0x9f, 0xaf, 0x53, 0x3f, 0xc5, 0xe9, 0xd4, + 0xf2, 0xc1, 0x45, 0x92, 0xbe, 0x6e, 0xbd, 0xc2, 0xdf, 0x18, 0xf2, 0xb7, 0xed, 0x76, 0x52, 0xd8, + 0xac, 0x0b, 0xfb, 0x23, 0x65, 0x39, 0x7f, 0x24, 0xfe, 0x3e, 0x8a, 0x04, 0x33, 0x61, 0x9e, 0xeb, + 0x08, 0x5d, 0x9a, 0x03, 0x49, 0xf7, 0xb8, 0x93, 0xf4, 0xf6, 0x50, 0x73, 0xdd, 0xd8, 0x82, 0xc6, + 0xb0, 0xb6, 0x34, 0x07, 0xf9, 0x25, 0xbd, 0xe3, 0x60, 0x0b, 0x3d, 0xc2, 0x66, 0xba, 0xaf, 0x48, + 0x71, 0x00, 0x58, 0x84, 0xfc, 0x26, 0x29, 0x8d, 0x99, 0xcc, 0x37, 0x89, 0xb5, 0x1e, 0xca, 0xa1, + 0xca, 0xfe, 0x4d, 0x1a, 0x9d, 0xaf, 0x87, 0xcc, 0xc8, 0xa6, 0xc8, 0x09, 0xa2, 0xf3, 0x0d, 0x66, + 0x61, 0x2c, 0x17, 0x53, 0xe5, 0x55, 0xbc, 0xe3, 0x8e, 0xf1, 0x17, 0xd2, 0x43, 0xb8, 0x00, 0xb2, + 0xde, 0xb6, 0x49, 0xe7, 0x38, 0xa5, 0xba, 0x8f, 0x49, 0x7d, 0x85, 0x7a, 0x45, 0x45, 0x59, 0x1e, + 0xb7, 0xaf, 0x90, 0x10, 0x17, 0xe9, 0x63, 0xf6, 0x5d, 0xe2, 0x28, 0xda, 0xed, 0x68, 0x2d, 0xec, + 0x72, 0x9f, 0x1a, 0x6a, 0xb4, 0x27, 0xcb, 0x7a, 0x3d, 0x59, 0xa8, 0x9d, 0xe6, 0x0e, 0xd0, 0x4e, + 0x87, 0x5d, 0x86, 0xf4, 0x65, 0x4e, 0x2a, 0x7e, 0x68, 0xcb, 0x90, 0xb1, 0x6c, 0x8c, 0xe1, 0xda, + 0x51, 0xef, 0x20, 0xed, 0x58, 0x5b, 0xeb, 0xb0, 0x9b, 0x34, 0x4c, 0x58, 0x23, 0x3b, 0x34, 0x3b, + 0xcc, 0x26, 0x4d, 0x34, 0x0f, 0x63, 0x40, 0x6b, 0x8e, 0xa1, 0xf5, 0x39, 0x36, 0x8c, 0xa6, 0xbc, + 0x4f, 0x6a, 0x9b, 0x96, 0x93, 0x6c, 0x9f, 0xd4, 0xe5, 0x4e, 0x25, 0xff, 0x25, 0x3d, 0x78, 0xc5, + 0x9f, 0xab, 0x1e, 0xd5, 0xf0, 0x99, 0xe0, 0xe0, 0xd5, 0x20, 0x06, 0xd2, 0x87, 0xf7, 0xcd, 0x87, + 0x34, 0x78, 0x0e, 0xdb, 0x1c, 0x59, 0x1b, 0x18, 0xd9, 0xd0, 0x39, 0x4c, 0x73, 0x8c, 0xe6, 0x21, + 0x7d, 0xbc, 0xbe, 0x15, 0x1a, 0x38, 0xdf, 0x30, 0xc6, 0x81, 0xd3, 0x6b, 0x99, 0xb9, 0x21, 0x5b, + 0xe6, 0xb0, 0xfb, 0x3f, 0x4c, 0xd6, 0xa3, 0x1b, 0x30, 0x87, 0xd9, 0xff, 0x89, 0x61, 0x22, 0x7d, + 0xc4, 0xdf, 0x28, 0x43, 0xae, 0x3e, 0xfe, 0xf1, 0x72, 0xd8, 0xb9, 0x08, 0x91, 0x55, 0x7d, 0x64, + 0xc3, 0xe5, 0x30, 0x73, 0x91, 0x48, 0x16, 0xc6, 0x10, 0x78, 0xff, 0x28, 0xcc, 0x90, 0x25, 0x11, + 0x6f, 0x9b, 0xf5, 0x5b, 0x6c, 0xd4, 0x7c, 0x38, 0xc5, 0xb6, 0x7a, 0x2f, 0x4c, 0x7a, 0xfb, 0x77, + 0x6c, 0xe4, 0x9c, 0x17, 0x6b, 0x9f, 0x1e, 0x97, 0xaa, 0xff, 0xff, 0x81, 0x9c, 0x21, 0x46, 0xbe, + 0x57, 0x3b, 0xac, 0x33, 0xc4, 0xa1, 0xee, 0xd7, 0xfe, 0x49, 0x30, 0xa2, 0xfe, 0x97, 0xf4, 0x30, + 0xef, 0xdd, 0xc7, 0xcd, 0xf6, 0xd9, 0xc7, 0xfd, 0x68, 0x18, 0xcb, 0x3a, 0x8f, 0xe5, 0x9d, 0xa2, + 0x22, 0x1c, 0xe1, 0x58, 0xfb, 0x2e, 0x1f, 0xce, 0xb3, 0x1c, 0x9c, 0x0b, 0x07, 0xe2, 0x65, 0x0c, + 0x07, 0x1f, 0xb3, 0xc1, 0x98, 0xfb, 0xb1, 0x14, 0xdb, 0x71, 0xcf, 0xa9, 0x8a, 0xec, 0xbe, 0x53, + 0x15, 0x5c, 0x4b, 0xcf, 0x1d, 0xb0, 0xa5, 0x7f, 0x2c, 0xac, 0x1d, 0x0d, 0x5e, 0x3b, 0xee, 0x12, + 0x47, 0x64, 0x74, 0x23, 0xf3, 0xbb, 0x7d, 0xf5, 0x38, 0xc7, 0xa9, 0x47, 0xe9, 0x60, 0xcc, 0xa4, + 0xaf, 0x1f, 0x9f, 0xf0, 0x26, 0xb4, 0x87, 0xdc, 0xde, 0x87, 0xdd, 0x2a, 0xe6, 0x84, 0x38, 0xb2, + 0x91, 0x7b, 0x98, 0xad, 0xe2, 0x41, 0x9c, 0x8c, 0x21, 0x16, 0xdb, 0x2c, 0x4c, 0x13, 0x9e, 0xce, + 0xe9, 0xed, 0x2d, 0xec, 0xa0, 0x57, 0x52, 0x1f, 0x45, 0x2f, 0xf2, 0xe5, 0x88, 0xc2, 0x13, 0x45, + 0x9d, 0x77, 0x4d, 0xea, 0xd1, 0x41, 0x99, 0x9c, 0x0f, 0x31, 0x38, 0xee, 0x08, 0x8a, 0x03, 0x39, + 0x48, 0x1f, 0xb2, 0x0f, 0x53, 0x77, 0x9b, 0x55, 0xed, 0x92, 0xb9, 0xeb, 0xa0, 0x87, 0x46, 0xd0, + 0x41, 0x2f, 0x40, 0xbe, 0x43, 0xa8, 0xb1, 0x63, 0x19, 0xf1, 0xd3, 0x1d, 0x26, 0x02, 0x5a, 0xbe, + 0xca, 0xfe, 0x4c, 0x7a, 0x36, 0x23, 0x90, 0x23, 0xa5, 0x33, 0xee, 0xb3, 0x19, 0x03, 0xca, 0x1f, + 0xcb, 0x1d, 0x3b, 0x93, 0x6e, 0xe9, 0xfa, 0x8e, 0xee, 0x8c, 0x28, 0x82, 0x43, 0xc7, 0xa5, 0xe5, + 0x45, 0x70, 0x20, 0x2f, 0x49, 0x4f, 0x8c, 0x86, 0xa4, 0xe2, 0xfe, 0x3e, 0xee, 0x13, 0xa3, 0xf1, + 0xc5, 0xa7, 0x8f, 0xc9, 0xaf, 0xd3, 0x96, 0x75, 0x96, 0x3a, 0xdf, 0xa6, 0xe8, 0xd7, 0x3b, 0x74, + 0x63, 0xa1, 0xac, 0x1d, 0x5e, 0x63, 0xe9, 0x5b, 0x7e, 0xfa, 0xc0, 0xfc, 0xf7, 0x1f, 0x85, 0xdc, + 0x22, 0x3e, 0xbf, 0xbb, 0x85, 0xee, 0x80, 0xc9, 0x86, 0x85, 0x71, 0xc5, 0xd8, 0x34, 0x5d, 0xe9, + 0x3a, 0xee, 0xb3, 0x07, 0x09, 0x7b, 0x73, 0xf1, 0xd8, 0xc6, 0x5a, 0x3b, 0x38, 0x7f, 0xe6, 0xbd, + 0xa2, 0x17, 0x4b, 0x90, 0xad, 0x3b, 0x9a, 0x83, 0xa6, 0x7c, 0x6c, 0xd1, 0x43, 0x61, 0x2c, 0xee, + 0xe0, 0xb1, 0xb8, 0x9e, 0x93, 0x05, 0xe1, 0x60, 0xde, 0xfd, 0x3f, 0x02, 0x00, 0x04, 0x93, 0x0f, + 0xd8, 0xa6, 0xe1, 0xe6, 0xf0, 0x8e, 0x40, 0x7a, 0xef, 0xe8, 0xe5, 0xbe, 0xb8, 0xef, 0xe6, 0xc4, + 0xfd, 0x78, 0xb1, 0x22, 0xc6, 0xb0, 0xd2, 0x26, 0xc1, 0x94, 0x2b, 0xda, 0x15, 0xac, 0xb5, 0x6d, + 0xf4, 0x23, 0x81, 0xf2, 0x47, 0x88, 0x19, 0xbd, 0x5f, 0x38, 0x18, 0x27, 0xad, 0x95, 0x4f, 0x3c, + 0xda, 0xa3, 0xc3, 0xdb, 0xfc, 0x97, 0xf8, 0x60, 0x24, 0x37, 0x43, 0x56, 0x37, 0x36, 0x4d, 0xe6, + 0x5f, 0x78, 0x65, 0x04, 0x6d, 0x57, 0x27, 0x54, 0x92, 0x51, 0x30, 0x52, 0x67, 0x3c, 0x5b, 0x63, + 0xb9, 0xf4, 0x2e, 0xeb, 0x96, 0x8e, 0xfe, 0xff, 0x03, 0x85, 0xad, 0x28, 0x90, 0xed, 0x6a, 0xce, + 0x36, 0x2b, 0x9a, 0x3c, 0xbb, 0x36, 0xf2, 0xae, 0xa1, 0x19, 0xa6, 0x71, 0x69, 0x47, 0x7f, 0x86, + 0x7f, 0xb7, 0x2e, 0x97, 0xe6, 0x72, 0xbe, 0x85, 0x0d, 0x6c, 0x69, 0x0e, 0xae, 0xef, 0x6d, 0x91, + 0x39, 0xd6, 0xa4, 0x1a, 0x4e, 0x4a, 0xac, 0xff, 0x2e, 0xc7, 0xd1, 0xfa, 0xbf, 0xa9, 0x77, 0x30, + 0x89, 0xd4, 0xc4, 0xf4, 0xdf, 0x7b, 0x4f, 0xa4, 0xff, 0x7d, 0x8a, 0x48, 0x1f, 0x8d, 0xef, 0x49, + 0x30, 0x53, 0x77, 0x15, 0xae, 0xbe, 0xbb, 0xb3, 0xa3, 0x59, 0x97, 0xd0, 0xb5, 0x01, 0x2a, 0x21, + 0xd5, 0xcc, 0xf0, 0x7e, 0x29, 0x7f, 0x28, 0x7c, 0xad, 0x34, 0x6b, 0xda, 0xa1, 0x12, 0x12, 0xb7, + 0x83, 0x27, 0x42, 0xce, 0x55, 0x6f, 0xcf, 0xe3, 0x32, 0xb6, 0x21, 0xd0, 0x9c, 0x82, 0x11, 0xad, + 0x06, 0xf2, 0x36, 0x86, 0x68, 0x1a, 0x12, 0x1c, 0xad, 0x3b, 0x5a, 0xeb, 0xc2, 0xb2, 0x69, 0x99, + 0xbb, 0x8e, 0x6e, 0x60, 0x1b, 0x3d, 0x26, 0x40, 0xc0, 0xd3, 0xff, 0x4c, 0xa0, 0xff, 0xe8, 0xdf, + 0x33, 0xa2, 0xa3, 0xa8, 0xdf, 0xad, 0x86, 0xc9, 0x47, 0x04, 0xa8, 0x12, 0x1b, 0x17, 0x45, 0x28, + 0xa6, 0x2f, 0xb4, 0x37, 0xc8, 0x50, 0x28, 0x3f, 0xd8, 0x35, 0x2d, 0x67, 0xd5, 0x6c, 0x69, 0x1d, + 0xdb, 0x31, 0x2d, 0x8c, 0x6a, 0xb1, 0x52, 0x73, 0x7b, 0x98, 0xb6, 0xd9, 0x0a, 0x06, 0x47, 0xf6, + 0x16, 0x56, 0x3b, 0x99, 0xd7, 0xf1, 0x0f, 0x0b, 0xef, 0x32, 0x52, 0xa9, 0xf4, 0x72, 0x14, 0xa1, + 0xe7, 0xfd, 0xba, 0xb4, 0x64, 0x87, 0x25, 0xc4, 0x76, 0x1e, 0x85, 0x98, 0x1a, 0xc3, 0x52, 0xb9, + 0x04, 0xb3, 0xf5, 0xdd, 0xf3, 0x3e, 0x11, 0x3b, 0x6c, 0x84, 0xbc, 0x4a, 0x38, 0x4a, 0x05, 0x53, + 0xbc, 0x30, 0xa1, 0x08, 0xf9, 0x5e, 0x07, 0xb3, 0x76, 0x38, 0x1b, 0xc3, 0x9b, 0x4f, 0x14, 0x8c, + 0x4e, 0x31, 0xb8, 0xd4, 0xf4, 0x05, 0xf8, 0x6e, 0x09, 0x66, 0x6b, 0x5d, 0x6c, 0xe0, 0x36, 0xf5, + 0x82, 0xe4, 0x04, 0xf8, 0xe2, 0x84, 0x02, 0xe4, 0x08, 0x45, 0x08, 0x30, 0xf0, 0x58, 0x5e, 0xf4, + 0x84, 0x17, 0x24, 0x24, 0x12, 0x5c, 0x5c, 0x69, 0xe9, 0x0b, 0xee, 0x4b, 0x12, 0x4c, 0xab, 0xbb, + 0xc6, 0xba, 0x65, 0xba, 0xa3, 0xb1, 0x85, 0xee, 0x0c, 0x3a, 0x88, 0x9b, 0xe0, 0x58, 0x7b, 0xd7, + 0x22, 0xeb, 0x4f, 0x15, 0xa3, 0x8e, 0x5b, 0xa6, 0xd1, 0xb6, 0x49, 0x3d, 0x72, 0xea, 0xfe, 0x0f, + 0xb7, 0x67, 0x9f, 0xf3, 0x75, 0x39, 0x83, 0x9e, 0x2b, 0x1c, 0xea, 0x86, 0x56, 0x3e, 0x54, 0xb4, + 0x78, 0x4f, 0x20, 0x18, 0xd0, 0x66, 0x50, 0x09, 0xe9, 0x0b, 0xf7, 0x73, 0x12, 0x28, 0xc5, 0x56, + 0xcb, 0xdc, 0x35, 0x9c, 0x3a, 0xee, 0xe0, 0x96, 0xd3, 0xb0, 0xb4, 0x16, 0x0e, 0xdb, 0xcf, 0x05, + 0x90, 0xdb, 0xba, 0xc5, 0xfa, 0x60, 0xf7, 0x91, 0xc9, 0xf1, 0xc5, 0xc2, 0x3b, 0x8e, 0xb4, 0x96, + 0xfb, 0x4b, 0x49, 0x20, 0x4e, 0xb1, 0x7d, 0x45, 0xc1, 0x82, 0xd2, 0x97, 0xea, 0xc7, 0x24, 0x98, + 0xf2, 0x7a, 0xec, 0x2d, 0x11, 0x61, 0xfe, 0x7a, 0xc2, 0xc9, 0x88, 0x4f, 0x3c, 0x81, 0x0c, 0xdf, + 0x9e, 0x60, 0x56, 0x11, 0x45, 0x3f, 0x99, 0xe8, 0x8a, 0xc9, 0x45, 0xe7, 0xbe, 0x56, 0x6b, 0xcd, + 0xa5, 0xda, 0xea, 0x62, 0x59, 0x2d, 0xc8, 0xe8, 0x11, 0x09, 0xb2, 0xeb, 0xba, 0xb1, 0x15, 0x8e, + 0xae, 0x74, 0xdc, 0xb5, 0x23, 0xdb, 0xf8, 0x41, 0xd6, 0xd2, 0xe9, 0x8b, 0x72, 0x2b, 0x1c, 0x37, + 0x76, 0x77, 0xce, 0x63, 0xab, 0xb6, 0x49, 0x46, 0x59, 0xbb, 0x61, 0xd6, 0xb1, 0x41, 0x8d, 0xd0, + 0x9c, 0xda, 0xf7, 0x1b, 0x6f, 0x82, 0x09, 0x4c, 0x1e, 0x5c, 0x4e, 0x22, 0x24, 0xee, 0x33, 0x25, + 0x85, 0x98, 0x4a, 0x34, 0x6d, 0xe8, 0x43, 0x3c, 0x7d, 0x4d, 0xfd, 0xa3, 0x1c, 0x9c, 0x28, 0x1a, + 0x97, 0x88, 0x4d, 0x41, 0x3b, 0xf8, 0xd2, 0xb6, 0x66, 0x6c, 0x61, 0x32, 0x40, 0xf8, 0x12, 0x0f, + 0x87, 0xe8, 0xcf, 0xf0, 0x21, 0xfa, 0x15, 0x15, 0x26, 0x4c, 0xab, 0x8d, 0xad, 0x85, 0x4b, 0x84, + 0xa7, 0xde, 0x65, 0x67, 0xd6, 0x26, 0xfb, 0x15, 0x31, 0xcf, 0xc8, 0xcf, 0xd7, 0xe8, 0xff, 0xaa, + 0x47, 0xe8, 0xcc, 0x4d, 0x30, 0xc1, 0xd2, 0x94, 0x19, 0x98, 0xac, 0xa9, 0x8b, 0x65, 0xb5, 0x59, + 0x59, 0x2c, 0x1c, 0x51, 0x2e, 0x83, 0xa3, 0x95, 0x46, 0x59, 0x2d, 0x36, 0x2a, 0xb5, 0x6a, 0x93, + 0xa4, 0x17, 0x32, 0xe8, 0xd9, 0x59, 0x51, 0xcf, 0xde, 0x78, 0x66, 0xfa, 0xc1, 0xaa, 0xc2, 0x44, + 0x8b, 0x66, 0x20, 0x43, 0xe8, 0x74, 0xa2, 0xda, 0x31, 0x82, 0x34, 0x41, 0xf5, 0x08, 0x29, 0xa7, + 0x01, 0x2e, 0x5a, 0xa6, 0xb1, 0x15, 0x9c, 0x3a, 0x9c, 0x54, 0x43, 0x29, 0xe8, 0xa1, 0x0c, 0xe4, + 0xe9, 0x3f, 0xe4, 0x4a, 0x12, 0xf2, 0x14, 0x08, 0xde, 0x7b, 0x77, 0x2d, 0x5e, 0x22, 0xaf, 0x60, + 0xa2, 0xc5, 0x5e, 0x5d, 0x5d, 0xa4, 0x32, 0xa0, 0x96, 0x30, 0xab, 0xca, 0xcd, 0x90, 0xa7, 0xff, + 0x32, 0xaf, 0x83, 0xe8, 0xf0, 0xa2, 0x34, 0x9b, 0xa0, 0x9f, 0xb2, 0xb8, 0x4c, 0xd3, 0xd7, 0xe6, + 0x0f, 0x48, 0x30, 0x59, 0xc5, 0x4e, 0x69, 0x1b, 0xb7, 0x2e, 0xa0, 0xc7, 0xf1, 0x0b, 0xa0, 0x1d, + 0x1d, 0x1b, 0xce, 0xfd, 0x3b, 0x1d, 0x7f, 0x01, 0xd4, 0x4b, 0x40, 0xbf, 0x18, 0xee, 0x7c, 0xef, + 0xe1, 0xf5, 0xe7, 0xc6, 0x3e, 0x75, 0xf5, 0x4a, 0x88, 0x50, 0x99, 0x93, 0x90, 0xb7, 0xb0, 0xbd, + 0xdb, 0xf1, 0x16, 0xd1, 0xd8, 0x1b, 0x7a, 0xb5, 0x2f, 0xce, 0x12, 0x27, 0xce, 0x9b, 0xc5, 0x8b, + 0x18, 0x43, 0xbc, 0xd2, 0x2c, 0x4c, 0x54, 0x0c, 0xdd, 0xd1, 0xb5, 0x0e, 0x7a, 0x6e, 0x16, 0x66, + 0xeb, 0xd8, 0x59, 0xd7, 0x2c, 0x6d, 0x07, 0x3b, 0xd8, 0xb2, 0xd1, 0x77, 0xf8, 0x3e, 0xa1, 0xdb, + 0xd1, 0x9c, 0x4d, 0xd3, 0xda, 0xf1, 0x54, 0xd3, 0x7b, 0x77, 0x55, 0x73, 0x0f, 0x5b, 0x76, 0xc0, + 0x97, 0xf7, 0xea, 0x7e, 0xb9, 0x68, 0x5a, 0x17, 0xdc, 0x41, 0x90, 0x4d, 0xd3, 0xd8, 0xab, 0x4b, + 0xaf, 0x63, 0x6e, 0xad, 0xe2, 0x3d, 0xec, 0x85, 0x4b, 0xf3, 0xdf, 0xdd, 0xb9, 0x40, 0xdb, 0xac, + 0x9a, 0x8e, 0xdb, 0x69, 0xaf, 0x9a, 0x5b, 0x34, 0x5e, 0xec, 0xa4, 0xca, 0x27, 0x06, 0xb9, 0xb4, + 0x3d, 0x4c, 0x72, 0xe5, 0xc3, 0xb9, 0x58, 0xa2, 0x32, 0x0f, 0x8a, 0xff, 0x5b, 0x03, 0x77, 0xf0, + 0x0e, 0x76, 0xac, 0x4b, 0xe4, 0x5a, 0x88, 0x49, 0xb5, 0xcf, 0x17, 0x36, 0x40, 0x8b, 0x4f, 0xd6, + 0x99, 0xf4, 0xe6, 0x39, 0xc9, 0x1d, 0x68, 0xb2, 0x2e, 0x42, 0x71, 0x2c, 0xd7, 0x5e, 0xc9, 0xae, + 0x35, 0xf3, 0x52, 0x19, 0xb2, 0x64, 0xf0, 0x7c, 0x63, 0x86, 0x5b, 0x61, 0xda, 0xc1, 0xb6, 0xad, + 0x6d, 0x61, 0x6f, 0x85, 0x89, 0xbd, 0x2a, 0xb7, 0x41, 0xae, 0x43, 0x30, 0xa5, 0x83, 0xc3, 0xb5, + 0x5c, 0xcd, 0x5c, 0x03, 0xc3, 0xa5, 0xe5, 0x8f, 0x04, 0x04, 0x6e, 0x95, 0xfe, 0x71, 0xe6, 0x5e, + 0xc8, 0x51, 0xf8, 0xa7, 0x20, 0xb7, 0x58, 0x5e, 0xd8, 0x58, 0x2e, 0x1c, 0x71, 0x1f, 0x3d, 0xfe, + 0xa6, 0x20, 0xb7, 0x54, 0x6c, 0x14, 0x57, 0x0b, 0x92, 0x5b, 0x8f, 0x4a, 0x75, 0xa9, 0x56, 0x90, + 0xdd, 0xc4, 0xf5, 0x62, 0xb5, 0x52, 0x2a, 0x64, 0x95, 0x69, 0x98, 0x38, 0x57, 0x54, 0xab, 0x95, + 0xea, 0x72, 0x21, 0x87, 0xfe, 0x36, 0x8c, 0xdf, 0xed, 0x3c, 0x7e, 0xd7, 0x45, 0xf1, 0xd4, 0x0f, + 0xb2, 0xdf, 0xf2, 0x21, 0xbb, 0x93, 0x83, 0xec, 0x47, 0x45, 0x88, 0x8c, 0xc1, 0x9d, 0x29, 0x0f, + 0x13, 0xeb, 0x96, 0xd9, 0xc2, 0xb6, 0x8d, 0x7e, 0x43, 0x82, 0x7c, 0x49, 0x33, 0x5a, 0xb8, 0x83, + 0xae, 0x08, 0xa0, 0xa2, 0xae, 0xa2, 0x19, 0xff, 0xb4, 0xd8, 0x3f, 0x66, 0x44, 0x7b, 0x3f, 0x46, + 0x77, 0x9e, 0xd2, 0x8c, 0x90, 0x8f, 0x58, 0x2f, 0x17, 0x4b, 0x6a, 0x0c, 0x57, 0xe3, 0x48, 0x30, + 0xc5, 0x56, 0x03, 0xce, 0xe3, 0xf0, 0x3c, 0xfc, 0x3b, 0x19, 0xd1, 0xc9, 0xa1, 0x57, 0x03, 0x9f, + 0x4c, 0x84, 0x3c, 0xc4, 0x26, 0x82, 0x83, 0xa8, 0x8d, 0x61, 0xf3, 0x50, 0x82, 0xe9, 0x0d, 0xc3, + 0xee, 0x27, 0x14, 0xf1, 0x38, 0xfa, 0x5e, 0x35, 0x42, 0x84, 0x0e, 0x14, 0x47, 0x7f, 0x30, 0xbd, + 0xf4, 0x05, 0xf3, 0x9d, 0x0c, 0x1c, 0x5f, 0xc6, 0x06, 0xb6, 0xf4, 0x16, 0xad, 0x81, 0x27, 0x89, + 0x3b, 0x79, 0x49, 0x3c, 0x8e, 0xe3, 0xbc, 0xdf, 0x1f, 0xbc, 0x04, 0x5e, 0xe1, 0x4b, 0xe0, 0x1e, + 0x4e, 0x02, 0x37, 0x09, 0xd2, 0x19, 0xc3, 0x7d, 0xe8, 0x53, 0x30, 0x53, 0x35, 0x1d, 0x7d, 0x53, + 0x6f, 0x51, 0x1f, 0xb4, 0x97, 0xc8, 0x90, 0x5d, 0xd5, 0x6d, 0x07, 0x15, 0x83, 0xee, 0xe4, 0x1a, + 0x98, 0xd6, 0x8d, 0x56, 0x67, 0xb7, 0x8d, 0x55, 0xac, 0xd1, 0x7e, 0x65, 0x52, 0x0d, 0x27, 0x05, + 0x5b, 0xfb, 0x2e, 0x5b, 0xb2, 0xb7, 0xb5, 0xff, 0x69, 0xe1, 0x65, 0x98, 0x30, 0x0b, 0x24, 0x20, + 0x65, 0x84, 0xdd, 0x55, 0x84, 0x59, 0x23, 0x94, 0xd5, 0x33, 0xd8, 0x7b, 0x2f, 0x14, 0x08, 0x93, + 0x53, 0xf9, 0x3f, 0xd0, 0x7b, 0x85, 0x1a, 0xeb, 0x20, 0x86, 0x92, 0x21, 0xb3, 0x34, 0xc4, 0x24, + 0x59, 0x81, 0xb9, 0x4a, 0xb5, 0x51, 0x56, 0xab, 0xc5, 0x55, 0x96, 0x45, 0x46, 0xdf, 0x93, 0x20, + 0xa7, 0xe2, 0x6e, 0xe7, 0x52, 0x38, 0x62, 0x34, 0x73, 0x14, 0xcf, 0xf8, 0x8e, 0xe2, 0xca, 0x12, + 0x80, 0xd6, 0x72, 0x0b, 0x26, 0x57, 0x6a, 0x49, 0x7d, 0xe3, 0x98, 0x72, 0x15, 0x2c, 0xfa, 0xb9, + 0xd5, 0xd0, 0x9f, 0xe8, 0x79, 0xc2, 0x3b, 0x47, 0x1c, 0x35, 0xc2, 0x61, 0x44, 0x9f, 0xf0, 0x3e, + 0xa1, 0xcd, 0x9e, 0x81, 0xe4, 0x0e, 0x47, 0xfc, 0x5f, 0x96, 0x20, 0xdb, 0x70, 0x7b, 0xcb, 0x50, + 0xc7, 0xf9, 0xa9, 0xe1, 0x74, 0xdc, 0x25, 0x13, 0xa1, 0xe3, 0x77, 0xc3, 0x4c, 0x58, 0x63, 0x99, + 0xab, 0x44, 0xac, 0x8a, 0x73, 0x3f, 0x0c, 0xa3, 0xe1, 0x7d, 0xd8, 0x39, 0x1c, 0x11, 0x7f, 0xfc, + 0xf1, 0x00, 0x6b, 0x78, 0xe7, 0x3c, 0xb6, 0xec, 0x6d, 0xbd, 0x8b, 0xfe, 0x4e, 0x86, 0xa9, 0x65, + 0xec, 0xd4, 0x1d, 0xcd, 0xd9, 0xb5, 0x7b, 0xb6, 0x3b, 0x0d, 0xb3, 0xa4, 0xb5, 0xb6, 0x31, 0xeb, + 0x8e, 0xbc, 0x57, 0xf4, 0x4e, 0x59, 0xd4, 0x9f, 0x28, 0x28, 0x67, 0xde, 0x2f, 0x23, 0x02, 0x93, + 0x27, 0x40, 0xb6, 0xad, 0x39, 0x1a, 0xc3, 0xe2, 0x8a, 0x1e, 0x2c, 0x02, 0x42, 0x2a, 0xc9, 0x86, + 0x7e, 0x47, 0x12, 0x71, 0x28, 0x12, 0x28, 0x3f, 0x19, 0x08, 0xef, 0xcd, 0x0c, 0x81, 0xc2, 0x31, + 0x98, 0xad, 0xd6, 0x1a, 0xcd, 0xd5, 0xda, 0xf2, 0x72, 0xd9, 0x4d, 0x2d, 0xc8, 0xca, 0x49, 0x50, + 0xd6, 0x8b, 0xf7, 0xaf, 0x95, 0xab, 0x8d, 0x66, 0xb5, 0xb6, 0x58, 0x66, 0x7f, 0x66, 0x95, 0xa3, + 0x30, 0x5d, 0x2a, 0x96, 0x56, 0xbc, 0x84, 0x9c, 0x72, 0x0a, 0x8e, 0xaf, 0x95, 0xd7, 0x16, 0xca, + 0x6a, 0x7d, 0xa5, 0xb2, 0xde, 0x74, 0xc9, 0x2c, 0xd5, 0x36, 0xaa, 0x8b, 0x85, 0xbc, 0x82, 0xe0, + 0x64, 0xe8, 0xcb, 0x39, 0xb5, 0x56, 0x5d, 0x6e, 0xd6, 0x1b, 0xc5, 0x46, 0xb9, 0x30, 0xa1, 0x5c, + 0x06, 0x47, 0x4b, 0xc5, 0x2a, 0xc9, 0x5e, 0xaa, 0x55, 0xab, 0xe5, 0x52, 0xa3, 0x30, 0x89, 0xfe, + 0x3d, 0x0b, 0xd3, 0x15, 0xbb, 0xaa, 0xed, 0xe0, 0xb3, 0x5a, 0x47, 0x6f, 0xa3, 0xe7, 0x86, 0x66, + 0x1e, 0xd7, 0xc1, 0xac, 0x45, 0x1f, 0x71, 0xbb, 0xa1, 0x63, 0x8a, 0xe6, 0xac, 0xca, 0x27, 0xba, + 0x73, 0x72, 0x83, 0x10, 0xf0, 0xe6, 0xe4, 0xf4, 0x4d, 0x59, 0x00, 0xa0, 0x4f, 0x8d, 0xe0, 0x72, + 0xd7, 0x33, 0xbd, 0xad, 0x49, 0xdb, 0xc1, 0x36, 0xb6, 0xf6, 0xf4, 0x16, 0xf6, 0x72, 0xaa, 0xa1, + 0xbf, 0xd0, 0x57, 0x64, 0xd1, 0xfd, 0xc5, 0x10, 0xa8, 0xa1, 0xea, 0x44, 0xf4, 0x86, 0xbf, 0x24, + 0x8b, 0xec, 0x0e, 0x0a, 0x91, 0x4c, 0xa6, 0x29, 0x2f, 0x90, 0x86, 0x5b, 0xb6, 0x6d, 0xd4, 0x6a, + 0xcd, 0xfa, 0x4a, 0x4d, 0x6d, 0x14, 0x64, 0x65, 0x06, 0x26, 0xdd, 0xd7, 0xd5, 0x5a, 0x75, 0xb9, + 0x90, 0x55, 0x4e, 0xc0, 0xb1, 0x95, 0x62, 0xbd, 0x59, 0xa9, 0x9e, 0x2d, 0xae, 0x56, 0x16, 0x9b, + 0xa5, 0x95, 0xa2, 0x5a, 0x2f, 0xe4, 0x94, 0x2b, 0xe0, 0x44, 0xa3, 0x52, 0x56, 0x9b, 0x4b, 0xe5, + 0x62, 0x63, 0x43, 0x2d, 0xd7, 0x9b, 0xd5, 0x5a, 0xb3, 0x5a, 0x5c, 0x2b, 0x17, 0xf2, 0x6e, 0xf3, + 0x27, 0x9f, 0x02, 0xb5, 0x99, 0xd8, 0xaf, 0x8c, 0x93, 0x11, 0xca, 0x38, 0xd5, 0xab, 0x8c, 0x10, + 0x56, 0x2b, 0xb5, 0x5c, 0x2f, 0xab, 0x67, 0xcb, 0x85, 0xe9, 0x7e, 0xba, 0x36, 0xa3, 0x1c, 0x87, + 0x82, 0xcb, 0x43, 0xb3, 0x52, 0xf7, 0x72, 0x2e, 0x16, 0x66, 0xd1, 0xc7, 0xf2, 0x70, 0x52, 0xc5, + 0x5b, 0xba, 0xed, 0x60, 0x6b, 0x5d, 0xbb, 0xb4, 0x83, 0x0d, 0xc7, 0xeb, 0xe4, 0xff, 0x25, 0xb1, + 0x32, 0xae, 0xc1, 0x6c, 0x97, 0xd2, 0x58, 0xc3, 0xce, 0xb6, 0xd9, 0x66, 0xa3, 0xf0, 0xe3, 0x22, + 0x7b, 0x8e, 0xf9, 0xf5, 0x70, 0x76, 0x95, 0xff, 0x3b, 0xa4, 0xdb, 0x72, 0x8c, 0x6e, 0x67, 0x87, + 0xd1, 0x6d, 0xe5, 0x2a, 0x98, 0xda, 0xb5, 0xb1, 0x55, 0xde, 0xd1, 0xf4, 0x8e, 0x77, 0x39, 0xa7, + 0x9f, 0x80, 0xde, 0x96, 0x15, 0x3d, 0xb1, 0x12, 0xaa, 0x4b, 0x7f, 0x31, 0x46, 0xf4, 0xad, 0xa7, + 0x01, 0x58, 0x65, 0x37, 0xac, 0x0e, 0x53, 0xd6, 0x50, 0x8a, 0xcb, 0xdf, 0x79, 0xbd, 0xd3, 0xd1, + 0x8d, 0x2d, 0x7f, 0xdf, 0x3f, 0x48, 0x40, 0x2f, 0x90, 0x45, 0x4e, 0xb0, 0x24, 0xe5, 0x2d, 0x59, + 0x6b, 0x7a, 0x9e, 0x34, 0xe6, 0x7e, 0x77, 0x7f, 0xd3, 0xc9, 0x2b, 0x05, 0x98, 0x21, 0x69, 0xac, + 0x05, 0x16, 0x26, 0xdc, 0x3e, 0xd8, 0x23, 0xb7, 0x56, 0x6e, 0xac, 0xd4, 0x16, 0xfd, 0x6f, 0x93, + 0x2e, 0x49, 0x97, 0x99, 0x62, 0xf5, 0x7e, 0xd2, 0x1a, 0xa7, 0x94, 0xc7, 0xc0, 0x15, 0xa1, 0x0e, + 0xbb, 0xb8, 0xaa, 0x96, 0x8b, 0x8b, 0xf7, 0x37, 0xcb, 0x4f, 0xaf, 0xd4, 0x1b, 0x75, 0xbe, 0x71, + 0x79, 0xed, 0x68, 0xda, 0xe5, 0xb7, 0xbc, 0x56, 0xac, 0xac, 0xb2, 0xfe, 0x7d, 0xa9, 0xa6, 0xae, + 0x15, 0x1b, 0x85, 0x19, 0xf4, 0x52, 0x19, 0x0a, 0xcb, 0xd8, 0x59, 0x37, 0x2d, 0x47, 0xeb, 0xac, + 0xea, 0xc6, 0x85, 0x0d, 0xab, 0xc3, 0x4d, 0x36, 0x85, 0xc3, 0x74, 0xf0, 0x43, 0x24, 0x47, 0x30, + 0x7a, 0x47, 0xbc, 0x4b, 0xb2, 0x05, 0xca, 0x14, 0x24, 0xa0, 0x67, 0x4a, 0x22, 0xcb, 0xdd, 0xe2, + 0xa5, 0x26, 0xd3, 0x93, 0x67, 0x8d, 0x7b, 0x7c, 0xee, 0x83, 0x5a, 0x1e, 0x3d, 0x27, 0x0b, 0x93, + 0x4b, 0xba, 0xa1, 0x75, 0xf4, 0x67, 0x70, 0xf1, 0x4b, 0x83, 0x3e, 0x26, 0x13, 0xd3, 0xc7, 0x48, + 0x43, 0x8d, 0x9f, 0xbf, 0x26, 0x8b, 0x2e, 0x2f, 0x84, 0x64, 0xef, 0x31, 0x19, 0x31, 0x78, 0x7e, + 0x50, 0x12, 0x59, 0x5e, 0x18, 0x4c, 0x2f, 0x19, 0x86, 0x9f, 0xfc, 0xc1, 0xb0, 0xb1, 0x7a, 0xda, + 0xf7, 0x64, 0x3f, 0x55, 0x98, 0x42, 0x7f, 0x26, 0x03, 0x5a, 0xc6, 0xce, 0x59, 0x6c, 0xf9, 0x53, + 0x01, 0xd2, 0xeb, 0x33, 0x7b, 0x3b, 0xd4, 0x64, 0xdf, 0x18, 0x06, 0xf0, 0x1c, 0x0f, 0x60, 0x31, + 0xa6, 0xf1, 0x44, 0x90, 0x8e, 0x68, 0xbc, 0x15, 0xc8, 0xdb, 0xe4, 0x3b, 0x53, 0xb3, 0x27, 0x46, + 0x0f, 0x97, 0x84, 0x58, 0x98, 0x3a, 0x25, 0xac, 0x32, 0x02, 0xe8, 0xbb, 0xfe, 0x24, 0xe8, 0x27, + 0x39, 0xed, 0x58, 0x3a, 0x30, 0xb3, 0xc9, 0xf4, 0xc5, 0x4a, 0x57, 0x5d, 0xfa, 0xd9, 0x37, 0xe8, + 0x83, 0x39, 0x38, 0xde, 0xaf, 0x3a, 0xe8, 0x77, 0x33, 0xdc, 0x0e, 0x3b, 0x26, 0x43, 0x7e, 0x86, + 0x6d, 0x20, 0xba, 0x2f, 0xca, 0x93, 0xe1, 0x84, 0xbf, 0x0c, 0xd7, 0x30, 0xab, 0xf8, 0xa2, 0xdd, + 0xc1, 0x8e, 0x83, 0x2d, 0x52, 0xb5, 0x49, 0xb5, 0xff, 0x47, 0xe5, 0xa9, 0x70, 0xb9, 0x6e, 0xd8, + 0x7a, 0x1b, 0x5b, 0x0d, 0xbd, 0x6b, 0x17, 0x8d, 0x76, 0x63, 0xd7, 0x31, 0x2d, 0x5d, 0x63, 0x57, + 0x49, 0x4e, 0xaa, 0x51, 0x9f, 0x95, 0x1b, 0xa1, 0xa0, 0xdb, 0x35, 0xe3, 0xbc, 0xa9, 0x59, 0x6d, + 0xdd, 0xd8, 0x5a, 0xd5, 0x6d, 0x87, 0x79, 0x00, 0xef, 0x4b, 0x47, 0x7f, 0x2f, 0x8b, 0x1e, 0xa6, + 0x1b, 0x00, 0x6b, 0x44, 0x87, 0xf2, 0x8b, 0xb2, 0xc8, 0xf1, 0xb8, 0x64, 0xb4, 0x93, 0x29, 0xcb, + 0xb3, 0xc7, 0x6d, 0x48, 0xf4, 0x1f, 0xc1, 0x49, 0xd7, 0x42, 0xd3, 0x3d, 0x43, 0xe0, 0x6c, 0x59, + 0xad, 0x2c, 0x55, 0xca, 0xae, 0x59, 0x71, 0x02, 0x8e, 0x05, 0xdf, 0x16, 0xef, 0x6f, 0xd6, 0xcb, + 0xd5, 0x46, 0x61, 0xd2, 0xed, 0xa7, 0x68, 0xf2, 0x52, 0xb1, 0xb2, 0x5a, 0x5e, 0x6c, 0x36, 0x6a, + 0xee, 0x97, 0xc5, 0xe1, 0x4c, 0x0b, 0xf4, 0x50, 0x16, 0x8e, 0x12, 0xd9, 0x5e, 0x22, 0x52, 0x75, + 0x85, 0xd2, 0xe3, 0x6b, 0xeb, 0x03, 0x34, 0x45, 0xc5, 0x8b, 0x3e, 0x2b, 0x7c, 0x53, 0x66, 0x08, + 0xc2, 0x9e, 0x32, 0x22, 0x34, 0xe3, 0x3b, 0x92, 0x48, 0x84, 0x0a, 0x61, 0xb2, 0xc9, 0x94, 0xe2, + 0x5f, 0xc7, 0x3d, 0xe2, 0x44, 0x83, 0x4f, 0xac, 0xcc, 0x12, 0xf9, 0xf9, 0xe9, 0xeb, 0x15, 0x95, + 0xa8, 0xc3, 0x1c, 0x00, 0x49, 0x21, 0x1a, 0x44, 0xf5, 0xa0, 0xef, 0x78, 0x15, 0xa5, 0x07, 0xc5, + 0x52, 0xa3, 0x72, 0xb6, 0x1c, 0xa5, 0x07, 0x9f, 0x91, 0x61, 0x72, 0x19, 0x3b, 0xee, 0x9c, 0xca, + 0x46, 0x4f, 0x13, 0x58, 0xff, 0x71, 0xcd, 0x98, 0x8e, 0xd9, 0xd2, 0x3a, 0xfe, 0x32, 0x00, 0x7d, + 0x43, 0xbf, 0x30, 0x8c, 0x09, 0xe2, 0x15, 0x1d, 0x31, 0x5e, 0xfd, 0x38, 0xe4, 0x1c, 0xf7, 0x33, + 0x5b, 0x86, 0xfe, 0x91, 0xc8, 0xe1, 0xca, 0x25, 0xb2, 0xa8, 0x39, 0x9a, 0x4a, 0xf3, 0x87, 0x46, + 0x27, 0x41, 0xdb, 0x25, 0x82, 0x91, 0x1f, 0x44, 0xfb, 0xf3, 0x6f, 0x65, 0x38, 0x41, 0xdb, 0x47, + 0xb1, 0xdb, 0xad, 0x3b, 0xa6, 0x85, 0x55, 0xdc, 0xc2, 0x7a, 0xd7, 0xe9, 0x59, 0xdf, 0xb3, 0x68, + 0xaa, 0xb7, 0xd9, 0xcc, 0x5e, 0xd1, 0xeb, 0x64, 0xd1, 0x18, 0xcc, 0xfb, 0xda, 0x63, 0x4f, 0x79, + 0x11, 0x8d, 0xfd, 0xa3, 0x92, 0x48, 0x54, 0xe5, 0x84, 0xc4, 0x93, 0x01, 0xf5, 0xa1, 0x43, 0x00, + 0xca, 0x5b, 0xb9, 0x51, 0xcb, 0xa5, 0x72, 0x65, 0xdd, 0x1d, 0x04, 0xae, 0x86, 0x2b, 0xd7, 0x37, + 0xd4, 0xd2, 0x4a, 0xb1, 0x5e, 0x6e, 0xaa, 0xe5, 0xe5, 0x4a, 0xbd, 0xc1, 0x9c, 0xb2, 0xe8, 0x5f, + 0x13, 0xca, 0x55, 0x70, 0xaa, 0xbe, 0xb1, 0x50, 0x2f, 0xa9, 0x95, 0x75, 0x92, 0xae, 0x96, 0xab, + 0xe5, 0x73, 0xec, 0xeb, 0x24, 0x7a, 0x7f, 0x01, 0xa6, 0xdd, 0x09, 0x40, 0x9d, 0xce, 0x0b, 0xd0, + 0x37, 0xb3, 0x30, 0xad, 0x62, 0xdb, 0xec, 0xec, 0x91, 0x39, 0xc2, 0xb8, 0xa6, 0x1e, 0xdf, 0x96, + 0x45, 0xcf, 0x6f, 0x87, 0x98, 0x9d, 0x0f, 0x31, 0x1a, 0x3d, 0xd1, 0xd4, 0xf6, 0x34, 0xbd, 0xa3, + 0x9d, 0x67, 0x5d, 0xcd, 0xa4, 0x1a, 0x24, 0x28, 0xf3, 0xa0, 0x98, 0x17, 0x0d, 0x6c, 0xd5, 0x5b, + 0x17, 0xcb, 0xce, 0x76, 0xb1, 0xdd, 0xb6, 0xb0, 0x6d, 0xb3, 0xd5, 0x8b, 0x3e, 0x5f, 0x94, 0x1b, + 0xe0, 0x28, 0x49, 0x0d, 0x65, 0xa6, 0x0e, 0x32, 0xbd, 0xc9, 0x7e, 0xce, 0xa2, 0x71, 0xc9, 0xcb, + 0x99, 0x0b, 0xe5, 0x0c, 0x92, 0xc3, 0xc7, 0x25, 0xf2, 0xfc, 0x29, 0x9d, 0x6b, 0x60, 0xda, 0xd0, + 0x76, 0x70, 0xf9, 0xc1, 0xae, 0x6e, 0x61, 0x9b, 0x38, 0xc6, 0xc8, 0x6a, 0x38, 0x09, 0x7d, 0x50, + 0xe8, 0xbc, 0xb9, 0x98, 0xc4, 0x92, 0xe9, 0xfe, 0xf2, 0x10, 0xaa, 0xdf, 0xa7, 0x9f, 0x91, 0xd1, + 0xfb, 0x65, 0x98, 0x61, 0x4c, 0x15, 0x8d, 0x4b, 0x95, 0x36, 0xba, 0x9a, 0x33, 0x7e, 0x35, 0x37, + 0xcd, 0x33, 0x7e, 0xc9, 0x0b, 0xfa, 0x65, 0x59, 0xd4, 0xdd, 0xb9, 0x4f, 0xc5, 0x49, 0x19, 0xd1, + 0x8e, 0xa3, 0x9b, 0xe6, 0x2e, 0x73, 0x54, 0x9d, 0x54, 0xe9, 0x4b, 0x9a, 0x8b, 0x7a, 0xe8, 0x0f, + 0x84, 0x9c, 0xa9, 0x05, 0xab, 0x71, 0x48, 0x00, 0x7e, 0x5c, 0x86, 0x39, 0xc6, 0x55, 0x9d, 0x9d, + 0xf3, 0x11, 0x3a, 0xf0, 0xf6, 0x2b, 0xc2, 0x86, 0x60, 0x9f, 0xfa, 0xb3, 0x92, 0x1e, 0x35, 0x40, + 0x7e, 0x58, 0x28, 0x38, 0x9a, 0x70, 0x45, 0x0e, 0x09, 0xca, 0xb7, 0x67, 0x61, 0x7a, 0xc3, 0xc6, + 0x16, 0xf3, 0xdb, 0x47, 0xaf, 0xce, 0x82, 0xbc, 0x8c, 0xb9, 0x8d, 0xd4, 0xe7, 0x0b, 0x7b, 0xf8, + 0x86, 0x2b, 0x1b, 0x22, 0xea, 0xda, 0x48, 0x11, 0xb0, 0x5d, 0x0f, 0x73, 0x54, 0xa4, 0x45, 0xc7, + 0x71, 0x8d, 0x44, 0xcf, 0x9b, 0xb6, 0x27, 0x75, 0x14, 0x5b, 0x45, 0xa4, 0x2c, 0x37, 0x4b, 0xc9, + 0xe5, 0x69, 0x15, 0x6f, 0xd2, 0xf9, 0x6c, 0x56, 0xed, 0x49, 0x55, 0x6e, 0x81, 0xcb, 0xcc, 0x2e, + 0xa6, 0xe7, 0x57, 0x42, 0x99, 0x73, 0x24, 0x73, 0xbf, 0x4f, 0xe8, 0x9b, 0x42, 0xbe, 0xba, 0xe2, + 0xd2, 0x49, 0xa6, 0x0b, 0xdd, 0xd1, 0x98, 0x24, 0xc7, 0xa1, 0xe0, 0xe6, 0x20, 0xfb, 0x2f, 0x6a, + 0xb9, 0x5e, 0x5b, 0x3d, 0x5b, 0xee, 0xbf, 0x8c, 0x91, 0x43, 0xcf, 0x96, 0x61, 0x6a, 0xc1, 0x32, + 0xb5, 0x76, 0x4b, 0xb3, 0x1d, 0xf4, 0x5d, 0x09, 0x66, 0xd6, 0xb5, 0x4b, 0x1d, 0x53, 0x6b, 0x13, + 0xff, 0xfe, 0x9e, 0xbe, 0xa0, 0x4b, 0x3f, 0x79, 0x7d, 0x01, 0x7b, 0xe5, 0x0f, 0x06, 0xfa, 0x47, + 0xf7, 0x32, 0x22, 0x17, 0x6a, 0xfa, 0xdb, 0x7c, 0x52, 0xbf, 0x60, 0xa5, 0x1e, 0x5f, 0xf3, 0x61, + 0x9e, 0x22, 0x2c, 0xca, 0xf7, 0x8b, 0x85, 0x1f, 0x15, 0x21, 0x79, 0x38, 0xbb, 0xf2, 0xcf, 0x99, + 0x84, 0xfc, 0x22, 0x26, 0x56, 0xdc, 0xff, 0x90, 0x60, 0xa2, 0x8e, 0x1d, 0x62, 0xc1, 0xdd, 0xc6, + 0x79, 0x0a, 0xb7, 0x49, 0x86, 0xc0, 0x89, 0xdd, 0x7b, 0x77, 0x27, 0xeb, 0xa1, 0xf3, 0xd6, 0xe4, + 0x39, 0x81, 0x47, 0x22, 0x2d, 0x77, 0x9e, 0x95, 0x79, 0x20, 0x8f, 0xc4, 0x58, 0x52, 0xe9, 0xfb, + 0x5a, 0xbd, 0x53, 0x62, 0xae, 0x55, 0xa1, 0x5e, 0xef, 0x95, 0x61, 0xfd, 0x8c, 0xf5, 0x36, 0x63, + 0xcc, 0xc7, 0x38, 0x47, 0x3d, 0x09, 0x26, 0xa8, 0xcc, 0xbd, 0xf9, 0x68, 0xaf, 0x9f, 0x02, 0x25, + 0x41, 0xce, 0x5e, 0x7b, 0x39, 0x05, 0x5d, 0xd4, 0xa2, 0x0b, 0x1f, 0x4b, 0x0c, 0x82, 0x99, 0x2a, + 0x76, 0x2e, 0x9a, 0xd6, 0x85, 0xba, 0xa3, 0x39, 0x18, 0xfd, 0xab, 0x04, 0x72, 0x1d, 0x3b, 0xe1, + 0xe8, 0x27, 0x55, 0x38, 0x46, 0x2b, 0xc4, 0x32, 0x92, 0xfe, 0x9b, 0x56, 0xe4, 0x9a, 0xbe, 0x42, + 0x08, 0xe5, 0x53, 0xf7, 0xff, 0x8a, 0x7e, 0xa3, 0x6f, 0xd0, 0x27, 0xa9, 0xcf, 0xa4, 0x81, 0x49, + 0x26, 0xcc, 0xa0, 0xab, 0x60, 0x11, 0x7a, 0xfa, 0x01, 0x21, 0xb3, 0x5a, 0x8c, 0xe6, 0xe1, 0x74, + 0x05, 0x1f, 0xbe, 0x02, 0xb2, 0xa5, 0x6d, 0xcd, 0x41, 0xef, 0x90, 0x01, 0x8a, 0xed, 0xf6, 0x1a, + 0xf5, 0x01, 0x0f, 0x3b, 0xa4, 0x9d, 0x81, 0x99, 0xd6, 0xb6, 0x16, 0xdc, 0x6d, 0x42, 0xfb, 0x03, + 0x2e, 0x4d, 0x79, 0x72, 0xe0, 0x4c, 0x4e, 0xa5, 0x8a, 0x7a, 0x60, 0x72, 0xcb, 0x60, 0xb4, 0x7d, + 0x47, 0x73, 0x3e, 0x14, 0x66, 0xec, 0x11, 0x3a, 0xf7, 0xf7, 0xf9, 0x80, 0xbd, 0xe8, 0x39, 0x1c, + 0x23, 0xed, 0x1f, 0xb0, 0x09, 0x12, 0x12, 0x9e, 0xf4, 0x16, 0x0b, 0xe8, 0x11, 0xcf, 0xd7, 0x58, + 0x42, 0xd7, 0x2a, 0xe5, 0xb6, 0xee, 0x89, 0x96, 0x05, 0xcc, 0x42, 0xcf, 0xcb, 0x24, 0x83, 0x2f, + 0x5e, 0x70, 0xf7, 0xc0, 0x2c, 0x6e, 0xeb, 0x0e, 0xf6, 0x6a, 0xc9, 0x04, 0x18, 0x07, 0x31, 0xff, + 0x03, 0x7a, 0x96, 0x70, 0xd0, 0x35, 0x22, 0xd0, 0xfd, 0x35, 0x8a, 0x68, 0x7f, 0x62, 0x61, 0xd4, + 0xc4, 0x68, 0xa6, 0x0f, 0xd6, 0x2f, 0xc8, 0x70, 0xa2, 0x61, 0x6e, 0x6d, 0x75, 0xb0, 0x27, 0x26, + 0x4c, 0xbd, 0x33, 0x91, 0x36, 0x4a, 0xb8, 0xc8, 0x4e, 0x90, 0xf9, 0x80, 0xee, 0x1f, 0x25, 0x73, + 0x5f, 0xf8, 0x13, 0x53, 0xb1, 0xb3, 0x28, 0x22, 0xae, 0xbe, 0x7c, 0x46, 0xa0, 0x20, 0x16, 0xf0, + 0x59, 0x98, 0x6c, 0xfa, 0x40, 0x7c, 0x51, 0x82, 0x59, 0x7a, 0x73, 0xa5, 0xa7, 0xa0, 0xf7, 0x8d, + 0x10, 0x00, 0xf4, 0xdd, 0x8c, 0xa8, 0x9f, 0x2d, 0x91, 0x09, 0xc7, 0x49, 0x84, 0x88, 0xc5, 0x82, + 0xaa, 0x0c, 0x24, 0x97, 0xbe, 0x68, 0xff, 0x58, 0x86, 0xe9, 0x65, 0xec, 0xb5, 0x34, 0x3b, 0x71, + 0x4f, 0x74, 0x06, 0x66, 0xc8, 0xf5, 0x6d, 0x35, 0x76, 0x4c, 0x92, 0xae, 0x9a, 0x71, 0x69, 0xca, + 0x75, 0x30, 0x7b, 0x1e, 0x6f, 0x9a, 0x16, 0xae, 0x71, 0x67, 0x29, 0xf9, 0xc4, 0x88, 0xf0, 0x74, + 0x5c, 0x1c, 0xb4, 0x05, 0x1e, 0x9b, 0x9b, 0xf6, 0x0b, 0x33, 0x54, 0x95, 0x88, 0x31, 0xe7, 0x29, + 0x30, 0xc9, 0x90, 0xf7, 0xcc, 0xb4, 0xb8, 0x7e, 0xd1, 0xcf, 0x8b, 0x5e, 0xeb, 0x23, 0x5a, 0xe6, + 0x10, 0x7d, 0x62, 0x12, 0x26, 0xc6, 0x72, 0xbf, 0x7b, 0x21, 0x54, 0xfe, 0xc2, 0xa5, 0x4a, 0xdb, + 0x46, 0x6b, 0xc9, 0x30, 0x3d, 0x0d, 0xe0, 0x37, 0x0e, 0x2f, 0xac, 0x45, 0x28, 0x85, 0x8f, 0x5c, + 0x1f, 0x7b, 0x50, 0xaf, 0x57, 0x1c, 0x84, 0x9d, 0x11, 0x03, 0x23, 0x76, 0xc0, 0x4f, 0x84, 0x93, + 0xf4, 0xd1, 0xf9, 0xb4, 0x0c, 0x27, 0xfc, 0xf3, 0x47, 0xab, 0x9a, 0x1d, 0xb4, 0xbb, 0x52, 0x32, + 0x88, 0xb8, 0x03, 0x1f, 0x7e, 0x63, 0xf9, 0x56, 0xb2, 0x31, 0xa3, 0x2f, 0x27, 0xa3, 0x45, 0x47, + 0xb9, 0x09, 0x8e, 0x19, 0xbb, 0x3b, 0xbe, 0xd4, 0x49, 0x8b, 0x67, 0x2d, 0x7c, 0xff, 0x87, 0x24, + 0x23, 0x93, 0x08, 0xf3, 0x63, 0x99, 0x53, 0x72, 0x47, 0xba, 0x9e, 0x90, 0x08, 0x46, 0xf4, 0xcf, + 0x99, 0x44, 0xbd, 0xdb, 0xe0, 0x33, 0x5f, 0x09, 0x7a, 0xa9, 0x43, 0x3c, 0xf0, 0x75, 0x66, 0x02, + 0x72, 0xe5, 0x9d, 0xae, 0x73, 0xe9, 0xcc, 0x63, 0x61, 0xb6, 0xee, 0x58, 0x58, 0xdb, 0x09, 0xed, + 0x0c, 0x38, 0xe6, 0x05, 0x6c, 0x78, 0x3b, 0x03, 0xe4, 0xe5, 0xf6, 0xdb, 0x60, 0xc2, 0x30, 0x9b, + 0xda, 0xae, 0xb3, 0xad, 0x5c, 0xbd, 0xef, 0x48, 0x3d, 0x03, 0xbf, 0xc6, 0x62, 0x18, 0x7d, 0xe5, + 0x0e, 0xb2, 0x36, 0x9c, 0x37, 0xcc, 0xe2, 0xae, 0xb3, 0xbd, 0x70, 0xd5, 0xc7, 0xff, 0xe6, 0x74, + 0xe6, 0x33, 0x7f, 0x73, 0x3a, 0xf3, 0xe5, 0xbf, 0x39, 0x9d, 0xf9, 0x95, 0xaf, 0x9e, 0x3e, 0xf2, + 0x99, 0xaf, 0x9e, 0x3e, 0xf2, 0xc5, 0xaf, 0x9e, 0x3e, 0xf2, 0x93, 0x52, 0xf7, 0xfc, 0xf9, 0x3c, + 0xa1, 0xf2, 0xa4, 0xff, 0x37, 0x00, 0x00, 0xff, 0xff, 0xcb, 0xc4, 0xd4, 0x2d, 0x0c, 0x0a, 0x02, + 0x00, } func (m *Rpc) Marshal() (dAtA []byte, err error) { @@ -76743,6 +76978,13 @@ func (m *RpcAccountCreateRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) _ = i var l int _ = l + if len(m.JsonApiListenAddr) > 0 { + i -= len(m.JsonApiListenAddr) + copy(dAtA[i:], m.JsonApiListenAddr) + i = encodeVarintCommands(dAtA, i, uint64(len(m.JsonApiListenAddr))) + i-- + dAtA[i] = 0x4a + } if m.PreferYamuxTransport { i-- if m.PreferYamuxTransport { @@ -77329,6 +77571,13 @@ func (m *RpcAccountSelectRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) _ = i var l int _ = l + if len(m.JsonApiListenAddr) > 0 { + i -= len(m.JsonApiListenAddr) + copy(dAtA[i:], m.JsonApiListenAddr) + i = encodeVarintCommands(dAtA, i, uint64(len(m.JsonApiListenAddr))) + i-- + dAtA[i] = 0x3a + } if m.PreferYamuxTransport { i-- if m.PreferYamuxTransport { @@ -78178,6 +78427,129 @@ func (m *RpcAccountEnableLocalNetworkSyncResponseError) MarshalToSizedBuffer(dAt return len(dAtA) - i, nil } +func (m *RpcAccountChangeJsonApiAddr) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcAccountChangeJsonApiAddr) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcAccountChangeJsonApiAddr) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *RpcAccountChangeJsonApiAddrRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcAccountChangeJsonApiAddrRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcAccountChangeJsonApiAddrRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.ListenAddr) > 0 { + i -= len(m.ListenAddr) + copy(dAtA[i:], m.ListenAddr) + i = encodeVarintCommands(dAtA, i, uint64(len(m.ListenAddr))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *RpcAccountChangeJsonApiAddrResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcAccountChangeJsonApiAddrResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcAccountChangeJsonApiAddrResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Error != nil { + { + size, err := m.Error.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCommands(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + return len(dAtA) - i, nil +} + +func (m *RpcAccountChangeJsonApiAddrResponseError) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcAccountChangeJsonApiAddrResponseError) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcAccountChangeJsonApiAddrResponseError) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Description) > 0 { + i -= len(m.Description) + copy(dAtA[i:], m.Description) + i = encodeVarintCommands(dAtA, i, uint64(len(m.Description))) + i-- + dAtA[i] = 0x12 + } + if m.Code != 0 { + i = encodeVarintCommands(dAtA, i, uint64(m.Code)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + func (m *RpcAccountChangeNetworkConfigAndRestart) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -119977,6 +120349,10 @@ func (m *RpcAccountCreateRequest) Size() (n int) { if m.PreferYamuxTransport { n += 2 } + l = len(m.JsonApiListenAddr) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } return n } @@ -120212,6 +120588,10 @@ func (m *RpcAccountSelectRequest) Size() (n int) { if m.PreferYamuxTransport { n += 2 } + l = len(m.JsonApiListenAddr) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } return n } @@ -120544,6 +120924,57 @@ func (m *RpcAccountEnableLocalNetworkSyncResponseError) Size() (n int) { return n } +func (m *RpcAccountChangeJsonApiAddr) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *RpcAccountChangeJsonApiAddrRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ListenAddr) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + +func (m *RpcAccountChangeJsonApiAddrResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Error != nil { + l = m.Error.Size() + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + +func (m *RpcAccountChangeJsonApiAddrResponseError) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Code != 0 { + n += 1 + sovCommands(uint64(m.Code)) + } + l = len(m.Description) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + func (m *RpcAccountChangeNetworkConfigAndRestart) Size() (n int) { if m == nil { return 0 @@ -146926,6 +147357,38 @@ func (m *RpcAccountCreateRequest) Unmarshal(dAtA []byte) error { } } m.PreferYamuxTransport = bool(v != 0) + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field JsonApiListenAddr", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.JsonApiListenAddr = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipCommands(dAtA[iNdEx:]) @@ -148373,6 +148836,38 @@ func (m *RpcAccountSelectRequest) Unmarshal(dAtA []byte) error { } } m.PreferYamuxTransport = bool(v != 0) + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field JsonApiListenAddr", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.JsonApiListenAddr = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipCommands(dAtA[iNdEx:]) @@ -150469,6 +150964,325 @@ func (m *RpcAccountEnableLocalNetworkSyncResponseError) Unmarshal(dAtA []byte) e } return nil } +func (m *RpcAccountChangeJsonApiAddr) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ChangeJsonApiAddr: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ChangeJsonApiAddr: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcAccountChangeJsonApiAddrRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Request: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Request: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListenAddr", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ListenAddr = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcAccountChangeJsonApiAddrResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Response: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Response: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Error == nil { + m.Error = &RpcAccountChangeJsonApiAddrResponseError{} + } + if err := m.Error.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcAccountChangeJsonApiAddrResponseError) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Error: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Error: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Code", wireType) + } + m.Code = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Code |= RpcAccountChangeJsonApiAddrResponseErrorCode(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *RpcAccountChangeNetworkConfigAndRestart) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/pb/protos/commands.proto b/pb/protos/commands.proto index 088a7e399..eadc70d50 100644 --- a/pb/protos/commands.proto +++ b/pb/protos/commands.proto @@ -703,6 +703,7 @@ message Rpc { NetworkMode networkMode = 6; // optional, default is DefaultConfig string networkCustomConfigFilePath = 7; // config path for the custom network mode } bool preferYamuxTransport = 8; // optional, default is false, recommended in case of problems with QUIC transport + string jsonApiListenAddr = 9; // optional, if empty json api will not be started; 127.0.0.1:31009 should be the default one } /** * Middleware-to-front-end response for an account creation request, that can contain a NULL error and created account or a non-NULL error and an empty account @@ -824,6 +825,7 @@ message Rpc { NetworkMode networkMode = 4; // optional, default is DefaultConfig string networkCustomConfigFilePath = 5; // config path for the custom network mode bool preferYamuxTransport = 6; // optional, default is false, recommended in case of problems with QUIC transport + string jsonApiListenAddr = 7; // optional, if empty json api will not be started; 127.0.0.1:31009 should be the default one } /** @@ -1033,6 +1035,28 @@ message Rpc { } + message ChangeJsonApiAddr { + message Request { + string listenAddr = 1; // make sure to use 127.0.0.1:x to not listen on all interfaces; recommended value is 127.0.0.1:31009 + } + message Response { + Error error = 2; + + message Error { + Code code = 1; + string description = 2; + + enum Code { + NULL = 0; + UNKNOWN_ERROR = 1; + BAD_INPUT = 2; + ACCOUNT_IS_NOT_RUNNING = 4; + } + } + } + + } + message ChangeNetworkConfigAndRestart { message Request { NetworkMode networkMode = 1; diff --git a/pb/protos/service/service.proto b/pb/protos/service/service.proto index 36579a606..f892260ea 100644 --- a/pb/protos/service/service.proto +++ b/pb/protos/service/service.proto @@ -41,6 +41,8 @@ service ClientCommands { rpc AccountRevertDeletion (anytype.Rpc.Account.RevertDeletion.Request) returns (anytype.Rpc.Account.RevertDeletion.Response); rpc AccountSelect (anytype.Rpc.Account.Select.Request) returns (anytype.Rpc.Account.Select.Response); rpc AccountEnableLocalNetworkSync (anytype.Rpc.Account.EnableLocalNetworkSync.Request) returns (anytype.Rpc.Account.EnableLocalNetworkSync.Response); + rpc AccountChangeJsonApiAddr (anytype.Rpc.Account.ChangeJsonApiAddr.Request) returns (anytype.Rpc.Account.ChangeJsonApiAddr.Response); + rpc AccountStop (anytype.Rpc.Account.Stop.Request) returns (anytype.Rpc.Account.Stop.Response); rpc AccountMove (anytype.Rpc.Account.Move.Request) returns (anytype.Rpc.Account.Move.Response); rpc AccountConfigUpdate (anytype.Rpc.Account.ConfigUpdate.Request) returns (anytype.Rpc.Account.ConfigUpdate.Response); diff --git a/pb/service/service.pb.go b/pb/service/service.pb.go index 8adc4974b..576bbccd5 100644 --- a/pb/service/service.pb.go +++ b/pb/service/service.pb.go @@ -26,343 +26,344 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package func init() { proto.RegisterFile("pb/protos/service/service.proto", fileDescriptor_93a29dc403579097) } var fileDescriptor_93a29dc403579097 = []byte{ - // 5364 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x9d, 0xdf, 0x6f, 0x24, 0x49, - 0x52, 0xf8, 0xd7, 0x2f, 0xdf, 0xfd, 0x52, 0xc7, 0x2d, 0xd0, 0x0b, 0xcb, 0xde, 0x72, 0x37, 0xbf, - 0x76, 0xc6, 0xf6, 0x8c, 0xed, 0xf6, 0xec, 0xcc, 0xce, 0xee, 0xe9, 0x0e, 0x09, 0x79, 0xec, 0xb1, - 0xd7, 0x9c, 0xed, 0x31, 0xee, 0xf6, 0x8c, 0xb4, 0x12, 0x12, 0xe9, 0xea, 0x74, 0xbb, 0x70, 0x75, - 0x65, 0x5d, 0x55, 0x76, 0x7b, 0xfa, 0x10, 0x08, 0x04, 0x02, 0x81, 0x40, 0x9c, 0xf8, 0xf5, 0x8a, - 0xc4, 0x5f, 0xc3, 0xe3, 0x3d, 0xf2, 0x88, 0x76, 0x9f, 0xef, 0x7f, 0x40, 0x95, 0x95, 0x95, 0x3f, - 0xa2, 0x22, 0xb2, 0xca, 0xf7, 0x34, 0xa3, 0x8e, 0x4f, 0x44, 0x64, 0x56, 0x66, 0x46, 0x46, 0x66, - 0x65, 0xa5, 0xa3, 0xbb, 0xf9, 0xc5, 0x76, 0x5e, 0x08, 0x29, 0xca, 0xed, 0x92, 0x17, 0x8b, 0x24, - 0xe6, 0xcd, 0xbf, 0x43, 0xf5, 0xf3, 0xe0, 0x7d, 0x96, 0x2d, 0xe5, 0x32, 0xe7, 0x9f, 0x7c, 0x6c, - 0xc9, 0x58, 0xcc, 0x66, 0x2c, 0x9b, 0x94, 0x35, 0xf2, 0xc9, 0x47, 0x56, 0xc2, 0x17, 0x3c, 0x93, - 0xfa, 0xf7, 0x67, 0xbf, 0xfc, 0xe5, 0x4a, 0xf4, 0xc1, 0x6e, 0x9a, 0xf0, 0x4c, 0xee, 0x6a, 0x8d, - 0xc1, 0xd7, 0xd1, 0x77, 0x77, 0xf2, 0xfc, 0x80, 0xcb, 0x37, 0xbc, 0x28, 0x13, 0x91, 0x0d, 0x3e, - 0x1d, 0x6a, 0x07, 0xc3, 0xb3, 0x3c, 0x1e, 0xee, 0xe4, 0xf9, 0xd0, 0x0a, 0x87, 0x67, 0xfc, 0xa7, - 0x73, 0x5e, 0xca, 0x4f, 0x1e, 0x86, 0xa1, 0x32, 0x17, 0x59, 0xc9, 0x07, 0x97, 0xd1, 0x6f, 0xed, - 0xe4, 0xf9, 0x88, 0xcb, 0x3d, 0x5e, 0x55, 0x60, 0x24, 0x99, 0xe4, 0x83, 0xb5, 0x96, 0xaa, 0x0f, - 0x18, 0x1f, 0xeb, 0xdd, 0xa0, 0xf6, 0x33, 0x8e, 0xbe, 0x53, 0xf9, 0xb9, 0x9a, 0xcb, 0x89, 0xb8, - 0xc9, 0x06, 0xf7, 0xdb, 0x8a, 0x5a, 0x64, 0x6c, 0x3f, 0x08, 0x21, 0xda, 0xea, 0xdb, 0xe8, 0xd7, - 0xdf, 0xb2, 0x34, 0xe5, 0x72, 0xb7, 0xe0, 0x55, 0xc1, 0x7d, 0x9d, 0x5a, 0x34, 0xac, 0x65, 0xc6, - 0xee, 0xa7, 0x41, 0x46, 0x1b, 0xfe, 0x3a, 0xfa, 0x6e, 0x2d, 0x39, 0xe3, 0xb1, 0x58, 0xf0, 0x62, - 0x80, 0x6a, 0x69, 0x21, 0xf1, 0xc8, 0x5b, 0x10, 0xb4, 0xbd, 0x2b, 0xb2, 0x05, 0x2f, 0x24, 0x6e, - 0x5b, 0x0b, 0xc3, 0xb6, 0x2d, 0xa4, 0x6d, 0xff, 0xfd, 0x4a, 0xf4, 0xfd, 0x9d, 0x38, 0x16, 0xf3, - 0x4c, 0x1e, 0x89, 0x98, 0xa5, 0x47, 0x49, 0x76, 0x7d, 0xc2, 0x6f, 0x76, 0xaf, 0x2a, 0x3e, 0x9b, - 0xf2, 0xc1, 0x73, 0xff, 0xa9, 0xd6, 0xe8, 0xd0, 0xb0, 0x43, 0x17, 0x36, 0xbe, 0x3f, 0xbf, 0x9d, - 0x92, 0x2e, 0xcb, 0x3f, 0xaf, 0x44, 0x77, 0x60, 0x59, 0x46, 0x22, 0x5d, 0x70, 0x5b, 0x9a, 0x17, - 0x1d, 0x86, 0x7d, 0xdc, 0x94, 0xe7, 0x8b, 0xdb, 0xaa, 0xe9, 0x12, 0xa5, 0xd1, 0x87, 0x6e, 0x77, - 0x19, 0xf1, 0x52, 0x0d, 0xa7, 0xc7, 0x74, 0x8f, 0xd0, 0x88, 0xf1, 0xfc, 0xa4, 0x0f, 0xaa, 0xbd, - 0x25, 0xd1, 0x40, 0x7b, 0x4b, 0x45, 0x69, 0x9c, 0xad, 0xa3, 0x16, 0x1c, 0xc2, 0xf8, 0x7a, 0xdc, - 0x83, 0xd4, 0xae, 0xfe, 0x24, 0xfa, 0x8d, 0xb7, 0xa2, 0xb8, 0x2e, 0x73, 0x16, 0x73, 0x3d, 0x14, - 0x1e, 0xf9, 0xda, 0x8d, 0x14, 0x8e, 0x86, 0xd5, 0x2e, 0xcc, 0xe9, 0xb4, 0x8d, 0xf0, 0x75, 0xce, - 0x61, 0x0c, 0xb2, 0x8a, 0x95, 0x90, 0xea, 0xb4, 0x10, 0xd2, 0xb6, 0xaf, 0xa3, 0x81, 0xb5, 0x7d, - 0xf1, 0xa7, 0x3c, 0x96, 0x3b, 0x93, 0x09, 0x6c, 0x15, 0xab, 0xab, 0x88, 0xe1, 0xce, 0x64, 0x42, - 0xb5, 0x0a, 0x8e, 0x6a, 0x67, 0x37, 0xd1, 0x47, 0xc0, 0xd9, 0x51, 0x52, 0x2a, 0x87, 0x5b, 0x61, - 0x2b, 0x1a, 0x33, 0x4e, 0x87, 0x7d, 0x71, 0xed, 0xf8, 0x2f, 0x57, 0xa2, 0xef, 0x21, 0x9e, 0xcf, - 0xf8, 0x4c, 0x2c, 0xf8, 0xe0, 0x69, 0xb7, 0xb5, 0x9a, 0x34, 0xfe, 0x3f, 0xbb, 0x85, 0x06, 0xd2, - 0x4d, 0x46, 0x3c, 0xe5, 0xb1, 0x24, 0xbb, 0x49, 0x2d, 0xee, 0xec, 0x26, 0x06, 0x73, 0x46, 0x58, - 0x23, 0x3c, 0xe0, 0x72, 0x77, 0x5e, 0x14, 0x3c, 0x93, 0x64, 0x5b, 0x5a, 0xa4, 0xb3, 0x2d, 0x3d, - 0x14, 0xa9, 0xcf, 0x01, 0x97, 0x3b, 0x69, 0x4a, 0xd6, 0xa7, 0x16, 0x77, 0xd6, 0xc7, 0x60, 0xda, - 0x43, 0x1c, 0xfd, 0xa6, 0xf3, 0xc4, 0xe4, 0x61, 0x76, 0x29, 0x06, 0xf4, 0xb3, 0x50, 0x72, 0xe3, - 0x63, 0xad, 0x93, 0x43, 0xaa, 0xf1, 0xea, 0x5d, 0x2e, 0x0a, 0xba, 0x59, 0x6a, 0x71, 0x67, 0x35, - 0x0c, 0xa6, 0x3d, 0xfc, 0x71, 0xf4, 0x81, 0x8e, 0x92, 0xcd, 0x7c, 0xf6, 0x10, 0x0d, 0xa1, 0x70, - 0x42, 0x7b, 0xd4, 0x41, 0xd9, 0xe0, 0xa0, 0x65, 0x3a, 0xf8, 0x7c, 0x8a, 0xea, 0x81, 0xd0, 0xf3, - 0x30, 0x0c, 0xb5, 0x6c, 0xef, 0xf1, 0x94, 0x93, 0xb6, 0x6b, 0x61, 0x87, 0x6d, 0x03, 0x69, 0xdb, - 0x45, 0xf4, 0x3b, 0xe6, 0xb1, 0x54, 0xf3, 0xa8, 0x92, 0x57, 0x41, 0x7a, 0x83, 0xa8, 0xb7, 0x0b, - 0x19, 0x5f, 0x9b, 0xfd, 0xe0, 0x56, 0x7d, 0xf4, 0x08, 0xc4, 0xeb, 0x03, 0xc6, 0xdf, 0xc3, 0x30, - 0xa4, 0x6d, 0xff, 0xc3, 0x4a, 0xf4, 0x03, 0x2d, 0x7b, 0x95, 0xb1, 0x8b, 0x94, 0xab, 0x29, 0xf1, - 0x84, 0xcb, 0x1b, 0x51, 0x5c, 0x8f, 0x96, 0x59, 0x4c, 0x4c, 0xff, 0x38, 0xdc, 0x31, 0xfd, 0x93, - 0x4a, 0x4e, 0xc6, 0xa7, 0x2b, 0x2a, 0x45, 0x0e, 0x33, 0xbe, 0xa6, 0x06, 0x52, 0xe4, 0x54, 0xc6, - 0xe7, 0x23, 0x2d, 0xab, 0xc7, 0x55, 0xd8, 0xc4, 0xad, 0x1e, 0xbb, 0x71, 0xf2, 0x41, 0x08, 0xb1, - 0x61, 0xab, 0xe9, 0xc0, 0x22, 0xbb, 0x4c, 0xa6, 0xe7, 0xf9, 0xa4, 0xea, 0xc6, 0x8f, 0xf1, 0x1e, - 0xea, 0x20, 0x44, 0xd8, 0x22, 0x50, 0xed, 0xed, 0x9f, 0x6c, 0x62, 0xa4, 0x87, 0xd2, 0x7e, 0x21, - 0x66, 0x47, 0x7c, 0xca, 0xe2, 0xa5, 0x1e, 0xff, 0x9f, 0x87, 0x06, 0x1e, 0xa4, 0x4d, 0x21, 0x5e, - 0xdc, 0x52, 0x4b, 0x97, 0xe7, 0x3f, 0x57, 0xa2, 0x87, 0x4d, 0xf5, 0xaf, 0x58, 0x36, 0xe5, 0xba, - 0x3d, 0xeb, 0xd2, 0xef, 0x64, 0x93, 0x33, 0x5e, 0x4a, 0x56, 0xc8, 0xc1, 0x8f, 0xf0, 0x4a, 0x86, - 0x74, 0x4c, 0xd9, 0x7e, 0xfc, 0x2b, 0xe9, 0xda, 0x56, 0x1f, 0x55, 0x81, 0x4d, 0x87, 0x00, 0xbf, - 0xd5, 0x95, 0x04, 0x06, 0x80, 0x07, 0x21, 0xc4, 0xb6, 0xba, 0x12, 0x1c, 0x66, 0x8b, 0x44, 0xf2, - 0x03, 0x9e, 0xf1, 0xa2, 0xdd, 0xea, 0xb5, 0xaa, 0x8f, 0x10, 0xad, 0x4e, 0xa0, 0x36, 0xd8, 0x78, - 0xde, 0xcc, 0xe4, 0xb8, 0x11, 0x30, 0xd2, 0x9a, 0x1e, 0x37, 0xfb, 0xc1, 0x76, 0x75, 0xe7, 0xf8, - 0x3c, 0xe3, 0x0b, 0x71, 0x0d, 0x57, 0x77, 0xae, 0x89, 0x1a, 0x20, 0x56, 0x77, 0x28, 0x68, 0x67, - 0x30, 0xc7, 0xcf, 0x9b, 0x84, 0xdf, 0x80, 0x19, 0xcc, 0x55, 0xae, 0xc4, 0xc4, 0x0c, 0x86, 0x60, - 0xda, 0xc3, 0x49, 0xf4, 0x6b, 0x4a, 0xf8, 0x87, 0x22, 0xc9, 0x06, 0x77, 0x11, 0xa5, 0x4a, 0x60, - 0xac, 0xde, 0xa3, 0x01, 0x50, 0xe2, 0xea, 0xd7, 0x5d, 0x96, 0xc5, 0x3c, 0x45, 0x4b, 0x6c, 0xc5, - 0xc1, 0x12, 0x7b, 0x98, 0x4d, 0x1d, 0x94, 0xb0, 0x8a, 0x5f, 0xa3, 0x2b, 0x56, 0x24, 0xd9, 0x74, - 0x80, 0xe9, 0x3a, 0x72, 0x22, 0x75, 0xc0, 0x38, 0xd0, 0x85, 0xb5, 0xe2, 0x4e, 0x9e, 0x17, 0x55, - 0x58, 0xc4, 0xba, 0xb0, 0x8f, 0x04, 0xbb, 0x70, 0x0b, 0xc5, 0xbd, 0xed, 0xf1, 0x38, 0x4d, 0xb2, - 0xa0, 0x37, 0x8d, 0xf4, 0xf1, 0x66, 0x51, 0xd0, 0x79, 0x8f, 0x38, 0x5b, 0xf0, 0xa6, 0x66, 0xd8, - 0x93, 0x71, 0x81, 0x60, 0xe7, 0x05, 0xa0, 0x5d, 0xa7, 0x29, 0xf1, 0x31, 0xbb, 0xe6, 0xd5, 0x03, - 0xe6, 0xd5, 0xbc, 0x36, 0xc0, 0xf4, 0x3d, 0x82, 0x58, 0xa7, 0xe1, 0xa4, 0x76, 0x35, 0x8f, 0x3e, - 0x52, 0xf2, 0x53, 0x56, 0xc8, 0x24, 0x4e, 0x72, 0x96, 0x35, 0xf9, 0x3f, 0x36, 0xae, 0x5b, 0x94, - 0x71, 0xb9, 0xd5, 0x93, 0xd6, 0x6e, 0xff, 0x63, 0x25, 0xba, 0x0f, 0xfd, 0x9e, 0xf2, 0x62, 0x96, - 0xa8, 0x65, 0x64, 0x59, 0x07, 0xe1, 0xc1, 0x97, 0x61, 0xa3, 0x2d, 0x05, 0x53, 0x9a, 0x1f, 0xde, - 0x5e, 0xd1, 0x26, 0x43, 0x23, 0x9d, 0x5a, 0xbf, 0x2e, 0x26, 0xad, 0x6d, 0x96, 0x51, 0x93, 0x2f, - 0x2b, 0x21, 0x91, 0x0c, 0xb5, 0x20, 0x30, 0xc2, 0xcf, 0xb3, 0xb2, 0xb1, 0x8e, 0x8d, 0x70, 0x2b, - 0x0e, 0x8e, 0x70, 0x0f, 0xb3, 0x23, 0xfc, 0x74, 0x7e, 0x91, 0x26, 0xe5, 0x55, 0x92, 0x4d, 0x75, - 0xe6, 0xeb, 0xeb, 0x5a, 0x31, 0x4c, 0x7e, 0xd7, 0x3a, 0x39, 0xcc, 0x89, 0xee, 0x2c, 0xa4, 0x13, - 0xd0, 0x4d, 0xd6, 0x3a, 0x39, 0xbb, 0x3e, 0xb0, 0xd2, 0x6a, 0xe5, 0x08, 0xd6, 0x07, 0x8e, 0x6a, - 0x25, 0x25, 0xd6, 0x07, 0x6d, 0x4a, 0x9b, 0x17, 0xd1, 0x6f, 0xbb, 0x75, 0x28, 0x45, 0xba, 0xe0, - 0xe7, 0x45, 0x32, 0x78, 0x42, 0x97, 0xaf, 0x61, 0x8c, 0xab, 0x8d, 0x5e, 0xac, 0x0d, 0x54, 0x96, - 0x38, 0xe0, 0x72, 0x24, 0x99, 0x9c, 0x97, 0x20, 0x50, 0x39, 0x36, 0x0c, 0x42, 0x04, 0x2a, 0x02, - 0xd5, 0xde, 0xfe, 0x28, 0x8a, 0xea, 0x45, 0xb7, 0xda, 0x18, 0xf1, 0xe7, 0x1e, 0xbd, 0x1a, 0xf7, - 0x76, 0x45, 0xee, 0x07, 0x08, 0x9b, 0xf0, 0xd4, 0xbf, 0xab, 0xfd, 0x9e, 0x01, 0xaa, 0xa1, 0x44, - 0x44, 0xc2, 0x03, 0x10, 0x58, 0xd0, 0xd1, 0x95, 0xb8, 0xc1, 0x0b, 0x5a, 0x49, 0xc2, 0x05, 0xd5, - 0x84, 0xdd, 0x81, 0xd5, 0x05, 0xc5, 0x76, 0x60, 0x9b, 0x62, 0x84, 0x76, 0x60, 0x21, 0x63, 0xfb, - 0x8c, 0x6b, 0xf8, 0xa5, 0x10, 0xd7, 0x33, 0x56, 0x5c, 0x83, 0x3e, 0xe3, 0x29, 0x37, 0x0c, 0xd1, - 0x67, 0x28, 0xd6, 0xf6, 0x19, 0xd7, 0x61, 0x95, 0x2e, 0x9f, 0x17, 0x29, 0xe8, 0x33, 0x9e, 0x0d, - 0x8d, 0x10, 0x7d, 0x86, 0x40, 0x6d, 0x74, 0x72, 0xbd, 0x8d, 0x38, 0x5c, 0xf3, 0x7b, 0xea, 0x23, - 0x4e, 0xad, 0xf9, 0x11, 0x0c, 0x76, 0xa1, 0x83, 0x82, 0xe5, 0x57, 0x78, 0x17, 0x52, 0xa2, 0x70, - 0x17, 0x6a, 0x10, 0xd8, 0xde, 0x23, 0xce, 0x8a, 0xf8, 0x0a, 0x6f, 0xef, 0x5a, 0x16, 0x6e, 0x6f, - 0xc3, 0xc0, 0xf6, 0xae, 0x05, 0x6f, 0x13, 0x79, 0x75, 0xcc, 0x25, 0xc3, 0xdb, 0xdb, 0x67, 0xc2, - 0xed, 0xdd, 0x62, 0x6d, 0x3e, 0xee, 0x3a, 0x1c, 0xcd, 0x2f, 0xca, 0xb8, 0x48, 0x2e, 0xf8, 0x20, - 0x60, 0xc5, 0x40, 0x44, 0x3e, 0x4e, 0xc2, 0xda, 0xe7, 0xcf, 0x57, 0xa2, 0xbb, 0x4d, 0xb3, 0x8b, - 0xb2, 0xd4, 0x73, 0x9f, 0xef, 0xfe, 0x05, 0xde, 0xbe, 0x04, 0x4e, 0xec, 0x89, 0xf7, 0x50, 0x73, - 0x72, 0x03, 0xbc, 0x48, 0xe7, 0x59, 0x69, 0x0a, 0xf5, 0x65, 0x1f, 0xeb, 0x8e, 0x02, 0x91, 0x1b, - 0xf4, 0x52, 0xb4, 0x69, 0x99, 0x6e, 0x9f, 0x46, 0x76, 0x38, 0x29, 0x41, 0x5a, 0xd6, 0x3c, 0x6f, - 0x87, 0x20, 0xd2, 0x32, 0x9c, 0x84, 0x5d, 0xe1, 0xa0, 0x10, 0xf3, 0xbc, 0xec, 0xe8, 0x0a, 0x00, - 0x0a, 0x77, 0x85, 0x36, 0xac, 0x7d, 0xbe, 0x8b, 0x7e, 0xd7, 0xed, 0x7e, 0xee, 0xc3, 0xde, 0xa2, - 0xfb, 0x14, 0xf6, 0x88, 0x87, 0x7d, 0x71, 0x9b, 0x51, 0x34, 0x9e, 0xe5, 0x1e, 0x97, 0x2c, 0x49, - 0xcb, 0xc1, 0x2a, 0x6e, 0xa3, 0x91, 0x13, 0x19, 0x05, 0xc6, 0xc1, 0xf8, 0xb6, 0x37, 0xcf, 0xd3, - 0x24, 0x6e, 0xbf, 0x91, 0xd0, 0xba, 0x46, 0x1c, 0x8e, 0x6f, 0x2e, 0x06, 0xe3, 0x75, 0x95, 0xfa, - 0xa9, 0xff, 0x8c, 0x97, 0x39, 0xc7, 0xe3, 0xb5, 0x87, 0x84, 0xe3, 0x35, 0x44, 0x61, 0x7d, 0x46, - 0x5c, 0x1e, 0xb1, 0xa5, 0x98, 0x13, 0xf1, 0xda, 0x88, 0xc3, 0xf5, 0x71, 0x31, 0xbb, 0x36, 0x30, - 0x1e, 0x0e, 0x33, 0xc9, 0x8b, 0x8c, 0xa5, 0xfb, 0x29, 0x9b, 0x96, 0x03, 0x22, 0xc6, 0xf8, 0x14, - 0xb1, 0x36, 0xa0, 0x69, 0xe4, 0x31, 0x1e, 0x96, 0xfb, 0x6c, 0x21, 0x8a, 0x44, 0xd2, 0x8f, 0xd1, - 0x22, 0x9d, 0x8f, 0xd1, 0x43, 0x51, 0x6f, 0x3b, 0x45, 0x7c, 0x95, 0x2c, 0xf8, 0x24, 0xe0, 0xad, - 0x41, 0x7a, 0x78, 0x73, 0x50, 0xa4, 0xd1, 0x46, 0x62, 0x5e, 0xc4, 0x9c, 0x6c, 0xb4, 0x5a, 0xdc, - 0xd9, 0x68, 0x06, 0xd3, 0x1e, 0xfe, 0x66, 0x25, 0xfa, 0xbd, 0x5a, 0xea, 0xbe, 0x26, 0xd8, 0x63, - 0xe5, 0xd5, 0x85, 0x60, 0xc5, 0x64, 0xf0, 0x19, 0x66, 0x07, 0x45, 0x8d, 0xeb, 0x67, 0xb7, 0x51, - 0x81, 0x8f, 0xb5, 0xca, 0xbb, 0xed, 0x88, 0x43, 0x1f, 0xab, 0x87, 0x84, 0x1f, 0x2b, 0x44, 0x61, - 0x00, 0x51, 0xf2, 0x7a, 0x4b, 0x6e, 0x95, 0xd4, 0xf7, 0xf7, 0xe5, 0xd6, 0x3a, 0x39, 0x18, 0x1f, - 0x2b, 0xa1, 0xdf, 0x5b, 0xb6, 0x28, 0x1b, 0x78, 0x8f, 0x19, 0xf6, 0xc5, 0x49, 0xcf, 0x66, 0x54, - 0x84, 0x3d, 0xb7, 0x46, 0xc6, 0xb0, 0x2f, 0x4e, 0x78, 0x76, 0xc2, 0x5a, 0xc8, 0x33, 0x12, 0xda, - 0x86, 0x7d, 0x71, 0x98, 0x7d, 0x69, 0xa6, 0x99, 0x17, 0x9e, 0x04, 0xec, 0xc0, 0xb9, 0x61, 0xa3, - 0x17, 0xab, 0x1d, 0xfe, 0xdd, 0x4a, 0xf4, 0x7d, 0xeb, 0xf1, 0x58, 0x4c, 0x92, 0xcb, 0x65, 0x0d, - 0xbd, 0x61, 0xe9, 0x9c, 0x97, 0x83, 0x67, 0x94, 0xb5, 0x36, 0x6b, 0x4a, 0xf0, 0xfc, 0x56, 0x3a, - 0x70, 0xec, 0xec, 0xe4, 0x79, 0xba, 0x1c, 0xf3, 0x59, 0x9e, 0x92, 0x63, 0xc7, 0x43, 0xc2, 0x63, - 0x07, 0xa2, 0x30, 0x2b, 0x1f, 0x8b, 0x2a, 0xe7, 0x47, 0xb3, 0x72, 0x25, 0x0a, 0x67, 0xe5, 0x0d, - 0x02, 0x73, 0xa5, 0xb1, 0xd8, 0x15, 0x69, 0xca, 0x63, 0xd9, 0x3e, 0x6a, 0x60, 0x34, 0x2d, 0x11, - 0xce, 0x95, 0x00, 0x69, 0x77, 0xe5, 0x9a, 0x35, 0x24, 0x2b, 0xf8, 0xcb, 0xe5, 0x51, 0x92, 0x5d, - 0x0f, 0xf0, 0xb4, 0xc0, 0x02, 0xc4, 0xae, 0x1c, 0x0a, 0xc2, 0xb5, 0xea, 0x79, 0x36, 0x11, 0xf8, - 0x5a, 0xb5, 0x92, 0x84, 0xd7, 0xaa, 0x9a, 0x80, 0x26, 0xcf, 0x38, 0x65, 0xb2, 0x92, 0x84, 0x4d, - 0x6a, 0x02, 0x0b, 0x85, 0xfa, 0xdd, 0x0d, 0x19, 0x0a, 0xc1, 0xdb, 0x9a, 0xb5, 0x4e, 0x0e, 0xf6, - 0xd0, 0x66, 0xd1, 0xba, 0xcf, 0x65, 0x7c, 0x85, 0xf7, 0x50, 0x0f, 0x09, 0xf7, 0x50, 0x88, 0xc2, - 0x2a, 0x8d, 0x85, 0x59, 0x74, 0xaf, 0xe2, 0xfd, 0xa3, 0xb5, 0xe0, 0x5e, 0xeb, 0xe4, 0xe0, 0x32, - 0xf2, 0x70, 0xa6, 0x9e, 0x19, 0xda, 0xc9, 0x6b, 0x59, 0x78, 0x19, 0x69, 0x18, 0x58, 0xfa, 0x5a, - 0xa0, 0xf6, 0xb2, 0x56, 0x69, 0x45, 0x6f, 0x37, 0x6b, 0xad, 0x93, 0xd3, 0x4e, 0xfe, 0xcd, 0x2c, - 0xe3, 0x6a, 0xe9, 0x89, 0xa8, 0xc6, 0xc8, 0x1b, 0x96, 0x26, 0x13, 0x26, 0xf9, 0x58, 0x5c, 0xf3, - 0x0c, 0x5f, 0x31, 0xe9, 0xd2, 0xd6, 0xfc, 0xd0, 0x53, 0x08, 0xaf, 0x98, 0xc2, 0x8a, 0xb0, 0x9f, - 0xd4, 0xf4, 0x79, 0xc9, 0x77, 0x59, 0x49, 0x44, 0x32, 0x0f, 0x09, 0xf7, 0x13, 0x88, 0xc2, 0x7c, - 0xb5, 0x96, 0xbf, 0x7a, 0x97, 0xf3, 0x22, 0xe1, 0x59, 0xcc, 0xf1, 0x7c, 0x15, 0x52, 0xe1, 0x7c, - 0x15, 0xa1, 0xe1, 0x5a, 0x6d, 0x8f, 0x49, 0xfe, 0x72, 0x39, 0x4e, 0x66, 0xbc, 0x94, 0x6c, 0x96, - 0xe3, 0x6b, 0x35, 0x00, 0x85, 0xd7, 0x6a, 0x6d, 0xb8, 0xb5, 0x35, 0x64, 0x02, 0x62, 0xfb, 0x84, - 0x12, 0x24, 0x02, 0x27, 0x94, 0x08, 0x14, 0x3e, 0x58, 0x0b, 0xa0, 0x2f, 0x09, 0x5a, 0x56, 0x82, - 0x2f, 0x09, 0x68, 0xba, 0xb5, 0xe1, 0x66, 0x98, 0x51, 0x35, 0x34, 0x3b, 0x8a, 0x3e, 0x72, 0x87, - 0xe8, 0x46, 0x2f, 0x16, 0xdf, 0xe1, 0x3b, 0xe3, 0x29, 0x53, 0xd3, 0x56, 0x60, 0x1b, 0xad, 0x61, - 0xfa, 0xec, 0xf0, 0x39, 0xac, 0x76, 0xf8, 0x57, 0x2b, 0xd1, 0x27, 0x98, 0xc7, 0xd7, 0xb9, 0xf2, - 0xfb, 0xb4, 0xdb, 0x56, 0x4d, 0x12, 0x47, 0xb0, 0xc2, 0x1a, 0xba, 0x0c, 0x7f, 0x16, 0x7d, 0xdc, - 0x88, 0xec, 0x09, 0x2d, 0x5d, 0x00, 0x3f, 0x69, 0x33, 0xe5, 0x87, 0x9c, 0x71, 0xbf, 0xdd, 0x9b, - 0xb7, 0xeb, 0x21, 0xbf, 0x5c, 0x25, 0x58, 0x0f, 0x19, 0x1b, 0x5a, 0x4c, 0xac, 0x87, 0x10, 0xcc, - 0x8e, 0x4e, 0xb7, 0x7a, 0x6f, 0x13, 0x79, 0xa5, 0xf2, 0x2d, 0x30, 0x3a, 0xbd, 0xb2, 0x1a, 0x88, - 0x18, 0x9d, 0x24, 0x0c, 0x33, 0x92, 0x06, 0xac, 0xc6, 0x26, 0x16, 0xcb, 0x8d, 0x21, 0x77, 0x64, - 0xae, 0x77, 0x83, 0xb0, 0xbf, 0x36, 0x62, 0xbd, 0xf4, 0x79, 0x12, 0xb2, 0x00, 0x96, 0x3f, 0x1b, - 0xbd, 0x58, 0xed, 0xf0, 0x2f, 0xa2, 0xef, 0xb5, 0x2a, 0xb6, 0xcf, 0x99, 0x9c, 0x17, 0x7c, 0x32, - 0xd8, 0xee, 0x28, 0x77, 0x03, 0x1a, 0xd7, 0x4f, 0xfb, 0x2b, 0xb4, 0x72, 0xf4, 0x86, 0xab, 0xbb, - 0x95, 0x29, 0xc3, 0xb3, 0x90, 0x49, 0x9f, 0x0d, 0xe6, 0xe8, 0xb4, 0x4e, 0x6b, 0x99, 0xed, 0xf6, - 0xae, 0x9d, 0x05, 0x4b, 0x52, 0xf5, 0xb2, 0xf6, 0xb3, 0x90, 0x51, 0x0f, 0x0d, 0x2e, 0xb3, 0x49, - 0x95, 0x56, 0x64, 0x56, 0x63, 0xdc, 0x59, 0x9e, 0x6d, 0xd2, 0x91, 0x00, 0x59, 0x9d, 0x6d, 0xf5, - 0xa4, 0xb5, 0x5b, 0xd9, 0x4c, 0x79, 0xd5, 0xcf, 0x6e, 0x27, 0xc7, 0xbc, 0x6a, 0x55, 0xa4, 0xa7, - 0x6f, 0xf5, 0xa4, 0xb5, 0xd7, 0x3f, 0x8f, 0x3e, 0x6e, 0x7b, 0xd5, 0x13, 0xd1, 0x76, 0xa7, 0x29, - 0x30, 0x17, 0x3d, 0xed, 0xaf, 0x60, 0x97, 0x34, 0x5f, 0x25, 0xa5, 0x14, 0xc5, 0x72, 0x74, 0x25, - 0x6e, 0x9a, 0x2f, 0x1f, 0xfc, 0xd1, 0xaa, 0x81, 0xa1, 0x43, 0x10, 0x4b, 0x1a, 0x9c, 0x6c, 0xb9, - 0xb2, 0x5f, 0x48, 0x94, 0x84, 0x2b, 0x87, 0xe8, 0x70, 0xe5, 0x93, 0x36, 0x56, 0x35, 0xb5, 0xb2, - 0x9f, 0x73, 0xac, 0xe1, 0x45, 0x6d, 0x7f, 0xd2, 0xb1, 0xde, 0x0d, 0xda, 0x8c, 0x45, 0x8b, 0xf7, - 0x92, 0xcb, 0x4b, 0x53, 0x27, 0xbc, 0xa4, 0x2e, 0x42, 0x64, 0x2c, 0x04, 0x6a, 0x93, 0xee, 0xfd, - 0x24, 0xe5, 0x6a, 0x47, 0xff, 0xf5, 0xe5, 0x65, 0x2a, 0xd8, 0x04, 0x24, 0xdd, 0x95, 0x78, 0xe8, - 0xca, 0x89, 0xa4, 0x1b, 0xe3, 0xec, 0x59, 0x81, 0x4a, 0x7a, 0xc6, 0x63, 0x91, 0xc5, 0x49, 0x0a, - 0x0f, 0x82, 0x2a, 0x4d, 0x23, 0x24, 0xce, 0x0a, 0xb4, 0x20, 0x3b, 0x31, 0x56, 0xa2, 0x6a, 0xd8, - 0x37, 0xe5, 0x7f, 0xd4, 0x56, 0x74, 0xc4, 0xc4, 0xc4, 0x88, 0x60, 0x76, 0xed, 0x59, 0x09, 0xcf, - 0x73, 0x65, 0xfc, 0x5e, 0x5b, 0xab, 0x96, 0x10, 0x6b, 0x4f, 0x9f, 0xb0, 0x6b, 0xa8, 0xea, 0xf7, - 0x3d, 0x71, 0x93, 0x29, 0xa3, 0x0f, 0xda, 0x2a, 0x8d, 0x8c, 0x58, 0x43, 0x41, 0x46, 0x1b, 0xfe, - 0x49, 0xf4, 0xff, 0x95, 0xe1, 0x42, 0xe4, 0x83, 0x3b, 0x88, 0x42, 0xe1, 0x9c, 0xd9, 0xbc, 0x4b, - 0xca, 0xed, 0xd1, 0x02, 0xd3, 0x37, 0xce, 0x4b, 0x36, 0xe5, 0x83, 0x87, 0x44, 0x8b, 0x2b, 0x29, - 0x71, 0xb4, 0xa0, 0x4d, 0xf9, 0xbd, 0xe2, 0x44, 0x4c, 0xb4, 0x75, 0xa4, 0x86, 0x46, 0x18, 0xea, - 0x15, 0x2e, 0x64, 0x93, 0x99, 0x13, 0xb6, 0x48, 0xa6, 0x66, 0xc2, 0xa9, 0xe3, 0x56, 0x09, 0x92, - 0x19, 0xcb, 0x0c, 0x1d, 0x88, 0x48, 0x66, 0x48, 0x58, 0xfb, 0xfc, 0xd7, 0x95, 0xe8, 0x9e, 0x65, - 0x0e, 0x9a, 0xdd, 0xba, 0xc3, 0xec, 0x52, 0x54, 0xa9, 0xcf, 0x51, 0x92, 0x5d, 0x97, 0x83, 0x2f, - 0x28, 0x93, 0x38, 0x6f, 0x8a, 0xf2, 0xe5, 0xad, 0xf5, 0x6c, 0xd6, 0xda, 0x6c, 0x65, 0xd9, 0xf7, - 0xd9, 0xb5, 0x06, 0xc8, 0x5a, 0xcd, 0x8e, 0x17, 0xe4, 0x88, 0xac, 0x35, 0xc4, 0xdb, 0x26, 0x36, - 0xce, 0x53, 0x91, 0xc1, 0x26, 0xb6, 0x16, 0x2a, 0x21, 0xd1, 0xc4, 0x2d, 0xc8, 0xc6, 0xe3, 0x46, - 0x54, 0xef, 0xba, 0xec, 0xa4, 0x29, 0x88, 0xc7, 0x46, 0xd5, 0x00, 0x44, 0x3c, 0x46, 0x41, 0xed, - 0xe7, 0x2c, 0xfa, 0x4e, 0xf5, 0x48, 0x4f, 0x0b, 0xbe, 0x48, 0x38, 0x3c, 0x7a, 0xe1, 0x48, 0x88, - 0xf1, 0xef, 0x13, 0x76, 0x64, 0x9d, 0x67, 0x65, 0x9e, 0xb2, 0xf2, 0x4a, 0xbf, 0x8c, 0xf7, 0xeb, - 0xdc, 0x08, 0xe1, 0xeb, 0xf8, 0x47, 0x1d, 0x94, 0x0d, 0xea, 0x8d, 0xcc, 0x84, 0x98, 0x55, 0x5c, - 0xb5, 0x15, 0x66, 0xd6, 0x3a, 0x39, 0xbb, 0xe3, 0x7d, 0xc0, 0xd2, 0x94, 0x17, 0xcb, 0x46, 0x76, - 0xcc, 0xb2, 0xe4, 0x92, 0x97, 0x12, 0xec, 0x78, 0x6b, 0x6a, 0x08, 0x31, 0x62, 0xc7, 0x3b, 0x80, - 0xdb, 0x6c, 0x1e, 0x78, 0x3e, 0xcc, 0x26, 0xfc, 0x1d, 0xc8, 0xe6, 0xa1, 0x1d, 0xc5, 0x10, 0xd9, - 0x3c, 0xc5, 0xda, 0x9d, 0xdf, 0x97, 0xa9, 0x88, 0xaf, 0xf5, 0x14, 0xe0, 0x37, 0xb0, 0x92, 0xc0, - 0x39, 0xe0, 0x41, 0x08, 0xb1, 0x93, 0x80, 0x12, 0x9c, 0xf1, 0x3c, 0x65, 0x31, 0x3c, 0x7f, 0x53, - 0xeb, 0x68, 0x19, 0x31, 0x09, 0x40, 0x06, 0x14, 0x57, 0x9f, 0xeb, 0xc1, 0x8a, 0x0b, 0x8e, 0xf5, - 0x3c, 0x08, 0x21, 0x76, 0x1a, 0x54, 0x82, 0x51, 0x9e, 0x26, 0x12, 0x0c, 0x83, 0x5a, 0x43, 0x49, - 0x88, 0x61, 0xe0, 0x13, 0xc0, 0xe4, 0x31, 0x2f, 0xa6, 0x1c, 0x35, 0xa9, 0x24, 0x41, 0x93, 0x0d, - 0x61, 0x0f, 0x1b, 0xd7, 0x75, 0x17, 0xf9, 0x12, 0x1c, 0x36, 0xd6, 0xd5, 0x12, 0xf9, 0x92, 0x38, - 0x6c, 0xec, 0x01, 0xa0, 0x88, 0xa7, 0xac, 0x94, 0x78, 0x11, 0x95, 0x24, 0x58, 0xc4, 0x86, 0xb0, - 0x73, 0x74, 0x5d, 0xc4, 0xb9, 0x04, 0x73, 0xb4, 0x2e, 0x80, 0xf3, 0x06, 0xfa, 0x2e, 0x29, 0xb7, - 0x91, 0xa4, 0x6e, 0x15, 0x2e, 0xf7, 0x13, 0x9e, 0x4e, 0x4a, 0x10, 0x49, 0xf4, 0x73, 0x6f, 0xa4, - 0x44, 0x24, 0x69, 0x53, 0xa0, 0x2b, 0xe9, 0xfd, 0x71, 0xac, 0x76, 0x60, 0x6b, 0xfc, 0x41, 0x08, - 0xb1, 0xf1, 0xa9, 0x29, 0xf4, 0x2e, 0x2b, 0x8a, 0xa4, 0x9a, 0xfc, 0x57, 0xf1, 0x02, 0x35, 0x72, - 0x22, 0x3e, 0x61, 0x1c, 0x18, 0x5e, 0x4d, 0xe0, 0xc6, 0x0a, 0x06, 0x43, 0xf7, 0xa7, 0x41, 0xc6, - 0x66, 0x9c, 0x4a, 0xe2, 0xbc, 0x42, 0xc5, 0x9e, 0x26, 0xf2, 0x06, 0x75, 0xb5, 0x0b, 0x73, 0x3e, - 0x06, 0x32, 0x2e, 0x8e, 0xc5, 0x82, 0x8f, 0xc5, 0xab, 0x77, 0x49, 0x29, 0x93, 0x6c, 0xaa, 0x67, - 0xee, 0xe7, 0x84, 0x25, 0x0c, 0x26, 0x3e, 0x06, 0xea, 0x54, 0xb2, 0x09, 0x04, 0x28, 0xcb, 0x09, - 0xbf, 0x41, 0x13, 0x08, 0x68, 0xd1, 0x70, 0x44, 0x02, 0x11, 0xe2, 0xed, 0x3e, 0x8a, 0x71, 0xae, - 0xbf, 0x98, 0x1e, 0x8b, 0x26, 0x97, 0xa3, 0xac, 0x41, 0x90, 0x58, 0xca, 0x06, 0x15, 0xec, 0xfa, - 0xd2, 0xf8, 0xb7, 0x43, 0x6c, 0x9d, 0xb0, 0xd3, 0x1e, 0x66, 0x8f, 0x7b, 0x90, 0x88, 0x2b, 0x7b, - 0x0e, 0x80, 0x72, 0xd5, 0x3e, 0x06, 0xf0, 0xb8, 0x07, 0xe9, 0xec, 0xc9, 0xb8, 0xd5, 0x7a, 0xc9, - 0xe2, 0xeb, 0x69, 0x21, 0xe6, 0xd9, 0x64, 0x57, 0xa4, 0xa2, 0x00, 0x7b, 0x32, 0x5e, 0xa9, 0x01, - 0x4a, 0xec, 0xc9, 0x74, 0xa8, 0xd8, 0x0c, 0xce, 0x2d, 0xc5, 0x4e, 0x9a, 0x4c, 0xe1, 0x8a, 0xda, - 0x33, 0xa4, 0x00, 0x22, 0x83, 0x43, 0x41, 0xa4, 0x13, 0xd5, 0x2b, 0x6e, 0x99, 0xc4, 0x2c, 0xad, - 0xfd, 0x6d, 0xd3, 0x66, 0x3c, 0xb0, 0xb3, 0x13, 0x21, 0x0a, 0x48, 0x3d, 0xc7, 0xf3, 0x22, 0x3b, - 0xcc, 0xa4, 0x20, 0xeb, 0xd9, 0x00, 0x9d, 0xf5, 0x74, 0x40, 0x10, 0x56, 0xc7, 0xfc, 0x5d, 0x55, - 0x9a, 0xea, 0x1f, 0x2c, 0xac, 0x56, 0xbf, 0x0f, 0xb5, 0x3c, 0x14, 0x56, 0x01, 0x07, 0x2a, 0xa3, - 0x9d, 0xd4, 0x1d, 0x26, 0xa0, 0xed, 0x77, 0x93, 0xf5, 0x6e, 0x10, 0xf7, 0x33, 0x92, 0xcb, 0x94, - 0x87, 0xfc, 0x28, 0xa0, 0x8f, 0x9f, 0x06, 0xb4, 0xdb, 0x2d, 0x5e, 0x7d, 0xae, 0x78, 0x7c, 0xdd, - 0x3a, 0xd6, 0xe4, 0x17, 0xb4, 0x46, 0x88, 0xed, 0x16, 0x02, 0xc5, 0x9b, 0xe8, 0x30, 0x16, 0x59, - 0xa8, 0x89, 0x2a, 0x79, 0x9f, 0x26, 0xd2, 0x9c, 0x5d, 0xfc, 0x1a, 0xa9, 0xee, 0x99, 0x75, 0x33, - 0x6d, 0x10, 0x16, 0x5c, 0x88, 0x58, 0xfc, 0x92, 0xb0, 0xcd, 0xc9, 0xa1, 0xcf, 0xe3, 0xf6, 0x99, - 0xef, 0x96, 0x95, 0x63, 0xfa, 0xcc, 0x37, 0xc5, 0xd2, 0x95, 0xac, 0xfb, 0x48, 0x87, 0x15, 0xbf, - 0x9f, 0x6c, 0xf6, 0x83, 0xed, 0x92, 0xc7, 0xf3, 0xb9, 0x9b, 0x72, 0x56, 0xd4, 0x5e, 0xb7, 0x02, - 0x86, 0x2c, 0x46, 0x2c, 0x79, 0x02, 0x38, 0x08, 0x61, 0x9e, 0xe7, 0x5d, 0x91, 0x49, 0x9e, 0x49, - 0x2c, 0x84, 0xf9, 0xc6, 0x34, 0x18, 0x0a, 0x61, 0x94, 0x02, 0xe8, 0xb7, 0x6a, 0x3f, 0x88, 0xcb, - 0x13, 0x36, 0x43, 0x33, 0xb6, 0x7a, 0xaf, 0xa7, 0x96, 0x87, 0xfa, 0x2d, 0xe0, 0x9c, 0x97, 0x7c, - 0xae, 0x97, 0x31, 0x2b, 0xa6, 0x66, 0x77, 0x63, 0x32, 0x78, 0x4a, 0xdb, 0xf1, 0x49, 0xe2, 0x25, - 0x5f, 0x58, 0x03, 0x84, 0x9d, 0xc3, 0x19, 0x9b, 0x9a, 0x9a, 0x22, 0x35, 0x50, 0xf2, 0x56, 0x55, - 0xd7, 0xbb, 0x41, 0xe0, 0xe7, 0x4d, 0x32, 0xe1, 0x22, 0xe0, 0x47, 0xc9, 0xfb, 0xf8, 0x81, 0x20, - 0xc8, 0xde, 0xaa, 0x7a, 0xd7, 0x2b, 0xba, 0x9d, 0x6c, 0xa2, 0xd7, 0xb1, 0x43, 0xe2, 0xf1, 0x00, - 0x2e, 0x94, 0xbd, 0x11, 0x3c, 0x18, 0xa3, 0xcd, 0x06, 0x6d, 0x68, 0x8c, 0x9a, 0xfd, 0xd7, 0x3e, - 0x63, 0x14, 0x83, 0xb5, 0xcf, 0x9f, 0xe9, 0x31, 0xba, 0xc7, 0x24, 0xab, 0xf2, 0xf6, 0x37, 0x09, - 0xbf, 0xd1, 0x0b, 0x61, 0xa4, 0xbe, 0x0d, 0x35, 0x54, 0x9f, 0xac, 0x82, 0x55, 0xf1, 0x76, 0x6f, - 0x3e, 0xe0, 0x5b, 0xaf, 0x10, 0x3a, 0x7d, 0x83, 0xa5, 0xc2, 0x76, 0x6f, 0x3e, 0xe0, 0x5b, 0x7f, - 0x0b, 0xdf, 0xe9, 0x1b, 0x7c, 0x10, 0xbf, 0xdd, 0x9b, 0xd7, 0xbe, 0xff, 0xba, 0x19, 0xb8, 0xae, - 0xf3, 0x2a, 0x0f, 0x8b, 0x65, 0xb2, 0xe0, 0x58, 0x3a, 0xe9, 0xdb, 0x33, 0x68, 0x28, 0x9d, 0xa4, - 0x55, 0x9c, 0x0b, 0x94, 0xb0, 0x52, 0x9c, 0x8a, 0x32, 0x51, 0x2f, 0xe9, 0x9f, 0xf7, 0x30, 0xda, - 0xc0, 0xa1, 0x45, 0x53, 0x48, 0xc9, 0xbe, 0x6e, 0xf4, 0x50, 0x7b, 0x8a, 0x79, 0x33, 0x60, 0xaf, - 0x7d, 0x98, 0x79, 0xab, 0x27, 0x6d, 0x5f, 0xfc, 0x79, 0x8c, 0xfb, 0xc6, 0x31, 0xd4, 0xaa, 0xe8, - 0x4b, 0xc7, 0xa7, 0xfd, 0x15, 0xb4, 0xfb, 0xbf, 0x6d, 0xd6, 0x15, 0xd0, 0xbf, 0x1e, 0x04, 0xcf, - 0xfa, 0x58, 0x04, 0x03, 0xe1, 0xf9, 0xad, 0x74, 0x74, 0x41, 0xfe, 0xb1, 0x59, 0x40, 0x37, 0xa8, - 0xfa, 0x96, 0x43, 0x7d, 0x03, 0xaa, 0xc7, 0x44, 0xa8, 0x59, 0x2d, 0x0c, 0x47, 0xc6, 0x8b, 0x5b, - 0x6a, 0x39, 0xd7, 0x69, 0x79, 0xb0, 0xfe, 0xe6, 0xd0, 0x29, 0x4f, 0xc8, 0xb2, 0x43, 0xc3, 0x02, - 0x7d, 0x71, 0x5b, 0x35, 0x6a, 0xac, 0x38, 0xb0, 0xba, 0x9d, 0xe3, 0x79, 0x4f, 0xc3, 0xde, 0x7d, - 0x1d, 0x9f, 0xdf, 0x4e, 0x49, 0x97, 0xe5, 0xbf, 0x56, 0xa2, 0x47, 0x1e, 0x6b, 0xdf, 0x27, 0x80, - 0x5d, 0x8f, 0x1f, 0x07, 0xec, 0x53, 0x4a, 0xa6, 0x70, 0xbf, 0xff, 0xab, 0x29, 0xdb, 0xbb, 0xa7, - 0x3c, 0x95, 0xfd, 0x24, 0x95, 0xbc, 0x68, 0xdf, 0x3d, 0xe5, 0xdb, 0xad, 0xa9, 0x21, 0x7d, 0xf7, - 0x54, 0x00, 0x77, 0xee, 0x9e, 0x42, 0x3c, 0xa3, 0x77, 0x4f, 0xa1, 0xd6, 0x82, 0x77, 0x4f, 0x85, - 0x35, 0xa8, 0xf0, 0xde, 0x14, 0xa1, 0xde, 0xb7, 0xee, 0x65, 0xd1, 0xdf, 0xc6, 0x7e, 0x76, 0x1b, - 0x15, 0x62, 0x82, 0xab, 0x39, 0x75, 0xce, 0xad, 0xc7, 0x33, 0xf5, 0xce, 0xba, 0x6d, 0xf7, 0xe6, - 0xb5, 0xef, 0x9f, 0xea, 0xd5, 0x8d, 0x09, 0xe7, 0xa2, 0x50, 0xf7, 0x8e, 0x6d, 0x84, 0xc2, 0x73, - 0x65, 0xc1, 0x6d, 0xf9, 0xcd, 0x7e, 0x30, 0x51, 0xdd, 0x8a, 0xd0, 0x8d, 0x3e, 0xec, 0x32, 0x04, - 0x9a, 0x7c, 0xbb, 0x37, 0x4f, 0x4c, 0x23, 0xb5, 0xef, 0xba, 0xb5, 0x7b, 0x18, 0xf3, 0xdb, 0xfa, - 0x69, 0x7f, 0x05, 0xed, 0x7e, 0xa1, 0xd3, 0x46, 0xd7, 0xbd, 0x6a, 0xe7, 0xad, 0x2e, 0x53, 0x23, - 0xaf, 0x99, 0x87, 0x7d, 0xf1, 0x50, 0x02, 0xe1, 0x4e, 0xa1, 0x5d, 0x09, 0x04, 0x3a, 0x8d, 0x7e, - 0x7e, 0x3b, 0x25, 0x5d, 0x96, 0x7f, 0x59, 0x89, 0xee, 0x92, 0x65, 0xd1, 0xfd, 0xe0, 0x8b, 0xbe, - 0x96, 0x41, 0x7f, 0xf8, 0xf2, 0xd6, 0x7a, 0xba, 0x50, 0xff, 0xbe, 0x12, 0xdd, 0x0b, 0x14, 0xaa, - 0xee, 0x20, 0xb7, 0xb0, 0xee, 0x77, 0x94, 0x1f, 0xde, 0x5e, 0x91, 0x9a, 0xee, 0x5d, 0x7c, 0xd4, - 0xbe, 0x94, 0x29, 0x60, 0x7b, 0x44, 0x5f, 0xca, 0xd4, 0xad, 0x05, 0x37, 0x79, 0xd8, 0x45, 0xb3, - 0xe8, 0x42, 0x37, 0x79, 0xd4, 0x09, 0xb5, 0xe0, 0xe5, 0x12, 0x18, 0x87, 0x39, 0x79, 0xf5, 0x2e, - 0x67, 0xd9, 0x84, 0x76, 0x52, 0xcb, 0xbb, 0x9d, 0x18, 0x0e, 0x6e, 0x8e, 0x55, 0xd2, 0x33, 0xd1, - 0x2c, 0xa4, 0x1e, 0x53, 0xfa, 0x06, 0x09, 0x6e, 0x8e, 0xb5, 0x50, 0xc2, 0x9b, 0xce, 0x1a, 0x43, - 0xde, 0x40, 0xb2, 0xf8, 0xa4, 0x0f, 0x0a, 0x52, 0x74, 0xe3, 0xcd, 0xec, 0xb9, 0x6f, 0x86, 0xac, - 0xb4, 0xf6, 0xdd, 0xb7, 0x7a, 0xd2, 0x84, 0xdb, 0x11, 0x97, 0x5f, 0x71, 0x36, 0xe1, 0x45, 0xd0, - 0xad, 0xa1, 0x7a, 0xb9, 0x75, 0x69, 0xcc, 0xed, 0xae, 0x48, 0xe7, 0xb3, 0x4c, 0x37, 0x26, 0xe9, - 0xd6, 0xa5, 0xba, 0xdd, 0x02, 0x1a, 0x6e, 0x0b, 0x5a, 0xb7, 0x2a, 0xbd, 0x7c, 0x12, 0x36, 0xe3, - 0x65, 0x95, 0x1b, 0xbd, 0x58, 0xba, 0x9e, 0xba, 0x1b, 0x75, 0xd4, 0x13, 0xf4, 0xa4, 0xad, 0x9e, - 0x34, 0xdc, 0x9f, 0x73, 0xdc, 0x9a, 0xfe, 0xb4, 0xdd, 0x61, 0xab, 0xd5, 0xa5, 0x9e, 0xf6, 0x57, - 0x80, 0xbb, 0xa1, 0xba, 0x57, 0x1d, 0x25, 0xa5, 0xdc, 0x4f, 0xd2, 0x74, 0xb0, 0x11, 0xe8, 0x26, - 0x0d, 0x14, 0xdc, 0x0d, 0x45, 0x60, 0xa2, 0x27, 0x37, 0xbb, 0x87, 0xd9, 0xa0, 0xcb, 0x8e, 0xa2, - 0x7a, 0xf5, 0x64, 0x97, 0x06, 0x3b, 0x5a, 0xce, 0xa3, 0x36, 0xb5, 0x1d, 0x86, 0x1f, 0x5c, 0xab, - 0xc2, 0xdb, 0xbd, 0x79, 0xf0, 0xba, 0x5d, 0x51, 0x6a, 0x66, 0x79, 0x48, 0x99, 0xf0, 0x66, 0x92, - 0x47, 0x1d, 0x14, 0xd8, 0x15, 0xac, 0x87, 0xd1, 0xdb, 0x64, 0x32, 0xe5, 0x12, 0x7d, 0x53, 0xe4, - 0x02, 0xc1, 0x37, 0x45, 0x00, 0x04, 0x4d, 0x57, 0xff, 0x6e, 0xb6, 0x43, 0x0f, 0x27, 0x58, 0xd3, - 0x69, 0x65, 0x87, 0x0a, 0x35, 0x1d, 0x4a, 0x83, 0x68, 0x60, 0xdc, 0xea, 0xcf, 0xf1, 0x9f, 0x84, - 0xcc, 0x80, 0x6f, 0xf2, 0x37, 0x7a, 0xb1, 0x60, 0x46, 0xb1, 0x0e, 0x93, 0x59, 0x22, 0xb1, 0x19, - 0xc5, 0xb1, 0x51, 0x21, 0xa1, 0x19, 0xa5, 0x8d, 0x52, 0xd5, 0xab, 0x72, 0x84, 0xc3, 0x49, 0xb8, - 0x7a, 0x35, 0xd3, 0xaf, 0x7a, 0x86, 0x6d, 0xbd, 0xd8, 0xcc, 0x4c, 0x97, 0x91, 0x57, 0x7a, 0xb1, - 0x8c, 0xf4, 0x6d, 0xf5, 0x99, 0x26, 0x04, 0x43, 0x51, 0x87, 0x52, 0x80, 0x1b, 0xf6, 0x15, 0xd7, - 0xbc, 0x7b, 0xcd, 0x73, 0xce, 0x0a, 0x96, 0xc5, 0xe8, 0xe2, 0x54, 0x19, 0x6c, 0x91, 0xa1, 0xc5, - 0x29, 0xa9, 0x01, 0x5e, 0x9b, 0xfb, 0x1f, 0x58, 0x22, 0x43, 0xc1, 0x7c, 0xc9, 0xe8, 0x7f, 0x5f, - 0xf9, 0xb8, 0x07, 0x09, 0x5f, 0x9b, 0x37, 0x80, 0xd9, 0xf8, 0xae, 0x9d, 0x7e, 0x16, 0x30, 0xe5, - 0xa3, 0xa1, 0x85, 0x30, 0xad, 0x02, 0x3a, 0xb5, 0x49, 0x70, 0xb9, 0xfc, 0x09, 0x5f, 0x62, 0x9d, - 0xda, 0xe6, 0xa7, 0x0a, 0x09, 0x75, 0xea, 0x36, 0x0a, 0xf2, 0x4c, 0x77, 0x1d, 0xb4, 0x1a, 0xd0, - 0x77, 0x97, 0x3e, 0x6b, 0x9d, 0x1c, 0x18, 0x39, 0x7b, 0xc9, 0xc2, 0x7b, 0x4f, 0x80, 0x14, 0x74, - 0x2f, 0x59, 0xe0, 0xaf, 0x09, 0x36, 0x7a, 0xb1, 0xf0, 0x95, 0x3c, 0x93, 0xfc, 0x5d, 0xf3, 0xae, - 0x1c, 0x29, 0xae, 0x92, 0xb7, 0x5e, 0x96, 0xaf, 0x77, 0x83, 0xf6, 0x00, 0xec, 0x69, 0x21, 0x62, - 0x5e, 0x96, 0xfa, 0xa6, 0x4a, 0xff, 0x84, 0x91, 0x96, 0x0d, 0xc1, 0x3d, 0x95, 0x0f, 0xc3, 0x90, - 0x73, 0xbd, 0x5c, 0x2d, 0xb2, 0xb7, 0xde, 0xac, 0xa2, 0x9a, 0xed, 0x0b, 0x6f, 0xd6, 0x3a, 0x39, - 0x3b, 0xbc, 0xb4, 0xd4, 0xbd, 0xe6, 0x66, 0x1d, 0x55, 0xc7, 0x6e, 0xb8, 0x79, 0xdc, 0x83, 0xd4, - 0xae, 0xbe, 0x8a, 0xde, 0x3f, 0x12, 0xd3, 0x11, 0xcf, 0x26, 0x83, 0x1f, 0xf8, 0x47, 0x68, 0xc5, - 0x74, 0x58, 0xfd, 0x6c, 0x8c, 0xde, 0xa1, 0xc4, 0xf6, 0x10, 0xe0, 0x1e, 0xbf, 0x98, 0x4f, 0x47, - 0x92, 0x49, 0x70, 0x08, 0x50, 0xfd, 0x3e, 0xac, 0x04, 0xc4, 0x21, 0x40, 0x0f, 0x00, 0xf6, 0xc6, - 0x05, 0xe7, 0xa8, 0xbd, 0x4a, 0x10, 0xb4, 0xa7, 0x01, 0x9b, 0x45, 0x18, 0x7b, 0x55, 0xa2, 0x0e, - 0x0f, 0xed, 0x59, 0x1d, 0x25, 0x25, 0xb2, 0x88, 0x36, 0x65, 0x3b, 0x77, 0x5d, 0x7d, 0x75, 0xeb, - 0xc8, 0x7c, 0x36, 0x63, 0xc5, 0x12, 0x74, 0x6e, 0x5d, 0x4b, 0x07, 0x20, 0x3a, 0x37, 0x0a, 0xda, - 0x51, 0xdb, 0x3c, 0xe6, 0xf8, 0xfa, 0x40, 0x14, 0x62, 0x2e, 0x93, 0x8c, 0xc3, 0x9b, 0x27, 0xcc, - 0x03, 0x75, 0x19, 0x62, 0xd4, 0x52, 0xac, 0xcd, 0x72, 0x15, 0x51, 0x9f, 0x27, 0x54, 0xf7, 0x57, - 0x97, 0x52, 0x14, 0xf0, 0x7d, 0x62, 0x6d, 0x05, 0x42, 0x44, 0x96, 0x4b, 0xc2, 0xa0, 0xed, 0x4f, - 0x93, 0x6c, 0x8a, 0xb6, 0xfd, 0xa9, 0x7b, 0xfb, 0xeb, 0x3d, 0x1a, 0xb0, 0x03, 0xaa, 0x7e, 0x68, - 0xf5, 0x00, 0xd0, 0xdf, 0x72, 0xa2, 0x0f, 0xdd, 0x25, 0x88, 0x01, 0x85, 0x93, 0xc0, 0xd5, 0xeb, - 0x9c, 0x67, 0x7c, 0xd2, 0x9c, 0x9a, 0xc3, 0x5c, 0x79, 0x44, 0xd0, 0x15, 0x24, 0x6d, 0x2c, 0x52, - 0xf2, 0xb3, 0x79, 0x76, 0x5a, 0x88, 0xcb, 0x24, 0xe5, 0x05, 0x88, 0x45, 0xb5, 0xba, 0x23, 0x27, - 0x62, 0x11, 0xc6, 0xd9, 0xe3, 0x17, 0x4a, 0xea, 0x5d, 0xc2, 0x3e, 0x2e, 0x58, 0x0c, 0x8f, 0x5f, - 0xd4, 0x36, 0xda, 0x18, 0xb1, 0x33, 0x18, 0xc0, 0x9d, 0x44, 0xa7, 0x76, 0x9d, 0x2d, 0x55, 0xff, - 0xd0, 0xdf, 0x12, 0xaa, 0x3b, 0x51, 0x4b, 0x90, 0xe8, 0x68, 0x73, 0x18, 0x49, 0x24, 0x3a, 0x61, - 0x0d, 0x3b, 0x95, 0x28, 0xee, 0x44, 0x1f, 0x2b, 0x02, 0x53, 0x49, 0x6d, 0xa3, 0x11, 0x12, 0x53, - 0x49, 0x0b, 0x02, 0x01, 0xa9, 0x19, 0x06, 0x53, 0x34, 0x20, 0x19, 0x69, 0x30, 0x20, 0xb9, 0x94, - 0x0d, 0x14, 0x87, 0x59, 0x22, 0x13, 0x96, 0x8e, 0xb8, 0x3c, 0x65, 0x05, 0x9b, 0x71, 0xc9, 0x0b, - 0x18, 0x28, 0x34, 0x32, 0xf4, 0x18, 0x22, 0x50, 0x50, 0xac, 0x76, 0xf8, 0x07, 0xd1, 0x87, 0xd5, - 0xbc, 0xcf, 0x33, 0xfd, 0xe7, 0x56, 0x5e, 0xa9, 0xbf, 0xd3, 0x34, 0xf8, 0xc8, 0xd8, 0x18, 0xc9, - 0x82, 0xb3, 0x59, 0x63, 0xfb, 0x03, 0xf3, 0xbb, 0x02, 0x9f, 0xae, 0x54, 0xfd, 0xf9, 0x44, 0xc8, - 0xe4, 0xb2, 0x5a, 0x66, 0xeb, 0x2f, 0x88, 0x40, 0x7f, 0x76, 0xc5, 0xc3, 0xc0, 0x5d, 0x14, 0x18, - 0x67, 0xe3, 0xb4, 0x2b, 0x3d, 0xe3, 0x79, 0x0a, 0xe3, 0xb4, 0xa7, 0xad, 0x00, 0x22, 0x4e, 0xa3, - 0xa0, 0x1d, 0x9c, 0xae, 0x78, 0xcc, 0xc3, 0x95, 0x19, 0xf3, 0x7e, 0x95, 0x19, 0x7b, 0x1f, 0x65, - 0xa4, 0xd1, 0x87, 0xc7, 0x7c, 0x76, 0xc1, 0x8b, 0xf2, 0x2a, 0xc9, 0xa9, 0x7b, 0x5b, 0x2d, 0xd1, - 0x79, 0x6f, 0x2b, 0x81, 0xda, 0x99, 0xc0, 0x02, 0x87, 0xe5, 0x09, 0x9b, 0x71, 0x75, 0xb3, 0x06, - 0x98, 0x09, 0x1c, 0x23, 0x0e, 0x44, 0xcc, 0x04, 0x24, 0xec, 0x7c, 0xdf, 0x65, 0x99, 0x33, 0x3e, - 0xad, 0x7a, 0x58, 0x71, 0xca, 0x96, 0x33, 0x9e, 0x49, 0x6d, 0x12, 0xec, 0xc9, 0x3b, 0x26, 0x71, - 0x9e, 0xd8, 0x93, 0xef, 0xa3, 0xe7, 0x84, 0x26, 0xef, 0xc1, 0x9f, 0x8a, 0x42, 0xd6, 0x7f, 0x4c, - 0xe9, 0xbc, 0x48, 0x41, 0x68, 0xf2, 0x1f, 0xaa, 0x47, 0x12, 0xa1, 0x29, 0xac, 0xe1, 0xfc, 0x15, - 0x02, 0xaf, 0x0c, 0x6f, 0x78, 0x61, 0xfa, 0xc9, 0xab, 0x19, 0x4b, 0x52, 0xdd, 0x1b, 0x7e, 0x14, - 0xb0, 0x4d, 0xe8, 0x10, 0x7f, 0x85, 0xa0, 0xaf, 0xae, 0xf3, 0x77, 0x1b, 0xc2, 0x25, 0x04, 0xaf, - 0x08, 0x3a, 0xec, 0x13, 0xaf, 0x08, 0xba, 0xb5, 0xec, 0xca, 0xdd, 0xb2, 0x8a, 0x5b, 0x2a, 0x62, - 0x57, 0x4c, 0xe0, 0x7e, 0xa1, 0x63, 0x13, 0x80, 0xc4, 0xca, 0x3d, 0xa8, 0x60, 0x53, 0x03, 0x8b, - 0xed, 0x27, 0x19, 0x4b, 0x93, 0x9f, 0xc1, 0xb4, 0xde, 0xb1, 0xd3, 0x10, 0x44, 0x6a, 0x80, 0x93, - 0x98, 0xab, 0x03, 0x2e, 0xc7, 0x49, 0x15, 0xfa, 0xd7, 0x03, 0xcf, 0x4d, 0x11, 0xdd, 0xae, 0x1c, - 0xd2, 0xb9, 0xa3, 0x15, 0x3e, 0xd6, 0x9d, 0x3c, 0x1f, 0x55, 0xb3, 0xea, 0x19, 0x8f, 0x79, 0x92, - 0xcb, 0xc1, 0x8b, 0xf0, 0xb3, 0x02, 0x38, 0x71, 0xd0, 0xa2, 0x87, 0x9a, 0xf3, 0xfa, 0xbe, 0x8a, - 0x25, 0xa3, 0xfa, 0xaf, 0x0c, 0x9e, 0x97, 0xbc, 0xd0, 0x89, 0xc6, 0x01, 0x97, 0x60, 0x74, 0x3a, - 0xdc, 0xd0, 0x01, 0xab, 0x8a, 0x12, 0xa3, 0x33, 0xac, 0x61, 0x37, 0xfb, 0x1c, 0x4e, 0xdf, 0xb9, - 0xad, 0xce, 0x1b, 0x6e, 0x92, 0xc6, 0x1c, 0x8a, 0xd8, 0xec, 0xa3, 0x69, 0x9b, 0xad, 0xb5, 0xdd, - 0xee, 0x64, 0xcb, 0x43, 0x78, 0x64, 0x02, 0xb1, 0xa4, 0x30, 0x22, 0x5b, 0x0b, 0xe0, 0xce, 0x66, - 0x78, 0x21, 0xd8, 0x24, 0x66, 0xa5, 0x3c, 0x65, 0xcb, 0x54, 0xb0, 0x89, 0x9a, 0xd7, 0xe1, 0x66, - 0x78, 0xc3, 0x0c, 0x5d, 0x88, 0xda, 0x0c, 0xa7, 0x60, 0x37, 0x3b, 0x53, 0x7f, 0x3c, 0x51, 0x9f, - 0xe5, 0x84, 0xd9, 0x99, 0x2a, 0x2f, 0x3c, 0xc7, 0xf9, 0x30, 0x0c, 0xd9, 0x6f, 0xd0, 0x6a, 0x91, - 0x4a, 0x43, 0xee, 0x61, 0x3a, 0x5e, 0x02, 0x72, 0x3f, 0x40, 0xd8, 0x7b, 0x29, 0xea, 0xdf, 0x9b, - 0xbf, 0xff, 0x23, 0xf5, 0x4d, 0xd6, 0x9b, 0x98, 0xae, 0x0b, 0x0d, 0xdd, 0x0b, 0xee, 0xb6, 0x7a, - 0xd2, 0x36, 0xcd, 0xdc, 0xbd, 0x62, 0x72, 0x67, 0x32, 0x39, 0xe6, 0x25, 0xf2, 0x41, 0x79, 0x25, - 0x1c, 0x5a, 0x29, 0x91, 0x66, 0xb6, 0x29, 0xdb, 0xd1, 0x2b, 0xd9, 0xab, 0x49, 0x22, 0xb5, 0xac, - 0x39, 0x21, 0xbd, 0xd9, 0x36, 0xd0, 0xa6, 0x88, 0x5a, 0xd1, 0xb4, 0x8d, 0xe5, 0x15, 0x33, 0x16, - 0xd3, 0x69, 0xca, 0x35, 0x74, 0xc6, 0x59, 0x7d, 0x91, 0xdf, 0x76, 0xdb, 0x16, 0x0a, 0x12, 0xb1, - 0x3c, 0xa8, 0x60, 0xd3, 0xc8, 0x0a, 0xab, 0x5f, 0x49, 0x35, 0x0f, 0x76, 0xad, 0x6d, 0xc6, 0x03, - 0x88, 0x34, 0x12, 0x05, 0xed, 0x77, 0x6f, 0x95, 0xf8, 0x80, 0x37, 0x4f, 0x02, 0x5e, 0x41, 0xa4, - 0x94, 0x1d, 0x31, 0xf1, 0xdd, 0x1b, 0x82, 0xd9, 0x75, 0x02, 0xf0, 0xf0, 0x72, 0x79, 0x38, 0x81, - 0xeb, 0x04, 0xa8, 0xaf, 0x18, 0x62, 0x9d, 0x40, 0xb1, 0x7e, 0xd3, 0x99, 0x7d, 0xaf, 0x23, 0x56, - 0xda, 0xca, 0x21, 0x4d, 0x87, 0x82, 0xa1, 0xa6, 0xa3, 0x14, 0xfc, 0x47, 0xea, 0x6e, 0xad, 0x21, - 0x8f, 0x14, 0xdb, 0x57, 0x5b, 0xed, 0xc2, 0x6c, 0x5c, 0x32, 0xeb, 0x49, 0x75, 0x64, 0x09, 0xbf, - 0xc1, 0xbf, 0x16, 0x12, 0x71, 0xa9, 0x05, 0xd5, 0xb6, 0x5f, 0xde, 0xff, 0xef, 0x6f, 0xee, 0xac, - 0xfc, 0xe2, 0x9b, 0x3b, 0x2b, 0xff, 0xfb, 0xcd, 0x9d, 0x95, 0x9f, 0x7f, 0x7b, 0xe7, 0xbd, 0x5f, - 0x7c, 0x7b, 0xe7, 0xbd, 0xff, 0xf9, 0xf6, 0xce, 0x7b, 0x5f, 0xbf, 0xaf, 0xff, 0xa8, 0xee, 0xc5, - 0xff, 0x53, 0x7f, 0x1a, 0xf7, 0xf9, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0xb2, 0x7c, 0x4b, 0xdb, - 0x78, 0x77, 0x00, 0x00, + // 5389 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x9d, 0xdd, 0x6f, 0x24, 0x49, + 0x52, 0xc0, 0xcf, 0x2f, 0x2c, 0xd4, 0x71, 0x0b, 0xf4, 0xc2, 0xb2, 0xb7, 0xdc, 0xcd, 0xcc, 0xce, + 0xce, 0xd8, 0x33, 0x63, 0xbb, 0x3d, 0x3b, 0xb3, 0x1f, 0xa7, 0x3b, 0x24, 0xd4, 0x63, 0x8f, 0xbd, + 0xbe, 0xb3, 0x3d, 0xc6, 0xdd, 0x9e, 0x91, 0x56, 0x42, 0x22, 0xdd, 0x95, 0x6e, 0x17, 0xae, 0xae, + 0xac, 0xab, 0xca, 0x6e, 0x4f, 0x1f, 0x02, 0x81, 0x40, 0x20, 0x10, 0x88, 0x13, 0x5f, 0xaf, 0x48, + 0xfc, 0x35, 0x3c, 0xde, 0x23, 0x8f, 0x68, 0xf7, 0x8d, 0x07, 0xfe, 0x06, 0x54, 0x59, 0x59, 0xf9, + 0x11, 0x15, 0x91, 0x55, 0xbe, 0xa7, 0x19, 0x75, 0xfc, 0x22, 0x22, 0x3f, 0x23, 0x23, 0xb3, 0xb2, + 0xca, 0xd1, 0xdd, 0xfc, 0x62, 0x27, 0x2f, 0x84, 0x14, 0xe5, 0x4e, 0xc9, 0x8b, 0x65, 0x32, 0xe5, + 0xcd, 0xbf, 0x43, 0xf5, 0xf3, 0xe0, 0x1d, 0x96, 0xad, 0xe4, 0x2a, 0xe7, 0x1f, 0x7e, 0x60, 0xc9, + 0xa9, 0x98, 0xcf, 0x59, 0x16, 0x97, 0x35, 0xf2, 0xe1, 0xfb, 0x56, 0xc2, 0x97, 0x3c, 0x93, 0xfa, + 0xf7, 0x67, 0xff, 0xfb, 0x7f, 0x6b, 0xd1, 0xbb, 0xbb, 0x69, 0xc2, 0x33, 0xb9, 0xab, 0x35, 0x06, + 0x5f, 0x45, 0xdf, 0x19, 0xe5, 0xf9, 0x01, 0x97, 0xaf, 0x79, 0x51, 0x26, 0x22, 0x1b, 0x7c, 0x3c, + 0xd4, 0x0e, 0x86, 0x67, 0xf9, 0x74, 0x38, 0xca, 0xf3, 0xa1, 0x15, 0x0e, 0xcf, 0xf8, 0x4f, 0x17, + 0xbc, 0x94, 0x1f, 0x3e, 0x08, 0x43, 0x65, 0x2e, 0xb2, 0x92, 0x0f, 0x2e, 0xa3, 0xdf, 0x1a, 0xe5, + 0xf9, 0x98, 0xcb, 0x3d, 0x5e, 0x55, 0x60, 0x2c, 0x99, 0xe4, 0x83, 0x8d, 0x96, 0xaa, 0x0f, 0x18, + 0x1f, 0x8f, 0xba, 0x41, 0xed, 0x67, 0x12, 0x7d, 0xbb, 0xf2, 0x73, 0xb5, 0x90, 0xb1, 0xb8, 0xc9, + 0x06, 0x1f, 0xb5, 0x15, 0xb5, 0xc8, 0xd8, 0xbe, 0x1f, 0x42, 0xb4, 0xd5, 0x37, 0xd1, 0xaf, 0xbf, + 0x61, 0x69, 0xca, 0xe5, 0x6e, 0xc1, 0xab, 0x82, 0xfb, 0x3a, 0xb5, 0x68, 0x58, 0xcb, 0x8c, 0xdd, + 0x8f, 0x83, 0x8c, 0x36, 0xfc, 0x55, 0xf4, 0x9d, 0x5a, 0x72, 0xc6, 0xa7, 0x62, 0xc9, 0x8b, 0x01, + 0xaa, 0xa5, 0x85, 0x44, 0x93, 0xb7, 0x20, 0x68, 0x7b, 0x57, 0x64, 0x4b, 0x5e, 0x48, 0xdc, 0xb6, + 0x16, 0x86, 0x6d, 0x5b, 0x48, 0xdb, 0xfe, 0xbb, 0xb5, 0xe8, 0x7b, 0xa3, 0xe9, 0x54, 0x2c, 0x32, + 0x79, 0x24, 0xa6, 0x2c, 0x3d, 0x4a, 0xb2, 0xeb, 0x13, 0x7e, 0xb3, 0x7b, 0x55, 0xf1, 0xd9, 0x8c, + 0x0f, 0x9e, 0xfb, 0xad, 0x5a, 0xa3, 0x43, 0xc3, 0x0e, 0x5d, 0xd8, 0xf8, 0xfe, 0xf4, 0x76, 0x4a, + 0xba, 0x2c, 0xff, 0xb4, 0x16, 0xdd, 0x81, 0x65, 0x19, 0x8b, 0x74, 0xc9, 0x6d, 0x69, 0x3e, 0xeb, + 0x30, 0xec, 0xe3, 0xa6, 0x3c, 0x9f, 0xdf, 0x56, 0x4d, 0x97, 0x28, 0x8d, 0xde, 0x73, 0x87, 0xcb, + 0x98, 0x97, 0x6a, 0x3a, 0x3d, 0xa6, 0x47, 0x84, 0x46, 0x8c, 0xe7, 0x27, 0x7d, 0x50, 0xed, 0x2d, + 0x89, 0x06, 0xda, 0x5b, 0x2a, 0x4a, 0xe3, 0xec, 0x11, 0x6a, 0xc1, 0x21, 0x8c, 0xaf, 0xc7, 0x3d, + 0x48, 0xed, 0xea, 0x8f, 0xa3, 0xdf, 0x78, 0x23, 0x8a, 0xeb, 0x32, 0x67, 0x53, 0xae, 0xa7, 0xc2, + 0x43, 0x5f, 0xbb, 0x91, 0xc2, 0xd9, 0xb0, 0xde, 0x85, 0x39, 0x83, 0xb6, 0x11, 0xbe, 0xca, 0x39, + 0x8c, 0x41, 0x56, 0xb1, 0x12, 0x52, 0x83, 0x16, 0x42, 0xda, 0xf6, 0x75, 0x34, 0xb0, 0xb6, 0x2f, + 0xfe, 0x84, 0x4f, 0xe5, 0x28, 0x8e, 0x61, 0xaf, 0x58, 0x5d, 0x45, 0x0c, 0x47, 0x71, 0x4c, 0xf5, + 0x0a, 0x8e, 0x6a, 0x67, 0x37, 0xd1, 0xfb, 0xc0, 0xd9, 0x51, 0x52, 0x2a, 0x87, 0xdb, 0x61, 0x2b, + 0x1a, 0x33, 0x4e, 0x87, 0x7d, 0x71, 0xed, 0xf8, 0x2f, 0xd6, 0xa2, 0xef, 0x22, 0x9e, 0xcf, 0xf8, + 0x5c, 0x2c, 0xf9, 0xe0, 0x69, 0xb7, 0xb5, 0x9a, 0x34, 0xfe, 0x3f, 0xb9, 0x85, 0x06, 0x32, 0x4c, + 0xc6, 0x3c, 0xe5, 0x53, 0x49, 0x0e, 0x93, 0x5a, 0xdc, 0x39, 0x4c, 0x0c, 0xe6, 0xcc, 0xb0, 0x46, + 0x78, 0xc0, 0xe5, 0xee, 0xa2, 0x28, 0x78, 0x26, 0xc9, 0xbe, 0xb4, 0x48, 0x67, 0x5f, 0x7a, 0x28, + 0x52, 0x9f, 0x03, 0x2e, 0x47, 0x69, 0x4a, 0xd6, 0xa7, 0x16, 0x77, 0xd6, 0xc7, 0x60, 0xda, 0xc3, + 0x34, 0xfa, 0x4d, 0xa7, 0xc5, 0xe4, 0x61, 0x76, 0x29, 0x06, 0x74, 0x5b, 0x28, 0xb9, 0xf1, 0xb1, + 0xd1, 0xc9, 0x21, 0xd5, 0x78, 0xf9, 0x36, 0x17, 0x05, 0xdd, 0x2d, 0xb5, 0xb8, 0xb3, 0x1a, 0x06, + 0xd3, 0x1e, 0xfe, 0x28, 0x7a, 0x57, 0x47, 0xc9, 0x66, 0x3d, 0x7b, 0x80, 0x86, 0x50, 0xb8, 0xa0, + 0x3d, 0xec, 0xa0, 0x6c, 0x70, 0xd0, 0x32, 0x1d, 0x7c, 0x3e, 0x46, 0xf5, 0x40, 0xe8, 0x79, 0x10, + 0x86, 0x5a, 0xb6, 0xf7, 0x78, 0xca, 0x49, 0xdb, 0xb5, 0xb0, 0xc3, 0xb6, 0x81, 0xb4, 0xed, 0x22, + 0xfa, 0x1d, 0xd3, 0x2c, 0xd5, 0x3a, 0xaa, 0xe4, 0x55, 0x90, 0xde, 0x24, 0xea, 0xed, 0x42, 0xc6, + 0xd7, 0x56, 0x3f, 0xb8, 0x55, 0x1f, 0x3d, 0x03, 0xf1, 0xfa, 0x80, 0xf9, 0xf7, 0x20, 0x0c, 0x69, + 0xdb, 0x7f, 0xbf, 0x16, 0x7d, 0x5f, 0xcb, 0x5e, 0x66, 0xec, 0x22, 0xe5, 0x6a, 0x49, 0x3c, 0xe1, + 0xf2, 0x46, 0x14, 0xd7, 0xe3, 0x55, 0x36, 0x25, 0x96, 0x7f, 0x1c, 0xee, 0x58, 0xfe, 0x49, 0x25, + 0x5d, 0x98, 0x3f, 0x8d, 0x3e, 0x68, 0x06, 0xc5, 0x15, 0xcb, 0x66, 0xfc, 0xc7, 0xa5, 0xc8, 0x46, + 0x79, 0x32, 0x8a, 0xe3, 0x62, 0x30, 0xc4, 0xbb, 0x1e, 0x72, 0xa6, 0x04, 0x3b, 0xbd, 0x79, 0x27, + 0xdd, 0xd4, 0xad, 0x2c, 0x45, 0x0e, 0xd3, 0xcd, 0xa6, 0xf9, 0xa4, 0xc8, 0xa9, 0x74, 0xd3, 0x47, + 0x5a, 0x56, 0x8f, 0xab, 0x98, 0x8d, 0x5b, 0x3d, 0x76, 0x83, 0xf4, 0xfd, 0x10, 0x62, 0x63, 0x66, + 0xd3, 0x50, 0x22, 0xbb, 0x4c, 0x66, 0xe7, 0x79, 0x5c, 0xcd, 0xa1, 0xc7, 0x78, 0x9d, 0x1d, 0x84, + 0x88, 0x99, 0x04, 0xaa, 0xbd, 0xfd, 0xa3, 0xcd, 0xca, 0xf4, 0x3c, 0xde, 0x2f, 0xc4, 0xfc, 0x88, + 0xcf, 0xd8, 0x74, 0xa5, 0x83, 0xcf, 0xa7, 0xa1, 0x59, 0x0f, 0x69, 0x53, 0x88, 0xcf, 0x6e, 0xa9, + 0xa5, 0xcb, 0xf3, 0x1f, 0x6b, 0xd1, 0x03, 0x6f, 0x9c, 0xe8, 0xc1, 0x54, 0x97, 0x7e, 0x94, 0xc5, + 0x67, 0xbc, 0x94, 0xac, 0x90, 0x83, 0x1f, 0x06, 0xc6, 0x00, 0xa1, 0x63, 0xca, 0xf6, 0xa3, 0x5f, + 0x4a, 0xd7, 0xf6, 0xfa, 0xb8, 0x8a, 0xaa, 0x3a, 0xfe, 0xf8, 0xbd, 0xae, 0x24, 0x30, 0xfa, 0xdc, + 0x0f, 0x21, 0xb6, 0xd7, 0x95, 0xe0, 0x30, 0x5b, 0x26, 0x92, 0x1f, 0xf0, 0x8c, 0x17, 0xed, 0x5e, + 0xaf, 0x55, 0x7d, 0x84, 0xe8, 0x75, 0x02, 0xb5, 0x91, 0xce, 0xf3, 0x66, 0x56, 0xe6, 0xcd, 0x80, + 0x91, 0xd6, 0xda, 0xbc, 0xd5, 0x0f, 0xb6, 0x5b, 0x4b, 0xc7, 0xe7, 0x19, 0x5f, 0x8a, 0x6b, 0xb8, + 0xb5, 0x74, 0x4d, 0xd4, 0x00, 0xb1, 0xb5, 0x44, 0x41, 0xbb, 0x7c, 0x3a, 0x7e, 0x5e, 0x27, 0xfc, + 0x06, 0x2c, 0x9f, 0xae, 0x72, 0x25, 0x26, 0x96, 0x4f, 0x04, 0xd3, 0x1e, 0x4e, 0xa2, 0x5f, 0x53, + 0xc2, 0x1f, 0x8b, 0x24, 0x1b, 0xdc, 0x45, 0x94, 0x2a, 0x81, 0xb1, 0x7a, 0x8f, 0x06, 0x40, 0x89, + 0xab, 0x5f, 0x77, 0x59, 0x36, 0xe5, 0x29, 0x5a, 0x62, 0x2b, 0x0e, 0x96, 0xd8, 0xc3, 0x6c, 0xde, + 0xa2, 0x84, 0x55, 0xfc, 0x1a, 0x5f, 0xb1, 0x22, 0xc9, 0x66, 0x03, 0x4c, 0xd7, 0x91, 0x13, 0x79, + 0x0b, 0xc6, 0x81, 0x21, 0xac, 0x15, 0x47, 0x79, 0x5e, 0x54, 0x61, 0x11, 0x1b, 0xc2, 0x3e, 0x12, + 0x1c, 0xc2, 0x2d, 0x14, 0xf7, 0xb6, 0xc7, 0xa7, 0x69, 0x92, 0x05, 0xbd, 0x69, 0xa4, 0x8f, 0x37, + 0x8b, 0x82, 0xc1, 0x7b, 0xc4, 0xd9, 0x92, 0x37, 0x35, 0xc3, 0x5a, 0xc6, 0x05, 0x82, 0x83, 0x17, + 0x80, 0x76, 0x93, 0xa8, 0xc4, 0xc7, 0xec, 0x9a, 0x57, 0x0d, 0xcc, 0xab, 0x45, 0x75, 0x80, 0xe9, + 0x7b, 0x04, 0xb1, 0x49, 0xc4, 0x49, 0xed, 0x6a, 0x11, 0xbd, 0xaf, 0xe4, 0xa7, 0xac, 0x90, 0xc9, + 0x34, 0xc9, 0x59, 0xd6, 0x6c, 0x3e, 0xb0, 0x79, 0xdd, 0xa2, 0x8c, 0xcb, 0xed, 0x9e, 0xb4, 0x76, + 0xfb, 0xef, 0x6b, 0xd1, 0x47, 0xd0, 0xef, 0x29, 0x2f, 0xe6, 0x89, 0xda, 0xc3, 0x96, 0x75, 0x10, + 0x1e, 0x7c, 0x11, 0x36, 0xda, 0x52, 0x30, 0xa5, 0xf9, 0xc1, 0xed, 0x15, 0x6d, 0x26, 0x36, 0xd6, + 0x79, 0xfd, 0xab, 0x22, 0x6e, 0x9d, 0xf1, 0x8c, 0x9b, 0x64, 0x5d, 0x09, 0x89, 0x4c, 0xac, 0x05, + 0x81, 0x19, 0x7e, 0x9e, 0x95, 0x8d, 0x75, 0x6c, 0x86, 0x5b, 0x71, 0x70, 0x86, 0x7b, 0x98, 0x9d, + 0xe1, 0xa7, 0x8b, 0x8b, 0x34, 0x29, 0xaf, 0x92, 0x6c, 0xa6, 0xd3, 0x6e, 0x5f, 0xd7, 0x8a, 0x61, + 0xe6, 0xbd, 0xd1, 0xc9, 0x61, 0x4e, 0xf4, 0x60, 0x21, 0x9d, 0x80, 0x61, 0xb2, 0xd1, 0xc9, 0xd9, + 0xcd, 0x89, 0x95, 0x56, 0xdb, 0x56, 0xb0, 0x39, 0x71, 0x54, 0x2b, 0x29, 0xb1, 0x39, 0x69, 0x53, + 0xda, 0xbc, 0x88, 0x7e, 0xdb, 0xad, 0x43, 0x29, 0xd2, 0x25, 0x3f, 0x2f, 0x92, 0xc1, 0x13, 0xba, + 0x7c, 0x0d, 0x63, 0x5c, 0x6d, 0xf6, 0x62, 0x6d, 0xa0, 0xb2, 0xc4, 0x01, 0x97, 0x63, 0xc9, 0xe4, + 0xa2, 0x04, 0x81, 0xca, 0xb1, 0x61, 0x10, 0x22, 0x50, 0x11, 0xa8, 0xf6, 0xf6, 0x87, 0x51, 0x54, + 0xef, 0xf8, 0xd5, 0xa9, 0x8c, 0xbf, 0xf6, 0xe8, 0xa3, 0x00, 0xef, 0x48, 0xe6, 0xa3, 0x00, 0x61, + 0x13, 0x9e, 0xfa, 0x77, 0x75, 0xd8, 0x34, 0x40, 0x35, 0x94, 0x88, 0x48, 0x78, 0x00, 0x02, 0x0b, + 0x3a, 0xbe, 0x12, 0x37, 0x78, 0x41, 0x2b, 0x49, 0xb8, 0xa0, 0x9a, 0xb0, 0xc7, 0xbf, 0xba, 0xa0, + 0xd8, 0xf1, 0x6f, 0x53, 0x8c, 0xd0, 0xf1, 0x2f, 0x64, 0xec, 0x98, 0x71, 0x0d, 0xbf, 0x10, 0xe2, + 0x7a, 0xce, 0x8a, 0x6b, 0x30, 0x66, 0x3c, 0xe5, 0x86, 0x21, 0xc6, 0x0c, 0xc5, 0xda, 0x31, 0xe3, + 0x3a, 0xac, 0xd2, 0xe5, 0xf3, 0x22, 0x05, 0x63, 0xc6, 0xb3, 0xa1, 0x11, 0x62, 0xcc, 0x10, 0xa8, + 0x8d, 0x4e, 0xae, 0xb7, 0x31, 0x87, 0x07, 0x0e, 0x9e, 0xfa, 0x98, 0x53, 0x07, 0x0e, 0x08, 0x06, + 0x87, 0xd0, 0x41, 0xc1, 0xf2, 0x2b, 0x7c, 0x08, 0x29, 0x51, 0x78, 0x08, 0x35, 0x08, 0xec, 0xef, + 0x31, 0x67, 0xc5, 0xf4, 0x0a, 0xef, 0xef, 0x5a, 0x16, 0xee, 0x6f, 0xc3, 0xc0, 0xfe, 0xae, 0x05, + 0x6f, 0x12, 0x79, 0x75, 0xcc, 0x25, 0xc3, 0xfb, 0xdb, 0x67, 0xc2, 0xfd, 0xdd, 0x62, 0x6d, 0x3e, + 0xee, 0x3a, 0x1c, 0x2f, 0x2e, 0xca, 0x69, 0x91, 0x5c, 0xf0, 0x41, 0xc0, 0x8a, 0x81, 0x88, 0x7c, + 0x9c, 0x84, 0xb5, 0xcf, 0x9f, 0xaf, 0x45, 0x77, 0x9b, 0x6e, 0x17, 0x65, 0xa9, 0xd7, 0x3e, 0xdf, + 0xfd, 0x67, 0x78, 0xff, 0x12, 0x38, 0x71, 0x20, 0xdf, 0x43, 0xcd, 0xc9, 0x0d, 0xf0, 0x22, 0x9d, + 0x67, 0xa5, 0x29, 0xd4, 0x17, 0x7d, 0xac, 0x3b, 0x0a, 0x44, 0x6e, 0xd0, 0x4b, 0xd1, 0xa6, 0x65, + 0xba, 0x7f, 0x1a, 0xd9, 0x61, 0x5c, 0x82, 0xb4, 0xac, 0x69, 0x6f, 0x87, 0x20, 0xd2, 0x32, 0x9c, + 0x84, 0x43, 0xe1, 0xa0, 0x10, 0x8b, 0xbc, 0xec, 0x18, 0x0a, 0x00, 0x0a, 0x0f, 0x85, 0x36, 0xac, + 0x7d, 0xbe, 0x8d, 0x7e, 0xd7, 0x1d, 0x7e, 0x6e, 0x63, 0x6f, 0xd3, 0x63, 0x0a, 0x6b, 0xe2, 0x61, + 0x5f, 0xdc, 0x66, 0x14, 0x8d, 0x67, 0xb9, 0xc7, 0x25, 0x4b, 0xd2, 0x72, 0xb0, 0x8e, 0xdb, 0x68, + 0xe4, 0x44, 0x46, 0x81, 0x71, 0x30, 0xbe, 0xed, 0x2d, 0xf2, 0x34, 0x99, 0xb6, 0x1f, 0x87, 0x68, + 0x5d, 0x23, 0x0e, 0xc7, 0x37, 0x17, 0x83, 0xf1, 0xba, 0x4a, 0xfd, 0xd4, 0x7f, 0x26, 0xab, 0x9c, + 0xe3, 0xf1, 0xda, 0x43, 0xc2, 0xf1, 0x1a, 0xa2, 0xb0, 0x3e, 0x63, 0x2e, 0x8f, 0xd8, 0x4a, 0x2c, + 0x88, 0x78, 0x6d, 0xc4, 0xe1, 0xfa, 0xb8, 0x98, 0xdd, 0x1b, 0x18, 0x0f, 0x87, 0x99, 0xe4, 0x45, + 0xc6, 0xd2, 0xfd, 0x94, 0xcd, 0xca, 0x01, 0x11, 0x63, 0x7c, 0x8a, 0xd8, 0x1b, 0xd0, 0x34, 0xd2, + 0x8c, 0x87, 0xe5, 0x3e, 0x5b, 0x8a, 0x22, 0x91, 0x74, 0x33, 0x5a, 0xa4, 0xb3, 0x19, 0x3d, 0x14, + 0xf5, 0x36, 0x2a, 0xa6, 0x57, 0xc9, 0x92, 0xc7, 0x01, 0x6f, 0x0d, 0xd2, 0xc3, 0x9b, 0x83, 0x22, + 0x9d, 0x36, 0x16, 0x8b, 0x62, 0xca, 0xc9, 0x4e, 0xab, 0xc5, 0x9d, 0x9d, 0x66, 0x30, 0xed, 0xe1, + 0xaf, 0xd7, 0xa2, 0xdf, 0xab, 0xa5, 0xee, 0x33, 0x8a, 0x3d, 0x56, 0x5e, 0x5d, 0x08, 0x56, 0xc4, + 0x83, 0x4f, 0x30, 0x3b, 0x28, 0x6a, 0x5c, 0x3f, 0xbb, 0x8d, 0x0a, 0x6c, 0xd6, 0x2a, 0xef, 0xb6, + 0x33, 0x0e, 0x6d, 0x56, 0x0f, 0x09, 0x37, 0x2b, 0x44, 0x61, 0x00, 0x51, 0xf2, 0xfa, 0x48, 0x6e, + 0x9d, 0xd4, 0xf7, 0xcf, 0xe5, 0x36, 0x3a, 0x39, 0x18, 0x1f, 0x2b, 0xa1, 0x3f, 0x5a, 0xb6, 0x29, + 0x1b, 0xf8, 0x88, 0x19, 0xf6, 0xc5, 0x49, 0xcf, 0x66, 0x56, 0x84, 0x3d, 0xb7, 0x66, 0xc6, 0xb0, + 0x2f, 0x4e, 0x78, 0x76, 0xc2, 0x5a, 0xc8, 0x33, 0x12, 0xda, 0x86, 0x7d, 0x71, 0x98, 0x7d, 0x69, + 0xa6, 0x59, 0x17, 0x9e, 0x04, 0xec, 0xc0, 0xb5, 0x61, 0xb3, 0x17, 0xab, 0x1d, 0xfe, 0xed, 0x5a, + 0xf4, 0x3d, 0xeb, 0xf1, 0x58, 0xc4, 0xc9, 0xe5, 0xaa, 0x86, 0x5e, 0xb3, 0x74, 0xc1, 0xcb, 0xc1, + 0x33, 0xca, 0x5a, 0x9b, 0x35, 0x25, 0x78, 0x7e, 0x2b, 0x1d, 0x38, 0x77, 0x46, 0x79, 0x9e, 0xae, + 0x26, 0x7c, 0x9e, 0xa7, 0xe4, 0xdc, 0xf1, 0x90, 0xf0, 0xdc, 0x81, 0x28, 0xcc, 0xca, 0x27, 0xa2, + 0xca, 0xf9, 0xd1, 0xac, 0x5c, 0x89, 0xc2, 0x59, 0x79, 0x83, 0xc0, 0x5c, 0x69, 0x22, 0x76, 0x45, + 0x9a, 0xf2, 0xa9, 0x6c, 0xdf, 0x73, 0x30, 0x9a, 0x96, 0x08, 0xe7, 0x4a, 0x80, 0xb4, 0xa7, 0x72, + 0xcd, 0x1e, 0x92, 0x15, 0xfc, 0xc5, 0xea, 0x28, 0xc9, 0xae, 0x07, 0x78, 0x5a, 0x60, 0x01, 0xe2, + 0x54, 0x0e, 0x05, 0xe1, 0x5e, 0xf5, 0x3c, 0x8b, 0x05, 0xbe, 0x57, 0xad, 0x24, 0xe1, 0xbd, 0xaa, + 0x26, 0xa0, 0xc9, 0x33, 0x4e, 0x99, 0xac, 0x24, 0x61, 0x93, 0x9a, 0xc0, 0x42, 0xa1, 0x7e, 0x76, + 0x43, 0x86, 0x42, 0xf0, 0xb4, 0x66, 0xa3, 0x93, 0x83, 0x23, 0xb4, 0xd9, 0xb4, 0xee, 0x73, 0x39, + 0xbd, 0xc2, 0x47, 0xa8, 0x87, 0x84, 0x47, 0x28, 0x44, 0x61, 0x95, 0x26, 0xc2, 0x6c, 0xba, 0xd7, + 0xf1, 0xf1, 0xd1, 0xda, 0x70, 0x6f, 0x74, 0x72, 0x70, 0x1b, 0x79, 0x38, 0x57, 0x6d, 0x86, 0x0e, + 0xf2, 0x5a, 0x16, 0xde, 0x46, 0x1a, 0x06, 0x96, 0xbe, 0x16, 0xa8, 0xb3, 0xac, 0x75, 0x5a, 0xd1, + 0x3b, 0xcd, 0xda, 0xe8, 0xe4, 0xb4, 0x93, 0x7f, 0x35, 0xdb, 0xb8, 0x5a, 0x7a, 0x22, 0xaa, 0x39, + 0xf2, 0x9a, 0xa5, 0x49, 0xcc, 0x24, 0x9f, 0x88, 0x6b, 0x9e, 0xe1, 0x3b, 0x26, 0x5d, 0xda, 0x9a, + 0x1f, 0x7a, 0x0a, 0xe1, 0x1d, 0x53, 0x58, 0x11, 0x8e, 0x93, 0x9a, 0x3e, 0x2f, 0xf9, 0x2e, 0x2b, + 0x89, 0x48, 0xe6, 0x21, 0xe1, 0x71, 0x02, 0x51, 0x98, 0xaf, 0xd6, 0xf2, 0x97, 0x6f, 0x73, 0x5e, + 0x24, 0x3c, 0x9b, 0x72, 0x3c, 0x5f, 0x85, 0x54, 0x38, 0x5f, 0x45, 0x68, 0xb8, 0x57, 0xdb, 0x63, + 0x92, 0xbf, 0x58, 0x4d, 0x92, 0x39, 0x2f, 0x25, 0x9b, 0xe7, 0xf8, 0x5e, 0x0d, 0x40, 0xe1, 0xbd, + 0x5a, 0x1b, 0x6e, 0x1d, 0x0d, 0x99, 0x80, 0xd8, 0xbe, 0x1e, 0x05, 0x89, 0xc0, 0xf5, 0x28, 0x02, + 0x85, 0x0d, 0x6b, 0x01, 0xf4, 0x21, 0x41, 0xcb, 0x4a, 0xf0, 0x21, 0x01, 0x4d, 0xb7, 0x0e, 0xdc, + 0x0c, 0x33, 0xae, 0xa6, 0x66, 0x47, 0xd1, 0xc7, 0xee, 0x14, 0xdd, 0xec, 0xc5, 0xe2, 0x27, 0x7c, + 0x67, 0x3c, 0x65, 0x6a, 0xd9, 0x0a, 0x1c, 0xa3, 0x35, 0x4c, 0x9f, 0x13, 0x3e, 0x87, 0xd5, 0x0e, + 0xff, 0x72, 0x2d, 0xfa, 0x10, 0xf3, 0xf8, 0x2a, 0x57, 0x7e, 0x9f, 0x76, 0xdb, 0xaa, 0x49, 0xe2, + 0xfe, 0x57, 0x58, 0xc3, 0x5e, 0xc9, 0x68, 0x44, 0xf6, 0x7a, 0x98, 0x2e, 0x80, 0x9f, 0xb4, 0x99, + 0xf2, 0x43, 0x8e, 0xb8, 0x92, 0x11, 0xe2, 0xed, 0x7e, 0xc8, 0x2f, 0x57, 0x09, 0xf6, 0x43, 0xc6, + 0x86, 0x16, 0x13, 0xfb, 0x21, 0x04, 0xb3, 0xb3, 0xd3, 0xad, 0xde, 0x9b, 0x44, 0x5e, 0xa9, 0x7c, + 0x0b, 0xcc, 0x4e, 0xaf, 0xac, 0x06, 0x22, 0x66, 0x27, 0x09, 0xc3, 0x8c, 0xa4, 0x01, 0xab, 0xb9, + 0x89, 0xc5, 0x72, 0x63, 0xc8, 0x9d, 0x99, 0x8f, 0xba, 0x41, 0x38, 0x5e, 0x1b, 0xb1, 0xde, 0xfa, + 0x3c, 0x09, 0x59, 0x00, 0xdb, 0x9f, 0xcd, 0x5e, 0xac, 0x76, 0xf8, 0xe7, 0xd1, 0x77, 0x5b, 0x15, + 0xdb, 0xe7, 0x4c, 0x2e, 0x0a, 0x1e, 0x0f, 0x76, 0x3a, 0xca, 0xdd, 0x80, 0xc6, 0xf5, 0xd3, 0xfe, + 0x0a, 0xad, 0x1c, 0xbd, 0xe1, 0xea, 0x61, 0x65, 0xca, 0xf0, 0x2c, 0x64, 0xd2, 0x67, 0x83, 0x39, + 0x3a, 0xad, 0xd3, 0xda, 0x66, 0xbb, 0xa3, 0x6b, 0xb4, 0x64, 0x49, 0xaa, 0x1e, 0xd6, 0x7e, 0x12, + 0x32, 0xea, 0xa1, 0xc1, 0x6d, 0x36, 0xa9, 0xd2, 0x8a, 0xcc, 0x6a, 0x8e, 0x3b, 0xdb, 0xb3, 0x2d, + 0x3a, 0x12, 0x20, 0xbb, 0xb3, 0xed, 0x9e, 0xb4, 0x76, 0x2b, 0x9b, 0x25, 0xaf, 0xfa, 0xd9, 0x1d, + 0xe4, 0x98, 0x57, 0xad, 0x8a, 0x8c, 0xf4, 0xed, 0x9e, 0xb4, 0xf6, 0xfa, 0x67, 0xd1, 0x07, 0x6d, + 0xaf, 0x7a, 0x21, 0xda, 0xe9, 0x34, 0x05, 0xd6, 0xa2, 0xa7, 0xfd, 0x15, 0xec, 0x96, 0xe6, 0xcb, + 0xa4, 0x94, 0xa2, 0x58, 0x8d, 0xaf, 0xc4, 0x4d, 0xf3, 0xda, 0x85, 0x3f, 0x5b, 0x35, 0x30, 0x74, + 0x08, 0x62, 0x4b, 0x83, 0x93, 0x2d, 0x57, 0xf6, 0xf5, 0x8c, 0x92, 0x70, 0xe5, 0x10, 0x1d, 0xae, + 0x7c, 0xd2, 0xc6, 0xaa, 0xa6, 0x56, 0xf6, 0x5d, 0x92, 0x0d, 0xbc, 0xa8, 0xed, 0xf7, 0x49, 0x1e, + 0x75, 0x83, 0x36, 0x63, 0xd1, 0xe2, 0xbd, 0xe4, 0xf2, 0xd2, 0xd4, 0x09, 0x2f, 0xa9, 0x8b, 0x10, + 0x19, 0x0b, 0x81, 0xda, 0xa4, 0x7b, 0x3f, 0x49, 0xb9, 0x3a, 0xd1, 0x7f, 0x75, 0x79, 0x99, 0x0a, + 0x16, 0x83, 0xa4, 0xbb, 0x12, 0x0f, 0x5d, 0x39, 0x91, 0x74, 0x63, 0x9c, 0xbd, 0x2b, 0x50, 0x49, + 0xcf, 0xf8, 0x54, 0x64, 0xd3, 0x24, 0x85, 0xb7, 0x50, 0x95, 0xa6, 0x11, 0x12, 0x77, 0x05, 0x5a, + 0x90, 0x5d, 0x18, 0x2b, 0x51, 0x35, 0xed, 0x9b, 0xf2, 0x3f, 0x6c, 0x2b, 0x3a, 0x62, 0x62, 0x61, + 0x44, 0x30, 0xbb, 0xf7, 0xac, 0x84, 0xe7, 0xb9, 0x32, 0x7e, 0xaf, 0xad, 0x55, 0x4b, 0x88, 0xbd, + 0xa7, 0x4f, 0xd8, 0x3d, 0x54, 0xf5, 0xfb, 0x9e, 0xb8, 0xc9, 0x94, 0xd1, 0xfb, 0x6d, 0x95, 0x46, + 0x46, 0xec, 0xa1, 0x20, 0xa3, 0x0d, 0xff, 0x24, 0xfa, 0x55, 0x65, 0xb8, 0x10, 0xf9, 0xe0, 0x0e, + 0xa2, 0x50, 0x38, 0x77, 0x36, 0xef, 0x92, 0x72, 0x7b, 0xb5, 0xc0, 0x8c, 0x8d, 0xf3, 0x92, 0xcd, + 0xf8, 0xe0, 0x01, 0xd1, 0xe3, 0x4a, 0x4a, 0x5c, 0x2d, 0x68, 0x53, 0xfe, 0xa8, 0x38, 0x11, 0xb1, + 0xb6, 0x8e, 0xd4, 0xd0, 0x08, 0x43, 0xa3, 0xc2, 0x85, 0x6c, 0x32, 0x73, 0xc2, 0x96, 0xc9, 0xcc, + 0x2c, 0x38, 0x75, 0xdc, 0x2a, 0x41, 0x32, 0x63, 0x99, 0xa1, 0x03, 0x11, 0xc9, 0x0c, 0x09, 0x6b, + 0x9f, 0xff, 0xb2, 0x16, 0xdd, 0xb3, 0xcc, 0x41, 0x73, 0x5a, 0x77, 0x98, 0x5d, 0x8a, 0x2a, 0xf5, + 0x39, 0x4a, 0xb2, 0xeb, 0x72, 0xf0, 0x39, 0x65, 0x12, 0xe7, 0x4d, 0x51, 0xbe, 0xb8, 0xb5, 0x9e, + 0xcd, 0x5a, 0x9b, 0xa3, 0x2c, 0xfb, 0x3c, 0xbb, 0xd6, 0x00, 0x59, 0xab, 0x39, 0xf1, 0x82, 0x1c, + 0x91, 0xb5, 0x86, 0x78, 0xdb, 0xc5, 0xc6, 0x79, 0x2a, 0x32, 0xd8, 0xc5, 0xd6, 0x42, 0x25, 0x24, + 0xba, 0xb8, 0x05, 0xd9, 0x78, 0xdc, 0x88, 0xea, 0x53, 0x97, 0x51, 0x9a, 0x82, 0x78, 0x6c, 0x54, + 0x0d, 0x40, 0xc4, 0x63, 0x14, 0xd4, 0x7e, 0xce, 0xa2, 0x6f, 0x57, 0x4d, 0x7a, 0x5a, 0xf0, 0x65, + 0xc2, 0xe1, 0xd5, 0x0b, 0x47, 0x42, 0xcc, 0x7f, 0x9f, 0xb0, 0x33, 0xeb, 0x3c, 0x2b, 0xf3, 0x94, + 0x95, 0x57, 0xfa, 0x61, 0xbc, 0x5f, 0xe7, 0x46, 0x08, 0x1f, 0xc7, 0x3f, 0xec, 0xa0, 0x6c, 0x50, + 0x6f, 0x64, 0x26, 0xc4, 0xac, 0xe3, 0xaa, 0xad, 0x30, 0xb3, 0xd1, 0xc9, 0xd9, 0x13, 0xef, 0x03, + 0x96, 0xa6, 0xbc, 0x58, 0x35, 0xb2, 0x63, 0x96, 0x25, 0x97, 0xbc, 0x94, 0xe0, 0xc4, 0x5b, 0x53, + 0x43, 0x88, 0x11, 0x27, 0xde, 0x01, 0xdc, 0x66, 0xf3, 0xc0, 0xf3, 0x61, 0x16, 0xf3, 0xb7, 0x20, + 0x9b, 0x87, 0x76, 0x14, 0x43, 0x64, 0xf3, 0x14, 0x6b, 0x4f, 0x7e, 0x5f, 0xa4, 0x62, 0x7a, 0xad, + 0x97, 0x00, 0xbf, 0x83, 0x95, 0x04, 0xae, 0x01, 0xf7, 0x43, 0x88, 0x5d, 0x04, 0x94, 0xe0, 0x8c, + 0xe7, 0x29, 0x9b, 0xc2, 0xfb, 0x37, 0xb5, 0x8e, 0x96, 0x11, 0x8b, 0x00, 0x64, 0x40, 0x71, 0xf5, + 0xbd, 0x1e, 0xac, 0xb8, 0xe0, 0x5a, 0xcf, 0xfd, 0x10, 0x62, 0x97, 0x41, 0x25, 0x18, 0xe7, 0x69, + 0x22, 0xc1, 0x34, 0xa8, 0x35, 0x94, 0x84, 0x98, 0x06, 0x3e, 0x01, 0x4c, 0x1e, 0xf3, 0x62, 0xc6, + 0x51, 0x93, 0x4a, 0x12, 0x34, 0xd9, 0x10, 0xf6, 0xb2, 0x71, 0x5d, 0x77, 0x91, 0xaf, 0xc0, 0x65, + 0x63, 0x5d, 0x2d, 0x91, 0xaf, 0x88, 0xcb, 0xc6, 0x1e, 0x00, 0x8a, 0x78, 0xca, 0x4a, 0x89, 0x17, + 0x51, 0x49, 0x82, 0x45, 0x6c, 0x08, 0xbb, 0x46, 0xd7, 0x45, 0x5c, 0x48, 0xb0, 0x46, 0xeb, 0x02, + 0x38, 0x4f, 0xa0, 0xef, 0x92, 0x72, 0x1b, 0x49, 0xea, 0x5e, 0xe1, 0x72, 0x3f, 0xe1, 0x69, 0x5c, + 0x82, 0x48, 0xa2, 0xdb, 0xbd, 0x91, 0x12, 0x91, 0xa4, 0x4d, 0x81, 0xa1, 0xa4, 0xcf, 0xc7, 0xb1, + 0xda, 0x81, 0xa3, 0xf1, 0xfb, 0x21, 0xc4, 0xc6, 0xa7, 0xa6, 0xd0, 0xbb, 0xac, 0x28, 0x92, 0x6a, + 0xf1, 0x5f, 0xc7, 0x0b, 0xd4, 0xc8, 0x89, 0xf8, 0x84, 0x71, 0x60, 0x7a, 0x35, 0x81, 0x1b, 0x2b, + 0x18, 0x0c, 0xdd, 0x1f, 0x07, 0x19, 0x9b, 0x71, 0x2a, 0x89, 0xf3, 0x08, 0x15, 0x6b, 0x4d, 0xe4, + 0x09, 0xea, 0x7a, 0x17, 0xe6, 0xbc, 0x89, 0x64, 0x5c, 0x1c, 0x8b, 0x25, 0x9f, 0x88, 0x97, 0x6f, + 0x93, 0x52, 0x26, 0xd9, 0x4c, 0xaf, 0xdc, 0xcf, 0x09, 0x4b, 0x18, 0x4c, 0xbc, 0x89, 0xd4, 0xa9, + 0x64, 0x13, 0x08, 0x50, 0x96, 0x13, 0x7e, 0x83, 0x26, 0x10, 0xd0, 0xa2, 0xe1, 0x88, 0x04, 0x22, + 0xc4, 0xdb, 0x73, 0x14, 0xe3, 0x5c, 0xbf, 0xae, 0x3d, 0x11, 0x4d, 0x2e, 0x47, 0x59, 0x83, 0x20, + 0xb1, 0x95, 0x0d, 0x2a, 0xd8, 0xfd, 0xa5, 0xf1, 0x6f, 0xa7, 0xd8, 0x23, 0xc2, 0x4e, 0x7b, 0x9a, + 0x3d, 0xee, 0x41, 0x22, 0xae, 0xec, 0x3d, 0x00, 0xca, 0x55, 0xfb, 0x1a, 0xc0, 0xe3, 0x1e, 0xa4, + 0x73, 0x26, 0xe3, 0x56, 0xeb, 0x05, 0x9b, 0x5e, 0xcf, 0x0a, 0xb1, 0xc8, 0xe2, 0x5d, 0x91, 0x8a, + 0x02, 0x9c, 0xc9, 0x78, 0xa5, 0x06, 0x28, 0x71, 0x26, 0xd3, 0xa1, 0x62, 0x33, 0x38, 0xb7, 0x14, + 0xa3, 0x34, 0x99, 0xc1, 0x1d, 0xb5, 0x67, 0x48, 0x01, 0x44, 0x06, 0x87, 0x82, 0xc8, 0x20, 0xaa, + 0x77, 0xdc, 0x32, 0x99, 0xb2, 0xb4, 0xf6, 0xb7, 0x43, 0x9b, 0xf1, 0xc0, 0xce, 0x41, 0x84, 0x28, + 0x20, 0xf5, 0x9c, 0x2c, 0x8a, 0xec, 0x30, 0x93, 0x82, 0xac, 0x67, 0x03, 0x74, 0xd6, 0xd3, 0x01, + 0x41, 0x58, 0x9d, 0xf0, 0xb7, 0x55, 0x69, 0xaa, 0x7f, 0xb0, 0xb0, 0x5a, 0xfd, 0x3e, 0xd4, 0xf2, + 0x50, 0x58, 0x05, 0x1c, 0xa8, 0x8c, 0x76, 0x52, 0x0f, 0x98, 0x80, 0xb6, 0x3f, 0x4c, 0x1e, 0x75, + 0x83, 0xb8, 0x9f, 0xb1, 0x5c, 0xa5, 0x3c, 0xe4, 0x47, 0x01, 0x7d, 0xfc, 0x34, 0xa0, 0x3d, 0x6e, + 0xf1, 0xea, 0x73, 0xc5, 0xa7, 0xd7, 0xad, 0x6b, 0x4d, 0x7e, 0x41, 0x6b, 0x84, 0x38, 0x6e, 0x21, + 0x50, 0xbc, 0x8b, 0x0e, 0xa7, 0x22, 0x0b, 0x75, 0x51, 0x25, 0xef, 0xd3, 0x45, 0x9a, 0xb3, 0x9b, + 0x5f, 0x23, 0xd5, 0x23, 0xb3, 0xee, 0xa6, 0x4d, 0xc2, 0x82, 0x0b, 0x11, 0x9b, 0x5f, 0x12, 0xb6, + 0x39, 0x39, 0xf4, 0x79, 0xdc, 0xbe, 0xf3, 0xdd, 0xb2, 0x72, 0x4c, 0xdf, 0xf9, 0xa6, 0x58, 0xba, + 0x92, 0xf5, 0x18, 0xe9, 0xb0, 0xe2, 0x8f, 0x93, 0xad, 0x7e, 0xb0, 0xdd, 0xf2, 0x78, 0x3e, 0x77, + 0x53, 0xce, 0x8a, 0xda, 0xeb, 0x76, 0xc0, 0x90, 0xc5, 0x88, 0x2d, 0x4f, 0x00, 0x07, 0x21, 0xcc, + 0xf3, 0xbc, 0x2b, 0x32, 0xc9, 0x33, 0x89, 0x85, 0x30, 0xdf, 0x98, 0x06, 0x43, 0x21, 0x8c, 0x52, + 0x00, 0xe3, 0x56, 0x9d, 0x07, 0x71, 0x79, 0xc2, 0xe6, 0x68, 0xc6, 0x56, 0x9f, 0xf5, 0xd4, 0xf2, + 0xd0, 0xb8, 0x05, 0x9c, 0xf3, 0x90, 0xcf, 0xf5, 0x32, 0x61, 0xc5, 0xcc, 0x9c, 0x6e, 0xc4, 0x83, + 0xa7, 0xb4, 0x1d, 0x9f, 0x24, 0x1e, 0xf2, 0x85, 0x35, 0x40, 0xd8, 0x39, 0x9c, 0xb3, 0x99, 0xa9, + 0x29, 0x52, 0x03, 0x25, 0x6f, 0x55, 0xf5, 0x51, 0x37, 0x08, 0xfc, 0xbc, 0x4e, 0x62, 0x2e, 0x02, + 0x7e, 0x94, 0xbc, 0x8f, 0x1f, 0x08, 0x82, 0xec, 0xad, 0xaa, 0x77, 0xbd, 0xa3, 0x1b, 0x65, 0xb1, + 0xde, 0xc7, 0x0e, 0x89, 0xe6, 0x01, 0x5c, 0x28, 0x7b, 0x23, 0x78, 0x30, 0x47, 0x9b, 0x03, 0xda, + 0xd0, 0x1c, 0x35, 0xe7, 0xaf, 0x7d, 0xe6, 0x28, 0x06, 0x6b, 0x9f, 0x3f, 0xd3, 0x73, 0x74, 0x8f, + 0x49, 0x56, 0xe5, 0xed, 0xaf, 0x13, 0x7e, 0xa3, 0x37, 0xc2, 0x48, 0x7d, 0x1b, 0x6a, 0xa8, 0x5e, + 0x59, 0x05, 0xbb, 0xe2, 0x9d, 0xde, 0x7c, 0xc0, 0xb7, 0xde, 0x21, 0x74, 0xfa, 0x06, 0x5b, 0x85, + 0x9d, 0xde, 0x7c, 0xc0, 0xb7, 0x7e, 0x17, 0xbe, 0xd3, 0x37, 0x78, 0x21, 0x7e, 0xa7, 0x37, 0xaf, + 0x7d, 0xff, 0x55, 0x33, 0x71, 0x5d, 0xe7, 0x55, 0x1e, 0x36, 0x95, 0xc9, 0x92, 0x63, 0xe9, 0xa4, + 0x6f, 0xcf, 0xa0, 0xa1, 0x74, 0x92, 0x56, 0x71, 0xbe, 0xde, 0x84, 0x95, 0xe2, 0x54, 0x94, 0x89, + 0x7a, 0x48, 0xff, 0xbc, 0x87, 0xd1, 0x06, 0x0e, 0x6d, 0x9a, 0x42, 0x4a, 0xf6, 0x71, 0xa3, 0x87, + 0xda, 0x5b, 0xcc, 0x5b, 0x01, 0x7b, 0xed, 0xcb, 0xcc, 0xdb, 0x3d, 0x69, 0xfb, 0xe0, 0xcf, 0x63, + 0xdc, 0x27, 0x8e, 0xa1, 0x5e, 0x45, 0x1f, 0x3a, 0x3e, 0xed, 0xaf, 0xa0, 0xdd, 0xff, 0x4d, 0xb3, + 0xaf, 0x80, 0xfe, 0xf5, 0x24, 0x78, 0xd6, 0xc7, 0x22, 0x98, 0x08, 0xcf, 0x6f, 0xa5, 0xa3, 0x0b, + 0xf2, 0x0f, 0xcd, 0x06, 0xba, 0x41, 0xd5, 0xbb, 0x1c, 0xea, 0x1d, 0x50, 0x3d, 0x27, 0x42, 0xdd, + 0x6a, 0x61, 0x38, 0x33, 0x3e, 0xbb, 0xa5, 0x96, 0xf3, 0x2d, 0x2f, 0x0f, 0xd6, 0xef, 0x1c, 0x3a, + 0xe5, 0x09, 0x59, 0x76, 0x68, 0x58, 0xa0, 0xcf, 0x6f, 0xab, 0x46, 0xcd, 0x15, 0x07, 0x56, 0x5f, + 0xe7, 0x78, 0xde, 0xd3, 0xb0, 0xf7, 0xbd, 0x8e, 0x4f, 0x6f, 0xa7, 0xa4, 0xcb, 0xf2, 0x9f, 0x6b, + 0xd1, 0x43, 0x8f, 0xb5, 0xcf, 0x13, 0xc0, 0xa9, 0xc7, 0x8f, 0x02, 0xf6, 0x29, 0x25, 0x53, 0xb8, + 0xdf, 0xff, 0xe5, 0x94, 0xed, 0x87, 0xaf, 0x3c, 0x95, 0xfd, 0x24, 0x95, 0xbc, 0x68, 0x7f, 0xf8, + 0xca, 0xb7, 0x5b, 0x53, 0x43, 0xfa, 0xc3, 0x57, 0x01, 0xdc, 0xf9, 0xf0, 0x15, 0xe2, 0x19, 0xfd, + 0xf0, 0x15, 0x6a, 0x2d, 0xf8, 0xe1, 0xab, 0xb0, 0x06, 0x15, 0xde, 0x9b, 0x22, 0xd4, 0xe7, 0xd6, + 0xbd, 0x2c, 0xfa, 0xc7, 0xd8, 0xcf, 0x6e, 0xa3, 0x42, 0x2c, 0x70, 0x35, 0xa7, 0xee, 0xb9, 0xf5, + 0x68, 0x53, 0xef, 0xae, 0xdb, 0x4e, 0x6f, 0x5e, 0xfb, 0xfe, 0xa9, 0xde, 0xdd, 0x98, 0x70, 0x2e, + 0x0a, 0xf5, 0xd1, 0xb3, 0xcd, 0x50, 0x78, 0xae, 0x2c, 0xb8, 0x3d, 0xbf, 0xd5, 0x0f, 0x26, 0xaa, + 0x5b, 0x11, 0xba, 0xd3, 0x87, 0x5d, 0x86, 0x40, 0x97, 0xef, 0xf4, 0xe6, 0x89, 0x65, 0xa4, 0xf6, + 0x5d, 0xf7, 0x76, 0x0f, 0x63, 0x7e, 0x5f, 0x3f, 0xed, 0xaf, 0xa0, 0xdd, 0x2f, 0x75, 0xda, 0xe8, + 0xba, 0x57, 0xfd, 0xbc, 0xdd, 0x65, 0x6a, 0xec, 0x75, 0xf3, 0xb0, 0x2f, 0x1e, 0x4a, 0x20, 0xdc, + 0x25, 0xb4, 0x2b, 0x81, 0x40, 0x97, 0xd1, 0x4f, 0x6f, 0xa7, 0xa4, 0xcb, 0xf2, 0xcf, 0x6b, 0xd1, + 0x5d, 0xb2, 0x2c, 0x7a, 0x1c, 0x7c, 0xde, 0xd7, 0x32, 0x18, 0x0f, 0x5f, 0xdc, 0x5a, 0x4f, 0x17, + 0xea, 0xdf, 0xd6, 0xa2, 0x7b, 0x81, 0x42, 0xd5, 0x03, 0xe4, 0x16, 0xd6, 0xfd, 0x81, 0xf2, 0x83, + 0xdb, 0x2b, 0x52, 0xcb, 0xbd, 0x8b, 0x8f, 0xdb, 0x1f, 0x65, 0x0a, 0xd8, 0x1e, 0xd3, 0x1f, 0x65, + 0xea, 0xd6, 0x82, 0x87, 0x3c, 0xec, 0xa2, 0xd9, 0x74, 0xa1, 0x87, 0x3c, 0xea, 0x86, 0x5a, 0xf0, + 0xe3, 0x12, 0x18, 0x87, 0x39, 0x79, 0xf9, 0x36, 0x67, 0x59, 0x4c, 0x3b, 0xa9, 0xe5, 0xdd, 0x4e, + 0x0c, 0x07, 0x0f, 0xc7, 0x2a, 0xe9, 0x99, 0x68, 0x36, 0x52, 0x8f, 0x29, 0x7d, 0x83, 0x04, 0x0f, + 0xc7, 0x5a, 0x28, 0xe1, 0x4d, 0x67, 0x8d, 0x21, 0x6f, 0x20, 0x59, 0x7c, 0xd2, 0x07, 0x05, 0x29, + 0xba, 0xf1, 0x66, 0xce, 0xdc, 0xb7, 0x42, 0x56, 0x5a, 0xe7, 0xee, 0xdb, 0x3d, 0x69, 0xc2, 0xed, + 0x98, 0xcb, 0x2f, 0x39, 0x8b, 0x79, 0x11, 0x74, 0x6b, 0xa8, 0x5e, 0x6e, 0x5d, 0x1a, 0x73, 0xbb, + 0x2b, 0xd2, 0xc5, 0x3c, 0xd3, 0x9d, 0x49, 0xba, 0x75, 0xa9, 0x6e, 0xb7, 0x80, 0x86, 0xc7, 0x82, + 0xd6, 0xad, 0x4a, 0x2f, 0x9f, 0x84, 0xcd, 0x78, 0x59, 0xe5, 0x66, 0x2f, 0x96, 0xae, 0xa7, 0x1e, + 0x46, 0x1d, 0xf5, 0x04, 0x23, 0x69, 0xbb, 0x27, 0x0d, 0xcf, 0xe7, 0x1c, 0xb7, 0x66, 0x3c, 0xed, + 0x74, 0xd8, 0x6a, 0x0d, 0xa9, 0xa7, 0xfd, 0x15, 0xe0, 0x69, 0xa8, 0x1e, 0x55, 0x47, 0x49, 0x29, + 0xf7, 0x93, 0x34, 0x1d, 0x6c, 0x06, 0x86, 0x49, 0x03, 0x05, 0x4f, 0x43, 0x11, 0x98, 0x18, 0xc9, + 0xcd, 0xe9, 0x61, 0x36, 0xe8, 0xb2, 0xa3, 0xa8, 0x5e, 0x23, 0xd9, 0xa5, 0xc1, 0x89, 0x96, 0xd3, + 0xd4, 0xa6, 0xb6, 0xc3, 0x70, 0xc3, 0xb5, 0x2a, 0xbc, 0xd3, 0x9b, 0x07, 0x8f, 0xdb, 0x15, 0xa5, + 0x56, 0x96, 0x07, 0x94, 0x09, 0x6f, 0x25, 0x79, 0xd8, 0x41, 0x81, 0x53, 0xc1, 0x7a, 0x1a, 0xbd, + 0x49, 0xe2, 0x19, 0x97, 0xe8, 0x93, 0x22, 0x17, 0x08, 0x3e, 0x29, 0x02, 0x20, 0xe8, 0xba, 0xfa, + 0x77, 0x73, 0x1c, 0x7a, 0x18, 0x63, 0x5d, 0xa7, 0x95, 0x1d, 0x2a, 0xd4, 0x75, 0x28, 0x0d, 0xa2, + 0x81, 0x71, 0xab, 0x5f, 0xc7, 0x7f, 0x12, 0x32, 0x03, 0xde, 0xc9, 0xdf, 0xec, 0xc5, 0x82, 0x15, + 0xc5, 0x3a, 0x4c, 0xe6, 0x89, 0xc4, 0x56, 0x14, 0xc7, 0x46, 0x85, 0x84, 0x56, 0x94, 0x36, 0x4a, + 0x55, 0xaf, 0xca, 0x11, 0x0e, 0xe3, 0x70, 0xf5, 0x6a, 0xa6, 0x5f, 0xf5, 0x0c, 0xdb, 0x7a, 0xb0, + 0x99, 0x99, 0x21, 0x23, 0xaf, 0xf4, 0x66, 0x19, 0x19, 0xdb, 0xea, 0x35, 0x4d, 0x08, 0x86, 0xa2, + 0x0e, 0xa5, 0x00, 0x0f, 0xec, 0x2b, 0xae, 0x79, 0xf6, 0x9a, 0xe7, 0x9c, 0x15, 0x2c, 0x9b, 0xa2, + 0x9b, 0x53, 0x65, 0xb0, 0x45, 0x86, 0x36, 0xa7, 0xa4, 0x06, 0x78, 0x6c, 0xee, 0xbf, 0x60, 0x89, + 0x4c, 0x05, 0xf3, 0x26, 0xa3, 0xff, 0x7e, 0xe5, 0xe3, 0x1e, 0x24, 0x7c, 0x6c, 0xde, 0x00, 0xe6, + 0xe0, 0xbb, 0x76, 0xfa, 0x49, 0xc0, 0x94, 0x8f, 0x86, 0x36, 0xc2, 0xb4, 0x0a, 0x18, 0xd4, 0x26, + 0xc1, 0xe5, 0xf2, 0x27, 0x7c, 0x85, 0x0d, 0x6a, 0x9b, 0x9f, 0x2a, 0x24, 0x34, 0xa8, 0xdb, 0x28, + 0xc8, 0x33, 0xdd, 0x7d, 0xd0, 0x7a, 0x40, 0xdf, 0xdd, 0xfa, 0x6c, 0x74, 0x72, 0x60, 0xe6, 0xec, + 0x25, 0x4b, 0xef, 0x39, 0x01, 0x52, 0xd0, 0xbd, 0x64, 0x89, 0x3f, 0x26, 0xd8, 0xec, 0xc5, 0xc2, + 0x47, 0xf2, 0x4c, 0xf2, 0xb7, 0xcd, 0xb3, 0x72, 0xa4, 0xb8, 0x4a, 0xde, 0x7a, 0x58, 0xfe, 0xa8, + 0x1b, 0xb4, 0x17, 0x60, 0x4f, 0x0b, 0x31, 0xe5, 0x65, 0xa9, 0xbf, 0x54, 0xe9, 0xdf, 0x30, 0xd2, + 0xb2, 0x21, 0xf8, 0x4e, 0xe5, 0x83, 0x30, 0xe4, 0x7c, 0x5e, 0xae, 0x16, 0xd9, 0xaf, 0xde, 0xac, + 0xa3, 0x9a, 0xed, 0x0f, 0xde, 0x6c, 0x74, 0x72, 0x76, 0x7a, 0x69, 0xa9, 0xfb, 0x99, 0x9b, 0x47, + 0xa8, 0x3a, 0xf6, 0x85, 0x9b, 0xc7, 0x3d, 0x48, 0xed, 0xea, 0xcb, 0xe8, 0x9d, 0x23, 0x31, 0x1b, + 0xf3, 0x2c, 0x1e, 0x7c, 0xdf, 0xbf, 0x42, 0x2b, 0x66, 0xc3, 0xea, 0x67, 0x63, 0xf4, 0x0e, 0x25, + 0xb6, 0x97, 0x00, 0xf7, 0xf8, 0xc5, 0x62, 0x36, 0x96, 0x4c, 0x82, 0x4b, 0x80, 0xea, 0xf7, 0x61, + 0x25, 0x20, 0x2e, 0x01, 0x7a, 0x00, 0xb0, 0x37, 0x29, 0x38, 0x47, 0xed, 0x55, 0x82, 0xa0, 0x3d, + 0x0d, 0xd8, 0x2c, 0xc2, 0xd8, 0xab, 0x12, 0x75, 0x78, 0x69, 0xcf, 0xea, 0x28, 0x29, 0x91, 0x45, + 0xb4, 0x29, 0x3b, 0xb8, 0xeb, 0xea, 0xab, 0xaf, 0x8e, 0x2c, 0xe6, 0x73, 0x56, 0xac, 0xc0, 0xe0, + 0xd6, 0xb5, 0x74, 0x00, 0x62, 0x70, 0xa3, 0xa0, 0x9d, 0xb5, 0x4d, 0x33, 0x4f, 0xaf, 0x0f, 0x44, + 0x21, 0x16, 0x32, 0xc9, 0x38, 0xfc, 0xf2, 0x84, 0x69, 0x50, 0x97, 0x21, 0x66, 0x2d, 0xc5, 0xda, + 0x2c, 0x57, 0x11, 0xf5, 0x7d, 0x42, 0xf5, 0xf1, 0xec, 0x52, 0x8a, 0x02, 0x3e, 0x4f, 0xac, 0xad, + 0x40, 0x88, 0xc8, 0x72, 0x49, 0x18, 0xf4, 0xfd, 0x69, 0x92, 0xcd, 0xd0, 0xbe, 0x3f, 0x75, 0xbf, + 0xfe, 0x7a, 0x8f, 0x06, 0xec, 0x84, 0xaa, 0x1b, 0xad, 0x9e, 0x00, 0xfa, 0x5d, 0x4e, 0xb4, 0xd1, + 0x5d, 0x82, 0x98, 0x50, 0x38, 0x09, 0x5c, 0xbd, 0xca, 0x79, 0xc6, 0xe3, 0xe6, 0xd6, 0x1c, 0xe6, + 0xca, 0x23, 0x82, 0xae, 0x20, 0x69, 0x63, 0x91, 0x92, 0x9f, 0x2d, 0xb2, 0xd3, 0x42, 0x5c, 0x26, + 0x29, 0x2f, 0x40, 0x2c, 0xaa, 0xd5, 0x1d, 0x39, 0x11, 0x8b, 0x30, 0xce, 0x5e, 0xbf, 0x50, 0x52, + 0xef, 0x0b, 0xf0, 0x93, 0x82, 0x4d, 0xe1, 0xf5, 0x8b, 0xda, 0x46, 0x1b, 0x23, 0x4e, 0x06, 0x03, + 0xb8, 0x93, 0xe8, 0xd4, 0xae, 0xb3, 0x95, 0x1a, 0x1f, 0xfa, 0x5d, 0x42, 0xf5, 0x4d, 0xd4, 0x12, + 0x24, 0x3a, 0xda, 0x1c, 0x46, 0x12, 0x89, 0x4e, 0x58, 0xc3, 0x2e, 0x25, 0x8a, 0x3b, 0xd1, 0xd7, + 0x8a, 0xc0, 0x52, 0x52, 0xdb, 0x68, 0x84, 0xc4, 0x52, 0xd2, 0x82, 0x40, 0x40, 0x6a, 0xa6, 0xc1, + 0x0c, 0x0d, 0x48, 0x46, 0x1a, 0x0c, 0x48, 0x2e, 0x65, 0x03, 0xc5, 0x61, 0x96, 0xc8, 0x84, 0xa5, + 0x63, 0x2e, 0x4f, 0x59, 0xc1, 0xe6, 0x5c, 0xf2, 0x02, 0x06, 0x0a, 0x8d, 0x0c, 0x3d, 0x86, 0x08, + 0x14, 0x14, 0xab, 0x1d, 0xfe, 0x41, 0xf4, 0x5e, 0xb5, 0xee, 0xf3, 0x4c, 0xff, 0xad, 0x97, 0x97, + 0xea, 0x8f, 0x44, 0x0d, 0xde, 0x37, 0x36, 0xc6, 0xb2, 0xe0, 0x6c, 0xde, 0xd8, 0x7e, 0xd7, 0xfc, + 0xae, 0xc0, 0xa7, 0x6b, 0xd5, 0x78, 0x3e, 0x11, 0x32, 0xb9, 0xac, 0xb6, 0xd9, 0xfa, 0x0d, 0x22, + 0x30, 0x9e, 0x5d, 0xf1, 0x30, 0xf0, 0x2d, 0x0a, 0x8c, 0xb3, 0x71, 0xda, 0x95, 0x9e, 0xf1, 0x3c, + 0x85, 0x71, 0xda, 0xd3, 0x56, 0x00, 0x11, 0xa7, 0x51, 0xd0, 0x4e, 0x4e, 0x57, 0x3c, 0xe1, 0xe1, + 0xca, 0x4c, 0x78, 0xbf, 0xca, 0x4c, 0xbc, 0x97, 0x32, 0xd2, 0xe8, 0xbd, 0x63, 0x3e, 0xbf, 0xe0, + 0x45, 0x79, 0x95, 0xe4, 0xd4, 0x77, 0x5b, 0x2d, 0xd1, 0xf9, 0xdd, 0x56, 0x02, 0xb5, 0x2b, 0x81, + 0x05, 0x0e, 0xcb, 0x13, 0x36, 0xe7, 0xea, 0xcb, 0x1a, 0x60, 0x25, 0x70, 0x8c, 0x38, 0x10, 0xb1, + 0x12, 0x90, 0xb0, 0xf3, 0x7e, 0x97, 0x65, 0xce, 0xf8, 0xac, 0x1a, 0x61, 0xc5, 0x29, 0x5b, 0xcd, + 0x79, 0x26, 0xb5, 0x49, 0x70, 0x26, 0xef, 0x98, 0xc4, 0x79, 0xe2, 0x4c, 0xbe, 0x8f, 0x9e, 0x13, + 0x9a, 0xbc, 0x86, 0x3f, 0x15, 0x85, 0xac, 0xff, 0x92, 0xd3, 0x79, 0x91, 0x82, 0xd0, 0xe4, 0x37, + 0xaa, 0x47, 0x12, 0xa1, 0x29, 0xac, 0xe1, 0xfc, 0x15, 0x02, 0xaf, 0x0c, 0xaf, 0x79, 0x61, 0xc6, + 0xc9, 0xcb, 0x39, 0x4b, 0x52, 0x3d, 0x1a, 0x7e, 0x18, 0xb0, 0x4d, 0xe8, 0x10, 0x7f, 0x85, 0xa0, + 0xaf, 0xae, 0xf3, 0x77, 0x1b, 0xc2, 0x25, 0x04, 0x8f, 0x08, 0x3a, 0xec, 0x13, 0x8f, 0x08, 0xba, + 0xb5, 0xec, 0xce, 0xdd, 0xb2, 0x8a, 0x5b, 0x29, 0x62, 0x57, 0xc4, 0xf0, 0xbc, 0xd0, 0xb1, 0x09, + 0x40, 0x62, 0xe7, 0x1e, 0x54, 0xb0, 0xa9, 0x81, 0xc5, 0xf6, 0x93, 0x8c, 0xa5, 0xc9, 0xcf, 0x60, + 0x5a, 0xef, 0xd8, 0x69, 0x08, 0x22, 0x35, 0xc0, 0x49, 0xcc, 0xd5, 0x01, 0x97, 0x93, 0xa4, 0x0a, + 0xfd, 0x8f, 0x02, 0xed, 0xa6, 0x88, 0x6e, 0x57, 0x0e, 0xe9, 0x7c, 0xa3, 0x15, 0x36, 0xeb, 0x28, + 0xcf, 0xc7, 0xd5, 0xaa, 0x7a, 0xc6, 0xa7, 0x3c, 0xc9, 0xe5, 0xe0, 0xb3, 0x70, 0x5b, 0x01, 0x9c, + 0xb8, 0x68, 0xd1, 0x43, 0xcd, 0x79, 0x7c, 0x5f, 0xc5, 0x92, 0x71, 0xfd, 0x27, 0x0e, 0xcf, 0x4b, + 0x5e, 0xe8, 0x44, 0xe3, 0x80, 0x4b, 0x30, 0x3b, 0x1d, 0x6e, 0xe8, 0x80, 0x55, 0x45, 0x89, 0xd9, + 0x19, 0xd6, 0xb0, 0x87, 0x7d, 0x0e, 0xa7, 0xbf, 0xb9, 0xad, 0xee, 0x1b, 0x6e, 0x91, 0xc6, 0x1c, + 0x8a, 0x38, 0xec, 0xa3, 0x69, 0x9b, 0xad, 0xb5, 0xdd, 0x8e, 0xb2, 0xd5, 0x21, 0xbc, 0x32, 0x81, + 0x58, 0x52, 0x18, 0x91, 0xad, 0x05, 0x70, 0xe7, 0x30, 0xbc, 0x10, 0x2c, 0x9e, 0xb2, 0x52, 0x9e, + 0xb2, 0x55, 0x2a, 0x58, 0xac, 0xd6, 0x75, 0x78, 0x18, 0xde, 0x30, 0x43, 0x17, 0xa2, 0x0e, 0xc3, + 0x29, 0xd8, 0xcd, 0xce, 0xd4, 0x5f, 0x6e, 0xd4, 0x77, 0x39, 0x61, 0x76, 0xa6, 0xca, 0x0b, 0xef, + 0x71, 0x3e, 0x08, 0x43, 0xf6, 0x1d, 0xb4, 0x5a, 0xa4, 0xd2, 0x90, 0x7b, 0x98, 0x8e, 0x97, 0x80, + 0x7c, 0x14, 0x20, 0xec, 0x77, 0x29, 0xea, 0xdf, 0x9b, 0x3f, 0x3e, 0x24, 0xf5, 0x97, 0xac, 0xb7, + 0x30, 0x5d, 0x17, 0x1a, 0xba, 0x1f, 0xb8, 0xdb, 0xee, 0x49, 0xdb, 0x34, 0x73, 0xf7, 0x8a, 0xc9, + 0x51, 0x1c, 0x1f, 0xf3, 0x12, 0x79, 0xa1, 0xbc, 0x12, 0x0e, 0xad, 0x94, 0x48, 0x33, 0xdb, 0x94, + 0x1d, 0xe8, 0x95, 0xec, 0x65, 0x9c, 0x48, 0x2d, 0x6b, 0x6e, 0x48, 0x6f, 0xb5, 0x0d, 0xb4, 0x29, + 0xa2, 0x56, 0x34, 0x6d, 0x63, 0x79, 0xc5, 0x4c, 0xc4, 0x6c, 0x96, 0x72, 0x0d, 0x9d, 0x71, 0x56, + 0x7f, 0xc8, 0x6f, 0xa7, 0x6d, 0x0b, 0x05, 0x89, 0x58, 0x1e, 0x54, 0xb0, 0x69, 0x64, 0x85, 0xd5, + 0x8f, 0xa4, 0x9a, 0x86, 0xdd, 0x68, 0x9b, 0xf1, 0x00, 0x22, 0x8d, 0x44, 0x41, 0xfb, 0xde, 0x5b, + 0x25, 0x3e, 0xe0, 0x4d, 0x4b, 0xc0, 0x4f, 0x10, 0x29, 0x65, 0x47, 0x4c, 0xbc, 0xf7, 0x86, 0x60, + 0x76, 0x9f, 0x00, 0x3c, 0xbc, 0x58, 0x1d, 0xc6, 0x70, 0x9f, 0x00, 0xf5, 0x15, 0x43, 0xec, 0x13, + 0x28, 0xd6, 0xef, 0x3a, 0x73, 0xee, 0x75, 0xc4, 0x4a, 0x5b, 0x39, 0xa4, 0xeb, 0x50, 0x30, 0xd4, + 0x75, 0x94, 0x82, 0xdf, 0xa4, 0xee, 0xd1, 0x1a, 0xd2, 0xa4, 0xd8, 0xb9, 0xda, 0x7a, 0x17, 0x66, + 0xe3, 0x92, 0xd9, 0x4f, 0xaa, 0x2b, 0x4b, 0xf8, 0x17, 0xfc, 0x6b, 0x21, 0x11, 0x97, 0x5a, 0x50, + 0x6d, 0xfb, 0xc5, 0x47, 0xff, 0xf5, 0xf5, 0x9d, 0xb5, 0x5f, 0x7c, 0x7d, 0x67, 0xed, 0x7f, 0xbe, + 0xbe, 0xb3, 0xf6, 0xf3, 0x6f, 0xee, 0x7c, 0xeb, 0x17, 0xdf, 0xdc, 0xf9, 0xd6, 0x7f, 0x7f, 0x73, + 0xe7, 0x5b, 0x5f, 0xbd, 0xa3, 0xff, 0xa2, 0xef, 0xc5, 0xaf, 0xa8, 0xbf, 0xcb, 0xfb, 0xfc, 0xff, + 0x03, 0x00, 0x00, 0xff, 0xff, 0xda, 0x50, 0xa4, 0x4a, 0xf5, 0x77, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -409,6 +410,7 @@ type ClientCommandsClient interface { AccountRevertDeletion(ctx context.Context, in *pb.RpcAccountRevertDeletionRequest, opts ...grpc.CallOption) (*pb.RpcAccountRevertDeletionResponse, error) AccountSelect(ctx context.Context, in *pb.RpcAccountSelectRequest, opts ...grpc.CallOption) (*pb.RpcAccountSelectResponse, error) AccountEnableLocalNetworkSync(ctx context.Context, in *pb.RpcAccountEnableLocalNetworkSyncRequest, opts ...grpc.CallOption) (*pb.RpcAccountEnableLocalNetworkSyncResponse, error) + AccountChangeJsonApiAddr(ctx context.Context, in *pb.RpcAccountChangeJsonApiAddrRequest, opts ...grpc.CallOption) (*pb.RpcAccountChangeJsonApiAddrResponse, error) AccountStop(ctx context.Context, in *pb.RpcAccountStopRequest, opts ...grpc.CallOption) (*pb.RpcAccountStopResponse, error) AccountMove(ctx context.Context, in *pb.RpcAccountMoveRequest, opts ...grpc.CallOption) (*pb.RpcAccountMoveResponse, error) AccountConfigUpdate(ctx context.Context, in *pb.RpcAccountConfigUpdateRequest, opts ...grpc.CallOption) (*pb.RpcAccountConfigUpdateResponse, error) @@ -959,6 +961,15 @@ func (c *clientCommandsClient) AccountEnableLocalNetworkSync(ctx context.Context return out, nil } +func (c *clientCommandsClient) AccountChangeJsonApiAddr(ctx context.Context, in *pb.RpcAccountChangeJsonApiAddrRequest, opts ...grpc.CallOption) (*pb.RpcAccountChangeJsonApiAddrResponse, error) { + out := new(pb.RpcAccountChangeJsonApiAddrResponse) + err := c.cc.Invoke(ctx, "/anytype.ClientCommands/AccountChangeJsonApiAddr", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *clientCommandsClient) AccountStop(ctx context.Context, in *pb.RpcAccountStopRequest, opts ...grpc.CallOption) (*pb.RpcAccountStopResponse, error) { out := new(pb.RpcAccountStopResponse) err := c.cc.Invoke(ctx, "/anytype.ClientCommands/AccountStop", in, out, opts...) @@ -3257,6 +3268,7 @@ type ClientCommandsServer interface { AccountRevertDeletion(context.Context, *pb.RpcAccountRevertDeletionRequest) *pb.RpcAccountRevertDeletionResponse AccountSelect(context.Context, *pb.RpcAccountSelectRequest) *pb.RpcAccountSelectResponse AccountEnableLocalNetworkSync(context.Context, *pb.RpcAccountEnableLocalNetworkSyncRequest) *pb.RpcAccountEnableLocalNetworkSyncResponse + AccountChangeJsonApiAddr(context.Context, *pb.RpcAccountChangeJsonApiAddrRequest) *pb.RpcAccountChangeJsonApiAddrResponse AccountStop(context.Context, *pb.RpcAccountStopRequest) *pb.RpcAccountStopResponse AccountMove(context.Context, *pb.RpcAccountMoveRequest) *pb.RpcAccountMoveResponse AccountConfigUpdate(context.Context, *pb.RpcAccountConfigUpdateRequest) *pb.RpcAccountConfigUpdateResponse @@ -3647,6 +3659,9 @@ func (*UnimplementedClientCommandsServer) AccountSelect(ctx context.Context, req func (*UnimplementedClientCommandsServer) AccountEnableLocalNetworkSync(ctx context.Context, req *pb.RpcAccountEnableLocalNetworkSyncRequest) *pb.RpcAccountEnableLocalNetworkSyncResponse { return nil } +func (*UnimplementedClientCommandsServer) AccountChangeJsonApiAddr(ctx context.Context, req *pb.RpcAccountChangeJsonApiAddrRequest) *pb.RpcAccountChangeJsonApiAddrResponse { + return nil +} func (*UnimplementedClientCommandsServer) AccountStop(ctx context.Context, req *pb.RpcAccountStopRequest) *pb.RpcAccountStopResponse { return nil } @@ -4867,6 +4882,24 @@ func _ClientCommands_AccountEnableLocalNetworkSync_Handler(srv interface{}, ctx return interceptor(ctx, in, info, handler) } +func _ClientCommands_AccountChangeJsonApiAddr_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(pb.RpcAccountChangeJsonApiAddrRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ClientCommandsServer).AccountChangeJsonApiAddr(ctx, in), nil + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/anytype.ClientCommands/AccountChangeJsonApiAddr", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ClientCommandsServer).AccountChangeJsonApiAddr(ctx, req.(*pb.RpcAccountChangeJsonApiAddrRequest)), nil + } + return interceptor(ctx, in, info, handler) +} + func _ClientCommands_AccountStop_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(pb.RpcAccountStopRequest) if err := dec(in); err != nil { @@ -9461,6 +9494,10 @@ var _ClientCommands_serviceDesc = grpc.ServiceDesc{ MethodName: "AccountEnableLocalNetworkSync", Handler: _ClientCommands_AccountEnableLocalNetworkSync_Handler, }, + { + MethodName: "AccountChangeJsonApiAddr", + Handler: _ClientCommands_AccountChangeJsonApiAddr_Handler, + }, { MethodName: "AccountStop", Handler: _ClientCommands_AccountStop_Handler, From 7c7f51b07c9c9adb77ea567221db20ccf63bee79 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Wed, 22 Jan 2025 17:32:27 +0100 Subject: [PATCH 211/279] GO-4459: Add new mocks and fix lint --- core/api/service.go | 2 - .../mock_service/mock_ClientCommandsServer.go | 49 +++++++++++++++++++ 2 files changed, 49 insertions(+), 2 deletions(-) diff --git a/core/api/service.go b/core/api/service.go index 84cd86be3..25c55bcdd 100644 --- a/core/api/service.go +++ b/core/api/service.go @@ -97,8 +97,6 @@ func (s *apiService) runServer() { fmt.Printf("API server ListenAndServe error: %v\n", err) } }() - - return } func (s *apiService) shutdown(ctx context.Context) (err error) { diff --git a/pb/service/mock_service/mock_ClientCommandsServer.go b/pb/service/mock_service/mock_ClientCommandsServer.go index a4b00d152..335613596 100644 --- a/pb/service/mock_service/mock_ClientCommandsServer.go +++ b/pb/service/mock_service/mock_ClientCommandsServer.go @@ -24,6 +24,55 @@ func (_m *MockClientCommandsServer) EXPECT() *MockClientCommandsServer_Expecter return &MockClientCommandsServer_Expecter{mock: &_m.Mock} } +// AccountChangeJsonApiAddr provides a mock function with given fields: _a0, _a1 +func (_m *MockClientCommandsServer) AccountChangeJsonApiAddr(_a0 context.Context, _a1 *pb.RpcAccountChangeJsonApiAddrRequest) *pb.RpcAccountChangeJsonApiAddrResponse { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for AccountChangeJsonApiAddr") + } + + var r0 *pb.RpcAccountChangeJsonApiAddrResponse + if rf, ok := ret.Get(0).(func(context.Context, *pb.RpcAccountChangeJsonApiAddrRequest) *pb.RpcAccountChangeJsonApiAddrResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pb.RpcAccountChangeJsonApiAddrResponse) + } + } + + return r0 +} + +// MockClientCommandsServer_AccountChangeJsonApiAddr_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'AccountChangeJsonApiAddr' +type MockClientCommandsServer_AccountChangeJsonApiAddr_Call struct { + *mock.Call +} + +// AccountChangeJsonApiAddr is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *pb.RpcAccountChangeJsonApiAddrRequest +func (_e *MockClientCommandsServer_Expecter) AccountChangeJsonApiAddr(_a0 interface{}, _a1 interface{}) *MockClientCommandsServer_AccountChangeJsonApiAddr_Call { + return &MockClientCommandsServer_AccountChangeJsonApiAddr_Call{Call: _e.mock.On("AccountChangeJsonApiAddr", _a0, _a1)} +} + +func (_c *MockClientCommandsServer_AccountChangeJsonApiAddr_Call) Run(run func(_a0 context.Context, _a1 *pb.RpcAccountChangeJsonApiAddrRequest)) *MockClientCommandsServer_AccountChangeJsonApiAddr_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*pb.RpcAccountChangeJsonApiAddrRequest)) + }) + return _c +} + +func (_c *MockClientCommandsServer_AccountChangeJsonApiAddr_Call) Return(_a0 *pb.RpcAccountChangeJsonApiAddrResponse) *MockClientCommandsServer_AccountChangeJsonApiAddr_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClientCommandsServer_AccountChangeJsonApiAddr_Call) RunAndReturn(run func(context.Context, *pb.RpcAccountChangeJsonApiAddrRequest) *pb.RpcAccountChangeJsonApiAddrResponse) *MockClientCommandsServer_AccountChangeJsonApiAddr_Call { + _c.Call.Return(run) + return _c +} + // AccountChangeNetworkConfigAndRestart provides a mock function with given fields: _a0, _a1 func (_m *MockClientCommandsServer) AccountChangeNetworkConfigAndRestart(_a0 context.Context, _a1 *pb.RpcAccountChangeNetworkConfigAndRestartRequest) *pb.RpcAccountChangeNetworkConfigAndRestartResponse { ret := _m.Called(_a0, _a1) From a35c0abaa42009d48c0e06e6afeef961b56dfd46 Mon Sep 17 00:00:00 2001 From: AnastasiaShemyakinskaya Date: Wed, 22 Jan 2025 22:49:07 +0100 Subject: [PATCH 212/279] GO-4889: fix json marshaller Signed-off-by: AnastasiaShemyakinskaya --- core/converter/pbc/pbc.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/core/converter/pbc/pbc.go b/core/converter/pbc/pbc.go index 020febbdc..af8cc7150 100644 --- a/core/converter/pbc/pbc.go +++ b/core/converter/pbc/pbc.go @@ -50,9 +50,11 @@ func (p *pbc) Convert(sbType model.SmartBlockType) []byte { }) } mo := &pb.SnapshotWithType{ - SbType: sbType, - Snapshot: snapshot, - DependantDetails: dependentDetails, + SbType: sbType, + Snapshot: snapshot, + } + if len(dependentDetails) > 0 { + mo.DependantDetails = dependentDetails } if p.isJSON { m := jsonpb.Marshaler{Indent: " "} From 4a54b186cbc340b4da7fffc3004d68b7d5a0ad06 Mon Sep 17 00:00:00 2001 From: kirillston Date: Wed, 22 Jan 2025 23:05:40 +0100 Subject: [PATCH 213/279] Fix linkpreview call --- core/linkpreview.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/linkpreview.go b/core/linkpreview.go index 450da53f9..2cb4f1ac0 100644 --- a/core/linkpreview.go +++ b/core/linkpreview.go @@ -24,7 +24,7 @@ func (mw *Middleware) LinkPreview(cctx context.Context, req *pb.RpcLinkPreviewRe } } - data, _, _, err := getService[linkpreview.LinkPreview](mw).Fetch(ctx, u.String()) + data, _, _, err := mustService[linkpreview.LinkPreview](mw).Fetch(ctx, u.String()) if err != nil { return &pb.RpcLinkPreviewResponse{ Error: &pb.RpcLinkPreviewResponseError{ From 999f583af23976011c7c2da0b20317c7060d8593 Mon Sep 17 00:00:00 2001 From: AnastasiaShemyakinskaya Date: Wed, 22 Jan 2025 23:20:59 +0100 Subject: [PATCH 214/279] GO-4889: add tests Signed-off-by: AnastasiaShemyakinskaya --- core/block/export/export_test.go | 134 +++++++++++++++++++++++++++++++ core/converter/pbc/pbc_test.go | 48 +++++++++-- 2 files changed, 177 insertions(+), 5 deletions(-) diff --git a/core/block/export/export_test.go b/core/block/export/export_test.go index cd33df3eb..74c2e0f7b 100644 --- a/core/block/export/export_test.go +++ b/core/block/export/export_test.go @@ -4,10 +4,13 @@ import ( "archive/zip" "context" "fmt" + "os" "path/filepath" "testing" "github.com/anyproto/any-sync/app" + "github.com/gogo/protobuf/jsonpb" + "github.com/gogo/protobuf/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" @@ -29,6 +32,7 @@ import ( "github.com/anyproto/anytype-heart/pkg/lib/pb/model" "github.com/anyproto/anytype-heart/space/spacecore/typeprovider/mock_typeprovider" "github.com/anyproto/anytype-heart/tests/testutil" + "github.com/anyproto/anytype-heart/util/pbtypes" ) func TestFileNamer_Get(t *testing.T) { @@ -1891,6 +1895,136 @@ func Test_docsForExport(t *testing.T) { assert.Nil(t, err) assert.Equal(t, 2, len(expCtx.docs)) }) + t.Run("include dependent details", func(t *testing.T) { + // given + storeFixture := objectstore.NewStoreFixture(t) + objectTypeId := "customObjectType" + objectTypeUniqueKey, err := domain.NewUniqueKey(smartblock.SmartBlockTypeObjectType, objectTypeId) + assert.Nil(t, err) + + objectID := "id" + targetBlockId := "targetBlockId" + storeFixture.AddObjects(t, spaceId, []spaceindex.TestObject{ + { + bundle.RelationKeyId: domain.String(objectID), + bundle.RelationKeyType: domain.String(objectTypeId), + bundle.RelationKeySpaceId: domain.String(spaceId), + }, + { + bundle.RelationKeyId: domain.String(targetBlockId), + bundle.RelationKeyType: domain.String(objectTypeId), + bundle.RelationKeySpaceId: domain.String(spaceId), + bundle.RelationKeyName: domain.String("test"), + }, + { + bundle.RelationKeyId: domain.String(objectTypeId), + bundle.RelationKeyUniqueKey: domain.String(objectTypeUniqueKey.Marshal()), + bundle.RelationKeyLayout: domain.Int64(int64(model.ObjectType_objectType)), + bundle.RelationKeyRecommendedRelations: domain.StringList([]string{addr.MissingObject}), + bundle.RelationKeySpaceId: domain.String(spaceId), + }, + }) + + objectGetter := mock_cache.NewMockObjectGetter(t) + + smartBlockTest := smarttest.New(objectID) + doc := smartBlockTest.NewState().SetDetails(domain.NewDetailsFromMap(map[domain.RelationKey]domain.Value{ + bundle.RelationKeyId: domain.String(objectID), + bundle.RelationKeyType: domain.String(objectTypeId), + })) + doc.AddRelationLinks(&model.RelationLink{ + Key: bundle.RelationKeyId.String(), + Format: model.RelationFormat_longtext, + }, &model.RelationLink{ + Key: bundle.RelationKeyType.String(), + Format: model.RelationFormat_longtext, + }) + smartBlockTest.Doc = doc + + smartBlockTest.AddBlock(simple.New(&model.Block{ + Id: objectID, + ChildrenIds: []string{"link"}, + Content: &model.BlockContentOfSmartblock{Smartblock: &model.BlockContentSmartblock{}}, + })) + smartBlockTest.AddBlock(simple.New(&model.Block{ + Id: "link", + Content: &model.BlockContentOfLink{Link: &model.BlockContentLink{ + TargetBlockId: targetBlockId, + }}, + })) + + smartBlockTest.SetSpaceId(spaceId) + objectType := smarttest.New(objectTypeId) + objectTypeDoc := objectType.NewState().SetDetails(domain.NewDetailsFromMap(map[domain.RelationKey]domain.Value{ + bundle.RelationKeyId: domain.String(objectTypeId), + bundle.RelationKeyType: domain.String(objectTypeId), + })) + objectTypeDoc.AddRelationLinks(&model.RelationLink{ + Key: bundle.RelationKeyId.String(), + Format: model.RelationFormat_longtext, + }, &model.RelationLink{ + Key: bundle.RelationKeyType.String(), + Format: model.RelationFormat_longtext, + }) + objectType.Doc = objectTypeDoc + objectType.SetType(smartblock.SmartBlockTypeObjectType) + objectType.SetSpaceId(spaceId) + + objectGetter.EXPECT().GetObject(context.Background(), objectID).Return(smartBlockTest, nil) + objectGetter.EXPECT().GetObject(context.Background(), objectTypeId).Return(objectType, nil) + + a := &app.App{} + mockSender := mock_event.NewMockSender(t) + a.Register(testutil.PrepareMock(context.Background(), a, mockSender)) + service := process.New() + err = service.Init(a) + assert.Nil(t, err) + + notifications := mock_notifications.NewMockNotifications(t) + + e := &export{ + objectStore: storeFixture, + picker: objectGetter, + processService: service, + notificationService: notifications, + } + + // when + path, success, err := e.Export(context.Background(), pb.RpcObjectListExportRequest{ + SpaceId: spaceId, + Path: t.TempDir(), + ObjectIds: []string{objectID}, + Format: model.Export_Protobuf, + IncludeFiles: true, + IsJson: true, + NoProgress: true, + IncludeDependentDetails: true, + }) + + // then + assert.Nil(t, err) + assert.Equal(t, 2, success) + + objectPath := filepath.Join(path, objectsDirectory, objectID+".pb.json") + file, err := os.Open(objectPath) + assert.Nil(t, err) + var snapshot pb.SnapshotWithType + err = jsonpb.Unmarshal(file, &snapshot) + assert.Nil(t, err) + + expected := []*pb.DependantDetail{ + { + Id: targetBlockId, + Details: &types.Struct{Fields: map[string]*types.Value{ + bundle.RelationKeyId.String(): pbtypes.String(targetBlockId), + bundle.RelationKeyType.String(): pbtypes.String(objectTypeId), + bundle.RelationKeySpaceId.String(): pbtypes.String(spaceId), + bundle.RelationKeyName.String(): pbtypes.String("test"), + }}, + }, + } + assert.Equal(t, expected, snapshot.DependantDetails) + }) } func Test_provideFileName(t *testing.T) { diff --git a/core/converter/pbc/pbc_test.go b/core/converter/pbc/pbc_test.go index 420043f7d..ca4f3fe33 100644 --- a/core/converter/pbc/pbc_test.go +++ b/core/converter/pbc/pbc_test.go @@ -3,17 +3,55 @@ package pbc import ( "testing" + "github.com/gogo/protobuf/jsonpb" + "github.com/gogo/protobuf/types" "github.com/stretchr/testify/assert" "github.com/anyproto/anytype-heart/core/block/editor/state" "github.com/anyproto/anytype-heart/core/block/editor/template" + "github.com/anyproto/anytype-heart/core/domain" + "github.com/anyproto/anytype-heart/pb" + "github.com/anyproto/anytype-heart/pkg/lib/bundle" + "github.com/anyproto/anytype-heart/pkg/lib/database" "github.com/anyproto/anytype-heart/pkg/lib/pb/model" + "github.com/anyproto/anytype-heart/util/pbtypes" ) func TestPbc_Convert(t *testing.T) { - s := state.NewDoc("root", nil).(*state.State) - template.InitTemplate(s, template.WithTitle) - c := NewConverter(s, false, nil) - result := c.Convert(model.SmartBlockType_Page) - assert.NotEmpty(t, result) + t.Run("success", func(t *testing.T) { + s := state.NewDoc("root", nil).(*state.State) + template.InitTemplate(s, template.WithTitle) + c := NewConverter(s, false, nil) + result := c.Convert(model.SmartBlockType_Page) + assert.NotEmpty(t, result) + }) + t.Run("dependent details", func(t *testing.T) { + s := state.NewDoc("root", nil).(*state.State) + template.InitTemplate(s, template.WithTitle) + records := []database.Record{ + { + Details: domain.NewDetailsFromMap(map[domain.RelationKey]domain.Value{ + bundle.RelationKeyId: domain.String("test"), + bundle.RelationKeyName: domain.String("test"), + }), + }, + } + c := NewConverter(s, true, records) + result := c.Convert(model.SmartBlockType_Page) + assert.NotEmpty(t, result) + + var resultSnapshot pb.SnapshotWithType + err := jsonpb.UnmarshalString(string(result), &resultSnapshot) + assert.Nil(t, err) + expected := []*pb.DependantDetail{ + { + Id: "test", + Details: &types.Struct{Fields: map[string]*types.Value{ + bundle.RelationKeyId.String(): pbtypes.String("test"), + bundle.RelationKeyName.String(): pbtypes.String("test"), + }}, + }, + } + assert.Equal(t, expected, resultSnapshot.DependantDetails) + }) } From 0087afeae7dbb52d8e8e1dec682de7fed08e7fdb Mon Sep 17 00:00:00 2001 From: AnastasiaShemyakinskaya Date: Wed, 22 Jan 2025 23:24:30 +0100 Subject: [PATCH 215/279] GO-4889: fix import Signed-off-by: AnastasiaShemyakinskaya --- core/block/import/pb/converter.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/block/import/pb/converter.go b/core/block/import/pb/converter.go index fc21e5713..e6544d974 100644 --- a/core/block/import/pb/converter.go +++ b/core/block/import/pb/converter.go @@ -285,7 +285,7 @@ func (p *Pb) getSnapshotFromFile(rd io.ReadCloser, name string) (*common.Snapsho defer rd.Close() if filepath.Ext(name) == ".json" { snapshot := &pb.SnapshotWithType{} - um := jsonpb.Unmarshaler{} + um := jsonpb.Unmarshaler{AllowUnknownFields: true} if uErr := um.Unmarshal(rd, snapshot); uErr != nil { return nil, fmt.Errorf("PB:GetSnapshot %w", uErr) } From 0640c23d5938844461ab01f34a872d060a808036 Mon Sep 17 00:00:00 2001 From: Sergey Date: Thu, 23 Jan 2025 14:28:42 +0100 Subject: [PATCH 216/279] GO-4146: Fix collection name --- space/spacecore/storage/anystorage/clientstorage.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/space/spacecore/storage/anystorage/clientstorage.go b/space/spacecore/storage/anystorage/clientstorage.go index b822d95ff..327958922 100644 --- a/space/spacecore/storage/anystorage/clientstorage.go +++ b/space/spacecore/storage/anystorage/clientstorage.go @@ -8,6 +8,7 @@ import ( "github.com/anyproto/any-store/anyenc" "github.com/anyproto/any-store/query" "github.com/anyproto/any-sync/commonspace/headsync/headstorage" + "github.com/anyproto/any-sync/commonspace/object/tree/objecttree" "github.com/anyproto/any-sync/commonspace/object/tree/treechangeproto" "github.com/anyproto/any-sync/commonspace/spacestorage" ) @@ -80,7 +81,7 @@ func (r *clientStorage) HasTree(ctx context.Context, id string) (has bool, err e func (r *clientStorage) TreeRoot(ctx context.Context, id string) (root *treechangeproto.RawTreeChangeWithId, err error) { // it should be faster to do it that way, instead of calling TreeStorage - coll, err := r.SpaceStorage.AnyStore().OpenCollection(ctx, id) + coll, err := r.SpaceStorage.AnyStore().OpenCollection(ctx, objecttree.CollName) if err != nil { return nil, err } From e0f39ee3fc3ee918997cc7affe02ec3bf67661e0 Mon Sep 17 00:00:00 2001 From: Mikhail Date: Thu, 23 Jan 2025 14:55:31 +0100 Subject: [PATCH 217/279] GO-4937 Fix graylog overflow (#2041) --- metrics/interceptors.go | 78 +++++++++++++++++++++++++++++------------ 1 file changed, 55 insertions(+), 23 deletions(-) diff --git a/metrics/interceptors.go b/metrics/interceptors.go index 466a5e3de..61d356299 100644 --- a/metrics/interceptors.go +++ b/metrics/interceptors.go @@ -6,6 +6,7 @@ import ( "os" "path/filepath" "strings" + "sync" "time" "github.com/samber/lo" @@ -27,11 +28,33 @@ const ( ) var ( - // every duration will be added to the previous ones - UnaryTraceCollections = []time.Duration{time.Second * 3, time.Second * 7, time.Second * 10, time.Second * 30, time.Second * 50} // 3, 10, 20, 50, 100 - // UnaryWarningInProgressIndex specify the index of UnaryTraceCollections when we will send the warning log in-progress without waiting for the command to finish - UnaryWarningInProgressIndex = 1 + maxDuration = time.Second * 10 + cache = new(methodsCache) ) + +type methodsCache struct { + methods map[string]struct{} + mu sync.RWMutex +} + +func (c *methodsCache) addMethod(method string) { + c.mu.Lock() + defer c.mu.Unlock() + + if c.methods == nil { + c.methods = make(map[string]struct{}) + } + c.methods[method] = struct{}{} +} + +func (c *methodsCache) hasMethod(method string) bool { + c.mu.RLock() + defer c.mu.RUnlock() + + _, exists := c.methods[method] + return exists +} + var excludedMethods = []string{ "BlockSetCarriage", "BlockTextSetText", @@ -174,31 +197,40 @@ func SharedLongMethodsInterceptor(ctx context.Context, req any, methodName strin lastTrace := atomic.NewString("") l := log.With("method", methodName) go func() { - loop: - for i, duration := range UnaryTraceCollections { - select { - case <-doneCh: - break loop - case <-time.After(duration): - trace := debug.Stack(true) - // double check, because we can have a race and the stack trace can be taken after the method is already finished - if stackTraceHasMethod(methodName, trace) { - lastTrace.Store(string(trace)) - if i == UnaryWarningInProgressIndex { - traceCompressed := debug.CompressBytes(trace) - l.With("ver", 2).With("in_progress", true).With("goroutines", traceCompressed).With("total", time.Since(start).Milliseconds()).Warnf("grpc unary request is taking too long") - } - } + select { + case <-doneCh: + break + case <-time.After(maxDuration): + trace := debug.Stack(true) + // double check, because we can have a race and the stack trace can be taken after the method is already finished + if !cache.hasMethod(methodName) && stackTraceHasMethod(methodName, trace) { + lastTrace.Store(string(trace)) + traceCompressed := debug.CompressBytes(trace) + l.With("ver", 2). + With("in_progress", true). + With("goroutines", traceCompressed). + With("total", time.Since(start).Milliseconds()). + Warnf("grpc unary request is taking too long") + cache.addMethod(methodName) } } }() ctx = context.WithValue(ctx, CtxKeyRPC, methodName) resp, err := actualCall(ctx, req) close(doneCh) - if len(UnaryTraceCollections) > 0 && time.Since(start) > UnaryTraceCollections[0] { - // todo: save long stack trace to files - lastTraceB := debug.CompressBytes([]byte(lastTrace.String())) - l.With("ver", 2).With("error", err).With("in_progress", false).With("goroutines", lastTraceB).With("total", time.Since(start).Milliseconds()).Warnf("grpc unary request took too long") + if time.Since(start) > maxDuration { + if !cache.hasMethod(methodName) { + // todo: save long stack trace to files + lastTraceB := debug.CompressBytes([]byte(lastTrace.String())) + l.With("ver", 2). + With("error", err). + With("in_progress", false). + With("goroutines", lastTraceB). + With("total", time.Since(start).Milliseconds()). + Warnf("grpc unary request took too long") + cache.addMethod(methodName) + } + Service.Send( &LongMethodEvent{ methodName: methodName, From 0ce6d7abb867b86bef5716f41ce7387d41ab2133 Mon Sep 17 00:00:00 2001 From: AnastasiaShemyakinskaya Date: Thu, 23 Jan 2025 17:45:21 +0100 Subject: [PATCH 218/279] GO-4889: add state filters Signed-off-by: AnastasiaShemyakinskaya --- core/block/editor/state/state.go | 41 + core/block/export/export.go | 185 +- core/block/import/pb/converter.go | 2 +- core/publish/service.go | 21 + docs/proto.md | 18 + pb/commands.pb.go | 2703 ++++++++++++++++------------- pb/protos/commands.proto | 5 + 7 files changed, 1697 insertions(+), 1278 deletions(-) diff --git a/core/block/editor/state/state.go b/core/block/editor/state/state.go index 2d87af11c..3af2522b1 100644 --- a/core/block/editor/state/state.go +++ b/core/block/editor/state/state.go @@ -4,6 +4,7 @@ import ( "bytes" "errors" "fmt" + "slices" "strings" "time" @@ -139,6 +140,46 @@ type State struct { originalCreatedTimestamp int64 // pass here from snapshots when importing objects or used for derived objects such as relations, types and etc } +type Filters struct { + RelationsWhiteList []string + OnlyRootBlock bool +} + +func (s *State) Filter(filters *Filters) *State { + if filters == nil { + return s + } + if filters.OnlyRootBlock { + resultBlocks := make(map[string]simple.Block, 1) + resultBlocks[s.rootId] = s.blocks[s.rootId] + s.blocks = resultBlocks + } + if len(filters.RelationsWhiteList) > 0 { + s.cutRelations(filters) + } + if s.parent != nil { + s.parent = s.parent.Filter(filters) + } + return s +} + +func (s *State) cutRelations(filters *Filters) { + resultDetails := domain.NewDetails() + s.relationLinks = pbtypes.RelationLinks{} + for key, value := range s.details.Iterate() { + if slices.Contains(filters.RelationsWhiteList, key.String()) { + resultDetails.Set(key, value) + } + } + if resultDetails.Len() != len(filters.RelationsWhiteList) { + for key, value := range s.localDetails.Iterate() { + if slices.Contains(filters.RelationsWhiteList, key.String()) { + resultDetails.Set(key, value) + } + } + } +} + func (s *State) MigrationVersion() uint32 { return s.migrationVersion } diff --git a/core/block/export/export.go b/core/block/export/export.go index 9a0302621..60eff3576 100644 --- a/core/block/export/export.go +++ b/core/block/export/export.go @@ -134,51 +134,79 @@ func (e *export) finishWithNotification(spaceId string, exportFormat model.Expor }, nil) } +type Doc struct { + Details *domain.Details + isLink bool +} + +type Docs map[string]*Doc + +func (d Docs) transformToDetailsMap() map[string]*domain.Details { + details := make(map[string]*domain.Details, len(d)) + for id, doc := range d { + details[id] = doc.Details + } + return details +} + type exportContext struct { - spaceId string - docs map[string]*domain.Details - includeArchive bool - includeNested bool - includeFiles bool - format model.ExportFormat - isJson bool - reqIds []string - zip bool - path string + spaceId string + docs Docs + includeArchive bool + includeNested bool + includeFiles bool + format model.ExportFormat + isJson bool + reqIds []string + zip bool + path string + linkStateFilters *state.Filters + isLinkProcess bool *export } func newExportContext(e *export, req pb.RpcObjectListExportRequest) *exportContext { - return &exportContext{ - path: req.Path, - spaceId: req.SpaceId, - docs: map[string]*domain.Details{}, - includeArchive: req.IncludeArchived, - includeNested: req.IncludeNested, - includeFiles: req.IncludeFiles, - format: req.Format, - isJson: req.IsJson, - reqIds: req.ObjectIds, - zip: req.Zip, - export: e, + ec := &exportContext{ + path: req.Path, + spaceId: req.SpaceId, + docs: map[string]*Doc{}, + includeArchive: req.IncludeArchived, + includeNested: req.IncludeNested, + includeFiles: req.IncludeFiles, + format: req.Format, + isJson: req.IsJson, + reqIds: req.ObjectIds, + zip: req.Zip, + linkStateFilters: pbFiltersToState(req.LinksStateFilters), + export: e, } + return ec } func (e *exportContext) copy() *exportContext { return &exportContext{ - spaceId: e.spaceId, - docs: e.docs, - includeArchive: e.includeArchive, - includeNested: e.includeNested, - includeFiles: e.includeFiles, - format: e.format, - isJson: e.isJson, - reqIds: e.reqIds, - export: e.export, + spaceId: e.spaceId, + docs: e.docs, + includeArchive: e.includeArchive, + includeNested: e.includeNested, + includeFiles: e.includeFiles, + format: e.format, + isJson: e.isJson, + reqIds: e.reqIds, + export: e.export, + isLinkProcess: e.isLinkProcess, + linkStateFilters: e.linkStateFilters, } } +func (e *exportContext) getStateFilters(id string) *state.Filters { + if doc, ok := e.docs[id]; ok && doc.isLink { + return e.linkStateFilters + } + return nil +} + func (e *exportContext) exportObjects(ctx context.Context, queue process.Queue) (string, int, error) { var ( err error @@ -261,10 +289,11 @@ func (e *exportContext) exportDocs(ctx context.Context, succeed *int64, tasks []process.Task, ) []process.Task { + docsDetails := e.docs.transformToDetailsMap() for docId := range e.docs { did := docId task := func() { - if werr := e.writeDoc(ctx, wr, did); werr != nil { + if werr := e.writeDoc(ctx, wr, did, docsDetails); werr != nil { log.With("objectID", did).Warnf("can't export doc: %v", werr) } else { atomic.AddInt64(succeed, 1) @@ -277,7 +306,7 @@ func (e *exportContext) exportDocs(ctx context.Context, func (e *exportContext) exportGraphJson(ctx context.Context, succeed int, wr writer, queue process.Queue) int { mc := graphjson.NewMultiConverter(e.sbtProvider) - mc.SetKnownDocs(e.docs) + mc.SetKnownDocs(e.docs.transformToDetailsMap()) var werr error if succeed, werr = e.writeMultiDoc(ctx, mc, wr, queue); werr != nil { log.Warnf("can't export docs: %v", werr) @@ -291,7 +320,7 @@ func (e *exportContext) exportDotAndSVG(ctx context.Context, succeed int, wr wri format = dot.ExportFormatSVG } mc := dot.NewMultiConverter(format, e.sbtProvider) - mc.SetKnownDocs(e.docs) + mc.SetKnownDocs(e.docs.transformToDetailsMap()) var werr error if succeed, werr = e.writeMultiDoc(ctx, mc, wr, queue); werr != nil { log.Warnf("can't export docs: %v", werr) @@ -332,7 +361,7 @@ func (e *exportContext) getObjectsByIDs(isProtobuf bool) error { } for _, object := range res { id := object.Details.GetString(bundle.RelationKeyId) - e.docs[id] = object.Details + e.docs[id] = &Doc{Details: object.Details} } if isProtobuf { return e.processProtobuf() @@ -385,7 +414,7 @@ func (e *exportContext) processNotProtobuf() error { } if e.includeNested { for _, id := range ids { - e.addNestedObject(id, map[string]*domain.Details{}) + e.addNestedObject(id, map[string]*Doc{}) } } return nil @@ -426,7 +455,7 @@ func (e *exportContext) addDependentObjectsFromDataview() error { err error ) for id, details := range e.docs { - if isObjectWithDataview(details) { + if isObjectWithDataview(details.Details) { viewDependentObjectsIds, err = e.getViewDependentObjects(id, viewDependentObjectsIds) if err != nil { return err @@ -443,14 +472,17 @@ func (e *exportContext) addDependentObjectsFromDataview() error { } for _, object := range append(viewDependentObjects, templates...) { id := object.Details.GetString(bundle.RelationKeyId) - e.docs[id] = object.Details + e.docs[id] = &Doc{ + Details: object.Details, + isLink: e.isLinkProcess, + } } return nil } func (e *exportContext) getViewDependentObjects(id string, viewDependentObjectsIds []string) ([]string, error) { err := cache.Do(e.picker, id, func(sb sb.SmartBlock) error { - st := sb.NewState() + st := sb.NewState().Filter(e.getStateFilters(id)) viewDependentObjectsIds = append(viewDependentObjectsIds, objectlink.DependentObjectIDs(st, sb.Space(), objectlink.Flags{Blocks: true})...) return nil }) @@ -506,7 +538,7 @@ func (e *exportContext) addDerivedObjects() error { return nil } -func (e *exportContext) getRelationsAndTypes(notProcessedObjects map[string]*domain.Details, processedObjects map[string]struct{}) ([]string, []string, []string, error) { +func (e *exportContext) getRelationsAndTypes(notProcessedObjects map[string]*Doc, processedObjects map[string]struct{}) ([]string, []string, []string, error) { allRelations, allTypes, allSetOfList, err := e.collectDerivedObjects(notProcessedObjects) if err != nil { return nil, nil, nil, err @@ -525,11 +557,11 @@ func (e *exportContext) getRelationsAndTypes(notProcessedObjects map[string]*dom return allRelations, allTypes, allSetOfList, nil } -func (e *exportContext) collectDerivedObjects(objects map[string]*domain.Details) ([]string, []string, []string, error) { +func (e *exportContext) collectDerivedObjects(objects map[string]*Doc) ([]string, []string, []string, error) { var relations, objectsTypes, setOf []string for id := range objects { err := cache.Do(e.picker, id, func(b sb.SmartBlock) error { - state := b.NewState() + state := b.NewState().Filter(e.getStateFilters(id)) relations = lo.Union(relations, getObjectRelations(state)) details := state.CombinedDetails() if isObjectWithDataview(details) { @@ -582,7 +614,7 @@ func getDataviewRelations(state *state.State) ([]string, error) { } func (e *exportContext) getDerivedObjectsForTypes(allTypes []string, processedObjects map[string]struct{}) ([]string, []string, []string, error) { - notProceedTypes := make(map[string]*domain.Details) + notProceedTypes := make(map[string]*Doc) var relations, objectTypes []string for _, object := range allTypes { if _, ok := processedObjects[object]; ok { @@ -609,12 +641,13 @@ func (e *exportContext) getTemplatesRelationsAndTypes(allTypes []string, process if len(templates) == 0 { return nil, nil, nil, nil } - templatesToProcess := make(map[string]*domain.Details, len(templates)) + templatesToProcess := make(map[string]*Doc, len(templates)) for _, template := range templates { id := template.Details.GetString(bundle.RelationKeyId) if _, ok := e.docs[id]; !ok { - e.docs[id] = template.Details - templatesToProcess[id] = template.Details + templateDoc := &Doc{Details: template.Details, isLink: e.isLinkProcess} + e.docs[id] = templateDoc + templatesToProcess[id] = templateDoc } } templateRelations, templateType, templateSetOfList, err := e.getRelationsAndTypes(templatesToProcess, processedObjects) @@ -671,7 +704,7 @@ func (e *exportContext) addRelation(relation database.Record) { relationKey := domain.RelationKey(relation.Details.GetString(bundle.RelationKeyRelationKey)) if relationKey != "" && !bundle.HasRelation(relationKey) { id := relation.Details.GetString(bundle.RelationKeyId) - e.docs[id] = relation.Details + e.docs[id] = &Doc{Details: relation.Details, isLink: e.isLinkProcess} } } @@ -694,7 +727,7 @@ func (e *exportContext) addRelationOptions(relationKey string) error { } for _, option := range relationOptions { id := option.Details.GetString(bundle.RelationKeyId) - e.docs[id] = option.Details + e.docs[id] = &Doc{Details: option.Details, isLink: e.isLinkProcess} } return nil } @@ -748,7 +781,7 @@ func (e *exportContext) addObjectsAndCollectRecommendedRelations(objectTypes []d return nil, err } id := objectTypes[i].Details.GetString(bundle.RelationKeyId) - e.docs[id] = objectTypes[i].Details + e.docs[id] = &Doc{Details: objectTypes[i].Details, isLink: e.isLinkProcess} if uniqueKey.SmartblockType() == smartblock.SmartBlockTypeObjectType { key, err := domain.GetTypeKeyFromRawUniqueKey(rawUniqueKey) if err != nil { @@ -782,13 +815,13 @@ func (e *exportContext) addRecommendedRelations(recommendedRelations []string) e if bundle.IsSystemRelation(domain.RelationKey(uniqueKey.InternalKey())) { continue } - e.docs[id] = relation.Details + e.docs[id] = &Doc{Details: relation.Details, isLink: e.isLinkProcess} } return nil } func (e *exportContext) addNestedObjects(ids []string) error { - nestedDocs := make(map[string]*domain.Details, 0) + nestedDocs := make(map[string]*Doc, 0) for _, id := range ids { e.addNestedObject(id, nestedDocs) } @@ -798,6 +831,7 @@ func (e *exportContext) addNestedObjects(ids []string) error { exportCtxChild := e.copy() exportCtxChild.includeNested = false exportCtxChild.docs = nestedDocs + exportCtxChild.isLinkProcess = true err := exportCtxChild.processProtobuf() if err != nil { return err @@ -810,10 +844,20 @@ func (e *exportContext) addNestedObjects(ids []string) error { return nil } -func (e *exportContext) addNestedObject(id string, nestedDocs map[string]*domain.Details) { - links, err := e.objectStore.SpaceIndex(e.spaceId).GetOutboundLinksById(id) +func (e *exportContext) addNestedObject(id string, nestedDocs map[string]*Doc) { + var links []string + err := cache.Do(e.picker, id, func(sb sb.SmartBlock) error { + st := sb.NewState().Filter(e.getStateFilters(id)) + links = objectlink.DependentObjectIDs(st, sb.Space(), objectlink.Flags{ + Blocks: true, + Details: true, + Collection: true, + NoSystemRelations: true, + NoHiddenBundledRelations: true, + }) + return nil + }) if err != nil { - log.Errorf("export failed to get outbound links for id: %s", err) return } for _, link := range links { @@ -832,8 +876,9 @@ func (e *exportContext) addNestedObject(id string, nestedDocs map[string]*domain continue } if isLinkedObjectExist(rec) { - nestedDocs[link] = rec[0].Details - e.docs[link] = rec[0].Details + exportDoc := &Doc{Details: rec[0].Details, isLink: e.isLinkProcess} + nestedDocs[link] = exportDoc + e.docs[link] = exportDoc e.addNestedObject(link, nestedDocs) } } @@ -844,7 +889,7 @@ func (e *exportContext) fillLinkedFiles(id string) ([]string, error) { spaceIndex := e.objectStore.SpaceIndex(e.spaceId) var fileObjectsIds []string err := cache.Do(e.picker, id, func(b sb.SmartBlock) error { - b.NewState().IterateLinkedFiles(func(fileObjectId string) { + b.NewState().Filter(e.getStateFilters(id)).IterateLinkedFiles(func(fileObjectId string) { res, err := spaceIndex.Query(database.Query{ Filters: []database.FilterRequest{ { @@ -861,7 +906,7 @@ func (e *exportContext) fillLinkedFiles(id string) ([]string, error) { if len(res) == 0 { return } - e.docs[fileObjectId] = res[0].Details + e.docs[fileObjectId] = &Doc{Details: res[0].Details, isLink: e.isLinkProcess} fileObjectsIds = append(fileObjectsIds, fileObjectId) }) return nil @@ -885,7 +930,7 @@ func (e *exportContext) getExistedObjects(isProtobuf bool) error { } res = append(res, archivedObjects...) } - e.docs = make(map[string]*domain.Details, len(res)) + e.docs = make(map[string]*Doc, len(res)) for _, info := range res { objectSpaceID := e.spaceId if objectSpaceID == "" { @@ -899,15 +944,14 @@ func (e *exportContext) getExistedObjects(isProtobuf bool) error { if !objectValid(sbType, info, e.includeArchive, isProtobuf) { continue } - e.docs[info.Id] = info.Details - + e.docs[info.Id] = &Doc{Details: info.Details} } return nil } func (e *exportContext) listTargetTypesFromTemplates(ids []string) []string { for id, object := range e.docs { - if object.Has(bundle.RelationKeyTargetObjectType) { + if object.Details.Has(bundle.RelationKeyTargetObjectType) { ids = append(ids, id) } } @@ -950,13 +994,14 @@ func (e *exportContext) writeMultiDoc(ctx context.Context, mw converter.MultiCon return } -func (e *exportContext) writeDoc(ctx context.Context, wr writer, docId string) (err error) { +func (e *exportContext) writeDoc(ctx context.Context, wr writer, docId string, details map[string]*domain.Details) (err error) { return cache.Do(e.picker, docId, func(b sb.SmartBlock) error { st := b.NewState() if st.CombinedDetails().GetBool(bundle.RelationKeyIsDeleted) { return nil } + st = st.Filter(e.getStateFilters(docId)) if e.includeFiles && b.Type() == smartblock.SmartBlockTypeFileObject { fileName, err := e.saveFile(ctx, wr, b, e.spaceId == "") if err != nil { @@ -978,7 +1023,7 @@ func (e *exportContext) writeDoc(ctx context.Context, wr writer, docId string) ( case model.Export_JSON: conv = pbjson.NewConverter(st) } - conv.SetKnownDocs(e.docs) + conv.SetKnownDocs(details) result := conv.Convert(b.Type().ToProto()) var filename string if e.format == model.Export_Markdown { @@ -1198,7 +1243,7 @@ func cleanupFile(wr writer) { os.Remove(wr.Path()) } -func listObjectIds(docs map[string]*domain.Details) []string { +func listObjectIds(docs map[string]*Doc) []string { ids := make([]string, 0, len(docs)) for id := range docs { ids = append(ids, id) @@ -1209,3 +1254,13 @@ func listObjectIds(docs map[string]*domain.Details) []string { func isLinkedObjectExist(rec []database.Record) bool { return len(rec) > 0 && !rec[0].Details.GetBool(bundle.RelationKeyIsDeleted) } + +func pbFiltersToState(filters *pb.RpcObjectListExportStateFilters) *state.Filters { + if filters == nil { + return nil + } + return &state.Filters{ + RelationsWhiteList: filters.RelationsWhiteList, + OnlyRootBlock: filters.OnlyRootBlock, + } +} diff --git a/core/block/import/pb/converter.go b/core/block/import/pb/converter.go index fc21e5713..e6544d974 100644 --- a/core/block/import/pb/converter.go +++ b/core/block/import/pb/converter.go @@ -285,7 +285,7 @@ func (p *Pb) getSnapshotFromFile(rd io.ReadCloser, name string) (*common.Snapsho defer rd.Close() if filepath.Ext(name) == ".json" { snapshot := &pb.SnapshotWithType{} - um := jsonpb.Unmarshaler{} + um := jsonpb.Unmarshaler{AllowUnknownFields: true} if uErr := um.Unmarshal(rd, snapshot); uErr != nil { return nil, fmt.Errorf("PB:GetSnapshot %w", uErr) } diff --git a/core/publish/service.go b/core/publish/service.go index dc1c9f702..2947f3613 100644 --- a/core/publish/service.go +++ b/core/publish/service.go @@ -45,6 +45,23 @@ const ( indexFileName = "index.json.gz" ) +var publishingRelationsWhiteList = []string{ + bundle.RelationKeyName.String(), + bundle.RelationKeyDescription.String(), + bundle.RelationKeySnippet.String(), + bundle.RelationKeyType.String(), + bundle.RelationKeySpaceId.String(), + bundle.RelationKeyId.String(), + bundle.RelationKeyIconImage.String(), + bundle.RelationKeyIconEmoji.String(), + bundle.RelationKeyCoverType.String(), + bundle.RelationKeyCoverId.String(), + bundle.RelationKeyIsArchived.String(), + bundle.RelationKeyIsDeleted.String(), + bundle.RelationKeyDone.String(), + bundle.RelationKeyPicture.String(), +} + var log = logger.NewNamed(CName) var ErrLimitExceeded = errors.New("limit exceeded") @@ -130,6 +147,10 @@ func (s *service) exportToDir(ctx context.Context, spaceId, pageId string) (dirE Path: tempDir, ObjectIds: []string{pageId}, NoProgress: true, + LinksStateFilters: &pb.RpcObjectListExportStateFilters{ + RelationsWhiteList: publishingRelationsWhiteList, + OnlyRootBlock: true, + }, }) if err != nil { return diff --git a/docs/proto.md b/docs/proto.md index 2394c9964..e030166b8 100644 --- a/docs/proto.md +++ b/docs/proto.md @@ -918,6 +918,7 @@ - [Rpc.Object.ListExport.Request](#anytype-Rpc-Object-ListExport-Request) - [Rpc.Object.ListExport.Response](#anytype-Rpc-Object-ListExport-Response) - [Rpc.Object.ListExport.Response.Error](#anytype-Rpc-Object-ListExport-Response-Error) + - [Rpc.Object.ListExport.StateFilters](#anytype-Rpc-Object-ListExport-StateFilters) - [Rpc.Object.ListModifyDetailValues](#anytype-Rpc-Object-ListModifyDetailValues) - [Rpc.Object.ListModifyDetailValues.Request](#anytype-Rpc-Object-ListModifyDetailValues-Request) - [Rpc.Object.ListModifyDetailValues.Request.Operation](#anytype-Rpc-Object-ListModifyDetailValues-Request-Operation) @@ -15553,6 +15554,7 @@ Deletes the object, keys from the local store and unsubscribe from remote change | isJson | [bool](#bool) | | for protobuf export | | includeArchived | [bool](#bool) | | for migration | | noProgress | [bool](#bool) | | for integrations like raycast and web publishing | +| linksStateFilters | [Rpc.Object.ListExport.StateFilters](#anytype-Rpc-Object-ListExport-StateFilters) | | | @@ -15593,6 +15595,22 @@ Deletes the object, keys from the local store and unsubscribe from remote change + + +### Rpc.Object.ListExport.StateFilters + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| relationsWhiteList | [string](#string) | repeated | | +| onlyRootBlock | [bool](#bool) | | | + + + + + + ### Rpc.Object.ListModifyDetailValues diff --git a/pb/commands.pb.go b/pb/commands.pb.go index 84e0979bb..866388565 100644 --- a/pb/commands.pb.go +++ b/pb/commands.pb.go @@ -3468,7 +3468,7 @@ func (x RpcObjectListExportResponseErrorCode) String() string { } func (RpcObjectListExportResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 6, 47, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 6, 47, 2, 0, 0} } type RpcObjectImportRequestMode int32 @@ -29807,7 +29807,8 @@ type RpcObjectListExportRequest struct { // for migration IncludeArchived bool `protobuf:"varint,9,opt,name=includeArchived,proto3" json:"includeArchived,omitempty"` // for integrations like raycast and web publishing - NoProgress bool `protobuf:"varint,11,opt,name=noProgress,proto3" json:"noProgress,omitempty"` + NoProgress bool `protobuf:"varint,11,opt,name=noProgress,proto3" json:"noProgress,omitempty"` + LinksStateFilters *RpcObjectListExportStateFilters `protobuf:"bytes,12,opt,name=linksStateFilters,proto3" json:"linksStateFilters,omitempty"` } func (m *RpcObjectListExportRequest) Reset() { *m = RpcObjectListExportRequest{} } @@ -29913,6 +29914,65 @@ func (m *RpcObjectListExportRequest) GetNoProgress() bool { return false } +func (m *RpcObjectListExportRequest) GetLinksStateFilters() *RpcObjectListExportStateFilters { + if m != nil { + return m.LinksStateFilters + } + return nil +} + +type RpcObjectListExportStateFilters struct { + RelationsWhiteList []string `protobuf:"bytes,1,rep,name=relationsWhiteList,proto3" json:"relationsWhiteList,omitempty"` + OnlyRootBlock bool `protobuf:"varint,2,opt,name=onlyRootBlock,proto3" json:"onlyRootBlock,omitempty"` +} + +func (m *RpcObjectListExportStateFilters) Reset() { *m = RpcObjectListExportStateFilters{} } +func (m *RpcObjectListExportStateFilters) String() string { return proto.CompactTextString(m) } +func (*RpcObjectListExportStateFilters) ProtoMessage() {} +func (*RpcObjectListExportStateFilters) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 6, 47, 1} +} +func (m *RpcObjectListExportStateFilters) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcObjectListExportStateFilters) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcObjectListExportStateFilters.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcObjectListExportStateFilters) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcObjectListExportStateFilters.Merge(m, src) +} +func (m *RpcObjectListExportStateFilters) XXX_Size() int { + return m.Size() +} +func (m *RpcObjectListExportStateFilters) XXX_DiscardUnknown() { + xxx_messageInfo_RpcObjectListExportStateFilters.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcObjectListExportStateFilters proto.InternalMessageInfo + +func (m *RpcObjectListExportStateFilters) GetRelationsWhiteList() []string { + if m != nil { + return m.RelationsWhiteList + } + return nil +} + +func (m *RpcObjectListExportStateFilters) GetOnlyRootBlock() bool { + if m != nil { + return m.OnlyRootBlock + } + return false +} + type RpcObjectListExportResponse struct { Error *RpcObjectListExportResponseError `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` @@ -29924,7 +29984,7 @@ func (m *RpcObjectListExportResponse) Reset() { *m = RpcObjectListExport func (m *RpcObjectListExportResponse) String() string { return proto.CompactTextString(m) } func (*RpcObjectListExportResponse) ProtoMessage() {} func (*RpcObjectListExportResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 6, 47, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 6, 47, 2} } func (m *RpcObjectListExportResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -29990,7 +30050,7 @@ func (m *RpcObjectListExportResponseError) Reset() { *m = RpcObjectListE func (m *RpcObjectListExportResponseError) String() string { return proto.CompactTextString(m) } func (*RpcObjectListExportResponseError) ProtoMessage() {} func (*RpcObjectListExportResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 6, 47, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 6, 47, 2, 0} } func (m *RpcObjectListExportResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -71511,6 +71571,7 @@ func init() { proto.RegisterType((*RpcObjectApplyTemplateResponseError)(nil), "anytype.Rpc.Object.ApplyTemplate.Response.Error") proto.RegisterType((*RpcObjectListExport)(nil), "anytype.Rpc.Object.ListExport") proto.RegisterType((*RpcObjectListExportRequest)(nil), "anytype.Rpc.Object.ListExport.Request") + proto.RegisterType((*RpcObjectListExportStateFilters)(nil), "anytype.Rpc.Object.ListExport.StateFilters") proto.RegisterType((*RpcObjectListExportResponse)(nil), "anytype.Rpc.Object.ListExport.Response") proto.RegisterType((*RpcObjectListExportResponseError)(nil), "anytype.Rpc.Object.ListExport.Response.Error") proto.RegisterType((*RpcObjectImport)(nil), "anytype.Rpc.Object.Import") @@ -72331,1239 +72392,1243 @@ func init() { func init() { proto.RegisterFile("pb/protos/commands.proto", fileDescriptor_8261c968b2e6f45c) } var fileDescriptor_8261c968b2e6f45c = []byte{ - // 19701 bytes of a gzipped FileDescriptorProto + // 19766 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xfd, 0x7d, 0x9c, 0x24, 0x49, 0x55, 0x2f, 0x8c, 0x4f, 0x65, 0x56, 0x55, 0x77, 0x9f, 0x7e, 0x99, 0x9a, 0xdc, 0x99, 0xd9, 0xd9, - 0xd8, 0x65, 0x76, 0x9d, 0x5d, 0x96, 0x75, 0x59, 0x7a, 0x97, 0x05, 0x91, 0x5d, 0xf6, 0xad, 0xba, + 0xd8, 0x65, 0x76, 0x9c, 0x5d, 0x96, 0x75, 0x59, 0x7a, 0x97, 0x05, 0x91, 0x5d, 0xf6, 0xad, 0xba, 0xba, 0xba, 0xbb, 0x76, 0xbb, 0xab, 0xda, 0xac, 0xea, 0x19, 0x56, 0xaf, 0xbf, 0xba, 0x39, 0x55, - 0xd1, 0xdd, 0xb9, 0x53, 0x9d, 0x59, 0x66, 0x66, 0xf7, 0xec, 0xf0, 0xfb, 0xdc, 0xe7, 0x8a, 0xb8, - 0x02, 0x22, 0x17, 0x11, 0x51, 0x01, 0x79, 0x67, 0xe1, 0x82, 0x02, 0xf2, 0x7e, 0x41, 0x05, 0xe4, - 0x45, 0x5e, 0x44, 0x44, 0x10, 0x41, 0x74, 0x1f, 0x41, 0x10, 0xf1, 0x7e, 0xe4, 0xf2, 0xe8, 0x73, - 0x05, 0x51, 0x78, 0x7c, 0x3e, 0x19, 0x11, 0xf9, 0x12, 0xd5, 0x95, 0x59, 0x91, 0xd5, 0x95, 0xd5, - 0x8b, 0x3c, 0xff, 0x65, 0x46, 0x46, 0x9e, 0x38, 0x71, 0xbe, 0x27, 0x22, 0x4e, 0x44, 0x9c, 0x38, - 0x01, 0xa7, 0xba, 0xe7, 0x6f, 0xee, 0x5a, 0xa6, 0x63, 0xda, 0x37, 0xb7, 0xcc, 0x9d, 0x1d, 0xcd, - 0x68, 0xdb, 0xf3, 0xe4, 0x5d, 0x99, 0xd0, 0x8c, 0x4b, 0xce, 0xa5, 0x2e, 0x46, 0xd7, 0x75, 0x2f, - 0x6c, 0xdd, 0xdc, 0xd1, 0xcf, 0xdf, 0xdc, 0x3d, 0x7f, 0xf3, 0x8e, 0xd9, 0xc6, 0x1d, 0xef, 0x07, - 0xf2, 0xc2, 0xb2, 0xa3, 0x1b, 0xa2, 0x72, 0x75, 0xcc, 0x96, 0xd6, 0xb1, 0x1d, 0xd3, 0xc2, 0x2c, - 0xe7, 0xc9, 0xa0, 0x48, 0xbc, 0x87, 0x0d, 0xc7, 0xa3, 0x70, 0xd5, 0x96, 0x69, 0x6e, 0x75, 0x30, - 0xfd, 0x76, 0x7e, 0x77, 0xf3, 0x66, 0xdb, 0xb1, 0x76, 0x5b, 0x0e, 0xfb, 0x7a, 0x4d, 0xef, 0xd7, - 0x36, 0xb6, 0x5b, 0x96, 0xde, 0x75, 0x4c, 0x8b, 0xe6, 0x38, 0xf3, 0xc9, 0x17, 0x4e, 0x82, 0xac, - 0x76, 0x5b, 0xe8, 0xdb, 0x13, 0x20, 0x17, 0xbb, 0x5d, 0xf4, 0x51, 0x09, 0x60, 0x19, 0x3b, 0x67, - 0xb1, 0x65, 0xeb, 0xa6, 0x81, 0x8e, 0xc2, 0x84, 0x8a, 0x7f, 0x66, 0x17, 0xdb, 0xce, 0xed, 0xd9, - 0xe7, 0x7c, 0x5d, 0xce, 0xa0, 0x87, 0x25, 0x98, 0x54, 0xb1, 0xdd, 0x35, 0x0d, 0x1b, 0x2b, 0xf7, - 0x40, 0x0e, 0x5b, 0x96, 0x69, 0x9d, 0xca, 0x5c, 0x93, 0xb9, 0x61, 0xfa, 0xd6, 0x1b, 0xe7, 0x59, - 0xf5, 0xe7, 0xd5, 0x6e, 0x6b, 0xbe, 0xd8, 0xed, 0xce, 0x07, 0x94, 0xe6, 0xbd, 0x9f, 0xe6, 0xcb, - 0xee, 0x1f, 0x2a, 0xfd, 0x51, 0x39, 0x05, 0x13, 0x7b, 0x34, 0xc3, 0x29, 0xe9, 0x9a, 0xcc, 0x0d, - 0x53, 0xaa, 0xf7, 0xea, 0x7e, 0x69, 0x63, 0x47, 0xd3, 0x3b, 0xf6, 0x29, 0x99, 0x7e, 0x61, 0xaf, - 0xe8, 0x35, 0x19, 0xc8, 0x11, 0x22, 0x4a, 0x09, 0xb2, 0x2d, 0xb3, 0x8d, 0x49, 0xf1, 0x73, 0xb7, - 0xde, 0x2c, 0x5e, 0xfc, 0x7c, 0xc9, 0x6c, 0x63, 0x95, 0xfc, 0xac, 0x5c, 0x03, 0xd3, 0x9e, 0x58, - 0x02, 0x36, 0xc2, 0x49, 0x67, 0x6e, 0x85, 0xac, 0x9b, 0x5f, 0x99, 0x84, 0x6c, 0x75, 0x63, 0x75, - 0xb5, 0x70, 0x44, 0x39, 0x06, 0xb3, 0x1b, 0xd5, 0xfb, 0xaa, 0xb5, 0x73, 0xd5, 0x66, 0x59, 0x55, - 0x6b, 0x6a, 0x21, 0xa3, 0xcc, 0xc2, 0xd4, 0x42, 0x71, 0xb1, 0x59, 0xa9, 0xae, 0x6f, 0x34, 0x0a, - 0x12, 0x7a, 0x85, 0x0c, 0x73, 0x75, 0xec, 0x2c, 0xe2, 0x3d, 0xbd, 0x85, 0xeb, 0x8e, 0xe6, 0x60, - 0xf4, 0x82, 0x8c, 0x2f, 0x4c, 0x65, 0xc3, 0x2d, 0xd4, 0xff, 0xc4, 0x2a, 0xf0, 0xa4, 0x7d, 0x15, - 0xe0, 0x29, 0xcc, 0xb3, 0xbf, 0xe7, 0x43, 0x69, 0x6a, 0x98, 0xce, 0x99, 0x27, 0xc0, 0x74, 0xe8, - 0x9b, 0x32, 0x07, 0xb0, 0x50, 0x2c, 0xdd, 0xb7, 0xac, 0xd6, 0x36, 0xaa, 0x8b, 0x85, 0x23, 0xee, - 0xfb, 0x52, 0x4d, 0x2d, 0xb3, 0xf7, 0x0c, 0xfa, 0x6e, 0x26, 0x04, 0xe6, 0x22, 0x0f, 0xe6, 0xfc, - 0x60, 0x66, 0xfa, 0x00, 0x8a, 0x5e, 0xef, 0x83, 0xb3, 0xcc, 0x81, 0xf3, 0xa4, 0x64, 0xe4, 0xd2, - 0x07, 0xe8, 0x21, 0x09, 0x26, 0xeb, 0xdb, 0xbb, 0x4e, 0xdb, 0xbc, 0x68, 0xa0, 0x29, 0x1f, 0x19, - 0xf4, 0xcd, 0xb0, 0x4c, 0xee, 0xe2, 0x65, 0x72, 0xc3, 0xfe, 0x4a, 0x30, 0x0a, 0x11, 0xd2, 0x78, - 0x95, 0x2f, 0x8d, 0x22, 0x27, 0x8d, 0x27, 0x88, 0x12, 0x4a, 0x5f, 0x0e, 0x2f, 0x7d, 0x2a, 0xe4, - 0xea, 0x5d, 0xad, 0x85, 0xd1, 0xa7, 0x64, 0x98, 0x59, 0xc5, 0xda, 0x1e, 0x2e, 0x76, 0xbb, 0x96, - 0xb9, 0x87, 0x51, 0x29, 0xd0, 0xd7, 0x53, 0x30, 0x61, 0xbb, 0x99, 0x2a, 0x6d, 0x52, 0x83, 0x29, - 0xd5, 0x7b, 0x55, 0x4e, 0x03, 0xe8, 0x6d, 0x6c, 0x38, 0xba, 0xa3, 0x63, 0xfb, 0x94, 0x74, 0x8d, - 0x7c, 0xc3, 0x94, 0x1a, 0x4a, 0x41, 0xdf, 0x96, 0x44, 0x75, 0x8c, 0x70, 0x31, 0x1f, 0xe6, 0x20, - 0x42, 0xaa, 0xaf, 0x95, 0x44, 0x74, 0x6c, 0x20, 0xb9, 0x64, 0xb2, 0x7d, 0x4b, 0x26, 0xb9, 0x70, + 0xd1, 0xdd, 0xb9, 0x53, 0x9d, 0x59, 0x66, 0x66, 0xf7, 0x6c, 0xf3, 0xfb, 0xdc, 0xe7, 0x8a, 0xb8, + 0x82, 0x22, 0x17, 0x11, 0x51, 0x51, 0x01, 0x79, 0x59, 0xbd, 0xa2, 0x88, 0xbc, 0x5f, 0x50, 0x11, + 0x05, 0x04, 0x51, 0x11, 0x41, 0x04, 0xd1, 0x7d, 0x04, 0x41, 0xc4, 0xfb, 0x91, 0xcb, 0xa3, 0xcf, + 0x15, 0x44, 0xe1, 0xf1, 0xf9, 0x64, 0x44, 0xe4, 0x4b, 0x54, 0x57, 0x66, 0x45, 0x56, 0x57, 0x56, + 0x2f, 0xf2, 0xfc, 0x97, 0x19, 0x19, 0x79, 0xe2, 0xc4, 0xf9, 0x9e, 0x88, 0x38, 0x11, 0x71, 0xe2, + 0x04, 0x9c, 0xe9, 0x5e, 0xba, 0xad, 0x6b, 0x99, 0x8e, 0x69, 0xdf, 0xd6, 0x32, 0x77, 0x76, 0x34, + 0xa3, 0x6d, 0xcf, 0x93, 0x77, 0x65, 0x42, 0x33, 0xf6, 0x9d, 0xfd, 0x2e, 0x46, 0x37, 0x76, 0x2f, + 0x6f, 0xdd, 0xd6, 0xd1, 0x2f, 0xdd, 0xd6, 0xbd, 0x74, 0xdb, 0x8e, 0xd9, 0xc6, 0x1d, 0xef, 0x07, + 0xf2, 0xc2, 0xb2, 0xa3, 0x9b, 0xa3, 0x72, 0x75, 0xcc, 0x96, 0xd6, 0xb1, 0x1d, 0xd3, 0xc2, 0x2c, + 0xe7, 0xe9, 0xa0, 0x48, 0xbc, 0x87, 0x0d, 0xc7, 0xa3, 0x70, 0xdd, 0x96, 0x69, 0x6e, 0x75, 0x30, + 0xfd, 0x76, 0x69, 0x77, 0xf3, 0x36, 0xdb, 0xb1, 0x76, 0x5b, 0x0e, 0xfb, 0x7a, 0xae, 0xf7, 0x6b, + 0x1b, 0xdb, 0x2d, 0x4b, 0xef, 0x3a, 0xa6, 0x45, 0x73, 0x9c, 0x7f, 0xf1, 0xcb, 0x27, 0x41, 0x56, + 0xbb, 0x2d, 0xf4, 0xd5, 0x09, 0x90, 0x8b, 0xdd, 0x2e, 0xfa, 0xa0, 0x04, 0xb0, 0x8c, 0x9d, 0x0b, + 0xd8, 0xb2, 0x75, 0xd3, 0x40, 0xc7, 0x61, 0x42, 0xc5, 0x3f, 0xb0, 0x8b, 0x6d, 0xe7, 0xae, 0xec, + 0x8b, 0xbe, 0x28, 0x67, 0xd0, 0x63, 0x12, 0x4c, 0xaa, 0xd8, 0xee, 0x9a, 0x86, 0x8d, 0x95, 0xfb, + 0x21, 0x87, 0x2d, 0xcb, 0xb4, 0xce, 0x64, 0xce, 0x65, 0x6e, 0x9e, 0xbe, 0xe3, 0x96, 0x79, 0x56, + 0xfd, 0x79, 0xb5, 0xdb, 0x9a, 0x2f, 0x76, 0xbb, 0xf3, 0x01, 0xa5, 0x79, 0xef, 0xa7, 0xf9, 0xb2, + 0xfb, 0x87, 0x4a, 0x7f, 0x54, 0xce, 0xc0, 0xc4, 0x1e, 0xcd, 0x70, 0x46, 0x3a, 0x97, 0xb9, 0x79, + 0x4a, 0xf5, 0x5e, 0xdd, 0x2f, 0x6d, 0xec, 0x68, 0x7a, 0xc7, 0x3e, 0x23, 0xd3, 0x2f, 0xec, 0x15, + 0xbd, 0x2e, 0x03, 0x39, 0x42, 0x44, 0x29, 0x41, 0xb6, 0x65, 0xb6, 0x31, 0x29, 0x7e, 0xee, 0x8e, + 0xdb, 0xc4, 0x8b, 0x9f, 0x2f, 0x99, 0x6d, 0xac, 0x92, 0x9f, 0x95, 0x73, 0x30, 0xed, 0x89, 0x25, + 0x60, 0x23, 0x9c, 0x74, 0xfe, 0x0e, 0xc8, 0xba, 0xf9, 0x95, 0x49, 0xc8, 0x56, 0x37, 0x56, 0x57, + 0x0b, 0xc7, 0x94, 0x13, 0x30, 0xbb, 0x51, 0x7d, 0xb0, 0x5a, 0xbb, 0x58, 0x6d, 0x96, 0x55, 0xb5, + 0xa6, 0x16, 0x32, 0xca, 0x2c, 0x4c, 0x2d, 0x14, 0x17, 0x9b, 0x95, 0xea, 0xfa, 0x46, 0xa3, 0x20, + 0xa1, 0x57, 0xcb, 0x30, 0x57, 0xc7, 0xce, 0x22, 0xde, 0xd3, 0x5b, 0xb8, 0xee, 0x68, 0x0e, 0x46, + 0x2f, 0xcd, 0xf8, 0xc2, 0x54, 0x36, 0xdc, 0x42, 0xfd, 0x4f, 0xac, 0x02, 0xcf, 0x38, 0x50, 0x01, + 0x9e, 0xc2, 0x3c, 0xfb, 0x7b, 0x3e, 0x94, 0xa6, 0x86, 0xe9, 0x9c, 0x7f, 0x1a, 0x4c, 0x87, 0xbe, + 0x29, 0x73, 0x00, 0x0b, 0xc5, 0xd2, 0x83, 0xcb, 0x6a, 0x6d, 0xa3, 0xba, 0x58, 0x38, 0xe6, 0xbe, + 0x2f, 0xd5, 0xd4, 0x32, 0x7b, 0xcf, 0xa0, 0xaf, 0x67, 0x42, 0x60, 0x2e, 0xf2, 0x60, 0xce, 0x0f, + 0x66, 0xa6, 0x0f, 0xa0, 0xe8, 0x97, 0x7c, 0x70, 0x96, 0x39, 0x70, 0x9e, 0x91, 0x8c, 0x5c, 0xfa, + 0x00, 0x3d, 0x2a, 0xc1, 0x64, 0x7d, 0x7b, 0xd7, 0x69, 0x9b, 0x57, 0x0c, 0x34, 0xe5, 0x23, 0x83, + 0xbe, 0x1c, 0x96, 0xc9, 0xbd, 0xbc, 0x4c, 0x6e, 0x3e, 0x58, 0x09, 0x46, 0x21, 0x42, 0x1a, 0xbf, + 0xe8, 0x4b, 0xa3, 0xc8, 0x49, 0xe3, 0x69, 0xa2, 0x84, 0xd2, 0x97, 0xc3, 0xcf, 0x3d, 0x1b, 0x72, + 0xf5, 0xae, 0xd6, 0xc2, 0xe8, 0x8f, 0x64, 0x98, 0x59, 0xc5, 0xda, 0x1e, 0x2e, 0x76, 0xbb, 0x96, + 0xb9, 0x87, 0x51, 0x29, 0xd0, 0xd7, 0x33, 0x30, 0x61, 0xbb, 0x99, 0x2a, 0x6d, 0x52, 0x83, 0x29, + 0xd5, 0x7b, 0x55, 0xce, 0x02, 0xe8, 0x6d, 0x6c, 0x38, 0xba, 0xa3, 0x63, 0xfb, 0x8c, 0x74, 0x4e, + 0xbe, 0x79, 0x4a, 0x0d, 0xa5, 0xa0, 0xaf, 0x4a, 0xa2, 0x3a, 0x46, 0xb8, 0x98, 0x0f, 0x73, 0x10, + 0x21, 0xd5, 0xd7, 0x4b, 0x22, 0x3a, 0x36, 0x90, 0x5c, 0x32, 0xd9, 0xfe, 0x7a, 0x26, 0xb9, 0x70, 0xdd, 0x1c, 0xd5, 0x5a, 0xb3, 0xbe, 0x51, 0x5a, 0x69, 0xd6, 0xd7, 0x8b, 0xa5, 0x72, 0x01, 0x2b, - 0xc7, 0xa1, 0x40, 0x1e, 0x9b, 0x95, 0x7a, 0x73, 0xb1, 0xbc, 0x5a, 0x6e, 0x94, 0x17, 0x0b, 0x9b, - 0x8a, 0x02, 0x73, 0x6a, 0xf9, 0x27, 0x36, 0xca, 0xf5, 0x46, 0x73, 0xa9, 0x58, 0x59, 0x2d, 0x2f, + 0x27, 0xa1, 0x40, 0x1e, 0x9b, 0x95, 0x7a, 0x73, 0xb1, 0xbc, 0x5a, 0x6e, 0x94, 0x17, 0x0b, 0x9b, + 0x8a, 0x02, 0x73, 0x6a, 0xf9, 0x7b, 0x36, 0xca, 0xf5, 0x46, 0x73, 0xa9, 0x58, 0x59, 0x2d, 0x2f, 0x16, 0xb6, 0xdc, 0x9f, 0x57, 0x2b, 0x6b, 0x95, 0x46, 0x53, 0x2d, 0x17, 0x4b, 0x2b, 0xe5, 0xc5, - 0xc2, 0xb6, 0x72, 0x39, 0x5c, 0x56, 0xad, 0x35, 0x8b, 0xeb, 0xeb, 0x6a, 0xed, 0x6c, 0xb9, 0xc9, + 0xc2, 0xb6, 0x72, 0x35, 0x5c, 0x55, 0xad, 0x35, 0x8b, 0xeb, 0xeb, 0x6a, 0xed, 0x42, 0xb9, 0xc9, 0xfe, 0xa8, 0x17, 0x74, 0x5a, 0x50, 0xa3, 0x59, 0x5f, 0x29, 0xaa, 0xe5, 0xe2, 0xc2, 0x6a, 0xb9, - 0xf0, 0x00, 0x7a, 0x96, 0x0c, 0xb3, 0x6b, 0xda, 0x05, 0x5c, 0xdf, 0xd6, 0x2c, 0xac, 0x9d, 0xef, - 0x60, 0x74, 0xad, 0x00, 0x9e, 0xe8, 0x53, 0x61, 0xbc, 0xca, 0x3c, 0x5e, 0x37, 0xf7, 0x11, 0x30, - 0x57, 0x44, 0x04, 0x60, 0xff, 0xe2, 0x37, 0x83, 0x15, 0x0e, 0xb0, 0x27, 0x27, 0xa4, 0x97, 0x0c, - 0xb1, 0x9f, 0x7b, 0x14, 0x20, 0x86, 0x1e, 0x91, 0x61, 0xae, 0x62, 0xec, 0xe9, 0x0e, 0x5e, 0xc6, - 0x06, 0xb6, 0xdc, 0x71, 0x40, 0x08, 0x86, 0x87, 0xe5, 0x10, 0x0c, 0x4b, 0x3c, 0x0c, 0xb7, 0xf4, - 0x11, 0x1b, 0x5f, 0x46, 0xc4, 0x68, 0x7b, 0x15, 0x4c, 0xe9, 0x24, 0x5f, 0x49, 0x6f, 0x33, 0x89, - 0x05, 0x09, 0xca, 0x75, 0x30, 0x4b, 0x5f, 0x96, 0xf4, 0x0e, 0xbe, 0x0f, 0x5f, 0x62, 0xe3, 0x2e, - 0x9f, 0x88, 0x7e, 0xc9, 0x6f, 0x7c, 0x15, 0x0e, 0xcb, 0x1f, 0x4b, 0xca, 0x54, 0x32, 0x30, 0x5f, - 0xfc, 0x68, 0x68, 0x7e, 0xfb, 0x5a, 0x99, 0x8e, 0xbe, 0x2f, 0xc1, 0x74, 0xdd, 0x31, 0xbb, 0xae, - 0xca, 0xea, 0xc6, 0x96, 0x18, 0xb8, 0x1f, 0x0f, 0xb7, 0xb1, 0x12, 0x0f, 0xee, 0x13, 0xfa, 0xc8, - 0x31, 0x54, 0x40, 0x44, 0x0b, 0xfb, 0xb6, 0xdf, 0xc2, 0x96, 0x38, 0x54, 0x6e, 0x4d, 0x44, 0xed, - 0x07, 0xb0, 0x7d, 0xbd, 0x58, 0x86, 0x82, 0xa7, 0x66, 0x4e, 0x69, 0xd7, 0xb2, 0xb0, 0xe1, 0x88, - 0x81, 0xf0, 0x97, 0x61, 0x10, 0x56, 0x78, 0x10, 0x6e, 0x8d, 0x51, 0x66, 0xaf, 0x94, 0x14, 0xdb, - 0xd8, 0x07, 0x7d, 0x34, 0xef, 0xe3, 0xd0, 0xfc, 0xf1, 0xe4, 0x6c, 0x25, 0x83, 0x74, 0x65, 0x08, - 0x44, 0x8f, 0x43, 0xc1, 0x1d, 0x93, 0x4a, 0x8d, 0xca, 0xd9, 0x72, 0xb3, 0x52, 0x3d, 0x5b, 0x69, - 0x94, 0x0b, 0x18, 0xbd, 0x48, 0x86, 0x19, 0xca, 0x9a, 0x8a, 0xf7, 0xcc, 0x0b, 0x82, 0xbd, 0xde, - 0x23, 0x09, 0x8d, 0x85, 0x70, 0x09, 0x11, 0x2d, 0xe3, 0x17, 0x13, 0x18, 0x0b, 0x31, 0xe4, 0x1e, - 0x4d, 0xbd, 0xd5, 0xbe, 0x66, 0xb0, 0xd5, 0xa7, 0xb5, 0xf4, 0xed, 0xad, 0x5e, 0x9c, 0x05, 0xa0, - 0x95, 0x3c, 0xab, 0xe3, 0x8b, 0x68, 0x2d, 0xc0, 0x84, 0x53, 0xdb, 0xcc, 0x40, 0xb5, 0x95, 0xfa, - 0xa9, 0xed, 0x7b, 0xc2, 0x63, 0xd6, 0x02, 0x8f, 0xde, 0x4d, 0x91, 0xe2, 0x76, 0x39, 0x89, 0x9e, - 0x1d, 0x7a, 0x8a, 0x22, 0xf1, 0x56, 0xe7, 0x55, 0x30, 0x45, 0x1e, 0xab, 0xda, 0x0e, 0x66, 0x6d, - 0x28, 0x48, 0x50, 0xce, 0xc0, 0x0c, 0xcd, 0xd8, 0x32, 0x0d, 0xb7, 0x3e, 0x59, 0x92, 0x81, 0x4b, - 0x73, 0x41, 0x6c, 0x59, 0x58, 0x73, 0x4c, 0x8b, 0xd0, 0xc8, 0x51, 0x10, 0x43, 0x49, 0xe8, 0x1b, - 0x7e, 0x2b, 0x2c, 0x73, 0x9a, 0xf3, 0xc4, 0x24, 0x55, 0x49, 0xa6, 0x37, 0x7b, 0xc3, 0xb5, 0x3f, - 0xda, 0xea, 0x9a, 0x2e, 0xda, 0x4b, 0x64, 0x6a, 0x87, 0x95, 0x93, 0xa0, 0xb0, 0x54, 0x37, 0x6f, - 0xa9, 0x56, 0x6d, 0x94, 0xab, 0x8d, 0xc2, 0x66, 0x5f, 0x8d, 0xda, 0x42, 0xaf, 0xcd, 0x42, 0xf6, - 0x5e, 0x53, 0x37, 0xd0, 0x43, 0x19, 0x4e, 0x25, 0x0c, 0xec, 0x5c, 0x34, 0xad, 0x0b, 0x7e, 0x43, - 0x0d, 0x12, 0xe2, 0xb1, 0x09, 0x54, 0x49, 0x1e, 0xa8, 0x4a, 0xd9, 0x7e, 0xaa, 0xf4, 0x2b, 0x61, - 0x55, 0xba, 0x83, 0x57, 0xa5, 0xeb, 0xfb, 0xc8, 0xdf, 0x65, 0x3e, 0xa2, 0x03, 0xf8, 0x98, 0xdf, - 0x01, 0xdc, 0xcd, 0xc1, 0xf8, 0x78, 0x31, 0x32, 0xc9, 0x00, 0xfc, 0x52, 0xaa, 0x0d, 0xbf, 0x1f, - 0xd4, 0x5b, 0x11, 0x50, 0x6f, 0xf7, 0xe9, 0x13, 0xf4, 0xfd, 0x5d, 0xc7, 0x03, 0xfb, 0xbb, 0x89, - 0x0b, 0xca, 0x09, 0x38, 0xb6, 0x58, 0x59, 0x5a, 0x2a, 0xab, 0xe5, 0x6a, 0xa3, 0x59, 0x2d, 0x37, - 0xce, 0xd5, 0xd4, 0xfb, 0x0a, 0x1d, 0xf4, 0x1a, 0x19, 0xc0, 0x95, 0x50, 0x49, 0x33, 0x5a, 0xb8, - 0x23, 0xd6, 0xa3, 0xff, 0x2f, 0x29, 0x59, 0x9f, 0x10, 0xd0, 0x8f, 0x80, 0xf3, 0xe5, 0x92, 0x78, - 0xab, 0x8c, 0x24, 0x96, 0x0c, 0xd4, 0x37, 0x3d, 0x1a, 0x6c, 0xcf, 0xcb, 0xe0, 0xa8, 0x47, 0x8f, - 0x65, 0xef, 0x3f, 0xed, 0x7b, 0x6b, 0x16, 0xe6, 0x18, 0x2c, 0xde, 0x3c, 0xfe, 0x39, 0x19, 0x91, + 0xf0, 0x30, 0x7a, 0x81, 0x0c, 0xb3, 0x6b, 0xda, 0x65, 0x5c, 0xdf, 0xd6, 0x2c, 0xac, 0x5d, 0xea, + 0x60, 0x74, 0x83, 0x00, 0x9e, 0xe8, 0x8f, 0xc2, 0x78, 0x95, 0x79, 0xbc, 0x6e, 0xeb, 0x23, 0x60, + 0xae, 0x88, 0x08, 0xc0, 0xfe, 0xc5, 0x6f, 0x06, 0x2b, 0x1c, 0x60, 0xcf, 0x4c, 0x48, 0x2f, 0x19, + 0x62, 0x3f, 0xf4, 0x04, 0x40, 0x0c, 0x3d, 0x2e, 0xc3, 0x5c, 0xc5, 0xd8, 0xd3, 0x1d, 0xbc, 0x8c, + 0x0d, 0x6c, 0xb9, 0xe3, 0x80, 0x10, 0x0c, 0x8f, 0xc9, 0x21, 0x18, 0x96, 0x78, 0x18, 0x6e, 0xef, + 0x23, 0x36, 0xbe, 0x8c, 0x88, 0xd1, 0xf6, 0x3a, 0x98, 0xd2, 0x49, 0xbe, 0x92, 0xde, 0x66, 0x12, + 0x0b, 0x12, 0x94, 0x1b, 0x61, 0x96, 0xbe, 0x2c, 0xe9, 0x1d, 0xfc, 0x20, 0xde, 0x67, 0xe3, 0x2e, + 0x9f, 0x88, 0x7e, 0xdc, 0x6f, 0x7c, 0x15, 0x0e, 0xcb, 0xef, 0x4a, 0xca, 0x54, 0x32, 0x30, 0x5f, + 0xf1, 0x44, 0x68, 0x7e, 0x07, 0x5a, 0x99, 0x8e, 0xbe, 0x29, 0xc1, 0x74, 0xdd, 0x31, 0xbb, 0xae, + 0xca, 0xea, 0xc6, 0x96, 0x18, 0xb8, 0x1f, 0x0e, 0xb7, 0xb1, 0x12, 0x0f, 0xee, 0xd3, 0xfa, 0xc8, + 0x31, 0x54, 0x40, 0x44, 0x0b, 0xfb, 0xaa, 0xdf, 0xc2, 0x96, 0x38, 0x54, 0xee, 0x48, 0x44, 0xed, + 0x5b, 0xb0, 0x7d, 0xbd, 0x42, 0x86, 0x82, 0xa7, 0x66, 0x4e, 0x69, 0xd7, 0xb2, 0xb0, 0xe1, 0x88, + 0x81, 0xf0, 0x97, 0x61, 0x10, 0x56, 0x78, 0x10, 0xee, 0x88, 0x51, 0x66, 0xaf, 0x94, 0x14, 0xdb, + 0xd8, 0xfb, 0x7c, 0x34, 0x1f, 0xe4, 0xd0, 0xfc, 0xee, 0xe4, 0x6c, 0x25, 0x83, 0x74, 0x65, 0x08, + 0x44, 0x4f, 0x42, 0xc1, 0x1d, 0x93, 0x4a, 0x8d, 0xca, 0x85, 0x72, 0xb3, 0x52, 0xbd, 0x50, 0x69, + 0x94, 0x0b, 0x18, 0xbd, 0x5c, 0x86, 0x19, 0xca, 0x9a, 0x8a, 0xf7, 0xcc, 0xcb, 0x82, 0xbd, 0xde, + 0xe3, 0x09, 0x8d, 0x85, 0x70, 0x09, 0x11, 0x2d, 0xe3, 0xc7, 0x12, 0x18, 0x0b, 0x31, 0xe4, 0x9e, + 0x48, 0xbd, 0xd5, 0x81, 0x66, 0xb0, 0xd5, 0xa7, 0xb5, 0xf4, 0xed, 0xad, 0x5e, 0x91, 0x05, 0xa0, + 0x95, 0xbc, 0xa0, 0xe3, 0x2b, 0x68, 0x2d, 0xc0, 0x84, 0x53, 0xdb, 0xcc, 0x40, 0xb5, 0x95, 0xfa, + 0xa9, 0xed, 0xbb, 0xc2, 0x63, 0xd6, 0x02, 0x8f, 0xde, 0xad, 0x91, 0xe2, 0x76, 0x39, 0x89, 0x9e, + 0x1d, 0x7a, 0x8a, 0x22, 0xf1, 0x56, 0xe7, 0x75, 0x30, 0x45, 0x1e, 0xab, 0xda, 0x0e, 0x66, 0x6d, + 0x28, 0x48, 0x50, 0xce, 0xc3, 0x0c, 0xcd, 0xd8, 0x32, 0x0d, 0xb7, 0x3e, 0x59, 0x92, 0x81, 0x4b, + 0x73, 0x41, 0x6c, 0x59, 0x58, 0x73, 0x4c, 0x8b, 0xd0, 0xc8, 0x51, 0x10, 0x43, 0x49, 0xe8, 0x4b, + 0x7e, 0x2b, 0x2c, 0x73, 0x9a, 0xf3, 0xf4, 0x24, 0x55, 0x49, 0xa6, 0x37, 0x7b, 0xc3, 0xb5, 0x3f, + 0xda, 0xea, 0x9a, 0x2e, 0xda, 0x4b, 0x64, 0x6a, 0x87, 0x95, 0xd3, 0xa0, 0xb0, 0x54, 0x37, 0x6f, + 0xa9, 0x56, 0x6d, 0x94, 0xab, 0x8d, 0xc2, 0x66, 0x5f, 0x8d, 0xda, 0x42, 0xaf, 0xcf, 0x42, 0xf6, + 0x01, 0x53, 0x37, 0xd0, 0xa3, 0x19, 0x4e, 0x25, 0x0c, 0xec, 0x5c, 0x31, 0xad, 0xcb, 0x7e, 0x43, + 0x0d, 0x12, 0xe2, 0xb1, 0x09, 0x54, 0x49, 0x1e, 0xa8, 0x4a, 0xd9, 0x7e, 0xaa, 0xf4, 0x93, 0x61, + 0x55, 0xba, 0x9b, 0x57, 0xa5, 0x9b, 0xfa, 0xc8, 0xdf, 0x65, 0x3e, 0xa2, 0x03, 0xf8, 0x90, 0xdf, + 0x01, 0xdc, 0xc7, 0xc1, 0xf8, 0x54, 0x31, 0x32, 0xc9, 0x00, 0xfc, 0x4c, 0xaa, 0x0d, 0xbf, 0x1f, + 0xd4, 0x5b, 0x11, 0x50, 0x6f, 0xf7, 0xe9, 0x13, 0xf4, 0x83, 0x5d, 0xc7, 0xc3, 0x07, 0xbb, 0x89, + 0xcb, 0xca, 0x29, 0x38, 0xb1, 0x58, 0x59, 0x5a, 0x2a, 0xab, 0xe5, 0x6a, 0xa3, 0x59, 0x2d, 0x37, + 0x2e, 0xd6, 0xd4, 0x07, 0x0b, 0x1d, 0xf4, 0x3a, 0x19, 0xc0, 0x95, 0x50, 0x49, 0x33, 0x5a, 0xb8, + 0x23, 0xd6, 0xa3, 0xff, 0x2f, 0x29, 0x59, 0x9f, 0x10, 0xd0, 0x8f, 0x80, 0xf3, 0x55, 0x92, 0x78, + 0xab, 0x8c, 0x24, 0x96, 0x0c, 0xd4, 0x37, 0x3e, 0x11, 0x6c, 0xcf, 0xab, 0xe0, 0xb8, 0x47, 0x8f, + 0x65, 0xef, 0x3f, 0xed, 0x7b, 0x73, 0x16, 0xe6, 0x18, 0x2c, 0xde, 0x3c, 0xfe, 0x45, 0x19, 0x91, 0x89, 0x3c, 0x82, 0x49, 0x36, 0x6d, 0xf7, 0xba, 0x77, 0xff, 0x5d, 0x59, 0x86, 0xe9, 0x2e, 0xb6, - 0x76, 0x74, 0xdb, 0xd6, 0x4d, 0x83, 0x2e, 0xc8, 0xcd, 0xdd, 0xfa, 0x58, 0x5f, 0xe2, 0x64, 0xed, + 0x76, 0x74, 0xdb, 0xd6, 0x4d, 0x83, 0x2e, 0xc8, 0xcd, 0xdd, 0xf1, 0x64, 0x5f, 0xe2, 0x64, 0xed, 0x72, 0x7e, 0x5d, 0xb3, 0x1c, 0xbd, 0xa5, 0x77, 0x35, 0xc3, 0x59, 0x0f, 0x32, 0xab, 0xe1, 0x3f, - 0xd1, 0x0b, 0x13, 0x4e, 0x6b, 0xf8, 0x9a, 0x44, 0xa8, 0xc4, 0xef, 0x25, 0x98, 0x92, 0xc4, 0x12, - 0x4c, 0xa6, 0x16, 0x1f, 0x4d, 0x55, 0x2d, 0xfa, 0xe0, 0xbd, 0xa5, 0x5c, 0x01, 0x27, 0x2a, 0xd5, + 0xd1, 0xcb, 0x12, 0x4e, 0x6b, 0xf8, 0x9a, 0x44, 0xa8, 0xc4, 0x6f, 0x25, 0x98, 0x92, 0xc4, 0x12, + 0x4c, 0xa6, 0x16, 0x1f, 0x4c, 0x55, 0x2d, 0xfa, 0xe0, 0xbd, 0xa5, 0x5c, 0x03, 0xa7, 0x2a, 0xd5, 0x52, 0x4d, 0x55, 0xcb, 0xa5, 0x46, 0x73, 0xbd, 0xac, 0xae, 0x55, 0xea, 0xf5, 0x4a, 0xad, 0x5a, - 0x3f, 0x48, 0x6b, 0x47, 0x9f, 0x94, 0x7d, 0x8d, 0x59, 0xc4, 0xad, 0x8e, 0x6e, 0x60, 0x74, 0xf7, - 0x01, 0x15, 0x86, 0x5f, 0xf5, 0x11, 0xc7, 0x99, 0x95, 0x1f, 0x81, 0xf3, 0xab, 0x93, 0xe3, 0xdc, - 0x9f, 0xe0, 0x7f, 0xe0, 0xe6, 0xff, 0x88, 0x0c, 0xc7, 0x42, 0x0d, 0x51, 0xc5, 0x3b, 0x23, 0x5b, - 0xc9, 0xfb, 0xb9, 0x70, 0xdb, 0xad, 0xf0, 0x98, 0xf6, 0xb3, 0xa6, 0xf7, 0xb1, 0x11, 0x01, 0xeb, - 0x9b, 0x7c, 0x58, 0x57, 0x39, 0x58, 0x9f, 0x3a, 0x04, 0xcd, 0x64, 0xc8, 0xfe, 0x4e, 0xaa, 0xc8, - 0x5e, 0x01, 0x27, 0xd6, 0x8b, 0x6a, 0xa3, 0x52, 0xaa, 0xac, 0x17, 0xdd, 0x71, 0x34, 0x34, 0x64, - 0x47, 0x98, 0xeb, 0x3c, 0xe8, 0x7d, 0xf1, 0xfd, 0x40, 0x16, 0xae, 0xea, 0xdf, 0xd1, 0x96, 0xb6, - 0x35, 0x63, 0x0b, 0x23, 0x5d, 0x04, 0xea, 0x45, 0x98, 0x68, 0x91, 0xec, 0x14, 0xe7, 0xf0, 0xd6, - 0x4d, 0x4c, 0x5f, 0x4e, 0x4b, 0x50, 0xbd, 0x5f, 0xd1, 0x3b, 0xc2, 0x0a, 0xd1, 0xe0, 0x15, 0xe2, - 0xae, 0x78, 0xf0, 0xf6, 0xf1, 0x1d, 0xa1, 0x1b, 0x9f, 0xf1, 0x75, 0xe3, 0x1c, 0xa7, 0x1b, 0xa5, - 0x83, 0x91, 0x4f, 0xa6, 0x26, 0x7f, 0xf4, 0x68, 0xe8, 0x00, 0x22, 0xb5, 0x49, 0x8f, 0x1e, 0x15, - 0xfa, 0x76, 0xf7, 0xaf, 0x94, 0x21, 0xbf, 0x88, 0x3b, 0x58, 0x74, 0x25, 0xf2, 0x5b, 0x92, 0xe8, - 0x86, 0x08, 0x85, 0x81, 0xd2, 0x8e, 0x5e, 0x1d, 0x71, 0xf4, 0x1d, 0x6c, 0x3b, 0xda, 0x4e, 0x97, - 0x88, 0x5a, 0x56, 0x83, 0x04, 0xf4, 0xf3, 0x92, 0xc8, 0x76, 0x49, 0x4c, 0x31, 0xff, 0x31, 0xd6, - 0x14, 0x3f, 0x27, 0xc1, 0x64, 0x1d, 0x3b, 0x35, 0xab, 0x8d, 0x2d, 0x54, 0x0f, 0x30, 0xba, 0x06, - 0xa6, 0x09, 0x28, 0xee, 0x34, 0xd3, 0xc7, 0x29, 0x9c, 0xa4, 0x5c, 0x0f, 0x73, 0xfe, 0x2b, 0xf9, + 0x3f, 0x4c, 0x6b, 0x47, 0x1f, 0x91, 0x7d, 0x8d, 0x59, 0xc4, 0xad, 0x8e, 0x6e, 0x60, 0x74, 0xdf, + 0x21, 0x15, 0x86, 0x5f, 0xf5, 0x11, 0xc7, 0x99, 0x95, 0x1f, 0x81, 0xf3, 0x6b, 0x93, 0xe3, 0xdc, + 0x9f, 0xe0, 0x7f, 0xe0, 0xe6, 0xff, 0xb8, 0x0c, 0x27, 0x42, 0x0d, 0x51, 0xc5, 0x3b, 0x23, 0x5b, + 0xc9, 0xfb, 0xa1, 0x70, 0xdb, 0xad, 0xf0, 0x98, 0xf6, 0xb3, 0xa6, 0x0f, 0xb0, 0x11, 0x01, 0xeb, + 0x1b, 0x7d, 0x58, 0x57, 0x39, 0x58, 0x9f, 0x3d, 0x04, 0xcd, 0x64, 0xc8, 0xfe, 0x46, 0xaa, 0xc8, + 0x5e, 0x03, 0xa7, 0xd6, 0x8b, 0x6a, 0xa3, 0x52, 0xaa, 0xac, 0x17, 0xdd, 0x71, 0x34, 0x34, 0x64, + 0x47, 0x98, 0xeb, 0x3c, 0xe8, 0x7d, 0xf1, 0xfd, 0x9d, 0x2c, 0x5c, 0xd7, 0xbf, 0xa3, 0x2d, 0x6d, + 0x6b, 0xc6, 0x16, 0x46, 0xba, 0x08, 0xd4, 0x8b, 0x30, 0xd1, 0x22, 0xd9, 0x29, 0xce, 0xe1, 0xad, + 0x9b, 0x98, 0xbe, 0x9c, 0x96, 0xa0, 0x7a, 0xbf, 0xa2, 0xb7, 0x85, 0x15, 0xa2, 0xc1, 0x2b, 0xc4, + 0xbd, 0xf1, 0xe0, 0x1d, 0xe0, 0x3b, 0x42, 0x37, 0x3e, 0xe6, 0xeb, 0xc6, 0x45, 0x4e, 0x37, 0x4a, + 0x87, 0x23, 0x9f, 0x4c, 0x4d, 0xfe, 0xf0, 0x89, 0xd0, 0x01, 0x44, 0x6a, 0x93, 0x1e, 0x3d, 0x2a, + 0xf4, 0xed, 0xee, 0x5f, 0x23, 0x43, 0x7e, 0x11, 0x77, 0xb0, 0xe8, 0x4a, 0xe4, 0x57, 0x24, 0xd1, + 0x0d, 0x11, 0x0a, 0x03, 0xa5, 0x1d, 0xbd, 0x3a, 0xe2, 0xe8, 0x3b, 0xd8, 0x76, 0xb4, 0x9d, 0x2e, + 0x11, 0xb5, 0xac, 0x06, 0x09, 0xe8, 0x87, 0x25, 0x91, 0xed, 0x92, 0x98, 0x62, 0xfe, 0x63, 0xac, + 0x29, 0x7e, 0x42, 0x82, 0xc9, 0x3a, 0x76, 0x6a, 0x56, 0x1b, 0x5b, 0xa8, 0x1e, 0x60, 0x74, 0x0e, + 0xa6, 0x09, 0x28, 0xee, 0x34, 0xd3, 0xc7, 0x29, 0x9c, 0xa4, 0xdc, 0x04, 0x73, 0xfe, 0x2b, 0xf9, 0x9d, 0x75, 0xe3, 0x3d, 0xa9, 0xe8, 0x1f, 0x33, 0xa2, 0xbb, 0xb8, 0x6c, 0xc9, 0x90, 0x71, 0x13, - 0xd1, 0x4a, 0xc5, 0x76, 0x64, 0x63, 0x49, 0xa5, 0xbf, 0xd1, 0xf5, 0x36, 0x09, 0x60, 0xc3, 0xb0, - 0x3d, 0xb9, 0x3e, 0x3e, 0x81, 0x5c, 0xd1, 0x3f, 0x67, 0x92, 0xcd, 0x62, 0x82, 0x72, 0x22, 0x24, - 0xf6, 0xba, 0x04, 0x6b, 0x0b, 0x91, 0xc4, 0xd2, 0x97, 0xd9, 0x57, 0xe7, 0x20, 0x7f, 0x4e, 0xeb, - 0x74, 0xb0, 0x83, 0xbe, 0x26, 0x41, 0xbe, 0x64, 0x61, 0xcd, 0xc1, 0x61, 0xd1, 0x21, 0x98, 0xb4, - 0x4c, 0xd3, 0x59, 0xd7, 0x9c, 0x6d, 0x26, 0x37, 0xff, 0x9d, 0x39, 0x0c, 0xfc, 0x76, 0xb8, 0xfb, - 0xb8, 0x9b, 0x17, 0xdd, 0x8f, 0x72, 0xb5, 0xa5, 0x05, 0xcd, 0xd3, 0x42, 0x22, 0xfa, 0x0f, 0x04, - 0x93, 0x3b, 0x06, 0xde, 0x31, 0x0d, 0xbd, 0xe5, 0xd9, 0x9c, 0xde, 0x3b, 0xfa, 0x90, 0x2f, 0xd3, - 0x05, 0x4e, 0xa6, 0xf3, 0xc2, 0xa5, 0x24, 0x13, 0x68, 0x7d, 0x88, 0xde, 0xe3, 0x6a, 0xb8, 0x92, - 0x76, 0x06, 0xcd, 0x46, 0xad, 0x59, 0x52, 0xcb, 0xc5, 0x46, 0xb9, 0xb9, 0x5a, 0x2b, 0x15, 0x57, - 0x9b, 0x6a, 0x79, 0xbd, 0x56, 0xc0, 0xe8, 0xef, 0x24, 0x57, 0xb8, 0x2d, 0x73, 0x0f, 0x5b, 0x68, - 0x59, 0x48, 0xce, 0x71, 0x32, 0x61, 0x18, 0xfc, 0x8a, 0xb0, 0xd3, 0x06, 0x93, 0x0e, 0xe3, 0x20, - 0x42, 0x79, 0x3f, 0x2c, 0xd4, 0xdc, 0x63, 0x49, 0x3d, 0x0a, 0x24, 0xfd, 0xbf, 0x25, 0x98, 0x28, - 0x99, 0xc6, 0x1e, 0xb6, 0x9c, 0xf0, 0x7c, 0x27, 0x2c, 0xcd, 0x0c, 0x2f, 0x4d, 0x77, 0x90, 0xc4, - 0x86, 0x63, 0x99, 0x5d, 0x6f, 0xc2, 0xe3, 0xbd, 0xa2, 0x37, 0x24, 0x95, 0x30, 0x2b, 0x39, 0x7a, - 0xe1, 0xb3, 0x7f, 0x41, 0x1c, 0x7b, 0x72, 0x4f, 0x03, 0x78, 0x4d, 0x12, 0x5c, 0xfa, 0x33, 0x90, - 0x7e, 0x97, 0xf2, 0x65, 0x19, 0x66, 0x69, 0xe3, 0xab, 0x63, 0x62, 0xa1, 0xa1, 0x5a, 0x78, 0xc9, - 0xb1, 0x47, 0xf8, 0x2b, 0x47, 0x38, 0xf1, 0xe7, 0xb5, 0x6e, 0xd7, 0x5f, 0x7e, 0x5e, 0x39, 0xa2, - 0xb2, 0x77, 0xaa, 0xe6, 0x0b, 0x79, 0xc8, 0x6a, 0xbb, 0xce, 0x36, 0xfa, 0xbe, 0xf0, 0xe4, 0x93, - 0xeb, 0x0c, 0x18, 0x3f, 0x11, 0x90, 0x1c, 0x87, 0x9c, 0x63, 0x5e, 0xc0, 0x9e, 0x1c, 0xe8, 0x8b, - 0x0b, 0x87, 0xd6, 0xed, 0x36, 0xc8, 0x07, 0x06, 0x87, 0xf7, 0xee, 0xda, 0x3a, 0x5a, 0xab, 0x65, - 0xee, 0x1a, 0x4e, 0xc5, 0x5b, 0x82, 0x0e, 0x12, 0xd0, 0x17, 0x33, 0x22, 0x93, 0x59, 0x01, 0x06, - 0x93, 0x41, 0x76, 0x7e, 0x88, 0xa6, 0x34, 0x0f, 0x37, 0x16, 0xd7, 0xd7, 0x9b, 0x8d, 0xda, 0x7d, - 0xe5, 0x6a, 0x60, 0x78, 0x36, 0x2b, 0xd5, 0x66, 0x63, 0xa5, 0xdc, 0x2c, 0x6d, 0xa8, 0x64, 0x9d, - 0xb0, 0x58, 0x2a, 0xd5, 0x36, 0xaa, 0x8d, 0x02, 0x46, 0x6f, 0x96, 0x60, 0xa6, 0xd4, 0x31, 0x6d, - 0x1f, 0xe1, 0xab, 0x03, 0x84, 0x7d, 0x31, 0x66, 0x42, 0x62, 0x44, 0xff, 0x96, 0x11, 0x75, 0x3a, - 0xf0, 0x04, 0x12, 0x22, 0x1f, 0xd1, 0x4b, 0xbd, 0x41, 0xc8, 0xe9, 0x60, 0x30, 0xbd, 0xf4, 0x9b, - 0xc4, 0x17, 0xee, 0x82, 0x89, 0x22, 0x55, 0x0c, 0xf4, 0xd7, 0x19, 0xc8, 0x97, 0x4c, 0x63, 0x53, - 0xdf, 0x72, 0x8d, 0x39, 0x6c, 0x68, 0xe7, 0x3b, 0x78, 0x51, 0x73, 0xb4, 0x3d, 0x1d, 0x5f, 0x24, - 0x15, 0x98, 0x54, 0x7b, 0x52, 0x5d, 0xa6, 0x58, 0x0a, 0x3e, 0xbf, 0xbb, 0x45, 0x98, 0x9a, 0x54, - 0xc3, 0x49, 0xca, 0x53, 0xe1, 0x72, 0xfa, 0xba, 0x6e, 0x61, 0x0b, 0x77, 0xb0, 0x66, 0x63, 0x77, - 0x5a, 0x64, 0xe0, 0x0e, 0x51, 0xda, 0x49, 0x35, 0xea, 0xb3, 0x72, 0x06, 0x66, 0xe8, 0x27, 0x62, - 0x8a, 0xd8, 0x44, 0x8d, 0x27, 0x55, 0x2e, 0x4d, 0x79, 0x02, 0xe4, 0xf0, 0x83, 0x8e, 0xa5, 0x9d, - 0x6a, 0x13, 0xbc, 0x2e, 0x9f, 0xa7, 0x5e, 0x87, 0xf3, 0x9e, 0xd7, 0xe1, 0x7c, 0x9d, 0xf8, 0x24, - 0xaa, 0x34, 0x17, 0xfa, 0xe4, 0xa4, 0x6f, 0x48, 0xbc, 0x59, 0x0e, 0x14, 0x43, 0x81, 0xac, 0xa1, - 0xed, 0x60, 0xa6, 0x17, 0xe4, 0x59, 0xb9, 0x11, 0x8e, 0x6a, 0x7b, 0x9a, 0xa3, 0x59, 0xab, 0x66, - 0x4b, 0xeb, 0x90, 0xc1, 0xcf, 0x6b, 0xf9, 0xbd, 0x1f, 0xc8, 0x8e, 0x90, 0x63, 0x5a, 0x98, 0xe4, - 0xf2, 0x76, 0x84, 0xbc, 0x04, 0x97, 0xba, 0xde, 0x32, 0x0d, 0xc2, 0xbf, 0xac, 0x92, 0x67, 0x57, - 0x2a, 0x6d, 0xdd, 0x76, 0x2b, 0x42, 0xa8, 0x54, 0xe9, 0xd6, 0x46, 0xfd, 0x92, 0xd1, 0x22, 0xbb, - 0x41, 0x93, 0x6a, 0xd4, 0x67, 0x65, 0x01, 0xa6, 0xd9, 0x46, 0xc8, 0x9a, 0xab, 0x57, 0x79, 0xa2, - 0x57, 0xd7, 0xf0, 0x3e, 0x5d, 0x14, 0xcf, 0xf9, 0x6a, 0x90, 0x4f, 0x0d, 0xff, 0xa4, 0xdc, 0x03, - 0x57, 0xb2, 0xd7, 0xd2, 0xae, 0xed, 0x98, 0x3b, 0x14, 0xf4, 0x25, 0xbd, 0x43, 0x6b, 0x30, 0x41, - 0x6a, 0x10, 0x97, 0x45, 0xb9, 0x15, 0x8e, 0x77, 0x2d, 0xbc, 0x89, 0xad, 0xfb, 0xb5, 0x9d, 0xdd, - 0x07, 0x1b, 0x96, 0x66, 0xd8, 0x5d, 0xd3, 0x72, 0x4e, 0x4d, 0x12, 0xe6, 0xfb, 0x7e, 0x53, 0x6e, - 0x82, 0x63, 0x0f, 0xd8, 0xa6, 0x51, 0xec, 0xea, 0xab, 0xba, 0xed, 0x60, 0xa3, 0xd8, 0x6e, 0x5b, - 0xa7, 0xa6, 0x48, 0x59, 0xfb, 0x3f, 0xb0, 0x6e, 0x75, 0x12, 0xf2, 0x54, 0xd8, 0xe8, 0x05, 0x39, - 0x61, 0xe7, 0x4f, 0x56, 0xfd, 0x58, 0x63, 0xee, 0x16, 0x98, 0x60, 0xfd, 0x21, 0x81, 0x75, 0xfa, - 0xd6, 0x93, 0x3d, 0xab, 0x10, 0x8c, 0x8a, 0xea, 0x65, 0x53, 0x9e, 0x04, 0xf9, 0x16, 0x11, 0x02, - 0x41, 0x78, 0xfa, 0xd6, 0x2b, 0xfb, 0x17, 0x4a, 0xb2, 0xa8, 0x2c, 0x2b, 0xfa, 0x0b, 0x59, 0xc8, - 0x5f, 0x34, 0x8e, 0xe3, 0x64, 0x7d, 0xc0, 0x37, 0xa4, 0x21, 0x3a, 0xd9, 0x9b, 0xe0, 0x06, 0xd6, - 0x83, 0x32, 0x6b, 0x65, 0xb1, 0xb9, 0xb0, 0xe1, 0x4d, 0x1d, 0x5d, 0x1b, 0xa6, 0xde, 0x28, 0xaa, - 0xee, 0xbc, 0x7f, 0xd1, 0x9d, 0x72, 0xde, 0x08, 0xd7, 0x0f, 0xc8, 0x5d, 0x6e, 0x34, 0xab, 0xc5, - 0xb5, 0x72, 0x61, 0x93, 0xb7, 0x84, 0xea, 0x8d, 0xda, 0x7a, 0x53, 0xdd, 0xa8, 0x56, 0x2b, 0xd5, - 0x65, 0x4a, 0xcc, 0x35, 0x20, 0x4f, 0x06, 0x19, 0xce, 0xa9, 0x95, 0x46, 0xb9, 0x59, 0xaa, 0x55, - 0x97, 0x2a, 0xcb, 0x05, 0x7d, 0x90, 0x19, 0xf5, 0x80, 0x72, 0x0d, 0x5c, 0xc5, 0x71, 0x52, 0xa9, - 0x55, 0xdd, 0x79, 0x70, 0xa9, 0x58, 0x2d, 0x95, 0xdd, 0x49, 0xef, 0x05, 0x05, 0xc1, 0x09, 0x4a, - 0xae, 0xb9, 0x54, 0x59, 0x0d, 0x6f, 0x5d, 0x7d, 0x3c, 0xa3, 0x9c, 0x82, 0xcb, 0xc2, 0xdf, 0x2a, - 0xd5, 0xb3, 0xc5, 0xd5, 0xca, 0x62, 0xe1, 0x13, 0x19, 0xe5, 0x3a, 0xb8, 0x9a, 0xfb, 0x8b, 0xee, - 0x42, 0x35, 0x2b, 0x8b, 0xcd, 0xb5, 0x4a, 0x7d, 0xad, 0xd8, 0x28, 0xad, 0x14, 0x3e, 0x49, 0x66, - 0x17, 0xbe, 0xb9, 0x1c, 0x72, 0xe2, 0x7c, 0x71, 0xd8, 0x02, 0x28, 0xf2, 0x8a, 0xfa, 0xf8, 0xbe, - 0xb0, 0xc7, 0x5b, 0xbc, 0x1f, 0xf5, 0xc7, 0x92, 0x45, 0x4e, 0x85, 0x6e, 0x49, 0x40, 0x2b, 0x99, - 0x0e, 0x35, 0x86, 0x50, 0xa1, 0x6b, 0xe0, 0xaa, 0x6a, 0x99, 0x22, 0xa5, 0x96, 0x4b, 0xb5, 0xb3, - 0x65, 0xb5, 0x79, 0xae, 0xb8, 0xba, 0x5a, 0x6e, 0x34, 0x97, 0x2a, 0x6a, 0xbd, 0x51, 0xd8, 0x44, - 0xff, 0x2c, 0xf9, 0x6b, 0x3f, 0x21, 0x69, 0xfd, 0xb5, 0x94, 0xb4, 0x59, 0xc7, 0xae, 0xf1, 0xfc, - 0x18, 0xe4, 0x6d, 0x47, 0x73, 0x76, 0x6d, 0xd6, 0xaa, 0x1f, 0xd3, 0xbf, 0x55, 0xcf, 0xd7, 0x49, + 0xd1, 0x4a, 0xc5, 0x76, 0x64, 0x63, 0x49, 0xa5, 0xbf, 0xd1, 0xf5, 0x16, 0x09, 0x60, 0xc3, 0xb0, + 0x3d, 0xb9, 0x3e, 0x35, 0x81, 0x5c, 0xd1, 0x3f, 0x67, 0x92, 0xcd, 0x62, 0x82, 0x72, 0x22, 0x24, + 0xf6, 0x86, 0x04, 0x6b, 0x0b, 0x91, 0xc4, 0xd2, 0x97, 0xd9, 0xe7, 0xe7, 0x20, 0x7f, 0x51, 0xeb, + 0x74, 0xb0, 0x83, 0xbe, 0x20, 0x41, 0xbe, 0x64, 0x61, 0xcd, 0xc1, 0x61, 0xd1, 0x21, 0x98, 0xb4, + 0x4c, 0xd3, 0x59, 0xd7, 0x9c, 0x6d, 0x26, 0x37, 0xff, 0x9d, 0x39, 0x0c, 0xfc, 0x5a, 0xb8, 0xfb, + 0xb8, 0x8f, 0x17, 0xdd, 0x77, 0x72, 0xb5, 0xa5, 0x05, 0xcd, 0xd3, 0x42, 0x22, 0xfa, 0x0f, 0x04, + 0x93, 0x3b, 0x06, 0xde, 0x31, 0x0d, 0xbd, 0xe5, 0xd9, 0x9c, 0xde, 0x3b, 0xfa, 0x3d, 0x5f, 0xa6, + 0x0b, 0x9c, 0x4c, 0xe7, 0x85, 0x4b, 0x49, 0x26, 0xd0, 0xfa, 0x10, 0xbd, 0xc7, 0xf5, 0x70, 0x2d, + 0xed, 0x0c, 0x9a, 0x8d, 0x5a, 0xb3, 0xa4, 0x96, 0x8b, 0x8d, 0x72, 0x73, 0xb5, 0x56, 0x2a, 0xae, + 0x36, 0xd5, 0xf2, 0x7a, 0xad, 0x80, 0xd1, 0xdf, 0x49, 0xae, 0x70, 0x5b, 0xe6, 0x1e, 0xb6, 0xd0, + 0xb2, 0x90, 0x9c, 0xe3, 0x64, 0xc2, 0x30, 0xf8, 0x49, 0x61, 0xa7, 0x0d, 0x26, 0x1d, 0xc6, 0x41, + 0x84, 0xf2, 0xbe, 0x5f, 0xa8, 0xb9, 0xc7, 0x92, 0x7a, 0x02, 0x48, 0xfa, 0x7f, 0x4b, 0x30, 0x51, + 0x32, 0x8d, 0x3d, 0x6c, 0x39, 0xe1, 0xf9, 0x4e, 0x58, 0x9a, 0x19, 0x5e, 0x9a, 0xee, 0x20, 0x89, + 0x0d, 0xc7, 0x32, 0xbb, 0xde, 0x84, 0xc7, 0x7b, 0x45, 0xbf, 0x9c, 0x54, 0xc2, 0xac, 0xe4, 0xe8, + 0x85, 0xcf, 0xfe, 0x05, 0x71, 0xec, 0xc9, 0x3d, 0x0d, 0xe0, 0x75, 0x49, 0x70, 0xe9, 0xcf, 0x40, + 0xfa, 0x5d, 0xca, 0x67, 0x65, 0x98, 0xa5, 0x8d, 0xaf, 0x8e, 0x89, 0x85, 0x86, 0x6a, 0xe1, 0x25, + 0xc7, 0x1e, 0xe1, 0xaf, 0x1c, 0xe3, 0xc4, 0x9f, 0xd7, 0xba, 0x5d, 0x7f, 0xf9, 0x79, 0xe5, 0x98, + 0xca, 0xde, 0xa9, 0x9a, 0x2f, 0xe4, 0x21, 0xab, 0xed, 0x3a, 0xdb, 0xe8, 0x9b, 0xc2, 0x93, 0x4f, + 0xae, 0x33, 0x60, 0xfc, 0x44, 0x40, 0x72, 0x12, 0x72, 0x8e, 0x79, 0x19, 0x7b, 0x72, 0xa0, 0x2f, + 0x2e, 0x1c, 0x5a, 0xb7, 0xdb, 0x20, 0x1f, 0x18, 0x1c, 0xde, 0xbb, 0x6b, 0xeb, 0x68, 0xad, 0x96, + 0xb9, 0x6b, 0x38, 0x15, 0x6f, 0x09, 0x3a, 0x48, 0x40, 0x9f, 0xce, 0x88, 0x4c, 0x66, 0x05, 0x18, + 0x4c, 0x06, 0xd9, 0xa5, 0x21, 0x9a, 0xd2, 0x3c, 0xdc, 0x52, 0x5c, 0x5f, 0x6f, 0x36, 0x6a, 0x0f, + 0x96, 0xab, 0x81, 0xe1, 0xd9, 0xac, 0x54, 0x9b, 0x8d, 0x95, 0x72, 0xb3, 0xb4, 0xa1, 0x92, 0x75, + 0xc2, 0x62, 0xa9, 0x54, 0xdb, 0xa8, 0x36, 0x0a, 0x18, 0xbd, 0x49, 0x82, 0x99, 0x52, 0xc7, 0xb4, + 0x7d, 0x84, 0xaf, 0x0f, 0x10, 0xf6, 0xc5, 0x98, 0x09, 0x89, 0x11, 0xfd, 0x5b, 0x46, 0xd4, 0xe9, + 0xc0, 0x13, 0x48, 0x88, 0x7c, 0x44, 0x2f, 0xf5, 0xcb, 0x42, 0x4e, 0x07, 0x83, 0xe9, 0xa5, 0xdf, + 0x24, 0x3e, 0x75, 0x2f, 0x4c, 0x14, 0xa9, 0x62, 0xa0, 0xbf, 0xce, 0x40, 0xbe, 0x64, 0x1a, 0x9b, + 0xfa, 0x96, 0x6b, 0xcc, 0x61, 0x43, 0xbb, 0xd4, 0xc1, 0x8b, 0x9a, 0xa3, 0xed, 0xe9, 0xf8, 0x0a, + 0xa9, 0xc0, 0xa4, 0xda, 0x93, 0xea, 0x32, 0xc5, 0x52, 0xf0, 0xa5, 0xdd, 0x2d, 0xc2, 0xd4, 0xa4, + 0x1a, 0x4e, 0x52, 0x9e, 0x0d, 0x57, 0xd3, 0xd7, 0x75, 0x0b, 0x5b, 0xb8, 0x83, 0x35, 0x1b, 0xbb, + 0xd3, 0x22, 0x03, 0x77, 0x88, 0xd2, 0x4e, 0xaa, 0x51, 0x9f, 0x95, 0xf3, 0x30, 0x43, 0x3f, 0x11, + 0x53, 0xc4, 0x26, 0x6a, 0x3c, 0xa9, 0x72, 0x69, 0xca, 0xd3, 0x20, 0x87, 0x1f, 0x71, 0x2c, 0xed, + 0x4c, 0x9b, 0xe0, 0x75, 0xf5, 0x3c, 0xf5, 0x3a, 0x9c, 0xf7, 0xbc, 0x0e, 0xe7, 0xeb, 0xc4, 0x27, + 0x51, 0xa5, 0xb9, 0xd0, 0x47, 0x26, 0x7d, 0x43, 0xe2, 0x4d, 0x72, 0xa0, 0x18, 0x0a, 0x64, 0x0d, + 0x6d, 0x07, 0x33, 0xbd, 0x20, 0xcf, 0xca, 0x2d, 0x70, 0x5c, 0xdb, 0xd3, 0x1c, 0xcd, 0x5a, 0x35, + 0x5b, 0x5a, 0x87, 0x0c, 0x7e, 0x5e, 0xcb, 0xef, 0xfd, 0x40, 0x76, 0x84, 0x1c, 0xd3, 0xc2, 0x24, + 0x97, 0xb7, 0x23, 0xe4, 0x25, 0xb8, 0xd4, 0xf5, 0x96, 0x69, 0x10, 0xfe, 0x65, 0x95, 0x3c, 0xbb, + 0x52, 0x69, 0xeb, 0xb6, 0x5b, 0x11, 0x42, 0xa5, 0x4a, 0xb7, 0x36, 0xea, 0xfb, 0x46, 0x8b, 0xec, + 0x06, 0x4d, 0xaa, 0x51, 0x9f, 0x95, 0x05, 0x98, 0x66, 0x1b, 0x21, 0x6b, 0xae, 0x5e, 0xe5, 0x89, + 0x5e, 0x9d, 0xe3, 0x7d, 0xba, 0x28, 0x9e, 0xf3, 0xd5, 0x20, 0x9f, 0x1a, 0xfe, 0x49, 0xb9, 0x1f, + 0xae, 0x65, 0xaf, 0xa5, 0x5d, 0xdb, 0x31, 0x77, 0x28, 0xe8, 0x4b, 0x7a, 0x87, 0xd6, 0x60, 0x82, + 0xd4, 0x20, 0x2e, 0x8b, 0x72, 0x07, 0x9c, 0xec, 0x5a, 0x78, 0x13, 0x5b, 0x0f, 0x69, 0x3b, 0xbb, + 0x8f, 0x34, 0x2c, 0xcd, 0xb0, 0xbb, 0xa6, 0xe5, 0x9c, 0x99, 0x24, 0xcc, 0xf7, 0xfd, 0xa6, 0xdc, + 0x0a, 0x27, 0x1e, 0xb6, 0x4d, 0xa3, 0xd8, 0xd5, 0x57, 0x75, 0xdb, 0xc1, 0x46, 0xb1, 0xdd, 0xb6, + 0xce, 0x4c, 0x91, 0xb2, 0x0e, 0x7e, 0x60, 0xdd, 0xea, 0x24, 0xe4, 0xa9, 0xb0, 0xd1, 0x4b, 0x73, + 0xc2, 0xce, 0x9f, 0xac, 0xfa, 0xb1, 0xc6, 0xdc, 0xed, 0x30, 0xc1, 0xfa, 0x43, 0x02, 0xeb, 0xf4, + 0x1d, 0xa7, 0x7b, 0x56, 0x21, 0x18, 0x15, 0xd5, 0xcb, 0xa6, 0x3c, 0x03, 0xf2, 0x2d, 0x22, 0x04, + 0x82, 0xf0, 0xf4, 0x1d, 0xd7, 0xf6, 0x2f, 0x94, 0x64, 0x51, 0x59, 0x56, 0xf4, 0x17, 0xb2, 0x90, + 0xbf, 0x68, 0x1c, 0xc7, 0xc9, 0xfa, 0x80, 0x2f, 0x49, 0x43, 0x74, 0xb2, 0xb7, 0xc2, 0xcd, 0xac, + 0x07, 0x65, 0xd6, 0xca, 0x62, 0x73, 0x61, 0xc3, 0x9b, 0x3a, 0xba, 0x36, 0x4c, 0xbd, 0x51, 0x54, + 0xdd, 0x79, 0xff, 0xa2, 0x3b, 0xe5, 0xbc, 0x05, 0x6e, 0x1a, 0x90, 0xbb, 0xdc, 0x68, 0x56, 0x8b, + 0x6b, 0xe5, 0xc2, 0x26, 0x6f, 0x09, 0xd5, 0x1b, 0xb5, 0xf5, 0xa6, 0xba, 0x51, 0xad, 0x56, 0xaa, + 0xcb, 0x94, 0x98, 0x6b, 0x40, 0x9e, 0x0e, 0x32, 0x5c, 0x54, 0x2b, 0x8d, 0x72, 0xb3, 0x54, 0xab, + 0x2e, 0x55, 0x96, 0x0b, 0xfa, 0x20, 0x33, 0xea, 0x61, 0xe5, 0x1c, 0x5c, 0xc7, 0x71, 0x52, 0xa9, + 0x55, 0xdd, 0x79, 0x70, 0xa9, 0x58, 0x2d, 0x95, 0xdd, 0x49, 0xef, 0x65, 0x05, 0xc1, 0x29, 0x4a, + 0xae, 0xb9, 0x54, 0x59, 0x0d, 0x6f, 0x5d, 0x7d, 0x38, 0xa3, 0x9c, 0x81, 0xab, 0xc2, 0xdf, 0x2a, + 0xd5, 0x0b, 0xc5, 0xd5, 0xca, 0x62, 0xe1, 0x0f, 0x32, 0xca, 0x8d, 0x70, 0x3d, 0xf7, 0x17, 0xdd, + 0x85, 0x6a, 0x56, 0x16, 0x9b, 0x6b, 0x95, 0xfa, 0x5a, 0xb1, 0x51, 0x5a, 0x29, 0x7c, 0x84, 0xcc, + 0x2e, 0x7c, 0x73, 0x39, 0xe4, 0xc4, 0xf9, 0x8a, 0xb0, 0x05, 0x50, 0xe4, 0x15, 0xf5, 0xa9, 0x7d, + 0x61, 0x8f, 0xb7, 0x78, 0x3f, 0xe8, 0x8f, 0x25, 0x8b, 0x9c, 0x0a, 0xdd, 0x9e, 0x80, 0x56, 0x32, + 0x1d, 0x6a, 0x0c, 0xa1, 0x42, 0xe7, 0xe0, 0xba, 0x6a, 0x99, 0x22, 0xa5, 0x96, 0x4b, 0xb5, 0x0b, + 0x65, 0xb5, 0x79, 0xb1, 0xb8, 0xba, 0x5a, 0x6e, 0x34, 0x97, 0x2a, 0x6a, 0xbd, 0x51, 0xd8, 0x44, + 0xff, 0x2c, 0xf9, 0x6b, 0x3f, 0x21, 0x69, 0xfd, 0xb5, 0x94, 0xb4, 0x59, 0xc7, 0xae, 0xf1, 0x7c, + 0x17, 0xe4, 0x6d, 0x47, 0x73, 0x76, 0x6d, 0xd6, 0xaa, 0x9f, 0xd4, 0xbf, 0x55, 0xcf, 0xd7, 0x49, 0x26, 0x95, 0x65, 0x46, 0x7f, 0x91, 0x49, 0xd2, 0x4c, 0x47, 0xb0, 0xfc, 0xa3, 0x0f, 0x21, 0xe2, - 0xd3, 0x80, 0x3c, 0x6d, 0xaf, 0xd4, 0x9b, 0xc5, 0x55, 0xb5, 0x5c, 0x5c, 0xbc, 0xdf, 0x5f, 0xf4, - 0xc1, 0xca, 0x09, 0x38, 0xb6, 0x51, 0x2d, 0x2e, 0xac, 0x96, 0x49, 0x73, 0xa9, 0x55, 0xab, 0xe5, - 0x92, 0x2b, 0xf7, 0x9f, 0x27, 0x5b, 0x2c, 0xae, 0xbd, 0x4d, 0xf8, 0x76, 0x6d, 0xa2, 0x90, 0xfc, - 0xbf, 0x2e, 0xec, 0x89, 0x14, 0x68, 0x58, 0x98, 0xd6, 0x68, 0x71, 0xf8, 0xa2, 0x90, 0xf3, 0x91, - 0x10, 0x27, 0xc9, 0xf0, 0xf8, 0xcf, 0x43, 0xe0, 0x71, 0x02, 0x8e, 0x85, 0xf1, 0x20, 0x4e, 0x48, - 0xd1, 0x30, 0xbc, 0x60, 0x0a, 0xf2, 0x75, 0xdc, 0xc1, 0x2d, 0x07, 0x3d, 0x22, 0x05, 0xa6, 0xc7, + 0xb3, 0x80, 0x3c, 0x6d, 0xaf, 0xd4, 0x9b, 0xc5, 0x55, 0xb5, 0x5c, 0x5c, 0x7c, 0xc8, 0x5f, 0xf4, + 0xc1, 0xca, 0x29, 0x38, 0xb1, 0x51, 0x2d, 0x2e, 0xac, 0x96, 0x49, 0x73, 0xa9, 0x55, 0xab, 0xe5, + 0x92, 0x2b, 0xf7, 0x1f, 0x26, 0x5b, 0x2c, 0xae, 0xbd, 0x4d, 0xf8, 0x76, 0x6d, 0xa2, 0x90, 0xfc, + 0xbf, 0x28, 0xec, 0x89, 0x14, 0x68, 0x58, 0x98, 0xd6, 0x68, 0x71, 0xf8, 0xb4, 0x90, 0xf3, 0x91, + 0x10, 0x27, 0xc9, 0xf0, 0xf8, 0xcf, 0x43, 0xe0, 0x71, 0x0a, 0x4e, 0x84, 0xf1, 0x20, 0x4e, 0x48, + 0xd1, 0x30, 0xbc, 0x74, 0x0a, 0xf2, 0x75, 0xdc, 0xc1, 0x2d, 0x07, 0x3d, 0x2e, 0x05, 0xa6, 0xc7, 0x1c, 0x48, 0xbe, 0xd3, 0x8b, 0xa4, 0xb7, 0xb9, 0xc9, 0xb6, 0xd4, 0x33, 0xd9, 0x8e, 0x31, 0x1a, 0xe4, 0x44, 0x46, 0x43, 0x36, 0x05, 0xa3, 0x21, 0x37, 0xbc, 0xd1, 0x90, 0x4f, 0x6a, 0x34, 0x4c, - 0xc4, 0x1a, 0x0d, 0xe8, 0x75, 0xf9, 0xa4, 0x7d, 0x0a, 0x05, 0xe6, 0x70, 0x4d, 0x85, 0xff, 0x95, - 0x4d, 0xd2, 0x07, 0xf5, 0xe5, 0x38, 0x99, 0xce, 0x7f, 0x5f, 0x4e, 0x61, 0x69, 0x43, 0xb9, 0x16, - 0xae, 0x0e, 0xde, 0x9b, 0xe5, 0xa7, 0x57, 0xea, 0x8d, 0x3a, 0xb1, 0x0f, 0x4a, 0x35, 0x55, 0xdd, - 0x58, 0xa7, 0xeb, 0xd3, 0x27, 0x41, 0x09, 0xa8, 0xa8, 0x1b, 0x55, 0x6a, 0x0d, 0x6c, 0xf1, 0xd4, + 0xc4, 0x1a, 0x0d, 0xe8, 0x0d, 0xf9, 0xa4, 0x7d, 0x0a, 0x05, 0xe6, 0x68, 0x4d, 0x85, 0xff, 0x95, + 0x4d, 0xd2, 0x07, 0xf5, 0xe5, 0x38, 0x99, 0xce, 0x7f, 0x53, 0x4e, 0x61, 0x69, 0x43, 0xb9, 0x01, + 0xae, 0x0f, 0xde, 0x9b, 0xe5, 0xe7, 0x56, 0xea, 0x8d, 0x3a, 0xb1, 0x0f, 0x4a, 0x35, 0x55, 0xdd, + 0x58, 0xa7, 0xeb, 0xd3, 0xa7, 0x41, 0x09, 0xa8, 0xa8, 0x1b, 0x55, 0x6a, 0x0d, 0x6c, 0xf1, 0xd4, 0x97, 0x2a, 0xd5, 0xc5, 0xa6, 0xdf, 0xc2, 0xaa, 0x4b, 0xb5, 0xc2, 0xb6, 0x3b, 0x1d, 0x0c, 0x51, 0x77, 0x87, 0x73, 0x56, 0x42, 0xb1, 0xba, 0xd8, 0x5c, 0xab, 0x96, 0xd7, 0x6a, 0xd5, 0x4a, 0x89, 0xa4, 0xd7, 0xcb, 0x8d, 0x82, 0xee, 0x0e, 0x4b, 0x3d, 0xf6, 0x47, 0xbd, 0x5c, 0x54, 0x4b, 0x2b, - 0x65, 0x95, 0x16, 0xf9, 0x80, 0x72, 0x3d, 0x9c, 0x29, 0x56, 0x6b, 0x0d, 0x37, 0xa5, 0x58, 0xbd, - 0xbf, 0x71, 0xff, 0x7a, 0xb9, 0xb9, 0xae, 0xd6, 0x4a, 0xe5, 0x7a, 0xdd, 0x6d, 0xd5, 0xcc, 0x5a, - 0x29, 0x74, 0x94, 0xbb, 0xe0, 0xf6, 0x10, 0x6b, 0xe5, 0x06, 0xd9, 0x0c, 0x5d, 0xab, 0x11, 0x7f, + 0x65, 0x95, 0x16, 0xf9, 0xb0, 0x72, 0x13, 0x9c, 0x2f, 0x56, 0x6b, 0x0d, 0x37, 0xa5, 0x58, 0x7d, + 0xa8, 0xf1, 0xd0, 0x7a, 0xb9, 0xb9, 0xae, 0xd6, 0x4a, 0xe5, 0x7a, 0xdd, 0x6d, 0xd5, 0xcc, 0x5a, + 0x29, 0x74, 0x94, 0x7b, 0xe1, 0xae, 0x10, 0x6b, 0xe5, 0x06, 0xd9, 0x0c, 0x5d, 0xab, 0x11, 0x7f, 0x98, 0xc5, 0x72, 0x73, 0xa5, 0x58, 0x6f, 0x56, 0xaa, 0xa5, 0xda, 0xda, 0x7a, 0xb1, 0x51, 0x71, - 0x1b, 0xff, 0xba, 0x5a, 0x6b, 0xd4, 0x9a, 0x67, 0xcb, 0x6a, 0xbd, 0x52, 0xab, 0x16, 0x0c, 0xb7, - 0xca, 0xa1, 0xde, 0xc2, 0xeb, 0xb5, 0x4d, 0xe5, 0x2a, 0x38, 0xe5, 0xa5, 0xaf, 0xd6, 0x5c, 0x41, - 0x87, 0xec, 0x97, 0x6e, 0xaa, 0xf6, 0xcb, 0xbf, 0x4a, 0x90, 0xad, 0x3b, 0x66, 0x17, 0xfd, 0x68, - 0xd0, 0x1d, 0x9d, 0x06, 0xb0, 0xc8, 0xde, 0xa6, 0x3b, 0xc3, 0x63, 0x73, 0xbe, 0x50, 0x0a, 0xfa, - 0x43, 0xe1, 0x0d, 0x99, 0xa0, 0x87, 0x37, 0xbb, 0x11, 0x96, 0xcd, 0x77, 0xc5, 0x4e, 0xa8, 0x44, - 0x13, 0x4a, 0xa6, 0xef, 0xbf, 0x38, 0xcc, 0x96, 0x0b, 0x82, 0x93, 0x21, 0xd8, 0x5c, 0xf9, 0x7b, - 0x2a, 0x81, 0x95, 0xcb, 0xe1, 0xb2, 0x1e, 0xe5, 0x22, 0x3a, 0xb5, 0xa9, 0xfc, 0x08, 0x3c, 0x26, - 0xa4, 0xde, 0xe5, 0xb5, 0xda, 0xd9, 0xb2, 0xaf, 0xc8, 0x8b, 0xc5, 0x46, 0xb1, 0xb0, 0x85, 0x3e, - 0x27, 0x43, 0x76, 0xcd, 0xdc, 0xeb, 0xdd, 0x07, 0x33, 0xf0, 0xc5, 0xd0, 0x3a, 0xab, 0xf7, 0xca, - 0x7b, 0xe4, 0x0b, 0x89, 0x7d, 0x2d, 0x7a, 0xcf, 0xfb, 0x8b, 0x52, 0x12, 0xb1, 0xaf, 0x1d, 0x74, - 0xa3, 0xfb, 0xef, 0x87, 0x11, 0x7b, 0x84, 0x68, 0xb1, 0x72, 0x06, 0x4e, 0x07, 0x1f, 0x2a, 0x8b, - 0xe5, 0x6a, 0xa3, 0xb2, 0x74, 0x7f, 0x20, 0xdc, 0x8a, 0x2a, 0x24, 0xfe, 0x41, 0xdd, 0x58, 0xfc, - 0xbc, 0xe4, 0x14, 0x1c, 0x0f, 0xbe, 0x2d, 0x97, 0x1b, 0xde, 0x97, 0x07, 0xd0, 0x43, 0x39, 0x98, - 0xa1, 0xdd, 0xfa, 0x46, 0xb7, 0xad, 0x39, 0x18, 0x3d, 0x29, 0x40, 0xf7, 0x06, 0x38, 0x5a, 0x59, - 0x5f, 0xaa, 0xd7, 0x1d, 0xd3, 0xd2, 0xb6, 0x30, 0x19, 0xc7, 0xa8, 0xb4, 0x7a, 0x93, 0xd1, 0xbb, - 0x84, 0xd7, 0x10, 0xf9, 0xa1, 0x84, 0x96, 0x19, 0x81, 0xfa, 0x97, 0x85, 0xd6, 0xfc, 0x04, 0x08, - 0x26, 0x43, 0xff, 0x81, 0x11, 0xb7, 0xb9, 0x68, 0x5c, 0x36, 0xcf, 0x3c, 0x5b, 0x82, 0xa9, 0x86, - 0xbe, 0x83, 0x9f, 0x61, 0x1a, 0xd8, 0x56, 0x26, 0x40, 0x5e, 0x5e, 0x6b, 0x14, 0x8e, 0xb8, 0x0f, + 0x1b, 0xff, 0xba, 0x5a, 0x6b, 0xd4, 0x9a, 0x17, 0xca, 0x6a, 0xbd, 0x52, 0xab, 0x16, 0x0c, 0xb7, + 0xca, 0xa1, 0xde, 0xc2, 0xeb, 0xb5, 0x4d, 0xe5, 0x3a, 0x38, 0xe3, 0xa5, 0xaf, 0xd6, 0x5c, 0x41, + 0x87, 0xec, 0x97, 0x6e, 0xaa, 0xf6, 0xcb, 0xbf, 0x4a, 0x90, 0xad, 0x3b, 0x66, 0x17, 0x7d, 0x67, + 0xd0, 0x1d, 0x9d, 0x05, 0xb0, 0xc8, 0xde, 0xa6, 0x3b, 0xc3, 0x63, 0x73, 0xbe, 0x50, 0x0a, 0xfa, + 0x7d, 0xe1, 0x0d, 0x99, 0xa0, 0x87, 0x37, 0xbb, 0x11, 0x96, 0xcd, 0xd7, 0xc5, 0x4e, 0xa8, 0x44, + 0x13, 0x4a, 0xa6, 0xef, 0x3f, 0x36, 0xcc, 0x96, 0x0b, 0x82, 0xd3, 0x21, 0xd8, 0x5c, 0xf9, 0x7b, + 0x2a, 0x81, 0x95, 0xab, 0xe1, 0xaa, 0x1e, 0xe5, 0x22, 0x3a, 0xb5, 0xa9, 0x7c, 0x07, 0x3c, 0x29, + 0xa4, 0xde, 0xe5, 0xb5, 0xda, 0x85, 0xb2, 0xaf, 0xc8, 0x8b, 0xc5, 0x46, 0xb1, 0xb0, 0x85, 0x3e, + 0x21, 0x43, 0x76, 0xcd, 0xdc, 0xeb, 0xdd, 0x07, 0x33, 0xf0, 0x95, 0xd0, 0x3a, 0xab, 0xf7, 0xca, + 0x7b, 0xe4, 0x0b, 0x89, 0x7d, 0x2d, 0x7a, 0xcf, 0xfb, 0xd3, 0x52, 0x12, 0xb1, 0xaf, 0x1d, 0x76, + 0xa3, 0xfb, 0xef, 0x87, 0x11, 0x7b, 0x84, 0x68, 0xb1, 0x72, 0x1e, 0xce, 0x06, 0x1f, 0x2a, 0x8b, + 0xe5, 0x6a, 0xa3, 0xb2, 0xf4, 0x50, 0x20, 0xdc, 0x8a, 0x2a, 0x24, 0xfe, 0x41, 0xdd, 0x58, 0xfc, + 0xbc, 0xe4, 0x0c, 0x9c, 0x0c, 0xbe, 0x2d, 0x97, 0x1b, 0xde, 0x97, 0x87, 0xd1, 0xa3, 0x39, 0x98, + 0xa1, 0xdd, 0xfa, 0x46, 0xb7, 0xad, 0x39, 0x18, 0x3d, 0x23, 0x40, 0xf7, 0x66, 0x38, 0x5e, 0x59, + 0x5f, 0xaa, 0xd7, 0x1d, 0xd3, 0xd2, 0xb6, 0x30, 0x19, 0xc7, 0xa8, 0xb4, 0x7a, 0x93, 0xd1, 0x3b, + 0x84, 0xd7, 0x10, 0xf9, 0xa1, 0x84, 0x96, 0x19, 0x81, 0xfa, 0x67, 0x85, 0xd6, 0xfc, 0x04, 0x08, + 0x26, 0x43, 0xff, 0xe1, 0x11, 0xb7, 0xb9, 0x68, 0x5c, 0x36, 0xcf, 0xbf, 0x50, 0x82, 0xa9, 0x86, + 0xbe, 0x83, 0x9f, 0x67, 0x1a, 0xd8, 0x56, 0x26, 0x40, 0x5e, 0x5e, 0x6b, 0x14, 0x8e, 0xb9, 0x0f, 0xae, 0x09, 0x96, 0x21, 0x0f, 0x65, 0xb7, 0x00, 0xf7, 0xa1, 0xd8, 0x28, 0xc8, 0xee, 0xc3, 0x5a, 0xb9, 0x51, 0xc8, 0xba, 0x0f, 0xd5, 0x72, 0xa3, 0x90, 0x73, 0x1f, 0xd6, 0x57, 0x1b, 0x85, 0xbc, - 0xfb, 0x50, 0xa9, 0x37, 0x0a, 0x13, 0xee, 0xc3, 0x42, 0xbd, 0x51, 0x98, 0x74, 0x1f, 0xce, 0xd6, - 0x1b, 0x85, 0x29, 0xf7, 0xa1, 0xd4, 0x68, 0x14, 0xc0, 0x7d, 0xb8, 0xb7, 0xde, 0x28, 0x4c, 0xbb, + 0xfb, 0x50, 0xa9, 0x37, 0x0a, 0x13, 0xee, 0xc3, 0x42, 0xbd, 0x51, 0x98, 0x74, 0x1f, 0x2e, 0xd4, + 0x1b, 0x85, 0x29, 0xf7, 0xa1, 0xd4, 0x68, 0x14, 0xc0, 0x7d, 0x78, 0xa0, 0xde, 0x28, 0x4c, 0xbb, 0x0f, 0xc5, 0x52, 0xa3, 0x30, 0x43, 0x1e, 0xca, 0x8d, 0xc2, 0xac, 0xfb, 0x50, 0xaf, 0x37, 0x0a, - 0x73, 0x84, 0x72, 0xbd, 0x51, 0x38, 0x4a, 0xca, 0xaa, 0x34, 0x0a, 0x05, 0xf7, 0x61, 0xa5, 0xde, - 0x28, 0x1c, 0x23, 0x99, 0xeb, 0x8d, 0x82, 0x42, 0x0a, 0xad, 0x37, 0x0a, 0x97, 0x91, 0x3c, 0xf5, - 0x46, 0xe1, 0x38, 0x29, 0xa2, 0xde, 0x28, 0x9c, 0x20, 0x6c, 0x94, 0x1b, 0x85, 0x93, 0x24, 0x8f, - 0xda, 0x28, 0x5c, 0x4e, 0x3e, 0x55, 0x1b, 0x85, 0x53, 0x84, 0xb1, 0x72, 0xa3, 0x70, 0x05, 0x79, - 0x50, 0x1b, 0x05, 0x44, 0x3e, 0x15, 0x1b, 0x85, 0x2b, 0xd1, 0x63, 0x60, 0x6a, 0x19, 0x3b, 0x14, - 0x44, 0x54, 0x00, 0x79, 0x19, 0x3b, 0x61, 0xa3, 0xff, 0xab, 0x32, 0x5c, 0xce, 0x26, 0x8a, 0x4b, - 0x96, 0xb9, 0xb3, 0x8a, 0xb7, 0xb4, 0xd6, 0xa5, 0xf2, 0x83, 0xae, 0xc1, 0x15, 0xde, 0xf3, 0x55, - 0x20, 0xdb, 0x0d, 0x3a, 0x23, 0xf2, 0x1c, 0x6b, 0x9f, 0x7a, 0x0b, 0x5d, 0x72, 0xb0, 0xd0, 0xc5, - 0x2c, 0xb2, 0x7f, 0x0a, 0x6b, 0x34, 0xb7, 0x36, 0x9d, 0xe9, 0x59, 0x9b, 0x76, 0x9b, 0x49, 0x17, - 0x5b, 0xb6, 0x69, 0x68, 0x9d, 0x3a, 0x73, 0x0a, 0xa0, 0x2b, 0x6a, 0xbd, 0xc9, 0xca, 0x4f, 0x78, - 0x2d, 0x83, 0x5a, 0x65, 0x4f, 0x8b, 0x9b, 0x0f, 0xf7, 0x56, 0x33, 0xa2, 0x91, 0x7c, 0xd2, 0x6f, - 0x24, 0x0d, 0xae, 0x91, 0xdc, 0x73, 0x00, 0xda, 0xc9, 0xda, 0x4b, 0x65, 0xb8, 0x89, 0x48, 0xe0, - 0x32, 0xeb, 0x2d, 0x85, 0xcb, 0xe8, 0x73, 0x12, 0x9c, 0x2c, 0x1b, 0xfd, 0xe6, 0x03, 0x61, 0x5d, - 0x78, 0x73, 0x18, 0x9a, 0x75, 0x5e, 0xa4, 0xb7, 0xf7, 0xad, 0x76, 0x7f, 0x9a, 0x11, 0x12, 0xfd, - 0xb4, 0x2f, 0xd1, 0x3a, 0x27, 0xd1, 0xbb, 0x87, 0x27, 0x9d, 0x4c, 0xa0, 0xd5, 0x91, 0x76, 0x40, - 0x59, 0xf4, 0x35, 0x09, 0x8e, 0x51, 0xbf, 0x9e, 0x7b, 0xe9, 0xf4, 0x83, 0x74, 0xd9, 0xbc, 0x09, - 0xd5, 0x09, 0xa6, 0x2a, 0x54, 0xbf, 0x43, 0x29, 0xe8, 0xb5, 0x61, 0x81, 0xdf, 0xc7, 0x0b, 0x3c, - 0xa2, 0x33, 0xee, 0x2d, 0x2e, 0x42, 0xd6, 0x9f, 0xf0, 0x65, 0x5d, 0xe5, 0x64, 0x7d, 0xfb, 0x50, - 0x54, 0x0f, 0x57, 0xcc, 0xdf, 0xc8, 0xc2, 0x63, 0x28, 0x87, 0x4c, 0x11, 0x68, 0x67, 0x56, 0x34, + 0x73, 0x84, 0x72, 0xbd, 0x51, 0x38, 0x4e, 0xca, 0xaa, 0x34, 0x0a, 0x05, 0xf7, 0x61, 0xa5, 0xde, + 0x28, 0x9c, 0x20, 0x99, 0xeb, 0x8d, 0x82, 0x42, 0x0a, 0xad, 0x37, 0x0a, 0x57, 0x91, 0x3c, 0xf5, + 0x46, 0xe1, 0x24, 0x29, 0xa2, 0xde, 0x28, 0x9c, 0x22, 0x6c, 0x94, 0x1b, 0x85, 0xd3, 0x24, 0x8f, + 0xda, 0x28, 0x5c, 0x4d, 0x3e, 0x55, 0x1b, 0x85, 0x33, 0x84, 0xb1, 0x72, 0xa3, 0x70, 0x0d, 0x79, + 0x50, 0x1b, 0x05, 0x44, 0x3e, 0x15, 0x1b, 0x85, 0x6b, 0xd1, 0x93, 0x60, 0x6a, 0x19, 0x3b, 0x14, + 0x44, 0x54, 0x00, 0x79, 0x19, 0x3b, 0x61, 0xa3, 0xff, 0xf3, 0x32, 0x5c, 0xcd, 0x26, 0x8a, 0x4b, + 0x96, 0xb9, 0xb3, 0x8a, 0xb7, 0xb4, 0xd6, 0x7e, 0xf9, 0x11, 0xd7, 0xe0, 0x0a, 0xef, 0xf9, 0x2a, + 0x90, 0xed, 0x06, 0x9d, 0x11, 0x79, 0x8e, 0xb5, 0x4f, 0xbd, 0x85, 0x2e, 0x39, 0x58, 0xe8, 0x62, + 0x16, 0xd9, 0x3f, 0x85, 0x35, 0x9a, 0x5b, 0x9b, 0xce, 0xf4, 0xac, 0x4d, 0xbb, 0xcd, 0xa4, 0x8b, + 0x2d, 0xdb, 0x34, 0xb4, 0x4e, 0x9d, 0x39, 0x05, 0xd0, 0x15, 0xb5, 0xde, 0x64, 0xe5, 0x7b, 0xbc, + 0x96, 0x41, 0xad, 0xb2, 0xe7, 0xc4, 0xcd, 0x87, 0x7b, 0xab, 0x19, 0xd1, 0x48, 0x3e, 0xe2, 0x37, + 0x92, 0x06, 0xd7, 0x48, 0xee, 0x3f, 0x04, 0xed, 0x64, 0xed, 0xa5, 0x32, 0xdc, 0x44, 0x24, 0x70, + 0x99, 0xf5, 0x96, 0xc2, 0x65, 0xf4, 0x09, 0x09, 0x4e, 0x97, 0x8d, 0x7e, 0xf3, 0x81, 0xb0, 0x2e, + 0xbc, 0x29, 0x0c, 0xcd, 0x3a, 0x2f, 0xd2, 0xbb, 0xfa, 0x56, 0xbb, 0x3f, 0xcd, 0x08, 0x89, 0x7e, + 0xd4, 0x97, 0x68, 0x9d, 0x93, 0xe8, 0x7d, 0xc3, 0x93, 0x4e, 0x26, 0xd0, 0xea, 0x48, 0x3b, 0xa0, + 0x2c, 0xfa, 0x82, 0x04, 0x27, 0xa8, 0x5f, 0xcf, 0x03, 0x74, 0xfa, 0x41, 0xba, 0x6c, 0xde, 0x84, + 0xea, 0x04, 0x53, 0x15, 0xaa, 0xdf, 0xa1, 0x14, 0xf4, 0xfa, 0xb0, 0xc0, 0x1f, 0xe4, 0x05, 0x1e, + 0xd1, 0x19, 0xf7, 0x16, 0x17, 0x21, 0xeb, 0x3f, 0xf0, 0x65, 0x5d, 0xe5, 0x64, 0x7d, 0xd7, 0x50, + 0x54, 0x8f, 0x56, 0xcc, 0x5f, 0xca, 0xc2, 0x93, 0x28, 0x87, 0x4c, 0x11, 0x68, 0x67, 0x56, 0x34, 0xda, 0x2a, 0xb6, 0x1d, 0xcd, 0x72, 0xb8, 0x23, 0xed, 0x3d, 0xf3, 0xdb, 0x4c, 0x0a, 0xf3, 0x5b, - 0x69, 0xe0, 0xfc, 0x16, 0xbd, 0x33, 0x6c, 0xa5, 0x9d, 0xe3, 0x91, 0x2d, 0xc6, 0x60, 0x10, 0x51, - 0xc3, 0xa8, 0x16, 0xe5, 0x9b, 0x6f, 0x3f, 0xc9, 0xa1, 0xbc, 0x74, 0xe0, 0x12, 0x92, 0x21, 0xfe, - 0x87, 0xa3, 0x35, 0xa7, 0xb3, 0xe1, 0x6f, 0xbc, 0xed, 0x57, 0x68, 0xa7, 0x3a, 0x0f, 0x7a, 0xe1, - 0x24, 0x4c, 0x91, 0x2e, 0x67, 0x55, 0x37, 0x2e, 0xb8, 0x63, 0xe3, 0x4c, 0x15, 0x5f, 0x2c, 0x6d, - 0x6b, 0x9d, 0x0e, 0x36, 0xb6, 0x30, 0x7a, 0x80, 0x33, 0xd0, 0xb5, 0x6e, 0xb7, 0x1a, 0x6c, 0x15, - 0x79, 0xaf, 0xca, 0xdd, 0x90, 0xb3, 0x5b, 0x66, 0x17, 0x13, 0x41, 0xcd, 0x85, 0x9c, 0x4b, 0xf8, + 0x69, 0xe0, 0xfc, 0x16, 0xbd, 0x3d, 0x6c, 0xa5, 0x5d, 0xe4, 0x91, 0x2d, 0xc6, 0x60, 0x10, 0x51, + 0xc3, 0xa8, 0x16, 0xe5, 0x9b, 0x6f, 0xdf, 0xcb, 0xa1, 0xbc, 0x74, 0xe8, 0x12, 0x92, 0x21, 0xfe, + 0xfb, 0xa3, 0x35, 0xa7, 0xb3, 0xe1, 0x6f, 0xbc, 0xed, 0x57, 0x68, 0xa7, 0x3a, 0x0f, 0x7a, 0xd9, + 0x24, 0x4c, 0x91, 0x2e, 0x67, 0x55, 0x37, 0x2e, 0xbb, 0x63, 0xe3, 0x4c, 0x15, 0x5f, 0x29, 0x6d, + 0x6b, 0x9d, 0x0e, 0x36, 0xb6, 0x30, 0x7a, 0x98, 0x33, 0xd0, 0xb5, 0x6e, 0xb7, 0x1a, 0x6c, 0x15, + 0x79, 0xaf, 0xca, 0x7d, 0x90, 0xb3, 0x5b, 0x66, 0x17, 0x13, 0x41, 0xcd, 0x85, 0x9c, 0x4b, 0xf8, 0xe5, 0xae, 0xe2, 0xae, 0xb3, 0x3d, 0x4f, 0xca, 0x2a, 0x76, 0xf5, 0xba, 0xfb, 0x83, 0x4a, 0xff, - 0x63, 0xe3, 0xe4, 0xd7, 0xfb, 0x76, 0xc6, 0x99, 0x98, 0xce, 0xd8, 0x67, 0x7c, 0x3e, 0xcc, 0x74, - 0xc4, 0x4a, 0xc6, 0x35, 0x30, 0xdd, 0xf2, 0xb2, 0xf8, 0x67, 0x67, 0xc2, 0x49, 0xe8, 0x6f, 0x13, - 0x75, 0xd7, 0x42, 0x85, 0x27, 0xd3, 0x2a, 0x3c, 0x62, 0x7b, 0xf1, 0x04, 0x1c, 0x6b, 0xd4, 0x6a, - 0xcd, 0xb5, 0x62, 0xf5, 0xfe, 0xe0, 0xcc, 0xfa, 0x26, 0x7a, 0x79, 0x16, 0xe6, 0xea, 0x66, 0x67, - 0x0f, 0x07, 0x38, 0x57, 0x38, 0xa7, 0xac, 0xb0, 0x9c, 0x32, 0xfb, 0xe4, 0xa4, 0x9c, 0x84, 0xbc, - 0x66, 0xd8, 0x17, 0xb1, 0x67, 0xc3, 0xb3, 0x37, 0x06, 0xe3, 0x07, 0xc2, 0x1d, 0x81, 0xca, 0xc3, - 0x78, 0xc7, 0x00, 0x49, 0xf2, 0x5c, 0x45, 0x00, 0x79, 0x06, 0x66, 0x6c, 0xba, 0x61, 0xdc, 0x08, - 0xf9, 0x05, 0x70, 0x69, 0x84, 0x45, 0xea, 0xb1, 0x20, 0x33, 0x16, 0xc9, 0x1b, 0x7a, 0x8d, 0xdf, - 0x7f, 0x6c, 0x70, 0x10, 0x17, 0x0f, 0xc2, 0x58, 0x32, 0x90, 0x5f, 0x39, 0xea, 0x99, 0xf8, 0x29, - 0x38, 0xce, 0x9a, 0x7d, 0xb3, 0xb4, 0x52, 0x5c, 0x5d, 0x2d, 0x57, 0x97, 0xcb, 0xcd, 0xca, 0x22, - 0xdd, 0x80, 0x0a, 0x52, 0x8a, 0x8d, 0x46, 0x79, 0x6d, 0xbd, 0x51, 0x6f, 0x96, 0x9f, 0x5e, 0x2a, - 0x97, 0x17, 0x89, 0x5b, 0x24, 0x39, 0xd7, 0xe4, 0x39, 0xb0, 0x16, 0xab, 0xf5, 0x73, 0x65, 0xb5, - 0xb0, 0x7d, 0xa6, 0x08, 0xd3, 0xa1, 0x81, 0xc2, 0xe5, 0x6e, 0x11, 0x6f, 0x6a, 0xbb, 0x1d, 0x66, - 0x53, 0x17, 0x8e, 0xb8, 0xdc, 0x11, 0xd9, 0xd4, 0x8c, 0xce, 0xa5, 0x42, 0x46, 0x29, 0xc0, 0x4c, - 0x78, 0x4c, 0x28, 0x48, 0xe8, 0x6d, 0x57, 0xc1, 0xd4, 0x39, 0xd3, 0xba, 0x40, 0x7c, 0xf9, 0xd0, - 0x7b, 0x69, 0x6c, 0x1b, 0xef, 0x94, 0x70, 0xc8, 0x00, 0x7b, 0xa5, 0xb8, 0xc7, 0x88, 0x47, 0x6d, - 0x7e, 0xe0, 0x49, 0xe0, 0x6b, 0x60, 0xfa, 0xa2, 0x97, 0x3b, 0x68, 0xe9, 0xa1, 0x24, 0xf4, 0xdf, - 0xc5, 0x7c, 0x40, 0x06, 0x17, 0x99, 0xbe, 0x8f, 0xc2, 0x5b, 0x25, 0xc8, 0x2f, 0x63, 0xa7, 0xd8, - 0xe9, 0x84, 0xe5, 0xf6, 0x12, 0xe1, 0xd3, 0x5d, 0x5c, 0x25, 0x8a, 0x9d, 0x4e, 0x74, 0xa3, 0x0a, - 0x09, 0xc8, 0x3b, 0x85, 0xc0, 0xa5, 0x09, 0xfa, 0x4e, 0x0e, 0x28, 0x30, 0x7d, 0x89, 0x7d, 0x48, - 0xf6, 0xfd, 0x1c, 0x1e, 0x0e, 0x99, 0x49, 0x4f, 0x0c, 0xe2, 0x1a, 0x65, 0xe2, 0xfd, 0x25, 0xbc, - 0x7c, 0xca, 0x7d, 0x30, 0xb1, 0x6b, 0xe3, 0x92, 0x66, 0x7b, 0x43, 0x1b, 0x5f, 0xd3, 0xda, 0xf9, - 0x07, 0x70, 0xcb, 0x99, 0xaf, 0xec, 0xb8, 0x13, 0x9f, 0x0d, 0x9a, 0xd1, 0x0f, 0x15, 0xc4, 0xde, - 0x55, 0x8f, 0x82, 0x3b, 0x79, 0xbc, 0xa8, 0x3b, 0xdb, 0xa5, 0x6d, 0xcd, 0x61, 0x3b, 0x16, 0xfe, - 0x3b, 0x7a, 0xc1, 0x10, 0x70, 0xc6, 0xee, 0xf0, 0x47, 0x1e, 0x12, 0x4d, 0x0c, 0xe2, 0x08, 0xb6, - 0xe5, 0x87, 0x01, 0xf1, 0x1f, 0x24, 0xc8, 0xd6, 0xba, 0xd8, 0x10, 0x3e, 0x11, 0xe5, 0xcb, 0x56, - 0xea, 0x91, 0xed, 0x6b, 0xc4, 0x3d, 0x04, 0xfd, 0x4a, 0xbb, 0x25, 0x47, 0x48, 0xf6, 0x66, 0xc8, - 0xea, 0xc6, 0xa6, 0xc9, 0x2c, 0xdb, 0x2b, 0x23, 0x6c, 0x9d, 0x8a, 0xb1, 0x69, 0xaa, 0x24, 0xa3, - 0xa8, 0x73, 0x60, 0x5c, 0xd9, 0xe9, 0x8b, 0xfb, 0x9b, 0x93, 0x90, 0xa7, 0xea, 0x8c, 0x5e, 0x2c, - 0x83, 0x5c, 0x6c, 0xb7, 0x23, 0x04, 0x2f, 0xed, 0x13, 0xbc, 0x49, 0x7e, 0xf3, 0x31, 0xf1, 0xdf, - 0xf9, 0x80, 0x36, 0x82, 0x7d, 0x3b, 0x6b, 0x52, 0xc5, 0x76, 0x3b, 0xda, 0x0f, 0xd9, 0x2f, 0x50, - 0xe2, 0x0b, 0x0c, 0xb7, 0x70, 0x59, 0xac, 0x85, 0x27, 0x1e, 0x08, 0x22, 0xf9, 0x4b, 0x1f, 0xa2, - 0x7f, 0x92, 0x60, 0x62, 0x55, 0xb7, 0x1d, 0x17, 0x9b, 0xa2, 0x08, 0x36, 0x57, 0xc1, 0x94, 0x27, - 0x1a, 0xb7, 0xcb, 0x73, 0xfb, 0xf3, 0x20, 0x81, 0x9f, 0x89, 0xdf, 0xcb, 0xa3, 0xf3, 0xe4, 0xf8, - 0xda, 0x33, 0x2e, 0xa2, 0x4f, 0x9a, 0x04, 0xc5, 0x4a, 0xbd, 0xc5, 0xfe, 0xb6, 0x2f, 0xf0, 0x35, - 0x4e, 0xe0, 0xb7, 0x0d, 0x53, 0x64, 0xfa, 0x42, 0xff, 0xbc, 0x04, 0xe0, 0x96, 0xcd, 0x8e, 0xf3, - 0x3d, 0x8e, 0x3b, 0xa4, 0x1f, 0x23, 0xdd, 0x97, 0x87, 0xa5, 0xbb, 0xc6, 0x4b, 0xf7, 0xc7, 0x07, - 0x57, 0x35, 0xee, 0xd8, 0x9e, 0x52, 0x00, 0x59, 0xf7, 0x45, 0xeb, 0x3e, 0xa2, 0xb7, 0xfa, 0x42, - 0x5d, 0xe7, 0x84, 0x7a, 0xc7, 0x90, 0x25, 0xa5, 0x2f, 0xd7, 0xbf, 0x94, 0x60, 0xa2, 0x8e, 0x1d, - 0xb7, 0x9b, 0x44, 0x67, 0x45, 0x7a, 0xf8, 0x50, 0xdb, 0x96, 0x04, 0xdb, 0xf6, 0x77, 0x32, 0xa2, - 0xc1, 0x7e, 0x02, 0xc9, 0x30, 0x9e, 0x22, 0x56, 0x1f, 0x1e, 0x16, 0x0a, 0xf6, 0x33, 0x88, 0x5a, - 0xfa, 0xd2, 0x7d, 0xb3, 0xe4, 0xbb, 0x5b, 0xf0, 0xa7, 0x6d, 0xc2, 0x66, 0x71, 0x66, 0xbf, 0x59, - 0x2c, 0x7e, 0xda, 0x26, 0x5c, 0xc7, 0x68, 0xef, 0x81, 0xc4, 0xc6, 0xc6, 0x08, 0x36, 0xf6, 0x87, - 0x91, 0xd7, 0xb3, 0x64, 0xc8, 0xb3, 0x1d, 0x80, 0xbb, 0xe3, 0x77, 0x00, 0x06, 0x4f, 0x2d, 0xde, - 0x33, 0x84, 0x29, 0x17, 0xb7, 0x2c, 0xef, 0xb3, 0x21, 0x85, 0xd8, 0xb8, 0x09, 0x72, 0x24, 0x1a, - 0x29, 0x1b, 0xe7, 0x02, 0x9f, 0x0c, 0x8f, 0x44, 0xd9, 0xfd, 0xaa, 0xd2, 0x4c, 0x89, 0x51, 0x18, - 0xc1, 0x4a, 0xfe, 0x30, 0x28, 0xbc, 0x4b, 0x01, 0x58, 0xdf, 0x3d, 0xdf, 0xd1, 0xed, 0x6d, 0xdd, - 0xd8, 0x42, 0xff, 0x9e, 0x81, 0x19, 0xf6, 0x4a, 0x83, 0x6a, 0xc6, 0x9a, 0x7f, 0x91, 0x46, 0x41, - 0x01, 0xe4, 0x5d, 0x4b, 0x67, 0xcb, 0x00, 0xee, 0xa3, 0x72, 0xa7, 0xef, 0x9e, 0x95, 0xed, 0x09, - 0xa7, 0xe0, 0x8a, 0x21, 0xe0, 0x60, 0x3e, 0x54, 0x7a, 0xe0, 0xa6, 0x15, 0x8e, 0x9c, 0x9a, 0xe3, - 0x23, 0xa7, 0x72, 0x67, 0x2c, 0xf3, 0x3d, 0x67, 0x2c, 0x5d, 0x1c, 0x6d, 0xfd, 0x19, 0x98, 0xf8, - 0xef, 0xc8, 0x2a, 0x79, 0x76, 0xff, 0x78, 0xc0, 0xd4, 0x0d, 0xb2, 0xa9, 0xc3, 0xdc, 0x87, 0x83, - 0x04, 0xf4, 0xc1, 0x60, 0x22, 0x63, 0x0a, 0x5a, 0xc1, 0x09, 0xc4, 0xc0, 0x95, 0x9d, 0xed, 0x2d, - 0xfb, 0x23, 0xc2, 0x91, 0xd2, 0x42, 0x02, 0x8b, 0x9d, 0x92, 0x30, 0x0e, 0x24, 0x9f, 0x83, 0xd0, - 0xae, 0x6c, 0x5c, 0x77, 0x3a, 0x88, 0x7e, 0x32, 0xc5, 0xdc, 0x19, 0x62, 0xf1, 0x45, 0x81, 0x39, - 0xef, 0xe4, 0x69, 0x6d, 0xe1, 0xde, 0x72, 0xa9, 0x51, 0xc0, 0xfb, 0x4f, 0xa3, 0x92, 0x73, 0xa7, - 0xf4, 0x8c, 0x69, 0xb0, 0xc0, 0x82, 0xfe, 0xa7, 0x04, 0x79, 0x66, 0x3b, 0xdc, 0x7d, 0x40, 0x08, - 0xd1, 0x2b, 0x86, 0x81, 0x24, 0x36, 0x00, 0xc0, 0xa7, 0x92, 0x02, 0x30, 0x02, 0x6b, 0xe1, 0xfe, - 0xd4, 0x00, 0x40, 0xff, 0x22, 0x41, 0xd6, 0xb5, 0x69, 0xc4, 0x8e, 0x57, 0x7f, 0x52, 0xd8, 0x55, - 0x39, 0x24, 0x00, 0x97, 0x7c, 0x84, 0x7e, 0x2f, 0xc0, 0x54, 0x97, 0x66, 0xf4, 0x0f, 0xf7, 0x5f, - 0x27, 0xd0, 0xb3, 0x60, 0x35, 0xf8, 0x0d, 0xbd, 0x5b, 0xc8, 0xdd, 0x39, 0x9e, 0x9f, 0x64, 0x70, - 0x94, 0x47, 0x71, 0x12, 0x7b, 0x13, 0x7d, 0x4f, 0x02, 0x50, 0xb1, 0x6d, 0x76, 0xf6, 0xf0, 0x86, - 0xa5, 0xa3, 0x2b, 0x03, 0x00, 0x58, 0xb3, 0xcf, 0x04, 0xcd, 0xfe, 0x33, 0x61, 0xc1, 0x2f, 0xf3, - 0x82, 0x7f, 0x62, 0xb4, 0xe6, 0x79, 0xc4, 0x23, 0xc4, 0x7f, 0x17, 0x4c, 0x30, 0x39, 0x32, 0x03, - 0x51, 0x4c, 0xf8, 0xde, 0x4f, 0xe8, 0x7d, 0xbe, 0xe8, 0xef, 0xe5, 0x44, 0xff, 0x94, 0xc4, 0x1c, - 0x25, 0x03, 0xa0, 0x34, 0x04, 0x00, 0x47, 0x61, 0xda, 0x03, 0x60, 0x43, 0xad, 0x14, 0x30, 0x7a, - 0x87, 0x4c, 0x7c, 0x1e, 0xe8, 0x48, 0x75, 0xf0, 0x9e, 0xe6, 0x6b, 0xc2, 0x33, 0xf7, 0x90, 0x3c, - 0xfc, 0xf2, 0x53, 0x02, 0xe8, 0x4f, 0x84, 0xa6, 0xea, 0x02, 0x0c, 0x3d, 0x5a, 0xfa, 0xab, 0x33, - 0x65, 0x98, 0xe5, 0x4c, 0x0c, 0xe5, 0x14, 0x1c, 0xe7, 0x12, 0xe8, 0x78, 0xd7, 0x2e, 0x1c, 0x51, - 0x10, 0x9c, 0xe4, 0xbe, 0xb0, 0x17, 0xdc, 0x2e, 0x64, 0xd0, 0x9f, 0x7d, 0x2e, 0xe3, 0x2f, 0xde, - 0xbc, 0x27, 0xcb, 0x96, 0xcd, 0x3e, 0xc6, 0xc7, 0x93, 0x6b, 0x99, 0x86, 0x83, 0x1f, 0x0c, 0xf9, - 0x9c, 0xf8, 0x09, 0xb1, 0x56, 0xc3, 0x29, 0x98, 0x70, 0xac, 0xb0, 0x1f, 0x8a, 0xf7, 0x1a, 0x56, - 0xac, 0x1c, 0xaf, 0x58, 0x55, 0x38, 0xa3, 0x1b, 0xad, 0xce, 0x6e, 0x1b, 0xab, 0xb8, 0xa3, 0xb9, - 0x32, 0xb4, 0x8b, 0xf6, 0x22, 0xee, 0x62, 0xa3, 0x8d, 0x0d, 0x87, 0xf2, 0xe9, 0x9d, 0x67, 0x13, - 0xc8, 0xc9, 0x2b, 0xe3, 0x9d, 0xbc, 0x32, 0x3e, 0xae, 0xdf, 0x7a, 0x6c, 0xcc, 0xe2, 0xdd, 0x6d, - 0x00, 0xb4, 0x6e, 0x67, 0x75, 0x7c, 0x91, 0xa9, 0xe1, 0x15, 0x3d, 0x4b, 0x78, 0x35, 0x3f, 0x83, - 0x1a, 0xca, 0x8c, 0x1e, 0xf1, 0xd5, 0xef, 0x1e, 0x4e, 0xfd, 0x6e, 0x12, 0x64, 0x21, 0x99, 0xd6, - 0x75, 0x87, 0xd0, 0xba, 0x59, 0x98, 0x0a, 0xb6, 0x86, 0x65, 0xe5, 0x0a, 0x38, 0xe1, 0xf9, 0xf4, - 0x56, 0xcb, 0xe5, 0xc5, 0x7a, 0x73, 0x63, 0x7d, 0x59, 0x2d, 0x2e, 0x96, 0x0b, 0xe0, 0xea, 0x27, - 0xd5, 0x4b, 0xdf, 0x15, 0x37, 0x8b, 0xfe, 0x5c, 0x82, 0x1c, 0x39, 0x8c, 0x89, 0x7e, 0x7a, 0x44, - 0x9a, 0x63, 0x73, 0x1e, 0x4c, 0xfe, 0xb8, 0x2b, 0x1e, 0xe7, 0x9d, 0x09, 0x93, 0x70, 0x75, 0xa0, - 0x38, 0xef, 0x31, 0x84, 0xd2, 0x9f, 0xd6, 0xb8, 0x4d, 0xb2, 0xbe, 0x6d, 0x5e, 0xfc, 0x61, 0x6e, - 0x92, 0x6e, 0xfd, 0x0f, 0xb9, 0x49, 0xf6, 0x61, 0x61, 0xec, 0x4d, 0xb2, 0x4f, 0xbb, 0x8b, 0x69, - 0xa6, 0xe8, 0x99, 0x39, 0x7f, 0xfe, 0xf7, 0x6c, 0xe9, 0x40, 0x1b, 0x59, 0x45, 0x98, 0xd5, 0x0d, - 0x07, 0x5b, 0x86, 0xd6, 0x59, 0xea, 0x68, 0x5b, 0x9e, 0x7d, 0xda, 0xbb, 0x7b, 0x51, 0x09, 0xe5, - 0x51, 0xf9, 0x3f, 0x94, 0xd3, 0x00, 0x0e, 0xde, 0xe9, 0x76, 0x34, 0x27, 0x50, 0xbd, 0x50, 0x4a, - 0x58, 0xfb, 0xb2, 0xbc, 0xf6, 0xdd, 0x02, 0x97, 0x51, 0xd0, 0x1a, 0x97, 0xba, 0x78, 0xc3, 0xd0, - 0x7f, 0x66, 0x97, 0x84, 0x1f, 0xa5, 0x3a, 0xda, 0xef, 0x13, 0xb7, 0x9d, 0x93, 0xef, 0xd9, 0xce, - 0xf9, 0x07, 0xe1, 0xb0, 0x26, 0x5e, 0xab, 0x1f, 0x10, 0xd6, 0xc4, 0x6f, 0x69, 0x72, 0x4f, 0x4b, - 0xf3, 0x17, 0x59, 0xb2, 0x02, 0x8b, 0x2c, 0x61, 0x54, 0x72, 0x82, 0x0b, 0x94, 0xaf, 0x16, 0x8a, - 0x9b, 0x12, 0x57, 0x8d, 0x31, 0x2c, 0x80, 0xcb, 0x30, 0x47, 0x8b, 0x5e, 0x30, 0xcd, 0x0b, 0x3b, - 0x9a, 0x75, 0x01, 0x59, 0x07, 0x52, 0xc5, 0xd8, 0xbd, 0xa4, 0xc8, 0x0d, 0xd2, 0x4f, 0x0b, 0xcf, - 0x19, 0x38, 0x71, 0x79, 0x3c, 0x8f, 0x67, 0x33, 0xe9, 0x8d, 0x42, 0x53, 0x08, 0x11, 0x06, 0xd3, - 0xc7, 0xf5, 0x8f, 0x7c, 0x5c, 0xbd, 0x8e, 0x3e, 0xbc, 0x0e, 0x3f, 0x4a, 0x5c, 0xd1, 0x97, 0x87, - 0xc3, 0xce, 0xe3, 0x6b, 0x08, 0xec, 0x0a, 0x20, 0x5f, 0xf0, 0x5d, 0x7f, 0xdc, 0xc7, 0x70, 0x85, - 0xb2, 0xe9, 0xa1, 0x19, 0xc1, 0xf2, 0x58, 0xd0, 0x3c, 0xce, 0xb3, 0x50, 0xeb, 0xa6, 0x8a, 0xe9, - 0x97, 0x84, 0xf7, 0xb7, 0xfa, 0x0a, 0x88, 0x72, 0x37, 0x9e, 0x56, 0x29, 0xb6, 0x39, 0x26, 0xce, - 0x66, 0xfa, 0x68, 0x3e, 0x3f, 0x07, 0x53, 0x5e, 0xe0, 0x19, 0x72, 0x2f, 0x92, 0x8f, 0xe1, 0x49, - 0xc8, 0xdb, 0xe6, 0xae, 0xd5, 0xc2, 0x6c, 0xc7, 0x91, 0xbd, 0x0d, 0xb1, 0x3b, 0x36, 0x70, 0x3c, - 0xdf, 0x67, 0x32, 0x64, 0x13, 0x9b, 0x0c, 0xd1, 0x06, 0x69, 0xdc, 0x00, 0xff, 0x02, 0xe1, 0x60, - 0xf6, 0x1c, 0x66, 0x75, 0xec, 0x3c, 0x1a, 0xc7, 0xf8, 0x3f, 0x10, 0xda, 0x7b, 0x19, 0x50, 0x93, - 0x64, 0x2a, 0x57, 0x1b, 0xc2, 0x50, 0xbd, 0x12, 0x2e, 0xf7, 0x72, 0x30, 0x0b, 0x95, 0x58, 0xa4, - 0x1b, 0xea, 0x6a, 0x41, 0x46, 0xcf, 0xca, 0x42, 0x81, 0xb2, 0x56, 0xf3, 0x8d, 0x35, 0xf4, 0x92, - 0xcc, 0x61, 0x5b, 0xa4, 0xd1, 0x53, 0xcc, 0xcf, 0x4a, 0xa2, 0x01, 0x73, 0x39, 0xc1, 0x07, 0xb5, - 0x8b, 0xd0, 0xa4, 0x21, 0x9a, 0x59, 0x8c, 0xf2, 0xa1, 0xdf, 0xca, 0x88, 0xc4, 0xdf, 0x15, 0x63, - 0x71, 0x0c, 0xc1, 0x92, 0xb2, 0x5e, 0xfc, 0xb0, 0x25, 0xcb, 0xdc, 0xd9, 0xb0, 0x3a, 0xe8, 0xff, - 0x14, 0x0a, 0x6f, 0x1e, 0x61, 0xfe, 0x4b, 0xd1, 0xe6, 0x3f, 0x59, 0x32, 0xee, 0x04, 0x7b, 0x55, - 0x9d, 0x21, 0x86, 0x6f, 0xe5, 0x7a, 0x98, 0xd3, 0xda, 0xed, 0x75, 0x6d, 0x0b, 0x97, 0xdc, 0x79, - 0xb5, 0xe1, 0xb0, 0xd8, 0x42, 0x3d, 0xa9, 0xb1, 0x5d, 0x91, 0xf8, 0x3a, 0x28, 0x07, 0x12, 0x93, - 0xcf, 0x58, 0x86, 0x37, 0x77, 0x48, 0x68, 0x6d, 0x6b, 0x41, 0xa4, 0x33, 0xf6, 0x26, 0xe8, 0xd9, - 0x24, 0xc0, 0x77, 0xfa, 0x9a, 0xf5, 0x7b, 0x12, 0x4c, 0xb8, 0xf2, 0x2e, 0xb6, 0xdb, 0xe8, 0xb1, - 0x5c, 0x40, 0xc0, 0x48, 0xdf, 0xb2, 0xe7, 0x0a, 0x3b, 0xf5, 0x79, 0x35, 0xa4, 0xf4, 0x23, 0x30, - 0x09, 0x84, 0x28, 0x71, 0x42, 0x14, 0xf3, 0xdd, 0x8b, 0x2d, 0x22, 0x7d, 0xf1, 0x7d, 0x52, 0x82, - 0x59, 0x6f, 0x1e, 0xb1, 0x84, 0x9d, 0xd6, 0x36, 0xba, 0x4d, 0x74, 0xa1, 0x89, 0xb5, 0x34, 0x7f, - 0x4f, 0xb6, 0x83, 0xbe, 0x9f, 0x49, 0xa8, 0xf2, 0x5c, 0xc9, 0x11, 0xab, 0x74, 0x89, 0x74, 0x31, - 0x8e, 0x60, 0xfa, 0xc2, 0x7c, 0x44, 0x02, 0x68, 0x98, 0xfe, 0x5c, 0xf7, 0x00, 0x92, 0x7c, 0x91, + 0x63, 0xe3, 0xe4, 0x17, 0xfb, 0x76, 0xc6, 0x99, 0x98, 0xce, 0xd8, 0x67, 0x7c, 0x3e, 0xcc, 0x74, + 0xc4, 0x4a, 0xc6, 0x39, 0x98, 0x6e, 0x79, 0x59, 0xfc, 0xb3, 0x33, 0xe1, 0x24, 0xf4, 0xb7, 0x89, + 0xba, 0x6b, 0xa1, 0xc2, 0x93, 0x69, 0x15, 0x1e, 0xb1, 0xbd, 0x78, 0x0a, 0x4e, 0x34, 0x6a, 0xb5, + 0xe6, 0x5a, 0xb1, 0xfa, 0x50, 0x70, 0x66, 0x7d, 0x13, 0xbd, 0x2a, 0x0b, 0x73, 0x75, 0xb3, 0xb3, + 0x87, 0x03, 0x9c, 0x2b, 0x9c, 0x53, 0x56, 0x58, 0x4e, 0x99, 0x03, 0x72, 0x52, 0x4e, 0x43, 0x5e, + 0x33, 0xec, 0x2b, 0xd8, 0xb3, 0xe1, 0xd9, 0x1b, 0x83, 0xf1, 0x77, 0xc2, 0x1d, 0x81, 0xca, 0xc3, + 0x78, 0xf7, 0x00, 0x49, 0xf2, 0x5c, 0x45, 0x00, 0x79, 0x1e, 0x66, 0x6c, 0xba, 0x61, 0xdc, 0x08, + 0xf9, 0x05, 0x70, 0x69, 0x84, 0x45, 0xea, 0xb1, 0x20, 0x33, 0x16, 0xc9, 0x1b, 0x7a, 0x9d, 0xdf, + 0x7f, 0x6c, 0x70, 0x10, 0x17, 0x0f, 0xc3, 0x58, 0x32, 0x90, 0x5f, 0x33, 0xea, 0x99, 0xf8, 0x19, + 0x38, 0xc9, 0x9a, 0x7d, 0xb3, 0xb4, 0x52, 0x5c, 0x5d, 0x2d, 0x57, 0x97, 0xcb, 0xcd, 0xca, 0x22, + 0xdd, 0x80, 0x0a, 0x52, 0x8a, 0x8d, 0x46, 0x79, 0x6d, 0xbd, 0x51, 0x6f, 0x96, 0x9f, 0x5b, 0x2a, + 0x97, 0x17, 0x89, 0x5b, 0x24, 0x39, 0xd7, 0xe4, 0x39, 0xb0, 0x16, 0xab, 0xf5, 0x8b, 0x65, 0xb5, + 0xb0, 0x7d, 0xbe, 0x08, 0xd3, 0xa1, 0x81, 0xc2, 0xe5, 0x6e, 0x11, 0x6f, 0x6a, 0xbb, 0x1d, 0x66, + 0x53, 0x17, 0x8e, 0xb9, 0xdc, 0x11, 0xd9, 0xd4, 0x8c, 0xce, 0x7e, 0x21, 0xa3, 0x14, 0x60, 0x26, + 0x3c, 0x26, 0x14, 0x24, 0xf4, 0x96, 0xeb, 0x60, 0xea, 0xa2, 0x69, 0x5d, 0x26, 0xbe, 0x7c, 0xe8, + 0xdd, 0x34, 0xb6, 0x8d, 0x77, 0x4a, 0x38, 0x64, 0x80, 0xbd, 0x46, 0xdc, 0x63, 0xc4, 0xa3, 0x36, + 0x3f, 0xf0, 0x24, 0xf0, 0x39, 0x98, 0xbe, 0xe2, 0xe5, 0x0e, 0x5a, 0x7a, 0x28, 0x09, 0xfd, 0x77, + 0x31, 0x1f, 0x90, 0xc1, 0x45, 0xa6, 0xef, 0xa3, 0xf0, 0x66, 0x09, 0xf2, 0xcb, 0xd8, 0x29, 0x76, + 0x3a, 0x61, 0xb9, 0xbd, 0x52, 0xf8, 0x74, 0x17, 0x57, 0x89, 0x62, 0xa7, 0x13, 0xdd, 0xa8, 0x42, + 0x02, 0xf2, 0x4e, 0x21, 0x70, 0x69, 0x82, 0xbe, 0x93, 0x03, 0x0a, 0x4c, 0x5f, 0x62, 0xbf, 0x27, + 0xfb, 0x7e, 0x0e, 0x8f, 0x85, 0xcc, 0xa4, 0xa7, 0x07, 0x71, 0x8d, 0x32, 0xf1, 0xfe, 0x12, 0x5e, + 0x3e, 0xe5, 0x41, 0x98, 0xd8, 0xb5, 0x71, 0x49, 0xb3, 0xbd, 0xa1, 0x8d, 0xaf, 0x69, 0xed, 0xd2, + 0xc3, 0xb8, 0xe5, 0xcc, 0x57, 0x76, 0xdc, 0x89, 0xcf, 0x06, 0xcd, 0xe8, 0x87, 0x0a, 0x62, 0xef, + 0xaa, 0x47, 0xc1, 0x9d, 0x3c, 0x5e, 0xd1, 0x9d, 0xed, 0xd2, 0xb6, 0xe6, 0xb0, 0x1d, 0x0b, 0xff, + 0x1d, 0xbd, 0x74, 0x08, 0x38, 0x63, 0x77, 0xf8, 0x23, 0x0f, 0x89, 0x26, 0x06, 0x71, 0x04, 0xdb, + 0xf2, 0xc3, 0x80, 0xf8, 0x0f, 0x12, 0x64, 0x6b, 0x5d, 0x6c, 0x08, 0x9f, 0x88, 0xf2, 0x65, 0x2b, + 0xf5, 0xc8, 0xf6, 0x75, 0xe2, 0x1e, 0x82, 0x7e, 0xa5, 0xdd, 0x92, 0x23, 0x24, 0x7b, 0x1b, 0x64, + 0x75, 0x63, 0xd3, 0x64, 0x96, 0xed, 0xb5, 0x11, 0xb6, 0x4e, 0xc5, 0xd8, 0x34, 0x55, 0x92, 0x51, + 0xd4, 0x39, 0x30, 0xae, 0xec, 0xf4, 0xc5, 0xfd, 0xe5, 0x49, 0xc8, 0x53, 0x75, 0x46, 0xaf, 0x90, + 0x41, 0x2e, 0xb6, 0xdb, 0x11, 0x82, 0x97, 0x0e, 0x08, 0xde, 0x24, 0xbf, 0xf9, 0x98, 0xf8, 0xef, + 0x7c, 0x40, 0x1b, 0xc1, 0xbe, 0x9d, 0x35, 0xa9, 0x62, 0xbb, 0x1d, 0xed, 0x87, 0xec, 0x17, 0x28, + 0xf1, 0x05, 0x86, 0x5b, 0xb8, 0x2c, 0xd6, 0xc2, 0x13, 0x0f, 0x04, 0x91, 0xfc, 0xa5, 0x0f, 0xd1, + 0x3f, 0x49, 0x30, 0xb1, 0xaa, 0xdb, 0x8e, 0x8b, 0x4d, 0x51, 0x04, 0x9b, 0xeb, 0x60, 0xca, 0x13, + 0x8d, 0xdb, 0xe5, 0xb9, 0xfd, 0x79, 0x90, 0xc0, 0xcf, 0xc4, 0x1f, 0xe0, 0xd1, 0x79, 0x66, 0x7c, + 0xed, 0x19, 0x17, 0xd1, 0x27, 0x4d, 0x82, 0x62, 0xa5, 0xde, 0x62, 0x7f, 0xcd, 0x17, 0xf8, 0x1a, + 0x27, 0xf0, 0x3b, 0x87, 0x29, 0x32, 0x7d, 0xa1, 0x7f, 0x52, 0x02, 0x70, 0xcb, 0x66, 0xc7, 0xf9, + 0x9e, 0xc2, 0x1d, 0xd2, 0x8f, 0x91, 0xee, 0xab, 0xc2, 0xd2, 0x5d, 0xe3, 0xa5, 0xfb, 0xdd, 0x83, + 0xab, 0x1a, 0x77, 0x6c, 0x4f, 0x29, 0x80, 0xac, 0xfb, 0xa2, 0x75, 0x1f, 0xd1, 0x9b, 0x7d, 0xa1, + 0xae, 0x73, 0x42, 0xbd, 0x7b, 0xc8, 0x92, 0xd2, 0x97, 0xeb, 0x5f, 0x4a, 0x30, 0x51, 0xc7, 0x8e, + 0xdb, 0x4d, 0xa2, 0x0b, 0x22, 0x3d, 0x7c, 0xa8, 0x6d, 0x4b, 0x82, 0x6d, 0xfb, 0x6b, 0x19, 0xd1, + 0x60, 0x3f, 0x81, 0x64, 0x18, 0x4f, 0x11, 0xab, 0x0f, 0x8f, 0x09, 0x05, 0xfb, 0x19, 0x44, 0x2d, + 0x7d, 0xe9, 0xbe, 0x49, 0xf2, 0xdd, 0x2d, 0xf8, 0xd3, 0x36, 0x61, 0xb3, 0x38, 0x73, 0xd0, 0x2c, + 0x16, 0x3f, 0x6d, 0x13, 0xae, 0x63, 0xb4, 0xf7, 0x40, 0x62, 0x63, 0x63, 0x04, 0x1b, 0xfb, 0xc3, + 0xc8, 0xeb, 0x05, 0x32, 0xe4, 0xd9, 0x0e, 0xc0, 0x7d, 0xf1, 0x3b, 0x00, 0x83, 0xa7, 0x16, 0xef, + 0x1a, 0xc2, 0x94, 0x8b, 0x5b, 0x96, 0xf7, 0xd9, 0x90, 0x42, 0x6c, 0xdc, 0x0a, 0x39, 0x12, 0x8d, + 0x94, 0x8d, 0x73, 0x81, 0x4f, 0x86, 0x47, 0xa2, 0xec, 0x7e, 0x55, 0x69, 0xa6, 0xc4, 0x28, 0x8c, + 0x60, 0x25, 0x7f, 0x18, 0x14, 0xde, 0xa1, 0x00, 0xac, 0xef, 0x5e, 0xea, 0xe8, 0xf6, 0xb6, 0x6e, + 0x6c, 0xa1, 0x7f, 0xcf, 0xc0, 0x0c, 0x7b, 0xa5, 0x41, 0x35, 0x63, 0xcd, 0xbf, 0x48, 0xa3, 0xa0, + 0x00, 0xf2, 0xae, 0xa5, 0xb3, 0x65, 0x00, 0xf7, 0x51, 0xb9, 0xc7, 0x77, 0xcf, 0xca, 0xf6, 0x84, + 0x53, 0x70, 0xc5, 0x10, 0x70, 0x30, 0x1f, 0x2a, 0x3d, 0x70, 0xd3, 0x0a, 0x47, 0x4e, 0xcd, 0xf1, + 0x91, 0x53, 0xb9, 0x33, 0x96, 0xf9, 0x9e, 0x33, 0x96, 0x2e, 0x8e, 0xb6, 0xfe, 0x3c, 0x4c, 0xfc, + 0x77, 0x64, 0x95, 0x3c, 0xbb, 0x7f, 0x3c, 0x6c, 0xea, 0x06, 0xd9, 0xd4, 0x61, 0xee, 0xc3, 0x41, + 0x02, 0x7a, 0x5f, 0x30, 0x91, 0x31, 0x05, 0xad, 0xe0, 0x04, 0x62, 0xe0, 0xca, 0xce, 0xf6, 0x96, + 0xfd, 0x01, 0xe1, 0x48, 0x69, 0x21, 0x81, 0xc5, 0x4e, 0x49, 0x18, 0x07, 0x92, 0xcf, 0x41, 0x68, + 0x57, 0x36, 0xae, 0x3b, 0x1d, 0x44, 0x3f, 0x99, 0x62, 0xee, 0x0c, 0xb1, 0xf8, 0xa2, 0xc0, 0x9c, + 0x77, 0xf2, 0xb4, 0xb6, 0xf0, 0x40, 0xb9, 0xd4, 0x28, 0xe0, 0x83, 0xa7, 0x51, 0xc9, 0xb9, 0x53, + 0x7a, 0xc6, 0x34, 0x58, 0x60, 0x41, 0xff, 0x53, 0x82, 0x3c, 0xb3, 0x1d, 0xee, 0x3b, 0x24, 0x84, + 0xe8, 0xd5, 0xc3, 0x40, 0x12, 0x1b, 0x00, 0xe0, 0x8f, 0x92, 0x02, 0x30, 0x02, 0x6b, 0xe1, 0xa1, + 0xd4, 0x00, 0x40, 0xff, 0x22, 0x41, 0xd6, 0xb5, 0x69, 0xc4, 0x8e, 0x57, 0x7f, 0x44, 0xd8, 0x55, + 0x39, 0x24, 0x00, 0x97, 0x7c, 0x84, 0x7e, 0x2f, 0xc0, 0x54, 0x97, 0x66, 0xf4, 0x0f, 0xf7, 0xdf, + 0x28, 0xd0, 0xb3, 0x60, 0x35, 0xf8, 0x0d, 0xbd, 0x53, 0xc8, 0xdd, 0x39, 0x9e, 0x9f, 0x64, 0x70, + 0x94, 0x47, 0x71, 0x12, 0x7b, 0x13, 0x7d, 0x43, 0x02, 0x50, 0xb1, 0x6d, 0x76, 0xf6, 0xf0, 0x86, + 0xa5, 0xa3, 0x6b, 0x03, 0x00, 0x58, 0xb3, 0xcf, 0x04, 0xcd, 0xfe, 0x63, 0x61, 0xc1, 0x2f, 0xf3, + 0x82, 0x7f, 0x7a, 0xb4, 0xe6, 0x79, 0xc4, 0x23, 0xc4, 0x7f, 0x2f, 0x4c, 0x30, 0x39, 0x32, 0x03, + 0x51, 0x4c, 0xf8, 0xde, 0x4f, 0xe8, 0x3d, 0xbe, 0xe8, 0x1f, 0xe0, 0x44, 0xff, 0xac, 0xc4, 0x1c, + 0x25, 0x03, 0xa0, 0x34, 0x04, 0x00, 0xc7, 0x61, 0xda, 0x03, 0x60, 0x43, 0xad, 0x14, 0x30, 0x7a, + 0x9b, 0x4c, 0x7c, 0x1e, 0xe8, 0x48, 0x75, 0xf8, 0x9e, 0xe6, 0x0b, 0xc2, 0x33, 0xf7, 0x90, 0x3c, + 0xfc, 0xf2, 0x53, 0x02, 0xe8, 0x4f, 0x84, 0xa6, 0xea, 0x02, 0x0c, 0x3d, 0x51, 0xfa, 0xab, 0xf3, + 0x65, 0x98, 0xe5, 0x4c, 0x0c, 0xe5, 0x0c, 0x9c, 0xe4, 0x12, 0xe8, 0x78, 0xd7, 0x2e, 0x1c, 0x53, + 0x10, 0x9c, 0xe6, 0xbe, 0xb0, 0x17, 0xdc, 0x2e, 0x64, 0xd0, 0x2b, 0x3e, 0x99, 0xf1, 0x17, 0x6f, + 0xde, 0x95, 0x65, 0xcb, 0x66, 0x1f, 0xe2, 0xe3, 0xc9, 0xb5, 0x4c, 0xc3, 0xc1, 0x8f, 0x84, 0x7c, + 0x4e, 0xfc, 0x84, 0x58, 0xab, 0xe1, 0x0c, 0x4c, 0x38, 0x56, 0xd8, 0x0f, 0xc5, 0x7b, 0x0d, 0x2b, + 0x56, 0x8e, 0x57, 0xac, 0x2a, 0x9c, 0xd7, 0x8d, 0x56, 0x67, 0xb7, 0x8d, 0x55, 0xdc, 0xd1, 0x5c, + 0x19, 0xda, 0x45, 0x7b, 0x11, 0x77, 0xb1, 0xd1, 0xc6, 0x86, 0x43, 0xf9, 0xf4, 0xce, 0xb3, 0x09, + 0xe4, 0xe4, 0x95, 0xf1, 0x1e, 0x5e, 0x19, 0x9f, 0xd2, 0x6f, 0x3d, 0x36, 0x66, 0xf1, 0xee, 0x4e, + 0x00, 0x5a, 0xb7, 0x0b, 0x3a, 0xbe, 0xc2, 0xd4, 0xf0, 0x9a, 0x9e, 0x25, 0xbc, 0x9a, 0x9f, 0x41, + 0x0d, 0x65, 0x46, 0x8f, 0xfb, 0xea, 0x77, 0x3f, 0xa7, 0x7e, 0xb7, 0x0a, 0xb2, 0x90, 0x4c, 0xeb, + 0xba, 0x43, 0x68, 0xdd, 0x2c, 0x4c, 0x05, 0x5b, 0xc3, 0xb2, 0x72, 0x0d, 0x9c, 0xf2, 0x7c, 0x7a, + 0xab, 0xe5, 0xf2, 0x62, 0xbd, 0xb9, 0xb1, 0xbe, 0xac, 0x16, 0x17, 0xcb, 0x05, 0x70, 0xf5, 0x93, + 0xea, 0xa5, 0xef, 0x8a, 0x9b, 0x45, 0x7f, 0x2e, 0x41, 0x8e, 0x1c, 0xc6, 0x44, 0xdf, 0x3f, 0x22, + 0xcd, 0xb1, 0x39, 0x0f, 0x26, 0x7f, 0xdc, 0x15, 0x8f, 0xf3, 0xce, 0x84, 0x49, 0xb8, 0x3a, 0x54, + 0x9c, 0xf7, 0x18, 0x42, 0xe9, 0x4f, 0x6b, 0xdc, 0x26, 0x59, 0xdf, 0x36, 0xaf, 0x7c, 0x3b, 0x37, + 0x49, 0xb7, 0xfe, 0x47, 0xdc, 0x24, 0xfb, 0xb0, 0x30, 0xf6, 0x26, 0xd9, 0xa7, 0xdd, 0xc5, 0x34, + 0x53, 0xf4, 0xfc, 0x9c, 0x3f, 0xff, 0x7b, 0xa1, 0x74, 0xa8, 0x8d, 0xac, 0x22, 0xcc, 0xea, 0x86, + 0x83, 0x2d, 0x43, 0xeb, 0x2c, 0x75, 0xb4, 0x2d, 0xcf, 0x3e, 0xed, 0xdd, 0xbd, 0xa8, 0x84, 0xf2, + 0xa8, 0xfc, 0x1f, 0xca, 0x59, 0x00, 0x07, 0xef, 0x74, 0x3b, 0x9a, 0x13, 0xa8, 0x5e, 0x28, 0x25, + 0xac, 0x7d, 0x59, 0x5e, 0xfb, 0x6e, 0x87, 0xab, 0x28, 0x68, 0x8d, 0xfd, 0x2e, 0xde, 0x30, 0xf4, + 0x1f, 0xd8, 0x25, 0xe1, 0x47, 0xa9, 0x8e, 0xf6, 0xfb, 0xc4, 0x6d, 0xe7, 0xe4, 0x7b, 0xb6, 0x73, + 0xfe, 0x41, 0x38, 0xac, 0x89, 0xd7, 0xea, 0x07, 0x84, 0x35, 0xf1, 0x5b, 0x9a, 0xdc, 0xd3, 0xd2, + 0xfc, 0x45, 0x96, 0xac, 0xc0, 0x22, 0x4b, 0x18, 0x95, 0x9c, 0xe0, 0x02, 0xe5, 0x6b, 0x85, 0xe2, + 0xa6, 0xc4, 0x55, 0x63, 0x0c, 0x0b, 0xe0, 0x32, 0xcc, 0xd1, 0xa2, 0x17, 0x4c, 0xf3, 0xf2, 0x8e, + 0x66, 0x5d, 0x46, 0xd6, 0xa1, 0x54, 0x31, 0x76, 0x2f, 0x29, 0x72, 0x83, 0xf4, 0xa3, 0xc2, 0x73, + 0x06, 0x4e, 0x5c, 0x1e, 0xcf, 0xe3, 0xd9, 0x4c, 0xfa, 0x15, 0xa1, 0x29, 0x84, 0x08, 0x83, 0xe9, + 0xe3, 0xfa, 0x87, 0x3e, 0xae, 0x5e, 0x47, 0x1f, 0x5e, 0x87, 0x1f, 0x25, 0xae, 0xe8, 0xb3, 0xc3, + 0x61, 0xe7, 0xf1, 0x35, 0x04, 0x76, 0x05, 0x90, 0x2f, 0xfb, 0xae, 0x3f, 0xee, 0x63, 0xb8, 0x42, + 0xd9, 0xf4, 0xd0, 0x8c, 0x60, 0x79, 0x2c, 0x68, 0x9e, 0xe4, 0x59, 0xa8, 0x75, 0x53, 0xc5, 0xf4, + 0x33, 0xc2, 0xfb, 0x5b, 0x7d, 0x05, 0x44, 0xb9, 0x1b, 0x4f, 0xab, 0x14, 0xdb, 0x1c, 0x13, 0x67, + 0x33, 0x7d, 0x34, 0x5f, 0x92, 0x83, 0x29, 0x2f, 0xf0, 0x0c, 0xb9, 0x17, 0xc9, 0xc7, 0xf0, 0x34, + 0xe4, 0x6d, 0x73, 0xd7, 0x6a, 0x61, 0xb6, 0xe3, 0xc8, 0xde, 0x86, 0xd8, 0x1d, 0x1b, 0x38, 0x9e, + 0x1f, 0x30, 0x19, 0xb2, 0x89, 0x4d, 0x86, 0x68, 0x83, 0x34, 0x6e, 0x80, 0x7f, 0xa9, 0x70, 0x30, + 0x7b, 0x0e, 0xb3, 0x3a, 0x76, 0x9e, 0x88, 0x63, 0xfc, 0xef, 0x0a, 0xed, 0xbd, 0x0c, 0xa8, 0x49, + 0x32, 0x95, 0xab, 0x0d, 0x61, 0xa8, 0x5e, 0x0b, 0x57, 0x7b, 0x39, 0x98, 0x85, 0x4a, 0x2c, 0xd2, + 0x0d, 0x75, 0xb5, 0x20, 0xa3, 0x17, 0x64, 0xa1, 0x40, 0x59, 0xab, 0xf9, 0xc6, 0x1a, 0x7a, 0x65, + 0xe6, 0xa8, 0x2d, 0xd2, 0xe8, 0x29, 0xe6, 0xc7, 0x25, 0xd1, 0x80, 0xb9, 0x9c, 0xe0, 0x83, 0xda, + 0x45, 0x68, 0xd2, 0x10, 0xcd, 0x2c, 0x46, 0xf9, 0xd0, 0xaf, 0x66, 0x44, 0xe2, 0xef, 0x8a, 0xb1, + 0x38, 0x86, 0x60, 0x49, 0x59, 0x2f, 0x7e, 0xd8, 0x92, 0x65, 0xee, 0x6c, 0x58, 0x1d, 0xf4, 0x7f, + 0x0a, 0x85, 0x37, 0x8f, 0x30, 0xff, 0xa5, 0x68, 0xf3, 0x9f, 0x2c, 0x19, 0x77, 0x82, 0xbd, 0xaa, + 0xce, 0x10, 0xc3, 0xb7, 0x72, 0x13, 0xcc, 0x69, 0xed, 0xf6, 0xba, 0xb6, 0x85, 0x4b, 0xee, 0xbc, + 0xda, 0x70, 0x58, 0x6c, 0xa1, 0x9e, 0xd4, 0xd8, 0xae, 0x48, 0x7c, 0x1d, 0x94, 0x03, 0x89, 0xc9, + 0x67, 0x2c, 0xc3, 0x9b, 0x3b, 0x24, 0xb4, 0xb6, 0xb5, 0x20, 0xd2, 0x19, 0x7b, 0x13, 0xf4, 0x6c, + 0x12, 0xe0, 0x3b, 0x7d, 0xcd, 0xfa, 0x2d, 0x09, 0x26, 0x5c, 0x79, 0x17, 0xdb, 0x6d, 0xf4, 0x64, + 0x2e, 0x20, 0x60, 0xa4, 0x6f, 0xd9, 0x8f, 0x0a, 0x3b, 0xf5, 0x79, 0x35, 0xa4, 0xf4, 0x23, 0x30, + 0x09, 0x84, 0x28, 0x71, 0x42, 0x14, 0xf3, 0xdd, 0x8b, 0x2d, 0x22, 0x7d, 0xf1, 0x7d, 0x44, 0x82, + 0x59, 0x6f, 0x1e, 0xb1, 0x84, 0x9d, 0xd6, 0x36, 0xba, 0x53, 0x74, 0xa1, 0x89, 0xb5, 0x34, 0x7f, + 0x4f, 0xb6, 0x83, 0xbe, 0x99, 0x49, 0xa8, 0xf2, 0x5c, 0xc9, 0x11, 0xab, 0x74, 0x89, 0x74, 0x31, + 0x8e, 0x60, 0xfa, 0xc2, 0x7c, 0x5c, 0x02, 0x68, 0x98, 0xfe, 0x5c, 0xf7, 0x10, 0x92, 0x7c, 0xb9, 0xf0, 0x76, 0x2d, 0xab, 0x78, 0x50, 0x6c, 0xf2, 0x9e, 0x43, 0xd0, 0x35, 0x69, 0x50, 0x49, 0x63, 0x69, 0xeb, 0x53, 0x8b, 0xbb, 0xdd, 0x8e, 0xde, 0xd2, 0x9c, 0x5e, 0x7f, 0xba, 0x68, 0xf1, 0x92, 0x4b, 0x43, 0x13, 0x19, 0x85, 0x7e, 0x19, 0x11, 0xb2, 0xa4, 0xa1, 0x67, 0x24, 0x2f, 0xf4, 0x8c, - 0xa0, 0x8f, 0xcc, 0x00, 0xe2, 0x63, 0x50, 0x4f, 0x19, 0x8e, 0xd6, 0xba, 0xd8, 0x58, 0xb0, 0xb0, - 0xd6, 0x6e, 0x59, 0xbb, 0x3b, 0xe7, 0xed, 0xb0, 0x33, 0x68, 0xbc, 0x8e, 0x86, 0x96, 0x8e, 0x25, - 0x6e, 0xe9, 0x18, 0xfd, 0x82, 0x2c, 0x1a, 0x08, 0x29, 0xb4, 0xc1, 0x11, 0xe2, 0x61, 0x88, 0xa1, - 0x2e, 0x91, 0x0b, 0x53, 0xcf, 0x2a, 0x71, 0x36, 0xc9, 0x2a, 0xf1, 0x9b, 0x84, 0xc2, 0x2a, 0x09, - 0xd5, 0x6b, 0x2c, 0x9e, 0x68, 0x73, 0x75, 0xec, 0x44, 0xc0, 0x7b, 0x1d, 0xcc, 0x9e, 0x0f, 0xbe, - 0xf8, 0x10, 0xf3, 0x89, 0x7d, 0xfc, 0x43, 0xdf, 0x9c, 0x74, 0x05, 0x86, 0x67, 0x21, 0x02, 0x5d, - 0x1f, 0x41, 0x49, 0xc4, 0x09, 0x2d, 0xd1, 0x72, 0x4a, 0x6c, 0xf9, 0xe9, 0xa3, 0xf0, 0x11, 0x09, - 0xa6, 0xc9, 0x55, 0xa8, 0x0b, 0x97, 0xc8, 0xb1, 0x48, 0x41, 0xa3, 0xe4, 0xf9, 0x61, 0x31, 0x2b, - 0x90, 0xed, 0xe8, 0xc6, 0x05, 0xcf, 0x7b, 0xd0, 0x7d, 0x0e, 0x2e, 0xd6, 0x93, 0xfa, 0x5c, 0xac, - 0xe7, 0xef, 0x53, 0xf8, 0xe5, 0x1e, 0xe8, 0xa6, 0xe7, 0x81, 0xe4, 0xd2, 0x17, 0xe3, 0xdf, 0x65, - 0x21, 0x5f, 0xc7, 0x9a, 0xd5, 0xda, 0x46, 0xef, 0x91, 0xfa, 0x4e, 0x15, 0x26, 0xf9, 0xa9, 0xc2, - 0x12, 0x4c, 0x6c, 0xea, 0x1d, 0x07, 0x5b, 0xd4, 0xa3, 0x3a, 0xdc, 0xb5, 0xd3, 0x26, 0xbe, 0xd0, - 0x31, 0x5b, 0x17, 0xe6, 0x99, 0xe9, 0x3e, 0xef, 0x05, 0x62, 0x9d, 0x5f, 0x22, 0x3f, 0xa9, 0xde, - 0xcf, 0xae, 0x41, 0x68, 0x9b, 0x96, 0x13, 0x75, 0xc7, 0x46, 0x04, 0x95, 0xba, 0x69, 0x39, 0x2a, - 0xfd, 0xd1, 0x85, 0x79, 0x73, 0xb7, 0xd3, 0x69, 0xe0, 0x07, 0x1d, 0x6f, 0xda, 0xe6, 0xbd, 0xbb, - 0xc6, 0xa2, 0xb9, 0xb9, 0x69, 0x63, 0xba, 0x68, 0x90, 0x53, 0xd9, 0x9b, 0x72, 0x1c, 0x72, 0x1d, - 0x7d, 0x47, 0xa7, 0x13, 0x8d, 0x9c, 0x4a, 0x5f, 0x94, 0x1b, 0xa1, 0x10, 0xcc, 0x71, 0x28, 0xa3, - 0xa7, 0xf2, 0xa4, 0x69, 0xee, 0x4b, 0x77, 0x75, 0xe6, 0x02, 0xbe, 0x64, 0x9f, 0x9a, 0x20, 0xdf, - 0xc9, 0x33, 0x7f, 0x7c, 0x45, 0x64, 0xbf, 0x83, 0x4a, 0x3c, 0x7a, 0x06, 0x6b, 0xe1, 0x96, 0x69, - 0xb5, 0x3d, 0xd9, 0x44, 0x4f, 0x30, 0x58, 0xbe, 0x64, 0xbb, 0x14, 0x7d, 0x0b, 0x4f, 0x5f, 0xd3, - 0xde, 0x99, 0x77, 0xbb, 0x4d, 0xb7, 0xe8, 0x73, 0xba, 0xb3, 0xbd, 0x86, 0x1d, 0x0d, 0xfd, 0x9d, - 0xdc, 0x57, 0xe3, 0xa6, 0xff, 0x3f, 0x8d, 0x1b, 0xa0, 0x71, 0x34, 0x0c, 0x96, 0xb3, 0x6b, 0x19, - 0xae, 0x1c, 0x99, 0x57, 0x6a, 0x28, 0x45, 0xb9, 0x03, 0xae, 0x08, 0xde, 0xbc, 0xa5, 0xd2, 0x45, - 0x36, 0x6d, 0x9d, 0x22, 0xd9, 0xa3, 0x33, 0x28, 0xeb, 0x70, 0x2d, 0xfd, 0xb8, 0xd2, 0x58, 0x5b, - 0x5d, 0xd1, 0xb7, 0xb6, 0x3b, 0xfa, 0xd6, 0xb6, 0x63, 0x57, 0x0c, 0xdb, 0xc1, 0x5a, 0xbb, 0xb6, - 0xa9, 0xd2, 0xdb, 0x71, 0x80, 0xd0, 0x11, 0xc9, 0xca, 0x7b, 0x5c, 0x8b, 0x8d, 0x6e, 0x61, 0x4d, - 0x89, 0x68, 0x29, 0x4f, 0x71, 0x5b, 0x8a, 0xbd, 0xdb, 0xf1, 0x31, 0xbd, 0xaa, 0x07, 0xd3, 0x40, - 0xd5, 0x77, 0x3b, 0xa4, 0xb9, 0x90, 0xcc, 0x49, 0xc7, 0xb9, 0x18, 0x4e, 0xd2, 0x6f, 0x36, 0xff, - 0x4f, 0x1e, 0x72, 0xcb, 0x96, 0xd6, 0xdd, 0x46, 0xcf, 0x0a, 0xf5, 0xcf, 0xa3, 0x6a, 0x13, 0xbe, - 0x76, 0x4a, 0x83, 0xb4, 0x53, 0x1e, 0xa0, 0x9d, 0xd9, 0x90, 0x76, 0x46, 0x2f, 0x2a, 0x9f, 0x81, - 0x99, 0x96, 0xd9, 0xe9, 0xe0, 0x96, 0x2b, 0x8f, 0x4a, 0x9b, 0xac, 0xe6, 0x4c, 0xa9, 0x5c, 0x1a, - 0x09, 0x56, 0x8d, 0x9d, 0x3a, 0x5d, 0x43, 0xa7, 0x4a, 0x1f, 0x24, 0xa0, 0x97, 0x48, 0x90, 0x2d, - 0xb7, 0xb7, 0x30, 0xb7, 0xce, 0x9e, 0x09, 0xad, 0xb3, 0x9f, 0x84, 0xbc, 0xa3, 0x59, 0x5b, 0xd8, - 0xf1, 0xd6, 0x09, 0xe8, 0x9b, 0x1f, 0x43, 0x5b, 0x0e, 0xc5, 0xd0, 0xfe, 0x71, 0xc8, 0xba, 0x32, - 0x63, 0x4e, 0xe6, 0xd7, 0xf6, 0x83, 0x9f, 0xc8, 0x7e, 0xde, 0x2d, 0x71, 0xde, 0xad, 0xb5, 0x4a, - 0x7e, 0xe8, 0xc5, 0x3a, 0xb7, 0x0f, 0x6b, 0x72, 0xd1, 0x67, 0xcb, 0x34, 0x2a, 0x3b, 0xda, 0x16, - 0x66, 0xd5, 0x0c, 0x12, 0xbc, 0xaf, 0xe5, 0x1d, 0xf3, 0x01, 0x9d, 0x45, 0x8b, 0x0c, 0x12, 0xdc, - 0x2a, 0x6c, 0xeb, 0xed, 0x36, 0x36, 0x58, 0xcb, 0x66, 0x6f, 0x67, 0x4e, 0x43, 0xd6, 0xe5, 0xc1, - 0xd5, 0x1f, 0xd7, 0x58, 0x28, 0x1c, 0x51, 0x66, 0xdc, 0x66, 0x45, 0x1b, 0x6f, 0x21, 0xc3, 0xaf, - 0xa9, 0x8a, 0xb8, 0xed, 0xd0, 0xca, 0xf5, 0x6f, 0x5c, 0x4f, 0x80, 0x9c, 0x61, 0xb6, 0xf1, 0xc0, - 0x41, 0x88, 0xe6, 0x52, 0x9e, 0x0c, 0x39, 0xdc, 0x76, 0x7b, 0x05, 0x99, 0x64, 0x3f, 0x1d, 0x2f, - 0x4b, 0x95, 0x66, 0x4e, 0xe6, 0x1b, 0xd4, 0x8f, 0xdb, 0xf4, 0x1b, 0xe0, 0x2f, 0x4d, 0xc0, 0x51, - 0xda, 0x07, 0xd4, 0x77, 0xcf, 0xbb, 0xa4, 0xce, 0x63, 0xf4, 0x70, 0xff, 0x81, 0xeb, 0x28, 0xaf, - 0xec, 0xc7, 0x21, 0x67, 0xef, 0x9e, 0xf7, 0x8d, 0x50, 0xfa, 0x12, 0x6e, 0xba, 0xd2, 0x48, 0x86, - 0x33, 0x79, 0xd8, 0xe1, 0x8c, 0x1b, 0x9a, 0x64, 0xaf, 0xf1, 0x07, 0x03, 0x19, 0x3d, 0x1e, 0xe1, - 0x0d, 0x64, 0xfd, 0x86, 0xa1, 0x53, 0x30, 0xa1, 0x6d, 0x3a, 0xd8, 0x0a, 0xcc, 0x44, 0xf6, 0xea, - 0x0e, 0x95, 0xe7, 0xf1, 0xa6, 0x69, 0xb9, 0x62, 0xa1, 0x21, 0xd4, 0xfd, 0xf7, 0x50, 0xcb, 0x05, - 0x6e, 0x87, 0xec, 0x26, 0x38, 0x66, 0x98, 0x8b, 0xb8, 0xcb, 0xe4, 0x4c, 0x51, 0x9c, 0x25, 0x2d, - 0x60, 0xff, 0x87, 0x7d, 0x5d, 0xc9, 0xdc, 0xfe, 0xae, 0x04, 0x7d, 0x26, 0xe9, 0x9c, 0xb9, 0x07, - 0xe8, 0x91, 0x59, 0x68, 0xca, 0xd3, 0x60, 0xa6, 0xcd, 0x5c, 0xb4, 0x5a, 0xba, 0xdf, 0x4a, 0x22, - 0xff, 0xe3, 0x32, 0x07, 0x8a, 0x94, 0x0d, 0x2b, 0xd2, 0x32, 0x4c, 0x92, 0x83, 0xcc, 0xae, 0x26, - 0xe5, 0x7a, 0x5c, 0xe2, 0xc9, 0xb4, 0xce, 0xaf, 0x54, 0x48, 0x6c, 0xf3, 0x25, 0xf6, 0x8b, 0xea, - 0xff, 0x9c, 0x6c, 0xf6, 0x1d, 0x2f, 0xa1, 0xf4, 0x9b, 0xe3, 0x6f, 0xe7, 0xe1, 0x8a, 0x92, 0x65, - 0xda, 0x36, 0x39, 0x03, 0xd3, 0xdb, 0x30, 0xdf, 0x20, 0x71, 0xb7, 0x69, 0x3c, 0xaa, 0x9b, 0x5f, - 0xbf, 0x06, 0x35, 0xbe, 0xa6, 0xf1, 0x35, 0xe1, 0x10, 0x30, 0xfe, 0xfe, 0x43, 0x84, 0xd0, 0x7f, - 0x38, 0x1a, 0xc9, 0x3b, 0x33, 0x22, 0x51, 0x69, 0x12, 0xca, 0x2a, 0xfd, 0xe6, 0xf2, 0x25, 0x09, - 0xae, 0xec, 0xe5, 0x66, 0xc3, 0xb0, 0xfd, 0x06, 0x73, 0xf5, 0x80, 0xf6, 0xc2, 0x47, 0x31, 0x89, - 0xbd, 0xc7, 0x32, 0xa2, 0xee, 0xa1, 0xd2, 0x22, 0x16, 0x4b, 0x82, 0x13, 0x35, 0x71, 0xf7, 0x58, - 0x26, 0x26, 0x9f, 0xbe, 0x70, 0x3f, 0x9b, 0x85, 0xa3, 0xcb, 0x96, 0xb9, 0xdb, 0xb5, 0x83, 0x1e, - 0xe8, 0xaf, 0xfb, 0x6f, 0xb8, 0xe6, 0x45, 0x4c, 0x83, 0x6b, 0x60, 0xda, 0x62, 0xd6, 0x5c, 0xb0, - 0xfd, 0x1a, 0x4e, 0x0a, 0xf7, 0x5e, 0xf2, 0x41, 0x7a, 0xaf, 0xa0, 0x9f, 0xc9, 0x72, 0xfd, 0x4c, - 0x6f, 0xcf, 0x91, 0xeb, 0xd3, 0x73, 0xfc, 0x95, 0x94, 0x70, 0x50, 0xed, 0x11, 0x51, 0x44, 0x7f, - 0x51, 0x82, 0xfc, 0x16, 0xc9, 0xc8, 0xba, 0x8b, 0xc7, 0x8b, 0xd5, 0x8c, 0x10, 0x57, 0xd9, 0xaf, - 0x81, 0x5c, 0xe5, 0xb0, 0x0e, 0x27, 0x1a, 0xe0, 0xe2, 0xb9, 0x4d, 0x5f, 0xa9, 0x5e, 0x93, 0x85, - 0x19, 0xbf, 0xf4, 0x4a, 0xdb, 0x46, 0xcf, 0xef, 0xaf, 0x51, 0xb3, 0x22, 0x1a, 0xb5, 0x6f, 0x9d, - 0xd9, 0x1f, 0x75, 0xe4, 0xd0, 0xa8, 0xd3, 0x77, 0x74, 0x99, 0x89, 0x18, 0x5d, 0xd0, 0x33, 0x65, - 0xd1, 0xfb, 0xa8, 0xf8, 0xae, 0x95, 0xd4, 0xe6, 0xd1, 0x3c, 0x58, 0x08, 0xde, 0x8a, 0x35, 0xb8, - 0x56, 0xe9, 0x2b, 0xc9, 0xfb, 0x25, 0x38, 0xb6, 0xbf, 0x33, 0xff, 0x11, 0xde, 0x0b, 0xcd, 0xad, - 0x93, 0xed, 0x7b, 0xa1, 0x91, 0x37, 0x7e, 0x93, 0x2e, 0x36, 0xa4, 0x08, 0x67, 0xef, 0x0d, 0xee, - 0xc4, 0xc5, 0x82, 0x86, 0x08, 0x12, 0x4d, 0x5f, 0x80, 0xbf, 0x2a, 0xc3, 0x54, 0x1d, 0x3b, 0xab, - 0xda, 0x25, 0x73, 0xd7, 0x41, 0x9a, 0xe8, 0xf6, 0xdc, 0x53, 0x21, 0xdf, 0x21, 0xbf, 0xb0, 0x6b, - 0xfe, 0xaf, 0xe9, 0xbb, 0xbf, 0x45, 0x7c, 0x7f, 0x28, 0x69, 0x95, 0xe5, 0xe7, 0x63, 0xb9, 0x88, - 0xec, 0x8e, 0xfa, 0xdc, 0x8d, 0x64, 0x6b, 0x27, 0xd1, 0xde, 0x69, 0x54, 0xd1, 0xe9, 0xc3, 0xf2, - 0x0b, 0x32, 0xcc, 0xd6, 0xb1, 0x53, 0xb1, 0x97, 0xb4, 0x3d, 0xd3, 0xd2, 0x1d, 0x1c, 0xbe, 0xe7, - 0x33, 0x1e, 0x9a, 0xd3, 0x00, 0xba, 0xff, 0x1b, 0x8b, 0x30, 0x15, 0x4a, 0x41, 0xbf, 0x95, 0xd4, - 0x51, 0x88, 0xe3, 0x63, 0x24, 0x20, 0x24, 0xf2, 0xb1, 0x88, 0x2b, 0x3e, 0x7d, 0x20, 0xbe, 0x28, - 0x31, 0x20, 0x8a, 0x56, 0x6b, 0x5b, 0xdf, 0xc3, 0xed, 0x84, 0x40, 0x78, 0xbf, 0x05, 0x40, 0xf8, - 0x84, 0x12, 0xbb, 0xaf, 0x70, 0x7c, 0x8c, 0xc2, 0x7d, 0x25, 0x8e, 0xe0, 0x58, 0x82, 0x44, 0xb9, - 0x5d, 0x0f, 0x5b, 0xcf, 0xbc, 0x5b, 0x54, 0xac, 0x81, 0xc9, 0x26, 0x85, 0x4d, 0xb6, 0xa1, 0x3a, - 0x16, 0x5a, 0xf6, 0x20, 0x9d, 0xce, 0xa6, 0xd1, 0xb1, 0xf4, 0x2d, 0x3a, 0x7d, 0xa1, 0xbf, 0x5b, - 0x86, 0x13, 0x7e, 0xf4, 0x94, 0x3a, 0x76, 0x16, 0x35, 0x7b, 0xfb, 0xbc, 0xa9, 0x59, 0x6d, 0x54, - 0x1a, 0xc1, 0x89, 0x3f, 0xf4, 0x85, 0x30, 0x08, 0x55, 0x1e, 0x84, 0xbe, 0xae, 0xa2, 0x7d, 0x79, - 0x19, 0x45, 0x27, 0x13, 0xeb, 0xcd, 0xfa, 0x3b, 0x3e, 0x58, 0x3f, 0xc1, 0x81, 0x75, 0xe7, 0xb0, - 0x2c, 0xa6, 0x0f, 0xdc, 0x6f, 0xd0, 0x11, 0x21, 0xe4, 0xd5, 0x7c, 0xbf, 0x28, 0x60, 0x11, 0x5e, - 0xad, 0x72, 0xa4, 0x57, 0xeb, 0x50, 0x63, 0xc4, 0x40, 0x8f, 0xe4, 0x74, 0xc7, 0x88, 0x43, 0xf4, - 0x36, 0x7e, 0xbb, 0x0c, 0x05, 0x12, 0x3e, 0x2b, 0xe4, 0xf1, 0x1d, 0x8e, 0x46, 0x1d, 0x8f, 0xce, - 0x3e, 0xef, 0xf2, 0x89, 0xa4, 0xde, 0xe5, 0xe8, 0x6d, 0x49, 0x7d, 0xc8, 0x7b, 0xb9, 0x1d, 0x09, - 0x62, 0x89, 0x5c, 0xc4, 0x07, 0x70, 0x90, 0x3e, 0x68, 0xff, 0x4d, 0x06, 0x70, 0x1b, 0x34, 0x3b, - 0xfb, 0xf0, 0x74, 0x51, 0xb8, 0x6e, 0x0e, 0xfb, 0xd5, 0xbb, 0x40, 0x9d, 0xe8, 0x01, 0x8a, 0x52, - 0x0c, 0x4e, 0x55, 0x3c, 0x9c, 0xd4, 0xb7, 0x32, 0xe0, 0x6a, 0x24, 0xb0, 0x24, 0xf2, 0xb6, 0x8c, - 0x2c, 0x3b, 0x7d, 0x40, 0xfe, 0x87, 0x04, 0xb9, 0x86, 0x59, 0xc7, 0xce, 0xc1, 0x4d, 0x81, 0xc4, - 0xc7, 0xf6, 0x49, 0xb9, 0xa3, 0x38, 0xb6, 0xdf, 0x8f, 0xd0, 0x18, 0xa2, 0x91, 0x49, 0x30, 0xd3, - 0x30, 0x4b, 0xfe, 0xe2, 0x94, 0xb8, 0xaf, 0xaa, 0xf8, 0x9d, 0xda, 0x7e, 0x05, 0x83, 0x62, 0x0e, - 0x74, 0xa7, 0xf6, 0x60, 0x7a, 0xe9, 0xcb, 0xed, 0x36, 0x38, 0xba, 0x61, 0xb4, 0x4d, 0x15, 0xb7, - 0x4d, 0xb6, 0xd2, 0xad, 0x28, 0x90, 0xdd, 0x35, 0xda, 0x26, 0x61, 0x39, 0xa7, 0x92, 0x67, 0x37, - 0xcd, 0xc2, 0x6d, 0x93, 0xf9, 0x06, 0x90, 0x67, 0xf4, 0x35, 0x19, 0xb2, 0xee, 0xbf, 0xe2, 0xa2, - 0x7e, 0xbb, 0x9c, 0x30, 0x10, 0x81, 0x4b, 0x7e, 0x24, 0x96, 0xd0, 0xdd, 0xa1, 0xb5, 0x7f, 0xea, - 0xc1, 0x7a, 0x6d, 0x54, 0x79, 0x21, 0x51, 0x04, 0x6b, 0xfe, 0xca, 0x29, 0x98, 0x38, 0xdf, 0x31, - 0x5b, 0x17, 0x82, 0xf3, 0xf2, 0xec, 0x55, 0xb9, 0x11, 0x72, 0x96, 0x66, 0x6c, 0x61, 0xb6, 0xa7, - 0x70, 0xbc, 0xa7, 0x2f, 0x24, 0x5e, 0x2f, 0x2a, 0xcd, 0x82, 0xde, 0x96, 0x24, 0x04, 0x42, 0x9f, - 0xca, 0x27, 0xd3, 0x87, 0xc5, 0x21, 0x4e, 0x96, 0x15, 0x60, 0xa6, 0x54, 0xa4, 0xb7, 0xd7, 0xaf, - 0xd5, 0xce, 0x96, 0x0b, 0x32, 0x81, 0xd9, 0x95, 0x49, 0x8a, 0x30, 0xbb, 0xe4, 0x7f, 0x68, 0x61, - 0xee, 0x53, 0xf9, 0xc3, 0x80, 0xf9, 0x93, 0x12, 0xcc, 0xae, 0xea, 0xb6, 0x13, 0xe5, 0xed, 0x1f, - 0x13, 0x3d, 0xf7, 0x05, 0x49, 0x4d, 0x65, 0xae, 0x1c, 0xe1, 0xb0, 0xb9, 0x89, 0xcc, 0xe1, 0xb8, - 0x22, 0xc6, 0x73, 0x2c, 0x85, 0x70, 0x40, 0xef, 0x90, 0x16, 0x96, 0x64, 0x62, 0x43, 0x29, 0x28, - 0x64, 0xfc, 0x86, 0x52, 0x64, 0xd9, 0xe9, 0xcb, 0xf7, 0x6b, 0x12, 0x1c, 0x73, 0x8b, 0x8f, 0x5b, - 0x96, 0x8a, 0x16, 0xf3, 0xc0, 0x65, 0xa9, 0xc4, 0x2b, 0xe3, 0xfb, 0x78, 0x19, 0xc5, 0xca, 0xf8, - 0x20, 0xa2, 0x63, 0x16, 0x73, 0xc4, 0x32, 0xec, 0x20, 0x31, 0xc7, 0x2c, 0xc3, 0x0e, 0x2f, 0xe6, - 0xf8, 0xa5, 0xd8, 0x21, 0xc5, 0x7c, 0x68, 0x0b, 0xac, 0xaf, 0x93, 0x7d, 0x31, 0x47, 0xae, 0x6d, - 0xc4, 0x88, 0x39, 0xf1, 0x89, 0x5d, 0xf4, 0x8e, 0x21, 0x05, 0x3f, 0xe2, 0xf5, 0x8d, 0x61, 0x60, - 0x3a, 0xc4, 0x35, 0x8e, 0x97, 0xca, 0x30, 0xc7, 0xb8, 0xe8, 0x3f, 0x65, 0x8e, 0xc1, 0x28, 0xf1, - 0x94, 0x39, 0xf1, 0x19, 0x20, 0x9e, 0xb3, 0xf1, 0x9f, 0x01, 0x8a, 0x2d, 0x3f, 0x7d, 0x70, 0xbe, - 0x9e, 0x85, 0x93, 0x2e, 0x0b, 0x6b, 0x66, 0x5b, 0xdf, 0xbc, 0x44, 0xb9, 0x38, 0xab, 0x75, 0x76, - 0xb1, 0x8d, 0xde, 0x2b, 0x89, 0xa2, 0xf4, 0x9f, 0x00, 0xcc, 0x2e, 0xb6, 0x68, 0x20, 0x35, 0x06, - 0xd4, 0x1d, 0x51, 0x95, 0xdd, 0x5f, 0x92, 0x7f, 0x99, 0x4c, 0xcd, 0x23, 0xa2, 0x86, 0xe8, 0xb9, - 0x56, 0xe1, 0x94, 0xff, 0xa5, 0xd7, 0xc1, 0x23, 0xb3, 0xdf, 0xc1, 0xe3, 0x06, 0x90, 0xb5, 0x76, - 0xdb, 0x87, 0xaa, 0x77, 0x33, 0x9b, 0x94, 0xa9, 0xba, 0x59, 0xdc, 0x9c, 0x36, 0x0e, 0x8e, 0xe6, - 0x45, 0xe4, 0xb4, 0xb1, 0xa3, 0xcc, 0x43, 0x9e, 0xde, 0x90, 0xed, 0xaf, 0xe8, 0xf7, 0xcf, 0xcc, - 0x72, 0xf1, 0xa6, 0x5d, 0x8d, 0x57, 0xc3, 0xdb, 0x12, 0x49, 0xa6, 0x5f, 0x3f, 0x1d, 0xd8, 0xc9, - 0x2a, 0xa7, 0x60, 0x77, 0x0d, 0x4d, 0x79, 0x3c, 0xbb, 0x61, 0xc5, 0x6e, 0xb7, 0x73, 0xa9, 0xc1, - 0x82, 0xaf, 0x24, 0xda, 0x0d, 0x0b, 0xc5, 0x70, 0x91, 0x7a, 0x63, 0xb8, 0x24, 0xdf, 0x0d, 0xe3, - 0xf8, 0x18, 0xc5, 0x6e, 0x58, 0x1c, 0xc1, 0xf4, 0x45, 0xfb, 0x96, 0x1c, 0xb5, 0x9a, 0x59, 0x6c, - 0xff, 0x4f, 0xf4, 0x3f, 0x84, 0x06, 0xbc, 0xb3, 0x4b, 0xbf, 0xb0, 0xff, 0xb1, 0x77, 0x9a, 0x28, - 0x4f, 0x86, 0xfc, 0xa6, 0x69, 0xed, 0x68, 0xde, 0xc6, 0x7d, 0xef, 0x49, 0x11, 0x16, 0x4f, 0x7f, - 0x89, 0xe4, 0x51, 0x59, 0x5e, 0x77, 0x3e, 0xf2, 0x0c, 0xbd, 0xcb, 0xa2, 0x2e, 0xba, 0x8f, 0xca, - 0x75, 0x30, 0xcb, 0x82, 0x2f, 0x56, 0xb1, 0xed, 0xe0, 0x36, 0x8b, 0x58, 0xc1, 0x27, 0x2a, 0x67, - 0x60, 0x86, 0x25, 0x2c, 0xe9, 0x1d, 0x6c, 0xb3, 0xa0, 0x15, 0x5c, 0x9a, 0x72, 0x12, 0xf2, 0xba, - 0x7d, 0xaf, 0x6d, 0x1a, 0xc4, 0xff, 0x7f, 0x52, 0x65, 0x6f, 0xca, 0x0d, 0x70, 0x94, 0xe5, 0xf3, - 0x8d, 0x55, 0x7a, 0x60, 0xa7, 0x37, 0xd9, 0x55, 0x2d, 0xc3, 0x5c, 0xb7, 0xcc, 0x2d, 0x0b, 0xdb, - 0x36, 0x39, 0x35, 0x35, 0xa9, 0x86, 0x52, 0xd0, 0xe7, 0x86, 0x99, 0x58, 0x24, 0xbe, 0xe7, 0xc0, - 0x45, 0x69, 0xb7, 0xd5, 0xc2, 0xb8, 0xcd, 0x4e, 0x3e, 0x79, 0xaf, 0x09, 0x6f, 0x40, 0x48, 0x3c, - 0x0d, 0x39, 0xa4, 0x2b, 0x10, 0x3e, 0x74, 0x02, 0xf2, 0xf4, 0x3a, 0x31, 0xf4, 0xe2, 0xb9, 0xbe, - 0xca, 0x3a, 0xc7, 0x2b, 0xeb, 0x06, 0xcc, 0x18, 0xa6, 0x5b, 0xdc, 0xba, 0x66, 0x69, 0x3b, 0x76, - 0xdc, 0x2a, 0x23, 0xa5, 0xeb, 0x0f, 0x29, 0xd5, 0xd0, 0x6f, 0x2b, 0x47, 0x54, 0x8e, 0x8c, 0xf2, - 0xff, 0x83, 0xa3, 0xe7, 0x59, 0x84, 0x00, 0x9b, 0x51, 0x96, 0xa2, 0x7d, 0xf0, 0x7a, 0x28, 0x2f, - 0xf0, 0x7f, 0xae, 0x1c, 0x51, 0x7b, 0x89, 0x29, 0x3f, 0x05, 0x73, 0xee, 0x6b, 0xdb, 0xbc, 0xe8, - 0x31, 0x2e, 0x47, 0x1b, 0x22, 0x3d, 0xe4, 0xd7, 0xb8, 0x1f, 0x57, 0x8e, 0xa8, 0x3d, 0xa4, 0x94, - 0x1a, 0xc0, 0xb6, 0xb3, 0xd3, 0x61, 0x84, 0xb3, 0xd1, 0x2a, 0xd9, 0x43, 0x78, 0xc5, 0xff, 0x69, - 0xe5, 0x88, 0x1a, 0x22, 0xa1, 0xac, 0xc2, 0x94, 0xf3, 0xa0, 0xc3, 0xe8, 0xe5, 0xa2, 0x37, 0xbf, - 0x7b, 0xe8, 0x35, 0xbc, 0x7f, 0x56, 0x8e, 0xa8, 0x01, 0x01, 0xa5, 0x02, 0x93, 0xdd, 0xf3, 0x8c, - 0x58, 0xbe, 0x4f, 0xb4, 0xf9, 0xfe, 0xc4, 0xd6, 0xcf, 0xfb, 0xb4, 0xfc, 0xdf, 0x5d, 0xc6, 0x5a, - 0xf6, 0x1e, 0xa3, 0x35, 0x21, 0xcc, 0x58, 0xc9, 0xfb, 0xc7, 0x65, 0xcc, 0x27, 0xa0, 0x54, 0x60, - 0xca, 0x36, 0xb4, 0xae, 0xbd, 0x6d, 0x3a, 0xf6, 0xa9, 0xc9, 0x1e, 0x3f, 0xc9, 0x68, 0x6a, 0x75, - 0xf6, 0x8f, 0x1a, 0xfc, 0xad, 0x3c, 0x19, 0x4e, 0xec, 0x92, 0xeb, 0xf3, 0xcb, 0x0f, 0xea, 0xb6, - 0xa3, 0x1b, 0x5b, 0x5e, 0x8c, 0x59, 0xda, 0xdb, 0xf4, 0xff, 0xa8, 0xcc, 0xb3, 0x13, 0x53, 0x40, - 0xda, 0x26, 0xea, 0xdd, 0xac, 0xa3, 0xc5, 0x86, 0x0e, 0x4a, 0x3d, 0x0d, 0xb2, 0xee, 0x27, 0xd2, - 0x3b, 0xcd, 0xf5, 0x5f, 0x08, 0xec, 0xd5, 0x1d, 0xd2, 0x80, 0xdd, 0x9f, 0x7a, 0x3a, 0xb8, 0x99, - 0xde, 0x0e, 0xce, 0x6d, 0xe0, 0xba, 0xbd, 0xa6, 0x6f, 0x51, 0xeb, 0x8a, 0xf9, 0xc3, 0x87, 0x93, - 0xe8, 0x6c, 0xb4, 0x8a, 0x2f, 0xd2, 0x1b, 0x34, 0x8e, 0x7a, 0xb3, 0x51, 0x2f, 0x05, 0x5d, 0x0f, - 0x33, 0xe1, 0x46, 0x46, 0xef, 0x24, 0xd5, 0x03, 0xdb, 0x8c, 0xbd, 0xa1, 0xeb, 0x60, 0x8e, 0xd7, - 0xe9, 0xd0, 0x10, 0x24, 0x7b, 0x5d, 0x21, 0xba, 0x16, 0x8e, 0xf6, 0x34, 0x2c, 0x2f, 0xe6, 0x48, - 0x26, 0x88, 0x39, 0x72, 0x0d, 0x40, 0xa0, 0xc5, 0x7d, 0xc9, 0x5c, 0x0d, 0x53, 0xbe, 0x5e, 0xf6, - 0xcd, 0xf0, 0x95, 0x0c, 0x4c, 0x7a, 0xca, 0xd6, 0x2f, 0x83, 0x3b, 0xfe, 0x18, 0xa1, 0x0d, 0x06, - 0x36, 0x0d, 0xe7, 0xd2, 0xdc, 0x71, 0x26, 0x70, 0xeb, 0x6d, 0xe8, 0x4e, 0xc7, 0x3b, 0x1a, 0xd7, - 0x9b, 0xac, 0xac, 0x03, 0xe8, 0x04, 0xa3, 0x46, 0x70, 0x56, 0xee, 0x96, 0x04, 0xed, 0x81, 0xea, - 0x43, 0x88, 0xc6, 0x99, 0x1f, 0x61, 0x07, 0xd9, 0xa6, 0x20, 0x47, 0x03, 0xad, 0x1f, 0x51, 0xe6, - 0x00, 0xca, 0x4f, 0x5f, 0x2f, 0xab, 0x95, 0x72, 0xb5, 0x54, 0x2e, 0x64, 0xd0, 0xcb, 0x24, 0x98, - 0xf2, 0x1b, 0x41, 0xdf, 0x4a, 0x96, 0x99, 0x6a, 0x0d, 0xbc, 0xf6, 0x71, 0x7f, 0xa3, 0x0a, 0x2b, - 0xd9, 0x53, 0xe1, 0xf2, 0x5d, 0x1b, 0x2f, 0xe9, 0x96, 0xed, 0xa8, 0xe6, 0xc5, 0x25, 0xd3, 0xf2, - 0xa3, 0x2a, 0xb3, 0x08, 0xa7, 0x51, 0x9f, 0x5d, 0x8b, 0xa3, 0x8d, 0xc9, 0xa1, 0x29, 0x6c, 0xb1, - 0x95, 0xe3, 0x20, 0xc1, 0xa5, 0xeb, 0x58, 0x9a, 0x61, 0x77, 0x4d, 0x1b, 0xab, 0xe6, 0x45, 0xbb, - 0x68, 0xb4, 0x4b, 0x66, 0x67, 0x77, 0xc7, 0xb0, 0x99, 0xcd, 0x10, 0xf5, 0xd9, 0x95, 0x0e, 0xb9, - 0xd4, 0x75, 0x0e, 0xa0, 0x54, 0x5b, 0x5d, 0x2d, 0x97, 0x1a, 0x95, 0x5a, 0xb5, 0x70, 0xc4, 0x95, - 0x56, 0xa3, 0xb8, 0xb0, 0xea, 0x4a, 0xe7, 0xa7, 0x61, 0xd2, 0x6b, 0xd3, 0x2c, 0x4c, 0x4a, 0xc6, - 0x0b, 0x93, 0xa2, 0x14, 0x61, 0xd2, 0x6b, 0xe5, 0x6c, 0x44, 0x78, 0x6c, 0xef, 0xb1, 0xd8, 0x1d, - 0xcd, 0x72, 0x88, 0x3f, 0xb5, 0x47, 0x64, 0x41, 0xb3, 0xb1, 0xea, 0xff, 0x76, 0xe6, 0x09, 0x8c, - 0x03, 0x05, 0xe6, 0x8a, 0xab, 0xab, 0xcd, 0x9a, 0xda, 0xac, 0xd6, 0x1a, 0x2b, 0x95, 0xea, 0x32, - 0x1d, 0x21, 0x2b, 0xcb, 0xd5, 0x9a, 0x5a, 0xa6, 0x03, 0x64, 0xbd, 0x90, 0xa1, 0x97, 0x0a, 0x2f, - 0x4c, 0x42, 0xbe, 0x4b, 0xa4, 0x8b, 0xbe, 0x24, 0x27, 0x3c, 0x0f, 0xef, 0xe3, 0x14, 0x71, 0xed, - 0x29, 0xe7, 0x93, 0x2e, 0xf5, 0x39, 0x33, 0x7a, 0x06, 0x66, 0xa8, 0xad, 0x67, 0x93, 0xe5, 0x7d, - 0x82, 0x9c, 0xac, 0x72, 0x69, 0xe8, 0x23, 0x52, 0x82, 0x43, 0xf2, 0x7d, 0x39, 0x4a, 0x66, 0x5c, - 0xfc, 0x59, 0x66, 0xb8, 0x6b, 0x09, 0x2a, 0xd5, 0x46, 0x59, 0xad, 0x16, 0x57, 0x59, 0x16, 0x59, - 0x39, 0x05, 0xc7, 0xab, 0x35, 0x16, 0xf3, 0xaf, 0xde, 0x6c, 0xd4, 0x9a, 0x95, 0xb5, 0xf5, 0x9a, - 0xda, 0x28, 0xe4, 0x94, 0x93, 0xa0, 0xd0, 0xe7, 0x66, 0xa5, 0xde, 0x2c, 0x15, 0xab, 0xa5, 0xf2, - 0x6a, 0x79, 0xb1, 0x90, 0x57, 0x1e, 0x07, 0xd7, 0xd2, 0x6b, 0x6e, 0x6a, 0x4b, 0x4d, 0xb5, 0x76, - 0xae, 0xee, 0x22, 0xa8, 0x96, 0x57, 0x8b, 0xae, 0x22, 0x85, 0x2e, 0x17, 0x9e, 0x50, 0x2e, 0x83, - 0xa3, 0xe4, 0xe6, 0xf1, 0xd5, 0x5a, 0x71, 0x91, 0x95, 0x37, 0xa9, 0x5c, 0x05, 0xa7, 0x2a, 0xd5, - 0xfa, 0xc6, 0xd2, 0x52, 0xa5, 0x54, 0x29, 0x57, 0x1b, 0xcd, 0xf5, 0xb2, 0xba, 0x56, 0xa9, 0xd7, - 0xdd, 0x7f, 0x0b, 0x53, 0xe4, 0xea, 0x56, 0xda, 0x67, 0xa2, 0xf7, 0xc8, 0x30, 0x7b, 0x56, 0xeb, - 0xe8, 0xee, 0x40, 0x41, 0xee, 0x74, 0xee, 0x39, 0x4e, 0xe2, 0x90, 0xbb, 0x9f, 0x99, 0x43, 0x3a, - 0x79, 0x41, 0x3f, 0x2f, 0x27, 0x3c, 0x4e, 0xc2, 0x80, 0xa0, 0x25, 0xce, 0x73, 0xa5, 0x45, 0x4c, - 0x7e, 0x5e, 0x2d, 0x25, 0x38, 0x4e, 0x22, 0x4e, 0x3e, 0x19, 0xf8, 0xbf, 0x39, 0x2a, 0xf0, 0x0b, - 0x30, 0xb3, 0x51, 0x2d, 0x6e, 0x34, 0x56, 0x6a, 0x6a, 0xe5, 0x27, 0x49, 0x34, 0xf2, 0x59, 0x98, - 0x5a, 0xaa, 0xa9, 0x0b, 0x95, 0xc5, 0xc5, 0x72, 0xb5, 0x90, 0x53, 0x2e, 0x87, 0xcb, 0xea, 0x65, - 0xf5, 0x6c, 0xa5, 0x54, 0x6e, 0x6e, 0x54, 0x8b, 0x67, 0x8b, 0x95, 0x55, 0xd2, 0x47, 0xe4, 0x63, - 0xee, 0xa3, 0x9e, 0x40, 0x3f, 0x9b, 0x05, 0xa0, 0x55, 0x27, 0x97, 0xf1, 0x84, 0x6e, 0x2d, 0xfe, - 0xf3, 0xa4, 0x93, 0x86, 0x80, 0x4c, 0x44, 0xfb, 0xad, 0xc0, 0xa4, 0xc5, 0x3e, 0xb0, 0xe5, 0x95, - 0x41, 0x74, 0xe8, 0xa3, 0x47, 0x4d, 0xf5, 0x7f, 0x47, 0xef, 0x4d, 0x32, 0x47, 0x88, 0x64, 0x2c, - 0x19, 0x92, 0x4b, 0xa3, 0x01, 0x12, 0x3d, 0x3f, 0x03, 0x73, 0x7c, 0xc5, 0xdc, 0x4a, 0x10, 0x63, - 0x4a, 0xac, 0x12, 0xfc, 0xcf, 0x21, 0x23, 0xeb, 0xcc, 0x93, 0xd8, 0x70, 0x0a, 0x5e, 0xcb, 0xa4, - 0x27, 0xc3, 0x3d, 0x8b, 0xa5, 0x90, 0x71, 0x99, 0x77, 0x8d, 0x8e, 0x82, 0xa4, 0x4c, 0x80, 0xdc, - 0x78, 0xd0, 0x29, 0xc8, 0xe8, 0x2b, 0x32, 0xcc, 0x72, 0xd7, 0x22, 0xa3, 0x57, 0x67, 0x44, 0xae, - 0x2c, 0x0d, 0x5d, 0xb8, 0x9c, 0x39, 0xe8, 0x85, 0xcb, 0x67, 0x6e, 0x86, 0x09, 0x96, 0x46, 0xe4, - 0x5b, 0xab, 0xba, 0xa6, 0xc0, 0x51, 0x98, 0x5e, 0x2e, 0x37, 0x9a, 0xf5, 0x46, 0x51, 0x6d, 0x94, - 0x17, 0x0b, 0x19, 0x77, 0xe0, 0x2b, 0xaf, 0xad, 0x37, 0xee, 0x2f, 0x48, 0xc9, 0x3d, 0xf4, 0x7a, - 0x19, 0x19, 0xb3, 0x87, 0x5e, 0x5c, 0xf1, 0xe9, 0xcf, 0x55, 0x3f, 0x23, 0x43, 0x81, 0x72, 0x50, - 0x7e, 0xb0, 0x8b, 0x2d, 0x1d, 0x1b, 0x2d, 0x8c, 0x2e, 0x88, 0x44, 0x04, 0xdd, 0x17, 0x2b, 0x8f, - 0xf4, 0xe7, 0x21, 0x2b, 0x91, 0xbe, 0xf4, 0x18, 0xd8, 0xd9, 0x7d, 0x06, 0xf6, 0xa7, 0x93, 0xba, - 0xe8, 0xf5, 0xb2, 0x3b, 0x12, 0xc8, 0x3e, 0x9e, 0xc4, 0x45, 0x6f, 0x00, 0x07, 0x63, 0x09, 0xf4, - 0x1b, 0x31, 0xfe, 0x16, 0x64, 0xf4, 0x3c, 0x19, 0x8e, 0x2e, 0x6a, 0x0e, 0x5e, 0xb8, 0xd4, 0xf0, - 0xae, 0x2d, 0x8c, 0xb8, 0x6a, 0x38, 0xb3, 0xef, 0xaa, 0xe1, 0xe0, 0xe6, 0x43, 0xa9, 0xe7, 0xe6, - 0x43, 0xf4, 0xce, 0xa4, 0x87, 0xfa, 0x7a, 0x78, 0x18, 0x59, 0x34, 0xde, 0x64, 0x87, 0xf5, 0xe2, - 0xb9, 0x18, 0xc3, 0xcd, 0xff, 0x53, 0x50, 0xa0, 0xac, 0x84, 0xbc, 0xd0, 0x7e, 0x95, 0xdd, 0xce, - 0xdd, 0x4c, 0x10, 0xf4, 0xcf, 0x0b, 0xa3, 0x20, 0xf1, 0x61, 0x14, 0xb8, 0x45, 0x4d, 0xb9, 0xd7, - 0x73, 0x20, 0x69, 0x67, 0x18, 0x72, 0x39, 0x8b, 0x8e, 0xb3, 0x9a, 0x5e, 0x67, 0x18, 0x5b, 0xfc, - 0x78, 0x6e, 0x90, 0x65, 0xf7, 0x3c, 0x96, 0x45, 0x91, 0x89, 0xbf, 0x28, 0x3b, 0xa9, 0xff, 0x31, - 0xe7, 0xf2, 0x17, 0x73, 0x7b, 0x74, 0x7a, 0xfe, 0xc7, 0x83, 0x38, 0x48, 0x1f, 0x85, 0xef, 0x4b, - 0x90, 0xad, 0x9b, 0x96, 0x33, 0x2a, 0x0c, 0x92, 0xee, 0x99, 0x86, 0x24, 0x50, 0x8f, 0x9e, 0x73, - 0xa6, 0xb7, 0x67, 0x1a, 0x5f, 0xfe, 0x18, 0xe2, 0x26, 0x1e, 0x85, 0x39, 0xca, 0x89, 0x7f, 0xa9, - 0xc8, 0xf7, 0x24, 0xda, 0x5f, 0xdd, 0x27, 0x8a, 0xc8, 0x19, 0x98, 0x09, 0xed, 0x59, 0x7a, 0xa0, - 0x70, 0x69, 0xe8, 0x0d, 0x61, 0x5c, 0x16, 0x79, 0x5c, 0xfa, 0xcd, 0xb8, 0xfd, 0x7b, 0x39, 0x46, - 0xd5, 0x33, 0x25, 0x09, 0xc1, 0x18, 0x53, 0x78, 0xfa, 0x88, 0x3c, 0x24, 0x43, 0x9e, 0xf9, 0x8c, - 0x8d, 0x14, 0x81, 0xa4, 0x2d, 0xc3, 0x17, 0x82, 0x98, 0x6f, 0x99, 0x3c, 0xea, 0x96, 0x11, 0x5f, - 0x7e, 0xfa, 0x38, 0xfc, 0x3b, 0x73, 0x86, 0x2c, 0xee, 0x69, 0x7a, 0x47, 0x3b, 0xdf, 0x49, 0x10, - 0xfa, 0xf8, 0x23, 0x09, 0x8f, 0x7f, 0xf9, 0x55, 0xe5, 0xca, 0x8b, 0x90, 0xf8, 0x8f, 0xc1, 0x94, - 0xe5, 0x2f, 0x49, 0x7a, 0xa7, 0xe3, 0x7b, 0x1c, 0x51, 0xd9, 0x77, 0x35, 0xc8, 0x99, 0xe8, 0xac, - 0x97, 0x10, 0x3f, 0x63, 0x39, 0x9b, 0x32, 0x5d, 0x6c, 0xb7, 0x97, 0xb0, 0xe6, 0xec, 0x5a, 0xb8, - 0x9d, 0x68, 0x88, 0xe0, 0x45, 0x34, 0x15, 0x96, 0x04, 0x17, 0x7c, 0x70, 0x95, 0x47, 0xe7, 0x29, - 0x03, 0x7a, 0x03, 0x8f, 0x97, 0x91, 0x74, 0x49, 0x6f, 0xf1, 0x21, 0xa9, 0x71, 0x90, 0x3c, 0x6d, - 0x38, 0x26, 0xd2, 0x07, 0xe4, 0xd7, 0x65, 0x98, 0xa3, 0x76, 0xc2, 0xa8, 0x31, 0xf9, 0xfd, 0x84, - 0x3e, 0x26, 0xa1, 0x6b, 0x9b, 0xc2, 0xec, 0x8c, 0x04, 0x96, 0x24, 0x1e, 0x29, 0x62, 0x7c, 0xa4, - 0x8f, 0xcc, 0xe7, 0xf2, 0x00, 0x21, 0xbf, 0xc1, 0x8f, 0xe4, 0x83, 0x40, 0x80, 0xe8, 0x6d, 0x6c, - 0xfe, 0x51, 0xe7, 0xa2, 0x52, 0x87, 0x7c, 0x02, 0xfd, 0x0d, 0x29, 0x3e, 0x51, 0x68, 0x54, 0xf9, - 0xb3, 0x84, 0x36, 0x2f, 0xf3, 0xda, 0x1b, 0x38, 0xb8, 0x0f, 0xd9, 0xcb, 0x7d, 0x34, 0x81, 0xf1, - 0x3b, 0x88, 0x95, 0x64, 0xa8, 0xad, 0x0e, 0x31, 0xb3, 0x3f, 0x05, 0xc7, 0xd5, 0x72, 0x71, 0xb1, - 0x56, 0x5d, 0xbd, 0x3f, 0x7c, 0x87, 0x4f, 0x41, 0x0e, 0x4f, 0x4e, 0x52, 0x81, 0xed, 0xb5, 0x09, - 0xfb, 0x40, 0x5e, 0x56, 0xb1, 0x37, 0xd4, 0x7f, 0x3c, 0x41, 0xaf, 0x26, 0x40, 0xf6, 0x30, 0x51, - 0x78, 0x08, 0x42, 0xcd, 0xe8, 0xb9, 0x32, 0x14, 0xdc, 0xf1, 0x90, 0x72, 0xc9, 0x2e, 0x6b, 0xab, - 0xf1, 0x6e, 0x85, 0x5d, 0xba, 0xff, 0x14, 0xb8, 0x15, 0x7a, 0x09, 0xca, 0xf5, 0x30, 0xd7, 0xda, - 0xc6, 0xad, 0x0b, 0x15, 0xc3, 0xdb, 0x57, 0xa7, 0x9b, 0xb0, 0x3d, 0xa9, 0x3c, 0x30, 0xf7, 0xf1, - 0xc0, 0xf0, 0x93, 0x68, 0x6e, 0x90, 0x0e, 0x33, 0x15, 0x81, 0xcb, 0x27, 0x7c, 0x5c, 0xaa, 0x1c, - 0x2e, 0xb7, 0x0f, 0x45, 0x35, 0x19, 0x2c, 0xd5, 0x21, 0x60, 0x41, 0x70, 0xb2, 0xb6, 0xde, 0xa8, - 0xd4, 0xaa, 0xcd, 0x8d, 0x7a, 0x79, 0xb1, 0xb9, 0xe0, 0x81, 0x53, 0x2f, 0xc8, 0xe8, 0x1b, 0x12, - 0x4c, 0x50, 0xb6, 0x6c, 0xf4, 0xf8, 0x00, 0x82, 0x81, 0xfe, 0x94, 0xe8, 0xad, 0xc2, 0xd1, 0x11, - 0x7c, 0x41, 0xb0, 0x72, 0x22, 0xfa, 0xa9, 0xa7, 0xc2, 0x04, 0x05, 0xd9, 0x5b, 0xd1, 0x3a, 0x1d, - 0xd1, 0x4b, 0x31, 0x32, 0xaa, 0x97, 0x5d, 0x30, 0x52, 0xc2, 0x00, 0x36, 0xd2, 0x1f, 0x59, 0x9e, - 0x99, 0xa5, 0x66, 0xf0, 0x39, 0xdd, 0xd9, 0x26, 0xee, 0x96, 0xe8, 0x27, 0x44, 0x96, 0x17, 0x6f, - 0x82, 0xdc, 0x9e, 0x9b, 0x7b, 0x80, 0xeb, 0x2a, 0xcd, 0x84, 0x7e, 0x53, 0x38, 0x30, 0x27, 0xa7, - 0x9f, 0x3e, 0x4f, 0x11, 0xe0, 0xac, 0x41, 0xb6, 0xa3, 0xdb, 0x0e, 0x1b, 0x3f, 0x6e, 0x4b, 0x44, - 0xc8, 0x7b, 0xa8, 0x38, 0x78, 0x47, 0x25, 0x64, 0xd0, 0xbd, 0x30, 0x13, 0x4e, 0x15, 0x70, 0xdf, - 0x3d, 0x05, 0x13, 0xec, 0x58, 0x19, 0x5b, 0x62, 0xf5, 0x5e, 0x05, 0x97, 0x35, 0x85, 0x6a, 0x9b, - 0xbe, 0x0e, 0xfc, 0xdf, 0x47, 0x61, 0x62, 0x45, 0xb7, 0x1d, 0xd3, 0xba, 0x84, 0x1e, 0xce, 0xc0, - 0xc4, 0x59, 0x6c, 0xd9, 0xba, 0x69, 0xec, 0x73, 0x35, 0xb8, 0x06, 0xa6, 0xbb, 0x16, 0xde, 0xd3, - 0xcd, 0x5d, 0x3b, 0x58, 0x9c, 0x09, 0x27, 0x29, 0x08, 0x26, 0xb5, 0x5d, 0x67, 0xdb, 0xb4, 0x82, - 0x68, 0x14, 0xde, 0xbb, 0x72, 0x1a, 0x80, 0x3e, 0x57, 0xb5, 0x1d, 0xcc, 0x1c, 0x28, 0x42, 0x29, - 0x8a, 0x02, 0x59, 0x47, 0xdf, 0xc1, 0x2c, 0x3c, 0x2d, 0x79, 0x76, 0x05, 0x4c, 0x42, 0xbd, 0xb1, - 0x90, 0x7a, 0xb2, 0xea, 0xbd, 0xa2, 0x2f, 0xc8, 0x30, 0xbd, 0x8c, 0x1d, 0xc6, 0xaa, 0x8d, 0x5e, - 0x90, 0x11, 0xba, 0x11, 0xc2, 0x1d, 0x63, 0x3b, 0x9a, 0xed, 0xfd, 0xe7, 0x2f, 0xc1, 0xf2, 0x89, - 0x41, 0xac, 0x5c, 0x39, 0x1c, 0x28, 0x9b, 0x04, 0x4e, 0x73, 0x2a, 0xd4, 0x2f, 0x93, 0x65, 0x66, - 0x9b, 0x20, 0xfb, 0x3f, 0xa0, 0x77, 0x49, 0xa2, 0x87, 0x8e, 0x99, 0xec, 0xe7, 0x43, 0xf5, 0x89, - 0xec, 0x8e, 0x26, 0xf7, 0x58, 0x8e, 0x7d, 0x31, 0xd0, 0xc3, 0x94, 0x18, 0x19, 0xd5, 0xcf, 0x2d, - 0x78, 0x5c, 0x79, 0x30, 0x27, 0xe9, 0x6b, 0xe3, 0x77, 0x64, 0x98, 0xae, 0x6f, 0x9b, 0x17, 0x3d, - 0x39, 0xfe, 0xb4, 0x18, 0xb0, 0x57, 0xc1, 0xd4, 0x5e, 0x0f, 0xa8, 0x41, 0x42, 0xf4, 0x1d, 0xed, - 0xe8, 0x39, 0x72, 0x52, 0x98, 0x42, 0xcc, 0x8d, 0xfc, 0x06, 0x75, 0xe5, 0x29, 0x30, 0xc1, 0xb8, - 0x66, 0x4b, 0x2e, 0xf1, 0x00, 0x7b, 0x99, 0xc3, 0x15, 0xcc, 0xf2, 0x15, 0x4c, 0x86, 0x7c, 0x74, - 0xe5, 0xd2, 0x47, 0xfe, 0x8f, 0x25, 0x12, 0xac, 0xc2, 0x03, 0xbe, 0x34, 0x02, 0xe0, 0xd1, 0x77, - 0x33, 0xa2, 0x0b, 0x93, 0xbe, 0x04, 0x7c, 0x0e, 0x0e, 0x74, 0xdb, 0xcb, 0x40, 0x72, 0xe9, 0xcb, - 0xf3, 0x65, 0x59, 0x98, 0x59, 0xd4, 0x37, 0x37, 0xfd, 0x4e, 0xf2, 0x85, 0x82, 0x9d, 0x64, 0xb4, - 0x3b, 0x80, 0x6b, 0xe7, 0xee, 0x5a, 0x16, 0x36, 0xbc, 0x4a, 0xb1, 0xe6, 0xd4, 0x93, 0xaa, 0xdc, - 0x00, 0x47, 0xbd, 0x71, 0x21, 0xdc, 0x51, 0x4e, 0xa9, 0xbd, 0xc9, 0xe8, 0xdb, 0xc2, 0xbb, 0x5a, - 0x9e, 0x44, 0xc3, 0x55, 0x8a, 0x68, 0x80, 0x77, 0xc0, 0xec, 0x36, 0xcd, 0x4d, 0xa6, 0xfe, 0x5e, - 0x67, 0x79, 0xb2, 0x27, 0x18, 0xf0, 0x1a, 0xb6, 0x6d, 0x6d, 0x0b, 0xab, 0x7c, 0xe6, 0x9e, 0xe6, - 0x2b, 0x27, 0xb9, 0xda, 0x4a, 0x6c, 0x83, 0x4c, 0xa0, 0x26, 0x63, 0xd0, 0x8e, 0x33, 0x90, 0x5d, - 0xd2, 0x3b, 0x18, 0xfd, 0xa2, 0x04, 0x53, 0x2a, 0x6e, 0x99, 0x46, 0xcb, 0x7d, 0x0b, 0x39, 0x07, - 0xfd, 0x63, 0x46, 0xf4, 0x4a, 0x47, 0x97, 0xce, 0xbc, 0x4f, 0x23, 0xa2, 0xdd, 0x88, 0x5d, 0xdd, - 0x18, 0x4b, 0x6a, 0x0c, 0x17, 0x70, 0xb8, 0x53, 0x8f, 0xcd, 0xcd, 0x8e, 0xa9, 0x71, 0x8b, 0x5f, - 0xbd, 0xa6, 0xd0, 0x8d, 0x50, 0xf0, 0xce, 0x80, 0x98, 0xce, 0xba, 0x6e, 0x18, 0xfe, 0x21, 0xe3, - 0x7d, 0xe9, 0xfc, 0xbe, 0x6d, 0x6c, 0x9c, 0x16, 0x52, 0x77, 0x56, 0x7a, 0x84, 0x66, 0x5f, 0x0f, - 0x73, 0xe7, 0x2f, 0x39, 0xd8, 0x66, 0xb9, 0x58, 0xb1, 0x59, 0xb5, 0x27, 0x35, 0x14, 0x65, 0x39, - 0x2e, 0x9e, 0x4b, 0x4c, 0x81, 0xc9, 0x44, 0xbd, 0x32, 0xc4, 0x0c, 0xf0, 0x38, 0x14, 0xaa, 0xb5, - 0xc5, 0x32, 0xf1, 0x55, 0xf3, 0xbc, 0x7f, 0xb6, 0xd0, 0x8b, 0x64, 0x98, 0x21, 0xce, 0x24, 0x1e, - 0x0a, 0xd7, 0x0a, 0xcc, 0x47, 0xd0, 0x23, 0xc2, 0x7e, 0x6c, 0xa4, 0xca, 0xe1, 0x02, 0xa2, 0x05, - 0xbd, 0xa9, 0x77, 0x7a, 0x05, 0x9d, 0x53, 0x7b, 0x52, 0xfb, 0x00, 0x22, 0xf7, 0x05, 0xe4, 0x77, - 0x85, 0x9c, 0xd9, 0x06, 0x71, 0x77, 0x58, 0xa8, 0xfc, 0x9e, 0x0c, 0xd3, 0xee, 0x24, 0xc5, 0x03, - 0xa5, 0xc6, 0x81, 0x62, 0x1a, 0x9d, 0x4b, 0xc1, 0xb2, 0x88, 0xf7, 0x9a, 0xa8, 0x91, 0xfc, 0xa5, - 0xf0, 0xcc, 0x9d, 0x88, 0x28, 0xc4, 0xcb, 0x98, 0xf0, 0x7b, 0x9f, 0xd0, 0x7c, 0x7e, 0x00, 0x73, - 0x87, 0x05, 0xdf, 0xd7, 0x72, 0x90, 0xdf, 0xe8, 0x12, 0xe4, 0x7e, 0x53, 0x16, 0x89, 0x58, 0xbe, - 0xef, 0x20, 0x83, 0x6b, 0x66, 0x75, 0xcc, 0x96, 0xd6, 0x59, 0x0f, 0x4e, 0x84, 0x05, 0x09, 0xca, - 0xed, 0xcc, 0xb7, 0x91, 0x1e, 0xb7, 0xbb, 0x3e, 0x36, 0x98, 0x37, 0x91, 0x51, 0xe8, 0xd0, 0xc8, - 0x4d, 0x70, 0xac, 0xad, 0xdb, 0xda, 0xf9, 0x0e, 0x2e, 0x1b, 0x2d, 0xeb, 0x12, 0x15, 0x07, 0x9b, - 0x56, 0xed, 0xfb, 0xa0, 0xdc, 0x09, 0x39, 0xdb, 0xb9, 0xd4, 0xa1, 0xf3, 0xc4, 0xf0, 0x19, 0x93, - 0xc8, 0xa2, 0xea, 0x6e, 0x76, 0x95, 0xfe, 0x15, 0x76, 0x51, 0x9a, 0x10, 0xbc, 0xcf, 0xf9, 0x49, - 0x90, 0x37, 0x2d, 0x7d, 0x4b, 0xa7, 0xf7, 0xf3, 0xcc, 0xed, 0x8b, 0x59, 0x47, 0x4d, 0x81, 0x1a, - 0xc9, 0xa2, 0xb2, 0xac, 0xca, 0x53, 0x60, 0x4a, 0xdf, 0xd1, 0xb6, 0xf0, 0x7d, 0xba, 0x41, 0x4f, - 0xf4, 0xcd, 0xdd, 0x7a, 0x6a, 0xdf, 0xf1, 0x19, 0xf6, 0x5d, 0x0d, 0xb2, 0xa2, 0xf7, 0x49, 0xa2, - 0x81, 0x75, 0x48, 0xdd, 0x28, 0xa8, 0x63, 0xb9, 0xd7, 0x1a, 0xbd, 0x52, 0x28, 0xe4, 0x4d, 0x34, - 0x5b, 0xe9, 0x0f, 0xde, 0x9f, 0x97, 0x60, 0x72, 0xd1, 0xbc, 0x68, 0x10, 0x45, 0xbf, 0x4d, 0xcc, - 0xd6, 0xed, 0x73, 0xc8, 0x91, 0xbf, 0x36, 0x32, 0xf6, 0x44, 0x03, 0xa9, 0xad, 0x57, 0x64, 0x04, - 0x0c, 0xb1, 0x2d, 0x47, 0xf0, 0x32, 0xbf, 0xb8, 0x72, 0xd2, 0x97, 0xeb, 0x9f, 0xc8, 0x90, 0x5d, - 0xb4, 0xcc, 0x2e, 0x7a, 0x4b, 0x26, 0x81, 0xcb, 0x42, 0xdb, 0x32, 0xbb, 0x0d, 0x72, 0x1b, 0x57, - 0x70, 0x8c, 0x23, 0x9c, 0xa6, 0xdc, 0x06, 0x93, 0x5d, 0xd3, 0xd6, 0x1d, 0x6f, 0x1a, 0x31, 0x77, - 0xeb, 0x63, 0xfa, 0xb6, 0xe6, 0x75, 0x96, 0x49, 0xf5, 0xb3, 0xbb, 0xbd, 0x36, 0x11, 0xa1, 0x2b, - 0x17, 0x57, 0x8c, 0xde, 0x8d, 0x64, 0x3d, 0xa9, 0xe8, 0xc5, 0x61, 0x24, 0x9f, 0xc6, 0x23, 0xf9, - 0xd8, 0x3e, 0x12, 0xb6, 0xcc, 0xee, 0x48, 0x36, 0x19, 0x5f, 0xee, 0xa3, 0x7a, 0x17, 0x87, 0xea, - 0x8d, 0x42, 0x65, 0xa6, 0x8f, 0xe8, 0xfb, 0xb2, 0x00, 0xc4, 0xcc, 0xd8, 0x70, 0x27, 0x40, 0x62, - 0x36, 0xd6, 0x2f, 0x64, 0x43, 0xb2, 0x2c, 0xf2, 0xb2, 0x7c, 0x7c, 0x84, 0x15, 0x43, 0xc8, 0x47, - 0x48, 0xb4, 0x08, 0xb9, 0x5d, 0xf7, 0x33, 0x93, 0xa8, 0x20, 0x09, 0xf2, 0xaa, 0xd2, 0x3f, 0xd1, - 0x1f, 0x67, 0x20, 0x47, 0x12, 0x94, 0xd3, 0x00, 0x64, 0x60, 0xa7, 0x07, 0x82, 0x32, 0x64, 0x08, - 0x0f, 0xa5, 0x10, 0x6d, 0xd5, 0xdb, 0xec, 0x33, 0x35, 0x99, 0x83, 0x04, 0xf7, 0x6f, 0x32, 0xdc, - 0x13, 0x5a, 0xcc, 0x00, 0x08, 0xa5, 0xb8, 0x7f, 0x93, 0xb7, 0x55, 0xbc, 0x49, 0x03, 0x25, 0x67, - 0xd5, 0x20, 0xc1, 0xff, 0x7b, 0xd5, 0xbf, 0x5e, 0xcb, 0xfb, 0x9b, 0xa4, 0xb8, 0x93, 0x61, 0xa2, - 0x96, 0x0b, 0x41, 0x11, 0x79, 0x92, 0xa9, 0x37, 0x19, 0xbd, 0xd6, 0x57, 0x9b, 0x45, 0x4e, 0x6d, - 0x6e, 0x49, 0x20, 0xde, 0xf4, 0x95, 0xe7, 0x2b, 0x39, 0x98, 0xaa, 0x9a, 0x6d, 0xa6, 0x3b, 0xa1, - 0x09, 0xe3, 0xc7, 0x73, 0x89, 0x26, 0x8c, 0x3e, 0x8d, 0x08, 0x05, 0xb9, 0x87, 0x57, 0x10, 0x31, - 0x0a, 0x61, 0xfd, 0x50, 0x16, 0x20, 0x4f, 0xb4, 0x77, 0xff, 0xbd, 0x4d, 0x71, 0x24, 0x88, 0x68, - 0x55, 0xf6, 0xe7, 0x7f, 0x38, 0x1d, 0xfb, 0xaf, 0x90, 0x23, 0x15, 0x8c, 0xd9, 0xdd, 0xe1, 0x2b, - 0x2a, 0xc5, 0x57, 0x54, 0x8e, 0xaf, 0x68, 0xb6, 0xb7, 0xa2, 0x49, 0xd6, 0x01, 0xa2, 0x34, 0x24, - 0x7d, 0x1d, 0xff, 0x87, 0x09, 0x80, 0xaa, 0xb6, 0xa7, 0x6f, 0xd1, 0xdd, 0xe1, 0x2f, 0x78, 0xf3, - 0x1f, 0xb6, 0x8f, 0xfb, 0xdf, 0x42, 0x03, 0xe1, 0x6d, 0x30, 0xc1, 0xc6, 0x3d, 0x56, 0x91, 0xab, - 0xb9, 0x8a, 0x04, 0x54, 0xa8, 0x59, 0xfa, 0xa0, 0xa3, 0x7a, 0xf9, 0xb9, 0x2b, 0x66, 0xa5, 0x9e, - 0x2b, 0x66, 0xfb, 0xef, 0x41, 0x44, 0x5c, 0x3c, 0x8b, 0xde, 0x2d, 0xec, 0xd1, 0x1f, 0xe2, 0x27, - 0x54, 0xa3, 0x88, 0x26, 0xf8, 0x24, 0x98, 0x30, 0xfd, 0x0d, 0x6d, 0x39, 0x72, 0x1d, 0xac, 0x62, - 0x6c, 0x9a, 0xaa, 0x97, 0x53, 0x70, 0xf3, 0x4b, 0x88, 0x8f, 0xb1, 0x1c, 0x9a, 0x39, 0xb9, 0xec, - 0x05, 0x9d, 0x72, 0xeb, 0x71, 0x4e, 0x77, 0xb6, 0x57, 0x75, 0xe3, 0x82, 0x8d, 0xfe, 0xb3, 0x98, - 0x05, 0x19, 0xc2, 0x5f, 0x4a, 0x86, 0x3f, 0x1f, 0xb3, 0xa3, 0xce, 0xa3, 0x76, 0x67, 0x14, 0x95, - 0xfe, 0xdc, 0x46, 0x00, 0x78, 0x3b, 0xe4, 0x29, 0xa3, 0xac, 0x13, 0x3d, 0x13, 0x89, 0x9f, 0x4f, - 0x49, 0x65, 0x7f, 0xa0, 0x77, 0xf9, 0x38, 0x9e, 0xe5, 0x70, 0x5c, 0x38, 0x10, 0x67, 0xa9, 0x43, - 0x7a, 0xe6, 0x89, 0x30, 0xc1, 0x24, 0xad, 0xcc, 0x85, 0x5b, 0x71, 0xe1, 0x88, 0x02, 0x90, 0x5f, - 0x33, 0xf7, 0x70, 0xc3, 0x2c, 0x64, 0xdc, 0x67, 0x97, 0xbf, 0x86, 0x59, 0x90, 0xd0, 0x2b, 0x26, - 0x61, 0xd2, 0x8f, 0xf6, 0xf3, 0x79, 0x09, 0x0a, 0x25, 0x0b, 0x6b, 0x0e, 0x5e, 0xb2, 0xcc, 0x1d, - 0x5a, 0x23, 0x71, 0xef, 0xd0, 0x5f, 0x17, 0x76, 0xf1, 0xf0, 0xa3, 0xf0, 0xf4, 0x16, 0x16, 0x81, - 0x25, 0x5d, 0x84, 0x94, 0xbc, 0x45, 0x48, 0xf4, 0x66, 0x21, 0x97, 0x0f, 0xd1, 0x52, 0xd2, 0x6f, - 0x6a, 0x9f, 0x96, 0x20, 0x57, 0xea, 0x98, 0x06, 0x0e, 0x1f, 0x61, 0x1a, 0x78, 0x56, 0xa6, 0xff, - 0x4e, 0x04, 0x7a, 0xa6, 0x24, 0x6a, 0x6b, 0x04, 0x02, 0x70, 0xcb, 0x16, 0x94, 0xad, 0xd8, 0x20, - 0x15, 0x4b, 0x3a, 0x7d, 0x81, 0x7e, 0x43, 0x82, 0x29, 0x1a, 0x17, 0xa7, 0xd8, 0xe9, 0xa0, 0xc7, - 0x04, 0x42, 0xed, 0x13, 0x31, 0x09, 0xfd, 0xae, 0xb0, 0x8b, 0xbe, 0x5f, 0x2b, 0x9f, 0x76, 0x82, - 0x00, 0x41, 0xc9, 0x3c, 0xc6, 0xc5, 0xf6, 0xd2, 0x06, 0x32, 0x94, 0xbe, 0xa8, 0xff, 0x5c, 0x72, - 0x0d, 0x00, 0xe3, 0xc2, 0xba, 0x85, 0xf7, 0x74, 0x7c, 0x11, 0x5d, 0x19, 0x08, 0x7b, 0x7f, 0xd0, - 0x8f, 0x37, 0x0a, 0x2f, 0xe2, 0x84, 0x48, 0x46, 0x6e, 0x65, 0x4d, 0x77, 0x82, 0x4c, 0xac, 0x17, - 0xef, 0x8d, 0xc4, 0x12, 0x22, 0xa3, 0x86, 0xb3, 0x0b, 0xae, 0xd9, 0x44, 0x73, 0x91, 0xbe, 0x60, - 0x3f, 0x38, 0x01, 0x93, 0x1b, 0x86, 0xdd, 0xed, 0x68, 0xf6, 0x36, 0xfa, 0x9e, 0x0c, 0x79, 0x7a, - 0x5b, 0x18, 0xfa, 0x31, 0x2e, 0xb6, 0xc0, 0xcf, 0xec, 0x62, 0xcb, 0x73, 0xc1, 0xa1, 0x2f, 0xfd, - 0x2f, 0x33, 0x47, 0xef, 0x93, 0x45, 0x27, 0xa9, 0x5e, 0xa1, 0xa1, 0x6b, 0xe3, 0xfb, 0x1f, 0x67, - 0xef, 0xea, 0x2d, 0x67, 0xd7, 0xf2, 0xaf, 0xc6, 0x7e, 0x82, 0x18, 0x95, 0x75, 0xfa, 0x97, 0xea, - 0xff, 0x8e, 0x34, 0x98, 0x60, 0x89, 0xfb, 0xb6, 0x93, 0xf6, 0x9f, 0xbf, 0x3d, 0x09, 0x79, 0xcd, - 0x72, 0x74, 0xdb, 0x61, 0x1b, 0xac, 0xec, 0xcd, 0xed, 0x2e, 0xe9, 0xd3, 0x86, 0xd5, 0xf1, 0xa2, - 0x90, 0xf8, 0x09, 0xe8, 0xf7, 0x84, 0xe6, 0x8f, 0xf1, 0x35, 0x4f, 0x06, 0xf9, 0x7d, 0x43, 0xac, - 0x51, 0x5f, 0x0e, 0x97, 0xa9, 0xc5, 0x46, 0xb9, 0x49, 0x83, 0x56, 0xf8, 0xf1, 0x29, 0xda, 0xe8, - 0x9d, 0x72, 0x68, 0xfd, 0xee, 0x12, 0x37, 0x46, 0x30, 0x29, 0x06, 0x63, 0x84, 0x9f, 0x10, 0xb3, - 0x5b, 0xcd, 0x2d, 0xc2, 0xca, 0xe2, 0x8b, 0xb0, 0xbf, 0x2d, 0xbc, 0x9b, 0xe4, 0x8b, 0x72, 0xc0, - 0x1a, 0x60, 0xdc, 0x6d, 0x42, 0xef, 0x17, 0xda, 0x19, 0x1a, 0x54, 0xd2, 0x21, 0xc2, 0xf6, 0x86, - 0x09, 0x98, 0x58, 0xd6, 0x3a, 0x1d, 0x6c, 0x5d, 0x72, 0x87, 0xa4, 0x82, 0xc7, 0xe1, 0x9a, 0x66, - 0xe8, 0x9b, 0xd8, 0x76, 0xe2, 0x3b, 0xcb, 0x77, 0x0b, 0x47, 0xaa, 0x65, 0x65, 0xcc, 0xf7, 0xd2, - 0x8f, 0x90, 0xf9, 0xcd, 0x90, 0xd5, 0x8d, 0x4d, 0x93, 0x75, 0x99, 0xbd, 0xab, 0xf6, 0xde, 0xcf, - 0x64, 0xea, 0x42, 0x32, 0x0a, 0x06, 0xab, 0x15, 0xe4, 0x22, 0xfd, 0x9e, 0xf3, 0x77, 0xb2, 0x30, - 0xeb, 0x31, 0x51, 0x31, 0xda, 0xf8, 0xc1, 0xf0, 0x52, 0xcc, 0x8b, 0xb2, 0xa2, 0xc7, 0xc1, 0x7a, - 0xeb, 0x43, 0x48, 0x45, 0x88, 0xb4, 0x01, 0xd0, 0xd2, 0x1c, 0xbc, 0x65, 0x5a, 0xba, 0xdf, 0x1f, - 0x3e, 0x39, 0x09, 0xb5, 0x12, 0xfd, 0xfb, 0x92, 0x1a, 0xa2, 0xa3, 0xdc, 0x09, 0xd3, 0xd8, 0x3f, - 0x7f, 0xef, 0x2d, 0xd5, 0xc4, 0xe2, 0x15, 0xce, 0x8f, 0xfe, 0x5c, 0xe8, 0xd4, 0x99, 0x48, 0x35, - 0x93, 0x61, 0xd6, 0x1c, 0xae, 0x0d, 0x6d, 0x54, 0xd7, 0x8a, 0x6a, 0x7d, 0xa5, 0xb8, 0xba, 0x5a, - 0xa9, 0x2e, 0xfb, 0x81, 0x5f, 0x14, 0x98, 0x5b, 0xac, 0x9d, 0xab, 0x86, 0x22, 0xf3, 0x64, 0xd1, - 0x3a, 0x4c, 0x7a, 0xf2, 0xea, 0xe7, 0x8b, 0x19, 0x96, 0x19, 0xf3, 0xc5, 0x0c, 0x25, 0xb9, 0xc6, - 0x99, 0xde, 0xf2, 0x1d, 0x74, 0xc8, 0x33, 0xfa, 0x23, 0x0d, 0x72, 0x64, 0x4d, 0x1d, 0xbd, 0x9d, - 0x6c, 0x03, 0x76, 0x3b, 0x5a, 0x0b, 0xa3, 0x9d, 0x04, 0xd6, 0xb8, 0x77, 0x75, 0x82, 0xb4, 0xef, - 0xea, 0x04, 0xf2, 0xc8, 0xac, 0xbe, 0xe3, 0xfd, 0xd6, 0xf1, 0x55, 0x9a, 0x85, 0x3f, 0xa0, 0x15, - 0xbb, 0xbb, 0x42, 0x97, 0xff, 0x19, 0x9b, 0x11, 0x2a, 0x19, 0xcd, 0x53, 0x32, 0x4b, 0x54, 0x6c, - 0x1f, 0x26, 0x8e, 0xa3, 0x31, 0x5c, 0xef, 0x9d, 0x85, 0x5c, 0xbd, 0xdb, 0xd1, 0x1d, 0xf4, 0x52, - 0x69, 0x24, 0x98, 0xd1, 0xeb, 0x2e, 0xe4, 0x81, 0xd7, 0x5d, 0x04, 0xbb, 0xae, 0x59, 0x81, 0x5d, - 0xd7, 0x06, 0x7e, 0xd0, 0xe1, 0x77, 0x5d, 0x6f, 0x63, 0xc1, 0xdb, 0xe8, 0x9e, 0xed, 0x63, 0xfb, - 0x88, 0x94, 0x54, 0xab, 0x4f, 0x54, 0xc0, 0x33, 0x4f, 0x64, 0xc1, 0xc9, 0x00, 0xf2, 0x0b, 0xb5, - 0x46, 0xa3, 0xb6, 0x56, 0x38, 0x42, 0xa2, 0xda, 0xd4, 0xd6, 0x69, 0xa8, 0x98, 0x4a, 0xb5, 0x5a, - 0x56, 0x0b, 0x12, 0x09, 0x97, 0x56, 0x69, 0xac, 0x96, 0x0b, 0x32, 0x1f, 0xfb, 0x3c, 0xd6, 0xfc, - 0xe6, 0xcb, 0x4e, 0x53, 0xbd, 0xc4, 0x0c, 0xf1, 0x68, 0x7e, 0xd2, 0x57, 0xae, 0x5f, 0x93, 0x21, - 0xb7, 0x86, 0xad, 0x2d, 0x8c, 0x7e, 0x26, 0xc1, 0x26, 0xdf, 0xa6, 0x6e, 0xd9, 0x34, 0xb8, 0x5c, - 0xb0, 0xc9, 0x17, 0x4e, 0x53, 0xae, 0x83, 0x59, 0x1b, 0xb7, 0x4c, 0xa3, 0xed, 0x65, 0xa2, 0xfd, - 0x11, 0x9f, 0xc8, 0xdf, 0x3b, 0x2f, 0x00, 0x19, 0x61, 0x74, 0x24, 0x3b, 0x75, 0x49, 0x80, 0xe9, - 0x57, 0x6a, 0xfa, 0xc0, 0x7c, 0x5b, 0x76, 0x7f, 0xea, 0x5e, 0x42, 0x2f, 0x11, 0xde, 0x7d, 0xbd, - 0x09, 0xf2, 0x44, 0x4d, 0xbd, 0x31, 0xba, 0x7f, 0x7f, 0xcc, 0xf2, 0x28, 0x0b, 0x70, 0xcc, 0xc6, - 0x1d, 0xdc, 0x72, 0x70, 0xdb, 0x6d, 0xba, 0xea, 0xc0, 0x4e, 0x61, 0x7f, 0x76, 0xf4, 0xa7, 0x61, - 0x00, 0xef, 0xe0, 0x01, 0xbc, 0xbe, 0x8f, 0x28, 0xdd, 0x0a, 0x45, 0xdb, 0xca, 0x6e, 0x35, 0xea, - 0x1d, 0xd3, 0x5f, 0x14, 0xf7, 0xde, 0xdd, 0x6f, 0xdb, 0xce, 0x4e, 0x87, 0x7c, 0x63, 0x07, 0x0c, - 0xbc, 0x77, 0x65, 0x1e, 0x26, 0x34, 0xe3, 0x12, 0xf9, 0x94, 0x8d, 0xa9, 0xb5, 0x97, 0x09, 0xbd, - 0xc2, 0x47, 0xfe, 0x6e, 0x0e, 0xf9, 0xc7, 0x8b, 0xb1, 0x9b, 0x3e, 0xf0, 0x3f, 0x3f, 0x01, 0xb9, - 0x75, 0xcd, 0x76, 0x30, 0xfa, 0xbf, 0x64, 0x51, 0xe4, 0xaf, 0x87, 0xb9, 0x4d, 0xb3, 0xb5, 0x6b, - 0xe3, 0x36, 0xdf, 0x28, 0x7b, 0x52, 0x47, 0x81, 0xb9, 0x72, 0x23, 0x14, 0xbc, 0x44, 0x46, 0xd6, - 0xdb, 0x86, 0xdf, 0x97, 0x4e, 0x22, 0x69, 0xdb, 0xeb, 0x9a, 0xe5, 0xd4, 0x36, 0x49, 0x9a, 0x1f, - 0x49, 0x3b, 0x9c, 0xc8, 0x41, 0x9f, 0x8f, 0x81, 0x7e, 0x22, 0x1a, 0xfa, 0x49, 0x01, 0xe8, 0x95, - 0x22, 0x4c, 0x6e, 0xea, 0x1d, 0x4c, 0x7e, 0x98, 0x22, 0x3f, 0xf4, 0x1b, 0x93, 0x88, 0xec, 0xfd, - 0x31, 0x69, 0x49, 0xef, 0x60, 0xd5, 0xff, 0xcd, 0x9b, 0xc8, 0x40, 0x30, 0x91, 0x59, 0xa5, 0xfe, - 0xb4, 0xae, 0xe1, 0x65, 0x68, 0x3b, 0xd8, 0x5b, 0x7c, 0x33, 0xd8, 0xe1, 0x96, 0xb6, 0xe6, 0x68, - 0x04, 0x8c, 0x19, 0x95, 0x3c, 0xf3, 0x7e, 0x21, 0x72, 0xaf, 0x5f, 0xc8, 0xb3, 0xe5, 0x64, 0x3d, - 0xa2, 0xc7, 0x6c, 0x44, 0x8b, 0x3a, 0xef, 0x01, 0x44, 0x2d, 0x45, 0xff, 0xdd, 0x05, 0xa6, 0xa5, - 0x59, 0xd8, 0x59, 0x0f, 0x7b, 0x62, 0xe4, 0x54, 0x3e, 0x91, 0xb8, 0xf2, 0xd9, 0x75, 0x6d, 0x07, - 0x93, 0xc2, 0x4a, 0xee, 0x37, 0xe6, 0xa2, 0xb5, 0x2f, 0x3d, 0xe8, 0x7f, 0x73, 0xa3, 0xee, 0x7f, - 0xfb, 0xd5, 0x31, 0xfd, 0x66, 0xf8, 0xea, 0x2c, 0xc8, 0xa5, 0x5d, 0xe7, 0x51, 0xdd, 0xfd, 0x7e, - 0x5f, 0xd8, 0xcf, 0x85, 0xf5, 0x67, 0x91, 0x17, 0xcd, 0x8f, 0xa9, 0xf7, 0x4d, 0xa8, 0x25, 0x62, - 0xfe, 0x34, 0x51, 0x75, 0x1b, 0xc3, 0xbd, 0x06, 0xb2, 0xef, 0x60, 0xf9, 0x50, 0xe6, 0xe0, 0xa6, - 0x39, 0xa2, 0xfd, 0x53, 0xa8, 0x67, 0xf0, 0xdf, 0xbd, 0x8e, 0x27, 0xcb, 0xc5, 0xea, 0x23, 0xdb, - 0xeb, 0x44, 0x94, 0x33, 0x2a, 0x7d, 0x41, 0x2f, 0x13, 0x76, 0x3b, 0xa7, 0x62, 0x8b, 0x75, 0x25, - 0x4c, 0x66, 0x53, 0x89, 0x5d, 0x26, 0x1a, 0x53, 0x6c, 0xfa, 0x80, 0x7d, 0x2b, 0xec, 0x2a, 0x58, - 0x3c, 0x30, 0x62, 0xe8, 0x95, 0xc2, 0xdb, 0x51, 0xb4, 0xda, 0x03, 0xd6, 0x0b, 0x93, 0xc9, 0x5b, - 0x6c, 0xb3, 0x2a, 0xb6, 0xe0, 0xf4, 0x25, 0xfe, 0x4d, 0x19, 0xf2, 0x74, 0x0b, 0x12, 0xbd, 0x29, - 0x93, 0xe0, 0x16, 0x76, 0x87, 0x77, 0x21, 0xf4, 0xdf, 0x93, 0xac, 0x39, 0x70, 0xae, 0x86, 0xd9, - 0x44, 0xae, 0x86, 0xfc, 0x39, 0x4e, 0x81, 0x76, 0x44, 0xeb, 0x98, 0xf2, 0x74, 0x32, 0x49, 0x0b, - 0xeb, 0xcb, 0x50, 0xfa, 0x78, 0x3f, 0x37, 0x07, 0x33, 0xb4, 0xe8, 0x73, 0x7a, 0x7b, 0x0b, 0x3b, - 0xe8, 0x9d, 0xd2, 0x0f, 0x0e, 0xea, 0x4a, 0x15, 0x66, 0x2e, 0x12, 0xb6, 0x57, 0xb5, 0x4b, 0xe6, - 0xae, 0xc3, 0x56, 0x2e, 0x6e, 0x8c, 0x5d, 0xf7, 0xa0, 0xf5, 0x9c, 0xa7, 0x7f, 0xa8, 0xdc, 0xff, - 0xae, 0x8c, 0xe9, 0x82, 0x3f, 0x75, 0xe0, 0xca, 0x13, 0x23, 0x2b, 0x9c, 0xa4, 0x9c, 0x84, 0xfc, - 0x9e, 0x8e, 0x2f, 0x56, 0xda, 0xcc, 0xba, 0x65, 0x6f, 0xe8, 0x0f, 0x84, 0xf7, 0x6d, 0xc3, 0x70, - 0x33, 0x5e, 0xd2, 0xd5, 0x42, 0xb1, 0xdd, 0xdb, 0x81, 0x6c, 0x8d, 0xe1, 0x4c, 0x31, 0x7f, 0x59, - 0x67, 0x29, 0x81, 0x22, 0x46, 0x19, 0xce, 0x7c, 0x28, 0x8f, 0xd8, 0x13, 0x2b, 0x54, 0x00, 0x23, - 0xbe, 0xc7, 0x53, 0x2c, 0xbe, 0xc4, 0x80, 0xa2, 0xd3, 0x97, 0xfc, 0x6b, 0x65, 0x98, 0xaa, 0x63, - 0x67, 0x49, 0xc7, 0x9d, 0xb6, 0x8d, 0xac, 0x83, 0x9b, 0x46, 0x37, 0x43, 0x7e, 0x93, 0x10, 0x1b, - 0x74, 0x6e, 0x81, 0x65, 0x43, 0xaf, 0x96, 0x44, 0x77, 0x84, 0xd9, 0xea, 0x9b, 0xc7, 0xed, 0x48, - 0x60, 0x12, 0xf3, 0xe8, 0x8d, 0x2f, 0x79, 0x0c, 0x81, 0x6d, 0x65, 0x98, 0x61, 0xb7, 0xfb, 0x15, - 0x3b, 0xfa, 0x96, 0x81, 0x76, 0x47, 0xd0, 0x42, 0x94, 0x5b, 0x20, 0xa7, 0xb9, 0xd4, 0xd8, 0xd6, - 0x2b, 0xea, 0xdb, 0x79, 0x92, 0xf2, 0x54, 0x9a, 0x31, 0x41, 0x18, 0xc9, 0x40, 0xb1, 0x3d, 0x9e, - 0xc7, 0x18, 0x46, 0x72, 0x60, 0xe1, 0xe9, 0x23, 0xf6, 0x65, 0x19, 0x8e, 0x33, 0x06, 0xce, 0x62, - 0xcb, 0xd1, 0x5b, 0x5a, 0x87, 0x22, 0xf7, 0xfc, 0xcc, 0x28, 0xa0, 0x5b, 0x81, 0xd9, 0xbd, 0x30, - 0x59, 0x06, 0xe1, 0x99, 0xbe, 0x10, 0x72, 0x0c, 0xa8, 0xfc, 0x8f, 0x09, 0xc2, 0xf1, 0x71, 0x52, - 0xe5, 0x68, 0x8e, 0x31, 0x1c, 0x9f, 0x30, 0x13, 0xe9, 0x43, 0xfc, 0x62, 0x16, 0x9a, 0x27, 0xe8, - 0x3e, 0xbf, 0x20, 0x8c, 0xed, 0x06, 0x4c, 0x13, 0x2c, 0xe9, 0x8f, 0x6c, 0x19, 0x22, 0x46, 0x89, - 0xfd, 0x7e, 0x87, 0x5d, 0x18, 0xe6, 0xff, 0xab, 0x86, 0xe9, 0xa0, 0x73, 0x00, 0xc1, 0xa7, 0x70, - 0x27, 0x9d, 0x89, 0xea, 0xa4, 0x25, 0xb1, 0x4e, 0xfa, 0x8d, 0xc2, 0xc1, 0x52, 0xfa, 0xb3, 0x7d, - 0x70, 0xf5, 0x10, 0x0b, 0x93, 0x31, 0xb8, 0xf4, 0xf4, 0xf5, 0xe2, 0x15, 0xd9, 0xde, 0x6b, 0xdc, - 0x3f, 0x32, 0x92, 0xf9, 0x54, 0xb8, 0x3f, 0x90, 0x7b, 0xfa, 0x83, 0x03, 0x58, 0xd2, 0x37, 0xc0, - 0x51, 0x5a, 0x44, 0xc9, 0x67, 0x2b, 0x47, 0x43, 0x41, 0xf4, 0x24, 0xa3, 0x8f, 0x0e, 0xa1, 0x04, - 0x83, 0xee, 0x98, 0x8f, 0xeb, 0xe4, 0x92, 0x19, 0xbb, 0x49, 0x15, 0xe4, 0xf0, 0xae, 0xa6, 0xff, - 0x46, 0x96, 0x5a, 0xbb, 0x1b, 0xe4, 0x4e, 0x37, 0xf4, 0x17, 0xd9, 0x51, 0x8c, 0x08, 0xf7, 0x40, - 0x96, 0xb8, 0xb8, 0xcb, 0x91, 0x4b, 0x1a, 0x41, 0x91, 0xc1, 0x85, 0x7b, 0xf8, 0x41, 0x67, 0xe5, - 0x88, 0x4a, 0xfe, 0x54, 0x6e, 0x84, 0xa3, 0xe7, 0xb5, 0xd6, 0x85, 0x2d, 0xcb, 0xdc, 0x25, 0xb7, - 0x5f, 0x99, 0xec, 0x1a, 0x2d, 0x72, 0x1d, 0x21, 0xff, 0x41, 0xb9, 0xd5, 0x33, 0x1d, 0x72, 0x83, - 0x4c, 0x87, 0x95, 0x23, 0xcc, 0x78, 0x50, 0x9e, 0xe8, 0x77, 0x3a, 0xf9, 0xd8, 0x4e, 0x67, 0xe5, - 0x88, 0xd7, 0xed, 0x28, 0x8b, 0x30, 0xd9, 0xd6, 0xf7, 0xc8, 0x56, 0x35, 0x99, 0x75, 0x0d, 0x3a, - 0xba, 0xbc, 0xa8, 0xef, 0xd1, 0x8d, 0xed, 0x95, 0x23, 0xaa, 0xff, 0xa7, 0xb2, 0x0c, 0x53, 0x64, - 0x5b, 0x80, 0x90, 0x99, 0x4c, 0x74, 0x2c, 0x79, 0xe5, 0x88, 0x1a, 0xfc, 0xeb, 0x5a, 0x1f, 0x59, - 0x72, 0xf6, 0xe3, 0x6e, 0x6f, 0xbb, 0x3d, 0x93, 0x68, 0xbb, 0xdd, 0x95, 0x05, 0xdd, 0x70, 0x3f, - 0x09, 0xb9, 0x16, 0x91, 0xb0, 0xc4, 0x24, 0x4c, 0x5f, 0x95, 0x3b, 0x20, 0xbb, 0xa3, 0x59, 0xde, - 0xe4, 0xf9, 0xfa, 0xc1, 0x74, 0xd7, 0x34, 0xeb, 0x82, 0x8b, 0xa0, 0xfb, 0xd7, 0xc2, 0x04, 0xe4, - 0x88, 0xe0, 0xfc, 0x07, 0xf4, 0x96, 0x2c, 0x35, 0x43, 0x4a, 0xa6, 0xe1, 0x0e, 0xfb, 0x0d, 0xd3, - 0x3b, 0x20, 0xf3, 0x07, 0x99, 0xd1, 0x58, 0x90, 0x7d, 0xef, 0x3d, 0x97, 0x23, 0xef, 0x3d, 0xef, - 0xb9, 0x80, 0x37, 0xdb, 0x7b, 0x01, 0x6f, 0xb0, 0x7c, 0x90, 0x1b, 0xec, 0xa8, 0xf2, 0xa7, 0x43, - 0x98, 0x2e, 0xbd, 0x82, 0x88, 0x9e, 0x81, 0x77, 0x74, 0x23, 0x54, 0x67, 0xef, 0x35, 0x61, 0xa7, - 0x94, 0xd4, 0xa8, 0x19, 0xc0, 0x5e, 0xfa, 0x7d, 0xd3, 0x6f, 0x65, 0xe1, 0x14, 0xbd, 0xe6, 0x79, - 0x0f, 0x37, 0x4c, 0xfe, 0xbe, 0x49, 0xf4, 0xa9, 0x91, 0x28, 0x4d, 0x9f, 0x01, 0x47, 0xee, 0x3b, - 0xe0, 0xec, 0x3b, 0xa4, 0x9c, 0x1d, 0x70, 0x48, 0x39, 0x97, 0x6c, 0xe5, 0xf0, 0x03, 0x61, 0xfd, - 0x59, 0xe7, 0xf5, 0xe7, 0xf6, 0x08, 0x80, 0xfa, 0xc9, 0x65, 0x24, 0xf6, 0xcd, 0xdb, 0x7d, 0x4d, - 0xa9, 0x73, 0x9a, 0x72, 0xf7, 0xf0, 0x8c, 0xa4, 0xaf, 0x2d, 0xbf, 0x9f, 0x85, 0xcb, 0x02, 0x66, - 0xaa, 0xf8, 0x22, 0x53, 0x94, 0xcf, 0x8f, 0x44, 0x51, 0x92, 0xc7, 0x40, 0x48, 0x5b, 0x63, 0xfe, - 0x58, 0xf8, 0xec, 0x50, 0x2f, 0x50, 0xbe, 0x6c, 0x22, 0x94, 0xe5, 0x24, 0xe4, 0x69, 0x0f, 0xc3, - 0xa0, 0x61, 0x6f, 0x09, 0xbb, 0x1b, 0xb1, 0x13, 0x47, 0xa2, 0xbc, 0x8d, 0x41, 0x7f, 0xd8, 0xba, - 0x46, 0x63, 0xd7, 0x32, 0x2a, 0x86, 0x63, 0xa2, 0x9f, 0x1b, 0x89, 0xe2, 0xf8, 0xde, 0x70, 0xf2, - 0x30, 0xde, 0x70, 0x43, 0xad, 0x72, 0x78, 0x35, 0x38, 0x94, 0x55, 0x8e, 0x88, 0xc2, 0xd3, 0xc7, - 0xef, 0x6d, 0x32, 0x9c, 0x64, 0x93, 0xad, 0x05, 0xde, 0x42, 0x44, 0xf7, 0x8f, 0x02, 0xc8, 0xe3, - 0x9e, 0x99, 0xc4, 0x6e, 0x39, 0x23, 0x2f, 0xfc, 0x49, 0xa9, 0xd8, 0xfb, 0x1d, 0xb8, 0xe9, 0x60, - 0x0f, 0x87, 0x23, 0x41, 0x4a, 0xec, 0x5a, 0x87, 0x04, 0x6c, 0xa4, 0x8f, 0xd9, 0x0b, 0x65, 0xc8, - 0xb3, 0xeb, 0xfd, 0x37, 0x52, 0x71, 0x98, 0xe0, 0xa3, 0x3c, 0x0b, 0xec, 0xc8, 0x25, 0xbe, 0xe4, - 0x3e, 0xbd, 0xbd, 0xb8, 0x43, 0xba, 0xc5, 0xfe, 0xdb, 0x12, 0x4c, 0xd7, 0xb1, 0x53, 0xd2, 0x2c, - 0x4b, 0xd7, 0xb6, 0x46, 0xe5, 0xf1, 0x2d, 0xea, 0x3d, 0x8c, 0xbe, 0x93, 0x11, 0x3d, 0x4f, 0xe3, - 0x2f, 0x84, 0x7b, 0xac, 0x46, 0xc4, 0x12, 0x7c, 0x58, 0xe8, 0xcc, 0xcc, 0x20, 0x6a, 0x63, 0xf0, - 0xd8, 0x96, 0x60, 0xc2, 0x3b, 0x8b, 0x77, 0x33, 0x77, 0x3e, 0x73, 0xdb, 0xd9, 0xf1, 0x8e, 0xc1, - 0x90, 0xe7, 0xfd, 0x67, 0xc0, 0xd0, 0xcb, 0x13, 0x3a, 0xca, 0xc7, 0x1f, 0x24, 0x4c, 0xd6, 0xc6, - 0x92, 0xb8, 0xc3, 0x1f, 0xd6, 0xd1, 0xc1, 0xdf, 0x9d, 0x60, 0xcb, 0x91, 0xab, 0x9a, 0x83, 0x1f, - 0x44, 0x5f, 0x90, 0x61, 0xa2, 0x8e, 0x1d, 0x77, 0xbc, 0xe5, 0x2e, 0x37, 0x1d, 0x56, 0xc3, 0x95, - 0xd0, 0x8a, 0xc7, 0x14, 0x5b, 0xc3, 0xb8, 0x17, 0xa6, 0xba, 0x96, 0xd9, 0xc2, 0xb6, 0xcd, 0x56, - 0x2f, 0xc2, 0x8e, 0x6a, 0xfd, 0x46, 0x7f, 0xc2, 0xda, 0xfc, 0xba, 0xf7, 0x8f, 0x1a, 0xfc, 0x9e, - 0xd4, 0x0c, 0xa0, 0x94, 0x58, 0x05, 0xc7, 0x6d, 0x06, 0xc4, 0x15, 0x9e, 0x3e, 0xd0, 0x9f, 0x95, - 0x61, 0xa6, 0x8e, 0x1d, 0x5f, 0x8a, 0x09, 0x36, 0x39, 0xa2, 0xe1, 0xe5, 0xa0, 0x94, 0x0f, 0x06, - 0xa5, 0xf8, 0xd5, 0x80, 0xbc, 0x34, 0x7d, 0x62, 0x63, 0xbc, 0x1a, 0x50, 0x8c, 0x83, 0x31, 0x1c, - 0x5f, 0x7b, 0x2c, 0x4c, 0x11, 0x5e, 0x48, 0x83, 0xfd, 0xa5, 0x6c, 0xd0, 0x78, 0xbf, 0x98, 0x52, - 0xe3, 0xbd, 0x13, 0x72, 0x3b, 0x9a, 0x75, 0xc1, 0x26, 0x0d, 0x77, 0x5a, 0xc4, 0x6c, 0x5f, 0x73, - 0xb3, 0xab, 0xf4, 0xaf, 0xfe, 0x7e, 0x9a, 0xb9, 0x64, 0x7e, 0x9a, 0x0f, 0x4b, 0x89, 0x46, 0x42, - 0x3a, 0x77, 0x18, 0x61, 0x93, 0x4f, 0x30, 0x6e, 0xc6, 0x94, 0x9d, 0xbe, 0x72, 0x3c, 0x5f, 0x86, - 0x49, 0x77, 0xdc, 0x26, 0xf6, 0xf8, 0xb9, 0x83, 0xab, 0x43, 0x7f, 0x43, 0x3f, 0x61, 0x0f, 0xec, - 0x49, 0x64, 0x74, 0xe6, 0x7d, 0x82, 0x1e, 0x38, 0xae, 0xf0, 0xf4, 0xf1, 0x78, 0x07, 0xc5, 0x83, - 0xb4, 0x07, 0xf4, 0x7a, 0x19, 0xe4, 0x65, 0xec, 0x8c, 0xdb, 0x8a, 0x7c, 0xab, 0x70, 0x88, 0x23, - 0x4e, 0x60, 0x84, 0xe7, 0xf9, 0x65, 0x3c, 0x9a, 0x06, 0x24, 0x16, 0xdb, 0x48, 0x88, 0x81, 0xf4, - 0x51, 0x7b, 0x0f, 0x45, 0x8d, 0x6e, 0x2e, 0xfc, 0xec, 0x08, 0x7a, 0xd5, 0xf1, 0x2e, 0x7c, 0x78, - 0x02, 0x24, 0x34, 0x0e, 0xab, 0xbd, 0xf5, 0x2b, 0x7c, 0x2c, 0x57, 0xf1, 0x81, 0xdb, 0xd8, 0xb7, - 0x71, 0xeb, 0x02, 0x6e, 0xa3, 0x9f, 0x3a, 0x38, 0x74, 0xa7, 0x60, 0xa2, 0x45, 0xa9, 0x11, 0xf0, - 0x26, 0x55, 0xef, 0x35, 0xc1, 0xbd, 0xd2, 0x7c, 0x47, 0x44, 0x7f, 0x1f, 0xe3, 0xbd, 0xd2, 0x02, - 0xc5, 0x8f, 0xc1, 0x6c, 0xa1, 0xb3, 0x8c, 0x4a, 0xcb, 0x34, 0xd0, 0x7f, 0x39, 0x38, 0x2c, 0x57, - 0xc1, 0x94, 0xde, 0x32, 0x0d, 0x12, 0x86, 0xc2, 0x3b, 0x04, 0xe4, 0x27, 0x78, 0x5f, 0xcb, 0x3b, - 0xe6, 0x03, 0x3a, 0xdb, 0x35, 0x0f, 0x12, 0x86, 0x35, 0x26, 0x5c, 0xd6, 0x0f, 0xcb, 0x98, 0xe8, - 0x53, 0x76, 0xfa, 0x90, 0x7d, 0x34, 0xf0, 0x6e, 0xa3, 0x5d, 0xe1, 0xa3, 0x62, 0x15, 0x78, 0x98, - 0xe1, 0x2c, 0x5c, 0x8b, 0x43, 0x19, 0xce, 0x62, 0x18, 0x18, 0xc3, 0x8d, 0x15, 0x01, 0x8e, 0xa9, - 0xaf, 0x01, 0x1f, 0x00, 0x9d, 0xd1, 0x99, 0x87, 0x43, 0xa2, 0x73, 0x38, 0x26, 0xe2, 0xfb, 0x59, - 0x88, 0x4c, 0x66, 0xf1, 0xa0, 0xff, 0x3a, 0x0a, 0x70, 0x6e, 0x1f, 0xc6, 0x5f, 0x81, 0x7a, 0x2b, - 0x24, 0xb8, 0x11, 0x7b, 0x9f, 0x04, 0x5d, 0x2a, 0x63, 0xbc, 0x2b, 0x5e, 0xa4, 0xfc, 0xf4, 0x01, - 0x7c, 0x9e, 0x0c, 0x73, 0xc4, 0x47, 0xa0, 0x83, 0x35, 0x8b, 0x76, 0x94, 0x23, 0x71, 0x94, 0x7f, - 0x87, 0x70, 0x80, 0x1f, 0x5e, 0x0e, 0x01, 0x1f, 0x23, 0x81, 0x42, 0x2c, 0xba, 0x8f, 0x20, 0x0b, - 0x63, 0xd9, 0x46, 0x29, 0xf8, 0x2c, 0x30, 0x15, 0x1f, 0x0d, 0x1e, 0x09, 0x3d, 0x72, 0x79, 0x61, - 0x78, 0x8d, 0x6d, 0xcc, 0x1e, 0xb9, 0x22, 0x4c, 0xa4, 0x8f, 0xc9, 0xeb, 0x6f, 0x61, 0x0b, 0xce, - 0x0d, 0x72, 0x61, 0xfc, 0x2b, 0xb3, 0xfe, 0x89, 0xb6, 0xcf, 0x8e, 0xc4, 0x03, 0xf3, 0x00, 0x01, - 0xf1, 0x15, 0xc8, 0x5a, 0xe6, 0x45, 0xba, 0xb4, 0x35, 0xab, 0x92, 0x67, 0x7a, 0x3d, 0x65, 0x67, - 0x77, 0xc7, 0xa0, 0x27, 0x43, 0x67, 0x55, 0xef, 0x55, 0xb9, 0x0e, 0x66, 0x2f, 0xea, 0xce, 0xf6, - 0x0a, 0xd6, 0xda, 0xd8, 0x52, 0xcd, 0x8b, 0xc4, 0x63, 0x6e, 0x52, 0xe5, 0x13, 0x79, 0xff, 0x15, - 0x01, 0xfb, 0x92, 0xdc, 0x22, 0x3f, 0x96, 0xe3, 0x6f, 0x49, 0x2c, 0xcf, 0x68, 0xae, 0xd2, 0x57, - 0x98, 0xf7, 0xca, 0x30, 0xa5, 0x9a, 0x17, 0x99, 0x92, 0xfc, 0x1f, 0x87, 0xab, 0x23, 0x89, 0x27, - 0x7a, 0x44, 0x72, 0x3e, 0xfb, 0x63, 0x9f, 0xe8, 0xc5, 0x16, 0x3f, 0x96, 0x93, 0x4b, 0x33, 0xaa, - 0x79, 0xb1, 0x8e, 0x1d, 0xda, 0x22, 0x50, 0x73, 0x44, 0x4e, 0xd6, 0xba, 0x4d, 0x09, 0xb2, 0x79, - 0xb8, 0xff, 0x9e, 0x74, 0x17, 0xc1, 0x17, 0x90, 0xcf, 0xe2, 0xb8, 0x77, 0x11, 0x06, 0x72, 0x30, - 0x86, 0x18, 0x29, 0x32, 0x4c, 0xab, 0xe6, 0x45, 0x77, 0x68, 0x58, 0xd2, 0x3b, 0x9d, 0xd1, 0x8c, - 0x90, 0x49, 0x8d, 0x7f, 0x4f, 0x0c, 0x1e, 0x17, 0x63, 0x37, 0xfe, 0x07, 0x30, 0x90, 0x3e, 0x0c, - 0xcf, 0xa6, 0x8d, 0xc5, 0x1b, 0xa1, 0x8d, 0xd1, 0xe0, 0x30, 0x6c, 0x83, 0xf0, 0xd9, 0x38, 0xb4, - 0x06, 0x11, 0xc5, 0xc1, 0x58, 0x76, 0x4e, 0xe6, 0x4a, 0x64, 0x98, 0x1f, 0x6d, 0x9b, 0x78, 0x57, - 0x32, 0xd7, 0x44, 0x36, 0xec, 0x72, 0x8c, 0x8c, 0x04, 0x8d, 0x04, 0x2e, 0x88, 0x02, 0x3c, 0xa4, - 0x8f, 0xc7, 0x87, 0x64, 0x98, 0xa1, 0x2c, 0x3c, 0x4a, 0xac, 0x80, 0xa1, 0x1a, 0x55, 0xb8, 0x06, - 0x87, 0xd3, 0xa8, 0x62, 0x38, 0x18, 0xcb, 0xad, 0xa0, 0xae, 0x1d, 0x37, 0xc4, 0xf1, 0xf1, 0x28, - 0x04, 0x87, 0x36, 0xc6, 0x46, 0x78, 0x84, 0x7c, 0x18, 0x63, 0xec, 0x90, 0x8e, 0x91, 0x3f, 0xdb, - 0x6f, 0x45, 0xa3, 0xc4, 0xe0, 0x00, 0x4d, 0x61, 0x84, 0x30, 0x0c, 0xd9, 0x14, 0x0e, 0x09, 0x89, - 0xaf, 0xc8, 0x00, 0x94, 0x81, 0x35, 0x73, 0x8f, 0x5c, 0xe6, 0x33, 0x82, 0xee, 0xac, 0xd7, 0xad, - 0x5e, 0x1e, 0xe0, 0x56, 0x9f, 0x30, 0x84, 0x4b, 0xd2, 0x95, 0xc0, 0x90, 0x94, 0xdd, 0x4a, 0x8e, - 0x7d, 0x25, 0x30, 0xbe, 0xfc, 0xf4, 0x31, 0x7e, 0x84, 0x5a, 0x73, 0xc1, 0x01, 0xd3, 0xdf, 0x18, - 0x09, 0xca, 0xa1, 0xd9, 0xbf, 0xcc, 0xcf, 0xfe, 0x0f, 0x80, 0xed, 0xb0, 0x36, 0xe2, 0xa0, 0x83, - 0xa3, 0xe9, 0xdb, 0x88, 0x87, 0x77, 0x40, 0xf4, 0x67, 0xb3, 0x70, 0x94, 0x75, 0x22, 0x3f, 0x08, - 0x10, 0x27, 0x3c, 0x87, 0xc7, 0x75, 0x92, 0x03, 0x50, 0x1e, 0xd5, 0x82, 0x54, 0x92, 0xa5, 0x4c, - 0x01, 0xf6, 0xc6, 0xb2, 0xba, 0x91, 0x2f, 0x3f, 0xd8, 0xd5, 0x8c, 0xb6, 0x78, 0xb8, 0xdf, 0x01, - 0xc0, 0x7b, 0x6b, 0x8d, 0x32, 0xbf, 0xd6, 0xd8, 0x67, 0x65, 0x32, 0xf1, 0xce, 0x35, 0x11, 0x19, - 0x65, 0x77, 0xec, 0x3b, 0xd7, 0xd1, 0x65, 0xa7, 0x8f, 0xd2, 0xbb, 0x64, 0xc8, 0xd6, 0x4d, 0xcb, - 0x41, 0xcf, 0x49, 0xd2, 0x3a, 0xa9, 0xe4, 0x03, 0x90, 0xbc, 0x77, 0xa5, 0xc4, 0xdd, 0xd2, 0x7c, - 0x73, 0xfc, 0x51, 0x67, 0xcd, 0xd1, 0x88, 0x57, 0xb7, 0x5b, 0x7e, 0xe8, 0xba, 0xe6, 0xa4, 0xf1, - 0x74, 0xa8, 0xfc, 0xea, 0xd1, 0x07, 0x30, 0x52, 0x8b, 0xa7, 0x13, 0x59, 0x72, 0xfa, 0xb8, 0xbd, - 0xe6, 0x28, 0xf3, 0x6d, 0x5d, 0xd2, 0x3b, 0x18, 0x3d, 0x87, 0xba, 0x8c, 0x54, 0xb5, 0x1d, 0x2c, - 0x7e, 0x24, 0x26, 0xd6, 0xb5, 0x95, 0xc4, 0x97, 0x95, 0x83, 0xf8, 0xb2, 0x49, 0x1b, 0x14, 0x3d, - 0x80, 0x4e, 0x59, 0x1a, 0x77, 0x83, 0x8a, 0x29, 0x7b, 0x2c, 0x71, 0x3a, 0x8f, 0xd5, 0xb1, 0x43, - 0x8d, 0xca, 0x9a, 0x77, 0x03, 0xcb, 0x4f, 0x8f, 0x24, 0x62, 0xa7, 0x7f, 0xc1, 0x8b, 0xdc, 0x73, - 0xc1, 0xcb, 0x7b, 0xc3, 0xe0, 0xac, 0xf1, 0xe0, 0xfc, 0x78, 0xb4, 0x80, 0x78, 0x26, 0x47, 0x02, - 0xd3, 0x5b, 0x7d, 0x98, 0xd6, 0x39, 0x98, 0xee, 0x18, 0x92, 0x8b, 0xf4, 0x01, 0xfb, 0xe5, 0x1c, - 0x1c, 0xa5, 0x93, 0xfe, 0xa2, 0xd1, 0x66, 0x11, 0x56, 0xdf, 0x24, 0x1d, 0xf2, 0x66, 0xdb, 0xfe, - 0x10, 0xac, 0x5c, 0x2c, 0xe7, 0x5c, 0xef, 0xed, 0xf8, 0x0b, 0x34, 0x9c, 0xab, 0xdb, 0x89, 0x92, - 0x9d, 0x36, 0xf1, 0x1b, 0xf2, 0xfd, 0xff, 0xf8, 0xbb, 0x8c, 0x26, 0xc4, 0xef, 0x32, 0xfa, 0x93, - 0x64, 0xeb, 0x76, 0xa4, 0xe8, 0x1e, 0x81, 0xa7, 0x6c, 0x3b, 0x25, 0x58, 0xd1, 0x13, 0xe0, 0xee, - 0x87, 0xc3, 0x9d, 0x2c, 0x88, 0x20, 0x32, 0xa4, 0x3b, 0x19, 0x21, 0x70, 0x98, 0xee, 0x64, 0x83, - 0x18, 0x18, 0xc3, 0xad, 0xf6, 0x39, 0xb6, 0x9b, 0x4f, 0xda, 0x0d, 0xfa, 0x2b, 0x29, 0xf5, 0x51, - 0xfa, 0xbb, 0x99, 0x44, 0xfe, 0xcf, 0x84, 0xaf, 0xf8, 0x61, 0x3a, 0x89, 0x47, 0x73, 0x1c, 0xb9, - 0x31, 0xac, 0x1b, 0x49, 0xc4, 0x17, 0xfd, 0x9c, 0xde, 0x76, 0xb6, 0x47, 0x74, 0xa2, 0xe3, 0xa2, - 0x4b, 0xcb, 0xbb, 0x1e, 0x99, 0xbc, 0xa0, 0x7f, 0xcb, 0x24, 0x0a, 0x21, 0xe5, 0x8b, 0x84, 0xb0, - 0x15, 0x21, 0xe2, 0x04, 0x81, 0x9f, 0x62, 0xe9, 0x8d, 0x51, 0xa3, 0xcf, 0xea, 0x6d, 0x6c, 0x3e, - 0x0a, 0x35, 0x9a, 0xf0, 0x35, 0x3a, 0x8d, 0x8e, 0x23, 0xf7, 0x43, 0xaa, 0xd1, 0xbe, 0x48, 0x46, - 0xa4, 0xd1, 0xb1, 0xf4, 0xd2, 0x97, 0xf1, 0xcb, 0x67, 0xd8, 0x44, 0x6a, 0x55, 0x37, 0x2e, 0xa0, - 0x7f, 0xce, 0x7b, 0x17, 0x33, 0x9f, 0xd3, 0x9d, 0x6d, 0x16, 0x0b, 0xe6, 0xf7, 0x85, 0xef, 0x46, - 0x19, 0x22, 0xde, 0x0b, 0x1f, 0x4e, 0x2a, 0xb7, 0x2f, 0x9c, 0x54, 0x11, 0x66, 0x75, 0xc3, 0xc1, - 0x96, 0xa1, 0x75, 0x96, 0x3a, 0xda, 0x96, 0x7d, 0x6a, 0xa2, 0xef, 0xe5, 0x75, 0x95, 0x50, 0x1e, - 0x95, 0xff, 0x23, 0x7c, 0x7d, 0xe5, 0x24, 0x7f, 0x7d, 0x65, 0x44, 0xf4, 0xab, 0xa9, 0xe8, 0xe8, - 0x57, 0x7e, 0x74, 0x2b, 0x18, 0x1c, 0x1c, 0x5b, 0xd4, 0x36, 0x4e, 0x18, 0xee, 0xef, 0x66, 0xc1, - 0x28, 0x6c, 0x7e, 0xe8, 0xc7, 0x57, 0xc9, 0x89, 0x56, 0xf7, 0x5c, 0x45, 0x98, 0xef, 0x55, 0x82, - 0xc4, 0x16, 0x6a, 0xb8, 0xf2, 0x72, 0x4f, 0xe5, 0x7d, 0x93, 0x27, 0x2b, 0x60, 0xf2, 0x84, 0x95, - 0x2a, 0x27, 0xa6, 0x54, 0x49, 0x16, 0x0b, 0x45, 0x6a, 0x3b, 0x86, 0xd3, 0x48, 0x39, 0x38, 0xe6, - 0x45, 0xbb, 0xed, 0x76, 0xb1, 0x66, 0x69, 0x46, 0x0b, 0xa3, 0x8f, 0x4a, 0xa3, 0x30, 0x7b, 0x97, - 0x60, 0x52, 0x6f, 0x99, 0x46, 0x5d, 0x7f, 0x86, 0x77, 0xb9, 0x5c, 0x7c, 0x90, 0x75, 0x22, 0x91, - 0x0a, 0xfb, 0x43, 0xf5, 0xff, 0x55, 0x2a, 0x30, 0xd5, 0xd2, 0xac, 0x36, 0x0d, 0xc2, 0x97, 0xeb, - 0xb9, 0xc8, 0x29, 0x92, 0x50, 0xc9, 0xfb, 0x45, 0x0d, 0xfe, 0x56, 0x6a, 0xbc, 0x10, 0xf3, 0x3d, - 0xd1, 0x3c, 0x22, 0x89, 0x2d, 0x06, 0x3f, 0x71, 0x32, 0x77, 0xa5, 0x63, 0xe1, 0x0e, 0xb9, 0x83, - 0x9e, 0xf6, 0x10, 0x53, 0x6a, 0x90, 0x90, 0x74, 0x79, 0x80, 0x14, 0xb5, 0x0f, 0x8d, 0x71, 0x2f, - 0x0f, 0x08, 0x71, 0x91, 0xbe, 0x66, 0xbe, 0x3d, 0x0f, 0xb3, 0xb4, 0x57, 0x63, 0xe2, 0x44, 0xcf, - 0x23, 0x57, 0x48, 0x3b, 0xf7, 0xe1, 0x4b, 0xa8, 0x7e, 0xf0, 0x31, 0xb9, 0x00, 0xf2, 0x05, 0x3f, - 0xe0, 0xa0, 0xfb, 0x98, 0x74, 0xdf, 0xde, 0xe3, 0x6b, 0x9e, 0xf2, 0x34, 0xee, 0x7d, 0xfb, 0xf8, - 0xe2, 0xd3, 0xc7, 0xe7, 0x57, 0x64, 0x90, 0x8b, 0xed, 0x36, 0x6a, 0x1d, 0x1c, 0x8a, 0x6b, 0x60, - 0xda, 0x6b, 0x33, 0x41, 0x0c, 0xc8, 0x70, 0x52, 0xd2, 0x45, 0x50, 0x5f, 0x36, 0xc5, 0xf6, 0xd8, - 0x77, 0x15, 0x62, 0xca, 0x4e, 0x1f, 0x94, 0xdf, 0x98, 0x60, 0x8d, 0x66, 0xc1, 0x34, 0x2f, 0x90, - 0xa3, 0x32, 0xcf, 0x91, 0x21, 0xb7, 0x84, 0x9d, 0xd6, 0xf6, 0x88, 0xda, 0xcc, 0xae, 0xd5, 0xf1, - 0xda, 0xcc, 0xbe, 0xfb, 0xf0, 0x07, 0xdb, 0xb0, 0x1e, 0x5b, 0xf3, 0x84, 0xa5, 0x71, 0x47, 0x77, - 0x8e, 0x2d, 0x3d, 0x7d, 0x70, 0xfe, 0x4d, 0x86, 0x39, 0x7f, 0x85, 0x8b, 0x62, 0xf2, 0xcb, 0x99, - 0x47, 0xdb, 0x7a, 0x27, 0xfa, 0x7c, 0xb2, 0x10, 0x69, 0xbe, 0x4c, 0xf9, 0x9a, 0xa5, 0xbc, 0xb0, - 0x98, 0x20, 0x78, 0x9a, 0x18, 0x83, 0x63, 0x98, 0xc1, 0xcb, 0x30, 0x49, 0x18, 0x5a, 0xd4, 0xf7, - 0x88, 0xeb, 0x20, 0xb7, 0xd0, 0xf8, 0xcc, 0x91, 0x2c, 0x34, 0xde, 0xc1, 0x2f, 0x34, 0x0a, 0x46, - 0x3c, 0xf6, 0xd6, 0x19, 0x13, 0xfa, 0xd2, 0xb8, 0xff, 0x8f, 0x7c, 0x99, 0x31, 0x81, 0x2f, 0xcd, - 0x80, 0xf2, 0xd3, 0x47, 0xf4, 0x55, 0xff, 0x89, 0x75, 0xb6, 0xde, 0x86, 0x2a, 0xfa, 0x9f, 0xc7, - 0x20, 0x7b, 0xd6, 0x7d, 0xf8, 0xdf, 0xc1, 0x8d, 0x58, 0x2f, 0x19, 0x41, 0x70, 0x86, 0xbb, 0x20, - 0xeb, 0xd2, 0x67, 0xd3, 0x96, 0x1b, 0xc5, 0x76, 0x77, 0x5d, 0x46, 0x54, 0xf2, 0x9f, 0x72, 0x12, - 0xf2, 0xb6, 0xb9, 0x6b, 0xb5, 0x5c, 0xf3, 0xd9, 0xd5, 0x18, 0xf6, 0x96, 0x34, 0x28, 0x29, 0x47, - 0x7a, 0x7e, 0x74, 0x2e, 0xa3, 0xa1, 0x0b, 0x92, 0x64, 0xee, 0x82, 0xa4, 0x04, 0xfb, 0x07, 0x02, - 0xbc, 0xa5, 0xaf, 0x11, 0x7f, 0x45, 0xee, 0x0a, 0x6c, 0x8f, 0x0a, 0xf6, 0x08, 0xb1, 0x1c, 0x54, - 0x1d, 0x92, 0x3a, 0x7c, 0xf3, 0xa2, 0xf5, 0xe3, 0xc0, 0x8f, 0xd5, 0xe1, 0x5b, 0x80, 0x87, 0xb1, - 0x9c, 0x52, 0xcf, 0x33, 0x27, 0xd5, 0xfb, 0x47, 0x89, 0x6e, 0x96, 0x53, 0xfa, 0x03, 0xa1, 0x33, - 0x42, 0xe7, 0xd5, 0xa1, 0xd1, 0x39, 0x24, 0xf7, 0xd5, 0x3f, 0x94, 0x49, 0x24, 0x4c, 0xcf, 0xc8, - 0x11, 0xbf, 0xe8, 0x28, 0x31, 0x44, 0xee, 0x18, 0xcc, 0xc5, 0x81, 0x9e, 0x1d, 0x3e, 0x34, 0x38, - 0x2f, 0xba, 0x10, 0xff, 0xe3, 0x0e, 0x0d, 0x2e, 0xca, 0x48, 0xfa, 0x40, 0xbe, 0x8e, 0x5e, 0x2c, - 0x56, 0x6c, 0x39, 0xfa, 0xde, 0x88, 0x5b, 0x1a, 0x3f, 0xbc, 0x24, 0x8c, 0x06, 0xbc, 0x4f, 0x42, - 0x94, 0xc3, 0x71, 0x47, 0x03, 0x16, 0x63, 0x23, 0x7d, 0x98, 0xfe, 0x36, 0xef, 0x4a, 0x8f, 0xad, - 0xcd, 0xbc, 0x9e, 0xad, 0x06, 0xe0, 0x83, 0xa3, 0x75, 0x06, 0x66, 0x42, 0x53, 0x7f, 0xef, 0xc2, - 0x1a, 0x2e, 0x2d, 0xe9, 0x41, 0x77, 0x5f, 0x64, 0x23, 0x5f, 0x18, 0x48, 0xb0, 0xe0, 0x2b, 0xc2, - 0xc4, 0x58, 0xee, 0x83, 0xf3, 0xc6, 0xb0, 0x31, 0x61, 0xf5, 0xfb, 0x61, 0xac, 0x6a, 0x3c, 0x56, - 0xb7, 0x89, 0x88, 0x49, 0x6c, 0x4c, 0x13, 0x9a, 0x37, 0xbe, 0xcd, 0x87, 0x4b, 0xe5, 0xe0, 0xba, - 0x6b, 0x68, 0x3e, 0xd2, 0x47, 0xec, 0xa5, 0xb4, 0x3b, 0xac, 0x53, 0x93, 0x7d, 0x34, 0xdd, 0x21, - 0x9b, 0x0d, 0xc8, 0xdc, 0x6c, 0x20, 0xa1, 0xbf, 0x7d, 0xe0, 0x46, 0xea, 0x31, 0x37, 0x08, 0xa2, - 0xec, 0x88, 0xfd, 0xed, 0x07, 0x72, 0x90, 0x3e, 0x38, 0xff, 0x28, 0x03, 0x2c, 0x5b, 0xe6, 0x6e, - 0xb7, 0x66, 0xb5, 0xb1, 0x85, 0xfe, 0x26, 0x98, 0x00, 0xbc, 0x68, 0x04, 0x13, 0x80, 0x75, 0x80, - 0x2d, 0x9f, 0x38, 0xd3, 0xf0, 0x5b, 0xc4, 0xcc, 0xfd, 0x80, 0x29, 0x35, 0x44, 0x83, 0xbf, 0x72, - 0xf6, 0x27, 0x78, 0x8c, 0xe3, 0xfa, 0xac, 0x80, 0xdc, 0x28, 0x27, 0x00, 0xef, 0xf0, 0xb1, 0x6e, - 0x70, 0x58, 0xdf, 0x73, 0x00, 0x4e, 0xd2, 0xc7, 0xfc, 0x9f, 0x26, 0x60, 0x9a, 0x6e, 0xd7, 0x51, - 0x99, 0xfe, 0x7d, 0x00, 0xfa, 0x6f, 0x8c, 0x00, 0xf4, 0x0d, 0x98, 0x31, 0x03, 0xea, 0xb4, 0x4f, - 0x0d, 0x2f, 0xc0, 0xc4, 0xc2, 0x1e, 0xe2, 0x4b, 0xe5, 0xc8, 0xa0, 0x0f, 0x87, 0x91, 0x57, 0x79, - 0xe4, 0xef, 0x88, 0x91, 0x77, 0x88, 0xe2, 0x28, 0xa1, 0x7f, 0xa7, 0x0f, 0xfd, 0x06, 0x07, 0x7d, - 0xf1, 0x20, 0xac, 0x8c, 0x21, 0xdc, 0xbe, 0x0c, 0x59, 0x72, 0x3a, 0xee, 0xb7, 0x52, 0x9c, 0xdf, - 0x9f, 0x82, 0x09, 0xd2, 0x64, 0xfd, 0x79, 0x87, 0xf7, 0xea, 0x7e, 0xd1, 0x36, 0x1d, 0x6c, 0xf9, - 0x1e, 0x0b, 0xde, 0xab, 0xcb, 0x83, 0xe7, 0x95, 0x6c, 0x9f, 0xca, 0xd3, 0x8d, 0x48, 0x3f, 0x61, - 0xe8, 0x49, 0x49, 0x58, 0xe2, 0x23, 0x3b, 0x2f, 0x37, 0xcc, 0xa4, 0x64, 0x00, 0x23, 0xe9, 0x03, - 0xff, 0x17, 0x59, 0x38, 0x45, 0x57, 0x95, 0x96, 0x2c, 0x73, 0xa7, 0xe7, 0x76, 0x2b, 0xfd, 0xe0, - 0xba, 0x70, 0x3d, 0xcc, 0x39, 0x9c, 0x3f, 0x36, 0xd3, 0x89, 0x9e, 0x54, 0xf4, 0xa7, 0x61, 0x9f, - 0x8a, 0xa7, 0xf3, 0x48, 0x2e, 0xc4, 0x08, 0x30, 0x8a, 0xf7, 0xc4, 0x0b, 0xf5, 0x82, 0x8c, 0x86, - 0x16, 0xa9, 0xe4, 0xa1, 0xd6, 0x2c, 0x7d, 0x9d, 0xca, 0x89, 0xe8, 0xd4, 0xfb, 0x7c, 0x9d, 0xfa, - 0x29, 0x4e, 0xa7, 0x96, 0x0f, 0x2e, 0x92, 0xf4, 0x75, 0xeb, 0x95, 0xfe, 0xc6, 0x90, 0xbf, 0x6d, - 0xb7, 0x93, 0xc2, 0x66, 0x5d, 0xd8, 0x1f, 0x29, 0xcb, 0xf9, 0x23, 0xf1, 0xf7, 0x51, 0x24, 0x98, - 0x09, 0xf3, 0x5c, 0x47, 0xe8, 0xd2, 0x1c, 0x48, 0xba, 0xc7, 0x9d, 0xa4, 0xb7, 0x87, 0x9a, 0xeb, - 0xc6, 0x16, 0x34, 0x86, 0xb5, 0xa5, 0x39, 0xc8, 0x2f, 0xe9, 0x1d, 0x07, 0x5b, 0xe8, 0x11, 0x36, - 0xd3, 0x7d, 0x65, 0x8a, 0x03, 0xc0, 0x22, 0xe4, 0x37, 0x49, 0x69, 0xcc, 0x64, 0xbe, 0x49, 0xac, - 0xf5, 0x50, 0x0e, 0x55, 0xf6, 0x6f, 0xd2, 0xe8, 0x7c, 0x3d, 0x64, 0x46, 0x36, 0x45, 0x4e, 0x10, - 0x9d, 0x6f, 0x30, 0x0b, 0x63, 0xb9, 0x98, 0x2a, 0xaf, 0xe2, 0x1d, 0x77, 0x8c, 0xbf, 0x90, 0x1e, - 0xc2, 0x05, 0x90, 0xf5, 0xb6, 0x4d, 0x3a, 0xc7, 0x29, 0xd5, 0x7d, 0x4c, 0xea, 0x2b, 0xd4, 0x2b, - 0x2a, 0xca, 0xf2, 0xb8, 0x7d, 0x85, 0x84, 0xb8, 0x48, 0x1f, 0xb3, 0xef, 0x12, 0x47, 0xd1, 0x6e, - 0x47, 0x6b, 0x61, 0x97, 0xfb, 0xd4, 0x50, 0xa3, 0x3d, 0x59, 0xd6, 0xeb, 0xc9, 0x42, 0xed, 0x34, - 0x77, 0x80, 0x76, 0x3a, 0xec, 0x32, 0xa4, 0x2f, 0x73, 0x52, 0xf1, 0x43, 0x5b, 0x86, 0x8c, 0x65, - 0x63, 0x0c, 0xd7, 0x8e, 0x7a, 0x07, 0x69, 0xc7, 0xda, 0x5a, 0x87, 0xdd, 0xa4, 0x61, 0xc2, 0x1a, - 0xd9, 0xa1, 0xd9, 0x61, 0x36, 0x69, 0xa2, 0x79, 0x18, 0x03, 0x5a, 0x73, 0x0c, 0xad, 0xcf, 0xb1, - 0x61, 0x34, 0xe5, 0x7d, 0x52, 0xdb, 0xb4, 0x9c, 0x64, 0xfb, 0xa4, 0x2e, 0x77, 0x2a, 0xf9, 0x2f, - 0xe9, 0xc1, 0x2b, 0xfe, 0x5c, 0xf5, 0xa8, 0x86, 0xcf, 0x04, 0x07, 0xaf, 0x06, 0x31, 0x90, 0x3e, - 0xbc, 0x6f, 0x3e, 0xa4, 0xc1, 0x73, 0xd8, 0xe6, 0xc8, 0xda, 0xc0, 0xc8, 0x86, 0xce, 0x61, 0x9a, - 0x63, 0x34, 0x0f, 0xe9, 0xe3, 0xf5, 0xad, 0xd0, 0xc0, 0xf9, 0xc6, 0x31, 0x0e, 0x9c, 0x5e, 0xcb, - 0xcc, 0x0d, 0xd9, 0x32, 0x87, 0xdd, 0xff, 0x61, 0xb2, 0x1e, 0xdd, 0x80, 0x39, 0xcc, 0xfe, 0x4f, - 0x0c, 0x13, 0xe9, 0x23, 0xfe, 0x26, 0x19, 0x72, 0xf5, 0xf1, 0x8f, 0x97, 0xc3, 0xce, 0x45, 0x88, - 0xac, 0xea, 0x23, 0x1b, 0x2e, 0x87, 0x99, 0x8b, 0x44, 0xb2, 0x30, 0x86, 0xc0, 0xfb, 0x47, 0x61, - 0x86, 0x2c, 0x89, 0x78, 0xdb, 0xac, 0xdf, 0x62, 0xa3, 0xe6, 0xc3, 0x29, 0xb6, 0xd5, 0x7b, 0x61, - 0xd2, 0xdb, 0xbf, 0x63, 0x23, 0xe7, 0xbc, 0x58, 0xfb, 0xf4, 0xb8, 0x54, 0xfd, 0xff, 0x0f, 0xe4, - 0x0c, 0x31, 0xf2, 0xbd, 0xda, 0x61, 0x9d, 0x21, 0x0e, 0x75, 0xbf, 0xf6, 0x4f, 0x82, 0x11, 0xf5, - 0xbf, 0xa4, 0x87, 0x79, 0xef, 0x3e, 0x6e, 0xb6, 0xcf, 0x3e, 0xee, 0x47, 0xc3, 0x58, 0xd6, 0x79, - 0x2c, 0xef, 0x14, 0x15, 0xe1, 0x08, 0xc7, 0xda, 0x77, 0xf9, 0x70, 0x9e, 0xe5, 0xe0, 0x5c, 0x38, - 0x10, 0x2f, 0x63, 0x38, 0xf8, 0x98, 0x0d, 0xc6, 0xdc, 0x8f, 0xa5, 0xd8, 0x8e, 0x7b, 0x4e, 0x55, - 0x64, 0xf7, 0x9d, 0xaa, 0xe0, 0x5a, 0x7a, 0xee, 0x80, 0x2d, 0xfd, 0x63, 0x61, 0xed, 0x68, 0xf0, - 0xda, 0x71, 0x97, 0x38, 0x22, 0xa3, 0x1b, 0x99, 0xdf, 0xed, 0xab, 0xc7, 0x39, 0x4e, 0x3d, 0x4a, - 0x07, 0x63, 0x26, 0x7d, 0xfd, 0xf8, 0x84, 0x37, 0xa1, 0x3d, 0xe4, 0xf6, 0x3e, 0xec, 0x56, 0x31, - 0x27, 0xc4, 0x91, 0x8d, 0xdc, 0xc3, 0x6c, 0x15, 0x0f, 0xe2, 0x64, 0x0c, 0xb1, 0xd8, 0x66, 0x61, - 0x9a, 0xf0, 0x74, 0x4e, 0x6f, 0x6f, 0x61, 0x07, 0xbd, 0x8a, 0xfa, 0x28, 0x7a, 0x91, 0x2f, 0x47, - 0x14, 0x9e, 0x28, 0xea, 0xbc, 0x6b, 0x52, 0x8f, 0x0e, 0xca, 0xe4, 0x7c, 0x88, 0xc1, 0x71, 0x47, - 0x50, 0x1c, 0xc8, 0x41, 0xfa, 0x90, 0x7d, 0x98, 0xba, 0xdb, 0xac, 0x6a, 0x97, 0xcc, 0x5d, 0x07, - 0x3d, 0x34, 0x82, 0x0e, 0x7a, 0x01, 0xf2, 0x1d, 0x42, 0x8d, 0x1d, 0xcb, 0x88, 0x9f, 0xee, 0x30, - 0x11, 0xd0, 0xf2, 0x55, 0xf6, 0x67, 0xd2, 0xb3, 0x19, 0x81, 0x1c, 0x29, 0x9d, 0x71, 0x9f, 0xcd, - 0x18, 0x50, 0xfe, 0x58, 0xee, 0xd8, 0x99, 0x74, 0x4b, 0xd7, 0x77, 0x74, 0x67, 0x44, 0x11, 0x1c, - 0x3a, 0x2e, 0x2d, 0x2f, 0x82, 0x03, 0x79, 0x49, 0x7a, 0x62, 0x34, 0x24, 0x15, 0xf7, 0xf7, 0x71, - 0x9f, 0x18, 0x8d, 0x2f, 0x3e, 0x7d, 0x4c, 0x7e, 0x8d, 0xb6, 0xac, 0xb3, 0xd4, 0xf9, 0x36, 0x45, - 0xbf, 0xde, 0xa1, 0x1b, 0x0b, 0x65, 0xed, 0xf0, 0x1a, 0x4b, 0xdf, 0xf2, 0xd3, 0x07, 0xe6, 0xbf, - 0xff, 0x28, 0xe4, 0x16, 0xf1, 0xf9, 0xdd, 0x2d, 0x74, 0x07, 0x4c, 0x36, 0x2c, 0x8c, 0x2b, 0xc6, - 0xa6, 0xe9, 0x4a, 0xd7, 0x71, 0x9f, 0x3d, 0x48, 0xd8, 0x9b, 0x8b, 0xc7, 0x36, 0xd6, 0xda, 0xc1, - 0xf9, 0x33, 0xef, 0x15, 0xbd, 0x44, 0x82, 0x6c, 0xdd, 0xd1, 0x1c, 0x34, 0xe5, 0x63, 0x8b, 0x1e, - 0x0a, 0x63, 0x71, 0x07, 0x8f, 0xc5, 0xf5, 0x9c, 0x2c, 0x08, 0x07, 0xf3, 0xee, 0xff, 0x11, 0x00, - 0x20, 0x98, 0x7c, 0xc0, 0x36, 0x0d, 0x37, 0x87, 0x77, 0x04, 0xd2, 0x7b, 0x47, 0xaf, 0xf0, 0xc5, - 0x7d, 0x37, 0x27, 0xee, 0xc7, 0x8b, 0x15, 0x31, 0x86, 0x95, 0x36, 0x09, 0xa6, 0x5c, 0xd1, 0xae, - 0x60, 0xad, 0x6d, 0xa3, 0x1f, 0x09, 0x94, 0x3f, 0x42, 0xcc, 0xe8, 0xfd, 0xc2, 0xc1, 0x38, 0x69, - 0xad, 0x7c, 0xe2, 0xd1, 0x1e, 0x1d, 0xde, 0xe6, 0xbf, 0xc4, 0x07, 0x23, 0xb9, 0x19, 0xb2, 0xba, - 0xb1, 0x69, 0x32, 0xff, 0xc2, 0x2b, 0x23, 0x68, 0xbb, 0x3a, 0xa1, 0x92, 0x8c, 0x82, 0x91, 0x3a, - 0xe3, 0xd9, 0x1a, 0xcb, 0xa5, 0x77, 0x59, 0xb7, 0x74, 0xf4, 0xff, 0x1f, 0x28, 0x6c, 0x45, 0x81, - 0x6c, 0x57, 0x73, 0xb6, 0x59, 0xd1, 0xe4, 0xd9, 0xb5, 0x91, 0x77, 0x0d, 0xcd, 0x30, 0x8d, 0x4b, - 0x3b, 0xfa, 0x33, 0xfc, 0xbb, 0x75, 0xb9, 0x34, 0x97, 0xf3, 0x2d, 0x6c, 0x60, 0x4b, 0x73, 0x70, - 0x7d, 0x6f, 0x8b, 0xcc, 0xb1, 0x26, 0xd5, 0x70, 0x52, 0x62, 0xfd, 0x77, 0x39, 0x8e, 0xd6, 0xff, - 0x4d, 0xbd, 0x83, 0x49, 0xa4, 0x26, 0xa6, 0xff, 0xde, 0x7b, 0x22, 0xfd, 0xef, 0x53, 0x44, 0xfa, - 0x68, 0x7c, 0x4f, 0x82, 0x99, 0xba, 0xab, 0x70, 0xf5, 0xdd, 0x9d, 0x1d, 0xcd, 0xba, 0x84, 0xae, - 0x0d, 0x50, 0x09, 0xa9, 0x66, 0x86, 0xf7, 0x4b, 0xf9, 0x43, 0xe1, 0x6b, 0xa5, 0x59, 0xd3, 0x0e, - 0x95, 0x90, 0xb8, 0x1d, 0x3c, 0x11, 0x72, 0xae, 0x7a, 0x7b, 0x1e, 0x97, 0xb1, 0x0d, 0x81, 0xe6, - 0x14, 0x8c, 0x68, 0x35, 0x90, 0xb7, 0x31, 0x44, 0xd3, 0x90, 0xe0, 0x68, 0xdd, 0xd1, 0x5a, 0x17, - 0x96, 0x4d, 0xcb, 0xdc, 0x75, 0x74, 0x03, 0xdb, 0xe8, 0x31, 0x01, 0x02, 0x9e, 0xfe, 0x67, 0x02, - 0xfd, 0x47, 0xff, 0x9e, 0x11, 0x1d, 0x45, 0xfd, 0x6e, 0x35, 0x4c, 0x3e, 0x22, 0x40, 0x95, 0xd8, - 0xb8, 0x28, 0x42, 0x31, 0x7d, 0xa1, 0xbd, 0x51, 0x86, 0x42, 0xf9, 0xc1, 0xae, 0x69, 0x39, 0xab, - 0x66, 0x4b, 0xeb, 0xd8, 0x8e, 0x69, 0x61, 0x54, 0x8b, 0x95, 0x9a, 0xdb, 0xc3, 0xb4, 0xcd, 0x56, - 0x30, 0x38, 0xb2, 0xb7, 0xb0, 0xda, 0xc9, 0xbc, 0x8e, 0x7f, 0x58, 0x78, 0x97, 0x91, 0x4a, 0xa5, - 0x97, 0xa3, 0x08, 0x3d, 0xef, 0xd7, 0xa5, 0x25, 0x3b, 0x2c, 0x21, 0xb6, 0xf3, 0x28, 0xc4, 0xd4, - 0x18, 0x96, 0xca, 0x25, 0x98, 0xad, 0xef, 0x9e, 0xf7, 0x89, 0xd8, 0x61, 0x23, 0xe4, 0xd5, 0xc2, - 0x51, 0x2a, 0x98, 0xe2, 0x85, 0x09, 0x45, 0xc8, 0xf7, 0x3a, 0x98, 0xb5, 0xc3, 0xd9, 0x18, 0xde, - 0x7c, 0xa2, 0x60, 0x74, 0x8a, 0xc1, 0xa5, 0xa6, 0x2f, 0xc0, 0x77, 0x4b, 0x30, 0x5b, 0xeb, 0x62, - 0x03, 0xb7, 0xa9, 0x17, 0x24, 0x27, 0xc0, 0x97, 0x24, 0x14, 0x20, 0x47, 0x28, 0x42, 0x80, 0x81, - 0xc7, 0xf2, 0xa2, 0x27, 0xbc, 0x20, 0x21, 0x91, 0xe0, 0xe2, 0x4a, 0x4b, 0x5f, 0x70, 0x5f, 0x92, - 0x60, 0x5a, 0xdd, 0x35, 0xd6, 0x2d, 0xd3, 0x1d, 0x8d, 0x2d, 0x74, 0x67, 0xd0, 0x41, 0xdc, 0x04, - 0xc7, 0xda, 0xbb, 0x16, 0x59, 0x7f, 0xaa, 0x18, 0x75, 0xdc, 0x32, 0x8d, 0xb6, 0x4d, 0xea, 0x91, - 0x53, 0xf7, 0x7f, 0xb8, 0x3d, 0xfb, 0x9c, 0xaf, 0xcb, 0x19, 0xf4, 0x3c, 0xe1, 0x50, 0x37, 0xb4, - 0xf2, 0xa1, 0xa2, 0xc5, 0x7b, 0x02, 0xc1, 0x80, 0x36, 0x83, 0x4a, 0x48, 0x5f, 0xb8, 0x9f, 0x93, - 0x40, 0x29, 0xb6, 0x5a, 0xe6, 0xae, 0xe1, 0xd4, 0x71, 0x07, 0xb7, 0x9c, 0x86, 0xa5, 0xb5, 0x70, - 0xd8, 0x7e, 0x2e, 0x80, 0xdc, 0xd6, 0x2d, 0xd6, 0x07, 0xbb, 0x8f, 0x4c, 0x8e, 0x2f, 0x11, 0xde, - 0x71, 0xa4, 0xb5, 0xdc, 0x5f, 0x4a, 0x02, 0x71, 0x8a, 0xed, 0x2b, 0x0a, 0x16, 0x94, 0xbe, 0x54, - 0x3f, 0x26, 0xc1, 0x94, 0xd7, 0x63, 0x6f, 0x89, 0x08, 0xf3, 0xd7, 0x12, 0x4e, 0x46, 0x7c, 0xe2, - 0x09, 0x64, 0xf8, 0xf6, 0x04, 0xb3, 0x8a, 0x28, 0xfa, 0xc9, 0x44, 0x57, 0x4c, 0x2e, 0x3a, 0xf7, - 0xb5, 0x5a, 0x6b, 0x2e, 0xd5, 0x56, 0x17, 0xcb, 0x6a, 0x41, 0x46, 0x8f, 0x48, 0x90, 0x5d, 0xd7, - 0x8d, 0xad, 0x70, 0x74, 0xa5, 0xe3, 0xae, 0x1d, 0xd9, 0xc6, 0x0f, 0xb2, 0x96, 0x4e, 0x5f, 0x94, - 0x5b, 0xe1, 0xb8, 0xb1, 0xbb, 0x73, 0x1e, 0x5b, 0xb5, 0x4d, 0x32, 0xca, 0xda, 0x0d, 0xb3, 0x8e, - 0x0d, 0x6a, 0x84, 0xe6, 0xd4, 0xbe, 0xdf, 0x78, 0x13, 0x4c, 0x60, 0xf2, 0xe0, 0x72, 0x12, 0x21, - 0x71, 0x9f, 0x29, 0x29, 0xc4, 0x54, 0xa2, 0x69, 0x43, 0x1f, 0xe2, 0xe9, 0x6b, 0xea, 0x1f, 0xe5, - 0xe0, 0x44, 0xd1, 0xb8, 0x44, 0x6c, 0x0a, 0xda, 0xc1, 0x97, 0xb6, 0x35, 0x63, 0x0b, 0x93, 0x01, - 0xc2, 0x97, 0x78, 0x38, 0x44, 0x7f, 0x86, 0x0f, 0xd1, 0xaf, 0xa8, 0x30, 0x61, 0x5a, 0x6d, 0x6c, - 0x2d, 0x5c, 0x22, 0x3c, 0xf5, 0x2e, 0x3b, 0xb3, 0x36, 0xd9, 0xaf, 0x88, 0x79, 0x46, 0x7e, 0xbe, - 0x46, 0xff, 0x57, 0x3d, 0x42, 0x67, 0x6e, 0x82, 0x09, 0x96, 0xa6, 0xcc, 0xc0, 0x64, 0x4d, 0x5d, - 0x2c, 0xab, 0xcd, 0xca, 0x62, 0xe1, 0x88, 0x72, 0x19, 0x1c, 0xad, 0x34, 0xca, 0x6a, 0xb1, 0x51, - 0xa9, 0x55, 0x9b, 0x24, 0xbd, 0x90, 0x41, 0xcf, 0xce, 0x8a, 0x7a, 0xf6, 0xc6, 0x33, 0xd3, 0x0f, - 0x56, 0x15, 0x26, 0x5a, 0x34, 0x03, 0x19, 0x42, 0xa7, 0x13, 0xd5, 0x8e, 0x11, 0xa4, 0x09, 0xaa, - 0x47, 0x48, 0x39, 0x0d, 0x70, 0xd1, 0x32, 0x8d, 0xad, 0xe0, 0xd4, 0xe1, 0xa4, 0x1a, 0x4a, 0x41, - 0x0f, 0x65, 0x20, 0x4f, 0xff, 0x21, 0x57, 0x92, 0x90, 0xa7, 0x40, 0xf0, 0xde, 0xbb, 0x6b, 0xf1, - 0x12, 0x79, 0x05, 0x13, 0x2d, 0xf6, 0xea, 0xea, 0x22, 0x95, 0x01, 0xb5, 0x84, 0x59, 0x55, 0x6e, - 0x86, 0x3c, 0xfd, 0x97, 0x79, 0x1d, 0x44, 0x87, 0x17, 0xa5, 0xd9, 0x04, 0xfd, 0x94, 0xc5, 0x65, - 0x9a, 0xbe, 0x36, 0x7f, 0x40, 0x82, 0xc9, 0x2a, 0x76, 0x4a, 0xdb, 0xb8, 0x75, 0x01, 0x3d, 0x8e, - 0x5f, 0x00, 0xed, 0xe8, 0xd8, 0x70, 0xee, 0xdf, 0xe9, 0xf8, 0x0b, 0xa0, 0x5e, 0x02, 0x7a, 0x6e, - 0xb8, 0xf3, 0xbd, 0x87, 0xd7, 0x9f, 0x1b, 0xfb, 0xd4, 0xd5, 0x2b, 0x21, 0x42, 0x65, 0x4e, 0x42, - 0xde, 0xc2, 0xf6, 0x6e, 0xc7, 0x5b, 0x44, 0x63, 0x6f, 0xe8, 0x35, 0xbe, 0x38, 0x4b, 0x9c, 0x38, - 0x6f, 0x16, 0x2f, 0x62, 0x0c, 0xf1, 0x4a, 0xb3, 0x30, 0x51, 0x31, 0x74, 0x47, 0xd7, 0x3a, 0xe8, - 0x79, 0x59, 0x98, 0xad, 0x63, 0x67, 0x5d, 0xb3, 0xb4, 0x1d, 0xec, 0x60, 0xcb, 0x46, 0xdf, 0xe1, - 0xfb, 0x84, 0x6e, 0x47, 0x73, 0x36, 0x4d, 0x6b, 0xc7, 0x53, 0x4d, 0xef, 0xdd, 0x55, 0xcd, 0x3d, - 0x6c, 0xd9, 0x01, 0x5f, 0xde, 0xab, 0xfb, 0xe5, 0xa2, 0x69, 0x5d, 0x70, 0x07, 0x41, 0x36, 0x4d, - 0x63, 0xaf, 0x2e, 0xbd, 0x8e, 0xb9, 0xb5, 0x8a, 0xf7, 0xb0, 0x17, 0x2e, 0xcd, 0x7f, 0x77, 0xe7, - 0x02, 0x6d, 0xb3, 0x6a, 0x3a, 0x6e, 0xa7, 0xbd, 0x6a, 0x6e, 0xd1, 0x78, 0xb1, 0x93, 0x2a, 0x9f, - 0x18, 0xe4, 0xd2, 0xf6, 0x30, 0xc9, 0x95, 0x0f, 0xe7, 0x62, 0x89, 0xca, 0x3c, 0x28, 0xfe, 0x6f, - 0x0d, 0xdc, 0xc1, 0x3b, 0xd8, 0xb1, 0x2e, 0x91, 0x6b, 0x21, 0x26, 0xd5, 0x3e, 0x5f, 0xd8, 0x00, - 0x2d, 0x3e, 0x59, 0x67, 0xd2, 0x9b, 0xe7, 0x24, 0x77, 0xa0, 0xc9, 0xba, 0x08, 0xc5, 0xb1, 0x5c, - 0x7b, 0x25, 0xbb, 0xd6, 0xcc, 0xcb, 0x64, 0xc8, 0x92, 0xc1, 0xf3, 0x4d, 0x19, 0x6e, 0x85, 0x69, - 0x07, 0xdb, 0xb6, 0xb6, 0x85, 0xbd, 0x15, 0x26, 0xf6, 0xaa, 0xdc, 0x06, 0xb9, 0x0e, 0xc1, 0x94, - 0x0e, 0x0e, 0xd7, 0x72, 0x35, 0x73, 0x0d, 0x0c, 0x97, 0x96, 0x3f, 0x12, 0x10, 0xb8, 0x55, 0xfa, - 0xc7, 0x99, 0x7b, 0x21, 0x47, 0xe1, 0x9f, 0x82, 0xdc, 0x62, 0x79, 0x61, 0x63, 0xb9, 0x70, 0xc4, - 0x7d, 0xf4, 0xf8, 0x9b, 0x82, 0xdc, 0x52, 0xb1, 0x51, 0x5c, 0x2d, 0x48, 0x6e, 0x3d, 0x2a, 0xd5, - 0xa5, 0x5a, 0x41, 0x76, 0x13, 0xd7, 0x8b, 0xd5, 0x4a, 0xa9, 0x90, 0x55, 0xa6, 0x61, 0xe2, 0x5c, - 0x51, 0xad, 0x56, 0xaa, 0xcb, 0x85, 0x1c, 0xfa, 0xdb, 0x30, 0x7e, 0xb7, 0xf3, 0xf8, 0x5d, 0x17, - 0xc5, 0x53, 0x3f, 0xc8, 0x7e, 0xd3, 0x87, 0xec, 0x4e, 0x0e, 0xb2, 0x1f, 0x15, 0x21, 0x32, 0x06, - 0x77, 0xa6, 0x3c, 0x4c, 0xac, 0x5b, 0x66, 0x0b, 0xdb, 0x36, 0xfa, 0x75, 0x09, 0xf2, 0x25, 0xcd, - 0x68, 0xe1, 0x0e, 0xba, 0x22, 0x80, 0x8a, 0xba, 0x8a, 0x66, 0xfc, 0xd3, 0x62, 0xff, 0x98, 0x11, - 0xed, 0xfd, 0x18, 0xdd, 0x79, 0x4a, 0x33, 0x42, 0x3e, 0x62, 0xbd, 0x5c, 0x2c, 0xa9, 0x31, 0x5c, - 0x8d, 0x23, 0xc1, 0x14, 0x5b, 0x0d, 0x38, 0x8f, 0xc3, 0xf3, 0xf0, 0xef, 0x64, 0x44, 0x27, 0x87, - 0x5e, 0x0d, 0x7c, 0x32, 0x11, 0xf2, 0x10, 0x9b, 0x08, 0x0e, 0xa2, 0x36, 0x86, 0xcd, 0x43, 0x09, - 0xa6, 0x37, 0x0c, 0xbb, 0x9f, 0x50, 0xc4, 0xe3, 0xe8, 0x7b, 0xd5, 0x08, 0x11, 0x3a, 0x50, 0x1c, - 0xfd, 0xc1, 0xf4, 0xd2, 0x17, 0xcc, 0x77, 0x32, 0x70, 0x7c, 0x19, 0x1b, 0xd8, 0xd2, 0x5b, 0xb4, - 0x06, 0x9e, 0x24, 0xee, 0xe4, 0x25, 0xf1, 0x38, 0x8e, 0xf3, 0x7e, 0x7f, 0xf0, 0x12, 0x78, 0xa5, - 0x2f, 0x81, 0x7b, 0x38, 0x09, 0xdc, 0x24, 0x48, 0x67, 0x0c, 0xf7, 0xa1, 0x4f, 0xc1, 0x4c, 0xd5, - 0x74, 0xf4, 0x4d, 0xbd, 0x45, 0x7d, 0xd0, 0x5e, 0x2a, 0x43, 0x76, 0x55, 0xb7, 0x1d, 0x54, 0x0c, - 0xba, 0x93, 0x6b, 0x60, 0x5a, 0x37, 0x5a, 0x9d, 0xdd, 0x36, 0x56, 0xb1, 0x46, 0xfb, 0x95, 0x49, - 0x35, 0x9c, 0x14, 0x6c, 0xed, 0xbb, 0x6c, 0xc9, 0xde, 0xd6, 0xfe, 0xa7, 0x85, 0x97, 0x61, 0xc2, - 0x2c, 0x90, 0x80, 0x94, 0x11, 0x76, 0x57, 0x11, 0x66, 0x8d, 0x50, 0x56, 0xcf, 0x60, 0xef, 0xbd, - 0x50, 0x20, 0x4c, 0x4e, 0xe5, 0xff, 0x40, 0xef, 0x15, 0x6a, 0xac, 0x83, 0x18, 0x4a, 0x86, 0xcc, - 0xd2, 0x10, 0x93, 0x64, 0x05, 0xe6, 0x2a, 0xd5, 0x46, 0x59, 0xad, 0x16, 0x57, 0x59, 0x16, 0x19, - 0x7d, 0x4f, 0x82, 0x9c, 0x8a, 0xbb, 0x9d, 0x4b, 0xe1, 0x88, 0xd1, 0xcc, 0x51, 0x3c, 0xe3, 0x3b, - 0x8a, 0x2b, 0x4b, 0x00, 0x5a, 0xcb, 0x2d, 0x98, 0x5c, 0xa9, 0x25, 0xf5, 0x8d, 0x63, 0xca, 0x55, - 0xb0, 0xe8, 0xe7, 0x56, 0x43, 0x7f, 0xa2, 0xe7, 0x0b, 0xef, 0x1c, 0x71, 0xd4, 0x08, 0x87, 0x11, - 0x7d, 0xc2, 0xfb, 0x84, 0x36, 0x7b, 0x06, 0x92, 0x3b, 0x1c, 0xf1, 0x7f, 0x59, 0x82, 0x6c, 0xc3, - 0xed, 0x2d, 0x43, 0x1d, 0xe7, 0xa7, 0x86, 0xd3, 0x71, 0x97, 0x4c, 0x84, 0x8e, 0xdf, 0x0d, 0x33, - 0x61, 0x8d, 0x65, 0xae, 0x12, 0xb1, 0x2a, 0xce, 0xfd, 0x30, 0x8c, 0x86, 0xf7, 0x61, 0xe7, 0x70, - 0x44, 0xfc, 0xf1, 0xc7, 0x03, 0xac, 0xe1, 0x9d, 0xf3, 0xd8, 0xb2, 0xb7, 0xf5, 0x2e, 0xfa, 0x3b, - 0x19, 0xa6, 0x96, 0xb1, 0x53, 0x77, 0x34, 0x67, 0xd7, 0xee, 0xd9, 0xee, 0x34, 0xcc, 0x92, 0xd6, - 0xda, 0xc6, 0xac, 0x3b, 0xf2, 0x5e, 0xd1, 0x3b, 0x65, 0x51, 0x7f, 0xa2, 0xa0, 0x9c, 0x79, 0xbf, - 0x8c, 0x08, 0x4c, 0x9e, 0x00, 0xd9, 0xb6, 0xe6, 0x68, 0x0c, 0x8b, 0x2b, 0x7a, 0xb0, 0x08, 0x08, - 0xa9, 0x24, 0x1b, 0xfa, 0x1d, 0x49, 0xc4, 0xa1, 0x48, 0xa0, 0xfc, 0x64, 0x20, 0xbc, 0x37, 0x33, - 0x04, 0x0a, 0xc7, 0x60, 0xb6, 0x5a, 0x6b, 0x34, 0x57, 0x6b, 0xcb, 0xcb, 0x65, 0x37, 0xb5, 0x20, - 0x2b, 0x27, 0x41, 0x59, 0x2f, 0xde, 0xbf, 0x56, 0xae, 0x36, 0x9a, 0xd5, 0xda, 0x62, 0x99, 0xfd, - 0x99, 0x55, 0x8e, 0xc2, 0x74, 0xa9, 0x58, 0x5a, 0xf1, 0x12, 0x72, 0xca, 0x29, 0x38, 0xbe, 0x56, - 0x5e, 0x5b, 0x28, 0xab, 0xf5, 0x95, 0xca, 0x7a, 0xd3, 0x25, 0xb3, 0x54, 0xdb, 0xa8, 0x2e, 0x16, - 0xf2, 0x0a, 0x82, 0x93, 0xa1, 0x2f, 0xe7, 0xd4, 0x5a, 0x75, 0xb9, 0x59, 0x6f, 0x14, 0x1b, 0xe5, - 0xc2, 0x84, 0x72, 0x19, 0x1c, 0x2d, 0x15, 0xab, 0x24, 0x7b, 0xa9, 0x56, 0xad, 0x96, 0x4b, 0x8d, - 0xc2, 0x24, 0xfa, 0xf7, 0x2c, 0x4c, 0x57, 0xec, 0xaa, 0xb6, 0x83, 0xcf, 0x6a, 0x1d, 0xbd, 0x8d, - 0x9e, 0x17, 0x9a, 0x79, 0x5c, 0x07, 0xb3, 0x16, 0x7d, 0xc4, 0xed, 0x86, 0x8e, 0x29, 0x9a, 0xb3, - 0x2a, 0x9f, 0xe8, 0xce, 0xc9, 0x0d, 0x42, 0xc0, 0x9b, 0x93, 0xd3, 0x37, 0x65, 0x01, 0x80, 0x3e, - 0x35, 0x82, 0xcb, 0x5d, 0xcf, 0xf4, 0xb6, 0x26, 0x6d, 0x07, 0xdb, 0xd8, 0xda, 0xd3, 0x5b, 0xd8, - 0xcb, 0xa9, 0x86, 0xfe, 0x42, 0x5f, 0x91, 0x45, 0xf7, 0x17, 0x43, 0xa0, 0x86, 0xaa, 0x13, 0xd1, - 0x1b, 0xfe, 0xa2, 0x2c, 0xb2, 0x3b, 0x28, 0x44, 0x32, 0x99, 0xa6, 0xbc, 0x50, 0x1a, 0x6e, 0xd9, - 0xb6, 0x51, 0xab, 0x35, 0xeb, 0x2b, 0x35, 0xb5, 0x51, 0x90, 0x95, 0x19, 0x98, 0x74, 0x5f, 0x57, - 0x6b, 0xd5, 0xe5, 0x42, 0x56, 0x39, 0x01, 0xc7, 0x56, 0x8a, 0xf5, 0x66, 0xa5, 0x7a, 0xb6, 0xb8, - 0x5a, 0x59, 0x6c, 0x96, 0x56, 0x8a, 0x6a, 0xbd, 0x90, 0x53, 0xae, 0x80, 0x13, 0x8d, 0x4a, 0x59, - 0x6d, 0x2e, 0x95, 0x8b, 0x8d, 0x0d, 0xb5, 0x5c, 0x6f, 0x56, 0x6b, 0xcd, 0x6a, 0x71, 0xad, 0x5c, - 0xc8, 0xbb, 0xcd, 0x9f, 0x7c, 0x0a, 0xd4, 0x66, 0x62, 0xbf, 0x32, 0x4e, 0x46, 0x28, 0xe3, 0x54, - 0xaf, 0x32, 0x42, 0x58, 0xad, 0xd4, 0x72, 0xbd, 0xac, 0x9e, 0x2d, 0x17, 0xa6, 0xfb, 0xe9, 0xda, - 0x8c, 0x72, 0x1c, 0x0a, 0x2e, 0x0f, 0xcd, 0x4a, 0xdd, 0xcb, 0xb9, 0x58, 0x98, 0x45, 0x1f, 0xcb, - 0xc3, 0x49, 0x15, 0x6f, 0xe9, 0xb6, 0x83, 0xad, 0x75, 0xed, 0xd2, 0x0e, 0x36, 0x1c, 0xaf, 0x93, - 0xff, 0x97, 0xc4, 0xca, 0xb8, 0x06, 0xb3, 0x5d, 0x4a, 0x63, 0x0d, 0x3b, 0xdb, 0x66, 0x9b, 0x8d, - 0xc2, 0x8f, 0x8b, 0xec, 0x39, 0xe6, 0xd7, 0xc3, 0xd9, 0x55, 0xfe, 0xef, 0x90, 0x6e, 0xcb, 0x31, - 0xba, 0x9d, 0x1d, 0x46, 0xb7, 0x95, 0xab, 0x60, 0x6a, 0xd7, 0xc6, 0x56, 0x79, 0x47, 0xd3, 0x3b, - 0xde, 0xe5, 0x9c, 0x7e, 0x02, 0x7a, 0x5b, 0x56, 0xf4, 0xc4, 0x4a, 0xa8, 0x2e, 0xfd, 0xc5, 0x18, - 0xd1, 0xb7, 0x9e, 0x06, 0x60, 0x95, 0xdd, 0xb0, 0x3a, 0x4c, 0x59, 0x43, 0x29, 0x2e, 0x7f, 0xe7, - 0xf5, 0x4e, 0x47, 0x37, 0xb6, 0xfc, 0x7d, 0xff, 0x20, 0x01, 0xbd, 0x50, 0x16, 0x39, 0xc1, 0x92, - 0x94, 0xb7, 0x64, 0xad, 0xe9, 0xf9, 0xd2, 0x98, 0xfb, 0xdd, 0xfd, 0x4d, 0x27, 0xaf, 0x14, 0x60, - 0x86, 0xa4, 0xb1, 0x16, 0x58, 0x98, 0x70, 0xfb, 0x60, 0x8f, 0xdc, 0x5a, 0xb9, 0xb1, 0x52, 0x5b, - 0xf4, 0xbf, 0x4d, 0xba, 0x24, 0x5d, 0x66, 0x8a, 0xd5, 0xfb, 0x49, 0x6b, 0x9c, 0x52, 0x1e, 0x03, - 0x57, 0x84, 0x3a, 0xec, 0xe2, 0xaa, 0x5a, 0x2e, 0x2e, 0xde, 0xdf, 0x2c, 0x3f, 0xbd, 0x52, 0x6f, - 0xd4, 0xf9, 0xc6, 0xe5, 0xb5, 0xa3, 0x69, 0x97, 0xdf, 0xf2, 0x5a, 0xb1, 0xb2, 0xca, 0xfa, 0xf7, - 0xa5, 0x9a, 0xba, 0x56, 0x6c, 0x14, 0x66, 0xd0, 0xcb, 0x64, 0x28, 0x2c, 0x63, 0x67, 0xdd, 0xb4, - 0x1c, 0xad, 0xb3, 0xaa, 0x1b, 0x17, 0x36, 0xac, 0x0e, 0x37, 0xd9, 0x14, 0x0e, 0xd3, 0xc1, 0x0f, - 0x91, 0x1c, 0xc1, 0xe8, 0x1d, 0xf1, 0x2e, 0xc9, 0x16, 0x28, 0x53, 0x90, 0x80, 0x9e, 0x29, 0x89, - 0x2c, 0x77, 0x8b, 0x97, 0x9a, 0x4c, 0x4f, 0x9e, 0x35, 0xee, 0xf1, 0xb9, 0x0f, 0x6a, 0x79, 0xf4, - 0x9c, 0x2c, 0x4c, 0x2e, 0xe9, 0x86, 0xd6, 0xd1, 0x9f, 0xc1, 0xc5, 0x2f, 0x0d, 0xfa, 0x98, 0x4c, - 0x4c, 0x1f, 0x23, 0x0d, 0x35, 0x7e, 0xfe, 0xaa, 0x2c, 0xba, 0xbc, 0x10, 0x92, 0xbd, 0xc7, 0x64, - 0xc4, 0xe0, 0xf9, 0x41, 0x49, 0x64, 0x79, 0x61, 0x30, 0xbd, 0x64, 0x18, 0x7e, 0xf2, 0x07, 0xc3, - 0xc6, 0xea, 0x69, 0xdf, 0x93, 0xfd, 0x54, 0x61, 0x0a, 0xfd, 0x99, 0x0c, 0x68, 0x19, 0x3b, 0x67, - 0xb1, 0xe5, 0x4f, 0x05, 0x48, 0xaf, 0xcf, 0xec, 0xed, 0x50, 0x93, 0x7d, 0x53, 0x18, 0xc0, 0x73, - 0x3c, 0x80, 0xc5, 0x98, 0xc6, 0x13, 0x41, 0x3a, 0xa2, 0xf1, 0x56, 0x20, 0x6f, 0x93, 0xef, 0x4c, - 0xcd, 0x9e, 0x18, 0x3d, 0x5c, 0x12, 0x62, 0x61, 0xea, 0x94, 0xb0, 0xca, 0x08, 0xa0, 0xef, 0xfa, - 0x93, 0xa0, 0x9f, 0xe4, 0xb4, 0x63, 0xe9, 0xc0, 0xcc, 0x26, 0xd3, 0x17, 0x2b, 0x5d, 0x75, 0xe9, - 0x67, 0xdf, 0xa0, 0x0f, 0xe6, 0xe0, 0x78, 0xbf, 0xea, 0xa0, 0xdf, 0xcd, 0x70, 0x3b, 0xec, 0x98, - 0x0c, 0xf9, 0x19, 0xb6, 0x81, 0xe8, 0xbe, 0x28, 0x4f, 0x86, 0x13, 0xfe, 0x32, 0x5c, 0xc3, 0xac, - 0xe2, 0x8b, 0x76, 0x07, 0x3b, 0x0e, 0xb6, 0x48, 0xd5, 0x26, 0xd5, 0xfe, 0x1f, 0x95, 0xa7, 0xc2, - 0xe5, 0xba, 0x61, 0xeb, 0x6d, 0x6c, 0x35, 0xf4, 0xae, 0x5d, 0x34, 0xda, 0x8d, 0x5d, 0xc7, 0xb4, - 0x74, 0x8d, 0x5d, 0x25, 0x39, 0xa9, 0x46, 0x7d, 0x56, 0x6e, 0x84, 0x82, 0x6e, 0xd7, 0x8c, 0xf3, - 0xa6, 0x66, 0xb5, 0x75, 0x63, 0x6b, 0x55, 0xb7, 0x1d, 0xe6, 0x01, 0xbc, 0x2f, 0x1d, 0xfd, 0xbd, - 0x2c, 0x7a, 0x98, 0x6e, 0x00, 0xac, 0x11, 0x1d, 0xca, 0x73, 0x65, 0x91, 0xe3, 0x71, 0xc9, 0x68, - 0x27, 0x53, 0x96, 0x67, 0x8f, 0xdb, 0x90, 0xe8, 0x3f, 0x82, 0x93, 0xae, 0x85, 0xa6, 0x7b, 0x86, - 0xc0, 0xd9, 0xb2, 0x5a, 0x59, 0xaa, 0x94, 0x5d, 0xb3, 0xe2, 0x04, 0x1c, 0x0b, 0xbe, 0x2d, 0xde, - 0xdf, 0xac, 0x97, 0xab, 0x8d, 0xc2, 0xa4, 0xdb, 0x4f, 0xd1, 0xe4, 0xa5, 0x62, 0x65, 0xb5, 0xbc, - 0xd8, 0x6c, 0xd4, 0xdc, 0x2f, 0x8b, 0xc3, 0x99, 0x16, 0xe8, 0xa1, 0x2c, 0x1c, 0x25, 0xb2, 0xbd, - 0x44, 0xa4, 0xea, 0x0a, 0xa5, 0xc7, 0xd7, 0xd6, 0x07, 0x68, 0x8a, 0x8a, 0x17, 0x7d, 0x56, 0xf8, - 0xa6, 0xcc, 0x10, 0x84, 0x3d, 0x65, 0x44, 0x68, 0xc6, 0x77, 0x24, 0x91, 0x08, 0x15, 0xc2, 0x64, - 0x93, 0x29, 0xc5, 0xbf, 0x8e, 0x7b, 0xc4, 0x89, 0x06, 0x9f, 0x58, 0x99, 0x25, 0xf2, 0xf3, 0xd3, - 0xd7, 0x2b, 0x2a, 0x51, 0x87, 0x39, 0x00, 0x92, 0x42, 0x34, 0x88, 0xea, 0x41, 0xdf, 0xf1, 0x2a, - 0x4a, 0x0f, 0x8a, 0xa5, 0x46, 0xe5, 0x6c, 0x39, 0x4a, 0x0f, 0x3e, 0x23, 0xc3, 0xe4, 0x32, 0x76, - 0xdc, 0x39, 0x95, 0x8d, 0x9e, 0x26, 0xb0, 0xfe, 0xe3, 0x9a, 0x31, 0x1d, 0xb3, 0xa5, 0x75, 0xfc, - 0x65, 0x00, 0xfa, 0x86, 0x7e, 0x61, 0x18, 0x13, 0xc4, 0x2b, 0x3a, 0x62, 0xbc, 0xfa, 0x71, 0xc8, - 0x39, 0xee, 0x67, 0xb6, 0x0c, 0xfd, 0x23, 0x91, 0xc3, 0x95, 0x4b, 0x64, 0x51, 0x73, 0x34, 0x95, - 0xe6, 0x0f, 0x8d, 0x4e, 0x82, 0xb6, 0x4b, 0x04, 0x23, 0x3f, 0x88, 0xf6, 0xe7, 0xdf, 0xca, 0x70, - 0x82, 0xb6, 0x8f, 0x62, 0xb7, 0x5b, 0x77, 0x4c, 0x0b, 0xab, 0xb8, 0x85, 0xf5, 0xae, 0xd3, 0xb3, - 0xbe, 0x67, 0xd1, 0x54, 0x6f, 0xb3, 0x99, 0xbd, 0xa2, 0xd7, 0xcb, 0xa2, 0x31, 0x98, 0xf7, 0xb5, - 0xc7, 0x9e, 0xf2, 0x22, 0x1a, 0xfb, 0x47, 0x25, 0x91, 0xa8, 0xca, 0x09, 0x89, 0x27, 0x03, 0xea, - 0x43, 0x87, 0x00, 0x94, 0xb7, 0x72, 0xa3, 0x96, 0x4b, 0xe5, 0xca, 0xba, 0x3b, 0x08, 0x5c, 0x0d, - 0x57, 0xae, 0x6f, 0xa8, 0xa5, 0x95, 0x62, 0xbd, 0xdc, 0x54, 0xcb, 0xcb, 0x95, 0x7a, 0x83, 0x39, - 0x65, 0xd1, 0xbf, 0x26, 0x94, 0xab, 0xe0, 0x54, 0x7d, 0x63, 0xa1, 0x5e, 0x52, 0x2b, 0xeb, 0x24, - 0x5d, 0x2d, 0x57, 0xcb, 0xe7, 0xd8, 0xd7, 0x49, 0xf4, 0xfe, 0x02, 0x4c, 0xbb, 0x13, 0x80, 0x3a, - 0x9d, 0x17, 0xa0, 0x6f, 0x66, 0x61, 0x5a, 0xc5, 0xb6, 0xd9, 0xd9, 0x23, 0x73, 0x84, 0x71, 0x4d, - 0x3d, 0xbe, 0x2d, 0x8b, 0x9e, 0xdf, 0x0e, 0x31, 0x3b, 0x1f, 0x62, 0x34, 0x7a, 0xa2, 0xa9, 0xed, - 0x69, 0x7a, 0x47, 0x3b, 0xcf, 0xba, 0x9a, 0x49, 0x35, 0x48, 0x50, 0xe6, 0x41, 0x31, 0x2f, 0x1a, - 0xd8, 0xaa, 0xb7, 0x2e, 0x96, 0x9d, 0xed, 0x62, 0xbb, 0x6d, 0x61, 0xdb, 0x66, 0xab, 0x17, 0x7d, - 0xbe, 0x28, 0x37, 0xc0, 0x51, 0x92, 0x1a, 0xca, 0x4c, 0x1d, 0x64, 0x7a, 0x93, 0xfd, 0x9c, 0x45, - 0xe3, 0x92, 0x97, 0x33, 0x17, 0xca, 0x19, 0x24, 0x87, 0x8f, 0x4b, 0xe4, 0xf9, 0x53, 0x3a, 0xd7, - 0xc0, 0xb4, 0xa1, 0xed, 0xe0, 0xf2, 0x83, 0x5d, 0xdd, 0xc2, 0x36, 0x71, 0x8c, 0x91, 0xd5, 0x70, - 0x12, 0xfa, 0xa0, 0xd0, 0x79, 0x73, 0x31, 0x89, 0x25, 0xd3, 0xfd, 0xe5, 0x21, 0x54, 0xbf, 0x4f, - 0x3f, 0x23, 0xa3, 0xf7, 0xcb, 0x30, 0xc3, 0x98, 0x2a, 0x1a, 0x97, 0x2a, 0x6d, 0x74, 0x35, 0x67, - 0xfc, 0x6a, 0x6e, 0x9a, 0x67, 0xfc, 0x92, 0x17, 0xf4, 0x4b, 0xb2, 0xa8, 0xbb, 0x73, 0x9f, 0x8a, - 0x93, 0x32, 0xa2, 0x1d, 0x47, 0x37, 0xcd, 0x5d, 0xe6, 0xa8, 0x3a, 0xa9, 0xd2, 0x97, 0x34, 0x17, - 0xf5, 0xd0, 0x1f, 0x08, 0x39, 0x53, 0x0b, 0x56, 0xe3, 0x90, 0x00, 0xfc, 0xb8, 0x0c, 0x73, 0x8c, - 0xab, 0x3a, 0x3b, 0xe7, 0x23, 0x74, 0xe0, 0xed, 0x97, 0x85, 0x0d, 0xc1, 0x3e, 0xf5, 0x67, 0x25, - 0x3d, 0x6a, 0x80, 0xfc, 0xb0, 0x50, 0x70, 0x34, 0xe1, 0x8a, 0x1c, 0x12, 0x94, 0x6f, 0xcf, 0xc2, - 0xf4, 0x86, 0x8d, 0x2d, 0xe6, 0xb7, 0x8f, 0x5e, 0x93, 0x05, 0x79, 0x19, 0x73, 0x1b, 0xa9, 0x2f, - 0x10, 0xf6, 0xf0, 0x0d, 0x57, 0x36, 0x44, 0xd4, 0xb5, 0x91, 0x22, 0x60, 0xbb, 0x1e, 0xe6, 0xa8, - 0x48, 0x8b, 0x8e, 0xe3, 0x1a, 0x89, 0x9e, 0x37, 0x6d, 0x4f, 0xea, 0x28, 0xb6, 0x8a, 0x48, 0x59, - 0x6e, 0x96, 0x92, 0xcb, 0xd3, 0x2a, 0xde, 0xa4, 0xf3, 0xd9, 0xac, 0xda, 0x93, 0xaa, 0xdc, 0x02, - 0x97, 0x99, 0x5d, 0x4c, 0xcf, 0xaf, 0x84, 0x32, 0xe7, 0x48, 0xe6, 0x7e, 0x9f, 0xd0, 0x37, 0x85, - 0x7c, 0x75, 0xc5, 0xa5, 0x93, 0x4c, 0x17, 0xba, 0xa3, 0x31, 0x49, 0x8e, 0x43, 0xc1, 0xcd, 0x41, - 0xf6, 0x5f, 0xd4, 0x72, 0xbd, 0xb6, 0x7a, 0xb6, 0xdc, 0x7f, 0x19, 0x23, 0x87, 0x9e, 0x2d, 0xc3, - 0xd4, 0x82, 0x65, 0x6a, 0xed, 0x96, 0x66, 0x3b, 0xe8, 0xbb, 0x12, 0xcc, 0xac, 0x6b, 0x97, 0x3a, - 0xa6, 0xd6, 0x26, 0xfe, 0xfd, 0x3d, 0x7d, 0x41, 0x97, 0x7e, 0xf2, 0xfa, 0x02, 0xf6, 0xca, 0x1f, - 0x0c, 0xf4, 0x8f, 0xee, 0x65, 0x44, 0x2e, 0xd4, 0xf4, 0xb7, 0xf9, 0xa4, 0x7e, 0xc1, 0x4a, 0x3d, - 0xbe, 0xe6, 0xc3, 0x3c, 0x45, 0x58, 0x94, 0xef, 0x17, 0x0b, 0x3f, 0x2a, 0x42, 0xf2, 0x70, 0x76, - 0xe5, 0x9f, 0x33, 0x09, 0xf9, 0x45, 0x4c, 0xac, 0xb8, 0xff, 0x21, 0xc1, 0x44, 0x1d, 0x3b, 0xc4, - 0x82, 0xbb, 0x8d, 0xf3, 0x14, 0x6e, 0x93, 0x0c, 0x81, 0x13, 0xbb, 0xf7, 0xee, 0x4e, 0xd6, 0x43, - 0xe7, 0xad, 0xc9, 0x73, 0x02, 0x8f, 0x44, 0x5a, 0xee, 0x3c, 0x2b, 0xf3, 0x40, 0x1e, 0x89, 0xb1, - 0xa4, 0xd2, 0xf7, 0xb5, 0x7a, 0xa7, 0xc4, 0x5c, 0xab, 0x42, 0xbd, 0xde, 0xab, 0xc2, 0xfa, 0x19, - 0xeb, 0x6d, 0xc6, 0x98, 0x8f, 0x71, 0x8e, 0x7a, 0x12, 0x4c, 0x50, 0x99, 0x7b, 0xf3, 0xd1, 0x5e, - 0x3f, 0x05, 0x4a, 0x82, 0x9c, 0xbd, 0xf6, 0x72, 0x0a, 0xba, 0xa8, 0x45, 0x17, 0x3e, 0x96, 0x18, - 0x04, 0x33, 0x55, 0xec, 0x5c, 0x34, 0xad, 0x0b, 0x75, 0x47, 0x73, 0x30, 0xfa, 0x57, 0x09, 0xe4, - 0x3a, 0x76, 0xc2, 0xd1, 0x4f, 0xaa, 0x70, 0x8c, 0x56, 0x88, 0x65, 0x24, 0xfd, 0x37, 0xad, 0xc8, - 0x35, 0x7d, 0x85, 0x10, 0xca, 0xa7, 0xee, 0xff, 0x15, 0xfd, 0x7a, 0xdf, 0xa0, 0x4f, 0x52, 0x9f, - 0x49, 0x03, 0x93, 0x4c, 0x98, 0x41, 0x57, 0xc1, 0x22, 0xf4, 0xf4, 0x03, 0x42, 0x66, 0xb5, 0x18, - 0xcd, 0xc3, 0xe9, 0x0a, 0x3e, 0x7c, 0x05, 0x64, 0x4b, 0xdb, 0x9a, 0x83, 0xde, 0x21, 0x03, 0x14, - 0xdb, 0xed, 0x35, 0xea, 0x03, 0x1e, 0x76, 0x48, 0x3b, 0x03, 0x33, 0xad, 0x6d, 0x2d, 0xb8, 0xdb, - 0x84, 0xf6, 0x07, 0x5c, 0x9a, 0xf2, 0xe4, 0xc0, 0x99, 0x9c, 0x4a, 0x15, 0xf5, 0xc0, 0xe4, 0x96, - 0xc1, 0x68, 0xfb, 0x8e, 0xe6, 0x7c, 0x28, 0xcc, 0xd8, 0x23, 0x74, 0xee, 0xef, 0xf3, 0x01, 0x7b, - 0xd1, 0x73, 0x38, 0x46, 0xda, 0x3f, 0x60, 0x13, 0x24, 0x24, 0x3c, 0xe9, 0x2d, 0x16, 0xd0, 0x23, - 0x9e, 0xaf, 0xb1, 0x84, 0xae, 0x55, 0xca, 0x6d, 0xdd, 0x13, 0x2d, 0x0b, 0x98, 0x85, 0x9e, 0x9f, - 0x49, 0x06, 0x5f, 0xbc, 0xe0, 0xee, 0x81, 0x59, 0xdc, 0xd6, 0x1d, 0xec, 0xd5, 0x92, 0x09, 0x30, - 0x0e, 0x62, 0xfe, 0x07, 0xf4, 0x2c, 0xe1, 0xa0, 0x6b, 0x44, 0xa0, 0xfb, 0x6b, 0x14, 0xd1, 0xfe, - 0xc4, 0xc2, 0xa8, 0x89, 0xd1, 0x4c, 0x1f, 0xac, 0x5f, 0x90, 0xe1, 0x44, 0xc3, 0xdc, 0xda, 0xea, - 0x60, 0x4f, 0x4c, 0x98, 0x7a, 0x67, 0x22, 0x6d, 0x94, 0x70, 0x91, 0x9d, 0x20, 0xf3, 0x01, 0xdd, - 0x3f, 0x4a, 0xe6, 0xbe, 0xf0, 0x27, 0xa6, 0x62, 0x67, 0x51, 0x44, 0x5c, 0x7d, 0xf9, 0x8c, 0x40, - 0x41, 0x2c, 0xe0, 0xb3, 0x30, 0xd9, 0xf4, 0x81, 0xf8, 0xa2, 0x04, 0xb3, 0xf4, 0xe6, 0x4a, 0x4f, - 0x41, 0xef, 0x1b, 0x21, 0x00, 0xe8, 0xbb, 0x19, 0x51, 0x3f, 0x5b, 0x22, 0x13, 0x8e, 0x93, 0x08, - 0x11, 0x8b, 0x05, 0x55, 0x19, 0x48, 0x2e, 0x7d, 0xd1, 0xfe, 0xb1, 0x0c, 0xd3, 0xcb, 0xd8, 0x6b, - 0x69, 0x76, 0xe2, 0x9e, 0xe8, 0x0c, 0xcc, 0x90, 0xeb, 0xdb, 0x6a, 0xec, 0x98, 0x24, 0x5d, 0x35, - 0xe3, 0xd2, 0x94, 0xeb, 0x60, 0xf6, 0x3c, 0xde, 0x34, 0x2d, 0x5c, 0xe3, 0xce, 0x52, 0xf2, 0x89, - 0x11, 0xe1, 0xe9, 0xb8, 0x38, 0x68, 0x0b, 0x3c, 0x36, 0x37, 0xed, 0x17, 0x66, 0xa8, 0x2a, 0x11, - 0x63, 0xce, 0x53, 0x60, 0x92, 0x21, 0xef, 0x99, 0x69, 0x71, 0xfd, 0xa2, 0x9f, 0x17, 0xbd, 0xce, - 0x47, 0xb4, 0xcc, 0x21, 0xfa, 0xc4, 0x24, 0x4c, 0x8c, 0xe5, 0x7e, 0xf7, 0x42, 0xa8, 0xfc, 0x85, - 0x4b, 0x95, 0xb6, 0x8d, 0xd6, 0x92, 0x61, 0x7a, 0x1a, 0xc0, 0x6f, 0x1c, 0x5e, 0x58, 0x8b, 0x50, - 0x0a, 0x1f, 0xb9, 0x3e, 0xf6, 0xa0, 0x5e, 0xaf, 0x38, 0x08, 0x3b, 0x23, 0x06, 0x46, 0xec, 0x80, - 0x9f, 0x08, 0x27, 0xe9, 0xa3, 0xf3, 0x69, 0x19, 0x4e, 0xf8, 0xe7, 0x8f, 0x56, 0x35, 0x3b, 0x68, - 0x77, 0xa5, 0x64, 0x10, 0x71, 0x07, 0x3e, 0xfc, 0xc6, 0xf2, 0xad, 0x64, 0x63, 0x46, 0x5f, 0x4e, - 0x46, 0x8b, 0x8e, 0x72, 0x13, 0x1c, 0x33, 0x76, 0x77, 0x7c, 0xa9, 0x93, 0x16, 0xcf, 0x5a, 0xf8, - 0xfe, 0x0f, 0x49, 0x46, 0x26, 0x11, 0xe6, 0xc7, 0x32, 0xa7, 0xe4, 0x8e, 0x74, 0x3d, 0x21, 0x11, - 0x8c, 0xe8, 0x9f, 0x33, 0x89, 0x7a, 0xb7, 0xc1, 0x67, 0xbe, 0x12, 0xf4, 0x52, 0x87, 0x78, 0xe0, - 0xeb, 0xcc, 0x04, 0xe4, 0xca, 0x3b, 0x5d, 0xe7, 0xd2, 0x99, 0xc7, 0xc2, 0x6c, 0xdd, 0xb1, 0xb0, - 0xb6, 0x13, 0xda, 0x19, 0x70, 0xcc, 0x0b, 0xd8, 0xf0, 0x76, 0x06, 0xc8, 0xcb, 0xed, 0xb7, 0xc1, - 0x84, 0x61, 0x36, 0xb5, 0x5d, 0x67, 0x5b, 0xb9, 0x7a, 0xdf, 0x91, 0x7a, 0x06, 0x7e, 0x8d, 0xc5, - 0x30, 0xfa, 0xca, 0x1d, 0x64, 0x6d, 0x38, 0x6f, 0x98, 0xc5, 0x5d, 0x67, 0x7b, 0xe1, 0xaa, 0x8f, - 0xff, 0xcd, 0xe9, 0xcc, 0x67, 0xfe, 0xe6, 0x74, 0xe6, 0xcb, 0x7f, 0x73, 0x3a, 0xf3, 0xcb, 0x5f, - 0x3d, 0x7d, 0xe4, 0x33, 0x5f, 0x3d, 0x7d, 0xe4, 0x8b, 0x5f, 0x3d, 0x7d, 0xe4, 0x27, 0xa5, 0xee, - 0xf9, 0xf3, 0x79, 0x42, 0xe5, 0x49, 0xff, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xb8, 0xd5, 0xc4, - 0x5d, 0x2a, 0x0a, 0x02, 0x00, + 0xa0, 0x8f, 0xcc, 0x00, 0xe2, 0x63, 0x50, 0x4f, 0x19, 0x8e, 0xd7, 0xba, 0xd8, 0x58, 0xb0, 0xb0, + 0xd6, 0x6e, 0x59, 0xbb, 0x3b, 0x97, 0xec, 0xb0, 0x33, 0x68, 0xbc, 0x8e, 0x86, 0x96, 0x8e, 0x25, + 0x6e, 0xe9, 0x18, 0xfd, 0x88, 0x2c, 0x1a, 0x08, 0x29, 0xb4, 0xc1, 0x11, 0xe2, 0x61, 0x88, 0xa1, + 0x2e, 0x91, 0x0b, 0x53, 0xcf, 0x2a, 0x71, 0x36, 0xc9, 0x2a, 0xf1, 0x1b, 0x85, 0xc2, 0x2a, 0x09, + 0xd5, 0x6b, 0x2c, 0x9e, 0x68, 0x73, 0x75, 0xec, 0x44, 0xc0, 0x7b, 0x23, 0xcc, 0x5e, 0x0a, 0xbe, + 0xf8, 0x10, 0xf3, 0x89, 0x7d, 0xfc, 0x43, 0xdf, 0x94, 0x74, 0x05, 0x86, 0x67, 0x21, 0x02, 0x5d, + 0x1f, 0x41, 0x49, 0xc4, 0x09, 0x2d, 0xd1, 0x72, 0x4a, 0x6c, 0xf9, 0xe9, 0xa3, 0xf0, 0x01, 0x09, + 0xa6, 0xc9, 0x55, 0xa8, 0x0b, 0xfb, 0xe4, 0x58, 0xa4, 0xa0, 0x51, 0xf2, 0x92, 0xb0, 0x98, 0x15, + 0xc8, 0x76, 0x74, 0xe3, 0xb2, 0xe7, 0x3d, 0xe8, 0x3e, 0x07, 0x17, 0xeb, 0x49, 0x7d, 0x2e, 0xd6, + 0xf3, 0xf7, 0x29, 0xfc, 0x72, 0x0f, 0x75, 0xd3, 0xf3, 0x40, 0x72, 0xe9, 0x8b, 0xf1, 0xef, 0xb2, + 0x90, 0xaf, 0x63, 0xcd, 0x6a, 0x6d, 0xa3, 0x77, 0x49, 0x7d, 0xa7, 0x0a, 0x93, 0xfc, 0x54, 0x61, + 0x09, 0x26, 0x36, 0xf5, 0x8e, 0x83, 0x2d, 0xea, 0x51, 0x1d, 0xee, 0xda, 0x69, 0x13, 0x5f, 0xe8, + 0x98, 0xad, 0xcb, 0xf3, 0xcc, 0x74, 0x9f, 0xf7, 0x02, 0xb1, 0xce, 0x2f, 0x91, 0x9f, 0x54, 0xef, + 0x67, 0xd7, 0x20, 0xb4, 0x4d, 0xcb, 0x89, 0xba, 0x63, 0x23, 0x82, 0x4a, 0xdd, 0xb4, 0x1c, 0x95, + 0xfe, 0xe8, 0xc2, 0xbc, 0xb9, 0xdb, 0xe9, 0x34, 0xf0, 0x23, 0x8e, 0x37, 0x6d, 0xf3, 0xde, 0x5d, + 0x63, 0xd1, 0xdc, 0xdc, 0xb4, 0x31, 0x5d, 0x34, 0xc8, 0xa9, 0xec, 0x4d, 0x39, 0x09, 0xb9, 0x8e, + 0xbe, 0xa3, 0xd3, 0x89, 0x46, 0x4e, 0xa5, 0x2f, 0xca, 0x2d, 0x50, 0x08, 0xe6, 0x38, 0x94, 0xd1, + 0x33, 0x79, 0xd2, 0x34, 0x0f, 0xa4, 0xbb, 0x3a, 0x73, 0x19, 0xef, 0xdb, 0x67, 0x26, 0xc8, 0x77, + 0xf2, 0xcc, 0x1f, 0x5f, 0x11, 0xd9, 0xef, 0xa0, 0x12, 0x8f, 0x9e, 0xc1, 0x5a, 0xb8, 0x65, 0x5a, + 0x6d, 0x4f, 0x36, 0xd1, 0x13, 0x0c, 0x96, 0x2f, 0xd9, 0x2e, 0x45, 0xdf, 0xc2, 0xd3, 0xd7, 0xb4, + 0xb7, 0xe7, 0xdd, 0x6e, 0xd3, 0x2d, 0xfa, 0xa2, 0xee, 0x6c, 0xaf, 0x61, 0x47, 0x43, 0x7f, 0x27, + 0xf7, 0xd5, 0xb8, 0xe9, 0xff, 0x4f, 0xe3, 0x06, 0x68, 0x1c, 0x0d, 0x83, 0xe5, 0xec, 0x5a, 0x86, + 0x2b, 0x47, 0xe6, 0x95, 0x1a, 0x4a, 0x51, 0xee, 0x86, 0x6b, 0x82, 0x37, 0x6f, 0xa9, 0x74, 0x91, + 0x4d, 0x5b, 0xa7, 0x48, 0xf6, 0xe8, 0x0c, 0xca, 0x3a, 0xdc, 0x40, 0x3f, 0xae, 0x34, 0xd6, 0x56, + 0x57, 0xf4, 0xad, 0xed, 0x8e, 0xbe, 0xb5, 0xed, 0xd8, 0x15, 0xc3, 0x76, 0xb0, 0xd6, 0xae, 0x6d, + 0xaa, 0xf4, 0x76, 0x1c, 0x20, 0x74, 0x44, 0xb2, 0xf2, 0x1e, 0xd7, 0x62, 0xa3, 0x5b, 0x58, 0x53, + 0x22, 0x5a, 0xca, 0xb3, 0xdc, 0x96, 0x62, 0xef, 0x76, 0x7c, 0x4c, 0xaf, 0xeb, 0xc1, 0x34, 0x50, + 0xf5, 0xdd, 0x0e, 0x69, 0x2e, 0x24, 0x73, 0xd2, 0x71, 0x2e, 0x86, 0x93, 0xf4, 0x9b, 0xcd, 0xff, + 0x93, 0x87, 0xdc, 0xb2, 0xa5, 0x75, 0xb7, 0xd1, 0x0b, 0x42, 0xfd, 0xf3, 0xa8, 0xda, 0x84, 0xaf, + 0x9d, 0xd2, 0x20, 0xed, 0x94, 0x07, 0x68, 0x67, 0x36, 0xa4, 0x9d, 0xd1, 0x8b, 0xca, 0xe7, 0x61, + 0xa6, 0x65, 0x76, 0x3a, 0xb8, 0xe5, 0xca, 0xa3, 0xd2, 0x26, 0xab, 0x39, 0x53, 0x2a, 0x97, 0x46, + 0x82, 0x55, 0x63, 0xa7, 0x4e, 0xd7, 0xd0, 0xa9, 0xd2, 0x07, 0x09, 0xe8, 0x95, 0x12, 0x64, 0xcb, + 0xed, 0x2d, 0xcc, 0xad, 0xb3, 0x67, 0x42, 0xeb, 0xec, 0xa7, 0x21, 0xef, 0x68, 0xd6, 0x16, 0x76, + 0xbc, 0x75, 0x02, 0xfa, 0xe6, 0xc7, 0xd0, 0x96, 0x43, 0x31, 0xb4, 0xbf, 0x1b, 0xb2, 0xae, 0xcc, + 0x98, 0x93, 0xf9, 0x0d, 0xfd, 0xe0, 0x27, 0xb2, 0x9f, 0x77, 0x4b, 0x9c, 0x77, 0x6b, 0xad, 0x92, + 0x1f, 0x7a, 0xb1, 0xce, 0x1d, 0xc0, 0x9a, 0x5c, 0xf4, 0xd9, 0x32, 0x8d, 0xca, 0x8e, 0xb6, 0x85, + 0x59, 0x35, 0x83, 0x04, 0xef, 0x6b, 0x79, 0xc7, 0x7c, 0x58, 0x67, 0xd1, 0x22, 0x83, 0x04, 0xb7, + 0x0a, 0xdb, 0x7a, 0xbb, 0x8d, 0x0d, 0xd6, 0xb2, 0xd9, 0xdb, 0xf9, 0xb3, 0x90, 0x75, 0x79, 0x70, + 0xf5, 0xc7, 0x35, 0x16, 0x0a, 0xc7, 0x94, 0x19, 0xb7, 0x59, 0xd1, 0xc6, 0x5b, 0xc8, 0xf0, 0x6b, + 0xaa, 0x22, 0x6e, 0x3b, 0xb4, 0x72, 0xfd, 0x1b, 0xd7, 0xd3, 0x20, 0x67, 0x98, 0x6d, 0x3c, 0x70, + 0x10, 0xa2, 0xb9, 0x94, 0x67, 0x42, 0x0e, 0xb7, 0xdd, 0x5e, 0x41, 0x26, 0xd9, 0xcf, 0xc6, 0xcb, + 0x52, 0xa5, 0x99, 0x93, 0xf9, 0x06, 0xf5, 0xe3, 0x36, 0xfd, 0x06, 0xf8, 0xe3, 0x13, 0x70, 0x9c, + 0xf6, 0x01, 0xf5, 0xdd, 0x4b, 0x2e, 0xa9, 0x4b, 0x18, 0x3d, 0xd6, 0x7f, 0xe0, 0x3a, 0xce, 0x2b, + 0xfb, 0x49, 0xc8, 0xd9, 0xbb, 0x97, 0x7c, 0x23, 0x94, 0xbe, 0x84, 0x9b, 0xae, 0x34, 0x92, 0xe1, + 0x4c, 0x1e, 0x76, 0x38, 0xe3, 0x86, 0x26, 0xd9, 0x6b, 0xfc, 0xc1, 0x40, 0x46, 0x8f, 0x47, 0x78, + 0x03, 0x59, 0xbf, 0x61, 0xe8, 0x0c, 0x4c, 0x68, 0x9b, 0x0e, 0xb6, 0x02, 0x33, 0x91, 0xbd, 0xba, + 0x43, 0xe5, 0x25, 0xbc, 0x69, 0x5a, 0xae, 0x58, 0x68, 0x08, 0x75, 0xff, 0x3d, 0xd4, 0x72, 0x81, + 0xdb, 0x21, 0xbb, 0x15, 0x4e, 0x18, 0xe6, 0x22, 0xee, 0x32, 0x39, 0x53, 0x14, 0x67, 0x49, 0x0b, + 0x38, 0xf8, 0xe1, 0x40, 0x57, 0x32, 0x77, 0xb0, 0x2b, 0x41, 0x1f, 0x4b, 0x3a, 0x67, 0xee, 0x01, + 0x7a, 0x64, 0x16, 0x9a, 0xf2, 0x1c, 0x98, 0x69, 0x33, 0x17, 0xad, 0x96, 0xee, 0xb7, 0x92, 0xc8, + 0xff, 0xb8, 0xcc, 0x81, 0x22, 0x65, 0xc3, 0x8a, 0xb4, 0x0c, 0x93, 0xe4, 0x20, 0xb3, 0xab, 0x49, + 0xb9, 0x1e, 0x97, 0x78, 0x32, 0xad, 0xf3, 0x2b, 0x15, 0x12, 0xdb, 0x7c, 0x89, 0xfd, 0xa2, 0xfa, + 0x3f, 0x27, 0x9b, 0x7d, 0xc7, 0x4b, 0x28, 0xfd, 0xe6, 0xf8, 0x6b, 0x79, 0xb8, 0xa6, 0x64, 0x99, + 0xb6, 0x4d, 0xce, 0xc0, 0xf4, 0x36, 0xcc, 0x5f, 0x96, 0xb8, 0xdb, 0x34, 0x9e, 0xd0, 0xcd, 0xaf, + 0x5f, 0x83, 0x1a, 0x5f, 0xd3, 0xf8, 0x82, 0x70, 0x08, 0x18, 0x7f, 0xff, 0x21, 0x42, 0xe8, 0xdf, + 0x1e, 0x8d, 0xe4, 0xed, 0x19, 0x91, 0xa8, 0x34, 0x09, 0x65, 0x95, 0x7e, 0x73, 0xf9, 0x8c, 0x04, + 0xd7, 0xf6, 0x72, 0xb3, 0x61, 0xd8, 0x7e, 0x83, 0xb9, 0x7e, 0x40, 0x7b, 0xe1, 0xa3, 0x98, 0xc4, + 0xde, 0x63, 0x19, 0x51, 0xf7, 0x50, 0x69, 0x11, 0x8b, 0x25, 0xc1, 0x89, 0x9a, 0xb8, 0x7b, 0x2c, + 0x13, 0x93, 0x4f, 0x5f, 0xb8, 0x1f, 0xcf, 0xc2, 0xf1, 0x65, 0xcb, 0xdc, 0xed, 0xda, 0x41, 0x0f, + 0xf4, 0xd7, 0xfd, 0x37, 0x5c, 0xf3, 0x22, 0xa6, 0xc1, 0x39, 0x98, 0xb6, 0x98, 0x35, 0x17, 0x6c, + 0xbf, 0x86, 0x93, 0xc2, 0xbd, 0x97, 0x7c, 0x98, 0xde, 0x2b, 0xe8, 0x67, 0xb2, 0x5c, 0x3f, 0xd3, + 0xdb, 0x73, 0xe4, 0xfa, 0xf4, 0x1c, 0x7f, 0x25, 0x25, 0x1c, 0x54, 0x7b, 0x44, 0x14, 0xd1, 0x5f, + 0x94, 0x20, 0xbf, 0x45, 0x32, 0xb2, 0xee, 0xe2, 0xa9, 0x62, 0x35, 0x23, 0xc4, 0x55, 0xf6, 0x6b, + 0x20, 0x57, 0x39, 0xac, 0xc3, 0x89, 0x06, 0xb8, 0x78, 0x6e, 0xd3, 0x57, 0xaa, 0xd7, 0x65, 0x61, + 0xc6, 0x2f, 0xbd, 0xd2, 0xb6, 0xd1, 0x4b, 0xfa, 0x6b, 0xd4, 0xac, 0x88, 0x46, 0x1d, 0x58, 0x67, + 0xf6, 0x47, 0x1d, 0x39, 0x34, 0xea, 0xf4, 0x1d, 0x5d, 0x66, 0x22, 0x46, 0x17, 0xf4, 0x7c, 0x59, + 0xf4, 0x3e, 0x2a, 0xbe, 0x6b, 0x25, 0xb5, 0x79, 0x22, 0x0f, 0x16, 0x82, 0xb7, 0x62, 0x0d, 0xae, + 0x55, 0xfa, 0x4a, 0xf2, 0x5e, 0x09, 0x4e, 0x1c, 0xec, 0xcc, 0xbf, 0x83, 0xf7, 0x42, 0x73, 0xeb, + 0x64, 0xfb, 0x5e, 0x68, 0xe4, 0x8d, 0xdf, 0xa4, 0x8b, 0x0d, 0x29, 0xc2, 0xd9, 0x7b, 0x83, 0x3b, + 0x71, 0xb1, 0xa0, 0x21, 0x82, 0x44, 0xd3, 0x17, 0xe0, 0x4f, 0xc9, 0x30, 0x55, 0xc7, 0xce, 0xaa, + 0xb6, 0x6f, 0xee, 0x3a, 0x48, 0x13, 0xdd, 0x9e, 0x7b, 0x36, 0xe4, 0x3b, 0xe4, 0x17, 0x76, 0xcd, + 0xff, 0xb9, 0xbe, 0xfb, 0x5b, 0xc4, 0xf7, 0x87, 0x92, 0x56, 0x59, 0x7e, 0x3e, 0x96, 0x8b, 0xc8, + 0xee, 0xa8, 0xcf, 0xdd, 0x48, 0xb6, 0x76, 0x12, 0xed, 0x9d, 0x46, 0x15, 0x9d, 0x3e, 0x2c, 0x3f, + 0x22, 0xc3, 0x6c, 0x1d, 0x3b, 0x15, 0x7b, 0x49, 0xdb, 0x33, 0x2d, 0xdd, 0xc1, 0xe1, 0x7b, 0x3e, + 0xe3, 0xa1, 0x39, 0x0b, 0xa0, 0xfb, 0xbf, 0xb1, 0x08, 0x53, 0xa1, 0x14, 0xf4, 0xab, 0x49, 0x1d, + 0x85, 0x38, 0x3e, 0x46, 0x02, 0x42, 0x22, 0x1f, 0x8b, 0xb8, 0xe2, 0xd3, 0x07, 0xe2, 0xd3, 0x12, + 0x03, 0xa2, 0x68, 0xb5, 0xb6, 0xf5, 0x3d, 0xdc, 0x4e, 0x08, 0x84, 0xf7, 0x5b, 0x00, 0x84, 0x4f, + 0x28, 0xb1, 0xfb, 0x0a, 0xc7, 0xc7, 0x28, 0xdc, 0x57, 0xe2, 0x08, 0x8e, 0x25, 0x48, 0x94, 0xdb, + 0xf5, 0xb0, 0xf5, 0xcc, 0xfb, 0x44, 0xc5, 0x1a, 0x98, 0x6c, 0x52, 0xd8, 0x64, 0x1b, 0xaa, 0x63, + 0xa1, 0x65, 0x0f, 0xd2, 0xe9, 0x6c, 0x1a, 0x1d, 0x4b, 0xdf, 0xa2, 0xd3, 0x17, 0xfa, 0x3b, 0x65, + 0x38, 0xe5, 0x47, 0x4f, 0xa9, 0x63, 0x67, 0x51, 0xb3, 0xb7, 0x2f, 0x99, 0x9a, 0xd5, 0x46, 0xa5, + 0x11, 0x9c, 0xf8, 0x43, 0x9f, 0x0a, 0x83, 0x50, 0xe5, 0x41, 0xe8, 0xeb, 0x2a, 0xda, 0x97, 0x97, + 0x51, 0x74, 0x32, 0xb1, 0xde, 0xac, 0xbf, 0xe1, 0x83, 0xf5, 0x3d, 0x1c, 0x58, 0xf7, 0x0c, 0xcb, + 0x62, 0xfa, 0xc0, 0xfd, 0x2c, 0x1d, 0x11, 0x42, 0x5e, 0xcd, 0x0f, 0x89, 0x02, 0x16, 0xe1, 0xd5, + 0x2a, 0x47, 0x7a, 0xb5, 0x0e, 0x35, 0x46, 0x0c, 0xf4, 0x48, 0x4e, 0x77, 0x8c, 0x38, 0x42, 0x6f, + 0xe3, 0xb7, 0xca, 0x50, 0x20, 0xe1, 0xb3, 0x42, 0x1e, 0xdf, 0xe1, 0x68, 0xd4, 0xf1, 0xe8, 0x1c, + 0xf0, 0x2e, 0x9f, 0x48, 0xea, 0x5d, 0x8e, 0xde, 0x92, 0xd4, 0x87, 0xbc, 0x97, 0xdb, 0x91, 0x20, + 0x96, 0xc8, 0x45, 0x7c, 0x00, 0x07, 0xe9, 0x83, 0xf6, 0xdf, 0x64, 0x00, 0xb7, 0x41, 0xb3, 0xb3, + 0x0f, 0xcf, 0x15, 0x85, 0xeb, 0xb6, 0xb0, 0x5f, 0xbd, 0x0b, 0xd4, 0xa9, 0x1e, 0xa0, 0x28, 0xc5, + 0xe0, 0x54, 0xc5, 0x63, 0x49, 0x7d, 0x2b, 0x03, 0xae, 0x46, 0x02, 0x4b, 0x22, 0x6f, 0xcb, 0xc8, + 0xb2, 0xd3, 0x07, 0xe4, 0x7f, 0x48, 0x90, 0x6b, 0x98, 0x75, 0xec, 0x1c, 0xde, 0x14, 0x48, 0x7c, + 0x6c, 0x9f, 0x94, 0x3b, 0x8a, 0x63, 0xfb, 0xfd, 0x08, 0x8d, 0x21, 0x1a, 0x99, 0x04, 0x33, 0x0d, + 0xb3, 0xe4, 0x2f, 0x4e, 0x89, 0xfb, 0xaa, 0x8a, 0xdf, 0xa9, 0xed, 0x57, 0x30, 0x28, 0xe6, 0x50, + 0x77, 0x6a, 0x0f, 0xa6, 0x97, 0xbe, 0xdc, 0xee, 0x84, 0xe3, 0x1b, 0x46, 0xdb, 0x54, 0x71, 0xdb, + 0x64, 0x2b, 0xdd, 0x8a, 0x02, 0xd9, 0x5d, 0xa3, 0x6d, 0x12, 0x96, 0x73, 0x2a, 0x79, 0x76, 0xd3, + 0x2c, 0xdc, 0x36, 0x99, 0x6f, 0x00, 0x79, 0x46, 0x5f, 0x90, 0x21, 0xeb, 0xfe, 0x2b, 0x2e, 0xea, + 0xb7, 0xca, 0x09, 0x03, 0x11, 0xb8, 0xe4, 0x47, 0x62, 0x09, 0xdd, 0x17, 0x5a, 0xfb, 0xa7, 0x1e, + 0xac, 0x37, 0x44, 0x95, 0x17, 0x12, 0x45, 0xb0, 0xe6, 0xaf, 0x9c, 0x81, 0x89, 0x4b, 0x1d, 0xb3, + 0x75, 0x39, 0x38, 0x2f, 0xcf, 0x5e, 0x95, 0x5b, 0x20, 0x67, 0x69, 0xc6, 0x16, 0x66, 0x7b, 0x0a, + 0x27, 0x7b, 0xfa, 0x42, 0xe2, 0xf5, 0xa2, 0xd2, 0x2c, 0xe8, 0x2d, 0x49, 0x42, 0x20, 0xf4, 0xa9, + 0x7c, 0x32, 0x7d, 0x58, 0x1c, 0xe2, 0x64, 0x59, 0x01, 0x66, 0x4a, 0x45, 0x7a, 0x7b, 0xfd, 0x5a, + 0xed, 0x42, 0xb9, 0x20, 0x13, 0x98, 0x5d, 0x99, 0xa4, 0x08, 0xb3, 0x4b, 0xfe, 0xdb, 0x16, 0xe6, + 0x3e, 0x95, 0x3f, 0x0a, 0x98, 0x3f, 0x22, 0xc1, 0xec, 0xaa, 0x6e, 0x3b, 0x51, 0xde, 0xfe, 0x31, + 0xd1, 0x73, 0x5f, 0x9a, 0xd4, 0x54, 0xe6, 0xca, 0x11, 0x0e, 0x9b, 0x9b, 0xc8, 0x1c, 0x8e, 0x2b, + 0x62, 0x3c, 0xc7, 0x52, 0x08, 0x07, 0xf4, 0x0e, 0x69, 0x61, 0x49, 0x26, 0x36, 0x94, 0x82, 0x42, + 0xc6, 0x6f, 0x28, 0x45, 0x96, 0x9d, 0xbe, 0x7c, 0xbf, 0x20, 0xc1, 0x09, 0xb7, 0xf8, 0xb8, 0x65, + 0xa9, 0x68, 0x31, 0x0f, 0x5c, 0x96, 0x4a, 0xbc, 0x32, 0x7e, 0x80, 0x97, 0x51, 0xac, 0x8c, 0x0f, + 0x22, 0x3a, 0x66, 0x31, 0x47, 0x2c, 0xc3, 0x0e, 0x12, 0x73, 0xcc, 0x32, 0xec, 0xf0, 0x62, 0x8e, + 0x5f, 0x8a, 0x1d, 0x52, 0xcc, 0x47, 0xb6, 0xc0, 0xfa, 0x06, 0xd9, 0x17, 0x73, 0xe4, 0xda, 0x46, + 0x8c, 0x98, 0x13, 0x9f, 0xd8, 0x45, 0x6f, 0x1b, 0x52, 0xf0, 0x23, 0x5e, 0xdf, 0x18, 0x06, 0xa6, + 0x23, 0x5c, 0xe3, 0xf8, 0x39, 0x19, 0xe6, 0x18, 0x17, 0xfd, 0xa7, 0xcc, 0x31, 0x18, 0x25, 0x9e, + 0x32, 0x27, 0x3e, 0x03, 0xc4, 0x73, 0x36, 0xfe, 0x33, 0x40, 0xb1, 0xe5, 0xa7, 0x0f, 0xce, 0x17, + 0xb3, 0x70, 0xda, 0x65, 0x61, 0xcd, 0x6c, 0xeb, 0x9b, 0xfb, 0x94, 0x8b, 0x0b, 0x5a, 0x67, 0x17, + 0xdb, 0xe8, 0xdd, 0x92, 0x28, 0x4a, 0xff, 0x09, 0xc0, 0xec, 0x62, 0x8b, 0x06, 0x52, 0x63, 0x40, + 0xdd, 0x1d, 0x55, 0xd9, 0x83, 0x25, 0xf9, 0x97, 0xc9, 0xd4, 0x3c, 0x22, 0x6a, 0x88, 0x9e, 0x6b, + 0x15, 0x4e, 0xf9, 0x5f, 0x7a, 0x1d, 0x3c, 0x32, 0x07, 0x1d, 0x3c, 0x6e, 0x06, 0x59, 0x6b, 0xb7, + 0x7d, 0xa8, 0x7a, 0x37, 0xb3, 0x49, 0x99, 0xaa, 0x9b, 0xc5, 0xcd, 0x69, 0xe3, 0xe0, 0x68, 0x5e, + 0x44, 0x4e, 0x1b, 0x3b, 0xca, 0x3c, 0xe4, 0xe9, 0x0d, 0xd9, 0xfe, 0x8a, 0x7e, 0xff, 0xcc, 0x2c, + 0x17, 0x6f, 0xda, 0xd5, 0x78, 0x35, 0xbc, 0x33, 0x91, 0x64, 0xfa, 0xf5, 0xd3, 0x81, 0x9d, 0xac, + 0x72, 0x0a, 0x76, 0xef, 0xd0, 0x94, 0xc7, 0xb3, 0x1b, 0x56, 0xec, 0x76, 0x3b, 0xfb, 0x0d, 0x16, + 0x7c, 0x25, 0xd1, 0x6e, 0x58, 0x28, 0x86, 0x8b, 0xd4, 0x1b, 0xc3, 0x25, 0xf9, 0x6e, 0x18, 0xc7, + 0xc7, 0x28, 0x76, 0xc3, 0xe2, 0x08, 0xa6, 0x2f, 0xda, 0xaf, 0xe4, 0xa9, 0xd5, 0xcc, 0x62, 0xfb, + 0xbf, 0xa1, 0xbf, 0x67, 0x35, 0xf0, 0xce, 0x2e, 0xfd, 0xc2, 0xfe, 0xc7, 0xde, 0x69, 0xa2, 0x3c, + 0x13, 0xf2, 0x9b, 0xa6, 0xb5, 0xa3, 0x79, 0x1b, 0xf7, 0xbd, 0x27, 0x45, 0x58, 0x3c, 0xfd, 0x25, + 0x92, 0x47, 0x65, 0x79, 0xdd, 0xf9, 0xc8, 0xf3, 0xf4, 0x2e, 0x8b, 0xba, 0xe8, 0x3e, 0x2a, 0x37, + 0xc2, 0x2c, 0x0b, 0xbe, 0x58, 0xc5, 0xb6, 0x83, 0xdb, 0x2c, 0x62, 0x05, 0x9f, 0xa8, 0x9c, 0x87, + 0x19, 0x96, 0xb0, 0xa4, 0x77, 0xb0, 0xcd, 0x82, 0x56, 0x70, 0x69, 0xca, 0x69, 0xc8, 0xeb, 0xf6, + 0x03, 0xb6, 0x69, 0x10, 0xff, 0xff, 0x49, 0x95, 0xbd, 0x29, 0x37, 0xc3, 0x71, 0x96, 0xcf, 0x37, + 0x56, 0xe9, 0x81, 0x9d, 0xde, 0x64, 0x57, 0xb5, 0x0c, 0x73, 0xdd, 0x32, 0xb7, 0x2c, 0x6c, 0xdb, + 0xe4, 0xd4, 0xd4, 0xa4, 0x1a, 0x4a, 0x51, 0x1e, 0x82, 0x13, 0x1d, 0xdd, 0xb8, 0x6c, 0x93, 0x20, + 0xbd, 0x4b, 0xcc, 0x6d, 0x6c, 0xa6, 0x4f, 0xf0, 0xec, 0x50, 0x63, 0x63, 0x72, 0x08, 0xff, 0xa2, + 0x1e, 0xa4, 0x82, 0xda, 0x30, 0x13, 0x7e, 0x57, 0xe6, 0x41, 0xf1, 0x7a, 0x31, 0xfb, 0xe2, 0xb6, + 0xee, 0x60, 0x97, 0x16, 0xeb, 0x6b, 0xfb, 0x7c, 0x71, 0xc5, 0x68, 0x1a, 0x9d, 0x7d, 0xd5, 0x34, + 0x1d, 0xe2, 0xd7, 0xc5, 0x0c, 0x45, 0x3e, 0x11, 0x7d, 0x62, 0x98, 0x99, 0x51, 0xe2, 0x8b, 0x1a, + 0x5c, 0x35, 0xdb, 0x6d, 0xb5, 0x30, 0x6e, 0xb3, 0xa3, 0x5b, 0xde, 0x6b, 0xc2, 0x2b, 0x1c, 0x12, + 0xcf, 0xa3, 0x8e, 0xe8, 0x0e, 0x87, 0xdf, 0x3b, 0x05, 0x79, 0x7a, 0x1f, 0x1a, 0x7a, 0xc5, 0x5c, + 0xdf, 0xd6, 0x36, 0xc7, 0xb7, 0xb6, 0x0d, 0x98, 0x31, 0x4c, 0xb7, 0xb8, 0x75, 0xcd, 0xd2, 0x76, + 0xec, 0xb8, 0x65, 0x52, 0x4a, 0xd7, 0x1f, 0x13, 0xab, 0xa1, 0xdf, 0x56, 0x8e, 0xa9, 0x1c, 0x19, + 0xe5, 0xff, 0x07, 0xc7, 0x2f, 0xb1, 0x10, 0x07, 0x36, 0xa3, 0x2c, 0x45, 0x3b, 0x11, 0xf6, 0x50, + 0x5e, 0xe0, 0xff, 0x5c, 0x39, 0xa6, 0xf6, 0x12, 0x53, 0xbe, 0x0f, 0xe6, 0xdc, 0xd7, 0xb6, 0x79, + 0xc5, 0x63, 0x5c, 0x8e, 0xb6, 0xa4, 0x7a, 0xc8, 0xaf, 0x71, 0x3f, 0xae, 0x1c, 0x53, 0x7b, 0x48, + 0x29, 0x35, 0x80, 0x6d, 0x67, 0xa7, 0xc3, 0x08, 0x67, 0xa3, 0x55, 0xb2, 0x87, 0xf0, 0x8a, 0xff, + 0xd3, 0xca, 0x31, 0x35, 0x44, 0x42, 0x59, 0x85, 0x29, 0xe7, 0x11, 0x87, 0xd1, 0xcb, 0x45, 0xef, + 0xde, 0xf7, 0xd0, 0x6b, 0x78, 0xff, 0xac, 0x1c, 0x53, 0x03, 0x02, 0x4a, 0x05, 0x26, 0xbb, 0x97, + 0x18, 0xb1, 0x7c, 0x74, 0x8b, 0xef, 0x21, 0xb6, 0x7e, 0xc9, 0xa7, 0xe5, 0xff, 0xee, 0x32, 0xd6, + 0xb2, 0xf7, 0x18, 0xad, 0x09, 0x61, 0xc6, 0x4a, 0xde, 0x3f, 0x2e, 0x63, 0x3e, 0x01, 0xa5, 0x02, + 0x53, 0xb6, 0xa1, 0x75, 0xed, 0x6d, 0xd3, 0xb1, 0xcf, 0x4c, 0xf6, 0x38, 0x7a, 0x46, 0x53, 0xab, + 0xb3, 0x7f, 0xd4, 0xe0, 0x6f, 0xe5, 0x99, 0x70, 0x6a, 0x97, 0xdc, 0xff, 0x5f, 0x7e, 0x44, 0xb7, + 0x1d, 0xdd, 0xd8, 0xf2, 0x82, 0xe4, 0xd2, 0xee, 0xb2, 0xff, 0x47, 0x65, 0x9e, 0x1d, 0xf9, 0x02, + 0xd2, 0x36, 0x51, 0xef, 0x6e, 0x23, 0x2d, 0x36, 0x74, 0xd2, 0xeb, 0x39, 0x90, 0x75, 0x3f, 0x91, + 0xee, 0x75, 0xae, 0xff, 0x4a, 0x66, 0xaf, 0xee, 0x90, 0x06, 0xec, 0xfe, 0xd4, 0xd3, 0x43, 0xcf, + 0x1c, 0xe8, 0xa1, 0xcf, 0xc1, 0xb4, 0x6e, 0xaf, 0xe9, 0x5b, 0xd4, 0x3c, 0x64, 0x0e, 0xfd, 0xe1, + 0x24, 0x3a, 0x9d, 0xae, 0xe2, 0x2b, 0xf4, 0x0a, 0x90, 0xe3, 0xde, 0x74, 0xda, 0x4b, 0x41, 0x37, + 0xc1, 0x4c, 0xb8, 0x91, 0xd1, 0x4b, 0x55, 0xf5, 0xc0, 0xb8, 0x64, 0x6f, 0xe8, 0x46, 0x98, 0xe3, + 0x75, 0x3a, 0x34, 0x86, 0xca, 0x5e, 0x57, 0x88, 0x6e, 0x80, 0xe3, 0x3d, 0x0d, 0xcb, 0x0b, 0x9a, + 0x92, 0x09, 0x82, 0xa6, 0x9c, 0x03, 0x08, 0xb4, 0xb8, 0x2f, 0x99, 0xeb, 0x61, 0xca, 0xd7, 0xcb, + 0xbe, 0x19, 0x3e, 0x97, 0x81, 0x49, 0x4f, 0xd9, 0xfa, 0x65, 0x70, 0x07, 0x50, 0x23, 0xb4, 0x43, + 0xc2, 0x86, 0x07, 0x2e, 0xcd, 0x1d, 0x28, 0x03, 0xbf, 0xe4, 0x86, 0xee, 0x74, 0xbc, 0xb3, 0x7d, + 0xbd, 0xc9, 0xca, 0x3a, 0x80, 0x4e, 0x30, 0x6a, 0x04, 0x87, 0xfd, 0x6e, 0x4f, 0xd0, 0x1e, 0xa8, + 0x3e, 0x84, 0x68, 0x9c, 0xff, 0x0e, 0x76, 0x12, 0x6f, 0x0a, 0x72, 0x34, 0x52, 0xfc, 0x31, 0x65, + 0x0e, 0xa0, 0xfc, 0xdc, 0xf5, 0xb2, 0x5a, 0x29, 0x57, 0x4b, 0xe5, 0x42, 0x06, 0xfd, 0xbc, 0x04, + 0x53, 0x7e, 0x23, 0xe8, 0x5b, 0xc9, 0x32, 0x53, 0xad, 0x81, 0xf7, 0x56, 0x1e, 0x6c, 0x54, 0x61, + 0x25, 0x7b, 0x36, 0x5c, 0xbd, 0x6b, 0xe3, 0x25, 0xdd, 0xb2, 0x1d, 0xd5, 0xbc, 0xb2, 0x64, 0x5a, + 0x7e, 0x58, 0x68, 0x16, 0xa2, 0x35, 0xea, 0xb3, 0x6b, 0x32, 0xb5, 0x31, 0x39, 0xf5, 0x85, 0x2d, + 0xb6, 0xf4, 0x1d, 0x24, 0xb8, 0x74, 0x1d, 0x4b, 0x33, 0xec, 0xae, 0x69, 0x63, 0xd5, 0xbc, 0x62, + 0x17, 0x8d, 0x76, 0xc9, 0xec, 0xec, 0xee, 0x18, 0x36, 0x33, 0x7a, 0xa2, 0x3e, 0xbb, 0xd2, 0x21, + 0xb7, 0xd2, 0xce, 0x01, 0x94, 0x6a, 0xab, 0xab, 0xe5, 0x52, 0xa3, 0x52, 0xab, 0x16, 0x8e, 0xb9, + 0xd2, 0x6a, 0x14, 0x17, 0x56, 0x5d, 0xe9, 0x7c, 0x3f, 0x4c, 0x7a, 0x6d, 0x9a, 0xc5, 0x79, 0xc9, + 0x78, 0x71, 0x5e, 0x94, 0x22, 0x4c, 0x7a, 0xad, 0x9c, 0x8d, 0x08, 0x4f, 0xee, 0x3d, 0xd7, 0xbb, + 0xa3, 0x59, 0xd4, 0x46, 0xf0, 0x88, 0x2c, 0x68, 0x36, 0x56, 0xfd, 0xdf, 0xce, 0x3f, 0x8d, 0x71, + 0xa0, 0xc0, 0x5c, 0x71, 0x75, 0xb5, 0x59, 0x53, 0x9b, 0xd5, 0x5a, 0x63, 0xa5, 0x52, 0x5d, 0xa6, + 0x23, 0x64, 0x65, 0xb9, 0x5a, 0x53, 0xcb, 0x74, 0x80, 0xac, 0x17, 0x32, 0xf4, 0x56, 0xe4, 0x85, + 0x49, 0xc8, 0x77, 0x89, 0x74, 0xd1, 0x67, 0xe4, 0x84, 0x07, 0xfa, 0x7d, 0x9c, 0x22, 0xee, 0x6d, + 0xe5, 0x9c, 0xea, 0xa5, 0x3e, 0x87, 0x5e, 0xcf, 0xc3, 0x0c, 0x35, 0x56, 0x6d, 0xb2, 0x3f, 0x41, + 0x90, 0x93, 0x55, 0x2e, 0x0d, 0x7d, 0x40, 0x4a, 0x70, 0xca, 0xbf, 0x2f, 0x47, 0xc9, 0x8c, 0x8b, + 0x3f, 0xcb, 0x0c, 0x77, 0xaf, 0x42, 0xa5, 0xda, 0x28, 0xab, 0xd5, 0xe2, 0x2a, 0xcb, 0x22, 0x2b, + 0x67, 0xe0, 0x64, 0xb5, 0xc6, 0x82, 0x16, 0xd6, 0x9b, 0x8d, 0x5a, 0xb3, 0xb2, 0xb6, 0x5e, 0x53, + 0x1b, 0x85, 0x9c, 0x72, 0x1a, 0x14, 0xfa, 0xdc, 0xac, 0xd4, 0x9b, 0xa5, 0x62, 0xb5, 0x54, 0x5e, + 0x2d, 0x2f, 0x16, 0xf2, 0xca, 0x53, 0xe0, 0x06, 0x7a, 0x4f, 0x4f, 0x6d, 0xa9, 0xa9, 0xd6, 0x2e, + 0xd6, 0x5d, 0x04, 0xd5, 0xf2, 0x6a, 0xd1, 0x55, 0xa4, 0xd0, 0xed, 0xc8, 0x13, 0xca, 0x55, 0x70, + 0x9c, 0x5c, 0x9d, 0xbe, 0x5a, 0x2b, 0x2e, 0xb2, 0xf2, 0x26, 0x95, 0xeb, 0xe0, 0x4c, 0xa5, 0x5a, + 0xdf, 0x58, 0x5a, 0xaa, 0x94, 0x2a, 0xe5, 0x6a, 0xa3, 0xb9, 0x5e, 0x56, 0xd7, 0x2a, 0xf5, 0xba, + 0xfb, 0x6f, 0x61, 0x8a, 0xdc, 0x3d, 0x4b, 0xfb, 0x4c, 0xf4, 0x2e, 0x19, 0x66, 0x2f, 0x68, 0x1d, + 0xdd, 0x1d, 0x28, 0xc8, 0xa5, 0xd4, 0x3d, 0xe7, 0x61, 0x1c, 0x72, 0x79, 0x35, 0xf3, 0xa8, 0x27, + 0x2f, 0xe8, 0x87, 0xe5, 0x84, 0xe7, 0x61, 0x18, 0x10, 0xb4, 0xc4, 0x79, 0xae, 0xb4, 0x88, 0xd9, + 0xdb, 0x6b, 0xa5, 0x04, 0xe7, 0x61, 0xc4, 0xc9, 0x27, 0x03, 0xff, 0x17, 0x46, 0x05, 0x7e, 0x01, + 0x66, 0x36, 0xaa, 0xc5, 0x8d, 0xc6, 0x4a, 0x4d, 0xad, 0x7c, 0x2f, 0x09, 0xa7, 0x3e, 0x0b, 0x53, + 0x4b, 0x35, 0x75, 0xa1, 0xb2, 0xb8, 0x58, 0xae, 0x16, 0x72, 0xca, 0xd5, 0x70, 0x55, 0xbd, 0xac, + 0x5e, 0xa8, 0x94, 0xca, 0xcd, 0x8d, 0x6a, 0xf1, 0x42, 0xb1, 0xb2, 0x4a, 0xfa, 0x88, 0x7c, 0xcc, + 0x85, 0xda, 0x13, 0xe8, 0x07, 0xb3, 0x00, 0xb4, 0xea, 0xe4, 0x36, 0xa1, 0xd0, 0xb5, 0xcb, 0x7f, + 0x9e, 0x74, 0xd2, 0x10, 0x90, 0x89, 0x68, 0xbf, 0x15, 0x98, 0xb4, 0xd8, 0x07, 0xb6, 0x3e, 0x34, + 0x88, 0x0e, 0x7d, 0xf4, 0xa8, 0xa9, 0xfe, 0xef, 0xe8, 0xdd, 0x49, 0xe6, 0x08, 0x91, 0x8c, 0x25, + 0x43, 0x72, 0x69, 0x34, 0x40, 0xa2, 0x97, 0x64, 0x60, 0x8e, 0xaf, 0x98, 0x5b, 0x09, 0x62, 0x4c, + 0x89, 0x55, 0x82, 0xff, 0x39, 0x64, 0x64, 0x9d, 0x7f, 0x06, 0x1b, 0x4e, 0xc1, 0x6b, 0x99, 0xf4, + 0x68, 0xbb, 0x67, 0xb1, 0x14, 0x32, 0x2e, 0xf3, 0xae, 0xd1, 0x51, 0x90, 0x94, 0x09, 0x90, 0x1b, + 0x8f, 0x38, 0x05, 0x19, 0x7d, 0x4e, 0x86, 0x59, 0xee, 0x5e, 0x67, 0xf4, 0xda, 0x8c, 0xc8, 0x9d, + 0xab, 0xa1, 0x1b, 0xa3, 0x33, 0x87, 0xbd, 0x31, 0xfa, 0xfc, 0x6d, 0x30, 0xc1, 0xd2, 0x88, 0x7c, + 0x6b, 0x55, 0xd7, 0x14, 0x38, 0x0e, 0xd3, 0xcb, 0xe5, 0x46, 0xb3, 0xde, 0x28, 0xaa, 0x8d, 0xf2, + 0x62, 0x21, 0xe3, 0x0e, 0x7c, 0xe5, 0xb5, 0xf5, 0xc6, 0x43, 0x05, 0x29, 0xb9, 0x8b, 0x61, 0x2f, + 0x23, 0x63, 0x76, 0x31, 0x8c, 0x2b, 0x3e, 0xfd, 0xb9, 0xea, 0xc7, 0x64, 0x28, 0x50, 0x0e, 0xca, + 0x8f, 0x74, 0xb1, 0xa5, 0x63, 0xa3, 0x85, 0xd1, 0x65, 0x91, 0x90, 0xa6, 0x07, 0x82, 0xfd, 0x91, + 0xfe, 0x3c, 0x64, 0x25, 0xd2, 0x97, 0x1e, 0x03, 0x3b, 0x7b, 0xc0, 0xc0, 0xfe, 0x68, 0x52, 0x1f, + 0xc3, 0x5e, 0x76, 0x47, 0x02, 0xd9, 0x87, 0x93, 0xf8, 0x18, 0x0e, 0xe0, 0x60, 0x2c, 0x91, 0x8a, + 0x23, 0xc6, 0xdf, 0x82, 0x8c, 0x5e, 0x2c, 0xc3, 0xf1, 0x45, 0xcd, 0xc1, 0x0b, 0xfb, 0x0d, 0xef, + 0xde, 0xc5, 0x88, 0xbb, 0x92, 0x33, 0x07, 0xee, 0x4a, 0x0e, 0xae, 0x6e, 0x94, 0x7a, 0xae, 0x6e, + 0x44, 0x6f, 0x4f, 0x7a, 0x2a, 0xb1, 0x87, 0x87, 0x91, 0x85, 0x13, 0x4e, 0x76, 0xda, 0x30, 0x9e, + 0x8b, 0xf4, 0x1b, 0xd8, 0x9b, 0xa7, 0xa0, 0x40, 0x59, 0x09, 0xb9, 0xd1, 0xfd, 0x14, 0xbb, 0x5e, + 0xbc, 0x99, 0x20, 0x6a, 0xa1, 0x17, 0x07, 0x42, 0xe2, 0xe3, 0x40, 0x70, 0xab, 0xb2, 0x72, 0xaf, + 0xeb, 0x43, 0xd2, 0xce, 0x30, 0xe4, 0x33, 0x17, 0x1d, 0x28, 0x36, 0xbd, 0xce, 0x30, 0xb6, 0xf8, + 0xf1, 0x5c, 0x81, 0xcb, 0x2e, 0xaa, 0x2c, 0x8b, 0x22, 0x13, 0x7f, 0xd3, 0x77, 0x52, 0x07, 0x6a, + 0xce, 0x67, 0x31, 0xe6, 0xfa, 0xeb, 0xf4, 0x1c, 0xa8, 0x07, 0x71, 0x90, 0x3e, 0x0a, 0xdf, 0x94, + 0x20, 0x5b, 0x37, 0x2d, 0x67, 0x54, 0x18, 0x24, 0xdd, 0xf4, 0x0d, 0x49, 0xa0, 0x1e, 0x3d, 0xe7, + 0x4c, 0x6f, 0xd3, 0x37, 0xbe, 0xfc, 0x31, 0x04, 0x7e, 0x3c, 0x0e, 0x73, 0x94, 0x13, 0xff, 0x56, + 0x94, 0x6f, 0x48, 0xb4, 0xbf, 0x7a, 0x50, 0x14, 0x91, 0xf3, 0x30, 0x13, 0xda, 0x74, 0xf5, 0x40, + 0xe1, 0xd2, 0xd0, 0x2f, 0x87, 0x71, 0x59, 0xe4, 0x71, 0xe9, 0x37, 0xe3, 0xf6, 0x2f, 0x16, 0x19, + 0x55, 0xcf, 0x94, 0x24, 0x86, 0x64, 0x4c, 0xe1, 0xe9, 0x23, 0xf2, 0xa8, 0x0c, 0x79, 0xe6, 0xf4, + 0x36, 0x52, 0x04, 0x92, 0xb6, 0x0c, 0x5f, 0x08, 0x62, 0xce, 0x71, 0xf2, 0xa8, 0x5b, 0x46, 0x7c, + 0xf9, 0xe9, 0xe3, 0xf0, 0xef, 0xcc, 0x9b, 0xb3, 0xb8, 0xa7, 0xe9, 0x1d, 0xed, 0x52, 0x27, 0x41, + 0xec, 0xe6, 0x0f, 0x24, 0x3c, 0xbf, 0xe6, 0x57, 0x95, 0x2b, 0x2f, 0x42, 0xe2, 0xdf, 0x05, 0x53, + 0xfe, 0x16, 0xa0, 0x7f, 0xbc, 0xbf, 0xc7, 0x93, 0x96, 0x7d, 0x57, 0x83, 0x9c, 0x89, 0x0e, 0xab, + 0x09, 0xf1, 0x33, 0x96, 0xc3, 0x35, 0xd3, 0xc5, 0x76, 0x7b, 0x09, 0x6b, 0xce, 0xae, 0x85, 0xdb, + 0x89, 0x86, 0x08, 0x5e, 0x44, 0x53, 0x61, 0x49, 0x70, 0xd1, 0x13, 0x57, 0x79, 0x74, 0x9e, 0x35, + 0xa0, 0x37, 0xf0, 0x78, 0x19, 0x49, 0x97, 0xf4, 0xeb, 0x3e, 0x24, 0x35, 0x0e, 0x92, 0xe7, 0x0c, + 0xc7, 0x44, 0xfa, 0x80, 0xfc, 0x8c, 0x0c, 0x73, 0xd4, 0x4e, 0x18, 0x35, 0x26, 0xbf, 0x9d, 0xd0, + 0x49, 0x26, 0x74, 0xef, 0x54, 0x98, 0x9d, 0x91, 0xc0, 0x92, 0xc4, 0xa5, 0x46, 0x8c, 0x8f, 0xf4, + 0x91, 0xf9, 0x44, 0x1e, 0x20, 0xe4, 0xf8, 0xf8, 0x81, 0x7c, 0x10, 0xc9, 0x10, 0xbd, 0x85, 0xcd, + 0x3f, 0xea, 0x5c, 0x58, 0xed, 0x90, 0x53, 0xa3, 0xbf, 0x21, 0xc5, 0x27, 0x0a, 0x8d, 0x2a, 0x7f, + 0x96, 0xd0, 0xe6, 0x65, 0x6e, 0x87, 0x03, 0x07, 0xf7, 0x21, 0x7b, 0xb9, 0x0f, 0x26, 0x30, 0x7e, + 0x07, 0xb1, 0x92, 0x0c, 0xb5, 0xd5, 0x21, 0x66, 0xf6, 0x67, 0xe0, 0xa4, 0x5a, 0x2e, 0x2e, 0xd6, + 0xaa, 0xab, 0x0f, 0x85, 0x2f, 0x21, 0x2a, 0xc8, 0xe1, 0xc9, 0x49, 0x2a, 0xb0, 0xbd, 0x3e, 0x61, + 0x1f, 0xc8, 0xcb, 0x2a, 0xf6, 0x8a, 0xfd, 0x0f, 0x27, 0xe8, 0xd5, 0x04, 0xc8, 0x1e, 0x25, 0x0a, + 0x8f, 0x42, 0xa8, 0x19, 0xfd, 0xa8, 0x0c, 0x05, 0x77, 0x3c, 0xa4, 0x5c, 0xb2, 0xdb, 0xe6, 0x6a, + 0xbc, 0x5f, 0x64, 0x97, 0xee, 0x3f, 0x05, 0x7e, 0x91, 0x5e, 0x82, 0x72, 0x13, 0xcc, 0xb5, 0xb6, + 0x71, 0xeb, 0x72, 0xc5, 0xf0, 0xf6, 0xd5, 0xe9, 0x26, 0x6c, 0x4f, 0x2a, 0x0f, 0xcc, 0x83, 0x3c, + 0x30, 0xfc, 0x24, 0x9a, 0x1b, 0xa4, 0xc3, 0x4c, 0x45, 0xe0, 0xf2, 0x07, 0x3e, 0x2e, 0x55, 0x0e, + 0x97, 0xbb, 0x86, 0xa2, 0x9a, 0x0c, 0x96, 0xea, 0x10, 0xb0, 0x20, 0x38, 0x5d, 0x5b, 0x6f, 0x54, + 0x6a, 0xd5, 0xe6, 0x46, 0xbd, 0xbc, 0xd8, 0x5c, 0xf0, 0xc0, 0xa9, 0x17, 0x64, 0xf4, 0x25, 0x09, + 0x26, 0x28, 0x5b, 0x36, 0x7a, 0x6a, 0x00, 0xc1, 0x40, 0x87, 0x50, 0xf4, 0x66, 0xe1, 0xf0, 0x0e, + 0xbe, 0x20, 0x58, 0x39, 0x11, 0xfd, 0xd4, 0xb3, 0x61, 0x82, 0x82, 0xec, 0xad, 0x68, 0x9d, 0x8d, + 0xe8, 0xa5, 0x18, 0x19, 0xd5, 0xcb, 0x2e, 0x18, 0xea, 0x61, 0x00, 0x1b, 0xe9, 0x8f, 0x2c, 0xcf, + 0xcf, 0x52, 0x33, 0xf8, 0xa2, 0xee, 0x6c, 0x13, 0x7f, 0x51, 0xf4, 0x3d, 0x22, 0xcb, 0x8b, 0xb7, + 0x42, 0x6e, 0xcf, 0xcd, 0x3d, 0xc0, 0xf7, 0x96, 0x66, 0x42, 0xbf, 0x20, 0x1c, 0x59, 0x94, 0xd3, + 0x4f, 0x9f, 0xa7, 0x08, 0x70, 0xd6, 0x20, 0xdb, 0xd1, 0x6d, 0x87, 0x8d, 0x1f, 0x77, 0x26, 0x22, + 0xe4, 0x3d, 0x54, 0x1c, 0xbc, 0xa3, 0x12, 0x32, 0xe8, 0x01, 0x98, 0x09, 0xa7, 0x0a, 0xf8, 0x1f, + 0x9f, 0x81, 0x09, 0x76, 0x2e, 0x8e, 0x2d, 0xb1, 0x7a, 0xaf, 0x82, 0xcb, 0x9a, 0x42, 0xb5, 0x4d, + 0x5f, 0x07, 0xfe, 0xef, 0xe3, 0x30, 0xb1, 0xa2, 0xdb, 0x8e, 0x69, 0xed, 0xa3, 0xc7, 0x32, 0x30, + 0x71, 0x01, 0x5b, 0xb6, 0x6e, 0x1a, 0x07, 0x5c, 0x0d, 0xce, 0xc1, 0x74, 0xd7, 0xc2, 0x7b, 0xba, + 0xb9, 0x6b, 0x07, 0x8b, 0x33, 0xe1, 0x24, 0x05, 0xc1, 0xa4, 0xb6, 0xeb, 0x6c, 0x9b, 0x56, 0x10, + 0x4e, 0xc3, 0x7b, 0x57, 0xce, 0x02, 0xd0, 0xe7, 0xaa, 0xb6, 0x83, 0x99, 0x03, 0x45, 0x28, 0x45, + 0x51, 0x20, 0xeb, 0xe8, 0x3b, 0x98, 0xc5, 0xd7, 0x25, 0xcf, 0xae, 0x80, 0x49, 0xac, 0x3a, 0x16, + 0x13, 0x50, 0x56, 0xbd, 0x57, 0xf4, 0x29, 0x19, 0xa6, 0x97, 0xb1, 0xc3, 0x58, 0xb5, 0xd1, 0x4b, + 0x33, 0x42, 0x57, 0x5a, 0xb8, 0x63, 0x6c, 0x47, 0xb3, 0xbd, 0xff, 0xfc, 0x25, 0x58, 0x3e, 0x31, + 0x08, 0xf6, 0x2b, 0x87, 0x23, 0x7d, 0x93, 0xc8, 0x6f, 0x4e, 0x85, 0x3a, 0x96, 0xb2, 0xcc, 0x6c, + 0x13, 0xe4, 0xe0, 0x07, 0xf4, 0x0e, 0x49, 0xf4, 0xd4, 0x34, 0x93, 0xfd, 0x7c, 0xa8, 0x3e, 0x91, + 0xdd, 0xd1, 0xe4, 0x1e, 0xcb, 0x71, 0x20, 0x88, 0x7b, 0x98, 0x12, 0x23, 0xa3, 0xfa, 0xb9, 0x05, + 0xcf, 0x5b, 0x0f, 0xe6, 0x24, 0x7d, 0x6d, 0xfc, 0x9a, 0x0c, 0xd3, 0xf5, 0x6d, 0xf3, 0x8a, 0x27, + 0xc7, 0xef, 0x17, 0x03, 0xf6, 0x3a, 0x98, 0xda, 0xeb, 0x01, 0x35, 0x48, 0x88, 0xbe, 0x64, 0x1e, + 0xbd, 0x48, 0x4e, 0x0a, 0x53, 0x88, 0xb9, 0x91, 0x5f, 0x01, 0xaf, 0x3c, 0x0b, 0x26, 0x18, 0xd7, + 0x6c, 0xc9, 0x25, 0x1e, 0x60, 0x2f, 0x73, 0xb8, 0x82, 0x59, 0xbe, 0x82, 0xc9, 0x90, 0x8f, 0xae, + 0x5c, 0xfa, 0xc8, 0xff, 0xb1, 0x44, 0xa2, 0x6d, 0x78, 0xc0, 0x97, 0x46, 0x00, 0x3c, 0xfa, 0x7a, + 0x46, 0x74, 0x61, 0xd2, 0x97, 0x80, 0xcf, 0xc1, 0xa1, 0xae, 0xab, 0x19, 0x48, 0x2e, 0x7d, 0x79, + 0xfe, 0x7c, 0x16, 0x66, 0x16, 0xf5, 0xcd, 0x4d, 0xbf, 0x93, 0x7c, 0x99, 0x60, 0x27, 0x19, 0xed, + 0x0e, 0xe0, 0xda, 0xb9, 0xbb, 0x96, 0x85, 0x0d, 0xaf, 0x52, 0xac, 0x39, 0xf5, 0xa4, 0x2a, 0x37, + 0xc3, 0x71, 0x6f, 0x5c, 0x08, 0x77, 0x94, 0x53, 0x6a, 0x6f, 0x32, 0xfa, 0xaa, 0xf0, 0xae, 0x96, + 0x27, 0xd1, 0x70, 0x95, 0x22, 0x1a, 0xe0, 0xdd, 0x30, 0xbb, 0x4d, 0x73, 0x93, 0xa9, 0xbf, 0xd7, + 0x59, 0x9e, 0xee, 0x89, 0x66, 0xbc, 0x86, 0x6d, 0x5b, 0xdb, 0xc2, 0x2a, 0x9f, 0xb9, 0xa7, 0xf9, + 0xca, 0x49, 0xee, 0xe6, 0x12, 0xdb, 0x20, 0x13, 0xa8, 0xc9, 0x18, 0xb4, 0xe3, 0x3c, 0x64, 0x97, + 0xf4, 0x0e, 0x46, 0x3f, 0x26, 0xc1, 0x94, 0x8a, 0x5b, 0xa6, 0xd1, 0x72, 0xdf, 0x42, 0xce, 0x41, + 0xff, 0x98, 0x11, 0xbd, 0x93, 0xd2, 0xa5, 0x33, 0xef, 0xd3, 0x88, 0x68, 0x37, 0x62, 0x77, 0x4f, + 0xc6, 0x92, 0x1a, 0xc3, 0x0d, 0x22, 0xee, 0xd4, 0x63, 0x73, 0xb3, 0x63, 0x6a, 0xdc, 0xe2, 0x57, + 0xaf, 0x29, 0x74, 0x0b, 0x14, 0xbc, 0x43, 0x2c, 0xa6, 0xb3, 0xae, 0x1b, 0x86, 0x7f, 0x4a, 0xfa, + 0x40, 0x3a, 0xbf, 0x6f, 0x1b, 0x1b, 0x68, 0x86, 0xd4, 0x9d, 0x95, 0x1e, 0xa1, 0xd9, 0x37, 0xc1, + 0xdc, 0xa5, 0x7d, 0x07, 0xdb, 0x2c, 0x17, 0x2b, 0x36, 0xab, 0xf6, 0xa4, 0x86, 0xc2, 0x44, 0xc7, + 0x05, 0xa4, 0x89, 0x29, 0x30, 0x99, 0xa8, 0x57, 0x86, 0x98, 0x01, 0x9e, 0x84, 0x42, 0xb5, 0xb6, + 0x58, 0x26, 0xbe, 0x6a, 0x9e, 0xf7, 0xcf, 0x16, 0x7a, 0xb9, 0x0c, 0x33, 0xc4, 0x99, 0xc4, 0x43, + 0xe1, 0x06, 0x81, 0xf9, 0x08, 0x7a, 0x5c, 0xd8, 0x8f, 0x8d, 0x54, 0x39, 0x5c, 0x40, 0xb4, 0xa0, + 0x37, 0xf5, 0x4e, 0xaf, 0xa0, 0x73, 0x6a, 0x4f, 0x6a, 0x1f, 0x40, 0xe4, 0xbe, 0x80, 0xfc, 0xa6, + 0x90, 0x33, 0xdb, 0x20, 0xee, 0x8e, 0x0a, 0x95, 0xdf, 0x92, 0x61, 0xda, 0x9d, 0xa4, 0x78, 0xa0, + 0xd4, 0x38, 0x50, 0x4c, 0xa3, 0xb3, 0x1f, 0x2c, 0x8b, 0x78, 0xaf, 0x89, 0x1a, 0xc9, 0x5f, 0x0a, + 0xcf, 0xdc, 0x89, 0x88, 0x42, 0xbc, 0x8c, 0x09, 0xbf, 0xf7, 0x08, 0xcd, 0xe7, 0x07, 0x30, 0x77, + 0x54, 0xf0, 0x7d, 0x21, 0x07, 0xf9, 0x8d, 0x2e, 0x41, 0xee, 0x17, 0x64, 0x91, 0x90, 0xeb, 0x07, + 0x0e, 0x32, 0xb8, 0x66, 0x56, 0xc7, 0x6c, 0x69, 0x9d, 0xf5, 0xe0, 0x44, 0x58, 0x90, 0xa0, 0xdc, + 0xc5, 0x7c, 0x1b, 0xe9, 0x79, 0xc1, 0x9b, 0x62, 0xa3, 0x91, 0x13, 0x19, 0x85, 0x0e, 0x8d, 0xdc, + 0x0a, 0x27, 0xda, 0xba, 0xad, 0x5d, 0xea, 0xe0, 0xb2, 0xd1, 0xb2, 0xf6, 0xa9, 0x38, 0xd8, 0xb4, + 0xea, 0xc0, 0x07, 0xe5, 0x1e, 0xc8, 0xd9, 0xce, 0x7e, 0x87, 0xce, 0x13, 0xc3, 0x67, 0x4c, 0x22, + 0x8b, 0xaa, 0xbb, 0xd9, 0x55, 0xfa, 0x57, 0xd8, 0x45, 0x69, 0x42, 0xf0, 0x42, 0xea, 0x67, 0x40, + 0xde, 0xb4, 0xf4, 0x2d, 0x9d, 0x5e, 0x30, 0x34, 0x77, 0x20, 0xe8, 0x1e, 0x35, 0x05, 0x6a, 0x24, + 0x8b, 0xca, 0xb2, 0x2a, 0xcf, 0x82, 0x29, 0x7d, 0x47, 0xdb, 0xc2, 0x0f, 0xea, 0x06, 0x3d, 0x92, + 0x38, 0x77, 0xc7, 0x99, 0x03, 0xc7, 0x67, 0xd8, 0x77, 0x35, 0xc8, 0x8a, 0xde, 0x23, 0x89, 0x46, + 0x06, 0x22, 0x75, 0xa3, 0xa0, 0x8e, 0xe5, 0x62, 0x6e, 0xf4, 0x1a, 0xa1, 0x98, 0x3d, 0xd1, 0x6c, + 0xa5, 0x3f, 0x78, 0x7f, 0x52, 0x82, 0xc9, 0x45, 0xf3, 0x8a, 0x41, 0x14, 0xfd, 0x4e, 0x31, 0x5b, + 0xb7, 0xcf, 0x21, 0x47, 0xfe, 0xde, 0xcb, 0xd8, 0x13, 0x0d, 0xa4, 0xb6, 0x5e, 0x91, 0x11, 0x30, + 0xc4, 0xb6, 0x1c, 0xc1, 0xdb, 0x08, 0xe3, 0xca, 0x49, 0x5f, 0xae, 0x7f, 0x22, 0x43, 0x76, 0xd1, + 0x32, 0xbb, 0xe8, 0xd7, 0x33, 0x09, 0x5c, 0x16, 0xda, 0x96, 0xd9, 0x6d, 0x90, 0xeb, 0xc4, 0x82, + 0x63, 0x1c, 0xe1, 0x34, 0xe5, 0x4e, 0x98, 0xec, 0x9a, 0xb6, 0xee, 0x78, 0xd3, 0x88, 0xb9, 0x3b, + 0x9e, 0xd4, 0xb7, 0x35, 0xaf, 0xb3, 0x4c, 0xaa, 0x9f, 0xdd, 0xed, 0xb5, 0x89, 0x08, 0x5d, 0xb9, + 0xb8, 0x62, 0xf4, 0xae, 0x54, 0xeb, 0x49, 0x45, 0xaf, 0x08, 0x23, 0xf9, 0x1c, 0x1e, 0xc9, 0x27, + 0xf7, 0x91, 0xb0, 0x65, 0x76, 0x47, 0xb2, 0xc9, 0xf8, 0x2a, 0x1f, 0xd5, 0x7b, 0x39, 0x54, 0x6f, + 0x11, 0x2a, 0x33, 0x7d, 0x44, 0xdf, 0x93, 0x05, 0x20, 0x66, 0xc6, 0x86, 0x3b, 0x01, 0x12, 0xb3, + 0xb1, 0x7e, 0x24, 0x1b, 0x92, 0x65, 0x91, 0x97, 0xe5, 0x53, 0x23, 0xac, 0x18, 0x42, 0x3e, 0x42, + 0xa2, 0x45, 0xc8, 0xed, 0xba, 0x9f, 0x99, 0x44, 0x05, 0x49, 0x90, 0x57, 0x95, 0xfe, 0x89, 0xfe, + 0x38, 0x03, 0x39, 0x92, 0xa0, 0x9c, 0x05, 0x20, 0x03, 0x3b, 0x3d, 0x10, 0x94, 0x21, 0x43, 0x78, + 0x28, 0x85, 0x68, 0xab, 0xde, 0x66, 0x9f, 0xa9, 0xc9, 0x1c, 0x24, 0xb8, 0x7f, 0x93, 0xe1, 0x9e, + 0xd0, 0x62, 0x06, 0x40, 0x28, 0xc5, 0xfd, 0x9b, 0xbc, 0xad, 0xe2, 0x4d, 0x1a, 0xe9, 0x39, 0xab, + 0x06, 0x09, 0xfe, 0xdf, 0xab, 0xfe, 0xfd, 0x60, 0xde, 0xdf, 0x24, 0xc5, 0x9d, 0x0c, 0x13, 0xb5, + 0x5c, 0x08, 0x8a, 0xc8, 0x93, 0x4c, 0xbd, 0xc9, 0xe8, 0xf5, 0xbe, 0xda, 0x2c, 0x72, 0x6a, 0x73, + 0x7b, 0x02, 0xf1, 0xa6, 0xaf, 0x3c, 0x9f, 0xcb, 0xc1, 0x54, 0xd5, 0x6c, 0x33, 0xdd, 0x09, 0x4d, + 0x18, 0x3f, 0x9c, 0x4b, 0x34, 0x61, 0xf4, 0x69, 0x44, 0x28, 0xc8, 0xfd, 0xbc, 0x82, 0x88, 0x51, + 0x08, 0xeb, 0x87, 0xb2, 0x00, 0x79, 0xa2, 0xbd, 0x07, 0x2f, 0x9e, 0x8a, 0x23, 0x41, 0x44, 0xab, + 0xb2, 0x3f, 0xff, 0xc3, 0xe9, 0xd8, 0x7f, 0x85, 0x1c, 0xa9, 0x60, 0xcc, 0xee, 0x0e, 0x5f, 0x51, + 0x29, 0xbe, 0xa2, 0x72, 0x7c, 0x45, 0xb3, 0xbd, 0x15, 0x4d, 0xb2, 0x0e, 0x10, 0xa5, 0x21, 0xe9, + 0xeb, 0xf8, 0x3f, 0x4c, 0x00, 0x54, 0xb5, 0x3d, 0x7d, 0x8b, 0xee, 0x0e, 0x7f, 0xca, 0x9b, 0xff, + 0xb0, 0x7d, 0xdc, 0xff, 0x16, 0x1a, 0x08, 0xef, 0x84, 0x09, 0x36, 0xee, 0xb1, 0x8a, 0x5c, 0xcf, + 0x55, 0x24, 0xa0, 0x42, 0xcd, 0xd2, 0x47, 0x1c, 0xd5, 0xcb, 0xcf, 0xdd, 0x91, 0x2b, 0xf5, 0xdc, + 0x91, 0xdb, 0x7f, 0x0f, 0x22, 0xe2, 0xe6, 0x5c, 0xf4, 0x4e, 0x61, 0x8f, 0xfe, 0x10, 0x3f, 0xa1, + 0x1a, 0x45, 0x34, 0xc1, 0x67, 0xc0, 0x84, 0xe9, 0x6f, 0x68, 0xcb, 0x91, 0xeb, 0x60, 0x15, 0x63, + 0xd3, 0x54, 0xbd, 0x9c, 0x82, 0x9b, 0x5f, 0x42, 0x7c, 0x8c, 0xe5, 0xd0, 0xcc, 0xe9, 0x65, 0x2f, + 0x6a, 0x96, 0x5b, 0x8f, 0x8b, 0xba, 0xb3, 0xbd, 0xaa, 0x1b, 0x97, 0x6d, 0xf4, 0x9f, 0xc5, 0x2c, + 0xc8, 0x10, 0xfe, 0x52, 0x32, 0xfc, 0xf9, 0x98, 0x1d, 0x75, 0x1e, 0xb5, 0x7b, 0xa2, 0xa8, 0xf4, + 0xe7, 0x36, 0x02, 0xc0, 0xbb, 0x20, 0x4f, 0x19, 0x65, 0x9d, 0xe8, 0xf9, 0x48, 0xfc, 0x7c, 0x4a, + 0x2a, 0xfb, 0x03, 0xbd, 0xc3, 0xc7, 0xf1, 0x02, 0x87, 0xe3, 0xc2, 0xa1, 0x38, 0x4b, 0x1d, 0xd2, + 0xf3, 0x4f, 0x87, 0x09, 0x26, 0x69, 0x65, 0x2e, 0xdc, 0x8a, 0x0b, 0xc7, 0x14, 0x80, 0xfc, 0x9a, + 0xb9, 0x87, 0x1b, 0x66, 0x21, 0xe3, 0x3e, 0xbb, 0xfc, 0x35, 0xcc, 0x82, 0x84, 0x5e, 0x3d, 0x09, + 0x93, 0x7e, 0xb8, 0xa2, 0x4f, 0x4a, 0x50, 0x28, 0x59, 0x58, 0x73, 0xf0, 0x92, 0x65, 0xee, 0xd0, + 0x1a, 0x89, 0x7b, 0x87, 0xfe, 0x8c, 0xb0, 0x8b, 0x87, 0x1f, 0x46, 0xa8, 0xb7, 0xb0, 0x08, 0x2c, + 0xe9, 0x22, 0xa4, 0xe4, 0x2d, 0x42, 0xa2, 0x37, 0x09, 0xb9, 0x7c, 0x88, 0x96, 0x92, 0x7e, 0x53, + 0xfb, 0xa8, 0x04, 0xb9, 0x52, 0xc7, 0x34, 0x70, 0xf8, 0x08, 0xd3, 0xc0, 0xb3, 0x32, 0xfd, 0x77, + 0x22, 0xd0, 0xf3, 0x25, 0x51, 0x5b, 0x23, 0x10, 0x80, 0x5b, 0xb6, 0xa0, 0x6c, 0xc5, 0x06, 0xa9, + 0x58, 0xd2, 0xe9, 0x0b, 0xf4, 0x4b, 0x12, 0x4c, 0xd1, 0xb8, 0x38, 0xc5, 0x4e, 0x07, 0x3d, 0x29, + 0x10, 0x6a, 0x9f, 0x90, 0x4f, 0xe8, 0x37, 0x85, 0x5d, 0xf4, 0xfd, 0x5a, 0xf9, 0xb4, 0x13, 0x04, + 0x08, 0x4a, 0xe6, 0x31, 0x2e, 0xb6, 0x97, 0x36, 0x90, 0xa1, 0xf4, 0x45, 0xfd, 0xe7, 0x92, 0x6b, + 0x00, 0x18, 0x97, 0xd7, 0x2d, 0xbc, 0xa7, 0xe3, 0x2b, 0xe8, 0xda, 0x40, 0xd8, 0x07, 0x83, 0x7e, + 0xfc, 0x8a, 0xf0, 0x22, 0x4e, 0x88, 0x64, 0xe4, 0x56, 0xd6, 0x74, 0x27, 0xc8, 0xc4, 0x7a, 0xf1, + 0xde, 0x48, 0x2c, 0x21, 0x32, 0x6a, 0x38, 0xbb, 0xe0, 0x9a, 0x4d, 0x34, 0x17, 0xe9, 0x0b, 0xf6, + 0x7d, 0x13, 0x30, 0xb9, 0x61, 0xd8, 0xdd, 0x8e, 0x66, 0x6f, 0xa3, 0x6f, 0xc8, 0x90, 0xa7, 0xd7, + 0x9d, 0xa1, 0xef, 0xe2, 0x62, 0x0b, 0xfc, 0xc0, 0x2e, 0xb6, 0x3c, 0x17, 0x1c, 0xfa, 0xd2, 0xff, + 0x36, 0x76, 0xf4, 0x1e, 0x59, 0x74, 0x92, 0xea, 0x15, 0x1a, 0xba, 0xf7, 0xbe, 0xff, 0x71, 0xf6, + 0xae, 0xde, 0x72, 0x76, 0x2d, 0xff, 0x6e, 0xef, 0xa7, 0x89, 0x51, 0x59, 0xa7, 0x7f, 0xa9, 0xfe, + 0xef, 0x48, 0x83, 0x09, 0x96, 0x78, 0x60, 0x3b, 0xe9, 0xe0, 0xf9, 0xdb, 0xd3, 0x90, 0xd7, 0x2c, + 0x47, 0xb7, 0x1d, 0xb6, 0xc1, 0xca, 0xde, 0xdc, 0xee, 0x92, 0x3e, 0x6d, 0x58, 0x1d, 0x2f, 0x0a, + 0x89, 0x9f, 0x80, 0x7e, 0x4b, 0x68, 0xfe, 0x18, 0x5f, 0xf3, 0x64, 0x90, 0x3f, 0x38, 0xc4, 0x1a, + 0xf5, 0xd5, 0x70, 0x95, 0x5a, 0x6c, 0x94, 0x9b, 0x34, 0x68, 0x85, 0x1f, 0x9f, 0xa2, 0x8d, 0xde, + 0x2e, 0x87, 0xd6, 0xef, 0xf6, 0xb9, 0x31, 0x82, 0x49, 0x31, 0x18, 0x23, 0xfc, 0x84, 0x98, 0xdd, + 0x6a, 0x6e, 0x11, 0x56, 0x16, 0x5f, 0x84, 0xfd, 0x35, 0xe1, 0xdd, 0x24, 0x5f, 0x94, 0x03, 0xd6, + 0x00, 0xe3, 0xae, 0x43, 0x7a, 0xaf, 0xd0, 0xce, 0xd0, 0xa0, 0x92, 0x8e, 0x10, 0xb6, 0x5f, 0x9e, + 0x80, 0x89, 0x65, 0xad, 0xd3, 0xc1, 0xd6, 0xbe, 0x3b, 0x24, 0x15, 0x3c, 0x0e, 0xd7, 0x34, 0x43, + 0xdf, 0xc4, 0xb6, 0x13, 0xdf, 0x59, 0xbe, 0x53, 0x38, 0xd4, 0x2e, 0x2b, 0x63, 0xbe, 0x97, 0x7e, + 0x84, 0xcc, 0x6f, 0x83, 0xac, 0x6e, 0x6c, 0x9a, 0xac, 0xcb, 0xec, 0x5d, 0xb5, 0xf7, 0x7e, 0x26, + 0x53, 0x17, 0x92, 0x51, 0x30, 0xda, 0xae, 0x20, 0x17, 0xe9, 0xf7, 0x9c, 0xbf, 0x91, 0x85, 0x59, + 0x8f, 0x89, 0x8a, 0xd1, 0xc6, 0x8f, 0x84, 0x97, 0x62, 0x5e, 0x9e, 0x15, 0x3d, 0x0e, 0xd6, 0x5b, + 0x1f, 0x42, 0x2a, 0x42, 0xa4, 0x0d, 0x80, 0x96, 0xe6, 0xe0, 0x2d, 0xd3, 0xd2, 0xfd, 0xfe, 0xf0, + 0x99, 0x49, 0xa8, 0x95, 0xe8, 0xdf, 0xfb, 0x6a, 0x88, 0x8e, 0x72, 0x0f, 0x4c, 0x63, 0xff, 0xfc, + 0xbd, 0xb7, 0x54, 0x13, 0x8b, 0x57, 0x38, 0x3f, 0xfa, 0x73, 0xa1, 0x53, 0x67, 0x22, 0xd5, 0x4c, + 0x86, 0x59, 0x73, 0xb8, 0x36, 0xb4, 0x51, 0x5d, 0x2b, 0xaa, 0xf5, 0x95, 0xe2, 0xea, 0x6a, 0xa5, + 0xba, 0xec, 0x07, 0x7e, 0x51, 0x60, 0x6e, 0xb1, 0x76, 0xb1, 0x1a, 0x8a, 0xcc, 0x93, 0x45, 0xeb, + 0x30, 0xe9, 0xc9, 0xab, 0x9f, 0x2f, 0x66, 0x58, 0x66, 0xcc, 0x17, 0x33, 0x94, 0xe4, 0x1a, 0x67, + 0x7a, 0xcb, 0x77, 0xd0, 0x21, 0xcf, 0xe8, 0x0f, 0x35, 0xc8, 0xd1, 0x68, 0x91, 0x6f, 0x25, 0xdb, + 0x80, 0xdd, 0x8e, 0xd6, 0xc2, 0x68, 0x27, 0x81, 0x35, 0xee, 0xdd, 0xfd, 0x20, 0x1d, 0xb8, 0xfb, + 0x81, 0x3c, 0x32, 0xab, 0xef, 0x64, 0xbf, 0x75, 0x7c, 0x95, 0x66, 0xe1, 0x0f, 0x68, 0xc5, 0xee, + 0xae, 0xd0, 0xe5, 0x7f, 0xc6, 0x66, 0x84, 0x4a, 0x46, 0xf3, 0x94, 0xcc, 0x12, 0x15, 0xdb, 0x87, + 0x89, 0xe3, 0x68, 0x0c, 0xf7, 0x93, 0x67, 0x21, 0x57, 0xef, 0x76, 0x74, 0x07, 0xfd, 0x9c, 0x34, + 0x12, 0xcc, 0xe8, 0x7d, 0x1d, 0xf2, 0xc0, 0xfb, 0x3a, 0x82, 0x5d, 0xd7, 0xac, 0xc0, 0xae, 0x6b, + 0x03, 0x3f, 0xe2, 0xf0, 0xbb, 0xae, 0x77, 0xb2, 0xe0, 0x6d, 0x74, 0xcf, 0xf6, 0xc9, 0x7d, 0x44, + 0x4a, 0xaa, 0xd5, 0x27, 0x2a, 0xe0, 0xf9, 0xa7, 0xb3, 0xe0, 0x64, 0x00, 0xf9, 0x85, 0x5a, 0xa3, + 0x51, 0x5b, 0x2b, 0x1c, 0x23, 0x51, 0x6d, 0x6a, 0xeb, 0x34, 0x54, 0x4c, 0xa5, 0x5a, 0x2d, 0xab, + 0x05, 0x89, 0x84, 0x4b, 0xab, 0x34, 0x56, 0xcb, 0x05, 0x99, 0x0f, 0xde, 0x1e, 0x6b, 0x7e, 0xf3, + 0x65, 0xa7, 0xa9, 0x5e, 0x62, 0x86, 0x78, 0x34, 0x3f, 0xe9, 0x2b, 0xd7, 0x4f, 0xcb, 0x90, 0x5b, + 0xc3, 0xd6, 0x16, 0x46, 0x3f, 0x90, 0x60, 0x93, 0x6f, 0x53, 0xb7, 0x6c, 0x1a, 0x5c, 0x2e, 0xd8, + 0xe4, 0x0b, 0xa7, 0x29, 0x37, 0xc2, 0xac, 0x8d, 0x5b, 0xa6, 0xd1, 0xf6, 0x32, 0xd1, 0xfe, 0x88, + 0x4f, 0xe4, 0x2f, 0xce, 0x17, 0x80, 0x8c, 0x30, 0x3a, 0x92, 0x9d, 0xba, 0x24, 0xc0, 0xf4, 0x2b, + 0x35, 0x7d, 0x60, 0xbe, 0x2a, 0xbb, 0x3f, 0x75, 0xf7, 0xd1, 0x2b, 0x85, 0x77, 0x5f, 0x6f, 0x85, + 0x3c, 0x51, 0x53, 0x6f, 0x8c, 0xee, 0xdf, 0x1f, 0xb3, 0x3c, 0xca, 0x02, 0x9c, 0xb0, 0x71, 0x07, + 0xb7, 0x1c, 0xdc, 0x76, 0x9b, 0xae, 0x3a, 0xb0, 0x53, 0x38, 0x98, 0x1d, 0xfd, 0x69, 0x18, 0xc0, + 0xbb, 0x79, 0x00, 0x6f, 0xea, 0x23, 0x4a, 0xb7, 0x42, 0xd1, 0xb6, 0xb2, 0x5b, 0x8d, 0x7a, 0xc7, + 0xf4, 0x17, 0xc5, 0xbd, 0x77, 0xf7, 0xdb, 0xb6, 0xb3, 0xd3, 0x21, 0xdf, 0xd8, 0x01, 0x03, 0xef, + 0x5d, 0x99, 0x87, 0x09, 0xcd, 0xd8, 0x27, 0x9f, 0xb2, 0x31, 0xb5, 0xf6, 0x32, 0xa1, 0x57, 0xfb, + 0xc8, 0xdf, 0xc7, 0x21, 0xff, 0x54, 0x31, 0x76, 0xd3, 0x07, 0xfe, 0x87, 0x27, 0x20, 0xb7, 0xae, + 0xd9, 0x0e, 0x46, 0xff, 0x97, 0x2c, 0x8a, 0xfc, 0x4d, 0x30, 0xb7, 0x69, 0xb6, 0x76, 0x6d, 0xdc, + 0xe6, 0x1b, 0x65, 0x4f, 0xea, 0x28, 0x30, 0x57, 0x6e, 0x81, 0x82, 0x97, 0xc8, 0xc8, 0x7a, 0xdb, + 0xf0, 0x07, 0xd2, 0x49, 0x28, 0x70, 0x7b, 0x5d, 0xb3, 0x9c, 0xda, 0x26, 0x8d, 0x61, 0xed, 0x85, + 0x02, 0x0f, 0x27, 0x72, 0xd0, 0xe7, 0x63, 0xa0, 0x9f, 0x88, 0x86, 0x7e, 0x52, 0x00, 0x7a, 0xa5, + 0x08, 0x93, 0x9b, 0x7a, 0x07, 0x93, 0x1f, 0xa6, 0xc8, 0x0f, 0xfd, 0xc6, 0x24, 0x22, 0x7b, 0x7f, + 0x4c, 0x5a, 0xd2, 0x3b, 0x58, 0xf5, 0x7f, 0xf3, 0x26, 0x32, 0x10, 0x4c, 0x64, 0x56, 0xa9, 0x3f, + 0xad, 0x6b, 0x78, 0x19, 0xda, 0x0e, 0xf6, 0x16, 0xdf, 0x0c, 0x76, 0xb8, 0xa5, 0xad, 0x39, 0x1a, + 0x01, 0x63, 0x46, 0x25, 0xcf, 0xbc, 0x5f, 0x88, 0xdc, 0xeb, 0x17, 0xf2, 0x42, 0x39, 0x59, 0x8f, + 0xe8, 0x31, 0x1b, 0xd1, 0xa2, 0x2e, 0x79, 0x00, 0x51, 0x4b, 0xd1, 0x7f, 0x77, 0x81, 0x69, 0x69, + 0x16, 0x76, 0xd6, 0xc3, 0x9e, 0x18, 0x39, 0x95, 0x4f, 0x24, 0xae, 0x7c, 0x76, 0x5d, 0xdb, 0xc1, + 0xa4, 0xb0, 0x92, 0xfb, 0x8d, 0xb9, 0x68, 0x1d, 0x48, 0x0f, 0xfa, 0xdf, 0xdc, 0xa8, 0xfb, 0xdf, + 0x7e, 0x75, 0x4c, 0xbf, 0x19, 0xbe, 0x36, 0x0b, 0x72, 0x69, 0xd7, 0x79, 0x42, 0x77, 0xbf, 0xdf, + 0x14, 0xf6, 0x73, 0x61, 0xfd, 0x59, 0xe4, 0x4d, 0xf9, 0x63, 0xea, 0x7d, 0x13, 0x6a, 0x89, 0x98, + 0x3f, 0x4d, 0x54, 0xdd, 0xd2, 0xd7, 0x91, 0x5f, 0x97, 0x7d, 0x07, 0xcb, 0x47, 0x33, 0x87, 0x37, + 0xcd, 0x11, 0xed, 0x9f, 0x42, 0x3d, 0x83, 0xff, 0xee, 0x75, 0x3c, 0x59, 0x2e, 0x56, 0x1f, 0xd9, + 0x5e, 0x27, 0xa2, 0x9c, 0x51, 0xe9, 0x0b, 0xfa, 0x79, 0x61, 0xb7, 0x73, 0x2a, 0xb6, 0x58, 0x57, + 0xc2, 0x64, 0x36, 0x95, 0xd8, 0x6d, 0xa8, 0x31, 0xc5, 0x8e, 0xe1, 0x26, 0x8d, 0xb0, 0xab, 0x60, + 0xf1, 0xd0, 0x88, 0xa1, 0xd7, 0x08, 0x6f, 0x47, 0xd1, 0x6a, 0x0f, 0x58, 0x2f, 0x4c, 0x26, 0x6f, + 0xb1, 0xcd, 0xaa, 0xd8, 0x82, 0xd3, 0x97, 0xf8, 0x97, 0x65, 0xc8, 0xd3, 0x2d, 0x48, 0xf4, 0xc6, + 0x4c, 0x82, 0x6b, 0xe4, 0x1d, 0xde, 0x85, 0xd0, 0x7f, 0x4f, 0xb2, 0xe6, 0xc0, 0xb9, 0x1a, 0x66, + 0x13, 0xb9, 0x1a, 0xf2, 0xe7, 0x38, 0x05, 0xda, 0x11, 0xad, 0x63, 0xca, 0xd3, 0xc9, 0x24, 0x2d, + 0xac, 0x2f, 0x43, 0xe9, 0xe3, 0xfd, 0xa3, 0x39, 0x98, 0xa1, 0x45, 0x5f, 0xd4, 0xdb, 0x5b, 0xd8, + 0x41, 0x6f, 0x97, 0xbe, 0x75, 0x50, 0x57, 0xaa, 0x30, 0x73, 0x85, 0xb0, 0xbd, 0xaa, 0xed, 0x9b, + 0xbb, 0x0e, 0x5b, 0xb9, 0xb8, 0x25, 0x76, 0xdd, 0x83, 0xd6, 0x73, 0x9e, 0xfe, 0xa1, 0x72, 0xff, + 0xbb, 0x32, 0xa6, 0x0b, 0xfe, 0xd4, 0x81, 0x2b, 0x4f, 0x8c, 0xac, 0x70, 0x92, 0x72, 0x1a, 0xf2, + 0x7b, 0x3a, 0xbe, 0x52, 0x69, 0x33, 0xeb, 0x96, 0xbd, 0xa1, 0xdf, 0x15, 0xde, 0xb7, 0x0d, 0xc3, + 0xcd, 0x78, 0x49, 0x57, 0x0b, 0xc5, 0x76, 0x6f, 0x07, 0xb2, 0x35, 0x86, 0x33, 0xc5, 0xfc, 0x6d, + 0xa3, 0xa5, 0x04, 0x8a, 0x18, 0x65, 0x38, 0xf3, 0xa1, 0x3c, 0x62, 0x4f, 0xac, 0x50, 0x01, 0x8c, + 0xf8, 0x22, 0x52, 0xb1, 0xf8, 0x12, 0x03, 0x8a, 0x4e, 0x5f, 0xf2, 0xaf, 0x97, 0x61, 0xaa, 0x8e, + 0x9d, 0x25, 0x1d, 0x77, 0xda, 0x36, 0xb2, 0x0e, 0x6f, 0x1a, 0xdd, 0x06, 0xf9, 0x4d, 0x42, 0x6c, + 0xd0, 0xb9, 0x05, 0x96, 0x0d, 0xbd, 0x56, 0x12, 0xdd, 0x11, 0x66, 0xab, 0x6f, 0x1e, 0xb7, 0x23, + 0x81, 0x49, 0xcc, 0xa3, 0x37, 0xbe, 0xe4, 0x31, 0x04, 0xb6, 0x95, 0x61, 0x86, 0x5d, 0x4f, 0x58, + 0xec, 0xe8, 0x5b, 0x06, 0xda, 0x1d, 0x41, 0x0b, 0x51, 0x6e, 0x87, 0x9c, 0xe6, 0x52, 0x63, 0x5b, + 0xaf, 0xa8, 0x6f, 0xe7, 0x49, 0xca, 0x53, 0x69, 0xc6, 0x04, 0x61, 0x24, 0x03, 0xc5, 0xf6, 0x78, + 0x1e, 0x63, 0x18, 0xc9, 0x81, 0x85, 0xa7, 0x8f, 0xd8, 0x67, 0x65, 0x38, 0xc9, 0x18, 0xb8, 0x80, + 0x2d, 0x47, 0x6f, 0x69, 0x1d, 0x8a, 0xdc, 0x4b, 0x32, 0xa3, 0x80, 0x6e, 0x05, 0x66, 0xf7, 0xc2, + 0x64, 0x19, 0x84, 0xe7, 0xfb, 0x42, 0xc8, 0x31, 0xa0, 0xf2, 0x3f, 0x26, 0x08, 0xc7, 0xc7, 0x49, + 0x95, 0xa3, 0x39, 0xc6, 0x70, 0x7c, 0xc2, 0x4c, 0xa4, 0x0f, 0xf1, 0x2b, 0x58, 0x68, 0x9e, 0xa0, + 0xfb, 0xfc, 0x94, 0x30, 0xb6, 0x1b, 0x30, 0x4d, 0xb0, 0xa4, 0x3f, 0xb2, 0x65, 0x88, 0x18, 0x25, + 0xf6, 0xfb, 0x1d, 0x76, 0x61, 0x98, 0xff, 0xaf, 0x1a, 0xa6, 0x83, 0x2e, 0x02, 0x04, 0x9f, 0xc2, + 0x9d, 0x74, 0x26, 0xaa, 0x93, 0x96, 0xc4, 0x3a, 0xe9, 0x5f, 0x11, 0x0e, 0x96, 0xd2, 0x9f, 0xed, + 0xc3, 0xab, 0x87, 0x58, 0x98, 0x8c, 0xc1, 0xa5, 0xa7, 0xaf, 0x17, 0xaf, 0xce, 0xf6, 0xde, 0x43, + 0xff, 0x81, 0x91, 0xcc, 0xa7, 0xc2, 0xfd, 0x81, 0xdc, 0xd3, 0x1f, 0x1c, 0xc2, 0x92, 0xbe, 0x19, + 0x8e, 0xd3, 0x22, 0x4a, 0x3e, 0x5b, 0x39, 0x1a, 0x0a, 0xa2, 0x27, 0x19, 0x7d, 0x70, 0x08, 0x25, + 0x18, 0x74, 0x49, 0x7e, 0x5c, 0x27, 0x97, 0xcc, 0xd8, 0x4d, 0xaa, 0x20, 0x47, 0x77, 0xb7, 0xfe, + 0x97, 0xb2, 0xd4, 0xda, 0xdd, 0x20, 0x77, 0xba, 0xa1, 0xbf, 0xc8, 0x8e, 0x62, 0x44, 0xb8, 0x1f, + 0xb2, 0xc4, 0xc5, 0x5d, 0x8e, 0x5c, 0xd2, 0x08, 0x8a, 0x0c, 0x2e, 0xdc, 0xc3, 0x8f, 0x38, 0x2b, + 0xc7, 0x54, 0xf2, 0xa7, 0x72, 0x0b, 0x1c, 0xbf, 0xa4, 0xb5, 0x2e, 0x6f, 0x59, 0xe6, 0x2e, 0xb9, + 0xfd, 0xca, 0x64, 0xd7, 0x68, 0x91, 0xeb, 0x08, 0xf9, 0x0f, 0xca, 0x1d, 0x9e, 0xe9, 0x90, 0x1b, + 0x64, 0x3a, 0xac, 0x1c, 0x63, 0xc6, 0x83, 0xf2, 0x74, 0xbf, 0xd3, 0xc9, 0xc7, 0x76, 0x3a, 0x2b, + 0xc7, 0xbc, 0x6e, 0x47, 0x59, 0x84, 0xc9, 0xb6, 0xbe, 0x47, 0xb6, 0xaa, 0xc9, 0xac, 0x6b, 0xd0, + 0xd1, 0xe5, 0x45, 0x7d, 0x8f, 0x6e, 0x6c, 0xaf, 0x1c, 0x53, 0xfd, 0x3f, 0x95, 0x65, 0x98, 0x22, + 0xdb, 0x02, 0x84, 0xcc, 0x64, 0xa2, 0x63, 0xc9, 0x2b, 0xc7, 0xd4, 0xe0, 0x5f, 0xd7, 0xfa, 0xc8, + 0x92, 0xb3, 0x1f, 0xf7, 0x79, 0xdb, 0xed, 0x99, 0x44, 0xdb, 0xed, 0xae, 0x2c, 0xe8, 0x86, 0xfb, + 0x69, 0xc8, 0xb5, 0x88, 0x84, 0x25, 0x26, 0x61, 0xfa, 0xaa, 0xdc, 0x0d, 0xd9, 0x1d, 0xcd, 0xf2, + 0x26, 0xcf, 0x37, 0x0d, 0xa6, 0xbb, 0xa6, 0x59, 0x97, 0x5d, 0x04, 0xdd, 0xbf, 0x16, 0x26, 0x20, + 0x47, 0x04, 0xe7, 0x3f, 0xa0, 0x5f, 0xcf, 0x52, 0x33, 0xa4, 0x64, 0x1a, 0xee, 0xb0, 0xdf, 0x30, + 0xbd, 0x03, 0x32, 0xbf, 0x9b, 0x19, 0x8d, 0x05, 0xd9, 0xf7, 0xe2, 0x76, 0x39, 0xf2, 0xe2, 0xf6, + 0x9e, 0x1b, 0x84, 0xb3, 0xbd, 0x37, 0x08, 0x07, 0xcb, 0x07, 0xb9, 0xc1, 0x8e, 0x2a, 0x7f, 0x3a, + 0x84, 0xe9, 0xd2, 0x2b, 0x88, 0xe8, 0x19, 0x78, 0x47, 0x37, 0x42, 0x75, 0xf6, 0x5e, 0x13, 0x76, + 0x4a, 0x49, 0x8d, 0x9a, 0x01, 0xec, 0xa5, 0xdf, 0x37, 0xfd, 0x6a, 0x16, 0xce, 0xd0, 0x7b, 0xaa, + 0xf7, 0x70, 0xc3, 0xe4, 0xef, 0x9b, 0x44, 0x7f, 0x34, 0x12, 0xa5, 0xe9, 0x33, 0xe0, 0xc8, 0x7d, + 0x07, 0x9c, 0x03, 0x87, 0x94, 0xb3, 0x03, 0x0e, 0x29, 0xe7, 0x92, 0xad, 0x1c, 0xfe, 0x4e, 0x58, + 0x7f, 0xd6, 0x79, 0xfd, 0xb9, 0x2b, 0x02, 0xa0, 0x7e, 0x72, 0x19, 0x89, 0x7d, 0xf3, 0x56, 0x5f, + 0x53, 0xea, 0x9c, 0xa6, 0xdc, 0x37, 0x3c, 0x23, 0xe9, 0x6b, 0xcb, 0x6f, 0x67, 0xe1, 0xaa, 0x80, + 0x99, 0x2a, 0xbe, 0xc2, 0x14, 0xe5, 0x93, 0x23, 0x51, 0x94, 0xe4, 0x31, 0x10, 0xd2, 0xd6, 0x98, + 0x3f, 0x16, 0x3e, 0x3b, 0xd4, 0x0b, 0x94, 0x2f, 0x9b, 0x08, 0x65, 0x39, 0x0d, 0x79, 0xda, 0xc3, + 0x30, 0x68, 0xd8, 0x5b, 0xc2, 0xee, 0x46, 0xec, 0xc4, 0x91, 0x28, 0x6f, 0x63, 0xd0, 0x1f, 0xb6, + 0xae, 0xd1, 0xd8, 0xb5, 0x8c, 0x8a, 0xe1, 0x98, 0xe8, 0x87, 0x46, 0xa2, 0x38, 0xbe, 0x37, 0x9c, + 0x3c, 0x8c, 0x37, 0xdc, 0x50, 0xab, 0x1c, 0x5e, 0x0d, 0x8e, 0x64, 0x95, 0x23, 0xa2, 0xf0, 0xf4, + 0xf1, 0x7b, 0x8b, 0x0c, 0xa7, 0xd9, 0x64, 0x6b, 0x81, 0xb7, 0x10, 0xd1, 0x43, 0xa3, 0x00, 0xf2, + 0xa4, 0x67, 0x26, 0xb1, 0x5b, 0xce, 0xc8, 0x0b, 0x7f, 0x52, 0x2a, 0xf6, 0x7e, 0x07, 0x6e, 0x3a, + 0xd8, 0xc3, 0xe1, 0x48, 0x90, 0x12, 0xbb, 0xd6, 0x21, 0x01, 0x1b, 0xe9, 0x63, 0xf6, 0x32, 0x19, + 0xf2, 0xf4, 0x9c, 0x16, 0xda, 0x48, 0xc5, 0x61, 0x82, 0x8f, 0xf2, 0x2c, 0xb0, 0x23, 0x97, 0xf8, + 0x92, 0xfb, 0xf4, 0xf6, 0xe2, 0x8e, 0xe8, 0x16, 0xfb, 0xaf, 0x4a, 0x30, 0x5d, 0xc7, 0x4e, 0x49, + 0xb3, 0x2c, 0x5d, 0xdb, 0x1a, 0x95, 0xc7, 0xb7, 0xa8, 0xf7, 0x30, 0xfa, 0x5a, 0x46, 0xf4, 0x3c, + 0x8d, 0xbf, 0x10, 0xee, 0xb1, 0x1a, 0x11, 0x4b, 0xf0, 0x31, 0xa1, 0x33, 0x33, 0x83, 0xa8, 0x8d, + 0xc1, 0x63, 0x5b, 0x82, 0x09, 0xef, 0x2c, 0xde, 0x6d, 0xdc, 0xf9, 0xcc, 0x6d, 0x67, 0xc7, 0x3b, + 0x06, 0x43, 0x9e, 0x0f, 0x9e, 0x01, 0x43, 0xaf, 0x4a, 0xe8, 0x28, 0x1f, 0x7f, 0x90, 0x30, 0x59, + 0x1b, 0x4b, 0xe2, 0x0e, 0x7f, 0x54, 0x47, 0x07, 0x7f, 0x73, 0x82, 0x2d, 0x47, 0xae, 0x6a, 0x0e, + 0x7e, 0x04, 0x7d, 0x4a, 0x86, 0x89, 0x3a, 0x76, 0xdc, 0xf1, 0x96, 0xbb, 0xdc, 0x74, 0x58, 0x0d, + 0x57, 0x42, 0x2b, 0x1e, 0x53, 0x6c, 0x0d, 0xe3, 0x01, 0x98, 0xea, 0x5a, 0x66, 0x0b, 0xdb, 0x36, + 0x5b, 0xbd, 0x08, 0x3b, 0xaa, 0xf5, 0x1b, 0xfd, 0x09, 0x6b, 0xf3, 0xeb, 0xde, 0x3f, 0x6a, 0xf0, + 0x7b, 0x52, 0x33, 0x80, 0x52, 0x62, 0x15, 0x1c, 0xb7, 0x19, 0x10, 0x57, 0x78, 0xfa, 0x40, 0x7f, + 0x5c, 0x86, 0x99, 0x3a, 0x76, 0x7c, 0x29, 0x26, 0xd8, 0xe4, 0x88, 0x86, 0x97, 0x83, 0x52, 0x3e, + 0x1c, 0x94, 0xe2, 0x57, 0x03, 0xf2, 0xd2, 0xf4, 0x89, 0x8d, 0xf1, 0x6a, 0x40, 0x31, 0x0e, 0xc6, + 0x70, 0x7c, 0xed, 0xc9, 0x30, 0x45, 0x78, 0x21, 0x0d, 0xf6, 0xc7, 0xb3, 0x41, 0xe3, 0xfd, 0x74, + 0x4a, 0x8d, 0xf7, 0x1e, 0xc8, 0xed, 0x68, 0xd6, 0x65, 0x9b, 0x34, 0xdc, 0x69, 0x11, 0xb3, 0x7d, + 0xcd, 0xcd, 0xae, 0xd2, 0xbf, 0xfa, 0xfb, 0x69, 0xe6, 0x92, 0xf9, 0x69, 0x3e, 0x26, 0x25, 0x1a, + 0x09, 0xe9, 0xdc, 0x61, 0x84, 0x4d, 0x3e, 0xc1, 0xb8, 0x19, 0x53, 0x76, 0xfa, 0xca, 0xf1, 0x12, + 0x19, 0x26, 0xdd, 0x71, 0x9b, 0xd8, 0xe3, 0x17, 0x0f, 0xaf, 0x0e, 0xfd, 0x0d, 0xfd, 0x84, 0x3d, + 0xb0, 0x27, 0x91, 0xd1, 0x99, 0xf7, 0x09, 0x7a, 0xe0, 0xb8, 0xc2, 0xd3, 0xc7, 0xe3, 0x6d, 0x14, + 0x0f, 0xd2, 0x1e, 0xd0, 0x2f, 0xc9, 0x20, 0x2f, 0x63, 0x67, 0xdc, 0x56, 0xe4, 0x9b, 0x85, 0x43, + 0x1c, 0x71, 0x02, 0x23, 0x3c, 0xcf, 0x2f, 0xe3, 0xd1, 0x34, 0x20, 0xb1, 0xd8, 0x46, 0x42, 0x0c, + 0xa4, 0x8f, 0xda, 0xbb, 0x28, 0x6a, 0x74, 0x73, 0xe1, 0x07, 0x47, 0xd0, 0xab, 0x8e, 0x77, 0xe1, + 0xc3, 0x13, 0x20, 0xa1, 0x71, 0x54, 0xed, 0xad, 0x5f, 0xe1, 0x63, 0xb9, 0x8a, 0x0f, 0xdc, 0xc6, + 0xbe, 0x8d, 0x5b, 0x97, 0x71, 0x1b, 0x7d, 0xdf, 0xe1, 0xa1, 0x3b, 0x03, 0x13, 0x2d, 0x4a, 0x8d, + 0x80, 0x37, 0xa9, 0x7a, 0xaf, 0x09, 0xee, 0x95, 0xe6, 0x3b, 0x22, 0xfa, 0xfb, 0x18, 0xef, 0x95, + 0x16, 0x28, 0x7e, 0x0c, 0x66, 0x0b, 0x9d, 0x65, 0x54, 0x5a, 0xa6, 0x81, 0xfe, 0xcb, 0xe1, 0x61, + 0xb9, 0x0e, 0xa6, 0xf4, 0x96, 0x69, 0x90, 0x30, 0x14, 0xde, 0x21, 0x20, 0x3f, 0xc1, 0xfb, 0x5a, + 0xde, 0x31, 0x1f, 0xd6, 0xd9, 0xae, 0x79, 0x90, 0x30, 0xac, 0x31, 0xe1, 0xb2, 0x7e, 0x54, 0xc6, + 0x44, 0x9f, 0xb2, 0xd3, 0x87, 0xec, 0x83, 0x81, 0x77, 0x1b, 0xed, 0x0a, 0x9f, 0x10, 0xab, 0xc0, + 0xc3, 0x0c, 0x67, 0xe1, 0x5a, 0x1c, 0xc9, 0x70, 0x16, 0xc3, 0xc0, 0x18, 0x6e, 0xac, 0x08, 0x70, + 0x4c, 0x7d, 0x0d, 0xf8, 0x10, 0xe8, 0x8c, 0xce, 0x3c, 0x1c, 0x12, 0x9d, 0xa3, 0x31, 0x11, 0xdf, + 0xcb, 0x42, 0x64, 0x32, 0x8b, 0x07, 0xfd, 0xd7, 0x51, 0x80, 0x73, 0xd7, 0x30, 0xfe, 0x0a, 0xd4, + 0x5b, 0x21, 0xc1, 0x8d, 0xd8, 0x07, 0x24, 0xe8, 0x52, 0x19, 0xe3, 0x5d, 0xf1, 0x22, 0xe5, 0xa7, + 0x0f, 0xe0, 0x8b, 0x65, 0x98, 0x23, 0x3e, 0x02, 0x1d, 0xac, 0x59, 0xb4, 0xa3, 0x1c, 0x89, 0xa3, + 0xfc, 0xdb, 0x84, 0x03, 0xfc, 0xf0, 0x72, 0x08, 0xf8, 0x18, 0x09, 0x14, 0x62, 0xd1, 0x7d, 0x04, + 0x59, 0x18, 0xcb, 0x36, 0x4a, 0xc1, 0x67, 0x81, 0xa9, 0xf8, 0x68, 0xf0, 0x48, 0xe8, 0x91, 0xcb, + 0x0b, 0xc3, 0x6b, 0x6c, 0x63, 0xf6, 0xc8, 0x15, 0x61, 0x22, 0x7d, 0x4c, 0x7e, 0xe9, 0x76, 0xb6, + 0xe0, 0xdc, 0x20, 0x17, 0xc6, 0xbf, 0x26, 0xeb, 0x9f, 0x68, 0xfb, 0xf8, 0x48, 0x3c, 0x30, 0x0f, + 0x11, 0x10, 0x5f, 0x81, 0xac, 0x65, 0x5e, 0xa1, 0x4b, 0x5b, 0xb3, 0x2a, 0x79, 0xa6, 0xd7, 0x53, + 0x76, 0x76, 0x77, 0x0c, 0x7a, 0x32, 0x74, 0x56, 0xf5, 0x5e, 0x95, 0x1b, 0x61, 0xf6, 0x8a, 0xee, + 0x6c, 0xaf, 0x60, 0xad, 0x8d, 0x2d, 0xd5, 0xbc, 0x42, 0x3c, 0xe6, 0x26, 0x55, 0x3e, 0x91, 0xf7, + 0x5f, 0x11, 0xb0, 0x2f, 0xc9, 0x2d, 0xf2, 0x63, 0x39, 0xfe, 0x96, 0xc4, 0xf2, 0x8c, 0xe6, 0x2a, + 0x7d, 0x85, 0x79, 0xb7, 0x0c, 0x53, 0xaa, 0x79, 0x85, 0x29, 0xc9, 0xff, 0x71, 0xb4, 0x3a, 0x92, + 0x78, 0xa2, 0x47, 0x24, 0xe7, 0xb3, 0x3f, 0xf6, 0x89, 0x5e, 0x6c, 0xf1, 0x63, 0x39, 0xb9, 0x34, + 0xa3, 0x9a, 0x57, 0xea, 0xd8, 0xa1, 0x2d, 0x02, 0x35, 0x47, 0xe4, 0x64, 0xad, 0xdb, 0x94, 0x20, + 0x9b, 0x87, 0xfb, 0xef, 0x49, 0x77, 0x11, 0x7c, 0x01, 0xf9, 0x2c, 0x8e, 0x7b, 0x17, 0x61, 0x20, + 0x07, 0x63, 0x88, 0x91, 0x22, 0xc3, 0xb4, 0x6a, 0x5e, 0x71, 0x87, 0x86, 0x25, 0xbd, 0xd3, 0x19, + 0xcd, 0x08, 0x99, 0xd4, 0xf8, 0xf7, 0xc4, 0xe0, 0x71, 0x31, 0x76, 0xe3, 0x7f, 0x00, 0x03, 0xe9, + 0xc3, 0xf0, 0x42, 0xda, 0x58, 0xbc, 0x11, 0xda, 0x18, 0x0d, 0x0e, 0xc3, 0x36, 0x08, 0x9f, 0x8d, + 0x23, 0x6b, 0x10, 0x51, 0x1c, 0x8c, 0x65, 0xe7, 0x64, 0xae, 0x44, 0x86, 0xf9, 0xd1, 0xb6, 0x89, + 0x77, 0x24, 0x73, 0x4d, 0x64, 0xc3, 0x2e, 0xc7, 0xc8, 0x48, 0xd0, 0x48, 0xe0, 0x82, 0x28, 0xc0, + 0x43, 0xfa, 0x78, 0xfc, 0x9e, 0x0c, 0x33, 0x94, 0x85, 0x27, 0x88, 0x15, 0x30, 0x54, 0xa3, 0x0a, + 0xd7, 0xe0, 0x68, 0x1a, 0x55, 0x0c, 0x07, 0x63, 0xb9, 0x15, 0xd4, 0xb5, 0xe3, 0x86, 0x38, 0x3e, + 0x1e, 0x85, 0xe0, 0xd0, 0xc6, 0xd8, 0x08, 0x8f, 0x90, 0x0f, 0x63, 0x8c, 0x1d, 0xd1, 0x31, 0xf2, + 0x17, 0xfa, 0xad, 0x68, 0x94, 0x18, 0x1c, 0xa2, 0x29, 0x8c, 0x10, 0x86, 0x21, 0x9b, 0xc2, 0x11, + 0x21, 0xf1, 0x39, 0x19, 0x80, 0x32, 0xb0, 0x66, 0xee, 0x91, 0xcb, 0x7c, 0x46, 0xd0, 0x9d, 0xf5, + 0xba, 0xd5, 0xcb, 0x03, 0xdc, 0xea, 0x13, 0x86, 0x70, 0x49, 0xba, 0x12, 0x18, 0x92, 0xb2, 0x5b, + 0xc9, 0xb1, 0xaf, 0x04, 0xc6, 0x97, 0x9f, 0x3e, 0xc6, 0x8f, 0x53, 0x6b, 0x2e, 0x38, 0x60, 0xfa, + 0xb3, 0x23, 0x41, 0x39, 0x34, 0xfb, 0x97, 0xf9, 0xd9, 0xff, 0x21, 0xb0, 0x1d, 0xd6, 0x46, 0x1c, + 0x74, 0x70, 0x34, 0x7d, 0x1b, 0xf1, 0xe8, 0x0e, 0x88, 0xfe, 0x60, 0x16, 0x8e, 0xb3, 0x4e, 0xe4, + 0x5b, 0x01, 0xe2, 0x84, 0xe7, 0xf0, 0xb8, 0x4e, 0x72, 0x00, 0xca, 0xa3, 0x5a, 0x90, 0x4a, 0xb2, + 0x94, 0x29, 0xc0, 0xde, 0x58, 0x56, 0x37, 0xf2, 0xe5, 0x47, 0xba, 0x9a, 0xd1, 0x16, 0x0f, 0xf7, + 0x3b, 0x00, 0x78, 0x6f, 0xad, 0x51, 0xe6, 0xd7, 0x1a, 0xfb, 0xac, 0x4c, 0x26, 0xde, 0xb9, 0x26, + 0x22, 0xa3, 0xec, 0x8e, 0x7d, 0xe7, 0x3a, 0xba, 0xec, 0xf4, 0x51, 0x7a, 0x87, 0x0c, 0xd9, 0xba, + 0x69, 0x39, 0xe8, 0x45, 0x49, 0x5a, 0x27, 0x95, 0x7c, 0x00, 0x92, 0xf7, 0xae, 0x94, 0xb8, 0x5b, + 0x9a, 0x6f, 0x8b, 0x3f, 0xea, 0xac, 0x39, 0x1a, 0xf1, 0xea, 0x76, 0xcb, 0x0f, 0x5d, 0xd7, 0x9c, + 0x34, 0x9e, 0x0e, 0x95, 0x5f, 0x3d, 0xfa, 0x00, 0x46, 0x6a, 0xf1, 0x74, 0x22, 0x4b, 0x4e, 0x1f, + 0xb7, 0xd7, 0x1d, 0x67, 0xbe, 0xad, 0x4b, 0x7a, 0x07, 0xa3, 0x17, 0x51, 0x97, 0x91, 0xaa, 0xb6, + 0x83, 0xc5, 0x8f, 0xc4, 0xc4, 0xba, 0xb6, 0x92, 0xf8, 0xb2, 0x72, 0x10, 0x5f, 0x36, 0x69, 0x83, + 0xa2, 0x07, 0xd0, 0x29, 0x4b, 0xe3, 0x6e, 0x50, 0x31, 0x65, 0x8f, 0x25, 0x4e, 0xe7, 0x89, 0x3a, + 0x76, 0xa8, 0x51, 0x59, 0xf3, 0x6e, 0x60, 0xf9, 0xfe, 0x91, 0x44, 0xec, 0xf4, 0x2f, 0x78, 0x91, + 0x7b, 0x2e, 0x78, 0x79, 0x77, 0x18, 0x9c, 0x35, 0x1e, 0x9c, 0xef, 0x8e, 0x16, 0x10, 0xcf, 0xe4, + 0x48, 0x60, 0x7a, 0xb3, 0x0f, 0xd3, 0x3a, 0x07, 0xd3, 0xdd, 0x43, 0x72, 0x91, 0x3e, 0x60, 0x3f, + 0x91, 0x83, 0xe3, 0x74, 0xd2, 0x5f, 0x34, 0xda, 0x2c, 0xc2, 0xea, 0x1b, 0xa5, 0x23, 0xde, 0x6c, + 0x3b, 0x18, 0x82, 0x95, 0x8b, 0xe5, 0x9c, 0xeb, 0xbd, 0x1d, 0x7f, 0x81, 0x86, 0x73, 0x75, 0x3b, + 0x51, 0xb2, 0xd3, 0x26, 0x7e, 0x43, 0xbe, 0xff, 0x1f, 0x7f, 0x97, 0xd1, 0x84, 0xf8, 0x5d, 0x46, + 0x7f, 0x92, 0x6c, 0xdd, 0x8e, 0x14, 0xdd, 0x23, 0xf0, 0x94, 0x6d, 0xa7, 0x04, 0x2b, 0x7a, 0x02, + 0xdc, 0x7d, 0x7b, 0xb8, 0x93, 0x05, 0x11, 0x44, 0x86, 0x74, 0x27, 0x23, 0x04, 0x8e, 0xd2, 0x9d, + 0x6c, 0x10, 0x03, 0x63, 0xb8, 0xd5, 0x3e, 0xc7, 0x76, 0xf3, 0x49, 0xbb, 0x41, 0x7f, 0x25, 0xa5, + 0x3e, 0x4a, 0x7f, 0x3d, 0x93, 0xc8, 0xff, 0x99, 0xf0, 0x15, 0x3f, 0x4c, 0x27, 0xf1, 0x68, 0x8e, + 0x23, 0x37, 0x86, 0x75, 0x23, 0x89, 0xf8, 0xa2, 0x5f, 0xd4, 0xdb, 0xce, 0xf6, 0x88, 0x4e, 0x74, + 0x5c, 0x71, 0x69, 0x79, 0xd7, 0x23, 0x93, 0x17, 0xf4, 0x6f, 0x99, 0x44, 0x21, 0xa4, 0x7c, 0x91, + 0x10, 0xb6, 0x22, 0x44, 0x9c, 0x20, 0xf0, 0x53, 0x2c, 0xbd, 0x31, 0x6a, 0xf4, 0x05, 0xbd, 0x8d, + 0xcd, 0x27, 0xa0, 0x46, 0x13, 0xbe, 0x46, 0xa7, 0xd1, 0x71, 0xe4, 0xbe, 0x4d, 0x35, 0xda, 0x17, + 0xc9, 0x88, 0x34, 0x3a, 0x96, 0x5e, 0xfa, 0x32, 0x7e, 0xd5, 0x0c, 0x9b, 0x48, 0xad, 0xea, 0xc6, + 0x65, 0xf4, 0xcf, 0x79, 0xef, 0x62, 0xe6, 0x8b, 0xba, 0xb3, 0xcd, 0x62, 0xc1, 0xfc, 0xb6, 0xf0, + 0xdd, 0x28, 0x43, 0xc4, 0x7b, 0xe1, 0xc3, 0x49, 0xe5, 0x0e, 0x84, 0x93, 0x2a, 0xc2, 0xac, 0x6e, + 0x38, 0xd8, 0x32, 0xb4, 0xce, 0x52, 0x47, 0xdb, 0xb2, 0xcf, 0x4c, 0xf4, 0xbd, 0xbc, 0xae, 0x12, + 0xca, 0xa3, 0xf2, 0x7f, 0x84, 0xaf, 0xaf, 0x9c, 0xe4, 0xaf, 0xaf, 0x8c, 0x88, 0x7e, 0x35, 0x15, + 0x1d, 0xfd, 0xca, 0x8f, 0x6e, 0x05, 0x83, 0x83, 0x63, 0x8b, 0xda, 0xc6, 0x09, 0xc3, 0xfd, 0xdd, + 0x26, 0x18, 0x85, 0xcd, 0x0f, 0xfd, 0xf8, 0x8b, 0x72, 0xa2, 0xd5, 0x3d, 0x57, 0x11, 0xe6, 0x7b, + 0x95, 0x20, 0xb1, 0x85, 0x1a, 0xae, 0xbc, 0xdc, 0x53, 0x79, 0xdf, 0xe4, 0xc9, 0x0a, 0x98, 0x3c, + 0x61, 0xa5, 0xca, 0x89, 0x29, 0x55, 0x92, 0xc5, 0x42, 0x91, 0xda, 0x8e, 0xe1, 0x34, 0x52, 0x0e, + 0x4e, 0x78, 0xd1, 0x6e, 0xbb, 0x5d, 0xac, 0x59, 0x9a, 0xd1, 0xc2, 0xe8, 0x83, 0xd2, 0x28, 0xcc, + 0xde, 0x25, 0x98, 0xd4, 0x5b, 0xa6, 0x51, 0xd7, 0x9f, 0xe7, 0x5d, 0x2e, 0x17, 0x1f, 0x64, 0x9d, + 0x48, 0xa4, 0xc2, 0xfe, 0x50, 0xfd, 0x7f, 0x95, 0x0a, 0x4c, 0xb5, 0x34, 0xab, 0x4d, 0x83, 0xf0, + 0xe5, 0x7a, 0x2e, 0x72, 0x8a, 0x24, 0x54, 0xf2, 0x7e, 0x51, 0x83, 0xbf, 0x95, 0x1a, 0x2f, 0xc4, + 0x7c, 0x4f, 0x34, 0x8f, 0x48, 0x62, 0x8b, 0xc1, 0x4f, 0x9c, 0xcc, 0x5d, 0xe9, 0x58, 0xb8, 0x43, + 0xee, 0xa0, 0xa7, 0x3d, 0xc4, 0x94, 0x1a, 0x24, 0x24, 0x5d, 0x1e, 0x20, 0x45, 0x1d, 0x40, 0x63, + 0xdc, 0xcb, 0x03, 0x42, 0x5c, 0xa4, 0xaf, 0x99, 0x6f, 0xcd, 0xc3, 0x2c, 0xed, 0xd5, 0x98, 0x38, + 0xd1, 0x8b, 0xc9, 0x15, 0xd2, 0xce, 0x83, 0x78, 0x1f, 0xd5, 0x0f, 0x3f, 0x26, 0x17, 0x40, 0xbe, + 0xec, 0x07, 0x1c, 0x74, 0x1f, 0x93, 0xee, 0xdb, 0x7b, 0x7c, 0xcd, 0x53, 0x9e, 0xc6, 0xbd, 0x6f, + 0x1f, 0x5f, 0x7c, 0xfa, 0xf8, 0xfc, 0xa4, 0x0c, 0x72, 0xb1, 0xdd, 0x46, 0xad, 0xc3, 0x43, 0x71, + 0x0e, 0xa6, 0xbd, 0x36, 0x13, 0xc4, 0x80, 0x0c, 0x27, 0x25, 0x5d, 0x04, 0xf5, 0x65, 0x53, 0x6c, + 0x8f, 0x7d, 0x57, 0x21, 0xa6, 0xec, 0xf4, 0x41, 0xf9, 0xd9, 0x09, 0xd6, 0x68, 0x16, 0x4c, 0xf3, + 0x32, 0x39, 0x2a, 0xf3, 0x22, 0x19, 0x72, 0x4b, 0xd8, 0x69, 0x6d, 0x8f, 0xa8, 0xcd, 0xec, 0x5a, + 0x1d, 0xaf, 0xcd, 0x1c, 0xb8, 0x0f, 0x7f, 0xb0, 0x0d, 0xeb, 0xb1, 0x35, 0x4f, 0x58, 0x1a, 0x77, + 0x74, 0xe7, 0xd8, 0xd2, 0xd3, 0x07, 0xe7, 0xdf, 0x64, 0x98, 0xf3, 0x57, 0xb8, 0x28, 0x26, 0x3f, + 0x91, 0x79, 0xa2, 0xad, 0x77, 0xa2, 0x4f, 0x26, 0x0b, 0x91, 0xe6, 0xcb, 0x94, 0xaf, 0x59, 0xca, + 0x0b, 0x8b, 0x09, 0x82, 0xa7, 0x89, 0x31, 0x38, 0x86, 0x19, 0xbc, 0x0c, 0x93, 0x84, 0xa1, 0x45, + 0x7d, 0x8f, 0xb8, 0x0e, 0x72, 0x0b, 0x8d, 0xcf, 0x1f, 0xc9, 0x42, 0xe3, 0xdd, 0xfc, 0x42, 0xa3, + 0x60, 0xc4, 0x63, 0x6f, 0x9d, 0x31, 0xa1, 0x2f, 0x8d, 0xfb, 0xff, 0xc8, 0x97, 0x19, 0x13, 0xf8, + 0xd2, 0x0c, 0x28, 0x3f, 0x7d, 0x44, 0x7f, 0xf1, 0x3f, 0xb1, 0xce, 0xd6, 0xdb, 0x50, 0x45, 0xff, + 0xf3, 0x04, 0x64, 0x2f, 0xb8, 0x0f, 0xff, 0x3b, 0xb8, 0x11, 0xeb, 0x95, 0x23, 0x08, 0xce, 0x70, + 0x2f, 0x64, 0x5d, 0xfa, 0x6c, 0xda, 0x72, 0x8b, 0xd8, 0xee, 0xae, 0xcb, 0x88, 0x4a, 0xfe, 0x53, + 0x4e, 0x43, 0xde, 0x36, 0x77, 0xad, 0x96, 0x6b, 0x3e, 0xbb, 0x1a, 0xc3, 0xde, 0x92, 0x06, 0x25, + 0xe5, 0x48, 0xcf, 0x8f, 0xce, 0x65, 0x34, 0x74, 0x41, 0x92, 0xcc, 0x5d, 0x90, 0x94, 0x60, 0xff, + 0x40, 0x80, 0xb7, 0xf4, 0x35, 0xe2, 0xaf, 0xc8, 0x5d, 0x81, 0xed, 0x51, 0xc1, 0x1e, 0x21, 0x96, + 0xc3, 0xaa, 0x43, 0x52, 0x87, 0x6f, 0x5e, 0xb4, 0x7e, 0x1c, 0xf8, 0xb1, 0x3a, 0x7c, 0x0b, 0xf0, + 0x30, 0x96, 0x53, 0xea, 0x79, 0xe6, 0xa4, 0xfa, 0xd0, 0x28, 0xd1, 0xcd, 0x72, 0x4a, 0x7f, 0x28, + 0x74, 0x46, 0xe8, 0xbc, 0x3a, 0x34, 0x3a, 0x47, 0xe4, 0xbe, 0xfa, 0xfb, 0x32, 0x89, 0x84, 0xe9, + 0x19, 0x39, 0xe2, 0x17, 0x1d, 0x25, 0x86, 0xc8, 0x1d, 0x83, 0xb9, 0x38, 0xd0, 0xb3, 0xc3, 0x87, + 0x06, 0xe7, 0x45, 0x17, 0xe2, 0x7f, 0xdc, 0xa1, 0xc1, 0x45, 0x19, 0x49, 0x1f, 0xc8, 0x37, 0xd0, + 0x8b, 0xc5, 0x8a, 0x2d, 0x47, 0xdf, 0x1b, 0x71, 0x4b, 0xe3, 0x87, 0x97, 0x84, 0xd1, 0x80, 0x0f, + 0x48, 0x88, 0x72, 0x38, 0xee, 0x68, 0xc0, 0x62, 0x6c, 0xa4, 0x0f, 0xd3, 0xdf, 0xe6, 0x5d, 0xe9, + 0xb1, 0xb5, 0x99, 0x5f, 0x62, 0xab, 0x01, 0xf8, 0xf0, 0x68, 0x9d, 0x87, 0x99, 0xd0, 0xd4, 0xdf, + 0xbb, 0xb0, 0x86, 0x4b, 0x4b, 0x7a, 0xd0, 0xdd, 0x17, 0xd9, 0xc8, 0x17, 0x06, 0x12, 0x2c, 0xf8, + 0x8a, 0x30, 0x31, 0x96, 0xfb, 0xe0, 0xbc, 0x31, 0x6c, 0x4c, 0x58, 0xfd, 0x76, 0x18, 0xab, 0x1a, + 0x8f, 0xd5, 0x9d, 0x22, 0x62, 0x12, 0x1b, 0xd3, 0x84, 0xe6, 0x8d, 0x6f, 0xf1, 0xe1, 0x52, 0x39, + 0xb8, 0xee, 0x1d, 0x9a, 0x8f, 0xf4, 0x11, 0xfb, 0x39, 0xda, 0x1d, 0xd6, 0xa9, 0xc9, 0x3e, 0x9a, + 0xee, 0x90, 0xcd, 0x06, 0x64, 0x6e, 0x36, 0x90, 0xd0, 0xdf, 0x3e, 0x70, 0x23, 0xf5, 0x98, 0x1b, + 0x04, 0x51, 0x76, 0xc4, 0xfe, 0xf6, 0x03, 0x39, 0x48, 0x1f, 0x9c, 0x7f, 0x94, 0x01, 0x96, 0x2d, + 0x73, 0xb7, 0x5b, 0xb3, 0xda, 0xd8, 0x42, 0x7f, 0x13, 0x4c, 0x00, 0x5e, 0x3e, 0x82, 0x09, 0xc0, + 0x3a, 0xc0, 0x96, 0x4f, 0x9c, 0x69, 0xf8, 0xed, 0x62, 0xe6, 0x7e, 0xc0, 0x94, 0x1a, 0xa2, 0xc1, + 0x5f, 0x39, 0xfb, 0x3d, 0x3c, 0xc6, 0x71, 0x7d, 0x56, 0x40, 0x6e, 0x94, 0x13, 0x80, 0xb7, 0xf9, + 0x58, 0x37, 0x38, 0xac, 0xef, 0x3f, 0x04, 0x27, 0xe9, 0x63, 0xfe, 0x4f, 0x13, 0x30, 0x4d, 0xb7, + 0xeb, 0xa8, 0x4c, 0xff, 0x3e, 0x00, 0xfd, 0x67, 0x47, 0x00, 0xfa, 0x06, 0xcc, 0x98, 0x01, 0x75, + 0xda, 0xa7, 0x86, 0x17, 0x60, 0x62, 0x61, 0x0f, 0xf1, 0xa5, 0x72, 0x64, 0xd0, 0xfb, 0xc3, 0xc8, + 0xab, 0x3c, 0xf2, 0x77, 0xc7, 0xc8, 0x3b, 0x44, 0x71, 0x94, 0xd0, 0xbf, 0xdd, 0x87, 0x7e, 0x83, + 0x83, 0xbe, 0x78, 0x18, 0x56, 0xc6, 0x10, 0x6e, 0x5f, 0x86, 0x2c, 0x39, 0x1d, 0xf7, 0xab, 0x29, + 0xce, 0xef, 0xcf, 0xc0, 0x04, 0x69, 0xb2, 0xfe, 0xbc, 0xc3, 0x7b, 0x75, 0xbf, 0x68, 0x9b, 0x0e, + 0xb6, 0x7c, 0x8f, 0x05, 0xef, 0xd5, 0xe5, 0xc1, 0xf3, 0x4a, 0xb6, 0xcf, 0xe4, 0xe9, 0x46, 0xa4, + 0x9f, 0x30, 0xf4, 0xa4, 0x24, 0x2c, 0xf1, 0x91, 0x9d, 0x97, 0x1b, 0x66, 0x52, 0x32, 0x80, 0x91, + 0xf4, 0x81, 0xff, 0x8b, 0x2c, 0x9c, 0xa1, 0xab, 0x4a, 0x4b, 0x96, 0xb9, 0xd3, 0x73, 0xbb, 0x95, + 0x7e, 0x78, 0x5d, 0xb8, 0x09, 0xe6, 0x1c, 0xce, 0x1f, 0x9b, 0xe9, 0x44, 0x4f, 0x2a, 0xfa, 0xd3, + 0xb0, 0x4f, 0xc5, 0x73, 0x79, 0x24, 0x17, 0x62, 0x04, 0x18, 0xc5, 0x7b, 0xe2, 0x85, 0x7a, 0x41, + 0x46, 0x43, 0x8b, 0x54, 0xf2, 0x50, 0x6b, 0x96, 0xbe, 0x4e, 0xe5, 0x44, 0x74, 0xea, 0x3d, 0xbe, + 0x4e, 0x7d, 0x1f, 0xa7, 0x53, 0xcb, 0x87, 0x17, 0x49, 0xfa, 0xba, 0xf5, 0x1a, 0x7f, 0x63, 0xc8, + 0xdf, 0xb6, 0xdb, 0x49, 0x61, 0xb3, 0x2e, 0xec, 0x8f, 0x94, 0xe5, 0xfc, 0x91, 0xf8, 0xfb, 0x28, + 0x12, 0xcc, 0x84, 0x79, 0xae, 0x23, 0x74, 0x69, 0x0e, 0x24, 0xdd, 0xe3, 0x4e, 0xd2, 0xdb, 0x43, + 0xcd, 0x75, 0x63, 0x0b, 0x1a, 0xc3, 0xda, 0xd2, 0x1c, 0xe4, 0x97, 0xf4, 0x8e, 0x83, 0x2d, 0xf4, + 0x38, 0x9b, 0xe9, 0xbe, 0x26, 0xc5, 0x01, 0x60, 0x11, 0xf2, 0x9b, 0xa4, 0x34, 0x66, 0x32, 0xdf, + 0x2a, 0xd6, 0x7a, 0x28, 0x87, 0x2a, 0xfb, 0x37, 0x69, 0x74, 0xbe, 0x1e, 0x32, 0x23, 0x9b, 0x22, + 0x27, 0x88, 0xce, 0x37, 0x98, 0x85, 0xb1, 0x5c, 0x4c, 0x95, 0x57, 0xf1, 0x8e, 0x3b, 0xc6, 0x5f, + 0x4e, 0x0f, 0xe1, 0x02, 0xc8, 0x7a, 0xdb, 0x26, 0x9d, 0xe3, 0x94, 0xea, 0x3e, 0x26, 0xf5, 0x15, + 0xea, 0x15, 0x15, 0x65, 0x79, 0xdc, 0xbe, 0x42, 0x42, 0x5c, 0xa4, 0x8f, 0xd9, 0xd7, 0x89, 0xa3, + 0x68, 0xb7, 0xa3, 0xb5, 0xb0, 0xcb, 0x7d, 0x6a, 0xa8, 0xd1, 0x9e, 0x2c, 0xeb, 0xf5, 0x64, 0xa1, + 0x76, 0x9a, 0x3b, 0x44, 0x3b, 0x1d, 0x76, 0x19, 0xd2, 0x97, 0x39, 0xa9, 0xf8, 0x91, 0x2d, 0x43, + 0xc6, 0xb2, 0x31, 0x86, 0x6b, 0x47, 0xbd, 0x83, 0xb4, 0x63, 0x6d, 0xad, 0xc3, 0x6e, 0xd2, 0x30, + 0x61, 0x8d, 0xec, 0xd0, 0xec, 0x30, 0x9b, 0x34, 0xd1, 0x3c, 0x8c, 0x01, 0xad, 0x39, 0x86, 0xd6, + 0x27, 0xd8, 0x30, 0x9a, 0xf2, 0x3e, 0xa9, 0x6d, 0x5a, 0x4e, 0xb2, 0x7d, 0x52, 0x97, 0x3b, 0x95, + 0xfc, 0x97, 0xf4, 0xe0, 0x15, 0x7f, 0xae, 0x7a, 0x54, 0xc3, 0x67, 0x82, 0x83, 0x57, 0x83, 0x18, + 0x48, 0x1f, 0xde, 0x37, 0x1d, 0xd1, 0xe0, 0x39, 0x6c, 0x73, 0x64, 0x6d, 0x60, 0x64, 0x43, 0xe7, + 0x30, 0xcd, 0x31, 0x9a, 0x87, 0xf4, 0xf1, 0xfa, 0x4a, 0x68, 0xe0, 0xfc, 0x95, 0x31, 0x0e, 0x9c, + 0x5e, 0xcb, 0xcc, 0x0d, 0xd9, 0x32, 0x87, 0xdd, 0xff, 0x61, 0xb2, 0x1e, 0xdd, 0x80, 0x39, 0xcc, + 0xfe, 0x4f, 0x0c, 0x13, 0xe9, 0x23, 0xfe, 0x46, 0x19, 0x72, 0xf5, 0xf1, 0x8f, 0x97, 0xc3, 0xce, + 0x45, 0x88, 0xac, 0xea, 0x23, 0x1b, 0x2e, 0x87, 0x99, 0x8b, 0x44, 0xb2, 0x30, 0x86, 0xc0, 0xfb, + 0xc7, 0x61, 0x86, 0x2c, 0x89, 0x78, 0xdb, 0xac, 0x5f, 0x61, 0xa3, 0xe6, 0x63, 0x29, 0xb6, 0xd5, + 0x07, 0x60, 0xd2, 0xdb, 0xbf, 0x63, 0x23, 0xe7, 0xbc, 0x58, 0xfb, 0xf4, 0xb8, 0x54, 0xfd, 0xff, + 0x0f, 0xe5, 0x0c, 0x31, 0xf2, 0xbd, 0xda, 0x61, 0x9d, 0x21, 0x8e, 0x74, 0xbf, 0xf6, 0x4f, 0x82, + 0x11, 0xf5, 0xbf, 0xa4, 0x87, 0x79, 0xef, 0x3e, 0x6e, 0xb6, 0xcf, 0x3e, 0xee, 0x07, 0xc3, 0x58, + 0xd6, 0x79, 0x2c, 0xef, 0x11, 0x15, 0xe1, 0x08, 0xc7, 0xda, 0x77, 0xf8, 0x70, 0x5e, 0xe0, 0xe0, + 0x5c, 0x38, 0x14, 0x2f, 0x63, 0x38, 0xf8, 0x98, 0x0d, 0xc6, 0xdc, 0x0f, 0xa5, 0xd8, 0x8e, 0x7b, + 0x4e, 0x55, 0x64, 0x0f, 0x9c, 0xaa, 0xe0, 0x5a, 0x7a, 0xee, 0x90, 0x2d, 0xfd, 0x43, 0x61, 0xed, + 0x68, 0xf0, 0xda, 0x71, 0xaf, 0x38, 0x22, 0xa3, 0x1b, 0x99, 0xdf, 0xe9, 0xab, 0xc7, 0x45, 0x4e, + 0x3d, 0x4a, 0x87, 0x63, 0x26, 0x7d, 0xfd, 0xf8, 0x03, 0x6f, 0x42, 0x7b, 0xc4, 0xed, 0x7d, 0xd8, + 0xad, 0x62, 0x4e, 0x88, 0x23, 0x1b, 0xb9, 0x87, 0xd9, 0x2a, 0x1e, 0xc4, 0xc9, 0x18, 0x62, 0xb1, + 0xcd, 0xc2, 0x34, 0xe1, 0xe9, 0xa2, 0xde, 0xde, 0xc2, 0x0e, 0xfa, 0x45, 0xea, 0xa3, 0xe8, 0x45, + 0xbe, 0x1c, 0x51, 0x78, 0xa2, 0xa8, 0xf3, 0xae, 0x49, 0x3d, 0x3a, 0x28, 0x93, 0xf3, 0x21, 0x06, + 0xc7, 0x1d, 0x41, 0x71, 0x20, 0x07, 0xe9, 0x43, 0xf6, 0x7e, 0xea, 0x6e, 0xb3, 0xaa, 0xed, 0x9b, + 0xbb, 0x0e, 0x7a, 0x74, 0x04, 0x1d, 0xf4, 0x02, 0xe4, 0x3b, 0x84, 0x1a, 0x3b, 0x96, 0x11, 0x3f, + 0xdd, 0x61, 0x22, 0xa0, 0xe5, 0xab, 0xec, 0xcf, 0xa4, 0x67, 0x33, 0x02, 0x39, 0x52, 0x3a, 0xe3, + 0x3e, 0x9b, 0x31, 0xa0, 0xfc, 0xb1, 0xdc, 0xb1, 0x33, 0xe9, 0x96, 0xae, 0xef, 0xe8, 0xce, 0x88, + 0x22, 0x38, 0x74, 0x5c, 0x5a, 0x5e, 0x04, 0x07, 0xf2, 0x92, 0xf4, 0xc4, 0x68, 0x48, 0x2a, 0xee, + 0xef, 0xe3, 0x3e, 0x31, 0x1a, 0x5f, 0x7c, 0xfa, 0x98, 0xfc, 0x34, 0x6d, 0x59, 0x17, 0xa8, 0xf3, + 0x6d, 0x8a, 0x7e, 0xbd, 0x43, 0x37, 0x16, 0xca, 0xda, 0xd1, 0x35, 0x96, 0xbe, 0xe5, 0xa7, 0x0f, + 0xcc, 0x7f, 0xff, 0x4e, 0xc8, 0x2d, 0xe2, 0x4b, 0xbb, 0x5b, 0xe8, 0x6e, 0x98, 0x6c, 0x58, 0x18, + 0x57, 0x8c, 0x4d, 0xd3, 0x95, 0xae, 0xe3, 0x3e, 0x7b, 0x90, 0xb0, 0x37, 0x17, 0x8f, 0x6d, 0xac, + 0xb5, 0x83, 0xf3, 0x67, 0xde, 0x2b, 0x7a, 0xa5, 0x04, 0xd9, 0xba, 0xa3, 0x39, 0x68, 0xca, 0xc7, + 0x16, 0x3d, 0x1a, 0xc6, 0xe2, 0x6e, 0x1e, 0x8b, 0x9b, 0x38, 0x59, 0x10, 0x0e, 0xe6, 0xdd, 0xff, + 0x23, 0x00, 0x40, 0x30, 0xf9, 0xb0, 0x6d, 0x1a, 0x6e, 0x0e, 0xef, 0x08, 0xa4, 0xf7, 0x8e, 0x5e, + 0xed, 0x8b, 0xfb, 0x3e, 0x4e, 0xdc, 0x4f, 0x15, 0x2b, 0x62, 0x0c, 0x2b, 0x6d, 0x12, 0x4c, 0xb9, + 0xa2, 0x5d, 0xc1, 0x5a, 0xdb, 0x46, 0xdf, 0x11, 0x28, 0x7f, 0x84, 0x98, 0xd1, 0x7b, 0x85, 0x83, + 0x71, 0xd2, 0x5a, 0xf9, 0xc4, 0xa3, 0x3d, 0x3a, 0xbc, 0xcd, 0x7f, 0x89, 0x0f, 0x46, 0x72, 0x1b, + 0x64, 0x75, 0x63, 0xd3, 0x64, 0xfe, 0x85, 0xd7, 0x46, 0xd0, 0x76, 0x75, 0x42, 0x25, 0x19, 0x05, + 0x23, 0x75, 0xc6, 0xb3, 0x35, 0x96, 0x4b, 0xef, 0xb2, 0x6e, 0xe9, 0xe8, 0xff, 0x3f, 0x50, 0xd8, + 0x8a, 0x02, 0xd9, 0xae, 0xe6, 0x6c, 0xb3, 0xa2, 0xc9, 0xb3, 0x6b, 0x23, 0xef, 0x1a, 0x9a, 0x61, + 0x1a, 0xfb, 0x3b, 0xfa, 0xf3, 0xfc, 0xbb, 0x75, 0xb9, 0x34, 0x97, 0xf3, 0x2d, 0x6c, 0x60, 0x4b, + 0x73, 0x70, 0x7d, 0x6f, 0x8b, 0xcc, 0xb1, 0x26, 0xd5, 0x70, 0x52, 0x62, 0xfd, 0x77, 0x39, 0x8e, + 0xd6, 0xff, 0x4d, 0xbd, 0x83, 0x49, 0xa4, 0x26, 0xa6, 0xff, 0xde, 0x7b, 0x22, 0xfd, 0xef, 0x53, + 0x44, 0xfa, 0x68, 0x7c, 0x43, 0x82, 0x99, 0xba, 0xab, 0x70, 0xf5, 0xdd, 0x9d, 0x1d, 0xcd, 0xda, + 0x47, 0x37, 0x04, 0xa8, 0x84, 0x54, 0x33, 0xc3, 0xfb, 0xa5, 0xfc, 0xbe, 0xf0, 0xb5, 0xd2, 0xac, + 0x69, 0x87, 0x4a, 0x48, 0xdc, 0x0e, 0x9e, 0x0e, 0x39, 0x57, 0xbd, 0x3d, 0x8f, 0xcb, 0xd8, 0x86, + 0x40, 0x73, 0x0a, 0x46, 0xb4, 0x1a, 0xc8, 0xdb, 0x18, 0xa2, 0x69, 0x48, 0x70, 0xbc, 0xee, 0x68, + 0xad, 0xcb, 0xcb, 0xa6, 0x65, 0xee, 0x3a, 0xba, 0x81, 0x6d, 0xf4, 0xa4, 0x00, 0x01, 0x4f, 0xff, + 0x33, 0x81, 0xfe, 0xa3, 0x7f, 0xcf, 0x88, 0x8e, 0xa2, 0x7e, 0xb7, 0x1a, 0x26, 0x1f, 0x11, 0xa0, + 0x4a, 0x6c, 0x5c, 0x14, 0xa1, 0x98, 0xbe, 0xd0, 0x7e, 0x45, 0x86, 0x42, 0xf9, 0x91, 0xae, 0x69, + 0x39, 0xab, 0x66, 0x4b, 0xeb, 0xd8, 0x8e, 0x69, 0x61, 0x54, 0x8b, 0x95, 0x9a, 0xdb, 0xc3, 0xb4, + 0xcd, 0x56, 0x30, 0x38, 0xb2, 0xb7, 0xb0, 0xda, 0xc9, 0xbc, 0x8e, 0xbf, 0x5f, 0x78, 0x97, 0x91, + 0x4a, 0xa5, 0x97, 0xa3, 0x08, 0x3d, 0xef, 0xd7, 0xa5, 0x25, 0x3b, 0x2c, 0x21, 0xb6, 0xf3, 0x28, + 0xc4, 0xd4, 0x18, 0x96, 0xca, 0x25, 0x98, 0xad, 0xef, 0x5e, 0xf2, 0x89, 0xd8, 0x61, 0x23, 0xe4, + 0xb5, 0xc2, 0x51, 0x2a, 0x98, 0xe2, 0x85, 0x09, 0x45, 0xc8, 0xf7, 0x46, 0x98, 0xb5, 0xc3, 0xd9, + 0x18, 0xde, 0x7c, 0xa2, 0x60, 0x74, 0x8a, 0xc1, 0xa5, 0xa6, 0x2f, 0xc0, 0x77, 0x4a, 0x30, 0x5b, + 0xeb, 0x62, 0x03, 0xb7, 0xa9, 0x17, 0x24, 0x27, 0xc0, 0x57, 0x26, 0x14, 0x20, 0x47, 0x28, 0x42, + 0x80, 0x81, 0xc7, 0xf2, 0xa2, 0x27, 0xbc, 0x20, 0x21, 0x91, 0xe0, 0xe2, 0x4a, 0x4b, 0x5f, 0x70, + 0x9f, 0x91, 0x60, 0x5a, 0xdd, 0x35, 0xd6, 0x2d, 0xd3, 0x1d, 0x8d, 0x2d, 0x74, 0x4f, 0xd0, 0x41, + 0xdc, 0x0a, 0x27, 0xda, 0xbb, 0x16, 0x59, 0x7f, 0xaa, 0x18, 0x75, 0xdc, 0x32, 0x8d, 0xb6, 0x4d, + 0xea, 0x91, 0x53, 0x0f, 0x7e, 0xb8, 0x2b, 0xfb, 0xa2, 0x2f, 0xca, 0x19, 0xf4, 0x62, 0xe1, 0x50, + 0x37, 0xb4, 0xf2, 0xa1, 0xa2, 0xc5, 0x7b, 0x02, 0xc1, 0x80, 0x36, 0x83, 0x4a, 0x48, 0x5f, 0xb8, + 0x9f, 0x90, 0x40, 0x29, 0xb6, 0x5a, 0xe6, 0xae, 0xe1, 0xd4, 0x71, 0x07, 0xb7, 0x9c, 0x86, 0xa5, + 0xb5, 0x70, 0xd8, 0x7e, 0x2e, 0x80, 0xdc, 0xd6, 0x2d, 0xd6, 0x07, 0xbb, 0x8f, 0x4c, 0x8e, 0xaf, + 0x14, 0xde, 0x71, 0xa4, 0xb5, 0x3c, 0x58, 0x4a, 0x02, 0x71, 0x8a, 0xed, 0x2b, 0x0a, 0x16, 0x94, + 0xbe, 0x54, 0x3f, 0x24, 0xc1, 0x94, 0xd7, 0x63, 0x6f, 0x89, 0x08, 0xf3, 0xa7, 0x13, 0x4e, 0x46, + 0x7c, 0xe2, 0x09, 0x64, 0xf8, 0xd6, 0x04, 0xb3, 0x8a, 0x28, 0xfa, 0xc9, 0x44, 0x57, 0x4c, 0x2e, + 0x3a, 0xf7, 0xb5, 0x5a, 0x6b, 0x2e, 0xd5, 0x56, 0x17, 0xcb, 0x6a, 0x41, 0x46, 0x8f, 0x4b, 0x90, + 0x5d, 0xd7, 0x8d, 0xad, 0x70, 0x74, 0xa5, 0x93, 0xae, 0x1d, 0xd9, 0xc6, 0x8f, 0xb0, 0x96, 0x4e, + 0x5f, 0x94, 0x3b, 0xe0, 0xa4, 0xb1, 0xbb, 0x73, 0x09, 0x5b, 0xb5, 0x4d, 0x32, 0xca, 0xda, 0x0d, + 0xb3, 0x8e, 0x0d, 0x6a, 0x84, 0xe6, 0xd4, 0xbe, 0xdf, 0x78, 0x13, 0x4c, 0x60, 0xf2, 0xe0, 0x72, + 0x12, 0x21, 0x71, 0x9f, 0x29, 0x29, 0xc4, 0x54, 0xa2, 0x69, 0x43, 0x1f, 0xe2, 0xe9, 0x6b, 0xea, + 0x1f, 0xe6, 0xe0, 0x54, 0xd1, 0xd8, 0x27, 0x36, 0x05, 0xed, 0xe0, 0x4b, 0xdb, 0x9a, 0xb1, 0x85, + 0xc9, 0x00, 0xe1, 0x4b, 0x3c, 0x1c, 0xa2, 0x3f, 0xc3, 0x87, 0xe8, 0x57, 0x54, 0x98, 0x30, 0xad, + 0x36, 0xb6, 0x16, 0xf6, 0x09, 0x4f, 0xbd, 0xcb, 0xce, 0xac, 0x4d, 0xf6, 0x2b, 0x62, 0x9e, 0x91, + 0x9f, 0xaf, 0xd1, 0xff, 0x55, 0x8f, 0xd0, 0xf9, 0x5b, 0x61, 0x82, 0xa5, 0x29, 0x33, 0x30, 0x59, + 0x53, 0x17, 0xcb, 0x6a, 0xb3, 0xb2, 0x58, 0x38, 0xa6, 0x5c, 0x05, 0xc7, 0x2b, 0x8d, 0xb2, 0x5a, + 0x6c, 0x54, 0x6a, 0xd5, 0x26, 0x49, 0x2f, 0x64, 0xd0, 0x0b, 0xb3, 0xa2, 0x9e, 0xbd, 0xf1, 0xcc, + 0xf4, 0x83, 0x55, 0x85, 0x89, 0x16, 0xcd, 0x40, 0x86, 0xd0, 0xe9, 0x44, 0xb5, 0x63, 0x04, 0x69, + 0x82, 0xea, 0x11, 0x52, 0xce, 0x02, 0x5c, 0xb1, 0x4c, 0x63, 0x2b, 0x38, 0x75, 0x38, 0xa9, 0x86, + 0x52, 0xd0, 0xa3, 0x19, 0xc8, 0xd3, 0x7f, 0xc8, 0x95, 0x24, 0xe4, 0x29, 0x10, 0xbc, 0xf7, 0xee, + 0x5a, 0xbc, 0x44, 0x5e, 0xc1, 0x44, 0x8b, 0xbd, 0xba, 0xba, 0x48, 0x65, 0x40, 0x2d, 0x61, 0x56, + 0x95, 0xdb, 0x20, 0x4f, 0xff, 0x65, 0x5e, 0x07, 0xd1, 0xe1, 0x45, 0x69, 0x36, 0x41, 0x3f, 0x65, + 0x71, 0x99, 0xa6, 0xaf, 0xcd, 0xbf, 0x23, 0xc1, 0x64, 0x15, 0x3b, 0xa5, 0x6d, 0xdc, 0xba, 0x8c, + 0x9e, 0xc2, 0x2f, 0x80, 0x76, 0x74, 0x6c, 0x38, 0x0f, 0xed, 0x74, 0xfc, 0x05, 0x50, 0x2f, 0x01, + 0xfd, 0x68, 0xb8, 0xf3, 0xbd, 0x9f, 0xd7, 0x9f, 0x5b, 0xfa, 0xd4, 0xd5, 0x2b, 0x21, 0x42, 0x65, + 0x4e, 0x43, 0xde, 0xc2, 0xf6, 0x6e, 0xc7, 0x5b, 0x44, 0x63, 0x6f, 0xe8, 0x75, 0xbe, 0x38, 0x4b, + 0x9c, 0x38, 0x6f, 0x13, 0x2f, 0x62, 0x0c, 0xf1, 0x4a, 0xb3, 0x30, 0x51, 0x31, 0x74, 0x47, 0xd7, + 0x3a, 0xe8, 0xc5, 0x59, 0x98, 0xad, 0x63, 0x67, 0x5d, 0xb3, 0xb4, 0x1d, 0xec, 0x60, 0xcb, 0x46, + 0x5f, 0xe3, 0xfb, 0x84, 0x6e, 0x47, 0x73, 0x36, 0x4d, 0x6b, 0xc7, 0x53, 0x4d, 0xef, 0xdd, 0x55, + 0xcd, 0x3d, 0x6c, 0xd9, 0x01, 0x5f, 0xde, 0xab, 0xfb, 0xe5, 0x8a, 0x69, 0x5d, 0x76, 0x07, 0x41, + 0x36, 0x4d, 0x63, 0xaf, 0x2e, 0xbd, 0x8e, 0xb9, 0xb5, 0x8a, 0xf7, 0xb0, 0x17, 0x2e, 0xcd, 0x7f, + 0x77, 0xe7, 0x02, 0x6d, 0xb3, 0x6a, 0x3a, 0x6e, 0xa7, 0xbd, 0x6a, 0x6e, 0xd1, 0x78, 0xb1, 0x93, + 0x2a, 0x9f, 0x18, 0xe4, 0xd2, 0xf6, 0x30, 0xc9, 0x95, 0x0f, 0xe7, 0x62, 0x89, 0xca, 0x3c, 0x28, + 0xfe, 0x6f, 0x0d, 0xdc, 0xc1, 0x3b, 0xd8, 0xb1, 0xf6, 0xc9, 0xb5, 0x10, 0x93, 0x6a, 0x9f, 0x2f, + 0x6c, 0x80, 0x16, 0x9f, 0xac, 0x33, 0xe9, 0xcd, 0x73, 0x92, 0x3b, 0xd4, 0x64, 0x5d, 0x84, 0xe2, + 0x58, 0xae, 0xbd, 0x92, 0x5d, 0x6b, 0xe6, 0xe7, 0x65, 0xc8, 0x92, 0xc1, 0xf3, 0x8d, 0x19, 0x6e, + 0x85, 0x69, 0x07, 0xdb, 0xb6, 0xb6, 0x85, 0xbd, 0x15, 0x26, 0xf6, 0xaa, 0xdc, 0x09, 0xb9, 0x0e, + 0xc1, 0x94, 0x0e, 0x0e, 0x37, 0x70, 0x35, 0x73, 0x0d, 0x0c, 0x97, 0x96, 0x3f, 0x12, 0x10, 0xb8, + 0x55, 0xfa, 0xc7, 0xf9, 0x07, 0x20, 0x47, 0xe1, 0x9f, 0x82, 0xdc, 0x62, 0x79, 0x61, 0x63, 0xb9, + 0x70, 0xcc, 0x7d, 0xf4, 0xf8, 0x9b, 0x82, 0xdc, 0x52, 0xb1, 0x51, 0x5c, 0x2d, 0x48, 0x6e, 0x3d, + 0x2a, 0xd5, 0xa5, 0x5a, 0x41, 0x76, 0x13, 0xd7, 0x8b, 0xd5, 0x4a, 0xa9, 0x90, 0x55, 0xa6, 0x61, + 0xe2, 0x62, 0x51, 0xad, 0x56, 0xaa, 0xcb, 0x85, 0x1c, 0xfa, 0xdb, 0x30, 0x7e, 0x77, 0xf1, 0xf8, + 0xdd, 0x18, 0xc5, 0x53, 0x3f, 0xc8, 0x7e, 0xc1, 0x87, 0xec, 0x1e, 0x0e, 0xb2, 0xef, 0x14, 0x21, + 0x32, 0x06, 0x77, 0xa6, 0x3c, 0x4c, 0xac, 0x5b, 0x66, 0x0b, 0xdb, 0x36, 0xfa, 0x19, 0x09, 0xf2, + 0x25, 0xcd, 0x68, 0xe1, 0x0e, 0xba, 0x26, 0x80, 0x8a, 0xba, 0x8a, 0x66, 0xfc, 0xd3, 0x62, 0xff, + 0x98, 0x11, 0xed, 0xfd, 0x18, 0xdd, 0x79, 0x4a, 0x33, 0x42, 0x3e, 0x62, 0xbd, 0x5c, 0x2c, 0xa9, + 0x31, 0x5c, 0x8d, 0x23, 0xc1, 0x14, 0x5b, 0x0d, 0xb8, 0x84, 0xc3, 0xf3, 0xf0, 0xaf, 0x65, 0x44, + 0x27, 0x87, 0x5e, 0x0d, 0x7c, 0x32, 0x11, 0xf2, 0x10, 0x9b, 0x08, 0x0e, 0xa2, 0x36, 0x86, 0xcd, + 0x43, 0x09, 0xa6, 0x37, 0x0c, 0xbb, 0x9f, 0x50, 0xc4, 0xe3, 0xe8, 0x7b, 0xd5, 0x08, 0x11, 0x3a, + 0x54, 0x1c, 0xfd, 0xc1, 0xf4, 0xd2, 0x17, 0xcc, 0xd7, 0x32, 0x70, 0x72, 0x19, 0x1b, 0xd8, 0xd2, + 0x5b, 0xb4, 0x06, 0x9e, 0x24, 0xee, 0xe1, 0x25, 0xf1, 0x14, 0x8e, 0xf3, 0x7e, 0x7f, 0xf0, 0x12, + 0x78, 0x8d, 0x2f, 0x81, 0xfb, 0x39, 0x09, 0xdc, 0x2a, 0x48, 0x67, 0x0c, 0xf7, 0xa1, 0x4f, 0xc1, + 0x4c, 0xd5, 0x74, 0xf4, 0x4d, 0xbd, 0x45, 0x7d, 0xd0, 0x7e, 0x4e, 0x86, 0xec, 0xaa, 0x6e, 0x3b, + 0xa8, 0x18, 0x74, 0x27, 0xe7, 0x60, 0x5a, 0x37, 0x5a, 0x9d, 0xdd, 0x36, 0x56, 0xb1, 0x46, 0xfb, + 0x95, 0x49, 0x35, 0x9c, 0x14, 0x6c, 0xed, 0xbb, 0x6c, 0xc9, 0xde, 0xd6, 0xfe, 0x47, 0x85, 0x97, + 0x61, 0xc2, 0x2c, 0x90, 0x80, 0x94, 0x11, 0x76, 0x57, 0x11, 0x66, 0x8d, 0x50, 0x56, 0xcf, 0x60, + 0xef, 0xbd, 0x50, 0x20, 0x4c, 0x4e, 0xe5, 0xff, 0x40, 0xef, 0x16, 0x6a, 0xac, 0x83, 0x18, 0x4a, + 0x86, 0xcc, 0xd2, 0x10, 0x93, 0x64, 0x05, 0xe6, 0x2a, 0xd5, 0x46, 0x59, 0xad, 0x16, 0x57, 0x59, + 0x16, 0x19, 0x7d, 0x43, 0x82, 0x9c, 0x8a, 0xbb, 0x9d, 0xfd, 0x70, 0xc4, 0x68, 0xe6, 0x28, 0x9e, + 0xf1, 0x1d, 0xc5, 0x95, 0x25, 0x00, 0xad, 0xe5, 0x16, 0x4c, 0xae, 0xd4, 0x92, 0xfa, 0xc6, 0x31, + 0xe5, 0x2a, 0x58, 0xf4, 0x73, 0xab, 0xa1, 0x3f, 0xd1, 0x4b, 0x84, 0x77, 0x8e, 0x38, 0x6a, 0x84, + 0xc3, 0x88, 0x3e, 0xe1, 0x3d, 0x42, 0x9b, 0x3d, 0x03, 0xc9, 0x1d, 0x8d, 0xf8, 0x3f, 0x2b, 0x41, + 0xb6, 0xe1, 0xf6, 0x96, 0xa1, 0x8e, 0xf3, 0x8f, 0x86, 0xd3, 0x71, 0x97, 0x4c, 0x84, 0x8e, 0xdf, + 0x07, 0x33, 0x61, 0x8d, 0x65, 0xae, 0x12, 0xb1, 0x2a, 0xce, 0xfd, 0x30, 0x8c, 0x86, 0xf7, 0x61, + 0xe7, 0x68, 0x44, 0xfc, 0xe1, 0xa7, 0x02, 0xac, 0xe1, 0x9d, 0x4b, 0xd8, 0xb2, 0xb7, 0xf5, 0x2e, + 0xfa, 0x3b, 0x19, 0xa6, 0x96, 0xb1, 0x53, 0x77, 0x34, 0x67, 0xd7, 0xee, 0xd9, 0xee, 0x34, 0xcc, + 0x92, 0xd6, 0xda, 0xc6, 0xac, 0x3b, 0xf2, 0x5e, 0xd1, 0xdb, 0x65, 0x51, 0x7f, 0xa2, 0xa0, 0x9c, + 0x79, 0xbf, 0x8c, 0x08, 0x4c, 0x9e, 0x06, 0xd9, 0xb6, 0xe6, 0x68, 0x0c, 0x8b, 0x6b, 0x7a, 0xb0, + 0x08, 0x08, 0xa9, 0x24, 0x1b, 0xfa, 0x0d, 0x49, 0xc4, 0xa1, 0x48, 0xa0, 0xfc, 0x64, 0x20, 0xbc, + 0x3b, 0x33, 0x04, 0x0a, 0x27, 0x60, 0xb6, 0x5a, 0x6b, 0x34, 0x57, 0x6b, 0xcb, 0xcb, 0x65, 0x37, + 0xb5, 0x20, 0x2b, 0xa7, 0x41, 0x59, 0x2f, 0x3e, 0xb4, 0x56, 0xae, 0x36, 0x9a, 0xd5, 0xda, 0x62, + 0x99, 0xfd, 0x99, 0x55, 0x8e, 0xc3, 0x74, 0xa9, 0x58, 0x5a, 0xf1, 0x12, 0x72, 0xca, 0x19, 0x38, + 0xb9, 0x56, 0x5e, 0x5b, 0x28, 0xab, 0xf5, 0x95, 0xca, 0x7a, 0xd3, 0x25, 0xb3, 0x54, 0xdb, 0xa8, + 0x2e, 0x16, 0xf2, 0x0a, 0x82, 0xd3, 0xa1, 0x2f, 0x17, 0xd5, 0x5a, 0x75, 0xb9, 0x59, 0x6f, 0x14, + 0x1b, 0xe5, 0xc2, 0x84, 0x72, 0x15, 0x1c, 0x2f, 0x15, 0xab, 0x24, 0x7b, 0xa9, 0x56, 0xad, 0x96, + 0x4b, 0x8d, 0xc2, 0x24, 0xfa, 0xf7, 0x2c, 0x4c, 0x57, 0xec, 0xaa, 0xb6, 0x83, 0x2f, 0x68, 0x1d, + 0xbd, 0x8d, 0x5e, 0x1c, 0x9a, 0x79, 0xdc, 0x08, 0xb3, 0x16, 0x7d, 0xc4, 0xed, 0x86, 0x8e, 0x29, + 0x9a, 0xb3, 0x2a, 0x9f, 0xe8, 0xce, 0xc9, 0x0d, 0x42, 0xc0, 0x9b, 0x93, 0xd3, 0x37, 0x65, 0x01, + 0x80, 0x3e, 0x35, 0x82, 0xcb, 0x5d, 0xcf, 0xf7, 0xb6, 0x26, 0x6d, 0x07, 0xdb, 0xd8, 0xda, 0xd3, + 0x5b, 0xd8, 0xcb, 0xa9, 0x86, 0xfe, 0x42, 0x9f, 0x93, 0x45, 0xf7, 0x17, 0x43, 0xa0, 0x86, 0xaa, + 0x13, 0xd1, 0x1b, 0xfe, 0x98, 0x2c, 0xb2, 0x3b, 0x28, 0x44, 0x32, 0x99, 0xa6, 0xbc, 0x4c, 0x1a, + 0x6e, 0xd9, 0xb6, 0x51, 0xab, 0x35, 0xeb, 0x2b, 0x35, 0xb5, 0x51, 0x90, 0x95, 0x19, 0x98, 0x74, + 0x5f, 0x57, 0x6b, 0xd5, 0xe5, 0x42, 0x56, 0x39, 0x05, 0x27, 0x56, 0x8a, 0xf5, 0x66, 0xa5, 0x7a, + 0xa1, 0xb8, 0x5a, 0x59, 0x6c, 0x96, 0x56, 0x8a, 0x6a, 0xbd, 0x90, 0x53, 0xae, 0x81, 0x53, 0x8d, + 0x4a, 0x59, 0x6d, 0x2e, 0x95, 0x8b, 0x8d, 0x0d, 0xb5, 0x5c, 0x6f, 0x56, 0x6b, 0xcd, 0x6a, 0x71, + 0xad, 0x5c, 0xc8, 0xbb, 0xcd, 0x9f, 0x7c, 0x0a, 0xd4, 0x66, 0xe2, 0xa0, 0x32, 0x4e, 0x46, 0x28, + 0xe3, 0x54, 0xaf, 0x32, 0x42, 0x58, 0xad, 0xd4, 0x72, 0xbd, 0xac, 0x5e, 0x28, 0x17, 0xa6, 0xfb, + 0xe9, 0xda, 0x8c, 0x72, 0x12, 0x0a, 0x2e, 0x0f, 0xcd, 0x4a, 0xdd, 0xcb, 0xb9, 0x58, 0x98, 0x45, + 0x1f, 0xca, 0xc3, 0x69, 0x15, 0x6f, 0xe9, 0xb6, 0x83, 0xad, 0x75, 0x6d, 0x7f, 0x07, 0x1b, 0x8e, + 0xd7, 0xc9, 0xff, 0x4b, 0x62, 0x65, 0x5c, 0x83, 0xd9, 0x2e, 0xa5, 0xb1, 0x86, 0x9d, 0x6d, 0xb3, + 0xcd, 0x46, 0xe1, 0xa7, 0x44, 0xf6, 0x1c, 0xf3, 0xeb, 0xe1, 0xec, 0x2a, 0xff, 0x77, 0x48, 0xb7, + 0xe5, 0x18, 0xdd, 0xce, 0x0e, 0xa3, 0xdb, 0xca, 0x75, 0x30, 0xb5, 0x6b, 0x63, 0xab, 0xbc, 0xa3, + 0xe9, 0x1d, 0xef, 0x72, 0x4e, 0x3f, 0x01, 0xbd, 0x25, 0x2b, 0x7a, 0x62, 0x25, 0x54, 0x97, 0xfe, + 0x62, 0x8c, 0xe8, 0x5b, 0xcf, 0x02, 0xb0, 0xca, 0x6e, 0x58, 0x1d, 0xa6, 0xac, 0xa1, 0x14, 0x97, + 0xbf, 0x4b, 0x7a, 0xa7, 0xa3, 0x1b, 0x5b, 0xfe, 0xbe, 0x7f, 0x90, 0x80, 0x5e, 0x26, 0x8b, 0x9c, + 0x60, 0x49, 0xca, 0x5b, 0xb2, 0xd6, 0xf4, 0x12, 0x69, 0xcc, 0xfd, 0xee, 0xc1, 0xa6, 0x93, 0x57, + 0x0a, 0x30, 0x43, 0xd2, 0x58, 0x0b, 0x2c, 0x4c, 0xb8, 0x7d, 0xb0, 0x47, 0x6e, 0xad, 0xdc, 0x58, + 0xa9, 0x2d, 0xfa, 0xdf, 0x26, 0x5d, 0x92, 0x2e, 0x33, 0xc5, 0xea, 0x43, 0xa4, 0x35, 0x4e, 0x29, + 0x4f, 0x82, 0x6b, 0x42, 0x1d, 0x76, 0x71, 0x55, 0x2d, 0x17, 0x17, 0x1f, 0x6a, 0x96, 0x9f, 0x5b, + 0xa9, 0x37, 0xea, 0x7c, 0xe3, 0xf2, 0xda, 0xd1, 0xb4, 0xcb, 0x6f, 0x79, 0xad, 0x58, 0x59, 0x65, + 0xfd, 0xfb, 0x52, 0x4d, 0x5d, 0x2b, 0x36, 0x0a, 0x33, 0xe8, 0xe7, 0x65, 0x28, 0x2c, 0x63, 0x67, + 0xdd, 0xb4, 0x1c, 0xad, 0xb3, 0xaa, 0x1b, 0x97, 0x37, 0xac, 0x0e, 0x37, 0xd9, 0x14, 0x0e, 0xd3, + 0xc1, 0x0f, 0x91, 0x1c, 0xc1, 0xe8, 0x1d, 0xf1, 0x2e, 0xc9, 0x16, 0x28, 0x53, 0x90, 0x80, 0x9e, + 0x2f, 0x89, 0x2c, 0x77, 0x8b, 0x97, 0x9a, 0x4c, 0x4f, 0x5e, 0x30, 0xee, 0xf1, 0xb9, 0x0f, 0x6a, + 0x79, 0xf4, 0xa2, 0x2c, 0x4c, 0x2e, 0xe9, 0x86, 0xd6, 0xd1, 0x9f, 0xc7, 0xc5, 0x2f, 0x0d, 0xfa, + 0x98, 0x4c, 0x4c, 0x1f, 0x23, 0x0d, 0x35, 0x7e, 0xfe, 0x94, 0x2c, 0xba, 0xbc, 0x10, 0x92, 0xbd, + 0xc7, 0x64, 0xc4, 0xe0, 0xf9, 0x3e, 0x49, 0x64, 0x79, 0x61, 0x30, 0xbd, 0x64, 0x18, 0x7e, 0xe4, + 0x5b, 0xc3, 0xc6, 0xea, 0x69, 0xdf, 0x93, 0xfd, 0x54, 0x61, 0x0a, 0xfd, 0x99, 0x0c, 0x68, 0x19, + 0x3b, 0x17, 0xb0, 0xe5, 0x4f, 0x05, 0x48, 0xaf, 0xcf, 0xec, 0xed, 0x50, 0x93, 0x7d, 0x63, 0x18, + 0xc0, 0x8b, 0x3c, 0x80, 0xc5, 0x98, 0xc6, 0x13, 0x41, 0x3a, 0xa2, 0xf1, 0x56, 0x20, 0x6f, 0x93, + 0xef, 0x4c, 0xcd, 0x9e, 0x1e, 0x3d, 0x5c, 0x12, 0x62, 0x61, 0xea, 0x94, 0xb0, 0xca, 0x08, 0xa0, + 0xaf, 0xfb, 0x93, 0xa0, 0xef, 0xe5, 0xb4, 0x63, 0xe9, 0xd0, 0xcc, 0x26, 0xd3, 0x17, 0x2b, 0x5d, + 0x75, 0xe9, 0x67, 0xdf, 0xa0, 0xf7, 0xe5, 0xe0, 0x64, 0xbf, 0xea, 0xa0, 0xdf, 0xcc, 0x70, 0x3b, + 0xec, 0x98, 0x0c, 0xf9, 0x19, 0xb6, 0x81, 0xe8, 0xbe, 0x28, 0xcf, 0x84, 0x53, 0xfe, 0x32, 0x5c, + 0xc3, 0xac, 0xe2, 0x2b, 0x76, 0x07, 0x3b, 0x0e, 0xb6, 0x48, 0xd5, 0x26, 0xd5, 0xfe, 0x1f, 0x95, + 0x67, 0xc3, 0xd5, 0xba, 0x61, 0xeb, 0x6d, 0x6c, 0x35, 0xf4, 0xae, 0x5d, 0x34, 0xda, 0x8d, 0x5d, + 0xc7, 0xb4, 0x74, 0x8d, 0x5d, 0x25, 0x39, 0xa9, 0x46, 0x7d, 0x56, 0x6e, 0x81, 0x82, 0x6e, 0xd7, + 0x8c, 0x4b, 0xa6, 0x66, 0xb5, 0x75, 0x63, 0x6b, 0x55, 0xb7, 0x1d, 0xe6, 0x01, 0x7c, 0x20, 0x1d, + 0xfd, 0xbd, 0x2c, 0x7a, 0x98, 0x6e, 0x00, 0xac, 0x11, 0x1d, 0xca, 0x8f, 0xca, 0x22, 0xc7, 0xe3, + 0x92, 0xd1, 0x4e, 0xa6, 0x2c, 0x2f, 0x1c, 0xb7, 0x21, 0xd1, 0x7f, 0x04, 0x27, 0x5d, 0x0b, 0x4d, + 0xf7, 0x0c, 0x81, 0x0b, 0x65, 0xb5, 0xb2, 0x54, 0x29, 0xbb, 0x66, 0xc5, 0x29, 0x38, 0x11, 0x7c, + 0x5b, 0x7c, 0xa8, 0x59, 0x2f, 0x57, 0x1b, 0x85, 0x49, 0xb7, 0x9f, 0xa2, 0xc9, 0x4b, 0xc5, 0xca, + 0x6a, 0x79, 0xb1, 0xd9, 0xa8, 0xb9, 0x5f, 0x16, 0x87, 0x33, 0x2d, 0xd0, 0xa3, 0x59, 0x38, 0x4e, + 0x64, 0xbb, 0x4f, 0xa4, 0xea, 0x0a, 0xa5, 0xc7, 0xd7, 0xd6, 0x07, 0x68, 0x8a, 0x8a, 0x17, 0x7d, + 0x5c, 0xf8, 0xa6, 0xcc, 0x10, 0x84, 0x3d, 0x65, 0x44, 0x68, 0xc6, 0xd7, 0x24, 0x91, 0x08, 0x15, + 0xc2, 0x64, 0x93, 0x29, 0xc5, 0xbf, 0x8e, 0x7b, 0xc4, 0x89, 0x06, 0x9f, 0x58, 0x99, 0x25, 0xf2, + 0xf3, 0x73, 0xd7, 0x2b, 0x2a, 0x51, 0x87, 0x39, 0x00, 0x92, 0x42, 0x34, 0x88, 0xea, 0x41, 0xdf, + 0xf1, 0x2a, 0x4a, 0x0f, 0x8a, 0xa5, 0x46, 0xe5, 0x42, 0x39, 0x4a, 0x0f, 0x3e, 0x26, 0xc3, 0xe4, + 0x32, 0x76, 0xdc, 0x39, 0x95, 0x8d, 0x9e, 0x23, 0xb0, 0xfe, 0xe3, 0x9a, 0x31, 0x1d, 0xb3, 0xa5, + 0x75, 0xfc, 0x65, 0x00, 0xfa, 0x86, 0x7e, 0x64, 0x18, 0x13, 0xc4, 0x2b, 0x3a, 0x62, 0xbc, 0xfa, + 0x6e, 0xc8, 0x39, 0xee, 0x67, 0xb6, 0x0c, 0xfd, 0x1d, 0x91, 0xc3, 0x95, 0x4b, 0x64, 0x51, 0x73, + 0x34, 0x95, 0xe6, 0x0f, 0x8d, 0x4e, 0x82, 0xb6, 0x4b, 0x04, 0x23, 0xdf, 0x8a, 0xf6, 0xe7, 0xdf, + 0xca, 0x70, 0x8a, 0xb6, 0x8f, 0x62, 0xb7, 0x5b, 0x77, 0x4c, 0x0b, 0xab, 0xb8, 0x85, 0xf5, 0xae, + 0xd3, 0xb3, 0xbe, 0x67, 0xd1, 0x54, 0x6f, 0xb3, 0x99, 0xbd, 0xa2, 0x5f, 0x92, 0x45, 0x63, 0x30, + 0x1f, 0x68, 0x8f, 0x3d, 0xe5, 0x45, 0x34, 0xf6, 0x0f, 0x4a, 0x22, 0x51, 0x95, 0x13, 0x12, 0x4f, + 0x06, 0xd4, 0xef, 0x1d, 0x01, 0x50, 0xde, 0xca, 0x8d, 0x5a, 0x2e, 0x95, 0x2b, 0xeb, 0xee, 0x20, + 0x70, 0x3d, 0x5c, 0xbb, 0xbe, 0xa1, 0x96, 0x56, 0x8a, 0xf5, 0x72, 0x53, 0x2d, 0x2f, 0x57, 0xea, + 0x0d, 0xe6, 0x94, 0x45, 0xff, 0x9a, 0x50, 0xae, 0x83, 0x33, 0xf5, 0x8d, 0x85, 0x7a, 0x49, 0xad, + 0xac, 0x93, 0x74, 0xb5, 0x5c, 0x2d, 0x5f, 0x64, 0x5f, 0x27, 0xd1, 0x7b, 0x0b, 0x30, 0xed, 0x4e, + 0x00, 0xea, 0x74, 0x5e, 0x80, 0xbe, 0x9c, 0x85, 0x69, 0x15, 0xdb, 0x66, 0x67, 0x8f, 0xcc, 0x11, + 0xc6, 0x35, 0xf5, 0xf8, 0xaa, 0x2c, 0x7a, 0x7e, 0x3b, 0xc4, 0xec, 0x7c, 0x88, 0xd1, 0xe8, 0x89, + 0xa6, 0xb6, 0xa7, 0xe9, 0x1d, 0xed, 0x12, 0xeb, 0x6a, 0x26, 0xd5, 0x20, 0x41, 0x99, 0x07, 0xc5, + 0xbc, 0x62, 0x60, 0xab, 0xde, 0xba, 0x52, 0x76, 0xb6, 0x8b, 0xed, 0xb6, 0x85, 0x6d, 0x9b, 0xad, + 0x5e, 0xf4, 0xf9, 0xa2, 0xdc, 0x0c, 0xc7, 0x49, 0x6a, 0x28, 0x33, 0x75, 0x90, 0xe9, 0x4d, 0xf6, + 0x73, 0x16, 0x8d, 0x7d, 0x2f, 0x67, 0x2e, 0x94, 0x33, 0x48, 0x0e, 0x1f, 0x97, 0xc8, 0xf3, 0xa7, + 0x74, 0xce, 0xc1, 0xb4, 0xa1, 0xed, 0xe0, 0xf2, 0x23, 0x5d, 0xdd, 0xc2, 0x36, 0x71, 0x8c, 0x91, + 0xd5, 0x70, 0x12, 0x7a, 0x9f, 0xd0, 0x79, 0x73, 0x31, 0x89, 0x25, 0xd3, 0xfd, 0xe5, 0x21, 0x54, + 0xbf, 0x4f, 0x3f, 0x23, 0xa3, 0xf7, 0xca, 0x30, 0xc3, 0x98, 0x2a, 0x1a, 0xfb, 0x95, 0x36, 0xba, + 0x9e, 0x33, 0x7e, 0x35, 0x37, 0xcd, 0x33, 0x7e, 0xc9, 0x0b, 0xfa, 0x71, 0x59, 0xd4, 0xdd, 0xb9, + 0x4f, 0xc5, 0x49, 0x19, 0xd1, 0x8e, 0xa3, 0x9b, 0xe6, 0x2e, 0x73, 0x54, 0x9d, 0x54, 0xe9, 0x4b, + 0x9a, 0x8b, 0x7a, 0xe8, 0x77, 0x85, 0x9c, 0xa9, 0x05, 0xab, 0x71, 0x44, 0x00, 0x7e, 0x58, 0x86, + 0x39, 0xc6, 0x55, 0x9d, 0x9d, 0xf3, 0x11, 0x3a, 0xf0, 0xf6, 0x13, 0xc2, 0x86, 0x60, 0x9f, 0xfa, + 0xb3, 0x92, 0x9e, 0x30, 0x40, 0xbe, 0x5f, 0x28, 0x38, 0x9a, 0x70, 0x45, 0x8e, 0x08, 0xca, 0xb7, + 0x66, 0x61, 0x7a, 0xc3, 0xc6, 0x16, 0xf3, 0xdb, 0x47, 0xaf, 0xcb, 0x82, 0xbc, 0x8c, 0xb9, 0x8d, + 0xd4, 0x97, 0x0a, 0x7b, 0xf8, 0x86, 0x2b, 0x1b, 0x22, 0xea, 0xda, 0x48, 0x11, 0xb0, 0xdd, 0x04, + 0x73, 0x54, 0xa4, 0x45, 0xc7, 0x71, 0x8d, 0x44, 0xcf, 0x9b, 0xb6, 0x27, 0x75, 0x14, 0x5b, 0x45, + 0xa4, 0x2c, 0x37, 0x4b, 0xc9, 0xe5, 0x69, 0x15, 0x6f, 0xd2, 0xf9, 0x6c, 0x56, 0xed, 0x49, 0x55, + 0x6e, 0x87, 0xab, 0xcc, 0x2e, 0xa6, 0xe7, 0x57, 0x42, 0x99, 0x73, 0x24, 0x73, 0xbf, 0x4f, 0xe8, + 0xcb, 0x42, 0xbe, 0xba, 0xe2, 0xd2, 0x49, 0xa6, 0x0b, 0xdd, 0xd1, 0x98, 0x24, 0x27, 0xa1, 0xe0, + 0xe6, 0x20, 0xfb, 0x2f, 0x6a, 0xb9, 0x5e, 0x5b, 0xbd, 0x50, 0xee, 0xbf, 0x8c, 0x91, 0x43, 0x2f, + 0x94, 0x61, 0x6a, 0xc1, 0x32, 0xb5, 0x76, 0x4b, 0xb3, 0x1d, 0xf4, 0x75, 0x09, 0x66, 0xd6, 0xb5, + 0xfd, 0x8e, 0xa9, 0xb5, 0x89, 0x7f, 0x7f, 0x4f, 0x5f, 0xd0, 0xa5, 0x9f, 0xbc, 0xbe, 0x80, 0xbd, + 0xf2, 0x07, 0x03, 0xfd, 0xa3, 0x7b, 0x19, 0x91, 0x0b, 0x35, 0xfd, 0x6d, 0x3e, 0xa9, 0x5f, 0xb0, + 0x52, 0x8f, 0xaf, 0xf9, 0x30, 0x4f, 0x11, 0x16, 0xe5, 0x7b, 0xc5, 0xc2, 0x8f, 0x8a, 0x90, 0x3c, + 0x9a, 0x5d, 0xf9, 0x17, 0x4d, 0x42, 0x7e, 0x11, 0x13, 0x2b, 0xee, 0x7f, 0x48, 0x30, 0x51, 0xc7, + 0x0e, 0xb1, 0xe0, 0xee, 0xe4, 0x3c, 0x85, 0xdb, 0x24, 0x43, 0xe0, 0xc4, 0xee, 0xbd, 0xbb, 0x93, + 0xf5, 0xd0, 0x79, 0x6b, 0xf2, 0x9c, 0xc0, 0x23, 0x91, 0x96, 0x3b, 0xcf, 0xca, 0x3c, 0x94, 0x47, + 0x62, 0x2c, 0xa9, 0xf4, 0x7d, 0xad, 0xde, 0x2e, 0x31, 0xd7, 0xaa, 0x50, 0xaf, 0xf7, 0x8b, 0x61, + 0xfd, 0x8c, 0xf5, 0x36, 0x63, 0xcc, 0xc7, 0x38, 0x47, 0x3d, 0x03, 0x26, 0xa8, 0xcc, 0xbd, 0xf9, + 0x68, 0xaf, 0x9f, 0x02, 0x25, 0x41, 0xce, 0x5e, 0x7b, 0x39, 0x05, 0x5d, 0xd4, 0xa2, 0x0b, 0x1f, + 0x4b, 0x0c, 0x82, 0x99, 0x2a, 0x76, 0xae, 0x98, 0xd6, 0xe5, 0xba, 0xa3, 0x39, 0x18, 0xfd, 0xab, + 0x04, 0x72, 0x1d, 0x3b, 0xe1, 0xe8, 0x27, 0x55, 0x38, 0x41, 0x2b, 0xc4, 0x32, 0x92, 0xfe, 0x9b, + 0x56, 0xe4, 0x5c, 0x5f, 0x21, 0x84, 0xf2, 0xa9, 0x07, 0x7f, 0x45, 0x3f, 0xd3, 0x37, 0xe8, 0x93, + 0xd4, 0x67, 0xd2, 0xc0, 0x24, 0x13, 0x66, 0xd0, 0x55, 0xb0, 0x08, 0x3d, 0xfd, 0x1d, 0x21, 0xb3, + 0x5a, 0x8c, 0xe6, 0xd1, 0x74, 0x05, 0xef, 0xbf, 0x06, 0xb2, 0xa5, 0x6d, 0xcd, 0x41, 0x6f, 0x93, + 0x01, 0x8a, 0xed, 0xf6, 0x1a, 0xf5, 0x01, 0x0f, 0x3b, 0xa4, 0x9d, 0x87, 0x99, 0xd6, 0xb6, 0x16, + 0xdc, 0x6d, 0x42, 0xfb, 0x03, 0x2e, 0x4d, 0x79, 0x66, 0xe0, 0x4c, 0x4e, 0xa5, 0x8a, 0x7a, 0x60, + 0x72, 0xcb, 0x60, 0xb4, 0x7d, 0x47, 0x73, 0x3e, 0x14, 0x66, 0xec, 0x11, 0x3a, 0xf7, 0xf7, 0xf9, + 0x80, 0xbd, 0xe8, 0x39, 0x1c, 0x23, 0xed, 0x1f, 0xb0, 0x09, 0x12, 0x12, 0x9e, 0xf4, 0x16, 0x0b, + 0xe8, 0x11, 0xcf, 0xd7, 0x58, 0x42, 0xd7, 0x2a, 0xe5, 0xb6, 0xee, 0x89, 0x96, 0x05, 0xcc, 0x42, + 0x2f, 0xc9, 0x24, 0x83, 0x2f, 0x5e, 0x70, 0xf7, 0xc3, 0x2c, 0x6e, 0xeb, 0x0e, 0xf6, 0x6a, 0xc9, + 0x04, 0x18, 0x07, 0x31, 0xff, 0x03, 0x7a, 0x81, 0x70, 0xd0, 0x35, 0x22, 0xd0, 0x83, 0x35, 0x8a, + 0x68, 0x7f, 0x62, 0x61, 0xd4, 0xc4, 0x68, 0xa6, 0x0f, 0xd6, 0x8f, 0xc8, 0x70, 0xaa, 0x61, 0x6e, + 0x6d, 0x75, 0xb0, 0x27, 0x26, 0x4c, 0xbd, 0x33, 0x91, 0x36, 0x4a, 0xb8, 0xc8, 0x4e, 0x90, 0xf9, + 0xb0, 0xee, 0x1f, 0x25, 0x73, 0x5f, 0xf8, 0x13, 0x53, 0xb1, 0xb3, 0x28, 0x22, 0xae, 0xbe, 0x7c, + 0x46, 0xa0, 0x20, 0x16, 0xf0, 0x59, 0x98, 0x6c, 0xfa, 0x40, 0x7c, 0x5a, 0x82, 0x59, 0x7a, 0x73, + 0xa5, 0xa7, 0xa0, 0x0f, 0x8e, 0x10, 0x00, 0xf4, 0xf5, 0x8c, 0xa8, 0x9f, 0x2d, 0x91, 0x09, 0xc7, + 0x49, 0x84, 0x88, 0xc5, 0x82, 0xaa, 0x0c, 0x24, 0x97, 0xbe, 0x68, 0xff, 0x58, 0x86, 0xe9, 0x65, + 0xec, 0xb5, 0x34, 0x3b, 0x71, 0x4f, 0x74, 0x1e, 0x66, 0xc8, 0xf5, 0x6d, 0x35, 0x76, 0x4c, 0x92, + 0xae, 0x9a, 0x71, 0x69, 0xca, 0x8d, 0x30, 0x7b, 0x09, 0x6f, 0x9a, 0x16, 0xae, 0x71, 0x67, 0x29, + 0xf9, 0xc4, 0x88, 0xf0, 0x74, 0x5c, 0x1c, 0xb4, 0x05, 0x1e, 0x9b, 0x5b, 0x0f, 0x0a, 0x33, 0x54, + 0x95, 0x88, 0x31, 0xe7, 0x59, 0x30, 0xc9, 0x90, 0xf7, 0xcc, 0xb4, 0xb8, 0x7e, 0xd1, 0xcf, 0x8b, + 0xde, 0xe0, 0x23, 0x5a, 0xe6, 0x10, 0x7d, 0x7a, 0x12, 0x26, 0xc6, 0x72, 0xbf, 0x7b, 0x21, 0x54, + 0xfe, 0xc2, 0x7e, 0xa5, 0x6d, 0xa3, 0xb5, 0x64, 0x98, 0x9e, 0x05, 0xf0, 0x1b, 0x87, 0x17, 0xd6, + 0x22, 0x94, 0xc2, 0x47, 0xae, 0x8f, 0x3d, 0xa8, 0xd7, 0x2b, 0x0e, 0xc2, 0xce, 0x88, 0x81, 0x11, + 0x3b, 0xe0, 0x27, 0xc2, 0x49, 0xfa, 0xe8, 0x7c, 0x54, 0x86, 0x53, 0xfe, 0xf9, 0xa3, 0x55, 0xcd, + 0x0e, 0xda, 0x5d, 0x29, 0x19, 0x44, 0xdc, 0x81, 0x0f, 0xbf, 0xb1, 0x7c, 0x25, 0xd9, 0x98, 0xd1, + 0x97, 0x93, 0xd1, 0xa2, 0xa3, 0xdc, 0x0a, 0x27, 0x8c, 0xdd, 0x1d, 0x5f, 0xea, 0xa4, 0xc5, 0xb3, + 0x16, 0x7e, 0xf0, 0x43, 0x92, 0x91, 0x49, 0x84, 0xf9, 0xb1, 0xcc, 0x29, 0xb9, 0x23, 0x5d, 0x4f, + 0x4b, 0x04, 0x23, 0xfa, 0xe7, 0x4c, 0xa2, 0xde, 0x6d, 0xf0, 0x99, 0xaf, 0x04, 0xbd, 0xd4, 0x11, + 0x1e, 0xf8, 0x3a, 0x3f, 0x01, 0xb9, 0xf2, 0x4e, 0xd7, 0xd9, 0x3f, 0xff, 0x64, 0x98, 0xad, 0x3b, + 0x16, 0xd6, 0x76, 0x42, 0x3b, 0x03, 0x8e, 0x79, 0x19, 0x1b, 0xde, 0xce, 0x00, 0x79, 0xb9, 0xeb, + 0x4e, 0x98, 0x30, 0xcc, 0xa6, 0xb6, 0xeb, 0x6c, 0x2b, 0xd7, 0x1f, 0x38, 0x52, 0xcf, 0xc0, 0xaf, + 0xb1, 0x18, 0x46, 0x9f, 0xbb, 0x9b, 0xac, 0x0d, 0xe7, 0x0d, 0xb3, 0xb8, 0xeb, 0x6c, 0x2f, 0x5c, + 0xf7, 0xe1, 0xbf, 0x39, 0x9b, 0xf9, 0xd8, 0xdf, 0x9c, 0xcd, 0x7c, 0xf6, 0x6f, 0xce, 0x66, 0x7e, + 0xe2, 0xf3, 0x67, 0x8f, 0x7d, 0xec, 0xf3, 0x67, 0x8f, 0x7d, 0xfa, 0xf3, 0x67, 0x8f, 0x7d, 0xaf, + 0xd4, 0xbd, 0x74, 0x29, 0x4f, 0xa8, 0x3c, 0xe3, 0xff, 0x0d, 0x00, 0x00, 0xff, 0xff, 0xeb, 0xa8, + 0x5c, 0x9b, 0xeb, 0x0a, 0x02, 0x00, } func (m *Rpc) Marshal() (dAtA []byte, err error) { @@ -88736,6 +88801,18 @@ func (m *RpcObjectListExportRequest) MarshalToSizedBuffer(dAtA []byte) (int, err _ = i var l int _ = l + if m.LinksStateFilters != nil { + { + size, err := m.LinksStateFilters.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCommands(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x62 + } if m.NoProgress { i-- if m.NoProgress { @@ -88827,6 +88904,48 @@ func (m *RpcObjectListExportRequest) MarshalToSizedBuffer(dAtA []byte) (int, err return len(dAtA) - i, nil } +func (m *RpcObjectListExportStateFilters) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcObjectListExportStateFilters) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcObjectListExportStateFilters) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.OnlyRootBlock { + i-- + if m.OnlyRootBlock { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x10 + } + if len(m.RelationsWhiteList) > 0 { + for iNdEx := len(m.RelationsWhiteList) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.RelationsWhiteList[iNdEx]) + copy(dAtA[i:], m.RelationsWhiteList[iNdEx]) + i = encodeVarintCommands(dAtA, i, uint64(len(m.RelationsWhiteList[iNdEx]))) + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + func (m *RpcObjectListExportResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -125335,6 +125454,28 @@ func (m *RpcObjectListExportRequest) Size() (n int) { if m.NoProgress { n += 2 } + if m.LinksStateFilters != nil { + l = m.LinksStateFilters.Size() + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + +func (m *RpcObjectListExportStateFilters) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.RelationsWhiteList) > 0 { + for _, s := range m.RelationsWhiteList { + l = len(s) + n += 1 + l + sovCommands(uint64(l)) + } + } + if m.OnlyRootBlock { + n += 2 + } return n } @@ -179165,6 +179306,144 @@ func (m *RpcObjectListExportRequest) Unmarshal(dAtA []byte) error { } } m.NoProgress = bool(v != 0) + case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LinksStateFilters", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.LinksStateFilters == nil { + m.LinksStateFilters = &RpcObjectListExportStateFilters{} + } + if err := m.LinksStateFilters.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcObjectListExportStateFilters) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: StateFilters: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: StateFilters: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RelationsWhiteList", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RelationsWhiteList = append(m.RelationsWhiteList, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field OnlyRootBlock", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.OnlyRootBlock = bool(v != 0) default: iNdEx = preIndex skippy, err := skipCommands(dAtA[iNdEx:]) diff --git a/pb/protos/commands.proto b/pb/protos/commands.proto index 1936b1602..6151d7c13 100644 --- a/pb/protos/commands.proto +++ b/pb/protos/commands.proto @@ -2782,8 +2782,13 @@ message Rpc { bool includeArchived = 9; // for integrations like raycast and web publishing bool noProgress = 11; + StateFilters linksStateFilters = 12; } + message StateFilters { + repeated string relationsWhiteList = 1; + bool onlyRootBlock = 2; + } message Response { Error error = 1; string path = 2; From 6842e8261e7563b7a19103e727c55773150a1c7b Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Thu, 23 Jan 2025 23:10:40 +0100 Subject: [PATCH 219/279] GO-4146 Update any-sync --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 7619aeaae..9b60a2501 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( github.com/VividCortex/ewma v1.2.0 github.com/adrium/goheif v0.0.0-20230113233934-ca402e77a786 github.com/anyproto/any-store v0.1.4 - github.com/anyproto/any-sync v0.6.0-alpha.5.0.20250122101259-cc0878975c43 + github.com/anyproto/any-sync v0.6.0-alpha.6 github.com/anyproto/anytype-publish-server/publishclient v0.0.0-20241223184559-a5cacfe0950a github.com/anyproto/go-chash v0.1.0 github.com/anyproto/go-naturaldate/v2 v2.0.2-0.20230524105841-9829cfd13438 diff --git a/go.sum b/go.sum index e3087a084..f5b182d1f 100644 --- a/go.sum +++ b/go.sum @@ -84,8 +84,8 @@ github.com/andybalholm/cascadia v1.3.3 h1:AG2YHrzJIm4BZ19iwJ/DAua6Btl3IwJX+VI4kk github.com/andybalholm/cascadia v1.3.3/go.mod h1:xNd9bqTn98Ln4DwST8/nG+H0yuB8Hmgu1YHNnWw0GeA= github.com/anyproto/any-store v0.1.4 h1:rIxMA2XugPtdHl2S/XWnNFAMxdBysFMT9ORoJWdWQwM= github.com/anyproto/any-store v0.1.4/go.mod h1:nbyRoJYOlvSWU1xDOrmgPP96UeoTf4eYZ9k+qqLK9k8= -github.com/anyproto/any-sync v0.6.0-alpha.5.0.20250122101259-cc0878975c43 h1:EB20eBqUFzAXG1c9n9D8Y+8k7QkKbxjKVarACM0nLRM= -github.com/anyproto/any-sync v0.6.0-alpha.5.0.20250122101259-cc0878975c43/go.mod h1:Y8IxYfNrHzIKStyErWKeRIPehvqP2vT0B2T+FAhu5Zc= +github.com/anyproto/any-sync v0.6.0-alpha.6 h1:cny2XGMbjd52onip9g3mon7lkNithv5x8yvx45WlyDQ= +github.com/anyproto/any-sync v0.6.0-alpha.6/go.mod h1:Y8IxYfNrHzIKStyErWKeRIPehvqP2vT0B2T+FAhu5Zc= github.com/anyproto/anytype-publish-server/publishclient v0.0.0-20241223184559-a5cacfe0950a h1:kSNyLHsZ40JxlRAglr85YXH2ik2LH3AH5Hd3JL42KGo= github.com/anyproto/anytype-publish-server/publishclient v0.0.0-20241223184559-a5cacfe0950a/go.mod h1:4fkueCZcGniSMXkrwESO8zzERrh/L7WHimRNWecfGM0= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580 h1:Ba80IlCCxkZ9H1GF+7vFu/TSpPvbpDCxXJ5ogc4euYc= From a5e5d1e8f549d9be151ee7cbe484cb942edecfe4 Mon Sep 17 00:00:00 2001 From: Anatolii Smolianinov Date: Fri, 24 Jan 2025 13:32:01 +0100 Subject: [PATCH 220/279] GO-4943 use any.org domain --- core/publish/service.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/publish/service.go b/core/publish/service.go index dc1c9f702..de00232b3 100644 --- a/core/publish/service.go +++ b/core/publish/service.go @@ -39,9 +39,9 @@ const CName = "common.core.publishservice" const ( membershipLimit = 100 << 20 defaultLimit = 10 << 20 - inviteLinkUrlTemplate = "https://invite.any.coop/%s#%s" - memberUrlTemplate = "https://%s.coop" - defaultUrlTemplate = "https://any.coop/%s" + inviteLinkUrlTemplate = "https://invite.any.org/%s#%s" + memberUrlTemplate = "https://%s.org" + defaultUrlTemplate = "https://any.org/%s" indexFileName = "index.json.gz" ) From 4a9a5f7b974f63ebda6f2097bb0c5cb81ec4609a Mon Sep 17 00:00:00 2001 From: Anatolii Smolianinov Date: Fri, 24 Jan 2025 13:42:35 +0100 Subject: [PATCH 221/279] GO-4943 fix invite links --- core/publish/service.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/publish/service.go b/core/publish/service.go index de00232b3..f0223d28e 100644 --- a/core/publish/service.go +++ b/core/publish/service.go @@ -39,7 +39,7 @@ const CName = "common.core.publishservice" const ( membershipLimit = 100 << 20 defaultLimit = 10 << 20 - inviteLinkUrlTemplate = "https://invite.any.org/%s#%s" + inviteLinkUrlTemplate = "https://invite.any.coop/%s#%s" memberUrlTemplate = "https://%s.org" defaultUrlTemplate = "https://any.org/%s" indexFileName = "index.json.gz" From 2c1a9b8817795082f7eac1d7dd0d930f170b8d4c Mon Sep 17 00:00:00 2001 From: Anatolii Smolianinov Date: Fri, 24 Jan 2025 15:53:29 +0100 Subject: [PATCH 222/279] GO-4943 use any.coop for free users --- core/publish/service.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/publish/service.go b/core/publish/service.go index f0223d28e..ac2593ae3 100644 --- a/core/publish/service.go +++ b/core/publish/service.go @@ -41,7 +41,7 @@ const ( defaultLimit = 10 << 20 inviteLinkUrlTemplate = "https://invite.any.coop/%s#%s" memberUrlTemplate = "https://%s.org" - defaultUrlTemplate = "https://any.org/%s" + defaultUrlTemplate = "https://any.coop/%s" indexFileName = "index.json.gz" ) From d46d512b22766da5568928dfb2ccca59341b7b7c Mon Sep 17 00:00:00 2001 From: AnastasiaShemyakinskaya Date: Fri, 24 Jan 2025 16:21:55 +0100 Subject: [PATCH 223/279] GO-4889: add state filters Signed-off-by: AnastasiaShemyakinskaya --- core/block/editor/state/state.go | 52 +- core/block/editor/state/state_test.go | 210 ++ core/block/export/export.go | 20 +- core/block/export/export_test.go | 260 ++- core/publish/relationswhitelist.go | 70 + core/publish/service.go | 38 +- core/publish/service_test.go | 2 +- docs/proto.md | 21 +- pb/commands.pb.go | 2734 +++++++++++++------------ pb/protos/commands.proto | 9 +- 10 files changed, 2092 insertions(+), 1324 deletions(-) create mode 100644 core/publish/relationswhitelist.go diff --git a/core/block/editor/state/state.go b/core/block/editor/state/state.go index 3af2522b1..6ad6b8143 100644 --- a/core/block/editor/state/state.go +++ b/core/block/editor/state/state.go @@ -140,22 +140,22 @@ type State struct { originalCreatedTimestamp int64 // pass here from snapshots when importing objects or used for derived objects such as relations, types and etc } +type RelationsByLayout map[model.ObjectTypeLayout][]domain.RelationKey + type Filters struct { - RelationsWhiteList []string - OnlyRootBlock bool + RelationsWhiteList RelationsByLayout + RemoveBlocks bool } func (s *State) Filter(filters *Filters) *State { if filters == nil { return s } - if filters.OnlyRootBlock { - resultBlocks := make(map[string]simple.Block, 1) - resultBlocks[s.rootId] = s.blocks[s.rootId] - s.blocks = resultBlocks + if filters.RemoveBlocks { + s.filterBlocks() } if len(filters.RelationsWhiteList) > 0 { - s.cutRelations(filters) + s.filterRelations(filters) } if s.parent != nil { s.parent = s.parent.Filter(filters) @@ -163,21 +163,43 @@ func (s *State) Filter(filters *Filters) *State { return s } -func (s *State) cutRelations(filters *Filters) { +func (s *State) filterBlocks() { + resultBlocks := make(map[string]simple.Block) + if block, ok := s.blocks[s.rootId]; ok { + resultBlocks[s.rootId] = block + } + s.blocks = resultBlocks +} + +func (s *State) filterRelations(filters *Filters) { resultDetails := domain.NewDetails() - s.relationLinks = pbtypes.RelationLinks{} + layout, _ := s.Layout() + relationKeys := filters.RelationsWhiteList[layout] + var updatedRelationLinks pbtypes.RelationLinks for key, value := range s.details.Iterate() { - if slices.Contains(filters.RelationsWhiteList, key.String()) { + if slices.Contains(relationKeys, key) { resultDetails.Set(key, value) + updatedRelationLinks = append(updatedRelationLinks, s.relationLinks.Get(key.String())) + continue } } - if resultDetails.Len() != len(filters.RelationsWhiteList) { - for key, value := range s.localDetails.Iterate() { - if slices.Contains(filters.RelationsWhiteList, key.String()) { - resultDetails.Set(key, value) - } + s.details = resultDetails + if resultDetails.Len() == 0 { + s.details = nil + } + resultLocalDetails := domain.NewDetails() + for key, value := range s.localDetails.Iterate() { + if slices.Contains(relationKeys, key) { + resultLocalDetails.Set(key, value) + updatedRelationLinks = append(updatedRelationLinks, s.relationLinks.Get(key.String())) + continue } } + s.localDetails = resultLocalDetails + if resultLocalDetails.Len() == 0 { + s.localDetails = nil + } + s.relationLinks = updatedRelationLinks } func (s *State) MigrationVersion() uint32 { diff --git a/core/block/editor/state/state_test.go b/core/block/editor/state/state_test.go index c99f9dd4c..816580ba3 100644 --- a/core/block/editor/state/state_test.go +++ b/core/block/editor/state/state_test.go @@ -2977,3 +2977,213 @@ func TestState_AddRelationLinks(t *testing.T) { assert.Len(t, s.GetRelationLinks(), 1) }) } + +func TestFilter(t *testing.T) { + t.Run("no filters", func(t *testing.T) { + // given + st := buildStateFromAST(blockbuilder.Root( + blockbuilder.ID("root"), + blockbuilder.Children( + blockbuilder.Text( + " text 1 ", + blockbuilder.ID("1"), + ), + blockbuilder.Text( + " text 2 ", + blockbuilder.ID("2"), + ), + ))) + st.AddDetails(domain.NewDetailsFromMap(map[domain.RelationKey]domain.Value{ + bundle.RelationKeyCoverType: domain.Int64(1), + bundle.RelationKeyName: domain.String("name"), + bundle.RelationKeyAssignee: domain.String("assignee"), + bundle.RelationKeyLayout: domain.Int64(model.ObjectType_todo), + })) + st.AddRelationLinks(&model.RelationLink{ + Key: bundle.RelationKeyCoverType.String(), + Format: model.RelationFormat_number, + }, + &model.RelationLink{ + Key: bundle.RelationKeyName.String(), + Format: model.RelationFormat_longtext, + }, + &model.RelationLink{ + Key: bundle.RelationKeyAssignee.String(), + Format: model.RelationFormat_object, + }, + &model.RelationLink{ + Key: bundle.RelationKeyLayout.String(), + Format: model.RelationFormat_number, + }, + ) + + // when + filteredState := st.Filter(nil) + + // then + assert.Equal(t, st, filteredState) + }) + t.Run("remove blocks", func(t *testing.T) { + // given + st := NewDoc("root", map[string]simple.Block{ + "root": base.NewBase(&model.Block{Id: "root", ChildrenIds: []string{"2"}}), + "2": base.NewBase(&model.Block{Id: "2"}), + }).(*State) + st.AddDetails(domain.NewDetailsFromMap(map[domain.RelationKey]domain.Value{ + bundle.RelationKeyCoverType: domain.Int64(1), + bundle.RelationKeyName: domain.String("name"), + bundle.RelationKeyAssignee: domain.String("assignee"), + bundle.RelationKeyLayout: domain.Int64(model.ObjectType_todo), + })) + st.AddRelationLinks(&model.RelationLink{ + Key: bundle.RelationKeyCoverType.String(), + Format: model.RelationFormat_number, + }, + &model.RelationLink{ + Key: bundle.RelationKeyName.String(), + Format: model.RelationFormat_longtext, + }, + &model.RelationLink{ + Key: bundle.RelationKeyAssignee.String(), + Format: model.RelationFormat_object, + }, + &model.RelationLink{ + Key: bundle.RelationKeyLayout.String(), + Format: model.RelationFormat_number, + }, + ) + + // when + filteredState := st.Filter(&Filters{RemoveBlocks: true}) + + // then + assert.Len(t, filteredState.blocks, 1) + assert.NotNil(t, filteredState.blocks["root"]) + }) + t.Run("filter relations by white list", func(t *testing.T) { + // given + st := NewDoc("root", map[string]simple.Block{ + "root": base.NewBase(&model.Block{Id: "root", ChildrenIds: []string{"2"}}), + "2": base.NewBase(&model.Block{Id: "2"}), + }).(*State) + st.AddDetails(domain.NewDetailsFromMap(map[domain.RelationKey]domain.Value{ + bundle.RelationKeyCoverType: domain.Int64(1), + bundle.RelationKeyName: domain.String("name"), + bundle.RelationKeyAssignee: domain.String("assignee"), + bundle.RelationKeyLayout: domain.Int64(model.ObjectType_todo), + })) + st.AddRelationLinks(&model.RelationLink{ + Key: bundle.RelationKeyCoverType.String(), + Format: model.RelationFormat_number, + }, + &model.RelationLink{ + Key: bundle.RelationKeyName.String(), + Format: model.RelationFormat_longtext, + }, + &model.RelationLink{ + Key: bundle.RelationKeyAssignee.String(), + Format: model.RelationFormat_object, + }, + &model.RelationLink{ + Key: bundle.RelationKeyLayout.String(), + Format: model.RelationFormat_number, + }, + ) + + // when + filteredState := st.Filter(&Filters{RelationsWhiteList: map[model.ObjectTypeLayout][]domain.RelationKey{ + model.ObjectType_todo: {bundle.RelationKeyAssignee}, + }}) + + // then + assert.Equal(t, filteredState.details.Len(), 1) + assert.Equal(t, filteredState.localDetails.Len(), 0) + assert.Len(t, filteredState.relationLinks, 1) + assert.Equal(t, bundle.RelationKeyAssignee.String(), filteredState.relationLinks[0].Key) + }) + t.Run("parent state", func(t *testing.T) { + // given + st := NewDoc("root", map[string]simple.Block{ + "root": base.NewBase(&model.Block{Id: "root", ChildrenIds: []string{"2"}}), + "2": base.NewBase(&model.Block{Id: "2"}), + }).(*State) + st.AddDetails(domain.NewDetailsFromMap(map[domain.RelationKey]domain.Value{ + bundle.RelationKeyCoverType: domain.Int64(1), + bundle.RelationKeyName: domain.String("name"), + bundle.RelationKeyAssignee: domain.String("assignee"), + bundle.RelationKeyLayout: domain.Int64(model.ObjectType_todo), + })) + st.AddRelationLinks(&model.RelationLink{ + Key: bundle.RelationKeyCoverType.String(), + Format: model.RelationFormat_number, + }, + &model.RelationLink{ + Key: bundle.RelationKeyName.String(), + Format: model.RelationFormat_longtext, + }, + &model.RelationLink{ + Key: bundle.RelationKeyAssignee.String(), + Format: model.RelationFormat_object, + }, + &model.RelationLink{ + Key: bundle.RelationKeyLayout.String(), + Format: model.RelationFormat_number, + }, + ) + + // when + filteredState := st.NewState().Filter(&Filters{ + RemoveBlocks: true, + RelationsWhiteList: map[model.ObjectTypeLayout][]domain.RelationKey{ + model.ObjectType_todo: {bundle.RelationKeyAssignee}, + }}) + + // then + assert.Equal(t, filteredState.parent.details.Len(), 1) + assert.Equal(t, filteredState.parent.localDetails.Len(), 0) + assert.Len(t, filteredState.parent.relationLinks, 1) + assert.Equal(t, bundle.RelationKeyAssignee.String(), filteredState.parent.relationLinks[0].Key) + assert.Len(t, filteredState.parent.blocks, 1) + assert.NotNil(t, filteredState.parent.blocks["root"]) + }) + t.Run("empty white list relations", func(t *testing.T) { + // given + st := NewDoc("root", map[string]simple.Block{ + "root": base.NewBase(&model.Block{Id: "root", ChildrenIds: []string{"2"}}), + "2": base.NewBase(&model.Block{Id: "2"}), + }).(*State) + st.AddDetails(domain.NewDetailsFromMap(map[domain.RelationKey]domain.Value{ + bundle.RelationKeyCoverType: domain.Int64(1), + bundle.RelationKeyName: domain.String("name"), + bundle.RelationKeyAssignee: domain.String("assignee"), + bundle.RelationKeyLayout: domain.Int64(model.ObjectType_todo), + })) + st.AddRelationLinks(&model.RelationLink{ + Key: bundle.RelationKeyCoverType.String(), + Format: model.RelationFormat_number, + }, + &model.RelationLink{ + Key: bundle.RelationKeyName.String(), + Format: model.RelationFormat_longtext, + }, + &model.RelationLink{ + Key: bundle.RelationKeyAssignee.String(), + Format: model.RelationFormat_object, + }, + &model.RelationLink{ + Key: bundle.RelationKeyLayout.String(), + Format: model.RelationFormat_number, + }, + ) + + // when + filteredState := st.Filter(&Filters{RelationsWhiteList: map[model.ObjectTypeLayout][]domain.RelationKey{ + model.ObjectType_todo: {}, + }}) + + // then + assert.Equal(t, filteredState.details.Len(), 0) + assert.Equal(t, filteredState.localDetails.Len(), 0) + assert.Len(t, filteredState.relationLinks, 0) + }) +} diff --git a/core/block/export/export.go b/core/block/export/export.go index 60eff3576..0b6d70d92 100644 --- a/core/block/export/export.go +++ b/core/block/export/export.go @@ -571,8 +571,10 @@ func (e *exportContext) collectDerivedObjects(objects map[string]*Doc) ([]string } relations = lo.Union(relations, dataviewRelations) } - objectTypeId := details.GetString(bundle.RelationKeyType) - objectsTypes = lo.Union(objectsTypes, []string{objectTypeId}) + if details.Has(bundle.RelationKeyType) { + objectTypeId := details.GetString(bundle.RelationKeyType) + objectsTypes = lo.Union(objectsTypes, []string{objectTypeId}) + } setOfList := details.GetStringList(bundle.RelationKeySetOf) setOf = lo.Union(setOf, setOfList) return nil @@ -876,7 +878,7 @@ func (e *exportContext) addNestedObject(id string, nestedDocs map[string]*Doc) { continue } if isLinkedObjectExist(rec) { - exportDoc := &Doc{Details: rec[0].Details, isLink: e.isLinkProcess} + exportDoc := &Doc{Details: rec[0].Details, isLink: true} nestedDocs[link] = exportDoc e.docs[link] = exportDoc e.addNestedObject(link, nestedDocs) @@ -1259,8 +1261,16 @@ func pbFiltersToState(filters *pb.RpcObjectListExportStateFilters) *state.Filter if filters == nil { return nil } + relationByLayoutList := state.RelationsByLayout{} + for _, relationByLayout := range filters.RelationsWhiteList { + allowedRelations := make([]domain.RelationKey, 0, len(relationByLayout.AllowedRelations)) + for _, relation := range relationByLayout.AllowedRelations { + allowedRelations = append(allowedRelations, domain.RelationKey(relation)) + } + relationByLayoutList[relationByLayout.Layout] = allowedRelations + } return &state.Filters{ - RelationsWhiteList: filters.RelationsWhiteList, - OnlyRootBlock: filters.OnlyRootBlock, + RelationsWhiteList: relationByLayoutList, + RemoveBlocks: filters.RemoveBlocks, } } diff --git a/core/block/export/export_test.go b/core/block/export/export_test.go index cd33df3eb..001ce203b 100644 --- a/core/block/export/export_test.go +++ b/core/block/export/export_test.go @@ -4,10 +4,12 @@ import ( "archive/zip" "context" "fmt" + "os" "path/filepath" "testing" "github.com/anyproto/any-sync/app" + "github.com/gogo/protobuf/jsonpb" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" @@ -361,6 +363,186 @@ func TestExport_Export(t *testing.T) { assert.NotNil(t, err) assert.Equal(t, 0, success) }) + t.Run("export with filters success", func(t *testing.T) { + // given + storeFixture := objectstore.NewStoreFixture(t) + objectTypeId := "objectTypeId" + objectTypeUniqueKey, err := domain.NewUniqueKey(smartblock.SmartBlockTypeObjectType, objectTypeId) + assert.Nil(t, err) + objectId := "objectID" + link := "linkId" + + storeFixture.AddObjects(t, spaceId, []spaceindex.TestObject{ + { + bundle.RelationKeyId: domain.String(link), + bundle.RelationKeyType: domain.String(objectTypeId), + bundle.RelationKeySpaceId: domain.String(spaceId), + bundle.RelationKeyDescription: domain.String("description"), + bundle.RelationKeyLayout: domain.Int64(model.ObjectType_set), + bundle.RelationKeyCamera: domain.String("test"), + }, + { + bundle.RelationKeyId: domain.String(objectId), + bundle.RelationKeyType: domain.String(objectTypeId), + bundle.RelationKeySpaceId: domain.String(spaceId), + }, + { + bundle.RelationKeyId: domain.String(objectTypeId), + bundle.RelationKeyUniqueKey: domain.String(objectTypeUniqueKey.Marshal()), + bundle.RelationKeyLayout: domain.Int64(int64(model.ObjectType_objectType)), + bundle.RelationKeyRecommendedRelations: domain.StringList([]string{addr.MissingObject}), + bundle.RelationKeySpaceId: domain.String(spaceId), + bundle.RelationKeyType: domain.String(objectTypeId), + }, + }) + + objectGetter := mock_cache.NewMockObjectGetterComponent(t) + + smartBlockTest := smarttest.New(objectId) + doc := smartBlockTest.NewState().SetDetails(domain.NewDetailsFromMap(map[domain.RelationKey]domain.Value{ + bundle.RelationKeyId: domain.String(objectId), + bundle.RelationKeyType: domain.String(objectTypeId), + })) + doc.AddRelationLinks(&model.RelationLink{ + Key: bundle.RelationKeyId.String(), + Format: model.RelationFormat_longtext, + }, &model.RelationLink{ + Key: bundle.RelationKeyType.String(), + Format: model.RelationFormat_longtext, + }) + smartBlockTest.Doc = doc + smartBlockTest.AddBlock(simple.New(&model.Block{Id: objectId, ChildrenIds: []string{"linkBlock"}, Content: &model.BlockContentOfSmartblock{Smartblock: &model.BlockContentSmartblock{}}})) + smartBlockTest.AddBlock(simple.New(&model.Block{Id: "linkBlock", Content: &model.BlockContentOfLink{Link: &model.BlockContentLink{TargetBlockId: link}}})) + + objectType := smarttest.New(objectTypeId) + objectTypeDoc := objectType.NewState().SetDetails(domain.NewDetailsFromMap(map[domain.RelationKey]domain.Value{ + bundle.RelationKeyId: domain.String(objectTypeId), + bundle.RelationKeyType: domain.String(objectTypeId), + })) + objectTypeDoc.AddRelationLinks(&model.RelationLink{ + Key: bundle.RelationKeyId.String(), + Format: model.RelationFormat_longtext, + }, &model.RelationLink{ + Key: bundle.RelationKeyType.String(), + Format: model.RelationFormat_longtext, + }) + objectType.Doc = objectTypeDoc + objectType.SetType(smartblock.SmartBlockTypeObjectType) + + linkObject := smarttest.New(link) + linkObjectDoc := linkObject.NewState().SetDetails(domain.NewDetailsFromMap(map[domain.RelationKey]domain.Value{ + bundle.RelationKeyId: domain.String(link), + bundle.RelationKeyType: domain.String(objectTypeId), + bundle.RelationKeySpaceId: domain.String(spaceId), + bundle.RelationKeyDescription: domain.String("description"), + bundle.RelationKeyLayout: domain.Int64(model.ObjectType_set), + bundle.RelationKeyCamera: domain.String("test"), + })) + linkObjectDoc.AddRelationLinks(&model.RelationLink{ + Key: bundle.RelationKeyId.String(), + Format: model.RelationFormat_longtext, + }, &model.RelationLink{ + Key: bundle.RelationKeyType.String(), + Format: model.RelationFormat_longtext, + }, &model.RelationLink{ + Key: bundle.RelationKeySpaceId.String(), + Format: model.RelationFormat_longtext, + }, &model.RelationLink{ + Key: bundle.RelationKeyDescription.String(), + Format: model.RelationFormat_longtext, + }, &model.RelationLink{ + Key: bundle.RelationKeyLayout.String(), + Format: model.RelationFormat_number, + }, &model.RelationLink{ + Key: bundle.RelationKeyCamera.String(), + Format: model.RelationFormat_longtext, + }) + linkObject.Doc = linkObjectDoc + linkObject.AddBlock(simple.New(&model.Block{Id: objectId, ChildrenIds: []string{"linkBlock"}, Content: &model.BlockContentOfSmartblock{Smartblock: &model.BlockContentSmartblock{}}})) + linkObject.AddBlock(simple.New(&model.Block{Id: "linkBlock", Content: &model.BlockContentOfLink{Link: &model.BlockContentLink{TargetBlockId: "link1"}}})) + + objectGetter.EXPECT().GetObject(context.Background(), objectId).Return(smartBlockTest, nil).Times(4) + objectGetter.EXPECT().GetObject(context.Background(), objectTypeId).Return(objectType, nil) + objectGetter.EXPECT().GetObject(context.Background(), link).Return(linkObject, nil) + + a := &app.App{} + mockSender := mock_event.NewMockSender(t) + mockSender.EXPECT().Broadcast(mock.Anything).Return() + a.Register(testutil.PrepareMock(context.Background(), a, mockSender)) + service := process.New() + err = service.Init(a) + assert.Nil(t, err) + + notifications := mock_notifications.NewMockNotifications(t) + notificationSend := make(chan struct{}) + notifications.EXPECT().CreateAndSend(mock.Anything).RunAndReturn(func(notification *model.Notification) error { + close(notificationSend) + return nil + }) + + provider := mock_typeprovider.NewMockSmartBlockTypeProvider(t) + provider.EXPECT().Type(spaceId, link).Return(smartblock.SmartBlockTypePage, nil) + + e := &export{ + objectStore: storeFixture, + picker: objectGetter, + processService: service, + notificationService: notifications, + sbtProvider: provider, + } + + // when + path, success, err := e.Export(context.Background(), pb.RpcObjectListExportRequest{ + SpaceId: spaceId, + Path: t.TempDir(), + ObjectIds: []string{objectId}, + Format: model.Export_Protobuf, + Zip: true, + IncludeNested: true, + IncludeFiles: true, + IsJson: true, + LinksStateFilters: &pb.RpcObjectListExportStateFilters{ + RelationsWhiteList: []*pb.RpcObjectListExportRelationsWhiteList{ + { + Layout: model.ObjectType_set, + AllowedRelations: []string{bundle.RelationKeyCamera.String()}, + }, + }, + RemoveBlocks: true, + }, + }) + + // then + <-notificationSend + assert.Nil(t, err) + assert.Equal(t, 3, success) + + reader, err := zip.OpenReader(path) + assert.Nil(t, err) + + assert.Len(t, reader.File, 3) + fileNames := make(map[string]bool, 3) + for _, file := range reader.File { + fileNames[file.Name] = true + } + + objectPath := filepath.Join(objectsDirectory, link+".pb.json") + assert.True(t, fileNames[objectPath]) + + file, err := os.Open(objectPath) + if err != nil { + return + } + var sn *pb.SnapshotWithType + err = jsonpb.Unmarshal(file, sn) + assert.Nil(t, err) + assert.Len(t, sn.GetSnapshot().GetData().GetBlocks(), 1) + assert.Equal(t, link, sn.GetSnapshot().GetData().GetBlocks()[0].GetId()) + assert.Len(t, sn.GetSnapshot().GetData().GetDetails().GetFields(), 1) + assert.NotNil(t, sn.GetSnapshot().GetData().GetDetails().GetFields()[bundle.RelationKeyCamera.String()]) + assert.Len(t, sn.GetSnapshot().GetData().GetRelationLinks(), 1) + assert.Equal(t, bundle.RelationKeyCamera.String(), sn.GetSnapshot().GetData().GetRelationLinks()[0].Key) + }) } func Test_docsForExport(t *testing.T) { @@ -379,14 +561,49 @@ func Test_docsForExport(t *testing.T) { bundle.RelationKeySpaceId: domain.String(spaceId), }, }) - err := storeFixture.SpaceIndex(spaceId).UpdateObjectLinks(context.Background(), "id", []string{"id1"}) - assert.Nil(t, err) provider := mock_typeprovider.NewMockSmartBlockTypeProvider(t) provider.EXPECT().Type(spaceId, "id1").Return(smartblock.SmartBlockTypePage, nil) + + objectGetter := mock_cache.NewMockObjectGetterComponent(t) + smartBlockTest := smarttest.New("id") + doc := smartBlockTest.NewState().SetDetails(domain.NewDetailsFromMap(map[domain.RelationKey]domain.Value{ + bundle.RelationKeyId: domain.String("id"), + bundle.RelationKeyType: domain.String("objectTypeId"), + })) + doc.AddRelationLinks(&model.RelationLink{ + Key: bundle.RelationKeyId.String(), + Format: model.RelationFormat_longtext, + }, &model.RelationLink{ + Key: bundle.RelationKeyType.String(), + Format: model.RelationFormat_longtext, + }) + smartBlockTest.Doc = doc + + smartBlockTest.AddBlock(simple.New(&model.Block{Id: "id", ChildrenIds: []string{"linkBlock"}, Content: &model.BlockContentOfSmartblock{Smartblock: &model.BlockContentSmartblock{}}})) + smartBlockTest.AddBlock(simple.New(&model.Block{Id: "linkBlock", Content: &model.BlockContentOfLink{Link: &model.BlockContentLink{TargetBlockId: "id1"}}})) + + linkObject := smarttest.New("id1") + linkObjectDoc := linkObject.NewState().SetDetails(domain.NewDetailsFromMap(map[domain.RelationKey]domain.Value{ + bundle.RelationKeyId: domain.String("id1"), + bundle.RelationKeyType: domain.String("objectTypeId"), + })) + linkObjectDoc.AddRelationLinks(&model.RelationLink{ + Key: bundle.RelationKeyId.String(), + Format: model.RelationFormat_longtext, + }, &model.RelationLink{ + Key: bundle.RelationKeyType.String(), + Format: model.RelationFormat_longtext, + }) + linkObject.Doc = linkObjectDoc + + objectGetter.EXPECT().GetObject(context.Background(), "id").Return(smartBlockTest, nil) + objectGetter.EXPECT().GetObject(context.Background(), "id1").Return(linkObject, nil) + e := &export{ objectStore: storeFixture, sbtProvider: provider, + picker: objectGetter, } expCtx := newExportContext(e, pb.RpcObjectListExportRequest{ @@ -396,7 +613,7 @@ func Test_docsForExport(t *testing.T) { }) // when - err = expCtx.docsForExport() + err := expCtx.docsForExport() // then assert.Nil(t, err) @@ -417,14 +634,32 @@ func Test_docsForExport(t *testing.T) { bundle.RelationKeySpaceId: domain.String(spaceId), }, }) - err := storeFixture.SpaceIndex(spaceId).UpdateObjectLinks(context.Background(), "id", []string{"id1"}) - assert.Nil(t, err) + objectGetter := mock_cache.NewMockObjectGetterComponent(t) + smartBlockTest := smarttest.New("id") + doc := smartBlockTest.NewState().SetDetails(domain.NewDetailsFromMap(map[domain.RelationKey]domain.Value{ + bundle.RelationKeyId: domain.String("id"), + bundle.RelationKeyType: domain.String("objectTypeId"), + })) + doc.AddRelationLinks(&model.RelationLink{ + Key: bundle.RelationKeyId.String(), + Format: model.RelationFormat_longtext, + }, &model.RelationLink{ + Key: bundle.RelationKeyType.String(), + Format: model.RelationFormat_longtext, + }) + smartBlockTest.Doc = doc + + smartBlockTest.AddBlock(simple.New(&model.Block{Id: "id", ChildrenIds: []string{"linkBlock"}, Content: &model.BlockContentOfSmartblock{Smartblock: &model.BlockContentSmartblock{}}})) + smartBlockTest.AddBlock(simple.New(&model.Block{Id: "linkBlock", Content: &model.BlockContentOfLink{Link: &model.BlockContentLink{TargetBlockId: "id1"}}})) + + objectGetter.EXPECT().GetObject(context.Background(), "id").Return(smartBlockTest, nil) provider := mock_typeprovider.NewMockSmartBlockTypeProvider(t) provider.EXPECT().Type(spaceId, "id1").Return(smartblock.SmartBlockTypePage, nil) e := &export{ objectStore: storeFixture, sbtProvider: provider, + picker: objectGetter, } expCtx := newExportContext(e, pb.RpcObjectListExportRequest{ SpaceId: spaceId, @@ -433,7 +668,7 @@ func Test_docsForExport(t *testing.T) { }) // when - err = expCtx.docsForExport() + err := expCtx.docsForExport() // then assert.Nil(t, err) @@ -770,10 +1005,10 @@ func Test_docsForExport(t *testing.T) { linkedObjectId := "linkedObjectId" storeFixture.AddObjects(t, spaceId, []objectstore.TestObject{ { - bundle.RelationKeyId: domain.String("id"), - domain.RelationKey(relationKey): domain.String("test"), - bundle.RelationKeyType: domain.String(objectTypeKey), - bundle.RelationKeySpaceId: domain.String(spaceId), + bundle.RelationKeyId: domain.String("id"), + relationKey: domain.String("test"), + bundle.RelationKeyType: domain.String(objectTypeKey), + bundle.RelationKeySpaceId: domain.String(spaceId), }, { bundle.RelationKeyId: domain.String(relationKey), @@ -810,9 +1045,6 @@ func Test_docsForExport(t *testing.T) { }, }) - err = storeFixture.SpaceIndex(spaceId).UpdateObjectLinks(context.Background(), templateId, []string{linkedObjectId}) - assert.Nil(t, err) - objectGetter := mock_cache.NewMockObjectGetter(t) template := smarttest.New(templateId) @@ -828,6 +1060,8 @@ func Test_docsForExport(t *testing.T) { Format: model.RelationFormat_longtext, }) template.Doc = templateDoc + template.AddBlock(simple.New(&model.Block{Id: templateId, ChildrenIds: []string{"linkBlock"}, Content: &model.BlockContentOfSmartblock{Smartblock: &model.BlockContentSmartblock{}}})) + template.AddBlock(simple.New(&model.Block{Id: "linkBlock", Content: &model.BlockContentOfLink{Link: &model.BlockContentLink{TargetBlockId: linkedObjectId}}})) smartBlockTest := smarttest.New("id") doc := smartBlockTest.NewState().SetDetails(domain.NewDetailsFromMap(map[domain.RelationKey]domain.Value{ diff --git a/core/publish/relationswhitelist.go b/core/publish/relationswhitelist.go new file mode 100644 index 000000000..3ae96012f --- /dev/null +++ b/core/publish/relationswhitelist.go @@ -0,0 +1,70 @@ +package publish + +import ( + "github.com/anyproto/anytype-heart/pb" + "github.com/anyproto/anytype-heart/pkg/lib/bundle" + "github.com/anyproto/anytype-heart/pkg/lib/pb/model" +) + +var allObjectsRelationsWhiteList = []string{ + bundle.RelationKeyType.String(), + bundle.RelationKeySpaceId.String(), + bundle.RelationKeyId.String(), + bundle.RelationKeyLayout.String(), + bundle.RelationKeyIsArchived.String(), + bundle.RelationKeyIsDeleted.String(), + bundle.RelationKeyName.String(), +} + +var documentRelationsWhiteList = append(allObjectsRelationsWhiteList, + bundle.RelationKeyDescription.String(), + bundle.RelationKeySnippet.String(), + bundle.RelationKeyIconImage.String(), + bundle.RelationKeyIconEmoji.String(), + bundle.RelationKeyCoverType.String(), + bundle.RelationKeyCoverId.String(), +) + +var todoRelationsWhiteList = append(documentRelationsWhiteList, bundle.RelationKeyDone.String()) + +var bookmarkRelationsWhiteList = append(documentRelationsWhiteList, bundle.RelationKeyPicture.String()) + +var derivedObjectsWhiteList = append(allObjectsRelationsWhiteList, bundle.RelationKeyUniqueKey.String()) + +var relationsWhiteList = append(derivedObjectsWhiteList, bundle.RelationKeyRelationFormat.String()) + +var relationOptionWhiteList = append(derivedObjectsWhiteList, bundle.RelationKeyRelationOptionColor.String()) + +var publishingRelationsWhiteList = map[model.ObjectTypeLayout][]string{ + model.ObjectType_basic: documentRelationsWhiteList, + model.ObjectType_profile: documentRelationsWhiteList, + model.ObjectType_todo: todoRelationsWhiteList, + model.ObjectType_set: documentRelationsWhiteList, + model.ObjectType_collection: documentRelationsWhiteList, + model.ObjectType_objectType: derivedObjectsWhiteList, + model.ObjectType_relation: relationsWhiteList, + model.ObjectType_file: documentRelationsWhiteList, + model.ObjectType_dashboard: allObjectsRelationsWhiteList, + model.ObjectType_image: documentRelationsWhiteList, + model.ObjectType_note: documentRelationsWhiteList, + model.ObjectType_space: allObjectsRelationsWhiteList, + + model.ObjectType_bookmark: bookmarkRelationsWhiteList, + model.ObjectType_relationOption: relationOptionWhiteList, + model.ObjectType_relationOptionsList: relationOptionWhiteList, + model.ObjectType_participant: documentRelationsWhiteList, + model.ObjectType_chat: allObjectsRelationsWhiteList, + model.ObjectType_chatDerived: allObjectsRelationsWhiteList, + model.ObjectType_tag: documentRelationsWhiteList, +} + +func relationsWhiteListToPbModel() []*pb.RpcObjectListExportRelationsWhiteList { + pbRelationsWhiteList := make([]*pb.RpcObjectListExportRelationsWhiteList, 0, len(publishingRelationsWhiteList)) + for layout, relation := range publishingRelationsWhiteList { + pbRelationsWhiteList = append(pbRelationsWhiteList, &pb.RpcObjectListExportRelationsWhiteList{ + Layout: layout, + AllowedRelations: relation, + }) + } + return pbRelationsWhiteList +} diff --git a/core/publish/service.go b/core/publish/service.go index 2947f3613..185359105 100644 --- a/core/publish/service.go +++ b/core/publish/service.go @@ -45,23 +45,6 @@ const ( indexFileName = "index.json.gz" ) -var publishingRelationsWhiteList = []string{ - bundle.RelationKeyName.String(), - bundle.RelationKeyDescription.String(), - bundle.RelationKeySnippet.String(), - bundle.RelationKeyType.String(), - bundle.RelationKeySpaceId.String(), - bundle.RelationKeyId.String(), - bundle.RelationKeyIconImage.String(), - bundle.RelationKeyIconEmoji.String(), - bundle.RelationKeyCoverType.String(), - bundle.RelationKeyCoverId.String(), - bundle.RelationKeyIsArchived.String(), - bundle.RelationKeyIsDeleted.String(), - bundle.RelationKeyDone.String(), - bundle.RelationKeyPicture.String(), -} - var log = logger.NewNamed(CName) var ErrLimitExceeded = errors.New("limit exceeded") @@ -139,17 +122,18 @@ func uniqName() string { func (s *service) exportToDir(ctx context.Context, spaceId, pageId string) (dirEntries []fs.DirEntry, exportPath string, err error) { tempDir := os.TempDir() exportPath, _, err = s.exportService.Export(ctx, pb.RpcObjectListExportRequest{ - SpaceId: spaceId, - Format: model.Export_Protobuf, - IncludeFiles: true, - IsJson: false, - Zip: false, - Path: tempDir, - ObjectIds: []string{pageId}, - NoProgress: true, + SpaceId: spaceId, + Format: model.Export_Protobuf, + IncludeFiles: true, + IsJson: false, + Zip: false, + Path: tempDir, + ObjectIds: []string{pageId}, + NoProgress: true, + IncludeNested: true, LinksStateFilters: &pb.RpcObjectListExportStateFilters{ - RelationsWhiteList: publishingRelationsWhiteList, - OnlyRootBlock: true, + RelationsWhiteList: relationsWhiteListToPbModel(), + RemoveBlocks: true, }, }) if err != nil { diff --git a/core/publish/service_test.go b/core/publish/service_test.go index 12d4e9c9a..6aa175172 100644 --- a/core/publish/service_test.go +++ b/core/publish/service_test.go @@ -697,7 +697,7 @@ func prepareExporterWithFile(t *testing.T, objectTypeId string, spaceService *mo space.EXPECT().DerivedIDs().Return(threads.DerivedSmartblockIds{}) file.SetSpace(space) - objectGetter.EXPECT().GetObject(context.Background(), objectId).Return(smartBlockTest, nil).Times(3) + objectGetter.EXPECT().GetObject(context.Background(), objectId).Return(smartBlockTest, nil).Times(4) objectGetter.EXPECT().GetObject(context.Background(), objectTypeId).Return(objectType, nil).Times(2) objectGetter.EXPECT().GetObject(context.Background(), fileId).Return(file, nil) diff --git a/docs/proto.md b/docs/proto.md index e030166b8..2f99684d5 100644 --- a/docs/proto.md +++ b/docs/proto.md @@ -915,6 +915,7 @@ - [Rpc.Object.ListDuplicate.Response](#anytype-Rpc-Object-ListDuplicate-Response) - [Rpc.Object.ListDuplicate.Response.Error](#anytype-Rpc-Object-ListDuplicate-Response-Error) - [Rpc.Object.ListExport](#anytype-Rpc-Object-ListExport) + - [Rpc.Object.ListExport.RelationsWhiteList](#anytype-Rpc-Object-ListExport-RelationsWhiteList) - [Rpc.Object.ListExport.Request](#anytype-Rpc-Object-ListExport-Request) - [Rpc.Object.ListExport.Response](#anytype-Rpc-Object-ListExport-Response) - [Rpc.Object.ListExport.Response.Error](#anytype-Rpc-Object-ListExport-Response-Error) @@ -15536,6 +15537,22 @@ Deletes the object, keys from the local store and unsubscribe from remote change + + +### Rpc.Object.ListExport.RelationsWhiteList + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| layout | [model.ObjectType.Layout](#anytype-model-ObjectType-Layout) | | | +| allowedRelations | [string](#string) | repeated | | + + + + + + ### Rpc.Object.ListExport.Request @@ -15603,8 +15620,8 @@ Deletes the object, keys from the local store and unsubscribe from remote change | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| relationsWhiteList | [string](#string) | repeated | | -| onlyRootBlock | [bool](#bool) | | | +| relationsWhiteList | [Rpc.Object.ListExport.RelationsWhiteList](#anytype-Rpc-Object-ListExport-RelationsWhiteList) | repeated | | +| removeBlocks | [bool](#bool) | | | diff --git a/pb/commands.pb.go b/pb/commands.pb.go index 866388565..fd9ebbdaf 100644 --- a/pb/commands.pb.go +++ b/pb/commands.pb.go @@ -3468,7 +3468,7 @@ func (x RpcObjectListExportResponseErrorCode) String() string { } func (RpcObjectListExportResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 6, 47, 2, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 6, 47, 3, 0, 0} } type RpcObjectImportRequestMode int32 @@ -29922,8 +29922,8 @@ func (m *RpcObjectListExportRequest) GetLinksStateFilters() *RpcObjectListExport } type RpcObjectListExportStateFilters struct { - RelationsWhiteList []string `protobuf:"bytes,1,rep,name=relationsWhiteList,proto3" json:"relationsWhiteList,omitempty"` - OnlyRootBlock bool `protobuf:"varint,2,opt,name=onlyRootBlock,proto3" json:"onlyRootBlock,omitempty"` + RelationsWhiteList []*RpcObjectListExportRelationsWhiteList `protobuf:"bytes,1,rep,name=relationsWhiteList,proto3" json:"relationsWhiteList,omitempty"` + RemoveBlocks bool `protobuf:"varint,2,opt,name=removeBlocks,proto3" json:"removeBlocks,omitempty"` } func (m *RpcObjectListExportStateFilters) Reset() { *m = RpcObjectListExportStateFilters{} } @@ -29959,20 +29959,72 @@ func (m *RpcObjectListExportStateFilters) XXX_DiscardUnknown() { var xxx_messageInfo_RpcObjectListExportStateFilters proto.InternalMessageInfo -func (m *RpcObjectListExportStateFilters) GetRelationsWhiteList() []string { +func (m *RpcObjectListExportStateFilters) GetRelationsWhiteList() []*RpcObjectListExportRelationsWhiteList { if m != nil { return m.RelationsWhiteList } return nil } -func (m *RpcObjectListExportStateFilters) GetOnlyRootBlock() bool { +func (m *RpcObjectListExportStateFilters) GetRemoveBlocks() bool { if m != nil { - return m.OnlyRootBlock + return m.RemoveBlocks } return false } +type RpcObjectListExportRelationsWhiteList struct { + Layout model.ObjectTypeLayout `protobuf:"varint,1,opt,name=layout,proto3,enum=anytype.model.ObjectTypeLayout" json:"layout,omitempty"` + AllowedRelations []string `protobuf:"bytes,2,rep,name=allowedRelations,proto3" json:"allowedRelations,omitempty"` +} + +func (m *RpcObjectListExportRelationsWhiteList) Reset() { *m = RpcObjectListExportRelationsWhiteList{} } +func (m *RpcObjectListExportRelationsWhiteList) String() string { return proto.CompactTextString(m) } +func (*RpcObjectListExportRelationsWhiteList) ProtoMessage() {} +func (*RpcObjectListExportRelationsWhiteList) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 6, 47, 2} +} +func (m *RpcObjectListExportRelationsWhiteList) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcObjectListExportRelationsWhiteList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcObjectListExportRelationsWhiteList.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcObjectListExportRelationsWhiteList) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcObjectListExportRelationsWhiteList.Merge(m, src) +} +func (m *RpcObjectListExportRelationsWhiteList) XXX_Size() int { + return m.Size() +} +func (m *RpcObjectListExportRelationsWhiteList) XXX_DiscardUnknown() { + xxx_messageInfo_RpcObjectListExportRelationsWhiteList.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcObjectListExportRelationsWhiteList proto.InternalMessageInfo + +func (m *RpcObjectListExportRelationsWhiteList) GetLayout() model.ObjectTypeLayout { + if m != nil { + return m.Layout + } + return model.ObjectType_basic +} + +func (m *RpcObjectListExportRelationsWhiteList) GetAllowedRelations() []string { + if m != nil { + return m.AllowedRelations + } + return nil +} + type RpcObjectListExportResponse struct { Error *RpcObjectListExportResponseError `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` @@ -29984,7 +30036,7 @@ func (m *RpcObjectListExportResponse) Reset() { *m = RpcObjectListExport func (m *RpcObjectListExportResponse) String() string { return proto.CompactTextString(m) } func (*RpcObjectListExportResponse) ProtoMessage() {} func (*RpcObjectListExportResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 6, 47, 2} + return fileDescriptor_8261c968b2e6f45c, []int{0, 6, 47, 3} } func (m *RpcObjectListExportResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -30050,7 +30102,7 @@ func (m *RpcObjectListExportResponseError) Reset() { *m = RpcObjectListE func (m *RpcObjectListExportResponseError) String() string { return proto.CompactTextString(m) } func (*RpcObjectListExportResponseError) ProtoMessage() {} func (*RpcObjectListExportResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 6, 47, 2, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 6, 47, 3, 0} } func (m *RpcObjectListExportResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -71572,6 +71624,7 @@ func init() { proto.RegisterType((*RpcObjectListExport)(nil), "anytype.Rpc.Object.ListExport") proto.RegisterType((*RpcObjectListExportRequest)(nil), "anytype.Rpc.Object.ListExport.Request") proto.RegisterType((*RpcObjectListExportStateFilters)(nil), "anytype.Rpc.Object.ListExport.StateFilters") + proto.RegisterType((*RpcObjectListExportRelationsWhiteList)(nil), "anytype.Rpc.Object.ListExport.RelationsWhiteList") proto.RegisterType((*RpcObjectListExportResponse)(nil), "anytype.Rpc.Object.ListExport.Response") proto.RegisterType((*RpcObjectListExportResponseError)(nil), "anytype.Rpc.Object.ListExport.Response.Error") proto.RegisterType((*RpcObjectImport)(nil), "anytype.Rpc.Object.Import") @@ -72392,1243 +72445,1245 @@ func init() { func init() { proto.RegisterFile("pb/protos/commands.proto", fileDescriptor_8261c968b2e6f45c) } var fileDescriptor_8261c968b2e6f45c = []byte{ - // 19766 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xfd, 0x7d, 0x9c, 0x24, 0x49, - 0x55, 0x2f, 0x8c, 0x4f, 0x65, 0x56, 0x55, 0x77, 0x9f, 0x7e, 0x99, 0x9a, 0xdc, 0x99, 0xd9, 0xd9, - 0xd8, 0x65, 0x76, 0x9c, 0x5d, 0x96, 0x75, 0x59, 0x7a, 0x97, 0x05, 0x91, 0x5d, 0xf6, 0xad, 0xba, - 0xba, 0xba, 0xbb, 0x76, 0xbb, 0xab, 0xda, 0xac, 0xea, 0x19, 0x56, 0xaf, 0xbf, 0xba, 0x39, 0x55, - 0xd1, 0xdd, 0xb9, 0x53, 0x9d, 0x59, 0x66, 0x66, 0xf7, 0x6c, 0xf3, 0xfb, 0xdc, 0xe7, 0x8a, 0xb8, - 0x82, 0x22, 0x17, 0x11, 0x51, 0x51, 0x01, 0x79, 0x59, 0xbd, 0xa2, 0x88, 0xbc, 0x5f, 0x50, 0x11, - 0x05, 0x04, 0x51, 0x11, 0x41, 0x04, 0xd1, 0x7d, 0x04, 0x41, 0xc4, 0xfb, 0x91, 0xcb, 0xa3, 0xcf, - 0x15, 0x44, 0xe1, 0xf1, 0xf9, 0x64, 0x44, 0xe4, 0x4b, 0x54, 0x57, 0x66, 0x45, 0x56, 0x57, 0x56, - 0x2f, 0xf2, 0xfc, 0x97, 0x19, 0x19, 0x79, 0xe2, 0xc4, 0xf9, 0x9e, 0x88, 0x38, 0x11, 0x71, 0xe2, - 0x04, 0x9c, 0xe9, 0x5e, 0xba, 0xad, 0x6b, 0x99, 0x8e, 0x69, 0xdf, 0xd6, 0x32, 0x77, 0x76, 0x34, - 0xa3, 0x6d, 0xcf, 0x93, 0x77, 0x65, 0x42, 0x33, 0xf6, 0x9d, 0xfd, 0x2e, 0x46, 0x37, 0x76, 0x2f, - 0x6f, 0xdd, 0xd6, 0xd1, 0x2f, 0xdd, 0xd6, 0xbd, 0x74, 0xdb, 0x8e, 0xd9, 0xc6, 0x1d, 0xef, 0x07, - 0xf2, 0xc2, 0xb2, 0xa3, 0x9b, 0xa3, 0x72, 0x75, 0xcc, 0x96, 0xd6, 0xb1, 0x1d, 0xd3, 0xc2, 0x2c, - 0xe7, 0xe9, 0xa0, 0x48, 0xbc, 0x87, 0x0d, 0xc7, 0xa3, 0x70, 0xdd, 0x96, 0x69, 0x6e, 0x75, 0x30, - 0xfd, 0x76, 0x69, 0x77, 0xf3, 0x36, 0xdb, 0xb1, 0x76, 0x5b, 0x0e, 0xfb, 0x7a, 0xae, 0xf7, 0x6b, - 0x1b, 0xdb, 0x2d, 0x4b, 0xef, 0x3a, 0xa6, 0x45, 0x73, 0x9c, 0x7f, 0xf1, 0xcb, 0x27, 0x41, 0x56, - 0xbb, 0x2d, 0xf4, 0xd5, 0x09, 0x90, 0x8b, 0xdd, 0x2e, 0xfa, 0xa0, 0x04, 0xb0, 0x8c, 0x9d, 0x0b, - 0xd8, 0xb2, 0x75, 0xd3, 0x40, 0xc7, 0x61, 0x42, 0xc5, 0x3f, 0xb0, 0x8b, 0x6d, 0xe7, 0xae, 0xec, - 0x8b, 0xbe, 0x28, 0x67, 0xd0, 0x63, 0x12, 0x4c, 0xaa, 0xd8, 0xee, 0x9a, 0x86, 0x8d, 0x95, 0xfb, - 0x21, 0x87, 0x2d, 0xcb, 0xb4, 0xce, 0x64, 0xce, 0x65, 0x6e, 0x9e, 0xbe, 0xe3, 0x96, 0x79, 0x56, - 0xfd, 0x79, 0xb5, 0xdb, 0x9a, 0x2f, 0x76, 0xbb, 0xf3, 0x01, 0xa5, 0x79, 0xef, 0xa7, 0xf9, 0xb2, - 0xfb, 0x87, 0x4a, 0x7f, 0x54, 0xce, 0xc0, 0xc4, 0x1e, 0xcd, 0x70, 0x46, 0x3a, 0x97, 0xb9, 0x79, - 0x4a, 0xf5, 0x5e, 0xdd, 0x2f, 0x6d, 0xec, 0x68, 0x7a, 0xc7, 0x3e, 0x23, 0xd3, 0x2f, 0xec, 0x15, - 0xbd, 0x2e, 0x03, 0x39, 0x42, 0x44, 0x29, 0x41, 0xb6, 0x65, 0xb6, 0x31, 0x29, 0x7e, 0xee, 0x8e, - 0xdb, 0xc4, 0x8b, 0x9f, 0x2f, 0x99, 0x6d, 0xac, 0x92, 0x9f, 0x95, 0x73, 0x30, 0xed, 0x89, 0x25, - 0x60, 0x23, 0x9c, 0x74, 0xfe, 0x0e, 0xc8, 0xba, 0xf9, 0x95, 0x49, 0xc8, 0x56, 0x37, 0x56, 0x57, - 0x0b, 0xc7, 0x94, 0x13, 0x30, 0xbb, 0x51, 0x7d, 0xb0, 0x5a, 0xbb, 0x58, 0x6d, 0x96, 0x55, 0xb5, - 0xa6, 0x16, 0x32, 0xca, 0x2c, 0x4c, 0x2d, 0x14, 0x17, 0x9b, 0x95, 0xea, 0xfa, 0x46, 0xa3, 0x20, - 0xa1, 0x57, 0xcb, 0x30, 0x57, 0xc7, 0xce, 0x22, 0xde, 0xd3, 0x5b, 0xb8, 0xee, 0x68, 0x0e, 0x46, - 0x2f, 0xcd, 0xf8, 0xc2, 0x54, 0x36, 0xdc, 0x42, 0xfd, 0x4f, 0xac, 0x02, 0xcf, 0x38, 0x50, 0x01, - 0x9e, 0xc2, 0x3c, 0xfb, 0x7b, 0x3e, 0x94, 0xa6, 0x86, 0xe9, 0x9c, 0x7f, 0x1a, 0x4c, 0x87, 0xbe, - 0x29, 0x73, 0x00, 0x0b, 0xc5, 0xd2, 0x83, 0xcb, 0x6a, 0x6d, 0xa3, 0xba, 0x58, 0x38, 0xe6, 0xbe, - 0x2f, 0xd5, 0xd4, 0x32, 0x7b, 0xcf, 0xa0, 0xaf, 0x67, 0x42, 0x60, 0x2e, 0xf2, 0x60, 0xce, 0x0f, - 0x66, 0xa6, 0x0f, 0xa0, 0xe8, 0x97, 0x7c, 0x70, 0x96, 0x39, 0x70, 0x9e, 0x91, 0x8c, 0x5c, 0xfa, - 0x00, 0x3d, 0x2a, 0xc1, 0x64, 0x7d, 0x7b, 0xd7, 0x69, 0x9b, 0x57, 0x0c, 0x34, 0xe5, 0x23, 0x83, - 0xbe, 0x1c, 0x96, 0xc9, 0xbd, 0xbc, 0x4c, 0x6e, 0x3e, 0x58, 0x09, 0x46, 0x21, 0x42, 0x1a, 0xbf, - 0xe8, 0x4b, 0xa3, 0xc8, 0x49, 0xe3, 0x69, 0xa2, 0x84, 0xd2, 0x97, 0xc3, 0xcf, 0x3d, 0x1b, 0x72, - 0xf5, 0xae, 0xd6, 0xc2, 0xe8, 0x8f, 0x64, 0x98, 0x59, 0xc5, 0xda, 0x1e, 0x2e, 0x76, 0xbb, 0x96, - 0xb9, 0x87, 0x51, 0x29, 0xd0, 0xd7, 0x33, 0x30, 0x61, 0xbb, 0x99, 0x2a, 0x6d, 0x52, 0x83, 0x29, - 0xd5, 0x7b, 0x55, 0xce, 0x02, 0xe8, 0x6d, 0x6c, 0x38, 0xba, 0xa3, 0x63, 0xfb, 0x8c, 0x74, 0x4e, - 0xbe, 0x79, 0x4a, 0x0d, 0xa5, 0xa0, 0xaf, 0x4a, 0xa2, 0x3a, 0x46, 0xb8, 0x98, 0x0f, 0x73, 0x10, - 0x21, 0xd5, 0xd7, 0x4b, 0x22, 0x3a, 0x36, 0x90, 0x5c, 0x32, 0xd9, 0xfe, 0x7a, 0x26, 0xb9, 0x70, - 0xdd, 0x1c, 0xd5, 0x5a, 0xb3, 0xbe, 0x51, 0x5a, 0x69, 0xd6, 0xd7, 0x8b, 0xa5, 0x72, 0x01, 0x2b, - 0x27, 0xa1, 0x40, 0x1e, 0x9b, 0x95, 0x7a, 0x73, 0xb1, 0xbc, 0x5a, 0x6e, 0x94, 0x17, 0x0b, 0x9b, - 0x8a, 0x02, 0x73, 0x6a, 0xf9, 0x7b, 0x36, 0xca, 0xf5, 0x46, 0x73, 0xa9, 0x58, 0x59, 0x2d, 0x2f, - 0x16, 0xb6, 0xdc, 0x9f, 0x57, 0x2b, 0x6b, 0x95, 0x46, 0x53, 0x2d, 0x17, 0x4b, 0x2b, 0xe5, 0xc5, - 0xc2, 0xb6, 0x72, 0x35, 0x5c, 0x55, 0xad, 0x35, 0x8b, 0xeb, 0xeb, 0x6a, 0xed, 0x42, 0xb9, 0xc9, - 0xfe, 0xa8, 0x17, 0x74, 0x5a, 0x50, 0xa3, 0x59, 0x5f, 0x29, 0xaa, 0xe5, 0xe2, 0xc2, 0x6a, 0xb9, - 0xf0, 0x30, 0x7a, 0x81, 0x0c, 0xb3, 0x6b, 0xda, 0x65, 0x5c, 0xdf, 0xd6, 0x2c, 0xac, 0x5d, 0xea, - 0x60, 0x74, 0x83, 0x00, 0x9e, 0xe8, 0x8f, 0xc2, 0x78, 0x95, 0x79, 0xbc, 0x6e, 0xeb, 0x23, 0x60, - 0xae, 0x88, 0x08, 0xc0, 0xfe, 0xc5, 0x6f, 0x06, 0x2b, 0x1c, 0x60, 0xcf, 0x4c, 0x48, 0x2f, 0x19, - 0x62, 0x3f, 0xf4, 0x04, 0x40, 0x0c, 0x3d, 0x2e, 0xc3, 0x5c, 0xc5, 0xd8, 0xd3, 0x1d, 0xbc, 0x8c, - 0x0d, 0x6c, 0xb9, 0xe3, 0x80, 0x10, 0x0c, 0x8f, 0xc9, 0x21, 0x18, 0x96, 0x78, 0x18, 0x6e, 0xef, - 0x23, 0x36, 0xbe, 0x8c, 0x88, 0xd1, 0xf6, 0x3a, 0x98, 0xd2, 0x49, 0xbe, 0x92, 0xde, 0x66, 0x12, - 0x0b, 0x12, 0x94, 0x1b, 0x61, 0x96, 0xbe, 0x2c, 0xe9, 0x1d, 0xfc, 0x20, 0xde, 0x67, 0xe3, 0x2e, - 0x9f, 0x88, 0x7e, 0xdc, 0x6f, 0x7c, 0x15, 0x0e, 0xcb, 0xef, 0x4a, 0xca, 0x54, 0x32, 0x30, 0x5f, - 0xf1, 0x44, 0x68, 0x7e, 0x07, 0x5a, 0x99, 0x8e, 0xbe, 0x29, 0xc1, 0x74, 0xdd, 0x31, 0xbb, 0xae, - 0xca, 0xea, 0xc6, 0x96, 0x18, 0xb8, 0x1f, 0x0e, 0xb7, 0xb1, 0x12, 0x0f, 0xee, 0xd3, 0xfa, 0xc8, - 0x31, 0x54, 0x40, 0x44, 0x0b, 0xfb, 0xaa, 0xdf, 0xc2, 0x96, 0x38, 0x54, 0xee, 0x48, 0x44, 0xed, - 0x5b, 0xb0, 0x7d, 0xbd, 0x42, 0x86, 0x82, 0xa7, 0x66, 0x4e, 0x69, 0xd7, 0xb2, 0xb0, 0xe1, 0x88, - 0x81, 0xf0, 0x97, 0x61, 0x10, 0x56, 0x78, 0x10, 0xee, 0x88, 0x51, 0x66, 0xaf, 0x94, 0x14, 0xdb, - 0xd8, 0xfb, 0x7c, 0x34, 0x1f, 0xe4, 0xd0, 0xfc, 0xee, 0xe4, 0x6c, 0x25, 0x83, 0x74, 0x65, 0x08, - 0x44, 0x4f, 0x42, 0xc1, 0x1d, 0x93, 0x4a, 0x8d, 0xca, 0x85, 0x72, 0xb3, 0x52, 0xbd, 0x50, 0x69, - 0x94, 0x0b, 0x18, 0xbd, 0x5c, 0x86, 0x19, 0xca, 0x9a, 0x8a, 0xf7, 0xcc, 0xcb, 0x82, 0xbd, 0xde, - 0xe3, 0x09, 0x8d, 0x85, 0x70, 0x09, 0x11, 0x2d, 0xe3, 0xc7, 0x12, 0x18, 0x0b, 0x31, 0xe4, 0x9e, - 0x48, 0xbd, 0xd5, 0x81, 0x66, 0xb0, 0xd5, 0xa7, 0xb5, 0xf4, 0xed, 0xad, 0x5e, 0x91, 0x05, 0xa0, - 0x95, 0xbc, 0xa0, 0xe3, 0x2b, 0x68, 0x2d, 0xc0, 0x84, 0x53, 0xdb, 0xcc, 0x40, 0xb5, 0x95, 0xfa, - 0xa9, 0xed, 0xbb, 0xc2, 0x63, 0xd6, 0x02, 0x8f, 0xde, 0xad, 0x91, 0xe2, 0x76, 0x39, 0x89, 0x9e, - 0x1d, 0x7a, 0x8a, 0x22, 0xf1, 0x56, 0xe7, 0x75, 0x30, 0x45, 0x1e, 0xab, 0xda, 0x0e, 0x66, 0x6d, - 0x28, 0x48, 0x50, 0xce, 0xc3, 0x0c, 0xcd, 0xd8, 0x32, 0x0d, 0xb7, 0x3e, 0x59, 0x92, 0x81, 0x4b, - 0x73, 0x41, 0x6c, 0x59, 0x58, 0x73, 0x4c, 0x8b, 0xd0, 0xc8, 0x51, 0x10, 0x43, 0x49, 0xe8, 0x4b, - 0x7e, 0x2b, 0x2c, 0x73, 0x9a, 0xf3, 0xf4, 0x24, 0x55, 0x49, 0xa6, 0x37, 0x7b, 0xc3, 0xb5, 0x3f, - 0xda, 0xea, 0x9a, 0x2e, 0xda, 0x4b, 0x64, 0x6a, 0x87, 0x95, 0xd3, 0xa0, 0xb0, 0x54, 0x37, 0x6f, - 0xa9, 0x56, 0x6d, 0x94, 0xab, 0x8d, 0xc2, 0x66, 0x5f, 0x8d, 0xda, 0x42, 0xaf, 0xcf, 0x42, 0xf6, - 0x01, 0x53, 0x37, 0xd0, 0xa3, 0x19, 0x4e, 0x25, 0x0c, 0xec, 0x5c, 0x31, 0xad, 0xcb, 0x7e, 0x43, - 0x0d, 0x12, 0xe2, 0xb1, 0x09, 0x54, 0x49, 0x1e, 0xa8, 0x4a, 0xd9, 0x7e, 0xaa, 0xf4, 0x93, 0x61, - 0x55, 0xba, 0x9b, 0x57, 0xa5, 0x9b, 0xfa, 0xc8, 0xdf, 0x65, 0x3e, 0xa2, 0x03, 0xf8, 0x90, 0xdf, - 0x01, 0xdc, 0xc7, 0xc1, 0xf8, 0x54, 0x31, 0x32, 0xc9, 0x00, 0xfc, 0x4c, 0xaa, 0x0d, 0xbf, 0x1f, - 0xd4, 0x5b, 0x11, 0x50, 0x6f, 0xf7, 0xe9, 0x13, 0xf4, 0x83, 0x5d, 0xc7, 0xc3, 0x07, 0xbb, 0x89, - 0xcb, 0xca, 0x29, 0x38, 0xb1, 0x58, 0x59, 0x5a, 0x2a, 0xab, 0xe5, 0x6a, 0xa3, 0x59, 0x2d, 0x37, - 0x2e, 0xd6, 0xd4, 0x07, 0x0b, 0x1d, 0xf4, 0x3a, 0x19, 0xc0, 0x95, 0x50, 0x49, 0x33, 0x5a, 0xb8, - 0x23, 0xd6, 0xa3, 0xff, 0x2f, 0x29, 0x59, 0x9f, 0x10, 0xd0, 0x8f, 0x80, 0xf3, 0x55, 0x92, 0x78, - 0xab, 0x8c, 0x24, 0x96, 0x0c, 0xd4, 0x37, 0x3e, 0x11, 0x6c, 0xcf, 0xab, 0xe0, 0xb8, 0x47, 0x8f, - 0x65, 0xef, 0x3f, 0xed, 0x7b, 0x73, 0x16, 0xe6, 0x18, 0x2c, 0xde, 0x3c, 0xfe, 0x45, 0x19, 0x91, - 0x89, 0x3c, 0x82, 0x49, 0x36, 0x6d, 0xf7, 0xba, 0x77, 0xff, 0x5d, 0x59, 0x86, 0xe9, 0x2e, 0xb6, - 0x76, 0x74, 0xdb, 0xd6, 0x4d, 0x83, 0x2e, 0xc8, 0xcd, 0xdd, 0xf1, 0x64, 0x5f, 0xe2, 0x64, 0xed, - 0x72, 0x7e, 0x5d, 0xb3, 0x1c, 0xbd, 0xa5, 0x77, 0x35, 0xc3, 0x59, 0x0f, 0x32, 0xab, 0xe1, 0x3f, - 0xd1, 0xcb, 0x12, 0x4e, 0x6b, 0xf8, 0x9a, 0x44, 0xa8, 0xc4, 0x6f, 0x25, 0x98, 0x92, 0xc4, 0x12, - 0x4c, 0xa6, 0x16, 0x1f, 0x4c, 0x55, 0x2d, 0xfa, 0xe0, 0xbd, 0xa5, 0x5c, 0x03, 0xa7, 0x2a, 0xd5, - 0x52, 0x4d, 0x55, 0xcb, 0xa5, 0x46, 0x73, 0xbd, 0xac, 0xae, 0x55, 0xea, 0xf5, 0x4a, 0xad, 0x5a, - 0x3f, 0x4c, 0x6b, 0x47, 0x1f, 0x91, 0x7d, 0x8d, 0x59, 0xc4, 0xad, 0x8e, 0x6e, 0x60, 0x74, 0xdf, - 0x21, 0x15, 0x86, 0x5f, 0xf5, 0x11, 0xc7, 0x99, 0x95, 0x1f, 0x81, 0xf3, 0x6b, 0x93, 0xe3, 0xdc, - 0x9f, 0xe0, 0x7f, 0xe0, 0xe6, 0xff, 0xb8, 0x0c, 0x27, 0x42, 0x0d, 0x51, 0xc5, 0x3b, 0x23, 0x5b, - 0xc9, 0xfb, 0xa1, 0x70, 0xdb, 0xad, 0xf0, 0x98, 0xf6, 0xb3, 0xa6, 0x0f, 0xb0, 0x11, 0x01, 0xeb, - 0x1b, 0x7d, 0x58, 0x57, 0x39, 0x58, 0x9f, 0x3d, 0x04, 0xcd, 0x64, 0xc8, 0xfe, 0x46, 0xaa, 0xc8, - 0x5e, 0x03, 0xa7, 0xd6, 0x8b, 0x6a, 0xa3, 0x52, 0xaa, 0xac, 0x17, 0xdd, 0x71, 0x34, 0x34, 0x64, - 0x47, 0x98, 0xeb, 0x3c, 0xe8, 0x7d, 0xf1, 0xfd, 0x9d, 0x2c, 0x5c, 0xd7, 0xbf, 0xa3, 0x2d, 0x6d, - 0x6b, 0xc6, 0x16, 0x46, 0xba, 0x08, 0xd4, 0x8b, 0x30, 0xd1, 0x22, 0xd9, 0x29, 0xce, 0xe1, 0xad, - 0x9b, 0x98, 0xbe, 0x9c, 0x96, 0xa0, 0x7a, 0xbf, 0xa2, 0xb7, 0x85, 0x15, 0xa2, 0xc1, 0x2b, 0xc4, - 0xbd, 0xf1, 0xe0, 0x1d, 0xe0, 0x3b, 0x42, 0x37, 0x3e, 0xe6, 0xeb, 0xc6, 0x45, 0x4e, 0x37, 0x4a, - 0x87, 0x23, 0x9f, 0x4c, 0x4d, 0xfe, 0xf0, 0x89, 0xd0, 0x01, 0x44, 0x6a, 0x93, 0x1e, 0x3d, 0x2a, - 0xf4, 0xed, 0xee, 0x5f, 0x23, 0x43, 0x7e, 0x11, 0x77, 0xb0, 0xe8, 0x4a, 0xe4, 0x57, 0x24, 0xd1, - 0x0d, 0x11, 0x0a, 0x03, 0xa5, 0x1d, 0xbd, 0x3a, 0xe2, 0xe8, 0x3b, 0xd8, 0x76, 0xb4, 0x9d, 0x2e, - 0x11, 0xb5, 0xac, 0x06, 0x09, 0xe8, 0x87, 0x25, 0x91, 0xed, 0x92, 0x98, 0x62, 0xfe, 0x63, 0xac, - 0x29, 0x7e, 0x42, 0x82, 0xc9, 0x3a, 0x76, 0x6a, 0x56, 0x1b, 0x5b, 0xa8, 0x1e, 0x60, 0x74, 0x0e, - 0xa6, 0x09, 0x28, 0xee, 0x34, 0xd3, 0xc7, 0x29, 0x9c, 0xa4, 0xdc, 0x04, 0x73, 0xfe, 0x2b, 0xf9, - 0x9d, 0x75, 0xe3, 0x3d, 0xa9, 0xe8, 0x1f, 0x33, 0xa2, 0xbb, 0xb8, 0x6c, 0xc9, 0x90, 0x71, 0x13, - 0xd1, 0x4a, 0xc5, 0x76, 0x64, 0x63, 0x49, 0xa5, 0xbf, 0xd1, 0xf5, 0x16, 0x09, 0x60, 0xc3, 0xb0, - 0x3d, 0xb9, 0x3e, 0x35, 0x81, 0x5c, 0xd1, 0x3f, 0x67, 0x92, 0xcd, 0x62, 0x82, 0x72, 0x22, 0x24, - 0xf6, 0x86, 0x04, 0x6b, 0x0b, 0x91, 0xc4, 0xd2, 0x97, 0xd9, 0xe7, 0xe7, 0x20, 0x7f, 0x51, 0xeb, - 0x74, 0xb0, 0x83, 0xbe, 0x20, 0x41, 0xbe, 0x64, 0x61, 0xcd, 0xc1, 0x61, 0xd1, 0x21, 0x98, 0xb4, - 0x4c, 0xd3, 0x59, 0xd7, 0x9c, 0x6d, 0x26, 0x37, 0xff, 0x9d, 0x39, 0x0c, 0xfc, 0x5a, 0xb8, 0xfb, - 0xb8, 0x8f, 0x17, 0xdd, 0x77, 0x72, 0xb5, 0xa5, 0x05, 0xcd, 0xd3, 0x42, 0x22, 0xfa, 0x0f, 0x04, - 0x93, 0x3b, 0x06, 0xde, 0x31, 0x0d, 0xbd, 0xe5, 0xd9, 0x9c, 0xde, 0x3b, 0xfa, 0x3d, 0x5f, 0xa6, - 0x0b, 0x9c, 0x4c, 0xe7, 0x85, 0x4b, 0x49, 0x26, 0xd0, 0xfa, 0x10, 0xbd, 0xc7, 0xf5, 0x70, 0x2d, - 0xed, 0x0c, 0x9a, 0x8d, 0x5a, 0xb3, 0xa4, 0x96, 0x8b, 0x8d, 0x72, 0x73, 0xb5, 0x56, 0x2a, 0xae, - 0x36, 0xd5, 0xf2, 0x7a, 0xad, 0x80, 0xd1, 0xdf, 0x49, 0xae, 0x70, 0x5b, 0xe6, 0x1e, 0xb6, 0xd0, - 0xb2, 0x90, 0x9c, 0xe3, 0x64, 0xc2, 0x30, 0xf8, 0x49, 0x61, 0xa7, 0x0d, 0x26, 0x1d, 0xc6, 0x41, - 0x84, 0xf2, 0xbe, 0x5f, 0xa8, 0xb9, 0xc7, 0x92, 0x7a, 0x02, 0x48, 0xfa, 0x7f, 0x4b, 0x30, 0x51, - 0x32, 0x8d, 0x3d, 0x6c, 0x39, 0xe1, 0xf9, 0x4e, 0x58, 0x9a, 0x19, 0x5e, 0x9a, 0xee, 0x20, 0x89, - 0x0d, 0xc7, 0x32, 0xbb, 0xde, 0x84, 0xc7, 0x7b, 0x45, 0xbf, 0x9c, 0x54, 0xc2, 0xac, 0xe4, 0xe8, - 0x85, 0xcf, 0xfe, 0x05, 0x71, 0xec, 0xc9, 0x3d, 0x0d, 0xe0, 0x75, 0x49, 0x70, 0xe9, 0xcf, 0x40, - 0xfa, 0x5d, 0xca, 0x67, 0x65, 0x98, 0xa5, 0x8d, 0xaf, 0x8e, 0x89, 0x85, 0x86, 0x6a, 0xe1, 0x25, - 0xc7, 0x1e, 0xe1, 0xaf, 0x1c, 0xe3, 0xc4, 0x9f, 0xd7, 0xba, 0x5d, 0x7f, 0xf9, 0x79, 0xe5, 0x98, - 0xca, 0xde, 0xa9, 0x9a, 0x2f, 0xe4, 0x21, 0xab, 0xed, 0x3a, 0xdb, 0xe8, 0x9b, 0xc2, 0x93, 0x4f, - 0xae, 0x33, 0x60, 0xfc, 0x44, 0x40, 0x72, 0x12, 0x72, 0x8e, 0x79, 0x19, 0x7b, 0x72, 0xa0, 0x2f, + // 19802 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xfd, 0x7b, 0x9c, 0x24, 0x49, + 0x59, 0x2f, 0x8c, 0x4f, 0x65, 0x56, 0x55, 0x77, 0x3f, 0x7d, 0x99, 0x9a, 0xdc, 0x99, 0xd9, 0xd9, + 0xd8, 0x65, 0x76, 0x9c, 0x5d, 0x96, 0x75, 0x59, 0x7a, 0x2f, 0x20, 0xb2, 0xcb, 0xde, 0xaa, 0xab, + 0xab, 0xbb, 0x6b, 0xb7, 0xbb, 0xaa, 0xcd, 0xaa, 0x9e, 0x61, 0xf5, 0xf8, 0xab, 0x93, 0x53, 0x15, + 0xdd, 0x9d, 0x3b, 0xd5, 0x99, 0x65, 0x66, 0x76, 0xcf, 0x0e, 0xbf, 0xcf, 0x79, 0x8f, 0x88, 0x2b, + 0x28, 0x72, 0x10, 0x15, 0x15, 0x15, 0x90, 0xcb, 0xca, 0x01, 0x05, 0xe4, 0x7e, 0x40, 0x05, 0xe4, + 0x22, 0x88, 0x88, 0x08, 0x72, 0x11, 0xdd, 0x57, 0x10, 0x44, 0x3c, 0x1f, 0x39, 0xbc, 0xfa, 0x1e, + 0x41, 0x14, 0x5e, 0xdf, 0x4f, 0x46, 0x44, 0x5e, 0xa2, 0xba, 0x32, 0x2b, 0xb2, 0xba, 0xb2, 0x7a, + 0x91, 0xf7, 0xbf, 0xcc, 0xc8, 0xc8, 0x27, 0x9e, 0x78, 0xbe, 0x4f, 0x44, 0x3c, 0x11, 0xf1, 0xc4, + 0x13, 0x70, 0xaa, 0x7b, 0xe1, 0x96, 0xae, 0x65, 0x3a, 0xa6, 0x7d, 0x4b, 0xcb, 0xdc, 0xd9, 0xd1, + 0x8c, 0xb6, 0x3d, 0x4f, 0xde, 0x95, 0x09, 0xcd, 0xb8, 0xec, 0x5c, 0xee, 0x62, 0x74, 0x7d, 0xf7, + 0xe2, 0xd6, 0x2d, 0x1d, 0xfd, 0xc2, 0x2d, 0xdd, 0x0b, 0xb7, 0xec, 0x98, 0x6d, 0xdc, 0xf1, 0x7e, + 0x20, 0x2f, 0x2c, 0x3b, 0xba, 0x31, 0x2a, 0x57, 0xc7, 0x6c, 0x69, 0x1d, 0xdb, 0x31, 0x2d, 0xcc, + 0x72, 0x9e, 0x0c, 0x8a, 0xc4, 0x7b, 0xd8, 0x70, 0x3c, 0x0a, 0xd7, 0x6c, 0x99, 0xe6, 0x56, 0x07, + 0xd3, 0x6f, 0x17, 0x76, 0x37, 0x6f, 0xb1, 0x1d, 0x6b, 0xb7, 0xe5, 0xb0, 0xaf, 0x67, 0x7a, 0xbf, + 0xb6, 0xb1, 0xdd, 0xb2, 0xf4, 0xae, 0x63, 0x5a, 0x34, 0xc7, 0xd9, 0x77, 0xfd, 0xe2, 0x24, 0xc8, + 0x6a, 0xb7, 0x85, 0xbe, 0x31, 0x01, 0x72, 0xb1, 0xdb, 0x45, 0x1f, 0x92, 0x00, 0x96, 0xb1, 0x73, + 0x0e, 0x5b, 0xb6, 0x6e, 0x1a, 0xe8, 0x28, 0x4c, 0xa8, 0xf8, 0xc7, 0x76, 0xb1, 0xed, 0xdc, 0x99, + 0x7d, 0xfe, 0x57, 0xe4, 0x0c, 0x7a, 0x54, 0x82, 0x49, 0x15, 0xdb, 0x5d, 0xd3, 0xb0, 0xb1, 0x72, + 0x1f, 0xe4, 0xb0, 0x65, 0x99, 0xd6, 0xa9, 0xcc, 0x99, 0xcc, 0x8d, 0xd3, 0xb7, 0xdf, 0x34, 0xcf, + 0xaa, 0x3f, 0xaf, 0x76, 0x5b, 0xf3, 0xc5, 0x6e, 0x77, 0x3e, 0xa0, 0x34, 0xef, 0xfd, 0x34, 0x5f, + 0x76, 0xff, 0x50, 0xe9, 0x8f, 0xca, 0x29, 0x98, 0xd8, 0xa3, 0x19, 0x4e, 0x49, 0x67, 0x32, 0x37, + 0x4e, 0xa9, 0xde, 0xab, 0xfb, 0xa5, 0x8d, 0x1d, 0x4d, 0xef, 0xd8, 0xa7, 0x64, 0xfa, 0x85, 0xbd, + 0xa2, 0x57, 0x65, 0x20, 0x47, 0x88, 0x28, 0x25, 0xc8, 0xb6, 0xcc, 0x36, 0x26, 0xc5, 0xcf, 0xdd, + 0x7e, 0x8b, 0x78, 0xf1, 0xf3, 0x25, 0xb3, 0x8d, 0x55, 0xf2, 0xb3, 0x72, 0x06, 0xa6, 0x3d, 0xb1, + 0x04, 0x6c, 0x84, 0x93, 0xce, 0xde, 0x0e, 0x59, 0x37, 0xbf, 0x32, 0x09, 0xd9, 0xea, 0xc6, 0xea, + 0x6a, 0xe1, 0x88, 0x72, 0x0c, 0x66, 0x37, 0xaa, 0x0f, 0x54, 0x6b, 0xe7, 0xab, 0xcd, 0xb2, 0xaa, + 0xd6, 0xd4, 0x42, 0x46, 0x99, 0x85, 0xa9, 0x85, 0xe2, 0x62, 0xb3, 0x52, 0x5d, 0xdf, 0x68, 0x14, + 0x24, 0xf4, 0x72, 0x19, 0xe6, 0xea, 0xd8, 0x59, 0xc4, 0x7b, 0x7a, 0x0b, 0xd7, 0x1d, 0xcd, 0xc1, + 0xe8, 0x45, 0x19, 0x5f, 0x98, 0xca, 0x86, 0x5b, 0xa8, 0xff, 0x89, 0x55, 0xe0, 0xa9, 0xfb, 0x2a, + 0xc0, 0x53, 0x98, 0x67, 0x7f, 0xcf, 0x87, 0xd2, 0xd4, 0x30, 0x9d, 0xb3, 0x4f, 0x81, 0xe9, 0xd0, + 0x37, 0x65, 0x0e, 0x60, 0xa1, 0x58, 0x7a, 0x60, 0x59, 0xad, 0x6d, 0x54, 0x17, 0x0b, 0x47, 0xdc, + 0xf7, 0xa5, 0x9a, 0x5a, 0x66, 0xef, 0x19, 0xf4, 0xad, 0x4c, 0x08, 0xcc, 0x45, 0x1e, 0xcc, 0xf9, + 0xc1, 0xcc, 0xf4, 0x01, 0x14, 0xfd, 0xa6, 0x0f, 0xce, 0x32, 0x07, 0xce, 0x53, 0x93, 0x91, 0x4b, + 0x1f, 0xa0, 0x47, 0x24, 0x98, 0xac, 0x6f, 0xef, 0x3a, 0x6d, 0xf3, 0x92, 0x81, 0xa6, 0x7c, 0x64, + 0xd0, 0xd7, 0xc2, 0x32, 0xb9, 0x87, 0x97, 0xc9, 0x8d, 0xfb, 0x2b, 0xc1, 0x28, 0x44, 0x48, 0xe3, + 0x37, 0x7c, 0x69, 0x14, 0x39, 0x69, 0x3c, 0x45, 0x94, 0x50, 0xfa, 0x72, 0xf8, 0xd5, 0x67, 0x40, + 0xae, 0xde, 0xd5, 0x5a, 0x18, 0x7d, 0x4c, 0x86, 0x99, 0x55, 0xac, 0xed, 0xe1, 0x62, 0xb7, 0x6b, + 0x99, 0x7b, 0x18, 0x95, 0x02, 0x7d, 0x3d, 0x05, 0x13, 0xb6, 0x9b, 0xa9, 0xd2, 0x26, 0x35, 0x98, + 0x52, 0xbd, 0x57, 0xe5, 0x34, 0x80, 0xde, 0xc6, 0x86, 0xa3, 0x3b, 0x3a, 0xb6, 0x4f, 0x49, 0x67, + 0xe4, 0x1b, 0xa7, 0xd4, 0x50, 0x0a, 0xfa, 0x86, 0x24, 0xaa, 0x63, 0x84, 0x8b, 0xf9, 0x30, 0x07, + 0x11, 0x52, 0x7d, 0xb5, 0x24, 0xa2, 0x63, 0x03, 0xc9, 0x25, 0x93, 0xed, 0x1b, 0x33, 0xc9, 0x85, + 0xeb, 0xe6, 0xa8, 0xd6, 0x9a, 0xf5, 0x8d, 0xd2, 0x4a, 0xb3, 0xbe, 0x5e, 0x2c, 0x95, 0x0b, 0x58, + 0x39, 0x0e, 0x05, 0xf2, 0xd8, 0xac, 0xd4, 0x9b, 0x8b, 0xe5, 0xd5, 0x72, 0xa3, 0xbc, 0x58, 0xd8, + 0x54, 0x14, 0x98, 0x53, 0xcb, 0x3f, 0xb4, 0x51, 0xae, 0x37, 0x9a, 0x4b, 0xc5, 0xca, 0x6a, 0x79, + 0xb1, 0xb0, 0xe5, 0xfe, 0xbc, 0x5a, 0x59, 0xab, 0x34, 0x9a, 0x6a, 0xb9, 0x58, 0x5a, 0x29, 0x2f, + 0x16, 0xb6, 0x95, 0x2b, 0xe1, 0x8a, 0x6a, 0xad, 0x59, 0x5c, 0x5f, 0x57, 0x6b, 0xe7, 0xca, 0x4d, + 0xf6, 0x47, 0xbd, 0xa0, 0xd3, 0x82, 0x1a, 0xcd, 0xfa, 0x4a, 0x51, 0x2d, 0x17, 0x17, 0x56, 0xcb, + 0x85, 0x87, 0xd0, 0x73, 0x65, 0x98, 0x5d, 0xd3, 0x2e, 0xe2, 0xfa, 0xb6, 0x66, 0x61, 0xed, 0x42, + 0x07, 0xa3, 0xeb, 0x04, 0xf0, 0x44, 0x1f, 0x0b, 0xe3, 0x55, 0xe6, 0xf1, 0xba, 0xa5, 0x8f, 0x80, + 0xb9, 0x22, 0x22, 0x00, 0xfb, 0x17, 0xbf, 0x19, 0xac, 0x70, 0x80, 0x3d, 0x2d, 0x21, 0xbd, 0x64, + 0x88, 0xfd, 0xc4, 0xe3, 0x00, 0x31, 0xf4, 0x98, 0x0c, 0x73, 0x15, 0x63, 0x4f, 0x77, 0xf0, 0x32, + 0x36, 0xb0, 0xe5, 0x8e, 0x03, 0x42, 0x30, 0x3c, 0x2a, 0x87, 0x60, 0x58, 0xe2, 0x61, 0xb8, 0xb5, + 0x8f, 0xd8, 0xf8, 0x32, 0x22, 0x46, 0xdb, 0x6b, 0x60, 0x4a, 0x27, 0xf9, 0x4a, 0x7a, 0x9b, 0x49, + 0x2c, 0x48, 0x50, 0xae, 0x87, 0x59, 0xfa, 0xb2, 0xa4, 0x77, 0xf0, 0x03, 0xf8, 0x32, 0x1b, 0x77, + 0xf9, 0x44, 0xf4, 0xb3, 0x7e, 0xe3, 0xab, 0x70, 0x58, 0xfe, 0x40, 0x52, 0xa6, 0x92, 0x81, 0xf9, + 0x92, 0xc7, 0x43, 0xf3, 0xdb, 0xd7, 0xca, 0x74, 0xf4, 0x1d, 0x09, 0xa6, 0xeb, 0x8e, 0xd9, 0x75, + 0x55, 0x56, 0x37, 0xb6, 0xc4, 0xc0, 0xfd, 0x48, 0xb8, 0x8d, 0x95, 0x78, 0x70, 0x9f, 0xd2, 0x47, + 0x8e, 0xa1, 0x02, 0x22, 0x5a, 0xd8, 0x37, 0xfc, 0x16, 0xb6, 0xc4, 0xa1, 0x72, 0x7b, 0x22, 0x6a, + 0xdf, 0x85, 0xed, 0xeb, 0x25, 0x32, 0x14, 0x3c, 0x35, 0x73, 0x4a, 0xbb, 0x96, 0x85, 0x0d, 0x47, + 0x0c, 0x84, 0xbf, 0x0c, 0x83, 0xb0, 0xc2, 0x83, 0x70, 0x7b, 0x8c, 0x32, 0x7b, 0xa5, 0xa4, 0xd8, + 0xc6, 0xde, 0xe7, 0xa3, 0xf9, 0x00, 0x87, 0xe6, 0x0f, 0x26, 0x67, 0x2b, 0x19, 0xa4, 0x2b, 0x43, + 0x20, 0x7a, 0x1c, 0x0a, 0xee, 0x98, 0x54, 0x6a, 0x54, 0xce, 0x95, 0x9b, 0x95, 0xea, 0xb9, 0x4a, + 0xa3, 0x5c, 0xc0, 0xe8, 0x17, 0x64, 0x98, 0xa1, 0xac, 0xa9, 0x78, 0xcf, 0xbc, 0x28, 0xd8, 0xeb, + 0x3d, 0x96, 0xd0, 0x58, 0x08, 0x97, 0x10, 0xd1, 0x32, 0x7e, 0x26, 0x81, 0xb1, 0x10, 0x43, 0xee, + 0xf1, 0xd4, 0x5b, 0xed, 0x6b, 0x06, 0x5b, 0x7d, 0x5a, 0x4b, 0xdf, 0xde, 0xea, 0x25, 0x59, 0x00, + 0x5a, 0xc9, 0x73, 0x3a, 0xbe, 0x84, 0xd6, 0x02, 0x4c, 0x38, 0xb5, 0xcd, 0x0c, 0x54, 0x5b, 0xa9, + 0x9f, 0xda, 0xbe, 0x33, 0x3c, 0x66, 0x2d, 0xf0, 0xe8, 0xdd, 0x1c, 0x29, 0x6e, 0x97, 0x93, 0xe8, + 0xd9, 0xa1, 0xa7, 0x28, 0x12, 0x6f, 0x75, 0x5e, 0x03, 0x53, 0xe4, 0xb1, 0xaa, 0xed, 0x60, 0xd6, + 0x86, 0x82, 0x04, 0xe5, 0x2c, 0xcc, 0xd0, 0x8c, 0x2d, 0xd3, 0x70, 0xeb, 0x93, 0x25, 0x19, 0xb8, + 0x34, 0x17, 0xc4, 0x96, 0x85, 0x35, 0xc7, 0xb4, 0x08, 0x8d, 0x1c, 0x05, 0x31, 0x94, 0x84, 0xbe, + 0xea, 0xb7, 0xc2, 0x32, 0xa7, 0x39, 0xb7, 0x25, 0xa9, 0x4a, 0x32, 0xbd, 0xd9, 0x1b, 0xae, 0xfd, + 0xd1, 0x56, 0xd7, 0x74, 0xd1, 0x5e, 0x22, 0x53, 0x3b, 0xac, 0x9c, 0x04, 0x85, 0xa5, 0xba, 0x79, + 0x4b, 0xb5, 0x6a, 0xa3, 0x5c, 0x6d, 0x14, 0x36, 0xfb, 0x6a, 0xd4, 0x16, 0x7a, 0x75, 0x16, 0xb2, + 0xf7, 0x9b, 0xba, 0x81, 0x1e, 0xc9, 0x70, 0x2a, 0x61, 0x60, 0xe7, 0x92, 0x69, 0x5d, 0xf4, 0x1b, + 0x6a, 0x90, 0x10, 0x8f, 0x4d, 0xa0, 0x4a, 0xf2, 0x40, 0x55, 0xca, 0xf6, 0x53, 0xa5, 0x9f, 0x0f, + 0xab, 0xd2, 0x5d, 0xbc, 0x2a, 0xdd, 0xd0, 0x47, 0xfe, 0x2e, 0xf3, 0x11, 0x1d, 0xc0, 0x87, 0xfd, + 0x0e, 0xe0, 0x5e, 0x0e, 0xc6, 0x27, 0x8b, 0x91, 0x49, 0x06, 0xe0, 0xe7, 0x53, 0x6d, 0xf8, 0xfd, + 0xa0, 0xde, 0x8a, 0x80, 0x7a, 0xbb, 0x4f, 0x9f, 0xa0, 0xef, 0xef, 0x3a, 0x1e, 0xda, 0xdf, 0x4d, + 0x5c, 0x54, 0x4e, 0xc0, 0xb1, 0xc5, 0xca, 0xd2, 0x52, 0x59, 0x2d, 0x57, 0x1b, 0xcd, 0x6a, 0xb9, + 0x71, 0xbe, 0xa6, 0x3e, 0x50, 0xe8, 0xa0, 0x57, 0xc9, 0x00, 0xae, 0x84, 0x4a, 0x9a, 0xd1, 0xc2, + 0x1d, 0xb1, 0x1e, 0xfd, 0x7f, 0x49, 0xc9, 0xfa, 0x84, 0x80, 0x7e, 0x04, 0x9c, 0x2f, 0x93, 0xc4, + 0x5b, 0x65, 0x24, 0xb1, 0x64, 0xa0, 0xbe, 0xfe, 0xf1, 0x60, 0x7b, 0x5e, 0x01, 0x47, 0x3d, 0x7a, + 0x2c, 0x7b, 0xff, 0x69, 0xdf, 0x9b, 0xb2, 0x30, 0xc7, 0x60, 0xf1, 0xe6, 0xf1, 0xcf, 0xcf, 0x88, + 0x4c, 0xe4, 0x11, 0x4c, 0xb2, 0x69, 0xbb, 0xd7, 0xbd, 0xfb, 0xef, 0xca, 0x32, 0x4c, 0x77, 0xb1, + 0xb5, 0xa3, 0xdb, 0xb6, 0x6e, 0x1a, 0x74, 0x41, 0x6e, 0xee, 0xf6, 0x27, 0xfa, 0x12, 0x27, 0x6b, + 0x97, 0xf3, 0xeb, 0x9a, 0xe5, 0xe8, 0x2d, 0xbd, 0xab, 0x19, 0xce, 0x7a, 0x90, 0x59, 0x0d, 0xff, + 0x89, 0x5e, 0x9c, 0x70, 0x5a, 0xc3, 0xd7, 0x24, 0x42, 0x25, 0x7e, 0x2f, 0xc1, 0x94, 0x24, 0x96, + 0x60, 0x32, 0xb5, 0xf8, 0x50, 0xaa, 0x6a, 0xd1, 0x07, 0xef, 0x2d, 0xe5, 0x2a, 0x38, 0x51, 0xa9, + 0x96, 0x6a, 0xaa, 0x5a, 0x2e, 0x35, 0x9a, 0xeb, 0x65, 0x75, 0xad, 0x52, 0xaf, 0x57, 0x6a, 0xd5, + 0xfa, 0x41, 0x5a, 0x3b, 0xfa, 0xa8, 0xec, 0x6b, 0xcc, 0x22, 0x6e, 0x75, 0x74, 0x03, 0xa3, 0x7b, + 0x0f, 0xa8, 0x30, 0xfc, 0xaa, 0x8f, 0x38, 0xce, 0xac, 0xfc, 0x08, 0x9c, 0x5f, 0x99, 0x1c, 0xe7, + 0xfe, 0x04, 0xff, 0x03, 0x37, 0xff, 0xc7, 0x64, 0x38, 0x16, 0x6a, 0x88, 0x2a, 0xde, 0x19, 0xd9, + 0x4a, 0xde, 0x4f, 0x84, 0xdb, 0x6e, 0x85, 0xc7, 0xb4, 0x9f, 0x35, 0xbd, 0x8f, 0x8d, 0x08, 0x58, + 0x5f, 0xef, 0xc3, 0xba, 0xca, 0xc1, 0xfa, 0x8c, 0x21, 0x68, 0x26, 0x43, 0xf6, 0x77, 0x52, 0x45, + 0xf6, 0x2a, 0x38, 0xb1, 0x5e, 0x54, 0x1b, 0x95, 0x52, 0x65, 0xbd, 0xe8, 0x8e, 0xa3, 0xa1, 0x21, + 0x3b, 0xc2, 0x5c, 0xe7, 0x41, 0xef, 0x8b, 0xef, 0x7b, 0xb3, 0x70, 0x4d, 0xff, 0x8e, 0xb6, 0xb4, + 0xad, 0x19, 0x5b, 0x18, 0xe9, 0x22, 0x50, 0x2f, 0xc2, 0x44, 0x8b, 0x64, 0xa7, 0x38, 0x87, 0xb7, + 0x6e, 0x62, 0xfa, 0x72, 0x5a, 0x82, 0xea, 0xfd, 0x8a, 0xde, 0x1a, 0x56, 0x88, 0x06, 0xaf, 0x10, + 0xf7, 0xc4, 0x83, 0xb7, 0x8f, 0xef, 0x08, 0xdd, 0xf8, 0x84, 0xaf, 0x1b, 0xe7, 0x39, 0xdd, 0x28, + 0x1d, 0x8c, 0x7c, 0x32, 0x35, 0xf9, 0xe3, 0xc7, 0x43, 0x07, 0x10, 0xa9, 0x4d, 0x7a, 0xf4, 0xa8, + 0xd0, 0xb7, 0xbb, 0x7f, 0x85, 0x0c, 0xf9, 0x45, 0xdc, 0xc1, 0xa2, 0x2b, 0x91, 0x5f, 0x97, 0x44, + 0x37, 0x44, 0x28, 0x0c, 0x94, 0x76, 0xf4, 0xea, 0x88, 0xa3, 0xef, 0x60, 0xdb, 0xd1, 0x76, 0xba, + 0x44, 0xd4, 0xb2, 0x1a, 0x24, 0xa0, 0x9f, 0x94, 0x44, 0xb6, 0x4b, 0x62, 0x8a, 0xf9, 0x8f, 0xb1, + 0xa6, 0xf8, 0x29, 0x09, 0x26, 0xeb, 0xd8, 0xa9, 0x59, 0x6d, 0x6c, 0xa1, 0x7a, 0x80, 0xd1, 0x19, + 0x98, 0x26, 0xa0, 0xb8, 0xd3, 0x4c, 0x1f, 0xa7, 0x70, 0x92, 0x72, 0x03, 0xcc, 0xf9, 0xaf, 0xe4, + 0x77, 0xd6, 0x8d, 0xf7, 0xa4, 0xa2, 0x7f, 0xcc, 0x88, 0xee, 0xe2, 0xb2, 0x25, 0x43, 0xc6, 0x4d, + 0x44, 0x2b, 0x15, 0xdb, 0x91, 0x8d, 0x25, 0x95, 0xfe, 0x46, 0xd7, 0x9b, 0x25, 0x80, 0x0d, 0xc3, + 0xf6, 0xe4, 0xfa, 0xe4, 0x04, 0x72, 0x45, 0xff, 0x9c, 0x49, 0x36, 0x8b, 0x09, 0xca, 0x89, 0x90, + 0xd8, 0x6b, 0x12, 0xac, 0x2d, 0x44, 0x12, 0x4b, 0x5f, 0x66, 0x5f, 0x9a, 0x83, 0xfc, 0x79, 0xad, + 0xd3, 0xc1, 0x0e, 0xfa, 0xb2, 0x04, 0xf9, 0x92, 0x85, 0x35, 0x07, 0x87, 0x45, 0x87, 0x60, 0xd2, + 0x32, 0x4d, 0x67, 0x5d, 0x73, 0xb6, 0x99, 0xdc, 0xfc, 0x77, 0xe6, 0x30, 0xf0, 0xdb, 0xe1, 0xee, + 0xe3, 0x5e, 0x5e, 0x74, 0xdf, 0xcf, 0xd5, 0x96, 0x16, 0x34, 0x4f, 0x0b, 0x89, 0xe8, 0x3f, 0x10, + 0x4c, 0xee, 0x18, 0x78, 0xc7, 0x34, 0xf4, 0x96, 0x67, 0x73, 0x7a, 0xef, 0xe8, 0xfd, 0xbe, 0x4c, + 0x17, 0x38, 0x99, 0xce, 0x0b, 0x97, 0x92, 0x4c, 0xa0, 0xf5, 0x21, 0x7a, 0x8f, 0x6b, 0xe1, 0x6a, + 0xda, 0x19, 0x34, 0x1b, 0xb5, 0x66, 0x49, 0x2d, 0x17, 0x1b, 0xe5, 0xe6, 0x6a, 0xad, 0x54, 0x5c, + 0x6d, 0xaa, 0xe5, 0xf5, 0x5a, 0x01, 0xa3, 0xbf, 0x93, 0x5c, 0xe1, 0xb6, 0xcc, 0x3d, 0x6c, 0xa1, + 0x65, 0x21, 0x39, 0xc7, 0xc9, 0x84, 0x61, 0xf0, 0xf3, 0xc2, 0x4e, 0x1b, 0x4c, 0x3a, 0x8c, 0x83, + 0x08, 0xe5, 0xfd, 0x80, 0x50, 0x73, 0x8f, 0x25, 0xf5, 0x38, 0x90, 0xf4, 0xff, 0x96, 0x60, 0xa2, + 0x64, 0x1a, 0x7b, 0xd8, 0x72, 0xc2, 0xf3, 0x9d, 0xb0, 0x34, 0x33, 0xbc, 0x34, 0xdd, 0x41, 0x12, + 0x1b, 0x8e, 0x65, 0x76, 0xbd, 0x09, 0x8f, 0xf7, 0x8a, 0x5e, 0x9b, 0x54, 0xc2, 0xac, 0xe4, 0xe8, + 0x85, 0xcf, 0xfe, 0x05, 0x71, 0xec, 0xc9, 0x3d, 0x0d, 0xe0, 0x55, 0x49, 0x70, 0xe9, 0xcf, 0x40, + 0xfa, 0x5d, 0xca, 0x17, 0x64, 0x98, 0xa5, 0x8d, 0xaf, 0x8e, 0x89, 0x85, 0x86, 0x6a, 0xe1, 0x25, + 0xc7, 0x1e, 0xe1, 0xaf, 0x1c, 0xe1, 0xc4, 0x9f, 0xd7, 0xba, 0x5d, 0x7f, 0xf9, 0x79, 0xe5, 0x88, + 0xca, 0xde, 0xa9, 0x9a, 0x2f, 0xe4, 0x21, 0xab, 0xed, 0x3a, 0xdb, 0xe8, 0x3b, 0xc2, 0x93, 0x4f, + 0xae, 0x33, 0x60, 0xfc, 0x44, 0x40, 0x72, 0x1c, 0x72, 0x8e, 0x79, 0x11, 0x7b, 0x72, 0xa0, 0x2f, 0x2e, 0x1c, 0x5a, 0xb7, 0xdb, 0x20, 0x1f, 0x18, 0x1c, 0xde, 0xbb, 0x6b, 0xeb, 0x68, 0xad, 0x96, - 0xb9, 0x6b, 0x38, 0x15, 0x6f, 0x09, 0x3a, 0x48, 0x40, 0x9f, 0xce, 0x88, 0x4c, 0x66, 0x05, 0x18, - 0x4c, 0x06, 0xd9, 0xa5, 0x21, 0x9a, 0xd2, 0x3c, 0xdc, 0x52, 0x5c, 0x5f, 0x6f, 0x36, 0x6a, 0x0f, - 0x96, 0xab, 0x81, 0xe1, 0xd9, 0xac, 0x54, 0x9b, 0x8d, 0x95, 0x72, 0xb3, 0xb4, 0xa1, 0x92, 0x75, - 0xc2, 0x62, 0xa9, 0x54, 0xdb, 0xa8, 0x36, 0x0a, 0x18, 0xbd, 0x49, 0x82, 0x99, 0x52, 0xc7, 0xb4, - 0x7d, 0x84, 0xaf, 0x0f, 0x10, 0xf6, 0xc5, 0x98, 0x09, 0x89, 0x11, 0xfd, 0x5b, 0x46, 0xd4, 0xe9, - 0xc0, 0x13, 0x48, 0x88, 0x7c, 0x44, 0x2f, 0xf5, 0xcb, 0x42, 0x4e, 0x07, 0x83, 0xe9, 0xa5, 0xdf, - 0x24, 0x3e, 0x75, 0x2f, 0x4c, 0x14, 0xa9, 0x62, 0xa0, 0xbf, 0xce, 0x40, 0xbe, 0x64, 0x1a, 0x9b, - 0xfa, 0x96, 0x6b, 0xcc, 0x61, 0x43, 0xbb, 0xd4, 0xc1, 0x8b, 0x9a, 0xa3, 0xed, 0xe9, 0xf8, 0x0a, - 0xa9, 0xc0, 0xa4, 0xda, 0x93, 0xea, 0x32, 0xc5, 0x52, 0xf0, 0xa5, 0xdd, 0x2d, 0xc2, 0xd4, 0xa4, - 0x1a, 0x4e, 0x52, 0x9e, 0x0d, 0x57, 0xd3, 0xd7, 0x75, 0x0b, 0x5b, 0xb8, 0x83, 0x35, 0x1b, 0xbb, - 0xd3, 0x22, 0x03, 0x77, 0x88, 0xd2, 0x4e, 0xaa, 0x51, 0x9f, 0x95, 0xf3, 0x30, 0x43, 0x3f, 0x11, - 0x53, 0xc4, 0x26, 0x6a, 0x3c, 0xa9, 0x72, 0x69, 0xca, 0xd3, 0x20, 0x87, 0x1f, 0x71, 0x2c, 0xed, - 0x4c, 0x9b, 0xe0, 0x75, 0xf5, 0x3c, 0xf5, 0x3a, 0x9c, 0xf7, 0xbc, 0x0e, 0xe7, 0xeb, 0xc4, 0x27, - 0x51, 0xa5, 0xb9, 0xd0, 0x47, 0x26, 0x7d, 0x43, 0xe2, 0x4d, 0x72, 0xa0, 0x18, 0x0a, 0x64, 0x0d, - 0x6d, 0x07, 0x33, 0xbd, 0x20, 0xcf, 0xca, 0x2d, 0x70, 0x5c, 0xdb, 0xd3, 0x1c, 0xcd, 0x5a, 0x35, - 0x5b, 0x5a, 0x87, 0x0c, 0x7e, 0x5e, 0xcb, 0xef, 0xfd, 0x40, 0x76, 0x84, 0x1c, 0xd3, 0xc2, 0x24, - 0x97, 0xb7, 0x23, 0xe4, 0x25, 0xb8, 0xd4, 0xf5, 0x96, 0x69, 0x10, 0xfe, 0x65, 0x95, 0x3c, 0xbb, - 0x52, 0x69, 0xeb, 0xb6, 0x5b, 0x11, 0x42, 0xa5, 0x4a, 0xb7, 0x36, 0xea, 0xfb, 0x46, 0x8b, 0xec, + 0xb9, 0x6b, 0x38, 0x15, 0x6f, 0x09, 0x3a, 0x48, 0x40, 0x9f, 0xcb, 0x88, 0x4c, 0x66, 0x05, 0x18, + 0x4c, 0x06, 0xd9, 0x85, 0x21, 0x9a, 0xd2, 0x3c, 0xdc, 0x54, 0x5c, 0x5f, 0x6f, 0x36, 0x6a, 0x0f, + 0x94, 0xab, 0x81, 0xe1, 0xd9, 0xac, 0x54, 0x9b, 0x8d, 0x95, 0x72, 0xb3, 0xb4, 0xa1, 0x92, 0x75, + 0xc2, 0x62, 0xa9, 0x54, 0xdb, 0xa8, 0x36, 0x0a, 0x18, 0xbd, 0x41, 0x82, 0x99, 0x52, 0xc7, 0xb4, + 0x7d, 0x84, 0xaf, 0x0d, 0x10, 0xf6, 0xc5, 0x98, 0x09, 0x89, 0x11, 0xfd, 0x5b, 0x46, 0xd4, 0xe9, + 0xc0, 0x13, 0x48, 0x88, 0x7c, 0x44, 0x2f, 0xf5, 0x5a, 0x21, 0xa7, 0x83, 0xc1, 0xf4, 0xd2, 0x6f, + 0x12, 0x9f, 0xbd, 0x07, 0x26, 0x8a, 0x54, 0x31, 0xd0, 0x5f, 0x67, 0x20, 0x5f, 0x32, 0x8d, 0x4d, + 0x7d, 0xcb, 0x35, 0xe6, 0xb0, 0xa1, 0x5d, 0xe8, 0xe0, 0x45, 0xcd, 0xd1, 0xf6, 0x74, 0x7c, 0x89, + 0x54, 0x60, 0x52, 0xed, 0x49, 0x75, 0x99, 0x62, 0x29, 0xf8, 0xc2, 0xee, 0x16, 0x61, 0x6a, 0x52, + 0x0d, 0x27, 0x29, 0xcf, 0x80, 0x2b, 0xe9, 0xeb, 0xba, 0x85, 0x2d, 0xdc, 0xc1, 0x9a, 0x8d, 0xdd, + 0x69, 0x91, 0x81, 0x3b, 0x44, 0x69, 0x27, 0xd5, 0xa8, 0xcf, 0xca, 0x59, 0x98, 0xa1, 0x9f, 0x88, + 0x29, 0x62, 0x13, 0x35, 0x9e, 0x54, 0xb9, 0x34, 0xe5, 0x29, 0x90, 0xc3, 0x0f, 0x3b, 0x96, 0x76, + 0xaa, 0x4d, 0xf0, 0xba, 0x72, 0x9e, 0x7a, 0x1d, 0xce, 0x7b, 0x5e, 0x87, 0xf3, 0x75, 0xe2, 0x93, + 0xa8, 0xd2, 0x5c, 0xe8, 0xa3, 0x93, 0xbe, 0x21, 0xf1, 0x06, 0x39, 0x50, 0x0c, 0x05, 0xb2, 0x86, + 0xb6, 0x83, 0x99, 0x5e, 0x90, 0x67, 0xe5, 0x26, 0x38, 0xaa, 0xed, 0x69, 0x8e, 0x66, 0xad, 0x9a, + 0x2d, 0xad, 0x43, 0x06, 0x3f, 0xaf, 0xe5, 0xf7, 0x7e, 0x20, 0x3b, 0x42, 0x8e, 0x69, 0x61, 0x92, + 0xcb, 0xdb, 0x11, 0xf2, 0x12, 0x5c, 0xea, 0x7a, 0xcb, 0x34, 0x08, 0xff, 0xb2, 0x4a, 0x9e, 0x5d, + 0xa9, 0xb4, 0x75, 0xdb, 0xad, 0x08, 0xa1, 0x52, 0xa5, 0x5b, 0x1b, 0xf5, 0xcb, 0x46, 0x8b, 0xec, 0x06, 0x4d, 0xaa, 0x51, 0x9f, 0x95, 0x05, 0x98, 0x66, 0x1b, 0x21, 0x6b, 0xae, 0x5e, 0xe5, 0x89, - 0x5e, 0x9d, 0xe3, 0x7d, 0xba, 0x28, 0x9e, 0xf3, 0xd5, 0x20, 0x9f, 0x1a, 0xfe, 0x49, 0xb9, 0x1f, - 0xae, 0x65, 0xaf, 0xa5, 0x5d, 0xdb, 0x31, 0x77, 0x28, 0xe8, 0x4b, 0x7a, 0x87, 0xd6, 0x60, 0x82, - 0xd4, 0x20, 0x2e, 0x8b, 0x72, 0x07, 0x9c, 0xec, 0x5a, 0x78, 0x13, 0x5b, 0x0f, 0x69, 0x3b, 0xbb, - 0x8f, 0x34, 0x2c, 0xcd, 0xb0, 0xbb, 0xa6, 0xe5, 0x9c, 0x99, 0x24, 0xcc, 0xf7, 0xfd, 0xa6, 0xdc, - 0x0a, 0x27, 0x1e, 0xb6, 0x4d, 0xa3, 0xd8, 0xd5, 0x57, 0x75, 0xdb, 0xc1, 0x46, 0xb1, 0xdd, 0xb6, - 0xce, 0x4c, 0x91, 0xb2, 0x0e, 0x7e, 0x60, 0xdd, 0xea, 0x24, 0xe4, 0xa9, 0xb0, 0xd1, 0x4b, 0x73, - 0xc2, 0xce, 0x9f, 0xac, 0xfa, 0xb1, 0xc6, 0xdc, 0xed, 0x30, 0xc1, 0xfa, 0x43, 0x02, 0xeb, 0xf4, - 0x1d, 0xa7, 0x7b, 0x56, 0x21, 0x18, 0x15, 0xd5, 0xcb, 0xa6, 0x3c, 0x03, 0xf2, 0x2d, 0x22, 0x04, - 0x82, 0xf0, 0xf4, 0x1d, 0xd7, 0xf6, 0x2f, 0x94, 0x64, 0x51, 0x59, 0x56, 0xf4, 0x17, 0xb2, 0x90, - 0xbf, 0x68, 0x1c, 0xc7, 0xc9, 0xfa, 0x80, 0x2f, 0x49, 0x43, 0x74, 0xb2, 0xb7, 0xc2, 0xcd, 0xac, + 0x5e, 0x9d, 0xe1, 0x7d, 0xba, 0x28, 0x9e, 0xf3, 0xd5, 0x20, 0x9f, 0x1a, 0xfe, 0x49, 0xb9, 0x0f, + 0xae, 0x66, 0xaf, 0xa5, 0x5d, 0xdb, 0x31, 0x77, 0x28, 0xe8, 0x4b, 0x7a, 0x87, 0xd6, 0x60, 0x82, + 0xd4, 0x20, 0x2e, 0x8b, 0x72, 0x3b, 0x1c, 0xef, 0x5a, 0x78, 0x13, 0x5b, 0x0f, 0x6a, 0x3b, 0xbb, + 0x0f, 0x37, 0x2c, 0xcd, 0xb0, 0xbb, 0xa6, 0xe5, 0x9c, 0x9a, 0x24, 0xcc, 0xf7, 0xfd, 0xa6, 0xdc, + 0x0c, 0xc7, 0x1e, 0xb2, 0x4d, 0xa3, 0xd8, 0xd5, 0x57, 0x75, 0xdb, 0xc1, 0x46, 0xb1, 0xdd, 0xb6, + 0x4e, 0x4d, 0x91, 0xb2, 0xf6, 0x7f, 0x60, 0xdd, 0xea, 0x24, 0xe4, 0xa9, 0xb0, 0xd1, 0x8b, 0x72, + 0xc2, 0xce, 0x9f, 0xac, 0xfa, 0xb1, 0xc6, 0xdc, 0xad, 0x30, 0xc1, 0xfa, 0x43, 0x02, 0xeb, 0xf4, + 0xed, 0x27, 0x7b, 0x56, 0x21, 0x18, 0x15, 0xd5, 0xcb, 0xa6, 0x3c, 0x15, 0xf2, 0x2d, 0x22, 0x04, + 0x82, 0xf0, 0xf4, 0xed, 0x57, 0xf7, 0x2f, 0x94, 0x64, 0x51, 0x59, 0x56, 0xf4, 0x17, 0xb2, 0x90, + 0xbf, 0x68, 0x1c, 0xc7, 0xc9, 0xfa, 0x80, 0xaf, 0x4a, 0x43, 0x74, 0xb2, 0x37, 0xc3, 0x8d, 0xac, 0x07, 0x65, 0xd6, 0xca, 0x62, 0x73, 0x61, 0xc3, 0x9b, 0x3a, 0xba, 0x36, 0x4c, 0xbd, 0x51, 0x54, - 0xdd, 0x79, 0xff, 0xa2, 0x3b, 0xe5, 0xbc, 0x05, 0x6e, 0x1a, 0x90, 0xbb, 0xdc, 0x68, 0x56, 0x8b, + 0xdd, 0x79, 0xff, 0xa2, 0x3b, 0xe5, 0xbc, 0x09, 0x6e, 0x18, 0x90, 0xbb, 0xdc, 0x68, 0x56, 0x8b, 0x6b, 0xe5, 0xc2, 0x26, 0x6f, 0x09, 0xd5, 0x1b, 0xb5, 0xf5, 0xa6, 0xba, 0x51, 0xad, 0x56, 0xaa, - 0xcb, 0x94, 0x98, 0x6b, 0x40, 0x9e, 0x0e, 0x32, 0x5c, 0x54, 0x2b, 0x8d, 0x72, 0xb3, 0x54, 0xab, - 0x2e, 0x55, 0x96, 0x0b, 0xfa, 0x20, 0x33, 0xea, 0x61, 0xe5, 0x1c, 0x5c, 0xc7, 0x71, 0x52, 0xa9, - 0x55, 0xdd, 0x79, 0x70, 0xa9, 0x58, 0x2d, 0x95, 0xdd, 0x49, 0xef, 0x65, 0x05, 0xc1, 0x29, 0x4a, - 0xae, 0xb9, 0x54, 0x59, 0x0d, 0x6f, 0x5d, 0x7d, 0x38, 0xa3, 0x9c, 0x81, 0xab, 0xc2, 0xdf, 0x2a, - 0xd5, 0x0b, 0xc5, 0xd5, 0xca, 0x62, 0xe1, 0x0f, 0x32, 0xca, 0x8d, 0x70, 0x3d, 0xf7, 0x17, 0xdd, - 0x85, 0x6a, 0x56, 0x16, 0x9b, 0x6b, 0x95, 0xfa, 0x5a, 0xb1, 0x51, 0x5a, 0x29, 0x7c, 0x84, 0xcc, - 0x2e, 0x7c, 0x73, 0x39, 0xe4, 0xc4, 0xf9, 0x8a, 0xb0, 0x05, 0x50, 0xe4, 0x15, 0xf5, 0xa9, 0x7d, - 0x61, 0x8f, 0xb7, 0x78, 0x3f, 0xe8, 0x8f, 0x25, 0x8b, 0x9c, 0x0a, 0xdd, 0x9e, 0x80, 0x56, 0x32, - 0x1d, 0x6a, 0x0c, 0xa1, 0x42, 0xe7, 0xe0, 0xba, 0x6a, 0x99, 0x22, 0xa5, 0x96, 0x4b, 0xb5, 0x0b, - 0x65, 0xb5, 0x79, 0xb1, 0xb8, 0xba, 0x5a, 0x6e, 0x34, 0x97, 0x2a, 0x6a, 0xbd, 0x51, 0xd8, 0x44, - 0xff, 0x2c, 0xf9, 0x6b, 0x3f, 0x21, 0x69, 0xfd, 0xb5, 0x94, 0xb4, 0x59, 0xc7, 0xae, 0xf1, 0x7c, - 0x17, 0xe4, 0x6d, 0x47, 0x73, 0x76, 0x6d, 0xd6, 0xaa, 0x9f, 0xd4, 0xbf, 0x55, 0xcf, 0xd7, 0x49, + 0xcb, 0x94, 0x98, 0x6b, 0x40, 0x9e, 0x0c, 0x32, 0x9c, 0x57, 0x2b, 0x8d, 0x72, 0xb3, 0x54, 0xab, + 0x2e, 0x55, 0x96, 0x0b, 0xfa, 0x20, 0x33, 0xea, 0x21, 0xe5, 0x0c, 0x5c, 0xc3, 0x71, 0x52, 0xa9, + 0x55, 0xdd, 0x79, 0x70, 0xa9, 0x58, 0x2d, 0x95, 0xdd, 0x49, 0xef, 0x45, 0x05, 0xc1, 0x09, 0x4a, + 0xae, 0xb9, 0x54, 0x59, 0x0d, 0x6f, 0x5d, 0x7d, 0x24, 0xa3, 0x9c, 0x82, 0x2b, 0xc2, 0xdf, 0x2a, + 0xd5, 0x73, 0xc5, 0xd5, 0xca, 0x62, 0xe1, 0x8f, 0x32, 0xca, 0xf5, 0x70, 0x2d, 0xf7, 0x17, 0xdd, + 0x85, 0x6a, 0x56, 0x16, 0x9b, 0x6b, 0x95, 0xfa, 0x5a, 0xb1, 0x51, 0x5a, 0x29, 0x7c, 0x94, 0xcc, + 0x2e, 0x7c, 0x73, 0x39, 0xe4, 0xc4, 0xf9, 0x92, 0xb0, 0x05, 0x50, 0xe4, 0x15, 0xf5, 0xc9, 0x7d, + 0x61, 0x8f, 0xb7, 0x78, 0x3f, 0xe4, 0x8f, 0x25, 0x8b, 0x9c, 0x0a, 0xdd, 0x9a, 0x80, 0x56, 0x32, + 0x1d, 0x6a, 0x0c, 0xa1, 0x42, 0x67, 0xe0, 0x9a, 0x6a, 0x99, 0x22, 0xa5, 0x96, 0x4b, 0xb5, 0x73, + 0x65, 0xb5, 0x79, 0xbe, 0xb8, 0xba, 0x5a, 0x6e, 0x34, 0x97, 0x2a, 0x6a, 0xbd, 0x51, 0xd8, 0x44, + 0xff, 0x2c, 0xf9, 0x6b, 0x3f, 0x21, 0x69, 0xfd, 0xb5, 0x94, 0xb4, 0x59, 0xc7, 0xae, 0xf1, 0xfc, + 0x00, 0xe4, 0x6d, 0x47, 0x73, 0x76, 0x6d, 0xd6, 0xaa, 0x9f, 0xd0, 0xbf, 0x55, 0xcf, 0xd7, 0x49, 0x26, 0x95, 0x65, 0x46, 0x7f, 0x91, 0x49, 0xd2, 0x4c, 0x47, 0xb0, 0xfc, 0xa3, 0x0f, 0x21, 0xe2, - 0xb3, 0x80, 0x3c, 0x6d, 0xaf, 0xd4, 0x9b, 0xc5, 0x55, 0xb5, 0x5c, 0x5c, 0x7c, 0xc8, 0x5f, 0xf4, - 0xc1, 0xca, 0x29, 0x38, 0xb1, 0x51, 0x2d, 0x2e, 0xac, 0x96, 0x49, 0x73, 0xa9, 0x55, 0xab, 0xe5, - 0x92, 0x2b, 0xf7, 0x1f, 0x26, 0x5b, 0x2c, 0xae, 0xbd, 0x4d, 0xf8, 0x76, 0x6d, 0xa2, 0x90, 0xfc, - 0xbf, 0x28, 0xec, 0x89, 0x14, 0x68, 0x58, 0x98, 0xd6, 0x68, 0x71, 0xf8, 0xb4, 0x90, 0xf3, 0x91, - 0x10, 0x27, 0xc9, 0xf0, 0xf8, 0xcf, 0x43, 0xe0, 0x71, 0x0a, 0x4e, 0x84, 0xf1, 0x20, 0x4e, 0x48, - 0xd1, 0x30, 0xbc, 0x74, 0x0a, 0xf2, 0x75, 0xdc, 0xc1, 0x2d, 0x07, 0x3d, 0x2e, 0x05, 0xa6, 0xc7, + 0xd3, 0x80, 0x3c, 0x6d, 0xaf, 0xd4, 0x9b, 0xc5, 0x55, 0xb5, 0x5c, 0x5c, 0x7c, 0xd0, 0x5f, 0xf4, + 0xc1, 0xca, 0x09, 0x38, 0xb6, 0x51, 0x2d, 0x2e, 0xac, 0x96, 0x49, 0x73, 0xa9, 0x55, 0xab, 0xe5, + 0x92, 0x2b, 0xf7, 0x9f, 0x24, 0x5b, 0x2c, 0xae, 0xbd, 0x4d, 0xf8, 0x76, 0x6d, 0xa2, 0x90, 0xfc, + 0xbf, 0x22, 0xec, 0x89, 0x14, 0x68, 0x58, 0x98, 0xd6, 0x68, 0x71, 0xf8, 0x9c, 0x90, 0xf3, 0x91, + 0x10, 0x27, 0xc9, 0xf0, 0xf8, 0xcf, 0x43, 0xe0, 0x71, 0x02, 0x8e, 0x85, 0xf1, 0x20, 0x4e, 0x48, + 0xd1, 0x30, 0xbc, 0x68, 0x0a, 0xf2, 0x75, 0xdc, 0xc1, 0x2d, 0x07, 0x3d, 0x26, 0x05, 0xa6, 0xc7, 0x1c, 0x48, 0xbe, 0xd3, 0x8b, 0xa4, 0xb7, 0xb9, 0xc9, 0xb6, 0xd4, 0x33, 0xd9, 0x8e, 0x31, 0x1a, 0xe4, 0x44, 0x46, 0x43, 0x36, 0x05, 0xa3, 0x21, 0x37, 0xbc, 0xd1, 0x90, 0x4f, 0x6a, 0x34, 0x4c, - 0xc4, 0x1a, 0x0d, 0xe8, 0x0d, 0xf9, 0xa4, 0x7d, 0x0a, 0x05, 0xe6, 0x68, 0x4d, 0x85, 0xff, 0x95, - 0x4d, 0xd2, 0x07, 0xf5, 0xe5, 0x38, 0x99, 0xce, 0x7f, 0x53, 0x4e, 0x61, 0x69, 0x43, 0xb9, 0x01, - 0xae, 0x0f, 0xde, 0x9b, 0xe5, 0xe7, 0x56, 0xea, 0x8d, 0x3a, 0xb1, 0x0f, 0x4a, 0x35, 0x55, 0xdd, - 0x58, 0xa7, 0xeb, 0xd3, 0xa7, 0x41, 0x09, 0xa8, 0xa8, 0x1b, 0x55, 0x6a, 0x0d, 0x6c, 0xf1, 0xd4, + 0xc4, 0x1a, 0x0d, 0xe8, 0x35, 0xf9, 0xa4, 0x7d, 0x0a, 0x05, 0xe6, 0x70, 0x4d, 0x85, 0xff, 0x95, + 0x4d, 0xd2, 0x07, 0xf5, 0xe5, 0x38, 0x99, 0xce, 0x7f, 0x47, 0x4e, 0x61, 0x69, 0x43, 0xb9, 0x0e, + 0xae, 0x0d, 0xde, 0x9b, 0xe5, 0x67, 0x55, 0xea, 0x8d, 0x3a, 0xb1, 0x0f, 0x4a, 0x35, 0x55, 0xdd, + 0x58, 0xa7, 0xeb, 0xd3, 0x27, 0x41, 0x09, 0xa8, 0xa8, 0x1b, 0x55, 0x6a, 0x0d, 0x6c, 0xf1, 0xd4, 0x97, 0x2a, 0xd5, 0xc5, 0xa6, 0xdf, 0xc2, 0xaa, 0x4b, 0xb5, 0xc2, 0xb6, 0x3b, 0x1d, 0x0c, 0x51, 0x77, 0x87, 0x73, 0x56, 0x42, 0xb1, 0xba, 0xd8, 0x5c, 0xab, 0x96, 0xd7, 0x6a, 0xd5, 0x4a, 0x89, 0xa4, 0xd7, 0xcb, 0x8d, 0x82, 0xee, 0x0e, 0x4b, 0x3d, 0xf6, 0x47, 0xbd, 0x5c, 0x54, 0x4b, 0x2b, - 0x65, 0x95, 0x16, 0xf9, 0xb0, 0x72, 0x13, 0x9c, 0x2f, 0x56, 0x6b, 0x0d, 0x37, 0xa5, 0x58, 0x7d, - 0xa8, 0xf1, 0xd0, 0x7a, 0xb9, 0xb9, 0xae, 0xd6, 0x4a, 0xe5, 0x7a, 0xdd, 0x6d, 0xd5, 0xcc, 0x5a, - 0x29, 0x74, 0x94, 0x7b, 0xe1, 0xae, 0x10, 0x6b, 0xe5, 0x06, 0xd9, 0x0c, 0x5d, 0xab, 0x11, 0x7f, + 0x65, 0x95, 0x16, 0xf9, 0x90, 0x72, 0x03, 0x9c, 0x2d, 0x56, 0x6b, 0x0d, 0x37, 0xa5, 0x58, 0x7d, + 0xb0, 0xf1, 0xe0, 0x7a, 0xb9, 0xb9, 0xae, 0xd6, 0x4a, 0xe5, 0x7a, 0xdd, 0x6d, 0xd5, 0xcc, 0x5a, + 0x29, 0x74, 0x94, 0x7b, 0xe0, 0xce, 0x10, 0x6b, 0xe5, 0x06, 0xd9, 0x0c, 0x5d, 0xab, 0x11, 0x7f, 0x98, 0xc5, 0x72, 0x73, 0xa5, 0x58, 0x6f, 0x56, 0xaa, 0xa5, 0xda, 0xda, 0x7a, 0xb1, 0x51, 0x71, - 0x1b, 0xff, 0xba, 0x5a, 0x6b, 0xd4, 0x9a, 0x17, 0xca, 0x6a, 0xbd, 0x52, 0xab, 0x16, 0x0c, 0xb7, - 0xca, 0xa1, 0xde, 0xc2, 0xeb, 0xb5, 0x4d, 0xe5, 0x3a, 0x38, 0xe3, 0xa5, 0xaf, 0xd6, 0x5c, 0x41, - 0x87, 0xec, 0x97, 0x6e, 0xaa, 0xf6, 0xcb, 0xbf, 0x4a, 0x90, 0xad, 0x3b, 0x66, 0x17, 0x7d, 0x67, - 0xd0, 0x1d, 0x9d, 0x05, 0xb0, 0xc8, 0xde, 0xa6, 0x3b, 0xc3, 0x63, 0x73, 0xbe, 0x50, 0x0a, 0xfa, - 0x7d, 0xe1, 0x0d, 0x99, 0xa0, 0x87, 0x37, 0xbb, 0x11, 0x96, 0xcd, 0xd7, 0xc5, 0x4e, 0xa8, 0x44, - 0x13, 0x4a, 0xa6, 0xef, 0x3f, 0x36, 0xcc, 0x96, 0x0b, 0x82, 0xd3, 0x21, 0xd8, 0x5c, 0xf9, 0x7b, - 0x2a, 0x81, 0x95, 0xab, 0xe1, 0xaa, 0x1e, 0xe5, 0x22, 0x3a, 0xb5, 0xa9, 0x7c, 0x07, 0x3c, 0x29, - 0xa4, 0xde, 0xe5, 0xb5, 0xda, 0x85, 0xb2, 0xaf, 0xc8, 0x8b, 0xc5, 0x46, 0xb1, 0xb0, 0x85, 0x3e, - 0x21, 0x43, 0x76, 0xcd, 0xdc, 0xeb, 0xdd, 0x07, 0x33, 0xf0, 0x95, 0xd0, 0x3a, 0xab, 0xf7, 0xca, - 0x7b, 0xe4, 0x0b, 0x89, 0x7d, 0x2d, 0x7a, 0xcf, 0xfb, 0xd3, 0x52, 0x12, 0xb1, 0xaf, 0x1d, 0x76, - 0xa3, 0xfb, 0xef, 0x87, 0x11, 0x7b, 0x84, 0x68, 0xb1, 0x72, 0x1e, 0xce, 0x06, 0x1f, 0x2a, 0x8b, - 0xe5, 0x6a, 0xa3, 0xb2, 0xf4, 0x50, 0x20, 0xdc, 0x8a, 0x2a, 0x24, 0xfe, 0x41, 0xdd, 0x58, 0xfc, - 0xbc, 0xe4, 0x0c, 0x9c, 0x0c, 0xbe, 0x2d, 0x97, 0x1b, 0xde, 0x97, 0x87, 0xd1, 0xa3, 0x39, 0x98, - 0xa1, 0xdd, 0xfa, 0x46, 0xb7, 0xad, 0x39, 0x18, 0x3d, 0x23, 0x40, 0xf7, 0x66, 0x38, 0x5e, 0x59, - 0x5f, 0xaa, 0xd7, 0x1d, 0xd3, 0xd2, 0xb6, 0x30, 0x19, 0xc7, 0xa8, 0xb4, 0x7a, 0x93, 0xd1, 0x3b, - 0x84, 0xd7, 0x10, 0xf9, 0xa1, 0x84, 0x96, 0x19, 0x81, 0xfa, 0x67, 0x85, 0xd6, 0xfc, 0x04, 0x08, - 0x26, 0x43, 0xff, 0xe1, 0x11, 0xb7, 0xb9, 0x68, 0x5c, 0x36, 0xcf, 0xbf, 0x50, 0x82, 0xa9, 0x86, - 0xbe, 0x83, 0x9f, 0x67, 0x1a, 0xd8, 0x56, 0x26, 0x40, 0x5e, 0x5e, 0x6b, 0x14, 0x8e, 0xb9, 0x0f, + 0x1b, 0xff, 0xba, 0x5a, 0x6b, 0xd4, 0x9a, 0xe7, 0xca, 0x6a, 0xbd, 0x52, 0xab, 0x16, 0x0c, 0xb7, + 0xca, 0xa1, 0xde, 0xc2, 0xeb, 0xb5, 0x4d, 0xe5, 0x1a, 0x38, 0xe5, 0xa5, 0xaf, 0xd6, 0x5c, 0x41, + 0x87, 0xec, 0x97, 0x6e, 0xaa, 0xf6, 0xcb, 0xbf, 0x4a, 0x90, 0xad, 0x3b, 0x66, 0x17, 0x7d, 0x7f, + 0xd0, 0x1d, 0x9d, 0x06, 0xb0, 0xc8, 0xde, 0xa6, 0x3b, 0xc3, 0x63, 0x73, 0xbe, 0x50, 0x0a, 0xfa, + 0x43, 0xe1, 0x0d, 0x99, 0xa0, 0x87, 0x37, 0xbb, 0x11, 0x96, 0xcd, 0xb7, 0xc4, 0x4e, 0xa8, 0x44, + 0x13, 0x4a, 0xa6, 0xef, 0x3f, 0x33, 0xcc, 0x96, 0x0b, 0x82, 0x93, 0x21, 0xd8, 0x5c, 0xf9, 0x7b, + 0x2a, 0x81, 0x95, 0x2b, 0xe1, 0x8a, 0x1e, 0xe5, 0x22, 0x3a, 0xb5, 0xa9, 0x7c, 0x1f, 0x3c, 0x21, + 0xa4, 0xde, 0xe5, 0xb5, 0xda, 0xb9, 0xb2, 0xaf, 0xc8, 0x8b, 0xc5, 0x46, 0xb1, 0xb0, 0x85, 0x3e, + 0x25, 0x43, 0x76, 0xcd, 0xdc, 0xeb, 0xdd, 0x07, 0x33, 0xf0, 0xa5, 0xd0, 0x3a, 0xab, 0xf7, 0xca, + 0x7b, 0xe4, 0x0b, 0x89, 0x7d, 0x2d, 0x7a, 0xcf, 0xfb, 0x73, 0x52, 0x12, 0xb1, 0xaf, 0x1d, 0x74, + 0xa3, 0xfb, 0xef, 0x87, 0x11, 0x7b, 0x84, 0x68, 0xb1, 0x72, 0x16, 0x4e, 0x07, 0x1f, 0x2a, 0x8b, + 0xe5, 0x6a, 0xa3, 0xb2, 0xf4, 0x60, 0x20, 0xdc, 0x8a, 0x2a, 0x24, 0xfe, 0x41, 0xdd, 0x58, 0xfc, + 0xbc, 0xe4, 0x14, 0x1c, 0x0f, 0xbe, 0x2d, 0x97, 0x1b, 0xde, 0x97, 0x87, 0xd0, 0x23, 0x39, 0x98, + 0xa1, 0xdd, 0xfa, 0x46, 0xb7, 0xad, 0x39, 0x18, 0x3d, 0x35, 0x40, 0xf7, 0x46, 0x38, 0x5a, 0x59, + 0x5f, 0xaa, 0xd7, 0x1d, 0xd3, 0xd2, 0xb6, 0x30, 0x19, 0xc7, 0xa8, 0xb4, 0x7a, 0x93, 0xd1, 0xdb, + 0x85, 0xd7, 0x10, 0xf9, 0xa1, 0x84, 0x96, 0x19, 0x81, 0xfa, 0x17, 0x84, 0xd6, 0xfc, 0x04, 0x08, + 0x26, 0x43, 0xff, 0xa1, 0x11, 0xb7, 0xb9, 0x68, 0x5c, 0x36, 0xcf, 0x3e, 0x4f, 0x82, 0xa9, 0x86, + 0xbe, 0x83, 0x9f, 0x6d, 0x1a, 0xd8, 0x56, 0x26, 0x40, 0x5e, 0x5e, 0x6b, 0x14, 0x8e, 0xb8, 0x0f, 0xae, 0x09, 0x96, 0x21, 0x0f, 0x65, 0xb7, 0x00, 0xf7, 0xa1, 0xd8, 0x28, 0xc8, 0xee, 0xc3, 0x5a, 0xb9, 0x51, 0xc8, 0xba, 0x0f, 0xd5, 0x72, 0xa3, 0x90, 0x73, 0x1f, 0xd6, 0x57, 0x1b, 0x85, 0xbc, - 0xfb, 0x50, 0xa9, 0x37, 0x0a, 0x13, 0xee, 0xc3, 0x42, 0xbd, 0x51, 0x98, 0x74, 0x1f, 0x2e, 0xd4, - 0x1b, 0x85, 0x29, 0xf7, 0xa1, 0xd4, 0x68, 0x14, 0xc0, 0x7d, 0x78, 0xa0, 0xde, 0x28, 0x4c, 0xbb, + 0xfb, 0x50, 0xa9, 0x37, 0x0a, 0x13, 0xee, 0xc3, 0x42, 0xbd, 0x51, 0x98, 0x74, 0x1f, 0xce, 0xd5, + 0x1b, 0x85, 0x29, 0xf7, 0xa1, 0xd4, 0x68, 0x14, 0xc0, 0x7d, 0xb8, 0xbf, 0xde, 0x28, 0x4c, 0xbb, 0x0f, 0xc5, 0x52, 0xa3, 0x30, 0x43, 0x1e, 0xca, 0x8d, 0xc2, 0xac, 0xfb, 0x50, 0xaf, 0x37, 0x0a, - 0x73, 0x84, 0x72, 0xbd, 0x51, 0x38, 0x4e, 0xca, 0xaa, 0x34, 0x0a, 0x05, 0xf7, 0x61, 0xa5, 0xde, - 0x28, 0x9c, 0x20, 0x99, 0xeb, 0x8d, 0x82, 0x42, 0x0a, 0xad, 0x37, 0x0a, 0x57, 0x91, 0x3c, 0xf5, - 0x46, 0xe1, 0x24, 0x29, 0xa2, 0xde, 0x28, 0x9c, 0x22, 0x6c, 0x94, 0x1b, 0x85, 0xd3, 0x24, 0x8f, - 0xda, 0x28, 0x5c, 0x4d, 0x3e, 0x55, 0x1b, 0x85, 0x33, 0x84, 0xb1, 0x72, 0xa3, 0x70, 0x0d, 0x79, - 0x50, 0x1b, 0x05, 0x44, 0x3e, 0x15, 0x1b, 0x85, 0x6b, 0xd1, 0x93, 0x60, 0x6a, 0x19, 0x3b, 0x14, - 0x44, 0x54, 0x00, 0x79, 0x19, 0x3b, 0x61, 0xa3, 0xff, 0xf3, 0x32, 0x5c, 0xcd, 0x26, 0x8a, 0x4b, - 0x96, 0xb9, 0xb3, 0x8a, 0xb7, 0xb4, 0xd6, 0x7e, 0xf9, 0x11, 0xd7, 0xe0, 0x0a, 0xef, 0xf9, 0x2a, - 0x90, 0xed, 0x06, 0x9d, 0x11, 0x79, 0x8e, 0xb5, 0x4f, 0xbd, 0x85, 0x2e, 0x39, 0x58, 0xe8, 0x62, - 0x16, 0xd9, 0x3f, 0x85, 0x35, 0x9a, 0x5b, 0x9b, 0xce, 0xf4, 0xac, 0x4d, 0xbb, 0xcd, 0xa4, 0x8b, - 0x2d, 0xdb, 0x34, 0xb4, 0x4e, 0x9d, 0x39, 0x05, 0xd0, 0x15, 0xb5, 0xde, 0x64, 0xe5, 0x7b, 0xbc, - 0x96, 0x41, 0xad, 0xb2, 0xe7, 0xc4, 0xcd, 0x87, 0x7b, 0xab, 0x19, 0xd1, 0x48, 0x3e, 0xe2, 0x37, - 0x92, 0x06, 0xd7, 0x48, 0xee, 0x3f, 0x04, 0xed, 0x64, 0xed, 0xa5, 0x32, 0xdc, 0x44, 0x24, 0x70, - 0x99, 0xf5, 0x96, 0xc2, 0x65, 0xf4, 0x09, 0x09, 0x4e, 0x97, 0x8d, 0x7e, 0xf3, 0x81, 0xb0, 0x2e, - 0xbc, 0x29, 0x0c, 0xcd, 0x3a, 0x2f, 0xd2, 0xbb, 0xfa, 0x56, 0xbb, 0x3f, 0xcd, 0x08, 0x89, 0x7e, - 0xd4, 0x97, 0x68, 0x9d, 0x93, 0xe8, 0x7d, 0xc3, 0x93, 0x4e, 0x26, 0xd0, 0xea, 0x48, 0x3b, 0xa0, - 0x2c, 0xfa, 0x82, 0x04, 0x27, 0xa8, 0x5f, 0xcf, 0x03, 0x74, 0xfa, 0x41, 0xba, 0x6c, 0xde, 0x84, - 0xea, 0x04, 0x53, 0x15, 0xaa, 0xdf, 0xa1, 0x14, 0xf4, 0xfa, 0xb0, 0xc0, 0x1f, 0xe4, 0x05, 0x1e, - 0xd1, 0x19, 0xf7, 0x16, 0x17, 0x21, 0xeb, 0x3f, 0xf0, 0x65, 0x5d, 0xe5, 0x64, 0x7d, 0xd7, 0x50, - 0x54, 0x8f, 0x56, 0xcc, 0x5f, 0xca, 0xc2, 0x93, 0x28, 0x87, 0x4c, 0x11, 0x68, 0x67, 0x56, 0x34, - 0xda, 0x2a, 0xb6, 0x1d, 0xcd, 0x72, 0xb8, 0x23, 0xed, 0x3d, 0xf3, 0xdb, 0x4c, 0x0a, 0xf3, 0x5b, - 0x69, 0xe0, 0xfc, 0x16, 0xbd, 0x3d, 0x6c, 0xa5, 0x5d, 0xe4, 0x91, 0x2d, 0xc6, 0x60, 0x10, 0x51, - 0xc3, 0xa8, 0x16, 0xe5, 0x9b, 0x6f, 0xdf, 0xcb, 0xa1, 0xbc, 0x74, 0xe8, 0x12, 0x92, 0x21, 0xfe, - 0xfb, 0xa3, 0x35, 0xa7, 0xb3, 0xe1, 0x6f, 0xbc, 0xed, 0x57, 0x68, 0xa7, 0x3a, 0x0f, 0x7a, 0xd9, - 0x24, 0x4c, 0x91, 0x2e, 0x67, 0x55, 0x37, 0x2e, 0xbb, 0x63, 0xe3, 0x4c, 0x15, 0x5f, 0x29, 0x6d, - 0x6b, 0x9d, 0x0e, 0x36, 0xb6, 0x30, 0x7a, 0x98, 0x33, 0xd0, 0xb5, 0x6e, 0xb7, 0x1a, 0x6c, 0x15, - 0x79, 0xaf, 0xca, 0x7d, 0x90, 0xb3, 0x5b, 0x66, 0x17, 0x13, 0x41, 0xcd, 0x85, 0x9c, 0x4b, 0xf8, - 0xe5, 0xae, 0xe2, 0xae, 0xb3, 0x3d, 0x4f, 0xca, 0x2a, 0x76, 0xf5, 0xba, 0xfb, 0x83, 0x4a, 0xff, - 0x63, 0xe3, 0xe4, 0x17, 0xfb, 0x76, 0xc6, 0x99, 0x98, 0xce, 0xd8, 0x67, 0x7c, 0x3e, 0xcc, 0x74, - 0xc4, 0x4a, 0xc6, 0x39, 0x98, 0x6e, 0x79, 0x59, 0xfc, 0xb3, 0x33, 0xe1, 0x24, 0xf4, 0xb7, 0x89, - 0xba, 0x6b, 0xa1, 0xc2, 0x93, 0x69, 0x15, 0x1e, 0xb1, 0xbd, 0x78, 0x0a, 0x4e, 0x34, 0x6a, 0xb5, - 0xe6, 0x5a, 0xb1, 0xfa, 0x50, 0x70, 0x66, 0x7d, 0x13, 0xbd, 0x2a, 0x0b, 0x73, 0x75, 0xb3, 0xb3, - 0x87, 0x03, 0x9c, 0x2b, 0x9c, 0x53, 0x56, 0x58, 0x4e, 0x99, 0x03, 0x72, 0x52, 0x4e, 0x43, 0x5e, - 0x33, 0xec, 0x2b, 0xd8, 0xb3, 0xe1, 0xd9, 0x1b, 0x83, 0xf1, 0x77, 0xc2, 0x1d, 0x81, 0xca, 0xc3, - 0x78, 0xf7, 0x00, 0x49, 0xf2, 0x5c, 0x45, 0x00, 0x79, 0x1e, 0x66, 0x6c, 0xba, 0x61, 0xdc, 0x08, - 0xf9, 0x05, 0x70, 0x69, 0x84, 0x45, 0xea, 0xb1, 0x20, 0x33, 0x16, 0xc9, 0x1b, 0x7a, 0x9d, 0xdf, - 0x7f, 0x6c, 0x70, 0x10, 0x17, 0x0f, 0xc3, 0x58, 0x32, 0x90, 0x5f, 0x33, 0xea, 0x99, 0xf8, 0x19, - 0x38, 0xc9, 0x9a, 0x7d, 0xb3, 0xb4, 0x52, 0x5c, 0x5d, 0x2d, 0x57, 0x97, 0xcb, 0xcd, 0xca, 0x22, - 0xdd, 0x80, 0x0a, 0x52, 0x8a, 0x8d, 0x46, 0x79, 0x6d, 0xbd, 0x51, 0x6f, 0x96, 0x9f, 0x5b, 0x2a, - 0x97, 0x17, 0x89, 0x5b, 0x24, 0x39, 0xd7, 0xe4, 0x39, 0xb0, 0x16, 0xab, 0xf5, 0x8b, 0x65, 0xb5, - 0xb0, 0x7d, 0xbe, 0x08, 0xd3, 0xa1, 0x81, 0xc2, 0xe5, 0x6e, 0x11, 0x6f, 0x6a, 0xbb, 0x1d, 0x66, - 0x53, 0x17, 0x8e, 0xb9, 0xdc, 0x11, 0xd9, 0xd4, 0x8c, 0xce, 0x7e, 0x21, 0xa3, 0x14, 0x60, 0x26, - 0x3c, 0x26, 0x14, 0x24, 0xf4, 0x96, 0xeb, 0x60, 0xea, 0xa2, 0x69, 0x5d, 0x26, 0xbe, 0x7c, 0xe8, - 0xdd, 0x34, 0xb6, 0x8d, 0x77, 0x4a, 0x38, 0x64, 0x80, 0xbd, 0x46, 0xdc, 0x63, 0xc4, 0xa3, 0x36, - 0x3f, 0xf0, 0x24, 0xf0, 0x39, 0x98, 0xbe, 0xe2, 0xe5, 0x0e, 0x5a, 0x7a, 0x28, 0x09, 0xfd, 0x77, - 0x31, 0x1f, 0x90, 0xc1, 0x45, 0xa6, 0xef, 0xa3, 0xf0, 0x66, 0x09, 0xf2, 0xcb, 0xd8, 0x29, 0x76, - 0x3a, 0x61, 0xb9, 0xbd, 0x52, 0xf8, 0x74, 0x17, 0x57, 0x89, 0x62, 0xa7, 0x13, 0xdd, 0xa8, 0x42, - 0x02, 0xf2, 0x4e, 0x21, 0x70, 0x69, 0x82, 0xbe, 0x93, 0x03, 0x0a, 0x4c, 0x5f, 0x62, 0xbf, 0x27, - 0xfb, 0x7e, 0x0e, 0x8f, 0x85, 0xcc, 0xa4, 0xa7, 0x07, 0x71, 0x8d, 0x32, 0xf1, 0xfe, 0x12, 0x5e, - 0x3e, 0xe5, 0x41, 0x98, 0xd8, 0xb5, 0x71, 0x49, 0xb3, 0xbd, 0xa1, 0x8d, 0xaf, 0x69, 0xed, 0xd2, - 0xc3, 0xb8, 0xe5, 0xcc, 0x57, 0x76, 0xdc, 0x89, 0xcf, 0x06, 0xcd, 0xe8, 0x87, 0x0a, 0x62, 0xef, - 0xaa, 0x47, 0xc1, 0x9d, 0x3c, 0x5e, 0xd1, 0x9d, 0xed, 0xd2, 0xb6, 0xe6, 0xb0, 0x1d, 0x0b, 0xff, - 0x1d, 0xbd, 0x74, 0x08, 0x38, 0x63, 0x77, 0xf8, 0x23, 0x0f, 0x89, 0x26, 0x06, 0x71, 0x04, 0xdb, - 0xf2, 0xc3, 0x80, 0xf8, 0x0f, 0x12, 0x64, 0x6b, 0x5d, 0x6c, 0x08, 0x9f, 0x88, 0xf2, 0x65, 0x2b, - 0xf5, 0xc8, 0xf6, 0x75, 0xe2, 0x1e, 0x82, 0x7e, 0xa5, 0xdd, 0x92, 0x23, 0x24, 0x7b, 0x1b, 0x64, - 0x75, 0x63, 0xd3, 0x64, 0x96, 0xed, 0xb5, 0x11, 0xb6, 0x4e, 0xc5, 0xd8, 0x34, 0x55, 0x92, 0x51, - 0xd4, 0x39, 0x30, 0xae, 0xec, 0xf4, 0xc5, 0xfd, 0xe5, 0x49, 0xc8, 0x53, 0x75, 0x46, 0xaf, 0x90, - 0x41, 0x2e, 0xb6, 0xdb, 0x11, 0x82, 0x97, 0x0e, 0x08, 0xde, 0x24, 0xbf, 0xf9, 0x98, 0xf8, 0xef, - 0x7c, 0x40, 0x1b, 0xc1, 0xbe, 0x9d, 0x35, 0xa9, 0x62, 0xbb, 0x1d, 0xed, 0x87, 0xec, 0x17, 0x28, - 0xf1, 0x05, 0x86, 0x5b, 0xb8, 0x2c, 0xd6, 0xc2, 0x13, 0x0f, 0x04, 0x91, 0xfc, 0xa5, 0x0f, 0xd1, - 0x3f, 0x49, 0x30, 0xb1, 0xaa, 0xdb, 0x8e, 0x8b, 0x4d, 0x51, 0x04, 0x9b, 0xeb, 0x60, 0xca, 0x13, - 0x8d, 0xdb, 0xe5, 0xb9, 0xfd, 0x79, 0x90, 0xc0, 0xcf, 0xc4, 0x1f, 0xe0, 0xd1, 0x79, 0x66, 0x7c, - 0xed, 0x19, 0x17, 0xd1, 0x27, 0x4d, 0x82, 0x62, 0xa5, 0xde, 0x62, 0x7f, 0xcd, 0x17, 0xf8, 0x1a, - 0x27, 0xf0, 0x3b, 0x87, 0x29, 0x32, 0x7d, 0xa1, 0x7f, 0x52, 0x02, 0x70, 0xcb, 0x66, 0xc7, 0xf9, - 0x9e, 0xc2, 0x1d, 0xd2, 0x8f, 0x91, 0xee, 0xab, 0xc2, 0xd2, 0x5d, 0xe3, 0xa5, 0xfb, 0xdd, 0x83, - 0xab, 0x1a, 0x77, 0x6c, 0x4f, 0x29, 0x80, 0xac, 0xfb, 0xa2, 0x75, 0x1f, 0xd1, 0x9b, 0x7d, 0xa1, - 0xae, 0x73, 0x42, 0xbd, 0x7b, 0xc8, 0x92, 0xd2, 0x97, 0xeb, 0x5f, 0x4a, 0x30, 0x51, 0xc7, 0x8e, - 0xdb, 0x4d, 0xa2, 0x0b, 0x22, 0x3d, 0x7c, 0xa8, 0x6d, 0x4b, 0x82, 0x6d, 0xfb, 0x6b, 0x19, 0xd1, - 0x60, 0x3f, 0x81, 0x64, 0x18, 0x4f, 0x11, 0xab, 0x0f, 0x8f, 0x09, 0x05, 0xfb, 0x19, 0x44, 0x2d, - 0x7d, 0xe9, 0xbe, 0x49, 0xf2, 0xdd, 0x2d, 0xf8, 0xd3, 0x36, 0x61, 0xb3, 0x38, 0x73, 0xd0, 0x2c, - 0x16, 0x3f, 0x6d, 0x13, 0xae, 0x63, 0xb4, 0xf7, 0x40, 0x62, 0x63, 0x63, 0x04, 0x1b, 0xfb, 0xc3, - 0xc8, 0xeb, 0x05, 0x32, 0xe4, 0xd9, 0x0e, 0xc0, 0x7d, 0xf1, 0x3b, 0x00, 0x83, 0xa7, 0x16, 0xef, - 0x1a, 0xc2, 0x94, 0x8b, 0x5b, 0x96, 0xf7, 0xd9, 0x90, 0x42, 0x6c, 0xdc, 0x0a, 0x39, 0x12, 0x8d, - 0x94, 0x8d, 0x73, 0x81, 0x4f, 0x86, 0x47, 0xa2, 0xec, 0x7e, 0x55, 0x69, 0xa6, 0xc4, 0x28, 0x8c, - 0x60, 0x25, 0x7f, 0x18, 0x14, 0xde, 0xa1, 0x00, 0xac, 0xef, 0x5e, 0xea, 0xe8, 0xf6, 0xb6, 0x6e, - 0x6c, 0xa1, 0x7f, 0xcf, 0xc0, 0x0c, 0x7b, 0xa5, 0x41, 0x35, 0x63, 0xcd, 0xbf, 0x48, 0xa3, 0xa0, - 0x00, 0xf2, 0xae, 0xa5, 0xb3, 0x65, 0x00, 0xf7, 0x51, 0xb9, 0xc7, 0x77, 0xcf, 0xca, 0xf6, 0x84, - 0x53, 0x70, 0xc5, 0x10, 0x70, 0x30, 0x1f, 0x2a, 0x3d, 0x70, 0xd3, 0x0a, 0x47, 0x4e, 0xcd, 0xf1, - 0x91, 0x53, 0xb9, 0x33, 0x96, 0xf9, 0x9e, 0x33, 0x96, 0x2e, 0x8e, 0xb6, 0xfe, 0x3c, 0x4c, 0xfc, - 0x77, 0x64, 0x95, 0x3c, 0xbb, 0x7f, 0x3c, 0x6c, 0xea, 0x06, 0xd9, 0xd4, 0x61, 0xee, 0xc3, 0x41, - 0x02, 0x7a, 0x5f, 0x30, 0x91, 0x31, 0x05, 0xad, 0xe0, 0x04, 0x62, 0xe0, 0xca, 0xce, 0xf6, 0x96, - 0xfd, 0x01, 0xe1, 0x48, 0x69, 0x21, 0x81, 0xc5, 0x4e, 0x49, 0x18, 0x07, 0x92, 0xcf, 0x41, 0x68, - 0x57, 0x36, 0xae, 0x3b, 0x1d, 0x44, 0x3f, 0x99, 0x62, 0xee, 0x0c, 0xb1, 0xf8, 0xa2, 0xc0, 0x9c, - 0x77, 0xf2, 0xb4, 0xb6, 0xf0, 0x40, 0xb9, 0xd4, 0x28, 0xe0, 0x83, 0xa7, 0x51, 0xc9, 0xb9, 0x53, - 0x7a, 0xc6, 0x34, 0x58, 0x60, 0x41, 0xff, 0x53, 0x82, 0x3c, 0xb3, 0x1d, 0xee, 0x3b, 0x24, 0x84, - 0xe8, 0xd5, 0xc3, 0x40, 0x12, 0x1b, 0x00, 0xe0, 0x8f, 0x92, 0x02, 0x30, 0x02, 0x6b, 0xe1, 0xa1, - 0xd4, 0x00, 0x40, 0xff, 0x22, 0x41, 0xd6, 0xb5, 0x69, 0xc4, 0x8e, 0x57, 0x7f, 0x44, 0xd8, 0x55, - 0x39, 0x24, 0x00, 0x97, 0x7c, 0x84, 0x7e, 0x2f, 0xc0, 0x54, 0x97, 0x66, 0xf4, 0x0f, 0xf7, 0xdf, - 0x28, 0xd0, 0xb3, 0x60, 0x35, 0xf8, 0x0d, 0xbd, 0x53, 0xc8, 0xdd, 0x39, 0x9e, 0x9f, 0x64, 0x70, - 0x94, 0x47, 0x71, 0x12, 0x7b, 0x13, 0x7d, 0x43, 0x02, 0x50, 0xb1, 0x6d, 0x76, 0xf6, 0xf0, 0x86, - 0xa5, 0xa3, 0x6b, 0x03, 0x00, 0x58, 0xb3, 0xcf, 0x04, 0xcd, 0xfe, 0x63, 0x61, 0xc1, 0x2f, 0xf3, - 0x82, 0x7f, 0x7a, 0xb4, 0xe6, 0x79, 0xc4, 0x23, 0xc4, 0x7f, 0x2f, 0x4c, 0x30, 0x39, 0x32, 0x03, - 0x51, 0x4c, 0xf8, 0xde, 0x4f, 0xe8, 0x3d, 0xbe, 0xe8, 0x1f, 0xe0, 0x44, 0xff, 0xac, 0xc4, 0x1c, - 0x25, 0x03, 0xa0, 0x34, 0x04, 0x00, 0xc7, 0x61, 0xda, 0x03, 0x60, 0x43, 0xad, 0x14, 0x30, 0x7a, - 0x9b, 0x4c, 0x7c, 0x1e, 0xe8, 0x48, 0x75, 0xf8, 0x9e, 0xe6, 0x0b, 0xc2, 0x33, 0xf7, 0x90, 0x3c, - 0xfc, 0xf2, 0x53, 0x02, 0xe8, 0x4f, 0x84, 0xa6, 0xea, 0x02, 0x0c, 0x3d, 0x51, 0xfa, 0xab, 0xf3, - 0x65, 0x98, 0xe5, 0x4c, 0x0c, 0xe5, 0x0c, 0x9c, 0xe4, 0x12, 0xe8, 0x78, 0xd7, 0x2e, 0x1c, 0x53, - 0x10, 0x9c, 0xe6, 0xbe, 0xb0, 0x17, 0xdc, 0x2e, 0x64, 0xd0, 0x2b, 0x3e, 0x99, 0xf1, 0x17, 0x6f, - 0xde, 0x95, 0x65, 0xcb, 0x66, 0x1f, 0xe2, 0xe3, 0xc9, 0xb5, 0x4c, 0xc3, 0xc1, 0x8f, 0x84, 0x7c, - 0x4e, 0xfc, 0x84, 0x58, 0xab, 0xe1, 0x0c, 0x4c, 0x38, 0x56, 0xd8, 0x0f, 0xc5, 0x7b, 0x0d, 0x2b, - 0x56, 0x8e, 0x57, 0xac, 0x2a, 0x9c, 0xd7, 0x8d, 0x56, 0x67, 0xb7, 0x8d, 0x55, 0xdc, 0xd1, 0x5c, - 0x19, 0xda, 0x45, 0x7b, 0x11, 0x77, 0xb1, 0xd1, 0xc6, 0x86, 0x43, 0xf9, 0xf4, 0xce, 0xb3, 0x09, - 0xe4, 0xe4, 0x95, 0xf1, 0x1e, 0x5e, 0x19, 0x9f, 0xd2, 0x6f, 0x3d, 0x36, 0x66, 0xf1, 0xee, 0x4e, - 0x00, 0x5a, 0xb7, 0x0b, 0x3a, 0xbe, 0xc2, 0xd4, 0xf0, 0x9a, 0x9e, 0x25, 0xbc, 0x9a, 0x9f, 0x41, - 0x0d, 0x65, 0x46, 0x8f, 0xfb, 0xea, 0x77, 0x3f, 0xa7, 0x7e, 0xb7, 0x0a, 0xb2, 0x90, 0x4c, 0xeb, - 0xba, 0x43, 0x68, 0xdd, 0x2c, 0x4c, 0x05, 0x5b, 0xc3, 0xb2, 0x72, 0x0d, 0x9c, 0xf2, 0x7c, 0x7a, - 0xab, 0xe5, 0xf2, 0x62, 0xbd, 0xb9, 0xb1, 0xbe, 0xac, 0x16, 0x17, 0xcb, 0x05, 0x70, 0xf5, 0x93, - 0xea, 0xa5, 0xef, 0x8a, 0x9b, 0x45, 0x7f, 0x2e, 0x41, 0x8e, 0x1c, 0xc6, 0x44, 0xdf, 0x3f, 0x22, - 0xcd, 0xb1, 0x39, 0x0f, 0x26, 0x7f, 0xdc, 0x15, 0x8f, 0xf3, 0xce, 0x84, 0x49, 0xb8, 0x3a, 0x54, - 0x9c, 0xf7, 0x18, 0x42, 0xe9, 0x4f, 0x6b, 0xdc, 0x26, 0x59, 0xdf, 0x36, 0xaf, 0x7c, 0x3b, 0x37, - 0x49, 0xb7, 0xfe, 0x47, 0xdc, 0x24, 0xfb, 0xb0, 0x30, 0xf6, 0x26, 0xd9, 0xa7, 0xdd, 0xc5, 0x34, - 0x53, 0xf4, 0xfc, 0x9c, 0x3f, 0xff, 0x7b, 0xa1, 0x74, 0xa8, 0x8d, 0xac, 0x22, 0xcc, 0xea, 0x86, - 0x83, 0x2d, 0x43, 0xeb, 0x2c, 0x75, 0xb4, 0x2d, 0xcf, 0x3e, 0xed, 0xdd, 0xbd, 0xa8, 0x84, 0xf2, - 0xa8, 0xfc, 0x1f, 0xca, 0x59, 0x00, 0x07, 0xef, 0x74, 0x3b, 0x9a, 0x13, 0xa8, 0x5e, 0x28, 0x25, - 0xac, 0x7d, 0x59, 0x5e, 0xfb, 0x6e, 0x87, 0xab, 0x28, 0x68, 0x8d, 0xfd, 0x2e, 0xde, 0x30, 0xf4, - 0x1f, 0xd8, 0x25, 0xe1, 0x47, 0xa9, 0x8e, 0xf6, 0xfb, 0xc4, 0x6d, 0xe7, 0xe4, 0x7b, 0xb6, 0x73, - 0xfe, 0x41, 0x38, 0xac, 0x89, 0xd7, 0xea, 0x07, 0x84, 0x35, 0xf1, 0x5b, 0x9a, 0xdc, 0xd3, 0xd2, - 0xfc, 0x45, 0x96, 0xac, 0xc0, 0x22, 0x4b, 0x18, 0x95, 0x9c, 0xe0, 0x02, 0xe5, 0x6b, 0x85, 0xe2, - 0xa6, 0xc4, 0x55, 0x63, 0x0c, 0x0b, 0xe0, 0x32, 0xcc, 0xd1, 0xa2, 0x17, 0x4c, 0xf3, 0xf2, 0x8e, - 0x66, 0x5d, 0x46, 0xd6, 0xa1, 0x54, 0x31, 0x76, 0x2f, 0x29, 0x72, 0x83, 0xf4, 0xa3, 0xc2, 0x73, - 0x06, 0x4e, 0x5c, 0x1e, 0xcf, 0xe3, 0xd9, 0x4c, 0xfa, 0x15, 0xa1, 0x29, 0x84, 0x08, 0x83, 0xe9, - 0xe3, 0xfa, 0x87, 0x3e, 0xae, 0x5e, 0x47, 0x1f, 0x5e, 0x87, 0x1f, 0x25, 0xae, 0xe8, 0xb3, 0xc3, - 0x61, 0xe7, 0xf1, 0x35, 0x04, 0x76, 0x05, 0x90, 0x2f, 0xfb, 0xae, 0x3f, 0xee, 0x63, 0xb8, 0x42, - 0xd9, 0xf4, 0xd0, 0x8c, 0x60, 0x79, 0x2c, 0x68, 0x9e, 0xe4, 0x59, 0xa8, 0x75, 0x53, 0xc5, 0xf4, - 0x33, 0xc2, 0xfb, 0x5b, 0x7d, 0x05, 0x44, 0xb9, 0x1b, 0x4f, 0xab, 0x14, 0xdb, 0x1c, 0x13, 0x67, - 0x33, 0x7d, 0x34, 0x5f, 0x92, 0x83, 0x29, 0x2f, 0xf0, 0x0c, 0xb9, 0x17, 0xc9, 0xc7, 0xf0, 0x34, - 0xe4, 0x6d, 0x73, 0xd7, 0x6a, 0x61, 0xb6, 0xe3, 0xc8, 0xde, 0x86, 0xd8, 0x1d, 0x1b, 0x38, 0x9e, - 0x1f, 0x30, 0x19, 0xb2, 0x89, 0x4d, 0x86, 0x68, 0x83, 0x34, 0x6e, 0x80, 0x7f, 0xa9, 0x70, 0x30, - 0x7b, 0x0e, 0xb3, 0x3a, 0x76, 0x9e, 0x88, 0x63, 0xfc, 0xef, 0x0a, 0xed, 0xbd, 0x0c, 0xa8, 0x49, - 0x32, 0x95, 0xab, 0x0d, 0x61, 0xa8, 0x5e, 0x0b, 0x57, 0x7b, 0x39, 0x98, 0x85, 0x4a, 0x2c, 0xd2, - 0x0d, 0x75, 0xb5, 0x20, 0xa3, 0x17, 0x64, 0xa1, 0x40, 0x59, 0xab, 0xf9, 0xc6, 0x1a, 0x7a, 0x65, - 0xe6, 0xa8, 0x2d, 0xd2, 0xe8, 0x29, 0xe6, 0xc7, 0x25, 0xd1, 0x80, 0xb9, 0x9c, 0xe0, 0x83, 0xda, - 0x45, 0x68, 0xd2, 0x10, 0xcd, 0x2c, 0x46, 0xf9, 0xd0, 0xaf, 0x66, 0x44, 0xe2, 0xef, 0x8a, 0xb1, - 0x38, 0x86, 0x60, 0x49, 0x59, 0x2f, 0x7e, 0xd8, 0x92, 0x65, 0xee, 0x6c, 0x58, 0x1d, 0xf4, 0x7f, - 0x0a, 0x85, 0x37, 0x8f, 0x30, 0xff, 0xa5, 0x68, 0xf3, 0x9f, 0x2c, 0x19, 0x77, 0x82, 0xbd, 0xaa, - 0xce, 0x10, 0xc3, 0xb7, 0x72, 0x13, 0xcc, 0x69, 0xed, 0xf6, 0xba, 0xb6, 0x85, 0x4b, 0xee, 0xbc, - 0xda, 0x70, 0x58, 0x6c, 0xa1, 0x9e, 0xd4, 0xd8, 0xae, 0x48, 0x7c, 0x1d, 0x94, 0x03, 0x89, 0xc9, - 0x67, 0x2c, 0xc3, 0x9b, 0x3b, 0x24, 0xb4, 0xb6, 0xb5, 0x20, 0xd2, 0x19, 0x7b, 0x13, 0xf4, 0x6c, - 0x12, 0xe0, 0x3b, 0x7d, 0xcd, 0xfa, 0x2d, 0x09, 0x26, 0x5c, 0x79, 0x17, 0xdb, 0x6d, 0xf4, 0x64, - 0x2e, 0x20, 0x60, 0xa4, 0x6f, 0xd9, 0x8f, 0x0a, 0x3b, 0xf5, 0x79, 0x35, 0xa4, 0xf4, 0x23, 0x30, - 0x09, 0x84, 0x28, 0x71, 0x42, 0x14, 0xf3, 0xdd, 0x8b, 0x2d, 0x22, 0x7d, 0xf1, 0x7d, 0x44, 0x82, - 0x59, 0x6f, 0x1e, 0xb1, 0x84, 0x9d, 0xd6, 0x36, 0xba, 0x53, 0x74, 0xa1, 0x89, 0xb5, 0x34, 0x7f, - 0x4f, 0xb6, 0x83, 0xbe, 0x99, 0x49, 0xa8, 0xf2, 0x5c, 0xc9, 0x11, 0xab, 0x74, 0x89, 0x74, 0x31, - 0x8e, 0x60, 0xfa, 0xc2, 0x7c, 0x5c, 0x02, 0x68, 0x98, 0xfe, 0x5c, 0xf7, 0x10, 0x92, 0x7c, 0xb9, - 0xf0, 0x76, 0x2d, 0xab, 0x78, 0x50, 0x6c, 0xf2, 0x9e, 0x43, 0xd0, 0x35, 0x69, 0x50, 0x49, 0x63, - 0x69, 0xeb, 0x53, 0x8b, 0xbb, 0xdd, 0x8e, 0xde, 0xd2, 0x9c, 0x5e, 0x7f, 0xba, 0x68, 0xf1, 0x92, - 0x4b, 0x43, 0x13, 0x19, 0x85, 0x7e, 0x19, 0x11, 0xb2, 0xa4, 0xa1, 0x67, 0x24, 0x2f, 0xf4, 0x8c, - 0xa0, 0x8f, 0xcc, 0x00, 0xe2, 0x63, 0x50, 0x4f, 0x19, 0x8e, 0xd7, 0xba, 0xd8, 0x58, 0xb0, 0xb0, - 0xd6, 0x6e, 0x59, 0xbb, 0x3b, 0x97, 0xec, 0xb0, 0x33, 0x68, 0xbc, 0x8e, 0x86, 0x96, 0x8e, 0x25, - 0x6e, 0xe9, 0x18, 0xfd, 0x88, 0x2c, 0x1a, 0x08, 0x29, 0xb4, 0xc1, 0x11, 0xe2, 0x61, 0x88, 0xa1, - 0x2e, 0x91, 0x0b, 0x53, 0xcf, 0x2a, 0x71, 0x36, 0xc9, 0x2a, 0xf1, 0x1b, 0x85, 0xc2, 0x2a, 0x09, - 0xd5, 0x6b, 0x2c, 0x9e, 0x68, 0x73, 0x75, 0xec, 0x44, 0xc0, 0x7b, 0x23, 0xcc, 0x5e, 0x0a, 0xbe, - 0xf8, 0x10, 0xf3, 0x89, 0x7d, 0xfc, 0x43, 0xdf, 0x94, 0x74, 0x05, 0x86, 0x67, 0x21, 0x02, 0x5d, - 0x1f, 0x41, 0x49, 0xc4, 0x09, 0x2d, 0xd1, 0x72, 0x4a, 0x6c, 0xf9, 0xe9, 0xa3, 0xf0, 0x01, 0x09, - 0xa6, 0xc9, 0x55, 0xa8, 0x0b, 0xfb, 0xe4, 0x58, 0xa4, 0xa0, 0x51, 0xf2, 0x92, 0xb0, 0x98, 0x15, - 0xc8, 0x76, 0x74, 0xe3, 0xb2, 0xe7, 0x3d, 0xe8, 0x3e, 0x07, 0x17, 0xeb, 0x49, 0x7d, 0x2e, 0xd6, - 0xf3, 0xf7, 0x29, 0xfc, 0x72, 0x0f, 0x75, 0xd3, 0xf3, 0x40, 0x72, 0xe9, 0x8b, 0xf1, 0xef, 0xb2, - 0x90, 0xaf, 0x63, 0xcd, 0x6a, 0x6d, 0xa3, 0x77, 0x49, 0x7d, 0xa7, 0x0a, 0x93, 0xfc, 0x54, 0x61, - 0x09, 0x26, 0x36, 0xf5, 0x8e, 0x83, 0x2d, 0xea, 0x51, 0x1d, 0xee, 0xda, 0x69, 0x13, 0x5f, 0xe8, - 0x98, 0xad, 0xcb, 0xf3, 0xcc, 0x74, 0x9f, 0xf7, 0x02, 0xb1, 0xce, 0x2f, 0x91, 0x9f, 0x54, 0xef, - 0x67, 0xd7, 0x20, 0xb4, 0x4d, 0xcb, 0x89, 0xba, 0x63, 0x23, 0x82, 0x4a, 0xdd, 0xb4, 0x1c, 0x95, - 0xfe, 0xe8, 0xc2, 0xbc, 0xb9, 0xdb, 0xe9, 0x34, 0xf0, 0x23, 0x8e, 0x37, 0x6d, 0xf3, 0xde, 0x5d, - 0x63, 0xd1, 0xdc, 0xdc, 0xb4, 0x31, 0x5d, 0x34, 0xc8, 0xa9, 0xec, 0x4d, 0x39, 0x09, 0xb9, 0x8e, - 0xbe, 0xa3, 0xd3, 0x89, 0x46, 0x4e, 0xa5, 0x2f, 0xca, 0x2d, 0x50, 0x08, 0xe6, 0x38, 0x94, 0xd1, - 0x33, 0x79, 0xd2, 0x34, 0x0f, 0xa4, 0xbb, 0x3a, 0x73, 0x19, 0xef, 0xdb, 0x67, 0x26, 0xc8, 0x77, - 0xf2, 0xcc, 0x1f, 0x5f, 0x11, 0xd9, 0xef, 0xa0, 0x12, 0x8f, 0x9e, 0xc1, 0x5a, 0xb8, 0x65, 0x5a, - 0x6d, 0x4f, 0x36, 0xd1, 0x13, 0x0c, 0x96, 0x2f, 0xd9, 0x2e, 0x45, 0xdf, 0xc2, 0xd3, 0xd7, 0xb4, - 0xb7, 0xe7, 0xdd, 0x6e, 0xd3, 0x2d, 0xfa, 0xa2, 0xee, 0x6c, 0xaf, 0x61, 0x47, 0x43, 0x7f, 0x27, - 0xf7, 0xd5, 0xb8, 0xe9, 0xff, 0x4f, 0xe3, 0x06, 0x68, 0x1c, 0x0d, 0x83, 0xe5, 0xec, 0x5a, 0x86, - 0x2b, 0x47, 0xe6, 0x95, 0x1a, 0x4a, 0x51, 0xee, 0x86, 0x6b, 0x82, 0x37, 0x6f, 0xa9, 0x74, 0x91, - 0x4d, 0x5b, 0xa7, 0x48, 0xf6, 0xe8, 0x0c, 0xca, 0x3a, 0xdc, 0x40, 0x3f, 0xae, 0x34, 0xd6, 0x56, - 0x57, 0xf4, 0xad, 0xed, 0x8e, 0xbe, 0xb5, 0xed, 0xd8, 0x15, 0xc3, 0x76, 0xb0, 0xd6, 0xae, 0x6d, - 0xaa, 0xf4, 0x76, 0x1c, 0x20, 0x74, 0x44, 0xb2, 0xf2, 0x1e, 0xd7, 0x62, 0xa3, 0x5b, 0x58, 0x53, - 0x22, 0x5a, 0xca, 0xb3, 0xdc, 0x96, 0x62, 0xef, 0x76, 0x7c, 0x4c, 0xaf, 0xeb, 0xc1, 0x34, 0x50, - 0xf5, 0xdd, 0x0e, 0x69, 0x2e, 0x24, 0x73, 0xd2, 0x71, 0x2e, 0x86, 0x93, 0xf4, 0x9b, 0xcd, 0xff, - 0x93, 0x87, 0xdc, 0xb2, 0xa5, 0x75, 0xb7, 0xd1, 0x0b, 0x42, 0xfd, 0xf3, 0xa8, 0xda, 0x84, 0xaf, - 0x9d, 0xd2, 0x20, 0xed, 0x94, 0x07, 0x68, 0x67, 0x36, 0xa4, 0x9d, 0xd1, 0x8b, 0xca, 0xe7, 0x61, - 0xa6, 0x65, 0x76, 0x3a, 0xb8, 0xe5, 0xca, 0xa3, 0xd2, 0x26, 0xab, 0x39, 0x53, 0x2a, 0x97, 0x46, - 0x82, 0x55, 0x63, 0xa7, 0x4e, 0xd7, 0xd0, 0xa9, 0xd2, 0x07, 0x09, 0xe8, 0x95, 0x12, 0x64, 0xcb, - 0xed, 0x2d, 0xcc, 0xad, 0xb3, 0x67, 0x42, 0xeb, 0xec, 0xa7, 0x21, 0xef, 0x68, 0xd6, 0x16, 0x76, - 0xbc, 0x75, 0x02, 0xfa, 0xe6, 0xc7, 0xd0, 0x96, 0x43, 0x31, 0xb4, 0xbf, 0x1b, 0xb2, 0xae, 0xcc, - 0x98, 0x93, 0xf9, 0x0d, 0xfd, 0xe0, 0x27, 0xb2, 0x9f, 0x77, 0x4b, 0x9c, 0x77, 0x6b, 0xad, 0x92, - 0x1f, 0x7a, 0xb1, 0xce, 0x1d, 0xc0, 0x9a, 0x5c, 0xf4, 0xd9, 0x32, 0x8d, 0xca, 0x8e, 0xb6, 0x85, - 0x59, 0x35, 0x83, 0x04, 0xef, 0x6b, 0x79, 0xc7, 0x7c, 0x58, 0x67, 0xd1, 0x22, 0x83, 0x04, 0xb7, - 0x0a, 0xdb, 0x7a, 0xbb, 0x8d, 0x0d, 0xd6, 0xb2, 0xd9, 0xdb, 0xf9, 0xb3, 0x90, 0x75, 0x79, 0x70, - 0xf5, 0xc7, 0x35, 0x16, 0x0a, 0xc7, 0x94, 0x19, 0xb7, 0x59, 0xd1, 0xc6, 0x5b, 0xc8, 0xf0, 0x6b, - 0xaa, 0x22, 0x6e, 0x3b, 0xb4, 0x72, 0xfd, 0x1b, 0xd7, 0xd3, 0x20, 0x67, 0x98, 0x6d, 0x3c, 0x70, - 0x10, 0xa2, 0xb9, 0x94, 0x67, 0x42, 0x0e, 0xb7, 0xdd, 0x5e, 0x41, 0x26, 0xd9, 0xcf, 0xc6, 0xcb, - 0x52, 0xa5, 0x99, 0x93, 0xf9, 0x06, 0xf5, 0xe3, 0x36, 0xfd, 0x06, 0xf8, 0xe3, 0x13, 0x70, 0x9c, - 0xf6, 0x01, 0xf5, 0xdd, 0x4b, 0x2e, 0xa9, 0x4b, 0x18, 0x3d, 0xd6, 0x7f, 0xe0, 0x3a, 0xce, 0x2b, - 0xfb, 0x49, 0xc8, 0xd9, 0xbb, 0x97, 0x7c, 0x23, 0x94, 0xbe, 0x84, 0x9b, 0xae, 0x34, 0x92, 0xe1, - 0x4c, 0x1e, 0x76, 0x38, 0xe3, 0x86, 0x26, 0xd9, 0x6b, 0xfc, 0xc1, 0x40, 0x46, 0x8f, 0x47, 0x78, - 0x03, 0x59, 0xbf, 0x61, 0xe8, 0x0c, 0x4c, 0x68, 0x9b, 0x0e, 0xb6, 0x02, 0x33, 0x91, 0xbd, 0xba, - 0x43, 0xe5, 0x25, 0xbc, 0x69, 0x5a, 0xae, 0x58, 0x68, 0x08, 0x75, 0xff, 0x3d, 0xd4, 0x72, 0x81, - 0xdb, 0x21, 0xbb, 0x15, 0x4e, 0x18, 0xe6, 0x22, 0xee, 0x32, 0x39, 0x53, 0x14, 0x67, 0x49, 0x0b, - 0x38, 0xf8, 0xe1, 0x40, 0x57, 0x32, 0x77, 0xb0, 0x2b, 0x41, 0x1f, 0x4b, 0x3a, 0x67, 0xee, 0x01, - 0x7a, 0x64, 0x16, 0x9a, 0xf2, 0x1c, 0x98, 0x69, 0x33, 0x17, 0xad, 0x96, 0xee, 0xb7, 0x92, 0xc8, - 0xff, 0xb8, 0xcc, 0x81, 0x22, 0x65, 0xc3, 0x8a, 0xb4, 0x0c, 0x93, 0xe4, 0x20, 0xb3, 0xab, 0x49, - 0xb9, 0x1e, 0x97, 0x78, 0x32, 0xad, 0xf3, 0x2b, 0x15, 0x12, 0xdb, 0x7c, 0x89, 0xfd, 0xa2, 0xfa, - 0x3f, 0x27, 0x9b, 0x7d, 0xc7, 0x4b, 0x28, 0xfd, 0xe6, 0xf8, 0x6b, 0x79, 0xb8, 0xa6, 0x64, 0x99, - 0xb6, 0x4d, 0xce, 0xc0, 0xf4, 0x36, 0xcc, 0x5f, 0x96, 0xb8, 0xdb, 0x34, 0x9e, 0xd0, 0xcd, 0xaf, - 0x5f, 0x83, 0x1a, 0x5f, 0xd3, 0xf8, 0x82, 0x70, 0x08, 0x18, 0x7f, 0xff, 0x21, 0x42, 0xe8, 0xdf, - 0x1e, 0x8d, 0xe4, 0xed, 0x19, 0x91, 0xa8, 0x34, 0x09, 0x65, 0x95, 0x7e, 0x73, 0xf9, 0x8c, 0x04, - 0xd7, 0xf6, 0x72, 0xb3, 0x61, 0xd8, 0x7e, 0x83, 0xb9, 0x7e, 0x40, 0x7b, 0xe1, 0xa3, 0x98, 0xc4, - 0xde, 0x63, 0x19, 0x51, 0xf7, 0x50, 0x69, 0x11, 0x8b, 0x25, 0xc1, 0x89, 0x9a, 0xb8, 0x7b, 0x2c, - 0x13, 0x93, 0x4f, 0x5f, 0xb8, 0x1f, 0xcf, 0xc2, 0xf1, 0x65, 0xcb, 0xdc, 0xed, 0xda, 0x41, 0x0f, - 0xf4, 0xd7, 0xfd, 0x37, 0x5c, 0xf3, 0x22, 0xa6, 0xc1, 0x39, 0x98, 0xb6, 0x98, 0x35, 0x17, 0x6c, - 0xbf, 0x86, 0x93, 0xc2, 0xbd, 0x97, 0x7c, 0x98, 0xde, 0x2b, 0xe8, 0x67, 0xb2, 0x5c, 0x3f, 0xd3, - 0xdb, 0x73, 0xe4, 0xfa, 0xf4, 0x1c, 0x7f, 0x25, 0x25, 0x1c, 0x54, 0x7b, 0x44, 0x14, 0xd1, 0x5f, - 0x94, 0x20, 0xbf, 0x45, 0x32, 0xb2, 0xee, 0xe2, 0xa9, 0x62, 0x35, 0x23, 0xc4, 0x55, 0xf6, 0x6b, - 0x20, 0x57, 0x39, 0xac, 0xc3, 0x89, 0x06, 0xb8, 0x78, 0x6e, 0xd3, 0x57, 0xaa, 0xd7, 0x65, 0x61, - 0xc6, 0x2f, 0xbd, 0xd2, 0xb6, 0xd1, 0x4b, 0xfa, 0x6b, 0xd4, 0xac, 0x88, 0x46, 0x1d, 0x58, 0x67, - 0xf6, 0x47, 0x1d, 0x39, 0x34, 0xea, 0xf4, 0x1d, 0x5d, 0x66, 0x22, 0x46, 0x17, 0xf4, 0x7c, 0x59, - 0xf4, 0x3e, 0x2a, 0xbe, 0x6b, 0x25, 0xb5, 0x79, 0x22, 0x0f, 0x16, 0x82, 0xb7, 0x62, 0x0d, 0xae, - 0x55, 0xfa, 0x4a, 0xf2, 0x5e, 0x09, 0x4e, 0x1c, 0xec, 0xcc, 0xbf, 0x83, 0xf7, 0x42, 0x73, 0xeb, - 0x64, 0xfb, 0x5e, 0x68, 0xe4, 0x8d, 0xdf, 0xa4, 0x8b, 0x0d, 0x29, 0xc2, 0xd9, 0x7b, 0x83, 0x3b, - 0x71, 0xb1, 0xa0, 0x21, 0x82, 0x44, 0xd3, 0x17, 0xe0, 0x4f, 0xc9, 0x30, 0x55, 0xc7, 0xce, 0xaa, - 0xb6, 0x6f, 0xee, 0x3a, 0x48, 0x13, 0xdd, 0x9e, 0x7b, 0x36, 0xe4, 0x3b, 0xe4, 0x17, 0x76, 0xcd, - 0xff, 0xb9, 0xbe, 0xfb, 0x5b, 0xc4, 0xf7, 0x87, 0x92, 0x56, 0x59, 0x7e, 0x3e, 0x96, 0x8b, 0xc8, - 0xee, 0xa8, 0xcf, 0xdd, 0x48, 0xb6, 0x76, 0x12, 0xed, 0x9d, 0x46, 0x15, 0x9d, 0x3e, 0x2c, 0x3f, - 0x22, 0xc3, 0x6c, 0x1d, 0x3b, 0x15, 0x7b, 0x49, 0xdb, 0x33, 0x2d, 0xdd, 0xc1, 0xe1, 0x7b, 0x3e, - 0xe3, 0xa1, 0x39, 0x0b, 0xa0, 0xfb, 0xbf, 0xb1, 0x08, 0x53, 0xa1, 0x14, 0xf4, 0xab, 0x49, 0x1d, - 0x85, 0x38, 0x3e, 0x46, 0x02, 0x42, 0x22, 0x1f, 0x8b, 0xb8, 0xe2, 0xd3, 0x07, 0xe2, 0xd3, 0x12, - 0x03, 0xa2, 0x68, 0xb5, 0xb6, 0xf5, 0x3d, 0xdc, 0x4e, 0x08, 0x84, 0xf7, 0x5b, 0x00, 0x84, 0x4f, - 0x28, 0xb1, 0xfb, 0x0a, 0xc7, 0xc7, 0x28, 0xdc, 0x57, 0xe2, 0x08, 0x8e, 0x25, 0x48, 0x94, 0xdb, - 0xf5, 0xb0, 0xf5, 0xcc, 0xfb, 0x44, 0xc5, 0x1a, 0x98, 0x6c, 0x52, 0xd8, 0x64, 0x1b, 0xaa, 0x63, - 0xa1, 0x65, 0x0f, 0xd2, 0xe9, 0x6c, 0x1a, 0x1d, 0x4b, 0xdf, 0xa2, 0xd3, 0x17, 0xfa, 0x3b, 0x65, - 0x38, 0xe5, 0x47, 0x4f, 0xa9, 0x63, 0x67, 0x51, 0xb3, 0xb7, 0x2f, 0x99, 0x9a, 0xd5, 0x46, 0xa5, - 0x11, 0x9c, 0xf8, 0x43, 0x9f, 0x0a, 0x83, 0x50, 0xe5, 0x41, 0xe8, 0xeb, 0x2a, 0xda, 0x97, 0x97, - 0x51, 0x74, 0x32, 0xb1, 0xde, 0xac, 0xbf, 0xe1, 0x83, 0xf5, 0x3d, 0x1c, 0x58, 0xf7, 0x0c, 0xcb, - 0x62, 0xfa, 0xc0, 0xfd, 0x2c, 0x1d, 0x11, 0x42, 0x5e, 0xcd, 0x0f, 0x89, 0x02, 0x16, 0xe1, 0xd5, - 0x2a, 0x47, 0x7a, 0xb5, 0x0e, 0x35, 0x46, 0x0c, 0xf4, 0x48, 0x4e, 0x77, 0x8c, 0x38, 0x42, 0x6f, - 0xe3, 0xb7, 0xca, 0x50, 0x20, 0xe1, 0xb3, 0x42, 0x1e, 0xdf, 0xe1, 0x68, 0xd4, 0xf1, 0xe8, 0x1c, - 0xf0, 0x2e, 0x9f, 0x48, 0xea, 0x5d, 0x8e, 0xde, 0x92, 0xd4, 0x87, 0xbc, 0x97, 0xdb, 0x91, 0x20, - 0x96, 0xc8, 0x45, 0x7c, 0x00, 0x07, 0xe9, 0x83, 0xf6, 0xdf, 0x64, 0x00, 0xb7, 0x41, 0xb3, 0xb3, - 0x0f, 0xcf, 0x15, 0x85, 0xeb, 0xb6, 0xb0, 0x5f, 0xbd, 0x0b, 0xd4, 0xa9, 0x1e, 0xa0, 0x28, 0xc5, - 0xe0, 0x54, 0xc5, 0x63, 0x49, 0x7d, 0x2b, 0x03, 0xae, 0x46, 0x02, 0x4b, 0x22, 0x6f, 0xcb, 0xc8, - 0xb2, 0xd3, 0x07, 0xe4, 0x7f, 0x48, 0x90, 0x6b, 0x98, 0x75, 0xec, 0x1c, 0xde, 0x14, 0x48, 0x7c, - 0x6c, 0x9f, 0x94, 0x3b, 0x8a, 0x63, 0xfb, 0xfd, 0x08, 0x8d, 0x21, 0x1a, 0x99, 0x04, 0x33, 0x0d, - 0xb3, 0xe4, 0x2f, 0x4e, 0x89, 0xfb, 0xaa, 0x8a, 0xdf, 0xa9, 0xed, 0x57, 0x30, 0x28, 0xe6, 0x50, - 0x77, 0x6a, 0x0f, 0xa6, 0x97, 0xbe, 0xdc, 0xee, 0x84, 0xe3, 0x1b, 0x46, 0xdb, 0x54, 0x71, 0xdb, - 0x64, 0x2b, 0xdd, 0x8a, 0x02, 0xd9, 0x5d, 0xa3, 0x6d, 0x12, 0x96, 0x73, 0x2a, 0x79, 0x76, 0xd3, - 0x2c, 0xdc, 0x36, 0x99, 0x6f, 0x00, 0x79, 0x46, 0x5f, 0x90, 0x21, 0xeb, 0xfe, 0x2b, 0x2e, 0xea, - 0xb7, 0xca, 0x09, 0x03, 0x11, 0xb8, 0xe4, 0x47, 0x62, 0x09, 0xdd, 0x17, 0x5a, 0xfb, 0xa7, 0x1e, - 0xac, 0x37, 0x44, 0x95, 0x17, 0x12, 0x45, 0xb0, 0xe6, 0xaf, 0x9c, 0x81, 0x89, 0x4b, 0x1d, 0xb3, - 0x75, 0x39, 0x38, 0x2f, 0xcf, 0x5e, 0x95, 0x5b, 0x20, 0x67, 0x69, 0xc6, 0x16, 0x66, 0x7b, 0x0a, - 0x27, 0x7b, 0xfa, 0x42, 0xe2, 0xf5, 0xa2, 0xd2, 0x2c, 0xe8, 0x2d, 0x49, 0x42, 0x20, 0xf4, 0xa9, - 0x7c, 0x32, 0x7d, 0x58, 0x1c, 0xe2, 0x64, 0x59, 0x01, 0x66, 0x4a, 0x45, 0x7a, 0x7b, 0xfd, 0x5a, - 0xed, 0x42, 0xb9, 0x20, 0x13, 0x98, 0x5d, 0x99, 0xa4, 0x08, 0xb3, 0x4b, 0xfe, 0xdb, 0x16, 0xe6, - 0x3e, 0x95, 0x3f, 0x0a, 0x98, 0x3f, 0x22, 0xc1, 0xec, 0xaa, 0x6e, 0x3b, 0x51, 0xde, 0xfe, 0x31, - 0xd1, 0x73, 0x5f, 0x9a, 0xd4, 0x54, 0xe6, 0xca, 0x11, 0x0e, 0x9b, 0x9b, 0xc8, 0x1c, 0x8e, 0x2b, - 0x62, 0x3c, 0xc7, 0x52, 0x08, 0x07, 0xf4, 0x0e, 0x69, 0x61, 0x49, 0x26, 0x36, 0x94, 0x82, 0x42, - 0xc6, 0x6f, 0x28, 0x45, 0x96, 0x9d, 0xbe, 0x7c, 0xbf, 0x20, 0xc1, 0x09, 0xb7, 0xf8, 0xb8, 0x65, - 0xa9, 0x68, 0x31, 0x0f, 0x5c, 0x96, 0x4a, 0xbc, 0x32, 0x7e, 0x80, 0x97, 0x51, 0xac, 0x8c, 0x0f, - 0x22, 0x3a, 0x66, 0x31, 0x47, 0x2c, 0xc3, 0x0e, 0x12, 0x73, 0xcc, 0x32, 0xec, 0xf0, 0x62, 0x8e, - 0x5f, 0x8a, 0x1d, 0x52, 0xcc, 0x47, 0xb6, 0xc0, 0xfa, 0x06, 0xd9, 0x17, 0x73, 0xe4, 0xda, 0x46, - 0x8c, 0x98, 0x13, 0x9f, 0xd8, 0x45, 0x6f, 0x1b, 0x52, 0xf0, 0x23, 0x5e, 0xdf, 0x18, 0x06, 0xa6, - 0x23, 0x5c, 0xe3, 0xf8, 0x39, 0x19, 0xe6, 0x18, 0x17, 0xfd, 0xa7, 0xcc, 0x31, 0x18, 0x25, 0x9e, - 0x32, 0x27, 0x3e, 0x03, 0xc4, 0x73, 0x36, 0xfe, 0x33, 0x40, 0xb1, 0xe5, 0xa7, 0x0f, 0xce, 0x17, - 0xb3, 0x70, 0xda, 0x65, 0x61, 0xcd, 0x6c, 0xeb, 0x9b, 0xfb, 0x94, 0x8b, 0x0b, 0x5a, 0x67, 0x17, - 0xdb, 0xe8, 0xdd, 0x92, 0x28, 0x4a, 0xff, 0x09, 0xc0, 0xec, 0x62, 0x8b, 0x06, 0x52, 0x63, 0x40, - 0xdd, 0x1d, 0x55, 0xd9, 0x83, 0x25, 0xf9, 0x97, 0xc9, 0xd4, 0x3c, 0x22, 0x6a, 0x88, 0x9e, 0x6b, - 0x15, 0x4e, 0xf9, 0x5f, 0x7a, 0x1d, 0x3c, 0x32, 0x07, 0x1d, 0x3c, 0x6e, 0x06, 0x59, 0x6b, 0xb7, + 0x73, 0x84, 0x72, 0xbd, 0x51, 0x38, 0x4a, 0xca, 0xaa, 0x34, 0x0a, 0x05, 0xf7, 0x61, 0xa5, 0xde, + 0x28, 0x1c, 0x23, 0x99, 0xeb, 0x8d, 0x82, 0x42, 0x0a, 0xad, 0x37, 0x0a, 0x57, 0x90, 0x3c, 0xf5, + 0x46, 0xe1, 0x38, 0x29, 0xa2, 0xde, 0x28, 0x9c, 0x20, 0x6c, 0x94, 0x1b, 0x85, 0x93, 0x24, 0x8f, + 0xda, 0x28, 0x5c, 0x49, 0x3e, 0x55, 0x1b, 0x85, 0x53, 0x84, 0xb1, 0x72, 0xa3, 0x70, 0x15, 0x79, + 0x50, 0x1b, 0x05, 0x44, 0x3e, 0x15, 0x1b, 0x85, 0xab, 0xd1, 0x13, 0x60, 0x6a, 0x19, 0x3b, 0x14, + 0x44, 0x54, 0x00, 0x79, 0x19, 0x3b, 0x61, 0xa3, 0xff, 0x4b, 0x32, 0x5c, 0xc9, 0x26, 0x8a, 0x4b, + 0x96, 0xb9, 0xb3, 0x8a, 0xb7, 0xb4, 0xd6, 0xe5, 0xf2, 0xc3, 0xae, 0xc1, 0x15, 0xde, 0xf3, 0x55, + 0x20, 0xdb, 0x0d, 0x3a, 0x23, 0xf2, 0x1c, 0x6b, 0x9f, 0x7a, 0x0b, 0x5d, 0x72, 0xb0, 0xd0, 0xc5, + 0x2c, 0xb2, 0x7f, 0x0a, 0x6b, 0x34, 0xb7, 0x36, 0x9d, 0xe9, 0x59, 0x9b, 0x76, 0x9b, 0x49, 0x17, + 0x5b, 0xb6, 0x69, 0x68, 0x9d, 0x3a, 0x73, 0x0a, 0xa0, 0x2b, 0x6a, 0xbd, 0xc9, 0xca, 0x0f, 0x79, + 0x2d, 0x83, 0x5a, 0x65, 0xcf, 0x8c, 0x9b, 0x0f, 0xf7, 0x56, 0x33, 0xa2, 0x91, 0x7c, 0xd4, 0x6f, + 0x24, 0x0d, 0xae, 0x91, 0xdc, 0x77, 0x00, 0xda, 0xc9, 0xda, 0x4b, 0x65, 0xb8, 0x89, 0x48, 0xe0, + 0x32, 0xeb, 0x2d, 0x85, 0xcb, 0xe8, 0x53, 0x12, 0x9c, 0x2c, 0x1b, 0xfd, 0xe6, 0x03, 0x61, 0x5d, + 0x78, 0x43, 0x18, 0x9a, 0x75, 0x5e, 0xa4, 0x77, 0xf6, 0xad, 0x76, 0x7f, 0x9a, 0x11, 0x12, 0xfd, + 0xb8, 0x2f, 0xd1, 0x3a, 0x27, 0xd1, 0x7b, 0x87, 0x27, 0x9d, 0x4c, 0xa0, 0xd5, 0x91, 0x76, 0x40, + 0x59, 0xf4, 0x65, 0x09, 0x8e, 0x51, 0xbf, 0x9e, 0xfb, 0xe9, 0xf4, 0x83, 0x74, 0xd9, 0xbc, 0x09, + 0xd5, 0x09, 0xa6, 0x2a, 0x54, 0xbf, 0x43, 0x29, 0xe8, 0xd5, 0x61, 0x81, 0x3f, 0xc0, 0x0b, 0x3c, + 0xa2, 0x33, 0xee, 0x2d, 0x2e, 0x42, 0xd6, 0x7f, 0xe4, 0xcb, 0xba, 0xca, 0xc9, 0xfa, 0xce, 0xa1, + 0xa8, 0x1e, 0xae, 0x98, 0xbf, 0x9a, 0x85, 0x27, 0x50, 0x0e, 0x99, 0x22, 0xd0, 0xce, 0xac, 0x68, + 0xb4, 0x55, 0x6c, 0x3b, 0x9a, 0xe5, 0x70, 0x47, 0xda, 0x7b, 0xe6, 0xb7, 0x99, 0x14, 0xe6, 0xb7, + 0xd2, 0xc0, 0xf9, 0x2d, 0x7a, 0x5b, 0xd8, 0x4a, 0x3b, 0xcf, 0x23, 0x5b, 0x8c, 0xc1, 0x20, 0xa2, + 0x86, 0x51, 0x2d, 0xca, 0x37, 0xdf, 0x7e, 0x98, 0x43, 0x79, 0xe9, 0xc0, 0x25, 0x24, 0x43, 0xfc, + 0x0f, 0x47, 0x6b, 0x4e, 0x67, 0xc3, 0xdf, 0x78, 0xdb, 0xaf, 0xd0, 0x4e, 0x75, 0x1e, 0xf4, 0xe2, + 0x49, 0x98, 0x22, 0x5d, 0xce, 0xaa, 0x6e, 0x5c, 0x74, 0xc7, 0xc6, 0x99, 0x2a, 0xbe, 0x54, 0xda, + 0xd6, 0x3a, 0x1d, 0x6c, 0x6c, 0x61, 0xf4, 0x10, 0x67, 0xa0, 0x6b, 0xdd, 0x6e, 0x35, 0xd8, 0x2a, + 0xf2, 0x5e, 0x95, 0x7b, 0x21, 0x67, 0xb7, 0xcc, 0x2e, 0x26, 0x82, 0x9a, 0x0b, 0x39, 0x97, 0xf0, + 0xcb, 0x5d, 0xc5, 0x5d, 0x67, 0x7b, 0x9e, 0x94, 0x55, 0xec, 0xea, 0x75, 0xf7, 0x07, 0x95, 0xfe, + 0xc7, 0xc6, 0xc9, 0xaf, 0xf4, 0xed, 0x8c, 0x33, 0x31, 0x9d, 0xb1, 0xcf, 0xf8, 0x7c, 0x98, 0xe9, + 0x88, 0x95, 0x8c, 0x33, 0x30, 0xdd, 0xf2, 0xb2, 0xf8, 0x67, 0x67, 0xc2, 0x49, 0xe8, 0x6f, 0x13, + 0x75, 0xd7, 0x42, 0x85, 0x27, 0xd3, 0x2a, 0x3c, 0x62, 0x7b, 0xf1, 0x04, 0x1c, 0x6b, 0xd4, 0x6a, + 0xcd, 0xb5, 0x62, 0xf5, 0xc1, 0xe0, 0xcc, 0xfa, 0x26, 0x7a, 0x59, 0x16, 0xe6, 0xea, 0x66, 0x67, + 0x0f, 0x07, 0x38, 0x57, 0x38, 0xa7, 0xac, 0xb0, 0x9c, 0x32, 0xfb, 0xe4, 0xa4, 0x9c, 0x84, 0xbc, + 0x66, 0xd8, 0x97, 0xb0, 0x67, 0xc3, 0xb3, 0x37, 0x06, 0xe3, 0x7b, 0xc3, 0x1d, 0x81, 0xca, 0xc3, + 0x78, 0xd7, 0x00, 0x49, 0xf2, 0x5c, 0x45, 0x00, 0x79, 0x16, 0x66, 0x6c, 0xba, 0x61, 0xdc, 0x08, + 0xf9, 0x05, 0x70, 0x69, 0x84, 0x45, 0xea, 0xb1, 0x20, 0x33, 0x16, 0xc9, 0x1b, 0x7a, 0x95, 0xdf, + 0x7f, 0x6c, 0x70, 0x10, 0x17, 0x0f, 0xc2, 0x58, 0x32, 0x90, 0x5f, 0x31, 0xea, 0x99, 0xf8, 0x29, + 0x38, 0xce, 0x9a, 0x7d, 0xb3, 0xb4, 0x52, 0x5c, 0x5d, 0x2d, 0x57, 0x97, 0xcb, 0xcd, 0xca, 0x22, + 0xdd, 0x80, 0x0a, 0x52, 0x8a, 0x8d, 0x46, 0x79, 0x6d, 0xbd, 0x51, 0x6f, 0x96, 0x9f, 0x55, 0x2a, + 0x97, 0x17, 0x89, 0x5b, 0x24, 0x39, 0xd7, 0xe4, 0x39, 0xb0, 0x16, 0xab, 0xf5, 0xf3, 0x65, 0xb5, + 0xb0, 0x7d, 0xb6, 0x08, 0xd3, 0xa1, 0x81, 0xc2, 0xe5, 0x6e, 0x11, 0x6f, 0x6a, 0xbb, 0x1d, 0x66, + 0x53, 0x17, 0x8e, 0xb8, 0xdc, 0x11, 0xd9, 0xd4, 0x8c, 0xce, 0xe5, 0x42, 0x46, 0x29, 0xc0, 0x4c, + 0x78, 0x4c, 0x28, 0x48, 0xe8, 0xcd, 0xd7, 0xc0, 0xd4, 0x79, 0xd3, 0xba, 0x48, 0x7c, 0xf9, 0xd0, + 0xbb, 0x68, 0x6c, 0x1b, 0xef, 0x94, 0x70, 0xc8, 0x00, 0x7b, 0x85, 0xb8, 0xc7, 0x88, 0x47, 0x6d, + 0x7e, 0xe0, 0x49, 0xe0, 0x33, 0x30, 0x7d, 0xc9, 0xcb, 0x1d, 0xb4, 0xf4, 0x50, 0x12, 0xfa, 0xef, + 0x62, 0x3e, 0x20, 0x83, 0x8b, 0x4c, 0xdf, 0x47, 0xe1, 0x4d, 0x12, 0xe4, 0x97, 0xb1, 0x53, 0xec, + 0x74, 0xc2, 0x72, 0x7b, 0xa9, 0xf0, 0xe9, 0x2e, 0xae, 0x12, 0xc5, 0x4e, 0x27, 0xba, 0x51, 0x85, + 0x04, 0xe4, 0x9d, 0x42, 0xe0, 0xd2, 0x04, 0x7d, 0x27, 0x07, 0x14, 0x98, 0xbe, 0xc4, 0xde, 0x2f, + 0xfb, 0x7e, 0x0e, 0x8f, 0x86, 0xcc, 0xa4, 0xdb, 0x82, 0xb8, 0x46, 0x99, 0x78, 0x7f, 0x09, 0x2f, + 0x9f, 0xf2, 0x00, 0x4c, 0xec, 0xda, 0xb8, 0xa4, 0xd9, 0xde, 0xd0, 0xc6, 0xd7, 0xb4, 0x76, 0xe1, + 0x21, 0xdc, 0x72, 0xe6, 0x2b, 0x3b, 0xee, 0xc4, 0x67, 0x83, 0x66, 0xf4, 0x43, 0x05, 0xb1, 0x77, + 0xd5, 0xa3, 0xe0, 0x4e, 0x1e, 0x2f, 0xe9, 0xce, 0x76, 0x69, 0x5b, 0x73, 0xd8, 0x8e, 0x85, 0xff, + 0x8e, 0x5e, 0x34, 0x04, 0x9c, 0xb1, 0x3b, 0xfc, 0x91, 0x87, 0x44, 0x13, 0x83, 0x38, 0x82, 0x6d, + 0xf9, 0x61, 0x40, 0xfc, 0x07, 0x09, 0xb2, 0xb5, 0x2e, 0x36, 0x84, 0x4f, 0x44, 0xf9, 0xb2, 0x95, + 0x7a, 0x64, 0xfb, 0x2a, 0x71, 0x0f, 0x41, 0xbf, 0xd2, 0x6e, 0xc9, 0x11, 0x92, 0xbd, 0x05, 0xb2, + 0xba, 0xb1, 0x69, 0x32, 0xcb, 0xf6, 0xea, 0x08, 0x5b, 0xa7, 0x62, 0x6c, 0x9a, 0x2a, 0xc9, 0x28, + 0xea, 0x1c, 0x18, 0x57, 0x76, 0xfa, 0xe2, 0xfe, 0xda, 0x24, 0xe4, 0xa9, 0x3a, 0xa3, 0x97, 0xc8, + 0x20, 0x17, 0xdb, 0xed, 0x08, 0xc1, 0x4b, 0xfb, 0x04, 0x6f, 0x92, 0xdf, 0x7c, 0x4c, 0xfc, 0x77, + 0x3e, 0xa0, 0x8d, 0x60, 0xdf, 0xce, 0x9a, 0x54, 0xb1, 0xdd, 0x8e, 0xf6, 0x43, 0xf6, 0x0b, 0x94, + 0xf8, 0x02, 0xc3, 0x2d, 0x5c, 0x16, 0x6b, 0xe1, 0x89, 0x07, 0x82, 0x48, 0xfe, 0xd2, 0x87, 0xe8, + 0x9f, 0x24, 0x98, 0x58, 0xd5, 0x6d, 0xc7, 0xc5, 0xa6, 0x28, 0x82, 0xcd, 0x35, 0x30, 0xe5, 0x89, + 0xc6, 0xed, 0xf2, 0xdc, 0xfe, 0x3c, 0x48, 0xe0, 0x67, 0xe2, 0xf7, 0xf3, 0xe8, 0x3c, 0x2d, 0xbe, + 0xf6, 0x8c, 0x8b, 0xe8, 0x93, 0x26, 0x41, 0xb1, 0x52, 0x6f, 0xb1, 0xbf, 0xed, 0x0b, 0x7c, 0x8d, + 0x13, 0xf8, 0x1d, 0xc3, 0x14, 0x99, 0xbe, 0xd0, 0x3f, 0x2d, 0x01, 0xb8, 0x65, 0xb3, 0xe3, 0x7c, + 0x4f, 0xe2, 0x0e, 0xe9, 0xc7, 0x48, 0xf7, 0x65, 0x61, 0xe9, 0xae, 0xf1, 0xd2, 0xfd, 0xc1, 0xc1, + 0x55, 0x8d, 0x3b, 0xb6, 0xa7, 0x14, 0x40, 0xd6, 0x7d, 0xd1, 0xba, 0x8f, 0xe8, 0x4d, 0xbe, 0x50, + 0xd7, 0x39, 0xa1, 0xde, 0x35, 0x64, 0x49, 0xe9, 0xcb, 0xf5, 0x2f, 0x25, 0x98, 0xa8, 0x63, 0xc7, + 0xed, 0x26, 0xd1, 0x39, 0x91, 0x1e, 0x3e, 0xd4, 0xb6, 0x25, 0xc1, 0xb6, 0xfd, 0xcd, 0x8c, 0x68, + 0xb0, 0x9f, 0x40, 0x32, 0x8c, 0xa7, 0x88, 0xd5, 0x87, 0x47, 0x85, 0x82, 0xfd, 0x0c, 0xa2, 0x96, + 0xbe, 0x74, 0xdf, 0x20, 0xf9, 0xee, 0x16, 0xfc, 0x69, 0x9b, 0xb0, 0x59, 0x9c, 0xd9, 0x6f, 0x16, + 0x8b, 0x9f, 0xb6, 0x09, 0xd7, 0x31, 0xda, 0x7b, 0x20, 0xb1, 0xb1, 0x31, 0x82, 0x8d, 0xfd, 0x61, + 0xe4, 0xf5, 0x5c, 0x19, 0xf2, 0x6c, 0x07, 0xe0, 0xde, 0xf8, 0x1d, 0x80, 0xc1, 0x53, 0x8b, 0x77, + 0x0e, 0x61, 0xca, 0xc5, 0x2d, 0xcb, 0xfb, 0x6c, 0x48, 0x21, 0x36, 0x6e, 0x86, 0x1c, 0x89, 0x46, + 0xca, 0xc6, 0xb9, 0xc0, 0x27, 0xc3, 0x23, 0x51, 0x76, 0xbf, 0xaa, 0x34, 0x53, 0x62, 0x14, 0x46, + 0xb0, 0x92, 0x3f, 0x0c, 0x0a, 0x6f, 0x57, 0x00, 0xd6, 0x77, 0x2f, 0x74, 0x74, 0x7b, 0x5b, 0x37, + 0xb6, 0xd0, 0xbf, 0x67, 0x60, 0x86, 0xbd, 0xd2, 0xa0, 0x9a, 0xb1, 0xe6, 0x5f, 0xa4, 0x51, 0x50, + 0x00, 0x79, 0xd7, 0xd2, 0xd9, 0x32, 0x80, 0xfb, 0xa8, 0xdc, 0xed, 0xbb, 0x67, 0x65, 0x7b, 0xc2, + 0x29, 0xb8, 0x62, 0x08, 0x38, 0x98, 0x0f, 0x95, 0x1e, 0xb8, 0x69, 0x85, 0x23, 0xa7, 0xe6, 0xf8, + 0xc8, 0xa9, 0xdc, 0x19, 0xcb, 0x7c, 0xcf, 0x19, 0x4b, 0x17, 0x47, 0x5b, 0x7f, 0x36, 0x26, 0xfe, + 0x3b, 0xb2, 0x4a, 0x9e, 0xdd, 0x3f, 0x1e, 0x32, 0x75, 0x83, 0x6c, 0xea, 0x30, 0xf7, 0xe1, 0x20, + 0x01, 0xbd, 0x2f, 0x98, 0xc8, 0x98, 0x82, 0x56, 0x70, 0x02, 0x31, 0x70, 0x65, 0x67, 0x7b, 0xcb, + 0xfe, 0xa0, 0x70, 0xa4, 0xb4, 0x90, 0xc0, 0x62, 0xa7, 0x24, 0x8c, 0x03, 0xc9, 0xe7, 0x20, 0xb4, + 0x2b, 0x1b, 0xd7, 0x9d, 0x0e, 0xa2, 0x9f, 0x4c, 0x31, 0x77, 0x86, 0x58, 0x7c, 0x51, 0x60, 0xce, + 0x3b, 0x79, 0x5a, 0x5b, 0xb8, 0xbf, 0x5c, 0x6a, 0x14, 0xf0, 0xfe, 0xd3, 0xa8, 0xe4, 0xdc, 0x29, + 0x3d, 0x63, 0x1a, 0x2c, 0xb0, 0xa0, 0xff, 0x29, 0x41, 0x9e, 0xd9, 0x0e, 0xf7, 0x1e, 0x10, 0x42, + 0xf4, 0xf2, 0x61, 0x20, 0x89, 0x0d, 0x00, 0xf0, 0xb1, 0xa4, 0x00, 0x8c, 0xc0, 0x5a, 0x78, 0x30, + 0x35, 0x00, 0xd0, 0xbf, 0x48, 0x90, 0x75, 0x6d, 0x1a, 0xb1, 0xe3, 0xd5, 0x1f, 0x15, 0x76, 0x55, + 0x0e, 0x09, 0xc0, 0x25, 0x1f, 0xa1, 0xdf, 0x0b, 0x30, 0xd5, 0xa5, 0x19, 0xfd, 0xc3, 0xfd, 0xd7, + 0x0b, 0xf4, 0x2c, 0x58, 0x0d, 0x7e, 0x43, 0xef, 0x10, 0x72, 0x77, 0x8e, 0xe7, 0x27, 0x19, 0x1c, + 0xe5, 0x51, 0x9c, 0xc4, 0xde, 0x44, 0xdf, 0x96, 0x00, 0x54, 0x6c, 0x9b, 0x9d, 0x3d, 0xbc, 0x61, + 0xe9, 0xe8, 0xea, 0x00, 0x00, 0xd6, 0xec, 0x33, 0x41, 0xb3, 0xff, 0x44, 0x58, 0xf0, 0xcb, 0xbc, + 0xe0, 0x6f, 0x8b, 0xd6, 0x3c, 0x8f, 0x78, 0x84, 0xf8, 0xef, 0x81, 0x09, 0x26, 0x47, 0x66, 0x20, + 0x8a, 0x09, 0xdf, 0xfb, 0x09, 0xbd, 0xdb, 0x17, 0xfd, 0xfd, 0x9c, 0xe8, 0x9f, 0x9e, 0x98, 0xa3, + 0x64, 0x00, 0x94, 0x86, 0x00, 0xe0, 0x28, 0x4c, 0x7b, 0x00, 0x6c, 0xa8, 0x95, 0x02, 0x46, 0x6f, + 0x95, 0x89, 0xcf, 0x03, 0x1d, 0xa9, 0x0e, 0xde, 0xd3, 0x7c, 0x59, 0x78, 0xe6, 0x1e, 0x92, 0x87, + 0x5f, 0x7e, 0x4a, 0x00, 0xfd, 0xa9, 0xd0, 0x54, 0x5d, 0x80, 0xa1, 0xc7, 0x4b, 0x7f, 0x75, 0xb6, + 0x0c, 0xb3, 0x9c, 0x89, 0xa1, 0x9c, 0x82, 0xe3, 0x5c, 0x02, 0x1d, 0xef, 0xda, 0x85, 0x23, 0x0a, + 0x82, 0x93, 0xdc, 0x17, 0xf6, 0x82, 0xdb, 0x85, 0x0c, 0xfa, 0xc0, 0x67, 0x32, 0xfe, 0xe2, 0xcd, + 0x3b, 0xb3, 0x6c, 0xd9, 0xec, 0xc3, 0x7c, 0x3c, 0xb9, 0x96, 0x69, 0x38, 0xf8, 0xe1, 0x90, 0xcf, + 0x89, 0x9f, 0x10, 0x6b, 0x35, 0x9c, 0x82, 0x09, 0xc7, 0x0a, 0xfb, 0xa1, 0x78, 0xaf, 0x61, 0xc5, + 0xca, 0xf1, 0x8a, 0x55, 0x85, 0xb3, 0xba, 0xd1, 0xea, 0xec, 0xb6, 0xb1, 0x8a, 0x3b, 0x9a, 0x2b, + 0x43, 0xbb, 0x68, 0x2f, 0xe2, 0x2e, 0x36, 0xda, 0xd8, 0x70, 0x28, 0x9f, 0xde, 0x79, 0x36, 0x81, + 0x9c, 0xbc, 0x32, 0xde, 0xcd, 0x2b, 0xe3, 0x93, 0xfa, 0xad, 0xc7, 0xc6, 0x2c, 0xde, 0xdd, 0x01, + 0x40, 0xeb, 0x76, 0x4e, 0xc7, 0x97, 0x98, 0x1a, 0x5e, 0xd5, 0xb3, 0x84, 0x57, 0xf3, 0x33, 0xa8, + 0xa1, 0xcc, 0xe8, 0x31, 0x5f, 0xfd, 0xee, 0xe3, 0xd4, 0xef, 0x66, 0x41, 0x16, 0x92, 0x69, 0x5d, + 0x77, 0x08, 0xad, 0x9b, 0x85, 0xa9, 0x60, 0x6b, 0x58, 0x56, 0xae, 0x82, 0x13, 0x9e, 0x4f, 0x6f, + 0xb5, 0x5c, 0x5e, 0xac, 0x37, 0x37, 0xd6, 0x97, 0xd5, 0xe2, 0x62, 0xb9, 0x00, 0xae, 0x7e, 0x52, + 0xbd, 0xf4, 0x5d, 0x71, 0xb3, 0xe8, 0x33, 0x12, 0xe4, 0xc8, 0x61, 0x4c, 0xf4, 0xa3, 0x23, 0xd2, + 0x1c, 0x9b, 0xf3, 0x60, 0xf2, 0xc7, 0x5d, 0xf1, 0x38, 0xef, 0x4c, 0x98, 0x84, 0xab, 0x03, 0xc5, + 0x79, 0x8f, 0x21, 0x94, 0xfe, 0xb4, 0xc6, 0x6d, 0x92, 0xf5, 0x6d, 0xf3, 0xd2, 0xf7, 0x72, 0x93, + 0x74, 0xeb, 0x7f, 0xc8, 0x4d, 0xb2, 0x0f, 0x0b, 0x63, 0x6f, 0x92, 0x7d, 0xda, 0x5d, 0x4c, 0x33, + 0x45, 0xcf, 0xc9, 0xf9, 0xf3, 0xbf, 0xe7, 0x49, 0x07, 0xda, 0xc8, 0x2a, 0xc2, 0xac, 0x6e, 0x38, + 0xd8, 0x32, 0xb4, 0xce, 0x52, 0x47, 0xdb, 0xf2, 0xec, 0xd3, 0xde, 0xdd, 0x8b, 0x4a, 0x28, 0x8f, + 0xca, 0xff, 0xa1, 0x9c, 0x06, 0x70, 0xf0, 0x4e, 0xb7, 0xa3, 0x39, 0x81, 0xea, 0x85, 0x52, 0xc2, + 0xda, 0x97, 0xe5, 0xb5, 0xef, 0x56, 0xb8, 0x82, 0x82, 0xd6, 0xb8, 0xdc, 0xc5, 0x1b, 0x86, 0xfe, + 0x63, 0xbb, 0x24, 0xfc, 0x28, 0xd5, 0xd1, 0x7e, 0x9f, 0xb8, 0xed, 0x9c, 0x7c, 0xcf, 0x76, 0xce, + 0x3f, 0x08, 0x87, 0x35, 0xf1, 0x5a, 0xfd, 0x80, 0xb0, 0x26, 0x7e, 0x4b, 0x93, 0x7b, 0x5a, 0x9a, + 0xbf, 0xc8, 0x92, 0x15, 0x58, 0x64, 0x09, 0xa3, 0x92, 0x13, 0x5c, 0xa0, 0x7c, 0xa5, 0x50, 0xdc, + 0x94, 0xb8, 0x6a, 0x8c, 0x61, 0x01, 0x5c, 0x86, 0x39, 0x5a, 0xf4, 0x82, 0x69, 0x5e, 0xdc, 0xd1, + 0xac, 0x8b, 0xc8, 0x3a, 0x90, 0x2a, 0xc6, 0xee, 0x25, 0x45, 0x6e, 0x90, 0x7e, 0x5c, 0x78, 0xce, + 0xc0, 0x89, 0xcb, 0xe3, 0x79, 0x3c, 0x9b, 0x49, 0xaf, 0x13, 0x9a, 0x42, 0x88, 0x30, 0x98, 0x3e, + 0xae, 0x7f, 0xec, 0xe3, 0xea, 0x75, 0xf4, 0xe1, 0x75, 0xf8, 0x51, 0xe2, 0x8a, 0xbe, 0x30, 0x1c, + 0x76, 0x1e, 0x5f, 0x43, 0x60, 0x57, 0x00, 0xf9, 0xa2, 0xef, 0xfa, 0xe3, 0x3e, 0x86, 0x2b, 0x94, + 0x4d, 0x0f, 0xcd, 0x08, 0x96, 0xc7, 0x82, 0xe6, 0x71, 0x9e, 0x85, 0x5a, 0x37, 0x55, 0x4c, 0x3f, + 0x2f, 0xbc, 0xbf, 0xd5, 0x57, 0x40, 0x94, 0xbb, 0xf1, 0xb4, 0x4a, 0xb1, 0xcd, 0x31, 0x71, 0x36, + 0xd3, 0x47, 0xf3, 0x85, 0x39, 0x98, 0xf2, 0x02, 0xcf, 0x90, 0x7b, 0x91, 0x7c, 0x0c, 0x4f, 0x42, + 0xde, 0x36, 0x77, 0xad, 0x16, 0x66, 0x3b, 0x8e, 0xec, 0x6d, 0x88, 0xdd, 0xb1, 0x81, 0xe3, 0xf9, + 0x3e, 0x93, 0x21, 0x9b, 0xd8, 0x64, 0x88, 0x36, 0x48, 0xe3, 0x06, 0xf8, 0x17, 0x09, 0x07, 0xb3, + 0xe7, 0x30, 0xab, 0x63, 0xe7, 0xf1, 0x38, 0xc6, 0xff, 0x81, 0xd0, 0xde, 0xcb, 0x80, 0x9a, 0x24, + 0x53, 0xb9, 0xda, 0x10, 0x86, 0xea, 0xd5, 0x70, 0xa5, 0x97, 0x83, 0x59, 0xa8, 0xc4, 0x22, 0xdd, + 0x50, 0x57, 0x0b, 0x32, 0x7a, 0x6e, 0x16, 0x0a, 0x94, 0xb5, 0x9a, 0x6f, 0xac, 0xa1, 0x97, 0x66, + 0x0e, 0xdb, 0x22, 0x8d, 0x9e, 0x62, 0x7e, 0x52, 0x12, 0x0d, 0x98, 0xcb, 0x09, 0x3e, 0xa8, 0x5d, + 0x84, 0x26, 0x0d, 0xd1, 0xcc, 0x62, 0x94, 0x0f, 0xfd, 0x56, 0x46, 0x24, 0xfe, 0xae, 0x18, 0x8b, + 0x63, 0x08, 0x96, 0x94, 0xf5, 0xe2, 0x87, 0x2d, 0x59, 0xe6, 0xce, 0x86, 0xd5, 0x41, 0xff, 0xa7, + 0x50, 0x78, 0xf3, 0x08, 0xf3, 0x5f, 0x8a, 0x36, 0xff, 0xc9, 0x92, 0x71, 0x27, 0xd8, 0xab, 0xea, + 0x0c, 0x31, 0x7c, 0x2b, 0x37, 0xc0, 0x9c, 0xd6, 0x6e, 0xaf, 0x6b, 0x5b, 0xb8, 0xe4, 0xce, 0xab, + 0x0d, 0x87, 0xc5, 0x16, 0xea, 0x49, 0x8d, 0xed, 0x8a, 0xc4, 0xd7, 0x41, 0x39, 0x90, 0x98, 0x7c, + 0xc6, 0x32, 0xbc, 0xb9, 0x43, 0x42, 0x6b, 0x5b, 0x0b, 0x22, 0x9d, 0xb1, 0x37, 0x41, 0xcf, 0x26, + 0x01, 0xbe, 0xd3, 0xd7, 0xac, 0xdf, 0x93, 0x60, 0xc2, 0x95, 0x77, 0xb1, 0xdd, 0x46, 0x4f, 0xe4, + 0x02, 0x02, 0x46, 0xfa, 0x96, 0xfd, 0xb4, 0xb0, 0x53, 0x9f, 0x57, 0x43, 0x4a, 0x3f, 0x02, 0x93, + 0x40, 0x88, 0x12, 0x27, 0x44, 0x31, 0xdf, 0xbd, 0xd8, 0x22, 0xd2, 0x17, 0xdf, 0x47, 0x25, 0x98, + 0xf5, 0xe6, 0x11, 0x4b, 0xd8, 0x69, 0x6d, 0xa3, 0x3b, 0x44, 0x17, 0x9a, 0x58, 0x4b, 0xf3, 0xf7, + 0x64, 0x3b, 0xe8, 0x3b, 0x99, 0x84, 0x2a, 0xcf, 0x95, 0x1c, 0xb1, 0x4a, 0x97, 0x48, 0x17, 0xe3, + 0x08, 0xa6, 0x2f, 0xcc, 0xc7, 0x24, 0x80, 0x86, 0xe9, 0xcf, 0x75, 0x0f, 0x20, 0xc9, 0x5f, 0x10, + 0xde, 0xae, 0x65, 0x15, 0x0f, 0x8a, 0x4d, 0xde, 0x73, 0x08, 0xba, 0x26, 0x0d, 0x2a, 0x69, 0x2c, + 0x6d, 0x7d, 0x6a, 0x71, 0xb7, 0xdb, 0xd1, 0x5b, 0x9a, 0xd3, 0xeb, 0x4f, 0x17, 0x2d, 0x5e, 0x72, + 0x69, 0x68, 0x22, 0xa3, 0xd0, 0x2f, 0x23, 0x42, 0x96, 0x34, 0xf4, 0x8c, 0xe4, 0x85, 0x9e, 0x11, + 0xf4, 0x91, 0x19, 0x40, 0x7c, 0x0c, 0xea, 0x29, 0xc3, 0xd1, 0x5a, 0x17, 0x1b, 0x0b, 0x16, 0xd6, + 0xda, 0x2d, 0x6b, 0x77, 0xe7, 0x82, 0x1d, 0x76, 0x06, 0x8d, 0xd7, 0xd1, 0xd0, 0xd2, 0xb1, 0xc4, + 0x2d, 0x1d, 0xa3, 0x9f, 0x92, 0x45, 0x03, 0x21, 0x85, 0x36, 0x38, 0x42, 0x3c, 0x0c, 0x31, 0xd4, + 0x25, 0x72, 0x61, 0xea, 0x59, 0x25, 0xce, 0x26, 0x59, 0x25, 0x7e, 0xbd, 0x50, 0x58, 0x25, 0xa1, + 0x7a, 0x8d, 0xc5, 0x13, 0x6d, 0xae, 0x8e, 0x9d, 0x08, 0x78, 0xaf, 0x87, 0xd9, 0x0b, 0xc1, 0x17, + 0x1f, 0x62, 0x3e, 0xb1, 0x8f, 0x7f, 0xe8, 0x1b, 0x92, 0xae, 0xc0, 0xf0, 0x2c, 0x44, 0xa0, 0xeb, + 0x23, 0x28, 0x89, 0x38, 0xa1, 0x25, 0x5a, 0x4e, 0x89, 0x2d, 0x3f, 0x7d, 0x14, 0x3e, 0x28, 0xc1, + 0x34, 0xb9, 0x0a, 0x75, 0xe1, 0x32, 0x39, 0x16, 0x29, 0x68, 0x94, 0xbc, 0x30, 0x2c, 0x66, 0x05, + 0xb2, 0x1d, 0xdd, 0xb8, 0xe8, 0x79, 0x0f, 0xba, 0xcf, 0xc1, 0xc5, 0x7a, 0x52, 0x9f, 0x8b, 0xf5, + 0xfc, 0x7d, 0x0a, 0xbf, 0xdc, 0x03, 0xdd, 0xf4, 0x3c, 0x90, 0x5c, 0xfa, 0x62, 0xfc, 0xbb, 0x2c, + 0xe4, 0xeb, 0x58, 0xb3, 0x5a, 0xdb, 0xe8, 0x9d, 0x52, 0xdf, 0xa9, 0xc2, 0x24, 0x3f, 0x55, 0x58, + 0x82, 0x89, 0x4d, 0xbd, 0xe3, 0x60, 0x8b, 0x7a, 0x54, 0x87, 0xbb, 0x76, 0xda, 0xc4, 0x17, 0x3a, + 0x66, 0xeb, 0xe2, 0x3c, 0x33, 0xdd, 0xe7, 0xbd, 0x40, 0xac, 0xf3, 0x4b, 0xe4, 0x27, 0xd5, 0xfb, + 0xd9, 0x35, 0x08, 0x6d, 0xd3, 0x72, 0xa2, 0xee, 0xd8, 0x88, 0xa0, 0x52, 0x37, 0x2d, 0x47, 0xa5, + 0x3f, 0xba, 0x30, 0x6f, 0xee, 0x76, 0x3a, 0x0d, 0xfc, 0xb0, 0xe3, 0x4d, 0xdb, 0xbc, 0x77, 0xd7, + 0x58, 0x34, 0x37, 0x37, 0x6d, 0x4c, 0x17, 0x0d, 0x72, 0x2a, 0x7b, 0x53, 0x8e, 0x43, 0xae, 0xa3, + 0xef, 0xe8, 0x74, 0xa2, 0x91, 0x53, 0xe9, 0x8b, 0x72, 0x13, 0x14, 0x82, 0x39, 0x0e, 0x65, 0xf4, + 0x54, 0x9e, 0x34, 0xcd, 0x7d, 0xe9, 0xae, 0xce, 0x5c, 0xc4, 0x97, 0xed, 0x53, 0x13, 0xe4, 0x3b, + 0x79, 0xe6, 0x8f, 0xaf, 0x88, 0xec, 0x77, 0x50, 0x89, 0x47, 0xcf, 0x60, 0x2d, 0xdc, 0x32, 0xad, + 0xb6, 0x27, 0x9b, 0xe8, 0x09, 0x06, 0xcb, 0x97, 0x6c, 0x97, 0xa2, 0x6f, 0xe1, 0xe9, 0x6b, 0xda, + 0xdb, 0xf2, 0x6e, 0xb7, 0xe9, 0x16, 0x7d, 0x5e, 0x77, 0xb6, 0xd7, 0xb0, 0xa3, 0xa1, 0xbf, 0x93, + 0xfb, 0x6a, 0xdc, 0xf4, 0xff, 0xa7, 0x71, 0x03, 0x34, 0x8e, 0x86, 0xc1, 0x72, 0x76, 0x2d, 0xc3, + 0x95, 0x23, 0xf3, 0x4a, 0x0d, 0xa5, 0x28, 0x77, 0xc1, 0x55, 0xc1, 0x9b, 0xb7, 0x54, 0xba, 0xc8, + 0xa6, 0xad, 0x53, 0x24, 0x7b, 0x74, 0x06, 0x65, 0x1d, 0xae, 0xa3, 0x1f, 0x57, 0x1a, 0x6b, 0xab, + 0x2b, 0xfa, 0xd6, 0x76, 0x47, 0xdf, 0xda, 0x76, 0xec, 0x8a, 0x61, 0x3b, 0x58, 0x6b, 0xd7, 0x36, + 0x55, 0x7a, 0x3b, 0x0e, 0x10, 0x3a, 0x22, 0x59, 0x79, 0x8f, 0x6b, 0xb1, 0xd1, 0x2d, 0xac, 0x29, + 0x11, 0x2d, 0xe5, 0xe9, 0x6e, 0x4b, 0xb1, 0x77, 0x3b, 0x3e, 0xa6, 0xd7, 0xf4, 0x60, 0x1a, 0xa8, + 0xfa, 0x6e, 0x87, 0x34, 0x17, 0x92, 0x39, 0xe9, 0x38, 0x17, 0xc3, 0x49, 0xfa, 0xcd, 0xe6, 0xff, + 0xc9, 0x43, 0x6e, 0xd9, 0xd2, 0xba, 0xdb, 0xe8, 0xb9, 0xa1, 0xfe, 0x79, 0x54, 0x6d, 0xc2, 0xd7, + 0x4e, 0x69, 0x90, 0x76, 0xca, 0x03, 0xb4, 0x33, 0x1b, 0xd2, 0xce, 0xe8, 0x45, 0xe5, 0xb3, 0x30, + 0xd3, 0x32, 0x3b, 0x1d, 0xdc, 0x72, 0xe5, 0x51, 0x69, 0x93, 0xd5, 0x9c, 0x29, 0x95, 0x4b, 0x23, + 0xc1, 0xaa, 0xb1, 0x53, 0xa7, 0x6b, 0xe8, 0x54, 0xe9, 0x83, 0x04, 0xf4, 0x52, 0x09, 0xb2, 0xe5, + 0xf6, 0x16, 0xe6, 0xd6, 0xd9, 0x33, 0xa1, 0x75, 0xf6, 0x93, 0x90, 0x77, 0x34, 0x6b, 0x0b, 0x3b, + 0xde, 0x3a, 0x01, 0x7d, 0xf3, 0x63, 0x68, 0xcb, 0xa1, 0x18, 0xda, 0x3f, 0x08, 0x59, 0x57, 0x66, + 0xcc, 0xc9, 0xfc, 0xba, 0x7e, 0xf0, 0x13, 0xd9, 0xcf, 0xbb, 0x25, 0xce, 0xbb, 0xb5, 0x56, 0xc9, + 0x0f, 0xbd, 0x58, 0xe7, 0xf6, 0x61, 0x4d, 0x2e, 0xfa, 0x6c, 0x99, 0x46, 0x65, 0x47, 0xdb, 0xc2, + 0xac, 0x9a, 0x41, 0x82, 0xf7, 0xb5, 0xbc, 0x63, 0x3e, 0xa4, 0xb3, 0x68, 0x91, 0x41, 0x82, 0x5b, + 0x85, 0x6d, 0xbd, 0xdd, 0xc6, 0x06, 0x6b, 0xd9, 0xec, 0xed, 0xec, 0x69, 0xc8, 0xba, 0x3c, 0xb8, + 0xfa, 0xe3, 0x1a, 0x0b, 0x85, 0x23, 0xca, 0x8c, 0xdb, 0xac, 0x68, 0xe3, 0x2d, 0x64, 0xf8, 0x35, + 0x55, 0x11, 0xb7, 0x1d, 0x5a, 0xb9, 0xfe, 0x8d, 0xeb, 0x29, 0x90, 0x33, 0xcc, 0x36, 0x1e, 0x38, + 0x08, 0xd1, 0x5c, 0xca, 0xd3, 0x20, 0x87, 0xdb, 0x6e, 0xaf, 0x20, 0x93, 0xec, 0xa7, 0xe3, 0x65, + 0xa9, 0xd2, 0xcc, 0xc9, 0x7c, 0x83, 0xfa, 0x71, 0x9b, 0x7e, 0x03, 0xfc, 0xd9, 0x09, 0x38, 0x4a, + 0xfb, 0x80, 0xfa, 0xee, 0x05, 0x97, 0xd4, 0x05, 0x8c, 0x1e, 0xed, 0x3f, 0x70, 0x1d, 0xe5, 0x95, + 0xfd, 0x38, 0xe4, 0xec, 0xdd, 0x0b, 0xbe, 0x11, 0x4a, 0x5f, 0xc2, 0x4d, 0x57, 0x1a, 0xc9, 0x70, + 0x26, 0x0f, 0x3b, 0x9c, 0x71, 0x43, 0x93, 0xec, 0x35, 0xfe, 0x60, 0x20, 0xa3, 0xc7, 0x23, 0xbc, + 0x81, 0xac, 0xdf, 0x30, 0x74, 0x0a, 0x26, 0xb4, 0x4d, 0x07, 0x5b, 0x81, 0x99, 0xc8, 0x5e, 0xdd, + 0xa1, 0xf2, 0x02, 0xde, 0x34, 0x2d, 0x57, 0x2c, 0x34, 0x84, 0xba, 0xff, 0x1e, 0x6a, 0xb9, 0xc0, + 0xed, 0x90, 0xdd, 0x0c, 0xc7, 0x0c, 0x73, 0x11, 0x77, 0x99, 0x9c, 0x29, 0x8a, 0xb3, 0xa4, 0x05, + 0xec, 0xff, 0xb0, 0xaf, 0x2b, 0x99, 0xdb, 0xdf, 0x95, 0xa0, 0x4f, 0x24, 0x9d, 0x33, 0xf7, 0x00, + 0x3d, 0x32, 0x0b, 0x4d, 0x79, 0x26, 0xcc, 0xb4, 0x99, 0x8b, 0x56, 0x4b, 0xf7, 0x5b, 0x49, 0xe4, + 0x7f, 0x5c, 0xe6, 0x40, 0x91, 0xb2, 0x61, 0x45, 0x5a, 0x86, 0x49, 0x72, 0x90, 0xd9, 0xd5, 0xa4, + 0x5c, 0x8f, 0x4b, 0x3c, 0x99, 0xd6, 0xf9, 0x95, 0x0a, 0x89, 0x6d, 0xbe, 0xc4, 0x7e, 0x51, 0xfd, + 0x9f, 0x93, 0xcd, 0xbe, 0xe3, 0x25, 0x94, 0x7e, 0x73, 0xfc, 0xed, 0x3c, 0x5c, 0x55, 0xb2, 0x4c, + 0xdb, 0x26, 0x67, 0x60, 0x7a, 0x1b, 0xe6, 0x6b, 0x25, 0xee, 0x36, 0x8d, 0xc7, 0x75, 0xf3, 0xeb, + 0xd7, 0xa0, 0xc6, 0xd7, 0x34, 0xbe, 0x2c, 0x1c, 0x02, 0xc6, 0xdf, 0x7f, 0x88, 0x10, 0xfa, 0xf7, + 0x46, 0x23, 0x79, 0x5b, 0x46, 0x24, 0x2a, 0x4d, 0x42, 0x59, 0xa5, 0xdf, 0x5c, 0x3e, 0x2f, 0xc1, + 0xd5, 0xbd, 0xdc, 0x6c, 0x18, 0xb6, 0xdf, 0x60, 0xae, 0x1d, 0xd0, 0x5e, 0xf8, 0x28, 0x26, 0xb1, + 0xf7, 0x58, 0x46, 0xd4, 0x3d, 0x54, 0x5a, 0xc4, 0x62, 0x49, 0x70, 0xa2, 0x26, 0xee, 0x1e, 0xcb, + 0xc4, 0xe4, 0xd3, 0x17, 0xee, 0x27, 0xb3, 0x70, 0x74, 0xd9, 0x32, 0x77, 0xbb, 0x76, 0xd0, 0x03, + 0xfd, 0x75, 0xff, 0x0d, 0xd7, 0xbc, 0x88, 0x69, 0x70, 0x06, 0xa6, 0x2d, 0x66, 0xcd, 0x05, 0xdb, + 0xaf, 0xe1, 0xa4, 0x70, 0xef, 0x25, 0x1f, 0xa4, 0xf7, 0x0a, 0xfa, 0x99, 0x2c, 0xd7, 0xcf, 0xf4, + 0xf6, 0x1c, 0xb9, 0x3e, 0x3d, 0xc7, 0x5f, 0x49, 0x09, 0x07, 0xd5, 0x1e, 0x11, 0x45, 0xf4, 0x17, + 0x25, 0xc8, 0x6f, 0x91, 0x8c, 0xac, 0xbb, 0x78, 0xb2, 0x58, 0xcd, 0x08, 0x71, 0x95, 0xfd, 0x1a, + 0xc8, 0x55, 0x0e, 0xeb, 0x70, 0xa2, 0x01, 0x2e, 0x9e, 0xdb, 0xf4, 0x95, 0xea, 0x55, 0x59, 0x98, + 0xf1, 0x4b, 0xaf, 0xb4, 0x6d, 0xf4, 0xc2, 0xfe, 0x1a, 0x35, 0x2b, 0xa2, 0x51, 0xfb, 0xd6, 0x99, + 0xfd, 0x51, 0x47, 0x0e, 0x8d, 0x3a, 0x7d, 0x47, 0x97, 0x99, 0x88, 0xd1, 0x05, 0x3d, 0x47, 0x16, + 0xbd, 0x8f, 0x8a, 0xef, 0x5a, 0x49, 0x6d, 0x1e, 0xcf, 0x83, 0x85, 0xe0, 0xad, 0x58, 0x83, 0x6b, + 0x95, 0xbe, 0x92, 0xbc, 0x47, 0x82, 0x63, 0xfb, 0x3b, 0xf3, 0xef, 0xe3, 0xbd, 0xd0, 0xdc, 0x3a, + 0xd9, 0xbe, 0x17, 0x1a, 0x79, 0xe3, 0x37, 0xe9, 0x62, 0x43, 0x8a, 0x70, 0xf6, 0xde, 0xe0, 0x4e, + 0x5c, 0x2c, 0x68, 0x88, 0x20, 0xd1, 0xf4, 0x05, 0xf8, 0x8b, 0x32, 0x4c, 0xd5, 0xb1, 0xb3, 0xaa, + 0x5d, 0x36, 0x77, 0x1d, 0xa4, 0x89, 0x6e, 0xcf, 0x3d, 0x03, 0xf2, 0x1d, 0xf2, 0x0b, 0xbb, 0xe6, + 0xff, 0x4c, 0xdf, 0xfd, 0x2d, 0xe2, 0xfb, 0x43, 0x49, 0xab, 0x2c, 0x3f, 0x1f, 0xcb, 0x45, 0x64, + 0x77, 0xd4, 0xe7, 0x6e, 0x24, 0x5b, 0x3b, 0x89, 0xf6, 0x4e, 0xa3, 0x8a, 0x4e, 0x1f, 0x96, 0x9f, + 0x92, 0x61, 0xb6, 0x8e, 0x9d, 0x8a, 0xbd, 0xa4, 0xed, 0x99, 0x96, 0xee, 0xe0, 0xf0, 0x3d, 0x9f, + 0xf1, 0xd0, 0x9c, 0x06, 0xd0, 0xfd, 0xdf, 0x58, 0x84, 0xa9, 0x50, 0x0a, 0xfa, 0xad, 0xa4, 0x8e, + 0x42, 0x1c, 0x1f, 0x23, 0x01, 0x21, 0x91, 0x8f, 0x45, 0x5c, 0xf1, 0xe9, 0x03, 0xf1, 0x39, 0x89, + 0x01, 0x51, 0xb4, 0x5a, 0xdb, 0xfa, 0x1e, 0x6e, 0x27, 0x04, 0xc2, 0xfb, 0x2d, 0x00, 0xc2, 0x27, + 0x94, 0xd8, 0x7d, 0x85, 0xe3, 0x63, 0x14, 0xee, 0x2b, 0x71, 0x04, 0xc7, 0x12, 0x24, 0xca, 0xed, + 0x7a, 0xd8, 0x7a, 0xe6, 0xbd, 0xa2, 0x62, 0x0d, 0x4c, 0x36, 0x29, 0x6c, 0xb2, 0x0d, 0xd5, 0xb1, + 0xd0, 0xb2, 0x07, 0xe9, 0x74, 0x36, 0x8d, 0x8e, 0xa5, 0x6f, 0xd1, 0xe9, 0x0b, 0xfd, 0x1d, 0x32, + 0x9c, 0xf0, 0xa3, 0xa7, 0xd4, 0xb1, 0xb3, 0xa8, 0xd9, 0xdb, 0x17, 0x4c, 0xcd, 0x6a, 0xa3, 0xd2, + 0x08, 0x4e, 0xfc, 0xa1, 0xcf, 0x86, 0x41, 0xa8, 0xf2, 0x20, 0xf4, 0x75, 0x15, 0xed, 0xcb, 0xcb, + 0x28, 0x3a, 0x99, 0x58, 0x6f, 0xd6, 0xdf, 0xf1, 0xc1, 0xfa, 0x21, 0x0e, 0xac, 0xbb, 0x87, 0x65, + 0x31, 0x7d, 0xe0, 0x7e, 0x85, 0x8e, 0x08, 0x21, 0xaf, 0xe6, 0x07, 0x45, 0x01, 0x8b, 0xf0, 0x6a, + 0x95, 0x23, 0xbd, 0x5a, 0x87, 0x1a, 0x23, 0x06, 0x7a, 0x24, 0xa7, 0x3b, 0x46, 0x1c, 0xa2, 0xb7, + 0xf1, 0x5b, 0x64, 0x28, 0x90, 0xf0, 0x59, 0x21, 0x8f, 0xef, 0x70, 0x34, 0xea, 0x78, 0x74, 0xf6, + 0x79, 0x97, 0x4f, 0x24, 0xf5, 0x2e, 0x47, 0x6f, 0x4e, 0xea, 0x43, 0xde, 0xcb, 0xed, 0x48, 0x10, + 0x4b, 0xe4, 0x22, 0x3e, 0x80, 0x83, 0xf4, 0x41, 0xfb, 0x6f, 0x32, 0x80, 0xdb, 0xa0, 0xd9, 0xd9, + 0x87, 0x67, 0x89, 0xc2, 0x75, 0x4b, 0xd8, 0xaf, 0xde, 0x05, 0xea, 0x44, 0x0f, 0x50, 0x94, 0x62, + 0x70, 0xaa, 0xe2, 0xd1, 0xa4, 0xbe, 0x95, 0x01, 0x57, 0x23, 0x81, 0x25, 0x91, 0xb7, 0x65, 0x64, + 0xd9, 0xe9, 0x03, 0xf2, 0x3f, 0x24, 0xc8, 0x35, 0xcc, 0x3a, 0x76, 0x0e, 0x6e, 0x0a, 0x24, 0x3e, + 0xb6, 0x4f, 0xca, 0x1d, 0xc5, 0xb1, 0xfd, 0x7e, 0x84, 0xc6, 0x10, 0x8d, 0x4c, 0x82, 0x99, 0x86, + 0x59, 0xf2, 0x17, 0xa7, 0xc4, 0x7d, 0x55, 0xc5, 0xef, 0xd4, 0xf6, 0x2b, 0x18, 0x14, 0x73, 0xa0, + 0x3b, 0xb5, 0x07, 0xd3, 0x4b, 0x5f, 0x6e, 0x77, 0xc0, 0xd1, 0x0d, 0xa3, 0x6d, 0xaa, 0xb8, 0x6d, + 0xb2, 0x95, 0x6e, 0x45, 0x81, 0xec, 0xae, 0xd1, 0x36, 0x09, 0xcb, 0x39, 0x95, 0x3c, 0xbb, 0x69, + 0x16, 0x6e, 0x9b, 0xcc, 0x37, 0x80, 0x3c, 0xa3, 0x2f, 0xcb, 0x90, 0x75, 0xff, 0x15, 0x17, 0xf5, + 0x5b, 0xe4, 0x84, 0x81, 0x08, 0x5c, 0xf2, 0x23, 0xb1, 0x84, 0xee, 0x0d, 0xad, 0xfd, 0x53, 0x0f, + 0xd6, 0xeb, 0xa2, 0xca, 0x0b, 0x89, 0x22, 0x58, 0xf3, 0x57, 0x4e, 0xc1, 0xc4, 0x85, 0x8e, 0xd9, + 0xba, 0x18, 0x9c, 0x97, 0x67, 0xaf, 0xca, 0x4d, 0x90, 0xb3, 0x34, 0x63, 0x0b, 0xb3, 0x3d, 0x85, + 0xe3, 0x3d, 0x7d, 0x21, 0xf1, 0x7a, 0x51, 0x69, 0x16, 0xf4, 0xe6, 0x24, 0x21, 0x10, 0xfa, 0x54, + 0x3e, 0x99, 0x3e, 0x2c, 0x0e, 0x71, 0xb2, 0xac, 0x00, 0x33, 0xa5, 0x22, 0xbd, 0xbd, 0x7e, 0xad, + 0x76, 0xae, 0x5c, 0x90, 0x09, 0xcc, 0xae, 0x4c, 0x52, 0x84, 0xd9, 0x25, 0xff, 0x3d, 0x0b, 0x73, + 0x9f, 0xca, 0x1f, 0x06, 0xcc, 0x1f, 0x95, 0x60, 0x76, 0x55, 0xb7, 0x9d, 0x28, 0x6f, 0xff, 0x98, + 0xe8, 0xb9, 0x2f, 0x4a, 0x6a, 0x2a, 0x73, 0xe5, 0x08, 0x87, 0xcd, 0x4d, 0x64, 0x0e, 0xc7, 0x15, + 0x31, 0x9e, 0x63, 0x29, 0x84, 0x03, 0x7a, 0x87, 0xb4, 0xb0, 0x24, 0x13, 0x1b, 0x4a, 0x41, 0x21, + 0xe3, 0x37, 0x94, 0x22, 0xcb, 0x4e, 0x5f, 0xbe, 0x5f, 0x96, 0xe0, 0x98, 0x5b, 0x7c, 0xdc, 0xb2, + 0x54, 0xb4, 0x98, 0x07, 0x2e, 0x4b, 0x25, 0x5e, 0x19, 0xdf, 0xc7, 0xcb, 0x28, 0x56, 0xc6, 0x07, + 0x11, 0x1d, 0xb3, 0x98, 0x23, 0x96, 0x61, 0x07, 0x89, 0x39, 0x66, 0x19, 0x76, 0x78, 0x31, 0xc7, + 0x2f, 0xc5, 0x0e, 0x29, 0xe6, 0x43, 0x5b, 0x60, 0x7d, 0x8d, 0xec, 0x8b, 0x39, 0x72, 0x6d, 0x23, + 0x46, 0xcc, 0x89, 0x4f, 0xec, 0xa2, 0xb7, 0x0e, 0x29, 0xf8, 0x11, 0xaf, 0x6f, 0x0c, 0x03, 0xd3, + 0x21, 0xae, 0x71, 0xfc, 0xaa, 0x0c, 0x73, 0x8c, 0x8b, 0xfe, 0x53, 0xe6, 0x18, 0x8c, 0x12, 0x4f, + 0x99, 0x13, 0x9f, 0x01, 0xe2, 0x39, 0x1b, 0xff, 0x19, 0xa0, 0xd8, 0xf2, 0xd3, 0x07, 0xe7, 0x2b, + 0x59, 0x38, 0xe9, 0xb2, 0xb0, 0x66, 0xb6, 0xf5, 0xcd, 0xcb, 0x94, 0x8b, 0x73, 0x5a, 0x67, 0x17, + 0xdb, 0xe8, 0x5d, 0x92, 0x28, 0x4a, 0xff, 0x09, 0xc0, 0xec, 0x62, 0x8b, 0x06, 0x52, 0x63, 0x40, + 0xdd, 0x15, 0x55, 0xd9, 0xfd, 0x25, 0xf9, 0x97, 0xc9, 0xd4, 0x3c, 0x22, 0x6a, 0x88, 0x9e, 0x6b, + 0x15, 0x4e, 0xf9, 0x5f, 0x7a, 0x1d, 0x3c, 0x32, 0xfb, 0x1d, 0x3c, 0x6e, 0x04, 0x59, 0x6b, 0xb7, 0x7d, 0xa8, 0x7a, 0x37, 0xb3, 0x49, 0x99, 0xaa, 0x9b, 0xc5, 0xcd, 0x69, 0xe3, 0xe0, 0x68, 0x5e, 0x44, 0x4e, 0x1b, 0x3b, 0xca, 0x3c, 0xe4, 0xe9, 0x0d, 0xd9, 0xfe, 0x8a, 0x7e, 0xff, 0xcc, 0x2c, - 0x17, 0x6f, 0xda, 0xd5, 0x78, 0x35, 0xbc, 0x33, 0x91, 0x64, 0xfa, 0xf5, 0xd3, 0x81, 0x9d, 0xac, - 0x72, 0x0a, 0x76, 0xef, 0xd0, 0x94, 0xc7, 0xb3, 0x1b, 0x56, 0xec, 0x76, 0x3b, 0xfb, 0x0d, 0x16, - 0x7c, 0x25, 0xd1, 0x6e, 0x58, 0x28, 0x86, 0x8b, 0xd4, 0x1b, 0xc3, 0x25, 0xf9, 0x6e, 0x18, 0xc7, - 0xc7, 0x28, 0x76, 0xc3, 0xe2, 0x08, 0xa6, 0x2f, 0xda, 0xaf, 0xe4, 0xa9, 0xd5, 0xcc, 0x62, 0xfb, - 0xbf, 0xa1, 0xbf, 0x67, 0x35, 0xf0, 0xce, 0x2e, 0xfd, 0xc2, 0xfe, 0xc7, 0xde, 0x69, 0xa2, 0x3c, - 0x13, 0xf2, 0x9b, 0xa6, 0xb5, 0xa3, 0x79, 0x1b, 0xf7, 0xbd, 0x27, 0x45, 0x58, 0x3c, 0xfd, 0x25, - 0x92, 0x47, 0x65, 0x79, 0xdd, 0xf9, 0xc8, 0xf3, 0xf4, 0x2e, 0x8b, 0xba, 0xe8, 0x3e, 0x2a, 0x37, - 0xc2, 0x2c, 0x0b, 0xbe, 0x58, 0xc5, 0xb6, 0x83, 0xdb, 0x2c, 0x62, 0x05, 0x9f, 0xa8, 0x9c, 0x87, - 0x19, 0x96, 0xb0, 0xa4, 0x77, 0xb0, 0xcd, 0x82, 0x56, 0x70, 0x69, 0xca, 0x69, 0xc8, 0xeb, 0xf6, - 0x03, 0xb6, 0x69, 0x10, 0xff, 0xff, 0x49, 0x95, 0xbd, 0x29, 0x37, 0xc3, 0x71, 0x96, 0xcf, 0x37, - 0x56, 0xe9, 0x81, 0x9d, 0xde, 0x64, 0x57, 0xb5, 0x0c, 0x73, 0xdd, 0x32, 0xb7, 0x2c, 0x6c, 0xdb, - 0xe4, 0xd4, 0xd4, 0xa4, 0x1a, 0x4a, 0x51, 0x1e, 0x82, 0x13, 0x1d, 0xdd, 0xb8, 0x6c, 0x93, 0x20, - 0xbd, 0x4b, 0xcc, 0x6d, 0x6c, 0xa6, 0x4f, 0xf0, 0xec, 0x50, 0x63, 0x63, 0x72, 0x08, 0xff, 0xa2, - 0x1e, 0xa4, 0x82, 0xda, 0x30, 0x13, 0x7e, 0x57, 0xe6, 0x41, 0xf1, 0x7a, 0x31, 0xfb, 0xe2, 0xb6, - 0xee, 0x60, 0x97, 0x16, 0xeb, 0x6b, 0xfb, 0x7c, 0x71, 0xc5, 0x68, 0x1a, 0x9d, 0x7d, 0xd5, 0x34, - 0x1d, 0xe2, 0xd7, 0xc5, 0x0c, 0x45, 0x3e, 0x11, 0x7d, 0x62, 0x98, 0x99, 0x51, 0xe2, 0x8b, 0x1a, - 0x5c, 0x35, 0xdb, 0x6d, 0xb5, 0x30, 0x6e, 0xb3, 0xa3, 0x5b, 0xde, 0x6b, 0xc2, 0x2b, 0x1c, 0x12, - 0xcf, 0xa3, 0x8e, 0xe8, 0x0e, 0x87, 0xdf, 0x3b, 0x05, 0x79, 0x7a, 0x1f, 0x1a, 0x7a, 0xc5, 0x5c, - 0xdf, 0xd6, 0x36, 0xc7, 0xb7, 0xb6, 0x0d, 0x98, 0x31, 0x4c, 0xb7, 0xb8, 0x75, 0xcd, 0xd2, 0x76, - 0xec, 0xb8, 0x65, 0x52, 0x4a, 0xd7, 0x1f, 0x13, 0xab, 0xa1, 0xdf, 0x56, 0x8e, 0xa9, 0x1c, 0x19, - 0xe5, 0xff, 0x07, 0xc7, 0x2f, 0xb1, 0x10, 0x07, 0x36, 0xa3, 0x2c, 0x45, 0x3b, 0x11, 0xf6, 0x50, - 0x5e, 0xe0, 0xff, 0x5c, 0x39, 0xa6, 0xf6, 0x12, 0x53, 0xbe, 0x0f, 0xe6, 0xdc, 0xd7, 0xb6, 0x79, - 0xc5, 0x63, 0x5c, 0x8e, 0xb6, 0xa4, 0x7a, 0xc8, 0xaf, 0x71, 0x3f, 0xae, 0x1c, 0x53, 0x7b, 0x48, - 0x29, 0x35, 0x80, 0x6d, 0x67, 0xa7, 0xc3, 0x08, 0x67, 0xa3, 0x55, 0xb2, 0x87, 0xf0, 0x8a, 0xff, - 0xd3, 0xca, 0x31, 0x35, 0x44, 0x42, 0x59, 0x85, 0x29, 0xe7, 0x11, 0x87, 0xd1, 0xcb, 0x45, 0xef, - 0xde, 0xf7, 0xd0, 0x6b, 0x78, 0xff, 0xac, 0x1c, 0x53, 0x03, 0x02, 0x4a, 0x05, 0x26, 0xbb, 0x97, - 0x18, 0xb1, 0x7c, 0x74, 0x8b, 0xef, 0x21, 0xb6, 0x7e, 0xc9, 0xa7, 0xe5, 0xff, 0xee, 0x32, 0xd6, - 0xb2, 0xf7, 0x18, 0xad, 0x09, 0x61, 0xc6, 0x4a, 0xde, 0x3f, 0x2e, 0x63, 0x3e, 0x01, 0xa5, 0x02, - 0x53, 0xb6, 0xa1, 0x75, 0xed, 0x6d, 0xd3, 0xb1, 0xcf, 0x4c, 0xf6, 0x38, 0x7a, 0x46, 0x53, 0xab, - 0xb3, 0x7f, 0xd4, 0xe0, 0x6f, 0xe5, 0x99, 0x70, 0x6a, 0x97, 0xdc, 0xff, 0x5f, 0x7e, 0x44, 0xb7, - 0x1d, 0xdd, 0xd8, 0xf2, 0x82, 0xe4, 0xd2, 0xee, 0xb2, 0xff, 0x47, 0x65, 0x9e, 0x1d, 0xf9, 0x02, - 0xd2, 0x36, 0x51, 0xef, 0x6e, 0x23, 0x2d, 0x36, 0x74, 0xd2, 0xeb, 0x39, 0x90, 0x75, 0x3f, 0x91, - 0xee, 0x75, 0xae, 0xff, 0x4a, 0x66, 0xaf, 0xee, 0x90, 0x06, 0xec, 0xfe, 0xd4, 0xd3, 0x43, 0xcf, - 0x1c, 0xe8, 0xa1, 0xcf, 0xc1, 0xb4, 0x6e, 0xaf, 0xe9, 0x5b, 0xd4, 0x3c, 0x64, 0x0e, 0xfd, 0xe1, - 0x24, 0x3a, 0x9d, 0xae, 0xe2, 0x2b, 0xf4, 0x0a, 0x90, 0xe3, 0xde, 0x74, 0xda, 0x4b, 0x41, 0x37, - 0xc1, 0x4c, 0xb8, 0x91, 0xd1, 0x4b, 0x55, 0xf5, 0xc0, 0xb8, 0x64, 0x6f, 0xe8, 0x46, 0x98, 0xe3, - 0x75, 0x3a, 0x34, 0x86, 0xca, 0x5e, 0x57, 0x88, 0x6e, 0x80, 0xe3, 0x3d, 0x0d, 0xcb, 0x0b, 0x9a, - 0x92, 0x09, 0x82, 0xa6, 0x9c, 0x03, 0x08, 0xb4, 0xb8, 0x2f, 0x99, 0xeb, 0x61, 0xca, 0xd7, 0xcb, - 0xbe, 0x19, 0x3e, 0x97, 0x81, 0x49, 0x4f, 0xd9, 0xfa, 0x65, 0x70, 0x07, 0x50, 0x23, 0xb4, 0x43, - 0xc2, 0x86, 0x07, 0x2e, 0xcd, 0x1d, 0x28, 0x03, 0xbf, 0xe4, 0x86, 0xee, 0x74, 0xbc, 0xb3, 0x7d, - 0xbd, 0xc9, 0xca, 0x3a, 0x80, 0x4e, 0x30, 0x6a, 0x04, 0x87, 0xfd, 0x6e, 0x4f, 0xd0, 0x1e, 0xa8, - 0x3e, 0x84, 0x68, 0x9c, 0xff, 0x0e, 0x76, 0x12, 0x6f, 0x0a, 0x72, 0x34, 0x52, 0xfc, 0x31, 0x65, - 0x0e, 0xa0, 0xfc, 0xdc, 0xf5, 0xb2, 0x5a, 0x29, 0x57, 0x4b, 0xe5, 0x42, 0x06, 0xfd, 0xbc, 0x04, - 0x53, 0x7e, 0x23, 0xe8, 0x5b, 0xc9, 0x32, 0x53, 0xad, 0x81, 0xf7, 0x56, 0x1e, 0x6c, 0x54, 0x61, - 0x25, 0x7b, 0x36, 0x5c, 0xbd, 0x6b, 0xe3, 0x25, 0xdd, 0xb2, 0x1d, 0xd5, 0xbc, 0xb2, 0x64, 0x5a, - 0x7e, 0x58, 0x68, 0x16, 0xa2, 0x35, 0xea, 0xb3, 0x6b, 0x32, 0xb5, 0x31, 0x39, 0xf5, 0x85, 0x2d, - 0xb6, 0xf4, 0x1d, 0x24, 0xb8, 0x74, 0x1d, 0x4b, 0x33, 0xec, 0xae, 0x69, 0x63, 0xd5, 0xbc, 0x62, - 0x17, 0x8d, 0x76, 0xc9, 0xec, 0xec, 0xee, 0x18, 0x36, 0x33, 0x7a, 0xa2, 0x3e, 0xbb, 0xd2, 0x21, - 0xb7, 0xd2, 0xce, 0x01, 0x94, 0x6a, 0xab, 0xab, 0xe5, 0x52, 0xa3, 0x52, 0xab, 0x16, 0x8e, 0xb9, - 0xd2, 0x6a, 0x14, 0x17, 0x56, 0x5d, 0xe9, 0x7c, 0x3f, 0x4c, 0x7a, 0x6d, 0x9a, 0xc5, 0x79, 0xc9, - 0x78, 0x71, 0x5e, 0x94, 0x22, 0x4c, 0x7a, 0xad, 0x9c, 0x8d, 0x08, 0x4f, 0xee, 0x3d, 0xd7, 0xbb, - 0xa3, 0x59, 0xd4, 0x46, 0xf0, 0x88, 0x2c, 0x68, 0x36, 0x56, 0xfd, 0xdf, 0xce, 0x3f, 0x8d, 0x71, - 0xa0, 0xc0, 0x5c, 0x71, 0x75, 0xb5, 0x59, 0x53, 0x9b, 0xd5, 0x5a, 0x63, 0xa5, 0x52, 0x5d, 0xa6, - 0x23, 0x64, 0x65, 0xb9, 0x5a, 0x53, 0xcb, 0x74, 0x80, 0xac, 0x17, 0x32, 0xf4, 0x56, 0xe4, 0x85, - 0x49, 0xc8, 0x77, 0x89, 0x74, 0xd1, 0x67, 0xe4, 0x84, 0x07, 0xfa, 0x7d, 0x9c, 0x22, 0xee, 0x6d, - 0xe5, 0x9c, 0xea, 0xa5, 0x3e, 0x87, 0x5e, 0xcf, 0xc3, 0x0c, 0x35, 0x56, 0x6d, 0xb2, 0x3f, 0x41, - 0x90, 0x93, 0x55, 0x2e, 0x0d, 0x7d, 0x40, 0x4a, 0x70, 0xca, 0xbf, 0x2f, 0x47, 0xc9, 0x8c, 0x8b, - 0x3f, 0xcb, 0x0c, 0x77, 0xaf, 0x42, 0xa5, 0xda, 0x28, 0xab, 0xd5, 0xe2, 0x2a, 0xcb, 0x22, 0x2b, - 0x67, 0xe0, 0x64, 0xb5, 0xc6, 0x82, 0x16, 0xd6, 0x9b, 0x8d, 0x5a, 0xb3, 0xb2, 0xb6, 0x5e, 0x53, - 0x1b, 0x85, 0x9c, 0x72, 0x1a, 0x14, 0xfa, 0xdc, 0xac, 0xd4, 0x9b, 0xa5, 0x62, 0xb5, 0x54, 0x5e, - 0x2d, 0x2f, 0x16, 0xf2, 0xca, 0x53, 0xe0, 0x06, 0x7a, 0x4f, 0x4f, 0x6d, 0xa9, 0xa9, 0xd6, 0x2e, - 0xd6, 0x5d, 0x04, 0xd5, 0xf2, 0x6a, 0xd1, 0x55, 0xa4, 0xd0, 0xed, 0xc8, 0x13, 0xca, 0x55, 0x70, - 0x9c, 0x5c, 0x9d, 0xbe, 0x5a, 0x2b, 0x2e, 0xb2, 0xf2, 0x26, 0x95, 0xeb, 0xe0, 0x4c, 0xa5, 0x5a, - 0xdf, 0x58, 0x5a, 0xaa, 0x94, 0x2a, 0xe5, 0x6a, 0xa3, 0xb9, 0x5e, 0x56, 0xd7, 0x2a, 0xf5, 0xba, - 0xfb, 0x6f, 0x61, 0x8a, 0xdc, 0x3d, 0x4b, 0xfb, 0x4c, 0xf4, 0x2e, 0x19, 0x66, 0x2f, 0x68, 0x1d, - 0xdd, 0x1d, 0x28, 0xc8, 0xa5, 0xd4, 0x3d, 0xe7, 0x61, 0x1c, 0x72, 0x79, 0x35, 0xf3, 0xa8, 0x27, - 0x2f, 0xe8, 0x87, 0xe5, 0x84, 0xe7, 0x61, 0x18, 0x10, 0xb4, 0xc4, 0x79, 0xae, 0xb4, 0x88, 0xd9, - 0xdb, 0x6b, 0xa5, 0x04, 0xe7, 0x61, 0xc4, 0xc9, 0x27, 0x03, 0xff, 0x17, 0x46, 0x05, 0x7e, 0x01, - 0x66, 0x36, 0xaa, 0xc5, 0x8d, 0xc6, 0x4a, 0x4d, 0xad, 0x7c, 0x2f, 0x09, 0xa7, 0x3e, 0x0b, 0x53, - 0x4b, 0x35, 0x75, 0xa1, 0xb2, 0xb8, 0x58, 0xae, 0x16, 0x72, 0xca, 0xd5, 0x70, 0x55, 0xbd, 0xac, - 0x5e, 0xa8, 0x94, 0xca, 0xcd, 0x8d, 0x6a, 0xf1, 0x42, 0xb1, 0xb2, 0x4a, 0xfa, 0x88, 0x7c, 0xcc, - 0x85, 0xda, 0x13, 0xe8, 0x07, 0xb3, 0x00, 0xb4, 0xea, 0xe4, 0x36, 0xa1, 0xd0, 0xb5, 0xcb, 0x7f, - 0x9e, 0x74, 0xd2, 0x10, 0x90, 0x89, 0x68, 0xbf, 0x15, 0x98, 0xb4, 0xd8, 0x07, 0xb6, 0x3e, 0x34, - 0x88, 0x0e, 0x7d, 0xf4, 0xa8, 0xa9, 0xfe, 0xef, 0xe8, 0xdd, 0x49, 0xe6, 0x08, 0x91, 0x8c, 0x25, - 0x43, 0x72, 0x69, 0x34, 0x40, 0xa2, 0x97, 0x64, 0x60, 0x8e, 0xaf, 0x98, 0x5b, 0x09, 0x62, 0x4c, - 0x89, 0x55, 0x82, 0xff, 0x39, 0x64, 0x64, 0x9d, 0x7f, 0x06, 0x1b, 0x4e, 0xc1, 0x6b, 0x99, 0xf4, - 0x68, 0xbb, 0x67, 0xb1, 0x14, 0x32, 0x2e, 0xf3, 0xae, 0xd1, 0x51, 0x90, 0x94, 0x09, 0x90, 0x1b, - 0x8f, 0x38, 0x05, 0x19, 0x7d, 0x4e, 0x86, 0x59, 0xee, 0x5e, 0x67, 0xf4, 0xda, 0x8c, 0xc8, 0x9d, - 0xab, 0xa1, 0x1b, 0xa3, 0x33, 0x87, 0xbd, 0x31, 0xfa, 0xfc, 0x6d, 0x30, 0xc1, 0xd2, 0x88, 0x7c, - 0x6b, 0x55, 0xd7, 0x14, 0x38, 0x0e, 0xd3, 0xcb, 0xe5, 0x46, 0xb3, 0xde, 0x28, 0xaa, 0x8d, 0xf2, - 0x62, 0x21, 0xe3, 0x0e, 0x7c, 0xe5, 0xb5, 0xf5, 0xc6, 0x43, 0x05, 0x29, 0xb9, 0x8b, 0x61, 0x2f, - 0x23, 0x63, 0x76, 0x31, 0x8c, 0x2b, 0x3e, 0xfd, 0xb9, 0xea, 0xc7, 0x64, 0x28, 0x50, 0x0e, 0xca, - 0x8f, 0x74, 0xb1, 0xa5, 0x63, 0xa3, 0x85, 0xd1, 0x65, 0x91, 0x90, 0xa6, 0x07, 0x82, 0xfd, 0x91, - 0xfe, 0x3c, 0x64, 0x25, 0xd2, 0x97, 0x1e, 0x03, 0x3b, 0x7b, 0xc0, 0xc0, 0xfe, 0x68, 0x52, 0x1f, - 0xc3, 0x5e, 0x76, 0x47, 0x02, 0xd9, 0x87, 0x93, 0xf8, 0x18, 0x0e, 0xe0, 0x60, 0x2c, 0x91, 0x8a, - 0x23, 0xc6, 0xdf, 0x82, 0x8c, 0x5e, 0x2c, 0xc3, 0xf1, 0x45, 0xcd, 0xc1, 0x0b, 0xfb, 0x0d, 0xef, - 0xde, 0xc5, 0x88, 0xbb, 0x92, 0x33, 0x07, 0xee, 0x4a, 0x0e, 0xae, 0x6e, 0x94, 0x7a, 0xae, 0x6e, - 0x44, 0x6f, 0x4f, 0x7a, 0x2a, 0xb1, 0x87, 0x87, 0x91, 0x85, 0x13, 0x4e, 0x76, 0xda, 0x30, 0x9e, - 0x8b, 0xf4, 0x1b, 0xd8, 0x9b, 0xa7, 0xa0, 0x40, 0x59, 0x09, 0xb9, 0xd1, 0xfd, 0x14, 0xbb, 0x5e, - 0xbc, 0x99, 0x20, 0x6a, 0xa1, 0x17, 0x07, 0x42, 0xe2, 0xe3, 0x40, 0x70, 0xab, 0xb2, 0x72, 0xaf, - 0xeb, 0x43, 0xd2, 0xce, 0x30, 0xe4, 0x33, 0x17, 0x1d, 0x28, 0x36, 0xbd, 0xce, 0x30, 0xb6, 0xf8, - 0xf1, 0x5c, 0x81, 0xcb, 0x2e, 0xaa, 0x2c, 0x8b, 0x22, 0x13, 0x7f, 0xd3, 0x77, 0x52, 0x07, 0x6a, - 0xce, 0x67, 0x31, 0xe6, 0xfa, 0xeb, 0xf4, 0x1c, 0xa8, 0x07, 0x71, 0x90, 0x3e, 0x0a, 0xdf, 0x94, - 0x20, 0x5b, 0x37, 0x2d, 0x67, 0x54, 0x18, 0x24, 0xdd, 0xf4, 0x0d, 0x49, 0xa0, 0x1e, 0x3d, 0xe7, - 0x4c, 0x6f, 0xd3, 0x37, 0xbe, 0xfc, 0x31, 0x04, 0x7e, 0x3c, 0x0e, 0x73, 0x94, 0x13, 0xff, 0x56, - 0x94, 0x6f, 0x48, 0xb4, 0xbf, 0x7a, 0x50, 0x14, 0x91, 0xf3, 0x30, 0x13, 0xda, 0x74, 0xf5, 0x40, - 0xe1, 0xd2, 0xd0, 0x2f, 0x87, 0x71, 0x59, 0xe4, 0x71, 0xe9, 0x37, 0xe3, 0xf6, 0x2f, 0x16, 0x19, - 0x55, 0xcf, 0x94, 0x24, 0x86, 0x64, 0x4c, 0xe1, 0xe9, 0x23, 0xf2, 0xa8, 0x0c, 0x79, 0xe6, 0xf4, - 0x36, 0x52, 0x04, 0x92, 0xb6, 0x0c, 0x5f, 0x08, 0x62, 0xce, 0x71, 0xf2, 0xa8, 0x5b, 0x46, 0x7c, - 0xf9, 0xe9, 0xe3, 0xf0, 0xef, 0xcc, 0x9b, 0xb3, 0xb8, 0xa7, 0xe9, 0x1d, 0xed, 0x52, 0x27, 0x41, - 0xec, 0xe6, 0x0f, 0x24, 0x3c, 0xbf, 0xe6, 0x57, 0x95, 0x2b, 0x2f, 0x42, 0xe2, 0xdf, 0x05, 0x53, - 0xfe, 0x16, 0xa0, 0x7f, 0xbc, 0xbf, 0xc7, 0x93, 0x96, 0x7d, 0x57, 0x83, 0x9c, 0x89, 0x0e, 0xab, - 0x09, 0xf1, 0x33, 0x96, 0xc3, 0x35, 0xd3, 0xc5, 0x76, 0x7b, 0x09, 0x6b, 0xce, 0xae, 0x85, 0xdb, - 0x89, 0x86, 0x08, 0x5e, 0x44, 0x53, 0x61, 0x49, 0x70, 0xd1, 0x13, 0x57, 0x79, 0x74, 0x9e, 0x35, - 0xa0, 0x37, 0xf0, 0x78, 0x19, 0x49, 0x97, 0xf4, 0xeb, 0x3e, 0x24, 0x35, 0x0e, 0x92, 0xe7, 0x0c, - 0xc7, 0x44, 0xfa, 0x80, 0xfc, 0x8c, 0x0c, 0x73, 0xd4, 0x4e, 0x18, 0x35, 0x26, 0xbf, 0x9d, 0xd0, - 0x49, 0x26, 0x74, 0xef, 0x54, 0x98, 0x9d, 0x91, 0xc0, 0x92, 0xc4, 0xa5, 0x46, 0x8c, 0x8f, 0xf4, - 0x91, 0xf9, 0x44, 0x1e, 0x20, 0xe4, 0xf8, 0xf8, 0x81, 0x7c, 0x10, 0xc9, 0x10, 0xbd, 0x85, 0xcd, - 0x3f, 0xea, 0x5c, 0x58, 0xed, 0x90, 0x53, 0xa3, 0xbf, 0x21, 0xc5, 0x27, 0x0a, 0x8d, 0x2a, 0x7f, - 0x96, 0xd0, 0xe6, 0x65, 0x6e, 0x87, 0x03, 0x07, 0xf7, 0x21, 0x7b, 0xb9, 0x0f, 0x26, 0x30, 0x7e, - 0x07, 0xb1, 0x92, 0x0c, 0xb5, 0xd5, 0x21, 0x66, 0xf6, 0x67, 0xe0, 0xa4, 0x5a, 0x2e, 0x2e, 0xd6, - 0xaa, 0xab, 0x0f, 0x85, 0x2f, 0x21, 0x2a, 0xc8, 0xe1, 0xc9, 0x49, 0x2a, 0xb0, 0xbd, 0x3e, 0x61, - 0x1f, 0xc8, 0xcb, 0x2a, 0xf6, 0x8a, 0xfd, 0x0f, 0x27, 0xe8, 0xd5, 0x04, 0xc8, 0x1e, 0x25, 0x0a, - 0x8f, 0x42, 0xa8, 0x19, 0xfd, 0xa8, 0x0c, 0x05, 0x77, 0x3c, 0xa4, 0x5c, 0xb2, 0xdb, 0xe6, 0x6a, - 0xbc, 0x5f, 0x64, 0x97, 0xee, 0x3f, 0x05, 0x7e, 0x91, 0x5e, 0x82, 0x72, 0x13, 0xcc, 0xb5, 0xb6, - 0x71, 0xeb, 0x72, 0xc5, 0xf0, 0xf6, 0xd5, 0xe9, 0x26, 0x6c, 0x4f, 0x2a, 0x0f, 0xcc, 0x83, 0x3c, - 0x30, 0xfc, 0x24, 0x9a, 0x1b, 0xa4, 0xc3, 0x4c, 0x45, 0xe0, 0xf2, 0x07, 0x3e, 0x2e, 0x55, 0x0e, - 0x97, 0xbb, 0x86, 0xa2, 0x9a, 0x0c, 0x96, 0xea, 0x10, 0xb0, 0x20, 0x38, 0x5d, 0x5b, 0x6f, 0x54, - 0x6a, 0xd5, 0xe6, 0x46, 0xbd, 0xbc, 0xd8, 0x5c, 0xf0, 0xc0, 0xa9, 0x17, 0x64, 0xf4, 0x25, 0x09, - 0x26, 0x28, 0x5b, 0x36, 0x7a, 0x6a, 0x00, 0xc1, 0x40, 0x87, 0x50, 0xf4, 0x66, 0xe1, 0xf0, 0x0e, - 0xbe, 0x20, 0x58, 0x39, 0x11, 0xfd, 0xd4, 0xb3, 0x61, 0x82, 0x82, 0xec, 0xad, 0x68, 0x9d, 0x8d, - 0xe8, 0xa5, 0x18, 0x19, 0xd5, 0xcb, 0x2e, 0x18, 0xea, 0x61, 0x00, 0x1b, 0xe9, 0x8f, 0x2c, 0xcf, - 0xcf, 0x52, 0x33, 0xf8, 0xa2, 0xee, 0x6c, 0x13, 0x7f, 0x51, 0xf4, 0x3d, 0x22, 0xcb, 0x8b, 0xb7, - 0x42, 0x6e, 0xcf, 0xcd, 0x3d, 0xc0, 0xf7, 0x96, 0x66, 0x42, 0xbf, 0x20, 0x1c, 0x59, 0x94, 0xd3, - 0x4f, 0x9f, 0xa7, 0x08, 0x70, 0xd6, 0x20, 0xdb, 0xd1, 0x6d, 0x87, 0x8d, 0x1f, 0x77, 0x26, 0x22, - 0xe4, 0x3d, 0x54, 0x1c, 0xbc, 0xa3, 0x12, 0x32, 0xe8, 0x01, 0x98, 0x09, 0xa7, 0x0a, 0xf8, 0x1f, - 0x9f, 0x81, 0x09, 0x76, 0x2e, 0x8e, 0x2d, 0xb1, 0x7a, 0xaf, 0x82, 0xcb, 0x9a, 0x42, 0xb5, 0x4d, - 0x5f, 0x07, 0xfe, 0xef, 0xe3, 0x30, 0xb1, 0xa2, 0xdb, 0x8e, 0x69, 0xed, 0xa3, 0xc7, 0x32, 0x30, - 0x71, 0x01, 0x5b, 0xb6, 0x6e, 0x1a, 0x07, 0x5c, 0x0d, 0xce, 0xc1, 0x74, 0xd7, 0xc2, 0x7b, 0xba, - 0xb9, 0x6b, 0x07, 0x8b, 0x33, 0xe1, 0x24, 0x05, 0xc1, 0xa4, 0xb6, 0xeb, 0x6c, 0x9b, 0x56, 0x10, - 0x4e, 0xc3, 0x7b, 0x57, 0xce, 0x02, 0xd0, 0xe7, 0xaa, 0xb6, 0x83, 0x99, 0x03, 0x45, 0x28, 0x45, - 0x51, 0x20, 0xeb, 0xe8, 0x3b, 0x98, 0xc5, 0xd7, 0x25, 0xcf, 0xae, 0x80, 0x49, 0xac, 0x3a, 0x16, - 0x13, 0x50, 0x56, 0xbd, 0x57, 0xf4, 0x29, 0x19, 0xa6, 0x97, 0xb1, 0xc3, 0x58, 0xb5, 0xd1, 0x4b, - 0x33, 0x42, 0x57, 0x5a, 0xb8, 0x63, 0x6c, 0x47, 0xb3, 0xbd, 0xff, 0xfc, 0x25, 0x58, 0x3e, 0x31, - 0x08, 0xf6, 0x2b, 0x87, 0x23, 0x7d, 0x93, 0xc8, 0x6f, 0x4e, 0x85, 0x3a, 0x96, 0xb2, 0xcc, 0x6c, - 0x13, 0xe4, 0xe0, 0x07, 0xf4, 0x0e, 0x49, 0xf4, 0xd4, 0x34, 0x93, 0xfd, 0x7c, 0xa8, 0x3e, 0x91, - 0xdd, 0xd1, 0xe4, 0x1e, 0xcb, 0x71, 0x20, 0x88, 0x7b, 0x98, 0x12, 0x23, 0xa3, 0xfa, 0xb9, 0x05, - 0xcf, 0x5b, 0x0f, 0xe6, 0x24, 0x7d, 0x6d, 0xfc, 0x9a, 0x0c, 0xd3, 0xf5, 0x6d, 0xf3, 0x8a, 0x27, - 0xc7, 0xef, 0x17, 0x03, 0xf6, 0x3a, 0x98, 0xda, 0xeb, 0x01, 0x35, 0x48, 0x88, 0xbe, 0x64, 0x1e, - 0xbd, 0x48, 0x4e, 0x0a, 0x53, 0x88, 0xb9, 0x91, 0x5f, 0x01, 0xaf, 0x3c, 0x0b, 0x26, 0x18, 0xd7, - 0x6c, 0xc9, 0x25, 0x1e, 0x60, 0x2f, 0x73, 0xb8, 0x82, 0x59, 0xbe, 0x82, 0xc9, 0x90, 0x8f, 0xae, - 0x5c, 0xfa, 0xc8, 0xff, 0xb1, 0x44, 0xa2, 0x6d, 0x78, 0xc0, 0x97, 0x46, 0x00, 0x3c, 0xfa, 0x7a, - 0x46, 0x74, 0x61, 0xd2, 0x97, 0x80, 0xcf, 0xc1, 0xa1, 0xae, 0xab, 0x19, 0x48, 0x2e, 0x7d, 0x79, - 0xfe, 0x7c, 0x16, 0x66, 0x16, 0xf5, 0xcd, 0x4d, 0xbf, 0x93, 0x7c, 0x99, 0x60, 0x27, 0x19, 0xed, - 0x0e, 0xe0, 0xda, 0xb9, 0xbb, 0x96, 0x85, 0x0d, 0xaf, 0x52, 0xac, 0x39, 0xf5, 0xa4, 0x2a, 0x37, - 0xc3, 0x71, 0x6f, 0x5c, 0x08, 0x77, 0x94, 0x53, 0x6a, 0x6f, 0x32, 0xfa, 0xaa, 0xf0, 0xae, 0x96, - 0x27, 0xd1, 0x70, 0x95, 0x22, 0x1a, 0xe0, 0xdd, 0x30, 0xbb, 0x4d, 0x73, 0x93, 0xa9, 0xbf, 0xd7, - 0x59, 0x9e, 0xee, 0x89, 0x66, 0xbc, 0x86, 0x6d, 0x5b, 0xdb, 0xc2, 0x2a, 0x9f, 0xb9, 0xa7, 0xf9, - 0xca, 0x49, 0xee, 0xe6, 0x12, 0xdb, 0x20, 0x13, 0xa8, 0xc9, 0x18, 0xb4, 0xe3, 0x3c, 0x64, 0x97, - 0xf4, 0x0e, 0x46, 0x3f, 0x26, 0xc1, 0x94, 0x8a, 0x5b, 0xa6, 0xd1, 0x72, 0xdf, 0x42, 0xce, 0x41, - 0xff, 0x98, 0x11, 0xbd, 0x93, 0xd2, 0xa5, 0x33, 0xef, 0xd3, 0x88, 0x68, 0x37, 0x62, 0x77, 0x4f, - 0xc6, 0x92, 0x1a, 0xc3, 0x0d, 0x22, 0xee, 0xd4, 0x63, 0x73, 0xb3, 0x63, 0x6a, 0xdc, 0xe2, 0x57, - 0xaf, 0x29, 0x74, 0x0b, 0x14, 0xbc, 0x43, 0x2c, 0xa6, 0xb3, 0xae, 0x1b, 0x86, 0x7f, 0x4a, 0xfa, - 0x40, 0x3a, 0xbf, 0x6f, 0x1b, 0x1b, 0x68, 0x86, 0xd4, 0x9d, 0x95, 0x1e, 0xa1, 0xd9, 0x37, 0xc1, - 0xdc, 0xa5, 0x7d, 0x07, 0xdb, 0x2c, 0x17, 0x2b, 0x36, 0xab, 0xf6, 0xa4, 0x86, 0xc2, 0x44, 0xc7, - 0x05, 0xa4, 0x89, 0x29, 0x30, 0x99, 0xa8, 0x57, 0x86, 0x98, 0x01, 0x9e, 0x84, 0x42, 0xb5, 0xb6, - 0x58, 0x26, 0xbe, 0x6a, 0x9e, 0xf7, 0xcf, 0x16, 0x7a, 0xb9, 0x0c, 0x33, 0xc4, 0x99, 0xc4, 0x43, - 0xe1, 0x06, 0x81, 0xf9, 0x08, 0x7a, 0x5c, 0xd8, 0x8f, 0x8d, 0x54, 0x39, 0x5c, 0x40, 0xb4, 0xa0, - 0x37, 0xf5, 0x4e, 0xaf, 0xa0, 0x73, 0x6a, 0x4f, 0x6a, 0x1f, 0x40, 0xe4, 0xbe, 0x80, 0xfc, 0xa6, - 0x90, 0x33, 0xdb, 0x20, 0xee, 0x8e, 0x0a, 0x95, 0xdf, 0x92, 0x61, 0xda, 0x9d, 0xa4, 0x78, 0xa0, - 0xd4, 0x38, 0x50, 0x4c, 0xa3, 0xb3, 0x1f, 0x2c, 0x8b, 0x78, 0xaf, 0x89, 0x1a, 0xc9, 0x5f, 0x0a, - 0xcf, 0xdc, 0x89, 0x88, 0x42, 0xbc, 0x8c, 0x09, 0xbf, 0xf7, 0x08, 0xcd, 0xe7, 0x07, 0x30, 0x77, - 0x54, 0xf0, 0x7d, 0x21, 0x07, 0xf9, 0x8d, 0x2e, 0x41, 0xee, 0x17, 0x64, 0x91, 0x90, 0xeb, 0x07, - 0x0e, 0x32, 0xb8, 0x66, 0x56, 0xc7, 0x6c, 0x69, 0x9d, 0xf5, 0xe0, 0x44, 0x58, 0x90, 0xa0, 0xdc, - 0xc5, 0x7c, 0x1b, 0xe9, 0x79, 0xc1, 0x9b, 0x62, 0xa3, 0x91, 0x13, 0x19, 0x85, 0x0e, 0x8d, 0xdc, - 0x0a, 0x27, 0xda, 0xba, 0xad, 0x5d, 0xea, 0xe0, 0xb2, 0xd1, 0xb2, 0xf6, 0xa9, 0x38, 0xd8, 0xb4, - 0xea, 0xc0, 0x07, 0xe5, 0x1e, 0xc8, 0xd9, 0xce, 0x7e, 0x87, 0xce, 0x13, 0xc3, 0x67, 0x4c, 0x22, - 0x8b, 0xaa, 0xbb, 0xd9, 0x55, 0xfa, 0x57, 0xd8, 0x45, 0x69, 0x42, 0xf0, 0x42, 0xea, 0x67, 0x40, - 0xde, 0xb4, 0xf4, 0x2d, 0x9d, 0x5e, 0x30, 0x34, 0x77, 0x20, 0xe8, 0x1e, 0x35, 0x05, 0x6a, 0x24, - 0x8b, 0xca, 0xb2, 0x2a, 0xcf, 0x82, 0x29, 0x7d, 0x47, 0xdb, 0xc2, 0x0f, 0xea, 0x06, 0x3d, 0x92, - 0x38, 0x77, 0xc7, 0x99, 0x03, 0xc7, 0x67, 0xd8, 0x77, 0x35, 0xc8, 0x8a, 0xde, 0x23, 0x89, 0x46, - 0x06, 0x22, 0x75, 0xa3, 0xa0, 0x8e, 0xe5, 0x62, 0x6e, 0xf4, 0x1a, 0xa1, 0x98, 0x3d, 0xd1, 0x6c, - 0xa5, 0x3f, 0x78, 0x7f, 0x52, 0x82, 0xc9, 0x45, 0xf3, 0x8a, 0x41, 0x14, 0xfd, 0x4e, 0x31, 0x5b, - 0xb7, 0xcf, 0x21, 0x47, 0xfe, 0xde, 0xcb, 0xd8, 0x13, 0x0d, 0xa4, 0xb6, 0x5e, 0x91, 0x11, 0x30, - 0xc4, 0xb6, 0x1c, 0xc1, 0xdb, 0x08, 0xe3, 0xca, 0x49, 0x5f, 0xae, 0x7f, 0x22, 0x43, 0x76, 0xd1, - 0x32, 0xbb, 0xe8, 0xd7, 0x33, 0x09, 0x5c, 0x16, 0xda, 0x96, 0xd9, 0x6d, 0x90, 0xeb, 0xc4, 0x82, - 0x63, 0x1c, 0xe1, 0x34, 0xe5, 0x4e, 0x98, 0xec, 0x9a, 0xb6, 0xee, 0x78, 0xd3, 0x88, 0xb9, 0x3b, - 0x9e, 0xd4, 0xb7, 0x35, 0xaf, 0xb3, 0x4c, 0xaa, 0x9f, 0xdd, 0xed, 0xb5, 0x89, 0x08, 0x5d, 0xb9, - 0xb8, 0x62, 0xf4, 0xae, 0x54, 0xeb, 0x49, 0x45, 0xaf, 0x08, 0x23, 0xf9, 0x1c, 0x1e, 0xc9, 0x27, - 0xf7, 0x91, 0xb0, 0x65, 0x76, 0x47, 0xb2, 0xc9, 0xf8, 0x2a, 0x1f, 0xd5, 0x7b, 0x39, 0x54, 0x6f, - 0x11, 0x2a, 0x33, 0x7d, 0x44, 0xdf, 0x93, 0x05, 0x20, 0x66, 0xc6, 0x86, 0x3b, 0x01, 0x12, 0xb3, - 0xb1, 0x7e, 0x24, 0x1b, 0x92, 0x65, 0x91, 0x97, 0xe5, 0x53, 0x23, 0xac, 0x18, 0x42, 0x3e, 0x42, - 0xa2, 0x45, 0xc8, 0xed, 0xba, 0x9f, 0x99, 0x44, 0x05, 0x49, 0x90, 0x57, 0x95, 0xfe, 0x89, 0xfe, - 0x38, 0x03, 0x39, 0x92, 0xa0, 0x9c, 0x05, 0x20, 0x03, 0x3b, 0x3d, 0x10, 0x94, 0x21, 0x43, 0x78, - 0x28, 0x85, 0x68, 0xab, 0xde, 0x66, 0x9f, 0xa9, 0xc9, 0x1c, 0x24, 0xb8, 0x7f, 0x93, 0xe1, 0x9e, - 0xd0, 0x62, 0x06, 0x40, 0x28, 0xc5, 0xfd, 0x9b, 0xbc, 0xad, 0xe2, 0x4d, 0x1a, 0xe9, 0x39, 0xab, - 0x06, 0x09, 0xfe, 0xdf, 0xab, 0xfe, 0xfd, 0x60, 0xde, 0xdf, 0x24, 0xc5, 0x9d, 0x0c, 0x13, 0xb5, - 0x5c, 0x08, 0x8a, 0xc8, 0x93, 0x4c, 0xbd, 0xc9, 0xe8, 0xf5, 0xbe, 0xda, 0x2c, 0x72, 0x6a, 0x73, - 0x7b, 0x02, 0xf1, 0xa6, 0xaf, 0x3c, 0x9f, 0xcb, 0xc1, 0x54, 0xd5, 0x6c, 0x33, 0xdd, 0x09, 0x4d, - 0x18, 0x3f, 0x9c, 0x4b, 0x34, 0x61, 0xf4, 0x69, 0x44, 0x28, 0xc8, 0xfd, 0xbc, 0x82, 0x88, 0x51, - 0x08, 0xeb, 0x87, 0xb2, 0x00, 0x79, 0xa2, 0xbd, 0x07, 0x2f, 0x9e, 0x8a, 0x23, 0x41, 0x44, 0xab, - 0xb2, 0x3f, 0xff, 0xc3, 0xe9, 0xd8, 0x7f, 0x85, 0x1c, 0xa9, 0x60, 0xcc, 0xee, 0x0e, 0x5f, 0x51, - 0x29, 0xbe, 0xa2, 0x72, 0x7c, 0x45, 0xb3, 0xbd, 0x15, 0x4d, 0xb2, 0x0e, 0x10, 0xa5, 0x21, 0xe9, - 0xeb, 0xf8, 0x3f, 0x4c, 0x00, 0x54, 0xb5, 0x3d, 0x7d, 0x8b, 0xee, 0x0e, 0x7f, 0xca, 0x9b, 0xff, - 0xb0, 0x7d, 0xdc, 0xff, 0x16, 0x1a, 0x08, 0xef, 0x84, 0x09, 0x36, 0xee, 0xb1, 0x8a, 0x5c, 0xcf, - 0x55, 0x24, 0xa0, 0x42, 0xcd, 0xd2, 0x47, 0x1c, 0xd5, 0xcb, 0xcf, 0xdd, 0x91, 0x2b, 0xf5, 0xdc, - 0x91, 0xdb, 0x7f, 0x0f, 0x22, 0xe2, 0xe6, 0x5c, 0xf4, 0x4e, 0x61, 0x8f, 0xfe, 0x10, 0x3f, 0xa1, - 0x1a, 0x45, 0x34, 0xc1, 0x67, 0xc0, 0x84, 0xe9, 0x6f, 0x68, 0xcb, 0x91, 0xeb, 0x60, 0x15, 0x63, - 0xd3, 0x54, 0xbd, 0x9c, 0x82, 0x9b, 0x5f, 0x42, 0x7c, 0x8c, 0xe5, 0xd0, 0xcc, 0xe9, 0x65, 0x2f, - 0x6a, 0x96, 0x5b, 0x8f, 0x8b, 0xba, 0xb3, 0xbd, 0xaa, 0x1b, 0x97, 0x6d, 0xf4, 0x9f, 0xc5, 0x2c, - 0xc8, 0x10, 0xfe, 0x52, 0x32, 0xfc, 0xf9, 0x98, 0x1d, 0x75, 0x1e, 0xb5, 0x7b, 0xa2, 0xa8, 0xf4, - 0xe7, 0x36, 0x02, 0xc0, 0xbb, 0x20, 0x4f, 0x19, 0x65, 0x9d, 0xe8, 0xf9, 0x48, 0xfc, 0x7c, 0x4a, - 0x2a, 0xfb, 0x03, 0xbd, 0xc3, 0xc7, 0xf1, 0x02, 0x87, 0xe3, 0xc2, 0xa1, 0x38, 0x4b, 0x1d, 0xd2, - 0xf3, 0x4f, 0x87, 0x09, 0x26, 0x69, 0x65, 0x2e, 0xdc, 0x8a, 0x0b, 0xc7, 0x14, 0x80, 0xfc, 0x9a, - 0xb9, 0x87, 0x1b, 0x66, 0x21, 0xe3, 0x3e, 0xbb, 0xfc, 0x35, 0xcc, 0x82, 0x84, 0x5e, 0x3d, 0x09, - 0x93, 0x7e, 0xb8, 0xa2, 0x4f, 0x4a, 0x50, 0x28, 0x59, 0x58, 0x73, 0xf0, 0x92, 0x65, 0xee, 0xd0, - 0x1a, 0x89, 0x7b, 0x87, 0xfe, 0x8c, 0xb0, 0x8b, 0x87, 0x1f, 0x46, 0xa8, 0xb7, 0xb0, 0x08, 0x2c, - 0xe9, 0x22, 0xa4, 0xe4, 0x2d, 0x42, 0xa2, 0x37, 0x09, 0xb9, 0x7c, 0x88, 0x96, 0x92, 0x7e, 0x53, - 0xfb, 0xa8, 0x04, 0xb9, 0x52, 0xc7, 0x34, 0x70, 0xf8, 0x08, 0xd3, 0xc0, 0xb3, 0x32, 0xfd, 0x77, - 0x22, 0xd0, 0xf3, 0x25, 0x51, 0x5b, 0x23, 0x10, 0x80, 0x5b, 0xb6, 0xa0, 0x6c, 0xc5, 0x06, 0xa9, - 0x58, 0xd2, 0xe9, 0x0b, 0xf4, 0x4b, 0x12, 0x4c, 0xd1, 0xb8, 0x38, 0xc5, 0x4e, 0x07, 0x3d, 0x29, - 0x10, 0x6a, 0x9f, 0x90, 0x4f, 0xe8, 0x37, 0x85, 0x5d, 0xf4, 0xfd, 0x5a, 0xf9, 0xb4, 0x13, 0x04, - 0x08, 0x4a, 0xe6, 0x31, 0x2e, 0xb6, 0x97, 0x36, 0x90, 0xa1, 0xf4, 0x45, 0xfd, 0xe7, 0x92, 0x6b, - 0x00, 0x18, 0x97, 0xd7, 0x2d, 0xbc, 0xa7, 0xe3, 0x2b, 0xe8, 0xda, 0x40, 0xd8, 0x07, 0x83, 0x7e, - 0xfc, 0x8a, 0xf0, 0x22, 0x4e, 0x88, 0x64, 0xe4, 0x56, 0xd6, 0x74, 0x27, 0xc8, 0xc4, 0x7a, 0xf1, - 0xde, 0x48, 0x2c, 0x21, 0x32, 0x6a, 0x38, 0xbb, 0xe0, 0x9a, 0x4d, 0x34, 0x17, 0xe9, 0x0b, 0xf6, - 0x7d, 0x13, 0x30, 0xb9, 0x61, 0xd8, 0xdd, 0x8e, 0x66, 0x6f, 0xa3, 0x6f, 0xc8, 0x90, 0xa7, 0xd7, - 0x9d, 0xa1, 0xef, 0xe2, 0x62, 0x0b, 0xfc, 0xc0, 0x2e, 0xb6, 0x3c, 0x17, 0x1c, 0xfa, 0xd2, 0xff, - 0x36, 0x76, 0xf4, 0x1e, 0x59, 0x74, 0x92, 0xea, 0x15, 0x1a, 0xba, 0xf7, 0xbe, 0xff, 0x71, 0xf6, - 0xae, 0xde, 0x72, 0x76, 0x2d, 0xff, 0x6e, 0xef, 0xa7, 0x89, 0x51, 0x59, 0xa7, 0x7f, 0xa9, 0xfe, - 0xef, 0x48, 0x83, 0x09, 0x96, 0x78, 0x60, 0x3b, 0xe9, 0xe0, 0xf9, 0xdb, 0xd3, 0x90, 0xd7, 0x2c, - 0x47, 0xb7, 0x1d, 0xb6, 0xc1, 0xca, 0xde, 0xdc, 0xee, 0x92, 0x3e, 0x6d, 0x58, 0x1d, 0x2f, 0x0a, - 0x89, 0x9f, 0x80, 0x7e, 0x4b, 0x68, 0xfe, 0x18, 0x5f, 0xf3, 0x64, 0x90, 0x3f, 0x38, 0xc4, 0x1a, - 0xf5, 0xd5, 0x70, 0x95, 0x5a, 0x6c, 0x94, 0x9b, 0x34, 0x68, 0x85, 0x1f, 0x9f, 0xa2, 0x8d, 0xde, - 0x2e, 0x87, 0xd6, 0xef, 0xf6, 0xb9, 0x31, 0x82, 0x49, 0x31, 0x18, 0x23, 0xfc, 0x84, 0x98, 0xdd, - 0x6a, 0x6e, 0x11, 0x56, 0x16, 0x5f, 0x84, 0xfd, 0x35, 0xe1, 0xdd, 0x24, 0x5f, 0x94, 0x03, 0xd6, - 0x00, 0xe3, 0xae, 0x43, 0x7a, 0xaf, 0xd0, 0xce, 0xd0, 0xa0, 0x92, 0x8e, 0x10, 0xb6, 0x5f, 0x9e, - 0x80, 0x89, 0x65, 0xad, 0xd3, 0xc1, 0xd6, 0xbe, 0x3b, 0x24, 0x15, 0x3c, 0x0e, 0xd7, 0x34, 0x43, - 0xdf, 0xc4, 0xb6, 0x13, 0xdf, 0x59, 0xbe, 0x53, 0x38, 0xd4, 0x2e, 0x2b, 0x63, 0xbe, 0x97, 0x7e, - 0x84, 0xcc, 0x6f, 0x83, 0xac, 0x6e, 0x6c, 0x9a, 0xac, 0xcb, 0xec, 0x5d, 0xb5, 0xf7, 0x7e, 0x26, - 0x53, 0x17, 0x92, 0x51, 0x30, 0xda, 0xae, 0x20, 0x17, 0xe9, 0xf7, 0x9c, 0xbf, 0x91, 0x85, 0x59, - 0x8f, 0x89, 0x8a, 0xd1, 0xc6, 0x8f, 0x84, 0x97, 0x62, 0x5e, 0x9e, 0x15, 0x3d, 0x0e, 0xd6, 0x5b, - 0x1f, 0x42, 0x2a, 0x42, 0xa4, 0x0d, 0x80, 0x96, 0xe6, 0xe0, 0x2d, 0xd3, 0xd2, 0xfd, 0xfe, 0xf0, - 0x99, 0x49, 0xa8, 0x95, 0xe8, 0xdf, 0xfb, 0x6a, 0x88, 0x8e, 0x72, 0x0f, 0x4c, 0x63, 0xff, 0xfc, - 0xbd, 0xb7, 0x54, 0x13, 0x8b, 0x57, 0x38, 0x3f, 0xfa, 0x73, 0xa1, 0x53, 0x67, 0x22, 0xd5, 0x4c, - 0x86, 0x59, 0x73, 0xb8, 0x36, 0xb4, 0x51, 0x5d, 0x2b, 0xaa, 0xf5, 0x95, 0xe2, 0xea, 0x6a, 0xa5, - 0xba, 0xec, 0x07, 0x7e, 0x51, 0x60, 0x6e, 0xb1, 0x76, 0xb1, 0x1a, 0x8a, 0xcc, 0x93, 0x45, 0xeb, - 0x30, 0xe9, 0xc9, 0xab, 0x9f, 0x2f, 0x66, 0x58, 0x66, 0xcc, 0x17, 0x33, 0x94, 0xe4, 0x1a, 0x67, - 0x7a, 0xcb, 0x77, 0xd0, 0x21, 0xcf, 0xe8, 0x0f, 0x35, 0xc8, 0xd1, 0x68, 0x91, 0x6f, 0x25, 0xdb, - 0x80, 0xdd, 0x8e, 0xd6, 0xc2, 0x68, 0x27, 0x81, 0x35, 0xee, 0xdd, 0xfd, 0x20, 0x1d, 0xb8, 0xfb, - 0x81, 0x3c, 0x32, 0xab, 0xef, 0x64, 0xbf, 0x75, 0x7c, 0x95, 0x66, 0xe1, 0x0f, 0x68, 0xc5, 0xee, - 0xae, 0xd0, 0xe5, 0x7f, 0xc6, 0x66, 0x84, 0x4a, 0x46, 0xf3, 0x94, 0xcc, 0x12, 0x15, 0xdb, 0x87, - 0x89, 0xe3, 0x68, 0x0c, 0xf7, 0x93, 0x67, 0x21, 0x57, 0xef, 0x76, 0x74, 0x07, 0xfd, 0x9c, 0x34, - 0x12, 0xcc, 0xe8, 0x7d, 0x1d, 0xf2, 0xc0, 0xfb, 0x3a, 0x82, 0x5d, 0xd7, 0xac, 0xc0, 0xae, 0x6b, - 0x03, 0x3f, 0xe2, 0xf0, 0xbb, 0xae, 0x77, 0xb2, 0xe0, 0x6d, 0x74, 0xcf, 0xf6, 0xc9, 0x7d, 0x44, - 0x4a, 0xaa, 0xd5, 0x27, 0x2a, 0xe0, 0xf9, 0xa7, 0xb3, 0xe0, 0x64, 0x00, 0xf9, 0x85, 0x5a, 0xa3, - 0x51, 0x5b, 0x2b, 0x1c, 0x23, 0x51, 0x6d, 0x6a, 0xeb, 0x34, 0x54, 0x4c, 0xa5, 0x5a, 0x2d, 0xab, - 0x05, 0x89, 0x84, 0x4b, 0xab, 0x34, 0x56, 0xcb, 0x05, 0x99, 0x0f, 0xde, 0x1e, 0x6b, 0x7e, 0xf3, - 0x65, 0xa7, 0xa9, 0x5e, 0x62, 0x86, 0x78, 0x34, 0x3f, 0xe9, 0x2b, 0xd7, 0x4f, 0xcb, 0x90, 0x5b, - 0xc3, 0xd6, 0x16, 0x46, 0x3f, 0x90, 0x60, 0x93, 0x6f, 0x53, 0xb7, 0x6c, 0x1a, 0x5c, 0x2e, 0xd8, - 0xe4, 0x0b, 0xa7, 0x29, 0x37, 0xc2, 0xac, 0x8d, 0x5b, 0xa6, 0xd1, 0xf6, 0x32, 0xd1, 0xfe, 0x88, - 0x4f, 0xe4, 0x2f, 0xce, 0x17, 0x80, 0x8c, 0x30, 0x3a, 0x92, 0x9d, 0xba, 0x24, 0xc0, 0xf4, 0x2b, - 0x35, 0x7d, 0x60, 0xbe, 0x2a, 0xbb, 0x3f, 0x75, 0xf7, 0xd1, 0x2b, 0x85, 0x77, 0x5f, 0x6f, 0x85, - 0x3c, 0x51, 0x53, 0x6f, 0x8c, 0xee, 0xdf, 0x1f, 0xb3, 0x3c, 0xca, 0x02, 0x9c, 0xb0, 0x71, 0x07, - 0xb7, 0x1c, 0xdc, 0x76, 0x9b, 0xae, 0x3a, 0xb0, 0x53, 0x38, 0x98, 0x1d, 0xfd, 0x69, 0x18, 0xc0, - 0xbb, 0x79, 0x00, 0x6f, 0xea, 0x23, 0x4a, 0xb7, 0x42, 0xd1, 0xb6, 0xb2, 0x5b, 0x8d, 0x7a, 0xc7, - 0xf4, 0x17, 0xc5, 0xbd, 0x77, 0xf7, 0xdb, 0xb6, 0xb3, 0xd3, 0x21, 0xdf, 0xd8, 0x01, 0x03, 0xef, - 0x5d, 0x99, 0x87, 0x09, 0xcd, 0xd8, 0x27, 0x9f, 0xb2, 0x31, 0xb5, 0xf6, 0x32, 0xa1, 0x57, 0xfb, - 0xc8, 0xdf, 0xc7, 0x21, 0xff, 0x54, 0x31, 0x76, 0xd3, 0x07, 0xfe, 0x87, 0x27, 0x20, 0xb7, 0xae, - 0xd9, 0x0e, 0x46, 0xff, 0x97, 0x2c, 0x8a, 0xfc, 0x4d, 0x30, 0xb7, 0x69, 0xb6, 0x76, 0x6d, 0xdc, - 0xe6, 0x1b, 0x65, 0x4f, 0xea, 0x28, 0x30, 0x57, 0x6e, 0x81, 0x82, 0x97, 0xc8, 0xc8, 0x7a, 0xdb, - 0xf0, 0x07, 0xd2, 0x49, 0x28, 0x70, 0x7b, 0x5d, 0xb3, 0x9c, 0xda, 0x26, 0x8d, 0x61, 0xed, 0x85, - 0x02, 0x0f, 0x27, 0x72, 0xd0, 0xe7, 0x63, 0xa0, 0x9f, 0x88, 0x86, 0x7e, 0x52, 0x00, 0x7a, 0xa5, - 0x08, 0x93, 0x9b, 0x7a, 0x07, 0x93, 0x1f, 0xa6, 0xc8, 0x0f, 0xfd, 0xc6, 0x24, 0x22, 0x7b, 0x7f, - 0x4c, 0x5a, 0xd2, 0x3b, 0x58, 0xf5, 0x7f, 0xf3, 0x26, 0x32, 0x10, 0x4c, 0x64, 0x56, 0xa9, 0x3f, - 0xad, 0x6b, 0x78, 0x19, 0xda, 0x0e, 0xf6, 0x16, 0xdf, 0x0c, 0x76, 0xb8, 0xa5, 0xad, 0x39, 0x1a, - 0x01, 0x63, 0x46, 0x25, 0xcf, 0xbc, 0x5f, 0x88, 0xdc, 0xeb, 0x17, 0xf2, 0x42, 0x39, 0x59, 0x8f, - 0xe8, 0x31, 0x1b, 0xd1, 0xa2, 0x2e, 0x79, 0x00, 0x51, 0x4b, 0xd1, 0x7f, 0x77, 0x81, 0x69, 0x69, - 0x16, 0x76, 0xd6, 0xc3, 0x9e, 0x18, 0x39, 0x95, 0x4f, 0x24, 0xae, 0x7c, 0x76, 0x5d, 0xdb, 0xc1, - 0xa4, 0xb0, 0x92, 0xfb, 0x8d, 0xb9, 0x68, 0x1d, 0x48, 0x0f, 0xfa, 0xdf, 0xdc, 0xa8, 0xfb, 0xdf, - 0x7e, 0x75, 0x4c, 0xbf, 0x19, 0xbe, 0x36, 0x0b, 0x72, 0x69, 0xd7, 0x79, 0x42, 0x77, 0xbf, 0xdf, - 0x14, 0xf6, 0x73, 0x61, 0xfd, 0x59, 0xe4, 0x4d, 0xf9, 0x63, 0xea, 0x7d, 0x13, 0x6a, 0x89, 0x98, - 0x3f, 0x4d, 0x54, 0xdd, 0xd2, 0xd7, 0x91, 0x5f, 0x97, 0x7d, 0x07, 0xcb, 0x47, 0x33, 0x87, 0x37, - 0xcd, 0x11, 0xed, 0x9f, 0x42, 0x3d, 0x83, 0xff, 0xee, 0x75, 0x3c, 0x59, 0x2e, 0x56, 0x1f, 0xd9, - 0x5e, 0x27, 0xa2, 0x9c, 0x51, 0xe9, 0x0b, 0xfa, 0x79, 0x61, 0xb7, 0x73, 0x2a, 0xb6, 0x58, 0x57, - 0xc2, 0x64, 0x36, 0x95, 0xd8, 0x6d, 0xa8, 0x31, 0xc5, 0x8e, 0xe1, 0x26, 0x8d, 0xb0, 0xab, 0x60, - 0xf1, 0xd0, 0x88, 0xa1, 0xd7, 0x08, 0x6f, 0x47, 0xd1, 0x6a, 0x0f, 0x58, 0x2f, 0x4c, 0x26, 0x6f, - 0xb1, 0xcd, 0xaa, 0xd8, 0x82, 0xd3, 0x97, 0xf8, 0x97, 0x65, 0xc8, 0xd3, 0x2d, 0x48, 0xf4, 0xc6, - 0x4c, 0x82, 0x6b, 0xe4, 0x1d, 0xde, 0x85, 0xd0, 0x7f, 0x4f, 0xb2, 0xe6, 0xc0, 0xb9, 0x1a, 0x66, - 0x13, 0xb9, 0x1a, 0xf2, 0xe7, 0x38, 0x05, 0xda, 0x11, 0xad, 0x63, 0xca, 0xd3, 0xc9, 0x24, 0x2d, - 0xac, 0x2f, 0x43, 0xe9, 0xe3, 0xfd, 0xa3, 0x39, 0x98, 0xa1, 0x45, 0x5f, 0xd4, 0xdb, 0x5b, 0xd8, - 0x41, 0x6f, 0x97, 0xbe, 0x75, 0x50, 0x57, 0xaa, 0x30, 0x73, 0x85, 0xb0, 0xbd, 0xaa, 0xed, 0x9b, - 0xbb, 0x0e, 0x5b, 0xb9, 0xb8, 0x25, 0x76, 0xdd, 0x83, 0xd6, 0x73, 0x9e, 0xfe, 0xa1, 0x72, 0xff, - 0xbb, 0x32, 0xa6, 0x0b, 0xfe, 0xd4, 0x81, 0x2b, 0x4f, 0x8c, 0xac, 0x70, 0x92, 0x72, 0x1a, 0xf2, - 0x7b, 0x3a, 0xbe, 0x52, 0x69, 0x33, 0xeb, 0x96, 0xbd, 0xa1, 0xdf, 0x15, 0xde, 0xb7, 0x0d, 0xc3, - 0xcd, 0x78, 0x49, 0x57, 0x0b, 0xc5, 0x76, 0x6f, 0x07, 0xb2, 0x35, 0x86, 0x33, 0xc5, 0xfc, 0x6d, - 0xa3, 0xa5, 0x04, 0x8a, 0x18, 0x65, 0x38, 0xf3, 0xa1, 0x3c, 0x62, 0x4f, 0xac, 0x50, 0x01, 0x8c, - 0xf8, 0x22, 0x52, 0xb1, 0xf8, 0x12, 0x03, 0x8a, 0x4e, 0x5f, 0xf2, 0xaf, 0x97, 0x61, 0xaa, 0x8e, - 0x9d, 0x25, 0x1d, 0x77, 0xda, 0x36, 0xb2, 0x0e, 0x6f, 0x1a, 0xdd, 0x06, 0xf9, 0x4d, 0x42, 0x6c, - 0xd0, 0xb9, 0x05, 0x96, 0x0d, 0xbd, 0x56, 0x12, 0xdd, 0x11, 0x66, 0xab, 0x6f, 0x1e, 0xb7, 0x23, - 0x81, 0x49, 0xcc, 0xa3, 0x37, 0xbe, 0xe4, 0x31, 0x04, 0xb6, 0x95, 0x61, 0x86, 0x5d, 0x4f, 0x58, - 0xec, 0xe8, 0x5b, 0x06, 0xda, 0x1d, 0x41, 0x0b, 0x51, 0x6e, 0x87, 0x9c, 0xe6, 0x52, 0x63, 0x5b, - 0xaf, 0xa8, 0x6f, 0xe7, 0x49, 0xca, 0x53, 0x69, 0xc6, 0x04, 0x61, 0x24, 0x03, 0xc5, 0xf6, 0x78, - 0x1e, 0x63, 0x18, 0xc9, 0x81, 0x85, 0xa7, 0x8f, 0xd8, 0x67, 0x65, 0x38, 0xc9, 0x18, 0xb8, 0x80, - 0x2d, 0x47, 0x6f, 0x69, 0x1d, 0x8a, 0xdc, 0x4b, 0x32, 0xa3, 0x80, 0x6e, 0x05, 0x66, 0xf7, 0xc2, - 0x64, 0x19, 0x84, 0xe7, 0xfb, 0x42, 0xc8, 0x31, 0xa0, 0xf2, 0x3f, 0x26, 0x08, 0xc7, 0xc7, 0x49, - 0x95, 0xa3, 0x39, 0xc6, 0x70, 0x7c, 0xc2, 0x4c, 0xa4, 0x0f, 0xf1, 0x2b, 0x58, 0x68, 0x9e, 0xa0, - 0xfb, 0xfc, 0x94, 0x30, 0xb6, 0x1b, 0x30, 0x4d, 0xb0, 0xa4, 0x3f, 0xb2, 0x65, 0x88, 0x18, 0x25, - 0xf6, 0xfb, 0x1d, 0x76, 0x61, 0x98, 0xff, 0xaf, 0x1a, 0xa6, 0x83, 0x2e, 0x02, 0x04, 0x9f, 0xc2, - 0x9d, 0x74, 0x26, 0xaa, 0x93, 0x96, 0xc4, 0x3a, 0xe9, 0x5f, 0x11, 0x0e, 0x96, 0xd2, 0x9f, 0xed, - 0xc3, 0xab, 0x87, 0x58, 0x98, 0x8c, 0xc1, 0xa5, 0xa7, 0xaf, 0x17, 0xaf, 0xce, 0xf6, 0xde, 0x43, - 0xff, 0x81, 0x91, 0xcc, 0xa7, 0xc2, 0xfd, 0x81, 0xdc, 0xd3, 0x1f, 0x1c, 0xc2, 0x92, 0xbe, 0x19, - 0x8e, 0xd3, 0x22, 0x4a, 0x3e, 0x5b, 0x39, 0x1a, 0x0a, 0xa2, 0x27, 0x19, 0x7d, 0x70, 0x08, 0x25, - 0x18, 0x74, 0x49, 0x7e, 0x5c, 0x27, 0x97, 0xcc, 0xd8, 0x4d, 0xaa, 0x20, 0x47, 0x77, 0xb7, 0xfe, - 0x97, 0xb2, 0xd4, 0xda, 0xdd, 0x20, 0x77, 0xba, 0xa1, 0xbf, 0xc8, 0x8e, 0x62, 0x44, 0xb8, 0x1f, - 0xb2, 0xc4, 0xc5, 0x5d, 0x8e, 0x5c, 0xd2, 0x08, 0x8a, 0x0c, 0x2e, 0xdc, 0xc3, 0x8f, 0x38, 0x2b, - 0xc7, 0x54, 0xf2, 0xa7, 0x72, 0x0b, 0x1c, 0xbf, 0xa4, 0xb5, 0x2e, 0x6f, 0x59, 0xe6, 0x2e, 0xb9, - 0xfd, 0xca, 0x64, 0xd7, 0x68, 0x91, 0xeb, 0x08, 0xf9, 0x0f, 0xca, 0x1d, 0x9e, 0xe9, 0x90, 0x1b, - 0x64, 0x3a, 0xac, 0x1c, 0x63, 0xc6, 0x83, 0xf2, 0x74, 0xbf, 0xd3, 0xc9, 0xc7, 0x76, 0x3a, 0x2b, - 0xc7, 0xbc, 0x6e, 0x47, 0x59, 0x84, 0xc9, 0xb6, 0xbe, 0x47, 0xb6, 0xaa, 0xc9, 0xac, 0x6b, 0xd0, - 0xd1, 0xe5, 0x45, 0x7d, 0x8f, 0x6e, 0x6c, 0xaf, 0x1c, 0x53, 0xfd, 0x3f, 0x95, 0x65, 0x98, 0x22, - 0xdb, 0x02, 0x84, 0xcc, 0x64, 0xa2, 0x63, 0xc9, 0x2b, 0xc7, 0xd4, 0xe0, 0x5f, 0xd7, 0xfa, 0xc8, - 0x92, 0xb3, 0x1f, 0xf7, 0x79, 0xdb, 0xed, 0x99, 0x44, 0xdb, 0xed, 0xae, 0x2c, 0xe8, 0x86, 0xfb, - 0x69, 0xc8, 0xb5, 0x88, 0x84, 0x25, 0x26, 0x61, 0xfa, 0xaa, 0xdc, 0x0d, 0xd9, 0x1d, 0xcd, 0xf2, - 0x26, 0xcf, 0x37, 0x0d, 0xa6, 0xbb, 0xa6, 0x59, 0x97, 0x5d, 0x04, 0xdd, 0xbf, 0x16, 0x26, 0x20, - 0x47, 0x04, 0xe7, 0x3f, 0xa0, 0x5f, 0xcf, 0x52, 0x33, 0xa4, 0x64, 0x1a, 0xee, 0xb0, 0xdf, 0x30, - 0xbd, 0x03, 0x32, 0xbf, 0x9b, 0x19, 0x8d, 0x05, 0xd9, 0xf7, 0xe2, 0x76, 0x39, 0xf2, 0xe2, 0xf6, - 0x9e, 0x1b, 0x84, 0xb3, 0xbd, 0x37, 0x08, 0x07, 0xcb, 0x07, 0xb9, 0xc1, 0x8e, 0x2a, 0x7f, 0x3a, - 0x84, 0xe9, 0xd2, 0x2b, 0x88, 0xe8, 0x19, 0x78, 0x47, 0x37, 0x42, 0x75, 0xf6, 0x5e, 0x13, 0x76, - 0x4a, 0x49, 0x8d, 0x9a, 0x01, 0xec, 0xa5, 0xdf, 0x37, 0xfd, 0x6a, 0x16, 0xce, 0xd0, 0x7b, 0xaa, - 0xf7, 0x70, 0xc3, 0xe4, 0xef, 0x9b, 0x44, 0x7f, 0x34, 0x12, 0xa5, 0xe9, 0x33, 0xe0, 0xc8, 0x7d, - 0x07, 0x9c, 0x03, 0x87, 0x94, 0xb3, 0x03, 0x0e, 0x29, 0xe7, 0x92, 0xad, 0x1c, 0xfe, 0x4e, 0x58, - 0x7f, 0xd6, 0x79, 0xfd, 0xb9, 0x2b, 0x02, 0xa0, 0x7e, 0x72, 0x19, 0x89, 0x7d, 0xf3, 0x56, 0x5f, - 0x53, 0xea, 0x9c, 0xa6, 0xdc, 0x37, 0x3c, 0x23, 0xe9, 0x6b, 0xcb, 0x6f, 0x67, 0xe1, 0xaa, 0x80, - 0x99, 0x2a, 0xbe, 0xc2, 0x14, 0xe5, 0x93, 0x23, 0x51, 0x94, 0xe4, 0x31, 0x10, 0xd2, 0xd6, 0x98, - 0x3f, 0x16, 0x3e, 0x3b, 0xd4, 0x0b, 0x94, 0x2f, 0x9b, 0x08, 0x65, 0x39, 0x0d, 0x79, 0xda, 0xc3, - 0x30, 0x68, 0xd8, 0x5b, 0xc2, 0xee, 0x46, 0xec, 0xc4, 0x91, 0x28, 0x6f, 0x63, 0xd0, 0x1f, 0xb6, - 0xae, 0xd1, 0xd8, 0xb5, 0x8c, 0x8a, 0xe1, 0x98, 0xe8, 0x87, 0x46, 0xa2, 0x38, 0xbe, 0x37, 0x9c, - 0x3c, 0x8c, 0x37, 0xdc, 0x50, 0xab, 0x1c, 0x5e, 0x0d, 0x8e, 0x64, 0x95, 0x23, 0xa2, 0xf0, 0xf4, - 0xf1, 0x7b, 0x8b, 0x0c, 0xa7, 0xd9, 0x64, 0x6b, 0x81, 0xb7, 0x10, 0xd1, 0x43, 0xa3, 0x00, 0xf2, - 0xa4, 0x67, 0x26, 0xb1, 0x5b, 0xce, 0xc8, 0x0b, 0x7f, 0x52, 0x2a, 0xf6, 0x7e, 0x07, 0x6e, 0x3a, - 0xd8, 0xc3, 0xe1, 0x48, 0x90, 0x12, 0xbb, 0xd6, 0x21, 0x01, 0x1b, 0xe9, 0x63, 0xf6, 0x32, 0x19, - 0xf2, 0xf4, 0x9c, 0x16, 0xda, 0x48, 0xc5, 0x61, 0x82, 0x8f, 0xf2, 0x2c, 0xb0, 0x23, 0x97, 0xf8, - 0x92, 0xfb, 0xf4, 0xf6, 0xe2, 0x8e, 0xe8, 0x16, 0xfb, 0xaf, 0x4a, 0x30, 0x5d, 0xc7, 0x4e, 0x49, - 0xb3, 0x2c, 0x5d, 0xdb, 0x1a, 0x95, 0xc7, 0xb7, 0xa8, 0xf7, 0x30, 0xfa, 0x5a, 0x46, 0xf4, 0x3c, - 0x8d, 0xbf, 0x10, 0xee, 0xb1, 0x1a, 0x11, 0x4b, 0xf0, 0x31, 0xa1, 0x33, 0x33, 0x83, 0xa8, 0x8d, - 0xc1, 0x63, 0x5b, 0x82, 0x09, 0xef, 0x2c, 0xde, 0x6d, 0xdc, 0xf9, 0xcc, 0x6d, 0x67, 0xc7, 0x3b, - 0x06, 0x43, 0x9e, 0x0f, 0x9e, 0x01, 0x43, 0xaf, 0x4a, 0xe8, 0x28, 0x1f, 0x7f, 0x90, 0x30, 0x59, - 0x1b, 0x4b, 0xe2, 0x0e, 0x7f, 0x54, 0x47, 0x07, 0x7f, 0x73, 0x82, 0x2d, 0x47, 0xae, 0x6a, 0x0e, - 0x7e, 0x04, 0x7d, 0x4a, 0x86, 0x89, 0x3a, 0x76, 0xdc, 0xf1, 0x96, 0xbb, 0xdc, 0x74, 0x58, 0x0d, - 0x57, 0x42, 0x2b, 0x1e, 0x53, 0x6c, 0x0d, 0xe3, 0x01, 0x98, 0xea, 0x5a, 0x66, 0x0b, 0xdb, 0x36, - 0x5b, 0xbd, 0x08, 0x3b, 0xaa, 0xf5, 0x1b, 0xfd, 0x09, 0x6b, 0xf3, 0xeb, 0xde, 0x3f, 0x6a, 0xf0, - 0x7b, 0x52, 0x33, 0x80, 0x52, 0x62, 0x15, 0x1c, 0xb7, 0x19, 0x10, 0x57, 0x78, 0xfa, 0x40, 0x7f, - 0x5c, 0x86, 0x99, 0x3a, 0x76, 0x7c, 0x29, 0x26, 0xd8, 0xe4, 0x88, 0x86, 0x97, 0x83, 0x52, 0x3e, - 0x1c, 0x94, 0xe2, 0x57, 0x03, 0xf2, 0xd2, 0xf4, 0x89, 0x8d, 0xf1, 0x6a, 0x40, 0x31, 0x0e, 0xc6, - 0x70, 0x7c, 0xed, 0xc9, 0x30, 0x45, 0x78, 0x21, 0x0d, 0xf6, 0xc7, 0xb3, 0x41, 0xe3, 0xfd, 0x74, - 0x4a, 0x8d, 0xf7, 0x1e, 0xc8, 0xed, 0x68, 0xd6, 0x65, 0x9b, 0x34, 0xdc, 0x69, 0x11, 0xb3, 0x7d, - 0xcd, 0xcd, 0xae, 0xd2, 0xbf, 0xfa, 0xfb, 0x69, 0xe6, 0x92, 0xf9, 0x69, 0x3e, 0x26, 0x25, 0x1a, - 0x09, 0xe9, 0xdc, 0x61, 0x84, 0x4d, 0x3e, 0xc1, 0xb8, 0x19, 0x53, 0x76, 0xfa, 0xca, 0xf1, 0x12, - 0x19, 0x26, 0xdd, 0x71, 0x9b, 0xd8, 0xe3, 0x17, 0x0f, 0xaf, 0x0e, 0xfd, 0x0d, 0xfd, 0x84, 0x3d, - 0xb0, 0x27, 0x91, 0xd1, 0x99, 0xf7, 0x09, 0x7a, 0xe0, 0xb8, 0xc2, 0xd3, 0xc7, 0xe3, 0x6d, 0x14, - 0x0f, 0xd2, 0x1e, 0xd0, 0x2f, 0xc9, 0x20, 0x2f, 0x63, 0x67, 0xdc, 0x56, 0xe4, 0x9b, 0x85, 0x43, - 0x1c, 0x71, 0x02, 0x23, 0x3c, 0xcf, 0x2f, 0xe3, 0xd1, 0x34, 0x20, 0xb1, 0xd8, 0x46, 0x42, 0x0c, - 0xa4, 0x8f, 0xda, 0xbb, 0x28, 0x6a, 0x74, 0x73, 0xe1, 0x07, 0x47, 0xd0, 0xab, 0x8e, 0x77, 0xe1, - 0xc3, 0x13, 0x20, 0xa1, 0x71, 0x54, 0xed, 0xad, 0x5f, 0xe1, 0x63, 0xb9, 0x8a, 0x0f, 0xdc, 0xc6, - 0xbe, 0x8d, 0x5b, 0x97, 0x71, 0x1b, 0x7d, 0xdf, 0xe1, 0xa1, 0x3b, 0x03, 0x13, 0x2d, 0x4a, 0x8d, - 0x80, 0x37, 0xa9, 0x7a, 0xaf, 0x09, 0xee, 0x95, 0xe6, 0x3b, 0x22, 0xfa, 0xfb, 0x18, 0xef, 0x95, - 0x16, 0x28, 0x7e, 0x0c, 0x66, 0x0b, 0x9d, 0x65, 0x54, 0x5a, 0xa6, 0x81, 0xfe, 0xcb, 0xe1, 0x61, - 0xb9, 0x0e, 0xa6, 0xf4, 0x96, 0x69, 0x90, 0x30, 0x14, 0xde, 0x21, 0x20, 0x3f, 0xc1, 0xfb, 0x5a, - 0xde, 0x31, 0x1f, 0xd6, 0xd9, 0xae, 0x79, 0x90, 0x30, 0xac, 0x31, 0xe1, 0xb2, 0x7e, 0x54, 0xc6, - 0x44, 0x9f, 0xb2, 0xd3, 0x87, 0xec, 0x83, 0x81, 0x77, 0x1b, 0xed, 0x0a, 0x9f, 0x10, 0xab, 0xc0, - 0xc3, 0x0c, 0x67, 0xe1, 0x5a, 0x1c, 0xc9, 0x70, 0x16, 0xc3, 0xc0, 0x18, 0x6e, 0xac, 0x08, 0x70, - 0x4c, 0x7d, 0x0d, 0xf8, 0x10, 0xe8, 0x8c, 0xce, 0x3c, 0x1c, 0x12, 0x9d, 0xa3, 0x31, 0x11, 0xdf, - 0xcb, 0x42, 0x64, 0x32, 0x8b, 0x07, 0xfd, 0xd7, 0x51, 0x80, 0x73, 0xd7, 0x30, 0xfe, 0x0a, 0xd4, - 0x5b, 0x21, 0xc1, 0x8d, 0xd8, 0x07, 0x24, 0xe8, 0x52, 0x19, 0xe3, 0x5d, 0xf1, 0x22, 0xe5, 0xa7, - 0x0f, 0xe0, 0x8b, 0x65, 0x98, 0x23, 0x3e, 0x02, 0x1d, 0xac, 0x59, 0xb4, 0xa3, 0x1c, 0x89, 0xa3, - 0xfc, 0xdb, 0x84, 0x03, 0xfc, 0xf0, 0x72, 0x08, 0xf8, 0x18, 0x09, 0x14, 0x62, 0xd1, 0x7d, 0x04, - 0x59, 0x18, 0xcb, 0x36, 0x4a, 0xc1, 0x67, 0x81, 0xa9, 0xf8, 0x68, 0xf0, 0x48, 0xe8, 0x91, 0xcb, - 0x0b, 0xc3, 0x6b, 0x6c, 0x63, 0xf6, 0xc8, 0x15, 0x61, 0x22, 0x7d, 0x4c, 0x7e, 0xe9, 0x76, 0xb6, - 0xe0, 0xdc, 0x20, 0x17, 0xc6, 0xbf, 0x26, 0xeb, 0x9f, 0x68, 0xfb, 0xf8, 0x48, 0x3c, 0x30, 0x0f, - 0x11, 0x10, 0x5f, 0x81, 0xac, 0x65, 0x5e, 0xa1, 0x4b, 0x5b, 0xb3, 0x2a, 0x79, 0xa6, 0xd7, 0x53, - 0x76, 0x76, 0x77, 0x0c, 0x7a, 0x32, 0x74, 0x56, 0xf5, 0x5e, 0x95, 0x1b, 0x61, 0xf6, 0x8a, 0xee, - 0x6c, 0xaf, 0x60, 0xad, 0x8d, 0x2d, 0xd5, 0xbc, 0x42, 0x3c, 0xe6, 0x26, 0x55, 0x3e, 0x91, 0xf7, - 0x5f, 0x11, 0xb0, 0x2f, 0xc9, 0x2d, 0xf2, 0x63, 0x39, 0xfe, 0x96, 0xc4, 0xf2, 0x8c, 0xe6, 0x2a, - 0x7d, 0x85, 0x79, 0xb7, 0x0c, 0x53, 0xaa, 0x79, 0x85, 0x29, 0xc9, 0xff, 0x71, 0xb4, 0x3a, 0x92, - 0x78, 0xa2, 0x47, 0x24, 0xe7, 0xb3, 0x3f, 0xf6, 0x89, 0x5e, 0x6c, 0xf1, 0x63, 0x39, 0xb9, 0x34, - 0xa3, 0x9a, 0x57, 0xea, 0xd8, 0xa1, 0x2d, 0x02, 0x35, 0x47, 0xe4, 0x64, 0xad, 0xdb, 0x94, 0x20, - 0x9b, 0x87, 0xfb, 0xef, 0x49, 0x77, 0x11, 0x7c, 0x01, 0xf9, 0x2c, 0x8e, 0x7b, 0x17, 0x61, 0x20, - 0x07, 0x63, 0x88, 0x91, 0x22, 0xc3, 0xb4, 0x6a, 0x5e, 0x71, 0x87, 0x86, 0x25, 0xbd, 0xd3, 0x19, - 0xcd, 0x08, 0x99, 0xd4, 0xf8, 0xf7, 0xc4, 0xe0, 0x71, 0x31, 0x76, 0xe3, 0x7f, 0x00, 0x03, 0xe9, - 0xc3, 0xf0, 0x42, 0xda, 0x58, 0xbc, 0x11, 0xda, 0x18, 0x0d, 0x0e, 0xc3, 0x36, 0x08, 0x9f, 0x8d, - 0x23, 0x6b, 0x10, 0x51, 0x1c, 0x8c, 0x65, 0xe7, 0x64, 0xae, 0x44, 0x86, 0xf9, 0xd1, 0xb6, 0x89, - 0x77, 0x24, 0x73, 0x4d, 0x64, 0xc3, 0x2e, 0xc7, 0xc8, 0x48, 0xd0, 0x48, 0xe0, 0x82, 0x28, 0xc0, - 0x43, 0xfa, 0x78, 0xfc, 0x9e, 0x0c, 0x33, 0x94, 0x85, 0x27, 0x88, 0x15, 0x30, 0x54, 0xa3, 0x0a, - 0xd7, 0xe0, 0x68, 0x1a, 0x55, 0x0c, 0x07, 0x63, 0xb9, 0x15, 0xd4, 0xb5, 0xe3, 0x86, 0x38, 0x3e, - 0x1e, 0x85, 0xe0, 0xd0, 0xc6, 0xd8, 0x08, 0x8f, 0x90, 0x0f, 0x63, 0x8c, 0x1d, 0xd1, 0x31, 0xf2, - 0x17, 0xfa, 0xad, 0x68, 0x94, 0x18, 0x1c, 0xa2, 0x29, 0x8c, 0x10, 0x86, 0x21, 0x9b, 0xc2, 0x11, - 0x21, 0xf1, 0x39, 0x19, 0x80, 0x32, 0xb0, 0x66, 0xee, 0x91, 0xcb, 0x7c, 0x46, 0xd0, 0x9d, 0xf5, - 0xba, 0xd5, 0xcb, 0x03, 0xdc, 0xea, 0x13, 0x86, 0x70, 0x49, 0xba, 0x12, 0x18, 0x92, 0xb2, 0x5b, - 0xc9, 0xb1, 0xaf, 0x04, 0xc6, 0x97, 0x9f, 0x3e, 0xc6, 0x8f, 0x53, 0x6b, 0x2e, 0x38, 0x60, 0xfa, - 0xb3, 0x23, 0x41, 0x39, 0x34, 0xfb, 0x97, 0xf9, 0xd9, 0xff, 0x21, 0xb0, 0x1d, 0xd6, 0x46, 0x1c, - 0x74, 0x70, 0x34, 0x7d, 0x1b, 0xf1, 0xe8, 0x0e, 0x88, 0xfe, 0x60, 0x16, 0x8e, 0xb3, 0x4e, 0xe4, - 0x5b, 0x01, 0xe2, 0x84, 0xe7, 0xf0, 0xb8, 0x4e, 0x72, 0x00, 0xca, 0xa3, 0x5a, 0x90, 0x4a, 0xb2, - 0x94, 0x29, 0xc0, 0xde, 0x58, 0x56, 0x37, 0xf2, 0xe5, 0x47, 0xba, 0x9a, 0xd1, 0x16, 0x0f, 0xf7, - 0x3b, 0x00, 0x78, 0x6f, 0xad, 0x51, 0xe6, 0xd7, 0x1a, 0xfb, 0xac, 0x4c, 0x26, 0xde, 0xb9, 0x26, - 0x22, 0xa3, 0xec, 0x8e, 0x7d, 0xe7, 0x3a, 0xba, 0xec, 0xf4, 0x51, 0x7a, 0x87, 0x0c, 0xd9, 0xba, - 0x69, 0x39, 0xe8, 0x45, 0x49, 0x5a, 0x27, 0x95, 0x7c, 0x00, 0x92, 0xf7, 0xae, 0x94, 0xb8, 0x5b, - 0x9a, 0x6f, 0x8b, 0x3f, 0xea, 0xac, 0x39, 0x1a, 0xf1, 0xea, 0x76, 0xcb, 0x0f, 0x5d, 0xd7, 0x9c, - 0x34, 0x9e, 0x0e, 0x95, 0x5f, 0x3d, 0xfa, 0x00, 0x46, 0x6a, 0xf1, 0x74, 0x22, 0x4b, 0x4e, 0x1f, - 0xb7, 0xd7, 0x1d, 0x67, 0xbe, 0xad, 0x4b, 0x7a, 0x07, 0xa3, 0x17, 0x51, 0x97, 0x91, 0xaa, 0xb6, - 0x83, 0xc5, 0x8f, 0xc4, 0xc4, 0xba, 0xb6, 0x92, 0xf8, 0xb2, 0x72, 0x10, 0x5f, 0x36, 0x69, 0x83, - 0xa2, 0x07, 0xd0, 0x29, 0x4b, 0xe3, 0x6e, 0x50, 0x31, 0x65, 0x8f, 0x25, 0x4e, 0xe7, 0x89, 0x3a, - 0x76, 0xa8, 0x51, 0x59, 0xf3, 0x6e, 0x60, 0xf9, 0xfe, 0x91, 0x44, 0xec, 0xf4, 0x2f, 0x78, 0x91, - 0x7b, 0x2e, 0x78, 0x79, 0x77, 0x18, 0x9c, 0x35, 0x1e, 0x9c, 0xef, 0x8e, 0x16, 0x10, 0xcf, 0xe4, - 0x48, 0x60, 0x7a, 0xb3, 0x0f, 0xd3, 0x3a, 0x07, 0xd3, 0xdd, 0x43, 0x72, 0x91, 0x3e, 0x60, 0x3f, - 0x91, 0x83, 0xe3, 0x74, 0xd2, 0x5f, 0x34, 0xda, 0x2c, 0xc2, 0xea, 0x1b, 0xa5, 0x23, 0xde, 0x6c, - 0x3b, 0x18, 0x82, 0x95, 0x8b, 0xe5, 0x9c, 0xeb, 0xbd, 0x1d, 0x7f, 0x81, 0x86, 0x73, 0x75, 0x3b, - 0x51, 0xb2, 0xd3, 0x26, 0x7e, 0x43, 0xbe, 0xff, 0x1f, 0x7f, 0x97, 0xd1, 0x84, 0xf8, 0x5d, 0x46, - 0x7f, 0x92, 0x6c, 0xdd, 0x8e, 0x14, 0xdd, 0x23, 0xf0, 0x94, 0x6d, 0xa7, 0x04, 0x2b, 0x7a, 0x02, - 0xdc, 0x7d, 0x7b, 0xb8, 0x93, 0x05, 0x11, 0x44, 0x86, 0x74, 0x27, 0x23, 0x04, 0x8e, 0xd2, 0x9d, - 0x6c, 0x10, 0x03, 0x63, 0xb8, 0xd5, 0x3e, 0xc7, 0x76, 0xf3, 0x49, 0xbb, 0x41, 0x7f, 0x25, 0xa5, - 0x3e, 0x4a, 0x7f, 0x3d, 0x93, 0xc8, 0xff, 0x99, 0xf0, 0x15, 0x3f, 0x4c, 0x27, 0xf1, 0x68, 0x8e, - 0x23, 0x37, 0x86, 0x75, 0x23, 0x89, 0xf8, 0xa2, 0x5f, 0xd4, 0xdb, 0xce, 0xf6, 0x88, 0x4e, 0x74, - 0x5c, 0x71, 0x69, 0x79, 0xd7, 0x23, 0x93, 0x17, 0xf4, 0x6f, 0x99, 0x44, 0x21, 0xa4, 0x7c, 0x91, - 0x10, 0xb6, 0x22, 0x44, 0x9c, 0x20, 0xf0, 0x53, 0x2c, 0xbd, 0x31, 0x6a, 0xf4, 0x05, 0xbd, 0x8d, - 0xcd, 0x27, 0xa0, 0x46, 0x13, 0xbe, 0x46, 0xa7, 0xd1, 0x71, 0xe4, 0xbe, 0x4d, 0x35, 0xda, 0x17, - 0xc9, 0x88, 0x34, 0x3a, 0x96, 0x5e, 0xfa, 0x32, 0x7e, 0xd5, 0x0c, 0x9b, 0x48, 0xad, 0xea, 0xc6, - 0x65, 0xf4, 0xcf, 0x79, 0xef, 0x62, 0xe6, 0x8b, 0xba, 0xb3, 0xcd, 0x62, 0xc1, 0xfc, 0xb6, 0xf0, - 0xdd, 0x28, 0x43, 0xc4, 0x7b, 0xe1, 0xc3, 0x49, 0xe5, 0x0e, 0x84, 0x93, 0x2a, 0xc2, 0xac, 0x6e, - 0x38, 0xd8, 0x32, 0xb4, 0xce, 0x52, 0x47, 0xdb, 0xb2, 0xcf, 0x4c, 0xf4, 0xbd, 0xbc, 0xae, 0x12, - 0xca, 0xa3, 0xf2, 0x7f, 0x84, 0xaf, 0xaf, 0x9c, 0xe4, 0xaf, 0xaf, 0x8c, 0x88, 0x7e, 0x35, 0x15, - 0x1d, 0xfd, 0xca, 0x8f, 0x6e, 0x05, 0x83, 0x83, 0x63, 0x8b, 0xda, 0xc6, 0x09, 0xc3, 0xfd, 0xdd, - 0x26, 0x18, 0x85, 0xcd, 0x0f, 0xfd, 0xf8, 0x8b, 0x72, 0xa2, 0xd5, 0x3d, 0x57, 0x11, 0xe6, 0x7b, - 0x95, 0x20, 0xb1, 0x85, 0x1a, 0xae, 0xbc, 0xdc, 0x53, 0x79, 0xdf, 0xe4, 0xc9, 0x0a, 0x98, 0x3c, - 0x61, 0xa5, 0xca, 0x89, 0x29, 0x55, 0x92, 0xc5, 0x42, 0x91, 0xda, 0x8e, 0xe1, 0x34, 0x52, 0x0e, - 0x4e, 0x78, 0xd1, 0x6e, 0xbb, 0x5d, 0xac, 0x59, 0x9a, 0xd1, 0xc2, 0xe8, 0x83, 0xd2, 0x28, 0xcc, - 0xde, 0x25, 0x98, 0xd4, 0x5b, 0xa6, 0x51, 0xd7, 0x9f, 0xe7, 0x5d, 0x2e, 0x17, 0x1f, 0x64, 0x9d, - 0x48, 0xa4, 0xc2, 0xfe, 0x50, 0xfd, 0x7f, 0x95, 0x0a, 0x4c, 0xb5, 0x34, 0xab, 0x4d, 0x83, 0xf0, - 0xe5, 0x7a, 0x2e, 0x72, 0x8a, 0x24, 0x54, 0xf2, 0x7e, 0x51, 0x83, 0xbf, 0x95, 0x1a, 0x2f, 0xc4, - 0x7c, 0x4f, 0x34, 0x8f, 0x48, 0x62, 0x8b, 0xc1, 0x4f, 0x9c, 0xcc, 0x5d, 0xe9, 0x58, 0xb8, 0x43, - 0xee, 0xa0, 0xa7, 0x3d, 0xc4, 0x94, 0x1a, 0x24, 0x24, 0x5d, 0x1e, 0x20, 0x45, 0x1d, 0x40, 0x63, - 0xdc, 0xcb, 0x03, 0x42, 0x5c, 0xa4, 0xaf, 0x99, 0x6f, 0xcd, 0xc3, 0x2c, 0xed, 0xd5, 0x98, 0x38, - 0xd1, 0x8b, 0xc9, 0x15, 0xd2, 0xce, 0x83, 0x78, 0x1f, 0xd5, 0x0f, 0x3f, 0x26, 0x17, 0x40, 0xbe, - 0xec, 0x07, 0x1c, 0x74, 0x1f, 0x93, 0xee, 0xdb, 0x7b, 0x7c, 0xcd, 0x53, 0x9e, 0xc6, 0xbd, 0x6f, - 0x1f, 0x5f, 0x7c, 0xfa, 0xf8, 0xfc, 0xa4, 0x0c, 0x72, 0xb1, 0xdd, 0x46, 0xad, 0xc3, 0x43, 0x71, - 0x0e, 0xa6, 0xbd, 0x36, 0x13, 0xc4, 0x80, 0x0c, 0x27, 0x25, 0x5d, 0x04, 0xf5, 0x65, 0x53, 0x6c, - 0x8f, 0x7d, 0x57, 0x21, 0xa6, 0xec, 0xf4, 0x41, 0xf9, 0xd9, 0x09, 0xd6, 0x68, 0x16, 0x4c, 0xf3, - 0x32, 0x39, 0x2a, 0xf3, 0x22, 0x19, 0x72, 0x4b, 0xd8, 0x69, 0x6d, 0x8f, 0xa8, 0xcd, 0xec, 0x5a, - 0x1d, 0xaf, 0xcd, 0x1c, 0xb8, 0x0f, 0x7f, 0xb0, 0x0d, 0xeb, 0xb1, 0x35, 0x4f, 0x58, 0x1a, 0x77, - 0x74, 0xe7, 0xd8, 0xd2, 0xd3, 0x07, 0xe7, 0xdf, 0x64, 0x98, 0xf3, 0x57, 0xb8, 0x28, 0x26, 0x3f, - 0x91, 0x79, 0xa2, 0xad, 0x77, 0xa2, 0x4f, 0x26, 0x0b, 0x91, 0xe6, 0xcb, 0x94, 0xaf, 0x59, 0xca, - 0x0b, 0x8b, 0x09, 0x82, 0xa7, 0x89, 0x31, 0x38, 0x86, 0x19, 0xbc, 0x0c, 0x93, 0x84, 0xa1, 0x45, - 0x7d, 0x8f, 0xb8, 0x0e, 0x72, 0x0b, 0x8d, 0xcf, 0x1f, 0xc9, 0x42, 0xe3, 0xdd, 0xfc, 0x42, 0xa3, - 0x60, 0xc4, 0x63, 0x6f, 0x9d, 0x31, 0xa1, 0x2f, 0x8d, 0xfb, 0xff, 0xc8, 0x97, 0x19, 0x13, 0xf8, - 0xd2, 0x0c, 0x28, 0x3f, 0x7d, 0x44, 0x7f, 0xf1, 0x3f, 0xb1, 0xce, 0xd6, 0xdb, 0x50, 0x45, 0xff, - 0xf3, 0x04, 0x64, 0x2f, 0xb8, 0x0f, 0xff, 0x3b, 0xb8, 0x11, 0xeb, 0x95, 0x23, 0x08, 0xce, 0x70, - 0x2f, 0x64, 0x5d, 0xfa, 0x6c, 0xda, 0x72, 0x8b, 0xd8, 0xee, 0xae, 0xcb, 0x88, 0x4a, 0xfe, 0x53, - 0x4e, 0x43, 0xde, 0x36, 0x77, 0xad, 0x96, 0x6b, 0x3e, 0xbb, 0x1a, 0xc3, 0xde, 0x92, 0x06, 0x25, - 0xe5, 0x48, 0xcf, 0x8f, 0xce, 0x65, 0x34, 0x74, 0x41, 0x92, 0xcc, 0x5d, 0x90, 0x94, 0x60, 0xff, - 0x40, 0x80, 0xb7, 0xf4, 0x35, 0xe2, 0xaf, 0xc8, 0x5d, 0x81, 0xed, 0x51, 0xc1, 0x1e, 0x21, 0x96, - 0xc3, 0xaa, 0x43, 0x52, 0x87, 0x6f, 0x5e, 0xb4, 0x7e, 0x1c, 0xf8, 0xb1, 0x3a, 0x7c, 0x0b, 0xf0, - 0x30, 0x96, 0x53, 0xea, 0x79, 0xe6, 0xa4, 0xfa, 0xd0, 0x28, 0xd1, 0xcd, 0x72, 0x4a, 0x7f, 0x28, - 0x74, 0x46, 0xe8, 0xbc, 0x3a, 0x34, 0x3a, 0x47, 0xe4, 0xbe, 0xfa, 0xfb, 0x32, 0x89, 0x84, 0xe9, - 0x19, 0x39, 0xe2, 0x17, 0x1d, 0x25, 0x86, 0xc8, 0x1d, 0x83, 0xb9, 0x38, 0xd0, 0xb3, 0xc3, 0x87, - 0x06, 0xe7, 0x45, 0x17, 0xe2, 0x7f, 0xdc, 0xa1, 0xc1, 0x45, 0x19, 0x49, 0x1f, 0xc8, 0x37, 0xd0, - 0x8b, 0xc5, 0x8a, 0x2d, 0x47, 0xdf, 0x1b, 0x71, 0x4b, 0xe3, 0x87, 0x97, 0x84, 0xd1, 0x80, 0x0f, - 0x48, 0x88, 0x72, 0x38, 0xee, 0x68, 0xc0, 0x62, 0x6c, 0xa4, 0x0f, 0xd3, 0xdf, 0xe6, 0x5d, 0xe9, - 0xb1, 0xb5, 0x99, 0x5f, 0x62, 0xab, 0x01, 0xf8, 0xf0, 0x68, 0x9d, 0x87, 0x99, 0xd0, 0xd4, 0xdf, - 0xbb, 0xb0, 0x86, 0x4b, 0x4b, 0x7a, 0xd0, 0xdd, 0x17, 0xd9, 0xc8, 0x17, 0x06, 0x12, 0x2c, 0xf8, - 0x8a, 0x30, 0x31, 0x96, 0xfb, 0xe0, 0xbc, 0x31, 0x6c, 0x4c, 0x58, 0xfd, 0x76, 0x18, 0xab, 0x1a, - 0x8f, 0xd5, 0x9d, 0x22, 0x62, 0x12, 0x1b, 0xd3, 0x84, 0xe6, 0x8d, 0x6f, 0xf1, 0xe1, 0x52, 0x39, - 0xb8, 0xee, 0x1d, 0x9a, 0x8f, 0xf4, 0x11, 0xfb, 0x39, 0xda, 0x1d, 0xd6, 0xa9, 0xc9, 0x3e, 0x9a, - 0xee, 0x90, 0xcd, 0x06, 0x64, 0x6e, 0x36, 0x90, 0xd0, 0xdf, 0x3e, 0x70, 0x23, 0xf5, 0x98, 0x1b, - 0x04, 0x51, 0x76, 0xc4, 0xfe, 0xf6, 0x03, 0x39, 0x48, 0x1f, 0x9c, 0x7f, 0x94, 0x01, 0x96, 0x2d, - 0x73, 0xb7, 0x5b, 0xb3, 0xda, 0xd8, 0x42, 0x7f, 0x13, 0x4c, 0x00, 0x5e, 0x3e, 0x82, 0x09, 0xc0, - 0x3a, 0xc0, 0x96, 0x4f, 0x9c, 0x69, 0xf8, 0xed, 0x62, 0xe6, 0x7e, 0xc0, 0x94, 0x1a, 0xa2, 0xc1, - 0x5f, 0x39, 0xfb, 0x3d, 0x3c, 0xc6, 0x71, 0x7d, 0x56, 0x40, 0x6e, 0x94, 0x13, 0x80, 0xb7, 0xf9, - 0x58, 0x37, 0x38, 0xac, 0xef, 0x3f, 0x04, 0x27, 0xe9, 0x63, 0xfe, 0x4f, 0x13, 0x30, 0x4d, 0xb7, - 0xeb, 0xa8, 0x4c, 0xff, 0x3e, 0x00, 0xfd, 0x67, 0x47, 0x00, 0xfa, 0x06, 0xcc, 0x98, 0x01, 0x75, - 0xda, 0xa7, 0x86, 0x17, 0x60, 0x62, 0x61, 0x0f, 0xf1, 0xa5, 0x72, 0x64, 0xd0, 0xfb, 0xc3, 0xc8, - 0xab, 0x3c, 0xf2, 0x77, 0xc7, 0xc8, 0x3b, 0x44, 0x71, 0x94, 0xd0, 0xbf, 0xdd, 0x87, 0x7e, 0x83, - 0x83, 0xbe, 0x78, 0x18, 0x56, 0xc6, 0x10, 0x6e, 0x5f, 0x86, 0x2c, 0x39, 0x1d, 0xf7, 0xab, 0x29, - 0xce, 0xef, 0xcf, 0xc0, 0x04, 0x69, 0xb2, 0xfe, 0xbc, 0xc3, 0x7b, 0x75, 0xbf, 0x68, 0x9b, 0x0e, - 0xb6, 0x7c, 0x8f, 0x05, 0xef, 0xd5, 0xe5, 0xc1, 0xf3, 0x4a, 0xb6, 0xcf, 0xe4, 0xe9, 0x46, 0xa4, - 0x9f, 0x30, 0xf4, 0xa4, 0x24, 0x2c, 0xf1, 0x91, 0x9d, 0x97, 0x1b, 0x66, 0x52, 0x32, 0x80, 0x91, - 0xf4, 0x81, 0xff, 0x8b, 0x2c, 0x9c, 0xa1, 0xab, 0x4a, 0x4b, 0x96, 0xb9, 0xd3, 0x73, 0xbb, 0x95, - 0x7e, 0x78, 0x5d, 0xb8, 0x09, 0xe6, 0x1c, 0xce, 0x1f, 0x9b, 0xe9, 0x44, 0x4f, 0x2a, 0xfa, 0xd3, - 0xb0, 0x4f, 0xc5, 0x73, 0x79, 0x24, 0x17, 0x62, 0x04, 0x18, 0xc5, 0x7b, 0xe2, 0x85, 0x7a, 0x41, - 0x46, 0x43, 0x8b, 0x54, 0xf2, 0x50, 0x6b, 0x96, 0xbe, 0x4e, 0xe5, 0x44, 0x74, 0xea, 0x3d, 0xbe, - 0x4e, 0x7d, 0x1f, 0xa7, 0x53, 0xcb, 0x87, 0x17, 0x49, 0xfa, 0xba, 0xf5, 0x1a, 0x7f, 0x63, 0xc8, - 0xdf, 0xb6, 0xdb, 0x49, 0x61, 0xb3, 0x2e, 0xec, 0x8f, 0x94, 0xe5, 0xfc, 0x91, 0xf8, 0xfb, 0x28, - 0x12, 0xcc, 0x84, 0x79, 0xae, 0x23, 0x74, 0x69, 0x0e, 0x24, 0xdd, 0xe3, 0x4e, 0xd2, 0xdb, 0x43, - 0xcd, 0x75, 0x63, 0x0b, 0x1a, 0xc3, 0xda, 0xd2, 0x1c, 0xe4, 0x97, 0xf4, 0x8e, 0x83, 0x2d, 0xf4, - 0x38, 0x9b, 0xe9, 0xbe, 0x26, 0xc5, 0x01, 0x60, 0x11, 0xf2, 0x9b, 0xa4, 0x34, 0x66, 0x32, 0xdf, - 0x2a, 0xd6, 0x7a, 0x28, 0x87, 0x2a, 0xfb, 0x37, 0x69, 0x74, 0xbe, 0x1e, 0x32, 0x23, 0x9b, 0x22, - 0x27, 0x88, 0xce, 0x37, 0x98, 0x85, 0xb1, 0x5c, 0x4c, 0x95, 0x57, 0xf1, 0x8e, 0x3b, 0xc6, 0x5f, - 0x4e, 0x0f, 0xe1, 0x02, 0xc8, 0x7a, 0xdb, 0x26, 0x9d, 0xe3, 0x94, 0xea, 0x3e, 0x26, 0xf5, 0x15, - 0xea, 0x15, 0x15, 0x65, 0x79, 0xdc, 0xbe, 0x42, 0x42, 0x5c, 0xa4, 0x8f, 0xd9, 0xd7, 0x89, 0xa3, - 0x68, 0xb7, 0xa3, 0xb5, 0xb0, 0xcb, 0x7d, 0x6a, 0xa8, 0xd1, 0x9e, 0x2c, 0xeb, 0xf5, 0x64, 0xa1, - 0x76, 0x9a, 0x3b, 0x44, 0x3b, 0x1d, 0x76, 0x19, 0xd2, 0x97, 0x39, 0xa9, 0xf8, 0x91, 0x2d, 0x43, - 0xc6, 0xb2, 0x31, 0x86, 0x6b, 0x47, 0xbd, 0x83, 0xb4, 0x63, 0x6d, 0xad, 0xc3, 0x6e, 0xd2, 0x30, - 0x61, 0x8d, 0xec, 0xd0, 0xec, 0x30, 0x9b, 0x34, 0xd1, 0x3c, 0x8c, 0x01, 0xad, 0x39, 0x86, 0xd6, - 0x27, 0xd8, 0x30, 0x9a, 0xf2, 0x3e, 0xa9, 0x6d, 0x5a, 0x4e, 0xb2, 0x7d, 0x52, 0x97, 0x3b, 0x95, - 0xfc, 0x97, 0xf4, 0xe0, 0x15, 0x7f, 0xae, 0x7a, 0x54, 0xc3, 0x67, 0x82, 0x83, 0x57, 0x83, 0x18, - 0x48, 0x1f, 0xde, 0x37, 0x1d, 0xd1, 0xe0, 0x39, 0x6c, 0x73, 0x64, 0x6d, 0x60, 0x64, 0x43, 0xe7, - 0x30, 0xcd, 0x31, 0x9a, 0x87, 0xf4, 0xf1, 0xfa, 0x4a, 0x68, 0xe0, 0xfc, 0x95, 0x31, 0x0e, 0x9c, - 0x5e, 0xcb, 0xcc, 0x0d, 0xd9, 0x32, 0x87, 0xdd, 0xff, 0x61, 0xb2, 0x1e, 0xdd, 0x80, 0x39, 0xcc, - 0xfe, 0x4f, 0x0c, 0x13, 0xe9, 0x23, 0xfe, 0x46, 0x19, 0x72, 0xf5, 0xf1, 0x8f, 0x97, 0xc3, 0xce, - 0x45, 0x88, 0xac, 0xea, 0x23, 0x1b, 0x2e, 0x87, 0x99, 0x8b, 0x44, 0xb2, 0x30, 0x86, 0xc0, 0xfb, - 0xc7, 0x61, 0x86, 0x2c, 0x89, 0x78, 0xdb, 0xac, 0x5f, 0x61, 0xa3, 0xe6, 0x63, 0x29, 0xb6, 0xd5, - 0x07, 0x60, 0xd2, 0xdb, 0xbf, 0x63, 0x23, 0xe7, 0xbc, 0x58, 0xfb, 0xf4, 0xb8, 0x54, 0xfd, 0xff, - 0x0f, 0xe5, 0x0c, 0x31, 0xf2, 0xbd, 0xda, 0x61, 0x9d, 0x21, 0x8e, 0x74, 0xbf, 0xf6, 0x4f, 0x82, - 0x11, 0xf5, 0xbf, 0xa4, 0x87, 0x79, 0xef, 0x3e, 0x6e, 0xb6, 0xcf, 0x3e, 0xee, 0x07, 0xc3, 0x58, - 0xd6, 0x79, 0x2c, 0xef, 0x11, 0x15, 0xe1, 0x08, 0xc7, 0xda, 0x77, 0xf8, 0x70, 0x5e, 0xe0, 0xe0, - 0x5c, 0x38, 0x14, 0x2f, 0x63, 0x38, 0xf8, 0x98, 0x0d, 0xc6, 0xdc, 0x0f, 0xa5, 0xd8, 0x8e, 0x7b, - 0x4e, 0x55, 0x64, 0x0f, 0x9c, 0xaa, 0xe0, 0x5a, 0x7a, 0xee, 0x90, 0x2d, 0xfd, 0x43, 0x61, 0xed, - 0x68, 0xf0, 0xda, 0x71, 0xaf, 0x38, 0x22, 0xa3, 0x1b, 0x99, 0xdf, 0xe9, 0xab, 0xc7, 0x45, 0x4e, - 0x3d, 0x4a, 0x87, 0x63, 0x26, 0x7d, 0xfd, 0xf8, 0x03, 0x6f, 0x42, 0x7b, 0xc4, 0xed, 0x7d, 0xd8, - 0xad, 0x62, 0x4e, 0x88, 0x23, 0x1b, 0xb9, 0x87, 0xd9, 0x2a, 0x1e, 0xc4, 0xc9, 0x18, 0x62, 0xb1, - 0xcd, 0xc2, 0x34, 0xe1, 0xe9, 0xa2, 0xde, 0xde, 0xc2, 0x0e, 0xfa, 0x45, 0xea, 0xa3, 0xe8, 0x45, - 0xbe, 0x1c, 0x51, 0x78, 0xa2, 0xa8, 0xf3, 0xae, 0x49, 0x3d, 0x3a, 0x28, 0x93, 0xf3, 0x21, 0x06, - 0xc7, 0x1d, 0x41, 0x71, 0x20, 0x07, 0xe9, 0x43, 0xf6, 0x7e, 0xea, 0x6e, 0xb3, 0xaa, 0xed, 0x9b, - 0xbb, 0x0e, 0x7a, 0x74, 0x04, 0x1d, 0xf4, 0x02, 0xe4, 0x3b, 0x84, 0x1a, 0x3b, 0x96, 0x11, 0x3f, - 0xdd, 0x61, 0x22, 0xa0, 0xe5, 0xab, 0xec, 0xcf, 0xa4, 0x67, 0x33, 0x02, 0x39, 0x52, 0x3a, 0xe3, - 0x3e, 0x9b, 0x31, 0xa0, 0xfc, 0xb1, 0xdc, 0xb1, 0x33, 0xe9, 0x96, 0xae, 0xef, 0xe8, 0xce, 0x88, - 0x22, 0x38, 0x74, 0x5c, 0x5a, 0x5e, 0x04, 0x07, 0xf2, 0x92, 0xf4, 0xc4, 0x68, 0x48, 0x2a, 0xee, - 0xef, 0xe3, 0x3e, 0x31, 0x1a, 0x5f, 0x7c, 0xfa, 0x98, 0xfc, 0x34, 0x6d, 0x59, 0x17, 0xa8, 0xf3, - 0x6d, 0x8a, 0x7e, 0xbd, 0x43, 0x37, 0x16, 0xca, 0xda, 0xd1, 0x35, 0x96, 0xbe, 0xe5, 0xa7, 0x0f, - 0xcc, 0x7f, 0xff, 0x4e, 0xc8, 0x2d, 0xe2, 0x4b, 0xbb, 0x5b, 0xe8, 0x6e, 0x98, 0x6c, 0x58, 0x18, - 0x57, 0x8c, 0x4d, 0xd3, 0x95, 0xae, 0xe3, 0x3e, 0x7b, 0x90, 0xb0, 0x37, 0x17, 0x8f, 0x6d, 0xac, - 0xb5, 0x83, 0xf3, 0x67, 0xde, 0x2b, 0x7a, 0xa5, 0x04, 0xd9, 0xba, 0xa3, 0x39, 0x68, 0xca, 0xc7, - 0x16, 0x3d, 0x1a, 0xc6, 0xe2, 0x6e, 0x1e, 0x8b, 0x9b, 0x38, 0x59, 0x10, 0x0e, 0xe6, 0xdd, 0xff, - 0x23, 0x00, 0x40, 0x30, 0xf9, 0xb0, 0x6d, 0x1a, 0x6e, 0x0e, 0xef, 0x08, 0xa4, 0xf7, 0x8e, 0x5e, - 0xed, 0x8b, 0xfb, 0x3e, 0x4e, 0xdc, 0x4f, 0x15, 0x2b, 0x62, 0x0c, 0x2b, 0x6d, 0x12, 0x4c, 0xb9, - 0xa2, 0x5d, 0xc1, 0x5a, 0xdb, 0x46, 0xdf, 0x11, 0x28, 0x7f, 0x84, 0x98, 0xd1, 0x7b, 0x85, 0x83, - 0x71, 0xd2, 0x5a, 0xf9, 0xc4, 0xa3, 0x3d, 0x3a, 0xbc, 0xcd, 0x7f, 0x89, 0x0f, 0x46, 0x72, 0x1b, - 0x64, 0x75, 0x63, 0xd3, 0x64, 0xfe, 0x85, 0xd7, 0x46, 0xd0, 0x76, 0x75, 0x42, 0x25, 0x19, 0x05, - 0x23, 0x75, 0xc6, 0xb3, 0x35, 0x96, 0x4b, 0xef, 0xb2, 0x6e, 0xe9, 0xe8, 0xff, 0x3f, 0x50, 0xd8, - 0x8a, 0x02, 0xd9, 0xae, 0xe6, 0x6c, 0xb3, 0xa2, 0xc9, 0xb3, 0x6b, 0x23, 0xef, 0x1a, 0x9a, 0x61, - 0x1a, 0xfb, 0x3b, 0xfa, 0xf3, 0xfc, 0xbb, 0x75, 0xb9, 0x34, 0x97, 0xf3, 0x2d, 0x6c, 0x60, 0x4b, - 0x73, 0x70, 0x7d, 0x6f, 0x8b, 0xcc, 0xb1, 0x26, 0xd5, 0x70, 0x52, 0x62, 0xfd, 0x77, 0x39, 0x8e, - 0xd6, 0xff, 0x4d, 0xbd, 0x83, 0x49, 0xa4, 0x26, 0xa6, 0xff, 0xde, 0x7b, 0x22, 0xfd, 0xef, 0x53, - 0x44, 0xfa, 0x68, 0x7c, 0x43, 0x82, 0x99, 0xba, 0xab, 0x70, 0xf5, 0xdd, 0x9d, 0x1d, 0xcd, 0xda, - 0x47, 0x37, 0x04, 0xa8, 0x84, 0x54, 0x33, 0xc3, 0xfb, 0xa5, 0xfc, 0xbe, 0xf0, 0xb5, 0xd2, 0xac, - 0x69, 0x87, 0x4a, 0x48, 0xdc, 0x0e, 0x9e, 0x0e, 0x39, 0x57, 0xbd, 0x3d, 0x8f, 0xcb, 0xd8, 0x86, - 0x40, 0x73, 0x0a, 0x46, 0xb4, 0x1a, 0xc8, 0xdb, 0x18, 0xa2, 0x69, 0x48, 0x70, 0xbc, 0xee, 0x68, - 0xad, 0xcb, 0xcb, 0xa6, 0x65, 0xee, 0x3a, 0xba, 0x81, 0x6d, 0xf4, 0xa4, 0x00, 0x01, 0x4f, 0xff, - 0x33, 0x81, 0xfe, 0xa3, 0x7f, 0xcf, 0x88, 0x8e, 0xa2, 0x7e, 0xb7, 0x1a, 0x26, 0x1f, 0x11, 0xa0, - 0x4a, 0x6c, 0x5c, 0x14, 0xa1, 0x98, 0xbe, 0xd0, 0x7e, 0x45, 0x86, 0x42, 0xf9, 0x91, 0xae, 0x69, - 0x39, 0xab, 0x66, 0x4b, 0xeb, 0xd8, 0x8e, 0x69, 0x61, 0x54, 0x8b, 0x95, 0x9a, 0xdb, 0xc3, 0xb4, - 0xcd, 0x56, 0x30, 0x38, 0xb2, 0xb7, 0xb0, 0xda, 0xc9, 0xbc, 0x8e, 0xbf, 0x5f, 0x78, 0x97, 0x91, - 0x4a, 0xa5, 0x97, 0xa3, 0x08, 0x3d, 0xef, 0xd7, 0xa5, 0x25, 0x3b, 0x2c, 0x21, 0xb6, 0xf3, 0x28, - 0xc4, 0xd4, 0x18, 0x96, 0xca, 0x25, 0x98, 0xad, 0xef, 0x5e, 0xf2, 0x89, 0xd8, 0x61, 0x23, 0xe4, - 0xb5, 0xc2, 0x51, 0x2a, 0x98, 0xe2, 0x85, 0x09, 0x45, 0xc8, 0xf7, 0x46, 0x98, 0xb5, 0xc3, 0xd9, - 0x18, 0xde, 0x7c, 0xa2, 0x60, 0x74, 0x8a, 0xc1, 0xa5, 0xa6, 0x2f, 0xc0, 0x77, 0x4a, 0x30, 0x5b, - 0xeb, 0x62, 0x03, 0xb7, 0xa9, 0x17, 0x24, 0x27, 0xc0, 0x57, 0x26, 0x14, 0x20, 0x47, 0x28, 0x42, - 0x80, 0x81, 0xc7, 0xf2, 0xa2, 0x27, 0xbc, 0x20, 0x21, 0x91, 0xe0, 0xe2, 0x4a, 0x4b, 0x5f, 0x70, - 0x9f, 0x91, 0x60, 0x5a, 0xdd, 0x35, 0xd6, 0x2d, 0xd3, 0x1d, 0x8d, 0x2d, 0x74, 0x4f, 0xd0, 0x41, - 0xdc, 0x0a, 0x27, 0xda, 0xbb, 0x16, 0x59, 0x7f, 0xaa, 0x18, 0x75, 0xdc, 0x32, 0x8d, 0xb6, 0x4d, - 0xea, 0x91, 0x53, 0x0f, 0x7e, 0xb8, 0x2b, 0xfb, 0xa2, 0x2f, 0xca, 0x19, 0xf4, 0x62, 0xe1, 0x50, - 0x37, 0xb4, 0xf2, 0xa1, 0xa2, 0xc5, 0x7b, 0x02, 0xc1, 0x80, 0x36, 0x83, 0x4a, 0x48, 0x5f, 0xb8, - 0x9f, 0x90, 0x40, 0x29, 0xb6, 0x5a, 0xe6, 0xae, 0xe1, 0xd4, 0x71, 0x07, 0xb7, 0x9c, 0x86, 0xa5, - 0xb5, 0x70, 0xd8, 0x7e, 0x2e, 0x80, 0xdc, 0xd6, 0x2d, 0xd6, 0x07, 0xbb, 0x8f, 0x4c, 0x8e, 0xaf, - 0x14, 0xde, 0x71, 0xa4, 0xb5, 0x3c, 0x58, 0x4a, 0x02, 0x71, 0x8a, 0xed, 0x2b, 0x0a, 0x16, 0x94, - 0xbe, 0x54, 0x3f, 0x24, 0xc1, 0x94, 0xd7, 0x63, 0x6f, 0x89, 0x08, 0xf3, 0xa7, 0x13, 0x4e, 0x46, - 0x7c, 0xe2, 0x09, 0x64, 0xf8, 0xd6, 0x04, 0xb3, 0x8a, 0x28, 0xfa, 0xc9, 0x44, 0x57, 0x4c, 0x2e, - 0x3a, 0xf7, 0xb5, 0x5a, 0x6b, 0x2e, 0xd5, 0x56, 0x17, 0xcb, 0x6a, 0x41, 0x46, 0x8f, 0x4b, 0x90, - 0x5d, 0xd7, 0x8d, 0xad, 0x70, 0x74, 0xa5, 0x93, 0xae, 0x1d, 0xd9, 0xc6, 0x8f, 0xb0, 0x96, 0x4e, - 0x5f, 0x94, 0x3b, 0xe0, 0xa4, 0xb1, 0xbb, 0x73, 0x09, 0x5b, 0xb5, 0x4d, 0x32, 0xca, 0xda, 0x0d, - 0xb3, 0x8e, 0x0d, 0x6a, 0x84, 0xe6, 0xd4, 0xbe, 0xdf, 0x78, 0x13, 0x4c, 0x60, 0xf2, 0xe0, 0x72, - 0x12, 0x21, 0x71, 0x9f, 0x29, 0x29, 0xc4, 0x54, 0xa2, 0x69, 0x43, 0x1f, 0xe2, 0xe9, 0x6b, 0xea, - 0x1f, 0xe6, 0xe0, 0x54, 0xd1, 0xd8, 0x27, 0x36, 0x05, 0xed, 0xe0, 0x4b, 0xdb, 0x9a, 0xb1, 0x85, - 0xc9, 0x00, 0xe1, 0x4b, 0x3c, 0x1c, 0xa2, 0x3f, 0xc3, 0x87, 0xe8, 0x57, 0x54, 0x98, 0x30, 0xad, - 0x36, 0xb6, 0x16, 0xf6, 0x09, 0x4f, 0xbd, 0xcb, 0xce, 0xac, 0x4d, 0xf6, 0x2b, 0x62, 0x9e, 0x91, - 0x9f, 0xaf, 0xd1, 0xff, 0x55, 0x8f, 0xd0, 0xf9, 0x5b, 0x61, 0x82, 0xa5, 0x29, 0x33, 0x30, 0x59, - 0x53, 0x17, 0xcb, 0x6a, 0xb3, 0xb2, 0x58, 0x38, 0xa6, 0x5c, 0x05, 0xc7, 0x2b, 0x8d, 0xb2, 0x5a, - 0x6c, 0x54, 0x6a, 0xd5, 0x26, 0x49, 0x2f, 0x64, 0xd0, 0x0b, 0xb3, 0xa2, 0x9e, 0xbd, 0xf1, 0xcc, - 0xf4, 0x83, 0x55, 0x85, 0x89, 0x16, 0xcd, 0x40, 0x86, 0xd0, 0xe9, 0x44, 0xb5, 0x63, 0x04, 0x69, - 0x82, 0xea, 0x11, 0x52, 0xce, 0x02, 0x5c, 0xb1, 0x4c, 0x63, 0x2b, 0x38, 0x75, 0x38, 0xa9, 0x86, - 0x52, 0xd0, 0xa3, 0x19, 0xc8, 0xd3, 0x7f, 0xc8, 0x95, 0x24, 0xe4, 0x29, 0x10, 0xbc, 0xf7, 0xee, - 0x5a, 0xbc, 0x44, 0x5e, 0xc1, 0x44, 0x8b, 0xbd, 0xba, 0xba, 0x48, 0x65, 0x40, 0x2d, 0x61, 0x56, - 0x95, 0xdb, 0x20, 0x4f, 0xff, 0x65, 0x5e, 0x07, 0xd1, 0xe1, 0x45, 0x69, 0x36, 0x41, 0x3f, 0x65, - 0x71, 0x99, 0xa6, 0xaf, 0xcd, 0xbf, 0x23, 0xc1, 0x64, 0x15, 0x3b, 0xa5, 0x6d, 0xdc, 0xba, 0x8c, - 0x9e, 0xc2, 0x2f, 0x80, 0x76, 0x74, 0x6c, 0x38, 0x0f, 0xed, 0x74, 0xfc, 0x05, 0x50, 0x2f, 0x01, - 0xfd, 0x68, 0xb8, 0xf3, 0xbd, 0x9f, 0xd7, 0x9f, 0x5b, 0xfa, 0xd4, 0xd5, 0x2b, 0x21, 0x42, 0x65, - 0x4e, 0x43, 0xde, 0xc2, 0xf6, 0x6e, 0xc7, 0x5b, 0x44, 0x63, 0x6f, 0xe8, 0x75, 0xbe, 0x38, 0x4b, - 0x9c, 0x38, 0x6f, 0x13, 0x2f, 0x62, 0x0c, 0xf1, 0x4a, 0xb3, 0x30, 0x51, 0x31, 0x74, 0x47, 0xd7, - 0x3a, 0xe8, 0xc5, 0x59, 0x98, 0xad, 0x63, 0x67, 0x5d, 0xb3, 0xb4, 0x1d, 0xec, 0x60, 0xcb, 0x46, - 0x5f, 0xe3, 0xfb, 0x84, 0x6e, 0x47, 0x73, 0x36, 0x4d, 0x6b, 0xc7, 0x53, 0x4d, 0xef, 0xdd, 0x55, - 0xcd, 0x3d, 0x6c, 0xd9, 0x01, 0x5f, 0xde, 0xab, 0xfb, 0xe5, 0x8a, 0x69, 0x5d, 0x76, 0x07, 0x41, - 0x36, 0x4d, 0x63, 0xaf, 0x2e, 0xbd, 0x8e, 0xb9, 0xb5, 0x8a, 0xf7, 0xb0, 0x17, 0x2e, 0xcd, 0x7f, - 0x77, 0xe7, 0x02, 0x6d, 0xb3, 0x6a, 0x3a, 0x6e, 0xa7, 0xbd, 0x6a, 0x6e, 0xd1, 0x78, 0xb1, 0x93, - 0x2a, 0x9f, 0x18, 0xe4, 0xd2, 0xf6, 0x30, 0xc9, 0x95, 0x0f, 0xe7, 0x62, 0x89, 0xca, 0x3c, 0x28, - 0xfe, 0x6f, 0x0d, 0xdc, 0xc1, 0x3b, 0xd8, 0xb1, 0xf6, 0xc9, 0xb5, 0x10, 0x93, 0x6a, 0x9f, 0x2f, - 0x6c, 0x80, 0x16, 0x9f, 0xac, 0x33, 0xe9, 0xcd, 0x73, 0x92, 0x3b, 0xd4, 0x64, 0x5d, 0x84, 0xe2, - 0x58, 0xae, 0xbd, 0x92, 0x5d, 0x6b, 0xe6, 0xe7, 0x65, 0xc8, 0x92, 0xc1, 0xf3, 0x8d, 0x19, 0x6e, - 0x85, 0x69, 0x07, 0xdb, 0xb6, 0xb6, 0x85, 0xbd, 0x15, 0x26, 0xf6, 0xaa, 0xdc, 0x09, 0xb9, 0x0e, - 0xc1, 0x94, 0x0e, 0x0e, 0x37, 0x70, 0x35, 0x73, 0x0d, 0x0c, 0x97, 0x96, 0x3f, 0x12, 0x10, 0xb8, - 0x55, 0xfa, 0xc7, 0xf9, 0x07, 0x20, 0x47, 0xe1, 0x9f, 0x82, 0xdc, 0x62, 0x79, 0x61, 0x63, 0xb9, - 0x70, 0xcc, 0x7d, 0xf4, 0xf8, 0x9b, 0x82, 0xdc, 0x52, 0xb1, 0x51, 0x5c, 0x2d, 0x48, 0x6e, 0x3d, - 0x2a, 0xd5, 0xa5, 0x5a, 0x41, 0x76, 0x13, 0xd7, 0x8b, 0xd5, 0x4a, 0xa9, 0x90, 0x55, 0xa6, 0x61, - 0xe2, 0x62, 0x51, 0xad, 0x56, 0xaa, 0xcb, 0x85, 0x1c, 0xfa, 0xdb, 0x30, 0x7e, 0x77, 0xf1, 0xf8, - 0xdd, 0x18, 0xc5, 0x53, 0x3f, 0xc8, 0x7e, 0xc1, 0x87, 0xec, 0x1e, 0x0e, 0xb2, 0xef, 0x14, 0x21, - 0x32, 0x06, 0x77, 0xa6, 0x3c, 0x4c, 0xac, 0x5b, 0x66, 0x0b, 0xdb, 0x36, 0xfa, 0x19, 0x09, 0xf2, - 0x25, 0xcd, 0x68, 0xe1, 0x0e, 0xba, 0x26, 0x80, 0x8a, 0xba, 0x8a, 0x66, 0xfc, 0xd3, 0x62, 0xff, - 0x98, 0x11, 0xed, 0xfd, 0x18, 0xdd, 0x79, 0x4a, 0x33, 0x42, 0x3e, 0x62, 0xbd, 0x5c, 0x2c, 0xa9, - 0x31, 0x5c, 0x8d, 0x23, 0xc1, 0x14, 0x5b, 0x0d, 0xb8, 0x84, 0xc3, 0xf3, 0xf0, 0xaf, 0x65, 0x44, - 0x27, 0x87, 0x5e, 0x0d, 0x7c, 0x32, 0x11, 0xf2, 0x10, 0x9b, 0x08, 0x0e, 0xa2, 0x36, 0x86, 0xcd, - 0x43, 0x09, 0xa6, 0x37, 0x0c, 0xbb, 0x9f, 0x50, 0xc4, 0xe3, 0xe8, 0x7b, 0xd5, 0x08, 0x11, 0x3a, - 0x54, 0x1c, 0xfd, 0xc1, 0xf4, 0xd2, 0x17, 0xcc, 0xd7, 0x32, 0x70, 0x72, 0x19, 0x1b, 0xd8, 0xd2, - 0x5b, 0xb4, 0x06, 0x9e, 0x24, 0xee, 0xe1, 0x25, 0xf1, 0x14, 0x8e, 0xf3, 0x7e, 0x7f, 0xf0, 0x12, - 0x78, 0x8d, 0x2f, 0x81, 0xfb, 0x39, 0x09, 0xdc, 0x2a, 0x48, 0x67, 0x0c, 0xf7, 0xa1, 0x4f, 0xc1, - 0x4c, 0xd5, 0x74, 0xf4, 0x4d, 0xbd, 0x45, 0x7d, 0xd0, 0x7e, 0x4e, 0x86, 0xec, 0xaa, 0x6e, 0x3b, - 0xa8, 0x18, 0x74, 0x27, 0xe7, 0x60, 0x5a, 0x37, 0x5a, 0x9d, 0xdd, 0x36, 0x56, 0xb1, 0x46, 0xfb, - 0x95, 0x49, 0x35, 0x9c, 0x14, 0x6c, 0xed, 0xbb, 0x6c, 0xc9, 0xde, 0xd6, 0xfe, 0x47, 0x85, 0x97, - 0x61, 0xc2, 0x2c, 0x90, 0x80, 0x94, 0x11, 0x76, 0x57, 0x11, 0x66, 0x8d, 0x50, 0x56, 0xcf, 0x60, - 0xef, 0xbd, 0x50, 0x20, 0x4c, 0x4e, 0xe5, 0xff, 0x40, 0xef, 0x16, 0x6a, 0xac, 0x83, 0x18, 0x4a, - 0x86, 0xcc, 0xd2, 0x10, 0x93, 0x64, 0x05, 0xe6, 0x2a, 0xd5, 0x46, 0x59, 0xad, 0x16, 0x57, 0x59, - 0x16, 0x19, 0x7d, 0x43, 0x82, 0x9c, 0x8a, 0xbb, 0x9d, 0xfd, 0x70, 0xc4, 0x68, 0xe6, 0x28, 0x9e, - 0xf1, 0x1d, 0xc5, 0x95, 0x25, 0x00, 0xad, 0xe5, 0x16, 0x4c, 0xae, 0xd4, 0x92, 0xfa, 0xc6, 0x31, - 0xe5, 0x2a, 0x58, 0xf4, 0x73, 0xab, 0xa1, 0x3f, 0xd1, 0x4b, 0x84, 0x77, 0x8e, 0x38, 0x6a, 0x84, - 0xc3, 0x88, 0x3e, 0xe1, 0x3d, 0x42, 0x9b, 0x3d, 0x03, 0xc9, 0x1d, 0x8d, 0xf8, 0x3f, 0x2b, 0x41, - 0xb6, 0xe1, 0xf6, 0x96, 0xa1, 0x8e, 0xf3, 0x8f, 0x86, 0xd3, 0x71, 0x97, 0x4c, 0x84, 0x8e, 0xdf, - 0x07, 0x33, 0x61, 0x8d, 0x65, 0xae, 0x12, 0xb1, 0x2a, 0xce, 0xfd, 0x30, 0x8c, 0x86, 0xf7, 0x61, - 0xe7, 0x68, 0x44, 0xfc, 0xe1, 0xa7, 0x02, 0xac, 0xe1, 0x9d, 0x4b, 0xd8, 0xb2, 0xb7, 0xf5, 0x2e, - 0xfa, 0x3b, 0x19, 0xa6, 0x96, 0xb1, 0x53, 0x77, 0x34, 0x67, 0xd7, 0xee, 0xd9, 0xee, 0x34, 0xcc, - 0x92, 0xd6, 0xda, 0xc6, 0xac, 0x3b, 0xf2, 0x5e, 0xd1, 0xdb, 0x65, 0x51, 0x7f, 0xa2, 0xa0, 0x9c, - 0x79, 0xbf, 0x8c, 0x08, 0x4c, 0x9e, 0x06, 0xd9, 0xb6, 0xe6, 0x68, 0x0c, 0x8b, 0x6b, 0x7a, 0xb0, - 0x08, 0x08, 0xa9, 0x24, 0x1b, 0xfa, 0x0d, 0x49, 0xc4, 0xa1, 0x48, 0xa0, 0xfc, 0x64, 0x20, 0xbc, - 0x3b, 0x33, 0x04, 0x0a, 0x27, 0x60, 0xb6, 0x5a, 0x6b, 0x34, 0x57, 0x6b, 0xcb, 0xcb, 0x65, 0x37, - 0xb5, 0x20, 0x2b, 0xa7, 0x41, 0x59, 0x2f, 0x3e, 0xb4, 0x56, 0xae, 0x36, 0x9a, 0xd5, 0xda, 0x62, - 0x99, 0xfd, 0x99, 0x55, 0x8e, 0xc3, 0x74, 0xa9, 0x58, 0x5a, 0xf1, 0x12, 0x72, 0xca, 0x19, 0x38, - 0xb9, 0x56, 0x5e, 0x5b, 0x28, 0xab, 0xf5, 0x95, 0xca, 0x7a, 0xd3, 0x25, 0xb3, 0x54, 0xdb, 0xa8, - 0x2e, 0x16, 0xf2, 0x0a, 0x82, 0xd3, 0xa1, 0x2f, 0x17, 0xd5, 0x5a, 0x75, 0xb9, 0x59, 0x6f, 0x14, - 0x1b, 0xe5, 0xc2, 0x84, 0x72, 0x15, 0x1c, 0x2f, 0x15, 0xab, 0x24, 0x7b, 0xa9, 0x56, 0xad, 0x96, - 0x4b, 0x8d, 0xc2, 0x24, 0xfa, 0xf7, 0x2c, 0x4c, 0x57, 0xec, 0xaa, 0xb6, 0x83, 0x2f, 0x68, 0x1d, - 0xbd, 0x8d, 0x5e, 0x1c, 0x9a, 0x79, 0xdc, 0x08, 0xb3, 0x16, 0x7d, 0xc4, 0xed, 0x86, 0x8e, 0x29, - 0x9a, 0xb3, 0x2a, 0x9f, 0xe8, 0xce, 0xc9, 0x0d, 0x42, 0xc0, 0x9b, 0x93, 0xd3, 0x37, 0x65, 0x01, - 0x80, 0x3e, 0x35, 0x82, 0xcb, 0x5d, 0xcf, 0xf7, 0xb6, 0x26, 0x6d, 0x07, 0xdb, 0xd8, 0xda, 0xd3, - 0x5b, 0xd8, 0xcb, 0xa9, 0x86, 0xfe, 0x42, 0x9f, 0x93, 0x45, 0xf7, 0x17, 0x43, 0xa0, 0x86, 0xaa, - 0x13, 0xd1, 0x1b, 0xfe, 0x98, 0x2c, 0xb2, 0x3b, 0x28, 0x44, 0x32, 0x99, 0xa6, 0xbc, 0x4c, 0x1a, - 0x6e, 0xd9, 0xb6, 0x51, 0xab, 0x35, 0xeb, 0x2b, 0x35, 0xb5, 0x51, 0x90, 0x95, 0x19, 0x98, 0x74, - 0x5f, 0x57, 0x6b, 0xd5, 0xe5, 0x42, 0x56, 0x39, 0x05, 0x27, 0x56, 0x8a, 0xf5, 0x66, 0xa5, 0x7a, - 0xa1, 0xb8, 0x5a, 0x59, 0x6c, 0x96, 0x56, 0x8a, 0x6a, 0xbd, 0x90, 0x53, 0xae, 0x81, 0x53, 0x8d, - 0x4a, 0x59, 0x6d, 0x2e, 0x95, 0x8b, 0x8d, 0x0d, 0xb5, 0x5c, 0x6f, 0x56, 0x6b, 0xcd, 0x6a, 0x71, - 0xad, 0x5c, 0xc8, 0xbb, 0xcd, 0x9f, 0x7c, 0x0a, 0xd4, 0x66, 0xe2, 0xa0, 0x32, 0x4e, 0x46, 0x28, - 0xe3, 0x54, 0xaf, 0x32, 0x42, 0x58, 0xad, 0xd4, 0x72, 0xbd, 0xac, 0x5e, 0x28, 0x17, 0xa6, 0xfb, - 0xe9, 0xda, 0x8c, 0x72, 0x12, 0x0a, 0x2e, 0x0f, 0xcd, 0x4a, 0xdd, 0xcb, 0xb9, 0x58, 0x98, 0x45, - 0x1f, 0xca, 0xc3, 0x69, 0x15, 0x6f, 0xe9, 0xb6, 0x83, 0xad, 0x75, 0x6d, 0x7f, 0x07, 0x1b, 0x8e, - 0xd7, 0xc9, 0xff, 0x4b, 0x62, 0x65, 0x5c, 0x83, 0xd9, 0x2e, 0xa5, 0xb1, 0x86, 0x9d, 0x6d, 0xb3, - 0xcd, 0x46, 0xe1, 0xa7, 0x44, 0xf6, 0x1c, 0xf3, 0xeb, 0xe1, 0xec, 0x2a, 0xff, 0x77, 0x48, 0xb7, - 0xe5, 0x18, 0xdd, 0xce, 0x0e, 0xa3, 0xdb, 0xca, 0x75, 0x30, 0xb5, 0x6b, 0x63, 0xab, 0xbc, 0xa3, - 0xe9, 0x1d, 0xef, 0x72, 0x4e, 0x3f, 0x01, 0xbd, 0x25, 0x2b, 0x7a, 0x62, 0x25, 0x54, 0x97, 0xfe, - 0x62, 0x8c, 0xe8, 0x5b, 0xcf, 0x02, 0xb0, 0xca, 0x6e, 0x58, 0x1d, 0xa6, 0xac, 0xa1, 0x14, 0x97, - 0xbf, 0x4b, 0x7a, 0xa7, 0xa3, 0x1b, 0x5b, 0xfe, 0xbe, 0x7f, 0x90, 0x80, 0x5e, 0x26, 0x8b, 0x9c, - 0x60, 0x49, 0xca, 0x5b, 0xb2, 0xd6, 0xf4, 0x12, 0x69, 0xcc, 0xfd, 0xee, 0xc1, 0xa6, 0x93, 0x57, - 0x0a, 0x30, 0x43, 0xd2, 0x58, 0x0b, 0x2c, 0x4c, 0xb8, 0x7d, 0xb0, 0x47, 0x6e, 0xad, 0xdc, 0x58, - 0xa9, 0x2d, 0xfa, 0xdf, 0x26, 0x5d, 0x92, 0x2e, 0x33, 0xc5, 0xea, 0x43, 0xa4, 0x35, 0x4e, 0x29, - 0x4f, 0x82, 0x6b, 0x42, 0x1d, 0x76, 0x71, 0x55, 0x2d, 0x17, 0x17, 0x1f, 0x6a, 0x96, 0x9f, 0x5b, - 0xa9, 0x37, 0xea, 0x7c, 0xe3, 0xf2, 0xda, 0xd1, 0xb4, 0xcb, 0x6f, 0x79, 0xad, 0x58, 0x59, 0x65, - 0xfd, 0xfb, 0x52, 0x4d, 0x5d, 0x2b, 0x36, 0x0a, 0x33, 0xe8, 0xe7, 0x65, 0x28, 0x2c, 0x63, 0x67, - 0xdd, 0xb4, 0x1c, 0xad, 0xb3, 0xaa, 0x1b, 0x97, 0x37, 0xac, 0x0e, 0x37, 0xd9, 0x14, 0x0e, 0xd3, - 0xc1, 0x0f, 0x91, 0x1c, 0xc1, 0xe8, 0x1d, 0xf1, 0x2e, 0xc9, 0x16, 0x28, 0x53, 0x90, 0x80, 0x9e, - 0x2f, 0x89, 0x2c, 0x77, 0x8b, 0x97, 0x9a, 0x4c, 0x4f, 0x5e, 0x30, 0xee, 0xf1, 0xb9, 0x0f, 0x6a, - 0x79, 0xf4, 0xa2, 0x2c, 0x4c, 0x2e, 0xe9, 0x86, 0xd6, 0xd1, 0x9f, 0xc7, 0xc5, 0x2f, 0x0d, 0xfa, - 0x98, 0x4c, 0x4c, 0x1f, 0x23, 0x0d, 0x35, 0x7e, 0xfe, 0x94, 0x2c, 0xba, 0xbc, 0x10, 0x92, 0xbd, - 0xc7, 0x64, 0xc4, 0xe0, 0xf9, 0x3e, 0x49, 0x64, 0x79, 0x61, 0x30, 0xbd, 0x64, 0x18, 0x7e, 0xe4, - 0x5b, 0xc3, 0xc6, 0xea, 0x69, 0xdf, 0x93, 0xfd, 0x54, 0x61, 0x0a, 0xfd, 0x99, 0x0c, 0x68, 0x19, - 0x3b, 0x17, 0xb0, 0xe5, 0x4f, 0x05, 0x48, 0xaf, 0xcf, 0xec, 0xed, 0x50, 0x93, 0x7d, 0x63, 0x18, - 0xc0, 0x8b, 0x3c, 0x80, 0xc5, 0x98, 0xc6, 0x13, 0x41, 0x3a, 0xa2, 0xf1, 0x56, 0x20, 0x6f, 0x93, - 0xef, 0x4c, 0xcd, 0x9e, 0x1e, 0x3d, 0x5c, 0x12, 0x62, 0x61, 0xea, 0x94, 0xb0, 0xca, 0x08, 0xa0, - 0xaf, 0xfb, 0x93, 0xa0, 0xef, 0xe5, 0xb4, 0x63, 0xe9, 0xd0, 0xcc, 0x26, 0xd3, 0x17, 0x2b, 0x5d, - 0x75, 0xe9, 0x67, 0xdf, 0xa0, 0xf7, 0xe5, 0xe0, 0x64, 0xbf, 0xea, 0xa0, 0xdf, 0xcc, 0x70, 0x3b, - 0xec, 0x98, 0x0c, 0xf9, 0x19, 0xb6, 0x81, 0xe8, 0xbe, 0x28, 0xcf, 0x84, 0x53, 0xfe, 0x32, 0x5c, - 0xc3, 0xac, 0xe2, 0x2b, 0x76, 0x07, 0x3b, 0x0e, 0xb6, 0x48, 0xd5, 0x26, 0xd5, 0xfe, 0x1f, 0x95, - 0x67, 0xc3, 0xd5, 0xba, 0x61, 0xeb, 0x6d, 0x6c, 0x35, 0xf4, 0xae, 0x5d, 0x34, 0xda, 0x8d, 0x5d, - 0xc7, 0xb4, 0x74, 0x8d, 0x5d, 0x25, 0x39, 0xa9, 0x46, 0x7d, 0x56, 0x6e, 0x81, 0x82, 0x6e, 0xd7, - 0x8c, 0x4b, 0xa6, 0x66, 0xb5, 0x75, 0x63, 0x6b, 0x55, 0xb7, 0x1d, 0xe6, 0x01, 0x7c, 0x20, 0x1d, - 0xfd, 0xbd, 0x2c, 0x7a, 0x98, 0x6e, 0x00, 0xac, 0x11, 0x1d, 0xca, 0x8f, 0xca, 0x22, 0xc7, 0xe3, - 0x92, 0xd1, 0x4e, 0xa6, 0x2c, 0x2f, 0x1c, 0xb7, 0x21, 0xd1, 0x7f, 0x04, 0x27, 0x5d, 0x0b, 0x4d, - 0xf7, 0x0c, 0x81, 0x0b, 0x65, 0xb5, 0xb2, 0x54, 0x29, 0xbb, 0x66, 0xc5, 0x29, 0x38, 0x11, 0x7c, - 0x5b, 0x7c, 0xa8, 0x59, 0x2f, 0x57, 0x1b, 0x85, 0x49, 0xb7, 0x9f, 0xa2, 0xc9, 0x4b, 0xc5, 0xca, - 0x6a, 0x79, 0xb1, 0xd9, 0xa8, 0xb9, 0x5f, 0x16, 0x87, 0x33, 0x2d, 0xd0, 0xa3, 0x59, 0x38, 0x4e, - 0x64, 0xbb, 0x4f, 0xa4, 0xea, 0x0a, 0xa5, 0xc7, 0xd7, 0xd6, 0x07, 0x68, 0x8a, 0x8a, 0x17, 0x7d, - 0x5c, 0xf8, 0xa6, 0xcc, 0x10, 0x84, 0x3d, 0x65, 0x44, 0x68, 0xc6, 0xd7, 0x24, 0x91, 0x08, 0x15, - 0xc2, 0x64, 0x93, 0x29, 0xc5, 0xbf, 0x8e, 0x7b, 0xc4, 0x89, 0x06, 0x9f, 0x58, 0x99, 0x25, 0xf2, - 0xf3, 0x73, 0xd7, 0x2b, 0x2a, 0x51, 0x87, 0x39, 0x00, 0x92, 0x42, 0x34, 0x88, 0xea, 0x41, 0xdf, - 0xf1, 0x2a, 0x4a, 0x0f, 0x8a, 0xa5, 0x46, 0xe5, 0x42, 0x39, 0x4a, 0x0f, 0x3e, 0x26, 0xc3, 0xe4, - 0x32, 0x76, 0xdc, 0x39, 0x95, 0x8d, 0x9e, 0x23, 0xb0, 0xfe, 0xe3, 0x9a, 0x31, 0x1d, 0xb3, 0xa5, - 0x75, 0xfc, 0x65, 0x00, 0xfa, 0x86, 0x7e, 0x64, 0x18, 0x13, 0xc4, 0x2b, 0x3a, 0x62, 0xbc, 0xfa, - 0x6e, 0xc8, 0x39, 0xee, 0x67, 0xb6, 0x0c, 0xfd, 0x1d, 0x91, 0xc3, 0x95, 0x4b, 0x64, 0x51, 0x73, - 0x34, 0x95, 0xe6, 0x0f, 0x8d, 0x4e, 0x82, 0xb6, 0x4b, 0x04, 0x23, 0xdf, 0x8a, 0xf6, 0xe7, 0xdf, - 0xca, 0x70, 0x8a, 0xb6, 0x8f, 0x62, 0xb7, 0x5b, 0x77, 0x4c, 0x0b, 0xab, 0xb8, 0x85, 0xf5, 0xae, - 0xd3, 0xb3, 0xbe, 0x67, 0xd1, 0x54, 0x6f, 0xb3, 0x99, 0xbd, 0xa2, 0x5f, 0x92, 0x45, 0x63, 0x30, - 0x1f, 0x68, 0x8f, 0x3d, 0xe5, 0x45, 0x34, 0xf6, 0x0f, 0x4a, 0x22, 0x51, 0x95, 0x13, 0x12, 0x4f, - 0x06, 0xd4, 0xef, 0x1d, 0x01, 0x50, 0xde, 0xca, 0x8d, 0x5a, 0x2e, 0x95, 0x2b, 0xeb, 0xee, 0x20, - 0x70, 0x3d, 0x5c, 0xbb, 0xbe, 0xa1, 0x96, 0x56, 0x8a, 0xf5, 0x72, 0x53, 0x2d, 0x2f, 0x57, 0xea, - 0x0d, 0xe6, 0x94, 0x45, 0xff, 0x9a, 0x50, 0xae, 0x83, 0x33, 0xf5, 0x8d, 0x85, 0x7a, 0x49, 0xad, - 0xac, 0x93, 0x74, 0xb5, 0x5c, 0x2d, 0x5f, 0x64, 0x5f, 0x27, 0xd1, 0x7b, 0x0b, 0x30, 0xed, 0x4e, - 0x00, 0xea, 0x74, 0x5e, 0x80, 0xbe, 0x9c, 0x85, 0x69, 0x15, 0xdb, 0x66, 0x67, 0x8f, 0xcc, 0x11, - 0xc6, 0x35, 0xf5, 0xf8, 0xaa, 0x2c, 0x7a, 0x7e, 0x3b, 0xc4, 0xec, 0x7c, 0x88, 0xd1, 0xe8, 0x89, - 0xa6, 0xb6, 0xa7, 0xe9, 0x1d, 0xed, 0x12, 0xeb, 0x6a, 0x26, 0xd5, 0x20, 0x41, 0x99, 0x07, 0xc5, - 0xbc, 0x62, 0x60, 0xab, 0xde, 0xba, 0x52, 0x76, 0xb6, 0x8b, 0xed, 0xb6, 0x85, 0x6d, 0x9b, 0xad, - 0x5e, 0xf4, 0xf9, 0xa2, 0xdc, 0x0c, 0xc7, 0x49, 0x6a, 0x28, 0x33, 0x75, 0x90, 0xe9, 0x4d, 0xf6, - 0x73, 0x16, 0x8d, 0x7d, 0x2f, 0x67, 0x2e, 0x94, 0x33, 0x48, 0x0e, 0x1f, 0x97, 0xc8, 0xf3, 0xa7, - 0x74, 0xce, 0xc1, 0xb4, 0xa1, 0xed, 0xe0, 0xf2, 0x23, 0x5d, 0xdd, 0xc2, 0x36, 0x71, 0x8c, 0x91, - 0xd5, 0x70, 0x12, 0x7a, 0x9f, 0xd0, 0x79, 0x73, 0x31, 0x89, 0x25, 0xd3, 0xfd, 0xe5, 0x21, 0x54, - 0xbf, 0x4f, 0x3f, 0x23, 0xa3, 0xf7, 0xca, 0x30, 0xc3, 0x98, 0x2a, 0x1a, 0xfb, 0x95, 0x36, 0xba, - 0x9e, 0x33, 0x7e, 0x35, 0x37, 0xcd, 0x33, 0x7e, 0xc9, 0x0b, 0xfa, 0x71, 0x59, 0xd4, 0xdd, 0xb9, - 0x4f, 0xc5, 0x49, 0x19, 0xd1, 0x8e, 0xa3, 0x9b, 0xe6, 0x2e, 0x73, 0x54, 0x9d, 0x54, 0xe9, 0x4b, - 0x9a, 0x8b, 0x7a, 0xe8, 0x77, 0x85, 0x9c, 0xa9, 0x05, 0xab, 0x71, 0x44, 0x00, 0x7e, 0x58, 0x86, - 0x39, 0xc6, 0x55, 0x9d, 0x9d, 0xf3, 0x11, 0x3a, 0xf0, 0xf6, 0x13, 0xc2, 0x86, 0x60, 0x9f, 0xfa, - 0xb3, 0x92, 0x9e, 0x30, 0x40, 0xbe, 0x5f, 0x28, 0x38, 0x9a, 0x70, 0x45, 0x8e, 0x08, 0xca, 0xb7, - 0x66, 0x61, 0x7a, 0xc3, 0xc6, 0x16, 0xf3, 0xdb, 0x47, 0xaf, 0xcb, 0x82, 0xbc, 0x8c, 0xb9, 0x8d, - 0xd4, 0x97, 0x0a, 0x7b, 0xf8, 0x86, 0x2b, 0x1b, 0x22, 0xea, 0xda, 0x48, 0x11, 0xb0, 0xdd, 0x04, - 0x73, 0x54, 0xa4, 0x45, 0xc7, 0x71, 0x8d, 0x44, 0xcf, 0x9b, 0xb6, 0x27, 0x75, 0x14, 0x5b, 0x45, - 0xa4, 0x2c, 0x37, 0x4b, 0xc9, 0xe5, 0x69, 0x15, 0x6f, 0xd2, 0xf9, 0x6c, 0x56, 0xed, 0x49, 0x55, - 0x6e, 0x87, 0xab, 0xcc, 0x2e, 0xa6, 0xe7, 0x57, 0x42, 0x99, 0x73, 0x24, 0x73, 0xbf, 0x4f, 0xe8, - 0xcb, 0x42, 0xbe, 0xba, 0xe2, 0xd2, 0x49, 0xa6, 0x0b, 0xdd, 0xd1, 0x98, 0x24, 0x27, 0xa1, 0xe0, - 0xe6, 0x20, 0xfb, 0x2f, 0x6a, 0xb9, 0x5e, 0x5b, 0xbd, 0x50, 0xee, 0xbf, 0x8c, 0x91, 0x43, 0x2f, - 0x94, 0x61, 0x6a, 0xc1, 0x32, 0xb5, 0x76, 0x4b, 0xb3, 0x1d, 0xf4, 0x75, 0x09, 0x66, 0xd6, 0xb5, - 0xfd, 0x8e, 0xa9, 0xb5, 0x89, 0x7f, 0x7f, 0x4f, 0x5f, 0xd0, 0xa5, 0x9f, 0xbc, 0xbe, 0x80, 0xbd, - 0xf2, 0x07, 0x03, 0xfd, 0xa3, 0x7b, 0x19, 0x91, 0x0b, 0x35, 0xfd, 0x6d, 0x3e, 0xa9, 0x5f, 0xb0, - 0x52, 0x8f, 0xaf, 0xf9, 0x30, 0x4f, 0x11, 0x16, 0xe5, 0x7b, 0xc5, 0xc2, 0x8f, 0x8a, 0x90, 0x3c, - 0x9a, 0x5d, 0xf9, 0x17, 0x4d, 0x42, 0x7e, 0x11, 0x13, 0x2b, 0xee, 0x7f, 0x48, 0x30, 0x51, 0xc7, - 0x0e, 0xb1, 0xe0, 0xee, 0xe4, 0x3c, 0x85, 0xdb, 0x24, 0x43, 0xe0, 0xc4, 0xee, 0xbd, 0xbb, 0x93, - 0xf5, 0xd0, 0x79, 0x6b, 0xf2, 0x9c, 0xc0, 0x23, 0x91, 0x96, 0x3b, 0xcf, 0xca, 0x3c, 0x94, 0x47, - 0x62, 0x2c, 0xa9, 0xf4, 0x7d, 0xad, 0xde, 0x2e, 0x31, 0xd7, 0xaa, 0x50, 0xaf, 0xf7, 0x8b, 0x61, - 0xfd, 0x8c, 0xf5, 0x36, 0x63, 0xcc, 0xc7, 0x38, 0x47, 0x3d, 0x03, 0x26, 0xa8, 0xcc, 0xbd, 0xf9, - 0x68, 0xaf, 0x9f, 0x02, 0x25, 0x41, 0xce, 0x5e, 0x7b, 0x39, 0x05, 0x5d, 0xd4, 0xa2, 0x0b, 0x1f, - 0x4b, 0x0c, 0x82, 0x99, 0x2a, 0x76, 0xae, 0x98, 0xd6, 0xe5, 0xba, 0xa3, 0x39, 0x18, 0xfd, 0xab, - 0x04, 0x72, 0x1d, 0x3b, 0xe1, 0xe8, 0x27, 0x55, 0x38, 0x41, 0x2b, 0xc4, 0x32, 0x92, 0xfe, 0x9b, - 0x56, 0xe4, 0x5c, 0x5f, 0x21, 0x84, 0xf2, 0xa9, 0x07, 0x7f, 0x45, 0x3f, 0xd3, 0x37, 0xe8, 0x93, - 0xd4, 0x67, 0xd2, 0xc0, 0x24, 0x13, 0x66, 0xd0, 0x55, 0xb0, 0x08, 0x3d, 0xfd, 0x1d, 0x21, 0xb3, - 0x5a, 0x8c, 0xe6, 0xd1, 0x74, 0x05, 0xef, 0xbf, 0x06, 0xb2, 0xa5, 0x6d, 0xcd, 0x41, 0x6f, 0x93, - 0x01, 0x8a, 0xed, 0xf6, 0x1a, 0xf5, 0x01, 0x0f, 0x3b, 0xa4, 0x9d, 0x87, 0x99, 0xd6, 0xb6, 0x16, - 0xdc, 0x6d, 0x42, 0xfb, 0x03, 0x2e, 0x4d, 0x79, 0x66, 0xe0, 0x4c, 0x4e, 0xa5, 0x8a, 0x7a, 0x60, - 0x72, 0xcb, 0x60, 0xb4, 0x7d, 0x47, 0x73, 0x3e, 0x14, 0x66, 0xec, 0x11, 0x3a, 0xf7, 0xf7, 0xf9, - 0x80, 0xbd, 0xe8, 0x39, 0x1c, 0x23, 0xed, 0x1f, 0xb0, 0x09, 0x12, 0x12, 0x9e, 0xf4, 0x16, 0x0b, - 0xe8, 0x11, 0xcf, 0xd7, 0x58, 0x42, 0xd7, 0x2a, 0xe5, 0xb6, 0xee, 0x89, 0x96, 0x05, 0xcc, 0x42, - 0x2f, 0xc9, 0x24, 0x83, 0x2f, 0x5e, 0x70, 0xf7, 0xc3, 0x2c, 0x6e, 0xeb, 0x0e, 0xf6, 0x6a, 0xc9, - 0x04, 0x18, 0x07, 0x31, 0xff, 0x03, 0x7a, 0x81, 0x70, 0xd0, 0x35, 0x22, 0xd0, 0x83, 0x35, 0x8a, - 0x68, 0x7f, 0x62, 0x61, 0xd4, 0xc4, 0x68, 0xa6, 0x0f, 0xd6, 0x8f, 0xc8, 0x70, 0xaa, 0x61, 0x6e, - 0x6d, 0x75, 0xb0, 0x27, 0x26, 0x4c, 0xbd, 0x33, 0x91, 0x36, 0x4a, 0xb8, 0xc8, 0x4e, 0x90, 0xf9, - 0xb0, 0xee, 0x1f, 0x25, 0x73, 0x5f, 0xf8, 0x13, 0x53, 0xb1, 0xb3, 0x28, 0x22, 0xae, 0xbe, 0x7c, - 0x46, 0xa0, 0x20, 0x16, 0xf0, 0x59, 0x98, 0x6c, 0xfa, 0x40, 0x7c, 0x5a, 0x82, 0x59, 0x7a, 0x73, - 0xa5, 0xa7, 0xa0, 0x0f, 0x8e, 0x10, 0x00, 0xf4, 0xf5, 0x8c, 0xa8, 0x9f, 0x2d, 0x91, 0x09, 0xc7, - 0x49, 0x84, 0x88, 0xc5, 0x82, 0xaa, 0x0c, 0x24, 0x97, 0xbe, 0x68, 0xff, 0x58, 0x86, 0xe9, 0x65, - 0xec, 0xb5, 0x34, 0x3b, 0x71, 0x4f, 0x74, 0x1e, 0x66, 0xc8, 0xf5, 0x6d, 0x35, 0x76, 0x4c, 0x92, - 0xae, 0x9a, 0x71, 0x69, 0xca, 0x8d, 0x30, 0x7b, 0x09, 0x6f, 0x9a, 0x16, 0xae, 0x71, 0x67, 0x29, - 0xf9, 0xc4, 0x88, 0xf0, 0x74, 0x5c, 0x1c, 0xb4, 0x05, 0x1e, 0x9b, 0x5b, 0x0f, 0x0a, 0x33, 0x54, - 0x95, 0x88, 0x31, 0xe7, 0x59, 0x30, 0xc9, 0x90, 0xf7, 0xcc, 0xb4, 0xb8, 0x7e, 0xd1, 0xcf, 0x8b, - 0xde, 0xe0, 0x23, 0x5a, 0xe6, 0x10, 0x7d, 0x7a, 0x12, 0x26, 0xc6, 0x72, 0xbf, 0x7b, 0x21, 0x54, - 0xfe, 0xc2, 0x7e, 0xa5, 0x6d, 0xa3, 0xb5, 0x64, 0x98, 0x9e, 0x05, 0xf0, 0x1b, 0x87, 0x17, 0xd6, - 0x22, 0x94, 0xc2, 0x47, 0xae, 0x8f, 0x3d, 0xa8, 0xd7, 0x2b, 0x0e, 0xc2, 0xce, 0x88, 0x81, 0x11, - 0x3b, 0xe0, 0x27, 0xc2, 0x49, 0xfa, 0xe8, 0x7c, 0x54, 0x86, 0x53, 0xfe, 0xf9, 0xa3, 0x55, 0xcd, - 0x0e, 0xda, 0x5d, 0x29, 0x19, 0x44, 0xdc, 0x81, 0x0f, 0xbf, 0xb1, 0x7c, 0x25, 0xd9, 0x98, 0xd1, - 0x97, 0x93, 0xd1, 0xa2, 0xa3, 0xdc, 0x0a, 0x27, 0x8c, 0xdd, 0x1d, 0x5f, 0xea, 0xa4, 0xc5, 0xb3, - 0x16, 0x7e, 0xf0, 0x43, 0x92, 0x91, 0x49, 0x84, 0xf9, 0xb1, 0xcc, 0x29, 0xb9, 0x23, 0x5d, 0x4f, - 0x4b, 0x04, 0x23, 0xfa, 0xe7, 0x4c, 0xa2, 0xde, 0x6d, 0xf0, 0x99, 0xaf, 0x04, 0xbd, 0xd4, 0x11, - 0x1e, 0xf8, 0x3a, 0x3f, 0x01, 0xb9, 0xf2, 0x4e, 0xd7, 0xd9, 0x3f, 0xff, 0x64, 0x98, 0xad, 0x3b, - 0x16, 0xd6, 0x76, 0x42, 0x3b, 0x03, 0x8e, 0x79, 0x19, 0x1b, 0xde, 0xce, 0x00, 0x79, 0xb9, 0xeb, - 0x4e, 0x98, 0x30, 0xcc, 0xa6, 0xb6, 0xeb, 0x6c, 0x2b, 0xd7, 0x1f, 0x38, 0x52, 0xcf, 0xc0, 0xaf, - 0xb1, 0x18, 0x46, 0x9f, 0xbb, 0x9b, 0xac, 0x0d, 0xe7, 0x0d, 0xb3, 0xb8, 0xeb, 0x6c, 0x2f, 0x5c, - 0xf7, 0xe1, 0xbf, 0x39, 0x9b, 0xf9, 0xd8, 0xdf, 0x9c, 0xcd, 0x7c, 0xf6, 0x6f, 0xce, 0x66, 0x7e, - 0xe2, 0xf3, 0x67, 0x8f, 0x7d, 0xec, 0xf3, 0x67, 0x8f, 0x7d, 0xfa, 0xf3, 0x67, 0x8f, 0x7d, 0xaf, - 0xd4, 0xbd, 0x74, 0x29, 0x4f, 0xa8, 0x3c, 0xe3, 0xff, 0x0d, 0x00, 0x00, 0xff, 0xff, 0xeb, 0xa8, - 0x5c, 0x9b, 0xeb, 0x0a, 0x02, 0x00, + 0x17, 0x6f, 0xda, 0xd5, 0x78, 0x35, 0xbc, 0x23, 0x91, 0x64, 0xfa, 0xf5, 0xd3, 0x81, 0x9d, 0xac, + 0x72, 0x0a, 0x76, 0xcf, 0xd0, 0x94, 0xc7, 0xb3, 0x1b, 0x56, 0xec, 0x76, 0x3b, 0x97, 0x1b, 0x2c, + 0xf8, 0x4a, 0xa2, 0xdd, 0xb0, 0x50, 0x0c, 0x17, 0xa9, 0x37, 0x86, 0x4b, 0xf2, 0xdd, 0x30, 0x8e, + 0x8f, 0x51, 0xec, 0x86, 0xc5, 0x11, 0x4c, 0x5f, 0xb4, 0x2f, 0x9b, 0xa4, 0x56, 0x33, 0x8b, 0xed, + 0xff, 0x9a, 0xfe, 0x9e, 0xd5, 0xc0, 0x3b, 0xbb, 0xf4, 0x0b, 0xfb, 0x1f, 0x7b, 0xa7, 0x89, 0xf2, + 0x34, 0xc8, 0x6f, 0x9a, 0xd6, 0x8e, 0xe6, 0x6d, 0xdc, 0xf7, 0x9e, 0x14, 0x61, 0xf1, 0xf4, 0x97, + 0x48, 0x1e, 0x95, 0xe5, 0x75, 0xe7, 0x23, 0xcf, 0xd6, 0xbb, 0x2c, 0xea, 0xa2, 0xfb, 0xa8, 0x5c, + 0x0f, 0xb3, 0x2c, 0xf8, 0x62, 0x15, 0xdb, 0x0e, 0x6e, 0xb3, 0x88, 0x15, 0x7c, 0xa2, 0x72, 0x16, + 0x66, 0x58, 0xc2, 0x92, 0xde, 0xc1, 0x36, 0x0b, 0x5a, 0xc1, 0xa5, 0x29, 0x27, 0x21, 0xaf, 0xdb, + 0xf7, 0xdb, 0xa6, 0x41, 0xfc, 0xff, 0x27, 0x55, 0xf6, 0xa6, 0xdc, 0x08, 0x47, 0x59, 0x3e, 0xdf, + 0x58, 0xa5, 0x07, 0x76, 0x7a, 0x93, 0x5d, 0xd5, 0x32, 0xcc, 0x75, 0xcb, 0xdc, 0xb2, 0xb0, 0x6d, + 0x93, 0x53, 0x53, 0x93, 0x6a, 0x28, 0x45, 0x79, 0x10, 0x8e, 0x75, 0x74, 0xe3, 0xa2, 0x4d, 0x82, + 0xf4, 0x2e, 0x31, 0xb7, 0xb1, 0x99, 0x3e, 0xc1, 0xb3, 0x43, 0x8d, 0x8d, 0xc9, 0x21, 0xfc, 0x8b, + 0xba, 0x9f, 0x0a, 0x7a, 0x49, 0x06, 0x66, 0xc2, 0x09, 0x8a, 0x06, 0x8a, 0xd7, 0x8d, 0xd9, 0xe7, + 0xb7, 0x75, 0x07, 0xbb, 0xc4, 0xd8, 0xd9, 0x94, 0xdb, 0x06, 0x14, 0xa6, 0xee, 0xfb, 0x51, 0xed, + 0x43, 0xcc, 0x15, 0x2a, 0xed, 0xa0, 0x88, 0x27, 0x98, 0xcd, 0x6c, 0x4b, 0x2e, 0x0d, 0x3d, 0x1b, + 0x94, 0xfd, 0xd4, 0x42, 0x5e, 0x1b, 0x99, 0x64, 0x5e, 0x1b, 0xca, 0x4d, 0x50, 0xd0, 0x3a, 0x1d, + 0xf3, 0x12, 0x6e, 0xfb, 0x64, 0x99, 0x6e, 0xed, 0x4b, 0x47, 0x9f, 0x1a, 0x66, 0x1e, 0x97, 0xf8, + 0x5a, 0x09, 0xb7, 0x51, 0xec, 0xb6, 0x5a, 0x18, 0xb7, 0xd9, 0x41, 0x33, 0xef, 0x35, 0xe1, 0x85, + 0x13, 0x89, 0x67, 0x7d, 0x87, 0x74, 0xe3, 0xc4, 0xfb, 0x4f, 0x40, 0x9e, 0xde, 0xde, 0x86, 0x5e, + 0x32, 0xd7, 0xb7, 0x6f, 0x98, 0xe3, 0xfb, 0x86, 0x0d, 0x98, 0x31, 0x4c, 0xb7, 0xb8, 0x75, 0xcd, + 0xd2, 0x76, 0xec, 0xb8, 0x45, 0x5d, 0x4a, 0xd7, 0x1f, 0xc1, 0xab, 0xa1, 0xdf, 0x56, 0x8e, 0xa8, + 0x1c, 0x19, 0xe5, 0xff, 0x07, 0x47, 0x2f, 0xb0, 0x80, 0x0c, 0x36, 0xa3, 0x2c, 0x45, 0xbb, 0x3c, + 0xf6, 0x50, 0x5e, 0xe0, 0xff, 0x5c, 0x39, 0xa2, 0xf6, 0x12, 0x53, 0x7e, 0x04, 0xe6, 0xdc, 0xd7, + 0xb6, 0x79, 0xc9, 0x63, 0x5c, 0x8e, 0xb6, 0xfb, 0x7a, 0xc8, 0xaf, 0x71, 0x3f, 0xae, 0x1c, 0x51, + 0x7b, 0x48, 0x29, 0x35, 0x80, 0x6d, 0x67, 0xa7, 0xc3, 0x08, 0x67, 0xa3, 0x55, 0xb2, 0x87, 0xf0, + 0x8a, 0xff, 0xd3, 0xca, 0x11, 0x35, 0x44, 0x42, 0x59, 0x85, 0x29, 0xe7, 0x61, 0x87, 0xd1, 0xcb, + 0x45, 0xfb, 0x1a, 0xf4, 0xd0, 0x6b, 0x78, 0xff, 0xac, 0x1c, 0x51, 0x03, 0x02, 0x4a, 0x05, 0x26, + 0xbb, 0x17, 0x18, 0xb1, 0x7c, 0x74, 0xff, 0xd4, 0x43, 0x6c, 0xfd, 0x82, 0x4f, 0xcb, 0xff, 0xdd, + 0x65, 0xac, 0x65, 0xef, 0x31, 0x5a, 0x13, 0xc2, 0x8c, 0x95, 0xbc, 0x7f, 0x5c, 0xc6, 0x7c, 0x02, + 0x4a, 0x05, 0xa6, 0x6c, 0x43, 0xeb, 0xda, 0xdb, 0xa6, 0x63, 0x9f, 0x9a, 0xec, 0x71, 0x4b, 0x8d, + 0xa6, 0x56, 0x67, 0xff, 0xa8, 0xc1, 0xdf, 0xca, 0xd3, 0xe0, 0xc4, 0x6e, 0xb7, 0xad, 0x39, 0xb8, + 0xfc, 0xb0, 0x6e, 0x3b, 0xba, 0xb1, 0xe5, 0x85, 0xf4, 0xa5, 0x9d, 0x7b, 0xff, 0x8f, 0xca, 0x3c, + 0x3b, 0xa0, 0x06, 0xa4, 0x6d, 0xa2, 0xde, 0xbd, 0x51, 0x5a, 0x6c, 0xe8, 0x5c, 0xda, 0x33, 0x21, + 0xeb, 0x7e, 0x22, 0x83, 0xc1, 0x5c, 0xff, 0x75, 0xd7, 0x5e, 0xdd, 0x21, 0x0d, 0xd8, 0xfd, 0xa9, + 0x67, 0x3c, 0x99, 0xd9, 0x37, 0x9e, 0x9c, 0x81, 0x69, 0xdd, 0x5e, 0xd3, 0xb7, 0xa8, 0x31, 0xcb, + 0x8e, 0x1f, 0x84, 0x93, 0xe8, 0xe4, 0xbf, 0x8a, 0x2f, 0xd1, 0x0b, 0x4b, 0x8e, 0x7a, 0x93, 0x7f, + 0x2f, 0x05, 0xdd, 0x00, 0x33, 0xe1, 0x46, 0x46, 0xaf, 0x80, 0xd5, 0x03, 0x53, 0x98, 0xbd, 0xa1, + 0xeb, 0x61, 0x8e, 0xd7, 0xe9, 0xd0, 0x88, 0x2f, 0x7b, 0x5d, 0x21, 0xba, 0x0e, 0x8e, 0xf6, 0x34, + 0x2c, 0x2f, 0xc4, 0x4b, 0x26, 0x08, 0xf1, 0x72, 0x06, 0x20, 0xd0, 0xe2, 0xbe, 0x64, 0xae, 0x85, + 0x29, 0x5f, 0x2f, 0xfb, 0x66, 0xf8, 0x62, 0x06, 0x26, 0x3d, 0x65, 0xeb, 0x97, 0xc1, 0x1d, 0x99, + 0x8c, 0xd0, 0x7e, 0x8e, 0x37, 0x32, 0x85, 0xd3, 0xdc, 0x61, 0x3d, 0xf0, 0xa2, 0x6e, 0xe8, 0x4e, + 0xc7, 0x3b, 0x89, 0xd8, 0x9b, 0xac, 0xac, 0x03, 0xe8, 0x04, 0xa3, 0x46, 0x70, 0x34, 0xf1, 0xd6, + 0x04, 0xed, 0x81, 0xea, 0x43, 0x88, 0xc6, 0xd9, 0xef, 0x63, 0xe7, 0x06, 0xa7, 0x20, 0x47, 0xe3, + 0xda, 0x1f, 0x51, 0xe6, 0x00, 0xca, 0xcf, 0x5a, 0x2f, 0xab, 0x95, 0x72, 0xb5, 0x54, 0x2e, 0x64, + 0xd0, 0xaf, 0x49, 0x30, 0xe5, 0x37, 0x82, 0xbe, 0x95, 0x2c, 0x33, 0xd5, 0x1a, 0x78, 0xcb, 0xe6, + 0xfe, 0x46, 0x15, 0x56, 0xb2, 0x67, 0xc0, 0x95, 0xbb, 0x36, 0x5e, 0xd2, 0x2d, 0xdb, 0x51, 0xcd, + 0x4b, 0x4b, 0xa6, 0x15, 0x0c, 0xac, 0x34, 0xa0, 0x6c, 0xd4, 0x67, 0xd7, 0xc0, 0x6b, 0x63, 0x72, + 0x46, 0x0d, 0x5b, 0x6c, 0xa1, 0x3e, 0x48, 0x70, 0xe9, 0x3a, 0x96, 0x66, 0xd8, 0x5d, 0xd3, 0xc6, + 0xaa, 0x79, 0xc9, 0x2e, 0x1a, 0xed, 0x92, 0xd9, 0xd9, 0xdd, 0x31, 0x6c, 0x66, 0xa2, 0x45, 0x7d, + 0x76, 0xa5, 0x43, 0xee, 0xd0, 0x9d, 0x03, 0x28, 0xd5, 0x56, 0x57, 0xcb, 0xa5, 0x46, 0xa5, 0x56, + 0x2d, 0x1c, 0x71, 0xa5, 0xd5, 0x28, 0x2e, 0xac, 0xba, 0xd2, 0xf9, 0x51, 0x98, 0xf4, 0xda, 0x34, + 0x8b, 0x4a, 0x93, 0xf1, 0xa2, 0xd2, 0x28, 0x45, 0x98, 0xf4, 0x5a, 0x39, 0x1b, 0x11, 0x9e, 0xd8, + 0x7b, 0x0a, 0x79, 0x47, 0xb3, 0x1c, 0x62, 0xa0, 0x78, 0x44, 0x16, 0x34, 0x1b, 0xab, 0xfe, 0x6f, + 0x67, 0x9f, 0xc2, 0x38, 0x50, 0x60, 0xae, 0xb8, 0xba, 0xda, 0xac, 0xa9, 0xcd, 0x6a, 0xad, 0xb1, + 0x52, 0xa9, 0x2e, 0xd3, 0x11, 0xb2, 0xb2, 0x5c, 0xad, 0xa9, 0x65, 0x3a, 0x40, 0xd6, 0x0b, 0x19, + 0x7a, 0x87, 0xf3, 0xc2, 0x24, 0xe4, 0xbb, 0x44, 0xba, 0xe8, 0xf3, 0x72, 0xc2, 0xf0, 0x03, 0x3e, + 0x4e, 0x11, 0xb7, 0xcc, 0x72, 0x47, 0x00, 0xa4, 0x3e, 0x47, 0x74, 0xcf, 0xc2, 0x0c, 0x35, 0xad, + 0x6d, 0xb2, 0x9b, 0x42, 0x90, 0x93, 0x55, 0x2e, 0x0d, 0x7d, 0x50, 0x4a, 0x10, 0x93, 0xa0, 0x2f, + 0x47, 0xc9, 0x8c, 0x8b, 0x3f, 0xcf, 0x0c, 0x77, 0x0b, 0x44, 0xa5, 0xda, 0x28, 0xab, 0xd5, 0xe2, + 0x2a, 0xcb, 0x22, 0x2b, 0xa7, 0xe0, 0x78, 0xb5, 0xc6, 0x42, 0x2c, 0xd6, 0x9b, 0x8d, 0x5a, 0xb3, + 0xb2, 0xb6, 0x5e, 0x53, 0x1b, 0x85, 0x9c, 0x72, 0x12, 0x14, 0xfa, 0xdc, 0xac, 0xd4, 0x9b, 0xa5, + 0x62, 0xb5, 0x54, 0x5e, 0x2d, 0x2f, 0x16, 0xf2, 0xca, 0x93, 0xe0, 0x3a, 0x7a, 0xab, 0x50, 0x6d, + 0xa9, 0xa9, 0xd6, 0xce, 0xd7, 0x5d, 0x04, 0xd5, 0xf2, 0x6a, 0xd1, 0x55, 0xa4, 0xd0, 0x5d, 0xce, + 0x13, 0xca, 0x15, 0x70, 0x94, 0x5c, 0xf4, 0xbe, 0x5a, 0x2b, 0x2e, 0xb2, 0xf2, 0x26, 0x95, 0x6b, + 0xe0, 0x54, 0xa5, 0x5a, 0xdf, 0x58, 0x5a, 0xaa, 0x94, 0x2a, 0xe5, 0x6a, 0xa3, 0xb9, 0x5e, 0x56, + 0xd7, 0x2a, 0xf5, 0xba, 0xfb, 0x6f, 0x61, 0x8a, 0xdc, 0x94, 0x4b, 0xfb, 0x4c, 0xf4, 0x4e, 0x19, + 0x66, 0xcf, 0x69, 0x1d, 0xdd, 0x1d, 0x28, 0xc8, 0x15, 0xda, 0x3d, 0xa7, 0x77, 0x1c, 0x72, 0xd5, + 0x36, 0xf3, 0xff, 0x27, 0x2f, 0xe8, 0x27, 0xe5, 0x84, 0xa7, 0x77, 0x18, 0x10, 0xb4, 0xc4, 0x79, + 0xae, 0xb4, 0x88, 0xb9, 0xe6, 0x2b, 0xa5, 0x04, 0xa7, 0x77, 0xc4, 0xc9, 0x27, 0x03, 0xff, 0xd7, + 0x47, 0x05, 0x7e, 0x01, 0x66, 0x36, 0xaa, 0xc5, 0x8d, 0xc6, 0x4a, 0x4d, 0xad, 0xfc, 0x30, 0x09, + 0xfe, 0x3e, 0x0b, 0x53, 0x4b, 0x35, 0x75, 0xa1, 0xb2, 0xb8, 0x58, 0xae, 0x16, 0x72, 0xca, 0x95, + 0x70, 0x45, 0xbd, 0xac, 0x9e, 0xab, 0x94, 0xca, 0xcd, 0x8d, 0x6a, 0xf1, 0x5c, 0xb1, 0xb2, 0x4a, + 0xfa, 0x88, 0x7c, 0xcc, 0xf5, 0xdf, 0x13, 0xe8, 0xc7, 0xb3, 0x00, 0xb4, 0xea, 0xe4, 0xee, 0xa3, + 0xd0, 0x25, 0xd1, 0x9f, 0x49, 0x3a, 0x69, 0x08, 0xc8, 0x44, 0xb4, 0xdf, 0x0a, 0x4c, 0x5a, 0xec, + 0x03, 0x5b, 0xcd, 0x1a, 0x44, 0x87, 0x3e, 0x7a, 0xd4, 0x54, 0xff, 0x77, 0xf4, 0xae, 0x24, 0x73, + 0x84, 0x48, 0xc6, 0x92, 0x21, 0xb9, 0x34, 0x1a, 0x20, 0xd1, 0x0b, 0x33, 0x30, 0xc7, 0x57, 0xcc, + 0xad, 0x04, 0x31, 0xa6, 0xc4, 0x2a, 0xc1, 0xff, 0x1c, 0x32, 0xb2, 0xce, 0x3e, 0x95, 0x0d, 0xa7, + 0xe0, 0xb5, 0x4c, 0x7a, 0x10, 0xdf, 0xb3, 0x58, 0x0a, 0x19, 0x97, 0x79, 0xd7, 0xe8, 0x28, 0x48, + 0xca, 0x04, 0xc8, 0x8d, 0x87, 0x9d, 0x82, 0x8c, 0xbe, 0x28, 0xc3, 0x2c, 0x77, 0x0b, 0x35, 0x7a, + 0x65, 0x46, 0xe4, 0x86, 0xd8, 0xd0, 0xfd, 0xd6, 0x99, 0x83, 0xde, 0x6f, 0x7d, 0xf6, 0x16, 0x98, + 0x60, 0x69, 0x44, 0xbe, 0xb5, 0xaa, 0x6b, 0x0a, 0x1c, 0x85, 0xe9, 0xe5, 0x72, 0xa3, 0x59, 0x6f, + 0x14, 0xd5, 0x46, 0x79, 0xb1, 0x90, 0x71, 0x07, 0xbe, 0xf2, 0xda, 0x7a, 0xe3, 0xc1, 0x82, 0x94, + 0xdc, 0x21, 0xb2, 0x97, 0x91, 0x31, 0x3b, 0x44, 0xc6, 0x15, 0x9f, 0xfe, 0x5c, 0xf5, 0x13, 0x32, + 0x14, 0x28, 0x07, 0xe5, 0x87, 0xbb, 0xd8, 0xd2, 0xb1, 0xd1, 0xc2, 0xe8, 0xa2, 0x48, 0x00, 0xd6, + 0x7d, 0xa1, 0x09, 0x49, 0x7f, 0x1e, 0xb2, 0x12, 0xe9, 0x4b, 0x8f, 0x81, 0x9d, 0xdd, 0x67, 0x60, + 0x7f, 0x3c, 0xa9, 0x47, 0x64, 0x2f, 0xbb, 0x23, 0x81, 0xec, 0x23, 0x49, 0x3c, 0x22, 0x07, 0x70, + 0x30, 0x96, 0xb8, 0xca, 0x11, 0xe3, 0x6f, 0x41, 0x46, 0x2f, 0x90, 0xe1, 0xe8, 0xa2, 0xe6, 0xe0, + 0x85, 0xcb, 0x0d, 0xef, 0x96, 0xc8, 0x88, 0x9b, 0x9d, 0x33, 0xfb, 0x6e, 0x76, 0x0e, 0x2e, 0x9a, + 0x94, 0x7a, 0x2e, 0x9a, 0x44, 0x6f, 0x4b, 0x7a, 0x86, 0xb2, 0x87, 0x87, 0x91, 0x05, 0x3f, 0x4e, + 0x76, 0x36, 0x32, 0x9e, 0x8b, 0xf4, 0x1b, 0xd8, 0x9b, 0xa6, 0xa0, 0x40, 0x59, 0x09, 0x39, 0xfd, + 0xfd, 0x22, 0xbb, 0x0c, 0xbd, 0x99, 0x20, 0xc6, 0xa2, 0x17, 0xb5, 0x42, 0xe2, 0xa3, 0x56, 0x70, + 0x6b, 0xc8, 0x72, 0xaf, 0xa3, 0x46, 0xd2, 0xce, 0x30, 0xe4, 0xe1, 0x17, 0x1d, 0xd6, 0x36, 0xbd, + 0xce, 0x30, 0xb6, 0xf8, 0xf1, 0x5c, 0xd8, 0xcb, 0xae, 0xd5, 0x2c, 0x8b, 0x22, 0x13, 0x7f, 0x2f, + 0x79, 0x52, 0x77, 0x6f, 0xce, 0xc3, 0x32, 0xe6, 0xb2, 0xee, 0xf4, 0xdc, 0xbd, 0x07, 0x71, 0x90, + 0x3e, 0x0a, 0xdf, 0x91, 0x20, 0x5b, 0x37, 0x2d, 0x67, 0x54, 0x18, 0x24, 0xdd, 0xa2, 0x0e, 0x49, + 0xa0, 0x1e, 0x3d, 0xe7, 0x4c, 0x6f, 0x8b, 0x3a, 0xbe, 0xfc, 0x31, 0x84, 0xa9, 0x3c, 0x0a, 0x73, + 0x94, 0x13, 0xff, 0x0e, 0x97, 0x6f, 0x4b, 0xb4, 0xbf, 0x7a, 0x40, 0x14, 0x11, 0xb2, 0xf1, 0xe1, + 0x6f, 0x11, 0x7b, 0xa0, 0x70, 0x69, 0xe8, 0xb5, 0x61, 0x5c, 0x16, 0x79, 0x5c, 0xfa, 0xcd, 0xb8, + 0xfd, 0x6b, 0x50, 0x46, 0xd5, 0x33, 0x25, 0x89, 0x78, 0x19, 0x53, 0x78, 0xfa, 0x88, 0x3c, 0x22, + 0x43, 0x9e, 0xb9, 0xe8, 0x8d, 0x14, 0x81, 0xa4, 0x2d, 0xc3, 0x17, 0x82, 0x98, 0x2b, 0x9f, 0x3c, + 0xea, 0x96, 0x11, 0x5f, 0x7e, 0xfa, 0x38, 0xfc, 0x3b, 0xf3, 0x3d, 0x2d, 0xee, 0x69, 0x7a, 0x47, + 0xbb, 0xd0, 0x49, 0x10, 0x69, 0xfa, 0x83, 0x09, 0x4f, 0xdb, 0xf9, 0x55, 0xe5, 0xca, 0x8b, 0x90, + 0xf8, 0x0f, 0xc0, 0x94, 0xc5, 0xed, 0xf5, 0xb9, 0x56, 0x54, 0x8f, 0xdf, 0x2f, 0xfb, 0xae, 0x06, + 0x39, 0x13, 0x1d, 0xad, 0x13, 0xe2, 0x67, 0x2c, 0x47, 0x81, 0xa6, 0x8b, 0xed, 0xf6, 0x12, 0xd6, + 0x9c, 0x5d, 0x0b, 0xb7, 0x13, 0x0d, 0x11, 0x56, 0xcf, 0x76, 0x68, 0x48, 0x12, 0x5c, 0xac, 0xc7, + 0x55, 0x1e, 0x9d, 0xa7, 0x0f, 0xe8, 0x0d, 0x3c, 0x5e, 0x46, 0xd2, 0x25, 0xbd, 0xd1, 0x87, 0xa4, + 0xc6, 0x41, 0xf2, 0xcc, 0xe1, 0x98, 0x48, 0x1f, 0x90, 0x5f, 0x96, 0x61, 0x8e, 0xda, 0x09, 0xa3, + 0xc6, 0xe4, 0xf7, 0x13, 0xba, 0xf4, 0x84, 0x6e, 0xc9, 0x0a, 0xb3, 0x33, 0x12, 0x58, 0x92, 0x38, + 0x00, 0x89, 0xf1, 0x91, 0x3e, 0x32, 0x9f, 0xca, 0x03, 0x84, 0xdc, 0x34, 0x3f, 0x98, 0x0f, 0xe2, + 0x2e, 0xa2, 0x37, 0xb3, 0xf9, 0x47, 0x9d, 0x0b, 0x02, 0x1e, 0x72, 0xc1, 0xf4, 0x37, 0xa4, 0xf8, + 0x44, 0xa1, 0x51, 0xe5, 0xcf, 0x13, 0xda, 0xbc, 0xcc, 0x49, 0x72, 0xe0, 0xe0, 0x3e, 0x64, 0x2f, + 0xf7, 0xa1, 0x04, 0xc6, 0xef, 0x20, 0x56, 0x92, 0xa1, 0xb6, 0x3a, 0xc4, 0xcc, 0xfe, 0x14, 0x1c, + 0x57, 0xcb, 0xc5, 0xc5, 0x5a, 0x75, 0xf5, 0xc1, 0xf0, 0x95, 0x49, 0x05, 0x39, 0x3c, 0x39, 0x49, + 0x05, 0xb6, 0x57, 0x27, 0xec, 0x03, 0x79, 0x59, 0xc5, 0xcd, 0x56, 0x42, 0x8b, 0x2b, 0x83, 0x7b, + 0x35, 0x01, 0xb2, 0x87, 0x89, 0xc2, 0x23, 0x10, 0x6a, 0x46, 0x3f, 0x2d, 0x43, 0x81, 0xf8, 0xfe, + 0x10, 0x2e, 0xd9, 0xdd, 0x78, 0x35, 0xde, 0x8b, 0xb3, 0x4b, 0xf7, 0x9f, 0x02, 0x2f, 0x4e, 0x2f, + 0x41, 0xb9, 0x01, 0xe6, 0x5a, 0xdb, 0xb8, 0x75, 0xb1, 0x62, 0x78, 0xfb, 0xea, 0x74, 0x13, 0xb6, + 0x27, 0x95, 0x07, 0xe6, 0x01, 0x1e, 0x18, 0x7e, 0x12, 0xcd, 0x0d, 0xd2, 0x61, 0xa6, 0x22, 0x70, + 0xf9, 0x23, 0x1f, 0x97, 0x2a, 0x87, 0xcb, 0x9d, 0x43, 0x51, 0x4d, 0x06, 0x4b, 0x75, 0x08, 0x58, + 0x10, 0x9c, 0xac, 0xad, 0x37, 0x2a, 0xb5, 0x6a, 0x73, 0xa3, 0x5e, 0x5e, 0x6c, 0x2e, 0x78, 0xe0, + 0xd4, 0x0b, 0x32, 0xfa, 0xaa, 0x04, 0x13, 0x94, 0x2d, 0x1b, 0x3d, 0x39, 0x80, 0x60, 0xa0, 0xfb, + 0x2a, 0x7a, 0x93, 0x70, 0x30, 0x0a, 0x5f, 0x10, 0xac, 0x9c, 0x88, 0x7e, 0xea, 0x19, 0x30, 0x41, + 0x41, 0xf6, 0x56, 0xb4, 0x4e, 0x47, 0xf4, 0x52, 0x8c, 0x8c, 0xea, 0x65, 0x17, 0x0c, 0x4c, 0x31, + 0x80, 0x8d, 0xf4, 0x47, 0x96, 0xe7, 0x64, 0xa9, 0x19, 0x7c, 0x5e, 0x77, 0xb6, 0x89, 0x77, 0x2b, + 0xfa, 0x21, 0x91, 0xe5, 0xc5, 0x9b, 0x21, 0xb7, 0xe7, 0xe6, 0x1e, 0xe0, 0x29, 0x4c, 0x33, 0xa1, + 0x5f, 0x17, 0x8e, 0x83, 0xca, 0xe9, 0xa7, 0xcf, 0x53, 0x04, 0x38, 0x6b, 0x90, 0xed, 0xe8, 0xb6, + 0xc3, 0xc6, 0x8f, 0x3b, 0x12, 0x11, 0xf2, 0x1e, 0x2a, 0x0e, 0xde, 0x51, 0x09, 0x19, 0x74, 0x3f, + 0xcc, 0x84, 0x53, 0x05, 0xbc, 0xa5, 0x4f, 0xc1, 0x04, 0x3b, 0xc5, 0xc7, 0x96, 0x58, 0xbd, 0x57, + 0xc1, 0x65, 0x4d, 0xa1, 0xda, 0xa6, 0xaf, 0x03, 0xff, 0xf7, 0x51, 0x98, 0x58, 0xd1, 0x6d, 0xc7, + 0xb4, 0x2e, 0xa3, 0x47, 0x33, 0x30, 0x71, 0x0e, 0x5b, 0xb6, 0x6e, 0x1a, 0xfb, 0x5c, 0x0d, 0xce, + 0xc0, 0x74, 0xd7, 0xc2, 0x7b, 0xba, 0xb9, 0x6b, 0x07, 0x8b, 0x33, 0xe1, 0x24, 0x05, 0xc1, 0xa4, + 0xb6, 0xeb, 0x6c, 0x9b, 0x56, 0x10, 0xfc, 0xc3, 0x7b, 0x57, 0x4e, 0x03, 0xd0, 0xe7, 0xaa, 0xb6, + 0x83, 0x99, 0x03, 0x45, 0x28, 0x45, 0x51, 0x20, 0xeb, 0xe8, 0x3b, 0x98, 0x45, 0x03, 0x26, 0xcf, + 0xae, 0x80, 0x49, 0x64, 0x3d, 0x16, 0xc1, 0x50, 0x56, 0xbd, 0x57, 0xf4, 0x59, 0x19, 0xa6, 0x97, + 0xb1, 0xc3, 0x58, 0xb5, 0xd1, 0x8b, 0x32, 0x42, 0x17, 0x70, 0xb8, 0x63, 0x6c, 0x47, 0xb3, 0xbd, + 0xff, 0xfc, 0x25, 0x58, 0x3e, 0x31, 0x08, 0x4d, 0x2c, 0x87, 0xe3, 0x92, 0x93, 0x38, 0x75, 0x4e, + 0x85, 0xba, 0xc1, 0xb2, 0xcc, 0x6c, 0x13, 0x64, 0xff, 0x07, 0xf4, 0x76, 0x49, 0xf4, 0x8c, 0x37, + 0x93, 0xfd, 0x7c, 0xa8, 0x3e, 0x91, 0xdd, 0xd1, 0xe4, 0x1e, 0xcb, 0xb1, 0x2f, 0xe4, 0x7c, 0x98, + 0x12, 0x23, 0xa3, 0xfa, 0xb9, 0x05, 0x4f, 0x87, 0x0f, 0xe6, 0x24, 0x7d, 0x6d, 0xfc, 0xa6, 0x0c, + 0xd3, 0xf5, 0x6d, 0xf3, 0x92, 0x27, 0xc7, 0x1f, 0x15, 0x03, 0xf6, 0x1a, 0x98, 0xda, 0xeb, 0x01, + 0x35, 0x48, 0x88, 0xbe, 0x12, 0x1f, 0x3d, 0x5f, 0x4e, 0x0a, 0x53, 0x88, 0xb9, 0x91, 0x5f, 0x58, + 0xaf, 0x3c, 0x1d, 0x26, 0x18, 0xd7, 0x6c, 0xc9, 0x25, 0x1e, 0x60, 0x2f, 0x73, 0xb8, 0x82, 0x59, + 0xbe, 0x82, 0xc9, 0x90, 0x8f, 0xae, 0x5c, 0xfa, 0xc8, 0xff, 0x89, 0x44, 0x62, 0x83, 0x78, 0xc0, + 0x97, 0x46, 0x00, 0x3c, 0xfa, 0x56, 0x46, 0x74, 0x61, 0xd2, 0x97, 0x80, 0xcf, 0xc1, 0x81, 0x2e, + 0xd7, 0x19, 0x48, 0x2e, 0x7d, 0x79, 0xfe, 0x5a, 0x16, 0x66, 0x16, 0xf5, 0xcd, 0x4d, 0xbf, 0x93, + 0x7c, 0xb1, 0x60, 0x27, 0x19, 0xed, 0x0e, 0xe0, 0xda, 0xb9, 0xbb, 0x96, 0x85, 0x0d, 0xaf, 0x52, + 0xac, 0x39, 0xf5, 0xa4, 0x2a, 0x37, 0xc2, 0x51, 0x6f, 0x5c, 0x08, 0x77, 0x94, 0x53, 0x6a, 0x6f, + 0x32, 0xfa, 0x86, 0xf0, 0xae, 0x96, 0x27, 0xd1, 0x70, 0x95, 0x22, 0x1a, 0xe0, 0x5d, 0x30, 0xbb, + 0x4d, 0x73, 0x93, 0xa9, 0xbf, 0xd7, 0x59, 0x9e, 0xec, 0x89, 0xbd, 0xbc, 0x86, 0x6d, 0x5b, 0xdb, + 0xc2, 0x2a, 0x9f, 0xb9, 0xa7, 0xf9, 0xca, 0x49, 0x6e, 0x12, 0x13, 0xdb, 0x20, 0x13, 0xa8, 0xc9, + 0x18, 0xb4, 0xe3, 0x2c, 0x64, 0x97, 0xf4, 0x0e, 0x46, 0x3f, 0x23, 0xc1, 0x94, 0x8a, 0x5b, 0xa6, + 0xd1, 0x72, 0xdf, 0x42, 0xce, 0x41, 0xff, 0x98, 0x11, 0xbd, 0x41, 0xd3, 0xa5, 0x33, 0xef, 0xd3, + 0x88, 0x68, 0x37, 0x62, 0x37, 0x65, 0xc6, 0x92, 0x1a, 0xc3, 0x7d, 0x27, 0xee, 0xd4, 0x63, 0x73, + 0xb3, 0x63, 0x6a, 0xdc, 0xe2, 0x57, 0xaf, 0x29, 0x74, 0x13, 0x14, 0xbc, 0x23, 0x37, 0xa6, 0xb3, + 0xae, 0x1b, 0x86, 0x7f, 0xa6, 0x7b, 0x5f, 0x3a, 0xbf, 0x6f, 0x1b, 0x1b, 0x16, 0x87, 0xd4, 0x9d, + 0x95, 0x1e, 0xa1, 0xd9, 0x37, 0xc0, 0xdc, 0x85, 0xcb, 0x0e, 0xb6, 0x59, 0x2e, 0x56, 0x6c, 0x56, + 0xed, 0x49, 0x0d, 0x05, 0xb5, 0x8e, 0x0b, 0x9f, 0x13, 0x53, 0x60, 0x32, 0x51, 0xaf, 0x0c, 0x31, + 0x03, 0x3c, 0x0e, 0x85, 0x6a, 0x6d, 0xb1, 0x4c, 0x7c, 0xd5, 0x3c, 0xef, 0x9f, 0x2d, 0xf4, 0x0b, + 0x32, 0xcc, 0x10, 0x67, 0x12, 0x0f, 0x85, 0xeb, 0x04, 0xe6, 0x23, 0xe8, 0x31, 0x61, 0x3f, 0x36, + 0x52, 0xe5, 0x70, 0x01, 0xd1, 0x82, 0xde, 0xd4, 0x3b, 0xbd, 0x82, 0xce, 0xa9, 0x3d, 0xa9, 0x7d, + 0x00, 0x91, 0xfb, 0x02, 0xf2, 0xbb, 0x42, 0xce, 0x6c, 0x83, 0xb8, 0x3b, 0x2c, 0x54, 0x7e, 0x4f, + 0x86, 0x69, 0x77, 0x92, 0xe2, 0x81, 0x52, 0xe3, 0x40, 0x31, 0x8d, 0xce, 0xe5, 0x60, 0x59, 0xc4, + 0x7b, 0x4d, 0xd4, 0x48, 0xfe, 0x52, 0x78, 0xe6, 0x4e, 0x44, 0x14, 0xe2, 0x65, 0x4c, 0xf8, 0xbd, + 0x5b, 0x68, 0x3e, 0x3f, 0x80, 0xb9, 0xc3, 0x82, 0xef, 0xcb, 0x39, 0xc8, 0x6f, 0x74, 0x09, 0x72, + 0xbf, 0x2e, 0x8b, 0x04, 0x88, 0xdf, 0x77, 0x90, 0xc1, 0x35, 0xb3, 0x3a, 0x66, 0x4b, 0xeb, 0xac, + 0x07, 0x27, 0xc2, 0x82, 0x04, 0xe5, 0x4e, 0xe6, 0xdb, 0x48, 0x4f, 0x37, 0xde, 0x10, 0x1b, 0x3b, + 0x9d, 0xc8, 0x28, 0x74, 0x68, 0xe4, 0x66, 0x38, 0xd6, 0xd6, 0x6d, 0xed, 0x42, 0x07, 0x97, 0x8d, + 0x96, 0x75, 0x99, 0x8a, 0x83, 0x4d, 0xab, 0xf6, 0x7d, 0x50, 0xee, 0x86, 0x9c, 0xed, 0x5c, 0xee, + 0xd0, 0x79, 0x62, 0xf8, 0x8c, 0x49, 0x64, 0x51, 0x75, 0x37, 0xbb, 0x4a, 0xff, 0x0a, 0xbb, 0x28, + 0x4d, 0x08, 0x5e, 0x9f, 0xfd, 0x54, 0xc8, 0x9b, 0x96, 0xbe, 0xa5, 0xd3, 0xeb, 0x90, 0xe6, 0xf6, + 0x85, 0x08, 0xa4, 0xa6, 0x40, 0x8d, 0x64, 0x51, 0x59, 0x56, 0xe5, 0xe9, 0x30, 0xa5, 0xef, 0x68, + 0x5b, 0xf8, 0x01, 0xdd, 0xa0, 0x07, 0x28, 0xe7, 0x6e, 0x3f, 0xb5, 0xef, 0xf8, 0x0c, 0xfb, 0xae, + 0x06, 0x59, 0xd1, 0xbb, 0x25, 0xd1, 0x38, 0x46, 0xa4, 0x6e, 0x14, 0xd4, 0xb1, 0x5c, 0x23, 0x8e, + 0x5e, 0x21, 0x14, 0x61, 0x28, 0x9a, 0xad, 0xf4, 0x07, 0xef, 0x4f, 0x4b, 0x30, 0xb9, 0x68, 0x5e, + 0x32, 0x88, 0xa2, 0xdf, 0x21, 0x66, 0xeb, 0xf6, 0x39, 0xe4, 0xc8, 0xdf, 0xd2, 0x19, 0x7b, 0xa2, + 0x81, 0xd4, 0xd6, 0x2b, 0x32, 0x02, 0x86, 0xd8, 0x96, 0x23, 0x78, 0x77, 0x62, 0x5c, 0x39, 0xe9, + 0xcb, 0xf5, 0x4f, 0x65, 0xc8, 0x2e, 0x5a, 0x66, 0x17, 0xbd, 0x31, 0x93, 0xc0, 0x65, 0xa1, 0x6d, + 0x99, 0xdd, 0x06, 0xb9, 0xfc, 0x2c, 0x38, 0xc6, 0x11, 0x4e, 0x53, 0xee, 0x80, 0xc9, 0xae, 0x69, + 0xeb, 0x8e, 0x37, 0x8d, 0x98, 0xbb, 0xfd, 0x09, 0x7d, 0x5b, 0xf3, 0x3a, 0xcb, 0xa4, 0xfa, 0xd9, + 0xdd, 0x5e, 0x9b, 0x88, 0xd0, 0x95, 0x8b, 0x2b, 0x46, 0xef, 0x02, 0xb8, 0x9e, 0x54, 0xf4, 0x92, + 0x30, 0x92, 0xcf, 0xe4, 0x91, 0x7c, 0x62, 0x1f, 0x09, 0x5b, 0x66, 0x77, 0x24, 0x9b, 0x8c, 0x2f, + 0xf3, 0x51, 0xbd, 0x87, 0x43, 0xf5, 0x26, 0xa1, 0x32, 0xd3, 0x47, 0xf4, 0xdd, 0x59, 0x00, 0x62, + 0x66, 0x6c, 0xb8, 0x13, 0x20, 0x31, 0x1b, 0xeb, 0xa7, 0xb2, 0x21, 0x59, 0x16, 0x79, 0x59, 0x3e, + 0x39, 0xc2, 0x8a, 0x21, 0xe4, 0x23, 0x24, 0x5a, 0x84, 0xdc, 0xae, 0xfb, 0x99, 0x49, 0x54, 0x90, + 0x04, 0x79, 0x55, 0xe9, 0x9f, 0xe8, 0x4f, 0x32, 0x90, 0x23, 0x09, 0xca, 0x69, 0x00, 0x32, 0xb0, + 0xd3, 0x03, 0x41, 0x19, 0x32, 0x84, 0x87, 0x52, 0x88, 0xb6, 0xea, 0x6d, 0xf6, 0x99, 0x9a, 0xcc, + 0x41, 0x82, 0xfb, 0x37, 0x19, 0xee, 0x09, 0x2d, 0x66, 0x00, 0x84, 0x52, 0xdc, 0xbf, 0xc9, 0xdb, + 0x2a, 0xde, 0xa4, 0x71, 0xa9, 0xb3, 0x6a, 0x90, 0xe0, 0xff, 0xbd, 0xea, 0xdf, 0x66, 0xe6, 0xfd, + 0x4d, 0x52, 0xdc, 0xc9, 0x30, 0x51, 0xcb, 0x85, 0xa0, 0x88, 0x3c, 0xc9, 0xd4, 0x9b, 0x8c, 0x5e, + 0xed, 0xab, 0xcd, 0x22, 0xa7, 0x36, 0xb7, 0x26, 0x10, 0x6f, 0xfa, 0xca, 0xf3, 0xc5, 0x1c, 0x4c, + 0x55, 0xcd, 0x36, 0xd3, 0x9d, 0xd0, 0x84, 0xf1, 0x23, 0xb9, 0x44, 0x13, 0x46, 0x9f, 0x46, 0x84, + 0x82, 0xdc, 0xc7, 0x2b, 0x88, 0x18, 0x85, 0xb0, 0x7e, 0x28, 0x0b, 0x90, 0x27, 0xda, 0xbb, 0xff, + 0x9a, 0xac, 0x38, 0x12, 0x44, 0xb4, 0x2a, 0xfb, 0xf3, 0x3f, 0x9c, 0x8e, 0xfd, 0x57, 0xc8, 0x91, + 0x0a, 0xc6, 0xec, 0xee, 0xf0, 0x15, 0x95, 0xe2, 0x2b, 0x2a, 0xc7, 0x57, 0x34, 0xdb, 0x5b, 0xd1, + 0x24, 0xeb, 0x00, 0x51, 0x1a, 0x92, 0xbe, 0x8e, 0xff, 0xc3, 0x04, 0x40, 0x55, 0xdb, 0xd3, 0xb7, + 0xe8, 0xee, 0xf0, 0x67, 0xbd, 0xf9, 0x0f, 0xdb, 0xc7, 0xfd, 0x6f, 0xa1, 0x81, 0xf0, 0x0e, 0x98, + 0x60, 0xe3, 0x1e, 0xab, 0xc8, 0xb5, 0x5c, 0x45, 0x02, 0x2a, 0xd4, 0x2c, 0x7d, 0xd8, 0x51, 0xbd, + 0xfc, 0xdc, 0x8d, 0xbe, 0x52, 0xcf, 0x8d, 0xbe, 0xfd, 0xf7, 0x20, 0x22, 0xee, 0xf9, 0x45, 0xef, + 0x10, 0xf6, 0xe8, 0x0f, 0xf1, 0x13, 0xaa, 0x51, 0x44, 0x13, 0x7c, 0x2a, 0x4c, 0x98, 0xfe, 0x86, + 0xb6, 0x1c, 0xb9, 0x0e, 0x56, 0x31, 0x36, 0x4d, 0xd5, 0xcb, 0x29, 0xb8, 0xf9, 0x25, 0xc4, 0xc7, + 0x58, 0x0e, 0xcd, 0x9c, 0x5c, 0xf6, 0x62, 0x7c, 0xb9, 0xf5, 0x38, 0xaf, 0x3b, 0xdb, 0xab, 0xba, + 0x71, 0xd1, 0x46, 0xff, 0x59, 0xcc, 0x82, 0x0c, 0xe1, 0x2f, 0x25, 0xc3, 0x9f, 0x8f, 0xd9, 0x51, + 0xe7, 0x51, 0xbb, 0x3b, 0x8a, 0x4a, 0x7f, 0x6e, 0x23, 0x00, 0xbc, 0x13, 0xf2, 0x94, 0x51, 0xd6, + 0x89, 0x9e, 0x8d, 0xc4, 0xcf, 0xa7, 0xa4, 0xb2, 0x3f, 0xd0, 0xdb, 0x7d, 0x1c, 0xcf, 0x71, 0x38, + 0x2e, 0x1c, 0x88, 0xb3, 0xd4, 0x21, 0x3d, 0x7b, 0x1b, 0x4c, 0x30, 0x49, 0x2b, 0x73, 0xe1, 0x56, + 0x5c, 0x38, 0xa2, 0x00, 0xe4, 0xd7, 0xcc, 0x3d, 0xdc, 0x30, 0x0b, 0x19, 0xf7, 0xd9, 0xe5, 0xaf, + 0x61, 0x16, 0x24, 0xf4, 0xf2, 0x49, 0x98, 0xf4, 0x83, 0x2b, 0x7d, 0x5a, 0x82, 0x42, 0xc9, 0xc2, + 0x9a, 0x83, 0x97, 0x2c, 0x73, 0x87, 0xd6, 0x48, 0xdc, 0x3b, 0xf4, 0x97, 0x85, 0x5d, 0x3c, 0xfc, + 0xa0, 0x47, 0xbd, 0x85, 0x45, 0x60, 0x49, 0x17, 0x21, 0x25, 0x6f, 0x11, 0x12, 0xbd, 0x41, 0xc8, + 0xe5, 0x43, 0xb4, 0x94, 0xf4, 0x9b, 0xda, 0xc7, 0x25, 0xc8, 0x95, 0x3a, 0xa6, 0x81, 0xc3, 0x47, + 0x98, 0x06, 0x9e, 0x95, 0xe9, 0xbf, 0x13, 0x81, 0x9e, 0x23, 0x89, 0xda, 0x1a, 0x81, 0x00, 0xdc, + 0xb2, 0x05, 0x65, 0x2b, 0x36, 0x48, 0xc5, 0x92, 0x4e, 0x5f, 0xa0, 0x5f, 0x95, 0x60, 0x8a, 0xc6, + 0xc5, 0x29, 0x76, 0x3a, 0xe8, 0x09, 0x81, 0x50, 0xfb, 0x04, 0xa8, 0x42, 0xbf, 0x2b, 0xec, 0xa2, + 0xef, 0xd7, 0xca, 0xa7, 0x9d, 0x20, 0x40, 0x50, 0x32, 0x8f, 0x71, 0xb1, 0xbd, 0xb4, 0x81, 0x0c, + 0xa5, 0x2f, 0xea, 0xcf, 0x48, 0xae, 0x01, 0x60, 0x5c, 0x5c, 0xb7, 0xf0, 0x9e, 0x8e, 0x2f, 0xa1, + 0xab, 0x03, 0x61, 0xef, 0x0f, 0xfa, 0xf1, 0x3a, 0xe1, 0x45, 0x9c, 0x10, 0xc9, 0xc8, 0xad, 0xac, + 0xe9, 0x4e, 0x90, 0x89, 0xf5, 0xe2, 0xbd, 0x91, 0x58, 0x42, 0x64, 0xd4, 0x70, 0x76, 0xc1, 0x35, + 0x9b, 0x68, 0x2e, 0xd2, 0x17, 0xec, 0xfb, 0x26, 0x60, 0x72, 0xc3, 0xb0, 0xbb, 0x1d, 0xcd, 0xde, + 0x46, 0xdf, 0x96, 0x21, 0x4f, 0x2f, 0x67, 0x43, 0x3f, 0xc0, 0xc5, 0x16, 0xf8, 0xb1, 0x5d, 0x6c, + 0x79, 0x2e, 0x38, 0xf4, 0xa5, 0xff, 0xdd, 0xf1, 0xe8, 0xdd, 0xb2, 0xe8, 0x24, 0xd5, 0x2b, 0x34, + 0x74, 0x4b, 0x7f, 0xff, 0xe3, 0xec, 0x5d, 0xbd, 0xe5, 0xec, 0x5a, 0xfe, 0x4d, 0xe4, 0x4f, 0x11, + 0xa3, 0xb2, 0x4e, 0xff, 0x52, 0xfd, 0xdf, 0x91, 0x06, 0x13, 0x2c, 0x71, 0xdf, 0x76, 0xd2, 0xfe, + 0xf3, 0xb7, 0x27, 0x21, 0xaf, 0x59, 0x8e, 0x6e, 0x3b, 0x6c, 0x83, 0x95, 0xbd, 0xb9, 0xdd, 0x25, + 0x7d, 0xda, 0xb0, 0x3a, 0x5e, 0x14, 0x12, 0x3f, 0x01, 0xfd, 0x9e, 0xd0, 0xfc, 0x31, 0xbe, 0xe6, + 0xc9, 0x20, 0x7f, 0x60, 0x88, 0x35, 0xea, 0x2b, 0xe1, 0x0a, 0xb5, 0xd8, 0x28, 0x37, 0x69, 0xd0, + 0x0a, 0x3f, 0x3e, 0x45, 0x1b, 0xbd, 0x4d, 0x0e, 0xad, 0xdf, 0x5d, 0xe6, 0xc6, 0x08, 0x26, 0xc5, + 0x60, 0x8c, 0xf0, 0x13, 0x62, 0x76, 0xab, 0xb9, 0x45, 0x58, 0x59, 0x7c, 0x11, 0xf6, 0xb7, 0x85, + 0x77, 0x93, 0x7c, 0x51, 0x0e, 0x58, 0x03, 0x8c, 0xbb, 0xbc, 0xe9, 0x3d, 0x42, 0x3b, 0x43, 0x83, + 0x4a, 0x3a, 0x44, 0xd8, 0x5e, 0x3b, 0x01, 0x13, 0xcb, 0x5a, 0xa7, 0x83, 0xad, 0xcb, 0xee, 0x90, + 0x54, 0xf0, 0x38, 0x5c, 0xd3, 0x0c, 0x7d, 0x13, 0xdb, 0x4e, 0x7c, 0x67, 0xf9, 0x0e, 0xe1, 0xc0, + 0xc0, 0xac, 0x8c, 0xf9, 0x5e, 0xfa, 0x11, 0x32, 0xbf, 0x05, 0xb2, 0xba, 0xb1, 0x69, 0xb2, 0x2e, + 0xb3, 0x77, 0xd5, 0xde, 0xfb, 0x99, 0x4c, 0x5d, 0x48, 0x46, 0xc1, 0xd8, 0xc0, 0x82, 0x5c, 0xa4, + 0xdf, 0x73, 0xfe, 0x4e, 0x16, 0x66, 0x3d, 0x26, 0x2a, 0x46, 0x1b, 0x3f, 0x1c, 0x5e, 0x8a, 0xf9, + 0x85, 0xac, 0xe8, 0x71, 0xb0, 0xde, 0xfa, 0x10, 0x52, 0x11, 0x22, 0x6d, 0x00, 0xb4, 0x34, 0x07, + 0x6f, 0x99, 0x96, 0xee, 0xf7, 0x87, 0x4f, 0x4b, 0x42, 0xad, 0x44, 0xff, 0xbe, 0xac, 0x86, 0xe8, + 0x28, 0x77, 0xc3, 0x34, 0xf6, 0xcf, 0xdf, 0x7b, 0x4b, 0x35, 0xb1, 0x78, 0x85, 0xf3, 0xa3, 0xcf, + 0x08, 0x9d, 0x3a, 0x13, 0xa9, 0x66, 0x32, 0xcc, 0x9a, 0xc3, 0xb5, 0xa1, 0x8d, 0xea, 0x5a, 0x51, + 0xad, 0xaf, 0x14, 0x57, 0x57, 0x2b, 0xd5, 0x65, 0x3f, 0xf0, 0x8b, 0x02, 0x73, 0x8b, 0xb5, 0xf3, + 0xd5, 0x50, 0x64, 0x9e, 0x2c, 0x5a, 0x87, 0x49, 0x4f, 0x5e, 0xfd, 0x7c, 0x31, 0xc3, 0x32, 0x63, + 0xbe, 0x98, 0xa1, 0x24, 0xd7, 0x38, 0xd3, 0x5b, 0xbe, 0x83, 0x0e, 0x79, 0x46, 0x7f, 0xac, 0x41, + 0x8e, 0xac, 0xa9, 0xa3, 0xb7, 0x90, 0x6d, 0xc0, 0x6e, 0x47, 0x6b, 0x61, 0xb4, 0x93, 0xc0, 0x1a, + 0xf7, 0x6e, 0xaa, 0x90, 0xf6, 0xdd, 0x54, 0x41, 0x1e, 0x99, 0xd5, 0x77, 0xbc, 0xdf, 0x3a, 0xbe, + 0x4a, 0xb3, 0xf0, 0x07, 0xb4, 0x62, 0x77, 0x57, 0xe8, 0xf2, 0x3f, 0x63, 0x33, 0x42, 0x25, 0xa3, + 0x79, 0x4a, 0x66, 0x89, 0x8a, 0xed, 0xc3, 0xc4, 0x71, 0x34, 0x86, 0xdb, 0xd4, 0xb3, 0x90, 0xab, + 0x77, 0x3b, 0xba, 0x83, 0x7e, 0x55, 0x1a, 0x09, 0x66, 0xf4, 0x76, 0x11, 0x79, 0xe0, 0xed, 0x22, + 0xc1, 0xae, 0x6b, 0x56, 0x60, 0xd7, 0xb5, 0x81, 0x1f, 0x76, 0xf8, 0x5d, 0xd7, 0x3b, 0x58, 0xf0, + 0x36, 0xba, 0x67, 0xfb, 0xc4, 0x3e, 0x22, 0x25, 0xd5, 0xea, 0x13, 0x15, 0xf0, 0xec, 0x6d, 0x2c, + 0x38, 0x19, 0x40, 0x7e, 0xa1, 0xd6, 0x68, 0xd4, 0xd6, 0x0a, 0x47, 0x48, 0x54, 0x9b, 0xda, 0x3a, + 0x0d, 0x15, 0x53, 0xa9, 0x56, 0xcb, 0x6a, 0x41, 0x22, 0xe1, 0xd2, 0x2a, 0x8d, 0xd5, 0x72, 0x41, + 0xe6, 0x43, 0xcd, 0xc7, 0x9a, 0xdf, 0x7c, 0xd9, 0x69, 0xaa, 0x97, 0x98, 0x21, 0x1e, 0xcd, 0x4f, + 0xfa, 0xca, 0xf5, 0x4b, 0x32, 0xe4, 0xd6, 0xb0, 0xb5, 0x85, 0xd1, 0x8f, 0x25, 0xd8, 0xe4, 0xdb, + 0xd4, 0x2d, 0x9b, 0x06, 0x97, 0x0b, 0x36, 0xf9, 0xc2, 0x69, 0xca, 0xf5, 0x30, 0x6b, 0xe3, 0x96, + 0x69, 0xb4, 0xbd, 0x4c, 0xb4, 0x3f, 0xe2, 0x13, 0xf9, 0x6b, 0xfe, 0x05, 0x20, 0x23, 0x8c, 0x8e, + 0x64, 0xa7, 0x2e, 0x09, 0x30, 0xfd, 0x4a, 0x4d, 0x1f, 0x98, 0x6f, 0xc8, 0xee, 0x4f, 0xdd, 0xcb, + 0xe8, 0xa5, 0xc2, 0xbb, 0xaf, 0x37, 0x43, 0xfe, 0x82, 0x17, 0xa5, 0x58, 0x8e, 0xec, 0x8f, 0x59, + 0x1e, 0x65, 0x01, 0x8e, 0xd9, 0xb8, 0x83, 0x5b, 0x0e, 0x6e, 0xbb, 0x4d, 0x57, 0x1d, 0xd8, 0x29, + 0xec, 0xcf, 0x8e, 0xfe, 0x2c, 0x0c, 0xe0, 0x5d, 0x3c, 0x80, 0x37, 0xf4, 0x11, 0xa5, 0x5b, 0xa1, + 0x68, 0x5b, 0xd9, 0xad, 0x46, 0xbd, 0x63, 0xfa, 0x8b, 0xe2, 0xde, 0xbb, 0xfb, 0x6d, 0xdb, 0xd9, + 0xe9, 0x90, 0x6f, 0xec, 0x80, 0x81, 0xf7, 0xae, 0xcc, 0xc3, 0x84, 0x66, 0x5c, 0x26, 0x9f, 0xb2, + 0x31, 0xb5, 0xf6, 0x32, 0xa1, 0x97, 0xfb, 0xc8, 0xdf, 0xcb, 0x21, 0xff, 0x64, 0x31, 0x76, 0xd3, + 0x07, 0xfe, 0x27, 0x27, 0x20, 0xb7, 0xae, 0xd9, 0x0e, 0x46, 0xff, 0x97, 0x2c, 0x8a, 0xfc, 0x0d, + 0x30, 0xb7, 0x69, 0xb6, 0x76, 0x6d, 0xdc, 0xe6, 0x1b, 0x65, 0x4f, 0xea, 0x28, 0x30, 0x57, 0x6e, + 0x82, 0x82, 0x97, 0xc8, 0xc8, 0x7a, 0xdb, 0xf0, 0xfb, 0xd2, 0x49, 0xe0, 0x72, 0x7b, 0x5d, 0xb3, + 0x9c, 0xda, 0x26, 0x49, 0xf3, 0x03, 0x97, 0x87, 0x13, 0x39, 0xe8, 0xf3, 0x31, 0xd0, 0x4f, 0x44, + 0x43, 0x3f, 0x29, 0x00, 0xbd, 0x52, 0x84, 0xc9, 0x4d, 0xbd, 0x83, 0xc9, 0x0f, 0x53, 0xe4, 0x87, + 0x7e, 0x63, 0x12, 0x91, 0xbd, 0x3f, 0x26, 0x2d, 0xe9, 0x1d, 0xac, 0xfa, 0xbf, 0x79, 0x13, 0x19, + 0x08, 0x26, 0x32, 0xab, 0xd4, 0x9f, 0xd6, 0x35, 0xbc, 0x0c, 0x6d, 0x07, 0x7b, 0x8b, 0x6f, 0x06, + 0x3b, 0xdc, 0xd2, 0xd6, 0x1c, 0x8d, 0x80, 0x31, 0xa3, 0x92, 0x67, 0xde, 0x2f, 0x44, 0xee, 0xf5, + 0x0b, 0x79, 0x9e, 0x9c, 0xac, 0x47, 0xf4, 0x98, 0x8d, 0x68, 0x51, 0x17, 0x3c, 0x80, 0xa8, 0xa5, + 0xe8, 0xbf, 0xbb, 0xc0, 0xb4, 0x34, 0x0b, 0x3b, 0xeb, 0x61, 0x4f, 0x8c, 0x9c, 0xca, 0x27, 0x12, + 0x57, 0x3e, 0xbb, 0xae, 0xed, 0xd0, 0x40, 0xe7, 0x25, 0xf7, 0x1b, 0x73, 0xd1, 0xda, 0x97, 0x1e, + 0xf4, 0xbf, 0xb9, 0x51, 0xf7, 0xbf, 0xfd, 0xea, 0x98, 0x7e, 0x33, 0x7c, 0x65, 0x16, 0xe4, 0xd2, + 0xae, 0xf3, 0xb8, 0xee, 0x7e, 0xbf, 0x23, 0xec, 0xe7, 0xc2, 0xfa, 0xb3, 0xc8, 0x7b, 0xfd, 0xc7, + 0xd4, 0xfb, 0x26, 0xd4, 0x12, 0x31, 0x7f, 0x9a, 0xa8, 0xba, 0xa5, 0xaf, 0x23, 0x6f, 0x94, 0x7d, + 0x07, 0xcb, 0x47, 0x32, 0x07, 0x37, 0xcd, 0x11, 0xed, 0x9f, 0x42, 0x3d, 0x83, 0xff, 0xee, 0x75, + 0x3c, 0x59, 0x2e, 0x56, 0x1f, 0xd9, 0x5e, 0x27, 0xa2, 0x9c, 0x51, 0xe9, 0x0b, 0xfa, 0x35, 0x61, + 0xb7, 0x73, 0x2a, 0xb6, 0x58, 0x57, 0xc2, 0x64, 0x36, 0x95, 0xd8, 0xdd, 0xad, 0x31, 0xc5, 0xa6, + 0x0f, 0xd8, 0xd7, 0xc3, 0xae, 0x82, 0xc5, 0x03, 0x23, 0x86, 0x5e, 0x21, 0xbc, 0x1d, 0x45, 0xab, + 0x3d, 0x60, 0xbd, 0x30, 0x99, 0xbc, 0xc5, 0x36, 0xab, 0x62, 0x0b, 0x4e, 0x5f, 0xe2, 0x5f, 0x93, + 0x21, 0x4f, 0xb7, 0x20, 0xd1, 0xeb, 0x33, 0x09, 0x2e, 0xbd, 0x77, 0x78, 0x17, 0x42, 0xff, 0x3d, + 0xc9, 0x9a, 0x03, 0xe7, 0x6a, 0x98, 0x4d, 0xe4, 0x6a, 0xc8, 0x9f, 0xe3, 0x14, 0x68, 0x47, 0xb4, + 0x8e, 0x29, 0x4f, 0x27, 0x93, 0xb4, 0xb0, 0xbe, 0x0c, 0xa5, 0x8f, 0xf7, 0x4f, 0xe7, 0x60, 0x86, + 0x16, 0x7d, 0x5e, 0x6f, 0x6f, 0x61, 0x07, 0xbd, 0x4d, 0xfa, 0xee, 0x41, 0x5d, 0xa9, 0xc2, 0xcc, + 0x25, 0xc2, 0x36, 0xbd, 0x91, 0x85, 0xad, 0x5c, 0xdc, 0x14, 0xbb, 0xee, 0x41, 0xeb, 0xe9, 0xdd, + 0xe1, 0xc2, 0xfd, 0xef, 0xca, 0x98, 0x2e, 0xf8, 0x53, 0x07, 0xae, 0x3c, 0x31, 0xb2, 0xc2, 0x49, + 0xca, 0x49, 0xc8, 0xef, 0xe9, 0xf8, 0x52, 0xa5, 0xcd, 0xac, 0x5b, 0xf6, 0x86, 0xfe, 0x40, 0x78, + 0xdf, 0x36, 0x0c, 0x37, 0xe3, 0x25, 0x5d, 0x2d, 0x14, 0xdb, 0xbd, 0x1d, 0xc8, 0xd6, 0x18, 0xce, + 0x14, 0xf3, 0x77, 0xa3, 0x96, 0x12, 0x28, 0x62, 0x94, 0xe1, 0xcc, 0x87, 0xf2, 0x88, 0x3d, 0xb1, + 0x42, 0x05, 0x30, 0xe2, 0x6b, 0x53, 0xc5, 0xe2, 0x4b, 0x0c, 0x28, 0x3a, 0x7d, 0xc9, 0xbf, 0x5a, + 0x86, 0xa9, 0x3a, 0x76, 0x96, 0x74, 0xdc, 0x69, 0xdb, 0xc8, 0x3a, 0xb8, 0x69, 0x74, 0x0b, 0xe4, + 0x37, 0x09, 0xb1, 0x41, 0xe7, 0x16, 0x58, 0x36, 0xf4, 0x4a, 0x49, 0x74, 0x47, 0x98, 0xad, 0xbe, + 0x79, 0xdc, 0x8e, 0x04, 0x26, 0x31, 0x8f, 0xde, 0xf8, 0x92, 0xc7, 0x10, 0xd8, 0x56, 0x86, 0x19, + 0x76, 0x99, 0x62, 0xb1, 0xa3, 0x6f, 0x19, 0x68, 0x77, 0x04, 0x2d, 0x44, 0xb9, 0x15, 0x72, 0x9a, + 0x4b, 0x8d, 0x6d, 0xbd, 0xa2, 0xbe, 0x9d, 0x27, 0x29, 0x4f, 0xa5, 0x19, 0x13, 0x84, 0x91, 0x0c, + 0x14, 0xdb, 0xe3, 0x79, 0x8c, 0x61, 0x24, 0x07, 0x16, 0x9e, 0x3e, 0x62, 0x5f, 0x90, 0xe1, 0x38, + 0x63, 0xe0, 0x1c, 0xb6, 0x1c, 0xbd, 0xa5, 0x75, 0x28, 0x72, 0x2f, 0xcc, 0x8c, 0x02, 0xba, 0x15, + 0x98, 0xdd, 0x0b, 0x93, 0x65, 0x10, 0x9e, 0xed, 0x0b, 0x21, 0xc7, 0x80, 0xca, 0xff, 0x98, 0x20, + 0x1c, 0x1f, 0x27, 0x55, 0x8e, 0xe6, 0x18, 0xc3, 0xf1, 0x09, 0x33, 0x91, 0x3e, 0xc4, 0x2f, 0x61, + 0xa1, 0x79, 0x82, 0xee, 0xf3, 0xb3, 0xc2, 0xd8, 0x6e, 0xc0, 0x34, 0xc1, 0x92, 0xfe, 0xc8, 0x96, + 0x21, 0x62, 0x94, 0xd8, 0xef, 0x77, 0xd8, 0x85, 0x61, 0xfe, 0xbf, 0x6a, 0x98, 0x0e, 0x3a, 0x0f, + 0x10, 0x7c, 0x0a, 0x77, 0xd2, 0x99, 0xa8, 0x4e, 0x5a, 0x12, 0xeb, 0xa4, 0x5f, 0x27, 0x1c, 0x2c, + 0xa5, 0x3f, 0xdb, 0x07, 0x57, 0x0f, 0xb1, 0x30, 0x19, 0x83, 0x4b, 0x4f, 0x5f, 0x2f, 0x5e, 0x9e, + 0xed, 0xbd, 0x35, 0xff, 0x83, 0x23, 0x99, 0x4f, 0x85, 0xfb, 0x03, 0xb9, 0xa7, 0x3f, 0x38, 0x80, + 0x25, 0x7d, 0x23, 0x1c, 0xa5, 0x45, 0x94, 0x7c, 0xb6, 0x72, 0x34, 0x14, 0x44, 0x4f, 0x32, 0xfa, + 0xd0, 0x10, 0x4a, 0x30, 0xe8, 0x4a, 0xff, 0xb8, 0x4e, 0x2e, 0x99, 0xb1, 0x9b, 0x54, 0x41, 0xa2, + 0x38, 0x1b, 0x83, 0x5b, 0x68, 0x96, 0x5a, 0xbb, 0x1b, 0xe4, 0x4e, 0x37, 0xf4, 0x17, 0xd9, 0x51, + 0x8c, 0x08, 0xf7, 0x41, 0x96, 0xb8, 0xb8, 0xcb, 0x91, 0x4b, 0x1a, 0x41, 0x91, 0xc1, 0x85, 0x7b, + 0xf8, 0x61, 0x67, 0xe5, 0x88, 0x4a, 0xfe, 0x54, 0x6e, 0x82, 0xa3, 0x17, 0xb4, 0xd6, 0xc5, 0x2d, + 0xcb, 0xdc, 0x25, 0xb7, 0x5f, 0x99, 0xec, 0x1a, 0x2d, 0x72, 0x1d, 0x21, 0xff, 0x41, 0xb9, 0xdd, + 0x33, 0x1d, 0x72, 0x83, 0x4c, 0x87, 0x95, 0x23, 0xcc, 0x78, 0x50, 0x6e, 0xf3, 0x3b, 0x9d, 0x7c, + 0x6c, 0xa7, 0xb3, 0x72, 0xc4, 0xeb, 0x76, 0x94, 0x45, 0x98, 0x6c, 0xeb, 0x7b, 0x64, 0xab, 0x9a, + 0xcc, 0xba, 0x06, 0x1d, 0x5d, 0x5e, 0xd4, 0xf7, 0xe8, 0xc6, 0xf6, 0xca, 0x11, 0xd5, 0xff, 0x53, + 0x59, 0x86, 0x29, 0xb2, 0x2d, 0x40, 0xc8, 0x4c, 0x26, 0x3a, 0x96, 0xbc, 0x72, 0x44, 0x0d, 0xfe, + 0x75, 0xad, 0x8f, 0x2c, 0x39, 0xfb, 0x71, 0xaf, 0xb7, 0xdd, 0x9e, 0x49, 0xb4, 0xdd, 0xee, 0xca, + 0x82, 0x6e, 0xb8, 0x9f, 0x84, 0x5c, 0x8b, 0x48, 0x58, 0x62, 0x12, 0xa6, 0xaf, 0xca, 0x5d, 0x90, + 0xdd, 0xd1, 0x2c, 0x6f, 0xf2, 0x7c, 0xc3, 0x60, 0xba, 0x6b, 0x9a, 0x75, 0xd1, 0x45, 0xd0, 0xfd, + 0x6b, 0x61, 0x02, 0x72, 0x44, 0x70, 0xfe, 0x03, 0x7a, 0x63, 0x96, 0x9a, 0x21, 0x25, 0xd3, 0x70, + 0x87, 0xfd, 0x86, 0xe9, 0x1d, 0x90, 0xf9, 0x83, 0xcc, 0x68, 0x2c, 0xc8, 0xbe, 0xd7, 0xcc, 0xcb, + 0x91, 0xd7, 0xcc, 0xf7, 0xdc, 0x77, 0x9c, 0xed, 0xbd, 0xef, 0x38, 0x58, 0x3e, 0xc8, 0x0d, 0x76, + 0x54, 0xf9, 0xb3, 0x21, 0x4c, 0x97, 0x5e, 0x41, 0x44, 0xcf, 0xc0, 0x3b, 0xba, 0x11, 0xaa, 0xb3, + 0xf7, 0x9a, 0xb0, 0x53, 0x4a, 0x6a, 0xd4, 0x0c, 0x60, 0x2f, 0xfd, 0xbe, 0xe9, 0xb7, 0xb2, 0x70, + 0x8a, 0xde, 0xaa, 0xbd, 0x87, 0x1b, 0x26, 0x7f, 0xdf, 0x24, 0xfa, 0xd8, 0x48, 0x94, 0xa6, 0xcf, + 0x80, 0x23, 0xf7, 0x1d, 0x70, 0xf6, 0x1d, 0x52, 0xce, 0x0e, 0x38, 0xa4, 0x9c, 0x4b, 0xb6, 0x72, + 0xf8, 0xde, 0xb0, 0xfe, 0xac, 0xf3, 0xfa, 0x73, 0x67, 0x04, 0x40, 0xfd, 0xe4, 0x32, 0x12, 0xfb, + 0xe6, 0x2d, 0xbe, 0xa6, 0xd4, 0x39, 0x4d, 0xb9, 0x77, 0x78, 0x46, 0xd2, 0xd7, 0x96, 0xdf, 0xcf, + 0xc2, 0x15, 0x01, 0x33, 0x55, 0x7c, 0x89, 0x29, 0xca, 0xa7, 0x47, 0xa2, 0x28, 0xc9, 0x63, 0x20, + 0xa4, 0xad, 0x31, 0x7f, 0x22, 0x7c, 0x76, 0xa8, 0x17, 0x28, 0x5f, 0x36, 0x11, 0xca, 0x72, 0x12, + 0xf2, 0xb4, 0x87, 0x61, 0xd0, 0xb0, 0xb7, 0x84, 0xdd, 0x8d, 0xd8, 0x89, 0x23, 0x51, 0xde, 0xc6, + 0xa0, 0x3f, 0x6c, 0x5d, 0xa3, 0xb1, 0x6b, 0x19, 0x15, 0xc3, 0x31, 0xd1, 0x4f, 0x8c, 0x44, 0x71, + 0x7c, 0x6f, 0x38, 0x79, 0x18, 0x6f, 0xb8, 0xa1, 0x56, 0x39, 0xbc, 0x1a, 0x1c, 0xca, 0x2a, 0x47, + 0x44, 0xe1, 0xe9, 0xe3, 0xf7, 0x66, 0x19, 0x4e, 0xb2, 0xc9, 0xd6, 0x02, 0x6f, 0x21, 0xa2, 0x07, + 0x47, 0x01, 0xe4, 0x71, 0xcf, 0x4c, 0x62, 0xb7, 0x9c, 0x91, 0x17, 0xfe, 0xa4, 0x54, 0xec, 0xfd, + 0x0e, 0xdc, 0x74, 0xb0, 0x87, 0xc3, 0x91, 0x20, 0x25, 0x76, 0xad, 0x43, 0x02, 0x36, 0xd2, 0xc7, + 0xec, 0xc5, 0x32, 0xe4, 0xe9, 0x39, 0x2d, 0xb4, 0x91, 0x8a, 0xc3, 0x04, 0x1f, 0xe5, 0x59, 0x60, + 0x47, 0x2e, 0xf1, 0x25, 0xf7, 0xe9, 0xed, 0xc5, 0x1d, 0xd2, 0x2d, 0xf6, 0xdf, 0x90, 0x60, 0xba, + 0x8e, 0x9d, 0x92, 0x66, 0x59, 0xba, 0xb6, 0x35, 0x2a, 0x8f, 0x6f, 0x51, 0xef, 0x61, 0xf4, 0xcd, + 0x8c, 0xe8, 0x79, 0x1a, 0x7f, 0x21, 0xdc, 0x63, 0x35, 0x22, 0x96, 0xe0, 0xa3, 0x42, 0x67, 0x66, + 0x06, 0x51, 0x1b, 0x83, 0xc7, 0xb6, 0x04, 0x13, 0xde, 0x59, 0xbc, 0x5b, 0xb8, 0xf3, 0x99, 0xdb, + 0xce, 0x8e, 0x77, 0x0c, 0x86, 0x3c, 0xef, 0x3f, 0x03, 0x86, 0x5e, 0x96, 0xd0, 0x51, 0x3e, 0xfe, + 0x20, 0x61, 0xb2, 0x36, 0x96, 0xc4, 0x1d, 0xfe, 0xb0, 0x8e, 0x0e, 0xfe, 0xee, 0x04, 0x5b, 0x8e, + 0x5c, 0xd5, 0x1c, 0xfc, 0x30, 0xfa, 0xac, 0x0c, 0x13, 0x75, 0xec, 0xb8, 0xe3, 0x2d, 0x77, 0xb9, + 0xe9, 0xb0, 0x1a, 0xae, 0x84, 0x56, 0x3c, 0xa6, 0xd8, 0x1a, 0xc6, 0xfd, 0x30, 0xd5, 0xb5, 0xcc, + 0x16, 0xb6, 0x6d, 0xb6, 0x7a, 0x11, 0x76, 0x54, 0xeb, 0x37, 0xfa, 0x13, 0xd6, 0xe6, 0xd7, 0xbd, + 0x7f, 0xd4, 0xe0, 0xf7, 0xa4, 0x66, 0x00, 0xa5, 0xc4, 0x2a, 0x38, 0x6e, 0x33, 0x20, 0xae, 0xf0, + 0xf4, 0x81, 0xfe, 0xa4, 0x0c, 0x33, 0x75, 0xec, 0xf8, 0x52, 0x4c, 0xb0, 0xc9, 0x11, 0x0d, 0x2f, + 0x07, 0xa5, 0x7c, 0x30, 0x28, 0xc5, 0xaf, 0x06, 0xe4, 0xa5, 0xe9, 0x13, 0x1b, 0xe3, 0xd5, 0x80, + 0x62, 0x1c, 0x8c, 0xe1, 0xf8, 0xda, 0x13, 0x61, 0x8a, 0xf0, 0x42, 0x1a, 0xec, 0xcf, 0x66, 0x83, + 0xc6, 0xfb, 0xb9, 0x94, 0x1a, 0xef, 0xdd, 0x90, 0xdb, 0xd1, 0xac, 0x8b, 0x36, 0x69, 0xb8, 0xd3, + 0x22, 0x66, 0xfb, 0x9a, 0x9b, 0x5d, 0xa5, 0x7f, 0xf5, 0xf7, 0xd3, 0xcc, 0x25, 0xf3, 0xd3, 0x7c, + 0x54, 0x4a, 0x34, 0x12, 0xd2, 0xb9, 0xc3, 0x08, 0x9b, 0x7c, 0x82, 0x71, 0x33, 0xa6, 0xec, 0xf4, + 0x95, 0xe3, 0x85, 0x32, 0x4c, 0xba, 0xe3, 0x36, 0xb1, 0xc7, 0xcf, 0x1f, 0x5c, 0x1d, 0xfa, 0x1b, + 0xfa, 0x09, 0x7b, 0x60, 0x4f, 0x22, 0xa3, 0x33, 0xef, 0x13, 0xf4, 0xc0, 0x71, 0x85, 0xa7, 0x8f, + 0xc7, 0x5b, 0x29, 0x1e, 0xa4, 0x3d, 0xa0, 0xdf, 0x94, 0x41, 0x5e, 0xc6, 0xce, 0xb8, 0xad, 0xc8, + 0x37, 0x09, 0x87, 0x38, 0xe2, 0x04, 0x46, 0x78, 0x9e, 0x5f, 0xc6, 0xa3, 0x69, 0x40, 0x62, 0xb1, + 0x8d, 0x84, 0x18, 0x48, 0x1f, 0xb5, 0x77, 0x52, 0xd4, 0xe8, 0xe6, 0xc2, 0x8f, 0x8f, 0xa0, 0x57, + 0x1d, 0xef, 0xc2, 0x87, 0x27, 0x40, 0x42, 0xe3, 0xb0, 0xda, 0x5b, 0xbf, 0xc2, 0xc7, 0x72, 0x15, + 0x1f, 0xb8, 0x8d, 0x7d, 0x1b, 0xb7, 0x2e, 0xe2, 0x36, 0xfa, 0x91, 0x83, 0x43, 0x77, 0x0a, 0x26, + 0x5a, 0x94, 0x1a, 0x01, 0x6f, 0x52, 0xf5, 0x5e, 0x13, 0xdc, 0x2b, 0xcd, 0x77, 0x44, 0xf4, 0xf7, + 0x31, 0xde, 0x2b, 0x2d, 0x50, 0xfc, 0x18, 0xcc, 0x16, 0x3a, 0xcb, 0xa8, 0xb4, 0x4c, 0x03, 0xfd, + 0x97, 0x83, 0xc3, 0x72, 0x0d, 0x4c, 0xe9, 0x2d, 0xd3, 0x20, 0x61, 0x28, 0xbc, 0x43, 0x40, 0x7e, + 0x82, 0xf7, 0xb5, 0xbc, 0x63, 0x3e, 0xa4, 0xb3, 0x5d, 0xf3, 0x20, 0x61, 0x58, 0x63, 0xc2, 0x65, + 0xfd, 0xb0, 0x8c, 0x89, 0x3e, 0x65, 0xa7, 0x0f, 0xd9, 0x87, 0x02, 0xef, 0x36, 0xda, 0x15, 0x3e, + 0x2e, 0x56, 0x81, 0x87, 0x19, 0xce, 0xc2, 0xb5, 0x38, 0x94, 0xe1, 0x2c, 0x86, 0x81, 0x31, 0xdc, + 0x58, 0x11, 0xe0, 0x98, 0xfa, 0x1a, 0xf0, 0x01, 0xd0, 0x19, 0x9d, 0x79, 0x38, 0x24, 0x3a, 0x87, + 0x63, 0x22, 0xbe, 0x87, 0x85, 0xc8, 0x64, 0x16, 0x0f, 0xfa, 0xaf, 0xa3, 0x00, 0xe7, 0xce, 0x61, + 0xfc, 0x15, 0xa8, 0xb7, 0x42, 0x82, 0x1b, 0xb1, 0xf7, 0x49, 0xd0, 0xa5, 0x32, 0xc6, 0xbb, 0xe2, + 0x45, 0xca, 0x4f, 0x1f, 0xc0, 0x17, 0xc8, 0x30, 0x47, 0x7c, 0x04, 0x3a, 0x58, 0xb3, 0x68, 0x47, + 0x39, 0x12, 0x47, 0xf9, 0xb7, 0x0a, 0x07, 0xf8, 0xe1, 0xe5, 0x10, 0xf0, 0x31, 0x12, 0x28, 0xc4, + 0xa2, 0xfb, 0x08, 0xb2, 0x30, 0x96, 0x6d, 0x94, 0x82, 0xcf, 0x02, 0x53, 0xf1, 0xd1, 0xe0, 0x91, + 0xd0, 0x23, 0x97, 0x17, 0x86, 0xd7, 0xd8, 0xc6, 0xec, 0x91, 0x2b, 0xc2, 0x44, 0xfa, 0x98, 0xfc, + 0xe6, 0xad, 0x6c, 0xc1, 0xb9, 0x41, 0x2e, 0x8c, 0x7f, 0x45, 0xd6, 0x3f, 0xd1, 0xf6, 0xc9, 0x91, + 0x78, 0x60, 0x1e, 0x20, 0x20, 0xbe, 0x02, 0x59, 0xcb, 0xbc, 0x44, 0x97, 0xb6, 0x66, 0x55, 0xf2, + 0x4c, 0xaf, 0xa7, 0xec, 0xec, 0xee, 0x18, 0xf4, 0x64, 0xe8, 0xac, 0xea, 0xbd, 0x2a, 0xd7, 0xc3, + 0xec, 0x25, 0xdd, 0xd9, 0x5e, 0xc1, 0x5a, 0x1b, 0x5b, 0xaa, 0x79, 0x89, 0x78, 0xcc, 0x4d, 0xaa, + 0x7c, 0x22, 0xef, 0xbf, 0x22, 0x60, 0x5f, 0x92, 0x5b, 0xe4, 0xc7, 0x72, 0xfc, 0x2d, 0x89, 0xe5, + 0x19, 0xcd, 0x55, 0xfa, 0x0a, 0xf3, 0x2e, 0x19, 0xa6, 0x54, 0xf3, 0x12, 0x53, 0x92, 0xff, 0xe3, + 0x70, 0x75, 0x24, 0xf1, 0x44, 0x8f, 0x48, 0xce, 0x67, 0x7f, 0xec, 0x13, 0xbd, 0xd8, 0xe2, 0xc7, + 0x72, 0x72, 0x69, 0x46, 0x35, 0x2f, 0xd5, 0xb1, 0x43, 0x5b, 0x04, 0x6a, 0x8e, 0xc8, 0xc9, 0x5a, + 0xb7, 0x29, 0x41, 0x36, 0x0f, 0xf7, 0xdf, 0x93, 0xee, 0x22, 0xf8, 0x02, 0xf2, 0x59, 0x1c, 0xf7, + 0x2e, 0xc2, 0x40, 0x0e, 0xc6, 0x10, 0x23, 0x45, 0x86, 0x69, 0xd5, 0xbc, 0xe4, 0x0e, 0x0d, 0x4b, + 0x7a, 0xa7, 0x33, 0x9a, 0x11, 0x32, 0xa9, 0xf1, 0xef, 0x89, 0xc1, 0xe3, 0x62, 0xec, 0xc6, 0xff, + 0x00, 0x06, 0xd2, 0x87, 0xe1, 0x79, 0xb4, 0xb1, 0x78, 0x23, 0xb4, 0x31, 0x1a, 0x1c, 0x86, 0x6d, + 0x10, 0x3e, 0x1b, 0x87, 0xd6, 0x20, 0xa2, 0x38, 0x18, 0xcb, 0xce, 0xc9, 0x5c, 0x89, 0x0c, 0xf3, + 0xa3, 0x6d, 0x13, 0x6f, 0x4f, 0xe6, 0x9a, 0xc8, 0x86, 0x5d, 0x8e, 0x91, 0x91, 0xa0, 0x91, 0xc0, + 0x05, 0x51, 0x80, 0x87, 0xf4, 0xf1, 0x78, 0xbf, 0x0c, 0x33, 0x94, 0x85, 0xc7, 0x89, 0x15, 0x30, + 0x54, 0xa3, 0x0a, 0xd7, 0xe0, 0x70, 0x1a, 0x55, 0x0c, 0x07, 0x63, 0xb9, 0x15, 0xd4, 0xb5, 0xe3, + 0x86, 0x38, 0x3e, 0x1e, 0x85, 0xe0, 0xd0, 0xc6, 0xd8, 0x08, 0x8f, 0x90, 0x0f, 0x63, 0x8c, 0x1d, + 0xd2, 0x31, 0xf2, 0xe7, 0xf9, 0xad, 0x68, 0x94, 0x18, 0x1c, 0xa0, 0x29, 0x8c, 0x10, 0x86, 0x21, + 0x9b, 0xc2, 0x21, 0x21, 0xf1, 0x45, 0x19, 0x80, 0x32, 0xb0, 0x66, 0xee, 0x91, 0xcb, 0x7c, 0x46, + 0xd0, 0x9d, 0xf5, 0xba, 0xd5, 0xcb, 0x03, 0xdc, 0xea, 0x13, 0x86, 0x70, 0x49, 0xba, 0x12, 0x18, + 0x92, 0xb2, 0x5b, 0xc9, 0xb1, 0xaf, 0x04, 0xc6, 0x97, 0x9f, 0x3e, 0xc6, 0x8f, 0x51, 0x6b, 0x2e, + 0x38, 0x60, 0xfa, 0x2b, 0x23, 0x41, 0x39, 0x34, 0xfb, 0x97, 0xf9, 0xd9, 0xff, 0x01, 0xb0, 0x1d, + 0xd6, 0x46, 0x1c, 0x74, 0x70, 0x34, 0x7d, 0x1b, 0xf1, 0xf0, 0x0e, 0x88, 0xfe, 0x78, 0x16, 0x8e, + 0xb2, 0x4e, 0xe4, 0xbb, 0x01, 0xe2, 0x84, 0xe7, 0xf0, 0xb8, 0x4e, 0x72, 0x00, 0xca, 0xa3, 0x5a, + 0x90, 0x4a, 0xb2, 0x94, 0x29, 0xc0, 0xde, 0x58, 0x56, 0x37, 0xf2, 0xe5, 0x87, 0xbb, 0x9a, 0xd1, + 0x16, 0x0f, 0xf7, 0x3b, 0x00, 0x78, 0x6f, 0xad, 0x51, 0xe6, 0xd7, 0x1a, 0xfb, 0xac, 0x4c, 0x26, + 0xde, 0xb9, 0x26, 0x22, 0xa3, 0xec, 0x8e, 0x7d, 0xe7, 0x3a, 0xba, 0xec, 0xf4, 0x51, 0x7a, 0xbb, + 0x0c, 0xd9, 0xba, 0x69, 0x39, 0xe8, 0xf9, 0x49, 0x5a, 0x27, 0x95, 0x7c, 0x00, 0x92, 0xf7, 0xae, + 0x94, 0xb8, 0x5b, 0x9a, 0x6f, 0x89, 0x3f, 0xea, 0xac, 0x39, 0x1a, 0xf1, 0xea, 0x76, 0xcb, 0x0f, + 0x5d, 0xd7, 0x9c, 0x34, 0x9e, 0x0e, 0x95, 0x5f, 0x3d, 0xfa, 0x00, 0x46, 0x6a, 0xf1, 0x74, 0x22, + 0x4b, 0x4e, 0x1f, 0xb7, 0x57, 0x1d, 0x65, 0xbe, 0xad, 0x4b, 0x7a, 0x07, 0xa3, 0xe7, 0x53, 0x97, + 0x91, 0xaa, 0xb6, 0x83, 0xc5, 0x8f, 0xc4, 0xc4, 0xba, 0xb6, 0x92, 0xf8, 0xb2, 0x72, 0x10, 0x5f, + 0x36, 0x69, 0x83, 0xa2, 0x07, 0xd0, 0x29, 0x4b, 0xe3, 0x6e, 0x50, 0x31, 0x65, 0x8f, 0x25, 0x4e, + 0xe7, 0xb1, 0x3a, 0x76, 0xa8, 0x51, 0x59, 0xf3, 0x6e, 0x60, 0xf9, 0xd1, 0x91, 0x44, 0xec, 0xf4, + 0x2f, 0x78, 0x91, 0x7b, 0x2e, 0x78, 0x79, 0x57, 0x18, 0x9c, 0x35, 0x1e, 0x9c, 0x1f, 0x8c, 0x16, + 0x10, 0xcf, 0xe4, 0x48, 0x60, 0x7a, 0x93, 0x0f, 0xd3, 0x3a, 0x07, 0xd3, 0x5d, 0x43, 0x72, 0x91, + 0x3e, 0x60, 0x3f, 0x97, 0x83, 0xa3, 0x74, 0xd2, 0x5f, 0x34, 0xda, 0x2c, 0xc2, 0xea, 0xeb, 0xa5, + 0x43, 0xde, 0x6c, 0xdb, 0x1f, 0x82, 0x95, 0x8b, 0xe5, 0x9c, 0xeb, 0xbd, 0x1d, 0x7f, 0x81, 0x86, + 0x73, 0x75, 0x3b, 0x51, 0xb2, 0xd3, 0x26, 0x7e, 0x43, 0xbe, 0xff, 0x1f, 0x7f, 0x97, 0xd1, 0x84, + 0xf8, 0x5d, 0x46, 0x7f, 0x9a, 0x6c, 0xdd, 0x8e, 0x14, 0xdd, 0x23, 0xf0, 0x94, 0x6d, 0xa7, 0x04, + 0x2b, 0x7a, 0x02, 0xdc, 0x7d, 0x6f, 0xb8, 0x93, 0x05, 0x11, 0x44, 0x86, 0x74, 0x27, 0x23, 0x04, + 0x0e, 0xd3, 0x9d, 0x6c, 0x10, 0x03, 0x63, 0xb8, 0xd5, 0x3e, 0xc7, 0x76, 0xf3, 0x49, 0xbb, 0x41, + 0x7f, 0x25, 0xa5, 0x3e, 0x4a, 0x7f, 0x2b, 0x93, 0xc8, 0xff, 0x99, 0xf0, 0x15, 0x3f, 0x4c, 0x27, + 0xf1, 0x68, 0x8e, 0x23, 0x37, 0x86, 0x75, 0x23, 0x89, 0xf8, 0xa2, 0x9f, 0xd7, 0xdb, 0xce, 0xf6, + 0x88, 0x4e, 0x74, 0x5c, 0x72, 0x69, 0x79, 0xd7, 0x23, 0x93, 0x17, 0xf4, 0x6f, 0x99, 0x44, 0x21, + 0xa4, 0x7c, 0x91, 0x10, 0xb6, 0x22, 0x44, 0x9c, 0x20, 0xf0, 0x53, 0x2c, 0xbd, 0x31, 0x6a, 0xf4, + 0x39, 0xbd, 0x8d, 0xcd, 0xc7, 0xa1, 0x46, 0x13, 0xbe, 0x46, 0xa7, 0xd1, 0x71, 0xe4, 0xbe, 0x47, + 0x35, 0xda, 0x17, 0xc9, 0x88, 0x34, 0x3a, 0x96, 0x5e, 0xfa, 0x32, 0x7e, 0xd9, 0x0c, 0x9b, 0x48, + 0xad, 0xea, 0xc6, 0x45, 0xf4, 0xcf, 0x79, 0xef, 0x62, 0xe6, 0xf3, 0xba, 0xb3, 0xcd, 0x62, 0xc1, + 0xfc, 0xbe, 0xf0, 0xdd, 0x28, 0x43, 0xc4, 0x7b, 0xe1, 0xc3, 0x49, 0xe5, 0xf6, 0x85, 0x93, 0x2a, + 0xc2, 0xac, 0x6e, 0x38, 0xd8, 0x32, 0xb4, 0xce, 0x52, 0x47, 0xdb, 0xb2, 0x4f, 0x4d, 0xf4, 0xbd, + 0xbc, 0xae, 0x12, 0xca, 0xa3, 0xf2, 0x7f, 0x84, 0xaf, 0xaf, 0x9c, 0xe4, 0xaf, 0xaf, 0x8c, 0x88, + 0x7e, 0x35, 0x15, 0x1d, 0xfd, 0xca, 0x8f, 0x6e, 0x05, 0x83, 0x83, 0x63, 0x8b, 0xda, 0xc6, 0x09, + 0xc3, 0xfd, 0xdd, 0x22, 0x18, 0x85, 0xcd, 0x0f, 0xfd, 0xf8, 0x1b, 0x72, 0xa2, 0xd5, 0x3d, 0x57, + 0x11, 0xe6, 0x7b, 0x95, 0x20, 0xb1, 0x85, 0x1a, 0xae, 0xbc, 0xdc, 0x53, 0x79, 0xdf, 0xe4, 0xc9, + 0x0a, 0x98, 0x3c, 0x61, 0xa5, 0xca, 0x89, 0x29, 0x55, 0x92, 0xc5, 0x42, 0x91, 0xda, 0x8e, 0xe1, + 0x34, 0x52, 0x0e, 0x8e, 0x79, 0xd1, 0x6e, 0xbb, 0x5d, 0xac, 0x59, 0x9a, 0xd1, 0xc2, 0xe8, 0x43, + 0xd2, 0x28, 0xcc, 0xde, 0x25, 0x98, 0xd4, 0x5b, 0xa6, 0x51, 0xd7, 0x9f, 0xed, 0x5d, 0x2e, 0x17, + 0x1f, 0x64, 0x9d, 0x48, 0xa4, 0xc2, 0xfe, 0x50, 0xfd, 0x7f, 0x95, 0x0a, 0x4c, 0xb5, 0x34, 0xab, + 0x4d, 0x83, 0xf0, 0xe5, 0x7a, 0x2e, 0x72, 0x8a, 0x24, 0x54, 0xf2, 0x7e, 0x51, 0x83, 0xbf, 0x95, + 0x1a, 0x2f, 0xc4, 0x7c, 0x4f, 0x34, 0x8f, 0x48, 0x62, 0x8b, 0xc1, 0x4f, 0x9c, 0xcc, 0x5d, 0xe9, + 0x58, 0xb8, 0x43, 0xee, 0xa0, 0xa7, 0x3d, 0xc4, 0x94, 0x1a, 0x24, 0x24, 0x5d, 0x1e, 0x20, 0x45, + 0xed, 0x43, 0x63, 0xdc, 0xcb, 0x03, 0x42, 0x5c, 0xa4, 0xaf, 0x99, 0x6f, 0xc9, 0xc3, 0x2c, 0xed, + 0xd5, 0x98, 0x38, 0xd1, 0x0b, 0xc8, 0x15, 0xd2, 0xce, 0x03, 0xf8, 0x32, 0xaa, 0x1f, 0x7c, 0x4c, + 0x2e, 0x80, 0x7c, 0xd1, 0x0f, 0x38, 0xe8, 0x3e, 0x26, 0xdd, 0xb7, 0xf7, 0xf8, 0x9a, 0xa7, 0x3c, + 0x8d, 0x7b, 0xdf, 0x3e, 0xbe, 0xf8, 0xf4, 0xf1, 0xf9, 0x79, 0x19, 0xe4, 0x62, 0xbb, 0x8d, 0x5a, + 0x07, 0x87, 0xe2, 0x0c, 0x4c, 0x7b, 0x6d, 0x26, 0x88, 0x01, 0x19, 0x4e, 0x4a, 0xba, 0x08, 0xea, + 0xcb, 0xa6, 0xd8, 0x1e, 0xfb, 0xae, 0x42, 0x4c, 0xd9, 0xe9, 0x83, 0xf2, 0x2b, 0x13, 0xac, 0xd1, + 0x2c, 0x98, 0xe6, 0x45, 0x72, 0x54, 0xe6, 0xf9, 0x32, 0xe4, 0x96, 0xb0, 0xd3, 0xda, 0x1e, 0x51, + 0x9b, 0xd9, 0xb5, 0x3a, 0x5e, 0x9b, 0xd9, 0x77, 0x1f, 0xfe, 0x60, 0x1b, 0xd6, 0x63, 0x6b, 0x9e, + 0xb0, 0x34, 0xee, 0xe8, 0xce, 0xb1, 0xa5, 0xa7, 0x0f, 0xce, 0xbf, 0xc9, 0x30, 0xe7, 0xaf, 0x70, + 0x51, 0x4c, 0x7e, 0x2e, 0xf3, 0x78, 0x5b, 0xef, 0x44, 0x9f, 0x4e, 0x16, 0x22, 0xcd, 0x97, 0x29, + 0x5f, 0xb3, 0x94, 0x17, 0x16, 0x13, 0x04, 0x4f, 0x13, 0x63, 0x70, 0x0c, 0x33, 0x78, 0x19, 0x26, + 0x09, 0x43, 0x8b, 0xfa, 0x1e, 0x71, 0x1d, 0xe4, 0x16, 0x1a, 0x9f, 0x33, 0x92, 0x85, 0xc6, 0xbb, + 0xf8, 0x85, 0x46, 0xc1, 0x88, 0xc7, 0xde, 0x3a, 0x63, 0x42, 0x5f, 0x1a, 0xf7, 0xff, 0x91, 0x2f, + 0x33, 0x26, 0xf0, 0xa5, 0x19, 0x50, 0x7e, 0xfa, 0x88, 0xfe, 0xc6, 0x7f, 0x62, 0x9d, 0xad, 0xb7, + 0xa1, 0x8a, 0xfe, 0xe7, 0x31, 0xc8, 0x9e, 0x73, 0x1f, 0xfe, 0x77, 0x70, 0x23, 0xd6, 0x4b, 0x47, + 0x10, 0x9c, 0xe1, 0x1e, 0xc8, 0xba, 0xf4, 0xd9, 0xb4, 0xe5, 0x26, 0xb1, 0xdd, 0x5d, 0x97, 0x11, + 0x95, 0xfc, 0xa7, 0x9c, 0x84, 0xbc, 0x6d, 0xee, 0x5a, 0x2d, 0xd7, 0x7c, 0x76, 0x35, 0x86, 0xbd, + 0x25, 0x0d, 0x4a, 0xca, 0x91, 0x9e, 0x1f, 0x9d, 0xcb, 0x68, 0xe8, 0x82, 0x24, 0x99, 0xbb, 0x20, + 0x29, 0xc1, 0xfe, 0x81, 0x00, 0x6f, 0xe9, 0x6b, 0xc4, 0x5f, 0x91, 0xbb, 0x02, 0xdb, 0xa3, 0x82, + 0x3d, 0x42, 0x2c, 0x07, 0x55, 0x87, 0xa4, 0x0e, 0xdf, 0xbc, 0x68, 0xfd, 0x38, 0xf0, 0x63, 0x75, + 0xf8, 0x16, 0xe0, 0x61, 0x2c, 0xa7, 0xd4, 0xf3, 0xcc, 0x49, 0xf5, 0xc1, 0x51, 0xa2, 0x9b, 0xe5, + 0x94, 0xfe, 0x40, 0xe8, 0x8c, 0xd0, 0x79, 0x75, 0x68, 0x74, 0x0e, 0xc9, 0x7d, 0xf5, 0x0f, 0x65, + 0x12, 0x09, 0xd3, 0x33, 0x72, 0xc4, 0x2f, 0x3a, 0x4a, 0x0c, 0x91, 0x3b, 0x06, 0x73, 0x71, 0xa0, + 0x67, 0x87, 0x0f, 0x0d, 0xce, 0x8b, 0x2e, 0xc4, 0xff, 0xb8, 0x43, 0x83, 0x8b, 0x32, 0x92, 0x3e, + 0x90, 0xaf, 0xa1, 0x17, 0x8b, 0x15, 0x5b, 0x8e, 0xbe, 0x37, 0xe2, 0x96, 0xc6, 0x0f, 0x2f, 0x09, + 0xa3, 0x01, 0xef, 0x93, 0x10, 0xe5, 0x70, 0xdc, 0xd1, 0x80, 0xc5, 0xd8, 0x48, 0x1f, 0xa6, 0xbf, + 0xcd, 0xbb, 0xd2, 0x63, 0x6b, 0x33, 0xbf, 0xc9, 0x56, 0x03, 0xf0, 0xc1, 0xd1, 0x3a, 0x0b, 0x33, + 0xa1, 0xa9, 0xbf, 0x77, 0x61, 0x0d, 0x97, 0x96, 0xf4, 0xa0, 0xbb, 0x2f, 0xb2, 0x91, 0x2f, 0x0c, + 0x24, 0x58, 0xf0, 0x15, 0x61, 0x62, 0x2c, 0xf7, 0xc1, 0x79, 0x63, 0xd8, 0x98, 0xb0, 0xfa, 0xfd, + 0x30, 0x56, 0x35, 0x1e, 0xab, 0x3b, 0x44, 0xc4, 0x24, 0x36, 0xa6, 0x09, 0xcd, 0x1b, 0xdf, 0xec, + 0xc3, 0xa5, 0x72, 0x70, 0xdd, 0x33, 0x34, 0x1f, 0xe9, 0x23, 0xf6, 0xab, 0xb4, 0x3b, 0xac, 0x53, + 0x93, 0x7d, 0x34, 0xdd, 0x21, 0x9b, 0x0d, 0xc8, 0xdc, 0x6c, 0x20, 0xa1, 0xbf, 0x7d, 0xe0, 0x46, + 0xea, 0x31, 0x37, 0x08, 0xa2, 0xec, 0x88, 0xfd, 0xed, 0x07, 0x72, 0x90, 0x3e, 0x38, 0xff, 0x28, + 0x03, 0x2c, 0x5b, 0xe6, 0x6e, 0xb7, 0x66, 0xb5, 0xb1, 0x85, 0xfe, 0x26, 0x98, 0x00, 0xfc, 0xc2, + 0x08, 0x26, 0x00, 0xeb, 0x00, 0x5b, 0x3e, 0x71, 0xa6, 0xe1, 0xb7, 0x8a, 0x99, 0xfb, 0x01, 0x53, + 0x6a, 0x88, 0x06, 0x7f, 0xe5, 0xec, 0x0f, 0xf1, 0x18, 0xc7, 0xf5, 0x59, 0x01, 0xb9, 0x51, 0x4e, + 0x00, 0xde, 0xea, 0x63, 0xdd, 0xe0, 0xb0, 0xbe, 0xef, 0x00, 0x9c, 0xa4, 0x8f, 0xf9, 0x3f, 0x4d, + 0xc0, 0x34, 0xdd, 0xae, 0xa3, 0x32, 0xfd, 0xfb, 0x00, 0xf4, 0x5f, 0x19, 0x01, 0xe8, 0x1b, 0x30, + 0x63, 0x06, 0xd4, 0x69, 0x9f, 0x1a, 0x5e, 0x80, 0x89, 0x85, 0x3d, 0xc4, 0x97, 0xca, 0x91, 0x41, + 0x1f, 0x08, 0x23, 0xaf, 0xf2, 0xc8, 0xdf, 0x15, 0x23, 0xef, 0x10, 0xc5, 0x51, 0x42, 0xff, 0x36, + 0x1f, 0xfa, 0x0d, 0x0e, 0xfa, 0xe2, 0x41, 0x58, 0x19, 0x43, 0xb8, 0x7d, 0x19, 0xb2, 0xe4, 0x74, + 0xdc, 0x6f, 0xa5, 0x38, 0xbf, 0x3f, 0x05, 0x13, 0xa4, 0xc9, 0xfa, 0xf3, 0x0e, 0xef, 0xd5, 0xfd, + 0xa2, 0x6d, 0x3a, 0xd8, 0xf2, 0x3d, 0x16, 0xbc, 0x57, 0x97, 0x07, 0xcf, 0x2b, 0xd9, 0x3e, 0x95, + 0xa7, 0x1b, 0x91, 0x7e, 0xc2, 0xd0, 0x93, 0x92, 0xb0, 0xc4, 0x47, 0x76, 0x5e, 0x6e, 0x98, 0x49, + 0xc9, 0x00, 0x46, 0xd2, 0x07, 0xfe, 0x2f, 0xb2, 0x70, 0x8a, 0xae, 0x2a, 0x2d, 0x59, 0xe6, 0x4e, + 0xcf, 0xed, 0x56, 0xfa, 0xc1, 0x75, 0xe1, 0x06, 0x98, 0x73, 0x38, 0x7f, 0x6c, 0xa6, 0x13, 0x3d, + 0xa9, 0xe8, 0xcf, 0xc2, 0x3e, 0x15, 0xcf, 0xe2, 0x91, 0x5c, 0x88, 0x11, 0x60, 0x14, 0xef, 0x89, + 0x17, 0xea, 0x05, 0x19, 0x0d, 0x2d, 0x52, 0xc9, 0x43, 0xad, 0x59, 0xfa, 0x3a, 0x95, 0x13, 0xd1, + 0xa9, 0x77, 0xfb, 0x3a, 0xf5, 0x23, 0x9c, 0x4e, 0x2d, 0x1f, 0x5c, 0x24, 0xe9, 0xeb, 0xd6, 0x2b, + 0xfc, 0x8d, 0x21, 0x7f, 0xdb, 0x6e, 0x27, 0x85, 0xcd, 0xba, 0xb0, 0x3f, 0x52, 0x96, 0xf3, 0x47, + 0xe2, 0xef, 0xa3, 0x48, 0x30, 0x13, 0xe6, 0xb9, 0x8e, 0xd0, 0xa5, 0x39, 0x90, 0x74, 0x8f, 0x3b, + 0x49, 0x6f, 0x0f, 0x35, 0xd7, 0x8d, 0x2d, 0x68, 0x0c, 0x6b, 0x4b, 0x73, 0x90, 0x5f, 0xd2, 0x3b, + 0x0e, 0xb6, 0xd0, 0x63, 0x6c, 0xa6, 0xfb, 0x8a, 0x14, 0x07, 0x80, 0x45, 0xc8, 0x6f, 0x92, 0xd2, + 0x98, 0xc9, 0x7c, 0xb3, 0x58, 0xeb, 0xa1, 0x1c, 0xaa, 0xec, 0xdf, 0xa4, 0xd1, 0xf9, 0x7a, 0xc8, + 0x8c, 0x6c, 0x8a, 0x9c, 0x20, 0x3a, 0xdf, 0x60, 0x16, 0xc6, 0x72, 0x31, 0x55, 0x5e, 0xc5, 0x3b, + 0xee, 0x18, 0x7f, 0x31, 0x3d, 0x84, 0x0b, 0x20, 0xeb, 0x6d, 0x9b, 0x74, 0x8e, 0x53, 0xaa, 0xfb, + 0x98, 0xd4, 0x57, 0xa8, 0x57, 0x54, 0x94, 0xe5, 0x71, 0xfb, 0x0a, 0x09, 0x71, 0x91, 0x3e, 0x66, + 0xdf, 0x22, 0x8e, 0xa2, 0xdd, 0x8e, 0xd6, 0xc2, 0x2e, 0xf7, 0xa9, 0xa1, 0x46, 0x7b, 0xb2, 0xac, + 0xd7, 0x93, 0x85, 0xda, 0x69, 0xee, 0x00, 0xed, 0x74, 0xd8, 0x65, 0x48, 0x5f, 0xe6, 0xa4, 0xe2, + 0x87, 0xb6, 0x0c, 0x19, 0xcb, 0xc6, 0x18, 0xae, 0x1d, 0xf5, 0x0e, 0xd2, 0x8e, 0xb5, 0xb5, 0x0e, + 0xbb, 0x49, 0xc3, 0x84, 0x35, 0xb2, 0x43, 0xb3, 0xc3, 0x6c, 0xd2, 0x44, 0xf3, 0x30, 0x06, 0xb4, + 0xe6, 0x18, 0x5a, 0x9f, 0x62, 0xc3, 0x68, 0xca, 0xfb, 0xa4, 0xb6, 0x69, 0x39, 0xc9, 0xf6, 0x49, + 0x5d, 0xee, 0x54, 0xf2, 0x5f, 0xd2, 0x83, 0x57, 0xfc, 0xb9, 0xea, 0x51, 0x0d, 0x9f, 0x09, 0x0e, + 0x5e, 0x0d, 0x62, 0x20, 0x7d, 0x78, 0xdf, 0x70, 0x48, 0x83, 0xe7, 0xb0, 0xcd, 0x91, 0xb5, 0x81, + 0x91, 0x0d, 0x9d, 0xc3, 0x34, 0xc7, 0x68, 0x1e, 0xd2, 0xc7, 0xeb, 0xeb, 0xa1, 0x81, 0xf3, 0x75, + 0x63, 0x1c, 0x38, 0xbd, 0x96, 0x99, 0x1b, 0xb2, 0x65, 0x0e, 0xbb, 0xff, 0xc3, 0x64, 0x3d, 0xba, + 0x01, 0x73, 0x98, 0xfd, 0x9f, 0x18, 0x26, 0xd2, 0x47, 0xfc, 0xf5, 0x32, 0xe4, 0xea, 0xe3, 0x1f, + 0x2f, 0x87, 0x9d, 0x8b, 0x10, 0x59, 0xd5, 0x47, 0x36, 0x5c, 0x0e, 0x33, 0x17, 0x89, 0x64, 0x61, + 0x0c, 0x81, 0xf7, 0x8f, 0xc2, 0x0c, 0x59, 0x12, 0xf1, 0xb6, 0x59, 0xbf, 0xce, 0x46, 0xcd, 0x47, + 0x53, 0x6c, 0xab, 0xf7, 0xc3, 0xa4, 0xb7, 0x7f, 0xc7, 0x46, 0xce, 0x79, 0xb1, 0xf6, 0xe9, 0x71, + 0xa9, 0xfa, 0xff, 0x1f, 0xc8, 0x19, 0x62, 0xe4, 0x7b, 0xb5, 0xc3, 0x3a, 0x43, 0x1c, 0xea, 0x7e, + 0xed, 0x9f, 0x06, 0x23, 0xea, 0x7f, 0x49, 0x0f, 0xf3, 0xde, 0x7d, 0xdc, 0x6c, 0x9f, 0x7d, 0xdc, + 0x0f, 0x85, 0xb1, 0xac, 0xf3, 0x58, 0xde, 0x2d, 0x2a, 0xc2, 0x11, 0x8e, 0xb5, 0x6f, 0xf7, 0xe1, + 0x3c, 0xc7, 0xc1, 0xb9, 0x70, 0x20, 0x5e, 0xc6, 0x70, 0xf0, 0x31, 0x1b, 0x8c, 0xb9, 0x1f, 0x4e, + 0xb1, 0x1d, 0xf7, 0x9c, 0xaa, 0xc8, 0xee, 0x3b, 0x55, 0xc1, 0xb5, 0xf4, 0xdc, 0x01, 0x5b, 0xfa, + 0x87, 0xc3, 0xda, 0xd1, 0xe0, 0xb5, 0xe3, 0x1e, 0x71, 0x44, 0x46, 0x37, 0x32, 0xbf, 0xc3, 0x57, + 0x8f, 0xf3, 0x9c, 0x7a, 0x94, 0x0e, 0xc6, 0x4c, 0xfa, 0xfa, 0xf1, 0x47, 0xde, 0x84, 0xf6, 0x90, + 0xdb, 0xfb, 0xb0, 0x5b, 0xc5, 0x9c, 0x10, 0x47, 0x36, 0x72, 0x0f, 0xb3, 0x55, 0x3c, 0x88, 0x93, + 0x31, 0xc4, 0x62, 0x9b, 0x85, 0x69, 0xc2, 0xd3, 0x79, 0xbd, 0xbd, 0x85, 0x1d, 0xf4, 0x1b, 0xd4, + 0x47, 0xd1, 0x8b, 0x7c, 0x39, 0xa2, 0xf0, 0x44, 0x51, 0xe7, 0x5d, 0x93, 0x7a, 0x74, 0x50, 0x26, + 0xe7, 0x43, 0x0c, 0x8e, 0x3b, 0x82, 0xe2, 0x40, 0x0e, 0xd2, 0x87, 0xec, 0x03, 0xd4, 0xdd, 0x66, + 0x55, 0xbb, 0x6c, 0xee, 0x3a, 0xe8, 0x91, 0x11, 0x74, 0xd0, 0x0b, 0x90, 0xef, 0x10, 0x6a, 0xec, + 0x58, 0x46, 0xfc, 0x74, 0x87, 0x89, 0x80, 0x96, 0xaf, 0xb2, 0x3f, 0x93, 0x9e, 0xcd, 0x08, 0xe4, + 0x48, 0xe9, 0x8c, 0xfb, 0x6c, 0xc6, 0x80, 0xf2, 0xc7, 0x72, 0xc7, 0xce, 0xa4, 0x5b, 0xba, 0xbe, + 0xa3, 0x3b, 0x23, 0x8a, 0xe0, 0xd0, 0x71, 0x69, 0x79, 0x11, 0x1c, 0xc8, 0x4b, 0xd2, 0x13, 0xa3, + 0x21, 0xa9, 0xb8, 0xbf, 0x8f, 0xfb, 0xc4, 0x68, 0x7c, 0xf1, 0xe9, 0x63, 0xf2, 0x4b, 0xb4, 0x65, + 0x9d, 0xa3, 0xce, 0xb7, 0x29, 0xfa, 0xf5, 0x0e, 0xdd, 0x58, 0x28, 0x6b, 0x87, 0xd7, 0x58, 0xfa, + 0x96, 0x9f, 0x3e, 0x30, 0xff, 0xfd, 0xfb, 0x21, 0xb7, 0x88, 0x2f, 0xec, 0x6e, 0xa1, 0xbb, 0x60, + 0xb2, 0x61, 0x61, 0x5c, 0x31, 0x36, 0x4d, 0x57, 0xba, 0x8e, 0xfb, 0xec, 0x41, 0xc2, 0xde, 0x5c, + 0x3c, 0xb6, 0xb1, 0xd6, 0x0e, 0xce, 0x9f, 0x79, 0xaf, 0xe8, 0xa5, 0x12, 0x64, 0xeb, 0x8e, 0xe6, + 0xa0, 0x29, 0x1f, 0x5b, 0xf4, 0x48, 0x18, 0x8b, 0xbb, 0x78, 0x2c, 0x6e, 0xe0, 0x64, 0x41, 0x38, + 0x98, 0x77, 0xff, 0x8f, 0x00, 0x00, 0xc1, 0xe4, 0x43, 0xb6, 0x69, 0xb8, 0x39, 0xbc, 0x23, 0x90, + 0xde, 0x3b, 0x7a, 0xb9, 0x2f, 0xee, 0x7b, 0x39, 0x71, 0x3f, 0x59, 0xac, 0x88, 0x31, 0xac, 0xb4, + 0x49, 0x30, 0xe5, 0x8a, 0x76, 0x05, 0x6b, 0x6d, 0x1b, 0x7d, 0x5f, 0xa0, 0xfc, 0x11, 0x62, 0x46, + 0xef, 0x11, 0x0e, 0xc6, 0x49, 0x6b, 0xe5, 0x13, 0x8f, 0xf6, 0xe8, 0xf0, 0x36, 0xff, 0x25, 0x3e, + 0x18, 0xc9, 0x2d, 0x90, 0xd5, 0x8d, 0x4d, 0x93, 0xf9, 0x17, 0x5e, 0x1d, 0x41, 0xdb, 0xd5, 0x09, + 0x95, 0x64, 0x14, 0x8c, 0xd4, 0x19, 0xcf, 0xd6, 0x58, 0x2e, 0xbd, 0xcb, 0xba, 0xa5, 0xa3, 0xff, + 0xff, 0x40, 0x61, 0x2b, 0x0a, 0x64, 0xbb, 0x9a, 0xb3, 0xcd, 0x8a, 0x26, 0xcf, 0xae, 0x8d, 0xbc, + 0x6b, 0x68, 0x86, 0x69, 0x5c, 0xde, 0xd1, 0x9f, 0xed, 0xdf, 0xad, 0xcb, 0xa5, 0xb9, 0x9c, 0x6f, + 0x61, 0x03, 0x5b, 0x9a, 0x83, 0xeb, 0x7b, 0x5b, 0x64, 0x8e, 0x35, 0xa9, 0x86, 0x93, 0x12, 0xeb, + 0xbf, 0xcb, 0x71, 0xb4, 0xfe, 0x6f, 0xea, 0x1d, 0x4c, 0x22, 0x35, 0x31, 0xfd, 0xf7, 0xde, 0x13, + 0xe9, 0x7f, 0x9f, 0x22, 0xd2, 0x47, 0xe3, 0xdb, 0x12, 0xcc, 0xd4, 0x5d, 0x85, 0xab, 0xef, 0xee, + 0xec, 0x68, 0xd6, 0x65, 0x74, 0x5d, 0x80, 0x4a, 0x48, 0x35, 0x33, 0xbc, 0x5f, 0xca, 0x1f, 0x0a, + 0x5f, 0x2b, 0xcd, 0x9a, 0x76, 0xa8, 0x84, 0xc4, 0xed, 0xe0, 0x36, 0xc8, 0xb9, 0xea, 0xed, 0x79, + 0x5c, 0xc6, 0x36, 0x04, 0x9a, 0x53, 0x30, 0xa2, 0xd5, 0x40, 0xde, 0xc6, 0x10, 0x4d, 0x43, 0x82, + 0xa3, 0x75, 0x47, 0x6b, 0x5d, 0x5c, 0x36, 0x2d, 0x73, 0xd7, 0xd1, 0x0d, 0x6c, 0xa3, 0x27, 0x04, + 0x08, 0x78, 0xfa, 0x9f, 0x09, 0xf4, 0x1f, 0xfd, 0x7b, 0x46, 0x74, 0x14, 0xf5, 0xbb, 0xd5, 0x30, + 0xf9, 0x88, 0x00, 0x55, 0x62, 0xe3, 0xa2, 0x08, 0xc5, 0xf4, 0x85, 0xf6, 0x3a, 0x19, 0x0a, 0xe5, + 0x87, 0xbb, 0xa6, 0xe5, 0xac, 0x9a, 0x2d, 0xad, 0x63, 0x3b, 0xa6, 0x85, 0x51, 0x2d, 0x56, 0x6a, + 0x6e, 0x0f, 0xd3, 0x36, 0x5b, 0xc1, 0xe0, 0xc8, 0xde, 0xc2, 0x6a, 0x27, 0xf3, 0x3a, 0xfe, 0x01, + 0xe1, 0x5d, 0x46, 0x2a, 0x95, 0x5e, 0x8e, 0x22, 0xf4, 0xbc, 0x5f, 0x97, 0x96, 0xec, 0xb0, 0x84, + 0xd8, 0xce, 0xa3, 0x10, 0x53, 0x63, 0x58, 0x2a, 0x97, 0x60, 0xb6, 0xbe, 0x7b, 0xc1, 0x27, 0x62, + 0x87, 0x8d, 0x90, 0x57, 0x0a, 0x47, 0xa9, 0x60, 0x8a, 0x17, 0x26, 0x14, 0x21, 0xdf, 0xeb, 0x61, + 0xd6, 0x0e, 0x67, 0x63, 0x78, 0xf3, 0x89, 0x82, 0xd1, 0x29, 0x06, 0x97, 0x9a, 0xbe, 0x00, 0xdf, + 0x21, 0xc1, 0x6c, 0xad, 0x8b, 0x0d, 0xdc, 0xa6, 0x5e, 0x90, 0x9c, 0x00, 0x5f, 0x9a, 0x50, 0x80, + 0x1c, 0xa1, 0x08, 0x01, 0x06, 0x1e, 0xcb, 0x8b, 0x9e, 0xf0, 0x82, 0x84, 0x44, 0x82, 0x8b, 0x2b, + 0x2d, 0x7d, 0xc1, 0x7d, 0x5e, 0x82, 0x69, 0x75, 0xd7, 0x58, 0xb7, 0x4c, 0x77, 0x34, 0xb6, 0xd0, + 0xdd, 0x41, 0x07, 0x71, 0x33, 0x1c, 0x6b, 0xef, 0x5a, 0x64, 0xfd, 0xa9, 0x62, 0xd4, 0x71, 0xcb, + 0x34, 0xda, 0x36, 0xa9, 0x47, 0x4e, 0xdd, 0xff, 0xe1, 0xce, 0xec, 0xf3, 0xbf, 0x22, 0x67, 0xd0, + 0x0b, 0x84, 0x43, 0xdd, 0xd0, 0xca, 0x87, 0x8a, 0x16, 0xef, 0x09, 0x04, 0x03, 0xda, 0x0c, 0x2a, + 0x21, 0x7d, 0xe1, 0x7e, 0x4a, 0x02, 0xa5, 0xd8, 0x6a, 0x99, 0xbb, 0x86, 0x53, 0xc7, 0x1d, 0xdc, + 0x72, 0x1a, 0x96, 0xd6, 0xc2, 0x61, 0xfb, 0xb9, 0x00, 0x72, 0x5b, 0xb7, 0x58, 0x1f, 0xec, 0x3e, + 0x32, 0x39, 0xbe, 0x54, 0x78, 0xc7, 0x91, 0xd6, 0x72, 0x7f, 0x29, 0x09, 0xc4, 0x29, 0xb6, 0xaf, + 0x28, 0x58, 0x50, 0xfa, 0x52, 0xfd, 0xb0, 0x04, 0x53, 0x5e, 0x8f, 0xbd, 0x25, 0x22, 0xcc, 0x5f, + 0x4a, 0x38, 0x19, 0xf1, 0x89, 0x27, 0x90, 0xe1, 0x5b, 0x12, 0xcc, 0x2a, 0xa2, 0xe8, 0x27, 0x13, + 0x5d, 0x31, 0xb9, 0xe8, 0xdc, 0xd7, 0x6a, 0xad, 0xb9, 0x54, 0x5b, 0x5d, 0x2c, 0xab, 0x05, 0x19, + 0x3d, 0x26, 0x41, 0x76, 0x5d, 0x37, 0xb6, 0xc2, 0xd1, 0x95, 0x8e, 0xbb, 0x76, 0x64, 0x1b, 0x3f, + 0xcc, 0x5a, 0x3a, 0x7d, 0x51, 0x6e, 0x87, 0xe3, 0xc6, 0xee, 0xce, 0x05, 0x6c, 0xd5, 0x36, 0xc9, + 0x28, 0x6b, 0x37, 0xcc, 0x3a, 0x36, 0xa8, 0x11, 0x9a, 0x53, 0xfb, 0x7e, 0xe3, 0x4d, 0x30, 0x81, + 0xc9, 0x83, 0xcb, 0x49, 0x84, 0xc4, 0x7d, 0xa6, 0xa4, 0x10, 0x53, 0x89, 0xa6, 0x0d, 0x7d, 0x88, + 0xa7, 0xaf, 0xa9, 0x7f, 0x9c, 0x83, 0x13, 0x45, 0xe3, 0x32, 0xb1, 0x29, 0x68, 0x07, 0x5f, 0xda, + 0xd6, 0x8c, 0x2d, 0x4c, 0x06, 0x08, 0x5f, 0xe2, 0xe1, 0x10, 0xfd, 0x19, 0x3e, 0x44, 0xbf, 0xa2, + 0xc2, 0x84, 0x69, 0xb5, 0xb1, 0xb5, 0x70, 0x99, 0xf0, 0xd4, 0xbb, 0xec, 0xcc, 0xda, 0x64, 0xbf, + 0x22, 0xe6, 0x19, 0xf9, 0xf9, 0x1a, 0xfd, 0x5f, 0xf5, 0x08, 0x9d, 0xbd, 0x19, 0x26, 0x58, 0x9a, + 0x32, 0x03, 0x93, 0x35, 0x75, 0xb1, 0xac, 0x36, 0x2b, 0x8b, 0x85, 0x23, 0xca, 0x15, 0x70, 0xb4, + 0xd2, 0x28, 0xab, 0xc5, 0x46, 0xa5, 0x56, 0x6d, 0x92, 0xf4, 0x42, 0x06, 0x3d, 0x2f, 0x2b, 0xea, + 0xd9, 0x1b, 0xcf, 0x4c, 0x3f, 0x58, 0x55, 0x98, 0x68, 0xd1, 0x0c, 0x64, 0x08, 0x9d, 0x4e, 0x54, + 0x3b, 0x46, 0x90, 0x26, 0xa8, 0x1e, 0x21, 0xe5, 0x34, 0xc0, 0x25, 0xcb, 0x34, 0xb6, 0x82, 0x53, + 0x87, 0x93, 0x6a, 0x28, 0x05, 0x3d, 0x92, 0x81, 0x3c, 0xfd, 0x87, 0x5c, 0x49, 0x42, 0x9e, 0x02, + 0xc1, 0x7b, 0xef, 0xae, 0xc5, 0x4b, 0xe4, 0x15, 0x4c, 0xb4, 0xd8, 0xab, 0xab, 0x8b, 0x54, 0x06, + 0xd4, 0x12, 0x66, 0x55, 0xb9, 0x05, 0xf2, 0xf4, 0x5f, 0xe6, 0x75, 0x10, 0x1d, 0x5e, 0x94, 0x66, + 0x13, 0xf4, 0x53, 0x16, 0x97, 0x69, 0xfa, 0xda, 0xfc, 0x5e, 0x09, 0x26, 0xab, 0xd8, 0x29, 0x6d, + 0xe3, 0xd6, 0x45, 0xf4, 0x24, 0x7e, 0x01, 0xb4, 0xa3, 0x63, 0xc3, 0x79, 0x70, 0xa7, 0xe3, 0x2f, + 0x80, 0x7a, 0x09, 0xe8, 0xa7, 0xc3, 0x9d, 0xef, 0x7d, 0xbc, 0xfe, 0xdc, 0xd4, 0xa7, 0xae, 0x5e, + 0x09, 0x11, 0x2a, 0x73, 0x12, 0xf2, 0x16, 0xb6, 0x77, 0x3b, 0xde, 0x22, 0x1a, 0x7b, 0x43, 0xaf, + 0xf2, 0xc5, 0x59, 0xe2, 0xc4, 0x79, 0x8b, 0x78, 0x11, 0x63, 0x88, 0x57, 0x9a, 0x85, 0x89, 0x8a, + 0xa1, 0x3b, 0xba, 0xd6, 0x41, 0x2f, 0xc8, 0xc2, 0x6c, 0x1d, 0x3b, 0xeb, 0x9a, 0xa5, 0xed, 0x60, + 0x07, 0x5b, 0x36, 0xfa, 0x26, 0xdf, 0x27, 0x74, 0x3b, 0x9a, 0xb3, 0x69, 0x5a, 0x3b, 0x9e, 0x6a, + 0x7a, 0xef, 0xae, 0x6a, 0xee, 0x61, 0xcb, 0x0e, 0xf8, 0xf2, 0x5e, 0xdd, 0x2f, 0x97, 0x4c, 0xeb, + 0xa2, 0x3b, 0x08, 0xb2, 0x69, 0x1a, 0x7b, 0x75, 0xe9, 0x75, 0xcc, 0xad, 0x55, 0xbc, 0x87, 0xbd, + 0x70, 0x69, 0xfe, 0xbb, 0x3b, 0x17, 0x68, 0x9b, 0x55, 0xd3, 0x71, 0x3b, 0xed, 0x55, 0x73, 0x8b, + 0xc6, 0x8b, 0x9d, 0x54, 0xf9, 0xc4, 0x20, 0x97, 0xb6, 0x87, 0x49, 0xae, 0x7c, 0x38, 0x17, 0x4b, + 0x54, 0xe6, 0x41, 0xf1, 0x7f, 0x6b, 0xe0, 0x0e, 0xde, 0xc1, 0x8e, 0x75, 0x99, 0x5c, 0x0b, 0x31, + 0xa9, 0xf6, 0xf9, 0xc2, 0x06, 0x68, 0xf1, 0xc9, 0x3a, 0x93, 0xde, 0x3c, 0x27, 0xb9, 0x03, 0x4d, + 0xd6, 0x45, 0x28, 0x8e, 0xe5, 0xda, 0x2b, 0xd9, 0xb5, 0x66, 0x7e, 0x4d, 0x86, 0x2c, 0x19, 0x3c, + 0x5f, 0x9f, 0xe1, 0x56, 0x98, 0x76, 0xb0, 0x6d, 0x6b, 0x5b, 0xd8, 0x5b, 0x61, 0x62, 0xaf, 0xca, + 0x1d, 0x90, 0xeb, 0x10, 0x4c, 0xe9, 0xe0, 0x70, 0x1d, 0x57, 0x33, 0xd7, 0xc0, 0x70, 0x69, 0xf9, + 0x23, 0x01, 0x81, 0x5b, 0xa5, 0x7f, 0x9c, 0xbd, 0x1f, 0x72, 0x14, 0xfe, 0x29, 0xc8, 0x2d, 0x96, + 0x17, 0x36, 0x96, 0x0b, 0x47, 0xdc, 0x47, 0x8f, 0xbf, 0x29, 0xc8, 0x2d, 0x15, 0x1b, 0xc5, 0xd5, + 0x82, 0xe4, 0xd6, 0xa3, 0x52, 0x5d, 0xaa, 0x15, 0x64, 0x37, 0x71, 0xbd, 0x58, 0xad, 0x94, 0x0a, + 0x59, 0x65, 0x1a, 0x26, 0xce, 0x17, 0xd5, 0x6a, 0xa5, 0xba, 0x5c, 0xc8, 0xa1, 0xbf, 0x0d, 0xe3, + 0x77, 0x27, 0x8f, 0xdf, 0xf5, 0x51, 0x3c, 0xf5, 0x83, 0xec, 0xd7, 0x7d, 0xc8, 0xee, 0xe6, 0x20, + 0xfb, 0x7e, 0x11, 0x22, 0x63, 0x70, 0x67, 0xca, 0xc3, 0xc4, 0xba, 0x65, 0xb6, 0xb0, 0x6d, 0xa3, + 0x5f, 0x96, 0x20, 0x5f, 0xd2, 0x8c, 0x16, 0xee, 0xa0, 0xab, 0x02, 0xa8, 0xa8, 0xab, 0x68, 0xc6, + 0x3f, 0x2d, 0xf6, 0x8f, 0x19, 0xd1, 0xde, 0x8f, 0xd1, 0x9d, 0xa7, 0x34, 0x23, 0xe4, 0x23, 0xd6, + 0xcb, 0xc5, 0x92, 0x1a, 0xc3, 0xd5, 0x38, 0x12, 0x4c, 0xb1, 0xd5, 0x80, 0x0b, 0x38, 0x3c, 0x0f, + 0xff, 0x66, 0x46, 0x74, 0x72, 0xe8, 0xd5, 0xc0, 0x27, 0x13, 0x21, 0x0f, 0xb1, 0x89, 0xe0, 0x20, + 0x6a, 0x63, 0xd8, 0x3c, 0x94, 0x60, 0x7a, 0xc3, 0xb0, 0xfb, 0x09, 0x45, 0x3c, 0x8e, 0xbe, 0x57, + 0x8d, 0x10, 0xa1, 0x03, 0xc5, 0xd1, 0x1f, 0x4c, 0x2f, 0x7d, 0xc1, 0x7c, 0x33, 0x03, 0xc7, 0x97, + 0xb1, 0x81, 0x2d, 0xbd, 0x45, 0x6b, 0xe0, 0x49, 0xe2, 0x6e, 0x5e, 0x12, 0x4f, 0xe2, 0x38, 0xef, + 0xf7, 0x07, 0x2f, 0x81, 0x57, 0xf8, 0x12, 0xb8, 0x8f, 0x93, 0xc0, 0xcd, 0x82, 0x74, 0xc6, 0x70, + 0x1f, 0xfa, 0x14, 0xcc, 0x54, 0x4d, 0x47, 0xdf, 0xd4, 0x5b, 0xd4, 0x07, 0xed, 0x57, 0x65, 0xc8, + 0xae, 0xea, 0xb6, 0x83, 0x8a, 0x41, 0x77, 0x72, 0x06, 0xa6, 0x75, 0xa3, 0xd5, 0xd9, 0x6d, 0x63, + 0x15, 0x6b, 0xb4, 0x5f, 0x99, 0x54, 0xc3, 0x49, 0xc1, 0xd6, 0xbe, 0xcb, 0x96, 0xec, 0x6d, 0xed, + 0x7f, 0x5c, 0x78, 0x19, 0x26, 0xcc, 0x02, 0x09, 0x48, 0x19, 0x61, 0x77, 0x15, 0x61, 0xd6, 0x08, + 0x65, 0xf5, 0x0c, 0xf6, 0xde, 0x0b, 0x05, 0xc2, 0xe4, 0x54, 0xfe, 0x0f, 0xf4, 0x2e, 0xa1, 0xc6, + 0x3a, 0x88, 0xa1, 0x64, 0xc8, 0x2c, 0x0d, 0x31, 0x49, 0x56, 0x60, 0xae, 0x52, 0x6d, 0x94, 0xd5, + 0x6a, 0x71, 0x95, 0x65, 0x91, 0xd1, 0xb7, 0x25, 0xc8, 0xa9, 0xb8, 0xdb, 0xb9, 0x1c, 0x8e, 0x18, + 0xcd, 0x1c, 0xc5, 0x33, 0xbe, 0xa3, 0xb8, 0xb2, 0x04, 0xa0, 0xb5, 0xdc, 0x82, 0xc9, 0x95, 0x5a, + 0x52, 0xdf, 0x38, 0xa6, 0x5c, 0x05, 0x8b, 0x7e, 0x6e, 0x35, 0xf4, 0x27, 0x7a, 0xa1, 0xf0, 0xce, + 0x11, 0x47, 0x8d, 0x70, 0x18, 0xd1, 0x27, 0xbc, 0x5b, 0x68, 0xb3, 0x67, 0x20, 0xb9, 0xc3, 0x11, + 0xff, 0x17, 0x24, 0xc8, 0x36, 0xdc, 0xde, 0x32, 0xd4, 0x71, 0x7e, 0x6c, 0x38, 0x1d, 0x77, 0xc9, + 0x44, 0xe8, 0xf8, 0xbd, 0x30, 0x13, 0xd6, 0x58, 0xe6, 0x2a, 0x11, 0xab, 0xe2, 0xdc, 0x0f, 0xc3, + 0x68, 0x78, 0x1f, 0x76, 0x0e, 0x47, 0xc4, 0x1f, 0x79, 0x32, 0xc0, 0x1a, 0xde, 0xb9, 0x80, 0x2d, + 0x7b, 0x5b, 0xef, 0xa2, 0xbf, 0x93, 0x61, 0x6a, 0x19, 0x3b, 0x75, 0x47, 0x73, 0x76, 0xed, 0x9e, + 0xed, 0x4e, 0xc3, 0x2c, 0x69, 0xad, 0x6d, 0xcc, 0xba, 0x23, 0xef, 0x15, 0xbd, 0x4d, 0x16, 0xf5, + 0x27, 0x0a, 0xca, 0x99, 0xf7, 0xcb, 0x88, 0xc0, 0xe4, 0x29, 0x90, 0x6d, 0x6b, 0x8e, 0xc6, 0xb0, + 0xb8, 0xaa, 0x07, 0x8b, 0x80, 0x90, 0x4a, 0xb2, 0xa1, 0xdf, 0x91, 0x44, 0x1c, 0x8a, 0x04, 0xca, + 0x4f, 0x06, 0xc2, 0xbb, 0x32, 0x43, 0xa0, 0x70, 0x0c, 0x66, 0xab, 0xb5, 0x46, 0x73, 0xb5, 0xb6, + 0xbc, 0x5c, 0x76, 0x53, 0x0b, 0xb2, 0x72, 0x12, 0x94, 0xf5, 0xe2, 0x83, 0x6b, 0xe5, 0x6a, 0xa3, + 0x59, 0xad, 0x2d, 0x96, 0xd9, 0x9f, 0x59, 0xe5, 0x28, 0x4c, 0x97, 0x8a, 0xa5, 0x15, 0x2f, 0x21, + 0xa7, 0x9c, 0x82, 0xe3, 0x6b, 0xe5, 0xb5, 0x85, 0xb2, 0x5a, 0x5f, 0xa9, 0xac, 0x37, 0x5d, 0x32, + 0x4b, 0xb5, 0x8d, 0xea, 0x62, 0x21, 0xaf, 0x20, 0x38, 0x19, 0xfa, 0x72, 0x5e, 0xad, 0x55, 0x97, + 0x9b, 0xf5, 0x46, 0xb1, 0x51, 0x2e, 0x4c, 0x28, 0x57, 0xc0, 0xd1, 0x52, 0xb1, 0x4a, 0xb2, 0x97, + 0x6a, 0xd5, 0x6a, 0xb9, 0xd4, 0x28, 0x4c, 0xa2, 0x7f, 0xcf, 0xc2, 0x74, 0xc5, 0xae, 0x6a, 0x3b, + 0xf8, 0x9c, 0xd6, 0xd1, 0xdb, 0xe8, 0x05, 0xa1, 0x99, 0xc7, 0xf5, 0x30, 0x6b, 0xd1, 0x47, 0xdc, + 0x6e, 0xe8, 0x98, 0xa2, 0x39, 0xab, 0xf2, 0x89, 0xee, 0x9c, 0xdc, 0x20, 0x04, 0xbc, 0x39, 0x39, + 0x7d, 0x53, 0x16, 0x00, 0xe8, 0x53, 0x23, 0xb8, 0xdc, 0xf5, 0x6c, 0x6f, 0x6b, 0xd2, 0x76, 0xb0, + 0x8d, 0xad, 0x3d, 0xbd, 0x85, 0xbd, 0x9c, 0x6a, 0xe8, 0x2f, 0xf4, 0x45, 0x59, 0x74, 0x7f, 0x31, + 0x04, 0x6a, 0xa8, 0x3a, 0x11, 0xbd, 0xe1, 0xcf, 0xc8, 0x22, 0xbb, 0x83, 0x42, 0x24, 0x93, 0x69, + 0xca, 0x8b, 0xa5, 0xe1, 0x96, 0x6d, 0x1b, 0xb5, 0x5a, 0xb3, 0xbe, 0x52, 0x53, 0x1b, 0x05, 0x59, + 0x99, 0x81, 0x49, 0xf7, 0x75, 0xb5, 0x56, 0x5d, 0x2e, 0x64, 0x95, 0x13, 0x70, 0x6c, 0xa5, 0x58, + 0x6f, 0x56, 0xaa, 0xe7, 0x8a, 0xab, 0x95, 0xc5, 0x66, 0x69, 0xa5, 0xa8, 0xd6, 0x0b, 0x39, 0xe5, + 0x2a, 0x38, 0xd1, 0xa8, 0x94, 0xd5, 0xe6, 0x52, 0xb9, 0xd8, 0xd8, 0x50, 0xcb, 0xf5, 0x66, 0xb5, + 0xd6, 0xac, 0x16, 0xd7, 0xca, 0x85, 0xbc, 0xdb, 0xfc, 0xc9, 0xa7, 0x40, 0x6d, 0x26, 0xf6, 0x2b, + 0xe3, 0x64, 0x84, 0x32, 0x4e, 0xf5, 0x2a, 0x23, 0x84, 0xd5, 0x4a, 0x2d, 0xd7, 0xcb, 0xea, 0xb9, + 0x72, 0x61, 0xba, 0x9f, 0xae, 0xcd, 0x28, 0xc7, 0xa1, 0xe0, 0xf2, 0xd0, 0xac, 0xd4, 0xbd, 0x9c, + 0x8b, 0x85, 0x59, 0xf4, 0xe1, 0x3c, 0x9c, 0x54, 0xf1, 0x96, 0x6e, 0x3b, 0xd8, 0x5a, 0xd7, 0x2e, + 0xef, 0x60, 0xc3, 0xf1, 0x3a, 0xf9, 0x7f, 0x49, 0xac, 0x8c, 0x6b, 0x30, 0xdb, 0xa5, 0x34, 0xd6, + 0xb0, 0xb3, 0x6d, 0xb6, 0xd9, 0x28, 0xfc, 0xa4, 0xc8, 0x9e, 0x63, 0x7e, 0x3d, 0x9c, 0x5d, 0xe5, + 0xff, 0x0e, 0xe9, 0xb6, 0x1c, 0xa3, 0xdb, 0xd9, 0x61, 0x74, 0x5b, 0xb9, 0x06, 0xa6, 0x76, 0x6d, + 0x6c, 0x95, 0x77, 0x34, 0xbd, 0xe3, 0x5d, 0xce, 0xe9, 0x27, 0xa0, 0x37, 0x67, 0x45, 0x4f, 0xac, + 0x84, 0xea, 0xd2, 0x5f, 0x8c, 0x11, 0x7d, 0xeb, 0x69, 0x00, 0x56, 0xd9, 0x0d, 0xab, 0xc3, 0x94, + 0x35, 0x94, 0xe2, 0xf2, 0x77, 0x41, 0xef, 0x74, 0x74, 0x63, 0xcb, 0xdf, 0xf7, 0x0f, 0x12, 0xd0, + 0x8b, 0x65, 0x91, 0x13, 0x2c, 0x49, 0x79, 0x4b, 0xd6, 0x9a, 0x5e, 0x28, 0x8d, 0xb9, 0xdf, 0xdd, + 0xdf, 0x74, 0xf2, 0x4a, 0x01, 0x66, 0x48, 0x1a, 0x6b, 0x81, 0x85, 0x09, 0xb7, 0x0f, 0xf6, 0xc8, + 0xad, 0x95, 0x1b, 0x2b, 0xb5, 0x45, 0xff, 0xdb, 0xa4, 0x4b, 0xd2, 0x65, 0xa6, 0x58, 0x7d, 0x90, + 0xb4, 0xc6, 0x29, 0xe5, 0x09, 0x70, 0x55, 0xa8, 0xc3, 0x2e, 0xae, 0xaa, 0xe5, 0xe2, 0xe2, 0x83, + 0xcd, 0xf2, 0xb3, 0x2a, 0xf5, 0x46, 0x9d, 0x6f, 0x5c, 0x5e, 0x3b, 0x9a, 0x76, 0xf9, 0x2d, 0xaf, + 0x15, 0x2b, 0xab, 0xac, 0x7f, 0x5f, 0xaa, 0xa9, 0x6b, 0xc5, 0x46, 0x61, 0x06, 0xfd, 0x9a, 0x0c, + 0x85, 0x65, 0xec, 0xac, 0x9b, 0x96, 0xa3, 0x75, 0x56, 0x75, 0xe3, 0xe2, 0x86, 0xd5, 0xe1, 0x26, + 0x9b, 0xc2, 0x61, 0x3a, 0xf8, 0x21, 0x92, 0x23, 0x18, 0xbd, 0x23, 0xde, 0x25, 0xd9, 0x02, 0x65, + 0x0a, 0x12, 0xd0, 0x73, 0x24, 0x91, 0xe5, 0x6e, 0xf1, 0x52, 0x93, 0xe9, 0xc9, 0x73, 0xc7, 0x3d, + 0x3e, 0xf7, 0x41, 0x2d, 0x8f, 0x9e, 0x9f, 0x85, 0xc9, 0x25, 0xdd, 0xd0, 0x3a, 0xfa, 0xb3, 0xb9, + 0xf8, 0xa5, 0x41, 0x1f, 0x93, 0x89, 0xe9, 0x63, 0xa4, 0xa1, 0xc6, 0xcf, 0x5f, 0x94, 0x45, 0x97, + 0x17, 0x42, 0xb2, 0xf7, 0x98, 0x8c, 0x18, 0x3c, 0xdf, 0x27, 0x89, 0x2c, 0x2f, 0x0c, 0xa6, 0x97, + 0x0c, 0xc3, 0x8f, 0x7e, 0x77, 0xd8, 0x58, 0x3d, 0xed, 0x7b, 0xb2, 0x9f, 0x2a, 0x4c, 0xa1, 0x3f, + 0x97, 0x01, 0x2d, 0x63, 0xe7, 0x1c, 0xb6, 0xfc, 0xa9, 0x00, 0xe9, 0xf5, 0x99, 0xbd, 0x1d, 0x6a, + 0xb2, 0xaf, 0x0f, 0x03, 0x78, 0x9e, 0x07, 0xb0, 0x18, 0xd3, 0x78, 0x22, 0x48, 0x47, 0x34, 0xde, + 0x0a, 0xe4, 0x6d, 0xf2, 0x9d, 0xa9, 0xd9, 0x6d, 0xd1, 0xc3, 0x25, 0x21, 0x16, 0xa6, 0x4e, 0x09, + 0xab, 0x8c, 0x00, 0xfa, 0x96, 0x3f, 0x09, 0xfa, 0x61, 0x4e, 0x3b, 0x96, 0x0e, 0xcc, 0x6c, 0x32, + 0x7d, 0xb1, 0xd2, 0x55, 0x97, 0x7e, 0xf6, 0x0d, 0x7a, 0x5f, 0x0e, 0x8e, 0xf7, 0xab, 0x0e, 0xfa, + 0xdd, 0x0c, 0xb7, 0xc3, 0x8e, 0xc9, 0x90, 0x9f, 0x61, 0x1b, 0x88, 0xee, 0x8b, 0xf2, 0x34, 0x38, + 0xe1, 0x2f, 0xc3, 0x35, 0xcc, 0x2a, 0xbe, 0x64, 0x77, 0xb0, 0xe3, 0x60, 0x8b, 0x54, 0x6d, 0x52, + 0xed, 0xff, 0x51, 0x79, 0x06, 0x5c, 0xa9, 0x1b, 0xb6, 0xde, 0xc6, 0x56, 0x43, 0xef, 0xda, 0x45, + 0xa3, 0xdd, 0xd8, 0x75, 0x4c, 0x4b, 0xd7, 0xd8, 0x55, 0x92, 0x93, 0x6a, 0xd4, 0x67, 0xe5, 0x26, + 0x28, 0xe8, 0x76, 0xcd, 0xb8, 0x60, 0x6a, 0x56, 0x5b, 0x37, 0xb6, 0x56, 0x75, 0xdb, 0x61, 0x1e, + 0xc0, 0xfb, 0xd2, 0xd1, 0xdf, 0xcb, 0xa2, 0x87, 0xe9, 0x06, 0xc0, 0x1a, 0xd1, 0xa1, 0xfc, 0xb4, + 0x2c, 0x72, 0x3c, 0x2e, 0x19, 0xed, 0x64, 0xca, 0xf2, 0xbc, 0x71, 0x1b, 0x12, 0xfd, 0x47, 0x70, + 0xd2, 0xb5, 0xd0, 0x74, 0xcf, 0x10, 0x38, 0x57, 0x56, 0x2b, 0x4b, 0x95, 0xb2, 0x6b, 0x56, 0x9c, + 0x80, 0x63, 0xc1, 0xb7, 0xc5, 0x07, 0x9b, 0xf5, 0x72, 0xb5, 0x51, 0x98, 0x74, 0xfb, 0x29, 0x9a, + 0xbc, 0x54, 0xac, 0xac, 0x96, 0x17, 0x9b, 0x8d, 0x9a, 0xfb, 0x65, 0x71, 0x38, 0xd3, 0x02, 0x3d, + 0x92, 0x85, 0xa3, 0x44, 0xb6, 0x97, 0x89, 0x54, 0x5d, 0xa1, 0xf4, 0xf8, 0xda, 0xfa, 0x00, 0x4d, + 0x51, 0xf1, 0xa2, 0x4f, 0x0a, 0xdf, 0x94, 0x19, 0x82, 0xb0, 0xa7, 0x8c, 0x08, 0xcd, 0xf8, 0xa6, + 0x24, 0x12, 0xa1, 0x42, 0x98, 0x6c, 0x32, 0xa5, 0xf8, 0xd7, 0x71, 0x8f, 0x38, 0xd1, 0xe0, 0x13, + 0x2b, 0xb3, 0x44, 0x7e, 0x7e, 0xd6, 0x7a, 0x45, 0x25, 0xea, 0x30, 0x07, 0x40, 0x52, 0x88, 0x06, + 0x51, 0x3d, 0xe8, 0x3b, 0x5e, 0x45, 0xe9, 0x41, 0xb1, 0xd4, 0xa8, 0x9c, 0x2b, 0x47, 0xe9, 0xc1, + 0x27, 0x64, 0x98, 0x5c, 0xc6, 0x8e, 0x3b, 0xa7, 0xb2, 0xd1, 0x33, 0x05, 0xd6, 0x7f, 0x5c, 0x33, + 0xa6, 0x63, 0xb6, 0xb4, 0x8e, 0xbf, 0x0c, 0x40, 0xdf, 0xd0, 0x4f, 0x0d, 0x63, 0x82, 0x78, 0x45, + 0x47, 0x8c, 0x57, 0x3f, 0x08, 0x39, 0xc7, 0xfd, 0xcc, 0x96, 0xa1, 0xbf, 0x2f, 0x72, 0xb8, 0x72, + 0x89, 0x2c, 0x6a, 0x8e, 0xa6, 0xd2, 0xfc, 0xa1, 0xd1, 0x49, 0xd0, 0x76, 0x89, 0x60, 0xe4, 0xbb, + 0xd1, 0xfe, 0xfc, 0x5b, 0x19, 0x4e, 0xd0, 0xf6, 0x51, 0xec, 0x76, 0xeb, 0x8e, 0x69, 0x61, 0x15, + 0xb7, 0xb0, 0xde, 0x75, 0x7a, 0xd6, 0xf7, 0x2c, 0x9a, 0xea, 0x6d, 0x36, 0xb3, 0x57, 0xf4, 0x9b, + 0xb2, 0x68, 0x0c, 0xe6, 0x7d, 0xed, 0xb1, 0xa7, 0xbc, 0x88, 0xc6, 0xfe, 0x21, 0x49, 0x24, 0xaa, + 0x72, 0x42, 0xe2, 0xc9, 0x80, 0x7a, 0xff, 0x21, 0x00, 0xe5, 0xad, 0xdc, 0xa8, 0xe5, 0x52, 0xb9, + 0xb2, 0xee, 0x0e, 0x02, 0xd7, 0xc2, 0xd5, 0xeb, 0x1b, 0x6a, 0x69, 0xa5, 0x58, 0x2f, 0x37, 0xd5, + 0xf2, 0x72, 0xa5, 0xde, 0x60, 0x4e, 0x59, 0xf4, 0xaf, 0x09, 0xe5, 0x1a, 0x38, 0x55, 0xdf, 0x58, + 0xa8, 0x97, 0xd4, 0xca, 0x3a, 0x49, 0x57, 0xcb, 0xd5, 0xf2, 0x79, 0xf6, 0x75, 0x12, 0xbd, 0xa7, + 0x00, 0xd3, 0xee, 0x04, 0xa0, 0x4e, 0xe7, 0x05, 0xe8, 0x6b, 0x59, 0x98, 0x56, 0xb1, 0x6d, 0x76, + 0xf6, 0xc8, 0x1c, 0x61, 0x5c, 0x53, 0x8f, 0x6f, 0xc8, 0xa2, 0xe7, 0xb7, 0x43, 0xcc, 0xce, 0x87, + 0x18, 0x8d, 0x9e, 0x68, 0x6a, 0x7b, 0x9a, 0xde, 0xd1, 0x2e, 0xb0, 0xae, 0x66, 0x52, 0x0d, 0x12, + 0x94, 0x79, 0x50, 0xcc, 0x4b, 0x06, 0xb6, 0xea, 0xad, 0x4b, 0x65, 0x67, 0xbb, 0xd8, 0x6e, 0x5b, + 0xd8, 0xb6, 0xd9, 0xea, 0x45, 0x9f, 0x2f, 0xca, 0x8d, 0x70, 0x94, 0xa4, 0x86, 0x32, 0x53, 0x07, + 0x99, 0xde, 0x64, 0x3f, 0x67, 0xd1, 0xb8, 0xec, 0xe5, 0xcc, 0x85, 0x72, 0x06, 0xc9, 0xe1, 0xe3, + 0x12, 0x79, 0xfe, 0x94, 0xce, 0x19, 0x98, 0x36, 0xb4, 0x1d, 0x5c, 0x7e, 0xb8, 0xab, 0x5b, 0xd8, + 0x26, 0x8e, 0x31, 0xb2, 0x1a, 0x4e, 0x42, 0xef, 0x13, 0x3a, 0x6f, 0x2e, 0x26, 0xb1, 0x64, 0xba, + 0xbf, 0x3c, 0x84, 0xea, 0xf7, 0xe9, 0x67, 0x64, 0xf4, 0x1e, 0x19, 0x66, 0x18, 0x53, 0x45, 0xe3, + 0x72, 0xa5, 0x8d, 0xae, 0xe5, 0x8c, 0x5f, 0xcd, 0x4d, 0xf3, 0x8c, 0x5f, 0xf2, 0x82, 0x7e, 0x56, + 0x16, 0x75, 0x77, 0xee, 0x53, 0x71, 0x52, 0x46, 0xb4, 0xe3, 0xe8, 0xa6, 0xb9, 0xcb, 0x1c, 0x55, + 0x27, 0x55, 0xfa, 0x92, 0xe6, 0xa2, 0x1e, 0xfa, 0x03, 0x21, 0x67, 0x6a, 0xc1, 0x6a, 0x1c, 0x12, + 0x80, 0x1f, 0x91, 0x61, 0x8e, 0x71, 0x55, 0x67, 0xe7, 0x7c, 0x84, 0x0e, 0xbc, 0xfd, 0x9c, 0xb0, + 0x21, 0xd8, 0xa7, 0xfe, 0xac, 0xa4, 0xc7, 0x0d, 0x90, 0x1f, 0x10, 0x0a, 0x8e, 0x26, 0x5c, 0x91, + 0x43, 0x82, 0xf2, 0x2d, 0x59, 0x98, 0xde, 0xb0, 0xb1, 0xc5, 0xfc, 0xf6, 0xd1, 0xab, 0xb2, 0x20, + 0x2f, 0x63, 0x6e, 0x23, 0xf5, 0x45, 0xc2, 0x1e, 0xbe, 0xe1, 0xca, 0x86, 0x88, 0xba, 0x36, 0x52, + 0x04, 0x6c, 0x37, 0xc0, 0x1c, 0x15, 0x69, 0xd1, 0x71, 0x5c, 0x23, 0xd1, 0xf3, 0xa6, 0xed, 0x49, + 0x1d, 0xc5, 0x56, 0x11, 0x29, 0xcb, 0xcd, 0x52, 0x72, 0x79, 0x5a, 0xc5, 0x9b, 0x74, 0x3e, 0x9b, + 0x55, 0x7b, 0x52, 0x95, 0x5b, 0xe1, 0x0a, 0xb3, 0x8b, 0xe9, 0xf9, 0x95, 0x50, 0xe6, 0x1c, 0xc9, + 0xdc, 0xef, 0x13, 0xfa, 0x9a, 0x90, 0xaf, 0xae, 0xb8, 0x74, 0x92, 0xe9, 0x42, 0x77, 0x34, 0x26, + 0xc9, 0x71, 0x28, 0xb8, 0x39, 0xc8, 0xfe, 0x8b, 0x5a, 0xae, 0xd7, 0x56, 0xcf, 0x95, 0xfb, 0x2f, + 0x63, 0xe4, 0xd0, 0xf3, 0x64, 0x98, 0x5a, 0xb0, 0x4c, 0xad, 0xdd, 0xd2, 0x6c, 0x07, 0x7d, 0x4b, + 0x82, 0x99, 0x75, 0xed, 0x72, 0xc7, 0xd4, 0xda, 0xc4, 0xbf, 0xbf, 0xa7, 0x2f, 0xe8, 0xd2, 0x4f, + 0x5e, 0x5f, 0xc0, 0x5e, 0xf9, 0x83, 0x81, 0xfe, 0xd1, 0xbd, 0x8c, 0xc8, 0x85, 0x9a, 0xfe, 0x36, + 0x9f, 0xd4, 0x2f, 0x58, 0xa9, 0xc7, 0xd7, 0x7c, 0x98, 0xa7, 0x08, 0x8b, 0xf2, 0x3d, 0x62, 0xe1, + 0x47, 0x45, 0x48, 0x1e, 0xce, 0xae, 0xfc, 0xf3, 0x27, 0x21, 0xbf, 0x88, 0x89, 0x15, 0xf7, 0x3f, + 0x24, 0x98, 0xa8, 0x63, 0x87, 0x58, 0x70, 0x77, 0x70, 0x9e, 0xc2, 0x6d, 0x92, 0x21, 0x70, 0x62, + 0xf7, 0xde, 0xdd, 0xc9, 0x7a, 0xe8, 0xbc, 0x35, 0x79, 0x4e, 0xe0, 0x91, 0x48, 0xcb, 0x9d, 0x67, + 0x65, 0x1e, 0xc8, 0x23, 0x31, 0x96, 0x54, 0xfa, 0xbe, 0x56, 0x6f, 0x93, 0x98, 0x6b, 0x55, 0xa8, + 0xd7, 0xfb, 0x8d, 0xb0, 0x7e, 0xc6, 0x7a, 0x9b, 0x31, 0xe6, 0x63, 0x9c, 0xa3, 0x9e, 0x0a, 0x13, + 0x54, 0xe6, 0xde, 0x7c, 0xb4, 0xd7, 0x4f, 0x81, 0x92, 0x20, 0x67, 0xaf, 0xbd, 0x9c, 0x82, 0x2e, + 0x6a, 0xd1, 0x85, 0x8f, 0x25, 0x06, 0xc1, 0x4c, 0x15, 0x3b, 0x97, 0x4c, 0xeb, 0x62, 0xdd, 0xd1, + 0x1c, 0x8c, 0xfe, 0x55, 0x02, 0xb9, 0x8e, 0x9d, 0x70, 0xf4, 0x93, 0x2a, 0x1c, 0xa3, 0x15, 0x62, + 0x19, 0x49, 0xff, 0x4d, 0x2b, 0x72, 0xa6, 0xaf, 0x10, 0x42, 0xf9, 0xd4, 0xfd, 0xbf, 0xa2, 0x5f, + 0xee, 0x1b, 0xf4, 0x49, 0xea, 0x33, 0x69, 0x60, 0x92, 0x09, 0x33, 0xe8, 0x2a, 0x58, 0x84, 0x9e, + 0xbe, 0x57, 0xc8, 0xac, 0x16, 0xa3, 0x79, 0x38, 0x5d, 0xc1, 0x07, 0xae, 0x82, 0x6c, 0x69, 0x5b, + 0x73, 0xd0, 0x5b, 0x65, 0x80, 0x62, 0xbb, 0xbd, 0x46, 0x7d, 0xc0, 0xc3, 0x0e, 0x69, 0x67, 0x61, + 0xa6, 0xb5, 0xad, 0x05, 0x77, 0x9b, 0xd0, 0xfe, 0x80, 0x4b, 0x53, 0x9e, 0x16, 0x38, 0x93, 0x53, + 0xa9, 0xa2, 0x1e, 0x98, 0xdc, 0x32, 0x18, 0x6d, 0xdf, 0xd1, 0x9c, 0x0f, 0x85, 0x19, 0x7b, 0x84, + 0xce, 0xfd, 0x7d, 0x3e, 0x60, 0x2f, 0x7a, 0x0e, 0xc7, 0x48, 0xfb, 0x07, 0x6c, 0x82, 0x84, 0x84, + 0x27, 0xbd, 0xc5, 0x02, 0x7a, 0xc4, 0xf3, 0x35, 0x96, 0xd0, 0xb5, 0x4a, 0xb9, 0xad, 0x7b, 0xa2, + 0x65, 0x01, 0xb3, 0xd0, 0x0b, 0x33, 0xc9, 0xe0, 0x8b, 0x17, 0xdc, 0x7d, 0x30, 0x8b, 0xdb, 0xba, + 0x83, 0xbd, 0x5a, 0x32, 0x01, 0xc6, 0x41, 0xcc, 0xff, 0x80, 0x9e, 0x2b, 0x1c, 0x74, 0x8d, 0x08, + 0x74, 0x7f, 0x8d, 0x22, 0xda, 0x9f, 0x58, 0x18, 0x35, 0x31, 0x9a, 0xe9, 0x83, 0xf5, 0x53, 0x32, + 0x9c, 0x68, 0x98, 0x5b, 0x5b, 0x1d, 0xec, 0x89, 0x09, 0x53, 0xef, 0x4c, 0xa4, 0x8d, 0x12, 0x2e, + 0xb2, 0x13, 0x64, 0x3e, 0xa4, 0xfb, 0x47, 0xc9, 0xdc, 0x17, 0xfe, 0xc4, 0x54, 0xec, 0x2c, 0x8a, + 0x88, 0xab, 0x2f, 0x9f, 0x11, 0x28, 0x88, 0x05, 0x7c, 0x16, 0x26, 0x9b, 0x3e, 0x10, 0x9f, 0x93, + 0x60, 0x96, 0xde, 0x5c, 0xe9, 0x29, 0xe8, 0x03, 0x23, 0x04, 0x00, 0x7d, 0x2b, 0x23, 0xea, 0x67, + 0x4b, 0x64, 0xc2, 0x71, 0x12, 0x21, 0x62, 0xb1, 0xa0, 0x2a, 0x03, 0xc9, 0xa5, 0x2f, 0xda, 0x3f, + 0x91, 0x61, 0x7a, 0x19, 0x7b, 0x2d, 0xcd, 0x4e, 0xdc, 0x13, 0x9d, 0x85, 0x19, 0x72, 0x7d, 0x5b, + 0x8d, 0x1d, 0x93, 0xa4, 0xab, 0x66, 0x5c, 0x9a, 0x72, 0x3d, 0xcc, 0x5e, 0xc0, 0x9b, 0xa6, 0x85, + 0x6b, 0xdc, 0x59, 0x4a, 0x3e, 0x31, 0x22, 0x3c, 0x1d, 0x17, 0x07, 0x6d, 0x81, 0xc7, 0xe6, 0xe6, + 0xfd, 0xc2, 0x0c, 0x55, 0x25, 0x62, 0xcc, 0x79, 0x3a, 0x4c, 0x32, 0xe4, 0x3d, 0x33, 0x2d, 0xae, + 0x5f, 0xf4, 0xf3, 0xa2, 0xd7, 0xf8, 0x88, 0x96, 0x39, 0x44, 0x6f, 0x4b, 0xc2, 0xc4, 0x58, 0xee, + 0x77, 0x2f, 0x84, 0xca, 0x5f, 0xb8, 0x5c, 0x69, 0xdb, 0x68, 0x2d, 0x19, 0xa6, 0xa7, 0x01, 0xfc, + 0xc6, 0xe1, 0x85, 0xb5, 0x08, 0xa5, 0xf0, 0x91, 0xeb, 0x63, 0x0f, 0xea, 0xf5, 0x8a, 0x83, 0xb0, + 0x33, 0x62, 0x60, 0xc4, 0x0e, 0xf8, 0x89, 0x70, 0x92, 0x3e, 0x3a, 0x1f, 0x97, 0xe1, 0x84, 0x7f, + 0xfe, 0x68, 0x55, 0xb3, 0x83, 0x76, 0x57, 0x4a, 0x06, 0x11, 0x77, 0xe0, 0xc3, 0x6f, 0x2c, 0x5f, + 0x4f, 0x36, 0x66, 0xf4, 0xe5, 0x64, 0xb4, 0xe8, 0x28, 0x37, 0xc3, 0x31, 0x63, 0x77, 0xc7, 0x97, + 0x3a, 0x69, 0xf1, 0xac, 0x85, 0xef, 0xff, 0x90, 0x64, 0x64, 0x12, 0x61, 0x7e, 0x2c, 0x73, 0x4a, + 0xee, 0x48, 0xd7, 0x53, 0x12, 0xc1, 0x88, 0xfe, 0x39, 0x93, 0xa8, 0x77, 0x1b, 0x7c, 0xe6, 0x2b, + 0x41, 0x2f, 0x75, 0x88, 0x07, 0xbe, 0xce, 0x4e, 0x40, 0xae, 0xbc, 0xd3, 0x75, 0x2e, 0x9f, 0x7d, + 0x22, 0xcc, 0xd6, 0x1d, 0x0b, 0x6b, 0x3b, 0xa1, 0x9d, 0x01, 0xc7, 0xbc, 0x88, 0x0d, 0x6f, 0x67, + 0x80, 0xbc, 0xdc, 0x79, 0x07, 0x4c, 0x18, 0x66, 0x53, 0xdb, 0x75, 0xb6, 0x95, 0x6b, 0xf7, 0x1d, + 0xa9, 0x67, 0xe0, 0xd7, 0x58, 0x0c, 0xa3, 0x2f, 0xde, 0x45, 0xd6, 0x86, 0xf3, 0x86, 0x59, 0xdc, + 0x75, 0xb6, 0x17, 0xae, 0xf9, 0xc8, 0xdf, 0x9c, 0xce, 0x7c, 0xe2, 0x6f, 0x4e, 0x67, 0xbe, 0xf0, + 0x37, 0xa7, 0x33, 0x3f, 0xf7, 0xa5, 0xd3, 0x47, 0x3e, 0xf1, 0xa5, 0xd3, 0x47, 0x3e, 0xf7, 0xa5, + 0xd3, 0x47, 0x7e, 0x58, 0xea, 0x5e, 0xb8, 0x90, 0x27, 0x54, 0x9e, 0xfa, 0xff, 0x06, 0x00, 0x00, + 0xff, 0xff, 0x07, 0xc6, 0xed, 0x93, 0x99, 0x0b, 0x02, 0x00, } func (m *Rpc) Marshal() (dAtA []byte, err error) { @@ -88924,9 +88979,9 @@ func (m *RpcObjectListExportStateFilters) MarshalToSizedBuffer(dAtA []byte) (int _ = i var l int _ = l - if m.OnlyRootBlock { + if m.RemoveBlocks { i-- - if m.OnlyRootBlock { + if m.RemoveBlocks { dAtA[i] = 1 } else { dAtA[i] = 0 @@ -88936,9 +88991,14 @@ func (m *RpcObjectListExportStateFilters) MarshalToSizedBuffer(dAtA []byte) (int } if len(m.RelationsWhiteList) > 0 { for iNdEx := len(m.RelationsWhiteList) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.RelationsWhiteList[iNdEx]) - copy(dAtA[i:], m.RelationsWhiteList[iNdEx]) - i = encodeVarintCommands(dAtA, i, uint64(len(m.RelationsWhiteList[iNdEx]))) + { + size, err := m.RelationsWhiteList[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCommands(dAtA, i, uint64(size)) + } i-- dAtA[i] = 0xa } @@ -88946,6 +89006,43 @@ func (m *RpcObjectListExportStateFilters) MarshalToSizedBuffer(dAtA []byte) (int return len(dAtA) - i, nil } +func (m *RpcObjectListExportRelationsWhiteList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcObjectListExportRelationsWhiteList) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcObjectListExportRelationsWhiteList) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.AllowedRelations) > 0 { + for iNdEx := len(m.AllowedRelations) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.AllowedRelations[iNdEx]) + copy(dAtA[i:], m.AllowedRelations[iNdEx]) + i = encodeVarintCommands(dAtA, i, uint64(len(m.AllowedRelations[iNdEx]))) + i-- + dAtA[i] = 0x12 + } + } + if m.Layout != 0 { + i = encodeVarintCommands(dAtA, i, uint64(m.Layout)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + func (m *RpcObjectListExportResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -125468,17 +125565,35 @@ func (m *RpcObjectListExportStateFilters) Size() (n int) { var l int _ = l if len(m.RelationsWhiteList) > 0 { - for _, s := range m.RelationsWhiteList { - l = len(s) + for _, e := range m.RelationsWhiteList { + l = e.Size() n += 1 + l + sovCommands(uint64(l)) } } - if m.OnlyRootBlock { + if m.RemoveBlocks { n += 2 } return n } +func (m *RpcObjectListExportRelationsWhiteList) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Layout != 0 { + n += 1 + sovCommands(uint64(m.Layout)) + } + if len(m.AllowedRelations) > 0 { + for _, s := range m.AllowedRelations { + l = len(s) + n += 1 + l + sovCommands(uint64(l)) + } + } + return n +} + func (m *RpcObjectListExportResponse) Size() (n int) { if m == nil { return 0 @@ -179396,6 +179511,129 @@ func (m *RpcObjectListExportStateFilters) Unmarshal(dAtA []byte) error { if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field RelationsWhiteList", wireType) } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RelationsWhiteList = append(m.RelationsWhiteList, &RpcObjectListExportRelationsWhiteList{}) + if err := m.RelationsWhiteList[len(m.RelationsWhiteList)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RemoveBlocks", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.RemoveBlocks = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcObjectListExportRelationsWhiteList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RelationsWhiteList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RelationsWhiteList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Layout", wireType) + } + m.Layout = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Layout |= model.ObjectTypeLayout(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AllowedRelations", wireType) + } var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { @@ -179422,28 +179660,8 @@ func (m *RpcObjectListExportStateFilters) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.RelationsWhiteList = append(m.RelationsWhiteList, string(dAtA[iNdEx:postIndex])) + m.AllowedRelations = append(m.AllowedRelations, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field OnlyRootBlock", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowCommands - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.OnlyRootBlock = bool(v != 0) default: iNdEx = preIndex skippy, err := skipCommands(dAtA[iNdEx:]) diff --git a/pb/protos/commands.proto b/pb/protos/commands.proto index 6151d7c13..f7f42efdd 100644 --- a/pb/protos/commands.proto +++ b/pb/protos/commands.proto @@ -2784,10 +2784,13 @@ message Rpc { bool noProgress = 11; StateFilters linksStateFilters = 12; } - message StateFilters { - repeated string relationsWhiteList = 1; - bool onlyRootBlock = 2; + repeated RelationsWhiteList relationsWhiteList = 1; + bool removeBlocks = 2; + } + message RelationsWhiteList { + anytype.model.ObjectType.Layout layout = 1; + repeated string allowedRelations = 2; } message Response { Error error = 1; From 640cb218c4a76d712f7e70328de180b9bb279bd3 Mon Sep 17 00:00:00 2001 From: AnastasiaShemyakinskaya Date: Fri, 24 Jan 2025 16:24:58 +0100 Subject: [PATCH 224/279] GO-4889: fix conflicts Signed-off-by: AnastasiaShemyakinskaya --- docs/proto.md | 159 +- pb/commands.pb.go | 3829 ++++++++++++++++++++++++++++++--------------- 2 files changed, 2725 insertions(+), 1263 deletions(-) diff --git a/docs/proto.md b/docs/proto.md index 2fae09a17..d90295a09 100644 --- a/docs/proto.md +++ b/docs/proto.md @@ -50,6 +50,10 @@ - [Empty](#anytype-Empty) - [Rpc](#anytype-Rpc) - [Rpc.Account](#anytype-Rpc-Account) + - [Rpc.Account.ChangeJsonApiAddr](#anytype-Rpc-Account-ChangeJsonApiAddr) + - [Rpc.Account.ChangeJsonApiAddr.Request](#anytype-Rpc-Account-ChangeJsonApiAddr-Request) + - [Rpc.Account.ChangeJsonApiAddr.Response](#anytype-Rpc-Account-ChangeJsonApiAddr-Response) + - [Rpc.Account.ChangeJsonApiAddr.Response.Error](#anytype-Rpc-Account-ChangeJsonApiAddr-Response-Error) - [Rpc.Account.ChangeNetworkConfigAndRestart](#anytype-Rpc-Account-ChangeNetworkConfigAndRestart) - [Rpc.Account.ChangeNetworkConfigAndRestart.Request](#anytype-Rpc-Account-ChangeNetworkConfigAndRestart-Request) - [Rpc.Account.ChangeNetworkConfigAndRestart.Response](#anytype-Rpc-Account-ChangeNetworkConfigAndRestart-Response) @@ -911,9 +915,11 @@ - [Rpc.Object.ListDuplicate.Response](#anytype-Rpc-Object-ListDuplicate-Response) - [Rpc.Object.ListDuplicate.Response.Error](#anytype-Rpc-Object-ListDuplicate-Response-Error) - [Rpc.Object.ListExport](#anytype-Rpc-Object-ListExport) + - [Rpc.Object.ListExport.RelationsWhiteList](#anytype-Rpc-Object-ListExport-RelationsWhiteList) - [Rpc.Object.ListExport.Request](#anytype-Rpc-Object-ListExport-Request) - [Rpc.Object.ListExport.Response](#anytype-Rpc-Object-ListExport-Response) - [Rpc.Object.ListExport.Response.Error](#anytype-Rpc-Object-ListExport-Response-Error) + - [Rpc.Object.ListExport.StateFilters](#anytype-Rpc-Object-ListExport-StateFilters) - [Rpc.Object.ListModifyDetailValues](#anytype-Rpc-Object-ListModifyDetailValues) - [Rpc.Object.ListModifyDetailValues.Request](#anytype-Rpc-Object-ListModifyDetailValues-Request) - [Rpc.Object.ListModifyDetailValues.Request.Operation](#anytype-Rpc-Object-ListModifyDetailValues-Request-Operation) @@ -1274,6 +1280,7 @@ - [Rpc.Workspace.SetInfo.Response.Error](#anytype-Rpc-Workspace-SetInfo-Response-Error) - [StreamRequest](#anytype-StreamRequest) + - [Rpc.Account.ChangeJsonApiAddr.Response.Error.Code](#anytype-Rpc-Account-ChangeJsonApiAddr-Response-Error-Code) - [Rpc.Account.ChangeNetworkConfigAndRestart.Response.Error.Code](#anytype-Rpc-Account-ChangeNetworkConfigAndRestart-Response-Error-Code) - [Rpc.Account.ConfigUpdate.Response.Error.Code](#anytype-Rpc-Account-ConfigUpdate-Response-Error-Code) - [Rpc.Account.ConfigUpdate.Timezones](#anytype-Rpc-Account-ConfigUpdate-Timezones) @@ -1584,6 +1591,7 @@ - [Event.Account.Details](#anytype-Event-Account-Details) - [Event.Account.LinkChallenge](#anytype-Event-Account-LinkChallenge) - [Event.Account.LinkChallenge.ClientInfo](#anytype-Event-Account-LinkChallenge-ClientInfo) + - [Event.Account.LinkChallengeHide](#anytype-Event-Account-LinkChallengeHide) - [Event.Account.Show](#anytype-Event-Account-Show) - [Event.Account.Update](#anytype-Event-Account-Update) - [Event.Block](#anytype-Event-Block) @@ -1811,6 +1819,7 @@ - [pkg/lib/pb/model/protos/models.proto](#pkg_lib_pb_model_protos_models-proto) - [Account](#anytype-model-Account) + - [Account.Auth](#anytype-model-Account-Auth) - [Account.Config](#anytype-model-Account-Config) - [Account.Info](#anytype-model-Account-Info) - [Account.Status](#anytype-model-Account-Status) @@ -1909,6 +1918,7 @@ - [SmartBlockSnapshotBase](#anytype-model-SmartBlockSnapshotBase) - [SpaceObjectHeader](#anytype-model-SpaceObjectHeader) + - [Account.Auth.LocalApiScope](#anytype-model-Account-Auth-LocalApiScope) - [Account.StatusType](#anytype-model-Account-StatusType) - [Block.Align](#anytype-model-Block-Align) - [Block.Content.Bookmark.State](#anytype-model-Block-Content-Bookmark-State) @@ -2018,6 +2028,7 @@ | AccountRevertDeletion | [Rpc.Account.RevertDeletion.Request](#anytype-Rpc-Account-RevertDeletion-Request) | [Rpc.Account.RevertDeletion.Response](#anytype-Rpc-Account-RevertDeletion-Response) | | | AccountSelect | [Rpc.Account.Select.Request](#anytype-Rpc-Account-Select-Request) | [Rpc.Account.Select.Response](#anytype-Rpc-Account-Select-Response) | | | AccountEnableLocalNetworkSync | [Rpc.Account.EnableLocalNetworkSync.Request](#anytype-Rpc-Account-EnableLocalNetworkSync-Request) | [Rpc.Account.EnableLocalNetworkSync.Response](#anytype-Rpc-Account-EnableLocalNetworkSync-Response) | | +| AccountChangeJsonApiAddr | [Rpc.Account.ChangeJsonApiAddr.Request](#anytype-Rpc-Account-ChangeJsonApiAddr-Request) | [Rpc.Account.ChangeJsonApiAddr.Response](#anytype-Rpc-Account-ChangeJsonApiAddr-Response) | | | AccountStop | [Rpc.Account.Stop.Request](#anytype-Rpc-Account-Stop-Request) | [Rpc.Account.Stop.Response](#anytype-Rpc-Account-Stop-Response) | | | AccountMove | [Rpc.Account.Move.Request](#anytype-Rpc-Account-Move-Request) | [Rpc.Account.Move.Response](#anytype-Rpc-Account-Move-Response) | | | AccountConfigUpdate | [Rpc.Account.ConfigUpdate.Request](#anytype-Rpc-Account-ConfigUpdate-Request) | [Rpc.Account.ConfigUpdate.Response](#anytype-Rpc-Account-ConfigUpdate-Response) | | @@ -2940,6 +2951,62 @@ Response – message from a middleware. + + +### Rpc.Account.ChangeJsonApiAddr + + + + + + + + + +### Rpc.Account.ChangeJsonApiAddr.Request + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| listenAddr | [string](#string) | | make sure to use 127.0.0.1:x to not listen on all interfaces; recommended value is 127.0.0.1:31009 | + + + + + + + + +### Rpc.Account.ChangeJsonApiAddr.Response + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| error | [Rpc.Account.ChangeJsonApiAddr.Response.Error](#anytype-Rpc-Account-ChangeJsonApiAddr-Response-Error) | | | + + + + + + + + +### Rpc.Account.ChangeJsonApiAddr.Response.Error + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| code | [Rpc.Account.ChangeJsonApiAddr.Response.Error.Code](#anytype-Rpc-Account-ChangeJsonApiAddr-Response-Error-Code) | | | +| description | [string](#string) | | | + + + + + + ### Rpc.Account.ChangeNetworkConfigAndRestart @@ -3098,6 +3165,7 @@ Front end to middleware request-to-create-an account | networkMode | [Rpc.Account.NetworkMode](#anytype-Rpc-Account-NetworkMode) | | optional, default is DefaultConfig | | networkCustomConfigFilePath | [string](#string) | | config path for the custom network mode } | | preferYamuxTransport | [bool](#bool) | | optional, default is false, recommended in case of problems with QUIC transport | +| jsonApiListenAddr | [string](#string) | | optional, if empty json api will not be started; 127.0.0.1:31009 should be the default one | @@ -3299,6 +3367,7 @@ TODO: Remove this request if we do not need it, GO-1926 | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | appName | [string](#string) | | just for info, not secure to rely on | +| scope | [model.Account.Auth.LocalApiScope](#anytype-model-Account-Auth-LocalApiScope) | | | @@ -3641,6 +3710,7 @@ User can select an account from those, that came with an AccountAdd events | networkMode | [Rpc.Account.NetworkMode](#anytype-Rpc-Account-NetworkMode) | | optional, default is DefaultConfig | | networkCustomConfigFilePath | [string](#string) | | config path for the custom network mode | | preferYamuxTransport | [bool](#bool) | | optional, default is false, recommended in case of problems with QUIC transport | +| jsonApiListenAddr | [string](#string) | | optional, if empty json api will not be started; 127.0.0.1:31009 should be the default one | @@ -15468,6 +15538,22 @@ Deletes the object, keys from the local store and unsubscribe from remote change + + +### Rpc.Object.ListExport.RelationsWhiteList + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| layout | [model.ObjectType.Layout](#anytype-model-ObjectType-Layout) | | | +| allowedRelations | [string](#string) | repeated | | + + + + + + ### Rpc.Object.ListExport.Request @@ -15486,7 +15572,7 @@ Deletes the object, keys from the local store and unsubscribe from remote change | isJson | [bool](#bool) | | for protobuf export | | includeArchived | [bool](#bool) | | for migration | | noProgress | [bool](#bool) | | for integrations like raycast and web publishing | -| includeDependentDetails | [bool](#bool) | | for web publising, just add details of dependent objects in result snapshot | +| linksStateFilters | [Rpc.Object.ListExport.StateFilters](#anytype-Rpc-Object-ListExport-StateFilters) | | | @@ -15527,6 +15613,22 @@ Deletes the object, keys from the local store and unsubscribe from remote change + + +### Rpc.Object.ListExport.StateFilters + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| relationsWhiteList | [Rpc.Object.ListExport.RelationsWhiteList](#anytype-Rpc-Object-ListExport-RelationsWhiteList) | repeated | | +| removeBlocks | [bool](#bool) | | | + + + + + + ### Rpc.Object.ListModifyDetailValues @@ -20688,6 +20790,20 @@ Middleware-to-front-end response, that can contain a NULL error or a non-NULL er + + +### Rpc.Account.ChangeJsonApiAddr.Response.Error.Code + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| NULL | 0 | | +| UNKNOWN_ERROR | 1 | | +| BAD_INPUT | 2 | | +| ACCOUNT_IS_NOT_RUNNING | 4 | | + + + ### Rpc.Account.ChangeNetworkConfigAndRestart.Response.Error.Code @@ -24949,6 +25065,7 @@ Event – type of message, that could be sent from a middleware to the correspon | ----- | ---- | ----- | ----------- | | challenge | [string](#string) | | | | clientInfo | [Event.Account.LinkChallenge.ClientInfo](#anytype-Event-Account-LinkChallenge-ClientInfo) | | | +| scope | [model.Account.Auth.LocalApiScope](#anytype-model-Account-Auth-LocalApiScope) | | | @@ -24972,6 +25089,21 @@ Event – type of message, that could be sent from a middleware to the correspon + + +### Event.Account.LinkChallengeHide + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| challenge | [string](#string) | | verify code before hiding to protect from MITM attacks | + + + + + + ### Event.Account.Show @@ -27254,6 +27386,7 @@ Precondition: user A opened a block | accountConfigUpdate | [Event.Account.Config.Update](#anytype-Event-Account-Config-Update) | | | | accountUpdate | [Event.Account.Update](#anytype-Event-Account-Update) | | | | accountLinkChallenge | [Event.Account.LinkChallenge](#anytype-Event-Account-LinkChallenge) | | | +| accountLinkChallengeHide | [Event.Account.LinkChallengeHide](#anytype-Event-Account-LinkChallengeHide) | | | | objectDetailsSet | [Event.Object.Details.Set](#anytype-Event-Object-Details-Set) | | | | objectDetailsAmend | [Event.Object.Details.Amend](#anytype-Event-Object-Details-Amend) | | | | objectDetailsUnset | [Event.Object.Details.Unset](#anytype-Event-Object-Details-Unset) | | | @@ -28510,6 +28643,16 @@ Contains basic information about a user account + + +### Account.Auth + + + + + + + ### Account.Config @@ -30225,6 +30368,19 @@ stored | + + +### Account.Auth.LocalApiScope + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| Limited | 0 | Used in WebClipper; AccountSelect(to be deprecated), ObjectSearch, ObjectShow, ObjectCreate, ObjectCreateFromURL, BlockPreview, BlockPaste, BroadcastPayloadEvent | +| JsonAPI | 1 | JSON API only, no direct grpc api calls allowed | +| Full | 2 | Full access, not available via LocalLink | + + + ### Account.StatusType @@ -30947,6 +31103,7 @@ Look https://github.com/golang/protobuf/issues/1135 for more information. | usecase | 6 | | | builtin | 7 | | | bookmark | 8 | | +| api | 9 | | diff --git a/pb/commands.pb.go b/pb/commands.pb.go index 19779b4e2..fd9ebbdaf 100644 --- a/pb/commands.pb.go +++ b/pb/commands.pb.go @@ -1481,6 +1481,37 @@ func (RpcAccountEnableLocalNetworkSyncResponseErrorCode) EnumDescriptor() ([]byt return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 11, 1, 0, 0} } +type RpcAccountChangeJsonApiAddrResponseErrorCode int32 + +const ( + RpcAccountChangeJsonApiAddrResponseError_NULL RpcAccountChangeJsonApiAddrResponseErrorCode = 0 + RpcAccountChangeJsonApiAddrResponseError_UNKNOWN_ERROR RpcAccountChangeJsonApiAddrResponseErrorCode = 1 + RpcAccountChangeJsonApiAddrResponseError_BAD_INPUT RpcAccountChangeJsonApiAddrResponseErrorCode = 2 + RpcAccountChangeJsonApiAddrResponseError_ACCOUNT_IS_NOT_RUNNING RpcAccountChangeJsonApiAddrResponseErrorCode = 4 +) + +var RpcAccountChangeJsonApiAddrResponseErrorCode_name = map[int32]string{ + 0: "NULL", + 1: "UNKNOWN_ERROR", + 2: "BAD_INPUT", + 4: "ACCOUNT_IS_NOT_RUNNING", +} + +var RpcAccountChangeJsonApiAddrResponseErrorCode_value = map[string]int32{ + "NULL": 0, + "UNKNOWN_ERROR": 1, + "BAD_INPUT": 2, + "ACCOUNT_IS_NOT_RUNNING": 4, +} + +func (x RpcAccountChangeJsonApiAddrResponseErrorCode) String() string { + return proto.EnumName(RpcAccountChangeJsonApiAddrResponseErrorCode_name, int32(x)) +} + +func (RpcAccountChangeJsonApiAddrResponseErrorCode) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12, 1, 0, 0} +} + type RpcAccountChangeNetworkConfigAndRestartResponseErrorCode int32 const ( @@ -1521,7 +1552,7 @@ func (x RpcAccountChangeNetworkConfigAndRestartResponseErrorCode) String() strin } func (RpcAccountChangeNetworkConfigAndRestartResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 1, 0, 0} } type RpcAccountLocalLinkNewChallengeResponseErrorCode int32 @@ -1555,7 +1586,7 @@ func (x RpcAccountLocalLinkNewChallengeResponseErrorCode) String() string { } func (RpcAccountLocalLinkNewChallengeResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 0, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 0, 1, 0, 0} } type RpcAccountLocalLinkSolveChallengeResponseErrorCode int32 @@ -1595,7 +1626,7 @@ func (x RpcAccountLocalLinkSolveChallengeResponseErrorCode) String() string { } func (RpcAccountLocalLinkSolveChallengeResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 1, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 1, 1, 0, 0} } type RpcWorkspaceGetCurrentResponseErrorCode int32 @@ -3437,7 +3468,7 @@ func (x RpcObjectListExportResponseErrorCode) String() string { } func (RpcObjectListExportResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 6, 47, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 6, 47, 3, 0, 0} } type RpcObjectImportRequestMode int32 @@ -14050,6 +14081,7 @@ type RpcAccountCreateRequest struct { NetworkMode RpcAccountNetworkMode `protobuf:"varint,6,opt,name=networkMode,proto3,enum=anytype.RpcAccountNetworkMode" json:"networkMode,omitempty"` NetworkCustomConfigFilePath string `protobuf:"bytes,7,opt,name=networkCustomConfigFilePath,proto3" json:"networkCustomConfigFilePath,omitempty"` PreferYamuxTransport bool `protobuf:"varint,8,opt,name=preferYamuxTransport,proto3" json:"preferYamuxTransport,omitempty"` + JsonApiListenAddr string `protobuf:"bytes,9,opt,name=jsonApiListenAddr,proto3" json:"jsonApiListenAddr,omitempty"` } func (m *RpcAccountCreateRequest) Reset() { *m = RpcAccountCreateRequest{} } @@ -14160,6 +14192,13 @@ func (m *RpcAccountCreateRequest) GetPreferYamuxTransport() bool { return false } +func (m *RpcAccountCreateRequest) GetJsonApiListenAddr() string { + if m != nil { + return m.JsonApiListenAddr + } + return "" +} + // XXX_OneofWrappers is for the internal use of the proto package. func (*RpcAccountCreateRequest) XXX_OneofWrappers() []interface{} { return []interface{}{ @@ -14852,6 +14891,7 @@ type RpcAccountSelectRequest struct { NetworkMode RpcAccountNetworkMode `protobuf:"varint,4,opt,name=networkMode,proto3,enum=anytype.RpcAccountNetworkMode" json:"networkMode,omitempty"` NetworkCustomConfigFilePath string `protobuf:"bytes,5,opt,name=networkCustomConfigFilePath,proto3" json:"networkCustomConfigFilePath,omitempty"` PreferYamuxTransport bool `protobuf:"varint,6,opt,name=preferYamuxTransport,proto3" json:"preferYamuxTransport,omitempty"` + JsonApiListenAddr string `protobuf:"bytes,7,opt,name=jsonApiListenAddr,proto3" json:"jsonApiListenAddr,omitempty"` } func (m *RpcAccountSelectRequest) Reset() { *m = RpcAccountSelectRequest{} } @@ -14929,6 +14969,13 @@ func (m *RpcAccountSelectRequest) GetPreferYamuxTransport() bool { return false } +func (m *RpcAccountSelectRequest) GetJsonApiListenAddr() string { + if m != nil { + return m.JsonApiListenAddr + } + return "" +} + // * // Middleware-to-front-end response for an account select request, that can contain a NULL error and selected account or a non-NULL error and an empty account type RpcAccountSelectResponse struct { @@ -16079,6 +16126,184 @@ func (m *RpcAccountEnableLocalNetworkSyncResponseError) GetDescription() string return "" } +type RpcAccountChangeJsonApiAddr struct { +} + +func (m *RpcAccountChangeJsonApiAddr) Reset() { *m = RpcAccountChangeJsonApiAddr{} } +func (m *RpcAccountChangeJsonApiAddr) String() string { return proto.CompactTextString(m) } +func (*RpcAccountChangeJsonApiAddr) ProtoMessage() {} +func (*RpcAccountChangeJsonApiAddr) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12} +} +func (m *RpcAccountChangeJsonApiAddr) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcAccountChangeJsonApiAddr) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcAccountChangeJsonApiAddr.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcAccountChangeJsonApiAddr) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcAccountChangeJsonApiAddr.Merge(m, src) +} +func (m *RpcAccountChangeJsonApiAddr) XXX_Size() int { + return m.Size() +} +func (m *RpcAccountChangeJsonApiAddr) XXX_DiscardUnknown() { + xxx_messageInfo_RpcAccountChangeJsonApiAddr.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcAccountChangeJsonApiAddr proto.InternalMessageInfo + +type RpcAccountChangeJsonApiAddrRequest struct { + ListenAddr string `protobuf:"bytes,1,opt,name=listenAddr,proto3" json:"listenAddr,omitempty"` +} + +func (m *RpcAccountChangeJsonApiAddrRequest) Reset() { *m = RpcAccountChangeJsonApiAddrRequest{} } +func (m *RpcAccountChangeJsonApiAddrRequest) String() string { return proto.CompactTextString(m) } +func (*RpcAccountChangeJsonApiAddrRequest) ProtoMessage() {} +func (*RpcAccountChangeJsonApiAddrRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12, 0} +} +func (m *RpcAccountChangeJsonApiAddrRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcAccountChangeJsonApiAddrRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcAccountChangeJsonApiAddrRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcAccountChangeJsonApiAddrRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcAccountChangeJsonApiAddrRequest.Merge(m, src) +} +func (m *RpcAccountChangeJsonApiAddrRequest) XXX_Size() int { + return m.Size() +} +func (m *RpcAccountChangeJsonApiAddrRequest) XXX_DiscardUnknown() { + xxx_messageInfo_RpcAccountChangeJsonApiAddrRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcAccountChangeJsonApiAddrRequest proto.InternalMessageInfo + +func (m *RpcAccountChangeJsonApiAddrRequest) GetListenAddr() string { + if m != nil { + return m.ListenAddr + } + return "" +} + +type RpcAccountChangeJsonApiAddrResponse struct { + Error *RpcAccountChangeJsonApiAddrResponseError `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"` +} + +func (m *RpcAccountChangeJsonApiAddrResponse) Reset() { *m = RpcAccountChangeJsonApiAddrResponse{} } +func (m *RpcAccountChangeJsonApiAddrResponse) String() string { return proto.CompactTextString(m) } +func (*RpcAccountChangeJsonApiAddrResponse) ProtoMessage() {} +func (*RpcAccountChangeJsonApiAddrResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12, 1} +} +func (m *RpcAccountChangeJsonApiAddrResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcAccountChangeJsonApiAddrResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcAccountChangeJsonApiAddrResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcAccountChangeJsonApiAddrResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcAccountChangeJsonApiAddrResponse.Merge(m, src) +} +func (m *RpcAccountChangeJsonApiAddrResponse) XXX_Size() int { + return m.Size() +} +func (m *RpcAccountChangeJsonApiAddrResponse) XXX_DiscardUnknown() { + xxx_messageInfo_RpcAccountChangeJsonApiAddrResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcAccountChangeJsonApiAddrResponse proto.InternalMessageInfo + +func (m *RpcAccountChangeJsonApiAddrResponse) GetError() *RpcAccountChangeJsonApiAddrResponseError { + if m != nil { + return m.Error + } + return nil +} + +type RpcAccountChangeJsonApiAddrResponseError struct { + Code RpcAccountChangeJsonApiAddrResponseErrorCode `protobuf:"varint,1,opt,name=code,proto3,enum=anytype.RpcAccountChangeJsonApiAddrResponseErrorCode" json:"code,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` +} + +func (m *RpcAccountChangeJsonApiAddrResponseError) Reset() { + *m = RpcAccountChangeJsonApiAddrResponseError{} +} +func (m *RpcAccountChangeJsonApiAddrResponseError) String() string { return proto.CompactTextString(m) } +func (*RpcAccountChangeJsonApiAddrResponseError) ProtoMessage() {} +func (*RpcAccountChangeJsonApiAddrResponseError) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12, 1, 0} +} +func (m *RpcAccountChangeJsonApiAddrResponseError) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcAccountChangeJsonApiAddrResponseError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcAccountChangeJsonApiAddrResponseError.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcAccountChangeJsonApiAddrResponseError) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcAccountChangeJsonApiAddrResponseError.Merge(m, src) +} +func (m *RpcAccountChangeJsonApiAddrResponseError) XXX_Size() int { + return m.Size() +} +func (m *RpcAccountChangeJsonApiAddrResponseError) XXX_DiscardUnknown() { + xxx_messageInfo_RpcAccountChangeJsonApiAddrResponseError.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcAccountChangeJsonApiAddrResponseError proto.InternalMessageInfo + +func (m *RpcAccountChangeJsonApiAddrResponseError) GetCode() RpcAccountChangeJsonApiAddrResponseErrorCode { + if m != nil { + return m.Code + } + return RpcAccountChangeJsonApiAddrResponseError_NULL +} + +func (m *RpcAccountChangeJsonApiAddrResponseError) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + type RpcAccountChangeNetworkConfigAndRestart struct { } @@ -16088,7 +16313,7 @@ func (m *RpcAccountChangeNetworkConfigAndRestart) Reset() { func (m *RpcAccountChangeNetworkConfigAndRestart) String() string { return proto.CompactTextString(m) } func (*RpcAccountChangeNetworkConfigAndRestart) ProtoMessage() {} func (*RpcAccountChangeNetworkConfigAndRestart) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13} } func (m *RpcAccountChangeNetworkConfigAndRestart) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16130,7 +16355,7 @@ func (m *RpcAccountChangeNetworkConfigAndRestartRequest) String() string { } func (*RpcAccountChangeNetworkConfigAndRestartRequest) ProtoMessage() {} func (*RpcAccountChangeNetworkConfigAndRestartRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 0} } func (m *RpcAccountChangeNetworkConfigAndRestartRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16185,7 +16410,7 @@ func (m *RpcAccountChangeNetworkConfigAndRestartResponse) String() string { } func (*RpcAccountChangeNetworkConfigAndRestartResponse) ProtoMessage() {} func (*RpcAccountChangeNetworkConfigAndRestartResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 1} } func (m *RpcAccountChangeNetworkConfigAndRestartResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16234,7 +16459,7 @@ func (m *RpcAccountChangeNetworkConfigAndRestartResponseError) String() string { } func (*RpcAccountChangeNetworkConfigAndRestartResponseError) ProtoMessage() {} func (*RpcAccountChangeNetworkConfigAndRestartResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 12, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 1, 0} } func (m *RpcAccountChangeNetworkConfigAndRestartResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16284,7 +16509,7 @@ func (m *RpcAccountLocalLink) Reset() { *m = RpcAccountLocalLink{} } func (m *RpcAccountLocalLink) String() string { return proto.CompactTextString(m) } func (*RpcAccountLocalLink) ProtoMessage() {} func (*RpcAccountLocalLink) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14} } func (m *RpcAccountLocalLink) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16320,7 +16545,7 @@ func (m *RpcAccountLocalLinkNewChallenge) Reset() { *m = RpcAccountLocal func (m *RpcAccountLocalLinkNewChallenge) String() string { return proto.CompactTextString(m) } func (*RpcAccountLocalLinkNewChallenge) ProtoMessage() {} func (*RpcAccountLocalLinkNewChallenge) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 0} } func (m *RpcAccountLocalLinkNewChallenge) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16350,7 +16575,8 @@ func (m *RpcAccountLocalLinkNewChallenge) XXX_DiscardUnknown() { var xxx_messageInfo_RpcAccountLocalLinkNewChallenge proto.InternalMessageInfo type RpcAccountLocalLinkNewChallengeRequest struct { - AppName string `protobuf:"bytes,1,opt,name=appName,proto3" json:"appName,omitempty"` + AppName string `protobuf:"bytes,1,opt,name=appName,proto3" json:"appName,omitempty"` + Scope model.AccountAuthLocalApiScope `protobuf:"varint,2,opt,name=scope,proto3,enum=anytype.model.AccountAuthLocalApiScope" json:"scope,omitempty"` } func (m *RpcAccountLocalLinkNewChallengeRequest) Reset() { @@ -16359,7 +16585,7 @@ func (m *RpcAccountLocalLinkNewChallengeRequest) Reset() { func (m *RpcAccountLocalLinkNewChallengeRequest) String() string { return proto.CompactTextString(m) } func (*RpcAccountLocalLinkNewChallengeRequest) ProtoMessage() {} func (*RpcAccountLocalLinkNewChallengeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 0, 0} } func (m *RpcAccountLocalLinkNewChallengeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16395,6 +16621,13 @@ func (m *RpcAccountLocalLinkNewChallengeRequest) GetAppName() string { return "" } +func (m *RpcAccountLocalLinkNewChallengeRequest) GetScope() model.AccountAuthLocalApiScope { + if m != nil { + return m.Scope + } + return model.AccountAuth_Limited +} + type RpcAccountLocalLinkNewChallengeResponse struct { Error *RpcAccountLocalLinkNewChallengeResponseError `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` ChallengeId string `protobuf:"bytes,2,opt,name=challengeId,proto3" json:"challengeId,omitempty"` @@ -16406,7 +16639,7 @@ func (m *RpcAccountLocalLinkNewChallengeResponse) Reset() { func (m *RpcAccountLocalLinkNewChallengeResponse) String() string { return proto.CompactTextString(m) } func (*RpcAccountLocalLinkNewChallengeResponse) ProtoMessage() {} func (*RpcAccountLocalLinkNewChallengeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 0, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 0, 1} } func (m *RpcAccountLocalLinkNewChallengeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16462,7 +16695,7 @@ func (m *RpcAccountLocalLinkNewChallengeResponseError) String() string { } func (*RpcAccountLocalLinkNewChallengeResponseError) ProtoMessage() {} func (*RpcAccountLocalLinkNewChallengeResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 0, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 0, 1, 0} } func (m *RpcAccountLocalLinkNewChallengeResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16512,7 +16745,7 @@ func (m *RpcAccountLocalLinkSolveChallenge) Reset() { *m = RpcAccountLoc func (m *RpcAccountLocalLinkSolveChallenge) String() string { return proto.CompactTextString(m) } func (*RpcAccountLocalLinkSolveChallenge) ProtoMessage() {} func (*RpcAccountLocalLinkSolveChallenge) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 1} } func (m *RpcAccountLocalLinkSolveChallenge) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16552,7 +16785,7 @@ func (m *RpcAccountLocalLinkSolveChallengeRequest) Reset() { func (m *RpcAccountLocalLinkSolveChallengeRequest) String() string { return proto.CompactTextString(m) } func (*RpcAccountLocalLinkSolveChallengeRequest) ProtoMessage() {} func (*RpcAccountLocalLinkSolveChallengeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 1, 0} } func (m *RpcAccountLocalLinkSolveChallengeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16609,7 +16842,7 @@ func (m *RpcAccountLocalLinkSolveChallengeResponse) String() string { } func (*RpcAccountLocalLinkSolveChallengeResponse) ProtoMessage() {} func (*RpcAccountLocalLinkSolveChallengeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 1, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 1, 1} } func (m *RpcAccountLocalLinkSolveChallengeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16672,7 +16905,7 @@ func (m *RpcAccountLocalLinkSolveChallengeResponseError) String() string { } func (*RpcAccountLocalLinkSolveChallengeResponseError) ProtoMessage() {} func (*RpcAccountLocalLinkSolveChallengeResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 13, 1, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 3, 14, 1, 1, 0} } func (m *RpcAccountLocalLinkSolveChallengeResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -29574,9 +29807,8 @@ type RpcObjectListExportRequest struct { // for migration IncludeArchived bool `protobuf:"varint,9,opt,name=includeArchived,proto3" json:"includeArchived,omitempty"` // for integrations like raycast and web publishing - NoProgress bool `protobuf:"varint,11,opt,name=noProgress,proto3" json:"noProgress,omitempty"` - // for web publising, just add details of dependent objects in result snapshot - IncludeDependentDetails bool `protobuf:"varint,12,opt,name=includeDependentDetails,proto3" json:"includeDependentDetails,omitempty"` + NoProgress bool `protobuf:"varint,11,opt,name=noProgress,proto3" json:"noProgress,omitempty"` + LinksStateFilters *RpcObjectListExportStateFilters `protobuf:"bytes,12,opt,name=linksStateFilters,proto3" json:"linksStateFilters,omitempty"` } func (m *RpcObjectListExportRequest) Reset() { *m = RpcObjectListExportRequest{} } @@ -29682,13 +29914,117 @@ func (m *RpcObjectListExportRequest) GetNoProgress() bool { return false } -func (m *RpcObjectListExportRequest) GetIncludeDependentDetails() bool { +func (m *RpcObjectListExportRequest) GetLinksStateFilters() *RpcObjectListExportStateFilters { if m != nil { - return m.IncludeDependentDetails + return m.LinksStateFilters + } + return nil +} + +type RpcObjectListExportStateFilters struct { + RelationsWhiteList []*RpcObjectListExportRelationsWhiteList `protobuf:"bytes,1,rep,name=relationsWhiteList,proto3" json:"relationsWhiteList,omitempty"` + RemoveBlocks bool `protobuf:"varint,2,opt,name=removeBlocks,proto3" json:"removeBlocks,omitempty"` +} + +func (m *RpcObjectListExportStateFilters) Reset() { *m = RpcObjectListExportStateFilters{} } +func (m *RpcObjectListExportStateFilters) String() string { return proto.CompactTextString(m) } +func (*RpcObjectListExportStateFilters) ProtoMessage() {} +func (*RpcObjectListExportStateFilters) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 6, 47, 1} +} +func (m *RpcObjectListExportStateFilters) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcObjectListExportStateFilters) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcObjectListExportStateFilters.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcObjectListExportStateFilters) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcObjectListExportStateFilters.Merge(m, src) +} +func (m *RpcObjectListExportStateFilters) XXX_Size() int { + return m.Size() +} +func (m *RpcObjectListExportStateFilters) XXX_DiscardUnknown() { + xxx_messageInfo_RpcObjectListExportStateFilters.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcObjectListExportStateFilters proto.InternalMessageInfo + +func (m *RpcObjectListExportStateFilters) GetRelationsWhiteList() []*RpcObjectListExportRelationsWhiteList { + if m != nil { + return m.RelationsWhiteList + } + return nil +} + +func (m *RpcObjectListExportStateFilters) GetRemoveBlocks() bool { + if m != nil { + return m.RemoveBlocks } return false } +type RpcObjectListExportRelationsWhiteList struct { + Layout model.ObjectTypeLayout `protobuf:"varint,1,opt,name=layout,proto3,enum=anytype.model.ObjectTypeLayout" json:"layout,omitempty"` + AllowedRelations []string `protobuf:"bytes,2,rep,name=allowedRelations,proto3" json:"allowedRelations,omitempty"` +} + +func (m *RpcObjectListExportRelationsWhiteList) Reset() { *m = RpcObjectListExportRelationsWhiteList{} } +func (m *RpcObjectListExportRelationsWhiteList) String() string { return proto.CompactTextString(m) } +func (*RpcObjectListExportRelationsWhiteList) ProtoMessage() {} +func (*RpcObjectListExportRelationsWhiteList) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 6, 47, 2} +} +func (m *RpcObjectListExportRelationsWhiteList) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcObjectListExportRelationsWhiteList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcObjectListExportRelationsWhiteList.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcObjectListExportRelationsWhiteList) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcObjectListExportRelationsWhiteList.Merge(m, src) +} +func (m *RpcObjectListExportRelationsWhiteList) XXX_Size() int { + return m.Size() +} +func (m *RpcObjectListExportRelationsWhiteList) XXX_DiscardUnknown() { + xxx_messageInfo_RpcObjectListExportRelationsWhiteList.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcObjectListExportRelationsWhiteList proto.InternalMessageInfo + +func (m *RpcObjectListExportRelationsWhiteList) GetLayout() model.ObjectTypeLayout { + if m != nil { + return m.Layout + } + return model.ObjectType_basic +} + +func (m *RpcObjectListExportRelationsWhiteList) GetAllowedRelations() []string { + if m != nil { + return m.AllowedRelations + } + return nil +} + type RpcObjectListExportResponse struct { Error *RpcObjectListExportResponseError `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` @@ -29700,7 +30036,7 @@ func (m *RpcObjectListExportResponse) Reset() { *m = RpcObjectListExport func (m *RpcObjectListExportResponse) String() string { return proto.CompactTextString(m) } func (*RpcObjectListExportResponse) ProtoMessage() {} func (*RpcObjectListExportResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 6, 47, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 6, 47, 3} } func (m *RpcObjectListExportResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -29766,7 +30102,7 @@ func (m *RpcObjectListExportResponseError) Reset() { *m = RpcObjectListE func (m *RpcObjectListExportResponseError) String() string { return proto.CompactTextString(m) } func (*RpcObjectListExportResponseError) ProtoMessage() {} func (*RpcObjectListExportResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 6, 47, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 6, 47, 3, 0} } func (m *RpcObjectListExportResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -70608,6 +70944,7 @@ func init() { proto.RegisterEnum("anytype.RpcAccountConfigUpdateResponseErrorCode", RpcAccountConfigUpdateResponseErrorCode_name, RpcAccountConfigUpdateResponseErrorCode_value) proto.RegisterEnum("anytype.RpcAccountRecoverFromLegacyExportResponseErrorCode", RpcAccountRecoverFromLegacyExportResponseErrorCode_name, RpcAccountRecoverFromLegacyExportResponseErrorCode_value) proto.RegisterEnum("anytype.RpcAccountEnableLocalNetworkSyncResponseErrorCode", RpcAccountEnableLocalNetworkSyncResponseErrorCode_name, RpcAccountEnableLocalNetworkSyncResponseErrorCode_value) + proto.RegisterEnum("anytype.RpcAccountChangeJsonApiAddrResponseErrorCode", RpcAccountChangeJsonApiAddrResponseErrorCode_name, RpcAccountChangeJsonApiAddrResponseErrorCode_value) proto.RegisterEnum("anytype.RpcAccountChangeNetworkConfigAndRestartResponseErrorCode", RpcAccountChangeNetworkConfigAndRestartResponseErrorCode_name, RpcAccountChangeNetworkConfigAndRestartResponseErrorCode_value) proto.RegisterEnum("anytype.RpcAccountLocalLinkNewChallengeResponseErrorCode", RpcAccountLocalLinkNewChallengeResponseErrorCode_name, RpcAccountLocalLinkNewChallengeResponseErrorCode_value) proto.RegisterEnum("anytype.RpcAccountLocalLinkSolveChallengeResponseErrorCode", RpcAccountLocalLinkSolveChallengeResponseErrorCode_name, RpcAccountLocalLinkSolveChallengeResponseErrorCode_value) @@ -71015,6 +71352,10 @@ func init() { proto.RegisterType((*RpcAccountEnableLocalNetworkSyncRequest)(nil), "anytype.Rpc.Account.EnableLocalNetworkSync.Request") proto.RegisterType((*RpcAccountEnableLocalNetworkSyncResponse)(nil), "anytype.Rpc.Account.EnableLocalNetworkSync.Response") proto.RegisterType((*RpcAccountEnableLocalNetworkSyncResponseError)(nil), "anytype.Rpc.Account.EnableLocalNetworkSync.Response.Error") + proto.RegisterType((*RpcAccountChangeJsonApiAddr)(nil), "anytype.Rpc.Account.ChangeJsonApiAddr") + proto.RegisterType((*RpcAccountChangeJsonApiAddrRequest)(nil), "anytype.Rpc.Account.ChangeJsonApiAddr.Request") + proto.RegisterType((*RpcAccountChangeJsonApiAddrResponse)(nil), "anytype.Rpc.Account.ChangeJsonApiAddr.Response") + proto.RegisterType((*RpcAccountChangeJsonApiAddrResponseError)(nil), "anytype.Rpc.Account.ChangeJsonApiAddr.Response.Error") proto.RegisterType((*RpcAccountChangeNetworkConfigAndRestart)(nil), "anytype.Rpc.Account.ChangeNetworkConfigAndRestart") proto.RegisterType((*RpcAccountChangeNetworkConfigAndRestartRequest)(nil), "anytype.Rpc.Account.ChangeNetworkConfigAndRestart.Request") proto.RegisterType((*RpcAccountChangeNetworkConfigAndRestartResponse)(nil), "anytype.Rpc.Account.ChangeNetworkConfigAndRestart.Response") @@ -71282,6 +71623,8 @@ func init() { proto.RegisterType((*RpcObjectApplyTemplateResponseError)(nil), "anytype.Rpc.Object.ApplyTemplate.Response.Error") proto.RegisterType((*RpcObjectListExport)(nil), "anytype.Rpc.Object.ListExport") proto.RegisterType((*RpcObjectListExportRequest)(nil), "anytype.Rpc.Object.ListExport.Request") + proto.RegisterType((*RpcObjectListExportStateFilters)(nil), "anytype.Rpc.Object.ListExport.StateFilters") + proto.RegisterType((*RpcObjectListExportRelationsWhiteList)(nil), "anytype.Rpc.Object.ListExport.RelationsWhiteList") proto.RegisterType((*RpcObjectListExportResponse)(nil), "anytype.Rpc.Object.ListExport.Response") proto.RegisterType((*RpcObjectListExportResponseError)(nil), "anytype.Rpc.Object.ListExport.Response.Error") proto.RegisterType((*RpcObjectImport)(nil), "anytype.Rpc.Object.Import") @@ -72102,1233 +72445,1245 @@ func init() { func init() { proto.RegisterFile("pb/protos/commands.proto", fileDescriptor_8261c968b2e6f45c) } var fileDescriptor_8261c968b2e6f45c = []byte{ - // 19614 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x7d, 0x98, 0x23, 0x47, - 0x79, 0x2f, 0xba, 0xea, 0x96, 0x34, 0x33, 0xef, 0x7c, 0xac, 0xb6, 0xbd, 0xbb, 0x5e, 0x97, 0xcd, - 0x7a, 0xb3, 0x36, 0xc6, 0x31, 0x66, 0x6c, 0x0c, 0x21, 0xd8, 0xd8, 0xd8, 0x1a, 0x8d, 0x66, 0x46, - 0xf6, 0x8c, 0x34, 0x69, 0x69, 0x76, 0x71, 0x72, 0x72, 0x75, 0x7a, 0xa5, 0x9a, 0x99, 0xf6, 0x6a, - 0xba, 0x95, 0xee, 0x9e, 0x59, 0x2f, 0xf7, 0x39, 0xf7, 0x84, 0x10, 0x07, 0x12, 0x42, 0xc8, 0x17, - 0x49, 0x08, 0xdf, 0x06, 0xc3, 0x81, 0x04, 0x08, 0xdf, 0x07, 0x92, 0x00, 0xe1, 0x23, 0x10, 0x42, - 0x08, 0x81, 0x10, 0x08, 0x09, 0x37, 0x10, 0x08, 0x21, 0xe7, 0x09, 0x87, 0x9b, 0xdc, 0x13, 0x08, - 0x09, 0x5c, 0xee, 0xd3, 0x55, 0xd5, 0x1f, 0xa5, 0x51, 0xb7, 0xaa, 0x35, 0x6a, 0x8d, 0x09, 0xe7, - 0xbf, 0xee, 0xea, 0xea, 0xb7, 0xde, 0x7a, 0x7f, 0x6f, 0x55, 0xbd, 0x55, 0xf5, 0xd6, 0x5b, 0x70, - 0xaa, 0x7b, 0xe1, 0x96, 0xae, 0x65, 0x3a, 0xa6, 0x7d, 0x4b, 0xcb, 0xdc, 0xd9, 0xd1, 0x8c, 0xb6, - 0x3d, 0x4f, 0xde, 0x95, 0x09, 0xcd, 0xb8, 0xec, 0x5c, 0xee, 0x62, 0x74, 0x7d, 0xf7, 0xe2, 0xd6, - 0x2d, 0x1d, 0xfd, 0xc2, 0x2d, 0xdd, 0x0b, 0xb7, 0xec, 0x98, 0x6d, 0xdc, 0xf1, 0x7e, 0x20, 0x2f, - 0x2c, 0x3b, 0xba, 0x31, 0x2a, 0x57, 0xc7, 0x6c, 0x69, 0x1d, 0xdb, 0x31, 0x2d, 0xcc, 0x72, 0x9e, - 0x0c, 0x8a, 0xc4, 0x7b, 0xd8, 0x70, 0x3c, 0x0a, 0xd7, 0x6c, 0x99, 0xe6, 0x56, 0x07, 0xd3, 0x6f, - 0x17, 0x76, 0x37, 0x6f, 0xb1, 0x1d, 0x6b, 0xb7, 0xe5, 0xb0, 0xaf, 0x67, 0x7a, 0xbf, 0xb6, 0xb1, - 0xdd, 0xb2, 0xf4, 0xae, 0x63, 0x5a, 0x34, 0xc7, 0xd9, 0x9f, 0xfc, 0x85, 0x49, 0x90, 0xd5, 0x6e, - 0x0b, 0x7d, 0x63, 0x02, 0xe4, 0x62, 0xb7, 0x8b, 0x3e, 0x24, 0x01, 0x2c, 0x63, 0xe7, 0x1c, 0xb6, - 0x6c, 0xdd, 0x34, 0xd0, 0x51, 0x98, 0x50, 0xf1, 0x4f, 0xec, 0x62, 0xdb, 0xb9, 0x23, 0xfb, 0xdc, - 0xaf, 0xc8, 0x19, 0xf4, 0x88, 0x04, 0x93, 0x2a, 0xb6, 0xbb, 0xa6, 0x61, 0x63, 0xe5, 0x1e, 0xc8, - 0x61, 0xcb, 0x32, 0xad, 0x53, 0x99, 0x33, 0x99, 0x1b, 0xa7, 0x6f, 0xbb, 0x69, 0x9e, 0x55, 0x7f, - 0x5e, 0xed, 0xb6, 0xe6, 0x8b, 0xdd, 0xee, 0x7c, 0x40, 0x69, 0xde, 0xfb, 0x69, 0xbe, 0xec, 0xfe, - 0xa1, 0xd2, 0x1f, 0x95, 0x53, 0x30, 0xb1, 0x47, 0x33, 0x9c, 0x92, 0xce, 0x64, 0x6e, 0x9c, 0x52, - 0xbd, 0x57, 0xf7, 0x4b, 0x1b, 0x3b, 0x9a, 0xde, 0xb1, 0x4f, 0xc9, 0xf4, 0x0b, 0x7b, 0x45, 0x0f, - 0x67, 0x20, 0x47, 0x88, 0x28, 0x25, 0xc8, 0xb6, 0xcc, 0x36, 0x26, 0xc5, 0xcf, 0xdd, 0x76, 0x8b, - 0x78, 0xf1, 0xf3, 0x25, 0xb3, 0x8d, 0x55, 0xf2, 0xb3, 0x72, 0x06, 0xa6, 0x3d, 0xb1, 0x04, 0x6c, - 0x84, 0x93, 0xce, 0xde, 0x06, 0x59, 0x37, 0xbf, 0x32, 0x09, 0xd9, 0xea, 0xc6, 0xea, 0x6a, 0xe1, - 0x88, 0x72, 0x0c, 0x66, 0x37, 0xaa, 0xf7, 0x55, 0x6b, 0xe7, 0xab, 0xcd, 0xb2, 0xaa, 0xd6, 0xd4, - 0x42, 0x46, 0x99, 0x85, 0xa9, 0x85, 0xe2, 0x62, 0xb3, 0x52, 0x5d, 0xdf, 0x68, 0x14, 0x24, 0xf4, - 0x32, 0x19, 0xe6, 0xea, 0xd8, 0x59, 0xc4, 0x7b, 0x7a, 0x0b, 0xd7, 0x1d, 0xcd, 0xc1, 0xe8, 0x05, - 0x19, 0x5f, 0x98, 0xca, 0x86, 0x5b, 0xa8, 0xff, 0x89, 0x55, 0xe0, 0x49, 0xfb, 0x2a, 0xc0, 0x53, - 0x98, 0x67, 0x7f, 0xcf, 0x87, 0xd2, 0xd4, 0x30, 0x9d, 0xb3, 0x4f, 0x80, 0xe9, 0xd0, 0x37, 0x65, - 0x0e, 0x60, 0xa1, 0x58, 0xba, 0x6f, 0x59, 0xad, 0x6d, 0x54, 0x17, 0x0b, 0x47, 0xdc, 0xf7, 0xa5, - 0x9a, 0x5a, 0x66, 0xef, 0x19, 0xf4, 0xad, 0x4c, 0x08, 0xcc, 0x45, 0x1e, 0xcc, 0xf9, 0xc1, 0xcc, - 0xf4, 0x01, 0x14, 0xbd, 0xc6, 0x07, 0x67, 0x99, 0x03, 0xe7, 0x49, 0xc9, 0xc8, 0xa5, 0x0f, 0xd0, - 0x43, 0x12, 0x4c, 0xd6, 0xb7, 0x77, 0x9d, 0xb6, 0x79, 0xc9, 0x40, 0x53, 0x3e, 0x32, 0xe8, 0x6b, - 0x61, 0x99, 0x3c, 0x9d, 0x97, 0xc9, 0x8d, 0xfb, 0x2b, 0xc1, 0x28, 0x44, 0x48, 0xe3, 0x15, 0xbe, - 0x34, 0x8a, 0x9c, 0x34, 0x9e, 0x20, 0x4a, 0x28, 0x7d, 0x39, 0xfc, 0xe6, 0x53, 0x21, 0x57, 0xef, - 0x6a, 0x2d, 0x8c, 0x3e, 0x26, 0xc3, 0xcc, 0x2a, 0xd6, 0xf6, 0x70, 0xb1, 0xdb, 0xb5, 0xcc, 0x3d, - 0x8c, 0x4a, 0x81, 0xbe, 0x9e, 0x82, 0x09, 0xdb, 0xcd, 0x54, 0x69, 0x93, 0x1a, 0x4c, 0xa9, 0xde, - 0xab, 0x72, 0x1a, 0x40, 0x6f, 0x63, 0xc3, 0xd1, 0x1d, 0x1d, 0xdb, 0xa7, 0xa4, 0x33, 0xf2, 0x8d, - 0x53, 0x6a, 0x28, 0x05, 0x7d, 0x43, 0x12, 0xd5, 0x31, 0xc2, 0xc5, 0x7c, 0x98, 0x83, 0x08, 0xa9, - 0xbe, 0x4a, 0x12, 0xd1, 0xb1, 0x81, 0xe4, 0x92, 0xc9, 0xf6, 0x8d, 0x99, 0xe4, 0xc2, 0x75, 0x73, - 0x54, 0x6b, 0xcd, 0xfa, 0x46, 0x69, 0xa5, 0x59, 0x5f, 0x2f, 0x96, 0xca, 0x05, 0xac, 0x1c, 0x87, - 0x02, 0x79, 0x6c, 0x56, 0xea, 0xcd, 0xc5, 0xf2, 0x6a, 0xb9, 0x51, 0x5e, 0x2c, 0x6c, 0x2a, 0x0a, - 0xcc, 0xa9, 0xe5, 0x1f, 0xd9, 0x28, 0xd7, 0x1b, 0xcd, 0xa5, 0x62, 0x65, 0xb5, 0xbc, 0x58, 0xd8, - 0x72, 0x7f, 0x5e, 0xad, 0xac, 0x55, 0x1a, 0x4d, 0xb5, 0x5c, 0x2c, 0xad, 0x94, 0x17, 0x0b, 0xdb, - 0xca, 0x95, 0x70, 0x45, 0xb5, 0xd6, 0x2c, 0xae, 0xaf, 0xab, 0xb5, 0x73, 0xe5, 0x26, 0xfb, 0xa3, - 0x5e, 0xd0, 0x69, 0x41, 0x8d, 0x66, 0x7d, 0xa5, 0xa8, 0x96, 0x8b, 0x0b, 0xab, 0xe5, 0xc2, 0x03, - 0xe8, 0xd9, 0x32, 0xcc, 0xae, 0x69, 0x17, 0x71, 0x7d, 0x5b, 0xb3, 0xb0, 0x76, 0xa1, 0x83, 0xd1, - 0x75, 0x02, 0x78, 0xa2, 0x8f, 0x85, 0xf1, 0x2a, 0xf3, 0x78, 0xdd, 0xd2, 0x47, 0xc0, 0x5c, 0x11, - 0x11, 0x80, 0xfd, 0xab, 0xdf, 0x0c, 0x56, 0x38, 0xc0, 0x9e, 0x9c, 0x90, 0x5e, 0x32, 0xc4, 0x7e, - 0xea, 0x51, 0x80, 0x18, 0xfa, 0xbc, 0x0c, 0x73, 0x15, 0x63, 0x4f, 0x77, 0xf0, 0x32, 0x36, 0xb0, - 0xe5, 0x8e, 0x03, 0x42, 0x30, 0x3c, 0x22, 0x87, 0x60, 0x58, 0xe2, 0x61, 0xb8, 0xb5, 0x8f, 0xd8, - 0xf8, 0x32, 0x22, 0x46, 0xdb, 0x6b, 0x60, 0x4a, 0x27, 0xf9, 0x4a, 0x7a, 0x9b, 0x49, 0x2c, 0x48, - 0x50, 0xae, 0x87, 0x59, 0xfa, 0xb2, 0xa4, 0x77, 0xf0, 0x7d, 0xf8, 0x32, 0x1b, 0x77, 0xf9, 0x44, - 0xf4, 0xf3, 0x7e, 0xe3, 0xab, 0x70, 0x58, 0xfe, 0x50, 0x52, 0xa6, 0x92, 0x81, 0xf9, 0xc2, 0x47, - 0x43, 0xf3, 0xdb, 0xd7, 0xca, 0x74, 0xf4, 0x1d, 0x09, 0xa6, 0xeb, 0x8e, 0xd9, 0x75, 0x55, 0x56, - 0x37, 0xb6, 0xc4, 0xc0, 0xfd, 0x48, 0xb8, 0x8d, 0x95, 0x78, 0x70, 0x9f, 0xd0, 0x47, 0x8e, 0xa1, - 0x02, 0x22, 0x5a, 0xd8, 0x37, 0xfc, 0x16, 0xb6, 0xc4, 0xa1, 0x72, 0x5b, 0x22, 0x6a, 0xdf, 0x83, - 0xed, 0xeb, 0x85, 0x32, 0x14, 0x3c, 0x35, 0x73, 0x4a, 0xbb, 0x96, 0x85, 0x0d, 0x47, 0x0c, 0x84, - 0xbf, 0x0a, 0x83, 0xb0, 0xc2, 0x83, 0x70, 0x5b, 0x8c, 0x32, 0x7b, 0xa5, 0xa4, 0xd8, 0xc6, 0xde, - 0xe7, 0xa3, 0x79, 0x1f, 0x87, 0xe6, 0x0f, 0x27, 0x67, 0x2b, 0x19, 0xa4, 0x2b, 0x43, 0x20, 0x7a, - 0x1c, 0x0a, 0xee, 0x98, 0x54, 0x6a, 0x54, 0xce, 0x95, 0x9b, 0x95, 0xea, 0xb9, 0x4a, 0xa3, 0x5c, - 0xc0, 0xe8, 0x57, 0x64, 0x98, 0xa1, 0xac, 0xa9, 0x78, 0xcf, 0xbc, 0x28, 0xd8, 0xeb, 0x7d, 0x3e, - 0xa1, 0xb1, 0x10, 0x2e, 0x21, 0xa2, 0x65, 0xfc, 0x5c, 0x02, 0x63, 0x21, 0x86, 0xdc, 0xa3, 0xa9, - 0xb7, 0xda, 0xd7, 0x0c, 0xb6, 0xfa, 0xb4, 0x96, 0xbe, 0xbd, 0xd5, 0x0b, 0xb3, 0x00, 0xb4, 0x92, - 0xe7, 0x74, 0x7c, 0x09, 0xad, 0x05, 0x98, 0x70, 0x6a, 0x9b, 0x19, 0xa8, 0xb6, 0x52, 0x3f, 0xb5, - 0x7d, 0x67, 0x78, 0xcc, 0x5a, 0xe0, 0xd1, 0xbb, 0x39, 0x52, 0xdc, 0x2e, 0x27, 0xd1, 0xb3, 0x43, - 0x4f, 0x51, 0x24, 0xde, 0xea, 0xbc, 0x06, 0xa6, 0xc8, 0x63, 0x55, 0xdb, 0xc1, 0xac, 0x0d, 0x05, - 0x09, 0xca, 0x59, 0x98, 0xa1, 0x19, 0x5b, 0xa6, 0xe1, 0xd6, 0x27, 0x4b, 0x32, 0x70, 0x69, 0x2e, - 0x88, 0x2d, 0x0b, 0x6b, 0x8e, 0x69, 0x11, 0x1a, 0x39, 0x0a, 0x62, 0x28, 0x09, 0x7d, 0xd5, 0x6f, - 0x85, 0x65, 0x4e, 0x73, 0x9e, 0x98, 0xa4, 0x2a, 0xc9, 0xf4, 0x66, 0x6f, 0xb8, 0xf6, 0x47, 0x5b, - 0x5d, 0xd3, 0x45, 0x7b, 0x89, 0x4c, 0xed, 0xb0, 0x72, 0x12, 0x14, 0x96, 0xea, 0xe6, 0x2d, 0xd5, - 0xaa, 0x8d, 0x72, 0xb5, 0x51, 0xd8, 0xec, 0xab, 0x51, 0x5b, 0xe8, 0x55, 0x59, 0xc8, 0xde, 0x6b, - 0xea, 0x06, 0x7a, 0x28, 0xc3, 0xa9, 0x84, 0x81, 0x9d, 0x4b, 0xa6, 0x75, 0xd1, 0x6f, 0xa8, 0x41, - 0x42, 0x3c, 0x36, 0x81, 0x2a, 0xc9, 0x03, 0x55, 0x29, 0xdb, 0x4f, 0x95, 0x7e, 0x39, 0xac, 0x4a, - 0x77, 0xf2, 0xaa, 0x74, 0x43, 0x1f, 0xf9, 0xbb, 0xcc, 0x47, 0x74, 0x00, 0x1f, 0xf6, 0x3b, 0x80, - 0xbb, 0x39, 0x18, 0x1f, 0x2f, 0x46, 0x26, 0x19, 0x80, 0x9f, 0x4b, 0xb5, 0xe1, 0xf7, 0x83, 0x7a, - 0x2b, 0x02, 0xea, 0xed, 0x3e, 0x7d, 0x82, 0xbe, 0xbf, 0xeb, 0x78, 0x60, 0x7f, 0x37, 0x71, 0x51, - 0x39, 0x01, 0xc7, 0x16, 0x2b, 0x4b, 0x4b, 0x65, 0xb5, 0x5c, 0x6d, 0x34, 0xab, 0xe5, 0xc6, 0xf9, - 0x9a, 0x7a, 0x5f, 0xa1, 0x83, 0x1e, 0x96, 0x01, 0x5c, 0x09, 0x95, 0x34, 0xa3, 0x85, 0x3b, 0x62, - 0x3d, 0xfa, 0xff, 0x94, 0x92, 0xf5, 0x09, 0x01, 0xfd, 0x08, 0x38, 0x5f, 0x2a, 0x89, 0xb7, 0xca, - 0x48, 0x62, 0xc9, 0x40, 0x7d, 0xfd, 0xa3, 0xc1, 0xf6, 0xbc, 0x02, 0x8e, 0x7a, 0xf4, 0x58, 0xf6, - 0xfe, 0xd3, 0xbe, 0x37, 0x65, 0x61, 0x8e, 0xc1, 0xe2, 0xcd, 0xe3, 0x9f, 0x9b, 0x11, 0x99, 0xc8, - 0x23, 0x98, 0x64, 0xd3, 0x76, 0xaf, 0x7b, 0xf7, 0xdf, 0x95, 0x65, 0x98, 0xee, 0x62, 0x6b, 0x47, - 0xb7, 0x6d, 0xdd, 0x34, 0xe8, 0x82, 0xdc, 0xdc, 0x6d, 0x8f, 0xf5, 0x25, 0x4e, 0xd6, 0x2e, 0xe7, - 0xd7, 0x35, 0xcb, 0xd1, 0x5b, 0x7a, 0x57, 0x33, 0x9c, 0xf5, 0x20, 0xb3, 0x1a, 0xfe, 0x13, 0xfd, - 0x52, 0xc2, 0x69, 0x0d, 0x5f, 0x93, 0x08, 0x95, 0xf8, 0xbd, 0x04, 0x53, 0x92, 0x58, 0x82, 0xc9, - 0xd4, 0xe2, 0x43, 0xa9, 0xaa, 0x45, 0x1f, 0xbc, 0xb7, 0x94, 0xab, 0xe0, 0x44, 0xa5, 0x5a, 0xaa, - 0xa9, 0x6a, 0xb9, 0xd4, 0x68, 0xae, 0x97, 0xd5, 0xb5, 0x4a, 0xbd, 0x5e, 0xa9, 0x55, 0xeb, 0x07, - 0x69, 0xed, 0xe8, 0xa3, 0xb2, 0xaf, 0x31, 0x8b, 0xb8, 0xd5, 0xd1, 0x0d, 0x8c, 0xee, 0x3e, 0xa0, - 0xc2, 0xf0, 0xab, 0x3e, 0xe2, 0x38, 0xb3, 0xf2, 0x23, 0x70, 0x7e, 0x65, 0x72, 0x9c, 0xfb, 0x13, - 0xfc, 0x0f, 0xdc, 0xfc, 0x3f, 0x2f, 0xc3, 0xb1, 0x50, 0x43, 0x54, 0xf1, 0xce, 0xc8, 0x56, 0xf2, - 0x7e, 0x2a, 0xdc, 0x76, 0x2b, 0x3c, 0xa6, 0xfd, 0xac, 0xe9, 0x7d, 0x6c, 0x44, 0xc0, 0xfa, 0x7a, - 0x1f, 0xd6, 0x55, 0x0e, 0xd6, 0xa7, 0x0e, 0x41, 0x33, 0x19, 0xb2, 0xbf, 0x93, 0x2a, 0xb2, 0x57, - 0xc1, 0x89, 0xf5, 0xa2, 0xda, 0xa8, 0x94, 0x2a, 0xeb, 0x45, 0x77, 0x1c, 0x0d, 0x0d, 0xd9, 0x11, - 0xe6, 0x3a, 0x0f, 0x7a, 0x5f, 0x7c, 0xdf, 0x9b, 0x85, 0x6b, 0xfa, 0x77, 0xb4, 0xa5, 0x6d, 0xcd, - 0xd8, 0xc2, 0x48, 0x17, 0x81, 0x7a, 0x11, 0x26, 0x5a, 0x24, 0x3b, 0xc5, 0x39, 0xbc, 0x75, 0x13, - 0xd3, 0x97, 0xd3, 0x12, 0x54, 0xef, 0x57, 0xf4, 0xd6, 0xb0, 0x42, 0x34, 0x78, 0x85, 0x78, 0x7a, - 0x3c, 0x78, 0xfb, 0xf8, 0x8e, 0xd0, 0x8d, 0x4f, 0xf8, 0xba, 0x71, 0x9e, 0xd3, 0x8d, 0xd2, 0xc1, - 0xc8, 0x27, 0x53, 0x93, 0x3f, 0x7e, 0x34, 0x74, 0x00, 0x91, 0xda, 0xa4, 0x47, 0x8f, 0x0a, 0x7d, - 0xbb, 0xfb, 0x97, 0xcb, 0x90, 0x5f, 0xc4, 0x1d, 0x2c, 0xba, 0x12, 0xf9, 0x75, 0x49, 0x74, 0x43, - 0x84, 0xc2, 0x40, 0x69, 0x47, 0xaf, 0x8e, 0x38, 0xfa, 0x0e, 0xb6, 0x1d, 0x6d, 0xa7, 0x4b, 0x44, - 0x2d, 0xab, 0x41, 0x02, 0xfa, 0x69, 0x49, 0x64, 0xbb, 0x24, 0xa6, 0x98, 0xff, 0x18, 0x6b, 0x8a, - 0x9f, 0x92, 0x60, 0xb2, 0x8e, 0x9d, 0x9a, 0xd5, 0xc6, 0x16, 0xaa, 0x07, 0x18, 0x9d, 0x81, 0x69, - 0x02, 0x8a, 0x3b, 0xcd, 0xf4, 0x71, 0x0a, 0x27, 0x29, 0x37, 0xc0, 0x9c, 0xff, 0x4a, 0x7e, 0x67, - 0xdd, 0x78, 0x4f, 0x2a, 0xfa, 0xa7, 0x8c, 0xe8, 0x2e, 0x2e, 0x5b, 0x32, 0x64, 0xdc, 0x44, 0xb4, - 0x52, 0xb1, 0x1d, 0xd9, 0x58, 0x52, 0xe9, 0x6f, 0x74, 0xbd, 0x59, 0x02, 0xd8, 0x30, 0x6c, 0x4f, - 0xae, 0x8f, 0x4f, 0x20, 0x57, 0xf4, 0x2f, 0x99, 0x64, 0xb3, 0x98, 0xa0, 0x9c, 0x08, 0x89, 0xbd, - 0x3a, 0xc1, 0xda, 0x42, 0x24, 0xb1, 0xf4, 0x65, 0xf6, 0xa5, 0x39, 0xc8, 0x9f, 0xd7, 0x3a, 0x1d, - 0xec, 0xa0, 0x2f, 0x4b, 0x90, 0x2f, 0x59, 0x58, 0x73, 0x70, 0x58, 0x74, 0x08, 0x26, 0x2d, 0xd3, - 0x74, 0xd6, 0x35, 0x67, 0x9b, 0xc9, 0xcd, 0x7f, 0x67, 0x0e, 0x03, 0xbf, 0x1d, 0xee, 0x3e, 0xee, - 0xe6, 0x45, 0xf7, 0x83, 0x5c, 0x6d, 0x69, 0x41, 0xf3, 0xb4, 0x90, 0x88, 0xfe, 0x03, 0xc1, 0xe4, - 0x8e, 0x81, 0x77, 0x4c, 0x43, 0x6f, 0x79, 0x36, 0xa7, 0xf7, 0x8e, 0xde, 0xef, 0xcb, 0x74, 0x81, - 0x93, 0xe9, 0xbc, 0x70, 0x29, 0xc9, 0x04, 0x5a, 0x1f, 0xa2, 0xf7, 0xb8, 0x16, 0xae, 0xa6, 0x9d, - 0x41, 0xb3, 0x51, 0x6b, 0x96, 0xd4, 0x72, 0xb1, 0x51, 0x6e, 0xae, 0xd6, 0x4a, 0xc5, 0xd5, 0xa6, - 0x5a, 0x5e, 0xaf, 0x15, 0x30, 0xfa, 0x7b, 0xc9, 0x15, 0x6e, 0xcb, 0xdc, 0xc3, 0x16, 0x5a, 0x16, - 0x92, 0x73, 0x9c, 0x4c, 0x18, 0x06, 0xbf, 0x2c, 0xec, 0xb4, 0xc1, 0xa4, 0xc3, 0x38, 0x88, 0x50, - 0xde, 0x0f, 0x08, 0x35, 0xf7, 0x58, 0x52, 0x8f, 0x02, 0x49, 0xff, 0x2f, 0x09, 0x26, 0x4a, 0xa6, - 0xb1, 0x87, 0x2d, 0x27, 0x3c, 0xdf, 0x09, 0x4b, 0x33, 0xc3, 0x4b, 0xd3, 0x1d, 0x24, 0xb1, 0xe1, - 0x58, 0x66, 0xd7, 0x9b, 0xf0, 0x78, 0xaf, 0xe8, 0xb5, 0x49, 0x25, 0xcc, 0x4a, 0x8e, 0x5e, 0xf8, - 0xec, 0x5f, 0x10, 0xc7, 0x9e, 0xdc, 0xd3, 0x00, 0x1e, 0x4e, 0x82, 0x4b, 0x7f, 0x06, 0xd2, 0xef, - 0x52, 0xbe, 0x20, 0xc3, 0x2c, 0x6d, 0x7c, 0x75, 0x4c, 0x2c, 0x34, 0x54, 0x0b, 0x2f, 0x39, 0xf6, - 0x08, 0x7f, 0xe5, 0x08, 0x27, 0xfe, 0xbc, 0xd6, 0xed, 0xfa, 0xcb, 0xcf, 0x2b, 0x47, 0x54, 0xf6, - 0x4e, 0xd5, 0x7c, 0x21, 0x0f, 0x59, 0x6d, 0xd7, 0xd9, 0x46, 0xdf, 0x11, 0x9e, 0x7c, 0x72, 0x9d, - 0x01, 0xe3, 0x27, 0x02, 0x92, 0xe3, 0x90, 0x73, 0xcc, 0x8b, 0xd8, 0x93, 0x03, 0x7d, 0x71, 0xe1, - 0xd0, 0xba, 0xdd, 0x06, 0xf9, 0xc0, 0xe0, 0xf0, 0xde, 0x5d, 0x5b, 0x47, 0x6b, 0xb5, 0xcc, 0x5d, - 0xc3, 0xa9, 0x78, 0x4b, 0xd0, 0x41, 0x02, 0xfa, 0x6c, 0x46, 0x64, 0x32, 0x2b, 0xc0, 0x60, 0x32, - 0xc8, 0x2e, 0x0c, 0xd1, 0x94, 0xe6, 0xe1, 0xa6, 0xe2, 0xfa, 0x7a, 0xb3, 0x51, 0xbb, 0xaf, 0x5c, - 0x0d, 0x0c, 0xcf, 0x66, 0xa5, 0xda, 0x6c, 0xac, 0x94, 0x9b, 0xa5, 0x0d, 0x95, 0xac, 0x13, 0x16, - 0x4b, 0xa5, 0xda, 0x46, 0xb5, 0x51, 0xc0, 0xe8, 0x0d, 0x12, 0xcc, 0x94, 0x3a, 0xa6, 0xed, 0x23, - 0x7c, 0x6d, 0x80, 0xb0, 0x2f, 0xc6, 0x4c, 0x48, 0x8c, 0xe8, 0xdf, 0x33, 0xa2, 0x4e, 0x07, 0x9e, - 0x40, 0x42, 0xe4, 0x23, 0x7a, 0xa9, 0xd7, 0x0a, 0x39, 0x1d, 0x0c, 0xa6, 0x97, 0x7e, 0x93, 0xf8, - 0xd4, 0x1d, 0x30, 0x51, 0xa4, 0x8a, 0x81, 0xfe, 0x26, 0x03, 0xf9, 0x92, 0x69, 0x6c, 0xea, 0x5b, - 0xae, 0x31, 0x87, 0x0d, 0xed, 0x42, 0x07, 0x2f, 0x6a, 0x8e, 0xb6, 0xa7, 0xe3, 0x4b, 0xa4, 0x02, - 0x93, 0x6a, 0x4f, 0xaa, 0xcb, 0x14, 0x4b, 0xc1, 0x17, 0x76, 0xb7, 0x08, 0x53, 0x93, 0x6a, 0x38, - 0x49, 0x79, 0x2a, 0x5c, 0x49, 0x5f, 0xd7, 0x2d, 0x6c, 0xe1, 0x0e, 0xd6, 0x6c, 0xec, 0x4e, 0x8b, - 0x0c, 0xdc, 0x21, 0x4a, 0x3b, 0xa9, 0x46, 0x7d, 0x56, 0xce, 0xc2, 0x0c, 0xfd, 0x44, 0x4c, 0x11, - 0x9b, 0xa8, 0xf1, 0xa4, 0xca, 0xa5, 0x29, 0x4f, 0x80, 0x1c, 0x7e, 0xd0, 0xb1, 0xb4, 0x53, 0x6d, - 0x82, 0xd7, 0x95, 0xf3, 0xd4, 0xeb, 0x70, 0xde, 0xf3, 0x3a, 0x9c, 0xaf, 0x13, 0x9f, 0x44, 0x95, - 0xe6, 0x42, 0x2f, 0x99, 0xf4, 0x0d, 0x89, 0xef, 0x4a, 0x81, 0x62, 0x28, 0x90, 0x35, 0xb4, 0x1d, - 0xcc, 0xf4, 0x82, 0x3c, 0x2b, 0x37, 0xc1, 0x51, 0x6d, 0x4f, 0x73, 0x34, 0x6b, 0xd5, 0x6c, 0x69, - 0x1d, 0x32, 0xf8, 0x79, 0x2d, 0xbf, 0xf7, 0x03, 0xd9, 0x11, 0x72, 0x4c, 0x0b, 0x93, 0x5c, 0xde, - 0x8e, 0x90, 0x97, 0xe0, 0x52, 0xd7, 0x5b, 0xa6, 0x41, 0xf8, 0x97, 0x55, 0xf2, 0xec, 0x4a, 0xa5, - 0xad, 0xdb, 0x6e, 0x45, 0x08, 0x95, 0x2a, 0xdd, 0xda, 0xa8, 0x5f, 0x36, 0x5a, 0x64, 0x37, 0x68, - 0x52, 0x8d, 0xfa, 0xac, 0x2c, 0xc0, 0x34, 0xdb, 0x08, 0x59, 0x73, 0xf5, 0x2a, 0x4f, 0xf4, 0xea, - 0x0c, 0xef, 0xd3, 0x45, 0xf1, 0x9c, 0xaf, 0x06, 0xf9, 0xd4, 0xf0, 0x4f, 0xca, 0x3d, 0x70, 0x35, - 0x7b, 0x2d, 0xed, 0xda, 0x8e, 0xb9, 0x43, 0x41, 0x5f, 0xd2, 0x3b, 0xb4, 0x06, 0x13, 0xa4, 0x06, - 0x71, 0x59, 0x94, 0xdb, 0xe0, 0x78, 0xd7, 0xc2, 0x9b, 0xd8, 0xba, 0x5f, 0xdb, 0xd9, 0x7d, 0xb0, - 0x61, 0x69, 0x86, 0xdd, 0x35, 0x2d, 0xe7, 0xd4, 0x24, 0x61, 0xbe, 0xef, 0x37, 0xd6, 0x51, 0x4e, - 0x42, 0x9e, 0x8a, 0x0f, 0xbd, 0x20, 0x27, 0xec, 0xce, 0xc9, 0x2a, 0x14, 0x6b, 0x9e, 0xdd, 0x0a, - 0x13, 0xac, 0x87, 0x23, 0x40, 0x4d, 0xdf, 0x76, 0xb2, 0x67, 0x5d, 0x81, 0x51, 0x51, 0xbd, 0x6c, - 0xca, 0x93, 0x20, 0xdf, 0x22, 0xd5, 0x22, 0x98, 0x4d, 0xdf, 0x76, 0x75, 0xff, 0x42, 0x49, 0x16, - 0x95, 0x65, 0x45, 0x7f, 0x29, 0x0b, 0x79, 0x80, 0xc6, 0x71, 0x9c, 0xac, 0x55, 0x7f, 0x55, 0x1a, - 0xa2, 0xdb, 0xbc, 0x19, 0x6e, 0x64, 0x7d, 0x22, 0xb3, 0x3f, 0x16, 0x9b, 0x0b, 0x1b, 0xde, 0x64, - 0xd0, 0xb5, 0x4a, 0xea, 0x8d, 0xa2, 0xea, 0xce, 0xe4, 0x17, 0xdd, 0x49, 0xe4, 0x4d, 0x70, 0xc3, - 0x80, 0xdc, 0xe5, 0x46, 0xb3, 0x5a, 0x5c, 0x2b, 0x17, 0x36, 0x79, 0xdb, 0xa6, 0xde, 0xa8, 0xad, - 0x37, 0xd5, 0x8d, 0x6a, 0xb5, 0x52, 0x5d, 0xa6, 0xc4, 0x5c, 0x93, 0xf0, 0x64, 0x90, 0xe1, 0xbc, - 0x5a, 0x69, 0x94, 0x9b, 0xa5, 0x5a, 0x75, 0xa9, 0xb2, 0x5c, 0xd0, 0x07, 0x19, 0x46, 0x0f, 0x28, - 0x67, 0xe0, 0x1a, 0x8e, 0x93, 0x4a, 0xad, 0xea, 0xce, 0x6c, 0x4b, 0xc5, 0x6a, 0xa9, 0xec, 0x4e, - 0x63, 0x2f, 0x2a, 0x08, 0x4e, 0x50, 0x72, 0xcd, 0xa5, 0xca, 0x6a, 0x78, 0x33, 0xea, 0x23, 0x19, - 0xe5, 0x14, 0x5c, 0x11, 0xfe, 0x56, 0xa9, 0x9e, 0x2b, 0xae, 0x56, 0x16, 0x0b, 0x7f, 0x94, 0x51, - 0xae, 0x87, 0x6b, 0xb9, 0xbf, 0xe8, 0xbe, 0x52, 0xb3, 0xb2, 0xd8, 0x5c, 0xab, 0xd4, 0xd7, 0x8a, - 0x8d, 0xd2, 0x4a, 0xe1, 0xa3, 0x64, 0xbe, 0xe0, 0x1b, 0xc0, 0x21, 0xb7, 0xcc, 0x17, 0x86, 0xc7, - 0xf4, 0x22, 0xaf, 0xa8, 0x8f, 0xef, 0x0b, 0x7b, 0xbc, 0x0d, 0xfb, 0x21, 0x7f, 0x74, 0x58, 0xe4, - 0x54, 0xe8, 0xd6, 0x04, 0xb4, 0x92, 0xe9, 0x50, 0x63, 0x08, 0x15, 0x3a, 0x03, 0xd7, 0x54, 0xcb, - 0x14, 0x29, 0xb5, 0x5c, 0xaa, 0x9d, 0x2b, 0xab, 0xcd, 0xf3, 0xc5, 0xd5, 0xd5, 0x72, 0xa3, 0xb9, - 0x54, 0x51, 0xeb, 0x8d, 0xc2, 0x26, 0xfa, 0x17, 0xc9, 0x5f, 0xcd, 0x09, 0x49, 0xeb, 0x6f, 0xa4, - 0xa4, 0xcd, 0x3a, 0x76, 0xd5, 0xe6, 0x87, 0x20, 0x6f, 0x3b, 0x9a, 0xb3, 0x6b, 0xb3, 0x56, 0xfd, - 0x98, 0xfe, 0xad, 0x7a, 0xbe, 0x4e, 0x32, 0xa9, 0x2c, 0x33, 0xfa, 0xcb, 0x4c, 0x92, 0x66, 0x3a, - 0x82, 0x05, 0x1d, 0x7d, 0x08, 0x11, 0x9f, 0x06, 0xe4, 0x69, 0x7b, 0xa5, 0xde, 0x2c, 0xae, 0xaa, - 0xe5, 0xe2, 0xe2, 0xfd, 0xfe, 0x32, 0x0e, 0x56, 0x4e, 0xc0, 0xb1, 0x8d, 0x6a, 0x71, 0x61, 0xb5, - 0x4c, 0x9a, 0x4b, 0xad, 0x5a, 0x2d, 0x97, 0x5c, 0xb9, 0xff, 0x34, 0xd9, 0x34, 0x71, 0x2d, 0x68, - 0xc2, 0xb7, 0x6b, 0xe5, 0x84, 0xe4, 0xff, 0x15, 0x61, 0xdf, 0xa2, 0x40, 0xc3, 0xc2, 0xb4, 0x46, - 0x8b, 0xc3, 0x67, 0x85, 0xdc, 0x89, 0x84, 0x38, 0x49, 0x86, 0xc7, 0x7f, 0x1e, 0x02, 0x8f, 0x13, - 0x70, 0x2c, 0x8c, 0x07, 0x71, 0x2b, 0x8a, 0x86, 0xe1, 0x8b, 0x93, 0x90, 0xaf, 0xe3, 0x0e, 0x6e, - 0x39, 0xe8, 0x4d, 0x21, 0x63, 0x62, 0x0e, 0x24, 0xdf, 0x8d, 0x45, 0xd2, 0xdb, 0xdc, 0xf4, 0x59, - 0xea, 0x99, 0x3e, 0xc7, 0x98, 0x01, 0x72, 0x22, 0x33, 0x20, 0x9b, 0x82, 0x19, 0x90, 0x1b, 0xde, - 0x0c, 0xc8, 0x0f, 0x32, 0x03, 0xd0, 0xab, 0xf3, 0x49, 0x7b, 0x09, 0x2a, 0xea, 0xc3, 0x1d, 0xfc, - 0xff, 0x67, 0x36, 0x49, 0xaf, 0xd2, 0x97, 0xe3, 0x64, 0x5a, 0xfc, 0x1d, 0x39, 0x85, 0xe5, 0x07, - 0xe5, 0x3a, 0xb8, 0x36, 0x78, 0x6f, 0x96, 0x9f, 0x51, 0xa9, 0x37, 0xea, 0x64, 0xc4, 0x2f, 0xd5, - 0x54, 0x75, 0x63, 0x9d, 0xae, 0x21, 0x9f, 0x04, 0x25, 0xa0, 0xa2, 0x6e, 0x54, 0xe9, 0xf8, 0xbe, - 0xc5, 0x53, 0x5f, 0xaa, 0x54, 0x17, 0x9b, 0x7e, 0x9b, 0xa9, 0x2e, 0xd5, 0x0a, 0xdb, 0xee, 0x94, - 0x2d, 0x44, 0xdd, 0x1d, 0xa0, 0x59, 0x09, 0xc5, 0xea, 0x62, 0x73, 0xad, 0x5a, 0x5e, 0xab, 0x55, - 0x2b, 0x25, 0x92, 0x5e, 0x2f, 0x37, 0x0a, 0xba, 0x3b, 0xd0, 0xf4, 0x58, 0x14, 0xf5, 0x72, 0x51, - 0x2d, 0xad, 0x94, 0x55, 0x5a, 0xe4, 0x03, 0xca, 0x0d, 0x70, 0xb6, 0x58, 0xad, 0x35, 0xdc, 0x94, - 0x62, 0xf5, 0xfe, 0xc6, 0xfd, 0xeb, 0xe5, 0xe6, 0xba, 0x5a, 0x2b, 0x95, 0xeb, 0x75, 0xb7, 0x9d, - 0x32, 0xfb, 0xa3, 0xd0, 0x51, 0x9e, 0x0e, 0x77, 0x84, 0x58, 0x2b, 0x37, 0xc8, 0x86, 0xe5, 0x5a, - 0x8d, 0xf8, 0xac, 0x2c, 0x96, 0x9b, 0x2b, 0xc5, 0x7a, 0xb3, 0x52, 0x2d, 0xd5, 0xd6, 0xd6, 0x8b, - 0x8d, 0x8a, 0xdb, 0x9c, 0xd7, 0xd5, 0x5a, 0xa3, 0xd6, 0x3c, 0x57, 0x56, 0xeb, 0x95, 0x5a, 0xb5, - 0x60, 0xb8, 0x55, 0x0e, 0xb5, 0x7f, 0xaf, 0x1f, 0x36, 0x95, 0x6b, 0xe0, 0x94, 0x97, 0xbe, 0x5a, - 0x73, 0x05, 0x1d, 0xb2, 0x48, 0xba, 0xa9, 0x5a, 0x24, 0xff, 0x26, 0x41, 0xb6, 0xee, 0x98, 0x5d, - 0xf4, 0x83, 0x41, 0x07, 0x73, 0x1a, 0xc0, 0x22, 0xfb, 0x8f, 0xee, 0x2c, 0x8c, 0xcd, 0xcb, 0x42, - 0x29, 0xe8, 0x0f, 0x85, 0x37, 0x4d, 0x82, 0x3e, 0xdb, 0xec, 0x46, 0xd8, 0x2a, 0xdf, 0x12, 0x3b, - 0x45, 0x12, 0x4d, 0x28, 0x99, 0xbe, 0xff, 0xdc, 0x30, 0xdb, 0x22, 0x08, 0x4e, 0x86, 0x60, 0x73, - 0xe5, 0xef, 0xa9, 0x04, 0x56, 0xae, 0x84, 0x2b, 0x7a, 0x94, 0x8b, 0xe8, 0xd4, 0xa6, 0xf2, 0x03, - 0xf0, 0x98, 0x90, 0x7a, 0x97, 0xd7, 0x6a, 0xe7, 0xca, 0xbe, 0x22, 0x2f, 0x16, 0x1b, 0xc5, 0xc2, - 0x16, 0xfa, 0x94, 0x0c, 0xd9, 0x35, 0x73, 0xaf, 0x77, 0xaf, 0xca, 0xc0, 0x97, 0x42, 0x6b, 0xa1, - 0xde, 0x2b, 0xef, 0x35, 0x2f, 0x24, 0xf6, 0xb5, 0xe8, 0x7d, 0xe9, 0xcf, 0x4a, 0x49, 0xc4, 0xbe, - 0x76, 0xd0, 0xcd, 0xe8, 0x7f, 0x18, 0x46, 0xec, 0x11, 0xa2, 0xc5, 0xca, 0x59, 0x38, 0x1d, 0x7c, - 0xa8, 0x2c, 0x96, 0xab, 0x8d, 0xca, 0xd2, 0xfd, 0x81, 0x70, 0x2b, 0xaa, 0x90, 0xf8, 0x07, 0x75, - 0x63, 0xf1, 0x33, 0x8d, 0x53, 0x70, 0x3c, 0xf8, 0xb6, 0x5c, 0x6e, 0x78, 0x5f, 0x1e, 0x40, 0x0f, - 0xe5, 0x60, 0x86, 0x76, 0xeb, 0x1b, 0xdd, 0xb6, 0xe6, 0x60, 0xf4, 0xa4, 0x00, 0xdd, 0x1b, 0xe1, - 0x68, 0x65, 0x7d, 0xa9, 0x5e, 0x77, 0x4c, 0x4b, 0xdb, 0xc2, 0xc5, 0x76, 0xdb, 0x62, 0xd2, 0xea, - 0x4d, 0x46, 0x6f, 0x17, 0x5e, 0xe7, 0xe3, 0x87, 0x12, 0x5a, 0x66, 0x04, 0xea, 0x5f, 0x10, 0x5a, - 0x97, 0x13, 0x20, 0x98, 0x0c, 0xfd, 0x07, 0x46, 0xdc, 0xe6, 0xa2, 0x71, 0xd9, 0x3c, 0xfb, 0x1c, - 0x09, 0xa6, 0x1a, 0xfa, 0x0e, 0x7e, 0xa6, 0x69, 0x60, 0x5b, 0x99, 0x00, 0x79, 0x79, 0xad, 0x51, - 0x38, 0xe2, 0x3e, 0xb8, 0x46, 0x55, 0x86, 0x3c, 0x94, 0xdd, 0x02, 0xdc, 0x87, 0x62, 0xa3, 0x20, - 0xbb, 0x0f, 0x6b, 0xe5, 0x46, 0x21, 0xeb, 0x3e, 0x54, 0xcb, 0x8d, 0x42, 0xce, 0x7d, 0x58, 0x5f, - 0x6d, 0x14, 0xf2, 0xee, 0x43, 0xa5, 0xde, 0x28, 0x4c, 0xb8, 0x0f, 0x0b, 0xf5, 0x46, 0x61, 0xd2, - 0x7d, 0x38, 0x57, 0x6f, 0x14, 0xa6, 0xdc, 0x87, 0x52, 0xa3, 0x51, 0x00, 0xf7, 0xe1, 0xde, 0x7a, - 0xa3, 0x30, 0xed, 0x3e, 0x14, 0x4b, 0x8d, 0xc2, 0x0c, 0x79, 0x28, 0x37, 0x0a, 0xb3, 0xee, 0x43, - 0xbd, 0xde, 0x28, 0xcc, 0x11, 0xca, 0xf5, 0x46, 0xe1, 0x28, 0x29, 0xab, 0xd2, 0x28, 0x14, 0xdc, - 0x87, 0x95, 0x7a, 0xa3, 0x70, 0x8c, 0x64, 0xae, 0x37, 0x0a, 0x0a, 0x29, 0xb4, 0xde, 0x28, 0x5c, - 0x41, 0xf2, 0xd4, 0x1b, 0x85, 0xe3, 0xa4, 0x88, 0x7a, 0xa3, 0x70, 0x82, 0xb0, 0x51, 0x6e, 0x14, - 0x4e, 0x92, 0x3c, 0x6a, 0xa3, 0x70, 0x25, 0xf9, 0x54, 0x6d, 0x14, 0x4e, 0x11, 0xc6, 0xca, 0x8d, - 0xc2, 0x55, 0xe4, 0x41, 0x6d, 0x14, 0x10, 0xf9, 0x54, 0x6c, 0x14, 0xae, 0x46, 0x8f, 0x81, 0xa9, - 0x65, 0xec, 0x50, 0x10, 0x51, 0x01, 0xe4, 0x65, 0xec, 0x84, 0xcd, 0xf8, 0x2f, 0xc9, 0x70, 0x25, - 0x9b, 0xfa, 0x2d, 0x59, 0xe6, 0xce, 0x2a, 0xde, 0xd2, 0x5a, 0x97, 0xcb, 0x0f, 0xba, 0x26, 0x54, - 0x78, 0x5f, 0x56, 0x81, 0x6c, 0x37, 0xe8, 0x8c, 0xc8, 0x73, 0xac, 0xc5, 0xe9, 0x2d, 0x46, 0xc9, - 0xc1, 0x62, 0x14, 0xb3, 0xc8, 0xfe, 0x39, 0xac, 0xd1, 0xdc, 0xfa, 0x71, 0xa6, 0x67, 0xfd, 0xd8, - 0x6d, 0x26, 0x5d, 0x6c, 0xd9, 0xa6, 0xa1, 0x75, 0xea, 0x6c, 0xe3, 0x9e, 0xae, 0x7a, 0xf5, 0x26, - 0x2b, 0x3f, 0xe2, 0xb5, 0x0c, 0x6a, 0x95, 0x3d, 0x2d, 0x6e, 0x86, 0xdb, 0x5b, 0xcd, 0x88, 0x46, - 0xf2, 0x51, 0xbf, 0x91, 0x34, 0xb8, 0x46, 0x72, 0xcf, 0x01, 0x68, 0x27, 0x6b, 0x2f, 0x95, 0xe1, - 0xa6, 0x16, 0x81, 0x5b, 0xab, 0xb7, 0x5c, 0x2d, 0xa3, 0x4f, 0x49, 0x70, 0xb2, 0x6c, 0xf4, 0xb3, - 0xf0, 0xc3, 0xba, 0xf0, 0x86, 0x30, 0x34, 0xeb, 0xbc, 0x48, 0xef, 0xe8, 0x5b, 0xed, 0xfe, 0x34, - 0x23, 0x24, 0xfa, 0x71, 0x5f, 0xa2, 0x75, 0x4e, 0xa2, 0x77, 0x0f, 0x4f, 0x3a, 0x99, 0x40, 0xab, - 0x23, 0xed, 0x80, 0xb2, 0xe8, 0xab, 0x59, 0x78, 0x0c, 0xf5, 0xbd, 0x61, 0x1c, 0xd2, 0x56, 0x56, - 0x34, 0xda, 0x2a, 0xb6, 0x1d, 0xcd, 0x72, 0xb8, 0xf3, 0xd0, 0x3d, 0x53, 0xa9, 0x4c, 0x0a, 0x53, - 0x29, 0x69, 0xe0, 0x54, 0x0a, 0xbd, 0x2d, 0x6c, 0x3e, 0x9c, 0xe7, 0x31, 0x2e, 0xf6, 0xef, 0xff, - 0xe3, 0x6a, 0x18, 0x05, 0xb5, 0x6f, 0x57, 0xfc, 0x28, 0x07, 0xf5, 0xd2, 0x81, 0x4b, 0x48, 0x86, - 0xf8, 0x1f, 0x8e, 0xd6, 0xce, 0xcb, 0x86, 0xbf, 0xf1, 0x46, 0x49, 0xa1, 0x9d, 0xaa, 0x81, 0xfe, - 0x89, 0x09, 0x98, 0x22, 0x6d, 0x61, 0x55, 0x37, 0x2e, 0xa2, 0x87, 0x65, 0x98, 0xa9, 0xe2, 0x4b, - 0xa5, 0x6d, 0xad, 0xd3, 0xc1, 0xc6, 0x16, 0x0e, 0x9b, 0xed, 0xa7, 0x60, 0x42, 0xeb, 0x76, 0xab, - 0xc1, 0x3e, 0x83, 0xf7, 0xca, 0xfa, 0xdf, 0xaf, 0xf4, 0x6d, 0xe4, 0x99, 0x98, 0x46, 0xee, 0x97, - 0x3b, 0x1f, 0x2e, 0x33, 0x62, 0x86, 0x7c, 0x06, 0xa6, 0x5b, 0x5e, 0x16, 0xff, 0xdc, 0x44, 0x38, - 0x09, 0xfd, 0x5d, 0xa2, 0x6e, 0x40, 0xa8, 0xf0, 0x64, 0x4a, 0x81, 0x47, 0x6c, 0x87, 0x9c, 0x80, - 0x63, 0x8d, 0x5a, 0xad, 0xb9, 0x56, 0xac, 0xde, 0x1f, 0x9c, 0x57, 0xde, 0x44, 0x2f, 0xcd, 0xc2, - 0x5c, 0xdd, 0xec, 0xec, 0xe1, 0x00, 0xa6, 0x0a, 0xe7, 0x90, 0x13, 0x96, 0x53, 0x66, 0x9f, 0x9c, - 0x94, 0x93, 0x90, 0xd7, 0x0c, 0xfb, 0x12, 0xf6, 0x6c, 0x43, 0xf6, 0xc6, 0x60, 0x7c, 0x6f, 0xb8, - 0x1d, 0xab, 0x3c, 0x8c, 0x77, 0x0e, 0x90, 0x24, 0xcf, 0x55, 0x04, 0x90, 0x67, 0x61, 0xc6, 0xa6, - 0x9b, 0x85, 0x8d, 0xd0, 0x9e, 0x30, 0x97, 0x46, 0x58, 0xa4, 0xbb, 0xd5, 0x32, 0x63, 0x91, 0xbc, - 0xa1, 0x87, 0xfd, 0xe6, 0xbf, 0xc1, 0x41, 0x5c, 0x3c, 0x08, 0x63, 0xc9, 0x40, 0x7e, 0xf9, 0xa8, - 0x67, 0x78, 0xa7, 0xe0, 0x38, 0x6b, 0xb5, 0xcd, 0xd2, 0x4a, 0x71, 0x75, 0xb5, 0x5c, 0x5d, 0x2e, - 0x37, 0x2b, 0x8b, 0x74, 0xab, 0x22, 0x48, 0x29, 0x36, 0x1a, 0xe5, 0xb5, 0xf5, 0x46, 0xbd, 0x59, - 0x7e, 0x46, 0xa9, 0x5c, 0x5e, 0x24, 0x2e, 0x71, 0xe4, 0x4c, 0x8b, 0xe7, 0xbc, 0x58, 0xac, 0xd6, - 0xcf, 0x97, 0xd5, 0xc2, 0xf6, 0xd9, 0x22, 0x4c, 0x87, 0xfa, 0x79, 0x97, 0xbb, 0x45, 0xbc, 0xa9, - 0xed, 0x76, 0x98, 0xad, 0x56, 0x38, 0xe2, 0x72, 0x47, 0x64, 0x53, 0x33, 0x3a, 0x97, 0x0b, 0x19, - 0xa5, 0x00, 0x33, 0xe1, 0x2e, 0xbd, 0x20, 0xa1, 0x37, 0x5f, 0x03, 0x53, 0xe7, 0x4d, 0xeb, 0x22, - 0xf1, 0xe3, 0x42, 0xef, 0xa2, 0x71, 0x4d, 0xbc, 0x13, 0xa2, 0xa1, 0x81, 0xfd, 0xe5, 0xe2, 0xde, - 0x02, 0x1e, 0xb5, 0xf9, 0x81, 0xa7, 0x40, 0xcf, 0xc0, 0xf4, 0x25, 0x2f, 0x77, 0xd0, 0xd2, 0x43, - 0x49, 0xe8, 0xbf, 0x89, 0xed, 0xff, 0x0f, 0x2e, 0x32, 0xfd, 0xfd, 0xe9, 0x37, 0x49, 0x90, 0x5f, - 0xc6, 0x4e, 0xb1, 0xd3, 0x09, 0xcb, 0xed, 0x45, 0xc2, 0x27, 0x7b, 0xb8, 0x4a, 0x14, 0x3b, 0x9d, - 0xe8, 0x46, 0x15, 0x12, 0x90, 0xe7, 0x81, 0xce, 0xa5, 0x09, 0xfa, 0xcd, 0x0d, 0x28, 0x30, 0x7d, - 0x89, 0xbd, 0x5f, 0xf6, 0xf7, 0xb8, 0x1f, 0x09, 0x59, 0x39, 0x4f, 0x0c, 0x62, 0xda, 0x64, 0xe2, - 0xf7, 0xca, 0xbd, 0x7c, 0xca, 0x7d, 0x30, 0xb1, 0x6b, 0xe3, 0x92, 0x66, 0x63, 0xc2, 0x5b, 0x6f, - 0x4d, 0x6b, 0x17, 0x1e, 0xc0, 0x2d, 0x67, 0xbe, 0xb2, 0xe3, 0x1a, 0xd4, 0x1b, 0x34, 0xa3, 0x1f, - 0x26, 0x86, 0xbd, 0xab, 0x1e, 0x05, 0x77, 0x52, 0x72, 0x49, 0x77, 0xb6, 0x4b, 0xdb, 0x9a, 0xc3, - 0xd6, 0xb6, 0xfd, 0x77, 0xf4, 0x82, 0x21, 0xe0, 0x8c, 0xdd, 0x0b, 0x8e, 0x3c, 0x20, 0x98, 0x18, - 0xc4, 0x11, 0x6c, 0xe0, 0x0e, 0x03, 0xe2, 0x3f, 0x4a, 0x90, 0xad, 0x75, 0xb1, 0x21, 0x7c, 0x1a, - 0xc6, 0x97, 0xad, 0xd4, 0x23, 0xdb, 0x87, 0xc5, 0xbd, 0xc3, 0xfc, 0x4a, 0xbb, 0x25, 0x47, 0x48, - 0xf6, 0x16, 0xc8, 0xea, 0xc6, 0xa6, 0xc9, 0x0c, 0xd3, 0xab, 0x23, 0x36, 0x81, 0x2a, 0xc6, 0xa6, - 0xa9, 0x92, 0x8c, 0xa2, 0x8e, 0x61, 0x71, 0x65, 0xa7, 0x2f, 0xee, 0xaf, 0x4d, 0x42, 0x9e, 0xaa, - 0x33, 0x7a, 0xa1, 0x0c, 0x72, 0xb1, 0xdd, 0x8e, 0x10, 0xbc, 0xb4, 0x4f, 0xf0, 0x26, 0xf9, 0xcd, - 0xc7, 0xc4, 0x7f, 0xe7, 0x83, 0x99, 0x08, 0xf6, 0xed, 0xac, 0x49, 0x15, 0xdb, 0xed, 0x68, 0x1f, - 0x54, 0xbf, 0x40, 0x89, 0x2f, 0x30, 0xdc, 0xc2, 0x65, 0xb1, 0x16, 0x9e, 0x78, 0x20, 0x88, 0xe4, - 0x2f, 0x7d, 0x88, 0xfe, 0x59, 0x82, 0x89, 0x55, 0xdd, 0x76, 0x5c, 0x6c, 0x8a, 0x22, 0xd8, 0x5c, - 0x03, 0x53, 0x9e, 0x68, 0xdc, 0x2e, 0xcf, 0xed, 0xcf, 0x83, 0x04, 0xf4, 0xaa, 0x30, 0x3a, 0xf7, - 0xf2, 0xe8, 0x3c, 0x39, 0xbe, 0xf6, 0x8c, 0x8b, 0xe8, 0x53, 0x06, 0x41, 0xb1, 0x52, 0x6f, 0xb1, - 0xbf, 0xed, 0x0b, 0x7c, 0x8d, 0x13, 0xf8, 0xed, 0xc3, 0x14, 0x99, 0xbe, 0xd0, 0x3f, 0x2d, 0x01, - 0xb8, 0x65, 0xb3, 0xa3, 0x5c, 0x8f, 0xe3, 0x0e, 0x68, 0xc7, 0x48, 0xf7, 0xa5, 0x61, 0xe9, 0xae, - 0xf1, 0xd2, 0xfd, 0xe1, 0xc1, 0x55, 0x8d, 0x3b, 0xb2, 0xa5, 0x14, 0x40, 0xd6, 0x7d, 0xd1, 0xba, - 0x8f, 0xe8, 0x4d, 0xbe, 0x50, 0xd7, 0x39, 0xa1, 0xde, 0x39, 0x64, 0x49, 0xe9, 0xcb, 0xf5, 0xaf, - 0x24, 0x98, 0xa8, 0x63, 0xc7, 0xed, 0x26, 0xd1, 0x39, 0x91, 0x1e, 0x3e, 0xd4, 0xb6, 0x25, 0xc1, - 0xb6, 0xfd, 0xcd, 0x8c, 0x68, 0xa0, 0x97, 0x40, 0x32, 0x8c, 0xa7, 0x88, 0xc5, 0x83, 0x47, 0x84, - 0x02, 0xbd, 0x0c, 0xa2, 0x96, 0xbe, 0x74, 0xdf, 0x20, 0xf9, 0x1b, 0xf3, 0xfc, 0x49, 0x8b, 0xb0, - 0x59, 0x9c, 0xd9, 0x6f, 0x16, 0x8b, 0x9f, 0xb4, 0x08, 0xd7, 0x31, 0x7a, 0x57, 0x3a, 0xb1, 0xb1, - 0x31, 0x82, 0x0d, 0xe3, 0x61, 0xe4, 0xf5, 0x6c, 0x19, 0xf2, 0x6c, 0x65, 0xf9, 0xee, 0xf8, 0x95, - 0xe5, 0xc1, 0x53, 0x8b, 0x77, 0x0e, 0x61, 0xca, 0xc5, 0x2d, 0xf7, 0xfa, 0x6c, 0x48, 0x21, 0x36, - 0x6e, 0x86, 0x1c, 0x89, 0x44, 0xc9, 0xc6, 0xb9, 0x60, 0xaf, 0xdf, 0x23, 0x51, 0x76, 0xbf, 0xaa, - 0x34, 0x53, 0x62, 0x14, 0x46, 0xb0, 0x42, 0x3c, 0x0c, 0x0a, 0x6f, 0x57, 0x00, 0xd6, 0x77, 0x2f, - 0x74, 0x74, 0x7b, 0x5b, 0x37, 0xb6, 0xd0, 0x77, 0x33, 0x30, 0xc3, 0x5e, 0x69, 0x40, 0xc5, 0x58, - 0xf3, 0x2f, 0xd2, 0x28, 0x28, 0x80, 0xbc, 0x6b, 0xe9, 0x6c, 0x19, 0xc0, 0x7d, 0x54, 0xee, 0xf2, - 0x1d, 0x79, 0xb2, 0x3d, 0x47, 0xe9, 0x5d, 0x31, 0x04, 0x1c, 0xcc, 0x87, 0x4a, 0x0f, 0x1c, 0x7a, - 0xc2, 0x51, 0x33, 0x73, 0x7c, 0xd4, 0x4c, 0xee, 0x7c, 0x5d, 0xbe, 0xe7, 0x7c, 0x9d, 0x8b, 0xa3, - 0xad, 0x3f, 0x13, 0x13, 0xe7, 0x52, 0x59, 0x25, 0xcf, 0xee, 0x1f, 0x0f, 0x98, 0xba, 0x41, 0x36, - 0x0b, 0x98, 0xeb, 0x68, 0x90, 0x80, 0xde, 0x17, 0x4c, 0x64, 0x4c, 0x41, 0x2b, 0x38, 0x81, 0x18, - 0xb8, 0xb2, 0xb3, 0xbd, 0x65, 0x7f, 0x50, 0x38, 0x4a, 0x56, 0x48, 0x60, 0xb1, 0x53, 0x12, 0xc6, - 0x81, 0xe4, 0x73, 0x10, 0xda, 0xed, 0x8b, 0xeb, 0x4e, 0x07, 0xd1, 0x4f, 0xa6, 0x98, 0x3b, 0x43, - 0x2c, 0xbe, 0x28, 0x30, 0xe7, 0x9d, 0x3a, 0xac, 0x2d, 0xdc, 0x5b, 0x2e, 0x35, 0x0a, 0x78, 0xff, - 0x49, 0x44, 0x72, 0xe6, 0x90, 0x9e, 0x2f, 0x0c, 0x16, 0x58, 0xd0, 0xff, 0x90, 0x20, 0xcf, 0x6c, - 0x87, 0xbb, 0x0f, 0x08, 0x21, 0x7a, 0xd9, 0x30, 0x90, 0xc4, 0x1e, 0xfe, 0xfe, 0x58, 0x52, 0x00, - 0x46, 0x60, 0x2d, 0xdc, 0x9f, 0x1a, 0x00, 0xe8, 0x5f, 0x25, 0xc8, 0xba, 0x36, 0x8d, 0xd8, 0xd1, - 0xda, 0x8f, 0x0a, 0x3b, 0xb5, 0x86, 0x04, 0xe0, 0x92, 0x8f, 0xd0, 0xef, 0x05, 0x98, 0xea, 0xd2, - 0x8c, 0xfe, 0xc1, 0xee, 0xeb, 0x05, 0x7a, 0x16, 0xac, 0x06, 0xbf, 0xa1, 0x77, 0x08, 0x39, 0xc6, - 0xc6, 0xf3, 0x93, 0x0c, 0x8e, 0xf2, 0x28, 0x4e, 0xe1, 0x6e, 0xa2, 0x6f, 0x4b, 0x00, 0x2a, 0xb6, - 0xcd, 0xce, 0x1e, 0xde, 0xb0, 0x74, 0x74, 0x75, 0x00, 0x00, 0x6b, 0xf6, 0x99, 0xa0, 0xd9, 0x7f, - 0x22, 0x2c, 0xf8, 0x65, 0x5e, 0xf0, 0x4f, 0x8c, 0xd6, 0x3c, 0x8f, 0x78, 0x84, 0xf8, 0x9f, 0x0e, - 0x13, 0x4c, 0x8e, 0xcc, 0x40, 0x14, 0x13, 0xbe, 0xf7, 0x13, 0x7a, 0xb7, 0x2f, 0xfa, 0x7b, 0x39, - 0xd1, 0x3f, 0x25, 0x31, 0x47, 0xc9, 0x00, 0x28, 0x0d, 0x01, 0xc0, 0x51, 0x98, 0xf6, 0x00, 0xd8, - 0x50, 0x2b, 0x05, 0x8c, 0xde, 0x2a, 0x93, 0xbd, 0x74, 0x3a, 0x52, 0x1d, 0xbc, 0xa7, 0xf9, 0xb2, - 0xf0, 0xcc, 0x3d, 0x24, 0x0f, 0xbf, 0xfc, 0x94, 0x00, 0xfa, 0x53, 0xa1, 0xa9, 0xba, 0x00, 0x43, - 0x8f, 0x96, 0xfe, 0xea, 0x6c, 0x19, 0x66, 0x39, 0x13, 0x43, 0x39, 0x05, 0xc7, 0xb9, 0x04, 0x3a, - 0xde, 0xb5, 0x0b, 0x47, 0x14, 0x04, 0x27, 0xb9, 0x2f, 0xec, 0x05, 0xb7, 0x0b, 0x19, 0xf4, 0x0b, - 0x7f, 0x9e, 0xf1, 0x17, 0x6f, 0xde, 0x99, 0x65, 0xcb, 0x66, 0x1f, 0xe6, 0x63, 0x89, 0xb5, 0x4c, - 0xc3, 0xc1, 0x0f, 0x86, 0x7c, 0x19, 0xfc, 0x84, 0x58, 0xab, 0xe1, 0x14, 0x4c, 0x38, 0x56, 0xd8, - 0xbf, 0xc1, 0x7b, 0x0d, 0x2b, 0x56, 0x8e, 0x57, 0xac, 0x2a, 0x9c, 0xd5, 0x8d, 0x56, 0x67, 0xb7, - 0x8d, 0x55, 0xdc, 0xd1, 0x5c, 0x19, 0xda, 0x45, 0x7b, 0x11, 0x77, 0xb1, 0xd1, 0xc6, 0x86, 0x43, - 0xf9, 0xf4, 0xce, 0x32, 0x09, 0xe4, 0xe4, 0x95, 0xf1, 0x2e, 0x5e, 0x19, 0x1f, 0xd7, 0x6f, 0x3d, - 0x36, 0x66, 0xf1, 0xee, 0x76, 0x00, 0x5a, 0xb7, 0x73, 0x3a, 0xbe, 0xc4, 0xd4, 0xf0, 0xaa, 0x9e, - 0x25, 0xbc, 0x9a, 0x9f, 0x41, 0x0d, 0x65, 0x46, 0x9f, 0xf7, 0xd5, 0xef, 0x1e, 0x4e, 0xfd, 0x6e, - 0x16, 0x64, 0x21, 0x99, 0xd6, 0x75, 0x87, 0xd0, 0xba, 0x59, 0x98, 0x0a, 0x76, 0x76, 0x65, 0xe5, - 0x2a, 0x38, 0xe1, 0xf9, 0x8a, 0x56, 0xcb, 0xe5, 0xc5, 0x7a, 0x73, 0x63, 0x7d, 0x59, 0x2d, 0x2e, - 0x96, 0x0b, 0xe0, 0xea, 0x27, 0xd5, 0x4b, 0xdf, 0xc5, 0x33, 0x8b, 0xfe, 0x42, 0x82, 0x1c, 0x39, - 0x88, 0x87, 0x7e, 0x7c, 0x44, 0x9a, 0x63, 0x73, 0x9e, 0x31, 0xfe, 0xb8, 0x2b, 0x1e, 0xe3, 0x9b, - 0x09, 0x93, 0x70, 0x75, 0xa0, 0x18, 0xdf, 0x31, 0x84, 0xd2, 0x9f, 0xd6, 0xb8, 0x4d, 0xb2, 0xbe, - 0x6d, 0x5e, 0xfa, 0x7e, 0x6e, 0x92, 0x6e, 0xfd, 0x0f, 0xb9, 0x49, 0xf6, 0x61, 0x61, 0xec, 0x4d, - 0xb2, 0x4f, 0xbb, 0x8b, 0x69, 0xa6, 0xe8, 0x59, 0x39, 0x7f, 0xfe, 0xf7, 0x1c, 0xe9, 0x40, 0x1b, - 0x59, 0x45, 0x98, 0xd5, 0x0d, 0x07, 0x5b, 0x86, 0xd6, 0x59, 0xea, 0x68, 0x5b, 0x9e, 0x7d, 0xda, - 0xbb, 0x7b, 0x51, 0x09, 0xe5, 0x51, 0xf9, 0x3f, 0x94, 0xd3, 0x00, 0x0e, 0xde, 0xe9, 0x76, 0x34, - 0x27, 0x50, 0xbd, 0x50, 0x4a, 0x58, 0xfb, 0xb2, 0xbc, 0xf6, 0xdd, 0x0a, 0x57, 0x50, 0xd0, 0x1a, - 0x97, 0xbb, 0x78, 0xc3, 0xd0, 0x7f, 0x62, 0x97, 0x84, 0x9e, 0xa4, 0x3a, 0xda, 0xef, 0x13, 0xb7, - 0x9d, 0x93, 0xef, 0xd9, 0xce, 0xf9, 0x47, 0xe1, 0x90, 0x16, 0x5e, 0xab, 0x1f, 0x10, 0xd2, 0xc2, - 0x6f, 0x69, 0x72, 0x4f, 0x4b, 0xf3, 0x17, 0x59, 0xb2, 0x02, 0x8b, 0x2c, 0x61, 0x54, 0x72, 0x82, - 0x0b, 0x94, 0xaf, 0x14, 0x8a, 0x99, 0x11, 0x57, 0x8d, 0x31, 0x2c, 0x80, 0xcb, 0x30, 0x47, 0x8b, - 0x5e, 0x30, 0xcd, 0x8b, 0x3b, 0x9a, 0x75, 0x11, 0x59, 0x07, 0x52, 0xc5, 0xd8, 0xbd, 0xa4, 0xc8, - 0x0d, 0xd2, 0x8f, 0x0b, 0xcf, 0x19, 0x38, 0x71, 0x79, 0x3c, 0x8f, 0x67, 0x33, 0xe9, 0x75, 0x42, - 0x53, 0x08, 0x11, 0x06, 0xd3, 0xc7, 0xf5, 0x8f, 0x7d, 0x5c, 0xbd, 0x8e, 0x3e, 0xbc, 0x0e, 0x3f, - 0x4a, 0x5c, 0xd1, 0x17, 0x86, 0xc3, 0xce, 0xe3, 0x6b, 0x08, 0xec, 0x0a, 0x20, 0x5f, 0xf4, 0x5d, - 0x7f, 0xdc, 0xc7, 0x70, 0x85, 0xb2, 0xe9, 0xa1, 0x19, 0xc1, 0xf2, 0x58, 0xd0, 0x3c, 0xce, 0xb3, - 0x50, 0xeb, 0xa6, 0x8a, 0xe9, 0xe7, 0x84, 0xf7, 0xb7, 0xfa, 0x0a, 0x88, 0x72, 0x37, 0x9e, 0x56, - 0x29, 0xb6, 0x39, 0x26, 0xce, 0x66, 0xfa, 0x68, 0x3e, 0x3f, 0x07, 0x53, 0x5e, 0xd0, 0x11, 0x72, - 0x27, 0x8e, 0x8f, 0xe1, 0x49, 0xc8, 0xdb, 0xe6, 0xae, 0xd5, 0xc2, 0x6c, 0xc7, 0x91, 0xbd, 0x0d, - 0xb1, 0x3b, 0x36, 0x70, 0x3c, 0xdf, 0x67, 0x32, 0x64, 0x13, 0x9b, 0x0c, 0xd1, 0x06, 0x69, 0xdc, - 0x00, 0xff, 0x02, 0xe1, 0x40, 0xe6, 0x1c, 0x66, 0x75, 0xec, 0x3c, 0x1a, 0xc7, 0xf8, 0x3f, 0x10, - 0xda, 0x7b, 0x19, 0x50, 0x93, 0x64, 0x2a, 0x57, 0x1b, 0xc2, 0x50, 0xbd, 0x1a, 0xae, 0xf4, 0x72, - 0x30, 0x0b, 0x95, 0x58, 0xa4, 0x1b, 0xea, 0x6a, 0x41, 0x46, 0xcf, 0xce, 0x42, 0x81, 0xb2, 0x56, - 0xf3, 0x8d, 0x35, 0xf4, 0xa2, 0xcc, 0x61, 0x5b, 0xa4, 0xd1, 0x53, 0xcc, 0x4f, 0x4a, 0xa2, 0xc1, - 0x52, 0x39, 0xc1, 0x07, 0xb5, 0x8b, 0xd0, 0xa4, 0x21, 0x9a, 0x59, 0x8c, 0xf2, 0xa1, 0xdf, 0xca, - 0x88, 0xc4, 0x5e, 0x15, 0x63, 0x31, 0xfd, 0x5e, 0xe9, 0x33, 0x59, 0x2f, 0x76, 0xd4, 0x92, 0x65, - 0xee, 0x6c, 0x58, 0x1d, 0xf4, 0x7f, 0x0b, 0x85, 0xb6, 0x8e, 0x30, 0xff, 0xa5, 0x68, 0xf3, 0x9f, - 0x2c, 0x19, 0x77, 0x82, 0xbd, 0xaa, 0xce, 0x10, 0xc3, 0xb7, 0x72, 0x03, 0xcc, 0x69, 0xed, 0xf6, - 0xba, 0xb6, 0x85, 0x4b, 0xee, 0xbc, 0xda, 0x70, 0x58, 0x5c, 0x99, 0x9e, 0xd4, 0xd8, 0xae, 0x48, - 0x7c, 0x1d, 0x94, 0x03, 0x89, 0xc9, 0x67, 0x2c, 0xc3, 0x9b, 0x3b, 0x24, 0xb4, 0xb6, 0xb5, 0x20, - 0xca, 0x15, 0x7b, 0x13, 0xf4, 0x6c, 0x12, 0xe0, 0x3b, 0x7d, 0xcd, 0xfa, 0x3d, 0x09, 0x26, 0x5c, - 0x79, 0x17, 0xdb, 0x6d, 0xf4, 0x58, 0x2e, 0x18, 0x5c, 0xa4, 0x6f, 0xd9, 0xcf, 0x0a, 0x3b, 0xf5, - 0x79, 0x35, 0xa4, 0xf4, 0x23, 0x30, 0x09, 0x84, 0x28, 0x71, 0x42, 0x14, 0xf3, 0xdd, 0x8b, 0x2d, - 0x22, 0x7d, 0xf1, 0x7d, 0x54, 0x82, 0x59, 0x6f, 0x1e, 0xb1, 0x84, 0x9d, 0xd6, 0x36, 0xba, 0x5d, - 0x74, 0xa1, 0x89, 0xb5, 0x34, 0x7f, 0x4f, 0xb6, 0x83, 0xbe, 0x93, 0x49, 0xa8, 0xf2, 0x5c, 0xc9, - 0x11, 0xab, 0x74, 0x89, 0x74, 0x31, 0x8e, 0x60, 0xfa, 0xc2, 0xfc, 0xbc, 0x04, 0xd0, 0x30, 0xfd, - 0xb9, 0xee, 0x01, 0x24, 0xf9, 0x2b, 0xc2, 0xdb, 0xb5, 0xac, 0xe2, 0x41, 0xb1, 0xc9, 0x7b, 0x0e, - 0x41, 0xd7, 0xa4, 0x41, 0x25, 0x8d, 0xa5, 0xad, 0x4f, 0x2d, 0xee, 0x76, 0x3b, 0x7a, 0x4b, 0x73, - 0x7a, 0xfd, 0xe9, 0xa2, 0xc5, 0x4b, 0x2e, 0x8c, 0x4c, 0x64, 0x14, 0xfa, 0x65, 0x44, 0xc8, 0x92, - 0x06, 0x29, 0x91, 0xbc, 0x20, 0x25, 0x82, 0x3e, 0x32, 0x03, 0x88, 0x8f, 0x41, 0x3d, 0x65, 0x38, - 0x5a, 0xeb, 0x62, 0x63, 0xc1, 0xc2, 0x5a, 0xbb, 0x65, 0xed, 0xee, 0x5c, 0xb0, 0xc3, 0xce, 0xa0, - 0xf1, 0x3a, 0x1a, 0x5a, 0x3a, 0x96, 0xb8, 0xa5, 0x63, 0xf4, 0x33, 0xb2, 0x68, 0xc8, 0x9c, 0xd0, - 0x06, 0x47, 0x88, 0x87, 0x21, 0x86, 0xba, 0x44, 0x2e, 0x4c, 0x3d, 0xab, 0xc4, 0xd9, 0x24, 0xab, - 0xc4, 0xaf, 0x17, 0x0a, 0xc0, 0x23, 0x54, 0xaf, 0xb1, 0x78, 0xa2, 0xcd, 0xd5, 0xb1, 0x13, 0x01, - 0xef, 0xf5, 0x30, 0x7b, 0x21, 0xf8, 0xe2, 0x43, 0xcc, 0x27, 0xf6, 0xf1, 0x0f, 0x7d, 0x43, 0xd2, - 0x15, 0x18, 0x9e, 0x85, 0x08, 0x74, 0x7d, 0x04, 0x25, 0x11, 0x27, 0xb4, 0x44, 0xcb, 0x29, 0xb1, - 0xe5, 0xa7, 0x8f, 0xc2, 0x07, 0x25, 0x98, 0x26, 0xd7, 0x60, 0x2e, 0x5c, 0x26, 0xa7, 0x1a, 0x05, - 0x8d, 0x92, 0xe7, 0x87, 0xc5, 0xac, 0x40, 0xb6, 0xa3, 0x1b, 0x17, 0x3d, 0xef, 0x41, 0xf7, 0x39, - 0xb8, 0x54, 0x4d, 0xea, 0x73, 0xa9, 0x9a, 0xbf, 0x4f, 0xe1, 0x97, 0x7b, 0xa0, 0x5b, 0x7e, 0x07, - 0x92, 0x4b, 0x5f, 0x8c, 0x7f, 0x9f, 0x85, 0x7c, 0x1d, 0x6b, 0x56, 0x6b, 0x1b, 0xbd, 0x53, 0xea, - 0x3b, 0x55, 0x98, 0xe4, 0xa7, 0x0a, 0x4b, 0x30, 0xb1, 0xa9, 0x77, 0x1c, 0x6c, 0x51, 0x8f, 0xea, - 0x70, 0xd7, 0x4e, 0x9b, 0xf8, 0x42, 0xc7, 0x6c, 0x5d, 0x9c, 0x67, 0xa6, 0xfb, 0xbc, 0x17, 0x84, - 0x73, 0x7e, 0x89, 0xfc, 0xa4, 0x7a, 0x3f, 0xbb, 0x06, 0xa1, 0x6d, 0x5a, 0x4e, 0xd4, 0xfd, 0x0a, - 0x11, 0x54, 0xea, 0xa6, 0xe5, 0xa8, 0xf4, 0x47, 0x17, 0xe6, 0xcd, 0xdd, 0x4e, 0xa7, 0x81, 0x1f, - 0x74, 0xbc, 0x69, 0x9b, 0xf7, 0xee, 0x1a, 0x8b, 0xe6, 0xe6, 0xa6, 0x8d, 0xe9, 0xa2, 0x41, 0x4e, - 0x65, 0x6f, 0xca, 0x71, 0xc8, 0x75, 0xf4, 0x1d, 0x9d, 0x4e, 0x34, 0x72, 0x2a, 0x7d, 0x51, 0x6e, - 0x82, 0x42, 0x30, 0xc7, 0xa1, 0x8c, 0x9e, 0xca, 0x93, 0xa6, 0xb9, 0x2f, 0xdd, 0xd5, 0x99, 0x8b, - 0xf8, 0xb2, 0x7d, 0x6a, 0x82, 0x7c, 0x27, 0xcf, 0xfc, 0xf1, 0x15, 0x91, 0xfd, 0x0e, 0x2a, 0xf1, - 0xe8, 0x19, 0xac, 0x85, 0x5b, 0xa6, 0xd5, 0xf6, 0x64, 0x13, 0x3d, 0xc1, 0x60, 0xf9, 0x92, 0xed, - 0x52, 0xf4, 0x2d, 0x3c, 0x7d, 0x4d, 0x7b, 0x5b, 0xde, 0xed, 0x36, 0xdd, 0xa2, 0xcf, 0xeb, 0xce, - 0xf6, 0x1a, 0x76, 0x34, 0xf4, 0xf7, 0x72, 0x5f, 0x8d, 0x9b, 0xfe, 0xdf, 0x1a, 0x37, 0x40, 0xe3, - 0x68, 0x78, 0x25, 0x67, 0xd7, 0x32, 0x5c, 0x39, 0x32, 0xaf, 0xd4, 0x50, 0x8a, 0x72, 0x27, 0x5c, - 0x15, 0xbc, 0x79, 0x4b, 0xa5, 0x8b, 0x6c, 0xda, 0x3a, 0x45, 0xb2, 0x47, 0x67, 0x50, 0xd6, 0xe1, - 0x3a, 0xfa, 0x71, 0xa5, 0xb1, 0xb6, 0xba, 0xa2, 0x6f, 0x6d, 0x77, 0xf4, 0xad, 0x6d, 0xc7, 0xae, - 0x18, 0xb6, 0x83, 0xb5, 0x76, 0x6d, 0x53, 0xa5, 0x37, 0xa3, 0x00, 0xa1, 0x23, 0x92, 0x95, 0xf7, - 0xb8, 0x16, 0x1b, 0xdd, 0xc2, 0x9a, 0x12, 0xd1, 0x52, 0x9e, 0xe2, 0xb6, 0x14, 0x7b, 0xb7, 0xe3, - 0x63, 0x7a, 0x4d, 0x0f, 0xa6, 0x81, 0xaa, 0xef, 0x76, 0x48, 0x73, 0x21, 0x99, 0x93, 0x8e, 0x73, - 0x31, 0x9c, 0xa4, 0xdf, 0x6c, 0xfe, 0xbf, 0x3c, 0xe4, 0x96, 0x2d, 0xad, 0xbb, 0x8d, 0x9e, 0x1d, - 0xea, 0x9f, 0x47, 0xd5, 0x26, 0x7c, 0xed, 0x94, 0x06, 0x69, 0xa7, 0x3c, 0x40, 0x3b, 0xb3, 0x21, - 0xed, 0x8c, 0x5e, 0x54, 0x3e, 0x0b, 0x33, 0x2d, 0xb3, 0xd3, 0xc1, 0x2d, 0x57, 0x1e, 0x95, 0x36, - 0x59, 0xcd, 0x99, 0x52, 0xb9, 0x34, 0x12, 0xa8, 0x18, 0x3b, 0x75, 0xba, 0x86, 0x4e, 0x95, 0x3e, - 0x48, 0x40, 0x2f, 0x92, 0x20, 0x5b, 0x6e, 0x6f, 0x61, 0x6e, 0x9d, 0x3d, 0x13, 0x5a, 0x67, 0x3f, - 0x09, 0x79, 0x47, 0xb3, 0xb6, 0xb0, 0xe3, 0xad, 0x13, 0xd0, 0x37, 0x3f, 0x7e, 0xb2, 0x1c, 0x8a, - 0x9f, 0xfc, 0xc3, 0x90, 0x75, 0x65, 0xc6, 0x9c, 0xcc, 0xaf, 0xeb, 0x07, 0x3f, 0x91, 0xfd, 0xbc, - 0x5b, 0xe2, 0xbc, 0x5b, 0x6b, 0x95, 0xfc, 0xd0, 0x8b, 0x75, 0x6e, 0x1f, 0xd6, 0xe4, 0x92, 0xc7, - 0x96, 0x69, 0x54, 0x76, 0xb4, 0x2d, 0xcc, 0xaa, 0x19, 0x24, 0x78, 0x5f, 0xcb, 0x3b, 0xe6, 0x03, - 0x3a, 0x0b, 0x65, 0x1c, 0x24, 0xb8, 0x55, 0xd8, 0xd6, 0xdb, 0x6d, 0x6c, 0xb0, 0x96, 0xcd, 0xde, - 0xce, 0x9e, 0x86, 0xac, 0xcb, 0x83, 0xab, 0x3f, 0xae, 0xb1, 0x50, 0x38, 0xa2, 0xcc, 0xb8, 0xcd, - 0x8a, 0x36, 0xde, 0x42, 0x86, 0x5f, 0x53, 0x15, 0x71, 0xdb, 0xa1, 0x95, 0xeb, 0xdf, 0xb8, 0x9e, - 0x00, 0x39, 0xc3, 0x6c, 0xe3, 0x81, 0x83, 0x10, 0xcd, 0xa5, 0x3c, 0x19, 0x72, 0xb8, 0xed, 0xf6, - 0x0a, 0x32, 0xc9, 0x7e, 0x3a, 0x5e, 0x96, 0x2a, 0xcd, 0x9c, 0xcc, 0x37, 0xa8, 0x1f, 0xb7, 0xe9, - 0x37, 0xc0, 0x9f, 0x9f, 0x80, 0xa3, 0xb4, 0x0f, 0xa8, 0xef, 0x5e, 0x70, 0x49, 0x5d, 0xc0, 0xe8, - 0x91, 0xfe, 0x03, 0xd7, 0x51, 0x5e, 0xd9, 0x8f, 0x43, 0xce, 0xde, 0xbd, 0xe0, 0x1b, 0xa1, 0xf4, - 0x25, 0xdc, 0x74, 0xa5, 0x91, 0x0c, 0x67, 0xf2, 0xb0, 0xc3, 0x19, 0x37, 0x34, 0xc9, 0x5e, 0xe3, - 0x0f, 0x06, 0x32, 0x7a, 0x3c, 0xc2, 0x1b, 0xc8, 0xfa, 0x0d, 0x43, 0xa7, 0x60, 0x42, 0xdb, 0x74, - 0xb0, 0x15, 0x98, 0x89, 0xec, 0xd5, 0x1d, 0x2a, 0x2f, 0xe0, 0x4d, 0xd3, 0x72, 0xc5, 0x32, 0x45, - 0x87, 0x4a, 0xef, 0x3d, 0xd4, 0x72, 0x81, 0xdb, 0x21, 0xbb, 0x19, 0x8e, 0x19, 0xe6, 0x22, 0xee, - 0x32, 0x39, 0x53, 0x14, 0x67, 0x49, 0x0b, 0xd8, 0xff, 0x61, 0x5f, 0x57, 0x32, 0xb7, 0xbf, 0x2b, - 0x41, 0x9f, 0x48, 0x3a, 0x67, 0xee, 0x01, 0x7a, 0x64, 0x16, 0x9a, 0xf2, 0x34, 0x98, 0x69, 0x33, - 0x17, 0xad, 0x96, 0xee, 0xb7, 0x92, 0xc8, 0xff, 0xb8, 0xcc, 0x81, 0x22, 0x65, 0xc3, 0x8a, 0xb4, - 0x0c, 0x93, 0xe4, 0x20, 0xb3, 0xab, 0x49, 0xb9, 0x1e, 0x97, 0x78, 0x32, 0xad, 0xf3, 0x2b, 0x15, - 0x12, 0xdb, 0x7c, 0x89, 0xfd, 0xa2, 0xfa, 0x3f, 0x27, 0x9b, 0x7d, 0xc7, 0x4b, 0x28, 0xfd, 0xe6, - 0xf8, 0xdb, 0x79, 0xb8, 0xaa, 0x64, 0x99, 0xb6, 0x4d, 0xce, 0xc0, 0xf4, 0x36, 0xcc, 0xd7, 0x4a, - 0xdc, 0x4d, 0x0a, 0x8f, 0xea, 0xe6, 0xd7, 0xaf, 0x41, 0x8d, 0xaf, 0x69, 0x7c, 0x59, 0x38, 0x04, - 0x8c, 0xbf, 0xff, 0x10, 0x21, 0xf4, 0xef, 0x8f, 0x46, 0xf2, 0xb6, 0x8c, 0x48, 0x54, 0x9a, 0x84, - 0xb2, 0x4a, 0xbf, 0xb9, 0x7c, 0x4e, 0x82, 0xab, 0x7b, 0xb9, 0xd9, 0x30, 0x6c, 0xbf, 0xc1, 0x5c, - 0x3b, 0xa0, 0xbd, 0xf0, 0x51, 0x4c, 0x62, 0xef, 0x30, 0x8c, 0xa8, 0x7b, 0xa8, 0xb4, 0x88, 0xc5, - 0x92, 0xe0, 0x44, 0x4d, 0xdc, 0x1d, 0x86, 0x89, 0xc9, 0xa7, 0x2f, 0xdc, 0x4f, 0x66, 0xe1, 0xe8, - 0xb2, 0x65, 0xee, 0x76, 0xed, 0xa0, 0x07, 0xfa, 0x9b, 0xfe, 0x1b, 0xae, 0x79, 0x11, 0xd3, 0xe0, - 0x0c, 0x4c, 0x5b, 0xcc, 0x9a, 0x0b, 0xb6, 0x5f, 0xc3, 0x49, 0xe1, 0xde, 0x4b, 0x3e, 0x48, 0xef, - 0x15, 0xf4, 0x33, 0x59, 0xae, 0x9f, 0xe9, 0xed, 0x39, 0x72, 0x7d, 0x7a, 0x8e, 0xbf, 0x96, 0x12, - 0x0e, 0xaa, 0x3d, 0x22, 0x8a, 0xe8, 0x2f, 0x4a, 0x90, 0xdf, 0x22, 0x19, 0x59, 0x77, 0xf1, 0x78, - 0xb1, 0x9a, 0x11, 0xe2, 0x2a, 0xfb, 0x35, 0x90, 0xab, 0x1c, 0xd6, 0xe1, 0x44, 0x03, 0x5c, 0x3c, - 0xb7, 0xe9, 0x2b, 0xd5, 0xc3, 0x59, 0x98, 0xf1, 0x4b, 0xaf, 0xb4, 0x6d, 0xf4, 0xfc, 0xfe, 0x1a, - 0x35, 0x2b, 0xa2, 0x51, 0xfb, 0xd6, 0x99, 0xfd, 0x51, 0x47, 0x0e, 0x8d, 0x3a, 0x7d, 0x47, 0x97, - 0x99, 0x88, 0xd1, 0x05, 0x3d, 0x4b, 0x16, 0xbd, 0x8b, 0x88, 0xef, 0x5a, 0x49, 0x6d, 0x1e, 0xcd, - 0x83, 0x85, 0xe0, 0x8d, 0x48, 0x83, 0x6b, 0x95, 0xbe, 0x92, 0xbc, 0x47, 0x82, 0x63, 0xfb, 0x3b, - 0xf3, 0x1f, 0xe0, 0xbd, 0xd0, 0xdc, 0x3a, 0xd9, 0xbe, 0x17, 0x1a, 0x79, 0xe3, 0x37, 0xe9, 0x62, - 0x43, 0x8a, 0x70, 0xf6, 0xde, 0xe0, 0x4e, 0x5c, 0x2c, 0x68, 0x88, 0x20, 0xd1, 0xf4, 0x05, 0xf8, - 0xab, 0x32, 0x4c, 0xd5, 0xb1, 0xb3, 0xaa, 0x5d, 0x36, 0x77, 0x1d, 0xa4, 0x89, 0x6e, 0xcf, 0x3d, - 0x15, 0xf2, 0x1d, 0xf2, 0x0b, 0xbb, 0xe2, 0xfd, 0x4c, 0xdf, 0xfd, 0x2d, 0xe2, 0xfb, 0x43, 0x49, - 0xab, 0x2c, 0x3f, 0x1f, 0xcb, 0x45, 0x64, 0x77, 0xd4, 0xe7, 0x6e, 0x24, 0x5b, 0x3b, 0x89, 0xf6, - 0x4e, 0xa3, 0x8a, 0x4e, 0x1f, 0x96, 0x9f, 0x91, 0x61, 0xb6, 0x8e, 0x9d, 0x8a, 0xbd, 0xa4, 0xed, - 0x99, 0x96, 0xee, 0xe0, 0xf0, 0x1d, 0x8f, 0xf1, 0xd0, 0x9c, 0x06, 0xd0, 0xfd, 0xdf, 0x58, 0x84, - 0xa9, 0x50, 0x0a, 0xfa, 0xad, 0xa4, 0x8e, 0x42, 0x1c, 0x1f, 0x23, 0x01, 0x21, 0x91, 0x8f, 0x45, - 0x5c, 0xf1, 0xe9, 0x03, 0xf1, 0x59, 0x89, 0x01, 0x51, 0xb4, 0x5a, 0xdb, 0xfa, 0x1e, 0x6e, 0x27, - 0x04, 0xc2, 0xfb, 0x2d, 0x00, 0xc2, 0x27, 0x94, 0xd8, 0x7d, 0x85, 0xe3, 0x63, 0x14, 0xee, 0x2b, - 0x71, 0x04, 0xc7, 0x12, 0x24, 0xca, 0xed, 0x7a, 0xd8, 0x7a, 0xe6, 0xdd, 0xa2, 0x62, 0x0d, 0x4c, - 0x36, 0x29, 0x6c, 0xb2, 0x0d, 0xd5, 0xb1, 0xd0, 0xb2, 0x07, 0xe9, 0x74, 0x36, 0x8d, 0x8e, 0xa5, - 0x6f, 0xd1, 0xe9, 0x0b, 0xfd, 0x1d, 0x32, 0x9c, 0xf0, 0xa3, 0xa7, 0xd4, 0xb1, 0xb3, 0xa8, 0xd9, - 0xdb, 0x17, 0x4c, 0xcd, 0x6a, 0x87, 0xaf, 0xfe, 0x1f, 0xfa, 0xc4, 0x1f, 0xfa, 0x4c, 0x18, 0x84, - 0x2a, 0x0f, 0x42, 0x5f, 0x57, 0xd1, 0xbe, 0xbc, 0x8c, 0xa2, 0x93, 0x89, 0xf5, 0x66, 0xfd, 0x1d, - 0x1f, 0xac, 0x1f, 0xe1, 0xc0, 0xba, 0x6b, 0x58, 0x16, 0xd3, 0x07, 0xee, 0x37, 0xe8, 0x88, 0x10, - 0xf2, 0x6a, 0xbe, 0x5f, 0x14, 0xb0, 0x08, 0xaf, 0x56, 0x39, 0xd2, 0xab, 0x75, 0xa8, 0x31, 0x62, - 0xa0, 0x47, 0x72, 0xba, 0x63, 0xc4, 0x21, 0x7a, 0x1b, 0xbf, 0x45, 0x86, 0x02, 0x09, 0x9f, 0x15, - 0xf2, 0xf8, 0x46, 0x0f, 0x88, 0xa2, 0xb3, 0xcf, 0xbb, 0x7c, 0x22, 0xa9, 0x77, 0x39, 0x7a, 0x73, - 0x52, 0x1f, 0xf2, 0x5e, 0x6e, 0x47, 0x82, 0x58, 0x22, 0x17, 0xf1, 0x01, 0x1c, 0xa4, 0x0f, 0xda, - 0x2f, 0xc8, 0x00, 0x6e, 0x83, 0x66, 0x67, 0x1f, 0x9e, 0x21, 0x0a, 0xd7, 0x2d, 0x61, 0xbf, 0x7a, - 0x17, 0xa8, 0x13, 0x3d, 0x40, 0x51, 0x8a, 0xc1, 0xa9, 0x8a, 0x47, 0x92, 0xfa, 0x56, 0x06, 0x5c, - 0x8d, 0x04, 0x96, 0x44, 0xde, 0x96, 0x91, 0x65, 0xa7, 0x0f, 0xc8, 0x7f, 0x97, 0x20, 0xd7, 0x30, - 0xeb, 0xd8, 0x39, 0xb8, 0x29, 0x90, 0xf8, 0xd8, 0x3e, 0x29, 0x77, 0x14, 0xc7, 0xf6, 0xfb, 0x11, - 0x1a, 0x43, 0x34, 0x32, 0x09, 0x66, 0x1a, 0x66, 0xc9, 0x5f, 0x9c, 0x12, 0xf7, 0x55, 0x15, 0xbf, - 0x4f, 0xd9, 0xaf, 0x60, 0x50, 0xcc, 0x81, 0xee, 0x53, 0x1e, 0x4c, 0x2f, 0x7d, 0xb9, 0xdd, 0x0e, - 0x47, 0x37, 0x8c, 0xb6, 0xa9, 0xe2, 0xb6, 0xc9, 0x56, 0xba, 0x15, 0x05, 0xb2, 0xbb, 0x46, 0xdb, - 0x24, 0x2c, 0xe7, 0x54, 0xf2, 0xec, 0xa6, 0x59, 0xb8, 0x6d, 0x32, 0xdf, 0x00, 0xf2, 0x8c, 0xbe, - 0x2c, 0x43, 0xd6, 0xfd, 0x57, 0x5c, 0xd4, 0x6f, 0x91, 0x13, 0x06, 0x22, 0x70, 0xc9, 0x8f, 0xc4, - 0x12, 0xba, 0x3b, 0xb4, 0xf6, 0x4f, 0x3d, 0x58, 0xaf, 0x8b, 0x2a, 0x2f, 0x24, 0x8a, 0x60, 0xcd, - 0x5f, 0x39, 0x05, 0x13, 0x17, 0x3a, 0x66, 0xeb, 0x62, 0x70, 0x5e, 0x9e, 0xbd, 0x2a, 0x37, 0x41, - 0xce, 0xd2, 0x8c, 0x2d, 0xcc, 0xf6, 0x14, 0x8e, 0xf7, 0xf4, 0x85, 0xc4, 0xeb, 0x45, 0xa5, 0x59, - 0xd0, 0x9b, 0x93, 0x84, 0x40, 0xe8, 0x53, 0xf9, 0x64, 0xfa, 0xb0, 0x38, 0xc4, 0xc9, 0xb2, 0x02, - 0xcc, 0x94, 0x8a, 0xf4, 0xe6, 0xf2, 0xb5, 0xda, 0xb9, 0x72, 0x41, 0x26, 0x30, 0xbb, 0x32, 0x49, - 0x11, 0x66, 0x97, 0xfc, 0xf7, 0x2d, 0xcc, 0x7d, 0x2a, 0x7f, 0x18, 0x30, 0x7f, 0x54, 0x82, 0xd9, - 0x55, 0xdd, 0x76, 0xa2, 0xbc, 0xfd, 0x63, 0xa2, 0xe7, 0xbe, 0x20, 0xa9, 0xa9, 0xcc, 0x95, 0x23, - 0x1c, 0x36, 0x37, 0x91, 0x39, 0x1c, 0x57, 0xc4, 0x78, 0x8e, 0xa5, 0x10, 0x0e, 0xe8, 0x6d, 0xc3, - 0xc2, 0x92, 0x4c, 0x6c, 0x28, 0x05, 0x85, 0x8c, 0xdf, 0x50, 0x8a, 0x2c, 0x3b, 0x7d, 0xf9, 0x7e, - 0x59, 0x82, 0x63, 0x6e, 0xf1, 0x71, 0xcb, 0x52, 0xd1, 0x62, 0x1e, 0xb8, 0x2c, 0x95, 0x78, 0x65, - 0x7c, 0x1f, 0x2f, 0xa3, 0x58, 0x19, 0x1f, 0x44, 0x74, 0xcc, 0x62, 0x8e, 0x58, 0x86, 0x1d, 0x24, - 0xe6, 0x98, 0x65, 0xd8, 0xe1, 0xc5, 0x1c, 0xbf, 0x14, 0x3b, 0xa4, 0x98, 0x0f, 0x6d, 0x81, 0xf5, - 0xd5, 0xb2, 0x2f, 0xe6, 0xc8, 0xb5, 0x8d, 0x18, 0x31, 0x27, 0x3e, 0xb1, 0x8b, 0xde, 0x3a, 0xa4, - 0xe0, 0x47, 0xbc, 0xbe, 0x31, 0x0c, 0x4c, 0x87, 0xb8, 0xc6, 0xf1, 0x9b, 0x32, 0xcc, 0x31, 0x2e, - 0xfa, 0x4f, 0x99, 0x63, 0x30, 0x4a, 0x3c, 0x65, 0x4e, 0x7c, 0x06, 0x88, 0xe7, 0x6c, 0xfc, 0x67, - 0x80, 0x62, 0xcb, 0x4f, 0x1f, 0x9c, 0xaf, 0x64, 0xe1, 0xa4, 0xcb, 0xc2, 0x9a, 0xd9, 0xd6, 0x37, - 0x2f, 0x53, 0x2e, 0xce, 0x69, 0x9d, 0x5d, 0x6c, 0xa3, 0x77, 0x49, 0xa2, 0x28, 0xfd, 0x27, 0x00, - 0xb3, 0x8b, 0x2d, 0x1a, 0x48, 0x8d, 0x01, 0x75, 0x67, 0x54, 0x65, 0xf7, 0x97, 0xe4, 0x5f, 0x26, - 0x53, 0xf3, 0x88, 0xa8, 0x21, 0x7a, 0xae, 0x55, 0x38, 0xe5, 0x7f, 0xe9, 0x75, 0xf0, 0xc8, 0xec, - 0x77, 0xf0, 0xb8, 0x11, 0x64, 0xad, 0xdd, 0xf6, 0xa1, 0xea, 0xdd, 0xcc, 0x26, 0x65, 0xaa, 0x6e, - 0x16, 0x37, 0xa7, 0x8d, 0x83, 0xa3, 0x79, 0x11, 0x39, 0x6d, 0xec, 0x28, 0xf3, 0x90, 0xa7, 0x37, - 0x2f, 0xfb, 0x2b, 0xfa, 0xfd, 0x33, 0xb3, 0x5c, 0xbc, 0x69, 0x57, 0xe3, 0xd5, 0xf0, 0xf6, 0x44, - 0x92, 0xe9, 0xd7, 0x4f, 0x07, 0x76, 0xb2, 0xca, 0x29, 0xd8, 0xd3, 0x87, 0xa6, 0x3c, 0x9e, 0xdd, - 0xb0, 0x62, 0xb7, 0xdb, 0xb9, 0xdc, 0x60, 0xc1, 0x57, 0x12, 0xed, 0x86, 0x85, 0x62, 0xb8, 0x48, - 0xbd, 0x31, 0x5c, 0x92, 0xef, 0x86, 0x71, 0x7c, 0x8c, 0x62, 0x37, 0x2c, 0x8e, 0x60, 0xfa, 0xa2, - 0xfd, 0x6a, 0x8e, 0x5a, 0xcd, 0x2c, 0xb6, 0xff, 0xb3, 0xfb, 0x7b, 0x56, 0x03, 0xef, 0xec, 0xd2, - 0x2f, 0xec, 0x7f, 0xec, 0x9d, 0x26, 0xca, 0x93, 0x21, 0xbf, 0x69, 0x5a, 0x3b, 0x9a, 0xb7, 0x71, - 0xdf, 0x7b, 0x52, 0x84, 0xc5, 0xd3, 0x5f, 0x22, 0x79, 0x54, 0x96, 0xd7, 0x9d, 0x8f, 0x3c, 0x53, - 0xef, 0xb2, 0xa8, 0x8b, 0xee, 0xa3, 0x72, 0x3d, 0xcc, 0xb2, 0xe0, 0x8b, 0x55, 0x6c, 0x3b, 0xb8, - 0xcd, 0x22, 0x56, 0xf0, 0x89, 0xca, 0x59, 0x98, 0x61, 0x09, 0x4b, 0x7a, 0x07, 0xdb, 0x2c, 0x68, - 0x05, 0x97, 0xa6, 0x9c, 0x84, 0xbc, 0x6e, 0xdf, 0x6b, 0x9b, 0x06, 0xf1, 0xff, 0x9f, 0x54, 0xd9, - 0x9b, 0x72, 0x23, 0x1c, 0x65, 0xf9, 0x7c, 0x63, 0x95, 0x1e, 0xd8, 0xe9, 0x4d, 0x76, 0x55, 0xcb, - 0x30, 0xd7, 0x2d, 0x73, 0xcb, 0xc2, 0xb6, 0x4d, 0x4e, 0x4d, 0x4d, 0xaa, 0xa1, 0x14, 0xe5, 0xa9, - 0x70, 0x25, 0xfb, 0xc5, 0x8f, 0x0e, 0xe9, 0x1d, 0x01, 0xa2, 0xce, 0x3d, 0x51, 0x9f, 0xd1, 0xa7, - 0x86, 0x99, 0x92, 0x24, 0xbe, 0x21, 0xc1, 0xc5, 0x77, 0xb7, 0xd5, 0xc2, 0xb8, 0xcd, 0xce, 0x4c, - 0x79, 0xaf, 0x09, 0xef, 0x4e, 0x48, 0x3c, 0x81, 0x39, 0xa4, 0xcb, 0x13, 0xde, 0x7f, 0x02, 0xf2, - 0xf4, 0x22, 0x32, 0xf4, 0xc2, 0xb9, 0xbe, 0x6a, 0x3e, 0xc7, 0xab, 0xf9, 0x06, 0xcc, 0x18, 0xa6, - 0x5b, 0xdc, 0xba, 0x66, 0x69, 0x3b, 0x76, 0xdc, 0xfa, 0x24, 0xa5, 0xeb, 0x0f, 0x46, 0xd5, 0xd0, - 0x6f, 0x2b, 0x47, 0x54, 0x8e, 0x8c, 0xf2, 0x7f, 0xc0, 0xd1, 0x0b, 0x2c, 0xb6, 0x80, 0xcd, 0x28, - 0x4b, 0xd1, 0xde, 0x7b, 0x3d, 0x94, 0x17, 0xf8, 0x3f, 0x57, 0x8e, 0xa8, 0xbd, 0xc4, 0x94, 0x1f, - 0x83, 0x39, 0xf7, 0xb5, 0x6d, 0x5e, 0xf2, 0x18, 0x97, 0xa3, 0x4d, 0x98, 0x1e, 0xf2, 0x6b, 0xdc, - 0x8f, 0x2b, 0x47, 0xd4, 0x1e, 0x52, 0x4a, 0x0d, 0x60, 0xdb, 0xd9, 0xe9, 0x30, 0xc2, 0xd9, 0x68, - 0x95, 0xec, 0x21, 0xbc, 0xe2, 0xff, 0xb4, 0x72, 0x44, 0x0d, 0x91, 0x50, 0x56, 0x61, 0xca, 0x79, - 0xd0, 0x61, 0xf4, 0x72, 0xd1, 0xdb, 0xe6, 0x3d, 0xf4, 0x1a, 0xde, 0x3f, 0x2b, 0x47, 0xd4, 0x80, - 0x80, 0x52, 0x81, 0xc9, 0xee, 0x05, 0x46, 0x2c, 0xdf, 0x27, 0x4e, 0x7d, 0x7f, 0x62, 0xeb, 0x17, - 0x7c, 0x5a, 0xfe, 0xef, 0x2e, 0x63, 0x2d, 0x7b, 0x8f, 0xd1, 0x9a, 0x10, 0x66, 0xac, 0xe4, 0xfd, - 0xe3, 0x32, 0xe6, 0x13, 0x50, 0x2a, 0x30, 0x65, 0x1b, 0x5a, 0xd7, 0xde, 0x36, 0x1d, 0xfb, 0xd4, - 0x64, 0x8f, 0x87, 0x65, 0x34, 0xb5, 0x3a, 0xfb, 0x47, 0x0d, 0xfe, 0x56, 0x9e, 0x0c, 0x27, 0x76, - 0xc9, 0x85, 0xee, 0xe5, 0x07, 0x75, 0xdb, 0xd1, 0x8d, 0x2d, 0x2f, 0x3a, 0x2d, 0xed, 0xa7, 0xfa, - 0x7f, 0x54, 0xe6, 0xd9, 0x59, 0x2b, 0x20, 0x6d, 0x13, 0xf5, 0x6e, 0xf3, 0xd1, 0x62, 0x43, 0x47, - 0xac, 0x9e, 0x06, 0x59, 0xf7, 0x13, 0xe9, 0xd7, 0xe6, 0xfa, 0x2f, 0x21, 0xf6, 0xea, 0x0e, 0x69, - 0xc0, 0xee, 0x4f, 0x3d, 0x5d, 0xe3, 0xcc, 0xbe, 0xae, 0xf1, 0x0c, 0x4c, 0xeb, 0xf6, 0x9a, 0xbe, - 0x45, 0xed, 0x32, 0xe6, 0x49, 0x1f, 0x4e, 0xa2, 0xf3, 0xd8, 0x2a, 0xbe, 0x44, 0xef, 0xde, 0x38, - 0xea, 0xcd, 0x63, 0xbd, 0x14, 0x74, 0x03, 0xcc, 0x84, 0x1b, 0x19, 0xbd, 0xcd, 0x54, 0x0f, 0xac, - 0x3a, 0xf6, 0x86, 0xae, 0x87, 0x39, 0x5e, 0xa7, 0x43, 0x83, 0x97, 0xec, 0x75, 0x85, 0xe8, 0x3a, - 0x38, 0xda, 0xd3, 0xb0, 0xbc, 0x68, 0x25, 0x99, 0x20, 0x5a, 0xc9, 0x19, 0x80, 0x40, 0x8b, 0xfb, - 0x92, 0xb9, 0x16, 0xa6, 0x7c, 0xbd, 0xec, 0x9b, 0xe1, 0x8b, 0x19, 0x98, 0xf4, 0x94, 0xad, 0x5f, - 0x06, 0x77, 0xe4, 0x32, 0x42, 0x5b, 0x13, 0x6c, 0x02, 0xcf, 0xa5, 0xb9, 0x23, 0x54, 0xe0, 0x10, - 0xdc, 0xd0, 0x9d, 0x8e, 0x77, 0xa8, 0xae, 0x37, 0x59, 0x59, 0x07, 0xd0, 0x09, 0x46, 0x8d, 0xe0, - 0x94, 0xdd, 0xad, 0x09, 0xda, 0x03, 0xd5, 0x87, 0x10, 0x8d, 0xb3, 0x3f, 0xc0, 0x8e, 0xc0, 0x4d, - 0x41, 0x8e, 0x86, 0x68, 0x3f, 0xa2, 0xcc, 0x01, 0x94, 0x9f, 0xb1, 0x5e, 0x56, 0x2b, 0xe5, 0x6a, - 0xa9, 0x5c, 0xc8, 0xa0, 0x17, 0x4b, 0x30, 0xe5, 0x37, 0x82, 0xbe, 0x95, 0x2c, 0x33, 0xd5, 0x1a, - 0x78, 0x61, 0xe4, 0xfe, 0x46, 0x15, 0x56, 0xb2, 0xa7, 0xc2, 0x95, 0xbb, 0x36, 0x5e, 0xd2, 0x2d, - 0xdb, 0x51, 0xcd, 0x4b, 0x4b, 0xa6, 0xe5, 0xc7, 0x63, 0x66, 0xb1, 0x51, 0xa3, 0x3e, 0xbb, 0xb6, - 0x4a, 0x1b, 0x93, 0xe3, 0x56, 0xd8, 0x62, 0x6b, 0xce, 0x41, 0x82, 0x4b, 0xd7, 0xb1, 0x34, 0xc3, - 0xee, 0x9a, 0x36, 0x56, 0xcd, 0x4b, 0x76, 0xd1, 0x68, 0x97, 0xcc, 0xce, 0xee, 0x8e, 0x61, 0x33, - 0x6b, 0x23, 0xea, 0xb3, 0x2b, 0x1d, 0x72, 0x1d, 0xec, 0x1c, 0x40, 0xa9, 0xb6, 0xba, 0x5a, 0x2e, - 0x35, 0x2a, 0xb5, 0x6a, 0xe1, 0x88, 0x2b, 0xad, 0x46, 0x71, 0x61, 0xd5, 0x95, 0xce, 0x8f, 0xc3, - 0xa4, 0xd7, 0xa6, 0x59, 0x80, 0x95, 0x8c, 0x17, 0x60, 0x45, 0x29, 0xc2, 0xa4, 0xd7, 0xca, 0xd9, - 0x88, 0xf0, 0xd8, 0xde, 0x03, 0xb5, 0x3b, 0x9a, 0xe5, 0x10, 0x4f, 0x6c, 0x8f, 0xc8, 0x82, 0x66, - 0x63, 0xd5, 0xff, 0xed, 0xec, 0x13, 0x18, 0x07, 0x0a, 0xcc, 0x15, 0x57, 0x57, 0x9b, 0x35, 0xb5, - 0x59, 0xad, 0x35, 0x56, 0x2a, 0xd5, 0x65, 0x3a, 0x42, 0x56, 0x96, 0xab, 0x35, 0xb5, 0x4c, 0x07, - 0xc8, 0x7a, 0x21, 0x43, 0xaf, 0x23, 0x5e, 0x98, 0x84, 0x7c, 0x97, 0x48, 0x17, 0x7d, 0x4e, 0x4e, - 0x78, 0x92, 0xde, 0xc7, 0x29, 0xe2, 0xc2, 0x54, 0xce, 0x9b, 0x5d, 0xea, 0x73, 0xda, 0xf4, 0x2c, - 0xcc, 0x50, 0x2b, 0xd1, 0x26, 0x1b, 0x03, 0x04, 0x39, 0x59, 0xe5, 0xd2, 0xd0, 0x07, 0xa5, 0x04, - 0xc7, 0xeb, 0xfb, 0x72, 0x94, 0xcc, 0xb8, 0xf8, 0xf3, 0xcc, 0x70, 0x17, 0x1a, 0x54, 0xaa, 0x8d, - 0xb2, 0x5a, 0x2d, 0xae, 0xb2, 0x2c, 0xb2, 0x72, 0x0a, 0x8e, 0x57, 0x6b, 0x2c, 0x5a, 0x60, 0xbd, - 0xd9, 0xa8, 0x35, 0x2b, 0x6b, 0xeb, 0x35, 0xb5, 0x51, 0xc8, 0x29, 0x27, 0x41, 0xa1, 0xcf, 0xcd, - 0x4a, 0xbd, 0x59, 0x2a, 0x56, 0x4b, 0xe5, 0xd5, 0xf2, 0x62, 0x21, 0xaf, 0x3c, 0x0e, 0xae, 0xa3, - 0x17, 0xe4, 0xd4, 0x96, 0x9a, 0x6a, 0xed, 0x7c, 0xdd, 0x45, 0x50, 0x2d, 0xaf, 0x16, 0x5d, 0x45, - 0x0a, 0x5d, 0x4b, 0x3c, 0xa1, 0x5c, 0x01, 0x47, 0xc9, 0x95, 0xe3, 0xab, 0xb5, 0xe2, 0x22, 0x2b, - 0x6f, 0x52, 0xb9, 0x06, 0x4e, 0x55, 0xaa, 0xf5, 0x8d, 0xa5, 0xa5, 0x4a, 0xa9, 0x52, 0xae, 0x36, - 0x9a, 0xeb, 0x65, 0x75, 0xad, 0x52, 0xaf, 0xbb, 0xff, 0x16, 0xa6, 0xc8, 0xa5, 0xaf, 0xb4, 0xcf, - 0x44, 0xef, 0x94, 0x61, 0xf6, 0x9c, 0xd6, 0xd1, 0xdd, 0x81, 0x82, 0xdc, 0x06, 0xdd, 0x73, 0x10, - 0xc5, 0x21, 0xb7, 0x46, 0x33, 0x57, 0x76, 0xf2, 0x82, 0x7e, 0x5a, 0x4e, 0x78, 0x10, 0x85, 0x01, - 0x41, 0x4b, 0x9c, 0xe7, 0x4a, 0x8b, 0x98, 0x36, 0xbd, 0x52, 0x4a, 0x70, 0x10, 0x45, 0x9c, 0x7c, - 0x32, 0xf0, 0x5f, 0x32, 0x2a, 0xf0, 0x0b, 0x30, 0xb3, 0x51, 0x2d, 0x6e, 0x34, 0x56, 0x6a, 0x6a, - 0xe5, 0x47, 0x49, 0x1c, 0xf3, 0x59, 0x98, 0x5a, 0xaa, 0xa9, 0x0b, 0x95, 0xc5, 0xc5, 0x72, 0xb5, - 0x90, 0x53, 0xae, 0x84, 0x2b, 0xea, 0x65, 0xf5, 0x5c, 0xa5, 0x54, 0x6e, 0x6e, 0x54, 0x8b, 0xe7, - 0x8a, 0x95, 0x55, 0xd2, 0x47, 0xe4, 0x63, 0x6e, 0xb2, 0x9e, 0x40, 0x3f, 0x99, 0x05, 0xa0, 0x55, - 0x27, 0xd7, 0xf8, 0x84, 0xee, 0x3b, 0xfe, 0x8b, 0xa4, 0x93, 0x86, 0x80, 0x4c, 0x44, 0xfb, 0xad, - 0xc0, 0xa4, 0xc5, 0x3e, 0xb0, 0x85, 0x99, 0x41, 0x74, 0xe8, 0xa3, 0x47, 0x4d, 0xf5, 0x7f, 0x47, - 0xef, 0x4a, 0x32, 0x47, 0x88, 0x64, 0x2c, 0x19, 0x92, 0x4b, 0xa3, 0x01, 0x12, 0x3d, 0x3f, 0x03, - 0x73, 0x7c, 0xc5, 0xdc, 0x4a, 0x10, 0x63, 0x4a, 0xac, 0x12, 0xfc, 0xcf, 0x21, 0x23, 0xeb, 0xec, - 0x93, 0xd8, 0x70, 0x0a, 0x5e, 0xcb, 0xa4, 0x67, 0xca, 0x3d, 0x8b, 0xa5, 0x90, 0x71, 0x99, 0x77, - 0x8d, 0x8e, 0x82, 0xa4, 0x4c, 0x80, 0xdc, 0x78, 0xd0, 0x29, 0xc8, 0xe8, 0x8b, 0x32, 0xcc, 0x72, - 0x17, 0x2a, 0xa3, 0x57, 0x66, 0x44, 0x2e, 0x3b, 0x0d, 0x5d, 0xd5, 0x9c, 0x39, 0xe8, 0x55, 0xcd, - 0x67, 0x6f, 0x81, 0x09, 0x96, 0x46, 0xe4, 0x5b, 0xab, 0xba, 0xa6, 0xc0, 0x51, 0x98, 0x5e, 0x2e, - 0x37, 0x9a, 0xf5, 0x46, 0x51, 0x6d, 0x94, 0x17, 0x0b, 0x19, 0x77, 0xe0, 0x2b, 0xaf, 0xad, 0x37, - 0xee, 0x2f, 0x48, 0xc9, 0x7d, 0xfb, 0x7a, 0x19, 0x19, 0xb3, 0x6f, 0x5f, 0x5c, 0xf1, 0xe9, 0xcf, - 0x55, 0x3f, 0x21, 0x43, 0x81, 0x72, 0x50, 0x7e, 0xb0, 0x8b, 0x2d, 0x1d, 0x1b, 0x2d, 0x8c, 0x2e, - 0x8a, 0xc4, 0x12, 0xdd, 0x17, 0x65, 0x8f, 0xf4, 0xe7, 0x21, 0x2b, 0x91, 0xbe, 0xf4, 0x18, 0xd8, - 0xd9, 0x7d, 0x06, 0xf6, 0xc7, 0x93, 0x3a, 0xf7, 0xf5, 0xb2, 0x3b, 0x12, 0xc8, 0x3e, 0x92, 0xc4, - 0xb9, 0x6f, 0x00, 0x07, 0x63, 0x09, 0x11, 0x1c, 0x31, 0xfe, 0x16, 0x64, 0xf4, 0x3c, 0x19, 0x8e, - 0x2e, 0x6a, 0x0e, 0x5e, 0xb8, 0xdc, 0xf0, 0x2e, 0x3c, 0x8c, 0xb8, 0xa4, 0x38, 0xb3, 0xef, 0x92, - 0xe2, 0xe0, 0xce, 0x44, 0xa9, 0xe7, 0xce, 0x44, 0xf4, 0xb6, 0xa4, 0xc7, 0x01, 0x7b, 0x78, 0x18, - 0x59, 0x1c, 0xdf, 0x64, 0xc7, 0xfc, 0xe2, 0xb9, 0x48, 0xbf, 0x81, 0xbd, 0x69, 0x0a, 0x0a, 0x94, - 0x95, 0x90, 0xff, 0xda, 0xaf, 0xb2, 0x7b, 0xbd, 0x9b, 0x09, 0xc2, 0x05, 0x7a, 0x01, 0x18, 0x24, - 0x3e, 0x00, 0x03, 0xb7, 0x1c, 0x2a, 0xf7, 0xfa, 0x1c, 0x24, 0xed, 0x0c, 0x43, 0xce, 0x6a, 0xd1, - 0x11, 0x5a, 0xd3, 0xeb, 0x0c, 0x63, 0x8b, 0x1f, 0xcf, 0xdd, 0xb3, 0xec, 0x86, 0xc8, 0xb2, 0x28, - 0x32, 0xf1, 0x57, 0x6c, 0x27, 0xf5, 0x5c, 0xe6, 0x9c, 0x05, 0x63, 0xee, 0x9d, 0x4e, 0xcf, 0x73, - 0x79, 0x10, 0x07, 0xe9, 0xa3, 0xf0, 0x1d, 0x09, 0xb2, 0x75, 0xd3, 0x72, 0x46, 0x85, 0x41, 0xd2, - 0xdd, 0xd6, 0x90, 0x04, 0xea, 0xd1, 0x73, 0xce, 0xf4, 0x76, 0x5b, 0xe3, 0xcb, 0x1f, 0x43, 0xc4, - 0xc5, 0xa3, 0x30, 0x47, 0x39, 0xf1, 0xaf, 0x23, 0xf9, 0xb6, 0x44, 0xfb, 0xab, 0xfb, 0x44, 0x11, - 0x39, 0x0b, 0x33, 0xa1, 0xdd, 0x4e, 0x0f, 0x14, 0x2e, 0x0d, 0xbd, 0x36, 0x8c, 0xcb, 0x22, 0x8f, - 0x4b, 0xbf, 0x19, 0xb7, 0x7f, 0xa3, 0xc7, 0xa8, 0x7a, 0xa6, 0x24, 0xc1, 0x1b, 0x63, 0x0a, 0x4f, - 0x1f, 0x91, 0x87, 0x64, 0xc8, 0x33, 0x6f, 0xb3, 0x91, 0x22, 0x90, 0xb4, 0x65, 0xf8, 0x42, 0x10, - 0xf3, 0x4a, 0x93, 0x47, 0xdd, 0x32, 0xe2, 0xcb, 0x4f, 0x1f, 0x87, 0xef, 0x32, 0x37, 0xca, 0xe2, - 0x9e, 0xa6, 0x77, 0xb4, 0x0b, 0x9d, 0x04, 0x41, 0x93, 0x3f, 0x98, 0xf0, 0xe0, 0x98, 0x5f, 0x55, - 0xae, 0xbc, 0x08, 0x89, 0xff, 0x10, 0x4c, 0x59, 0xfe, 0x92, 0xa4, 0x77, 0xae, 0xbe, 0xc7, 0x85, - 0x95, 0x7d, 0x57, 0x83, 0x9c, 0x89, 0x4e, 0x89, 0x09, 0xf1, 0x33, 0x96, 0x53, 0x2d, 0xd3, 0xc5, - 0x76, 0x7b, 0x09, 0x6b, 0xce, 0xae, 0x85, 0xdb, 0x89, 0x86, 0x08, 0x5e, 0x44, 0x53, 0x61, 0x49, - 0x70, 0x61, 0x0b, 0x57, 0x79, 0x74, 0x9e, 0x32, 0xa0, 0x37, 0xf0, 0x78, 0x19, 0x49, 0x97, 0xf4, - 0x46, 0x1f, 0x92, 0x1a, 0x07, 0xc9, 0xd3, 0x86, 0x63, 0x22, 0x7d, 0x40, 0x7e, 0x5d, 0x86, 0x39, - 0x6a, 0x27, 0x8c, 0x1a, 0x93, 0xdf, 0x4f, 0xe8, 0x9d, 0x12, 0xba, 0xf0, 0x29, 0xcc, 0xce, 0x48, - 0x60, 0x49, 0xe2, 0xcb, 0x22, 0xc6, 0x47, 0xfa, 0xc8, 0x7c, 0x2a, 0x0f, 0x10, 0xf2, 0x38, 0xfc, - 0x60, 0x3e, 0x08, 0x21, 0x88, 0xde, 0xcc, 0xe6, 0x1f, 0x75, 0x2e, 0x9e, 0x75, 0xc8, 0x9b, 0xd0, - 0xdf, 0x90, 0xe2, 0x13, 0x85, 0x46, 0x95, 0x3f, 0x4f, 0x68, 0xf3, 0x32, 0x7f, 0xbf, 0x81, 0x83, - 0xfb, 0x90, 0xbd, 0xdc, 0x87, 0x12, 0x18, 0xbf, 0x83, 0x58, 0x49, 0x86, 0xda, 0xea, 0x10, 0x33, - 0xfb, 0x53, 0x70, 0x5c, 0x2d, 0x17, 0x17, 0x6b, 0xd5, 0xd5, 0xfb, 0xc3, 0xb7, 0xff, 0x14, 0xe4, - 0xf0, 0xe4, 0x24, 0x15, 0xd8, 0x5e, 0x95, 0xb0, 0x0f, 0xe4, 0x65, 0x15, 0x7b, 0xb7, 0xfd, 0x47, - 0x12, 0xf4, 0x6a, 0x02, 0x64, 0x0f, 0x13, 0x85, 0x87, 0x20, 0xd4, 0x8c, 0x7e, 0x56, 0x86, 0x82, - 0x3b, 0x1e, 0x52, 0x2e, 0xd9, 0x35, 0x6f, 0x35, 0xde, 0x21, 0xb1, 0x4b, 0xf7, 0x9f, 0x02, 0x87, - 0x44, 0x2f, 0x41, 0xb9, 0x01, 0xe6, 0x5a, 0xdb, 0xb8, 0x75, 0xb1, 0x62, 0x78, 0xfb, 0xea, 0x74, - 0x13, 0xb6, 0x27, 0x95, 0x07, 0xe6, 0x3e, 0x1e, 0x18, 0x7e, 0x12, 0xcd, 0x0d, 0xd2, 0x61, 0xa6, - 0x22, 0x70, 0xf9, 0x23, 0x1f, 0x97, 0x2a, 0x87, 0xcb, 0x1d, 0x43, 0x51, 0x4d, 0x06, 0x4b, 0x75, - 0x08, 0x58, 0x10, 0x9c, 0xac, 0xad, 0x37, 0x2a, 0xb5, 0x6a, 0x73, 0xa3, 0x5e, 0x5e, 0x6c, 0x2e, - 0x78, 0xe0, 0xd4, 0x0b, 0x32, 0xfa, 0xaa, 0x04, 0x13, 0x94, 0x2d, 0x1b, 0x3d, 0x3e, 0x80, 0x60, - 0xa0, 0x27, 0x26, 0x7a, 0x93, 0x70, 0x5c, 0x05, 0x5f, 0x10, 0xac, 0x9c, 0x88, 0x7e, 0xea, 0xa9, - 0x30, 0x41, 0x41, 0xf6, 0x56, 0xb4, 0x4e, 0x47, 0xf4, 0x52, 0x8c, 0x8c, 0xea, 0x65, 0x17, 0x8c, - 0xb1, 0x30, 0x80, 0x8d, 0xf4, 0x47, 0x96, 0x67, 0x65, 0xa9, 0x19, 0x7c, 0x5e, 0x77, 0xb6, 0x89, - 0xa3, 0x26, 0xfa, 0x11, 0x91, 0xe5, 0xc5, 0x9b, 0x21, 0xb7, 0xe7, 0xe6, 0x1e, 0xe0, 0xf4, 0x4a, - 0x33, 0xa1, 0x97, 0x08, 0x87, 0xf4, 0xe4, 0xf4, 0xd3, 0xe7, 0x29, 0x02, 0x9c, 0x35, 0xc8, 0x76, - 0x74, 0xdb, 0x61, 0xe3, 0xc7, 0xed, 0x89, 0x08, 0x79, 0x0f, 0x15, 0x07, 0xef, 0xa8, 0x84, 0x0c, - 0xba, 0x17, 0x66, 0xc2, 0xa9, 0x02, 0x8e, 0xbf, 0xa7, 0x60, 0x82, 0x1d, 0x48, 0x63, 0x4b, 0xac, - 0xde, 0xab, 0xe0, 0xb2, 0xa6, 0x50, 0x6d, 0xd3, 0xd7, 0x81, 0xff, 0xf7, 0x28, 0x4c, 0xac, 0xe8, - 0xb6, 0x63, 0x5a, 0x97, 0xd1, 0x23, 0x19, 0x98, 0x38, 0x87, 0x2d, 0x5b, 0x37, 0x8d, 0x7d, 0xae, - 0x06, 0x67, 0x60, 0xba, 0x6b, 0xe1, 0x3d, 0xdd, 0xdc, 0xb5, 0x83, 0xc5, 0x99, 0x70, 0x92, 0x82, - 0x60, 0x52, 0xdb, 0x75, 0xb6, 0x4d, 0x2b, 0x88, 0x63, 0xe1, 0xbd, 0x2b, 0xa7, 0x01, 0xe8, 0x73, - 0x55, 0xdb, 0xc1, 0xcc, 0x81, 0x22, 0x94, 0xa2, 0x28, 0x90, 0x75, 0xf4, 0x1d, 0xcc, 0x02, 0xdb, - 0x92, 0x67, 0x57, 0xc0, 0x24, 0x48, 0x1c, 0x0b, 0xc6, 0x27, 0xab, 0xde, 0x2b, 0xfa, 0x8c, 0x0c, - 0xd3, 0xcb, 0xd8, 0x61, 0xac, 0xda, 0xe8, 0x05, 0x19, 0xa1, 0xbb, 0x24, 0xdc, 0x31, 0xb6, 0xa3, - 0xd9, 0xde, 0x7f, 0xfe, 0x12, 0x2c, 0x9f, 0x18, 0x44, 0xd9, 0x95, 0xc3, 0x21, 0xb6, 0x49, 0xc8, - 0x35, 0xa7, 0x42, 0xfd, 0x2f, 0x59, 0x66, 0xb6, 0x09, 0xb2, 0xff, 0x03, 0x7a, 0xbb, 0x24, 0x7a, - 0x5c, 0x99, 0xc9, 0x7e, 0x3e, 0x54, 0x9f, 0xc8, 0xee, 0x68, 0x72, 0x8f, 0xe5, 0xd8, 0x17, 0x3d, - 0x3d, 0x4c, 0x89, 0x91, 0x51, 0xfd, 0xdc, 0x82, 0x07, 0x9d, 0x07, 0x73, 0x92, 0xbe, 0x36, 0x7e, - 0x53, 0x86, 0xe9, 0xfa, 0xb6, 0x79, 0xc9, 0x93, 0xe3, 0x8f, 0x8b, 0x01, 0x7b, 0x0d, 0x4c, 0xed, - 0xf5, 0x80, 0x1a, 0x24, 0x44, 0xdf, 0xee, 0x8e, 0x9e, 0x2b, 0x27, 0x85, 0x29, 0xc4, 0xdc, 0xc8, - 0xef, 0x5e, 0x57, 0x9e, 0x02, 0x13, 0x8c, 0x6b, 0xb6, 0xe4, 0x12, 0x0f, 0xb0, 0x97, 0x39, 0x5c, - 0xc1, 0x2c, 0x5f, 0xc1, 0x64, 0xc8, 0x47, 0x57, 0x2e, 0x7d, 0xe4, 0xff, 0x44, 0x22, 0x61, 0x2e, - 0x3c, 0xe0, 0x4b, 0x23, 0x00, 0x1e, 0x7d, 0x2b, 0x23, 0xba, 0x30, 0xe9, 0x4b, 0xc0, 0xe7, 0xe0, - 0x40, 0xf7, 0xc4, 0x0c, 0x24, 0x97, 0xbe, 0x3c, 0x5f, 0x9c, 0x85, 0x99, 0x45, 0x7d, 0x73, 0xd3, - 0xef, 0x24, 0x7f, 0x49, 0xb0, 0x93, 0x8c, 0x76, 0x07, 0x70, 0xed, 0xdc, 0x5d, 0xcb, 0xc2, 0x86, - 0x57, 0x29, 0xd6, 0x9c, 0x7a, 0x52, 0x95, 0x1b, 0xe1, 0xa8, 0x37, 0x2e, 0x84, 0x3b, 0xca, 0x29, - 0xb5, 0x37, 0x19, 0x7d, 0x43, 0x78, 0x57, 0xcb, 0x93, 0x68, 0xb8, 0x4a, 0x11, 0x0d, 0xf0, 0x4e, - 0x98, 0xdd, 0xa6, 0xb9, 0xc9, 0xd4, 0xdf, 0xeb, 0x2c, 0x4f, 0xf6, 0x84, 0x11, 0x5e, 0xc3, 0xb6, - 0xad, 0x6d, 0x61, 0x95, 0xcf, 0xdc, 0xd3, 0x7c, 0xe5, 0x24, 0x97, 0x62, 0x89, 0x6d, 0x90, 0x09, - 0xd4, 0x64, 0x0c, 0xda, 0x71, 0x16, 0xb2, 0x4b, 0x7a, 0x07, 0xa3, 0x9f, 0x93, 0x60, 0x4a, 0xc5, - 0x2d, 0xd3, 0x68, 0xb9, 0x6f, 0x21, 0xe7, 0xa0, 0x7f, 0xca, 0x88, 0x5e, 0x06, 0xe9, 0xd2, 0x99, - 0xf7, 0x69, 0x44, 0xb4, 0x1b, 0xb1, 0x4b, 0x1f, 0x63, 0x49, 0x8d, 0xe1, 0xea, 0x0e, 0x77, 0xea, - 0xb1, 0xb9, 0xd9, 0x31, 0x35, 0x6e, 0xf1, 0xab, 0xd7, 0x14, 0xba, 0x09, 0x0a, 0xde, 0xe9, 0x11, - 0xd3, 0x59, 0xd7, 0x0d, 0xc3, 0x3f, 0x9e, 0xbc, 0x2f, 0x9d, 0xdf, 0xb7, 0x8d, 0x8d, 0xf0, 0x42, - 0xea, 0xce, 0x4a, 0x8f, 0xd0, 0xec, 0x1b, 0x60, 0xee, 0xc2, 0x65, 0x07, 0xdb, 0x2c, 0x17, 0x2b, - 0x36, 0xab, 0xf6, 0xa4, 0x86, 0xe2, 0x33, 0xc7, 0x45, 0x82, 0x89, 0x29, 0x30, 0x99, 0xa8, 0x57, - 0x86, 0x98, 0x01, 0x1e, 0x87, 0x42, 0xb5, 0xb6, 0x58, 0x26, 0xbe, 0x6a, 0x9e, 0xf7, 0xcf, 0x16, - 0xfa, 0x15, 0x19, 0x66, 0x88, 0x33, 0x89, 0x87, 0xc2, 0x75, 0x02, 0xf3, 0x11, 0xf4, 0x79, 0x61, - 0x3f, 0x36, 0x52, 0xe5, 0x70, 0x01, 0xd1, 0x82, 0xde, 0xd4, 0x3b, 0xbd, 0x82, 0xce, 0xa9, 0x3d, - 0xa9, 0x7d, 0x00, 0x91, 0xfb, 0x02, 0xf2, 0xbb, 0x42, 0xce, 0x6c, 0x83, 0xb8, 0x3b, 0x2c, 0x54, - 0x7e, 0x4f, 0x86, 0x69, 0x77, 0x92, 0xe2, 0x81, 0x52, 0xe3, 0x40, 0x31, 0x8d, 0xce, 0xe5, 0x60, - 0x59, 0xc4, 0x7b, 0x4d, 0xd4, 0x48, 0xfe, 0x4a, 0x78, 0xe6, 0x4e, 0x44, 0x14, 0xe2, 0x65, 0x4c, - 0xf8, 0xbd, 0x5b, 0x68, 0x3e, 0x3f, 0x80, 0xb9, 0xc3, 0x82, 0xef, 0xcb, 0x39, 0xc8, 0x6f, 0x74, - 0x09, 0x72, 0x2f, 0x91, 0x45, 0x62, 0x9d, 0xef, 0x3b, 0xc8, 0xe0, 0x9a, 0x59, 0x1d, 0xb3, 0xa5, - 0x75, 0xd6, 0x83, 0x13, 0x61, 0x41, 0x82, 0x72, 0x07, 0xf3, 0x6d, 0xa4, 0x07, 0xf5, 0x6e, 0x88, - 0x0d, 0x03, 0x4e, 0x64, 0x14, 0x3a, 0x34, 0x72, 0x33, 0x1c, 0x6b, 0xeb, 0xb6, 0x76, 0xa1, 0x83, - 0xcb, 0x46, 0xcb, 0xba, 0x4c, 0xc5, 0xc1, 0xa6, 0x55, 0xfb, 0x3e, 0x28, 0x77, 0x41, 0xce, 0x76, - 0x2e, 0x77, 0xe8, 0x3c, 0x31, 0x7c, 0xc6, 0x24, 0xb2, 0xa8, 0xba, 0x9b, 0x5d, 0xa5, 0x7f, 0x85, - 0x5d, 0x94, 0x26, 0x04, 0x6f, 0x82, 0x7e, 0x12, 0xe4, 0x4d, 0x4b, 0xdf, 0xd2, 0xe9, 0xcd, 0x3e, - 0x73, 0xfb, 0xa2, 0xdd, 0x51, 0x53, 0xa0, 0x46, 0xb2, 0xa8, 0x2c, 0xab, 0xf2, 0x14, 0x98, 0xd2, - 0x77, 0xb4, 0x2d, 0x7c, 0x9f, 0x6e, 0xd0, 0xb3, 0x80, 0x73, 0xb7, 0x9d, 0xda, 0x77, 0x7c, 0x86, - 0x7d, 0x57, 0x83, 0xac, 0xe8, 0xdd, 0x92, 0x68, 0x48, 0x1e, 0x52, 0x37, 0x0a, 0xea, 0x58, 0x6e, - 0xc4, 0x46, 0x2f, 0x17, 0x0a, 0x96, 0x13, 0xcd, 0x56, 0xfa, 0x83, 0xf7, 0xa7, 0x25, 0x98, 0x5c, - 0x34, 0x2f, 0x19, 0x44, 0xd1, 0x6f, 0x17, 0xb3, 0x75, 0xfb, 0x1c, 0x72, 0xe4, 0x2f, 0x9c, 0x8c, - 0x3d, 0xd1, 0x40, 0x6a, 0xeb, 0x15, 0x19, 0x01, 0x43, 0x6c, 0xcb, 0x11, 0xbc, 0x06, 0x30, 0xae, - 0x9c, 0xf4, 0xe5, 0xfa, 0xa7, 0x32, 0x64, 0x17, 0x2d, 0xb3, 0x8b, 0xde, 0x98, 0x49, 0xe0, 0xb2, - 0xd0, 0xb6, 0xcc, 0x6e, 0x83, 0xdc, 0xe3, 0x15, 0x1c, 0xe3, 0x08, 0xa7, 0x29, 0xb7, 0xc3, 0x64, - 0xd7, 0xb4, 0x75, 0xc7, 0x9b, 0x46, 0xcc, 0xdd, 0xf6, 0x98, 0xbe, 0xad, 0x79, 0x9d, 0x65, 0x52, - 0xfd, 0xec, 0x6e, 0xaf, 0x4d, 0x44, 0xe8, 0xca, 0xc5, 0x15, 0xa3, 0x77, 0x97, 0x59, 0x4f, 0x2a, - 0x7a, 0x61, 0x18, 0xc9, 0xa7, 0xf1, 0x48, 0x3e, 0xb6, 0x8f, 0x84, 0x2d, 0xb3, 0x3b, 0x92, 0x4d, - 0xc6, 0x97, 0xfa, 0xa8, 0x3e, 0x9d, 0x43, 0xf5, 0x26, 0xa1, 0x32, 0xd3, 0x47, 0xf4, 0xdd, 0x59, - 0x00, 0x62, 0x66, 0x6c, 0xb8, 0x13, 0x20, 0x31, 0x1b, 0xeb, 0x67, 0xb2, 0x21, 0x59, 0x16, 0x79, - 0x59, 0x3e, 0x3e, 0xc2, 0x8a, 0x21, 0xe4, 0x23, 0x24, 0x5a, 0x84, 0xdc, 0xae, 0xfb, 0x99, 0x49, - 0x54, 0x90, 0x04, 0x79, 0x55, 0xe9, 0x9f, 0xe8, 0x4f, 0x32, 0x90, 0x23, 0x09, 0xca, 0x69, 0x00, - 0x32, 0xb0, 0xd3, 0x03, 0x41, 0x19, 0x32, 0x84, 0x87, 0x52, 0x88, 0xb6, 0xea, 0x6d, 0xf6, 0x99, - 0x9a, 0xcc, 0x41, 0x82, 0xfb, 0x37, 0x19, 0xee, 0x09, 0x2d, 0x66, 0x00, 0x84, 0x52, 0xdc, 0xbf, - 0xc9, 0xdb, 0x2a, 0xde, 0xa4, 0x21, 0x96, 0xb3, 0x6a, 0x90, 0xe0, 0xff, 0xbd, 0xea, 0x5f, 0xcc, - 0xe5, 0xfd, 0x4d, 0x52, 0xdc, 0xc9, 0x30, 0x51, 0xcb, 0x85, 0xa0, 0x88, 0x3c, 0xc9, 0xd4, 0x9b, - 0x8c, 0x5e, 0xe5, 0xab, 0xcd, 0x22, 0xa7, 0x36, 0xb7, 0x26, 0x10, 0x6f, 0xfa, 0xca, 0xf3, 0xc5, - 0x1c, 0x4c, 0x55, 0xcd, 0x36, 0xd3, 0x9d, 0xd0, 0x84, 0xf1, 0x23, 0xb9, 0x44, 0x13, 0x46, 0x9f, - 0x46, 0x84, 0x82, 0xdc, 0xc3, 0x2b, 0x88, 0x18, 0x85, 0xb0, 0x7e, 0x28, 0x0b, 0x90, 0x27, 0xda, - 0xbb, 0xff, 0xc6, 0xa7, 0x38, 0x12, 0x44, 0xb4, 0x2a, 0xfb, 0xf3, 0x3f, 0x9c, 0x8e, 0xfd, 0x57, - 0xc8, 0x91, 0x0a, 0xc6, 0xec, 0xee, 0xf0, 0x15, 0x95, 0xe2, 0x2b, 0x2a, 0xc7, 0x57, 0x34, 0xdb, - 0x5b, 0xd1, 0x24, 0xeb, 0x00, 0x51, 0x1a, 0x92, 0xbe, 0x8e, 0xff, 0xe3, 0x04, 0x40, 0x55, 0xdb, - 0xd3, 0xb7, 0xe8, 0xee, 0xf0, 0x67, 0xbc, 0xf9, 0x0f, 0xdb, 0xc7, 0xfd, 0x85, 0xd0, 0x40, 0x78, - 0x3b, 0x4c, 0xb0, 0x71, 0x8f, 0x55, 0xe4, 0x5a, 0xae, 0x22, 0x01, 0x15, 0x6a, 0x96, 0x3e, 0xe8, - 0xa8, 0x5e, 0x7e, 0xee, 0x72, 0x5a, 0xa9, 0xe7, 0x72, 0xda, 0xfe, 0x7b, 0x10, 0x11, 0x57, 0xd6, - 0xa2, 0x77, 0x08, 0x7b, 0xf4, 0x87, 0xf8, 0x09, 0xd5, 0x28, 0xa2, 0x09, 0x3e, 0x09, 0x26, 0x4c, - 0x7f, 0x43, 0x5b, 0x8e, 0x5c, 0x07, 0xab, 0x18, 0x9b, 0xa6, 0xea, 0xe5, 0x14, 0xdc, 0xfc, 0x12, - 0xe2, 0x63, 0x2c, 0x87, 0x66, 0x4e, 0x2e, 0x7b, 0xe1, 0xaa, 0xdc, 0x7a, 0x9c, 0xd7, 0x9d, 0xed, - 0x55, 0xdd, 0xb8, 0x68, 0xa3, 0xff, 0x2c, 0x66, 0x41, 0x86, 0xf0, 0x97, 0x92, 0xe1, 0xcf, 0xc7, - 0xec, 0xa8, 0xf3, 0xa8, 0xdd, 0x15, 0x45, 0xa5, 0x3f, 0xb7, 0x11, 0x00, 0xde, 0x01, 0x79, 0xca, - 0x28, 0xeb, 0x44, 0xcf, 0x46, 0xe2, 0xe7, 0x53, 0x52, 0xd9, 0x1f, 0xe8, 0xed, 0x3e, 0x8e, 0xe7, - 0x38, 0x1c, 0x17, 0x0e, 0xc4, 0x59, 0xea, 0x90, 0x9e, 0x7d, 0x22, 0x4c, 0x30, 0x49, 0x2b, 0x73, - 0xe1, 0x56, 0x5c, 0x38, 0xa2, 0x00, 0xe4, 0xd7, 0xcc, 0x3d, 0xdc, 0x30, 0x0b, 0x19, 0xf7, 0xd9, - 0xe5, 0xaf, 0x61, 0x16, 0x24, 0xf4, 0xb2, 0x49, 0x98, 0xf4, 0xe3, 0x04, 0x7d, 0x5a, 0x82, 0x42, - 0xc9, 0xc2, 0x9a, 0x83, 0x97, 0x2c, 0x73, 0x87, 0xd6, 0x48, 0xdc, 0x3b, 0xf4, 0xd7, 0x85, 0x5d, - 0x3c, 0xfc, 0xf8, 0x3d, 0xbd, 0x85, 0x45, 0x60, 0x49, 0x17, 0x21, 0x25, 0x6f, 0x11, 0x12, 0xbd, - 0x41, 0xc8, 0xe5, 0x43, 0xb4, 0x94, 0xf4, 0x9b, 0xda, 0xc7, 0x25, 0xc8, 0x95, 0x3a, 0xa6, 0x81, - 0xc3, 0x47, 0x98, 0x06, 0x9e, 0x95, 0xe9, 0xbf, 0x13, 0x81, 0x9e, 0x25, 0x89, 0xda, 0x1a, 0x81, - 0x00, 0xdc, 0xb2, 0x05, 0x65, 0x2b, 0x36, 0x48, 0xc5, 0x92, 0x1e, 0x43, 0x1c, 0x26, 0x09, 0xa6, - 0x68, 0x5c, 0x9c, 0x62, 0xa7, 0x83, 0x1e, 0x13, 0x08, 0xb5, 0x4f, 0xac, 0x25, 0xf4, 0xbb, 0xc2, - 0x2e, 0xfa, 0x7e, 0xad, 0x7c, 0xda, 0x09, 0x02, 0x04, 0x25, 0xf3, 0x18, 0x17, 0xdb, 0x4b, 0x1b, - 0xc8, 0x50, 0xfa, 0xa2, 0xfe, 0x0b, 0xc9, 0x35, 0x00, 0x8c, 0x8b, 0xeb, 0x16, 0xde, 0xd3, 0xf1, - 0x25, 0x74, 0x75, 0x20, 0xec, 0xfd, 0x41, 0x3f, 0x5e, 0x27, 0xbc, 0x88, 0x13, 0x22, 0x19, 0xb9, - 0x95, 0x35, 0xdd, 0x09, 0x32, 0xb1, 0x5e, 0xbc, 0x37, 0x12, 0x4b, 0x88, 0x8c, 0x1a, 0xce, 0x2e, - 0xb8, 0x66, 0x13, 0xcd, 0x45, 0xfa, 0x82, 0x7d, 0xdf, 0x04, 0x4c, 0x6e, 0x18, 0x76, 0xb7, 0xa3, - 0xd9, 0xdb, 0xe8, 0xdb, 0x32, 0xe4, 0xe9, 0x3d, 0x63, 0xe8, 0x87, 0xb8, 0xd8, 0x02, 0x3f, 0xb1, - 0x8b, 0x2d, 0xcf, 0x05, 0x87, 0xbe, 0xf4, 0xbf, 0x06, 0x1d, 0xbd, 0x5b, 0x16, 0x9d, 0xa4, 0x7a, - 0x85, 0x86, 0x2e, 0x9c, 0xef, 0x7f, 0x9c, 0xbd, 0xab, 0xb7, 0x9c, 0x5d, 0xcb, 0xbf, 0x54, 0xfb, - 0x09, 0x62, 0x54, 0xd6, 0xe9, 0x5f, 0xaa, 0xff, 0x3b, 0xd2, 0x60, 0x82, 0x25, 0xee, 0xdb, 0x4e, - 0xda, 0x7f, 0xfe, 0xf6, 0x24, 0xe4, 0x35, 0xcb, 0xd1, 0x6d, 0x87, 0x6d, 0xb0, 0xb2, 0x37, 0xb7, - 0xbb, 0xa4, 0x4f, 0x1b, 0x56, 0xc7, 0x8b, 0x42, 0xe2, 0x27, 0xa0, 0xdf, 0x13, 0x9a, 0x3f, 0xc6, - 0xd7, 0x3c, 0x19, 0xe4, 0xf7, 0x0d, 0xb1, 0x46, 0x7d, 0x25, 0x5c, 0xa1, 0x16, 0x1b, 0xe5, 0x26, - 0x0d, 0x5a, 0xe1, 0xc7, 0xa7, 0x68, 0xa3, 0xb7, 0xc9, 0xa1, 0xf5, 0xbb, 0xcb, 0xdc, 0x18, 0xc1, - 0xa4, 0x18, 0x8c, 0x11, 0x7e, 0x42, 0xcc, 0x6e, 0x35, 0xb7, 0x08, 0x2b, 0x8b, 0x2f, 0xc2, 0xfe, - 0xb6, 0xf0, 0x6e, 0x92, 0x2f, 0xca, 0x01, 0x6b, 0x80, 0x71, 0xf7, 0x10, 0xbd, 0x47, 0x68, 0x67, - 0x68, 0x50, 0x49, 0x87, 0x08, 0xdb, 0x6b, 0x27, 0x60, 0x62, 0x59, 0xeb, 0x74, 0xb0, 0x75, 0xd9, - 0x1d, 0x92, 0x0a, 0x1e, 0x87, 0x6b, 0x9a, 0xa1, 0x6f, 0x62, 0xdb, 0x89, 0xef, 0x2c, 0xdf, 0x21, - 0x1c, 0xe3, 0x96, 0x95, 0x31, 0xdf, 0x4b, 0x3f, 0x42, 0xe6, 0xb7, 0x40, 0x56, 0x37, 0x36, 0x4d, - 0xd6, 0x65, 0xf6, 0xae, 0xda, 0x7b, 0x3f, 0x93, 0xa9, 0x0b, 0xc9, 0x28, 0x18, 0xe6, 0x56, 0x90, - 0x8b, 0xf4, 0x7b, 0xce, 0xdf, 0xc9, 0xc2, 0xac, 0xc7, 0x44, 0xc5, 0x68, 0xe3, 0x07, 0xc3, 0x4b, - 0x31, 0xbf, 0x92, 0x15, 0x3d, 0x0e, 0xd6, 0x5b, 0x1f, 0x42, 0x2a, 0x42, 0xa4, 0x0d, 0x80, 0x96, - 0xe6, 0xe0, 0x2d, 0xd3, 0xd2, 0xfd, 0xfe, 0xf0, 0xc9, 0x49, 0xa8, 0x95, 0xe8, 0xdf, 0x97, 0xd5, - 0x10, 0x1d, 0xe5, 0x2e, 0x98, 0xc6, 0xfe, 0xf9, 0x7b, 0x6f, 0xa9, 0x26, 0x16, 0xaf, 0x70, 0x7e, - 0xf4, 0x17, 0x42, 0xa7, 0xce, 0x44, 0xaa, 0x99, 0x0c, 0xb3, 0xe6, 0x70, 0x6d, 0x68, 0xa3, 0xba, - 0x56, 0x54, 0xeb, 0x2b, 0xc5, 0xd5, 0xd5, 0x4a, 0x75, 0xd9, 0x0f, 0xfc, 0xa2, 0xc0, 0xdc, 0x62, - 0xed, 0x7c, 0x35, 0x14, 0x99, 0x27, 0x8b, 0xd6, 0x61, 0xd2, 0x93, 0x57, 0x3f, 0x5f, 0xcc, 0xb0, - 0xcc, 0x98, 0x2f, 0x66, 0x28, 0xc9, 0x35, 0xce, 0xf4, 0x96, 0xef, 0xa0, 0x43, 0x9e, 0xd1, 0x1f, - 0x6b, 0x90, 0x23, 0x6b, 0xea, 0xe8, 0x2d, 0x64, 0x1b, 0xb0, 0xdb, 0xd1, 0x5a, 0x18, 0xed, 0x24, - 0xb0, 0xc6, 0xbd, 0x4b, 0x17, 0xa4, 0x7d, 0x97, 0x2e, 0x90, 0x47, 0x66, 0xf5, 0x1d, 0xef, 0xb7, - 0x8e, 0xaf, 0xd2, 0x2c, 0xfc, 0x01, 0xad, 0xd8, 0xdd, 0x15, 0xba, 0xfc, 0xcf, 0xd8, 0x8c, 0x50, - 0xc9, 0x68, 0x9e, 0x92, 0x59, 0xa2, 0x62, 0xfb, 0x30, 0x71, 0x1c, 0x8d, 0xe1, 0x62, 0xf0, 0x2c, - 0xe4, 0xea, 0xdd, 0x8e, 0xee, 0xa0, 0xdf, 0x94, 0x46, 0x82, 0x19, 0xbd, 0x28, 0x43, 0x1e, 0x78, - 0x51, 0x46, 0xb0, 0xeb, 0x9a, 0x15, 0xd8, 0x75, 0x6d, 0xe0, 0x07, 0x1d, 0x7e, 0xd7, 0xf5, 0x76, - 0x16, 0xbc, 0x8d, 0xee, 0xd9, 0x3e, 0xb6, 0x8f, 0x48, 0x49, 0xb5, 0xfa, 0x44, 0x05, 0x3c, 0xfb, - 0x44, 0x16, 0x9c, 0x0c, 0x20, 0xbf, 0x50, 0x6b, 0x34, 0x6a, 0x6b, 0x85, 0x23, 0x24, 0xaa, 0x4d, - 0x6d, 0x9d, 0x86, 0x8a, 0xa9, 0x54, 0xab, 0x65, 0xb5, 0x20, 0x91, 0x70, 0x69, 0x95, 0xc6, 0x6a, - 0xb9, 0x20, 0xf3, 0x51, 0xd3, 0x63, 0xcd, 0x6f, 0xbe, 0xec, 0x34, 0xd5, 0x4b, 0xcc, 0x10, 0x8f, - 0xe6, 0x27, 0x7d, 0xe5, 0xfa, 0x35, 0x19, 0x72, 0x6b, 0xd8, 0xda, 0xc2, 0xe8, 0x27, 0x12, 0x6c, - 0xf2, 0x6d, 0xea, 0x96, 0x4d, 0x83, 0xcb, 0x05, 0x9b, 0x7c, 0xe1, 0x34, 0xe5, 0x7a, 0x98, 0xb5, - 0x71, 0xcb, 0x34, 0xda, 0x5e, 0x26, 0xda, 0x1f, 0xf1, 0x89, 0xfc, 0x8d, 0xf5, 0x02, 0x90, 0x11, - 0x46, 0x47, 0xb2, 0x53, 0x97, 0x04, 0x98, 0x7e, 0xa5, 0xa6, 0x0f, 0xcc, 0x37, 0x64, 0xf7, 0xa7, - 0xee, 0x65, 0xf4, 0x22, 0xe1, 0xdd, 0xd7, 0x9b, 0x21, 0x4f, 0xd4, 0xd4, 0x1b, 0xa3, 0xfb, 0xf7, - 0xc7, 0x2c, 0x8f, 0xb2, 0x00, 0xc7, 0x6c, 0xdc, 0xc1, 0x2d, 0x07, 0xb7, 0xdd, 0xa6, 0xab, 0x0e, - 0xec, 0x14, 0xf6, 0x67, 0x47, 0x7f, 0x16, 0x06, 0xf0, 0x4e, 0x1e, 0xc0, 0x1b, 0xfa, 0x88, 0xd2, - 0xad, 0x50, 0xb4, 0xad, 0xec, 0x56, 0xa3, 0xde, 0x31, 0xfd, 0x45, 0x71, 0xef, 0xdd, 0xfd, 0xb6, - 0xed, 0xec, 0x74, 0xc8, 0x37, 0x76, 0xc0, 0xc0, 0x7b, 0x57, 0xe6, 0x61, 0x42, 0x33, 0x2e, 0x93, - 0x4f, 0xd9, 0x98, 0x5a, 0x7b, 0x99, 0xd0, 0xcb, 0x7c, 0xe4, 0xef, 0xe6, 0x90, 0x7f, 0xbc, 0x18, - 0xbb, 0xe9, 0x03, 0xff, 0xd3, 0x13, 0x90, 0x5b, 0xd7, 0x6c, 0x07, 0xa3, 0xff, 0x47, 0x16, 0x45, - 0xfe, 0x06, 0x98, 0xdb, 0x34, 0x5b, 0xbb, 0x36, 0x6e, 0xf3, 0x8d, 0xb2, 0x27, 0x75, 0x14, 0x98, - 0x2b, 0x37, 0x41, 0xc1, 0x4b, 0x64, 0x64, 0xbd, 0x6d, 0xf8, 0x7d, 0xe9, 0x24, 0x06, 0xb7, 0xbd, - 0xae, 0x59, 0x4e, 0x6d, 0x93, 0xa4, 0xf9, 0x31, 0xb8, 0xc3, 0x89, 0x1c, 0xf4, 0xf9, 0x18, 0xe8, - 0x27, 0xa2, 0xa1, 0x9f, 0x14, 0x80, 0x5e, 0x29, 0xc2, 0xe4, 0xa6, 0xde, 0xc1, 0xe4, 0x87, 0x29, - 0xf2, 0x43, 0xbf, 0x31, 0x89, 0xc8, 0xde, 0x1f, 0x93, 0x96, 0xf4, 0x0e, 0x56, 0xfd, 0xdf, 0xbc, - 0x89, 0x0c, 0x04, 0x13, 0x99, 0x55, 0xea, 0x4f, 0xeb, 0x1a, 0x5e, 0x86, 0xb6, 0x83, 0xbd, 0xc5, - 0x37, 0x83, 0x1d, 0x6e, 0x69, 0x6b, 0x8e, 0x46, 0xc0, 0x98, 0x51, 0xc9, 0x33, 0xef, 0x17, 0x22, - 0xf7, 0xfa, 0x85, 0x3c, 0x47, 0x4e, 0xd6, 0x23, 0x7a, 0xcc, 0x46, 0xb4, 0xa8, 0x0b, 0x1e, 0x40, - 0xd4, 0x52, 0xf4, 0xdf, 0x5d, 0x60, 0x5a, 0x9a, 0x85, 0x9d, 0xf5, 0xb0, 0x27, 0x46, 0x4e, 0xe5, - 0x13, 0x89, 0x2b, 0x9f, 0x5d, 0xd7, 0x76, 0x30, 0x29, 0xac, 0xe4, 0x7e, 0x63, 0x2e, 0x5a, 0xfb, - 0xd2, 0x83, 0xfe, 0x37, 0x37, 0xea, 0xfe, 0xb7, 0x5f, 0x1d, 0xd3, 0x6f, 0x86, 0xaf, 0xcc, 0x82, - 0x5c, 0xda, 0x75, 0x1e, 0xd5, 0xdd, 0xef, 0x77, 0x84, 0xfd, 0x5c, 0x58, 0x7f, 0x16, 0x79, 0x45, - 0xfd, 0x98, 0x7a, 0xdf, 0x84, 0x5a, 0x22, 0xe6, 0x4f, 0x13, 0x55, 0xb7, 0xf4, 0x75, 0xe4, 0x8d, - 0xb2, 0xef, 0x60, 0xf9, 0x50, 0xe6, 0xe0, 0xa6, 0x39, 0xa2, 0xfd, 0x53, 0xa8, 0x67, 0xf0, 0xdf, - 0xbd, 0x8e, 0x27, 0xcb, 0xc5, 0xea, 0x23, 0xdb, 0xeb, 0x44, 0x94, 0x33, 0x2a, 0x7d, 0x41, 0x2f, - 0x16, 0x76, 0x3b, 0xa7, 0x62, 0x8b, 0x75, 0x25, 0x4c, 0x66, 0x53, 0x89, 0x5d, 0x43, 0x1a, 0x53, - 0x6c, 0xfa, 0x80, 0x7d, 0x3d, 0xec, 0x2a, 0x58, 0x3c, 0x30, 0x62, 0xe8, 0xe5, 0xc2, 0xdb, 0x51, - 0xb4, 0xda, 0x03, 0xd6, 0x0b, 0x93, 0xc9, 0x5b, 0x6c, 0xb3, 0x2a, 0xb6, 0xe0, 0xf4, 0x25, 0xfe, - 0x35, 0x19, 0xf2, 0x74, 0x0b, 0x12, 0xbd, 0x3e, 0x93, 0xe0, 0xfe, 0x76, 0x87, 0x77, 0x21, 0xf4, - 0xdf, 0x93, 0xac, 0x39, 0x70, 0xae, 0x86, 0xd9, 0x44, 0xae, 0x86, 0xfc, 0x39, 0x4e, 0x81, 0x76, - 0x44, 0xeb, 0x98, 0xf2, 0x74, 0x32, 0x49, 0x0b, 0xeb, 0xcb, 0x50, 0xfa, 0x78, 0xff, 0x6c, 0x0e, - 0x66, 0x68, 0xd1, 0xe7, 0xf5, 0xf6, 0x16, 0x76, 0xd0, 0xdb, 0xa4, 0xef, 0x1d, 0xd4, 0x95, 0x2a, - 0xcc, 0x5c, 0x22, 0x6c, 0xaf, 0x6a, 0x97, 0xcd, 0x5d, 0x87, 0xad, 0x5c, 0xdc, 0x14, 0xbb, 0xee, - 0x41, 0xeb, 0x39, 0x4f, 0xff, 0x50, 0xb9, 0xff, 0x5d, 0x19, 0xd3, 0x05, 0x7f, 0xea, 0xc0, 0x95, - 0x27, 0x46, 0x56, 0x38, 0x49, 0x39, 0x09, 0xf9, 0x3d, 0x1d, 0x5f, 0xaa, 0xb4, 0x99, 0x75, 0xcb, - 0xde, 0xd0, 0x1f, 0x08, 0xef, 0xdb, 0x86, 0xe1, 0x66, 0xbc, 0xa4, 0xab, 0x85, 0x62, 0xbb, 0xb7, - 0x03, 0xd9, 0x1a, 0xc3, 0x99, 0x62, 0xfe, 0x9a, 0xcf, 0x52, 0x02, 0x45, 0x8c, 0x32, 0x9c, 0xf9, - 0x50, 0x1e, 0xb1, 0x27, 0x56, 0xa8, 0x00, 0x46, 0x7c, 0x03, 0xa8, 0x58, 0x7c, 0x89, 0x01, 0x45, - 0xa7, 0x2f, 0xf9, 0x57, 0xc9, 0x30, 0x55, 0xc7, 0xce, 0x92, 0x8e, 0x3b, 0x6d, 0x1b, 0x59, 0x07, - 0x37, 0x8d, 0x6e, 0x81, 0xfc, 0x26, 0x21, 0x36, 0xe8, 0xdc, 0x02, 0xcb, 0x86, 0x5e, 0x29, 0x89, - 0xee, 0x08, 0xb3, 0xd5, 0x37, 0x8f, 0xdb, 0x91, 0xc0, 0x24, 0xe6, 0xd1, 0x1b, 0x5f, 0xf2, 0x18, - 0x02, 0xdb, 0xca, 0x30, 0xc3, 0xee, 0x05, 0x2c, 0x76, 0xf4, 0x2d, 0x03, 0xed, 0x8e, 0xa0, 0x85, - 0x28, 0xb7, 0x42, 0x4e, 0x73, 0xa9, 0xb1, 0xad, 0x57, 0xd4, 0xb7, 0xf3, 0x24, 0xe5, 0xa9, 0x34, - 0x63, 0x82, 0x30, 0x92, 0x81, 0x62, 0x7b, 0x3c, 0x8f, 0x31, 0x8c, 0xe4, 0xc0, 0xc2, 0xd3, 0x47, - 0xec, 0x0b, 0x32, 0x1c, 0x67, 0x0c, 0x9c, 0xc3, 0x96, 0xa3, 0xb7, 0xb4, 0x0e, 0x45, 0xee, 0xf9, - 0x99, 0x51, 0x40, 0xb7, 0x02, 0xb3, 0x7b, 0x61, 0xb2, 0x0c, 0xc2, 0xb3, 0x7d, 0x21, 0xe4, 0x18, - 0x50, 0xf9, 0x1f, 0x13, 0x84, 0xe3, 0xe3, 0xa4, 0xca, 0xd1, 0x1c, 0x63, 0x38, 0x3e, 0x61, 0x26, - 0xd2, 0x87, 0xf8, 0x85, 0x2c, 0x34, 0x4f, 0xd0, 0x7d, 0x7e, 0x46, 0x18, 0xdb, 0x0d, 0x98, 0x26, - 0x58, 0xd2, 0x1f, 0xd9, 0x32, 0x44, 0x8c, 0x12, 0xfb, 0xfd, 0x0e, 0xbb, 0x30, 0xcc, 0xff, 0x57, - 0x0d, 0xd3, 0x41, 0xe7, 0x01, 0x82, 0x4f, 0xe1, 0x4e, 0x3a, 0x13, 0xd5, 0x49, 0x4b, 0x62, 0x9d, - 0xf4, 0xeb, 0x84, 0x83, 0xa5, 0xf4, 0x67, 0xfb, 0xe0, 0xea, 0x21, 0x16, 0x26, 0x63, 0x70, 0xe9, - 0xe9, 0xeb, 0xc5, 0xcb, 0xb2, 0xbd, 0x17, 0xc0, 0x7f, 0x70, 0x24, 0xf3, 0xa9, 0x70, 0x7f, 0x20, - 0xf7, 0xf4, 0x07, 0x07, 0xb0, 0xa4, 0x6f, 0x84, 0xa3, 0xb4, 0x88, 0x92, 0xcf, 0x56, 0x8e, 0x86, - 0x82, 0xe8, 0x49, 0x46, 0x1f, 0x1a, 0x42, 0x09, 0x06, 0xdd, 0x4e, 0x1f, 0xd7, 0xc9, 0x25, 0x33, - 0x76, 0x93, 0x2a, 0xc8, 0xe1, 0x5d, 0x6a, 0xff, 0xd5, 0x2c, 0xb5, 0x76, 0x37, 0xc8, 0x9d, 0x6e, - 0xe8, 0x2f, 0xb3, 0xa3, 0x18, 0x11, 0xee, 0x81, 0x2c, 0x71, 0x71, 0x97, 0x23, 0x97, 0x34, 0x82, - 0x22, 0x83, 0x0b, 0xf7, 0xf0, 0x83, 0xce, 0xca, 0x11, 0x95, 0xfc, 0xa9, 0xdc, 0x04, 0x47, 0x2f, - 0x68, 0xad, 0x8b, 0x5b, 0x96, 0xb9, 0x4b, 0x6e, 0xbf, 0x32, 0xd9, 0x35, 0x5a, 0xe4, 0x3a, 0x42, - 0xfe, 0x83, 0x72, 0x9b, 0x67, 0x3a, 0xe4, 0x06, 0x99, 0x0e, 0x2b, 0x47, 0x98, 0xf1, 0xa0, 0x3c, - 0xd1, 0xef, 0x74, 0xf2, 0xb1, 0x9d, 0xce, 0xca, 0x11, 0xaf, 0xdb, 0x51, 0x16, 0x61, 0xb2, 0xad, - 0xef, 0x91, 0xad, 0x6a, 0x32, 0xeb, 0x1a, 0x74, 0x74, 0x79, 0x51, 0xdf, 0xa3, 0x1b, 0xdb, 0x2b, - 0x47, 0x54, 0xff, 0x4f, 0x65, 0x19, 0xa6, 0xc8, 0xb6, 0x00, 0x21, 0x33, 0x99, 0xe8, 0x58, 0xf2, - 0xca, 0x11, 0x35, 0xf8, 0xd7, 0xb5, 0x3e, 0xb2, 0xe4, 0xec, 0xc7, 0xdd, 0xde, 0x76, 0x7b, 0x26, - 0xd1, 0x76, 0xbb, 0x2b, 0x0b, 0xba, 0xe1, 0x7e, 0x12, 0x72, 0x2d, 0x22, 0x61, 0x89, 0x49, 0x98, - 0xbe, 0x2a, 0x77, 0x42, 0x76, 0x47, 0xb3, 0xbc, 0xc9, 0xf3, 0x0d, 0x83, 0xe9, 0xae, 0x69, 0xd6, - 0x45, 0x17, 0x41, 0xf7, 0xaf, 0x85, 0x09, 0xc8, 0x11, 0xc1, 0xf9, 0x0f, 0xe8, 0x8d, 0x59, 0x6a, - 0x86, 0x94, 0x4c, 0xc3, 0x1d, 0xf6, 0x1b, 0xa6, 0x77, 0x40, 0xe6, 0x0f, 0x32, 0xa3, 0xb1, 0x20, - 0xfb, 0xde, 0x98, 0x2e, 0x47, 0xde, 0x98, 0xde, 0x73, 0x75, 0x6f, 0xb6, 0xf7, 0xea, 0xde, 0x60, - 0xf9, 0x20, 0x37, 0xd8, 0x51, 0xe5, 0xcf, 0x86, 0x30, 0x5d, 0x7a, 0x05, 0x11, 0x3d, 0x03, 0xef, - 0xe8, 0x46, 0xa8, 0xce, 0xde, 0x6b, 0xc2, 0x4e, 0x29, 0xa9, 0x51, 0x33, 0x80, 0xbd, 0xf4, 0xfb, - 0xa6, 0xdf, 0xca, 0xc2, 0x29, 0x7a, 0x41, 0xf4, 0x1e, 0x6e, 0x98, 0xfc, 0x7d, 0x93, 0xe8, 0x63, - 0x23, 0x51, 0x9a, 0x3e, 0x03, 0x8e, 0xdc, 0x77, 0xc0, 0xd9, 0x77, 0x48, 0x39, 0x3b, 0xe0, 0x90, - 0x72, 0x2e, 0xd9, 0xca, 0xe1, 0x7b, 0xc3, 0xfa, 0xb3, 0xce, 0xeb, 0xcf, 0x1d, 0x11, 0x00, 0xf5, - 0x93, 0xcb, 0x48, 0xec, 0x9b, 0xb7, 0xf8, 0x9a, 0x52, 0xe7, 0x34, 0xe5, 0xee, 0xe1, 0x19, 0x49, - 0x5f, 0x5b, 0x7e, 0x3f, 0x0b, 0x57, 0x04, 0xcc, 0x54, 0xf1, 0x25, 0xa6, 0x28, 0x9f, 0x1e, 0x89, - 0xa2, 0x24, 0x8f, 0x81, 0x90, 0xb6, 0xc6, 0xfc, 0x89, 0xf0, 0xd9, 0xa1, 0x5e, 0xa0, 0x7c, 0xd9, - 0x44, 0x28, 0xcb, 0x49, 0xc8, 0xd3, 0x1e, 0x86, 0x41, 0xc3, 0xde, 0x12, 0x76, 0x37, 0x62, 0x27, - 0x8e, 0x44, 0x79, 0x1b, 0x83, 0xfe, 0xb0, 0x75, 0x8d, 0xc6, 0xae, 0x65, 0x54, 0x0c, 0xc7, 0x44, - 0x3f, 0x35, 0x12, 0xc5, 0xf1, 0xbd, 0xe1, 0xe4, 0x61, 0xbc, 0xe1, 0x86, 0x5a, 0xe5, 0xf0, 0x6a, - 0x70, 0x28, 0xab, 0x1c, 0x11, 0x85, 0xa7, 0x8f, 0xdf, 0x9b, 0x65, 0x38, 0xc9, 0x26, 0x5b, 0x0b, - 0xbc, 0x85, 0x88, 0xee, 0x1f, 0x05, 0x90, 0xc7, 0x3d, 0x33, 0x89, 0xdd, 0x72, 0x46, 0x5e, 0xf8, - 0x93, 0x52, 0xb1, 0xf7, 0x3b, 0x70, 0xd3, 0xc1, 0x1e, 0x0e, 0x47, 0x82, 0x94, 0xd8, 0xb5, 0x0e, - 0x09, 0xd8, 0x48, 0x1f, 0xb3, 0x5f, 0x92, 0x21, 0x4f, 0xcf, 0x69, 0xa1, 0x8d, 0x54, 0x1c, 0x26, - 0xf8, 0x28, 0xcf, 0x02, 0x3b, 0x72, 0x89, 0x2f, 0xb9, 0x4f, 0x6f, 0x2f, 0xee, 0x90, 0x6e, 0xb1, - 0xff, 0x86, 0x04, 0xd3, 0x75, 0xec, 0x94, 0x34, 0xcb, 0xd2, 0xb5, 0xad, 0x51, 0x79, 0x7c, 0x8b, - 0x7a, 0x0f, 0xa3, 0x6f, 0x66, 0x44, 0xcf, 0xd3, 0xf8, 0x0b, 0xe1, 0x1e, 0xab, 0x11, 0xb1, 0x04, - 0x1f, 0x11, 0x3a, 0x33, 0x33, 0x88, 0xda, 0x18, 0x3c, 0xb6, 0x25, 0x98, 0xf0, 0xce, 0xe2, 0xdd, - 0xc2, 0x9d, 0xcf, 0xdc, 0x76, 0x76, 0xbc, 0x63, 0x30, 0xe4, 0x79, 0xff, 0x19, 0x30, 0xf4, 0xd2, - 0x84, 0x8e, 0xf2, 0xf1, 0x07, 0x09, 0x93, 0xb5, 0xb1, 0x24, 0xee, 0xf0, 0x87, 0x75, 0x74, 0xf0, - 0x77, 0x27, 0xd8, 0x72, 0xe4, 0xaa, 0xe6, 0xe0, 0x07, 0xd1, 0x67, 0x64, 0x98, 0xa8, 0x63, 0xc7, - 0x1d, 0x6f, 0xb9, 0xcb, 0x4d, 0x87, 0xd5, 0x70, 0x25, 0xb4, 0xe2, 0x31, 0xc5, 0xd6, 0x30, 0xee, - 0x85, 0xa9, 0xae, 0x65, 0xb6, 0xb0, 0x6d, 0xb3, 0xd5, 0x8b, 0xb0, 0xa3, 0x5a, 0xbf, 0xd1, 0x9f, - 0xb0, 0x36, 0xbf, 0xee, 0xfd, 0xa3, 0x06, 0xbf, 0x27, 0x35, 0x03, 0x28, 0x25, 0x56, 0xc1, 0x71, - 0x9b, 0x01, 0x71, 0x85, 0xa7, 0x0f, 0xf4, 0x27, 0x65, 0x98, 0xa9, 0x63, 0xc7, 0x97, 0x62, 0x82, - 0x4d, 0x8e, 0x68, 0x78, 0x39, 0x28, 0xe5, 0x83, 0x41, 0x29, 0x7e, 0x35, 0x20, 0x2f, 0x4d, 0x9f, - 0xd8, 0x18, 0xaf, 0x06, 0x14, 0xe3, 0x60, 0x0c, 0xc7, 0xd7, 0x1e, 0x0b, 0x53, 0x84, 0x17, 0xd2, - 0x60, 0x7f, 0x3e, 0x1b, 0x34, 0xde, 0xcf, 0xa6, 0xd4, 0x78, 0xef, 0x82, 0xdc, 0x8e, 0x66, 0x5d, - 0xb4, 0x49, 0xc3, 0x9d, 0x16, 0x31, 0xdb, 0xd7, 0xdc, 0xec, 0x2a, 0xfd, 0xab, 0xbf, 0x9f, 0x66, - 0x2e, 0x99, 0x9f, 0xe6, 0x23, 0x52, 0xa2, 0x91, 0x90, 0xce, 0x1d, 0x46, 0xd8, 0xe4, 0x13, 0x8c, - 0x9b, 0x31, 0x65, 0xa7, 0xaf, 0x1c, 0xcf, 0x97, 0x61, 0xd2, 0x1d, 0xb7, 0x89, 0x3d, 0x7e, 0xfe, - 0xe0, 0xea, 0xd0, 0xdf, 0xd0, 0x4f, 0xd8, 0x03, 0x7b, 0x12, 0x19, 0x9d, 0x79, 0x9f, 0xa0, 0x07, - 0x8e, 0x2b, 0x3c, 0x7d, 0x3c, 0xde, 0x4a, 0xf1, 0x20, 0xed, 0x01, 0xbd, 0x46, 0x06, 0x79, 0x19, - 0x3b, 0xe3, 0xb6, 0x22, 0xdf, 0x24, 0x1c, 0xe2, 0x88, 0x13, 0x18, 0xe1, 0x79, 0x7e, 0x19, 0x8f, - 0xa6, 0x01, 0x89, 0xc5, 0x36, 0x12, 0x62, 0x20, 0x7d, 0xd4, 0xde, 0x49, 0x51, 0xa3, 0x9b, 0x0b, - 0x3f, 0x39, 0x82, 0x5e, 0x75, 0xbc, 0x0b, 0x1f, 0x9e, 0x00, 0x09, 0x8d, 0xc3, 0x6a, 0x6f, 0xfd, - 0x0a, 0x1f, 0xcb, 0x55, 0x7c, 0xe0, 0x36, 0xf6, 0x6d, 0xdc, 0xba, 0x88, 0xdb, 0xe8, 0xc7, 0x0e, - 0x0e, 0xdd, 0x29, 0x98, 0x68, 0x51, 0x6a, 0x04, 0xbc, 0x49, 0xd5, 0x7b, 0x4d, 0x70, 0xaf, 0x34, - 0xdf, 0x11, 0xd1, 0xdf, 0xc7, 0x78, 0xaf, 0xb4, 0x40, 0xf1, 0x63, 0x30, 0x5b, 0xe8, 0x2c, 0xa3, - 0xd2, 0x32, 0x0d, 0xf4, 0x5f, 0x0e, 0x0e, 0xcb, 0x35, 0x30, 0xa5, 0xb7, 0x4c, 0x83, 0x84, 0xa1, - 0xf0, 0x0e, 0x01, 0xf9, 0x09, 0xde, 0xd7, 0xf2, 0x8e, 0xf9, 0x80, 0xce, 0x76, 0xcd, 0x83, 0x84, - 0x61, 0x8d, 0x09, 0x97, 0xf5, 0xc3, 0x32, 0x26, 0xfa, 0x94, 0x9d, 0x3e, 0x64, 0x1f, 0x0a, 0xbc, - 0xdb, 0x68, 0x57, 0xf8, 0xa8, 0x58, 0x05, 0x1e, 0x66, 0x38, 0x0b, 0xd7, 0xe2, 0x50, 0x86, 0xb3, - 0x18, 0x06, 0xc6, 0x70, 0x63, 0x45, 0x80, 0x63, 0xea, 0x6b, 0xc0, 0x07, 0x40, 0x67, 0x74, 0xe6, - 0xe1, 0x90, 0xe8, 0x1c, 0x8e, 0x89, 0xf8, 0x1e, 0x16, 0x22, 0x93, 0x59, 0x3c, 0xe8, 0xbf, 0x8e, - 0x02, 0x9c, 0x3b, 0x86, 0xf1, 0x57, 0xa0, 0xde, 0x0a, 0x09, 0x6e, 0xc4, 0xde, 0x27, 0x41, 0x97, - 0xca, 0x18, 0xef, 0x8a, 0x17, 0x29, 0x3f, 0x7d, 0x00, 0x9f, 0x27, 0xc3, 0x1c, 0xf1, 0x11, 0xe8, - 0x60, 0xcd, 0xa2, 0x1d, 0xe5, 0x48, 0x1c, 0xe5, 0xdf, 0x2a, 0x1c, 0xe0, 0x87, 0x97, 0x43, 0xc0, - 0xc7, 0x48, 0xa0, 0x10, 0x8b, 0xee, 0x23, 0xc8, 0xc2, 0x58, 0xb6, 0x51, 0x0a, 0x3e, 0x0b, 0x4c, - 0xc5, 0x47, 0x83, 0x47, 0x42, 0x8f, 0x5c, 0x5e, 0x18, 0x5e, 0x63, 0x1b, 0xb3, 0x47, 0xae, 0x08, - 0x13, 0xe9, 0x63, 0xf2, 0x9a, 0x5b, 0xd9, 0x82, 0x73, 0x83, 0x5c, 0x18, 0xff, 0xf2, 0xac, 0x7f, - 0xa2, 0xed, 0x93, 0x23, 0xf1, 0xc0, 0x3c, 0x40, 0x40, 0x7c, 0x05, 0xb2, 0x96, 0x79, 0x89, 0x2e, - 0x6d, 0xcd, 0xaa, 0xe4, 0x99, 0x5e, 0x4f, 0xd9, 0xd9, 0xdd, 0x31, 0xe8, 0xc9, 0xd0, 0x59, 0xd5, - 0x7b, 0x55, 0xae, 0x87, 0xd9, 0x4b, 0xba, 0xb3, 0xbd, 0x82, 0xb5, 0x36, 0xb6, 0x54, 0xf3, 0x12, - 0xf1, 0x98, 0x9b, 0x54, 0xf9, 0x44, 0xde, 0x7f, 0x45, 0xc0, 0xbe, 0x24, 0xb7, 0xc8, 0x8f, 0xe5, - 0xf8, 0x5b, 0x12, 0xcb, 0x33, 0x9a, 0xab, 0xf4, 0x15, 0xe6, 0x5d, 0x32, 0x4c, 0xa9, 0xe6, 0x25, - 0xa6, 0x24, 0xff, 0xd7, 0xe1, 0xea, 0x48, 0xe2, 0x89, 0x1e, 0x91, 0x9c, 0xcf, 0xfe, 0xd8, 0x27, - 0x7a, 0xb1, 0xc5, 0x8f, 0xe5, 0xe4, 0xd2, 0x8c, 0x6a, 0x5e, 0xaa, 0x63, 0x87, 0xb6, 0x08, 0xd4, - 0x1c, 0x91, 0x93, 0xb5, 0x6e, 0x53, 0x82, 0x6c, 0x1e, 0xee, 0xbf, 0x27, 0xdd, 0x45, 0xf0, 0x05, - 0xe4, 0xb3, 0x38, 0xee, 0x5d, 0x84, 0x81, 0x1c, 0x8c, 0x21, 0x46, 0x8a, 0x0c, 0xd3, 0xaa, 0x79, - 0xc9, 0x1d, 0x1a, 0x96, 0xf4, 0x4e, 0x67, 0x34, 0x23, 0x64, 0x52, 0xe3, 0xdf, 0x13, 0x83, 0xc7, - 0xc5, 0xd8, 0x8d, 0xff, 0x01, 0x0c, 0xa4, 0x0f, 0xc3, 0x73, 0x68, 0x63, 0xf1, 0x46, 0x68, 0x63, - 0x34, 0x38, 0x0c, 0xdb, 0x20, 0x7c, 0x36, 0x0e, 0xad, 0x41, 0x44, 0x71, 0x30, 0x96, 0x9d, 0x93, - 0xb9, 0x12, 0x19, 0xe6, 0x47, 0xdb, 0x26, 0xde, 0x9e, 0xcc, 0x35, 0x91, 0x0d, 0xbb, 0x1c, 0x23, - 0x23, 0x41, 0x23, 0x81, 0x0b, 0xa2, 0x00, 0x0f, 0xe9, 0xe3, 0xf1, 0x7e, 0x19, 0x66, 0x28, 0x0b, - 0x8f, 0x12, 0x2b, 0x60, 0xa8, 0x46, 0x15, 0xae, 0xc1, 0xe1, 0x34, 0xaa, 0x18, 0x0e, 0xc6, 0x72, - 0x2b, 0xa8, 0x6b, 0xc7, 0x0d, 0x71, 0x7c, 0x3c, 0x0a, 0xc1, 0xa1, 0x8d, 0xb1, 0x11, 0x1e, 0x21, - 0x1f, 0xc6, 0x18, 0x3b, 0xa4, 0x63, 0xe4, 0xcf, 0xf1, 0x5b, 0xd1, 0x28, 0x31, 0x38, 0x40, 0x53, - 0x18, 0x21, 0x0c, 0x43, 0x36, 0x85, 0x43, 0x42, 0xe2, 0x8b, 0x32, 0x00, 0x65, 0x60, 0xcd, 0xdc, - 0x23, 0x97, 0xf9, 0x8c, 0xa0, 0x3b, 0xeb, 0x75, 0xab, 0x97, 0x07, 0xb8, 0xd5, 0x27, 0x0c, 0xe1, - 0x92, 0x74, 0x25, 0x30, 0x24, 0x65, 0xb7, 0x92, 0x63, 0x5f, 0x09, 0x8c, 0x2f, 0x3f, 0x7d, 0x8c, - 0x3f, 0x4f, 0xad, 0xb9, 0xe0, 0x80, 0xe9, 0x6f, 0x8c, 0x04, 0xe5, 0xd0, 0xec, 0x5f, 0xe6, 0x67, - 0xff, 0x07, 0xc0, 0x76, 0x58, 0x1b, 0x71, 0xd0, 0xc1, 0xd1, 0xf4, 0x6d, 0xc4, 0xc3, 0x3b, 0x20, - 0xfa, 0x93, 0x59, 0x38, 0xca, 0x3a, 0x91, 0xef, 0x05, 0x88, 0x13, 0x9e, 0xc3, 0xe3, 0x3a, 0xc9, - 0x01, 0x28, 0x8f, 0x6a, 0x41, 0x2a, 0xc9, 0x52, 0xa6, 0x00, 0x7b, 0x63, 0x59, 0xdd, 0xc8, 0x97, - 0x1f, 0xec, 0x6a, 0x46, 0x5b, 0x3c, 0xdc, 0xef, 0x00, 0xe0, 0xbd, 0xb5, 0x46, 0x99, 0x5f, 0x6b, - 0xec, 0xb3, 0x32, 0x99, 0x78, 0xe7, 0x9a, 0x88, 0x8c, 0xb2, 0x3b, 0xf6, 0x9d, 0xeb, 0xe8, 0xb2, - 0xd3, 0x47, 0xe9, 0xed, 0x32, 0x64, 0xeb, 0xa6, 0xe5, 0xa0, 0xe7, 0x26, 0x69, 0x9d, 0x54, 0xf2, - 0x01, 0x48, 0xde, 0xbb, 0x52, 0xe2, 0x6e, 0x69, 0xbe, 0x25, 0xfe, 0xa8, 0xb3, 0xe6, 0x68, 0xc4, - 0xab, 0xdb, 0x2d, 0x3f, 0x74, 0x5d, 0x73, 0xd2, 0x78, 0x3a, 0x54, 0x7e, 0xf5, 0xe8, 0x03, 0x18, - 0xa9, 0xc5, 0xd3, 0x89, 0x2c, 0x39, 0x7d, 0xdc, 0x1e, 0x3e, 0xca, 0x7c, 0x5b, 0x97, 0xf4, 0x0e, - 0x46, 0xcf, 0xa5, 0x2e, 0x23, 0x55, 0x6d, 0x07, 0x8b, 0x1f, 0x89, 0x89, 0x75, 0x6d, 0x25, 0xf1, - 0x65, 0xe5, 0x20, 0xbe, 0x6c, 0xd2, 0x06, 0x45, 0x0f, 0xa0, 0x53, 0x96, 0xc6, 0xdd, 0xa0, 0x62, - 0xca, 0x1e, 0x4b, 0x9c, 0xce, 0x63, 0x75, 0xec, 0x50, 0xa3, 0xb2, 0xe6, 0xdd, 0xc0, 0xf2, 0xe3, - 0x23, 0x89, 0xd8, 0xe9, 0x5f, 0xf0, 0x22, 0xf7, 0x5c, 0xf0, 0xf2, 0xae, 0x30, 0x38, 0x6b, 0x3c, - 0x38, 0x3f, 0x1c, 0x2d, 0x20, 0x9e, 0xc9, 0x91, 0xc0, 0xf4, 0x26, 0x1f, 0xa6, 0x75, 0x0e, 0xa6, - 0x3b, 0x87, 0xe4, 0x22, 0x7d, 0xc0, 0x7e, 0x31, 0x07, 0x47, 0xe9, 0xa4, 0xbf, 0x68, 0xb4, 0x59, - 0x84, 0xd5, 0xd7, 0x4b, 0x87, 0xbc, 0xd9, 0xb6, 0x3f, 0x04, 0x2b, 0x17, 0xcb, 0x39, 0xd7, 0x7b, - 0x3b, 0xfe, 0x02, 0x0d, 0xe7, 0xea, 0x76, 0xa2, 0x64, 0xa7, 0x4d, 0xfc, 0x86, 0x7c, 0xff, 0x3f, - 0xfe, 0x2e, 0xa3, 0x09, 0xf1, 0xbb, 0x8c, 0xfe, 0x34, 0xd9, 0xba, 0x1d, 0x29, 0xba, 0x47, 0xe0, - 0x29, 0xdb, 0x4e, 0x09, 0x56, 0xf4, 0x04, 0xb8, 0xfb, 0xfe, 0x70, 0x27, 0x0b, 0x22, 0x88, 0x0c, - 0xe9, 0x4e, 0x46, 0x08, 0x1c, 0xa6, 0x3b, 0xd9, 0x20, 0x06, 0xc6, 0x70, 0xab, 0x7d, 0x8e, 0xed, - 0xe6, 0x93, 0x76, 0x83, 0xfe, 0x5a, 0x4a, 0x7d, 0x94, 0xfe, 0x56, 0x26, 0x91, 0xff, 0x33, 0xe1, - 0x2b, 0x7e, 0x98, 0x4e, 0xe2, 0xd1, 0x1c, 0x47, 0x6e, 0x0c, 0xeb, 0x46, 0x12, 0xf1, 0x45, 0x3f, - 0xaf, 0xb7, 0x9d, 0xed, 0x11, 0x9d, 0xe8, 0xb8, 0xe4, 0xd2, 0xf2, 0xae, 0x47, 0x26, 0x2f, 0xe8, - 0xdf, 0x33, 0x89, 0x42, 0x48, 0xf9, 0x22, 0x21, 0x6c, 0x45, 0x88, 0x38, 0x41, 0xe0, 0xa7, 0x58, - 0x7a, 0x63, 0xd4, 0xe8, 0x73, 0x7a, 0x1b, 0x9b, 0x8f, 0x42, 0x8d, 0x26, 0x7c, 0x8d, 0x4e, 0xa3, - 0xe3, 0xc8, 0x7d, 0x9f, 0x6a, 0xb4, 0x2f, 0x92, 0x11, 0x69, 0x74, 0x2c, 0xbd, 0xf4, 0x65, 0xfc, - 0xd2, 0x19, 0x36, 0x91, 0x5a, 0xd5, 0x8d, 0x8b, 0xe8, 0x5f, 0xf2, 0xde, 0xc5, 0xcc, 0xe7, 0x75, - 0x67, 0x9b, 0xc5, 0x82, 0xf9, 0x7d, 0xe1, 0xbb, 0x51, 0x86, 0x88, 0xf7, 0xc2, 0x87, 0x93, 0xca, - 0xed, 0x0b, 0x27, 0x55, 0x84, 0x59, 0xdd, 0x70, 0xb0, 0x65, 0x68, 0x9d, 0xa5, 0x8e, 0xb6, 0x65, - 0x9f, 0x9a, 0xe8, 0x7b, 0x79, 0x5d, 0x25, 0x94, 0x47, 0xe5, 0xff, 0x08, 0x5f, 0x5f, 0x39, 0xc9, - 0x5f, 0x5f, 0x19, 0x11, 0xfd, 0x6a, 0x2a, 0x3a, 0xfa, 0x95, 0x1f, 0xdd, 0x0a, 0x06, 0x07, 0xc7, - 0x16, 0xb5, 0x8d, 0x13, 0x86, 0xfb, 0xbb, 0x45, 0x30, 0x0a, 0x9b, 0x1f, 0xfa, 0xf1, 0x15, 0x72, - 0xa2, 0xd5, 0x3d, 0x57, 0x11, 0xe6, 0x7b, 0x95, 0x20, 0xb1, 0x85, 0x1a, 0xae, 0xbc, 0xdc, 0x53, - 0x79, 0xdf, 0xe4, 0xc9, 0x0a, 0x98, 0x3c, 0x61, 0xa5, 0xca, 0x89, 0x29, 0x55, 0x92, 0xc5, 0x42, - 0x91, 0xda, 0x8e, 0xe1, 0x34, 0x52, 0x0e, 0x8e, 0x79, 0xd1, 0x6e, 0xbb, 0x5d, 0xac, 0x59, 0x9a, - 0xd1, 0xc2, 0xe8, 0x43, 0xd2, 0x28, 0xcc, 0xde, 0x25, 0x98, 0xd4, 0x5b, 0xa6, 0x51, 0xd7, 0x9f, - 0xe9, 0x5d, 0x2e, 0x17, 0x1f, 0x64, 0x9d, 0x48, 0xa4, 0xc2, 0xfe, 0x50, 0xfd, 0x7f, 0x95, 0x0a, - 0x4c, 0xb5, 0x34, 0xab, 0x4d, 0x83, 0xf0, 0xe5, 0x7a, 0x2e, 0x72, 0x8a, 0x24, 0x54, 0xf2, 0x7e, - 0x51, 0x83, 0xbf, 0x95, 0x1a, 0x2f, 0xc4, 0x7c, 0x4f, 0x34, 0x8f, 0x48, 0x62, 0x8b, 0xc1, 0x4f, - 0x9c, 0xcc, 0x5d, 0xe9, 0x58, 0xb8, 0x43, 0xee, 0xa0, 0xa7, 0x3d, 0xc4, 0x94, 0x1a, 0x24, 0x24, - 0x5d, 0x1e, 0x20, 0x45, 0xed, 0x43, 0x63, 0xdc, 0xcb, 0x03, 0x42, 0x5c, 0xa4, 0xaf, 0x99, 0x6f, - 0xc9, 0xc3, 0x2c, 0xed, 0xd5, 0x98, 0x38, 0xd1, 0xf3, 0xc8, 0x15, 0xd2, 0xce, 0x7d, 0xf8, 0x32, - 0xaa, 0x1f, 0x7c, 0x4c, 0x2e, 0x80, 0x7c, 0xd1, 0x0f, 0x38, 0xe8, 0x3e, 0x26, 0xdd, 0xb7, 0xf7, - 0xf8, 0x9a, 0xa7, 0x3c, 0x8d, 0x7b, 0xdf, 0x3e, 0xbe, 0xf8, 0xf4, 0xf1, 0xf9, 0x65, 0x19, 0xe4, - 0x62, 0xbb, 0x8d, 0x5a, 0x07, 0x87, 0xe2, 0x0c, 0x4c, 0x7b, 0x6d, 0x26, 0x88, 0x01, 0x19, 0x4e, - 0x4a, 0xba, 0x08, 0xea, 0xcb, 0xa6, 0xd8, 0x1e, 0xfb, 0xae, 0x42, 0x4c, 0xd9, 0xe9, 0x83, 0xf2, - 0x1b, 0x13, 0xac, 0xd1, 0x2c, 0x98, 0xe6, 0x45, 0x72, 0x54, 0xe6, 0xb9, 0x32, 0xe4, 0x96, 0xb0, - 0xd3, 0xda, 0x1e, 0x51, 0x9b, 0xd9, 0xb5, 0x3a, 0x5e, 0x9b, 0xd9, 0x77, 0x1f, 0xfe, 0x60, 0x1b, - 0xd6, 0x63, 0x6b, 0x9e, 0xb0, 0x34, 0xee, 0xe8, 0xce, 0xb1, 0xa5, 0xa7, 0x0f, 0xce, 0xbf, 0xcb, - 0x30, 0xe7, 0xaf, 0x70, 0x51, 0x4c, 0x7e, 0x31, 0xf3, 0x68, 0x5b, 0xef, 0x44, 0x9f, 0x4e, 0x16, - 0x22, 0xcd, 0x97, 0x29, 0x5f, 0xb3, 0x94, 0x17, 0x16, 0x13, 0x04, 0x4f, 0x13, 0x63, 0x70, 0x0c, - 0x33, 0x78, 0x19, 0x26, 0x09, 0x43, 0x8b, 0xfa, 0x1e, 0x71, 0x1d, 0xe4, 0x16, 0x1a, 0x9f, 0x35, - 0x92, 0x85, 0xc6, 0x3b, 0xf9, 0x85, 0x46, 0xc1, 0x88, 0xc7, 0xde, 0x3a, 0x63, 0x42, 0x5f, 0x1a, - 0xf7, 0xff, 0x91, 0x2f, 0x33, 0x26, 0xf0, 0xa5, 0x19, 0x50, 0x7e, 0xfa, 0x88, 0xbe, 0xe2, 0x3f, - 0xb1, 0xce, 0xd6, 0xdb, 0x50, 0x45, 0xff, 0xe3, 0x18, 0x64, 0xcf, 0xb9, 0x0f, 0xff, 0x2b, 0xb8, - 0x11, 0xeb, 0x45, 0x23, 0x08, 0xce, 0xf0, 0x74, 0xc8, 0xba, 0xf4, 0xd9, 0xb4, 0xe5, 0x26, 0xb1, - 0xdd, 0x5d, 0x97, 0x11, 0x95, 0xfc, 0xa7, 0x9c, 0x84, 0xbc, 0x6d, 0xee, 0x5a, 0x2d, 0xd7, 0x7c, - 0x76, 0x35, 0x86, 0xbd, 0x25, 0x0d, 0x4a, 0xca, 0x91, 0x9e, 0x1f, 0x9d, 0xcb, 0x68, 0xe8, 0x82, - 0x24, 0x99, 0xbb, 0x20, 0x29, 0xc1, 0xfe, 0x81, 0x00, 0x6f, 0xe9, 0x6b, 0xc4, 0x5f, 0x93, 0xbb, - 0x02, 0xdb, 0xa3, 0x82, 0x3d, 0x42, 0x2c, 0x07, 0x55, 0x87, 0xa4, 0x0e, 0xdf, 0xbc, 0x68, 0xfd, - 0x38, 0xf0, 0x63, 0x75, 0xf8, 0x16, 0xe0, 0x61, 0x2c, 0xa7, 0xd4, 0xf3, 0xcc, 0x49, 0xf5, 0xfe, - 0x51, 0xa2, 0x9b, 0xe5, 0x94, 0xfe, 0x40, 0xe8, 0x8c, 0xd0, 0x79, 0x75, 0x68, 0x74, 0x0e, 0xc9, - 0x7d, 0xf5, 0x0f, 0x65, 0x12, 0x09, 0xd3, 0x33, 0x72, 0xc4, 0x2f, 0x3a, 0x4a, 0x0c, 0x91, 0x3b, - 0x06, 0x73, 0x71, 0xa0, 0x67, 0x87, 0x0f, 0x0d, 0xce, 0x8b, 0x2e, 0xc4, 0xff, 0xb8, 0x43, 0x83, - 0x8b, 0x32, 0x92, 0x3e, 0x90, 0xaf, 0xa6, 0x17, 0x8b, 0x15, 0x5b, 0x8e, 0xbe, 0x37, 0xe2, 0x96, - 0xc6, 0x0f, 0x2f, 0x09, 0xa3, 0x01, 0xef, 0x93, 0x10, 0xe5, 0x70, 0xdc, 0xd1, 0x80, 0xc5, 0xd8, - 0x48, 0x1f, 0xa6, 0xbf, 0xcb, 0xbb, 0xd2, 0x63, 0x6b, 0x33, 0xaf, 0x61, 0xab, 0x01, 0xf8, 0xe0, - 0x68, 0x9d, 0x85, 0x99, 0xd0, 0xd4, 0xdf, 0xbb, 0xb0, 0x86, 0x4b, 0x4b, 0x7a, 0xd0, 0xdd, 0x17, - 0xd9, 0xc8, 0x17, 0x06, 0x12, 0x2c, 0xf8, 0x8a, 0x30, 0x31, 0x96, 0xfb, 0xe0, 0xbc, 0x31, 0x6c, - 0x4c, 0x58, 0xfd, 0x7e, 0x18, 0xab, 0x1a, 0x8f, 0xd5, 0xed, 0x22, 0x62, 0x12, 0x1b, 0xd3, 0x84, - 0xe6, 0x8d, 0x6f, 0xf6, 0xe1, 0x52, 0x39, 0xb8, 0x9e, 0x3e, 0x34, 0x1f, 0xe9, 0x23, 0xf6, 0x9b, - 0xb4, 0x3b, 0xac, 0x53, 0x93, 0x7d, 0x34, 0xdd, 0x21, 0x9b, 0x0d, 0xc8, 0xdc, 0x6c, 0x20, 0xa1, - 0xbf, 0x7d, 0xe0, 0x46, 0xea, 0x31, 0x37, 0x08, 0xa2, 0xec, 0x88, 0xfd, 0xed, 0x07, 0x72, 0x90, - 0x3e, 0x38, 0xff, 0x24, 0x03, 0x2c, 0x5b, 0xe6, 0x6e, 0xb7, 0x66, 0xb5, 0xb1, 0x85, 0xfe, 0x36, - 0x98, 0x00, 0xfc, 0xca, 0x08, 0x26, 0x00, 0xeb, 0x00, 0x5b, 0x3e, 0x71, 0xa6, 0xe1, 0xb7, 0x8a, - 0x99, 0xfb, 0x01, 0x53, 0x6a, 0x88, 0x06, 0x7f, 0xe5, 0xec, 0x8f, 0xf0, 0x18, 0xc7, 0xf5, 0x59, - 0x01, 0xb9, 0x51, 0x4e, 0x00, 0xde, 0xea, 0x63, 0xdd, 0xe0, 0xb0, 0xbe, 0xe7, 0x00, 0x9c, 0xa4, - 0x8f, 0xf9, 0x3f, 0x4f, 0xc0, 0x34, 0xdd, 0xae, 0xa3, 0x32, 0xfd, 0x87, 0x00, 0xf4, 0xdf, 0x18, - 0x01, 0xe8, 0x1b, 0x30, 0x63, 0x06, 0xd4, 0x69, 0x9f, 0x1a, 0x5e, 0x80, 0x89, 0x85, 0x3d, 0xc4, - 0x97, 0xca, 0x91, 0x41, 0x1f, 0x08, 0x23, 0xaf, 0xf2, 0xc8, 0xdf, 0x19, 0x23, 0xef, 0x10, 0xc5, - 0x51, 0x42, 0xff, 0x36, 0x1f, 0xfa, 0x0d, 0x0e, 0xfa, 0xe2, 0x41, 0x58, 0x19, 0x43, 0xb8, 0x7d, - 0x19, 0xb2, 0xe4, 0x74, 0xdc, 0x6f, 0xa5, 0x38, 0xbf, 0x3f, 0x05, 0x13, 0xa4, 0xc9, 0xfa, 0xf3, - 0x0e, 0xef, 0xd5, 0xfd, 0xa2, 0x6d, 0x3a, 0xd8, 0xf2, 0x3d, 0x16, 0xbc, 0x57, 0x97, 0x07, 0xcf, - 0x2b, 0xd9, 0x3e, 0x95, 0xa7, 0x1b, 0x91, 0x7e, 0xc2, 0xd0, 0x93, 0x92, 0xb0, 0xc4, 0x47, 0x76, - 0x5e, 0x6e, 0x98, 0x49, 0xc9, 0x00, 0x46, 0xd2, 0x07, 0xfe, 0x2f, 0xb3, 0x70, 0x8a, 0xae, 0x2a, - 0x2d, 0x59, 0xe6, 0x4e, 0xcf, 0xed, 0x56, 0xfa, 0xc1, 0x75, 0xe1, 0x06, 0x98, 0x73, 0x38, 0x7f, - 0x6c, 0xa6, 0x13, 0x3d, 0xa9, 0xe8, 0xcf, 0xc2, 0x3e, 0x15, 0xcf, 0xe0, 0x91, 0x5c, 0x88, 0x11, - 0x60, 0x14, 0xef, 0x89, 0x17, 0xea, 0x05, 0x19, 0x0d, 0x2d, 0x52, 0xc9, 0x43, 0xad, 0x59, 0xfa, - 0x3a, 0x95, 0x13, 0xd1, 0xa9, 0x77, 0xfb, 0x3a, 0xf5, 0x63, 0x9c, 0x4e, 0x2d, 0x1f, 0x5c, 0x24, - 0xe9, 0xeb, 0xd6, 0xcb, 0xfd, 0x8d, 0x21, 0x7f, 0xdb, 0x6e, 0x27, 0x85, 0xcd, 0xba, 0xb0, 0x3f, - 0x52, 0x96, 0xf3, 0x47, 0xe2, 0xef, 0xa3, 0x48, 0x30, 0x13, 0xe6, 0xb9, 0x8e, 0xd0, 0xa5, 0x39, - 0x90, 0x74, 0x8f, 0x3b, 0x49, 0x6f, 0x0f, 0x35, 0xd7, 0x8d, 0x2d, 0x68, 0x0c, 0x6b, 0x4b, 0x73, - 0x90, 0x5f, 0xd2, 0x3b, 0x0e, 0xb6, 0xd0, 0xe7, 0xd9, 0x4c, 0xf7, 0xe5, 0x29, 0x0e, 0x00, 0x8b, - 0x90, 0xdf, 0x24, 0xa5, 0x31, 0x93, 0xf9, 0x66, 0xb1, 0xd6, 0x43, 0x39, 0x54, 0xd9, 0xbf, 0x49, - 0xa3, 0xf3, 0xf5, 0x90, 0x19, 0xd9, 0x14, 0x39, 0x41, 0x74, 0xbe, 0xc1, 0x2c, 0x8c, 0xe5, 0x62, - 0xaa, 0xbc, 0x8a, 0x77, 0xdc, 0x31, 0xfe, 0x62, 0x7a, 0x08, 0x17, 0x40, 0xd6, 0xdb, 0x36, 0xe9, - 0x1c, 0xa7, 0x54, 0xf7, 0x31, 0xa9, 0xaf, 0x50, 0xaf, 0xa8, 0x28, 0xcb, 0xe3, 0xf6, 0x15, 0x12, - 0xe2, 0x22, 0x7d, 0xcc, 0xbe, 0x45, 0x1c, 0x45, 0xbb, 0x1d, 0xad, 0x85, 0x5d, 0xee, 0x53, 0x43, - 0x8d, 0xf6, 0x64, 0x59, 0xaf, 0x27, 0x0b, 0xb5, 0xd3, 0xdc, 0x01, 0xda, 0xe9, 0xb0, 0xcb, 0x90, - 0xbe, 0xcc, 0x49, 0xc5, 0x0f, 0x6d, 0x19, 0x32, 0x96, 0x8d, 0x31, 0x5c, 0x3b, 0xea, 0x1d, 0xa4, - 0x1d, 0x6b, 0x6b, 0x1d, 0x76, 0x93, 0x86, 0x09, 0x6b, 0x64, 0x87, 0x66, 0x87, 0xd9, 0xa4, 0x89, - 0xe6, 0x61, 0x0c, 0x68, 0xcd, 0x31, 0xb4, 0x3e, 0xc5, 0x86, 0xd1, 0x94, 0xf7, 0x49, 0x6d, 0xd3, - 0x72, 0x92, 0xed, 0x93, 0xba, 0xdc, 0xa9, 0xe4, 0xbf, 0xa4, 0x07, 0xaf, 0xf8, 0x73, 0xd5, 0xa3, - 0x1a, 0x3e, 0x13, 0x1c, 0xbc, 0x1a, 0xc4, 0x40, 0xfa, 0xf0, 0xbe, 0xe1, 0x90, 0x06, 0xcf, 0x61, - 0x9b, 0x23, 0x6b, 0x03, 0x23, 0x1b, 0x3a, 0x87, 0x69, 0x8e, 0xd1, 0x3c, 0xa4, 0x8f, 0xd7, 0xd7, - 0x43, 0x03, 0xe7, 0xeb, 0xc6, 0x38, 0x70, 0x7a, 0x2d, 0x33, 0x37, 0x64, 0xcb, 0x1c, 0x76, 0xff, - 0x87, 0xc9, 0x7a, 0x74, 0x03, 0xe6, 0x30, 0xfb, 0x3f, 0x31, 0x4c, 0xa4, 0x8f, 0xf8, 0xeb, 0x65, - 0xc8, 0xd5, 0xc7, 0x3f, 0x5e, 0x0e, 0x3b, 0x17, 0x21, 0xb2, 0xaa, 0x8f, 0x6c, 0xb8, 0x1c, 0x66, - 0x2e, 0x12, 0xc9, 0xc2, 0x18, 0x02, 0xef, 0x1f, 0x85, 0x19, 0xb2, 0x24, 0xe2, 0x6d, 0xb3, 0x7e, - 0x9d, 0x8d, 0x9a, 0x8f, 0xa4, 0xd8, 0x56, 0xef, 0x85, 0x49, 0x6f, 0xff, 0x8e, 0x8d, 0x9c, 0xf3, - 0x62, 0xed, 0xd3, 0xe3, 0x52, 0xf5, 0xff, 0x3f, 0x90, 0x33, 0xc4, 0xc8, 0xf7, 0x6a, 0x87, 0x75, - 0x86, 0x38, 0xd4, 0xfd, 0xda, 0x3f, 0x0d, 0x46, 0xd4, 0xff, 0x92, 0x1e, 0xe6, 0xbd, 0xfb, 0xb8, - 0xd9, 0x3e, 0xfb, 0xb8, 0x1f, 0x0a, 0x63, 0x59, 0xe7, 0xb1, 0xbc, 0x4b, 0x54, 0x84, 0x23, 0x1c, - 0x6b, 0xdf, 0xee, 0xc3, 0x79, 0x8e, 0x83, 0x73, 0xe1, 0x40, 0xbc, 0x8c, 0xe1, 0xe0, 0x63, 0x36, - 0x18, 0x73, 0x3f, 0x9c, 0x62, 0x3b, 0xee, 0x39, 0x55, 0x91, 0xdd, 0x77, 0xaa, 0x82, 0x6b, 0xe9, - 0xb9, 0x03, 0xb6, 0xf4, 0x0f, 0x87, 0xb5, 0xa3, 0xc1, 0x6b, 0xc7, 0xd3, 0xc5, 0x11, 0x19, 0xdd, - 0xc8, 0xfc, 0x0e, 0x5f, 0x3d, 0xce, 0x73, 0xea, 0x51, 0x3a, 0x18, 0x33, 0xe9, 0xeb, 0xc7, 0x1f, - 0x79, 0x13, 0xda, 0x43, 0x6e, 0xef, 0xc3, 0x6e, 0x15, 0x73, 0x42, 0x1c, 0xd9, 0xc8, 0x3d, 0xcc, - 0x56, 0xf1, 0x20, 0x4e, 0xc6, 0x10, 0x8b, 0x6d, 0x16, 0xa6, 0x09, 0x4f, 0xe7, 0xf5, 0xf6, 0x16, - 0x76, 0xd0, 0x2b, 0xa8, 0x8f, 0xa2, 0x17, 0xf9, 0x72, 0x44, 0xe1, 0x89, 0xa2, 0xce, 0xbb, 0x26, - 0xf5, 0xe8, 0xa0, 0x4c, 0xce, 0x87, 0x18, 0x1c, 0x77, 0x04, 0xc5, 0x81, 0x1c, 0xa4, 0x0f, 0xd9, - 0x07, 0xa8, 0xbb, 0xcd, 0xaa, 0x76, 0xd9, 0xdc, 0x75, 0xd0, 0x43, 0x23, 0xe8, 0xa0, 0x17, 0x20, - 0xdf, 0x21, 0xd4, 0xd8, 0xb1, 0x8c, 0xf8, 0xe9, 0x0e, 0x13, 0x01, 0x2d, 0x5f, 0x65, 0x7f, 0x26, - 0x3d, 0x9b, 0x11, 0xc8, 0x91, 0xd2, 0x19, 0xf7, 0xd9, 0x8c, 0x01, 0xe5, 0x8f, 0xe5, 0x8e, 0x9d, - 0x49, 0xb7, 0x74, 0x7d, 0x47, 0x77, 0x46, 0x14, 0xc1, 0xa1, 0xe3, 0xd2, 0xf2, 0x22, 0x38, 0x90, - 0x97, 0xa4, 0x27, 0x46, 0x43, 0x52, 0x71, 0x7f, 0x1f, 0xf7, 0x89, 0xd1, 0xf8, 0xe2, 0xd3, 0xc7, - 0xe4, 0xd7, 0x68, 0xcb, 0x3a, 0x47, 0x9d, 0x6f, 0x53, 0xf4, 0xeb, 0x1d, 0xba, 0xb1, 0x50, 0xd6, - 0x0e, 0xaf, 0xb1, 0xf4, 0x2d, 0x3f, 0x7d, 0x60, 0xfe, 0xdb, 0x0f, 0x42, 0x6e, 0x11, 0x5f, 0xd8, - 0xdd, 0x42, 0x77, 0xc2, 0x64, 0xc3, 0xc2, 0xb8, 0x62, 0x6c, 0x9a, 0xae, 0x74, 0x1d, 0xf7, 0xd9, - 0x83, 0x84, 0xbd, 0xb9, 0x78, 0x6c, 0x63, 0xad, 0x1d, 0x9c, 0x3f, 0xf3, 0x5e, 0xd1, 0x8b, 0x24, - 0xc8, 0xd6, 0x1d, 0xcd, 0x41, 0x53, 0x3e, 0xb6, 0xe8, 0xa1, 0x30, 0x16, 0x77, 0xf2, 0x58, 0xdc, - 0xc0, 0xc9, 0x82, 0x70, 0x30, 0xef, 0xfe, 0x1f, 0x01, 0x00, 0x82, 0xc9, 0x07, 0x6c, 0xd3, 0x70, - 0x73, 0x78, 0x47, 0x20, 0xbd, 0x77, 0xf4, 0x32, 0x5f, 0xdc, 0x77, 0x73, 0xe2, 0x7e, 0xbc, 0x58, - 0x11, 0x63, 0x58, 0x69, 0x93, 0x60, 0xca, 0x15, 0xed, 0x0a, 0xd6, 0xda, 0x36, 0xfa, 0x81, 0x40, - 0xf9, 0x23, 0xc4, 0x8c, 0xde, 0x23, 0x1c, 0x8c, 0x93, 0xd6, 0xca, 0x27, 0x1e, 0xed, 0xd1, 0xe1, - 0x6d, 0xfe, 0x4b, 0x7c, 0x30, 0x92, 0x5b, 0x20, 0xab, 0x1b, 0x9b, 0x26, 0xf3, 0x2f, 0xbc, 0x3a, - 0x82, 0xb6, 0xab, 0x13, 0x2a, 0xc9, 0x28, 0x18, 0xa9, 0x33, 0x9e, 0xad, 0xb1, 0x5c, 0x7a, 0x97, - 0x75, 0x4b, 0x47, 0xff, 0xe7, 0x40, 0x61, 0x2b, 0x0a, 0x64, 0xbb, 0x9a, 0xb3, 0xcd, 0x8a, 0x26, - 0xcf, 0xae, 0x8d, 0xbc, 0x6b, 0x68, 0x86, 0x69, 0x5c, 0xde, 0xd1, 0x9f, 0xe9, 0xdf, 0xad, 0xcb, - 0xa5, 0xb9, 0x9c, 0x6f, 0x61, 0x03, 0x5b, 0x9a, 0x83, 0xeb, 0x7b, 0x5b, 0x64, 0x8e, 0x35, 0xa9, - 0x86, 0x93, 0x12, 0xeb, 0xbf, 0xcb, 0x71, 0xb4, 0xfe, 0x6f, 0xea, 0x1d, 0x4c, 0x22, 0x35, 0x31, - 0xfd, 0xf7, 0xde, 0x13, 0xe9, 0x7f, 0x9f, 0x22, 0xd2, 0x47, 0xe3, 0xdb, 0x12, 0xcc, 0xd4, 0x5d, - 0x85, 0xab, 0xef, 0xee, 0xec, 0x68, 0xd6, 0x65, 0x74, 0x5d, 0x80, 0x4a, 0x48, 0x35, 0x33, 0xbc, - 0x5f, 0xca, 0x1f, 0x0a, 0x5f, 0x2b, 0xcd, 0x9a, 0x76, 0xa8, 0x84, 0xc4, 0xed, 0xe0, 0x89, 0x90, - 0x73, 0xd5, 0xdb, 0xf3, 0xb8, 0x8c, 0x6d, 0x08, 0x34, 0xa7, 0x60, 0x44, 0xab, 0x81, 0xbc, 0x8d, - 0x21, 0x9a, 0x86, 0x04, 0x47, 0xeb, 0x8e, 0xd6, 0xba, 0xb8, 0x6c, 0x5a, 0xe6, 0xae, 0xa3, 0x1b, - 0xd8, 0x46, 0x8f, 0x09, 0x10, 0xf0, 0xf4, 0x3f, 0x13, 0xe8, 0x3f, 0xfa, 0x6e, 0x46, 0x74, 0x14, - 0xf5, 0xbb, 0xd5, 0x30, 0xf9, 0x88, 0x00, 0x55, 0x62, 0xe3, 0xa2, 0x08, 0xc5, 0xf4, 0x85, 0xf6, - 0x3a, 0x19, 0x0a, 0xe5, 0x07, 0xbb, 0xa6, 0xe5, 0xac, 0x9a, 0x2d, 0xad, 0x63, 0x3b, 0xa6, 0x85, - 0x51, 0x2d, 0x56, 0x6a, 0x6e, 0x0f, 0xd3, 0x36, 0x5b, 0xc1, 0xe0, 0xc8, 0xde, 0xc2, 0x6a, 0x27, - 0xf3, 0x3a, 0xfe, 0x01, 0xe1, 0x5d, 0x46, 0x2a, 0x95, 0x5e, 0x8e, 0x22, 0xf4, 0xbc, 0x5f, 0x97, - 0x96, 0xec, 0xb0, 0x84, 0xd8, 0xce, 0xa3, 0x10, 0x53, 0x63, 0x58, 0x2a, 0x97, 0x60, 0xb6, 0xbe, - 0x7b, 0xc1, 0x27, 0x62, 0x87, 0x8d, 0x90, 0x57, 0x0a, 0x47, 0xa9, 0x60, 0x8a, 0x17, 0x26, 0x14, - 0x21, 0xdf, 0xeb, 0x61, 0xd6, 0x0e, 0x67, 0x63, 0x78, 0xf3, 0x89, 0x82, 0xd1, 0x29, 0x06, 0x97, - 0x9a, 0xbe, 0x00, 0xdf, 0x21, 0xc1, 0x6c, 0xad, 0x8b, 0x0d, 0xdc, 0xa6, 0x5e, 0x90, 0x9c, 0x00, - 0x5f, 0x94, 0x50, 0x80, 0x1c, 0xa1, 0x08, 0x01, 0x06, 0x1e, 0xcb, 0x8b, 0x9e, 0xf0, 0x82, 0x84, - 0x44, 0x82, 0x8b, 0x2b, 0x2d, 0x7d, 0xc1, 0x7d, 0x4e, 0x82, 0x69, 0x75, 0xd7, 0x58, 0xb7, 0x4c, - 0x77, 0x34, 0xb6, 0xd0, 0x5d, 0x41, 0x07, 0x71, 0x33, 0x1c, 0x6b, 0xef, 0x5a, 0x64, 0xfd, 0xa9, - 0x62, 0xd4, 0x71, 0xcb, 0x34, 0xda, 0x36, 0xa9, 0x47, 0x4e, 0xdd, 0xff, 0xe1, 0x8e, 0xec, 0x73, - 0xbf, 0x22, 0x67, 0xd0, 0xf3, 0x84, 0x43, 0xdd, 0xd0, 0xca, 0x87, 0x8a, 0x16, 0xef, 0x09, 0x04, - 0x03, 0xda, 0x0c, 0x2a, 0x21, 0x7d, 0xe1, 0x7e, 0x4a, 0x02, 0xa5, 0xd8, 0x6a, 0x99, 0xbb, 0x86, - 0x53, 0xc7, 0x1d, 0xdc, 0x72, 0x1a, 0x96, 0xd6, 0xc2, 0x61, 0xfb, 0xb9, 0x00, 0x72, 0x5b, 0xb7, - 0x58, 0x1f, 0xec, 0x3e, 0x32, 0x39, 0xbe, 0x48, 0x78, 0xc7, 0x91, 0xd6, 0x72, 0x7f, 0x29, 0x09, - 0xc4, 0x29, 0xb6, 0xaf, 0x28, 0x58, 0x50, 0xfa, 0x52, 0xfd, 0xb0, 0x04, 0x53, 0x5e, 0x8f, 0xbd, - 0x25, 0x22, 0xcc, 0x5f, 0x4b, 0x38, 0x19, 0xf1, 0x89, 0x27, 0x90, 0xe1, 0x5b, 0x12, 0xcc, 0x2a, - 0xa2, 0xe8, 0x27, 0x13, 0x5d, 0x31, 0xb9, 0xe8, 0xdc, 0xd7, 0x6a, 0xad, 0xb9, 0x54, 0x5b, 0x5d, - 0x2c, 0xab, 0x05, 0x19, 0x7d, 0x5e, 0x82, 0xec, 0xba, 0x6e, 0x6c, 0x85, 0xa3, 0x2b, 0x1d, 0x77, - 0xed, 0xc8, 0x36, 0x7e, 0x90, 0xb5, 0x74, 0xfa, 0xa2, 0xdc, 0x06, 0xc7, 0x8d, 0xdd, 0x9d, 0x0b, - 0xd8, 0xaa, 0x6d, 0x92, 0x51, 0xd6, 0x6e, 0x98, 0x75, 0x6c, 0x50, 0x23, 0x34, 0xa7, 0xf6, 0xfd, - 0xc6, 0x9b, 0x60, 0x02, 0x93, 0x07, 0x97, 0x93, 0x08, 0x89, 0xfb, 0x4c, 0x49, 0x21, 0xa6, 0x12, - 0x4d, 0x1b, 0xfa, 0x10, 0x4f, 0x5f, 0x53, 0xff, 0x38, 0x07, 0x27, 0x8a, 0xc6, 0x65, 0x62, 0x53, - 0xd0, 0x0e, 0xbe, 0xb4, 0xad, 0x19, 0x5b, 0x98, 0x0c, 0x10, 0xbe, 0xc4, 0xc3, 0x21, 0xfa, 0x33, - 0x7c, 0x88, 0x7e, 0x45, 0x85, 0x09, 0xd3, 0x6a, 0x63, 0x6b, 0xe1, 0x32, 0xe1, 0xa9, 0x77, 0xd9, - 0x99, 0xb5, 0xc9, 0x7e, 0x45, 0xcc, 0x33, 0xf2, 0xf3, 0x35, 0xfa, 0xbf, 0xea, 0x11, 0x3a, 0x7b, - 0x33, 0x4c, 0xb0, 0x34, 0x65, 0x06, 0x26, 0x6b, 0xea, 0x62, 0x59, 0x6d, 0x56, 0x16, 0x0b, 0x47, - 0x94, 0x2b, 0xe0, 0x68, 0xa5, 0x51, 0x56, 0x8b, 0x8d, 0x4a, 0xad, 0xda, 0x24, 0xe9, 0x85, 0x0c, - 0x7a, 0x4e, 0x56, 0xd4, 0xb3, 0x37, 0x9e, 0x99, 0x7e, 0xb0, 0xaa, 0x30, 0xd1, 0xa2, 0x19, 0xc8, - 0x10, 0x3a, 0x9d, 0xa8, 0x76, 0x8c, 0x20, 0x4d, 0x50, 0x3d, 0x42, 0xca, 0x69, 0x80, 0x4b, 0x96, - 0x69, 0x6c, 0x05, 0xa7, 0x0e, 0x27, 0xd5, 0x50, 0x0a, 0x7a, 0x28, 0x03, 0x79, 0xfa, 0x0f, 0xb9, - 0x92, 0x84, 0x3c, 0x05, 0x82, 0xf7, 0xde, 0x5d, 0x8b, 0x97, 0xc8, 0x2b, 0x98, 0x68, 0xb1, 0x57, - 0x57, 0x17, 0xa9, 0x0c, 0xa8, 0x25, 0xcc, 0xaa, 0x72, 0x0b, 0xe4, 0xe9, 0xbf, 0xcc, 0xeb, 0x20, - 0x3a, 0xbc, 0x28, 0xcd, 0x26, 0xe8, 0xa7, 0x2c, 0x2e, 0xd3, 0xf4, 0xb5, 0xf9, 0xbd, 0x12, 0x4c, - 0x56, 0xb1, 0x53, 0xda, 0xc6, 0xad, 0x8b, 0xe8, 0x71, 0xfc, 0x02, 0x68, 0x47, 0xc7, 0x86, 0x73, - 0xff, 0x4e, 0xc7, 0x5f, 0x00, 0xf5, 0x12, 0xd0, 0xcf, 0x86, 0x3b, 0xdf, 0x7b, 0x78, 0xfd, 0xb9, - 0xa9, 0x4f, 0x5d, 0xbd, 0x12, 0x22, 0x54, 0xe6, 0x24, 0xe4, 0x2d, 0x6c, 0xef, 0x76, 0xbc, 0x45, - 0x34, 0xf6, 0x86, 0x1e, 0xf6, 0xc5, 0x59, 0xe2, 0xc4, 0x79, 0x8b, 0x78, 0x11, 0x63, 0x88, 0x57, - 0x9a, 0x85, 0x89, 0x8a, 0xa1, 0x3b, 0xba, 0xd6, 0x41, 0xcf, 0xcb, 0xc2, 0x6c, 0x1d, 0x3b, 0xeb, - 0x9a, 0xa5, 0xed, 0x60, 0x07, 0x5b, 0x36, 0xfa, 0x26, 0xdf, 0x27, 0x74, 0x3b, 0x9a, 0xb3, 0x69, - 0x5a, 0x3b, 0x9e, 0x6a, 0x7a, 0xef, 0xae, 0x6a, 0xee, 0x61, 0xcb, 0x0e, 0xf8, 0xf2, 0x5e, 0xdd, - 0x2f, 0x97, 0x4c, 0xeb, 0xa2, 0x3b, 0x08, 0xb2, 0x69, 0x1a, 0x7b, 0x75, 0xe9, 0x75, 0xcc, 0xad, - 0x55, 0xbc, 0x87, 0xbd, 0x70, 0x69, 0xfe, 0xbb, 0x3b, 0x17, 0x68, 0x9b, 0x55, 0xd3, 0x71, 0x3b, - 0xed, 0x55, 0x73, 0x8b, 0xc6, 0x8b, 0x9d, 0x54, 0xf9, 0xc4, 0x20, 0x97, 0xb6, 0x87, 0x49, 0xae, - 0x7c, 0x38, 0x17, 0x4b, 0x54, 0xe6, 0x41, 0xf1, 0x7f, 0x6b, 0xe0, 0x0e, 0xde, 0xc1, 0x8e, 0x75, - 0x99, 0x5c, 0x0b, 0x31, 0xa9, 0xf6, 0xf9, 0xc2, 0x06, 0x68, 0xf1, 0xc9, 0x3a, 0x93, 0xde, 0x3c, - 0x27, 0xb9, 0x03, 0x4d, 0xd6, 0x45, 0x28, 0x8e, 0xe5, 0xda, 0x2b, 0xd9, 0xb5, 0x66, 0x5e, 0x2c, - 0x43, 0x96, 0x0c, 0x9e, 0xaf, 0xcf, 0x70, 0x2b, 0x4c, 0x3b, 0xd8, 0xb6, 0xb5, 0x2d, 0xec, 0xad, - 0x30, 0xb1, 0x57, 0xe5, 0x76, 0xc8, 0x75, 0x08, 0xa6, 0x74, 0x70, 0xb8, 0x8e, 0xab, 0x99, 0x6b, - 0x60, 0xb8, 0xb4, 0xfc, 0x91, 0x80, 0xc0, 0xad, 0xd2, 0x3f, 0xce, 0xde, 0x0b, 0x39, 0x0a, 0xff, - 0x14, 0xe4, 0x16, 0xcb, 0x0b, 0x1b, 0xcb, 0x85, 0x23, 0xee, 0xa3, 0xc7, 0xdf, 0x14, 0xe4, 0x96, - 0x8a, 0x8d, 0xe2, 0x6a, 0x41, 0x72, 0xeb, 0x51, 0xa9, 0x2e, 0xd5, 0x0a, 0xb2, 0x9b, 0xb8, 0x5e, - 0xac, 0x56, 0x4a, 0x85, 0xac, 0x32, 0x0d, 0x13, 0xe7, 0x8b, 0x6a, 0xb5, 0x52, 0x5d, 0x2e, 0xe4, - 0xd0, 0xdf, 0x85, 0xf1, 0xbb, 0x83, 0xc7, 0xef, 0xfa, 0x28, 0x9e, 0xfa, 0x41, 0xf6, 0x12, 0x1f, - 0xb2, 0xbb, 0x38, 0xc8, 0x7e, 0x50, 0x84, 0xc8, 0x18, 0xdc, 0x99, 0xf2, 0x30, 0xb1, 0x6e, 0x99, - 0x2d, 0x6c, 0xdb, 0xe8, 0xd7, 0x25, 0xc8, 0x97, 0x34, 0xa3, 0x85, 0x3b, 0xe8, 0xaa, 0x00, 0x2a, - 0xea, 0x2a, 0x9a, 0xf1, 0x4f, 0x8b, 0xfd, 0x53, 0x46, 0xb4, 0xf7, 0x63, 0x74, 0xe7, 0x29, 0xcd, - 0x08, 0xf9, 0x88, 0xf5, 0x72, 0xb1, 0xa4, 0xc6, 0x70, 0x35, 0x8e, 0x04, 0x53, 0x6c, 0x35, 0xe0, - 0x02, 0x0e, 0xcf, 0xc3, 0xbf, 0x99, 0x11, 0x9d, 0x1c, 0x7a, 0x35, 0xf0, 0xc9, 0x44, 0xc8, 0x43, - 0x6c, 0x22, 0x38, 0x88, 0xda, 0x18, 0x36, 0x0f, 0x25, 0x98, 0xde, 0x30, 0xec, 0x7e, 0x42, 0x11, - 0x8f, 0xa3, 0xef, 0x55, 0x23, 0x44, 0xe8, 0x40, 0x71, 0xf4, 0x07, 0xd3, 0x4b, 0x5f, 0x30, 0xdf, - 0xcc, 0xc0, 0xf1, 0x65, 0x6c, 0x60, 0x4b, 0x6f, 0xd1, 0x1a, 0x78, 0x92, 0xb8, 0x8b, 0x97, 0xc4, - 0xe3, 0x38, 0xce, 0xfb, 0xfd, 0xc1, 0x4b, 0xe0, 0xe5, 0xbe, 0x04, 0xee, 0xe1, 0x24, 0x70, 0xb3, - 0x20, 0x9d, 0x31, 0xdc, 0x87, 0x3e, 0x05, 0x33, 0x55, 0xd3, 0xd1, 0x37, 0xf5, 0x16, 0xf5, 0x41, - 0xfb, 0x4d, 0x19, 0xb2, 0xab, 0xba, 0xed, 0xa0, 0x62, 0xd0, 0x9d, 0x9c, 0x81, 0x69, 0xdd, 0x68, - 0x75, 0x76, 0xdb, 0x58, 0xc5, 0x1a, 0xed, 0x57, 0x26, 0xd5, 0x70, 0x52, 0xb0, 0xb5, 0xef, 0xb2, - 0x25, 0x7b, 0x5b, 0xfb, 0x1f, 0x17, 0x5e, 0x86, 0x09, 0xb3, 0x40, 0x02, 0x52, 0x46, 0xd8, 0x5d, - 0x45, 0x98, 0x35, 0x42, 0x59, 0x3d, 0x83, 0xbd, 0xf7, 0x42, 0x81, 0x30, 0x39, 0x95, 0xff, 0x03, - 0xbd, 0x4b, 0xa8, 0xb1, 0x0e, 0x62, 0x28, 0x19, 0x32, 0x4b, 0x43, 0x4c, 0x92, 0x15, 0x98, 0xab, - 0x54, 0x1b, 0x65, 0xb5, 0x5a, 0x5c, 0x65, 0x59, 0x64, 0xf4, 0x6d, 0x09, 0x72, 0x2a, 0xee, 0x76, - 0x2e, 0x87, 0x23, 0x46, 0x33, 0x47, 0xf1, 0x8c, 0xef, 0x28, 0xae, 0x2c, 0x01, 0x68, 0x2d, 0xb7, - 0x60, 0x72, 0xa5, 0x96, 0xd4, 0x37, 0x8e, 0x29, 0x57, 0xc1, 0xa2, 0x9f, 0x5b, 0x0d, 0xfd, 0x89, - 0x9e, 0x2f, 0xbc, 0x73, 0xc4, 0x51, 0x23, 0x1c, 0x46, 0xf4, 0x09, 0xef, 0x16, 0xda, 0xec, 0x19, - 0x48, 0xee, 0x70, 0xc4, 0xff, 0x05, 0x09, 0xb2, 0x0d, 0xb7, 0xb7, 0x0c, 0x75, 0x9c, 0x1f, 0x1b, - 0x4e, 0xc7, 0x5d, 0x32, 0x11, 0x3a, 0x7e, 0x37, 0xcc, 0x84, 0x35, 0x96, 0xb9, 0x4a, 0xc4, 0xaa, - 0x38, 0xf7, 0xc3, 0x30, 0x1a, 0xde, 0x87, 0x9d, 0xc3, 0x11, 0xf1, 0x47, 0x1e, 0x0f, 0xb0, 0x86, - 0x77, 0x2e, 0x60, 0xcb, 0xde, 0xd6, 0xbb, 0xe8, 0xef, 0x65, 0x98, 0x5a, 0xc6, 0x4e, 0xdd, 0xd1, - 0x9c, 0x5d, 0xbb, 0x67, 0xbb, 0xd3, 0x30, 0x4b, 0x5a, 0x6b, 0x1b, 0xb3, 0xee, 0xc8, 0x7b, 0x45, - 0x6f, 0x93, 0x45, 0xfd, 0x89, 0x82, 0x72, 0xe6, 0xfd, 0x32, 0x22, 0x30, 0x79, 0x02, 0x64, 0xdb, - 0x9a, 0xa3, 0x31, 0x2c, 0xae, 0xea, 0xc1, 0x22, 0x20, 0xa4, 0x92, 0x6c, 0xe8, 0x77, 0x24, 0x11, - 0x87, 0x22, 0x81, 0xf2, 0x93, 0x81, 0xf0, 0xae, 0xcc, 0x10, 0x28, 0x1c, 0x83, 0xd9, 0x6a, 0xad, - 0xd1, 0x5c, 0xad, 0x2d, 0x2f, 0x97, 0xdd, 0xd4, 0x82, 0xac, 0x9c, 0x04, 0x65, 0xbd, 0x78, 0xff, - 0x5a, 0xb9, 0xda, 0x68, 0x56, 0x6b, 0x8b, 0x65, 0xf6, 0x67, 0x56, 0x39, 0x0a, 0xd3, 0xa5, 0x62, - 0x69, 0xc5, 0x4b, 0xc8, 0x29, 0xa7, 0xe0, 0xf8, 0x5a, 0x79, 0x6d, 0xa1, 0xac, 0xd6, 0x57, 0x2a, - 0xeb, 0x4d, 0x97, 0xcc, 0x52, 0x6d, 0xa3, 0xba, 0x58, 0xc8, 0x2b, 0x08, 0x4e, 0x86, 0xbe, 0x9c, - 0x57, 0x6b, 0xd5, 0xe5, 0x66, 0xbd, 0x51, 0x6c, 0x94, 0x0b, 0x13, 0xca, 0x15, 0x70, 0xb4, 0x54, - 0xac, 0x92, 0xec, 0xa5, 0x5a, 0xb5, 0x5a, 0x2e, 0x35, 0x0a, 0x93, 0xe8, 0xbb, 0x59, 0x98, 0xae, - 0xd8, 0x55, 0x6d, 0x07, 0x9f, 0xd3, 0x3a, 0x7a, 0x1b, 0x3d, 0x2f, 0x34, 0xf3, 0xb8, 0x1e, 0x66, - 0x2d, 0xfa, 0x88, 0xdb, 0x0d, 0x1d, 0x53, 0x34, 0x67, 0x55, 0x3e, 0xd1, 0x9d, 0x93, 0x1b, 0x84, - 0x80, 0x37, 0x27, 0xa7, 0x6f, 0xca, 0x02, 0x00, 0x7d, 0x6a, 0x04, 0x97, 0xbb, 0x9e, 0xed, 0x6d, - 0x4d, 0xda, 0x0e, 0xb6, 0xb1, 0xb5, 0xa7, 0xb7, 0xb0, 0x97, 0x53, 0x0d, 0xfd, 0x85, 0xbe, 0x28, - 0x8b, 0xee, 0x2f, 0x86, 0x40, 0x0d, 0x55, 0x27, 0xa2, 0x37, 0xfc, 0x39, 0x59, 0x64, 0x77, 0x50, - 0x88, 0x64, 0x32, 0x4d, 0xf9, 0x25, 0x69, 0xb8, 0x65, 0xdb, 0x46, 0xad, 0xd6, 0xac, 0xaf, 0xd4, - 0xd4, 0x46, 0x41, 0x56, 0x66, 0x60, 0xd2, 0x7d, 0x5d, 0xad, 0x55, 0x97, 0x0b, 0x59, 0xe5, 0x04, - 0x1c, 0x5b, 0x29, 0xd6, 0x9b, 0x95, 0xea, 0xb9, 0xe2, 0x6a, 0x65, 0xb1, 0x59, 0x5a, 0x29, 0xaa, - 0xf5, 0x42, 0x4e, 0xb9, 0x0a, 0x4e, 0x34, 0x2a, 0x65, 0xb5, 0xb9, 0x54, 0x2e, 0x36, 0x36, 0xd4, - 0x72, 0xbd, 0x59, 0xad, 0x35, 0xab, 0xc5, 0xb5, 0x72, 0x21, 0xef, 0x36, 0x7f, 0xf2, 0x29, 0x50, - 0x9b, 0x89, 0xfd, 0xca, 0x38, 0x19, 0xa1, 0x8c, 0x53, 0xbd, 0xca, 0x08, 0x61, 0xb5, 0x52, 0xcb, - 0xf5, 0xb2, 0x7a, 0xae, 0x5c, 0x98, 0xee, 0xa7, 0x6b, 0x33, 0xca, 0x71, 0x28, 0xb8, 0x3c, 0x34, - 0x2b, 0x75, 0x2f, 0xe7, 0x62, 0x61, 0x16, 0x7d, 0x38, 0x0f, 0x27, 0x55, 0xbc, 0xa5, 0xdb, 0x0e, - 0xb6, 0xd6, 0xb5, 0xcb, 0x3b, 0xd8, 0x70, 0xbc, 0x4e, 0xfe, 0x5f, 0x13, 0x2b, 0xe3, 0x1a, 0xcc, - 0x76, 0x29, 0x8d, 0x35, 0xec, 0x6c, 0x9b, 0x6d, 0x36, 0x0a, 0x3f, 0x2e, 0xb2, 0xe7, 0x98, 0x5f, - 0x0f, 0x67, 0x57, 0xf9, 0xbf, 0x43, 0xba, 0x2d, 0xc7, 0xe8, 0x76, 0x76, 0x18, 0xdd, 0x56, 0xae, - 0x81, 0xa9, 0x5d, 0x1b, 0x5b, 0xe5, 0x1d, 0x4d, 0xef, 0x78, 0x97, 0x73, 0xfa, 0x09, 0xe8, 0xcd, - 0x59, 0xd1, 0x13, 0x2b, 0xa1, 0xba, 0xf4, 0x17, 0x63, 0x44, 0xdf, 0x7a, 0x1a, 0x80, 0x55, 0x76, - 0xc3, 0xea, 0x30, 0x65, 0x0d, 0xa5, 0xb8, 0xfc, 0x5d, 0xd0, 0x3b, 0x1d, 0xdd, 0xd8, 0xf2, 0xf7, - 0xfd, 0x83, 0x04, 0xf4, 0x4b, 0xb2, 0xc8, 0x09, 0x96, 0xa4, 0xbc, 0x25, 0x6b, 0x4d, 0xcf, 0x97, - 0xc6, 0xdc, 0xef, 0xee, 0x6f, 0x3a, 0x79, 0xa5, 0x00, 0x33, 0x24, 0x8d, 0xb5, 0xc0, 0xc2, 0x84, - 0xdb, 0x07, 0x7b, 0xe4, 0xd6, 0xca, 0x8d, 0x95, 0xda, 0xa2, 0xff, 0x6d, 0xd2, 0x25, 0xe9, 0x32, - 0x53, 0xac, 0xde, 0x4f, 0x5a, 0xe3, 0x94, 0xf2, 0x18, 0xb8, 0x2a, 0xd4, 0x61, 0x17, 0x57, 0xd5, - 0x72, 0x71, 0xf1, 0xfe, 0x66, 0xf9, 0x19, 0x95, 0x7a, 0xa3, 0xce, 0x37, 0x2e, 0xaf, 0x1d, 0x4d, - 0xbb, 0xfc, 0x96, 0xd7, 0x8a, 0x95, 0x55, 0xd6, 0xbf, 0x2f, 0xd5, 0xd4, 0xb5, 0x62, 0xa3, 0x30, - 0x83, 0x5e, 0x2c, 0x43, 0x61, 0x19, 0x3b, 0xeb, 0xa6, 0xe5, 0x68, 0x9d, 0x55, 0xdd, 0xb8, 0xb8, - 0x61, 0x75, 0xb8, 0xc9, 0xa6, 0x70, 0x98, 0x0e, 0x7e, 0x88, 0xe4, 0x08, 0x46, 0xef, 0x88, 0x77, - 0x49, 0xb6, 0x40, 0x99, 0x82, 0x04, 0xf4, 0x2c, 0x49, 0x64, 0xb9, 0x5b, 0xbc, 0xd4, 0x64, 0x7a, - 0xf2, 0xec, 0x71, 0x8f, 0xcf, 0x7d, 0x50, 0xcb, 0xa3, 0xe7, 0x66, 0x61, 0x72, 0x49, 0x37, 0xb4, - 0x8e, 0xfe, 0x4c, 0x2e, 0x7e, 0x69, 0xd0, 0xc7, 0x64, 0x62, 0xfa, 0x18, 0x69, 0xa8, 0xf1, 0xf3, - 0x57, 0x65, 0xd1, 0xe5, 0x85, 0x90, 0xec, 0x3d, 0x26, 0x23, 0x06, 0xcf, 0xf7, 0x49, 0x22, 0xcb, - 0x0b, 0x83, 0xe9, 0x25, 0xc3, 0xf0, 0xa3, 0xdf, 0x1b, 0x36, 0x56, 0x4f, 0xfb, 0x9e, 0xec, 0xa7, - 0x0a, 0x53, 0xe8, 0xcf, 0x65, 0x40, 0xcb, 0xd8, 0x39, 0x87, 0x2d, 0x7f, 0x2a, 0x40, 0x7a, 0x7d, - 0x66, 0x6f, 0x87, 0x9a, 0xec, 0xeb, 0xc3, 0x00, 0x9e, 0xe7, 0x01, 0x2c, 0xc6, 0x34, 0x9e, 0x08, - 0xd2, 0x11, 0x8d, 0xb7, 0x02, 0x79, 0x9b, 0x7c, 0x67, 0x6a, 0xf6, 0xc4, 0xe8, 0xe1, 0x92, 0x10, - 0x0b, 0x53, 0xa7, 0x84, 0x55, 0x46, 0x00, 0x7d, 0xcb, 0x9f, 0x04, 0xfd, 0x28, 0xa7, 0x1d, 0x4b, - 0x07, 0x66, 0x36, 0x99, 0xbe, 0x58, 0xe9, 0xaa, 0x4b, 0x3f, 0xfb, 0x06, 0xbd, 0x2f, 0x07, 0xc7, - 0xfb, 0x55, 0x07, 0xfd, 0x6e, 0x86, 0xdb, 0x61, 0xc7, 0x64, 0xc8, 0xcf, 0xb0, 0x0d, 0x44, 0xf7, - 0x45, 0x79, 0x32, 0x9c, 0xf0, 0x97, 0xe1, 0x1a, 0x66, 0x15, 0x5f, 0xb2, 0x3b, 0xd8, 0x71, 0xb0, - 0x45, 0xaa, 0x36, 0xa9, 0xf6, 0xff, 0xa8, 0x3c, 0x15, 0xae, 0xd4, 0x0d, 0x5b, 0x6f, 0x63, 0xab, - 0xa1, 0x77, 0xed, 0xa2, 0xd1, 0x6e, 0xec, 0x3a, 0xa6, 0xa5, 0x6b, 0xec, 0x2a, 0xc9, 0x49, 0x35, - 0xea, 0xb3, 0x72, 0x13, 0x14, 0x74, 0xbb, 0x66, 0x5c, 0x30, 0x35, 0xab, 0xad, 0x1b, 0x5b, 0xab, - 0xba, 0xed, 0x30, 0x0f, 0xe0, 0x7d, 0xe9, 0xe8, 0x1f, 0x64, 0xd1, 0xc3, 0x74, 0x03, 0x60, 0x8d, - 0xe8, 0x50, 0x7e, 0x56, 0x16, 0x39, 0x1e, 0x97, 0x8c, 0x76, 0x32, 0x65, 0x79, 0xce, 0xb8, 0x0d, - 0x89, 0xfe, 0x23, 0x38, 0xe9, 0x5a, 0x68, 0xba, 0x67, 0x08, 0x9c, 0x2b, 0xab, 0x95, 0xa5, 0x4a, - 0xd9, 0x35, 0x2b, 0x4e, 0xc0, 0xb1, 0xe0, 0xdb, 0xe2, 0xfd, 0xcd, 0x7a, 0xb9, 0xda, 0x28, 0x4c, - 0xba, 0xfd, 0x14, 0x4d, 0x5e, 0x2a, 0x56, 0x56, 0xcb, 0x8b, 0xcd, 0x46, 0xcd, 0xfd, 0xb2, 0x38, - 0x9c, 0x69, 0x81, 0x1e, 0xca, 0xc2, 0x51, 0x22, 0xdb, 0xcb, 0x44, 0xaa, 0xae, 0x50, 0x7a, 0x7c, - 0x6d, 0x7d, 0x80, 0xa6, 0xa8, 0x78, 0xd1, 0x27, 0x85, 0x6f, 0xca, 0x0c, 0x41, 0xd8, 0x53, 0x46, - 0x84, 0x66, 0x7c, 0x53, 0x12, 0x89, 0x50, 0x21, 0x4c, 0x36, 0x99, 0x52, 0xfc, 0xdb, 0xb8, 0x47, - 0x9c, 0x68, 0xf0, 0x89, 0x95, 0x59, 0x22, 0x3f, 0x3f, 0x63, 0xbd, 0xa2, 0x12, 0x75, 0x98, 0x03, - 0x20, 0x29, 0x44, 0x83, 0xa8, 0x1e, 0xf4, 0x1d, 0xaf, 0xa2, 0xf4, 0xa0, 0x58, 0x6a, 0x54, 0xce, - 0x95, 0xa3, 0xf4, 0xe0, 0x13, 0x32, 0x4c, 0x2e, 0x63, 0xc7, 0x9d, 0x53, 0xd9, 0xe8, 0x69, 0x02, - 0xeb, 0x3f, 0xae, 0x19, 0xd3, 0x31, 0x5b, 0x5a, 0xc7, 0x5f, 0x06, 0xa0, 0x6f, 0xe8, 0x67, 0x86, - 0x31, 0x41, 0xbc, 0xa2, 0x23, 0xc6, 0xab, 0x1f, 0x86, 0x9c, 0xe3, 0x7e, 0x66, 0xcb, 0xd0, 0x3f, - 0x10, 0x39, 0x5c, 0xb9, 0x44, 0x16, 0x35, 0x47, 0x53, 0x69, 0xfe, 0xd0, 0xe8, 0x24, 0x68, 0xbb, - 0x44, 0x30, 0xf2, 0xbd, 0x68, 0x7f, 0xfe, 0x9d, 0x0c, 0x27, 0x68, 0xfb, 0x28, 0x76, 0xbb, 0x75, - 0xc7, 0xb4, 0xb0, 0x8a, 0x5b, 0x58, 0xef, 0x3a, 0x3d, 0xeb, 0x7b, 0x16, 0x4d, 0xf5, 0x36, 0x9b, - 0xd9, 0x2b, 0x7a, 0x8d, 0x2c, 0x1a, 0x83, 0x79, 0x5f, 0x7b, 0xec, 0x29, 0x2f, 0xa2, 0xb1, 0x7f, - 0x48, 0x12, 0x89, 0xaa, 0x9c, 0x90, 0x78, 0x32, 0xa0, 0xde, 0x7f, 0x08, 0x40, 0x79, 0x2b, 0x37, - 0x6a, 0xb9, 0x54, 0xae, 0xac, 0xbb, 0x83, 0xc0, 0xb5, 0x70, 0xf5, 0xfa, 0x86, 0x5a, 0x5a, 0x29, - 0xd6, 0xcb, 0x4d, 0xb5, 0xbc, 0x5c, 0xa9, 0x37, 0x98, 0x53, 0x16, 0xfd, 0x6b, 0x42, 0xb9, 0x06, - 0x4e, 0xd5, 0x37, 0x16, 0xea, 0x25, 0xb5, 0xb2, 0x4e, 0xd2, 0xd5, 0x72, 0xb5, 0x7c, 0x9e, 0x7d, - 0x9d, 0x44, 0xef, 0x29, 0xc0, 0xb4, 0x3b, 0x01, 0xa8, 0xd3, 0x79, 0x01, 0xfa, 0x5a, 0x16, 0xa6, - 0x55, 0x6c, 0x9b, 0x9d, 0x3d, 0x32, 0x47, 0x18, 0xd7, 0xd4, 0xe3, 0x1b, 0xb2, 0xe8, 0xf9, 0xed, - 0x10, 0xb3, 0xf3, 0x21, 0x46, 0xa3, 0x27, 0x9a, 0xda, 0x9e, 0xa6, 0x77, 0xb4, 0x0b, 0xac, 0xab, - 0x99, 0x54, 0x83, 0x04, 0x65, 0x1e, 0x14, 0xf3, 0x92, 0x81, 0xad, 0x7a, 0xeb, 0x52, 0xd9, 0xd9, - 0x2e, 0xb6, 0xdb, 0x16, 0xb6, 0x6d, 0xb6, 0x7a, 0xd1, 0xe7, 0x8b, 0x72, 0x23, 0x1c, 0x25, 0xa9, - 0xa1, 0xcc, 0xd4, 0x41, 0xa6, 0x37, 0xd9, 0xcf, 0x59, 0x34, 0x2e, 0x7b, 0x39, 0x73, 0xa1, 0x9c, - 0x41, 0x72, 0xf8, 0xb8, 0x44, 0x9e, 0x3f, 0xa5, 0x73, 0x06, 0xa6, 0x0d, 0x6d, 0x07, 0x97, 0x1f, - 0xec, 0xea, 0x16, 0xb6, 0x89, 0x63, 0x8c, 0xac, 0x86, 0x93, 0xd0, 0xfb, 0x84, 0xce, 0x9b, 0x8b, - 0x49, 0x2c, 0x99, 0xee, 0x2f, 0x0f, 0xa1, 0xfa, 0x7d, 0xfa, 0x19, 0x19, 0xbd, 0x47, 0x86, 0x19, - 0xc6, 0x54, 0xd1, 0xb8, 0x5c, 0x69, 0xa3, 0x6b, 0x39, 0xe3, 0x57, 0x73, 0xd3, 0x3c, 0xe3, 0x97, - 0xbc, 0xa0, 0x9f, 0x97, 0x45, 0xdd, 0x9d, 0xfb, 0x54, 0x9c, 0x94, 0x11, 0xed, 0x38, 0xba, 0x69, - 0xee, 0x32, 0x47, 0xd5, 0x49, 0x95, 0xbe, 0xa4, 0xb9, 0xa8, 0x87, 0xfe, 0x40, 0xc8, 0x99, 0x5a, - 0xb0, 0x1a, 0x87, 0x04, 0xe0, 0x47, 0x64, 0x98, 0x63, 0x5c, 0xd5, 0xd9, 0x39, 0x1f, 0xa1, 0x03, - 0x6f, 0xbf, 0x28, 0x6c, 0x08, 0xf6, 0xa9, 0x3f, 0x2b, 0xe9, 0x51, 0x03, 0xe4, 0x07, 0x84, 0x82, - 0xa3, 0x09, 0x57, 0xe4, 0x90, 0xa0, 0x7c, 0x4b, 0x16, 0xa6, 0x37, 0x6c, 0x6c, 0x31, 0xbf, 0x7d, - 0xf4, 0x70, 0x16, 0xe4, 0x65, 0xcc, 0x6d, 0xa4, 0xbe, 0x40, 0xd8, 0xc3, 0x37, 0x5c, 0xd9, 0x10, - 0x51, 0xd7, 0x46, 0x8a, 0x80, 0xed, 0x06, 0x98, 0xa3, 0x22, 0x2d, 0x3a, 0x8e, 0x6b, 0x24, 0x7a, - 0xde, 0xb4, 0x3d, 0xa9, 0xa3, 0xd8, 0x2a, 0x22, 0x65, 0xb9, 0x59, 0x4a, 0x2e, 0x4f, 0xab, 0x78, - 0x93, 0xce, 0x67, 0xb3, 0x6a, 0x4f, 0xaa, 0x72, 0x2b, 0x5c, 0x61, 0x76, 0x31, 0x3d, 0xbf, 0x12, - 0xca, 0x9c, 0x23, 0x99, 0xfb, 0x7d, 0x42, 0x5f, 0x13, 0xf2, 0xd5, 0x15, 0x97, 0x4e, 0x32, 0x5d, - 0xe8, 0x8e, 0xc6, 0x24, 0x39, 0x0e, 0x05, 0x37, 0x07, 0xd9, 0x7f, 0x51, 0xcb, 0xf5, 0xda, 0xea, - 0xb9, 0x72, 0xff, 0x65, 0x8c, 0x1c, 0x7a, 0x8e, 0x0c, 0x53, 0x0b, 0x96, 0xa9, 0xb5, 0x5b, 0x9a, - 0xed, 0xa0, 0x6f, 0x49, 0x30, 0xb3, 0xae, 0x5d, 0xee, 0x98, 0x5a, 0x9b, 0xf8, 0xf7, 0xf7, 0xf4, - 0x05, 0x5d, 0xfa, 0xc9, 0xeb, 0x0b, 0xd8, 0x2b, 0x7f, 0x30, 0xd0, 0x3f, 0xba, 0x97, 0x11, 0xb9, - 0x50, 0xd3, 0xdf, 0xe6, 0x93, 0xfa, 0x05, 0x2b, 0xf5, 0xf8, 0x9a, 0x0f, 0xf3, 0x14, 0x61, 0x51, - 0xbe, 0x47, 0x2c, 0xfc, 0xa8, 0x08, 0xc9, 0xc3, 0xd9, 0x95, 0x7f, 0xee, 0x24, 0xe4, 0x17, 0x31, - 0xb1, 0xe2, 0xfe, 0xbb, 0x04, 0x13, 0x75, 0xec, 0x10, 0x0b, 0xee, 0x76, 0xce, 0x53, 0xb8, 0x4d, - 0x32, 0x04, 0x4e, 0xec, 0xde, 0xbb, 0x3b, 0x59, 0x0f, 0x9d, 0xb7, 0x26, 0xcf, 0x09, 0x3c, 0x12, - 0x69, 0xb9, 0xf3, 0xac, 0xcc, 0x03, 0x79, 0x24, 0xc6, 0x92, 0x4a, 0xdf, 0xd7, 0xea, 0x6d, 0x12, - 0x73, 0xad, 0x0a, 0xf5, 0x7a, 0xaf, 0x08, 0xeb, 0x67, 0xac, 0xb7, 0x19, 0x63, 0x3e, 0xc6, 0x39, - 0xea, 0x49, 0x30, 0x41, 0x65, 0xee, 0xcd, 0x47, 0x7b, 0xfd, 0x14, 0x28, 0x09, 0x72, 0xf6, 0xda, - 0xcb, 0x29, 0xe8, 0xa2, 0x16, 0x5d, 0xf8, 0x58, 0x62, 0x10, 0xcc, 0x54, 0xb1, 0x73, 0xc9, 0xb4, - 0x2e, 0xd6, 0x1d, 0xcd, 0xc1, 0xe8, 0xdf, 0x24, 0x90, 0xeb, 0xd8, 0x09, 0x47, 0x3f, 0xa9, 0xc2, - 0x31, 0x5a, 0x21, 0x96, 0x91, 0xf4, 0xdf, 0xb4, 0x22, 0x67, 0xfa, 0x0a, 0x21, 0x94, 0x4f, 0xdd, - 0xff, 0x2b, 0xfa, 0xf5, 0xbe, 0x41, 0x9f, 0xa4, 0x3e, 0x93, 0x06, 0x26, 0x99, 0x30, 0x83, 0xae, - 0x82, 0x45, 0xe8, 0xe9, 0x7b, 0x85, 0xcc, 0x6a, 0x31, 0x9a, 0x87, 0xd3, 0x15, 0x7c, 0xe0, 0x2a, - 0xc8, 0x96, 0xb6, 0x35, 0x07, 0xbd, 0x55, 0x06, 0x28, 0xb6, 0xdb, 0x6b, 0xd4, 0x07, 0x3c, 0xec, - 0x90, 0x76, 0x16, 0x66, 0x5a, 0xdb, 0x5a, 0x70, 0xb7, 0x09, 0xed, 0x0f, 0xb8, 0x34, 0xe5, 0xc9, - 0x81, 0x33, 0x39, 0x95, 0x2a, 0xea, 0x81, 0xc9, 0x2d, 0x83, 0xd1, 0xf6, 0x1d, 0xcd, 0xf9, 0x50, - 0x98, 0xb1, 0x47, 0xe8, 0xdc, 0xdf, 0xe7, 0x03, 0xf6, 0xa2, 0xe7, 0x70, 0x8c, 0xb4, 0x7f, 0xc0, - 0x26, 0x48, 0x48, 0x78, 0xd2, 0x5b, 0x2c, 0xa0, 0x47, 0x3c, 0x5f, 0x63, 0x09, 0x5d, 0xab, 0x94, - 0xdb, 0xba, 0x27, 0x5a, 0x16, 0x30, 0x0b, 0x3d, 0x3f, 0x93, 0x0c, 0xbe, 0x78, 0xc1, 0xdd, 0x03, - 0xb3, 0xb8, 0xad, 0x3b, 0xd8, 0xab, 0x25, 0x13, 0x60, 0x1c, 0xc4, 0xfc, 0x0f, 0xe8, 0xd9, 0xc2, - 0x41, 0xd7, 0x88, 0x40, 0xf7, 0xd7, 0x28, 0xa2, 0xfd, 0x89, 0x85, 0x51, 0x13, 0xa3, 0x99, 0x3e, - 0x58, 0x3f, 0x23, 0xc3, 0x89, 0x86, 0xb9, 0xb5, 0xd5, 0xc1, 0x9e, 0x98, 0x30, 0xf5, 0xce, 0x44, - 0xda, 0x28, 0xe1, 0x22, 0x3b, 0x41, 0xe6, 0x03, 0xba, 0x7f, 0x94, 0xcc, 0x7d, 0xe1, 0x4f, 0x4c, - 0xc5, 0xce, 0xa2, 0x88, 0xb8, 0xfa, 0xf2, 0x19, 0x81, 0x82, 0x58, 0xc0, 0x67, 0x61, 0xb2, 0xe9, - 0x03, 0xf1, 0x59, 0x09, 0x66, 0xe9, 0xcd, 0x95, 0x9e, 0x82, 0xde, 0x37, 0x42, 0x00, 0xd0, 0xb7, - 0x32, 0xa2, 0x7e, 0xb6, 0x44, 0x26, 0x1c, 0x27, 0x11, 0x22, 0x16, 0x0b, 0xaa, 0x32, 0x90, 0x5c, - 0xfa, 0xa2, 0xfd, 0x13, 0x19, 0xa6, 0x97, 0xb1, 0xd7, 0xd2, 0xec, 0xc4, 0x3d, 0xd1, 0x59, 0x98, - 0x21, 0xd7, 0xb7, 0xd5, 0xd8, 0x31, 0x49, 0xba, 0x6a, 0xc6, 0xa5, 0x29, 0xd7, 0xc3, 0xec, 0x05, - 0xbc, 0x69, 0x5a, 0xb8, 0xc6, 0x9d, 0xa5, 0xe4, 0x13, 0x23, 0xc2, 0xd3, 0x71, 0x71, 0xd0, 0x16, - 0x78, 0x6c, 0x6e, 0xde, 0x2f, 0xcc, 0x50, 0x55, 0x22, 0xc6, 0x9c, 0xa7, 0xc0, 0x24, 0x43, 0xde, - 0x33, 0xd3, 0xe2, 0xfa, 0x45, 0x3f, 0x2f, 0x7a, 0xb5, 0x8f, 0x68, 0x99, 0x43, 0xf4, 0x89, 0x49, - 0x98, 0x18, 0xcb, 0xfd, 0xee, 0x85, 0x50, 0xf9, 0x0b, 0x97, 0x2b, 0x6d, 0x1b, 0xad, 0x25, 0xc3, - 0xf4, 0x34, 0x80, 0xdf, 0x38, 0xbc, 0xb0, 0x16, 0xa1, 0x14, 0x3e, 0x72, 0x7d, 0xec, 0x41, 0xbd, - 0x5e, 0x71, 0x10, 0x76, 0x46, 0x0c, 0x8c, 0xd8, 0x01, 0x3f, 0x11, 0x4e, 0xd2, 0x47, 0xe7, 0xe3, - 0x32, 0x9c, 0xf0, 0xcf, 0x1f, 0xad, 0x6a, 0x76, 0xd0, 0xee, 0x4a, 0xc9, 0x20, 0xe2, 0x0e, 0x7c, - 0xf8, 0x8d, 0xe5, 0xeb, 0xc9, 0xc6, 0x8c, 0xbe, 0x9c, 0x8c, 0x16, 0x1d, 0xe5, 0x66, 0x38, 0x66, - 0xec, 0xee, 0xf8, 0x52, 0x27, 0x2d, 0x9e, 0xb5, 0xf0, 0xfd, 0x1f, 0x92, 0x8c, 0x4c, 0x22, 0xcc, - 0x8f, 0x65, 0x4e, 0xc9, 0x1d, 0xe9, 0x7a, 0x42, 0x22, 0x18, 0xd1, 0xbf, 0x64, 0x12, 0xf5, 0x6e, - 0x83, 0xcf, 0x7c, 0x25, 0xe8, 0xa5, 0x0e, 0xf1, 0xc0, 0xd7, 0xd9, 0x09, 0xc8, 0x95, 0x77, 0xba, - 0xce, 0xe5, 0xb3, 0x8f, 0x85, 0xd9, 0xba, 0x63, 0x61, 0x6d, 0x27, 0xb4, 0x33, 0xe0, 0x98, 0x17, - 0xb1, 0xe1, 0xed, 0x0c, 0x90, 0x97, 0x3b, 0x6e, 0x87, 0x09, 0xc3, 0x6c, 0x6a, 0xbb, 0xce, 0xb6, - 0x72, 0xed, 0xbe, 0x23, 0xf5, 0x0c, 0xfc, 0x1a, 0x8b, 0x61, 0xf4, 0xc5, 0x3b, 0xc9, 0xda, 0x70, - 0xde, 0x30, 0x8b, 0xbb, 0xce, 0xf6, 0xc2, 0x35, 0x1f, 0xf9, 0xdb, 0xd3, 0x99, 0x4f, 0xfc, 0xed, - 0xe9, 0xcc, 0x17, 0xfe, 0xf6, 0x74, 0xe6, 0x17, 0xbf, 0x74, 0xfa, 0xc8, 0x27, 0xbe, 0x74, 0xfa, - 0xc8, 0x67, 0xbf, 0x74, 0xfa, 0xc8, 0x8f, 0x4a, 0xdd, 0x0b, 0x17, 0xf2, 0x84, 0xca, 0x93, 0xfe, - 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x7f, 0x7f, 0x9b, 0x26, 0x60, 0x08, 0x02, 0x00, + // 19802 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xfd, 0x7b, 0x9c, 0x24, 0x49, + 0x59, 0x2f, 0x8c, 0x4f, 0x65, 0x56, 0x55, 0x77, 0x3f, 0x7d, 0x99, 0x9a, 0xdc, 0x99, 0xd9, 0xd9, + 0xd8, 0x65, 0x76, 0x9c, 0x5d, 0x96, 0x75, 0x59, 0x7a, 0x2f, 0x20, 0xb2, 0xcb, 0xde, 0xaa, 0xab, + 0xab, 0xbb, 0x6b, 0xb7, 0xbb, 0xaa, 0xcd, 0xaa, 0x9e, 0x61, 0xf5, 0xf8, 0xab, 0x93, 0x53, 0x15, + 0xdd, 0x9d, 0x3b, 0xd5, 0x99, 0x65, 0x66, 0x76, 0xcf, 0x0e, 0xbf, 0xcf, 0x79, 0x8f, 0x88, 0x2b, + 0x28, 0x72, 0x10, 0x15, 0x15, 0x15, 0x90, 0xcb, 0xca, 0x01, 0x05, 0xe4, 0x7e, 0x40, 0x05, 0xe4, + 0x22, 0x88, 0x88, 0x08, 0x72, 0x11, 0xdd, 0x57, 0x10, 0x44, 0x3c, 0x1f, 0x39, 0xbc, 0xfa, 0x1e, + 0x41, 0x14, 0x5e, 0xdf, 0x4f, 0x46, 0x44, 0x5e, 0xa2, 0xba, 0x32, 0x2b, 0xb2, 0xba, 0xb2, 0x7a, + 0x91, 0xf7, 0xbf, 0xcc, 0xc8, 0xc8, 0x27, 0x9e, 0x78, 0xbe, 0x4f, 0x44, 0x3c, 0x11, 0xf1, 0xc4, + 0x13, 0x70, 0xaa, 0x7b, 0xe1, 0x96, 0xae, 0x65, 0x3a, 0xa6, 0x7d, 0x4b, 0xcb, 0xdc, 0xd9, 0xd1, + 0x8c, 0xb6, 0x3d, 0x4f, 0xde, 0x95, 0x09, 0xcd, 0xb8, 0xec, 0x5c, 0xee, 0x62, 0x74, 0x7d, 0xf7, + 0xe2, 0xd6, 0x2d, 0x1d, 0xfd, 0xc2, 0x2d, 0xdd, 0x0b, 0xb7, 0xec, 0x98, 0x6d, 0xdc, 0xf1, 0x7e, + 0x20, 0x2f, 0x2c, 0x3b, 0xba, 0x31, 0x2a, 0x57, 0xc7, 0x6c, 0x69, 0x1d, 0xdb, 0x31, 0x2d, 0xcc, + 0x72, 0x9e, 0x0c, 0x8a, 0xc4, 0x7b, 0xd8, 0x70, 0x3c, 0x0a, 0xd7, 0x6c, 0x99, 0xe6, 0x56, 0x07, + 0xd3, 0x6f, 0x17, 0x76, 0x37, 0x6f, 0xb1, 0x1d, 0x6b, 0xb7, 0xe5, 0xb0, 0xaf, 0x67, 0x7a, 0xbf, + 0xb6, 0xb1, 0xdd, 0xb2, 0xf4, 0xae, 0x63, 0x5a, 0x34, 0xc7, 0xd9, 0x77, 0xfd, 0xe2, 0x24, 0xc8, + 0x6a, 0xb7, 0x85, 0xbe, 0x31, 0x01, 0x72, 0xb1, 0xdb, 0x45, 0x1f, 0x92, 0x00, 0x96, 0xb1, 0x73, + 0x0e, 0x5b, 0xb6, 0x6e, 0x1a, 0xe8, 0x28, 0x4c, 0xa8, 0xf8, 0xc7, 0x76, 0xb1, 0xed, 0xdc, 0x99, + 0x7d, 0xfe, 0x57, 0xe4, 0x0c, 0x7a, 0x54, 0x82, 0x49, 0x15, 0xdb, 0x5d, 0xd3, 0xb0, 0xb1, 0x72, + 0x1f, 0xe4, 0xb0, 0x65, 0x99, 0xd6, 0xa9, 0xcc, 0x99, 0xcc, 0x8d, 0xd3, 0xb7, 0xdf, 0x34, 0xcf, + 0xaa, 0x3f, 0xaf, 0x76, 0x5b, 0xf3, 0xc5, 0x6e, 0x77, 0x3e, 0xa0, 0x34, 0xef, 0xfd, 0x34, 0x5f, + 0x76, 0xff, 0x50, 0xe9, 0x8f, 0xca, 0x29, 0x98, 0xd8, 0xa3, 0x19, 0x4e, 0x49, 0x67, 0x32, 0x37, + 0x4e, 0xa9, 0xde, 0xab, 0xfb, 0xa5, 0x8d, 0x1d, 0x4d, 0xef, 0xd8, 0xa7, 0x64, 0xfa, 0x85, 0xbd, + 0xa2, 0x57, 0x65, 0x20, 0x47, 0x88, 0x28, 0x25, 0xc8, 0xb6, 0xcc, 0x36, 0x26, 0xc5, 0xcf, 0xdd, + 0x7e, 0x8b, 0x78, 0xf1, 0xf3, 0x25, 0xb3, 0x8d, 0x55, 0xf2, 0xb3, 0x72, 0x06, 0xa6, 0x3d, 0xb1, + 0x04, 0x6c, 0x84, 0x93, 0xce, 0xde, 0x0e, 0x59, 0x37, 0xbf, 0x32, 0x09, 0xd9, 0xea, 0xc6, 0xea, + 0x6a, 0xe1, 0x88, 0x72, 0x0c, 0x66, 0x37, 0xaa, 0x0f, 0x54, 0x6b, 0xe7, 0xab, 0xcd, 0xb2, 0xaa, + 0xd6, 0xd4, 0x42, 0x46, 0x99, 0x85, 0xa9, 0x85, 0xe2, 0x62, 0xb3, 0x52, 0x5d, 0xdf, 0x68, 0x14, + 0x24, 0xf4, 0x72, 0x19, 0xe6, 0xea, 0xd8, 0x59, 0xc4, 0x7b, 0x7a, 0x0b, 0xd7, 0x1d, 0xcd, 0xc1, + 0xe8, 0x45, 0x19, 0x5f, 0x98, 0xca, 0x86, 0x5b, 0xa8, 0xff, 0x89, 0x55, 0xe0, 0xa9, 0xfb, 0x2a, + 0xc0, 0x53, 0x98, 0x67, 0x7f, 0xcf, 0x87, 0xd2, 0xd4, 0x30, 0x9d, 0xb3, 0x4f, 0x81, 0xe9, 0xd0, + 0x37, 0x65, 0x0e, 0x60, 0xa1, 0x58, 0x7a, 0x60, 0x59, 0xad, 0x6d, 0x54, 0x17, 0x0b, 0x47, 0xdc, + 0xf7, 0xa5, 0x9a, 0x5a, 0x66, 0xef, 0x19, 0xf4, 0xad, 0x4c, 0x08, 0xcc, 0x45, 0x1e, 0xcc, 0xf9, + 0xc1, 0xcc, 0xf4, 0x01, 0x14, 0xfd, 0xa6, 0x0f, 0xce, 0x32, 0x07, 0xce, 0x53, 0x93, 0x91, 0x4b, + 0x1f, 0xa0, 0x47, 0x24, 0x98, 0xac, 0x6f, 0xef, 0x3a, 0x6d, 0xf3, 0x92, 0x81, 0xa6, 0x7c, 0x64, + 0xd0, 0xd7, 0xc2, 0x32, 0xb9, 0x87, 0x97, 0xc9, 0x8d, 0xfb, 0x2b, 0xc1, 0x28, 0x44, 0x48, 0xe3, + 0x37, 0x7c, 0x69, 0x14, 0x39, 0x69, 0x3c, 0x45, 0x94, 0x50, 0xfa, 0x72, 0xf8, 0xd5, 0x67, 0x40, + 0xae, 0xde, 0xd5, 0x5a, 0x18, 0x7d, 0x4c, 0x86, 0x99, 0x55, 0xac, 0xed, 0xe1, 0x62, 0xb7, 0x6b, + 0x99, 0x7b, 0x18, 0x95, 0x02, 0x7d, 0x3d, 0x05, 0x13, 0xb6, 0x9b, 0xa9, 0xd2, 0x26, 0x35, 0x98, + 0x52, 0xbd, 0x57, 0xe5, 0x34, 0x80, 0xde, 0xc6, 0x86, 0xa3, 0x3b, 0x3a, 0xb6, 0x4f, 0x49, 0x67, + 0xe4, 0x1b, 0xa7, 0xd4, 0x50, 0x0a, 0xfa, 0x86, 0x24, 0xaa, 0x63, 0x84, 0x8b, 0xf9, 0x30, 0x07, + 0x11, 0x52, 0x7d, 0xb5, 0x24, 0xa2, 0x63, 0x03, 0xc9, 0x25, 0x93, 0xed, 0x1b, 0x33, 0xc9, 0x85, + 0xeb, 0xe6, 0xa8, 0xd6, 0x9a, 0xf5, 0x8d, 0xd2, 0x4a, 0xb3, 0xbe, 0x5e, 0x2c, 0x95, 0x0b, 0x58, + 0x39, 0x0e, 0x05, 0xf2, 0xd8, 0xac, 0xd4, 0x9b, 0x8b, 0xe5, 0xd5, 0x72, 0xa3, 0xbc, 0x58, 0xd8, + 0x54, 0x14, 0x98, 0x53, 0xcb, 0x3f, 0xb4, 0x51, 0xae, 0x37, 0x9a, 0x4b, 0xc5, 0xca, 0x6a, 0x79, + 0xb1, 0xb0, 0xe5, 0xfe, 0xbc, 0x5a, 0x59, 0xab, 0x34, 0x9a, 0x6a, 0xb9, 0x58, 0x5a, 0x29, 0x2f, + 0x16, 0xb6, 0x95, 0x2b, 0xe1, 0x8a, 0x6a, 0xad, 0x59, 0x5c, 0x5f, 0x57, 0x6b, 0xe7, 0xca, 0x4d, + 0xf6, 0x47, 0xbd, 0xa0, 0xd3, 0x82, 0x1a, 0xcd, 0xfa, 0x4a, 0x51, 0x2d, 0x17, 0x17, 0x56, 0xcb, + 0x85, 0x87, 0xd0, 0x73, 0x65, 0x98, 0x5d, 0xd3, 0x2e, 0xe2, 0xfa, 0xb6, 0x66, 0x61, 0xed, 0x42, + 0x07, 0xa3, 0xeb, 0x04, 0xf0, 0x44, 0x1f, 0x0b, 0xe3, 0x55, 0xe6, 0xf1, 0xba, 0xa5, 0x8f, 0x80, + 0xb9, 0x22, 0x22, 0x00, 0xfb, 0x17, 0xbf, 0x19, 0xac, 0x70, 0x80, 0x3d, 0x2d, 0x21, 0xbd, 0x64, + 0x88, 0xfd, 0xc4, 0xe3, 0x00, 0x31, 0xf4, 0x98, 0x0c, 0x73, 0x15, 0x63, 0x4f, 0x77, 0xf0, 0x32, + 0x36, 0xb0, 0xe5, 0x8e, 0x03, 0x42, 0x30, 0x3c, 0x2a, 0x87, 0x60, 0x58, 0xe2, 0x61, 0xb8, 0xb5, + 0x8f, 0xd8, 0xf8, 0x32, 0x22, 0x46, 0xdb, 0x6b, 0x60, 0x4a, 0x27, 0xf9, 0x4a, 0x7a, 0x9b, 0x49, + 0x2c, 0x48, 0x50, 0xae, 0x87, 0x59, 0xfa, 0xb2, 0xa4, 0x77, 0xf0, 0x03, 0xf8, 0x32, 0x1b, 0x77, + 0xf9, 0x44, 0xf4, 0xb3, 0x7e, 0xe3, 0xab, 0x70, 0x58, 0xfe, 0x40, 0x52, 0xa6, 0x92, 0x81, 0xf9, + 0x92, 0xc7, 0x43, 0xf3, 0xdb, 0xd7, 0xca, 0x74, 0xf4, 0x1d, 0x09, 0xa6, 0xeb, 0x8e, 0xd9, 0x75, + 0x55, 0x56, 0x37, 0xb6, 0xc4, 0xc0, 0xfd, 0x48, 0xb8, 0x8d, 0x95, 0x78, 0x70, 0x9f, 0xd2, 0x47, + 0x8e, 0xa1, 0x02, 0x22, 0x5a, 0xd8, 0x37, 0xfc, 0x16, 0xb6, 0xc4, 0xa1, 0x72, 0x7b, 0x22, 0x6a, + 0xdf, 0x85, 0xed, 0xeb, 0x25, 0x32, 0x14, 0x3c, 0x35, 0x73, 0x4a, 0xbb, 0x96, 0x85, 0x0d, 0x47, + 0x0c, 0x84, 0xbf, 0x0c, 0x83, 0xb0, 0xc2, 0x83, 0x70, 0x7b, 0x8c, 0x32, 0x7b, 0xa5, 0xa4, 0xd8, + 0xc6, 0xde, 0xe7, 0xa3, 0xf9, 0x00, 0x87, 0xe6, 0x0f, 0x26, 0x67, 0x2b, 0x19, 0xa4, 0x2b, 0x43, + 0x20, 0x7a, 0x1c, 0x0a, 0xee, 0x98, 0x54, 0x6a, 0x54, 0xce, 0x95, 0x9b, 0x95, 0xea, 0xb9, 0x4a, + 0xa3, 0x5c, 0xc0, 0xe8, 0x17, 0x64, 0x98, 0xa1, 0xac, 0xa9, 0x78, 0xcf, 0xbc, 0x28, 0xd8, 0xeb, + 0x3d, 0x96, 0xd0, 0x58, 0x08, 0x97, 0x10, 0xd1, 0x32, 0x7e, 0x26, 0x81, 0xb1, 0x10, 0x43, 0xee, + 0xf1, 0xd4, 0x5b, 0xed, 0x6b, 0x06, 0x5b, 0x7d, 0x5a, 0x4b, 0xdf, 0xde, 0xea, 0x25, 0x59, 0x00, + 0x5a, 0xc9, 0x73, 0x3a, 0xbe, 0x84, 0xd6, 0x02, 0x4c, 0x38, 0xb5, 0xcd, 0x0c, 0x54, 0x5b, 0xa9, + 0x9f, 0xda, 0xbe, 0x33, 0x3c, 0x66, 0x2d, 0xf0, 0xe8, 0xdd, 0x1c, 0x29, 0x6e, 0x97, 0x93, 0xe8, + 0xd9, 0xa1, 0xa7, 0x28, 0x12, 0x6f, 0x75, 0x5e, 0x03, 0x53, 0xe4, 0xb1, 0xaa, 0xed, 0x60, 0xd6, + 0x86, 0x82, 0x04, 0xe5, 0x2c, 0xcc, 0xd0, 0x8c, 0x2d, 0xd3, 0x70, 0xeb, 0x93, 0x25, 0x19, 0xb8, + 0x34, 0x17, 0xc4, 0x96, 0x85, 0x35, 0xc7, 0xb4, 0x08, 0x8d, 0x1c, 0x05, 0x31, 0x94, 0x84, 0xbe, + 0xea, 0xb7, 0xc2, 0x32, 0xa7, 0x39, 0xb7, 0x25, 0xa9, 0x4a, 0x32, 0xbd, 0xd9, 0x1b, 0xae, 0xfd, + 0xd1, 0x56, 0xd7, 0x74, 0xd1, 0x5e, 0x22, 0x53, 0x3b, 0xac, 0x9c, 0x04, 0x85, 0xa5, 0xba, 0x79, + 0x4b, 0xb5, 0x6a, 0xa3, 0x5c, 0x6d, 0x14, 0x36, 0xfb, 0x6a, 0xd4, 0x16, 0x7a, 0x75, 0x16, 0xb2, + 0xf7, 0x9b, 0xba, 0x81, 0x1e, 0xc9, 0x70, 0x2a, 0x61, 0x60, 0xe7, 0x92, 0x69, 0x5d, 0xf4, 0x1b, + 0x6a, 0x90, 0x10, 0x8f, 0x4d, 0xa0, 0x4a, 0xf2, 0x40, 0x55, 0xca, 0xf6, 0x53, 0xa5, 0x9f, 0x0f, + 0xab, 0xd2, 0x5d, 0xbc, 0x2a, 0xdd, 0xd0, 0x47, 0xfe, 0x2e, 0xf3, 0x11, 0x1d, 0xc0, 0x87, 0xfd, + 0x0e, 0xe0, 0x5e, 0x0e, 0xc6, 0x27, 0x8b, 0x91, 0x49, 0x06, 0xe0, 0xe7, 0x53, 0x6d, 0xf8, 0xfd, + 0xa0, 0xde, 0x8a, 0x80, 0x7a, 0xbb, 0x4f, 0x9f, 0xa0, 0xef, 0xef, 0x3a, 0x1e, 0xda, 0xdf, 0x4d, + 0x5c, 0x54, 0x4e, 0xc0, 0xb1, 0xc5, 0xca, 0xd2, 0x52, 0x59, 0x2d, 0x57, 0x1b, 0xcd, 0x6a, 0xb9, + 0x71, 0xbe, 0xa6, 0x3e, 0x50, 0xe8, 0xa0, 0x57, 0xc9, 0x00, 0xae, 0x84, 0x4a, 0x9a, 0xd1, 0xc2, + 0x1d, 0xb1, 0x1e, 0xfd, 0x7f, 0x49, 0xc9, 0xfa, 0x84, 0x80, 0x7e, 0x04, 0x9c, 0x2f, 0x93, 0xc4, + 0x5b, 0x65, 0x24, 0xb1, 0x64, 0xa0, 0xbe, 0xfe, 0xf1, 0x60, 0x7b, 0x5e, 0x01, 0x47, 0x3d, 0x7a, + 0x2c, 0x7b, 0xff, 0x69, 0xdf, 0x9b, 0xb2, 0x30, 0xc7, 0x60, 0xf1, 0xe6, 0xf1, 0xcf, 0xcf, 0x88, + 0x4c, 0xe4, 0x11, 0x4c, 0xb2, 0x69, 0xbb, 0xd7, 0xbd, 0xfb, 0xef, 0xca, 0x32, 0x4c, 0x77, 0xb1, + 0xb5, 0xa3, 0xdb, 0xb6, 0x6e, 0x1a, 0x74, 0x41, 0x6e, 0xee, 0xf6, 0x27, 0xfa, 0x12, 0x27, 0x6b, + 0x97, 0xf3, 0xeb, 0x9a, 0xe5, 0xe8, 0x2d, 0xbd, 0xab, 0x19, 0xce, 0x7a, 0x90, 0x59, 0x0d, 0xff, + 0x89, 0x5e, 0x9c, 0x70, 0x5a, 0xc3, 0xd7, 0x24, 0x42, 0x25, 0x7e, 0x2f, 0xc1, 0x94, 0x24, 0x96, + 0x60, 0x32, 0xb5, 0xf8, 0x50, 0xaa, 0x6a, 0xd1, 0x07, 0xef, 0x2d, 0xe5, 0x2a, 0x38, 0x51, 0xa9, + 0x96, 0x6a, 0xaa, 0x5a, 0x2e, 0x35, 0x9a, 0xeb, 0x65, 0x75, 0xad, 0x52, 0xaf, 0x57, 0x6a, 0xd5, + 0xfa, 0x41, 0x5a, 0x3b, 0xfa, 0xa8, 0xec, 0x6b, 0xcc, 0x22, 0x6e, 0x75, 0x74, 0x03, 0xa3, 0x7b, + 0x0f, 0xa8, 0x30, 0xfc, 0xaa, 0x8f, 0x38, 0xce, 0xac, 0xfc, 0x08, 0x9c, 0x5f, 0x99, 0x1c, 0xe7, + 0xfe, 0x04, 0xff, 0x03, 0x37, 0xff, 0xc7, 0x64, 0x38, 0x16, 0x6a, 0x88, 0x2a, 0xde, 0x19, 0xd9, + 0x4a, 0xde, 0x4f, 0x84, 0xdb, 0x6e, 0x85, 0xc7, 0xb4, 0x9f, 0x35, 0xbd, 0x8f, 0x8d, 0x08, 0x58, + 0x5f, 0xef, 0xc3, 0xba, 0xca, 0xc1, 0xfa, 0x8c, 0x21, 0x68, 0x26, 0x43, 0xf6, 0x77, 0x52, 0x45, + 0xf6, 0x2a, 0x38, 0xb1, 0x5e, 0x54, 0x1b, 0x95, 0x52, 0x65, 0xbd, 0xe8, 0x8e, 0xa3, 0xa1, 0x21, + 0x3b, 0xc2, 0x5c, 0xe7, 0x41, 0xef, 0x8b, 0xef, 0x7b, 0xb3, 0x70, 0x4d, 0xff, 0x8e, 0xb6, 0xb4, + 0xad, 0x19, 0x5b, 0x18, 0xe9, 0x22, 0x50, 0x2f, 0xc2, 0x44, 0x8b, 0x64, 0xa7, 0x38, 0x87, 0xb7, + 0x6e, 0x62, 0xfa, 0x72, 0x5a, 0x82, 0xea, 0xfd, 0x8a, 0xde, 0x1a, 0x56, 0x88, 0x06, 0xaf, 0x10, + 0xf7, 0xc4, 0x83, 0xb7, 0x8f, 0xef, 0x08, 0xdd, 0xf8, 0x84, 0xaf, 0x1b, 0xe7, 0x39, 0xdd, 0x28, + 0x1d, 0x8c, 0x7c, 0x32, 0x35, 0xf9, 0xe3, 0xc7, 0x43, 0x07, 0x10, 0xa9, 0x4d, 0x7a, 0xf4, 0xa8, + 0xd0, 0xb7, 0xbb, 0x7f, 0x85, 0x0c, 0xf9, 0x45, 0xdc, 0xc1, 0xa2, 0x2b, 0x91, 0x5f, 0x97, 0x44, + 0x37, 0x44, 0x28, 0x0c, 0x94, 0x76, 0xf4, 0xea, 0x88, 0xa3, 0xef, 0x60, 0xdb, 0xd1, 0x76, 0xba, + 0x44, 0xd4, 0xb2, 0x1a, 0x24, 0xa0, 0x9f, 0x94, 0x44, 0xb6, 0x4b, 0x62, 0x8a, 0xf9, 0x8f, 0xb1, + 0xa6, 0xf8, 0x29, 0x09, 0x26, 0xeb, 0xd8, 0xa9, 0x59, 0x6d, 0x6c, 0xa1, 0x7a, 0x80, 0xd1, 0x19, + 0x98, 0x26, 0xa0, 0xb8, 0xd3, 0x4c, 0x1f, 0xa7, 0x70, 0x92, 0x72, 0x03, 0xcc, 0xf9, 0xaf, 0xe4, + 0x77, 0xd6, 0x8d, 0xf7, 0xa4, 0xa2, 0x7f, 0xcc, 0x88, 0xee, 0xe2, 0xb2, 0x25, 0x43, 0xc6, 0x4d, + 0x44, 0x2b, 0x15, 0xdb, 0x91, 0x8d, 0x25, 0x95, 0xfe, 0x46, 0xd7, 0x9b, 0x25, 0x80, 0x0d, 0xc3, + 0xf6, 0xe4, 0xfa, 0xe4, 0x04, 0x72, 0x45, 0xff, 0x9c, 0x49, 0x36, 0x8b, 0x09, 0xca, 0x89, 0x90, + 0xd8, 0x6b, 0x12, 0xac, 0x2d, 0x44, 0x12, 0x4b, 0x5f, 0x66, 0x5f, 0x9a, 0x83, 0xfc, 0x79, 0xad, + 0xd3, 0xc1, 0x0e, 0xfa, 0xb2, 0x04, 0xf9, 0x92, 0x85, 0x35, 0x07, 0x87, 0x45, 0x87, 0x60, 0xd2, + 0x32, 0x4d, 0x67, 0x5d, 0x73, 0xb6, 0x99, 0xdc, 0xfc, 0x77, 0xe6, 0x30, 0xf0, 0xdb, 0xe1, 0xee, + 0xe3, 0x5e, 0x5e, 0x74, 0xdf, 0xcf, 0xd5, 0x96, 0x16, 0x34, 0x4f, 0x0b, 0x89, 0xe8, 0x3f, 0x10, + 0x4c, 0xee, 0x18, 0x78, 0xc7, 0x34, 0xf4, 0x96, 0x67, 0x73, 0x7a, 0xef, 0xe8, 0xfd, 0xbe, 0x4c, + 0x17, 0x38, 0x99, 0xce, 0x0b, 0x97, 0x92, 0x4c, 0xa0, 0xf5, 0x21, 0x7a, 0x8f, 0x6b, 0xe1, 0x6a, + 0xda, 0x19, 0x34, 0x1b, 0xb5, 0x66, 0x49, 0x2d, 0x17, 0x1b, 0xe5, 0xe6, 0x6a, 0xad, 0x54, 0x5c, + 0x6d, 0xaa, 0xe5, 0xf5, 0x5a, 0x01, 0xa3, 0xbf, 0x93, 0x5c, 0xe1, 0xb6, 0xcc, 0x3d, 0x6c, 0xa1, + 0x65, 0x21, 0x39, 0xc7, 0xc9, 0x84, 0x61, 0xf0, 0xf3, 0xc2, 0x4e, 0x1b, 0x4c, 0x3a, 0x8c, 0x83, + 0x08, 0xe5, 0xfd, 0x80, 0x50, 0x73, 0x8f, 0x25, 0xf5, 0x38, 0x90, 0xf4, 0xff, 0x96, 0x60, 0xa2, + 0x64, 0x1a, 0x7b, 0xd8, 0x72, 0xc2, 0xf3, 0x9d, 0xb0, 0x34, 0x33, 0xbc, 0x34, 0xdd, 0x41, 0x12, + 0x1b, 0x8e, 0x65, 0x76, 0xbd, 0x09, 0x8f, 0xf7, 0x8a, 0x5e, 0x9b, 0x54, 0xc2, 0xac, 0xe4, 0xe8, + 0x85, 0xcf, 0xfe, 0x05, 0x71, 0xec, 0xc9, 0x3d, 0x0d, 0xe0, 0x55, 0x49, 0x70, 0xe9, 0xcf, 0x40, + 0xfa, 0x5d, 0xca, 0x17, 0x64, 0x98, 0xa5, 0x8d, 0xaf, 0x8e, 0x89, 0x85, 0x86, 0x6a, 0xe1, 0x25, + 0xc7, 0x1e, 0xe1, 0xaf, 0x1c, 0xe1, 0xc4, 0x9f, 0xd7, 0xba, 0x5d, 0x7f, 0xf9, 0x79, 0xe5, 0x88, + 0xca, 0xde, 0xa9, 0x9a, 0x2f, 0xe4, 0x21, 0xab, 0xed, 0x3a, 0xdb, 0xe8, 0x3b, 0xc2, 0x93, 0x4f, + 0xae, 0x33, 0x60, 0xfc, 0x44, 0x40, 0x72, 0x1c, 0x72, 0x8e, 0x79, 0x11, 0x7b, 0x72, 0xa0, 0x2f, + 0x2e, 0x1c, 0x5a, 0xb7, 0xdb, 0x20, 0x1f, 0x18, 0x1c, 0xde, 0xbb, 0x6b, 0xeb, 0x68, 0xad, 0x96, + 0xb9, 0x6b, 0x38, 0x15, 0x6f, 0x09, 0x3a, 0x48, 0x40, 0x9f, 0xcb, 0x88, 0x4c, 0x66, 0x05, 0x18, + 0x4c, 0x06, 0xd9, 0x85, 0x21, 0x9a, 0xd2, 0x3c, 0xdc, 0x54, 0x5c, 0x5f, 0x6f, 0x36, 0x6a, 0x0f, + 0x94, 0xab, 0x81, 0xe1, 0xd9, 0xac, 0x54, 0x9b, 0x8d, 0x95, 0x72, 0xb3, 0xb4, 0xa1, 0x92, 0x75, + 0xc2, 0x62, 0xa9, 0x54, 0xdb, 0xa8, 0x36, 0x0a, 0x18, 0xbd, 0x41, 0x82, 0x99, 0x52, 0xc7, 0xb4, + 0x7d, 0x84, 0xaf, 0x0d, 0x10, 0xf6, 0xc5, 0x98, 0x09, 0x89, 0x11, 0xfd, 0x5b, 0x46, 0xd4, 0xe9, + 0xc0, 0x13, 0x48, 0x88, 0x7c, 0x44, 0x2f, 0xf5, 0x5a, 0x21, 0xa7, 0x83, 0xc1, 0xf4, 0xd2, 0x6f, + 0x12, 0x9f, 0xbd, 0x07, 0x26, 0x8a, 0x54, 0x31, 0xd0, 0x5f, 0x67, 0x20, 0x5f, 0x32, 0x8d, 0x4d, + 0x7d, 0xcb, 0x35, 0xe6, 0xb0, 0xa1, 0x5d, 0xe8, 0xe0, 0x45, 0xcd, 0xd1, 0xf6, 0x74, 0x7c, 0x89, + 0x54, 0x60, 0x52, 0xed, 0x49, 0x75, 0x99, 0x62, 0x29, 0xf8, 0xc2, 0xee, 0x16, 0x61, 0x6a, 0x52, + 0x0d, 0x27, 0x29, 0xcf, 0x80, 0x2b, 0xe9, 0xeb, 0xba, 0x85, 0x2d, 0xdc, 0xc1, 0x9a, 0x8d, 0xdd, + 0x69, 0x91, 0x81, 0x3b, 0x44, 0x69, 0x27, 0xd5, 0xa8, 0xcf, 0xca, 0x59, 0x98, 0xa1, 0x9f, 0x88, + 0x29, 0x62, 0x13, 0x35, 0x9e, 0x54, 0xb9, 0x34, 0xe5, 0x29, 0x90, 0xc3, 0x0f, 0x3b, 0x96, 0x76, + 0xaa, 0x4d, 0xf0, 0xba, 0x72, 0x9e, 0x7a, 0x1d, 0xce, 0x7b, 0x5e, 0x87, 0xf3, 0x75, 0xe2, 0x93, + 0xa8, 0xd2, 0x5c, 0xe8, 0xa3, 0x93, 0xbe, 0x21, 0xf1, 0x06, 0x39, 0x50, 0x0c, 0x05, 0xb2, 0x86, + 0xb6, 0x83, 0x99, 0x5e, 0x90, 0x67, 0xe5, 0x26, 0x38, 0xaa, 0xed, 0x69, 0x8e, 0x66, 0xad, 0x9a, + 0x2d, 0xad, 0x43, 0x06, 0x3f, 0xaf, 0xe5, 0xf7, 0x7e, 0x20, 0x3b, 0x42, 0x8e, 0x69, 0x61, 0x92, + 0xcb, 0xdb, 0x11, 0xf2, 0x12, 0x5c, 0xea, 0x7a, 0xcb, 0x34, 0x08, 0xff, 0xb2, 0x4a, 0x9e, 0x5d, + 0xa9, 0xb4, 0x75, 0xdb, 0xad, 0x08, 0xa1, 0x52, 0xa5, 0x5b, 0x1b, 0xf5, 0xcb, 0x46, 0x8b, 0xec, + 0x06, 0x4d, 0xaa, 0x51, 0x9f, 0x95, 0x05, 0x98, 0x66, 0x1b, 0x21, 0x6b, 0xae, 0x5e, 0xe5, 0x89, + 0x5e, 0x9d, 0xe1, 0x7d, 0xba, 0x28, 0x9e, 0xf3, 0xd5, 0x20, 0x9f, 0x1a, 0xfe, 0x49, 0xb9, 0x0f, + 0xae, 0x66, 0xaf, 0xa5, 0x5d, 0xdb, 0x31, 0x77, 0x28, 0xe8, 0x4b, 0x7a, 0x87, 0xd6, 0x60, 0x82, + 0xd4, 0x20, 0x2e, 0x8b, 0x72, 0x3b, 0x1c, 0xef, 0x5a, 0x78, 0x13, 0x5b, 0x0f, 0x6a, 0x3b, 0xbb, + 0x0f, 0x37, 0x2c, 0xcd, 0xb0, 0xbb, 0xa6, 0xe5, 0x9c, 0x9a, 0x24, 0xcc, 0xf7, 0xfd, 0xa6, 0xdc, + 0x0c, 0xc7, 0x1e, 0xb2, 0x4d, 0xa3, 0xd8, 0xd5, 0x57, 0x75, 0xdb, 0xc1, 0x46, 0xb1, 0xdd, 0xb6, + 0x4e, 0x4d, 0x91, 0xb2, 0xf6, 0x7f, 0x60, 0xdd, 0xea, 0x24, 0xe4, 0xa9, 0xb0, 0xd1, 0x8b, 0x72, + 0xc2, 0xce, 0x9f, 0xac, 0xfa, 0xb1, 0xc6, 0xdc, 0xad, 0x30, 0xc1, 0xfa, 0x43, 0x02, 0xeb, 0xf4, + 0xed, 0x27, 0x7b, 0x56, 0x21, 0x18, 0x15, 0xd5, 0xcb, 0xa6, 0x3c, 0x15, 0xf2, 0x2d, 0x22, 0x04, + 0x82, 0xf0, 0xf4, 0xed, 0x57, 0xf7, 0x2f, 0x94, 0x64, 0x51, 0x59, 0x56, 0xf4, 0x17, 0xb2, 0x90, + 0xbf, 0x68, 0x1c, 0xc7, 0xc9, 0xfa, 0x80, 0xaf, 0x4a, 0x43, 0x74, 0xb2, 0x37, 0xc3, 0x8d, 0xac, + 0x07, 0x65, 0xd6, 0xca, 0x62, 0x73, 0x61, 0xc3, 0x9b, 0x3a, 0xba, 0x36, 0x4c, 0xbd, 0x51, 0x54, + 0xdd, 0x79, 0xff, 0xa2, 0x3b, 0xe5, 0xbc, 0x09, 0x6e, 0x18, 0x90, 0xbb, 0xdc, 0x68, 0x56, 0x8b, + 0x6b, 0xe5, 0xc2, 0x26, 0x6f, 0x09, 0xd5, 0x1b, 0xb5, 0xf5, 0xa6, 0xba, 0x51, 0xad, 0x56, 0xaa, + 0xcb, 0x94, 0x98, 0x6b, 0x40, 0x9e, 0x0c, 0x32, 0x9c, 0x57, 0x2b, 0x8d, 0x72, 0xb3, 0x54, 0xab, + 0x2e, 0x55, 0x96, 0x0b, 0xfa, 0x20, 0x33, 0xea, 0x21, 0xe5, 0x0c, 0x5c, 0xc3, 0x71, 0x52, 0xa9, + 0x55, 0xdd, 0x79, 0x70, 0xa9, 0x58, 0x2d, 0x95, 0xdd, 0x49, 0xef, 0x45, 0x05, 0xc1, 0x09, 0x4a, + 0xae, 0xb9, 0x54, 0x59, 0x0d, 0x6f, 0x5d, 0x7d, 0x24, 0xa3, 0x9c, 0x82, 0x2b, 0xc2, 0xdf, 0x2a, + 0xd5, 0x73, 0xc5, 0xd5, 0xca, 0x62, 0xe1, 0x8f, 0x32, 0xca, 0xf5, 0x70, 0x2d, 0xf7, 0x17, 0xdd, + 0x85, 0x6a, 0x56, 0x16, 0x9b, 0x6b, 0x95, 0xfa, 0x5a, 0xb1, 0x51, 0x5a, 0x29, 0x7c, 0x94, 0xcc, + 0x2e, 0x7c, 0x73, 0x39, 0xe4, 0xc4, 0xf9, 0x92, 0xb0, 0x05, 0x50, 0xe4, 0x15, 0xf5, 0xc9, 0x7d, + 0x61, 0x8f, 0xb7, 0x78, 0x3f, 0xe4, 0x8f, 0x25, 0x8b, 0x9c, 0x0a, 0xdd, 0x9a, 0x80, 0x56, 0x32, + 0x1d, 0x6a, 0x0c, 0xa1, 0x42, 0x67, 0xe0, 0x9a, 0x6a, 0x99, 0x22, 0xa5, 0x96, 0x4b, 0xb5, 0x73, + 0x65, 0xb5, 0x79, 0xbe, 0xb8, 0xba, 0x5a, 0x6e, 0x34, 0x97, 0x2a, 0x6a, 0xbd, 0x51, 0xd8, 0x44, + 0xff, 0x2c, 0xf9, 0x6b, 0x3f, 0x21, 0x69, 0xfd, 0xb5, 0x94, 0xb4, 0x59, 0xc7, 0xae, 0xf1, 0xfc, + 0x00, 0xe4, 0x6d, 0x47, 0x73, 0x76, 0x6d, 0xd6, 0xaa, 0x9f, 0xd0, 0xbf, 0x55, 0xcf, 0xd7, 0x49, + 0x26, 0x95, 0x65, 0x46, 0x7f, 0x91, 0x49, 0xd2, 0x4c, 0x47, 0xb0, 0xfc, 0xa3, 0x0f, 0x21, 0xe2, + 0xd3, 0x80, 0x3c, 0x6d, 0xaf, 0xd4, 0x9b, 0xc5, 0x55, 0xb5, 0x5c, 0x5c, 0x7c, 0xd0, 0x5f, 0xf4, + 0xc1, 0xca, 0x09, 0x38, 0xb6, 0x51, 0x2d, 0x2e, 0xac, 0x96, 0x49, 0x73, 0xa9, 0x55, 0xab, 0xe5, + 0x92, 0x2b, 0xf7, 0x9f, 0x24, 0x5b, 0x2c, 0xae, 0xbd, 0x4d, 0xf8, 0x76, 0x6d, 0xa2, 0x90, 0xfc, + 0xbf, 0x22, 0xec, 0x89, 0x14, 0x68, 0x58, 0x98, 0xd6, 0x68, 0x71, 0xf8, 0x9c, 0x90, 0xf3, 0x91, + 0x10, 0x27, 0xc9, 0xf0, 0xf8, 0xcf, 0x43, 0xe0, 0x71, 0x02, 0x8e, 0x85, 0xf1, 0x20, 0x4e, 0x48, + 0xd1, 0x30, 0xbc, 0x68, 0x0a, 0xf2, 0x75, 0xdc, 0xc1, 0x2d, 0x07, 0x3d, 0x26, 0x05, 0xa6, 0xc7, + 0x1c, 0x48, 0xbe, 0xd3, 0x8b, 0xa4, 0xb7, 0xb9, 0xc9, 0xb6, 0xd4, 0x33, 0xd9, 0x8e, 0x31, 0x1a, + 0xe4, 0x44, 0x46, 0x43, 0x36, 0x05, 0xa3, 0x21, 0x37, 0xbc, 0xd1, 0x90, 0x4f, 0x6a, 0x34, 0x4c, + 0xc4, 0x1a, 0x0d, 0xe8, 0x35, 0xf9, 0xa4, 0x7d, 0x0a, 0x05, 0xe6, 0x70, 0x4d, 0x85, 0xff, 0x95, + 0x4d, 0xd2, 0x07, 0xf5, 0xe5, 0x38, 0x99, 0xce, 0x7f, 0x47, 0x4e, 0x61, 0x69, 0x43, 0xb9, 0x0e, + 0xae, 0x0d, 0xde, 0x9b, 0xe5, 0x67, 0x55, 0xea, 0x8d, 0x3a, 0xb1, 0x0f, 0x4a, 0x35, 0x55, 0xdd, + 0x58, 0xa7, 0xeb, 0xd3, 0x27, 0x41, 0x09, 0xa8, 0xa8, 0x1b, 0x55, 0x6a, 0x0d, 0x6c, 0xf1, 0xd4, + 0x97, 0x2a, 0xd5, 0xc5, 0xa6, 0xdf, 0xc2, 0xaa, 0x4b, 0xb5, 0xc2, 0xb6, 0x3b, 0x1d, 0x0c, 0x51, + 0x77, 0x87, 0x73, 0x56, 0x42, 0xb1, 0xba, 0xd8, 0x5c, 0xab, 0x96, 0xd7, 0x6a, 0xd5, 0x4a, 0x89, + 0xa4, 0xd7, 0xcb, 0x8d, 0x82, 0xee, 0x0e, 0x4b, 0x3d, 0xf6, 0x47, 0xbd, 0x5c, 0x54, 0x4b, 0x2b, + 0x65, 0x95, 0x16, 0xf9, 0x90, 0x72, 0x03, 0x9c, 0x2d, 0x56, 0x6b, 0x0d, 0x37, 0xa5, 0x58, 0x7d, + 0xb0, 0xf1, 0xe0, 0x7a, 0xb9, 0xb9, 0xae, 0xd6, 0x4a, 0xe5, 0x7a, 0xdd, 0x6d, 0xd5, 0xcc, 0x5a, + 0x29, 0x74, 0x94, 0x7b, 0xe0, 0xce, 0x10, 0x6b, 0xe5, 0x06, 0xd9, 0x0c, 0x5d, 0xab, 0x11, 0x7f, + 0x98, 0xc5, 0x72, 0x73, 0xa5, 0x58, 0x6f, 0x56, 0xaa, 0xa5, 0xda, 0xda, 0x7a, 0xb1, 0x51, 0x71, + 0x1b, 0xff, 0xba, 0x5a, 0x6b, 0xd4, 0x9a, 0xe7, 0xca, 0x6a, 0xbd, 0x52, 0xab, 0x16, 0x0c, 0xb7, + 0xca, 0xa1, 0xde, 0xc2, 0xeb, 0xb5, 0x4d, 0xe5, 0x1a, 0x38, 0xe5, 0xa5, 0xaf, 0xd6, 0x5c, 0x41, + 0x87, 0xec, 0x97, 0x6e, 0xaa, 0xf6, 0xcb, 0xbf, 0x4a, 0x90, 0xad, 0x3b, 0x66, 0x17, 0x7d, 0x7f, + 0xd0, 0x1d, 0x9d, 0x06, 0xb0, 0xc8, 0xde, 0xa6, 0x3b, 0xc3, 0x63, 0x73, 0xbe, 0x50, 0x0a, 0xfa, + 0x43, 0xe1, 0x0d, 0x99, 0xa0, 0x87, 0x37, 0xbb, 0x11, 0x96, 0xcd, 0xb7, 0xc4, 0x4e, 0xa8, 0x44, + 0x13, 0x4a, 0xa6, 0xef, 0x3f, 0x33, 0xcc, 0x96, 0x0b, 0x82, 0x93, 0x21, 0xd8, 0x5c, 0xf9, 0x7b, + 0x2a, 0x81, 0x95, 0x2b, 0xe1, 0x8a, 0x1e, 0xe5, 0x22, 0x3a, 0xb5, 0xa9, 0x7c, 0x1f, 0x3c, 0x21, + 0xa4, 0xde, 0xe5, 0xb5, 0xda, 0xb9, 0xb2, 0xaf, 0xc8, 0x8b, 0xc5, 0x46, 0xb1, 0xb0, 0x85, 0x3e, + 0x25, 0x43, 0x76, 0xcd, 0xdc, 0xeb, 0xdd, 0x07, 0x33, 0xf0, 0xa5, 0xd0, 0x3a, 0xab, 0xf7, 0xca, + 0x7b, 0xe4, 0x0b, 0x89, 0x7d, 0x2d, 0x7a, 0xcf, 0xfb, 0x73, 0x52, 0x12, 0xb1, 0xaf, 0x1d, 0x74, + 0xa3, 0xfb, 0xef, 0x87, 0x11, 0x7b, 0x84, 0x68, 0xb1, 0x72, 0x16, 0x4e, 0x07, 0x1f, 0x2a, 0x8b, + 0xe5, 0x6a, 0xa3, 0xb2, 0xf4, 0x60, 0x20, 0xdc, 0x8a, 0x2a, 0x24, 0xfe, 0x41, 0xdd, 0x58, 0xfc, + 0xbc, 0xe4, 0x14, 0x1c, 0x0f, 0xbe, 0x2d, 0x97, 0x1b, 0xde, 0x97, 0x87, 0xd0, 0x23, 0x39, 0x98, + 0xa1, 0xdd, 0xfa, 0x46, 0xb7, 0xad, 0x39, 0x18, 0x3d, 0x35, 0x40, 0xf7, 0x46, 0x38, 0x5a, 0x59, + 0x5f, 0xaa, 0xd7, 0x1d, 0xd3, 0xd2, 0xb6, 0x30, 0x19, 0xc7, 0xa8, 0xb4, 0x7a, 0x93, 0xd1, 0xdb, + 0x85, 0xd7, 0x10, 0xf9, 0xa1, 0x84, 0x96, 0x19, 0x81, 0xfa, 0x17, 0x84, 0xd6, 0xfc, 0x04, 0x08, + 0x26, 0x43, 0xff, 0xa1, 0x11, 0xb7, 0xb9, 0x68, 0x5c, 0x36, 0xcf, 0x3e, 0x4f, 0x82, 0xa9, 0x86, + 0xbe, 0x83, 0x9f, 0x6d, 0x1a, 0xd8, 0x56, 0x26, 0x40, 0x5e, 0x5e, 0x6b, 0x14, 0x8e, 0xb8, 0x0f, + 0xae, 0x09, 0x96, 0x21, 0x0f, 0x65, 0xb7, 0x00, 0xf7, 0xa1, 0xd8, 0x28, 0xc8, 0xee, 0xc3, 0x5a, + 0xb9, 0x51, 0xc8, 0xba, 0x0f, 0xd5, 0x72, 0xa3, 0x90, 0x73, 0x1f, 0xd6, 0x57, 0x1b, 0x85, 0xbc, + 0xfb, 0x50, 0xa9, 0x37, 0x0a, 0x13, 0xee, 0xc3, 0x42, 0xbd, 0x51, 0x98, 0x74, 0x1f, 0xce, 0xd5, + 0x1b, 0x85, 0x29, 0xf7, 0xa1, 0xd4, 0x68, 0x14, 0xc0, 0x7d, 0xb8, 0xbf, 0xde, 0x28, 0x4c, 0xbb, + 0x0f, 0xc5, 0x52, 0xa3, 0x30, 0x43, 0x1e, 0xca, 0x8d, 0xc2, 0xac, 0xfb, 0x50, 0xaf, 0x37, 0x0a, + 0x73, 0x84, 0x72, 0xbd, 0x51, 0x38, 0x4a, 0xca, 0xaa, 0x34, 0x0a, 0x05, 0xf7, 0x61, 0xa5, 0xde, + 0x28, 0x1c, 0x23, 0x99, 0xeb, 0x8d, 0x82, 0x42, 0x0a, 0xad, 0x37, 0x0a, 0x57, 0x90, 0x3c, 0xf5, + 0x46, 0xe1, 0x38, 0x29, 0xa2, 0xde, 0x28, 0x9c, 0x20, 0x6c, 0x94, 0x1b, 0x85, 0x93, 0x24, 0x8f, + 0xda, 0x28, 0x5c, 0x49, 0x3e, 0x55, 0x1b, 0x85, 0x53, 0x84, 0xb1, 0x72, 0xa3, 0x70, 0x15, 0x79, + 0x50, 0x1b, 0x05, 0x44, 0x3e, 0x15, 0x1b, 0x85, 0xab, 0xd1, 0x13, 0x60, 0x6a, 0x19, 0x3b, 0x14, + 0x44, 0x54, 0x00, 0x79, 0x19, 0x3b, 0x61, 0xa3, 0xff, 0x4b, 0x32, 0x5c, 0xc9, 0x26, 0x8a, 0x4b, + 0x96, 0xb9, 0xb3, 0x8a, 0xb7, 0xb4, 0xd6, 0xe5, 0xf2, 0xc3, 0xae, 0xc1, 0x15, 0xde, 0xf3, 0x55, + 0x20, 0xdb, 0x0d, 0x3a, 0x23, 0xf2, 0x1c, 0x6b, 0x9f, 0x7a, 0x0b, 0x5d, 0x72, 0xb0, 0xd0, 0xc5, + 0x2c, 0xb2, 0x7f, 0x0a, 0x6b, 0x34, 0xb7, 0x36, 0x9d, 0xe9, 0x59, 0x9b, 0x76, 0x9b, 0x49, 0x17, + 0x5b, 0xb6, 0x69, 0x68, 0x9d, 0x3a, 0x73, 0x0a, 0xa0, 0x2b, 0x6a, 0xbd, 0xc9, 0xca, 0x0f, 0x79, + 0x2d, 0x83, 0x5a, 0x65, 0xcf, 0x8c, 0x9b, 0x0f, 0xf7, 0x56, 0x33, 0xa2, 0x91, 0x7c, 0xd4, 0x6f, + 0x24, 0x0d, 0xae, 0x91, 0xdc, 0x77, 0x00, 0xda, 0xc9, 0xda, 0x4b, 0x65, 0xb8, 0x89, 0x48, 0xe0, + 0x32, 0xeb, 0x2d, 0x85, 0xcb, 0xe8, 0x53, 0x12, 0x9c, 0x2c, 0x1b, 0xfd, 0xe6, 0x03, 0x61, 0x5d, + 0x78, 0x43, 0x18, 0x9a, 0x75, 0x5e, 0xa4, 0x77, 0xf6, 0xad, 0x76, 0x7f, 0x9a, 0x11, 0x12, 0xfd, + 0xb8, 0x2f, 0xd1, 0x3a, 0x27, 0xd1, 0x7b, 0x87, 0x27, 0x9d, 0x4c, 0xa0, 0xd5, 0x91, 0x76, 0x40, + 0x59, 0xf4, 0x65, 0x09, 0x8e, 0x51, 0xbf, 0x9e, 0xfb, 0xe9, 0xf4, 0x83, 0x74, 0xd9, 0xbc, 0x09, + 0xd5, 0x09, 0xa6, 0x2a, 0x54, 0xbf, 0x43, 0x29, 0xe8, 0xd5, 0x61, 0x81, 0x3f, 0xc0, 0x0b, 0x3c, + 0xa2, 0x33, 0xee, 0x2d, 0x2e, 0x42, 0xd6, 0x7f, 0xe4, 0xcb, 0xba, 0xca, 0xc9, 0xfa, 0xce, 0xa1, + 0xa8, 0x1e, 0xae, 0x98, 0xbf, 0x9a, 0x85, 0x27, 0x50, 0x0e, 0x99, 0x22, 0xd0, 0xce, 0xac, 0x68, + 0xb4, 0x55, 0x6c, 0x3b, 0x9a, 0xe5, 0x70, 0x47, 0xda, 0x7b, 0xe6, 0xb7, 0x99, 0x14, 0xe6, 0xb7, + 0xd2, 0xc0, 0xf9, 0x2d, 0x7a, 0x5b, 0xd8, 0x4a, 0x3b, 0xcf, 0x23, 0x5b, 0x8c, 0xc1, 0x20, 0xa2, + 0x86, 0x51, 0x2d, 0xca, 0x37, 0xdf, 0x7e, 0x98, 0x43, 0x79, 0xe9, 0xc0, 0x25, 0x24, 0x43, 0xfc, + 0x0f, 0x47, 0x6b, 0x4e, 0x67, 0xc3, 0xdf, 0x78, 0xdb, 0xaf, 0xd0, 0x4e, 0x75, 0x1e, 0xf4, 0xe2, + 0x49, 0x98, 0x22, 0x5d, 0xce, 0xaa, 0x6e, 0x5c, 0x74, 0xc7, 0xc6, 0x99, 0x2a, 0xbe, 0x54, 0xda, + 0xd6, 0x3a, 0x1d, 0x6c, 0x6c, 0x61, 0xf4, 0x10, 0x67, 0xa0, 0x6b, 0xdd, 0x6e, 0x35, 0xd8, 0x2a, + 0xf2, 0x5e, 0x95, 0x7b, 0x21, 0x67, 0xb7, 0xcc, 0x2e, 0x26, 0x82, 0x9a, 0x0b, 0x39, 0x97, 0xf0, + 0xcb, 0x5d, 0xc5, 0x5d, 0x67, 0x7b, 0x9e, 0x94, 0x55, 0xec, 0xea, 0x75, 0xf7, 0x07, 0x95, 0xfe, + 0xc7, 0xc6, 0xc9, 0xaf, 0xf4, 0xed, 0x8c, 0x33, 0x31, 0x9d, 0xb1, 0xcf, 0xf8, 0x7c, 0x98, 0xe9, + 0x88, 0x95, 0x8c, 0x33, 0x30, 0xdd, 0xf2, 0xb2, 0xf8, 0x67, 0x67, 0xc2, 0x49, 0xe8, 0x6f, 0x13, + 0x75, 0xd7, 0x42, 0x85, 0x27, 0xd3, 0x2a, 0x3c, 0x62, 0x7b, 0xf1, 0x04, 0x1c, 0x6b, 0xd4, 0x6a, + 0xcd, 0xb5, 0x62, 0xf5, 0xc1, 0xe0, 0xcc, 0xfa, 0x26, 0x7a, 0x59, 0x16, 0xe6, 0xea, 0x66, 0x67, + 0x0f, 0x07, 0x38, 0x57, 0x38, 0xa7, 0xac, 0xb0, 0x9c, 0x32, 0xfb, 0xe4, 0xa4, 0x9c, 0x84, 0xbc, + 0x66, 0xd8, 0x97, 0xb0, 0x67, 0xc3, 0xb3, 0x37, 0x06, 0xe3, 0x7b, 0xc3, 0x1d, 0x81, 0xca, 0xc3, + 0x78, 0xd7, 0x00, 0x49, 0xf2, 0x5c, 0x45, 0x00, 0x79, 0x16, 0x66, 0x6c, 0xba, 0x61, 0xdc, 0x08, + 0xf9, 0x05, 0x70, 0x69, 0x84, 0x45, 0xea, 0xb1, 0x20, 0x33, 0x16, 0xc9, 0x1b, 0x7a, 0x95, 0xdf, + 0x7f, 0x6c, 0x70, 0x10, 0x17, 0x0f, 0xc2, 0x58, 0x32, 0x90, 0x5f, 0x31, 0xea, 0x99, 0xf8, 0x29, + 0x38, 0xce, 0x9a, 0x7d, 0xb3, 0xb4, 0x52, 0x5c, 0x5d, 0x2d, 0x57, 0x97, 0xcb, 0xcd, 0xca, 0x22, + 0xdd, 0x80, 0x0a, 0x52, 0x8a, 0x8d, 0x46, 0x79, 0x6d, 0xbd, 0x51, 0x6f, 0x96, 0x9f, 0x55, 0x2a, + 0x97, 0x17, 0x89, 0x5b, 0x24, 0x39, 0xd7, 0xe4, 0x39, 0xb0, 0x16, 0xab, 0xf5, 0xf3, 0x65, 0xb5, + 0xb0, 0x7d, 0xb6, 0x08, 0xd3, 0xa1, 0x81, 0xc2, 0xe5, 0x6e, 0x11, 0x6f, 0x6a, 0xbb, 0x1d, 0x66, + 0x53, 0x17, 0x8e, 0xb8, 0xdc, 0x11, 0xd9, 0xd4, 0x8c, 0xce, 0xe5, 0x42, 0x46, 0x29, 0xc0, 0x4c, + 0x78, 0x4c, 0x28, 0x48, 0xe8, 0xcd, 0xd7, 0xc0, 0xd4, 0x79, 0xd3, 0xba, 0x48, 0x7c, 0xf9, 0xd0, + 0xbb, 0x68, 0x6c, 0x1b, 0xef, 0x94, 0x70, 0xc8, 0x00, 0x7b, 0x85, 0xb8, 0xc7, 0x88, 0x47, 0x6d, + 0x7e, 0xe0, 0x49, 0xe0, 0x33, 0x30, 0x7d, 0xc9, 0xcb, 0x1d, 0xb4, 0xf4, 0x50, 0x12, 0xfa, 0xef, + 0x62, 0x3e, 0x20, 0x83, 0x8b, 0x4c, 0xdf, 0x47, 0xe1, 0x4d, 0x12, 0xe4, 0x97, 0xb1, 0x53, 0xec, + 0x74, 0xc2, 0x72, 0x7b, 0xa9, 0xf0, 0xe9, 0x2e, 0xae, 0x12, 0xc5, 0x4e, 0x27, 0xba, 0x51, 0x85, + 0x04, 0xe4, 0x9d, 0x42, 0xe0, 0xd2, 0x04, 0x7d, 0x27, 0x07, 0x14, 0x98, 0xbe, 0xc4, 0xde, 0x2f, + 0xfb, 0x7e, 0x0e, 0x8f, 0x86, 0xcc, 0xa4, 0xdb, 0x82, 0xb8, 0x46, 0x99, 0x78, 0x7f, 0x09, 0x2f, + 0x9f, 0xf2, 0x00, 0x4c, 0xec, 0xda, 0xb8, 0xa4, 0xd9, 0xde, 0xd0, 0xc6, 0xd7, 0xb4, 0x76, 0xe1, + 0x21, 0xdc, 0x72, 0xe6, 0x2b, 0x3b, 0xee, 0xc4, 0x67, 0x83, 0x66, 0xf4, 0x43, 0x05, 0xb1, 0x77, + 0xd5, 0xa3, 0xe0, 0x4e, 0x1e, 0x2f, 0xe9, 0xce, 0x76, 0x69, 0x5b, 0x73, 0xd8, 0x8e, 0x85, 0xff, + 0x8e, 0x5e, 0x34, 0x04, 0x9c, 0xb1, 0x3b, 0xfc, 0x91, 0x87, 0x44, 0x13, 0x83, 0x38, 0x82, 0x6d, + 0xf9, 0x61, 0x40, 0xfc, 0x07, 0x09, 0xb2, 0xb5, 0x2e, 0x36, 0x84, 0x4f, 0x44, 0xf9, 0xb2, 0x95, + 0x7a, 0x64, 0xfb, 0x2a, 0x71, 0x0f, 0x41, 0xbf, 0xd2, 0x6e, 0xc9, 0x11, 0x92, 0xbd, 0x05, 0xb2, + 0xba, 0xb1, 0x69, 0x32, 0xcb, 0xf6, 0xea, 0x08, 0x5b, 0xa7, 0x62, 0x6c, 0x9a, 0x2a, 0xc9, 0x28, + 0xea, 0x1c, 0x18, 0x57, 0x76, 0xfa, 0xe2, 0xfe, 0xda, 0x24, 0xe4, 0xa9, 0x3a, 0xa3, 0x97, 0xc8, + 0x20, 0x17, 0xdb, 0xed, 0x08, 0xc1, 0x4b, 0xfb, 0x04, 0x6f, 0x92, 0xdf, 0x7c, 0x4c, 0xfc, 0x77, + 0x3e, 0xa0, 0x8d, 0x60, 0xdf, 0xce, 0x9a, 0x54, 0xb1, 0xdd, 0x8e, 0xf6, 0x43, 0xf6, 0x0b, 0x94, + 0xf8, 0x02, 0xc3, 0x2d, 0x5c, 0x16, 0x6b, 0xe1, 0x89, 0x07, 0x82, 0x48, 0xfe, 0xd2, 0x87, 0xe8, + 0x9f, 0x24, 0x98, 0x58, 0xd5, 0x6d, 0xc7, 0xc5, 0xa6, 0x28, 0x82, 0xcd, 0x35, 0x30, 0xe5, 0x89, + 0xc6, 0xed, 0xf2, 0xdc, 0xfe, 0x3c, 0x48, 0xe0, 0x67, 0xe2, 0xf7, 0xf3, 0xe8, 0x3c, 0x2d, 0xbe, + 0xf6, 0x8c, 0x8b, 0xe8, 0x93, 0x26, 0x41, 0xb1, 0x52, 0x6f, 0xb1, 0xbf, 0xed, 0x0b, 0x7c, 0x8d, + 0x13, 0xf8, 0x1d, 0xc3, 0x14, 0x99, 0xbe, 0xd0, 0x3f, 0x2d, 0x01, 0xb8, 0x65, 0xb3, 0xe3, 0x7c, + 0x4f, 0xe2, 0x0e, 0xe9, 0xc7, 0x48, 0xf7, 0x65, 0x61, 0xe9, 0xae, 0xf1, 0xd2, 0xfd, 0xc1, 0xc1, + 0x55, 0x8d, 0x3b, 0xb6, 0xa7, 0x14, 0x40, 0xd6, 0x7d, 0xd1, 0xba, 0x8f, 0xe8, 0x4d, 0xbe, 0x50, + 0xd7, 0x39, 0xa1, 0xde, 0x35, 0x64, 0x49, 0xe9, 0xcb, 0xf5, 0x2f, 0x25, 0x98, 0xa8, 0x63, 0xc7, + 0xed, 0x26, 0xd1, 0x39, 0x91, 0x1e, 0x3e, 0xd4, 0xb6, 0x25, 0xc1, 0xb6, 0xfd, 0xcd, 0x8c, 0x68, + 0xb0, 0x9f, 0x40, 0x32, 0x8c, 0xa7, 0x88, 0xd5, 0x87, 0x47, 0x85, 0x82, 0xfd, 0x0c, 0xa2, 0x96, + 0xbe, 0x74, 0xdf, 0x20, 0xf9, 0xee, 0x16, 0xfc, 0x69, 0x9b, 0xb0, 0x59, 0x9c, 0xd9, 0x6f, 0x16, + 0x8b, 0x9f, 0xb6, 0x09, 0xd7, 0x31, 0xda, 0x7b, 0x20, 0xb1, 0xb1, 0x31, 0x82, 0x8d, 0xfd, 0x61, + 0xe4, 0xf5, 0x5c, 0x19, 0xf2, 0x6c, 0x07, 0xe0, 0xde, 0xf8, 0x1d, 0x80, 0xc1, 0x53, 0x8b, 0x77, + 0x0e, 0x61, 0xca, 0xc5, 0x2d, 0xcb, 0xfb, 0x6c, 0x48, 0x21, 0x36, 0x6e, 0x86, 0x1c, 0x89, 0x46, + 0xca, 0xc6, 0xb9, 0xc0, 0x27, 0xc3, 0x23, 0x51, 0x76, 0xbf, 0xaa, 0x34, 0x53, 0x62, 0x14, 0x46, + 0xb0, 0x92, 0x3f, 0x0c, 0x0a, 0x6f, 0x57, 0x00, 0xd6, 0x77, 0x2f, 0x74, 0x74, 0x7b, 0x5b, 0x37, + 0xb6, 0xd0, 0xbf, 0x67, 0x60, 0x86, 0xbd, 0xd2, 0xa0, 0x9a, 0xb1, 0xe6, 0x5f, 0xa4, 0x51, 0x50, + 0x00, 0x79, 0xd7, 0xd2, 0xd9, 0x32, 0x80, 0xfb, 0xa8, 0xdc, 0xed, 0xbb, 0x67, 0x65, 0x7b, 0xc2, + 0x29, 0xb8, 0x62, 0x08, 0x38, 0x98, 0x0f, 0x95, 0x1e, 0xb8, 0x69, 0x85, 0x23, 0xa7, 0xe6, 0xf8, + 0xc8, 0xa9, 0xdc, 0x19, 0xcb, 0x7c, 0xcf, 0x19, 0x4b, 0x17, 0x47, 0x5b, 0x7f, 0x36, 0x26, 0xfe, + 0x3b, 0xb2, 0x4a, 0x9e, 0xdd, 0x3f, 0x1e, 0x32, 0x75, 0x83, 0x6c, 0xea, 0x30, 0xf7, 0xe1, 0x20, + 0x01, 0xbd, 0x2f, 0x98, 0xc8, 0x98, 0x82, 0x56, 0x70, 0x02, 0x31, 0x70, 0x65, 0x67, 0x7b, 0xcb, + 0xfe, 0xa0, 0x70, 0xa4, 0xb4, 0x90, 0xc0, 0x62, 0xa7, 0x24, 0x8c, 0x03, 0xc9, 0xe7, 0x20, 0xb4, + 0x2b, 0x1b, 0xd7, 0x9d, 0x0e, 0xa2, 0x9f, 0x4c, 0x31, 0x77, 0x86, 0x58, 0x7c, 0x51, 0x60, 0xce, + 0x3b, 0x79, 0x5a, 0x5b, 0xb8, 0xbf, 0x5c, 0x6a, 0x14, 0xf0, 0xfe, 0xd3, 0xa8, 0xe4, 0xdc, 0x29, + 0x3d, 0x63, 0x1a, 0x2c, 0xb0, 0xa0, 0xff, 0x29, 0x41, 0x9e, 0xd9, 0x0e, 0xf7, 0x1e, 0x10, 0x42, + 0xf4, 0xf2, 0x61, 0x20, 0x89, 0x0d, 0x00, 0xf0, 0xb1, 0xa4, 0x00, 0x8c, 0xc0, 0x5a, 0x78, 0x30, + 0x35, 0x00, 0xd0, 0xbf, 0x48, 0x90, 0x75, 0x6d, 0x1a, 0xb1, 0xe3, 0xd5, 0x1f, 0x15, 0x76, 0x55, + 0x0e, 0x09, 0xc0, 0x25, 0x1f, 0xa1, 0xdf, 0x0b, 0x30, 0xd5, 0xa5, 0x19, 0xfd, 0xc3, 0xfd, 0xd7, + 0x0b, 0xf4, 0x2c, 0x58, 0x0d, 0x7e, 0x43, 0xef, 0x10, 0x72, 0x77, 0x8e, 0xe7, 0x27, 0x19, 0x1c, + 0xe5, 0x51, 0x9c, 0xc4, 0xde, 0x44, 0xdf, 0x96, 0x00, 0x54, 0x6c, 0x9b, 0x9d, 0x3d, 0xbc, 0x61, + 0xe9, 0xe8, 0xea, 0x00, 0x00, 0xd6, 0xec, 0x33, 0x41, 0xb3, 0xff, 0x44, 0x58, 0xf0, 0xcb, 0xbc, + 0xe0, 0x6f, 0x8b, 0xd6, 0x3c, 0x8f, 0x78, 0x84, 0xf8, 0xef, 0x81, 0x09, 0x26, 0x47, 0x66, 0x20, + 0x8a, 0x09, 0xdf, 0xfb, 0x09, 0xbd, 0xdb, 0x17, 0xfd, 0xfd, 0x9c, 0xe8, 0x9f, 0x9e, 0x98, 0xa3, + 0x64, 0x00, 0x94, 0x86, 0x00, 0xe0, 0x28, 0x4c, 0x7b, 0x00, 0x6c, 0xa8, 0x95, 0x02, 0x46, 0x6f, + 0x95, 0x89, 0xcf, 0x03, 0x1d, 0xa9, 0x0e, 0xde, 0xd3, 0x7c, 0x59, 0x78, 0xe6, 0x1e, 0x92, 0x87, + 0x5f, 0x7e, 0x4a, 0x00, 0xfd, 0xa9, 0xd0, 0x54, 0x5d, 0x80, 0xa1, 0xc7, 0x4b, 0x7f, 0x75, 0xb6, + 0x0c, 0xb3, 0x9c, 0x89, 0xa1, 0x9c, 0x82, 0xe3, 0x5c, 0x02, 0x1d, 0xef, 0xda, 0x85, 0x23, 0x0a, + 0x82, 0x93, 0xdc, 0x17, 0xf6, 0x82, 0xdb, 0x85, 0x0c, 0xfa, 0xc0, 0x67, 0x32, 0xfe, 0xe2, 0xcd, + 0x3b, 0xb3, 0x6c, 0xd9, 0xec, 0xc3, 0x7c, 0x3c, 0xb9, 0x96, 0x69, 0x38, 0xf8, 0xe1, 0x90, 0xcf, + 0x89, 0x9f, 0x10, 0x6b, 0x35, 0x9c, 0x82, 0x09, 0xc7, 0x0a, 0xfb, 0xa1, 0x78, 0xaf, 0x61, 0xc5, + 0xca, 0xf1, 0x8a, 0x55, 0x85, 0xb3, 0xba, 0xd1, 0xea, 0xec, 0xb6, 0xb1, 0x8a, 0x3b, 0x9a, 0x2b, + 0x43, 0xbb, 0x68, 0x2f, 0xe2, 0x2e, 0x36, 0xda, 0xd8, 0x70, 0x28, 0x9f, 0xde, 0x79, 0x36, 0x81, + 0x9c, 0xbc, 0x32, 0xde, 0xcd, 0x2b, 0xe3, 0x93, 0xfa, 0xad, 0xc7, 0xc6, 0x2c, 0xde, 0xdd, 0x01, + 0x40, 0xeb, 0x76, 0x4e, 0xc7, 0x97, 0x98, 0x1a, 0x5e, 0xd5, 0xb3, 0x84, 0x57, 0xf3, 0x33, 0xa8, + 0xa1, 0xcc, 0xe8, 0x31, 0x5f, 0xfd, 0xee, 0xe3, 0xd4, 0xef, 0x66, 0x41, 0x16, 0x92, 0x69, 0x5d, + 0x77, 0x08, 0xad, 0x9b, 0x85, 0xa9, 0x60, 0x6b, 0x58, 0x56, 0xae, 0x82, 0x13, 0x9e, 0x4f, 0x6f, + 0xb5, 0x5c, 0x5e, 0xac, 0x37, 0x37, 0xd6, 0x97, 0xd5, 0xe2, 0x62, 0xb9, 0x00, 0xae, 0x7e, 0x52, + 0xbd, 0xf4, 0x5d, 0x71, 0xb3, 0xe8, 0x33, 0x12, 0xe4, 0xc8, 0x61, 0x4c, 0xf4, 0xa3, 0x23, 0xd2, + 0x1c, 0x9b, 0xf3, 0x60, 0xf2, 0xc7, 0x5d, 0xf1, 0x38, 0xef, 0x4c, 0x98, 0x84, 0xab, 0x03, 0xc5, + 0x79, 0x8f, 0x21, 0x94, 0xfe, 0xb4, 0xc6, 0x6d, 0x92, 0xf5, 0x6d, 0xf3, 0xd2, 0xf7, 0x72, 0x93, + 0x74, 0xeb, 0x7f, 0xc8, 0x4d, 0xb2, 0x0f, 0x0b, 0x63, 0x6f, 0x92, 0x7d, 0xda, 0x5d, 0x4c, 0x33, + 0x45, 0xcf, 0xc9, 0xf9, 0xf3, 0xbf, 0xe7, 0x49, 0x07, 0xda, 0xc8, 0x2a, 0xc2, 0xac, 0x6e, 0x38, + 0xd8, 0x32, 0xb4, 0xce, 0x52, 0x47, 0xdb, 0xf2, 0xec, 0xd3, 0xde, 0xdd, 0x8b, 0x4a, 0x28, 0x8f, + 0xca, 0xff, 0xa1, 0x9c, 0x06, 0x70, 0xf0, 0x4e, 0xb7, 0xa3, 0x39, 0x81, 0xea, 0x85, 0x52, 0xc2, + 0xda, 0x97, 0xe5, 0xb5, 0xef, 0x56, 0xb8, 0x82, 0x82, 0xd6, 0xb8, 0xdc, 0xc5, 0x1b, 0x86, 0xfe, + 0x63, 0xbb, 0x24, 0xfc, 0x28, 0xd5, 0xd1, 0x7e, 0x9f, 0xb8, 0xed, 0x9c, 0x7c, 0xcf, 0x76, 0xce, + 0x3f, 0x08, 0x87, 0x35, 0xf1, 0x5a, 0xfd, 0x80, 0xb0, 0x26, 0x7e, 0x4b, 0x93, 0x7b, 0x5a, 0x9a, + 0xbf, 0xc8, 0x92, 0x15, 0x58, 0x64, 0x09, 0xa3, 0x92, 0x13, 0x5c, 0xa0, 0x7c, 0xa5, 0x50, 0xdc, + 0x94, 0xb8, 0x6a, 0x8c, 0x61, 0x01, 0x5c, 0x86, 0x39, 0x5a, 0xf4, 0x82, 0x69, 0x5e, 0xdc, 0xd1, + 0xac, 0x8b, 0xc8, 0x3a, 0x90, 0x2a, 0xc6, 0xee, 0x25, 0x45, 0x6e, 0x90, 0x7e, 0x5c, 0x78, 0xce, + 0xc0, 0x89, 0xcb, 0xe3, 0x79, 0x3c, 0x9b, 0x49, 0xaf, 0x13, 0x9a, 0x42, 0x88, 0x30, 0x98, 0x3e, + 0xae, 0x7f, 0xec, 0xe3, 0xea, 0x75, 0xf4, 0xe1, 0x75, 0xf8, 0x51, 0xe2, 0x8a, 0xbe, 0x30, 0x1c, + 0x76, 0x1e, 0x5f, 0x43, 0x60, 0x57, 0x00, 0xf9, 0xa2, 0xef, 0xfa, 0xe3, 0x3e, 0x86, 0x2b, 0x94, + 0x4d, 0x0f, 0xcd, 0x08, 0x96, 0xc7, 0x82, 0xe6, 0x71, 0x9e, 0x85, 0x5a, 0x37, 0x55, 0x4c, 0x3f, + 0x2f, 0xbc, 0xbf, 0xd5, 0x57, 0x40, 0x94, 0xbb, 0xf1, 0xb4, 0x4a, 0xb1, 0xcd, 0x31, 0x71, 0x36, + 0xd3, 0x47, 0xf3, 0x85, 0x39, 0x98, 0xf2, 0x02, 0xcf, 0x90, 0x7b, 0x91, 0x7c, 0x0c, 0x4f, 0x42, + 0xde, 0x36, 0x77, 0xad, 0x16, 0x66, 0x3b, 0x8e, 0xec, 0x6d, 0x88, 0xdd, 0xb1, 0x81, 0xe3, 0xf9, + 0x3e, 0x93, 0x21, 0x9b, 0xd8, 0x64, 0x88, 0x36, 0x48, 0xe3, 0x06, 0xf8, 0x17, 0x09, 0x07, 0xb3, + 0xe7, 0x30, 0xab, 0x63, 0xe7, 0xf1, 0x38, 0xc6, 0xff, 0x81, 0xd0, 0xde, 0xcb, 0x80, 0x9a, 0x24, + 0x53, 0xb9, 0xda, 0x10, 0x86, 0xea, 0xd5, 0x70, 0xa5, 0x97, 0x83, 0x59, 0xa8, 0xc4, 0x22, 0xdd, + 0x50, 0x57, 0x0b, 0x32, 0x7a, 0x6e, 0x16, 0x0a, 0x94, 0xb5, 0x9a, 0x6f, 0xac, 0xa1, 0x97, 0x66, + 0x0e, 0xdb, 0x22, 0x8d, 0x9e, 0x62, 0x7e, 0x52, 0x12, 0x0d, 0x98, 0xcb, 0x09, 0x3e, 0xa8, 0x5d, + 0x84, 0x26, 0x0d, 0xd1, 0xcc, 0x62, 0x94, 0x0f, 0xfd, 0x56, 0x46, 0x24, 0xfe, 0xae, 0x18, 0x8b, + 0x63, 0x08, 0x96, 0x94, 0xf5, 0xe2, 0x87, 0x2d, 0x59, 0xe6, 0xce, 0x86, 0xd5, 0x41, 0xff, 0xa7, + 0x50, 0x78, 0xf3, 0x08, 0xf3, 0x5f, 0x8a, 0x36, 0xff, 0xc9, 0x92, 0x71, 0x27, 0xd8, 0xab, 0xea, + 0x0c, 0x31, 0x7c, 0x2b, 0x37, 0xc0, 0x9c, 0xd6, 0x6e, 0xaf, 0x6b, 0x5b, 0xb8, 0xe4, 0xce, 0xab, + 0x0d, 0x87, 0xc5, 0x16, 0xea, 0x49, 0x8d, 0xed, 0x8a, 0xc4, 0xd7, 0x41, 0x39, 0x90, 0x98, 0x7c, + 0xc6, 0x32, 0xbc, 0xb9, 0x43, 0x42, 0x6b, 0x5b, 0x0b, 0x22, 0x9d, 0xb1, 0x37, 0x41, 0xcf, 0x26, + 0x01, 0xbe, 0xd3, 0xd7, 0xac, 0xdf, 0x93, 0x60, 0xc2, 0x95, 0x77, 0xb1, 0xdd, 0x46, 0x4f, 0xe4, + 0x02, 0x02, 0x46, 0xfa, 0x96, 0xfd, 0xb4, 0xb0, 0x53, 0x9f, 0x57, 0x43, 0x4a, 0x3f, 0x02, 0x93, + 0x40, 0x88, 0x12, 0x27, 0x44, 0x31, 0xdf, 0xbd, 0xd8, 0x22, 0xd2, 0x17, 0xdf, 0x47, 0x25, 0x98, + 0xf5, 0xe6, 0x11, 0x4b, 0xd8, 0x69, 0x6d, 0xa3, 0x3b, 0x44, 0x17, 0x9a, 0x58, 0x4b, 0xf3, 0xf7, + 0x64, 0x3b, 0xe8, 0x3b, 0x99, 0x84, 0x2a, 0xcf, 0x95, 0x1c, 0xb1, 0x4a, 0x97, 0x48, 0x17, 0xe3, + 0x08, 0xa6, 0x2f, 0xcc, 0xc7, 0x24, 0x80, 0x86, 0xe9, 0xcf, 0x75, 0x0f, 0x20, 0xc9, 0x5f, 0x10, + 0xde, 0xae, 0x65, 0x15, 0x0f, 0x8a, 0x4d, 0xde, 0x73, 0x08, 0xba, 0x26, 0x0d, 0x2a, 0x69, 0x2c, + 0x6d, 0x7d, 0x6a, 0x71, 0xb7, 0xdb, 0xd1, 0x5b, 0x9a, 0xd3, 0xeb, 0x4f, 0x17, 0x2d, 0x5e, 0x72, + 0x69, 0x68, 0x22, 0xa3, 0xd0, 0x2f, 0x23, 0x42, 0x96, 0x34, 0xf4, 0x8c, 0xe4, 0x85, 0x9e, 0x11, + 0xf4, 0x91, 0x19, 0x40, 0x7c, 0x0c, 0xea, 0x29, 0xc3, 0xd1, 0x5a, 0x17, 0x1b, 0x0b, 0x16, 0xd6, + 0xda, 0x2d, 0x6b, 0x77, 0xe7, 0x82, 0x1d, 0x76, 0x06, 0x8d, 0xd7, 0xd1, 0xd0, 0xd2, 0xb1, 0xc4, + 0x2d, 0x1d, 0xa3, 0x9f, 0x92, 0x45, 0x03, 0x21, 0x85, 0x36, 0x38, 0x42, 0x3c, 0x0c, 0x31, 0xd4, + 0x25, 0x72, 0x61, 0xea, 0x59, 0x25, 0xce, 0x26, 0x59, 0x25, 0x7e, 0xbd, 0x50, 0x58, 0x25, 0xa1, + 0x7a, 0x8d, 0xc5, 0x13, 0x6d, 0xae, 0x8e, 0x9d, 0x08, 0x78, 0xaf, 0x87, 0xd9, 0x0b, 0xc1, 0x17, + 0x1f, 0x62, 0x3e, 0xb1, 0x8f, 0x7f, 0xe8, 0x1b, 0x92, 0xae, 0xc0, 0xf0, 0x2c, 0x44, 0xa0, 0xeb, + 0x23, 0x28, 0x89, 0x38, 0xa1, 0x25, 0x5a, 0x4e, 0x89, 0x2d, 0x3f, 0x7d, 0x14, 0x3e, 0x28, 0xc1, + 0x34, 0xb9, 0x0a, 0x75, 0xe1, 0x32, 0x39, 0x16, 0x29, 0x68, 0x94, 0xbc, 0x30, 0x2c, 0x66, 0x05, + 0xb2, 0x1d, 0xdd, 0xb8, 0xe8, 0x79, 0x0f, 0xba, 0xcf, 0xc1, 0xc5, 0x7a, 0x52, 0x9f, 0x8b, 0xf5, + 0xfc, 0x7d, 0x0a, 0xbf, 0xdc, 0x03, 0xdd, 0xf4, 0x3c, 0x90, 0x5c, 0xfa, 0x62, 0xfc, 0xbb, 0x2c, + 0xe4, 0xeb, 0x58, 0xb3, 0x5a, 0xdb, 0xe8, 0x9d, 0x52, 0xdf, 0xa9, 0xc2, 0x24, 0x3f, 0x55, 0x58, + 0x82, 0x89, 0x4d, 0xbd, 0xe3, 0x60, 0x8b, 0x7a, 0x54, 0x87, 0xbb, 0x76, 0xda, 0xc4, 0x17, 0x3a, + 0x66, 0xeb, 0xe2, 0x3c, 0x33, 0xdd, 0xe7, 0xbd, 0x40, 0xac, 0xf3, 0x4b, 0xe4, 0x27, 0xd5, 0xfb, + 0xd9, 0x35, 0x08, 0x6d, 0xd3, 0x72, 0xa2, 0xee, 0xd8, 0x88, 0xa0, 0x52, 0x37, 0x2d, 0x47, 0xa5, + 0x3f, 0xba, 0x30, 0x6f, 0xee, 0x76, 0x3a, 0x0d, 0xfc, 0xb0, 0xe3, 0x4d, 0xdb, 0xbc, 0x77, 0xd7, + 0x58, 0x34, 0x37, 0x37, 0x6d, 0x4c, 0x17, 0x0d, 0x72, 0x2a, 0x7b, 0x53, 0x8e, 0x43, 0xae, 0xa3, + 0xef, 0xe8, 0x74, 0xa2, 0x91, 0x53, 0xe9, 0x8b, 0x72, 0x13, 0x14, 0x82, 0x39, 0x0e, 0x65, 0xf4, + 0x54, 0x9e, 0x34, 0xcd, 0x7d, 0xe9, 0xae, 0xce, 0x5c, 0xc4, 0x97, 0xed, 0x53, 0x13, 0xe4, 0x3b, + 0x79, 0xe6, 0x8f, 0xaf, 0x88, 0xec, 0x77, 0x50, 0x89, 0x47, 0xcf, 0x60, 0x2d, 0xdc, 0x32, 0xad, + 0xb6, 0x27, 0x9b, 0xe8, 0x09, 0x06, 0xcb, 0x97, 0x6c, 0x97, 0xa2, 0x6f, 0xe1, 0xe9, 0x6b, 0xda, + 0xdb, 0xf2, 0x6e, 0xb7, 0xe9, 0x16, 0x7d, 0x5e, 0x77, 0xb6, 0xd7, 0xb0, 0xa3, 0xa1, 0xbf, 0x93, + 0xfb, 0x6a, 0xdc, 0xf4, 0xff, 0xa7, 0x71, 0x03, 0x34, 0x8e, 0x86, 0xc1, 0x72, 0x76, 0x2d, 0xc3, + 0x95, 0x23, 0xf3, 0x4a, 0x0d, 0xa5, 0x28, 0x77, 0xc1, 0x55, 0xc1, 0x9b, 0xb7, 0x54, 0xba, 0xc8, + 0xa6, 0xad, 0x53, 0x24, 0x7b, 0x74, 0x06, 0x65, 0x1d, 0xae, 0xa3, 0x1f, 0x57, 0x1a, 0x6b, 0xab, + 0x2b, 0xfa, 0xd6, 0x76, 0x47, 0xdf, 0xda, 0x76, 0xec, 0x8a, 0x61, 0x3b, 0x58, 0x6b, 0xd7, 0x36, + 0x55, 0x7a, 0x3b, 0x0e, 0x10, 0x3a, 0x22, 0x59, 0x79, 0x8f, 0x6b, 0xb1, 0xd1, 0x2d, 0xac, 0x29, + 0x11, 0x2d, 0xe5, 0xe9, 0x6e, 0x4b, 0xb1, 0x77, 0x3b, 0x3e, 0xa6, 0xd7, 0xf4, 0x60, 0x1a, 0xa8, + 0xfa, 0x6e, 0x87, 0x34, 0x17, 0x92, 0x39, 0xe9, 0x38, 0x17, 0xc3, 0x49, 0xfa, 0xcd, 0xe6, 0xff, + 0xc9, 0x43, 0x6e, 0xd9, 0xd2, 0xba, 0xdb, 0xe8, 0xb9, 0xa1, 0xfe, 0x79, 0x54, 0x6d, 0xc2, 0xd7, + 0x4e, 0x69, 0x90, 0x76, 0xca, 0x03, 0xb4, 0x33, 0x1b, 0xd2, 0xce, 0xe8, 0x45, 0xe5, 0xb3, 0x30, + 0xd3, 0x32, 0x3b, 0x1d, 0xdc, 0x72, 0xe5, 0x51, 0x69, 0x93, 0xd5, 0x9c, 0x29, 0x95, 0x4b, 0x23, + 0xc1, 0xaa, 0xb1, 0x53, 0xa7, 0x6b, 0xe8, 0x54, 0xe9, 0x83, 0x04, 0xf4, 0x52, 0x09, 0xb2, 0xe5, + 0xf6, 0x16, 0xe6, 0xd6, 0xd9, 0x33, 0xa1, 0x75, 0xf6, 0x93, 0x90, 0x77, 0x34, 0x6b, 0x0b, 0x3b, + 0xde, 0x3a, 0x01, 0x7d, 0xf3, 0x63, 0x68, 0xcb, 0xa1, 0x18, 0xda, 0x3f, 0x08, 0x59, 0x57, 0x66, + 0xcc, 0xc9, 0xfc, 0xba, 0x7e, 0xf0, 0x13, 0xd9, 0xcf, 0xbb, 0x25, 0xce, 0xbb, 0xb5, 0x56, 0xc9, + 0x0f, 0xbd, 0x58, 0xe7, 0xf6, 0x61, 0x4d, 0x2e, 0xfa, 0x6c, 0x99, 0x46, 0x65, 0x47, 0xdb, 0xc2, + 0xac, 0x9a, 0x41, 0x82, 0xf7, 0xb5, 0xbc, 0x63, 0x3e, 0xa4, 0xb3, 0x68, 0x91, 0x41, 0x82, 0x5b, + 0x85, 0x6d, 0xbd, 0xdd, 0xc6, 0x06, 0x6b, 0xd9, 0xec, 0xed, 0xec, 0x69, 0xc8, 0xba, 0x3c, 0xb8, + 0xfa, 0xe3, 0x1a, 0x0b, 0x85, 0x23, 0xca, 0x8c, 0xdb, 0xac, 0x68, 0xe3, 0x2d, 0x64, 0xf8, 0x35, + 0x55, 0x11, 0xb7, 0x1d, 0x5a, 0xb9, 0xfe, 0x8d, 0xeb, 0x29, 0x90, 0x33, 0xcc, 0x36, 0x1e, 0x38, + 0x08, 0xd1, 0x5c, 0xca, 0xd3, 0x20, 0x87, 0xdb, 0x6e, 0xaf, 0x20, 0x93, 0xec, 0xa7, 0xe3, 0x65, + 0xa9, 0xd2, 0xcc, 0xc9, 0x7c, 0x83, 0xfa, 0x71, 0x9b, 0x7e, 0x03, 0xfc, 0xd9, 0x09, 0x38, 0x4a, + 0xfb, 0x80, 0xfa, 0xee, 0x05, 0x97, 0xd4, 0x05, 0x8c, 0x1e, 0xed, 0x3f, 0x70, 0x1d, 0xe5, 0x95, + 0xfd, 0x38, 0xe4, 0xec, 0xdd, 0x0b, 0xbe, 0x11, 0x4a, 0x5f, 0xc2, 0x4d, 0x57, 0x1a, 0xc9, 0x70, + 0x26, 0x0f, 0x3b, 0x9c, 0x71, 0x43, 0x93, 0xec, 0x35, 0xfe, 0x60, 0x20, 0xa3, 0xc7, 0x23, 0xbc, + 0x81, 0xac, 0xdf, 0x30, 0x74, 0x0a, 0x26, 0xb4, 0x4d, 0x07, 0x5b, 0x81, 0x99, 0xc8, 0x5e, 0xdd, + 0xa1, 0xf2, 0x02, 0xde, 0x34, 0x2d, 0x57, 0x2c, 0x34, 0x84, 0xba, 0xff, 0x1e, 0x6a, 0xb9, 0xc0, + 0xed, 0x90, 0xdd, 0x0c, 0xc7, 0x0c, 0x73, 0x11, 0x77, 0x99, 0x9c, 0x29, 0x8a, 0xb3, 0xa4, 0x05, + 0xec, 0xff, 0xb0, 0xaf, 0x2b, 0x99, 0xdb, 0xdf, 0x95, 0xa0, 0x4f, 0x24, 0x9d, 0x33, 0xf7, 0x00, + 0x3d, 0x32, 0x0b, 0x4d, 0x79, 0x26, 0xcc, 0xb4, 0x99, 0x8b, 0x56, 0x4b, 0xf7, 0x5b, 0x49, 0xe4, + 0x7f, 0x5c, 0xe6, 0x40, 0x91, 0xb2, 0x61, 0x45, 0x5a, 0x86, 0x49, 0x72, 0x90, 0xd9, 0xd5, 0xa4, + 0x5c, 0x8f, 0x4b, 0x3c, 0x99, 0xd6, 0xf9, 0x95, 0x0a, 0x89, 0x6d, 0xbe, 0xc4, 0x7e, 0x51, 0xfd, + 0x9f, 0x93, 0xcd, 0xbe, 0xe3, 0x25, 0x94, 0x7e, 0x73, 0xfc, 0xed, 0x3c, 0x5c, 0x55, 0xb2, 0x4c, + 0xdb, 0x26, 0x67, 0x60, 0x7a, 0x1b, 0xe6, 0x6b, 0x25, 0xee, 0x36, 0x8d, 0xc7, 0x75, 0xf3, 0xeb, + 0xd7, 0xa0, 0xc6, 0xd7, 0x34, 0xbe, 0x2c, 0x1c, 0x02, 0xc6, 0xdf, 0x7f, 0x88, 0x10, 0xfa, 0xf7, + 0x46, 0x23, 0x79, 0x5b, 0x46, 0x24, 0x2a, 0x4d, 0x42, 0x59, 0xa5, 0xdf, 0x5c, 0x3e, 0x2f, 0xc1, + 0xd5, 0xbd, 0xdc, 0x6c, 0x18, 0xb6, 0xdf, 0x60, 0xae, 0x1d, 0xd0, 0x5e, 0xf8, 0x28, 0x26, 0xb1, + 0xf7, 0x58, 0x46, 0xd4, 0x3d, 0x54, 0x5a, 0xc4, 0x62, 0x49, 0x70, 0xa2, 0x26, 0xee, 0x1e, 0xcb, + 0xc4, 0xe4, 0xd3, 0x17, 0xee, 0x27, 0xb3, 0x70, 0x74, 0xd9, 0x32, 0x77, 0xbb, 0x76, 0xd0, 0x03, + 0xfd, 0x75, 0xff, 0x0d, 0xd7, 0xbc, 0x88, 0x69, 0x70, 0x06, 0xa6, 0x2d, 0x66, 0xcd, 0x05, 0xdb, + 0xaf, 0xe1, 0xa4, 0x70, 0xef, 0x25, 0x1f, 0xa4, 0xf7, 0x0a, 0xfa, 0x99, 0x2c, 0xd7, 0xcf, 0xf4, + 0xf6, 0x1c, 0xb9, 0x3e, 0x3d, 0xc7, 0x5f, 0x49, 0x09, 0x07, 0xd5, 0x1e, 0x11, 0x45, 0xf4, 0x17, + 0x25, 0xc8, 0x6f, 0x91, 0x8c, 0xac, 0xbb, 0x78, 0xb2, 0x58, 0xcd, 0x08, 0x71, 0x95, 0xfd, 0x1a, + 0xc8, 0x55, 0x0e, 0xeb, 0x70, 0xa2, 0x01, 0x2e, 0x9e, 0xdb, 0xf4, 0x95, 0xea, 0x55, 0x59, 0x98, + 0xf1, 0x4b, 0xaf, 0xb4, 0x6d, 0xf4, 0xc2, 0xfe, 0x1a, 0x35, 0x2b, 0xa2, 0x51, 0xfb, 0xd6, 0x99, + 0xfd, 0x51, 0x47, 0x0e, 0x8d, 0x3a, 0x7d, 0x47, 0x97, 0x99, 0x88, 0xd1, 0x05, 0x3d, 0x47, 0x16, + 0xbd, 0x8f, 0x8a, 0xef, 0x5a, 0x49, 0x6d, 0x1e, 0xcf, 0x83, 0x85, 0xe0, 0xad, 0x58, 0x83, 0x6b, + 0x95, 0xbe, 0x92, 0xbc, 0x47, 0x82, 0x63, 0xfb, 0x3b, 0xf3, 0xef, 0xe3, 0xbd, 0xd0, 0xdc, 0x3a, + 0xd9, 0xbe, 0x17, 0x1a, 0x79, 0xe3, 0x37, 0xe9, 0x62, 0x43, 0x8a, 0x70, 0xf6, 0xde, 0xe0, 0x4e, + 0x5c, 0x2c, 0x68, 0x88, 0x20, 0xd1, 0xf4, 0x05, 0xf8, 0x8b, 0x32, 0x4c, 0xd5, 0xb1, 0xb3, 0xaa, + 0x5d, 0x36, 0x77, 0x1d, 0xa4, 0x89, 0x6e, 0xcf, 0x3d, 0x03, 0xf2, 0x1d, 0xf2, 0x0b, 0xbb, 0xe6, + 0xff, 0x4c, 0xdf, 0xfd, 0x2d, 0xe2, 0xfb, 0x43, 0x49, 0xab, 0x2c, 0x3f, 0x1f, 0xcb, 0x45, 0x64, + 0x77, 0xd4, 0xe7, 0x6e, 0x24, 0x5b, 0x3b, 0x89, 0xf6, 0x4e, 0xa3, 0x8a, 0x4e, 0x1f, 0x96, 0x9f, + 0x92, 0x61, 0xb6, 0x8e, 0x9d, 0x8a, 0xbd, 0xa4, 0xed, 0x99, 0x96, 0xee, 0xe0, 0xf0, 0x3d, 0x9f, + 0xf1, 0xd0, 0x9c, 0x06, 0xd0, 0xfd, 0xdf, 0x58, 0x84, 0xa9, 0x50, 0x0a, 0xfa, 0xad, 0xa4, 0x8e, + 0x42, 0x1c, 0x1f, 0x23, 0x01, 0x21, 0x91, 0x8f, 0x45, 0x5c, 0xf1, 0xe9, 0x03, 0xf1, 0x39, 0x89, + 0x01, 0x51, 0xb4, 0x5a, 0xdb, 0xfa, 0x1e, 0x6e, 0x27, 0x04, 0xc2, 0xfb, 0x2d, 0x00, 0xc2, 0x27, + 0x94, 0xd8, 0x7d, 0x85, 0xe3, 0x63, 0x14, 0xee, 0x2b, 0x71, 0x04, 0xc7, 0x12, 0x24, 0xca, 0xed, + 0x7a, 0xd8, 0x7a, 0xe6, 0xbd, 0xa2, 0x62, 0x0d, 0x4c, 0x36, 0x29, 0x6c, 0xb2, 0x0d, 0xd5, 0xb1, + 0xd0, 0xb2, 0x07, 0xe9, 0x74, 0x36, 0x8d, 0x8e, 0xa5, 0x6f, 0xd1, 0xe9, 0x0b, 0xfd, 0x1d, 0x32, + 0x9c, 0xf0, 0xa3, 0xa7, 0xd4, 0xb1, 0xb3, 0xa8, 0xd9, 0xdb, 0x17, 0x4c, 0xcd, 0x6a, 0xa3, 0xd2, + 0x08, 0x4e, 0xfc, 0xa1, 0xcf, 0x86, 0x41, 0xa8, 0xf2, 0x20, 0xf4, 0x75, 0x15, 0xed, 0xcb, 0xcb, + 0x28, 0x3a, 0x99, 0x58, 0x6f, 0xd6, 0xdf, 0xf1, 0xc1, 0xfa, 0x21, 0x0e, 0xac, 0xbb, 0x87, 0x65, + 0x31, 0x7d, 0xe0, 0x7e, 0x85, 0x8e, 0x08, 0x21, 0xaf, 0xe6, 0x07, 0x45, 0x01, 0x8b, 0xf0, 0x6a, + 0x95, 0x23, 0xbd, 0x5a, 0x87, 0x1a, 0x23, 0x06, 0x7a, 0x24, 0xa7, 0x3b, 0x46, 0x1c, 0xa2, 0xb7, + 0xf1, 0x5b, 0x64, 0x28, 0x90, 0xf0, 0x59, 0x21, 0x8f, 0xef, 0x70, 0x34, 0xea, 0x78, 0x74, 0xf6, + 0x79, 0x97, 0x4f, 0x24, 0xf5, 0x2e, 0x47, 0x6f, 0x4e, 0xea, 0x43, 0xde, 0xcb, 0xed, 0x48, 0x10, + 0x4b, 0xe4, 0x22, 0x3e, 0x80, 0x83, 0xf4, 0x41, 0xfb, 0x6f, 0x32, 0x80, 0xdb, 0xa0, 0xd9, 0xd9, + 0x87, 0x67, 0x89, 0xc2, 0x75, 0x4b, 0xd8, 0xaf, 0xde, 0x05, 0xea, 0x44, 0x0f, 0x50, 0x94, 0x62, + 0x70, 0xaa, 0xe2, 0xd1, 0xa4, 0xbe, 0x95, 0x01, 0x57, 0x23, 0x81, 0x25, 0x91, 0xb7, 0x65, 0x64, + 0xd9, 0xe9, 0x03, 0xf2, 0x3f, 0x24, 0xc8, 0x35, 0xcc, 0x3a, 0x76, 0x0e, 0x6e, 0x0a, 0x24, 0x3e, + 0xb6, 0x4f, 0xca, 0x1d, 0xc5, 0xb1, 0xfd, 0x7e, 0x84, 0xc6, 0x10, 0x8d, 0x4c, 0x82, 0x99, 0x86, + 0x59, 0xf2, 0x17, 0xa7, 0xc4, 0x7d, 0x55, 0xc5, 0xef, 0xd4, 0xf6, 0x2b, 0x18, 0x14, 0x73, 0xa0, + 0x3b, 0xb5, 0x07, 0xd3, 0x4b, 0x5f, 0x6e, 0x77, 0xc0, 0xd1, 0x0d, 0xa3, 0x6d, 0xaa, 0xb8, 0x6d, + 0xb2, 0x95, 0x6e, 0x45, 0x81, 0xec, 0xae, 0xd1, 0x36, 0x09, 0xcb, 0x39, 0x95, 0x3c, 0xbb, 0x69, + 0x16, 0x6e, 0x9b, 0xcc, 0x37, 0x80, 0x3c, 0xa3, 0x2f, 0xcb, 0x90, 0x75, 0xff, 0x15, 0x17, 0xf5, + 0x5b, 0xe4, 0x84, 0x81, 0x08, 0x5c, 0xf2, 0x23, 0xb1, 0x84, 0xee, 0x0d, 0xad, 0xfd, 0x53, 0x0f, + 0xd6, 0xeb, 0xa2, 0xca, 0x0b, 0x89, 0x22, 0x58, 0xf3, 0x57, 0x4e, 0xc1, 0xc4, 0x85, 0x8e, 0xd9, + 0xba, 0x18, 0x9c, 0x97, 0x67, 0xaf, 0xca, 0x4d, 0x90, 0xb3, 0x34, 0x63, 0x0b, 0xb3, 0x3d, 0x85, + 0xe3, 0x3d, 0x7d, 0x21, 0xf1, 0x7a, 0x51, 0x69, 0x16, 0xf4, 0xe6, 0x24, 0x21, 0x10, 0xfa, 0x54, + 0x3e, 0x99, 0x3e, 0x2c, 0x0e, 0x71, 0xb2, 0xac, 0x00, 0x33, 0xa5, 0x22, 0xbd, 0xbd, 0x7e, 0xad, + 0x76, 0xae, 0x5c, 0x90, 0x09, 0xcc, 0xae, 0x4c, 0x52, 0x84, 0xd9, 0x25, 0xff, 0x3d, 0x0b, 0x73, + 0x9f, 0xca, 0x1f, 0x06, 0xcc, 0x1f, 0x95, 0x60, 0x76, 0x55, 0xb7, 0x9d, 0x28, 0x6f, 0xff, 0x98, + 0xe8, 0xb9, 0x2f, 0x4a, 0x6a, 0x2a, 0x73, 0xe5, 0x08, 0x87, 0xcd, 0x4d, 0x64, 0x0e, 0xc7, 0x15, + 0x31, 0x9e, 0x63, 0x29, 0x84, 0x03, 0x7a, 0x87, 0xb4, 0xb0, 0x24, 0x13, 0x1b, 0x4a, 0x41, 0x21, + 0xe3, 0x37, 0x94, 0x22, 0xcb, 0x4e, 0x5f, 0xbe, 0x5f, 0x96, 0xe0, 0x98, 0x5b, 0x7c, 0xdc, 0xb2, + 0x54, 0xb4, 0x98, 0x07, 0x2e, 0x4b, 0x25, 0x5e, 0x19, 0xdf, 0xc7, 0xcb, 0x28, 0x56, 0xc6, 0x07, + 0x11, 0x1d, 0xb3, 0x98, 0x23, 0x96, 0x61, 0x07, 0x89, 0x39, 0x66, 0x19, 0x76, 0x78, 0x31, 0xc7, + 0x2f, 0xc5, 0x0e, 0x29, 0xe6, 0x43, 0x5b, 0x60, 0x7d, 0x8d, 0xec, 0x8b, 0x39, 0x72, 0x6d, 0x23, + 0x46, 0xcc, 0x89, 0x4f, 0xec, 0xa2, 0xb7, 0x0e, 0x29, 0xf8, 0x11, 0xaf, 0x6f, 0x0c, 0x03, 0xd3, + 0x21, 0xae, 0x71, 0xfc, 0xaa, 0x0c, 0x73, 0x8c, 0x8b, 0xfe, 0x53, 0xe6, 0x18, 0x8c, 0x12, 0x4f, + 0x99, 0x13, 0x9f, 0x01, 0xe2, 0x39, 0x1b, 0xff, 0x19, 0xa0, 0xd8, 0xf2, 0xd3, 0x07, 0xe7, 0x2b, + 0x59, 0x38, 0xe9, 0xb2, 0xb0, 0x66, 0xb6, 0xf5, 0xcd, 0xcb, 0x94, 0x8b, 0x73, 0x5a, 0x67, 0x17, + 0xdb, 0xe8, 0x5d, 0x92, 0x28, 0x4a, 0xff, 0x09, 0xc0, 0xec, 0x62, 0x8b, 0x06, 0x52, 0x63, 0x40, + 0xdd, 0x15, 0x55, 0xd9, 0xfd, 0x25, 0xf9, 0x97, 0xc9, 0xd4, 0x3c, 0x22, 0x6a, 0x88, 0x9e, 0x6b, + 0x15, 0x4e, 0xf9, 0x5f, 0x7a, 0x1d, 0x3c, 0x32, 0xfb, 0x1d, 0x3c, 0x6e, 0x04, 0x59, 0x6b, 0xb7, + 0x7d, 0xa8, 0x7a, 0x37, 0xb3, 0x49, 0x99, 0xaa, 0x9b, 0xc5, 0xcd, 0x69, 0xe3, 0xe0, 0x68, 0x5e, + 0x44, 0x4e, 0x1b, 0x3b, 0xca, 0x3c, 0xe4, 0xe9, 0x0d, 0xd9, 0xfe, 0x8a, 0x7e, 0xff, 0xcc, 0x2c, + 0x17, 0x6f, 0xda, 0xd5, 0x78, 0x35, 0xbc, 0x23, 0x91, 0x64, 0xfa, 0xf5, 0xd3, 0x81, 0x9d, 0xac, + 0x72, 0x0a, 0x76, 0xcf, 0xd0, 0x94, 0xc7, 0xb3, 0x1b, 0x56, 0xec, 0x76, 0x3b, 0x97, 0x1b, 0x2c, + 0xf8, 0x4a, 0xa2, 0xdd, 0xb0, 0x50, 0x0c, 0x17, 0xa9, 0x37, 0x86, 0x4b, 0xf2, 0xdd, 0x30, 0x8e, + 0x8f, 0x51, 0xec, 0x86, 0xc5, 0x11, 0x4c, 0x5f, 0xb4, 0x2f, 0x9b, 0xa4, 0x56, 0x33, 0x8b, 0xed, + 0xff, 0x9a, 0xfe, 0x9e, 0xd5, 0xc0, 0x3b, 0xbb, 0xf4, 0x0b, 0xfb, 0x1f, 0x7b, 0xa7, 0x89, 0xf2, + 0x34, 0xc8, 0x6f, 0x9a, 0xd6, 0x8e, 0xe6, 0x6d, 0xdc, 0xf7, 0x9e, 0x14, 0x61, 0xf1, 0xf4, 0x97, + 0x48, 0x1e, 0x95, 0xe5, 0x75, 0xe7, 0x23, 0xcf, 0xd6, 0xbb, 0x2c, 0xea, 0xa2, 0xfb, 0xa8, 0x5c, + 0x0f, 0xb3, 0x2c, 0xf8, 0x62, 0x15, 0xdb, 0x0e, 0x6e, 0xb3, 0x88, 0x15, 0x7c, 0xa2, 0x72, 0x16, + 0x66, 0x58, 0xc2, 0x92, 0xde, 0xc1, 0x36, 0x0b, 0x5a, 0xc1, 0xa5, 0x29, 0x27, 0x21, 0xaf, 0xdb, + 0xf7, 0xdb, 0xa6, 0x41, 0xfc, 0xff, 0x27, 0x55, 0xf6, 0xa6, 0xdc, 0x08, 0x47, 0x59, 0x3e, 0xdf, + 0x58, 0xa5, 0x07, 0x76, 0x7a, 0x93, 0x5d, 0xd5, 0x32, 0xcc, 0x75, 0xcb, 0xdc, 0xb2, 0xb0, 0x6d, + 0x93, 0x53, 0x53, 0x93, 0x6a, 0x28, 0x45, 0x79, 0x10, 0x8e, 0x75, 0x74, 0xe3, 0xa2, 0x4d, 0x82, + 0xf4, 0x2e, 0x31, 0xb7, 0xb1, 0x99, 0x3e, 0xc1, 0xb3, 0x43, 0x8d, 0x8d, 0xc9, 0x21, 0xfc, 0x8b, + 0xba, 0x9f, 0x0a, 0x7a, 0x49, 0x06, 0x66, 0xc2, 0x09, 0x8a, 0x06, 0x8a, 0xd7, 0x8d, 0xd9, 0xe7, + 0xb7, 0x75, 0x07, 0xbb, 0xc4, 0xd8, 0xd9, 0x94, 0xdb, 0x06, 0x14, 0xa6, 0xee, 0xfb, 0x51, 0xed, + 0x43, 0xcc, 0x15, 0x2a, 0xed, 0xa0, 0x88, 0x27, 0x98, 0xcd, 0x6c, 0x4b, 0x2e, 0x0d, 0x3d, 0x1b, + 0x94, 0xfd, 0xd4, 0x42, 0x5e, 0x1b, 0x99, 0x64, 0x5e, 0x1b, 0xca, 0x4d, 0x50, 0xd0, 0x3a, 0x1d, + 0xf3, 0x12, 0x6e, 0xfb, 0x64, 0x99, 0x6e, 0xed, 0x4b, 0x47, 0x9f, 0x1a, 0x66, 0x1e, 0x97, 0xf8, + 0x5a, 0x09, 0xb7, 0x51, 0xec, 0xb6, 0x5a, 0x18, 0xb7, 0xd9, 0x41, 0x33, 0xef, 0x35, 0xe1, 0x85, + 0x13, 0x89, 0x67, 0x7d, 0x87, 0x74, 0xe3, 0xc4, 0xfb, 0x4f, 0x40, 0x9e, 0xde, 0xde, 0x86, 0x5e, + 0x32, 0xd7, 0xb7, 0x6f, 0x98, 0xe3, 0xfb, 0x86, 0x0d, 0x98, 0x31, 0x4c, 0xb7, 0xb8, 0x75, 0xcd, + 0xd2, 0x76, 0xec, 0xb8, 0x45, 0x5d, 0x4a, 0xd7, 0x1f, 0xc1, 0xab, 0xa1, 0xdf, 0x56, 0x8e, 0xa8, + 0x1c, 0x19, 0xe5, 0xff, 0x07, 0x47, 0x2f, 0xb0, 0x80, 0x0c, 0x36, 0xa3, 0x2c, 0x45, 0xbb, 0x3c, + 0xf6, 0x50, 0x5e, 0xe0, 0xff, 0x5c, 0x39, 0xa2, 0xf6, 0x12, 0x53, 0x7e, 0x04, 0xe6, 0xdc, 0xd7, + 0xb6, 0x79, 0xc9, 0x63, 0x5c, 0x8e, 0xb6, 0xfb, 0x7a, 0xc8, 0xaf, 0x71, 0x3f, 0xae, 0x1c, 0x51, + 0x7b, 0x48, 0x29, 0x35, 0x80, 0x6d, 0x67, 0xa7, 0xc3, 0x08, 0x67, 0xa3, 0x55, 0xb2, 0x87, 0xf0, + 0x8a, 0xff, 0xd3, 0xca, 0x11, 0x35, 0x44, 0x42, 0x59, 0x85, 0x29, 0xe7, 0x61, 0x87, 0xd1, 0xcb, + 0x45, 0xfb, 0x1a, 0xf4, 0xd0, 0x6b, 0x78, 0xff, 0xac, 0x1c, 0x51, 0x03, 0x02, 0x4a, 0x05, 0x26, + 0xbb, 0x17, 0x18, 0xb1, 0x7c, 0x74, 0xff, 0xd4, 0x43, 0x6c, 0xfd, 0x82, 0x4f, 0xcb, 0xff, 0xdd, + 0x65, 0xac, 0x65, 0xef, 0x31, 0x5a, 0x13, 0xc2, 0x8c, 0x95, 0xbc, 0x7f, 0x5c, 0xc6, 0x7c, 0x02, + 0x4a, 0x05, 0xa6, 0x6c, 0x43, 0xeb, 0xda, 0xdb, 0xa6, 0x63, 0x9f, 0x9a, 0xec, 0x71, 0x4b, 0x8d, + 0xa6, 0x56, 0x67, 0xff, 0xa8, 0xc1, 0xdf, 0xca, 0xd3, 0xe0, 0xc4, 0x6e, 0xb7, 0xad, 0x39, 0xb8, + 0xfc, 0xb0, 0x6e, 0x3b, 0xba, 0xb1, 0xe5, 0x85, 0xf4, 0xa5, 0x9d, 0x7b, 0xff, 0x8f, 0xca, 0x3c, + 0x3b, 0xa0, 0x06, 0xa4, 0x6d, 0xa2, 0xde, 0xbd, 0x51, 0x5a, 0x6c, 0xe8, 0x5c, 0xda, 0x33, 0x21, + 0xeb, 0x7e, 0x22, 0x83, 0xc1, 0x5c, 0xff, 0x75, 0xd7, 0x5e, 0xdd, 0x21, 0x0d, 0xd8, 0xfd, 0xa9, + 0x67, 0x3c, 0x99, 0xd9, 0x37, 0x9e, 0x9c, 0x81, 0x69, 0xdd, 0x5e, 0xd3, 0xb7, 0xa8, 0x31, 0xcb, + 0x8e, 0x1f, 0x84, 0x93, 0xe8, 0xe4, 0xbf, 0x8a, 0x2f, 0xd1, 0x0b, 0x4b, 0x8e, 0x7a, 0x93, 0x7f, + 0x2f, 0x05, 0xdd, 0x00, 0x33, 0xe1, 0x46, 0x46, 0xaf, 0x80, 0xd5, 0x03, 0x53, 0x98, 0xbd, 0xa1, + 0xeb, 0x61, 0x8e, 0xd7, 0xe9, 0xd0, 0x88, 0x2f, 0x7b, 0x5d, 0x21, 0xba, 0x0e, 0x8e, 0xf6, 0x34, + 0x2c, 0x2f, 0xc4, 0x4b, 0x26, 0x08, 0xf1, 0x72, 0x06, 0x20, 0xd0, 0xe2, 0xbe, 0x64, 0xae, 0x85, + 0x29, 0x5f, 0x2f, 0xfb, 0x66, 0xf8, 0x62, 0x06, 0x26, 0x3d, 0x65, 0xeb, 0x97, 0xc1, 0x1d, 0x99, + 0x8c, 0xd0, 0x7e, 0x8e, 0x37, 0x32, 0x85, 0xd3, 0xdc, 0x61, 0x3d, 0xf0, 0xa2, 0x6e, 0xe8, 0x4e, + 0xc7, 0x3b, 0x89, 0xd8, 0x9b, 0xac, 0xac, 0x03, 0xe8, 0x04, 0xa3, 0x46, 0x70, 0x34, 0xf1, 0xd6, + 0x04, 0xed, 0x81, 0xea, 0x43, 0x88, 0xc6, 0xd9, 0xef, 0x63, 0xe7, 0x06, 0xa7, 0x20, 0x47, 0xe3, + 0xda, 0x1f, 0x51, 0xe6, 0x00, 0xca, 0xcf, 0x5a, 0x2f, 0xab, 0x95, 0x72, 0xb5, 0x54, 0x2e, 0x64, + 0xd0, 0xaf, 0x49, 0x30, 0xe5, 0x37, 0x82, 0xbe, 0x95, 0x2c, 0x33, 0xd5, 0x1a, 0x78, 0xcb, 0xe6, + 0xfe, 0x46, 0x15, 0x56, 0xb2, 0x67, 0xc0, 0x95, 0xbb, 0x36, 0x5e, 0xd2, 0x2d, 0xdb, 0x51, 0xcd, + 0x4b, 0x4b, 0xa6, 0x15, 0x0c, 0xac, 0x34, 0xa0, 0x6c, 0xd4, 0x67, 0xd7, 0xc0, 0x6b, 0x63, 0x72, + 0x46, 0x0d, 0x5b, 0x6c, 0xa1, 0x3e, 0x48, 0x70, 0xe9, 0x3a, 0x96, 0x66, 0xd8, 0x5d, 0xd3, 0xc6, + 0xaa, 0x79, 0xc9, 0x2e, 0x1a, 0xed, 0x92, 0xd9, 0xd9, 0xdd, 0x31, 0x6c, 0x66, 0xa2, 0x45, 0x7d, + 0x76, 0xa5, 0x43, 0xee, 0xd0, 0x9d, 0x03, 0x28, 0xd5, 0x56, 0x57, 0xcb, 0xa5, 0x46, 0xa5, 0x56, + 0x2d, 0x1c, 0x71, 0xa5, 0xd5, 0x28, 0x2e, 0xac, 0xba, 0xd2, 0xf9, 0x51, 0x98, 0xf4, 0xda, 0x34, + 0x8b, 0x4a, 0x93, 0xf1, 0xa2, 0xd2, 0x28, 0x45, 0x98, 0xf4, 0x5a, 0x39, 0x1b, 0x11, 0x9e, 0xd8, + 0x7b, 0x0a, 0x79, 0x47, 0xb3, 0x1c, 0x62, 0xa0, 0x78, 0x44, 0x16, 0x34, 0x1b, 0xab, 0xfe, 0x6f, + 0x67, 0x9f, 0xc2, 0x38, 0x50, 0x60, 0xae, 0xb8, 0xba, 0xda, 0xac, 0xa9, 0xcd, 0x6a, 0xad, 0xb1, + 0x52, 0xa9, 0x2e, 0xd3, 0x11, 0xb2, 0xb2, 0x5c, 0xad, 0xa9, 0x65, 0x3a, 0x40, 0xd6, 0x0b, 0x19, + 0x7a, 0x87, 0xf3, 0xc2, 0x24, 0xe4, 0xbb, 0x44, 0xba, 0xe8, 0xf3, 0x72, 0xc2, 0xf0, 0x03, 0x3e, + 0x4e, 0x11, 0xb7, 0xcc, 0x72, 0x47, 0x00, 0xa4, 0x3e, 0x47, 0x74, 0xcf, 0xc2, 0x0c, 0x35, 0xad, + 0x6d, 0xb2, 0x9b, 0x42, 0x90, 0x93, 0x55, 0x2e, 0x0d, 0x7d, 0x50, 0x4a, 0x10, 0x93, 0xa0, 0x2f, + 0x47, 0xc9, 0x8c, 0x8b, 0x3f, 0xcf, 0x0c, 0x77, 0x0b, 0x44, 0xa5, 0xda, 0x28, 0xab, 0xd5, 0xe2, + 0x2a, 0xcb, 0x22, 0x2b, 0xa7, 0xe0, 0x78, 0xb5, 0xc6, 0x42, 0x2c, 0xd6, 0x9b, 0x8d, 0x5a, 0xb3, + 0xb2, 0xb6, 0x5e, 0x53, 0x1b, 0x85, 0x9c, 0x72, 0x12, 0x14, 0xfa, 0xdc, 0xac, 0xd4, 0x9b, 0xa5, + 0x62, 0xb5, 0x54, 0x5e, 0x2d, 0x2f, 0x16, 0xf2, 0xca, 0x93, 0xe0, 0x3a, 0x7a, 0xab, 0x50, 0x6d, + 0xa9, 0xa9, 0xd6, 0xce, 0xd7, 0x5d, 0x04, 0xd5, 0xf2, 0x6a, 0xd1, 0x55, 0xa4, 0xd0, 0x5d, 0xce, + 0x13, 0xca, 0x15, 0x70, 0x94, 0x5c, 0xf4, 0xbe, 0x5a, 0x2b, 0x2e, 0xb2, 0xf2, 0x26, 0x95, 0x6b, + 0xe0, 0x54, 0xa5, 0x5a, 0xdf, 0x58, 0x5a, 0xaa, 0x94, 0x2a, 0xe5, 0x6a, 0xa3, 0xb9, 0x5e, 0x56, + 0xd7, 0x2a, 0xf5, 0xba, 0xfb, 0x6f, 0x61, 0x8a, 0xdc, 0x94, 0x4b, 0xfb, 0x4c, 0xf4, 0x4e, 0x19, + 0x66, 0xcf, 0x69, 0x1d, 0xdd, 0x1d, 0x28, 0xc8, 0x15, 0xda, 0x3d, 0xa7, 0x77, 0x1c, 0x72, 0xd5, + 0x36, 0xf3, 0xff, 0x27, 0x2f, 0xe8, 0x27, 0xe5, 0x84, 0xa7, 0x77, 0x18, 0x10, 0xb4, 0xc4, 0x79, + 0xae, 0xb4, 0x88, 0xb9, 0xe6, 0x2b, 0xa5, 0x04, 0xa7, 0x77, 0xc4, 0xc9, 0x27, 0x03, 0xff, 0xd7, + 0x47, 0x05, 0x7e, 0x01, 0x66, 0x36, 0xaa, 0xc5, 0x8d, 0xc6, 0x4a, 0x4d, 0xad, 0xfc, 0x30, 0x09, + 0xfe, 0x3e, 0x0b, 0x53, 0x4b, 0x35, 0x75, 0xa1, 0xb2, 0xb8, 0x58, 0xae, 0x16, 0x72, 0xca, 0x95, + 0x70, 0x45, 0xbd, 0xac, 0x9e, 0xab, 0x94, 0xca, 0xcd, 0x8d, 0x6a, 0xf1, 0x5c, 0xb1, 0xb2, 0x4a, + 0xfa, 0x88, 0x7c, 0xcc, 0xf5, 0xdf, 0x13, 0xe8, 0xc7, 0xb3, 0x00, 0xb4, 0xea, 0xe4, 0xee, 0xa3, + 0xd0, 0x25, 0xd1, 0x9f, 0x49, 0x3a, 0x69, 0x08, 0xc8, 0x44, 0xb4, 0xdf, 0x0a, 0x4c, 0x5a, 0xec, + 0x03, 0x5b, 0xcd, 0x1a, 0x44, 0x87, 0x3e, 0x7a, 0xd4, 0x54, 0xff, 0x77, 0xf4, 0xae, 0x24, 0x73, + 0x84, 0x48, 0xc6, 0x92, 0x21, 0xb9, 0x34, 0x1a, 0x20, 0xd1, 0x0b, 0x33, 0x30, 0xc7, 0x57, 0xcc, + 0xad, 0x04, 0x31, 0xa6, 0xc4, 0x2a, 0xc1, 0xff, 0x1c, 0x32, 0xb2, 0xce, 0x3e, 0x95, 0x0d, 0xa7, + 0xe0, 0xb5, 0x4c, 0x7a, 0x10, 0xdf, 0xb3, 0x58, 0x0a, 0x19, 0x97, 0x79, 0xd7, 0xe8, 0x28, 0x48, + 0xca, 0x04, 0xc8, 0x8d, 0x87, 0x9d, 0x82, 0x8c, 0xbe, 0x28, 0xc3, 0x2c, 0x77, 0x0b, 0x35, 0x7a, + 0x65, 0x46, 0xe4, 0x86, 0xd8, 0xd0, 0xfd, 0xd6, 0x99, 0x83, 0xde, 0x6f, 0x7d, 0xf6, 0x16, 0x98, + 0x60, 0x69, 0x44, 0xbe, 0xb5, 0xaa, 0x6b, 0x0a, 0x1c, 0x85, 0xe9, 0xe5, 0x72, 0xa3, 0x59, 0x6f, + 0x14, 0xd5, 0x46, 0x79, 0xb1, 0x90, 0x71, 0x07, 0xbe, 0xf2, 0xda, 0x7a, 0xe3, 0xc1, 0x82, 0x94, + 0xdc, 0x21, 0xb2, 0x97, 0x91, 0x31, 0x3b, 0x44, 0xc6, 0x15, 0x9f, 0xfe, 0x5c, 0xf5, 0x13, 0x32, + 0x14, 0x28, 0x07, 0xe5, 0x87, 0xbb, 0xd8, 0xd2, 0xb1, 0xd1, 0xc2, 0xe8, 0xa2, 0x48, 0x00, 0xd6, + 0x7d, 0xa1, 0x09, 0x49, 0x7f, 0x1e, 0xb2, 0x12, 0xe9, 0x4b, 0x8f, 0x81, 0x9d, 0xdd, 0x67, 0x60, + 0x7f, 0x3c, 0xa9, 0x47, 0x64, 0x2f, 0xbb, 0x23, 0x81, 0xec, 0x23, 0x49, 0x3c, 0x22, 0x07, 0x70, + 0x30, 0x96, 0xb8, 0xca, 0x11, 0xe3, 0x6f, 0x41, 0x46, 0x2f, 0x90, 0xe1, 0xe8, 0xa2, 0xe6, 0xe0, + 0x85, 0xcb, 0x0d, 0xef, 0x96, 0xc8, 0x88, 0x9b, 0x9d, 0x33, 0xfb, 0x6e, 0x76, 0x0e, 0x2e, 0x9a, + 0x94, 0x7a, 0x2e, 0x9a, 0x44, 0x6f, 0x4b, 0x7a, 0x86, 0xb2, 0x87, 0x87, 0x91, 0x05, 0x3f, 0x4e, + 0x76, 0x36, 0x32, 0x9e, 0x8b, 0xf4, 0x1b, 0xd8, 0x9b, 0xa6, 0xa0, 0x40, 0x59, 0x09, 0x39, 0xfd, + 0xfd, 0x22, 0xbb, 0x0c, 0xbd, 0x99, 0x20, 0xc6, 0xa2, 0x17, 0xb5, 0x42, 0xe2, 0xa3, 0x56, 0x70, + 0x6b, 0xc8, 0x72, 0xaf, 0xa3, 0x46, 0xd2, 0xce, 0x30, 0xe4, 0xe1, 0x17, 0x1d, 0xd6, 0x36, 0xbd, + 0xce, 0x30, 0xb6, 0xf8, 0xf1, 0x5c, 0xd8, 0xcb, 0xae, 0xd5, 0x2c, 0x8b, 0x22, 0x13, 0x7f, 0x2f, + 0x79, 0x52, 0x77, 0x6f, 0xce, 0xc3, 0x32, 0xe6, 0xb2, 0xee, 0xf4, 0xdc, 0xbd, 0x07, 0x71, 0x90, + 0x3e, 0x0a, 0xdf, 0x91, 0x20, 0x5b, 0x37, 0x2d, 0x67, 0x54, 0x18, 0x24, 0xdd, 0xa2, 0x0e, 0x49, + 0xa0, 0x1e, 0x3d, 0xe7, 0x4c, 0x6f, 0x8b, 0x3a, 0xbe, 0xfc, 0x31, 0x84, 0xa9, 0x3c, 0x0a, 0x73, + 0x94, 0x13, 0xff, 0x0e, 0x97, 0x6f, 0x4b, 0xb4, 0xbf, 0x7a, 0x40, 0x14, 0x11, 0xb2, 0xf1, 0xe1, + 0x6f, 0x11, 0x7b, 0xa0, 0x70, 0x69, 0xe8, 0xb5, 0x61, 0x5c, 0x16, 0x79, 0x5c, 0xfa, 0xcd, 0xb8, + 0xfd, 0x6b, 0x50, 0x46, 0xd5, 0x33, 0x25, 0x89, 0x78, 0x19, 0x53, 0x78, 0xfa, 0x88, 0x3c, 0x22, + 0x43, 0x9e, 0xb9, 0xe8, 0x8d, 0x14, 0x81, 0xa4, 0x2d, 0xc3, 0x17, 0x82, 0x98, 0x2b, 0x9f, 0x3c, + 0xea, 0x96, 0x11, 0x5f, 0x7e, 0xfa, 0x38, 0xfc, 0x3b, 0xf3, 0x3d, 0x2d, 0xee, 0x69, 0x7a, 0x47, + 0xbb, 0xd0, 0x49, 0x10, 0x69, 0xfa, 0x83, 0x09, 0x4f, 0xdb, 0xf9, 0x55, 0xe5, 0xca, 0x8b, 0x90, + 0xf8, 0x0f, 0xc0, 0x94, 0xc5, 0xed, 0xf5, 0xb9, 0x56, 0x54, 0x8f, 0xdf, 0x2f, 0xfb, 0xae, 0x06, + 0x39, 0x13, 0x1d, 0xad, 0x13, 0xe2, 0x67, 0x2c, 0x47, 0x81, 0xa6, 0x8b, 0xed, 0xf6, 0x12, 0xd6, + 0x9c, 0x5d, 0x0b, 0xb7, 0x13, 0x0d, 0x11, 0x56, 0xcf, 0x76, 0x68, 0x48, 0x12, 0x5c, 0xac, 0xc7, + 0x55, 0x1e, 0x9d, 0xa7, 0x0f, 0xe8, 0x0d, 0x3c, 0x5e, 0x46, 0xd2, 0x25, 0xbd, 0xd1, 0x87, 0xa4, + 0xc6, 0x41, 0xf2, 0xcc, 0xe1, 0x98, 0x48, 0x1f, 0x90, 0x5f, 0x96, 0x61, 0x8e, 0xda, 0x09, 0xa3, + 0xc6, 0xe4, 0xf7, 0x13, 0xba, 0xf4, 0x84, 0x6e, 0xc9, 0x0a, 0xb3, 0x33, 0x12, 0x58, 0x92, 0x38, + 0x00, 0x89, 0xf1, 0x91, 0x3e, 0x32, 0x9f, 0xca, 0x03, 0x84, 0xdc, 0x34, 0x3f, 0x98, 0x0f, 0xe2, + 0x2e, 0xa2, 0x37, 0xb3, 0xf9, 0x47, 0x9d, 0x0b, 0x02, 0x1e, 0x72, 0xc1, 0xf4, 0x37, 0xa4, 0xf8, + 0x44, 0xa1, 0x51, 0xe5, 0xcf, 0x13, 0xda, 0xbc, 0xcc, 0x49, 0x72, 0xe0, 0xe0, 0x3e, 0x64, 0x2f, + 0xf7, 0xa1, 0x04, 0xc6, 0xef, 0x20, 0x56, 0x92, 0xa1, 0xb6, 0x3a, 0xc4, 0xcc, 0xfe, 0x14, 0x1c, + 0x57, 0xcb, 0xc5, 0xc5, 0x5a, 0x75, 0xf5, 0xc1, 0xf0, 0x95, 0x49, 0x05, 0x39, 0x3c, 0x39, 0x49, + 0x05, 0xb6, 0x57, 0x27, 0xec, 0x03, 0x79, 0x59, 0xc5, 0xcd, 0x56, 0x42, 0x8b, 0x2b, 0x83, 0x7b, + 0x35, 0x01, 0xb2, 0x87, 0x89, 0xc2, 0x23, 0x10, 0x6a, 0x46, 0x3f, 0x2d, 0x43, 0x81, 0xf8, 0xfe, + 0x10, 0x2e, 0xd9, 0xdd, 0x78, 0x35, 0xde, 0x8b, 0xb3, 0x4b, 0xf7, 0x9f, 0x02, 0x2f, 0x4e, 0x2f, + 0x41, 0xb9, 0x01, 0xe6, 0x5a, 0xdb, 0xb8, 0x75, 0xb1, 0x62, 0x78, 0xfb, 0xea, 0x74, 0x13, 0xb6, + 0x27, 0x95, 0x07, 0xe6, 0x01, 0x1e, 0x18, 0x7e, 0x12, 0xcd, 0x0d, 0xd2, 0x61, 0xa6, 0x22, 0x70, + 0xf9, 0x23, 0x1f, 0x97, 0x2a, 0x87, 0xcb, 0x9d, 0x43, 0x51, 0x4d, 0x06, 0x4b, 0x75, 0x08, 0x58, + 0x10, 0x9c, 0xac, 0xad, 0x37, 0x2a, 0xb5, 0x6a, 0x73, 0xa3, 0x5e, 0x5e, 0x6c, 0x2e, 0x78, 0xe0, + 0xd4, 0x0b, 0x32, 0xfa, 0xaa, 0x04, 0x13, 0x94, 0x2d, 0x1b, 0x3d, 0x39, 0x80, 0x60, 0xa0, 0xfb, + 0x2a, 0x7a, 0x93, 0x70, 0x30, 0x0a, 0x5f, 0x10, 0xac, 0x9c, 0x88, 0x7e, 0xea, 0x19, 0x30, 0x41, + 0x41, 0xf6, 0x56, 0xb4, 0x4e, 0x47, 0xf4, 0x52, 0x8c, 0x8c, 0xea, 0x65, 0x17, 0x0c, 0x4c, 0x31, + 0x80, 0x8d, 0xf4, 0x47, 0x96, 0xe7, 0x64, 0xa9, 0x19, 0x7c, 0x5e, 0x77, 0xb6, 0x89, 0x77, 0x2b, + 0xfa, 0x21, 0x91, 0xe5, 0xc5, 0x9b, 0x21, 0xb7, 0xe7, 0xe6, 0x1e, 0xe0, 0x29, 0x4c, 0x33, 0xa1, + 0x5f, 0x17, 0x8e, 0x83, 0xca, 0xe9, 0xa7, 0xcf, 0x53, 0x04, 0x38, 0x6b, 0x90, 0xed, 0xe8, 0xb6, + 0xc3, 0xc6, 0x8f, 0x3b, 0x12, 0x11, 0xf2, 0x1e, 0x2a, 0x0e, 0xde, 0x51, 0x09, 0x19, 0x74, 0x3f, + 0xcc, 0x84, 0x53, 0x05, 0xbc, 0xa5, 0x4f, 0xc1, 0x04, 0x3b, 0xc5, 0xc7, 0x96, 0x58, 0xbd, 0x57, + 0xc1, 0x65, 0x4d, 0xa1, 0xda, 0xa6, 0xaf, 0x03, 0xff, 0xf7, 0x51, 0x98, 0x58, 0xd1, 0x6d, 0xc7, + 0xb4, 0x2e, 0xa3, 0x47, 0x33, 0x30, 0x71, 0x0e, 0x5b, 0xb6, 0x6e, 0x1a, 0xfb, 0x5c, 0x0d, 0xce, + 0xc0, 0x74, 0xd7, 0xc2, 0x7b, 0xba, 0xb9, 0x6b, 0x07, 0x8b, 0x33, 0xe1, 0x24, 0x05, 0xc1, 0xa4, + 0xb6, 0xeb, 0x6c, 0x9b, 0x56, 0x10, 0xfc, 0xc3, 0x7b, 0x57, 0x4e, 0x03, 0xd0, 0xe7, 0xaa, 0xb6, + 0x83, 0x99, 0x03, 0x45, 0x28, 0x45, 0x51, 0x20, 0xeb, 0xe8, 0x3b, 0x98, 0x45, 0x03, 0x26, 0xcf, + 0xae, 0x80, 0x49, 0x64, 0x3d, 0x16, 0xc1, 0x50, 0x56, 0xbd, 0x57, 0xf4, 0x59, 0x19, 0xa6, 0x97, + 0xb1, 0xc3, 0x58, 0xb5, 0xd1, 0x8b, 0x32, 0x42, 0x17, 0x70, 0xb8, 0x63, 0x6c, 0x47, 0xb3, 0xbd, + 0xff, 0xfc, 0x25, 0x58, 0x3e, 0x31, 0x08, 0x4d, 0x2c, 0x87, 0xe3, 0x92, 0x93, 0x38, 0x75, 0x4e, + 0x85, 0xba, 0xc1, 0xb2, 0xcc, 0x6c, 0x13, 0x64, 0xff, 0x07, 0xf4, 0x76, 0x49, 0xf4, 0x8c, 0x37, + 0x93, 0xfd, 0x7c, 0xa8, 0x3e, 0x91, 0xdd, 0xd1, 0xe4, 0x1e, 0xcb, 0xb1, 0x2f, 0xe4, 0x7c, 0x98, + 0x12, 0x23, 0xa3, 0xfa, 0xb9, 0x05, 0x4f, 0x87, 0x0f, 0xe6, 0x24, 0x7d, 0x6d, 0xfc, 0xa6, 0x0c, + 0xd3, 0xf5, 0x6d, 0xf3, 0x92, 0x27, 0xc7, 0x1f, 0x15, 0x03, 0xf6, 0x1a, 0x98, 0xda, 0xeb, 0x01, + 0x35, 0x48, 0x88, 0xbe, 0x12, 0x1f, 0x3d, 0x5f, 0x4e, 0x0a, 0x53, 0x88, 0xb9, 0x91, 0x5f, 0x58, + 0xaf, 0x3c, 0x1d, 0x26, 0x18, 0xd7, 0x6c, 0xc9, 0x25, 0x1e, 0x60, 0x2f, 0x73, 0xb8, 0x82, 0x59, + 0xbe, 0x82, 0xc9, 0x90, 0x8f, 0xae, 0x5c, 0xfa, 0xc8, 0xff, 0x89, 0x44, 0x62, 0x83, 0x78, 0xc0, + 0x97, 0x46, 0x00, 0x3c, 0xfa, 0x56, 0x46, 0x74, 0x61, 0xd2, 0x97, 0x80, 0xcf, 0xc1, 0x81, 0x2e, + 0xd7, 0x19, 0x48, 0x2e, 0x7d, 0x79, 0xfe, 0x5a, 0x16, 0x66, 0x16, 0xf5, 0xcd, 0x4d, 0xbf, 0x93, + 0x7c, 0xb1, 0x60, 0x27, 0x19, 0xed, 0x0e, 0xe0, 0xda, 0xb9, 0xbb, 0x96, 0x85, 0x0d, 0xaf, 0x52, + 0xac, 0x39, 0xf5, 0xa4, 0x2a, 0x37, 0xc2, 0x51, 0x6f, 0x5c, 0x08, 0x77, 0x94, 0x53, 0x6a, 0x6f, + 0x32, 0xfa, 0x86, 0xf0, 0xae, 0x96, 0x27, 0xd1, 0x70, 0x95, 0x22, 0x1a, 0xe0, 0x5d, 0x30, 0xbb, + 0x4d, 0x73, 0x93, 0xa9, 0xbf, 0xd7, 0x59, 0x9e, 0xec, 0x89, 0xbd, 0xbc, 0x86, 0x6d, 0x5b, 0xdb, + 0xc2, 0x2a, 0x9f, 0xb9, 0xa7, 0xf9, 0xca, 0x49, 0x6e, 0x12, 0x13, 0xdb, 0x20, 0x13, 0xa8, 0xc9, + 0x18, 0xb4, 0xe3, 0x2c, 0x64, 0x97, 0xf4, 0x0e, 0x46, 0x3f, 0x23, 0xc1, 0x94, 0x8a, 0x5b, 0xa6, + 0xd1, 0x72, 0xdf, 0x42, 0xce, 0x41, 0xff, 0x98, 0x11, 0xbd, 0x41, 0xd3, 0xa5, 0x33, 0xef, 0xd3, + 0x88, 0x68, 0x37, 0x62, 0x37, 0x65, 0xc6, 0x92, 0x1a, 0xc3, 0x7d, 0x27, 0xee, 0xd4, 0x63, 0x73, + 0xb3, 0x63, 0x6a, 0xdc, 0xe2, 0x57, 0xaf, 0x29, 0x74, 0x13, 0x14, 0xbc, 0x23, 0x37, 0xa6, 0xb3, + 0xae, 0x1b, 0x86, 0x7f, 0xa6, 0x7b, 0x5f, 0x3a, 0xbf, 0x6f, 0x1b, 0x1b, 0x16, 0x87, 0xd4, 0x9d, + 0x95, 0x1e, 0xa1, 0xd9, 0x37, 0xc0, 0xdc, 0x85, 0xcb, 0x0e, 0xb6, 0x59, 0x2e, 0x56, 0x6c, 0x56, + 0xed, 0x49, 0x0d, 0x05, 0xb5, 0x8e, 0x0b, 0x9f, 0x13, 0x53, 0x60, 0x32, 0x51, 0xaf, 0x0c, 0x31, + 0x03, 0x3c, 0x0e, 0x85, 0x6a, 0x6d, 0xb1, 0x4c, 0x7c, 0xd5, 0x3c, 0xef, 0x9f, 0x2d, 0xf4, 0x0b, + 0x32, 0xcc, 0x10, 0x67, 0x12, 0x0f, 0x85, 0xeb, 0x04, 0xe6, 0x23, 0xe8, 0x31, 0x61, 0x3f, 0x36, + 0x52, 0xe5, 0x70, 0x01, 0xd1, 0x82, 0xde, 0xd4, 0x3b, 0xbd, 0x82, 0xce, 0xa9, 0x3d, 0xa9, 0x7d, + 0x00, 0x91, 0xfb, 0x02, 0xf2, 0xbb, 0x42, 0xce, 0x6c, 0x83, 0xb8, 0x3b, 0x2c, 0x54, 0x7e, 0x4f, + 0x86, 0x69, 0x77, 0x92, 0xe2, 0x81, 0x52, 0xe3, 0x40, 0x31, 0x8d, 0xce, 0xe5, 0x60, 0x59, 0xc4, + 0x7b, 0x4d, 0xd4, 0x48, 0xfe, 0x52, 0x78, 0xe6, 0x4e, 0x44, 0x14, 0xe2, 0x65, 0x4c, 0xf8, 0xbd, + 0x5b, 0x68, 0x3e, 0x3f, 0x80, 0xb9, 0xc3, 0x82, 0xef, 0xcb, 0x39, 0xc8, 0x6f, 0x74, 0x09, 0x72, + 0xbf, 0x2e, 0x8b, 0x04, 0x88, 0xdf, 0x77, 0x90, 0xc1, 0x35, 0xb3, 0x3a, 0x66, 0x4b, 0xeb, 0xac, + 0x07, 0x27, 0xc2, 0x82, 0x04, 0xe5, 0x4e, 0xe6, 0xdb, 0x48, 0x4f, 0x37, 0xde, 0x10, 0x1b, 0x3b, + 0x9d, 0xc8, 0x28, 0x74, 0x68, 0xe4, 0x66, 0x38, 0xd6, 0xd6, 0x6d, 0xed, 0x42, 0x07, 0x97, 0x8d, + 0x96, 0x75, 0x99, 0x8a, 0x83, 0x4d, 0xab, 0xf6, 0x7d, 0x50, 0xee, 0x86, 0x9c, 0xed, 0x5c, 0xee, + 0xd0, 0x79, 0x62, 0xf8, 0x8c, 0x49, 0x64, 0x51, 0x75, 0x37, 0xbb, 0x4a, 0xff, 0x0a, 0xbb, 0x28, + 0x4d, 0x08, 0x5e, 0x9f, 0xfd, 0x54, 0xc8, 0x9b, 0x96, 0xbe, 0xa5, 0xd3, 0xeb, 0x90, 0xe6, 0xf6, + 0x85, 0x08, 0xa4, 0xa6, 0x40, 0x8d, 0x64, 0x51, 0x59, 0x56, 0xe5, 0xe9, 0x30, 0xa5, 0xef, 0x68, + 0x5b, 0xf8, 0x01, 0xdd, 0xa0, 0x07, 0x28, 0xe7, 0x6e, 0x3f, 0xb5, 0xef, 0xf8, 0x0c, 0xfb, 0xae, + 0x06, 0x59, 0xd1, 0xbb, 0x25, 0xd1, 0x38, 0x46, 0xa4, 0x6e, 0x14, 0xd4, 0xb1, 0x5c, 0x23, 0x8e, + 0x5e, 0x21, 0x14, 0x61, 0x28, 0x9a, 0xad, 0xf4, 0x07, 0xef, 0x4f, 0x4b, 0x30, 0xb9, 0x68, 0x5e, + 0x32, 0x88, 0xa2, 0xdf, 0x21, 0x66, 0xeb, 0xf6, 0x39, 0xe4, 0xc8, 0xdf, 0xd2, 0x19, 0x7b, 0xa2, + 0x81, 0xd4, 0xd6, 0x2b, 0x32, 0x02, 0x86, 0xd8, 0x96, 0x23, 0x78, 0x77, 0x62, 0x5c, 0x39, 0xe9, + 0xcb, 0xf5, 0x4f, 0x65, 0xc8, 0x2e, 0x5a, 0x66, 0x17, 0xbd, 0x31, 0x93, 0xc0, 0x65, 0xa1, 0x6d, + 0x99, 0xdd, 0x06, 0xb9, 0xfc, 0x2c, 0x38, 0xc6, 0x11, 0x4e, 0x53, 0xee, 0x80, 0xc9, 0xae, 0x69, + 0xeb, 0x8e, 0x37, 0x8d, 0x98, 0xbb, 0xfd, 0x09, 0x7d, 0x5b, 0xf3, 0x3a, 0xcb, 0xa4, 0xfa, 0xd9, + 0xdd, 0x5e, 0x9b, 0x88, 0xd0, 0x95, 0x8b, 0x2b, 0x46, 0xef, 0x02, 0xb8, 0x9e, 0x54, 0xf4, 0x92, + 0x30, 0x92, 0xcf, 0xe4, 0x91, 0x7c, 0x62, 0x1f, 0x09, 0x5b, 0x66, 0x77, 0x24, 0x9b, 0x8c, 0x2f, + 0xf3, 0x51, 0xbd, 0x87, 0x43, 0xf5, 0x26, 0xa1, 0x32, 0xd3, 0x47, 0xf4, 0xdd, 0x59, 0x00, 0x62, + 0x66, 0x6c, 0xb8, 0x13, 0x20, 0x31, 0x1b, 0xeb, 0xa7, 0xb2, 0x21, 0x59, 0x16, 0x79, 0x59, 0x3e, + 0x39, 0xc2, 0x8a, 0x21, 0xe4, 0x23, 0x24, 0x5a, 0x84, 0xdc, 0xae, 0xfb, 0x99, 0x49, 0x54, 0x90, + 0x04, 0x79, 0x55, 0xe9, 0x9f, 0xe8, 0x4f, 0x32, 0x90, 0x23, 0x09, 0xca, 0x69, 0x00, 0x32, 0xb0, + 0xd3, 0x03, 0x41, 0x19, 0x32, 0x84, 0x87, 0x52, 0x88, 0xb6, 0xea, 0x6d, 0xf6, 0x99, 0x9a, 0xcc, + 0x41, 0x82, 0xfb, 0x37, 0x19, 0xee, 0x09, 0x2d, 0x66, 0x00, 0x84, 0x52, 0xdc, 0xbf, 0xc9, 0xdb, + 0x2a, 0xde, 0xa4, 0x71, 0xa9, 0xb3, 0x6a, 0x90, 0xe0, 0xff, 0xbd, 0xea, 0xdf, 0x66, 0xe6, 0xfd, + 0x4d, 0x52, 0xdc, 0xc9, 0x30, 0x51, 0xcb, 0x85, 0xa0, 0x88, 0x3c, 0xc9, 0xd4, 0x9b, 0x8c, 0x5e, + 0xed, 0xab, 0xcd, 0x22, 0xa7, 0x36, 0xb7, 0x26, 0x10, 0x6f, 0xfa, 0xca, 0xf3, 0xc5, 0x1c, 0x4c, + 0x55, 0xcd, 0x36, 0xd3, 0x9d, 0xd0, 0x84, 0xf1, 0x23, 0xb9, 0x44, 0x13, 0x46, 0x9f, 0x46, 0x84, + 0x82, 0xdc, 0xc7, 0x2b, 0x88, 0x18, 0x85, 0xb0, 0x7e, 0x28, 0x0b, 0x90, 0x27, 0xda, 0xbb, 0xff, + 0x9a, 0xac, 0x38, 0x12, 0x44, 0xb4, 0x2a, 0xfb, 0xf3, 0x3f, 0x9c, 0x8e, 0xfd, 0x57, 0xc8, 0x91, + 0x0a, 0xc6, 0xec, 0xee, 0xf0, 0x15, 0x95, 0xe2, 0x2b, 0x2a, 0xc7, 0x57, 0x34, 0xdb, 0x5b, 0xd1, + 0x24, 0xeb, 0x00, 0x51, 0x1a, 0x92, 0xbe, 0x8e, 0xff, 0xc3, 0x04, 0x40, 0x55, 0xdb, 0xd3, 0xb7, + 0xe8, 0xee, 0xf0, 0x67, 0xbd, 0xf9, 0x0f, 0xdb, 0xc7, 0xfd, 0x6f, 0xa1, 0x81, 0xf0, 0x0e, 0x98, + 0x60, 0xe3, 0x1e, 0xab, 0xc8, 0xb5, 0x5c, 0x45, 0x02, 0x2a, 0xd4, 0x2c, 0x7d, 0xd8, 0x51, 0xbd, + 0xfc, 0xdc, 0x8d, 0xbe, 0x52, 0xcf, 0x8d, 0xbe, 0xfd, 0xf7, 0x20, 0x22, 0xee, 0xf9, 0x45, 0xef, + 0x10, 0xf6, 0xe8, 0x0f, 0xf1, 0x13, 0xaa, 0x51, 0x44, 0x13, 0x7c, 0x2a, 0x4c, 0x98, 0xfe, 0x86, + 0xb6, 0x1c, 0xb9, 0x0e, 0x56, 0x31, 0x36, 0x4d, 0xd5, 0xcb, 0x29, 0xb8, 0xf9, 0x25, 0xc4, 0xc7, + 0x58, 0x0e, 0xcd, 0x9c, 0x5c, 0xf6, 0x62, 0x7c, 0xb9, 0xf5, 0x38, 0xaf, 0x3b, 0xdb, 0xab, 0xba, + 0x71, 0xd1, 0x46, 0xff, 0x59, 0xcc, 0x82, 0x0c, 0xe1, 0x2f, 0x25, 0xc3, 0x9f, 0x8f, 0xd9, 0x51, + 0xe7, 0x51, 0xbb, 0x3b, 0x8a, 0x4a, 0x7f, 0x6e, 0x23, 0x00, 0xbc, 0x13, 0xf2, 0x94, 0x51, 0xd6, + 0x89, 0x9e, 0x8d, 0xc4, 0xcf, 0xa7, 0xa4, 0xb2, 0x3f, 0xd0, 0xdb, 0x7d, 0x1c, 0xcf, 0x71, 0x38, + 0x2e, 0x1c, 0x88, 0xb3, 0xd4, 0x21, 0x3d, 0x7b, 0x1b, 0x4c, 0x30, 0x49, 0x2b, 0x73, 0xe1, 0x56, + 0x5c, 0x38, 0xa2, 0x00, 0xe4, 0xd7, 0xcc, 0x3d, 0xdc, 0x30, 0x0b, 0x19, 0xf7, 0xd9, 0xe5, 0xaf, + 0x61, 0x16, 0x24, 0xf4, 0xf2, 0x49, 0x98, 0xf4, 0x83, 0x2b, 0x7d, 0x5a, 0x82, 0x42, 0xc9, 0xc2, + 0x9a, 0x83, 0x97, 0x2c, 0x73, 0x87, 0xd6, 0x48, 0xdc, 0x3b, 0xf4, 0x97, 0x85, 0x5d, 0x3c, 0xfc, + 0xa0, 0x47, 0xbd, 0x85, 0x45, 0x60, 0x49, 0x17, 0x21, 0x25, 0x6f, 0x11, 0x12, 0xbd, 0x41, 0xc8, + 0xe5, 0x43, 0xb4, 0x94, 0xf4, 0x9b, 0xda, 0xc7, 0x25, 0xc8, 0x95, 0x3a, 0xa6, 0x81, 0xc3, 0x47, + 0x98, 0x06, 0x9e, 0x95, 0xe9, 0xbf, 0x13, 0x81, 0x9e, 0x23, 0x89, 0xda, 0x1a, 0x81, 0x00, 0xdc, + 0xb2, 0x05, 0x65, 0x2b, 0x36, 0x48, 0xc5, 0x92, 0x4e, 0x5f, 0xa0, 0x5f, 0x95, 0x60, 0x8a, 0xc6, + 0xc5, 0x29, 0x76, 0x3a, 0xe8, 0x09, 0x81, 0x50, 0xfb, 0x04, 0xa8, 0x42, 0xbf, 0x2b, 0xec, 0xa2, + 0xef, 0xd7, 0xca, 0xa7, 0x9d, 0x20, 0x40, 0x50, 0x32, 0x8f, 0x71, 0xb1, 0xbd, 0xb4, 0x81, 0x0c, + 0xa5, 0x2f, 0xea, 0xcf, 0x48, 0xae, 0x01, 0x60, 0x5c, 0x5c, 0xb7, 0xf0, 0x9e, 0x8e, 0x2f, 0xa1, + 0xab, 0x03, 0x61, 0xef, 0x0f, 0xfa, 0xf1, 0x3a, 0xe1, 0x45, 0x9c, 0x10, 0xc9, 0xc8, 0xad, 0xac, + 0xe9, 0x4e, 0x90, 0x89, 0xf5, 0xe2, 0xbd, 0x91, 0x58, 0x42, 0x64, 0xd4, 0x70, 0x76, 0xc1, 0x35, + 0x9b, 0x68, 0x2e, 0xd2, 0x17, 0xec, 0xfb, 0x26, 0x60, 0x72, 0xc3, 0xb0, 0xbb, 0x1d, 0xcd, 0xde, + 0x46, 0xdf, 0x96, 0x21, 0x4f, 0x2f, 0x67, 0x43, 0x3f, 0xc0, 0xc5, 0x16, 0xf8, 0xb1, 0x5d, 0x6c, + 0x79, 0x2e, 0x38, 0xf4, 0xa5, 0xff, 0xdd, 0xf1, 0xe8, 0xdd, 0xb2, 0xe8, 0x24, 0xd5, 0x2b, 0x34, + 0x74, 0x4b, 0x7f, 0xff, 0xe3, 0xec, 0x5d, 0xbd, 0xe5, 0xec, 0x5a, 0xfe, 0x4d, 0xe4, 0x4f, 0x11, + 0xa3, 0xb2, 0x4e, 0xff, 0x52, 0xfd, 0xdf, 0x91, 0x06, 0x13, 0x2c, 0x71, 0xdf, 0x76, 0xd2, 0xfe, + 0xf3, 0xb7, 0x27, 0x21, 0xaf, 0x59, 0x8e, 0x6e, 0x3b, 0x6c, 0x83, 0x95, 0xbd, 0xb9, 0xdd, 0x25, + 0x7d, 0xda, 0xb0, 0x3a, 0x5e, 0x14, 0x12, 0x3f, 0x01, 0xfd, 0x9e, 0xd0, 0xfc, 0x31, 0xbe, 0xe6, + 0xc9, 0x20, 0x7f, 0x60, 0x88, 0x35, 0xea, 0x2b, 0xe1, 0x0a, 0xb5, 0xd8, 0x28, 0x37, 0x69, 0xd0, + 0x0a, 0x3f, 0x3e, 0x45, 0x1b, 0xbd, 0x4d, 0x0e, 0xad, 0xdf, 0x5d, 0xe6, 0xc6, 0x08, 0x26, 0xc5, + 0x60, 0x8c, 0xf0, 0x13, 0x62, 0x76, 0xab, 0xb9, 0x45, 0x58, 0x59, 0x7c, 0x11, 0xf6, 0xb7, 0x85, + 0x77, 0x93, 0x7c, 0x51, 0x0e, 0x58, 0x03, 0x8c, 0xbb, 0xbc, 0xe9, 0x3d, 0x42, 0x3b, 0x43, 0x83, + 0x4a, 0x3a, 0x44, 0xd8, 0x5e, 0x3b, 0x01, 0x13, 0xcb, 0x5a, 0xa7, 0x83, 0xad, 0xcb, 0xee, 0x90, + 0x54, 0xf0, 0x38, 0x5c, 0xd3, 0x0c, 0x7d, 0x13, 0xdb, 0x4e, 0x7c, 0x67, 0xf9, 0x0e, 0xe1, 0xc0, + 0xc0, 0xac, 0x8c, 0xf9, 0x5e, 0xfa, 0x11, 0x32, 0xbf, 0x05, 0xb2, 0xba, 0xb1, 0x69, 0xb2, 0x2e, + 0xb3, 0x77, 0xd5, 0xde, 0xfb, 0x99, 0x4c, 0x5d, 0x48, 0x46, 0xc1, 0xd8, 0xc0, 0x82, 0x5c, 0xa4, + 0xdf, 0x73, 0xfe, 0x4e, 0x16, 0x66, 0x3d, 0x26, 0x2a, 0x46, 0x1b, 0x3f, 0x1c, 0x5e, 0x8a, 0xf9, + 0x85, 0xac, 0xe8, 0x71, 0xb0, 0xde, 0xfa, 0x10, 0x52, 0x11, 0x22, 0x6d, 0x00, 0xb4, 0x34, 0x07, + 0x6f, 0x99, 0x96, 0xee, 0xf7, 0x87, 0x4f, 0x4b, 0x42, 0xad, 0x44, 0xff, 0xbe, 0xac, 0x86, 0xe8, + 0x28, 0x77, 0xc3, 0x34, 0xf6, 0xcf, 0xdf, 0x7b, 0x4b, 0x35, 0xb1, 0x78, 0x85, 0xf3, 0xa3, 0xcf, + 0x08, 0x9d, 0x3a, 0x13, 0xa9, 0x66, 0x32, 0xcc, 0x9a, 0xc3, 0xb5, 0xa1, 0x8d, 0xea, 0x5a, 0x51, + 0xad, 0xaf, 0x14, 0x57, 0x57, 0x2b, 0xd5, 0x65, 0x3f, 0xf0, 0x8b, 0x02, 0x73, 0x8b, 0xb5, 0xf3, + 0xd5, 0x50, 0x64, 0x9e, 0x2c, 0x5a, 0x87, 0x49, 0x4f, 0x5e, 0xfd, 0x7c, 0x31, 0xc3, 0x32, 0x63, + 0xbe, 0x98, 0xa1, 0x24, 0xd7, 0x38, 0xd3, 0x5b, 0xbe, 0x83, 0x0e, 0x79, 0x46, 0x7f, 0xac, 0x41, + 0x8e, 0xac, 0xa9, 0xa3, 0xb7, 0x90, 0x6d, 0xc0, 0x6e, 0x47, 0x6b, 0x61, 0xb4, 0x93, 0xc0, 0x1a, + 0xf7, 0x6e, 0xaa, 0x90, 0xf6, 0xdd, 0x54, 0x41, 0x1e, 0x99, 0xd5, 0x77, 0xbc, 0xdf, 0x3a, 0xbe, + 0x4a, 0xb3, 0xf0, 0x07, 0xb4, 0x62, 0x77, 0x57, 0xe8, 0xf2, 0x3f, 0x63, 0x33, 0x42, 0x25, 0xa3, + 0x79, 0x4a, 0x66, 0x89, 0x8a, 0xed, 0xc3, 0xc4, 0x71, 0x34, 0x86, 0xdb, 0xd4, 0xb3, 0x90, 0xab, + 0x77, 0x3b, 0xba, 0x83, 0x7e, 0x55, 0x1a, 0x09, 0x66, 0xf4, 0x76, 0x11, 0x79, 0xe0, 0xed, 0x22, + 0xc1, 0xae, 0x6b, 0x56, 0x60, 0xd7, 0xb5, 0x81, 0x1f, 0x76, 0xf8, 0x5d, 0xd7, 0x3b, 0x58, 0xf0, + 0x36, 0xba, 0x67, 0xfb, 0xc4, 0x3e, 0x22, 0x25, 0xd5, 0xea, 0x13, 0x15, 0xf0, 0xec, 0x6d, 0x2c, + 0x38, 0x19, 0x40, 0x7e, 0xa1, 0xd6, 0x68, 0xd4, 0xd6, 0x0a, 0x47, 0x48, 0x54, 0x9b, 0xda, 0x3a, + 0x0d, 0x15, 0x53, 0xa9, 0x56, 0xcb, 0x6a, 0x41, 0x22, 0xe1, 0xd2, 0x2a, 0x8d, 0xd5, 0x72, 0x41, + 0xe6, 0x43, 0xcd, 0xc7, 0x9a, 0xdf, 0x7c, 0xd9, 0x69, 0xaa, 0x97, 0x98, 0x21, 0x1e, 0xcd, 0x4f, + 0xfa, 0xca, 0xf5, 0x4b, 0x32, 0xe4, 0xd6, 0xb0, 0xb5, 0x85, 0xd1, 0x8f, 0x25, 0xd8, 0xe4, 0xdb, + 0xd4, 0x2d, 0x9b, 0x06, 0x97, 0x0b, 0x36, 0xf9, 0xc2, 0x69, 0xca, 0xf5, 0x30, 0x6b, 0xe3, 0x96, + 0x69, 0xb4, 0xbd, 0x4c, 0xb4, 0x3f, 0xe2, 0x13, 0xf9, 0x6b, 0xfe, 0x05, 0x20, 0x23, 0x8c, 0x8e, + 0x64, 0xa7, 0x2e, 0x09, 0x30, 0xfd, 0x4a, 0x4d, 0x1f, 0x98, 0x6f, 0xc8, 0xee, 0x4f, 0xdd, 0xcb, + 0xe8, 0xa5, 0xc2, 0xbb, 0xaf, 0x37, 0x43, 0xfe, 0x82, 0x17, 0xa5, 0x58, 0x8e, 0xec, 0x8f, 0x59, + 0x1e, 0x65, 0x01, 0x8e, 0xd9, 0xb8, 0x83, 0x5b, 0x0e, 0x6e, 0xbb, 0x4d, 0x57, 0x1d, 0xd8, 0x29, + 0xec, 0xcf, 0x8e, 0xfe, 0x2c, 0x0c, 0xe0, 0x5d, 0x3c, 0x80, 0x37, 0xf4, 0x11, 0xa5, 0x5b, 0xa1, + 0x68, 0x5b, 0xd9, 0xad, 0x46, 0xbd, 0x63, 0xfa, 0x8b, 0xe2, 0xde, 0xbb, 0xfb, 0x6d, 0xdb, 0xd9, + 0xe9, 0x90, 0x6f, 0xec, 0x80, 0x81, 0xf7, 0xae, 0xcc, 0xc3, 0x84, 0x66, 0x5c, 0x26, 0x9f, 0xb2, + 0x31, 0xb5, 0xf6, 0x32, 0xa1, 0x97, 0xfb, 0xc8, 0xdf, 0xcb, 0x21, 0xff, 0x64, 0x31, 0x76, 0xd3, + 0x07, 0xfe, 0x27, 0x27, 0x20, 0xb7, 0xae, 0xd9, 0x0e, 0x46, 0xff, 0x97, 0x2c, 0x8a, 0xfc, 0x0d, + 0x30, 0xb7, 0x69, 0xb6, 0x76, 0x6d, 0xdc, 0xe6, 0x1b, 0x65, 0x4f, 0xea, 0x28, 0x30, 0x57, 0x6e, + 0x82, 0x82, 0x97, 0xc8, 0xc8, 0x7a, 0xdb, 0xf0, 0xfb, 0xd2, 0x49, 0xe0, 0x72, 0x7b, 0x5d, 0xb3, + 0x9c, 0xda, 0x26, 0x49, 0xf3, 0x03, 0x97, 0x87, 0x13, 0x39, 0xe8, 0xf3, 0x31, 0xd0, 0x4f, 0x44, + 0x43, 0x3f, 0x29, 0x00, 0xbd, 0x52, 0x84, 0xc9, 0x4d, 0xbd, 0x83, 0xc9, 0x0f, 0x53, 0xe4, 0x87, + 0x7e, 0x63, 0x12, 0x91, 0xbd, 0x3f, 0x26, 0x2d, 0xe9, 0x1d, 0xac, 0xfa, 0xbf, 0x79, 0x13, 0x19, + 0x08, 0x26, 0x32, 0xab, 0xd4, 0x9f, 0xd6, 0x35, 0xbc, 0x0c, 0x6d, 0x07, 0x7b, 0x8b, 0x6f, 0x06, + 0x3b, 0xdc, 0xd2, 0xd6, 0x1c, 0x8d, 0x80, 0x31, 0xa3, 0x92, 0x67, 0xde, 0x2f, 0x44, 0xee, 0xf5, + 0x0b, 0x79, 0x9e, 0x9c, 0xac, 0x47, 0xf4, 0x98, 0x8d, 0x68, 0x51, 0x17, 0x3c, 0x80, 0xa8, 0xa5, + 0xe8, 0xbf, 0xbb, 0xc0, 0xb4, 0x34, 0x0b, 0x3b, 0xeb, 0x61, 0x4f, 0x8c, 0x9c, 0xca, 0x27, 0x12, + 0x57, 0x3e, 0xbb, 0xae, 0xed, 0xd0, 0x40, 0xe7, 0x25, 0xf7, 0x1b, 0x73, 0xd1, 0xda, 0x97, 0x1e, + 0xf4, 0xbf, 0xb9, 0x51, 0xf7, 0xbf, 0xfd, 0xea, 0x98, 0x7e, 0x33, 0x7c, 0x65, 0x16, 0xe4, 0xd2, + 0xae, 0xf3, 0xb8, 0xee, 0x7e, 0xbf, 0x23, 0xec, 0xe7, 0xc2, 0xfa, 0xb3, 0xc8, 0x7b, 0xfd, 0xc7, + 0xd4, 0xfb, 0x26, 0xd4, 0x12, 0x31, 0x7f, 0x9a, 0xa8, 0xba, 0xa5, 0xaf, 0x23, 0x6f, 0x94, 0x7d, + 0x07, 0xcb, 0x47, 0x32, 0x07, 0x37, 0xcd, 0x11, 0xed, 0x9f, 0x42, 0x3d, 0x83, 0xff, 0xee, 0x75, + 0x3c, 0x59, 0x2e, 0x56, 0x1f, 0xd9, 0x5e, 0x27, 0xa2, 0x9c, 0x51, 0xe9, 0x0b, 0xfa, 0x35, 0x61, + 0xb7, 0x73, 0x2a, 0xb6, 0x58, 0x57, 0xc2, 0x64, 0x36, 0x95, 0xd8, 0xdd, 0xad, 0x31, 0xc5, 0xa6, + 0x0f, 0xd8, 0xd7, 0xc3, 0xae, 0x82, 0xc5, 0x03, 0x23, 0x86, 0x5e, 0x21, 0xbc, 0x1d, 0x45, 0xab, + 0x3d, 0x60, 0xbd, 0x30, 0x99, 0xbc, 0xc5, 0x36, 0xab, 0x62, 0x0b, 0x4e, 0x5f, 0xe2, 0x5f, 0x93, + 0x21, 0x4f, 0xb7, 0x20, 0xd1, 0xeb, 0x33, 0x09, 0x2e, 0xbd, 0x77, 0x78, 0x17, 0x42, 0xff, 0x3d, + 0xc9, 0x9a, 0x03, 0xe7, 0x6a, 0x98, 0x4d, 0xe4, 0x6a, 0xc8, 0x9f, 0xe3, 0x14, 0x68, 0x47, 0xb4, + 0x8e, 0x29, 0x4f, 0x27, 0x93, 0xb4, 0xb0, 0xbe, 0x0c, 0xa5, 0x8f, 0xf7, 0x4f, 0xe7, 0x60, 0x86, + 0x16, 0x7d, 0x5e, 0x6f, 0x6f, 0x61, 0x07, 0xbd, 0x4d, 0xfa, 0xee, 0x41, 0x5d, 0xa9, 0xc2, 0xcc, + 0x25, 0xc2, 0x36, 0xbd, 0x91, 0x85, 0xad, 0x5c, 0xdc, 0x14, 0xbb, 0xee, 0x41, 0xeb, 0xe9, 0xdd, + 0xe1, 0xc2, 0xfd, 0xef, 0xca, 0x98, 0x2e, 0xf8, 0x53, 0x07, 0xae, 0x3c, 0x31, 0xb2, 0xc2, 0x49, + 0xca, 0x49, 0xc8, 0xef, 0xe9, 0xf8, 0x52, 0xa5, 0xcd, 0xac, 0x5b, 0xf6, 0x86, 0xfe, 0x40, 0x78, + 0xdf, 0x36, 0x0c, 0x37, 0xe3, 0x25, 0x5d, 0x2d, 0x14, 0xdb, 0xbd, 0x1d, 0xc8, 0xd6, 0x18, 0xce, + 0x14, 0xf3, 0x77, 0xa3, 0x96, 0x12, 0x28, 0x62, 0x94, 0xe1, 0xcc, 0x87, 0xf2, 0x88, 0x3d, 0xb1, + 0x42, 0x05, 0x30, 0xe2, 0x6b, 0x53, 0xc5, 0xe2, 0x4b, 0x0c, 0x28, 0x3a, 0x7d, 0xc9, 0xbf, 0x5a, + 0x86, 0xa9, 0x3a, 0x76, 0x96, 0x74, 0xdc, 0x69, 0xdb, 0xc8, 0x3a, 0xb8, 0x69, 0x74, 0x0b, 0xe4, + 0x37, 0x09, 0xb1, 0x41, 0xe7, 0x16, 0x58, 0x36, 0xf4, 0x4a, 0x49, 0x74, 0x47, 0x98, 0xad, 0xbe, + 0x79, 0xdc, 0x8e, 0x04, 0x26, 0x31, 0x8f, 0xde, 0xf8, 0x92, 0xc7, 0x10, 0xd8, 0x56, 0x86, 0x19, + 0x76, 0x99, 0x62, 0xb1, 0xa3, 0x6f, 0x19, 0x68, 0x77, 0x04, 0x2d, 0x44, 0xb9, 0x15, 0x72, 0x9a, + 0x4b, 0x8d, 0x6d, 0xbd, 0xa2, 0xbe, 0x9d, 0x27, 0x29, 0x4f, 0xa5, 0x19, 0x13, 0x84, 0x91, 0x0c, + 0x14, 0xdb, 0xe3, 0x79, 0x8c, 0x61, 0x24, 0x07, 0x16, 0x9e, 0x3e, 0x62, 0x5f, 0x90, 0xe1, 0x38, + 0x63, 0xe0, 0x1c, 0xb6, 0x1c, 0xbd, 0xa5, 0x75, 0x28, 0x72, 0x2f, 0xcc, 0x8c, 0x02, 0xba, 0x15, + 0x98, 0xdd, 0x0b, 0x93, 0x65, 0x10, 0x9e, 0xed, 0x0b, 0x21, 0xc7, 0x80, 0xca, 0xff, 0x98, 0x20, + 0x1c, 0x1f, 0x27, 0x55, 0x8e, 0xe6, 0x18, 0xc3, 0xf1, 0x09, 0x33, 0x91, 0x3e, 0xc4, 0x2f, 0x61, + 0xa1, 0x79, 0x82, 0xee, 0xf3, 0xb3, 0xc2, 0xd8, 0x6e, 0xc0, 0x34, 0xc1, 0x92, 0xfe, 0xc8, 0x96, + 0x21, 0x62, 0x94, 0xd8, 0xef, 0x77, 0xd8, 0x85, 0x61, 0xfe, 0xbf, 0x6a, 0x98, 0x0e, 0x3a, 0x0f, + 0x10, 0x7c, 0x0a, 0x77, 0xd2, 0x99, 0xa8, 0x4e, 0x5a, 0x12, 0xeb, 0xa4, 0x5f, 0x27, 0x1c, 0x2c, + 0xa5, 0x3f, 0xdb, 0x07, 0x57, 0x0f, 0xb1, 0x30, 0x19, 0x83, 0x4b, 0x4f, 0x5f, 0x2f, 0x5e, 0x9e, + 0xed, 0xbd, 0x35, 0xff, 0x83, 0x23, 0x99, 0x4f, 0x85, 0xfb, 0x03, 0xb9, 0xa7, 0x3f, 0x38, 0x80, + 0x25, 0x7d, 0x23, 0x1c, 0xa5, 0x45, 0x94, 0x7c, 0xb6, 0x72, 0x34, 0x14, 0x44, 0x4f, 0x32, 0xfa, + 0xd0, 0x10, 0x4a, 0x30, 0xe8, 0x4a, 0xff, 0xb8, 0x4e, 0x2e, 0x99, 0xb1, 0x9b, 0x54, 0x41, 0xa2, + 0x38, 0x1b, 0x83, 0x5b, 0x68, 0x96, 0x5a, 0xbb, 0x1b, 0xe4, 0x4e, 0x37, 0xf4, 0x17, 0xd9, 0x51, + 0x8c, 0x08, 0xf7, 0x41, 0x96, 0xb8, 0xb8, 0xcb, 0x91, 0x4b, 0x1a, 0x41, 0x91, 0xc1, 0x85, 0x7b, + 0xf8, 0x61, 0x67, 0xe5, 0x88, 0x4a, 0xfe, 0x54, 0x6e, 0x82, 0xa3, 0x17, 0xb4, 0xd6, 0xc5, 0x2d, + 0xcb, 0xdc, 0x25, 0xb7, 0x5f, 0x99, 0xec, 0x1a, 0x2d, 0x72, 0x1d, 0x21, 0xff, 0x41, 0xb9, 0xdd, + 0x33, 0x1d, 0x72, 0x83, 0x4c, 0x87, 0x95, 0x23, 0xcc, 0x78, 0x50, 0x6e, 0xf3, 0x3b, 0x9d, 0x7c, + 0x6c, 0xa7, 0xb3, 0x72, 0xc4, 0xeb, 0x76, 0x94, 0x45, 0x98, 0x6c, 0xeb, 0x7b, 0x64, 0xab, 0x9a, + 0xcc, 0xba, 0x06, 0x1d, 0x5d, 0x5e, 0xd4, 0xf7, 0xe8, 0xc6, 0xf6, 0xca, 0x11, 0xd5, 0xff, 0x53, + 0x59, 0x86, 0x29, 0xb2, 0x2d, 0x40, 0xc8, 0x4c, 0x26, 0x3a, 0x96, 0xbc, 0x72, 0x44, 0x0d, 0xfe, + 0x75, 0xad, 0x8f, 0x2c, 0x39, 0xfb, 0x71, 0xaf, 0xb7, 0xdd, 0x9e, 0x49, 0xb4, 0xdd, 0xee, 0xca, + 0x82, 0x6e, 0xb8, 0x9f, 0x84, 0x5c, 0x8b, 0x48, 0x58, 0x62, 0x12, 0xa6, 0xaf, 0xca, 0x5d, 0x90, + 0xdd, 0xd1, 0x2c, 0x6f, 0xf2, 0x7c, 0xc3, 0x60, 0xba, 0x6b, 0x9a, 0x75, 0xd1, 0x45, 0xd0, 0xfd, + 0x6b, 0x61, 0x02, 0x72, 0x44, 0x70, 0xfe, 0x03, 0x7a, 0x63, 0x96, 0x9a, 0x21, 0x25, 0xd3, 0x70, + 0x87, 0xfd, 0x86, 0xe9, 0x1d, 0x90, 0xf9, 0x83, 0xcc, 0x68, 0x2c, 0xc8, 0xbe, 0xd7, 0xcc, 0xcb, + 0x91, 0xd7, 0xcc, 0xf7, 0xdc, 0x77, 0x9c, 0xed, 0xbd, 0xef, 0x38, 0x58, 0x3e, 0xc8, 0x0d, 0x76, + 0x54, 0xf9, 0xb3, 0x21, 0x4c, 0x97, 0x5e, 0x41, 0x44, 0xcf, 0xc0, 0x3b, 0xba, 0x11, 0xaa, 0xb3, + 0xf7, 0x9a, 0xb0, 0x53, 0x4a, 0x6a, 0xd4, 0x0c, 0x60, 0x2f, 0xfd, 0xbe, 0xe9, 0xb7, 0xb2, 0x70, + 0x8a, 0xde, 0xaa, 0xbd, 0x87, 0x1b, 0x26, 0x7f, 0xdf, 0x24, 0xfa, 0xd8, 0x48, 0x94, 0xa6, 0xcf, + 0x80, 0x23, 0xf7, 0x1d, 0x70, 0xf6, 0x1d, 0x52, 0xce, 0x0e, 0x38, 0xa4, 0x9c, 0x4b, 0xb6, 0x72, + 0xf8, 0xde, 0xb0, 0xfe, 0xac, 0xf3, 0xfa, 0x73, 0x67, 0x04, 0x40, 0xfd, 0xe4, 0x32, 0x12, 0xfb, + 0xe6, 0x2d, 0xbe, 0xa6, 0xd4, 0x39, 0x4d, 0xb9, 0x77, 0x78, 0x46, 0xd2, 0xd7, 0x96, 0xdf, 0xcf, + 0xc2, 0x15, 0x01, 0x33, 0x55, 0x7c, 0x89, 0x29, 0xca, 0xa7, 0x47, 0xa2, 0x28, 0xc9, 0x63, 0x20, + 0xa4, 0xad, 0x31, 0x7f, 0x22, 0x7c, 0x76, 0xa8, 0x17, 0x28, 0x5f, 0x36, 0x11, 0xca, 0x72, 0x12, + 0xf2, 0xb4, 0x87, 0x61, 0xd0, 0xb0, 0xb7, 0x84, 0xdd, 0x8d, 0xd8, 0x89, 0x23, 0x51, 0xde, 0xc6, + 0xa0, 0x3f, 0x6c, 0x5d, 0xa3, 0xb1, 0x6b, 0x19, 0x15, 0xc3, 0x31, 0xd1, 0x4f, 0x8c, 0x44, 0x71, + 0x7c, 0x6f, 0x38, 0x79, 0x18, 0x6f, 0xb8, 0xa1, 0x56, 0x39, 0xbc, 0x1a, 0x1c, 0xca, 0x2a, 0x47, + 0x44, 0xe1, 0xe9, 0xe3, 0xf7, 0x66, 0x19, 0x4e, 0xb2, 0xc9, 0xd6, 0x02, 0x6f, 0x21, 0xa2, 0x07, + 0x47, 0x01, 0xe4, 0x71, 0xcf, 0x4c, 0x62, 0xb7, 0x9c, 0x91, 0x17, 0xfe, 0xa4, 0x54, 0xec, 0xfd, + 0x0e, 0xdc, 0x74, 0xb0, 0x87, 0xc3, 0x91, 0x20, 0x25, 0x76, 0xad, 0x43, 0x02, 0x36, 0xd2, 0xc7, + 0xec, 0xc5, 0x32, 0xe4, 0xe9, 0x39, 0x2d, 0xb4, 0x91, 0x8a, 0xc3, 0x04, 0x1f, 0xe5, 0x59, 0x60, + 0x47, 0x2e, 0xf1, 0x25, 0xf7, 0xe9, 0xed, 0xc5, 0x1d, 0xd2, 0x2d, 0xf6, 0xdf, 0x90, 0x60, 0xba, + 0x8e, 0x9d, 0x92, 0x66, 0x59, 0xba, 0xb6, 0x35, 0x2a, 0x8f, 0x6f, 0x51, 0xef, 0x61, 0xf4, 0xcd, + 0x8c, 0xe8, 0x79, 0x1a, 0x7f, 0x21, 0xdc, 0x63, 0x35, 0x22, 0x96, 0xe0, 0xa3, 0x42, 0x67, 0x66, + 0x06, 0x51, 0x1b, 0x83, 0xc7, 0xb6, 0x04, 0x13, 0xde, 0x59, 0xbc, 0x5b, 0xb8, 0xf3, 0x99, 0xdb, + 0xce, 0x8e, 0x77, 0x0c, 0x86, 0x3c, 0xef, 0x3f, 0x03, 0x86, 0x5e, 0x96, 0xd0, 0x51, 0x3e, 0xfe, + 0x20, 0x61, 0xb2, 0x36, 0x96, 0xc4, 0x1d, 0xfe, 0xb0, 0x8e, 0x0e, 0xfe, 0xee, 0x04, 0x5b, 0x8e, + 0x5c, 0xd5, 0x1c, 0xfc, 0x30, 0xfa, 0xac, 0x0c, 0x13, 0x75, 0xec, 0xb8, 0xe3, 0x2d, 0x77, 0xb9, + 0xe9, 0xb0, 0x1a, 0xae, 0x84, 0x56, 0x3c, 0xa6, 0xd8, 0x1a, 0xc6, 0xfd, 0x30, 0xd5, 0xb5, 0xcc, + 0x16, 0xb6, 0x6d, 0xb6, 0x7a, 0x11, 0x76, 0x54, 0xeb, 0x37, 0xfa, 0x13, 0xd6, 0xe6, 0xd7, 0xbd, + 0x7f, 0xd4, 0xe0, 0xf7, 0xa4, 0x66, 0x00, 0xa5, 0xc4, 0x2a, 0x38, 0x6e, 0x33, 0x20, 0xae, 0xf0, + 0xf4, 0x81, 0xfe, 0xa4, 0x0c, 0x33, 0x75, 0xec, 0xf8, 0x52, 0x4c, 0xb0, 0xc9, 0x11, 0x0d, 0x2f, + 0x07, 0xa5, 0x7c, 0x30, 0x28, 0xc5, 0xaf, 0x06, 0xe4, 0xa5, 0xe9, 0x13, 0x1b, 0xe3, 0xd5, 0x80, + 0x62, 0x1c, 0x8c, 0xe1, 0xf8, 0xda, 0x13, 0x61, 0x8a, 0xf0, 0x42, 0x1a, 0xec, 0xcf, 0x66, 0x83, + 0xc6, 0xfb, 0xb9, 0x94, 0x1a, 0xef, 0xdd, 0x90, 0xdb, 0xd1, 0xac, 0x8b, 0x36, 0x69, 0xb8, 0xd3, + 0x22, 0x66, 0xfb, 0x9a, 0x9b, 0x5d, 0xa5, 0x7f, 0xf5, 0xf7, 0xd3, 0xcc, 0x25, 0xf3, 0xd3, 0x7c, + 0x54, 0x4a, 0x34, 0x12, 0xd2, 0xb9, 0xc3, 0x08, 0x9b, 0x7c, 0x82, 0x71, 0x33, 0xa6, 0xec, 0xf4, + 0x95, 0xe3, 0x85, 0x32, 0x4c, 0xba, 0xe3, 0x36, 0xb1, 0xc7, 0xcf, 0x1f, 0x5c, 0x1d, 0xfa, 0x1b, + 0xfa, 0x09, 0x7b, 0x60, 0x4f, 0x22, 0xa3, 0x33, 0xef, 0x13, 0xf4, 0xc0, 0x71, 0x85, 0xa7, 0x8f, + 0xc7, 0x5b, 0x29, 0x1e, 0xa4, 0x3d, 0xa0, 0xdf, 0x94, 0x41, 0x5e, 0xc6, 0xce, 0xb8, 0xad, 0xc8, + 0x37, 0x09, 0x87, 0x38, 0xe2, 0x04, 0x46, 0x78, 0x9e, 0x5f, 0xc6, 0xa3, 0x69, 0x40, 0x62, 0xb1, + 0x8d, 0x84, 0x18, 0x48, 0x1f, 0xb5, 0x77, 0x52, 0xd4, 0xe8, 0xe6, 0xc2, 0x8f, 0x8f, 0xa0, 0x57, + 0x1d, 0xef, 0xc2, 0x87, 0x27, 0x40, 0x42, 0xe3, 0xb0, 0xda, 0x5b, 0xbf, 0xc2, 0xc7, 0x72, 0x15, + 0x1f, 0xb8, 0x8d, 0x7d, 0x1b, 0xb7, 0x2e, 0xe2, 0x36, 0xfa, 0x91, 0x83, 0x43, 0x77, 0x0a, 0x26, + 0x5a, 0x94, 0x1a, 0x01, 0x6f, 0x52, 0xf5, 0x5e, 0x13, 0xdc, 0x2b, 0xcd, 0x77, 0x44, 0xf4, 0xf7, + 0x31, 0xde, 0x2b, 0x2d, 0x50, 0xfc, 0x18, 0xcc, 0x16, 0x3a, 0xcb, 0xa8, 0xb4, 0x4c, 0x03, 0xfd, + 0x97, 0x83, 0xc3, 0x72, 0x0d, 0x4c, 0xe9, 0x2d, 0xd3, 0x20, 0x61, 0x28, 0xbc, 0x43, 0x40, 0x7e, + 0x82, 0xf7, 0xb5, 0xbc, 0x63, 0x3e, 0xa4, 0xb3, 0x5d, 0xf3, 0x20, 0x61, 0x58, 0x63, 0xc2, 0x65, + 0xfd, 0xb0, 0x8c, 0x89, 0x3e, 0x65, 0xa7, 0x0f, 0xd9, 0x87, 0x02, 0xef, 0x36, 0xda, 0x15, 0x3e, + 0x2e, 0x56, 0x81, 0x87, 0x19, 0xce, 0xc2, 0xb5, 0x38, 0x94, 0xe1, 0x2c, 0x86, 0x81, 0x31, 0xdc, + 0x58, 0x11, 0xe0, 0x98, 0xfa, 0x1a, 0xf0, 0x01, 0xd0, 0x19, 0x9d, 0x79, 0x38, 0x24, 0x3a, 0x87, + 0x63, 0x22, 0xbe, 0x87, 0x85, 0xc8, 0x64, 0x16, 0x0f, 0xfa, 0xaf, 0xa3, 0x00, 0xe7, 0xce, 0x61, + 0xfc, 0x15, 0xa8, 0xb7, 0x42, 0x82, 0x1b, 0xb1, 0xf7, 0x49, 0xd0, 0xa5, 0x32, 0xc6, 0xbb, 0xe2, + 0x45, 0xca, 0x4f, 0x1f, 0xc0, 0x17, 0xc8, 0x30, 0x47, 0x7c, 0x04, 0x3a, 0x58, 0xb3, 0x68, 0x47, + 0x39, 0x12, 0x47, 0xf9, 0xb7, 0x0a, 0x07, 0xf8, 0xe1, 0xe5, 0x10, 0xf0, 0x31, 0x12, 0x28, 0xc4, + 0xa2, 0xfb, 0x08, 0xb2, 0x30, 0x96, 0x6d, 0x94, 0x82, 0xcf, 0x02, 0x53, 0xf1, 0xd1, 0xe0, 0x91, + 0xd0, 0x23, 0x97, 0x17, 0x86, 0xd7, 0xd8, 0xc6, 0xec, 0x91, 0x2b, 0xc2, 0x44, 0xfa, 0x98, 0xfc, + 0xe6, 0xad, 0x6c, 0xc1, 0xb9, 0x41, 0x2e, 0x8c, 0x7f, 0x45, 0xd6, 0x3f, 0xd1, 0xf6, 0xc9, 0x91, + 0x78, 0x60, 0x1e, 0x20, 0x20, 0xbe, 0x02, 0x59, 0xcb, 0xbc, 0x44, 0x97, 0xb6, 0x66, 0x55, 0xf2, + 0x4c, 0xaf, 0xa7, 0xec, 0xec, 0xee, 0x18, 0xf4, 0x64, 0xe8, 0xac, 0xea, 0xbd, 0x2a, 0xd7, 0xc3, + 0xec, 0x25, 0xdd, 0xd9, 0x5e, 0xc1, 0x5a, 0x1b, 0x5b, 0xaa, 0x79, 0x89, 0x78, 0xcc, 0x4d, 0xaa, + 0x7c, 0x22, 0xef, 0xbf, 0x22, 0x60, 0x5f, 0x92, 0x5b, 0xe4, 0xc7, 0x72, 0xfc, 0x2d, 0x89, 0xe5, + 0x19, 0xcd, 0x55, 0xfa, 0x0a, 0xf3, 0x2e, 0x19, 0xa6, 0x54, 0xf3, 0x12, 0x53, 0x92, 0xff, 0xe3, + 0x70, 0x75, 0x24, 0xf1, 0x44, 0x8f, 0x48, 0xce, 0x67, 0x7f, 0xec, 0x13, 0xbd, 0xd8, 0xe2, 0xc7, + 0x72, 0x72, 0x69, 0x46, 0x35, 0x2f, 0xd5, 0xb1, 0x43, 0x5b, 0x04, 0x6a, 0x8e, 0xc8, 0xc9, 0x5a, + 0xb7, 0x29, 0x41, 0x36, 0x0f, 0xf7, 0xdf, 0x93, 0xee, 0x22, 0xf8, 0x02, 0xf2, 0x59, 0x1c, 0xf7, + 0x2e, 0xc2, 0x40, 0x0e, 0xc6, 0x10, 0x23, 0x45, 0x86, 0x69, 0xd5, 0xbc, 0xe4, 0x0e, 0x0d, 0x4b, + 0x7a, 0xa7, 0x33, 0x9a, 0x11, 0x32, 0xa9, 0xf1, 0xef, 0x89, 0xc1, 0xe3, 0x62, 0xec, 0xc6, 0xff, + 0x00, 0x06, 0xd2, 0x87, 0xe1, 0x79, 0xb4, 0xb1, 0x78, 0x23, 0xb4, 0x31, 0x1a, 0x1c, 0x86, 0x6d, + 0x10, 0x3e, 0x1b, 0x87, 0xd6, 0x20, 0xa2, 0x38, 0x18, 0xcb, 0xce, 0xc9, 0x5c, 0x89, 0x0c, 0xf3, + 0xa3, 0x6d, 0x13, 0x6f, 0x4f, 0xe6, 0x9a, 0xc8, 0x86, 0x5d, 0x8e, 0x91, 0x91, 0xa0, 0x91, 0xc0, + 0x05, 0x51, 0x80, 0x87, 0xf4, 0xf1, 0x78, 0xbf, 0x0c, 0x33, 0x94, 0x85, 0xc7, 0x89, 0x15, 0x30, + 0x54, 0xa3, 0x0a, 0xd7, 0xe0, 0x70, 0x1a, 0x55, 0x0c, 0x07, 0x63, 0xb9, 0x15, 0xd4, 0xb5, 0xe3, + 0x86, 0x38, 0x3e, 0x1e, 0x85, 0xe0, 0xd0, 0xc6, 0xd8, 0x08, 0x8f, 0x90, 0x0f, 0x63, 0x8c, 0x1d, + 0xd2, 0x31, 0xf2, 0xe7, 0xf9, 0xad, 0x68, 0x94, 0x18, 0x1c, 0xa0, 0x29, 0x8c, 0x10, 0x86, 0x21, + 0x9b, 0xc2, 0x21, 0x21, 0xf1, 0x45, 0x19, 0x80, 0x32, 0xb0, 0x66, 0xee, 0x91, 0xcb, 0x7c, 0x46, + 0xd0, 0x9d, 0xf5, 0xba, 0xd5, 0xcb, 0x03, 0xdc, 0xea, 0x13, 0x86, 0x70, 0x49, 0xba, 0x12, 0x18, + 0x92, 0xb2, 0x5b, 0xc9, 0xb1, 0xaf, 0x04, 0xc6, 0x97, 0x9f, 0x3e, 0xc6, 0x8f, 0x51, 0x6b, 0x2e, + 0x38, 0x60, 0xfa, 0x2b, 0x23, 0x41, 0x39, 0x34, 0xfb, 0x97, 0xf9, 0xd9, 0xff, 0x01, 0xb0, 0x1d, + 0xd6, 0x46, 0x1c, 0x74, 0x70, 0x34, 0x7d, 0x1b, 0xf1, 0xf0, 0x0e, 0x88, 0xfe, 0x78, 0x16, 0x8e, + 0xb2, 0x4e, 0xe4, 0xbb, 0x01, 0xe2, 0x84, 0xe7, 0xf0, 0xb8, 0x4e, 0x72, 0x00, 0xca, 0xa3, 0x5a, + 0x90, 0x4a, 0xb2, 0x94, 0x29, 0xc0, 0xde, 0x58, 0x56, 0x37, 0xf2, 0xe5, 0x87, 0xbb, 0x9a, 0xd1, + 0x16, 0x0f, 0xf7, 0x3b, 0x00, 0x78, 0x6f, 0xad, 0x51, 0xe6, 0xd7, 0x1a, 0xfb, 0xac, 0x4c, 0x26, + 0xde, 0xb9, 0x26, 0x22, 0xa3, 0xec, 0x8e, 0x7d, 0xe7, 0x3a, 0xba, 0xec, 0xf4, 0x51, 0x7a, 0xbb, + 0x0c, 0xd9, 0xba, 0x69, 0x39, 0xe8, 0xf9, 0x49, 0x5a, 0x27, 0x95, 0x7c, 0x00, 0x92, 0xf7, 0xae, + 0x94, 0xb8, 0x5b, 0x9a, 0x6f, 0x89, 0x3f, 0xea, 0xac, 0x39, 0x1a, 0xf1, 0xea, 0x76, 0xcb, 0x0f, + 0x5d, 0xd7, 0x9c, 0x34, 0x9e, 0x0e, 0x95, 0x5f, 0x3d, 0xfa, 0x00, 0x46, 0x6a, 0xf1, 0x74, 0x22, + 0x4b, 0x4e, 0x1f, 0xb7, 0x57, 0x1d, 0x65, 0xbe, 0xad, 0x4b, 0x7a, 0x07, 0xa3, 0xe7, 0x53, 0x97, + 0x91, 0xaa, 0xb6, 0x83, 0xc5, 0x8f, 0xc4, 0xc4, 0xba, 0xb6, 0x92, 0xf8, 0xb2, 0x72, 0x10, 0x5f, + 0x36, 0x69, 0x83, 0xa2, 0x07, 0xd0, 0x29, 0x4b, 0xe3, 0x6e, 0x50, 0x31, 0x65, 0x8f, 0x25, 0x4e, + 0xe7, 0xb1, 0x3a, 0x76, 0xa8, 0x51, 0x59, 0xf3, 0x6e, 0x60, 0xf9, 0xd1, 0x91, 0x44, 0xec, 0xf4, + 0x2f, 0x78, 0x91, 0x7b, 0x2e, 0x78, 0x79, 0x57, 0x18, 0x9c, 0x35, 0x1e, 0x9c, 0x1f, 0x8c, 0x16, + 0x10, 0xcf, 0xe4, 0x48, 0x60, 0x7a, 0x93, 0x0f, 0xd3, 0x3a, 0x07, 0xd3, 0x5d, 0x43, 0x72, 0x91, + 0x3e, 0x60, 0x3f, 0x97, 0x83, 0xa3, 0x74, 0xd2, 0x5f, 0x34, 0xda, 0x2c, 0xc2, 0xea, 0xeb, 0xa5, + 0x43, 0xde, 0x6c, 0xdb, 0x1f, 0x82, 0x95, 0x8b, 0xe5, 0x9c, 0xeb, 0xbd, 0x1d, 0x7f, 0x81, 0x86, + 0x73, 0x75, 0x3b, 0x51, 0xb2, 0xd3, 0x26, 0x7e, 0x43, 0xbe, 0xff, 0x1f, 0x7f, 0x97, 0xd1, 0x84, + 0xf8, 0x5d, 0x46, 0x7f, 0x9a, 0x6c, 0xdd, 0x8e, 0x14, 0xdd, 0x23, 0xf0, 0x94, 0x6d, 0xa7, 0x04, + 0x2b, 0x7a, 0x02, 0xdc, 0x7d, 0x6f, 0xb8, 0x93, 0x05, 0x11, 0x44, 0x86, 0x74, 0x27, 0x23, 0x04, + 0x0e, 0xd3, 0x9d, 0x6c, 0x10, 0x03, 0x63, 0xb8, 0xd5, 0x3e, 0xc7, 0x76, 0xf3, 0x49, 0xbb, 0x41, + 0x7f, 0x25, 0xa5, 0x3e, 0x4a, 0x7f, 0x2b, 0x93, 0xc8, 0xff, 0x99, 0xf0, 0x15, 0x3f, 0x4c, 0x27, + 0xf1, 0x68, 0x8e, 0x23, 0x37, 0x86, 0x75, 0x23, 0x89, 0xf8, 0xa2, 0x9f, 0xd7, 0xdb, 0xce, 0xf6, + 0x88, 0x4e, 0x74, 0x5c, 0x72, 0x69, 0x79, 0xd7, 0x23, 0x93, 0x17, 0xf4, 0x6f, 0x99, 0x44, 0x21, + 0xa4, 0x7c, 0x91, 0x10, 0xb6, 0x22, 0x44, 0x9c, 0x20, 0xf0, 0x53, 0x2c, 0xbd, 0x31, 0x6a, 0xf4, + 0x39, 0xbd, 0x8d, 0xcd, 0xc7, 0xa1, 0x46, 0x13, 0xbe, 0x46, 0xa7, 0xd1, 0x71, 0xe4, 0xbe, 0x47, + 0x35, 0xda, 0x17, 0xc9, 0x88, 0x34, 0x3a, 0x96, 0x5e, 0xfa, 0x32, 0x7e, 0xd9, 0x0c, 0x9b, 0x48, + 0xad, 0xea, 0xc6, 0x45, 0xf4, 0xcf, 0x79, 0xef, 0x62, 0xe6, 0xf3, 0xba, 0xb3, 0xcd, 0x62, 0xc1, + 0xfc, 0xbe, 0xf0, 0xdd, 0x28, 0x43, 0xc4, 0x7b, 0xe1, 0xc3, 0x49, 0xe5, 0xf6, 0x85, 0x93, 0x2a, + 0xc2, 0xac, 0x6e, 0x38, 0xd8, 0x32, 0xb4, 0xce, 0x52, 0x47, 0xdb, 0xb2, 0x4f, 0x4d, 0xf4, 0xbd, + 0xbc, 0xae, 0x12, 0xca, 0xa3, 0xf2, 0x7f, 0x84, 0xaf, 0xaf, 0x9c, 0xe4, 0xaf, 0xaf, 0x8c, 0x88, + 0x7e, 0x35, 0x15, 0x1d, 0xfd, 0xca, 0x8f, 0x6e, 0x05, 0x83, 0x83, 0x63, 0x8b, 0xda, 0xc6, 0x09, + 0xc3, 0xfd, 0xdd, 0x22, 0x18, 0x85, 0xcd, 0x0f, 0xfd, 0xf8, 0x1b, 0x72, 0xa2, 0xd5, 0x3d, 0x57, + 0x11, 0xe6, 0x7b, 0x95, 0x20, 0xb1, 0x85, 0x1a, 0xae, 0xbc, 0xdc, 0x53, 0x79, 0xdf, 0xe4, 0xc9, + 0x0a, 0x98, 0x3c, 0x61, 0xa5, 0xca, 0x89, 0x29, 0x55, 0x92, 0xc5, 0x42, 0x91, 0xda, 0x8e, 0xe1, + 0x34, 0x52, 0x0e, 0x8e, 0x79, 0xd1, 0x6e, 0xbb, 0x5d, 0xac, 0x59, 0x9a, 0xd1, 0xc2, 0xe8, 0x43, + 0xd2, 0x28, 0xcc, 0xde, 0x25, 0x98, 0xd4, 0x5b, 0xa6, 0x51, 0xd7, 0x9f, 0xed, 0x5d, 0x2e, 0x17, + 0x1f, 0x64, 0x9d, 0x48, 0xa4, 0xc2, 0xfe, 0x50, 0xfd, 0x7f, 0x95, 0x0a, 0x4c, 0xb5, 0x34, 0xab, + 0x4d, 0x83, 0xf0, 0xe5, 0x7a, 0x2e, 0x72, 0x8a, 0x24, 0x54, 0xf2, 0x7e, 0x51, 0x83, 0xbf, 0x95, + 0x1a, 0x2f, 0xc4, 0x7c, 0x4f, 0x34, 0x8f, 0x48, 0x62, 0x8b, 0xc1, 0x4f, 0x9c, 0xcc, 0x5d, 0xe9, + 0x58, 0xb8, 0x43, 0xee, 0xa0, 0xa7, 0x3d, 0xc4, 0x94, 0x1a, 0x24, 0x24, 0x5d, 0x1e, 0x20, 0x45, + 0xed, 0x43, 0x63, 0xdc, 0xcb, 0x03, 0x42, 0x5c, 0xa4, 0xaf, 0x99, 0x6f, 0xc9, 0xc3, 0x2c, 0xed, + 0xd5, 0x98, 0x38, 0xd1, 0x0b, 0xc8, 0x15, 0xd2, 0xce, 0x03, 0xf8, 0x32, 0xaa, 0x1f, 0x7c, 0x4c, + 0x2e, 0x80, 0x7c, 0xd1, 0x0f, 0x38, 0xe8, 0x3e, 0x26, 0xdd, 0xb7, 0xf7, 0xf8, 0x9a, 0xa7, 0x3c, + 0x8d, 0x7b, 0xdf, 0x3e, 0xbe, 0xf8, 0xf4, 0xf1, 0xf9, 0x79, 0x19, 0xe4, 0x62, 0xbb, 0x8d, 0x5a, + 0x07, 0x87, 0xe2, 0x0c, 0x4c, 0x7b, 0x6d, 0x26, 0x88, 0x01, 0x19, 0x4e, 0x4a, 0xba, 0x08, 0xea, + 0xcb, 0xa6, 0xd8, 0x1e, 0xfb, 0xae, 0x42, 0x4c, 0xd9, 0xe9, 0x83, 0xf2, 0x2b, 0x13, 0xac, 0xd1, + 0x2c, 0x98, 0xe6, 0x45, 0x72, 0x54, 0xe6, 0xf9, 0x32, 0xe4, 0x96, 0xb0, 0xd3, 0xda, 0x1e, 0x51, + 0x9b, 0xd9, 0xb5, 0x3a, 0x5e, 0x9b, 0xd9, 0x77, 0x1f, 0xfe, 0x60, 0x1b, 0xd6, 0x63, 0x6b, 0x9e, + 0xb0, 0x34, 0xee, 0xe8, 0xce, 0xb1, 0xa5, 0xa7, 0x0f, 0xce, 0xbf, 0xc9, 0x30, 0xe7, 0xaf, 0x70, + 0x51, 0x4c, 0x7e, 0x2e, 0xf3, 0x78, 0x5b, 0xef, 0x44, 0x9f, 0x4e, 0x16, 0x22, 0xcd, 0x97, 0x29, + 0x5f, 0xb3, 0x94, 0x17, 0x16, 0x13, 0x04, 0x4f, 0x13, 0x63, 0x70, 0x0c, 0x33, 0x78, 0x19, 0x26, + 0x09, 0x43, 0x8b, 0xfa, 0x1e, 0x71, 0x1d, 0xe4, 0x16, 0x1a, 0x9f, 0x33, 0x92, 0x85, 0xc6, 0xbb, + 0xf8, 0x85, 0x46, 0xc1, 0x88, 0xc7, 0xde, 0x3a, 0x63, 0x42, 0x5f, 0x1a, 0xf7, 0xff, 0x91, 0x2f, + 0x33, 0x26, 0xf0, 0xa5, 0x19, 0x50, 0x7e, 0xfa, 0x88, 0xfe, 0xc6, 0x7f, 0x62, 0x9d, 0xad, 0xb7, + 0xa1, 0x8a, 0xfe, 0xe7, 0x31, 0xc8, 0x9e, 0x73, 0x1f, 0xfe, 0x77, 0x70, 0x23, 0xd6, 0x4b, 0x47, + 0x10, 0x9c, 0xe1, 0x1e, 0xc8, 0xba, 0xf4, 0xd9, 0xb4, 0xe5, 0x26, 0xb1, 0xdd, 0x5d, 0x97, 0x11, + 0x95, 0xfc, 0xa7, 0x9c, 0x84, 0xbc, 0x6d, 0xee, 0x5a, 0x2d, 0xd7, 0x7c, 0x76, 0x35, 0x86, 0xbd, + 0x25, 0x0d, 0x4a, 0xca, 0x91, 0x9e, 0x1f, 0x9d, 0xcb, 0x68, 0xe8, 0x82, 0x24, 0x99, 0xbb, 0x20, + 0x29, 0xc1, 0xfe, 0x81, 0x00, 0x6f, 0xe9, 0x6b, 0xc4, 0x5f, 0x91, 0xbb, 0x02, 0xdb, 0xa3, 0x82, + 0x3d, 0x42, 0x2c, 0x07, 0x55, 0x87, 0xa4, 0x0e, 0xdf, 0xbc, 0x68, 0xfd, 0x38, 0xf0, 0x63, 0x75, + 0xf8, 0x16, 0xe0, 0x61, 0x2c, 0xa7, 0xd4, 0xf3, 0xcc, 0x49, 0xf5, 0xc1, 0x51, 0xa2, 0x9b, 0xe5, + 0x94, 0xfe, 0x40, 0xe8, 0x8c, 0xd0, 0x79, 0x75, 0x68, 0x74, 0x0e, 0xc9, 0x7d, 0xf5, 0x0f, 0x65, + 0x12, 0x09, 0xd3, 0x33, 0x72, 0xc4, 0x2f, 0x3a, 0x4a, 0x0c, 0x91, 0x3b, 0x06, 0x73, 0x71, 0xa0, + 0x67, 0x87, 0x0f, 0x0d, 0xce, 0x8b, 0x2e, 0xc4, 0xff, 0xb8, 0x43, 0x83, 0x8b, 0x32, 0x92, 0x3e, + 0x90, 0xaf, 0xa1, 0x17, 0x8b, 0x15, 0x5b, 0x8e, 0xbe, 0x37, 0xe2, 0x96, 0xc6, 0x0f, 0x2f, 0x09, + 0xa3, 0x01, 0xef, 0x93, 0x10, 0xe5, 0x70, 0xdc, 0xd1, 0x80, 0xc5, 0xd8, 0x48, 0x1f, 0xa6, 0xbf, + 0xcd, 0xbb, 0xd2, 0x63, 0x6b, 0x33, 0xbf, 0xc9, 0x56, 0x03, 0xf0, 0xc1, 0xd1, 0x3a, 0x0b, 0x33, + 0xa1, 0xa9, 0xbf, 0x77, 0x61, 0x0d, 0x97, 0x96, 0xf4, 0xa0, 0xbb, 0x2f, 0xb2, 0x91, 0x2f, 0x0c, + 0x24, 0x58, 0xf0, 0x15, 0x61, 0x62, 0x2c, 0xf7, 0xc1, 0x79, 0x63, 0xd8, 0x98, 0xb0, 0xfa, 0xfd, + 0x30, 0x56, 0x35, 0x1e, 0xab, 0x3b, 0x44, 0xc4, 0x24, 0x36, 0xa6, 0x09, 0xcd, 0x1b, 0xdf, 0xec, + 0xc3, 0xa5, 0x72, 0x70, 0xdd, 0x33, 0x34, 0x1f, 0xe9, 0x23, 0xf6, 0xab, 0xb4, 0x3b, 0xac, 0x53, + 0x93, 0x7d, 0x34, 0xdd, 0x21, 0x9b, 0x0d, 0xc8, 0xdc, 0x6c, 0x20, 0xa1, 0xbf, 0x7d, 0xe0, 0x46, + 0xea, 0x31, 0x37, 0x08, 0xa2, 0xec, 0x88, 0xfd, 0xed, 0x07, 0x72, 0x90, 0x3e, 0x38, 0xff, 0x28, + 0x03, 0x2c, 0x5b, 0xe6, 0x6e, 0xb7, 0x66, 0xb5, 0xb1, 0x85, 0xfe, 0x26, 0x98, 0x00, 0xfc, 0xc2, + 0x08, 0x26, 0x00, 0xeb, 0x00, 0x5b, 0x3e, 0x71, 0xa6, 0xe1, 0xb7, 0x8a, 0x99, 0xfb, 0x01, 0x53, + 0x6a, 0x88, 0x06, 0x7f, 0xe5, 0xec, 0x0f, 0xf1, 0x18, 0xc7, 0xf5, 0x59, 0x01, 0xb9, 0x51, 0x4e, + 0x00, 0xde, 0xea, 0x63, 0xdd, 0xe0, 0xb0, 0xbe, 0xef, 0x00, 0x9c, 0xa4, 0x8f, 0xf9, 0x3f, 0x4d, + 0xc0, 0x34, 0xdd, 0xae, 0xa3, 0x32, 0xfd, 0xfb, 0x00, 0xf4, 0x5f, 0x19, 0x01, 0xe8, 0x1b, 0x30, + 0x63, 0x06, 0xd4, 0x69, 0x9f, 0x1a, 0x5e, 0x80, 0x89, 0x85, 0x3d, 0xc4, 0x97, 0xca, 0x91, 0x41, + 0x1f, 0x08, 0x23, 0xaf, 0xf2, 0xc8, 0xdf, 0x15, 0x23, 0xef, 0x10, 0xc5, 0x51, 0x42, 0xff, 0x36, + 0x1f, 0xfa, 0x0d, 0x0e, 0xfa, 0xe2, 0x41, 0x58, 0x19, 0x43, 0xb8, 0x7d, 0x19, 0xb2, 0xe4, 0x74, + 0xdc, 0x6f, 0xa5, 0x38, 0xbf, 0x3f, 0x05, 0x13, 0xa4, 0xc9, 0xfa, 0xf3, 0x0e, 0xef, 0xd5, 0xfd, + 0xa2, 0x6d, 0x3a, 0xd8, 0xf2, 0x3d, 0x16, 0xbc, 0x57, 0x97, 0x07, 0xcf, 0x2b, 0xd9, 0x3e, 0x95, + 0xa7, 0x1b, 0x91, 0x7e, 0xc2, 0xd0, 0x93, 0x92, 0xb0, 0xc4, 0x47, 0x76, 0x5e, 0x6e, 0x98, 0x49, + 0xc9, 0x00, 0x46, 0xd2, 0x07, 0xfe, 0x2f, 0xb2, 0x70, 0x8a, 0xae, 0x2a, 0x2d, 0x59, 0xe6, 0x4e, + 0xcf, 0xed, 0x56, 0xfa, 0xc1, 0x75, 0xe1, 0x06, 0x98, 0x73, 0x38, 0x7f, 0x6c, 0xa6, 0x13, 0x3d, + 0xa9, 0xe8, 0xcf, 0xc2, 0x3e, 0x15, 0xcf, 0xe2, 0x91, 0x5c, 0x88, 0x11, 0x60, 0x14, 0xef, 0x89, + 0x17, 0xea, 0x05, 0x19, 0x0d, 0x2d, 0x52, 0xc9, 0x43, 0xad, 0x59, 0xfa, 0x3a, 0x95, 0x13, 0xd1, + 0xa9, 0x77, 0xfb, 0x3a, 0xf5, 0x23, 0x9c, 0x4e, 0x2d, 0x1f, 0x5c, 0x24, 0xe9, 0xeb, 0xd6, 0x2b, + 0xfc, 0x8d, 0x21, 0x7f, 0xdb, 0x6e, 0x27, 0x85, 0xcd, 0xba, 0xb0, 0x3f, 0x52, 0x96, 0xf3, 0x47, + 0xe2, 0xef, 0xa3, 0x48, 0x30, 0x13, 0xe6, 0xb9, 0x8e, 0xd0, 0xa5, 0x39, 0x90, 0x74, 0x8f, 0x3b, + 0x49, 0x6f, 0x0f, 0x35, 0xd7, 0x8d, 0x2d, 0x68, 0x0c, 0x6b, 0x4b, 0x73, 0x90, 0x5f, 0xd2, 0x3b, + 0x0e, 0xb6, 0xd0, 0x63, 0x6c, 0xa6, 0xfb, 0x8a, 0x14, 0x07, 0x80, 0x45, 0xc8, 0x6f, 0x92, 0xd2, + 0x98, 0xc9, 0x7c, 0xb3, 0x58, 0xeb, 0xa1, 0x1c, 0xaa, 0xec, 0xdf, 0xa4, 0xd1, 0xf9, 0x7a, 0xc8, + 0x8c, 0x6c, 0x8a, 0x9c, 0x20, 0x3a, 0xdf, 0x60, 0x16, 0xc6, 0x72, 0x31, 0x55, 0x5e, 0xc5, 0x3b, + 0xee, 0x18, 0x7f, 0x31, 0x3d, 0x84, 0x0b, 0x20, 0xeb, 0x6d, 0x9b, 0x74, 0x8e, 0x53, 0xaa, 0xfb, + 0x98, 0xd4, 0x57, 0xa8, 0x57, 0x54, 0x94, 0xe5, 0x71, 0xfb, 0x0a, 0x09, 0x71, 0x91, 0x3e, 0x66, + 0xdf, 0x22, 0x8e, 0xa2, 0xdd, 0x8e, 0xd6, 0xc2, 0x2e, 0xf7, 0xa9, 0xa1, 0x46, 0x7b, 0xb2, 0xac, + 0xd7, 0x93, 0x85, 0xda, 0x69, 0xee, 0x00, 0xed, 0x74, 0xd8, 0x65, 0x48, 0x5f, 0xe6, 0xa4, 0xe2, + 0x87, 0xb6, 0x0c, 0x19, 0xcb, 0xc6, 0x18, 0xae, 0x1d, 0xf5, 0x0e, 0xd2, 0x8e, 0xb5, 0xb5, 0x0e, + 0xbb, 0x49, 0xc3, 0x84, 0x35, 0xb2, 0x43, 0xb3, 0xc3, 0x6c, 0xd2, 0x44, 0xf3, 0x30, 0x06, 0xb4, + 0xe6, 0x18, 0x5a, 0x9f, 0x62, 0xc3, 0x68, 0xca, 0xfb, 0xa4, 0xb6, 0x69, 0x39, 0xc9, 0xf6, 0x49, + 0x5d, 0xee, 0x54, 0xf2, 0x5f, 0xd2, 0x83, 0x57, 0xfc, 0xb9, 0xea, 0x51, 0x0d, 0x9f, 0x09, 0x0e, + 0x5e, 0x0d, 0x62, 0x20, 0x7d, 0x78, 0xdf, 0x70, 0x48, 0x83, 0xe7, 0xb0, 0xcd, 0x91, 0xb5, 0x81, + 0x91, 0x0d, 0x9d, 0xc3, 0x34, 0xc7, 0x68, 0x1e, 0xd2, 0xc7, 0xeb, 0xeb, 0xa1, 0x81, 0xf3, 0x75, + 0x63, 0x1c, 0x38, 0xbd, 0x96, 0x99, 0x1b, 0xb2, 0x65, 0x0e, 0xbb, 0xff, 0xc3, 0x64, 0x3d, 0xba, + 0x01, 0x73, 0x98, 0xfd, 0x9f, 0x18, 0x26, 0xd2, 0x47, 0xfc, 0xf5, 0x32, 0xe4, 0xea, 0xe3, 0x1f, + 0x2f, 0x87, 0x9d, 0x8b, 0x10, 0x59, 0xd5, 0x47, 0x36, 0x5c, 0x0e, 0x33, 0x17, 0x89, 0x64, 0x61, + 0x0c, 0x81, 0xf7, 0x8f, 0xc2, 0x0c, 0x59, 0x12, 0xf1, 0xb6, 0x59, 0xbf, 0xce, 0x46, 0xcd, 0x47, + 0x53, 0x6c, 0xab, 0xf7, 0xc3, 0xa4, 0xb7, 0x7f, 0xc7, 0x46, 0xce, 0x79, 0xb1, 0xf6, 0xe9, 0x71, + 0xa9, 0xfa, 0xff, 0x1f, 0xc8, 0x19, 0x62, 0xe4, 0x7b, 0xb5, 0xc3, 0x3a, 0x43, 0x1c, 0xea, 0x7e, + 0xed, 0x9f, 0x06, 0x23, 0xea, 0x7f, 0x49, 0x0f, 0xf3, 0xde, 0x7d, 0xdc, 0x6c, 0x9f, 0x7d, 0xdc, + 0x0f, 0x85, 0xb1, 0xac, 0xf3, 0x58, 0xde, 0x2d, 0x2a, 0xc2, 0x11, 0x8e, 0xb5, 0x6f, 0xf7, 0xe1, + 0x3c, 0xc7, 0xc1, 0xb9, 0x70, 0x20, 0x5e, 0xc6, 0x70, 0xf0, 0x31, 0x1b, 0x8c, 0xb9, 0x1f, 0x4e, + 0xb1, 0x1d, 0xf7, 0x9c, 0xaa, 0xc8, 0xee, 0x3b, 0x55, 0xc1, 0xb5, 0xf4, 0xdc, 0x01, 0x5b, 0xfa, + 0x87, 0xc3, 0xda, 0xd1, 0xe0, 0xb5, 0xe3, 0x1e, 0x71, 0x44, 0x46, 0x37, 0x32, 0xbf, 0xc3, 0x57, + 0x8f, 0xf3, 0x9c, 0x7a, 0x94, 0x0e, 0xc6, 0x4c, 0xfa, 0xfa, 0xf1, 0x47, 0xde, 0x84, 0xf6, 0x90, + 0xdb, 0xfb, 0xb0, 0x5b, 0xc5, 0x9c, 0x10, 0x47, 0x36, 0x72, 0x0f, 0xb3, 0x55, 0x3c, 0x88, 0x93, + 0x31, 0xc4, 0x62, 0x9b, 0x85, 0x69, 0xc2, 0xd3, 0x79, 0xbd, 0xbd, 0x85, 0x1d, 0xf4, 0x1b, 0xd4, + 0x47, 0xd1, 0x8b, 0x7c, 0x39, 0xa2, 0xf0, 0x44, 0x51, 0xe7, 0x5d, 0x93, 0x7a, 0x74, 0x50, 0x26, + 0xe7, 0x43, 0x0c, 0x8e, 0x3b, 0x82, 0xe2, 0x40, 0x0e, 0xd2, 0x87, 0xec, 0x03, 0xd4, 0xdd, 0x66, + 0x55, 0xbb, 0x6c, 0xee, 0x3a, 0xe8, 0x91, 0x11, 0x74, 0xd0, 0x0b, 0x90, 0xef, 0x10, 0x6a, 0xec, + 0x58, 0x46, 0xfc, 0x74, 0x87, 0x89, 0x80, 0x96, 0xaf, 0xb2, 0x3f, 0x93, 0x9e, 0xcd, 0x08, 0xe4, + 0x48, 0xe9, 0x8c, 0xfb, 0x6c, 0xc6, 0x80, 0xf2, 0xc7, 0x72, 0xc7, 0xce, 0xa4, 0x5b, 0xba, 0xbe, + 0xa3, 0x3b, 0x23, 0x8a, 0xe0, 0xd0, 0x71, 0x69, 0x79, 0x11, 0x1c, 0xc8, 0x4b, 0xd2, 0x13, 0xa3, + 0x21, 0xa9, 0xb8, 0xbf, 0x8f, 0xfb, 0xc4, 0x68, 0x7c, 0xf1, 0xe9, 0x63, 0xf2, 0x4b, 0xb4, 0x65, + 0x9d, 0xa3, 0xce, 0xb7, 0x29, 0xfa, 0xf5, 0x0e, 0xdd, 0x58, 0x28, 0x6b, 0x87, 0xd7, 0x58, 0xfa, + 0x96, 0x9f, 0x3e, 0x30, 0xff, 0xfd, 0xfb, 0x21, 0xb7, 0x88, 0x2f, 0xec, 0x6e, 0xa1, 0xbb, 0x60, + 0xb2, 0x61, 0x61, 0x5c, 0x31, 0x36, 0x4d, 0x57, 0xba, 0x8e, 0xfb, 0xec, 0x41, 0xc2, 0xde, 0x5c, + 0x3c, 0xb6, 0xb1, 0xd6, 0x0e, 0xce, 0x9f, 0x79, 0xaf, 0xe8, 0xa5, 0x12, 0x64, 0xeb, 0x8e, 0xe6, + 0xa0, 0x29, 0x1f, 0x5b, 0xf4, 0x48, 0x18, 0x8b, 0xbb, 0x78, 0x2c, 0x6e, 0xe0, 0x64, 0x41, 0x38, + 0x98, 0x77, 0xff, 0x8f, 0x00, 0x00, 0xc1, 0xe4, 0x43, 0xb6, 0x69, 0xb8, 0x39, 0xbc, 0x23, 0x90, + 0xde, 0x3b, 0x7a, 0xb9, 0x2f, 0xee, 0x7b, 0x39, 0x71, 0x3f, 0x59, 0xac, 0x88, 0x31, 0xac, 0xb4, + 0x49, 0x30, 0xe5, 0x8a, 0x76, 0x05, 0x6b, 0x6d, 0x1b, 0x7d, 0x5f, 0xa0, 0xfc, 0x11, 0x62, 0x46, + 0xef, 0x11, 0x0e, 0xc6, 0x49, 0x6b, 0xe5, 0x13, 0x8f, 0xf6, 0xe8, 0xf0, 0x36, 0xff, 0x25, 0x3e, + 0x18, 0xc9, 0x2d, 0x90, 0xd5, 0x8d, 0x4d, 0x93, 0xf9, 0x17, 0x5e, 0x1d, 0x41, 0xdb, 0xd5, 0x09, + 0x95, 0x64, 0x14, 0x8c, 0xd4, 0x19, 0xcf, 0xd6, 0x58, 0x2e, 0xbd, 0xcb, 0xba, 0xa5, 0xa3, 0xff, + 0xff, 0x40, 0x61, 0x2b, 0x0a, 0x64, 0xbb, 0x9a, 0xb3, 0xcd, 0x8a, 0x26, 0xcf, 0xae, 0x8d, 0xbc, + 0x6b, 0x68, 0x86, 0x69, 0x5c, 0xde, 0xd1, 0x9f, 0xed, 0xdf, 0xad, 0xcb, 0xa5, 0xb9, 0x9c, 0x6f, + 0x61, 0x03, 0x5b, 0x9a, 0x83, 0xeb, 0x7b, 0x5b, 0x64, 0x8e, 0x35, 0xa9, 0x86, 0x93, 0x12, 0xeb, + 0xbf, 0xcb, 0x71, 0xb4, 0xfe, 0x6f, 0xea, 0x1d, 0x4c, 0x22, 0x35, 0x31, 0xfd, 0xf7, 0xde, 0x13, + 0xe9, 0x7f, 0x9f, 0x22, 0xd2, 0x47, 0xe3, 0xdb, 0x12, 0xcc, 0xd4, 0x5d, 0x85, 0xab, 0xef, 0xee, + 0xec, 0x68, 0xd6, 0x65, 0x74, 0x5d, 0x80, 0x4a, 0x48, 0x35, 0x33, 0xbc, 0x5f, 0xca, 0x1f, 0x0a, + 0x5f, 0x2b, 0xcd, 0x9a, 0x76, 0xa8, 0x84, 0xc4, 0xed, 0xe0, 0x36, 0xc8, 0xb9, 0xea, 0xed, 0x79, + 0x5c, 0xc6, 0x36, 0x04, 0x9a, 0x53, 0x30, 0xa2, 0xd5, 0x40, 0xde, 0xc6, 0x10, 0x4d, 0x43, 0x82, + 0xa3, 0x75, 0x47, 0x6b, 0x5d, 0x5c, 0x36, 0x2d, 0x73, 0xd7, 0xd1, 0x0d, 0x6c, 0xa3, 0x27, 0x04, + 0x08, 0x78, 0xfa, 0x9f, 0x09, 0xf4, 0x1f, 0xfd, 0x7b, 0x46, 0x74, 0x14, 0xf5, 0xbb, 0xd5, 0x30, + 0xf9, 0x88, 0x00, 0x55, 0x62, 0xe3, 0xa2, 0x08, 0xc5, 0xf4, 0x85, 0xf6, 0x3a, 0x19, 0x0a, 0xe5, + 0x87, 0xbb, 0xa6, 0xe5, 0xac, 0x9a, 0x2d, 0xad, 0x63, 0x3b, 0xa6, 0x85, 0x51, 0x2d, 0x56, 0x6a, + 0x6e, 0x0f, 0xd3, 0x36, 0x5b, 0xc1, 0xe0, 0xc8, 0xde, 0xc2, 0x6a, 0x27, 0xf3, 0x3a, 0xfe, 0x01, + 0xe1, 0x5d, 0x46, 0x2a, 0x95, 0x5e, 0x8e, 0x22, 0xf4, 0xbc, 0x5f, 0x97, 0x96, 0xec, 0xb0, 0x84, + 0xd8, 0xce, 0xa3, 0x10, 0x53, 0x63, 0x58, 0x2a, 0x97, 0x60, 0xb6, 0xbe, 0x7b, 0xc1, 0x27, 0x62, + 0x87, 0x8d, 0x90, 0x57, 0x0a, 0x47, 0xa9, 0x60, 0x8a, 0x17, 0x26, 0x14, 0x21, 0xdf, 0xeb, 0x61, + 0xd6, 0x0e, 0x67, 0x63, 0x78, 0xf3, 0x89, 0x82, 0xd1, 0x29, 0x06, 0x97, 0x9a, 0xbe, 0x00, 0xdf, + 0x21, 0xc1, 0x6c, 0xad, 0x8b, 0x0d, 0xdc, 0xa6, 0x5e, 0x90, 0x9c, 0x00, 0x5f, 0x9a, 0x50, 0x80, + 0x1c, 0xa1, 0x08, 0x01, 0x06, 0x1e, 0xcb, 0x8b, 0x9e, 0xf0, 0x82, 0x84, 0x44, 0x82, 0x8b, 0x2b, + 0x2d, 0x7d, 0xc1, 0x7d, 0x5e, 0x82, 0x69, 0x75, 0xd7, 0x58, 0xb7, 0x4c, 0x77, 0x34, 0xb6, 0xd0, + 0xdd, 0x41, 0x07, 0x71, 0x33, 0x1c, 0x6b, 0xef, 0x5a, 0x64, 0xfd, 0xa9, 0x62, 0xd4, 0x71, 0xcb, + 0x34, 0xda, 0x36, 0xa9, 0x47, 0x4e, 0xdd, 0xff, 0xe1, 0xce, 0xec, 0xf3, 0xbf, 0x22, 0x67, 0xd0, + 0x0b, 0x84, 0x43, 0xdd, 0xd0, 0xca, 0x87, 0x8a, 0x16, 0xef, 0x09, 0x04, 0x03, 0xda, 0x0c, 0x2a, + 0x21, 0x7d, 0xe1, 0x7e, 0x4a, 0x02, 0xa5, 0xd8, 0x6a, 0x99, 0xbb, 0x86, 0x53, 0xc7, 0x1d, 0xdc, + 0x72, 0x1a, 0x96, 0xd6, 0xc2, 0x61, 0xfb, 0xb9, 0x00, 0x72, 0x5b, 0xb7, 0x58, 0x1f, 0xec, 0x3e, + 0x32, 0x39, 0xbe, 0x54, 0x78, 0xc7, 0x91, 0xd6, 0x72, 0x7f, 0x29, 0x09, 0xc4, 0x29, 0xb6, 0xaf, + 0x28, 0x58, 0x50, 0xfa, 0x52, 0xfd, 0xb0, 0x04, 0x53, 0x5e, 0x8f, 0xbd, 0x25, 0x22, 0xcc, 0x5f, + 0x4a, 0x38, 0x19, 0xf1, 0x89, 0x27, 0x90, 0xe1, 0x5b, 0x12, 0xcc, 0x2a, 0xa2, 0xe8, 0x27, 0x13, + 0x5d, 0x31, 0xb9, 0xe8, 0xdc, 0xd7, 0x6a, 0xad, 0xb9, 0x54, 0x5b, 0x5d, 0x2c, 0xab, 0x05, 0x19, + 0x3d, 0x26, 0x41, 0x76, 0x5d, 0x37, 0xb6, 0xc2, 0xd1, 0x95, 0x8e, 0xbb, 0x76, 0x64, 0x1b, 0x3f, + 0xcc, 0x5a, 0x3a, 0x7d, 0x51, 0x6e, 0x87, 0xe3, 0xc6, 0xee, 0xce, 0x05, 0x6c, 0xd5, 0x36, 0xc9, + 0x28, 0x6b, 0x37, 0xcc, 0x3a, 0x36, 0xa8, 0x11, 0x9a, 0x53, 0xfb, 0x7e, 0xe3, 0x4d, 0x30, 0x81, + 0xc9, 0x83, 0xcb, 0x49, 0x84, 0xc4, 0x7d, 0xa6, 0xa4, 0x10, 0x53, 0x89, 0xa6, 0x0d, 0x7d, 0x88, + 0xa7, 0xaf, 0xa9, 0x7f, 0x9c, 0x83, 0x13, 0x45, 0xe3, 0x32, 0xb1, 0x29, 0x68, 0x07, 0x5f, 0xda, + 0xd6, 0x8c, 0x2d, 0x4c, 0x06, 0x08, 0x5f, 0xe2, 0xe1, 0x10, 0xfd, 0x19, 0x3e, 0x44, 0xbf, 0xa2, + 0xc2, 0x84, 0x69, 0xb5, 0xb1, 0xb5, 0x70, 0x99, 0xf0, 0xd4, 0xbb, 0xec, 0xcc, 0xda, 0x64, 0xbf, + 0x22, 0xe6, 0x19, 0xf9, 0xf9, 0x1a, 0xfd, 0x5f, 0xf5, 0x08, 0x9d, 0xbd, 0x19, 0x26, 0x58, 0x9a, + 0x32, 0x03, 0x93, 0x35, 0x75, 0xb1, 0xac, 0x36, 0x2b, 0x8b, 0x85, 0x23, 0xca, 0x15, 0x70, 0xb4, + 0xd2, 0x28, 0xab, 0xc5, 0x46, 0xa5, 0x56, 0x6d, 0x92, 0xf4, 0x42, 0x06, 0x3d, 0x2f, 0x2b, 0xea, + 0xd9, 0x1b, 0xcf, 0x4c, 0x3f, 0x58, 0x55, 0x98, 0x68, 0xd1, 0x0c, 0x64, 0x08, 0x9d, 0x4e, 0x54, + 0x3b, 0x46, 0x90, 0x26, 0xa8, 0x1e, 0x21, 0xe5, 0x34, 0xc0, 0x25, 0xcb, 0x34, 0xb6, 0x82, 0x53, + 0x87, 0x93, 0x6a, 0x28, 0x05, 0x3d, 0x92, 0x81, 0x3c, 0xfd, 0x87, 0x5c, 0x49, 0x42, 0x9e, 0x02, + 0xc1, 0x7b, 0xef, 0xae, 0xc5, 0x4b, 0xe4, 0x15, 0x4c, 0xb4, 0xd8, 0xab, 0xab, 0x8b, 0x54, 0x06, + 0xd4, 0x12, 0x66, 0x55, 0xb9, 0x05, 0xf2, 0xf4, 0x5f, 0xe6, 0x75, 0x10, 0x1d, 0x5e, 0x94, 0x66, + 0x13, 0xf4, 0x53, 0x16, 0x97, 0x69, 0xfa, 0xda, 0xfc, 0x5e, 0x09, 0x26, 0xab, 0xd8, 0x29, 0x6d, + 0xe3, 0xd6, 0x45, 0xf4, 0x24, 0x7e, 0x01, 0xb4, 0xa3, 0x63, 0xc3, 0x79, 0x70, 0xa7, 0xe3, 0x2f, + 0x80, 0x7a, 0x09, 0xe8, 0xa7, 0xc3, 0x9d, 0xef, 0x7d, 0xbc, 0xfe, 0xdc, 0xd4, 0xa7, 0xae, 0x5e, + 0x09, 0x11, 0x2a, 0x73, 0x12, 0xf2, 0x16, 0xb6, 0x77, 0x3b, 0xde, 0x22, 0x1a, 0x7b, 0x43, 0xaf, + 0xf2, 0xc5, 0x59, 0xe2, 0xc4, 0x79, 0x8b, 0x78, 0x11, 0x63, 0x88, 0x57, 0x9a, 0x85, 0x89, 0x8a, + 0xa1, 0x3b, 0xba, 0xd6, 0x41, 0x2f, 0xc8, 0xc2, 0x6c, 0x1d, 0x3b, 0xeb, 0x9a, 0xa5, 0xed, 0x60, + 0x07, 0x5b, 0x36, 0xfa, 0x26, 0xdf, 0x27, 0x74, 0x3b, 0x9a, 0xb3, 0x69, 0x5a, 0x3b, 0x9e, 0x6a, + 0x7a, 0xef, 0xae, 0x6a, 0xee, 0x61, 0xcb, 0x0e, 0xf8, 0xf2, 0x5e, 0xdd, 0x2f, 0x97, 0x4c, 0xeb, + 0xa2, 0x3b, 0x08, 0xb2, 0x69, 0x1a, 0x7b, 0x75, 0xe9, 0x75, 0xcc, 0xad, 0x55, 0xbc, 0x87, 0xbd, + 0x70, 0x69, 0xfe, 0xbb, 0x3b, 0x17, 0x68, 0x9b, 0x55, 0xd3, 0x71, 0x3b, 0xed, 0x55, 0x73, 0x8b, + 0xc6, 0x8b, 0x9d, 0x54, 0xf9, 0xc4, 0x20, 0x97, 0xb6, 0x87, 0x49, 0xae, 0x7c, 0x38, 0x17, 0x4b, + 0x54, 0xe6, 0x41, 0xf1, 0x7f, 0x6b, 0xe0, 0x0e, 0xde, 0xc1, 0x8e, 0x75, 0x99, 0x5c, 0x0b, 0x31, + 0xa9, 0xf6, 0xf9, 0xc2, 0x06, 0x68, 0xf1, 0xc9, 0x3a, 0x93, 0xde, 0x3c, 0x27, 0xb9, 0x03, 0x4d, + 0xd6, 0x45, 0x28, 0x8e, 0xe5, 0xda, 0x2b, 0xd9, 0xb5, 0x66, 0x7e, 0x4d, 0x86, 0x2c, 0x19, 0x3c, + 0x5f, 0x9f, 0xe1, 0x56, 0x98, 0x76, 0xb0, 0x6d, 0x6b, 0x5b, 0xd8, 0x5b, 0x61, 0x62, 0xaf, 0xca, + 0x1d, 0x90, 0xeb, 0x10, 0x4c, 0xe9, 0xe0, 0x70, 0x1d, 0x57, 0x33, 0xd7, 0xc0, 0x70, 0x69, 0xf9, + 0x23, 0x01, 0x81, 0x5b, 0xa5, 0x7f, 0x9c, 0xbd, 0x1f, 0x72, 0x14, 0xfe, 0x29, 0xc8, 0x2d, 0x96, + 0x17, 0x36, 0x96, 0x0b, 0x47, 0xdc, 0x47, 0x8f, 0xbf, 0x29, 0xc8, 0x2d, 0x15, 0x1b, 0xc5, 0xd5, + 0x82, 0xe4, 0xd6, 0xa3, 0x52, 0x5d, 0xaa, 0x15, 0x64, 0x37, 0x71, 0xbd, 0x58, 0xad, 0x94, 0x0a, + 0x59, 0x65, 0x1a, 0x26, 0xce, 0x17, 0xd5, 0x6a, 0xa5, 0xba, 0x5c, 0xc8, 0xa1, 0xbf, 0x0d, 0xe3, + 0x77, 0x27, 0x8f, 0xdf, 0xf5, 0x51, 0x3c, 0xf5, 0x83, 0xec, 0xd7, 0x7d, 0xc8, 0xee, 0xe6, 0x20, + 0xfb, 0x7e, 0x11, 0x22, 0x63, 0x70, 0x67, 0xca, 0xc3, 0xc4, 0xba, 0x65, 0xb6, 0xb0, 0x6d, 0xa3, + 0x5f, 0x96, 0x20, 0x5f, 0xd2, 0x8c, 0x16, 0xee, 0xa0, 0xab, 0x02, 0xa8, 0xa8, 0xab, 0x68, 0xc6, + 0x3f, 0x2d, 0xf6, 0x8f, 0x19, 0xd1, 0xde, 0x8f, 0xd1, 0x9d, 0xa7, 0x34, 0x23, 0xe4, 0x23, 0xd6, + 0xcb, 0xc5, 0x92, 0x1a, 0xc3, 0xd5, 0x38, 0x12, 0x4c, 0xb1, 0xd5, 0x80, 0x0b, 0x38, 0x3c, 0x0f, + 0xff, 0x66, 0x46, 0x74, 0x72, 0xe8, 0xd5, 0xc0, 0x27, 0x13, 0x21, 0x0f, 0xb1, 0x89, 0xe0, 0x20, + 0x6a, 0x63, 0xd8, 0x3c, 0x94, 0x60, 0x7a, 0xc3, 0xb0, 0xfb, 0x09, 0x45, 0x3c, 0x8e, 0xbe, 0x57, + 0x8d, 0x10, 0xa1, 0x03, 0xc5, 0xd1, 0x1f, 0x4c, 0x2f, 0x7d, 0xc1, 0x7c, 0x33, 0x03, 0xc7, 0x97, + 0xb1, 0x81, 0x2d, 0xbd, 0x45, 0x6b, 0xe0, 0x49, 0xe2, 0x6e, 0x5e, 0x12, 0x4f, 0xe2, 0x38, 0xef, + 0xf7, 0x07, 0x2f, 0x81, 0x57, 0xf8, 0x12, 0xb8, 0x8f, 0x93, 0xc0, 0xcd, 0x82, 0x74, 0xc6, 0x70, + 0x1f, 0xfa, 0x14, 0xcc, 0x54, 0x4d, 0x47, 0xdf, 0xd4, 0x5b, 0xd4, 0x07, 0xed, 0x57, 0x65, 0xc8, + 0xae, 0xea, 0xb6, 0x83, 0x8a, 0x41, 0x77, 0x72, 0x06, 0xa6, 0x75, 0xa3, 0xd5, 0xd9, 0x6d, 0x63, + 0x15, 0x6b, 0xb4, 0x5f, 0x99, 0x54, 0xc3, 0x49, 0xc1, 0xd6, 0xbe, 0xcb, 0x96, 0xec, 0x6d, 0xed, + 0x7f, 0x5c, 0x78, 0x19, 0x26, 0xcc, 0x02, 0x09, 0x48, 0x19, 0x61, 0x77, 0x15, 0x61, 0xd6, 0x08, + 0x65, 0xf5, 0x0c, 0xf6, 0xde, 0x0b, 0x05, 0xc2, 0xe4, 0x54, 0xfe, 0x0f, 0xf4, 0x2e, 0xa1, 0xc6, + 0x3a, 0x88, 0xa1, 0x64, 0xc8, 0x2c, 0x0d, 0x31, 0x49, 0x56, 0x60, 0xae, 0x52, 0x6d, 0x94, 0xd5, + 0x6a, 0x71, 0x95, 0x65, 0x91, 0xd1, 0xb7, 0x25, 0xc8, 0xa9, 0xb8, 0xdb, 0xb9, 0x1c, 0x8e, 0x18, + 0xcd, 0x1c, 0xc5, 0x33, 0xbe, 0xa3, 0xb8, 0xb2, 0x04, 0xa0, 0xb5, 0xdc, 0x82, 0xc9, 0x95, 0x5a, + 0x52, 0xdf, 0x38, 0xa6, 0x5c, 0x05, 0x8b, 0x7e, 0x6e, 0x35, 0xf4, 0x27, 0x7a, 0xa1, 0xf0, 0xce, + 0x11, 0x47, 0x8d, 0x70, 0x18, 0xd1, 0x27, 0xbc, 0x5b, 0x68, 0xb3, 0x67, 0x20, 0xb9, 0xc3, 0x11, + 0xff, 0x17, 0x24, 0xc8, 0x36, 0xdc, 0xde, 0x32, 0xd4, 0x71, 0x7e, 0x6c, 0x38, 0x1d, 0x77, 0xc9, + 0x44, 0xe8, 0xf8, 0xbd, 0x30, 0x13, 0xd6, 0x58, 0xe6, 0x2a, 0x11, 0xab, 0xe2, 0xdc, 0x0f, 0xc3, + 0x68, 0x78, 0x1f, 0x76, 0x0e, 0x47, 0xc4, 0x1f, 0x79, 0x32, 0xc0, 0x1a, 0xde, 0xb9, 0x80, 0x2d, + 0x7b, 0x5b, 0xef, 0xa2, 0xbf, 0x93, 0x61, 0x6a, 0x19, 0x3b, 0x75, 0x47, 0x73, 0x76, 0xed, 0x9e, + 0xed, 0x4e, 0xc3, 0x2c, 0x69, 0xad, 0x6d, 0xcc, 0xba, 0x23, 0xef, 0x15, 0xbd, 0x4d, 0x16, 0xf5, + 0x27, 0x0a, 0xca, 0x99, 0xf7, 0xcb, 0x88, 0xc0, 0xe4, 0x29, 0x90, 0x6d, 0x6b, 0x8e, 0xc6, 0xb0, + 0xb8, 0xaa, 0x07, 0x8b, 0x80, 0x90, 0x4a, 0xb2, 0xa1, 0xdf, 0x91, 0x44, 0x1c, 0x8a, 0x04, 0xca, + 0x4f, 0x06, 0xc2, 0xbb, 0x32, 0x43, 0xa0, 0x70, 0x0c, 0x66, 0xab, 0xb5, 0x46, 0x73, 0xb5, 0xb6, + 0xbc, 0x5c, 0x76, 0x53, 0x0b, 0xb2, 0x72, 0x12, 0x94, 0xf5, 0xe2, 0x83, 0x6b, 0xe5, 0x6a, 0xa3, + 0x59, 0xad, 0x2d, 0x96, 0xd9, 0x9f, 0x59, 0xe5, 0x28, 0x4c, 0x97, 0x8a, 0xa5, 0x15, 0x2f, 0x21, + 0xa7, 0x9c, 0x82, 0xe3, 0x6b, 0xe5, 0xb5, 0x85, 0xb2, 0x5a, 0x5f, 0xa9, 0xac, 0x37, 0x5d, 0x32, + 0x4b, 0xb5, 0x8d, 0xea, 0x62, 0x21, 0xaf, 0x20, 0x38, 0x19, 0xfa, 0x72, 0x5e, 0xad, 0x55, 0x97, + 0x9b, 0xf5, 0x46, 0xb1, 0x51, 0x2e, 0x4c, 0x28, 0x57, 0xc0, 0xd1, 0x52, 0xb1, 0x4a, 0xb2, 0x97, + 0x6a, 0xd5, 0x6a, 0xb9, 0xd4, 0x28, 0x4c, 0xa2, 0x7f, 0xcf, 0xc2, 0x74, 0xc5, 0xae, 0x6a, 0x3b, + 0xf8, 0x9c, 0xd6, 0xd1, 0xdb, 0xe8, 0x05, 0xa1, 0x99, 0xc7, 0xf5, 0x30, 0x6b, 0xd1, 0x47, 0xdc, + 0x6e, 0xe8, 0x98, 0xa2, 0x39, 0xab, 0xf2, 0x89, 0xee, 0x9c, 0xdc, 0x20, 0x04, 0xbc, 0x39, 0x39, + 0x7d, 0x53, 0x16, 0x00, 0xe8, 0x53, 0x23, 0xb8, 0xdc, 0xf5, 0x6c, 0x6f, 0x6b, 0xd2, 0x76, 0xb0, + 0x8d, 0xad, 0x3d, 0xbd, 0x85, 0xbd, 0x9c, 0x6a, 0xe8, 0x2f, 0xf4, 0x45, 0x59, 0x74, 0x7f, 0x31, + 0x04, 0x6a, 0xa8, 0x3a, 0x11, 0xbd, 0xe1, 0xcf, 0xc8, 0x22, 0xbb, 0x83, 0x42, 0x24, 0x93, 0x69, + 0xca, 0x8b, 0xa5, 0xe1, 0x96, 0x6d, 0x1b, 0xb5, 0x5a, 0xb3, 0xbe, 0x52, 0x53, 0x1b, 0x05, 0x59, + 0x99, 0x81, 0x49, 0xf7, 0x75, 0xb5, 0x56, 0x5d, 0x2e, 0x64, 0x95, 0x13, 0x70, 0x6c, 0xa5, 0x58, + 0x6f, 0x56, 0xaa, 0xe7, 0x8a, 0xab, 0x95, 0xc5, 0x66, 0x69, 0xa5, 0xa8, 0xd6, 0x0b, 0x39, 0xe5, + 0x2a, 0x38, 0xd1, 0xa8, 0x94, 0xd5, 0xe6, 0x52, 0xb9, 0xd8, 0xd8, 0x50, 0xcb, 0xf5, 0x66, 0xb5, + 0xd6, 0xac, 0x16, 0xd7, 0xca, 0x85, 0xbc, 0xdb, 0xfc, 0xc9, 0xa7, 0x40, 0x6d, 0x26, 0xf6, 0x2b, + 0xe3, 0x64, 0x84, 0x32, 0x4e, 0xf5, 0x2a, 0x23, 0x84, 0xd5, 0x4a, 0x2d, 0xd7, 0xcb, 0xea, 0xb9, + 0x72, 0x61, 0xba, 0x9f, 0xae, 0xcd, 0x28, 0xc7, 0xa1, 0xe0, 0xf2, 0xd0, 0xac, 0xd4, 0xbd, 0x9c, + 0x8b, 0x85, 0x59, 0xf4, 0xe1, 0x3c, 0x9c, 0x54, 0xf1, 0x96, 0x6e, 0x3b, 0xd8, 0x5a, 0xd7, 0x2e, + 0xef, 0x60, 0xc3, 0xf1, 0x3a, 0xf9, 0x7f, 0x49, 0xac, 0x8c, 0x6b, 0x30, 0xdb, 0xa5, 0x34, 0xd6, + 0xb0, 0xb3, 0x6d, 0xb6, 0xd9, 0x28, 0xfc, 0xa4, 0xc8, 0x9e, 0x63, 0x7e, 0x3d, 0x9c, 0x5d, 0xe5, + 0xff, 0x0e, 0xe9, 0xb6, 0x1c, 0xa3, 0xdb, 0xd9, 0x61, 0x74, 0x5b, 0xb9, 0x06, 0xa6, 0x76, 0x6d, + 0x6c, 0x95, 0x77, 0x34, 0xbd, 0xe3, 0x5d, 0xce, 0xe9, 0x27, 0xa0, 0x37, 0x67, 0x45, 0x4f, 0xac, + 0x84, 0xea, 0xd2, 0x5f, 0x8c, 0x11, 0x7d, 0xeb, 0x69, 0x00, 0x56, 0xd9, 0x0d, 0xab, 0xc3, 0x94, + 0x35, 0x94, 0xe2, 0xf2, 0x77, 0x41, 0xef, 0x74, 0x74, 0x63, 0xcb, 0xdf, 0xf7, 0x0f, 0x12, 0xd0, + 0x8b, 0x65, 0x91, 0x13, 0x2c, 0x49, 0x79, 0x4b, 0xd6, 0x9a, 0x5e, 0x28, 0x8d, 0xb9, 0xdf, 0xdd, + 0xdf, 0x74, 0xf2, 0x4a, 0x01, 0x66, 0x48, 0x1a, 0x6b, 0x81, 0x85, 0x09, 0xb7, 0x0f, 0xf6, 0xc8, + 0xad, 0x95, 0x1b, 0x2b, 0xb5, 0x45, 0xff, 0xdb, 0xa4, 0x4b, 0xd2, 0x65, 0xa6, 0x58, 0x7d, 0x90, + 0xb4, 0xc6, 0x29, 0xe5, 0x09, 0x70, 0x55, 0xa8, 0xc3, 0x2e, 0xae, 0xaa, 0xe5, 0xe2, 0xe2, 0x83, + 0xcd, 0xf2, 0xb3, 0x2a, 0xf5, 0x46, 0x9d, 0x6f, 0x5c, 0x5e, 0x3b, 0x9a, 0x76, 0xf9, 0x2d, 0xaf, + 0x15, 0x2b, 0xab, 0xac, 0x7f, 0x5f, 0xaa, 0xa9, 0x6b, 0xc5, 0x46, 0x61, 0x06, 0xfd, 0x9a, 0x0c, + 0x85, 0x65, 0xec, 0xac, 0x9b, 0x96, 0xa3, 0x75, 0x56, 0x75, 0xe3, 0xe2, 0x86, 0xd5, 0xe1, 0x26, + 0x9b, 0xc2, 0x61, 0x3a, 0xf8, 0x21, 0x92, 0x23, 0x18, 0xbd, 0x23, 0xde, 0x25, 0xd9, 0x02, 0x65, + 0x0a, 0x12, 0xd0, 0x73, 0x24, 0x91, 0xe5, 0x6e, 0xf1, 0x52, 0x93, 0xe9, 0xc9, 0x73, 0xc7, 0x3d, + 0x3e, 0xf7, 0x41, 0x2d, 0x8f, 0x9e, 0x9f, 0x85, 0xc9, 0x25, 0xdd, 0xd0, 0x3a, 0xfa, 0xb3, 0xb9, + 0xf8, 0xa5, 0x41, 0x1f, 0x93, 0x89, 0xe9, 0x63, 0xa4, 0xa1, 0xc6, 0xcf, 0x5f, 0x94, 0x45, 0x97, + 0x17, 0x42, 0xb2, 0xf7, 0x98, 0x8c, 0x18, 0x3c, 0xdf, 0x27, 0x89, 0x2c, 0x2f, 0x0c, 0xa6, 0x97, + 0x0c, 0xc3, 0x8f, 0x7e, 0x77, 0xd8, 0x58, 0x3d, 0xed, 0x7b, 0xb2, 0x9f, 0x2a, 0x4c, 0xa1, 0x3f, + 0x97, 0x01, 0x2d, 0x63, 0xe7, 0x1c, 0xb6, 0xfc, 0xa9, 0x00, 0xe9, 0xf5, 0x99, 0xbd, 0x1d, 0x6a, + 0xb2, 0xaf, 0x0f, 0x03, 0x78, 0x9e, 0x07, 0xb0, 0x18, 0xd3, 0x78, 0x22, 0x48, 0x47, 0x34, 0xde, + 0x0a, 0xe4, 0x6d, 0xf2, 0x9d, 0xa9, 0xd9, 0x6d, 0xd1, 0xc3, 0x25, 0x21, 0x16, 0xa6, 0x4e, 0x09, + 0xab, 0x8c, 0x00, 0xfa, 0x96, 0x3f, 0x09, 0xfa, 0x61, 0x4e, 0x3b, 0x96, 0x0e, 0xcc, 0x6c, 0x32, + 0x7d, 0xb1, 0xd2, 0x55, 0x97, 0x7e, 0xf6, 0x0d, 0x7a, 0x5f, 0x0e, 0x8e, 0xf7, 0xab, 0x0e, 0xfa, + 0xdd, 0x0c, 0xb7, 0xc3, 0x8e, 0xc9, 0x90, 0x9f, 0x61, 0x1b, 0x88, 0xee, 0x8b, 0xf2, 0x34, 0x38, + 0xe1, 0x2f, 0xc3, 0x35, 0xcc, 0x2a, 0xbe, 0x64, 0x77, 0xb0, 0xe3, 0x60, 0x8b, 0x54, 0x6d, 0x52, + 0xed, 0xff, 0x51, 0x79, 0x06, 0x5c, 0xa9, 0x1b, 0xb6, 0xde, 0xc6, 0x56, 0x43, 0xef, 0xda, 0x45, + 0xa3, 0xdd, 0xd8, 0x75, 0x4c, 0x4b, 0xd7, 0xd8, 0x55, 0x92, 0x93, 0x6a, 0xd4, 0x67, 0xe5, 0x26, + 0x28, 0xe8, 0x76, 0xcd, 0xb8, 0x60, 0x6a, 0x56, 0x5b, 0x37, 0xb6, 0x56, 0x75, 0xdb, 0x61, 0x1e, + 0xc0, 0xfb, 0xd2, 0xd1, 0xdf, 0xcb, 0xa2, 0x87, 0xe9, 0x06, 0xc0, 0x1a, 0xd1, 0xa1, 0xfc, 0xb4, + 0x2c, 0x72, 0x3c, 0x2e, 0x19, 0xed, 0x64, 0xca, 0xf2, 0xbc, 0x71, 0x1b, 0x12, 0xfd, 0x47, 0x70, + 0xd2, 0xb5, 0xd0, 0x74, 0xcf, 0x10, 0x38, 0x57, 0x56, 0x2b, 0x4b, 0x95, 0xb2, 0x6b, 0x56, 0x9c, + 0x80, 0x63, 0xc1, 0xb7, 0xc5, 0x07, 0x9b, 0xf5, 0x72, 0xb5, 0x51, 0x98, 0x74, 0xfb, 0x29, 0x9a, + 0xbc, 0x54, 0xac, 0xac, 0x96, 0x17, 0x9b, 0x8d, 0x9a, 0xfb, 0x65, 0x71, 0x38, 0xd3, 0x02, 0x3d, + 0x92, 0x85, 0xa3, 0x44, 0xb6, 0x97, 0x89, 0x54, 0x5d, 0xa1, 0xf4, 0xf8, 0xda, 0xfa, 0x00, 0x4d, + 0x51, 0xf1, 0xa2, 0x4f, 0x0a, 0xdf, 0x94, 0x19, 0x82, 0xb0, 0xa7, 0x8c, 0x08, 0xcd, 0xf8, 0xa6, + 0x24, 0x12, 0xa1, 0x42, 0x98, 0x6c, 0x32, 0xa5, 0xf8, 0xd7, 0x71, 0x8f, 0x38, 0xd1, 0xe0, 0x13, + 0x2b, 0xb3, 0x44, 0x7e, 0x7e, 0xd6, 0x7a, 0x45, 0x25, 0xea, 0x30, 0x07, 0x40, 0x52, 0x88, 0x06, + 0x51, 0x3d, 0xe8, 0x3b, 0x5e, 0x45, 0xe9, 0x41, 0xb1, 0xd4, 0xa8, 0x9c, 0x2b, 0x47, 0xe9, 0xc1, + 0x27, 0x64, 0x98, 0x5c, 0xc6, 0x8e, 0x3b, 0xa7, 0xb2, 0xd1, 0x33, 0x05, 0xd6, 0x7f, 0x5c, 0x33, + 0xa6, 0x63, 0xb6, 0xb4, 0x8e, 0xbf, 0x0c, 0x40, 0xdf, 0xd0, 0x4f, 0x0d, 0x63, 0x82, 0x78, 0x45, + 0x47, 0x8c, 0x57, 0x3f, 0x08, 0x39, 0xc7, 0xfd, 0xcc, 0x96, 0xa1, 0xbf, 0x2f, 0x72, 0xb8, 0x72, + 0x89, 0x2c, 0x6a, 0x8e, 0xa6, 0xd2, 0xfc, 0xa1, 0xd1, 0x49, 0xd0, 0x76, 0x89, 0x60, 0xe4, 0xbb, + 0xd1, 0xfe, 0xfc, 0x5b, 0x19, 0x4e, 0xd0, 0xf6, 0x51, 0xec, 0x76, 0xeb, 0x8e, 0x69, 0x61, 0x15, + 0xb7, 0xb0, 0xde, 0x75, 0x7a, 0xd6, 0xf7, 0x2c, 0x9a, 0xea, 0x6d, 0x36, 0xb3, 0x57, 0xf4, 0x9b, + 0xb2, 0x68, 0x0c, 0xe6, 0x7d, 0xed, 0xb1, 0xa7, 0xbc, 0x88, 0xc6, 0xfe, 0x21, 0x49, 0x24, 0xaa, + 0x72, 0x42, 0xe2, 0xc9, 0x80, 0x7a, 0xff, 0x21, 0x00, 0xe5, 0xad, 0xdc, 0xa8, 0xe5, 0x52, 0xb9, + 0xb2, 0xee, 0x0e, 0x02, 0xd7, 0xc2, 0xd5, 0xeb, 0x1b, 0x6a, 0x69, 0xa5, 0x58, 0x2f, 0x37, 0xd5, + 0xf2, 0x72, 0xa5, 0xde, 0x60, 0x4e, 0x59, 0xf4, 0xaf, 0x09, 0xe5, 0x1a, 0x38, 0x55, 0xdf, 0x58, + 0xa8, 0x97, 0xd4, 0xca, 0x3a, 0x49, 0x57, 0xcb, 0xd5, 0xf2, 0x79, 0xf6, 0x75, 0x12, 0xbd, 0xa7, + 0x00, 0xd3, 0xee, 0x04, 0xa0, 0x4e, 0xe7, 0x05, 0xe8, 0x6b, 0x59, 0x98, 0x56, 0xb1, 0x6d, 0x76, + 0xf6, 0xc8, 0x1c, 0x61, 0x5c, 0x53, 0x8f, 0x6f, 0xc8, 0xa2, 0xe7, 0xb7, 0x43, 0xcc, 0xce, 0x87, + 0x18, 0x8d, 0x9e, 0x68, 0x6a, 0x7b, 0x9a, 0xde, 0xd1, 0x2e, 0xb0, 0xae, 0x66, 0x52, 0x0d, 0x12, + 0x94, 0x79, 0x50, 0xcc, 0x4b, 0x06, 0xb6, 0xea, 0xad, 0x4b, 0x65, 0x67, 0xbb, 0xd8, 0x6e, 0x5b, + 0xd8, 0xb6, 0xd9, 0xea, 0x45, 0x9f, 0x2f, 0xca, 0x8d, 0x70, 0x94, 0xa4, 0x86, 0x32, 0x53, 0x07, + 0x99, 0xde, 0x64, 0x3f, 0x67, 0xd1, 0xb8, 0xec, 0xe5, 0xcc, 0x85, 0x72, 0x06, 0xc9, 0xe1, 0xe3, + 0x12, 0x79, 0xfe, 0x94, 0xce, 0x19, 0x98, 0x36, 0xb4, 0x1d, 0x5c, 0x7e, 0xb8, 0xab, 0x5b, 0xd8, + 0x26, 0x8e, 0x31, 0xb2, 0x1a, 0x4e, 0x42, 0xef, 0x13, 0x3a, 0x6f, 0x2e, 0x26, 0xb1, 0x64, 0xba, + 0xbf, 0x3c, 0x84, 0xea, 0xf7, 0xe9, 0x67, 0x64, 0xf4, 0x1e, 0x19, 0x66, 0x18, 0x53, 0x45, 0xe3, + 0x72, 0xa5, 0x8d, 0xae, 0xe5, 0x8c, 0x5f, 0xcd, 0x4d, 0xf3, 0x8c, 0x5f, 0xf2, 0x82, 0x7e, 0x56, + 0x16, 0x75, 0x77, 0xee, 0x53, 0x71, 0x52, 0x46, 0xb4, 0xe3, 0xe8, 0xa6, 0xb9, 0xcb, 0x1c, 0x55, + 0x27, 0x55, 0xfa, 0x92, 0xe6, 0xa2, 0x1e, 0xfa, 0x03, 0x21, 0x67, 0x6a, 0xc1, 0x6a, 0x1c, 0x12, + 0x80, 0x1f, 0x91, 0x61, 0x8e, 0x71, 0x55, 0x67, 0xe7, 0x7c, 0x84, 0x0e, 0xbc, 0xfd, 0x9c, 0xb0, + 0x21, 0xd8, 0xa7, 0xfe, 0xac, 0xa4, 0xc7, 0x0d, 0x90, 0x1f, 0x10, 0x0a, 0x8e, 0x26, 0x5c, 0x91, + 0x43, 0x82, 0xf2, 0x2d, 0x59, 0x98, 0xde, 0xb0, 0xb1, 0xc5, 0xfc, 0xf6, 0xd1, 0xab, 0xb2, 0x20, + 0x2f, 0x63, 0x6e, 0x23, 0xf5, 0x45, 0xc2, 0x1e, 0xbe, 0xe1, 0xca, 0x86, 0x88, 0xba, 0x36, 0x52, + 0x04, 0x6c, 0x37, 0xc0, 0x1c, 0x15, 0x69, 0xd1, 0x71, 0x5c, 0x23, 0xd1, 0xf3, 0xa6, 0xed, 0x49, + 0x1d, 0xc5, 0x56, 0x11, 0x29, 0xcb, 0xcd, 0x52, 0x72, 0x79, 0x5a, 0xc5, 0x9b, 0x74, 0x3e, 0x9b, + 0x55, 0x7b, 0x52, 0x95, 0x5b, 0xe1, 0x0a, 0xb3, 0x8b, 0xe9, 0xf9, 0x95, 0x50, 0xe6, 0x1c, 0xc9, + 0xdc, 0xef, 0x13, 0xfa, 0x9a, 0x90, 0xaf, 0xae, 0xb8, 0x74, 0x92, 0xe9, 0x42, 0x77, 0x34, 0x26, + 0xc9, 0x71, 0x28, 0xb8, 0x39, 0xc8, 0xfe, 0x8b, 0x5a, 0xae, 0xd7, 0x56, 0xcf, 0x95, 0xfb, 0x2f, + 0x63, 0xe4, 0xd0, 0xf3, 0x64, 0x98, 0x5a, 0xb0, 0x4c, 0xad, 0xdd, 0xd2, 0x6c, 0x07, 0x7d, 0x4b, + 0x82, 0x99, 0x75, 0xed, 0x72, 0xc7, 0xd4, 0xda, 0xc4, 0xbf, 0xbf, 0xa7, 0x2f, 0xe8, 0xd2, 0x4f, + 0x5e, 0x5f, 0xc0, 0x5e, 0xf9, 0x83, 0x81, 0xfe, 0xd1, 0xbd, 0x8c, 0xc8, 0x85, 0x9a, 0xfe, 0x36, + 0x9f, 0xd4, 0x2f, 0x58, 0xa9, 0xc7, 0xd7, 0x7c, 0x98, 0xa7, 0x08, 0x8b, 0xf2, 0x3d, 0x62, 0xe1, + 0x47, 0x45, 0x48, 0x1e, 0xce, 0xae, 0xfc, 0xf3, 0x27, 0x21, 0xbf, 0x88, 0x89, 0x15, 0xf7, 0x3f, + 0x24, 0x98, 0xa8, 0x63, 0x87, 0x58, 0x70, 0x77, 0x70, 0x9e, 0xc2, 0x6d, 0x92, 0x21, 0x70, 0x62, + 0xf7, 0xde, 0xdd, 0xc9, 0x7a, 0xe8, 0xbc, 0x35, 0x79, 0x4e, 0xe0, 0x91, 0x48, 0xcb, 0x9d, 0x67, + 0x65, 0x1e, 0xc8, 0x23, 0x31, 0x96, 0x54, 0xfa, 0xbe, 0x56, 0x6f, 0x93, 0x98, 0x6b, 0x55, 0xa8, + 0xd7, 0xfb, 0x8d, 0xb0, 0x7e, 0xc6, 0x7a, 0x9b, 0x31, 0xe6, 0x63, 0x9c, 0xa3, 0x9e, 0x0a, 0x13, + 0x54, 0xe6, 0xde, 0x7c, 0xb4, 0xd7, 0x4f, 0x81, 0x92, 0x20, 0x67, 0xaf, 0xbd, 0x9c, 0x82, 0x2e, + 0x6a, 0xd1, 0x85, 0x8f, 0x25, 0x06, 0xc1, 0x4c, 0x15, 0x3b, 0x97, 0x4c, 0xeb, 0x62, 0xdd, 0xd1, + 0x1c, 0x8c, 0xfe, 0x55, 0x02, 0xb9, 0x8e, 0x9d, 0x70, 0xf4, 0x93, 0x2a, 0x1c, 0xa3, 0x15, 0x62, + 0x19, 0x49, 0xff, 0x4d, 0x2b, 0x72, 0xa6, 0xaf, 0x10, 0x42, 0xf9, 0xd4, 0xfd, 0xbf, 0xa2, 0x5f, + 0xee, 0x1b, 0xf4, 0x49, 0xea, 0x33, 0x69, 0x60, 0x92, 0x09, 0x33, 0xe8, 0x2a, 0x58, 0x84, 0x9e, + 0xbe, 0x57, 0xc8, 0xac, 0x16, 0xa3, 0x79, 0x38, 0x5d, 0xc1, 0x07, 0xae, 0x82, 0x6c, 0x69, 0x5b, + 0x73, 0xd0, 0x5b, 0x65, 0x80, 0x62, 0xbb, 0xbd, 0x46, 0x7d, 0xc0, 0xc3, 0x0e, 0x69, 0x67, 0x61, + 0xa6, 0xb5, 0xad, 0x05, 0x77, 0x9b, 0xd0, 0xfe, 0x80, 0x4b, 0x53, 0x9e, 0x16, 0x38, 0x93, 0x53, + 0xa9, 0xa2, 0x1e, 0x98, 0xdc, 0x32, 0x18, 0x6d, 0xdf, 0xd1, 0x9c, 0x0f, 0x85, 0x19, 0x7b, 0x84, + 0xce, 0xfd, 0x7d, 0x3e, 0x60, 0x2f, 0x7a, 0x0e, 0xc7, 0x48, 0xfb, 0x07, 0x6c, 0x82, 0x84, 0x84, + 0x27, 0xbd, 0xc5, 0x02, 0x7a, 0xc4, 0xf3, 0x35, 0x96, 0xd0, 0xb5, 0x4a, 0xb9, 0xad, 0x7b, 0xa2, + 0x65, 0x01, 0xb3, 0xd0, 0x0b, 0x33, 0xc9, 0xe0, 0x8b, 0x17, 0xdc, 0x7d, 0x30, 0x8b, 0xdb, 0xba, + 0x83, 0xbd, 0x5a, 0x32, 0x01, 0xc6, 0x41, 0xcc, 0xff, 0x80, 0x9e, 0x2b, 0x1c, 0x74, 0x8d, 0x08, + 0x74, 0x7f, 0x8d, 0x22, 0xda, 0x9f, 0x58, 0x18, 0x35, 0x31, 0x9a, 0xe9, 0x83, 0xf5, 0x53, 0x32, + 0x9c, 0x68, 0x98, 0x5b, 0x5b, 0x1d, 0xec, 0x89, 0x09, 0x53, 0xef, 0x4c, 0xa4, 0x8d, 0x12, 0x2e, + 0xb2, 0x13, 0x64, 0x3e, 0xa4, 0xfb, 0x47, 0xc9, 0xdc, 0x17, 0xfe, 0xc4, 0x54, 0xec, 0x2c, 0x8a, + 0x88, 0xab, 0x2f, 0x9f, 0x11, 0x28, 0x88, 0x05, 0x7c, 0x16, 0x26, 0x9b, 0x3e, 0x10, 0x9f, 0x93, + 0x60, 0x96, 0xde, 0x5c, 0xe9, 0x29, 0xe8, 0x03, 0x23, 0x04, 0x00, 0x7d, 0x2b, 0x23, 0xea, 0x67, + 0x4b, 0x64, 0xc2, 0x71, 0x12, 0x21, 0x62, 0xb1, 0xa0, 0x2a, 0x03, 0xc9, 0xa5, 0x2f, 0xda, 0x3f, + 0x91, 0x61, 0x7a, 0x19, 0x7b, 0x2d, 0xcd, 0x4e, 0xdc, 0x13, 0x9d, 0x85, 0x19, 0x72, 0x7d, 0x5b, + 0x8d, 0x1d, 0x93, 0xa4, 0xab, 0x66, 0x5c, 0x9a, 0x72, 0x3d, 0xcc, 0x5e, 0xc0, 0x9b, 0xa6, 0x85, + 0x6b, 0xdc, 0x59, 0x4a, 0x3e, 0x31, 0x22, 0x3c, 0x1d, 0x17, 0x07, 0x6d, 0x81, 0xc7, 0xe6, 0xe6, + 0xfd, 0xc2, 0x0c, 0x55, 0x25, 0x62, 0xcc, 0x79, 0x3a, 0x4c, 0x32, 0xe4, 0x3d, 0x33, 0x2d, 0xae, + 0x5f, 0xf4, 0xf3, 0xa2, 0xd7, 0xf8, 0x88, 0x96, 0x39, 0x44, 0x6f, 0x4b, 0xc2, 0xc4, 0x58, 0xee, + 0x77, 0x2f, 0x84, 0xca, 0x5f, 0xb8, 0x5c, 0x69, 0xdb, 0x68, 0x2d, 0x19, 0xa6, 0xa7, 0x01, 0xfc, + 0xc6, 0xe1, 0x85, 0xb5, 0x08, 0xa5, 0xf0, 0x91, 0xeb, 0x63, 0x0f, 0xea, 0xf5, 0x8a, 0x83, 0xb0, + 0x33, 0x62, 0x60, 0xc4, 0x0e, 0xf8, 0x89, 0x70, 0x92, 0x3e, 0x3a, 0x1f, 0x97, 0xe1, 0x84, 0x7f, + 0xfe, 0x68, 0x55, 0xb3, 0x83, 0x76, 0x57, 0x4a, 0x06, 0x11, 0x77, 0xe0, 0xc3, 0x6f, 0x2c, 0x5f, + 0x4f, 0x36, 0x66, 0xf4, 0xe5, 0x64, 0xb4, 0xe8, 0x28, 0x37, 0xc3, 0x31, 0x63, 0x77, 0xc7, 0x97, + 0x3a, 0x69, 0xf1, 0xac, 0x85, 0xef, 0xff, 0x90, 0x64, 0x64, 0x12, 0x61, 0x7e, 0x2c, 0x73, 0x4a, + 0xee, 0x48, 0xd7, 0x53, 0x12, 0xc1, 0x88, 0xfe, 0x39, 0x93, 0xa8, 0x77, 0x1b, 0x7c, 0xe6, 0x2b, + 0x41, 0x2f, 0x75, 0x88, 0x07, 0xbe, 0xce, 0x4e, 0x40, 0xae, 0xbc, 0xd3, 0x75, 0x2e, 0x9f, 0x7d, + 0x22, 0xcc, 0xd6, 0x1d, 0x0b, 0x6b, 0x3b, 0xa1, 0x9d, 0x01, 0xc7, 0xbc, 0x88, 0x0d, 0x6f, 0x67, + 0x80, 0xbc, 0xdc, 0x79, 0x07, 0x4c, 0x18, 0x66, 0x53, 0xdb, 0x75, 0xb6, 0x95, 0x6b, 0xf7, 0x1d, + 0xa9, 0x67, 0xe0, 0xd7, 0x58, 0x0c, 0xa3, 0x2f, 0xde, 0x45, 0xd6, 0x86, 0xf3, 0x86, 0x59, 0xdc, + 0x75, 0xb6, 0x17, 0xae, 0xf9, 0xc8, 0xdf, 0x9c, 0xce, 0x7c, 0xe2, 0x6f, 0x4e, 0x67, 0xbe, 0xf0, + 0x37, 0xa7, 0x33, 0x3f, 0xf7, 0xa5, 0xd3, 0x47, 0x3e, 0xf1, 0xa5, 0xd3, 0x47, 0x3e, 0xf7, 0xa5, + 0xd3, 0x47, 0x7e, 0x58, 0xea, 0x5e, 0xb8, 0x90, 0x27, 0x54, 0x9e, 0xfa, 0xff, 0x06, 0x00, 0x00, + 0xff, 0xff, 0x07, 0xc6, 0xed, 0x93, 0x99, 0x0b, 0x02, 0x00, } func (m *Rpc) Marshal() (dAtA []byte, err error) { @@ -76751,6 +77106,13 @@ func (m *RpcAccountCreateRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) _ = i var l int _ = l + if len(m.JsonApiListenAddr) > 0 { + i -= len(m.JsonApiListenAddr) + copy(dAtA[i:], m.JsonApiListenAddr) + i = encodeVarintCommands(dAtA, i, uint64(len(m.JsonApiListenAddr))) + i-- + dAtA[i] = 0x4a + } if m.PreferYamuxTransport { i-- if m.PreferYamuxTransport { @@ -77337,6 +77699,13 @@ func (m *RpcAccountSelectRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) _ = i var l int _ = l + if len(m.JsonApiListenAddr) > 0 { + i -= len(m.JsonApiListenAddr) + copy(dAtA[i:], m.JsonApiListenAddr) + i = encodeVarintCommands(dAtA, i, uint64(len(m.JsonApiListenAddr))) + i-- + dAtA[i] = 0x3a + } if m.PreferYamuxTransport { i-- if m.PreferYamuxTransport { @@ -78186,6 +78555,129 @@ func (m *RpcAccountEnableLocalNetworkSyncResponseError) MarshalToSizedBuffer(dAt return len(dAtA) - i, nil } +func (m *RpcAccountChangeJsonApiAddr) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcAccountChangeJsonApiAddr) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcAccountChangeJsonApiAddr) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *RpcAccountChangeJsonApiAddrRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcAccountChangeJsonApiAddrRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcAccountChangeJsonApiAddrRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.ListenAddr) > 0 { + i -= len(m.ListenAddr) + copy(dAtA[i:], m.ListenAddr) + i = encodeVarintCommands(dAtA, i, uint64(len(m.ListenAddr))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *RpcAccountChangeJsonApiAddrResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcAccountChangeJsonApiAddrResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcAccountChangeJsonApiAddrResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Error != nil { + { + size, err := m.Error.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCommands(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + return len(dAtA) - i, nil +} + +func (m *RpcAccountChangeJsonApiAddrResponseError) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcAccountChangeJsonApiAddrResponseError) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcAccountChangeJsonApiAddrResponseError) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Description) > 0 { + i -= len(m.Description) + copy(dAtA[i:], m.Description) + i = encodeVarintCommands(dAtA, i, uint64(len(m.Description))) + i-- + dAtA[i] = 0x12 + } + if m.Code != 0 { + i = encodeVarintCommands(dAtA, i, uint64(m.Code)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + func (m *RpcAccountChangeNetworkConfigAndRestart) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -78380,6 +78872,11 @@ func (m *RpcAccountLocalLinkNewChallengeRequest) MarshalToSizedBuffer(dAtA []byt _ = i var l int _ = l + if m.Scope != 0 { + i = encodeVarintCommands(dAtA, i, uint64(m.Scope)) + i-- + dAtA[i] = 0x10 + } if len(m.AppName) > 0 { i -= len(m.AppName) copy(dAtA[i:], m.AppName) @@ -88359,15 +88856,17 @@ func (m *RpcObjectListExportRequest) MarshalToSizedBuffer(dAtA []byte) (int, err _ = i var l int _ = l - if m.IncludeDependentDetails { - i-- - if m.IncludeDependentDetails { - dAtA[i] = 1 - } else { - dAtA[i] = 0 + if m.LinksStateFilters != nil { + { + size, err := m.LinksStateFilters.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCommands(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0x60 + dAtA[i] = 0x62 } if m.NoProgress { i-- @@ -88460,6 +88959,90 @@ func (m *RpcObjectListExportRequest) MarshalToSizedBuffer(dAtA []byte) (int, err return len(dAtA) - i, nil } +func (m *RpcObjectListExportStateFilters) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcObjectListExportStateFilters) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcObjectListExportStateFilters) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.RemoveBlocks { + i-- + if m.RemoveBlocks { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x10 + } + if len(m.RelationsWhiteList) > 0 { + for iNdEx := len(m.RelationsWhiteList) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.RelationsWhiteList[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCommands(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *RpcObjectListExportRelationsWhiteList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcObjectListExportRelationsWhiteList) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcObjectListExportRelationsWhiteList) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.AllowedRelations) > 0 { + for iNdEx := len(m.AllowedRelations) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.AllowedRelations[iNdEx]) + copy(dAtA[i:], m.AllowedRelations[iNdEx]) + i = encodeVarintCommands(dAtA, i, uint64(len(m.AllowedRelations[iNdEx]))) + i-- + dAtA[i] = 0x12 + } + } + if m.Layout != 0 { + i = encodeVarintCommands(dAtA, i, uint64(m.Layout)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + func (m *RpcObjectListExportResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -120000,6 +120583,10 @@ func (m *RpcAccountCreateRequest) Size() (n int) { if m.PreferYamuxTransport { n += 2 } + l = len(m.JsonApiListenAddr) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } return n } @@ -120235,6 +120822,10 @@ func (m *RpcAccountSelectRequest) Size() (n int) { if m.PreferYamuxTransport { n += 2 } + l = len(m.JsonApiListenAddr) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } return n } @@ -120567,6 +121158,57 @@ func (m *RpcAccountEnableLocalNetworkSyncResponseError) Size() (n int) { return n } +func (m *RpcAccountChangeJsonApiAddr) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *RpcAccountChangeJsonApiAddrRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ListenAddr) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + +func (m *RpcAccountChangeJsonApiAddrResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Error != nil { + l = m.Error.Size() + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + +func (m *RpcAccountChangeJsonApiAddrResponseError) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Code != 0 { + n += 1 + sovCommands(uint64(m.Code)) + } + l = len(m.Description) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + func (m *RpcAccountChangeNetworkConfigAndRestart) Size() (n int) { if m == nil { return 0 @@ -120649,6 +121291,9 @@ func (m *RpcAccountLocalLinkNewChallengeRequest) Size() (n int) { if l > 0 { n += 1 + l + sovCommands(uint64(l)) } + if m.Scope != 0 { + n += 1 + sovCommands(uint64(m.Scope)) + } return n } @@ -124906,12 +125551,49 @@ func (m *RpcObjectListExportRequest) Size() (n int) { if m.NoProgress { n += 2 } - if m.IncludeDependentDetails { + if m.LinksStateFilters != nil { + l = m.LinksStateFilters.Size() + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + +func (m *RpcObjectListExportStateFilters) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.RelationsWhiteList) > 0 { + for _, e := range m.RelationsWhiteList { + l = e.Size() + n += 1 + l + sovCommands(uint64(l)) + } + } + if m.RemoveBlocks { n += 2 } return n } +func (m *RpcObjectListExportRelationsWhiteList) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Layout != 0 { + n += 1 + sovCommands(uint64(m.Layout)) + } + if len(m.AllowedRelations) > 0 { + for _, s := range m.AllowedRelations { + l = len(s) + n += 1 + l + sovCommands(uint64(l)) + } + } + return n +} + func (m *RpcObjectListExportResponse) Size() (n int) { if m == nil { return 0 @@ -146952,6 +147634,38 @@ func (m *RpcAccountCreateRequest) Unmarshal(dAtA []byte) error { } } m.PreferYamuxTransport = bool(v != 0) + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field JsonApiListenAddr", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.JsonApiListenAddr = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipCommands(dAtA[iNdEx:]) @@ -148399,6 +149113,38 @@ func (m *RpcAccountSelectRequest) Unmarshal(dAtA []byte) error { } } m.PreferYamuxTransport = bool(v != 0) + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field JsonApiListenAddr", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.JsonApiListenAddr = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipCommands(dAtA[iNdEx:]) @@ -150495,6 +151241,325 @@ func (m *RpcAccountEnableLocalNetworkSyncResponseError) Unmarshal(dAtA []byte) e } return nil } +func (m *RpcAccountChangeJsonApiAddr) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ChangeJsonApiAddr: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ChangeJsonApiAddr: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcAccountChangeJsonApiAddrRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Request: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Request: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListenAddr", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ListenAddr = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcAccountChangeJsonApiAddrResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Response: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Response: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Error == nil { + m.Error = &RpcAccountChangeJsonApiAddrResponseError{} + } + if err := m.Error.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcAccountChangeJsonApiAddrResponseError) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Error: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Error: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Code", wireType) + } + m.Code = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Code |= RpcAccountChangeJsonApiAddrResponseErrorCode(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *RpcAccountChangeNetworkConfigAndRestart) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -150994,6 +152059,25 @@ func (m *RpcAccountLocalLinkNewChallengeRequest) Unmarshal(dAtA []byte) error { } m.AppName = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Scope", wireType) + } + m.Scope = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Scope |= model.AccountAuthLocalApiScope(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipCommands(dAtA[iNdEx:]) @@ -178338,8 +179422,128 @@ func (m *RpcObjectListExportRequest) Unmarshal(dAtA []byte) error { } m.NoProgress = bool(v != 0) case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LinksStateFilters", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.LinksStateFilters == nil { + m.LinksStateFilters = &RpcObjectListExportStateFilters{} + } + if err := m.LinksStateFilters.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcObjectListExportStateFilters) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: StateFilters: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: StateFilters: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RelationsWhiteList", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RelationsWhiteList = append(m.RelationsWhiteList, &RpcObjectListExportRelationsWhiteList{}) + if err := m.RelationsWhiteList[len(m.RelationsWhiteList)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field IncludeDependentDetails", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field RemoveBlocks", wireType) } var v int for shift := uint(0); ; shift += 7 { @@ -178356,7 +179560,108 @@ func (m *RpcObjectListExportRequest) Unmarshal(dAtA []byte) error { break } } - m.IncludeDependentDetails = bool(v != 0) + m.RemoveBlocks = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcObjectListExportRelationsWhiteList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RelationsWhiteList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RelationsWhiteList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Layout", wireType) + } + m.Layout = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Layout |= model.ObjectTypeLayout(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AllowedRelations", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AllowedRelations = append(m.AllowedRelations, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipCommands(dAtA[iNdEx:]) From 16c425f5462f80a20a76ff3cea1c7c90e2b01476 Mon Sep 17 00:00:00 2001 From: AnastasiaShemyakinskaya Date: Fri, 24 Jan 2025 16:34:05 +0100 Subject: [PATCH 225/279] GO-4889: remove not needed code Signed-off-by: AnastasiaShemyakinskaya --- core/block/export/export.go | 24 +-- core/block/export/export_test.go | 131 ------------ core/converter/pbc/pbc.go | 18 +- core/converter/pbc/pbc_test.go | 48 +---- docs/proto.md | 18 -- pb/protos/snapshot.proto | 6 - pb/snapshot.pb.go | 346 +++---------------------------- 7 files changed, 34 insertions(+), 557 deletions(-) diff --git a/core/block/export/export.go b/core/block/export/export.go index 9dd658cc5..0b6d70d92 100644 --- a/core/block/export/export.go +++ b/core/block/export/export.go @@ -179,7 +179,7 @@ func newExportContext(e *export, req pb.RpcObjectListExportRequest) *exportConte reqIds: req.ObjectIds, zip: req.Zip, linkStateFilters: pbFiltersToState(req.LinksStateFilters), - includeDependentDetails: req.IncludeDependentDetails,export: e, + export: e, } return ec } @@ -1016,16 +1016,12 @@ func (e *exportContext) writeDoc(ctx context.Context, wr writer, docId string, d } } - dependentDetails, err := e.getDependentDetails(b, st, err) - if err != nil { - return err - } var conv converter.Converter switch e.format { case model.Export_Markdown: conv = md.NewMDConverter(st, wr.Namer()) case model.Export_Protobuf: - conv = pbc.NewConverter(st, e.isJson, dependentDetails) + conv = pbc.NewConverter(st, e.isJson) case model.Export_JSON: conv = pbjson.NewConverter(st) } @@ -1047,22 +1043,6 @@ func (e *exportContext) writeDoc(ctx context.Context, wr writer, docId string, d }) } -func (e *exportContext) getDependentDetails(b sb.SmartBlock, st *state.State, err error) ([]database.Record, error) { - var dependentDetails []database.Record - if e.includeDependentDetails { - dependentObjectIDs := objectlink.DependentObjectIDs(st, b.Space(), objectlink.Flags{ - Blocks: true, - Details: true, - Types: true, - }) - dependentDetails, err = e.objectStore.SpaceIndex(b.SpaceID()).QueryByIds(dependentObjectIDs) - if err != nil { - return nil, err - } - } - return dependentDetails, nil -} - func (e *exportContext) saveFile(ctx context.Context, wr writer, fileObject sb.SmartBlock, exportAllSpaces bool) (fileName string, err error) { fullId := domain.FullFileId{ SpaceId: fileObject.Space().Id(), diff --git a/core/block/export/export_test.go b/core/block/export/export_test.go index da38e3599..001ce203b 100644 --- a/core/block/export/export_test.go +++ b/core/block/export/export_test.go @@ -31,7 +31,6 @@ import ( "github.com/anyproto/anytype-heart/pkg/lib/pb/model" "github.com/anyproto/anytype-heart/space/spacecore/typeprovider/mock_typeprovider" "github.com/anyproto/anytype-heart/tests/testutil" - "github.com/anyproto/anytype-heart/util/pbtypes" ) func TestFileNamer_Get(t *testing.T) { @@ -2126,136 +2125,6 @@ func Test_docsForExport(t *testing.T) { assert.Nil(t, err) assert.Equal(t, 2, len(expCtx.docs)) }) - t.Run("include dependent details", func(t *testing.T) { - // given - storeFixture := objectstore.NewStoreFixture(t) - objectTypeId := "customObjectType" - objectTypeUniqueKey, err := domain.NewUniqueKey(smartblock.SmartBlockTypeObjectType, objectTypeId) - assert.Nil(t, err) - - objectID := "id" - targetBlockId := "targetBlockId" - storeFixture.AddObjects(t, spaceId, []spaceindex.TestObject{ - { - bundle.RelationKeyId: domain.String(objectID), - bundle.RelationKeyType: domain.String(objectTypeId), - bundle.RelationKeySpaceId: domain.String(spaceId), - }, - { - bundle.RelationKeyId: domain.String(targetBlockId), - bundle.RelationKeyType: domain.String(objectTypeId), - bundle.RelationKeySpaceId: domain.String(spaceId), - bundle.RelationKeyName: domain.String("test"), - }, - { - bundle.RelationKeyId: domain.String(objectTypeId), - bundle.RelationKeyUniqueKey: domain.String(objectTypeUniqueKey.Marshal()), - bundle.RelationKeyLayout: domain.Int64(int64(model.ObjectType_objectType)), - bundle.RelationKeyRecommendedRelations: domain.StringList([]string{addr.MissingObject}), - bundle.RelationKeySpaceId: domain.String(spaceId), - }, - }) - - objectGetter := mock_cache.NewMockObjectGetter(t) - - smartBlockTest := smarttest.New(objectID) - doc := smartBlockTest.NewState().SetDetails(domain.NewDetailsFromMap(map[domain.RelationKey]domain.Value{ - bundle.RelationKeyId: domain.String(objectID), - bundle.RelationKeyType: domain.String(objectTypeId), - })) - doc.AddRelationLinks(&model.RelationLink{ - Key: bundle.RelationKeyId.String(), - Format: model.RelationFormat_longtext, - }, &model.RelationLink{ - Key: bundle.RelationKeyType.String(), - Format: model.RelationFormat_longtext, - }) - smartBlockTest.Doc = doc - - smartBlockTest.AddBlock(simple.New(&model.Block{ - Id: objectID, - ChildrenIds: []string{"link"}, - Content: &model.BlockContentOfSmartblock{Smartblock: &model.BlockContentSmartblock{}}, - })) - smartBlockTest.AddBlock(simple.New(&model.Block{ - Id: "link", - Content: &model.BlockContentOfLink{Link: &model.BlockContentLink{ - TargetBlockId: targetBlockId, - }}, - })) - - smartBlockTest.SetSpaceId(spaceId) - objectType := smarttest.New(objectTypeId) - objectTypeDoc := objectType.NewState().SetDetails(domain.NewDetailsFromMap(map[domain.RelationKey]domain.Value{ - bundle.RelationKeyId: domain.String(objectTypeId), - bundle.RelationKeyType: domain.String(objectTypeId), - })) - objectTypeDoc.AddRelationLinks(&model.RelationLink{ - Key: bundle.RelationKeyId.String(), - Format: model.RelationFormat_longtext, - }, &model.RelationLink{ - Key: bundle.RelationKeyType.String(), - Format: model.RelationFormat_longtext, - }) - objectType.Doc = objectTypeDoc - objectType.SetType(smartblock.SmartBlockTypeObjectType) - objectType.SetSpaceId(spaceId) - - objectGetter.EXPECT().GetObject(context.Background(), objectID).Return(smartBlockTest, nil) - objectGetter.EXPECT().GetObject(context.Background(), objectTypeId).Return(objectType, nil) - - a := &app.App{} - mockSender := mock_event.NewMockSender(t) - a.Register(testutil.PrepareMock(context.Background(), a, mockSender)) - service := process.New() - err = service.Init(a) - assert.Nil(t, err) - - notifications := mock_notifications.NewMockNotifications(t) - - e := &export{ - objectStore: storeFixture, - picker: objectGetter, - processService: service, - notificationService: notifications, - } - - // when - path, success, err := e.Export(context.Background(), pb.RpcObjectListExportRequest{ - SpaceId: spaceId, - Path: t.TempDir(), - ObjectIds: []string{objectID}, - Format: model.Export_Protobuf, - IncludeFiles: true, - IsJson: true, - NoProgress: true, - IncludeDependentDetails: true, - }) - - // then - assert.Nil(t, err) - assert.Equal(t, 2, success) - - objectPath := filepath.Join(path, objectsDirectory, objectID+".pb.json") - file, err := os.Open(objectPath) - assert.Nil(t, err) - var snapshot pb.SnapshotWithType - err = jsonpb.Unmarshal(file, &snapshot) - assert.Nil(t, err) - - expected := []*pb.DependantDetail{ - { - Id: targetBlockId, - Details: &types.Struct{Fields: map[string]*types.Value{ - bundle.RelationKeyId.String(): pbtypes.String(targetBlockId), - bundle.RelationKeyType.String(): pbtypes.String(objectTypeId), - bundle.RelationKeySpaceId.String(): pbtypes.String(spaceId), - bundle.RelationKeyName.String(): pbtypes.String("test"), - }}, - }, - } - assert.Equal(t, expected, snapshot.DependantDetails) - }) } func Test_provideFileName(t *testing.T) { diff --git a/core/converter/pbc/pbc.go b/core/converter/pbc/pbc.go index af8cc7150..8196973cf 100644 --- a/core/converter/pbc/pbc.go +++ b/core/converter/pbc/pbc.go @@ -7,7 +7,6 @@ import ( "github.com/anyproto/anytype-heart/core/converter" "github.com/anyproto/anytype-heart/core/domain" "github.com/anyproto/anytype-heart/pb" - "github.com/anyproto/anytype-heart/pkg/lib/bundle" "github.com/anyproto/anytype-heart/pkg/lib/database" "github.com/anyproto/anytype-heart/pkg/lib/logging" "github.com/anyproto/anytype-heart/pkg/lib/pb/model" @@ -15,11 +14,10 @@ import ( var log = logging.Logger("pb-converter") -func NewConverter(s state.Doc, isJSON bool, dependentDetails []database.Record) converter.Converter { +func NewConverter(s state.Doc, isJSON bool) converter.Converter { return &pbc{ - s: s, - isJSON: isJSON, - dependentDetails: dependentDetails, + s: s, + isJSON: isJSON, } } @@ -42,20 +40,10 @@ func (p *pbc) Convert(sbType model.SmartBlockType) []byte { FileInfo: st.GetFileInfo().ToModel(), }, } - dependentDetails := make([]*pb.DependantDetail, 0, len(p.dependentDetails)) - for _, detail := range p.dependentDetails { - dependentDetails = append(dependentDetails, &pb.DependantDetail{ - Id: detail.Details.GetString(bundle.RelationKeyId), - Details: detail.Details.ToProto(), - }) - } mo := &pb.SnapshotWithType{ SbType: sbType, Snapshot: snapshot, } - if len(dependentDetails) > 0 { - mo.DependantDetails = dependentDetails - } if p.isJSON { m := jsonpb.Marshaler{Indent: " "} result, err := m.MarshalToString(mo) diff --git a/core/converter/pbc/pbc_test.go b/core/converter/pbc/pbc_test.go index ca4f3fe33..66d74d210 100644 --- a/core/converter/pbc/pbc_test.go +++ b/core/converter/pbc/pbc_test.go @@ -3,55 +3,17 @@ package pbc import ( "testing" - "github.com/gogo/protobuf/jsonpb" - "github.com/gogo/protobuf/types" "github.com/stretchr/testify/assert" "github.com/anyproto/anytype-heart/core/block/editor/state" "github.com/anyproto/anytype-heart/core/block/editor/template" - "github.com/anyproto/anytype-heart/core/domain" - "github.com/anyproto/anytype-heart/pb" - "github.com/anyproto/anytype-heart/pkg/lib/bundle" - "github.com/anyproto/anytype-heart/pkg/lib/database" "github.com/anyproto/anytype-heart/pkg/lib/pb/model" - "github.com/anyproto/anytype-heart/util/pbtypes" ) func TestPbc_Convert(t *testing.T) { - t.Run("success", func(t *testing.T) { - s := state.NewDoc("root", nil).(*state.State) - template.InitTemplate(s, template.WithTitle) - c := NewConverter(s, false, nil) - result := c.Convert(model.SmartBlockType_Page) - assert.NotEmpty(t, result) - }) - t.Run("dependent details", func(t *testing.T) { - s := state.NewDoc("root", nil).(*state.State) - template.InitTemplate(s, template.WithTitle) - records := []database.Record{ - { - Details: domain.NewDetailsFromMap(map[domain.RelationKey]domain.Value{ - bundle.RelationKeyId: domain.String("test"), - bundle.RelationKeyName: domain.String("test"), - }), - }, - } - c := NewConverter(s, true, records) - result := c.Convert(model.SmartBlockType_Page) - assert.NotEmpty(t, result) - - var resultSnapshot pb.SnapshotWithType - err := jsonpb.UnmarshalString(string(result), &resultSnapshot) - assert.Nil(t, err) - expected := []*pb.DependantDetail{ - { - Id: "test", - Details: &types.Struct{Fields: map[string]*types.Value{ - bundle.RelationKeyId.String(): pbtypes.String("test"), - bundle.RelationKeyName.String(): pbtypes.String("test"), - }}, - }, - } - assert.Equal(t, expected, resultSnapshot.DependantDetails) - }) + s := state.NewDoc("root", nil).(*state.State) + template.InitTemplate(s, template.WithTitle) + c := NewConverter(s, false) + result := c.Convert(model.SmartBlockType_Page) + assert.NotEmpty(t, result) } diff --git a/docs/proto.md b/docs/proto.md index d90295a09..2f99684d5 100644 --- a/docs/proto.md +++ b/docs/proto.md @@ -1803,7 +1803,6 @@ - [Model.Process.State](#anytype-Model-Process-State) - [pb/protos/snapshot.proto](#pb_protos_snapshot-proto) - - [DependantDetail](#anytype-DependantDetail) - [Profile](#anytype-Profile) - [SnapshotWithType](#anytype-SnapshotWithType) @@ -28392,22 +28391,6 @@ Precondition: user A and user B opened the same block - - -### DependantDetail - - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| id | [string](#string) | | | -| details | [google.protobuf.Struct](#google-protobuf-Struct) | | | - - - - - - ### Profile @@ -28438,7 +28421,6 @@ Precondition: user A and user B opened the same block | ----- | ---- | ----- | ----------- | | sbType | [model.SmartBlockType](#anytype-model-SmartBlockType) | | | | snapshot | [Change.Snapshot](#anytype-Change-Snapshot) | | | -| dependantDetails | [DependantDetail](#anytype-DependantDetail) | repeated | | diff --git a/pb/protos/snapshot.proto b/pb/protos/snapshot.proto index 248af50d7..849260742 100644 --- a/pb/protos/snapshot.proto +++ b/pb/protos/snapshot.proto @@ -4,18 +4,12 @@ option go_package = "pb"; import "pkg/lib/pb/model/protos/models.proto"; import "pb/protos/changes.proto"; -import "google/protobuf/struct.proto"; message SnapshotWithType { anytype.model.SmartBlockType sbType = 1; anytype.Change.Snapshot snapshot = 2; - repeated DependantDetail dependantDetails = 3; } -message DependantDetail { - string id = 1; - google.protobuf.Struct details = 2; -} message Profile { string name = 1; string avatar = 2; diff --git a/pb/snapshot.pb.go b/pb/snapshot.pb.go index 260899f46..68eb46309 100644 --- a/pb/snapshot.pb.go +++ b/pb/snapshot.pb.go @@ -7,7 +7,6 @@ import ( fmt "fmt" model "github.com/anyproto/anytype-heart/pkg/lib/pb/model" proto "github.com/gogo/protobuf/proto" - types "github.com/gogo/protobuf/types" io "io" math "math" math_bits "math/bits" @@ -25,9 +24,8 @@ var _ = math.Inf const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package type SnapshotWithType struct { - SbType model.SmartBlockType `protobuf:"varint,1,opt,name=sbType,proto3,enum=anytype.model.SmartBlockType" json:"sbType,omitempty"` - Snapshot *ChangeSnapshot `protobuf:"bytes,2,opt,name=snapshot,proto3" json:"snapshot,omitempty"` - DependantDetails []*DependantDetail `protobuf:"bytes,3,rep,name=dependantDetails,proto3" json:"dependantDetails,omitempty"` + SbType model.SmartBlockType `protobuf:"varint,1,opt,name=sbType,proto3,enum=anytype.model.SmartBlockType" json:"sbType,omitempty"` + Snapshot *ChangeSnapshot `protobuf:"bytes,2,opt,name=snapshot,proto3" json:"snapshot,omitempty"` } func (m *SnapshotWithType) Reset() { *m = SnapshotWithType{} } @@ -77,65 +75,6 @@ func (m *SnapshotWithType) GetSnapshot() *ChangeSnapshot { return nil } -func (m *SnapshotWithType) GetDependantDetails() []*DependantDetail { - if m != nil { - return m.DependantDetails - } - return nil -} - -type DependantDetail struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Details *types.Struct `protobuf:"bytes,2,opt,name=details,proto3" json:"details,omitempty"` -} - -func (m *DependantDetail) Reset() { *m = DependantDetail{} } -func (m *DependantDetail) String() string { return proto.CompactTextString(m) } -func (*DependantDetail) ProtoMessage() {} -func (*DependantDetail) Descriptor() ([]byte, []int) { - return fileDescriptor_022f1596c727bff6, []int{1} -} -func (m *DependantDetail) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *DependantDetail) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_DependantDetail.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *DependantDetail) XXX_Merge(src proto.Message) { - xxx_messageInfo_DependantDetail.Merge(m, src) -} -func (m *DependantDetail) XXX_Size() int { - return m.Size() -} -func (m *DependantDetail) XXX_DiscardUnknown() { - xxx_messageInfo_DependantDetail.DiscardUnknown(m) -} - -var xxx_messageInfo_DependantDetail proto.InternalMessageInfo - -func (m *DependantDetail) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *DependantDetail) GetDetails() *types.Struct { - if m != nil { - return m.Details - } - return nil -} - type Profile struct { Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` Avatar string `protobuf:"bytes,2,opt,name=avatar,proto3" json:"avatar,omitempty"` @@ -149,7 +88,7 @@ func (m *Profile) Reset() { *m = Profile{} } func (m *Profile) String() string { return proto.CompactTextString(m) } func (*Profile) ProtoMessage() {} func (*Profile) Descriptor() ([]byte, []int) { - return fileDescriptor_022f1596c727bff6, []int{2} + return fileDescriptor_022f1596c727bff6, []int{1} } func (m *Profile) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -222,39 +161,33 @@ func (m *Profile) GetAnalyticsId() string { func init() { proto.RegisterType((*SnapshotWithType)(nil), "anytype.SnapshotWithType") - proto.RegisterType((*DependantDetail)(nil), "anytype.DependantDetail") proto.RegisterType((*Profile)(nil), "anytype.Profile") } func init() { proto.RegisterFile("pb/protos/snapshot.proto", fileDescriptor_022f1596c727bff6) } var fileDescriptor_022f1596c727bff6 = []byte{ - // 399 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x90, 0xcf, 0x8e, 0xd3, 0x30, - 0x10, 0xc6, 0xeb, 0xec, 0x92, 0x50, 0xaf, 0xb4, 0x54, 0x3e, 0xb0, 0xd6, 0xaa, 0x44, 0x51, 0xc5, - 0x61, 0xc5, 0xc1, 0x11, 0x0b, 0xbc, 0xc0, 0x92, 0x4b, 0x6f, 0x28, 0x5d, 0x09, 0x89, 0xdb, 0x38, - 0xf6, 0x26, 0x51, 0xd3, 0xd8, 0x8a, 0x5d, 0xa4, 0xbc, 0x05, 0xef, 0xc3, 0x19, 0x89, 0x63, 0x8f, - 0x1c, 0x51, 0xfb, 0x22, 0xa8, 0x4e, 0xd2, 0xd2, 0xed, 0x6d, 0xfe, 0xfc, 0xe6, 0xfb, 0x66, 0x06, - 0x53, 0xcd, 0x63, 0xdd, 0x28, 0xab, 0x4c, 0x6c, 0x6a, 0xd0, 0xa6, 0x50, 0x96, 0xb9, 0x9c, 0x04, - 0x50, 0xb7, 0xb6, 0xd5, 0xf2, 0xf6, 0xad, 0x5e, 0xe6, 0x71, 0x55, 0xf2, 0x58, 0xf3, 0x78, 0xa5, - 0x84, 0xac, 0x86, 0x01, 0x97, 0x98, 0x0e, 0xbf, 0xbd, 0x39, 0x0a, 0x65, 0x05, 0xd4, 0xb9, 0x1c, - 0x1a, 0xd3, 0x5c, 0xa9, 0xbc, 0x92, 0x5d, 0x93, 0xaf, 0x9f, 0x62, 0x63, 0x9b, 0x75, 0xd6, 0xbb, - 0xcc, 0x7e, 0x21, 0x3c, 0x59, 0xf4, 0xc6, 0x5f, 0x4b, 0x5b, 0x3c, 0xb6, 0x5a, 0x92, 0x4f, 0xd8, - 0x37, 0x7c, 0x1f, 0x51, 0x14, 0xa1, 0xbb, 0xeb, 0xfb, 0x37, 0xac, 0xdf, 0x85, 0x39, 0x4b, 0xb6, - 0x58, 0x41, 0x63, 0x1f, 0x2a, 0x95, 0x2d, 0xf7, 0x50, 0xda, 0xc3, 0xe4, 0x23, 0x7e, 0x39, 0xdc, - 0x40, 0xbd, 0x08, 0xdd, 0x5d, 0xdd, 0xd3, 0xc3, 0xe0, 0x67, 0xb7, 0x13, 0x1b, 0xac, 0xd2, 0x03, - 0x49, 0x12, 0x3c, 0x11, 0x52, 0xcb, 0x5a, 0x40, 0x6d, 0x13, 0x69, 0xa1, 0xac, 0x0c, 0xbd, 0x88, - 0x2e, 0x4e, 0xa6, 0x93, 0x53, 0x20, 0x3d, 0x9b, 0x98, 0x3d, 0xe2, 0x57, 0xcf, 0x20, 0x72, 0x8d, - 0xbd, 0x52, 0xb8, 0x0b, 0xc6, 0xa9, 0x57, 0x0a, 0xf2, 0x1e, 0x07, 0xa2, 0xd7, 0xef, 0xb6, 0xbb, - 0x61, 0xdd, 0x6b, 0xd8, 0xf0, 0x1a, 0xb6, 0x70, 0xaf, 0x49, 0x07, 0x6e, 0xf6, 0x13, 0xe1, 0xe0, - 0x4b, 0xa3, 0x9e, 0xca, 0x4a, 0x12, 0x82, 0x2f, 0x6b, 0x58, 0xc9, 0x5e, 0xd0, 0xc5, 0xe4, 0x35, - 0xf6, 0xe1, 0x3b, 0x58, 0x68, 0x9c, 0xe2, 0x38, 0xed, 0x33, 0x42, 0x71, 0x00, 0x42, 0x34, 0xd2, - 0x18, 0x7a, 0xe9, 0x1a, 0x43, 0x4a, 0xde, 0xe1, 0x89, 0xd1, 0x90, 0xc9, 0x04, 0x4c, 0xc1, 0x15, - 0x34, 0x62, 0x2e, 0xe8, 0x0b, 0x87, 0x9c, 0xd5, 0xc9, 0x14, 0x8f, 0x75, 0x67, 0x3e, 0x17, 0xd4, - 0x77, 0xd0, 0xb1, 0x40, 0x22, 0x7c, 0x05, 0x35, 0x54, 0xad, 0x2d, 0x33, 0x33, 0x17, 0x34, 0x70, - 0xfd, 0xff, 0x4b, 0x0f, 0xd3, 0xdf, 0xdb, 0x10, 0x6d, 0xb6, 0x21, 0xfa, 0xbb, 0x0d, 0xd1, 0x8f, - 0x5d, 0x38, 0xda, 0xec, 0xc2, 0xd1, 0x9f, 0x5d, 0x38, 0xfa, 0xe6, 0x69, 0xce, 0x7d, 0x77, 0xf5, - 0x87, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x36, 0x2f, 0x5b, 0x24, 0x82, 0x02, 0x00, 0x00, + // 318 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x90, 0xc1, 0x4a, 0xc3, 0x30, + 0x18, 0xc7, 0x97, 0x31, 0x5b, 0x97, 0x81, 0x8c, 0x1c, 0x34, 0x8c, 0x59, 0xc6, 0xf0, 0x30, 0x3c, + 0xb4, 0x30, 0xf5, 0x05, 0xa6, 0x97, 0xdd, 0xa4, 0x13, 0x04, 0x6f, 0x5f, 0x9a, 0xb8, 0x96, 0x75, + 0x4d, 0x48, 0x82, 0xd0, 0x93, 0xaf, 0xe0, 0xfb, 0xf8, 0x02, 0x1e, 0x77, 0xf4, 0x28, 0xdb, 0x8b, + 0xc8, 0xd2, 0x76, 0x13, 0xbc, 0x7d, 0xff, 0xef, 0xff, 0xfb, 0xfe, 0xff, 0x10, 0x4c, 0x15, 0x8b, + 0x94, 0x96, 0x56, 0x9a, 0xc8, 0x14, 0xa0, 0x4c, 0x2a, 0x6d, 0xe8, 0x34, 0xf1, 0xa1, 0x28, 0x6d, + 0xa9, 0xc4, 0xe0, 0x4a, 0xad, 0x96, 0x51, 0x9e, 0xb1, 0x48, 0xb1, 0x68, 0x2d, 0xb9, 0xc8, 0x9b, + 0x03, 0x27, 0x4c, 0x85, 0x0f, 0x2e, 0x8e, 0x41, 0x49, 0x0a, 0xc5, 0x52, 0xd4, 0xc6, 0xf8, 0x1d, + 0xf7, 0x17, 0x75, 0xf2, 0x73, 0x66, 0xd3, 0xa7, 0x52, 0x09, 0x72, 0x87, 0x3d, 0xc3, 0xf6, 0x13, + 0x45, 0x23, 0x34, 0x39, 0x9b, 0x5e, 0x86, 0x75, 0x59, 0xe8, 0x32, 0xc3, 0xc5, 0x1a, 0xb4, 0x9d, + 0xe5, 0x32, 0x59, 0xed, 0xa1, 0xb8, 0x86, 0xc9, 0x2d, 0x3e, 0x6d, 0x1e, 0x49, 0xdb, 0x23, 0x34, + 0xe9, 0x4d, 0xe9, 0xe1, 0xf0, 0xde, 0x95, 0x86, 0x4d, 0x55, 0x7c, 0x20, 0xc7, 0x9f, 0x08, 0xfb, + 0x8f, 0x5a, 0xbe, 0x66, 0xb9, 0x20, 0x04, 0x77, 0x0a, 0x58, 0x57, 0xb5, 0xdd, 0xd8, 0xcd, 0xe4, + 0x1c, 0x7b, 0xf0, 0x06, 0x16, 0xb4, 0xcb, 0xec, 0xc6, 0xb5, 0x22, 0x14, 0xfb, 0xc0, 0xb9, 0x16, + 0xc6, 0xd0, 0x8e, 0x33, 0x1a, 0x49, 0xae, 0x71, 0xdf, 0x28, 0x48, 0xc4, 0x03, 0x98, 0x94, 0x49, + 0xd0, 0x7c, 0xce, 0xe9, 0x89, 0x43, 0xfe, 0xed, 0xc9, 0x10, 0x77, 0x55, 0x55, 0x3e, 0xe7, 0xd4, + 0x73, 0xd0, 0x71, 0x41, 0x46, 0xb8, 0x07, 0x05, 0xe4, 0xa5, 0xcd, 0x12, 0x33, 0xe7, 0xd4, 0x77, + 0xfe, 0xdf, 0xd5, 0x6c, 0xf8, 0xb5, 0x0d, 0xd0, 0x66, 0x1b, 0xa0, 0x9f, 0x6d, 0x80, 0x3e, 0x76, + 0x41, 0x6b, 0xb3, 0x0b, 0x5a, 0xdf, 0xbb, 0xa0, 0xf5, 0xd2, 0x56, 0x8c, 0x79, 0xee, 0x8f, 0x6f, + 0x7e, 0x03, 0x00, 0x00, 0xff, 0xff, 0xab, 0x51, 0x3f, 0xdf, 0xc7, 0x01, 0x00, 0x00, } func (m *SnapshotWithType) Marshal() (dAtA []byte, err error) { @@ -277,20 +210,6 @@ func (m *SnapshotWithType) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if len(m.DependantDetails) > 0 { - for iNdEx := len(m.DependantDetails) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.DependantDetails[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintSnapshot(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - } - } if m.Snapshot != nil { { size, err := m.Snapshot.MarshalToSizedBuffer(dAtA[:i]) @@ -311,48 +230,6 @@ func (m *SnapshotWithType) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *DependantDetail) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *DependantDetail) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *DependantDetail) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.Details != nil { - { - size, err := m.Details.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintSnapshot(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - if len(m.Id) > 0 { - i -= len(m.Id) - copy(dAtA[i:], m.Id) - i = encodeVarintSnapshot(dAtA, i, uint64(len(m.Id))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - func (m *Profile) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -442,29 +319,6 @@ func (m *SnapshotWithType) Size() (n int) { l = m.Snapshot.Size() n += 1 + l + sovSnapshot(uint64(l)) } - if len(m.DependantDetails) > 0 { - for _, e := range m.DependantDetails { - l = e.Size() - n += 1 + l + sovSnapshot(uint64(l)) - } - } - return n -} - -func (m *DependantDetail) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Id) - if l > 0 { - n += 1 + l + sovSnapshot(uint64(l)) - } - if m.Details != nil { - l = m.Details.Size() - n += 1 + l + sovSnapshot(uint64(l)) - } return n } @@ -591,158 +445,6 @@ func (m *SnapshotWithType) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DependantDetails", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSnapshot - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthSnapshot - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthSnapshot - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.DependantDetails = append(m.DependantDetails, &DependantDetail{}) - if err := m.DependantDetails[len(m.DependantDetails)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipSnapshot(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthSnapshot - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *DependantDetail) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSnapshot - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: DependantDetail: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: DependantDetail: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSnapshot - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthSnapshot - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthSnapshot - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Id = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Details", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSnapshot - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthSnapshot - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthSnapshot - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Details == nil { - m.Details = &types.Struct{} - } - if err := m.Details.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipSnapshot(dAtA[iNdEx:]) From 1b093ee7e29fbdd6917a4e31341924b72d82d537 Mon Sep 17 00:00:00 2001 From: AnastasiaShemyakinskaya Date: Fri, 24 Jan 2025 16:36:29 +0100 Subject: [PATCH 226/279] GO-4889: fix Signed-off-by: AnastasiaShemyakinskaya --- core/converter/pbc/pbc.go | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/core/converter/pbc/pbc.go b/core/converter/pbc/pbc.go index 8196973cf..112d4fa92 100644 --- a/core/converter/pbc/pbc.go +++ b/core/converter/pbc/pbc.go @@ -7,7 +7,6 @@ import ( "github.com/anyproto/anytype-heart/core/converter" "github.com/anyproto/anytype-heart/core/domain" "github.com/anyproto/anytype-heart/pb" - "github.com/anyproto/anytype-heart/pkg/lib/database" "github.com/anyproto/anytype-heart/pkg/lib/logging" "github.com/anyproto/anytype-heart/pkg/lib/pb/model" ) @@ -22,9 +21,8 @@ func NewConverter(s state.Doc, isJSON bool) converter.Converter { } type pbc struct { - s state.Doc - isJSON bool - dependentDetails []database.Record + s state.Doc + isJSON bool } func (p *pbc) Convert(sbType model.SmartBlockType) []byte { @@ -45,7 +43,7 @@ func (p *pbc) Convert(sbType model.SmartBlockType) []byte { Snapshot: snapshot, } if p.isJSON { - m := jsonpb.Marshaler{Indent: " "} + m := jsonpb.Marshaler{Indent: " ", EmitDefaults: true} result, err := m.MarshalToString(mo) if err != nil { log.Errorf("failed to convert object to json: %s", err) From e91d6f47544c1a1d4af567c4465ce4da3ef7f23f Mon Sep 17 00:00:00 2001 From: AnastasiaShemyakinskaya Date: Fri, 24 Jan 2025 18:18:47 +0100 Subject: [PATCH 227/279] GO-4889: fix file relations white list Signed-off-by: AnastasiaShemyakinskaya --- core/publish/relationswhitelist.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/core/publish/relationswhitelist.go b/core/publish/relationswhitelist.go index 3ae96012f..fde82501f 100644 --- a/core/publish/relationswhitelist.go +++ b/core/publish/relationswhitelist.go @@ -35,6 +35,8 @@ var relationsWhiteList = append(derivedObjectsWhiteList, bundle.RelationKeyRelat var relationOptionWhiteList = append(derivedObjectsWhiteList, bundle.RelationKeyRelationOptionColor.String()) +var fileRelationsWhiteList = append(documentRelationsWhiteList, bundle.RelationKeyFileId.String(), bundle.RelationKeyFileExt.String()) + var publishingRelationsWhiteList = map[model.ObjectTypeLayout][]string{ model.ObjectType_basic: documentRelationsWhiteList, model.ObjectType_profile: documentRelationsWhiteList, @@ -43,9 +45,9 @@ var publishingRelationsWhiteList = map[model.ObjectTypeLayout][]string{ model.ObjectType_collection: documentRelationsWhiteList, model.ObjectType_objectType: derivedObjectsWhiteList, model.ObjectType_relation: relationsWhiteList, - model.ObjectType_file: documentRelationsWhiteList, + model.ObjectType_file: fileRelationsWhiteList, model.ObjectType_dashboard: allObjectsRelationsWhiteList, - model.ObjectType_image: documentRelationsWhiteList, + model.ObjectType_image: fileRelationsWhiteList, model.ObjectType_note: documentRelationsWhiteList, model.ObjectType_space: allObjectsRelationsWhiteList, From 8b2d2bee418cbbf0e30a8620e7c3893b5719af8e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 24 Jan 2025 20:18:51 +0100 Subject: [PATCH 228/279] Bump google.golang.org/grpc from 1.69.4 to 1.70.0 (#2042) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 8 ++++---- go.sum | 20 ++++++++++---------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/go.mod b/go.mod index 86242e144..65f4c3dd8 100644 --- a/go.mod +++ b/go.mod @@ -110,7 +110,7 @@ require ( golang.org/x/net v0.34.0 golang.org/x/oauth2 v0.25.0 golang.org/x/text v0.21.0 - google.golang.org/grpc v1.69.4 + google.golang.org/grpc v1.70.0 gopkg.in/Graylog2/go-gelf.v2 v2.0.0-20180125164251-1832d8546a9f gopkg.in/natefinch/lumberjack.v2 v2.2.1 gopkg.in/yaml.v3 v3.0.1 @@ -186,7 +186,7 @@ require ( github.com/gogs/chardet v0.0.0-20211120154057-b7413eaefb8f // indirect github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect github.com/golang/geo v0.0.0-20210211234256-740aa86cb551 // indirect - github.com/golang/glog v1.2.2 // indirect + github.com/golang/glog v1.2.3 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/google/flatbuffers v1.12.1 // indirect github.com/google/go-querystring v1.1.0 // indirect @@ -289,8 +289,8 @@ require ( golang.org/x/term v0.28.0 // indirect golang.org/x/time v0.9.0 // indirect golang.org/x/tools v0.29.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241021214115-324edc3d5d38 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20241202173237-19429a94021a // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect google.golang.org/protobuf v1.36.2 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect diff --git a/go.sum b/go.sum index 0d3d50d6b..ded421a5c 100644 --- a/go.sum +++ b/go.sum @@ -415,8 +415,8 @@ github.com/golang/geo v0.0.0-20200319012246-673a6f80352d/go.mod h1:QZ0nwyI2jOfgR github.com/golang/geo v0.0.0-20210211234256-740aa86cb551 h1:gtexQ/VGyN+VVFRXSFiguSNcXmS6rkKT+X7FdIrTtfo= github.com/golang/geo v0.0.0-20210211234256-740aa86cb551/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.2.2 h1:1+mZ9upx1Dh6FmUTFR1naJ77miKiXgALjWOZ3NVFPmY= -github.com/golang/glog v1.2.2/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= +github.com/golang/glog v1.2.3 h1:oDTdz9f5VGVVNGu/Q7UXKWYsD0873HXLHdJUNBsSEKM= +github.com/golang/glog v1.2.3/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -1141,10 +1141,10 @@ go.opentelemetry.io/otel v1.32.0 h1:WnBN+Xjcteh0zdk01SVqV55d/m62NJLJdIyb4y/WO5U= go.opentelemetry.io/otel v1.32.0/go.mod h1:00DCVSB0RQcnzlwyTfqtxSm+DRr9hpYrHjNGiBHVQIg= go.opentelemetry.io/otel/metric v1.32.0 h1:xV2umtmNcThh2/a/aCP+h64Xx5wsj8qqnkYZktzNa0M= go.opentelemetry.io/otel/metric v1.32.0/go.mod h1:jH7CIbbK6SH2V2wE16W05BHCtIDzauciCRLoc/SyMv8= -go.opentelemetry.io/otel/sdk v1.31.0 h1:xLY3abVHYZ5HSfOg3l2E5LUj2Cwva5Y7yGxnSW9H5Gk= -go.opentelemetry.io/otel/sdk v1.31.0/go.mod h1:TfRbMdhvxIIr/B2N2LQW2S5v9m3gOQ/08KsbbO5BPT0= -go.opentelemetry.io/otel/sdk/metric v1.31.0 h1:i9hxxLJF/9kkvfHppyLL55aW7iIJz4JjxTeYusH7zMc= -go.opentelemetry.io/otel/sdk/metric v1.31.0/go.mod h1:CRInTMVvNhUKgSAMbKyTMxqOBC0zgyxzW55lZzX43Y8= +go.opentelemetry.io/otel/sdk v1.32.0 h1:RNxepc9vK59A8XsgZQouW8ue8Gkb4jpWtJm9ge5lEG4= +go.opentelemetry.io/otel/sdk v1.32.0/go.mod h1:LqgegDBjKMmb2GC6/PrTnteJG39I8/vJCAP9LlJXEjU= +go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= +go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= go.opentelemetry.io/otel/trace v1.32.0 h1:WIC9mYrXf8TmY/EXuULKc8hR17vE+Hjv2cssQDe03fM= go.opentelemetry.io/otel/trace v1.32.0/go.mod h1:+i4rkvCraA+tG6AzwloGaCtkx53Fa+L+V8e9a7YvhT8= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= @@ -1603,8 +1603,8 @@ google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210126160654-44e461bb6506/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28 h1:M0KvPgPmDZHPlbRbaNU1APr28TvwvvdUPlSv7PUvy8g= -google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:dguCy7UOdZhTvLzDyt15+rOrawrpM4q7DD9dQ1P11P4= +google.golang.org/genproto/googleapis/api v0.0.0-20241202173237-19429a94021a h1:OAiGFfOiA0v9MRYsSidp3ubZaBnteRUyn3xB2ZQ5G/E= +google.golang.org/genproto/googleapis/api v0.0.0-20241202173237-19429a94021a/go.mod h1:jehYqy3+AhJU9ve55aNOaSml7wUXjF9x6z2LcCfpAhY= google.golang.org/genproto/googleapis/rpc v0.0.0-20241021214115-324edc3d5d38 h1:zciRKQ4kBpFgpfC5QQCVtnnNAcLIqweL7plyZRQHVpI= google.golang.org/genproto/googleapis/rpc v0.0.0-20241021214115-324edc3d5d38/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= @@ -1630,8 +1630,8 @@ google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.69.4 h1:MF5TftSMkd8GLw/m0KM6V8CMOCY6NZ1NQDPGFgbTt4A= -google.golang.org/grpc v1.69.4/go.mod h1:vyjdE6jLBI76dgpDojsFGNaHlxdjXN9ghpnd2o7JGZ4= +google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ= +google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= From 3d74f6d659f45dd5ec15f689ffbe7db0516b604c Mon Sep 17 00:00:00 2001 From: Roman Khafizianov Date: Fri, 24 Jan 2025 21:47:06 +0100 Subject: [PATCH 229/279] GO-4948 applink limited scope: add missing methods --- core/auth.go | 30 ++++++++++++++++++------------ core/grpc_events.go | 4 ++-- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/core/auth.go b/core/auth.go index 2dddf9580..ba1cc4cdb 100644 --- a/core/auth.go +++ b/core/auth.go @@ -20,14 +20,18 @@ import ( ) var limitedScopeMethods = map[string]struct{}{ - "ObjectSearch": {}, - "ObjectShow": {}, - "ObjectCreate": {}, - "ObjectCreateFromURL": {}, - "BlockPreview": {}, - "BlockPaste": {}, - "BroadcastPayloadEvent": {}, - "AccountSelect": {}, // need to replace with other method to get info + "ObjectSearch": {}, + "ObjectShow": {}, + "ObjectCreate": {}, + "ObjectCreateFromUrl": {}, + "BlockPreview": {}, + "BlockPaste": {}, + "BroadcastPayloadEvent": {}, + "AccountSelect": {}, + "ListenSessionEvents": {}, + "ObjectSearchSubscribe": {}, + "ObjectCreateRelationOption": {}, + // need to replace with other method to get info } func (mw *Middleware) Authorize(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (resp interface{}, err error) { @@ -56,11 +60,13 @@ func (mw *Middleware) Authorize(ctx context.Context, req interface{}, info *grpc switch scope { case model.AccountAuth_Full: case model.AccountAuth_Limited: - if _, ok := limitedScopeMethods[strings.TrimPrefix(info.FullMethod, "/anytype.ClientCommands/")]; !ok { - return nil, status.Error(codes.PermissionDenied, "method not allowed for limited scope") + methodTrimmed := strings.TrimPrefix(info.FullMethod, "/anytype.ClientCommands/") + if _, ok := limitedScopeMethods[methodTrimmed]; !ok { + return nil, status.Error(codes.PermissionDenied, fmt.Sprintf("method %s not allowed for %s", methodTrimmed, scope.String())) } - default: - return nil, status.Error(codes.PermissionDenied, fmt.Sprintf("method not allowed for %s scope", scope.String())) + default + + return nil, status.Error(codes.PermissionDenied, fmt.Sprintf("method %s not allowed for %s scope", info.FullMethod, scope.String())) } resp, err = handler(ctx, req) return diff --git a/core/grpc_events.go b/core/grpc_events.go index 8e1150916..37e99f209 100644 --- a/core/grpc_events.go +++ b/core/grpc_events.go @@ -28,9 +28,9 @@ func (mw *Middleware) ListenSessionEvents(req *pb.StreamRequest, server lib.Clie } switch scope { - case model.AccountAuth_Full: + case model.AccountAuth_Full, model.AccountAuth_Limited: default: - log.Errorf("method not allowed for scope %s", scope.String()) + log.Warnf("method ListenSessionEvents not allowed for scope %s", scope.String()) return } var srv event.SessionServer From 08960a661fad0f9a2e77196ab5b72710b2a09215 Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Fri, 24 Jan 2025 22:07:28 +0100 Subject: [PATCH 230/279] GO-4146 Update any-sync and any-store --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 9b60a2501..cc9d5706f 100644 --- a/go.mod +++ b/go.mod @@ -7,8 +7,8 @@ require ( github.com/PuerkitoBio/goquery v1.10.1 github.com/VividCortex/ewma v1.2.0 github.com/adrium/goheif v0.0.0-20230113233934-ca402e77a786 - github.com/anyproto/any-store v0.1.4 - github.com/anyproto/any-sync v0.6.0-alpha.6 + github.com/anyproto/any-store v0.1.5 + github.com/anyproto/any-sync v0.6.0-alpha.10 github.com/anyproto/anytype-publish-server/publishclient v0.0.0-20241223184559-a5cacfe0950a github.com/anyproto/go-chash v0.1.0 github.com/anyproto/go-naturaldate/v2 v2.0.2-0.20230524105841-9829cfd13438 diff --git a/go.sum b/go.sum index f5b182d1f..9e277475c 100644 --- a/go.sum +++ b/go.sum @@ -82,10 +82,10 @@ github.com/alexbrainman/goissue34681 v0.0.0-20191006012335-3fc7a47baff5/go.mod h github.com/andybalholm/cascadia v1.3.1/go.mod h1:R4bJ1UQfqADjvDa4P6HZHLh/3OxWWEqc0Sk8XGwHqvA= github.com/andybalholm/cascadia v1.3.3 h1:AG2YHrzJIm4BZ19iwJ/DAua6Btl3IwJX+VI4kktS1LM= github.com/andybalholm/cascadia v1.3.3/go.mod h1:xNd9bqTn98Ln4DwST8/nG+H0yuB8Hmgu1YHNnWw0GeA= -github.com/anyproto/any-store v0.1.4 h1:rIxMA2XugPtdHl2S/XWnNFAMxdBysFMT9ORoJWdWQwM= -github.com/anyproto/any-store v0.1.4/go.mod h1:nbyRoJYOlvSWU1xDOrmgPP96UeoTf4eYZ9k+qqLK9k8= -github.com/anyproto/any-sync v0.6.0-alpha.6 h1:cny2XGMbjd52onip9g3mon7lkNithv5x8yvx45WlyDQ= -github.com/anyproto/any-sync v0.6.0-alpha.6/go.mod h1:Y8IxYfNrHzIKStyErWKeRIPehvqP2vT0B2T+FAhu5Zc= +github.com/anyproto/any-store v0.1.5 h1:AHOaFr9A+RhUc80MceUI9DL8vWqEW7AVB29lTqUlLL8= +github.com/anyproto/any-store v0.1.5/go.mod h1:nbyRoJYOlvSWU1xDOrmgPP96UeoTf4eYZ9k+qqLK9k8= +github.com/anyproto/any-sync v0.6.0-alpha.10 h1:NtQV6uQwN9++l1ktqWJe8e2gy7L+6g+6DP4eGndzLmY= +github.com/anyproto/any-sync v0.6.0-alpha.10/go.mod h1:gDoEjGcKE0EjAXuWyUnOf8GSoxLu5o70o+dxumKHCHY= github.com/anyproto/anytype-publish-server/publishclient v0.0.0-20241223184559-a5cacfe0950a h1:kSNyLHsZ40JxlRAglr85YXH2ik2LH3AH5Hd3JL42KGo= github.com/anyproto/anytype-publish-server/publishclient v0.0.0-20241223184559-a5cacfe0950a/go.mod h1:4fkueCZcGniSMXkrwESO8zzERrh/L7WHimRNWecfGM0= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580 h1:Ba80IlCCxkZ9H1GF+7vFu/TSpPvbpDCxXJ5ogc4euYc= From 38acf7f21c1a2d59215a6ccfbc806eba4e20706e Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Sat, 25 Jan 2025 00:00:32 +0100 Subject: [PATCH 231/279] GO-4948: Fix lint --- core/auth.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/core/auth.go b/core/auth.go index ba1cc4cdb..b9f42b415 100644 --- a/core/auth.go +++ b/core/auth.go @@ -64,8 +64,7 @@ func (mw *Middleware) Authorize(ctx context.Context, req interface{}, info *grpc if _, ok := limitedScopeMethods[methodTrimmed]; !ok { return nil, status.Error(codes.PermissionDenied, fmt.Sprintf("method %s not allowed for %s", methodTrimmed, scope.String())) } - default - + default: return nil, status.Error(codes.PermissionDenied, fmt.Sprintf("method %s not allowed for %s scope", info.FullMethod, scope.String())) } resp, err = handler(ctx, req) From aeb06105dc7663672bdedc8a45a363f53894192e Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Sun, 26 Jan 2025 19:01:50 +0100 Subject: [PATCH 232/279] GO-4459: Rename service dir to internal --- core/api/{services => internal}/auth/handler.go | 0 core/api/{services => internal}/auth/model.go | 0 core/api/{services => internal}/auth/service.go | 0 core/api/{services => internal}/auth/service_test.go | 0 core/api/{services => internal}/export/handler.go | 0 core/api/{services => internal}/export/model.go | 0 core/api/{services => internal}/export/service.go | 0 core/api/{services => internal}/export/service_test.go | 0 core/api/{services => internal}/object/handler.go | 0 core/api/{services => internal}/object/model.go | 0 core/api/{services => internal}/object/service.go | 2 +- core/api/{services => internal}/object/service_test.go | 2 +- core/api/{services => internal}/search/handler.go | 0 core/api/{services => internal}/search/service.go | 4 ++-- core/api/{services => internal}/search/service_test.go | 4 ++-- core/api/{services => internal}/space/handler.go | 0 core/api/{services => internal}/space/model.go | 0 core/api/{services => internal}/space/service.go | 0 core/api/{services => internal}/space/service_test.go | 0 core/api/server/router.go | 10 +++++----- core/api/server/server.go | 10 +++++----- 21 files changed, 16 insertions(+), 16 deletions(-) rename core/api/{services => internal}/auth/handler.go (100%) rename core/api/{services => internal}/auth/model.go (100%) rename core/api/{services => internal}/auth/service.go (100%) rename core/api/{services => internal}/auth/service_test.go (100%) rename core/api/{services => internal}/export/handler.go (100%) rename core/api/{services => internal}/export/model.go (100%) rename core/api/{services => internal}/export/service.go (100%) rename core/api/{services => internal}/export/service_test.go (100%) rename core/api/{services => internal}/object/handler.go (100%) rename core/api/{services => internal}/object/model.go (100%) rename core/api/{services => internal}/object/service.go (99%) rename core/api/{services => internal}/object/service_test.go (99%) rename core/api/{services => internal}/search/handler.go (100%) rename core/api/{services => internal}/search/service.go (98%) rename core/api/{services => internal}/search/service_test.go (99%) rename core/api/{services => internal}/space/handler.go (100%) rename core/api/{services => internal}/space/model.go (100%) rename core/api/{services => internal}/space/service.go (100%) rename core/api/{services => internal}/space/service_test.go (100%) diff --git a/core/api/services/auth/handler.go b/core/api/internal/auth/handler.go similarity index 100% rename from core/api/services/auth/handler.go rename to core/api/internal/auth/handler.go diff --git a/core/api/services/auth/model.go b/core/api/internal/auth/model.go similarity index 100% rename from core/api/services/auth/model.go rename to core/api/internal/auth/model.go diff --git a/core/api/services/auth/service.go b/core/api/internal/auth/service.go similarity index 100% rename from core/api/services/auth/service.go rename to core/api/internal/auth/service.go diff --git a/core/api/services/auth/service_test.go b/core/api/internal/auth/service_test.go similarity index 100% rename from core/api/services/auth/service_test.go rename to core/api/internal/auth/service_test.go diff --git a/core/api/services/export/handler.go b/core/api/internal/export/handler.go similarity index 100% rename from core/api/services/export/handler.go rename to core/api/internal/export/handler.go diff --git a/core/api/services/export/model.go b/core/api/internal/export/model.go similarity index 100% rename from core/api/services/export/model.go rename to core/api/internal/export/model.go diff --git a/core/api/services/export/service.go b/core/api/internal/export/service.go similarity index 100% rename from core/api/services/export/service.go rename to core/api/internal/export/service.go diff --git a/core/api/services/export/service_test.go b/core/api/internal/export/service_test.go similarity index 100% rename from core/api/services/export/service_test.go rename to core/api/internal/export/service_test.go diff --git a/core/api/services/object/handler.go b/core/api/internal/object/handler.go similarity index 100% rename from core/api/services/object/handler.go rename to core/api/internal/object/handler.go diff --git a/core/api/services/object/model.go b/core/api/internal/object/model.go similarity index 100% rename from core/api/services/object/model.go rename to core/api/internal/object/model.go diff --git a/core/api/services/object/service.go b/core/api/internal/object/service.go similarity index 99% rename from core/api/services/object/service.go rename to core/api/internal/object/service.go index f8a7eb109..c467652fb 100644 --- a/core/api/services/object/service.go +++ b/core/api/internal/object/service.go @@ -7,8 +7,8 @@ import ( "github.com/gogo/protobuf/types" + "github.com/anyproto/anytype-heart/core/api/internal/space" "github.com/anyproto/anytype-heart/core/api/pagination" - "github.com/anyproto/anytype-heart/core/api/services/space" "github.com/anyproto/anytype-heart/core/api/util" "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/pb/service" diff --git a/core/api/services/object/service_test.go b/core/api/internal/object/service_test.go similarity index 99% rename from core/api/services/object/service_test.go rename to core/api/internal/object/service_test.go index f5ec97b8a..82c95d5c1 100644 --- a/core/api/services/object/service_test.go +++ b/core/api/internal/object/service_test.go @@ -8,7 +8,7 @@ import ( "github.com/stretchr/testify/mock" "github.com/stretchr/testify/require" - "github.com/anyproto/anytype-heart/core/api/services/space" + "github.com/anyproto/anytype-heart/core/api/internal/space" "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/pb/service/mock_service" "github.com/anyproto/anytype-heart/pkg/lib/bundle" diff --git a/core/api/services/search/handler.go b/core/api/internal/search/handler.go similarity index 100% rename from core/api/services/search/handler.go rename to core/api/internal/search/handler.go diff --git a/core/api/services/search/service.go b/core/api/internal/search/service.go similarity index 98% rename from core/api/services/search/service.go rename to core/api/internal/search/service.go index 3fe671b54..be64f7cbb 100644 --- a/core/api/services/search/service.go +++ b/core/api/internal/search/service.go @@ -6,9 +6,9 @@ import ( "sort" "strings" + "github.com/anyproto/anytype-heart/core/api/internal/object" + "github.com/anyproto/anytype-heart/core/api/internal/space" "github.com/anyproto/anytype-heart/core/api/pagination" - "github.com/anyproto/anytype-heart/core/api/services/object" - "github.com/anyproto/anytype-heart/core/api/services/space" "github.com/anyproto/anytype-heart/core/api/util" "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/pb/service" diff --git a/core/api/services/search/service_test.go b/core/api/internal/search/service_test.go similarity index 99% rename from core/api/services/search/service_test.go rename to core/api/internal/search/service_test.go index 338cfc614..5c05ad4c2 100644 --- a/core/api/services/search/service_test.go +++ b/core/api/internal/search/service_test.go @@ -8,8 +8,8 @@ import ( "github.com/stretchr/testify/mock" "github.com/stretchr/testify/require" - "github.com/anyproto/anytype-heart/core/api/services/object" - "github.com/anyproto/anytype-heart/core/api/services/space" + "github.com/anyproto/anytype-heart/core/api/internal/object" + "github.com/anyproto/anytype-heart/core/api/internal/space" "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/pb/service/mock_service" "github.com/anyproto/anytype-heart/pkg/lib/bundle" diff --git a/core/api/services/space/handler.go b/core/api/internal/space/handler.go similarity index 100% rename from core/api/services/space/handler.go rename to core/api/internal/space/handler.go diff --git a/core/api/services/space/model.go b/core/api/internal/space/model.go similarity index 100% rename from core/api/services/space/model.go rename to core/api/internal/space/model.go diff --git a/core/api/services/space/service.go b/core/api/internal/space/service.go similarity index 100% rename from core/api/services/space/service.go rename to core/api/internal/space/service.go diff --git a/core/api/services/space/service_test.go b/core/api/internal/space/service_test.go similarity index 100% rename from core/api/services/space/service_test.go rename to core/api/internal/space/service_test.go diff --git a/core/api/server/router.go b/core/api/server/router.go index 09aa81078..0b47eb959 100644 --- a/core/api/server/router.go +++ b/core/api/server/router.go @@ -8,12 +8,12 @@ import ( ginSwagger "github.com/swaggo/gin-swagger" "github.com/anyproto/anytype-heart/core/anytype/account" + "github.com/anyproto/anytype-heart/core/api/internal/auth" + "github.com/anyproto/anytype-heart/core/api/internal/export" + "github.com/anyproto/anytype-heart/core/api/internal/object" + "github.com/anyproto/anytype-heart/core/api/internal/search" + "github.com/anyproto/anytype-heart/core/api/internal/space" "github.com/anyproto/anytype-heart/core/api/pagination" - "github.com/anyproto/anytype-heart/core/api/services/auth" - "github.com/anyproto/anytype-heart/core/api/services/export" - "github.com/anyproto/anytype-heart/core/api/services/object" - "github.com/anyproto/anytype-heart/core/api/services/search" - "github.com/anyproto/anytype-heart/core/api/services/space" "github.com/anyproto/anytype-heart/pb/service" ) diff --git a/core/api/server/server.go b/core/api/server/server.go index c178ef40d..78fb46793 100644 --- a/core/api/server/server.go +++ b/core/api/server/server.go @@ -6,11 +6,11 @@ import ( "github.com/gin-gonic/gin" "github.com/anyproto/anytype-heart/core/anytype/account" - "github.com/anyproto/anytype-heart/core/api/services/auth" - "github.com/anyproto/anytype-heart/core/api/services/export" - "github.com/anyproto/anytype-heart/core/api/services/object" - "github.com/anyproto/anytype-heart/core/api/services/search" - "github.com/anyproto/anytype-heart/core/api/services/space" + "github.com/anyproto/anytype-heart/core/api/internal/auth" + "github.com/anyproto/anytype-heart/core/api/internal/export" + "github.com/anyproto/anytype-heart/core/api/internal/object" + "github.com/anyproto/anytype-heart/core/api/internal/search" + "github.com/anyproto/anytype-heart/core/api/internal/space" "github.com/anyproto/anytype-heart/pb/service" ) From cba8f68e5e0312546cacc55cd05ec1a54ad609a2 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Sun, 26 Jan 2025 19:53:34 +0100 Subject: [PATCH 233/279] GO-4459: Return snippet for object --- core/api/docs/docs.go | 4 ++ core/api/docs/swagger.json | 4 ++ core/api/docs/swagger.yaml | 3 ++ core/api/internal/object/model.go | 1 + core/api/internal/object/service.go | 1 + core/api/internal/object/service_test.go | 69 +++++++++++++----------- 6 files changed, 52 insertions(+), 30 deletions(-) diff --git a/core/api/docs/docs.go b/core/api/docs/docs.go index 410bc2b35..9eb2d64a3 100644 --- a/core/api/docs/docs.go +++ b/core/api/docs/docs.go @@ -923,6 +923,10 @@ const docTemplate = `{ "root_id": { "type": "string" }, + "snippet": { + "type": "string", + "example": "The beginning of the object body..." + }, "space_id": { "type": "string", "example": "bafyreigyfkt6rbv24sbv5aq2hko3bhmv5xxlf22b4bypdu6j7hnphm3psq.23me69r569oi1" diff --git a/core/api/docs/swagger.json b/core/api/docs/swagger.json index 7b10f8788..d4015df84 100644 --- a/core/api/docs/swagger.json +++ b/core/api/docs/swagger.json @@ -917,6 +917,10 @@ "root_id": { "type": "string" }, + "snippet": { + "type": "string", + "example": "The beginning of the object body..." + }, "space_id": { "type": "string", "example": "bafyreigyfkt6rbv24sbv5aq2hko3bhmv5xxlf22b4bypdu6j7hnphm3psq.23me69r569oi1" diff --git a/core/api/docs/swagger.yaml b/core/api/docs/swagger.yaml index 02ee8d3c0..eccf4d0df 100644 --- a/core/api/docs/swagger.yaml +++ b/core/api/docs/swagger.yaml @@ -114,6 +114,9 @@ definitions: type: string root_id: type: string + snippet: + example: The beginning of the object body... + type: string space_id: example: bafyreigyfkt6rbv24sbv5aq2hko3bhmv5xxlf22b4bypdu6j7hnphm3psq.23me69r569oi1 type: string diff --git a/core/api/internal/object/model.go b/core/api/internal/object/model.go index 0ecb4e98b..b70b73148 100644 --- a/core/api/internal/object/model.go +++ b/core/api/internal/object/model.go @@ -19,6 +19,7 @@ type Object struct { Id string `json:"id" example:"bafyreie6n5l5nkbjal37su54cha4coy7qzuhrnajluzv5qd5jvtsrxkequ"` Name string `json:"name" example:"Object Name"` Icon string `json:"icon" example:"📄"` + Snippet string `json:"snippet" example:"The beginning of the object body..."` Layout string `json:"layout" example:"basic"` ObjectType string `json:"object_type" example:"Page"` SpaceId string `json:"space_id" example:"bafyreigyfkt6rbv24sbv5aq2hko3bhmv5xxlf22b4bypdu6j7hnphm3psq.23me69r569oi1"` diff --git a/core/api/internal/object/service.go b/core/api/internal/object/service.go index c467652fb..d277478b2 100644 --- a/core/api/internal/object/service.go +++ b/core/api/internal/object/service.go @@ -128,6 +128,7 @@ func (s *ObjectService) GetObject(ctx context.Context, spaceId string, objectId Id: resp.ObjectView.Details[0].Details.Fields[bundle.RelationKeyId.String()].GetStringValue(), Name: resp.ObjectView.Details[0].Details.Fields[bundle.RelationKeyName.String()].GetStringValue(), Icon: icon, + Snippet: resp.ObjectView.Details[0].Details.Fields[bundle.RelationKeySnippet.String()].GetStringValue(), Layout: model.ObjectTypeLayout_name[int32(resp.ObjectView.Details[0].Details.Fields[bundle.RelationKeyLayout.String()].GetNumberValue())], ObjectType: objectTypeName, SpaceId: resp.ObjectView.Details[0].Details.Fields[bundle.RelationKeySpaceId.String()].GetStringValue(), diff --git a/core/api/internal/object/service_test.go b/core/api/internal/object/service_test.go index 82c95d5c1..22349b1d6 100644 --- a/core/api/internal/object/service_test.go +++ b/core/api/internal/object/service_test.go @@ -17,13 +17,17 @@ import ( ) const ( - offset = 0 - limit = 100 - mockedSpaceId = "mocked-space-id" - mockedObjectId = "mocked-object-id" - mockedNewObjectId = "mocked-new-object-id" - mockedTechSpaceId = "mocked-tech-space-id" - gatewayUrl = "http://localhost:31006" + offset = 0 + limit = 100 + mockedTechSpaceId = "mocked-tech-space-id" + gatewayUrl = "http://localhost:31006" + mockedSpaceId = "mocked-space-id" + mockedObjectId = "mocked-object-id" + mockedNewObjectId = "mocked-new-object-id" + mockedObjectName = "mocked-object-name" + mockedObjectSnippet = "mocked-object-snippet" + mockedObjectIcon = "ðŸ”" + mockedObjectTypeUniqueKey = "ot-page" ) type fixture struct { @@ -84,10 +88,11 @@ func TestObjectService_ListObjects(t *testing.T) { { Fields: map[string]*types.Value{ bundle.RelationKeyId.String(): pbtypes.String(mockedObjectId), - bundle.RelationKeyName.String(): pbtypes.String("My Object"), - bundle.RelationKeyType.String(): pbtypes.String("ot-page"), - bundle.RelationKeyLayout.String(): pbtypes.Float64(float64(model.ObjectType_basic)), + bundle.RelationKeyName.String(): pbtypes.String(mockedObjectName), + bundle.RelationKeySnippet.String(): pbtypes.String(mockedObjectSnippet), bundle.RelationKeyIconEmoji.String(): pbtypes.String("📄"), + bundle.RelationKeyType.String(): pbtypes.String(mockedObjectTypeUniqueKey), + bundle.RelationKeyLayout.String(): pbtypes.Float64(float64(model.ObjectType_basic)), }, }, }, @@ -106,9 +111,10 @@ func TestObjectService_ListObjects(t *testing.T) { Details: &types.Struct{ Fields: map[string]*types.Value{ bundle.RelationKeyId.String(): pbtypes.String(mockedObjectId), - bundle.RelationKeyName.String(): pbtypes.String("My Object"), - bundle.RelationKeyType.String(): pbtypes.String("ot-page"), + bundle.RelationKeyName.String(): pbtypes.String(mockedObjectName), + bundle.RelationKeySnippet.String(): pbtypes.String(mockedObjectSnippet), bundle.RelationKeyIconEmoji.String(): pbtypes.String("📄"), + bundle.RelationKeyType.String(): pbtypes.String(mockedObjectTypeUniqueKey), bundle.RelationKeyLastModifiedDate.String(): pbtypes.Float64(999999), bundle.RelationKeyCreatedDate.String(): pbtypes.Float64(888888), bundle.RelationKeySpaceId.String(): pbtypes.String(mockedSpaceId), @@ -127,7 +133,7 @@ func TestObjectService_ListObjects(t *testing.T) { { RelationKey: bundle.RelationKeyUniqueKey.String(), Condition: model.BlockContentDataviewFilter_Equal, - Value: pbtypes.String("ot-page"), + Value: pbtypes.String(mockedObjectTypeUniqueKey), }, }, Keys: []string{bundle.RelationKeyName.String()}, @@ -176,9 +182,10 @@ func TestObjectService_ListObjects(t *testing.T) { require.NoError(t, err) require.Len(t, objects, 1) require.Equal(t, mockedObjectId, objects[0].Id) - require.Equal(t, "My Object", objects[0].Name) - require.Equal(t, "Page", objects[0].ObjectType) + require.Equal(t, mockedObjectName, objects[0].Name) + require.Equal(t, mockedObjectSnippet, objects[0].Snippet) require.Equal(t, "📄", objects[0].Icon) + require.Equal(t, "Page", objects[0].ObjectType) require.Equal(t, 5, len(objects[0].Details)) for _, detail := range objects[0].Details { @@ -242,9 +249,10 @@ func TestObjectService_GetObject(t *testing.T) { Details: &types.Struct{ Fields: map[string]*types.Value{ bundle.RelationKeyId.String(): pbtypes.String(mockedObjectId), - bundle.RelationKeyName.String(): pbtypes.String("Found Object"), - bundle.RelationKeyType.String(): pbtypes.String("ot-page"), - bundle.RelationKeyIconEmoji.String(): pbtypes.String("ðŸ”"), + bundle.RelationKeyName.String(): pbtypes.String(mockedObjectName), + bundle.RelationKeySnippet.String(): pbtypes.String(mockedObjectSnippet), + bundle.RelationKeyIconEmoji.String(): pbtypes.String(mockedObjectName), + bundle.RelationKeyType.String(): pbtypes.String(mockedObjectTypeUniqueKey), bundle.RelationKeyLastModifiedDate.String(): pbtypes.Float64(999999), bundle.RelationKeyCreatedDate.String(): pbtypes.Float64(888888), bundle.RelationKeySpaceId.String(): pbtypes.String(mockedSpaceId), @@ -262,7 +270,7 @@ func TestObjectService_GetObject(t *testing.T) { { RelationKey: bundle.RelationKeyUniqueKey.String(), Condition: model.BlockContentDataviewFilter_Equal, - Value: pbtypes.String("ot-page"), + Value: pbtypes.String(mockedObjectTypeUniqueKey), }, }, Keys: []string{bundle.RelationKeyName.String()}, @@ -310,9 +318,10 @@ func TestObjectService_GetObject(t *testing.T) { // then require.NoError(t, err) require.Equal(t, mockedObjectId, object.Id) - require.Equal(t, "Found Object", object.Name) + require.Equal(t, mockedObjectName, object.Name) + require.Equal(t, mockedObjectSnippet, object.Snippet) + require.Equal(t, mockedObjectName, object.Icon) require.Equal(t, "Page", object.ObjectType) - require.Equal(t, "ðŸ”", object.Icon) require.Equal(t, 5, len(object.Details)) for _, detail := range object.Details { @@ -360,7 +369,7 @@ func TestObjectService_CreateObject(t *testing.T) { fx.mwMock.On("ObjectCreate", mock.Anything, &pb.RpcObjectCreateRequest{ Details: &types.Struct{ Fields: map[string]*types.Value{ - bundle.RelationKeyName.String(): pbtypes.String("New Object"), + bundle.RelationKeyName.String(): pbtypes.String(mockedObjectName), bundle.RelationKeyIconEmoji.String(): pbtypes.String("🆕"), bundle.RelationKeyDescription.String(): pbtypes.String(""), bundle.RelationKeySource.String(): pbtypes.String(""), @@ -369,14 +378,14 @@ func TestObjectService_CreateObject(t *testing.T) { }, TemplateId: "", SpaceId: mockedSpaceId, - ObjectTypeUniqueKey: "ot-page", + ObjectTypeUniqueKey: mockedObjectTypeUniqueKey, WithChat: false, }).Return(&pb.RpcObjectCreateResponse{ ObjectId: mockedNewObjectId, Details: &types.Struct{ Fields: map[string]*types.Value{ bundle.RelationKeyId.String(): pbtypes.String(mockedNewObjectId), - bundle.RelationKeyName.String(): pbtypes.String("New Object"), + bundle.RelationKeyName.String(): pbtypes.String(mockedObjectName), bundle.RelationKeyIconEmoji.String(): pbtypes.String("🆕"), bundle.RelationKeySpaceId.String(): pbtypes.String(mockedSpaceId), }, @@ -396,9 +405,9 @@ func TestObjectService_CreateObject(t *testing.T) { Details: &types.Struct{ Fields: map[string]*types.Value{ bundle.RelationKeyId.String(): pbtypes.String(mockedNewObjectId), - bundle.RelationKeyName.String(): pbtypes.String("New Object"), + bundle.RelationKeyName.String(): pbtypes.String(mockedObjectName), bundle.RelationKeyLayout.String(): pbtypes.Float64(float64(model.ObjectType_basic)), - bundle.RelationKeyType.String(): pbtypes.String("ot-page"), + bundle.RelationKeyType.String(): pbtypes.String(mockedObjectTypeUniqueKey), bundle.RelationKeyIconEmoji.String(): pbtypes.String("🆕"), bundle.RelationKeySpaceId.String(): pbtypes.String(mockedSpaceId), }, @@ -416,7 +425,7 @@ func TestObjectService_CreateObject(t *testing.T) { { RelationKey: bundle.RelationKeyUniqueKey.String(), Condition: model.BlockContentDataviewFilter_Equal, - Value: pbtypes.String("ot-page"), + Value: pbtypes.String(mockedObjectTypeUniqueKey), }, }, Keys: []string{bundle.RelationKeyName.String()}, @@ -460,17 +469,17 @@ func TestObjectService_CreateObject(t *testing.T) { // when object, err := fx.CreateObject(ctx, mockedSpaceId, CreateObjectRequest{ - Name: "New Object", + Name: mockedObjectName, Icon: "🆕", // TODO: use actual values TemplateId: "", - ObjectTypeUniqueKey: "ot-page", + ObjectTypeUniqueKey: mockedObjectTypeUniqueKey, }) // then require.NoError(t, err) require.Equal(t, mockedNewObjectId, object.Id) - require.Equal(t, "New Object", object.Name) + require.Equal(t, mockedObjectName, object.Name) require.Equal(t, "Page", object.ObjectType) require.Equal(t, "🆕", object.Icon) require.Equal(t, mockedSpaceId, object.SpaceId) From fa7abd66b24d507d45d898e341ee3993128e8142 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Sun, 26 Jan 2025 21:15:56 +0100 Subject: [PATCH 234/279] GO-4459: Refactor search endpoint to add sort option --- core/api/docs/docs.go | 57 ++++++++++++----- core/api/docs/swagger.json | 57 ++++++++++++----- core/api/docs/swagger.yaml | 39 ++++++++---- core/api/internal/object/service.go | 6 ++ core/api/internal/object/service_test.go | 12 +++- core/api/internal/search/handler.go | 16 +++-- core/api/internal/search/service.go | 79 +++++++++++++++++------- core/api/internal/search/service_test.go | 4 +- core/api/server/router.go | 2 +- 9 files changed, 191 insertions(+), 81 deletions(-) diff --git a/core/api/docs/docs.go b/core/api/docs/docs.go index 9eb2d64a3..c85a2b967 100644 --- a/core/api/docs/docs.go +++ b/core/api/docs/docs.go @@ -118,7 +118,7 @@ const docTemplate = `{ } }, "/search": { - "get": { + "post": { "consumes": [ "application/json" ], @@ -130,22 +130,6 @@ const docTemplate = `{ ], "summary": "Search objects across all spaces", "parameters": [ - { - "type": "string", - "description": "Search query", - "name": "query", - "in": "query" - }, - { - "type": "array", - "items": { - "type": "string" - }, - "collectionFormat": "csv", - "description": "Types to filter objects by", - "name": "types", - "in": "query" - }, { "type": "integer", "description": "The number of items to skip before starting to collect the result set", @@ -158,6 +142,15 @@ const docTemplate = `{ "description": "The number of items to return", "name": "limit", "in": "query" + }, + { + "description": "Search parameters", + "name": "request", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/search.SearchRequest" + } } ], "responses": { @@ -1110,6 +1103,36 @@ const docTemplate = `{ } } }, + "search.SearchRequest": { + "type": "object", + "properties": { + "query": { + "type": "string" + }, + "sort": { + "$ref": "#/definitions/search.SortOptions" + }, + "types": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "search.SortOptions": { + "type": "object", + "properties": { + "direction": { + "description": "\"asc\" or \"desc\"", + "type": "string" + }, + "timestamp": { + "description": "\"created_date\", \"last_modified_date\" or \"last_opened_date\"", + "type": "string" + } + } + }, "space.CreateSpaceResponse": { "type": "object", "properties": { diff --git a/core/api/docs/swagger.json b/core/api/docs/swagger.json index d4015df84..9460d9579 100644 --- a/core/api/docs/swagger.json +++ b/core/api/docs/swagger.json @@ -112,7 +112,7 @@ } }, "/search": { - "get": { + "post": { "consumes": [ "application/json" ], @@ -124,22 +124,6 @@ ], "summary": "Search objects across all spaces", "parameters": [ - { - "type": "string", - "description": "Search query", - "name": "query", - "in": "query" - }, - { - "type": "array", - "items": { - "type": "string" - }, - "collectionFormat": "csv", - "description": "Types to filter objects by", - "name": "types", - "in": "query" - }, { "type": "integer", "description": "The number of items to skip before starting to collect the result set", @@ -152,6 +136,15 @@ "description": "The number of items to return", "name": "limit", "in": "query" + }, + { + "description": "Search parameters", + "name": "request", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/search.SearchRequest" + } } ], "responses": { @@ -1104,6 +1097,36 @@ } } }, + "search.SearchRequest": { + "type": "object", + "properties": { + "query": { + "type": "string" + }, + "sort": { + "$ref": "#/definitions/search.SortOptions" + }, + "types": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "search.SortOptions": { + "type": "object", + "properties": { + "direction": { + "description": "\"asc\" or \"desc\"", + "type": "string" + }, + "timestamp": { + "description": "\"created_date\", \"last_modified_date\" or \"last_opened_date\"", + "type": "string" + } + } + }, "space.CreateSpaceResponse": { "type": "object", "properties": { diff --git a/core/api/docs/swagger.yaml b/core/api/docs/swagger.yaml index eccf4d0df..c5bed4edc 100644 --- a/core/api/docs/swagger.yaml +++ b/core/api/docs/swagger.yaml @@ -242,6 +242,26 @@ definitions: example: 1024 type: integer type: object + search.SearchRequest: + properties: + query: + type: string + sort: + $ref: '#/definitions/search.SortOptions' + types: + items: + type: string + type: array + type: object + search.SortOptions: + properties: + direction: + description: '"asc" or "desc"' + type: string + timestamp: + description: '"created_date", "last_modified_date" or "last_opened_date"' + type: string + type: object space.CreateSpaceResponse: properties: space: @@ -451,21 +471,10 @@ paths: tags: - auth /search: - get: + post: consumes: - application/json parameters: - - description: Search query - in: query - name: query - type: string - - collectionFormat: csv - description: Types to filter objects by - in: query - items: - type: string - name: types - type: array - description: The number of items to skip before starting to collect the result set in: query @@ -476,6 +485,12 @@ paths: in: query name: limit type: integer + - description: Search parameters + in: body + name: request + required: true + schema: + $ref: '#/definitions/search.SearchRequest' produces: - application/json responses: diff --git a/core/api/internal/object/service.go b/core/api/internal/object/service.go index d277478b2..6e8ecb7a5 100644 --- a/core/api/internal/object/service.go +++ b/core/api/internal/object/service.go @@ -417,6 +417,12 @@ func (s *ObjectService) GetDetails(resp *pb.RpcObjectShowResponse) []Detail { "details": s.spaceService.GetParticipantDetails(s.mw, s.AccountInfo, resp.ObjectView.Details[0].Details.Fields[bundle.RelationKeySpaceId.String()].GetStringValue(), creatorId), }, }, + { + Id: "last_opened_date", + Details: map[string]interface{}{ + "last_opened_date": PosixToISO8601(resp.ObjectView.Details[0].Details.Fields[bundle.RelationKeyLastOpenedDate.String()].GetNumberValue()), + }, + }, { Id: "tags", Details: map[string]interface{}{ diff --git a/core/api/internal/object/service_test.go b/core/api/internal/object/service_test.go index 22349b1d6..f79791803 100644 --- a/core/api/internal/object/service_test.go +++ b/core/api/internal/object/service_test.go @@ -115,8 +115,9 @@ func TestObjectService_ListObjects(t *testing.T) { bundle.RelationKeySnippet.String(): pbtypes.String(mockedObjectSnippet), bundle.RelationKeyIconEmoji.String(): pbtypes.String("📄"), bundle.RelationKeyType.String(): pbtypes.String(mockedObjectTypeUniqueKey), - bundle.RelationKeyLastModifiedDate.String(): pbtypes.Float64(999999), bundle.RelationKeyCreatedDate.String(): pbtypes.Float64(888888), + bundle.RelationKeyLastModifiedDate.String(): pbtypes.Float64(999999), + bundle.RelationKeyLastOpenedDate.String(): pbtypes.Float64(0), bundle.RelationKeySpaceId.String(): pbtypes.String(mockedSpaceId), }, }, @@ -186,7 +187,7 @@ func TestObjectService_ListObjects(t *testing.T) { require.Equal(t, mockedObjectSnippet, objects[0].Snippet) require.Equal(t, "📄", objects[0].Icon) require.Equal(t, "Page", objects[0].ObjectType) - require.Equal(t, 5, len(objects[0].Details)) + require.Equal(t, 6, len(objects[0].Details)) for _, detail := range objects[0].Details { if detail.Id == "created_date" { @@ -197,6 +198,8 @@ func TestObjectService_ListObjects(t *testing.T) { require.Equal(t, "1970-01-12T13:46:39Z", detail.Details["last_modified_date"]) } else if detail.Id == "last_modified_by" { require.Empty(t, detail.Details["last_modified_by"]) + } else if detail.Id == "last_opened_date" { + require.Equal(t, "1970-01-01T00:00:00Z", detail.Details["last_opened_date"]) } else if detail.Id == "tags" { require.Empty(t, detail.Details["tags"]) } else { @@ -255,6 +258,7 @@ func TestObjectService_GetObject(t *testing.T) { bundle.RelationKeyType.String(): pbtypes.String(mockedObjectTypeUniqueKey), bundle.RelationKeyLastModifiedDate.String(): pbtypes.Float64(999999), bundle.RelationKeyCreatedDate.String(): pbtypes.Float64(888888), + bundle.RelationKeyLastOpenedDate.String(): pbtypes.Float64(0), bundle.RelationKeySpaceId.String(): pbtypes.String(mockedSpaceId), }, }, @@ -322,7 +326,7 @@ func TestObjectService_GetObject(t *testing.T) { require.Equal(t, mockedObjectSnippet, object.Snippet) require.Equal(t, mockedObjectName, object.Icon) require.Equal(t, "Page", object.ObjectType) - require.Equal(t, 5, len(object.Details)) + require.Equal(t, 6, len(object.Details)) for _, detail := range object.Details { if detail.Id == "created_date" { @@ -333,6 +337,8 @@ func TestObjectService_GetObject(t *testing.T) { require.Equal(t, "1970-01-12T13:46:39Z", detail.Details["last_modified_date"]) } else if detail.Id == "last_modified_by" { require.Empty(t, detail.Details["last_modified_by"]) + } else if detail.Id == "last_opened_date" { + require.Equal(t, "1970-01-01T00:00:00Z", detail.Details["last_opened_date"]) } else if detail.Id == "tags" { require.Empty(t, detail.Details["tags"]) } else { diff --git a/core/api/internal/search/handler.go b/core/api/internal/search/handler.go index ee331c843..45c611c80 100644 --- a/core/api/internal/search/handler.go +++ b/core/api/internal/search/handler.go @@ -15,22 +15,26 @@ import ( // @Tags search // @Accept json // @Produce json -// @Param query query string false "Search query" -// @Param types query []string false "Types to filter objects by" // @Param offset query int false "The number of items to skip before starting to collect the result set" // @Param limit query int false "The number of items to return" default(100) +// @Param request body SearchRequest true "Search parameters" // @Success 200 {object} map[string][]object.Object "List of objects" // @Failure 401 {object} util.UnauthorizedError "Unauthorized" // @Failure 500 {object} util.ServerError "Internal server error" -// @Router /search [get] +// @Router /search [post] func SearchHandler(s *SearchService) gin.HandlerFunc { return func(c *gin.Context) { - searchQuery := c.Query("query") - objectTypes := c.QueryArray("types") offset := c.GetInt("offset") limit := c.GetInt("limit") - objects, total, hasMore, err := s.Search(c, searchQuery, objectTypes, offset, limit) + request := SearchRequest{} + if err := c.BindJSON(&request); err != nil { + apiErr := util.CodeToAPIError(http.StatusBadRequest, err.Error()) + c.JSON(http.StatusBadRequest, apiErr) + return + } + + objects, total, hasMore, err := s.Search(c, request, offset, limit) code := util.MapErrorCode(err, util.ErrToCode(ErrFailedSearchObjects, http.StatusInternalServerError), ) diff --git a/core/api/internal/search/service.go b/core/api/internal/search/service.go index be64f7cbb..7845c594c 100644 --- a/core/api/internal/search/service.go +++ b/core/api/internal/search/service.go @@ -23,7 +23,7 @@ var ( ) type Service interface { - Search(ctx context.Context, searchQuery string, types []string, offset, limit int) (objects []object.Object, total int, hasMore bool, err error) + Search(ctx context.Context, request SearchRequest, offset int, limit int) (objects []object.Object, total int, hasMore bool, err error) } type SearchService struct { @@ -38,33 +38,29 @@ func NewService(mw service.ClientCommandsServer, spaceService *space.SpaceServic } // Search retrieves a paginated list of objects from all spaces that match the search parameters. -func (s *SearchService) Search(ctx context.Context, searchQuery string, types []string, offset, limit int) (objects []object.Object, total int, hasMore bool, err error) { +func (s *SearchService) Search(ctx context.Context, request SearchRequest, offset int, limit int) (objects []object.Object, total int, hasMore bool, err error) { spaces, _, _, err := s.spaceService.ListSpaces(ctx, 0, spaceLimit) if err != nil { return nil, 0, false, err } baseFilters := s.prepareBaseFilters() - queryFilters := s.prepareQueryFilter(searchQuery) + queryFilters := s.prepareQueryFilter(request.Query) + sorts := s.prepareSorts(request.Sort) + dateToSortAfter := sorts[0].RelationKey allResponses := make([]*pb.RpcObjectSearchResponse, 0, len(spaces)) for _, space := range spaces { // Resolve object type IDs per space, as they are unique per space - typeFilters := s.prepareObjectTypeFilters(space.Id, types) + typeFilters := s.prepareObjectTypeFilters(space.Id, request.Types) filters := s.combineFilters(model.BlockContentDataviewFilter_And, baseFilters, queryFilters, typeFilters) objResp := s.mw.ObjectSearch(ctx, &pb.RpcObjectSearchRequest{ SpaceId: space.Id, Filters: filters, - Sorts: []*model.BlockContentDataviewSort{{ - RelationKey: bundle.RelationKeyLastModifiedDate.String(), - Type: model.BlockContentDataviewSort_Desc, - Format: model.RelationFormat_date, - IncludeTime: true, - EmptyPlacement: model.BlockContentDataviewSort_NotSpecified, - }}, - Keys: []string{bundle.RelationKeyId.String(), bundle.RelationKeyLastModifiedDate.String(), bundle.RelationKeySpaceId.String()}, - Limit: int32(offset + limit), // nolint: gosec + Sorts: sorts, + Keys: []string{bundle.RelationKeyId.String(), bundle.RelationKeySpaceId.String(), dateToSortAfter}, + Limit: int32(offset + limit), // nolint: gosec }) if objResp.Error.Code != pb.RpcObjectSearchResponseError_NULL { @@ -75,27 +71,27 @@ func (s *SearchService) Search(ctx context.Context, searchQuery string, types [] } combinedRecords := make([]struct { - Id string - SpaceId string - LastModifiedDate float64 + Id string + SpaceId string + DateToSortAfter float64 }, 0) for _, objResp := range allResponses { for _, record := range objResp.Records { combinedRecords = append(combinedRecords, struct { - Id string - SpaceId string - LastModifiedDate float64 + Id string + SpaceId string + DateToSortAfter float64 }{ - Id: record.Fields[bundle.RelationKeyId.String()].GetStringValue(), - SpaceId: record.Fields[bundle.RelationKeySpaceId.String()].GetStringValue(), - LastModifiedDate: record.Fields[bundle.RelationKeyLastModifiedDate.String()].GetNumberValue(), + Id: record.Fields[bundle.RelationKeyId.String()].GetStringValue(), + SpaceId: record.Fields[bundle.RelationKeySpaceId.String()].GetStringValue(), + DateToSortAfter: record.Fields[dateToSortAfter].GetNumberValue(), }) } } // sort after posix last_modified_date to achieve descending sort order across all spaces sort.Slice(combinedRecords, func(i, j int) bool { - return combinedRecords[i].LastModifiedDate > combinedRecords[j].LastModifiedDate + return combinedRecords[i].DateToSortAfter > combinedRecords[j].DateToSortAfter }) total = len(combinedRecords) @@ -227,3 +223,40 @@ func (s *SearchService) prepareObjectTypeFilters(spaceId string, objectTypes []s }, } } + +// prepareSorts returns a sort filter based on the given sort parameters +func (s *SearchService) prepareSorts(sort SortOptions) []*model.BlockContentDataviewSort { + return []*model.BlockContentDataviewSort{{ + RelationKey: s.getSortRelationKey(sort.Timestamp), + Type: s.getSortDirection(sort.Direction), + Format: model.RelationFormat_date, + IncludeTime: true, + EmptyPlacement: model.BlockContentDataviewSort_NotSpecified, + }} +} + +// getSortRelationKey returns the relation key for the given sort timestamp +func (s *SearchService) getSortRelationKey(timestamp string) string { + switch timestamp { + case "created_date": + return bundle.RelationKeyCreatedDate.String() + case "last_modified_date": + return bundle.RelationKeyLastModifiedDate.String() + case "last_opened_date": + return bundle.RelationKeyLastOpenedDate.String() + default: + return bundle.RelationKeyLastModifiedDate.String() + } +} + +// getSortDirection returns the sort direction for the given string +func (s *SearchService) getSortDirection(direction string) model.BlockContentDataviewSortType { + switch direction { + case "asc": + return model.BlockContentDataviewSort_Asc + case "desc": + return model.BlockContentDataviewSort_Desc + default: + return model.BlockContentDataviewSort_Desc + } +} diff --git a/core/api/internal/search/service_test.go b/core/api/internal/search/service_test.go index 5c05ad4c2..2cf132159 100644 --- a/core/api/internal/search/service_test.go +++ b/core/api/internal/search/service_test.go @@ -157,7 +157,7 @@ func TestSearchService_Search(t *testing.T) { IncludeTime: true, EmptyPlacement: model.BlockContentDataviewSort_NotSpecified, }}, - Keys: []string{bundle.RelationKeyId.String(), bundle.RelationKeyLastModifiedDate.String(), bundle.RelationKeySpaceId.String()}, + Keys: []string{bundle.RelationKeyId.String(), bundle.RelationKeySpaceId.String(), bundle.RelationKeyLastModifiedDate.String()}, Limit: int32(offset + limit), }).Return(&pb.RpcObjectSearchResponse{ Records: []*types.Struct{ @@ -322,7 +322,7 @@ func TestSearchService_Search(t *testing.T) { }).Twice() // when - objects, total, hasMore, err := fx.Search(ctx, "search-term", []string{}, offset, limit) + objects, total, hasMore, err := fx.Search(ctx, SearchRequest{Query: "search-term", Types: []string{}, Sort: SortOptions{Direction: "desc", Timestamp: "last_modified_date"}}, offset, limit) // then require.NoError(t, err) diff --git a/core/api/server/router.go b/core/api/server/router.go index 0b47eb959..257e26acc 100644 --- a/core/api/server/router.go +++ b/core/api/server/router.go @@ -73,7 +73,7 @@ func (s *Server) NewRouter(accountService account.Service, mw service.ClientComm v1.POST("/spaces/:space_id/objects", s.rateLimit(maxWriteRequestsPerSecond), object.CreateObjectHandler(s.objectService)) // Search - v1.GET("/search", search.SearchHandler(s.searchService)) + v1.POST("/search", search.SearchHandler(s.searchService)) // Space v1.GET("/spaces", space.GetSpacesHandler(s.spaceService)) From 05d2cb3012fb610289c95d5b5b34a80cd303d792 Mon Sep 17 00:00:00 2001 From: AnastasiaShemyakinskaya Date: Mon, 27 Jan 2025 00:21:21 +0100 Subject: [PATCH 235/279] GO-4889: fix Signed-off-by: AnastasiaShemyakinskaya --- core/block/export/export.go | 1 - 1 file changed, 1 deletion(-) diff --git a/core/block/export/export.go b/core/block/export/export.go index 0b6d70d92..87f91399c 100644 --- a/core/block/export/export.go +++ b/core/block/export/export.go @@ -854,7 +854,6 @@ func (e *exportContext) addNestedObject(id string, nestedDocs map[string]*Doc) { Blocks: true, Details: true, Collection: true, - NoSystemRelations: true, NoHiddenBundledRelations: true, }) return nil From e13ba05d3f8aabf79617a7e452bb603bd89a9b9c Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Mon, 27 Jan 2025 09:09:27 +0100 Subject: [PATCH 236/279] GO-4459: Add search model.go --- core/api/internal/search/model.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 core/api/internal/search/model.go diff --git a/core/api/internal/search/model.go b/core/api/internal/search/model.go new file mode 100644 index 000000000..a192e5a7b --- /dev/null +++ b/core/api/internal/search/model.go @@ -0,0 +1,12 @@ +package search + +type SearchRequest struct { + Query string `json:"query"` + Types []string `json:"types"` + Sort SortOptions `json:"sort"` +} + +type SortOptions struct { + Direction string `json:"direction"` // "asc" or "desc" + Timestamp string `json:"timestamp"` // "created_date", "last_modified_date" or "last_opened_date" +} From 6968ba5a040ff3bbfe6555607d5de6cfba93a15b Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Mon, 27 Jan 2025 09:17:07 +0100 Subject: [PATCH 237/279] GO-4459: Add search endpoint for single space --- core/api/docs/docs.go | 71 ++++++++++++++++++++++++ core/api/docs/swagger.json | 71 ++++++++++++++++++++++++ core/api/docs/swagger.yaml | 48 ++++++++++++++++ core/api/internal/search/handler.go | 48 +++++++++++++++- core/api/internal/search/service.go | 43 +++++++++++++- core/api/internal/search/service_test.go | 2 +- core/api/server/router.go | 3 +- 7 files changed, 278 insertions(+), 8 deletions(-) diff --git a/core/api/docs/docs.go b/core/api/docs/docs.go index c85a2b967..509cb28d5 100644 --- a/core/api/docs/docs.go +++ b/core/api/docs/docs.go @@ -626,6 +626,77 @@ const docTemplate = `{ } } }, + "/spaces/{space_id}/search": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "search" + ], + "summary": "Search objects within a space", + "parameters": [ + { + "type": "string", + "description": "Space ID", + "name": "space_id", + "in": "path", + "required": true + }, + { + "type": "integer", + "description": "The number of items to skip before starting to collect the result set", + "name": "offset", + "in": "query" + }, + { + "type": "integer", + "default": 100, + "description": "The number of items to return", + "name": "limit", + "in": "query" + }, + { + "description": "Search parameters", + "name": "request", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/search.SearchRequest" + } + } + ], + "responses": { + "200": { + "description": "List of objects", + "schema": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "$ref": "#/definitions/object.Object" + } + } + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/util.UnauthorizedError" + } + }, + "500": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/util.ServerError" + } + } + } + } + }, "/spaces/{space_id}/types": { "get": { "consumes": [ diff --git a/core/api/docs/swagger.json b/core/api/docs/swagger.json index 9460d9579..67c5c4fb4 100644 --- a/core/api/docs/swagger.json +++ b/core/api/docs/swagger.json @@ -620,6 +620,77 @@ } } }, + "/spaces/{space_id}/search": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "search" + ], + "summary": "Search objects within a space", + "parameters": [ + { + "type": "string", + "description": "Space ID", + "name": "space_id", + "in": "path", + "required": true + }, + { + "type": "integer", + "description": "The number of items to skip before starting to collect the result set", + "name": "offset", + "in": "query" + }, + { + "type": "integer", + "default": 100, + "description": "The number of items to return", + "name": "limit", + "in": "query" + }, + { + "description": "Search parameters", + "name": "request", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/search.SearchRequest" + } + } + ], + "responses": { + "200": { + "description": "List of objects", + "schema": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "$ref": "#/definitions/object.Object" + } + } + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/util.UnauthorizedError" + } + }, + "500": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/util.ServerError" + } + } + } + } + }, "/spaces/{space_id}/types": { "get": { "consumes": [ diff --git a/core/api/docs/swagger.yaml b/core/api/docs/swagger.yaml index c5bed4edc..a68680dc7 100644 --- a/core/api/docs/swagger.yaml +++ b/core/api/docs/swagger.yaml @@ -810,6 +810,54 @@ paths: summary: Export object tags: - export + /spaces/{space_id}/search: + post: + consumes: + - application/json + parameters: + - description: Space ID + in: path + name: space_id + required: true + type: string + - description: The number of items to skip before starting to collect the result + set + in: query + name: offset + type: integer + - default: 100 + description: The number of items to return + in: query + name: limit + type: integer + - description: Search parameters + in: body + name: request + required: true + schema: + $ref: '#/definitions/search.SearchRequest' + produces: + - application/json + responses: + "200": + description: List of objects + schema: + additionalProperties: + items: + $ref: '#/definitions/object.Object' + type: array + type: object + "401": + description: Unauthorized + schema: + $ref: '#/definitions/util.UnauthorizedError' + "500": + description: Internal server error + schema: + $ref: '#/definitions/util.ServerError' + summary: Search objects within a space + tags: + - search /spaces/{space_id}/types: get: consumes: diff --git a/core/api/internal/search/handler.go b/core/api/internal/search/handler.go index 45c611c80..c8610159a 100644 --- a/core/api/internal/search/handler.go +++ b/core/api/internal/search/handler.go @@ -9,7 +9,7 @@ import ( "github.com/anyproto/anytype-heart/core/api/util" ) -// SearchHandler searches and retrieves objects across all spaces +// GlobalSearchHandler searches and retrieves objects across all spaces // // @Summary Search objects across all spaces // @Tags search @@ -22,7 +22,7 @@ import ( // @Failure 401 {object} util.UnauthorizedError "Unauthorized" // @Failure 500 {object} util.ServerError "Internal server error" // @Router /search [post] -func SearchHandler(s *SearchService) gin.HandlerFunc { +func GlobalSearchHandler(s *SearchService) gin.HandlerFunc { return func(c *gin.Context) { offset := c.GetInt("offset") limit := c.GetInt("limit") @@ -34,7 +34,49 @@ func SearchHandler(s *SearchService) gin.HandlerFunc { return } - objects, total, hasMore, err := s.Search(c, request, offset, limit) + objects, total, hasMore, err := s.GlobalSearch(c, request, offset, limit) + code := util.MapErrorCode(err, + util.ErrToCode(ErrFailedSearchObjects, http.StatusInternalServerError), + ) + + if code != http.StatusOK { + apiErr := util.CodeToAPIError(code, err.Error()) + c.JSON(code, apiErr) + return + } + + pagination.RespondWithPagination(c, http.StatusOK, objects, total, offset, limit, hasMore) + } +} + +// SearchHandler searches and retrieves objects within a space +// +// @Summary Search objects within a space +// @Tags search +// @Accept json +// @Produce json +// @Param space_id path string true "Space ID" +// @Param offset query int false "The number of items to skip before starting to collect the result set" +// @Param limit query int false "The number of items to return" default(100) +// @Param request body SearchRequest true "Search parameters" +// @Success 200 {object} map[string][]object.Object "List of objects" +// @Failure 401 {object} util.UnauthorizedError "Unauthorized" +// @Failure 500 {object} util.ServerError "Internal server error" +// @Router /spaces/{space_id}/search [post] +func SearchHandler(s *SearchService) gin.HandlerFunc { + return func(c *gin.Context) { + spaceID := c.Param("space_id") + offset := c.GetInt("offset") + limit := c.GetInt("limit") + + request := SearchRequest{} + if err := c.BindJSON(&request); err != nil { + apiErr := util.CodeToAPIError(http.StatusBadRequest, err.Error()) + c.JSON(http.StatusBadRequest, apiErr) + return + } + + objects, total, hasMore, err := s.Search(c, spaceID, request, offset, limit) code := util.MapErrorCode(err, util.ErrToCode(ErrFailedSearchObjects, http.StatusInternalServerError), ) diff --git a/core/api/internal/search/service.go b/core/api/internal/search/service.go index 7845c594c..42dcd2ceb 100644 --- a/core/api/internal/search/service.go +++ b/core/api/internal/search/service.go @@ -23,7 +23,8 @@ var ( ) type Service interface { - Search(ctx context.Context, request SearchRequest, offset int, limit int) (objects []object.Object, total int, hasMore bool, err error) + GlobalSearch(ctx context.Context, request SearchRequest, offset int, limit int) (objects []object.Object, total int, hasMore bool, err error) + Search(ctx context.Context, spaceId string, request SearchRequest, offset int, limit int) (objects []object.Object, total int, hasMore bool, err error) } type SearchService struct { @@ -37,8 +38,8 @@ func NewService(mw service.ClientCommandsServer, spaceService *space.SpaceServic return &SearchService{mw: mw, spaceService: spaceService, objectService: objectService} } -// Search retrieves a paginated list of objects from all spaces that match the search parameters. -func (s *SearchService) Search(ctx context.Context, request SearchRequest, offset int, limit int) (objects []object.Object, total int, hasMore bool, err error) { +// GlobalSearch retrieves a paginated list of objects from all spaces that match the search parameters. +func (s *SearchService) GlobalSearch(ctx context.Context, request SearchRequest, offset int, limit int) (objects []object.Object, total int, hasMore bool, err error) { spaces, _, _, err := s.spaceService.ListSpaces(ctx, 0, spaceLimit) if err != nil { return nil, 0, false, err @@ -109,6 +110,42 @@ func (s *SearchService) Search(ctx context.Context, request SearchRequest, offse return results, total, hasMore, nil } +// Search retrieves a paginated list of objects from a specific space that match the search parameters. +func (s *SearchService) Search(ctx context.Context, spaceId string, request SearchRequest, offset int, limit int) (objects []object.Object, total int, hasMore bool, err error) { + baseFilters := s.prepareBaseFilters() + queryFilters := s.prepareQueryFilter(request.Query) + typeFilters := s.prepareObjectTypeFilters(spaceId, request.Types) + filters := s.combineFilters(model.BlockContentDataviewFilter_And, baseFilters, queryFilters, typeFilters) + + sorts := s.prepareSorts(request.Sort) + dateToSortAfter := sorts[0].RelationKey + + resp := s.mw.ObjectSearch(ctx, &pb.RpcObjectSearchRequest{ + SpaceId: spaceId, + Filters: filters, + Sorts: sorts, + Keys: []string{bundle.RelationKeyId.String(), bundle.RelationKeySpaceId.String(), dateToSortAfter}, + }) + + if resp.Error.Code != pb.RpcObjectSearchResponseError_NULL { + return nil, 0, false, ErrFailedSearchObjects + } + + total = len(resp.Records) + paginatedRecords, hasMore := pagination.Paginate(resp.Records, offset, limit) + + results := make([]object.Object, 0, len(paginatedRecords)) + for _, record := range paginatedRecords { + object, err := s.objectService.GetObject(ctx, record.Fields[bundle.RelationKeySpaceId.String()].GetStringValue(), record.Fields[bundle.RelationKeyId.String()].GetStringValue()) + if err != nil { + return nil, 0, false, err + } + results = append(results, object) + } + + return results, total, hasMore, nil +} + // makeAndCondition combines multiple filter groups with the given operator. func (s *SearchService) combineFilters(operator model.BlockContentDataviewFilterOperator, filterGroups ...[]*model.BlockContentDataviewFilter) []*model.BlockContentDataviewFilter { nestedFilters := make([]*model.BlockContentDataviewFilter, 0) diff --git a/core/api/internal/search/service_test.go b/core/api/internal/search/service_test.go index 2cf132159..eda651224 100644 --- a/core/api/internal/search/service_test.go +++ b/core/api/internal/search/service_test.go @@ -322,7 +322,7 @@ func TestSearchService_Search(t *testing.T) { }).Twice() // when - objects, total, hasMore, err := fx.Search(ctx, SearchRequest{Query: "search-term", Types: []string{}, Sort: SortOptions{Direction: "desc", Timestamp: "last_modified_date"}}, offset, limit) + objects, total, hasMore, err := fx.GlobalSearch(ctx, SearchRequest{Query: "search-term", Types: []string{}, Sort: SortOptions{Direction: "desc", Timestamp: "last_modified_date"}}, offset, limit) // then require.NoError(t, err) diff --git a/core/api/server/router.go b/core/api/server/router.go index 257e26acc..1728be74c 100644 --- a/core/api/server/router.go +++ b/core/api/server/router.go @@ -73,7 +73,8 @@ func (s *Server) NewRouter(accountService account.Service, mw service.ClientComm v1.POST("/spaces/:space_id/objects", s.rateLimit(maxWriteRequestsPerSecond), object.CreateObjectHandler(s.objectService)) // Search - v1.POST("/search", search.SearchHandler(s.searchService)) + v1.POST("/search", search.GlobalSearchHandler(s.searchService)) + v1.POST("/spaces/:space_id/search", search.SearchHandler(s.searchService)) // Space v1.GET("/spaces", space.GetSpacesHandler(s.spaceService)) From 9f72fbb673e83b4f4127ae1aa3fa52bedc9b16d6 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Mon, 27 Jan 2025 09:30:11 +0100 Subject: [PATCH 238/279] GO-4459: Add default and max values to pagination param docs --- core/api/docs/docs.go | 14 ++++++++++++++ core/api/docs/swagger.json | 14 ++++++++++++++ core/api/docs/swagger.yaml | 28 +++++++++++++++++++++------- core/api/internal/object/handler.go | 12 ++++++------ core/api/internal/search/handler.go | 8 ++++---- core/api/internal/space/handler.go | 8 ++++---- 6 files changed, 63 insertions(+), 21 deletions(-) diff --git a/core/api/docs/docs.go b/core/api/docs/docs.go index 509cb28d5..3090f6e42 100644 --- a/core/api/docs/docs.go +++ b/core/api/docs/docs.go @@ -132,11 +132,13 @@ const docTemplate = `{ "parameters": [ { "type": "integer", + "default": 0, "description": "The number of items to skip before starting to collect the result set", "name": "offset", "in": "query" }, { + "maximum": 1000, "type": "integer", "default": 100, "description": "The number of items to return", @@ -196,11 +198,13 @@ const docTemplate = `{ "parameters": [ { "type": "integer", + "default": 0, "description": "The number of items to skip before starting to collect the result set", "name": "offset", "in": "query" }, { + "maximum": 1000, "type": "integer", "default": 100, "description": "The number of items to return", @@ -301,11 +305,13 @@ const docTemplate = `{ }, { "type": "integer", + "default": 0, "description": "The number of items to skip before starting to collect the result set", "name": "offset", "in": "query" }, { + "maximum": 1000, "type": "integer", "default": 100, "description": "The number of items to return", @@ -357,11 +363,13 @@ const docTemplate = `{ }, { "type": "integer", + "default": 0, "description": "The number of items to skip before starting to collect the result set", "name": "offset", "in": "query" }, { + "maximum": 1000, "type": "integer", "default": 100, "description": "The number of items to return", @@ -648,11 +656,13 @@ const docTemplate = `{ }, { "type": "integer", + "default": 0, "description": "The number of items to skip before starting to collect the result set", "name": "offset", "in": "query" }, { + "maximum": 1000, "type": "integer", "default": 100, "description": "The number of items to return", @@ -719,11 +729,13 @@ const docTemplate = `{ }, { "type": "integer", + "default": 0, "description": "The number of items to skip before starting to collect the result set", "name": "offset", "in": "query" }, { + "maximum": 1000, "type": "integer", "default": 100, "description": "The number of items to return", @@ -782,11 +794,13 @@ const docTemplate = `{ }, { "type": "integer", + "default": 0, "description": "The number of items to skip before starting to collect the result set", "name": "offset", "in": "query" }, { + "maximum": 1000, "type": "integer", "default": 100, "description": "The number of items to return", diff --git a/core/api/docs/swagger.json b/core/api/docs/swagger.json index 67c5c4fb4..8b8c60a7b 100644 --- a/core/api/docs/swagger.json +++ b/core/api/docs/swagger.json @@ -126,11 +126,13 @@ "parameters": [ { "type": "integer", + "default": 0, "description": "The number of items to skip before starting to collect the result set", "name": "offset", "in": "query" }, { + "maximum": 1000, "type": "integer", "default": 100, "description": "The number of items to return", @@ -190,11 +192,13 @@ "parameters": [ { "type": "integer", + "default": 0, "description": "The number of items to skip before starting to collect the result set", "name": "offset", "in": "query" }, { + "maximum": 1000, "type": "integer", "default": 100, "description": "The number of items to return", @@ -295,11 +299,13 @@ }, { "type": "integer", + "default": 0, "description": "The number of items to skip before starting to collect the result set", "name": "offset", "in": "query" }, { + "maximum": 1000, "type": "integer", "default": 100, "description": "The number of items to return", @@ -351,11 +357,13 @@ }, { "type": "integer", + "default": 0, "description": "The number of items to skip before starting to collect the result set", "name": "offset", "in": "query" }, { + "maximum": 1000, "type": "integer", "default": 100, "description": "The number of items to return", @@ -642,11 +650,13 @@ }, { "type": "integer", + "default": 0, "description": "The number of items to skip before starting to collect the result set", "name": "offset", "in": "query" }, { + "maximum": 1000, "type": "integer", "default": 100, "description": "The number of items to return", @@ -713,11 +723,13 @@ }, { "type": "integer", + "default": 0, "description": "The number of items to skip before starting to collect the result set", "name": "offset", "in": "query" }, { + "maximum": 1000, "type": "integer", "default": 100, "description": "The number of items to return", @@ -776,11 +788,13 @@ }, { "type": "integer", + "default": 0, "description": "The number of items to skip before starting to collect the result set", "name": "offset", "in": "query" }, { + "maximum": 1000, "type": "integer", "default": 100, "description": "The number of items to return", diff --git a/core/api/docs/swagger.yaml b/core/api/docs/swagger.yaml index a68680dc7..9ce98d14e 100644 --- a/core/api/docs/swagger.yaml +++ b/core/api/docs/swagger.yaml @@ -475,7 +475,8 @@ paths: consumes: - application/json parameters: - - description: The number of items to skip before starting to collect the result + - default: 0 + description: The number of items to skip before starting to collect the result set in: query name: offset @@ -483,6 +484,7 @@ paths: - default: 100 description: The number of items to return in: query + maximum: 1000 name: limit type: integer - description: Search parameters @@ -518,7 +520,8 @@ paths: consumes: - application/json parameters: - - description: The number of items to skip before starting to collect the result + - default: 0 + description: The number of items to skip before starting to collect the result set in: query name: offset @@ -526,6 +529,7 @@ paths: - default: 100 description: The number of items to return in: query + maximum: 1000 name: limit type: integer produces: @@ -588,7 +592,8 @@ paths: name: space_id required: true type: string - - description: The number of items to skip before starting to collect the result + - default: 0 + description: The number of items to skip before starting to collect the result set in: query name: offset @@ -596,6 +601,7 @@ paths: - default: 100 description: The number of items to return in: query + maximum: 1000 name: limit type: integer produces: @@ -626,7 +632,8 @@ paths: name: space_id required: true type: string - - description: The number of items to skip before starting to collect the result + - default: 0 + description: The number of items to skip before starting to collect the result set in: query name: offset @@ -634,6 +641,7 @@ paths: - default: 100 description: The number of items to return in: query + maximum: 1000 name: limit type: integer produces: @@ -820,7 +828,8 @@ paths: name: space_id required: true type: string - - description: The number of items to skip before starting to collect the result + - default: 0 + description: The number of items to skip before starting to collect the result set in: query name: offset @@ -828,6 +837,7 @@ paths: - default: 100 description: The number of items to return in: query + maximum: 1000 name: limit type: integer - description: Search parameters @@ -868,7 +878,8 @@ paths: name: space_id required: true type: string - - description: The number of items to skip before starting to collect the result + - default: 0 + description: The number of items to skip before starting to collect the result set in: query name: offset @@ -876,6 +887,7 @@ paths: - default: 100 description: The number of items to return in: query + maximum: 1000 name: limit type: integer produces: @@ -911,7 +923,8 @@ paths: name: type_id required: true type: string - - description: The number of items to skip before starting to collect the result + - default: 0 + description: The number of items to skip before starting to collect the result set in: query name: offset @@ -919,6 +932,7 @@ paths: - default: 100 description: The number of items to return in: query + maximum: 1000 name: limit type: integer produces: diff --git a/core/api/internal/object/handler.go b/core/api/internal/object/handler.go index 6951c6090..b7714fce6 100644 --- a/core/api/internal/object/handler.go +++ b/core/api/internal/object/handler.go @@ -16,8 +16,8 @@ import ( // @Accept json // @Produce json // @Param space_id path string true "Space ID" -// @Param offset query int false "The number of items to skip before starting to collect the result set" -// @Param limit query int false "The number of items to return" default(100) +// @Param offset query int false "The number of items to skip before starting to collect the result set" default(0) +// @Param limit query int false "The number of items to return" default(100) maximum(1000) // @Success 200 {object} pagination.PaginatedResponse[Object] "List of objects" // @Failure 401 {object} util.UnauthorizedError "Unauthorized" // @Failure 500 {object} util.ServerError "Internal server error" @@ -166,8 +166,8 @@ func CreateObjectHandler(s *ObjectService) gin.HandlerFunc { // @Accept json // @Produce json // @Param space_id path string true "Space ID" -// @Param offset query int false "The number of items to skip before starting to collect the result set" -// @Param limit query int false "The number of items to return" default(100) +// @Param offset query int false "The number of items to skip before starting to collect the result set" default(0) +// @Param limit query int false "The number of items to return" default(100) maximum(1000) // @Success 200 {object} pagination.PaginatedResponse[Type] "List of types" // @Failure 401 {object} util.UnauthorizedError "Unauthorized" // @Failure 500 {object} util.ServerError "Internal server error" @@ -201,8 +201,8 @@ func GetTypesHandler(s *ObjectService) gin.HandlerFunc { // @Produce json // @Param space_id path string true "Space ID" // @Param type_id path string true "Type ID" -// @Param offset query int false "The number of items to skip before starting to collect the result set" -// @Param limit query int false "The number of items to return" default(100) +// @Param offset query int false "The number of items to skip before starting to collect the result set" default(0) +// @Param limit query int false "The number of items to return" default(100) maximum(1000) // @Success 200 {object} pagination.PaginatedResponse[Template] "List of templates" // @Failure 401 {object} util.UnauthorizedError "Unauthorized" // @Failure 500 {object} util.ServerError "Internal server error" diff --git a/core/api/internal/search/handler.go b/core/api/internal/search/handler.go index c8610159a..4a6e70c36 100644 --- a/core/api/internal/search/handler.go +++ b/core/api/internal/search/handler.go @@ -15,8 +15,8 @@ import ( // @Tags search // @Accept json // @Produce json -// @Param offset query int false "The number of items to skip before starting to collect the result set" -// @Param limit query int false "The number of items to return" default(100) +// @Param offset query int false "The number of items to skip before starting to collect the result set" default(0) +// @Param limit query int false "The number of items to return" default(100) maximum(1000) // @Param request body SearchRequest true "Search parameters" // @Success 200 {object} map[string][]object.Object "List of objects" // @Failure 401 {object} util.UnauthorizedError "Unauthorized" @@ -56,8 +56,8 @@ func GlobalSearchHandler(s *SearchService) gin.HandlerFunc { // @Accept json // @Produce json // @Param space_id path string true "Space ID" -// @Param offset query int false "The number of items to skip before starting to collect the result set" -// @Param limit query int false "The number of items to return" default(100) +// @Param offset query int false "The number of items to skip before starting to collect the result set" default(0) +// @Param limit query int false "The number of items to return" default(100) maximum(1000) // @Param request body SearchRequest true "Search parameters" // @Success 200 {object} map[string][]object.Object "List of objects" // @Failure 401 {object} util.UnauthorizedError "Unauthorized" diff --git a/core/api/internal/space/handler.go b/core/api/internal/space/handler.go index 394dd87ac..714bf8e7b 100644 --- a/core/api/internal/space/handler.go +++ b/core/api/internal/space/handler.go @@ -15,8 +15,8 @@ import ( // @Tags spaces // @Accept json // @Produce json -// @Param offset query int false "The number of items to skip before starting to collect the result set" -// @Param limit query int false "The number of items to return" default(100) +// @Param offset query int false "The number of items to skip before starting to collect the result set" default(0) +// @Param limit query int false "The number of items to return" default(100) maximum(1000) // @Success 200 {object} pagination.PaginatedResponse[Space] "List of spaces" // @Failure 401 {object} util.UnauthorizedError "Unauthorized" // @Failure 500 {object} util.ServerError "Internal server error" @@ -85,8 +85,8 @@ func CreateSpaceHandler(s *SpaceService) gin.HandlerFunc { // @Accept json // @Produce json // @Param space_id path string true "Space ID" -// @Param offset query int false "The number of items to skip before starting to collect the result set" -// @Param limit query int false "The number of items to return" default(100) +// @Param offset query int false "The number of items to skip before starting to collect the result set" default(0) +// @Param limit query int false "The number of items to return" default(100) maximum(1000) // @Success 200 {object} pagination.PaginatedResponse[Member] "List of members" // @Failure 401 {object} util.UnauthorizedError "Unauthorized" // @Failure 500 {object} util.ServerError "Internal server error" From c0122a1763c7695892f4acb231652ab397d35c71 Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Mon, 27 Jan 2025 10:23:37 +0100 Subject: [PATCH 239/279] GO-4146 Update any-sync --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index cc9d5706f..cb79abc1d 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( github.com/VividCortex/ewma v1.2.0 github.com/adrium/goheif v0.0.0-20230113233934-ca402e77a786 github.com/anyproto/any-store v0.1.5 - github.com/anyproto/any-sync v0.6.0-alpha.10 + github.com/anyproto/any-sync v0.6.0-alpha.10.0.20250127085841-647f2f41ae27 github.com/anyproto/anytype-publish-server/publishclient v0.0.0-20241223184559-a5cacfe0950a github.com/anyproto/go-chash v0.1.0 github.com/anyproto/go-naturaldate/v2 v2.0.2-0.20230524105841-9829cfd13438 diff --git a/go.sum b/go.sum index 9e277475c..ad61af019 100644 --- a/go.sum +++ b/go.sum @@ -84,8 +84,8 @@ github.com/andybalholm/cascadia v1.3.3 h1:AG2YHrzJIm4BZ19iwJ/DAua6Btl3IwJX+VI4kk github.com/andybalholm/cascadia v1.3.3/go.mod h1:xNd9bqTn98Ln4DwST8/nG+H0yuB8Hmgu1YHNnWw0GeA= github.com/anyproto/any-store v0.1.5 h1:AHOaFr9A+RhUc80MceUI9DL8vWqEW7AVB29lTqUlLL8= github.com/anyproto/any-store v0.1.5/go.mod h1:nbyRoJYOlvSWU1xDOrmgPP96UeoTf4eYZ9k+qqLK9k8= -github.com/anyproto/any-sync v0.6.0-alpha.10 h1:NtQV6uQwN9++l1ktqWJe8e2gy7L+6g+6DP4eGndzLmY= -github.com/anyproto/any-sync v0.6.0-alpha.10/go.mod h1:gDoEjGcKE0EjAXuWyUnOf8GSoxLu5o70o+dxumKHCHY= +github.com/anyproto/any-sync v0.6.0-alpha.10.0.20250127085841-647f2f41ae27 h1:7iUAFmb0o/lwaY+5dUCR6/GMK4JNMSkghrZaGOOHGLE= +github.com/anyproto/any-sync v0.6.0-alpha.10.0.20250127085841-647f2f41ae27/go.mod h1:gDoEjGcKE0EjAXuWyUnOf8GSoxLu5o70o+dxumKHCHY= github.com/anyproto/anytype-publish-server/publishclient v0.0.0-20241223184559-a5cacfe0950a h1:kSNyLHsZ40JxlRAglr85YXH2ik2LH3AH5Hd3JL42KGo= github.com/anyproto/anytype-publish-server/publishclient v0.0.0-20241223184559-a5cacfe0950a/go.mod h1:4fkueCZcGniSMXkrwESO8zzERrh/L7WHimRNWecfGM0= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580 h1:Ba80IlCCxkZ9H1GF+7vFu/TSpPvbpDCxXJ5ogc4euYc= From 7a509364954808c5d803cf83b8cbef763e1909b1 Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Mon, 27 Jan 2025 12:00:28 +0100 Subject: [PATCH 240/279] GO-4146 Update any-sync --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index cb79abc1d..758fe1e39 100644 --- a/go.mod +++ b/go.mod @@ -7,8 +7,8 @@ require ( github.com/PuerkitoBio/goquery v1.10.1 github.com/VividCortex/ewma v1.2.0 github.com/adrium/goheif v0.0.0-20230113233934-ca402e77a786 - github.com/anyproto/any-store v0.1.5 - github.com/anyproto/any-sync v0.6.0-alpha.10.0.20250127085841-647f2f41ae27 + github.com/anyproto/any-store v0.1.6 + github.com/anyproto/any-sync v0.6.0-alpha.10.0.20250127105854-aef4de654f4d github.com/anyproto/anytype-publish-server/publishclient v0.0.0-20241223184559-a5cacfe0950a github.com/anyproto/go-chash v0.1.0 github.com/anyproto/go-naturaldate/v2 v2.0.2-0.20230524105841-9829cfd13438 diff --git a/go.sum b/go.sum index ad61af019..28df048a7 100644 --- a/go.sum +++ b/go.sum @@ -82,10 +82,10 @@ github.com/alexbrainman/goissue34681 v0.0.0-20191006012335-3fc7a47baff5/go.mod h github.com/andybalholm/cascadia v1.3.1/go.mod h1:R4bJ1UQfqADjvDa4P6HZHLh/3OxWWEqc0Sk8XGwHqvA= github.com/andybalholm/cascadia v1.3.3 h1:AG2YHrzJIm4BZ19iwJ/DAua6Btl3IwJX+VI4kktS1LM= github.com/andybalholm/cascadia v1.3.3/go.mod h1:xNd9bqTn98Ln4DwST8/nG+H0yuB8Hmgu1YHNnWw0GeA= -github.com/anyproto/any-store v0.1.5 h1:AHOaFr9A+RhUc80MceUI9DL8vWqEW7AVB29lTqUlLL8= -github.com/anyproto/any-store v0.1.5/go.mod h1:nbyRoJYOlvSWU1xDOrmgPP96UeoTf4eYZ9k+qqLK9k8= -github.com/anyproto/any-sync v0.6.0-alpha.10.0.20250127085841-647f2f41ae27 h1:7iUAFmb0o/lwaY+5dUCR6/GMK4JNMSkghrZaGOOHGLE= -github.com/anyproto/any-sync v0.6.0-alpha.10.0.20250127085841-647f2f41ae27/go.mod h1:gDoEjGcKE0EjAXuWyUnOf8GSoxLu5o70o+dxumKHCHY= +github.com/anyproto/any-store v0.1.6 h1:CmxIH2JhgHH2s7dnv1SNKAQ3spvX2amG/5RbrTZkLaQ= +github.com/anyproto/any-store v0.1.6/go.mod h1:nbyRoJYOlvSWU1xDOrmgPP96UeoTf4eYZ9k+qqLK9k8= +github.com/anyproto/any-sync v0.6.0-alpha.10.0.20250127105854-aef4de654f4d h1:ia21xkg9NUGVNXySUI8qfL5aBH/zGrfluP6KUleFLvc= +github.com/anyproto/any-sync v0.6.0-alpha.10.0.20250127105854-aef4de654f4d/go.mod h1:vdt3F287pWFYfyLhSAs3jnq3sBA4BpH0phvQ0AhspqM= github.com/anyproto/anytype-publish-server/publishclient v0.0.0-20241223184559-a5cacfe0950a h1:kSNyLHsZ40JxlRAglr85YXH2ik2LH3AH5Hd3JL42KGo= github.com/anyproto/anytype-publish-server/publishclient v0.0.0-20241223184559-a5cacfe0950a/go.mod h1:4fkueCZcGniSMXkrwESO8zzERrh/L7WHimRNWecfGM0= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580 h1:Ba80IlCCxkZ9H1GF+7vFu/TSpPvbpDCxXJ5ogc4euYc= From bc8b409b84bb8fe7b89cb2f2a0d47355cf581b97 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Jan 2025 12:06:09 +0100 Subject: [PATCH 241/279] Bump github.com/anyproto/any-store from 0.1.4 to 0.1.5 (#2050) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 65f4c3dd8..edb02a67a 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ require ( github.com/PuerkitoBio/goquery v1.10.1 github.com/VividCortex/ewma v1.2.0 github.com/adrium/goheif v0.0.0-20230113233934-ca402e77a786 - github.com/anyproto/any-store v0.1.4 + github.com/anyproto/any-store v0.1.5 github.com/anyproto/any-sync v0.5.25 github.com/anyproto/anytype-publish-server/publishclient v0.0.0-20241223184559-a5cacfe0950a github.com/anyproto/go-chash v0.1.0 diff --git a/go.sum b/go.sum index ded421a5c..3217eb406 100644 --- a/go.sum +++ b/go.sum @@ -82,8 +82,8 @@ github.com/alexbrainman/goissue34681 v0.0.0-20191006012335-3fc7a47baff5/go.mod h github.com/andybalholm/cascadia v1.3.1/go.mod h1:R4bJ1UQfqADjvDa4P6HZHLh/3OxWWEqc0Sk8XGwHqvA= github.com/andybalholm/cascadia v1.3.3 h1:AG2YHrzJIm4BZ19iwJ/DAua6Btl3IwJX+VI4kktS1LM= github.com/andybalholm/cascadia v1.3.3/go.mod h1:xNd9bqTn98Ln4DwST8/nG+H0yuB8Hmgu1YHNnWw0GeA= -github.com/anyproto/any-store v0.1.4 h1:rIxMA2XugPtdHl2S/XWnNFAMxdBysFMT9ORoJWdWQwM= -github.com/anyproto/any-store v0.1.4/go.mod h1:nbyRoJYOlvSWU1xDOrmgPP96UeoTf4eYZ9k+qqLK9k8= +github.com/anyproto/any-store v0.1.5 h1:AHOaFr9A+RhUc80MceUI9DL8vWqEW7AVB29lTqUlLL8= +github.com/anyproto/any-store v0.1.5/go.mod h1:nbyRoJYOlvSWU1xDOrmgPP96UeoTf4eYZ9k+qqLK9k8= github.com/anyproto/any-sync v0.5.25 h1:v59eQ+C7YOKC18G1PVql17fuc42Mvgb7c7Ju855tc0Q= github.com/anyproto/any-sync v0.5.25/go.mod h1:NKQZqnU7NzOOjDQc/rKmiRmRDCrARdlEnVLYwWqTcfM= github.com/anyproto/anytype-publish-server/publishclient v0.0.0-20241223184559-a5cacfe0950a h1:kSNyLHsZ40JxlRAglr85YXH2ik2LH3AH5Hd3JL42KGo= From b55fb4b595407c0fb0e82de499aa82ac4797e667 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Jan 2025 12:07:06 +0100 Subject: [PATCH 242/279] Bump github.com/samber/lo from 1.47.0 to 1.49.0 (#2049) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index edb02a67a..8dc8a8fca 100644 --- a/go.mod +++ b/go.mod @@ -85,7 +85,7 @@ require ( github.com/prometheus/client_golang v1.20.5 github.com/pseudomuto/protoc-gen-doc v1.5.1 github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd - github.com/samber/lo v1.47.0 + github.com/samber/lo v1.49.0 github.com/sasha-s/go-deadlock v0.3.5 github.com/shirou/gopsutil/v3 v3.24.5 github.com/srwiley/oksvg v0.0.0-20221011165216-be6e8873101c diff --git a/go.sum b/go.sum index 3217eb406..60652e252 100644 --- a/go.sum +++ b/go.sum @@ -979,8 +979,8 @@ github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQD github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd h1:CmH9+J6ZSsIjUK3dcGsnCnO41eRBOnY12zwkn5qVwgc= github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd/go.mod h1:hPqNNc0+uJM6H+SuU8sEs5K5IQeKccPqeSjfgcKGgPk= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/samber/lo v1.47.0 h1:z7RynLwP5nbyRscyvcD043DWYoOcYRv3mV8lBeqOCLc= -github.com/samber/lo v1.47.0/go.mod h1:RmDH9Ct32Qy3gduHQuKJ3gW1fMHAnE/fAzQuf6He5cU= +github.com/samber/lo v1.49.0 h1:AGnTnQrg1jpFuwECPUSoxZCfVH5W22b605kWSry3YxM= +github.com/samber/lo v1.49.0/go.mod h1:dO6KHFzUKXgP8LDhU0oI8d2hekjXnGOu0DB8Jecxd6o= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= github.com/sasha-s/go-deadlock v0.3.5 h1:tNCOEEDG6tBqrNDOX35j/7hL5FcFViG6awUGROb2NsU= github.com/sasha-s/go-deadlock v0.3.5/go.mod h1:bugP6EGbdGYObIlx7pUZtWqlvo8k9H6vCBBsiChJQ5U= From 43a13c99e591d35393d3fece88530407706766ea Mon Sep 17 00:00:00 2001 From: AnastasiaShemyakinskaya Date: Mon, 27 Jan 2025 13:04:11 +0100 Subject: [PATCH 243/279] GO-4889: use slices.clone Signed-off-by: AnastasiaShemyakinskaya --- core/publish/relationswhitelist.go | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/core/publish/relationswhitelist.go b/core/publish/relationswhitelist.go index fde82501f..f6cd84640 100644 --- a/core/publish/relationswhitelist.go +++ b/core/publish/relationswhitelist.go @@ -1,6 +1,8 @@ package publish import ( + "slices" + "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/pkg/lib/bundle" "github.com/anyproto/anytype-heart/pkg/lib/pb/model" @@ -16,7 +18,7 @@ var allObjectsRelationsWhiteList = []string{ bundle.RelationKeyName.String(), } -var documentRelationsWhiteList = append(allObjectsRelationsWhiteList, +var documentRelationsWhiteList = append(slices.Clone(allObjectsRelationsWhiteList), bundle.RelationKeyDescription.String(), bundle.RelationKeySnippet.String(), bundle.RelationKeyIconImage.String(), @@ -25,17 +27,17 @@ var documentRelationsWhiteList = append(allObjectsRelationsWhiteList, bundle.RelationKeyCoverId.String(), ) -var todoRelationsWhiteList = append(documentRelationsWhiteList, bundle.RelationKeyDone.String()) +var todoRelationsWhiteList = append(slices.Clone(documentRelationsWhiteList), bundle.RelationKeyDone.String()) -var bookmarkRelationsWhiteList = append(documentRelationsWhiteList, bundle.RelationKeyPicture.String()) +var bookmarkRelationsWhiteList = append(slices.Clone(documentRelationsWhiteList), bundle.RelationKeyPicture.String()) -var derivedObjectsWhiteList = append(allObjectsRelationsWhiteList, bundle.RelationKeyUniqueKey.String()) +var derivedObjectsWhiteList = append(slices.Clone(allObjectsRelationsWhiteList), bundle.RelationKeyUniqueKey.String()) -var relationsWhiteList = append(derivedObjectsWhiteList, bundle.RelationKeyRelationFormat.String()) +var relationsWhiteList = append(slices.Clone(derivedObjectsWhiteList), bundle.RelationKeyRelationFormat.String()) -var relationOptionWhiteList = append(derivedObjectsWhiteList, bundle.RelationKeyRelationOptionColor.String()) +var relationOptionWhiteList = append(slices.Clone(derivedObjectsWhiteList), bundle.RelationKeyRelationOptionColor.String()) -var fileRelationsWhiteList = append(documentRelationsWhiteList, bundle.RelationKeyFileId.String(), bundle.RelationKeyFileExt.String()) +var fileRelationsWhiteList = append(slices.Clone(documentRelationsWhiteList), bundle.RelationKeyFileId.String(), bundle.RelationKeyFileExt.String()) var publishingRelationsWhiteList = map[model.ObjectTypeLayout][]string{ model.ObjectType_basic: documentRelationsWhiteList, From 40c6d75a7d3b6063dacca3ac23552a1668f441c1 Mon Sep 17 00:00:00 2001 From: AnastasiaShemyakinskaya Date: Mon, 27 Jan 2025 14:08:14 +0100 Subject: [PATCH 244/279] GO-4889: copy state Signed-off-by: AnastasiaShemyakinskaya --- core/block/editor/state/state.go | 10 +++--- core/block/editor/state/state_test.go | 45 --------------------------- 2 files changed, 4 insertions(+), 51 deletions(-) diff --git a/core/block/editor/state/state.go b/core/block/editor/state/state.go index 6ad6b8143..42724921d 100644 --- a/core/block/editor/state/state.go +++ b/core/block/editor/state/state.go @@ -151,16 +151,14 @@ func (s *State) Filter(filters *Filters) *State { if filters == nil { return s } + stateCopy := s.Copy() if filters.RemoveBlocks { - s.filterBlocks() + stateCopy.filterBlocks() } if len(filters.RelationsWhiteList) > 0 { - s.filterRelations(filters) + stateCopy.filterRelations(filters) } - if s.parent != nil { - s.parent = s.parent.Filter(filters) - } - return s + return stateCopy } func (s *State) filterBlocks() { diff --git a/core/block/editor/state/state_test.go b/core/block/editor/state/state_test.go index 816580ba3..fdeb3469f 100644 --- a/core/block/editor/state/state_test.go +++ b/core/block/editor/state/state_test.go @@ -3101,51 +3101,6 @@ func TestFilter(t *testing.T) { assert.Len(t, filteredState.relationLinks, 1) assert.Equal(t, bundle.RelationKeyAssignee.String(), filteredState.relationLinks[0].Key) }) - t.Run("parent state", func(t *testing.T) { - // given - st := NewDoc("root", map[string]simple.Block{ - "root": base.NewBase(&model.Block{Id: "root", ChildrenIds: []string{"2"}}), - "2": base.NewBase(&model.Block{Id: "2"}), - }).(*State) - st.AddDetails(domain.NewDetailsFromMap(map[domain.RelationKey]domain.Value{ - bundle.RelationKeyCoverType: domain.Int64(1), - bundle.RelationKeyName: domain.String("name"), - bundle.RelationKeyAssignee: domain.String("assignee"), - bundle.RelationKeyLayout: domain.Int64(model.ObjectType_todo), - })) - st.AddRelationLinks(&model.RelationLink{ - Key: bundle.RelationKeyCoverType.String(), - Format: model.RelationFormat_number, - }, - &model.RelationLink{ - Key: bundle.RelationKeyName.String(), - Format: model.RelationFormat_longtext, - }, - &model.RelationLink{ - Key: bundle.RelationKeyAssignee.String(), - Format: model.RelationFormat_object, - }, - &model.RelationLink{ - Key: bundle.RelationKeyLayout.String(), - Format: model.RelationFormat_number, - }, - ) - - // when - filteredState := st.NewState().Filter(&Filters{ - RemoveBlocks: true, - RelationsWhiteList: map[model.ObjectTypeLayout][]domain.RelationKey{ - model.ObjectType_todo: {bundle.RelationKeyAssignee}, - }}) - - // then - assert.Equal(t, filteredState.parent.details.Len(), 1) - assert.Equal(t, filteredState.parent.localDetails.Len(), 0) - assert.Len(t, filteredState.parent.relationLinks, 1) - assert.Equal(t, bundle.RelationKeyAssignee.String(), filteredState.parent.relationLinks[0].Key) - assert.Len(t, filteredState.parent.blocks, 1) - assert.NotNil(t, filteredState.parent.blocks["root"]) - }) t.Run("empty white list relations", func(t *testing.T) { // given st := NewDoc("root", map[string]simple.Block{ From f59fb4149611b5787696000468470c2de9e3e55b Mon Sep 17 00:00:00 2001 From: Mikhail Date: Mon, 27 Jan 2025 15:11:19 +0100 Subject: [PATCH 245/279] GO-2076 Fix cold start memory overuse (#2046) --- .mockery.yaml | 1 + core/block/cache/cache.go | 5 + .../mock_cache/mock_CachedObjectGetter.go | 214 ++++++++++++++++++ core/block/object/objectcache/cache.go | 5 + .../mock_objectcache/mock_Cache.go | 56 +++++ core/block/service.go | 19 ++ core/indexer/fulltext.go | 4 + core/indexer/fulltext_test.go | 8 +- core/indexer/indexer.go | 4 +- go.mod | 8 +- go.sum | 16 +- .../mock_clientspace/mock_Space.go | 56 +++++ 12 files changed, 379 insertions(+), 17 deletions(-) create mode 100644 core/block/cache/mock_cache/mock_CachedObjectGetter.go diff --git a/.mockery.yaml b/.mockery.yaml index 883c2078c..f41f5cbc1 100644 --- a/.mockery.yaml +++ b/.mockery.yaml @@ -19,6 +19,7 @@ packages: github.com/anyproto/anytype-heart/core/block/cache: interfaces: ObjectGetter: + CachedObjectGetter: ObjectGetterComponent: github.com/anyproto/anytype-heart/pkg/lib/core: interfaces: diff --git a/core/block/cache/cache.go b/core/block/cache/cache.go index fd18fae99..7373af113 100644 --- a/core/block/cache/cache.go +++ b/core/block/cache/cache.go @@ -22,6 +22,11 @@ type ObjectGetter interface { GetObjectByFullID(ctx context.Context, id domain.FullID) (sb smartblock.SmartBlock, err error) } +type CachedObjectGetter interface { + ObjectGetter + TryRemoveFromCache(ctx context.Context, objectId string) (res bool, err error) +} + func Do[t any](p ObjectGetter, objectID string, apply func(sb t) error) error { ctx := context.Background() sb, err := p.GetObject(ctx, objectID) diff --git a/core/block/cache/mock_cache/mock_CachedObjectGetter.go b/core/block/cache/mock_cache/mock_CachedObjectGetter.go new file mode 100644 index 000000000..194dc2f8b --- /dev/null +++ b/core/block/cache/mock_cache/mock_CachedObjectGetter.go @@ -0,0 +1,214 @@ +// Code generated by mockery. DO NOT EDIT. + +package mock_cache + +import ( + context "context" + + domain "github.com/anyproto/anytype-heart/core/domain" + mock "github.com/stretchr/testify/mock" + + smartblock "github.com/anyproto/anytype-heart/core/block/editor/smartblock" +) + +// MockCachedObjectGetter is an autogenerated mock type for the CachedObjectGetter type +type MockCachedObjectGetter struct { + mock.Mock +} + +type MockCachedObjectGetter_Expecter struct { + mock *mock.Mock +} + +func (_m *MockCachedObjectGetter) EXPECT() *MockCachedObjectGetter_Expecter { + return &MockCachedObjectGetter_Expecter{mock: &_m.Mock} +} + +// GetObject provides a mock function with given fields: ctx, objectID +func (_m *MockCachedObjectGetter) GetObject(ctx context.Context, objectID string) (smartblock.SmartBlock, error) { + ret := _m.Called(ctx, objectID) + + if len(ret) == 0 { + panic("no return value specified for GetObject") + } + + var r0 smartblock.SmartBlock + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, string) (smartblock.SmartBlock, error)); ok { + return rf(ctx, objectID) + } + if rf, ok := ret.Get(0).(func(context.Context, string) smartblock.SmartBlock); ok { + r0 = rf(ctx, objectID) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(smartblock.SmartBlock) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, string) error); ok { + r1 = rf(ctx, objectID) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// MockCachedObjectGetter_GetObject_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetObject' +type MockCachedObjectGetter_GetObject_Call struct { + *mock.Call +} + +// GetObject is a helper method to define mock.On call +// - ctx context.Context +// - objectID string +func (_e *MockCachedObjectGetter_Expecter) GetObject(ctx interface{}, objectID interface{}) *MockCachedObjectGetter_GetObject_Call { + return &MockCachedObjectGetter_GetObject_Call{Call: _e.mock.On("GetObject", ctx, objectID)} +} + +func (_c *MockCachedObjectGetter_GetObject_Call) Run(run func(ctx context.Context, objectID string)) *MockCachedObjectGetter_GetObject_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(string)) + }) + return _c +} + +func (_c *MockCachedObjectGetter_GetObject_Call) Return(sb smartblock.SmartBlock, err error) *MockCachedObjectGetter_GetObject_Call { + _c.Call.Return(sb, err) + return _c +} + +func (_c *MockCachedObjectGetter_GetObject_Call) RunAndReturn(run func(context.Context, string) (smartblock.SmartBlock, error)) *MockCachedObjectGetter_GetObject_Call { + _c.Call.Return(run) + return _c +} + +// GetObjectByFullID provides a mock function with given fields: ctx, id +func (_m *MockCachedObjectGetter) GetObjectByFullID(ctx context.Context, id domain.FullID) (smartblock.SmartBlock, error) { + ret := _m.Called(ctx, id) + + if len(ret) == 0 { + panic("no return value specified for GetObjectByFullID") + } + + var r0 smartblock.SmartBlock + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, domain.FullID) (smartblock.SmartBlock, error)); ok { + return rf(ctx, id) + } + if rf, ok := ret.Get(0).(func(context.Context, domain.FullID) smartblock.SmartBlock); ok { + r0 = rf(ctx, id) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(smartblock.SmartBlock) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, domain.FullID) error); ok { + r1 = rf(ctx, id) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// MockCachedObjectGetter_GetObjectByFullID_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetObjectByFullID' +type MockCachedObjectGetter_GetObjectByFullID_Call struct { + *mock.Call +} + +// GetObjectByFullID is a helper method to define mock.On call +// - ctx context.Context +// - id domain.FullID +func (_e *MockCachedObjectGetter_Expecter) GetObjectByFullID(ctx interface{}, id interface{}) *MockCachedObjectGetter_GetObjectByFullID_Call { + return &MockCachedObjectGetter_GetObjectByFullID_Call{Call: _e.mock.On("GetObjectByFullID", ctx, id)} +} + +func (_c *MockCachedObjectGetter_GetObjectByFullID_Call) Run(run func(ctx context.Context, id domain.FullID)) *MockCachedObjectGetter_GetObjectByFullID_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(domain.FullID)) + }) + return _c +} + +func (_c *MockCachedObjectGetter_GetObjectByFullID_Call) Return(sb smartblock.SmartBlock, err error) *MockCachedObjectGetter_GetObjectByFullID_Call { + _c.Call.Return(sb, err) + return _c +} + +func (_c *MockCachedObjectGetter_GetObjectByFullID_Call) RunAndReturn(run func(context.Context, domain.FullID) (smartblock.SmartBlock, error)) *MockCachedObjectGetter_GetObjectByFullID_Call { + _c.Call.Return(run) + return _c +} + +// TryRemoveFromCache provides a mock function with given fields: ctx, objectId +func (_m *MockCachedObjectGetter) TryRemoveFromCache(ctx context.Context, objectId string) (bool, error) { + ret := _m.Called(ctx, objectId) + + if len(ret) == 0 { + panic("no return value specified for TryRemoveFromCache") + } + + var r0 bool + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, string) (bool, error)); ok { + return rf(ctx, objectId) + } + if rf, ok := ret.Get(0).(func(context.Context, string) bool); ok { + r0 = rf(ctx, objectId) + } else { + r0 = ret.Get(0).(bool) + } + + if rf, ok := ret.Get(1).(func(context.Context, string) error); ok { + r1 = rf(ctx, objectId) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// MockCachedObjectGetter_TryRemoveFromCache_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'TryRemoveFromCache' +type MockCachedObjectGetter_TryRemoveFromCache_Call struct { + *mock.Call +} + +// TryRemoveFromCache is a helper method to define mock.On call +// - ctx context.Context +// - objectId string +func (_e *MockCachedObjectGetter_Expecter) TryRemoveFromCache(ctx interface{}, objectId interface{}) *MockCachedObjectGetter_TryRemoveFromCache_Call { + return &MockCachedObjectGetter_TryRemoveFromCache_Call{Call: _e.mock.On("TryRemoveFromCache", ctx, objectId)} +} + +func (_c *MockCachedObjectGetter_TryRemoveFromCache_Call) Run(run func(ctx context.Context, objectId string)) *MockCachedObjectGetter_TryRemoveFromCache_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(string)) + }) + return _c +} + +func (_c *MockCachedObjectGetter_TryRemoveFromCache_Call) Return(res bool, err error) *MockCachedObjectGetter_TryRemoveFromCache_Call { + _c.Call.Return(res, err) + return _c +} + +func (_c *MockCachedObjectGetter_TryRemoveFromCache_Call) RunAndReturn(run func(context.Context, string) (bool, error)) *MockCachedObjectGetter_TryRemoveFromCache_Call { + _c.Call.Return(run) + return _c +} + +// NewMockCachedObjectGetter creates a new instance of MockCachedObjectGetter. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func NewMockCachedObjectGetter(t interface { + mock.TestingT + Cleanup(func()) +}) *MockCachedObjectGetter { + mock := &MockCachedObjectGetter{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/core/block/object/objectcache/cache.go b/core/block/object/objectcache/cache.go index 8eca07abf..56cabaaa3 100644 --- a/core/block/object/objectcache/cache.go +++ b/core/block/object/objectcache/cache.go @@ -52,6 +52,7 @@ type Cache interface { GetObjectWithTimeout(ctx context.Context, id string) (sb smartblock.SmartBlock, err error) DoLockedIfNotExists(objectID string, proc func() error) error Remove(ctx context.Context, objectID string) error + TryRemove(objectId string) (bool, error) CloseBlocks() Close(ctx context.Context) error @@ -155,6 +156,10 @@ func (c *objectCache) Remove(ctx context.Context, objectID string) error { return err } +func (c *objectCache) TryRemove(objectId string) (bool, error) { + return c.cache.TryRemove(objectId) +} + func (c *objectCache) GetObjectWithTimeout(ctx context.Context, id string) (sb smartblock.SmartBlock, err error) { if _, ok := ctx.Deadline(); !ok { var cancel context.CancelFunc diff --git a/core/block/object/objectcache/mock_objectcache/mock_Cache.go b/core/block/object/objectcache/mock_objectcache/mock_Cache.go index 8b77256e0..751b1614d 100644 --- a/core/block/object/objectcache/mock_objectcache/mock_Cache.go +++ b/core/block/object/objectcache/mock_objectcache/mock_Cache.go @@ -785,6 +785,62 @@ func (_c *MockCache_Remove_Call) RunAndReturn(run func(context.Context, string) return _c } +// TryRemove provides a mock function with given fields: objectId +func (_m *MockCache) TryRemove(objectId string) (bool, error) { + ret := _m.Called(objectId) + + if len(ret) == 0 { + panic("no return value specified for TryRemove") + } + + var r0 bool + var r1 error + if rf, ok := ret.Get(0).(func(string) (bool, error)); ok { + return rf(objectId) + } + if rf, ok := ret.Get(0).(func(string) bool); ok { + r0 = rf(objectId) + } else { + r0 = ret.Get(0).(bool) + } + + if rf, ok := ret.Get(1).(func(string) error); ok { + r1 = rf(objectId) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// MockCache_TryRemove_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'TryRemove' +type MockCache_TryRemove_Call struct { + *mock.Call +} + +// TryRemove is a helper method to define mock.On call +// - objectId string +func (_e *MockCache_Expecter) TryRemove(objectId interface{}) *MockCache_TryRemove_Call { + return &MockCache_TryRemove_Call{Call: _e.mock.On("TryRemove", objectId)} +} + +func (_c *MockCache_TryRemove_Call) Run(run func(objectId string)) *MockCache_TryRemove_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(string)) + }) + return _c +} + +func (_c *MockCache_TryRemove_Call) Return(_a0 bool, _a1 error) *MockCache_TryRemove_Call { + _c.Call.Return(_a0, _a1) + return _c +} + +func (_c *MockCache_TryRemove_Call) RunAndReturn(run func(string) (bool, error)) *MockCache_TryRemove_Call { + _c.Call.Return(run) + return _c +} + // NewMockCache creates a new instance of MockCache. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. // The first argument is typically a *testing.T value. func NewMockCache(t interface { diff --git a/core/block/service.go b/core/block/service.go index 1c10e9c95..c6f8df027 100644 --- a/core/block/service.go +++ b/core/block/service.go @@ -159,6 +159,25 @@ func (s *Service) GetObject(ctx context.Context, objectID string) (sb smartblock return s.GetObjectByFullID(ctx, domain.FullID{SpaceID: spaceID, ObjectID: objectID}) } +func (s *Service) TryRemoveFromCache(ctx context.Context, objectId string) (res bool, err error) { + spaceId, err := s.resolver.ResolveSpaceID(objectId) + if err != nil { + return false, fmt.Errorf("resolve space: %w", err) + } + spc, err := s.spaceService.Get(ctx, spaceId) + if err != nil { + return false, fmt.Errorf("get space: %w", err) + } + mutex.WithLock(s.openedObjs.lock, func() any { + _, contains := s.openedObjs.objects[objectId] + if !contains { + res, err = spc.TryRemove(objectId) + } + return nil + }) + return +} + func (s *Service) GetObjectByFullID(ctx context.Context, id domain.FullID) (sb smartblock.SmartBlock, err error) { spc, err := s.spaceService.Get(ctx, id.SpaceID) if err != nil { diff --git a/core/indexer/fulltext.go b/core/indexer/fulltext.go index 2d56fb747..79013fbc1 100644 --- a/core/indexer/fulltext.go +++ b/core/indexer/fulltext.go @@ -234,6 +234,10 @@ func (i *indexer) prepareSearchDocument(ctx context.Context, id string) (docs [] return nil }) + _, cacheErr := i.picker.TryRemoveFromCache(ctx, id) + if cacheErr != nil { + log.With("objectId", id).Errorf("object cache remove: %v", err) + } return docs, err } diff --git a/core/indexer/fulltext_test.go b/core/indexer/fulltext_test.go index 76bddddf9..4f456028c 100644 --- a/core/indexer/fulltext_test.go +++ b/core/indexer/fulltext_test.go @@ -35,7 +35,7 @@ import ( type IndexerFixture struct { *indexer - pickerFx *mock_cache.MockObjectGetter + pickerFx *mock_cache.MockCachedObjectGetter storageServiceFx *mock_storage.MockClientStorage objectStore *objectstore.StoreFixture sourceFx *mock_source.MockService @@ -82,13 +82,14 @@ func NewIndexerFixture(t *testing.T) *IndexerFixture { indxr.fileStore = fileStore indxr.ftsearch = objectStore.FullText indexerFx.ftsearch = indxr.ftsearch - indexerFx.pickerFx = mock_cache.NewMockObjectGetter(t) + indexerFx.pickerFx = mock_cache.NewMockCachedObjectGetter(t) indxr.picker = indexerFx.pickerFx indxr.spaceIndexers = make(map[string]*spaceIndexer) indxr.forceFt = make(chan struct{}) indxr.config = &config.Config{NetworkMode: pb.RpcAccount_LocalOnly} indxr.runCtx, indxr.runCtxCancel = context.WithCancel(ctx) - // go indxr.indexBatchLoop() + + indexerFx.pickerFx.EXPECT().TryRemoveFromCache(mock.Anything, mock.Anything).Maybe().Return(true, nil) return indexerFx } @@ -105,6 +106,7 @@ func TestPrepareSearchDocument_Success(t *testing.T) { ), ))) indexerFx.pickerFx.EXPECT().GetObject(mock.Anything, mock.Anything).Return(smartTest, nil) + indexerFx.pickerFx.EXPECT().TryRemoveFromCache(mock.Anything, "objectId1").Return(true, nil) docs, err := indexerFx.prepareSearchDocument(context.Background(), "objectId1") assert.NoError(t, err) diff --git a/core/indexer/indexer.go b/core/indexer/indexer.go index 3de996091..85c056d31 100644 --- a/core/indexer/indexer.go +++ b/core/indexer/indexer.go @@ -52,7 +52,7 @@ type indexer struct { store objectstore.ObjectStore fileStore filestore.FileStore source source.Service - picker cache.ObjectGetter + picker cache.CachedObjectGetter ftsearch ftsearch.FTSearch storageService storage.ClientStorage @@ -77,7 +77,7 @@ func (i *indexer) Init(a *app.App) (err error) { i.btHash = a.MustComponent("builtintemplate").(Hasher) i.fileStore = app.MustComponent[filestore.FileStore](a) i.ftsearch = app.MustComponent[ftsearch.FTSearch](a) - i.picker = app.MustComponent[cache.ObjectGetter](a) + i.picker = app.MustComponent[cache.CachedObjectGetter](a) i.runCtx, i.runCtxCancel = context.WithCancel(context.Background()) i.forceFt = make(chan struct{}) i.config = app.MustComponent[*config.Config](a) diff --git a/go.mod b/go.mod index 8dc8a8fca..24d874690 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( github.com/VividCortex/ewma v1.2.0 github.com/adrium/goheif v0.0.0-20230113233934-ca402e77a786 github.com/anyproto/any-store v0.1.5 - github.com/anyproto/any-sync v0.5.25 + github.com/anyproto/any-sync v0.5.26 github.com/anyproto/anytype-publish-server/publishclient v0.0.0-20241223184559-a5cacfe0950a github.com/anyproto/go-chash v0.1.0 github.com/anyproto/go-naturaldate/v2 v2.0.2-0.20230524105841-9829cfd13438 @@ -52,9 +52,9 @@ require ( github.com/hbagdi/go-unsplash v0.0.0-20230414214043-474fc02c9119 github.com/huandu/skiplist v1.2.1 github.com/improbable-eng/grpc-web v0.15.0 - github.com/ipfs/boxo v0.26.0 + github.com/ipfs/boxo v0.27.0 github.com/ipfs/go-block-format v0.2.0 - github.com/ipfs/go-cid v0.4.1 + github.com/ipfs/go-cid v0.5.0 github.com/ipfs/go-datastore v0.6.0 github.com/ipfs/go-ds-flatfs v0.5.1 github.com/ipfs/go-ipld-format v0.6.0 @@ -218,7 +218,7 @@ require ( github.com/klauspost/cpuid/v2 v2.2.9 // indirect github.com/leodido/go-urn v1.4.0 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect - github.com/libp2p/go-libp2p v0.38.1 // indirect + github.com/libp2p/go-libp2p v0.38.2 // indirect github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect github.com/mailru/easyjson v0.7.6 // indirect github.com/mattn/go-colorable v0.1.13 // indirect diff --git a/go.sum b/go.sum index 60652e252..e977dd88c 100644 --- a/go.sum +++ b/go.sum @@ -84,8 +84,8 @@ github.com/andybalholm/cascadia v1.3.3 h1:AG2YHrzJIm4BZ19iwJ/DAua6Btl3IwJX+VI4kk github.com/andybalholm/cascadia v1.3.3/go.mod h1:xNd9bqTn98Ln4DwST8/nG+H0yuB8Hmgu1YHNnWw0GeA= github.com/anyproto/any-store v0.1.5 h1:AHOaFr9A+RhUc80MceUI9DL8vWqEW7AVB29lTqUlLL8= github.com/anyproto/any-store v0.1.5/go.mod h1:nbyRoJYOlvSWU1xDOrmgPP96UeoTf4eYZ9k+qqLK9k8= -github.com/anyproto/any-sync v0.5.25 h1:v59eQ+C7YOKC18G1PVql17fuc42Mvgb7c7Ju855tc0Q= -github.com/anyproto/any-sync v0.5.25/go.mod h1:NKQZqnU7NzOOjDQc/rKmiRmRDCrARdlEnVLYwWqTcfM= +github.com/anyproto/any-sync v0.5.26 h1:JWcR/RFGQ22CYWrdh2Ain6uEWNePtYHCLs+LXsm8hhU= +github.com/anyproto/any-sync v0.5.26/go.mod h1:Ljftoz6/mCM/2wP2tK9H1/jtVAxfgqzYplBA4MbiUs0= github.com/anyproto/anytype-publish-server/publishclient v0.0.0-20241223184559-a5cacfe0950a h1:kSNyLHsZ40JxlRAglr85YXH2ik2LH3AH5Hd3JL42KGo= github.com/anyproto/anytype-publish-server/publishclient v0.0.0-20241223184559-a5cacfe0950a/go.mod h1:4fkueCZcGniSMXkrwESO8zzERrh/L7WHimRNWecfGM0= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580 h1:Ba80IlCCxkZ9H1GF+7vFu/TSpPvbpDCxXJ5ogc4euYc= @@ -584,14 +584,14 @@ github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLf github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= github.com/ipfs/bbloom v0.0.4 h1:Gi+8EGJ2y5qiD5FbsbpX/TMNcJw8gSqr7eyjHa4Fhvs= github.com/ipfs/bbloom v0.0.4/go.mod h1:cS9YprKXpoZ9lT0n/Mw/a6/aFV6DTjTLYHeA+gyqMG0= -github.com/ipfs/boxo v0.26.0 h1:RRxEon7rJMy8ScVaTLncSZ5/nA6majYhRSbzc80snO8= -github.com/ipfs/boxo v0.26.0/go.mod h1:iHyc9cjoF7/zoiKVY65d2fBWRhoS2zx4cMk8hKgqrac= +github.com/ipfs/boxo v0.27.0 h1:8zu0zQrCXSUMn/0vnXy6oUppscoxstK7hQqiGFwUcjY= +github.com/ipfs/boxo v0.27.0/go.mod h1:qEIRrGNr0bitDedTCzyzBHxzNWqYmyuHgK8LG9Q83EM= github.com/ipfs/go-bitfield v1.1.0 h1:fh7FIo8bSwaJEh6DdTWbCeZ1eqOaOkKFI74SCnsWbGA= github.com/ipfs/go-bitfield v1.1.0/go.mod h1:paqf1wjq/D2BBmzfTVFlJQ9IlFOZpg422HL0HqsGWHU= github.com/ipfs/go-block-format v0.2.0 h1:ZqrkxBA2ICbDRbK8KJs/u0O3dlp6gmAuuXUJNiW1Ycs= github.com/ipfs/go-block-format v0.2.0/go.mod h1:+jpL11nFx5A/SPpsoBn6Bzkra/zaArfSmsknbPMYgzM= -github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= -github.com/ipfs/go-cid v0.4.1/go.mod h1:uQHwDeX4c6CtyrFwdqyhpNcxVewur1M7l7fNU7LKwZk= +github.com/ipfs/go-cid v0.5.0 h1:goEKKhaGm0ul11IHA7I6p1GmKz8kEYniqFopaB5Otwg= +github.com/ipfs/go-cid v0.5.0/go.mod h1:0L7vmeNXpQpUS9vt+yEARkJ8rOg43DF3iPgn4GIN0mk= github.com/ipfs/go-datastore v0.5.0/go.mod h1:9zhEApYMTl17C8YDp7JmU7sQZi2/wqiYh73hakZ90Bk= github.com/ipfs/go-datastore v0.6.0 h1:JKyz+Gvz1QEZw0LsX1IBn+JFCJQH4SJVFtM4uWU0Myk= github.com/ipfs/go-datastore v0.6.0/go.mod h1:rt5M3nNbSO/8q1t4LNkLyUwRs8HupMeN/8O4Vn9YAT8= @@ -699,8 +699,8 @@ github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6 github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= github.com/libp2p/go-flow-metrics v0.2.0 h1:EIZzjmeOE6c8Dav0sNv35vhZxATIXWZg6j/C08XmmDw= github.com/libp2p/go-flow-metrics v0.2.0/go.mod h1:st3qqfu8+pMfh+9Mzqb2GTiwrAGjIPszEjZmtksN8Jc= -github.com/libp2p/go-libp2p v0.38.1 h1:aT1K7IFWi+gZUsQGCzTHBTlKX5QVZQOahng8DnOr6tQ= -github.com/libp2p/go-libp2p v0.38.1/go.mod h1:QWV4zGL3O9nXKdHirIC59DoRcZ446dfkjbOJ55NEWFo= +github.com/libp2p/go-libp2p v0.38.2 h1:9SZQDOCi82A25An4kx30lEtr6kGTxrtoaDkbs5xrK5k= +github.com/libp2p/go-libp2p v0.38.2/go.mod h1:QWV4zGL3O9nXKdHirIC59DoRcZ446dfkjbOJ55NEWFo= github.com/libp2p/go-libp2p-asn-util v0.4.1 h1:xqL7++IKD9TBFMgnLPZR6/6iYhawHKHl950SO9L6n94= github.com/libp2p/go-libp2p-asn-util v0.4.1/go.mod h1:d/NI6XZ9qxw67b4e+NgpQexCIiFYJjErASrYW4PFDN8= github.com/libp2p/go-libp2p-record v0.2.0 h1:oiNUOCWno2BFuxt3my4i1frNrt7PerzB3queqa1NkQ0= diff --git a/space/clientspace/mock_clientspace/mock_Space.go b/space/clientspace/mock_clientspace/mock_Space.go index a4bff49ae..d601e8001 100644 --- a/space/clientspace/mock_clientspace/mock_Space.go +++ b/space/clientspace/mock_clientspace/mock_Space.go @@ -1651,6 +1651,62 @@ func (_c *MockSpace_TreeBuilder_Call) RunAndReturn(run func() objecttreebuilder. return _c } +// TryRemove provides a mock function with given fields: objectId +func (_m *MockSpace) TryRemove(objectId string) (bool, error) { + ret := _m.Called(objectId) + + if len(ret) == 0 { + panic("no return value specified for TryRemove") + } + + var r0 bool + var r1 error + if rf, ok := ret.Get(0).(func(string) (bool, error)); ok { + return rf(objectId) + } + if rf, ok := ret.Get(0).(func(string) bool); ok { + r0 = rf(objectId) + } else { + r0 = ret.Get(0).(bool) + } + + if rf, ok := ret.Get(1).(func(string) error); ok { + r1 = rf(objectId) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// MockSpace_TryRemove_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'TryRemove' +type MockSpace_TryRemove_Call struct { + *mock.Call +} + +// TryRemove is a helper method to define mock.On call +// - objectId string +func (_e *MockSpace_Expecter) TryRemove(objectId interface{}) *MockSpace_TryRemove_Call { + return &MockSpace_TryRemove_Call{Call: _e.mock.On("TryRemove", objectId)} +} + +func (_c *MockSpace_TryRemove_Call) Run(run func(objectId string)) *MockSpace_TryRemove_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(string)) + }) + return _c +} + +func (_c *MockSpace_TryRemove_Call) Return(_a0 bool, _a1 error) *MockSpace_TryRemove_Call { + _c.Call.Return(_a0, _a1) + return _c +} + +func (_c *MockSpace_TryRemove_Call) RunAndReturn(run func(string) (bool, error)) *MockSpace_TryRemove_Call { + _c.Call.Return(run) + return _c +} + // WaitMandatoryObjects provides a mock function with given fields: ctx func (_m *MockSpace) WaitMandatoryObjects(ctx context.Context) error { ret := _m.Called(ctx) From b098e47778a29ba7068425f72667744de92d30ac Mon Sep 17 00:00:00 2001 From: AnastasiaShemyakinskaya Date: Mon, 27 Jan 2025 15:13:27 +0100 Subject: [PATCH 246/279] GO-4889: fix error code Signed-off-by: AnastasiaShemyakinskaya --- core/publish.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/publish.go b/core/publish.go index a64347855..6695ac51a 100644 --- a/core/publish.go +++ b/core/publish.go @@ -23,8 +23,8 @@ func (mw *Middleware) PublishingCreate(ctx context.Context, req *pb.RpcPublishin log.Error("PublishingCreate called", zap.String("objectId", req.ObjectId)) code := mapErrorCode(err, errToCode(nil, pb.RpcPublishingCreateResponseError_NULL), - errToCode(err, pb.RpcPublishingCreateResponseError_UNKNOWN_ERROR), - errToCode(publish.ErrLimitExceeded, pb.RpcPublishingCreateResponseError_LIMIT_EXCEEDED)) + errToCode(publish.ErrLimitExceeded, pb.RpcPublishingCreateResponseError_LIMIT_EXCEEDED), + errToCode(err, pb.RpcPublishingCreateResponseError_UNKNOWN_ERROR)) r := &pb.RpcPublishingCreateResponse{ Error: &pb.RpcPublishingCreateResponseError{ From 626b8376a94f200fab0c14595fa3766d461f5c48 Mon Sep 17 00:00:00 2001 From: Mikhail Iudin Date: Mon, 27 Jan 2025 15:26:20 +0100 Subject: [PATCH 247/279] GO-4146 merge main --- go.sum | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/go.sum b/go.sum index e977dd88c..3cf41d056 100644 --- a/go.sum +++ b/go.sum @@ -82,10 +82,10 @@ github.com/alexbrainman/goissue34681 v0.0.0-20191006012335-3fc7a47baff5/go.mod h github.com/andybalholm/cascadia v1.3.1/go.mod h1:R4bJ1UQfqADjvDa4P6HZHLh/3OxWWEqc0Sk8XGwHqvA= github.com/andybalholm/cascadia v1.3.3 h1:AG2YHrzJIm4BZ19iwJ/DAua6Btl3IwJX+VI4kktS1LM= github.com/andybalholm/cascadia v1.3.3/go.mod h1:xNd9bqTn98Ln4DwST8/nG+H0yuB8Hmgu1YHNnWw0GeA= -github.com/anyproto/any-store v0.1.5 h1:AHOaFr9A+RhUc80MceUI9DL8vWqEW7AVB29lTqUlLL8= -github.com/anyproto/any-store v0.1.5/go.mod h1:nbyRoJYOlvSWU1xDOrmgPP96UeoTf4eYZ9k+qqLK9k8= -github.com/anyproto/any-sync v0.5.26 h1:JWcR/RFGQ22CYWrdh2Ain6uEWNePtYHCLs+LXsm8hhU= -github.com/anyproto/any-sync v0.5.26/go.mod h1:Ljftoz6/mCM/2wP2tK9H1/jtVAxfgqzYplBA4MbiUs0= +github.com/anyproto/any-store v0.1.6 h1:CmxIH2JhgHH2s7dnv1SNKAQ3spvX2amG/5RbrTZkLaQ= +github.com/anyproto/any-store v0.1.6/go.mod h1:nbyRoJYOlvSWU1xDOrmgPP96UeoTf4eYZ9k+qqLK9k8= +github.com/anyproto/any-sync v0.6.0-alpha.11 h1:TwLkPTPaNmp78K7pmsb1X9CPR8oD5dWahjOGOxV50kY= +github.com/anyproto/any-sync v0.6.0-alpha.11/go.mod h1:JmjcChDSqgt6+G697YI3Yr57SZswxPJNX1arN//UYig= github.com/anyproto/anytype-publish-server/publishclient v0.0.0-20241223184559-a5cacfe0950a h1:kSNyLHsZ40JxlRAglr85YXH2ik2LH3AH5Hd3JL42KGo= github.com/anyproto/anytype-publish-server/publishclient v0.0.0-20241223184559-a5cacfe0950a/go.mod h1:4fkueCZcGniSMXkrwESO8zzERrh/L7WHimRNWecfGM0= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580 h1:Ba80IlCCxkZ9H1GF+7vFu/TSpPvbpDCxXJ5ogc4euYc= From ce7015e3c4767fa412c7324e540686b5fe6b4eec Mon Sep 17 00:00:00 2001 From: AnastasiaShemyakinskaya Date: Mon, 27 Jan 2025 16:37:17 +0100 Subject: [PATCH 248/279] GO-4889: call filter on copy Signed-off-by: AnastasiaShemyakinskaya --- core/block/editor/state/state.go | 8 ++--- core/block/editor/state/state_test.go | 44 --------------------------- core/block/export/export.go | 10 +++--- 3 files changed, 9 insertions(+), 53 deletions(-) diff --git a/core/block/editor/state/state.go b/core/block/editor/state/state.go index 42724921d..89c113aba 100644 --- a/core/block/editor/state/state.go +++ b/core/block/editor/state/state.go @@ -147,18 +147,18 @@ type Filters struct { RemoveBlocks bool } +// Filter should be called with state copy func (s *State) Filter(filters *Filters) *State { if filters == nil { return s } - stateCopy := s.Copy() if filters.RemoveBlocks { - stateCopy.filterBlocks() + s.filterBlocks() } if len(filters.RelationsWhiteList) > 0 { - stateCopy.filterRelations(filters) + s.filterRelations(filters) } - return stateCopy + return s } func (s *State) filterBlocks() { diff --git a/core/block/editor/state/state_test.go b/core/block/editor/state/state_test.go index fdeb3469f..f1be9f452 100644 --- a/core/block/editor/state/state_test.go +++ b/core/block/editor/state/state_test.go @@ -2979,50 +2979,6 @@ func TestState_AddRelationLinks(t *testing.T) { } func TestFilter(t *testing.T) { - t.Run("no filters", func(t *testing.T) { - // given - st := buildStateFromAST(blockbuilder.Root( - blockbuilder.ID("root"), - blockbuilder.Children( - blockbuilder.Text( - " text 1 ", - blockbuilder.ID("1"), - ), - blockbuilder.Text( - " text 2 ", - blockbuilder.ID("2"), - ), - ))) - st.AddDetails(domain.NewDetailsFromMap(map[domain.RelationKey]domain.Value{ - bundle.RelationKeyCoverType: domain.Int64(1), - bundle.RelationKeyName: domain.String("name"), - bundle.RelationKeyAssignee: domain.String("assignee"), - bundle.RelationKeyLayout: domain.Int64(model.ObjectType_todo), - })) - st.AddRelationLinks(&model.RelationLink{ - Key: bundle.RelationKeyCoverType.String(), - Format: model.RelationFormat_number, - }, - &model.RelationLink{ - Key: bundle.RelationKeyName.String(), - Format: model.RelationFormat_longtext, - }, - &model.RelationLink{ - Key: bundle.RelationKeyAssignee.String(), - Format: model.RelationFormat_object, - }, - &model.RelationLink{ - Key: bundle.RelationKeyLayout.String(), - Format: model.RelationFormat_number, - }, - ) - - // when - filteredState := st.Filter(nil) - - // then - assert.Equal(t, st, filteredState) - }) t.Run("remove blocks", func(t *testing.T) { // given st := NewDoc("root", map[string]simple.Block{ diff --git a/core/block/export/export.go b/core/block/export/export.go index 87f91399c..3d1d51acc 100644 --- a/core/block/export/export.go +++ b/core/block/export/export.go @@ -482,7 +482,7 @@ func (e *exportContext) addDependentObjectsFromDataview() error { func (e *exportContext) getViewDependentObjects(id string, viewDependentObjectsIds []string) ([]string, error) { err := cache.Do(e.picker, id, func(sb sb.SmartBlock) error { - st := sb.NewState().Filter(e.getStateFilters(id)) + st := sb.NewState().Copy().Filter(e.getStateFilters(id)) viewDependentObjectsIds = append(viewDependentObjectsIds, objectlink.DependentObjectIDs(st, sb.Space(), objectlink.Flags{Blocks: true})...) return nil }) @@ -561,7 +561,7 @@ func (e *exportContext) collectDerivedObjects(objects map[string]*Doc) ([]string var relations, objectsTypes, setOf []string for id := range objects { err := cache.Do(e.picker, id, func(b sb.SmartBlock) error { - state := b.NewState().Filter(e.getStateFilters(id)) + state := b.NewState().Copy().Filter(e.getStateFilters(id)) relations = lo.Union(relations, getObjectRelations(state)) details := state.CombinedDetails() if isObjectWithDataview(details) { @@ -849,7 +849,7 @@ func (e *exportContext) addNestedObjects(ids []string) error { func (e *exportContext) addNestedObject(id string, nestedDocs map[string]*Doc) { var links []string err := cache.Do(e.picker, id, func(sb sb.SmartBlock) error { - st := sb.NewState().Filter(e.getStateFilters(id)) + st := sb.NewState().Copy().Filter(e.getStateFilters(id)) links = objectlink.DependentObjectIDs(st, sb.Space(), objectlink.Flags{ Blocks: true, Details: true, @@ -890,7 +890,7 @@ func (e *exportContext) fillLinkedFiles(id string) ([]string, error) { spaceIndex := e.objectStore.SpaceIndex(e.spaceId) var fileObjectsIds []string err := cache.Do(e.picker, id, func(b sb.SmartBlock) error { - b.NewState().Filter(e.getStateFilters(id)).IterateLinkedFiles(func(fileObjectId string) { + b.NewState().Copy().Filter(e.getStateFilters(id)).IterateLinkedFiles(func(fileObjectId string) { res, err := spaceIndex.Query(database.Query{ Filters: []database.FilterRequest{ { @@ -1002,7 +1002,7 @@ func (e *exportContext) writeDoc(ctx context.Context, wr writer, docId string, d return nil } - st = st.Filter(e.getStateFilters(docId)) + st = st.Copy().Filter(e.getStateFilters(docId)) if e.includeFiles && b.Type() == smartblock.SmartBlockTypeFileObject { fileName, err := e.saveFile(ctx, wr, b, e.spaceId == "") if err != nil { From 7ded30135ef1cca35ee619ceb31c5cdc7adf709e Mon Sep 17 00:00:00 2001 From: kirillston Date: Mon, 27 Jan 2025 18:35:28 +0100 Subject: [PATCH 249/279] GO-4444 Remove comment --- space/internal/components/migration/runner.go | 1 - 1 file changed, 1 deletion(-) diff --git a/space/internal/components/migration/runner.go b/space/internal/components/migration/runner.go index 21e6cc76d..57610604e 100644 --- a/space/internal/components/migration/runner.go +++ b/space/internal/components/migration/runner.go @@ -106,7 +106,6 @@ func (r *Runner) run(migrations ...Migration) (err error) { start := time.Now() store := r.store.SpaceIndex(spaceId) - // marketPlaceStore := r.store.SpaceIndex(addr.AnytypeMarketplaceWorkspace) spent := time.Since(start) for _, m := range migrations { From a838fd1ebda089033bbdcef6ba841225a69a4baa Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Mon, 27 Jan 2025 19:02:07 +0100 Subject: [PATCH 250/279] GO-4459: Add endpoints for single type and template --- core/api/docs/docs.go | 158 ++++++++++++++++++++++++++-- core/api/docs/swagger.json | 158 ++++++++++++++++++++++++++-- core/api/docs/swagger.yaml | 105 +++++++++++++++++- core/api/internal/object/handler.go | 74 ++++++++++++- core/api/internal/object/model.go | 8 ++ core/api/internal/object/service.go | 74 +++++++++++-- core/api/server/router.go | 10 +- core/api/service.go | 11 +- 8 files changed, 560 insertions(+), 38 deletions(-) diff --git a/core/api/docs/docs.go b/core/api/docs/docs.go index 3090f6e42..d68a733bf 100644 --- a/core/api/docs/docs.go +++ b/core/api/docs/docs.go @@ -716,7 +716,7 @@ const docTemplate = `{ "application/json" ], "tags": [ - "objects" + "types" ], "summary": "List types", "parameters": [ @@ -765,6 +765,62 @@ const docTemplate = `{ } } }, + "/spaces/{space_id}/types/{type_id}": { + "get": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "types" + ], + "summary": "Get type", + "parameters": [ + { + "type": "string", + "description": "Space ID", + "name": "space_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Type ID", + "name": "type_id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "The requested type", + "schema": { + "$ref": "#/definitions/object.TypeResponse" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/util.UnauthorizedError" + } + }, + "404": { + "description": "Resource not found", + "schema": { + "$ref": "#/definitions/util.NotFoundError" + } + }, + "500": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/util.ServerError" + } + } + } + } + }, "/spaces/{space_id}/types/{type_id}/templates": { "get": { "consumes": [ @@ -774,7 +830,7 @@ const docTemplate = `{ "application/json" ], "tags": [ - "objects" + "types" ], "summary": "List templates", "parameters": [ @@ -829,6 +885,69 @@ const docTemplate = `{ } } } + }, + "/spaces/{space_id}/types/{type_id}/templates/{template_id}": { + "get": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "types" + ], + "summary": "Get template", + "parameters": [ + { + "type": "string", + "description": "Space ID", + "name": "space_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Type ID", + "name": "type_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Template ID", + "name": "template_id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "The requested template", + "schema": { + "$ref": "#/definitions/object.TemplateResponse" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/util.UnauthorizedError" + } + }, + "404": { + "description": "Resource not found", + "schema": { + "$ref": "#/definitions/util.NotFoundError" + } + }, + "500": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/util.ServerError" + } + } + } + } } }, "definitions": { @@ -1044,6 +1163,14 @@ const docTemplate = `{ } } }, + "object.TemplateResponse": { + "type": "object", + "properties": { + "template": { + "$ref": "#/definitions/object.Template" + } + } + }, "object.Text": { "type": "object", "properties": { @@ -1093,6 +1220,14 @@ const docTemplate = `{ } } }, + "object.TypeResponse": { + "type": "object", + "properties": { + "type": { + "$ref": "#/definitions/object.Type" + } + } + }, "pagination.PaginatedResponse-object_Object": { "type": "object", "properties": { @@ -1209,12 +1344,18 @@ const docTemplate = `{ "type": "object", "properties": { "direction": { - "description": "\"asc\" or \"desc\"", - "type": "string" + "type": "string", + "default": "desc", + "enum": [ + "asc|desc" + ] }, "timestamp": { - "description": "\"created_date\", \"last_modified_date\" or \"last_opened_date\"", - "type": "string" + "type": "string", + "default": "last_modified_date", + "enum": [ + "created_date|last_modified_date|last_opened_date" + ] } } }, @@ -1251,6 +1392,9 @@ const docTemplate = `{ }, "role": { "type": "string", + "enum": [ + "Reader|Writer|Owner|NoPermission" + ], "example": "Owner" }, "type": { @@ -1288,7 +1432,7 @@ const docTemplate = `{ }, "icon": { "type": "string", - "example": "http://127.0.0.1:31006/image/bafybeieptz5hvcy6txplcvphjbbh5yjc2zqhmihs3owkh5oab4ezauzqay?width=100" + "example": "http://127.0.0.1:31006/image/bafybeieptz5hvcy6txplcvphjbbh5yjc2zqhmihs3owkh5oab4ezauzqay" }, "id": { "type": "string", diff --git a/core/api/docs/swagger.json b/core/api/docs/swagger.json index 8b8c60a7b..68411e15b 100644 --- a/core/api/docs/swagger.json +++ b/core/api/docs/swagger.json @@ -710,7 +710,7 @@ "application/json" ], "tags": [ - "objects" + "types" ], "summary": "List types", "parameters": [ @@ -759,6 +759,62 @@ } } }, + "/spaces/{space_id}/types/{type_id}": { + "get": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "types" + ], + "summary": "Get type", + "parameters": [ + { + "type": "string", + "description": "Space ID", + "name": "space_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Type ID", + "name": "type_id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "The requested type", + "schema": { + "$ref": "#/definitions/object.TypeResponse" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/util.UnauthorizedError" + } + }, + "404": { + "description": "Resource not found", + "schema": { + "$ref": "#/definitions/util.NotFoundError" + } + }, + "500": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/util.ServerError" + } + } + } + } + }, "/spaces/{space_id}/types/{type_id}/templates": { "get": { "consumes": [ @@ -768,7 +824,7 @@ "application/json" ], "tags": [ - "objects" + "types" ], "summary": "List templates", "parameters": [ @@ -823,6 +879,69 @@ } } } + }, + "/spaces/{space_id}/types/{type_id}/templates/{template_id}": { + "get": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "types" + ], + "summary": "Get template", + "parameters": [ + { + "type": "string", + "description": "Space ID", + "name": "space_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Type ID", + "name": "type_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Template ID", + "name": "template_id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "The requested template", + "schema": { + "$ref": "#/definitions/object.TemplateResponse" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/util.UnauthorizedError" + } + }, + "404": { + "description": "Resource not found", + "schema": { + "$ref": "#/definitions/util.NotFoundError" + } + }, + "500": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/util.ServerError" + } + } + } + } } }, "definitions": { @@ -1038,6 +1157,14 @@ } } }, + "object.TemplateResponse": { + "type": "object", + "properties": { + "template": { + "$ref": "#/definitions/object.Template" + } + } + }, "object.Text": { "type": "object", "properties": { @@ -1087,6 +1214,14 @@ } } }, + "object.TypeResponse": { + "type": "object", + "properties": { + "type": { + "$ref": "#/definitions/object.Type" + } + } + }, "pagination.PaginatedResponse-object_Object": { "type": "object", "properties": { @@ -1203,12 +1338,18 @@ "type": "object", "properties": { "direction": { - "description": "\"asc\" or \"desc\"", - "type": "string" + "type": "string", + "default": "desc", + "enum": [ + "asc|desc" + ] }, "timestamp": { - "description": "\"created_date\", \"last_modified_date\" or \"last_opened_date\"", - "type": "string" + "type": "string", + "default": "last_modified_date", + "enum": [ + "created_date|last_modified_date|last_opened_date" + ] } } }, @@ -1245,6 +1386,9 @@ }, "role": { "type": "string", + "enum": [ + "Reader|Writer|Owner|NoPermission" + ], "example": "Owner" }, "type": { @@ -1282,7 +1426,7 @@ }, "icon": { "type": "string", - "example": "http://127.0.0.1:31006/image/bafybeieptz5hvcy6txplcvphjbbh5yjc2zqhmihs3owkh5oab4ezauzqay?width=100" + "example": "http://127.0.0.1:31006/image/bafybeieptz5hvcy6txplcvphjbbh5yjc2zqhmihs3owkh5oab4ezauzqay" }, "id": { "type": "string", diff --git a/core/api/docs/swagger.yaml b/core/api/docs/swagger.yaml index 9ce98d14e..08e017e99 100644 --- a/core/api/docs/swagger.yaml +++ b/core/api/docs/swagger.yaml @@ -144,6 +144,11 @@ definitions: example: template type: string type: object + object.TemplateResponse: + properties: + template: + $ref: '#/definitions/object.Template' + type: object object.Text: properties: checked: @@ -178,6 +183,11 @@ definitions: example: ot-page type: string type: object + object.TypeResponse: + properties: + type: + $ref: '#/definitions/object.Type' + type: object pagination.PaginatedResponse-object_Object: properties: data: @@ -256,10 +266,14 @@ definitions: search.SortOptions: properties: direction: - description: '"asc" or "desc"' + default: desc + enum: + - asc|desc type: string timestamp: - description: '"created_date", "last_modified_date" or "last_opened_date"' + default: last_modified_date + enum: + - created_date|last_modified_date|last_opened_date type: string type: object space.CreateSpaceResponse: @@ -285,6 +299,8 @@ definitions: example: John Doe type: string role: + enum: + - Reader|Writer|Owner|NoPermission example: Owner type: string type: @@ -312,7 +328,7 @@ definitions: example: bafyreie4qcl3wczb4cw5hrfyycikhjyh6oljdis3ewqrk5boaav3sbwqya type: string icon: - example: http://127.0.0.1:31006/image/bafybeieptz5hvcy6txplcvphjbbh5yjc2zqhmihs3owkh5oab4ezauzqay?width=100 + example: http://127.0.0.1:31006/image/bafybeieptz5hvcy6txplcvphjbbh5yjc2zqhmihs3owkh5oab4ezauzqay type: string id: example: bafyreigyfkt6rbv24sbv5aq2hko3bhmv5xxlf22b4bypdu6j7hnphm3psq.23me69r569oi1 @@ -907,7 +923,44 @@ paths: $ref: '#/definitions/util.ServerError' summary: List types tags: - - objects + - types + /spaces/{space_id}/types/{type_id}: + get: + consumes: + - application/json + parameters: + - description: Space ID + in: path + name: space_id + required: true + type: string + - description: Type ID + in: path + name: type_id + required: true + type: string + produces: + - application/json + responses: + "200": + description: The requested type + schema: + $ref: '#/definitions/object.TypeResponse' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/util.UnauthorizedError' + "404": + description: Resource not found + schema: + $ref: '#/definitions/util.NotFoundError' + "500": + description: Internal server error + schema: + $ref: '#/definitions/util.ServerError' + summary: Get type + tags: + - types /spaces/{space_id}/types/{type_id}/templates: get: consumes: @@ -952,7 +1005,49 @@ paths: $ref: '#/definitions/util.ServerError' summary: List templates tags: - - objects + - types + /spaces/{space_id}/types/{type_id}/templates/{template_id}: + get: + consumes: + - application/json + parameters: + - description: Space ID + in: path + name: space_id + required: true + type: string + - description: Type ID + in: path + name: type_id + required: true + type: string + - description: Template ID + in: path + name: template_id + required: true + type: string + produces: + - application/json + responses: + "200": + description: The requested template + schema: + $ref: '#/definitions/object.TemplateResponse' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/util.UnauthorizedError' + "404": + description: Resource not found + schema: + $ref: '#/definitions/util.NotFoundError' + "500": + description: Internal server error + schema: + $ref: '#/definitions/util.ServerError' + summary: Get template + tags: + - types securityDefinitions: BasicAuth: type: basic diff --git a/core/api/internal/object/handler.go b/core/api/internal/object/handler.go index b7714fce6..671f25583 100644 --- a/core/api/internal/object/handler.go +++ b/core/api/internal/object/handler.go @@ -162,7 +162,7 @@ func CreateObjectHandler(s *ObjectService) gin.HandlerFunc { // GetTypesHandler retrieves a list of types in a space // // @Summary List types -// @Tags objects +// @Tags types // @Accept json // @Produce json // @Param space_id path string true "Space ID" @@ -193,10 +193,44 @@ func GetTypesHandler(s *ObjectService) gin.HandlerFunc { } } +// GetTypeHandler retrieves a type in a space +// +// @Summary Get type +// @Tags types +// @Accept json +// @Produce json +// @Param space_id path string true "Space ID" +// @Param type_id path string true "Type ID" +// @Success 200 {object} TypeResponse "The requested type" +// @Failure 401 {object} util.UnauthorizedError "Unauthorized" +// @Failure 404 {object} util.NotFoundError "Resource not found" +// @Failure 500 {object} util.ServerError "Internal server error" +// @Router /spaces/{space_id}/types/{type_id} [get] +func GetTypeHandler(s *ObjectService) gin.HandlerFunc { + return func(c *gin.Context) { + spaceId := c.Param("space_id") + typeId := c.Param("type_id") + + object, err := s.GetType(c.Request.Context(), spaceId, typeId) + code := util.MapErrorCode(err, + util.ErrToCode(ErrTypeNotFound, http.StatusNotFound), + util.ErrToCode(ErrFailedRetrieveType, http.StatusInternalServerError), + ) + + if code != http.StatusOK { + apiErr := util.CodeToAPIError(code, err.Error()) + c.JSON(code, apiErr) + return + } + + c.JSON(http.StatusOK, TypeResponse{Type: object}) + } +} + // GetTemplatesHandler retrieves a list of templates for a type in a space // // @Summary List templates -// @Tags objects +// @Tags types // @Accept json // @Produce json // @Param space_id path string true "Space ID" @@ -231,3 +265,39 @@ func GetTemplatesHandler(s *ObjectService) gin.HandlerFunc { pagination.RespondWithPagination(c, http.StatusOK, templates, total, offset, limit, hasMore) } } + +// GetTemplateHandler retrieves a template for a type in a space +// +// @Summary Get template +// @Tags types +// @Accept json +// @Produce json +// @Param space_id path string true "Space ID" +// @Param type_id path string true "Type ID" +// @Param template_id path string true "Template ID" +// @Success 200 {object} TemplateResponse "The requested template" +// @Failure 401 {object} util.UnauthorizedError "Unauthorized" +// @Failure 404 {object} util.NotFoundError "Resource not found" +// @Failure 500 {object} util.ServerError "Internal server error" +// @Router /spaces/{space_id}/types/{type_id}/templates/{template_id} [get] +func GetTemplateHandler(s *ObjectService) gin.HandlerFunc { + return func(c *gin.Context) { + spaceId := c.Param("space_id") + typeId := c.Param("type_id") + templateId := c.Param("template_id") + + object, err := s.GetTemplate(c.Request.Context(), spaceId, typeId, templateId) + code := util.MapErrorCode(err, + util.ErrToCode(ErrTemplateNotFound, http.StatusNotFound), + util.ErrToCode(ErrFailedRetrieveTemplate, http.StatusInternalServerError), + ) + + if code != http.StatusOK { + apiErr := util.CodeToAPIError(code, err.Error()) + c.JSON(code, apiErr) + return + } + + c.JSON(http.StatusOK, TemplateResponse{Template: object}) + } +} diff --git a/core/api/internal/object/model.go b/core/api/internal/object/model.go index b70b73148..67a2d68d6 100644 --- a/core/api/internal/object/model.go +++ b/core/api/internal/object/model.go @@ -69,6 +69,10 @@ type Tag struct { Color string `json:"color" example:"yellow"` } +type TypeResponse struct { + Type Type `json:"type"` +} + type Type struct { Type string `json:"type" example:"type"` Id string `json:"id" example:"bafyreigyb6l5szohs32ts26ku2j42yd65e6hqy2u3gtzgdwqv6hzftsetu"` @@ -78,6 +82,10 @@ type Type struct { RecommendedLayout string `json:"recommended_layout" example:"todo"` } +type TemplateResponse struct { + Template Template `json:"template"` +} + type Template struct { Type string `json:"type" example:"template"` Id string `json:"id" example:"bafyreictrp3obmnf6dwejy5o4p7bderaaia4bdg2psxbfzf44yya5uutge"` diff --git a/core/api/internal/object/service.go b/core/api/internal/object/service.go index 6e8ecb7a5..70935c154 100644 --- a/core/api/internal/object/service.go +++ b/core/api/internal/object/service.go @@ -18,20 +18,26 @@ import ( ) var ( - ErrObjectNotFound = errors.New("object not found") - ErrFailedRetrieveObject = errors.New("failed to retrieve object") - ErrFailedRetrieveObjects = errors.New("failed to retrieve list of objects") - ErrFailedDeleteObject = errors.New("failed to delete object") - ErrFailedCreateObject = errors.New("failed to create object") - ErrInputMissingSource = errors.New("source is missing for bookmark") - ErrFailedSetRelationFeatured = errors.New("failed to set relation featured") - ErrFailedFetchBookmark = errors.New("failed to fetch bookmark") - ErrFailedPasteBody = errors.New("failed to paste body") + // objects + ErrObjectNotFound = errors.New("object not found") + ErrFailedRetrieveObject = errors.New("failed to retrieve object") + ErrFailedRetrieveObjects = errors.New("failed to retrieve list of objects") + ErrFailedDeleteObject = errors.New("failed to delete object") + ErrFailedCreateObject = errors.New("failed to create object") + ErrInputMissingSource = errors.New("source is missing for bookmark") + ErrFailedSetRelationFeatured = errors.New("failed to set relation featured") + ErrFailedFetchBookmark = errors.New("failed to fetch bookmark") + ErrFailedPasteBody = errors.New("failed to paste body") + + // types ErrFailedRetrieveTypes = errors.New("failed to retrieve types") + ErrTypeNotFound = errors.New("type not found") + ErrFailedRetrieveType = errors.New("failed to retrieve type") ErrFailedRetrieveTemplateType = errors.New("failed to retrieve template type") ErrTemplateTypeNotFound = errors.New("template type not found") ErrFailedRetrieveTemplate = errors.New("failed to retrieve template") ErrFailedRetrieveTemplates = errors.New("failed to retrieve templates") + ErrTemplateNotFound = errors.New("template not found") ) type Service interface { @@ -40,7 +46,9 @@ type Service interface { DeleteObject(ctx context.Context, spaceId string, objectId string) (Object, error) CreateObject(ctx context.Context, spaceId string, request CreateObjectRequest) (Object, error) ListTypes(ctx context.Context, spaceId string, offset int, limit int) ([]Type, int, bool, error) + GetType(ctx context.Context, spaceId string, typeId string) (Type, error) ListTemplates(ctx context.Context, spaceId string, typeId string, offset int, limit int) ([]Template, int, bool, error) + GetTemplate(ctx context.Context, spaceId string, typeId string, templateId string) (Template, error) } type ObjectService struct { @@ -303,6 +311,31 @@ func (s *ObjectService) ListTypes(ctx context.Context, spaceId string, offset in return types, total, hasMore, nil } +// GetType returns a single type by its ID in a specific space. +func (s *ObjectService) GetType(ctx context.Context, spaceId string, typeId string) (Type, error) { + resp := s.mw.ObjectShow(ctx, &pb.RpcObjectShowRequest{ + SpaceId: spaceId, + ObjectId: typeId, + }) + + if resp.Error.Code == pb.RpcObjectShowResponseError_NOT_FOUND { + return Type{}, ErrTypeNotFound + } + + if resp.Error.Code != pb.RpcObjectShowResponseError_NULL { + return Type{}, ErrFailedRetrieveType + } + + return Type{ + Type: "type", + Id: typeId, + UniqueKey: resp.ObjectView.Details[0].Details.Fields[bundle.RelationKeyUniqueKey.String()].GetStringValue(), + Name: resp.ObjectView.Details[0].Details.Fields[bundle.RelationKeyName.String()].GetStringValue(), + Icon: resp.ObjectView.Details[0].Details.Fields[bundle.RelationKeyIconEmoji.String()].GetStringValue(), + RecommendedLayout: model.ObjectTypeLayout_name[int32(resp.ObjectView.Details[0].Details.Fields[bundle.RelationKeyRecommendedLayout.String()].GetNumberValue())], + }, nil +} + // ListTemplates returns a paginated list of templates in a specific space. func (s *ObjectService) ListTemplates(ctx context.Context, spaceId string, typeId string, offset int, limit int) (templates []Template, total int, hasMore bool, err error) { // First, determine the type ID of "ot-template" in the space @@ -377,6 +410,29 @@ func (s *ObjectService) ListTemplates(ctx context.Context, spaceId string, typeI return templates, total, hasMore, nil } +// GetTemplate returns a single template by its ID in a specific space. +func (s *ObjectService) GetTemplate(ctx context.Context, spaceId string, typeId string, templateId string) (Template, error) { + resp := s.mw.ObjectShow(ctx, &pb.RpcObjectShowRequest{ + SpaceId: spaceId, + ObjectId: templateId, + }) + + if resp.Error.Code == pb.RpcObjectShowResponseError_NOT_FOUND { + return Template{}, ErrTemplateNotFound + } + + if resp.Error.Code != pb.RpcObjectShowResponseError_NULL { + return Template{}, ErrFailedRetrieveTemplate + } + + return Template{ + Type: "template", + Id: templateId, + Name: resp.ObjectView.Details[0].Details.Fields[bundle.RelationKeyName.String()].GetStringValue(), + Icon: resp.ObjectView.Details[0].Details.Fields[bundle.RelationKeyIconEmoji.String()].GetStringValue(), + }, nil +} + // GetDetails returns the list of details from the ObjectShowResponse. func (s *ObjectService) GetDetails(resp *pb.RpcObjectShowResponse) []Detail { creator := resp.ObjectView.Details[0].Details.Fields[bundle.RelationKeyCreator.String()].GetStringValue() diff --git a/core/api/server/router.go b/core/api/server/router.go index 1728be74c..e33206a32 100644 --- a/core/api/server/router.go +++ b/core/api/server/router.go @@ -7,6 +7,8 @@ import ( swaggerFiles "github.com/swaggo/files" ginSwagger "github.com/swaggo/gin-swagger" + _ "github.com/anyproto/anytype-heart/core/api/docs" + "github.com/anyproto/anytype-heart/core/anytype/account" "github.com/anyproto/anytype-heart/core/api/internal/auth" "github.com/anyproto/anytype-heart/core/api/internal/export" @@ -68,8 +70,6 @@ func (s *Server) NewRouter(accountService account.Service, mw service.ClientComm v1.GET("/spaces/:space_id/objects", object.GetObjectsHandler(s.objectService)) v1.GET("/spaces/:space_id/objects/:object_id", object.GetObjectHandler(s.objectService)) v1.DELETE("/spaces/:space_id/objects/:object_id", s.rateLimit(maxWriteRequestsPerSecond), object.DeleteObjectHandler(s.objectService)) - v1.GET("/spaces/:space_id/types", object.GetTypesHandler(s.objectService)) - v1.GET("/spaces/:space_id/types/:type_id/templates", object.GetTemplatesHandler(s.objectService)) v1.POST("/spaces/:space_id/objects", s.rateLimit(maxWriteRequestsPerSecond), object.CreateObjectHandler(s.objectService)) // Search @@ -80,6 +80,12 @@ func (s *Server) NewRouter(accountService account.Service, mw service.ClientComm v1.GET("/spaces", space.GetSpacesHandler(s.spaceService)) v1.GET("/spaces/:space_id/members", space.GetMembersHandler(s.spaceService)) v1.POST("/spaces", s.rateLimit(maxWriteRequestsPerSecond), space.CreateSpaceHandler(s.spaceService)) + + // Type + v1.GET("/spaces/:space_id/types", object.GetTypesHandler(s.objectService)) + v1.GET("/spaces/:space_id/types/:type_id", object.GetTypeHandler(s.objectService)) + v1.GET("/spaces/:space_id/types/:type_id/templates", object.GetTemplatesHandler(s.objectService)) + v1.GET("/spaces/:space_id/types/:type_id/templates/:template_id", object.GetTemplateHandler(s.objectService)) } return router diff --git a/core/api/service.go b/core/api/service.go index 25c55bcdd..d758d7b7a 100644 --- a/core/api/service.go +++ b/core/api/service.go @@ -66,7 +66,6 @@ func (s *apiService) Name() (name string) { func (s *apiService) Init(a *app.App) (err error) { s.listenAddr = a.MustComponent(config.CName).(*config.Config).JsonApiListenAddr s.accountService = a.MustComponent(account.CName).(account.Service) - return nil } @@ -75,6 +74,10 @@ func (s *apiService) Run(ctx context.Context) (err error) { return nil } +func (s *apiService) Close(ctx context.Context) (err error) { + return s.shutdown(ctx) +} + func (s *apiService) runServer() { s.lock.Lock() defer s.lock.Unlock() @@ -105,10 +108,10 @@ func (s *apiService) shutdown(ctx context.Context) (err error) { } s.lock.Lock() defer s.lock.Unlock() + // we don't want graceful shutdown here and block tha app close shutdownCtx, cancel := context.WithTimeout(ctx, time.Millisecond) defer cancel() - if err := s.httpSrv.Shutdown(shutdownCtx); err != nil { return err } @@ -116,10 +119,6 @@ func (s *apiService) shutdown(ctx context.Context) (err error) { return nil } -func (s *apiService) Close(ctx context.Context) (err error) { - return s.shutdown(ctx) -} - func (s *apiService) ReassignAddress(ctx context.Context, listenAddr string) (err error) { err = s.shutdown(ctx) if err != nil { From 945b02f553493ff07a23ce01105ed2aab55a007b Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Mon, 27 Jan 2025 19:02:23 +0100 Subject: [PATCH 251/279] GO-4459: Fix model examples and enums --- core/api/internal/search/model.go | 4 ++-- core/api/internal/space/model.go | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/core/api/internal/search/model.go b/core/api/internal/search/model.go index a192e5a7b..ca64946eb 100644 --- a/core/api/internal/search/model.go +++ b/core/api/internal/search/model.go @@ -7,6 +7,6 @@ type SearchRequest struct { } type SortOptions struct { - Direction string `json:"direction"` // "asc" or "desc" - Timestamp string `json:"timestamp"` // "created_date", "last_modified_date" or "last_opened_date" + Direction string `json:"direction" enums:"asc|desc" default:"desc"` + Timestamp string `json:"timestamp" enums:"created_date|last_modified_date|last_opened_date" default:"last_modified_date"` } diff --git a/core/api/internal/space/model.go b/core/api/internal/space/model.go index 78ef51e45..a0747a6f1 100644 --- a/core/api/internal/space/model.go +++ b/core/api/internal/space/model.go @@ -12,7 +12,7 @@ type Space struct { Type string `json:"type" example:"space"` Id string `json:"id" example:"bafyreigyfkt6rbv24sbv5aq2hko3bhmv5xxlf22b4bypdu6j7hnphm3psq.23me69r569oi1"` Name string `json:"name" example:"Space Name"` - Icon string `json:"icon" example:"http://127.0.0.1:31006/image/bafybeieptz5hvcy6txplcvphjbbh5yjc2zqhmihs3owkh5oab4ezauzqay?width=100"` + Icon string `json:"icon" example:"http://127.0.0.1:31006/image/bafybeieptz5hvcy6txplcvphjbbh5yjc2zqhmihs3owkh5oab4ezauzqay"` HomeObjectId string `json:"home_object_id" example:"bafyreie4qcl3wczb4cw5hrfyycikhjyh6oljdis3ewqrk5boaav3sbwqya"` ArchiveObjectId string `json:"archive_object_id" example:"bafyreialsgoyflf3etjm3parzurivyaukzivwortf32b4twnlwpwocsrri"` ProfileObjectId string `json:"profile_object_id" example:"bafyreiaxhwreshjqwndpwtdsu4mtihaqhhmlygqnyqpfyfwlqfq3rm3gw4"` @@ -37,5 +37,5 @@ type Member struct { Icon string `json:"icon" example:"http://127.0.0.1:31006/image/bafybeieptz5hvcy6txplcvphjbbh5yjc2zqhmihs3owkh5oab4ezauzqay?width=100"` Identity string `json:"identity" example:"AAjEaEwPF4nkEh7AWkqEnzcQ8HziGB4ETjiTpvRCQvWnSMDZ"` GlobalName string `json:"global_name" example:"john.any"` - Role string `json:"role" enum:"Reader,Writer,Owner,NoPermission" example:"Owner"` + Role string `json:"role" enums:"Reader|Writer|Owner|NoPermission" example:"Owner"` } From 09fda23ca9bda392a6524e40226eb9403c4c6c84 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Mon, 27 Jan 2025 19:23:46 +0100 Subject: [PATCH 252/279] GO-4459: Drop object_type in favor of type for objects --- core/api/docs/docs.go | 6 +---- core/api/docs/swagger.json | 6 +---- core/api/docs/swagger.yaml | 5 +--- core/api/internal/object/model.go | 21 ++++++++--------- core/api/internal/object/service.go | 21 ++++++++--------- core/api/internal/object/service_test.go | 29 ++++++++++++------------ 6 files changed, 38 insertions(+), 50 deletions(-) diff --git a/core/api/docs/docs.go b/core/api/docs/docs.go index d68a733bf..3811ad663 100644 --- a/core/api/docs/docs.go +++ b/core/api/docs/docs.go @@ -1113,10 +1113,6 @@ const docTemplate = `{ "type": "string", "example": "Object Name" }, - "object_type": { - "type": "string", - "example": "Page" - }, "root_id": { "type": "string" }, @@ -1130,7 +1126,7 @@ const docTemplate = `{ }, "type": { "type": "string", - "example": "object" + "example": "Page" } } }, diff --git a/core/api/docs/swagger.json b/core/api/docs/swagger.json index 68411e15b..ccc5d7989 100644 --- a/core/api/docs/swagger.json +++ b/core/api/docs/swagger.json @@ -1107,10 +1107,6 @@ "type": "string", "example": "Object Name" }, - "object_type": { - "type": "string", - "example": "Page" - }, "root_id": { "type": "string" }, @@ -1124,7 +1120,7 @@ }, "type": { "type": "string", - "example": "object" + "example": "Page" } } }, diff --git a/core/api/docs/swagger.yaml b/core/api/docs/swagger.yaml index 08e017e99..a2a326120 100644 --- a/core/api/docs/swagger.yaml +++ b/core/api/docs/swagger.yaml @@ -109,9 +109,6 @@ definitions: name: example: Object Name type: string - object_type: - example: Page - type: string root_id: type: string snippet: @@ -121,7 +118,7 @@ definitions: example: bafyreigyfkt6rbv24sbv5aq2hko3bhmv5xxlf22b4bypdu6j7hnphm3psq.23me69r569oi1 type: string type: - example: object + example: Page type: string type: object object.ObjectResponse: diff --git a/core/api/internal/object/model.go b/core/api/internal/object/model.go index 67a2d68d6..5f7defb3a 100644 --- a/core/api/internal/object/model.go +++ b/core/api/internal/object/model.go @@ -15,17 +15,16 @@ type ObjectResponse struct { } type Object struct { - Type string `json:"type" example:"object"` - Id string `json:"id" example:"bafyreie6n5l5nkbjal37su54cha4coy7qzuhrnajluzv5qd5jvtsrxkequ"` - Name string `json:"name" example:"Object Name"` - Icon string `json:"icon" example:"📄"` - Snippet string `json:"snippet" example:"The beginning of the object body..."` - Layout string `json:"layout" example:"basic"` - ObjectType string `json:"object_type" example:"Page"` - SpaceId string `json:"space_id" example:"bafyreigyfkt6rbv24sbv5aq2hko3bhmv5xxlf22b4bypdu6j7hnphm3psq.23me69r569oi1"` - RootId string `json:"root_id"` - Blocks []Block `json:"blocks"` - Details []Detail `json:"details"` + Type string `json:"type" example:"Page"` + Id string `json:"id" example:"bafyreie6n5l5nkbjal37su54cha4coy7qzuhrnajluzv5qd5jvtsrxkequ"` + Name string `json:"name" example:"Object Name"` + Icon string `json:"icon" example:"📄"` + Snippet string `json:"snippet" example:"The beginning of the object body..."` + Layout string `json:"layout" example:"basic"` + SpaceId string `json:"space_id" example:"bafyreigyfkt6rbv24sbv5aq2hko3bhmv5xxlf22b4bypdu6j7hnphm3psq.23me69r569oi1"` + RootId string `json:"root_id"` + Blocks []Block `json:"blocks"` + Details []Detail `json:"details"` } type Block struct { diff --git a/core/api/internal/object/service.go b/core/api/internal/object/service.go index 70935c154..59f14ee2d 100644 --- a/core/api/internal/object/service.go +++ b/core/api/internal/object/service.go @@ -132,17 +132,16 @@ func (s *ObjectService) GetObject(ctx context.Context, spaceId string, objectId } object := Object{ - Type: "object", - Id: resp.ObjectView.Details[0].Details.Fields[bundle.RelationKeyId.String()].GetStringValue(), - Name: resp.ObjectView.Details[0].Details.Fields[bundle.RelationKeyName.String()].GetStringValue(), - Icon: icon, - Snippet: resp.ObjectView.Details[0].Details.Fields[bundle.RelationKeySnippet.String()].GetStringValue(), - Layout: model.ObjectTypeLayout_name[int32(resp.ObjectView.Details[0].Details.Fields[bundle.RelationKeyLayout.String()].GetNumberValue())], - ObjectType: objectTypeName, - SpaceId: resp.ObjectView.Details[0].Details.Fields[bundle.RelationKeySpaceId.String()].GetStringValue(), - RootId: resp.ObjectView.RootId, - Blocks: s.GetBlocks(resp), - Details: s.GetDetails(resp), + Type: objectTypeName, + Id: resp.ObjectView.Details[0].Details.Fields[bundle.RelationKeyId.String()].GetStringValue(), + Name: resp.ObjectView.Details[0].Details.Fields[bundle.RelationKeyName.String()].GetStringValue(), + Icon: icon, + Snippet: resp.ObjectView.Details[0].Details.Fields[bundle.RelationKeySnippet.String()].GetStringValue(), + Layout: model.ObjectTypeLayout_name[int32(resp.ObjectView.Details[0].Details.Fields[bundle.RelationKeyLayout.String()].GetNumberValue())], + SpaceId: resp.ObjectView.Details[0].Details.Fields[bundle.RelationKeySpaceId.String()].GetStringValue(), + RootId: resp.ObjectView.RootId, + Blocks: s.GetBlocks(resp), + Details: s.GetDetails(resp), } return object, nil diff --git a/core/api/internal/object/service_test.go b/core/api/internal/object/service_test.go index f79791803..d7c485775 100644 --- a/core/api/internal/object/service_test.go +++ b/core/api/internal/object/service_test.go @@ -23,6 +23,7 @@ const ( gatewayUrl = "http://localhost:31006" mockedSpaceId = "mocked-space-id" mockedObjectId = "mocked-object-id" + mockedObjectType = "mocked-object-type" mockedNewObjectId = "mocked-new-object-id" mockedObjectName = "mocked-object-name" mockedObjectSnippet = "mocked-object-snippet" @@ -90,7 +91,7 @@ func TestObjectService_ListObjects(t *testing.T) { bundle.RelationKeyId.String(): pbtypes.String(mockedObjectId), bundle.RelationKeyName.String(): pbtypes.String(mockedObjectName), bundle.RelationKeySnippet.String(): pbtypes.String(mockedObjectSnippet), - bundle.RelationKeyIconEmoji.String(): pbtypes.String("📄"), + bundle.RelationKeyIconEmoji.String(): pbtypes.String(mockedObjectIcon), bundle.RelationKeyType.String(): pbtypes.String(mockedObjectTypeUniqueKey), bundle.RelationKeyLayout.String(): pbtypes.Float64(float64(model.ObjectType_basic)), }, @@ -113,7 +114,7 @@ func TestObjectService_ListObjects(t *testing.T) { bundle.RelationKeyId.String(): pbtypes.String(mockedObjectId), bundle.RelationKeyName.String(): pbtypes.String(mockedObjectName), bundle.RelationKeySnippet.String(): pbtypes.String(mockedObjectSnippet), - bundle.RelationKeyIconEmoji.String(): pbtypes.String("📄"), + bundle.RelationKeyIconEmoji.String(): pbtypes.String(mockedObjectIcon), bundle.RelationKeyType.String(): pbtypes.String(mockedObjectTypeUniqueKey), bundle.RelationKeyCreatedDate.String(): pbtypes.Float64(888888), bundle.RelationKeyLastModifiedDate.String(): pbtypes.Float64(999999), @@ -142,7 +143,7 @@ func TestObjectService_ListObjects(t *testing.T) { Records: []*types.Struct{ { Fields: map[string]*types.Value{ - bundle.RelationKeyName.String(): pbtypes.String("Page"), + bundle.RelationKeyName.String(): pbtypes.String(mockedObjectType), }, }, }, @@ -182,11 +183,11 @@ func TestObjectService_ListObjects(t *testing.T) { // then require.NoError(t, err) require.Len(t, objects, 1) + require.Equal(t, mockedObjectType, objects[0].Type) require.Equal(t, mockedObjectId, objects[0].Id) require.Equal(t, mockedObjectName, objects[0].Name) require.Equal(t, mockedObjectSnippet, objects[0].Snippet) - require.Equal(t, "📄", objects[0].Icon) - require.Equal(t, "Page", objects[0].ObjectType) + require.Equal(t, mockedObjectIcon, objects[0].Icon) require.Equal(t, 6, len(objects[0].Details)) for _, detail := range objects[0].Details { @@ -283,7 +284,7 @@ func TestObjectService_GetObject(t *testing.T) { Records: []*types.Struct{ { Fields: map[string]*types.Value{ - bundle.RelationKeyName.String(): pbtypes.String("Page"), + bundle.RelationKeyName.String(): pbtypes.String(mockedObjectType), }, }, }, @@ -321,11 +322,11 @@ func TestObjectService_GetObject(t *testing.T) { // then require.NoError(t, err) + require.Equal(t, mockedObjectType, object.Type) require.Equal(t, mockedObjectId, object.Id) require.Equal(t, mockedObjectName, object.Name) require.Equal(t, mockedObjectSnippet, object.Snippet) require.Equal(t, mockedObjectName, object.Icon) - require.Equal(t, "Page", object.ObjectType) require.Equal(t, 6, len(object.Details)) for _, detail := range object.Details { @@ -376,7 +377,7 @@ func TestObjectService_CreateObject(t *testing.T) { Details: &types.Struct{ Fields: map[string]*types.Value{ bundle.RelationKeyName.String(): pbtypes.String(mockedObjectName), - bundle.RelationKeyIconEmoji.String(): pbtypes.String("🆕"), + bundle.RelationKeyIconEmoji.String(): pbtypes.String(mockedObjectIcon), bundle.RelationKeyDescription.String(): pbtypes.String(""), bundle.RelationKeySource.String(): pbtypes.String(""), bundle.RelationKeyOrigin.String(): pbtypes.Int64(int64(model.ObjectOrigin_api)), @@ -392,7 +393,7 @@ func TestObjectService_CreateObject(t *testing.T) { Fields: map[string]*types.Value{ bundle.RelationKeyId.String(): pbtypes.String(mockedNewObjectId), bundle.RelationKeyName.String(): pbtypes.String(mockedObjectName), - bundle.RelationKeyIconEmoji.String(): pbtypes.String("🆕"), + bundle.RelationKeyIconEmoji.String(): pbtypes.String(mockedObjectIcon), bundle.RelationKeySpaceId.String(): pbtypes.String(mockedSpaceId), }, }, @@ -414,7 +415,7 @@ func TestObjectService_CreateObject(t *testing.T) { bundle.RelationKeyName.String(): pbtypes.String(mockedObjectName), bundle.RelationKeyLayout.String(): pbtypes.Float64(float64(model.ObjectType_basic)), bundle.RelationKeyType.String(): pbtypes.String(mockedObjectTypeUniqueKey), - bundle.RelationKeyIconEmoji.String(): pbtypes.String("🆕"), + bundle.RelationKeyIconEmoji.String(): pbtypes.String(mockedObjectIcon), bundle.RelationKeySpaceId.String(): pbtypes.String(mockedSpaceId), }, }, @@ -440,7 +441,7 @@ func TestObjectService_CreateObject(t *testing.T) { Records: []*types.Struct{ { Fields: map[string]*types.Value{ - bundle.RelationKeyName.String(): pbtypes.String("Page"), + bundle.RelationKeyName.String(): pbtypes.String(mockedObjectType), }, }, }, @@ -476,7 +477,7 @@ func TestObjectService_CreateObject(t *testing.T) { // when object, err := fx.CreateObject(ctx, mockedSpaceId, CreateObjectRequest{ Name: mockedObjectName, - Icon: "🆕", + Icon: mockedObjectIcon, // TODO: use actual values TemplateId: "", ObjectTypeUniqueKey: mockedObjectTypeUniqueKey, @@ -484,10 +485,10 @@ func TestObjectService_CreateObject(t *testing.T) { // then require.NoError(t, err) + require.Equal(t, mockedObjectType, object.Type) require.Equal(t, mockedNewObjectId, object.Id) require.Equal(t, mockedObjectName, object.Name) - require.Equal(t, "Page", object.ObjectType) - require.Equal(t, "🆕", object.Icon) + require.Equal(t, mockedObjectIcon, object.Icon) require.Equal(t, mockedSpaceId, object.SpaceId) }) From af65379507d4f04268342a4c7c519618aed53d92 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Mon, 27 Jan 2025 20:01:29 +0100 Subject: [PATCH 253/279] GO-4459: Add swag examples --- core/api/docs/docs.go | 65 ++++++++++++++++++++++--------- core/api/docs/swagger.json | 65 ++++++++++++++++++++++--------- core/api/docs/swagger.yaml | 26 ++++++++++++- core/api/internal/object/model.go | 38 +++++++++--------- 4 files changed, 135 insertions(+), 59 deletions(-) diff --git a/core/api/docs/docs.go b/core/api/docs/docs.go index 3811ad663..e699c5686 100644 --- a/core/api/docs/docs.go +++ b/core/api/docs/docs.go @@ -986,29 +986,38 @@ const docTemplate = `{ "properties": { "align": { "type": "string", - "example": "AlignLeft" + "enum": [ + "AlignLeft|AlignCenter|AlignRight|AlignJustify" + ] }, "background_color": { - "type": "string" + "type": "string", + "example": "red" }, "children_ids": { "type": "array", "items": { "type": "string" - } + }, + "example": [ + "[\"6797ce8ecda913cde14b02dc\"]" + ] }, "file": { "$ref": "#/definitions/object.File" }, "id": { - "type": "string" + "type": "string", + "example": "64394517de52ad5acb89c66c" }, "text": { "$ref": "#/definitions/object.Text" }, "vertical_align": { "type": "string", - "example": "VerticalAlignTop" + "enum": [ + "VerticalAlignTop|VerticalAlignMiddle|VerticalAlignBottom" + ] } } }, @@ -1016,25 +1025,32 @@ const docTemplate = `{ "type": "object", "properties": { "body": { - "type": "string" + "type": "string", + "example": "Object Body" }, "description": { - "type": "string" + "type": "string", + "example": "Object Description" }, "icon": { - "type": "string" + "type": "string", + "example": "📄" }, "name": { - "type": "string" + "type": "string", + "example": "Object Name" }, "object_type_unique_key": { - "type": "string" + "type": "string", + "example": "ot-page" }, "source": { - "type": "string" + "type": "string", + "example": "https://source.com" }, "template_id": { - "type": "string" + "type": "string", + "example": "bafyreictrp3obmnf6dwejy5o4p7bderaaia4bdg2psxbfzf44yya5uutge" } } }, @@ -1046,7 +1062,10 @@ const docTemplate = `{ "additionalProperties": true }, "id": { - "type": "string" + "type": "string", + "enum": [ + "last_modified_date|last_modified_by|created_date|created_by|last_opened_date|tags" + ] } } }, @@ -1114,7 +1133,8 @@ const docTemplate = `{ "example": "Object Name" }, "root_id": { - "type": "string" + "type": "string", + "example": "bafyreicypzj6uvu54664ucv3hmbsd5cmdy2dv4fwua26sciq74khzpyn4u" }, "snippet": { "type": "string", @@ -1171,19 +1191,26 @@ const docTemplate = `{ "type": "object", "properties": { "checked": { - "type": "boolean" + "type": "boolean", + "example": true }, "color": { - "type": "string" + "type": "string", + "example": "red" }, "icon": { - "type": "string" + "type": "string", + "example": "📄" }, "style": { - "type": "string" + "type": "string", + "enum": [ + "Paragraph|Header1|Header2|Header3|Header4|Quote|Code|Title|Checkbox|Marked|Numbered|Toggle|Description|Callout" + ] }, "text": { - "type": "string" + "type": "string", + "example": "Some text" } } }, diff --git a/core/api/docs/swagger.json b/core/api/docs/swagger.json index ccc5d7989..cb8af525d 100644 --- a/core/api/docs/swagger.json +++ b/core/api/docs/swagger.json @@ -980,29 +980,38 @@ "properties": { "align": { "type": "string", - "example": "AlignLeft" + "enum": [ + "AlignLeft|AlignCenter|AlignRight|AlignJustify" + ] }, "background_color": { - "type": "string" + "type": "string", + "example": "red" }, "children_ids": { "type": "array", "items": { "type": "string" - } + }, + "example": [ + "[\"6797ce8ecda913cde14b02dc\"]" + ] }, "file": { "$ref": "#/definitions/object.File" }, "id": { - "type": "string" + "type": "string", + "example": "64394517de52ad5acb89c66c" }, "text": { "$ref": "#/definitions/object.Text" }, "vertical_align": { "type": "string", - "example": "VerticalAlignTop" + "enum": [ + "VerticalAlignTop|VerticalAlignMiddle|VerticalAlignBottom" + ] } } }, @@ -1010,25 +1019,32 @@ "type": "object", "properties": { "body": { - "type": "string" + "type": "string", + "example": "Object Body" }, "description": { - "type": "string" + "type": "string", + "example": "Object Description" }, "icon": { - "type": "string" + "type": "string", + "example": "📄" }, "name": { - "type": "string" + "type": "string", + "example": "Object Name" }, "object_type_unique_key": { - "type": "string" + "type": "string", + "example": "ot-page" }, "source": { - "type": "string" + "type": "string", + "example": "https://source.com" }, "template_id": { - "type": "string" + "type": "string", + "example": "bafyreictrp3obmnf6dwejy5o4p7bderaaia4bdg2psxbfzf44yya5uutge" } } }, @@ -1040,7 +1056,10 @@ "additionalProperties": true }, "id": { - "type": "string" + "type": "string", + "enum": [ + "last_modified_date|last_modified_by|created_date|created_by|last_opened_date|tags" + ] } } }, @@ -1108,7 +1127,8 @@ "example": "Object Name" }, "root_id": { - "type": "string" + "type": "string", + "example": "bafyreicypzj6uvu54664ucv3hmbsd5cmdy2dv4fwua26sciq74khzpyn4u" }, "snippet": { "type": "string", @@ -1165,19 +1185,26 @@ "type": "object", "properties": { "checked": { - "type": "boolean" + "type": "boolean", + "example": true }, "color": { - "type": "string" + "type": "string", + "example": "red" }, "icon": { - "type": "string" + "type": "string", + "example": "📄" }, "style": { - "type": "string" + "type": "string", + "enum": [ + "Paragraph|Header1|Header2|Header3|Header4|Quote|Code|Title|Checkbox|Marked|Numbered|Toggle|Description|Callout" + ] }, "text": { - "type": "string" + "type": "string", + "example": "Some text" } } }, diff --git a/core/api/docs/swagger.yaml b/core/api/docs/swagger.yaml index a2a326120..87622549b 100644 --- a/core/api/docs/swagger.yaml +++ b/core/api/docs/swagger.yaml @@ -23,39 +23,52 @@ definitions: object.Block: properties: align: - example: AlignLeft + enum: + - AlignLeft|AlignCenter|AlignRight|AlignJustify type: string background_color: + example: red type: string children_ids: + example: + - '["6797ce8ecda913cde14b02dc"]' items: type: string type: array file: $ref: '#/definitions/object.File' id: + example: 64394517de52ad5acb89c66c type: string text: $ref: '#/definitions/object.Text' vertical_align: - example: VerticalAlignTop + enum: + - VerticalAlignTop|VerticalAlignMiddle|VerticalAlignBottom type: string type: object object.CreateObjectRequest: properties: body: + example: Object Body type: string description: + example: Object Description type: string icon: + example: "\U0001F4C4" type: string name: + example: Object Name type: string object_type_unique_key: + example: ot-page type: string source: + example: https://source.com type: string template_id: + example: bafyreictrp3obmnf6dwejy5o4p7bderaaia4bdg2psxbfzf44yya5uutge type: string type: object object.Detail: @@ -64,6 +77,8 @@ definitions: additionalProperties: true type: object id: + enum: + - last_modified_date|last_modified_by|created_date|created_by|last_opened_date|tags type: string type: object object.File: @@ -110,6 +125,7 @@ definitions: example: Object Name type: string root_id: + example: bafyreicypzj6uvu54664ucv3hmbsd5cmdy2dv4fwua26sciq74khzpyn4u type: string snippet: example: The beginning of the object body... @@ -149,14 +165,20 @@ definitions: object.Text: properties: checked: + example: true type: boolean color: + example: red type: string icon: + example: "\U0001F4C4" type: string style: + enum: + - Paragraph|Header1|Header2|Header3|Header4|Quote|Code|Title|Checkbox|Marked|Numbered|Toggle|Description|Callout type: string text: + example: Some text type: string type: object object.Type: diff --git a/core/api/internal/object/model.go b/core/api/internal/object/model.go index 5f7defb3a..9bec897c9 100644 --- a/core/api/internal/object/model.go +++ b/core/api/internal/object/model.go @@ -1,13 +1,13 @@ package object type CreateObjectRequest struct { - Name string `json:"name"` - Icon string `json:"icon"` - Description string `json:"description"` - Body string `json:"body"` - Source string `json:"source"` - TemplateId string `json:"template_id"` - ObjectTypeUniqueKey string `json:"object_type_unique_key"` + Name string `json:"name" example:"Object Name"` + Icon string `json:"icon" example:"📄"` + Description string `json:"description" example:"Object Description"` + Body string `json:"body" example:"Object Body"` + Source string `json:"source" example:"https://source.com"` + TemplateId string `json:"template_id" example:"bafyreictrp3obmnf6dwejy5o4p7bderaaia4bdg2psxbfzf44yya5uutge"` + ObjectTypeUniqueKey string `json:"object_type_unique_key" example:"ot-page"` } type ObjectResponse struct { @@ -22,27 +22,27 @@ type Object struct { Snippet string `json:"snippet" example:"The beginning of the object body..."` Layout string `json:"layout" example:"basic"` SpaceId string `json:"space_id" example:"bafyreigyfkt6rbv24sbv5aq2hko3bhmv5xxlf22b4bypdu6j7hnphm3psq.23me69r569oi1"` - RootId string `json:"root_id"` + RootId string `json:"root_id" example:"bafyreicypzj6uvu54664ucv3hmbsd5cmdy2dv4fwua26sciq74khzpyn4u"` Blocks []Block `json:"blocks"` Details []Detail `json:"details"` } type Block struct { - Id string `json:"id"` - ChildrenIds []string `json:"children_ids"` - BackgroundColor string `json:"background_color"` - Align string `json:"align" example:"AlignLeft"` - VerticalAlign string `json:"vertical_align" example:"VerticalAlignTop"` + Id string `json:"id" example:"64394517de52ad5acb89c66c"` + ChildrenIds []string `json:"children_ids" example:"[\"6797ce8ecda913cde14b02dc\"]"` + BackgroundColor string `json:"background_color" example:"red"` + Align string `json:"align" enums:"AlignLeft|AlignCenter|AlignRight|AlignJustify"` + VerticalAlign string `json:"vertical_align" enums:"VerticalAlignTop|VerticalAlignMiddle|VerticalAlignBottom"` Text *Text `json:"text,omitempty"` File *File `json:"file,omitempty"` } type Text struct { - Text string `json:"text"` - Style string `json:"style"` - Checked bool `json:"checked"` - Color string `json:"color"` - Icon string `json:"icon"` + Text string `json:"text" example:"Some text"` + Style string `json:"style" enums:"Paragraph|Header1|Header2|Header3|Header4|Quote|Code|Title|Checkbox|Marked|Numbered|Toggle|Description|Callout"` + Checked bool `json:"checked" example:"true"` + Color string `json:"color" example:"red"` + Icon string `json:"icon" example:"📄"` } type File struct { @@ -58,7 +58,7 @@ type File struct { } type Detail struct { - Id string `json:"id"` + Id string `json:"id" enums:"last_modified_date|last_modified_by|created_date|created_by|last_opened_date|tags"` Details map[string]interface{} `json:"details"` } From f0855422a83069f0fafb95fe5d65bae3ca4a9228 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Mon, 27 Jan 2025 20:01:37 +0100 Subject: [PATCH 254/279] GO-4459: Fixes --- core/api/internal/search/service_test.go | 13 +++++++------ core/api/service.go | 2 +- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/core/api/internal/search/service_test.go b/core/api/internal/search/service_test.go index eda651224..8cf6b94cf 100644 --- a/core/api/internal/search/service_test.go +++ b/core/api/internal/search/service_test.go @@ -18,10 +18,11 @@ import ( ) const ( - offset = 0 - limit = 100 - techSpaceId = "tech-space-id" - gatewayUrl = "http://localhost:31006" + offset = 0 + limit = 100 + techSpaceId = "tech-space-id" + gatewayUrl = "http://localhost:31006" + mockedObjectTypeName = "mocked-object-type-name" ) type fixture struct { @@ -278,7 +279,7 @@ func TestSearchService_Search(t *testing.T) { Records: []*types.Struct{ { Fields: map[string]*types.Value{ - bundle.RelationKeyName.String(): pbtypes.String("object-type-name"), + bundle.RelationKeyName.String(): pbtypes.String(mockedObjectTypeName), }, }, }, @@ -327,7 +328,7 @@ func TestSearchService_Search(t *testing.T) { // then require.NoError(t, err) require.Len(t, objects, 1) - require.Equal(t, "object", objects[0].Type) + require.Equal(t, mockedObjectTypeName, objects[0].Type) require.Equal(t, "space-1", objects[0].SpaceId) require.Equal(t, "Global Object", objects[0].Name) require.Equal(t, "obj-global-1", objects[0].Id) diff --git a/core/api/service.go b/core/api/service.go index d758d7b7a..6027337b6 100644 --- a/core/api/service.go +++ b/core/api/service.go @@ -109,7 +109,7 @@ func (s *apiService) shutdown(ctx context.Context) (err error) { s.lock.Lock() defer s.lock.Unlock() - // we don't want graceful shutdown here and block tha app close + // we don't want graceful shutdown here and block the app close shutdownCtx, cancel := context.WithTimeout(ctx, time.Millisecond) defer cancel() if err := s.httpSrv.Shutdown(shutdownCtx); err != nil { From 8be4356e2837adfe8d04cc440aec5cb5cd0a9e26 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Mon, 27 Jan 2025 20:10:15 +0100 Subject: [PATCH 255/279] GO-4459: Update swagger examples --- core/api/docs/docs.go | 14 +++++++++----- core/api/docs/swagger.json | 14 +++++++++----- core/api/docs/swagger.yaml | 6 +++++- core/api/internal/object/model.go | 10 +++++----- 4 files changed, 28 insertions(+), 16 deletions(-) diff --git a/core/api/docs/docs.go b/core/api/docs/docs.go index e699c5686..2264a46c9 100644 --- a/core/api/docs/docs.go +++ b/core/api/docs/docs.go @@ -988,7 +988,8 @@ const docTemplate = `{ "type": "string", "enum": [ "AlignLeft|AlignCenter|AlignRight|AlignJustify" - ] + ], + "example": "AlignLeft" }, "background_color": { "type": "string", @@ -1000,7 +1001,7 @@ const docTemplate = `{ "type": "string" }, "example": [ - "[\"6797ce8ecda913cde14b02dc\"]" + "['6797ce8ecda913cde14b02dc']" ] }, "file": { @@ -1017,7 +1018,8 @@ const docTemplate = `{ "type": "string", "enum": [ "VerticalAlignTop|VerticalAlignMiddle|VerticalAlignBottom" - ] + ], + "example": "VerticalAlignTop" } } }, @@ -1065,7 +1067,8 @@ const docTemplate = `{ "type": "string", "enum": [ "last_modified_date|last_modified_by|created_date|created_by|last_opened_date|tags" - ] + ], + "example": "last_modified_date" } } }, @@ -1206,7 +1209,8 @@ const docTemplate = `{ "type": "string", "enum": [ "Paragraph|Header1|Header2|Header3|Header4|Quote|Code|Title|Checkbox|Marked|Numbered|Toggle|Description|Callout" - ] + ], + "example": "Paragraph" }, "text": { "type": "string", diff --git a/core/api/docs/swagger.json b/core/api/docs/swagger.json index cb8af525d..1d99fd5f6 100644 --- a/core/api/docs/swagger.json +++ b/core/api/docs/swagger.json @@ -982,7 +982,8 @@ "type": "string", "enum": [ "AlignLeft|AlignCenter|AlignRight|AlignJustify" - ] + ], + "example": "AlignLeft" }, "background_color": { "type": "string", @@ -994,7 +995,7 @@ "type": "string" }, "example": [ - "[\"6797ce8ecda913cde14b02dc\"]" + "['6797ce8ecda913cde14b02dc']" ] }, "file": { @@ -1011,7 +1012,8 @@ "type": "string", "enum": [ "VerticalAlignTop|VerticalAlignMiddle|VerticalAlignBottom" - ] + ], + "example": "VerticalAlignTop" } } }, @@ -1059,7 +1061,8 @@ "type": "string", "enum": [ "last_modified_date|last_modified_by|created_date|created_by|last_opened_date|tags" - ] + ], + "example": "last_modified_date" } } }, @@ -1200,7 +1203,8 @@ "type": "string", "enum": [ "Paragraph|Header1|Header2|Header3|Header4|Quote|Code|Title|Checkbox|Marked|Numbered|Toggle|Description|Callout" - ] + ], + "example": "Paragraph" }, "text": { "type": "string", diff --git a/core/api/docs/swagger.yaml b/core/api/docs/swagger.yaml index 87622549b..b91cdd6f7 100644 --- a/core/api/docs/swagger.yaml +++ b/core/api/docs/swagger.yaml @@ -25,13 +25,14 @@ definitions: align: enum: - AlignLeft|AlignCenter|AlignRight|AlignJustify + example: AlignLeft type: string background_color: example: red type: string children_ids: example: - - '["6797ce8ecda913cde14b02dc"]' + - '[''6797ce8ecda913cde14b02dc'']' items: type: string type: array @@ -45,6 +46,7 @@ definitions: vertical_align: enum: - VerticalAlignTop|VerticalAlignMiddle|VerticalAlignBottom + example: VerticalAlignTop type: string type: object object.CreateObjectRequest: @@ -79,6 +81,7 @@ definitions: id: enum: - last_modified_date|last_modified_by|created_date|created_by|last_opened_date|tags + example: last_modified_date type: string type: object object.File: @@ -176,6 +179,7 @@ definitions: style: enum: - Paragraph|Header1|Header2|Header3|Header4|Quote|Code|Title|Checkbox|Marked|Numbered|Toggle|Description|Callout + example: Paragraph type: string text: example: Some text diff --git a/core/api/internal/object/model.go b/core/api/internal/object/model.go index 9bec897c9..21a680370 100644 --- a/core/api/internal/object/model.go +++ b/core/api/internal/object/model.go @@ -29,17 +29,17 @@ type Object struct { type Block struct { Id string `json:"id" example:"64394517de52ad5acb89c66c"` - ChildrenIds []string `json:"children_ids" example:"[\"6797ce8ecda913cde14b02dc\"]"` + ChildrenIds []string `json:"children_ids" example:"['6797ce8ecda913cde14b02dc']"` BackgroundColor string `json:"background_color" example:"red"` - Align string `json:"align" enums:"AlignLeft|AlignCenter|AlignRight|AlignJustify"` - VerticalAlign string `json:"vertical_align" enums:"VerticalAlignTop|VerticalAlignMiddle|VerticalAlignBottom"` + Align string `json:"align" enums:"AlignLeft|AlignCenter|AlignRight|AlignJustify" example:"AlignLeft"` + VerticalAlign string `json:"vertical_align" enums:"VerticalAlignTop|VerticalAlignMiddle|VerticalAlignBottom" example:"VerticalAlignTop"` Text *Text `json:"text,omitempty"` File *File `json:"file,omitempty"` } type Text struct { Text string `json:"text" example:"Some text"` - Style string `json:"style" enums:"Paragraph|Header1|Header2|Header3|Header4|Quote|Code|Title|Checkbox|Marked|Numbered|Toggle|Description|Callout"` + Style string `json:"style" enums:"Paragraph|Header1|Header2|Header3|Header4|Quote|Code|Title|Checkbox|Marked|Numbered|Toggle|Description|Callout" example:"Paragraph"` Checked bool `json:"checked" example:"true"` Color string `json:"color" example:"red"` Icon string `json:"icon" example:"📄"` @@ -58,7 +58,7 @@ type File struct { } type Detail struct { - Id string `json:"id" enums:"last_modified_date|last_modified_by|created_date|created_by|last_opened_date|tags"` + Id string `json:"id" enums:"last_modified_date|last_modified_by|created_date|created_by|last_opened_date|tags" example:"last_modified_date"` Details map[string]interface{} `json:"details"` } From b708a12ca2eb81c08e3edb3bf907c10f372cef1a Mon Sep 17 00:00:00 2001 From: Grigory Efimov Date: Mon, 27 Jan 2025 16:38:27 -0300 Subject: [PATCH 256/279] added nightly build ci (#2054) --- .github/workflows/cla.yml | 2 +- .github/workflows/nightly.yml | 241 ++++++++++++++++++++++++++++++++++ Makefile | 51 ++++--- 3 files changed, 267 insertions(+), 27 deletions(-) create mode 100644 .github/workflows/nightly.yml diff --git a/.github/workflows/cla.yml b/.github/workflows/cla.yml index 96e9acc64..c0d8bbf5a 100644 --- a/.github/workflows/cla.yml +++ b/.github/workflows/cla.yml @@ -10,7 +10,7 @@ permissions: contents: write pull-requests: write statuses: write - + jobs: cla-check: uses: anyproto/open/.github/workflows/cla.yml@main diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml new file mode 100644 index 000000000..61ceb4908 --- /dev/null +++ b/.github/workflows/nightly.yml @@ -0,0 +1,241 @@ +name: Nightly Builds + +on: + push: + branches: + - 'nightly*' + workflow_dispatch: + inputs: + channel: + description: electron.builder channel + required: true + default: alpha + type: choice + options: + - alpha + - beta +# schedule: +# - cron: '0 0 * * *' # every day at midnight +# filters: +# branches: +# include: +# - 'nightly-ci-test' + +permissions: + actions: 'write' + packages: 'write' + contents: 'write' + +jobs: + build: + runs-on: 'macos-14' + steps: + - name: Install Go + uses: actions/setup-go@v4 + with: + go-version: 1.23.2 + check-latest: true + + - name: Setup GO + run: | + go version + echo GOPATH=$(go env GOPATH) >> $GITHUB_ENV + echo GOBIN=$(go env GOPATH)/bin >> $GITHUB_ENV + echo $(go env GOPATH)/bin >> $GITHUB_PATH + + - name: Install brew and node deps + run: | + curl https://raw.githubusercontent.com/Homebrew/homebrew-core/31b24d65a7210ea0a5689d5ad00dd8d1bf5211db/Formula/protobuf.rb --output protobuf.rb + curl https://raw.githubusercontent.com/Homebrew/homebrew-core/d600b1f7119f6e6a4e97fb83233b313b0468b7e4/Formula/s/swift-protobuf.rb --output swift-protobuf.rb + HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 HOMEBREW_NO_AUTO_UPDATE=1 HOMEBREW_NO_INSTALL_CLEANUP=1 brew install ./protobuf.rb + HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 HOMEBREW_NO_AUTO_UPDATE=1 HOMEBREW_NO_INSTALL_CLEANUP=1 brew install --ignore-dependencies ./swift-protobuf.rb + HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 HOMEBREW_NO_AUTO_UPDATE=1 HOMEBREW_NO_INSTALL_CLEANUP=1 brew install mingw-w64 + HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 HOMEBREW_NO_AUTO_UPDATE=1 HOMEBREW_NO_INSTALL_CLEANUP=1 brew install grpcurl + HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 HOMEBREW_NO_AUTO_UPDATE=1 HOMEBREW_NO_INSTALL_CLEANUP=1 brew tap messense/macos-cross-toolchains && brew install x86_64-unknown-linux-musl && brew install aarch64-unknown-linux-musl + npm i -g node-gyp + + - name: Checkout + uses: actions/checkout@v3 + + - name: Nightly mode env settings + shell: bash + run: | + # choice channel name {{ + if [[ -z "${{ github.event.inputs.channel }}" ]]; then + # choice default value for channel from ref name + if echo "${{ github.ref_name }}" | grep -q "beta"; then + CHANNEL="beta" + else + CHANNEL="alpha" + fi + else + CHANNEL="${{github.event.inputs.channel}}" + fi + echo "CHANNEL=$CHANNEL" >> $GITHUB_ENV + # }} + # choice s3 bucket for publishing {{ + if [[ "$CHANNEL" == "beta" ]]; then + S3_BUCKET="${{secrets.NIGHTLY_AWS_S3_BUCKET_BETA}}" + else + S3_BUCKET="${{secrets.NIGHTLY_AWS_S3_BUCKET}}" + fi + echo "S3_BUCKET=$S3_BUCKET" >> $GITHUB_ENV + # }} + + - name: Set env vars + env: + UNSPLASH_KEY: ${{ secrets.UNSPLASH_KEY }} + INHOUSE_KEY: ${{ secrets.INHOUSE_KEY }} + run: | + GIT_SUMMARY=$(git describe --tags --always) + echo "FLAGS=-X github.com/anyproto/anytype-heart/util/vcs.GitSummary=${GIT_SUMMARY} -X github.com/anyproto/anytype-heart/metrics.DefaultInHouseKey=${INHOUSE_KEY} -X github.com/anyproto/anytype-heart/util/unsplash.DefaultToken=${UNSPLASH_KEY}" >> $GITHUB_ENV + + VERSION="nightly" + echo "${{ secrets.STAGING_NODE_CONF }}" > ./core/anytype/config/nodes/custom.yml + echo BUILD_TAG_NETWORK=envnetworkcustom >> $GITHUB_ENV + + echo VERSION=${VERSION} >> $GITHUB_ENV + echo GOPRIVATE=github.com/anyproto >> $GITHUB_ENV + echo $(pwd)/deps >> $GITHUB_PATH + git config --global url."https://${{ secrets.ANYTYPE_PAT }}@github.com/".insteadOf "https://github.com/" + + - name: Go mod download + run: go mod download + + - name: install protoc + run: make setup-protoc + + - name: setup go + run: | + make setup-go + make setup-gomobile + which gomobile + + - name: Cross-compile library mac/win/linux + run: | + echo $FLAGS + mkdir -p .release + echo $SDKROOT + GOOS="darwin" CGO_CFLAGS="-mmacosx-version-min=11" MACOSX_DEPLOYMENT_TARGET=11.0 GOARCH="amd64" CGO_ENABLED="1" go build -tags="$BUILD_TAG_NETWORK nographviz nowatchdog nosigar nomutexdeadlockdetector" -ldflags="$FLAGS" -o darwin-amd64 github.com/anyproto/anytype-heart/cmd/grpcserver + export SDKROOT=$(xcrun --sdk macosx --show-sdk-path) + echo $SDKROOT + GOOS="darwin" CGO_CFLAGS="-mmacosx-version-min=11" MACOSX_DEPLOYMENT_TARGET=11.0 GOARCH="arm64" CGO_ENABLED="1" go build -tags="$BUILD_TAG_NETWORK nographviz nowatchdog nosigar nomutexdeadlockdetector" -ldflags="$FLAGS" -o darwin-arm64 github.com/anyproto/anytype-heart/cmd/grpcserver + GOOS="windows" GOARCH="amd64" CGO_ENABLED="1" CC="x86_64-w64-mingw32-gcc" CXX="x86_64-w64-mingw32-g++" go build -tags="$BUILD_TAG_NETWORK nographviz nowatchdog nosigar nomutexdeadlockdetector noheic" -ldflags="$FLAGS -linkmode external -extldflags=-static" -o windows-amd64 github.com/anyproto/anytype-heart/cmd/grpcserver + GOOS="linux" GOARCH="amd64" CGO_ENABLED="1" CC="x86_64-linux-musl-gcc" go build -tags="$BUILD_TAG_NETWORK nographviz nowatchdog nosigar nomutexdeadlockdetector noheic" -ldflags="$FLAGS -linkmode external -extldflags '-static -Wl,-z stack-size=1000000'" -o linux-amd64 github.com/anyproto/anytype-heart/cmd/grpcserver + GOOS="linux" GOARCH="arm64" CGO_ENABLED="1" CC="aarch64-linux-musl-gcc" go build -tags="$BUILD_TAG_NETWORK nographviz nowatchdog nosigar nomutexdeadlockdetector noheic" -ldflags="$FLAGS -linkmode external" -o linux-arm64 github.com/anyproto/anytype-heart/cmd/grpcserver + ls -lha . + + - name: Make JS protos + run: | + make protos-js + mv dist/js/pb protobuf + mkdir -p protobuf/protos + cp pb/protos/*.proto ./protobuf/protos + cp pb/protos/service/*.proto ./protobuf/protos + cp pkg/lib/pb/model/protos/*.proto ./protobuf/protos + + - name: Add system relations/types jsons + run: | + mkdir -p json/ + cp pkg/lib/bundle/systemRelations.json ./json + cp pkg/lib/bundle/systemTypes.json ./json + cp pkg/lib/bundle/internalRelations.json ./json + cp pkg/lib/bundle/internalTypes.json ./json + + - name: Pack server win + run: | + declare -a arr=("windows-amd64") + for i in "${arr[@]}"; do + OSARCH=${i%.*} + cp ./${i}* ./grpc-server.exe + zip -r js_${VERSION}_${OSARCH}.zip grpc-server.exe protobuf json + mv js_${VERSION}_${OSARCH}.zip .release/ + done + + - name: Pack server unix + run: | + declare -a arr=("darwin-amd64" "darwin-arm64" "linux-amd64") + for i in "${arr[@]}"; do + OSARCH=${i%.*} + cp ./${i}* ./grpc-server + tar -czf js_${VERSION}_${OSARCH}.tar.gz grpc-server protobuf json + mv js_${VERSION}_${OSARCH}.tar.gz .release/ + done + + - name: Make swift protos + run: | + mkdir -p .release + make protos-swift + rm -rf protobuf + mv dist/ios/protobuf protobuf + mkdir -p protobuf/protos + cp pb/protos/*.proto ./protobuf/protos + cp pb/protos/service/*.proto ./protobuf/protos + cp pkg/lib/pb/model/protos/*.proto ./protobuf/protos + + - name: Add system relations/types jsons + run: | + mkdir -p json/ + cp pkg/lib/bundle/systemRelations.json ./json + cp pkg/lib/bundle/relations.json ./json + cp pkg/lib/bundle/systemTypes.json ./json + cp pkg/lib/bundle/internalRelations.json ./json + cp pkg/lib/bundle/internalTypes.json ./json + + - name: Compile ios lib + run: | + go install github.com/vektra/mockery/v2@v2.47.0 + go install go.uber.org/mock/mockgen@v0.5.0 + make test-deps + gomobile bind -tags "$BUILD_TAG_NETWORK nogrpcserver gomobile nowatchdog nosigar nomutexdeadlockdetector timetzdata rasterizesvg" -ldflags "$FLAGS" -v -target=ios -o Lib.xcframework github.com/anyproto/anytype-heart/clientlibrary/service github.com/anyproto/anytype-heart/core || true + mkdir -p dist/ios/ && mv Lib.xcframework dist/ios/ + go run cmd/iosrepack/main.go + mv dist/ios/Lib.xcframework . + gtar --exclude ".*" -czvf ios_framework.tar.gz Lib.xcframework protobuf json + #gradle publish + mv ios_framework.tar.gz .release/ios_framework_${VERSION}.tar.gz + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_USER: ${{ github.actor }} + + - name: Make java protos + run: | + make protos-java + rm -rf protobuf + mv dist/android/pb protobuf + mkdir -p protobuf/protos + cp pb/protos/*.proto ./protobuf/protos + cp pb/protos/service/*.proto ./protobuf/protos + cp pkg/lib/pb/model/protos/*.proto ./protobuf/protos + + - name: Add system relations/types jsons + run: | + mkdir -p json/ + cp pkg/lib/bundle/systemRelations.json ./json + cp pkg/lib/bundle/systemTypes.json ./json + cp pkg/lib/bundle/internalRelations.json ./json + cp pkg/lib/bundle/internalTypes.json ./json + + - name: Compile android lib + run: | + gomobile bind -tags "$BUILD_TAG_NETWORK nogrpcserver gomobile nowatchdog nosigar nomutexdeadlockdetector timetzdata rasterizesvg" -ldflags "$FLAGS" -v -target=android -androidapi 26 -o lib.aar github.com/anyproto/anytype-heart/clientlibrary/service github.com/anyproto/anytype-heart/core || true + gtar --exclude ".*" -czvf android_lib_${VERSION}.tar.gz lib.aar protobuf json + mv android_lib_${VERSION}.tar.gz .release/ + + # upload release artifacts to s3 {{ + - name: Install AWS CLI + run: | + if ! which aws; then + brew install awscli + fi + aws --version + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v2 + with: + aws-access-key-id: ${{ secrets.NIGHTLY_AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.NIGHTLY_AWS_SECRET_ACCESS_KEY }} + aws-region: ${{ secrets.NIGHTLY_AWS_REGION }} + - name: Upload build artifacts to S3 + run: | + aws s3 cp .release/ s3://${{ env.S3_BUCKET }}/mw/ --recursive --acl public-read + # }} diff --git a/Makefile b/Makefile index 7a8f3019f..cffe39487 100644 --- a/Makefile +++ b/Makefile @@ -10,13 +10,13 @@ export GOLANGCI_LINT_VERSION=1.58.1 export CGO_CFLAGS=-Wno-deprecated-non-prototype -Wno-unknown-warning-option -Wno-deprecated-declarations -Wno-xor-used-as-pow -Wno-single-bit-bitfield-constant-conversion ifndef $(GOPATH) - GOPATH=$(shell go env GOPATH) - export GOPATH +GOPATH=$(shell go env GOPATH) +export GOPATH endif ifndef $(GOROOT) - GOROOT=$(shell go env GOROOT) - export GOROOT +GOROOT=$(shell go env GOROOT) +export GOROOT endif DEPS_PATH := $(shell pwd)/deps @@ -38,14 +38,14 @@ ifdef ANYENV @exit 1; endif @if [ -z "$$ANY_SYNC_NETWORK" ]; then \ - echo "Using the default production Any Sync Network"; \ - elif [ ! -e "$$ANY_SYNC_NETWORK" ]; then \ - echo "Network configuration file not found at $$ANY_SYNC_NETWORK"; \ - exit 1; \ - else \ - echo "Using Any Sync Network configuration at $$ANY_SYNC_NETWORK"; \ - cp $$ANY_SYNC_NETWORK $(CUSTOM_NETWORK_FILE); \ - fi + echo "Using the default production Any Sync Network"; \ +elif [ ! -e "$$ANY_SYNC_NETWORK" ]; then \ + echo "Network configuration file not found at $$ANY_SYNC_NETWORK"; \ + exit 1; \ +else \ + echo "Using Any Sync Network configuration at $$ANY_SYNC_NETWORK"; \ + cp $$ANY_SYNC_NETWORK $(CUSTOM_NETWORK_FILE); \ +fi setup-go: setup-network-config check-tantivy-version @echo 'Setting up go modules...' @@ -102,7 +102,7 @@ build-js-addon: @cp dist/lib.a clientlibrary/jsaddon/lib.a @cp dist/lib.h clientlibrary/jsaddon/lib.h @cp clientlibrary/clib/bridge.h clientlibrary/jsaddon/bridge.h - # Electron's version. + # Electron's version. @export npm_config_target=12.0.4 @export npm_config_arch=x64 @export npm_config_target_arch=x64 @@ -197,7 +197,6 @@ setup-protoc-go: go build -o deps github.com/gogo/protobuf/protoc-gen-gogofast go build -o deps github.com/pseudomuto/protoc-gen-doc/cmd/protoc-gen-doc - setup-protoc-jsweb: @echo 'Installing grpc-web plugin...' @rm -rf deps/grpc-web @@ -346,17 +345,17 @@ OUTPUT_DIR := deps/libs SHA_FILE = tantivity_sha256.txt TANTIVY_LIBS := android-386.tar.gz \ - android-amd64.tar.gz \ - android-arm.tar.gz \ - android-arm64.tar.gz \ - darwin-amd64.tar.gz \ - darwin-arm64.tar.gz \ - ios-amd64.tar.gz \ - ios-arm64.tar.gz \ - ios-arm64-sim.tar.gz \ - linux-amd64-musl.tar.gz \ - linux-arm64-musl.tar.gz \ - windows-amd64.tar.gz + android-amd64.tar.gz \ + android-arm.tar.gz \ + android-arm64.tar.gz \ + darwin-amd64.tar.gz \ + darwin-arm64.tar.gz \ + ios-amd64.tar.gz \ + ios-arm64.tar.gz \ + ios-arm64-sim.tar.gz \ + linux-amd64-musl.tar.gz \ + linux-arm64-musl.tar.gz \ + windows-amd64.tar.gz define download_tantivy_lib curl -L -o $(OUTPUT_DIR)/$(1) https://github.com/$(REPO)/releases/download/$(TANTIVY_VERSION)/$(1) @@ -404,4 +403,4 @@ check-tantivy-version: $(eval OLD_VERSION := $(shell [ -f $(OUTPUT_DIR)/.verified ] && cat $(OUTPUT_DIR)/.verified || echo "")) @if [ "$(TANTIVY_VERSION)" != "$(OLD_VERSION)" ]; then \ $(MAKE) download-tantivy-all; \ - fi \ No newline at end of file + fi From 5ce3daef6e8c1a9993eae366cd5b2869a7f9c6c7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Jan 2025 20:39:11 +0100 Subject: [PATCH 257/279] Bump github.com/ipfs/boxo from 0.26.0 to 0.27.2 (#2037) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 24d874690..2232c6f0e 100644 --- a/go.mod +++ b/go.mod @@ -52,7 +52,7 @@ require ( github.com/hbagdi/go-unsplash v0.0.0-20230414214043-474fc02c9119 github.com/huandu/skiplist v1.2.1 github.com/improbable-eng/grpc-web v0.15.0 - github.com/ipfs/boxo v0.27.0 + github.com/ipfs/boxo v0.27.2 github.com/ipfs/go-block-format v0.2.0 github.com/ipfs/go-cid v0.5.0 github.com/ipfs/go-datastore v0.6.0 diff --git a/go.sum b/go.sum index e977dd88c..d7c9516ef 100644 --- a/go.sum +++ b/go.sum @@ -584,8 +584,8 @@ github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLf github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= github.com/ipfs/bbloom v0.0.4 h1:Gi+8EGJ2y5qiD5FbsbpX/TMNcJw8gSqr7eyjHa4Fhvs= github.com/ipfs/bbloom v0.0.4/go.mod h1:cS9YprKXpoZ9lT0n/Mw/a6/aFV6DTjTLYHeA+gyqMG0= -github.com/ipfs/boxo v0.27.0 h1:8zu0zQrCXSUMn/0vnXy6oUppscoxstK7hQqiGFwUcjY= -github.com/ipfs/boxo v0.27.0/go.mod h1:qEIRrGNr0bitDedTCzyzBHxzNWqYmyuHgK8LG9Q83EM= +github.com/ipfs/boxo v0.27.2 h1:sGo4KdwBaMjdBjH08lqPJyt27Z4CO6sugne3ryX513s= +github.com/ipfs/boxo v0.27.2/go.mod h1:qEIRrGNr0bitDedTCzyzBHxzNWqYmyuHgK8LG9Q83EM= github.com/ipfs/go-bitfield v1.1.0 h1:fh7FIo8bSwaJEh6DdTWbCeZ1eqOaOkKFI74SCnsWbGA= github.com/ipfs/go-bitfield v1.1.0/go.mod h1:paqf1wjq/D2BBmzfTVFlJQ9IlFOZpg422HL0HqsGWHU= github.com/ipfs/go-block-format v0.2.0 h1:ZqrkxBA2ICbDRbK8KJs/u0O3dlp6gmAuuXUJNiW1Ycs= From 54bbeb160fc61e961e480a059ea5db8da2ede000 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 Jan 2025 12:36:01 +0100 Subject: [PATCH 258/279] Bump github.com/anyproto/any-store from 0.1.5 to 0.1.6 (#2055) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 2232c6f0e..d6574d880 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ require ( github.com/PuerkitoBio/goquery v1.10.1 github.com/VividCortex/ewma v1.2.0 github.com/adrium/goheif v0.0.0-20230113233934-ca402e77a786 - github.com/anyproto/any-store v0.1.5 + github.com/anyproto/any-store v0.1.6 github.com/anyproto/any-sync v0.5.26 github.com/anyproto/anytype-publish-server/publishclient v0.0.0-20241223184559-a5cacfe0950a github.com/anyproto/go-chash v0.1.0 diff --git a/go.sum b/go.sum index d7c9516ef..ad91aade9 100644 --- a/go.sum +++ b/go.sum @@ -82,8 +82,8 @@ github.com/alexbrainman/goissue34681 v0.0.0-20191006012335-3fc7a47baff5/go.mod h github.com/andybalholm/cascadia v1.3.1/go.mod h1:R4bJ1UQfqADjvDa4P6HZHLh/3OxWWEqc0Sk8XGwHqvA= github.com/andybalholm/cascadia v1.3.3 h1:AG2YHrzJIm4BZ19iwJ/DAua6Btl3IwJX+VI4kktS1LM= github.com/andybalholm/cascadia v1.3.3/go.mod h1:xNd9bqTn98Ln4DwST8/nG+H0yuB8Hmgu1YHNnWw0GeA= -github.com/anyproto/any-store v0.1.5 h1:AHOaFr9A+RhUc80MceUI9DL8vWqEW7AVB29lTqUlLL8= -github.com/anyproto/any-store v0.1.5/go.mod h1:nbyRoJYOlvSWU1xDOrmgPP96UeoTf4eYZ9k+qqLK9k8= +github.com/anyproto/any-store v0.1.6 h1:CmxIH2JhgHH2s7dnv1SNKAQ3spvX2amG/5RbrTZkLaQ= +github.com/anyproto/any-store v0.1.6/go.mod h1:nbyRoJYOlvSWU1xDOrmgPP96UeoTf4eYZ9k+qqLK9k8= github.com/anyproto/any-sync v0.5.26 h1:JWcR/RFGQ22CYWrdh2Ain6uEWNePtYHCLs+LXsm8hhU= github.com/anyproto/any-sync v0.5.26/go.mod h1:Ljftoz6/mCM/2wP2tK9H1/jtVAxfgqzYplBA4MbiUs0= github.com/anyproto/anytype-publish-server/publishclient v0.0.0-20241223184559-a5cacfe0950a h1:kSNyLHsZ40JxlRAglr85YXH2ik2LH3AH5Hd3JL42KGo= From 1000e3493cc499300fbcaeba42b22d3008785f6f Mon Sep 17 00:00:00 2001 From: AnastasiaShemyakinskaya Date: Tue, 28 Jan 2025 15:04:38 +0100 Subject: [PATCH 259/279] GO-4961: fix for backlinks Signed-off-by: AnastasiaShemyakinskaya --- core/block/export/export.go | 4 + core/block/export/export_test.go | 267 ++ .../object/objectlink/dependent_objects.go | 7 +- .../objectlink/dependent_objects_test.go | 27 +- core/publish/service.go | 19 +- docs/proto.md | 1 + pb/commands.pb.go | 2510 +++++++++-------- pb/protos/commands.proto | 1 + 8 files changed, 1589 insertions(+), 1247 deletions(-) diff --git a/core/block/export/export.go b/core/block/export/export.go index 3d1d51acc..0a4c6f799 100644 --- a/core/block/export/export.go +++ b/core/block/export/export.go @@ -162,6 +162,7 @@ type exportContext struct { path string linkStateFilters *state.Filters isLinkProcess bool + includeBackLinks bool *export } @@ -179,6 +180,7 @@ func newExportContext(e *export, req pb.RpcObjectListExportRequest) *exportConte reqIds: req.ObjectIds, zip: req.Zip, linkStateFilters: pbFiltersToState(req.LinksStateFilters), + includeBackLinks: req.IncludeBacklinks, export: e, } return ec @@ -197,6 +199,7 @@ func (e *exportContext) copy() *exportContext { export: e.export, isLinkProcess: e.isLinkProcess, linkStateFilters: e.linkStateFilters, + includeBackLinks: e.includeBackLinks, } } @@ -855,6 +858,7 @@ func (e *exportContext) addNestedObject(id string, nestedDocs map[string]*Doc) { Details: true, Collection: true, NoHiddenBundledRelations: true, + NoBackLinks: !e.includeBackLinks, }) return nil }) diff --git a/core/block/export/export_test.go b/core/block/export/export_test.go index 001ce203b..12e386422 100644 --- a/core/block/export/export_test.go +++ b/core/block/export/export_test.go @@ -543,6 +543,273 @@ func TestExport_Export(t *testing.T) { assert.Len(t, sn.GetSnapshot().GetData().GetRelationLinks(), 1) assert.Equal(t, bundle.RelationKeyCamera.String(), sn.GetSnapshot().GetData().GetRelationLinks()[0].Key) }) + t.Run("export with backlinks", func(t *testing.T) { + // given + storeFixture := objectstore.NewStoreFixture(t) + objectTypeId := "objectTypeId" + objectTypeUniqueKey, err := domain.NewUniqueKey(smartblock.SmartBlockTypeObjectType, objectTypeId) + assert.Nil(t, err) + objectId := "objectID" + link1 := "linkId" + + storeFixture.AddObjects(t, spaceId, []spaceindex.TestObject{ + { + bundle.RelationKeyId: domain.String(link1), + bundle.RelationKeyType: domain.String(objectTypeId), + bundle.RelationKeySpaceId: domain.String(spaceId), + }, + { + bundle.RelationKeyId: domain.String(objectId), + bundle.RelationKeyType: domain.String(objectTypeId), + bundle.RelationKeySpaceId: domain.String(spaceId), + bundle.RelationKeyBacklinks: domain.StringList([]string{link1}), + }, + { + bundle.RelationKeyId: domain.String(objectTypeId), + bundle.RelationKeyUniqueKey: domain.String(objectTypeUniqueKey.Marshal()), + bundle.RelationKeyLayout: domain.Int64(int64(model.ObjectType_objectType)), + bundle.RelationKeyRecommendedRelations: domain.StringList([]string{addr.MissingObject}), + bundle.RelationKeySpaceId: domain.String(spaceId), + bundle.RelationKeyType: domain.String(objectTypeId), + }, + }) + + objectGetter := mock_cache.NewMockObjectGetterComponent(t) + + smartBlockTest := smarttest.New(objectId) + doc := smartBlockTest.NewState().SetDetails(domain.NewDetailsFromMap(map[domain.RelationKey]domain.Value{ + bundle.RelationKeyId: domain.String(objectId), + bundle.RelationKeyType: domain.String(objectTypeId), + bundle.RelationKeyBacklinks: domain.StringList([]string{link1}), + })) + doc.AddRelationLinks(&model.RelationLink{ + Key: bundle.RelationKeyId.String(), + Format: model.RelationFormat_longtext, + }, &model.RelationLink{ + Key: bundle.RelationKeyType.String(), + Format: model.RelationFormat_longtext, + }, &model.RelationLink{ + Key: bundle.RelationKeyBacklinks.String(), + Format: model.RelationFormat_object, + }) + smartBlockTest.Doc = doc + + objectType := smarttest.New(objectTypeId) + objectTypeDoc := objectType.NewState().SetDetails(domain.NewDetailsFromMap(map[domain.RelationKey]domain.Value{ + bundle.RelationKeyId: domain.String(objectTypeId), + bundle.RelationKeyType: domain.String(objectTypeId), + })) + objectTypeDoc.AddRelationLinks(&model.RelationLink{ + Key: bundle.RelationKeyId.String(), + Format: model.RelationFormat_longtext, + }, &model.RelationLink{ + Key: bundle.RelationKeyType.String(), + Format: model.RelationFormat_longtext, + }) + objectType.Doc = objectTypeDoc + objectType.SetType(smartblock.SmartBlockTypeObjectType) + + linkObject := smarttest.New(link1) + linkObjectDoc := linkObject.NewState().SetDetails(domain.NewDetailsFromMap(map[domain.RelationKey]domain.Value{ + bundle.RelationKeyId: domain.String(link1), + bundle.RelationKeyType: domain.String(objectTypeId), + bundle.RelationKeySpaceId: domain.String(spaceId), + })) + linkObjectDoc.AddRelationLinks(&model.RelationLink{ + Key: bundle.RelationKeyId.String(), + Format: model.RelationFormat_longtext, + }, &model.RelationLink{ + Key: bundle.RelationKeyType.String(), + Format: model.RelationFormat_longtext, + }, &model.RelationLink{ + Key: bundle.RelationKeySpaceId.String(), + Format: model.RelationFormat_longtext, + }) + linkObject.Doc = linkObjectDoc + + objectGetter.EXPECT().GetObject(context.Background(), objectId).Return(smartBlockTest, nil).Times(4) + objectGetter.EXPECT().GetObject(context.Background(), objectTypeId).Return(objectType, nil) + objectGetter.EXPECT().GetObject(context.Background(), link1).Return(linkObject, nil) + + a := &app.App{} + mockSender := mock_event.NewMockSender(t) + mockSender.EXPECT().Broadcast(mock.Anything).Return() + a.Register(testutil.PrepareMock(context.Background(), a, mockSender)) + service := process.New() + err = service.Init(a) + assert.Nil(t, err) + + notifications := mock_notifications.NewMockNotifications(t) + notificationSend := make(chan struct{}) + notifications.EXPECT().CreateAndSend(mock.Anything).RunAndReturn(func(notification *model.Notification) error { + close(notificationSend) + return nil + }) + + provider := mock_typeprovider.NewMockSmartBlockTypeProvider(t) + provider.EXPECT().Type(spaceId, link1).Return(smartblock.SmartBlockTypePage, nil) + + e := &export{ + objectStore: storeFixture, + picker: objectGetter, + processService: service, + notificationService: notifications, + sbtProvider: provider, + } + + // when + path, success, err := e.Export(context.Background(), pb.RpcObjectListExportRequest{ + SpaceId: spaceId, + Path: t.TempDir(), + ObjectIds: []string{objectId}, + Format: model.Export_Protobuf, + Zip: true, + IncludeNested: true, + IncludeFiles: true, + IsJson: true, + IncludeBacklinks: true, + }) + + // then + <-notificationSend + assert.Nil(t, err) + assert.Equal(t, 3, success) + + reader, err := zip.OpenReader(path) + assert.Nil(t, err) + + assert.Len(t, reader.File, 3) + fileNames := make(map[string]bool, 3) + for _, file := range reader.File { + fileNames[file.Name] = true + } + + objectPath := filepath.Join(objectsDirectory, link1+".pb.json") + assert.True(t, fileNames[objectPath]) + }) + t.Run("export without backlinks", func(t *testing.T) { + // given + storeFixture := objectstore.NewStoreFixture(t) + objectTypeId := "objectTypeId" + objectTypeUniqueKey, err := domain.NewUniqueKey(smartblock.SmartBlockTypeObjectType, objectTypeId) + assert.Nil(t, err) + objectId := "objectID" + link1 := "linkId" + + storeFixture.AddObjects(t, spaceId, []spaceindex.TestObject{ + { + bundle.RelationKeyId: domain.String(link1), + bundle.RelationKeyType: domain.String(objectTypeId), + bundle.RelationKeySpaceId: domain.String(spaceId), + }, + { + bundle.RelationKeyId: domain.String(objectId), + bundle.RelationKeyType: domain.String(objectTypeId), + bundle.RelationKeySpaceId: domain.String(spaceId), + bundle.RelationKeyBacklinks: domain.StringList([]string{link1}), + }, + { + bundle.RelationKeyId: domain.String(objectTypeId), + bundle.RelationKeyUniqueKey: domain.String(objectTypeUniqueKey.Marshal()), + bundle.RelationKeyLayout: domain.Int64(int64(model.ObjectType_objectType)), + bundle.RelationKeyRecommendedRelations: domain.StringList([]string{addr.MissingObject}), + bundle.RelationKeySpaceId: domain.String(spaceId), + bundle.RelationKeyType: domain.String(objectTypeId), + }, + }) + + objectGetter := mock_cache.NewMockObjectGetterComponent(t) + + smartBlockTest := smarttest.New(objectId) + doc := smartBlockTest.NewState().SetDetails(domain.NewDetailsFromMap(map[domain.RelationKey]domain.Value{ + bundle.RelationKeyId: domain.String(objectId), + bundle.RelationKeyType: domain.String(objectTypeId), + bundle.RelationKeyBacklinks: domain.StringList([]string{link1}), + })) + doc.AddRelationLinks(&model.RelationLink{ + Key: bundle.RelationKeyId.String(), + Format: model.RelationFormat_longtext, + }, &model.RelationLink{ + Key: bundle.RelationKeyType.String(), + Format: model.RelationFormat_longtext, + }, &model.RelationLink{ + Key: bundle.RelationKeyBacklinks.String(), + Format: model.RelationFormat_object, + }) + smartBlockTest.Doc = doc + + objectType := smarttest.New(objectTypeId) + objectTypeDoc := objectType.NewState().SetDetails(domain.NewDetailsFromMap(map[domain.RelationKey]domain.Value{ + bundle.RelationKeyId: domain.String(objectTypeId), + bundle.RelationKeyType: domain.String(objectTypeId), + })) + objectTypeDoc.AddRelationLinks(&model.RelationLink{ + Key: bundle.RelationKeyId.String(), + Format: model.RelationFormat_longtext, + }, &model.RelationLink{ + Key: bundle.RelationKeyType.String(), + Format: model.RelationFormat_longtext, + }) + objectType.Doc = objectTypeDoc + objectType.SetType(smartblock.SmartBlockTypeObjectType) + + objectGetter.EXPECT().GetObject(context.Background(), objectId).Return(smartBlockTest, nil).Times(4) + objectGetter.EXPECT().GetObject(context.Background(), objectTypeId).Return(objectType, nil) + + a := &app.App{} + mockSender := mock_event.NewMockSender(t) + mockSender.EXPECT().Broadcast(mock.Anything).Return() + a.Register(testutil.PrepareMock(context.Background(), a, mockSender)) + service := process.New() + err = service.Init(a) + assert.Nil(t, err) + + notifications := mock_notifications.NewMockNotifications(t) + notificationSend := make(chan struct{}) + notifications.EXPECT().CreateAndSend(mock.Anything).RunAndReturn(func(notification *model.Notification) error { + close(notificationSend) + return nil + }) + + provider := mock_typeprovider.NewMockSmartBlockTypeProvider(t) + + e := &export{ + objectStore: storeFixture, + picker: objectGetter, + processService: service, + notificationService: notifications, + sbtProvider: provider, + } + + // when + path, success, err := e.Export(context.Background(), pb.RpcObjectListExportRequest{ + SpaceId: spaceId, + Path: t.TempDir(), + ObjectIds: []string{objectId}, + Format: model.Export_Protobuf, + Zip: true, + IncludeNested: true, + IncludeFiles: true, + IsJson: true, + IncludeBacklinks: false, + }) + + // then + <-notificationSend + assert.Nil(t, err) + assert.Equal(t, 2, success) + + reader, err := zip.OpenReader(path) + assert.Nil(t, err) + + fileNames := make(map[string]bool, 2) + for _, file := range reader.File { + fileNames[file.Name] = true + } + + objectPath := filepath.Join(objectsDirectory, link1+".pb.json") + assert.False(t, fileNames[objectPath]) + }) } func Test_docsForExport(t *testing.T) { diff --git a/core/block/object/objectlink/dependent_objects.go b/core/block/object/objectlink/dependent_objects.go index 6f8aa92b3..aa69171c1 100644 --- a/core/block/object/objectlink/dependent_objects.go +++ b/core/block/object/objectlink/dependent_objects.go @@ -48,7 +48,8 @@ type Flags struct { NoSystemRelations, NoHiddenBundledRelations, NoImages, - RoundDateIdsToDay bool + RoundDateIdsToDay, + NoBackLinks bool } func DependentObjectIDs(s *state.State, converter KeyToIDConverter, flags Flags) (ids []string) { @@ -182,6 +183,10 @@ func collectIdsFromDetail(rel *model.RelationLink, det *domain.Details, flags Fl } } + if rel.Key == bundle.RelationKeyBacklinks.String() && flags.NoBackLinks { + return + } + // handle corner cases first for specific formats if rel.Format == model.RelationFormat_date && !lo.Contains(bundle.LocalAndDerivedRelationKeys, domain.RelationKey(rel.Key)) { diff --git a/core/block/object/objectlink/dependent_objects_test.go b/core/block/object/objectlink/dependent_objects_test.go index c2d648a3d..6b97068be 100644 --- a/core/block/object/objectlink/dependent_objects_test.go +++ b/core/block/object/objectlink/dependent_objects_test.go @@ -224,9 +224,26 @@ func TestState_DepSmartIdsLinksAndRelations(t *testing.T) { assert.Len(t, objectIDs, 15) // 11 links + 4 relations }) - t.Run("date object ids are rounded to day", func(t *testing.T) { - objectIDs := DependentObjectIDs(stateWithLinks, converter, Flags{Blocks: true, RoundDateIdsToDay: true}) - assert.Len(t, objectIDs, 10) + t.Run("save backlinks", func(t *testing.T) { + st := stateWithLinks.Copy() + st.SetDetail(bundle.RelationKeyBacklinks, domain.StringList([]string{"link1"})) + st.AddRelationLinks(&model.RelationLink{ + Key: bundle.RelationKeyBacklinks.String(), + Format: model.RelationFormat_object, + }) + objectIDs := DependentObjectIDs(st, converter, Flags{Details: true}) + assert.Len(t, objectIDs, 1) + assert.Contains(t, objectIDs, "link1") + }) + t.Run("skip backlinks", func(t *testing.T) { + st := stateWithLinks.Copy() + st.SetDetail(bundle.RelationKeyBacklinks, domain.StringList([]string{"link1"})) + st.AddRelationLinks(&model.RelationLink{ + Key: bundle.RelationKeyBacklinks.String(), + Format: model.RelationFormat_object, + }) + objectIDs := DependentObjectIDs(st, converter, Flags{Details: true, NoBackLinks: true}) + assert.Len(t, objectIDs, 0) }) } @@ -322,6 +339,10 @@ func TestState_DepSmartIdsLinksDetailsAndRelations(t *testing.T) { objectIDs := DependentObjectIDs(stateWithLinks, converter, Flags{Blocks: true, Relations: true, Details: true}) assert.Len(t, objectIDs, 14) // 4 links + 5 relations + 3 options + 1 fileID + 1 date }) + t.Run("blocks, relations and details option are turned on: get ids from blocks, relations and details", func(t *testing.T) { + objectIDs := DependentObjectIDs(stateWithLinks, converter, Flags{Blocks: true, Relations: true, Details: true}) + assert.Len(t, objectIDs, 14) // 4 links + 5 relations + 3 options + 1 fileID + 1 date + }) } func TestState_DepSmartIdsLinksCreatorModifierWorkspace(t *testing.T) { diff --git a/core/publish/service.go b/core/publish/service.go index 6c2cab145..12936eae3 100644 --- a/core/publish/service.go +++ b/core/publish/service.go @@ -122,15 +122,16 @@ func uniqName() string { func (s *service) exportToDir(ctx context.Context, spaceId, pageId string) (dirEntries []fs.DirEntry, exportPath string, err error) { tempDir := os.TempDir() exportPath, _, err = s.exportService.Export(ctx, pb.RpcObjectListExportRequest{ - SpaceId: spaceId, - Format: model.Export_Protobuf, - IncludeFiles: true, - IsJson: false, - Zip: false, - Path: tempDir, - ObjectIds: []string{pageId}, - NoProgress: true, - IncludeNested: true, + SpaceId: spaceId, + Format: model.Export_Protobuf, + IncludeFiles: true, + IsJson: false, + Zip: false, + Path: tempDir, + ObjectIds: []string{pageId}, + NoProgress: true, + IncludeNested: true, + IncludeBacklinks: true, LinksStateFilters: &pb.RpcObjectListExportStateFilters{ RelationsWhiteList: relationsWhiteListToPbModel(), RemoveBlocks: true, diff --git a/docs/proto.md b/docs/proto.md index 2f99684d5..8700cac34 100644 --- a/docs/proto.md +++ b/docs/proto.md @@ -15572,6 +15572,7 @@ Deletes the object, keys from the local store and unsubscribe from remote change | includeArchived | [bool](#bool) | | for migration | | noProgress | [bool](#bool) | | for integrations like raycast and web publishing | | linksStateFilters | [Rpc.Object.ListExport.StateFilters](#anytype-Rpc-Object-ListExport-StateFilters) | | | +| includeBacklinks | [bool](#bool) | | | diff --git a/pb/commands.pb.go b/pb/commands.pb.go index fd9ebbdaf..9ac6a93ca 100644 --- a/pb/commands.pb.go +++ b/pb/commands.pb.go @@ -29809,6 +29809,7 @@ type RpcObjectListExportRequest struct { // for integrations like raycast and web publishing NoProgress bool `protobuf:"varint,11,opt,name=noProgress,proto3" json:"noProgress,omitempty"` LinksStateFilters *RpcObjectListExportStateFilters `protobuf:"bytes,12,opt,name=linksStateFilters,proto3" json:"linksStateFilters,omitempty"` + IncludeBacklinks bool `protobuf:"varint,13,opt,name=includeBacklinks,proto3" json:"includeBacklinks,omitempty"` } func (m *RpcObjectListExportRequest) Reset() { *m = RpcObjectListExportRequest{} } @@ -29921,6 +29922,13 @@ func (m *RpcObjectListExportRequest) GetLinksStateFilters() *RpcObjectListExport return nil } +func (m *RpcObjectListExportRequest) GetIncludeBacklinks() bool { + if m != nil { + return m.IncludeBacklinks + } + return false +} + type RpcObjectListExportStateFilters struct { RelationsWhiteList []*RpcObjectListExportRelationsWhiteList `protobuf:"bytes,1,rep,name=relationsWhiteList,proto3" json:"relationsWhiteList,omitempty"` RemoveBlocks bool `protobuf:"varint,2,opt,name=removeBlocks,proto3" json:"removeBlocks,omitempty"` @@ -72445,1245 +72453,1246 @@ func init() { func init() { proto.RegisterFile("pb/protos/commands.proto", fileDescriptor_8261c968b2e6f45c) } var fileDescriptor_8261c968b2e6f45c = []byte{ - // 19802 bytes of a gzipped FileDescriptorProto + // 19811 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xfd, 0x7b, 0x9c, 0x24, 0x49, 0x59, 0x2f, 0x8c, 0x4f, 0x65, 0x56, 0x55, 0x77, 0x3f, 0x7d, 0x99, 0x9a, 0xdc, 0x99, 0xd9, 0xd9, 0xd8, 0x65, 0x76, 0x9c, 0x5d, 0x96, 0x75, 0x59, 0x7a, 0x2f, 0x20, 0xb2, 0xcb, 0xde, 0xaa, 0xab, 0xab, 0xbb, 0x6b, 0xb7, 0xbb, 0xaa, 0xcd, 0xaa, 0x9e, 0x61, 0xf5, 0xf8, 0xab, 0x93, 0x53, 0x15, 0xdd, 0x9d, 0x3b, 0xd5, 0x99, 0x65, 0x66, 0x76, 0xcf, 0x0e, 0xbf, 0xcf, 0x79, 0x8f, 0x88, 0x2b, - 0x28, 0x72, 0x10, 0x15, 0x15, 0x15, 0x90, 0xcb, 0xca, 0x01, 0x05, 0xe4, 0x7e, 0x40, 0x05, 0xe4, - 0x22, 0x88, 0x88, 0x08, 0x72, 0x11, 0xdd, 0x57, 0x10, 0x44, 0x3c, 0x1f, 0x39, 0xbc, 0xfa, 0x1e, - 0x41, 0x14, 0x5e, 0xdf, 0x4f, 0x46, 0x44, 0x5e, 0xa2, 0xba, 0x32, 0x2b, 0xb2, 0xba, 0xb2, 0x7a, - 0x91, 0xf7, 0xbf, 0xcc, 0xc8, 0xc8, 0x27, 0x9e, 0x78, 0xbe, 0x4f, 0x44, 0x3c, 0x11, 0xf1, 0xc4, - 0x13, 0x70, 0xaa, 0x7b, 0xe1, 0x96, 0xae, 0x65, 0x3a, 0xa6, 0x7d, 0x4b, 0xcb, 0xdc, 0xd9, 0xd1, - 0x8c, 0xb6, 0x3d, 0x4f, 0xde, 0x95, 0x09, 0xcd, 0xb8, 0xec, 0x5c, 0xee, 0x62, 0x74, 0x7d, 0xf7, - 0xe2, 0xd6, 0x2d, 0x1d, 0xfd, 0xc2, 0x2d, 0xdd, 0x0b, 0xb7, 0xec, 0x98, 0x6d, 0xdc, 0xf1, 0x7e, - 0x20, 0x2f, 0x2c, 0x3b, 0xba, 0x31, 0x2a, 0x57, 0xc7, 0x6c, 0x69, 0x1d, 0xdb, 0x31, 0x2d, 0xcc, - 0x72, 0x9e, 0x0c, 0x8a, 0xc4, 0x7b, 0xd8, 0x70, 0x3c, 0x0a, 0xd7, 0x6c, 0x99, 0xe6, 0x56, 0x07, - 0xd3, 0x6f, 0x17, 0x76, 0x37, 0x6f, 0xb1, 0x1d, 0x6b, 0xb7, 0xe5, 0xb0, 0xaf, 0x67, 0x7a, 0xbf, - 0xb6, 0xb1, 0xdd, 0xb2, 0xf4, 0xae, 0x63, 0x5a, 0x34, 0xc7, 0xd9, 0x77, 0xfd, 0xe2, 0x24, 0xc8, - 0x6a, 0xb7, 0x85, 0xbe, 0x31, 0x01, 0x72, 0xb1, 0xdb, 0x45, 0x1f, 0x92, 0x00, 0x96, 0xb1, 0x73, - 0x0e, 0x5b, 0xb6, 0x6e, 0x1a, 0xe8, 0x28, 0x4c, 0xa8, 0xf8, 0xc7, 0x76, 0xb1, 0xed, 0xdc, 0x99, - 0x7d, 0xfe, 0x57, 0xe4, 0x0c, 0x7a, 0x54, 0x82, 0x49, 0x15, 0xdb, 0x5d, 0xd3, 0xb0, 0xb1, 0x72, - 0x1f, 0xe4, 0xb0, 0x65, 0x99, 0xd6, 0xa9, 0xcc, 0x99, 0xcc, 0x8d, 0xd3, 0xb7, 0xdf, 0x34, 0xcf, - 0xaa, 0x3f, 0xaf, 0x76, 0x5b, 0xf3, 0xc5, 0x6e, 0x77, 0x3e, 0xa0, 0x34, 0xef, 0xfd, 0x34, 0x5f, - 0x76, 0xff, 0x50, 0xe9, 0x8f, 0xca, 0x29, 0x98, 0xd8, 0xa3, 0x19, 0x4e, 0x49, 0x67, 0x32, 0x37, - 0x4e, 0xa9, 0xde, 0xab, 0xfb, 0xa5, 0x8d, 0x1d, 0x4d, 0xef, 0xd8, 0xa7, 0x64, 0xfa, 0x85, 0xbd, - 0xa2, 0x57, 0x65, 0x20, 0x47, 0x88, 0x28, 0x25, 0xc8, 0xb6, 0xcc, 0x36, 0x26, 0xc5, 0xcf, 0xdd, - 0x7e, 0x8b, 0x78, 0xf1, 0xf3, 0x25, 0xb3, 0x8d, 0x55, 0xf2, 0xb3, 0x72, 0x06, 0xa6, 0x3d, 0xb1, - 0x04, 0x6c, 0x84, 0x93, 0xce, 0xde, 0x0e, 0x59, 0x37, 0xbf, 0x32, 0x09, 0xd9, 0xea, 0xc6, 0xea, - 0x6a, 0xe1, 0x88, 0x72, 0x0c, 0x66, 0x37, 0xaa, 0x0f, 0x54, 0x6b, 0xe7, 0xab, 0xcd, 0xb2, 0xaa, - 0xd6, 0xd4, 0x42, 0x46, 0x99, 0x85, 0xa9, 0x85, 0xe2, 0x62, 0xb3, 0x52, 0x5d, 0xdf, 0x68, 0x14, - 0x24, 0xf4, 0x72, 0x19, 0xe6, 0xea, 0xd8, 0x59, 0xc4, 0x7b, 0x7a, 0x0b, 0xd7, 0x1d, 0xcd, 0xc1, - 0xe8, 0x45, 0x19, 0x5f, 0x98, 0xca, 0x86, 0x5b, 0xa8, 0xff, 0x89, 0x55, 0xe0, 0xa9, 0xfb, 0x2a, - 0xc0, 0x53, 0x98, 0x67, 0x7f, 0xcf, 0x87, 0xd2, 0xd4, 0x30, 0x9d, 0xb3, 0x4f, 0x81, 0xe9, 0xd0, - 0x37, 0x65, 0x0e, 0x60, 0xa1, 0x58, 0x7a, 0x60, 0x59, 0xad, 0x6d, 0x54, 0x17, 0x0b, 0x47, 0xdc, - 0xf7, 0xa5, 0x9a, 0x5a, 0x66, 0xef, 0x19, 0xf4, 0xad, 0x4c, 0x08, 0xcc, 0x45, 0x1e, 0xcc, 0xf9, - 0xc1, 0xcc, 0xf4, 0x01, 0x14, 0xfd, 0xa6, 0x0f, 0xce, 0x32, 0x07, 0xce, 0x53, 0x93, 0x91, 0x4b, - 0x1f, 0xa0, 0x47, 0x24, 0x98, 0xac, 0x6f, 0xef, 0x3a, 0x6d, 0xf3, 0x92, 0x81, 0xa6, 0x7c, 0x64, - 0xd0, 0xd7, 0xc2, 0x32, 0xb9, 0x87, 0x97, 0xc9, 0x8d, 0xfb, 0x2b, 0xc1, 0x28, 0x44, 0x48, 0xe3, - 0x37, 0x7c, 0x69, 0x14, 0x39, 0x69, 0x3c, 0x45, 0x94, 0x50, 0xfa, 0x72, 0xf8, 0xd5, 0x67, 0x40, - 0xae, 0xde, 0xd5, 0x5a, 0x18, 0x7d, 0x4c, 0x86, 0x99, 0x55, 0xac, 0xed, 0xe1, 0x62, 0xb7, 0x6b, - 0x99, 0x7b, 0x18, 0x95, 0x02, 0x7d, 0x3d, 0x05, 0x13, 0xb6, 0x9b, 0xa9, 0xd2, 0x26, 0x35, 0x98, - 0x52, 0xbd, 0x57, 0xe5, 0x34, 0x80, 0xde, 0xc6, 0x86, 0xa3, 0x3b, 0x3a, 0xb6, 0x4f, 0x49, 0x67, - 0xe4, 0x1b, 0xa7, 0xd4, 0x50, 0x0a, 0xfa, 0x86, 0x24, 0xaa, 0x63, 0x84, 0x8b, 0xf9, 0x30, 0x07, - 0x11, 0x52, 0x7d, 0xb5, 0x24, 0xa2, 0x63, 0x03, 0xc9, 0x25, 0x93, 0xed, 0x1b, 0x33, 0xc9, 0x85, - 0xeb, 0xe6, 0xa8, 0xd6, 0x9a, 0xf5, 0x8d, 0xd2, 0x4a, 0xb3, 0xbe, 0x5e, 0x2c, 0x95, 0x0b, 0x58, - 0x39, 0x0e, 0x05, 0xf2, 0xd8, 0xac, 0xd4, 0x9b, 0x8b, 0xe5, 0xd5, 0x72, 0xa3, 0xbc, 0x58, 0xd8, - 0x54, 0x14, 0x98, 0x53, 0xcb, 0x3f, 0xb4, 0x51, 0xae, 0x37, 0x9a, 0x4b, 0xc5, 0xca, 0x6a, 0x79, - 0xb1, 0xb0, 0xe5, 0xfe, 0xbc, 0x5a, 0x59, 0xab, 0x34, 0x9a, 0x6a, 0xb9, 0x58, 0x5a, 0x29, 0x2f, - 0x16, 0xb6, 0x95, 0x2b, 0xe1, 0x8a, 0x6a, 0xad, 0x59, 0x5c, 0x5f, 0x57, 0x6b, 0xe7, 0xca, 0x4d, - 0xf6, 0x47, 0xbd, 0xa0, 0xd3, 0x82, 0x1a, 0xcd, 0xfa, 0x4a, 0x51, 0x2d, 0x17, 0x17, 0x56, 0xcb, - 0x85, 0x87, 0xd0, 0x73, 0x65, 0x98, 0x5d, 0xd3, 0x2e, 0xe2, 0xfa, 0xb6, 0x66, 0x61, 0xed, 0x42, - 0x07, 0xa3, 0xeb, 0x04, 0xf0, 0x44, 0x1f, 0x0b, 0xe3, 0x55, 0xe6, 0xf1, 0xba, 0xa5, 0x8f, 0x80, - 0xb9, 0x22, 0x22, 0x00, 0xfb, 0x17, 0xbf, 0x19, 0xac, 0x70, 0x80, 0x3d, 0x2d, 0x21, 0xbd, 0x64, - 0x88, 0xfd, 0xc4, 0xe3, 0x00, 0x31, 0xf4, 0x98, 0x0c, 0x73, 0x15, 0x63, 0x4f, 0x77, 0xf0, 0x32, - 0x36, 0xb0, 0xe5, 0x8e, 0x03, 0x42, 0x30, 0x3c, 0x2a, 0x87, 0x60, 0x58, 0xe2, 0x61, 0xb8, 0xb5, - 0x8f, 0xd8, 0xf8, 0x32, 0x22, 0x46, 0xdb, 0x6b, 0x60, 0x4a, 0x27, 0xf9, 0x4a, 0x7a, 0x9b, 0x49, - 0x2c, 0x48, 0x50, 0xae, 0x87, 0x59, 0xfa, 0xb2, 0xa4, 0x77, 0xf0, 0x03, 0xf8, 0x32, 0x1b, 0x77, - 0xf9, 0x44, 0xf4, 0xb3, 0x7e, 0xe3, 0xab, 0x70, 0x58, 0xfe, 0x40, 0x52, 0xa6, 0x92, 0x81, 0xf9, - 0x92, 0xc7, 0x43, 0xf3, 0xdb, 0xd7, 0xca, 0x74, 0xf4, 0x1d, 0x09, 0xa6, 0xeb, 0x8e, 0xd9, 0x75, - 0x55, 0x56, 0x37, 0xb6, 0xc4, 0xc0, 0xfd, 0x48, 0xb8, 0x8d, 0x95, 0x78, 0x70, 0x9f, 0xd2, 0x47, - 0x8e, 0xa1, 0x02, 0x22, 0x5a, 0xd8, 0x37, 0xfc, 0x16, 0xb6, 0xc4, 0xa1, 0x72, 0x7b, 0x22, 0x6a, - 0xdf, 0x85, 0xed, 0xeb, 0x25, 0x32, 0x14, 0x3c, 0x35, 0x73, 0x4a, 0xbb, 0x96, 0x85, 0x0d, 0x47, - 0x0c, 0x84, 0xbf, 0x0c, 0x83, 0xb0, 0xc2, 0x83, 0x70, 0x7b, 0x8c, 0x32, 0x7b, 0xa5, 0xa4, 0xd8, - 0xc6, 0xde, 0xe7, 0xa3, 0xf9, 0x00, 0x87, 0xe6, 0x0f, 0x26, 0x67, 0x2b, 0x19, 0xa4, 0x2b, 0x43, - 0x20, 0x7a, 0x1c, 0x0a, 0xee, 0x98, 0x54, 0x6a, 0x54, 0xce, 0x95, 0x9b, 0x95, 0xea, 0xb9, 0x4a, - 0xa3, 0x5c, 0xc0, 0xe8, 0x17, 0x64, 0x98, 0xa1, 0xac, 0xa9, 0x78, 0xcf, 0xbc, 0x28, 0xd8, 0xeb, - 0x3d, 0x96, 0xd0, 0x58, 0x08, 0x97, 0x10, 0xd1, 0x32, 0x7e, 0x26, 0x81, 0xb1, 0x10, 0x43, 0xee, - 0xf1, 0xd4, 0x5b, 0xed, 0x6b, 0x06, 0x5b, 0x7d, 0x5a, 0x4b, 0xdf, 0xde, 0xea, 0x25, 0x59, 0x00, - 0x5a, 0xc9, 0x73, 0x3a, 0xbe, 0x84, 0xd6, 0x02, 0x4c, 0x38, 0xb5, 0xcd, 0x0c, 0x54, 0x5b, 0xa9, - 0x9f, 0xda, 0xbe, 0x33, 0x3c, 0x66, 0x2d, 0xf0, 0xe8, 0xdd, 0x1c, 0x29, 0x6e, 0x97, 0x93, 0xe8, - 0xd9, 0xa1, 0xa7, 0x28, 0x12, 0x6f, 0x75, 0x5e, 0x03, 0x53, 0xe4, 0xb1, 0xaa, 0xed, 0x60, 0xd6, - 0x86, 0x82, 0x04, 0xe5, 0x2c, 0xcc, 0xd0, 0x8c, 0x2d, 0xd3, 0x70, 0xeb, 0x93, 0x25, 0x19, 0xb8, - 0x34, 0x17, 0xc4, 0x96, 0x85, 0x35, 0xc7, 0xb4, 0x08, 0x8d, 0x1c, 0x05, 0x31, 0x94, 0x84, 0xbe, - 0xea, 0xb7, 0xc2, 0x32, 0xa7, 0x39, 0xb7, 0x25, 0xa9, 0x4a, 0x32, 0xbd, 0xd9, 0x1b, 0xae, 0xfd, - 0xd1, 0x56, 0xd7, 0x74, 0xd1, 0x5e, 0x22, 0x53, 0x3b, 0xac, 0x9c, 0x04, 0x85, 0xa5, 0xba, 0x79, - 0x4b, 0xb5, 0x6a, 0xa3, 0x5c, 0x6d, 0x14, 0x36, 0xfb, 0x6a, 0xd4, 0x16, 0x7a, 0x75, 0x16, 0xb2, - 0xf7, 0x9b, 0xba, 0x81, 0x1e, 0xc9, 0x70, 0x2a, 0x61, 0x60, 0xe7, 0x92, 0x69, 0x5d, 0xf4, 0x1b, - 0x6a, 0x90, 0x10, 0x8f, 0x4d, 0xa0, 0x4a, 0xf2, 0x40, 0x55, 0xca, 0xf6, 0x53, 0xa5, 0x9f, 0x0f, - 0xab, 0xd2, 0x5d, 0xbc, 0x2a, 0xdd, 0xd0, 0x47, 0xfe, 0x2e, 0xf3, 0x11, 0x1d, 0xc0, 0x87, 0xfd, - 0x0e, 0xe0, 0x5e, 0x0e, 0xc6, 0x27, 0x8b, 0x91, 0x49, 0x06, 0xe0, 0xe7, 0x53, 0x6d, 0xf8, 0xfd, - 0xa0, 0xde, 0x8a, 0x80, 0x7a, 0xbb, 0x4f, 0x9f, 0xa0, 0xef, 0xef, 0x3a, 0x1e, 0xda, 0xdf, 0x4d, - 0x5c, 0x54, 0x4e, 0xc0, 0xb1, 0xc5, 0xca, 0xd2, 0x52, 0x59, 0x2d, 0x57, 0x1b, 0xcd, 0x6a, 0xb9, - 0x71, 0xbe, 0xa6, 0x3e, 0x50, 0xe8, 0xa0, 0x57, 0xc9, 0x00, 0xae, 0x84, 0x4a, 0x9a, 0xd1, 0xc2, - 0x1d, 0xb1, 0x1e, 0xfd, 0x7f, 0x49, 0xc9, 0xfa, 0x84, 0x80, 0x7e, 0x04, 0x9c, 0x2f, 0x93, 0xc4, - 0x5b, 0x65, 0x24, 0xb1, 0x64, 0xa0, 0xbe, 0xfe, 0xf1, 0x60, 0x7b, 0x5e, 0x01, 0x47, 0x3d, 0x7a, - 0x2c, 0x7b, 0xff, 0x69, 0xdf, 0x9b, 0xb2, 0x30, 0xc7, 0x60, 0xf1, 0xe6, 0xf1, 0xcf, 0xcf, 0x88, - 0x4c, 0xe4, 0x11, 0x4c, 0xb2, 0x69, 0xbb, 0xd7, 0xbd, 0xfb, 0xef, 0xca, 0x32, 0x4c, 0x77, 0xb1, - 0xb5, 0xa3, 0xdb, 0xb6, 0x6e, 0x1a, 0x74, 0x41, 0x6e, 0xee, 0xf6, 0x27, 0xfa, 0x12, 0x27, 0x6b, - 0x97, 0xf3, 0xeb, 0x9a, 0xe5, 0xe8, 0x2d, 0xbd, 0xab, 0x19, 0xce, 0x7a, 0x90, 0x59, 0x0d, 0xff, - 0x89, 0x5e, 0x9c, 0x70, 0x5a, 0xc3, 0xd7, 0x24, 0x42, 0x25, 0x7e, 0x2f, 0xc1, 0x94, 0x24, 0x96, - 0x60, 0x32, 0xb5, 0xf8, 0x50, 0xaa, 0x6a, 0xd1, 0x07, 0xef, 0x2d, 0xe5, 0x2a, 0x38, 0x51, 0xa9, - 0x96, 0x6a, 0xaa, 0x5a, 0x2e, 0x35, 0x9a, 0xeb, 0x65, 0x75, 0xad, 0x52, 0xaf, 0x57, 0x6a, 0xd5, - 0xfa, 0x41, 0x5a, 0x3b, 0xfa, 0xa8, 0xec, 0x6b, 0xcc, 0x22, 0x6e, 0x75, 0x74, 0x03, 0xa3, 0x7b, - 0x0f, 0xa8, 0x30, 0xfc, 0xaa, 0x8f, 0x38, 0xce, 0xac, 0xfc, 0x08, 0x9c, 0x5f, 0x99, 0x1c, 0xe7, - 0xfe, 0x04, 0xff, 0x03, 0x37, 0xff, 0xc7, 0x64, 0x38, 0x16, 0x6a, 0x88, 0x2a, 0xde, 0x19, 0xd9, - 0x4a, 0xde, 0x4f, 0x84, 0xdb, 0x6e, 0x85, 0xc7, 0xb4, 0x9f, 0x35, 0xbd, 0x8f, 0x8d, 0x08, 0x58, - 0x5f, 0xef, 0xc3, 0xba, 0xca, 0xc1, 0xfa, 0x8c, 0x21, 0x68, 0x26, 0x43, 0xf6, 0x77, 0x52, 0x45, - 0xf6, 0x2a, 0x38, 0xb1, 0x5e, 0x54, 0x1b, 0x95, 0x52, 0x65, 0xbd, 0xe8, 0x8e, 0xa3, 0xa1, 0x21, - 0x3b, 0xc2, 0x5c, 0xe7, 0x41, 0xef, 0x8b, 0xef, 0x7b, 0xb3, 0x70, 0x4d, 0xff, 0x8e, 0xb6, 0xb4, - 0xad, 0x19, 0x5b, 0x18, 0xe9, 0x22, 0x50, 0x2f, 0xc2, 0x44, 0x8b, 0x64, 0xa7, 0x38, 0x87, 0xb7, - 0x6e, 0x62, 0xfa, 0x72, 0x5a, 0x82, 0xea, 0xfd, 0x8a, 0xde, 0x1a, 0x56, 0x88, 0x06, 0xaf, 0x10, - 0xf7, 0xc4, 0x83, 0xb7, 0x8f, 0xef, 0x08, 0xdd, 0xf8, 0x84, 0xaf, 0x1b, 0xe7, 0x39, 0xdd, 0x28, - 0x1d, 0x8c, 0x7c, 0x32, 0x35, 0xf9, 0xe3, 0xc7, 0x43, 0x07, 0x10, 0xa9, 0x4d, 0x7a, 0xf4, 0xa8, - 0xd0, 0xb7, 0xbb, 0x7f, 0x85, 0x0c, 0xf9, 0x45, 0xdc, 0xc1, 0xa2, 0x2b, 0x91, 0x5f, 0x97, 0x44, - 0x37, 0x44, 0x28, 0x0c, 0x94, 0x76, 0xf4, 0xea, 0x88, 0xa3, 0xef, 0x60, 0xdb, 0xd1, 0x76, 0xba, - 0x44, 0xd4, 0xb2, 0x1a, 0x24, 0xa0, 0x9f, 0x94, 0x44, 0xb6, 0x4b, 0x62, 0x8a, 0xf9, 0x8f, 0xb1, - 0xa6, 0xf8, 0x29, 0x09, 0x26, 0xeb, 0xd8, 0xa9, 0x59, 0x6d, 0x6c, 0xa1, 0x7a, 0x80, 0xd1, 0x19, - 0x98, 0x26, 0xa0, 0xb8, 0xd3, 0x4c, 0x1f, 0xa7, 0x70, 0x92, 0x72, 0x03, 0xcc, 0xf9, 0xaf, 0xe4, - 0x77, 0xd6, 0x8d, 0xf7, 0xa4, 0xa2, 0x7f, 0xcc, 0x88, 0xee, 0xe2, 0xb2, 0x25, 0x43, 0xc6, 0x4d, - 0x44, 0x2b, 0x15, 0xdb, 0x91, 0x8d, 0x25, 0x95, 0xfe, 0x46, 0xd7, 0x9b, 0x25, 0x80, 0x0d, 0xc3, - 0xf6, 0xe4, 0xfa, 0xe4, 0x04, 0x72, 0x45, 0xff, 0x9c, 0x49, 0x36, 0x8b, 0x09, 0xca, 0x89, 0x90, - 0xd8, 0x6b, 0x12, 0xac, 0x2d, 0x44, 0x12, 0x4b, 0x5f, 0x66, 0x5f, 0x9a, 0x83, 0xfc, 0x79, 0xad, - 0xd3, 0xc1, 0x0e, 0xfa, 0xb2, 0x04, 0xf9, 0x92, 0x85, 0x35, 0x07, 0x87, 0x45, 0x87, 0x60, 0xd2, - 0x32, 0x4d, 0x67, 0x5d, 0x73, 0xb6, 0x99, 0xdc, 0xfc, 0x77, 0xe6, 0x30, 0xf0, 0xdb, 0xe1, 0xee, - 0xe3, 0x5e, 0x5e, 0x74, 0xdf, 0xcf, 0xd5, 0x96, 0x16, 0x34, 0x4f, 0x0b, 0x89, 0xe8, 0x3f, 0x10, - 0x4c, 0xee, 0x18, 0x78, 0xc7, 0x34, 0xf4, 0x96, 0x67, 0x73, 0x7a, 0xef, 0xe8, 0xfd, 0xbe, 0x4c, - 0x17, 0x38, 0x99, 0xce, 0x0b, 0x97, 0x92, 0x4c, 0xa0, 0xf5, 0x21, 0x7a, 0x8f, 0x6b, 0xe1, 0x6a, - 0xda, 0x19, 0x34, 0x1b, 0xb5, 0x66, 0x49, 0x2d, 0x17, 0x1b, 0xe5, 0xe6, 0x6a, 0xad, 0x54, 0x5c, - 0x6d, 0xaa, 0xe5, 0xf5, 0x5a, 0x01, 0xa3, 0xbf, 0x93, 0x5c, 0xe1, 0xb6, 0xcc, 0x3d, 0x6c, 0xa1, - 0x65, 0x21, 0x39, 0xc7, 0xc9, 0x84, 0x61, 0xf0, 0xf3, 0xc2, 0x4e, 0x1b, 0x4c, 0x3a, 0x8c, 0x83, - 0x08, 0xe5, 0xfd, 0x80, 0x50, 0x73, 0x8f, 0x25, 0xf5, 0x38, 0x90, 0xf4, 0xff, 0x96, 0x60, 0xa2, - 0x64, 0x1a, 0x7b, 0xd8, 0x72, 0xc2, 0xf3, 0x9d, 0xb0, 0x34, 0x33, 0xbc, 0x34, 0xdd, 0x41, 0x12, - 0x1b, 0x8e, 0x65, 0x76, 0xbd, 0x09, 0x8f, 0xf7, 0x8a, 0x5e, 0x9b, 0x54, 0xc2, 0xac, 0xe4, 0xe8, - 0x85, 0xcf, 0xfe, 0x05, 0x71, 0xec, 0xc9, 0x3d, 0x0d, 0xe0, 0x55, 0x49, 0x70, 0xe9, 0xcf, 0x40, - 0xfa, 0x5d, 0xca, 0x17, 0x64, 0x98, 0xa5, 0x8d, 0xaf, 0x8e, 0x89, 0x85, 0x86, 0x6a, 0xe1, 0x25, - 0xc7, 0x1e, 0xe1, 0xaf, 0x1c, 0xe1, 0xc4, 0x9f, 0xd7, 0xba, 0x5d, 0x7f, 0xf9, 0x79, 0xe5, 0x88, - 0xca, 0xde, 0xa9, 0x9a, 0x2f, 0xe4, 0x21, 0xab, 0xed, 0x3a, 0xdb, 0xe8, 0x3b, 0xc2, 0x93, 0x4f, - 0xae, 0x33, 0x60, 0xfc, 0x44, 0x40, 0x72, 0x1c, 0x72, 0x8e, 0x79, 0x11, 0x7b, 0x72, 0xa0, 0x2f, - 0x2e, 0x1c, 0x5a, 0xb7, 0xdb, 0x20, 0x1f, 0x18, 0x1c, 0xde, 0xbb, 0x6b, 0xeb, 0x68, 0xad, 0x96, - 0xb9, 0x6b, 0x38, 0x15, 0x6f, 0x09, 0x3a, 0x48, 0x40, 0x9f, 0xcb, 0x88, 0x4c, 0x66, 0x05, 0x18, - 0x4c, 0x06, 0xd9, 0x85, 0x21, 0x9a, 0xd2, 0x3c, 0xdc, 0x54, 0x5c, 0x5f, 0x6f, 0x36, 0x6a, 0x0f, - 0x94, 0xab, 0x81, 0xe1, 0xd9, 0xac, 0x54, 0x9b, 0x8d, 0x95, 0x72, 0xb3, 0xb4, 0xa1, 0x92, 0x75, - 0xc2, 0x62, 0xa9, 0x54, 0xdb, 0xa8, 0x36, 0x0a, 0x18, 0xbd, 0x41, 0x82, 0x99, 0x52, 0xc7, 0xb4, - 0x7d, 0x84, 0xaf, 0x0d, 0x10, 0xf6, 0xc5, 0x98, 0x09, 0x89, 0x11, 0xfd, 0x5b, 0x46, 0xd4, 0xe9, - 0xc0, 0x13, 0x48, 0x88, 0x7c, 0x44, 0x2f, 0xf5, 0x5a, 0x21, 0xa7, 0x83, 0xc1, 0xf4, 0xd2, 0x6f, - 0x12, 0x9f, 0xbd, 0x07, 0x26, 0x8a, 0x54, 0x31, 0xd0, 0x5f, 0x67, 0x20, 0x5f, 0x32, 0x8d, 0x4d, - 0x7d, 0xcb, 0x35, 0xe6, 0xb0, 0xa1, 0x5d, 0xe8, 0xe0, 0x45, 0xcd, 0xd1, 0xf6, 0x74, 0x7c, 0x89, - 0x54, 0x60, 0x52, 0xed, 0x49, 0x75, 0x99, 0x62, 0x29, 0xf8, 0xc2, 0xee, 0x16, 0x61, 0x6a, 0x52, - 0x0d, 0x27, 0x29, 0xcf, 0x80, 0x2b, 0xe9, 0xeb, 0xba, 0x85, 0x2d, 0xdc, 0xc1, 0x9a, 0x8d, 0xdd, - 0x69, 0x91, 0x81, 0x3b, 0x44, 0x69, 0x27, 0xd5, 0xa8, 0xcf, 0xca, 0x59, 0x98, 0xa1, 0x9f, 0x88, - 0x29, 0x62, 0x13, 0x35, 0x9e, 0x54, 0xb9, 0x34, 0xe5, 0x29, 0x90, 0xc3, 0x0f, 0x3b, 0x96, 0x76, - 0xaa, 0x4d, 0xf0, 0xba, 0x72, 0x9e, 0x7a, 0x1d, 0xce, 0x7b, 0x5e, 0x87, 0xf3, 0x75, 0xe2, 0x93, - 0xa8, 0xd2, 0x5c, 0xe8, 0xa3, 0x93, 0xbe, 0x21, 0xf1, 0x06, 0x39, 0x50, 0x0c, 0x05, 0xb2, 0x86, - 0xb6, 0x83, 0x99, 0x5e, 0x90, 0x67, 0xe5, 0x26, 0x38, 0xaa, 0xed, 0x69, 0x8e, 0x66, 0xad, 0x9a, - 0x2d, 0xad, 0x43, 0x06, 0x3f, 0xaf, 0xe5, 0xf7, 0x7e, 0x20, 0x3b, 0x42, 0x8e, 0x69, 0x61, 0x92, - 0xcb, 0xdb, 0x11, 0xf2, 0x12, 0x5c, 0xea, 0x7a, 0xcb, 0x34, 0x08, 0xff, 0xb2, 0x4a, 0x9e, 0x5d, - 0xa9, 0xb4, 0x75, 0xdb, 0xad, 0x08, 0xa1, 0x52, 0xa5, 0x5b, 0x1b, 0xf5, 0xcb, 0x46, 0x8b, 0xec, - 0x06, 0x4d, 0xaa, 0x51, 0x9f, 0x95, 0x05, 0x98, 0x66, 0x1b, 0x21, 0x6b, 0xae, 0x5e, 0xe5, 0x89, - 0x5e, 0x9d, 0xe1, 0x7d, 0xba, 0x28, 0x9e, 0xf3, 0xd5, 0x20, 0x9f, 0x1a, 0xfe, 0x49, 0xb9, 0x0f, - 0xae, 0x66, 0xaf, 0xa5, 0x5d, 0xdb, 0x31, 0x77, 0x28, 0xe8, 0x4b, 0x7a, 0x87, 0xd6, 0x60, 0x82, - 0xd4, 0x20, 0x2e, 0x8b, 0x72, 0x3b, 0x1c, 0xef, 0x5a, 0x78, 0x13, 0x5b, 0x0f, 0x6a, 0x3b, 0xbb, - 0x0f, 0x37, 0x2c, 0xcd, 0xb0, 0xbb, 0xa6, 0xe5, 0x9c, 0x9a, 0x24, 0xcc, 0xf7, 0xfd, 0xa6, 0xdc, - 0x0c, 0xc7, 0x1e, 0xb2, 0x4d, 0xa3, 0xd8, 0xd5, 0x57, 0x75, 0xdb, 0xc1, 0x46, 0xb1, 0xdd, 0xb6, - 0x4e, 0x4d, 0x91, 0xb2, 0xf6, 0x7f, 0x60, 0xdd, 0xea, 0x24, 0xe4, 0xa9, 0xb0, 0xd1, 0x8b, 0x72, - 0xc2, 0xce, 0x9f, 0xac, 0xfa, 0xb1, 0xc6, 0xdc, 0xad, 0x30, 0xc1, 0xfa, 0x43, 0x02, 0xeb, 0xf4, - 0xed, 0x27, 0x7b, 0x56, 0x21, 0x18, 0x15, 0xd5, 0xcb, 0xa6, 0x3c, 0x15, 0xf2, 0x2d, 0x22, 0x04, - 0x82, 0xf0, 0xf4, 0xed, 0x57, 0xf7, 0x2f, 0x94, 0x64, 0x51, 0x59, 0x56, 0xf4, 0x17, 0xb2, 0x90, - 0xbf, 0x68, 0x1c, 0xc7, 0xc9, 0xfa, 0x80, 0xaf, 0x4a, 0x43, 0x74, 0xb2, 0x37, 0xc3, 0x8d, 0xac, - 0x07, 0x65, 0xd6, 0xca, 0x62, 0x73, 0x61, 0xc3, 0x9b, 0x3a, 0xba, 0x36, 0x4c, 0xbd, 0x51, 0x54, - 0xdd, 0x79, 0xff, 0xa2, 0x3b, 0xe5, 0xbc, 0x09, 0x6e, 0x18, 0x90, 0xbb, 0xdc, 0x68, 0x56, 0x8b, - 0x6b, 0xe5, 0xc2, 0x26, 0x6f, 0x09, 0xd5, 0x1b, 0xb5, 0xf5, 0xa6, 0xba, 0x51, 0xad, 0x56, 0xaa, - 0xcb, 0x94, 0x98, 0x6b, 0x40, 0x9e, 0x0c, 0x32, 0x9c, 0x57, 0x2b, 0x8d, 0x72, 0xb3, 0x54, 0xab, - 0x2e, 0x55, 0x96, 0x0b, 0xfa, 0x20, 0x33, 0xea, 0x21, 0xe5, 0x0c, 0x5c, 0xc3, 0x71, 0x52, 0xa9, - 0x55, 0xdd, 0x79, 0x70, 0xa9, 0x58, 0x2d, 0x95, 0xdd, 0x49, 0xef, 0x45, 0x05, 0xc1, 0x09, 0x4a, - 0xae, 0xb9, 0x54, 0x59, 0x0d, 0x6f, 0x5d, 0x7d, 0x24, 0xa3, 0x9c, 0x82, 0x2b, 0xc2, 0xdf, 0x2a, - 0xd5, 0x73, 0xc5, 0xd5, 0xca, 0x62, 0xe1, 0x8f, 0x32, 0xca, 0xf5, 0x70, 0x2d, 0xf7, 0x17, 0xdd, - 0x85, 0x6a, 0x56, 0x16, 0x9b, 0x6b, 0x95, 0xfa, 0x5a, 0xb1, 0x51, 0x5a, 0x29, 0x7c, 0x94, 0xcc, - 0x2e, 0x7c, 0x73, 0x39, 0xe4, 0xc4, 0xf9, 0x92, 0xb0, 0x05, 0x50, 0xe4, 0x15, 0xf5, 0xc9, 0x7d, - 0x61, 0x8f, 0xb7, 0x78, 0x3f, 0xe4, 0x8f, 0x25, 0x8b, 0x9c, 0x0a, 0xdd, 0x9a, 0x80, 0x56, 0x32, - 0x1d, 0x6a, 0x0c, 0xa1, 0x42, 0x67, 0xe0, 0x9a, 0x6a, 0x99, 0x22, 0xa5, 0x96, 0x4b, 0xb5, 0x73, - 0x65, 0xb5, 0x79, 0xbe, 0xb8, 0xba, 0x5a, 0x6e, 0x34, 0x97, 0x2a, 0x6a, 0xbd, 0x51, 0xd8, 0x44, - 0xff, 0x2c, 0xf9, 0x6b, 0x3f, 0x21, 0x69, 0xfd, 0xb5, 0x94, 0xb4, 0x59, 0xc7, 0xae, 0xf1, 0xfc, - 0x00, 0xe4, 0x6d, 0x47, 0x73, 0x76, 0x6d, 0xd6, 0xaa, 0x9f, 0xd0, 0xbf, 0x55, 0xcf, 0xd7, 0x49, - 0x26, 0x95, 0x65, 0x46, 0x7f, 0x91, 0x49, 0xd2, 0x4c, 0x47, 0xb0, 0xfc, 0xa3, 0x0f, 0x21, 0xe2, - 0xd3, 0x80, 0x3c, 0x6d, 0xaf, 0xd4, 0x9b, 0xc5, 0x55, 0xb5, 0x5c, 0x5c, 0x7c, 0xd0, 0x5f, 0xf4, - 0xc1, 0xca, 0x09, 0x38, 0xb6, 0x51, 0x2d, 0x2e, 0xac, 0x96, 0x49, 0x73, 0xa9, 0x55, 0xab, 0xe5, - 0x92, 0x2b, 0xf7, 0x9f, 0x24, 0x5b, 0x2c, 0xae, 0xbd, 0x4d, 0xf8, 0x76, 0x6d, 0xa2, 0x90, 0xfc, - 0xbf, 0x22, 0xec, 0x89, 0x14, 0x68, 0x58, 0x98, 0xd6, 0x68, 0x71, 0xf8, 0x9c, 0x90, 0xf3, 0x91, - 0x10, 0x27, 0xc9, 0xf0, 0xf8, 0xcf, 0x43, 0xe0, 0x71, 0x02, 0x8e, 0x85, 0xf1, 0x20, 0x4e, 0x48, - 0xd1, 0x30, 0xbc, 0x68, 0x0a, 0xf2, 0x75, 0xdc, 0xc1, 0x2d, 0x07, 0x3d, 0x26, 0x05, 0xa6, 0xc7, - 0x1c, 0x48, 0xbe, 0xd3, 0x8b, 0xa4, 0xb7, 0xb9, 0xc9, 0xb6, 0xd4, 0x33, 0xd9, 0x8e, 0x31, 0x1a, - 0xe4, 0x44, 0x46, 0x43, 0x36, 0x05, 0xa3, 0x21, 0x37, 0xbc, 0xd1, 0x90, 0x4f, 0x6a, 0x34, 0x4c, - 0xc4, 0x1a, 0x0d, 0xe8, 0x35, 0xf9, 0xa4, 0x7d, 0x0a, 0x05, 0xe6, 0x70, 0x4d, 0x85, 0xff, 0x95, - 0x4d, 0xd2, 0x07, 0xf5, 0xe5, 0x38, 0x99, 0xce, 0x7f, 0x47, 0x4e, 0x61, 0x69, 0x43, 0xb9, 0x0e, - 0xae, 0x0d, 0xde, 0x9b, 0xe5, 0x67, 0x55, 0xea, 0x8d, 0x3a, 0xb1, 0x0f, 0x4a, 0x35, 0x55, 0xdd, - 0x58, 0xa7, 0xeb, 0xd3, 0x27, 0x41, 0x09, 0xa8, 0xa8, 0x1b, 0x55, 0x6a, 0x0d, 0x6c, 0xf1, 0xd4, - 0x97, 0x2a, 0xd5, 0xc5, 0xa6, 0xdf, 0xc2, 0xaa, 0x4b, 0xb5, 0xc2, 0xb6, 0x3b, 0x1d, 0x0c, 0x51, - 0x77, 0x87, 0x73, 0x56, 0x42, 0xb1, 0xba, 0xd8, 0x5c, 0xab, 0x96, 0xd7, 0x6a, 0xd5, 0x4a, 0x89, - 0xa4, 0xd7, 0xcb, 0x8d, 0x82, 0xee, 0x0e, 0x4b, 0x3d, 0xf6, 0x47, 0xbd, 0x5c, 0x54, 0x4b, 0x2b, - 0x65, 0x95, 0x16, 0xf9, 0x90, 0x72, 0x03, 0x9c, 0x2d, 0x56, 0x6b, 0x0d, 0x37, 0xa5, 0x58, 0x7d, - 0xb0, 0xf1, 0xe0, 0x7a, 0xb9, 0xb9, 0xae, 0xd6, 0x4a, 0xe5, 0x7a, 0xdd, 0x6d, 0xd5, 0xcc, 0x5a, - 0x29, 0x74, 0x94, 0x7b, 0xe0, 0xce, 0x10, 0x6b, 0xe5, 0x06, 0xd9, 0x0c, 0x5d, 0xab, 0x11, 0x7f, - 0x98, 0xc5, 0x72, 0x73, 0xa5, 0x58, 0x6f, 0x56, 0xaa, 0xa5, 0xda, 0xda, 0x7a, 0xb1, 0x51, 0x71, - 0x1b, 0xff, 0xba, 0x5a, 0x6b, 0xd4, 0x9a, 0xe7, 0xca, 0x6a, 0xbd, 0x52, 0xab, 0x16, 0x0c, 0xb7, - 0xca, 0xa1, 0xde, 0xc2, 0xeb, 0xb5, 0x4d, 0xe5, 0x1a, 0x38, 0xe5, 0xa5, 0xaf, 0xd6, 0x5c, 0x41, - 0x87, 0xec, 0x97, 0x6e, 0xaa, 0xf6, 0xcb, 0xbf, 0x4a, 0x90, 0xad, 0x3b, 0x66, 0x17, 0x7d, 0x7f, - 0xd0, 0x1d, 0x9d, 0x06, 0xb0, 0xc8, 0xde, 0xa6, 0x3b, 0xc3, 0x63, 0x73, 0xbe, 0x50, 0x0a, 0xfa, - 0x43, 0xe1, 0x0d, 0x99, 0xa0, 0x87, 0x37, 0xbb, 0x11, 0x96, 0xcd, 0xb7, 0xc4, 0x4e, 0xa8, 0x44, - 0x13, 0x4a, 0xa6, 0xef, 0x3f, 0x33, 0xcc, 0x96, 0x0b, 0x82, 0x93, 0x21, 0xd8, 0x5c, 0xf9, 0x7b, - 0x2a, 0x81, 0x95, 0x2b, 0xe1, 0x8a, 0x1e, 0xe5, 0x22, 0x3a, 0xb5, 0xa9, 0x7c, 0x1f, 0x3c, 0x21, - 0xa4, 0xde, 0xe5, 0xb5, 0xda, 0xb9, 0xb2, 0xaf, 0xc8, 0x8b, 0xc5, 0x46, 0xb1, 0xb0, 0x85, 0x3e, - 0x25, 0x43, 0x76, 0xcd, 0xdc, 0xeb, 0xdd, 0x07, 0x33, 0xf0, 0xa5, 0xd0, 0x3a, 0xab, 0xf7, 0xca, - 0x7b, 0xe4, 0x0b, 0x89, 0x7d, 0x2d, 0x7a, 0xcf, 0xfb, 0x73, 0x52, 0x12, 0xb1, 0xaf, 0x1d, 0x74, - 0xa3, 0xfb, 0xef, 0x87, 0x11, 0x7b, 0x84, 0x68, 0xb1, 0x72, 0x16, 0x4e, 0x07, 0x1f, 0x2a, 0x8b, - 0xe5, 0x6a, 0xa3, 0xb2, 0xf4, 0x60, 0x20, 0xdc, 0x8a, 0x2a, 0x24, 0xfe, 0x41, 0xdd, 0x58, 0xfc, - 0xbc, 0xe4, 0x14, 0x1c, 0x0f, 0xbe, 0x2d, 0x97, 0x1b, 0xde, 0x97, 0x87, 0xd0, 0x23, 0x39, 0x98, - 0xa1, 0xdd, 0xfa, 0x46, 0xb7, 0xad, 0x39, 0x18, 0x3d, 0x35, 0x40, 0xf7, 0x46, 0x38, 0x5a, 0x59, - 0x5f, 0xaa, 0xd7, 0x1d, 0xd3, 0xd2, 0xb6, 0x30, 0x19, 0xc7, 0xa8, 0xb4, 0x7a, 0x93, 0xd1, 0xdb, - 0x85, 0xd7, 0x10, 0xf9, 0xa1, 0x84, 0x96, 0x19, 0x81, 0xfa, 0x17, 0x84, 0xd6, 0xfc, 0x04, 0x08, - 0x26, 0x43, 0xff, 0xa1, 0x11, 0xb7, 0xb9, 0x68, 0x5c, 0x36, 0xcf, 0x3e, 0x4f, 0x82, 0xa9, 0x86, - 0xbe, 0x83, 0x9f, 0x6d, 0x1a, 0xd8, 0x56, 0x26, 0x40, 0x5e, 0x5e, 0x6b, 0x14, 0x8e, 0xb8, 0x0f, - 0xae, 0x09, 0x96, 0x21, 0x0f, 0x65, 0xb7, 0x00, 0xf7, 0xa1, 0xd8, 0x28, 0xc8, 0xee, 0xc3, 0x5a, - 0xb9, 0x51, 0xc8, 0xba, 0x0f, 0xd5, 0x72, 0xa3, 0x90, 0x73, 0x1f, 0xd6, 0x57, 0x1b, 0x85, 0xbc, - 0xfb, 0x50, 0xa9, 0x37, 0x0a, 0x13, 0xee, 0xc3, 0x42, 0xbd, 0x51, 0x98, 0x74, 0x1f, 0xce, 0xd5, - 0x1b, 0x85, 0x29, 0xf7, 0xa1, 0xd4, 0x68, 0x14, 0xc0, 0x7d, 0xb8, 0xbf, 0xde, 0x28, 0x4c, 0xbb, - 0x0f, 0xc5, 0x52, 0xa3, 0x30, 0x43, 0x1e, 0xca, 0x8d, 0xc2, 0xac, 0xfb, 0x50, 0xaf, 0x37, 0x0a, - 0x73, 0x84, 0x72, 0xbd, 0x51, 0x38, 0x4a, 0xca, 0xaa, 0x34, 0x0a, 0x05, 0xf7, 0x61, 0xa5, 0xde, - 0x28, 0x1c, 0x23, 0x99, 0xeb, 0x8d, 0x82, 0x42, 0x0a, 0xad, 0x37, 0x0a, 0x57, 0x90, 0x3c, 0xf5, - 0x46, 0xe1, 0x38, 0x29, 0xa2, 0xde, 0x28, 0x9c, 0x20, 0x6c, 0x94, 0x1b, 0x85, 0x93, 0x24, 0x8f, - 0xda, 0x28, 0x5c, 0x49, 0x3e, 0x55, 0x1b, 0x85, 0x53, 0x84, 0xb1, 0x72, 0xa3, 0x70, 0x15, 0x79, - 0x50, 0x1b, 0x05, 0x44, 0x3e, 0x15, 0x1b, 0x85, 0xab, 0xd1, 0x13, 0x60, 0x6a, 0x19, 0x3b, 0x14, - 0x44, 0x54, 0x00, 0x79, 0x19, 0x3b, 0x61, 0xa3, 0xff, 0x4b, 0x32, 0x5c, 0xc9, 0x26, 0x8a, 0x4b, - 0x96, 0xb9, 0xb3, 0x8a, 0xb7, 0xb4, 0xd6, 0xe5, 0xf2, 0xc3, 0xae, 0xc1, 0x15, 0xde, 0xf3, 0x55, - 0x20, 0xdb, 0x0d, 0x3a, 0x23, 0xf2, 0x1c, 0x6b, 0x9f, 0x7a, 0x0b, 0x5d, 0x72, 0xb0, 0xd0, 0xc5, - 0x2c, 0xb2, 0x7f, 0x0a, 0x6b, 0x34, 0xb7, 0x36, 0x9d, 0xe9, 0x59, 0x9b, 0x76, 0x9b, 0x49, 0x17, - 0x5b, 0xb6, 0x69, 0x68, 0x9d, 0x3a, 0x73, 0x0a, 0xa0, 0x2b, 0x6a, 0xbd, 0xc9, 0xca, 0x0f, 0x79, - 0x2d, 0x83, 0x5a, 0x65, 0xcf, 0x8c, 0x9b, 0x0f, 0xf7, 0x56, 0x33, 0xa2, 0x91, 0x7c, 0xd4, 0x6f, - 0x24, 0x0d, 0xae, 0x91, 0xdc, 0x77, 0x00, 0xda, 0xc9, 0xda, 0x4b, 0x65, 0xb8, 0x89, 0x48, 0xe0, - 0x32, 0xeb, 0x2d, 0x85, 0xcb, 0xe8, 0x53, 0x12, 0x9c, 0x2c, 0x1b, 0xfd, 0xe6, 0x03, 0x61, 0x5d, - 0x78, 0x43, 0x18, 0x9a, 0x75, 0x5e, 0xa4, 0x77, 0xf6, 0xad, 0x76, 0x7f, 0x9a, 0x11, 0x12, 0xfd, - 0xb8, 0x2f, 0xd1, 0x3a, 0x27, 0xd1, 0x7b, 0x87, 0x27, 0x9d, 0x4c, 0xa0, 0xd5, 0x91, 0x76, 0x40, - 0x59, 0xf4, 0x65, 0x09, 0x8e, 0x51, 0xbf, 0x9e, 0xfb, 0xe9, 0xf4, 0x83, 0x74, 0xd9, 0xbc, 0x09, - 0xd5, 0x09, 0xa6, 0x2a, 0x54, 0xbf, 0x43, 0x29, 0xe8, 0xd5, 0x61, 0x81, 0x3f, 0xc0, 0x0b, 0x3c, - 0xa2, 0x33, 0xee, 0x2d, 0x2e, 0x42, 0xd6, 0x7f, 0xe4, 0xcb, 0xba, 0xca, 0xc9, 0xfa, 0xce, 0xa1, - 0xa8, 0x1e, 0xae, 0x98, 0xbf, 0x9a, 0x85, 0x27, 0x50, 0x0e, 0x99, 0x22, 0xd0, 0xce, 0xac, 0x68, - 0xb4, 0x55, 0x6c, 0x3b, 0x9a, 0xe5, 0x70, 0x47, 0xda, 0x7b, 0xe6, 0xb7, 0x99, 0x14, 0xe6, 0xb7, - 0xd2, 0xc0, 0xf9, 0x2d, 0x7a, 0x5b, 0xd8, 0x4a, 0x3b, 0xcf, 0x23, 0x5b, 0x8c, 0xc1, 0x20, 0xa2, - 0x86, 0x51, 0x2d, 0xca, 0x37, 0xdf, 0x7e, 0x98, 0x43, 0x79, 0xe9, 0xc0, 0x25, 0x24, 0x43, 0xfc, - 0x0f, 0x47, 0x6b, 0x4e, 0x67, 0xc3, 0xdf, 0x78, 0xdb, 0xaf, 0xd0, 0x4e, 0x75, 0x1e, 0xf4, 0xe2, - 0x49, 0x98, 0x22, 0x5d, 0xce, 0xaa, 0x6e, 0x5c, 0x74, 0xc7, 0xc6, 0x99, 0x2a, 0xbe, 0x54, 0xda, - 0xd6, 0x3a, 0x1d, 0x6c, 0x6c, 0x61, 0xf4, 0x10, 0x67, 0xa0, 0x6b, 0xdd, 0x6e, 0x35, 0xd8, 0x2a, - 0xf2, 0x5e, 0x95, 0x7b, 0x21, 0x67, 0xb7, 0xcc, 0x2e, 0x26, 0x82, 0x9a, 0x0b, 0x39, 0x97, 0xf0, - 0xcb, 0x5d, 0xc5, 0x5d, 0x67, 0x7b, 0x9e, 0x94, 0x55, 0xec, 0xea, 0x75, 0xf7, 0x07, 0x95, 0xfe, - 0xc7, 0xc6, 0xc9, 0xaf, 0xf4, 0xed, 0x8c, 0x33, 0x31, 0x9d, 0xb1, 0xcf, 0xf8, 0x7c, 0x98, 0xe9, - 0x88, 0x95, 0x8c, 0x33, 0x30, 0xdd, 0xf2, 0xb2, 0xf8, 0x67, 0x67, 0xc2, 0x49, 0xe8, 0x6f, 0x13, - 0x75, 0xd7, 0x42, 0x85, 0x27, 0xd3, 0x2a, 0x3c, 0x62, 0x7b, 0xf1, 0x04, 0x1c, 0x6b, 0xd4, 0x6a, - 0xcd, 0xb5, 0x62, 0xf5, 0xc1, 0xe0, 0xcc, 0xfa, 0x26, 0x7a, 0x59, 0x16, 0xe6, 0xea, 0x66, 0x67, - 0x0f, 0x07, 0x38, 0x57, 0x38, 0xa7, 0xac, 0xb0, 0x9c, 0x32, 0xfb, 0xe4, 0xa4, 0x9c, 0x84, 0xbc, - 0x66, 0xd8, 0x97, 0xb0, 0x67, 0xc3, 0xb3, 0x37, 0x06, 0xe3, 0x7b, 0xc3, 0x1d, 0x81, 0xca, 0xc3, - 0x78, 0xd7, 0x00, 0x49, 0xf2, 0x5c, 0x45, 0x00, 0x79, 0x16, 0x66, 0x6c, 0xba, 0x61, 0xdc, 0x08, - 0xf9, 0x05, 0x70, 0x69, 0x84, 0x45, 0xea, 0xb1, 0x20, 0x33, 0x16, 0xc9, 0x1b, 0x7a, 0x95, 0xdf, - 0x7f, 0x6c, 0x70, 0x10, 0x17, 0x0f, 0xc2, 0x58, 0x32, 0x90, 0x5f, 0x31, 0xea, 0x99, 0xf8, 0x29, - 0x38, 0xce, 0x9a, 0x7d, 0xb3, 0xb4, 0x52, 0x5c, 0x5d, 0x2d, 0x57, 0x97, 0xcb, 0xcd, 0xca, 0x22, - 0xdd, 0x80, 0x0a, 0x52, 0x8a, 0x8d, 0x46, 0x79, 0x6d, 0xbd, 0x51, 0x6f, 0x96, 0x9f, 0x55, 0x2a, - 0x97, 0x17, 0x89, 0x5b, 0x24, 0x39, 0xd7, 0xe4, 0x39, 0xb0, 0x16, 0xab, 0xf5, 0xf3, 0x65, 0xb5, - 0xb0, 0x7d, 0xb6, 0x08, 0xd3, 0xa1, 0x81, 0xc2, 0xe5, 0x6e, 0x11, 0x6f, 0x6a, 0xbb, 0x1d, 0x66, - 0x53, 0x17, 0x8e, 0xb8, 0xdc, 0x11, 0xd9, 0xd4, 0x8c, 0xce, 0xe5, 0x42, 0x46, 0x29, 0xc0, 0x4c, - 0x78, 0x4c, 0x28, 0x48, 0xe8, 0xcd, 0xd7, 0xc0, 0xd4, 0x79, 0xd3, 0xba, 0x48, 0x7c, 0xf9, 0xd0, - 0xbb, 0x68, 0x6c, 0x1b, 0xef, 0x94, 0x70, 0xc8, 0x00, 0x7b, 0x85, 0xb8, 0xc7, 0x88, 0x47, 0x6d, - 0x7e, 0xe0, 0x49, 0xe0, 0x33, 0x30, 0x7d, 0xc9, 0xcb, 0x1d, 0xb4, 0xf4, 0x50, 0x12, 0xfa, 0xef, - 0x62, 0x3e, 0x20, 0x83, 0x8b, 0x4c, 0xdf, 0x47, 0xe1, 0x4d, 0x12, 0xe4, 0x97, 0xb1, 0x53, 0xec, - 0x74, 0xc2, 0x72, 0x7b, 0xa9, 0xf0, 0xe9, 0x2e, 0xae, 0x12, 0xc5, 0x4e, 0x27, 0xba, 0x51, 0x85, - 0x04, 0xe4, 0x9d, 0x42, 0xe0, 0xd2, 0x04, 0x7d, 0x27, 0x07, 0x14, 0x98, 0xbe, 0xc4, 0xde, 0x2f, - 0xfb, 0x7e, 0x0e, 0x8f, 0x86, 0xcc, 0xa4, 0xdb, 0x82, 0xb8, 0x46, 0x99, 0x78, 0x7f, 0x09, 0x2f, - 0x9f, 0xf2, 0x00, 0x4c, 0xec, 0xda, 0xb8, 0xa4, 0xd9, 0xde, 0xd0, 0xc6, 0xd7, 0xb4, 0x76, 0xe1, - 0x21, 0xdc, 0x72, 0xe6, 0x2b, 0x3b, 0xee, 0xc4, 0x67, 0x83, 0x66, 0xf4, 0x43, 0x05, 0xb1, 0x77, - 0xd5, 0xa3, 0xe0, 0x4e, 0x1e, 0x2f, 0xe9, 0xce, 0x76, 0x69, 0x5b, 0x73, 0xd8, 0x8e, 0x85, 0xff, - 0x8e, 0x5e, 0x34, 0x04, 0x9c, 0xb1, 0x3b, 0xfc, 0x91, 0x87, 0x44, 0x13, 0x83, 0x38, 0x82, 0x6d, - 0xf9, 0x61, 0x40, 0xfc, 0x07, 0x09, 0xb2, 0xb5, 0x2e, 0x36, 0x84, 0x4f, 0x44, 0xf9, 0xb2, 0x95, - 0x7a, 0x64, 0xfb, 0x2a, 0x71, 0x0f, 0x41, 0xbf, 0xd2, 0x6e, 0xc9, 0x11, 0x92, 0xbd, 0x05, 0xb2, - 0xba, 0xb1, 0x69, 0x32, 0xcb, 0xf6, 0xea, 0x08, 0x5b, 0xa7, 0x62, 0x6c, 0x9a, 0x2a, 0xc9, 0x28, - 0xea, 0x1c, 0x18, 0x57, 0x76, 0xfa, 0xe2, 0xfe, 0xda, 0x24, 0xe4, 0xa9, 0x3a, 0xa3, 0x97, 0xc8, - 0x20, 0x17, 0xdb, 0xed, 0x08, 0xc1, 0x4b, 0xfb, 0x04, 0x6f, 0x92, 0xdf, 0x7c, 0x4c, 0xfc, 0x77, - 0x3e, 0xa0, 0x8d, 0x60, 0xdf, 0xce, 0x9a, 0x54, 0xb1, 0xdd, 0x8e, 0xf6, 0x43, 0xf6, 0x0b, 0x94, - 0xf8, 0x02, 0xc3, 0x2d, 0x5c, 0x16, 0x6b, 0xe1, 0x89, 0x07, 0x82, 0x48, 0xfe, 0xd2, 0x87, 0xe8, - 0x9f, 0x24, 0x98, 0x58, 0xd5, 0x6d, 0xc7, 0xc5, 0xa6, 0x28, 0x82, 0xcd, 0x35, 0x30, 0xe5, 0x89, - 0xc6, 0xed, 0xf2, 0xdc, 0xfe, 0x3c, 0x48, 0xe0, 0x67, 0xe2, 0xf7, 0xf3, 0xe8, 0x3c, 0x2d, 0xbe, - 0xf6, 0x8c, 0x8b, 0xe8, 0x93, 0x26, 0x41, 0xb1, 0x52, 0x6f, 0xb1, 0xbf, 0xed, 0x0b, 0x7c, 0x8d, - 0x13, 0xf8, 0x1d, 0xc3, 0x14, 0x99, 0xbe, 0xd0, 0x3f, 0x2d, 0x01, 0xb8, 0x65, 0xb3, 0xe3, 0x7c, - 0x4f, 0xe2, 0x0e, 0xe9, 0xc7, 0x48, 0xf7, 0x65, 0x61, 0xe9, 0xae, 0xf1, 0xd2, 0xfd, 0xc1, 0xc1, - 0x55, 0x8d, 0x3b, 0xb6, 0xa7, 0x14, 0x40, 0xd6, 0x7d, 0xd1, 0xba, 0x8f, 0xe8, 0x4d, 0xbe, 0x50, - 0xd7, 0x39, 0xa1, 0xde, 0x35, 0x64, 0x49, 0xe9, 0xcb, 0xf5, 0x2f, 0x25, 0x98, 0xa8, 0x63, 0xc7, - 0xed, 0x26, 0xd1, 0x39, 0x91, 0x1e, 0x3e, 0xd4, 0xb6, 0x25, 0xc1, 0xb6, 0xfd, 0xcd, 0x8c, 0x68, - 0xb0, 0x9f, 0x40, 0x32, 0x8c, 0xa7, 0x88, 0xd5, 0x87, 0x47, 0x85, 0x82, 0xfd, 0x0c, 0xa2, 0x96, - 0xbe, 0x74, 0xdf, 0x20, 0xf9, 0xee, 0x16, 0xfc, 0x69, 0x9b, 0xb0, 0x59, 0x9c, 0xd9, 0x6f, 0x16, - 0x8b, 0x9f, 0xb6, 0x09, 0xd7, 0x31, 0xda, 0x7b, 0x20, 0xb1, 0xb1, 0x31, 0x82, 0x8d, 0xfd, 0x61, - 0xe4, 0xf5, 0x5c, 0x19, 0xf2, 0x6c, 0x07, 0xe0, 0xde, 0xf8, 0x1d, 0x80, 0xc1, 0x53, 0x8b, 0x77, - 0x0e, 0x61, 0xca, 0xc5, 0x2d, 0xcb, 0xfb, 0x6c, 0x48, 0x21, 0x36, 0x6e, 0x86, 0x1c, 0x89, 0x46, - 0xca, 0xc6, 0xb9, 0xc0, 0x27, 0xc3, 0x23, 0x51, 0x76, 0xbf, 0xaa, 0x34, 0x53, 0x62, 0x14, 0x46, - 0xb0, 0x92, 0x3f, 0x0c, 0x0a, 0x6f, 0x57, 0x00, 0xd6, 0x77, 0x2f, 0x74, 0x74, 0x7b, 0x5b, 0x37, - 0xb6, 0xd0, 0xbf, 0x67, 0x60, 0x86, 0xbd, 0xd2, 0xa0, 0x9a, 0xb1, 0xe6, 0x5f, 0xa4, 0x51, 0x50, - 0x00, 0x79, 0xd7, 0xd2, 0xd9, 0x32, 0x80, 0xfb, 0xa8, 0xdc, 0xed, 0xbb, 0x67, 0x65, 0x7b, 0xc2, - 0x29, 0xb8, 0x62, 0x08, 0x38, 0x98, 0x0f, 0x95, 0x1e, 0xb8, 0x69, 0x85, 0x23, 0xa7, 0xe6, 0xf8, - 0xc8, 0xa9, 0xdc, 0x19, 0xcb, 0x7c, 0xcf, 0x19, 0x4b, 0x17, 0x47, 0x5b, 0x7f, 0x36, 0x26, 0xfe, - 0x3b, 0xb2, 0x4a, 0x9e, 0xdd, 0x3f, 0x1e, 0x32, 0x75, 0x83, 0x6c, 0xea, 0x30, 0xf7, 0xe1, 0x20, - 0x01, 0xbd, 0x2f, 0x98, 0xc8, 0x98, 0x82, 0x56, 0x70, 0x02, 0x31, 0x70, 0x65, 0x67, 0x7b, 0xcb, - 0xfe, 0xa0, 0x70, 0xa4, 0xb4, 0x90, 0xc0, 0x62, 0xa7, 0x24, 0x8c, 0x03, 0xc9, 0xe7, 0x20, 0xb4, - 0x2b, 0x1b, 0xd7, 0x9d, 0x0e, 0xa2, 0x9f, 0x4c, 0x31, 0x77, 0x86, 0x58, 0x7c, 0x51, 0x60, 0xce, - 0x3b, 0x79, 0x5a, 0x5b, 0xb8, 0xbf, 0x5c, 0x6a, 0x14, 0xf0, 0xfe, 0xd3, 0xa8, 0xe4, 0xdc, 0x29, - 0x3d, 0x63, 0x1a, 0x2c, 0xb0, 0xa0, 0xff, 0x29, 0x41, 0x9e, 0xd9, 0x0e, 0xf7, 0x1e, 0x10, 0x42, - 0xf4, 0xf2, 0x61, 0x20, 0x89, 0x0d, 0x00, 0xf0, 0xb1, 0xa4, 0x00, 0x8c, 0xc0, 0x5a, 0x78, 0x30, - 0x35, 0x00, 0xd0, 0xbf, 0x48, 0x90, 0x75, 0x6d, 0x1a, 0xb1, 0xe3, 0xd5, 0x1f, 0x15, 0x76, 0x55, - 0x0e, 0x09, 0xc0, 0x25, 0x1f, 0xa1, 0xdf, 0x0b, 0x30, 0xd5, 0xa5, 0x19, 0xfd, 0xc3, 0xfd, 0xd7, - 0x0b, 0xf4, 0x2c, 0x58, 0x0d, 0x7e, 0x43, 0xef, 0x10, 0x72, 0x77, 0x8e, 0xe7, 0x27, 0x19, 0x1c, - 0xe5, 0x51, 0x9c, 0xc4, 0xde, 0x44, 0xdf, 0x96, 0x00, 0x54, 0x6c, 0x9b, 0x9d, 0x3d, 0xbc, 0x61, - 0xe9, 0xe8, 0xea, 0x00, 0x00, 0xd6, 0xec, 0x33, 0x41, 0xb3, 0xff, 0x44, 0x58, 0xf0, 0xcb, 0xbc, - 0xe0, 0x6f, 0x8b, 0xd6, 0x3c, 0x8f, 0x78, 0x84, 0xf8, 0xef, 0x81, 0x09, 0x26, 0x47, 0x66, 0x20, - 0x8a, 0x09, 0xdf, 0xfb, 0x09, 0xbd, 0xdb, 0x17, 0xfd, 0xfd, 0x9c, 0xe8, 0x9f, 0x9e, 0x98, 0xa3, - 0x64, 0x00, 0x94, 0x86, 0x00, 0xe0, 0x28, 0x4c, 0x7b, 0x00, 0x6c, 0xa8, 0x95, 0x02, 0x46, 0x6f, - 0x95, 0x89, 0xcf, 0x03, 0x1d, 0xa9, 0x0e, 0xde, 0xd3, 0x7c, 0x59, 0x78, 0xe6, 0x1e, 0x92, 0x87, - 0x5f, 0x7e, 0x4a, 0x00, 0xfd, 0xa9, 0xd0, 0x54, 0x5d, 0x80, 0xa1, 0xc7, 0x4b, 0x7f, 0x75, 0xb6, - 0x0c, 0xb3, 0x9c, 0x89, 0xa1, 0x9c, 0x82, 0xe3, 0x5c, 0x02, 0x1d, 0xef, 0xda, 0x85, 0x23, 0x0a, - 0x82, 0x93, 0xdc, 0x17, 0xf6, 0x82, 0xdb, 0x85, 0x0c, 0xfa, 0xc0, 0x67, 0x32, 0xfe, 0xe2, 0xcd, - 0x3b, 0xb3, 0x6c, 0xd9, 0xec, 0xc3, 0x7c, 0x3c, 0xb9, 0x96, 0x69, 0x38, 0xf8, 0xe1, 0x90, 0xcf, - 0x89, 0x9f, 0x10, 0x6b, 0x35, 0x9c, 0x82, 0x09, 0xc7, 0x0a, 0xfb, 0xa1, 0x78, 0xaf, 0x61, 0xc5, - 0xca, 0xf1, 0x8a, 0x55, 0x85, 0xb3, 0xba, 0xd1, 0xea, 0xec, 0xb6, 0xb1, 0x8a, 0x3b, 0x9a, 0x2b, - 0x43, 0xbb, 0x68, 0x2f, 0xe2, 0x2e, 0x36, 0xda, 0xd8, 0x70, 0x28, 0x9f, 0xde, 0x79, 0x36, 0x81, - 0x9c, 0xbc, 0x32, 0xde, 0xcd, 0x2b, 0xe3, 0x93, 0xfa, 0xad, 0xc7, 0xc6, 0x2c, 0xde, 0xdd, 0x01, - 0x40, 0xeb, 0x76, 0x4e, 0xc7, 0x97, 0x98, 0x1a, 0x5e, 0xd5, 0xb3, 0x84, 0x57, 0xf3, 0x33, 0xa8, - 0xa1, 0xcc, 0xe8, 0x31, 0x5f, 0xfd, 0xee, 0xe3, 0xd4, 0xef, 0x66, 0x41, 0x16, 0x92, 0x69, 0x5d, - 0x77, 0x08, 0xad, 0x9b, 0x85, 0xa9, 0x60, 0x6b, 0x58, 0x56, 0xae, 0x82, 0x13, 0x9e, 0x4f, 0x6f, - 0xb5, 0x5c, 0x5e, 0xac, 0x37, 0x37, 0xd6, 0x97, 0xd5, 0xe2, 0x62, 0xb9, 0x00, 0xae, 0x7e, 0x52, - 0xbd, 0xf4, 0x5d, 0x71, 0xb3, 0xe8, 0x33, 0x12, 0xe4, 0xc8, 0x61, 0x4c, 0xf4, 0xa3, 0x23, 0xd2, - 0x1c, 0x9b, 0xf3, 0x60, 0xf2, 0xc7, 0x5d, 0xf1, 0x38, 0xef, 0x4c, 0x98, 0x84, 0xab, 0x03, 0xc5, - 0x79, 0x8f, 0x21, 0x94, 0xfe, 0xb4, 0xc6, 0x6d, 0x92, 0xf5, 0x6d, 0xf3, 0xd2, 0xf7, 0x72, 0x93, - 0x74, 0xeb, 0x7f, 0xc8, 0x4d, 0xb2, 0x0f, 0x0b, 0x63, 0x6f, 0x92, 0x7d, 0xda, 0x5d, 0x4c, 0x33, - 0x45, 0xcf, 0xc9, 0xf9, 0xf3, 0xbf, 0xe7, 0x49, 0x07, 0xda, 0xc8, 0x2a, 0xc2, 0xac, 0x6e, 0x38, - 0xd8, 0x32, 0xb4, 0xce, 0x52, 0x47, 0xdb, 0xf2, 0xec, 0xd3, 0xde, 0xdd, 0x8b, 0x4a, 0x28, 0x8f, - 0xca, 0xff, 0xa1, 0x9c, 0x06, 0x70, 0xf0, 0x4e, 0xb7, 0xa3, 0x39, 0x81, 0xea, 0x85, 0x52, 0xc2, - 0xda, 0x97, 0xe5, 0xb5, 0xef, 0x56, 0xb8, 0x82, 0x82, 0xd6, 0xb8, 0xdc, 0xc5, 0x1b, 0x86, 0xfe, - 0x63, 0xbb, 0x24, 0xfc, 0x28, 0xd5, 0xd1, 0x7e, 0x9f, 0xb8, 0xed, 0x9c, 0x7c, 0xcf, 0x76, 0xce, - 0x3f, 0x08, 0x87, 0x35, 0xf1, 0x5a, 0xfd, 0x80, 0xb0, 0x26, 0x7e, 0x4b, 0x93, 0x7b, 0x5a, 0x9a, - 0xbf, 0xc8, 0x92, 0x15, 0x58, 0x64, 0x09, 0xa3, 0x92, 0x13, 0x5c, 0xa0, 0x7c, 0xa5, 0x50, 0xdc, - 0x94, 0xb8, 0x6a, 0x8c, 0x61, 0x01, 0x5c, 0x86, 0x39, 0x5a, 0xf4, 0x82, 0x69, 0x5e, 0xdc, 0xd1, - 0xac, 0x8b, 0xc8, 0x3a, 0x90, 0x2a, 0xc6, 0xee, 0x25, 0x45, 0x6e, 0x90, 0x7e, 0x5c, 0x78, 0xce, - 0xc0, 0x89, 0xcb, 0xe3, 0x79, 0x3c, 0x9b, 0x49, 0xaf, 0x13, 0x9a, 0x42, 0x88, 0x30, 0x98, 0x3e, - 0xae, 0x7f, 0xec, 0xe3, 0xea, 0x75, 0xf4, 0xe1, 0x75, 0xf8, 0x51, 0xe2, 0x8a, 0xbe, 0x30, 0x1c, - 0x76, 0x1e, 0x5f, 0x43, 0x60, 0x57, 0x00, 0xf9, 0xa2, 0xef, 0xfa, 0xe3, 0x3e, 0x86, 0x2b, 0x94, - 0x4d, 0x0f, 0xcd, 0x08, 0x96, 0xc7, 0x82, 0xe6, 0x71, 0x9e, 0x85, 0x5a, 0x37, 0x55, 0x4c, 0x3f, - 0x2f, 0xbc, 0xbf, 0xd5, 0x57, 0x40, 0x94, 0xbb, 0xf1, 0xb4, 0x4a, 0xb1, 0xcd, 0x31, 0x71, 0x36, - 0xd3, 0x47, 0xf3, 0x85, 0x39, 0x98, 0xf2, 0x02, 0xcf, 0x90, 0x7b, 0x91, 0x7c, 0x0c, 0x4f, 0x42, - 0xde, 0x36, 0x77, 0xad, 0x16, 0x66, 0x3b, 0x8e, 0xec, 0x6d, 0x88, 0xdd, 0xb1, 0x81, 0xe3, 0xf9, - 0x3e, 0x93, 0x21, 0x9b, 0xd8, 0x64, 0x88, 0x36, 0x48, 0xe3, 0x06, 0xf8, 0x17, 0x09, 0x07, 0xb3, - 0xe7, 0x30, 0xab, 0x63, 0xe7, 0xf1, 0x38, 0xc6, 0xff, 0x81, 0xd0, 0xde, 0xcb, 0x80, 0x9a, 0x24, - 0x53, 0xb9, 0xda, 0x10, 0x86, 0xea, 0xd5, 0x70, 0xa5, 0x97, 0x83, 0x59, 0xa8, 0xc4, 0x22, 0xdd, - 0x50, 0x57, 0x0b, 0x32, 0x7a, 0x6e, 0x16, 0x0a, 0x94, 0xb5, 0x9a, 0x6f, 0xac, 0xa1, 0x97, 0x66, - 0x0e, 0xdb, 0x22, 0x8d, 0x9e, 0x62, 0x7e, 0x52, 0x12, 0x0d, 0x98, 0xcb, 0x09, 0x3e, 0xa8, 0x5d, - 0x84, 0x26, 0x0d, 0xd1, 0xcc, 0x62, 0x94, 0x0f, 0xfd, 0x56, 0x46, 0x24, 0xfe, 0xae, 0x18, 0x8b, - 0x63, 0x08, 0x96, 0x94, 0xf5, 0xe2, 0x87, 0x2d, 0x59, 0xe6, 0xce, 0x86, 0xd5, 0x41, 0xff, 0xa7, - 0x50, 0x78, 0xf3, 0x08, 0xf3, 0x5f, 0x8a, 0x36, 0xff, 0xc9, 0x92, 0x71, 0x27, 0xd8, 0xab, 0xea, - 0x0c, 0x31, 0x7c, 0x2b, 0x37, 0xc0, 0x9c, 0xd6, 0x6e, 0xaf, 0x6b, 0x5b, 0xb8, 0xe4, 0xce, 0xab, - 0x0d, 0x87, 0xc5, 0x16, 0xea, 0x49, 0x8d, 0xed, 0x8a, 0xc4, 0xd7, 0x41, 0x39, 0x90, 0x98, 0x7c, - 0xc6, 0x32, 0xbc, 0xb9, 0x43, 0x42, 0x6b, 0x5b, 0x0b, 0x22, 0x9d, 0xb1, 0x37, 0x41, 0xcf, 0x26, - 0x01, 0xbe, 0xd3, 0xd7, 0xac, 0xdf, 0x93, 0x60, 0xc2, 0x95, 0x77, 0xb1, 0xdd, 0x46, 0x4f, 0xe4, - 0x02, 0x02, 0x46, 0xfa, 0x96, 0xfd, 0xb4, 0xb0, 0x53, 0x9f, 0x57, 0x43, 0x4a, 0x3f, 0x02, 0x93, - 0x40, 0x88, 0x12, 0x27, 0x44, 0x31, 0xdf, 0xbd, 0xd8, 0x22, 0xd2, 0x17, 0xdf, 0x47, 0x25, 0x98, - 0xf5, 0xe6, 0x11, 0x4b, 0xd8, 0x69, 0x6d, 0xa3, 0x3b, 0x44, 0x17, 0x9a, 0x58, 0x4b, 0xf3, 0xf7, - 0x64, 0x3b, 0xe8, 0x3b, 0x99, 0x84, 0x2a, 0xcf, 0x95, 0x1c, 0xb1, 0x4a, 0x97, 0x48, 0x17, 0xe3, - 0x08, 0xa6, 0x2f, 0xcc, 0xc7, 0x24, 0x80, 0x86, 0xe9, 0xcf, 0x75, 0x0f, 0x20, 0xc9, 0x5f, 0x10, - 0xde, 0xae, 0x65, 0x15, 0x0f, 0x8a, 0x4d, 0xde, 0x73, 0x08, 0xba, 0x26, 0x0d, 0x2a, 0x69, 0x2c, - 0x6d, 0x7d, 0x6a, 0x71, 0xb7, 0xdb, 0xd1, 0x5b, 0x9a, 0xd3, 0xeb, 0x4f, 0x17, 0x2d, 0x5e, 0x72, - 0x69, 0x68, 0x22, 0xa3, 0xd0, 0x2f, 0x23, 0x42, 0x96, 0x34, 0xf4, 0x8c, 0xe4, 0x85, 0x9e, 0x11, - 0xf4, 0x91, 0x19, 0x40, 0x7c, 0x0c, 0xea, 0x29, 0xc3, 0xd1, 0x5a, 0x17, 0x1b, 0x0b, 0x16, 0xd6, - 0xda, 0x2d, 0x6b, 0x77, 0xe7, 0x82, 0x1d, 0x76, 0x06, 0x8d, 0xd7, 0xd1, 0xd0, 0xd2, 0xb1, 0xc4, - 0x2d, 0x1d, 0xa3, 0x9f, 0x92, 0x45, 0x03, 0x21, 0x85, 0x36, 0x38, 0x42, 0x3c, 0x0c, 0x31, 0xd4, - 0x25, 0x72, 0x61, 0xea, 0x59, 0x25, 0xce, 0x26, 0x59, 0x25, 0x7e, 0xbd, 0x50, 0x58, 0x25, 0xa1, - 0x7a, 0x8d, 0xc5, 0x13, 0x6d, 0xae, 0x8e, 0x9d, 0x08, 0x78, 0xaf, 0x87, 0xd9, 0x0b, 0xc1, 0x17, - 0x1f, 0x62, 0x3e, 0xb1, 0x8f, 0x7f, 0xe8, 0x1b, 0x92, 0xae, 0xc0, 0xf0, 0x2c, 0x44, 0xa0, 0xeb, - 0x23, 0x28, 0x89, 0x38, 0xa1, 0x25, 0x5a, 0x4e, 0x89, 0x2d, 0x3f, 0x7d, 0x14, 0x3e, 0x28, 0xc1, - 0x34, 0xb9, 0x0a, 0x75, 0xe1, 0x32, 0x39, 0x16, 0x29, 0x68, 0x94, 0xbc, 0x30, 0x2c, 0x66, 0x05, - 0xb2, 0x1d, 0xdd, 0xb8, 0xe8, 0x79, 0x0f, 0xba, 0xcf, 0xc1, 0xc5, 0x7a, 0x52, 0x9f, 0x8b, 0xf5, - 0xfc, 0x7d, 0x0a, 0xbf, 0xdc, 0x03, 0xdd, 0xf4, 0x3c, 0x90, 0x5c, 0xfa, 0x62, 0xfc, 0xbb, 0x2c, - 0xe4, 0xeb, 0x58, 0xb3, 0x5a, 0xdb, 0xe8, 0x9d, 0x52, 0xdf, 0xa9, 0xc2, 0x24, 0x3f, 0x55, 0x58, - 0x82, 0x89, 0x4d, 0xbd, 0xe3, 0x60, 0x8b, 0x7a, 0x54, 0x87, 0xbb, 0x76, 0xda, 0xc4, 0x17, 0x3a, - 0x66, 0xeb, 0xe2, 0x3c, 0x33, 0xdd, 0xe7, 0xbd, 0x40, 0xac, 0xf3, 0x4b, 0xe4, 0x27, 0xd5, 0xfb, - 0xd9, 0x35, 0x08, 0x6d, 0xd3, 0x72, 0xa2, 0xee, 0xd8, 0x88, 0xa0, 0x52, 0x37, 0x2d, 0x47, 0xa5, - 0x3f, 0xba, 0x30, 0x6f, 0xee, 0x76, 0x3a, 0x0d, 0xfc, 0xb0, 0xe3, 0x4d, 0xdb, 0xbc, 0x77, 0xd7, - 0x58, 0x34, 0x37, 0x37, 0x6d, 0x4c, 0x17, 0x0d, 0x72, 0x2a, 0x7b, 0x53, 0x8e, 0x43, 0xae, 0xa3, - 0xef, 0xe8, 0x74, 0xa2, 0x91, 0x53, 0xe9, 0x8b, 0x72, 0x13, 0x14, 0x82, 0x39, 0x0e, 0x65, 0xf4, - 0x54, 0x9e, 0x34, 0xcd, 0x7d, 0xe9, 0xae, 0xce, 0x5c, 0xc4, 0x97, 0xed, 0x53, 0x13, 0xe4, 0x3b, - 0x79, 0xe6, 0x8f, 0xaf, 0x88, 0xec, 0x77, 0x50, 0x89, 0x47, 0xcf, 0x60, 0x2d, 0xdc, 0x32, 0xad, - 0xb6, 0x27, 0x9b, 0xe8, 0x09, 0x06, 0xcb, 0x97, 0x6c, 0x97, 0xa2, 0x6f, 0xe1, 0xe9, 0x6b, 0xda, - 0xdb, 0xf2, 0x6e, 0xb7, 0xe9, 0x16, 0x7d, 0x5e, 0x77, 0xb6, 0xd7, 0xb0, 0xa3, 0xa1, 0xbf, 0x93, - 0xfb, 0x6a, 0xdc, 0xf4, 0xff, 0xa7, 0x71, 0x03, 0x34, 0x8e, 0x86, 0xc1, 0x72, 0x76, 0x2d, 0xc3, - 0x95, 0x23, 0xf3, 0x4a, 0x0d, 0xa5, 0x28, 0x77, 0xc1, 0x55, 0xc1, 0x9b, 0xb7, 0x54, 0xba, 0xc8, - 0xa6, 0xad, 0x53, 0x24, 0x7b, 0x74, 0x06, 0x65, 0x1d, 0xae, 0xa3, 0x1f, 0x57, 0x1a, 0x6b, 0xab, - 0x2b, 0xfa, 0xd6, 0x76, 0x47, 0xdf, 0xda, 0x76, 0xec, 0x8a, 0x61, 0x3b, 0x58, 0x6b, 0xd7, 0x36, - 0x55, 0x7a, 0x3b, 0x0e, 0x10, 0x3a, 0x22, 0x59, 0x79, 0x8f, 0x6b, 0xb1, 0xd1, 0x2d, 0xac, 0x29, - 0x11, 0x2d, 0xe5, 0xe9, 0x6e, 0x4b, 0xb1, 0x77, 0x3b, 0x3e, 0xa6, 0xd7, 0xf4, 0x60, 0x1a, 0xa8, - 0xfa, 0x6e, 0x87, 0x34, 0x17, 0x92, 0x39, 0xe9, 0x38, 0x17, 0xc3, 0x49, 0xfa, 0xcd, 0xe6, 0xff, - 0xc9, 0x43, 0x6e, 0xd9, 0xd2, 0xba, 0xdb, 0xe8, 0xb9, 0xa1, 0xfe, 0x79, 0x54, 0x6d, 0xc2, 0xd7, - 0x4e, 0x69, 0x90, 0x76, 0xca, 0x03, 0xb4, 0x33, 0x1b, 0xd2, 0xce, 0xe8, 0x45, 0xe5, 0xb3, 0x30, - 0xd3, 0x32, 0x3b, 0x1d, 0xdc, 0x72, 0xe5, 0x51, 0x69, 0x93, 0xd5, 0x9c, 0x29, 0x95, 0x4b, 0x23, - 0xc1, 0xaa, 0xb1, 0x53, 0xa7, 0x6b, 0xe8, 0x54, 0xe9, 0x83, 0x04, 0xf4, 0x52, 0x09, 0xb2, 0xe5, - 0xf6, 0x16, 0xe6, 0xd6, 0xd9, 0x33, 0xa1, 0x75, 0xf6, 0x93, 0x90, 0x77, 0x34, 0x6b, 0x0b, 0x3b, - 0xde, 0x3a, 0x01, 0x7d, 0xf3, 0x63, 0x68, 0xcb, 0xa1, 0x18, 0xda, 0x3f, 0x08, 0x59, 0x57, 0x66, - 0xcc, 0xc9, 0xfc, 0xba, 0x7e, 0xf0, 0x13, 0xd9, 0xcf, 0xbb, 0x25, 0xce, 0xbb, 0xb5, 0x56, 0xc9, - 0x0f, 0xbd, 0x58, 0xe7, 0xf6, 0x61, 0x4d, 0x2e, 0xfa, 0x6c, 0x99, 0x46, 0x65, 0x47, 0xdb, 0xc2, - 0xac, 0x9a, 0x41, 0x82, 0xf7, 0xb5, 0xbc, 0x63, 0x3e, 0xa4, 0xb3, 0x68, 0x91, 0x41, 0x82, 0x5b, - 0x85, 0x6d, 0xbd, 0xdd, 0xc6, 0x06, 0x6b, 0xd9, 0xec, 0xed, 0xec, 0x69, 0xc8, 0xba, 0x3c, 0xb8, - 0xfa, 0xe3, 0x1a, 0x0b, 0x85, 0x23, 0xca, 0x8c, 0xdb, 0xac, 0x68, 0xe3, 0x2d, 0x64, 0xf8, 0x35, - 0x55, 0x11, 0xb7, 0x1d, 0x5a, 0xb9, 0xfe, 0x8d, 0xeb, 0x29, 0x90, 0x33, 0xcc, 0x36, 0x1e, 0x38, - 0x08, 0xd1, 0x5c, 0xca, 0xd3, 0x20, 0x87, 0xdb, 0x6e, 0xaf, 0x20, 0x93, 0xec, 0xa7, 0xe3, 0x65, - 0xa9, 0xd2, 0xcc, 0xc9, 0x7c, 0x83, 0xfa, 0x71, 0x9b, 0x7e, 0x03, 0xfc, 0xd9, 0x09, 0x38, 0x4a, - 0xfb, 0x80, 0xfa, 0xee, 0x05, 0x97, 0xd4, 0x05, 0x8c, 0x1e, 0xed, 0x3f, 0x70, 0x1d, 0xe5, 0x95, - 0xfd, 0x38, 0xe4, 0xec, 0xdd, 0x0b, 0xbe, 0x11, 0x4a, 0x5f, 0xc2, 0x4d, 0x57, 0x1a, 0xc9, 0x70, - 0x26, 0x0f, 0x3b, 0x9c, 0x71, 0x43, 0x93, 0xec, 0x35, 0xfe, 0x60, 0x20, 0xa3, 0xc7, 0x23, 0xbc, - 0x81, 0xac, 0xdf, 0x30, 0x74, 0x0a, 0x26, 0xb4, 0x4d, 0x07, 0x5b, 0x81, 0x99, 0xc8, 0x5e, 0xdd, - 0xa1, 0xf2, 0x02, 0xde, 0x34, 0x2d, 0x57, 0x2c, 0x34, 0x84, 0xba, 0xff, 0x1e, 0x6a, 0xb9, 0xc0, - 0xed, 0x90, 0xdd, 0x0c, 0xc7, 0x0c, 0x73, 0x11, 0x77, 0x99, 0x9c, 0x29, 0x8a, 0xb3, 0xa4, 0x05, - 0xec, 0xff, 0xb0, 0xaf, 0x2b, 0x99, 0xdb, 0xdf, 0x95, 0xa0, 0x4f, 0x24, 0x9d, 0x33, 0xf7, 0x00, - 0x3d, 0x32, 0x0b, 0x4d, 0x79, 0x26, 0xcc, 0xb4, 0x99, 0x8b, 0x56, 0x4b, 0xf7, 0x5b, 0x49, 0xe4, - 0x7f, 0x5c, 0xe6, 0x40, 0x91, 0xb2, 0x61, 0x45, 0x5a, 0x86, 0x49, 0x72, 0x90, 0xd9, 0xd5, 0xa4, - 0x5c, 0x8f, 0x4b, 0x3c, 0x99, 0xd6, 0xf9, 0x95, 0x0a, 0x89, 0x6d, 0xbe, 0xc4, 0x7e, 0x51, 0xfd, - 0x9f, 0x93, 0xcd, 0xbe, 0xe3, 0x25, 0x94, 0x7e, 0x73, 0xfc, 0xed, 0x3c, 0x5c, 0x55, 0xb2, 0x4c, - 0xdb, 0x26, 0x67, 0x60, 0x7a, 0x1b, 0xe6, 0x6b, 0x25, 0xee, 0x36, 0x8d, 0xc7, 0x75, 0xf3, 0xeb, - 0xd7, 0xa0, 0xc6, 0xd7, 0x34, 0xbe, 0x2c, 0x1c, 0x02, 0xc6, 0xdf, 0x7f, 0x88, 0x10, 0xfa, 0xf7, - 0x46, 0x23, 0x79, 0x5b, 0x46, 0x24, 0x2a, 0x4d, 0x42, 0x59, 0xa5, 0xdf, 0x5c, 0x3e, 0x2f, 0xc1, - 0xd5, 0xbd, 0xdc, 0x6c, 0x18, 0xb6, 0xdf, 0x60, 0xae, 0x1d, 0xd0, 0x5e, 0xf8, 0x28, 0x26, 0xb1, - 0xf7, 0x58, 0x46, 0xd4, 0x3d, 0x54, 0x5a, 0xc4, 0x62, 0x49, 0x70, 0xa2, 0x26, 0xee, 0x1e, 0xcb, - 0xc4, 0xe4, 0xd3, 0x17, 0xee, 0x27, 0xb3, 0x70, 0x74, 0xd9, 0x32, 0x77, 0xbb, 0x76, 0xd0, 0x03, - 0xfd, 0x75, 0xff, 0x0d, 0xd7, 0xbc, 0x88, 0x69, 0x70, 0x06, 0xa6, 0x2d, 0x66, 0xcd, 0x05, 0xdb, - 0xaf, 0xe1, 0xa4, 0x70, 0xef, 0x25, 0x1f, 0xa4, 0xf7, 0x0a, 0xfa, 0x99, 0x2c, 0xd7, 0xcf, 0xf4, - 0xf6, 0x1c, 0xb9, 0x3e, 0x3d, 0xc7, 0x5f, 0x49, 0x09, 0x07, 0xd5, 0x1e, 0x11, 0x45, 0xf4, 0x17, - 0x25, 0xc8, 0x6f, 0x91, 0x8c, 0xac, 0xbb, 0x78, 0xb2, 0x58, 0xcd, 0x08, 0x71, 0x95, 0xfd, 0x1a, - 0xc8, 0x55, 0x0e, 0xeb, 0x70, 0xa2, 0x01, 0x2e, 0x9e, 0xdb, 0xf4, 0x95, 0xea, 0x55, 0x59, 0x98, - 0xf1, 0x4b, 0xaf, 0xb4, 0x6d, 0xf4, 0xc2, 0xfe, 0x1a, 0x35, 0x2b, 0xa2, 0x51, 0xfb, 0xd6, 0x99, - 0xfd, 0x51, 0x47, 0x0e, 0x8d, 0x3a, 0x7d, 0x47, 0x97, 0x99, 0x88, 0xd1, 0x05, 0x3d, 0x47, 0x16, - 0xbd, 0x8f, 0x8a, 0xef, 0x5a, 0x49, 0x6d, 0x1e, 0xcf, 0x83, 0x85, 0xe0, 0xad, 0x58, 0x83, 0x6b, - 0x95, 0xbe, 0x92, 0xbc, 0x47, 0x82, 0x63, 0xfb, 0x3b, 0xf3, 0xef, 0xe3, 0xbd, 0xd0, 0xdc, 0x3a, - 0xd9, 0xbe, 0x17, 0x1a, 0x79, 0xe3, 0x37, 0xe9, 0x62, 0x43, 0x8a, 0x70, 0xf6, 0xde, 0xe0, 0x4e, - 0x5c, 0x2c, 0x68, 0x88, 0x20, 0xd1, 0xf4, 0x05, 0xf8, 0x8b, 0x32, 0x4c, 0xd5, 0xb1, 0xb3, 0xaa, - 0x5d, 0x36, 0x77, 0x1d, 0xa4, 0x89, 0x6e, 0xcf, 0x3d, 0x03, 0xf2, 0x1d, 0xf2, 0x0b, 0xbb, 0xe6, - 0xff, 0x4c, 0xdf, 0xfd, 0x2d, 0xe2, 0xfb, 0x43, 0x49, 0xab, 0x2c, 0x3f, 0x1f, 0xcb, 0x45, 0x64, - 0x77, 0xd4, 0xe7, 0x6e, 0x24, 0x5b, 0x3b, 0x89, 0xf6, 0x4e, 0xa3, 0x8a, 0x4e, 0x1f, 0x96, 0x9f, - 0x92, 0x61, 0xb6, 0x8e, 0x9d, 0x8a, 0xbd, 0xa4, 0xed, 0x99, 0x96, 0xee, 0xe0, 0xf0, 0x3d, 0x9f, - 0xf1, 0xd0, 0x9c, 0x06, 0xd0, 0xfd, 0xdf, 0x58, 0x84, 0xa9, 0x50, 0x0a, 0xfa, 0xad, 0xa4, 0x8e, - 0x42, 0x1c, 0x1f, 0x23, 0x01, 0x21, 0x91, 0x8f, 0x45, 0x5c, 0xf1, 0xe9, 0x03, 0xf1, 0x39, 0x89, - 0x01, 0x51, 0xb4, 0x5a, 0xdb, 0xfa, 0x1e, 0x6e, 0x27, 0x04, 0xc2, 0xfb, 0x2d, 0x00, 0xc2, 0x27, - 0x94, 0xd8, 0x7d, 0x85, 0xe3, 0x63, 0x14, 0xee, 0x2b, 0x71, 0x04, 0xc7, 0x12, 0x24, 0xca, 0xed, - 0x7a, 0xd8, 0x7a, 0xe6, 0xbd, 0xa2, 0x62, 0x0d, 0x4c, 0x36, 0x29, 0x6c, 0xb2, 0x0d, 0xd5, 0xb1, - 0xd0, 0xb2, 0x07, 0xe9, 0x74, 0x36, 0x8d, 0x8e, 0xa5, 0x6f, 0xd1, 0xe9, 0x0b, 0xfd, 0x1d, 0x32, - 0x9c, 0xf0, 0xa3, 0xa7, 0xd4, 0xb1, 0xb3, 0xa8, 0xd9, 0xdb, 0x17, 0x4c, 0xcd, 0x6a, 0xa3, 0xd2, - 0x08, 0x4e, 0xfc, 0xa1, 0xcf, 0x86, 0x41, 0xa8, 0xf2, 0x20, 0xf4, 0x75, 0x15, 0xed, 0xcb, 0xcb, - 0x28, 0x3a, 0x99, 0x58, 0x6f, 0xd6, 0xdf, 0xf1, 0xc1, 0xfa, 0x21, 0x0e, 0xac, 0xbb, 0x87, 0x65, - 0x31, 0x7d, 0xe0, 0x7e, 0x85, 0x8e, 0x08, 0x21, 0xaf, 0xe6, 0x07, 0x45, 0x01, 0x8b, 0xf0, 0x6a, - 0x95, 0x23, 0xbd, 0x5a, 0x87, 0x1a, 0x23, 0x06, 0x7a, 0x24, 0xa7, 0x3b, 0x46, 0x1c, 0xa2, 0xb7, - 0xf1, 0x5b, 0x64, 0x28, 0x90, 0xf0, 0x59, 0x21, 0x8f, 0xef, 0x70, 0x34, 0xea, 0x78, 0x74, 0xf6, - 0x79, 0x97, 0x4f, 0x24, 0xf5, 0x2e, 0x47, 0x6f, 0x4e, 0xea, 0x43, 0xde, 0xcb, 0xed, 0x48, 0x10, - 0x4b, 0xe4, 0x22, 0x3e, 0x80, 0x83, 0xf4, 0x41, 0xfb, 0x6f, 0x32, 0x80, 0xdb, 0xa0, 0xd9, 0xd9, - 0x87, 0x67, 0x89, 0xc2, 0x75, 0x4b, 0xd8, 0xaf, 0xde, 0x05, 0xea, 0x44, 0x0f, 0x50, 0x94, 0x62, - 0x70, 0xaa, 0xe2, 0xd1, 0xa4, 0xbe, 0x95, 0x01, 0x57, 0x23, 0x81, 0x25, 0x91, 0xb7, 0x65, 0x64, - 0xd9, 0xe9, 0x03, 0xf2, 0x3f, 0x24, 0xc8, 0x35, 0xcc, 0x3a, 0x76, 0x0e, 0x6e, 0x0a, 0x24, 0x3e, - 0xb6, 0x4f, 0xca, 0x1d, 0xc5, 0xb1, 0xfd, 0x7e, 0x84, 0xc6, 0x10, 0x8d, 0x4c, 0x82, 0x99, 0x86, - 0x59, 0xf2, 0x17, 0xa7, 0xc4, 0x7d, 0x55, 0xc5, 0xef, 0xd4, 0xf6, 0x2b, 0x18, 0x14, 0x73, 0xa0, - 0x3b, 0xb5, 0x07, 0xd3, 0x4b, 0x5f, 0x6e, 0x77, 0xc0, 0xd1, 0x0d, 0xa3, 0x6d, 0xaa, 0xb8, 0x6d, - 0xb2, 0x95, 0x6e, 0x45, 0x81, 0xec, 0xae, 0xd1, 0x36, 0x09, 0xcb, 0x39, 0x95, 0x3c, 0xbb, 0x69, - 0x16, 0x6e, 0x9b, 0xcc, 0x37, 0x80, 0x3c, 0xa3, 0x2f, 0xcb, 0x90, 0x75, 0xff, 0x15, 0x17, 0xf5, - 0x5b, 0xe4, 0x84, 0x81, 0x08, 0x5c, 0xf2, 0x23, 0xb1, 0x84, 0xee, 0x0d, 0xad, 0xfd, 0x53, 0x0f, - 0xd6, 0xeb, 0xa2, 0xca, 0x0b, 0x89, 0x22, 0x58, 0xf3, 0x57, 0x4e, 0xc1, 0xc4, 0x85, 0x8e, 0xd9, - 0xba, 0x18, 0x9c, 0x97, 0x67, 0xaf, 0xca, 0x4d, 0x90, 0xb3, 0x34, 0x63, 0x0b, 0xb3, 0x3d, 0x85, - 0xe3, 0x3d, 0x7d, 0x21, 0xf1, 0x7a, 0x51, 0x69, 0x16, 0xf4, 0xe6, 0x24, 0x21, 0x10, 0xfa, 0x54, - 0x3e, 0x99, 0x3e, 0x2c, 0x0e, 0x71, 0xb2, 0xac, 0x00, 0x33, 0xa5, 0x22, 0xbd, 0xbd, 0x7e, 0xad, - 0x76, 0xae, 0x5c, 0x90, 0x09, 0xcc, 0xae, 0x4c, 0x52, 0x84, 0xd9, 0x25, 0xff, 0x3d, 0x0b, 0x73, - 0x9f, 0xca, 0x1f, 0x06, 0xcc, 0x1f, 0x95, 0x60, 0x76, 0x55, 0xb7, 0x9d, 0x28, 0x6f, 0xff, 0x98, - 0xe8, 0xb9, 0x2f, 0x4a, 0x6a, 0x2a, 0x73, 0xe5, 0x08, 0x87, 0xcd, 0x4d, 0x64, 0x0e, 0xc7, 0x15, - 0x31, 0x9e, 0x63, 0x29, 0x84, 0x03, 0x7a, 0x87, 0xb4, 0xb0, 0x24, 0x13, 0x1b, 0x4a, 0x41, 0x21, - 0xe3, 0x37, 0x94, 0x22, 0xcb, 0x4e, 0x5f, 0xbe, 0x5f, 0x96, 0xe0, 0x98, 0x5b, 0x7c, 0xdc, 0xb2, - 0x54, 0xb4, 0x98, 0x07, 0x2e, 0x4b, 0x25, 0x5e, 0x19, 0xdf, 0xc7, 0xcb, 0x28, 0x56, 0xc6, 0x07, - 0x11, 0x1d, 0xb3, 0x98, 0x23, 0x96, 0x61, 0x07, 0x89, 0x39, 0x66, 0x19, 0x76, 0x78, 0x31, 0xc7, - 0x2f, 0xc5, 0x0e, 0x29, 0xe6, 0x43, 0x5b, 0x60, 0x7d, 0x8d, 0xec, 0x8b, 0x39, 0x72, 0x6d, 0x23, - 0x46, 0xcc, 0x89, 0x4f, 0xec, 0xa2, 0xb7, 0x0e, 0x29, 0xf8, 0x11, 0xaf, 0x6f, 0x0c, 0x03, 0xd3, - 0x21, 0xae, 0x71, 0xfc, 0xaa, 0x0c, 0x73, 0x8c, 0x8b, 0xfe, 0x53, 0xe6, 0x18, 0x8c, 0x12, 0x4f, - 0x99, 0x13, 0x9f, 0x01, 0xe2, 0x39, 0x1b, 0xff, 0x19, 0xa0, 0xd8, 0xf2, 0xd3, 0x07, 0xe7, 0x2b, - 0x59, 0x38, 0xe9, 0xb2, 0xb0, 0x66, 0xb6, 0xf5, 0xcd, 0xcb, 0x94, 0x8b, 0x73, 0x5a, 0x67, 0x17, - 0xdb, 0xe8, 0x5d, 0x92, 0x28, 0x4a, 0xff, 0x09, 0xc0, 0xec, 0x62, 0x8b, 0x06, 0x52, 0x63, 0x40, - 0xdd, 0x15, 0x55, 0xd9, 0xfd, 0x25, 0xf9, 0x97, 0xc9, 0xd4, 0x3c, 0x22, 0x6a, 0x88, 0x9e, 0x6b, - 0x15, 0x4e, 0xf9, 0x5f, 0x7a, 0x1d, 0x3c, 0x32, 0xfb, 0x1d, 0x3c, 0x6e, 0x04, 0x59, 0x6b, 0xb7, - 0x7d, 0xa8, 0x7a, 0x37, 0xb3, 0x49, 0x99, 0xaa, 0x9b, 0xc5, 0xcd, 0x69, 0xe3, 0xe0, 0x68, 0x5e, - 0x44, 0x4e, 0x1b, 0x3b, 0xca, 0x3c, 0xe4, 0xe9, 0x0d, 0xd9, 0xfe, 0x8a, 0x7e, 0xff, 0xcc, 0x2c, - 0x17, 0x6f, 0xda, 0xd5, 0x78, 0x35, 0xbc, 0x23, 0x91, 0x64, 0xfa, 0xf5, 0xd3, 0x81, 0x9d, 0xac, - 0x72, 0x0a, 0x76, 0xcf, 0xd0, 0x94, 0xc7, 0xb3, 0x1b, 0x56, 0xec, 0x76, 0x3b, 0x97, 0x1b, 0x2c, - 0xf8, 0x4a, 0xa2, 0xdd, 0xb0, 0x50, 0x0c, 0x17, 0xa9, 0x37, 0x86, 0x4b, 0xf2, 0xdd, 0x30, 0x8e, - 0x8f, 0x51, 0xec, 0x86, 0xc5, 0x11, 0x4c, 0x5f, 0xb4, 0x2f, 0x9b, 0xa4, 0x56, 0x33, 0x8b, 0xed, - 0xff, 0x9a, 0xfe, 0x9e, 0xd5, 0xc0, 0x3b, 0xbb, 0xf4, 0x0b, 0xfb, 0x1f, 0x7b, 0xa7, 0x89, 0xf2, - 0x34, 0xc8, 0x6f, 0x9a, 0xd6, 0x8e, 0xe6, 0x6d, 0xdc, 0xf7, 0x9e, 0x14, 0x61, 0xf1, 0xf4, 0x97, - 0x48, 0x1e, 0x95, 0xe5, 0x75, 0xe7, 0x23, 0xcf, 0xd6, 0xbb, 0x2c, 0xea, 0xa2, 0xfb, 0xa8, 0x5c, - 0x0f, 0xb3, 0x2c, 0xf8, 0x62, 0x15, 0xdb, 0x0e, 0x6e, 0xb3, 0x88, 0x15, 0x7c, 0xa2, 0x72, 0x16, - 0x66, 0x58, 0xc2, 0x92, 0xde, 0xc1, 0x36, 0x0b, 0x5a, 0xc1, 0xa5, 0x29, 0x27, 0x21, 0xaf, 0xdb, - 0xf7, 0xdb, 0xa6, 0x41, 0xfc, 0xff, 0x27, 0x55, 0xf6, 0xa6, 0xdc, 0x08, 0x47, 0x59, 0x3e, 0xdf, - 0x58, 0xa5, 0x07, 0x76, 0x7a, 0x93, 0x5d, 0xd5, 0x32, 0xcc, 0x75, 0xcb, 0xdc, 0xb2, 0xb0, 0x6d, - 0x93, 0x53, 0x53, 0x93, 0x6a, 0x28, 0x45, 0x79, 0x10, 0x8e, 0x75, 0x74, 0xe3, 0xa2, 0x4d, 0x82, - 0xf4, 0x2e, 0x31, 0xb7, 0xb1, 0x99, 0x3e, 0xc1, 0xb3, 0x43, 0x8d, 0x8d, 0xc9, 0x21, 0xfc, 0x8b, - 0xba, 0x9f, 0x0a, 0x7a, 0x49, 0x06, 0x66, 0xc2, 0x09, 0x8a, 0x06, 0x8a, 0xd7, 0x8d, 0xd9, 0xe7, - 0xb7, 0x75, 0x07, 0xbb, 0xc4, 0xd8, 0xd9, 0x94, 0xdb, 0x06, 0x14, 0xa6, 0xee, 0xfb, 0x51, 0xed, - 0x43, 0xcc, 0x15, 0x2a, 0xed, 0xa0, 0x88, 0x27, 0x98, 0xcd, 0x6c, 0x4b, 0x2e, 0x0d, 0x3d, 0x1b, - 0x94, 0xfd, 0xd4, 0x42, 0x5e, 0x1b, 0x99, 0x64, 0x5e, 0x1b, 0xca, 0x4d, 0x50, 0xd0, 0x3a, 0x1d, - 0xf3, 0x12, 0x6e, 0xfb, 0x64, 0x99, 0x6e, 0xed, 0x4b, 0x47, 0x9f, 0x1a, 0x66, 0x1e, 0x97, 0xf8, - 0x5a, 0x09, 0xb7, 0x51, 0xec, 0xb6, 0x5a, 0x18, 0xb7, 0xd9, 0x41, 0x33, 0xef, 0x35, 0xe1, 0x85, - 0x13, 0x89, 0x67, 0x7d, 0x87, 0x74, 0xe3, 0xc4, 0xfb, 0x4f, 0x40, 0x9e, 0xde, 0xde, 0x86, 0x5e, - 0x32, 0xd7, 0xb7, 0x6f, 0x98, 0xe3, 0xfb, 0x86, 0x0d, 0x98, 0x31, 0x4c, 0xb7, 0xb8, 0x75, 0xcd, - 0xd2, 0x76, 0xec, 0xb8, 0x45, 0x5d, 0x4a, 0xd7, 0x1f, 0xc1, 0xab, 0xa1, 0xdf, 0x56, 0x8e, 0xa8, - 0x1c, 0x19, 0xe5, 0xff, 0x07, 0x47, 0x2f, 0xb0, 0x80, 0x0c, 0x36, 0xa3, 0x2c, 0x45, 0xbb, 0x3c, - 0xf6, 0x50, 0x5e, 0xe0, 0xff, 0x5c, 0x39, 0xa2, 0xf6, 0x12, 0x53, 0x7e, 0x04, 0xe6, 0xdc, 0xd7, - 0xb6, 0x79, 0xc9, 0x63, 0x5c, 0x8e, 0xb6, 0xfb, 0x7a, 0xc8, 0xaf, 0x71, 0x3f, 0xae, 0x1c, 0x51, - 0x7b, 0x48, 0x29, 0x35, 0x80, 0x6d, 0x67, 0xa7, 0xc3, 0x08, 0x67, 0xa3, 0x55, 0xb2, 0x87, 0xf0, - 0x8a, 0xff, 0xd3, 0xca, 0x11, 0x35, 0x44, 0x42, 0x59, 0x85, 0x29, 0xe7, 0x61, 0x87, 0xd1, 0xcb, - 0x45, 0xfb, 0x1a, 0xf4, 0xd0, 0x6b, 0x78, 0xff, 0xac, 0x1c, 0x51, 0x03, 0x02, 0x4a, 0x05, 0x26, - 0xbb, 0x17, 0x18, 0xb1, 0x7c, 0x74, 0xff, 0xd4, 0x43, 0x6c, 0xfd, 0x82, 0x4f, 0xcb, 0xff, 0xdd, - 0x65, 0xac, 0x65, 0xef, 0x31, 0x5a, 0x13, 0xc2, 0x8c, 0x95, 0xbc, 0x7f, 0x5c, 0xc6, 0x7c, 0x02, - 0x4a, 0x05, 0xa6, 0x6c, 0x43, 0xeb, 0xda, 0xdb, 0xa6, 0x63, 0x9f, 0x9a, 0xec, 0x71, 0x4b, 0x8d, - 0xa6, 0x56, 0x67, 0xff, 0xa8, 0xc1, 0xdf, 0xca, 0xd3, 0xe0, 0xc4, 0x6e, 0xb7, 0xad, 0x39, 0xb8, - 0xfc, 0xb0, 0x6e, 0x3b, 0xba, 0xb1, 0xe5, 0x85, 0xf4, 0xa5, 0x9d, 0x7b, 0xff, 0x8f, 0xca, 0x3c, - 0x3b, 0xa0, 0x06, 0xa4, 0x6d, 0xa2, 0xde, 0xbd, 0x51, 0x5a, 0x6c, 0xe8, 0x5c, 0xda, 0x33, 0x21, - 0xeb, 0x7e, 0x22, 0x83, 0xc1, 0x5c, 0xff, 0x75, 0xd7, 0x5e, 0xdd, 0x21, 0x0d, 0xd8, 0xfd, 0xa9, - 0x67, 0x3c, 0x99, 0xd9, 0x37, 0x9e, 0x9c, 0x81, 0x69, 0xdd, 0x5e, 0xd3, 0xb7, 0xa8, 0x31, 0xcb, - 0x8e, 0x1f, 0x84, 0x93, 0xe8, 0xe4, 0xbf, 0x8a, 0x2f, 0xd1, 0x0b, 0x4b, 0x8e, 0x7a, 0x93, 0x7f, - 0x2f, 0x05, 0xdd, 0x00, 0x33, 0xe1, 0x46, 0x46, 0xaf, 0x80, 0xd5, 0x03, 0x53, 0x98, 0xbd, 0xa1, - 0xeb, 0x61, 0x8e, 0xd7, 0xe9, 0xd0, 0x88, 0x2f, 0x7b, 0x5d, 0x21, 0xba, 0x0e, 0x8e, 0xf6, 0x34, - 0x2c, 0x2f, 0xc4, 0x4b, 0x26, 0x08, 0xf1, 0x72, 0x06, 0x20, 0xd0, 0xe2, 0xbe, 0x64, 0xae, 0x85, - 0x29, 0x5f, 0x2f, 0xfb, 0x66, 0xf8, 0x62, 0x06, 0x26, 0x3d, 0x65, 0xeb, 0x97, 0xc1, 0x1d, 0x99, - 0x8c, 0xd0, 0x7e, 0x8e, 0x37, 0x32, 0x85, 0xd3, 0xdc, 0x61, 0x3d, 0xf0, 0xa2, 0x6e, 0xe8, 0x4e, - 0xc7, 0x3b, 0x89, 0xd8, 0x9b, 0xac, 0xac, 0x03, 0xe8, 0x04, 0xa3, 0x46, 0x70, 0x34, 0xf1, 0xd6, - 0x04, 0xed, 0x81, 0xea, 0x43, 0x88, 0xc6, 0xd9, 0xef, 0x63, 0xe7, 0x06, 0xa7, 0x20, 0x47, 0xe3, - 0xda, 0x1f, 0x51, 0xe6, 0x00, 0xca, 0xcf, 0x5a, 0x2f, 0xab, 0x95, 0x72, 0xb5, 0x54, 0x2e, 0x64, - 0xd0, 0xaf, 0x49, 0x30, 0xe5, 0x37, 0x82, 0xbe, 0x95, 0x2c, 0x33, 0xd5, 0x1a, 0x78, 0xcb, 0xe6, - 0xfe, 0x46, 0x15, 0x56, 0xb2, 0x67, 0xc0, 0x95, 0xbb, 0x36, 0x5e, 0xd2, 0x2d, 0xdb, 0x51, 0xcd, - 0x4b, 0x4b, 0xa6, 0x15, 0x0c, 0xac, 0x34, 0xa0, 0x6c, 0xd4, 0x67, 0xd7, 0xc0, 0x6b, 0x63, 0x72, - 0x46, 0x0d, 0x5b, 0x6c, 0xa1, 0x3e, 0x48, 0x70, 0xe9, 0x3a, 0x96, 0x66, 0xd8, 0x5d, 0xd3, 0xc6, - 0xaa, 0x79, 0xc9, 0x2e, 0x1a, 0xed, 0x92, 0xd9, 0xd9, 0xdd, 0x31, 0x6c, 0x66, 0xa2, 0x45, 0x7d, - 0x76, 0xa5, 0x43, 0xee, 0xd0, 0x9d, 0x03, 0x28, 0xd5, 0x56, 0x57, 0xcb, 0xa5, 0x46, 0xa5, 0x56, - 0x2d, 0x1c, 0x71, 0xa5, 0xd5, 0x28, 0x2e, 0xac, 0xba, 0xd2, 0xf9, 0x51, 0x98, 0xf4, 0xda, 0x34, - 0x8b, 0x4a, 0x93, 0xf1, 0xa2, 0xd2, 0x28, 0x45, 0x98, 0xf4, 0x5a, 0x39, 0x1b, 0x11, 0x9e, 0xd8, - 0x7b, 0x0a, 0x79, 0x47, 0xb3, 0x1c, 0x62, 0xa0, 0x78, 0x44, 0x16, 0x34, 0x1b, 0xab, 0xfe, 0x6f, - 0x67, 0x9f, 0xc2, 0x38, 0x50, 0x60, 0xae, 0xb8, 0xba, 0xda, 0xac, 0xa9, 0xcd, 0x6a, 0xad, 0xb1, - 0x52, 0xa9, 0x2e, 0xd3, 0x11, 0xb2, 0xb2, 0x5c, 0xad, 0xa9, 0x65, 0x3a, 0x40, 0xd6, 0x0b, 0x19, - 0x7a, 0x87, 0xf3, 0xc2, 0x24, 0xe4, 0xbb, 0x44, 0xba, 0xe8, 0xf3, 0x72, 0xc2, 0xf0, 0x03, 0x3e, - 0x4e, 0x11, 0xb7, 0xcc, 0x72, 0x47, 0x00, 0xa4, 0x3e, 0x47, 0x74, 0xcf, 0xc2, 0x0c, 0x35, 0xad, - 0x6d, 0xb2, 0x9b, 0x42, 0x90, 0x93, 0x55, 0x2e, 0x0d, 0x7d, 0x50, 0x4a, 0x10, 0x93, 0xa0, 0x2f, - 0x47, 0xc9, 0x8c, 0x8b, 0x3f, 0xcf, 0x0c, 0x77, 0x0b, 0x44, 0xa5, 0xda, 0x28, 0xab, 0xd5, 0xe2, - 0x2a, 0xcb, 0x22, 0x2b, 0xa7, 0xe0, 0x78, 0xb5, 0xc6, 0x42, 0x2c, 0xd6, 0x9b, 0x8d, 0x5a, 0xb3, - 0xb2, 0xb6, 0x5e, 0x53, 0x1b, 0x85, 0x9c, 0x72, 0x12, 0x14, 0xfa, 0xdc, 0xac, 0xd4, 0x9b, 0xa5, - 0x62, 0xb5, 0x54, 0x5e, 0x2d, 0x2f, 0x16, 0xf2, 0xca, 0x93, 0xe0, 0x3a, 0x7a, 0xab, 0x50, 0x6d, - 0xa9, 0xa9, 0xd6, 0xce, 0xd7, 0x5d, 0x04, 0xd5, 0xf2, 0x6a, 0xd1, 0x55, 0xa4, 0xd0, 0x5d, 0xce, - 0x13, 0xca, 0x15, 0x70, 0x94, 0x5c, 0xf4, 0xbe, 0x5a, 0x2b, 0x2e, 0xb2, 0xf2, 0x26, 0x95, 0x6b, - 0xe0, 0x54, 0xa5, 0x5a, 0xdf, 0x58, 0x5a, 0xaa, 0x94, 0x2a, 0xe5, 0x6a, 0xa3, 0xb9, 0x5e, 0x56, - 0xd7, 0x2a, 0xf5, 0xba, 0xfb, 0x6f, 0x61, 0x8a, 0xdc, 0x94, 0x4b, 0xfb, 0x4c, 0xf4, 0x4e, 0x19, - 0x66, 0xcf, 0x69, 0x1d, 0xdd, 0x1d, 0x28, 0xc8, 0x15, 0xda, 0x3d, 0xa7, 0x77, 0x1c, 0x72, 0xd5, - 0x36, 0xf3, 0xff, 0x27, 0x2f, 0xe8, 0x27, 0xe5, 0x84, 0xa7, 0x77, 0x18, 0x10, 0xb4, 0xc4, 0x79, - 0xae, 0xb4, 0x88, 0xb9, 0xe6, 0x2b, 0xa5, 0x04, 0xa7, 0x77, 0xc4, 0xc9, 0x27, 0x03, 0xff, 0xd7, - 0x47, 0x05, 0x7e, 0x01, 0x66, 0x36, 0xaa, 0xc5, 0x8d, 0xc6, 0x4a, 0x4d, 0xad, 0xfc, 0x30, 0x09, - 0xfe, 0x3e, 0x0b, 0x53, 0x4b, 0x35, 0x75, 0xa1, 0xb2, 0xb8, 0x58, 0xae, 0x16, 0x72, 0xca, 0x95, - 0x70, 0x45, 0xbd, 0xac, 0x9e, 0xab, 0x94, 0xca, 0xcd, 0x8d, 0x6a, 0xf1, 0x5c, 0xb1, 0xb2, 0x4a, - 0xfa, 0x88, 0x7c, 0xcc, 0xf5, 0xdf, 0x13, 0xe8, 0xc7, 0xb3, 0x00, 0xb4, 0xea, 0xe4, 0xee, 0xa3, - 0xd0, 0x25, 0xd1, 0x9f, 0x49, 0x3a, 0x69, 0x08, 0xc8, 0x44, 0xb4, 0xdf, 0x0a, 0x4c, 0x5a, 0xec, - 0x03, 0x5b, 0xcd, 0x1a, 0x44, 0x87, 0x3e, 0x7a, 0xd4, 0x54, 0xff, 0x77, 0xf4, 0xae, 0x24, 0x73, - 0x84, 0x48, 0xc6, 0x92, 0x21, 0xb9, 0x34, 0x1a, 0x20, 0xd1, 0x0b, 0x33, 0x30, 0xc7, 0x57, 0xcc, - 0xad, 0x04, 0x31, 0xa6, 0xc4, 0x2a, 0xc1, 0xff, 0x1c, 0x32, 0xb2, 0xce, 0x3e, 0x95, 0x0d, 0xa7, - 0xe0, 0xb5, 0x4c, 0x7a, 0x10, 0xdf, 0xb3, 0x58, 0x0a, 0x19, 0x97, 0x79, 0xd7, 0xe8, 0x28, 0x48, - 0xca, 0x04, 0xc8, 0x8d, 0x87, 0x9d, 0x82, 0x8c, 0xbe, 0x28, 0xc3, 0x2c, 0x77, 0x0b, 0x35, 0x7a, - 0x65, 0x46, 0xe4, 0x86, 0xd8, 0xd0, 0xfd, 0xd6, 0x99, 0x83, 0xde, 0x6f, 0x7d, 0xf6, 0x16, 0x98, - 0x60, 0x69, 0x44, 0xbe, 0xb5, 0xaa, 0x6b, 0x0a, 0x1c, 0x85, 0xe9, 0xe5, 0x72, 0xa3, 0x59, 0x6f, - 0x14, 0xd5, 0x46, 0x79, 0xb1, 0x90, 0x71, 0x07, 0xbe, 0xf2, 0xda, 0x7a, 0xe3, 0xc1, 0x82, 0x94, - 0xdc, 0x21, 0xb2, 0x97, 0x91, 0x31, 0x3b, 0x44, 0xc6, 0x15, 0x9f, 0xfe, 0x5c, 0xf5, 0x13, 0x32, - 0x14, 0x28, 0x07, 0xe5, 0x87, 0xbb, 0xd8, 0xd2, 0xb1, 0xd1, 0xc2, 0xe8, 0xa2, 0x48, 0x00, 0xd6, - 0x7d, 0xa1, 0x09, 0x49, 0x7f, 0x1e, 0xb2, 0x12, 0xe9, 0x4b, 0x8f, 0x81, 0x9d, 0xdd, 0x67, 0x60, - 0x7f, 0x3c, 0xa9, 0x47, 0x64, 0x2f, 0xbb, 0x23, 0x81, 0xec, 0x23, 0x49, 0x3c, 0x22, 0x07, 0x70, - 0x30, 0x96, 0xb8, 0xca, 0x11, 0xe3, 0x6f, 0x41, 0x46, 0x2f, 0x90, 0xe1, 0xe8, 0xa2, 0xe6, 0xe0, - 0x85, 0xcb, 0x0d, 0xef, 0x96, 0xc8, 0x88, 0x9b, 0x9d, 0x33, 0xfb, 0x6e, 0x76, 0x0e, 0x2e, 0x9a, - 0x94, 0x7a, 0x2e, 0x9a, 0x44, 0x6f, 0x4b, 0x7a, 0x86, 0xb2, 0x87, 0x87, 0x91, 0x05, 0x3f, 0x4e, - 0x76, 0x36, 0x32, 0x9e, 0x8b, 0xf4, 0x1b, 0xd8, 0x9b, 0xa6, 0xa0, 0x40, 0x59, 0x09, 0x39, 0xfd, - 0xfd, 0x22, 0xbb, 0x0c, 0xbd, 0x99, 0x20, 0xc6, 0xa2, 0x17, 0xb5, 0x42, 0xe2, 0xa3, 0x56, 0x70, - 0x6b, 0xc8, 0x72, 0xaf, 0xa3, 0x46, 0xd2, 0xce, 0x30, 0xe4, 0xe1, 0x17, 0x1d, 0xd6, 0x36, 0xbd, - 0xce, 0x30, 0xb6, 0xf8, 0xf1, 0x5c, 0xd8, 0xcb, 0xae, 0xd5, 0x2c, 0x8b, 0x22, 0x13, 0x7f, 0x2f, - 0x79, 0x52, 0x77, 0x6f, 0xce, 0xc3, 0x32, 0xe6, 0xb2, 0xee, 0xf4, 0xdc, 0xbd, 0x07, 0x71, 0x90, - 0x3e, 0x0a, 0xdf, 0x91, 0x20, 0x5b, 0x37, 0x2d, 0x67, 0x54, 0x18, 0x24, 0xdd, 0xa2, 0x0e, 0x49, - 0xa0, 0x1e, 0x3d, 0xe7, 0x4c, 0x6f, 0x8b, 0x3a, 0xbe, 0xfc, 0x31, 0x84, 0xa9, 0x3c, 0x0a, 0x73, - 0x94, 0x13, 0xff, 0x0e, 0x97, 0x6f, 0x4b, 0xb4, 0xbf, 0x7a, 0x40, 0x14, 0x11, 0xb2, 0xf1, 0xe1, - 0x6f, 0x11, 0x7b, 0xa0, 0x70, 0x69, 0xe8, 0xb5, 0x61, 0x5c, 0x16, 0x79, 0x5c, 0xfa, 0xcd, 0xb8, - 0xfd, 0x6b, 0x50, 0x46, 0xd5, 0x33, 0x25, 0x89, 0x78, 0x19, 0x53, 0x78, 0xfa, 0x88, 0x3c, 0x22, - 0x43, 0x9e, 0xb9, 0xe8, 0x8d, 0x14, 0x81, 0xa4, 0x2d, 0xc3, 0x17, 0x82, 0x98, 0x2b, 0x9f, 0x3c, - 0xea, 0x96, 0x11, 0x5f, 0x7e, 0xfa, 0x38, 0xfc, 0x3b, 0xf3, 0x3d, 0x2d, 0xee, 0x69, 0x7a, 0x47, - 0xbb, 0xd0, 0x49, 0x10, 0x69, 0xfa, 0x83, 0x09, 0x4f, 0xdb, 0xf9, 0x55, 0xe5, 0xca, 0x8b, 0x90, - 0xf8, 0x0f, 0xc0, 0x94, 0xc5, 0xed, 0xf5, 0xb9, 0x56, 0x54, 0x8f, 0xdf, 0x2f, 0xfb, 0xae, 0x06, - 0x39, 0x13, 0x1d, 0xad, 0x13, 0xe2, 0x67, 0x2c, 0x47, 0x81, 0xa6, 0x8b, 0xed, 0xf6, 0x12, 0xd6, - 0x9c, 0x5d, 0x0b, 0xb7, 0x13, 0x0d, 0x11, 0x56, 0xcf, 0x76, 0x68, 0x48, 0x12, 0x5c, 0xac, 0xc7, - 0x55, 0x1e, 0x9d, 0xa7, 0x0f, 0xe8, 0x0d, 0x3c, 0x5e, 0x46, 0xd2, 0x25, 0xbd, 0xd1, 0x87, 0xa4, - 0xc6, 0x41, 0xf2, 0xcc, 0xe1, 0x98, 0x48, 0x1f, 0x90, 0x5f, 0x96, 0x61, 0x8e, 0xda, 0x09, 0xa3, - 0xc6, 0xe4, 0xf7, 0x13, 0xba, 0xf4, 0x84, 0x6e, 0xc9, 0x0a, 0xb3, 0x33, 0x12, 0x58, 0x92, 0x38, - 0x00, 0x89, 0xf1, 0x91, 0x3e, 0x32, 0x9f, 0xca, 0x03, 0x84, 0xdc, 0x34, 0x3f, 0x98, 0x0f, 0xe2, - 0x2e, 0xa2, 0x37, 0xb3, 0xf9, 0x47, 0x9d, 0x0b, 0x02, 0x1e, 0x72, 0xc1, 0xf4, 0x37, 0xa4, 0xf8, - 0x44, 0xa1, 0x51, 0xe5, 0xcf, 0x13, 0xda, 0xbc, 0xcc, 0x49, 0x72, 0xe0, 0xe0, 0x3e, 0x64, 0x2f, - 0xf7, 0xa1, 0x04, 0xc6, 0xef, 0x20, 0x56, 0x92, 0xa1, 0xb6, 0x3a, 0xc4, 0xcc, 0xfe, 0x14, 0x1c, - 0x57, 0xcb, 0xc5, 0xc5, 0x5a, 0x75, 0xf5, 0xc1, 0xf0, 0x95, 0x49, 0x05, 0x39, 0x3c, 0x39, 0x49, - 0x05, 0xb6, 0x57, 0x27, 0xec, 0x03, 0x79, 0x59, 0xc5, 0xcd, 0x56, 0x42, 0x8b, 0x2b, 0x83, 0x7b, - 0x35, 0x01, 0xb2, 0x87, 0x89, 0xc2, 0x23, 0x10, 0x6a, 0x46, 0x3f, 0x2d, 0x43, 0x81, 0xf8, 0xfe, - 0x10, 0x2e, 0xd9, 0xdd, 0x78, 0x35, 0xde, 0x8b, 0xb3, 0x4b, 0xf7, 0x9f, 0x02, 0x2f, 0x4e, 0x2f, - 0x41, 0xb9, 0x01, 0xe6, 0x5a, 0xdb, 0xb8, 0x75, 0xb1, 0x62, 0x78, 0xfb, 0xea, 0x74, 0x13, 0xb6, - 0x27, 0x95, 0x07, 0xe6, 0x01, 0x1e, 0x18, 0x7e, 0x12, 0xcd, 0x0d, 0xd2, 0x61, 0xa6, 0x22, 0x70, - 0xf9, 0x23, 0x1f, 0x97, 0x2a, 0x87, 0xcb, 0x9d, 0x43, 0x51, 0x4d, 0x06, 0x4b, 0x75, 0x08, 0x58, - 0x10, 0x9c, 0xac, 0xad, 0x37, 0x2a, 0xb5, 0x6a, 0x73, 0xa3, 0x5e, 0x5e, 0x6c, 0x2e, 0x78, 0xe0, - 0xd4, 0x0b, 0x32, 0xfa, 0xaa, 0x04, 0x13, 0x94, 0x2d, 0x1b, 0x3d, 0x39, 0x80, 0x60, 0xa0, 0xfb, - 0x2a, 0x7a, 0x93, 0x70, 0x30, 0x0a, 0x5f, 0x10, 0xac, 0x9c, 0x88, 0x7e, 0xea, 0x19, 0x30, 0x41, - 0x41, 0xf6, 0x56, 0xb4, 0x4e, 0x47, 0xf4, 0x52, 0x8c, 0x8c, 0xea, 0x65, 0x17, 0x0c, 0x4c, 0x31, - 0x80, 0x8d, 0xf4, 0x47, 0x96, 0xe7, 0x64, 0xa9, 0x19, 0x7c, 0x5e, 0x77, 0xb6, 0x89, 0x77, 0x2b, - 0xfa, 0x21, 0x91, 0xe5, 0xc5, 0x9b, 0x21, 0xb7, 0xe7, 0xe6, 0x1e, 0xe0, 0x29, 0x4c, 0x33, 0xa1, - 0x5f, 0x17, 0x8e, 0x83, 0xca, 0xe9, 0xa7, 0xcf, 0x53, 0x04, 0x38, 0x6b, 0x90, 0xed, 0xe8, 0xb6, - 0xc3, 0xc6, 0x8f, 0x3b, 0x12, 0x11, 0xf2, 0x1e, 0x2a, 0x0e, 0xde, 0x51, 0x09, 0x19, 0x74, 0x3f, - 0xcc, 0x84, 0x53, 0x05, 0xbc, 0xa5, 0x4f, 0xc1, 0x04, 0x3b, 0xc5, 0xc7, 0x96, 0x58, 0xbd, 0x57, - 0xc1, 0x65, 0x4d, 0xa1, 0xda, 0xa6, 0xaf, 0x03, 0xff, 0xf7, 0x51, 0x98, 0x58, 0xd1, 0x6d, 0xc7, - 0xb4, 0x2e, 0xa3, 0x47, 0x33, 0x30, 0x71, 0x0e, 0x5b, 0xb6, 0x6e, 0x1a, 0xfb, 0x5c, 0x0d, 0xce, - 0xc0, 0x74, 0xd7, 0xc2, 0x7b, 0xba, 0xb9, 0x6b, 0x07, 0x8b, 0x33, 0xe1, 0x24, 0x05, 0xc1, 0xa4, - 0xb6, 0xeb, 0x6c, 0x9b, 0x56, 0x10, 0xfc, 0xc3, 0x7b, 0x57, 0x4e, 0x03, 0xd0, 0xe7, 0xaa, 0xb6, - 0x83, 0x99, 0x03, 0x45, 0x28, 0x45, 0x51, 0x20, 0xeb, 0xe8, 0x3b, 0x98, 0x45, 0x03, 0x26, 0xcf, - 0xae, 0x80, 0x49, 0x64, 0x3d, 0x16, 0xc1, 0x50, 0x56, 0xbd, 0x57, 0xf4, 0x59, 0x19, 0xa6, 0x97, - 0xb1, 0xc3, 0x58, 0xb5, 0xd1, 0x8b, 0x32, 0x42, 0x17, 0x70, 0xb8, 0x63, 0x6c, 0x47, 0xb3, 0xbd, - 0xff, 0xfc, 0x25, 0x58, 0x3e, 0x31, 0x08, 0x4d, 0x2c, 0x87, 0xe3, 0x92, 0x93, 0x38, 0x75, 0x4e, - 0x85, 0xba, 0xc1, 0xb2, 0xcc, 0x6c, 0x13, 0x64, 0xff, 0x07, 0xf4, 0x76, 0x49, 0xf4, 0x8c, 0x37, - 0x93, 0xfd, 0x7c, 0xa8, 0x3e, 0x91, 0xdd, 0xd1, 0xe4, 0x1e, 0xcb, 0xb1, 0x2f, 0xe4, 0x7c, 0x98, - 0x12, 0x23, 0xa3, 0xfa, 0xb9, 0x05, 0x4f, 0x87, 0x0f, 0xe6, 0x24, 0x7d, 0x6d, 0xfc, 0xa6, 0x0c, - 0xd3, 0xf5, 0x6d, 0xf3, 0x92, 0x27, 0xc7, 0x1f, 0x15, 0x03, 0xf6, 0x1a, 0x98, 0xda, 0xeb, 0x01, - 0x35, 0x48, 0x88, 0xbe, 0x12, 0x1f, 0x3d, 0x5f, 0x4e, 0x0a, 0x53, 0x88, 0xb9, 0x91, 0x5f, 0x58, - 0xaf, 0x3c, 0x1d, 0x26, 0x18, 0xd7, 0x6c, 0xc9, 0x25, 0x1e, 0x60, 0x2f, 0x73, 0xb8, 0x82, 0x59, - 0xbe, 0x82, 0xc9, 0x90, 0x8f, 0xae, 0x5c, 0xfa, 0xc8, 0xff, 0x89, 0x44, 0x62, 0x83, 0x78, 0xc0, - 0x97, 0x46, 0x00, 0x3c, 0xfa, 0x56, 0x46, 0x74, 0x61, 0xd2, 0x97, 0x80, 0xcf, 0xc1, 0x81, 0x2e, - 0xd7, 0x19, 0x48, 0x2e, 0x7d, 0x79, 0xfe, 0x5a, 0x16, 0x66, 0x16, 0xf5, 0xcd, 0x4d, 0xbf, 0x93, - 0x7c, 0xb1, 0x60, 0x27, 0x19, 0xed, 0x0e, 0xe0, 0xda, 0xb9, 0xbb, 0x96, 0x85, 0x0d, 0xaf, 0x52, - 0xac, 0x39, 0xf5, 0xa4, 0x2a, 0x37, 0xc2, 0x51, 0x6f, 0x5c, 0x08, 0x77, 0x94, 0x53, 0x6a, 0x6f, - 0x32, 0xfa, 0x86, 0xf0, 0xae, 0x96, 0x27, 0xd1, 0x70, 0x95, 0x22, 0x1a, 0xe0, 0x5d, 0x30, 0xbb, - 0x4d, 0x73, 0x93, 0xa9, 0xbf, 0xd7, 0x59, 0x9e, 0xec, 0x89, 0xbd, 0xbc, 0x86, 0x6d, 0x5b, 0xdb, - 0xc2, 0x2a, 0x9f, 0xb9, 0xa7, 0xf9, 0xca, 0x49, 0x6e, 0x12, 0x13, 0xdb, 0x20, 0x13, 0xa8, 0xc9, - 0x18, 0xb4, 0xe3, 0x2c, 0x64, 0x97, 0xf4, 0x0e, 0x46, 0x3f, 0x23, 0xc1, 0x94, 0x8a, 0x5b, 0xa6, - 0xd1, 0x72, 0xdf, 0x42, 0xce, 0x41, 0xff, 0x98, 0x11, 0xbd, 0x41, 0xd3, 0xa5, 0x33, 0xef, 0xd3, - 0x88, 0x68, 0x37, 0x62, 0x37, 0x65, 0xc6, 0x92, 0x1a, 0xc3, 0x7d, 0x27, 0xee, 0xd4, 0x63, 0x73, - 0xb3, 0x63, 0x6a, 0xdc, 0xe2, 0x57, 0xaf, 0x29, 0x74, 0x13, 0x14, 0xbc, 0x23, 0x37, 0xa6, 0xb3, - 0xae, 0x1b, 0x86, 0x7f, 0xa6, 0x7b, 0x5f, 0x3a, 0xbf, 0x6f, 0x1b, 0x1b, 0x16, 0x87, 0xd4, 0x9d, - 0x95, 0x1e, 0xa1, 0xd9, 0x37, 0xc0, 0xdc, 0x85, 0xcb, 0x0e, 0xb6, 0x59, 0x2e, 0x56, 0x6c, 0x56, - 0xed, 0x49, 0x0d, 0x05, 0xb5, 0x8e, 0x0b, 0x9f, 0x13, 0x53, 0x60, 0x32, 0x51, 0xaf, 0x0c, 0x31, - 0x03, 0x3c, 0x0e, 0x85, 0x6a, 0x6d, 0xb1, 0x4c, 0x7c, 0xd5, 0x3c, 0xef, 0x9f, 0x2d, 0xf4, 0x0b, - 0x32, 0xcc, 0x10, 0x67, 0x12, 0x0f, 0x85, 0xeb, 0x04, 0xe6, 0x23, 0xe8, 0x31, 0x61, 0x3f, 0x36, - 0x52, 0xe5, 0x70, 0x01, 0xd1, 0x82, 0xde, 0xd4, 0x3b, 0xbd, 0x82, 0xce, 0xa9, 0x3d, 0xa9, 0x7d, - 0x00, 0x91, 0xfb, 0x02, 0xf2, 0xbb, 0x42, 0xce, 0x6c, 0x83, 0xb8, 0x3b, 0x2c, 0x54, 0x7e, 0x4f, - 0x86, 0x69, 0x77, 0x92, 0xe2, 0x81, 0x52, 0xe3, 0x40, 0x31, 0x8d, 0xce, 0xe5, 0x60, 0x59, 0xc4, - 0x7b, 0x4d, 0xd4, 0x48, 0xfe, 0x52, 0x78, 0xe6, 0x4e, 0x44, 0x14, 0xe2, 0x65, 0x4c, 0xf8, 0xbd, - 0x5b, 0x68, 0x3e, 0x3f, 0x80, 0xb9, 0xc3, 0x82, 0xef, 0xcb, 0x39, 0xc8, 0x6f, 0x74, 0x09, 0x72, - 0xbf, 0x2e, 0x8b, 0x04, 0x88, 0xdf, 0x77, 0x90, 0xc1, 0x35, 0xb3, 0x3a, 0x66, 0x4b, 0xeb, 0xac, - 0x07, 0x27, 0xc2, 0x82, 0x04, 0xe5, 0x4e, 0xe6, 0xdb, 0x48, 0x4f, 0x37, 0xde, 0x10, 0x1b, 0x3b, - 0x9d, 0xc8, 0x28, 0x74, 0x68, 0xe4, 0x66, 0x38, 0xd6, 0xd6, 0x6d, 0xed, 0x42, 0x07, 0x97, 0x8d, - 0x96, 0x75, 0x99, 0x8a, 0x83, 0x4d, 0xab, 0xf6, 0x7d, 0x50, 0xee, 0x86, 0x9c, 0xed, 0x5c, 0xee, - 0xd0, 0x79, 0x62, 0xf8, 0x8c, 0x49, 0x64, 0x51, 0x75, 0x37, 0xbb, 0x4a, 0xff, 0x0a, 0xbb, 0x28, - 0x4d, 0x08, 0x5e, 0x9f, 0xfd, 0x54, 0xc8, 0x9b, 0x96, 0xbe, 0xa5, 0xd3, 0xeb, 0x90, 0xe6, 0xf6, - 0x85, 0x08, 0xa4, 0xa6, 0x40, 0x8d, 0x64, 0x51, 0x59, 0x56, 0xe5, 0xe9, 0x30, 0xa5, 0xef, 0x68, - 0x5b, 0xf8, 0x01, 0xdd, 0xa0, 0x07, 0x28, 0xe7, 0x6e, 0x3f, 0xb5, 0xef, 0xf8, 0x0c, 0xfb, 0xae, - 0x06, 0x59, 0xd1, 0xbb, 0x25, 0xd1, 0x38, 0x46, 0xa4, 0x6e, 0x14, 0xd4, 0xb1, 0x5c, 0x23, 0x8e, - 0x5e, 0x21, 0x14, 0x61, 0x28, 0x9a, 0xad, 0xf4, 0x07, 0xef, 0x4f, 0x4b, 0x30, 0xb9, 0x68, 0x5e, - 0x32, 0x88, 0xa2, 0xdf, 0x21, 0x66, 0xeb, 0xf6, 0x39, 0xe4, 0xc8, 0xdf, 0xd2, 0x19, 0x7b, 0xa2, - 0x81, 0xd4, 0xd6, 0x2b, 0x32, 0x02, 0x86, 0xd8, 0x96, 0x23, 0x78, 0x77, 0x62, 0x5c, 0x39, 0xe9, - 0xcb, 0xf5, 0x4f, 0x65, 0xc8, 0x2e, 0x5a, 0x66, 0x17, 0xbd, 0x31, 0x93, 0xc0, 0x65, 0xa1, 0x6d, - 0x99, 0xdd, 0x06, 0xb9, 0xfc, 0x2c, 0x38, 0xc6, 0x11, 0x4e, 0x53, 0xee, 0x80, 0xc9, 0xae, 0x69, - 0xeb, 0x8e, 0x37, 0x8d, 0x98, 0xbb, 0xfd, 0x09, 0x7d, 0x5b, 0xf3, 0x3a, 0xcb, 0xa4, 0xfa, 0xd9, - 0xdd, 0x5e, 0x9b, 0x88, 0xd0, 0x95, 0x8b, 0x2b, 0x46, 0xef, 0x02, 0xb8, 0x9e, 0x54, 0xf4, 0x92, - 0x30, 0x92, 0xcf, 0xe4, 0x91, 0x7c, 0x62, 0x1f, 0x09, 0x5b, 0x66, 0x77, 0x24, 0x9b, 0x8c, 0x2f, - 0xf3, 0x51, 0xbd, 0x87, 0x43, 0xf5, 0x26, 0xa1, 0x32, 0xd3, 0x47, 0xf4, 0xdd, 0x59, 0x00, 0x62, - 0x66, 0x6c, 0xb8, 0x13, 0x20, 0x31, 0x1b, 0xeb, 0xa7, 0xb2, 0x21, 0x59, 0x16, 0x79, 0x59, 0x3e, - 0x39, 0xc2, 0x8a, 0x21, 0xe4, 0x23, 0x24, 0x5a, 0x84, 0xdc, 0xae, 0xfb, 0x99, 0x49, 0x54, 0x90, - 0x04, 0x79, 0x55, 0xe9, 0x9f, 0xe8, 0x4f, 0x32, 0x90, 0x23, 0x09, 0xca, 0x69, 0x00, 0x32, 0xb0, - 0xd3, 0x03, 0x41, 0x19, 0x32, 0x84, 0x87, 0x52, 0x88, 0xb6, 0xea, 0x6d, 0xf6, 0x99, 0x9a, 0xcc, - 0x41, 0x82, 0xfb, 0x37, 0x19, 0xee, 0x09, 0x2d, 0x66, 0x00, 0x84, 0x52, 0xdc, 0xbf, 0xc9, 0xdb, - 0x2a, 0xde, 0xa4, 0x71, 0xa9, 0xb3, 0x6a, 0x90, 0xe0, 0xff, 0xbd, 0xea, 0xdf, 0x66, 0xe6, 0xfd, - 0x4d, 0x52, 0xdc, 0xc9, 0x30, 0x51, 0xcb, 0x85, 0xa0, 0x88, 0x3c, 0xc9, 0xd4, 0x9b, 0x8c, 0x5e, - 0xed, 0xab, 0xcd, 0x22, 0xa7, 0x36, 0xb7, 0x26, 0x10, 0x6f, 0xfa, 0xca, 0xf3, 0xc5, 0x1c, 0x4c, - 0x55, 0xcd, 0x36, 0xd3, 0x9d, 0xd0, 0x84, 0xf1, 0x23, 0xb9, 0x44, 0x13, 0x46, 0x9f, 0x46, 0x84, - 0x82, 0xdc, 0xc7, 0x2b, 0x88, 0x18, 0x85, 0xb0, 0x7e, 0x28, 0x0b, 0x90, 0x27, 0xda, 0xbb, 0xff, - 0x9a, 0xac, 0x38, 0x12, 0x44, 0xb4, 0x2a, 0xfb, 0xf3, 0x3f, 0x9c, 0x8e, 0xfd, 0x57, 0xc8, 0x91, - 0x0a, 0xc6, 0xec, 0xee, 0xf0, 0x15, 0x95, 0xe2, 0x2b, 0x2a, 0xc7, 0x57, 0x34, 0xdb, 0x5b, 0xd1, - 0x24, 0xeb, 0x00, 0x51, 0x1a, 0x92, 0xbe, 0x8e, 0xff, 0xc3, 0x04, 0x40, 0x55, 0xdb, 0xd3, 0xb7, - 0xe8, 0xee, 0xf0, 0x67, 0xbd, 0xf9, 0x0f, 0xdb, 0xc7, 0xfd, 0x6f, 0xa1, 0x81, 0xf0, 0x0e, 0x98, - 0x60, 0xe3, 0x1e, 0xab, 0xc8, 0xb5, 0x5c, 0x45, 0x02, 0x2a, 0xd4, 0x2c, 0x7d, 0xd8, 0x51, 0xbd, - 0xfc, 0xdc, 0x8d, 0xbe, 0x52, 0xcf, 0x8d, 0xbe, 0xfd, 0xf7, 0x20, 0x22, 0xee, 0xf9, 0x45, 0xef, - 0x10, 0xf6, 0xe8, 0x0f, 0xf1, 0x13, 0xaa, 0x51, 0x44, 0x13, 0x7c, 0x2a, 0x4c, 0x98, 0xfe, 0x86, - 0xb6, 0x1c, 0xb9, 0x0e, 0x56, 0x31, 0x36, 0x4d, 0xd5, 0xcb, 0x29, 0xb8, 0xf9, 0x25, 0xc4, 0xc7, - 0x58, 0x0e, 0xcd, 0x9c, 0x5c, 0xf6, 0x62, 0x7c, 0xb9, 0xf5, 0x38, 0xaf, 0x3b, 0xdb, 0xab, 0xba, - 0x71, 0xd1, 0x46, 0xff, 0x59, 0xcc, 0x82, 0x0c, 0xe1, 0x2f, 0x25, 0xc3, 0x9f, 0x8f, 0xd9, 0x51, - 0xe7, 0x51, 0xbb, 0x3b, 0x8a, 0x4a, 0x7f, 0x6e, 0x23, 0x00, 0xbc, 0x13, 0xf2, 0x94, 0x51, 0xd6, - 0x89, 0x9e, 0x8d, 0xc4, 0xcf, 0xa7, 0xa4, 0xb2, 0x3f, 0xd0, 0xdb, 0x7d, 0x1c, 0xcf, 0x71, 0x38, - 0x2e, 0x1c, 0x88, 0xb3, 0xd4, 0x21, 0x3d, 0x7b, 0x1b, 0x4c, 0x30, 0x49, 0x2b, 0x73, 0xe1, 0x56, - 0x5c, 0x38, 0xa2, 0x00, 0xe4, 0xd7, 0xcc, 0x3d, 0xdc, 0x30, 0x0b, 0x19, 0xf7, 0xd9, 0xe5, 0xaf, - 0x61, 0x16, 0x24, 0xf4, 0xf2, 0x49, 0x98, 0xf4, 0x83, 0x2b, 0x7d, 0x5a, 0x82, 0x42, 0xc9, 0xc2, - 0x9a, 0x83, 0x97, 0x2c, 0x73, 0x87, 0xd6, 0x48, 0xdc, 0x3b, 0xf4, 0x97, 0x85, 0x5d, 0x3c, 0xfc, - 0xa0, 0x47, 0xbd, 0x85, 0x45, 0x60, 0x49, 0x17, 0x21, 0x25, 0x6f, 0x11, 0x12, 0xbd, 0x41, 0xc8, - 0xe5, 0x43, 0xb4, 0x94, 0xf4, 0x9b, 0xda, 0xc7, 0x25, 0xc8, 0x95, 0x3a, 0xa6, 0x81, 0xc3, 0x47, - 0x98, 0x06, 0x9e, 0x95, 0xe9, 0xbf, 0x13, 0x81, 0x9e, 0x23, 0x89, 0xda, 0x1a, 0x81, 0x00, 0xdc, - 0xb2, 0x05, 0x65, 0x2b, 0x36, 0x48, 0xc5, 0x92, 0x4e, 0x5f, 0xa0, 0x5f, 0x95, 0x60, 0x8a, 0xc6, - 0xc5, 0x29, 0x76, 0x3a, 0xe8, 0x09, 0x81, 0x50, 0xfb, 0x04, 0xa8, 0x42, 0xbf, 0x2b, 0xec, 0xa2, - 0xef, 0xd7, 0xca, 0xa7, 0x9d, 0x20, 0x40, 0x50, 0x32, 0x8f, 0x71, 0xb1, 0xbd, 0xb4, 0x81, 0x0c, - 0xa5, 0x2f, 0xea, 0xcf, 0x48, 0xae, 0x01, 0x60, 0x5c, 0x5c, 0xb7, 0xf0, 0x9e, 0x8e, 0x2f, 0xa1, - 0xab, 0x03, 0x61, 0xef, 0x0f, 0xfa, 0xf1, 0x3a, 0xe1, 0x45, 0x9c, 0x10, 0xc9, 0xc8, 0xad, 0xac, - 0xe9, 0x4e, 0x90, 0x89, 0xf5, 0xe2, 0xbd, 0x91, 0x58, 0x42, 0x64, 0xd4, 0x70, 0x76, 0xc1, 0x35, - 0x9b, 0x68, 0x2e, 0xd2, 0x17, 0xec, 0xfb, 0x26, 0x60, 0x72, 0xc3, 0xb0, 0xbb, 0x1d, 0xcd, 0xde, - 0x46, 0xdf, 0x96, 0x21, 0x4f, 0x2f, 0x67, 0x43, 0x3f, 0xc0, 0xc5, 0x16, 0xf8, 0xb1, 0x5d, 0x6c, - 0x79, 0x2e, 0x38, 0xf4, 0xa5, 0xff, 0xdd, 0xf1, 0xe8, 0xdd, 0xb2, 0xe8, 0x24, 0xd5, 0x2b, 0x34, - 0x74, 0x4b, 0x7f, 0xff, 0xe3, 0xec, 0x5d, 0xbd, 0xe5, 0xec, 0x5a, 0xfe, 0x4d, 0xe4, 0x4f, 0x11, - 0xa3, 0xb2, 0x4e, 0xff, 0x52, 0xfd, 0xdf, 0x91, 0x06, 0x13, 0x2c, 0x71, 0xdf, 0x76, 0xd2, 0xfe, - 0xf3, 0xb7, 0x27, 0x21, 0xaf, 0x59, 0x8e, 0x6e, 0x3b, 0x6c, 0x83, 0x95, 0xbd, 0xb9, 0xdd, 0x25, - 0x7d, 0xda, 0xb0, 0x3a, 0x5e, 0x14, 0x12, 0x3f, 0x01, 0xfd, 0x9e, 0xd0, 0xfc, 0x31, 0xbe, 0xe6, - 0xc9, 0x20, 0x7f, 0x60, 0x88, 0x35, 0xea, 0x2b, 0xe1, 0x0a, 0xb5, 0xd8, 0x28, 0x37, 0x69, 0xd0, - 0x0a, 0x3f, 0x3e, 0x45, 0x1b, 0xbd, 0x4d, 0x0e, 0xad, 0xdf, 0x5d, 0xe6, 0xc6, 0x08, 0x26, 0xc5, - 0x60, 0x8c, 0xf0, 0x13, 0x62, 0x76, 0xab, 0xb9, 0x45, 0x58, 0x59, 0x7c, 0x11, 0xf6, 0xb7, 0x85, - 0x77, 0x93, 0x7c, 0x51, 0x0e, 0x58, 0x03, 0x8c, 0xbb, 0xbc, 0xe9, 0x3d, 0x42, 0x3b, 0x43, 0x83, - 0x4a, 0x3a, 0x44, 0xd8, 0x5e, 0x3b, 0x01, 0x13, 0xcb, 0x5a, 0xa7, 0x83, 0xad, 0xcb, 0xee, 0x90, - 0x54, 0xf0, 0x38, 0x5c, 0xd3, 0x0c, 0x7d, 0x13, 0xdb, 0x4e, 0x7c, 0x67, 0xf9, 0x0e, 0xe1, 0xc0, - 0xc0, 0xac, 0x8c, 0xf9, 0x5e, 0xfa, 0x11, 0x32, 0xbf, 0x05, 0xb2, 0xba, 0xb1, 0x69, 0xb2, 0x2e, - 0xb3, 0x77, 0xd5, 0xde, 0xfb, 0x99, 0x4c, 0x5d, 0x48, 0x46, 0xc1, 0xd8, 0xc0, 0x82, 0x5c, 0xa4, - 0xdf, 0x73, 0xfe, 0x4e, 0x16, 0x66, 0x3d, 0x26, 0x2a, 0x46, 0x1b, 0x3f, 0x1c, 0x5e, 0x8a, 0xf9, - 0x85, 0xac, 0xe8, 0x71, 0xb0, 0xde, 0xfa, 0x10, 0x52, 0x11, 0x22, 0x6d, 0x00, 0xb4, 0x34, 0x07, - 0x6f, 0x99, 0x96, 0xee, 0xf7, 0x87, 0x4f, 0x4b, 0x42, 0xad, 0x44, 0xff, 0xbe, 0xac, 0x86, 0xe8, - 0x28, 0x77, 0xc3, 0x34, 0xf6, 0xcf, 0xdf, 0x7b, 0x4b, 0x35, 0xb1, 0x78, 0x85, 0xf3, 0xa3, 0xcf, - 0x08, 0x9d, 0x3a, 0x13, 0xa9, 0x66, 0x32, 0xcc, 0x9a, 0xc3, 0xb5, 0xa1, 0x8d, 0xea, 0x5a, 0x51, - 0xad, 0xaf, 0x14, 0x57, 0x57, 0x2b, 0xd5, 0x65, 0x3f, 0xf0, 0x8b, 0x02, 0x73, 0x8b, 0xb5, 0xf3, - 0xd5, 0x50, 0x64, 0x9e, 0x2c, 0x5a, 0x87, 0x49, 0x4f, 0x5e, 0xfd, 0x7c, 0x31, 0xc3, 0x32, 0x63, - 0xbe, 0x98, 0xa1, 0x24, 0xd7, 0x38, 0xd3, 0x5b, 0xbe, 0x83, 0x0e, 0x79, 0x46, 0x7f, 0xac, 0x41, - 0x8e, 0xac, 0xa9, 0xa3, 0xb7, 0x90, 0x6d, 0xc0, 0x6e, 0x47, 0x6b, 0x61, 0xb4, 0x93, 0xc0, 0x1a, - 0xf7, 0x6e, 0xaa, 0x90, 0xf6, 0xdd, 0x54, 0x41, 0x1e, 0x99, 0xd5, 0x77, 0xbc, 0xdf, 0x3a, 0xbe, - 0x4a, 0xb3, 0xf0, 0x07, 0xb4, 0x62, 0x77, 0x57, 0xe8, 0xf2, 0x3f, 0x63, 0x33, 0x42, 0x25, 0xa3, - 0x79, 0x4a, 0x66, 0x89, 0x8a, 0xed, 0xc3, 0xc4, 0x71, 0x34, 0x86, 0xdb, 0xd4, 0xb3, 0x90, 0xab, - 0x77, 0x3b, 0xba, 0x83, 0x7e, 0x55, 0x1a, 0x09, 0x66, 0xf4, 0x76, 0x11, 0x79, 0xe0, 0xed, 0x22, - 0xc1, 0xae, 0x6b, 0x56, 0x60, 0xd7, 0xb5, 0x81, 0x1f, 0x76, 0xf8, 0x5d, 0xd7, 0x3b, 0x58, 0xf0, - 0x36, 0xba, 0x67, 0xfb, 0xc4, 0x3e, 0x22, 0x25, 0xd5, 0xea, 0x13, 0x15, 0xf0, 0xec, 0x6d, 0x2c, - 0x38, 0x19, 0x40, 0x7e, 0xa1, 0xd6, 0x68, 0xd4, 0xd6, 0x0a, 0x47, 0x48, 0x54, 0x9b, 0xda, 0x3a, - 0x0d, 0x15, 0x53, 0xa9, 0x56, 0xcb, 0x6a, 0x41, 0x22, 0xe1, 0xd2, 0x2a, 0x8d, 0xd5, 0x72, 0x41, - 0xe6, 0x43, 0xcd, 0xc7, 0x9a, 0xdf, 0x7c, 0xd9, 0x69, 0xaa, 0x97, 0x98, 0x21, 0x1e, 0xcd, 0x4f, - 0xfa, 0xca, 0xf5, 0x4b, 0x32, 0xe4, 0xd6, 0xb0, 0xb5, 0x85, 0xd1, 0x8f, 0x25, 0xd8, 0xe4, 0xdb, - 0xd4, 0x2d, 0x9b, 0x06, 0x97, 0x0b, 0x36, 0xf9, 0xc2, 0x69, 0xca, 0xf5, 0x30, 0x6b, 0xe3, 0x96, - 0x69, 0xb4, 0xbd, 0x4c, 0xb4, 0x3f, 0xe2, 0x13, 0xf9, 0x6b, 0xfe, 0x05, 0x20, 0x23, 0x8c, 0x8e, - 0x64, 0xa7, 0x2e, 0x09, 0x30, 0xfd, 0x4a, 0x4d, 0x1f, 0x98, 0x6f, 0xc8, 0xee, 0x4f, 0xdd, 0xcb, - 0xe8, 0xa5, 0xc2, 0xbb, 0xaf, 0x37, 0x43, 0xfe, 0x82, 0x17, 0xa5, 0x58, 0x8e, 0xec, 0x8f, 0x59, - 0x1e, 0x65, 0x01, 0x8e, 0xd9, 0xb8, 0x83, 0x5b, 0x0e, 0x6e, 0xbb, 0x4d, 0x57, 0x1d, 0xd8, 0x29, - 0xec, 0xcf, 0x8e, 0xfe, 0x2c, 0x0c, 0xe0, 0x5d, 0x3c, 0x80, 0x37, 0xf4, 0x11, 0xa5, 0x5b, 0xa1, - 0x68, 0x5b, 0xd9, 0xad, 0x46, 0xbd, 0x63, 0xfa, 0x8b, 0xe2, 0xde, 0xbb, 0xfb, 0x6d, 0xdb, 0xd9, - 0xe9, 0x90, 0x6f, 0xec, 0x80, 0x81, 0xf7, 0xae, 0xcc, 0xc3, 0x84, 0x66, 0x5c, 0x26, 0x9f, 0xb2, - 0x31, 0xb5, 0xf6, 0x32, 0xa1, 0x97, 0xfb, 0xc8, 0xdf, 0xcb, 0x21, 0xff, 0x64, 0x31, 0x76, 0xd3, - 0x07, 0xfe, 0x27, 0x27, 0x20, 0xb7, 0xae, 0xd9, 0x0e, 0x46, 0xff, 0x97, 0x2c, 0x8a, 0xfc, 0x0d, - 0x30, 0xb7, 0x69, 0xb6, 0x76, 0x6d, 0xdc, 0xe6, 0x1b, 0x65, 0x4f, 0xea, 0x28, 0x30, 0x57, 0x6e, - 0x82, 0x82, 0x97, 0xc8, 0xc8, 0x7a, 0xdb, 0xf0, 0xfb, 0xd2, 0x49, 0xe0, 0x72, 0x7b, 0x5d, 0xb3, - 0x9c, 0xda, 0x26, 0x49, 0xf3, 0x03, 0x97, 0x87, 0x13, 0x39, 0xe8, 0xf3, 0x31, 0xd0, 0x4f, 0x44, - 0x43, 0x3f, 0x29, 0x00, 0xbd, 0x52, 0x84, 0xc9, 0x4d, 0xbd, 0x83, 0xc9, 0x0f, 0x53, 0xe4, 0x87, - 0x7e, 0x63, 0x12, 0x91, 0xbd, 0x3f, 0x26, 0x2d, 0xe9, 0x1d, 0xac, 0xfa, 0xbf, 0x79, 0x13, 0x19, - 0x08, 0x26, 0x32, 0xab, 0xd4, 0x9f, 0xd6, 0x35, 0xbc, 0x0c, 0x6d, 0x07, 0x7b, 0x8b, 0x6f, 0x06, - 0x3b, 0xdc, 0xd2, 0xd6, 0x1c, 0x8d, 0x80, 0x31, 0xa3, 0x92, 0x67, 0xde, 0x2f, 0x44, 0xee, 0xf5, - 0x0b, 0x79, 0x9e, 0x9c, 0xac, 0x47, 0xf4, 0x98, 0x8d, 0x68, 0x51, 0x17, 0x3c, 0x80, 0xa8, 0xa5, - 0xe8, 0xbf, 0xbb, 0xc0, 0xb4, 0x34, 0x0b, 0x3b, 0xeb, 0x61, 0x4f, 0x8c, 0x9c, 0xca, 0x27, 0x12, - 0x57, 0x3e, 0xbb, 0xae, 0xed, 0xd0, 0x40, 0xe7, 0x25, 0xf7, 0x1b, 0x73, 0xd1, 0xda, 0x97, 0x1e, - 0xf4, 0xbf, 0xb9, 0x51, 0xf7, 0xbf, 0xfd, 0xea, 0x98, 0x7e, 0x33, 0x7c, 0x65, 0x16, 0xe4, 0xd2, - 0xae, 0xf3, 0xb8, 0xee, 0x7e, 0xbf, 0x23, 0xec, 0xe7, 0xc2, 0xfa, 0xb3, 0xc8, 0x7b, 0xfd, 0xc7, - 0xd4, 0xfb, 0x26, 0xd4, 0x12, 0x31, 0x7f, 0x9a, 0xa8, 0xba, 0xa5, 0xaf, 0x23, 0x6f, 0x94, 0x7d, - 0x07, 0xcb, 0x47, 0x32, 0x07, 0x37, 0xcd, 0x11, 0xed, 0x9f, 0x42, 0x3d, 0x83, 0xff, 0xee, 0x75, - 0x3c, 0x59, 0x2e, 0x56, 0x1f, 0xd9, 0x5e, 0x27, 0xa2, 0x9c, 0x51, 0xe9, 0x0b, 0xfa, 0x35, 0x61, - 0xb7, 0x73, 0x2a, 0xb6, 0x58, 0x57, 0xc2, 0x64, 0x36, 0x95, 0xd8, 0xdd, 0xad, 0x31, 0xc5, 0xa6, - 0x0f, 0xd8, 0xd7, 0xc3, 0xae, 0x82, 0xc5, 0x03, 0x23, 0x86, 0x5e, 0x21, 0xbc, 0x1d, 0x45, 0xab, - 0x3d, 0x60, 0xbd, 0x30, 0x99, 0xbc, 0xc5, 0x36, 0xab, 0x62, 0x0b, 0x4e, 0x5f, 0xe2, 0x5f, 0x93, - 0x21, 0x4f, 0xb7, 0x20, 0xd1, 0xeb, 0x33, 0x09, 0x2e, 0xbd, 0x77, 0x78, 0x17, 0x42, 0xff, 0x3d, - 0xc9, 0x9a, 0x03, 0xe7, 0x6a, 0x98, 0x4d, 0xe4, 0x6a, 0xc8, 0x9f, 0xe3, 0x14, 0x68, 0x47, 0xb4, - 0x8e, 0x29, 0x4f, 0x27, 0x93, 0xb4, 0xb0, 0xbe, 0x0c, 0xa5, 0x8f, 0xf7, 0x4f, 0xe7, 0x60, 0x86, - 0x16, 0x7d, 0x5e, 0x6f, 0x6f, 0x61, 0x07, 0xbd, 0x4d, 0xfa, 0xee, 0x41, 0x5d, 0xa9, 0xc2, 0xcc, - 0x25, 0xc2, 0x36, 0xbd, 0x91, 0x85, 0xad, 0x5c, 0xdc, 0x14, 0xbb, 0xee, 0x41, 0xeb, 0xe9, 0xdd, - 0xe1, 0xc2, 0xfd, 0xef, 0xca, 0x98, 0x2e, 0xf8, 0x53, 0x07, 0xae, 0x3c, 0x31, 0xb2, 0xc2, 0x49, - 0xca, 0x49, 0xc8, 0xef, 0xe9, 0xf8, 0x52, 0xa5, 0xcd, 0xac, 0x5b, 0xf6, 0x86, 0xfe, 0x40, 0x78, - 0xdf, 0x36, 0x0c, 0x37, 0xe3, 0x25, 0x5d, 0x2d, 0x14, 0xdb, 0xbd, 0x1d, 0xc8, 0xd6, 0x18, 0xce, - 0x14, 0xf3, 0x77, 0xa3, 0x96, 0x12, 0x28, 0x62, 0x94, 0xe1, 0xcc, 0x87, 0xf2, 0x88, 0x3d, 0xb1, - 0x42, 0x05, 0x30, 0xe2, 0x6b, 0x53, 0xc5, 0xe2, 0x4b, 0x0c, 0x28, 0x3a, 0x7d, 0xc9, 0xbf, 0x5a, - 0x86, 0xa9, 0x3a, 0x76, 0x96, 0x74, 0xdc, 0x69, 0xdb, 0xc8, 0x3a, 0xb8, 0x69, 0x74, 0x0b, 0xe4, - 0x37, 0x09, 0xb1, 0x41, 0xe7, 0x16, 0x58, 0x36, 0xf4, 0x4a, 0x49, 0x74, 0x47, 0x98, 0xad, 0xbe, - 0x79, 0xdc, 0x8e, 0x04, 0x26, 0x31, 0x8f, 0xde, 0xf8, 0x92, 0xc7, 0x10, 0xd8, 0x56, 0x86, 0x19, - 0x76, 0x99, 0x62, 0xb1, 0xa3, 0x6f, 0x19, 0x68, 0x77, 0x04, 0x2d, 0x44, 0xb9, 0x15, 0x72, 0x9a, - 0x4b, 0x8d, 0x6d, 0xbd, 0xa2, 0xbe, 0x9d, 0x27, 0x29, 0x4f, 0xa5, 0x19, 0x13, 0x84, 0x91, 0x0c, - 0x14, 0xdb, 0xe3, 0x79, 0x8c, 0x61, 0x24, 0x07, 0x16, 0x9e, 0x3e, 0x62, 0x5f, 0x90, 0xe1, 0x38, - 0x63, 0xe0, 0x1c, 0xb6, 0x1c, 0xbd, 0xa5, 0x75, 0x28, 0x72, 0x2f, 0xcc, 0x8c, 0x02, 0xba, 0x15, - 0x98, 0xdd, 0x0b, 0x93, 0x65, 0x10, 0x9e, 0xed, 0x0b, 0x21, 0xc7, 0x80, 0xca, 0xff, 0x98, 0x20, - 0x1c, 0x1f, 0x27, 0x55, 0x8e, 0xe6, 0x18, 0xc3, 0xf1, 0x09, 0x33, 0x91, 0x3e, 0xc4, 0x2f, 0x61, - 0xa1, 0x79, 0x82, 0xee, 0xf3, 0xb3, 0xc2, 0xd8, 0x6e, 0xc0, 0x34, 0xc1, 0x92, 0xfe, 0xc8, 0x96, - 0x21, 0x62, 0x94, 0xd8, 0xef, 0x77, 0xd8, 0x85, 0x61, 0xfe, 0xbf, 0x6a, 0x98, 0x0e, 0x3a, 0x0f, - 0x10, 0x7c, 0x0a, 0x77, 0xd2, 0x99, 0xa8, 0x4e, 0x5a, 0x12, 0xeb, 0xa4, 0x5f, 0x27, 0x1c, 0x2c, - 0xa5, 0x3f, 0xdb, 0x07, 0x57, 0x0f, 0xb1, 0x30, 0x19, 0x83, 0x4b, 0x4f, 0x5f, 0x2f, 0x5e, 0x9e, - 0xed, 0xbd, 0x35, 0xff, 0x83, 0x23, 0x99, 0x4f, 0x85, 0xfb, 0x03, 0xb9, 0xa7, 0x3f, 0x38, 0x80, - 0x25, 0x7d, 0x23, 0x1c, 0xa5, 0x45, 0x94, 0x7c, 0xb6, 0x72, 0x34, 0x14, 0x44, 0x4f, 0x32, 0xfa, - 0xd0, 0x10, 0x4a, 0x30, 0xe8, 0x4a, 0xff, 0xb8, 0x4e, 0x2e, 0x99, 0xb1, 0x9b, 0x54, 0x41, 0xa2, - 0x38, 0x1b, 0x83, 0x5b, 0x68, 0x96, 0x5a, 0xbb, 0x1b, 0xe4, 0x4e, 0x37, 0xf4, 0x17, 0xd9, 0x51, - 0x8c, 0x08, 0xf7, 0x41, 0x96, 0xb8, 0xb8, 0xcb, 0x91, 0x4b, 0x1a, 0x41, 0x91, 0xc1, 0x85, 0x7b, - 0xf8, 0x61, 0x67, 0xe5, 0x88, 0x4a, 0xfe, 0x54, 0x6e, 0x82, 0xa3, 0x17, 0xb4, 0xd6, 0xc5, 0x2d, - 0xcb, 0xdc, 0x25, 0xb7, 0x5f, 0x99, 0xec, 0x1a, 0x2d, 0x72, 0x1d, 0x21, 0xff, 0x41, 0xb9, 0xdd, - 0x33, 0x1d, 0x72, 0x83, 0x4c, 0x87, 0x95, 0x23, 0xcc, 0x78, 0x50, 0x6e, 0xf3, 0x3b, 0x9d, 0x7c, - 0x6c, 0xa7, 0xb3, 0x72, 0xc4, 0xeb, 0x76, 0x94, 0x45, 0x98, 0x6c, 0xeb, 0x7b, 0x64, 0xab, 0x9a, - 0xcc, 0xba, 0x06, 0x1d, 0x5d, 0x5e, 0xd4, 0xf7, 0xe8, 0xc6, 0xf6, 0xca, 0x11, 0xd5, 0xff, 0x53, - 0x59, 0x86, 0x29, 0xb2, 0x2d, 0x40, 0xc8, 0x4c, 0x26, 0x3a, 0x96, 0xbc, 0x72, 0x44, 0x0d, 0xfe, - 0x75, 0xad, 0x8f, 0x2c, 0x39, 0xfb, 0x71, 0xaf, 0xb7, 0xdd, 0x9e, 0x49, 0xb4, 0xdd, 0xee, 0xca, - 0x82, 0x6e, 0xb8, 0x9f, 0x84, 0x5c, 0x8b, 0x48, 0x58, 0x62, 0x12, 0xa6, 0xaf, 0xca, 0x5d, 0x90, - 0xdd, 0xd1, 0x2c, 0x6f, 0xf2, 0x7c, 0xc3, 0x60, 0xba, 0x6b, 0x9a, 0x75, 0xd1, 0x45, 0xd0, 0xfd, - 0x6b, 0x61, 0x02, 0x72, 0x44, 0x70, 0xfe, 0x03, 0x7a, 0x63, 0x96, 0x9a, 0x21, 0x25, 0xd3, 0x70, - 0x87, 0xfd, 0x86, 0xe9, 0x1d, 0x90, 0xf9, 0x83, 0xcc, 0x68, 0x2c, 0xc8, 0xbe, 0xd7, 0xcc, 0xcb, - 0x91, 0xd7, 0xcc, 0xf7, 0xdc, 0x77, 0x9c, 0xed, 0xbd, 0xef, 0x38, 0x58, 0x3e, 0xc8, 0x0d, 0x76, - 0x54, 0xf9, 0xb3, 0x21, 0x4c, 0x97, 0x5e, 0x41, 0x44, 0xcf, 0xc0, 0x3b, 0xba, 0x11, 0xaa, 0xb3, - 0xf7, 0x9a, 0xb0, 0x53, 0x4a, 0x6a, 0xd4, 0x0c, 0x60, 0x2f, 0xfd, 0xbe, 0xe9, 0xb7, 0xb2, 0x70, - 0x8a, 0xde, 0xaa, 0xbd, 0x87, 0x1b, 0x26, 0x7f, 0xdf, 0x24, 0xfa, 0xd8, 0x48, 0x94, 0xa6, 0xcf, - 0x80, 0x23, 0xf7, 0x1d, 0x70, 0xf6, 0x1d, 0x52, 0xce, 0x0e, 0x38, 0xa4, 0x9c, 0x4b, 0xb6, 0x72, - 0xf8, 0xde, 0xb0, 0xfe, 0xac, 0xf3, 0xfa, 0x73, 0x67, 0x04, 0x40, 0xfd, 0xe4, 0x32, 0x12, 0xfb, - 0xe6, 0x2d, 0xbe, 0xa6, 0xd4, 0x39, 0x4d, 0xb9, 0x77, 0x78, 0x46, 0xd2, 0xd7, 0x96, 0xdf, 0xcf, - 0xc2, 0x15, 0x01, 0x33, 0x55, 0x7c, 0x89, 0x29, 0xca, 0xa7, 0x47, 0xa2, 0x28, 0xc9, 0x63, 0x20, - 0xa4, 0xad, 0x31, 0x7f, 0x22, 0x7c, 0x76, 0xa8, 0x17, 0x28, 0x5f, 0x36, 0x11, 0xca, 0x72, 0x12, - 0xf2, 0xb4, 0x87, 0x61, 0xd0, 0xb0, 0xb7, 0x84, 0xdd, 0x8d, 0xd8, 0x89, 0x23, 0x51, 0xde, 0xc6, - 0xa0, 0x3f, 0x6c, 0x5d, 0xa3, 0xb1, 0x6b, 0x19, 0x15, 0xc3, 0x31, 0xd1, 0x4f, 0x8c, 0x44, 0x71, - 0x7c, 0x6f, 0x38, 0x79, 0x18, 0x6f, 0xb8, 0xa1, 0x56, 0x39, 0xbc, 0x1a, 0x1c, 0xca, 0x2a, 0x47, - 0x44, 0xe1, 0xe9, 0xe3, 0xf7, 0x66, 0x19, 0x4e, 0xb2, 0xc9, 0xd6, 0x02, 0x6f, 0x21, 0xa2, 0x07, - 0x47, 0x01, 0xe4, 0x71, 0xcf, 0x4c, 0x62, 0xb7, 0x9c, 0x91, 0x17, 0xfe, 0xa4, 0x54, 0xec, 0xfd, - 0x0e, 0xdc, 0x74, 0xb0, 0x87, 0xc3, 0x91, 0x20, 0x25, 0x76, 0xad, 0x43, 0x02, 0x36, 0xd2, 0xc7, - 0xec, 0xc5, 0x32, 0xe4, 0xe9, 0x39, 0x2d, 0xb4, 0x91, 0x8a, 0xc3, 0x04, 0x1f, 0xe5, 0x59, 0x60, - 0x47, 0x2e, 0xf1, 0x25, 0xf7, 0xe9, 0xed, 0xc5, 0x1d, 0xd2, 0x2d, 0xf6, 0xdf, 0x90, 0x60, 0xba, - 0x8e, 0x9d, 0x92, 0x66, 0x59, 0xba, 0xb6, 0x35, 0x2a, 0x8f, 0x6f, 0x51, 0xef, 0x61, 0xf4, 0xcd, - 0x8c, 0xe8, 0x79, 0x1a, 0x7f, 0x21, 0xdc, 0x63, 0x35, 0x22, 0x96, 0xe0, 0xa3, 0x42, 0x67, 0x66, - 0x06, 0x51, 0x1b, 0x83, 0xc7, 0xb6, 0x04, 0x13, 0xde, 0x59, 0xbc, 0x5b, 0xb8, 0xf3, 0x99, 0xdb, - 0xce, 0x8e, 0x77, 0x0c, 0x86, 0x3c, 0xef, 0x3f, 0x03, 0x86, 0x5e, 0x96, 0xd0, 0x51, 0x3e, 0xfe, - 0x20, 0x61, 0xb2, 0x36, 0x96, 0xc4, 0x1d, 0xfe, 0xb0, 0x8e, 0x0e, 0xfe, 0xee, 0x04, 0x5b, 0x8e, - 0x5c, 0xd5, 0x1c, 0xfc, 0x30, 0xfa, 0xac, 0x0c, 0x13, 0x75, 0xec, 0xb8, 0xe3, 0x2d, 0x77, 0xb9, - 0xe9, 0xb0, 0x1a, 0xae, 0x84, 0x56, 0x3c, 0xa6, 0xd8, 0x1a, 0xc6, 0xfd, 0x30, 0xd5, 0xb5, 0xcc, - 0x16, 0xb6, 0x6d, 0xb6, 0x7a, 0x11, 0x76, 0x54, 0xeb, 0x37, 0xfa, 0x13, 0xd6, 0xe6, 0xd7, 0xbd, - 0x7f, 0xd4, 0xe0, 0xf7, 0xa4, 0x66, 0x00, 0xa5, 0xc4, 0x2a, 0x38, 0x6e, 0x33, 0x20, 0xae, 0xf0, - 0xf4, 0x81, 0xfe, 0xa4, 0x0c, 0x33, 0x75, 0xec, 0xf8, 0x52, 0x4c, 0xb0, 0xc9, 0x11, 0x0d, 0x2f, - 0x07, 0xa5, 0x7c, 0x30, 0x28, 0xc5, 0xaf, 0x06, 0xe4, 0xa5, 0xe9, 0x13, 0x1b, 0xe3, 0xd5, 0x80, - 0x62, 0x1c, 0x8c, 0xe1, 0xf8, 0xda, 0x13, 0x61, 0x8a, 0xf0, 0x42, 0x1a, 0xec, 0xcf, 0x66, 0x83, - 0xc6, 0xfb, 0xb9, 0x94, 0x1a, 0xef, 0xdd, 0x90, 0xdb, 0xd1, 0xac, 0x8b, 0x36, 0x69, 0xb8, 0xd3, - 0x22, 0x66, 0xfb, 0x9a, 0x9b, 0x5d, 0xa5, 0x7f, 0xf5, 0xf7, 0xd3, 0xcc, 0x25, 0xf3, 0xd3, 0x7c, - 0x54, 0x4a, 0x34, 0x12, 0xd2, 0xb9, 0xc3, 0x08, 0x9b, 0x7c, 0x82, 0x71, 0x33, 0xa6, 0xec, 0xf4, - 0x95, 0xe3, 0x85, 0x32, 0x4c, 0xba, 0xe3, 0x36, 0xb1, 0xc7, 0xcf, 0x1f, 0x5c, 0x1d, 0xfa, 0x1b, - 0xfa, 0x09, 0x7b, 0x60, 0x4f, 0x22, 0xa3, 0x33, 0xef, 0x13, 0xf4, 0xc0, 0x71, 0x85, 0xa7, 0x8f, - 0xc7, 0x5b, 0x29, 0x1e, 0xa4, 0x3d, 0xa0, 0xdf, 0x94, 0x41, 0x5e, 0xc6, 0xce, 0xb8, 0xad, 0xc8, - 0x37, 0x09, 0x87, 0x38, 0xe2, 0x04, 0x46, 0x78, 0x9e, 0x5f, 0xc6, 0xa3, 0x69, 0x40, 0x62, 0xb1, - 0x8d, 0x84, 0x18, 0x48, 0x1f, 0xb5, 0x77, 0x52, 0xd4, 0xe8, 0xe6, 0xc2, 0x8f, 0x8f, 0xa0, 0x57, - 0x1d, 0xef, 0xc2, 0x87, 0x27, 0x40, 0x42, 0xe3, 0xb0, 0xda, 0x5b, 0xbf, 0xc2, 0xc7, 0x72, 0x15, - 0x1f, 0xb8, 0x8d, 0x7d, 0x1b, 0xb7, 0x2e, 0xe2, 0x36, 0xfa, 0x91, 0x83, 0x43, 0x77, 0x0a, 0x26, - 0x5a, 0x94, 0x1a, 0x01, 0x6f, 0x52, 0xf5, 0x5e, 0x13, 0xdc, 0x2b, 0xcd, 0x77, 0x44, 0xf4, 0xf7, - 0x31, 0xde, 0x2b, 0x2d, 0x50, 0xfc, 0x18, 0xcc, 0x16, 0x3a, 0xcb, 0xa8, 0xb4, 0x4c, 0x03, 0xfd, - 0x97, 0x83, 0xc3, 0x72, 0x0d, 0x4c, 0xe9, 0x2d, 0xd3, 0x20, 0x61, 0x28, 0xbc, 0x43, 0x40, 0x7e, - 0x82, 0xf7, 0xb5, 0xbc, 0x63, 0x3e, 0xa4, 0xb3, 0x5d, 0xf3, 0x20, 0x61, 0x58, 0x63, 0xc2, 0x65, - 0xfd, 0xb0, 0x8c, 0x89, 0x3e, 0x65, 0xa7, 0x0f, 0xd9, 0x87, 0x02, 0xef, 0x36, 0xda, 0x15, 0x3e, - 0x2e, 0x56, 0x81, 0x87, 0x19, 0xce, 0xc2, 0xb5, 0x38, 0x94, 0xe1, 0x2c, 0x86, 0x81, 0x31, 0xdc, - 0x58, 0x11, 0xe0, 0x98, 0xfa, 0x1a, 0xf0, 0x01, 0xd0, 0x19, 0x9d, 0x79, 0x38, 0x24, 0x3a, 0x87, - 0x63, 0x22, 0xbe, 0x87, 0x85, 0xc8, 0x64, 0x16, 0x0f, 0xfa, 0xaf, 0xa3, 0x00, 0xe7, 0xce, 0x61, - 0xfc, 0x15, 0xa8, 0xb7, 0x42, 0x82, 0x1b, 0xb1, 0xf7, 0x49, 0xd0, 0xa5, 0x32, 0xc6, 0xbb, 0xe2, - 0x45, 0xca, 0x4f, 0x1f, 0xc0, 0x17, 0xc8, 0x30, 0x47, 0x7c, 0x04, 0x3a, 0x58, 0xb3, 0x68, 0x47, - 0x39, 0x12, 0x47, 0xf9, 0xb7, 0x0a, 0x07, 0xf8, 0xe1, 0xe5, 0x10, 0xf0, 0x31, 0x12, 0x28, 0xc4, - 0xa2, 0xfb, 0x08, 0xb2, 0x30, 0x96, 0x6d, 0x94, 0x82, 0xcf, 0x02, 0x53, 0xf1, 0xd1, 0xe0, 0x91, - 0xd0, 0x23, 0x97, 0x17, 0x86, 0xd7, 0xd8, 0xc6, 0xec, 0x91, 0x2b, 0xc2, 0x44, 0xfa, 0x98, 0xfc, - 0xe6, 0xad, 0x6c, 0xc1, 0xb9, 0x41, 0x2e, 0x8c, 0x7f, 0x45, 0xd6, 0x3f, 0xd1, 0xf6, 0xc9, 0x91, - 0x78, 0x60, 0x1e, 0x20, 0x20, 0xbe, 0x02, 0x59, 0xcb, 0xbc, 0x44, 0x97, 0xb6, 0x66, 0x55, 0xf2, - 0x4c, 0xaf, 0xa7, 0xec, 0xec, 0xee, 0x18, 0xf4, 0x64, 0xe8, 0xac, 0xea, 0xbd, 0x2a, 0xd7, 0xc3, - 0xec, 0x25, 0xdd, 0xd9, 0x5e, 0xc1, 0x5a, 0x1b, 0x5b, 0xaa, 0x79, 0x89, 0x78, 0xcc, 0x4d, 0xaa, - 0x7c, 0x22, 0xef, 0xbf, 0x22, 0x60, 0x5f, 0x92, 0x5b, 0xe4, 0xc7, 0x72, 0xfc, 0x2d, 0x89, 0xe5, - 0x19, 0xcd, 0x55, 0xfa, 0x0a, 0xf3, 0x2e, 0x19, 0xa6, 0x54, 0xf3, 0x12, 0x53, 0x92, 0xff, 0xe3, - 0x70, 0x75, 0x24, 0xf1, 0x44, 0x8f, 0x48, 0xce, 0x67, 0x7f, 0xec, 0x13, 0xbd, 0xd8, 0xe2, 0xc7, - 0x72, 0x72, 0x69, 0x46, 0x35, 0x2f, 0xd5, 0xb1, 0x43, 0x5b, 0x04, 0x6a, 0x8e, 0xc8, 0xc9, 0x5a, - 0xb7, 0x29, 0x41, 0x36, 0x0f, 0xf7, 0xdf, 0x93, 0xee, 0x22, 0xf8, 0x02, 0xf2, 0x59, 0x1c, 0xf7, - 0x2e, 0xc2, 0x40, 0x0e, 0xc6, 0x10, 0x23, 0x45, 0x86, 0x69, 0xd5, 0xbc, 0xe4, 0x0e, 0x0d, 0x4b, - 0x7a, 0xa7, 0x33, 0x9a, 0x11, 0x32, 0xa9, 0xf1, 0xef, 0x89, 0xc1, 0xe3, 0x62, 0xec, 0xc6, 0xff, - 0x00, 0x06, 0xd2, 0x87, 0xe1, 0x79, 0xb4, 0xb1, 0x78, 0x23, 0xb4, 0x31, 0x1a, 0x1c, 0x86, 0x6d, - 0x10, 0x3e, 0x1b, 0x87, 0xd6, 0x20, 0xa2, 0x38, 0x18, 0xcb, 0xce, 0xc9, 0x5c, 0x89, 0x0c, 0xf3, - 0xa3, 0x6d, 0x13, 0x6f, 0x4f, 0xe6, 0x9a, 0xc8, 0x86, 0x5d, 0x8e, 0x91, 0x91, 0xa0, 0x91, 0xc0, - 0x05, 0x51, 0x80, 0x87, 0xf4, 0xf1, 0x78, 0xbf, 0x0c, 0x33, 0x94, 0x85, 0xc7, 0x89, 0x15, 0x30, - 0x54, 0xa3, 0x0a, 0xd7, 0xe0, 0x70, 0x1a, 0x55, 0x0c, 0x07, 0x63, 0xb9, 0x15, 0xd4, 0xb5, 0xe3, - 0x86, 0x38, 0x3e, 0x1e, 0x85, 0xe0, 0xd0, 0xc6, 0xd8, 0x08, 0x8f, 0x90, 0x0f, 0x63, 0x8c, 0x1d, - 0xd2, 0x31, 0xf2, 0xe7, 0xf9, 0xad, 0x68, 0x94, 0x18, 0x1c, 0xa0, 0x29, 0x8c, 0x10, 0x86, 0x21, - 0x9b, 0xc2, 0x21, 0x21, 0xf1, 0x45, 0x19, 0x80, 0x32, 0xb0, 0x66, 0xee, 0x91, 0xcb, 0x7c, 0x46, - 0xd0, 0x9d, 0xf5, 0xba, 0xd5, 0xcb, 0x03, 0xdc, 0xea, 0x13, 0x86, 0x70, 0x49, 0xba, 0x12, 0x18, - 0x92, 0xb2, 0x5b, 0xc9, 0xb1, 0xaf, 0x04, 0xc6, 0x97, 0x9f, 0x3e, 0xc6, 0x8f, 0x51, 0x6b, 0x2e, - 0x38, 0x60, 0xfa, 0x2b, 0x23, 0x41, 0x39, 0x34, 0xfb, 0x97, 0xf9, 0xd9, 0xff, 0x01, 0xb0, 0x1d, - 0xd6, 0x46, 0x1c, 0x74, 0x70, 0x34, 0x7d, 0x1b, 0xf1, 0xf0, 0x0e, 0x88, 0xfe, 0x78, 0x16, 0x8e, - 0xb2, 0x4e, 0xe4, 0xbb, 0x01, 0xe2, 0x84, 0xe7, 0xf0, 0xb8, 0x4e, 0x72, 0x00, 0xca, 0xa3, 0x5a, - 0x90, 0x4a, 0xb2, 0x94, 0x29, 0xc0, 0xde, 0x58, 0x56, 0x37, 0xf2, 0xe5, 0x87, 0xbb, 0x9a, 0xd1, - 0x16, 0x0f, 0xf7, 0x3b, 0x00, 0x78, 0x6f, 0xad, 0x51, 0xe6, 0xd7, 0x1a, 0xfb, 0xac, 0x4c, 0x26, - 0xde, 0xb9, 0x26, 0x22, 0xa3, 0xec, 0x8e, 0x7d, 0xe7, 0x3a, 0xba, 0xec, 0xf4, 0x51, 0x7a, 0xbb, - 0x0c, 0xd9, 0xba, 0x69, 0x39, 0xe8, 0xf9, 0x49, 0x5a, 0x27, 0x95, 0x7c, 0x00, 0x92, 0xf7, 0xae, - 0x94, 0xb8, 0x5b, 0x9a, 0x6f, 0x89, 0x3f, 0xea, 0xac, 0x39, 0x1a, 0xf1, 0xea, 0x76, 0xcb, 0x0f, - 0x5d, 0xd7, 0x9c, 0x34, 0x9e, 0x0e, 0x95, 0x5f, 0x3d, 0xfa, 0x00, 0x46, 0x6a, 0xf1, 0x74, 0x22, - 0x4b, 0x4e, 0x1f, 0xb7, 0x57, 0x1d, 0x65, 0xbe, 0xad, 0x4b, 0x7a, 0x07, 0xa3, 0xe7, 0x53, 0x97, - 0x91, 0xaa, 0xb6, 0x83, 0xc5, 0x8f, 0xc4, 0xc4, 0xba, 0xb6, 0x92, 0xf8, 0xb2, 0x72, 0x10, 0x5f, - 0x36, 0x69, 0x83, 0xa2, 0x07, 0xd0, 0x29, 0x4b, 0xe3, 0x6e, 0x50, 0x31, 0x65, 0x8f, 0x25, 0x4e, - 0xe7, 0xb1, 0x3a, 0x76, 0xa8, 0x51, 0x59, 0xf3, 0x6e, 0x60, 0xf9, 0xd1, 0x91, 0x44, 0xec, 0xf4, - 0x2f, 0x78, 0x91, 0x7b, 0x2e, 0x78, 0x79, 0x57, 0x18, 0x9c, 0x35, 0x1e, 0x9c, 0x1f, 0x8c, 0x16, - 0x10, 0xcf, 0xe4, 0x48, 0x60, 0x7a, 0x93, 0x0f, 0xd3, 0x3a, 0x07, 0xd3, 0x5d, 0x43, 0x72, 0x91, - 0x3e, 0x60, 0x3f, 0x97, 0x83, 0xa3, 0x74, 0xd2, 0x5f, 0x34, 0xda, 0x2c, 0xc2, 0xea, 0xeb, 0xa5, - 0x43, 0xde, 0x6c, 0xdb, 0x1f, 0x82, 0x95, 0x8b, 0xe5, 0x9c, 0xeb, 0xbd, 0x1d, 0x7f, 0x81, 0x86, - 0x73, 0x75, 0x3b, 0x51, 0xb2, 0xd3, 0x26, 0x7e, 0x43, 0xbe, 0xff, 0x1f, 0x7f, 0x97, 0xd1, 0x84, - 0xf8, 0x5d, 0x46, 0x7f, 0x9a, 0x6c, 0xdd, 0x8e, 0x14, 0xdd, 0x23, 0xf0, 0x94, 0x6d, 0xa7, 0x04, - 0x2b, 0x7a, 0x02, 0xdc, 0x7d, 0x6f, 0xb8, 0x93, 0x05, 0x11, 0x44, 0x86, 0x74, 0x27, 0x23, 0x04, - 0x0e, 0xd3, 0x9d, 0x6c, 0x10, 0x03, 0x63, 0xb8, 0xd5, 0x3e, 0xc7, 0x76, 0xf3, 0x49, 0xbb, 0x41, - 0x7f, 0x25, 0xa5, 0x3e, 0x4a, 0x7f, 0x2b, 0x93, 0xc8, 0xff, 0x99, 0xf0, 0x15, 0x3f, 0x4c, 0x27, - 0xf1, 0x68, 0x8e, 0x23, 0x37, 0x86, 0x75, 0x23, 0x89, 0xf8, 0xa2, 0x9f, 0xd7, 0xdb, 0xce, 0xf6, - 0x88, 0x4e, 0x74, 0x5c, 0x72, 0x69, 0x79, 0xd7, 0x23, 0x93, 0x17, 0xf4, 0x6f, 0x99, 0x44, 0x21, - 0xa4, 0x7c, 0x91, 0x10, 0xb6, 0x22, 0x44, 0x9c, 0x20, 0xf0, 0x53, 0x2c, 0xbd, 0x31, 0x6a, 0xf4, - 0x39, 0xbd, 0x8d, 0xcd, 0xc7, 0xa1, 0x46, 0x13, 0xbe, 0x46, 0xa7, 0xd1, 0x71, 0xe4, 0xbe, 0x47, - 0x35, 0xda, 0x17, 0xc9, 0x88, 0x34, 0x3a, 0x96, 0x5e, 0xfa, 0x32, 0x7e, 0xd9, 0x0c, 0x9b, 0x48, - 0xad, 0xea, 0xc6, 0x45, 0xf4, 0xcf, 0x79, 0xef, 0x62, 0xe6, 0xf3, 0xba, 0xb3, 0xcd, 0x62, 0xc1, - 0xfc, 0xbe, 0xf0, 0xdd, 0x28, 0x43, 0xc4, 0x7b, 0xe1, 0xc3, 0x49, 0xe5, 0xf6, 0x85, 0x93, 0x2a, - 0xc2, 0xac, 0x6e, 0x38, 0xd8, 0x32, 0xb4, 0xce, 0x52, 0x47, 0xdb, 0xb2, 0x4f, 0x4d, 0xf4, 0xbd, - 0xbc, 0xae, 0x12, 0xca, 0xa3, 0xf2, 0x7f, 0x84, 0xaf, 0xaf, 0x9c, 0xe4, 0xaf, 0xaf, 0x8c, 0x88, - 0x7e, 0x35, 0x15, 0x1d, 0xfd, 0xca, 0x8f, 0x6e, 0x05, 0x83, 0x83, 0x63, 0x8b, 0xda, 0xc6, 0x09, - 0xc3, 0xfd, 0xdd, 0x22, 0x18, 0x85, 0xcd, 0x0f, 0xfd, 0xf8, 0x1b, 0x72, 0xa2, 0xd5, 0x3d, 0x57, - 0x11, 0xe6, 0x7b, 0x95, 0x20, 0xb1, 0x85, 0x1a, 0xae, 0xbc, 0xdc, 0x53, 0x79, 0xdf, 0xe4, 0xc9, - 0x0a, 0x98, 0x3c, 0x61, 0xa5, 0xca, 0x89, 0x29, 0x55, 0x92, 0xc5, 0x42, 0x91, 0xda, 0x8e, 0xe1, - 0x34, 0x52, 0x0e, 0x8e, 0x79, 0xd1, 0x6e, 0xbb, 0x5d, 0xac, 0x59, 0x9a, 0xd1, 0xc2, 0xe8, 0x43, - 0xd2, 0x28, 0xcc, 0xde, 0x25, 0x98, 0xd4, 0x5b, 0xa6, 0x51, 0xd7, 0x9f, 0xed, 0x5d, 0x2e, 0x17, - 0x1f, 0x64, 0x9d, 0x48, 0xa4, 0xc2, 0xfe, 0x50, 0xfd, 0x7f, 0x95, 0x0a, 0x4c, 0xb5, 0x34, 0xab, - 0x4d, 0x83, 0xf0, 0xe5, 0x7a, 0x2e, 0x72, 0x8a, 0x24, 0x54, 0xf2, 0x7e, 0x51, 0x83, 0xbf, 0x95, - 0x1a, 0x2f, 0xc4, 0x7c, 0x4f, 0x34, 0x8f, 0x48, 0x62, 0x8b, 0xc1, 0x4f, 0x9c, 0xcc, 0x5d, 0xe9, - 0x58, 0xb8, 0x43, 0xee, 0xa0, 0xa7, 0x3d, 0xc4, 0x94, 0x1a, 0x24, 0x24, 0x5d, 0x1e, 0x20, 0x45, - 0xed, 0x43, 0x63, 0xdc, 0xcb, 0x03, 0x42, 0x5c, 0xa4, 0xaf, 0x99, 0x6f, 0xc9, 0xc3, 0x2c, 0xed, - 0xd5, 0x98, 0x38, 0xd1, 0x0b, 0xc8, 0x15, 0xd2, 0xce, 0x03, 0xf8, 0x32, 0xaa, 0x1f, 0x7c, 0x4c, - 0x2e, 0x80, 0x7c, 0xd1, 0x0f, 0x38, 0xe8, 0x3e, 0x26, 0xdd, 0xb7, 0xf7, 0xf8, 0x9a, 0xa7, 0x3c, - 0x8d, 0x7b, 0xdf, 0x3e, 0xbe, 0xf8, 0xf4, 0xf1, 0xf9, 0x79, 0x19, 0xe4, 0x62, 0xbb, 0x8d, 0x5a, - 0x07, 0x87, 0xe2, 0x0c, 0x4c, 0x7b, 0x6d, 0x26, 0x88, 0x01, 0x19, 0x4e, 0x4a, 0xba, 0x08, 0xea, - 0xcb, 0xa6, 0xd8, 0x1e, 0xfb, 0xae, 0x42, 0x4c, 0xd9, 0xe9, 0x83, 0xf2, 0x2b, 0x13, 0xac, 0xd1, - 0x2c, 0x98, 0xe6, 0x45, 0x72, 0x54, 0xe6, 0xf9, 0x32, 0xe4, 0x96, 0xb0, 0xd3, 0xda, 0x1e, 0x51, - 0x9b, 0xd9, 0xb5, 0x3a, 0x5e, 0x9b, 0xd9, 0x77, 0x1f, 0xfe, 0x60, 0x1b, 0xd6, 0x63, 0x6b, 0x9e, - 0xb0, 0x34, 0xee, 0xe8, 0xce, 0xb1, 0xa5, 0xa7, 0x0f, 0xce, 0xbf, 0xc9, 0x30, 0xe7, 0xaf, 0x70, - 0x51, 0x4c, 0x7e, 0x2e, 0xf3, 0x78, 0x5b, 0xef, 0x44, 0x9f, 0x4e, 0x16, 0x22, 0xcd, 0x97, 0x29, - 0x5f, 0xb3, 0x94, 0x17, 0x16, 0x13, 0x04, 0x4f, 0x13, 0x63, 0x70, 0x0c, 0x33, 0x78, 0x19, 0x26, - 0x09, 0x43, 0x8b, 0xfa, 0x1e, 0x71, 0x1d, 0xe4, 0x16, 0x1a, 0x9f, 0x33, 0x92, 0x85, 0xc6, 0xbb, - 0xf8, 0x85, 0x46, 0xc1, 0x88, 0xc7, 0xde, 0x3a, 0x63, 0x42, 0x5f, 0x1a, 0xf7, 0xff, 0x91, 0x2f, - 0x33, 0x26, 0xf0, 0xa5, 0x19, 0x50, 0x7e, 0xfa, 0x88, 0xfe, 0xc6, 0x7f, 0x62, 0x9d, 0xad, 0xb7, - 0xa1, 0x8a, 0xfe, 0xe7, 0x31, 0xc8, 0x9e, 0x73, 0x1f, 0xfe, 0x77, 0x70, 0x23, 0xd6, 0x4b, 0x47, - 0x10, 0x9c, 0xe1, 0x1e, 0xc8, 0xba, 0xf4, 0xd9, 0xb4, 0xe5, 0x26, 0xb1, 0xdd, 0x5d, 0x97, 0x11, - 0x95, 0xfc, 0xa7, 0x9c, 0x84, 0xbc, 0x6d, 0xee, 0x5a, 0x2d, 0xd7, 0x7c, 0x76, 0x35, 0x86, 0xbd, - 0x25, 0x0d, 0x4a, 0xca, 0x91, 0x9e, 0x1f, 0x9d, 0xcb, 0x68, 0xe8, 0x82, 0x24, 0x99, 0xbb, 0x20, - 0x29, 0xc1, 0xfe, 0x81, 0x00, 0x6f, 0xe9, 0x6b, 0xc4, 0x5f, 0x91, 0xbb, 0x02, 0xdb, 0xa3, 0x82, - 0x3d, 0x42, 0x2c, 0x07, 0x55, 0x87, 0xa4, 0x0e, 0xdf, 0xbc, 0x68, 0xfd, 0x38, 0xf0, 0x63, 0x75, - 0xf8, 0x16, 0xe0, 0x61, 0x2c, 0xa7, 0xd4, 0xf3, 0xcc, 0x49, 0xf5, 0xc1, 0x51, 0xa2, 0x9b, 0xe5, - 0x94, 0xfe, 0x40, 0xe8, 0x8c, 0xd0, 0x79, 0x75, 0x68, 0x74, 0x0e, 0xc9, 0x7d, 0xf5, 0x0f, 0x65, - 0x12, 0x09, 0xd3, 0x33, 0x72, 0xc4, 0x2f, 0x3a, 0x4a, 0x0c, 0x91, 0x3b, 0x06, 0x73, 0x71, 0xa0, - 0x67, 0x87, 0x0f, 0x0d, 0xce, 0x8b, 0x2e, 0xc4, 0xff, 0xb8, 0x43, 0x83, 0x8b, 0x32, 0x92, 0x3e, - 0x90, 0xaf, 0xa1, 0x17, 0x8b, 0x15, 0x5b, 0x8e, 0xbe, 0x37, 0xe2, 0x96, 0xc6, 0x0f, 0x2f, 0x09, - 0xa3, 0x01, 0xef, 0x93, 0x10, 0xe5, 0x70, 0xdc, 0xd1, 0x80, 0xc5, 0xd8, 0x48, 0x1f, 0xa6, 0xbf, - 0xcd, 0xbb, 0xd2, 0x63, 0x6b, 0x33, 0xbf, 0xc9, 0x56, 0x03, 0xf0, 0xc1, 0xd1, 0x3a, 0x0b, 0x33, - 0xa1, 0xa9, 0xbf, 0x77, 0x61, 0x0d, 0x97, 0x96, 0xf4, 0xa0, 0xbb, 0x2f, 0xb2, 0x91, 0x2f, 0x0c, - 0x24, 0x58, 0xf0, 0x15, 0x61, 0x62, 0x2c, 0xf7, 0xc1, 0x79, 0x63, 0xd8, 0x98, 0xb0, 0xfa, 0xfd, - 0x30, 0x56, 0x35, 0x1e, 0xab, 0x3b, 0x44, 0xc4, 0x24, 0x36, 0xa6, 0x09, 0xcd, 0x1b, 0xdf, 0xec, - 0xc3, 0xa5, 0x72, 0x70, 0xdd, 0x33, 0x34, 0x1f, 0xe9, 0x23, 0xf6, 0xab, 0xb4, 0x3b, 0xac, 0x53, - 0x93, 0x7d, 0x34, 0xdd, 0x21, 0x9b, 0x0d, 0xc8, 0xdc, 0x6c, 0x20, 0xa1, 0xbf, 0x7d, 0xe0, 0x46, - 0xea, 0x31, 0x37, 0x08, 0xa2, 0xec, 0x88, 0xfd, 0xed, 0x07, 0x72, 0x90, 0x3e, 0x38, 0xff, 0x28, - 0x03, 0x2c, 0x5b, 0xe6, 0x6e, 0xb7, 0x66, 0xb5, 0xb1, 0x85, 0xfe, 0x26, 0x98, 0x00, 0xfc, 0xc2, - 0x08, 0x26, 0x00, 0xeb, 0x00, 0x5b, 0x3e, 0x71, 0xa6, 0xe1, 0xb7, 0x8a, 0x99, 0xfb, 0x01, 0x53, - 0x6a, 0x88, 0x06, 0x7f, 0xe5, 0xec, 0x0f, 0xf1, 0x18, 0xc7, 0xf5, 0x59, 0x01, 0xb9, 0x51, 0x4e, - 0x00, 0xde, 0xea, 0x63, 0xdd, 0xe0, 0xb0, 0xbe, 0xef, 0x00, 0x9c, 0xa4, 0x8f, 0xf9, 0x3f, 0x4d, - 0xc0, 0x34, 0xdd, 0xae, 0xa3, 0x32, 0xfd, 0xfb, 0x00, 0xf4, 0x5f, 0x19, 0x01, 0xe8, 0x1b, 0x30, - 0x63, 0x06, 0xd4, 0x69, 0x9f, 0x1a, 0x5e, 0x80, 0x89, 0x85, 0x3d, 0xc4, 0x97, 0xca, 0x91, 0x41, - 0x1f, 0x08, 0x23, 0xaf, 0xf2, 0xc8, 0xdf, 0x15, 0x23, 0xef, 0x10, 0xc5, 0x51, 0x42, 0xff, 0x36, - 0x1f, 0xfa, 0x0d, 0x0e, 0xfa, 0xe2, 0x41, 0x58, 0x19, 0x43, 0xb8, 0x7d, 0x19, 0xb2, 0xe4, 0x74, - 0xdc, 0x6f, 0xa5, 0x38, 0xbf, 0x3f, 0x05, 0x13, 0xa4, 0xc9, 0xfa, 0xf3, 0x0e, 0xef, 0xd5, 0xfd, - 0xa2, 0x6d, 0x3a, 0xd8, 0xf2, 0x3d, 0x16, 0xbc, 0x57, 0x97, 0x07, 0xcf, 0x2b, 0xd9, 0x3e, 0x95, - 0xa7, 0x1b, 0x91, 0x7e, 0xc2, 0xd0, 0x93, 0x92, 0xb0, 0xc4, 0x47, 0x76, 0x5e, 0x6e, 0x98, 0x49, - 0xc9, 0x00, 0x46, 0xd2, 0x07, 0xfe, 0x2f, 0xb2, 0x70, 0x8a, 0xae, 0x2a, 0x2d, 0x59, 0xe6, 0x4e, - 0xcf, 0xed, 0x56, 0xfa, 0xc1, 0x75, 0xe1, 0x06, 0x98, 0x73, 0x38, 0x7f, 0x6c, 0xa6, 0x13, 0x3d, - 0xa9, 0xe8, 0xcf, 0xc2, 0x3e, 0x15, 0xcf, 0xe2, 0x91, 0x5c, 0x88, 0x11, 0x60, 0x14, 0xef, 0x89, - 0x17, 0xea, 0x05, 0x19, 0x0d, 0x2d, 0x52, 0xc9, 0x43, 0xad, 0x59, 0xfa, 0x3a, 0x95, 0x13, 0xd1, - 0xa9, 0x77, 0xfb, 0x3a, 0xf5, 0x23, 0x9c, 0x4e, 0x2d, 0x1f, 0x5c, 0x24, 0xe9, 0xeb, 0xd6, 0x2b, - 0xfc, 0x8d, 0x21, 0x7f, 0xdb, 0x6e, 0x27, 0x85, 0xcd, 0xba, 0xb0, 0x3f, 0x52, 0x96, 0xf3, 0x47, - 0xe2, 0xef, 0xa3, 0x48, 0x30, 0x13, 0xe6, 0xb9, 0x8e, 0xd0, 0xa5, 0x39, 0x90, 0x74, 0x8f, 0x3b, - 0x49, 0x6f, 0x0f, 0x35, 0xd7, 0x8d, 0x2d, 0x68, 0x0c, 0x6b, 0x4b, 0x73, 0x90, 0x5f, 0xd2, 0x3b, - 0x0e, 0xb6, 0xd0, 0x63, 0x6c, 0xa6, 0xfb, 0x8a, 0x14, 0x07, 0x80, 0x45, 0xc8, 0x6f, 0x92, 0xd2, - 0x98, 0xc9, 0x7c, 0xb3, 0x58, 0xeb, 0xa1, 0x1c, 0xaa, 0xec, 0xdf, 0xa4, 0xd1, 0xf9, 0x7a, 0xc8, - 0x8c, 0x6c, 0x8a, 0x9c, 0x20, 0x3a, 0xdf, 0x60, 0x16, 0xc6, 0x72, 0x31, 0x55, 0x5e, 0xc5, 0x3b, - 0xee, 0x18, 0x7f, 0x31, 0x3d, 0x84, 0x0b, 0x20, 0xeb, 0x6d, 0x9b, 0x74, 0x8e, 0x53, 0xaa, 0xfb, - 0x98, 0xd4, 0x57, 0xa8, 0x57, 0x54, 0x94, 0xe5, 0x71, 0xfb, 0x0a, 0x09, 0x71, 0x91, 0x3e, 0x66, - 0xdf, 0x22, 0x8e, 0xa2, 0xdd, 0x8e, 0xd6, 0xc2, 0x2e, 0xf7, 0xa9, 0xa1, 0x46, 0x7b, 0xb2, 0xac, - 0xd7, 0x93, 0x85, 0xda, 0x69, 0xee, 0x00, 0xed, 0x74, 0xd8, 0x65, 0x48, 0x5f, 0xe6, 0xa4, 0xe2, - 0x87, 0xb6, 0x0c, 0x19, 0xcb, 0xc6, 0x18, 0xae, 0x1d, 0xf5, 0x0e, 0xd2, 0x8e, 0xb5, 0xb5, 0x0e, - 0xbb, 0x49, 0xc3, 0x84, 0x35, 0xb2, 0x43, 0xb3, 0xc3, 0x6c, 0xd2, 0x44, 0xf3, 0x30, 0x06, 0xb4, - 0xe6, 0x18, 0x5a, 0x9f, 0x62, 0xc3, 0x68, 0xca, 0xfb, 0xa4, 0xb6, 0x69, 0x39, 0xc9, 0xf6, 0x49, - 0x5d, 0xee, 0x54, 0xf2, 0x5f, 0xd2, 0x83, 0x57, 0xfc, 0xb9, 0xea, 0x51, 0x0d, 0x9f, 0x09, 0x0e, - 0x5e, 0x0d, 0x62, 0x20, 0x7d, 0x78, 0xdf, 0x70, 0x48, 0x83, 0xe7, 0xb0, 0xcd, 0x91, 0xb5, 0x81, - 0x91, 0x0d, 0x9d, 0xc3, 0x34, 0xc7, 0x68, 0x1e, 0xd2, 0xc7, 0xeb, 0xeb, 0xa1, 0x81, 0xf3, 0x75, - 0x63, 0x1c, 0x38, 0xbd, 0x96, 0x99, 0x1b, 0xb2, 0x65, 0x0e, 0xbb, 0xff, 0xc3, 0x64, 0x3d, 0xba, - 0x01, 0x73, 0x98, 0xfd, 0x9f, 0x18, 0x26, 0xd2, 0x47, 0xfc, 0xf5, 0x32, 0xe4, 0xea, 0xe3, 0x1f, - 0x2f, 0x87, 0x9d, 0x8b, 0x10, 0x59, 0xd5, 0x47, 0x36, 0x5c, 0x0e, 0x33, 0x17, 0x89, 0x64, 0x61, - 0x0c, 0x81, 0xf7, 0x8f, 0xc2, 0x0c, 0x59, 0x12, 0xf1, 0xb6, 0x59, 0xbf, 0xce, 0x46, 0xcd, 0x47, - 0x53, 0x6c, 0xab, 0xf7, 0xc3, 0xa4, 0xb7, 0x7f, 0xc7, 0x46, 0xce, 0x79, 0xb1, 0xf6, 0xe9, 0x71, - 0xa9, 0xfa, 0xff, 0x1f, 0xc8, 0x19, 0x62, 0xe4, 0x7b, 0xb5, 0xc3, 0x3a, 0x43, 0x1c, 0xea, 0x7e, - 0xed, 0x9f, 0x06, 0x23, 0xea, 0x7f, 0x49, 0x0f, 0xf3, 0xde, 0x7d, 0xdc, 0x6c, 0x9f, 0x7d, 0xdc, - 0x0f, 0x85, 0xb1, 0xac, 0xf3, 0x58, 0xde, 0x2d, 0x2a, 0xc2, 0x11, 0x8e, 0xb5, 0x6f, 0xf7, 0xe1, - 0x3c, 0xc7, 0xc1, 0xb9, 0x70, 0x20, 0x5e, 0xc6, 0x70, 0xf0, 0x31, 0x1b, 0x8c, 0xb9, 0x1f, 0x4e, - 0xb1, 0x1d, 0xf7, 0x9c, 0xaa, 0xc8, 0xee, 0x3b, 0x55, 0xc1, 0xb5, 0xf4, 0xdc, 0x01, 0x5b, 0xfa, - 0x87, 0xc3, 0xda, 0xd1, 0xe0, 0xb5, 0xe3, 0x1e, 0x71, 0x44, 0x46, 0x37, 0x32, 0xbf, 0xc3, 0x57, - 0x8f, 0xf3, 0x9c, 0x7a, 0x94, 0x0e, 0xc6, 0x4c, 0xfa, 0xfa, 0xf1, 0x47, 0xde, 0x84, 0xf6, 0x90, - 0xdb, 0xfb, 0xb0, 0x5b, 0xc5, 0x9c, 0x10, 0x47, 0x36, 0x72, 0x0f, 0xb3, 0x55, 0x3c, 0x88, 0x93, - 0x31, 0xc4, 0x62, 0x9b, 0x85, 0x69, 0xc2, 0xd3, 0x79, 0xbd, 0xbd, 0x85, 0x1d, 0xf4, 0x1b, 0xd4, - 0x47, 0xd1, 0x8b, 0x7c, 0x39, 0xa2, 0xf0, 0x44, 0x51, 0xe7, 0x5d, 0x93, 0x7a, 0x74, 0x50, 0x26, - 0xe7, 0x43, 0x0c, 0x8e, 0x3b, 0x82, 0xe2, 0x40, 0x0e, 0xd2, 0x87, 0xec, 0x03, 0xd4, 0xdd, 0x66, - 0x55, 0xbb, 0x6c, 0xee, 0x3a, 0xe8, 0x91, 0x11, 0x74, 0xd0, 0x0b, 0x90, 0xef, 0x10, 0x6a, 0xec, - 0x58, 0x46, 0xfc, 0x74, 0x87, 0x89, 0x80, 0x96, 0xaf, 0xb2, 0x3f, 0x93, 0x9e, 0xcd, 0x08, 0xe4, - 0x48, 0xe9, 0x8c, 0xfb, 0x6c, 0xc6, 0x80, 0xf2, 0xc7, 0x72, 0xc7, 0xce, 0xa4, 0x5b, 0xba, 0xbe, - 0xa3, 0x3b, 0x23, 0x8a, 0xe0, 0xd0, 0x71, 0x69, 0x79, 0x11, 0x1c, 0xc8, 0x4b, 0xd2, 0x13, 0xa3, - 0x21, 0xa9, 0xb8, 0xbf, 0x8f, 0xfb, 0xc4, 0x68, 0x7c, 0xf1, 0xe9, 0x63, 0xf2, 0x4b, 0xb4, 0x65, - 0x9d, 0xa3, 0xce, 0xb7, 0x29, 0xfa, 0xf5, 0x0e, 0xdd, 0x58, 0x28, 0x6b, 0x87, 0xd7, 0x58, 0xfa, - 0x96, 0x9f, 0x3e, 0x30, 0xff, 0xfd, 0xfb, 0x21, 0xb7, 0x88, 0x2f, 0xec, 0x6e, 0xa1, 0xbb, 0x60, - 0xb2, 0x61, 0x61, 0x5c, 0x31, 0x36, 0x4d, 0x57, 0xba, 0x8e, 0xfb, 0xec, 0x41, 0xc2, 0xde, 0x5c, - 0x3c, 0xb6, 0xb1, 0xd6, 0x0e, 0xce, 0x9f, 0x79, 0xaf, 0xe8, 0xa5, 0x12, 0x64, 0xeb, 0x8e, 0xe6, - 0xa0, 0x29, 0x1f, 0x5b, 0xf4, 0x48, 0x18, 0x8b, 0xbb, 0x78, 0x2c, 0x6e, 0xe0, 0x64, 0x41, 0x38, - 0x98, 0x77, 0xff, 0x8f, 0x00, 0x00, 0xc1, 0xe4, 0x43, 0xb6, 0x69, 0xb8, 0x39, 0xbc, 0x23, 0x90, - 0xde, 0x3b, 0x7a, 0xb9, 0x2f, 0xee, 0x7b, 0x39, 0x71, 0x3f, 0x59, 0xac, 0x88, 0x31, 0xac, 0xb4, - 0x49, 0x30, 0xe5, 0x8a, 0x76, 0x05, 0x6b, 0x6d, 0x1b, 0x7d, 0x5f, 0xa0, 0xfc, 0x11, 0x62, 0x46, - 0xef, 0x11, 0x0e, 0xc6, 0x49, 0x6b, 0xe5, 0x13, 0x8f, 0xf6, 0xe8, 0xf0, 0x36, 0xff, 0x25, 0x3e, - 0x18, 0xc9, 0x2d, 0x90, 0xd5, 0x8d, 0x4d, 0x93, 0xf9, 0x17, 0x5e, 0x1d, 0x41, 0xdb, 0xd5, 0x09, - 0x95, 0x64, 0x14, 0x8c, 0xd4, 0x19, 0xcf, 0xd6, 0x58, 0x2e, 0xbd, 0xcb, 0xba, 0xa5, 0xa3, 0xff, - 0xff, 0x40, 0x61, 0x2b, 0x0a, 0x64, 0xbb, 0x9a, 0xb3, 0xcd, 0x8a, 0x26, 0xcf, 0xae, 0x8d, 0xbc, - 0x6b, 0x68, 0x86, 0x69, 0x5c, 0xde, 0xd1, 0x9f, 0xed, 0xdf, 0xad, 0xcb, 0xa5, 0xb9, 0x9c, 0x6f, - 0x61, 0x03, 0x5b, 0x9a, 0x83, 0xeb, 0x7b, 0x5b, 0x64, 0x8e, 0x35, 0xa9, 0x86, 0x93, 0x12, 0xeb, - 0xbf, 0xcb, 0x71, 0xb4, 0xfe, 0x6f, 0xea, 0x1d, 0x4c, 0x22, 0x35, 0x31, 0xfd, 0xf7, 0xde, 0x13, - 0xe9, 0x7f, 0x9f, 0x22, 0xd2, 0x47, 0xe3, 0xdb, 0x12, 0xcc, 0xd4, 0x5d, 0x85, 0xab, 0xef, 0xee, - 0xec, 0x68, 0xd6, 0x65, 0x74, 0x5d, 0x80, 0x4a, 0x48, 0x35, 0x33, 0xbc, 0x5f, 0xca, 0x1f, 0x0a, - 0x5f, 0x2b, 0xcd, 0x9a, 0x76, 0xa8, 0x84, 0xc4, 0xed, 0xe0, 0x36, 0xc8, 0xb9, 0xea, 0xed, 0x79, - 0x5c, 0xc6, 0x36, 0x04, 0x9a, 0x53, 0x30, 0xa2, 0xd5, 0x40, 0xde, 0xc6, 0x10, 0x4d, 0x43, 0x82, - 0xa3, 0x75, 0x47, 0x6b, 0x5d, 0x5c, 0x36, 0x2d, 0x73, 0xd7, 0xd1, 0x0d, 0x6c, 0xa3, 0x27, 0x04, - 0x08, 0x78, 0xfa, 0x9f, 0x09, 0xf4, 0x1f, 0xfd, 0x7b, 0x46, 0x74, 0x14, 0xf5, 0xbb, 0xd5, 0x30, - 0xf9, 0x88, 0x00, 0x55, 0x62, 0xe3, 0xa2, 0x08, 0xc5, 0xf4, 0x85, 0xf6, 0x3a, 0x19, 0x0a, 0xe5, - 0x87, 0xbb, 0xa6, 0xe5, 0xac, 0x9a, 0x2d, 0xad, 0x63, 0x3b, 0xa6, 0x85, 0x51, 0x2d, 0x56, 0x6a, - 0x6e, 0x0f, 0xd3, 0x36, 0x5b, 0xc1, 0xe0, 0xc8, 0xde, 0xc2, 0x6a, 0x27, 0xf3, 0x3a, 0xfe, 0x01, - 0xe1, 0x5d, 0x46, 0x2a, 0x95, 0x5e, 0x8e, 0x22, 0xf4, 0xbc, 0x5f, 0x97, 0x96, 0xec, 0xb0, 0x84, - 0xd8, 0xce, 0xa3, 0x10, 0x53, 0x63, 0x58, 0x2a, 0x97, 0x60, 0xb6, 0xbe, 0x7b, 0xc1, 0x27, 0x62, - 0x87, 0x8d, 0x90, 0x57, 0x0a, 0x47, 0xa9, 0x60, 0x8a, 0x17, 0x26, 0x14, 0x21, 0xdf, 0xeb, 0x61, - 0xd6, 0x0e, 0x67, 0x63, 0x78, 0xf3, 0x89, 0x82, 0xd1, 0x29, 0x06, 0x97, 0x9a, 0xbe, 0x00, 0xdf, - 0x21, 0xc1, 0x6c, 0xad, 0x8b, 0x0d, 0xdc, 0xa6, 0x5e, 0x90, 0x9c, 0x00, 0x5f, 0x9a, 0x50, 0x80, - 0x1c, 0xa1, 0x08, 0x01, 0x06, 0x1e, 0xcb, 0x8b, 0x9e, 0xf0, 0x82, 0x84, 0x44, 0x82, 0x8b, 0x2b, - 0x2d, 0x7d, 0xc1, 0x7d, 0x5e, 0x82, 0x69, 0x75, 0xd7, 0x58, 0xb7, 0x4c, 0x77, 0x34, 0xb6, 0xd0, - 0xdd, 0x41, 0x07, 0x71, 0x33, 0x1c, 0x6b, 0xef, 0x5a, 0x64, 0xfd, 0xa9, 0x62, 0xd4, 0x71, 0xcb, - 0x34, 0xda, 0x36, 0xa9, 0x47, 0x4e, 0xdd, 0xff, 0xe1, 0xce, 0xec, 0xf3, 0xbf, 0x22, 0x67, 0xd0, - 0x0b, 0x84, 0x43, 0xdd, 0xd0, 0xca, 0x87, 0x8a, 0x16, 0xef, 0x09, 0x04, 0x03, 0xda, 0x0c, 0x2a, - 0x21, 0x7d, 0xe1, 0x7e, 0x4a, 0x02, 0xa5, 0xd8, 0x6a, 0x99, 0xbb, 0x86, 0x53, 0xc7, 0x1d, 0xdc, - 0x72, 0x1a, 0x96, 0xd6, 0xc2, 0x61, 0xfb, 0xb9, 0x00, 0x72, 0x5b, 0xb7, 0x58, 0x1f, 0xec, 0x3e, - 0x32, 0x39, 0xbe, 0x54, 0x78, 0xc7, 0x91, 0xd6, 0x72, 0x7f, 0x29, 0x09, 0xc4, 0x29, 0xb6, 0xaf, - 0x28, 0x58, 0x50, 0xfa, 0x52, 0xfd, 0xb0, 0x04, 0x53, 0x5e, 0x8f, 0xbd, 0x25, 0x22, 0xcc, 0x5f, - 0x4a, 0x38, 0x19, 0xf1, 0x89, 0x27, 0x90, 0xe1, 0x5b, 0x12, 0xcc, 0x2a, 0xa2, 0xe8, 0x27, 0x13, - 0x5d, 0x31, 0xb9, 0xe8, 0xdc, 0xd7, 0x6a, 0xad, 0xb9, 0x54, 0x5b, 0x5d, 0x2c, 0xab, 0x05, 0x19, - 0x3d, 0x26, 0x41, 0x76, 0x5d, 0x37, 0xb6, 0xc2, 0xd1, 0x95, 0x8e, 0xbb, 0x76, 0x64, 0x1b, 0x3f, - 0xcc, 0x5a, 0x3a, 0x7d, 0x51, 0x6e, 0x87, 0xe3, 0xc6, 0xee, 0xce, 0x05, 0x6c, 0xd5, 0x36, 0xc9, - 0x28, 0x6b, 0x37, 0xcc, 0x3a, 0x36, 0xa8, 0x11, 0x9a, 0x53, 0xfb, 0x7e, 0xe3, 0x4d, 0x30, 0x81, - 0xc9, 0x83, 0xcb, 0x49, 0x84, 0xc4, 0x7d, 0xa6, 0xa4, 0x10, 0x53, 0x89, 0xa6, 0x0d, 0x7d, 0x88, - 0xa7, 0xaf, 0xa9, 0x7f, 0x9c, 0x83, 0x13, 0x45, 0xe3, 0x32, 0xb1, 0x29, 0x68, 0x07, 0x5f, 0xda, - 0xd6, 0x8c, 0x2d, 0x4c, 0x06, 0x08, 0x5f, 0xe2, 0xe1, 0x10, 0xfd, 0x19, 0x3e, 0x44, 0xbf, 0xa2, - 0xc2, 0x84, 0x69, 0xb5, 0xb1, 0xb5, 0x70, 0x99, 0xf0, 0xd4, 0xbb, 0xec, 0xcc, 0xda, 0x64, 0xbf, - 0x22, 0xe6, 0x19, 0xf9, 0xf9, 0x1a, 0xfd, 0x5f, 0xf5, 0x08, 0x9d, 0xbd, 0x19, 0x26, 0x58, 0x9a, - 0x32, 0x03, 0x93, 0x35, 0x75, 0xb1, 0xac, 0x36, 0x2b, 0x8b, 0x85, 0x23, 0xca, 0x15, 0x70, 0xb4, - 0xd2, 0x28, 0xab, 0xc5, 0x46, 0xa5, 0x56, 0x6d, 0x92, 0xf4, 0x42, 0x06, 0x3d, 0x2f, 0x2b, 0xea, - 0xd9, 0x1b, 0xcf, 0x4c, 0x3f, 0x58, 0x55, 0x98, 0x68, 0xd1, 0x0c, 0x64, 0x08, 0x9d, 0x4e, 0x54, - 0x3b, 0x46, 0x90, 0x26, 0xa8, 0x1e, 0x21, 0xe5, 0x34, 0xc0, 0x25, 0xcb, 0x34, 0xb6, 0x82, 0x53, - 0x87, 0x93, 0x6a, 0x28, 0x05, 0x3d, 0x92, 0x81, 0x3c, 0xfd, 0x87, 0x5c, 0x49, 0x42, 0x9e, 0x02, - 0xc1, 0x7b, 0xef, 0xae, 0xc5, 0x4b, 0xe4, 0x15, 0x4c, 0xb4, 0xd8, 0xab, 0xab, 0x8b, 0x54, 0x06, - 0xd4, 0x12, 0x66, 0x55, 0xb9, 0x05, 0xf2, 0xf4, 0x5f, 0xe6, 0x75, 0x10, 0x1d, 0x5e, 0x94, 0x66, - 0x13, 0xf4, 0x53, 0x16, 0x97, 0x69, 0xfa, 0xda, 0xfc, 0x5e, 0x09, 0x26, 0xab, 0xd8, 0x29, 0x6d, - 0xe3, 0xd6, 0x45, 0xf4, 0x24, 0x7e, 0x01, 0xb4, 0xa3, 0x63, 0xc3, 0x79, 0x70, 0xa7, 0xe3, 0x2f, - 0x80, 0x7a, 0x09, 0xe8, 0xa7, 0xc3, 0x9d, 0xef, 0x7d, 0xbc, 0xfe, 0xdc, 0xd4, 0xa7, 0xae, 0x5e, - 0x09, 0x11, 0x2a, 0x73, 0x12, 0xf2, 0x16, 0xb6, 0x77, 0x3b, 0xde, 0x22, 0x1a, 0x7b, 0x43, 0xaf, - 0xf2, 0xc5, 0x59, 0xe2, 0xc4, 0x79, 0x8b, 0x78, 0x11, 0x63, 0x88, 0x57, 0x9a, 0x85, 0x89, 0x8a, - 0xa1, 0x3b, 0xba, 0xd6, 0x41, 0x2f, 0xc8, 0xc2, 0x6c, 0x1d, 0x3b, 0xeb, 0x9a, 0xa5, 0xed, 0x60, - 0x07, 0x5b, 0x36, 0xfa, 0x26, 0xdf, 0x27, 0x74, 0x3b, 0x9a, 0xb3, 0x69, 0x5a, 0x3b, 0x9e, 0x6a, - 0x7a, 0xef, 0xae, 0x6a, 0xee, 0x61, 0xcb, 0x0e, 0xf8, 0xf2, 0x5e, 0xdd, 0x2f, 0x97, 0x4c, 0xeb, - 0xa2, 0x3b, 0x08, 0xb2, 0x69, 0x1a, 0x7b, 0x75, 0xe9, 0x75, 0xcc, 0xad, 0x55, 0xbc, 0x87, 0xbd, - 0x70, 0x69, 0xfe, 0xbb, 0x3b, 0x17, 0x68, 0x9b, 0x55, 0xd3, 0x71, 0x3b, 0xed, 0x55, 0x73, 0x8b, - 0xc6, 0x8b, 0x9d, 0x54, 0xf9, 0xc4, 0x20, 0x97, 0xb6, 0x87, 0x49, 0xae, 0x7c, 0x38, 0x17, 0x4b, - 0x54, 0xe6, 0x41, 0xf1, 0x7f, 0x6b, 0xe0, 0x0e, 0xde, 0xc1, 0x8e, 0x75, 0x99, 0x5c, 0x0b, 0x31, - 0xa9, 0xf6, 0xf9, 0xc2, 0x06, 0x68, 0xf1, 0xc9, 0x3a, 0x93, 0xde, 0x3c, 0x27, 0xb9, 0x03, 0x4d, - 0xd6, 0x45, 0x28, 0x8e, 0xe5, 0xda, 0x2b, 0xd9, 0xb5, 0x66, 0x7e, 0x4d, 0x86, 0x2c, 0x19, 0x3c, - 0x5f, 0x9f, 0xe1, 0x56, 0x98, 0x76, 0xb0, 0x6d, 0x6b, 0x5b, 0xd8, 0x5b, 0x61, 0x62, 0xaf, 0xca, - 0x1d, 0x90, 0xeb, 0x10, 0x4c, 0xe9, 0xe0, 0x70, 0x1d, 0x57, 0x33, 0xd7, 0xc0, 0x70, 0x69, 0xf9, - 0x23, 0x01, 0x81, 0x5b, 0xa5, 0x7f, 0x9c, 0xbd, 0x1f, 0x72, 0x14, 0xfe, 0x29, 0xc8, 0x2d, 0x96, - 0x17, 0x36, 0x96, 0x0b, 0x47, 0xdc, 0x47, 0x8f, 0xbf, 0x29, 0xc8, 0x2d, 0x15, 0x1b, 0xc5, 0xd5, - 0x82, 0xe4, 0xd6, 0xa3, 0x52, 0x5d, 0xaa, 0x15, 0x64, 0x37, 0x71, 0xbd, 0x58, 0xad, 0x94, 0x0a, - 0x59, 0x65, 0x1a, 0x26, 0xce, 0x17, 0xd5, 0x6a, 0xa5, 0xba, 0x5c, 0xc8, 0xa1, 0xbf, 0x0d, 0xe3, - 0x77, 0x27, 0x8f, 0xdf, 0xf5, 0x51, 0x3c, 0xf5, 0x83, 0xec, 0xd7, 0x7d, 0xc8, 0xee, 0xe6, 0x20, - 0xfb, 0x7e, 0x11, 0x22, 0x63, 0x70, 0x67, 0xca, 0xc3, 0xc4, 0xba, 0x65, 0xb6, 0xb0, 0x6d, 0xa3, - 0x5f, 0x96, 0x20, 0x5f, 0xd2, 0x8c, 0x16, 0xee, 0xa0, 0xab, 0x02, 0xa8, 0xa8, 0xab, 0x68, 0xc6, - 0x3f, 0x2d, 0xf6, 0x8f, 0x19, 0xd1, 0xde, 0x8f, 0xd1, 0x9d, 0xa7, 0x34, 0x23, 0xe4, 0x23, 0xd6, - 0xcb, 0xc5, 0x92, 0x1a, 0xc3, 0xd5, 0x38, 0x12, 0x4c, 0xb1, 0xd5, 0x80, 0x0b, 0x38, 0x3c, 0x0f, - 0xff, 0x66, 0x46, 0x74, 0x72, 0xe8, 0xd5, 0xc0, 0x27, 0x13, 0x21, 0x0f, 0xb1, 0x89, 0xe0, 0x20, - 0x6a, 0x63, 0xd8, 0x3c, 0x94, 0x60, 0x7a, 0xc3, 0xb0, 0xfb, 0x09, 0x45, 0x3c, 0x8e, 0xbe, 0x57, - 0x8d, 0x10, 0xa1, 0x03, 0xc5, 0xd1, 0x1f, 0x4c, 0x2f, 0x7d, 0xc1, 0x7c, 0x33, 0x03, 0xc7, 0x97, - 0xb1, 0x81, 0x2d, 0xbd, 0x45, 0x6b, 0xe0, 0x49, 0xe2, 0x6e, 0x5e, 0x12, 0x4f, 0xe2, 0x38, 0xef, - 0xf7, 0x07, 0x2f, 0x81, 0x57, 0xf8, 0x12, 0xb8, 0x8f, 0x93, 0xc0, 0xcd, 0x82, 0x74, 0xc6, 0x70, - 0x1f, 0xfa, 0x14, 0xcc, 0x54, 0x4d, 0x47, 0xdf, 0xd4, 0x5b, 0xd4, 0x07, 0xed, 0x57, 0x65, 0xc8, - 0xae, 0xea, 0xb6, 0x83, 0x8a, 0x41, 0x77, 0x72, 0x06, 0xa6, 0x75, 0xa3, 0xd5, 0xd9, 0x6d, 0x63, - 0x15, 0x6b, 0xb4, 0x5f, 0x99, 0x54, 0xc3, 0x49, 0xc1, 0xd6, 0xbe, 0xcb, 0x96, 0xec, 0x6d, 0xed, - 0x7f, 0x5c, 0x78, 0x19, 0x26, 0xcc, 0x02, 0x09, 0x48, 0x19, 0x61, 0x77, 0x15, 0x61, 0xd6, 0x08, - 0x65, 0xf5, 0x0c, 0xf6, 0xde, 0x0b, 0x05, 0xc2, 0xe4, 0x54, 0xfe, 0x0f, 0xf4, 0x2e, 0xa1, 0xc6, - 0x3a, 0x88, 0xa1, 0x64, 0xc8, 0x2c, 0x0d, 0x31, 0x49, 0x56, 0x60, 0xae, 0x52, 0x6d, 0x94, 0xd5, - 0x6a, 0x71, 0x95, 0x65, 0x91, 0xd1, 0xb7, 0x25, 0xc8, 0xa9, 0xb8, 0xdb, 0xb9, 0x1c, 0x8e, 0x18, - 0xcd, 0x1c, 0xc5, 0x33, 0xbe, 0xa3, 0xb8, 0xb2, 0x04, 0xa0, 0xb5, 0xdc, 0x82, 0xc9, 0x95, 0x5a, - 0x52, 0xdf, 0x38, 0xa6, 0x5c, 0x05, 0x8b, 0x7e, 0x6e, 0x35, 0xf4, 0x27, 0x7a, 0xa1, 0xf0, 0xce, - 0x11, 0x47, 0x8d, 0x70, 0x18, 0xd1, 0x27, 0xbc, 0x5b, 0x68, 0xb3, 0x67, 0x20, 0xb9, 0xc3, 0x11, - 0xff, 0x17, 0x24, 0xc8, 0x36, 0xdc, 0xde, 0x32, 0xd4, 0x71, 0x7e, 0x6c, 0x38, 0x1d, 0x77, 0xc9, - 0x44, 0xe8, 0xf8, 0xbd, 0x30, 0x13, 0xd6, 0x58, 0xe6, 0x2a, 0x11, 0xab, 0xe2, 0xdc, 0x0f, 0xc3, - 0x68, 0x78, 0x1f, 0x76, 0x0e, 0x47, 0xc4, 0x1f, 0x79, 0x32, 0xc0, 0x1a, 0xde, 0xb9, 0x80, 0x2d, - 0x7b, 0x5b, 0xef, 0xa2, 0xbf, 0x93, 0x61, 0x6a, 0x19, 0x3b, 0x75, 0x47, 0x73, 0x76, 0xed, 0x9e, - 0xed, 0x4e, 0xc3, 0x2c, 0x69, 0xad, 0x6d, 0xcc, 0xba, 0x23, 0xef, 0x15, 0xbd, 0x4d, 0x16, 0xf5, - 0x27, 0x0a, 0xca, 0x99, 0xf7, 0xcb, 0x88, 0xc0, 0xe4, 0x29, 0x90, 0x6d, 0x6b, 0x8e, 0xc6, 0xb0, - 0xb8, 0xaa, 0x07, 0x8b, 0x80, 0x90, 0x4a, 0xb2, 0xa1, 0xdf, 0x91, 0x44, 0x1c, 0x8a, 0x04, 0xca, - 0x4f, 0x06, 0xc2, 0xbb, 0x32, 0x43, 0xa0, 0x70, 0x0c, 0x66, 0xab, 0xb5, 0x46, 0x73, 0xb5, 0xb6, - 0xbc, 0x5c, 0x76, 0x53, 0x0b, 0xb2, 0x72, 0x12, 0x94, 0xf5, 0xe2, 0x83, 0x6b, 0xe5, 0x6a, 0xa3, - 0x59, 0xad, 0x2d, 0x96, 0xd9, 0x9f, 0x59, 0xe5, 0x28, 0x4c, 0x97, 0x8a, 0xa5, 0x15, 0x2f, 0x21, - 0xa7, 0x9c, 0x82, 0xe3, 0x6b, 0xe5, 0xb5, 0x85, 0xb2, 0x5a, 0x5f, 0xa9, 0xac, 0x37, 0x5d, 0x32, - 0x4b, 0xb5, 0x8d, 0xea, 0x62, 0x21, 0xaf, 0x20, 0x38, 0x19, 0xfa, 0x72, 0x5e, 0xad, 0x55, 0x97, - 0x9b, 0xf5, 0x46, 0xb1, 0x51, 0x2e, 0x4c, 0x28, 0x57, 0xc0, 0xd1, 0x52, 0xb1, 0x4a, 0xb2, 0x97, - 0x6a, 0xd5, 0x6a, 0xb9, 0xd4, 0x28, 0x4c, 0xa2, 0x7f, 0xcf, 0xc2, 0x74, 0xc5, 0xae, 0x6a, 0x3b, - 0xf8, 0x9c, 0xd6, 0xd1, 0xdb, 0xe8, 0x05, 0xa1, 0x99, 0xc7, 0xf5, 0x30, 0x6b, 0xd1, 0x47, 0xdc, - 0x6e, 0xe8, 0x98, 0xa2, 0x39, 0xab, 0xf2, 0x89, 0xee, 0x9c, 0xdc, 0x20, 0x04, 0xbc, 0x39, 0x39, - 0x7d, 0x53, 0x16, 0x00, 0xe8, 0x53, 0x23, 0xb8, 0xdc, 0xf5, 0x6c, 0x6f, 0x6b, 0xd2, 0x76, 0xb0, - 0x8d, 0xad, 0x3d, 0xbd, 0x85, 0xbd, 0x9c, 0x6a, 0xe8, 0x2f, 0xf4, 0x45, 0x59, 0x74, 0x7f, 0x31, - 0x04, 0x6a, 0xa8, 0x3a, 0x11, 0xbd, 0xe1, 0xcf, 0xc8, 0x22, 0xbb, 0x83, 0x42, 0x24, 0x93, 0x69, - 0xca, 0x8b, 0xa5, 0xe1, 0x96, 0x6d, 0x1b, 0xb5, 0x5a, 0xb3, 0xbe, 0x52, 0x53, 0x1b, 0x05, 0x59, - 0x99, 0x81, 0x49, 0xf7, 0x75, 0xb5, 0x56, 0x5d, 0x2e, 0x64, 0x95, 0x13, 0x70, 0x6c, 0xa5, 0x58, - 0x6f, 0x56, 0xaa, 0xe7, 0x8a, 0xab, 0x95, 0xc5, 0x66, 0x69, 0xa5, 0xa8, 0xd6, 0x0b, 0x39, 0xe5, - 0x2a, 0x38, 0xd1, 0xa8, 0x94, 0xd5, 0xe6, 0x52, 0xb9, 0xd8, 0xd8, 0x50, 0xcb, 0xf5, 0x66, 0xb5, - 0xd6, 0xac, 0x16, 0xd7, 0xca, 0x85, 0xbc, 0xdb, 0xfc, 0xc9, 0xa7, 0x40, 0x6d, 0x26, 0xf6, 0x2b, - 0xe3, 0x64, 0x84, 0x32, 0x4e, 0xf5, 0x2a, 0x23, 0x84, 0xd5, 0x4a, 0x2d, 0xd7, 0xcb, 0xea, 0xb9, - 0x72, 0x61, 0xba, 0x9f, 0xae, 0xcd, 0x28, 0xc7, 0xa1, 0xe0, 0xf2, 0xd0, 0xac, 0xd4, 0xbd, 0x9c, - 0x8b, 0x85, 0x59, 0xf4, 0xe1, 0x3c, 0x9c, 0x54, 0xf1, 0x96, 0x6e, 0x3b, 0xd8, 0x5a, 0xd7, 0x2e, - 0xef, 0x60, 0xc3, 0xf1, 0x3a, 0xf9, 0x7f, 0x49, 0xac, 0x8c, 0x6b, 0x30, 0xdb, 0xa5, 0x34, 0xd6, - 0xb0, 0xb3, 0x6d, 0xb6, 0xd9, 0x28, 0xfc, 0xa4, 0xc8, 0x9e, 0x63, 0x7e, 0x3d, 0x9c, 0x5d, 0xe5, - 0xff, 0x0e, 0xe9, 0xb6, 0x1c, 0xa3, 0xdb, 0xd9, 0x61, 0x74, 0x5b, 0xb9, 0x06, 0xa6, 0x76, 0x6d, - 0x6c, 0x95, 0x77, 0x34, 0xbd, 0xe3, 0x5d, 0xce, 0xe9, 0x27, 0xa0, 0x37, 0x67, 0x45, 0x4f, 0xac, - 0x84, 0xea, 0xd2, 0x5f, 0x8c, 0x11, 0x7d, 0xeb, 0x69, 0x00, 0x56, 0xd9, 0x0d, 0xab, 0xc3, 0x94, - 0x35, 0x94, 0xe2, 0xf2, 0x77, 0x41, 0xef, 0x74, 0x74, 0x63, 0xcb, 0xdf, 0xf7, 0x0f, 0x12, 0xd0, - 0x8b, 0x65, 0x91, 0x13, 0x2c, 0x49, 0x79, 0x4b, 0xd6, 0x9a, 0x5e, 0x28, 0x8d, 0xb9, 0xdf, 0xdd, - 0xdf, 0x74, 0xf2, 0x4a, 0x01, 0x66, 0x48, 0x1a, 0x6b, 0x81, 0x85, 0x09, 0xb7, 0x0f, 0xf6, 0xc8, - 0xad, 0x95, 0x1b, 0x2b, 0xb5, 0x45, 0xff, 0xdb, 0xa4, 0x4b, 0xd2, 0x65, 0xa6, 0x58, 0x7d, 0x90, - 0xb4, 0xc6, 0x29, 0xe5, 0x09, 0x70, 0x55, 0xa8, 0xc3, 0x2e, 0xae, 0xaa, 0xe5, 0xe2, 0xe2, 0x83, - 0xcd, 0xf2, 0xb3, 0x2a, 0xf5, 0x46, 0x9d, 0x6f, 0x5c, 0x5e, 0x3b, 0x9a, 0x76, 0xf9, 0x2d, 0xaf, - 0x15, 0x2b, 0xab, 0xac, 0x7f, 0x5f, 0xaa, 0xa9, 0x6b, 0xc5, 0x46, 0x61, 0x06, 0xfd, 0x9a, 0x0c, - 0x85, 0x65, 0xec, 0xac, 0x9b, 0x96, 0xa3, 0x75, 0x56, 0x75, 0xe3, 0xe2, 0x86, 0xd5, 0xe1, 0x26, - 0x9b, 0xc2, 0x61, 0x3a, 0xf8, 0x21, 0x92, 0x23, 0x18, 0xbd, 0x23, 0xde, 0x25, 0xd9, 0x02, 0x65, - 0x0a, 0x12, 0xd0, 0x73, 0x24, 0x91, 0xe5, 0x6e, 0xf1, 0x52, 0x93, 0xe9, 0xc9, 0x73, 0xc7, 0x3d, - 0x3e, 0xf7, 0x41, 0x2d, 0x8f, 0x9e, 0x9f, 0x85, 0xc9, 0x25, 0xdd, 0xd0, 0x3a, 0xfa, 0xb3, 0xb9, - 0xf8, 0xa5, 0x41, 0x1f, 0x93, 0x89, 0xe9, 0x63, 0xa4, 0xa1, 0xc6, 0xcf, 0x5f, 0x94, 0x45, 0x97, - 0x17, 0x42, 0xb2, 0xf7, 0x98, 0x8c, 0x18, 0x3c, 0xdf, 0x27, 0x89, 0x2c, 0x2f, 0x0c, 0xa6, 0x97, - 0x0c, 0xc3, 0x8f, 0x7e, 0x77, 0xd8, 0x58, 0x3d, 0xed, 0x7b, 0xb2, 0x9f, 0x2a, 0x4c, 0xa1, 0x3f, - 0x97, 0x01, 0x2d, 0x63, 0xe7, 0x1c, 0xb6, 0xfc, 0xa9, 0x00, 0xe9, 0xf5, 0x99, 0xbd, 0x1d, 0x6a, - 0xb2, 0xaf, 0x0f, 0x03, 0x78, 0x9e, 0x07, 0xb0, 0x18, 0xd3, 0x78, 0x22, 0x48, 0x47, 0x34, 0xde, - 0x0a, 0xe4, 0x6d, 0xf2, 0x9d, 0xa9, 0xd9, 0x6d, 0xd1, 0xc3, 0x25, 0x21, 0x16, 0xa6, 0x4e, 0x09, - 0xab, 0x8c, 0x00, 0xfa, 0x96, 0x3f, 0x09, 0xfa, 0x61, 0x4e, 0x3b, 0x96, 0x0e, 0xcc, 0x6c, 0x32, - 0x7d, 0xb1, 0xd2, 0x55, 0x97, 0x7e, 0xf6, 0x0d, 0x7a, 0x5f, 0x0e, 0x8e, 0xf7, 0xab, 0x0e, 0xfa, - 0xdd, 0x0c, 0xb7, 0xc3, 0x8e, 0xc9, 0x90, 0x9f, 0x61, 0x1b, 0x88, 0xee, 0x8b, 0xf2, 0x34, 0x38, - 0xe1, 0x2f, 0xc3, 0x35, 0xcc, 0x2a, 0xbe, 0x64, 0x77, 0xb0, 0xe3, 0x60, 0x8b, 0x54, 0x6d, 0x52, - 0xed, 0xff, 0x51, 0x79, 0x06, 0x5c, 0xa9, 0x1b, 0xb6, 0xde, 0xc6, 0x56, 0x43, 0xef, 0xda, 0x45, - 0xa3, 0xdd, 0xd8, 0x75, 0x4c, 0x4b, 0xd7, 0xd8, 0x55, 0x92, 0x93, 0x6a, 0xd4, 0x67, 0xe5, 0x26, - 0x28, 0xe8, 0x76, 0xcd, 0xb8, 0x60, 0x6a, 0x56, 0x5b, 0x37, 0xb6, 0x56, 0x75, 0xdb, 0x61, 0x1e, - 0xc0, 0xfb, 0xd2, 0xd1, 0xdf, 0xcb, 0xa2, 0x87, 0xe9, 0x06, 0xc0, 0x1a, 0xd1, 0xa1, 0xfc, 0xb4, - 0x2c, 0x72, 0x3c, 0x2e, 0x19, 0xed, 0x64, 0xca, 0xf2, 0xbc, 0x71, 0x1b, 0x12, 0xfd, 0x47, 0x70, - 0xd2, 0xb5, 0xd0, 0x74, 0xcf, 0x10, 0x38, 0x57, 0x56, 0x2b, 0x4b, 0x95, 0xb2, 0x6b, 0x56, 0x9c, - 0x80, 0x63, 0xc1, 0xb7, 0xc5, 0x07, 0x9b, 0xf5, 0x72, 0xb5, 0x51, 0x98, 0x74, 0xfb, 0x29, 0x9a, - 0xbc, 0x54, 0xac, 0xac, 0x96, 0x17, 0x9b, 0x8d, 0x9a, 0xfb, 0x65, 0x71, 0x38, 0xd3, 0x02, 0x3d, - 0x92, 0x85, 0xa3, 0x44, 0xb6, 0x97, 0x89, 0x54, 0x5d, 0xa1, 0xf4, 0xf8, 0xda, 0xfa, 0x00, 0x4d, - 0x51, 0xf1, 0xa2, 0x4f, 0x0a, 0xdf, 0x94, 0x19, 0x82, 0xb0, 0xa7, 0x8c, 0x08, 0xcd, 0xf8, 0xa6, - 0x24, 0x12, 0xa1, 0x42, 0x98, 0x6c, 0x32, 0xa5, 0xf8, 0xd7, 0x71, 0x8f, 0x38, 0xd1, 0xe0, 0x13, - 0x2b, 0xb3, 0x44, 0x7e, 0x7e, 0xd6, 0x7a, 0x45, 0x25, 0xea, 0x30, 0x07, 0x40, 0x52, 0x88, 0x06, - 0x51, 0x3d, 0xe8, 0x3b, 0x5e, 0x45, 0xe9, 0x41, 0xb1, 0xd4, 0xa8, 0x9c, 0x2b, 0x47, 0xe9, 0xc1, - 0x27, 0x64, 0x98, 0x5c, 0xc6, 0x8e, 0x3b, 0xa7, 0xb2, 0xd1, 0x33, 0x05, 0xd6, 0x7f, 0x5c, 0x33, - 0xa6, 0x63, 0xb6, 0xb4, 0x8e, 0xbf, 0x0c, 0x40, 0xdf, 0xd0, 0x4f, 0x0d, 0x63, 0x82, 0x78, 0x45, - 0x47, 0x8c, 0x57, 0x3f, 0x08, 0x39, 0xc7, 0xfd, 0xcc, 0x96, 0xa1, 0xbf, 0x2f, 0x72, 0xb8, 0x72, - 0x89, 0x2c, 0x6a, 0x8e, 0xa6, 0xd2, 0xfc, 0xa1, 0xd1, 0x49, 0xd0, 0x76, 0x89, 0x60, 0xe4, 0xbb, - 0xd1, 0xfe, 0xfc, 0x5b, 0x19, 0x4e, 0xd0, 0xf6, 0x51, 0xec, 0x76, 0xeb, 0x8e, 0x69, 0x61, 0x15, - 0xb7, 0xb0, 0xde, 0x75, 0x7a, 0xd6, 0xf7, 0x2c, 0x9a, 0xea, 0x6d, 0x36, 0xb3, 0x57, 0xf4, 0x9b, - 0xb2, 0x68, 0x0c, 0xe6, 0x7d, 0xed, 0xb1, 0xa7, 0xbc, 0x88, 0xc6, 0xfe, 0x21, 0x49, 0x24, 0xaa, - 0x72, 0x42, 0xe2, 0xc9, 0x80, 0x7a, 0xff, 0x21, 0x00, 0xe5, 0xad, 0xdc, 0xa8, 0xe5, 0x52, 0xb9, - 0xb2, 0xee, 0x0e, 0x02, 0xd7, 0xc2, 0xd5, 0xeb, 0x1b, 0x6a, 0x69, 0xa5, 0x58, 0x2f, 0x37, 0xd5, - 0xf2, 0x72, 0xa5, 0xde, 0x60, 0x4e, 0x59, 0xf4, 0xaf, 0x09, 0xe5, 0x1a, 0x38, 0x55, 0xdf, 0x58, - 0xa8, 0x97, 0xd4, 0xca, 0x3a, 0x49, 0x57, 0xcb, 0xd5, 0xf2, 0x79, 0xf6, 0x75, 0x12, 0xbd, 0xa7, - 0x00, 0xd3, 0xee, 0x04, 0xa0, 0x4e, 0xe7, 0x05, 0xe8, 0x6b, 0x59, 0x98, 0x56, 0xb1, 0x6d, 0x76, - 0xf6, 0xc8, 0x1c, 0x61, 0x5c, 0x53, 0x8f, 0x6f, 0xc8, 0xa2, 0xe7, 0xb7, 0x43, 0xcc, 0xce, 0x87, - 0x18, 0x8d, 0x9e, 0x68, 0x6a, 0x7b, 0x9a, 0xde, 0xd1, 0x2e, 0xb0, 0xae, 0x66, 0x52, 0x0d, 0x12, - 0x94, 0x79, 0x50, 0xcc, 0x4b, 0x06, 0xb6, 0xea, 0xad, 0x4b, 0x65, 0x67, 0xbb, 0xd8, 0x6e, 0x5b, - 0xd8, 0xb6, 0xd9, 0xea, 0x45, 0x9f, 0x2f, 0xca, 0x8d, 0x70, 0x94, 0xa4, 0x86, 0x32, 0x53, 0x07, - 0x99, 0xde, 0x64, 0x3f, 0x67, 0xd1, 0xb8, 0xec, 0xe5, 0xcc, 0x85, 0x72, 0x06, 0xc9, 0xe1, 0xe3, - 0x12, 0x79, 0xfe, 0x94, 0xce, 0x19, 0x98, 0x36, 0xb4, 0x1d, 0x5c, 0x7e, 0xb8, 0xab, 0x5b, 0xd8, - 0x26, 0x8e, 0x31, 0xb2, 0x1a, 0x4e, 0x42, 0xef, 0x13, 0x3a, 0x6f, 0x2e, 0x26, 0xb1, 0x64, 0xba, - 0xbf, 0x3c, 0x84, 0xea, 0xf7, 0xe9, 0x67, 0x64, 0xf4, 0x1e, 0x19, 0x66, 0x18, 0x53, 0x45, 0xe3, - 0x72, 0xa5, 0x8d, 0xae, 0xe5, 0x8c, 0x5f, 0xcd, 0x4d, 0xf3, 0x8c, 0x5f, 0xf2, 0x82, 0x7e, 0x56, - 0x16, 0x75, 0x77, 0xee, 0x53, 0x71, 0x52, 0x46, 0xb4, 0xe3, 0xe8, 0xa6, 0xb9, 0xcb, 0x1c, 0x55, - 0x27, 0x55, 0xfa, 0x92, 0xe6, 0xa2, 0x1e, 0xfa, 0x03, 0x21, 0x67, 0x6a, 0xc1, 0x6a, 0x1c, 0x12, - 0x80, 0x1f, 0x91, 0x61, 0x8e, 0x71, 0x55, 0x67, 0xe7, 0x7c, 0x84, 0x0e, 0xbc, 0xfd, 0x9c, 0xb0, - 0x21, 0xd8, 0xa7, 0xfe, 0xac, 0xa4, 0xc7, 0x0d, 0x90, 0x1f, 0x10, 0x0a, 0x8e, 0x26, 0x5c, 0x91, - 0x43, 0x82, 0xf2, 0x2d, 0x59, 0x98, 0xde, 0xb0, 0xb1, 0xc5, 0xfc, 0xf6, 0xd1, 0xab, 0xb2, 0x20, - 0x2f, 0x63, 0x6e, 0x23, 0xf5, 0x45, 0xc2, 0x1e, 0xbe, 0xe1, 0xca, 0x86, 0x88, 0xba, 0x36, 0x52, - 0x04, 0x6c, 0x37, 0xc0, 0x1c, 0x15, 0x69, 0xd1, 0x71, 0x5c, 0x23, 0xd1, 0xf3, 0xa6, 0xed, 0x49, - 0x1d, 0xc5, 0x56, 0x11, 0x29, 0xcb, 0xcd, 0x52, 0x72, 0x79, 0x5a, 0xc5, 0x9b, 0x74, 0x3e, 0x9b, - 0x55, 0x7b, 0x52, 0x95, 0x5b, 0xe1, 0x0a, 0xb3, 0x8b, 0xe9, 0xf9, 0x95, 0x50, 0xe6, 0x1c, 0xc9, - 0xdc, 0xef, 0x13, 0xfa, 0x9a, 0x90, 0xaf, 0xae, 0xb8, 0x74, 0x92, 0xe9, 0x42, 0x77, 0x34, 0x26, - 0xc9, 0x71, 0x28, 0xb8, 0x39, 0xc8, 0xfe, 0x8b, 0x5a, 0xae, 0xd7, 0x56, 0xcf, 0x95, 0xfb, 0x2f, - 0x63, 0xe4, 0xd0, 0xf3, 0x64, 0x98, 0x5a, 0xb0, 0x4c, 0xad, 0xdd, 0xd2, 0x6c, 0x07, 0x7d, 0x4b, - 0x82, 0x99, 0x75, 0xed, 0x72, 0xc7, 0xd4, 0xda, 0xc4, 0xbf, 0xbf, 0xa7, 0x2f, 0xe8, 0xd2, 0x4f, - 0x5e, 0x5f, 0xc0, 0x5e, 0xf9, 0x83, 0x81, 0xfe, 0xd1, 0xbd, 0x8c, 0xc8, 0x85, 0x9a, 0xfe, 0x36, - 0x9f, 0xd4, 0x2f, 0x58, 0xa9, 0xc7, 0xd7, 0x7c, 0x98, 0xa7, 0x08, 0x8b, 0xf2, 0x3d, 0x62, 0xe1, - 0x47, 0x45, 0x48, 0x1e, 0xce, 0xae, 0xfc, 0xf3, 0x27, 0x21, 0xbf, 0x88, 0x89, 0x15, 0xf7, 0x3f, - 0x24, 0x98, 0xa8, 0x63, 0x87, 0x58, 0x70, 0x77, 0x70, 0x9e, 0xc2, 0x6d, 0x92, 0x21, 0x70, 0x62, - 0xf7, 0xde, 0xdd, 0xc9, 0x7a, 0xe8, 0xbc, 0x35, 0x79, 0x4e, 0xe0, 0x91, 0x48, 0xcb, 0x9d, 0x67, - 0x65, 0x1e, 0xc8, 0x23, 0x31, 0x96, 0x54, 0xfa, 0xbe, 0x56, 0x6f, 0x93, 0x98, 0x6b, 0x55, 0xa8, - 0xd7, 0xfb, 0x8d, 0xb0, 0x7e, 0xc6, 0x7a, 0x9b, 0x31, 0xe6, 0x63, 0x9c, 0xa3, 0x9e, 0x0a, 0x13, - 0x54, 0xe6, 0xde, 0x7c, 0xb4, 0xd7, 0x4f, 0x81, 0x92, 0x20, 0x67, 0xaf, 0xbd, 0x9c, 0x82, 0x2e, - 0x6a, 0xd1, 0x85, 0x8f, 0x25, 0x06, 0xc1, 0x4c, 0x15, 0x3b, 0x97, 0x4c, 0xeb, 0x62, 0xdd, 0xd1, - 0x1c, 0x8c, 0xfe, 0x55, 0x02, 0xb9, 0x8e, 0x9d, 0x70, 0xf4, 0x93, 0x2a, 0x1c, 0xa3, 0x15, 0x62, - 0x19, 0x49, 0xff, 0x4d, 0x2b, 0x72, 0xa6, 0xaf, 0x10, 0x42, 0xf9, 0xd4, 0xfd, 0xbf, 0xa2, 0x5f, - 0xee, 0x1b, 0xf4, 0x49, 0xea, 0x33, 0x69, 0x60, 0x92, 0x09, 0x33, 0xe8, 0x2a, 0x58, 0x84, 0x9e, - 0xbe, 0x57, 0xc8, 0xac, 0x16, 0xa3, 0x79, 0x38, 0x5d, 0xc1, 0x07, 0xae, 0x82, 0x6c, 0x69, 0x5b, - 0x73, 0xd0, 0x5b, 0x65, 0x80, 0x62, 0xbb, 0xbd, 0x46, 0x7d, 0xc0, 0xc3, 0x0e, 0x69, 0x67, 0x61, - 0xa6, 0xb5, 0xad, 0x05, 0x77, 0x9b, 0xd0, 0xfe, 0x80, 0x4b, 0x53, 0x9e, 0x16, 0x38, 0x93, 0x53, - 0xa9, 0xa2, 0x1e, 0x98, 0xdc, 0x32, 0x18, 0x6d, 0xdf, 0xd1, 0x9c, 0x0f, 0x85, 0x19, 0x7b, 0x84, - 0xce, 0xfd, 0x7d, 0x3e, 0x60, 0x2f, 0x7a, 0x0e, 0xc7, 0x48, 0xfb, 0x07, 0x6c, 0x82, 0x84, 0x84, - 0x27, 0xbd, 0xc5, 0x02, 0x7a, 0xc4, 0xf3, 0x35, 0x96, 0xd0, 0xb5, 0x4a, 0xb9, 0xad, 0x7b, 0xa2, - 0x65, 0x01, 0xb3, 0xd0, 0x0b, 0x33, 0xc9, 0xe0, 0x8b, 0x17, 0xdc, 0x7d, 0x30, 0x8b, 0xdb, 0xba, - 0x83, 0xbd, 0x5a, 0x32, 0x01, 0xc6, 0x41, 0xcc, 0xff, 0x80, 0x9e, 0x2b, 0x1c, 0x74, 0x8d, 0x08, - 0x74, 0x7f, 0x8d, 0x22, 0xda, 0x9f, 0x58, 0x18, 0x35, 0x31, 0x9a, 0xe9, 0x83, 0xf5, 0x53, 0x32, - 0x9c, 0x68, 0x98, 0x5b, 0x5b, 0x1d, 0xec, 0x89, 0x09, 0x53, 0xef, 0x4c, 0xa4, 0x8d, 0x12, 0x2e, - 0xb2, 0x13, 0x64, 0x3e, 0xa4, 0xfb, 0x47, 0xc9, 0xdc, 0x17, 0xfe, 0xc4, 0x54, 0xec, 0x2c, 0x8a, - 0x88, 0xab, 0x2f, 0x9f, 0x11, 0x28, 0x88, 0x05, 0x7c, 0x16, 0x26, 0x9b, 0x3e, 0x10, 0x9f, 0x93, - 0x60, 0x96, 0xde, 0x5c, 0xe9, 0x29, 0xe8, 0x03, 0x23, 0x04, 0x00, 0x7d, 0x2b, 0x23, 0xea, 0x67, - 0x4b, 0x64, 0xc2, 0x71, 0x12, 0x21, 0x62, 0xb1, 0xa0, 0x2a, 0x03, 0xc9, 0xa5, 0x2f, 0xda, 0x3f, - 0x91, 0x61, 0x7a, 0x19, 0x7b, 0x2d, 0xcd, 0x4e, 0xdc, 0x13, 0x9d, 0x85, 0x19, 0x72, 0x7d, 0x5b, - 0x8d, 0x1d, 0x93, 0xa4, 0xab, 0x66, 0x5c, 0x9a, 0x72, 0x3d, 0xcc, 0x5e, 0xc0, 0x9b, 0xa6, 0x85, - 0x6b, 0xdc, 0x59, 0x4a, 0x3e, 0x31, 0x22, 0x3c, 0x1d, 0x17, 0x07, 0x6d, 0x81, 0xc7, 0xe6, 0xe6, - 0xfd, 0xc2, 0x0c, 0x55, 0x25, 0x62, 0xcc, 0x79, 0x3a, 0x4c, 0x32, 0xe4, 0x3d, 0x33, 0x2d, 0xae, - 0x5f, 0xf4, 0xf3, 0xa2, 0xd7, 0xf8, 0x88, 0x96, 0x39, 0x44, 0x6f, 0x4b, 0xc2, 0xc4, 0x58, 0xee, - 0x77, 0x2f, 0x84, 0xca, 0x5f, 0xb8, 0x5c, 0x69, 0xdb, 0x68, 0x2d, 0x19, 0xa6, 0xa7, 0x01, 0xfc, - 0xc6, 0xe1, 0x85, 0xb5, 0x08, 0xa5, 0xf0, 0x91, 0xeb, 0x63, 0x0f, 0xea, 0xf5, 0x8a, 0x83, 0xb0, - 0x33, 0x62, 0x60, 0xc4, 0x0e, 0xf8, 0x89, 0x70, 0x92, 0x3e, 0x3a, 0x1f, 0x97, 0xe1, 0x84, 0x7f, - 0xfe, 0x68, 0x55, 0xb3, 0x83, 0x76, 0x57, 0x4a, 0x06, 0x11, 0x77, 0xe0, 0xc3, 0x6f, 0x2c, 0x5f, - 0x4f, 0x36, 0x66, 0xf4, 0xe5, 0x64, 0xb4, 0xe8, 0x28, 0x37, 0xc3, 0x31, 0x63, 0x77, 0xc7, 0x97, - 0x3a, 0x69, 0xf1, 0xac, 0x85, 0xef, 0xff, 0x90, 0x64, 0x64, 0x12, 0x61, 0x7e, 0x2c, 0x73, 0x4a, - 0xee, 0x48, 0xd7, 0x53, 0x12, 0xc1, 0x88, 0xfe, 0x39, 0x93, 0xa8, 0x77, 0x1b, 0x7c, 0xe6, 0x2b, - 0x41, 0x2f, 0x75, 0x88, 0x07, 0xbe, 0xce, 0x4e, 0x40, 0xae, 0xbc, 0xd3, 0x75, 0x2e, 0x9f, 0x7d, - 0x22, 0xcc, 0xd6, 0x1d, 0x0b, 0x6b, 0x3b, 0xa1, 0x9d, 0x01, 0xc7, 0xbc, 0x88, 0x0d, 0x6f, 0x67, - 0x80, 0xbc, 0xdc, 0x79, 0x07, 0x4c, 0x18, 0x66, 0x53, 0xdb, 0x75, 0xb6, 0x95, 0x6b, 0xf7, 0x1d, - 0xa9, 0x67, 0xe0, 0xd7, 0x58, 0x0c, 0xa3, 0x2f, 0xde, 0x45, 0xd6, 0x86, 0xf3, 0x86, 0x59, 0xdc, - 0x75, 0xb6, 0x17, 0xae, 0xf9, 0xc8, 0xdf, 0x9c, 0xce, 0x7c, 0xe2, 0x6f, 0x4e, 0x67, 0xbe, 0xf0, - 0x37, 0xa7, 0x33, 0x3f, 0xf7, 0xa5, 0xd3, 0x47, 0x3e, 0xf1, 0xa5, 0xd3, 0x47, 0x3e, 0xf7, 0xa5, - 0xd3, 0x47, 0x7e, 0x58, 0xea, 0x5e, 0xb8, 0x90, 0x27, 0x54, 0x9e, 0xfa, 0xff, 0x06, 0x00, 0x00, - 0xff, 0xff, 0x07, 0xc6, 0xed, 0x93, 0x99, 0x0b, 0x02, 0x00, + 0x28, 0x72, 0x10, 0x15, 0x15, 0x15, 0x10, 0x70, 0xf5, 0x80, 0x02, 0x72, 0x3f, 0xa0, 0x02, 0x72, + 0x91, 0x8b, 0x88, 0x08, 0x72, 0x11, 0xdd, 0x57, 0x90, 0x8b, 0x78, 0x3e, 0x72, 0x78, 0xf5, 0x3d, + 0x82, 0x28, 0xbc, 0xbe, 0x9f, 0x8c, 0x88, 0xbc, 0x44, 0x75, 0x65, 0x56, 0x64, 0x75, 0x65, 0xf5, + 0x22, 0xef, 0x7f, 0x99, 0x91, 0x91, 0x4f, 0x3c, 0xf1, 0x7c, 0x9f, 0x88, 0x78, 0x22, 0xe2, 0x89, + 0x27, 0xe0, 0x54, 0xf7, 0xc2, 0x2d, 0x5d, 0xcb, 0x74, 0x4c, 0xfb, 0x96, 0x96, 0xb9, 0xb3, 0xa3, + 0x19, 0x6d, 0x7b, 0x9e, 0xbc, 0x2b, 0x13, 0x9a, 0x71, 0xd9, 0xb9, 0xdc, 0xc5, 0xe8, 0xfa, 0xee, + 0xc5, 0xad, 0x5b, 0x3a, 0xfa, 0x85, 0x5b, 0xba, 0x17, 0x6e, 0xd9, 0x31, 0xdb, 0xb8, 0xe3, 0xfd, + 0x40, 0x5e, 0x58, 0x76, 0x74, 0x63, 0x54, 0xae, 0x8e, 0xd9, 0xd2, 0x3a, 0xb6, 0x63, 0x5a, 0x98, + 0xe5, 0x3c, 0x19, 0x14, 0x89, 0xf7, 0xb0, 0xe1, 0x78, 0x14, 0xae, 0xd9, 0x32, 0xcd, 0xad, 0x0e, + 0xa6, 0xdf, 0x2e, 0xec, 0x6e, 0xde, 0x62, 0x3b, 0xd6, 0x6e, 0xcb, 0x61, 0x5f, 0xcf, 0xf4, 0x7e, + 0x6d, 0x63, 0xbb, 0x65, 0xe9, 0x5d, 0xc7, 0xb4, 0x68, 0x8e, 0xb3, 0x5f, 0xfe, 0xc5, 0x49, 0x90, + 0xd5, 0x6e, 0x0b, 0x7d, 0x63, 0x02, 0xe4, 0x62, 0xb7, 0x8b, 0x3e, 0x20, 0x01, 0x2c, 0x63, 0xe7, + 0x1c, 0xb6, 0x6c, 0xdd, 0x34, 0xd0, 0x51, 0x98, 0x50, 0xf1, 0x8f, 0xed, 0x62, 0xdb, 0xb9, 0x33, + 0xfb, 0xfc, 0xaf, 0xc8, 0x19, 0xf4, 0xa8, 0x04, 0x93, 0x2a, 0xb6, 0xbb, 0xa6, 0x61, 0x63, 0xe5, + 0x3e, 0xc8, 0x61, 0xcb, 0x32, 0xad, 0x53, 0x99, 0x33, 0x99, 0x1b, 0xa7, 0x6f, 0xbf, 0x69, 0x9e, + 0x55, 0x7f, 0x5e, 0xed, 0xb6, 0xe6, 0x8b, 0xdd, 0xee, 0x7c, 0x40, 0x69, 0xde, 0xfb, 0x69, 0xbe, + 0xec, 0xfe, 0xa1, 0xd2, 0x1f, 0x95, 0x53, 0x30, 0xb1, 0x47, 0x33, 0x9c, 0x92, 0xce, 0x64, 0x6e, + 0x9c, 0x52, 0xbd, 0x57, 0xf7, 0x4b, 0x1b, 0x3b, 0x9a, 0xde, 0xb1, 0x4f, 0xc9, 0xf4, 0x0b, 0x7b, + 0x45, 0xaf, 0xca, 0x40, 0x8e, 0x10, 0x51, 0x4a, 0x90, 0x6d, 0x99, 0x6d, 0x4c, 0x8a, 0x9f, 0xbb, + 0xfd, 0x16, 0xf1, 0xe2, 0xe7, 0x4b, 0x66, 0x1b, 0xab, 0xe4, 0x67, 0xe5, 0x0c, 0x4c, 0x7b, 0x62, + 0x09, 0xd8, 0x08, 0x27, 0x9d, 0xbd, 0x1d, 0xb2, 0x6e, 0x7e, 0x65, 0x12, 0xb2, 0xd5, 0x8d, 0xd5, + 0xd5, 0xc2, 0x11, 0xe5, 0x18, 0xcc, 0x6e, 0x54, 0x1f, 0xa8, 0xd6, 0xce, 0x57, 0x9b, 0x65, 0x55, + 0xad, 0xa9, 0x85, 0x8c, 0x32, 0x0b, 0x53, 0x0b, 0xc5, 0xc5, 0x66, 0xa5, 0xba, 0xbe, 0xd1, 0x28, + 0x48, 0xe8, 0xe5, 0x32, 0xcc, 0xd5, 0xb1, 0xb3, 0x88, 0xf7, 0xf4, 0x16, 0xae, 0x3b, 0x9a, 0x83, + 0xd1, 0x8b, 0x32, 0xbe, 0x30, 0x95, 0x0d, 0xb7, 0x50, 0xff, 0x13, 0xab, 0xc0, 0x53, 0xf7, 0x55, + 0x80, 0xa7, 0x30, 0xcf, 0xfe, 0x9e, 0x0f, 0xa5, 0xa9, 0x61, 0x3a, 0x67, 0x9f, 0x02, 0xd3, 0xa1, + 0x6f, 0xca, 0x1c, 0xc0, 0x42, 0xb1, 0xf4, 0xc0, 0xb2, 0x5a, 0xdb, 0xa8, 0x2e, 0x16, 0x8e, 0xb8, + 0xef, 0x4b, 0x35, 0xb5, 0xcc, 0xde, 0x33, 0xe8, 0x5b, 0x99, 0x10, 0x98, 0x8b, 0x3c, 0x98, 0xf3, + 0x83, 0x99, 0xe9, 0x03, 0x28, 0xfa, 0x2d, 0x1f, 0x9c, 0x65, 0x0e, 0x9c, 0xa7, 0x26, 0x23, 0x97, + 0x3e, 0x40, 0x8f, 0x48, 0x30, 0x59, 0xdf, 0xde, 0x75, 0xda, 0xe6, 0x25, 0x03, 0x4d, 0xf9, 0xc8, + 0xa0, 0xaf, 0x85, 0x65, 0x72, 0x0f, 0x2f, 0x93, 0x1b, 0xf7, 0x57, 0x82, 0x51, 0x88, 0x90, 0xc6, + 0x6f, 0xf8, 0xd2, 0x28, 0x72, 0xd2, 0x78, 0x8a, 0x28, 0xa1, 0xf4, 0xe5, 0xf0, 0xab, 0xcf, 0x80, + 0x5c, 0xbd, 0xab, 0xb5, 0x30, 0xfa, 0xa8, 0x0c, 0x33, 0xab, 0x58, 0xdb, 0xc3, 0xc5, 0x6e, 0xd7, + 0x32, 0xf7, 0x30, 0x2a, 0x05, 0xfa, 0x7a, 0x0a, 0x26, 0x6c, 0x37, 0x53, 0xa5, 0x4d, 0x6a, 0x30, + 0xa5, 0x7a, 0xaf, 0xca, 0x69, 0x00, 0xbd, 0x8d, 0x0d, 0x47, 0x77, 0x74, 0x6c, 0x9f, 0x92, 0xce, + 0xc8, 0x37, 0x4e, 0xa9, 0xa1, 0x14, 0xf4, 0x0d, 0x49, 0x54, 0xc7, 0x08, 0x17, 0xf3, 0x61, 0x0e, + 0x22, 0xa4, 0xfa, 0x6a, 0x49, 0x44, 0xc7, 0x06, 0x92, 0x4b, 0x26, 0xdb, 0xd7, 0x67, 0x92, 0x0b, + 0xd7, 0xcd, 0x51, 0xad, 0x35, 0xeb, 0x1b, 0xa5, 0x95, 0x66, 0x7d, 0xbd, 0x58, 0x2a, 0x17, 0xb0, + 0x72, 0x1c, 0x0a, 0xe4, 0xb1, 0x59, 0xa9, 0x37, 0x17, 0xcb, 0xab, 0xe5, 0x46, 0x79, 0xb1, 0xb0, + 0xa9, 0x28, 0x30, 0xa7, 0x96, 0x7f, 0x68, 0xa3, 0x5c, 0x6f, 0x34, 0x97, 0x8a, 0x95, 0xd5, 0xf2, + 0x62, 0x61, 0xcb, 0xfd, 0x79, 0xb5, 0xb2, 0x56, 0x69, 0x34, 0xd5, 0x72, 0xb1, 0xb4, 0x52, 0x5e, + 0x2c, 0x6c, 0x2b, 0x57, 0xc2, 0x15, 0xd5, 0x5a, 0xb3, 0xb8, 0xbe, 0xae, 0xd6, 0xce, 0x95, 0x9b, + 0xec, 0x8f, 0x7a, 0x41, 0xa7, 0x05, 0x35, 0x9a, 0xf5, 0x95, 0xa2, 0x5a, 0x2e, 0x2e, 0xac, 0x96, + 0x0b, 0x0f, 0xa1, 0xe7, 0xca, 0x30, 0xbb, 0xa6, 0x5d, 0xc4, 0xf5, 0x6d, 0xcd, 0xc2, 0xda, 0x85, + 0x0e, 0x46, 0xd7, 0x09, 0xe0, 0x89, 0x3e, 0x1a, 0xc6, 0xab, 0xcc, 0xe3, 0x75, 0x4b, 0x1f, 0x01, + 0x73, 0x45, 0x44, 0x00, 0xf6, 0x2f, 0x7e, 0x33, 0x58, 0xe1, 0x00, 0x7b, 0x5a, 0x42, 0x7a, 0xc9, + 0x10, 0xfb, 0x89, 0xc7, 0x01, 0x62, 0xe8, 0x31, 0x19, 0xe6, 0x2a, 0xc6, 0x9e, 0xee, 0xe0, 0x65, + 0x6c, 0x60, 0xcb, 0x1d, 0x07, 0x84, 0x60, 0x78, 0x54, 0x0e, 0xc1, 0xb0, 0xc4, 0xc3, 0x70, 0x6b, + 0x1f, 0xb1, 0xf1, 0x65, 0x44, 0x8c, 0xb6, 0xd7, 0xc0, 0x94, 0x4e, 0xf2, 0x95, 0xf4, 0x36, 0x93, + 0x58, 0x90, 0xa0, 0x5c, 0x0f, 0xb3, 0xf4, 0x65, 0x49, 0xef, 0xe0, 0x07, 0xf0, 0x65, 0x36, 0xee, + 0xf2, 0x89, 0xe8, 0x67, 0xfd, 0xc6, 0x57, 0xe1, 0xb0, 0xfc, 0x81, 0xa4, 0x4c, 0x25, 0x03, 0xf3, + 0x25, 0x8f, 0x87, 0xe6, 0xb7, 0xaf, 0x95, 0xe9, 0xe8, 0x3b, 0x12, 0x4c, 0xd7, 0x1d, 0xb3, 0xeb, + 0xaa, 0xac, 0x6e, 0x6c, 0x89, 0x81, 0xfb, 0xa1, 0x70, 0x1b, 0x2b, 0xf1, 0xe0, 0x3e, 0xa5, 0x8f, + 0x1c, 0x43, 0x05, 0x44, 0xb4, 0xb0, 0x6f, 0xf8, 0x2d, 0x6c, 0x89, 0x43, 0xe5, 0xf6, 0x44, 0xd4, + 0xbe, 0x0b, 0xdb, 0xd7, 0x4b, 0x64, 0x28, 0x78, 0x6a, 0xe6, 0x94, 0x76, 0x2d, 0x0b, 0x1b, 0x8e, + 0x18, 0x08, 0x7f, 0x15, 0x06, 0x61, 0x85, 0x07, 0xe1, 0xf6, 0x18, 0x65, 0xf6, 0x4a, 0x49, 0xb1, + 0x8d, 0xbd, 0xc7, 0x47, 0xf3, 0x01, 0x0e, 0xcd, 0x1f, 0x4c, 0xce, 0x56, 0x32, 0x48, 0x57, 0x86, + 0x40, 0xf4, 0x38, 0x14, 0xdc, 0x31, 0xa9, 0xd4, 0xa8, 0x9c, 0x2b, 0x37, 0x2b, 0xd5, 0x73, 0x95, + 0x46, 0xb9, 0x80, 0xd1, 0x2f, 0xc8, 0x30, 0x43, 0x59, 0x53, 0xf1, 0x9e, 0x79, 0x51, 0xb0, 0xd7, + 0x7b, 0x2c, 0xa1, 0xb1, 0x10, 0x2e, 0x21, 0xa2, 0x65, 0xfc, 0x4c, 0x02, 0x63, 0x21, 0x86, 0xdc, + 0xe3, 0xa9, 0xb7, 0xda, 0xd7, 0x0c, 0xb6, 0xfa, 0xb4, 0x96, 0xbe, 0xbd, 0xd5, 0x4b, 0xb2, 0x00, + 0xb4, 0x92, 0xe7, 0x74, 0x7c, 0x09, 0xad, 0x05, 0x98, 0x70, 0x6a, 0x9b, 0x19, 0xa8, 0xb6, 0x52, + 0x3f, 0xb5, 0x7d, 0x7b, 0x78, 0xcc, 0x5a, 0xe0, 0xd1, 0xbb, 0x39, 0x52, 0xdc, 0x2e, 0x27, 0xd1, + 0xb3, 0x43, 0x4f, 0x51, 0x24, 0xde, 0xea, 0xbc, 0x06, 0xa6, 0xc8, 0x63, 0x55, 0xdb, 0xc1, 0xac, + 0x0d, 0x05, 0x09, 0xca, 0x59, 0x98, 0xa1, 0x19, 0x5b, 0xa6, 0xe1, 0xd6, 0x27, 0x4b, 0x32, 0x70, + 0x69, 0x2e, 0x88, 0x2d, 0x0b, 0x6b, 0x8e, 0x69, 0x11, 0x1a, 0x39, 0x0a, 0x62, 0x28, 0x09, 0x7d, + 0xd5, 0x6f, 0x85, 0x65, 0x4e, 0x73, 0x6e, 0x4b, 0x52, 0x95, 0x64, 0x7a, 0xb3, 0x37, 0x5c, 0xfb, + 0xa3, 0xad, 0xae, 0xe9, 0xa2, 0xbd, 0x44, 0xa6, 0x76, 0x58, 0x39, 0x09, 0x0a, 0x4b, 0x75, 0xf3, + 0x96, 0x6a, 0xd5, 0x46, 0xb9, 0xda, 0x28, 0x6c, 0xf6, 0xd5, 0xa8, 0x2d, 0xf4, 0xea, 0x2c, 0x64, + 0xef, 0x37, 0x75, 0x03, 0x3d, 0x92, 0xe1, 0x54, 0xc2, 0xc0, 0xce, 0x25, 0xd3, 0xba, 0xe8, 0x37, + 0xd4, 0x20, 0x21, 0x1e, 0x9b, 0x40, 0x95, 0xe4, 0x81, 0xaa, 0x94, 0xed, 0xa7, 0x4a, 0x3f, 0x1f, + 0x56, 0xa5, 0xbb, 0x78, 0x55, 0xba, 0xa1, 0x8f, 0xfc, 0x5d, 0xe6, 0x23, 0x3a, 0x80, 0x0f, 0xfa, + 0x1d, 0xc0, 0xbd, 0x1c, 0x8c, 0x4f, 0x16, 0x23, 0x93, 0x0c, 0xc0, 0xcf, 0xa5, 0xda, 0xf0, 0xfb, + 0x41, 0xbd, 0x15, 0x01, 0xf5, 0x76, 0x9f, 0x3e, 0x41, 0xdf, 0xdf, 0x75, 0x3c, 0xb4, 0xbf, 0x9b, + 0xb8, 0xa8, 0x9c, 0x80, 0x63, 0x8b, 0x95, 0xa5, 0xa5, 0xb2, 0x5a, 0xae, 0x36, 0x9a, 0xd5, 0x72, + 0xe3, 0x7c, 0x4d, 0x7d, 0xa0, 0xd0, 0x41, 0xaf, 0x92, 0x01, 0x5c, 0x09, 0x95, 0x34, 0xa3, 0x85, + 0x3b, 0x62, 0x3d, 0xfa, 0xff, 0x92, 0x92, 0xf5, 0x09, 0x01, 0xfd, 0x08, 0x38, 0x5f, 0x26, 0x89, + 0xb7, 0xca, 0x48, 0x62, 0xc9, 0x40, 0x7d, 0xed, 0xe3, 0xc1, 0xf6, 0xbc, 0x02, 0x8e, 0x7a, 0xf4, + 0x58, 0xf6, 0xfe, 0xd3, 0xbe, 0x37, 0x64, 0x61, 0x8e, 0xc1, 0xe2, 0xcd, 0xe3, 0x9f, 0x9f, 0x11, + 0x99, 0xc8, 0x23, 0x98, 0x64, 0xd3, 0x76, 0xaf, 0x7b, 0xf7, 0xdf, 0x95, 0x65, 0x98, 0xee, 0x62, + 0x6b, 0x47, 0xb7, 0x6d, 0xdd, 0x34, 0xe8, 0x82, 0xdc, 0xdc, 0xed, 0x4f, 0xf4, 0x25, 0x4e, 0xd6, + 0x2e, 0xe7, 0xd7, 0x35, 0xcb, 0xd1, 0x5b, 0x7a, 0x57, 0x33, 0x9c, 0xf5, 0x20, 0xb3, 0x1a, 0xfe, + 0x13, 0xbd, 0x38, 0xe1, 0xb4, 0x86, 0xaf, 0x49, 0x84, 0x4a, 0xfc, 0x41, 0x82, 0x29, 0x49, 0x2c, + 0xc1, 0x64, 0x6a, 0xf1, 0x81, 0x54, 0xd5, 0xa2, 0x0f, 0xde, 0x5b, 0xca, 0x55, 0x70, 0xa2, 0x52, + 0x2d, 0xd5, 0x54, 0xb5, 0x5c, 0x6a, 0x34, 0xd7, 0xcb, 0xea, 0x5a, 0xa5, 0x5e, 0xaf, 0xd4, 0xaa, + 0xf5, 0x83, 0xb4, 0x76, 0xf4, 0x11, 0xd9, 0xd7, 0x98, 0x45, 0xdc, 0xea, 0xe8, 0x06, 0x46, 0xf7, + 0x1e, 0x50, 0x61, 0xf8, 0x55, 0x1f, 0x71, 0x9c, 0x59, 0xf9, 0x11, 0x38, 0xbf, 0x32, 0x39, 0xce, + 0xfd, 0x09, 0xfe, 0x07, 0x6e, 0xfe, 0x8f, 0xc9, 0x70, 0x2c, 0xd4, 0x10, 0x55, 0xbc, 0x33, 0xb2, + 0x95, 0xbc, 0x9f, 0x08, 0xb7, 0xdd, 0x0a, 0x8f, 0x69, 0x3f, 0x6b, 0x7a, 0x1f, 0x1b, 0x11, 0xb0, + 0xbe, 0xd6, 0x87, 0x75, 0x95, 0x83, 0xf5, 0x19, 0x43, 0xd0, 0x4c, 0x86, 0xec, 0xef, 0xa5, 0x8a, + 0xec, 0x55, 0x70, 0x62, 0xbd, 0xa8, 0x36, 0x2a, 0xa5, 0xca, 0x7a, 0xd1, 0x1d, 0x47, 0x43, 0x43, + 0x76, 0x84, 0xb9, 0xce, 0x83, 0xde, 0x17, 0xdf, 0x77, 0x67, 0xe1, 0x9a, 0xfe, 0x1d, 0x6d, 0x69, + 0x5b, 0x33, 0xb6, 0x30, 0xd2, 0x45, 0xa0, 0x5e, 0x84, 0x89, 0x16, 0xc9, 0x4e, 0x71, 0x0e, 0x6f, + 0xdd, 0xc4, 0xf4, 0xe5, 0xb4, 0x04, 0xd5, 0xfb, 0x15, 0xbd, 0x39, 0xac, 0x10, 0x0d, 0x5e, 0x21, + 0xee, 0x89, 0x07, 0x6f, 0x1f, 0xdf, 0x11, 0xba, 0xf1, 0x71, 0x5f, 0x37, 0xce, 0x73, 0xba, 0x51, + 0x3a, 0x18, 0xf9, 0x64, 0x6a, 0xf2, 0x27, 0x8f, 0x87, 0x0e, 0x20, 0x52, 0x9b, 0xf4, 0xe8, 0x51, + 0xa1, 0x6f, 0x77, 0xff, 0x0a, 0x19, 0xf2, 0x8b, 0xb8, 0x83, 0x45, 0x57, 0x22, 0xbf, 0x2e, 0x89, + 0x6e, 0x88, 0x50, 0x18, 0x28, 0xed, 0xe8, 0xd5, 0x11, 0x47, 0xdf, 0xc1, 0xb6, 0xa3, 0xed, 0x74, + 0x89, 0xa8, 0x65, 0x35, 0x48, 0x40, 0x3f, 0x29, 0x89, 0x6c, 0x97, 0xc4, 0x14, 0xf3, 0x1f, 0x63, + 0x4d, 0xf1, 0x93, 0x12, 0x4c, 0xd6, 0xb1, 0x53, 0xb3, 0xda, 0xd8, 0x42, 0xf5, 0x00, 0xa3, 0x33, + 0x30, 0x4d, 0x40, 0x71, 0xa7, 0x99, 0x3e, 0x4e, 0xe1, 0x24, 0xe5, 0x06, 0x98, 0xf3, 0x5f, 0xc9, + 0xef, 0xac, 0x1b, 0xef, 0x49, 0x45, 0xff, 0x98, 0x11, 0xdd, 0xc5, 0x65, 0x4b, 0x86, 0x8c, 0x9b, + 0x88, 0x56, 0x2a, 0xb6, 0x23, 0x1b, 0x4b, 0x2a, 0xfd, 0x8d, 0xae, 0x37, 0x4a, 0x00, 0x1b, 0x86, + 0xed, 0xc9, 0xf5, 0xc9, 0x09, 0xe4, 0x8a, 0xfe, 0x39, 0x93, 0x6c, 0x16, 0x13, 0x94, 0x13, 0x21, + 0xb1, 0xdf, 0x4c, 0xb0, 0xb6, 0x10, 0x49, 0x2c, 0x7d, 0x99, 0x7d, 0x71, 0x0e, 0xf2, 0xe7, 0xb5, + 0x4e, 0x07, 0x3b, 0xe8, 0x4b, 0x12, 0xe4, 0x4b, 0x16, 0xd6, 0x1c, 0x1c, 0x16, 0x1d, 0x82, 0x49, + 0xcb, 0x34, 0x9d, 0x75, 0xcd, 0xd9, 0x66, 0x72, 0xf3, 0xdf, 0x99, 0xc3, 0xc0, 0xef, 0x86, 0xbb, + 0x8f, 0x7b, 0x79, 0xd1, 0x7d, 0x3f, 0x57, 0x5b, 0x5a, 0xd0, 0x3c, 0x2d, 0x24, 0xa2, 0xff, 0x40, + 0x30, 0xb9, 0x63, 0xe0, 0x1d, 0xd3, 0xd0, 0x5b, 0x9e, 0xcd, 0xe9, 0xbd, 0xa3, 0xf7, 0xfa, 0x32, + 0x5d, 0xe0, 0x64, 0x3a, 0x2f, 0x5c, 0x4a, 0x32, 0x81, 0xd6, 0x87, 0xe8, 0x3d, 0xae, 0x85, 0xab, + 0x69, 0x67, 0xd0, 0x6c, 0xd4, 0x9a, 0x25, 0xb5, 0x5c, 0x6c, 0x94, 0x9b, 0xab, 0xb5, 0x52, 0x71, + 0xb5, 0xa9, 0x96, 0xd7, 0x6b, 0x05, 0x8c, 0xfe, 0x4e, 0x72, 0x85, 0xdb, 0x32, 0xf7, 0xb0, 0x85, + 0x96, 0x85, 0xe4, 0x1c, 0x27, 0x13, 0x86, 0xc1, 0xcf, 0x0b, 0x3b, 0x6d, 0x30, 0xe9, 0x30, 0x0e, + 0x22, 0x94, 0xf7, 0x7d, 0x42, 0xcd, 0x3d, 0x96, 0xd4, 0xe3, 0x40, 0xd2, 0xff, 0x5b, 0x82, 0x89, + 0x92, 0x69, 0xec, 0x61, 0xcb, 0x09, 0xcf, 0x77, 0xc2, 0xd2, 0xcc, 0xf0, 0xd2, 0x74, 0x07, 0x49, + 0x6c, 0x38, 0x96, 0xd9, 0xf5, 0x26, 0x3c, 0xde, 0x2b, 0xfa, 0xed, 0xa4, 0x12, 0x66, 0x25, 0x47, + 0x2f, 0x7c, 0xf6, 0x2f, 0x88, 0x63, 0x4f, 0xee, 0x69, 0x00, 0xaf, 0x4a, 0x82, 0x4b, 0x7f, 0x06, + 0xd2, 0xef, 0x52, 0x3e, 0x2f, 0xc3, 0x2c, 0x6d, 0x7c, 0x75, 0x4c, 0x2c, 0x34, 0x54, 0x0b, 0x2f, + 0x39, 0xf6, 0x08, 0x7f, 0xe5, 0x08, 0x27, 0xfe, 0xbc, 0xd6, 0xed, 0xfa, 0xcb, 0xcf, 0x2b, 0x47, + 0x54, 0xf6, 0x4e, 0xd5, 0x7c, 0x21, 0x0f, 0x59, 0x6d, 0xd7, 0xd9, 0x46, 0xdf, 0x11, 0x9e, 0x7c, + 0x72, 0x9d, 0x01, 0xe3, 0x27, 0x02, 0x92, 0xe3, 0x90, 0x73, 0xcc, 0x8b, 0xd8, 0x93, 0x03, 0x7d, + 0x71, 0xe1, 0xd0, 0xba, 0xdd, 0x06, 0xf9, 0xc0, 0xe0, 0xf0, 0xde, 0x5d, 0x5b, 0x47, 0x6b, 0xb5, + 0xcc, 0x5d, 0xc3, 0xa9, 0x78, 0x4b, 0xd0, 0x41, 0x02, 0xfa, 0x6c, 0x46, 0x64, 0x32, 0x2b, 0xc0, + 0x60, 0x32, 0xc8, 0x2e, 0x0c, 0xd1, 0x94, 0xe6, 0xe1, 0xa6, 0xe2, 0xfa, 0x7a, 0xb3, 0x51, 0x7b, + 0xa0, 0x5c, 0x0d, 0x0c, 0xcf, 0x66, 0xa5, 0xda, 0x6c, 0xac, 0x94, 0x9b, 0xa5, 0x0d, 0x95, 0xac, + 0x13, 0x16, 0x4b, 0xa5, 0xda, 0x46, 0xb5, 0x51, 0xc0, 0xe8, 0x75, 0x12, 0xcc, 0x94, 0x3a, 0xa6, + 0xed, 0x23, 0x7c, 0x6d, 0x80, 0xb0, 0x2f, 0xc6, 0x4c, 0x48, 0x8c, 0xe8, 0xdf, 0x32, 0xa2, 0x4e, + 0x07, 0x9e, 0x40, 0x42, 0xe4, 0x23, 0x7a, 0xa9, 0xdf, 0x16, 0x72, 0x3a, 0x18, 0x4c, 0x2f, 0xfd, + 0x26, 0xf1, 0x99, 0x7b, 0x60, 0xa2, 0x48, 0x15, 0x03, 0xfd, 0x4d, 0x06, 0xf2, 0x25, 0xd3, 0xd8, + 0xd4, 0xb7, 0x5c, 0x63, 0x0e, 0x1b, 0xda, 0x85, 0x0e, 0x5e, 0xd4, 0x1c, 0x6d, 0x4f, 0xc7, 0x97, + 0x48, 0x05, 0x26, 0xd5, 0x9e, 0x54, 0x97, 0x29, 0x96, 0x82, 0x2f, 0xec, 0x6e, 0x11, 0xa6, 0x26, + 0xd5, 0x70, 0x92, 0xf2, 0x0c, 0xb8, 0x92, 0xbe, 0xae, 0x5b, 0xd8, 0xc2, 0x1d, 0xac, 0xd9, 0xd8, + 0x9d, 0x16, 0x19, 0xb8, 0x43, 0x94, 0x76, 0x52, 0x8d, 0xfa, 0xac, 0x9c, 0x85, 0x19, 0xfa, 0x89, + 0x98, 0x22, 0x36, 0x51, 0xe3, 0x49, 0x95, 0x4b, 0x53, 0x9e, 0x02, 0x39, 0xfc, 0xb0, 0x63, 0x69, + 0xa7, 0xda, 0x04, 0xaf, 0x2b, 0xe7, 0xa9, 0xd7, 0xe1, 0xbc, 0xe7, 0x75, 0x38, 0x5f, 0x27, 0x3e, + 0x89, 0x2a, 0xcd, 0x85, 0x3e, 0x32, 0xe9, 0x1b, 0x12, 0xaf, 0x93, 0x03, 0xc5, 0x50, 0x20, 0x6b, + 0x68, 0x3b, 0x98, 0xe9, 0x05, 0x79, 0x56, 0x6e, 0x82, 0xa3, 0xda, 0x9e, 0xe6, 0x68, 0xd6, 0xaa, + 0xd9, 0xd2, 0x3a, 0x64, 0xf0, 0xf3, 0x5a, 0x7e, 0xef, 0x07, 0xb2, 0x23, 0xe4, 0x98, 0x16, 0x26, + 0xb9, 0xbc, 0x1d, 0x21, 0x2f, 0xc1, 0xa5, 0xae, 0xb7, 0x4c, 0x83, 0xf0, 0x2f, 0xab, 0xe4, 0xd9, + 0x95, 0x4a, 0x5b, 0xb7, 0xdd, 0x8a, 0x10, 0x2a, 0x55, 0xba, 0xb5, 0x51, 0xbf, 0x6c, 0xb4, 0xc8, + 0x6e, 0xd0, 0xa4, 0x1a, 0xf5, 0x59, 0x59, 0x80, 0x69, 0xb6, 0x11, 0xb2, 0xe6, 0xea, 0x55, 0x9e, + 0xe8, 0xd5, 0x19, 0xde, 0xa7, 0x8b, 0xe2, 0x39, 0x5f, 0x0d, 0xf2, 0xa9, 0xe1, 0x9f, 0x94, 0xfb, + 0xe0, 0x6a, 0xf6, 0x5a, 0xda, 0xb5, 0x1d, 0x73, 0x87, 0x82, 0xbe, 0xa4, 0x77, 0x68, 0x0d, 0x26, + 0x48, 0x0d, 0xe2, 0xb2, 0x28, 0xb7, 0xc3, 0xf1, 0xae, 0x85, 0x37, 0xb1, 0xf5, 0xa0, 0xb6, 0xb3, + 0xfb, 0x70, 0xc3, 0xd2, 0x0c, 0xbb, 0x6b, 0x5a, 0xce, 0xa9, 0x49, 0xc2, 0x7c, 0xdf, 0x6f, 0xca, + 0xcd, 0x70, 0xec, 0x21, 0xdb, 0x34, 0x8a, 0x5d, 0x7d, 0x55, 0xb7, 0x1d, 0x6c, 0x14, 0xdb, 0x6d, + 0xeb, 0xd4, 0x14, 0x29, 0x6b, 0xff, 0x07, 0xd6, 0xad, 0x4e, 0x42, 0x9e, 0x0a, 0x1b, 0xbd, 0x28, + 0x27, 0xec, 0xfc, 0xc9, 0xaa, 0x1f, 0x6b, 0xcc, 0xdd, 0x0a, 0x13, 0xac, 0x3f, 0x24, 0xb0, 0x4e, + 0xdf, 0x7e, 0xb2, 0x67, 0x15, 0x82, 0x51, 0x51, 0xbd, 0x6c, 0xca, 0x53, 0x21, 0xdf, 0x22, 0x42, + 0x20, 0x08, 0x4f, 0xdf, 0x7e, 0x75, 0xff, 0x42, 0x49, 0x16, 0x95, 0x65, 0x45, 0x7f, 0x29, 0x0b, + 0xf9, 0x8b, 0xc6, 0x71, 0x9c, 0xac, 0x0f, 0xf8, 0xaa, 0x34, 0x44, 0x27, 0x7b, 0x33, 0xdc, 0xc8, + 0x7a, 0x50, 0x66, 0xad, 0x2c, 0x36, 0x17, 0x36, 0xbc, 0xa9, 0xa3, 0x6b, 0xc3, 0xd4, 0x1b, 0x45, + 0xd5, 0x9d, 0xf7, 0x2f, 0xba, 0x53, 0xce, 0x9b, 0xe0, 0x86, 0x01, 0xb9, 0xcb, 0x8d, 0x66, 0xb5, + 0xb8, 0x56, 0x2e, 0x6c, 0xf2, 0x96, 0x50, 0xbd, 0x51, 0x5b, 0x6f, 0xaa, 0x1b, 0xd5, 0x6a, 0xa5, + 0xba, 0x4c, 0x89, 0xb9, 0x06, 0xe4, 0xc9, 0x20, 0xc3, 0x79, 0xb5, 0xd2, 0x28, 0x37, 0x4b, 0xb5, + 0xea, 0x52, 0x65, 0xb9, 0xa0, 0x0f, 0x32, 0xa3, 0x1e, 0x52, 0xce, 0xc0, 0x35, 0x1c, 0x27, 0x95, + 0x5a, 0xd5, 0x9d, 0x07, 0x97, 0x8a, 0xd5, 0x52, 0xd9, 0x9d, 0xf4, 0x5e, 0x54, 0x10, 0x9c, 0xa0, + 0xe4, 0x9a, 0x4b, 0x95, 0xd5, 0xf0, 0xd6, 0xd5, 0x87, 0x32, 0xca, 0x29, 0xb8, 0x22, 0xfc, 0xad, + 0x52, 0x3d, 0x57, 0x5c, 0xad, 0x2c, 0x16, 0x3e, 0x9c, 0x51, 0xae, 0x87, 0x6b, 0xb9, 0xbf, 0xe8, + 0x2e, 0x54, 0xb3, 0xb2, 0xd8, 0x5c, 0xab, 0xd4, 0xd7, 0x8a, 0x8d, 0xd2, 0x4a, 0xe1, 0x23, 0x64, + 0x76, 0xe1, 0x9b, 0xcb, 0x21, 0x27, 0xce, 0x97, 0x84, 0x2d, 0x80, 0x22, 0xaf, 0xa8, 0x4f, 0xee, + 0x0b, 0x7b, 0xbc, 0xc5, 0xfb, 0x01, 0x7f, 0x2c, 0x59, 0xe4, 0x54, 0xe8, 0xd6, 0x04, 0xb4, 0x92, + 0xe9, 0x50, 0x63, 0x08, 0x15, 0x3a, 0x03, 0xd7, 0x54, 0xcb, 0x14, 0x29, 0xb5, 0x5c, 0xaa, 0x9d, + 0x2b, 0xab, 0xcd, 0xf3, 0xc5, 0xd5, 0xd5, 0x72, 0xa3, 0xb9, 0x54, 0x51, 0xeb, 0x8d, 0xc2, 0x26, + 0xfa, 0x67, 0xc9, 0x5f, 0xfb, 0x09, 0x49, 0xeb, 0x6f, 0xa4, 0xa4, 0xcd, 0x3a, 0x76, 0x8d, 0xe7, + 0x07, 0x20, 0x6f, 0x3b, 0x9a, 0xb3, 0x6b, 0xb3, 0x56, 0xfd, 0x84, 0xfe, 0xad, 0x7a, 0xbe, 0x4e, + 0x32, 0xa9, 0x2c, 0x33, 0xfa, 0xcb, 0x4c, 0x92, 0x66, 0x3a, 0x82, 0xe5, 0x1f, 0x7d, 0x08, 0x11, + 0x9f, 0x06, 0xe4, 0x69, 0x7b, 0xa5, 0xde, 0x2c, 0xae, 0xaa, 0xe5, 0xe2, 0xe2, 0x83, 0xfe, 0xa2, + 0x0f, 0x56, 0x4e, 0xc0, 0xb1, 0x8d, 0x6a, 0x71, 0x61, 0xb5, 0x4c, 0x9a, 0x4b, 0xad, 0x5a, 0x2d, + 0x97, 0x5c, 0xb9, 0xff, 0x24, 0xd9, 0x62, 0x71, 0xed, 0x6d, 0xc2, 0xb7, 0x6b, 0x13, 0x85, 0xe4, + 0xff, 0x15, 0x61, 0x4f, 0xa4, 0x40, 0xc3, 0xc2, 0xb4, 0x46, 0x8b, 0xc3, 0x67, 0x85, 0x9c, 0x8f, + 0x84, 0x38, 0x49, 0x86, 0xc7, 0x7f, 0x1e, 0x02, 0x8f, 0x13, 0x70, 0x2c, 0x8c, 0x07, 0x71, 0x42, + 0x8a, 0x86, 0xe1, 0x45, 0x53, 0x90, 0xaf, 0xe3, 0x0e, 0x6e, 0x39, 0xe8, 0x31, 0x29, 0x30, 0x3d, + 0xe6, 0x40, 0xf2, 0x9d, 0x5e, 0x24, 0xbd, 0xcd, 0x4d, 0xb6, 0xa5, 0x9e, 0xc9, 0x76, 0x8c, 0xd1, + 0x20, 0x27, 0x32, 0x1a, 0xb2, 0x29, 0x18, 0x0d, 0xb9, 0xe1, 0x8d, 0x86, 0x7c, 0x52, 0xa3, 0x61, + 0x22, 0xd6, 0x68, 0x40, 0xbf, 0x99, 0x4f, 0xda, 0xa7, 0x50, 0x60, 0x0e, 0xd7, 0x54, 0xf8, 0x5f, + 0xd9, 0x24, 0x7d, 0x50, 0x5f, 0x8e, 0x93, 0xe9, 0xfc, 0x77, 0xe4, 0x14, 0x96, 0x36, 0x94, 0xeb, + 0xe0, 0xda, 0xe0, 0xbd, 0x59, 0x7e, 0x56, 0xa5, 0xde, 0xa8, 0x13, 0xfb, 0xa0, 0x54, 0x53, 0xd5, + 0x8d, 0x75, 0xba, 0x3e, 0x7d, 0x12, 0x94, 0x80, 0x8a, 0xba, 0x51, 0xa5, 0xd6, 0xc0, 0x16, 0x4f, + 0x7d, 0xa9, 0x52, 0x5d, 0x6c, 0xfa, 0x2d, 0xac, 0xba, 0x54, 0x2b, 0x6c, 0xbb, 0xd3, 0xc1, 0x10, + 0x75, 0x77, 0x38, 0x67, 0x25, 0x14, 0xab, 0x8b, 0xcd, 0xb5, 0x6a, 0x79, 0xad, 0x56, 0xad, 0x94, + 0x48, 0x7a, 0xbd, 0xdc, 0x28, 0xe8, 0xee, 0xb0, 0xd4, 0x63, 0x7f, 0xd4, 0xcb, 0x45, 0xb5, 0xb4, + 0x52, 0x56, 0x69, 0x91, 0x0f, 0x29, 0x37, 0xc0, 0xd9, 0x62, 0xb5, 0xd6, 0x70, 0x53, 0x8a, 0xd5, + 0x07, 0x1b, 0x0f, 0xae, 0x97, 0x9b, 0xeb, 0x6a, 0xad, 0x54, 0xae, 0xd7, 0xdd, 0x56, 0xcd, 0xac, + 0x95, 0x42, 0x47, 0xb9, 0x07, 0xee, 0x0c, 0xb1, 0x56, 0x6e, 0x90, 0xcd, 0xd0, 0xb5, 0x1a, 0xf1, + 0x87, 0x59, 0x2c, 0x37, 0x57, 0x8a, 0xf5, 0x66, 0xa5, 0x5a, 0xaa, 0xad, 0xad, 0x17, 0x1b, 0x15, + 0xb7, 0xf1, 0xaf, 0xab, 0xb5, 0x46, 0xad, 0x79, 0xae, 0xac, 0xd6, 0x2b, 0xb5, 0x6a, 0xc1, 0x70, + 0xab, 0x1c, 0xea, 0x2d, 0xbc, 0x5e, 0xdb, 0x54, 0xae, 0x81, 0x53, 0x5e, 0xfa, 0x6a, 0xcd, 0x15, + 0x74, 0xc8, 0x7e, 0xe9, 0xa6, 0x6a, 0xbf, 0xfc, 0xab, 0x04, 0xd9, 0xba, 0x63, 0x76, 0xd1, 0xf7, + 0x07, 0xdd, 0xd1, 0x69, 0x00, 0x8b, 0xec, 0x6d, 0xba, 0x33, 0x3c, 0x36, 0xe7, 0x0b, 0xa5, 0xa0, + 0x3f, 0x16, 0xde, 0x90, 0x09, 0x7a, 0x78, 0xb3, 0x1b, 0x61, 0xd9, 0x7c, 0x4b, 0xec, 0x84, 0x4a, + 0x34, 0xa1, 0x64, 0xfa, 0xfe, 0x33, 0xc3, 0x6c, 0xb9, 0x20, 0x38, 0x19, 0x82, 0xcd, 0x95, 0xbf, + 0xa7, 0x12, 0x58, 0xb9, 0x12, 0xae, 0xe8, 0x51, 0x2e, 0xa2, 0x53, 0x9b, 0xca, 0xf7, 0xc1, 0x13, + 0x42, 0xea, 0x5d, 0x5e, 0xab, 0x9d, 0x2b, 0xfb, 0x8a, 0xbc, 0x58, 0x6c, 0x14, 0x0b, 0x5b, 0xe8, + 0x93, 0x32, 0x64, 0xd7, 0xcc, 0xbd, 0xde, 0x7d, 0x30, 0x03, 0x5f, 0x0a, 0xad, 0xb3, 0x7a, 0xaf, + 0xbc, 0x47, 0xbe, 0x90, 0xd8, 0xd7, 0xa2, 0xf7, 0xbc, 0x3f, 0x2b, 0x25, 0x11, 0xfb, 0xda, 0x41, + 0x37, 0xba, 0xff, 0x7e, 0x18, 0xb1, 0x47, 0x88, 0x16, 0x2b, 0x67, 0xe1, 0x74, 0xf0, 0xa1, 0xb2, + 0x58, 0xae, 0x36, 0x2a, 0x4b, 0x0f, 0x06, 0xc2, 0xad, 0xa8, 0x42, 0xe2, 0x1f, 0xd4, 0x8d, 0xc5, + 0xcf, 0x4b, 0x4e, 0xc1, 0xf1, 0xe0, 0xdb, 0x72, 0xb9, 0xe1, 0x7d, 0x79, 0x08, 0x3d, 0x92, 0x83, + 0x19, 0xda, 0xad, 0x6f, 0x74, 0xdb, 0x9a, 0x83, 0xd1, 0x53, 0x03, 0x74, 0x6f, 0x84, 0xa3, 0x95, + 0xf5, 0xa5, 0x7a, 0xdd, 0x31, 0x2d, 0x6d, 0x0b, 0x93, 0x71, 0x8c, 0x4a, 0xab, 0x37, 0x19, 0xbd, + 0x55, 0x78, 0x0d, 0x91, 0x1f, 0x4a, 0x68, 0x99, 0x11, 0xa8, 0x7f, 0x5e, 0x68, 0xcd, 0x4f, 0x80, + 0x60, 0x32, 0xf4, 0x1f, 0x1a, 0x71, 0x9b, 0x8b, 0xc6, 0x65, 0xf3, 0xec, 0xf3, 0x24, 0x98, 0x6a, + 0xe8, 0x3b, 0xf8, 0xd9, 0xa6, 0x81, 0x6d, 0x65, 0x02, 0xe4, 0xe5, 0xb5, 0x46, 0xe1, 0x88, 0xfb, + 0xe0, 0x9a, 0x60, 0x19, 0xf2, 0x50, 0x76, 0x0b, 0x70, 0x1f, 0x8a, 0x8d, 0x82, 0xec, 0x3e, 0xac, + 0x95, 0x1b, 0x85, 0xac, 0xfb, 0x50, 0x2d, 0x37, 0x0a, 0x39, 0xf7, 0x61, 0x7d, 0xb5, 0x51, 0xc8, + 0xbb, 0x0f, 0x95, 0x7a, 0xa3, 0x30, 0xe1, 0x3e, 0x2c, 0xd4, 0x1b, 0x85, 0x49, 0xf7, 0xe1, 0x5c, + 0xbd, 0x51, 0x98, 0x72, 0x1f, 0x4a, 0x8d, 0x46, 0x01, 0xdc, 0x87, 0xfb, 0xeb, 0x8d, 0xc2, 0xb4, + 0xfb, 0x50, 0x2c, 0x35, 0x0a, 0x33, 0xe4, 0xa1, 0xdc, 0x28, 0xcc, 0xba, 0x0f, 0xf5, 0x7a, 0xa3, + 0x30, 0x47, 0x28, 0xd7, 0x1b, 0x85, 0xa3, 0xa4, 0xac, 0x4a, 0xa3, 0x50, 0x70, 0x1f, 0x56, 0xea, + 0x8d, 0xc2, 0x31, 0x92, 0xb9, 0xde, 0x28, 0x28, 0xa4, 0xd0, 0x7a, 0xa3, 0x70, 0x05, 0xc9, 0x53, + 0x6f, 0x14, 0x8e, 0x93, 0x22, 0xea, 0x8d, 0xc2, 0x09, 0xc2, 0x46, 0xb9, 0x51, 0x38, 0x49, 0xf2, + 0xa8, 0x8d, 0xc2, 0x95, 0xe4, 0x53, 0xb5, 0x51, 0x38, 0x45, 0x18, 0x2b, 0x37, 0x0a, 0x57, 0x91, + 0x07, 0xb5, 0x51, 0x40, 0xe4, 0x53, 0xb1, 0x51, 0xb8, 0x1a, 0x3d, 0x01, 0xa6, 0x96, 0xb1, 0x43, + 0x41, 0x44, 0x05, 0x90, 0x97, 0xb1, 0x13, 0x36, 0xfa, 0xbf, 0x28, 0xc3, 0x95, 0x6c, 0xa2, 0xb8, + 0x64, 0x99, 0x3b, 0xab, 0x78, 0x4b, 0x6b, 0x5d, 0x2e, 0x3f, 0xec, 0x1a, 0x5c, 0xe1, 0x3d, 0x5f, + 0x05, 0xb2, 0xdd, 0xa0, 0x33, 0x22, 0xcf, 0xb1, 0xf6, 0xa9, 0xb7, 0xd0, 0x25, 0x07, 0x0b, 0x5d, + 0xcc, 0x22, 0xfb, 0xa7, 0xb0, 0x46, 0x73, 0x6b, 0xd3, 0x99, 0x9e, 0xb5, 0x69, 0xb7, 0x99, 0x74, + 0xb1, 0x65, 0x9b, 0x86, 0xd6, 0xa9, 0x33, 0xa7, 0x00, 0xba, 0xa2, 0xd6, 0x9b, 0xac, 0xfc, 0x90, + 0xd7, 0x32, 0xa8, 0x55, 0xf6, 0xcc, 0xb8, 0xf9, 0x70, 0x6f, 0x35, 0x23, 0x1a, 0xc9, 0x47, 0xfc, + 0x46, 0xd2, 0xe0, 0x1a, 0xc9, 0x7d, 0x07, 0xa0, 0x9d, 0xac, 0xbd, 0x54, 0x86, 0x9b, 0x88, 0x04, + 0x2e, 0xb3, 0xde, 0x52, 0xb8, 0x8c, 0x3e, 0x29, 0xc1, 0xc9, 0xb2, 0xd1, 0x6f, 0x3e, 0x10, 0xd6, + 0x85, 0xd7, 0x85, 0xa1, 0x59, 0xe7, 0x45, 0x7a, 0x67, 0xdf, 0x6a, 0xf7, 0xa7, 0x19, 0x21, 0xd1, + 0x8f, 0xf9, 0x12, 0xad, 0x73, 0x12, 0xbd, 0x77, 0x78, 0xd2, 0xc9, 0x04, 0x5a, 0x1d, 0x69, 0x07, + 0x94, 0x45, 0x5f, 0x92, 0xe0, 0x18, 0xf5, 0xeb, 0xb9, 0x9f, 0x4e, 0x3f, 0x48, 0x97, 0xcd, 0x9b, + 0x50, 0x9d, 0x60, 0xaa, 0x42, 0xf5, 0x3b, 0x94, 0x82, 0x5e, 0x1d, 0x16, 0xf8, 0x03, 0xbc, 0xc0, + 0x23, 0x3a, 0xe3, 0xde, 0xe2, 0x22, 0x64, 0xfd, 0x61, 0x5f, 0xd6, 0x55, 0x4e, 0xd6, 0x77, 0x0e, + 0x45, 0xf5, 0x70, 0xc5, 0xfc, 0xd5, 0x2c, 0x3c, 0x81, 0x72, 0xc8, 0x14, 0x81, 0x76, 0x66, 0x45, + 0xa3, 0xad, 0x62, 0xdb, 0xd1, 0x2c, 0x87, 0x3b, 0xd2, 0xde, 0x33, 0xbf, 0xcd, 0xa4, 0x30, 0xbf, + 0x95, 0x06, 0xce, 0x6f, 0xd1, 0x5b, 0xc2, 0x56, 0xda, 0x79, 0x1e, 0xd9, 0x62, 0x0c, 0x06, 0x11, + 0x35, 0x8c, 0x6a, 0x51, 0xbe, 0xf9, 0xf6, 0xc3, 0x1c, 0xca, 0x4b, 0x07, 0x2e, 0x21, 0x19, 0xe2, + 0x7f, 0x3c, 0x5a, 0x73, 0x3a, 0x1b, 0xfe, 0xc6, 0xdb, 0x7e, 0x85, 0x76, 0xaa, 0xf3, 0xa0, 0x17, + 0x4f, 0xc2, 0x14, 0xe9, 0x72, 0x56, 0x75, 0xe3, 0xa2, 0x3b, 0x36, 0xce, 0x54, 0xf1, 0xa5, 0xd2, + 0xb6, 0xd6, 0xe9, 0x60, 0x63, 0x0b, 0xa3, 0x87, 0x38, 0x03, 0x5d, 0xeb, 0x76, 0xab, 0xc1, 0x56, + 0x91, 0xf7, 0xaa, 0xdc, 0x0b, 0x39, 0xbb, 0x65, 0x76, 0x31, 0x11, 0xd4, 0x5c, 0xc8, 0xb9, 0x84, + 0x5f, 0xee, 0x2a, 0xee, 0x3a, 0xdb, 0xf3, 0xa4, 0xac, 0x62, 0x57, 0xaf, 0xbb, 0x3f, 0xa8, 0xf4, + 0x3f, 0x36, 0x4e, 0x7e, 0xa5, 0x6f, 0x67, 0x9c, 0x89, 0xe9, 0x8c, 0x7d, 0xc6, 0xe7, 0xc3, 0x4c, + 0x47, 0xac, 0x64, 0x9c, 0x81, 0xe9, 0x96, 0x97, 0xc5, 0x3f, 0x3b, 0x13, 0x4e, 0x42, 0x5f, 0x4e, + 0xd4, 0x5d, 0x0b, 0x15, 0x9e, 0x4c, 0xab, 0xf0, 0x88, 0xed, 0xc5, 0x13, 0x70, 0xac, 0x51, 0xab, + 0x35, 0xd7, 0x8a, 0xd5, 0x07, 0x83, 0x33, 0xeb, 0x9b, 0xe8, 0x65, 0x59, 0x98, 0xab, 0x9b, 0x9d, + 0x3d, 0x1c, 0xe0, 0x5c, 0xe1, 0x9c, 0xb2, 0xc2, 0x72, 0xca, 0xec, 0x93, 0x93, 0x72, 0x12, 0xf2, + 0x9a, 0x61, 0x5f, 0xc2, 0x9e, 0x0d, 0xcf, 0xde, 0x18, 0x8c, 0xef, 0x0e, 0x77, 0x04, 0x2a, 0x0f, + 0xe3, 0x5d, 0x03, 0x24, 0xc9, 0x73, 0x15, 0x01, 0xe4, 0x59, 0x98, 0xb1, 0xe9, 0x86, 0x71, 0x23, + 0xe4, 0x17, 0xc0, 0xa5, 0x11, 0x16, 0xa9, 0xc7, 0x82, 0xcc, 0x58, 0x24, 0x6f, 0xe8, 0x55, 0x7e, + 0xff, 0xb1, 0xc1, 0x41, 0x5c, 0x3c, 0x08, 0x63, 0xc9, 0x40, 0x7e, 0xc5, 0xa8, 0x67, 0xe2, 0xa7, + 0xe0, 0x38, 0x6b, 0xf6, 0xcd, 0xd2, 0x4a, 0x71, 0x75, 0xb5, 0x5c, 0x5d, 0x2e, 0x37, 0x2b, 0x8b, + 0x74, 0x03, 0x2a, 0x48, 0x29, 0x36, 0x1a, 0xe5, 0xb5, 0xf5, 0x46, 0xbd, 0x59, 0x7e, 0x56, 0xa9, + 0x5c, 0x5e, 0x24, 0x6e, 0x91, 0xe4, 0x5c, 0x93, 0xe7, 0xc0, 0x5a, 0xac, 0xd6, 0xcf, 0x97, 0xd5, + 0xc2, 0xf6, 0xd9, 0x22, 0x4c, 0x87, 0x06, 0x0a, 0x97, 0xbb, 0x45, 0xbc, 0xa9, 0xed, 0x76, 0x98, + 0x4d, 0x5d, 0x38, 0xe2, 0x72, 0x47, 0x64, 0x53, 0x33, 0x3a, 0x97, 0x0b, 0x19, 0xa5, 0x00, 0x33, + 0xe1, 0x31, 0xa1, 0x20, 0xa1, 0x37, 0x5e, 0x03, 0x53, 0xe7, 0x4d, 0xeb, 0x22, 0xf1, 0xe5, 0x43, + 0xef, 0xa0, 0xb1, 0x6d, 0xbc, 0x53, 0xc2, 0x21, 0x03, 0xec, 0x15, 0xe2, 0x1e, 0x23, 0x1e, 0xb5, + 0xf9, 0x81, 0x27, 0x81, 0xcf, 0xc0, 0xf4, 0x25, 0x2f, 0x77, 0xd0, 0xd2, 0x43, 0x49, 0xe8, 0xbf, + 0x8b, 0xf9, 0x80, 0x0c, 0x2e, 0x32, 0x7d, 0x1f, 0x85, 0x37, 0x48, 0x90, 0x5f, 0xc6, 0x4e, 0xb1, + 0xd3, 0x09, 0xcb, 0xed, 0xa5, 0xc2, 0xa7, 0xbb, 0xb8, 0x4a, 0x14, 0x3b, 0x9d, 0xe8, 0x46, 0x15, + 0x12, 0x90, 0x77, 0x0a, 0x81, 0x4b, 0x13, 0xf4, 0x9d, 0x1c, 0x50, 0x60, 0xfa, 0x12, 0x7b, 0xaf, + 0xec, 0xfb, 0x39, 0x3c, 0x1a, 0x32, 0x93, 0x6e, 0x0b, 0xe2, 0x1a, 0x65, 0xe2, 0xfd, 0x25, 0xbc, + 0x7c, 0xca, 0x03, 0x30, 0xb1, 0x6b, 0xe3, 0x92, 0x66, 0x7b, 0x43, 0x1b, 0x5f, 0xd3, 0xda, 0x85, + 0x87, 0x70, 0xcb, 0x99, 0xaf, 0xec, 0xb8, 0x13, 0x9f, 0x0d, 0x9a, 0xd1, 0x0f, 0x15, 0xc4, 0xde, + 0x55, 0x8f, 0x82, 0x3b, 0x79, 0xbc, 0xa4, 0x3b, 0xdb, 0xa5, 0x6d, 0xcd, 0x61, 0x3b, 0x16, 0xfe, + 0x3b, 0x7a, 0xd1, 0x10, 0x70, 0xc6, 0xee, 0xf0, 0x47, 0x1e, 0x12, 0x4d, 0x0c, 0xe2, 0x08, 0xb6, + 0xe5, 0x87, 0x01, 0xf1, 0x1f, 0x24, 0xc8, 0xd6, 0xba, 0xd8, 0x10, 0x3e, 0x11, 0xe5, 0xcb, 0x56, + 0xea, 0x91, 0xed, 0xab, 0xc4, 0x3d, 0x04, 0xfd, 0x4a, 0xbb, 0x25, 0x47, 0x48, 0xf6, 0x16, 0xc8, + 0xea, 0xc6, 0xa6, 0xc9, 0x2c, 0xdb, 0xab, 0x23, 0x6c, 0x9d, 0x8a, 0xb1, 0x69, 0xaa, 0x24, 0xa3, + 0xa8, 0x73, 0x60, 0x5c, 0xd9, 0xe9, 0x8b, 0xfb, 0x6b, 0x93, 0x90, 0xa7, 0xea, 0x8c, 0x5e, 0x22, + 0x83, 0x5c, 0x6c, 0xb7, 0x23, 0x04, 0x2f, 0xed, 0x13, 0xbc, 0x49, 0x7e, 0xf3, 0x31, 0xf1, 0xdf, + 0xf9, 0x80, 0x36, 0x82, 0x7d, 0x3b, 0x6b, 0x52, 0xc5, 0x76, 0x3b, 0xda, 0x0f, 0xd9, 0x2f, 0x50, + 0xe2, 0x0b, 0x0c, 0xb7, 0x70, 0x59, 0xac, 0x85, 0x27, 0x1e, 0x08, 0x22, 0xf9, 0x4b, 0x1f, 0xa2, + 0x7f, 0x92, 0x60, 0x62, 0x55, 0xb7, 0x1d, 0x17, 0x9b, 0xa2, 0x08, 0x36, 0xd7, 0xc0, 0x94, 0x27, + 0x1a, 0xb7, 0xcb, 0x73, 0xfb, 0xf3, 0x20, 0x81, 0x9f, 0x89, 0xdf, 0xcf, 0xa3, 0xf3, 0xb4, 0xf8, + 0xda, 0x33, 0x2e, 0xa2, 0x4f, 0x9a, 0x04, 0xc5, 0x4a, 0xbd, 0xc5, 0xfe, 0xae, 0x2f, 0xf0, 0x35, + 0x4e, 0xe0, 0x77, 0x0c, 0x53, 0x64, 0xfa, 0x42, 0xff, 0x94, 0x04, 0xe0, 0x96, 0xcd, 0x8e, 0xf3, + 0x3d, 0x89, 0x3b, 0xa4, 0x1f, 0x23, 0xdd, 0x97, 0x85, 0xa5, 0xbb, 0xc6, 0x4b, 0xf7, 0x07, 0x07, + 0x57, 0x35, 0xee, 0xd8, 0x9e, 0x52, 0x00, 0x59, 0xf7, 0x45, 0xeb, 0x3e, 0xa2, 0x37, 0xf8, 0x42, + 0x5d, 0xe7, 0x84, 0x7a, 0xd7, 0x90, 0x25, 0xa5, 0x2f, 0xd7, 0xbf, 0x92, 0x60, 0xa2, 0x8e, 0x1d, + 0xb7, 0x9b, 0x44, 0xe7, 0x44, 0x7a, 0xf8, 0x50, 0xdb, 0x96, 0x04, 0xdb, 0xf6, 0x37, 0x33, 0xa2, + 0xc1, 0x7e, 0x02, 0xc9, 0x30, 0x9e, 0x22, 0x56, 0x1f, 0x1e, 0x15, 0x0a, 0xf6, 0x33, 0x88, 0x5a, + 0xfa, 0xd2, 0x7d, 0x9d, 0xe4, 0xbb, 0x5b, 0xf0, 0xa7, 0x6d, 0xc2, 0x66, 0x71, 0x66, 0xbf, 0x59, + 0x2c, 0x7e, 0xda, 0x26, 0x5c, 0xc7, 0x68, 0xef, 0x81, 0xc4, 0xc6, 0xc6, 0x08, 0x36, 0xf6, 0x87, + 0x91, 0xd7, 0x73, 0x65, 0xc8, 0xb3, 0x1d, 0x80, 0x7b, 0xe3, 0x77, 0x00, 0x06, 0x4f, 0x2d, 0xde, + 0x3e, 0x84, 0x29, 0x17, 0xb7, 0x2c, 0xef, 0xb3, 0x21, 0x85, 0xd8, 0xb8, 0x19, 0x72, 0x24, 0x1a, + 0x29, 0x1b, 0xe7, 0x02, 0x9f, 0x0c, 0x8f, 0x44, 0xd9, 0xfd, 0xaa, 0xd2, 0x4c, 0x89, 0x51, 0x18, + 0xc1, 0x4a, 0xfe, 0x30, 0x28, 0xbc, 0x55, 0x01, 0x58, 0xdf, 0xbd, 0xd0, 0xd1, 0xed, 0x6d, 0xdd, + 0xd8, 0x42, 0xff, 0x9e, 0x81, 0x19, 0xf6, 0x4a, 0x83, 0x6a, 0xc6, 0x9a, 0x7f, 0x91, 0x46, 0x41, + 0x01, 0xe4, 0x5d, 0x4b, 0x67, 0xcb, 0x00, 0xee, 0xa3, 0x72, 0xb7, 0xef, 0x9e, 0x95, 0xed, 0x09, + 0xa7, 0xe0, 0x8a, 0x21, 0xe0, 0x60, 0x3e, 0x54, 0x7a, 0xe0, 0xa6, 0x15, 0x8e, 0x9c, 0x9a, 0xe3, + 0x23, 0xa7, 0x72, 0x67, 0x2c, 0xf3, 0x3d, 0x67, 0x2c, 0x5d, 0x1c, 0x6d, 0xfd, 0xd9, 0x98, 0xf8, + 0xef, 0xc8, 0x2a, 0x79, 0x76, 0xff, 0x78, 0xc8, 0xd4, 0x0d, 0xb2, 0xa9, 0xc3, 0xdc, 0x87, 0x83, + 0x04, 0xf4, 0x9e, 0x60, 0x22, 0x63, 0x0a, 0x5a, 0xc1, 0x09, 0xc4, 0xc0, 0x95, 0x9d, 0xed, 0x2d, + 0xfb, 0xfd, 0xc2, 0x91, 0xd2, 0x42, 0x02, 0x8b, 0x9d, 0x92, 0x30, 0x0e, 0x24, 0x9f, 0x83, 0xd0, + 0xae, 0x6c, 0x5c, 0x77, 0x3a, 0x88, 0x7e, 0x32, 0xc5, 0xdc, 0x19, 0x62, 0xf1, 0x45, 0x81, 0x39, + 0xef, 0xe4, 0x69, 0x6d, 0xe1, 0xfe, 0x72, 0xa9, 0x51, 0xc0, 0xfb, 0x4f, 0xa3, 0x92, 0x73, 0xa7, + 0xf4, 0x8c, 0x69, 0xb0, 0xc0, 0x82, 0xfe, 0xa7, 0x04, 0x79, 0x66, 0x3b, 0xdc, 0x7b, 0x40, 0x08, + 0xd1, 0xcb, 0x87, 0x81, 0x24, 0x36, 0x00, 0xc0, 0x47, 0x93, 0x02, 0x30, 0x02, 0x6b, 0xe1, 0xc1, + 0xd4, 0x00, 0x40, 0xff, 0x22, 0x41, 0xd6, 0xb5, 0x69, 0xc4, 0x8e, 0x57, 0x7f, 0x44, 0xd8, 0x55, + 0x39, 0x24, 0x00, 0x97, 0x7c, 0x84, 0x7e, 0x2f, 0xc0, 0x54, 0x97, 0x66, 0xf4, 0x0f, 0xf7, 0x5f, + 0x2f, 0xd0, 0xb3, 0x60, 0x35, 0xf8, 0x0d, 0xbd, 0x4d, 0xc8, 0xdd, 0x39, 0x9e, 0x9f, 0x64, 0x70, + 0x94, 0x47, 0x71, 0x12, 0x7b, 0x13, 0x7d, 0x5b, 0x02, 0x50, 0xb1, 0x6d, 0x76, 0xf6, 0xf0, 0x86, + 0xa5, 0xa3, 0xab, 0x03, 0x00, 0x58, 0xb3, 0xcf, 0x04, 0xcd, 0xfe, 0xe3, 0x61, 0xc1, 0x2f, 0xf3, + 0x82, 0xbf, 0x2d, 0x5a, 0xf3, 0x3c, 0xe2, 0x11, 0xe2, 0xbf, 0x07, 0x26, 0x98, 0x1c, 0x99, 0x81, + 0x28, 0x26, 0x7c, 0xef, 0x27, 0xf4, 0x4e, 0x5f, 0xf4, 0xf7, 0x73, 0xa2, 0x7f, 0x7a, 0x62, 0x8e, + 0x92, 0x01, 0x50, 0x1a, 0x02, 0x80, 0xa3, 0x30, 0xed, 0x01, 0xb0, 0xa1, 0x56, 0x0a, 0x18, 0xbd, + 0x59, 0x26, 0x3e, 0x0f, 0x74, 0xa4, 0x3a, 0x78, 0x4f, 0xf3, 0x25, 0xe1, 0x99, 0x7b, 0x48, 0x1e, + 0x7e, 0xf9, 0x29, 0x01, 0xf4, 0x67, 0x42, 0x53, 0x75, 0x01, 0x86, 0x1e, 0x2f, 0xfd, 0xd5, 0xd9, + 0x32, 0xcc, 0x72, 0x26, 0x86, 0x72, 0x0a, 0x8e, 0x73, 0x09, 0x74, 0xbc, 0x6b, 0x17, 0x8e, 0x28, + 0x08, 0x4e, 0x72, 0x5f, 0xd8, 0x0b, 0x6e, 0x17, 0x32, 0xe8, 0xeb, 0x9f, 0xce, 0xf8, 0x8b, 0x37, + 0x6f, 0xcf, 0xb2, 0x65, 0xb3, 0x0f, 0xf2, 0xf1, 0xe4, 0x5a, 0xa6, 0xe1, 0xe0, 0x87, 0x43, 0x3e, + 0x27, 0x7e, 0x42, 0xac, 0xd5, 0x70, 0x0a, 0x26, 0x1c, 0x2b, 0xec, 0x87, 0xe2, 0xbd, 0x86, 0x15, + 0x2b, 0xc7, 0x2b, 0x56, 0x15, 0xce, 0xea, 0x46, 0xab, 0xb3, 0xdb, 0xc6, 0x2a, 0xee, 0x68, 0xae, + 0x0c, 0xed, 0xa2, 0xbd, 0x88, 0xbb, 0xd8, 0x68, 0x63, 0xc3, 0xa1, 0x7c, 0x7a, 0xe7, 0xd9, 0x04, + 0x72, 0xf2, 0xca, 0x78, 0x37, 0xaf, 0x8c, 0x4f, 0xea, 0xb7, 0x1e, 0x1b, 0xb3, 0x78, 0x77, 0x07, + 0x00, 0xad, 0xdb, 0x39, 0x1d, 0x5f, 0x62, 0x6a, 0x78, 0x55, 0xcf, 0x12, 0x5e, 0xcd, 0xcf, 0xa0, + 0x86, 0x32, 0xa3, 0xc7, 0x7c, 0xf5, 0xbb, 0x8f, 0x53, 0xbf, 0x9b, 0x05, 0x59, 0x48, 0xa6, 0x75, + 0xdd, 0x21, 0xb4, 0x6e, 0x16, 0xa6, 0x82, 0xad, 0x61, 0x59, 0xb9, 0x0a, 0x4e, 0x78, 0x3e, 0xbd, + 0xd5, 0x72, 0x79, 0xb1, 0xde, 0xdc, 0x58, 0x5f, 0x56, 0x8b, 0x8b, 0xe5, 0x02, 0xb8, 0xfa, 0x49, + 0xf5, 0xd2, 0x77, 0xc5, 0xcd, 0xa2, 0x4f, 0x4b, 0x90, 0x23, 0x87, 0x31, 0xd1, 0x8f, 0x8e, 0x48, + 0x73, 0x6c, 0xce, 0x83, 0xc9, 0x1f, 0x77, 0xc5, 0xe3, 0xbc, 0x33, 0x61, 0x12, 0xae, 0x0e, 0x14, + 0xe7, 0x3d, 0x86, 0x50, 0xfa, 0xd3, 0x1a, 0xb7, 0x49, 0xd6, 0xb7, 0xcd, 0x4b, 0xdf, 0xcb, 0x4d, + 0xd2, 0xad, 0xff, 0x21, 0x37, 0xc9, 0x3e, 0x2c, 0x8c, 0xbd, 0x49, 0xf6, 0x69, 0x77, 0x31, 0xcd, + 0x14, 0x3d, 0x27, 0xe7, 0xcf, 0xff, 0x9e, 0x27, 0x1d, 0x68, 0x23, 0xab, 0x08, 0xb3, 0xba, 0xe1, + 0x60, 0xcb, 0xd0, 0x3a, 0x4b, 0x1d, 0x6d, 0xcb, 0xb3, 0x4f, 0x7b, 0x77, 0x2f, 0x2a, 0xa1, 0x3c, + 0x2a, 0xff, 0x87, 0x72, 0x1a, 0xc0, 0xc1, 0x3b, 0xdd, 0x8e, 0xe6, 0x04, 0xaa, 0x17, 0x4a, 0x09, + 0x6b, 0x5f, 0x96, 0xd7, 0xbe, 0x5b, 0xe1, 0x0a, 0x0a, 0x5a, 0xe3, 0x72, 0x17, 0x6f, 0x18, 0xfa, + 0x8f, 0xed, 0x92, 0xf0, 0xa3, 0x54, 0x47, 0xfb, 0x7d, 0xe2, 0xb6, 0x73, 0xf2, 0x3d, 0xdb, 0x39, + 0xff, 0x20, 0x1c, 0xd6, 0xc4, 0x6b, 0xf5, 0x03, 0xc2, 0x9a, 0xf8, 0x2d, 0x4d, 0xee, 0x69, 0x69, + 0xfe, 0x22, 0x4b, 0x56, 0x60, 0x91, 0x25, 0x8c, 0x4a, 0x4e, 0x70, 0x81, 0xf2, 0x95, 0x42, 0x71, + 0x53, 0xe2, 0xaa, 0x31, 0x86, 0x05, 0x70, 0x19, 0xe6, 0x68, 0xd1, 0x0b, 0xa6, 0x79, 0x71, 0x47, + 0xb3, 0x2e, 0x22, 0xeb, 0x40, 0xaa, 0x18, 0xbb, 0x97, 0x14, 0xb9, 0x41, 0xfa, 0x31, 0xe1, 0x39, + 0x03, 0x27, 0x2e, 0x8f, 0xe7, 0xf1, 0x6c, 0x26, 0xbd, 0x46, 0x68, 0x0a, 0x21, 0xc2, 0x60, 0xfa, + 0xb8, 0xfe, 0x89, 0x8f, 0xab, 0xd7, 0xd1, 0x87, 0xd7, 0xe1, 0x47, 0x89, 0x2b, 0xfa, 0xfc, 0x70, + 0xd8, 0x79, 0x7c, 0x0d, 0x81, 0x5d, 0x01, 0xe4, 0x8b, 0xbe, 0xeb, 0x8f, 0xfb, 0x18, 0xae, 0x50, + 0x36, 0x3d, 0x34, 0x23, 0x58, 0x1e, 0x0b, 0x9a, 0xc7, 0x79, 0x16, 0x6a, 0xdd, 0x54, 0x31, 0xfd, + 0x9c, 0xf0, 0xfe, 0x56, 0x5f, 0x01, 0x51, 0xee, 0xc6, 0xd3, 0x2a, 0xc5, 0x36, 0xc7, 0xc4, 0xd9, + 0x4c, 0x1f, 0xcd, 0x17, 0xe6, 0x60, 0xca, 0x0b, 0x3c, 0x43, 0xee, 0x45, 0xf2, 0x31, 0x3c, 0x09, + 0x79, 0xdb, 0xdc, 0xb5, 0x5a, 0x98, 0xed, 0x38, 0xb2, 0xb7, 0x21, 0x76, 0xc7, 0x06, 0x8e, 0xe7, + 0xfb, 0x4c, 0x86, 0x6c, 0x62, 0x93, 0x21, 0xda, 0x20, 0x8d, 0x1b, 0xe0, 0x5f, 0x24, 0x1c, 0xcc, + 0x9e, 0xc3, 0xac, 0x8e, 0x9d, 0xc7, 0xe3, 0x18, 0xff, 0x47, 0x42, 0x7b, 0x2f, 0x03, 0x6a, 0x92, + 0x4c, 0xe5, 0x6a, 0x43, 0x18, 0xaa, 0x57, 0xc3, 0x95, 0x5e, 0x0e, 0x66, 0xa1, 0x12, 0x8b, 0x74, + 0x43, 0x5d, 0x2d, 0xc8, 0xe8, 0xb9, 0x59, 0x28, 0x50, 0xd6, 0x6a, 0xbe, 0xb1, 0x86, 0x5e, 0x9a, + 0x39, 0x6c, 0x8b, 0x34, 0x7a, 0x8a, 0xf9, 0x09, 0x49, 0x34, 0x60, 0x2e, 0x27, 0xf8, 0xa0, 0x76, + 0x11, 0x9a, 0x34, 0x44, 0x33, 0x8b, 0x51, 0x3e, 0xf4, 0x3b, 0x19, 0x91, 0xf8, 0xbb, 0x62, 0x2c, + 0x8e, 0x21, 0x58, 0x52, 0xd6, 0x8b, 0x1f, 0xb6, 0x64, 0x99, 0x3b, 0x1b, 0x56, 0x07, 0xfd, 0x9f, + 0x42, 0xe1, 0xcd, 0x23, 0xcc, 0x7f, 0x29, 0xda, 0xfc, 0x27, 0x4b, 0xc6, 0x9d, 0x60, 0xaf, 0xaa, + 0x33, 0xc4, 0xf0, 0xad, 0xdc, 0x00, 0x73, 0x5a, 0xbb, 0xbd, 0xae, 0x6d, 0xe1, 0x92, 0x3b, 0xaf, + 0x36, 0x1c, 0x16, 0x5b, 0xa8, 0x27, 0x35, 0xb6, 0x2b, 0x12, 0x5f, 0x07, 0xe5, 0x40, 0x62, 0xf2, + 0x19, 0xcb, 0xf0, 0xe6, 0x0e, 0x09, 0xad, 0x6d, 0x2d, 0x88, 0x74, 0xc6, 0xde, 0x04, 0x3d, 0x9b, + 0x04, 0xf8, 0x4e, 0x5f, 0xb3, 0xfe, 0x40, 0x82, 0x09, 0x57, 0xde, 0xc5, 0x76, 0x1b, 0x3d, 0x91, + 0x0b, 0x08, 0x18, 0xe9, 0x5b, 0xf6, 0xd3, 0xc2, 0x4e, 0x7d, 0x5e, 0x0d, 0x29, 0xfd, 0x08, 0x4c, + 0x02, 0x21, 0x4a, 0x9c, 0x10, 0xc5, 0x7c, 0xf7, 0x62, 0x8b, 0x48, 0x5f, 0x7c, 0x1f, 0x91, 0x60, + 0xd6, 0x9b, 0x47, 0x2c, 0x61, 0xa7, 0xb5, 0x8d, 0xee, 0x10, 0x5d, 0x68, 0x62, 0x2d, 0xcd, 0xdf, + 0x93, 0xed, 0xa0, 0xef, 0x64, 0x12, 0xaa, 0x3c, 0x57, 0x72, 0xc4, 0x2a, 0x5d, 0x22, 0x5d, 0x8c, + 0x23, 0x98, 0xbe, 0x30, 0x1f, 0x93, 0x00, 0x1a, 0xa6, 0x3f, 0xd7, 0x3d, 0x80, 0x24, 0x7f, 0x41, + 0x78, 0xbb, 0x96, 0x55, 0x3c, 0x28, 0x36, 0x79, 0xcf, 0x21, 0xe8, 0x9a, 0x34, 0xa8, 0xa4, 0xb1, + 0xb4, 0xf5, 0xa9, 0xc5, 0xdd, 0x6e, 0x47, 0x6f, 0x69, 0x4e, 0xaf, 0x3f, 0x5d, 0xb4, 0x78, 0xc9, + 0xa5, 0xa1, 0x89, 0x8c, 0x42, 0xbf, 0x8c, 0x08, 0x59, 0xd2, 0xd0, 0x33, 0x92, 0x17, 0x7a, 0x46, + 0xd0, 0x47, 0x66, 0x00, 0xf1, 0x31, 0xa8, 0xa7, 0x0c, 0x47, 0x6b, 0x5d, 0x6c, 0x2c, 0x58, 0x58, + 0x6b, 0xb7, 0xac, 0xdd, 0x9d, 0x0b, 0x76, 0xd8, 0x19, 0x34, 0x5e, 0x47, 0x43, 0x4b, 0xc7, 0x12, + 0xb7, 0x74, 0x8c, 0x7e, 0x4a, 0x16, 0x0d, 0x84, 0x14, 0xda, 0xe0, 0x08, 0xf1, 0x30, 0xc4, 0x50, + 0x97, 0xc8, 0x85, 0xa9, 0x67, 0x95, 0x38, 0x9b, 0x64, 0x95, 0xf8, 0xb5, 0x42, 0x61, 0x95, 0x84, + 0xea, 0x35, 0x16, 0x4f, 0xb4, 0xb9, 0x3a, 0x76, 0x22, 0xe0, 0xbd, 0x1e, 0x66, 0x2f, 0x04, 0x5f, + 0x7c, 0x88, 0xf9, 0xc4, 0x3e, 0xfe, 0xa1, 0xaf, 0x4b, 0xba, 0x02, 0xc3, 0xb3, 0x10, 0x81, 0xae, + 0x8f, 0xa0, 0x24, 0xe2, 0x84, 0x96, 0x68, 0x39, 0x25, 0xb6, 0xfc, 0xf4, 0x51, 0x78, 0xbf, 0x04, + 0xd3, 0xe4, 0x2a, 0xd4, 0x85, 0xcb, 0xe4, 0x58, 0xa4, 0xa0, 0x51, 0xf2, 0xc2, 0xb0, 0x98, 0x15, + 0xc8, 0x76, 0x74, 0xe3, 0xa2, 0xe7, 0x3d, 0xe8, 0x3e, 0x07, 0x17, 0xeb, 0x49, 0x7d, 0x2e, 0xd6, + 0xf3, 0xf7, 0x29, 0xfc, 0x72, 0x0f, 0x74, 0xd3, 0xf3, 0x40, 0x72, 0xe9, 0x8b, 0xf1, 0xef, 0xb2, + 0x90, 0xaf, 0x63, 0xcd, 0x6a, 0x6d, 0xa3, 0xb7, 0x4b, 0x7d, 0xa7, 0x0a, 0x93, 0xfc, 0x54, 0x61, + 0x09, 0x26, 0x36, 0xf5, 0x8e, 0x83, 0x2d, 0xea, 0x51, 0x1d, 0xee, 0xda, 0x69, 0x13, 0x5f, 0xe8, + 0x98, 0xad, 0x8b, 0xf3, 0xcc, 0x74, 0x9f, 0xf7, 0x02, 0xb1, 0xce, 0x2f, 0x91, 0x9f, 0x54, 0xef, + 0x67, 0xd7, 0x20, 0xb4, 0x4d, 0xcb, 0x89, 0xba, 0x63, 0x23, 0x82, 0x4a, 0xdd, 0xb4, 0x1c, 0x95, + 0xfe, 0xe8, 0xc2, 0xbc, 0xb9, 0xdb, 0xe9, 0x34, 0xf0, 0xc3, 0x8e, 0x37, 0x6d, 0xf3, 0xde, 0x5d, + 0x63, 0xd1, 0xdc, 0xdc, 0xb4, 0x31, 0x5d, 0x34, 0xc8, 0xa9, 0xec, 0x4d, 0x39, 0x0e, 0xb9, 0x8e, + 0xbe, 0xa3, 0xd3, 0x89, 0x46, 0x4e, 0xa5, 0x2f, 0xca, 0x4d, 0x50, 0x08, 0xe6, 0x38, 0x94, 0xd1, + 0x53, 0x79, 0xd2, 0x34, 0xf7, 0xa5, 0xbb, 0x3a, 0x73, 0x11, 0x5f, 0xb6, 0x4f, 0x4d, 0x90, 0xef, + 0xe4, 0x99, 0x3f, 0xbe, 0x22, 0xb2, 0xdf, 0x41, 0x25, 0x1e, 0x3d, 0x83, 0xb5, 0x70, 0xcb, 0xb4, + 0xda, 0x9e, 0x6c, 0xa2, 0x27, 0x18, 0x2c, 0x5f, 0xb2, 0x5d, 0x8a, 0xbe, 0x85, 0xa7, 0xaf, 0x69, + 0x6f, 0xc9, 0xbb, 0xdd, 0xa6, 0x5b, 0xf4, 0x79, 0xdd, 0xd9, 0x5e, 0xc3, 0x8e, 0x86, 0xfe, 0x4e, + 0xee, 0xab, 0x71, 0xd3, 0xff, 0x9f, 0xc6, 0x0d, 0xd0, 0x38, 0x1a, 0x06, 0xcb, 0xd9, 0xb5, 0x0c, + 0x57, 0x8e, 0xcc, 0x2b, 0x35, 0x94, 0xa2, 0xdc, 0x05, 0x57, 0x05, 0x6f, 0xde, 0x52, 0xe9, 0x22, + 0x9b, 0xb6, 0x4e, 0x91, 0xec, 0xd1, 0x19, 0x94, 0x75, 0xb8, 0x8e, 0x7e, 0x5c, 0x69, 0xac, 0xad, + 0xae, 0xe8, 0x5b, 0xdb, 0x1d, 0x7d, 0x6b, 0xdb, 0xb1, 0x2b, 0x86, 0xed, 0x60, 0xad, 0x5d, 0xdb, + 0x54, 0xe9, 0xed, 0x38, 0x40, 0xe8, 0x88, 0x64, 0xe5, 0x3d, 0xae, 0xc5, 0x46, 0xb7, 0xb0, 0xa6, + 0x44, 0xb4, 0x94, 0xa7, 0xbb, 0x2d, 0xc5, 0xde, 0xed, 0xf8, 0x98, 0x5e, 0xd3, 0x83, 0x69, 0xa0, + 0xea, 0xbb, 0x1d, 0xd2, 0x5c, 0x48, 0xe6, 0xa4, 0xe3, 0x5c, 0x0c, 0x27, 0xe9, 0x37, 0x9b, 0xff, + 0x27, 0x0f, 0xb9, 0x65, 0x4b, 0xeb, 0x6e, 0xa3, 0xe7, 0x86, 0xfa, 0xe7, 0x51, 0xb5, 0x09, 0x5f, + 0x3b, 0xa5, 0x41, 0xda, 0x29, 0x0f, 0xd0, 0xce, 0x6c, 0x48, 0x3b, 0xa3, 0x17, 0x95, 0xcf, 0xc2, + 0x4c, 0xcb, 0xec, 0x74, 0x70, 0xcb, 0x95, 0x47, 0xa5, 0x4d, 0x56, 0x73, 0xa6, 0x54, 0x2e, 0x8d, + 0x04, 0xab, 0xc6, 0x4e, 0x9d, 0xae, 0xa1, 0x53, 0xa5, 0x0f, 0x12, 0xd0, 0x4b, 0x25, 0xc8, 0x96, + 0xdb, 0x5b, 0x98, 0x5b, 0x67, 0xcf, 0x84, 0xd6, 0xd9, 0x4f, 0x42, 0xde, 0xd1, 0xac, 0x2d, 0xec, + 0x78, 0xeb, 0x04, 0xf4, 0xcd, 0x8f, 0xa1, 0x2d, 0x87, 0x62, 0x68, 0xff, 0x20, 0x64, 0x5d, 0x99, + 0x31, 0x27, 0xf3, 0xeb, 0xfa, 0xc1, 0x4f, 0x64, 0x3f, 0xef, 0x96, 0x38, 0xef, 0xd6, 0x5a, 0x25, + 0x3f, 0xf4, 0x62, 0x9d, 0xdb, 0x87, 0x35, 0xb9, 0xe8, 0xb3, 0x65, 0x1a, 0x95, 0x1d, 0x6d, 0x0b, + 0xb3, 0x6a, 0x06, 0x09, 0xde, 0xd7, 0xf2, 0x8e, 0xf9, 0x90, 0xce, 0xa2, 0x45, 0x06, 0x09, 0x6e, + 0x15, 0xb6, 0xf5, 0x76, 0x1b, 0x1b, 0xac, 0x65, 0xb3, 0xb7, 0xb3, 0xa7, 0x21, 0xeb, 0xf2, 0xe0, + 0xea, 0x8f, 0x6b, 0x2c, 0x14, 0x8e, 0x28, 0x33, 0x6e, 0xb3, 0xa2, 0x8d, 0xb7, 0x90, 0xe1, 0xd7, + 0x54, 0x45, 0xdc, 0x76, 0x68, 0xe5, 0xfa, 0x37, 0xae, 0xa7, 0x40, 0xce, 0x30, 0xdb, 0x78, 0xe0, + 0x20, 0x44, 0x73, 0x29, 0x4f, 0x83, 0x1c, 0x6e, 0xbb, 0xbd, 0x82, 0x4c, 0xb2, 0x9f, 0x8e, 0x97, + 0xa5, 0x4a, 0x33, 0x27, 0xf3, 0x0d, 0xea, 0xc7, 0x6d, 0xfa, 0x0d, 0xf0, 0x67, 0x27, 0xe0, 0x28, + 0xed, 0x03, 0xea, 0xbb, 0x17, 0x5c, 0x52, 0x17, 0x30, 0x7a, 0xb4, 0xff, 0xc0, 0x75, 0x94, 0x57, + 0xf6, 0xe3, 0x90, 0xb3, 0x77, 0x2f, 0xf8, 0x46, 0x28, 0x7d, 0x09, 0x37, 0x5d, 0x69, 0x24, 0xc3, + 0x99, 0x3c, 0xec, 0x70, 0xc6, 0x0d, 0x4d, 0xb2, 0xd7, 0xf8, 0x83, 0x81, 0x8c, 0x1e, 0x8f, 0xf0, + 0x06, 0xb2, 0x7e, 0xc3, 0xd0, 0x29, 0x98, 0xd0, 0x36, 0x1d, 0x6c, 0x05, 0x66, 0x22, 0x7b, 0x75, + 0x87, 0xca, 0x0b, 0x78, 0xd3, 0xb4, 0x5c, 0xb1, 0xd0, 0x10, 0xea, 0xfe, 0x7b, 0xa8, 0xe5, 0x02, + 0xb7, 0x43, 0x76, 0x33, 0x1c, 0x33, 0xcc, 0x45, 0xdc, 0x65, 0x72, 0xa6, 0x28, 0xce, 0x92, 0x16, + 0xb0, 0xff, 0xc3, 0xbe, 0xae, 0x64, 0x6e, 0x7f, 0x57, 0x82, 0x3e, 0x9e, 0x74, 0xce, 0xdc, 0x03, + 0xf4, 0xc8, 0x2c, 0x34, 0xe5, 0x99, 0x30, 0xd3, 0x66, 0x2e, 0x5a, 0x2d, 0xdd, 0x6f, 0x25, 0x91, + 0xff, 0x71, 0x99, 0x03, 0x45, 0xca, 0x86, 0x15, 0x69, 0x19, 0x26, 0xc9, 0x41, 0x66, 0x57, 0x93, + 0x72, 0x3d, 0x2e, 0xf1, 0x64, 0x5a, 0xe7, 0x57, 0x2a, 0x24, 0xb6, 0xf9, 0x12, 0xfb, 0x45, 0xf5, + 0x7f, 0x4e, 0x36, 0xfb, 0x8e, 0x97, 0x50, 0xfa, 0xcd, 0xf1, 0x77, 0xf3, 0x70, 0x55, 0xc9, 0x32, + 0x6d, 0x9b, 0x9c, 0x81, 0xe9, 0x6d, 0x98, 0xbf, 0x2d, 0x71, 0xb7, 0x69, 0x3c, 0xae, 0x9b, 0x5f, + 0xbf, 0x06, 0x35, 0xbe, 0xa6, 0xf1, 0x25, 0xe1, 0x10, 0x30, 0xfe, 0xfe, 0x43, 0x84, 0xd0, 0xbf, + 0x37, 0x1a, 0xc9, 0x5b, 0x32, 0x22, 0x51, 0x69, 0x12, 0xca, 0x2a, 0xfd, 0xe6, 0xf2, 0x39, 0x09, + 0xae, 0xee, 0xe5, 0x66, 0xc3, 0xb0, 0xfd, 0x06, 0x73, 0xed, 0x80, 0xf6, 0xc2, 0x47, 0x31, 0x89, + 0xbd, 0xc7, 0x32, 0xa2, 0xee, 0xa1, 0xd2, 0x22, 0x16, 0x4b, 0x82, 0x13, 0x35, 0x71, 0xf7, 0x58, + 0x26, 0x26, 0x9f, 0xbe, 0x70, 0x3f, 0x91, 0x85, 0xa3, 0xcb, 0x96, 0xb9, 0xdb, 0xb5, 0x83, 0x1e, + 0xe8, 0x6f, 0xfa, 0x6f, 0xb8, 0xe6, 0x45, 0x4c, 0x83, 0x33, 0x30, 0x6d, 0x31, 0x6b, 0x2e, 0xd8, + 0x7e, 0x0d, 0x27, 0x85, 0x7b, 0x2f, 0xf9, 0x20, 0xbd, 0x57, 0xd0, 0xcf, 0x64, 0xb9, 0x7e, 0xa6, + 0xb7, 0xe7, 0xc8, 0xf5, 0xe9, 0x39, 0xfe, 0x5a, 0x4a, 0x38, 0xa8, 0xf6, 0x88, 0x28, 0xa2, 0xbf, + 0x28, 0x41, 0x7e, 0x8b, 0x64, 0x64, 0xdd, 0xc5, 0x93, 0xc5, 0x6a, 0x46, 0x88, 0xab, 0xec, 0xd7, + 0x40, 0xae, 0x72, 0x58, 0x87, 0x13, 0x0d, 0x70, 0xf1, 0xdc, 0xa6, 0xaf, 0x54, 0xaf, 0xca, 0xc2, + 0x8c, 0x5f, 0x7a, 0xa5, 0x6d, 0xa3, 0x17, 0xf6, 0xd7, 0xa8, 0x59, 0x11, 0x8d, 0xda, 0xb7, 0xce, + 0xec, 0x8f, 0x3a, 0x72, 0x68, 0xd4, 0xe9, 0x3b, 0xba, 0xcc, 0x44, 0x8c, 0x2e, 0xe8, 0x39, 0xb2, + 0xe8, 0x7d, 0x54, 0x7c, 0xd7, 0x4a, 0x6a, 0xf3, 0x78, 0x1e, 0x2c, 0x04, 0x6f, 0xc5, 0x1a, 0x5c, + 0xab, 0xf4, 0x95, 0xe4, 0x5d, 0x12, 0x1c, 0xdb, 0xdf, 0x99, 0x7f, 0x1f, 0xef, 0x85, 0xe6, 0xd6, + 0xc9, 0xf6, 0xbd, 0xd0, 0xc8, 0x1b, 0xbf, 0x49, 0x17, 0x1b, 0x52, 0x84, 0xb3, 0xf7, 0x06, 0x77, + 0xe2, 0x62, 0x41, 0x43, 0x04, 0x89, 0xa6, 0x2f, 0xc0, 0x5f, 0x94, 0x61, 0xaa, 0x8e, 0x9d, 0x55, + 0xed, 0xb2, 0xb9, 0xeb, 0x20, 0x4d, 0x74, 0x7b, 0xee, 0x19, 0x90, 0xef, 0x90, 0x5f, 0xd8, 0x35, + 0xff, 0x67, 0xfa, 0xee, 0x6f, 0x11, 0xdf, 0x1f, 0x4a, 0x5a, 0x65, 0xf9, 0xf9, 0x58, 0x2e, 0x22, + 0xbb, 0xa3, 0x3e, 0x77, 0x23, 0xd9, 0xda, 0x49, 0xb4, 0x77, 0x1a, 0x55, 0x74, 0xfa, 0xb0, 0xfc, + 0x94, 0x0c, 0xb3, 0x75, 0xec, 0x54, 0xec, 0x25, 0x6d, 0xcf, 0xb4, 0x74, 0x07, 0x87, 0xef, 0xf9, + 0x8c, 0x87, 0xe6, 0x34, 0x80, 0xee, 0xff, 0xc6, 0x22, 0x4c, 0x85, 0x52, 0xd0, 0xef, 0x24, 0x75, + 0x14, 0xe2, 0xf8, 0x18, 0x09, 0x08, 0x89, 0x7c, 0x2c, 0xe2, 0x8a, 0x4f, 0x1f, 0x88, 0xcf, 0x4a, + 0x0c, 0x88, 0xa2, 0xd5, 0xda, 0xd6, 0xf7, 0x70, 0x3b, 0x21, 0x10, 0xde, 0x6f, 0x01, 0x10, 0x3e, + 0xa1, 0xc4, 0xee, 0x2b, 0x1c, 0x1f, 0xa3, 0x70, 0x5f, 0x89, 0x23, 0x38, 0x96, 0x20, 0x51, 0x6e, + 0xd7, 0xc3, 0xd6, 0x33, 0xef, 0x15, 0x15, 0x6b, 0x60, 0xb2, 0x49, 0x61, 0x93, 0x6d, 0xa8, 0x8e, + 0x85, 0x96, 0x3d, 0x48, 0xa7, 0xb3, 0x69, 0x74, 0x2c, 0x7d, 0x8b, 0x4e, 0x5f, 0xe8, 0x6f, 0x93, + 0xe1, 0x84, 0x1f, 0x3d, 0xa5, 0x8e, 0x9d, 0x45, 0xcd, 0xde, 0xbe, 0x60, 0x6a, 0x56, 0x1b, 0x95, + 0x46, 0x70, 0xe2, 0x0f, 0x7d, 0x26, 0x0c, 0x42, 0x95, 0x07, 0xa1, 0xaf, 0xab, 0x68, 0x5f, 0x5e, + 0x46, 0xd1, 0xc9, 0xc4, 0x7a, 0xb3, 0xfe, 0x9e, 0x0f, 0xd6, 0x0f, 0x71, 0x60, 0xdd, 0x3d, 0x2c, + 0x8b, 0xe9, 0x03, 0xf7, 0x2b, 0x74, 0x44, 0x08, 0x79, 0x35, 0x3f, 0x28, 0x0a, 0x58, 0x84, 0x57, + 0xab, 0x1c, 0xe9, 0xd5, 0x3a, 0xd4, 0x18, 0x31, 0xd0, 0x23, 0x39, 0xdd, 0x31, 0xe2, 0x10, 0xbd, + 0x8d, 0xdf, 0x24, 0x43, 0x81, 0x84, 0xcf, 0x0a, 0x79, 0x7c, 0x87, 0xa3, 0x51, 0xc7, 0xa3, 0xb3, + 0xcf, 0xbb, 0x7c, 0x22, 0xa9, 0x77, 0x39, 0x7a, 0x63, 0x52, 0x1f, 0xf2, 0x5e, 0x6e, 0x47, 0x82, + 0x58, 0x22, 0x17, 0xf1, 0x01, 0x1c, 0xa4, 0x0f, 0xda, 0x7f, 0x93, 0x01, 0xdc, 0x06, 0xcd, 0xce, + 0x3e, 0x3c, 0x4b, 0x14, 0xae, 0x5b, 0xc2, 0x7e, 0xf5, 0x2e, 0x50, 0x27, 0x7a, 0x80, 0xa2, 0x14, + 0x83, 0x53, 0x15, 0x8f, 0x26, 0xf5, 0xad, 0x0c, 0xb8, 0x1a, 0x09, 0x2c, 0x89, 0xbc, 0x2d, 0x23, + 0xcb, 0x4e, 0x1f, 0x90, 0xff, 0x21, 0x41, 0xae, 0x61, 0xd6, 0xb1, 0x73, 0x70, 0x53, 0x20, 0xf1, + 0xb1, 0x7d, 0x52, 0xee, 0x28, 0x8e, 0xed, 0xf7, 0x23, 0x34, 0x86, 0x68, 0x64, 0x12, 0xcc, 0x34, + 0xcc, 0x92, 0xbf, 0x38, 0x25, 0xee, 0xab, 0x2a, 0x7e, 0xa7, 0xb6, 0x5f, 0xc1, 0xa0, 0x98, 0x03, + 0xdd, 0xa9, 0x3d, 0x98, 0x5e, 0xfa, 0x72, 0xbb, 0x03, 0x8e, 0x6e, 0x18, 0x6d, 0x53, 0xc5, 0x6d, + 0x93, 0xad, 0x74, 0x2b, 0x0a, 0x64, 0x77, 0x8d, 0xb6, 0x49, 0x58, 0xce, 0xa9, 0xe4, 0xd9, 0x4d, + 0xb3, 0x70, 0xdb, 0x64, 0xbe, 0x01, 0xe4, 0x19, 0x7d, 0x49, 0x86, 0xac, 0xfb, 0xaf, 0xb8, 0xa8, + 0xdf, 0x24, 0x27, 0x0c, 0x44, 0xe0, 0x92, 0x1f, 0x89, 0x25, 0x74, 0x6f, 0x68, 0xed, 0x9f, 0x7a, + 0xb0, 0x5e, 0x17, 0x55, 0x5e, 0x48, 0x14, 0xc1, 0x9a, 0xbf, 0x72, 0x0a, 0x26, 0x2e, 0x74, 0xcc, + 0xd6, 0xc5, 0xe0, 0xbc, 0x3c, 0x7b, 0x55, 0x6e, 0x82, 0x9c, 0xa5, 0x19, 0x5b, 0x98, 0xed, 0x29, + 0x1c, 0xef, 0xe9, 0x0b, 0x89, 0xd7, 0x8b, 0x4a, 0xb3, 0xa0, 0x37, 0x26, 0x09, 0x81, 0xd0, 0xa7, + 0xf2, 0xc9, 0xf4, 0x61, 0x71, 0x88, 0x93, 0x65, 0x05, 0x98, 0x29, 0x15, 0xe9, 0xed, 0xf5, 0x6b, + 0xb5, 0x73, 0xe5, 0x82, 0x4c, 0x60, 0x76, 0x65, 0x92, 0x22, 0xcc, 0x2e, 0xf9, 0xef, 0x59, 0x98, + 0xfb, 0x54, 0xfe, 0x30, 0x60, 0xfe, 0x88, 0x04, 0xb3, 0xab, 0xba, 0xed, 0x44, 0x79, 0xfb, 0xc7, + 0x44, 0xcf, 0x7d, 0x51, 0x52, 0x53, 0x99, 0x2b, 0x47, 0x38, 0x6c, 0x6e, 0x22, 0x73, 0x38, 0xae, + 0x88, 0xf1, 0x1c, 0x4b, 0x21, 0x1c, 0xd0, 0x3b, 0xa4, 0x85, 0x25, 0x99, 0xd8, 0x50, 0x0a, 0x0a, + 0x19, 0xbf, 0xa1, 0x14, 0x59, 0x76, 0xfa, 0xf2, 0xfd, 0x92, 0x04, 0xc7, 0xdc, 0xe2, 0xe3, 0x96, + 0xa5, 0xa2, 0xc5, 0x3c, 0x70, 0x59, 0x2a, 0xf1, 0xca, 0xf8, 0x3e, 0x5e, 0x46, 0xb1, 0x32, 0x3e, + 0x88, 0xe8, 0x98, 0xc5, 0x1c, 0xb1, 0x0c, 0x3b, 0x48, 0xcc, 0x31, 0xcb, 0xb0, 0xc3, 0x8b, 0x39, + 0x7e, 0x29, 0x76, 0x48, 0x31, 0x1f, 0xda, 0x02, 0xeb, 0x6f, 0xca, 0xbe, 0x98, 0x23, 0xd7, 0x36, + 0x62, 0xc4, 0x9c, 0xf8, 0xc4, 0x2e, 0x7a, 0xf3, 0x90, 0x82, 0x1f, 0xf1, 0xfa, 0xc6, 0x30, 0x30, + 0x1d, 0xe2, 0x1a, 0xc7, 0xaf, 0xca, 0x30, 0xc7, 0xb8, 0xe8, 0x3f, 0x65, 0x8e, 0xc1, 0x28, 0xf1, + 0x94, 0x39, 0xf1, 0x19, 0x20, 0x9e, 0xb3, 0xf1, 0x9f, 0x01, 0x8a, 0x2d, 0x3f, 0x7d, 0x70, 0xbe, + 0x92, 0x85, 0x93, 0x2e, 0x0b, 0x6b, 0x66, 0x5b, 0xdf, 0xbc, 0x4c, 0xb9, 0x38, 0xa7, 0x75, 0x76, + 0xb1, 0x8d, 0xde, 0x21, 0x89, 0xa2, 0xf4, 0x9f, 0x00, 0xcc, 0x2e, 0xb6, 0x68, 0x20, 0x35, 0x06, + 0xd4, 0x5d, 0x51, 0x95, 0xdd, 0x5f, 0x92, 0x7f, 0x99, 0x4c, 0xcd, 0x23, 0xa2, 0x86, 0xe8, 0xb9, + 0x56, 0xe1, 0x94, 0xff, 0xa5, 0xd7, 0xc1, 0x23, 0xb3, 0xdf, 0xc1, 0xe3, 0x46, 0x90, 0xb5, 0x76, + 0xdb, 0x87, 0xaa, 0x77, 0x33, 0x9b, 0x94, 0xa9, 0xba, 0x59, 0xdc, 0x9c, 0x36, 0x0e, 0x8e, 0xe6, + 0x45, 0xe4, 0xb4, 0xb1, 0xa3, 0xcc, 0x43, 0x9e, 0xde, 0x90, 0xed, 0xaf, 0xe8, 0xf7, 0xcf, 0xcc, + 0x72, 0xf1, 0xa6, 0x5d, 0x8d, 0x57, 0xc3, 0x3b, 0x12, 0x49, 0xa6, 0x5f, 0x3f, 0x1d, 0xd8, 0xc9, + 0x2a, 0xa7, 0x60, 0xf7, 0x0c, 0x4d, 0x79, 0x3c, 0xbb, 0x61, 0xc5, 0x6e, 0xb7, 0x73, 0xb9, 0xc1, + 0x82, 0xaf, 0x24, 0xda, 0x0d, 0x0b, 0xc5, 0x70, 0x91, 0x7a, 0x63, 0xb8, 0x24, 0xdf, 0x0d, 0xe3, + 0xf8, 0x18, 0xc5, 0x6e, 0x58, 0x1c, 0xc1, 0xf4, 0x45, 0xfb, 0xe1, 0x49, 0x6a, 0x35, 0xb3, 0xd8, + 0xfe, 0x1f, 0xef, 0xef, 0x59, 0x0d, 0xbc, 0xb3, 0x4b, 0xbf, 0xb0, 0xff, 0xb1, 0x77, 0x9a, 0x28, + 0x4f, 0x83, 0xfc, 0xa6, 0x69, 0xed, 0x68, 0xde, 0xc6, 0x7d, 0xef, 0x49, 0x11, 0x16, 0x4f, 0x7f, + 0x89, 0xe4, 0x51, 0x59, 0x5e, 0x77, 0x3e, 0xf2, 0x6c, 0xbd, 0xcb, 0xa2, 0x2e, 0xba, 0x8f, 0xca, + 0xf5, 0x30, 0xcb, 0x82, 0x2f, 0x56, 0xb1, 0xed, 0xe0, 0x36, 0x8b, 0x58, 0xc1, 0x27, 0x2a, 0x67, + 0x61, 0x86, 0x25, 0x2c, 0xe9, 0x1d, 0x6c, 0xb3, 0xa0, 0x15, 0x5c, 0x9a, 0x72, 0x12, 0xf2, 0xba, + 0x7d, 0xbf, 0x6d, 0x1a, 0xc4, 0xff, 0x7f, 0x52, 0x65, 0x6f, 0xca, 0x8d, 0x70, 0x94, 0xe5, 0xf3, + 0x8d, 0x55, 0x7a, 0x60, 0xa7, 0x37, 0xd9, 0x55, 0x2d, 0xc3, 0x5c, 0xb7, 0xcc, 0x2d, 0x0b, 0xdb, + 0x36, 0x39, 0x35, 0x35, 0xa9, 0x86, 0x52, 0x94, 0x07, 0xe1, 0x58, 0x47, 0x37, 0x2e, 0xda, 0x24, + 0x48, 0xef, 0x12, 0x73, 0x1b, 0x9b, 0xe9, 0x13, 0x3c, 0x3b, 0xd4, 0xd8, 0x98, 0x1c, 0xc2, 0xbf, + 0xa8, 0xfb, 0xa9, 0x28, 0x37, 0x41, 0x81, 0x71, 0xb3, 0xa0, 0xb5, 0x2e, 0x92, 0xef, 0xcc, 0x1d, + 0x75, 0x5f, 0x3a, 0x7a, 0x49, 0x06, 0x66, 0xb8, 0x9f, 0x35, 0x50, 0xbc, 0x2e, 0xcf, 0x3e, 0xbf, + 0xad, 0x3b, 0xd8, 0x2d, 0x98, 0x9d, 0x63, 0xb9, 0x6d, 0x00, 0x63, 0xea, 0xbe, 0x1f, 0xd5, 0x3e, + 0xc4, 0x5c, 0x00, 0x68, 0x67, 0x46, 0xbc, 0xc6, 0x6c, 0x66, 0x87, 0x72, 0x69, 0xe8, 0xd9, 0xa0, + 0xec, 0xa7, 0x16, 0xf2, 0xf0, 0xc8, 0x24, 0xf3, 0xf0, 0x70, 0x65, 0xa2, 0x75, 0x3a, 0xe6, 0x25, + 0xdc, 0xf6, 0xc9, 0x32, 0x3d, 0xdc, 0x97, 0x8e, 0x3e, 0x39, 0xcc, 0x9c, 0x2f, 0xf1, 0x15, 0x14, + 0x6e, 0x03, 0xda, 0x6d, 0xb5, 0x30, 0x6e, 0xb3, 0x43, 0x69, 0xde, 0x6b, 0xc2, 0xcb, 0x29, 0x12, + 0xcf, 0x10, 0x0f, 0xe9, 0x76, 0x8a, 0xf7, 0x9e, 0x80, 0x3c, 0xbd, 0xe9, 0x0d, 0xbd, 0x64, 0xae, + 0x6f, 0x3f, 0x32, 0xc7, 0xf7, 0x23, 0x1b, 0x30, 0x63, 0x98, 0x6e, 0x71, 0xeb, 0x9a, 0xa5, 0xed, + 0xd8, 0x71, 0x0b, 0xc0, 0x94, 0xae, 0x3f, 0xda, 0x57, 0x43, 0xbf, 0xad, 0x1c, 0x51, 0x39, 0x32, + 0xca, 0xff, 0x0f, 0x8e, 0x5e, 0x60, 0xc1, 0x1b, 0x6c, 0x46, 0x59, 0x8a, 0x76, 0x8f, 0xec, 0xa1, + 0xbc, 0xc0, 0xff, 0xb9, 0x72, 0x44, 0xed, 0x25, 0xa6, 0xfc, 0x08, 0xcc, 0xb9, 0xaf, 0x6d, 0xf3, + 0x92, 0xc7, 0xb8, 0x1c, 0x6d, 0x23, 0xf6, 0x90, 0x5f, 0xe3, 0x7e, 0x5c, 0x39, 0xa2, 0xf6, 0x90, + 0x52, 0x6a, 0x00, 0xdb, 0xce, 0x4e, 0x87, 0x11, 0xce, 0x46, 0xab, 0x64, 0x0f, 0xe1, 0x15, 0xff, + 0xa7, 0x95, 0x23, 0x6a, 0x88, 0x84, 0xb2, 0x0a, 0x53, 0xce, 0xc3, 0x0e, 0xa3, 0x97, 0x8b, 0xf6, + 0x4b, 0xe8, 0xa1, 0xd7, 0xf0, 0xfe, 0x59, 0x39, 0xa2, 0x06, 0x04, 0x94, 0x0a, 0x4c, 0x76, 0x2f, + 0x30, 0x62, 0xf9, 0xe8, 0xbe, 0xac, 0x87, 0xd8, 0xfa, 0x05, 0x9f, 0x96, 0xff, 0xbb, 0xcb, 0x58, + 0xcb, 0xde, 0x63, 0xb4, 0x26, 0x84, 0x19, 0x2b, 0x79, 0xff, 0xb8, 0x8c, 0xf9, 0x04, 0x94, 0x0a, + 0x4c, 0xd9, 0x86, 0xd6, 0xb5, 0xb7, 0x4d, 0xc7, 0x3e, 0x35, 0xd9, 0xe3, 0xc2, 0x1a, 0x4d, 0xad, + 0xce, 0xfe, 0x51, 0x83, 0xbf, 0x95, 0xa7, 0xc1, 0x89, 0xdd, 0x6e, 0x5b, 0x73, 0x70, 0xf9, 0x61, + 0xdd, 0x76, 0x74, 0x63, 0xcb, 0x0b, 0xff, 0x4b, 0x07, 0x82, 0xfe, 0x1f, 0x95, 0x79, 0x76, 0x98, + 0x0d, 0x48, 0xdb, 0x44, 0xbd, 0xfb, 0xa8, 0xb4, 0xd8, 0xd0, 0x19, 0xb6, 0x67, 0x42, 0xd6, 0xfd, + 0x44, 0x06, 0x8e, 0xb9, 0xfe, 0x6b, 0xb4, 0xbd, 0xba, 0x43, 0x1a, 0xb0, 0xfb, 0x53, 0xcf, 0xd8, + 0x33, 0xb3, 0x6f, 0xec, 0x39, 0x03, 0xd3, 0xba, 0xbd, 0xa6, 0x6f, 0x51, 0xc3, 0x97, 0x8d, 0x0d, + 0xe1, 0x24, 0xba, 0x50, 0x50, 0xc5, 0x97, 0xe8, 0xe5, 0x26, 0x47, 0xbd, 0x85, 0x02, 0x2f, 0x05, + 0xdd, 0x00, 0x33, 0xe1, 0x46, 0x46, 0xaf, 0x8b, 0xd5, 0x03, 0xb3, 0x99, 0xbd, 0xa1, 0xeb, 0x61, + 0x8e, 0xd7, 0xe9, 0x90, 0x75, 0x20, 0x7b, 0x5d, 0x21, 0xba, 0x0e, 0x8e, 0xf6, 0x34, 0x2c, 0x2f, + 0x1c, 0x4c, 0x26, 0x08, 0x07, 0x73, 0x06, 0x20, 0xd0, 0xe2, 0xbe, 0x64, 0xae, 0x85, 0x29, 0x5f, + 0x2f, 0xfb, 0x66, 0xf8, 0x42, 0x06, 0x26, 0x3d, 0x65, 0xeb, 0x97, 0xc1, 0x1d, 0x99, 0x8c, 0xd0, + 0xde, 0x8f, 0x37, 0x32, 0x85, 0xd3, 0x5c, 0x13, 0x20, 0xf0, 0xb8, 0x6e, 0xe8, 0x4e, 0xc7, 0x3b, + 0xb5, 0xd8, 0x9b, 0xac, 0xac, 0x03, 0xe8, 0x04, 0xa3, 0x46, 0x70, 0x8c, 0xf1, 0xd6, 0x04, 0xed, + 0x81, 0xea, 0x43, 0x88, 0xc6, 0xd9, 0xef, 0x63, 0x67, 0x0c, 0xa7, 0x20, 0x47, 0x63, 0xe0, 0x1f, + 0x51, 0xe6, 0x00, 0xca, 0xcf, 0x5a, 0x2f, 0xab, 0x95, 0x72, 0xb5, 0x54, 0x2e, 0x64, 0xd0, 0xaf, + 0x49, 0x30, 0xe5, 0x37, 0x82, 0xbe, 0x95, 0x2c, 0x33, 0xd5, 0x1a, 0x78, 0x23, 0xe7, 0xfe, 0x46, + 0x15, 0x56, 0xb2, 0x67, 0xc0, 0x95, 0xbb, 0x36, 0x5e, 0xd2, 0x2d, 0xdb, 0x51, 0xcd, 0x4b, 0x4b, + 0xa6, 0x15, 0x0c, 0xac, 0x34, 0xf8, 0x6c, 0xd4, 0x67, 0xd7, 0x18, 0x6c, 0x63, 0x72, 0x9e, 0x0d, + 0x5b, 0x6c, 0x51, 0x3f, 0x48, 0x70, 0xe9, 0x3a, 0x96, 0x66, 0xd8, 0x5d, 0xd3, 0xc6, 0xaa, 0x79, + 0xc9, 0x2e, 0x1a, 0xed, 0x92, 0xd9, 0xd9, 0xdd, 0x31, 0x6c, 0x66, 0xce, 0x45, 0x7d, 0x76, 0xa5, + 0x43, 0xee, 0xdb, 0x9d, 0x03, 0x28, 0xd5, 0x56, 0x57, 0xcb, 0xa5, 0x46, 0xa5, 0x56, 0x2d, 0x1c, + 0x71, 0xa5, 0xd5, 0x28, 0x2e, 0xac, 0xba, 0xd2, 0xf9, 0x51, 0x98, 0xf4, 0xda, 0x34, 0x8b, 0x60, + 0x93, 0xf1, 0x22, 0xd8, 0x28, 0x45, 0x98, 0xf4, 0x5a, 0x39, 0x1b, 0x11, 0x9e, 0xd8, 0x7b, 0x62, + 0x79, 0x47, 0xb3, 0x1c, 0x62, 0xa0, 0x78, 0x44, 0x16, 0x34, 0x1b, 0xab, 0xfe, 0x6f, 0x67, 0x9f, + 0xc2, 0x38, 0x50, 0x60, 0xae, 0xb8, 0xba, 0xda, 0xac, 0xa9, 0xcd, 0x6a, 0xad, 0xb1, 0x52, 0xa9, + 0x2e, 0xd3, 0x11, 0xb2, 0xb2, 0x5c, 0xad, 0xa9, 0x65, 0x3a, 0x40, 0xd6, 0x0b, 0x19, 0x7a, 0xdf, + 0xf3, 0xc2, 0x24, 0xe4, 0xbb, 0x44, 0xba, 0xe8, 0x73, 0x72, 0xc2, 0x50, 0x05, 0x3e, 0x4e, 0x11, + 0x37, 0xd2, 0x72, 0xc7, 0x05, 0xa4, 0x3e, 0xc7, 0x79, 0xcf, 0xc2, 0x0c, 0x35, 0xc3, 0x6d, 0xb2, + 0xf3, 0x42, 0x90, 0x93, 0x55, 0x2e, 0x0d, 0xbd, 0x5f, 0x4a, 0x10, 0xbf, 0xa0, 0x2f, 0x47, 0xc9, + 0x8c, 0x8b, 0xbf, 0xc8, 0x0c, 0x77, 0x63, 0x44, 0xa5, 0xda, 0x28, 0xab, 0xd5, 0xe2, 0x2a, 0xcb, + 0x22, 0x2b, 0xa7, 0xe0, 0x78, 0xb5, 0xc6, 0xc2, 0x31, 0xd6, 0x9b, 0x8d, 0x5a, 0xb3, 0xb2, 0xb6, + 0x5e, 0x53, 0x1b, 0x85, 0x9c, 0x72, 0x12, 0x14, 0xfa, 0xdc, 0xac, 0xd4, 0x9b, 0xa5, 0x62, 0xb5, + 0x54, 0x5e, 0x2d, 0x2f, 0x16, 0xf2, 0xca, 0x93, 0xe0, 0x3a, 0x7a, 0x03, 0x51, 0x6d, 0xa9, 0xa9, + 0xd6, 0xce, 0xd7, 0x5d, 0x04, 0xd5, 0xf2, 0x6a, 0xd1, 0x55, 0xa4, 0xd0, 0xbd, 0xcf, 0x13, 0xca, + 0x15, 0x70, 0x94, 0x5c, 0x0a, 0xbf, 0x5a, 0x2b, 0x2e, 0xb2, 0xf2, 0x26, 0x95, 0x6b, 0xe0, 0x54, + 0xa5, 0x5a, 0xdf, 0x58, 0x5a, 0xaa, 0x94, 0x2a, 0xe5, 0x6a, 0xa3, 0xb9, 0x5e, 0x56, 0xd7, 0x2a, + 0xf5, 0xba, 0xfb, 0x6f, 0x61, 0x8a, 0xdc, 0xaa, 0x4b, 0xfb, 0x4c, 0xf4, 0x76, 0x19, 0x66, 0xcf, + 0x69, 0x1d, 0xdd, 0x1d, 0x28, 0xc8, 0x75, 0xdb, 0x3d, 0x27, 0x7d, 0x1c, 0x72, 0x2d, 0x37, 0x3b, + 0x2b, 0x40, 0x5e, 0xd0, 0x4f, 0xca, 0x09, 0x4f, 0xfa, 0x30, 0x20, 0x68, 0x89, 0xf3, 0x5c, 0x69, + 0x11, 0xf3, 0xd2, 0x57, 0x4a, 0x09, 0x4e, 0xfa, 0x88, 0x93, 0x4f, 0x06, 0xfe, 0xaf, 0x8f, 0x0a, + 0xfc, 0x02, 0xcc, 0x6c, 0x54, 0x8b, 0x1b, 0x8d, 0x95, 0x9a, 0x5a, 0xf9, 0x61, 0x12, 0x28, 0x7e, + 0x16, 0xa6, 0x96, 0x6a, 0xea, 0x42, 0x65, 0x71, 0xb1, 0x5c, 0x2d, 0xe4, 0x94, 0x2b, 0xe1, 0x8a, + 0x7a, 0x59, 0x3d, 0x57, 0x29, 0x95, 0x9b, 0x1b, 0xd5, 0xe2, 0xb9, 0x62, 0x65, 0x95, 0xf4, 0x11, + 0xf9, 0x98, 0xab, 0xc2, 0x27, 0xd0, 0x8f, 0x67, 0x01, 0x68, 0xd5, 0xc9, 0x3d, 0x49, 0xa1, 0x0b, + 0xa5, 0x3f, 0x9d, 0x74, 0xd2, 0x10, 0x90, 0x89, 0x68, 0xbf, 0x15, 0x98, 0xb4, 0xd8, 0x07, 0xb6, + 0xf2, 0x35, 0x88, 0x0e, 0x7d, 0xf4, 0xa8, 0xa9, 0xfe, 0xef, 0xe8, 0x1d, 0x49, 0xe6, 0x08, 0x91, + 0x8c, 0x25, 0x43, 0x72, 0x69, 0x34, 0x40, 0xa2, 0x17, 0x66, 0x60, 0x8e, 0xaf, 0x98, 0x5b, 0x09, + 0x62, 0x4c, 0x89, 0x55, 0x82, 0xff, 0x39, 0x64, 0x64, 0x9d, 0x7d, 0x2a, 0x1b, 0x4e, 0xc1, 0x6b, + 0x99, 0xf4, 0xd0, 0xbe, 0x67, 0xb1, 0x14, 0x32, 0x2e, 0xf3, 0xae, 0xd1, 0x51, 0x90, 0x94, 0x09, + 0x90, 0x1b, 0x0f, 0x3b, 0x05, 0x19, 0x7d, 0x41, 0x86, 0x59, 0xee, 0xc6, 0x6a, 0xf4, 0xca, 0x8c, + 0xc8, 0x6d, 0xb2, 0xa1, 0xbb, 0xb0, 0x33, 0x07, 0xbd, 0x0b, 0xfb, 0xec, 0x2d, 0x30, 0xc1, 0xd2, + 0x88, 0x7c, 0x6b, 0x55, 0xd7, 0x14, 0x38, 0x0a, 0xd3, 0xcb, 0xe5, 0x46, 0xb3, 0xde, 0x28, 0xaa, + 0x8d, 0xf2, 0x62, 0x21, 0xe3, 0x0e, 0x7c, 0xe5, 0xb5, 0xf5, 0xc6, 0x83, 0x05, 0x29, 0xb9, 0xf3, + 0x64, 0x2f, 0x23, 0x63, 0x76, 0x9e, 0x8c, 0x2b, 0x3e, 0xfd, 0xb9, 0xea, 0xc7, 0x65, 0x28, 0x50, + 0x0e, 0xca, 0x0f, 0x77, 0xb1, 0xa5, 0x63, 0xa3, 0x85, 0xd1, 0x45, 0x91, 0x60, 0xad, 0xfb, 0xc2, + 0x18, 0x92, 0xfe, 0x3c, 0x64, 0x25, 0xd2, 0x97, 0x1e, 0x03, 0x3b, 0xbb, 0xcf, 0xc0, 0xfe, 0x58, + 0x52, 0xef, 0xc9, 0x5e, 0x76, 0x47, 0x02, 0xd9, 0x87, 0x92, 0x78, 0x4f, 0x0e, 0xe0, 0x60, 0x2c, + 0x31, 0x98, 0x23, 0xc6, 0xdf, 0x82, 0x8c, 0x5e, 0x20, 0xc3, 0xd1, 0x45, 0xcd, 0xc1, 0x0b, 0x97, + 0x1b, 0xde, 0x8d, 0x92, 0x11, 0xb7, 0x40, 0x67, 0xf6, 0xdd, 0x02, 0x1d, 0x5c, 0x4a, 0x29, 0xf5, + 0x5c, 0x4a, 0x89, 0xde, 0x92, 0xf4, 0xbc, 0x65, 0x0f, 0x0f, 0x23, 0x0b, 0x94, 0x9c, 0xec, 0x1c, + 0x65, 0x3c, 0x17, 0xe9, 0x37, 0xb0, 0x37, 0x4c, 0x41, 0x81, 0xb2, 0x12, 0x72, 0x10, 0xfc, 0x45, + 0x76, 0x71, 0x7a, 0x33, 0x41, 0x3c, 0x46, 0x2f, 0xc2, 0x85, 0xc4, 0x47, 0xb8, 0xe0, 0xd6, 0x9b, + 0xe5, 0x5e, 0xa7, 0x8e, 0xa4, 0x9d, 0x61, 0xc8, 0x1b, 0x30, 0x3a, 0x04, 0x6e, 0x7a, 0x9d, 0x61, + 0x6c, 0xf1, 0xe3, 0xb9, 0xdc, 0x97, 0x5d, 0xc1, 0x59, 0x16, 0x45, 0x26, 0xfe, 0x0e, 0xf3, 0xa4, + 0xae, 0xe1, 0x9c, 0x37, 0x66, 0xcc, 0xc5, 0xde, 0xe9, 0xb9, 0x86, 0x0f, 0xe2, 0x20, 0x7d, 0x14, + 0xbe, 0x23, 0x41, 0xb6, 0x6e, 0x5a, 0xce, 0xa8, 0x30, 0x48, 0xba, 0x9d, 0x1d, 0x92, 0x40, 0x3d, + 0x7a, 0xce, 0x99, 0xde, 0x76, 0x76, 0x7c, 0xf9, 0x63, 0x08, 0x69, 0x79, 0x14, 0xe6, 0x28, 0x27, + 0xfe, 0x7d, 0x2f, 0xdf, 0x96, 0x68, 0x7f, 0xf5, 0x80, 0x28, 0x22, 0x64, 0xe3, 0xc3, 0xdf, 0x4e, + 0xf6, 0x40, 0xe1, 0xd2, 0xd0, 0x6f, 0x87, 0x71, 0x59, 0xe4, 0x71, 0xe9, 0x37, 0xe3, 0xf6, 0xaf, + 0x4c, 0x19, 0x55, 0xcf, 0x94, 0x24, 0x3a, 0x66, 0x4c, 0xe1, 0xe9, 0x23, 0xf2, 0x88, 0x0c, 0x79, + 0xe6, 0xce, 0x37, 0x52, 0x04, 0x92, 0xb6, 0x0c, 0x5f, 0x08, 0x62, 0x6e, 0x7f, 0xf2, 0xa8, 0x5b, + 0x46, 0x7c, 0xf9, 0xe9, 0xe3, 0xf0, 0xef, 0xcc, 0x4f, 0xb5, 0xb8, 0xa7, 0xe9, 0x1d, 0xed, 0x42, + 0x27, 0x41, 0x54, 0xea, 0xf7, 0x27, 0x3c, 0x99, 0xe7, 0x57, 0x95, 0x2b, 0x2f, 0x42, 0xe2, 0x3f, + 0x00, 0x53, 0x16, 0xb7, 0xd7, 0xe7, 0x5a, 0x51, 0x3d, 0x3e, 0xc2, 0xec, 0xbb, 0x1a, 0xe4, 0x4c, + 0x74, 0x0c, 0x4f, 0x88, 0x9f, 0xb1, 0x1c, 0x1b, 0x9a, 0x2e, 0xb6, 0xdb, 0x4b, 0x58, 0x73, 0x76, + 0x2d, 0xdc, 0x4e, 0x34, 0x44, 0x58, 0x3d, 0xdb, 0xa1, 0x21, 0x49, 0x70, 0x71, 0x21, 0x57, 0x79, + 0x74, 0x9e, 0x3e, 0xa0, 0x37, 0xf0, 0x78, 0x19, 0x49, 0x97, 0xf4, 0x7a, 0x1f, 0x92, 0x1a, 0x07, + 0xc9, 0x33, 0x87, 0x63, 0x22, 0x7d, 0x40, 0x7e, 0x59, 0x86, 0x39, 0x6a, 0x27, 0x8c, 0x1a, 0x93, + 0x3f, 0x4c, 0xe8, 0xfe, 0x13, 0xba, 0x51, 0x2b, 0xcc, 0xce, 0x48, 0x60, 0x49, 0xe2, 0x2c, 0x24, + 0xc6, 0x47, 0xfa, 0xc8, 0x7c, 0x32, 0x0f, 0x10, 0x72, 0xe9, 0x7c, 0x7f, 0x3e, 0x88, 0xd1, 0x88, + 0xde, 0xc8, 0xe6, 0x1f, 0x75, 0x2e, 0x60, 0x78, 0xc8, 0x5d, 0xd3, 0xdf, 0x90, 0xe2, 0x13, 0x85, + 0x46, 0x95, 0xbf, 0x48, 0x68, 0xf3, 0x32, 0x87, 0xca, 0x81, 0x83, 0xfb, 0x90, 0xbd, 0xdc, 0x07, + 0x12, 0x18, 0xbf, 0x83, 0x58, 0x49, 0x86, 0xda, 0xea, 0x10, 0x33, 0xfb, 0x53, 0x70, 0x5c, 0x2d, + 0x17, 0x17, 0x6b, 0xd5, 0xd5, 0x07, 0xc3, 0xd7, 0x2b, 0x15, 0xe4, 0xf0, 0xe4, 0x24, 0x15, 0xd8, + 0x5e, 0x9d, 0xb0, 0x0f, 0xe4, 0x65, 0x15, 0x37, 0x5b, 0x09, 0x2d, 0xae, 0x0c, 0xee, 0xd5, 0x04, + 0xc8, 0x1e, 0x26, 0x0a, 0x8f, 0x40, 0xa8, 0x19, 0xfd, 0xb4, 0x0c, 0x05, 0xe2, 0xfb, 0x43, 0xb8, + 0x64, 0xf7, 0xe8, 0xd5, 0x78, 0x8f, 0xcf, 0x2e, 0xdd, 0x7f, 0x0a, 0x3c, 0x3e, 0xbd, 0x04, 0xe5, + 0x06, 0x98, 0x6b, 0x6d, 0xe3, 0xd6, 0xc5, 0x8a, 0xe1, 0xed, 0xab, 0xd3, 0x4d, 0xd8, 0x9e, 0x54, + 0x1e, 0x98, 0x07, 0x78, 0x60, 0xf8, 0x49, 0x34, 0x37, 0x48, 0x87, 0x99, 0x8a, 0xc0, 0xe5, 0xc3, + 0x3e, 0x2e, 0x55, 0x0e, 0x97, 0x3b, 0x87, 0xa2, 0x9a, 0x0c, 0x96, 0xea, 0x10, 0xb0, 0x20, 0x38, + 0x59, 0x5b, 0x6f, 0x54, 0x6a, 0xd5, 0xe6, 0x46, 0xbd, 0xbc, 0xd8, 0x5c, 0xf0, 0xc0, 0xa9, 0x17, + 0x64, 0xf4, 0x55, 0x09, 0x26, 0x28, 0x5b, 0x36, 0x7a, 0x72, 0x00, 0xc1, 0x40, 0x57, 0x57, 0xf4, + 0x06, 0xe1, 0xc0, 0x15, 0xbe, 0x20, 0x58, 0x39, 0x11, 0xfd, 0xd4, 0x33, 0x60, 0x82, 0x82, 0xec, + 0xad, 0x68, 0x9d, 0x8e, 0xe8, 0xa5, 0x18, 0x19, 0xd5, 0xcb, 0x2e, 0x18, 0xc4, 0x62, 0x00, 0x1b, + 0xe9, 0x8f, 0x2c, 0xcf, 0xc9, 0x52, 0x33, 0xf8, 0xbc, 0xee, 0x6c, 0x13, 0x4f, 0x58, 0xf4, 0x43, + 0x22, 0xcb, 0x8b, 0x37, 0x43, 0x6e, 0xcf, 0xcd, 0x3d, 0xc0, 0xab, 0x98, 0x66, 0x42, 0xbf, 0x2e, + 0x1c, 0x33, 0x95, 0xd3, 0x4f, 0x9f, 0xa7, 0x08, 0x70, 0xd6, 0x20, 0xdb, 0xd1, 0x6d, 0x87, 0x8d, + 0x1f, 0x77, 0x24, 0x22, 0xe4, 0x3d, 0x54, 0x1c, 0xbc, 0xa3, 0x12, 0x32, 0xe8, 0x7e, 0x98, 0x09, + 0xa7, 0x0a, 0x78, 0x56, 0x9f, 0x82, 0x09, 0x76, 0xe2, 0x8f, 0x2d, 0xb1, 0x7a, 0xaf, 0x82, 0xcb, + 0x9a, 0x42, 0xb5, 0x4d, 0x5f, 0x07, 0xfe, 0xef, 0xa3, 0x30, 0xb1, 0xa2, 0xdb, 0x8e, 0x69, 0x5d, + 0x46, 0x8f, 0x66, 0x60, 0xe2, 0x1c, 0xb6, 0x6c, 0xdd, 0x34, 0xf6, 0xb9, 0x1a, 0x9c, 0x81, 0xe9, + 0xae, 0x85, 0xf7, 0x74, 0x73, 0xd7, 0x0e, 0x16, 0x67, 0xc2, 0x49, 0x0a, 0x82, 0x49, 0x6d, 0xd7, + 0xd9, 0x36, 0xad, 0x20, 0x50, 0x88, 0xf7, 0xae, 0x9c, 0x06, 0xa0, 0xcf, 0x55, 0x6d, 0x07, 0x33, + 0x07, 0x8a, 0x50, 0x8a, 0xa2, 0x40, 0xd6, 0xd1, 0x77, 0x30, 0x8b, 0x1c, 0x4c, 0x9e, 0x5d, 0x01, + 0x93, 0x28, 0x7c, 0x2c, 0xda, 0xa1, 0xac, 0x7a, 0xaf, 0xe8, 0x33, 0x32, 0x4c, 0x2f, 0x63, 0x87, + 0xb1, 0x6a, 0xa3, 0x17, 0x65, 0x84, 0x2e, 0xeb, 0x70, 0xc7, 0xd8, 0x8e, 0x66, 0x7b, 0xff, 0xf9, + 0x4b, 0xb0, 0x7c, 0x62, 0x10, 0xc6, 0x58, 0x0e, 0xc7, 0x30, 0x27, 0x31, 0xed, 0x9c, 0x0a, 0x75, + 0x46, 0x65, 0x99, 0xd9, 0x26, 0xc8, 0xfe, 0x0f, 0xe8, 0xad, 0x92, 0xe8, 0x79, 0x70, 0x26, 0xfb, + 0xf9, 0x50, 0x7d, 0x22, 0xbb, 0xa3, 0xc9, 0x3d, 0x96, 0x63, 0x5f, 0x78, 0xfa, 0x30, 0x25, 0x46, + 0x46, 0xf5, 0x73, 0x0b, 0x9e, 0x24, 0x1f, 0xcc, 0x49, 0xfa, 0xda, 0xf8, 0x4d, 0x19, 0xa6, 0xeb, + 0xdb, 0xe6, 0x25, 0x4f, 0x8e, 0x3f, 0x2a, 0x06, 0xec, 0x35, 0x30, 0xb5, 0xd7, 0x03, 0x6a, 0x90, + 0x10, 0x7d, 0x7d, 0x3e, 0x7a, 0xbe, 0x9c, 0x14, 0xa6, 0x10, 0x73, 0x23, 0xbf, 0xdc, 0x5e, 0x79, + 0x3a, 0x4c, 0x30, 0xae, 0xd9, 0x92, 0x4b, 0x3c, 0xc0, 0x5e, 0xe6, 0x70, 0x05, 0xb3, 0x7c, 0x05, + 0x93, 0x21, 0x1f, 0x5d, 0xb9, 0xf4, 0x91, 0xff, 0x53, 0x89, 0xc4, 0x11, 0xf1, 0x80, 0x2f, 0x8d, + 0x00, 0x78, 0xf4, 0xad, 0x8c, 0xe8, 0xc2, 0xa4, 0x2f, 0x01, 0x9f, 0x83, 0x03, 0x5d, 0xc4, 0x33, + 0x90, 0x5c, 0xfa, 0xf2, 0xfc, 0xb5, 0x2c, 0xcc, 0x2c, 0xea, 0x9b, 0x9b, 0x7e, 0x27, 0xf9, 0x62, + 0xc1, 0x4e, 0x32, 0xda, 0x1d, 0xc0, 0xb5, 0x73, 0x77, 0x2d, 0x0b, 0x1b, 0x5e, 0xa5, 0x58, 0x73, + 0xea, 0x49, 0x55, 0x6e, 0x84, 0xa3, 0xde, 0xb8, 0x10, 0xee, 0x28, 0xa7, 0xd4, 0xde, 0x64, 0xf4, + 0x0d, 0xe1, 0x5d, 0x2d, 0x4f, 0xa2, 0xe1, 0x2a, 0x45, 0x34, 0xc0, 0xbb, 0x60, 0x76, 0x9b, 0xe6, + 0x26, 0x53, 0x7f, 0xaf, 0xb3, 0x3c, 0xd9, 0x13, 0xa7, 0x79, 0x0d, 0xdb, 0xb6, 0xb6, 0x85, 0x55, + 0x3e, 0x73, 0x4f, 0xf3, 0x95, 0x93, 0xdc, 0x3a, 0x26, 0xb6, 0x41, 0x26, 0x50, 0x93, 0x31, 0x68, + 0xc7, 0x59, 0xc8, 0x2e, 0xe9, 0x1d, 0x8c, 0x7e, 0x46, 0x82, 0x29, 0x15, 0xb7, 0x4c, 0xa3, 0xe5, + 0xbe, 0x85, 0x9c, 0x83, 0xfe, 0x31, 0x23, 0x7a, 0xdb, 0xa6, 0x4b, 0x67, 0xde, 0xa7, 0x11, 0xd1, + 0x6e, 0xc4, 0x6e, 0xd5, 0x8c, 0x25, 0x35, 0x86, 0xbb, 0x51, 0xdc, 0xa9, 0xc7, 0xe6, 0x66, 0xc7, + 0xd4, 0xb8, 0xc5, 0xaf, 0x5e, 0x53, 0x28, 0x38, 0xac, 0x52, 0x35, 0x9d, 0x75, 0xdd, 0x30, 0xfc, + 0xf3, 0xdf, 0xfb, 0xd2, 0xf9, 0x7d, 0xdb, 0xd8, 0x10, 0x3a, 0xa4, 0xee, 0xac, 0xf4, 0x08, 0xcd, + 0xbe, 0x01, 0xe6, 0x2e, 0x5c, 0x76, 0xb0, 0xcd, 0x72, 0xb1, 0x62, 0xb3, 0x6a, 0x4f, 0x6a, 0x28, + 0x00, 0x76, 0x5c, 0xa8, 0x9d, 0x98, 0x02, 0x93, 0x89, 0x7a, 0x65, 0x88, 0x19, 0xe0, 0x71, 0x28, + 0x54, 0x6b, 0x8b, 0x65, 0xe2, 0xab, 0xe6, 0x79, 0xff, 0x6c, 0xa1, 0x5f, 0x90, 0x61, 0x86, 0x38, + 0x93, 0x78, 0x28, 0x5c, 0x27, 0x30, 0x1f, 0x41, 0x8f, 0x09, 0xfb, 0xb1, 0x91, 0x2a, 0x87, 0x0b, + 0x88, 0x16, 0xf4, 0xa6, 0xde, 0xe9, 0x15, 0x74, 0x4e, 0xed, 0x49, 0xed, 0x03, 0x88, 0xdc, 0x17, + 0x90, 0xdf, 0x17, 0x72, 0x66, 0x1b, 0xc4, 0xdd, 0x61, 0xa1, 0xf2, 0x07, 0x32, 0x4c, 0xbb, 0x93, + 0x14, 0x0f, 0x94, 0x1a, 0x07, 0x8a, 0x69, 0x74, 0x2e, 0x07, 0xcb, 0x22, 0xde, 0x6b, 0xa2, 0x46, + 0xf2, 0x57, 0xc2, 0x33, 0x77, 0x22, 0xa2, 0x10, 0x2f, 0x63, 0xc2, 0xef, 0x9d, 0x42, 0xf3, 0xf9, + 0x01, 0xcc, 0x1d, 0x16, 0x7c, 0x5f, 0xca, 0x41, 0x7e, 0xa3, 0x4b, 0x90, 0xfb, 0x75, 0x59, 0x24, + 0x98, 0xfc, 0xbe, 0x83, 0x0c, 0xae, 0x99, 0xd5, 0x31, 0x5b, 0x5a, 0x67, 0x3d, 0x38, 0x11, 0x16, + 0x24, 0x28, 0x77, 0x32, 0xdf, 0x46, 0x7a, 0x12, 0xf2, 0x86, 0xd8, 0x38, 0xeb, 0x44, 0x46, 0xa1, + 0x43, 0x23, 0x37, 0xc3, 0xb1, 0xb6, 0x6e, 0x6b, 0x17, 0x3a, 0xb8, 0x6c, 0xb4, 0xac, 0xcb, 0x54, + 0x1c, 0x6c, 0x5a, 0xb5, 0xef, 0x83, 0x72, 0x37, 0xe4, 0x6c, 0xe7, 0x72, 0x87, 0xce, 0x13, 0xc3, + 0x67, 0x4c, 0x22, 0x8b, 0xaa, 0xbb, 0xd9, 0x55, 0xfa, 0x57, 0xd8, 0x45, 0x69, 0x42, 0xf0, 0xaa, + 0xed, 0xa7, 0x42, 0xde, 0xb4, 0xf4, 0x2d, 0x9d, 0x5e, 0x9d, 0x34, 0xb7, 0x2f, 0x9c, 0x20, 0x35, + 0x05, 0x6a, 0x24, 0x8b, 0xca, 0xb2, 0x2a, 0x4f, 0x87, 0x29, 0x7d, 0x47, 0xdb, 0xc2, 0x0f, 0xe8, + 0x06, 0x3d, 0x6c, 0x39, 0x77, 0xfb, 0xa9, 0x7d, 0xc7, 0x67, 0xd8, 0x77, 0x35, 0xc8, 0x8a, 0xde, + 0x29, 0x89, 0xc6, 0x3c, 0x22, 0x75, 0xa3, 0xa0, 0x8e, 0xe5, 0xca, 0x71, 0xf4, 0x0a, 0xa1, 0x68, + 0x44, 0xd1, 0x6c, 0xa5, 0x3f, 0x78, 0x7f, 0x4a, 0x82, 0xc9, 0x45, 0xf3, 0x92, 0x41, 0x14, 0xfd, + 0x0e, 0x31, 0x5b, 0xb7, 0xcf, 0x21, 0x47, 0xfe, 0x46, 0xcf, 0xd8, 0x13, 0x0d, 0xa4, 0xb6, 0x5e, + 0x91, 0x11, 0x30, 0xc4, 0xb6, 0x1c, 0xc1, 0x7b, 0x16, 0xe3, 0xca, 0x49, 0x5f, 0xae, 0x7f, 0x26, + 0x43, 0x76, 0xd1, 0x32, 0xbb, 0xe8, 0xf5, 0x99, 0x04, 0x2e, 0x0b, 0x6d, 0xcb, 0xec, 0x36, 0xc8, + 0x45, 0x69, 0xc1, 0x31, 0x8e, 0x70, 0x9a, 0x72, 0x07, 0x4c, 0x76, 0x4d, 0x5b, 0x77, 0xbc, 0x69, + 0xc4, 0xdc, 0xed, 0x4f, 0xe8, 0xdb, 0x9a, 0xd7, 0x59, 0x26, 0xd5, 0xcf, 0xee, 0xf6, 0xda, 0x44, + 0x84, 0xae, 0x5c, 0x5c, 0x31, 0x7a, 0x97, 0xc5, 0xf5, 0xa4, 0xa2, 0x97, 0x84, 0x91, 0x7c, 0x26, + 0x8f, 0xe4, 0x13, 0xfb, 0x48, 0xd8, 0x32, 0xbb, 0x23, 0xd9, 0x64, 0x7c, 0x99, 0x8f, 0xea, 0x3d, + 0x1c, 0xaa, 0x37, 0x09, 0x95, 0x99, 0x3e, 0xa2, 0xef, 0xcc, 0x02, 0x10, 0x33, 0x63, 0xc3, 0x9d, + 0x00, 0x89, 0xd9, 0x58, 0x3f, 0x95, 0x0d, 0xc9, 0xb2, 0xc8, 0xcb, 0xf2, 0xc9, 0x11, 0x56, 0x0c, + 0x21, 0x1f, 0x21, 0xd1, 0x22, 0xe4, 0x76, 0xdd, 0xcf, 0x4c, 0xa2, 0x82, 0x24, 0xc8, 0xab, 0x4a, + 0xff, 0x44, 0x7f, 0x9a, 0x81, 0x1c, 0x49, 0x50, 0x4e, 0x03, 0x90, 0x81, 0x9d, 0x1e, 0x08, 0xca, + 0x90, 0x21, 0x3c, 0x94, 0x42, 0xb4, 0x55, 0x6f, 0xb3, 0xcf, 0xd4, 0x64, 0x0e, 0x12, 0xdc, 0xbf, + 0xc9, 0x70, 0x4f, 0x68, 0x31, 0x03, 0x20, 0x94, 0xe2, 0xfe, 0x4d, 0xde, 0x56, 0xf1, 0x26, 0x8d, + 0x61, 0x9d, 0x55, 0x83, 0x04, 0xff, 0xef, 0x55, 0xff, 0xe6, 0x33, 0xef, 0x6f, 0x92, 0xe2, 0x4e, + 0x86, 0x89, 0x5a, 0x2e, 0x04, 0x45, 0xe4, 0x49, 0xa6, 0xde, 0x64, 0xf4, 0x6a, 0x5f, 0x6d, 0x16, + 0x39, 0xb5, 0xb9, 0x35, 0x81, 0x78, 0xd3, 0x57, 0x9e, 0x2f, 0xe4, 0x60, 0xaa, 0x6a, 0xb6, 0x99, + 0xee, 0x84, 0x26, 0x8c, 0x1f, 0xca, 0x25, 0x9a, 0x30, 0xfa, 0x34, 0x22, 0x14, 0xe4, 0x3e, 0x5e, + 0x41, 0xc4, 0x28, 0x84, 0xf5, 0x43, 0x59, 0x80, 0x3c, 0xd1, 0xde, 0xfd, 0x57, 0x6a, 0xc5, 0x91, + 0x20, 0xa2, 0x55, 0xd9, 0x9f, 0xff, 0xe1, 0x74, 0xec, 0xbf, 0x42, 0x8e, 0x54, 0x30, 0x66, 0x77, + 0x87, 0xaf, 0xa8, 0x14, 0x5f, 0x51, 0x39, 0xbe, 0xa2, 0xd9, 0xde, 0x8a, 0x26, 0x59, 0x07, 0x88, + 0xd2, 0x90, 0xf4, 0x75, 0xfc, 0x1f, 0x26, 0x00, 0xaa, 0xda, 0x9e, 0xbe, 0x45, 0x77, 0x87, 0x3f, + 0xe3, 0xcd, 0x7f, 0xd8, 0x3e, 0xee, 0x7f, 0x0b, 0x0d, 0x84, 0x77, 0xc0, 0x04, 0x1b, 0xf7, 0x58, + 0x45, 0xae, 0xe5, 0x2a, 0x12, 0x50, 0xa1, 0x66, 0xe9, 0xc3, 0x8e, 0xea, 0xe5, 0xe7, 0x6e, 0xff, + 0x95, 0x7a, 0x6e, 0xff, 0xed, 0xbf, 0x07, 0x11, 0x71, 0x27, 0x30, 0x7a, 0x9b, 0xb0, 0x47, 0x7f, + 0x88, 0x9f, 0x50, 0x8d, 0x22, 0x9a, 0xe0, 0x53, 0x61, 0xc2, 0xf4, 0x37, 0xb4, 0xe5, 0xc8, 0x75, + 0xb0, 0x8a, 0xb1, 0x69, 0xaa, 0x5e, 0x4e, 0xc1, 0xcd, 0x2f, 0x21, 0x3e, 0xc6, 0x72, 0x68, 0xe6, + 0xe4, 0xb2, 0x17, 0x0f, 0xcc, 0xad, 0xc7, 0x79, 0xdd, 0xd9, 0x5e, 0x25, 0x51, 0x46, 0xfe, 0xb3, + 0x98, 0x05, 0x19, 0xc2, 0x5f, 0x4a, 0x86, 0x3f, 0x1f, 0xb3, 0xa3, 0xce, 0xa3, 0x76, 0x77, 0x14, + 0x95, 0xfe, 0xdc, 0x46, 0x00, 0x78, 0x27, 0xe4, 0x29, 0xa3, 0xac, 0x13, 0x3d, 0x1b, 0x89, 0x9f, + 0x4f, 0x49, 0x65, 0x7f, 0xa0, 0xb7, 0xfa, 0x38, 0x9e, 0xe3, 0x70, 0x5c, 0x38, 0x10, 0x67, 0xa9, + 0x43, 0x7a, 0xf6, 0x36, 0x98, 0x60, 0x92, 0x56, 0xe6, 0xc2, 0xad, 0xb8, 0x70, 0x44, 0x01, 0xc8, + 0xaf, 0x99, 0x7b, 0xb8, 0x61, 0x16, 0x32, 0xee, 0xb3, 0xcb, 0x5f, 0xc3, 0x2c, 0x48, 0xe8, 0xe5, + 0x93, 0x30, 0xe9, 0x07, 0x62, 0xfa, 0x94, 0x04, 0x85, 0x92, 0x85, 0x35, 0x07, 0x2f, 0x59, 0xe6, + 0x0e, 0xad, 0x91, 0xb8, 0x77, 0xe8, 0x2f, 0x0b, 0xbb, 0x78, 0xf8, 0x01, 0x92, 0x7a, 0x0b, 0x8b, + 0xc0, 0x92, 0x2e, 0x42, 0x4a, 0xde, 0x22, 0x24, 0x7a, 0x9d, 0x90, 0xcb, 0x87, 0x68, 0x29, 0xe9, + 0x37, 0xb5, 0x8f, 0x49, 0x90, 0x2b, 0x75, 0x4c, 0x03, 0x87, 0x8f, 0x30, 0x0d, 0x3c, 0x2b, 0xd3, + 0x7f, 0x27, 0x02, 0x3d, 0x47, 0x12, 0xb5, 0x35, 0x02, 0x01, 0xb8, 0x65, 0x0b, 0xca, 0x56, 0x6c, + 0x90, 0x8a, 0x25, 0x9d, 0xbe, 0x40, 0xbf, 0x2a, 0xc1, 0x14, 0x8d, 0x8b, 0x53, 0xec, 0x74, 0xd0, + 0x13, 0x02, 0xa1, 0xf6, 0x09, 0x66, 0x85, 0x7e, 0x5f, 0xd8, 0x45, 0xdf, 0xaf, 0x95, 0x4f, 0x3b, + 0x41, 0x80, 0xa0, 0x64, 0x1e, 0xe3, 0x62, 0x7b, 0x69, 0x03, 0x19, 0x4a, 0x5f, 0xd4, 0x9f, 0x96, + 0x5c, 0x03, 0xc0, 0xb8, 0xb8, 0x6e, 0xe1, 0x3d, 0x1d, 0x5f, 0x42, 0x57, 0x07, 0xc2, 0xde, 0x1f, + 0xf4, 0xe3, 0x35, 0xc2, 0x8b, 0x38, 0x21, 0x92, 0x91, 0x5b, 0x59, 0xd3, 0x9d, 0x20, 0x13, 0xeb, + 0xc5, 0x7b, 0x23, 0xb1, 0x84, 0xc8, 0xa8, 0xe1, 0xec, 0x82, 0x6b, 0x36, 0xd1, 0x5c, 0xa4, 0x2f, + 0xd8, 0xf7, 0x4c, 0xc0, 0xe4, 0x86, 0x61, 0x77, 0x3b, 0x9a, 0xbd, 0x8d, 0xbe, 0x2d, 0x43, 0x9e, + 0x5e, 0xe4, 0x86, 0x7e, 0x80, 0x8b, 0x2d, 0xf0, 0x63, 0xbb, 0xd8, 0xf2, 0x5c, 0x70, 0xe8, 0x4b, + 0xff, 0x7b, 0xe6, 0xd1, 0x3b, 0x65, 0xd1, 0x49, 0xaa, 0x57, 0x68, 0xe8, 0x46, 0xff, 0xfe, 0xc7, + 0xd9, 0xbb, 0x7a, 0xcb, 0xd9, 0xb5, 0xfc, 0x5b, 0xcb, 0x9f, 0x22, 0x46, 0x65, 0x9d, 0xfe, 0xa5, + 0xfa, 0xbf, 0x23, 0x0d, 0x26, 0x58, 0xe2, 0xbe, 0xed, 0xa4, 0xfd, 0xe7, 0x6f, 0x4f, 0x42, 0x5e, + 0xb3, 0x1c, 0xdd, 0x76, 0xd8, 0x06, 0x2b, 0x7b, 0x73, 0xbb, 0x4b, 0xfa, 0xb4, 0x61, 0x75, 0xbc, + 0x28, 0x24, 0x7e, 0x02, 0xfa, 0x03, 0xa1, 0xf9, 0x63, 0x7c, 0xcd, 0x93, 0x41, 0xfe, 0xc0, 0x10, + 0x6b, 0xd4, 0x57, 0xc2, 0x15, 0x6a, 0xb1, 0x51, 0x6e, 0xd2, 0xa0, 0x15, 0x7e, 0x7c, 0x8a, 0x36, + 0x7a, 0x8b, 0x1c, 0x5a, 0xbf, 0xbb, 0xcc, 0x8d, 0x11, 0x4c, 0x8a, 0xc1, 0x18, 0xe1, 0x27, 0xc4, + 0xec, 0x56, 0x73, 0x8b, 0xb0, 0xb2, 0xf8, 0x22, 0xec, 0xef, 0x0a, 0xef, 0x26, 0xf9, 0xa2, 0x1c, + 0xb0, 0x06, 0x18, 0x77, 0xd1, 0xd3, 0xbb, 0x84, 0x76, 0x86, 0x06, 0x95, 0x74, 0x88, 0xb0, 0xfd, + 0xf6, 0x04, 0x4c, 0x2c, 0x6b, 0x9d, 0x0e, 0xb6, 0x2e, 0xbb, 0x43, 0x52, 0xc1, 0xe3, 0x70, 0x4d, + 0x33, 0xf4, 0x4d, 0x6c, 0x3b, 0xf1, 0x9d, 0xe5, 0xdb, 0x84, 0x83, 0x08, 0xb3, 0x32, 0xe6, 0x7b, + 0xe9, 0x47, 0xc8, 0xfc, 0x16, 0xc8, 0xea, 0xc6, 0xa6, 0xc9, 0xba, 0xcc, 0xde, 0x55, 0x7b, 0xef, + 0x67, 0x32, 0x75, 0x21, 0x19, 0x05, 0xe3, 0x08, 0x0b, 0x72, 0x91, 0x7e, 0xcf, 0xf9, 0x7b, 0x59, + 0x98, 0xf5, 0x98, 0xa8, 0x18, 0x6d, 0xfc, 0x70, 0x78, 0x29, 0xe6, 0x17, 0xb2, 0xa2, 0xc7, 0xc1, + 0x7a, 0xeb, 0x43, 0x48, 0x45, 0x88, 0xb4, 0x01, 0xd0, 0xd2, 0x1c, 0xbc, 0x65, 0x5a, 0xba, 0xdf, + 0x1f, 0x3e, 0x2d, 0x09, 0xb5, 0x12, 0xfd, 0xfb, 0xb2, 0x1a, 0xa2, 0xa3, 0xdc, 0x0d, 0xd3, 0xd8, + 0x3f, 0x7f, 0xef, 0x2d, 0xd5, 0xc4, 0xe2, 0x15, 0xce, 0x8f, 0x3e, 0x2d, 0x74, 0xea, 0x4c, 0xa4, + 0x9a, 0xc9, 0x30, 0x6b, 0x0e, 0xd7, 0x86, 0x36, 0xaa, 0x6b, 0x45, 0xb5, 0xbe, 0x52, 0x5c, 0x5d, + 0xad, 0x54, 0x97, 0xfd, 0xc0, 0x2f, 0x0a, 0xcc, 0x2d, 0xd6, 0xce, 0x57, 0x43, 0x91, 0x79, 0xb2, + 0x68, 0x1d, 0x26, 0x3d, 0x79, 0xf5, 0xf3, 0xc5, 0x0c, 0xcb, 0x8c, 0xf9, 0x62, 0x86, 0x92, 0x5c, + 0xe3, 0x4c, 0x6f, 0xf9, 0x0e, 0x3a, 0xe4, 0x19, 0xfd, 0x89, 0x06, 0x39, 0xb2, 0xa6, 0x8e, 0xde, + 0x44, 0xb6, 0x01, 0xbb, 0x1d, 0xad, 0x85, 0xd1, 0x4e, 0x02, 0x6b, 0xdc, 0xbb, 0xd5, 0x42, 0xda, + 0x77, 0xab, 0x05, 0x79, 0x64, 0x56, 0xdf, 0xf1, 0x7e, 0xeb, 0xf8, 0x2a, 0xcd, 0xc2, 0x1f, 0xd0, + 0x8a, 0xdd, 0x5d, 0xa1, 0xcb, 0xff, 0x8c, 0xcd, 0x08, 0x95, 0x8c, 0xe6, 0x29, 0x99, 0x25, 0x2a, + 0xb6, 0x0f, 0x13, 0xc7, 0xd1, 0x18, 0x6e, 0x5e, 0xcf, 0x42, 0xae, 0xde, 0xed, 0xe8, 0x0e, 0xfa, + 0x55, 0x69, 0x24, 0x98, 0xd1, 0x9b, 0x48, 0xe4, 0x81, 0x37, 0x91, 0x04, 0xbb, 0xae, 0x59, 0x81, + 0x5d, 0xd7, 0x06, 0x7e, 0xd8, 0xe1, 0x77, 0x5d, 0xef, 0x60, 0xc1, 0xdb, 0xe8, 0x9e, 0xed, 0x13, + 0xfb, 0x88, 0x94, 0x54, 0xab, 0x4f, 0x54, 0xc0, 0xb3, 0xb7, 0xb1, 0xe0, 0x64, 0x00, 0xf9, 0x85, + 0x5a, 0xa3, 0x51, 0x5b, 0x2b, 0x1c, 0x21, 0x51, 0x6d, 0x6a, 0xeb, 0x34, 0x54, 0x4c, 0xa5, 0x5a, + 0x2d, 0xab, 0x05, 0x89, 0x84, 0x4b, 0xab, 0x34, 0x56, 0xcb, 0x05, 0x99, 0x0f, 0x4b, 0x1f, 0x6b, + 0x7e, 0xf3, 0x65, 0xa7, 0xa9, 0x5e, 0x62, 0x86, 0x78, 0x34, 0x3f, 0xe9, 0x2b, 0xd7, 0x2f, 0xc9, + 0x90, 0x5b, 0xc3, 0xd6, 0x16, 0x46, 0x3f, 0x96, 0x60, 0x93, 0x6f, 0x53, 0xb7, 0x6c, 0x1a, 0x5c, + 0x2e, 0xd8, 0xe4, 0x0b, 0xa7, 0x29, 0xd7, 0xc3, 0xac, 0x8d, 0x5b, 0xa6, 0xd1, 0xf6, 0x32, 0xd1, + 0xfe, 0x88, 0x4f, 0x44, 0x2f, 0x4d, 0x08, 0x19, 0x61, 0x74, 0x24, 0x3b, 0x75, 0x49, 0x80, 0xe9, + 0x57, 0x6a, 0xfa, 0xc0, 0x7c, 0x43, 0x76, 0x7f, 0xea, 0x5e, 0x46, 0x2f, 0x15, 0xde, 0x7d, 0xbd, + 0x19, 0xf2, 0x17, 0xbc, 0x28, 0xc5, 0x72, 0x64, 0x7f, 0xcc, 0xf2, 0x28, 0x0b, 0x70, 0xcc, 0xc6, + 0x1d, 0xdc, 0x72, 0x70, 0xdb, 0x6d, 0xba, 0xea, 0xc0, 0x4e, 0x61, 0x7f, 0x76, 0xf4, 0xe7, 0x61, + 0x00, 0xef, 0xe2, 0x01, 0xbc, 0xa1, 0x8f, 0x28, 0xdd, 0x0a, 0x45, 0xdb, 0xca, 0x6e, 0x35, 0xea, + 0x1d, 0xd3, 0x5f, 0x14, 0xf7, 0xde, 0xdd, 0x6f, 0xdb, 0xce, 0x4e, 0x87, 0x7c, 0x63, 0x07, 0x0c, + 0xbc, 0x77, 0x65, 0x1e, 0x26, 0x34, 0xe3, 0x32, 0xf9, 0x94, 0x8d, 0xa9, 0xb5, 0x97, 0x09, 0xbd, + 0xdc, 0x47, 0xfe, 0x5e, 0x0e, 0xf9, 0x27, 0x8b, 0xb1, 0x9b, 0x3e, 0xf0, 0x3f, 0x39, 0x01, 0xb9, + 0x75, 0xcd, 0x76, 0x30, 0xfa, 0xbf, 0x64, 0x51, 0xe4, 0x6f, 0x80, 0xb9, 0x4d, 0xb3, 0xb5, 0x6b, + 0xe3, 0x36, 0xdf, 0x28, 0x7b, 0x52, 0x47, 0x81, 0xb9, 0x72, 0x13, 0x14, 0xbc, 0x44, 0x46, 0xd6, + 0xdb, 0x86, 0xdf, 0x97, 0x4e, 0x82, 0x9c, 0xdb, 0xeb, 0x9a, 0xe5, 0xd4, 0x36, 0x49, 0x9a, 0x1f, + 0xe4, 0x3c, 0x9c, 0xc8, 0x41, 0x9f, 0x8f, 0x81, 0x7e, 0x22, 0x1a, 0xfa, 0x49, 0x01, 0xe8, 0x95, + 0x22, 0x4c, 0x6e, 0xea, 0x1d, 0x4c, 0x7e, 0x98, 0x22, 0x3f, 0xf4, 0x1b, 0x93, 0x88, 0xec, 0xfd, + 0x31, 0x69, 0x49, 0xef, 0x60, 0xd5, 0xff, 0xcd, 0x9b, 0xc8, 0x40, 0x30, 0x91, 0x59, 0xa5, 0xfe, + 0xb4, 0xae, 0xe1, 0x65, 0x68, 0x3b, 0xd8, 0x5b, 0x7c, 0x33, 0xd8, 0xe1, 0x96, 0xb6, 0xe6, 0x68, + 0x04, 0x8c, 0x19, 0x95, 0x3c, 0xf3, 0x7e, 0x21, 0x72, 0xaf, 0x5f, 0xc8, 0xf3, 0xe4, 0x64, 0x3d, + 0xa2, 0xc7, 0x6c, 0x44, 0x8b, 0xba, 0xe0, 0x01, 0x44, 0x2d, 0x45, 0xff, 0xdd, 0x05, 0xa6, 0xa5, + 0x59, 0xd8, 0x59, 0x0f, 0x7b, 0x62, 0xe4, 0x54, 0x3e, 0x91, 0xb8, 0xf2, 0xd9, 0x75, 0x6d, 0x87, + 0x06, 0x3a, 0x2f, 0xb9, 0xdf, 0x98, 0x8b, 0xd6, 0xbe, 0xf4, 0xa0, 0xff, 0xcd, 0x8d, 0xba, 0xff, + 0xed, 0x57, 0xc7, 0xf4, 0x9b, 0xe1, 0x2b, 0xb3, 0x20, 0x97, 0x76, 0x9d, 0xc7, 0x75, 0xf7, 0xfb, + 0x1d, 0x61, 0x3f, 0x17, 0xd6, 0x9f, 0xed, 0x3a, 0x87, 0xdb, 0xfb, 0x26, 0xd4, 0x12, 0x31, 0x7f, + 0x9a, 0xa8, 0xba, 0xa5, 0xaf, 0x23, 0xaf, 0x97, 0x7d, 0x07, 0xcb, 0x47, 0x32, 0x07, 0x37, 0xcd, + 0x11, 0xed, 0x9f, 0x42, 0x3d, 0x83, 0xff, 0xee, 0x75, 0x3c, 0x59, 0x2e, 0x56, 0x1f, 0xd9, 0x5e, + 0x27, 0xa2, 0x9c, 0x51, 0xe9, 0x0b, 0xfa, 0x35, 0x61, 0xb7, 0x73, 0x2a, 0xb6, 0x58, 0x57, 0xc2, + 0x64, 0x36, 0x95, 0xd8, 0x3d, 0xaf, 0x31, 0xc5, 0xa6, 0x0f, 0xd8, 0xd7, 0xc3, 0xae, 0x82, 0xc5, + 0x03, 0x23, 0x86, 0x5e, 0x21, 0xbc, 0x1d, 0x45, 0xab, 0x3d, 0x60, 0xbd, 0x30, 0x99, 0xbc, 0xc5, + 0x36, 0xab, 0x62, 0x0b, 0x4e, 0x5f, 0xe2, 0x5f, 0x93, 0x21, 0x4f, 0xb7, 0x20, 0xd1, 0x6b, 0x33, + 0x09, 0x2e, 0xc8, 0x77, 0x78, 0x17, 0x42, 0xff, 0x3d, 0xc9, 0x9a, 0x03, 0xe7, 0x6a, 0x98, 0x4d, + 0xe4, 0x6a, 0xc8, 0x9f, 0xe3, 0x14, 0x68, 0x47, 0xb4, 0x8e, 0x29, 0x4f, 0x27, 0x93, 0xb4, 0xb0, + 0xbe, 0x0c, 0xa5, 0x8f, 0xf7, 0x4f, 0xe7, 0x60, 0x86, 0x16, 0x7d, 0x5e, 0x6f, 0x6f, 0x61, 0x07, + 0xbd, 0x45, 0xfa, 0xee, 0x41, 0x5d, 0xa9, 0xc2, 0xcc, 0x25, 0xc2, 0x36, 0xbd, 0x91, 0x85, 0xad, + 0x5c, 0xdc, 0x14, 0xbb, 0xee, 0x41, 0xeb, 0xe9, 0xdd, 0xe1, 0xc2, 0xfd, 0xef, 0xca, 0x98, 0x2e, + 0xf8, 0x53, 0x07, 0xae, 0x3c, 0x31, 0xb2, 0xc2, 0x49, 0xca, 0x49, 0xc8, 0xef, 0xe9, 0xf8, 0x52, + 0xa5, 0xcd, 0xac, 0x5b, 0xf6, 0x86, 0xfe, 0x48, 0x78, 0xdf, 0x36, 0x0c, 0x37, 0xe3, 0x25, 0x5d, + 0x2d, 0x14, 0xdb, 0xbd, 0x1d, 0xc8, 0xd6, 0x18, 0xce, 0x14, 0xf3, 0xf7, 0xa8, 0x96, 0x12, 0x28, + 0x62, 0x94, 0xe1, 0xcc, 0x87, 0xf2, 0x88, 0x3d, 0xb1, 0x42, 0x05, 0x30, 0xe2, 0x2b, 0x56, 0xc5, + 0xe2, 0x4b, 0x0c, 0x28, 0x3a, 0x7d, 0xc9, 0xbf, 0x5a, 0x86, 0xa9, 0x3a, 0x76, 0x96, 0x74, 0xdc, + 0x69, 0xdb, 0xc8, 0x3a, 0xb8, 0x69, 0x74, 0x0b, 0xe4, 0x37, 0x09, 0xb1, 0x41, 0xe7, 0x16, 0x58, + 0x36, 0xf4, 0x4a, 0x49, 0x74, 0x47, 0x98, 0xad, 0xbe, 0x79, 0xdc, 0x8e, 0x04, 0x26, 0x31, 0x8f, + 0xde, 0xf8, 0x92, 0xc7, 0x10, 0xd8, 0x56, 0x86, 0x19, 0x76, 0xf1, 0x62, 0xb1, 0xa3, 0x6f, 0x19, + 0x68, 0x77, 0x04, 0x2d, 0x44, 0xb9, 0x15, 0x72, 0x9a, 0x4b, 0x8d, 0x6d, 0xbd, 0xa2, 0xbe, 0x9d, + 0x27, 0x29, 0x4f, 0xa5, 0x19, 0x13, 0x84, 0x91, 0x0c, 0x14, 0xdb, 0xe3, 0x79, 0x8c, 0x61, 0x24, + 0x07, 0x16, 0x9e, 0x3e, 0x62, 0x9f, 0x97, 0xe1, 0x38, 0x63, 0xe0, 0x1c, 0xb6, 0x1c, 0xbd, 0xa5, + 0x75, 0x28, 0x72, 0x2f, 0xcc, 0x8c, 0x02, 0xba, 0x15, 0x98, 0xdd, 0x0b, 0x93, 0x65, 0x10, 0x9e, + 0xed, 0x0b, 0x21, 0xc7, 0x80, 0xca, 0xff, 0x98, 0x20, 0x1c, 0x1f, 0x27, 0x55, 0x8e, 0xe6, 0x18, + 0xc3, 0xf1, 0x09, 0x33, 0x91, 0x3e, 0xc4, 0x2f, 0x61, 0xa1, 0x79, 0x82, 0xee, 0xf3, 0x33, 0xc2, + 0xd8, 0x6e, 0xc0, 0x34, 0xc1, 0x92, 0xfe, 0xc8, 0x96, 0x21, 0x62, 0x94, 0xd8, 0xef, 0x77, 0xd8, + 0x85, 0x61, 0xfe, 0xbf, 0x6a, 0x98, 0x0e, 0x3a, 0x0f, 0x10, 0x7c, 0x0a, 0x77, 0xd2, 0x99, 0xa8, + 0x4e, 0x5a, 0x12, 0xeb, 0xa4, 0x5f, 0x23, 0x1c, 0x2c, 0xa5, 0x3f, 0xdb, 0x07, 0x57, 0x0f, 0xb1, + 0x30, 0x19, 0x83, 0x4b, 0x4f, 0x5f, 0x2f, 0x5e, 0x9e, 0xed, 0xbd, 0x61, 0xff, 0xfd, 0x23, 0x99, + 0x4f, 0x85, 0xfb, 0x03, 0xb9, 0xa7, 0x3f, 0x38, 0x80, 0x25, 0x7d, 0x23, 0x1c, 0xa5, 0x45, 0x94, + 0x7c, 0xb6, 0x72, 0x34, 0x14, 0x44, 0x4f, 0x32, 0xfa, 0xc0, 0x10, 0x4a, 0x30, 0xe8, 0xfa, 0xff, + 0xb8, 0x4e, 0x2e, 0x99, 0xb1, 0x9b, 0x54, 0x41, 0xa2, 0x38, 0x1b, 0x83, 0x5b, 0x68, 0x96, 0x5a, + 0xbb, 0x1b, 0xe4, 0x4e, 0x37, 0xf4, 0x97, 0xd9, 0x51, 0x8c, 0x08, 0xf7, 0x41, 0x96, 0xb8, 0xb8, + 0xcb, 0x91, 0x4b, 0x1a, 0x41, 0x91, 0xc1, 0x85, 0x7b, 0xf8, 0x61, 0x67, 0xe5, 0x88, 0x4a, 0xfe, + 0x54, 0x6e, 0x82, 0xa3, 0x17, 0xb4, 0xd6, 0xc5, 0x2d, 0xcb, 0xdc, 0x25, 0xb7, 0x5f, 0x99, 0xec, + 0x1a, 0x2d, 0x72, 0x1d, 0x21, 0xff, 0x41, 0xb9, 0xdd, 0x33, 0x1d, 0x72, 0x83, 0x4c, 0x87, 0x95, + 0x23, 0xcc, 0x78, 0x50, 0x6e, 0xf3, 0x3b, 0x9d, 0x7c, 0x6c, 0xa7, 0xb3, 0x72, 0xc4, 0xeb, 0x76, + 0x94, 0x45, 0x98, 0x6c, 0xeb, 0x7b, 0x64, 0xab, 0x9a, 0xcc, 0xba, 0x06, 0x1d, 0x5d, 0x5e, 0xd4, + 0xf7, 0xe8, 0xc6, 0xf6, 0xca, 0x11, 0xd5, 0xff, 0x53, 0x59, 0x86, 0x29, 0xb2, 0x2d, 0x40, 0xc8, + 0x4c, 0x26, 0x3a, 0x96, 0xbc, 0x72, 0x44, 0x0d, 0xfe, 0x75, 0xad, 0x8f, 0x2c, 0x39, 0xfb, 0x71, + 0xaf, 0xb7, 0xdd, 0x9e, 0x49, 0xb4, 0xdd, 0xee, 0xca, 0x82, 0x6e, 0xb8, 0x9f, 0x84, 0x5c, 0x8b, + 0x48, 0x58, 0x62, 0x12, 0xa6, 0xaf, 0xca, 0x5d, 0x90, 0xdd, 0xd1, 0x2c, 0x6f, 0xf2, 0x7c, 0xc3, + 0x60, 0xba, 0x6b, 0x9a, 0x75, 0xd1, 0x45, 0xd0, 0xfd, 0x6b, 0x61, 0x02, 0x72, 0x44, 0x70, 0xfe, + 0x03, 0x7a, 0x7d, 0x96, 0x9a, 0x21, 0x25, 0xd3, 0x70, 0x87, 0xfd, 0x86, 0xe9, 0x1d, 0x90, 0xf9, + 0xa3, 0xcc, 0x68, 0x2c, 0xc8, 0xbe, 0x57, 0xd2, 0xcb, 0x91, 0x57, 0xd2, 0xf7, 0xdc, 0x8d, 0x9c, + 0xed, 0xbd, 0x1b, 0x39, 0x58, 0x3e, 0xc8, 0x0d, 0x76, 0x54, 0xf9, 0xf3, 0x21, 0x4c, 0x97, 0x5e, + 0x41, 0x44, 0xcf, 0xc0, 0x3b, 0xba, 0x11, 0xaa, 0xb3, 0xf7, 0x9a, 0xb0, 0x53, 0x4a, 0x6a, 0xd4, + 0x0c, 0x60, 0x2f, 0xfd, 0xbe, 0xe9, 0x77, 0xb2, 0x70, 0x8a, 0xde, 0xc0, 0xbd, 0x87, 0x1b, 0x26, + 0x7f, 0xdf, 0x24, 0xfa, 0xe8, 0x48, 0x94, 0xa6, 0xcf, 0x80, 0x23, 0xf7, 0x1d, 0x70, 0xf6, 0x1d, + 0x52, 0xce, 0x0e, 0x38, 0xa4, 0x9c, 0x4b, 0xb6, 0x72, 0xf8, 0xee, 0xb0, 0xfe, 0xac, 0xf3, 0xfa, + 0x73, 0x67, 0x04, 0x40, 0xfd, 0xe4, 0x32, 0x12, 0xfb, 0xe6, 0x4d, 0xbe, 0xa6, 0xd4, 0x39, 0x4d, + 0xb9, 0x77, 0x78, 0x46, 0xd2, 0xd7, 0x96, 0x3f, 0xcc, 0xc2, 0x15, 0x01, 0x33, 0x55, 0x7c, 0x89, + 0x29, 0xca, 0xa7, 0x46, 0xa2, 0x28, 0xc9, 0x63, 0x20, 0xa4, 0xad, 0x31, 0x7f, 0x2a, 0x7c, 0x76, + 0xa8, 0x17, 0x28, 0x5f, 0x36, 0x11, 0xca, 0x72, 0x12, 0xf2, 0xb4, 0x87, 0x61, 0xd0, 0xb0, 0xb7, + 0x84, 0xdd, 0x8d, 0xd8, 0x89, 0x23, 0x51, 0xde, 0xc6, 0xa0, 0x3f, 0x6c, 0x5d, 0xa3, 0xb1, 0x6b, + 0x19, 0x15, 0xc3, 0x31, 0xd1, 0x4f, 0x8c, 0x44, 0x71, 0x7c, 0x6f, 0x38, 0x79, 0x18, 0x6f, 0xb8, + 0xa1, 0x56, 0x39, 0xbc, 0x1a, 0x1c, 0xca, 0x2a, 0x47, 0x44, 0xe1, 0xe9, 0xe3, 0xf7, 0x46, 0x19, + 0x4e, 0xb2, 0xc9, 0xd6, 0x02, 0x6f, 0x21, 0xa2, 0x07, 0x47, 0x01, 0xe4, 0x71, 0xcf, 0x4c, 0x62, + 0xb7, 0x9c, 0x91, 0x17, 0xfe, 0xa4, 0x54, 0xec, 0xfd, 0x0e, 0xdc, 0x74, 0xb0, 0x87, 0xc3, 0x91, + 0x20, 0x25, 0x76, 0xad, 0x43, 0x02, 0x36, 0xd2, 0xc7, 0xec, 0xc5, 0x32, 0xe4, 0xe9, 0x39, 0x2d, + 0xb4, 0x91, 0x8a, 0xc3, 0x04, 0x1f, 0xe5, 0x59, 0x60, 0x47, 0x2e, 0xf1, 0x25, 0xf7, 0xe9, 0xed, + 0xc5, 0x1d, 0xd2, 0x2d, 0xf6, 0xdf, 0x90, 0x60, 0xba, 0x8e, 0x9d, 0x92, 0x66, 0x59, 0xba, 0xb6, + 0x35, 0x2a, 0x8f, 0x6f, 0x51, 0xef, 0x61, 0xf4, 0xcd, 0x8c, 0xe8, 0x79, 0x1a, 0x7f, 0x21, 0xdc, + 0x63, 0x35, 0x22, 0x96, 0xe0, 0xa3, 0x42, 0x67, 0x66, 0x06, 0x51, 0x1b, 0x83, 0xc7, 0xb6, 0x04, + 0x13, 0xde, 0x59, 0xbc, 0x5b, 0xb8, 0xf3, 0x99, 0xdb, 0xce, 0x8e, 0x77, 0x0c, 0x86, 0x3c, 0xef, + 0x3f, 0x03, 0x86, 0x5e, 0x96, 0xd0, 0x51, 0x3e, 0xfe, 0x20, 0x61, 0xb2, 0x36, 0x96, 0xc4, 0x1d, + 0xfe, 0xb0, 0x8e, 0x0e, 0xfe, 0xfe, 0x04, 0x5b, 0x8e, 0x5c, 0xd5, 0x1c, 0xfc, 0x30, 0xfa, 0x8c, + 0x0c, 0x13, 0x75, 0xec, 0xb8, 0xe3, 0x2d, 0x77, 0xb9, 0xe9, 0xb0, 0x1a, 0xae, 0x84, 0x56, 0x3c, + 0xa6, 0xd8, 0x1a, 0xc6, 0xfd, 0x30, 0xd5, 0xb5, 0xcc, 0x16, 0xb6, 0x6d, 0xb6, 0x7a, 0x11, 0x76, + 0x54, 0xeb, 0x37, 0xfa, 0x13, 0xd6, 0xe6, 0xd7, 0xbd, 0x7f, 0xd4, 0xe0, 0xf7, 0xa4, 0x66, 0x00, + 0xa5, 0xc4, 0x2a, 0x38, 0x6e, 0x33, 0x20, 0xae, 0xf0, 0xf4, 0x81, 0xfe, 0x84, 0x0c, 0x33, 0x75, + 0xec, 0xf8, 0x52, 0x4c, 0xb0, 0xc9, 0x11, 0x0d, 0x2f, 0x07, 0xa5, 0x7c, 0x30, 0x28, 0xc5, 0xaf, + 0x06, 0xe4, 0xa5, 0xe9, 0x13, 0x1b, 0xe3, 0xd5, 0x80, 0x62, 0x1c, 0x8c, 0xe1, 0xf8, 0xda, 0x13, + 0x61, 0x8a, 0xf0, 0x42, 0x1a, 0xec, 0xcf, 0x66, 0x83, 0xc6, 0xfb, 0xd9, 0x94, 0x1a, 0xef, 0xdd, + 0x90, 0xdb, 0xd1, 0xac, 0x8b, 0x36, 0x69, 0xb8, 0xd3, 0x22, 0x66, 0xfb, 0x9a, 0x9b, 0x5d, 0xa5, + 0x7f, 0xf5, 0xf7, 0xd3, 0xcc, 0x25, 0xf3, 0xd3, 0x7c, 0x54, 0x4a, 0x34, 0x12, 0xd2, 0xb9, 0xc3, + 0x08, 0x9b, 0x7c, 0x82, 0x71, 0x33, 0xa6, 0xec, 0xf4, 0x95, 0xe3, 0x85, 0x32, 0x4c, 0xba, 0xe3, + 0x36, 0xb1, 0xc7, 0xcf, 0x1f, 0x5c, 0x1d, 0xfa, 0x1b, 0xfa, 0x09, 0x7b, 0x60, 0x4f, 0x22, 0xa3, + 0x33, 0xef, 0x13, 0xf4, 0xc0, 0x71, 0x85, 0xa7, 0x8f, 0xc7, 0x9b, 0x29, 0x1e, 0xa4, 0x3d, 0xa0, + 0xdf, 0x92, 0x41, 0x5e, 0xc6, 0xce, 0xb8, 0xad, 0xc8, 0x37, 0x08, 0x87, 0x38, 0xe2, 0x04, 0x46, + 0x78, 0x9e, 0x5f, 0xc6, 0xa3, 0x69, 0x40, 0x62, 0xb1, 0x8d, 0x84, 0x18, 0x48, 0x1f, 0xb5, 0xb7, + 0x53, 0xd4, 0xe8, 0xe6, 0xc2, 0x8f, 0x8f, 0xa0, 0x57, 0x1d, 0xef, 0xc2, 0x87, 0x27, 0x40, 0x42, + 0xe3, 0xb0, 0xda, 0x5b, 0xbf, 0xc2, 0xc7, 0x72, 0x15, 0x1f, 0xb8, 0x8d, 0x7d, 0x1b, 0xb7, 0x2e, + 0xe2, 0x36, 0xfa, 0x91, 0x83, 0x43, 0x77, 0x0a, 0x26, 0x5a, 0x94, 0x1a, 0x01, 0x6f, 0x52, 0xf5, + 0x5e, 0x13, 0xdc, 0x2b, 0xcd, 0x77, 0x44, 0xf4, 0xf7, 0x31, 0xde, 0x2b, 0x2d, 0x50, 0xfc, 0x18, + 0xcc, 0x16, 0x3a, 0xcb, 0xa8, 0xb4, 0x4c, 0x03, 0xfd, 0x97, 0x83, 0xc3, 0x72, 0x0d, 0x4c, 0xe9, + 0x2d, 0xd3, 0x20, 0x61, 0x28, 0xbc, 0x43, 0x40, 0x7e, 0x82, 0xf7, 0xb5, 0xbc, 0x63, 0x3e, 0xa4, + 0xb3, 0x5d, 0xf3, 0x20, 0x61, 0x58, 0x63, 0xc2, 0x65, 0xfd, 0xb0, 0x8c, 0x89, 0x3e, 0x65, 0xa7, + 0x0f, 0xd9, 0x07, 0x02, 0xef, 0x36, 0xda, 0x15, 0x3e, 0x2e, 0x56, 0x81, 0x87, 0x19, 0xce, 0xc2, + 0xb5, 0x38, 0x94, 0xe1, 0x2c, 0x86, 0x81, 0x31, 0xdc, 0x58, 0x11, 0xe0, 0x98, 0xfa, 0x1a, 0xf0, + 0x01, 0xd0, 0x19, 0x9d, 0x79, 0x38, 0x24, 0x3a, 0x87, 0x63, 0x22, 0xbe, 0x8b, 0x85, 0xc8, 0x64, + 0x16, 0x0f, 0xfa, 0xaf, 0xa3, 0x00, 0xe7, 0xce, 0x61, 0xfc, 0x15, 0xa8, 0xb7, 0x42, 0x82, 0x1b, + 0xb1, 0xf7, 0x49, 0xd0, 0xa5, 0x32, 0xc6, 0xbb, 0xe2, 0x45, 0xca, 0x4f, 0x1f, 0xc0, 0x17, 0xc8, + 0x30, 0x47, 0x7c, 0x04, 0x3a, 0x58, 0xb3, 0x68, 0x47, 0x39, 0x12, 0x47, 0xf9, 0x37, 0x0b, 0x07, + 0xf8, 0xe1, 0xe5, 0x10, 0xf0, 0x31, 0x12, 0x28, 0xc4, 0xa2, 0xfb, 0x08, 0xb2, 0x30, 0x96, 0x6d, + 0x94, 0x82, 0xcf, 0x02, 0x53, 0xf1, 0xd1, 0xe0, 0x91, 0xd0, 0x23, 0x97, 0x17, 0x86, 0xd7, 0xd8, + 0xc6, 0xec, 0x91, 0x2b, 0xc2, 0x44, 0xfa, 0x98, 0xfc, 0xd6, 0xad, 0x6c, 0xc1, 0xb9, 0x41, 0x2e, + 0x8c, 0x7f, 0x45, 0xd6, 0x3f, 0xd1, 0xf6, 0x89, 0x91, 0x78, 0x60, 0x1e, 0x20, 0x20, 0xbe, 0x02, + 0x59, 0xcb, 0xbc, 0x44, 0x97, 0xb6, 0x66, 0x55, 0xf2, 0x4c, 0xaf, 0xa7, 0xec, 0xec, 0xee, 0x18, + 0xf4, 0x64, 0xe8, 0xac, 0xea, 0xbd, 0x2a, 0xd7, 0xc3, 0xec, 0x25, 0xdd, 0xd9, 0x5e, 0xc1, 0x5a, + 0x1b, 0x5b, 0xaa, 0x79, 0x89, 0x78, 0xcc, 0x4d, 0xaa, 0x7c, 0x22, 0xef, 0xbf, 0x22, 0x60, 0x5f, + 0x92, 0x5b, 0xe4, 0xc7, 0x72, 0xfc, 0x2d, 0x89, 0xe5, 0x19, 0xcd, 0x55, 0xfa, 0x0a, 0xf3, 0x0e, + 0x19, 0xa6, 0x54, 0xf3, 0x12, 0x53, 0x92, 0xff, 0xe3, 0x70, 0x75, 0x24, 0xf1, 0x44, 0x8f, 0x48, + 0xce, 0x67, 0x7f, 0xec, 0x13, 0xbd, 0xd8, 0xe2, 0xc7, 0x72, 0x72, 0x69, 0x46, 0x35, 0x2f, 0xd5, + 0xb1, 0x43, 0x5b, 0x04, 0x6a, 0x8e, 0xc8, 0xc9, 0x5a, 0xb7, 0x29, 0x41, 0x36, 0x0f, 0xf7, 0xdf, + 0x93, 0xee, 0x22, 0xf8, 0x02, 0xf2, 0x59, 0x1c, 0xf7, 0x2e, 0xc2, 0x40, 0x0e, 0xc6, 0x10, 0x23, + 0x45, 0x86, 0x69, 0xd5, 0xbc, 0xe4, 0x0e, 0x0d, 0x4b, 0x7a, 0xa7, 0x33, 0x9a, 0x11, 0x32, 0xa9, + 0xf1, 0xef, 0x89, 0xc1, 0xe3, 0x62, 0xec, 0xc6, 0xff, 0x00, 0x06, 0xd2, 0x87, 0xe1, 0x79, 0xb4, + 0xb1, 0x78, 0x23, 0xb4, 0x31, 0x1a, 0x1c, 0x86, 0x6d, 0x10, 0x3e, 0x1b, 0x87, 0xd6, 0x20, 0xa2, + 0x38, 0x18, 0xcb, 0xce, 0xc9, 0x5c, 0x89, 0x0c, 0xf3, 0xa3, 0x6d, 0x13, 0x6f, 0x4d, 0xe6, 0x9a, + 0xc8, 0x86, 0x5d, 0x8e, 0x91, 0x91, 0xa0, 0x91, 0xc0, 0x05, 0x51, 0x80, 0x87, 0xf4, 0xf1, 0x78, + 0xaf, 0x0c, 0x33, 0x94, 0x85, 0xc7, 0x89, 0x15, 0x30, 0x54, 0xa3, 0x0a, 0xd7, 0xe0, 0x70, 0x1a, + 0x55, 0x0c, 0x07, 0x63, 0xb9, 0x15, 0xd4, 0xb5, 0xe3, 0x86, 0x38, 0x3e, 0x1e, 0x85, 0xe0, 0xd0, + 0xc6, 0xd8, 0x08, 0x8f, 0x90, 0x0f, 0x63, 0x8c, 0x1d, 0xd2, 0x31, 0xf2, 0xe7, 0xf9, 0xad, 0x68, + 0x94, 0x18, 0x1c, 0xa0, 0x29, 0x8c, 0x10, 0x86, 0x21, 0x9b, 0xc2, 0x21, 0x21, 0xf1, 0x05, 0x19, + 0x80, 0x32, 0xb0, 0x66, 0xee, 0x91, 0xcb, 0x7c, 0x46, 0xd0, 0x9d, 0xf5, 0xba, 0xd5, 0xcb, 0x03, + 0xdc, 0xea, 0x13, 0x86, 0x70, 0x49, 0xba, 0x12, 0x18, 0x92, 0xb2, 0x5b, 0xc9, 0xb1, 0xaf, 0x04, + 0xc6, 0x97, 0x9f, 0x3e, 0xc6, 0x8f, 0x51, 0x6b, 0x2e, 0x38, 0x60, 0xfa, 0x2b, 0x23, 0x41, 0x39, + 0x34, 0xfb, 0x97, 0xf9, 0xd9, 0xff, 0x01, 0xb0, 0x1d, 0xd6, 0x46, 0x1c, 0x74, 0x70, 0x34, 0x7d, + 0x1b, 0xf1, 0xf0, 0x0e, 0x88, 0xfe, 0x78, 0x16, 0x8e, 0xb2, 0x4e, 0xe4, 0xbb, 0x01, 0xe2, 0x84, + 0xe7, 0xf0, 0xb8, 0x4e, 0x72, 0x00, 0xca, 0xa3, 0x5a, 0x90, 0x4a, 0xb2, 0x94, 0x29, 0xc0, 0xde, + 0x58, 0x56, 0x37, 0xf2, 0xe5, 0x87, 0xbb, 0x9a, 0xd1, 0x16, 0x0f, 0xf7, 0x3b, 0x00, 0x78, 0x6f, + 0xad, 0x51, 0xe6, 0xd7, 0x1a, 0xfb, 0xac, 0x4c, 0x26, 0xde, 0xb9, 0x26, 0x22, 0xa3, 0xec, 0x8e, + 0x7d, 0xe7, 0x3a, 0xba, 0xec, 0xf4, 0x51, 0x7a, 0xab, 0x0c, 0xd9, 0xba, 0x69, 0x39, 0xe8, 0xf9, + 0x49, 0x5a, 0x27, 0x95, 0x7c, 0x00, 0x92, 0xf7, 0xae, 0x94, 0xb8, 0x5b, 0x9a, 0x6f, 0x89, 0x3f, + 0xea, 0xac, 0x39, 0x1a, 0xf1, 0xea, 0x76, 0xcb, 0x0f, 0x5d, 0xd7, 0x9c, 0x34, 0x9e, 0x0e, 0x95, + 0x5f, 0x3d, 0xfa, 0x00, 0x46, 0x6a, 0xf1, 0x74, 0x22, 0x4b, 0x4e, 0x1f, 0xb7, 0x57, 0x1d, 0x65, + 0xbe, 0xad, 0x4b, 0x7a, 0x07, 0xa3, 0xe7, 0x53, 0x97, 0x91, 0xaa, 0xb6, 0x83, 0xc5, 0x8f, 0xc4, + 0xc4, 0xba, 0xb6, 0x92, 0xf8, 0xb2, 0x72, 0x10, 0x5f, 0x36, 0x69, 0x83, 0xa2, 0x07, 0xd0, 0x29, + 0x4b, 0xe3, 0x6e, 0x50, 0x31, 0x65, 0x8f, 0x25, 0x4e, 0xe7, 0xb1, 0x3a, 0x76, 0xa8, 0x51, 0x59, + 0xf3, 0x6e, 0x60, 0xf9, 0xd1, 0x91, 0x44, 0xec, 0xf4, 0x2f, 0x78, 0x91, 0x7b, 0x2e, 0x78, 0x79, + 0x47, 0x18, 0x9c, 0x35, 0x1e, 0x9c, 0x1f, 0x8c, 0x16, 0x10, 0xcf, 0xe4, 0x48, 0x60, 0x7a, 0x83, + 0x0f, 0xd3, 0x3a, 0x07, 0xd3, 0x5d, 0x43, 0x72, 0x91, 0x3e, 0x60, 0x3f, 0x97, 0x83, 0xa3, 0x74, + 0xd2, 0x5f, 0x34, 0xda, 0x2c, 0xc2, 0xea, 0x6b, 0xa5, 0x43, 0xde, 0x6c, 0xdb, 0x1f, 0x82, 0x95, + 0x8b, 0xe5, 0x9c, 0xeb, 0xbd, 0x1d, 0x7f, 0x81, 0x86, 0x73, 0x75, 0x3b, 0x51, 0xb2, 0xd3, 0x26, + 0x7e, 0x43, 0xbe, 0xff, 0x1f, 0x7f, 0x97, 0xd1, 0x84, 0xf8, 0x5d, 0x46, 0x7f, 0x96, 0x6c, 0xdd, + 0x8e, 0x14, 0xdd, 0x23, 0xf0, 0x94, 0x6d, 0xa7, 0x04, 0x2b, 0x7a, 0x02, 0xdc, 0x7d, 0x6f, 0xb8, + 0x93, 0x05, 0x11, 0x44, 0x86, 0x74, 0x27, 0x23, 0x04, 0x0e, 0xd3, 0x9d, 0x6c, 0x10, 0x03, 0x63, + 0xb8, 0xd5, 0x3e, 0xc7, 0x76, 0xf3, 0x49, 0xbb, 0x41, 0x7f, 0x2d, 0xa5, 0x3e, 0x4a, 0x7f, 0x2b, + 0x93, 0xc8, 0xff, 0x99, 0xf0, 0x15, 0x3f, 0x4c, 0x27, 0xf1, 0x68, 0x8e, 0x23, 0x37, 0x86, 0x75, + 0x23, 0x89, 0xf8, 0xa2, 0x9f, 0xd7, 0xdb, 0xce, 0xf6, 0x88, 0x4e, 0x74, 0x5c, 0x72, 0x69, 0x79, + 0xd7, 0x23, 0x93, 0x17, 0xf4, 0x6f, 0x99, 0x44, 0x21, 0xa4, 0x7c, 0x91, 0x10, 0xb6, 0x22, 0x44, + 0x9c, 0x20, 0xf0, 0x53, 0x2c, 0xbd, 0x31, 0x6a, 0xf4, 0x39, 0xbd, 0x8d, 0xcd, 0xc7, 0xa1, 0x46, + 0x13, 0xbe, 0x46, 0xa7, 0xd1, 0x71, 0xe4, 0xbe, 0x47, 0x35, 0xda, 0x17, 0xc9, 0x88, 0x34, 0x3a, + 0x96, 0x5e, 0xfa, 0x32, 0x7e, 0xd9, 0x0c, 0x9b, 0x48, 0xad, 0xea, 0xc6, 0x45, 0xf4, 0xcf, 0x79, + 0xef, 0x62, 0xe6, 0xf3, 0xba, 0xb3, 0xcd, 0x62, 0xc1, 0xfc, 0xa1, 0xf0, 0xdd, 0x28, 0x43, 0xc4, + 0x7b, 0xe1, 0xc3, 0x49, 0xe5, 0xf6, 0x85, 0x93, 0x2a, 0xc2, 0xac, 0x6e, 0x38, 0xd8, 0x32, 0xb4, + 0xce, 0x52, 0x47, 0xdb, 0xb2, 0x4f, 0x4d, 0xf4, 0xbd, 0xbc, 0xae, 0x12, 0xca, 0xa3, 0xf2, 0x7f, + 0x84, 0xaf, 0xaf, 0x9c, 0xe4, 0xaf, 0xaf, 0x8c, 0x88, 0x7e, 0x35, 0x15, 0x1d, 0xfd, 0xca, 0x8f, + 0x6e, 0x05, 0x83, 0x83, 0x63, 0x8b, 0xda, 0xc6, 0x09, 0xc3, 0xfd, 0xdd, 0x22, 0x18, 0x85, 0xcd, + 0x0f, 0xfd, 0xf8, 0x1b, 0x72, 0xa2, 0xd5, 0x3d, 0x57, 0x11, 0xe6, 0x7b, 0x95, 0x20, 0xb1, 0x85, + 0x1a, 0xae, 0xbc, 0xdc, 0x53, 0x79, 0xdf, 0xe4, 0xc9, 0x0a, 0x98, 0x3c, 0x61, 0xa5, 0xca, 0x89, + 0x29, 0x55, 0x92, 0xc5, 0x42, 0x91, 0xda, 0x8e, 0xe1, 0x34, 0x52, 0x0e, 0x8e, 0x79, 0xd1, 0x6e, + 0xbb, 0x5d, 0xac, 0x59, 0x9a, 0xd1, 0xc2, 0xe8, 0x03, 0xd2, 0x28, 0xcc, 0xde, 0x25, 0x98, 0xd4, + 0x5b, 0xa6, 0x51, 0xd7, 0x9f, 0xed, 0x5d, 0x2e, 0x17, 0x1f, 0x64, 0x9d, 0x48, 0xa4, 0xc2, 0xfe, + 0x50, 0xfd, 0x7f, 0x95, 0x0a, 0x4c, 0xb5, 0x34, 0xab, 0x4d, 0x83, 0xf0, 0xe5, 0x7a, 0x2e, 0x72, + 0x8a, 0x24, 0x54, 0xf2, 0x7e, 0x51, 0x83, 0xbf, 0x95, 0x1a, 0x2f, 0xc4, 0x7c, 0x4f, 0x34, 0x8f, + 0x48, 0x62, 0x8b, 0xc1, 0x4f, 0x9c, 0xcc, 0x5d, 0xe9, 0x58, 0xb8, 0x43, 0xee, 0xa0, 0xa7, 0x3d, + 0xc4, 0x94, 0x1a, 0x24, 0x24, 0x5d, 0x1e, 0x20, 0x45, 0xed, 0x43, 0x63, 0xdc, 0xcb, 0x03, 0x42, + 0x5c, 0xa4, 0xaf, 0x99, 0x6f, 0xca, 0xc3, 0x2c, 0xed, 0xd5, 0x98, 0x38, 0xd1, 0x0b, 0xc8, 0x15, + 0xd2, 0xce, 0x03, 0xf8, 0x32, 0xaa, 0x1f, 0x7c, 0x4c, 0x2e, 0x80, 0x7c, 0xd1, 0x0f, 0x38, 0xe8, + 0x3e, 0x26, 0xdd, 0xb7, 0xf7, 0xf8, 0x9a, 0xa7, 0x3c, 0x8d, 0x7b, 0xdf, 0x3e, 0xbe, 0xf8, 0xf4, + 0xf1, 0xf9, 0x79, 0x19, 0xe4, 0x62, 0xbb, 0x8d, 0x5a, 0x07, 0x87, 0xe2, 0x0c, 0x4c, 0x7b, 0x6d, + 0x26, 0x88, 0x01, 0x19, 0x4e, 0x4a, 0xba, 0x08, 0xea, 0xcb, 0xa6, 0xd8, 0x1e, 0xfb, 0xae, 0x42, + 0x4c, 0xd9, 0xe9, 0x83, 0xf2, 0x2b, 0x13, 0xac, 0xd1, 0x2c, 0x98, 0xe6, 0x45, 0x72, 0x54, 0xe6, + 0xf9, 0x32, 0xe4, 0x96, 0xb0, 0xd3, 0xda, 0x1e, 0x51, 0x9b, 0xd9, 0xb5, 0x3a, 0x5e, 0x9b, 0xd9, + 0x77, 0x1f, 0xfe, 0x60, 0x1b, 0xd6, 0x63, 0x6b, 0x9e, 0xb0, 0x34, 0xee, 0xe8, 0xce, 0xb1, 0xa5, + 0xa7, 0x0f, 0xce, 0xbf, 0xc9, 0x30, 0xe7, 0xaf, 0x70, 0x51, 0x4c, 0x7e, 0x2e, 0xf3, 0x78, 0x5b, + 0xef, 0x44, 0x9f, 0x4a, 0x16, 0x22, 0xcd, 0x97, 0x29, 0x5f, 0xb3, 0x94, 0x17, 0x16, 0x13, 0x04, + 0x4f, 0x13, 0x63, 0x70, 0x0c, 0x33, 0x78, 0x19, 0x26, 0x09, 0x43, 0x8b, 0xfa, 0x1e, 0x71, 0x1d, + 0xe4, 0x16, 0x1a, 0x9f, 0x33, 0x92, 0x85, 0xc6, 0xbb, 0xf8, 0x85, 0x46, 0xc1, 0x88, 0xc7, 0xde, + 0x3a, 0x63, 0x42, 0x5f, 0x1a, 0xf7, 0xff, 0x91, 0x2f, 0x33, 0x26, 0xf0, 0xa5, 0x19, 0x50, 0x7e, + 0xfa, 0x88, 0xfe, 0xc6, 0x7f, 0x62, 0x9d, 0xad, 0xb7, 0xa1, 0x8a, 0xfe, 0xe7, 0x31, 0xc8, 0x9e, + 0x73, 0x1f, 0xfe, 0x77, 0x70, 0x23, 0xd6, 0x4b, 0x47, 0x10, 0x9c, 0xe1, 0x1e, 0xc8, 0xba, 0xf4, + 0xd9, 0xb4, 0xe5, 0x26, 0xb1, 0xdd, 0x5d, 0x97, 0x11, 0x95, 0xfc, 0xa7, 0x9c, 0x84, 0xbc, 0x6d, + 0xee, 0x5a, 0x2d, 0xd7, 0x7c, 0x76, 0x35, 0x86, 0xbd, 0x25, 0x0d, 0x4a, 0xca, 0x91, 0x9e, 0x1f, + 0x9d, 0xcb, 0x68, 0xe8, 0x82, 0x24, 0x99, 0xbb, 0x20, 0x29, 0xc1, 0xfe, 0x81, 0x00, 0x6f, 0xe9, + 0x6b, 0xc4, 0x5f, 0x93, 0xbb, 0x02, 0xdb, 0xa3, 0x82, 0x3d, 0x42, 0x2c, 0x07, 0x55, 0x87, 0xa4, + 0x0e, 0xdf, 0xbc, 0x68, 0xfd, 0x38, 0xf0, 0x63, 0x75, 0xf8, 0x16, 0xe0, 0x61, 0x2c, 0xa7, 0xd4, + 0xf3, 0xcc, 0x49, 0xf5, 0xc1, 0x51, 0xa2, 0x9b, 0xe5, 0x94, 0xfe, 0x40, 0xe8, 0x8c, 0xd0, 0x79, + 0x75, 0x68, 0x74, 0x0e, 0xc9, 0x7d, 0xf5, 0x8f, 0x65, 0x12, 0x09, 0xd3, 0x33, 0x72, 0xc4, 0x2f, + 0x3a, 0x4a, 0x0c, 0x91, 0x3b, 0x06, 0x73, 0x71, 0xa0, 0x67, 0x87, 0x0f, 0x0d, 0xce, 0x8b, 0x2e, + 0xc4, 0xff, 0xb8, 0x43, 0x83, 0x8b, 0x32, 0x92, 0x3e, 0x90, 0xbf, 0x49, 0x2f, 0x16, 0x2b, 0xb6, + 0x1c, 0x7d, 0x6f, 0xc4, 0x2d, 0x8d, 0x1f, 0x5e, 0x12, 0x46, 0x03, 0xde, 0x27, 0x21, 0xca, 0xe1, + 0xb8, 0xa3, 0x01, 0x8b, 0xb1, 0x91, 0x3e, 0x4c, 0x5f, 0xce, 0xbb, 0xd2, 0x63, 0x6b, 0x33, 0xbf, + 0xc5, 0x56, 0x03, 0xf0, 0xc1, 0xd1, 0x3a, 0x0b, 0x33, 0xa1, 0xa9, 0xbf, 0x77, 0x61, 0x0d, 0x97, + 0x96, 0xf4, 0xa0, 0xbb, 0x2f, 0xb2, 0x91, 0x2f, 0x0c, 0x24, 0x58, 0xf0, 0x15, 0x61, 0x62, 0x2c, + 0xf7, 0xc1, 0x79, 0x63, 0xd8, 0x98, 0xb0, 0xfa, 0xc3, 0x30, 0x56, 0x35, 0x1e, 0xab, 0x3b, 0x44, + 0xc4, 0x24, 0x36, 0xa6, 0x09, 0xcd, 0x1b, 0xdf, 0xe8, 0xc3, 0xa5, 0x72, 0x70, 0xdd, 0x33, 0x34, + 0x1f, 0xe9, 0x23, 0xf6, 0xab, 0xb4, 0x3b, 0xac, 0x53, 0x93, 0x7d, 0x34, 0xdd, 0x21, 0x9b, 0x0d, + 0xc8, 0xdc, 0x6c, 0x20, 0xa1, 0xbf, 0x7d, 0xe0, 0x46, 0xea, 0x31, 0x37, 0x08, 0xa2, 0xec, 0x88, + 0xfd, 0xed, 0x07, 0x72, 0x90, 0x3e, 0x38, 0xff, 0x28, 0x03, 0x2c, 0x5b, 0xe6, 0x6e, 0xb7, 0x66, + 0xb5, 0xb1, 0x85, 0xfe, 0x36, 0x98, 0x00, 0xfc, 0xc2, 0x08, 0x26, 0x00, 0xeb, 0x00, 0x5b, 0x3e, + 0x71, 0xa6, 0xe1, 0xb7, 0x8a, 0x99, 0xfb, 0x01, 0x53, 0x6a, 0x88, 0x06, 0x7f, 0xe5, 0xec, 0x0f, + 0xf1, 0x18, 0xc7, 0xf5, 0x59, 0x01, 0xb9, 0x51, 0x4e, 0x00, 0xde, 0xec, 0x63, 0xdd, 0xe0, 0xb0, + 0xbe, 0xef, 0x00, 0x9c, 0xa4, 0x8f, 0xf9, 0x3f, 0x4d, 0xc0, 0x34, 0xdd, 0xae, 0xa3, 0x32, 0xfd, + 0xfb, 0x00, 0xf4, 0x5f, 0x19, 0x01, 0xe8, 0x1b, 0x30, 0x63, 0x06, 0xd4, 0x69, 0x9f, 0x1a, 0x5e, + 0x80, 0x89, 0x85, 0x3d, 0xc4, 0x97, 0xca, 0x91, 0x41, 0xef, 0x0b, 0x23, 0xaf, 0xf2, 0xc8, 0xdf, + 0x15, 0x23, 0xef, 0x10, 0xc5, 0x51, 0x42, 0xff, 0x16, 0x1f, 0xfa, 0x0d, 0x0e, 0xfa, 0xe2, 0x41, + 0x58, 0x19, 0x43, 0xb8, 0x7d, 0x19, 0xb2, 0xe4, 0x74, 0xdc, 0xef, 0xa4, 0x38, 0xbf, 0x3f, 0x05, + 0x13, 0xa4, 0xc9, 0xfa, 0xf3, 0x0e, 0xef, 0xd5, 0xfd, 0xa2, 0x6d, 0x3a, 0xd8, 0xf2, 0x3d, 0x16, + 0xbc, 0x57, 0x97, 0x07, 0xcf, 0x2b, 0xd9, 0x3e, 0x95, 0xa7, 0x1b, 0x91, 0x7e, 0xc2, 0xd0, 0x93, + 0x92, 0xb0, 0xc4, 0x47, 0x76, 0x5e, 0x6e, 0x98, 0x49, 0xc9, 0x00, 0x46, 0xd2, 0x07, 0xfe, 0x2f, + 0xb3, 0x70, 0x8a, 0xae, 0x2a, 0x2d, 0x59, 0xe6, 0x4e, 0xcf, 0xed, 0x56, 0xfa, 0xc1, 0x75, 0xe1, + 0x06, 0x98, 0x73, 0x38, 0x7f, 0x6c, 0xa6, 0x13, 0x3d, 0xa9, 0xe8, 0xcf, 0xc3, 0x3e, 0x15, 0xcf, + 0xe2, 0x91, 0x5c, 0x88, 0x11, 0x60, 0x14, 0xef, 0x89, 0x17, 0xea, 0x05, 0x19, 0x0d, 0x2d, 0x52, + 0xc9, 0x43, 0xad, 0x59, 0xfa, 0x3a, 0x95, 0x13, 0xd1, 0xa9, 0x77, 0xfa, 0x3a, 0xf5, 0x23, 0x9c, + 0x4e, 0x2d, 0x1f, 0x5c, 0x24, 0xe9, 0xeb, 0xd6, 0x2b, 0xfc, 0x8d, 0x21, 0x7f, 0xdb, 0x6e, 0x27, + 0x85, 0xcd, 0xba, 0xb0, 0x3f, 0x52, 0x96, 0xf3, 0x47, 0xe2, 0xef, 0xa3, 0x48, 0x30, 0x13, 0xe6, + 0xb9, 0x8e, 0xd0, 0xa5, 0x39, 0x90, 0x74, 0x8f, 0x3b, 0x49, 0x6f, 0x0f, 0x35, 0xd7, 0x8d, 0x2d, + 0x68, 0x0c, 0x6b, 0x4b, 0x73, 0x90, 0x5f, 0xd2, 0x3b, 0x0e, 0xb6, 0xd0, 0x63, 0x6c, 0xa6, 0xfb, + 0x8a, 0x14, 0x07, 0x80, 0x45, 0xc8, 0x6f, 0x92, 0xd2, 0x98, 0xc9, 0x7c, 0xb3, 0x58, 0xeb, 0xa1, + 0x1c, 0xaa, 0xec, 0xdf, 0xa4, 0xd1, 0xf9, 0x7a, 0xc8, 0x8c, 0x6c, 0x8a, 0x9c, 0x20, 0x3a, 0xdf, + 0x60, 0x16, 0xc6, 0x72, 0x31, 0x55, 0x5e, 0xc5, 0x3b, 0xee, 0x18, 0x7f, 0x31, 0x3d, 0x84, 0x0b, + 0x20, 0xeb, 0x6d, 0x9b, 0x74, 0x8e, 0x53, 0xaa, 0xfb, 0x98, 0xd4, 0x57, 0xa8, 0x57, 0x54, 0x94, + 0xe5, 0x71, 0xfb, 0x0a, 0x09, 0x71, 0x91, 0x3e, 0x66, 0xdf, 0x22, 0x8e, 0xa2, 0xdd, 0x8e, 0xd6, + 0xc2, 0x2e, 0xf7, 0xa9, 0xa1, 0x46, 0x7b, 0xb2, 0xac, 0xd7, 0x93, 0x85, 0xda, 0x69, 0xee, 0x00, + 0xed, 0x74, 0xd8, 0x65, 0x48, 0x5f, 0xe6, 0xa4, 0xe2, 0x87, 0xb6, 0x0c, 0x19, 0xcb, 0xc6, 0x18, + 0xae, 0x1d, 0xf5, 0x0e, 0xd2, 0x8e, 0xb5, 0xb5, 0x0e, 0xbb, 0x49, 0xc3, 0x84, 0x35, 0xb2, 0x43, + 0xb3, 0xc3, 0x6c, 0xd2, 0x44, 0xf3, 0x30, 0x06, 0xb4, 0xe6, 0x18, 0x5a, 0x9f, 0x64, 0xc3, 0x68, + 0xca, 0xfb, 0xa4, 0xb6, 0x69, 0x39, 0xc9, 0xf6, 0x49, 0x5d, 0xee, 0x54, 0xf2, 0x5f, 0xd2, 0x83, + 0x57, 0xfc, 0xb9, 0xea, 0x51, 0x0d, 0x9f, 0x09, 0x0e, 0x5e, 0x0d, 0x62, 0x20, 0x7d, 0x78, 0x5f, + 0x77, 0x48, 0x83, 0xe7, 0xb0, 0xcd, 0x91, 0xb5, 0x81, 0x91, 0x0d, 0x9d, 0xc3, 0x34, 0xc7, 0x68, + 0x1e, 0xd2, 0xc7, 0xeb, 0xeb, 0xa1, 0x81, 0xf3, 0x35, 0x63, 0x1c, 0x38, 0xbd, 0x96, 0x99, 0x1b, + 0xb2, 0x65, 0x0e, 0xbb, 0xff, 0xc3, 0x64, 0x3d, 0xba, 0x01, 0x73, 0x98, 0xfd, 0x9f, 0x18, 0x26, + 0xd2, 0x47, 0xfc, 0xb5, 0x32, 0xe4, 0xea, 0xe3, 0x1f, 0x2f, 0x87, 0x9d, 0x8b, 0x10, 0x59, 0xd5, + 0x47, 0x36, 0x5c, 0x0e, 0x33, 0x17, 0x89, 0x64, 0x61, 0x0c, 0x81, 0xf7, 0x8f, 0xc2, 0x0c, 0x59, + 0x12, 0xf1, 0xb6, 0x59, 0xbf, 0xce, 0x46, 0xcd, 0x47, 0x53, 0x6c, 0xab, 0xf7, 0xc3, 0xa4, 0xb7, + 0x7f, 0xc7, 0x46, 0xce, 0x79, 0xb1, 0xf6, 0xe9, 0x71, 0xa9, 0xfa, 0xff, 0x1f, 0xc8, 0x19, 0x62, + 0xe4, 0x7b, 0xb5, 0xc3, 0x3a, 0x43, 0x1c, 0xea, 0x7e, 0xed, 0x9f, 0x05, 0x23, 0xea, 0x7f, 0x49, + 0x0f, 0xf3, 0xde, 0x7d, 0xdc, 0x6c, 0x9f, 0x7d, 0xdc, 0x0f, 0x84, 0xb1, 0xac, 0xf3, 0x58, 0xde, + 0x2d, 0x2a, 0xc2, 0x11, 0x8e, 0xb5, 0x6f, 0xf5, 0xe1, 0x3c, 0xc7, 0xc1, 0xb9, 0x70, 0x20, 0x5e, + 0xc6, 0x70, 0xf0, 0x31, 0x1b, 0x8c, 0xb9, 0x1f, 0x4c, 0xb1, 0x1d, 0xf7, 0x9c, 0xaa, 0xc8, 0xee, + 0x3b, 0x55, 0xc1, 0xb5, 0xf4, 0xdc, 0x01, 0x5b, 0xfa, 0x07, 0xc3, 0xda, 0xd1, 0xe0, 0xb5, 0xe3, + 0x1e, 0x71, 0x44, 0x46, 0x37, 0x32, 0xbf, 0xcd, 0x57, 0x8f, 0xf3, 0x9c, 0x7a, 0x94, 0x0e, 0xc6, + 0x4c, 0xfa, 0xfa, 0xf1, 0x61, 0x6f, 0x42, 0x7b, 0xc8, 0xed, 0x7d, 0xd8, 0xad, 0x62, 0x4e, 0x88, + 0x23, 0x1b, 0xb9, 0x87, 0xd9, 0x2a, 0x1e, 0xc4, 0xc9, 0x18, 0x62, 0xb1, 0xcd, 0xc2, 0x34, 0xe1, + 0xe9, 0xbc, 0xde, 0xde, 0xc2, 0x0e, 0xfa, 0x0d, 0xea, 0xa3, 0xe8, 0x45, 0xbe, 0x1c, 0x51, 0x78, + 0xa2, 0xa8, 0xf3, 0xae, 0x49, 0x3d, 0x3a, 0x28, 0x93, 0xf3, 0x21, 0x06, 0xc7, 0x1d, 0x41, 0x71, + 0x20, 0x07, 0xe9, 0x43, 0xf6, 0x3e, 0xea, 0x6e, 0xb3, 0xaa, 0x5d, 0x36, 0x77, 0x1d, 0xf4, 0xc8, + 0x08, 0x3a, 0xe8, 0x05, 0xc8, 0x77, 0x08, 0x35, 0x76, 0x2c, 0x23, 0x7e, 0xba, 0xc3, 0x44, 0x40, + 0xcb, 0x57, 0xd9, 0x9f, 0x49, 0xcf, 0x66, 0x04, 0x72, 0xa4, 0x74, 0xc6, 0x7d, 0x36, 0x63, 0x40, + 0xf9, 0x63, 0xb9, 0x63, 0x67, 0xd2, 0x2d, 0x5d, 0xdf, 0xd1, 0x9d, 0x11, 0x45, 0x70, 0xe8, 0xb8, + 0xb4, 0xbc, 0x08, 0x0e, 0xe4, 0x25, 0xe9, 0x89, 0xd1, 0x90, 0x54, 0xdc, 0xdf, 0xc7, 0x7d, 0x62, + 0x34, 0xbe, 0xf8, 0xf4, 0x31, 0xf9, 0x25, 0xda, 0xb2, 0xce, 0x51, 0xe7, 0xdb, 0x14, 0xfd, 0x7a, + 0x87, 0x6e, 0x2c, 0x94, 0xb5, 0xc3, 0x6b, 0x2c, 0x7d, 0xcb, 0x4f, 0x1f, 0x98, 0xff, 0xfe, 0xfd, + 0x90, 0x5b, 0xc4, 0x17, 0x76, 0xb7, 0xd0, 0x5d, 0x30, 0xd9, 0xb0, 0x30, 0xae, 0x18, 0x9b, 0xa6, + 0x2b, 0x5d, 0xc7, 0x7d, 0xf6, 0x20, 0x61, 0x6f, 0x2e, 0x1e, 0xdb, 0x58, 0x6b, 0x07, 0xe7, 0xcf, + 0xbc, 0x57, 0xf4, 0x52, 0x09, 0xb2, 0x75, 0x47, 0x73, 0xd0, 0x94, 0x8f, 0x2d, 0x7a, 0x24, 0x8c, + 0xc5, 0x5d, 0x3c, 0x16, 0x37, 0x70, 0xb2, 0x20, 0x1c, 0xcc, 0xbb, 0xff, 0x47, 0x00, 0x80, 0x60, + 0xf2, 0x21, 0xdb, 0x34, 0xdc, 0x1c, 0xde, 0x11, 0x48, 0xef, 0x1d, 0xbd, 0xdc, 0x17, 0xf7, 0xbd, + 0x9c, 0xb8, 0x9f, 0x2c, 0x56, 0xc4, 0x18, 0x56, 0xda, 0x24, 0x98, 0x72, 0x45, 0xbb, 0x82, 0xb5, + 0xb6, 0x8d, 0xbe, 0x2f, 0x50, 0xfe, 0x08, 0x31, 0xa3, 0x77, 0x09, 0x07, 0xe3, 0xa4, 0xb5, 0xf2, + 0x89, 0x47, 0x7b, 0x74, 0x78, 0x9b, 0xff, 0x12, 0x1f, 0x8c, 0xe4, 0x16, 0xc8, 0xea, 0xc6, 0xa6, + 0xc9, 0xfc, 0x0b, 0xaf, 0x8e, 0xa0, 0xed, 0xea, 0x84, 0x4a, 0x32, 0x0a, 0x46, 0xea, 0x8c, 0x67, + 0x6b, 0x2c, 0x97, 0xde, 0x65, 0xdd, 0xd2, 0xd1, 0xff, 0x7f, 0xa0, 0xb0, 0x15, 0x05, 0xb2, 0x5d, + 0xcd, 0xd9, 0x66, 0x45, 0x93, 0x67, 0xd7, 0x46, 0xde, 0x35, 0x34, 0xc3, 0x34, 0x2e, 0xef, 0xe8, + 0xcf, 0xf6, 0xef, 0xd6, 0xe5, 0xd2, 0x5c, 0xce, 0xb7, 0xb0, 0x81, 0x2d, 0xcd, 0xc1, 0xf5, 0xbd, + 0x2d, 0x32, 0xc7, 0x9a, 0x54, 0xc3, 0x49, 0x89, 0xf5, 0xdf, 0xe5, 0x38, 0x5a, 0xff, 0x37, 0xf5, + 0x0e, 0x26, 0x91, 0x9a, 0x98, 0xfe, 0x7b, 0xef, 0x89, 0xf4, 0xbf, 0x4f, 0x11, 0xe9, 0xa3, 0xf1, + 0x6d, 0x09, 0x66, 0xea, 0xae, 0xc2, 0xd5, 0x77, 0x77, 0x76, 0x34, 0xeb, 0x32, 0xba, 0x2e, 0x40, + 0x25, 0xa4, 0x9a, 0x19, 0xde, 0x2f, 0xe5, 0x8f, 0x85, 0xaf, 0x95, 0x66, 0x4d, 0x3b, 0x54, 0x42, + 0xe2, 0x76, 0x70, 0x1b, 0xe4, 0x5c, 0xf5, 0xf6, 0x3c, 0x2e, 0x63, 0x1b, 0x02, 0xcd, 0x29, 0x18, + 0xd1, 0x6a, 0x20, 0x6f, 0x63, 0x88, 0xa6, 0x21, 0xc1, 0xd1, 0xba, 0xa3, 0xb5, 0x2e, 0x2e, 0x9b, + 0x96, 0xb9, 0xeb, 0xe8, 0x06, 0xb6, 0xd1, 0x13, 0x02, 0x04, 0x3c, 0xfd, 0xcf, 0x04, 0xfa, 0x8f, + 0xfe, 0x3d, 0x23, 0x3a, 0x8a, 0xfa, 0xdd, 0x6a, 0x98, 0x7c, 0x44, 0x80, 0x2a, 0xb1, 0x71, 0x51, + 0x84, 0x62, 0xfa, 0x42, 0x7b, 0x8d, 0x0c, 0x85, 0xf2, 0xc3, 0x5d, 0xd3, 0x72, 0x56, 0xcd, 0x96, + 0xd6, 0xb1, 0x1d, 0xd3, 0xc2, 0xa8, 0x16, 0x2b, 0x35, 0xb7, 0x87, 0x69, 0x9b, 0xad, 0x60, 0x70, + 0x64, 0x6f, 0x61, 0xb5, 0x93, 0x79, 0x1d, 0x7f, 0x9f, 0xf0, 0x2e, 0x23, 0x95, 0x4a, 0x2f, 0x47, + 0x11, 0x7a, 0xde, 0xaf, 0x4b, 0x4b, 0x76, 0x58, 0x42, 0x6c, 0xe7, 0x51, 0x88, 0xa9, 0x31, 0x2c, + 0x95, 0x4b, 0x30, 0x5b, 0xdf, 0xbd, 0xe0, 0x13, 0xb1, 0xc3, 0x46, 0xc8, 0x2b, 0x85, 0xa3, 0x54, + 0x30, 0xc5, 0x0b, 0x13, 0x8a, 0x90, 0xef, 0xf5, 0x30, 0x6b, 0x87, 0xb3, 0x31, 0xbc, 0xf9, 0x44, + 0xc1, 0xe8, 0x14, 0x83, 0x4b, 0x4d, 0x5f, 0x80, 0x6f, 0x93, 0x60, 0xb6, 0xd6, 0xc5, 0x06, 0x6e, + 0x53, 0x2f, 0x48, 0x4e, 0x80, 0x2f, 0x4d, 0x28, 0x40, 0x8e, 0x50, 0x84, 0x00, 0x03, 0x8f, 0xe5, + 0x45, 0x4f, 0x78, 0x41, 0x42, 0x22, 0xc1, 0xc5, 0x95, 0x96, 0xbe, 0xe0, 0x3e, 0x27, 0xc1, 0xb4, + 0xba, 0x6b, 0xac, 0x5b, 0xa6, 0x3b, 0x1a, 0x5b, 0xe8, 0xee, 0xa0, 0x83, 0xb8, 0x19, 0x8e, 0xb5, + 0x77, 0x2d, 0xb2, 0xfe, 0x54, 0x31, 0xea, 0xb8, 0x65, 0x1a, 0x6d, 0x9b, 0xd4, 0x23, 0xa7, 0xee, + 0xff, 0x70, 0x67, 0xf6, 0xf9, 0x5f, 0x91, 0x33, 0xe8, 0x05, 0xc2, 0xa1, 0x6e, 0x68, 0xe5, 0x43, + 0x45, 0x8b, 0xf7, 0x04, 0x82, 0x01, 0x6d, 0x06, 0x95, 0x90, 0xbe, 0x70, 0x3f, 0x29, 0x81, 0x52, + 0x6c, 0xb5, 0xcc, 0x5d, 0xc3, 0xa9, 0xe3, 0x0e, 0x6e, 0x39, 0x0d, 0x4b, 0x6b, 0xe1, 0xb0, 0xfd, + 0x5c, 0x00, 0xb9, 0xad, 0x5b, 0xac, 0x0f, 0x76, 0x1f, 0x99, 0x1c, 0x5f, 0x2a, 0xbc, 0xe3, 0x48, + 0x6b, 0xb9, 0xbf, 0x94, 0x04, 0xe2, 0x14, 0xdb, 0x57, 0x14, 0x2c, 0x28, 0x7d, 0xa9, 0x7e, 0x50, + 0x82, 0x29, 0xaf, 0xc7, 0xde, 0x12, 0x11, 0xe6, 0x2f, 0x25, 0x9c, 0x8c, 0xf8, 0xc4, 0x13, 0xc8, + 0xf0, 0x4d, 0x09, 0x66, 0x15, 0x51, 0xf4, 0x93, 0x89, 0xae, 0x98, 0x5c, 0x74, 0xee, 0x6b, 0xb5, + 0xd6, 0x5c, 0xaa, 0xad, 0x2e, 0x96, 0xd5, 0x82, 0x8c, 0x1e, 0x93, 0x20, 0xbb, 0xae, 0x1b, 0x5b, + 0xe1, 0xe8, 0x4a, 0xc7, 0x5d, 0x3b, 0xb2, 0x8d, 0x1f, 0x66, 0x2d, 0x9d, 0xbe, 0x28, 0xb7, 0xc3, + 0x71, 0x63, 0x77, 0xe7, 0x02, 0xb6, 0x6a, 0x9b, 0x64, 0x94, 0xb5, 0x1b, 0x66, 0x1d, 0x1b, 0xd4, + 0x08, 0xcd, 0xa9, 0x7d, 0xbf, 0xf1, 0x26, 0x98, 0xc0, 0xe4, 0xc1, 0xe5, 0x24, 0x42, 0xe2, 0x3e, + 0x53, 0x52, 0x88, 0xa9, 0x44, 0xd3, 0x86, 0x3e, 0xc4, 0xd3, 0xd7, 0xd4, 0x3f, 0xc9, 0xc1, 0x89, + 0xa2, 0x71, 0x99, 0xd8, 0x14, 0xb4, 0x83, 0x2f, 0x6d, 0x6b, 0xc6, 0x16, 0x26, 0x03, 0x84, 0x2f, + 0xf1, 0x70, 0x88, 0xfe, 0x0c, 0x1f, 0xa2, 0x5f, 0x51, 0x61, 0xc2, 0xb4, 0xda, 0xd8, 0x5a, 0xb8, + 0x4c, 0x78, 0xea, 0x5d, 0x76, 0x66, 0x6d, 0xb2, 0x5f, 0x11, 0xf3, 0x8c, 0xfc, 0x7c, 0x8d, 0xfe, + 0xaf, 0x7a, 0x84, 0xce, 0xde, 0x0c, 0x13, 0x2c, 0x4d, 0x99, 0x81, 0xc9, 0x9a, 0xba, 0x58, 0x56, + 0x9b, 0x95, 0xc5, 0xc2, 0x11, 0xe5, 0x0a, 0x38, 0x5a, 0x69, 0x94, 0xd5, 0x62, 0xa3, 0x52, 0xab, + 0x36, 0x49, 0x7a, 0x21, 0x83, 0x9e, 0x97, 0x15, 0xf5, 0xec, 0x8d, 0x67, 0xa6, 0x1f, 0xac, 0x2a, + 0x4c, 0xb4, 0x68, 0x06, 0x32, 0x84, 0x4e, 0x27, 0xaa, 0x1d, 0x23, 0x48, 0x13, 0x54, 0x8f, 0x90, + 0x72, 0x1a, 0xe0, 0x92, 0x65, 0x1a, 0x5b, 0xc1, 0xa9, 0xc3, 0x49, 0x35, 0x94, 0x82, 0x1e, 0xc9, + 0x40, 0x9e, 0xfe, 0x43, 0xae, 0x24, 0x21, 0x4f, 0x81, 0xe0, 0xbd, 0x77, 0xd7, 0xe2, 0x25, 0xf2, + 0x0a, 0x26, 0x5a, 0xec, 0xd5, 0xd5, 0x45, 0x2a, 0x03, 0x6a, 0x09, 0xb3, 0xaa, 0xdc, 0x02, 0x79, + 0xfa, 0x2f, 0xf3, 0x3a, 0x88, 0x0e, 0x2f, 0x4a, 0xb3, 0x09, 0xfa, 0x29, 0x8b, 0xcb, 0x34, 0x7d, + 0x6d, 0x7e, 0xb7, 0x04, 0x93, 0x55, 0xec, 0x94, 0xb6, 0x71, 0xeb, 0x22, 0x7a, 0x12, 0xbf, 0x00, + 0xda, 0xd1, 0xb1, 0xe1, 0x3c, 0xb8, 0xd3, 0xf1, 0x17, 0x40, 0xbd, 0x04, 0xf4, 0xd3, 0xe1, 0xce, + 0xf7, 0x3e, 0x5e, 0x7f, 0x6e, 0xea, 0x53, 0x57, 0xaf, 0x84, 0x08, 0x95, 0x39, 0x09, 0x79, 0x0b, + 0xdb, 0xbb, 0x1d, 0x6f, 0x11, 0x8d, 0xbd, 0xa1, 0x57, 0xf9, 0xe2, 0x2c, 0x71, 0xe2, 0xbc, 0x45, + 0xbc, 0x88, 0x31, 0xc4, 0x2b, 0xcd, 0xc2, 0x44, 0xc5, 0xd0, 0x1d, 0x5d, 0xeb, 0xa0, 0x17, 0x64, + 0x61, 0xb6, 0x8e, 0x9d, 0x75, 0xcd, 0xd2, 0x76, 0xb0, 0x83, 0x2d, 0x1b, 0x7d, 0x93, 0xef, 0x13, + 0xba, 0x1d, 0xcd, 0xd9, 0x34, 0xad, 0x1d, 0x4f, 0x35, 0xbd, 0x77, 0x57, 0x35, 0xf7, 0xb0, 0x65, + 0x07, 0x7c, 0x79, 0xaf, 0xee, 0x97, 0x4b, 0xa6, 0x75, 0xd1, 0x1d, 0x04, 0xd9, 0x34, 0x8d, 0xbd, + 0xba, 0xf4, 0x3a, 0xe6, 0xd6, 0x2a, 0xde, 0xc3, 0x5e, 0xb8, 0x34, 0xff, 0xdd, 0x9d, 0x0b, 0xb4, + 0xcd, 0xaa, 0xe9, 0xb8, 0x9d, 0xf6, 0xaa, 0xb9, 0x45, 0xe3, 0xc5, 0x4e, 0xaa, 0x7c, 0x62, 0x90, + 0x4b, 0xdb, 0xc3, 0x24, 0x57, 0x3e, 0x9c, 0x8b, 0x25, 0x2a, 0xf3, 0xa0, 0xf8, 0xbf, 0x35, 0x70, + 0x07, 0xef, 0x60, 0xc7, 0xba, 0x4c, 0xae, 0x85, 0x98, 0x54, 0xfb, 0x7c, 0x61, 0x03, 0xb4, 0xf8, + 0x64, 0x9d, 0x49, 0x6f, 0x9e, 0x93, 0xdc, 0x81, 0x26, 0xeb, 0x22, 0x14, 0xc7, 0x72, 0xed, 0x95, + 0xec, 0x5a, 0x33, 0xbf, 0x26, 0x43, 0x96, 0x0c, 0x9e, 0xaf, 0xcd, 0x70, 0x2b, 0x4c, 0x3b, 0xd8, + 0xb6, 0xb5, 0x2d, 0xec, 0xad, 0x30, 0xb1, 0x57, 0xe5, 0x0e, 0xc8, 0x75, 0x08, 0xa6, 0x74, 0x70, + 0xb8, 0x8e, 0xab, 0x99, 0x6b, 0x60, 0xb8, 0xb4, 0xfc, 0x91, 0x80, 0xc0, 0xad, 0xd2, 0x3f, 0xce, + 0xde, 0x0f, 0x39, 0x0a, 0xff, 0x14, 0xe4, 0x16, 0xcb, 0x0b, 0x1b, 0xcb, 0x85, 0x23, 0xee, 0xa3, + 0xc7, 0xdf, 0x14, 0xe4, 0x96, 0x8a, 0x8d, 0xe2, 0x6a, 0x41, 0x72, 0xeb, 0x51, 0xa9, 0x2e, 0xd5, + 0x0a, 0xb2, 0x9b, 0xb8, 0x5e, 0xac, 0x56, 0x4a, 0x85, 0xac, 0x32, 0x0d, 0x13, 0xe7, 0x8b, 0x6a, + 0xb5, 0x52, 0x5d, 0x2e, 0xe4, 0xd0, 0x97, 0xc3, 0xf8, 0xdd, 0xc9, 0xe3, 0x77, 0x7d, 0x14, 0x4f, + 0xfd, 0x20, 0xfb, 0x75, 0x1f, 0xb2, 0xbb, 0x39, 0xc8, 0xbe, 0x5f, 0x84, 0xc8, 0x18, 0xdc, 0x99, + 0xf2, 0x30, 0xb1, 0x6e, 0x99, 0x2d, 0x6c, 0xdb, 0xe8, 0x97, 0x25, 0xc8, 0x97, 0x34, 0xa3, 0x85, + 0x3b, 0xe8, 0xaa, 0x00, 0x2a, 0xea, 0x2a, 0x9a, 0xf1, 0x4f, 0x8b, 0xfd, 0x63, 0x46, 0xb4, 0xf7, + 0x63, 0x74, 0xe7, 0x29, 0xcd, 0x08, 0xf9, 0x88, 0xf5, 0x72, 0xb1, 0xa4, 0xc6, 0x70, 0x35, 0x8e, + 0x04, 0x53, 0x6c, 0x35, 0xe0, 0x02, 0x0e, 0xcf, 0xc3, 0xbf, 0x99, 0x11, 0x9d, 0x1c, 0x7a, 0x35, + 0xf0, 0xc9, 0x44, 0xc8, 0x43, 0x6c, 0x22, 0x38, 0x88, 0xda, 0x18, 0x36, 0x0f, 0x25, 0x98, 0xde, + 0x30, 0xec, 0x7e, 0x42, 0x11, 0x8f, 0xa3, 0xef, 0x55, 0x23, 0x44, 0xe8, 0x40, 0x71, 0xf4, 0x07, + 0xd3, 0x4b, 0x5f, 0x30, 0xdf, 0xcc, 0xc0, 0xf1, 0x65, 0x6c, 0x60, 0x4b, 0x6f, 0xd1, 0x1a, 0x78, + 0x92, 0xb8, 0x9b, 0x97, 0xc4, 0x93, 0x38, 0xce, 0xfb, 0xfd, 0xc1, 0x4b, 0xe0, 0x15, 0xbe, 0x04, + 0xee, 0xe3, 0x24, 0x70, 0xb3, 0x20, 0x9d, 0x31, 0xdc, 0x87, 0x3e, 0x05, 0x33, 0x55, 0xd3, 0xd1, + 0x37, 0xf5, 0x16, 0xf5, 0x41, 0xfb, 0x55, 0x19, 0xb2, 0xab, 0xba, 0xed, 0xa0, 0x62, 0xd0, 0x9d, + 0x9c, 0x81, 0x69, 0xdd, 0x68, 0x75, 0x76, 0xdb, 0x58, 0xc5, 0x1a, 0xed, 0x57, 0x26, 0xd5, 0x70, + 0x52, 0xb0, 0xb5, 0xef, 0xb2, 0x25, 0x7b, 0x5b, 0xfb, 0x1f, 0x13, 0x5e, 0x86, 0x09, 0xb3, 0x40, + 0x02, 0x52, 0x46, 0xd8, 0x5d, 0x45, 0x98, 0x35, 0x42, 0x59, 0x3d, 0x83, 0xbd, 0xf7, 0x42, 0x81, + 0x30, 0x39, 0x95, 0xff, 0x03, 0xbd, 0x43, 0xa8, 0xb1, 0x0e, 0x62, 0x28, 0x19, 0x32, 0x4b, 0x43, + 0x4c, 0x92, 0x15, 0x98, 0xab, 0x54, 0x1b, 0x65, 0xb5, 0x5a, 0x5c, 0x65, 0x59, 0x64, 0xf4, 0x6d, + 0x09, 0x72, 0x2a, 0xee, 0x76, 0x2e, 0x87, 0x23, 0x46, 0x33, 0x47, 0xf1, 0x8c, 0xef, 0x28, 0xae, + 0x2c, 0x01, 0x68, 0x2d, 0xb7, 0x60, 0x72, 0xa5, 0x96, 0xd4, 0x37, 0x8e, 0x29, 0x57, 0xc1, 0xa2, + 0x9f, 0x5b, 0x0d, 0xfd, 0x89, 0x5e, 0x28, 0xbc, 0x73, 0xc4, 0x51, 0x23, 0x1c, 0x46, 0xf4, 0x09, + 0xef, 0x14, 0xda, 0xec, 0x19, 0x48, 0xee, 0x70, 0xc4, 0xff, 0x79, 0x09, 0xb2, 0x0d, 0xb7, 0xb7, + 0x0c, 0x75, 0x9c, 0x1f, 0x1d, 0x4e, 0xc7, 0x5d, 0x32, 0x11, 0x3a, 0x7e, 0x2f, 0xcc, 0x84, 0x35, + 0x96, 0xb9, 0x4a, 0xc4, 0xaa, 0x38, 0xf7, 0xc3, 0x30, 0x1a, 0xde, 0x87, 0x9d, 0xc3, 0x11, 0xf1, + 0x87, 0x9e, 0x0c, 0xb0, 0x86, 0x77, 0x2e, 0x60, 0xcb, 0xde, 0xd6, 0xbb, 0xe8, 0xef, 0x64, 0x98, + 0x5a, 0xc6, 0x4e, 0xdd, 0xd1, 0x9c, 0x5d, 0xbb, 0x67, 0xbb, 0xd3, 0x30, 0x4b, 0x5a, 0x6b, 0x1b, + 0xb3, 0xee, 0xc8, 0x7b, 0x45, 0x6f, 0x91, 0x45, 0xfd, 0x89, 0x82, 0x72, 0xe6, 0xfd, 0x32, 0x22, + 0x30, 0x79, 0x0a, 0x64, 0xdb, 0x9a, 0xa3, 0x31, 0x2c, 0xae, 0xea, 0xc1, 0x22, 0x20, 0xa4, 0x92, + 0x6c, 0xe8, 0xf7, 0x24, 0x11, 0x87, 0x22, 0x81, 0xf2, 0x93, 0x81, 0xf0, 0x8e, 0xcc, 0x10, 0x28, + 0x1c, 0x83, 0xd9, 0x6a, 0xad, 0xd1, 0x5c, 0xad, 0x2d, 0x2f, 0x97, 0xdd, 0xd4, 0x82, 0xac, 0x9c, + 0x04, 0x65, 0xbd, 0xf8, 0xe0, 0x5a, 0xb9, 0xda, 0x68, 0x56, 0x6b, 0x8b, 0x65, 0xf6, 0x67, 0x56, + 0x39, 0x0a, 0xd3, 0xa5, 0x62, 0x69, 0xc5, 0x4b, 0xc8, 0x29, 0xa7, 0xe0, 0xf8, 0x5a, 0x79, 0x6d, + 0xa1, 0xac, 0xd6, 0x57, 0x2a, 0xeb, 0x4d, 0x97, 0xcc, 0x52, 0x6d, 0xa3, 0xba, 0x58, 0xc8, 0x2b, + 0x08, 0x4e, 0x86, 0xbe, 0x9c, 0x57, 0x6b, 0xd5, 0xe5, 0x66, 0xbd, 0x51, 0x6c, 0x94, 0x0b, 0x13, + 0xca, 0x15, 0x70, 0xb4, 0x54, 0xac, 0x92, 0xec, 0xa5, 0x5a, 0xb5, 0x5a, 0x2e, 0x35, 0x0a, 0x93, + 0xe8, 0xdf, 0xb3, 0x30, 0x5d, 0xb1, 0xab, 0xda, 0x0e, 0x3e, 0xa7, 0x75, 0xf4, 0x36, 0x7a, 0x41, + 0x68, 0xe6, 0x71, 0x3d, 0xcc, 0x5a, 0xf4, 0x11, 0xb7, 0x1b, 0x3a, 0xa6, 0x68, 0xce, 0xaa, 0x7c, + 0xa2, 0x3b, 0x27, 0x37, 0x08, 0x01, 0x6f, 0x4e, 0x4e, 0xdf, 0x94, 0x05, 0x00, 0xfa, 0xd4, 0x08, + 0x2e, 0x77, 0x3d, 0xdb, 0xdb, 0x9a, 0xb4, 0x1d, 0x6c, 0x63, 0x6b, 0x4f, 0x6f, 0x61, 0x2f, 0xa7, + 0x1a, 0xfa, 0x0b, 0x7d, 0x41, 0x16, 0xdd, 0x5f, 0x0c, 0x81, 0x1a, 0xaa, 0x4e, 0x44, 0x6f, 0xf8, + 0x33, 0xb2, 0xc8, 0xee, 0xa0, 0x10, 0xc9, 0x64, 0x9a, 0xf2, 0x62, 0x69, 0xb8, 0x65, 0xdb, 0x46, + 0xad, 0xd6, 0xac, 0xaf, 0xd4, 0xd4, 0x46, 0x41, 0x56, 0x66, 0x60, 0xd2, 0x7d, 0x5d, 0xad, 0x55, + 0x97, 0x0b, 0x59, 0xe5, 0x04, 0x1c, 0x5b, 0x29, 0xd6, 0x9b, 0x95, 0xea, 0xb9, 0xe2, 0x6a, 0x65, + 0xb1, 0x59, 0x5a, 0x29, 0xaa, 0xf5, 0x42, 0x4e, 0xb9, 0x0a, 0x4e, 0x34, 0x2a, 0x65, 0xb5, 0xb9, + 0x54, 0x2e, 0x36, 0x36, 0xd4, 0x72, 0xbd, 0x59, 0xad, 0x35, 0xab, 0xc5, 0xb5, 0x72, 0x21, 0xef, + 0x36, 0x7f, 0xf2, 0x29, 0x50, 0x9b, 0x89, 0xfd, 0xca, 0x38, 0x19, 0xa1, 0x8c, 0x53, 0xbd, 0xca, + 0x08, 0x61, 0xb5, 0x52, 0xcb, 0xf5, 0xb2, 0x7a, 0xae, 0x5c, 0x98, 0xee, 0xa7, 0x6b, 0x33, 0xca, + 0x71, 0x28, 0xb8, 0x3c, 0x34, 0x2b, 0x75, 0x2f, 0xe7, 0x62, 0x61, 0x16, 0x7d, 0x30, 0x0f, 0x27, + 0x55, 0xbc, 0xa5, 0xdb, 0x0e, 0xb6, 0xd6, 0xb5, 0xcb, 0x3b, 0xd8, 0x70, 0xbc, 0x4e, 0xfe, 0x5f, + 0x12, 0x2b, 0xe3, 0x1a, 0xcc, 0x76, 0x29, 0x8d, 0x35, 0xec, 0x6c, 0x9b, 0x6d, 0x36, 0x0a, 0x3f, + 0x29, 0xb2, 0xe7, 0x98, 0x5f, 0x0f, 0x67, 0x57, 0xf9, 0xbf, 0x43, 0xba, 0x2d, 0xc7, 0xe8, 0x76, + 0x76, 0x18, 0xdd, 0x56, 0xae, 0x81, 0xa9, 0x5d, 0x1b, 0x5b, 0xe5, 0x1d, 0x4d, 0xef, 0x78, 0x97, + 0x73, 0xfa, 0x09, 0xe8, 0x8d, 0x59, 0xd1, 0x13, 0x2b, 0xa1, 0xba, 0xf4, 0x17, 0x63, 0x44, 0xdf, + 0x7a, 0x1a, 0x80, 0x55, 0x76, 0xc3, 0xea, 0x30, 0x65, 0x0d, 0xa5, 0xb8, 0xfc, 0x5d, 0xd0, 0x3b, + 0x1d, 0xdd, 0xd8, 0xf2, 0xf7, 0xfd, 0x83, 0x04, 0xf4, 0x62, 0x59, 0xe4, 0x04, 0x4b, 0x52, 0xde, + 0x92, 0xb5, 0xa6, 0x17, 0x4a, 0x63, 0xee, 0x77, 0xf7, 0x37, 0x9d, 0xbc, 0x52, 0x80, 0x19, 0x92, + 0xc6, 0x5a, 0x60, 0x61, 0xc2, 0xed, 0x83, 0x3d, 0x72, 0x6b, 0xe5, 0xc6, 0x4a, 0x6d, 0xd1, 0xff, + 0x36, 0xe9, 0x92, 0x74, 0x99, 0x29, 0x56, 0x1f, 0x24, 0xad, 0x71, 0x4a, 0x79, 0x02, 0x5c, 0x15, + 0xea, 0xb0, 0x8b, 0xab, 0x6a, 0xb9, 0xb8, 0xf8, 0x60, 0xb3, 0xfc, 0xac, 0x4a, 0xbd, 0x51, 0xe7, + 0x1b, 0x97, 0xd7, 0x8e, 0xa6, 0x5d, 0x7e, 0xcb, 0x6b, 0xc5, 0xca, 0x2a, 0xeb, 0xdf, 0x97, 0x6a, + 0xea, 0x5a, 0xb1, 0x51, 0x98, 0x41, 0xbf, 0x26, 0x43, 0x61, 0x19, 0x3b, 0xeb, 0xa6, 0xe5, 0x68, + 0x9d, 0x55, 0xdd, 0xb8, 0xb8, 0x61, 0x75, 0xb8, 0xc9, 0xa6, 0x70, 0x98, 0x0e, 0x7e, 0x88, 0xe4, + 0x08, 0x46, 0xef, 0x88, 0x77, 0x49, 0xb6, 0x40, 0x99, 0x82, 0x04, 0xf4, 0x1c, 0x49, 0x64, 0xb9, + 0x5b, 0xbc, 0xd4, 0x64, 0x7a, 0xf2, 0xdc, 0x71, 0x8f, 0xcf, 0x7d, 0x50, 0xcb, 0xa3, 0xe7, 0x67, + 0x61, 0x72, 0x49, 0x37, 0xb4, 0x8e, 0xfe, 0x6c, 0x2e, 0x7e, 0x69, 0xd0, 0xc7, 0x64, 0x62, 0xfa, + 0x18, 0x69, 0xa8, 0xf1, 0xf3, 0x17, 0x65, 0xd1, 0xe5, 0x85, 0x90, 0xec, 0x3d, 0x26, 0x23, 0x06, + 0xcf, 0xf7, 0x48, 0x22, 0xcb, 0x0b, 0x83, 0xe9, 0x25, 0xc3, 0xf0, 0x23, 0xdf, 0x1d, 0x36, 0x56, + 0x4f, 0xfb, 0x9e, 0xec, 0xa7, 0x0a, 0x53, 0xe8, 0x2f, 0x64, 0x40, 0xcb, 0xd8, 0x39, 0x87, 0x2d, + 0x7f, 0x2a, 0x40, 0x7a, 0x7d, 0x66, 0x6f, 0x87, 0x9a, 0xec, 0x6b, 0xc3, 0x00, 0x9e, 0xe7, 0x01, + 0x2c, 0xc6, 0x34, 0x9e, 0x08, 0xd2, 0x11, 0x8d, 0xb7, 0x02, 0x79, 0x9b, 0x7c, 0x67, 0x6a, 0x76, + 0x5b, 0xf4, 0x70, 0x49, 0x88, 0x85, 0xa9, 0x53, 0xc2, 0x2a, 0x23, 0x80, 0xbe, 0xe5, 0x4f, 0x82, + 0x7e, 0x98, 0xd3, 0x8e, 0xa5, 0x03, 0x33, 0x9b, 0x4c, 0x5f, 0xac, 0x74, 0xd5, 0xa5, 0x9f, 0x7d, + 0x83, 0xde, 0x93, 0x83, 0xe3, 0xfd, 0xaa, 0x83, 0x7e, 0x3f, 0xc3, 0xed, 0xb0, 0x63, 0x32, 0xe4, + 0x67, 0xd8, 0x06, 0xa2, 0xfb, 0xa2, 0x3c, 0x0d, 0x4e, 0xf8, 0xcb, 0x70, 0x0d, 0xb3, 0x8a, 0x2f, + 0xd9, 0x1d, 0xec, 0x38, 0xd8, 0x22, 0x55, 0x9b, 0x54, 0xfb, 0x7f, 0x54, 0x9e, 0x01, 0x57, 0xea, + 0x86, 0xad, 0xb7, 0xb1, 0xd5, 0xd0, 0xbb, 0x76, 0xd1, 0x68, 0x37, 0x76, 0x1d, 0xd3, 0xd2, 0x35, + 0x76, 0x95, 0xe4, 0xa4, 0x1a, 0xf5, 0x59, 0xb9, 0x09, 0x0a, 0xba, 0x5d, 0x33, 0x2e, 0x98, 0x9a, + 0xd5, 0xd6, 0x8d, 0xad, 0x55, 0xdd, 0x76, 0x98, 0x07, 0xf0, 0xbe, 0x74, 0xf4, 0xf7, 0xb2, 0xe8, + 0x61, 0xba, 0x01, 0xb0, 0x46, 0x74, 0x28, 0x3f, 0x2d, 0x8b, 0x1c, 0x8f, 0x4b, 0x46, 0x3b, 0x99, + 0xb2, 0x3c, 0x6f, 0xdc, 0x86, 0x44, 0xff, 0x11, 0x9c, 0x74, 0x2d, 0x34, 0xdd, 0x33, 0x04, 0xce, + 0x95, 0xd5, 0xca, 0x52, 0xa5, 0xec, 0x9a, 0x15, 0x27, 0xe0, 0x58, 0xf0, 0x6d, 0xf1, 0xc1, 0x66, + 0xbd, 0x5c, 0x6d, 0x14, 0x26, 0xdd, 0x7e, 0x8a, 0x26, 0x2f, 0x15, 0x2b, 0xab, 0xe5, 0xc5, 0x66, + 0xa3, 0xe6, 0x7e, 0x59, 0x1c, 0xce, 0xb4, 0x40, 0x8f, 0x64, 0xe1, 0x28, 0x91, 0xed, 0x65, 0x22, + 0x55, 0x57, 0x28, 0x3d, 0xbe, 0xb6, 0x3e, 0x40, 0x53, 0x54, 0xbc, 0xe8, 0x13, 0xc2, 0x37, 0x65, + 0x86, 0x20, 0xec, 0x29, 0x23, 0x42, 0x33, 0xbe, 0x29, 0x89, 0x44, 0xa8, 0x10, 0x26, 0x9b, 0x4c, + 0x29, 0xfe, 0x75, 0xdc, 0x23, 0x4e, 0x34, 0xf8, 0xc4, 0xca, 0x2c, 0x91, 0x9f, 0x9f, 0xb5, 0x5e, + 0x51, 0x89, 0x3a, 0xcc, 0x01, 0x90, 0x14, 0xa2, 0x41, 0x54, 0x0f, 0xfa, 0x8e, 0x57, 0x51, 0x7a, + 0x50, 0x2c, 0x35, 0x2a, 0xe7, 0xca, 0x51, 0x7a, 0xf0, 0x71, 0x19, 0x26, 0x97, 0xb1, 0xe3, 0xce, + 0xa9, 0x6c, 0xf4, 0x4c, 0x81, 0xf5, 0x1f, 0xd7, 0x8c, 0xe9, 0x98, 0x2d, 0xad, 0xe3, 0x2f, 0x03, + 0xd0, 0x37, 0xf4, 0x53, 0xc3, 0x98, 0x20, 0x5e, 0xd1, 0x11, 0xe3, 0xd5, 0x0f, 0x42, 0xce, 0x71, + 0x3f, 0xb3, 0x65, 0xe8, 0xef, 0x8b, 0x1c, 0xae, 0x5c, 0x22, 0x8b, 0x9a, 0xa3, 0xa9, 0x34, 0x7f, + 0x68, 0x74, 0x12, 0xb4, 0x5d, 0x22, 0x18, 0xf9, 0x6e, 0xb4, 0x3f, 0xbf, 0x2c, 0xc3, 0x09, 0xda, + 0x3e, 0x8a, 0xdd, 0x6e, 0xdd, 0x31, 0x2d, 0xac, 0xe2, 0x16, 0xd6, 0xbb, 0x4e, 0xcf, 0xfa, 0x9e, + 0x45, 0x53, 0xbd, 0xcd, 0x66, 0xf6, 0x8a, 0x7e, 0x4b, 0x16, 0x8d, 0xc1, 0xbc, 0xaf, 0x3d, 0xf6, + 0x94, 0x17, 0xd1, 0xd8, 0x3f, 0x20, 0x89, 0x44, 0x55, 0x4e, 0x48, 0x3c, 0x19, 0x50, 0xef, 0x3d, + 0x04, 0xa0, 0xbc, 0x95, 0x1b, 0xb5, 0x5c, 0x2a, 0x57, 0xd6, 0xdd, 0x41, 0xe0, 0x5a, 0xb8, 0x7a, + 0x7d, 0x43, 0x2d, 0xad, 0x14, 0xeb, 0xe5, 0xa6, 0x5a, 0x5e, 0xae, 0xd4, 0x1b, 0xcc, 0x29, 0x8b, + 0xfe, 0x35, 0xa1, 0x5c, 0x03, 0xa7, 0xea, 0x1b, 0x0b, 0xf5, 0x92, 0x5a, 0x59, 0x27, 0xe9, 0x6a, + 0xb9, 0x5a, 0x3e, 0xcf, 0xbe, 0x4e, 0xa2, 0x77, 0x15, 0x60, 0xda, 0x9d, 0x00, 0xd4, 0xe9, 0xbc, + 0x00, 0x7d, 0x2d, 0x0b, 0xd3, 0x2a, 0xb6, 0xcd, 0xce, 0x1e, 0x99, 0x23, 0x8c, 0x6b, 0xea, 0xf1, + 0x0d, 0x59, 0xf4, 0xfc, 0x76, 0x88, 0xd9, 0xf9, 0x10, 0xa3, 0xd1, 0x13, 0x4d, 0x6d, 0x4f, 0xd3, + 0x3b, 0xda, 0x05, 0xd6, 0xd5, 0x4c, 0xaa, 0x41, 0x82, 0x32, 0x0f, 0x8a, 0x79, 0xc9, 0xc0, 0x56, + 0xbd, 0x75, 0xa9, 0xec, 0x6c, 0x17, 0xdb, 0x6d, 0x0b, 0xdb, 0x36, 0x5b, 0xbd, 0xe8, 0xf3, 0x45, + 0xb9, 0x11, 0x8e, 0x92, 0xd4, 0x50, 0x66, 0xea, 0x20, 0xd3, 0x9b, 0xec, 0xe7, 0x2c, 0x1a, 0x97, + 0xbd, 0x9c, 0xb9, 0x50, 0xce, 0x20, 0x39, 0x7c, 0x5c, 0x22, 0xcf, 0x9f, 0xd2, 0x39, 0x03, 0xd3, + 0x86, 0xb6, 0x83, 0xcb, 0x0f, 0x77, 0x75, 0x0b, 0xdb, 0xc4, 0x31, 0x46, 0x56, 0xc3, 0x49, 0xe8, + 0x3d, 0x42, 0xe7, 0xcd, 0xc5, 0x24, 0x96, 0x4c, 0xf7, 0x97, 0x87, 0x50, 0xfd, 0x3e, 0xfd, 0x8c, + 0x8c, 0xde, 0x25, 0xc3, 0x0c, 0x63, 0xaa, 0x68, 0x5c, 0xae, 0xb4, 0xd1, 0xb5, 0x9c, 0xf1, 0xab, + 0xb9, 0x69, 0x9e, 0xf1, 0x4b, 0x5e, 0xd0, 0xcf, 0xca, 0xa2, 0xee, 0xce, 0x7d, 0x2a, 0x4e, 0xca, + 0x88, 0x76, 0x1c, 0xdd, 0x34, 0x77, 0x99, 0xa3, 0xea, 0xa4, 0x4a, 0x5f, 0xd2, 0x5c, 0xd4, 0x43, + 0x7f, 0x24, 0xe4, 0x4c, 0x2d, 0x58, 0x8d, 0x43, 0x02, 0xf0, 0x43, 0x32, 0xcc, 0x31, 0xae, 0xea, + 0xec, 0x9c, 0x8f, 0xd0, 0x81, 0xb7, 0x9f, 0x13, 0x36, 0x04, 0xfb, 0xd4, 0x9f, 0x95, 0xf4, 0xb8, + 0x01, 0xf2, 0x7d, 0x42, 0xc1, 0xd1, 0x84, 0x2b, 0x72, 0x48, 0x50, 0xbe, 0x29, 0x0b, 0xd3, 0x1b, + 0x36, 0xb6, 0x98, 0xdf, 0x3e, 0x7a, 0x55, 0x16, 0xe4, 0x65, 0xcc, 0x6d, 0xa4, 0xbe, 0x48, 0xd8, + 0xc3, 0x37, 0x5c, 0xd9, 0x10, 0x51, 0xd7, 0x46, 0x8a, 0x80, 0xed, 0x06, 0x98, 0xa3, 0x22, 0x2d, + 0x3a, 0x8e, 0x6b, 0x24, 0x7a, 0xde, 0xb4, 0x3d, 0xa9, 0xa3, 0xd8, 0x2a, 0x22, 0x65, 0xb9, 0x59, + 0x4a, 0x2e, 0x4f, 0xab, 0x78, 0x93, 0xce, 0x67, 0xb3, 0x6a, 0x4f, 0xaa, 0x72, 0x2b, 0x5c, 0x61, + 0x76, 0x31, 0x3d, 0xbf, 0x12, 0xca, 0x9c, 0x23, 0x99, 0xfb, 0x7d, 0x42, 0x5f, 0x13, 0xf2, 0xd5, + 0x15, 0x97, 0x4e, 0x32, 0x5d, 0xe8, 0x8e, 0xc6, 0x24, 0x39, 0x0e, 0x05, 0x37, 0x07, 0xd9, 0x7f, + 0x51, 0xcb, 0xf5, 0xda, 0xea, 0xb9, 0x72, 0xff, 0x65, 0x8c, 0x1c, 0x7a, 0x9e, 0x0c, 0x53, 0x0b, + 0x96, 0xa9, 0xb5, 0x5b, 0x9a, 0xed, 0xa0, 0x6f, 0x49, 0x30, 0xb3, 0xae, 0x5d, 0xee, 0x98, 0x5a, + 0x9b, 0xf8, 0xf7, 0xf7, 0xf4, 0x05, 0x5d, 0xfa, 0xc9, 0xeb, 0x0b, 0xd8, 0x2b, 0x7f, 0x30, 0xd0, + 0x3f, 0xba, 0x97, 0x11, 0xb9, 0x50, 0xd3, 0xdf, 0xe6, 0x93, 0xfa, 0x05, 0x2b, 0xf5, 0xf8, 0x9a, + 0x0f, 0xf3, 0x14, 0x61, 0x51, 0xbe, 0x4b, 0x2c, 0xfc, 0xa8, 0x08, 0xc9, 0xc3, 0xd9, 0x95, 0x7f, + 0xfe, 0x24, 0xe4, 0x17, 0x31, 0xb1, 0xe2, 0xfe, 0x87, 0x04, 0x13, 0x75, 0xec, 0x10, 0x0b, 0xee, + 0x0e, 0xce, 0x53, 0xb8, 0x4d, 0x32, 0x04, 0x4e, 0xec, 0xde, 0xbb, 0x3b, 0x59, 0x0f, 0x9d, 0xb7, + 0x26, 0xcf, 0x09, 0x3c, 0x12, 0x69, 0xb9, 0xf3, 0xac, 0xcc, 0x03, 0x79, 0x24, 0xc6, 0x92, 0x4a, + 0xdf, 0xd7, 0xea, 0x2d, 0x12, 0x73, 0xad, 0x0a, 0xf5, 0x7a, 0xbf, 0x11, 0xd6, 0xcf, 0x58, 0x6f, + 0x33, 0xc6, 0x7c, 0x8c, 0x73, 0xd4, 0x53, 0x61, 0x82, 0xca, 0xdc, 0x9b, 0x8f, 0xf6, 0xfa, 0x29, + 0x50, 0x12, 0xe4, 0xec, 0xb5, 0x97, 0x53, 0xd0, 0x45, 0x2d, 0xba, 0xf0, 0xb1, 0xc4, 0x20, 0x98, + 0xa9, 0x62, 0xe7, 0x92, 0x69, 0x5d, 0xac, 0x3b, 0x9a, 0x83, 0xd1, 0xbf, 0x4a, 0x20, 0xd7, 0xb1, + 0x13, 0x8e, 0x7e, 0x52, 0x85, 0x63, 0xb4, 0x42, 0x2c, 0x23, 0xe9, 0xbf, 0x69, 0x45, 0xce, 0xf4, + 0x15, 0x42, 0x28, 0x9f, 0xba, 0xff, 0x57, 0xf4, 0xcb, 0x7d, 0x83, 0x3e, 0x49, 0x7d, 0x26, 0x0d, + 0x4c, 0x32, 0x61, 0x06, 0x5d, 0x05, 0x8b, 0xd0, 0xd3, 0x77, 0x0b, 0x99, 0xd5, 0x62, 0x34, 0x0f, + 0xa7, 0x2b, 0x78, 0xdf, 0x55, 0x90, 0x2d, 0x6d, 0x6b, 0x0e, 0x7a, 0xb3, 0x0c, 0x50, 0x6c, 0xb7, + 0xd7, 0xa8, 0x0f, 0x78, 0xd8, 0x21, 0xed, 0x2c, 0xcc, 0xb4, 0xb6, 0xb5, 0xe0, 0x6e, 0x13, 0xda, + 0x1f, 0x70, 0x69, 0xca, 0xd3, 0x02, 0x67, 0x72, 0x2a, 0x55, 0xd4, 0x03, 0x93, 0x5b, 0x06, 0xa3, + 0xed, 0x3b, 0x9a, 0xf3, 0xa1, 0x30, 0x63, 0x8f, 0xd0, 0xb9, 0xbf, 0xcf, 0x07, 0xec, 0x45, 0xcf, + 0xe1, 0x18, 0x69, 0xff, 0x80, 0x4d, 0x90, 0x90, 0xf0, 0xa4, 0xb7, 0x58, 0x40, 0x8f, 0x78, 0xbe, + 0xc6, 0x12, 0xba, 0x56, 0x29, 0xb7, 0x75, 0x4f, 0xb4, 0x2c, 0x60, 0x16, 0x7a, 0x61, 0x26, 0x19, + 0x7c, 0xf1, 0x82, 0xbb, 0x0f, 0x66, 0x71, 0x5b, 0x77, 0xb0, 0x57, 0x4b, 0x26, 0xc0, 0x38, 0x88, + 0xf9, 0x1f, 0xd0, 0x73, 0x85, 0x83, 0xae, 0x11, 0x81, 0xee, 0xaf, 0x51, 0x44, 0xfb, 0x13, 0x0b, + 0xa3, 0x26, 0x46, 0x33, 0x7d, 0xb0, 0x7e, 0x4a, 0x86, 0x13, 0x0d, 0x73, 0x6b, 0xab, 0x83, 0x3d, + 0x31, 0x61, 0xea, 0x9d, 0x89, 0xb4, 0x51, 0xc2, 0x45, 0x76, 0x82, 0xcc, 0x87, 0x74, 0xff, 0x28, + 0x99, 0xfb, 0xc2, 0x9f, 0x98, 0x8a, 0x9d, 0x45, 0x11, 0x71, 0xf5, 0xe5, 0x33, 0x02, 0x05, 0xb1, + 0x80, 0xcf, 0xc2, 0x64, 0xd3, 0x07, 0xe2, 0xb3, 0x12, 0xcc, 0xd2, 0x9b, 0x2b, 0x3d, 0x05, 0x7d, + 0x60, 0x84, 0x00, 0xa0, 0x6f, 0x65, 0x44, 0xfd, 0x6c, 0x89, 0x4c, 0x38, 0x4e, 0x22, 0x44, 0x2c, + 0x16, 0x54, 0x65, 0x20, 0xb9, 0xf4, 0x45, 0xfb, 0xa7, 0x32, 0x4c, 0x2f, 0x63, 0xaf, 0xa5, 0xd9, + 0x89, 0x7b, 0xa2, 0xb3, 0x30, 0x43, 0xae, 0x6f, 0xab, 0xb1, 0x63, 0x92, 0x74, 0xd5, 0x8c, 0x4b, + 0x53, 0xae, 0x87, 0xd9, 0x0b, 0x78, 0xd3, 0xb4, 0x70, 0x8d, 0x3b, 0x4b, 0xc9, 0x27, 0x46, 0x84, + 0xa7, 0xe3, 0xe2, 0xa0, 0x2d, 0xf0, 0xd8, 0xdc, 0xbc, 0x5f, 0x98, 0xa1, 0xaa, 0x44, 0x8c, 0x39, + 0x4f, 0x87, 0x49, 0x86, 0xbc, 0x67, 0xa6, 0xc5, 0xf5, 0x8b, 0x7e, 0x5e, 0xf4, 0x9b, 0x3e, 0xa2, + 0x65, 0x0e, 0xd1, 0xdb, 0x92, 0x30, 0x31, 0x96, 0xfb, 0xdd, 0x0b, 0xa1, 0xf2, 0x17, 0x2e, 0x57, + 0xda, 0x36, 0x5a, 0x4b, 0x86, 0xe9, 0x69, 0x00, 0xbf, 0x71, 0x78, 0x61, 0x2d, 0x42, 0x29, 0x7c, + 0xe4, 0xfa, 0xd8, 0x83, 0x7a, 0xbd, 0xe2, 0x20, 0xec, 0x8c, 0x18, 0x18, 0xb1, 0x03, 0x7e, 0x22, + 0x9c, 0xa4, 0x8f, 0xce, 0xc7, 0x64, 0x38, 0xe1, 0x9f, 0x3f, 0x5a, 0xd5, 0xec, 0xa0, 0xdd, 0x95, + 0x92, 0x41, 0xc4, 0x1d, 0xf8, 0xf0, 0x1b, 0xcb, 0xd7, 0x93, 0x8d, 0x19, 0x7d, 0x39, 0x19, 0x2d, + 0x3a, 0xca, 0xcd, 0x70, 0xcc, 0xd8, 0xdd, 0xf1, 0xa5, 0x4e, 0x5a, 0x3c, 0x6b, 0xe1, 0xfb, 0x3f, + 0x24, 0x19, 0x99, 0x44, 0x98, 0x1f, 0xcb, 0x9c, 0x92, 0x3b, 0xd2, 0xf5, 0x94, 0x44, 0x30, 0xa2, + 0x7f, 0xce, 0x24, 0xea, 0xdd, 0x06, 0x9f, 0xf9, 0x4a, 0xd0, 0x4b, 0x1d, 0xe2, 0x81, 0xaf, 0xb3, + 0x13, 0x90, 0x2b, 0xef, 0x74, 0x9d, 0xcb, 0x67, 0x9f, 0x08, 0xb3, 0x75, 0xc7, 0xc2, 0xda, 0x4e, + 0x68, 0x67, 0xc0, 0x31, 0x2f, 0x62, 0xc3, 0xdb, 0x19, 0x20, 0x2f, 0x77, 0xde, 0x01, 0x13, 0x86, + 0xd9, 0xd4, 0x76, 0x9d, 0x6d, 0xe5, 0xda, 0x7d, 0x47, 0xea, 0x19, 0xf8, 0x35, 0x16, 0xc3, 0xe8, + 0x0b, 0x77, 0x91, 0xb5, 0xe1, 0xbc, 0x61, 0x16, 0x77, 0x9d, 0xed, 0x85, 0x6b, 0x3e, 0xf4, 0xb7, + 0xa7, 0x33, 0x1f, 0xff, 0xdb, 0xd3, 0x99, 0xcf, 0xff, 0xed, 0xe9, 0xcc, 0xcf, 0x7d, 0xf1, 0xf4, + 0x91, 0x8f, 0x7f, 0xf1, 0xf4, 0x91, 0xcf, 0x7e, 0xf1, 0xf4, 0x91, 0x1f, 0x96, 0xba, 0x17, 0x2e, + 0xe4, 0x09, 0x95, 0xa7, 0xfe, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x3c, 0x7e, 0x47, 0xee, 0xc5, + 0x0b, 0x02, 0x00, } func (m *Rpc) Marshal() (dAtA []byte, err error) { @@ -88856,6 +88865,16 @@ func (m *RpcObjectListExportRequest) MarshalToSizedBuffer(dAtA []byte) (int, err _ = i var l int _ = l + if m.IncludeBacklinks { + i-- + if m.IncludeBacklinks { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x68 + } if m.LinksStateFilters != nil { { size, err := m.LinksStateFilters.MarshalToSizedBuffer(dAtA[:i]) @@ -125555,6 +125574,9 @@ func (m *RpcObjectListExportRequest) Size() (n int) { l = m.LinksStateFilters.Size() n += 1 + l + sovCommands(uint64(l)) } + if m.IncludeBacklinks { + n += 2 + } return n } @@ -179457,6 +179479,26 @@ func (m *RpcObjectListExportRequest) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 13: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field IncludeBacklinks", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.IncludeBacklinks = bool(v != 0) default: iNdEx = preIndex skippy, err := skipCommands(dAtA[iNdEx:]) diff --git a/pb/protos/commands.proto b/pb/protos/commands.proto index f7f42efdd..fc639f56e 100644 --- a/pb/protos/commands.proto +++ b/pb/protos/commands.proto @@ -2783,6 +2783,7 @@ message Rpc { // for integrations like raycast and web publishing bool noProgress = 11; StateFilters linksStateFilters = 12; + bool includeBacklinks = 13; } message StateFilters { repeated RelationsWhiteList relationsWhiteList = 1; From 311c7f1a64d0d444fab20e8ece9c72fec7ae8c1d Mon Sep 17 00:00:00 2001 From: AnastasiaShemyakinskaya Date: Tue, 28 Jan 2025 15:09:28 +0100 Subject: [PATCH 260/279] GO-4961: remove duplicate code Signed-off-by: AnastasiaShemyakinskaya --- core/block/object/objectlink/dependent_objects_test.go | 4 ---- 1 file changed, 4 deletions(-) diff --git a/core/block/object/objectlink/dependent_objects_test.go b/core/block/object/objectlink/dependent_objects_test.go index 6b97068be..87b8df451 100644 --- a/core/block/object/objectlink/dependent_objects_test.go +++ b/core/block/object/objectlink/dependent_objects_test.go @@ -339,10 +339,6 @@ func TestState_DepSmartIdsLinksDetailsAndRelations(t *testing.T) { objectIDs := DependentObjectIDs(stateWithLinks, converter, Flags{Blocks: true, Relations: true, Details: true}) assert.Len(t, objectIDs, 14) // 4 links + 5 relations + 3 options + 1 fileID + 1 date }) - t.Run("blocks, relations and details option are turned on: get ids from blocks, relations and details", func(t *testing.T) { - objectIDs := DependentObjectIDs(stateWithLinks, converter, Flags{Blocks: true, Relations: true, Details: true}) - assert.Len(t, objectIDs, 14) // 4 links + 5 relations + 3 options + 1 fileID + 1 date - }) } func TestState_DepSmartIdsLinksCreatorModifierWorkspace(t *testing.T) { From 5908ca1cdf93b17f2279b4b5e284db04067a2e16 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Tue, 28 Jan 2025 18:30:39 +0100 Subject: [PATCH 261/279] GO-4459: Refactor search tests --- core/api/internal/object/service.go | 4 +- core/api/internal/search/service_test.go | 144 +++++++++++++---------- core/api/internal/space/service.go | 4 +- 3 files changed, 87 insertions(+), 65 deletions(-) diff --git a/core/api/internal/object/service.go b/core/api/internal/object/service.go index 59f14ee2d..91efda7b2 100644 --- a/core/api/internal/object/service.go +++ b/core/api/internal/object/service.go @@ -457,7 +457,7 @@ func (s *ObjectService) GetDetails(resp *pb.RpcObjectShowResponse) []Detail { { Id: "last_modified_by", Details: map[string]interface{}{ - "details": s.spaceService.GetParticipantDetails(s.mw, s.AccountInfo, resp.ObjectView.Details[0].Details.Fields[bundle.RelationKeySpaceId.String()].GetStringValue(), lastModifiedById), + "details": s.spaceService.GetParticipantDetails(s.mw, resp.ObjectView.Details[0].Details.Fields[bundle.RelationKeySpaceId.String()].GetStringValue(), lastModifiedById), }, }, { @@ -469,7 +469,7 @@ func (s *ObjectService) GetDetails(resp *pb.RpcObjectShowResponse) []Detail { { Id: "created_by", Details: map[string]interface{}{ - "details": s.spaceService.GetParticipantDetails(s.mw, s.AccountInfo, resp.ObjectView.Details[0].Details.Fields[bundle.RelationKeySpaceId.String()].GetStringValue(), creatorId), + "details": s.spaceService.GetParticipantDetails(s.mw, resp.ObjectView.Details[0].Details.Fields[bundle.RelationKeySpaceId.String()].GetStringValue(), creatorId), }, }, { diff --git a/core/api/internal/search/service_test.go b/core/api/internal/search/service_test.go index 8cf6b94cf..494386b3f 100644 --- a/core/api/internal/search/service_test.go +++ b/core/api/internal/search/service_test.go @@ -18,11 +18,29 @@ import ( ) const ( - offset = 0 - limit = 100 - techSpaceId = "tech-space-id" - gatewayUrl = "http://localhost:31006" - mockedObjectTypeName = "mocked-object-type-name" + offset = 0 + limit = 100 + techSpaceId = "tech-space-id" + gatewayUrl = "http://localhost:31006" + mockedSpaceId = "mocked-space-id" + mockedSearchTerm = "mocked-search-term" + mockedObjectId = "mocked-object-id" + mockedObjectName = "mocked-object-name" + mockedRootId = "mocked-root-id" + mockedParticipantId = "mocked-participant-id" + mockedType = "mocked-type" + mockedTagId1 = "mocked-tag-id-1" + mockedTagValue1 = "mocked-tag-value-1" + mockedTagColor1 = "mocked-tag-color-1" + mockedTagId2 = "mocked-tag-id-2" + mockedTagValue2 = "mocked-tag-value-2" + mockedTagColor2 = "mocked-tag-color-2" + mockedObjectTypeName = "mocked-object-type-name" + mockedParticipantName = "mocked-participant-name" + mockedParticipantIcon = "mocked-participant-icon" + mockedParticipantImage = "mocked-participant-image" + mockedParticipantIdentity = "mocked-participant-identity" + mockedParticipantGlobalName = "mocked-participant-global-name" ) type fixture struct { @@ -34,7 +52,7 @@ func newFixture(t *testing.T) *fixture { mw := mock_service.NewMockClientCommandsServer(t) spaceService := space.NewService(mw) - spaceService.AccountInfo = &model.AccountInfo{TechSpaceId: techSpaceId} + spaceService.AccountInfo = &model.AccountInfo{TechSpaceId: techSpaceId, GatewayUrl: gatewayUrl} objectService := object.NewService(mw, spaceService) objectService.AccountInfo = &model.AccountInfo{TechSpaceId: techSpaceId} searchService := NewService(mw, spaceService, objectService) @@ -49,7 +67,7 @@ func newFixture(t *testing.T) *fixture { } } -func TestSearchService_Search(t *testing.T) { +func TestSearchService_GlobalSearch(t *testing.T) { t.Run("objects found globally", func(t *testing.T) { // given ctx := context.Background() @@ -85,7 +103,7 @@ func TestSearchService_Search(t *testing.T) { Records: []*types.Struct{ { Fields: map[string]*types.Value{ - bundle.RelationKeyTargetSpaceId.String(): pbtypes.String("space-1"), + bundle.RelationKeyTargetSpaceId.String(): pbtypes.String(mockedSpaceId), }, }, }, @@ -94,18 +112,18 @@ func TestSearchService_Search(t *testing.T) { // Mock workspace opening fx.mwMock.On("WorkspaceOpen", mock.Anything, &pb.RpcWorkspaceOpenRequest{ - SpaceId: "space-1", + SpaceId: mockedSpaceId, WithChat: true, }).Return(&pb.RpcWorkspaceOpenResponse{ Info: &model.AccountInfo{ - TechSpaceId: "space-1", + TechSpaceId: mockedSpaceId, }, Error: &pb.RpcWorkspaceOpenResponseError{Code: pb.RpcWorkspaceOpenResponseError_NULL}, }).Once() - // Mock objects in space-1 + // Mock objects in space fx.mwMock.On("ObjectSearch", mock.Anything, &pb.RpcObjectSearchRequest{ - SpaceId: "space-1", + SpaceId: mockedSpaceId, Filters: []*model.BlockContentDataviewFilter{ { Operator: model.BlockContentDataviewFilter_And, @@ -138,13 +156,13 @@ func TestSearchService_Search(t *testing.T) { Operator: model.BlockContentDataviewFilter_No, RelationKey: bundle.RelationKeyName.String(), Condition: model.BlockContentDataviewFilter_Like, - Value: pbtypes.String("search-term"), + Value: pbtypes.String(mockedSearchTerm), }, { Operator: model.BlockContentDataviewFilter_No, RelationKey: bundle.RelationKeySnippet.String(), Condition: model.BlockContentDataviewFilter_Like, - Value: pbtypes.String("search-term"), + Value: pbtypes.String(mockedSearchTerm), }, }, }, @@ -164,9 +182,9 @@ func TestSearchService_Search(t *testing.T) { Records: []*types.Struct{ { Fields: map[string]*types.Value{ - bundle.RelationKeyId.String(): pbtypes.String("obj-global-1"), - bundle.RelationKeyName.String(): pbtypes.String("Global Object"), - bundle.RelationKeySpaceId.String(): pbtypes.String("space-1"), + bundle.RelationKeyId.String(): pbtypes.String(mockedObjectId), + bundle.RelationKeyName.String(): pbtypes.String(mockedObjectName), + bundle.RelationKeySpaceId.String(): pbtypes.String(mockedSpaceId), }, }, }, @@ -175,14 +193,14 @@ func TestSearchService_Search(t *testing.T) { // Mock object show for object blocks and details fx.mwMock.On("ObjectShow", mock.Anything, &pb.RpcObjectShowRequest{ - SpaceId: "space-1", - ObjectId: "obj-global-1", + SpaceId: mockedSpaceId, + ObjectId: mockedObjectId, }).Return(&pb.RpcObjectShowResponse{ ObjectView: &model.ObjectView{ - RootId: "root-123", + RootId: mockedRootId, Blocks: []*model.Block{ { - Id: "root-123", + Id: mockedRootId, Restrictions: &model.BlockRestrictions{ Read: false, Edit: false, @@ -190,7 +208,7 @@ func TestSearchService_Search(t *testing.T) { Drag: false, DropOn: false, }, - ChildrenIds: []string{"header", "text-block", "relation-block"}, + ChildrenIds: []string{"header", "text-block"}, }, { Id: "header", @@ -215,46 +233,46 @@ func TestSearchService_Search(t *testing.T) { }, Details: []*model.ObjectViewDetailsSet{ { - Id: "root-123", + Id: mockedRootId, Details: &types.Struct{ Fields: map[string]*types.Value{ - bundle.RelationKeyId.String(): pbtypes.String("obj-global-1"), - bundle.RelationKeyName.String(): pbtypes.String("Global Object"), + bundle.RelationKeyId.String(): pbtypes.String(mockedObjectId), + bundle.RelationKeyName.String(): pbtypes.String(mockedObjectName), bundle.RelationKeyLayout.String(): pbtypes.Int64(int64(model.ObjectType_basic)), bundle.RelationKeyIconEmoji.String(): pbtypes.String("ðŸŒ"), bundle.RelationKeyLastModifiedDate.String(): pbtypes.Float64(999999), - bundle.RelationKeyLastModifiedBy.String(): pbtypes.String("participant-id"), + bundle.RelationKeyLastModifiedBy.String(): pbtypes.String(mockedParticipantId), bundle.RelationKeyCreatedDate.String(): pbtypes.Float64(888888), - bundle.RelationKeyCreator.String(): pbtypes.String("participant-id"), - bundle.RelationKeySpaceId.String(): pbtypes.String("space-1"), - bundle.RelationKeyType.String(): pbtypes.String("type-1"), - bundle.RelationKeyTag.String(): pbtypes.StringList([]string{"tag-1", "tag-2"}), + bundle.RelationKeyCreator.String(): pbtypes.String(mockedParticipantId), + bundle.RelationKeySpaceId.String(): pbtypes.String(mockedSpaceId), + bundle.RelationKeyType.String(): pbtypes.String(mockedType), + bundle.RelationKeyTag.String(): pbtypes.StringList([]string{mockedTagId1, mockedTagId2}), }, }, }, { - Id: "participant-id", + Id: mockedParticipantId, Details: &types.Struct{ Fields: map[string]*types.Value{ - bundle.RelationKeyId.String(): pbtypes.String("participant-id"), + bundle.RelationKeyId.String(): pbtypes.String(mockedParticipantId), }, }, }, { - Id: "tag-1", + Id: mockedTagId1, Details: &types.Struct{ Fields: map[string]*types.Value{ - bundle.RelationKeyName.String(): pbtypes.String("Important"), - bundle.RelationKeyRelationOptionColor.String(): pbtypes.String("red"), + bundle.RelationKeyName.String(): pbtypes.String(mockedTagValue1), + bundle.RelationKeyRelationOptionColor.String(): pbtypes.String(mockedTagColor1), }, }, }, { - Id: "tag-2", + Id: mockedTagId2, Details: &types.Struct{ Fields: map[string]*types.Value{ - bundle.RelationKeyName.String(): pbtypes.String("Optional"), - bundle.RelationKeyRelationOptionColor.String(): pbtypes.String("blue"), + bundle.RelationKeyName.String(): pbtypes.String(mockedTagValue2), + bundle.RelationKeyRelationOptionColor.String(): pbtypes.String(mockedTagColor2), }, }, }, @@ -265,13 +283,13 @@ func TestSearchService_Search(t *testing.T) { // Mock type resolution fx.mwMock.On("ObjectSearch", mock.Anything, &pb.RpcObjectSearchRequest{ - SpaceId: "space-1", + SpaceId: mockedSpaceId, Filters: []*model.BlockContentDataviewFilter{ { Operator: model.BlockContentDataviewFilter_No, RelationKey: bundle.RelationKeyId.String(), Condition: model.BlockContentDataviewFilter_Equal, - Value: pbtypes.String("type-1"), + Value: pbtypes.String(mockedType), }, }, Keys: []string{bundle.RelationKeyName.String()}, @@ -288,13 +306,13 @@ func TestSearchService_Search(t *testing.T) { // Mock participant details fx.mwMock.On("ObjectSearch", mock.Anything, &pb.RpcObjectSearchRequest{ - SpaceId: "space-1", + SpaceId: mockedSpaceId, Filters: []*model.BlockContentDataviewFilter{ { Operator: model.BlockContentDataviewFilter_No, RelationKey: bundle.RelationKeyId.String(), Condition: model.BlockContentDataviewFilter_Equal, - Value: pbtypes.String("participant-id"), + Value: pbtypes.String(mockedParticipantId), }, }, Keys: []string{bundle.RelationKeyId.String(), @@ -309,12 +327,12 @@ func TestSearchService_Search(t *testing.T) { Records: []*types.Struct{ { Fields: map[string]*types.Value{ - bundle.RelationKeyId.String(): pbtypes.String("participant-id"), - bundle.RelationKeyName.String(): pbtypes.String("Participant Name"), - bundle.RelationKeyIconEmoji.String(): pbtypes.String("emoji"), - bundle.RelationKeyIconImage.String(): pbtypes.String("image-url"), - bundle.RelationKeyIdentity.String(): pbtypes.String("identity"), - bundle.RelationKeyGlobalName.String(): pbtypes.String("global-name"), + bundle.RelationKeyId.String(): pbtypes.String(mockedParticipantId), + bundle.RelationKeyName.String(): pbtypes.String(mockedParticipantName), + bundle.RelationKeyIconEmoji.String(): pbtypes.String(mockedParticipantIcon), + bundle.RelationKeyIconImage.String(): pbtypes.String(mockedParticipantImage), + bundle.RelationKeyIdentity.String(): pbtypes.String(mockedParticipantIdentity), + bundle.RelationKeyGlobalName.String(): pbtypes.String(mockedParticipantGlobalName), bundle.RelationKeyParticipantPermissions.String(): pbtypes.Int64(int64(model.ParticipantPermissions_Reader)), }, }, @@ -323,16 +341,16 @@ func TestSearchService_Search(t *testing.T) { }).Twice() // when - objects, total, hasMore, err := fx.GlobalSearch(ctx, SearchRequest{Query: "search-term", Types: []string{}, Sort: SortOptions{Direction: "desc", Timestamp: "last_modified_date"}}, offset, limit) + objects, total, hasMore, err := fx.GlobalSearch(ctx, SearchRequest{Query: mockedSearchTerm, Types: []string{}, Sort: SortOptions{Direction: "desc", Timestamp: "last_modified_date"}}, offset, limit) // then require.NoError(t, err) require.Len(t, objects, 1) require.Equal(t, mockedObjectTypeName, objects[0].Type) - require.Equal(t, "space-1", objects[0].SpaceId) - require.Equal(t, "Global Object", objects[0].Name) - require.Equal(t, "obj-global-1", objects[0].Id) - require.Equal(t, "basic", objects[0].Layout) + require.Equal(t, mockedSpaceId, objects[0].SpaceId) + require.Equal(t, mockedObjectName, objects[0].Name) + require.Equal(t, mockedObjectId, objects[0].Id) + require.Equal(t, model.ObjectTypeLayout_name[int32(model.ObjectType_basic)], objects[0].Layout) require.Equal(t, "ðŸŒ", objects[0].Icon) require.Equal(t, "This is a sample text block", objects[0].Blocks[2].Text.Text) @@ -343,9 +361,13 @@ func TestSearchService_Search(t *testing.T) { } else if detail.Id == "last_modified_date" { require.Equal(t, "1970-01-12T13:46:39Z", detail.Details["last_modified_date"]) } else if detail.Id == "created_by" { - require.Equal(t, "participant-id", detail.Details["details"].(space.Member).Id) + require.Equal(t, mockedParticipantId, detail.Details["details"].(space.Member).Id) + require.Equal(t, mockedParticipantName, detail.Details["details"].(space.Member).Name) + require.Equal(t, gatewayUrl+"/image/"+mockedParticipantImage, detail.Details["details"].(space.Member).Icon) + require.Equal(t, mockedParticipantIdentity, detail.Details["details"].(space.Member).Identity) + require.Equal(t, mockedParticipantGlobalName, detail.Details["details"].(space.Member).GlobalName) } else if detail.Id == "last_modified_by" { - require.Equal(t, "participant-id", detail.Details["details"].(space.Member).Id) + require.Equal(t, mockedParticipantId, detail.Details["details"].(space.Member).Id) } } @@ -359,12 +381,12 @@ func TestSearchService_Search(t *testing.T) { } } require.Len(t, tags, 2) - require.Equal(t, "tag-1", tags[0].Id) - require.Equal(t, "Important", tags[0].Name) - require.Equal(t, "red", tags[0].Color) - require.Equal(t, "tag-2", tags[1].Id) - require.Equal(t, "Optional", tags[1].Name) - require.Equal(t, "blue", tags[1].Color) + require.Equal(t, mockedTagId1, tags[0].Id) + require.Equal(t, mockedTagValue1, tags[0].Name) + require.Equal(t, mockedTagColor1, tags[0].Color) + require.Equal(t, mockedTagId2, tags[1].Id) + require.Equal(t, mockedTagValue2, tags[1].Name) + require.Equal(t, mockedTagColor2, tags[1].Color) require.Equal(t, 1, total) require.False(t, hasMore) diff --git a/core/api/internal/space/service.go b/core/api/internal/space/service.go index 9aff17913..9a617b847 100644 --- a/core/api/internal/space/service.go +++ b/core/api/internal/space/service.go @@ -174,7 +174,7 @@ func (s *SpaceService) ListMembers(ctx context.Context, spaceId string, offset i return members, total, hasMore, nil } -func (s *SpaceService) GetParticipantDetails(mw service.ClientCommandsServer, accountInfo *model.AccountInfo, spaceId string, participantId string) Member { +func (s *SpaceService) GetParticipantDetails(mw service.ClientCommandsServer, spaceId string, participantId string) Member { resp := mw.ObjectSearch(context.Background(), &pb.RpcObjectSearchRequest{ SpaceId: spaceId, Filters: []*model.BlockContentDataviewFilter{ @@ -196,7 +196,7 @@ func (s *SpaceService) GetParticipantDetails(mw service.ClientCommandsServer, ac return Member{} } - icon := util.GetIconFromEmojiOrImage(accountInfo, "", resp.Records[0].Fields[bundle.RelationKeyIconImage.String()].GetStringValue()) + icon := util.GetIconFromEmojiOrImage(s.AccountInfo, "", resp.Records[0].Fields[bundle.RelationKeyIconImage.String()].GetStringValue()) return Member{ Type: "member", From 60b6b6e4b7e850b677d4876a80df18b48867ec58 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Tue, 28 Jan 2025 18:44:38 +0100 Subject: [PATCH 262/279] GO-4459: Add tests for new type and template endpoint --- core/api/internal/object/service_test.go | 125 +++++++++++++++++++++++ 1 file changed, 125 insertions(+) diff --git a/core/api/internal/object/service_test.go b/core/api/internal/object/service_test.go index d7c485775..10ba7e1c4 100644 --- a/core/api/internal/object/service_test.go +++ b/core/api/internal/object/service_test.go @@ -29,6 +29,13 @@ const ( mockedObjectSnippet = "mocked-object-snippet" mockedObjectIcon = "ðŸ”" mockedObjectTypeUniqueKey = "ot-page" + mockedTypeId = "mocked-type-id" + mockedTypeName = "mocked-type-name" + mockedTypeUniqueKey = "mocked-type-unique-key" + mockedTypeIcon = "ðŸ“" + mockedTemplateId = "mocked-template-id" + mockedTemplateName = "mocked-template-name" + mockedTemplateIcon = "📃" ) type fixture struct { @@ -571,6 +578,67 @@ func TestObjectService_ListTypes(t *testing.T) { }) } +func TestObjectService_GetType(t *testing.T) { + t.Run("type found", func(t *testing.T) { + // given + ctx := context.Background() + fx := newFixture(t) + + fx.mwMock.On("ObjectShow", mock.Anything, &pb.RpcObjectShowRequest{ + SpaceId: mockedSpaceId, + ObjectId: mockedTypeId, + }).Return(&pb.RpcObjectShowResponse{ + Error: &pb.RpcObjectShowResponseError{Code: pb.RpcObjectShowResponseError_NULL}, + ObjectView: &model.ObjectView{ + Details: []*model.ObjectViewDetailsSet{ + { + Details: &types.Struct{ + Fields: map[string]*types.Value{ + bundle.RelationKeyId.String(): pbtypes.String(mockedTypeId), + bundle.RelationKeyName.String(): pbtypes.String(mockedTypeName), + bundle.RelationKeyUniqueKey.String(): pbtypes.String(mockedTypeUniqueKey), + bundle.RelationKeyIconEmoji.String(): pbtypes.String(mockedTypeIcon), + bundle.RelationKeyRecommendedLayout.String(): pbtypes.Float64(float64(model.ObjectType_basic)), + }, + }, + }, + }, + }, + }).Once() + + // when + objType, err := fx.GetType(ctx, mockedSpaceId, mockedTypeId) + + // then + require.NoError(t, err) + require.Equal(t, mockedTypeId, objType.Id) + require.Equal(t, mockedTypeName, objType.Name) + require.Equal(t, mockedTypeUniqueKey, objType.UniqueKey) + require.Equal(t, mockedTypeIcon, objType.Icon) + require.Equal(t, model.ObjectTypeLayout_name[int32(model.ObjectType_basic)], objType.RecommendedLayout) + }) + + t.Run("type not found", func(t *testing.T) { + // given + ctx := context.Background() + fx := newFixture(t) + + fx.mwMock.On("ObjectShow", mock.Anything, &pb.RpcObjectShowRequest{ + SpaceId: mockedSpaceId, + ObjectId: mockedTypeId, + }).Return(&pb.RpcObjectShowResponse{ + Error: &pb.RpcObjectShowResponseError{Code: pb.RpcObjectShowResponseError_NOT_FOUND}, + }).Once() + + // when + objType, err := fx.GetType(ctx, mockedSpaceId, mockedTypeId) + + // then + require.ErrorIs(t, err, ErrTypeNotFound) + require.Empty(t, objType) + }) +} + func TestObjectService_ListTemplates(t *testing.T) { t.Run("templates found", func(t *testing.T) { // given @@ -654,3 +722,60 @@ func TestObjectService_ListTemplates(t *testing.T) { require.False(t, hasMore) }) } + +func TestObjectService_GetTemplate(t *testing.T) { + t.Run("template found", func(t *testing.T) { + // given + ctx := context.Background() + fx := newFixture(t) + + fx.mwMock.On("ObjectShow", mock.Anything, &pb.RpcObjectShowRequest{ + SpaceId: mockedSpaceId, + ObjectId: mockedTemplateId, + }).Return(&pb.RpcObjectShowResponse{ + Error: &pb.RpcObjectShowResponseError{Code: pb.RpcObjectShowResponseError_NULL}, + ObjectView: &model.ObjectView{ + Details: []*model.ObjectViewDetailsSet{ + { + Details: &types.Struct{ + Fields: map[string]*types.Value{ + bundle.RelationKeyId.String(): pbtypes.String(mockedTemplateId), + bundle.RelationKeyName.String(): pbtypes.String(mockedTemplateName), + bundle.RelationKeyIconEmoji.String(): pbtypes.String(mockedTemplateIcon), + }, + }, + }, + }, + }, + }).Once() + + // when + template, err := fx.GetTemplate(ctx, mockedSpaceId, mockedObjectType, mockedTemplateId) + + // then + require.NoError(t, err) + require.Equal(t, mockedTemplateId, template.Id) + require.Equal(t, mockedTemplateName, template.Name) + require.Equal(t, mockedTemplateIcon, template.Icon) + }) + + t.Run("template not found", func(t *testing.T) { + // given + ctx := context.Background() + fx := newFixture(t) + + fx.mwMock.On("ObjectShow", mock.Anything, &pb.RpcObjectShowRequest{ + SpaceId: mockedSpaceId, + ObjectId: mockedTemplateId, + }).Return(&pb.RpcObjectShowResponse{ + Error: &pb.RpcObjectShowResponseError{Code: pb.RpcObjectShowResponseError_NOT_FOUND}, + }).Once() + + // when + template, err := fx.GetTemplate(ctx, mockedSpaceId, mockedTypeId, mockedTemplateId) + + // then + require.ErrorIs(t, err, ErrTemplateNotFound) + require.Empty(t, template) + }) +} From 12ffaeba4299f2d077966560648095beed4247f6 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Tue, 28 Jan 2025 18:56:51 +0100 Subject: [PATCH 263/279] GO-4459: Return single sort instead of slice in prepareSorts --- core/api/internal/search/service.go | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/core/api/internal/search/service.go b/core/api/internal/search/service.go index 42dcd2ceb..58c783ef3 100644 --- a/core/api/internal/search/service.go +++ b/core/api/internal/search/service.go @@ -48,7 +48,7 @@ func (s *SearchService) GlobalSearch(ctx context.Context, request SearchRequest, baseFilters := s.prepareBaseFilters() queryFilters := s.prepareQueryFilter(request.Query) sorts := s.prepareSorts(request.Sort) - dateToSortAfter := sorts[0].RelationKey + dateToSortAfter := sorts.RelationKey allResponses := make([]*pb.RpcObjectSearchResponse, 0, len(spaces)) for _, space := range spaces { @@ -59,7 +59,7 @@ func (s *SearchService) GlobalSearch(ctx context.Context, request SearchRequest, objResp := s.mw.ObjectSearch(ctx, &pb.RpcObjectSearchRequest{ SpaceId: space.Id, Filters: filters, - Sorts: sorts, + Sorts: []*model.BlockContentDataviewSort{sorts}, Keys: []string{bundle.RelationKeyId.String(), bundle.RelationKeySpaceId.String(), dateToSortAfter}, Limit: int32(offset + limit), // nolint: gosec }) @@ -118,12 +118,12 @@ func (s *SearchService) Search(ctx context.Context, spaceId string, request Sear filters := s.combineFilters(model.BlockContentDataviewFilter_And, baseFilters, queryFilters, typeFilters) sorts := s.prepareSorts(request.Sort) - dateToSortAfter := sorts[0].RelationKey + dateToSortAfter := sorts.RelationKey resp := s.mw.ObjectSearch(ctx, &pb.RpcObjectSearchRequest{ SpaceId: spaceId, Filters: filters, - Sorts: sorts, + Sorts: []*model.BlockContentDataviewSort{sorts}, Keys: []string{bundle.RelationKeyId.String(), bundle.RelationKeySpaceId.String(), dateToSortAfter}, }) @@ -262,14 +262,14 @@ func (s *SearchService) prepareObjectTypeFilters(spaceId string, objectTypes []s } // prepareSorts returns a sort filter based on the given sort parameters -func (s *SearchService) prepareSorts(sort SortOptions) []*model.BlockContentDataviewSort { - return []*model.BlockContentDataviewSort{{ +func (s *SearchService) prepareSorts(sort SortOptions) *model.BlockContentDataviewSort { + return &model.BlockContentDataviewSort{ RelationKey: s.getSortRelationKey(sort.Timestamp), Type: s.getSortDirection(sort.Direction), Format: model.RelationFormat_date, IncludeTime: true, EmptyPlacement: model.BlockContentDataviewSort_NotSpecified, - }} + } } // getSortRelationKey returns the relation key for the given sort timestamp From 58e85ba22473de21447db29e115ab88120bafd01 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Tue, 28 Jan 2025 19:26:32 +0100 Subject: [PATCH 264/279] GO-4459: Add tests for single space search endpoint --- core/api/internal/search/service_test.go | 202 +++++++++++++++++++++++ 1 file changed, 202 insertions(+) diff --git a/core/api/internal/search/service_test.go b/core/api/internal/search/service_test.go index 494386b3f..1f248690f 100644 --- a/core/api/internal/search/service_test.go +++ b/core/api/internal/search/service_test.go @@ -392,3 +392,205 @@ func TestSearchService_GlobalSearch(t *testing.T) { require.False(t, hasMore) }) } + +func TestSearchService_Search(t *testing.T) { + t.Run("objects found in a specific space", func(t *testing.T) { + // given + ctx := context.Background() + fx := newFixture(t) + + // Mock objects in space + fx.mwMock.On("ObjectSearch", mock.Anything, &pb.RpcObjectSearchRequest{ + SpaceId: mockedSpaceId, + Filters: []*model.BlockContentDataviewFilter{ + { + Operator: model.BlockContentDataviewFilter_And, + NestedFilters: []*model.BlockContentDataviewFilter{ + { + Operator: model.BlockContentDataviewFilter_No, + RelationKey: bundle.RelationKeyLayout.String(), + Condition: model.BlockContentDataviewFilter_In, + Value: pbtypes.IntList([]int{ + int(model.ObjectType_basic), + int(model.ObjectType_profile), + int(model.ObjectType_todo), + int(model.ObjectType_note), + int(model.ObjectType_bookmark), + int(model.ObjectType_set), + int(model.ObjectType_collection), + int(model.ObjectType_participant), + }...), + }, + { + Operator: model.BlockContentDataviewFilter_No, + RelationKey: bundle.RelationKeyIsHidden.String(), + Condition: model.BlockContentDataviewFilter_NotEqual, + Value: pbtypes.Bool(true), + }, + { + Operator: model.BlockContentDataviewFilter_Or, + NestedFilters: []*model.BlockContentDataviewFilter{ + { + Operator: model.BlockContentDataviewFilter_No, + RelationKey: bundle.RelationKeyName.String(), + Condition: model.BlockContentDataviewFilter_Like, + Value: pbtypes.String(mockedSearchTerm), + }, + { + Operator: model.BlockContentDataviewFilter_No, + RelationKey: bundle.RelationKeySnippet.String(), + Condition: model.BlockContentDataviewFilter_Like, + Value: pbtypes.String(mockedSearchTerm), + }, + }, + }, + }, + }, + }, + Sorts: []*model.BlockContentDataviewSort{{ + RelationKey: bundle.RelationKeyLastModifiedDate.String(), + Type: model.BlockContentDataviewSort_Desc, + Format: model.RelationFormat_date, + IncludeTime: true, + EmptyPlacement: model.BlockContentDataviewSort_NotSpecified, + }}, + Keys: []string{bundle.RelationKeyId.String(), bundle.RelationKeySpaceId.String(), bundle.RelationKeyLastModifiedDate.String()}, + }).Return(&pb.RpcObjectSearchResponse{ + Records: []*types.Struct{ + { + Fields: map[string]*types.Value{ + bundle.RelationKeyId.String(): pbtypes.String(mockedObjectId), + bundle.RelationKeyName.String(): pbtypes.String(mockedObjectName), + bundle.RelationKeySpaceId.String(): pbtypes.String(mockedSpaceId), + }, + }, + }, + Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, + }).Once() + + // Mock object show for object details + fx.mwMock.On("ObjectShow", mock.Anything, &pb.RpcObjectShowRequest{ + SpaceId: mockedSpaceId, + ObjectId: mockedObjectId, + }).Return(&pb.RpcObjectShowResponse{ + ObjectView: &model.ObjectView{ + RootId: mockedRootId, + Details: []*model.ObjectViewDetailsSet{ + { + Details: &types.Struct{ + Fields: map[string]*types.Value{ + bundle.RelationKeyId.String(): pbtypes.String(mockedObjectId), + bundle.RelationKeyName.String(): pbtypes.String(mockedObjectName), + bundle.RelationKeyLayout.String(): pbtypes.Int64(int64(model.ObjectType_basic)), + bundle.RelationKeyLastModifiedDate.String(): pbtypes.Float64(999999), + bundle.RelationKeySpaceId.String(): pbtypes.String(mockedSpaceId), + bundle.RelationKeyType.String(): pbtypes.String(mockedType), + }, + }, + }, + }, + }, + Error: &pb.RpcObjectShowResponseError{Code: pb.RpcObjectShowResponseError_NULL}, + }).Once() + + // Mock type resolution + fx.mwMock.On("ObjectSearch", mock.Anything, &pb.RpcObjectSearchRequest{ + SpaceId: mockedSpaceId, + Filters: []*model.BlockContentDataviewFilter{ + { + Operator: model.BlockContentDataviewFilter_No, + RelationKey: bundle.RelationKeyId.String(), + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.String(mockedType), + }, + }, + Keys: []string{bundle.RelationKeyName.String()}, + }).Return(&pb.RpcObjectSearchResponse{ + Records: []*types.Struct{ + { + Fields: map[string]*types.Value{ + bundle.RelationKeyName.String(): pbtypes.String(mockedObjectTypeName), + }, + }, + }, + Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, + }).Once() + + // Mock participant details + fx.mwMock.On("ObjectSearch", mock.Anything, &pb.RpcObjectSearchRequest{ + SpaceId: mockedSpaceId, + Filters: []*model.BlockContentDataviewFilter{ + { + Operator: model.BlockContentDataviewFilter_No, + RelationKey: bundle.RelationKeyId.String(), + Condition: model.BlockContentDataviewFilter_Equal, + Value: pbtypes.String(""), + }, + }, + Keys: []string{bundle.RelationKeyId.String(), + bundle.RelationKeyName.String(), + bundle.RelationKeyIconEmoji.String(), + bundle.RelationKeyIconImage.String(), + bundle.RelationKeyIdentity.String(), + bundle.RelationKeyGlobalName.String(), + bundle.RelationKeyParticipantPermissions.String(), + }, + }).Return(&pb.RpcObjectSearchResponse{ + Records: []*types.Struct{}, + Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, + }).Twice() + + // when + objects, total, hasMore, err := fx.Search(ctx, mockedSpaceId, SearchRequest{Query: mockedSearchTerm, Types: []string{}, Sort: SortOptions{Direction: "desc", Timestamp: "last_modified_date"}}, offset, limit) + + // then + require.NoError(t, err) + require.Len(t, objects, 1) + require.Equal(t, mockedObjectName, objects[0].Name) + require.Equal(t, mockedObjectId, objects[0].Id) + require.Equal(t, mockedSpaceId, objects[0].SpaceId) + require.Equal(t, model.ObjectTypeLayout_name[int32(model.ObjectType_basic)], objects[0].Layout) + + require.Equal(t, 1, total) + require.False(t, hasMore) + }) + + t.Run("no objects found in space", func(t *testing.T) { + // given + ctx := context.Background() + fx := newFixture(t) + + fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything).Return(&pb.RpcObjectSearchResponse{ + Records: []*types.Struct{}, + Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_NULL}, + }).Once() + + // when + objects, total, hasMore, err := fx.Search(ctx, mockedSpaceId, SearchRequest{Query: mockedSearchTerm, Types: []string{}, Sort: SortOptions{Direction: "desc", Timestamp: "last_modified_date"}}, offset, limit) + + // then + require.NoError(t, err) + require.Len(t, objects, 0) + require.Equal(t, 0, total) + require.False(t, hasMore) + }) + + t.Run("error during search", func(t *testing.T) { + // given + ctx := context.Background() + fx := newFixture(t) + + fx.mwMock.On("ObjectSearch", mock.Anything, mock.Anything).Return(&pb.RpcObjectSearchResponse{ + Error: &pb.RpcObjectSearchResponseError{Code: pb.RpcObjectSearchResponseError_UNKNOWN_ERROR}, + }).Once() + + // when + objects, total, hasMore, err := fx.Search(ctx, mockedSpaceId, SearchRequest{Query: mockedSearchTerm, Types: []string{}, Sort: SortOptions{Direction: "desc", Timestamp: "last_modified_date"}}, offset, limit) + + // then + require.Error(t, err) + require.Empty(t, objects) + require.Equal(t, 0, total) + require.False(t, hasMore) + }) +} From 1fd4ad454b2b6724778c44d51dba077d54bb1eb7 Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Tue, 28 Jan 2025 21:13:12 +0100 Subject: [PATCH 265/279] GO-4459: Improve swagger --- core/api/docs/docs.go | 83 ++++++++++++++++++++--------- core/api/docs/swagger.json | 83 ++++++++++++++++++++--------- core/api/docs/swagger.yaml | 73 +++++++++++++++++-------- core/api/internal/auth/model.go | 4 +- core/api/internal/export/handler.go | 2 +- core/api/internal/export/model.go | 4 +- core/api/internal/object/model.go | 8 +-- core/api/internal/search/handler.go | 26 ++++----- core/api/internal/search/model.go | 4 +- core/api/internal/space/handler.go | 2 +- core/api/internal/space/model.go | 4 +- 11 files changed, 193 insertions(+), 100 deletions(-) diff --git a/core/api/docs/docs.go b/core/api/docs/docs.go index 2264a46c9..838673118 100644 --- a/core/api/docs/docs.go +++ b/core/api/docs/docs.go @@ -159,13 +159,7 @@ const docTemplate = `{ "200": { "description": "List of objects", "schema": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "$ref": "#/definitions/object.Object" - } - } + "$ref": "#/definitions/pagination.PaginatedResponse-object_Object" } }, "401": { @@ -246,12 +240,12 @@ const docTemplate = `{ "summary": "Create space", "parameters": [ { - "description": "Space Name", + "description": "Space to create", "name": "name", "in": "body", "required": true, "schema": { - "type": "string" + "$ref": "#/definitions/space.CreateSpaceRequest" } } ], @@ -599,6 +593,10 @@ const docTemplate = `{ "required": true }, { + "enum": [ + "markdown", + "protobuf" + ], "type": "string", "description": "Export format", "name": "format", @@ -683,13 +681,7 @@ const docTemplate = `{ "200": { "description": "List of objects", "schema": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "$ref": "#/definitions/object.Object" - } - } + "$ref": "#/definitions/pagination.PaginatedResponse-object_Object" } }, "401": { @@ -965,11 +957,11 @@ const docTemplate = `{ "properties": { "app_key": { "type": "string", - "example": "" + "example": "zhSG/zQRmgADyilWPtgdnfo1qD60oK02/SVgi1GaFt6=" }, "session_token": { "type": "string", - "example": "" + "example": "eyJhbGciOeJIRzI1NiIsInR5cCI6IkpXVCJ1.eyJzZWVkIjaiY0dmVndlUnAifQ.Y1EZecYnwmvMkrXKOa2XJnAbaRt34urBabe06tmDQII" } } }, @@ -977,7 +969,8 @@ const docTemplate = `{ "type": "object", "properties": { "path": { - "type": "string" + "type": "string", + "example": "/path/to/export" } } }, @@ -987,7 +980,10 @@ const docTemplate = `{ "align": { "type": "string", "enum": [ - "AlignLeft|AlignCenter|AlignRight|AlignJustify" + "AlignLeft", + "AlignCenter", + "AlignRight", + "AlignJustify" ], "example": "AlignLeft" }, @@ -1017,7 +1013,9 @@ const docTemplate = `{ "vertical_align": { "type": "string", "enum": [ - "VerticalAlignTop|VerticalAlignMiddle|VerticalAlignBottom" + "VerticalAlignTop", + "VerticalAlignMiddle", + "VerticalAlignBottom" ], "example": "VerticalAlignTop" } @@ -1066,7 +1064,12 @@ const docTemplate = `{ "id": { "type": "string", "enum": [ - "last_modified_date|last_modified_by|created_date|created_by|last_opened_date|tags" + "last_modified_date", + "last_modified_by", + "created_date", + "created_by", + "last_opened_date", + "tags" ], "example": "last_modified_date" } @@ -1208,7 +1211,20 @@ const docTemplate = `{ "style": { "type": "string", "enum": [ - "Paragraph|Header1|Header2|Header3|Header4|Quote|Code|Title|Checkbox|Marked|Numbered|Toggle|Description|Callout" + "Paragraph", + "Header1", + "Header2", + "Header3", + "Header4", + "Quote", + "Code", + "Title", + "Checkbox", + "Marked", + "Numbered", + "Toggle", + "Description", + "Callout" ], "example": "Paragraph" }, @@ -1374,18 +1390,30 @@ const docTemplate = `{ "type": "string", "default": "desc", "enum": [ - "asc|desc" + "asc", + "desc" ] }, "timestamp": { "type": "string", "default": "last_modified_date", "enum": [ - "created_date|last_modified_date|last_opened_date" + "created_date", + "last_modified_date", + "last_opened_date" ] } } }, + "space.CreateSpaceRequest": { + "type": "object", + "properties": { + "name": { + "type": "string", + "example": "New Space" + } + } + }, "space.CreateSpaceResponse": { "type": "object", "properties": { @@ -1420,7 +1448,10 @@ const docTemplate = `{ "role": { "type": "string", "enum": [ - "Reader|Writer|Owner|NoPermission" + "Reader", + "Writer", + "Owner", + "NoPermission" ], "example": "Owner" }, diff --git a/core/api/docs/swagger.json b/core/api/docs/swagger.json index 1d99fd5f6..cf8fe16d3 100644 --- a/core/api/docs/swagger.json +++ b/core/api/docs/swagger.json @@ -153,13 +153,7 @@ "200": { "description": "List of objects", "schema": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "$ref": "#/definitions/object.Object" - } - } + "$ref": "#/definitions/pagination.PaginatedResponse-object_Object" } }, "401": { @@ -240,12 +234,12 @@ "summary": "Create space", "parameters": [ { - "description": "Space Name", + "description": "Space to create", "name": "name", "in": "body", "required": true, "schema": { - "type": "string" + "$ref": "#/definitions/space.CreateSpaceRequest" } } ], @@ -593,6 +587,10 @@ "required": true }, { + "enum": [ + "markdown", + "protobuf" + ], "type": "string", "description": "Export format", "name": "format", @@ -677,13 +675,7 @@ "200": { "description": "List of objects", "schema": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "$ref": "#/definitions/object.Object" - } - } + "$ref": "#/definitions/pagination.PaginatedResponse-object_Object" } }, "401": { @@ -959,11 +951,11 @@ "properties": { "app_key": { "type": "string", - "example": "" + "example": "zhSG/zQRmgADyilWPtgdnfo1qD60oK02/SVgi1GaFt6=" }, "session_token": { "type": "string", - "example": "" + "example": "eyJhbGciOeJIRzI1NiIsInR5cCI6IkpXVCJ1.eyJzZWVkIjaiY0dmVndlUnAifQ.Y1EZecYnwmvMkrXKOa2XJnAbaRt34urBabe06tmDQII" } } }, @@ -971,7 +963,8 @@ "type": "object", "properties": { "path": { - "type": "string" + "type": "string", + "example": "/path/to/export" } } }, @@ -981,7 +974,10 @@ "align": { "type": "string", "enum": [ - "AlignLeft|AlignCenter|AlignRight|AlignJustify" + "AlignLeft", + "AlignCenter", + "AlignRight", + "AlignJustify" ], "example": "AlignLeft" }, @@ -1011,7 +1007,9 @@ "vertical_align": { "type": "string", "enum": [ - "VerticalAlignTop|VerticalAlignMiddle|VerticalAlignBottom" + "VerticalAlignTop", + "VerticalAlignMiddle", + "VerticalAlignBottom" ], "example": "VerticalAlignTop" } @@ -1060,7 +1058,12 @@ "id": { "type": "string", "enum": [ - "last_modified_date|last_modified_by|created_date|created_by|last_opened_date|tags" + "last_modified_date", + "last_modified_by", + "created_date", + "created_by", + "last_opened_date", + "tags" ], "example": "last_modified_date" } @@ -1202,7 +1205,20 @@ "style": { "type": "string", "enum": [ - "Paragraph|Header1|Header2|Header3|Header4|Quote|Code|Title|Checkbox|Marked|Numbered|Toggle|Description|Callout" + "Paragraph", + "Header1", + "Header2", + "Header3", + "Header4", + "Quote", + "Code", + "Title", + "Checkbox", + "Marked", + "Numbered", + "Toggle", + "Description", + "Callout" ], "example": "Paragraph" }, @@ -1368,18 +1384,30 @@ "type": "string", "default": "desc", "enum": [ - "asc|desc" + "asc", + "desc" ] }, "timestamp": { "type": "string", "default": "last_modified_date", "enum": [ - "created_date|last_modified_date|last_opened_date" + "created_date", + "last_modified_date", + "last_opened_date" ] } } }, + "space.CreateSpaceRequest": { + "type": "object", + "properties": { + "name": { + "type": "string", + "example": "New Space" + } + } + }, "space.CreateSpaceResponse": { "type": "object", "properties": { @@ -1414,7 +1442,10 @@ "role": { "type": "string", "enum": [ - "Reader|Writer|Owner|NoPermission" + "Reader", + "Writer", + "Owner", + "NoPermission" ], "example": "Owner" }, diff --git a/core/api/docs/swagger.yaml b/core/api/docs/swagger.yaml index b91cdd6f7..550a59d1c 100644 --- a/core/api/docs/swagger.yaml +++ b/core/api/docs/swagger.yaml @@ -9,22 +9,26 @@ definitions: auth.TokenResponse: properties: app_key: - example: "" + example: zhSG/zQRmgADyilWPtgdnfo1qD60oK02/SVgi1GaFt6= type: string session_token: - example: "" + example: eyJhbGciOeJIRzI1NiIsInR5cCI6IkpXVCJ1.eyJzZWVkIjaiY0dmVndlUnAifQ.Y1EZecYnwmvMkrXKOa2XJnAbaRt34urBabe06tmDQII type: string type: object export.ObjectExportResponse: properties: path: + example: /path/to/export type: string type: object object.Block: properties: align: enum: - - AlignLeft|AlignCenter|AlignRight|AlignJustify + - AlignLeft + - AlignCenter + - AlignRight + - AlignJustify example: AlignLeft type: string background_color: @@ -45,7 +49,9 @@ definitions: $ref: '#/definitions/object.Text' vertical_align: enum: - - VerticalAlignTop|VerticalAlignMiddle|VerticalAlignBottom + - VerticalAlignTop + - VerticalAlignMiddle + - VerticalAlignBottom example: VerticalAlignTop type: string type: object @@ -80,7 +86,12 @@ definitions: type: object id: enum: - - last_modified_date|last_modified_by|created_date|created_by|last_opened_date|tags + - last_modified_date + - last_modified_by + - created_date + - created_by + - last_opened_date + - tags example: last_modified_date type: string type: object @@ -178,7 +189,20 @@ definitions: type: string style: enum: - - Paragraph|Header1|Header2|Header3|Header4|Quote|Code|Title|Checkbox|Marked|Numbered|Toggle|Description|Callout + - Paragraph + - Header1 + - Header2 + - Header3 + - Header4 + - Quote + - Code + - Title + - Checkbox + - Marked + - Numbered + - Toggle + - Description + - Callout example: Paragraph type: string text: @@ -291,12 +315,21 @@ definitions: direction: default: desc enum: - - asc|desc + - asc + - desc type: string timestamp: default: last_modified_date enum: - - created_date|last_modified_date|last_opened_date + - created_date + - last_modified_date + - last_opened_date + type: string + type: object + space.CreateSpaceRequest: + properties: + name: + example: New Space type: string type: object space.CreateSpaceResponse: @@ -323,7 +356,10 @@ definitions: type: string role: enum: - - Reader|Writer|Owner|NoPermission + - Reader + - Writer + - Owner + - NoPermission example: Owner type: string type: @@ -538,11 +574,7 @@ paths: "200": description: List of objects schema: - additionalProperties: - items: - $ref: '#/definitions/object.Object' - type: array - type: object + $ref: '#/definitions/pagination.PaginatedResponse-object_Object' "401": description: Unauthorized schema: @@ -593,12 +625,12 @@ paths: consumes: - application/json parameters: - - description: Space Name + - description: Space to create in: body name: name required: true schema: - type: string + $ref: '#/definitions/space.CreateSpaceRequest' produces: - application/json responses: @@ -831,6 +863,9 @@ paths: required: true type: string - description: Export format + enum: + - markdown + - protobuf in: path name: format required: true @@ -891,11 +926,7 @@ paths: "200": description: List of objects schema: - additionalProperties: - items: - $ref: '#/definitions/object.Object' - type: array - type: object + $ref: '#/definitions/pagination.PaginatedResponse-object_Object' "401": description: Unauthorized schema: diff --git a/core/api/internal/auth/model.go b/core/api/internal/auth/model.go index e3e4af2c4..2d34926f5 100644 --- a/core/api/internal/auth/model.go +++ b/core/api/internal/auth/model.go @@ -5,6 +5,6 @@ type DisplayCodeResponse struct { } type TokenResponse struct { - SessionToken string `json:"session_token" example:""` - AppKey string `json:"app_key" example:""` + SessionToken string `json:"session_token" example:"eyJhbGciOeJIRzI1NiIsInR5cCI6IkpXVCJ1.eyJzZWVkIjaiY0dmVndlUnAifQ.Y1EZecYnwmvMkrXKOa2XJnAbaRt34urBabe06tmDQII"` + AppKey string `json:"app_key" example:"zhSG/zQRmgADyilWPtgdnfo1qD60oK02/SVgi1GaFt6="` } diff --git a/core/api/internal/export/handler.go b/core/api/internal/export/handler.go index ee259630e..c2ae3a2f8 100644 --- a/core/api/internal/export/handler.go +++ b/core/api/internal/export/handler.go @@ -16,7 +16,7 @@ import ( // @Produce json // @Param space_id path string true "Space ID" // @Param object_id path string true "Object ID" -// @Param format path string true "Export format" +// @Param format path string true "Export format" Enums(markdown,protobuf) // @Success 200 {object} ObjectExportResponse "Object exported successfully" // @Failure 400 {object} util.ValidationError "Bad request" // @Failure 401 {object} util.UnauthorizedError "Unauthorized" diff --git a/core/api/internal/export/model.go b/core/api/internal/export/model.go index f4f464d10..dde242246 100644 --- a/core/api/internal/export/model.go +++ b/core/api/internal/export/model.go @@ -1,9 +1,9 @@ package export type ObjectExportRequest struct { - Path string `json:"path"` + Path string `json:"path" example:"/path/to/export"` } type ObjectExportResponse struct { - Path string `json:"path"` + Path string `json:"path" example:"/path/to/export"` } diff --git a/core/api/internal/object/model.go b/core/api/internal/object/model.go index 21a680370..70ba449aa 100644 --- a/core/api/internal/object/model.go +++ b/core/api/internal/object/model.go @@ -31,15 +31,15 @@ type Block struct { Id string `json:"id" example:"64394517de52ad5acb89c66c"` ChildrenIds []string `json:"children_ids" example:"['6797ce8ecda913cde14b02dc']"` BackgroundColor string `json:"background_color" example:"red"` - Align string `json:"align" enums:"AlignLeft|AlignCenter|AlignRight|AlignJustify" example:"AlignLeft"` - VerticalAlign string `json:"vertical_align" enums:"VerticalAlignTop|VerticalAlignMiddle|VerticalAlignBottom" example:"VerticalAlignTop"` + Align string `json:"align" enums:"AlignLeft,AlignCenter,AlignRight,AlignJustify" example:"AlignLeft"` + VerticalAlign string `json:"vertical_align" enums:"VerticalAlignTop,VerticalAlignMiddle,VerticalAlignBottom" example:"VerticalAlignTop"` Text *Text `json:"text,omitempty"` File *File `json:"file,omitempty"` } type Text struct { Text string `json:"text" example:"Some text"` - Style string `json:"style" enums:"Paragraph|Header1|Header2|Header3|Header4|Quote|Code|Title|Checkbox|Marked|Numbered|Toggle|Description|Callout" example:"Paragraph"` + Style string `json:"style" enums:"Paragraph,Header1,Header2,Header3,Header4,Quote,Code,Title,Checkbox,Marked,Numbered,Toggle,Description,Callout" example:"Paragraph"` Checked bool `json:"checked" example:"true"` Color string `json:"color" example:"red"` Icon string `json:"icon" example:"📄"` @@ -58,7 +58,7 @@ type File struct { } type Detail struct { - Id string `json:"id" enums:"last_modified_date|last_modified_by|created_date|created_by|last_opened_date|tags" example:"last_modified_date"` + Id string `json:"id" enums:"last_modified_date,last_modified_by,created_date,created_by,last_opened_date,tags" example:"last_modified_date"` Details map[string]interface{} `json:"details"` } diff --git a/core/api/internal/search/handler.go b/core/api/internal/search/handler.go index 4a6e70c36..e3ffe62ed 100644 --- a/core/api/internal/search/handler.go +++ b/core/api/internal/search/handler.go @@ -15,12 +15,12 @@ import ( // @Tags search // @Accept json // @Produce json -// @Param offset query int false "The number of items to skip before starting to collect the result set" default(0) -// @Param limit query int false "The number of items to return" default(100) maximum(1000) -// @Param request body SearchRequest true "Search parameters" -// @Success 200 {object} map[string][]object.Object "List of objects" -// @Failure 401 {object} util.UnauthorizedError "Unauthorized" -// @Failure 500 {object} util.ServerError "Internal server error" +// @Param offset query int false "The number of items to skip before starting to collect the result set" default(0) +// @Param limit query int false "The number of items to return" default(100) maximum(1000) +// @Param request body SearchRequest true "Search parameters" +// @Success 200 {object} pagination.PaginatedResponse[object.Object] "List of objects" +// @Failure 401 {object} util.UnauthorizedError "Unauthorized" +// @Failure 500 {object} util.ServerError "Internal server error" // @Router /search [post] func GlobalSearchHandler(s *SearchService) gin.HandlerFunc { return func(c *gin.Context) { @@ -55,13 +55,13 @@ func GlobalSearchHandler(s *SearchService) gin.HandlerFunc { // @Tags search // @Accept json // @Produce json -// @Param space_id path string true "Space ID" -// @Param offset query int false "The number of items to skip before starting to collect the result set" default(0) -// @Param limit query int false "The number of items to return" default(100) maximum(1000) -// @Param request body SearchRequest true "Search parameters" -// @Success 200 {object} map[string][]object.Object "List of objects" -// @Failure 401 {object} util.UnauthorizedError "Unauthorized" -// @Failure 500 {object} util.ServerError "Internal server error" +// @Param space_id path string true "Space ID" +// @Param offset query int false "The number of items to skip before starting to collect the result set" default(0) +// @Param limit query int false "The number of items to return" default(100) maximum(1000) +// @Param request body SearchRequest true "Search parameters" +// @Success 200 {object} pagination.PaginatedResponse[object.Object] "List of objects" +// @Failure 401 {object} util.UnauthorizedError "Unauthorized" +// @Failure 500 {object} util.ServerError "Internal server error" // @Router /spaces/{space_id}/search [post] func SearchHandler(s *SearchService) gin.HandlerFunc { return func(c *gin.Context) { diff --git a/core/api/internal/search/model.go b/core/api/internal/search/model.go index ca64946eb..f52cf59e4 100644 --- a/core/api/internal/search/model.go +++ b/core/api/internal/search/model.go @@ -7,6 +7,6 @@ type SearchRequest struct { } type SortOptions struct { - Direction string `json:"direction" enums:"asc|desc" default:"desc"` - Timestamp string `json:"timestamp" enums:"created_date|last_modified_date|last_opened_date" default:"last_modified_date"` + Direction string `json:"direction" enums:"asc,desc" default:"desc"` + Timestamp string `json:"timestamp" enums:"created_date,last_modified_date,last_opened_date" default:"last_modified_date"` } diff --git a/core/api/internal/space/handler.go b/core/api/internal/space/handler.go index 714bf8e7b..2a6ca043d 100644 --- a/core/api/internal/space/handler.go +++ b/core/api/internal/space/handler.go @@ -48,7 +48,7 @@ func GetSpacesHandler(s *SpaceService) gin.HandlerFunc { // @Tags spaces // @Accept json // @Produce json -// @Param name body string true "Space Name" +// @Param name body CreateSpaceRequest true "Space to create" // @Success 200 {object} CreateSpaceResponse "Space created successfully" // @Failure 400 {object} util.ValidationError "Bad request" // @Failure 401 {object} util.UnauthorizedError "Unauthorized" diff --git a/core/api/internal/space/model.go b/core/api/internal/space/model.go index a0747a6f1..d13951c3f 100644 --- a/core/api/internal/space/model.go +++ b/core/api/internal/space/model.go @@ -1,7 +1,7 @@ package space type CreateSpaceRequest struct { - Name string `json:"name"` + Name string `json:"name" example:"New Space"` } type CreateSpaceResponse struct { @@ -37,5 +37,5 @@ type Member struct { Icon string `json:"icon" example:"http://127.0.0.1:31006/image/bafybeieptz5hvcy6txplcvphjbbh5yjc2zqhmihs3owkh5oab4ezauzqay?width=100"` Identity string `json:"identity" example:"AAjEaEwPF4nkEh7AWkqEnzcQ8HziGB4ETjiTpvRCQvWnSMDZ"` GlobalName string `json:"global_name" example:"john.any"` - Role string `json:"role" enums:"Reader|Writer|Owner|NoPermission" example:"Owner"` + Role string `json:"role" enums:"Reader,Writer,Owner,NoPermission" example:"Owner"` } From 5240aefaee74ed052bf615842a3495a3b8743329 Mon Sep 17 00:00:00 2001 From: kirillston Date: Tue, 28 Jan 2025 23:27:45 +0100 Subject: [PATCH 266/279] GO-4903 Remove lastUsedDate updater --- .mockery.yaml | 3 - core/anytype/bootstrap.go | 2 - .../mock_detailservice/mock_Service.go | 48 ---- core/block/detailservice/service.go | 36 +-- core/block/detailservice/service_test.go | 23 +- .../editor/accountobject/accountobject.go | 8 +- .../accountobject/accountobject_test.go | 2 +- core/block/editor/basic/basic.go | 6 - core/block/editor/basic/basic_test.go | 66 ++--- core/block/editor/basic/details.go | 35 --- core/block/editor/basic/details_test.go | 20 +- .../editor/basic/extract_objects_test.go | 6 +- core/block/editor/dashboard.go | 2 +- core/block/editor/factory.go | 5 +- core/block/editor/files.go | 2 +- core/block/editor/lastused/lastused.go | 178 +----------- core/block/editor/lastused/lastused_test.go | 88 ------ .../mock_lastused/mock_ObjectUsageUpdater.go | 258 ------------------ core/block/editor/page.go | 2 +- core/block/editor/participant.go | 2 +- core/block/editor/participant_test.go | 6 +- core/block/editor/profile.go | 2 +- .../editor/smartblock/smarttest/smarttest.go | 34 --- core/block/editor/widget.go | 2 +- core/block/editor/workspaces.go | 2 +- core/block/object/objectcreator/creator.go | 3 - .../object/objectcreator/creator_test.go | 6 - core/block/object/objectcreator/smartblock.go | 23 -- core/details.go | 2 +- 29 files changed, 68 insertions(+), 804 deletions(-) delete mode 100644 core/block/editor/lastused/mock_lastused/mock_ObjectUsageUpdater.go diff --git a/.mockery.yaml b/.mockery.yaml index f41f5cbc1..676d08044 100644 --- a/.mockery.yaml +++ b/.mockery.yaml @@ -38,9 +38,6 @@ packages: dir: "{{.InterfaceDir}}" outpkg: "{{.PackageName}}" inpackage: true - github.com/anyproto/anytype-heart/core/block/editor/lastused: - interfaces: - ObjectUsageUpdater: github.com/anyproto/anytype-heart/core/block/import/common: interfaces: Converter: diff --git a/core/anytype/bootstrap.go b/core/anytype/bootstrap.go index 5335899d3..46e179f02 100644 --- a/core/anytype/bootstrap.go +++ b/core/anytype/bootstrap.go @@ -46,7 +46,6 @@ import ( "github.com/anyproto/anytype-heart/core/block/detailservice" "github.com/anyproto/anytype-heart/core/block/editor" "github.com/anyproto/anytype-heart/core/block/editor/converter" - "github.com/anyproto/anytype-heart/core/block/editor/lastused" "github.com/anyproto/anytype-heart/core/block/export" importer "github.com/anyproto/anytype-heart/core/block/import" "github.com/anyproto/anytype-heart/core/block/object/idderiver/idderiverimpl" @@ -321,7 +320,6 @@ func Bootstrap(a *app.App, components ...app.Component) { Register(payments.New()). Register(paymentscache.New()). Register(peerstatus.New()). - Register(lastused.New()). Register(spaceview.New()). Register(api.New()) } diff --git a/core/block/detailservice/mock_detailservice/mock_Service.go b/core/block/detailservice/mock_detailservice/mock_Service.go index c134ced52..d8376646c 100644 --- a/core/block/detailservice/mock_detailservice/mock_Service.go +++ b/core/block/detailservice/mock_detailservice/mock_Service.go @@ -417,54 +417,6 @@ func (_c *MockService_SetDetails_Call) RunAndReturn(run func(session.Context, st return _c } -// SetDetailsAndUpdateLastUsed provides a mock function with given fields: ctx, objectId, details -func (_m *MockService) SetDetailsAndUpdateLastUsed(ctx session.Context, objectId string, details []domain.Detail) error { - ret := _m.Called(ctx, objectId, details) - - if len(ret) == 0 { - panic("no return value specified for SetDetailsAndUpdateLastUsed") - } - - var r0 error - if rf, ok := ret.Get(0).(func(session.Context, string, []domain.Detail) error); ok { - r0 = rf(ctx, objectId, details) - } else { - r0 = ret.Error(0) - } - - return r0 -} - -// MockService_SetDetailsAndUpdateLastUsed_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SetDetailsAndUpdateLastUsed' -type MockService_SetDetailsAndUpdateLastUsed_Call struct { - *mock.Call -} - -// SetDetailsAndUpdateLastUsed is a helper method to define mock.On call -// - ctx session.Context -// - objectId string -// - details []domain.Detail -func (_e *MockService_Expecter) SetDetailsAndUpdateLastUsed(ctx interface{}, objectId interface{}, details interface{}) *MockService_SetDetailsAndUpdateLastUsed_Call { - return &MockService_SetDetailsAndUpdateLastUsed_Call{Call: _e.mock.On("SetDetailsAndUpdateLastUsed", ctx, objectId, details)} -} - -func (_c *MockService_SetDetailsAndUpdateLastUsed_Call) Run(run func(ctx session.Context, objectId string, details []domain.Detail)) *MockService_SetDetailsAndUpdateLastUsed_Call { - _c.Call.Run(func(args mock.Arguments) { - run(args[0].(session.Context), args[1].(string), args[2].([]domain.Detail)) - }) - return _c -} - -func (_c *MockService_SetDetailsAndUpdateLastUsed_Call) Return(_a0 error) *MockService_SetDetailsAndUpdateLastUsed_Call { - _c.Call.Return(_a0) - return _c -} - -func (_c *MockService_SetDetailsAndUpdateLastUsed_Call) RunAndReturn(run func(session.Context, string, []domain.Detail) error) *MockService_SetDetailsAndUpdateLastUsed_Call { - _c.Call.Return(run) - return _c -} - // SetDetailsList provides a mock function with given fields: ctx, objectIds, details func (_m *MockService) SetDetailsList(ctx session.Context, objectIds []string, details []domain.Detail) error { ret := _m.Called(ctx, objectIds, details) diff --git a/core/block/detailservice/service.go b/core/block/detailservice/service.go index 2a7c3ff7d..355f860bc 100644 --- a/core/block/detailservice/service.go +++ b/core/block/detailservice/service.go @@ -31,7 +31,6 @@ type Service interface { app.Component SetDetails(ctx session.Context, objectId string, details []domain.Detail) error - SetDetailsAndUpdateLastUsed(ctx session.Context, objectId string, details []domain.Detail) error SetDetailsList(ctx session.Context, objectIds []string, details []domain.Detail) error ModifyDetails(ctx session.Context, objectId string, modifier func(current *domain.Details) (*domain.Details, error)) error ModifyDetailsList(req *pb.RpcObjectListModifyDetailValuesRequest) error @@ -81,23 +80,10 @@ func (s *service) SetDetails(ctx session.Context, objectId string, details []dom }) } -func (s *service) SetDetailsAndUpdateLastUsed(ctx session.Context, objectId string, details []domain.Detail) (err error) { - return cache.Do(s.objectGetter, objectId, func(b basic.DetailsSettable) error { - return b.SetDetailsAndUpdateLastUsed(ctx, details, true) - }) -} - -func (s *service) SetDetailsList(ctx session.Context, objectIds []string, details []domain.Detail) (err error) { - var ( - resultError error - anySucceed bool - ) - for i, objectId := range objectIds { - setDetailsFunc := s.SetDetails - if i == 0 { - setDetailsFunc = s.SetDetailsAndUpdateLastUsed - } - err := setDetailsFunc(ctx, objectId, details) +func (s *service) SetDetailsList(ctx session.Context, objectIds []string, details []domain.Detail) (resultError error) { + var anySucceed bool + for _, objectId := range objectIds { + err := s.SetDetails(ctx, objectId, details) if err != nil { resultError = errors.Join(resultError, err) } else { @@ -120,20 +106,10 @@ func (s *service) ModifyDetails(ctx session.Context, objectId string, modifier f }) } -func (s *service) ModifyDetailsAndUpdateLastUsed(ctx session.Context, objectId string, modifier func(current *domain.Details) (*domain.Details, error)) (err error) { - return cache.Do(s.objectGetter, objectId, func(du basic.DetailsUpdatable) error { - return du.UpdateDetailsAndLastUsed(ctx, modifier) - }) -} - func (s *service) ModifyDetailsList(req *pb.RpcObjectListModifyDetailValuesRequest) (resultError error) { var anySucceed bool - for i, objectId := range req.ObjectIds { - modifyDetailsFunc := s.ModifyDetails - if i == 0 { - modifyDetailsFunc = s.ModifyDetailsAndUpdateLastUsed - } - err := modifyDetailsFunc(nil, objectId, func(current *domain.Details) (*domain.Details, error) { + for _, objectId := range req.ObjectIds { + err := s.ModifyDetails(nil, objectId, func(current *domain.Details) (*domain.Details, error) { for _, op := range req.Operations { if !pbtypes.IsNullValue(op.Set) { // Set operation has higher priority than Add and Remove, because it modifies full value diff --git a/core/block/detailservice/service_test.go b/core/block/detailservice/service_test.go index 740379ff9..8ee7595bf 100644 --- a/core/block/detailservice/service_test.go +++ b/core/block/detailservice/service_test.go @@ -79,7 +79,7 @@ func TestService_SetDetailsList(t *testing.T) { {Key: bundle.RelationKeyLinkedProjects, Value: domain.StringList([]string{"important", "urgent"})}, } - t.Run("lastUsed is updated once", func(t *testing.T) { + t.Run("no error", func(t *testing.T) { // given fx := newFixture(t) objects := map[string]*smarttest.SmartTest{ @@ -98,16 +98,6 @@ func TestService_SetDetailsList(t *testing.T) { // then assert.NoError(t, err) - require.Len(t, objects["obj1"].Results.LastUsedUpdates, 3) - assert.Equal(t, []string{ - bundle.RelationKeyAssignee.String(), - bundle.RelationKeyDone.String(), - bundle.RelationKeyLinkedProjects.String(), - }, objects["obj1"].Results.LastUsedUpdates) - - // lastUsed should be updated only during the work under 1st object - assert.Len(t, objects["obj2"].Results.LastUsedUpdates, 0) - assert.Len(t, objects["obj3"].Results.LastUsedUpdates, 0) assert.Equal(t, "Mark Twain", objects["obj1"].NewState().Details().GetString(bundle.RelationKeyAssignee)) assert.True(t, objects["obj2"].NewState().Details().GetBool(bundle.RelationKeyDone)) @@ -153,7 +143,7 @@ func TestService_ModifyDetailsList(t *testing.T) { {RelationKey: bundle.RelationKeyDone.String(), Set: domain.Bool(true).ToProto()}, } - t.Run("lastUsed is updated once", func(t *testing.T) { + t.Run("no error", func(t *testing.T) { fx := newFixture(t) objects := map[string]*smarttest.SmartTest{ "obj1": smarttest.New("obj1"), @@ -174,11 +164,6 @@ func TestService_ModifyDetailsList(t *testing.T) { // then assert.NoError(t, err) - require.Len(t, objects["obj1"].Results.LastUsedUpdates, 3) - - // lastUsed should be updated only during the work under 1st object - assert.Len(t, objects["obj2"].Results.LastUsedUpdates, 0) - assert.Len(t, objects["obj3"].Results.LastUsedUpdates, 0) }) t.Run("some updates failed", func(t *testing.T) { @@ -306,7 +291,7 @@ func TestService_SetWorkspaceDashboardId(t *testing.T) { assert.Equal(t, wsObjectId, objectId) ws := &editor.Workspaces{ SmartBlock: sb, - AllOperations: basic.NewBasic(sb, fx.store.SpaceIndex(spaceId), nil, nil, nil), + AllOperations: basic.NewBasic(sb, fx.store.SpaceIndex(spaceId), nil, nil), } return ws, nil }) @@ -329,7 +314,7 @@ func TestService_SetWorkspaceDashboardId(t *testing.T) { assert.Equal(t, wsObjectId, objectId) ws := &editor.Workspaces{ SmartBlock: sb, - AllOperations: basic.NewBasic(sb, fx.store.SpaceIndex(spaceId), nil, nil, nil), + AllOperations: basic.NewBasic(sb, fx.store.SpaceIndex(spaceId), nil, nil), } return ws, nil }) diff --git a/core/block/editor/accountobject/accountobject.go b/core/block/editor/accountobject/accountobject.go index 351633f8a..057c9242d 100644 --- a/core/block/editor/accountobject/accountobject.go +++ b/core/block/editor/accountobject/accountobject.go @@ -18,7 +18,6 @@ import ( "github.com/anyproto/anytype-heart/core/block/editor/anystoredebug" "github.com/anyproto/anytype-heart/core/block/editor/basic" "github.com/anyproto/anytype-heart/core/block/editor/converter" - "github.com/anyproto/anytype-heart/core/block/editor/lastused" "github.com/anyproto/anytype-heart/core/block/editor/smartblock" "github.com/anyproto/anytype-heart/core/block/editor/state" "github.com/anyproto/anytype-heart/core/block/editor/storestate" @@ -88,23 +87,18 @@ func (a *accountObject) SetDetails(ctx session.Context, details []domain.Detail, return a.bs.SetDetails(ctx, details, showEvent) } -func (a *accountObject) SetDetailsAndUpdateLastUsed(ctx session.Context, details []domain.Detail, showEvent bool) (err error) { - return a.bs.SetDetailsAndUpdateLastUsed(ctx, details, showEvent) -} - func New( sb smartblock.SmartBlock, keys *accountdata.AccountKeys, spaceObjects spaceindex.Store, layoutConverter converter.LayoutConverter, fileObjectService fileobject.Service, - lastUsedUpdater lastused.ObjectUsageUpdater, crdtDb anystore.DB, cfg *config.Config) AccountObject { return &accountObject{ crdtDb: crdtDb, keys: keys, - bs: basic.NewBasic(sb, spaceObjects, layoutConverter, fileObjectService, lastUsedUpdater), + bs: basic.NewBasic(sb, spaceObjects, layoutConverter, fileObjectService), SmartBlock: sb, cfg: cfg, relMapper: newRelationsMapper(map[string]KeyType{ diff --git a/core/block/editor/accountobject/accountobject_test.go b/core/block/editor/accountobject/accountobject_test.go index 9a3a5ee97..8f5e0250e 100644 --- a/core/block/editor/accountobject/accountobject_test.go +++ b/core/block/editor/accountobject/accountobject_test.go @@ -55,7 +55,7 @@ func newFixture(t *testing.T, isNewAccount bool, prepareDb func(db anystore.DB)) indexStore := objectstore.NewStoreFixture(t).SpaceIndex("spaceId") keys, err := accountdata.NewRandom() require.NoError(t, err) - object := New(sb, keys, indexStore, nil, nil, nil, db, cfg) + object := New(sb, keys, indexStore, nil, nil, db, cfg) fx := &fixture{ storeFx: objectstore.NewStoreFixture(t), db: db, diff --git a/core/block/editor/basic/basic.go b/core/block/editor/basic/basic.go index 4ebc808c2..b2dee8247 100644 --- a/core/block/editor/basic/basic.go +++ b/core/block/editor/basic/basic.go @@ -6,7 +6,6 @@ import ( "github.com/samber/lo" "github.com/anyproto/anytype-heart/core/block/editor/converter" - "github.com/anyproto/anytype-heart/core/block/editor/lastused" "github.com/anyproto/anytype-heart/core/block/editor/smartblock" "github.com/anyproto/anytype-heart/core/block/editor/state" "github.com/anyproto/anytype-heart/core/block/editor/table" @@ -64,12 +63,10 @@ type CommonOperations interface { type DetailsSettable interface { SetDetails(ctx session.Context, details []domain.Detail, showEvent bool) (err error) - SetDetailsAndUpdateLastUsed(ctx session.Context, details []domain.Detail, showEvent bool) (err error) } type DetailsUpdatable interface { UpdateDetails(ctx session.Context, update func(current *domain.Details) (*domain.Details, error)) (err error) - UpdateDetailsAndLastUsed(ctx session.Context, update func(current *domain.Details) (*domain.Details, error)) (err error) } type Restrictionable interface { @@ -105,14 +102,12 @@ func NewBasic( objectStore spaceindex.Store, layoutConverter converter.LayoutConverter, fileObjectService fileobject.Service, - lastUsedUpdater lastused.ObjectUsageUpdater, ) AllOperations { return &basic{ SmartBlock: sb, objectStore: objectStore, layoutConverter: layoutConverter, fileObjectService: fileObjectService, - lastUsedUpdater: lastUsedUpdater, } } @@ -122,7 +117,6 @@ type basic struct { objectStore spaceindex.Store layoutConverter converter.LayoutConverter fileObjectService fileobject.Service - lastUsedUpdater lastused.ObjectUsageUpdater } func (bs *basic) CreateBlock(s *state.State, req pb.RpcBlockCreateRequest) (id string, err error) { diff --git a/core/block/editor/basic/basic_test.go b/core/block/editor/basic/basic_test.go index d59dcf593..866e5abce 100644 --- a/core/block/editor/basic/basic_test.go +++ b/core/block/editor/basic/basic_test.go @@ -45,7 +45,7 @@ func TestBasic_Create(t *testing.T) { t.Run("generic", func(t *testing.T) { sb := smarttest.New("test") sb.AddBlock(simple.New(&model.Block{Id: "test"})) - b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil, nil) + b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil) st := sb.NewState() id, err := b.CreateBlock(st, pb.RpcBlockCreateRequest{ Block: &model.Block{Content: &model.BlockContentOfText{Text: &model.BlockContentText{Text: "ll"}}}, @@ -59,7 +59,7 @@ func TestBasic_Create(t *testing.T) { sb := smarttest.New("test") sb.AddBlock(simple.New(&model.Block{Id: "test"})) require.NoError(t, smartblock.ObjectApplyTemplate(sb, sb.NewState(), template.WithTitle)) - b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil, nil) + b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil) s := sb.NewState() id, err := b.CreateBlock(s, pb.RpcBlockCreateRequest{ TargetId: template.TitleBlockId, @@ -80,7 +80,7 @@ func TestBasic_Create(t *testing.T) { } sb.AddBlock(simple.New(&model.Block{Id: "test"})) require.NoError(t, smartblock.ObjectApplyTemplate(sb, sb.NewState(), template.WithTitle)) - b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil, nil) + b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil) _, err := b.CreateBlock(sb.NewState(), pb.RpcBlockCreateRequest{}) assert.ErrorIs(t, err, restriction.ErrRestricted) }) @@ -94,7 +94,7 @@ func TestBasic_Duplicate(t *testing.T) { AddBlock(simple.New(&model.Block{Id: "3"})) st := sb.NewState() - newIds, err := NewBasic(sb, nil, converter.NewLayoutConverter(), nil, nil).Duplicate(st, st, "", 0, []string{"2"}) + newIds, err := NewBasic(sb, nil, converter.NewLayoutConverter(), nil).Duplicate(st, st, "", 0, []string{"2"}) require.NoError(t, err) err = sb.Apply(st) @@ -172,7 +172,7 @@ func TestBasic_Duplicate(t *testing.T) { ts.SetDetail(bundle.RelationKeySpaceId, domain.String(tc.spaceIds[1])) // when - newIds, err := NewBasic(source, nil, nil, tc.fos(), nil).Duplicate(ss, ts, "target", model.Block_Inner, []string{"1", "f1"}) + newIds, err := NewBasic(source, nil, nil, tc.fos()).Duplicate(ss, ts, "target", model.Block_Inner, []string{"1", "f1"}) require.NoError(t, err) require.NoError(t, target.Apply(ts)) @@ -206,7 +206,7 @@ func TestBasic_Unlink(t *testing.T) { AddBlock(simple.New(&model.Block{Id: "2", ChildrenIds: []string{"3"}})). AddBlock(simple.New(&model.Block{Id: "3"})) - b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil, nil) + b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil) err := b.Unlink(nil, "2") require.NoError(t, err) @@ -220,7 +220,7 @@ func TestBasic_Unlink(t *testing.T) { AddBlock(simple.New(&model.Block{Id: "2", ChildrenIds: []string{"3"}})). AddBlock(simple.New(&model.Block{Id: "3"})) - b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil, nil) + b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil) err := b.Unlink(nil, "2", "3") require.NoError(t, err) @@ -237,7 +237,7 @@ func TestBasic_Move(t *testing.T) { AddBlock(simple.New(&model.Block{Id: "3"})). AddBlock(simple.New(&model.Block{Id: "4"})) - b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil, nil) + b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil) st := sb.NewState() err := b.Move(st, st, "4", model.Block_Inner, []string{"3"}) @@ -251,7 +251,7 @@ func TestBasic_Move(t *testing.T) { sb := smarttest.New("test") sb.AddBlock(simple.New(&model.Block{Id: "test"})) require.NoError(t, smartblock.ObjectApplyTemplate(sb, sb.NewState(), template.WithTitle)) - b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil, nil) + b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil) s := sb.NewState() id1, err := b.CreateBlock(s, pb.RpcBlockCreateRequest{ TargetId: template.HeaderLayoutId, @@ -300,7 +300,7 @@ func TestBasic_Move(t *testing.T) { }, ), ) - basic := NewBasic(testDoc, nil, converter.NewLayoutConverter(), nil, nil) + basic := NewBasic(testDoc, nil, converter.NewLayoutConverter(), nil) state := testDoc.NewState() // when @@ -316,7 +316,7 @@ func TestBasic_Move(t *testing.T) { AddBlock(newTextBlock("1", "", nil)). AddBlock(newTextBlock("2", "one", nil)) - b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil, nil) + b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil) st := sb.NewState() err := b.Move(st, st, "1", model.Block_InnerFirst, []string{"2"}) require.NoError(t, err) @@ -336,7 +336,7 @@ func TestBasic_Move(t *testing.T) { AddBlock(firstBlock). AddBlock(secondBlock) - b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil, nil) + b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil) st := sb.NewState() err := b.Move(st, st, "1", model.Block_InnerFirst, []string{"2"}) require.NoError(t, err) @@ -350,7 +350,7 @@ func TestBasic_Move(t *testing.T) { AddBlock(newTextBlock("1", "", nil)). AddBlock(newTextBlock("2", "one", nil)) - b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil, nil) + b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil) st := sb.NewState() err := b.Move(st, nil, "1", model.Block_Top, []string{"2"}) require.NoError(t, err) @@ -379,7 +379,7 @@ func TestBasic_MoveTableBlocks(t *testing.T) { t.Run("moving non-root table block '"+block+"' leads to error", func(t *testing.T) { // given sb := getSB() - b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil, nil) + b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil) st := sb.NewState() // when @@ -394,7 +394,7 @@ func TestBasic_MoveTableBlocks(t *testing.T) { t.Run("no error on moving root table block", func(t *testing.T) { // given sb := getSB() - b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil, nil) + b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil) st := sb.NewState() // when @@ -408,7 +408,7 @@ func TestBasic_MoveTableBlocks(t *testing.T) { t.Run("no error on moving one row between another", func(t *testing.T) { // given sb := getSB() - b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil, nil) + b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil) st := sb.NewState() // when @@ -422,7 +422,7 @@ func TestBasic_MoveTableBlocks(t *testing.T) { t.Run("moving rows with incorrect position leads to error", func(t *testing.T) { // given sb := getSB() - b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil, nil) + b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil) st := sb.NewState() // when @@ -435,7 +435,7 @@ func TestBasic_MoveTableBlocks(t *testing.T) { t.Run("moving rows and some other blocks between another leads to error", func(t *testing.T) { // given sb := getSB() - b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil, nil) + b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil) st := sb.NewState() // when @@ -448,7 +448,7 @@ func TestBasic_MoveTableBlocks(t *testing.T) { t.Run("moving the row between itself leads to error", func(t *testing.T) { // given sb := getSB() - b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil, nil) + b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil) st := sb.NewState() // when @@ -461,7 +461,7 @@ func TestBasic_MoveTableBlocks(t *testing.T) { t.Run("moving table block from invalid table leads to error", func(t *testing.T) { // given sb := getSB() - b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil, nil) + b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil) st := sb.NewState() st.Unlink("columns") @@ -477,7 +477,7 @@ func TestBasic_MoveTableBlocks(t *testing.T) { t.Run("moving a block to '"+block+"' block leads to moving it under the table", func(t *testing.T) { // given sb := getSB() - b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil, nil) + b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil) st := sb.NewState() // when @@ -492,7 +492,7 @@ func TestBasic_MoveTableBlocks(t *testing.T) { t.Run("moving a block to the invalid table leads to moving it under the table", func(t *testing.T) { // given sb := getSB() - b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil, nil) + b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil) st := sb.NewState() st.Unlink("columns") @@ -516,7 +516,7 @@ func TestBasic_MoveToAnotherObject(t *testing.T) { sb2 := smarttest.New("test2") sb2.AddBlock(simple.New(&model.Block{Id: "test2", ChildrenIds: []string{}})) - b := NewBasic(sb1, nil, converter.NewLayoutConverter(), nil, nil) + b := NewBasic(sb1, nil, converter.NewLayoutConverter(), nil) srcState := sb1.NewState() destState := sb2.NewState() @@ -551,7 +551,7 @@ func TestBasic_Replace(t *testing.T) { sb := smarttest.New("test") sb.AddBlock(simple.New(&model.Block{Id: "test", ChildrenIds: []string{"2"}})). AddBlock(simple.New(&model.Block{Id: "2"})) - b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil, nil) + b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil) newId, err := b.Replace(nil, "2", &model.Block{Content: &model.BlockContentOfText{Text: &model.BlockContentText{Text: "l"}}}) require.NoError(t, err) require.NotEmpty(t, newId) @@ -561,7 +561,7 @@ func TestBasic_SetFields(t *testing.T) { sb := smarttest.New("test") sb.AddBlock(simple.New(&model.Block{Id: "test", ChildrenIds: []string{"2"}})). AddBlock(simple.New(&model.Block{Id: "2"})) - b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil, nil) + b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil) fields := &types.Struct{ Fields: map[string]*types.Value{ @@ -580,7 +580,7 @@ func TestBasic_Update(t *testing.T) { sb := smarttest.New("test") sb.AddBlock(simple.New(&model.Block{Id: "test", ChildrenIds: []string{"2"}})). AddBlock(simple.New(&model.Block{Id: "2"})) - b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil, nil) + b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil) err := b.Update(nil, func(b simple.Block) error { b.Model().BackgroundColor = "test" @@ -594,7 +594,7 @@ func TestBasic_SetDivStyle(t *testing.T) { sb := smarttest.New("test") sb.AddBlock(simple.New(&model.Block{Id: "test", ChildrenIds: []string{"2"}})). AddBlock(simple.New(&model.Block{Id: "2", Content: &model.BlockContentOfDiv{Div: &model.BlockContentDiv{}}})) - b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil, nil) + b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil) err := b.SetDivStyle(nil, model.BlockContentDiv_Dots, "2") require.NoError(t, err) @@ -614,7 +614,7 @@ func TestBasic_SetRelationKey(t *testing.T) { t.Run("correct", func(t *testing.T) { sb := smarttest.New("test") fillSb(sb) - b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil, nil) + b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil) err := b.SetRelationKey(nil, pb.RpcBlockRelationSetKeyRequest{ BlockId: "2", Key: "testRelKey", @@ -636,7 +636,7 @@ func TestBasic_SetRelationKey(t *testing.T) { t.Run("not relation block", func(t *testing.T) { sb := smarttest.New("test") fillSb(sb) - b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil, nil) + b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil) require.Error(t, b.SetRelationKey(nil, pb.RpcBlockRelationSetKeyRequest{ BlockId: "1", Key: "key", @@ -645,7 +645,7 @@ func TestBasic_SetRelationKey(t *testing.T) { t.Run("relation not found", func(t *testing.T) { sb := smarttest.New("test") fillSb(sb) - b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil, nil) + b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil) require.Error(t, b.SetRelationKey(nil, pb.RpcBlockRelationSetKeyRequest{ BlockId: "2", Key: "not exists", @@ -661,7 +661,7 @@ func TestBasic_FeaturedRelationAdd(t *testing.T) { s.AddBundledRelationLinks(bundle.RelationKeyDescription) require.NoError(t, sb.Apply(s)) - b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil, nil) + b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil) newRel := []string{bundle.RelationKeyDescription.String(), bundle.RelationKeyName.String()} require.NoError(t, b.FeaturedRelationAdd(nil, newRel...)) @@ -677,7 +677,7 @@ func TestBasic_FeaturedRelationRemove(t *testing.T) { template.WithDescription(s) require.NoError(t, sb.Apply(s)) - b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil, nil) + b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil) require.NoError(t, b.FeaturedRelationRemove(nil, bundle.RelationKeyDescription.String())) res := sb.NewState() @@ -714,7 +714,7 @@ func TestBasic_ReplaceLink(t *testing.T) { } require.NoError(t, sb.Apply(s)) - b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil, nil) + b := NewBasic(sb, nil, converter.NewLayoutConverter(), nil) require.NoError(t, b.ReplaceLink(oldId, newId)) res := sb.NewState() diff --git a/core/block/editor/basic/details.go b/core/block/editor/basic/details.go index 4916df928..3bc7e3615 100644 --- a/core/block/editor/basic/details.go +++ b/core/block/editor/basic/details.go @@ -4,7 +4,6 @@ import ( "errors" "fmt" "strings" - "time" "github.com/anyproto/anytype-heart/core/block/editor/smartblock" "github.com/anyproto/anytype-heart/core/block/editor/state" @@ -28,19 +27,6 @@ func (bs *basic) SetDetails(ctx session.Context, details []domain.Detail, showEv return err } -func (bs *basic) SetDetailsAndUpdateLastUsed(ctx session.Context, details []domain.Detail, showEvent bool) (err error) { - var keys []domain.RelationKey - keys, err = bs.setDetails(ctx, details, showEvent) - if err != nil { - return err - } - ts := time.Now().Unix() - for _, key := range keys { - bs.lastUsedUpdater.UpdateLastUsedDate(bs.SpaceID(), key, ts) - } - return nil -} - func (bs *basic) setDetails(ctx session.Context, details []domain.Detail, showEvent bool) (updatedKeys []domain.RelationKey, err error) { s := bs.NewStateCtx(ctx) @@ -67,23 +53,6 @@ func (bs *basic) UpdateDetails(ctx session.Context, update func(current *domain. return err } -func (bs *basic) UpdateDetailsAndLastUsed(ctx session.Context, update func(current *domain.Details) (*domain.Details, error)) error { - oldDetails, newDetails, err := bs.updateDetails(ctx, update) - if err != nil { - return err - } - - diff, _ := domain.StructDiff(oldDetails, newDetails) - if diff.Len() == 0 { - return nil - } - ts := time.Now().Unix() - for _, key := range diff.Keys() { - bs.lastUsedUpdater.UpdateLastUsedDate(bs.SpaceID(), key, ts) - } - return nil -} - func (bs *basic) updateDetails(ctx session.Context, update func(current *domain.Details) (*domain.Details, error)) (oldDetails *domain.Details, newDetails *domain.Details, err error) { if update == nil { return nil, nil, fmt.Errorf("update function is nil") @@ -378,10 +347,6 @@ func (bs *basic) SetObjectTypesInState(s *state.State, objectTypeKeys []domain.T s.SetObjectTypeKeys(objectTypeKeys) removeInternalFlags(s) - if bs.CombinedDetails().GetInt64(bundle.RelationKeyOrigin) == int64(model.ObjectOrigin_none) { - bs.lastUsedUpdater.UpdateLastUsedDate(bs.SpaceID(), objectTypeKeys[0], time.Now().Unix()) - } - toLayout, err := bs.getLayoutForType(objectTypeKeys[0]) if err != nil { return fmt.Errorf("get layout for type %s: %w", objectTypeKeys[0], err) diff --git a/core/block/editor/basic/details_test.go b/core/block/editor/basic/details_test.go index 8245b4d00..8ef1f4fe8 100644 --- a/core/block/editor/basic/details_test.go +++ b/core/block/editor/basic/details_test.go @@ -4,10 +4,8 @@ import ( "testing" "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/mock" "github.com/anyproto/anytype-heart/core/block/editor/converter" - "github.com/anyproto/anytype-heart/core/block/editor/lastused/mock_lastused" "github.com/anyproto/anytype-heart/core/block/editor/smartblock/smarttest" "github.com/anyproto/anytype-heart/core/block/restriction" "github.com/anyproto/anytype-heart/core/domain" @@ -18,10 +16,9 @@ import ( ) type basicFixture struct { - sb *smarttest.SmartTest - store *spaceindex.StoreFixture - lastUsed *mock_lastused.MockObjectUsageUpdater - basic CommonOperations + sb *smarttest.SmartTest + store *spaceindex.StoreFixture + basic CommonOperations } var ( @@ -35,15 +32,13 @@ func newBasicFixture(t *testing.T) *basicFixture { sb.SetSpaceId(spaceId) store := spaceindex.NewStoreFixture(t) - lastUsed := mock_lastused.NewMockObjectUsageUpdater(t) - b := NewBasic(sb, store, converter.NewLayoutConverter(), nil, lastUsed) + b := NewBasic(sb, store, converter.NewLayoutConverter(), nil) return &basicFixture{ - sb: sb, - store: store, - lastUsed: lastUsed, - basic: b, + sb: sb, + store: store, + basic: b, } } @@ -149,7 +144,6 @@ func TestBasic_SetObjectTypesInState(t *testing.T) { // given f := newBasicFixture(t) - f.lastUsed.EXPECT().UpdateLastUsedDate(mock.Anything, bundle.TypeKeyTask, mock.Anything).Return().Once() f.store.AddObjects(t, []objectstore.TestObject{{ bundle.RelationKeySpaceId: domain.String(spaceId), bundle.RelationKeyId: domain.String("ot-task"), diff --git a/core/block/editor/basic/extract_objects_test.go b/core/block/editor/basic/extract_objects_test.go index 14bcaae2b..21216aac8 100644 --- a/core/block/editor/basic/extract_objects_test.go +++ b/core/block/editor/basic/extract_objects_test.go @@ -319,7 +319,7 @@ func TestExtractObjects(t *testing.T) { ObjectTypeUniqueKey: domain.MustUniqueKey(coresb.SmartBlockTypeObjectType, tc.typeKey).Marshal(), } ctx := session.NewContext() - linkIds, err := NewBasic(sb, fixture.store, converter.NewLayoutConverter(), nil, nil).ExtractBlocksToObjects(ctx, creator, ts, req) + linkIds, err := NewBasic(sb, fixture.store, converter.NewLayoutConverter(), nil).ExtractBlocksToObjects(ctx, creator, ts, req) assert.NoError(t, err) gotBlockIds := []string{} @@ -374,7 +374,7 @@ func TestExtractObjects(t *testing.T) { }}, } ctx := session.NewContext() - _, err := NewBasic(sb, fixture.store, converter.NewLayoutConverter(), nil, nil).ExtractBlocksToObjects(ctx, creator, ts, req) + _, err := NewBasic(sb, fixture.store, converter.NewLayoutConverter(), nil).ExtractBlocksToObjects(ctx, creator, ts, req) assert.NoError(t, err) var block *model.Block for _, block = range sb.Blocks() { @@ -407,7 +407,7 @@ func TestExtractObjects(t *testing.T) { }}, } ctx := session.NewContext() - _, err := NewBasic(sb, fixture.store, converter.NewLayoutConverter(), nil, nil).ExtractBlocksToObjects(ctx, creator, ts, req) + _, err := NewBasic(sb, fixture.store, converter.NewLayoutConverter(), nil).ExtractBlocksToObjects(ctx, creator, ts, req) assert.NoError(t, err) var addedBlocks []*model.Block for _, message := range sb.Results.Events { diff --git a/core/block/editor/dashboard.go b/core/block/editor/dashboard.go index 0e1f968d8..a972e641b 100644 --- a/core/block/editor/dashboard.go +++ b/core/block/editor/dashboard.go @@ -35,7 +35,7 @@ type Dashboard struct { func NewDashboard(sb smartblock.SmartBlock, objectStore spaceindex.Store, layoutConverter converter.LayoutConverter) *Dashboard { return &Dashboard{ SmartBlock: sb, - AllOperations: basic.NewBasic(sb, objectStore, layoutConverter, nil, nil), + AllOperations: basic.NewBasic(sb, objectStore, layoutConverter, nil), Collection: collection.NewCollection(sb, objectStore), objectStore: objectStore, } diff --git a/core/block/editor/factory.go b/core/block/editor/factory.go index 05801ed43..8c282d09b 100644 --- a/core/block/editor/factory.go +++ b/core/block/editor/factory.go @@ -14,7 +14,6 @@ import ( "github.com/anyproto/anytype-heart/core/block/editor/chatobject" "github.com/anyproto/anytype-heart/core/block/editor/converter" "github.com/anyproto/anytype-heart/core/block/editor/file" - "github.com/anyproto/anytype-heart/core/block/editor/lastused" "github.com/anyproto/anytype-heart/core/block/editor/smartblock" "github.com/anyproto/anytype-heart/core/block/migration" "github.com/anyproto/anytype-heart/core/block/object/idresolver" @@ -74,7 +73,6 @@ type ObjectFactory struct { fileReconciler reconciler.Reconciler objectDeleter ObjectDeleter deviceService deviceService - lastUsedUpdater lastused.ObjectUsageUpdater spaceIdResolver idresolver.Resolver } @@ -107,7 +105,6 @@ func (f *ObjectFactory) Init(a *app.App) (err error) { f.objectDeleter = app.MustComponent[ObjectDeleter](a) f.fileReconciler = app.MustComponent[reconciler.Reconciler](a) f.deviceService = app.MustComponent[deviceService](a) - f.lastUsedUpdater = app.MustComponent[lastused.ObjectUsageUpdater](a) f.spaceIdResolver = app.MustComponent[idresolver.Resolver](a) return nil } @@ -215,7 +212,7 @@ func (f *ObjectFactory) New(space smartblock.Space, sbType coresb.SmartBlockType case coresb.SmartBlockTypeChatDerivedObject: return chatobject.New(sb, f.accountService, f.eventSender, f.objectStore.GetCrdtDb(space.Id())), nil case coresb.SmartBlockTypeAccountObject: - return accountobject.New(sb, f.accountService.Keys(), store, f.layoutConverter, f.fileObjectService, f.lastUsedUpdater, f.objectStore.GetCrdtDb(space.Id()), f.config), nil + return accountobject.New(sb, f.accountService.Keys(), store, f.layoutConverter, f.fileObjectService, f.objectStore.GetCrdtDb(space.Id()), f.config), nil default: return nil, fmt.Errorf("unexpected smartblock type: %v", sbType) } diff --git a/core/block/editor/files.go b/core/block/editor/files.go index 76962cf1a..d7777c40b 100644 --- a/core/block/editor/files.go +++ b/core/block/editor/files.go @@ -28,7 +28,7 @@ var fileRequiredRelations = append(pageRequiredRelations, []domain.RelationKey{ func (f *ObjectFactory) newFile(spaceId string, sb smartblock.SmartBlock) *File { store := f.objectStore.SpaceIndex(spaceId) - basicComponent := basic.NewBasic(sb, store, f.layoutConverter, f.fileObjectService, f.lastUsedUpdater) + basicComponent := basic.NewBasic(sb, store, f.layoutConverter, f.fileObjectService) return &File{ SmartBlock: sb, ChangeReceiver: sb.(source.ChangeReceiver), diff --git a/core/block/editor/lastused/lastused.go b/core/block/editor/lastused/lastused.go index 58601cc5c..0e2da721c 100644 --- a/core/block/editor/lastused/lastused.go +++ b/core/block/editor/lastused/lastused.go @@ -1,191 +1,15 @@ package lastused import ( - "context" - "fmt" "strings" - "sync" "time" - "github.com/anyproto/any-sync/app" - "github.com/anyproto/any-sync/app/logger" - "github.com/cheggaaa/mb/v3" - "go.uber.org/zap" - - "github.com/anyproto/anytype-heart/core/block/editor/smartblock" "github.com/anyproto/anytype-heart/core/domain" "github.com/anyproto/anytype-heart/pkg/lib/bundle" - coresb "github.com/anyproto/anytype-heart/pkg/lib/core/smartblock" "github.com/anyproto/anytype-heart/pkg/lib/localstore/addr" - "github.com/anyproto/anytype-heart/pkg/lib/localstore/objectstore" - "github.com/anyproto/anytype-heart/space" - "github.com/anyproto/anytype-heart/space/clientspace" ) -const ( - CName = "object-usage-updater" - - maxInstallationTime = 5 * time.Minute - updateInterval = 5 * time.Second -) - -type Key interface { - URL() string - String() string -} - -type message struct { - spaceId string - key Key - time int64 -} - -var log = logger.NewNamed("update-last-used-date") - -type ObjectUsageUpdater interface { - app.ComponentRunnable - - UpdateLastUsedDate(spaceId string, key Key, timeStamp int64) -} - -func New() ObjectUsageUpdater { - return &updater{} -} - -type updater struct { - store objectstore.ObjectStore - spaceService space.Service - - ctx context.Context - cancel context.CancelFunc - - msgBatch *mb.MB[message] -} - -func (u *updater) Name() string { - return CName -} - -func (u *updater) Init(a *app.App) error { - u.store = app.MustComponent[objectstore.ObjectStore](a) - u.spaceService = app.MustComponent[space.Service](a) - u.msgBatch = mb.New[message](0) - return nil -} - -func (u *updater) Run(context.Context) error { - u.ctx, u.cancel = context.WithCancel(context.Background()) - go u.lastUsedUpdateHandler() - return nil -} - -func (u *updater) Close(context.Context) error { - if u.cancel != nil { - u.cancel() - } - if err := u.msgBatch.Close(); err != nil { - log.Error("failed to close message batch", zap.Error(err)) - } - return nil -} - -func (u *updater) UpdateLastUsedDate(spaceId string, key Key, ts int64) { - if err := u.msgBatch.Add(u.ctx, message{spaceId: spaceId, key: key, time: ts}); err != nil { - log.Error("failed to add last used date info to message batch", zap.Error(err), zap.String("key", key.String())) - } -} - -func (u *updater) lastUsedUpdateHandler() { - var ( - accumulator = make(map[string]map[Key]int64) - lock sync.Mutex - ) - - go func() { - for { - select { - case <-u.ctx.Done(): - return - case <-time.After(updateInterval): - lock.Lock() - if len(accumulator) == 0 { - lock.Unlock() - continue - } - for spaceId, keys := range accumulator { - log.Debug("updating lastUsedDate for objects in space", zap.Int("objects num", len(keys)), zap.String("spaceId", spaceId)) - u.updateLastUsedDateForKeysInSpace(spaceId, keys) - } - accumulator = make(map[string]map[Key]int64) - lock.Unlock() - } - } - }() - - for { - msgs, err := u.msgBatch.Wait(u.ctx) - if err != nil { - return - } - - lock.Lock() - for _, msg := range msgs { - if keys := accumulator[msg.spaceId]; keys != nil { - keys[msg.key] = msg.time - } else { - keys = map[Key]int64{ - msg.key: msg.time, - } - accumulator[msg.spaceId] = keys - } - } - lock.Unlock() - } -} - -func (u *updater) updateLastUsedDateForKeysInSpace(spaceId string, keys map[Key]int64) { - spc, err := u.spaceService.Get(u.ctx, spaceId) - if err != nil { - log.Error("failed to get space", zap.String("spaceId", spaceId), zap.Error(err)) - return - } - - for key, timeStamp := range keys { - if err = u.updateLastUsedDate(spc, key, timeStamp); err != nil { - log.Error("failed to update last used date", zap.String("spaceId", spaceId), zap.String("key", key.String()), zap.Error(err)) - } - } -} - -func (u *updater) updateLastUsedDate(spc clientspace.Space, key Key, ts int64) error { - uk, err := domain.UnmarshalUniqueKey(key.URL()) - if err != nil { - return fmt.Errorf("failed to unmarshall key: %w", err) - } - - if uk.SmartblockType() != coresb.SmartBlockTypeObjectType && uk.SmartblockType() != coresb.SmartBlockTypeRelation { - return fmt.Errorf("cannot update lastUsedDate for object with invalid smartBlock type. Only object types and relations are expected") - } - - details, err := u.store.SpaceIndex(spc.Id()).GetObjectByUniqueKey(uk) - if err != nil { - return fmt.Errorf("failed to get details: %w", err) - } - - id := details.GetString(bundle.RelationKeyId) - if id == "" { - return fmt.Errorf("failed to get id from details: %w", err) - } - - if err = spc.DoCtx(u.ctx, id, func(sb smartblock.SmartBlock) error { - st := sb.NewState() - st.SetLocalDetail(bundle.RelationKeyLastUsedDate, domain.Int64(ts)) - return sb.Apply(st) - }); err != nil { - return fmt.Errorf("failed to set lastUsedDate to object: %w", err) - } - return nil -} +const maxInstallationTime = 5 * time.Minute func SetLastUsedDateForInitialObjectType(id string, details *domain.Details) { if !strings.HasPrefix(id, addr.BundledObjectTypeURLPrefix) || details == nil { diff --git a/core/block/editor/lastused/lastused_test.go b/core/block/editor/lastused/lastused_test.go index 46ce94ebb..ad12a59fc 100644 --- a/core/block/editor/lastused/lastused_test.go +++ b/core/block/editor/lastused/lastused_test.go @@ -1,22 +1,13 @@ package lastused import ( - "context" "math/rand" "testing" - "time" "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/mock" - "github.com/stretchr/testify/require" - "github.com/anyproto/anytype-heart/core/block/editor/smartblock" - "github.com/anyproto/anytype-heart/core/block/editor/smartblock/smarttest" "github.com/anyproto/anytype-heart/core/domain" "github.com/anyproto/anytype-heart/pkg/lib/bundle" - "github.com/anyproto/anytype-heart/pkg/lib/localstore/objectstore" - "github.com/anyproto/anytype-heart/space/clientspace" - "github.com/anyproto/anytype-heart/space/clientspace/mock_clientspace" ) func TestSetLastUsedDateForInitialType(t *testing.T) { @@ -56,82 +47,3 @@ func TestSetLastUsedDateForInitialType(t *testing.T) { assert.True(t, isLastUsedDateGreater(detailMap[bundle.TypeKeyCollection.BundledURL()], detailMap[bundle.TypeKeyDiaryEntry.BundledURL()])) }) } - -func TestUpdateLastUsedDate(t *testing.T) { - const spaceId = "space" - - ts := time.Now().Unix() - - isLastUsedDateRecent := func(details *domain.Details, deltaSeconds int64) bool { - return details.GetInt64(bundle.RelationKeyLastUsedDate)+deltaSeconds > time.Now().Unix() - } - - store := objectstore.NewStoreFixture(t) - store.AddObjects(t, spaceId, []objectstore.TestObject{ - { - bundle.RelationKeyId: domain.String(bundle.RelationKeyCamera.URL()), - bundle.RelationKeySpaceId: domain.String(spaceId), - bundle.RelationKeyUniqueKey: domain.String(bundle.RelationKeyCamera.URL()), - }, - { - bundle.RelationKeyId: domain.String(bundle.TypeKeyDiaryEntry.URL()), - bundle.RelationKeySpaceId: domain.String(spaceId), - bundle.RelationKeyUniqueKey: domain.String(bundle.TypeKeyDiaryEntry.URL()), - }, - { - bundle.RelationKeyId: domain.String("rel-custom"), - bundle.RelationKeySpaceId: domain.String(spaceId), - bundle.RelationKeyUniqueKey: domain.String("rel-custom"), - }, - { - bundle.RelationKeyId: domain.String("opt-done"), - bundle.RelationKeySpaceId: domain.String(spaceId), - bundle.RelationKeyUniqueKey: domain.String("opt-done"), - }, - }) - - u := updater{store: store} - - getSpace := func() clientspace.Space { - spc := mock_clientspace.NewMockSpace(t) - spc.EXPECT().Id().Return(spaceId) - spc.EXPECT().DoCtx(mock.Anything, mock.Anything, mock.Anything).RunAndReturn(func(_ context.Context, id string, apply func(smartblock.SmartBlock) error) error { - sb := smarttest.New(id) - err := apply(sb) - require.NoError(t, err) - - assert.True(t, isLastUsedDateRecent(sb.LocalDetails(), 5)) - return nil - }) - return spc - } - - for _, tc := range []struct { - name string - key Key - getSpace func() clientspace.Space - isErrorExpected bool - }{ - {"built-in relation", bundle.RelationKeyCamera, getSpace, false}, - {"built-in type", bundle.TypeKeyDiaryEntry, getSpace, false}, - {"custom relation", domain.RelationKey("custom"), getSpace, false}, - {"option", domain.TypeKey("opt-done"), func() clientspace.Space { - spc := mock_clientspace.NewMockSpace(t) - return spc - }, true}, - {"type that is not in store", bundle.TypeKeyAudio, func() clientspace.Space { - spc := mock_clientspace.NewMockSpace(t) - spc.EXPECT().Id().Return(spaceId) - return spc - }, true}, - } { - t.Run("update lastUsedDate of "+tc.name, func(t *testing.T) { - err := u.updateLastUsedDate(tc.getSpace(), tc.key, ts) - if tc.isErrorExpected { - assert.Error(t, err) - } else { - assert.NoError(t, err) - } - }) - } -} diff --git a/core/block/editor/lastused/mock_lastused/mock_ObjectUsageUpdater.go b/core/block/editor/lastused/mock_lastused/mock_ObjectUsageUpdater.go deleted file mode 100644 index a82b4862d..000000000 --- a/core/block/editor/lastused/mock_lastused/mock_ObjectUsageUpdater.go +++ /dev/null @@ -1,258 +0,0 @@ -// Code generated by mockery. DO NOT EDIT. - -package mock_lastused - -import ( - context "context" - - app "github.com/anyproto/any-sync/app" - - lastused "github.com/anyproto/anytype-heart/core/block/editor/lastused" - - mock "github.com/stretchr/testify/mock" -) - -// MockObjectUsageUpdater is an autogenerated mock type for the ObjectUsageUpdater type -type MockObjectUsageUpdater struct { - mock.Mock -} - -type MockObjectUsageUpdater_Expecter struct { - mock *mock.Mock -} - -func (_m *MockObjectUsageUpdater) EXPECT() *MockObjectUsageUpdater_Expecter { - return &MockObjectUsageUpdater_Expecter{mock: &_m.Mock} -} - -// Close provides a mock function with given fields: ctx -func (_m *MockObjectUsageUpdater) Close(ctx context.Context) error { - ret := _m.Called(ctx) - - if len(ret) == 0 { - panic("no return value specified for Close") - } - - var r0 error - if rf, ok := ret.Get(0).(func(context.Context) error); ok { - r0 = rf(ctx) - } else { - r0 = ret.Error(0) - } - - return r0 -} - -// MockObjectUsageUpdater_Close_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Close' -type MockObjectUsageUpdater_Close_Call struct { - *mock.Call -} - -// Close is a helper method to define mock.On call -// - ctx context.Context -func (_e *MockObjectUsageUpdater_Expecter) Close(ctx interface{}) *MockObjectUsageUpdater_Close_Call { - return &MockObjectUsageUpdater_Close_Call{Call: _e.mock.On("Close", ctx)} -} - -func (_c *MockObjectUsageUpdater_Close_Call) Run(run func(ctx context.Context)) *MockObjectUsageUpdater_Close_Call { - _c.Call.Run(func(args mock.Arguments) { - run(args[0].(context.Context)) - }) - return _c -} - -func (_c *MockObjectUsageUpdater_Close_Call) Return(err error) *MockObjectUsageUpdater_Close_Call { - _c.Call.Return(err) - return _c -} - -func (_c *MockObjectUsageUpdater_Close_Call) RunAndReturn(run func(context.Context) error) *MockObjectUsageUpdater_Close_Call { - _c.Call.Return(run) - return _c -} - -// Init provides a mock function with given fields: a -func (_m *MockObjectUsageUpdater) Init(a *app.App) error { - ret := _m.Called(a) - - if len(ret) == 0 { - panic("no return value specified for Init") - } - - var r0 error - if rf, ok := ret.Get(0).(func(*app.App) error); ok { - r0 = rf(a) - } else { - r0 = ret.Error(0) - } - - return r0 -} - -// MockObjectUsageUpdater_Init_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Init' -type MockObjectUsageUpdater_Init_Call struct { - *mock.Call -} - -// Init is a helper method to define mock.On call -// - a *app.App -func (_e *MockObjectUsageUpdater_Expecter) Init(a interface{}) *MockObjectUsageUpdater_Init_Call { - return &MockObjectUsageUpdater_Init_Call{Call: _e.mock.On("Init", a)} -} - -func (_c *MockObjectUsageUpdater_Init_Call) Run(run func(a *app.App)) *MockObjectUsageUpdater_Init_Call { - _c.Call.Run(func(args mock.Arguments) { - run(args[0].(*app.App)) - }) - return _c -} - -func (_c *MockObjectUsageUpdater_Init_Call) Return(err error) *MockObjectUsageUpdater_Init_Call { - _c.Call.Return(err) - return _c -} - -func (_c *MockObjectUsageUpdater_Init_Call) RunAndReturn(run func(*app.App) error) *MockObjectUsageUpdater_Init_Call { - _c.Call.Return(run) - return _c -} - -// Name provides a mock function with given fields: -func (_m *MockObjectUsageUpdater) Name() string { - ret := _m.Called() - - if len(ret) == 0 { - panic("no return value specified for Name") - } - - var r0 string - if rf, ok := ret.Get(0).(func() string); ok { - r0 = rf() - } else { - r0 = ret.Get(0).(string) - } - - return r0 -} - -// MockObjectUsageUpdater_Name_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Name' -type MockObjectUsageUpdater_Name_Call struct { - *mock.Call -} - -// Name is a helper method to define mock.On call -func (_e *MockObjectUsageUpdater_Expecter) Name() *MockObjectUsageUpdater_Name_Call { - return &MockObjectUsageUpdater_Name_Call{Call: _e.mock.On("Name")} -} - -func (_c *MockObjectUsageUpdater_Name_Call) Run(run func()) *MockObjectUsageUpdater_Name_Call { - _c.Call.Run(func(args mock.Arguments) { - run() - }) - return _c -} - -func (_c *MockObjectUsageUpdater_Name_Call) Return(name string) *MockObjectUsageUpdater_Name_Call { - _c.Call.Return(name) - return _c -} - -func (_c *MockObjectUsageUpdater_Name_Call) RunAndReturn(run func() string) *MockObjectUsageUpdater_Name_Call { - _c.Call.Return(run) - return _c -} - -// Run provides a mock function with given fields: ctx -func (_m *MockObjectUsageUpdater) Run(ctx context.Context) error { - ret := _m.Called(ctx) - - if len(ret) == 0 { - panic("no return value specified for Run") - } - - var r0 error - if rf, ok := ret.Get(0).(func(context.Context) error); ok { - r0 = rf(ctx) - } else { - r0 = ret.Error(0) - } - - return r0 -} - -// MockObjectUsageUpdater_Run_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Run' -type MockObjectUsageUpdater_Run_Call struct { - *mock.Call -} - -// Run is a helper method to define mock.On call -// - ctx context.Context -func (_e *MockObjectUsageUpdater_Expecter) Run(ctx interface{}) *MockObjectUsageUpdater_Run_Call { - return &MockObjectUsageUpdater_Run_Call{Call: _e.mock.On("Run", ctx)} -} - -func (_c *MockObjectUsageUpdater_Run_Call) Run(run func(ctx context.Context)) *MockObjectUsageUpdater_Run_Call { - _c.Call.Run(func(args mock.Arguments) { - run(args[0].(context.Context)) - }) - return _c -} - -func (_c *MockObjectUsageUpdater_Run_Call) Return(err error) *MockObjectUsageUpdater_Run_Call { - _c.Call.Return(err) - return _c -} - -func (_c *MockObjectUsageUpdater_Run_Call) RunAndReturn(run func(context.Context) error) *MockObjectUsageUpdater_Run_Call { - _c.Call.Return(run) - return _c -} - -// UpdateLastUsedDate provides a mock function with given fields: spaceId, key, timeStamp -func (_m *MockObjectUsageUpdater) UpdateLastUsedDate(spaceId string, key lastused.Key, timeStamp int64) { - _m.Called(spaceId, key, timeStamp) -} - -// MockObjectUsageUpdater_UpdateLastUsedDate_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'UpdateLastUsedDate' -type MockObjectUsageUpdater_UpdateLastUsedDate_Call struct { - *mock.Call -} - -// UpdateLastUsedDate is a helper method to define mock.On call -// - spaceId string -// - key lastused.Key -// - timeStamp int64 -func (_e *MockObjectUsageUpdater_Expecter) UpdateLastUsedDate(spaceId interface{}, key interface{}, timeStamp interface{}) *MockObjectUsageUpdater_UpdateLastUsedDate_Call { - return &MockObjectUsageUpdater_UpdateLastUsedDate_Call{Call: _e.mock.On("UpdateLastUsedDate", spaceId, key, timeStamp)} -} - -func (_c *MockObjectUsageUpdater_UpdateLastUsedDate_Call) Run(run func(spaceId string, key lastused.Key, timeStamp int64)) *MockObjectUsageUpdater_UpdateLastUsedDate_Call { - _c.Call.Run(func(args mock.Arguments) { - run(args[0].(string), args[1].(lastused.Key), args[2].(int64)) - }) - return _c -} - -func (_c *MockObjectUsageUpdater_UpdateLastUsedDate_Call) Return() *MockObjectUsageUpdater_UpdateLastUsedDate_Call { - _c.Call.Return() - return _c -} - -func (_c *MockObjectUsageUpdater_UpdateLastUsedDate_Call) RunAndReturn(run func(string, lastused.Key, int64)) *MockObjectUsageUpdater_UpdateLastUsedDate_Call { - _c.Call.Return(run) - return _c -} - -// NewMockObjectUsageUpdater creates a new instance of MockObjectUsageUpdater. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. -// The first argument is typically a *testing.T value. -func NewMockObjectUsageUpdater(t interface { - mock.TestingT - Cleanup(func()) -}) *MockObjectUsageUpdater { - mock := &MockObjectUsageUpdater{} - mock.Mock.Test(t) - - t.Cleanup(func() { mock.AssertExpectations(t) }) - - return mock -} diff --git a/core/block/editor/page.go b/core/block/editor/page.go index ecb13f933..df88fa566 100644 --- a/core/block/editor/page.go +++ b/core/block/editor/page.go @@ -59,7 +59,7 @@ func (f *ObjectFactory) newPage(spaceId string, sb smartblock.SmartBlock) *Page return &Page{ SmartBlock: sb, ChangeReceiver: sb.(source.ChangeReceiver), - AllOperations: basic.NewBasic(sb, store, f.layoutConverter, f.fileObjectService, f.lastUsedUpdater), + AllOperations: basic.NewBasic(sb, store, f.layoutConverter, f.fileObjectService), IHistory: basic.NewHistory(sb), Text: stext.NewText( sb, diff --git a/core/block/editor/participant.go b/core/block/editor/participant.go index ca8619749..0cf32be27 100644 --- a/core/block/editor/participant.go +++ b/core/block/editor/participant.go @@ -30,7 +30,7 @@ type participant struct { } func (f *ObjectFactory) newParticipant(spaceId string, sb smartblock.SmartBlock, spaceIndex spaceindex.Store) *participant { - basicComponent := basic.NewBasic(sb, spaceIndex, f.layoutConverter, nil, f.lastUsedUpdater) + basicComponent := basic.NewBasic(sb, spaceIndex, f.layoutConverter, nil) return &participant{ SmartBlock: sb, DetailsUpdatable: basicComponent, diff --git a/core/block/editor/participant_test.go b/core/block/editor/participant_test.go index 8fb32ea1e..c6db2b678 100644 --- a/core/block/editor/participant_test.go +++ b/core/block/editor/participant_test.go @@ -120,7 +120,7 @@ func TestParticipant_Init(t *testing.T) { bundle.RelationKeyName: domain.String("test"), }}) - basicComponent := basic.NewBasic(sb, store, nil, nil, nil) + basicComponent := basic.NewBasic(sb, store, nil, nil) p := &participant{ SmartBlock: sb, DetailsUpdatable: basicComponent, @@ -147,7 +147,7 @@ func TestParticipant_Init(t *testing.T) { sb := smarttest.New("root") store := newStoreFixture(t) - basicComponent := basic.NewBasic(sb, store, nil, nil, nil) + basicComponent := basic.NewBasic(sb, store, nil, nil) p := &participant{ SmartBlock: sb, DetailsUpdatable: basicComponent, @@ -196,7 +196,7 @@ func newStoreFixture(t *testing.T) *spaceindex.StoreFixture { func newParticipantTest(t *testing.T) (*participant, error) { sb := smarttest.New("root") store := newStoreFixture(t) - basicComponent := basic.NewBasic(sb, store, nil, nil, nil) + basicComponent := basic.NewBasic(sb, store, nil, nil) p := &participant{ SmartBlock: sb, DetailsUpdatable: basicComponent, diff --git a/core/block/editor/profile.go b/core/block/editor/profile.go index 6fc78d754..ca85ab228 100644 --- a/core/block/editor/profile.go +++ b/core/block/editor/profile.go @@ -40,7 +40,7 @@ func (f *ObjectFactory) newProfile(spaceId string, sb smartblock.SmartBlock) *Pr fileComponent := file.NewFile(sb, f.fileBlockService, f.picker, f.processService, f.fileUploaderService) return &Profile{ SmartBlock: sb, - AllOperations: basic.NewBasic(sb, store, f.layoutConverter, f.fileObjectService, f.lastUsedUpdater), + AllOperations: basic.NewBasic(sb, store, f.layoutConverter, f.fileObjectService), IHistory: basic.NewHistory(sb), Text: stext.NewText( sb, diff --git a/core/block/editor/smartblock/smarttest/smarttest.go b/core/block/editor/smartblock/smarttest/smarttest.go index d02c46b50..82c543b35 100644 --- a/core/block/editor/smartblock/smarttest/smarttest.go +++ b/core/block/editor/smartblock/smarttest/smarttest.go @@ -262,13 +262,6 @@ func (st *SmartTest) SetDetails(ctx session.Context, details []domain.Detail, sh return } -func (st *SmartTest) SetDetailsAndUpdateLastUsed(ctx session.Context, details []domain.Detail, showEvent bool) (err error) { - for _, detail := range details { - st.Results.LastUsedUpdates = append(st.Results.LastUsedUpdates, string(detail.Key)) - } - return st.SetDetails(ctx, details, showEvent) -} - func (st *SmartTest) UpdateDetails(ctx session.Context, update func(current *domain.Details) (*domain.Details, error)) (err error) { details := st.Doc.(*state.State).CombinedDetails() if details == nil { @@ -282,31 +275,6 @@ func (st *SmartTest) UpdateDetails(ctx session.Context, update func(current *dom return nil } -func (st *SmartTest) UpdateDetailsAndLastUsed(ctx session.Context, update func(current *domain.Details) (*domain.Details, error)) (err error) { - details := st.Doc.(*state.State).CombinedDetails() - if details == nil { - details = domain.NewDetails() - } - oldDetails := details.Copy() - - newDetails, err := update(details) - if err != nil { - return err - } - - diff, _ := domain.StructDiff(oldDetails, newDetails) - if diff == nil { - return nil - } - - st.Doc.(*state.State).SetDetails(newDetails) - - for k, _ := range diff.Iterate() { - st.Results.LastUsedUpdates = append(st.Results.LastUsedUpdates, string(k)) - } - return nil -} - func (st *SmartTest) Init(ctx *smartblock.InitContext) (err error) { if ctx.State == nil { ctx.State = st.NewState() @@ -453,6 +421,4 @@ func (st *SmartTest) Update(ctx session.Context, apply func(b simple.Block) erro type Results struct { Events [][]simple.EventMessage Applies [][]*model.Block - - LastUsedUpdates []string } diff --git a/core/block/editor/widget.go b/core/block/editor/widget.go index e55f334ad..92960d2fb 100644 --- a/core/block/editor/widget.go +++ b/core/block/editor/widget.go @@ -29,7 +29,7 @@ func NewWidgetObject( objectStore spaceindex.Store, layoutConverter converter.LayoutConverter, ) *WidgetObject { - bs := basic.NewBasic(sb, objectStore, layoutConverter, nil, nil) + bs := basic.NewBasic(sb, objectStore, layoutConverter, nil) return &WidgetObject{ SmartBlock: sb, Movable: bs, diff --git a/core/block/editor/workspaces.go b/core/block/editor/workspaces.go index d31c7dbdd..655279aa4 100644 --- a/core/block/editor/workspaces.go +++ b/core/block/editor/workspaces.go @@ -36,7 +36,7 @@ type Workspaces struct { func (f *ObjectFactory) newWorkspace(sb smartblock.SmartBlock, store spaceindex.Store) *Workspaces { w := &Workspaces{ SmartBlock: sb, - AllOperations: basic.NewBasic(sb, store, f.layoutConverter, f.fileObjectService, f.lastUsedUpdater), + AllOperations: basic.NewBasic(sb, store, f.layoutConverter, f.fileObjectService), IHistory: basic.NewHistory(sb), Text: stext.NewText( sb, diff --git a/core/block/object/objectcreator/creator.go b/core/block/object/objectcreator/creator.go index 4405e58c9..b5935f2bb 100644 --- a/core/block/object/objectcreator/creator.go +++ b/core/block/object/objectcreator/creator.go @@ -8,7 +8,6 @@ import ( "github.com/anyproto/any-sync/app" "github.com/pkg/errors" - "github.com/anyproto/anytype-heart/core/block/editor/lastused" "github.com/anyproto/anytype-heart/core/block/editor/state" "github.com/anyproto/anytype-heart/core/block/restriction" "github.com/anyproto/anytype-heart/core/block/source" @@ -65,7 +64,6 @@ type service struct { bookmarkService bookmarkService spaceService space.Service templateService templateService - lastUsedUpdater lastused.ObjectUsageUpdater archiver objectArchiver } @@ -79,7 +77,6 @@ func (s *service) Init(a *app.App) (err error) { s.collectionService = app.MustComponent[collectionService](a) s.spaceService = app.MustComponent[space.Service](a) s.templateService = app.MustComponent[templateService](a) - s.lastUsedUpdater = app.MustComponent[lastused.ObjectUsageUpdater](a) s.archiver = app.MustComponent[objectArchiver](a) return nil } diff --git a/core/block/object/objectcreator/creator_test.go b/core/block/object/objectcreator/creator_test.go index df8a95daf..14ceb63b1 100644 --- a/core/block/object/objectcreator/creator_test.go +++ b/core/block/object/objectcreator/creator_test.go @@ -9,7 +9,6 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" - "github.com/anyproto/anytype-heart/core/block/editor/lastused/mock_lastused" "github.com/anyproto/anytype-heart/core/block/editor/smartblock/smarttest" "github.com/anyproto/anytype-heart/core/block/editor/state" "github.com/anyproto/anytype-heart/core/domain" @@ -26,7 +25,6 @@ type fixture struct { spaceService *mock_space.MockService spc *mock_clientspace.MockSpace templateService *testTemplateService - lastUsedService *mock_lastused.MockObjectUsageUpdater service Service } @@ -35,19 +33,16 @@ func newFixture(t *testing.T) *fixture { spc := mock_clientspace.NewMockSpace(t) templateSvc := &testTemplateService{} - lastUsedSvc := mock_lastused.NewMockObjectUsageUpdater(t) s := &service{ spaceService: spaceService, templateService: templateSvc, - lastUsedUpdater: lastUsedSvc, } return &fixture{ spaceService: spaceService, spc: spc, templateService: templateSvc, - lastUsedService: lastUsedSvc, service: s, } } @@ -77,7 +72,6 @@ func TestService_CreateObject(t *testing.T) { f.spaceService.EXPECT().Get(mock.Anything, mock.Anything).Return(f.spc, nil) f.spc.EXPECT().CreateTreeObject(mock.Anything, mock.Anything).Return(sb, nil) f.spc.EXPECT().Id().Return(spaceId) - f.lastUsedService.EXPECT().UpdateLastUsedDate(spaceId, bundle.TypeKeyTemplate, mock.Anything).Return() // when id, _, err := f.service.CreateObject(context.Background(), spaceId, CreateObjectRequest{ diff --git a/core/block/object/objectcreator/smartblock.go b/core/block/object/objectcreator/smartblock.go index 6a31f853f..1e10a2946 100644 --- a/core/block/object/objectcreator/smartblock.go +++ b/core/block/object/objectcreator/smartblock.go @@ -2,7 +2,6 @@ package objectcreator import ( "context" - "strings" "time" "github.com/anyproto/any-sync/commonspace/object/tree/treestorage" @@ -15,8 +14,6 @@ import ( "github.com/anyproto/anytype-heart/metrics" "github.com/anyproto/anytype-heart/pkg/lib/bundle" coresb "github.com/anyproto/anytype-heart/pkg/lib/core/smartblock" - "github.com/anyproto/anytype-heart/pkg/lib/localstore/addr" - "github.com/anyproto/anytype-heart/pkg/lib/pb/model" "github.com/anyproto/anytype-heart/space/clientspace" ) @@ -100,8 +97,6 @@ func (s *service) CreateSmartBlockFromStateInSpaceWithOptions( sb.Unlock() id = sb.Id() - s.updateLastUsedDate(spc.Id(), sbType, newDetails, objectTypeKeys[0]) - ev.SmartblockCreateMs = time.Since(startTime).Milliseconds() - ev.SetDetailsMs - ev.WorkspaceCreateMs - ev.GetWorkspaceBlockWaitMs ev.SmartblockType = int(sbType) ev.ObjectId = id @@ -109,24 +104,6 @@ func (s *service) CreateSmartBlockFromStateInSpaceWithOptions( return id, newDetails, nil } -func (s *service) updateLastUsedDate(spaceId string, sbType coresb.SmartBlockType, details *domain.Details, typeKey domain.TypeKey) { - if details.GetInt64(bundle.RelationKeyLastUsedDate) != 0 { - return - } - uk := details.GetString(bundle.RelationKeyUniqueKey) - ts := time.Now().Unix() - switch sbType { - case coresb.SmartBlockTypeObjectType: - s.lastUsedUpdater.UpdateLastUsedDate(spaceId, domain.TypeKey(strings.TrimPrefix(uk, addr.ObjectTypeKeyToIdPrefix)), ts) - case coresb.SmartBlockTypeRelation: - s.lastUsedUpdater.UpdateLastUsedDate(spaceId, domain.RelationKey(strings.TrimPrefix(uk, addr.RelationKeyToIdPrefix)), ts) - default: - if details.GetInt64(bundle.RelationKeyOrigin) == int64(model.ObjectOrigin_none) { - s.lastUsedUpdater.UpdateLastUsedDate(spaceId, typeKey, ts) - } - } -} - func objectTypeKeysToSmartBlockType(typeKeys []domain.TypeKey) coresb.SmartBlockType { // TODO Add validation for types that user can't create diff --git a/core/details.go b/core/details.go index cbd980462..a47cc3fe5 100644 --- a/core/details.go +++ b/core/details.go @@ -25,7 +25,7 @@ func (mw *Middleware) ObjectSetDetails(cctx context.Context, req *pb.RpcObjectSe return m } - err := mustService[detailservice.Service](mw).SetDetailsAndUpdateLastUsed(ctx, req.ContextId, requestDetailsListToDomain(req.GetDetails())) + err := mustService[detailservice.Service](mw).SetDetails(ctx, req.ContextId, requestDetailsListToDomain(req.GetDetails())) if err != nil { return response(pb.RpcObjectSetDetailsResponseError_UNKNOWN_ERROR, err) } From a3011cb7626b140294aaadf45464d07f64e38ed2 Mon Sep 17 00:00:00 2001 From: Sergey Date: Wed, 29 Jan 2025 10:40:47 +0100 Subject: [PATCH 267/279] GO-4146: Migration: Disable network id check --- core/anytype/config/config.go | 3 ++- core/application/account_store_migrate.go | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/core/anytype/config/config.go b/core/anytype/config/config.go index c46fcbaf7..2129d3153 100644 --- a/core/anytype/config/config.go +++ b/core/anytype/config/config.go @@ -70,6 +70,7 @@ type Config struct { DisableThreadsSyncEvents bool DontStartLocalNetworkSyncAutomatically bool PeferYamuxTransport bool + DisableNetworkIdCheck bool SpaceStorageMode storage.SpaceStorageMode NetworkMode pb.RpcAccountNetworkMode NetworkCustomConfigFilePath string `json:",omitempty"` // not saved to config @@ -407,7 +408,7 @@ func (c *Config) GetNodeConfWithError() (conf nodeconf.Configuration, err error) if err := yaml.Unmarshal(confBytes, &conf); err != nil { return nodeconf.Configuration{}, errors.Join(ErrNetworkFileFailedToRead, err) } - if c.NetworkId != "" && c.NetworkId != conf.NetworkId { + if !c.DisableNetworkIdCheck && c.NetworkId != "" && c.NetworkId != conf.NetworkId { log.Warnf("Network id mismatch: %s != %s", c.NetworkId, conf.NetworkId) return nodeconf.Configuration{}, errors.Join(ErrNetworkIdMismatch, fmt.Errorf("network id mismatch: %s != %s", c.NetworkId, conf.NetworkId)) } diff --git a/core/application/account_store_migrate.go b/core/application/account_store_migrate.go index 0179bb234..2f7f2a49d 100644 --- a/core/application/account_store_migrate.go +++ b/core/application/account_store_migrate.go @@ -49,6 +49,7 @@ func (s *Service) migrate(ctx context.Context, id string) error { } cfg := anytype.BootstrapConfig(false, os.Getenv("ANYTYPE_STAGING") == "1") cfg.PeferYamuxTransport = true + cfg.DisableNetworkIdCheck = true comps := []app.Component{ cfg, anytype.BootstrapWallet(s.rootPath, res), From 205db1994b0f1a744453538265bd7e779dffd94e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 29 Jan 2025 11:49:34 +0100 Subject: [PATCH 268/279] Bump github.com/samber/lo from 1.49.0 to 1.49.1 (#2060) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index d6574d880..829142b21 100644 --- a/go.mod +++ b/go.mod @@ -85,7 +85,7 @@ require ( github.com/prometheus/client_golang v1.20.5 github.com/pseudomuto/protoc-gen-doc v1.5.1 github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd - github.com/samber/lo v1.49.0 + github.com/samber/lo v1.49.1 github.com/sasha-s/go-deadlock v0.3.5 github.com/shirou/gopsutil/v3 v3.24.5 github.com/srwiley/oksvg v0.0.0-20221011165216-be6e8873101c diff --git a/go.sum b/go.sum index ad91aade9..99d0be11d 100644 --- a/go.sum +++ b/go.sum @@ -979,8 +979,8 @@ github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQD github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd h1:CmH9+J6ZSsIjUK3dcGsnCnO41eRBOnY12zwkn5qVwgc= github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd/go.mod h1:hPqNNc0+uJM6H+SuU8sEs5K5IQeKccPqeSjfgcKGgPk= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/samber/lo v1.49.0 h1:AGnTnQrg1jpFuwECPUSoxZCfVH5W22b605kWSry3YxM= -github.com/samber/lo v1.49.0/go.mod h1:dO6KHFzUKXgP8LDhU0oI8d2hekjXnGOu0DB8Jecxd6o= +github.com/samber/lo v1.49.1 h1:4BIFyVfuQSEpluc7Fua+j1NolZHiEHEpaSEKdsH0tew= +github.com/samber/lo v1.49.1/go.mod h1:dO6KHFzUKXgP8LDhU0oI8d2hekjXnGOu0DB8Jecxd6o= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= github.com/sasha-s/go-deadlock v0.3.5 h1:tNCOEEDG6tBqrNDOX35j/7hL5FcFViG6awUGROb2NsU= github.com/sasha-s/go-deadlock v0.3.5/go.mod h1:bugP6EGbdGYObIlx7pUZtWqlvo8k9H6vCBBsiChJQ5U= From 425ee7b016594ae6ddb14599b419c78fac4471a6 Mon Sep 17 00:00:00 2001 From: AnastasiaShemyakinskaya Date: Wed, 29 Jan 2025 12:58:06 +0100 Subject: [PATCH 269/279] GO-4968: fix flaky test Signed-off-by: AnastasiaShemyakinskaya --- core/publish/service_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/publish/service_test.go b/core/publish/service_test.go index 6aa175172..bcf12a4f2 100644 --- a/core/publish/service_test.go +++ b/core/publish/service_test.go @@ -677,7 +677,7 @@ func prepareExporterWithFile(t *testing.T, objectTypeId string, spaceService *mo objectType.SetType(smartblock.SmartBlockTypeObjectType) file := smarttest.New(fileId) - fileDoc := objectType.NewState().SetDetails(domain.NewDetailsFromMap(map[domain.RelationKey]domain.Value{ + fileDoc := file.NewState().SetDetails(domain.NewDetailsFromMap(map[domain.RelationKey]domain.Value{ bundle.RelationKeyId: domain.String(fileId), bundle.RelationKeyType: domain.String(objectTypeId), bundle.RelationKeyFileId: domain.String(fileId), From 1c9a3b84e48a814320d01f374228cdf45af5a8a8 Mon Sep 17 00:00:00 2001 From: Roman Khafizianov Date: Wed, 29 Jan 2025 21:17:33 +0100 Subject: [PATCH 270/279] GO-4972 archive sync detail indexation fix (#2064) --- core/indexer/fulltext.go | 12 ++++++++++-- core/indexer/spaceindexer.go | 9 ++++++--- core/syncstatus/detailsupdater/updater.go | 9 +++++++++ pkg/lib/core/smartblock/smartblock.go | 14 ++++++++++---- .../localstore/objectstore/spaceindex/queries.go | 4 ++-- 5 files changed, 37 insertions(+), 11 deletions(-) diff --git a/core/indexer/fulltext.go b/core/indexer/fulltext.go index 79013fbc1..b4344f25a 100644 --- a/core/indexer/fulltext.go +++ b/core/indexer/fulltext.go @@ -151,9 +151,11 @@ var filesLayouts = map[model.ObjectTypeLayout]struct{}{ func (i *indexer) prepareSearchDocument(ctx context.Context, id string) (docs []ftsearch.SearchDoc, err error) { ctx = context.WithValue(ctx, metrics.CtxKeyEntrypoint, "index_fulltext") + var fulltextSkipped bool err = cache.DoContext(i.picker, ctx, id, func(sb smartblock2.SmartBlock) error { - indexDetails, _ := sb.Type().Indexable() - if !indexDetails { + fulltext, _, _ := sb.Type().Indexable() + if !fulltext { + fulltextSkipped = true return nil } @@ -234,6 +236,12 @@ func (i *indexer) prepareSearchDocument(ctx context.Context, id string) (docs [] return nil }) + if fulltextSkipped { + // todo: this should be removed. objects which is not supposed to be added to fulltext index should not be added to the queue + // but now it happens in the ftInit that some objects still can be added to the queue + // we need to avoid TryRemoveFromCache in this case + return docs, nil + } _, cacheErr := i.picker.TryRemoveFromCache(ctx, id) if cacheErr != nil { log.With("objectId", id).Errorf("object cache remove: %v", err) diff --git a/core/indexer/spaceindexer.go b/core/indexer/spaceindexer.go index 36b266b3c..6bfe56678 100644 --- a/core/indexer/spaceindexer.go +++ b/core/indexer/spaceindexer.go @@ -142,7 +142,7 @@ func (i *spaceIndexer) index(ctx context.Context, info smartblock.DocInfo, optio } } - indexDetails, indexLinks := info.SmartblockType.Indexable() + _, indexDetails, indexLinks := info.SmartblockType.Indexable() if !indexDetails && !indexLinks { return nil } @@ -192,8 +192,11 @@ func (i *spaceIndexer) index(ctx context.Context, info smartblock.DocInfo, optio if !(opts.SkipFullTextIfHeadsNotChanged && lastIndexedHash == headHashToIndex) { // Use component's context because ctx from parameter contains transaction - if err := i.objectStore.AddToIndexQueue(i.runCtx, info.Id); err != nil { - log.With("objectID", info.Id).Errorf("can't add id to index queue: %v", err) + fulltext, _, _ := info.SmartblockType.Indexable() + if fulltext { + if err := i.objectStore.AddToIndexQueue(i.runCtx, info.Id); err != nil { + log.With("objectID", info.Id).Errorf("can't add id to index queue: %v", err) + } } } } else { diff --git a/core/syncstatus/detailsupdater/updater.go b/core/syncstatus/detailsupdater/updater.go index 53daa12bc..ddb2f7390 100644 --- a/core/syncstatus/detailsupdater/updater.go +++ b/core/syncstatus/detailsupdater/updater.go @@ -198,6 +198,7 @@ func (u *syncStatusUpdater) updateObjectDetails(syncStatusDetails *syncStatusDet if details == nil { details = domain.NewDetails() } + // todo: make the checks consistent here and in setSyncDetails if !u.isLayoutSuitableForSyncRelations(details) { return details, false, nil } @@ -223,6 +224,14 @@ func (u *syncStatusUpdater) updateObjectDetails(syncStatusDetails *syncStatusDet func (u *syncStatusUpdater) setSyncDetails(sb smartblock.SmartBlock, status domain.ObjectSyncStatus, syncError domain.SyncError) error { if !slices.Contains(helper.SyncRelationsSmartblockTypes(), sb.Type()) { + if sb.LocalDetails().Has(bundle.RelationKeySyncStatus) { + // do cleanup because of previous sync relations indexation problem + st := sb.NewState() + st.LocalDetails().Delete(bundle.RelationKeySyncDate) + st.LocalDetails().Delete(bundle.RelationKeySyncStatus) + st.LocalDetails().Delete(bundle.RelationKeySyncError) + return sb.Apply(st, smartblock.KeepInternalFlags) + } return nil } st := sb.NewState() diff --git a/pkg/lib/core/smartblock/smartblock.go b/pkg/lib/core/smartblock/smartblock.go index ce55b923f..971850506 100644 --- a/pkg/lib/core/smartblock/smartblock.go +++ b/pkg/lib/core/smartblock/smartblock.go @@ -70,13 +70,19 @@ func (sbt SmartBlockType) IsOneOf(sbts ...SmartBlockType) bool { } // Indexable determines if the object of specific type need to be proceeded by the indexer in order to appear in sets -func (sbt SmartBlockType) Indexable() (details, outgoingLinks bool) { +func (sbt SmartBlockType) Indexable() (fulltext, details, outgoingLinks bool) { switch sbt { case SmartBlockTypeDate, SmartBlockTypeAccountOld, SmartBlockTypeNotificationObject, SmartBlockTypeDevicesObject: - return false, false + return false, false, false case SmartBlockTypeWidget, SmartBlockTypeArchive, SmartBlockTypeHome: - return true, false + return false, true, false + case SmartBlockTypeWorkspace, + SmartBlockTypeAccountObject, + SmartBlockTypeChatObject, + SmartBlockTypeChatDerivedObject, + SmartBlockTypeSpaceView: + return false, true, true default: - return true, true + return true, true, true } } diff --git a/pkg/lib/localstore/objectstore/spaceindex/queries.go b/pkg/lib/localstore/objectstore/spaceindex/queries.go index 6cb0c3ca9..4f6edf516 100644 --- a/pkg/lib/localstore/objectstore/spaceindex/queries.go +++ b/pkg/lib/localstore/objectstore/spaceindex/queries.go @@ -174,7 +174,7 @@ func (s *dsObjectStore) QueryFromFulltext(results []database.FulltextResult, par for _, res := range results { // Don't use spaceID because expected objects are virtual if sbt, err := typeprovider.SmartblockTypeFromID(res.Path.ObjectId); err == nil { - if indexDetails, _ := sbt.Indexable(); !indexDetails && s.sourceService != nil { + if _, indexDetails, _ := sbt.Indexable(); !indexDetails && s.sourceService != nil { details, err := s.sourceService.DetailsFromIdBasedSource(domain.FullID{ ObjectID: res.Path.ObjectId, SpaceID: s.SpaceId(), @@ -428,7 +428,7 @@ func (s *dsObjectStore) QueryByIds(ids []string) (records []database.Record, err for _, id := range ids { // Don't use spaceID because expected objects are virtual if sbt, err := typeprovider.SmartblockTypeFromID(id); err == nil { - if indexDetails, _ := sbt.Indexable(); !indexDetails && s.sourceService != nil { + if _, indexDetails, _ := sbt.Indexable(); !indexDetails && s.sourceService != nil { details, err := s.sourceService.DetailsFromIdBasedSource(domain.FullID{ ObjectID: id, SpaceID: s.SpaceId(), From 7acd04da63430b1c1813538f8f53dd363fbd9ff7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 29 Jan 2025 21:20:10 +0100 Subject: [PATCH 271/279] Bump github.com/golang/glog from 1.2.3 to 1.2.4 (#2061) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 829142b21..c031bfa6f 100644 --- a/go.mod +++ b/go.mod @@ -186,7 +186,7 @@ require ( github.com/gogs/chardet v0.0.0-20211120154057-b7413eaefb8f // indirect github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect github.com/golang/geo v0.0.0-20210211234256-740aa86cb551 // indirect - github.com/golang/glog v1.2.3 // indirect + github.com/golang/glog v1.2.4 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/google/flatbuffers v1.12.1 // indirect github.com/google/go-querystring v1.1.0 // indirect diff --git a/go.sum b/go.sum index 99d0be11d..432e76faa 100644 --- a/go.sum +++ b/go.sum @@ -415,8 +415,8 @@ github.com/golang/geo v0.0.0-20200319012246-673a6f80352d/go.mod h1:QZ0nwyI2jOfgR github.com/golang/geo v0.0.0-20210211234256-740aa86cb551 h1:gtexQ/VGyN+VVFRXSFiguSNcXmS6rkKT+X7FdIrTtfo= github.com/golang/geo v0.0.0-20210211234256-740aa86cb551/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.2.3 h1:oDTdz9f5VGVVNGu/Q7UXKWYsD0873HXLHdJUNBsSEKM= -github.com/golang/glog v1.2.3/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= +github.com/golang/glog v1.2.4 h1:CNNw5U8lSiiBk7druxtSHHTsRWcxKoac6kZKm2peBBc= +github.com/golang/glog v1.2.4/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= From 565682788c721c8c0af11ba23fca04e08cc1fc5f Mon Sep 17 00:00:00 2001 From: AnastasiaShemyakinskaya Date: Thu, 30 Jan 2025 11:48:28 +0100 Subject: [PATCH 272/279] GO-4945: add objects details in publishing list response Signed-off-by: AnastasiaShemyakinskaya --- core/publish/service.go | 20 + core/publish/service_test.go | 214 ++- docs/proto.md | 1 + pb/commands.pb.go | 2526 +++++++++++++++++----------------- pb/protos/commands.proto | 1 + 5 files changed, 1491 insertions(+), 1271 deletions(-) diff --git a/core/publish/service.go b/core/publish/service.go index 12936eae3..4d475203c 100644 --- a/core/publish/service.go +++ b/core/publish/service.go @@ -17,6 +17,7 @@ import ( "github.com/anyproto/anytype-publish-server/publishclient/publishapi" "github.com/gogo/protobuf/jsonpb" "github.com/gogo/protobuf/proto" + "github.com/gogo/protobuf/types" "go.uber.org/zap" "golang.org/x/exp/slices" @@ -25,6 +26,7 @@ import ( "github.com/anyproto/anytype-heart/core/inviteservice" "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/pkg/lib/bundle" + "github.com/anyproto/anytype-heart/pkg/lib/localstore/objectstore" "github.com/anyproto/anytype-heart/pkg/lib/pb/model" "github.com/anyproto/anytype-heart/space" "github.com/anyproto/anytype-heart/space/clientspace" @@ -88,6 +90,7 @@ type service struct { publishClientService publishclient.Client identityService identity.Service inviteService inviteservice.InviteService + objectStore objectstore.ObjectStore } func New() Service { @@ -100,6 +103,7 @@ func (s *service) Init(a *app.App) error { s.publishClientService = app.MustComponent[publishclient.Client](a) s.identityService = app.MustComponent[identity.Service](a) s.inviteService = app.MustComponent[inviteservice.InviteService](a) + s.objectStore = app.MustComponent[objectstore.ObjectStore](a) return nil } @@ -431,6 +435,7 @@ func (s *service) PublishList(ctx context.Context, spaceId string) ([]*pb.RpcPub pbPublishes := make([]*pb.RpcPublishingPublishState, 0, len(publishes)) for _, publish := range publishes { version := s.retrieveVersion(publish) + details := s.retrieveObjectDetails(publish) pbPublishes = append(pbPublishes, &pb.RpcPublishingPublishState{ SpaceId: publish.SpaceId, ObjectId: publish.ObjectId, @@ -440,11 +445,26 @@ func (s *service) PublishList(ctx context.Context, spaceId string) ([]*pb.RpcPub Timestamp: publish.Timestamp, Size_: publish.Size_, JoinSpace: version.JoinSpace, + Details: details, }) } return pbPublishes, nil } +func (s *service) retrieveObjectDetails(publish *publishapi.Publish) *types.Struct { + records, err := s.objectStore.SpaceIndex(publish.SpaceId).QueryByIds([]string{publish.ObjectId}) + if err != nil { + log.Error("failed to extract object details", zap.Error(err)) + return nil + } + if len(records) == 0 { + log.Error("details weren't found in store") + return nil + } + details := records[0].Details + return details.ToProto() +} + func (s *service) retrieveVersion(publish *publishapi.Publish) *Version { version := &Version{} err := json.Unmarshal([]byte(publish.Version), version) diff --git a/core/publish/service_test.go b/core/publish/service_test.go index bcf12a4f2..a9aacf522 100644 --- a/core/publish/service_test.go +++ b/core/publish/service_test.go @@ -18,6 +18,7 @@ import ( "github.com/anyproto/any-sync/commonspace/spacesyncproto" "github.com/anyproto/any-sync/consensus/consensusproto" "github.com/anyproto/anytype-publish-server/publishclient/publishapi" + "github.com/gogo/protobuf/types" "github.com/stretchr/testify/assert" "github.com/anyproto/anytype-heart/core/anytype/account/mock_account" @@ -47,12 +48,14 @@ import ( "github.com/anyproto/anytype-heart/space/mock_space" "github.com/anyproto/anytype-heart/space/spacecore/typeprovider/mock_typeprovider" "github.com/anyproto/anytype-heart/tests/testutil" + "github.com/anyproto/anytype-heart/util/pbtypes" ) const ( - spaceId = "spaceId" - objectId = "objectId" - id = "identity" + spaceId = "spaceId" + objectId = "objectId" + id = "identity" + objectName = "test" ) type mockPublishClient struct { @@ -453,41 +456,6 @@ func TestPublish(t *testing.T) { }) } -func TestService_PublishList(t *testing.T) { - t.Run("success", func(t *testing.T) { - // given - publishClientService := &mockPublishClient{ - t: t, - expectedResult: []*publishapi.Publish{ - { - SpaceId: spaceId, - ObjectId: objectId, - Uri: "test", - Version: "{\"heads\":[\"heads\"],\"joinSpace\":true}", - }, - }, - } - svc := &service{ - publishClientService: publishClientService, - } - - // when - publishes, err := svc.PublishList(context.Background(), spaceId) - - // then - expectedModel := &pb.RpcPublishingPublishState{ - SpaceId: spaceId, - ObjectId: objectId, - Uri: "test", - Version: "{\"heads\":[\"heads\"],\"joinSpace\":true}", - JoinSpace: true, - } - assert.NoError(t, err) - assert.Len(t, publishes, 1) - assert.Equal(t, expectedModel, publishes[0]) - }) -} - func TestService_GetStatus(t *testing.T) { t.Run("success", func(t *testing.T) { // given @@ -522,6 +490,176 @@ func TestService_GetStatus(t *testing.T) { }) } +func TestService_PublishingList(t *testing.T) { + t.Run("success", func(t *testing.T) { + // given + publishClientService := &mockPublishClient{ + t: t, + expectedResult: []*publishapi.Publish{ + { + SpaceId: spaceId, + ObjectId: objectId, + Uri: objectName, + Version: "{\"heads\":[\"heads\"],\"joinSpace\":true}", + }, + }, + } + svc := &service{ + objectStore: objectstore.NewStoreFixture(t), + publishClientService: publishClientService, + } + + // when + publishes, err := svc.PublishList(context.Background(), spaceId) + + // then + expectedModel := &pb.RpcPublishingPublishState{ + SpaceId: spaceId, + ObjectId: objectId, + Uri: objectName, + Version: "{\"heads\":[\"heads\"],\"joinSpace\":true}", + JoinSpace: true, + } + assert.NoError(t, err) + assert.Len(t, publishes, 1) + assert.Equal(t, expectedModel, publishes[0]) + }) + + space1Id := "spaceId1" + object1Id := "objectId1" + name1 := "test1" + t.Run("extract from all spaces", func(t *testing.T) { + // given + publishClientService := &mockPublishClient{ + t: t, + expectedResult: []*publishapi.Publish{ + { + SpaceId: spaceId, + ObjectId: objectId, + Uri: objectName, + Version: "{\"heads\":[\"heads\"],\"joinSpace\":false}", + }, + { + SpaceId: space1Id, + ObjectId: object1Id, + Uri: name1, + Version: "{\"heads\":[\"heads1\"],\"joinSpace\":false}", + }, + }, + } + storeFixture := objectstore.NewStoreFixture(t) + + storeFixture.AddObjects(t, spaceId, []objectstore.TestObject{ + { + bundle.RelationKeyId: domain.String(objectId), + bundle.RelationKeyName: domain.String(objectName), + }, + }) + storeFixture.AddObjects(t, space1Id, []objectstore.TestObject{ + { + bundle.RelationKeyId: domain.String(object1Id), + bundle.RelationKeyName: domain.String(name1), + }, + }) + + svc := &service{ + publishClientService: publishClientService, + objectStore: storeFixture, + } + + // when + publish, err := svc.PublishList(context.Background(), "") + + // then + expectedModel := []*pb.RpcPublishingPublishState{ + { + SpaceId: spaceId, + ObjectId: objectId, + Uri: objectName, + Version: "{\"heads\":[\"heads\"],\"joinSpace\":false}", + JoinSpace: false, + Details: &types.Struct{Fields: map[string]*types.Value{ + bundle.RelationKeyId.String(): pbtypes.String(objectId), + bundle.RelationKeyName.String(): pbtypes.String(objectName), + }}, + }, + { + SpaceId: space1Id, + ObjectId: object1Id, + Uri: name1, + Version: "{\"heads\":[\"heads1\"],\"joinSpace\":false}", + JoinSpace: false, + Details: &types.Struct{Fields: map[string]*types.Value{ + bundle.RelationKeyId.String(): pbtypes.String(object1Id), + bundle.RelationKeyName.String(): pbtypes.String(name1), + }}, + }, + } + assert.NoError(t, err) + assert.Equal(t, expectedModel, publish) + }) + t.Run("details empty", func(t *testing.T) { + // given + publishClientService := &mockPublishClient{ + t: t, + expectedResult: []*publishapi.Publish{ + { + SpaceId: spaceId, + ObjectId: objectId, + Uri: objectName, + Version: "{\"heads\":[\"heads\"],\"joinSpace\":false}", + }, + { + SpaceId: space1Id, + ObjectId: object1Id, + Uri: name1, + Version: "{\"heads\":[\"heads1\"],\"joinSpace\":false}", + }, + }, + } + storeFixture := objectstore.NewStoreFixture(t) + + storeFixture.AddObjects(t, spaceId, []objectstore.TestObject{ + { + bundle.RelationKeyId: domain.String(objectId), + bundle.RelationKeyName: domain.String(objectName), + }, + }) + + svc := &service{ + publishClientService: publishClientService, + objectStore: storeFixture, + } + + // when + publish, err := svc.PublishList(context.Background(), "") + + // then + expectedModel := []*pb.RpcPublishingPublishState{ + { + SpaceId: spaceId, + ObjectId: objectId, + Uri: objectName, + Version: "{\"heads\":[\"heads\"],\"joinSpace\":false}", + JoinSpace: false, + Details: &types.Struct{Fields: map[string]*types.Value{ + bundle.RelationKeyId.String(): pbtypes.String(objectId), + bundle.RelationKeyName.String(): pbtypes.String(objectName), + }}, + }, + { + SpaceId: space1Id, + ObjectId: object1Id, + Uri: name1, + Version: "{\"heads\":[\"heads1\"],\"joinSpace\":false}", + JoinSpace: false, + }, + } + assert.NoError(t, err) + assert.Equal(t, expectedModel, publish) + }) +} + func prepaeSpaceService(t *testing.T, isPersonal bool) (*mock_space.MockService, error) { spaceService := mock_space.NewMockService(t) space := mock_clientspace.NewMockSpace(t) diff --git a/docs/proto.md b/docs/proto.md index 8700cac34..615390e91 100644 --- a/docs/proto.md +++ b/docs/proto.md @@ -18315,6 +18315,7 @@ Available undo/redo operations | timestamp | [int64](#int64) | | | | size | [int64](#int64) | | | | joinSpace | [bool](#bool) | | | +| details | [google.protobuf.Struct](#google-protobuf-Struct) | | | diff --git a/pb/commands.pb.go b/pb/commands.pb.go index 9ac6a93ca..15cb991a4 100644 --- a/pb/commands.pb.go +++ b/pb/commands.pb.go @@ -18952,6 +18952,7 @@ type RpcPublishingPublishState struct { Timestamp int64 `protobuf:"varint,6,opt,name=timestamp,proto3" json:"timestamp,omitempty"` Size_ int64 `protobuf:"varint,7,opt,name=size,proto3" json:"size,omitempty"` JoinSpace bool `protobuf:"varint,8,opt,name=joinSpace,proto3" json:"joinSpace,omitempty"` + Details *types.Struct `protobuf:"bytes,9,opt,name=details,proto3" json:"details,omitempty"` } func (m *RpcPublishingPublishState) Reset() { *m = RpcPublishingPublishState{} } @@ -19043,6 +19044,13 @@ func (m *RpcPublishingPublishState) GetJoinSpace() bool { return false } +func (m *RpcPublishingPublishState) GetDetails() *types.Struct { + if m != nil { + return m.Details + } + return nil +} + type RpcPublishingCreate struct { } @@ -72453,1246 +72461,1246 @@ func init() { func init() { proto.RegisterFile("pb/protos/commands.proto", fileDescriptor_8261c968b2e6f45c) } var fileDescriptor_8261c968b2e6f45c = []byte{ - // 19811 bytes of a gzipped FileDescriptorProto + // 19818 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xfd, 0x7b, 0x9c, 0x24, 0x49, 0x59, 0x2f, 0x8c, 0x4f, 0x65, 0x56, 0x55, 0x77, 0x3f, 0x7d, 0x99, 0x9a, 0xdc, 0x99, 0xd9, 0xd9, - 0xd8, 0x65, 0x76, 0x9c, 0x5d, 0x96, 0x75, 0x59, 0x7a, 0x2f, 0x20, 0xb2, 0xcb, 0xde, 0xaa, 0xab, + 0xd8, 0x65, 0x76, 0x9d, 0x5d, 0x96, 0x75, 0x59, 0x7a, 0x2f, 0x20, 0xb2, 0xcb, 0xde, 0xaa, 0xab, 0xab, 0xbb, 0x6b, 0xb7, 0xbb, 0xaa, 0xcd, 0xaa, 0x9e, 0x61, 0xf5, 0xf8, 0xab, 0x93, 0x53, 0x15, 0xdd, 0x9d, 0x3b, 0xd5, 0x99, 0x65, 0x66, 0x76, 0xcf, 0x0e, 0xbf, 0xcf, 0x79, 0x8f, 0x88, 0x2b, - 0x28, 0x72, 0x10, 0x15, 0x15, 0x15, 0x10, 0x70, 0xf5, 0x80, 0x02, 0x72, 0x3f, 0xa0, 0x02, 0x72, - 0x91, 0x8b, 0x88, 0x08, 0x72, 0x11, 0xdd, 0x57, 0x90, 0x8b, 0x78, 0x3e, 0x72, 0x78, 0xf5, 0x3d, - 0x82, 0x28, 0xbc, 0xbe, 0x9f, 0x8c, 0x88, 0xbc, 0x44, 0x75, 0x65, 0x56, 0x64, 0x75, 0x65, 0xf5, - 0x22, 0xef, 0x7f, 0x99, 0x91, 0x91, 0x4f, 0x3c, 0xf1, 0x7c, 0x9f, 0x88, 0x78, 0x22, 0xe2, 0x89, - 0x27, 0xe0, 0x54, 0xf7, 0xc2, 0x2d, 0x5d, 0xcb, 0x74, 0x4c, 0xfb, 0x96, 0x96, 0xb9, 0xb3, 0xa3, - 0x19, 0x6d, 0x7b, 0x9e, 0xbc, 0x2b, 0x13, 0x9a, 0x71, 0xd9, 0xb9, 0xdc, 0xc5, 0xe8, 0xfa, 0xee, - 0xc5, 0xad, 0x5b, 0x3a, 0xfa, 0x85, 0x5b, 0xba, 0x17, 0x6e, 0xd9, 0x31, 0xdb, 0xb8, 0xe3, 0xfd, - 0x40, 0x5e, 0x58, 0x76, 0x74, 0x63, 0x54, 0xae, 0x8e, 0xd9, 0xd2, 0x3a, 0xb6, 0x63, 0x5a, 0x98, - 0xe5, 0x3c, 0x19, 0x14, 0x89, 0xf7, 0xb0, 0xe1, 0x78, 0x14, 0xae, 0xd9, 0x32, 0xcd, 0xad, 0x0e, - 0xa6, 0xdf, 0x2e, 0xec, 0x6e, 0xde, 0x62, 0x3b, 0xd6, 0x6e, 0xcb, 0x61, 0x5f, 0xcf, 0xf4, 0x7e, - 0x6d, 0x63, 0xbb, 0x65, 0xe9, 0x5d, 0xc7, 0xb4, 0x68, 0x8e, 0xb3, 0x5f, 0xfe, 0xc5, 0x49, 0x90, - 0xd5, 0x6e, 0x0b, 0x7d, 0x63, 0x02, 0xe4, 0x62, 0xb7, 0x8b, 0x3e, 0x20, 0x01, 0x2c, 0x63, 0xe7, - 0x1c, 0xb6, 0x6c, 0xdd, 0x34, 0xd0, 0x51, 0x98, 0x50, 0xf1, 0x8f, 0xed, 0x62, 0xdb, 0xb9, 0x33, - 0xfb, 0xfc, 0xaf, 0xc8, 0x19, 0xf4, 0xa8, 0x04, 0x93, 0x2a, 0xb6, 0xbb, 0xa6, 0x61, 0x63, 0xe5, - 0x3e, 0xc8, 0x61, 0xcb, 0x32, 0xad, 0x53, 0x99, 0x33, 0x99, 0x1b, 0xa7, 0x6f, 0xbf, 0x69, 0x9e, - 0x55, 0x7f, 0x5e, 0xed, 0xb6, 0xe6, 0x8b, 0xdd, 0xee, 0x7c, 0x40, 0x69, 0xde, 0xfb, 0x69, 0xbe, - 0xec, 0xfe, 0xa1, 0xd2, 0x1f, 0x95, 0x53, 0x30, 0xb1, 0x47, 0x33, 0x9c, 0x92, 0xce, 0x64, 0x6e, - 0x9c, 0x52, 0xbd, 0x57, 0xf7, 0x4b, 0x1b, 0x3b, 0x9a, 0xde, 0xb1, 0x4f, 0xc9, 0xf4, 0x0b, 0x7b, - 0x45, 0xaf, 0xca, 0x40, 0x8e, 0x10, 0x51, 0x4a, 0x90, 0x6d, 0x99, 0x6d, 0x4c, 0x8a, 0x9f, 0xbb, - 0xfd, 0x16, 0xf1, 0xe2, 0xe7, 0x4b, 0x66, 0x1b, 0xab, 0xe4, 0x67, 0xe5, 0x0c, 0x4c, 0x7b, 0x62, - 0x09, 0xd8, 0x08, 0x27, 0x9d, 0xbd, 0x1d, 0xb2, 0x6e, 0x7e, 0x65, 0x12, 0xb2, 0xd5, 0x8d, 0xd5, - 0xd5, 0xc2, 0x11, 0xe5, 0x18, 0xcc, 0x6e, 0x54, 0x1f, 0xa8, 0xd6, 0xce, 0x57, 0x9b, 0x65, 0x55, - 0xad, 0xa9, 0x85, 0x8c, 0x32, 0x0b, 0x53, 0x0b, 0xc5, 0xc5, 0x66, 0xa5, 0xba, 0xbe, 0xd1, 0x28, - 0x48, 0xe8, 0xe5, 0x32, 0xcc, 0xd5, 0xb1, 0xb3, 0x88, 0xf7, 0xf4, 0x16, 0xae, 0x3b, 0x9a, 0x83, - 0xd1, 0x8b, 0x32, 0xbe, 0x30, 0x95, 0x0d, 0xb7, 0x50, 0xff, 0x13, 0xab, 0xc0, 0x53, 0xf7, 0x55, - 0x80, 0xa7, 0x30, 0xcf, 0xfe, 0x9e, 0x0f, 0xa5, 0xa9, 0x61, 0x3a, 0x67, 0x9f, 0x02, 0xd3, 0xa1, - 0x6f, 0xca, 0x1c, 0xc0, 0x42, 0xb1, 0xf4, 0xc0, 0xb2, 0x5a, 0xdb, 0xa8, 0x2e, 0x16, 0x8e, 0xb8, - 0xef, 0x4b, 0x35, 0xb5, 0xcc, 0xde, 0x33, 0xe8, 0x5b, 0x99, 0x10, 0x98, 0x8b, 0x3c, 0x98, 0xf3, - 0x83, 0x99, 0xe9, 0x03, 0x28, 0xfa, 0x2d, 0x1f, 0x9c, 0x65, 0x0e, 0x9c, 0xa7, 0x26, 0x23, 0x97, - 0x3e, 0x40, 0x8f, 0x48, 0x30, 0x59, 0xdf, 0xde, 0x75, 0xda, 0xe6, 0x25, 0x03, 0x4d, 0xf9, 0xc8, - 0xa0, 0xaf, 0x85, 0x65, 0x72, 0x0f, 0x2f, 0x93, 0x1b, 0xf7, 0x57, 0x82, 0x51, 0x88, 0x90, 0xc6, - 0x6f, 0xf8, 0xd2, 0x28, 0x72, 0xd2, 0x78, 0x8a, 0x28, 0xa1, 0xf4, 0xe5, 0xf0, 0xab, 0xcf, 0x80, - 0x5c, 0xbd, 0xab, 0xb5, 0x30, 0xfa, 0xa8, 0x0c, 0x33, 0xab, 0x58, 0xdb, 0xc3, 0xc5, 0x6e, 0xd7, - 0x32, 0xf7, 0x30, 0x2a, 0x05, 0xfa, 0x7a, 0x0a, 0x26, 0x6c, 0x37, 0x53, 0xa5, 0x4d, 0x6a, 0x30, - 0xa5, 0x7a, 0xaf, 0xca, 0x69, 0x00, 0xbd, 0x8d, 0x0d, 0x47, 0x77, 0x74, 0x6c, 0x9f, 0x92, 0xce, - 0xc8, 0x37, 0x4e, 0xa9, 0xa1, 0x14, 0xf4, 0x0d, 0x49, 0x54, 0xc7, 0x08, 0x17, 0xf3, 0x61, 0x0e, - 0x22, 0xa4, 0xfa, 0x6a, 0x49, 0x44, 0xc7, 0x06, 0x92, 0x4b, 0x26, 0xdb, 0xd7, 0x67, 0x92, 0x0b, - 0xd7, 0xcd, 0x51, 0xad, 0x35, 0xeb, 0x1b, 0xa5, 0x95, 0x66, 0x7d, 0xbd, 0x58, 0x2a, 0x17, 0xb0, - 0x72, 0x1c, 0x0a, 0xe4, 0xb1, 0x59, 0xa9, 0x37, 0x17, 0xcb, 0xab, 0xe5, 0x46, 0x79, 0xb1, 0xb0, - 0xa9, 0x28, 0x30, 0xa7, 0x96, 0x7f, 0x68, 0xa3, 0x5c, 0x6f, 0x34, 0x97, 0x8a, 0x95, 0xd5, 0xf2, - 0x62, 0x61, 0xcb, 0xfd, 0x79, 0xb5, 0xb2, 0x56, 0x69, 0x34, 0xd5, 0x72, 0xb1, 0xb4, 0x52, 0x5e, - 0x2c, 0x6c, 0x2b, 0x57, 0xc2, 0x15, 0xd5, 0x5a, 0xb3, 0xb8, 0xbe, 0xae, 0xd6, 0xce, 0x95, 0x9b, - 0xec, 0x8f, 0x7a, 0x41, 0xa7, 0x05, 0x35, 0x9a, 0xf5, 0x95, 0xa2, 0x5a, 0x2e, 0x2e, 0xac, 0x96, - 0x0b, 0x0f, 0xa1, 0xe7, 0xca, 0x30, 0xbb, 0xa6, 0x5d, 0xc4, 0xf5, 0x6d, 0xcd, 0xc2, 0xda, 0x85, - 0x0e, 0x46, 0xd7, 0x09, 0xe0, 0x89, 0x3e, 0x1a, 0xc6, 0xab, 0xcc, 0xe3, 0x75, 0x4b, 0x1f, 0x01, - 0x73, 0x45, 0x44, 0x00, 0xf6, 0x2f, 0x7e, 0x33, 0x58, 0xe1, 0x00, 0x7b, 0x5a, 0x42, 0x7a, 0xc9, - 0x10, 0xfb, 0x89, 0xc7, 0x01, 0x62, 0xe8, 0x31, 0x19, 0xe6, 0x2a, 0xc6, 0x9e, 0xee, 0xe0, 0x65, - 0x6c, 0x60, 0xcb, 0x1d, 0x07, 0x84, 0x60, 0x78, 0x54, 0x0e, 0xc1, 0xb0, 0xc4, 0xc3, 0x70, 0x6b, - 0x1f, 0xb1, 0xf1, 0x65, 0x44, 0x8c, 0xb6, 0xd7, 0xc0, 0x94, 0x4e, 0xf2, 0x95, 0xf4, 0x36, 0x93, - 0x58, 0x90, 0xa0, 0x5c, 0x0f, 0xb3, 0xf4, 0x65, 0x49, 0xef, 0xe0, 0x07, 0xf0, 0x65, 0x36, 0xee, - 0xf2, 0x89, 0xe8, 0x67, 0xfd, 0xc6, 0x57, 0xe1, 0xb0, 0xfc, 0x81, 0xa4, 0x4c, 0x25, 0x03, 0xf3, - 0x25, 0x8f, 0x87, 0xe6, 0xb7, 0xaf, 0x95, 0xe9, 0xe8, 0x3b, 0x12, 0x4c, 0xd7, 0x1d, 0xb3, 0xeb, - 0xaa, 0xac, 0x6e, 0x6c, 0x89, 0x81, 0xfb, 0xa1, 0x70, 0x1b, 0x2b, 0xf1, 0xe0, 0x3e, 0xa5, 0x8f, - 0x1c, 0x43, 0x05, 0x44, 0xb4, 0xb0, 0x6f, 0xf8, 0x2d, 0x6c, 0x89, 0x43, 0xe5, 0xf6, 0x44, 0xd4, - 0xbe, 0x0b, 0xdb, 0xd7, 0x4b, 0x64, 0x28, 0x78, 0x6a, 0xe6, 0x94, 0x76, 0x2d, 0x0b, 0x1b, 0x8e, - 0x18, 0x08, 0x7f, 0x15, 0x06, 0x61, 0x85, 0x07, 0xe1, 0xf6, 0x18, 0x65, 0xf6, 0x4a, 0x49, 0xb1, - 0x8d, 0xbd, 0xc7, 0x47, 0xf3, 0x01, 0x0e, 0xcd, 0x1f, 0x4c, 0xce, 0x56, 0x32, 0x48, 0x57, 0x86, - 0x40, 0xf4, 0x38, 0x14, 0xdc, 0x31, 0xa9, 0xd4, 0xa8, 0x9c, 0x2b, 0x37, 0x2b, 0xd5, 0x73, 0x95, - 0x46, 0xb9, 0x80, 0xd1, 0x2f, 0xc8, 0x30, 0x43, 0x59, 0x53, 0xf1, 0x9e, 0x79, 0x51, 0xb0, 0xd7, - 0x7b, 0x2c, 0xa1, 0xb1, 0x10, 0x2e, 0x21, 0xa2, 0x65, 0xfc, 0x4c, 0x02, 0x63, 0x21, 0x86, 0xdc, - 0xe3, 0xa9, 0xb7, 0xda, 0xd7, 0x0c, 0xb6, 0xfa, 0xb4, 0x96, 0xbe, 0xbd, 0xd5, 0x4b, 0xb2, 0x00, - 0xb4, 0x92, 0xe7, 0x74, 0x7c, 0x09, 0xad, 0x05, 0x98, 0x70, 0x6a, 0x9b, 0x19, 0xa8, 0xb6, 0x52, - 0x3f, 0xb5, 0x7d, 0x7b, 0x78, 0xcc, 0x5a, 0xe0, 0xd1, 0xbb, 0x39, 0x52, 0xdc, 0x2e, 0x27, 0xd1, - 0xb3, 0x43, 0x4f, 0x51, 0x24, 0xde, 0xea, 0xbc, 0x06, 0xa6, 0xc8, 0x63, 0x55, 0xdb, 0xc1, 0xac, - 0x0d, 0x05, 0x09, 0xca, 0x59, 0x98, 0xa1, 0x19, 0x5b, 0xa6, 0xe1, 0xd6, 0x27, 0x4b, 0x32, 0x70, - 0x69, 0x2e, 0x88, 0x2d, 0x0b, 0x6b, 0x8e, 0x69, 0x11, 0x1a, 0x39, 0x0a, 0x62, 0x28, 0x09, 0x7d, - 0xd5, 0x6f, 0x85, 0x65, 0x4e, 0x73, 0x6e, 0x4b, 0x52, 0x95, 0x64, 0x7a, 0xb3, 0x37, 0x5c, 0xfb, - 0xa3, 0xad, 0xae, 0xe9, 0xa2, 0xbd, 0x44, 0xa6, 0x76, 0x58, 0x39, 0x09, 0x0a, 0x4b, 0x75, 0xf3, - 0x96, 0x6a, 0xd5, 0x46, 0xb9, 0xda, 0x28, 0x6c, 0xf6, 0xd5, 0xa8, 0x2d, 0xf4, 0xea, 0x2c, 0x64, - 0xef, 0x37, 0x75, 0x03, 0x3d, 0x92, 0xe1, 0x54, 0xc2, 0xc0, 0xce, 0x25, 0xd3, 0xba, 0xe8, 0x37, - 0xd4, 0x20, 0x21, 0x1e, 0x9b, 0x40, 0x95, 0xe4, 0x81, 0xaa, 0x94, 0xed, 0xa7, 0x4a, 0x3f, 0x1f, - 0x56, 0xa5, 0xbb, 0x78, 0x55, 0xba, 0xa1, 0x8f, 0xfc, 0x5d, 0xe6, 0x23, 0x3a, 0x80, 0x0f, 0xfa, - 0x1d, 0xc0, 0xbd, 0x1c, 0x8c, 0x4f, 0x16, 0x23, 0x93, 0x0c, 0xc0, 0xcf, 0xa5, 0xda, 0xf0, 0xfb, - 0x41, 0xbd, 0x15, 0x01, 0xf5, 0x76, 0x9f, 0x3e, 0x41, 0xdf, 0xdf, 0x75, 0x3c, 0xb4, 0xbf, 0x9b, - 0xb8, 0xa8, 0x9c, 0x80, 0x63, 0x8b, 0x95, 0xa5, 0xa5, 0xb2, 0x5a, 0xae, 0x36, 0x9a, 0xd5, 0x72, - 0xe3, 0x7c, 0x4d, 0x7d, 0xa0, 0xd0, 0x41, 0xaf, 0x92, 0x01, 0x5c, 0x09, 0x95, 0x34, 0xa3, 0x85, - 0x3b, 0x62, 0x3d, 0xfa, 0xff, 0x92, 0x92, 0xf5, 0x09, 0x01, 0xfd, 0x08, 0x38, 0x5f, 0x26, 0x89, - 0xb7, 0xca, 0x48, 0x62, 0xc9, 0x40, 0x7d, 0xed, 0xe3, 0xc1, 0xf6, 0xbc, 0x02, 0x8e, 0x7a, 0xf4, - 0x58, 0xf6, 0xfe, 0xd3, 0xbe, 0x37, 0x64, 0x61, 0x8e, 0xc1, 0xe2, 0xcd, 0xe3, 0x9f, 0x9f, 0x11, - 0x99, 0xc8, 0x23, 0x98, 0x64, 0xd3, 0x76, 0xaf, 0x7b, 0xf7, 0xdf, 0x95, 0x65, 0x98, 0xee, 0x62, - 0x6b, 0x47, 0xb7, 0x6d, 0xdd, 0x34, 0xe8, 0x82, 0xdc, 0xdc, 0xed, 0x4f, 0xf4, 0x25, 0x4e, 0xd6, - 0x2e, 0xe7, 0xd7, 0x35, 0xcb, 0xd1, 0x5b, 0x7a, 0x57, 0x33, 0x9c, 0xf5, 0x20, 0xb3, 0x1a, 0xfe, - 0x13, 0xbd, 0x38, 0xe1, 0xb4, 0x86, 0xaf, 0x49, 0x84, 0x4a, 0xfc, 0x41, 0x82, 0x29, 0x49, 0x2c, - 0xc1, 0x64, 0x6a, 0xf1, 0x81, 0x54, 0xd5, 0xa2, 0x0f, 0xde, 0x5b, 0xca, 0x55, 0x70, 0xa2, 0x52, - 0x2d, 0xd5, 0x54, 0xb5, 0x5c, 0x6a, 0x34, 0xd7, 0xcb, 0xea, 0x5a, 0xa5, 0x5e, 0xaf, 0xd4, 0xaa, - 0xf5, 0x83, 0xb4, 0x76, 0xf4, 0x11, 0xd9, 0xd7, 0x98, 0x45, 0xdc, 0xea, 0xe8, 0x06, 0x46, 0xf7, - 0x1e, 0x50, 0x61, 0xf8, 0x55, 0x1f, 0x71, 0x9c, 0x59, 0xf9, 0x11, 0x38, 0xbf, 0x32, 0x39, 0xce, - 0xfd, 0x09, 0xfe, 0x07, 0x6e, 0xfe, 0x8f, 0xc9, 0x70, 0x2c, 0xd4, 0x10, 0x55, 0xbc, 0x33, 0xb2, - 0x95, 0xbc, 0x9f, 0x08, 0xb7, 0xdd, 0x0a, 0x8f, 0x69, 0x3f, 0x6b, 0x7a, 0x1f, 0x1b, 0x11, 0xb0, - 0xbe, 0xd6, 0x87, 0x75, 0x95, 0x83, 0xf5, 0x19, 0x43, 0xd0, 0x4c, 0x86, 0xec, 0xef, 0xa5, 0x8a, - 0xec, 0x55, 0x70, 0x62, 0xbd, 0xa8, 0x36, 0x2a, 0xa5, 0xca, 0x7a, 0xd1, 0x1d, 0x47, 0x43, 0x43, - 0x76, 0x84, 0xb9, 0xce, 0x83, 0xde, 0x17, 0xdf, 0x77, 0x67, 0xe1, 0x9a, 0xfe, 0x1d, 0x6d, 0x69, - 0x5b, 0x33, 0xb6, 0x30, 0xd2, 0x45, 0xa0, 0x5e, 0x84, 0x89, 0x16, 0xc9, 0x4e, 0x71, 0x0e, 0x6f, - 0xdd, 0xc4, 0xf4, 0xe5, 0xb4, 0x04, 0xd5, 0xfb, 0x15, 0xbd, 0x39, 0xac, 0x10, 0x0d, 0x5e, 0x21, - 0xee, 0x89, 0x07, 0x6f, 0x1f, 0xdf, 0x11, 0xba, 0xf1, 0x71, 0x5f, 0x37, 0xce, 0x73, 0xba, 0x51, - 0x3a, 0x18, 0xf9, 0x64, 0x6a, 0xf2, 0x27, 0x8f, 0x87, 0x0e, 0x20, 0x52, 0x9b, 0xf4, 0xe8, 0x51, - 0xa1, 0x6f, 0x77, 0xff, 0x0a, 0x19, 0xf2, 0x8b, 0xb8, 0x83, 0x45, 0x57, 0x22, 0xbf, 0x2e, 0x89, - 0x6e, 0x88, 0x50, 0x18, 0x28, 0xed, 0xe8, 0xd5, 0x11, 0x47, 0xdf, 0xc1, 0xb6, 0xa3, 0xed, 0x74, - 0x89, 0xa8, 0x65, 0x35, 0x48, 0x40, 0x3f, 0x29, 0x89, 0x6c, 0x97, 0xc4, 0x14, 0xf3, 0x1f, 0x63, - 0x4d, 0xf1, 0x93, 0x12, 0x4c, 0xd6, 0xb1, 0x53, 0xb3, 0xda, 0xd8, 0x42, 0xf5, 0x00, 0xa3, 0x33, - 0x30, 0x4d, 0x40, 0x71, 0xa7, 0x99, 0x3e, 0x4e, 0xe1, 0x24, 0xe5, 0x06, 0x98, 0xf3, 0x5f, 0xc9, - 0xef, 0xac, 0x1b, 0xef, 0x49, 0x45, 0xff, 0x98, 0x11, 0xdd, 0xc5, 0x65, 0x4b, 0x86, 0x8c, 0x9b, - 0x88, 0x56, 0x2a, 0xb6, 0x23, 0x1b, 0x4b, 0x2a, 0xfd, 0x8d, 0xae, 0x37, 0x4a, 0x00, 0x1b, 0x86, - 0xed, 0xc9, 0xf5, 0xc9, 0x09, 0xe4, 0x8a, 0xfe, 0x39, 0x93, 0x6c, 0x16, 0x13, 0x94, 0x13, 0x21, - 0xb1, 0xdf, 0x4c, 0xb0, 0xb6, 0x10, 0x49, 0x2c, 0x7d, 0x99, 0x7d, 0x71, 0x0e, 0xf2, 0xe7, 0xb5, - 0x4e, 0x07, 0x3b, 0xe8, 0x4b, 0x12, 0xe4, 0x4b, 0x16, 0xd6, 0x1c, 0x1c, 0x16, 0x1d, 0x82, 0x49, - 0xcb, 0x34, 0x9d, 0x75, 0xcd, 0xd9, 0x66, 0x72, 0xf3, 0xdf, 0x99, 0xc3, 0xc0, 0xef, 0x86, 0xbb, - 0x8f, 0x7b, 0x79, 0xd1, 0x7d, 0x3f, 0x57, 0x5b, 0x5a, 0xd0, 0x3c, 0x2d, 0x24, 0xa2, 0xff, 0x40, - 0x30, 0xb9, 0x63, 0xe0, 0x1d, 0xd3, 0xd0, 0x5b, 0x9e, 0xcd, 0xe9, 0xbd, 0xa3, 0xf7, 0xfa, 0x32, - 0x5d, 0xe0, 0x64, 0x3a, 0x2f, 0x5c, 0x4a, 0x32, 0x81, 0xd6, 0x87, 0xe8, 0x3d, 0xae, 0x85, 0xab, - 0x69, 0x67, 0xd0, 0x6c, 0xd4, 0x9a, 0x25, 0xb5, 0x5c, 0x6c, 0x94, 0x9b, 0xab, 0xb5, 0x52, 0x71, - 0xb5, 0xa9, 0x96, 0xd7, 0x6b, 0x05, 0x8c, 0xfe, 0x4e, 0x72, 0x85, 0xdb, 0x32, 0xf7, 0xb0, 0x85, - 0x96, 0x85, 0xe4, 0x1c, 0x27, 0x13, 0x86, 0xc1, 0xcf, 0x0b, 0x3b, 0x6d, 0x30, 0xe9, 0x30, 0x0e, - 0x22, 0x94, 0xf7, 0x7d, 0x42, 0xcd, 0x3d, 0x96, 0xd4, 0xe3, 0x40, 0xd2, 0xff, 0x5b, 0x82, 0x89, - 0x92, 0x69, 0xec, 0x61, 0xcb, 0x09, 0xcf, 0x77, 0xc2, 0xd2, 0xcc, 0xf0, 0xd2, 0x74, 0x07, 0x49, - 0x6c, 0x38, 0x96, 0xd9, 0xf5, 0x26, 0x3c, 0xde, 0x2b, 0xfa, 0xed, 0xa4, 0x12, 0x66, 0x25, 0x47, - 0x2f, 0x7c, 0xf6, 0x2f, 0x88, 0x63, 0x4f, 0xee, 0x69, 0x00, 0xaf, 0x4a, 0x82, 0x4b, 0x7f, 0x06, - 0xd2, 0xef, 0x52, 0x3e, 0x2f, 0xc3, 0x2c, 0x6d, 0x7c, 0x75, 0x4c, 0x2c, 0x34, 0x54, 0x0b, 0x2f, - 0x39, 0xf6, 0x08, 0x7f, 0xe5, 0x08, 0x27, 0xfe, 0xbc, 0xd6, 0xed, 0xfa, 0xcb, 0xcf, 0x2b, 0x47, - 0x54, 0xf6, 0x4e, 0xd5, 0x7c, 0x21, 0x0f, 0x59, 0x6d, 0xd7, 0xd9, 0x46, 0xdf, 0x11, 0x9e, 0x7c, - 0x72, 0x9d, 0x01, 0xe3, 0x27, 0x02, 0x92, 0xe3, 0x90, 0x73, 0xcc, 0x8b, 0xd8, 0x93, 0x03, 0x7d, - 0x71, 0xe1, 0xd0, 0xba, 0xdd, 0x06, 0xf9, 0xc0, 0xe0, 0xf0, 0xde, 0x5d, 0x5b, 0x47, 0x6b, 0xb5, - 0xcc, 0x5d, 0xc3, 0xa9, 0x78, 0x4b, 0xd0, 0x41, 0x02, 0xfa, 0x6c, 0x46, 0x64, 0x32, 0x2b, 0xc0, - 0x60, 0x32, 0xc8, 0x2e, 0x0c, 0xd1, 0x94, 0xe6, 0xe1, 0xa6, 0xe2, 0xfa, 0x7a, 0xb3, 0x51, 0x7b, - 0xa0, 0x5c, 0x0d, 0x0c, 0xcf, 0x66, 0xa5, 0xda, 0x6c, 0xac, 0x94, 0x9b, 0xa5, 0x0d, 0x95, 0xac, - 0x13, 0x16, 0x4b, 0xa5, 0xda, 0x46, 0xb5, 0x51, 0xc0, 0xe8, 0x75, 0x12, 0xcc, 0x94, 0x3a, 0xa6, - 0xed, 0x23, 0x7c, 0x6d, 0x80, 0xb0, 0x2f, 0xc6, 0x4c, 0x48, 0x8c, 0xe8, 0xdf, 0x32, 0xa2, 0x4e, - 0x07, 0x9e, 0x40, 0x42, 0xe4, 0x23, 0x7a, 0xa9, 0xdf, 0x16, 0x72, 0x3a, 0x18, 0x4c, 0x2f, 0xfd, - 0x26, 0xf1, 0x99, 0x7b, 0x60, 0xa2, 0x48, 0x15, 0x03, 0xfd, 0x4d, 0x06, 0xf2, 0x25, 0xd3, 0xd8, - 0xd4, 0xb7, 0x5c, 0x63, 0x0e, 0x1b, 0xda, 0x85, 0x0e, 0x5e, 0xd4, 0x1c, 0x6d, 0x4f, 0xc7, 0x97, - 0x48, 0x05, 0x26, 0xd5, 0x9e, 0x54, 0x97, 0x29, 0x96, 0x82, 0x2f, 0xec, 0x6e, 0x11, 0xa6, 0x26, - 0xd5, 0x70, 0x92, 0xf2, 0x0c, 0xb8, 0x92, 0xbe, 0xae, 0x5b, 0xd8, 0xc2, 0x1d, 0xac, 0xd9, 0xd8, - 0x9d, 0x16, 0x19, 0xb8, 0x43, 0x94, 0x76, 0x52, 0x8d, 0xfa, 0xac, 0x9c, 0x85, 0x19, 0xfa, 0x89, - 0x98, 0x22, 0x36, 0x51, 0xe3, 0x49, 0x95, 0x4b, 0x53, 0x9e, 0x02, 0x39, 0xfc, 0xb0, 0x63, 0x69, - 0xa7, 0xda, 0x04, 0xaf, 0x2b, 0xe7, 0xa9, 0xd7, 0xe1, 0xbc, 0xe7, 0x75, 0x38, 0x5f, 0x27, 0x3e, - 0x89, 0x2a, 0xcd, 0x85, 0x3e, 0x32, 0xe9, 0x1b, 0x12, 0xaf, 0x93, 0x03, 0xc5, 0x50, 0x20, 0x6b, - 0x68, 0x3b, 0x98, 0xe9, 0x05, 0x79, 0x56, 0x6e, 0x82, 0xa3, 0xda, 0x9e, 0xe6, 0x68, 0xd6, 0xaa, + 0x28, 0x72, 0x10, 0x75, 0x55, 0x54, 0x40, 0x2e, 0x0b, 0x07, 0x14, 0x90, 0xfb, 0x01, 0x15, 0x90, + 0x8b, 0x5c, 0x44, 0x44, 0x90, 0x8b, 0xe8, 0xbe, 0x82, 0x20, 0xe2, 0xf9, 0xc8, 0xe1, 0xd5, 0xf7, + 0x08, 0xa2, 0xf0, 0xfa, 0x7e, 0x32, 0x22, 0xf2, 0x12, 0xd5, 0x95, 0x59, 0x91, 0xd5, 0x95, 0xd5, + 0x8b, 0xbc, 0xff, 0x65, 0x46, 0x46, 0x3e, 0xf1, 0xc4, 0xf3, 0x7d, 0x22, 0xe2, 0x89, 0x88, 0x27, + 0x9e, 0x80, 0x53, 0xdd, 0xf3, 0x37, 0x77, 0x2d, 0xd3, 0x31, 0xed, 0x9b, 0x5b, 0xe6, 0xce, 0x8e, + 0x66, 0xb4, 0xed, 0x79, 0xf2, 0xae, 0x4c, 0x68, 0xc6, 0x25, 0xe7, 0x52, 0x17, 0xa3, 0xeb, 0xba, + 0x17, 0xb6, 0x6e, 0xee, 0xe8, 0xe7, 0x6f, 0xee, 0x9e, 0xbf, 0x79, 0xc7, 0x6c, 0xe3, 0x8e, 0xf7, + 0x03, 0x79, 0x61, 0xd9, 0xd1, 0x0d, 0x51, 0xb9, 0x3a, 0x66, 0x4b, 0xeb, 0xd8, 0x8e, 0x69, 0x61, + 0x96, 0xf3, 0x64, 0x50, 0x24, 0xde, 0xc3, 0x86, 0xe3, 0x51, 0xb8, 0x6a, 0xcb, 0x34, 0xb7, 0x3a, + 0x98, 0x7e, 0x3b, 0xbf, 0xbb, 0x79, 0xb3, 0xed, 0x58, 0xbb, 0x2d, 0x87, 0x7d, 0xbd, 0xa6, 0xf7, + 0x6b, 0x1b, 0xdb, 0x2d, 0x4b, 0xef, 0x3a, 0xa6, 0x45, 0x73, 0x9c, 0xf9, 0xb5, 0x47, 0x26, 0x41, + 0x56, 0xbb, 0x2d, 0xf4, 0xcd, 0x09, 0x90, 0x8b, 0xdd, 0x2e, 0xfa, 0x90, 0x04, 0xb0, 0x8c, 0x9d, + 0xb3, 0xd8, 0xb2, 0x75, 0xd3, 0x40, 0x47, 0x61, 0x42, 0xc5, 0x3f, 0xb1, 0x8b, 0x6d, 0xe7, 0x8e, + 0xec, 0xf3, 0xbf, 0x2a, 0x67, 0xd0, 0xa3, 0x12, 0x4c, 0xaa, 0xd8, 0xee, 0x9a, 0x86, 0x8d, 0x95, + 0x7b, 0x21, 0x87, 0x2d, 0xcb, 0xb4, 0x4e, 0x65, 0xae, 0xc9, 0xdc, 0x30, 0x7d, 0xdb, 0x8d, 0xf3, + 0xac, 0xfa, 0xf3, 0x6a, 0xb7, 0x35, 0x5f, 0xec, 0x76, 0xe7, 0x03, 0x4a, 0xf3, 0xde, 0x4f, 0xf3, + 0x65, 0xf7, 0x0f, 0x95, 0xfe, 0xa8, 0x9c, 0x82, 0x89, 0x3d, 0x9a, 0xe1, 0x94, 0x74, 0x4d, 0xe6, + 0x86, 0x29, 0xd5, 0x7b, 0x75, 0xbf, 0xb4, 0xb1, 0xa3, 0xe9, 0x1d, 0xfb, 0x94, 0x4c, 0xbf, 0xb0, + 0x57, 0xf4, 0xca, 0x0c, 0xe4, 0x08, 0x11, 0xa5, 0x04, 0xd9, 0x96, 0xd9, 0xc6, 0xa4, 0xf8, 0xb9, + 0xdb, 0x6e, 0x16, 0x2f, 0x7e, 0xbe, 0x64, 0xb6, 0xb1, 0x4a, 0x7e, 0x56, 0xae, 0x81, 0x69, 0x4f, + 0x2c, 0x01, 0x1b, 0xe1, 0xa4, 0x33, 0xb7, 0x41, 0xd6, 0xcd, 0xaf, 0x4c, 0x42, 0xb6, 0xba, 0xb1, + 0xba, 0x5a, 0x38, 0xa2, 0x1c, 0x83, 0xd9, 0x8d, 0xea, 0xfd, 0xd5, 0xda, 0xb9, 0x6a, 0xb3, 0xac, + 0xaa, 0x35, 0xb5, 0x90, 0x51, 0x66, 0x61, 0x6a, 0xa1, 0xb8, 0xd8, 0xac, 0x54, 0xd7, 0x37, 0x1a, + 0x05, 0x09, 0xbd, 0x4c, 0x86, 0xb9, 0x3a, 0x76, 0x16, 0xf1, 0x9e, 0xde, 0xc2, 0x75, 0x47, 0x73, + 0x30, 0x7a, 0x51, 0xc6, 0x17, 0xa6, 0xb2, 0xe1, 0x16, 0xea, 0x7f, 0x62, 0x15, 0x78, 0xea, 0xbe, + 0x0a, 0xf0, 0x14, 0xe6, 0xd9, 0xdf, 0xf3, 0xa1, 0x34, 0x35, 0x4c, 0xe7, 0xcc, 0x53, 0x60, 0x3a, + 0xf4, 0x4d, 0x99, 0x03, 0x58, 0x28, 0x96, 0xee, 0x5f, 0x56, 0x6b, 0x1b, 0xd5, 0xc5, 0xc2, 0x11, + 0xf7, 0x7d, 0xa9, 0xa6, 0x96, 0xd9, 0x7b, 0x06, 0x7d, 0x3b, 0x13, 0x02, 0x73, 0x91, 0x07, 0x73, + 0x7e, 0x30, 0x33, 0x7d, 0x00, 0x45, 0xaf, 0xf1, 0xc1, 0x59, 0xe6, 0xc0, 0x79, 0x6a, 0x32, 0x72, + 0xe9, 0x03, 0xf4, 0xb0, 0x04, 0x93, 0xf5, 0xed, 0x5d, 0xa7, 0x6d, 0x5e, 0x34, 0xd0, 0x94, 0x8f, + 0x0c, 0xfa, 0x7a, 0x58, 0x26, 0x77, 0xf3, 0x32, 0xb9, 0x61, 0x7f, 0x25, 0x18, 0x85, 0x08, 0x69, + 0xfc, 0x96, 0x2f, 0x8d, 0x22, 0x27, 0x8d, 0xa7, 0x88, 0x12, 0x4a, 0x5f, 0x0e, 0xbf, 0xfe, 0x0c, + 0xc8, 0xd5, 0xbb, 0x5a, 0x0b, 0xa3, 0x8f, 0xcb, 0x30, 0xb3, 0x8a, 0xb5, 0x3d, 0x5c, 0xec, 0x76, + 0x2d, 0x73, 0x0f, 0xa3, 0x52, 0xa0, 0xaf, 0xa7, 0x60, 0xc2, 0x76, 0x33, 0x55, 0xda, 0xa4, 0x06, + 0x53, 0xaa, 0xf7, 0xaa, 0x9c, 0x06, 0xd0, 0xdb, 0xd8, 0x70, 0x74, 0x47, 0xc7, 0xf6, 0x29, 0xe9, + 0x1a, 0xf9, 0x86, 0x29, 0x35, 0x94, 0x82, 0xbe, 0x29, 0x89, 0xea, 0x18, 0xe1, 0x62, 0x3e, 0xcc, + 0x41, 0x84, 0x54, 0x5f, 0x25, 0x89, 0xe8, 0xd8, 0x40, 0x72, 0xc9, 0x64, 0xfb, 0xc6, 0x4c, 0x72, + 0xe1, 0xba, 0x39, 0xaa, 0xb5, 0x66, 0x7d, 0xa3, 0xb4, 0xd2, 0xac, 0xaf, 0x17, 0x4b, 0xe5, 0x02, + 0x56, 0x8e, 0x43, 0x81, 0x3c, 0x36, 0x2b, 0xf5, 0xe6, 0x62, 0x79, 0xb5, 0xdc, 0x28, 0x2f, 0x16, + 0x36, 0x15, 0x05, 0xe6, 0xd4, 0xf2, 0x8f, 0x6c, 0x94, 0xeb, 0x8d, 0xe6, 0x52, 0xb1, 0xb2, 0x5a, + 0x5e, 0x2c, 0x6c, 0xb9, 0x3f, 0xaf, 0x56, 0xd6, 0x2a, 0x8d, 0xa6, 0x5a, 0x2e, 0x96, 0x56, 0xca, + 0x8b, 0x85, 0x6d, 0xe5, 0x72, 0xb8, 0xac, 0x5a, 0x6b, 0x16, 0xd7, 0xd7, 0xd5, 0xda, 0xd9, 0x72, + 0x93, 0xfd, 0x51, 0x2f, 0xe8, 0xb4, 0xa0, 0x46, 0xb3, 0xbe, 0x52, 0x54, 0xcb, 0xc5, 0x85, 0xd5, + 0x72, 0xe1, 0x41, 0xf4, 0x5c, 0x19, 0x66, 0xd7, 0xb4, 0x0b, 0xb8, 0xbe, 0xad, 0x59, 0x58, 0x3b, + 0xdf, 0xc1, 0xe8, 0x5a, 0x01, 0x3c, 0xd1, 0xc7, 0xc3, 0x78, 0x95, 0x79, 0xbc, 0x6e, 0xee, 0x23, + 0x60, 0xae, 0x88, 0x08, 0xc0, 0xfe, 0xc5, 0x6f, 0x06, 0x2b, 0x1c, 0x60, 0x4f, 0x4b, 0x48, 0x2f, + 0x19, 0x62, 0x3f, 0xf5, 0x38, 0x40, 0x0c, 0x3d, 0x26, 0xc3, 0x5c, 0xc5, 0xd8, 0xd3, 0x1d, 0xbc, + 0x8c, 0x0d, 0x6c, 0xb9, 0xe3, 0x80, 0x10, 0x0c, 0x8f, 0xca, 0x21, 0x18, 0x96, 0x78, 0x18, 0x6e, + 0xe9, 0x23, 0x36, 0xbe, 0x8c, 0x88, 0xd1, 0xf6, 0x2a, 0x98, 0xd2, 0x49, 0xbe, 0x92, 0xde, 0x66, + 0x12, 0x0b, 0x12, 0x94, 0xeb, 0x60, 0x96, 0xbe, 0x2c, 0xe9, 0x1d, 0x7c, 0x3f, 0xbe, 0xc4, 0xc6, + 0x5d, 0x3e, 0x11, 0xfd, 0xbc, 0xdf, 0xf8, 0x2a, 0x1c, 0x96, 0x3f, 0x94, 0x94, 0xa9, 0x64, 0x60, + 0x3e, 0xf2, 0x78, 0x68, 0x7e, 0xfb, 0x5a, 0x99, 0x8e, 0xbe, 0x2b, 0xc1, 0x74, 0xdd, 0x31, 0xbb, + 0xae, 0xca, 0xea, 0xc6, 0x96, 0x18, 0xb8, 0x1f, 0x09, 0xb7, 0xb1, 0x12, 0x0f, 0xee, 0x53, 0xfa, + 0xc8, 0x31, 0x54, 0x40, 0x44, 0x0b, 0xfb, 0xa6, 0xdf, 0xc2, 0x96, 0x38, 0x54, 0x6e, 0x4b, 0x44, + 0xed, 0x7b, 0xb0, 0x7d, 0x3d, 0x22, 0x43, 0xc1, 0x53, 0x33, 0xa7, 0xb4, 0x6b, 0x59, 0xd8, 0x70, + 0xc4, 0x40, 0xf8, 0xcb, 0x30, 0x08, 0x2b, 0x3c, 0x08, 0xb7, 0xc5, 0x28, 0xb3, 0x57, 0x4a, 0x8a, + 0x6d, 0xec, 0x7d, 0x3e, 0x9a, 0xf7, 0x73, 0x68, 0xfe, 0x70, 0x72, 0xb6, 0x92, 0x41, 0xba, 0x32, + 0x04, 0xa2, 0xc7, 0xa1, 0xe0, 0x8e, 0x49, 0xa5, 0x46, 0xe5, 0x6c, 0xb9, 0x59, 0xa9, 0x9e, 0xad, + 0x34, 0xca, 0x05, 0x8c, 0x7e, 0x49, 0x86, 0x19, 0xca, 0x9a, 0x8a, 0xf7, 0xcc, 0x0b, 0x82, 0xbd, + 0xde, 0x63, 0x09, 0x8d, 0x85, 0x70, 0x09, 0x11, 0x2d, 0xe3, 0xe7, 0x12, 0x18, 0x0b, 0x31, 0xe4, + 0x1e, 0x4f, 0xbd, 0xd5, 0xbe, 0x66, 0xb0, 0xd5, 0xa7, 0xb5, 0xf4, 0xed, 0xad, 0x1e, 0xc9, 0x02, + 0xd0, 0x4a, 0x9e, 0xd5, 0xf1, 0x45, 0xb4, 0x16, 0x60, 0xc2, 0xa9, 0x6d, 0x66, 0xa0, 0xda, 0x4a, + 0xfd, 0xd4, 0xf6, 0x9d, 0xe1, 0x31, 0x6b, 0x81, 0x47, 0xef, 0xa6, 0x48, 0x71, 0xbb, 0x9c, 0x44, + 0xcf, 0x0e, 0x3d, 0x45, 0x91, 0x78, 0xab, 0xf3, 0x2a, 0x98, 0x22, 0x8f, 0x55, 0x6d, 0x07, 0xb3, + 0x36, 0x14, 0x24, 0x28, 0x67, 0x60, 0x86, 0x66, 0x6c, 0x99, 0x86, 0x5b, 0x9f, 0x2c, 0xc9, 0xc0, + 0xa5, 0xb9, 0x20, 0xb6, 0x2c, 0xac, 0x39, 0xa6, 0x45, 0x68, 0xe4, 0x28, 0x88, 0xa1, 0x24, 0xf4, + 0x35, 0xbf, 0x15, 0x96, 0x39, 0xcd, 0xb9, 0x35, 0x49, 0x55, 0x92, 0xe9, 0xcd, 0xde, 0x70, 0xed, + 0x8f, 0xb6, 0xba, 0xa6, 0x8b, 0xf6, 0x12, 0x99, 0xda, 0x61, 0xe5, 0x24, 0x28, 0x2c, 0xd5, 0xcd, + 0x5b, 0xaa, 0x55, 0x1b, 0xe5, 0x6a, 0xa3, 0xb0, 0xd9, 0x57, 0xa3, 0xb6, 0xd0, 0xab, 0xb2, 0x90, + 0xbd, 0xcf, 0xd4, 0x0d, 0xf4, 0x70, 0x86, 0x53, 0x09, 0x03, 0x3b, 0x17, 0x4d, 0xeb, 0x82, 0xdf, + 0x50, 0x83, 0x84, 0x78, 0x6c, 0x02, 0x55, 0x92, 0x07, 0xaa, 0x52, 0xb6, 0x9f, 0x2a, 0xfd, 0x62, + 0x58, 0x95, 0xee, 0xe4, 0x55, 0xe9, 0xfa, 0x3e, 0xf2, 0x77, 0x99, 0x8f, 0xe8, 0x00, 0x3e, 0xec, + 0x77, 0x00, 0xf7, 0x70, 0x30, 0x3e, 0x59, 0x8c, 0x4c, 0x32, 0x00, 0xbf, 0x90, 0x6a, 0xc3, 0xef, + 0x07, 0xf5, 0x56, 0x04, 0xd4, 0xdb, 0x7d, 0xfa, 0x04, 0x7d, 0x7f, 0xd7, 0xf1, 0xe0, 0xfe, 0x6e, + 0xe2, 0x82, 0x72, 0x02, 0x8e, 0x2d, 0x56, 0x96, 0x96, 0xca, 0x6a, 0xb9, 0xda, 0x68, 0x56, 0xcb, + 0x8d, 0x73, 0x35, 0xf5, 0xfe, 0x42, 0x07, 0xbd, 0x52, 0x06, 0x70, 0x25, 0x54, 0xd2, 0x8c, 0x16, + 0xee, 0x88, 0xf5, 0xe8, 0xff, 0x4b, 0x4a, 0xd6, 0x27, 0x04, 0xf4, 0x23, 0xe0, 0x7c, 0xa9, 0x24, + 0xde, 0x2a, 0x23, 0x89, 0x25, 0x03, 0xf5, 0xf5, 0x8f, 0x07, 0xdb, 0xf3, 0x32, 0x38, 0xea, 0xd1, + 0x63, 0xd9, 0xfb, 0x4f, 0xfb, 0xde, 0x94, 0x85, 0x39, 0x06, 0x8b, 0x37, 0x8f, 0x7f, 0x7e, 0x46, + 0x64, 0x22, 0x8f, 0x60, 0x92, 0x4d, 0xdb, 0xbd, 0xee, 0xdd, 0x7f, 0x57, 0x96, 0x61, 0xba, 0x8b, + 0xad, 0x1d, 0xdd, 0xb6, 0x75, 0xd3, 0xa0, 0x0b, 0x72, 0x73, 0xb7, 0x3d, 0xd1, 0x97, 0x38, 0x59, + 0xbb, 0x9c, 0x5f, 0xd7, 0x2c, 0x47, 0x6f, 0xe9, 0x5d, 0xcd, 0x70, 0xd6, 0x83, 0xcc, 0x6a, 0xf8, + 0x4f, 0xf4, 0xe2, 0x84, 0xd3, 0x1a, 0xbe, 0x26, 0x11, 0x2a, 0xf1, 0xfb, 0x09, 0xa6, 0x24, 0xb1, + 0x04, 0x93, 0xa9, 0xc5, 0x87, 0x52, 0x55, 0x8b, 0x3e, 0x78, 0x6f, 0x29, 0x57, 0xc0, 0x89, 0x4a, + 0xb5, 0x54, 0x53, 0xd5, 0x72, 0xa9, 0xd1, 0x5c, 0x2f, 0xab, 0x6b, 0x95, 0x7a, 0xbd, 0x52, 0xab, + 0xd6, 0x0f, 0xd2, 0xda, 0xd1, 0xc7, 0x64, 0x5f, 0x63, 0x16, 0x71, 0xab, 0xa3, 0x1b, 0x18, 0xdd, + 0x73, 0x40, 0x85, 0xe1, 0x57, 0x7d, 0xc4, 0x71, 0x66, 0xe5, 0x47, 0xe0, 0xfc, 0x8a, 0xe4, 0x38, + 0xf7, 0x27, 0xf8, 0x1f, 0xb8, 0xf9, 0x3f, 0x26, 0xc3, 0xb1, 0x50, 0x43, 0x54, 0xf1, 0xce, 0xc8, + 0x56, 0xf2, 0x7e, 0x2a, 0xdc, 0x76, 0x2b, 0x3c, 0xa6, 0xfd, 0xac, 0xe9, 0x7d, 0x6c, 0x44, 0xc0, + 0xfa, 0x7a, 0x1f, 0xd6, 0x55, 0x0e, 0xd6, 0x67, 0x0c, 0x41, 0x33, 0x19, 0xb2, 0xbf, 0x9b, 0x2a, + 0xb2, 0x57, 0xc0, 0x89, 0xf5, 0xa2, 0xda, 0xa8, 0x94, 0x2a, 0xeb, 0x45, 0x77, 0x1c, 0x0d, 0x0d, + 0xd9, 0x11, 0xe6, 0x3a, 0x0f, 0x7a, 0x5f, 0x7c, 0xdf, 0x9b, 0x85, 0xab, 0xfa, 0x77, 0xb4, 0xa5, + 0x6d, 0xcd, 0xd8, 0xc2, 0x48, 0x17, 0x81, 0x7a, 0x11, 0x26, 0x5a, 0x24, 0x3b, 0xc5, 0x39, 0xbc, + 0x75, 0x13, 0xd3, 0x97, 0xd3, 0x12, 0x54, 0xef, 0x57, 0xf4, 0xd6, 0xb0, 0x42, 0x34, 0x78, 0x85, + 0xb8, 0x3b, 0x1e, 0xbc, 0x7d, 0x7c, 0x47, 0xe8, 0xc6, 0x27, 0x7d, 0xdd, 0x38, 0xc7, 0xe9, 0x46, + 0xe9, 0x60, 0xe4, 0x93, 0xa9, 0xc9, 0x1f, 0x3f, 0x1e, 0x3a, 0x80, 0x48, 0x6d, 0xd2, 0xa3, 0x47, + 0x85, 0xbe, 0xdd, 0xfd, 0xcb, 0x65, 0xc8, 0x2f, 0xe2, 0x0e, 0x16, 0x5d, 0x89, 0xfc, 0x86, 0x24, + 0xba, 0x21, 0x42, 0x61, 0xa0, 0xb4, 0xa3, 0x57, 0x47, 0x1c, 0x7d, 0x07, 0xdb, 0x8e, 0xb6, 0xd3, + 0x25, 0xa2, 0x96, 0xd5, 0x20, 0x01, 0xfd, 0xb4, 0x24, 0xb2, 0x5d, 0x12, 0x53, 0xcc, 0x7f, 0x8c, + 0x35, 0xc5, 0x4f, 0x4b, 0x30, 0x59, 0xc7, 0x4e, 0xcd, 0x6a, 0x63, 0x0b, 0xd5, 0x03, 0x8c, 0xae, + 0x81, 0x69, 0x02, 0x8a, 0x3b, 0xcd, 0xf4, 0x71, 0x0a, 0x27, 0x29, 0xd7, 0xc3, 0x9c, 0xff, 0x4a, + 0x7e, 0x67, 0xdd, 0x78, 0x4f, 0x2a, 0xfa, 0xc7, 0x8c, 0xe8, 0x2e, 0x2e, 0x5b, 0x32, 0x64, 0xdc, + 0x44, 0xb4, 0x52, 0xb1, 0x1d, 0xd9, 0x58, 0x52, 0xe9, 0x6f, 0x74, 0xbd, 0x59, 0x02, 0xd8, 0x30, + 0x6c, 0x4f, 0xae, 0x4f, 0x4e, 0x20, 0x57, 0xf4, 0xcf, 0x99, 0x64, 0xb3, 0x98, 0xa0, 0x9c, 0x08, + 0x89, 0xbd, 0x3a, 0xc1, 0xda, 0x42, 0x24, 0xb1, 0xf4, 0x65, 0xf6, 0xe5, 0x39, 0xc8, 0x9f, 0xd3, + 0x3a, 0x1d, 0xec, 0xa0, 0xaf, 0x48, 0x90, 0x2f, 0x59, 0x58, 0x73, 0x70, 0x58, 0x74, 0x08, 0x26, + 0x2d, 0xd3, 0x74, 0xd6, 0x35, 0x67, 0x9b, 0xc9, 0xcd, 0x7f, 0x67, 0x0e, 0x03, 0xbf, 0x13, 0xee, + 0x3e, 0xee, 0xe1, 0x45, 0xf7, 0x83, 0x5c, 0x6d, 0x69, 0x41, 0xf3, 0xb4, 0x90, 0x88, 0xfe, 0x03, + 0xc1, 0xe4, 0x8e, 0x81, 0x77, 0x4c, 0x43, 0x6f, 0x79, 0x36, 0xa7, 0xf7, 0x8e, 0xde, 0xef, 0xcb, + 0x74, 0x81, 0x93, 0xe9, 0xbc, 0x70, 0x29, 0xc9, 0x04, 0x5a, 0x1f, 0xa2, 0xf7, 0xb8, 0x1a, 0xae, + 0xa4, 0x9d, 0x41, 0xb3, 0x51, 0x6b, 0x96, 0xd4, 0x72, 0xb1, 0x51, 0x6e, 0xae, 0xd6, 0x4a, 0xc5, + 0xd5, 0xa6, 0x5a, 0x5e, 0xaf, 0x15, 0x30, 0xfa, 0x3b, 0xc9, 0x15, 0x6e, 0xcb, 0xdc, 0xc3, 0x16, + 0x5a, 0x16, 0x92, 0x73, 0x9c, 0x4c, 0x18, 0x06, 0xbf, 0x28, 0xec, 0xb4, 0xc1, 0xa4, 0xc3, 0x38, + 0x88, 0x50, 0xde, 0x0f, 0x08, 0x35, 0xf7, 0x58, 0x52, 0x8f, 0x03, 0x49, 0xff, 0x6f, 0x09, 0x26, + 0x4a, 0xa6, 0xb1, 0x87, 0x2d, 0x27, 0x3c, 0xdf, 0x09, 0x4b, 0x33, 0xc3, 0x4b, 0xd3, 0x1d, 0x24, + 0xb1, 0xe1, 0x58, 0x66, 0xd7, 0x9b, 0xf0, 0x78, 0xaf, 0xe8, 0xb5, 0x49, 0x25, 0xcc, 0x4a, 0x8e, + 0x5e, 0xf8, 0xec, 0x5f, 0x10, 0xc7, 0x9e, 0xdc, 0xd3, 0x00, 0x5e, 0x99, 0x04, 0x97, 0xfe, 0x0c, + 0xa4, 0xdf, 0xa5, 0x7c, 0x51, 0x86, 0x59, 0xda, 0xf8, 0xea, 0x98, 0x58, 0x68, 0xa8, 0x16, 0x5e, + 0x72, 0xec, 0x11, 0xfe, 0xca, 0x11, 0x4e, 0xfc, 0x79, 0xad, 0xdb, 0xf5, 0x97, 0x9f, 0x57, 0x8e, + 0xa8, 0xec, 0x9d, 0xaa, 0xf9, 0x42, 0x1e, 0xb2, 0xda, 0xae, 0xb3, 0x8d, 0xbe, 0x2b, 0x3c, 0xf9, + 0xe4, 0x3a, 0x03, 0xc6, 0x4f, 0x04, 0x24, 0xc7, 0x21, 0xe7, 0x98, 0x17, 0xb0, 0x27, 0x07, 0xfa, + 0xe2, 0xc2, 0xa1, 0x75, 0xbb, 0x0d, 0xf2, 0x81, 0xc1, 0xe1, 0xbd, 0xbb, 0xb6, 0x8e, 0xd6, 0x6a, + 0x99, 0xbb, 0x86, 0x53, 0xf1, 0x96, 0xa0, 0x83, 0x04, 0xf4, 0xf9, 0x8c, 0xc8, 0x64, 0x56, 0x80, + 0xc1, 0x64, 0x90, 0x9d, 0x1f, 0xa2, 0x29, 0xcd, 0xc3, 0x8d, 0xc5, 0xf5, 0xf5, 0x66, 0xa3, 0x76, + 0x7f, 0xb9, 0x1a, 0x18, 0x9e, 0xcd, 0x4a, 0xb5, 0xd9, 0x58, 0x29, 0x37, 0x4b, 0x1b, 0x2a, 0x59, + 0x27, 0x2c, 0x96, 0x4a, 0xb5, 0x8d, 0x6a, 0xa3, 0x80, 0xd1, 0x1b, 0x24, 0x98, 0x29, 0x75, 0x4c, + 0xdb, 0x47, 0xf8, 0xea, 0x00, 0x61, 0x5f, 0x8c, 0x99, 0x90, 0x18, 0xd1, 0xbf, 0x65, 0x44, 0x9d, + 0x0e, 0x3c, 0x81, 0x84, 0xc8, 0x47, 0xf4, 0x52, 0xaf, 0x15, 0x72, 0x3a, 0x18, 0x4c, 0x2f, 0xfd, + 0x26, 0xf1, 0xb9, 0xbb, 0x61, 0xa2, 0x48, 0x15, 0x03, 0xfd, 0x75, 0x06, 0xf2, 0x25, 0xd3, 0xd8, + 0xd4, 0xb7, 0x5c, 0x63, 0x0e, 0x1b, 0xda, 0xf9, 0x0e, 0x5e, 0xd4, 0x1c, 0x6d, 0x4f, 0xc7, 0x17, + 0x49, 0x05, 0x26, 0xd5, 0x9e, 0x54, 0x97, 0x29, 0x96, 0x82, 0xcf, 0xef, 0x6e, 0x11, 0xa6, 0x26, + 0xd5, 0x70, 0x92, 0xf2, 0x0c, 0xb8, 0x9c, 0xbe, 0xae, 0x5b, 0xd8, 0xc2, 0x1d, 0xac, 0xd9, 0xd8, + 0x9d, 0x16, 0x19, 0xb8, 0x43, 0x94, 0x76, 0x52, 0x8d, 0xfa, 0xac, 0x9c, 0x81, 0x19, 0xfa, 0x89, + 0x98, 0x22, 0x36, 0x51, 0xe3, 0x49, 0x95, 0x4b, 0x53, 0x9e, 0x02, 0x39, 0xfc, 0x90, 0x63, 0x69, + 0xa7, 0xda, 0x04, 0xaf, 0xcb, 0xe7, 0xa9, 0xd7, 0xe1, 0xbc, 0xe7, 0x75, 0x38, 0x5f, 0x27, 0x3e, + 0x89, 0x2a, 0xcd, 0x85, 0x3e, 0x36, 0xe9, 0x1b, 0x12, 0x6f, 0x90, 0x03, 0xc5, 0x50, 0x20, 0x6b, + 0x68, 0x3b, 0x98, 0xe9, 0x05, 0x79, 0x56, 0x6e, 0x84, 0xa3, 0xda, 0x9e, 0xe6, 0x68, 0xd6, 0xaa, 0xd9, 0xd2, 0x3a, 0x64, 0xf0, 0xf3, 0x5a, 0x7e, 0xef, 0x07, 0xb2, 0x23, 0xe4, 0x98, 0x16, 0x26, 0xb9, 0xbc, 0x1d, 0x21, 0x2f, 0xc1, 0xa5, 0xae, 0xb7, 0x4c, 0x83, 0xf0, 0x2f, 0xab, 0xe4, 0xd9, - 0x95, 0x4a, 0x5b, 0xb7, 0xdd, 0x8a, 0x10, 0x2a, 0x55, 0xba, 0xb5, 0x51, 0xbf, 0x6c, 0xb4, 0xc8, + 0x95, 0x4a, 0x5b, 0xb7, 0xdd, 0x8a, 0x10, 0x2a, 0x55, 0xba, 0xb5, 0x51, 0xbf, 0x64, 0xb4, 0xc8, 0x6e, 0xd0, 0xa4, 0x1a, 0xf5, 0x59, 0x59, 0x80, 0x69, 0xb6, 0x11, 0xb2, 0xe6, 0xea, 0x55, 0x9e, - 0xe8, 0xd5, 0x19, 0xde, 0xa7, 0x8b, 0xe2, 0x39, 0x5f, 0x0d, 0xf2, 0xa9, 0xe1, 0x9f, 0x94, 0xfb, - 0xe0, 0x6a, 0xf6, 0x5a, 0xda, 0xb5, 0x1d, 0x73, 0x87, 0x82, 0xbe, 0xa4, 0x77, 0x68, 0x0d, 0x26, - 0x48, 0x0d, 0xe2, 0xb2, 0x28, 0xb7, 0xc3, 0xf1, 0xae, 0x85, 0x37, 0xb1, 0xf5, 0xa0, 0xb6, 0xb3, - 0xfb, 0x70, 0xc3, 0xd2, 0x0c, 0xbb, 0x6b, 0x5a, 0xce, 0xa9, 0x49, 0xc2, 0x7c, 0xdf, 0x6f, 0xca, - 0xcd, 0x70, 0xec, 0x21, 0xdb, 0x34, 0x8a, 0x5d, 0x7d, 0x55, 0xb7, 0x1d, 0x6c, 0x14, 0xdb, 0x6d, - 0xeb, 0xd4, 0x14, 0x29, 0x6b, 0xff, 0x07, 0xd6, 0xad, 0x4e, 0x42, 0x9e, 0x0a, 0x1b, 0xbd, 0x28, - 0x27, 0xec, 0xfc, 0xc9, 0xaa, 0x1f, 0x6b, 0xcc, 0xdd, 0x0a, 0x13, 0xac, 0x3f, 0x24, 0xb0, 0x4e, - 0xdf, 0x7e, 0xb2, 0x67, 0x15, 0x82, 0x51, 0x51, 0xbd, 0x6c, 0xca, 0x53, 0x21, 0xdf, 0x22, 0x42, - 0x20, 0x08, 0x4f, 0xdf, 0x7e, 0x75, 0xff, 0x42, 0x49, 0x16, 0x95, 0x65, 0x45, 0x7f, 0x29, 0x0b, - 0xf9, 0x8b, 0xc6, 0x71, 0x9c, 0xac, 0x0f, 0xf8, 0xaa, 0x34, 0x44, 0x27, 0x7b, 0x33, 0xdc, 0xc8, - 0x7a, 0x50, 0x66, 0xad, 0x2c, 0x36, 0x17, 0x36, 0xbc, 0xa9, 0xa3, 0x6b, 0xc3, 0xd4, 0x1b, 0x45, - 0xd5, 0x9d, 0xf7, 0x2f, 0xba, 0x53, 0xce, 0x9b, 0xe0, 0x86, 0x01, 0xb9, 0xcb, 0x8d, 0x66, 0xb5, - 0xb8, 0x56, 0x2e, 0x6c, 0xf2, 0x96, 0x50, 0xbd, 0x51, 0x5b, 0x6f, 0xaa, 0x1b, 0xd5, 0x6a, 0xa5, - 0xba, 0x4c, 0x89, 0xb9, 0x06, 0xe4, 0xc9, 0x20, 0xc3, 0x79, 0xb5, 0xd2, 0x28, 0x37, 0x4b, 0xb5, - 0xea, 0x52, 0x65, 0xb9, 0xa0, 0x0f, 0x32, 0xa3, 0x1e, 0x52, 0xce, 0xc0, 0x35, 0x1c, 0x27, 0x95, - 0x5a, 0xd5, 0x9d, 0x07, 0x97, 0x8a, 0xd5, 0x52, 0xd9, 0x9d, 0xf4, 0x5e, 0x54, 0x10, 0x9c, 0xa0, - 0xe4, 0x9a, 0x4b, 0x95, 0xd5, 0xf0, 0xd6, 0xd5, 0x87, 0x32, 0xca, 0x29, 0xb8, 0x22, 0xfc, 0xad, - 0x52, 0x3d, 0x57, 0x5c, 0xad, 0x2c, 0x16, 0x3e, 0x9c, 0x51, 0xae, 0x87, 0x6b, 0xb9, 0xbf, 0xe8, - 0x2e, 0x54, 0xb3, 0xb2, 0xd8, 0x5c, 0xab, 0xd4, 0xd7, 0x8a, 0x8d, 0xd2, 0x4a, 0xe1, 0x23, 0x64, - 0x76, 0xe1, 0x9b, 0xcb, 0x21, 0x27, 0xce, 0x97, 0x84, 0x2d, 0x80, 0x22, 0xaf, 0xa8, 0x4f, 0xee, - 0x0b, 0x7b, 0xbc, 0xc5, 0xfb, 0x01, 0x7f, 0x2c, 0x59, 0xe4, 0x54, 0xe8, 0xd6, 0x04, 0xb4, 0x92, - 0xe9, 0x50, 0x63, 0x08, 0x15, 0x3a, 0x03, 0xd7, 0x54, 0xcb, 0x14, 0x29, 0xb5, 0x5c, 0xaa, 0x9d, - 0x2b, 0xab, 0xcd, 0xf3, 0xc5, 0xd5, 0xd5, 0x72, 0xa3, 0xb9, 0x54, 0x51, 0xeb, 0x8d, 0xc2, 0x26, - 0xfa, 0x67, 0xc9, 0x5f, 0xfb, 0x09, 0x49, 0xeb, 0x6f, 0xa4, 0xa4, 0xcd, 0x3a, 0x76, 0x8d, 0xe7, - 0x07, 0x20, 0x6f, 0x3b, 0x9a, 0xb3, 0x6b, 0xb3, 0x56, 0xfd, 0x84, 0xfe, 0xad, 0x7a, 0xbe, 0x4e, - 0x32, 0xa9, 0x2c, 0x33, 0xfa, 0xcb, 0x4c, 0x92, 0x66, 0x3a, 0x82, 0xe5, 0x1f, 0x7d, 0x08, 0x11, - 0x9f, 0x06, 0xe4, 0x69, 0x7b, 0xa5, 0xde, 0x2c, 0xae, 0xaa, 0xe5, 0xe2, 0xe2, 0x83, 0xfe, 0xa2, - 0x0f, 0x56, 0x4e, 0xc0, 0xb1, 0x8d, 0x6a, 0x71, 0x61, 0xb5, 0x4c, 0x9a, 0x4b, 0xad, 0x5a, 0x2d, - 0x97, 0x5c, 0xb9, 0xff, 0x24, 0xd9, 0x62, 0x71, 0xed, 0x6d, 0xc2, 0xb7, 0x6b, 0x13, 0x85, 0xe4, - 0xff, 0x15, 0x61, 0x4f, 0xa4, 0x40, 0xc3, 0xc2, 0xb4, 0x46, 0x8b, 0xc3, 0x67, 0x85, 0x9c, 0x8f, - 0x84, 0x38, 0x49, 0x86, 0xc7, 0x7f, 0x1e, 0x02, 0x8f, 0x13, 0x70, 0x2c, 0x8c, 0x07, 0x71, 0x42, - 0x8a, 0x86, 0xe1, 0x45, 0x53, 0x90, 0xaf, 0xe3, 0x0e, 0x6e, 0x39, 0xe8, 0x31, 0x29, 0x30, 0x3d, - 0xe6, 0x40, 0xf2, 0x9d, 0x5e, 0x24, 0xbd, 0xcd, 0x4d, 0xb6, 0xa5, 0x9e, 0xc9, 0x76, 0x8c, 0xd1, - 0x20, 0x27, 0x32, 0x1a, 0xb2, 0x29, 0x18, 0x0d, 0xb9, 0xe1, 0x8d, 0x86, 0x7c, 0x52, 0xa3, 0x61, - 0x22, 0xd6, 0x68, 0x40, 0xbf, 0x99, 0x4f, 0xda, 0xa7, 0x50, 0x60, 0x0e, 0xd7, 0x54, 0xf8, 0x5f, - 0xd9, 0x24, 0x7d, 0x50, 0x5f, 0x8e, 0x93, 0xe9, 0xfc, 0x77, 0xe4, 0x14, 0x96, 0x36, 0x94, 0xeb, - 0xe0, 0xda, 0xe0, 0xbd, 0x59, 0x7e, 0x56, 0xa5, 0xde, 0xa8, 0x13, 0xfb, 0xa0, 0x54, 0x53, 0xd5, - 0x8d, 0x75, 0xba, 0x3e, 0x7d, 0x12, 0x94, 0x80, 0x8a, 0xba, 0x51, 0xa5, 0xd6, 0xc0, 0x16, 0x4f, - 0x7d, 0xa9, 0x52, 0x5d, 0x6c, 0xfa, 0x2d, 0xac, 0xba, 0x54, 0x2b, 0x6c, 0xbb, 0xd3, 0xc1, 0x10, - 0x75, 0x77, 0x38, 0x67, 0x25, 0x14, 0xab, 0x8b, 0xcd, 0xb5, 0x6a, 0x79, 0xad, 0x56, 0xad, 0x94, - 0x48, 0x7a, 0xbd, 0xdc, 0x28, 0xe8, 0xee, 0xb0, 0xd4, 0x63, 0x7f, 0xd4, 0xcb, 0x45, 0xb5, 0xb4, - 0x52, 0x56, 0x69, 0x91, 0x0f, 0x29, 0x37, 0xc0, 0xd9, 0x62, 0xb5, 0xd6, 0x70, 0x53, 0x8a, 0xd5, - 0x07, 0x1b, 0x0f, 0xae, 0x97, 0x9b, 0xeb, 0x6a, 0xad, 0x54, 0xae, 0xd7, 0xdd, 0x56, 0xcd, 0xac, - 0x95, 0x42, 0x47, 0xb9, 0x07, 0xee, 0x0c, 0xb1, 0x56, 0x6e, 0x90, 0xcd, 0xd0, 0xb5, 0x1a, 0xf1, - 0x87, 0x59, 0x2c, 0x37, 0x57, 0x8a, 0xf5, 0x66, 0xa5, 0x5a, 0xaa, 0xad, 0xad, 0x17, 0x1b, 0x15, - 0xb7, 0xf1, 0xaf, 0xab, 0xb5, 0x46, 0xad, 0x79, 0xae, 0xac, 0xd6, 0x2b, 0xb5, 0x6a, 0xc1, 0x70, - 0xab, 0x1c, 0xea, 0x2d, 0xbc, 0x5e, 0xdb, 0x54, 0xae, 0x81, 0x53, 0x5e, 0xfa, 0x6a, 0xcd, 0x15, - 0x74, 0xc8, 0x7e, 0xe9, 0xa6, 0x6a, 0xbf, 0xfc, 0xab, 0x04, 0xd9, 0xba, 0x63, 0x76, 0xd1, 0xf7, - 0x07, 0xdd, 0xd1, 0x69, 0x00, 0x8b, 0xec, 0x6d, 0xba, 0x33, 0x3c, 0x36, 0xe7, 0x0b, 0xa5, 0xa0, - 0x3f, 0x16, 0xde, 0x90, 0x09, 0x7a, 0x78, 0xb3, 0x1b, 0x61, 0xd9, 0x7c, 0x4b, 0xec, 0x84, 0x4a, - 0x34, 0xa1, 0x64, 0xfa, 0xfe, 0x33, 0xc3, 0x6c, 0xb9, 0x20, 0x38, 0x19, 0x82, 0xcd, 0x95, 0xbf, - 0xa7, 0x12, 0x58, 0xb9, 0x12, 0xae, 0xe8, 0x51, 0x2e, 0xa2, 0x53, 0x9b, 0xca, 0xf7, 0xc1, 0x13, - 0x42, 0xea, 0x5d, 0x5e, 0xab, 0x9d, 0x2b, 0xfb, 0x8a, 0xbc, 0x58, 0x6c, 0x14, 0x0b, 0x5b, 0xe8, - 0x93, 0x32, 0x64, 0xd7, 0xcc, 0xbd, 0xde, 0x7d, 0x30, 0x03, 0x5f, 0x0a, 0xad, 0xb3, 0x7a, 0xaf, - 0xbc, 0x47, 0xbe, 0x90, 0xd8, 0xd7, 0xa2, 0xf7, 0xbc, 0x3f, 0x2b, 0x25, 0x11, 0xfb, 0xda, 0x41, - 0x37, 0xba, 0xff, 0x7e, 0x18, 0xb1, 0x47, 0x88, 0x16, 0x2b, 0x67, 0xe1, 0x74, 0xf0, 0xa1, 0xb2, - 0x58, 0xae, 0x36, 0x2a, 0x4b, 0x0f, 0x06, 0xc2, 0xad, 0xa8, 0x42, 0xe2, 0x1f, 0xd4, 0x8d, 0xc5, - 0xcf, 0x4b, 0x4e, 0xc1, 0xf1, 0xe0, 0xdb, 0x72, 0xb9, 0xe1, 0x7d, 0x79, 0x08, 0x3d, 0x92, 0x83, - 0x19, 0xda, 0xad, 0x6f, 0x74, 0xdb, 0x9a, 0x83, 0xd1, 0x53, 0x03, 0x74, 0x6f, 0x84, 0xa3, 0x95, - 0xf5, 0xa5, 0x7a, 0xdd, 0x31, 0x2d, 0x6d, 0x0b, 0x93, 0x71, 0x8c, 0x4a, 0xab, 0x37, 0x19, 0xbd, - 0x55, 0x78, 0x0d, 0x91, 0x1f, 0x4a, 0x68, 0x99, 0x11, 0xa8, 0x7f, 0x5e, 0x68, 0xcd, 0x4f, 0x80, - 0x60, 0x32, 0xf4, 0x1f, 0x1a, 0x71, 0x9b, 0x8b, 0xc6, 0x65, 0xf3, 0xec, 0xf3, 0x24, 0x98, 0x6a, - 0xe8, 0x3b, 0xf8, 0xd9, 0xa6, 0x81, 0x6d, 0x65, 0x02, 0xe4, 0xe5, 0xb5, 0x46, 0xe1, 0x88, 0xfb, - 0xe0, 0x9a, 0x60, 0x19, 0xf2, 0x50, 0x76, 0x0b, 0x70, 0x1f, 0x8a, 0x8d, 0x82, 0xec, 0x3e, 0xac, - 0x95, 0x1b, 0x85, 0xac, 0xfb, 0x50, 0x2d, 0x37, 0x0a, 0x39, 0xf7, 0x61, 0x7d, 0xb5, 0x51, 0xc8, - 0xbb, 0x0f, 0x95, 0x7a, 0xa3, 0x30, 0xe1, 0x3e, 0x2c, 0xd4, 0x1b, 0x85, 0x49, 0xf7, 0xe1, 0x5c, - 0xbd, 0x51, 0x98, 0x72, 0x1f, 0x4a, 0x8d, 0x46, 0x01, 0xdc, 0x87, 0xfb, 0xeb, 0x8d, 0xc2, 0xb4, - 0xfb, 0x50, 0x2c, 0x35, 0x0a, 0x33, 0xe4, 0xa1, 0xdc, 0x28, 0xcc, 0xba, 0x0f, 0xf5, 0x7a, 0xa3, - 0x30, 0x47, 0x28, 0xd7, 0x1b, 0x85, 0xa3, 0xa4, 0xac, 0x4a, 0xa3, 0x50, 0x70, 0x1f, 0x56, 0xea, - 0x8d, 0xc2, 0x31, 0x92, 0xb9, 0xde, 0x28, 0x28, 0xa4, 0xd0, 0x7a, 0xa3, 0x70, 0x05, 0xc9, 0x53, - 0x6f, 0x14, 0x8e, 0x93, 0x22, 0xea, 0x8d, 0xc2, 0x09, 0xc2, 0x46, 0xb9, 0x51, 0x38, 0x49, 0xf2, - 0xa8, 0x8d, 0xc2, 0x95, 0xe4, 0x53, 0xb5, 0x51, 0x38, 0x45, 0x18, 0x2b, 0x37, 0x0a, 0x57, 0x91, - 0x07, 0xb5, 0x51, 0x40, 0xe4, 0x53, 0xb1, 0x51, 0xb8, 0x1a, 0x3d, 0x01, 0xa6, 0x96, 0xb1, 0x43, - 0x41, 0x44, 0x05, 0x90, 0x97, 0xb1, 0x13, 0x36, 0xfa, 0xbf, 0x28, 0xc3, 0x95, 0x6c, 0xa2, 0xb8, - 0x64, 0x99, 0x3b, 0xab, 0x78, 0x4b, 0x6b, 0x5d, 0x2e, 0x3f, 0xec, 0x1a, 0x5c, 0xe1, 0x3d, 0x5f, - 0x05, 0xb2, 0xdd, 0xa0, 0x33, 0x22, 0xcf, 0xb1, 0xf6, 0xa9, 0xb7, 0xd0, 0x25, 0x07, 0x0b, 0x5d, - 0xcc, 0x22, 0xfb, 0xa7, 0xb0, 0x46, 0x73, 0x6b, 0xd3, 0x99, 0x9e, 0xb5, 0x69, 0xb7, 0x99, 0x74, - 0xb1, 0x65, 0x9b, 0x86, 0xd6, 0xa9, 0x33, 0xa7, 0x00, 0xba, 0xa2, 0xd6, 0x9b, 0xac, 0xfc, 0x90, - 0xd7, 0x32, 0xa8, 0x55, 0xf6, 0xcc, 0xb8, 0xf9, 0x70, 0x6f, 0x35, 0x23, 0x1a, 0xc9, 0x47, 0xfc, - 0x46, 0xd2, 0xe0, 0x1a, 0xc9, 0x7d, 0x07, 0xa0, 0x9d, 0xac, 0xbd, 0x54, 0x86, 0x9b, 0x88, 0x04, - 0x2e, 0xb3, 0xde, 0x52, 0xb8, 0x8c, 0x3e, 0x29, 0xc1, 0xc9, 0xb2, 0xd1, 0x6f, 0x3e, 0x10, 0xd6, - 0x85, 0xd7, 0x85, 0xa1, 0x59, 0xe7, 0x45, 0x7a, 0x67, 0xdf, 0x6a, 0xf7, 0xa7, 0x19, 0x21, 0xd1, - 0x8f, 0xf9, 0x12, 0xad, 0x73, 0x12, 0xbd, 0x77, 0x78, 0xd2, 0xc9, 0x04, 0x5a, 0x1d, 0x69, 0x07, - 0x94, 0x45, 0x5f, 0x92, 0xe0, 0x18, 0xf5, 0xeb, 0xb9, 0x9f, 0x4e, 0x3f, 0x48, 0x97, 0xcd, 0x9b, - 0x50, 0x9d, 0x60, 0xaa, 0x42, 0xf5, 0x3b, 0x94, 0x82, 0x5e, 0x1d, 0x16, 0xf8, 0x03, 0xbc, 0xc0, - 0x23, 0x3a, 0xe3, 0xde, 0xe2, 0x22, 0x64, 0xfd, 0x61, 0x5f, 0xd6, 0x55, 0x4e, 0xd6, 0x77, 0x0e, - 0x45, 0xf5, 0x70, 0xc5, 0xfc, 0xd5, 0x2c, 0x3c, 0x81, 0x72, 0xc8, 0x14, 0x81, 0x76, 0x66, 0x45, - 0xa3, 0xad, 0x62, 0xdb, 0xd1, 0x2c, 0x87, 0x3b, 0xd2, 0xde, 0x33, 0xbf, 0xcd, 0xa4, 0x30, 0xbf, - 0x95, 0x06, 0xce, 0x6f, 0xd1, 0x5b, 0xc2, 0x56, 0xda, 0x79, 0x1e, 0xd9, 0x62, 0x0c, 0x06, 0x11, - 0x35, 0x8c, 0x6a, 0x51, 0xbe, 0xf9, 0xf6, 0xc3, 0x1c, 0xca, 0x4b, 0x07, 0x2e, 0x21, 0x19, 0xe2, - 0x7f, 0x3c, 0x5a, 0x73, 0x3a, 0x1b, 0xfe, 0xc6, 0xdb, 0x7e, 0x85, 0x76, 0xaa, 0xf3, 0xa0, 0x17, - 0x4f, 0xc2, 0x14, 0xe9, 0x72, 0x56, 0x75, 0xe3, 0xa2, 0x3b, 0x36, 0xce, 0x54, 0xf1, 0xa5, 0xd2, - 0xb6, 0xd6, 0xe9, 0x60, 0x63, 0x0b, 0xa3, 0x87, 0x38, 0x03, 0x5d, 0xeb, 0x76, 0xab, 0xc1, 0x56, - 0x91, 0xf7, 0xaa, 0xdc, 0x0b, 0x39, 0xbb, 0x65, 0x76, 0x31, 0x11, 0xd4, 0x5c, 0xc8, 0xb9, 0x84, - 0x5f, 0xee, 0x2a, 0xee, 0x3a, 0xdb, 0xf3, 0xa4, 0xac, 0x62, 0x57, 0xaf, 0xbb, 0x3f, 0xa8, 0xf4, - 0x3f, 0x36, 0x4e, 0x7e, 0xa5, 0x6f, 0x67, 0x9c, 0x89, 0xe9, 0x8c, 0x7d, 0xc6, 0xe7, 0xc3, 0x4c, - 0x47, 0xac, 0x64, 0x9c, 0x81, 0xe9, 0x96, 0x97, 0xc5, 0x3f, 0x3b, 0x13, 0x4e, 0x42, 0x5f, 0x4e, - 0xd4, 0x5d, 0x0b, 0x15, 0x9e, 0x4c, 0xab, 0xf0, 0x88, 0xed, 0xc5, 0x13, 0x70, 0xac, 0x51, 0xab, - 0x35, 0xd7, 0x8a, 0xd5, 0x07, 0x83, 0x33, 0xeb, 0x9b, 0xe8, 0x65, 0x59, 0x98, 0xab, 0x9b, 0x9d, - 0x3d, 0x1c, 0xe0, 0x5c, 0xe1, 0x9c, 0xb2, 0xc2, 0x72, 0xca, 0xec, 0x93, 0x93, 0x72, 0x12, 0xf2, - 0x9a, 0x61, 0x5f, 0xc2, 0x9e, 0x0d, 0xcf, 0xde, 0x18, 0x8c, 0xef, 0x0e, 0x77, 0x04, 0x2a, 0x0f, - 0xe3, 0x5d, 0x03, 0x24, 0xc9, 0x73, 0x15, 0x01, 0xe4, 0x59, 0x98, 0xb1, 0xe9, 0x86, 0x71, 0x23, - 0xe4, 0x17, 0xc0, 0xa5, 0x11, 0x16, 0xa9, 0xc7, 0x82, 0xcc, 0x58, 0x24, 0x6f, 0xe8, 0x55, 0x7e, - 0xff, 0xb1, 0xc1, 0x41, 0x5c, 0x3c, 0x08, 0x63, 0xc9, 0x40, 0x7e, 0xc5, 0xa8, 0x67, 0xe2, 0xa7, - 0xe0, 0x38, 0x6b, 0xf6, 0xcd, 0xd2, 0x4a, 0x71, 0x75, 0xb5, 0x5c, 0x5d, 0x2e, 0x37, 0x2b, 0x8b, - 0x74, 0x03, 0x2a, 0x48, 0x29, 0x36, 0x1a, 0xe5, 0xb5, 0xf5, 0x46, 0xbd, 0x59, 0x7e, 0x56, 0xa9, - 0x5c, 0x5e, 0x24, 0x6e, 0x91, 0xe4, 0x5c, 0x93, 0xe7, 0xc0, 0x5a, 0xac, 0xd6, 0xcf, 0x97, 0xd5, - 0xc2, 0xf6, 0xd9, 0x22, 0x4c, 0x87, 0x06, 0x0a, 0x97, 0xbb, 0x45, 0xbc, 0xa9, 0xed, 0x76, 0x98, - 0x4d, 0x5d, 0x38, 0xe2, 0x72, 0x47, 0x64, 0x53, 0x33, 0x3a, 0x97, 0x0b, 0x19, 0xa5, 0x00, 0x33, - 0xe1, 0x31, 0xa1, 0x20, 0xa1, 0x37, 0x5e, 0x03, 0x53, 0xe7, 0x4d, 0xeb, 0x22, 0xf1, 0xe5, 0x43, - 0xef, 0xa0, 0xb1, 0x6d, 0xbc, 0x53, 0xc2, 0x21, 0x03, 0xec, 0x15, 0xe2, 0x1e, 0x23, 0x1e, 0xb5, - 0xf9, 0x81, 0x27, 0x81, 0xcf, 0xc0, 0xf4, 0x25, 0x2f, 0x77, 0xd0, 0xd2, 0x43, 0x49, 0xe8, 0xbf, - 0x8b, 0xf9, 0x80, 0x0c, 0x2e, 0x32, 0x7d, 0x1f, 0x85, 0x37, 0x48, 0x90, 0x5f, 0xc6, 0x4e, 0xb1, - 0xd3, 0x09, 0xcb, 0xed, 0xa5, 0xc2, 0xa7, 0xbb, 0xb8, 0x4a, 0x14, 0x3b, 0x9d, 0xe8, 0x46, 0x15, - 0x12, 0x90, 0x77, 0x0a, 0x81, 0x4b, 0x13, 0xf4, 0x9d, 0x1c, 0x50, 0x60, 0xfa, 0x12, 0x7b, 0xaf, - 0xec, 0xfb, 0x39, 0x3c, 0x1a, 0x32, 0x93, 0x6e, 0x0b, 0xe2, 0x1a, 0x65, 0xe2, 0xfd, 0x25, 0xbc, - 0x7c, 0xca, 0x03, 0x30, 0xb1, 0x6b, 0xe3, 0x92, 0x66, 0x7b, 0x43, 0x1b, 0x5f, 0xd3, 0xda, 0x85, - 0x87, 0x70, 0xcb, 0x99, 0xaf, 0xec, 0xb8, 0x13, 0x9f, 0x0d, 0x9a, 0xd1, 0x0f, 0x15, 0xc4, 0xde, - 0x55, 0x8f, 0x82, 0x3b, 0x79, 0xbc, 0xa4, 0x3b, 0xdb, 0xa5, 0x6d, 0xcd, 0x61, 0x3b, 0x16, 0xfe, - 0x3b, 0x7a, 0xd1, 0x10, 0x70, 0xc6, 0xee, 0xf0, 0x47, 0x1e, 0x12, 0x4d, 0x0c, 0xe2, 0x08, 0xb6, - 0xe5, 0x87, 0x01, 0xf1, 0x1f, 0x24, 0xc8, 0xd6, 0xba, 0xd8, 0x10, 0x3e, 0x11, 0xe5, 0xcb, 0x56, - 0xea, 0x91, 0xed, 0xab, 0xc4, 0x3d, 0x04, 0xfd, 0x4a, 0xbb, 0x25, 0x47, 0x48, 0xf6, 0x16, 0xc8, - 0xea, 0xc6, 0xa6, 0xc9, 0x2c, 0xdb, 0xab, 0x23, 0x6c, 0x9d, 0x8a, 0xb1, 0x69, 0xaa, 0x24, 0xa3, - 0xa8, 0x73, 0x60, 0x5c, 0xd9, 0xe9, 0x8b, 0xfb, 0x6b, 0x93, 0x90, 0xa7, 0xea, 0x8c, 0x5e, 0x22, - 0x83, 0x5c, 0x6c, 0xb7, 0x23, 0x04, 0x2f, 0xed, 0x13, 0xbc, 0x49, 0x7e, 0xf3, 0x31, 0xf1, 0xdf, - 0xf9, 0x80, 0x36, 0x82, 0x7d, 0x3b, 0x6b, 0x52, 0xc5, 0x76, 0x3b, 0xda, 0x0f, 0xd9, 0x2f, 0x50, - 0xe2, 0x0b, 0x0c, 0xb7, 0x70, 0x59, 0xac, 0x85, 0x27, 0x1e, 0x08, 0x22, 0xf9, 0x4b, 0x1f, 0xa2, - 0x7f, 0x92, 0x60, 0x62, 0x55, 0xb7, 0x1d, 0x17, 0x9b, 0xa2, 0x08, 0x36, 0xd7, 0xc0, 0x94, 0x27, - 0x1a, 0xb7, 0xcb, 0x73, 0xfb, 0xf3, 0x20, 0x81, 0x9f, 0x89, 0xdf, 0xcf, 0xa3, 0xf3, 0xb4, 0xf8, - 0xda, 0x33, 0x2e, 0xa2, 0x4f, 0x9a, 0x04, 0xc5, 0x4a, 0xbd, 0xc5, 0xfe, 0xae, 0x2f, 0xf0, 0x35, - 0x4e, 0xe0, 0x77, 0x0c, 0x53, 0x64, 0xfa, 0x42, 0xff, 0x94, 0x04, 0xe0, 0x96, 0xcd, 0x8e, 0xf3, - 0x3d, 0x89, 0x3b, 0xa4, 0x1f, 0x23, 0xdd, 0x97, 0x85, 0xa5, 0xbb, 0xc6, 0x4b, 0xf7, 0x07, 0x07, - 0x57, 0x35, 0xee, 0xd8, 0x9e, 0x52, 0x00, 0x59, 0xf7, 0x45, 0xeb, 0x3e, 0xa2, 0x37, 0xf8, 0x42, - 0x5d, 0xe7, 0x84, 0x7a, 0xd7, 0x90, 0x25, 0xa5, 0x2f, 0xd7, 0xbf, 0x92, 0x60, 0xa2, 0x8e, 0x1d, - 0xb7, 0x9b, 0x44, 0xe7, 0x44, 0x7a, 0xf8, 0x50, 0xdb, 0x96, 0x04, 0xdb, 0xf6, 0x37, 0x33, 0xa2, - 0xc1, 0x7e, 0x02, 0xc9, 0x30, 0x9e, 0x22, 0x56, 0x1f, 0x1e, 0x15, 0x0a, 0xf6, 0x33, 0x88, 0x5a, - 0xfa, 0xd2, 0x7d, 0x9d, 0xe4, 0xbb, 0x5b, 0xf0, 0xa7, 0x6d, 0xc2, 0x66, 0x71, 0x66, 0xbf, 0x59, - 0x2c, 0x7e, 0xda, 0x26, 0x5c, 0xc7, 0x68, 0xef, 0x81, 0xc4, 0xc6, 0xc6, 0x08, 0x36, 0xf6, 0x87, - 0x91, 0xd7, 0x73, 0x65, 0xc8, 0xb3, 0x1d, 0x80, 0x7b, 0xe3, 0x77, 0x00, 0x06, 0x4f, 0x2d, 0xde, - 0x3e, 0x84, 0x29, 0x17, 0xb7, 0x2c, 0xef, 0xb3, 0x21, 0x85, 0xd8, 0xb8, 0x19, 0x72, 0x24, 0x1a, - 0x29, 0x1b, 0xe7, 0x02, 0x9f, 0x0c, 0x8f, 0x44, 0xd9, 0xfd, 0xaa, 0xd2, 0x4c, 0x89, 0x51, 0x18, - 0xc1, 0x4a, 0xfe, 0x30, 0x28, 0xbc, 0x55, 0x01, 0x58, 0xdf, 0xbd, 0xd0, 0xd1, 0xed, 0x6d, 0xdd, - 0xd8, 0x42, 0xff, 0x9e, 0x81, 0x19, 0xf6, 0x4a, 0x83, 0x6a, 0xc6, 0x9a, 0x7f, 0x91, 0x46, 0x41, - 0x01, 0xe4, 0x5d, 0x4b, 0x67, 0xcb, 0x00, 0xee, 0xa3, 0x72, 0xb7, 0xef, 0x9e, 0x95, 0xed, 0x09, - 0xa7, 0xe0, 0x8a, 0x21, 0xe0, 0x60, 0x3e, 0x54, 0x7a, 0xe0, 0xa6, 0x15, 0x8e, 0x9c, 0x9a, 0xe3, - 0x23, 0xa7, 0x72, 0x67, 0x2c, 0xf3, 0x3d, 0x67, 0x2c, 0x5d, 0x1c, 0x6d, 0xfd, 0xd9, 0x98, 0xf8, - 0xef, 0xc8, 0x2a, 0x79, 0x76, 0xff, 0x78, 0xc8, 0xd4, 0x0d, 0xb2, 0xa9, 0xc3, 0xdc, 0x87, 0x83, - 0x04, 0xf4, 0x9e, 0x60, 0x22, 0x63, 0x0a, 0x5a, 0xc1, 0x09, 0xc4, 0xc0, 0x95, 0x9d, 0xed, 0x2d, - 0xfb, 0xfd, 0xc2, 0x91, 0xd2, 0x42, 0x02, 0x8b, 0x9d, 0x92, 0x30, 0x0e, 0x24, 0x9f, 0x83, 0xd0, - 0xae, 0x6c, 0x5c, 0x77, 0x3a, 0x88, 0x7e, 0x32, 0xc5, 0xdc, 0x19, 0x62, 0xf1, 0x45, 0x81, 0x39, - 0xef, 0xe4, 0x69, 0x6d, 0xe1, 0xfe, 0x72, 0xa9, 0x51, 0xc0, 0xfb, 0x4f, 0xa3, 0x92, 0x73, 0xa7, - 0xf4, 0x8c, 0x69, 0xb0, 0xc0, 0x82, 0xfe, 0xa7, 0x04, 0x79, 0x66, 0x3b, 0xdc, 0x7b, 0x40, 0x08, - 0xd1, 0xcb, 0x87, 0x81, 0x24, 0x36, 0x00, 0xc0, 0x47, 0x93, 0x02, 0x30, 0x02, 0x6b, 0xe1, 0xc1, - 0xd4, 0x00, 0x40, 0xff, 0x22, 0x41, 0xd6, 0xb5, 0x69, 0xc4, 0x8e, 0x57, 0x7f, 0x44, 0xd8, 0x55, - 0x39, 0x24, 0x00, 0x97, 0x7c, 0x84, 0x7e, 0x2f, 0xc0, 0x54, 0x97, 0x66, 0xf4, 0x0f, 0xf7, 0x5f, - 0x2f, 0xd0, 0xb3, 0x60, 0x35, 0xf8, 0x0d, 0xbd, 0x4d, 0xc8, 0xdd, 0x39, 0x9e, 0x9f, 0x64, 0x70, - 0x94, 0x47, 0x71, 0x12, 0x7b, 0x13, 0x7d, 0x5b, 0x02, 0x50, 0xb1, 0x6d, 0x76, 0xf6, 0xf0, 0x86, - 0xa5, 0xa3, 0xab, 0x03, 0x00, 0x58, 0xb3, 0xcf, 0x04, 0xcd, 0xfe, 0xe3, 0x61, 0xc1, 0x2f, 0xf3, - 0x82, 0xbf, 0x2d, 0x5a, 0xf3, 0x3c, 0xe2, 0x11, 0xe2, 0xbf, 0x07, 0x26, 0x98, 0x1c, 0x99, 0x81, - 0x28, 0x26, 0x7c, 0xef, 0x27, 0xf4, 0x4e, 0x5f, 0xf4, 0xf7, 0x73, 0xa2, 0x7f, 0x7a, 0x62, 0x8e, - 0x92, 0x01, 0x50, 0x1a, 0x02, 0x80, 0xa3, 0x30, 0xed, 0x01, 0xb0, 0xa1, 0x56, 0x0a, 0x18, 0xbd, - 0x59, 0x26, 0x3e, 0x0f, 0x74, 0xa4, 0x3a, 0x78, 0x4f, 0xf3, 0x25, 0xe1, 0x99, 0x7b, 0x48, 0x1e, - 0x7e, 0xf9, 0x29, 0x01, 0xf4, 0x67, 0x42, 0x53, 0x75, 0x01, 0x86, 0x1e, 0x2f, 0xfd, 0xd5, 0xd9, - 0x32, 0xcc, 0x72, 0x26, 0x86, 0x72, 0x0a, 0x8e, 0x73, 0x09, 0x74, 0xbc, 0x6b, 0x17, 0x8e, 0x28, - 0x08, 0x4e, 0x72, 0x5f, 0xd8, 0x0b, 0x6e, 0x17, 0x32, 0xe8, 0xeb, 0x9f, 0xce, 0xf8, 0x8b, 0x37, - 0x6f, 0xcf, 0xb2, 0x65, 0xb3, 0x0f, 0xf2, 0xf1, 0xe4, 0x5a, 0xa6, 0xe1, 0xe0, 0x87, 0x43, 0x3e, - 0x27, 0x7e, 0x42, 0xac, 0xd5, 0x70, 0x0a, 0x26, 0x1c, 0x2b, 0xec, 0x87, 0xe2, 0xbd, 0x86, 0x15, - 0x2b, 0xc7, 0x2b, 0x56, 0x15, 0xce, 0xea, 0x46, 0xab, 0xb3, 0xdb, 0xc6, 0x2a, 0xee, 0x68, 0xae, - 0x0c, 0xed, 0xa2, 0xbd, 0x88, 0xbb, 0xd8, 0x68, 0x63, 0xc3, 0xa1, 0x7c, 0x7a, 0xe7, 0xd9, 0x04, - 0x72, 0xf2, 0xca, 0x78, 0x37, 0xaf, 0x8c, 0x4f, 0xea, 0xb7, 0x1e, 0x1b, 0xb3, 0x78, 0x77, 0x07, - 0x00, 0xad, 0xdb, 0x39, 0x1d, 0x5f, 0x62, 0x6a, 0x78, 0x55, 0xcf, 0x12, 0x5e, 0xcd, 0xcf, 0xa0, - 0x86, 0x32, 0xa3, 0xc7, 0x7c, 0xf5, 0xbb, 0x8f, 0x53, 0xbf, 0x9b, 0x05, 0x59, 0x48, 0xa6, 0x75, - 0xdd, 0x21, 0xb4, 0x6e, 0x16, 0xa6, 0x82, 0xad, 0x61, 0x59, 0xb9, 0x0a, 0x4e, 0x78, 0x3e, 0xbd, - 0xd5, 0x72, 0x79, 0xb1, 0xde, 0xdc, 0x58, 0x5f, 0x56, 0x8b, 0x8b, 0xe5, 0x02, 0xb8, 0xfa, 0x49, - 0xf5, 0xd2, 0x77, 0xc5, 0xcd, 0xa2, 0x4f, 0x4b, 0x90, 0x23, 0x87, 0x31, 0xd1, 0x8f, 0x8e, 0x48, - 0x73, 0x6c, 0xce, 0x83, 0xc9, 0x1f, 0x77, 0xc5, 0xe3, 0xbc, 0x33, 0x61, 0x12, 0xae, 0x0e, 0x14, - 0xe7, 0x3d, 0x86, 0x50, 0xfa, 0xd3, 0x1a, 0xb7, 0x49, 0xd6, 0xb7, 0xcd, 0x4b, 0xdf, 0xcb, 0x4d, - 0xd2, 0xad, 0xff, 0x21, 0x37, 0xc9, 0x3e, 0x2c, 0x8c, 0xbd, 0x49, 0xf6, 0x69, 0x77, 0x31, 0xcd, - 0x14, 0x3d, 0x27, 0xe7, 0xcf, 0xff, 0x9e, 0x27, 0x1d, 0x68, 0x23, 0xab, 0x08, 0xb3, 0xba, 0xe1, - 0x60, 0xcb, 0xd0, 0x3a, 0x4b, 0x1d, 0x6d, 0xcb, 0xb3, 0x4f, 0x7b, 0x77, 0x2f, 0x2a, 0xa1, 0x3c, - 0x2a, 0xff, 0x87, 0x72, 0x1a, 0xc0, 0xc1, 0x3b, 0xdd, 0x8e, 0xe6, 0x04, 0xaa, 0x17, 0x4a, 0x09, - 0x6b, 0x5f, 0x96, 0xd7, 0xbe, 0x5b, 0xe1, 0x0a, 0x0a, 0x5a, 0xe3, 0x72, 0x17, 0x6f, 0x18, 0xfa, - 0x8f, 0xed, 0x92, 0xf0, 0xa3, 0x54, 0x47, 0xfb, 0x7d, 0xe2, 0xb6, 0x73, 0xf2, 0x3d, 0xdb, 0x39, - 0xff, 0x20, 0x1c, 0xd6, 0xc4, 0x6b, 0xf5, 0x03, 0xc2, 0x9a, 0xf8, 0x2d, 0x4d, 0xee, 0x69, 0x69, - 0xfe, 0x22, 0x4b, 0x56, 0x60, 0x91, 0x25, 0x8c, 0x4a, 0x4e, 0x70, 0x81, 0xf2, 0x95, 0x42, 0x71, - 0x53, 0xe2, 0xaa, 0x31, 0x86, 0x05, 0x70, 0x19, 0xe6, 0x68, 0xd1, 0x0b, 0xa6, 0x79, 0x71, 0x47, - 0xb3, 0x2e, 0x22, 0xeb, 0x40, 0xaa, 0x18, 0xbb, 0x97, 0x14, 0xb9, 0x41, 0xfa, 0x31, 0xe1, 0x39, - 0x03, 0x27, 0x2e, 0x8f, 0xe7, 0xf1, 0x6c, 0x26, 0xbd, 0x46, 0x68, 0x0a, 0x21, 0xc2, 0x60, 0xfa, - 0xb8, 0xfe, 0x89, 0x8f, 0xab, 0xd7, 0xd1, 0x87, 0xd7, 0xe1, 0x47, 0x89, 0x2b, 0xfa, 0xfc, 0x70, - 0xd8, 0x79, 0x7c, 0x0d, 0x81, 0x5d, 0x01, 0xe4, 0x8b, 0xbe, 0xeb, 0x8f, 0xfb, 0x18, 0xae, 0x50, - 0x36, 0x3d, 0x34, 0x23, 0x58, 0x1e, 0x0b, 0x9a, 0xc7, 0x79, 0x16, 0x6a, 0xdd, 0x54, 0x31, 0xfd, - 0x9c, 0xf0, 0xfe, 0x56, 0x5f, 0x01, 0x51, 0xee, 0xc6, 0xd3, 0x2a, 0xc5, 0x36, 0xc7, 0xc4, 0xd9, - 0x4c, 0x1f, 0xcd, 0x17, 0xe6, 0x60, 0xca, 0x0b, 0x3c, 0x43, 0xee, 0x45, 0xf2, 0x31, 0x3c, 0x09, - 0x79, 0xdb, 0xdc, 0xb5, 0x5a, 0x98, 0xed, 0x38, 0xb2, 0xb7, 0x21, 0x76, 0xc7, 0x06, 0x8e, 0xe7, - 0xfb, 0x4c, 0x86, 0x6c, 0x62, 0x93, 0x21, 0xda, 0x20, 0x8d, 0x1b, 0xe0, 0x5f, 0x24, 0x1c, 0xcc, - 0x9e, 0xc3, 0xac, 0x8e, 0x9d, 0xc7, 0xe3, 0x18, 0xff, 0x47, 0x42, 0x7b, 0x2f, 0x03, 0x6a, 0x92, - 0x4c, 0xe5, 0x6a, 0x43, 0x18, 0xaa, 0x57, 0xc3, 0x95, 0x5e, 0x0e, 0x66, 0xa1, 0x12, 0x8b, 0x74, - 0x43, 0x5d, 0x2d, 0xc8, 0xe8, 0xb9, 0x59, 0x28, 0x50, 0xd6, 0x6a, 0xbe, 0xb1, 0x86, 0x5e, 0x9a, - 0x39, 0x6c, 0x8b, 0x34, 0x7a, 0x8a, 0xf9, 0x09, 0x49, 0x34, 0x60, 0x2e, 0x27, 0xf8, 0xa0, 0x76, - 0x11, 0x9a, 0x34, 0x44, 0x33, 0x8b, 0x51, 0x3e, 0xf4, 0x3b, 0x19, 0x91, 0xf8, 0xbb, 0x62, 0x2c, - 0x8e, 0x21, 0x58, 0x52, 0xd6, 0x8b, 0x1f, 0xb6, 0x64, 0x99, 0x3b, 0x1b, 0x56, 0x07, 0xfd, 0x9f, - 0x42, 0xe1, 0xcd, 0x23, 0xcc, 0x7f, 0x29, 0xda, 0xfc, 0x27, 0x4b, 0xc6, 0x9d, 0x60, 0xaf, 0xaa, - 0x33, 0xc4, 0xf0, 0xad, 0xdc, 0x00, 0x73, 0x5a, 0xbb, 0xbd, 0xae, 0x6d, 0xe1, 0x92, 0x3b, 0xaf, - 0x36, 0x1c, 0x16, 0x5b, 0xa8, 0x27, 0x35, 0xb6, 0x2b, 0x12, 0x5f, 0x07, 0xe5, 0x40, 0x62, 0xf2, - 0x19, 0xcb, 0xf0, 0xe6, 0x0e, 0x09, 0xad, 0x6d, 0x2d, 0x88, 0x74, 0xc6, 0xde, 0x04, 0x3d, 0x9b, - 0x04, 0xf8, 0x4e, 0x5f, 0xb3, 0xfe, 0x40, 0x82, 0x09, 0x57, 0xde, 0xc5, 0x76, 0x1b, 0x3d, 0x91, - 0x0b, 0x08, 0x18, 0xe9, 0x5b, 0xf6, 0xd3, 0xc2, 0x4e, 0x7d, 0x5e, 0x0d, 0x29, 0xfd, 0x08, 0x4c, - 0x02, 0x21, 0x4a, 0x9c, 0x10, 0xc5, 0x7c, 0xf7, 0x62, 0x8b, 0x48, 0x5f, 0x7c, 0x1f, 0x91, 0x60, - 0xd6, 0x9b, 0x47, 0x2c, 0x61, 0xa7, 0xb5, 0x8d, 0xee, 0x10, 0x5d, 0x68, 0x62, 0x2d, 0xcd, 0xdf, - 0x93, 0xed, 0xa0, 0xef, 0x64, 0x12, 0xaa, 0x3c, 0x57, 0x72, 0xc4, 0x2a, 0x5d, 0x22, 0x5d, 0x8c, - 0x23, 0x98, 0xbe, 0x30, 0x1f, 0x93, 0x00, 0x1a, 0xa6, 0x3f, 0xd7, 0x3d, 0x80, 0x24, 0x7f, 0x41, - 0x78, 0xbb, 0x96, 0x55, 0x3c, 0x28, 0x36, 0x79, 0xcf, 0x21, 0xe8, 0x9a, 0x34, 0xa8, 0xa4, 0xb1, - 0xb4, 0xf5, 0xa9, 0xc5, 0xdd, 0x6e, 0x47, 0x6f, 0x69, 0x4e, 0xaf, 0x3f, 0x5d, 0xb4, 0x78, 0xc9, - 0xa5, 0xa1, 0x89, 0x8c, 0x42, 0xbf, 0x8c, 0x08, 0x59, 0xd2, 0xd0, 0x33, 0x92, 0x17, 0x7a, 0x46, - 0xd0, 0x47, 0x66, 0x00, 0xf1, 0x31, 0xa8, 0xa7, 0x0c, 0x47, 0x6b, 0x5d, 0x6c, 0x2c, 0x58, 0x58, - 0x6b, 0xb7, 0xac, 0xdd, 0x9d, 0x0b, 0x76, 0xd8, 0x19, 0x34, 0x5e, 0x47, 0x43, 0x4b, 0xc7, 0x12, - 0xb7, 0x74, 0x8c, 0x7e, 0x4a, 0x16, 0x0d, 0x84, 0x14, 0xda, 0xe0, 0x08, 0xf1, 0x30, 0xc4, 0x50, - 0x97, 0xc8, 0x85, 0xa9, 0x67, 0x95, 0x38, 0x9b, 0x64, 0x95, 0xf8, 0xb5, 0x42, 0x61, 0x95, 0x84, - 0xea, 0x35, 0x16, 0x4f, 0xb4, 0xb9, 0x3a, 0x76, 0x22, 0xe0, 0xbd, 0x1e, 0x66, 0x2f, 0x04, 0x5f, - 0x7c, 0x88, 0xf9, 0xc4, 0x3e, 0xfe, 0xa1, 0xaf, 0x4b, 0xba, 0x02, 0xc3, 0xb3, 0x10, 0x81, 0xae, - 0x8f, 0xa0, 0x24, 0xe2, 0x84, 0x96, 0x68, 0x39, 0x25, 0xb6, 0xfc, 0xf4, 0x51, 0x78, 0xbf, 0x04, - 0xd3, 0xe4, 0x2a, 0xd4, 0x85, 0xcb, 0xe4, 0x58, 0xa4, 0xa0, 0x51, 0xf2, 0xc2, 0xb0, 0x98, 0x15, - 0xc8, 0x76, 0x74, 0xe3, 0xa2, 0xe7, 0x3d, 0xe8, 0x3e, 0x07, 0x17, 0xeb, 0x49, 0x7d, 0x2e, 0xd6, - 0xf3, 0xf7, 0x29, 0xfc, 0x72, 0x0f, 0x74, 0xd3, 0xf3, 0x40, 0x72, 0xe9, 0x8b, 0xf1, 0xef, 0xb2, - 0x90, 0xaf, 0x63, 0xcd, 0x6a, 0x6d, 0xa3, 0xb7, 0x4b, 0x7d, 0xa7, 0x0a, 0x93, 0xfc, 0x54, 0x61, - 0x09, 0x26, 0x36, 0xf5, 0x8e, 0x83, 0x2d, 0xea, 0x51, 0x1d, 0xee, 0xda, 0x69, 0x13, 0x5f, 0xe8, - 0x98, 0xad, 0x8b, 0xf3, 0xcc, 0x74, 0x9f, 0xf7, 0x02, 0xb1, 0xce, 0x2f, 0x91, 0x9f, 0x54, 0xef, - 0x67, 0xd7, 0x20, 0xb4, 0x4d, 0xcb, 0x89, 0xba, 0x63, 0x23, 0x82, 0x4a, 0xdd, 0xb4, 0x1c, 0x95, - 0xfe, 0xe8, 0xc2, 0xbc, 0xb9, 0xdb, 0xe9, 0x34, 0xf0, 0xc3, 0x8e, 0x37, 0x6d, 0xf3, 0xde, 0x5d, - 0x63, 0xd1, 0xdc, 0xdc, 0xb4, 0x31, 0x5d, 0x34, 0xc8, 0xa9, 0xec, 0x4d, 0x39, 0x0e, 0xb9, 0x8e, - 0xbe, 0xa3, 0xd3, 0x89, 0x46, 0x4e, 0xa5, 0x2f, 0xca, 0x4d, 0x50, 0x08, 0xe6, 0x38, 0x94, 0xd1, - 0x53, 0x79, 0xd2, 0x34, 0xf7, 0xa5, 0xbb, 0x3a, 0x73, 0x11, 0x5f, 0xb6, 0x4f, 0x4d, 0x90, 0xef, - 0xe4, 0x99, 0x3f, 0xbe, 0x22, 0xb2, 0xdf, 0x41, 0x25, 0x1e, 0x3d, 0x83, 0xb5, 0x70, 0xcb, 0xb4, - 0xda, 0x9e, 0x6c, 0xa2, 0x27, 0x18, 0x2c, 0x5f, 0xb2, 0x5d, 0x8a, 0xbe, 0x85, 0xa7, 0xaf, 0x69, - 0x6f, 0xc9, 0xbb, 0xdd, 0xa6, 0x5b, 0xf4, 0x79, 0xdd, 0xd9, 0x5e, 0xc3, 0x8e, 0x86, 0xfe, 0x4e, - 0xee, 0xab, 0x71, 0xd3, 0xff, 0x9f, 0xc6, 0x0d, 0xd0, 0x38, 0x1a, 0x06, 0xcb, 0xd9, 0xb5, 0x0c, - 0x57, 0x8e, 0xcc, 0x2b, 0x35, 0x94, 0xa2, 0xdc, 0x05, 0x57, 0x05, 0x6f, 0xde, 0x52, 0xe9, 0x22, - 0x9b, 0xb6, 0x4e, 0x91, 0xec, 0xd1, 0x19, 0x94, 0x75, 0xb8, 0x8e, 0x7e, 0x5c, 0x69, 0xac, 0xad, - 0xae, 0xe8, 0x5b, 0xdb, 0x1d, 0x7d, 0x6b, 0xdb, 0xb1, 0x2b, 0x86, 0xed, 0x60, 0xad, 0x5d, 0xdb, - 0x54, 0xe9, 0xed, 0x38, 0x40, 0xe8, 0x88, 0x64, 0xe5, 0x3d, 0xae, 0xc5, 0x46, 0xb7, 0xb0, 0xa6, - 0x44, 0xb4, 0x94, 0xa7, 0xbb, 0x2d, 0xc5, 0xde, 0xed, 0xf8, 0x98, 0x5e, 0xd3, 0x83, 0x69, 0xa0, - 0xea, 0xbb, 0x1d, 0xd2, 0x5c, 0x48, 0xe6, 0xa4, 0xe3, 0x5c, 0x0c, 0x27, 0xe9, 0x37, 0x9b, 0xff, - 0x27, 0x0f, 0xb9, 0x65, 0x4b, 0xeb, 0x6e, 0xa3, 0xe7, 0x86, 0xfa, 0xe7, 0x51, 0xb5, 0x09, 0x5f, - 0x3b, 0xa5, 0x41, 0xda, 0x29, 0x0f, 0xd0, 0xce, 0x6c, 0x48, 0x3b, 0xa3, 0x17, 0x95, 0xcf, 0xc2, - 0x4c, 0xcb, 0xec, 0x74, 0x70, 0xcb, 0x95, 0x47, 0xa5, 0x4d, 0x56, 0x73, 0xa6, 0x54, 0x2e, 0x8d, - 0x04, 0xab, 0xc6, 0x4e, 0x9d, 0xae, 0xa1, 0x53, 0xa5, 0x0f, 0x12, 0xd0, 0x4b, 0x25, 0xc8, 0x96, - 0xdb, 0x5b, 0x98, 0x5b, 0x67, 0xcf, 0x84, 0xd6, 0xd9, 0x4f, 0x42, 0xde, 0xd1, 0xac, 0x2d, 0xec, - 0x78, 0xeb, 0x04, 0xf4, 0xcd, 0x8f, 0xa1, 0x2d, 0x87, 0x62, 0x68, 0xff, 0x20, 0x64, 0x5d, 0x99, - 0x31, 0x27, 0xf3, 0xeb, 0xfa, 0xc1, 0x4f, 0x64, 0x3f, 0xef, 0x96, 0x38, 0xef, 0xd6, 0x5a, 0x25, - 0x3f, 0xf4, 0x62, 0x9d, 0xdb, 0x87, 0x35, 0xb9, 0xe8, 0xb3, 0x65, 0x1a, 0x95, 0x1d, 0x6d, 0x0b, - 0xb3, 0x6a, 0x06, 0x09, 0xde, 0xd7, 0xf2, 0x8e, 0xf9, 0x90, 0xce, 0xa2, 0x45, 0x06, 0x09, 0x6e, - 0x15, 0xb6, 0xf5, 0x76, 0x1b, 0x1b, 0xac, 0x65, 0xb3, 0xb7, 0xb3, 0xa7, 0x21, 0xeb, 0xf2, 0xe0, - 0xea, 0x8f, 0x6b, 0x2c, 0x14, 0x8e, 0x28, 0x33, 0x6e, 0xb3, 0xa2, 0x8d, 0xb7, 0x90, 0xe1, 0xd7, - 0x54, 0x45, 0xdc, 0x76, 0x68, 0xe5, 0xfa, 0x37, 0xae, 0xa7, 0x40, 0xce, 0x30, 0xdb, 0x78, 0xe0, - 0x20, 0x44, 0x73, 0x29, 0x4f, 0x83, 0x1c, 0x6e, 0xbb, 0xbd, 0x82, 0x4c, 0xb2, 0x9f, 0x8e, 0x97, - 0xa5, 0x4a, 0x33, 0x27, 0xf3, 0x0d, 0xea, 0xc7, 0x6d, 0xfa, 0x0d, 0xf0, 0x67, 0x27, 0xe0, 0x28, - 0xed, 0x03, 0xea, 0xbb, 0x17, 0x5c, 0x52, 0x17, 0x30, 0x7a, 0xb4, 0xff, 0xc0, 0x75, 0x94, 0x57, - 0xf6, 0xe3, 0x90, 0xb3, 0x77, 0x2f, 0xf8, 0x46, 0x28, 0x7d, 0x09, 0x37, 0x5d, 0x69, 0x24, 0xc3, - 0x99, 0x3c, 0xec, 0x70, 0xc6, 0x0d, 0x4d, 0xb2, 0xd7, 0xf8, 0x83, 0x81, 0x8c, 0x1e, 0x8f, 0xf0, - 0x06, 0xb2, 0x7e, 0xc3, 0xd0, 0x29, 0x98, 0xd0, 0x36, 0x1d, 0x6c, 0x05, 0x66, 0x22, 0x7b, 0x75, - 0x87, 0xca, 0x0b, 0x78, 0xd3, 0xb4, 0x5c, 0xb1, 0xd0, 0x10, 0xea, 0xfe, 0x7b, 0xa8, 0xe5, 0x02, - 0xb7, 0x43, 0x76, 0x33, 0x1c, 0x33, 0xcc, 0x45, 0xdc, 0x65, 0x72, 0xa6, 0x28, 0xce, 0x92, 0x16, - 0xb0, 0xff, 0xc3, 0xbe, 0xae, 0x64, 0x6e, 0x7f, 0x57, 0x82, 0x3e, 0x9e, 0x74, 0xce, 0xdc, 0x03, - 0xf4, 0xc8, 0x2c, 0x34, 0xe5, 0x99, 0x30, 0xd3, 0x66, 0x2e, 0x5a, 0x2d, 0xdd, 0x6f, 0x25, 0x91, - 0xff, 0x71, 0x99, 0x03, 0x45, 0xca, 0x86, 0x15, 0x69, 0x19, 0x26, 0xc9, 0x41, 0x66, 0x57, 0x93, - 0x72, 0x3d, 0x2e, 0xf1, 0x64, 0x5a, 0xe7, 0x57, 0x2a, 0x24, 0xb6, 0xf9, 0x12, 0xfb, 0x45, 0xf5, - 0x7f, 0x4e, 0x36, 0xfb, 0x8e, 0x97, 0x50, 0xfa, 0xcd, 0xf1, 0x77, 0xf3, 0x70, 0x55, 0xc9, 0x32, - 0x6d, 0x9b, 0x9c, 0x81, 0xe9, 0x6d, 0x98, 0xbf, 0x2d, 0x71, 0xb7, 0x69, 0x3c, 0xae, 0x9b, 0x5f, - 0xbf, 0x06, 0x35, 0xbe, 0xa6, 0xf1, 0x25, 0xe1, 0x10, 0x30, 0xfe, 0xfe, 0x43, 0x84, 0xd0, 0xbf, - 0x37, 0x1a, 0xc9, 0x5b, 0x32, 0x22, 0x51, 0x69, 0x12, 0xca, 0x2a, 0xfd, 0xe6, 0xf2, 0x39, 0x09, - 0xae, 0xee, 0xe5, 0x66, 0xc3, 0xb0, 0xfd, 0x06, 0x73, 0xed, 0x80, 0xf6, 0xc2, 0x47, 0x31, 0x89, - 0xbd, 0xc7, 0x32, 0xa2, 0xee, 0xa1, 0xd2, 0x22, 0x16, 0x4b, 0x82, 0x13, 0x35, 0x71, 0xf7, 0x58, - 0x26, 0x26, 0x9f, 0xbe, 0x70, 0x3f, 0x91, 0x85, 0xa3, 0xcb, 0x96, 0xb9, 0xdb, 0xb5, 0x83, 0x1e, - 0xe8, 0x6f, 0xfa, 0x6f, 0xb8, 0xe6, 0x45, 0x4c, 0x83, 0x33, 0x30, 0x6d, 0x31, 0x6b, 0x2e, 0xd8, - 0x7e, 0x0d, 0x27, 0x85, 0x7b, 0x2f, 0xf9, 0x20, 0xbd, 0x57, 0xd0, 0xcf, 0x64, 0xb9, 0x7e, 0xa6, - 0xb7, 0xe7, 0xc8, 0xf5, 0xe9, 0x39, 0xfe, 0x5a, 0x4a, 0x38, 0xa8, 0xf6, 0x88, 0x28, 0xa2, 0xbf, - 0x28, 0x41, 0x7e, 0x8b, 0x64, 0x64, 0xdd, 0xc5, 0x93, 0xc5, 0x6a, 0x46, 0x88, 0xab, 0xec, 0xd7, - 0x40, 0xae, 0x72, 0x58, 0x87, 0x13, 0x0d, 0x70, 0xf1, 0xdc, 0xa6, 0xaf, 0x54, 0xaf, 0xca, 0xc2, - 0x8c, 0x5f, 0x7a, 0xa5, 0x6d, 0xa3, 0x17, 0xf6, 0xd7, 0xa8, 0x59, 0x11, 0x8d, 0xda, 0xb7, 0xce, - 0xec, 0x8f, 0x3a, 0x72, 0x68, 0xd4, 0xe9, 0x3b, 0xba, 0xcc, 0x44, 0x8c, 0x2e, 0xe8, 0x39, 0xb2, - 0xe8, 0x7d, 0x54, 0x7c, 0xd7, 0x4a, 0x6a, 0xf3, 0x78, 0x1e, 0x2c, 0x04, 0x6f, 0xc5, 0x1a, 0x5c, - 0xab, 0xf4, 0x95, 0xe4, 0x5d, 0x12, 0x1c, 0xdb, 0xdf, 0x99, 0x7f, 0x1f, 0xef, 0x85, 0xe6, 0xd6, - 0xc9, 0xf6, 0xbd, 0xd0, 0xc8, 0x1b, 0xbf, 0x49, 0x17, 0x1b, 0x52, 0x84, 0xb3, 0xf7, 0x06, 0x77, - 0xe2, 0x62, 0x41, 0x43, 0x04, 0x89, 0xa6, 0x2f, 0xc0, 0x5f, 0x94, 0x61, 0xaa, 0x8e, 0x9d, 0x55, - 0xed, 0xb2, 0xb9, 0xeb, 0x20, 0x4d, 0x74, 0x7b, 0xee, 0x19, 0x90, 0xef, 0x90, 0x5f, 0xd8, 0x35, - 0xff, 0x67, 0xfa, 0xee, 0x6f, 0x11, 0xdf, 0x1f, 0x4a, 0x5a, 0x65, 0xf9, 0xf9, 0x58, 0x2e, 0x22, - 0xbb, 0xa3, 0x3e, 0x77, 0x23, 0xd9, 0xda, 0x49, 0xb4, 0x77, 0x1a, 0x55, 0x74, 0xfa, 0xb0, 0xfc, - 0x94, 0x0c, 0xb3, 0x75, 0xec, 0x54, 0xec, 0x25, 0x6d, 0xcf, 0xb4, 0x74, 0x07, 0x87, 0xef, 0xf9, - 0x8c, 0x87, 0xe6, 0x34, 0x80, 0xee, 0xff, 0xc6, 0x22, 0x4c, 0x85, 0x52, 0xd0, 0xef, 0x24, 0x75, - 0x14, 0xe2, 0xf8, 0x18, 0x09, 0x08, 0x89, 0x7c, 0x2c, 0xe2, 0x8a, 0x4f, 0x1f, 0x88, 0xcf, 0x4a, - 0x0c, 0x88, 0xa2, 0xd5, 0xda, 0xd6, 0xf7, 0x70, 0x3b, 0x21, 0x10, 0xde, 0x6f, 0x01, 0x10, 0x3e, - 0xa1, 0xc4, 0xee, 0x2b, 0x1c, 0x1f, 0xa3, 0x70, 0x5f, 0x89, 0x23, 0x38, 0x96, 0x20, 0x51, 0x6e, - 0xd7, 0xc3, 0xd6, 0x33, 0xef, 0x15, 0x15, 0x6b, 0x60, 0xb2, 0x49, 0x61, 0x93, 0x6d, 0xa8, 0x8e, - 0x85, 0x96, 0x3d, 0x48, 0xa7, 0xb3, 0x69, 0x74, 0x2c, 0x7d, 0x8b, 0x4e, 0x5f, 0xe8, 0x6f, 0x93, - 0xe1, 0x84, 0x1f, 0x3d, 0xa5, 0x8e, 0x9d, 0x45, 0xcd, 0xde, 0xbe, 0x60, 0x6a, 0x56, 0x1b, 0x95, - 0x46, 0x70, 0xe2, 0x0f, 0x7d, 0x26, 0x0c, 0x42, 0x95, 0x07, 0xa1, 0xaf, 0xab, 0x68, 0x5f, 0x5e, - 0x46, 0xd1, 0xc9, 0xc4, 0x7a, 0xb3, 0xfe, 0x9e, 0x0f, 0xd6, 0x0f, 0x71, 0x60, 0xdd, 0x3d, 0x2c, - 0x8b, 0xe9, 0x03, 0xf7, 0x2b, 0x74, 0x44, 0x08, 0x79, 0x35, 0x3f, 0x28, 0x0a, 0x58, 0x84, 0x57, - 0xab, 0x1c, 0xe9, 0xd5, 0x3a, 0xd4, 0x18, 0x31, 0xd0, 0x23, 0x39, 0xdd, 0x31, 0xe2, 0x10, 0xbd, - 0x8d, 0xdf, 0x24, 0x43, 0x81, 0x84, 0xcf, 0x0a, 0x79, 0x7c, 0x87, 0xa3, 0x51, 0xc7, 0xa3, 0xb3, - 0xcf, 0xbb, 0x7c, 0x22, 0xa9, 0x77, 0x39, 0x7a, 0x63, 0x52, 0x1f, 0xf2, 0x5e, 0x6e, 0x47, 0x82, - 0x58, 0x22, 0x17, 0xf1, 0x01, 0x1c, 0xa4, 0x0f, 0xda, 0x7f, 0x93, 0x01, 0xdc, 0x06, 0xcd, 0xce, - 0x3e, 0x3c, 0x4b, 0x14, 0xae, 0x5b, 0xc2, 0x7e, 0xf5, 0x2e, 0x50, 0x27, 0x7a, 0x80, 0xa2, 0x14, - 0x83, 0x53, 0x15, 0x8f, 0x26, 0xf5, 0xad, 0x0c, 0xb8, 0x1a, 0x09, 0x2c, 0x89, 0xbc, 0x2d, 0x23, - 0xcb, 0x4e, 0x1f, 0x90, 0xff, 0x21, 0x41, 0xae, 0x61, 0xd6, 0xb1, 0x73, 0x70, 0x53, 0x20, 0xf1, - 0xb1, 0x7d, 0x52, 0xee, 0x28, 0x8e, 0xed, 0xf7, 0x23, 0x34, 0x86, 0x68, 0x64, 0x12, 0xcc, 0x34, - 0xcc, 0x92, 0xbf, 0x38, 0x25, 0xee, 0xab, 0x2a, 0x7e, 0xa7, 0xb6, 0x5f, 0xc1, 0xa0, 0x98, 0x03, - 0xdd, 0xa9, 0x3d, 0x98, 0x5e, 0xfa, 0x72, 0xbb, 0x03, 0x8e, 0x6e, 0x18, 0x6d, 0x53, 0xc5, 0x6d, - 0x93, 0xad, 0x74, 0x2b, 0x0a, 0x64, 0x77, 0x8d, 0xb6, 0x49, 0x58, 0xce, 0xa9, 0xe4, 0xd9, 0x4d, - 0xb3, 0x70, 0xdb, 0x64, 0xbe, 0x01, 0xe4, 0x19, 0x7d, 0x49, 0x86, 0xac, 0xfb, 0xaf, 0xb8, 0xa8, - 0xdf, 0x24, 0x27, 0x0c, 0x44, 0xe0, 0x92, 0x1f, 0x89, 0x25, 0x74, 0x6f, 0x68, 0xed, 0x9f, 0x7a, - 0xb0, 0x5e, 0x17, 0x55, 0x5e, 0x48, 0x14, 0xc1, 0x9a, 0xbf, 0x72, 0x0a, 0x26, 0x2e, 0x74, 0xcc, - 0xd6, 0xc5, 0xe0, 0xbc, 0x3c, 0x7b, 0x55, 0x6e, 0x82, 0x9c, 0xa5, 0x19, 0x5b, 0x98, 0xed, 0x29, - 0x1c, 0xef, 0xe9, 0x0b, 0x89, 0xd7, 0x8b, 0x4a, 0xb3, 0xa0, 0x37, 0x26, 0x09, 0x81, 0xd0, 0xa7, - 0xf2, 0xc9, 0xf4, 0x61, 0x71, 0x88, 0x93, 0x65, 0x05, 0x98, 0x29, 0x15, 0xe9, 0xed, 0xf5, 0x6b, - 0xb5, 0x73, 0xe5, 0x82, 0x4c, 0x60, 0x76, 0x65, 0x92, 0x22, 0xcc, 0x2e, 0xf9, 0xef, 0x59, 0x98, - 0xfb, 0x54, 0xfe, 0x30, 0x60, 0xfe, 0x88, 0x04, 0xb3, 0xab, 0xba, 0xed, 0x44, 0x79, 0xfb, 0xc7, - 0x44, 0xcf, 0x7d, 0x51, 0x52, 0x53, 0x99, 0x2b, 0x47, 0x38, 0x6c, 0x6e, 0x22, 0x73, 0x38, 0xae, - 0x88, 0xf1, 0x1c, 0x4b, 0x21, 0x1c, 0xd0, 0x3b, 0xa4, 0x85, 0x25, 0x99, 0xd8, 0x50, 0x0a, 0x0a, - 0x19, 0xbf, 0xa1, 0x14, 0x59, 0x76, 0xfa, 0xf2, 0xfd, 0x92, 0x04, 0xc7, 0xdc, 0xe2, 0xe3, 0x96, - 0xa5, 0xa2, 0xc5, 0x3c, 0x70, 0x59, 0x2a, 0xf1, 0xca, 0xf8, 0x3e, 0x5e, 0x46, 0xb1, 0x32, 0x3e, - 0x88, 0xe8, 0x98, 0xc5, 0x1c, 0xb1, 0x0c, 0x3b, 0x48, 0xcc, 0x31, 0xcb, 0xb0, 0xc3, 0x8b, 0x39, - 0x7e, 0x29, 0x76, 0x48, 0x31, 0x1f, 0xda, 0x02, 0xeb, 0x6f, 0xca, 0xbe, 0x98, 0x23, 0xd7, 0x36, - 0x62, 0xc4, 0x9c, 0xf8, 0xc4, 0x2e, 0x7a, 0xf3, 0x90, 0x82, 0x1f, 0xf1, 0xfa, 0xc6, 0x30, 0x30, - 0x1d, 0xe2, 0x1a, 0xc7, 0xaf, 0xca, 0x30, 0xc7, 0xb8, 0xe8, 0x3f, 0x65, 0x8e, 0xc1, 0x28, 0xf1, - 0x94, 0x39, 0xf1, 0x19, 0x20, 0x9e, 0xb3, 0xf1, 0x9f, 0x01, 0x8a, 0x2d, 0x3f, 0x7d, 0x70, 0xbe, - 0x92, 0x85, 0x93, 0x2e, 0x0b, 0x6b, 0x66, 0x5b, 0xdf, 0xbc, 0x4c, 0xb9, 0x38, 0xa7, 0x75, 0x76, - 0xb1, 0x8d, 0xde, 0x21, 0x89, 0xa2, 0xf4, 0x9f, 0x00, 0xcc, 0x2e, 0xb6, 0x68, 0x20, 0x35, 0x06, - 0xd4, 0x5d, 0x51, 0x95, 0xdd, 0x5f, 0x92, 0x7f, 0x99, 0x4c, 0xcd, 0x23, 0xa2, 0x86, 0xe8, 0xb9, - 0x56, 0xe1, 0x94, 0xff, 0xa5, 0xd7, 0xc1, 0x23, 0xb3, 0xdf, 0xc1, 0xe3, 0x46, 0x90, 0xb5, 0x76, - 0xdb, 0x87, 0xaa, 0x77, 0x33, 0x9b, 0x94, 0xa9, 0xba, 0x59, 0xdc, 0x9c, 0x36, 0x0e, 0x8e, 0xe6, - 0x45, 0xe4, 0xb4, 0xb1, 0xa3, 0xcc, 0x43, 0x9e, 0xde, 0x90, 0xed, 0xaf, 0xe8, 0xf7, 0xcf, 0xcc, - 0x72, 0xf1, 0xa6, 0x5d, 0x8d, 0x57, 0xc3, 0x3b, 0x12, 0x49, 0xa6, 0x5f, 0x3f, 0x1d, 0xd8, 0xc9, - 0x2a, 0xa7, 0x60, 0xf7, 0x0c, 0x4d, 0x79, 0x3c, 0xbb, 0x61, 0xc5, 0x6e, 0xb7, 0x73, 0xb9, 0xc1, - 0x82, 0xaf, 0x24, 0xda, 0x0d, 0x0b, 0xc5, 0x70, 0x91, 0x7a, 0x63, 0xb8, 0x24, 0xdf, 0x0d, 0xe3, - 0xf8, 0x18, 0xc5, 0x6e, 0x58, 0x1c, 0xc1, 0xf4, 0x45, 0xfb, 0xe1, 0x49, 0x6a, 0x35, 0xb3, 0xd8, - 0xfe, 0x1f, 0xef, 0xef, 0x59, 0x0d, 0xbc, 0xb3, 0x4b, 0xbf, 0xb0, 0xff, 0xb1, 0x77, 0x9a, 0x28, - 0x4f, 0x83, 0xfc, 0xa6, 0x69, 0xed, 0x68, 0xde, 0xc6, 0x7d, 0xef, 0x49, 0x11, 0x16, 0x4f, 0x7f, - 0x89, 0xe4, 0x51, 0x59, 0x5e, 0x77, 0x3e, 0xf2, 0x6c, 0xbd, 0xcb, 0xa2, 0x2e, 0xba, 0x8f, 0xca, - 0xf5, 0x30, 0xcb, 0x82, 0x2f, 0x56, 0xb1, 0xed, 0xe0, 0x36, 0x8b, 0x58, 0xc1, 0x27, 0x2a, 0x67, - 0x61, 0x86, 0x25, 0x2c, 0xe9, 0x1d, 0x6c, 0xb3, 0xa0, 0x15, 0x5c, 0x9a, 0x72, 0x12, 0xf2, 0xba, - 0x7d, 0xbf, 0x6d, 0x1a, 0xc4, 0xff, 0x7f, 0x52, 0x65, 0x6f, 0xca, 0x8d, 0x70, 0x94, 0xe5, 0xf3, - 0x8d, 0x55, 0x7a, 0x60, 0xa7, 0x37, 0xd9, 0x55, 0x2d, 0xc3, 0x5c, 0xb7, 0xcc, 0x2d, 0x0b, 0xdb, - 0x36, 0x39, 0x35, 0x35, 0xa9, 0x86, 0x52, 0x94, 0x07, 0xe1, 0x58, 0x47, 0x37, 0x2e, 0xda, 0x24, - 0x48, 0xef, 0x12, 0x73, 0x1b, 0x9b, 0xe9, 0x13, 0x3c, 0x3b, 0xd4, 0xd8, 0x98, 0x1c, 0xc2, 0xbf, - 0xa8, 0xfb, 0xa9, 0x28, 0x37, 0x41, 0x81, 0x71, 0xb3, 0xa0, 0xb5, 0x2e, 0x92, 0xef, 0xcc, 0x1d, - 0x75, 0x5f, 0x3a, 0x7a, 0x49, 0x06, 0x66, 0xb8, 0x9f, 0x35, 0x50, 0xbc, 0x2e, 0xcf, 0x3e, 0xbf, - 0xad, 0x3b, 0xd8, 0x2d, 0x98, 0x9d, 0x63, 0xb9, 0x6d, 0x00, 0x63, 0xea, 0xbe, 0x1f, 0xd5, 0x3e, - 0xc4, 0x5c, 0x00, 0x68, 0x67, 0x46, 0xbc, 0xc6, 0x6c, 0x66, 0x87, 0x72, 0x69, 0xe8, 0xd9, 0xa0, - 0xec, 0xa7, 0x16, 0xf2, 0xf0, 0xc8, 0x24, 0xf3, 0xf0, 0x70, 0x65, 0xa2, 0x75, 0x3a, 0xe6, 0x25, - 0xdc, 0xf6, 0xc9, 0x32, 0x3d, 0xdc, 0x97, 0x8e, 0x3e, 0x39, 0xcc, 0x9c, 0x2f, 0xf1, 0x15, 0x14, - 0x6e, 0x03, 0xda, 0x6d, 0xb5, 0x30, 0x6e, 0xb3, 0x43, 0x69, 0xde, 0x6b, 0xc2, 0xcb, 0x29, 0x12, - 0xcf, 0x10, 0x0f, 0xe9, 0x76, 0x8a, 0xf7, 0x9e, 0x80, 0x3c, 0xbd, 0xe9, 0x0d, 0xbd, 0x64, 0xae, - 0x6f, 0x3f, 0x32, 0xc7, 0xf7, 0x23, 0x1b, 0x30, 0x63, 0x98, 0x6e, 0x71, 0xeb, 0x9a, 0xa5, 0xed, - 0xd8, 0x71, 0x0b, 0xc0, 0x94, 0xae, 0x3f, 0xda, 0x57, 0x43, 0xbf, 0xad, 0x1c, 0x51, 0x39, 0x32, - 0xca, 0xff, 0x0f, 0x8e, 0x5e, 0x60, 0xc1, 0x1b, 0x6c, 0x46, 0x59, 0x8a, 0x76, 0x8f, 0xec, 0xa1, - 0xbc, 0xc0, 0xff, 0xb9, 0x72, 0x44, 0xed, 0x25, 0xa6, 0xfc, 0x08, 0xcc, 0xb9, 0xaf, 0x6d, 0xf3, - 0x92, 0xc7, 0xb8, 0x1c, 0x6d, 0x23, 0xf6, 0x90, 0x5f, 0xe3, 0x7e, 0x5c, 0x39, 0xa2, 0xf6, 0x90, - 0x52, 0x6a, 0x00, 0xdb, 0xce, 0x4e, 0x87, 0x11, 0xce, 0x46, 0xab, 0x64, 0x0f, 0xe1, 0x15, 0xff, - 0xa7, 0x95, 0x23, 0x6a, 0x88, 0x84, 0xb2, 0x0a, 0x53, 0xce, 0xc3, 0x0e, 0xa3, 0x97, 0x8b, 0xf6, - 0x4b, 0xe8, 0xa1, 0xd7, 0xf0, 0xfe, 0x59, 0x39, 0xa2, 0x06, 0x04, 0x94, 0x0a, 0x4c, 0x76, 0x2f, - 0x30, 0x62, 0xf9, 0xe8, 0xbe, 0xac, 0x87, 0xd8, 0xfa, 0x05, 0x9f, 0x96, 0xff, 0xbb, 0xcb, 0x58, - 0xcb, 0xde, 0x63, 0xb4, 0x26, 0x84, 0x19, 0x2b, 0x79, 0xff, 0xb8, 0x8c, 0xf9, 0x04, 0x94, 0x0a, - 0x4c, 0xd9, 0x86, 0xd6, 0xb5, 0xb7, 0x4d, 0xc7, 0x3e, 0x35, 0xd9, 0xe3, 0xc2, 0x1a, 0x4d, 0xad, - 0xce, 0xfe, 0x51, 0x83, 0xbf, 0x95, 0xa7, 0xc1, 0x89, 0xdd, 0x6e, 0x5b, 0x73, 0x70, 0xf9, 0x61, - 0xdd, 0x76, 0x74, 0x63, 0xcb, 0x0b, 0xff, 0x4b, 0x07, 0x82, 0xfe, 0x1f, 0x95, 0x79, 0x76, 0x98, - 0x0d, 0x48, 0xdb, 0x44, 0xbd, 0xfb, 0xa8, 0xb4, 0xd8, 0xd0, 0x19, 0xb6, 0x67, 0x42, 0xd6, 0xfd, - 0x44, 0x06, 0x8e, 0xb9, 0xfe, 0x6b, 0xb4, 0xbd, 0xba, 0x43, 0x1a, 0xb0, 0xfb, 0x53, 0xcf, 0xd8, - 0x33, 0xb3, 0x6f, 0xec, 0x39, 0x03, 0xd3, 0xba, 0xbd, 0xa6, 0x6f, 0x51, 0xc3, 0x97, 0x8d, 0x0d, - 0xe1, 0x24, 0xba, 0x50, 0x50, 0xc5, 0x97, 0xe8, 0xe5, 0x26, 0x47, 0xbd, 0x85, 0x02, 0x2f, 0x05, - 0xdd, 0x00, 0x33, 0xe1, 0x46, 0x46, 0xaf, 0x8b, 0xd5, 0x03, 0xb3, 0x99, 0xbd, 0xa1, 0xeb, 0x61, - 0x8e, 0xd7, 0xe9, 0x90, 0x75, 0x20, 0x7b, 0x5d, 0x21, 0xba, 0x0e, 0x8e, 0xf6, 0x34, 0x2c, 0x2f, - 0x1c, 0x4c, 0x26, 0x08, 0x07, 0x73, 0x06, 0x20, 0xd0, 0xe2, 0xbe, 0x64, 0xae, 0x85, 0x29, 0x5f, - 0x2f, 0xfb, 0x66, 0xf8, 0x42, 0x06, 0x26, 0x3d, 0x65, 0xeb, 0x97, 0xc1, 0x1d, 0x99, 0x8c, 0xd0, - 0xde, 0x8f, 0x37, 0x32, 0x85, 0xd3, 0x5c, 0x13, 0x20, 0xf0, 0xb8, 0x6e, 0xe8, 0x4e, 0xc7, 0x3b, - 0xb5, 0xd8, 0x9b, 0xac, 0xac, 0x03, 0xe8, 0x04, 0xa3, 0x46, 0x70, 0x8c, 0xf1, 0xd6, 0x04, 0xed, - 0x81, 0xea, 0x43, 0x88, 0xc6, 0xd9, 0xef, 0x63, 0x67, 0x0c, 0xa7, 0x20, 0x47, 0x63, 0xe0, 0x1f, - 0x51, 0xe6, 0x00, 0xca, 0xcf, 0x5a, 0x2f, 0xab, 0x95, 0x72, 0xb5, 0x54, 0x2e, 0x64, 0xd0, 0xaf, - 0x49, 0x30, 0xe5, 0x37, 0x82, 0xbe, 0x95, 0x2c, 0x33, 0xd5, 0x1a, 0x78, 0x23, 0xe7, 0xfe, 0x46, - 0x15, 0x56, 0xb2, 0x67, 0xc0, 0x95, 0xbb, 0x36, 0x5e, 0xd2, 0x2d, 0xdb, 0x51, 0xcd, 0x4b, 0x4b, - 0xa6, 0x15, 0x0c, 0xac, 0x34, 0xf8, 0x6c, 0xd4, 0x67, 0xd7, 0x18, 0x6c, 0x63, 0x72, 0x9e, 0x0d, - 0x5b, 0x6c, 0x51, 0x3f, 0x48, 0x70, 0xe9, 0x3a, 0x96, 0x66, 0xd8, 0x5d, 0xd3, 0xc6, 0xaa, 0x79, - 0xc9, 0x2e, 0x1a, 0xed, 0x92, 0xd9, 0xd9, 0xdd, 0x31, 0x6c, 0x66, 0xce, 0x45, 0x7d, 0x76, 0xa5, - 0x43, 0xee, 0xdb, 0x9d, 0x03, 0x28, 0xd5, 0x56, 0x57, 0xcb, 0xa5, 0x46, 0xa5, 0x56, 0x2d, 0x1c, - 0x71, 0xa5, 0xd5, 0x28, 0x2e, 0xac, 0xba, 0xd2, 0xf9, 0x51, 0x98, 0xf4, 0xda, 0x34, 0x8b, 0x60, - 0x93, 0xf1, 0x22, 0xd8, 0x28, 0x45, 0x98, 0xf4, 0x5a, 0x39, 0x1b, 0x11, 0x9e, 0xd8, 0x7b, 0x62, - 0x79, 0x47, 0xb3, 0x1c, 0x62, 0xa0, 0x78, 0x44, 0x16, 0x34, 0x1b, 0xab, 0xfe, 0x6f, 0x67, 0x9f, - 0xc2, 0x38, 0x50, 0x60, 0xae, 0xb8, 0xba, 0xda, 0xac, 0xa9, 0xcd, 0x6a, 0xad, 0xb1, 0x52, 0xa9, - 0x2e, 0xd3, 0x11, 0xb2, 0xb2, 0x5c, 0xad, 0xa9, 0x65, 0x3a, 0x40, 0xd6, 0x0b, 0x19, 0x7a, 0xdf, - 0xf3, 0xc2, 0x24, 0xe4, 0xbb, 0x44, 0xba, 0xe8, 0x73, 0x72, 0xc2, 0x50, 0x05, 0x3e, 0x4e, 0x11, - 0x37, 0xd2, 0x72, 0xc7, 0x05, 0xa4, 0x3e, 0xc7, 0x79, 0xcf, 0xc2, 0x0c, 0x35, 0xc3, 0x6d, 0xb2, - 0xf3, 0x42, 0x90, 0x93, 0x55, 0x2e, 0x0d, 0xbd, 0x5f, 0x4a, 0x10, 0xbf, 0xa0, 0x2f, 0x47, 0xc9, - 0x8c, 0x8b, 0xbf, 0xc8, 0x0c, 0x77, 0x63, 0x44, 0xa5, 0xda, 0x28, 0xab, 0xd5, 0xe2, 0x2a, 0xcb, - 0x22, 0x2b, 0xa7, 0xe0, 0x78, 0xb5, 0xc6, 0xc2, 0x31, 0xd6, 0x9b, 0x8d, 0x5a, 0xb3, 0xb2, 0xb6, - 0x5e, 0x53, 0x1b, 0x85, 0x9c, 0x72, 0x12, 0x14, 0xfa, 0xdc, 0xac, 0xd4, 0x9b, 0xa5, 0x62, 0xb5, - 0x54, 0x5e, 0x2d, 0x2f, 0x16, 0xf2, 0xca, 0x93, 0xe0, 0x3a, 0x7a, 0x03, 0x51, 0x6d, 0xa9, 0xa9, - 0xd6, 0xce, 0xd7, 0x5d, 0x04, 0xd5, 0xf2, 0x6a, 0xd1, 0x55, 0xa4, 0xd0, 0xbd, 0xcf, 0x13, 0xca, - 0x15, 0x70, 0x94, 0x5c, 0x0a, 0xbf, 0x5a, 0x2b, 0x2e, 0xb2, 0xf2, 0x26, 0x95, 0x6b, 0xe0, 0x54, - 0xa5, 0x5a, 0xdf, 0x58, 0x5a, 0xaa, 0x94, 0x2a, 0xe5, 0x6a, 0xa3, 0xb9, 0x5e, 0x56, 0xd7, 0x2a, - 0xf5, 0xba, 0xfb, 0x6f, 0x61, 0x8a, 0xdc, 0xaa, 0x4b, 0xfb, 0x4c, 0xf4, 0x76, 0x19, 0x66, 0xcf, - 0x69, 0x1d, 0xdd, 0x1d, 0x28, 0xc8, 0x75, 0xdb, 0x3d, 0x27, 0x7d, 0x1c, 0x72, 0x2d, 0x37, 0x3b, - 0x2b, 0x40, 0x5e, 0xd0, 0x4f, 0xca, 0x09, 0x4f, 0xfa, 0x30, 0x20, 0x68, 0x89, 0xf3, 0x5c, 0x69, - 0x11, 0xf3, 0xd2, 0x57, 0x4a, 0x09, 0x4e, 0xfa, 0x88, 0x93, 0x4f, 0x06, 0xfe, 0xaf, 0x8f, 0x0a, - 0xfc, 0x02, 0xcc, 0x6c, 0x54, 0x8b, 0x1b, 0x8d, 0x95, 0x9a, 0x5a, 0xf9, 0x61, 0x12, 0x28, 0x7e, - 0x16, 0xa6, 0x96, 0x6a, 0xea, 0x42, 0x65, 0x71, 0xb1, 0x5c, 0x2d, 0xe4, 0x94, 0x2b, 0xe1, 0x8a, - 0x7a, 0x59, 0x3d, 0x57, 0x29, 0x95, 0x9b, 0x1b, 0xd5, 0xe2, 0xb9, 0x62, 0x65, 0x95, 0xf4, 0x11, - 0xf9, 0x98, 0xab, 0xc2, 0x27, 0xd0, 0x8f, 0x67, 0x01, 0x68, 0xd5, 0xc9, 0x3d, 0x49, 0xa1, 0x0b, - 0xa5, 0x3f, 0x9d, 0x74, 0xd2, 0x10, 0x90, 0x89, 0x68, 0xbf, 0x15, 0x98, 0xb4, 0xd8, 0x07, 0xb6, - 0xf2, 0x35, 0x88, 0x0e, 0x7d, 0xf4, 0xa8, 0xa9, 0xfe, 0xef, 0xe8, 0x1d, 0x49, 0xe6, 0x08, 0x91, - 0x8c, 0x25, 0x43, 0x72, 0x69, 0x34, 0x40, 0xa2, 0x17, 0x66, 0x60, 0x8e, 0xaf, 0x98, 0x5b, 0x09, - 0x62, 0x4c, 0x89, 0x55, 0x82, 0xff, 0x39, 0x64, 0x64, 0x9d, 0x7d, 0x2a, 0x1b, 0x4e, 0xc1, 0x6b, - 0x99, 0xf4, 0xd0, 0xbe, 0x67, 0xb1, 0x14, 0x32, 0x2e, 0xf3, 0xae, 0xd1, 0x51, 0x90, 0x94, 0x09, - 0x90, 0x1b, 0x0f, 0x3b, 0x05, 0x19, 0x7d, 0x41, 0x86, 0x59, 0xee, 0xc6, 0x6a, 0xf4, 0xca, 0x8c, - 0xc8, 0x6d, 0xb2, 0xa1, 0xbb, 0xb0, 0x33, 0x07, 0xbd, 0x0b, 0xfb, 0xec, 0x2d, 0x30, 0xc1, 0xd2, - 0x88, 0x7c, 0x6b, 0x55, 0xd7, 0x14, 0x38, 0x0a, 0xd3, 0xcb, 0xe5, 0x46, 0xb3, 0xde, 0x28, 0xaa, - 0x8d, 0xf2, 0x62, 0x21, 0xe3, 0x0e, 0x7c, 0xe5, 0xb5, 0xf5, 0xc6, 0x83, 0x05, 0x29, 0xb9, 0xf3, - 0x64, 0x2f, 0x23, 0x63, 0x76, 0x9e, 0x8c, 0x2b, 0x3e, 0xfd, 0xb9, 0xea, 0xc7, 0x65, 0x28, 0x50, - 0x0e, 0xca, 0x0f, 0x77, 0xb1, 0xa5, 0x63, 0xa3, 0x85, 0xd1, 0x45, 0x91, 0x60, 0xad, 0xfb, 0xc2, - 0x18, 0x92, 0xfe, 0x3c, 0x64, 0x25, 0xd2, 0x97, 0x1e, 0x03, 0x3b, 0xbb, 0xcf, 0xc0, 0xfe, 0x58, - 0x52, 0xef, 0xc9, 0x5e, 0x76, 0x47, 0x02, 0xd9, 0x87, 0x92, 0x78, 0x4f, 0x0e, 0xe0, 0x60, 0x2c, - 0x31, 0x98, 0x23, 0xc6, 0xdf, 0x82, 0x8c, 0x5e, 0x20, 0xc3, 0xd1, 0x45, 0xcd, 0xc1, 0x0b, 0x97, - 0x1b, 0xde, 0x8d, 0x92, 0x11, 0xb7, 0x40, 0x67, 0xf6, 0xdd, 0x02, 0x1d, 0x5c, 0x4a, 0x29, 0xf5, - 0x5c, 0x4a, 0x89, 0xde, 0x92, 0xf4, 0xbc, 0x65, 0x0f, 0x0f, 0x23, 0x0b, 0x94, 0x9c, 0xec, 0x1c, - 0x65, 0x3c, 0x17, 0xe9, 0x37, 0xb0, 0x37, 0x4c, 0x41, 0x81, 0xb2, 0x12, 0x72, 0x10, 0xfc, 0x45, - 0x76, 0x71, 0x7a, 0x33, 0x41, 0x3c, 0x46, 0x2f, 0xc2, 0x85, 0xc4, 0x47, 0xb8, 0xe0, 0xd6, 0x9b, - 0xe5, 0x5e, 0xa7, 0x8e, 0xa4, 0x9d, 0x61, 0xc8, 0x1b, 0x30, 0x3a, 0x04, 0x6e, 0x7a, 0x9d, 0x61, - 0x6c, 0xf1, 0xe3, 0xb9, 0xdc, 0x97, 0x5d, 0xc1, 0x59, 0x16, 0x45, 0x26, 0xfe, 0x0e, 0xf3, 0xa4, - 0xae, 0xe1, 0x9c, 0x37, 0x66, 0xcc, 0xc5, 0xde, 0xe9, 0xb9, 0x86, 0x0f, 0xe2, 0x20, 0x7d, 0x14, - 0xbe, 0x23, 0x41, 0xb6, 0x6e, 0x5a, 0xce, 0xa8, 0x30, 0x48, 0xba, 0x9d, 0x1d, 0x92, 0x40, 0x3d, - 0x7a, 0xce, 0x99, 0xde, 0x76, 0x76, 0x7c, 0xf9, 0x63, 0x08, 0x69, 0x79, 0x14, 0xe6, 0x28, 0x27, - 0xfe, 0x7d, 0x2f, 0xdf, 0x96, 0x68, 0x7f, 0xf5, 0x80, 0x28, 0x22, 0x64, 0xe3, 0xc3, 0xdf, 0x4e, - 0xf6, 0x40, 0xe1, 0xd2, 0xd0, 0x6f, 0x87, 0x71, 0x59, 0xe4, 0x71, 0xe9, 0x37, 0xe3, 0xf6, 0xaf, - 0x4c, 0x19, 0x55, 0xcf, 0x94, 0x24, 0x3a, 0x66, 0x4c, 0xe1, 0xe9, 0x23, 0xf2, 0x88, 0x0c, 0x79, - 0xe6, 0xce, 0x37, 0x52, 0x04, 0x92, 0xb6, 0x0c, 0x5f, 0x08, 0x62, 0x6e, 0x7f, 0xf2, 0xa8, 0x5b, - 0x46, 0x7c, 0xf9, 0xe9, 0xe3, 0xf0, 0xef, 0xcc, 0x4f, 0xb5, 0xb8, 0xa7, 0xe9, 0x1d, 0xed, 0x42, - 0x27, 0x41, 0x54, 0xea, 0xf7, 0x27, 0x3c, 0x99, 0xe7, 0x57, 0x95, 0x2b, 0x2f, 0x42, 0xe2, 0x3f, - 0x00, 0x53, 0x16, 0xb7, 0xd7, 0xe7, 0x5a, 0x51, 0x3d, 0x3e, 0xc2, 0xec, 0xbb, 0x1a, 0xe4, 0x4c, - 0x74, 0x0c, 0x4f, 0x88, 0x9f, 0xb1, 0x1c, 0x1b, 0x9a, 0x2e, 0xb6, 0xdb, 0x4b, 0x58, 0x73, 0x76, - 0x2d, 0xdc, 0x4e, 0x34, 0x44, 0x58, 0x3d, 0xdb, 0xa1, 0x21, 0x49, 0x70, 0x71, 0x21, 0x57, 0x79, - 0x74, 0x9e, 0x3e, 0xa0, 0x37, 0xf0, 0x78, 0x19, 0x49, 0x97, 0xf4, 0x7a, 0x1f, 0x92, 0x1a, 0x07, - 0xc9, 0x33, 0x87, 0x63, 0x22, 0x7d, 0x40, 0x7e, 0x59, 0x86, 0x39, 0x6a, 0x27, 0x8c, 0x1a, 0x93, - 0x3f, 0x4c, 0xe8, 0xfe, 0x13, 0xba, 0x51, 0x2b, 0xcc, 0xce, 0x48, 0x60, 0x49, 0xe2, 0x2c, 0x24, - 0xc6, 0x47, 0xfa, 0xc8, 0x7c, 0x32, 0x0f, 0x10, 0x72, 0xe9, 0x7c, 0x7f, 0x3e, 0x88, 0xd1, 0x88, - 0xde, 0xc8, 0xe6, 0x1f, 0x75, 0x2e, 0x60, 0x78, 0xc8, 0x5d, 0xd3, 0xdf, 0x90, 0xe2, 0x13, 0x85, - 0x46, 0x95, 0xbf, 0x48, 0x68, 0xf3, 0x32, 0x87, 0xca, 0x81, 0x83, 0xfb, 0x90, 0xbd, 0xdc, 0x07, - 0x12, 0x18, 0xbf, 0x83, 0x58, 0x49, 0x86, 0xda, 0xea, 0x10, 0x33, 0xfb, 0x53, 0x70, 0x5c, 0x2d, - 0x17, 0x17, 0x6b, 0xd5, 0xd5, 0x07, 0xc3, 0xd7, 0x2b, 0x15, 0xe4, 0xf0, 0xe4, 0x24, 0x15, 0xd8, - 0x5e, 0x9d, 0xb0, 0x0f, 0xe4, 0x65, 0x15, 0x37, 0x5b, 0x09, 0x2d, 0xae, 0x0c, 0xee, 0xd5, 0x04, - 0xc8, 0x1e, 0x26, 0x0a, 0x8f, 0x40, 0xa8, 0x19, 0xfd, 0xb4, 0x0c, 0x05, 0xe2, 0xfb, 0x43, 0xb8, - 0x64, 0xf7, 0xe8, 0xd5, 0x78, 0x8f, 0xcf, 0x2e, 0xdd, 0x7f, 0x0a, 0x3c, 0x3e, 0xbd, 0x04, 0xe5, - 0x06, 0x98, 0x6b, 0x6d, 0xe3, 0xd6, 0xc5, 0x8a, 0xe1, 0xed, 0xab, 0xd3, 0x4d, 0xd8, 0x9e, 0x54, - 0x1e, 0x98, 0x07, 0x78, 0x60, 0xf8, 0x49, 0x34, 0x37, 0x48, 0x87, 0x99, 0x8a, 0xc0, 0xe5, 0xc3, - 0x3e, 0x2e, 0x55, 0x0e, 0x97, 0x3b, 0x87, 0xa2, 0x9a, 0x0c, 0x96, 0xea, 0x10, 0xb0, 0x20, 0x38, - 0x59, 0x5b, 0x6f, 0x54, 0x6a, 0xd5, 0xe6, 0x46, 0xbd, 0xbc, 0xd8, 0x5c, 0xf0, 0xc0, 0xa9, 0x17, - 0x64, 0xf4, 0x55, 0x09, 0x26, 0x28, 0x5b, 0x36, 0x7a, 0x72, 0x00, 0xc1, 0x40, 0x57, 0x57, 0xf4, - 0x06, 0xe1, 0xc0, 0x15, 0xbe, 0x20, 0x58, 0x39, 0x11, 0xfd, 0xd4, 0x33, 0x60, 0x82, 0x82, 0xec, - 0xad, 0x68, 0x9d, 0x8e, 0xe8, 0xa5, 0x18, 0x19, 0xd5, 0xcb, 0x2e, 0x18, 0xc4, 0x62, 0x00, 0x1b, - 0xe9, 0x8f, 0x2c, 0xcf, 0xc9, 0x52, 0x33, 0xf8, 0xbc, 0xee, 0x6c, 0x13, 0x4f, 0x58, 0xf4, 0x43, - 0x22, 0xcb, 0x8b, 0x37, 0x43, 0x6e, 0xcf, 0xcd, 0x3d, 0xc0, 0xab, 0x98, 0x66, 0x42, 0xbf, 0x2e, - 0x1c, 0x33, 0x95, 0xd3, 0x4f, 0x9f, 0xa7, 0x08, 0x70, 0xd6, 0x20, 0xdb, 0xd1, 0x6d, 0x87, 0x8d, - 0x1f, 0x77, 0x24, 0x22, 0xe4, 0x3d, 0x54, 0x1c, 0xbc, 0xa3, 0x12, 0x32, 0xe8, 0x7e, 0x98, 0x09, - 0xa7, 0x0a, 0x78, 0x56, 0x9f, 0x82, 0x09, 0x76, 0xe2, 0x8f, 0x2d, 0xb1, 0x7a, 0xaf, 0x82, 0xcb, - 0x9a, 0x42, 0xb5, 0x4d, 0x5f, 0x07, 0xfe, 0xef, 0xa3, 0x30, 0xb1, 0xa2, 0xdb, 0x8e, 0x69, 0x5d, - 0x46, 0x8f, 0x66, 0x60, 0xe2, 0x1c, 0xb6, 0x6c, 0xdd, 0x34, 0xf6, 0xb9, 0x1a, 0x9c, 0x81, 0xe9, - 0xae, 0x85, 0xf7, 0x74, 0x73, 0xd7, 0x0e, 0x16, 0x67, 0xc2, 0x49, 0x0a, 0x82, 0x49, 0x6d, 0xd7, - 0xd9, 0x36, 0xad, 0x20, 0x50, 0x88, 0xf7, 0xae, 0x9c, 0x06, 0xa0, 0xcf, 0x55, 0x6d, 0x07, 0x33, - 0x07, 0x8a, 0x50, 0x8a, 0xa2, 0x40, 0xd6, 0xd1, 0x77, 0x30, 0x8b, 0x1c, 0x4c, 0x9e, 0x5d, 0x01, - 0x93, 0x28, 0x7c, 0x2c, 0xda, 0xa1, 0xac, 0x7a, 0xaf, 0xe8, 0x33, 0x32, 0x4c, 0x2f, 0x63, 0x87, - 0xb1, 0x6a, 0xa3, 0x17, 0x65, 0x84, 0x2e, 0xeb, 0x70, 0xc7, 0xd8, 0x8e, 0x66, 0x7b, 0xff, 0xf9, - 0x4b, 0xb0, 0x7c, 0x62, 0x10, 0xc6, 0x58, 0x0e, 0xc7, 0x30, 0x27, 0x31, 0xed, 0x9c, 0x0a, 0x75, - 0x46, 0x65, 0x99, 0xd9, 0x26, 0xc8, 0xfe, 0x0f, 0xe8, 0xad, 0x92, 0xe8, 0x79, 0x70, 0x26, 0xfb, - 0xf9, 0x50, 0x7d, 0x22, 0xbb, 0xa3, 0xc9, 0x3d, 0x96, 0x63, 0x5f, 0x78, 0xfa, 0x30, 0x25, 0x46, - 0x46, 0xf5, 0x73, 0x0b, 0x9e, 0x24, 0x1f, 0xcc, 0x49, 0xfa, 0xda, 0xf8, 0x4d, 0x19, 0xa6, 0xeb, - 0xdb, 0xe6, 0x25, 0x4f, 0x8e, 0x3f, 0x2a, 0x06, 0xec, 0x35, 0x30, 0xb5, 0xd7, 0x03, 0x6a, 0x90, - 0x10, 0x7d, 0x7d, 0x3e, 0x7a, 0xbe, 0x9c, 0x14, 0xa6, 0x10, 0x73, 0x23, 0xbf, 0xdc, 0x5e, 0x79, - 0x3a, 0x4c, 0x30, 0xae, 0xd9, 0x92, 0x4b, 0x3c, 0xc0, 0x5e, 0xe6, 0x70, 0x05, 0xb3, 0x7c, 0x05, - 0x93, 0x21, 0x1f, 0x5d, 0xb9, 0xf4, 0x91, 0xff, 0x53, 0x89, 0xc4, 0x11, 0xf1, 0x80, 0x2f, 0x8d, - 0x00, 0x78, 0xf4, 0xad, 0x8c, 0xe8, 0xc2, 0xa4, 0x2f, 0x01, 0x9f, 0x83, 0x03, 0x5d, 0xc4, 0x33, - 0x90, 0x5c, 0xfa, 0xf2, 0xfc, 0xb5, 0x2c, 0xcc, 0x2c, 0xea, 0x9b, 0x9b, 0x7e, 0x27, 0xf9, 0x62, - 0xc1, 0x4e, 0x32, 0xda, 0x1d, 0xc0, 0xb5, 0x73, 0x77, 0x2d, 0x0b, 0x1b, 0x5e, 0xa5, 0x58, 0x73, - 0xea, 0x49, 0x55, 0x6e, 0x84, 0xa3, 0xde, 0xb8, 0x10, 0xee, 0x28, 0xa7, 0xd4, 0xde, 0x64, 0xf4, - 0x0d, 0xe1, 0x5d, 0x2d, 0x4f, 0xa2, 0xe1, 0x2a, 0x45, 0x34, 0xc0, 0xbb, 0x60, 0x76, 0x9b, 0xe6, - 0x26, 0x53, 0x7f, 0xaf, 0xb3, 0x3c, 0xd9, 0x13, 0xa7, 0x79, 0x0d, 0xdb, 0xb6, 0xb6, 0x85, 0x55, - 0x3e, 0x73, 0x4f, 0xf3, 0x95, 0x93, 0xdc, 0x3a, 0x26, 0xb6, 0x41, 0x26, 0x50, 0x93, 0x31, 0x68, - 0xc7, 0x59, 0xc8, 0x2e, 0xe9, 0x1d, 0x8c, 0x7e, 0x46, 0x82, 0x29, 0x15, 0xb7, 0x4c, 0xa3, 0xe5, - 0xbe, 0x85, 0x9c, 0x83, 0xfe, 0x31, 0x23, 0x7a, 0xdb, 0xa6, 0x4b, 0x67, 0xde, 0xa7, 0x11, 0xd1, - 0x6e, 0xc4, 0x6e, 0xd5, 0x8c, 0x25, 0x35, 0x86, 0xbb, 0x51, 0xdc, 0xa9, 0xc7, 0xe6, 0x66, 0xc7, - 0xd4, 0xb8, 0xc5, 0xaf, 0x5e, 0x53, 0x28, 0x38, 0xac, 0x52, 0x35, 0x9d, 0x75, 0xdd, 0x30, 0xfc, - 0xf3, 0xdf, 0xfb, 0xd2, 0xf9, 0x7d, 0xdb, 0xd8, 0x10, 0x3a, 0xa4, 0xee, 0xac, 0xf4, 0x08, 0xcd, - 0xbe, 0x01, 0xe6, 0x2e, 0x5c, 0x76, 0xb0, 0xcd, 0x72, 0xb1, 0x62, 0xb3, 0x6a, 0x4f, 0x6a, 0x28, - 0x00, 0x76, 0x5c, 0xa8, 0x9d, 0x98, 0x02, 0x93, 0x89, 0x7a, 0x65, 0x88, 0x19, 0xe0, 0x71, 0x28, - 0x54, 0x6b, 0x8b, 0x65, 0xe2, 0xab, 0xe6, 0x79, 0xff, 0x6c, 0xa1, 0x5f, 0x90, 0x61, 0x86, 0x38, - 0x93, 0x78, 0x28, 0x5c, 0x27, 0x30, 0x1f, 0x41, 0x8f, 0x09, 0xfb, 0xb1, 0x91, 0x2a, 0x87, 0x0b, - 0x88, 0x16, 0xf4, 0xa6, 0xde, 0xe9, 0x15, 0x74, 0x4e, 0xed, 0x49, 0xed, 0x03, 0x88, 0xdc, 0x17, - 0x90, 0xdf, 0x17, 0x72, 0x66, 0x1b, 0xc4, 0xdd, 0x61, 0xa1, 0xf2, 0x07, 0x32, 0x4c, 0xbb, 0x93, - 0x14, 0x0f, 0x94, 0x1a, 0x07, 0x8a, 0x69, 0x74, 0x2e, 0x07, 0xcb, 0x22, 0xde, 0x6b, 0xa2, 0x46, - 0xf2, 0x57, 0xc2, 0x33, 0x77, 0x22, 0xa2, 0x10, 0x2f, 0x63, 0xc2, 0xef, 0x9d, 0x42, 0xf3, 0xf9, - 0x01, 0xcc, 0x1d, 0x16, 0x7c, 0x5f, 0xca, 0x41, 0x7e, 0xa3, 0x4b, 0x90, 0xfb, 0x75, 0x59, 0x24, - 0x98, 0xfc, 0xbe, 0x83, 0x0c, 0xae, 0x99, 0xd5, 0x31, 0x5b, 0x5a, 0x67, 0x3d, 0x38, 0x11, 0x16, - 0x24, 0x28, 0x77, 0x32, 0xdf, 0x46, 0x7a, 0x12, 0xf2, 0x86, 0xd8, 0x38, 0xeb, 0x44, 0x46, 0xa1, - 0x43, 0x23, 0x37, 0xc3, 0xb1, 0xb6, 0x6e, 0x6b, 0x17, 0x3a, 0xb8, 0x6c, 0xb4, 0xac, 0xcb, 0x54, - 0x1c, 0x6c, 0x5a, 0xb5, 0xef, 0x83, 0x72, 0x37, 0xe4, 0x6c, 0xe7, 0x72, 0x87, 0xce, 0x13, 0xc3, - 0x67, 0x4c, 0x22, 0x8b, 0xaa, 0xbb, 0xd9, 0x55, 0xfa, 0x57, 0xd8, 0x45, 0x69, 0x42, 0xf0, 0xaa, - 0xed, 0xa7, 0x42, 0xde, 0xb4, 0xf4, 0x2d, 0x9d, 0x5e, 0x9d, 0x34, 0xb7, 0x2f, 0x9c, 0x20, 0x35, - 0x05, 0x6a, 0x24, 0x8b, 0xca, 0xb2, 0x2a, 0x4f, 0x87, 0x29, 0x7d, 0x47, 0xdb, 0xc2, 0x0f, 0xe8, - 0x06, 0x3d, 0x6c, 0x39, 0x77, 0xfb, 0xa9, 0x7d, 0xc7, 0x67, 0xd8, 0x77, 0x35, 0xc8, 0x8a, 0xde, - 0x29, 0x89, 0xc6, 0x3c, 0x22, 0x75, 0xa3, 0xa0, 0x8e, 0xe5, 0xca, 0x71, 0xf4, 0x0a, 0xa1, 0x68, - 0x44, 0xd1, 0x6c, 0xa5, 0x3f, 0x78, 0x7f, 0x4a, 0x82, 0xc9, 0x45, 0xf3, 0x92, 0x41, 0x14, 0xfd, - 0x0e, 0x31, 0x5b, 0xb7, 0xcf, 0x21, 0x47, 0xfe, 0x46, 0xcf, 0xd8, 0x13, 0x0d, 0xa4, 0xb6, 0x5e, - 0x91, 0x11, 0x30, 0xc4, 0xb6, 0x1c, 0xc1, 0x7b, 0x16, 0xe3, 0xca, 0x49, 0x5f, 0xae, 0x7f, 0x26, - 0x43, 0x76, 0xd1, 0x32, 0xbb, 0xe8, 0xf5, 0x99, 0x04, 0x2e, 0x0b, 0x6d, 0xcb, 0xec, 0x36, 0xc8, - 0x45, 0x69, 0xc1, 0x31, 0x8e, 0x70, 0x9a, 0x72, 0x07, 0x4c, 0x76, 0x4d, 0x5b, 0x77, 0xbc, 0x69, - 0xc4, 0xdc, 0xed, 0x4f, 0xe8, 0xdb, 0x9a, 0xd7, 0x59, 0x26, 0xd5, 0xcf, 0xee, 0xf6, 0xda, 0x44, - 0x84, 0xae, 0x5c, 0x5c, 0x31, 0x7a, 0x97, 0xc5, 0xf5, 0xa4, 0xa2, 0x97, 0x84, 0x91, 0x7c, 0x26, - 0x8f, 0xe4, 0x13, 0xfb, 0x48, 0xd8, 0x32, 0xbb, 0x23, 0xd9, 0x64, 0x7c, 0x99, 0x8f, 0xea, 0x3d, - 0x1c, 0xaa, 0x37, 0x09, 0x95, 0x99, 0x3e, 0xa2, 0xef, 0xcc, 0x02, 0x10, 0x33, 0x63, 0xc3, 0x9d, - 0x00, 0x89, 0xd9, 0x58, 0x3f, 0x95, 0x0d, 0xc9, 0xb2, 0xc8, 0xcb, 0xf2, 0xc9, 0x11, 0x56, 0x0c, - 0x21, 0x1f, 0x21, 0xd1, 0x22, 0xe4, 0x76, 0xdd, 0xcf, 0x4c, 0xa2, 0x82, 0x24, 0xc8, 0xab, 0x4a, - 0xff, 0x44, 0x7f, 0x9a, 0x81, 0x1c, 0x49, 0x50, 0x4e, 0x03, 0x90, 0x81, 0x9d, 0x1e, 0x08, 0xca, - 0x90, 0x21, 0x3c, 0x94, 0x42, 0xb4, 0x55, 0x6f, 0xb3, 0xcf, 0xd4, 0x64, 0x0e, 0x12, 0xdc, 0xbf, - 0xc9, 0x70, 0x4f, 0x68, 0x31, 0x03, 0x20, 0x94, 0xe2, 0xfe, 0x4d, 0xde, 0x56, 0xf1, 0x26, 0x8d, - 0x61, 0x9d, 0x55, 0x83, 0x04, 0xff, 0xef, 0x55, 0xff, 0xe6, 0x33, 0xef, 0x6f, 0x92, 0xe2, 0x4e, - 0x86, 0x89, 0x5a, 0x2e, 0x04, 0x45, 0xe4, 0x49, 0xa6, 0xde, 0x64, 0xf4, 0x6a, 0x5f, 0x6d, 0x16, - 0x39, 0xb5, 0xb9, 0x35, 0x81, 0x78, 0xd3, 0x57, 0x9e, 0x2f, 0xe4, 0x60, 0xaa, 0x6a, 0xb6, 0x99, - 0xee, 0x84, 0x26, 0x8c, 0x1f, 0xca, 0x25, 0x9a, 0x30, 0xfa, 0x34, 0x22, 0x14, 0xe4, 0x3e, 0x5e, - 0x41, 0xc4, 0x28, 0x84, 0xf5, 0x43, 0x59, 0x80, 0x3c, 0xd1, 0xde, 0xfd, 0x57, 0x6a, 0xc5, 0x91, - 0x20, 0xa2, 0x55, 0xd9, 0x9f, 0xff, 0xe1, 0x74, 0xec, 0xbf, 0x42, 0x8e, 0x54, 0x30, 0x66, 0x77, - 0x87, 0xaf, 0xa8, 0x14, 0x5f, 0x51, 0x39, 0xbe, 0xa2, 0xd9, 0xde, 0x8a, 0x26, 0x59, 0x07, 0x88, - 0xd2, 0x90, 0xf4, 0x75, 0xfc, 0x1f, 0x26, 0x00, 0xaa, 0xda, 0x9e, 0xbe, 0x45, 0x77, 0x87, 0x3f, - 0xe3, 0xcd, 0x7f, 0xd8, 0x3e, 0xee, 0x7f, 0x0b, 0x0d, 0x84, 0x77, 0xc0, 0x04, 0x1b, 0xf7, 0x58, - 0x45, 0xae, 0xe5, 0x2a, 0x12, 0x50, 0xa1, 0x66, 0xe9, 0xc3, 0x8e, 0xea, 0xe5, 0xe7, 0x6e, 0xff, - 0x95, 0x7a, 0x6e, 0xff, 0xed, 0xbf, 0x07, 0x11, 0x71, 0x27, 0x30, 0x7a, 0x9b, 0xb0, 0x47, 0x7f, - 0x88, 0x9f, 0x50, 0x8d, 0x22, 0x9a, 0xe0, 0x53, 0x61, 0xc2, 0xf4, 0x37, 0xb4, 0xe5, 0xc8, 0x75, - 0xb0, 0x8a, 0xb1, 0x69, 0xaa, 0x5e, 0x4e, 0xc1, 0xcd, 0x2f, 0x21, 0x3e, 0xc6, 0x72, 0x68, 0xe6, - 0xe4, 0xb2, 0x17, 0x0f, 0xcc, 0xad, 0xc7, 0x79, 0xdd, 0xd9, 0x5e, 0x25, 0x51, 0x46, 0xfe, 0xb3, - 0x98, 0x05, 0x19, 0xc2, 0x5f, 0x4a, 0x86, 0x3f, 0x1f, 0xb3, 0xa3, 0xce, 0xa3, 0x76, 0x77, 0x14, - 0x95, 0xfe, 0xdc, 0x46, 0x00, 0x78, 0x27, 0xe4, 0x29, 0xa3, 0xac, 0x13, 0x3d, 0x1b, 0x89, 0x9f, - 0x4f, 0x49, 0x65, 0x7f, 0xa0, 0xb7, 0xfa, 0x38, 0x9e, 0xe3, 0x70, 0x5c, 0x38, 0x10, 0x67, 0xa9, - 0x43, 0x7a, 0xf6, 0x36, 0x98, 0x60, 0x92, 0x56, 0xe6, 0xc2, 0xad, 0xb8, 0x70, 0x44, 0x01, 0xc8, - 0xaf, 0x99, 0x7b, 0xb8, 0x61, 0x16, 0x32, 0xee, 0xb3, 0xcb, 0x5f, 0xc3, 0x2c, 0x48, 0xe8, 0xe5, - 0x93, 0x30, 0xe9, 0x07, 0x62, 0xfa, 0x94, 0x04, 0x85, 0x92, 0x85, 0x35, 0x07, 0x2f, 0x59, 0xe6, - 0x0e, 0xad, 0x91, 0xb8, 0x77, 0xe8, 0x2f, 0x0b, 0xbb, 0x78, 0xf8, 0x01, 0x92, 0x7a, 0x0b, 0x8b, - 0xc0, 0x92, 0x2e, 0x42, 0x4a, 0xde, 0x22, 0x24, 0x7a, 0x9d, 0x90, 0xcb, 0x87, 0x68, 0x29, 0xe9, - 0x37, 0xb5, 0x8f, 0x49, 0x90, 0x2b, 0x75, 0x4c, 0x03, 0x87, 0x8f, 0x30, 0x0d, 0x3c, 0x2b, 0xd3, - 0x7f, 0x27, 0x02, 0x3d, 0x47, 0x12, 0xb5, 0x35, 0x02, 0x01, 0xb8, 0x65, 0x0b, 0xca, 0x56, 0x6c, - 0x90, 0x8a, 0x25, 0x9d, 0xbe, 0x40, 0xbf, 0x2a, 0xc1, 0x14, 0x8d, 0x8b, 0x53, 0xec, 0x74, 0xd0, - 0x13, 0x02, 0xa1, 0xf6, 0x09, 0x66, 0x85, 0x7e, 0x5f, 0xd8, 0x45, 0xdf, 0xaf, 0x95, 0x4f, 0x3b, - 0x41, 0x80, 0xa0, 0x64, 0x1e, 0xe3, 0x62, 0x7b, 0x69, 0x03, 0x19, 0x4a, 0x5f, 0xd4, 0x9f, 0x96, - 0x5c, 0x03, 0xc0, 0xb8, 0xb8, 0x6e, 0xe1, 0x3d, 0x1d, 0x5f, 0x42, 0x57, 0x07, 0xc2, 0xde, 0x1f, - 0xf4, 0xe3, 0x35, 0xc2, 0x8b, 0x38, 0x21, 0x92, 0x91, 0x5b, 0x59, 0xd3, 0x9d, 0x20, 0x13, 0xeb, - 0xc5, 0x7b, 0x23, 0xb1, 0x84, 0xc8, 0xa8, 0xe1, 0xec, 0x82, 0x6b, 0x36, 0xd1, 0x5c, 0xa4, 0x2f, - 0xd8, 0xf7, 0x4c, 0xc0, 0xe4, 0x86, 0x61, 0x77, 0x3b, 0x9a, 0xbd, 0x8d, 0xbe, 0x2d, 0x43, 0x9e, - 0x5e, 0xe4, 0x86, 0x7e, 0x80, 0x8b, 0x2d, 0xf0, 0x63, 0xbb, 0xd8, 0xf2, 0x5c, 0x70, 0xe8, 0x4b, - 0xff, 0x7b, 0xe6, 0xd1, 0x3b, 0x65, 0xd1, 0x49, 0xaa, 0x57, 0x68, 0xe8, 0x46, 0xff, 0xfe, 0xc7, - 0xd9, 0xbb, 0x7a, 0xcb, 0xd9, 0xb5, 0xfc, 0x5b, 0xcb, 0x9f, 0x22, 0x46, 0x65, 0x9d, 0xfe, 0xa5, - 0xfa, 0xbf, 0x23, 0x0d, 0x26, 0x58, 0xe2, 0xbe, 0xed, 0xa4, 0xfd, 0xe7, 0x6f, 0x4f, 0x42, 0x5e, - 0xb3, 0x1c, 0xdd, 0x76, 0xd8, 0x06, 0x2b, 0x7b, 0x73, 0xbb, 0x4b, 0xfa, 0xb4, 0x61, 0x75, 0xbc, - 0x28, 0x24, 0x7e, 0x02, 0xfa, 0x03, 0xa1, 0xf9, 0x63, 0x7c, 0xcd, 0x93, 0x41, 0xfe, 0xc0, 0x10, - 0x6b, 0xd4, 0x57, 0xc2, 0x15, 0x6a, 0xb1, 0x51, 0x6e, 0xd2, 0xa0, 0x15, 0x7e, 0x7c, 0x8a, 0x36, - 0x7a, 0x8b, 0x1c, 0x5a, 0xbf, 0xbb, 0xcc, 0x8d, 0x11, 0x4c, 0x8a, 0xc1, 0x18, 0xe1, 0x27, 0xc4, - 0xec, 0x56, 0x73, 0x8b, 0xb0, 0xb2, 0xf8, 0x22, 0xec, 0xef, 0x0a, 0xef, 0x26, 0xf9, 0xa2, 0x1c, - 0xb0, 0x06, 0x18, 0x77, 0xd1, 0xd3, 0xbb, 0x84, 0x76, 0x86, 0x06, 0x95, 0x74, 0x88, 0xb0, 0xfd, - 0xf6, 0x04, 0x4c, 0x2c, 0x6b, 0x9d, 0x0e, 0xb6, 0x2e, 0xbb, 0x43, 0x52, 0xc1, 0xe3, 0x70, 0x4d, - 0x33, 0xf4, 0x4d, 0x6c, 0x3b, 0xf1, 0x9d, 0xe5, 0xdb, 0x84, 0x83, 0x08, 0xb3, 0x32, 0xe6, 0x7b, - 0xe9, 0x47, 0xc8, 0xfc, 0x16, 0xc8, 0xea, 0xc6, 0xa6, 0xc9, 0xba, 0xcc, 0xde, 0x55, 0x7b, 0xef, - 0x67, 0x32, 0x75, 0x21, 0x19, 0x05, 0xe3, 0x08, 0x0b, 0x72, 0x91, 0x7e, 0xcf, 0xf9, 0x7b, 0x59, - 0x98, 0xf5, 0x98, 0xa8, 0x18, 0x6d, 0xfc, 0x70, 0x78, 0x29, 0xe6, 0x17, 0xb2, 0xa2, 0xc7, 0xc1, - 0x7a, 0xeb, 0x43, 0x48, 0x45, 0x88, 0xb4, 0x01, 0xd0, 0xd2, 0x1c, 0xbc, 0x65, 0x5a, 0xba, 0xdf, - 0x1f, 0x3e, 0x2d, 0x09, 0xb5, 0x12, 0xfd, 0xfb, 0xb2, 0x1a, 0xa2, 0xa3, 0xdc, 0x0d, 0xd3, 0xd8, - 0x3f, 0x7f, 0xef, 0x2d, 0xd5, 0xc4, 0xe2, 0x15, 0xce, 0x8f, 0x3e, 0x2d, 0x74, 0xea, 0x4c, 0xa4, - 0x9a, 0xc9, 0x30, 0x6b, 0x0e, 0xd7, 0x86, 0x36, 0xaa, 0x6b, 0x45, 0xb5, 0xbe, 0x52, 0x5c, 0x5d, - 0xad, 0x54, 0x97, 0xfd, 0xc0, 0x2f, 0x0a, 0xcc, 0x2d, 0xd6, 0xce, 0x57, 0x43, 0x91, 0x79, 0xb2, - 0x68, 0x1d, 0x26, 0x3d, 0x79, 0xf5, 0xf3, 0xc5, 0x0c, 0xcb, 0x8c, 0xf9, 0x62, 0x86, 0x92, 0x5c, - 0xe3, 0x4c, 0x6f, 0xf9, 0x0e, 0x3a, 0xe4, 0x19, 0xfd, 0x89, 0x06, 0x39, 0xb2, 0xa6, 0x8e, 0xde, - 0x44, 0xb6, 0x01, 0xbb, 0x1d, 0xad, 0x85, 0xd1, 0x4e, 0x02, 0x6b, 0xdc, 0xbb, 0xd5, 0x42, 0xda, - 0x77, 0xab, 0x05, 0x79, 0x64, 0x56, 0xdf, 0xf1, 0x7e, 0xeb, 0xf8, 0x2a, 0xcd, 0xc2, 0x1f, 0xd0, - 0x8a, 0xdd, 0x5d, 0xa1, 0xcb, 0xff, 0x8c, 0xcd, 0x08, 0x95, 0x8c, 0xe6, 0x29, 0x99, 0x25, 0x2a, - 0xb6, 0x0f, 0x13, 0xc7, 0xd1, 0x18, 0x6e, 0x5e, 0xcf, 0x42, 0xae, 0xde, 0xed, 0xe8, 0x0e, 0xfa, - 0x55, 0x69, 0x24, 0x98, 0xd1, 0x9b, 0x48, 0xe4, 0x81, 0x37, 0x91, 0x04, 0xbb, 0xae, 0x59, 0x81, - 0x5d, 0xd7, 0x06, 0x7e, 0xd8, 0xe1, 0x77, 0x5d, 0xef, 0x60, 0xc1, 0xdb, 0xe8, 0x9e, 0xed, 0x13, - 0xfb, 0x88, 0x94, 0x54, 0xab, 0x4f, 0x54, 0xc0, 0xb3, 0xb7, 0xb1, 0xe0, 0x64, 0x00, 0xf9, 0x85, - 0x5a, 0xa3, 0x51, 0x5b, 0x2b, 0x1c, 0x21, 0x51, 0x6d, 0x6a, 0xeb, 0x34, 0x54, 0x4c, 0xa5, 0x5a, - 0x2d, 0xab, 0x05, 0x89, 0x84, 0x4b, 0xab, 0x34, 0x56, 0xcb, 0x05, 0x99, 0x0f, 0x4b, 0x1f, 0x6b, - 0x7e, 0xf3, 0x65, 0xa7, 0xa9, 0x5e, 0x62, 0x86, 0x78, 0x34, 0x3f, 0xe9, 0x2b, 0xd7, 0x2f, 0xc9, - 0x90, 0x5b, 0xc3, 0xd6, 0x16, 0x46, 0x3f, 0x96, 0x60, 0x93, 0x6f, 0x53, 0xb7, 0x6c, 0x1a, 0x5c, - 0x2e, 0xd8, 0xe4, 0x0b, 0xa7, 0x29, 0xd7, 0xc3, 0xac, 0x8d, 0x5b, 0xa6, 0xd1, 0xf6, 0x32, 0xd1, - 0xfe, 0x88, 0x4f, 0x44, 0x2f, 0x4d, 0x08, 0x19, 0x61, 0x74, 0x24, 0x3b, 0x75, 0x49, 0x80, 0xe9, - 0x57, 0x6a, 0xfa, 0xc0, 0x7c, 0x43, 0x76, 0x7f, 0xea, 0x5e, 0x46, 0x2f, 0x15, 0xde, 0x7d, 0xbd, - 0x19, 0xf2, 0x17, 0xbc, 0x28, 0xc5, 0x72, 0x64, 0x7f, 0xcc, 0xf2, 0x28, 0x0b, 0x70, 0xcc, 0xc6, - 0x1d, 0xdc, 0x72, 0x70, 0xdb, 0x6d, 0xba, 0xea, 0xc0, 0x4e, 0x61, 0x7f, 0x76, 0xf4, 0xe7, 0x61, - 0x00, 0xef, 0xe2, 0x01, 0xbc, 0xa1, 0x8f, 0x28, 0xdd, 0x0a, 0x45, 0xdb, 0xca, 0x6e, 0x35, 0xea, - 0x1d, 0xd3, 0x5f, 0x14, 0xf7, 0xde, 0xdd, 0x6f, 0xdb, 0xce, 0x4e, 0x87, 0x7c, 0x63, 0x07, 0x0c, - 0xbc, 0x77, 0x65, 0x1e, 0x26, 0x34, 0xe3, 0x32, 0xf9, 0x94, 0x8d, 0xa9, 0xb5, 0x97, 0x09, 0xbd, - 0xdc, 0x47, 0xfe, 0x5e, 0x0e, 0xf9, 0x27, 0x8b, 0xb1, 0x9b, 0x3e, 0xf0, 0x3f, 0x39, 0x01, 0xb9, - 0x75, 0xcd, 0x76, 0x30, 0xfa, 0xbf, 0x64, 0x51, 0xe4, 0x6f, 0x80, 0xb9, 0x4d, 0xb3, 0xb5, 0x6b, - 0xe3, 0x36, 0xdf, 0x28, 0x7b, 0x52, 0x47, 0x81, 0xb9, 0x72, 0x13, 0x14, 0xbc, 0x44, 0x46, 0xd6, - 0xdb, 0x86, 0xdf, 0x97, 0x4e, 0x82, 0x9c, 0xdb, 0xeb, 0x9a, 0xe5, 0xd4, 0x36, 0x49, 0x9a, 0x1f, - 0xe4, 0x3c, 0x9c, 0xc8, 0x41, 0x9f, 0x8f, 0x81, 0x7e, 0x22, 0x1a, 0xfa, 0x49, 0x01, 0xe8, 0x95, - 0x22, 0x4c, 0x6e, 0xea, 0x1d, 0x4c, 0x7e, 0x98, 0x22, 0x3f, 0xf4, 0x1b, 0x93, 0x88, 0xec, 0xfd, - 0x31, 0x69, 0x49, 0xef, 0x60, 0xd5, 0xff, 0xcd, 0x9b, 0xc8, 0x40, 0x30, 0x91, 0x59, 0xa5, 0xfe, - 0xb4, 0xae, 0xe1, 0x65, 0x68, 0x3b, 0xd8, 0x5b, 0x7c, 0x33, 0xd8, 0xe1, 0x96, 0xb6, 0xe6, 0x68, - 0x04, 0x8c, 0x19, 0x95, 0x3c, 0xf3, 0x7e, 0x21, 0x72, 0xaf, 0x5f, 0xc8, 0xf3, 0xe4, 0x64, 0x3d, - 0xa2, 0xc7, 0x6c, 0x44, 0x8b, 0xba, 0xe0, 0x01, 0x44, 0x2d, 0x45, 0xff, 0xdd, 0x05, 0xa6, 0xa5, - 0x59, 0xd8, 0x59, 0x0f, 0x7b, 0x62, 0xe4, 0x54, 0x3e, 0x91, 0xb8, 0xf2, 0xd9, 0x75, 0x6d, 0x87, - 0x06, 0x3a, 0x2f, 0xb9, 0xdf, 0x98, 0x8b, 0xd6, 0xbe, 0xf4, 0xa0, 0xff, 0xcd, 0x8d, 0xba, 0xff, - 0xed, 0x57, 0xc7, 0xf4, 0x9b, 0xe1, 0x2b, 0xb3, 0x20, 0x97, 0x76, 0x9d, 0xc7, 0x75, 0xf7, 0xfb, - 0x1d, 0x61, 0x3f, 0x17, 0xd6, 0x9f, 0xed, 0x3a, 0x87, 0xdb, 0xfb, 0x26, 0xd4, 0x12, 0x31, 0x7f, - 0x9a, 0xa8, 0xba, 0xa5, 0xaf, 0x23, 0xaf, 0x97, 0x7d, 0x07, 0xcb, 0x47, 0x32, 0x07, 0x37, 0xcd, - 0x11, 0xed, 0x9f, 0x42, 0x3d, 0x83, 0xff, 0xee, 0x75, 0x3c, 0x59, 0x2e, 0x56, 0x1f, 0xd9, 0x5e, - 0x27, 0xa2, 0x9c, 0x51, 0xe9, 0x0b, 0xfa, 0x35, 0x61, 0xb7, 0x73, 0x2a, 0xb6, 0x58, 0x57, 0xc2, - 0x64, 0x36, 0x95, 0xd8, 0x3d, 0xaf, 0x31, 0xc5, 0xa6, 0x0f, 0xd8, 0xd7, 0xc3, 0xae, 0x82, 0xc5, - 0x03, 0x23, 0x86, 0x5e, 0x21, 0xbc, 0x1d, 0x45, 0xab, 0x3d, 0x60, 0xbd, 0x30, 0x99, 0xbc, 0xc5, - 0x36, 0xab, 0x62, 0x0b, 0x4e, 0x5f, 0xe2, 0x5f, 0x93, 0x21, 0x4f, 0xb7, 0x20, 0xd1, 0x6b, 0x33, - 0x09, 0x2e, 0xc8, 0x77, 0x78, 0x17, 0x42, 0xff, 0x3d, 0xc9, 0x9a, 0x03, 0xe7, 0x6a, 0x98, 0x4d, - 0xe4, 0x6a, 0xc8, 0x9f, 0xe3, 0x14, 0x68, 0x47, 0xb4, 0x8e, 0x29, 0x4f, 0x27, 0x93, 0xb4, 0xb0, - 0xbe, 0x0c, 0xa5, 0x8f, 0xf7, 0x4f, 0xe7, 0x60, 0x86, 0x16, 0x7d, 0x5e, 0x6f, 0x6f, 0x61, 0x07, - 0xbd, 0x45, 0xfa, 0xee, 0x41, 0x5d, 0xa9, 0xc2, 0xcc, 0x25, 0xc2, 0x36, 0xbd, 0x91, 0x85, 0xad, - 0x5c, 0xdc, 0x14, 0xbb, 0xee, 0x41, 0xeb, 0xe9, 0xdd, 0xe1, 0xc2, 0xfd, 0xef, 0xca, 0x98, 0x2e, - 0xf8, 0x53, 0x07, 0xae, 0x3c, 0x31, 0xb2, 0xc2, 0x49, 0xca, 0x49, 0xc8, 0xef, 0xe9, 0xf8, 0x52, - 0xa5, 0xcd, 0xac, 0x5b, 0xf6, 0x86, 0xfe, 0x48, 0x78, 0xdf, 0x36, 0x0c, 0x37, 0xe3, 0x25, 0x5d, - 0x2d, 0x14, 0xdb, 0xbd, 0x1d, 0xc8, 0xd6, 0x18, 0xce, 0x14, 0xf3, 0xf7, 0xa8, 0x96, 0x12, 0x28, - 0x62, 0x94, 0xe1, 0xcc, 0x87, 0xf2, 0x88, 0x3d, 0xb1, 0x42, 0x05, 0x30, 0xe2, 0x2b, 0x56, 0xc5, - 0xe2, 0x4b, 0x0c, 0x28, 0x3a, 0x7d, 0xc9, 0xbf, 0x5a, 0x86, 0xa9, 0x3a, 0x76, 0x96, 0x74, 0xdc, - 0x69, 0xdb, 0xc8, 0x3a, 0xb8, 0x69, 0x74, 0x0b, 0xe4, 0x37, 0x09, 0xb1, 0x41, 0xe7, 0x16, 0x58, - 0x36, 0xf4, 0x4a, 0x49, 0x74, 0x47, 0x98, 0xad, 0xbe, 0x79, 0xdc, 0x8e, 0x04, 0x26, 0x31, 0x8f, - 0xde, 0xf8, 0x92, 0xc7, 0x10, 0xd8, 0x56, 0x86, 0x19, 0x76, 0xf1, 0x62, 0xb1, 0xa3, 0x6f, 0x19, - 0x68, 0x77, 0x04, 0x2d, 0x44, 0xb9, 0x15, 0x72, 0x9a, 0x4b, 0x8d, 0x6d, 0xbd, 0xa2, 0xbe, 0x9d, - 0x27, 0x29, 0x4f, 0xa5, 0x19, 0x13, 0x84, 0x91, 0x0c, 0x14, 0xdb, 0xe3, 0x79, 0x8c, 0x61, 0x24, - 0x07, 0x16, 0x9e, 0x3e, 0x62, 0x9f, 0x97, 0xe1, 0x38, 0x63, 0xe0, 0x1c, 0xb6, 0x1c, 0xbd, 0xa5, - 0x75, 0x28, 0x72, 0x2f, 0xcc, 0x8c, 0x02, 0xba, 0x15, 0x98, 0xdd, 0x0b, 0x93, 0x65, 0x10, 0x9e, - 0xed, 0x0b, 0x21, 0xc7, 0x80, 0xca, 0xff, 0x98, 0x20, 0x1c, 0x1f, 0x27, 0x55, 0x8e, 0xe6, 0x18, - 0xc3, 0xf1, 0x09, 0x33, 0x91, 0x3e, 0xc4, 0x2f, 0x61, 0xa1, 0x79, 0x82, 0xee, 0xf3, 0x33, 0xc2, - 0xd8, 0x6e, 0xc0, 0x34, 0xc1, 0x92, 0xfe, 0xc8, 0x96, 0x21, 0x62, 0x94, 0xd8, 0xef, 0x77, 0xd8, - 0x85, 0x61, 0xfe, 0xbf, 0x6a, 0x98, 0x0e, 0x3a, 0x0f, 0x10, 0x7c, 0x0a, 0x77, 0xd2, 0x99, 0xa8, - 0x4e, 0x5a, 0x12, 0xeb, 0xa4, 0x5f, 0x23, 0x1c, 0x2c, 0xa5, 0x3f, 0xdb, 0x07, 0x57, 0x0f, 0xb1, - 0x30, 0x19, 0x83, 0x4b, 0x4f, 0x5f, 0x2f, 0x5e, 0x9e, 0xed, 0xbd, 0x61, 0xff, 0xfd, 0x23, 0x99, - 0x4f, 0x85, 0xfb, 0x03, 0xb9, 0xa7, 0x3f, 0x38, 0x80, 0x25, 0x7d, 0x23, 0x1c, 0xa5, 0x45, 0x94, - 0x7c, 0xb6, 0x72, 0x34, 0x14, 0x44, 0x4f, 0x32, 0xfa, 0xc0, 0x10, 0x4a, 0x30, 0xe8, 0xfa, 0xff, - 0xb8, 0x4e, 0x2e, 0x99, 0xb1, 0x9b, 0x54, 0x41, 0xa2, 0x38, 0x1b, 0x83, 0x5b, 0x68, 0x96, 0x5a, - 0xbb, 0x1b, 0xe4, 0x4e, 0x37, 0xf4, 0x97, 0xd9, 0x51, 0x8c, 0x08, 0xf7, 0x41, 0x96, 0xb8, 0xb8, - 0xcb, 0x91, 0x4b, 0x1a, 0x41, 0x91, 0xc1, 0x85, 0x7b, 0xf8, 0x61, 0x67, 0xe5, 0x88, 0x4a, 0xfe, - 0x54, 0x6e, 0x82, 0xa3, 0x17, 0xb4, 0xd6, 0xc5, 0x2d, 0xcb, 0xdc, 0x25, 0xb7, 0x5f, 0x99, 0xec, - 0x1a, 0x2d, 0x72, 0x1d, 0x21, 0xff, 0x41, 0xb9, 0xdd, 0x33, 0x1d, 0x72, 0x83, 0x4c, 0x87, 0x95, - 0x23, 0xcc, 0x78, 0x50, 0x6e, 0xf3, 0x3b, 0x9d, 0x7c, 0x6c, 0xa7, 0xb3, 0x72, 0xc4, 0xeb, 0x76, - 0x94, 0x45, 0x98, 0x6c, 0xeb, 0x7b, 0x64, 0xab, 0x9a, 0xcc, 0xba, 0x06, 0x1d, 0x5d, 0x5e, 0xd4, - 0xf7, 0xe8, 0xc6, 0xf6, 0xca, 0x11, 0xd5, 0xff, 0x53, 0x59, 0x86, 0x29, 0xb2, 0x2d, 0x40, 0xc8, - 0x4c, 0x26, 0x3a, 0x96, 0xbc, 0x72, 0x44, 0x0d, 0xfe, 0x75, 0xad, 0x8f, 0x2c, 0x39, 0xfb, 0x71, - 0xaf, 0xb7, 0xdd, 0x9e, 0x49, 0xb4, 0xdd, 0xee, 0xca, 0x82, 0x6e, 0xb8, 0x9f, 0x84, 0x5c, 0x8b, - 0x48, 0x58, 0x62, 0x12, 0xa6, 0xaf, 0xca, 0x5d, 0x90, 0xdd, 0xd1, 0x2c, 0x6f, 0xf2, 0x7c, 0xc3, - 0x60, 0xba, 0x6b, 0x9a, 0x75, 0xd1, 0x45, 0xd0, 0xfd, 0x6b, 0x61, 0x02, 0x72, 0x44, 0x70, 0xfe, - 0x03, 0x7a, 0x7d, 0x96, 0x9a, 0x21, 0x25, 0xd3, 0x70, 0x87, 0xfd, 0x86, 0xe9, 0x1d, 0x90, 0xf9, - 0xa3, 0xcc, 0x68, 0x2c, 0xc8, 0xbe, 0x57, 0xd2, 0xcb, 0x91, 0x57, 0xd2, 0xf7, 0xdc, 0x8d, 0x9c, - 0xed, 0xbd, 0x1b, 0x39, 0x58, 0x3e, 0xc8, 0x0d, 0x76, 0x54, 0xf9, 0xf3, 0x21, 0x4c, 0x97, 0x5e, - 0x41, 0x44, 0xcf, 0xc0, 0x3b, 0xba, 0x11, 0xaa, 0xb3, 0xf7, 0x9a, 0xb0, 0x53, 0x4a, 0x6a, 0xd4, - 0x0c, 0x60, 0x2f, 0xfd, 0xbe, 0xe9, 0x77, 0xb2, 0x70, 0x8a, 0xde, 0xc0, 0xbd, 0x87, 0x1b, 0x26, - 0x7f, 0xdf, 0x24, 0xfa, 0xe8, 0x48, 0x94, 0xa6, 0xcf, 0x80, 0x23, 0xf7, 0x1d, 0x70, 0xf6, 0x1d, - 0x52, 0xce, 0x0e, 0x38, 0xa4, 0x9c, 0x4b, 0xb6, 0x72, 0xf8, 0xee, 0xb0, 0xfe, 0xac, 0xf3, 0xfa, - 0x73, 0x67, 0x04, 0x40, 0xfd, 0xe4, 0x32, 0x12, 0xfb, 0xe6, 0x4d, 0xbe, 0xa6, 0xd4, 0x39, 0x4d, - 0xb9, 0x77, 0x78, 0x46, 0xd2, 0xd7, 0x96, 0x3f, 0xcc, 0xc2, 0x15, 0x01, 0x33, 0x55, 0x7c, 0x89, - 0x29, 0xca, 0xa7, 0x46, 0xa2, 0x28, 0xc9, 0x63, 0x20, 0xa4, 0xad, 0x31, 0x7f, 0x2a, 0x7c, 0x76, - 0xa8, 0x17, 0x28, 0x5f, 0x36, 0x11, 0xca, 0x72, 0x12, 0xf2, 0xb4, 0x87, 0x61, 0xd0, 0xb0, 0xb7, - 0x84, 0xdd, 0x8d, 0xd8, 0x89, 0x23, 0x51, 0xde, 0xc6, 0xa0, 0x3f, 0x6c, 0x5d, 0xa3, 0xb1, 0x6b, - 0x19, 0x15, 0xc3, 0x31, 0xd1, 0x4f, 0x8c, 0x44, 0x71, 0x7c, 0x6f, 0x38, 0x79, 0x18, 0x6f, 0xb8, - 0xa1, 0x56, 0x39, 0xbc, 0x1a, 0x1c, 0xca, 0x2a, 0x47, 0x44, 0xe1, 0xe9, 0xe3, 0xf7, 0x46, 0x19, - 0x4e, 0xb2, 0xc9, 0xd6, 0x02, 0x6f, 0x21, 0xa2, 0x07, 0x47, 0x01, 0xe4, 0x71, 0xcf, 0x4c, 0x62, - 0xb7, 0x9c, 0x91, 0x17, 0xfe, 0xa4, 0x54, 0xec, 0xfd, 0x0e, 0xdc, 0x74, 0xb0, 0x87, 0xc3, 0x91, - 0x20, 0x25, 0x76, 0xad, 0x43, 0x02, 0x36, 0xd2, 0xc7, 0xec, 0xc5, 0x32, 0xe4, 0xe9, 0x39, 0x2d, - 0xb4, 0x91, 0x8a, 0xc3, 0x04, 0x1f, 0xe5, 0x59, 0x60, 0x47, 0x2e, 0xf1, 0x25, 0xf7, 0xe9, 0xed, - 0xc5, 0x1d, 0xd2, 0x2d, 0xf6, 0xdf, 0x90, 0x60, 0xba, 0x8e, 0x9d, 0x92, 0x66, 0x59, 0xba, 0xb6, - 0x35, 0x2a, 0x8f, 0x6f, 0x51, 0xef, 0x61, 0xf4, 0xcd, 0x8c, 0xe8, 0x79, 0x1a, 0x7f, 0x21, 0xdc, - 0x63, 0x35, 0x22, 0x96, 0xe0, 0xa3, 0x42, 0x67, 0x66, 0x06, 0x51, 0x1b, 0x83, 0xc7, 0xb6, 0x04, - 0x13, 0xde, 0x59, 0xbc, 0x5b, 0xb8, 0xf3, 0x99, 0xdb, 0xce, 0x8e, 0x77, 0x0c, 0x86, 0x3c, 0xef, - 0x3f, 0x03, 0x86, 0x5e, 0x96, 0xd0, 0x51, 0x3e, 0xfe, 0x20, 0x61, 0xb2, 0x36, 0x96, 0xc4, 0x1d, - 0xfe, 0xb0, 0x8e, 0x0e, 0xfe, 0xfe, 0x04, 0x5b, 0x8e, 0x5c, 0xd5, 0x1c, 0xfc, 0x30, 0xfa, 0x8c, - 0x0c, 0x13, 0x75, 0xec, 0xb8, 0xe3, 0x2d, 0x77, 0xb9, 0xe9, 0xb0, 0x1a, 0xae, 0x84, 0x56, 0x3c, - 0xa6, 0xd8, 0x1a, 0xc6, 0xfd, 0x30, 0xd5, 0xb5, 0xcc, 0x16, 0xb6, 0x6d, 0xb6, 0x7a, 0x11, 0x76, - 0x54, 0xeb, 0x37, 0xfa, 0x13, 0xd6, 0xe6, 0xd7, 0xbd, 0x7f, 0xd4, 0xe0, 0xf7, 0xa4, 0x66, 0x00, - 0xa5, 0xc4, 0x2a, 0x38, 0x6e, 0x33, 0x20, 0xae, 0xf0, 0xf4, 0x81, 0xfe, 0x84, 0x0c, 0x33, 0x75, - 0xec, 0xf8, 0x52, 0x4c, 0xb0, 0xc9, 0x11, 0x0d, 0x2f, 0x07, 0xa5, 0x7c, 0x30, 0x28, 0xc5, 0xaf, - 0x06, 0xe4, 0xa5, 0xe9, 0x13, 0x1b, 0xe3, 0xd5, 0x80, 0x62, 0x1c, 0x8c, 0xe1, 0xf8, 0xda, 0x13, - 0x61, 0x8a, 0xf0, 0x42, 0x1a, 0xec, 0xcf, 0x66, 0x83, 0xc6, 0xfb, 0xd9, 0x94, 0x1a, 0xef, 0xdd, - 0x90, 0xdb, 0xd1, 0xac, 0x8b, 0x36, 0x69, 0xb8, 0xd3, 0x22, 0x66, 0xfb, 0x9a, 0x9b, 0x5d, 0xa5, - 0x7f, 0xf5, 0xf7, 0xd3, 0xcc, 0x25, 0xf3, 0xd3, 0x7c, 0x54, 0x4a, 0x34, 0x12, 0xd2, 0xb9, 0xc3, - 0x08, 0x9b, 0x7c, 0x82, 0x71, 0x33, 0xa6, 0xec, 0xf4, 0x95, 0xe3, 0x85, 0x32, 0x4c, 0xba, 0xe3, - 0x36, 0xb1, 0xc7, 0xcf, 0x1f, 0x5c, 0x1d, 0xfa, 0x1b, 0xfa, 0x09, 0x7b, 0x60, 0x4f, 0x22, 0xa3, - 0x33, 0xef, 0x13, 0xf4, 0xc0, 0x71, 0x85, 0xa7, 0x8f, 0xc7, 0x9b, 0x29, 0x1e, 0xa4, 0x3d, 0xa0, - 0xdf, 0x92, 0x41, 0x5e, 0xc6, 0xce, 0xb8, 0xad, 0xc8, 0x37, 0x08, 0x87, 0x38, 0xe2, 0x04, 0x46, - 0x78, 0x9e, 0x5f, 0xc6, 0xa3, 0x69, 0x40, 0x62, 0xb1, 0x8d, 0x84, 0x18, 0x48, 0x1f, 0xb5, 0xb7, - 0x53, 0xd4, 0xe8, 0xe6, 0xc2, 0x8f, 0x8f, 0xa0, 0x57, 0x1d, 0xef, 0xc2, 0x87, 0x27, 0x40, 0x42, - 0xe3, 0xb0, 0xda, 0x5b, 0xbf, 0xc2, 0xc7, 0x72, 0x15, 0x1f, 0xb8, 0x8d, 0x7d, 0x1b, 0xb7, 0x2e, - 0xe2, 0x36, 0xfa, 0x91, 0x83, 0x43, 0x77, 0x0a, 0x26, 0x5a, 0x94, 0x1a, 0x01, 0x6f, 0x52, 0xf5, - 0x5e, 0x13, 0xdc, 0x2b, 0xcd, 0x77, 0x44, 0xf4, 0xf7, 0x31, 0xde, 0x2b, 0x2d, 0x50, 0xfc, 0x18, - 0xcc, 0x16, 0x3a, 0xcb, 0xa8, 0xb4, 0x4c, 0x03, 0xfd, 0x97, 0x83, 0xc3, 0x72, 0x0d, 0x4c, 0xe9, - 0x2d, 0xd3, 0x20, 0x61, 0x28, 0xbc, 0x43, 0x40, 0x7e, 0x82, 0xf7, 0xb5, 0xbc, 0x63, 0x3e, 0xa4, - 0xb3, 0x5d, 0xf3, 0x20, 0x61, 0x58, 0x63, 0xc2, 0x65, 0xfd, 0xb0, 0x8c, 0x89, 0x3e, 0x65, 0xa7, - 0x0f, 0xd9, 0x07, 0x02, 0xef, 0x36, 0xda, 0x15, 0x3e, 0x2e, 0x56, 0x81, 0x87, 0x19, 0xce, 0xc2, - 0xb5, 0x38, 0x94, 0xe1, 0x2c, 0x86, 0x81, 0x31, 0xdc, 0x58, 0x11, 0xe0, 0x98, 0xfa, 0x1a, 0xf0, - 0x01, 0xd0, 0x19, 0x9d, 0x79, 0x38, 0x24, 0x3a, 0x87, 0x63, 0x22, 0xbe, 0x8b, 0x85, 0xc8, 0x64, - 0x16, 0x0f, 0xfa, 0xaf, 0xa3, 0x00, 0xe7, 0xce, 0x61, 0xfc, 0x15, 0xa8, 0xb7, 0x42, 0x82, 0x1b, - 0xb1, 0xf7, 0x49, 0xd0, 0xa5, 0x32, 0xc6, 0xbb, 0xe2, 0x45, 0xca, 0x4f, 0x1f, 0xc0, 0x17, 0xc8, - 0x30, 0x47, 0x7c, 0x04, 0x3a, 0x58, 0xb3, 0x68, 0x47, 0x39, 0x12, 0x47, 0xf9, 0x37, 0x0b, 0x07, - 0xf8, 0xe1, 0xe5, 0x10, 0xf0, 0x31, 0x12, 0x28, 0xc4, 0xa2, 0xfb, 0x08, 0xb2, 0x30, 0x96, 0x6d, - 0x94, 0x82, 0xcf, 0x02, 0x53, 0xf1, 0xd1, 0xe0, 0x91, 0xd0, 0x23, 0x97, 0x17, 0x86, 0xd7, 0xd8, - 0xc6, 0xec, 0x91, 0x2b, 0xc2, 0x44, 0xfa, 0x98, 0xfc, 0xd6, 0xad, 0x6c, 0xc1, 0xb9, 0x41, 0x2e, - 0x8c, 0x7f, 0x45, 0xd6, 0x3f, 0xd1, 0xf6, 0x89, 0x91, 0x78, 0x60, 0x1e, 0x20, 0x20, 0xbe, 0x02, - 0x59, 0xcb, 0xbc, 0x44, 0x97, 0xb6, 0x66, 0x55, 0xf2, 0x4c, 0xaf, 0xa7, 0xec, 0xec, 0xee, 0x18, - 0xf4, 0x64, 0xe8, 0xac, 0xea, 0xbd, 0x2a, 0xd7, 0xc3, 0xec, 0x25, 0xdd, 0xd9, 0x5e, 0xc1, 0x5a, - 0x1b, 0x5b, 0xaa, 0x79, 0x89, 0x78, 0xcc, 0x4d, 0xaa, 0x7c, 0x22, 0xef, 0xbf, 0x22, 0x60, 0x5f, - 0x92, 0x5b, 0xe4, 0xc7, 0x72, 0xfc, 0x2d, 0x89, 0xe5, 0x19, 0xcd, 0x55, 0xfa, 0x0a, 0xf3, 0x0e, - 0x19, 0xa6, 0x54, 0xf3, 0x12, 0x53, 0x92, 0xff, 0xe3, 0x70, 0x75, 0x24, 0xf1, 0x44, 0x8f, 0x48, - 0xce, 0x67, 0x7f, 0xec, 0x13, 0xbd, 0xd8, 0xe2, 0xc7, 0x72, 0x72, 0x69, 0x46, 0x35, 0x2f, 0xd5, - 0xb1, 0x43, 0x5b, 0x04, 0x6a, 0x8e, 0xc8, 0xc9, 0x5a, 0xb7, 0x29, 0x41, 0x36, 0x0f, 0xf7, 0xdf, - 0x93, 0xee, 0x22, 0xf8, 0x02, 0xf2, 0x59, 0x1c, 0xf7, 0x2e, 0xc2, 0x40, 0x0e, 0xc6, 0x10, 0x23, - 0x45, 0x86, 0x69, 0xd5, 0xbc, 0xe4, 0x0e, 0x0d, 0x4b, 0x7a, 0xa7, 0x33, 0x9a, 0x11, 0x32, 0xa9, - 0xf1, 0xef, 0x89, 0xc1, 0xe3, 0x62, 0xec, 0xc6, 0xff, 0x00, 0x06, 0xd2, 0x87, 0xe1, 0x79, 0xb4, - 0xb1, 0x78, 0x23, 0xb4, 0x31, 0x1a, 0x1c, 0x86, 0x6d, 0x10, 0x3e, 0x1b, 0x87, 0xd6, 0x20, 0xa2, - 0x38, 0x18, 0xcb, 0xce, 0xc9, 0x5c, 0x89, 0x0c, 0xf3, 0xa3, 0x6d, 0x13, 0x6f, 0x4d, 0xe6, 0x9a, - 0xc8, 0x86, 0x5d, 0x8e, 0x91, 0x91, 0xa0, 0x91, 0xc0, 0x05, 0x51, 0x80, 0x87, 0xf4, 0xf1, 0x78, - 0xaf, 0x0c, 0x33, 0x94, 0x85, 0xc7, 0x89, 0x15, 0x30, 0x54, 0xa3, 0x0a, 0xd7, 0xe0, 0x70, 0x1a, - 0x55, 0x0c, 0x07, 0x63, 0xb9, 0x15, 0xd4, 0xb5, 0xe3, 0x86, 0x38, 0x3e, 0x1e, 0x85, 0xe0, 0xd0, - 0xc6, 0xd8, 0x08, 0x8f, 0x90, 0x0f, 0x63, 0x8c, 0x1d, 0xd2, 0x31, 0xf2, 0xe7, 0xf9, 0xad, 0x68, - 0x94, 0x18, 0x1c, 0xa0, 0x29, 0x8c, 0x10, 0x86, 0x21, 0x9b, 0xc2, 0x21, 0x21, 0xf1, 0x05, 0x19, - 0x80, 0x32, 0xb0, 0x66, 0xee, 0x91, 0xcb, 0x7c, 0x46, 0xd0, 0x9d, 0xf5, 0xba, 0xd5, 0xcb, 0x03, - 0xdc, 0xea, 0x13, 0x86, 0x70, 0x49, 0xba, 0x12, 0x18, 0x92, 0xb2, 0x5b, 0xc9, 0xb1, 0xaf, 0x04, - 0xc6, 0x97, 0x9f, 0x3e, 0xc6, 0x8f, 0x51, 0x6b, 0x2e, 0x38, 0x60, 0xfa, 0x2b, 0x23, 0x41, 0x39, - 0x34, 0xfb, 0x97, 0xf9, 0xd9, 0xff, 0x01, 0xb0, 0x1d, 0xd6, 0x46, 0x1c, 0x74, 0x70, 0x34, 0x7d, - 0x1b, 0xf1, 0xf0, 0x0e, 0x88, 0xfe, 0x78, 0x16, 0x8e, 0xb2, 0x4e, 0xe4, 0xbb, 0x01, 0xe2, 0x84, - 0xe7, 0xf0, 0xb8, 0x4e, 0x72, 0x00, 0xca, 0xa3, 0x5a, 0x90, 0x4a, 0xb2, 0x94, 0x29, 0xc0, 0xde, - 0x58, 0x56, 0x37, 0xf2, 0xe5, 0x87, 0xbb, 0x9a, 0xd1, 0x16, 0x0f, 0xf7, 0x3b, 0x00, 0x78, 0x6f, - 0xad, 0x51, 0xe6, 0xd7, 0x1a, 0xfb, 0xac, 0x4c, 0x26, 0xde, 0xb9, 0x26, 0x22, 0xa3, 0xec, 0x8e, - 0x7d, 0xe7, 0x3a, 0xba, 0xec, 0xf4, 0x51, 0x7a, 0xab, 0x0c, 0xd9, 0xba, 0x69, 0x39, 0xe8, 0xf9, - 0x49, 0x5a, 0x27, 0x95, 0x7c, 0x00, 0x92, 0xf7, 0xae, 0x94, 0xb8, 0x5b, 0x9a, 0x6f, 0x89, 0x3f, - 0xea, 0xac, 0x39, 0x1a, 0xf1, 0xea, 0x76, 0xcb, 0x0f, 0x5d, 0xd7, 0x9c, 0x34, 0x9e, 0x0e, 0x95, - 0x5f, 0x3d, 0xfa, 0x00, 0x46, 0x6a, 0xf1, 0x74, 0x22, 0x4b, 0x4e, 0x1f, 0xb7, 0x57, 0x1d, 0x65, - 0xbe, 0xad, 0x4b, 0x7a, 0x07, 0xa3, 0xe7, 0x53, 0x97, 0x91, 0xaa, 0xb6, 0x83, 0xc5, 0x8f, 0xc4, - 0xc4, 0xba, 0xb6, 0x92, 0xf8, 0xb2, 0x72, 0x10, 0x5f, 0x36, 0x69, 0x83, 0xa2, 0x07, 0xd0, 0x29, - 0x4b, 0xe3, 0x6e, 0x50, 0x31, 0x65, 0x8f, 0x25, 0x4e, 0xe7, 0xb1, 0x3a, 0x76, 0xa8, 0x51, 0x59, - 0xf3, 0x6e, 0x60, 0xf9, 0xd1, 0x91, 0x44, 0xec, 0xf4, 0x2f, 0x78, 0x91, 0x7b, 0x2e, 0x78, 0x79, - 0x47, 0x18, 0x9c, 0x35, 0x1e, 0x9c, 0x1f, 0x8c, 0x16, 0x10, 0xcf, 0xe4, 0x48, 0x60, 0x7a, 0x83, - 0x0f, 0xd3, 0x3a, 0x07, 0xd3, 0x5d, 0x43, 0x72, 0x91, 0x3e, 0x60, 0x3f, 0x97, 0x83, 0xa3, 0x74, - 0xd2, 0x5f, 0x34, 0xda, 0x2c, 0xc2, 0xea, 0x6b, 0xa5, 0x43, 0xde, 0x6c, 0xdb, 0x1f, 0x82, 0x95, - 0x8b, 0xe5, 0x9c, 0xeb, 0xbd, 0x1d, 0x7f, 0x81, 0x86, 0x73, 0x75, 0x3b, 0x51, 0xb2, 0xd3, 0x26, - 0x7e, 0x43, 0xbe, 0xff, 0x1f, 0x7f, 0x97, 0xd1, 0x84, 0xf8, 0x5d, 0x46, 0x7f, 0x96, 0x6c, 0xdd, - 0x8e, 0x14, 0xdd, 0x23, 0xf0, 0x94, 0x6d, 0xa7, 0x04, 0x2b, 0x7a, 0x02, 0xdc, 0x7d, 0x6f, 0xb8, - 0x93, 0x05, 0x11, 0x44, 0x86, 0x74, 0x27, 0x23, 0x04, 0x0e, 0xd3, 0x9d, 0x6c, 0x10, 0x03, 0x63, - 0xb8, 0xd5, 0x3e, 0xc7, 0x76, 0xf3, 0x49, 0xbb, 0x41, 0x7f, 0x2d, 0xa5, 0x3e, 0x4a, 0x7f, 0x2b, - 0x93, 0xc8, 0xff, 0x99, 0xf0, 0x15, 0x3f, 0x4c, 0x27, 0xf1, 0x68, 0x8e, 0x23, 0x37, 0x86, 0x75, - 0x23, 0x89, 0xf8, 0xa2, 0x9f, 0xd7, 0xdb, 0xce, 0xf6, 0x88, 0x4e, 0x74, 0x5c, 0x72, 0x69, 0x79, - 0xd7, 0x23, 0x93, 0x17, 0xf4, 0x6f, 0x99, 0x44, 0x21, 0xa4, 0x7c, 0x91, 0x10, 0xb6, 0x22, 0x44, - 0x9c, 0x20, 0xf0, 0x53, 0x2c, 0xbd, 0x31, 0x6a, 0xf4, 0x39, 0xbd, 0x8d, 0xcd, 0xc7, 0xa1, 0x46, - 0x13, 0xbe, 0x46, 0xa7, 0xd1, 0x71, 0xe4, 0xbe, 0x47, 0x35, 0xda, 0x17, 0xc9, 0x88, 0x34, 0x3a, - 0x96, 0x5e, 0xfa, 0x32, 0x7e, 0xd9, 0x0c, 0x9b, 0x48, 0xad, 0xea, 0xc6, 0x45, 0xf4, 0xcf, 0x79, - 0xef, 0x62, 0xe6, 0xf3, 0xba, 0xb3, 0xcd, 0x62, 0xc1, 0xfc, 0xa1, 0xf0, 0xdd, 0x28, 0x43, 0xc4, - 0x7b, 0xe1, 0xc3, 0x49, 0xe5, 0xf6, 0x85, 0x93, 0x2a, 0xc2, 0xac, 0x6e, 0x38, 0xd8, 0x32, 0xb4, - 0xce, 0x52, 0x47, 0xdb, 0xb2, 0x4f, 0x4d, 0xf4, 0xbd, 0xbc, 0xae, 0x12, 0xca, 0xa3, 0xf2, 0x7f, - 0x84, 0xaf, 0xaf, 0x9c, 0xe4, 0xaf, 0xaf, 0x8c, 0x88, 0x7e, 0x35, 0x15, 0x1d, 0xfd, 0xca, 0x8f, - 0x6e, 0x05, 0x83, 0x83, 0x63, 0x8b, 0xda, 0xc6, 0x09, 0xc3, 0xfd, 0xdd, 0x22, 0x18, 0x85, 0xcd, - 0x0f, 0xfd, 0xf8, 0x1b, 0x72, 0xa2, 0xd5, 0x3d, 0x57, 0x11, 0xe6, 0x7b, 0x95, 0x20, 0xb1, 0x85, - 0x1a, 0xae, 0xbc, 0xdc, 0x53, 0x79, 0xdf, 0xe4, 0xc9, 0x0a, 0x98, 0x3c, 0x61, 0xa5, 0xca, 0x89, - 0x29, 0x55, 0x92, 0xc5, 0x42, 0x91, 0xda, 0x8e, 0xe1, 0x34, 0x52, 0x0e, 0x8e, 0x79, 0xd1, 0x6e, - 0xbb, 0x5d, 0xac, 0x59, 0x9a, 0xd1, 0xc2, 0xe8, 0x03, 0xd2, 0x28, 0xcc, 0xde, 0x25, 0x98, 0xd4, - 0x5b, 0xa6, 0x51, 0xd7, 0x9f, 0xed, 0x5d, 0x2e, 0x17, 0x1f, 0x64, 0x9d, 0x48, 0xa4, 0xc2, 0xfe, - 0x50, 0xfd, 0x7f, 0x95, 0x0a, 0x4c, 0xb5, 0x34, 0xab, 0x4d, 0x83, 0xf0, 0xe5, 0x7a, 0x2e, 0x72, - 0x8a, 0x24, 0x54, 0xf2, 0x7e, 0x51, 0x83, 0xbf, 0x95, 0x1a, 0x2f, 0xc4, 0x7c, 0x4f, 0x34, 0x8f, - 0x48, 0x62, 0x8b, 0xc1, 0x4f, 0x9c, 0xcc, 0x5d, 0xe9, 0x58, 0xb8, 0x43, 0xee, 0xa0, 0xa7, 0x3d, - 0xc4, 0x94, 0x1a, 0x24, 0x24, 0x5d, 0x1e, 0x20, 0x45, 0xed, 0x43, 0x63, 0xdc, 0xcb, 0x03, 0x42, - 0x5c, 0xa4, 0xaf, 0x99, 0x6f, 0xca, 0xc3, 0x2c, 0xed, 0xd5, 0x98, 0x38, 0xd1, 0x0b, 0xc8, 0x15, - 0xd2, 0xce, 0x03, 0xf8, 0x32, 0xaa, 0x1f, 0x7c, 0x4c, 0x2e, 0x80, 0x7c, 0xd1, 0x0f, 0x38, 0xe8, - 0x3e, 0x26, 0xdd, 0xb7, 0xf7, 0xf8, 0x9a, 0xa7, 0x3c, 0x8d, 0x7b, 0xdf, 0x3e, 0xbe, 0xf8, 0xf4, - 0xf1, 0xf9, 0x79, 0x19, 0xe4, 0x62, 0xbb, 0x8d, 0x5a, 0x07, 0x87, 0xe2, 0x0c, 0x4c, 0x7b, 0x6d, - 0x26, 0x88, 0x01, 0x19, 0x4e, 0x4a, 0xba, 0x08, 0xea, 0xcb, 0xa6, 0xd8, 0x1e, 0xfb, 0xae, 0x42, - 0x4c, 0xd9, 0xe9, 0x83, 0xf2, 0x2b, 0x13, 0xac, 0xd1, 0x2c, 0x98, 0xe6, 0x45, 0x72, 0x54, 0xe6, - 0xf9, 0x32, 0xe4, 0x96, 0xb0, 0xd3, 0xda, 0x1e, 0x51, 0x9b, 0xd9, 0xb5, 0x3a, 0x5e, 0x9b, 0xd9, - 0x77, 0x1f, 0xfe, 0x60, 0x1b, 0xd6, 0x63, 0x6b, 0x9e, 0xb0, 0x34, 0xee, 0xe8, 0xce, 0xb1, 0xa5, - 0xa7, 0x0f, 0xce, 0xbf, 0xc9, 0x30, 0xe7, 0xaf, 0x70, 0x51, 0x4c, 0x7e, 0x2e, 0xf3, 0x78, 0x5b, - 0xef, 0x44, 0x9f, 0x4a, 0x16, 0x22, 0xcd, 0x97, 0x29, 0x5f, 0xb3, 0x94, 0x17, 0x16, 0x13, 0x04, - 0x4f, 0x13, 0x63, 0x70, 0x0c, 0x33, 0x78, 0x19, 0x26, 0x09, 0x43, 0x8b, 0xfa, 0x1e, 0x71, 0x1d, - 0xe4, 0x16, 0x1a, 0x9f, 0x33, 0x92, 0x85, 0xc6, 0xbb, 0xf8, 0x85, 0x46, 0xc1, 0x88, 0xc7, 0xde, - 0x3a, 0x63, 0x42, 0x5f, 0x1a, 0xf7, 0xff, 0x91, 0x2f, 0x33, 0x26, 0xf0, 0xa5, 0x19, 0x50, 0x7e, - 0xfa, 0x88, 0xfe, 0xc6, 0x7f, 0x62, 0x9d, 0xad, 0xb7, 0xa1, 0x8a, 0xfe, 0xe7, 0x31, 0xc8, 0x9e, - 0x73, 0x1f, 0xfe, 0x77, 0x70, 0x23, 0xd6, 0x4b, 0x47, 0x10, 0x9c, 0xe1, 0x1e, 0xc8, 0xba, 0xf4, - 0xd9, 0xb4, 0xe5, 0x26, 0xb1, 0xdd, 0x5d, 0x97, 0x11, 0x95, 0xfc, 0xa7, 0x9c, 0x84, 0xbc, 0x6d, - 0xee, 0x5a, 0x2d, 0xd7, 0x7c, 0x76, 0x35, 0x86, 0xbd, 0x25, 0x0d, 0x4a, 0xca, 0x91, 0x9e, 0x1f, - 0x9d, 0xcb, 0x68, 0xe8, 0x82, 0x24, 0x99, 0xbb, 0x20, 0x29, 0xc1, 0xfe, 0x81, 0x00, 0x6f, 0xe9, - 0x6b, 0xc4, 0x5f, 0x93, 0xbb, 0x02, 0xdb, 0xa3, 0x82, 0x3d, 0x42, 0x2c, 0x07, 0x55, 0x87, 0xa4, - 0x0e, 0xdf, 0xbc, 0x68, 0xfd, 0x38, 0xf0, 0x63, 0x75, 0xf8, 0x16, 0xe0, 0x61, 0x2c, 0xa7, 0xd4, - 0xf3, 0xcc, 0x49, 0xf5, 0xc1, 0x51, 0xa2, 0x9b, 0xe5, 0x94, 0xfe, 0x40, 0xe8, 0x8c, 0xd0, 0x79, - 0x75, 0x68, 0x74, 0x0e, 0xc9, 0x7d, 0xf5, 0x8f, 0x65, 0x12, 0x09, 0xd3, 0x33, 0x72, 0xc4, 0x2f, - 0x3a, 0x4a, 0x0c, 0x91, 0x3b, 0x06, 0x73, 0x71, 0xa0, 0x67, 0x87, 0x0f, 0x0d, 0xce, 0x8b, 0x2e, - 0xc4, 0xff, 0xb8, 0x43, 0x83, 0x8b, 0x32, 0x92, 0x3e, 0x90, 0xbf, 0x49, 0x2f, 0x16, 0x2b, 0xb6, - 0x1c, 0x7d, 0x6f, 0xc4, 0x2d, 0x8d, 0x1f, 0x5e, 0x12, 0x46, 0x03, 0xde, 0x27, 0x21, 0xca, 0xe1, - 0xb8, 0xa3, 0x01, 0x8b, 0xb1, 0x91, 0x3e, 0x4c, 0x5f, 0xce, 0xbb, 0xd2, 0x63, 0x6b, 0x33, 0xbf, - 0xc5, 0x56, 0x03, 0xf0, 0xc1, 0xd1, 0x3a, 0x0b, 0x33, 0xa1, 0xa9, 0xbf, 0x77, 0x61, 0x0d, 0x97, - 0x96, 0xf4, 0xa0, 0xbb, 0x2f, 0xb2, 0x91, 0x2f, 0x0c, 0x24, 0x58, 0xf0, 0x15, 0x61, 0x62, 0x2c, - 0xf7, 0xc1, 0x79, 0x63, 0xd8, 0x98, 0xb0, 0xfa, 0xc3, 0x30, 0x56, 0x35, 0x1e, 0xab, 0x3b, 0x44, - 0xc4, 0x24, 0x36, 0xa6, 0x09, 0xcd, 0x1b, 0xdf, 0xe8, 0xc3, 0xa5, 0x72, 0x70, 0xdd, 0x33, 0x34, - 0x1f, 0xe9, 0x23, 0xf6, 0xab, 0xb4, 0x3b, 0xac, 0x53, 0x93, 0x7d, 0x34, 0xdd, 0x21, 0x9b, 0x0d, - 0xc8, 0xdc, 0x6c, 0x20, 0xa1, 0xbf, 0x7d, 0xe0, 0x46, 0xea, 0x31, 0x37, 0x08, 0xa2, 0xec, 0x88, - 0xfd, 0xed, 0x07, 0x72, 0x90, 0x3e, 0x38, 0xff, 0x28, 0x03, 0x2c, 0x5b, 0xe6, 0x6e, 0xb7, 0x66, - 0xb5, 0xb1, 0x85, 0xfe, 0x36, 0x98, 0x00, 0xfc, 0xc2, 0x08, 0x26, 0x00, 0xeb, 0x00, 0x5b, 0x3e, - 0x71, 0xa6, 0xe1, 0xb7, 0x8a, 0x99, 0xfb, 0x01, 0x53, 0x6a, 0x88, 0x06, 0x7f, 0xe5, 0xec, 0x0f, - 0xf1, 0x18, 0xc7, 0xf5, 0x59, 0x01, 0xb9, 0x51, 0x4e, 0x00, 0xde, 0xec, 0x63, 0xdd, 0xe0, 0xb0, - 0xbe, 0xef, 0x00, 0x9c, 0xa4, 0x8f, 0xf9, 0x3f, 0x4d, 0xc0, 0x34, 0xdd, 0xae, 0xa3, 0x32, 0xfd, - 0xfb, 0x00, 0xf4, 0x5f, 0x19, 0x01, 0xe8, 0x1b, 0x30, 0x63, 0x06, 0xd4, 0x69, 0x9f, 0x1a, 0x5e, - 0x80, 0x89, 0x85, 0x3d, 0xc4, 0x97, 0xca, 0x91, 0x41, 0xef, 0x0b, 0x23, 0xaf, 0xf2, 0xc8, 0xdf, - 0x15, 0x23, 0xef, 0x10, 0xc5, 0x51, 0x42, 0xff, 0x16, 0x1f, 0xfa, 0x0d, 0x0e, 0xfa, 0xe2, 0x41, - 0x58, 0x19, 0x43, 0xb8, 0x7d, 0x19, 0xb2, 0xe4, 0x74, 0xdc, 0xef, 0xa4, 0x38, 0xbf, 0x3f, 0x05, - 0x13, 0xa4, 0xc9, 0xfa, 0xf3, 0x0e, 0xef, 0xd5, 0xfd, 0xa2, 0x6d, 0x3a, 0xd8, 0xf2, 0x3d, 0x16, - 0xbc, 0x57, 0x97, 0x07, 0xcf, 0x2b, 0xd9, 0x3e, 0x95, 0xa7, 0x1b, 0x91, 0x7e, 0xc2, 0xd0, 0x93, - 0x92, 0xb0, 0xc4, 0x47, 0x76, 0x5e, 0x6e, 0x98, 0x49, 0xc9, 0x00, 0x46, 0xd2, 0x07, 0xfe, 0x2f, - 0xb3, 0x70, 0x8a, 0xae, 0x2a, 0x2d, 0x59, 0xe6, 0x4e, 0xcf, 0xed, 0x56, 0xfa, 0xc1, 0x75, 0xe1, - 0x06, 0x98, 0x73, 0x38, 0x7f, 0x6c, 0xa6, 0x13, 0x3d, 0xa9, 0xe8, 0xcf, 0xc3, 0x3e, 0x15, 0xcf, - 0xe2, 0x91, 0x5c, 0x88, 0x11, 0x60, 0x14, 0xef, 0x89, 0x17, 0xea, 0x05, 0x19, 0x0d, 0x2d, 0x52, - 0xc9, 0x43, 0xad, 0x59, 0xfa, 0x3a, 0x95, 0x13, 0xd1, 0xa9, 0x77, 0xfa, 0x3a, 0xf5, 0x23, 0x9c, - 0x4e, 0x2d, 0x1f, 0x5c, 0x24, 0xe9, 0xeb, 0xd6, 0x2b, 0xfc, 0x8d, 0x21, 0x7f, 0xdb, 0x6e, 0x27, - 0x85, 0xcd, 0xba, 0xb0, 0x3f, 0x52, 0x96, 0xf3, 0x47, 0xe2, 0xef, 0xa3, 0x48, 0x30, 0x13, 0xe6, - 0xb9, 0x8e, 0xd0, 0xa5, 0x39, 0x90, 0x74, 0x8f, 0x3b, 0x49, 0x6f, 0x0f, 0x35, 0xd7, 0x8d, 0x2d, - 0x68, 0x0c, 0x6b, 0x4b, 0x73, 0x90, 0x5f, 0xd2, 0x3b, 0x0e, 0xb6, 0xd0, 0x63, 0x6c, 0xa6, 0xfb, - 0x8a, 0x14, 0x07, 0x80, 0x45, 0xc8, 0x6f, 0x92, 0xd2, 0x98, 0xc9, 0x7c, 0xb3, 0x58, 0xeb, 0xa1, - 0x1c, 0xaa, 0xec, 0xdf, 0xa4, 0xd1, 0xf9, 0x7a, 0xc8, 0x8c, 0x6c, 0x8a, 0x9c, 0x20, 0x3a, 0xdf, - 0x60, 0x16, 0xc6, 0x72, 0x31, 0x55, 0x5e, 0xc5, 0x3b, 0xee, 0x18, 0x7f, 0x31, 0x3d, 0x84, 0x0b, - 0x20, 0xeb, 0x6d, 0x9b, 0x74, 0x8e, 0x53, 0xaa, 0xfb, 0x98, 0xd4, 0x57, 0xa8, 0x57, 0x54, 0x94, - 0xe5, 0x71, 0xfb, 0x0a, 0x09, 0x71, 0x91, 0x3e, 0x66, 0xdf, 0x22, 0x8e, 0xa2, 0xdd, 0x8e, 0xd6, - 0xc2, 0x2e, 0xf7, 0xa9, 0xa1, 0x46, 0x7b, 0xb2, 0xac, 0xd7, 0x93, 0x85, 0xda, 0x69, 0xee, 0x00, - 0xed, 0x74, 0xd8, 0x65, 0x48, 0x5f, 0xe6, 0xa4, 0xe2, 0x87, 0xb6, 0x0c, 0x19, 0xcb, 0xc6, 0x18, - 0xae, 0x1d, 0xf5, 0x0e, 0xd2, 0x8e, 0xb5, 0xb5, 0x0e, 0xbb, 0x49, 0xc3, 0x84, 0x35, 0xb2, 0x43, - 0xb3, 0xc3, 0x6c, 0xd2, 0x44, 0xf3, 0x30, 0x06, 0xb4, 0xe6, 0x18, 0x5a, 0x9f, 0x64, 0xc3, 0x68, - 0xca, 0xfb, 0xa4, 0xb6, 0x69, 0x39, 0xc9, 0xf6, 0x49, 0x5d, 0xee, 0x54, 0xf2, 0x5f, 0xd2, 0x83, - 0x57, 0xfc, 0xb9, 0xea, 0x51, 0x0d, 0x9f, 0x09, 0x0e, 0x5e, 0x0d, 0x62, 0x20, 0x7d, 0x78, 0x5f, - 0x77, 0x48, 0x83, 0xe7, 0xb0, 0xcd, 0x91, 0xb5, 0x81, 0x91, 0x0d, 0x9d, 0xc3, 0x34, 0xc7, 0x68, - 0x1e, 0xd2, 0xc7, 0xeb, 0xeb, 0xa1, 0x81, 0xf3, 0x35, 0x63, 0x1c, 0x38, 0xbd, 0x96, 0x99, 0x1b, - 0xb2, 0x65, 0x0e, 0xbb, 0xff, 0xc3, 0x64, 0x3d, 0xba, 0x01, 0x73, 0x98, 0xfd, 0x9f, 0x18, 0x26, - 0xd2, 0x47, 0xfc, 0xb5, 0x32, 0xe4, 0xea, 0xe3, 0x1f, 0x2f, 0x87, 0x9d, 0x8b, 0x10, 0x59, 0xd5, - 0x47, 0x36, 0x5c, 0x0e, 0x33, 0x17, 0x89, 0x64, 0x61, 0x0c, 0x81, 0xf7, 0x8f, 0xc2, 0x0c, 0x59, - 0x12, 0xf1, 0xb6, 0x59, 0xbf, 0xce, 0x46, 0xcd, 0x47, 0x53, 0x6c, 0xab, 0xf7, 0xc3, 0xa4, 0xb7, - 0x7f, 0xc7, 0x46, 0xce, 0x79, 0xb1, 0xf6, 0xe9, 0x71, 0xa9, 0xfa, 0xff, 0x1f, 0xc8, 0x19, 0x62, - 0xe4, 0x7b, 0xb5, 0xc3, 0x3a, 0x43, 0x1c, 0xea, 0x7e, 0xed, 0x9f, 0x05, 0x23, 0xea, 0x7f, 0x49, - 0x0f, 0xf3, 0xde, 0x7d, 0xdc, 0x6c, 0x9f, 0x7d, 0xdc, 0x0f, 0x84, 0xb1, 0xac, 0xf3, 0x58, 0xde, - 0x2d, 0x2a, 0xc2, 0x11, 0x8e, 0xb5, 0x6f, 0xf5, 0xe1, 0x3c, 0xc7, 0xc1, 0xb9, 0x70, 0x20, 0x5e, - 0xc6, 0x70, 0xf0, 0x31, 0x1b, 0x8c, 0xb9, 0x1f, 0x4c, 0xb1, 0x1d, 0xf7, 0x9c, 0xaa, 0xc8, 0xee, - 0x3b, 0x55, 0xc1, 0xb5, 0xf4, 0xdc, 0x01, 0x5b, 0xfa, 0x07, 0xc3, 0xda, 0xd1, 0xe0, 0xb5, 0xe3, - 0x1e, 0x71, 0x44, 0x46, 0x37, 0x32, 0xbf, 0xcd, 0x57, 0x8f, 0xf3, 0x9c, 0x7a, 0x94, 0x0e, 0xc6, - 0x4c, 0xfa, 0xfa, 0xf1, 0x61, 0x6f, 0x42, 0x7b, 0xc8, 0xed, 0x7d, 0xd8, 0xad, 0x62, 0x4e, 0x88, - 0x23, 0x1b, 0xb9, 0x87, 0xd9, 0x2a, 0x1e, 0xc4, 0xc9, 0x18, 0x62, 0xb1, 0xcd, 0xc2, 0x34, 0xe1, - 0xe9, 0xbc, 0xde, 0xde, 0xc2, 0x0e, 0xfa, 0x0d, 0xea, 0xa3, 0xe8, 0x45, 0xbe, 0x1c, 0x51, 0x78, - 0xa2, 0xa8, 0xf3, 0xae, 0x49, 0x3d, 0x3a, 0x28, 0x93, 0xf3, 0x21, 0x06, 0xc7, 0x1d, 0x41, 0x71, - 0x20, 0x07, 0xe9, 0x43, 0xf6, 0x3e, 0xea, 0x6e, 0xb3, 0xaa, 0x5d, 0x36, 0x77, 0x1d, 0xf4, 0xc8, - 0x08, 0x3a, 0xe8, 0x05, 0xc8, 0x77, 0x08, 0x35, 0x76, 0x2c, 0x23, 0x7e, 0xba, 0xc3, 0x44, 0x40, - 0xcb, 0x57, 0xd9, 0x9f, 0x49, 0xcf, 0x66, 0x04, 0x72, 0xa4, 0x74, 0xc6, 0x7d, 0x36, 0x63, 0x40, - 0xf9, 0x63, 0xb9, 0x63, 0x67, 0xd2, 0x2d, 0x5d, 0xdf, 0xd1, 0x9d, 0x11, 0x45, 0x70, 0xe8, 0xb8, - 0xb4, 0xbc, 0x08, 0x0e, 0xe4, 0x25, 0xe9, 0x89, 0xd1, 0x90, 0x54, 0xdc, 0xdf, 0xc7, 0x7d, 0x62, - 0x34, 0xbe, 0xf8, 0xf4, 0x31, 0xf9, 0x25, 0xda, 0xb2, 0xce, 0x51, 0xe7, 0xdb, 0x14, 0xfd, 0x7a, - 0x87, 0x6e, 0x2c, 0x94, 0xb5, 0xc3, 0x6b, 0x2c, 0x7d, 0xcb, 0x4f, 0x1f, 0x98, 0xff, 0xfe, 0xfd, - 0x90, 0x5b, 0xc4, 0x17, 0x76, 0xb7, 0xd0, 0x5d, 0x30, 0xd9, 0xb0, 0x30, 0xae, 0x18, 0x9b, 0xa6, - 0x2b, 0x5d, 0xc7, 0x7d, 0xf6, 0x20, 0x61, 0x6f, 0x2e, 0x1e, 0xdb, 0x58, 0x6b, 0x07, 0xe7, 0xcf, - 0xbc, 0x57, 0xf4, 0x52, 0x09, 0xb2, 0x75, 0x47, 0x73, 0xd0, 0x94, 0x8f, 0x2d, 0x7a, 0x24, 0x8c, - 0xc5, 0x5d, 0x3c, 0x16, 0x37, 0x70, 0xb2, 0x20, 0x1c, 0xcc, 0xbb, 0xff, 0x47, 0x00, 0x80, 0x60, - 0xf2, 0x21, 0xdb, 0x34, 0xdc, 0x1c, 0xde, 0x11, 0x48, 0xef, 0x1d, 0xbd, 0xdc, 0x17, 0xf7, 0xbd, - 0x9c, 0xb8, 0x9f, 0x2c, 0x56, 0xc4, 0x18, 0x56, 0xda, 0x24, 0x98, 0x72, 0x45, 0xbb, 0x82, 0xb5, - 0xb6, 0x8d, 0xbe, 0x2f, 0x50, 0xfe, 0x08, 0x31, 0xa3, 0x77, 0x09, 0x07, 0xe3, 0xa4, 0xb5, 0xf2, - 0x89, 0x47, 0x7b, 0x74, 0x78, 0x9b, 0xff, 0x12, 0x1f, 0x8c, 0xe4, 0x16, 0xc8, 0xea, 0xc6, 0xa6, - 0xc9, 0xfc, 0x0b, 0xaf, 0x8e, 0xa0, 0xed, 0xea, 0x84, 0x4a, 0x32, 0x0a, 0x46, 0xea, 0x8c, 0x67, - 0x6b, 0x2c, 0x97, 0xde, 0x65, 0xdd, 0xd2, 0xd1, 0xff, 0x7f, 0xa0, 0xb0, 0x15, 0x05, 0xb2, 0x5d, - 0xcd, 0xd9, 0x66, 0x45, 0x93, 0x67, 0xd7, 0x46, 0xde, 0x35, 0x34, 0xc3, 0x34, 0x2e, 0xef, 0xe8, - 0xcf, 0xf6, 0xef, 0xd6, 0xe5, 0xd2, 0x5c, 0xce, 0xb7, 0xb0, 0x81, 0x2d, 0xcd, 0xc1, 0xf5, 0xbd, - 0x2d, 0x32, 0xc7, 0x9a, 0x54, 0xc3, 0x49, 0x89, 0xf5, 0xdf, 0xe5, 0x38, 0x5a, 0xff, 0x37, 0xf5, - 0x0e, 0x26, 0x91, 0x9a, 0x98, 0xfe, 0x7b, 0xef, 0x89, 0xf4, 0xbf, 0x4f, 0x11, 0xe9, 0xa3, 0xf1, - 0x6d, 0x09, 0x66, 0xea, 0xae, 0xc2, 0xd5, 0x77, 0x77, 0x76, 0x34, 0xeb, 0x32, 0xba, 0x2e, 0x40, - 0x25, 0xa4, 0x9a, 0x19, 0xde, 0x2f, 0xe5, 0x8f, 0x85, 0xaf, 0x95, 0x66, 0x4d, 0x3b, 0x54, 0x42, - 0xe2, 0x76, 0x70, 0x1b, 0xe4, 0x5c, 0xf5, 0xf6, 0x3c, 0x2e, 0x63, 0x1b, 0x02, 0xcd, 0x29, 0x18, - 0xd1, 0x6a, 0x20, 0x6f, 0x63, 0x88, 0xa6, 0x21, 0xc1, 0xd1, 0xba, 0xa3, 0xb5, 0x2e, 0x2e, 0x9b, - 0x96, 0xb9, 0xeb, 0xe8, 0x06, 0xb6, 0xd1, 0x13, 0x02, 0x04, 0x3c, 0xfd, 0xcf, 0x04, 0xfa, 0x8f, - 0xfe, 0x3d, 0x23, 0x3a, 0x8a, 0xfa, 0xdd, 0x6a, 0x98, 0x7c, 0x44, 0x80, 0x2a, 0xb1, 0x71, 0x51, - 0x84, 0x62, 0xfa, 0x42, 0x7b, 0x8d, 0x0c, 0x85, 0xf2, 0xc3, 0x5d, 0xd3, 0x72, 0x56, 0xcd, 0x96, - 0xd6, 0xb1, 0x1d, 0xd3, 0xc2, 0xa8, 0x16, 0x2b, 0x35, 0xb7, 0x87, 0x69, 0x9b, 0xad, 0x60, 0x70, - 0x64, 0x6f, 0x61, 0xb5, 0x93, 0x79, 0x1d, 0x7f, 0x9f, 0xf0, 0x2e, 0x23, 0x95, 0x4a, 0x2f, 0x47, - 0x11, 0x7a, 0xde, 0xaf, 0x4b, 0x4b, 0x76, 0x58, 0x42, 0x6c, 0xe7, 0x51, 0x88, 0xa9, 0x31, 0x2c, - 0x95, 0x4b, 0x30, 0x5b, 0xdf, 0xbd, 0xe0, 0x13, 0xb1, 0xc3, 0x46, 0xc8, 0x2b, 0x85, 0xa3, 0x54, - 0x30, 0xc5, 0x0b, 0x13, 0x8a, 0x90, 0xef, 0xf5, 0x30, 0x6b, 0x87, 0xb3, 0x31, 0xbc, 0xf9, 0x44, - 0xc1, 0xe8, 0x14, 0x83, 0x4b, 0x4d, 0x5f, 0x80, 0x6f, 0x93, 0x60, 0xb6, 0xd6, 0xc5, 0x06, 0x6e, - 0x53, 0x2f, 0x48, 0x4e, 0x80, 0x2f, 0x4d, 0x28, 0x40, 0x8e, 0x50, 0x84, 0x00, 0x03, 0x8f, 0xe5, - 0x45, 0x4f, 0x78, 0x41, 0x42, 0x22, 0xc1, 0xc5, 0x95, 0x96, 0xbe, 0xe0, 0x3e, 0x27, 0xc1, 0xb4, - 0xba, 0x6b, 0xac, 0x5b, 0xa6, 0x3b, 0x1a, 0x5b, 0xe8, 0xee, 0xa0, 0x83, 0xb8, 0x19, 0x8e, 0xb5, - 0x77, 0x2d, 0xb2, 0xfe, 0x54, 0x31, 0xea, 0xb8, 0x65, 0x1a, 0x6d, 0x9b, 0xd4, 0x23, 0xa7, 0xee, - 0xff, 0x70, 0x67, 0xf6, 0xf9, 0x5f, 0x91, 0x33, 0xe8, 0x05, 0xc2, 0xa1, 0x6e, 0x68, 0xe5, 0x43, - 0x45, 0x8b, 0xf7, 0x04, 0x82, 0x01, 0x6d, 0x06, 0x95, 0x90, 0xbe, 0x70, 0x3f, 0x29, 0x81, 0x52, - 0x6c, 0xb5, 0xcc, 0x5d, 0xc3, 0xa9, 0xe3, 0x0e, 0x6e, 0x39, 0x0d, 0x4b, 0x6b, 0xe1, 0xb0, 0xfd, - 0x5c, 0x00, 0xb9, 0xad, 0x5b, 0xac, 0x0f, 0x76, 0x1f, 0x99, 0x1c, 0x5f, 0x2a, 0xbc, 0xe3, 0x48, - 0x6b, 0xb9, 0xbf, 0x94, 0x04, 0xe2, 0x14, 0xdb, 0x57, 0x14, 0x2c, 0x28, 0x7d, 0xa9, 0x7e, 0x50, - 0x82, 0x29, 0xaf, 0xc7, 0xde, 0x12, 0x11, 0xe6, 0x2f, 0x25, 0x9c, 0x8c, 0xf8, 0xc4, 0x13, 0xc8, - 0xf0, 0x4d, 0x09, 0x66, 0x15, 0x51, 0xf4, 0x93, 0x89, 0xae, 0x98, 0x5c, 0x74, 0xee, 0x6b, 0xb5, - 0xd6, 0x5c, 0xaa, 0xad, 0x2e, 0x96, 0xd5, 0x82, 0x8c, 0x1e, 0x93, 0x20, 0xbb, 0xae, 0x1b, 0x5b, - 0xe1, 0xe8, 0x4a, 0xc7, 0x5d, 0x3b, 0xb2, 0x8d, 0x1f, 0x66, 0x2d, 0x9d, 0xbe, 0x28, 0xb7, 0xc3, - 0x71, 0x63, 0x77, 0xe7, 0x02, 0xb6, 0x6a, 0x9b, 0x64, 0x94, 0xb5, 0x1b, 0x66, 0x1d, 0x1b, 0xd4, - 0x08, 0xcd, 0xa9, 0x7d, 0xbf, 0xf1, 0x26, 0x98, 0xc0, 0xe4, 0xc1, 0xe5, 0x24, 0x42, 0xe2, 0x3e, - 0x53, 0x52, 0x88, 0xa9, 0x44, 0xd3, 0x86, 0x3e, 0xc4, 0xd3, 0xd7, 0xd4, 0x3f, 0xc9, 0xc1, 0x89, - 0xa2, 0x71, 0x99, 0xd8, 0x14, 0xb4, 0x83, 0x2f, 0x6d, 0x6b, 0xc6, 0x16, 0x26, 0x03, 0x84, 0x2f, - 0xf1, 0x70, 0x88, 0xfe, 0x0c, 0x1f, 0xa2, 0x5f, 0x51, 0x61, 0xc2, 0xb4, 0xda, 0xd8, 0x5a, 0xb8, - 0x4c, 0x78, 0xea, 0x5d, 0x76, 0x66, 0x6d, 0xb2, 0x5f, 0x11, 0xf3, 0x8c, 0xfc, 0x7c, 0x8d, 0xfe, - 0xaf, 0x7a, 0x84, 0xce, 0xde, 0x0c, 0x13, 0x2c, 0x4d, 0x99, 0x81, 0xc9, 0x9a, 0xba, 0x58, 0x56, - 0x9b, 0x95, 0xc5, 0xc2, 0x11, 0xe5, 0x0a, 0x38, 0x5a, 0x69, 0x94, 0xd5, 0x62, 0xa3, 0x52, 0xab, - 0x36, 0x49, 0x7a, 0x21, 0x83, 0x9e, 0x97, 0x15, 0xf5, 0xec, 0x8d, 0x67, 0xa6, 0x1f, 0xac, 0x2a, - 0x4c, 0xb4, 0x68, 0x06, 0x32, 0x84, 0x4e, 0x27, 0xaa, 0x1d, 0x23, 0x48, 0x13, 0x54, 0x8f, 0x90, - 0x72, 0x1a, 0xe0, 0x92, 0x65, 0x1a, 0x5b, 0xc1, 0xa9, 0xc3, 0x49, 0x35, 0x94, 0x82, 0x1e, 0xc9, - 0x40, 0x9e, 0xfe, 0x43, 0xae, 0x24, 0x21, 0x4f, 0x81, 0xe0, 0xbd, 0x77, 0xd7, 0xe2, 0x25, 0xf2, - 0x0a, 0x26, 0x5a, 0xec, 0xd5, 0xd5, 0x45, 0x2a, 0x03, 0x6a, 0x09, 0xb3, 0xaa, 0xdc, 0x02, 0x79, - 0xfa, 0x2f, 0xf3, 0x3a, 0x88, 0x0e, 0x2f, 0x4a, 0xb3, 0x09, 0xfa, 0x29, 0x8b, 0xcb, 0x34, 0x7d, - 0x6d, 0x7e, 0xb7, 0x04, 0x93, 0x55, 0xec, 0x94, 0xb6, 0x71, 0xeb, 0x22, 0x7a, 0x12, 0xbf, 0x00, - 0xda, 0xd1, 0xb1, 0xe1, 0x3c, 0xb8, 0xd3, 0xf1, 0x17, 0x40, 0xbd, 0x04, 0xf4, 0xd3, 0xe1, 0xce, - 0xf7, 0x3e, 0x5e, 0x7f, 0x6e, 0xea, 0x53, 0x57, 0xaf, 0x84, 0x08, 0x95, 0x39, 0x09, 0x79, 0x0b, - 0xdb, 0xbb, 0x1d, 0x6f, 0x11, 0x8d, 0xbd, 0xa1, 0x57, 0xf9, 0xe2, 0x2c, 0x71, 0xe2, 0xbc, 0x45, - 0xbc, 0x88, 0x31, 0xc4, 0x2b, 0xcd, 0xc2, 0x44, 0xc5, 0xd0, 0x1d, 0x5d, 0xeb, 0xa0, 0x17, 0x64, - 0x61, 0xb6, 0x8e, 0x9d, 0x75, 0xcd, 0xd2, 0x76, 0xb0, 0x83, 0x2d, 0x1b, 0x7d, 0x93, 0xef, 0x13, - 0xba, 0x1d, 0xcd, 0xd9, 0x34, 0xad, 0x1d, 0x4f, 0x35, 0xbd, 0x77, 0x57, 0x35, 0xf7, 0xb0, 0x65, - 0x07, 0x7c, 0x79, 0xaf, 0xee, 0x97, 0x4b, 0xa6, 0x75, 0xd1, 0x1d, 0x04, 0xd9, 0x34, 0x8d, 0xbd, - 0xba, 0xf4, 0x3a, 0xe6, 0xd6, 0x2a, 0xde, 0xc3, 0x5e, 0xb8, 0x34, 0xff, 0xdd, 0x9d, 0x0b, 0xb4, - 0xcd, 0xaa, 0xe9, 0xb8, 0x9d, 0xf6, 0xaa, 0xb9, 0x45, 0xe3, 0xc5, 0x4e, 0xaa, 0x7c, 0x62, 0x90, - 0x4b, 0xdb, 0xc3, 0x24, 0x57, 0x3e, 0x9c, 0x8b, 0x25, 0x2a, 0xf3, 0xa0, 0xf8, 0xbf, 0x35, 0x70, - 0x07, 0xef, 0x60, 0xc7, 0xba, 0x4c, 0xae, 0x85, 0x98, 0x54, 0xfb, 0x7c, 0x61, 0x03, 0xb4, 0xf8, - 0x64, 0x9d, 0x49, 0x6f, 0x9e, 0x93, 0xdc, 0x81, 0x26, 0xeb, 0x22, 0x14, 0xc7, 0x72, 0xed, 0x95, - 0xec, 0x5a, 0x33, 0xbf, 0x26, 0x43, 0x96, 0x0c, 0x9e, 0xaf, 0xcd, 0x70, 0x2b, 0x4c, 0x3b, 0xd8, - 0xb6, 0xb5, 0x2d, 0xec, 0xad, 0x30, 0xb1, 0x57, 0xe5, 0x0e, 0xc8, 0x75, 0x08, 0xa6, 0x74, 0x70, - 0xb8, 0x8e, 0xab, 0x99, 0x6b, 0x60, 0xb8, 0xb4, 0xfc, 0x91, 0x80, 0xc0, 0xad, 0xd2, 0x3f, 0xce, - 0xde, 0x0f, 0x39, 0x0a, 0xff, 0x14, 0xe4, 0x16, 0xcb, 0x0b, 0x1b, 0xcb, 0x85, 0x23, 0xee, 0xa3, - 0xc7, 0xdf, 0x14, 0xe4, 0x96, 0x8a, 0x8d, 0xe2, 0x6a, 0x41, 0x72, 0xeb, 0x51, 0xa9, 0x2e, 0xd5, - 0x0a, 0xb2, 0x9b, 0xb8, 0x5e, 0xac, 0x56, 0x4a, 0x85, 0xac, 0x32, 0x0d, 0x13, 0xe7, 0x8b, 0x6a, - 0xb5, 0x52, 0x5d, 0x2e, 0xe4, 0xd0, 0x97, 0xc3, 0xf8, 0xdd, 0xc9, 0xe3, 0x77, 0x7d, 0x14, 0x4f, - 0xfd, 0x20, 0xfb, 0x75, 0x1f, 0xb2, 0xbb, 0x39, 0xc8, 0xbe, 0x5f, 0x84, 0xc8, 0x18, 0xdc, 0x99, - 0xf2, 0x30, 0xb1, 0x6e, 0x99, 0x2d, 0x6c, 0xdb, 0xe8, 0x97, 0x25, 0xc8, 0x97, 0x34, 0xa3, 0x85, - 0x3b, 0xe8, 0xaa, 0x00, 0x2a, 0xea, 0x2a, 0x9a, 0xf1, 0x4f, 0x8b, 0xfd, 0x63, 0x46, 0xb4, 0xf7, - 0x63, 0x74, 0xe7, 0x29, 0xcd, 0x08, 0xf9, 0x88, 0xf5, 0x72, 0xb1, 0xa4, 0xc6, 0x70, 0x35, 0x8e, - 0x04, 0x53, 0x6c, 0x35, 0xe0, 0x02, 0x0e, 0xcf, 0xc3, 0xbf, 0x99, 0x11, 0x9d, 0x1c, 0x7a, 0x35, - 0xf0, 0xc9, 0x44, 0xc8, 0x43, 0x6c, 0x22, 0x38, 0x88, 0xda, 0x18, 0x36, 0x0f, 0x25, 0x98, 0xde, - 0x30, 0xec, 0x7e, 0x42, 0x11, 0x8f, 0xa3, 0xef, 0x55, 0x23, 0x44, 0xe8, 0x40, 0x71, 0xf4, 0x07, - 0xd3, 0x4b, 0x5f, 0x30, 0xdf, 0xcc, 0xc0, 0xf1, 0x65, 0x6c, 0x60, 0x4b, 0x6f, 0xd1, 0x1a, 0x78, - 0x92, 0xb8, 0x9b, 0x97, 0xc4, 0x93, 0x38, 0xce, 0xfb, 0xfd, 0xc1, 0x4b, 0xe0, 0x15, 0xbe, 0x04, - 0xee, 0xe3, 0x24, 0x70, 0xb3, 0x20, 0x9d, 0x31, 0xdc, 0x87, 0x3e, 0x05, 0x33, 0x55, 0xd3, 0xd1, - 0x37, 0xf5, 0x16, 0xf5, 0x41, 0xfb, 0x55, 0x19, 0xb2, 0xab, 0xba, 0xed, 0xa0, 0x62, 0xd0, 0x9d, - 0x9c, 0x81, 0x69, 0xdd, 0x68, 0x75, 0x76, 0xdb, 0x58, 0xc5, 0x1a, 0xed, 0x57, 0x26, 0xd5, 0x70, - 0x52, 0xb0, 0xb5, 0xef, 0xb2, 0x25, 0x7b, 0x5b, 0xfb, 0x1f, 0x13, 0x5e, 0x86, 0x09, 0xb3, 0x40, - 0x02, 0x52, 0x46, 0xd8, 0x5d, 0x45, 0x98, 0x35, 0x42, 0x59, 0x3d, 0x83, 0xbd, 0xf7, 0x42, 0x81, - 0x30, 0x39, 0x95, 0xff, 0x03, 0xbd, 0x43, 0xa8, 0xb1, 0x0e, 0x62, 0x28, 0x19, 0x32, 0x4b, 0x43, - 0x4c, 0x92, 0x15, 0x98, 0xab, 0x54, 0x1b, 0x65, 0xb5, 0x5a, 0x5c, 0x65, 0x59, 0x64, 0xf4, 0x6d, - 0x09, 0x72, 0x2a, 0xee, 0x76, 0x2e, 0x87, 0x23, 0x46, 0x33, 0x47, 0xf1, 0x8c, 0xef, 0x28, 0xae, - 0x2c, 0x01, 0x68, 0x2d, 0xb7, 0x60, 0x72, 0xa5, 0x96, 0xd4, 0x37, 0x8e, 0x29, 0x57, 0xc1, 0xa2, - 0x9f, 0x5b, 0x0d, 0xfd, 0x89, 0x5e, 0x28, 0xbc, 0x73, 0xc4, 0x51, 0x23, 0x1c, 0x46, 0xf4, 0x09, - 0xef, 0x14, 0xda, 0xec, 0x19, 0x48, 0xee, 0x70, 0xc4, 0xff, 0x79, 0x09, 0xb2, 0x0d, 0xb7, 0xb7, - 0x0c, 0x75, 0x9c, 0x1f, 0x1d, 0x4e, 0xc7, 0x5d, 0x32, 0x11, 0x3a, 0x7e, 0x2f, 0xcc, 0x84, 0x35, - 0x96, 0xb9, 0x4a, 0xc4, 0xaa, 0x38, 0xf7, 0xc3, 0x30, 0x1a, 0xde, 0x87, 0x9d, 0xc3, 0x11, 0xf1, - 0x87, 0x9e, 0x0c, 0xb0, 0x86, 0x77, 0x2e, 0x60, 0xcb, 0xde, 0xd6, 0xbb, 0xe8, 0xef, 0x64, 0x98, - 0x5a, 0xc6, 0x4e, 0xdd, 0xd1, 0x9c, 0x5d, 0xbb, 0x67, 0xbb, 0xd3, 0x30, 0x4b, 0x5a, 0x6b, 0x1b, - 0xb3, 0xee, 0xc8, 0x7b, 0x45, 0x6f, 0x91, 0x45, 0xfd, 0x89, 0x82, 0x72, 0xe6, 0xfd, 0x32, 0x22, - 0x30, 0x79, 0x0a, 0x64, 0xdb, 0x9a, 0xa3, 0x31, 0x2c, 0xae, 0xea, 0xc1, 0x22, 0x20, 0xa4, 0x92, - 0x6c, 0xe8, 0xf7, 0x24, 0x11, 0x87, 0x22, 0x81, 0xf2, 0x93, 0x81, 0xf0, 0x8e, 0xcc, 0x10, 0x28, - 0x1c, 0x83, 0xd9, 0x6a, 0xad, 0xd1, 0x5c, 0xad, 0x2d, 0x2f, 0x97, 0xdd, 0xd4, 0x82, 0xac, 0x9c, - 0x04, 0x65, 0xbd, 0xf8, 0xe0, 0x5a, 0xb9, 0xda, 0x68, 0x56, 0x6b, 0x8b, 0x65, 0xf6, 0x67, 0x56, - 0x39, 0x0a, 0xd3, 0xa5, 0x62, 0x69, 0xc5, 0x4b, 0xc8, 0x29, 0xa7, 0xe0, 0xf8, 0x5a, 0x79, 0x6d, - 0xa1, 0xac, 0xd6, 0x57, 0x2a, 0xeb, 0x4d, 0x97, 0xcc, 0x52, 0x6d, 0xa3, 0xba, 0x58, 0xc8, 0x2b, - 0x08, 0x4e, 0x86, 0xbe, 0x9c, 0x57, 0x6b, 0xd5, 0xe5, 0x66, 0xbd, 0x51, 0x6c, 0x94, 0x0b, 0x13, - 0xca, 0x15, 0x70, 0xb4, 0x54, 0xac, 0x92, 0xec, 0xa5, 0x5a, 0xb5, 0x5a, 0x2e, 0x35, 0x0a, 0x93, - 0xe8, 0xdf, 0xb3, 0x30, 0x5d, 0xb1, 0xab, 0xda, 0x0e, 0x3e, 0xa7, 0x75, 0xf4, 0x36, 0x7a, 0x41, - 0x68, 0xe6, 0x71, 0x3d, 0xcc, 0x5a, 0xf4, 0x11, 0xb7, 0x1b, 0x3a, 0xa6, 0x68, 0xce, 0xaa, 0x7c, - 0xa2, 0x3b, 0x27, 0x37, 0x08, 0x01, 0x6f, 0x4e, 0x4e, 0xdf, 0x94, 0x05, 0x00, 0xfa, 0xd4, 0x08, - 0x2e, 0x77, 0x3d, 0xdb, 0xdb, 0x9a, 0xb4, 0x1d, 0x6c, 0x63, 0x6b, 0x4f, 0x6f, 0x61, 0x2f, 0xa7, - 0x1a, 0xfa, 0x0b, 0x7d, 0x41, 0x16, 0xdd, 0x5f, 0x0c, 0x81, 0x1a, 0xaa, 0x4e, 0x44, 0x6f, 0xf8, - 0x33, 0xb2, 0xc8, 0xee, 0xa0, 0x10, 0xc9, 0x64, 0x9a, 0xf2, 0x62, 0x69, 0xb8, 0x65, 0xdb, 0x46, - 0xad, 0xd6, 0xac, 0xaf, 0xd4, 0xd4, 0x46, 0x41, 0x56, 0x66, 0x60, 0xd2, 0x7d, 0x5d, 0xad, 0x55, - 0x97, 0x0b, 0x59, 0xe5, 0x04, 0x1c, 0x5b, 0x29, 0xd6, 0x9b, 0x95, 0xea, 0xb9, 0xe2, 0x6a, 0x65, - 0xb1, 0x59, 0x5a, 0x29, 0xaa, 0xf5, 0x42, 0x4e, 0xb9, 0x0a, 0x4e, 0x34, 0x2a, 0x65, 0xb5, 0xb9, - 0x54, 0x2e, 0x36, 0x36, 0xd4, 0x72, 0xbd, 0x59, 0xad, 0x35, 0xab, 0xc5, 0xb5, 0x72, 0x21, 0xef, - 0x36, 0x7f, 0xf2, 0x29, 0x50, 0x9b, 0x89, 0xfd, 0xca, 0x38, 0x19, 0xa1, 0x8c, 0x53, 0xbd, 0xca, - 0x08, 0x61, 0xb5, 0x52, 0xcb, 0xf5, 0xb2, 0x7a, 0xae, 0x5c, 0x98, 0xee, 0xa7, 0x6b, 0x33, 0xca, - 0x71, 0x28, 0xb8, 0x3c, 0x34, 0x2b, 0x75, 0x2f, 0xe7, 0x62, 0x61, 0x16, 0x7d, 0x30, 0x0f, 0x27, - 0x55, 0xbc, 0xa5, 0xdb, 0x0e, 0xb6, 0xd6, 0xb5, 0xcb, 0x3b, 0xd8, 0x70, 0xbc, 0x4e, 0xfe, 0x5f, - 0x12, 0x2b, 0xe3, 0x1a, 0xcc, 0x76, 0x29, 0x8d, 0x35, 0xec, 0x6c, 0x9b, 0x6d, 0x36, 0x0a, 0x3f, - 0x29, 0xb2, 0xe7, 0x98, 0x5f, 0x0f, 0x67, 0x57, 0xf9, 0xbf, 0x43, 0xba, 0x2d, 0xc7, 0xe8, 0x76, - 0x76, 0x18, 0xdd, 0x56, 0xae, 0x81, 0xa9, 0x5d, 0x1b, 0x5b, 0xe5, 0x1d, 0x4d, 0xef, 0x78, 0x97, - 0x73, 0xfa, 0x09, 0xe8, 0x8d, 0x59, 0xd1, 0x13, 0x2b, 0xa1, 0xba, 0xf4, 0x17, 0x63, 0x44, 0xdf, - 0x7a, 0x1a, 0x80, 0x55, 0x76, 0xc3, 0xea, 0x30, 0x65, 0x0d, 0xa5, 0xb8, 0xfc, 0x5d, 0xd0, 0x3b, - 0x1d, 0xdd, 0xd8, 0xf2, 0xf7, 0xfd, 0x83, 0x04, 0xf4, 0x62, 0x59, 0xe4, 0x04, 0x4b, 0x52, 0xde, - 0x92, 0xb5, 0xa6, 0x17, 0x4a, 0x63, 0xee, 0x77, 0xf7, 0x37, 0x9d, 0xbc, 0x52, 0x80, 0x19, 0x92, - 0xc6, 0x5a, 0x60, 0x61, 0xc2, 0xed, 0x83, 0x3d, 0x72, 0x6b, 0xe5, 0xc6, 0x4a, 0x6d, 0xd1, 0xff, - 0x36, 0xe9, 0x92, 0x74, 0x99, 0x29, 0x56, 0x1f, 0x24, 0xad, 0x71, 0x4a, 0x79, 0x02, 0x5c, 0x15, - 0xea, 0xb0, 0x8b, 0xab, 0x6a, 0xb9, 0xb8, 0xf8, 0x60, 0xb3, 0xfc, 0xac, 0x4a, 0xbd, 0x51, 0xe7, - 0x1b, 0x97, 0xd7, 0x8e, 0xa6, 0x5d, 0x7e, 0xcb, 0x6b, 0xc5, 0xca, 0x2a, 0xeb, 0xdf, 0x97, 0x6a, - 0xea, 0x5a, 0xb1, 0x51, 0x98, 0x41, 0xbf, 0x26, 0x43, 0x61, 0x19, 0x3b, 0xeb, 0xa6, 0xe5, 0x68, - 0x9d, 0x55, 0xdd, 0xb8, 0xb8, 0x61, 0x75, 0xb8, 0xc9, 0xa6, 0x70, 0x98, 0x0e, 0x7e, 0x88, 0xe4, - 0x08, 0x46, 0xef, 0x88, 0x77, 0x49, 0xb6, 0x40, 0x99, 0x82, 0x04, 0xf4, 0x1c, 0x49, 0x64, 0xb9, - 0x5b, 0xbc, 0xd4, 0x64, 0x7a, 0xf2, 0xdc, 0x71, 0x8f, 0xcf, 0x7d, 0x50, 0xcb, 0xa3, 0xe7, 0x67, - 0x61, 0x72, 0x49, 0x37, 0xb4, 0x8e, 0xfe, 0x6c, 0x2e, 0x7e, 0x69, 0xd0, 0xc7, 0x64, 0x62, 0xfa, - 0x18, 0x69, 0xa8, 0xf1, 0xf3, 0x17, 0x65, 0xd1, 0xe5, 0x85, 0x90, 0xec, 0x3d, 0x26, 0x23, 0x06, - 0xcf, 0xf7, 0x48, 0x22, 0xcb, 0x0b, 0x83, 0xe9, 0x25, 0xc3, 0xf0, 0x23, 0xdf, 0x1d, 0x36, 0x56, - 0x4f, 0xfb, 0x9e, 0xec, 0xa7, 0x0a, 0x53, 0xe8, 0x2f, 0x64, 0x40, 0xcb, 0xd8, 0x39, 0x87, 0x2d, - 0x7f, 0x2a, 0x40, 0x7a, 0x7d, 0x66, 0x6f, 0x87, 0x9a, 0xec, 0x6b, 0xc3, 0x00, 0x9e, 0xe7, 0x01, - 0x2c, 0xc6, 0x34, 0x9e, 0x08, 0xd2, 0x11, 0x8d, 0xb7, 0x02, 0x79, 0x9b, 0x7c, 0x67, 0x6a, 0x76, - 0x5b, 0xf4, 0x70, 0x49, 0x88, 0x85, 0xa9, 0x53, 0xc2, 0x2a, 0x23, 0x80, 0xbe, 0xe5, 0x4f, 0x82, - 0x7e, 0x98, 0xd3, 0x8e, 0xa5, 0x03, 0x33, 0x9b, 0x4c, 0x5f, 0xac, 0x74, 0xd5, 0xa5, 0x9f, 0x7d, - 0x83, 0xde, 0x93, 0x83, 0xe3, 0xfd, 0xaa, 0x83, 0x7e, 0x3f, 0xc3, 0xed, 0xb0, 0x63, 0x32, 0xe4, - 0x67, 0xd8, 0x06, 0xa2, 0xfb, 0xa2, 0x3c, 0x0d, 0x4e, 0xf8, 0xcb, 0x70, 0x0d, 0xb3, 0x8a, 0x2f, - 0xd9, 0x1d, 0xec, 0x38, 0xd8, 0x22, 0x55, 0x9b, 0x54, 0xfb, 0x7f, 0x54, 0x9e, 0x01, 0x57, 0xea, - 0x86, 0xad, 0xb7, 0xb1, 0xd5, 0xd0, 0xbb, 0x76, 0xd1, 0x68, 0x37, 0x76, 0x1d, 0xd3, 0xd2, 0x35, - 0x76, 0x95, 0xe4, 0xa4, 0x1a, 0xf5, 0x59, 0xb9, 0x09, 0x0a, 0xba, 0x5d, 0x33, 0x2e, 0x98, 0x9a, - 0xd5, 0xd6, 0x8d, 0xad, 0x55, 0xdd, 0x76, 0x98, 0x07, 0xf0, 0xbe, 0x74, 0xf4, 0xf7, 0xb2, 0xe8, - 0x61, 0xba, 0x01, 0xb0, 0x46, 0x74, 0x28, 0x3f, 0x2d, 0x8b, 0x1c, 0x8f, 0x4b, 0x46, 0x3b, 0x99, - 0xb2, 0x3c, 0x6f, 0xdc, 0x86, 0x44, 0xff, 0x11, 0x9c, 0x74, 0x2d, 0x34, 0xdd, 0x33, 0x04, 0xce, - 0x95, 0xd5, 0xca, 0x52, 0xa5, 0xec, 0x9a, 0x15, 0x27, 0xe0, 0x58, 0xf0, 0x6d, 0xf1, 0xc1, 0x66, - 0xbd, 0x5c, 0x6d, 0x14, 0x26, 0xdd, 0x7e, 0x8a, 0x26, 0x2f, 0x15, 0x2b, 0xab, 0xe5, 0xc5, 0x66, - 0xa3, 0xe6, 0x7e, 0x59, 0x1c, 0xce, 0xb4, 0x40, 0x8f, 0x64, 0xe1, 0x28, 0x91, 0xed, 0x65, 0x22, - 0x55, 0x57, 0x28, 0x3d, 0xbe, 0xb6, 0x3e, 0x40, 0x53, 0x54, 0xbc, 0xe8, 0x13, 0xc2, 0x37, 0x65, - 0x86, 0x20, 0xec, 0x29, 0x23, 0x42, 0x33, 0xbe, 0x29, 0x89, 0x44, 0xa8, 0x10, 0x26, 0x9b, 0x4c, - 0x29, 0xfe, 0x75, 0xdc, 0x23, 0x4e, 0x34, 0xf8, 0xc4, 0xca, 0x2c, 0x91, 0x9f, 0x9f, 0xb5, 0x5e, - 0x51, 0x89, 0x3a, 0xcc, 0x01, 0x90, 0x14, 0xa2, 0x41, 0x54, 0x0f, 0xfa, 0x8e, 0x57, 0x51, 0x7a, - 0x50, 0x2c, 0x35, 0x2a, 0xe7, 0xca, 0x51, 0x7a, 0xf0, 0x71, 0x19, 0x26, 0x97, 0xb1, 0xe3, 0xce, - 0xa9, 0x6c, 0xf4, 0x4c, 0x81, 0xf5, 0x1f, 0xd7, 0x8c, 0xe9, 0x98, 0x2d, 0xad, 0xe3, 0x2f, 0x03, - 0xd0, 0x37, 0xf4, 0x53, 0xc3, 0x98, 0x20, 0x5e, 0xd1, 0x11, 0xe3, 0xd5, 0x0f, 0x42, 0xce, 0x71, - 0x3f, 0xb3, 0x65, 0xe8, 0xef, 0x8b, 0x1c, 0xae, 0x5c, 0x22, 0x8b, 0x9a, 0xa3, 0xa9, 0x34, 0x7f, - 0x68, 0x74, 0x12, 0xb4, 0x5d, 0x22, 0x18, 0xf9, 0x6e, 0xb4, 0x3f, 0xbf, 0x2c, 0xc3, 0x09, 0xda, - 0x3e, 0x8a, 0xdd, 0x6e, 0xdd, 0x31, 0x2d, 0xac, 0xe2, 0x16, 0xd6, 0xbb, 0x4e, 0xcf, 0xfa, 0x9e, - 0x45, 0x53, 0xbd, 0xcd, 0x66, 0xf6, 0x8a, 0x7e, 0x4b, 0x16, 0x8d, 0xc1, 0xbc, 0xaf, 0x3d, 0xf6, - 0x94, 0x17, 0xd1, 0xd8, 0x3f, 0x20, 0x89, 0x44, 0x55, 0x4e, 0x48, 0x3c, 0x19, 0x50, 0xef, 0x3d, - 0x04, 0xa0, 0xbc, 0x95, 0x1b, 0xb5, 0x5c, 0x2a, 0x57, 0xd6, 0xdd, 0x41, 0xe0, 0x5a, 0xb8, 0x7a, - 0x7d, 0x43, 0x2d, 0xad, 0x14, 0xeb, 0xe5, 0xa6, 0x5a, 0x5e, 0xae, 0xd4, 0x1b, 0xcc, 0x29, 0x8b, - 0xfe, 0x35, 0xa1, 0x5c, 0x03, 0xa7, 0xea, 0x1b, 0x0b, 0xf5, 0x92, 0x5a, 0x59, 0x27, 0xe9, 0x6a, - 0xb9, 0x5a, 0x3e, 0xcf, 0xbe, 0x4e, 0xa2, 0x77, 0x15, 0x60, 0xda, 0x9d, 0x00, 0xd4, 0xe9, 0xbc, - 0x00, 0x7d, 0x2d, 0x0b, 0xd3, 0x2a, 0xb6, 0xcd, 0xce, 0x1e, 0x99, 0x23, 0x8c, 0x6b, 0xea, 0xf1, - 0x0d, 0x59, 0xf4, 0xfc, 0x76, 0x88, 0xd9, 0xf9, 0x10, 0xa3, 0xd1, 0x13, 0x4d, 0x6d, 0x4f, 0xd3, - 0x3b, 0xda, 0x05, 0xd6, 0xd5, 0x4c, 0xaa, 0x41, 0x82, 0x32, 0x0f, 0x8a, 0x79, 0xc9, 0xc0, 0x56, - 0xbd, 0x75, 0xa9, 0xec, 0x6c, 0x17, 0xdb, 0x6d, 0x0b, 0xdb, 0x36, 0x5b, 0xbd, 0xe8, 0xf3, 0x45, - 0xb9, 0x11, 0x8e, 0x92, 0xd4, 0x50, 0x66, 0xea, 0x20, 0xd3, 0x9b, 0xec, 0xe7, 0x2c, 0x1a, 0x97, - 0xbd, 0x9c, 0xb9, 0x50, 0xce, 0x20, 0x39, 0x7c, 0x5c, 0x22, 0xcf, 0x9f, 0xd2, 0x39, 0x03, 0xd3, - 0x86, 0xb6, 0x83, 0xcb, 0x0f, 0x77, 0x75, 0x0b, 0xdb, 0xc4, 0x31, 0x46, 0x56, 0xc3, 0x49, 0xe8, - 0x3d, 0x42, 0xe7, 0xcd, 0xc5, 0x24, 0x96, 0x4c, 0xf7, 0x97, 0x87, 0x50, 0xfd, 0x3e, 0xfd, 0x8c, - 0x8c, 0xde, 0x25, 0xc3, 0x0c, 0x63, 0xaa, 0x68, 0x5c, 0xae, 0xb4, 0xd1, 0xb5, 0x9c, 0xf1, 0xab, - 0xb9, 0x69, 0x9e, 0xf1, 0x4b, 0x5e, 0xd0, 0xcf, 0xca, 0xa2, 0xee, 0xce, 0x7d, 0x2a, 0x4e, 0xca, - 0x88, 0x76, 0x1c, 0xdd, 0x34, 0x77, 0x99, 0xa3, 0xea, 0xa4, 0x4a, 0x5f, 0xd2, 0x5c, 0xd4, 0x43, - 0x7f, 0x24, 0xe4, 0x4c, 0x2d, 0x58, 0x8d, 0x43, 0x02, 0xf0, 0x43, 0x32, 0xcc, 0x31, 0xae, 0xea, - 0xec, 0x9c, 0x8f, 0xd0, 0x81, 0xb7, 0x9f, 0x13, 0x36, 0x04, 0xfb, 0xd4, 0x9f, 0x95, 0xf4, 0xb8, - 0x01, 0xf2, 0x7d, 0x42, 0xc1, 0xd1, 0x84, 0x2b, 0x72, 0x48, 0x50, 0xbe, 0x29, 0x0b, 0xd3, 0x1b, - 0x36, 0xb6, 0x98, 0xdf, 0x3e, 0x7a, 0x55, 0x16, 0xe4, 0x65, 0xcc, 0x6d, 0xa4, 0xbe, 0x48, 0xd8, - 0xc3, 0x37, 0x5c, 0xd9, 0x10, 0x51, 0xd7, 0x46, 0x8a, 0x80, 0xed, 0x06, 0x98, 0xa3, 0x22, 0x2d, - 0x3a, 0x8e, 0x6b, 0x24, 0x7a, 0xde, 0xb4, 0x3d, 0xa9, 0xa3, 0xd8, 0x2a, 0x22, 0x65, 0xb9, 0x59, - 0x4a, 0x2e, 0x4f, 0xab, 0x78, 0x93, 0xce, 0x67, 0xb3, 0x6a, 0x4f, 0xaa, 0x72, 0x2b, 0x5c, 0x61, - 0x76, 0x31, 0x3d, 0xbf, 0x12, 0xca, 0x9c, 0x23, 0x99, 0xfb, 0x7d, 0x42, 0x5f, 0x13, 0xf2, 0xd5, - 0x15, 0x97, 0x4e, 0x32, 0x5d, 0xe8, 0x8e, 0xc6, 0x24, 0x39, 0x0e, 0x05, 0x37, 0x07, 0xd9, 0x7f, - 0x51, 0xcb, 0xf5, 0xda, 0xea, 0xb9, 0x72, 0xff, 0x65, 0x8c, 0x1c, 0x7a, 0x9e, 0x0c, 0x53, 0x0b, - 0x96, 0xa9, 0xb5, 0x5b, 0x9a, 0xed, 0xa0, 0x6f, 0x49, 0x30, 0xb3, 0xae, 0x5d, 0xee, 0x98, 0x5a, - 0x9b, 0xf8, 0xf7, 0xf7, 0xf4, 0x05, 0x5d, 0xfa, 0xc9, 0xeb, 0x0b, 0xd8, 0x2b, 0x7f, 0x30, 0xd0, - 0x3f, 0xba, 0x97, 0x11, 0xb9, 0x50, 0xd3, 0xdf, 0xe6, 0x93, 0xfa, 0x05, 0x2b, 0xf5, 0xf8, 0x9a, - 0x0f, 0xf3, 0x14, 0x61, 0x51, 0xbe, 0x4b, 0x2c, 0xfc, 0xa8, 0x08, 0xc9, 0xc3, 0xd9, 0x95, 0x7f, - 0xfe, 0x24, 0xe4, 0x17, 0x31, 0xb1, 0xe2, 0xfe, 0x87, 0x04, 0x13, 0x75, 0xec, 0x10, 0x0b, 0xee, - 0x0e, 0xce, 0x53, 0xb8, 0x4d, 0x32, 0x04, 0x4e, 0xec, 0xde, 0xbb, 0x3b, 0x59, 0x0f, 0x9d, 0xb7, - 0x26, 0xcf, 0x09, 0x3c, 0x12, 0x69, 0xb9, 0xf3, 0xac, 0xcc, 0x03, 0x79, 0x24, 0xc6, 0x92, 0x4a, - 0xdf, 0xd7, 0xea, 0x2d, 0x12, 0x73, 0xad, 0x0a, 0xf5, 0x7a, 0xbf, 0x11, 0xd6, 0xcf, 0x58, 0x6f, - 0x33, 0xc6, 0x7c, 0x8c, 0x73, 0xd4, 0x53, 0x61, 0x82, 0xca, 0xdc, 0x9b, 0x8f, 0xf6, 0xfa, 0x29, - 0x50, 0x12, 0xe4, 0xec, 0xb5, 0x97, 0x53, 0xd0, 0x45, 0x2d, 0xba, 0xf0, 0xb1, 0xc4, 0x20, 0x98, - 0xa9, 0x62, 0xe7, 0x92, 0x69, 0x5d, 0xac, 0x3b, 0x9a, 0x83, 0xd1, 0xbf, 0x4a, 0x20, 0xd7, 0xb1, - 0x13, 0x8e, 0x7e, 0x52, 0x85, 0x63, 0xb4, 0x42, 0x2c, 0x23, 0xe9, 0xbf, 0x69, 0x45, 0xce, 0xf4, - 0x15, 0x42, 0x28, 0x9f, 0xba, 0xff, 0x57, 0xf4, 0xcb, 0x7d, 0x83, 0x3e, 0x49, 0x7d, 0x26, 0x0d, - 0x4c, 0x32, 0x61, 0x06, 0x5d, 0x05, 0x8b, 0xd0, 0xd3, 0x77, 0x0b, 0x99, 0xd5, 0x62, 0x34, 0x0f, - 0xa7, 0x2b, 0x78, 0xdf, 0x55, 0x90, 0x2d, 0x6d, 0x6b, 0x0e, 0x7a, 0xb3, 0x0c, 0x50, 0x6c, 0xb7, - 0xd7, 0xa8, 0x0f, 0x78, 0xd8, 0x21, 0xed, 0x2c, 0xcc, 0xb4, 0xb6, 0xb5, 0xe0, 0x6e, 0x13, 0xda, - 0x1f, 0x70, 0x69, 0xca, 0xd3, 0x02, 0x67, 0x72, 0x2a, 0x55, 0xd4, 0x03, 0x93, 0x5b, 0x06, 0xa3, - 0xed, 0x3b, 0x9a, 0xf3, 0xa1, 0x30, 0x63, 0x8f, 0xd0, 0xb9, 0xbf, 0xcf, 0x07, 0xec, 0x45, 0xcf, - 0xe1, 0x18, 0x69, 0xff, 0x80, 0x4d, 0x90, 0x90, 0xf0, 0xa4, 0xb7, 0x58, 0x40, 0x8f, 0x78, 0xbe, - 0xc6, 0x12, 0xba, 0x56, 0x29, 0xb7, 0x75, 0x4f, 0xb4, 0x2c, 0x60, 0x16, 0x7a, 0x61, 0x26, 0x19, - 0x7c, 0xf1, 0x82, 0xbb, 0x0f, 0x66, 0x71, 0x5b, 0x77, 0xb0, 0x57, 0x4b, 0x26, 0xc0, 0x38, 0x88, - 0xf9, 0x1f, 0xd0, 0x73, 0x85, 0x83, 0xae, 0x11, 0x81, 0xee, 0xaf, 0x51, 0x44, 0xfb, 0x13, 0x0b, - 0xa3, 0x26, 0x46, 0x33, 0x7d, 0xb0, 0x7e, 0x4a, 0x86, 0x13, 0x0d, 0x73, 0x6b, 0xab, 0x83, 0x3d, - 0x31, 0x61, 0xea, 0x9d, 0x89, 0xb4, 0x51, 0xc2, 0x45, 0x76, 0x82, 0xcc, 0x87, 0x74, 0xff, 0x28, - 0x99, 0xfb, 0xc2, 0x9f, 0x98, 0x8a, 0x9d, 0x45, 0x11, 0x71, 0xf5, 0xe5, 0x33, 0x02, 0x05, 0xb1, - 0x80, 0xcf, 0xc2, 0x64, 0xd3, 0x07, 0xe2, 0xb3, 0x12, 0xcc, 0xd2, 0x9b, 0x2b, 0x3d, 0x05, 0x7d, - 0x60, 0x84, 0x00, 0xa0, 0x6f, 0x65, 0x44, 0xfd, 0x6c, 0x89, 0x4c, 0x38, 0x4e, 0x22, 0x44, 0x2c, - 0x16, 0x54, 0x65, 0x20, 0xb9, 0xf4, 0x45, 0xfb, 0xa7, 0x32, 0x4c, 0x2f, 0x63, 0xaf, 0xa5, 0xd9, - 0x89, 0x7b, 0xa2, 0xb3, 0x30, 0x43, 0xae, 0x6f, 0xab, 0xb1, 0x63, 0x92, 0x74, 0xd5, 0x8c, 0x4b, - 0x53, 0xae, 0x87, 0xd9, 0x0b, 0x78, 0xd3, 0xb4, 0x70, 0x8d, 0x3b, 0x4b, 0xc9, 0x27, 0x46, 0x84, - 0xa7, 0xe3, 0xe2, 0xa0, 0x2d, 0xf0, 0xd8, 0xdc, 0xbc, 0x5f, 0x98, 0xa1, 0xaa, 0x44, 0x8c, 0x39, - 0x4f, 0x87, 0x49, 0x86, 0xbc, 0x67, 0xa6, 0xc5, 0xf5, 0x8b, 0x7e, 0x5e, 0xf4, 0x9b, 0x3e, 0xa2, - 0x65, 0x0e, 0xd1, 0xdb, 0x92, 0x30, 0x31, 0x96, 0xfb, 0xdd, 0x0b, 0xa1, 0xf2, 0x17, 0x2e, 0x57, - 0xda, 0x36, 0x5a, 0x4b, 0x86, 0xe9, 0x69, 0x00, 0xbf, 0x71, 0x78, 0x61, 0x2d, 0x42, 0x29, 0x7c, - 0xe4, 0xfa, 0xd8, 0x83, 0x7a, 0xbd, 0xe2, 0x20, 0xec, 0x8c, 0x18, 0x18, 0xb1, 0x03, 0x7e, 0x22, - 0x9c, 0xa4, 0x8f, 0xce, 0xc7, 0x64, 0x38, 0xe1, 0x9f, 0x3f, 0x5a, 0xd5, 0xec, 0xa0, 0xdd, 0x95, - 0x92, 0x41, 0xc4, 0x1d, 0xf8, 0xf0, 0x1b, 0xcb, 0xd7, 0x93, 0x8d, 0x19, 0x7d, 0x39, 0x19, 0x2d, - 0x3a, 0xca, 0xcd, 0x70, 0xcc, 0xd8, 0xdd, 0xf1, 0xa5, 0x4e, 0x5a, 0x3c, 0x6b, 0xe1, 0xfb, 0x3f, - 0x24, 0x19, 0x99, 0x44, 0x98, 0x1f, 0xcb, 0x9c, 0x92, 0x3b, 0xd2, 0xf5, 0x94, 0x44, 0x30, 0xa2, - 0x7f, 0xce, 0x24, 0xea, 0xdd, 0x06, 0x9f, 0xf9, 0x4a, 0xd0, 0x4b, 0x1d, 0xe2, 0x81, 0xaf, 0xb3, - 0x13, 0x90, 0x2b, 0xef, 0x74, 0x9d, 0xcb, 0x67, 0x9f, 0x08, 0xb3, 0x75, 0xc7, 0xc2, 0xda, 0x4e, - 0x68, 0x67, 0xc0, 0x31, 0x2f, 0x62, 0xc3, 0xdb, 0x19, 0x20, 0x2f, 0x77, 0xde, 0x01, 0x13, 0x86, - 0xd9, 0xd4, 0x76, 0x9d, 0x6d, 0xe5, 0xda, 0x7d, 0x47, 0xea, 0x19, 0xf8, 0x35, 0x16, 0xc3, 0xe8, - 0x0b, 0x77, 0x91, 0xb5, 0xe1, 0xbc, 0x61, 0x16, 0x77, 0x9d, 0xed, 0x85, 0x6b, 0x3e, 0xf4, 0xb7, - 0xa7, 0x33, 0x1f, 0xff, 0xdb, 0xd3, 0x99, 0xcf, 0xff, 0xed, 0xe9, 0xcc, 0xcf, 0x7d, 0xf1, 0xf4, - 0x91, 0x8f, 0x7f, 0xf1, 0xf4, 0x91, 0xcf, 0x7e, 0xf1, 0xf4, 0x91, 0x1f, 0x96, 0xba, 0x17, 0x2e, - 0xe4, 0x09, 0x95, 0xa7, 0xfe, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x3c, 0x7e, 0x47, 0xee, 0xc5, - 0x0b, 0x02, 0x00, + 0xe8, 0xd5, 0x35, 0xbc, 0x4f, 0x17, 0xc5, 0x73, 0xbe, 0x1a, 0xe4, 0x53, 0xc3, 0x3f, 0x29, 0xf7, + 0xc2, 0x95, 0xec, 0xb5, 0xb4, 0x6b, 0x3b, 0xe6, 0x0e, 0x05, 0x7d, 0x49, 0xef, 0xd0, 0x1a, 0x4c, + 0x90, 0x1a, 0xc4, 0x65, 0x51, 0x6e, 0x83, 0xe3, 0x5d, 0x0b, 0x6f, 0x62, 0xeb, 0x01, 0x6d, 0x67, + 0xf7, 0xa1, 0x86, 0xa5, 0x19, 0x76, 0xd7, 0xb4, 0x9c, 0x53, 0x93, 0x84, 0xf9, 0xbe, 0xdf, 0x94, + 0x9b, 0xe0, 0xd8, 0x83, 0xb6, 0x69, 0x14, 0xbb, 0xfa, 0xaa, 0x6e, 0x3b, 0xd8, 0x28, 0xb6, 0xdb, + 0xd6, 0xa9, 0x29, 0x52, 0xd6, 0xfe, 0x0f, 0xac, 0x5b, 0x9d, 0x84, 0x3c, 0x15, 0x36, 0x7a, 0x51, + 0x4e, 0xd8, 0xf9, 0x93, 0x55, 0x3f, 0xd6, 0x98, 0xbb, 0x05, 0x26, 0x58, 0x7f, 0x48, 0x60, 0x9d, + 0xbe, 0xed, 0x64, 0xcf, 0x2a, 0x04, 0xa3, 0xa2, 0x7a, 0xd9, 0x94, 0xa7, 0x42, 0xbe, 0x45, 0x84, + 0x40, 0x10, 0x9e, 0xbe, 0xed, 0xca, 0xfe, 0x85, 0x92, 0x2c, 0x2a, 0xcb, 0x8a, 0xfe, 0x42, 0x16, + 0xf2, 0x17, 0x8d, 0xe3, 0x38, 0x59, 0x1f, 0xf0, 0x35, 0x69, 0x88, 0x4e, 0xf6, 0x26, 0xb8, 0x81, + 0xf5, 0xa0, 0xcc, 0x5a, 0x59, 0x6c, 0x2e, 0x6c, 0x78, 0x53, 0x47, 0xd7, 0x86, 0xa9, 0x37, 0x8a, + 0xaa, 0x3b, 0xef, 0x5f, 0x74, 0xa7, 0x9c, 0x37, 0xc2, 0xf5, 0x03, 0x72, 0x97, 0x1b, 0xcd, 0x6a, + 0x71, 0xad, 0x5c, 0xd8, 0xe4, 0x2d, 0xa1, 0x7a, 0xa3, 0xb6, 0xde, 0x54, 0x37, 0xaa, 0xd5, 0x4a, + 0x75, 0x99, 0x12, 0x73, 0x0d, 0xc8, 0x93, 0x41, 0x86, 0x73, 0x6a, 0xa5, 0x51, 0x6e, 0x96, 0x6a, + 0xd5, 0xa5, 0xca, 0x72, 0x41, 0x1f, 0x64, 0x46, 0x3d, 0xa8, 0x5c, 0x03, 0x57, 0x71, 0x9c, 0x54, + 0x6a, 0x55, 0x77, 0x1e, 0x5c, 0x2a, 0x56, 0x4b, 0x65, 0x77, 0xd2, 0x7b, 0x41, 0x41, 0x70, 0x82, + 0x92, 0x6b, 0x2e, 0x55, 0x56, 0xc3, 0x5b, 0x57, 0x1f, 0xc9, 0x28, 0xa7, 0xe0, 0xb2, 0xf0, 0xb7, + 0x4a, 0xf5, 0x6c, 0x71, 0xb5, 0xb2, 0x58, 0xf8, 0x68, 0x46, 0xb9, 0x0e, 0xae, 0xe6, 0xfe, 0xa2, + 0xbb, 0x50, 0xcd, 0xca, 0x62, 0x73, 0xad, 0x52, 0x5f, 0x2b, 0x36, 0x4a, 0x2b, 0x85, 0x8f, 0x91, + 0xd9, 0x85, 0x6f, 0x2e, 0x87, 0x9c, 0x38, 0x1f, 0x09, 0x5b, 0x00, 0x45, 0x5e, 0x51, 0x9f, 0xdc, + 0x17, 0xf6, 0x78, 0x8b, 0xf7, 0x43, 0xfe, 0x58, 0xb2, 0xc8, 0xa9, 0xd0, 0x2d, 0x09, 0x68, 0x25, + 0xd3, 0xa1, 0xc6, 0x10, 0x2a, 0x74, 0x0d, 0x5c, 0x55, 0x2d, 0x53, 0xa4, 0xd4, 0x72, 0xa9, 0x76, + 0xb6, 0xac, 0x36, 0xcf, 0x15, 0x57, 0x57, 0xcb, 0x8d, 0xe6, 0x52, 0x45, 0xad, 0x37, 0x0a, 0x9b, + 0xe8, 0x9f, 0x25, 0x7f, 0xed, 0x27, 0x24, 0xad, 0xbf, 0x96, 0x92, 0x36, 0xeb, 0xd8, 0x35, 0x9e, + 0x1f, 0x82, 0xbc, 0xed, 0x68, 0xce, 0xae, 0xcd, 0x5a, 0xf5, 0x13, 0xfa, 0xb7, 0xea, 0xf9, 0x3a, + 0xc9, 0xa4, 0xb2, 0xcc, 0xe8, 0x2f, 0x32, 0x49, 0x9a, 0xe9, 0x08, 0x96, 0x7f, 0xf4, 0x21, 0x44, + 0x7c, 0x1a, 0x90, 0xa7, 0xed, 0x95, 0x7a, 0xb3, 0xb8, 0xaa, 0x96, 0x8b, 0x8b, 0x0f, 0xf8, 0x8b, + 0x3e, 0x58, 0x39, 0x01, 0xc7, 0x36, 0xaa, 0xc5, 0x85, 0xd5, 0x32, 0x69, 0x2e, 0xb5, 0x6a, 0xb5, + 0x5c, 0x72, 0xe5, 0xfe, 0xd3, 0x64, 0x8b, 0xc5, 0xb5, 0xb7, 0x09, 0xdf, 0xae, 0x4d, 0x14, 0x92, + 0xff, 0x57, 0x85, 0x3d, 0x91, 0x02, 0x0d, 0x0b, 0xd3, 0x1a, 0x2d, 0x0e, 0x9f, 0x17, 0x72, 0x3e, + 0x12, 0xe2, 0x24, 0x19, 0x1e, 0xff, 0x79, 0x08, 0x3c, 0x4e, 0xc0, 0xb1, 0x30, 0x1e, 0xc4, 0x09, + 0x29, 0x1a, 0x86, 0x17, 0x4d, 0x41, 0xbe, 0x8e, 0x3b, 0xb8, 0xe5, 0xa0, 0xc7, 0xa4, 0xc0, 0xf4, + 0x98, 0x03, 0xc9, 0x77, 0x7a, 0x91, 0xf4, 0x36, 0x37, 0xd9, 0x96, 0x7a, 0x26, 0xdb, 0x31, 0x46, + 0x83, 0x9c, 0xc8, 0x68, 0xc8, 0xa6, 0x60, 0x34, 0xe4, 0x86, 0x37, 0x1a, 0xf2, 0x49, 0x8d, 0x86, + 0x89, 0x58, 0xa3, 0x01, 0xbd, 0x3a, 0x9f, 0xb4, 0x4f, 0xa1, 0xc0, 0x1c, 0xae, 0xa9, 0xf0, 0xbf, + 0xb2, 0x49, 0xfa, 0xa0, 0xbe, 0x1c, 0x27, 0xd3, 0xf9, 0xef, 0xca, 0x29, 0x2c, 0x6d, 0x28, 0xd7, + 0xc2, 0xd5, 0xc1, 0x7b, 0xb3, 0xfc, 0xac, 0x4a, 0xbd, 0x51, 0x27, 0xf6, 0x41, 0xa9, 0xa6, 0xaa, + 0x1b, 0xeb, 0x74, 0x7d, 0xfa, 0x24, 0x28, 0x01, 0x15, 0x75, 0xa3, 0x4a, 0xad, 0x81, 0x2d, 0x9e, + 0xfa, 0x52, 0xa5, 0xba, 0xd8, 0xf4, 0x5b, 0x58, 0x75, 0xa9, 0x56, 0xd8, 0x76, 0xa7, 0x83, 0x21, + 0xea, 0xee, 0x70, 0xce, 0x4a, 0x28, 0x56, 0x17, 0x9b, 0x6b, 0xd5, 0xf2, 0x5a, 0xad, 0x5a, 0x29, + 0x91, 0xf4, 0x7a, 0xb9, 0x51, 0xd0, 0xdd, 0x61, 0xa9, 0xc7, 0xfe, 0xa8, 0x97, 0x8b, 0x6a, 0x69, + 0xa5, 0xac, 0xd2, 0x22, 0x1f, 0x54, 0xae, 0x87, 0x33, 0xc5, 0x6a, 0xad, 0xe1, 0xa6, 0x14, 0xab, + 0x0f, 0x34, 0x1e, 0x58, 0x2f, 0x37, 0xd7, 0xd5, 0x5a, 0xa9, 0x5c, 0xaf, 0xbb, 0xad, 0x9a, 0x59, + 0x2b, 0x85, 0x8e, 0x72, 0x37, 0xdc, 0x11, 0x62, 0xad, 0xdc, 0x20, 0x9b, 0xa1, 0x6b, 0x35, 0xe2, + 0x0f, 0xb3, 0x58, 0x6e, 0xae, 0x14, 0xeb, 0xcd, 0x4a, 0xb5, 0x54, 0x5b, 0x5b, 0x2f, 0x36, 0x2a, + 0x6e, 0xe3, 0x5f, 0x57, 0x6b, 0x8d, 0x5a, 0xf3, 0x6c, 0x59, 0xad, 0x57, 0x6a, 0xd5, 0x82, 0xe1, + 0x56, 0x39, 0xd4, 0x5b, 0x78, 0xbd, 0xb6, 0xa9, 0x5c, 0x05, 0xa7, 0xbc, 0xf4, 0xd5, 0x9a, 0x2b, + 0xe8, 0x90, 0xfd, 0xd2, 0x4d, 0xd5, 0x7e, 0xf9, 0x57, 0x09, 0xb2, 0x75, 0xc7, 0xec, 0xa2, 0x1f, + 0x0c, 0xba, 0xa3, 0xd3, 0x00, 0x16, 0xd9, 0xdb, 0x74, 0x67, 0x78, 0x6c, 0xce, 0x17, 0x4a, 0x41, + 0x7f, 0x24, 0xbc, 0x21, 0x13, 0xf4, 0xf0, 0x66, 0x37, 0xc2, 0xb2, 0xf9, 0xb6, 0xd8, 0x09, 0x95, + 0x68, 0x42, 0xc9, 0xf4, 0xfd, 0xe7, 0x86, 0xd9, 0x72, 0x41, 0x70, 0x32, 0x04, 0x9b, 0x2b, 0x7f, + 0x4f, 0x25, 0xb0, 0x72, 0x39, 0x5c, 0xd6, 0xa3, 0x5c, 0x44, 0xa7, 0x36, 0x95, 0x1f, 0x80, 0x27, + 0x84, 0xd4, 0xbb, 0xbc, 0x56, 0x3b, 0x5b, 0xf6, 0x15, 0x79, 0xb1, 0xd8, 0x28, 0x16, 0xb6, 0xd0, + 0xa7, 0x65, 0xc8, 0xae, 0x99, 0x7b, 0xbd, 0xfb, 0x60, 0x06, 0xbe, 0x18, 0x5a, 0x67, 0xf5, 0x5e, + 0x79, 0x8f, 0x7c, 0x21, 0xb1, 0xaf, 0x45, 0xef, 0x79, 0x7f, 0x5e, 0x4a, 0x22, 0xf6, 0xb5, 0x83, + 0x6e, 0x74, 0xff, 0xfd, 0x30, 0x62, 0x8f, 0x10, 0x2d, 0x56, 0xce, 0xc0, 0xe9, 0xe0, 0x43, 0x65, + 0xb1, 0x5c, 0x6d, 0x54, 0x96, 0x1e, 0x08, 0x84, 0x5b, 0x51, 0x85, 0xc4, 0x3f, 0xa8, 0x1b, 0x8b, + 0x9f, 0x97, 0x9c, 0x82, 0xe3, 0xc1, 0xb7, 0xe5, 0x72, 0xc3, 0xfb, 0xf2, 0x20, 0x7a, 0x38, 0x07, + 0x33, 0xb4, 0x5b, 0xdf, 0xe8, 0xb6, 0x35, 0x07, 0xa3, 0xa7, 0x06, 0xe8, 0xde, 0x00, 0x47, 0x2b, + 0xeb, 0x4b, 0xf5, 0xba, 0x63, 0x5a, 0xda, 0x16, 0x26, 0xe3, 0x18, 0x95, 0x56, 0x6f, 0x32, 0x7a, + 0xbb, 0xf0, 0x1a, 0x22, 0x3f, 0x94, 0xd0, 0x32, 0x23, 0x50, 0xff, 0xa2, 0xd0, 0x9a, 0x9f, 0x00, + 0xc1, 0x64, 0xe8, 0x3f, 0x38, 0xe2, 0x36, 0x17, 0x8d, 0xcb, 0xe6, 0x99, 0xe7, 0x49, 0x30, 0xd5, + 0xd0, 0x77, 0xf0, 0xb3, 0x4d, 0x03, 0xdb, 0xca, 0x04, 0xc8, 0xcb, 0x6b, 0x8d, 0xc2, 0x11, 0xf7, + 0xc1, 0x35, 0xc1, 0x32, 0xe4, 0xa1, 0xec, 0x16, 0xe0, 0x3e, 0x14, 0x1b, 0x05, 0xd9, 0x7d, 0x58, + 0x2b, 0x37, 0x0a, 0x59, 0xf7, 0xa1, 0x5a, 0x6e, 0x14, 0x72, 0xee, 0xc3, 0xfa, 0x6a, 0xa3, 0x90, + 0x77, 0x1f, 0x2a, 0xf5, 0x46, 0x61, 0xc2, 0x7d, 0x58, 0xa8, 0x37, 0x0a, 0x93, 0xee, 0xc3, 0xd9, + 0x7a, 0xa3, 0x30, 0xe5, 0x3e, 0x94, 0x1a, 0x8d, 0x02, 0xb8, 0x0f, 0xf7, 0xd5, 0x1b, 0x85, 0x69, + 0xf7, 0xa1, 0x58, 0x6a, 0x14, 0x66, 0xc8, 0x43, 0xb9, 0x51, 0x98, 0x75, 0x1f, 0xea, 0xf5, 0x46, + 0x61, 0x8e, 0x50, 0xae, 0x37, 0x0a, 0x47, 0x49, 0x59, 0x95, 0x46, 0xa1, 0xe0, 0x3e, 0xac, 0xd4, + 0x1b, 0x85, 0x63, 0x24, 0x73, 0xbd, 0x51, 0x50, 0x48, 0xa1, 0xf5, 0x46, 0xe1, 0x32, 0x92, 0xa7, + 0xde, 0x28, 0x1c, 0x27, 0x45, 0xd4, 0x1b, 0x85, 0x13, 0x84, 0x8d, 0x72, 0xa3, 0x70, 0x92, 0xe4, + 0x51, 0x1b, 0x85, 0xcb, 0xc9, 0xa7, 0x6a, 0xa3, 0x70, 0x8a, 0x30, 0x56, 0x6e, 0x14, 0xae, 0x20, + 0x0f, 0x6a, 0xa3, 0x80, 0xc8, 0xa7, 0x62, 0xa3, 0x70, 0x25, 0x7a, 0x02, 0x4c, 0x2d, 0x63, 0x87, + 0x82, 0x88, 0x0a, 0x20, 0x2f, 0x63, 0x27, 0x6c, 0xf4, 0x7f, 0x59, 0x86, 0xcb, 0xd9, 0x44, 0x71, + 0xc9, 0x32, 0x77, 0x56, 0xf1, 0x96, 0xd6, 0xba, 0x54, 0x7e, 0xc8, 0x35, 0xb8, 0xc2, 0x7b, 0xbe, + 0x0a, 0x64, 0xbb, 0x41, 0x67, 0x44, 0x9e, 0x63, 0xed, 0x53, 0x6f, 0xa1, 0x4b, 0x0e, 0x16, 0xba, + 0x98, 0x45, 0xf6, 0x4f, 0x61, 0x8d, 0xe6, 0xd6, 0xa6, 0x33, 0x3d, 0x6b, 0xd3, 0x6e, 0x33, 0xe9, + 0x62, 0xcb, 0x36, 0x0d, 0xad, 0x53, 0x67, 0x4e, 0x01, 0x74, 0x45, 0xad, 0x37, 0x59, 0xf9, 0x11, + 0xaf, 0x65, 0x50, 0xab, 0xec, 0x99, 0x71, 0xf3, 0xe1, 0xde, 0x6a, 0x46, 0x34, 0x92, 0x8f, 0xf9, + 0x8d, 0xa4, 0xc1, 0x35, 0x92, 0x7b, 0x0f, 0x40, 0x3b, 0x59, 0x7b, 0xa9, 0x0c, 0x37, 0x11, 0x09, + 0x5c, 0x66, 0xbd, 0xa5, 0x70, 0x19, 0x7d, 0x5a, 0x82, 0x93, 0x65, 0xa3, 0xdf, 0x7c, 0x20, 0xac, + 0x0b, 0x6f, 0x08, 0x43, 0xb3, 0xce, 0x8b, 0xf4, 0x8e, 0xbe, 0xd5, 0xee, 0x4f, 0x33, 0x42, 0xa2, + 0x9f, 0xf0, 0x25, 0x5a, 0xe7, 0x24, 0x7a, 0xcf, 0xf0, 0xa4, 0x93, 0x09, 0xb4, 0x3a, 0xd2, 0x0e, + 0x28, 0x8b, 0xbe, 0x22, 0xc1, 0x31, 0xea, 0xd7, 0x73, 0x1f, 0x9d, 0x7e, 0x90, 0x2e, 0x9b, 0x37, + 0xa1, 0x3a, 0xc1, 0x54, 0x85, 0xea, 0x77, 0x28, 0x05, 0xbd, 0x2a, 0x2c, 0xf0, 0xfb, 0x79, 0x81, + 0x47, 0x74, 0xc6, 0xbd, 0xc5, 0x45, 0xc8, 0xfa, 0xa3, 0xbe, 0xac, 0xab, 0x9c, 0xac, 0xef, 0x18, + 0x8a, 0xea, 0xe1, 0x8a, 0xf9, 0x6b, 0x59, 0x78, 0x02, 0xe5, 0x90, 0x29, 0x02, 0xed, 0xcc, 0x8a, + 0x46, 0x5b, 0xc5, 0xb6, 0xa3, 0x59, 0x0e, 0x77, 0xa4, 0xbd, 0x67, 0x7e, 0x9b, 0x49, 0x61, 0x7e, + 0x2b, 0x0d, 0x9c, 0xdf, 0xa2, 0xb7, 0x85, 0xad, 0xb4, 0x73, 0x3c, 0xb2, 0xc5, 0x18, 0x0c, 0x22, + 0x6a, 0x18, 0xd5, 0xa2, 0x7c, 0xf3, 0xed, 0x47, 0x39, 0x94, 0x97, 0x0e, 0x5c, 0x42, 0x32, 0xc4, + 0xff, 0x68, 0xb4, 0xe6, 0x74, 0x36, 0xfc, 0x8d, 0xb7, 0xfd, 0x0a, 0xed, 0x54, 0xe7, 0x41, 0x2f, + 0x9e, 0x84, 0x29, 0xd2, 0xe5, 0xac, 0xea, 0xc6, 0x05, 0x77, 0x6c, 0x9c, 0xa9, 0xe2, 0x8b, 0xa5, + 0x6d, 0xad, 0xd3, 0xc1, 0xc6, 0x16, 0x46, 0x0f, 0x72, 0x06, 0xba, 0xd6, 0xed, 0x56, 0x83, 0xad, + 0x22, 0xef, 0x55, 0xb9, 0x07, 0x72, 0x76, 0xcb, 0xec, 0x62, 0x22, 0xa8, 0xb9, 0x90, 0x73, 0x09, + 0xbf, 0xdc, 0x55, 0xdc, 0x75, 0xb6, 0xe7, 0x49, 0x59, 0xc5, 0xae, 0x5e, 0x77, 0x7f, 0x50, 0xe9, + 0x7f, 0x6c, 0x9c, 0xfc, 0x6a, 0xdf, 0xce, 0x38, 0x13, 0xd3, 0x19, 0xfb, 0x8c, 0xcf, 0x87, 0x99, + 0x8e, 0x58, 0xc9, 0xb8, 0x06, 0xa6, 0x5b, 0x5e, 0x16, 0xff, 0xec, 0x4c, 0x38, 0x09, 0xfd, 0x6d, + 0xa2, 0xee, 0x5a, 0xa8, 0xf0, 0x64, 0x5a, 0x85, 0x47, 0x6c, 0x2f, 0x9e, 0x80, 0x63, 0x8d, 0x5a, + 0xad, 0xb9, 0x56, 0xac, 0x3e, 0x10, 0x9c, 0x59, 0xdf, 0x44, 0x2f, 0xcd, 0xc2, 0x5c, 0xdd, 0xec, + 0xec, 0xe1, 0x00, 0xe7, 0x0a, 0xe7, 0x94, 0x15, 0x96, 0x53, 0x66, 0x9f, 0x9c, 0x94, 0x93, 0x90, + 0xd7, 0x0c, 0xfb, 0x22, 0xf6, 0x6c, 0x78, 0xf6, 0xc6, 0x60, 0x7c, 0x6f, 0xb8, 0x23, 0x50, 0x79, + 0x18, 0xef, 0x1c, 0x20, 0x49, 0x9e, 0xab, 0x08, 0x20, 0xcf, 0xc0, 0x8c, 0x4d, 0x37, 0x8c, 0x1b, + 0x21, 0xbf, 0x00, 0x2e, 0x8d, 0xb0, 0x48, 0x3d, 0x16, 0x64, 0xc6, 0x22, 0x79, 0x43, 0xaf, 0xf4, + 0xfb, 0x8f, 0x0d, 0x0e, 0xe2, 0xe2, 0x41, 0x18, 0x4b, 0x06, 0xf2, 0xcb, 0x47, 0x3d, 0x13, 0x3f, + 0x05, 0xc7, 0x59, 0xb3, 0x6f, 0x96, 0x56, 0x8a, 0xab, 0xab, 0xe5, 0xea, 0x72, 0xb9, 0x59, 0x59, + 0xa4, 0x1b, 0x50, 0x41, 0x4a, 0xb1, 0xd1, 0x28, 0xaf, 0xad, 0x37, 0xea, 0xcd, 0xf2, 0xb3, 0x4a, + 0xe5, 0xf2, 0x22, 0x71, 0x8b, 0x24, 0xe7, 0x9a, 0x3c, 0x07, 0xd6, 0x62, 0xb5, 0x7e, 0xae, 0xac, + 0x16, 0xb6, 0xcf, 0x14, 0x61, 0x3a, 0x34, 0x50, 0xb8, 0xdc, 0x2d, 0xe2, 0x4d, 0x6d, 0xb7, 0xc3, + 0x6c, 0xea, 0xc2, 0x11, 0x97, 0x3b, 0x22, 0x9b, 0x9a, 0xd1, 0xb9, 0x54, 0xc8, 0x28, 0x05, 0x98, + 0x09, 0x8f, 0x09, 0x05, 0x09, 0xbd, 0xf9, 0x2a, 0x98, 0x3a, 0x67, 0x5a, 0x17, 0x88, 0x2f, 0x1f, + 0x7a, 0x17, 0x8d, 0x6d, 0xe3, 0x9d, 0x12, 0x0e, 0x19, 0x60, 0x2f, 0x17, 0xf7, 0x18, 0xf1, 0xa8, + 0xcd, 0x0f, 0x3c, 0x09, 0x7c, 0x0d, 0x4c, 0x5f, 0xf4, 0x72, 0x07, 0x2d, 0x3d, 0x94, 0x84, 0xfe, + 0xbb, 0x98, 0x0f, 0xc8, 0xe0, 0x22, 0xd3, 0xf7, 0x51, 0x78, 0x93, 0x04, 0xf9, 0x65, 0xec, 0x14, + 0x3b, 0x9d, 0xb0, 0xdc, 0x5e, 0x22, 0x7c, 0xba, 0x8b, 0xab, 0x44, 0xb1, 0xd3, 0x89, 0x6e, 0x54, + 0x21, 0x01, 0x79, 0xa7, 0x10, 0xb8, 0x34, 0x41, 0xdf, 0xc9, 0x01, 0x05, 0xa6, 0x2f, 0xb1, 0xf7, + 0xcb, 0xbe, 0x9f, 0xc3, 0xa3, 0x21, 0x33, 0xe9, 0xd6, 0x20, 0xae, 0x51, 0x26, 0xde, 0x5f, 0xc2, + 0xcb, 0xa7, 0xdc, 0x0f, 0x13, 0xbb, 0x36, 0x2e, 0x69, 0xb6, 0x37, 0xb4, 0xf1, 0x35, 0xad, 0x9d, + 0x7f, 0x10, 0xb7, 0x9c, 0xf9, 0xca, 0x8e, 0x3b, 0xf1, 0xd9, 0xa0, 0x19, 0xfd, 0x50, 0x41, 0xec, + 0x5d, 0xf5, 0x28, 0xb8, 0x93, 0xc7, 0x8b, 0xba, 0xb3, 0x5d, 0xda, 0xd6, 0x1c, 0xb6, 0x63, 0xe1, + 0xbf, 0xa3, 0x17, 0x0d, 0x01, 0x67, 0xec, 0x0e, 0x7f, 0xe4, 0x21, 0xd1, 0xc4, 0x20, 0x8e, 0x60, + 0x5b, 0x7e, 0x18, 0x10, 0xff, 0x41, 0x82, 0x6c, 0xad, 0x8b, 0x0d, 0xe1, 0x13, 0x51, 0xbe, 0x6c, + 0xa5, 0x1e, 0xd9, 0xbe, 0x52, 0xdc, 0x43, 0xd0, 0xaf, 0xb4, 0x5b, 0x72, 0x84, 0x64, 0x6f, 0x86, + 0xac, 0x6e, 0x6c, 0x9a, 0xcc, 0xb2, 0xbd, 0x32, 0xc2, 0xd6, 0xa9, 0x18, 0x9b, 0xa6, 0x4a, 0x32, + 0x8a, 0x3a, 0x07, 0xc6, 0x95, 0x9d, 0xbe, 0xb8, 0xbf, 0x3e, 0x09, 0x79, 0xaa, 0xce, 0xe8, 0x11, + 0x19, 0xe4, 0x62, 0xbb, 0x1d, 0x21, 0x78, 0x69, 0x9f, 0xe0, 0x4d, 0xf2, 0x9b, 0x8f, 0x89, 0xff, + 0xce, 0x07, 0xb4, 0x11, 0xec, 0xdb, 0x59, 0x93, 0x2a, 0xb6, 0xdb, 0xd1, 0x7e, 0xc8, 0x7e, 0x81, + 0x12, 0x5f, 0x60, 0xb8, 0x85, 0xcb, 0x62, 0x2d, 0x3c, 0xf1, 0x40, 0x10, 0xc9, 0x5f, 0xfa, 0x10, + 0xfd, 0x93, 0x04, 0x13, 0xab, 0xba, 0xed, 0xb8, 0xd8, 0x14, 0x45, 0xb0, 0xb9, 0x0a, 0xa6, 0x3c, + 0xd1, 0xb8, 0x5d, 0x9e, 0xdb, 0x9f, 0x07, 0x09, 0xfc, 0x4c, 0xfc, 0x3e, 0x1e, 0x9d, 0xa7, 0xc5, + 0xd7, 0x9e, 0x71, 0x11, 0x7d, 0xd2, 0x24, 0x28, 0x56, 0xea, 0x2d, 0xf6, 0x77, 0x7c, 0x81, 0xaf, + 0x71, 0x02, 0xbf, 0x7d, 0x98, 0x22, 0xd3, 0x17, 0xfa, 0x67, 0x24, 0x00, 0xb7, 0x6c, 0x76, 0x9c, + 0xef, 0x49, 0xdc, 0x21, 0xfd, 0x18, 0xe9, 0xbe, 0x34, 0x2c, 0xdd, 0x35, 0x5e, 0xba, 0x3f, 0x3c, + 0xb8, 0xaa, 0x71, 0xc7, 0xf6, 0x94, 0x02, 0xc8, 0xba, 0x2f, 0x5a, 0xf7, 0x11, 0xbd, 0xc9, 0x17, + 0xea, 0x3a, 0x27, 0xd4, 0x3b, 0x87, 0x2c, 0x29, 0x7d, 0xb9, 0xfe, 0xa5, 0x04, 0x13, 0x75, 0xec, + 0xb8, 0xdd, 0x24, 0x3a, 0x2b, 0xd2, 0xc3, 0x87, 0xda, 0xb6, 0x24, 0xd8, 0xb6, 0xbf, 0x95, 0x11, + 0x0d, 0xf6, 0x13, 0x48, 0x86, 0xf1, 0x14, 0xb1, 0xfa, 0xf0, 0xa8, 0x50, 0xb0, 0x9f, 0x41, 0xd4, + 0xd2, 0x97, 0xee, 0x1b, 0x24, 0xdf, 0xdd, 0x82, 0x3f, 0x6d, 0x13, 0x36, 0x8b, 0x33, 0xfb, 0xcd, + 0x62, 0xf1, 0xd3, 0x36, 0xe1, 0x3a, 0x46, 0x7b, 0x0f, 0x24, 0x36, 0x36, 0x46, 0xb0, 0xb1, 0x3f, + 0x8c, 0xbc, 0x9e, 0x2b, 0x43, 0x9e, 0xed, 0x00, 0xdc, 0x13, 0xbf, 0x03, 0x30, 0x78, 0x6a, 0xf1, + 0xce, 0x21, 0x4c, 0xb9, 0xb8, 0x65, 0x79, 0x9f, 0x0d, 0x29, 0xc4, 0xc6, 0x4d, 0x90, 0x23, 0xd1, + 0x48, 0xd9, 0x38, 0x17, 0xf8, 0x64, 0x78, 0x24, 0xca, 0xee, 0x57, 0x95, 0x66, 0x4a, 0x8c, 0xc2, + 0x08, 0x56, 0xf2, 0x87, 0x41, 0xe1, 0x6b, 0x0a, 0xc0, 0xfa, 0xee, 0xf9, 0x8e, 0x6e, 0x6f, 0xeb, + 0xc6, 0x16, 0x7a, 0x8b, 0x04, 0x33, 0xec, 0x95, 0x06, 0xd5, 0x8c, 0x35, 0xff, 0x22, 0x8d, 0x82, + 0x02, 0xc8, 0xbb, 0x96, 0xce, 0x96, 0x01, 0xdc, 0x47, 0xe5, 0x2e, 0xdf, 0x3d, 0x2b, 0xdb, 0x13, + 0x4e, 0xc1, 0x15, 0x43, 0xc0, 0xc1, 0x7c, 0xa8, 0xf4, 0xc0, 0x4d, 0x2b, 0x1c, 0x39, 0x35, 0xc7, + 0x47, 0x4e, 0xe5, 0xce, 0x58, 0xe6, 0x7b, 0xce, 0x58, 0xba, 0x38, 0xda, 0xfa, 0xb3, 0x31, 0xf1, + 0xdf, 0x91, 0x55, 0xf2, 0xec, 0xfe, 0xf1, 0xa0, 0xa9, 0x1b, 0x64, 0x53, 0x87, 0xb9, 0x0f, 0x07, + 0x09, 0xe1, 0x3e, 0x6f, 0x4a, 0xb0, 0xcf, 0x7b, 0x5f, 0x30, 0xf7, 0x31, 0x05, 0x0d, 0xe7, 0x04, + 0x92, 0xe3, 0xd8, 0xcd, 0xf6, 0xb0, 0x8b, 0x3e, 0x28, 0x1c, 0x5c, 0x2d, 0x24, 0xe3, 0xd8, 0x59, + 0x0c, 0xe3, 0x40, 0xf2, 0x39, 0x08, 0x6d, 0xe4, 0xc6, 0xf5, 0xc0, 0x83, 0xe8, 0x27, 0xd3, 0xe5, + 0x9d, 0x21, 0xd6, 0x6b, 0x14, 0x98, 0xf3, 0x0e, 0xab, 0xd6, 0x16, 0xee, 0x2b, 0x97, 0x1a, 0x05, + 0xbc, 0xff, 0x00, 0x2b, 0x39, 0xaa, 0x4a, 0x8f, 0xa5, 0x06, 0x6b, 0x32, 0xe8, 0x7f, 0x4a, 0x90, + 0x67, 0xe6, 0xc6, 0x3d, 0x07, 0x84, 0x10, 0xbd, 0x6c, 0x18, 0x48, 0x62, 0x63, 0x06, 0x7c, 0x3c, + 0x29, 0x00, 0x23, 0x30, 0x30, 0x1e, 0x48, 0x0d, 0x00, 0xf4, 0x2f, 0x12, 0x64, 0x5d, 0x33, 0x48, + 0xec, 0x44, 0xf6, 0xc7, 0x84, 0xbd, 0x9b, 0x43, 0x02, 0x70, 0xc9, 0x47, 0xe8, 0xf7, 0x02, 0x4c, + 0x75, 0x69, 0x46, 0x3f, 0x1e, 0xc0, 0x75, 0x02, 0x9d, 0x11, 0x56, 0x83, 0xdf, 0xd0, 0x3b, 0x84, + 0x3c, 0xa4, 0xe3, 0xf9, 0x49, 0x06, 0x47, 0x79, 0x14, 0x87, 0xb7, 0x37, 0xd1, 0x77, 0x24, 0x00, + 0x15, 0xdb, 0x66, 0x67, 0x0f, 0x6f, 0x58, 0x3a, 0xba, 0x32, 0x00, 0x80, 0x35, 0xfb, 0x4c, 0xd0, + 0xec, 0x3f, 0x19, 0x16, 0xfc, 0x32, 0x2f, 0xf8, 0x5b, 0xa3, 0x35, 0xcf, 0x23, 0x1e, 0x21, 0xfe, + 0xbb, 0x61, 0x82, 0xc9, 0x91, 0xd9, 0x94, 0x62, 0xc2, 0xf7, 0x7e, 0x42, 0xef, 0xf6, 0x45, 0x7f, + 0x1f, 0x27, 0xfa, 0xa7, 0x27, 0xe6, 0x28, 0x19, 0x00, 0xa5, 0x21, 0x00, 0x38, 0x0a, 0xd3, 0x1e, + 0x00, 0x1b, 0x6a, 0xa5, 0x80, 0xd1, 0x5b, 0x65, 0xe2, 0x26, 0x41, 0x07, 0xb7, 0x83, 0xf7, 0x34, + 0x5f, 0x11, 0x9e, 0xec, 0x87, 0xe4, 0xe1, 0x97, 0x9f, 0x12, 0x40, 0x7f, 0x2a, 0x34, 0xbb, 0x17, + 0x60, 0xe8, 0xf1, 0xd2, 0x5f, 0x9d, 0x29, 0xc3, 0x2c, 0x67, 0x95, 0x28, 0xa7, 0xe0, 0x38, 0x97, + 0x40, 0xc7, 0xbb, 0x76, 0xe1, 0x88, 0x82, 0xe0, 0x24, 0xf7, 0x85, 0xbd, 0xe0, 0x76, 0x21, 0x83, + 0xbe, 0xf1, 0xd9, 0x8c, 0xbf, 0xde, 0xf3, 0xce, 0x2c, 0x5b, 0x69, 0xfb, 0x30, 0x1f, 0x82, 0xae, + 0x65, 0x1a, 0x0e, 0x7e, 0x28, 0xe4, 0xa6, 0xe2, 0x27, 0xc4, 0x5a, 0x0d, 0xa7, 0x60, 0xc2, 0xb1, + 0xc2, 0xae, 0x2b, 0xde, 0x6b, 0x58, 0xb1, 0x72, 0xbc, 0x62, 0x55, 0xe1, 0x8c, 0x6e, 0xb4, 0x3a, + 0xbb, 0x6d, 0xac, 0xe2, 0x8e, 0xe6, 0xca, 0xd0, 0x2e, 0xda, 0x8b, 0xb8, 0x8b, 0x8d, 0x36, 0x36, + 0x1c, 0xca, 0xa7, 0x77, 0x04, 0x4e, 0x20, 0x27, 0xaf, 0x8c, 0x77, 0xf1, 0xca, 0xf8, 0xa4, 0x7e, + 0x4b, 0xb8, 0x31, 0xeb, 0x7d, 0xb7, 0x03, 0xd0, 0xba, 0x9d, 0xd5, 0xf1, 0x45, 0xa6, 0x86, 0x57, + 0xf4, 0xac, 0xfa, 0xd5, 0xfc, 0x0c, 0x6a, 0x28, 0x33, 0x7a, 0xcc, 0x57, 0xbf, 0x7b, 0x39, 0xf5, + 0xbb, 0x49, 0x90, 0x85, 0x64, 0x5a, 0xd7, 0x1d, 0x42, 0xeb, 0x66, 0x61, 0x2a, 0xd8, 0x4d, 0x96, + 0x95, 0x2b, 0xe0, 0x84, 0xe7, 0x06, 0x5c, 0x2d, 0x97, 0x17, 0xeb, 0xcd, 0x8d, 0xf5, 0x65, 0xb5, + 0xb8, 0x58, 0x2e, 0x80, 0xab, 0x9f, 0x54, 0x2f, 0x7d, 0xef, 0xdd, 0x2c, 0xfa, 0xac, 0x04, 0x39, + 0x72, 0x7e, 0x13, 0xfd, 0xf8, 0x88, 0x34, 0xc7, 0xe6, 0x9c, 0x9e, 0xfc, 0x71, 0x57, 0x3c, 0x34, + 0x3c, 0x13, 0x26, 0xe1, 0xea, 0x40, 0xa1, 0xe1, 0x63, 0x08, 0xa5, 0x3f, 0x13, 0x72, 0x9b, 0x64, + 0x7d, 0xdb, 0xbc, 0xf8, 0xfd, 0xdc, 0x24, 0xdd, 0xfa, 0x1f, 0x72, 0x93, 0xec, 0xc3, 0xc2, 0xd8, + 0x9b, 0x64, 0x9f, 0x76, 0x17, 0xd3, 0x4c, 0xd1, 0x73, 0x72, 0xfe, 0xfc, 0xef, 0x79, 0xd2, 0x81, + 0xf6, 0xbe, 0x8a, 0x30, 0xab, 0x1b, 0x0e, 0xb6, 0x0c, 0xad, 0xb3, 0xd4, 0xd1, 0xb6, 0x3c, 0xfb, + 0xb4, 0x77, 0xc3, 0xa3, 0x12, 0xca, 0xa3, 0xf2, 0x7f, 0x28, 0xa7, 0x01, 0x1c, 0xbc, 0xd3, 0xed, + 0x68, 0x4e, 0xa0, 0x7a, 0xa1, 0x94, 0xb0, 0xf6, 0x65, 0x79, 0xed, 0xbb, 0x05, 0x2e, 0xa3, 0xa0, + 0x35, 0x2e, 0x75, 0xf1, 0x86, 0xa1, 0xff, 0xc4, 0x2e, 0x89, 0x58, 0x4a, 0x75, 0xb4, 0xdf, 0x27, + 0x6e, 0x07, 0x28, 0xdf, 0xb3, 0x03, 0xf4, 0x0f, 0xc2, 0x91, 0x50, 0xbc, 0x56, 0x3f, 0x20, 0x12, + 0x8a, 0xdf, 0xd2, 0xe4, 0x9e, 0x96, 0xe6, 0xaf, 0xcb, 0x64, 0x05, 0xd6, 0x65, 0xc2, 0xa8, 0xe4, + 0x04, 0xe7, 0xf7, 0xaf, 0x10, 0x0a, 0xb5, 0x12, 0x57, 0x8d, 0x31, 0xac, 0x99, 0xcb, 0x30, 0x47, + 0x8b, 0x5e, 0x30, 0xcd, 0x0b, 0x3b, 0x9a, 0x75, 0x01, 0x59, 0x07, 0x52, 0xc5, 0xd8, 0xed, 0xa7, + 0xc8, 0x3d, 0xd5, 0x4f, 0x08, 0xcf, 0x19, 0x38, 0x71, 0x79, 0x3c, 0x8f, 0x67, 0xff, 0xe9, 0x75, + 0x42, 0x53, 0x08, 0x11, 0x06, 0xd3, 0xc7, 0xf5, 0x8f, 0x7d, 0x5c, 0xbd, 0x8e, 0x3e, 0xbc, 0x74, + 0x3f, 0x4a, 0x5c, 0xd1, 0x17, 0x87, 0xc3, 0xce, 0xe3, 0x6b, 0x08, 0xec, 0x0a, 0x20, 0x5f, 0xf0, + 0xbd, 0x85, 0xdc, 0xc7, 0x70, 0x85, 0xb2, 0xe9, 0xa1, 0x19, 0xc1, 0xf2, 0x58, 0xd0, 0x3c, 0xce, + 0xb3, 0x50, 0xeb, 0xa6, 0x8a, 0xe9, 0x17, 0x84, 0xb7, 0xc4, 0xfa, 0x0a, 0x88, 0x72, 0x37, 0x9e, + 0x56, 0x29, 0xb6, 0x9f, 0x26, 0xce, 0x66, 0xfa, 0x68, 0xbe, 0x30, 0x07, 0x53, 0x5e, 0xac, 0x1a, + 0x72, 0x95, 0x92, 0x8f, 0xe1, 0x49, 0xc8, 0xdb, 0xe6, 0xae, 0xd5, 0xc2, 0x6c, 0x93, 0x92, 0xbd, + 0x0d, 0xb1, 0xa1, 0x36, 0x70, 0x3c, 0xdf, 0x67, 0x32, 0x64, 0x13, 0x9b, 0x0c, 0xd1, 0x06, 0x69, + 0xdc, 0x00, 0xff, 0x22, 0xe1, 0xf8, 0xf7, 0x1c, 0x66, 0x75, 0xec, 0x3c, 0x1e, 0xc7, 0xf8, 0x3f, + 0x14, 0xda, 0xae, 0x19, 0x50, 0x93, 0x64, 0x2a, 0x57, 0x1b, 0xc2, 0x50, 0xbd, 0x12, 0x2e, 0xf7, + 0x72, 0x30, 0x0b, 0x95, 0x58, 0xa4, 0x1b, 0xea, 0x6a, 0x41, 0x46, 0xcf, 0xcd, 0x42, 0x81, 0xb2, + 0x56, 0xf3, 0x8d, 0x35, 0xf4, 0x92, 0xcc, 0x61, 0x5b, 0xa4, 0xd1, 0x53, 0xcc, 0x4f, 0x49, 0xa2, + 0x31, 0x76, 0x39, 0xc1, 0x07, 0xb5, 0x8b, 0xd0, 0xa4, 0x21, 0x9a, 0x59, 0x8c, 0xf2, 0xa1, 0xdf, + 0xce, 0x88, 0x84, 0xec, 0x15, 0x63, 0x71, 0x0c, 0xf1, 0x95, 0xb2, 0x5e, 0xc8, 0xb1, 0x25, 0xcb, + 0xdc, 0xd9, 0xb0, 0x3a, 0xe8, 0xff, 0x14, 0x8a, 0x88, 0x1e, 0x61, 0xfe, 0x4b, 0xd1, 0xe6, 0x3f, + 0x59, 0x32, 0xee, 0x04, 0x7b, 0x55, 0x9d, 0x21, 0x86, 0x6f, 0xe5, 0x7a, 0x98, 0xd3, 0xda, 0xed, + 0x75, 0x6d, 0x0b, 0x97, 0xdc, 0x79, 0xb5, 0xe1, 0xb0, 0x70, 0x44, 0x3d, 0xa9, 0xb1, 0x5d, 0x91, + 0xf8, 0x3a, 0x28, 0x07, 0x12, 0x93, 0xcf, 0x58, 0x86, 0x37, 0x77, 0x48, 0x68, 0x6d, 0x6b, 0x41, + 0x70, 0x34, 0xf6, 0x26, 0xe8, 0x0c, 0x25, 0xc0, 0x77, 0xfa, 0x9a, 0xf5, 0xfb, 0x12, 0x4c, 0xb8, + 0xf2, 0x2e, 0xb6, 0xdb, 0xe8, 0x89, 0x5c, 0x0c, 0xc1, 0x48, 0x77, 0xb4, 0x9f, 0x15, 0xf6, 0x03, + 0xf4, 0x6a, 0x48, 0xe9, 0x47, 0x60, 0x12, 0x08, 0x51, 0xe2, 0x84, 0x28, 0xe6, 0xee, 0x17, 0x5b, + 0x44, 0xfa, 0xe2, 0xfb, 0x98, 0x04, 0xb3, 0xde, 0x3c, 0x62, 0x09, 0x3b, 0xad, 0x6d, 0x74, 0xbb, + 0xe8, 0x42, 0x13, 0x6b, 0x69, 0xfe, 0x9e, 0x6c, 0x07, 0x7d, 0x37, 0x93, 0x50, 0xe5, 0xb9, 0x92, + 0x23, 0x56, 0xe9, 0x12, 0xe9, 0x62, 0x1c, 0xc1, 0xf4, 0x85, 0xf9, 0x98, 0x04, 0xd0, 0x30, 0xfd, + 0xb9, 0xee, 0x01, 0x24, 0xf9, 0x4b, 0xc2, 0xdb, 0xb5, 0xac, 0xe2, 0x41, 0xb1, 0xc9, 0x7b, 0x0e, + 0x41, 0x6f, 0xa6, 0x41, 0x25, 0x8d, 0xa5, 0xad, 0x4f, 0x2d, 0xee, 0x76, 0x3b, 0x7a, 0x4b, 0x73, + 0x7a, 0x5d, 0xf0, 0xa2, 0xc5, 0x4b, 0xee, 0x19, 0x4d, 0x64, 0x14, 0xfa, 0x65, 0x44, 0xc8, 0x92, + 0x46, 0xab, 0x91, 0xbc, 0x68, 0x35, 0x82, 0x6e, 0x35, 0x03, 0x88, 0x8f, 0x41, 0x3d, 0x65, 0x38, + 0x5a, 0xeb, 0x62, 0x63, 0xc1, 0xc2, 0x5a, 0xbb, 0x65, 0xed, 0xee, 0x9c, 0xb7, 0xc3, 0xfe, 0xa3, + 0xf1, 0x3a, 0x1a, 0x5a, 0x3a, 0x96, 0xb8, 0xa5, 0x63, 0xf4, 0x33, 0xb2, 0x68, 0xec, 0xa4, 0xd0, + 0x06, 0x47, 0x88, 0x87, 0x21, 0x86, 0xba, 0x44, 0x5e, 0x4f, 0x3d, 0xab, 0xc4, 0xd9, 0x24, 0xab, + 0xc4, 0xaf, 0x17, 0x8a, 0xc4, 0x24, 0x54, 0xaf, 0xb1, 0x38, 0xaf, 0xcd, 0xd5, 0xb1, 0x13, 0x01, + 0xef, 0x75, 0x30, 0x7b, 0x3e, 0xf8, 0xe2, 0x43, 0xcc, 0x27, 0xf6, 0x71, 0x29, 0x7d, 0x43, 0xd2, + 0x15, 0x18, 0x9e, 0x85, 0x08, 0x74, 0x7d, 0x04, 0x25, 0x11, 0xbf, 0xb5, 0x44, 0xcb, 0x29, 0xb1, + 0xe5, 0xa7, 0x8f, 0xc2, 0x07, 0x25, 0x98, 0x26, 0xb7, 0xa7, 0x2e, 0x5c, 0x22, 0x27, 0x29, 0x05, + 0x8d, 0x92, 0x17, 0x86, 0xc5, 0xac, 0x40, 0xb6, 0xa3, 0x1b, 0x17, 0x3c, 0x87, 0x43, 0xf7, 0x39, + 0xb8, 0x8b, 0x4f, 0xea, 0x73, 0x17, 0x9f, 0xbf, 0x4f, 0xe1, 0x97, 0x7b, 0xa0, 0xcb, 0xa1, 0x07, + 0x92, 0x4b, 0x5f, 0x8c, 0x7f, 0x97, 0x85, 0x7c, 0x1d, 0x6b, 0x56, 0x6b, 0x1b, 0xbd, 0x53, 0xea, + 0x3b, 0x55, 0x98, 0xe4, 0xa7, 0x0a, 0x4b, 0x30, 0xb1, 0xa9, 0x77, 0x1c, 0x6c, 0x51, 0x27, 0xec, + 0x70, 0xd7, 0x4e, 0x9b, 0xf8, 0x42, 0xc7, 0x6c, 0x5d, 0x98, 0x67, 0xa6, 0xfb, 0xbc, 0x17, 0xbb, + 0x75, 0x7e, 0x89, 0xfc, 0xa4, 0x7a, 0x3f, 0xbb, 0x06, 0xa1, 0x6d, 0x5a, 0x4e, 0xd4, 0xb5, 0x1c, + 0x11, 0x54, 0xea, 0xa6, 0xe5, 0xa8, 0xf4, 0x47, 0x17, 0xe6, 0xcd, 0xdd, 0x4e, 0xa7, 0x81, 0x1f, + 0x72, 0xbc, 0x69, 0x9b, 0xf7, 0xee, 0x1a, 0x8b, 0xe6, 0xe6, 0xa6, 0x8d, 0xe9, 0xa2, 0x41, 0x4e, + 0x65, 0x6f, 0xca, 0x71, 0xc8, 0x75, 0xf4, 0x1d, 0x9d, 0x4e, 0x34, 0x72, 0x2a, 0x7d, 0x51, 0x6e, + 0x84, 0x42, 0x30, 0xc7, 0xa1, 0x8c, 0x9e, 0xca, 0x93, 0xa6, 0xb9, 0x2f, 0xdd, 0xd5, 0x99, 0x0b, + 0xf8, 0x92, 0x7d, 0x6a, 0x82, 0x7c, 0x27, 0xcf, 0xfc, 0x89, 0x17, 0x91, 0xfd, 0x0e, 0x2a, 0xf1, + 0xe8, 0x19, 0xac, 0x85, 0x5b, 0xa6, 0xd5, 0xf6, 0x64, 0x13, 0x3d, 0xc1, 0x60, 0xf9, 0x92, 0xed, + 0x52, 0xf4, 0x2d, 0x3c, 0x7d, 0x4d, 0x7b, 0x5b, 0xde, 0xed, 0x36, 0xdd, 0xa2, 0xcf, 0xe9, 0xce, + 0xf6, 0x1a, 0x76, 0x34, 0xf4, 0x77, 0x72, 0x5f, 0x8d, 0x9b, 0xfe, 0xff, 0x34, 0x6e, 0x80, 0xc6, + 0xd1, 0xc8, 0x59, 0xce, 0xae, 0x65, 0xb8, 0x72, 0x64, 0x8e, 0xac, 0xa1, 0x14, 0xe5, 0x4e, 0xb8, + 0x22, 0x78, 0xf3, 0x96, 0x4a, 0x17, 0x43, 0xbe, 0xad, 0x93, 0x6a, 0x74, 0x06, 0x65, 0x1d, 0xae, + 0xa5, 0x1f, 0x57, 0x1a, 0x6b, 0xab, 0x2b, 0xfa, 0xd6, 0x76, 0x47, 0xdf, 0xda, 0x76, 0xec, 0x8a, + 0x61, 0x3b, 0x58, 0x6b, 0xd7, 0x36, 0x55, 0x7a, 0xa1, 0x0e, 0x10, 0x3a, 0x22, 0x59, 0x79, 0x27, + 0x6d, 0xb1, 0xd1, 0x2d, 0xac, 0x29, 0x11, 0x2d, 0xe5, 0xe9, 0x6e, 0x4b, 0xb1, 0x77, 0x3b, 0x3e, + 0xa6, 0x57, 0xf5, 0x60, 0x1a, 0xa8, 0xfa, 0x6e, 0x87, 0x34, 0x17, 0x92, 0x39, 0xe9, 0x38, 0x17, + 0xc3, 0x49, 0xfa, 0xcd, 0xe6, 0xff, 0xc9, 0x43, 0x6e, 0xd9, 0xd2, 0xba, 0xdb, 0xe8, 0xb9, 0xa1, + 0xfe, 0x79, 0x54, 0x6d, 0xc2, 0xd7, 0x4e, 0x69, 0x90, 0x76, 0xca, 0x03, 0xb4, 0x33, 0x1b, 0xd2, + 0xce, 0xe8, 0x45, 0xe5, 0x33, 0x30, 0xd3, 0x32, 0x3b, 0x1d, 0xdc, 0x72, 0xe5, 0x51, 0x69, 0x93, + 0xd5, 0x9c, 0x29, 0x95, 0x4b, 0x23, 0xf1, 0xad, 0xb1, 0x53, 0xa7, 0x6b, 0xe8, 0x54, 0xe9, 0x83, + 0x04, 0xf4, 0x12, 0x09, 0xb2, 0xe5, 0xf6, 0x16, 0xe6, 0xd6, 0xd9, 0x33, 0xa1, 0x75, 0xf6, 0x93, + 0x90, 0x77, 0x34, 0x6b, 0x0b, 0x3b, 0xde, 0x3a, 0x01, 0x7d, 0xf3, 0xc3, 0x6e, 0xcb, 0xa1, 0xb0, + 0xdb, 0x3f, 0x0c, 0x59, 0x57, 0x66, 0xcc, 0x2f, 0xfd, 0xda, 0x7e, 0xf0, 0x13, 0xd9, 0xcf, 0xbb, + 0x25, 0xce, 0xbb, 0xb5, 0x56, 0xc9, 0x0f, 0xbd, 0x58, 0xe7, 0xf6, 0x61, 0x4d, 0xee, 0x06, 0x6d, + 0x99, 0x46, 0x65, 0x47, 0xdb, 0xc2, 0xac, 0x9a, 0x41, 0x82, 0xf7, 0xb5, 0xbc, 0x63, 0x3e, 0xa8, + 0xb3, 0x00, 0x93, 0x41, 0x82, 0x5b, 0x85, 0x6d, 0xbd, 0xdd, 0xc6, 0x06, 0x6b, 0xd9, 0xec, 0xed, + 0xcc, 0x69, 0xc8, 0xba, 0x3c, 0xb8, 0xfa, 0xe3, 0x1a, 0x0b, 0x85, 0x23, 0xca, 0x8c, 0xdb, 0xac, + 0x68, 0xe3, 0x2d, 0x64, 0xf8, 0x35, 0x55, 0x11, 0xb7, 0x1d, 0x5a, 0xb9, 0xfe, 0x8d, 0xeb, 0x29, + 0x90, 0x33, 0xcc, 0x36, 0x1e, 0x38, 0x08, 0xd1, 0x5c, 0xca, 0xd3, 0x20, 0x87, 0xdb, 0x6e, 0xaf, + 0x20, 0x93, 0xec, 0xa7, 0xe3, 0x65, 0xa9, 0xd2, 0xcc, 0xc9, 0x7c, 0x83, 0xfa, 0x71, 0x9b, 0x7e, + 0x03, 0xfc, 0xf9, 0x09, 0x38, 0x4a, 0xfb, 0x80, 0xfa, 0xee, 0x79, 0x97, 0xd4, 0x79, 0x8c, 0x1e, + 0xed, 0x3f, 0x70, 0x1d, 0xe5, 0x95, 0xfd, 0x38, 0xe4, 0xec, 0xdd, 0xf3, 0xbe, 0x11, 0x4a, 0x5f, + 0xc2, 0x4d, 0x57, 0x1a, 0xc9, 0x70, 0x26, 0x0f, 0x3b, 0x9c, 0x71, 0x43, 0x93, 0xec, 0x35, 0xfe, + 0x60, 0x20, 0xa3, 0x27, 0x2a, 0xbc, 0x81, 0xac, 0xdf, 0x30, 0x74, 0x0a, 0x26, 0xb4, 0x4d, 0x07, + 0x5b, 0x81, 0x99, 0xc8, 0x5e, 0xdd, 0xa1, 0xf2, 0x3c, 0xde, 0x34, 0x2d, 0x57, 0x2c, 0x34, 0xea, + 0xba, 0xff, 0x1e, 0x6a, 0xb9, 0xc0, 0xed, 0x90, 0xdd, 0x04, 0xc7, 0x0c, 0x73, 0x11, 0x77, 0x99, + 0x9c, 0x29, 0x8a, 0xb3, 0xa4, 0x05, 0xec, 0xff, 0xb0, 0xaf, 0x2b, 0x99, 0xdb, 0xdf, 0x95, 0xa0, + 0x4f, 0x26, 0x9d, 0x33, 0xf7, 0x00, 0x3d, 0x32, 0x0b, 0x4d, 0x79, 0x26, 0xcc, 0xb4, 0x99, 0x8b, + 0x56, 0x4b, 0xf7, 0x5b, 0x49, 0xe4, 0x7f, 0x5c, 0xe6, 0x40, 0x91, 0xb2, 0x61, 0x45, 0x5a, 0x86, + 0x49, 0x72, 0xf6, 0xd9, 0xd5, 0xa4, 0x5c, 0x8f, 0x4b, 0x3c, 0x99, 0xd6, 0xf9, 0x95, 0x0a, 0x89, + 0x6d, 0xbe, 0xc4, 0x7e, 0x51, 0xfd, 0x9f, 0x93, 0xcd, 0xbe, 0xe3, 0x25, 0x94, 0x7e, 0x73, 0xfc, + 0x9d, 0x3c, 0x5c, 0x51, 0xb2, 0x4c, 0xdb, 0x26, 0x67, 0x60, 0x7a, 0x1b, 0xe6, 0x6b, 0x25, 0xee, + 0x02, 0x8e, 0xc7, 0x75, 0xf3, 0xeb, 0xd7, 0xa0, 0xc6, 0xd7, 0x34, 0xbe, 0x22, 0x1c, 0x35, 0xc6, + 0xdf, 0x7f, 0x88, 0x10, 0xfa, 0xf7, 0x47, 0x23, 0x79, 0x5b, 0x46, 0x24, 0x90, 0x4d, 0x42, 0x59, + 0xa5, 0xdf, 0x5c, 0xbe, 0x20, 0xc1, 0x95, 0xbd, 0xdc, 0x6c, 0x18, 0xb6, 0xdf, 0x60, 0xae, 0x1e, + 0xd0, 0x5e, 0xf8, 0xc0, 0x27, 0xb1, 0x57, 0x5f, 0x46, 0xd4, 0x3d, 0x54, 0x5a, 0xc4, 0x62, 0x49, + 0x70, 0xa2, 0x26, 0xee, 0xea, 0xcb, 0xc4, 0xe4, 0xd3, 0x17, 0xee, 0xa7, 0xb2, 0x70, 0x74, 0xd9, + 0x32, 0x77, 0xbb, 0x76, 0xd0, 0x03, 0xfd, 0x75, 0xff, 0x0d, 0xd7, 0xbc, 0x88, 0x69, 0x70, 0x0d, + 0x4c, 0x5b, 0xcc, 0x9a, 0x0b, 0xb6, 0x5f, 0xc3, 0x49, 0xe1, 0xde, 0x4b, 0x3e, 0x48, 0xef, 0x15, + 0xf4, 0x33, 0x59, 0xae, 0x9f, 0xe9, 0xed, 0x39, 0x72, 0x7d, 0x7a, 0x8e, 0xbf, 0x92, 0x12, 0x0e, + 0xaa, 0x3d, 0x22, 0x8a, 0xe8, 0x2f, 0x4a, 0x90, 0xdf, 0x22, 0x19, 0x59, 0x77, 0xf1, 0x64, 0xb1, + 0x9a, 0x11, 0xe2, 0x2a, 0xfb, 0x35, 0x90, 0xab, 0x1c, 0xd6, 0xe1, 0x44, 0x03, 0x5c, 0x3c, 0xb7, + 0xe9, 0x2b, 0xd5, 0x2b, 0xb3, 0x30, 0xe3, 0x97, 0x5e, 0x69, 0xdb, 0xe8, 0x85, 0xfd, 0x35, 0x6a, + 0x56, 0x44, 0xa3, 0xf6, 0xad, 0x33, 0xfb, 0xa3, 0x8e, 0x1c, 0x1a, 0x75, 0xfa, 0x8e, 0x2e, 0x33, + 0x11, 0xa3, 0x0b, 0x7a, 0x8e, 0x2c, 0x7a, 0x85, 0x15, 0xdf, 0xb5, 0x92, 0xda, 0x3c, 0x9e, 0x07, + 0x0b, 0xc1, 0x8b, 0xb4, 0x06, 0xd7, 0x2a, 0x7d, 0x25, 0x79, 0x8f, 0x04, 0xc7, 0xf6, 0x77, 0xe6, + 0x3f, 0xc0, 0x7b, 0xa1, 0xb9, 0x75, 0xb2, 0x7d, 0x2f, 0x34, 0xf2, 0xc6, 0x6f, 0xd2, 0xc5, 0x46, + 0x21, 0xe1, 0xec, 0xbd, 0xc1, 0x9d, 0xb8, 0x58, 0x9c, 0x11, 0x41, 0xa2, 0xe9, 0x0b, 0xf0, 0x97, + 0x65, 0x98, 0xaa, 0x63, 0x67, 0x55, 0xbb, 0x64, 0xee, 0x3a, 0x48, 0x13, 0xdd, 0x9e, 0x7b, 0x06, + 0xe4, 0x3b, 0xe4, 0x17, 0xd2, 0xc1, 0x84, 0xa3, 0x7e, 0x86, 0xf7, 0xb7, 0x88, 0xef, 0x0f, 0x25, + 0xad, 0xb2, 0xfc, 0x7c, 0xf8, 0x17, 0x91, 0xdd, 0x51, 0x9f, 0xbb, 0x91, 0x6c, 0xed, 0x24, 0xda, + 0x3b, 0x8d, 0x2a, 0x3a, 0x7d, 0x58, 0x7e, 0x46, 0x86, 0xd9, 0x3a, 0x76, 0x2a, 0xf6, 0x92, 0xb6, + 0x67, 0x5a, 0xba, 0x83, 0xc3, 0x57, 0x83, 0xc6, 0x43, 0x73, 0x1a, 0x40, 0xf7, 0x7f, 0x63, 0x41, + 0xa9, 0x42, 0x29, 0xe8, 0xb7, 0x93, 0x3a, 0x0a, 0x71, 0x7c, 0x8c, 0x04, 0x84, 0x44, 0x3e, 0x16, + 0x71, 0xc5, 0xa7, 0x0f, 0xc4, 0xe7, 0x25, 0x06, 0x44, 0xd1, 0x6a, 0x6d, 0xeb, 0x7b, 0xb8, 0x9d, + 0x10, 0x08, 0xef, 0xb7, 0x00, 0x08, 0x9f, 0x50, 0x62, 0xf7, 0x15, 0x8e, 0x8f, 0x51, 0xb8, 0xaf, + 0xc4, 0x11, 0x1c, 0x4b, 0x5c, 0x29, 0xb7, 0xeb, 0x61, 0xeb, 0x99, 0xf7, 0x88, 0x8a, 0x35, 0x30, + 0xd9, 0xa4, 0xb0, 0xc9, 0x36, 0x54, 0xc7, 0x42, 0xcb, 0x1e, 0xa4, 0xd3, 0xd9, 0x34, 0x3a, 0x96, + 0xbe, 0x45, 0xa7, 0x2f, 0xf4, 0x77, 0xc8, 0x70, 0xc2, 0x0f, 0xb8, 0x52, 0xc7, 0xce, 0xa2, 0x66, + 0x6f, 0x9f, 0x37, 0x35, 0xab, 0x8d, 0x4a, 0x23, 0x38, 0xf1, 0x87, 0x3e, 0x17, 0x06, 0xa1, 0xca, + 0x83, 0xd0, 0xd7, 0x55, 0xb4, 0x2f, 0x2f, 0xa3, 0xe8, 0x64, 0x62, 0xbd, 0x59, 0x7f, 0xd7, 0x07, + 0xeb, 0x47, 0x38, 0xb0, 0xee, 0x1a, 0x96, 0xc5, 0xf4, 0x81, 0xfb, 0x35, 0x3a, 0x22, 0x84, 0xbc, + 0x9a, 0x1f, 0x10, 0x05, 0x2c, 0xc2, 0xab, 0x55, 0x8e, 0xf4, 0x6a, 0x1d, 0x6a, 0x8c, 0x18, 0xe8, + 0x91, 0x9c, 0xee, 0x18, 0x71, 0x88, 0xde, 0xc6, 0x6f, 0x91, 0xa1, 0x40, 0x22, 0x6e, 0x85, 0x3c, + 0xbe, 0xc3, 0x01, 0xac, 0xe3, 0xd1, 0xd9, 0xe7, 0x5d, 0x3e, 0x91, 0xd4, 0xbb, 0x1c, 0xbd, 0x39, + 0xa9, 0x0f, 0x79, 0x2f, 0xb7, 0x23, 0x41, 0x2c, 0x91, 0x8b, 0xf8, 0x00, 0x0e, 0xd2, 0x07, 0xed, + 0xbf, 0xc9, 0x00, 0x6e, 0x83, 0x66, 0x67, 0x1f, 0x9e, 0x25, 0x0a, 0xd7, 0xcd, 0x61, 0xbf, 0x7a, + 0x17, 0xa8, 0x13, 0x3d, 0x40, 0x51, 0x8a, 0xc1, 0xa9, 0x8a, 0x47, 0x93, 0xfa, 0x56, 0x06, 0x5c, + 0x8d, 0x04, 0x96, 0x44, 0xde, 0x96, 0x91, 0x65, 0xa7, 0x0f, 0xc8, 0xff, 0x90, 0x20, 0xd7, 0x30, + 0xeb, 0xd8, 0x39, 0xb8, 0x29, 0x90, 0xf8, 0xd8, 0x3e, 0x29, 0x77, 0x14, 0xc7, 0xf6, 0xfb, 0x11, + 0x4a, 0x5f, 0x74, 0x6f, 0x97, 0x60, 0xa6, 0x61, 0x96, 0xfc, 0xc5, 0x29, 0x71, 0x5f, 0x55, 0xf1, + 0x6b, 0xb8, 0xfd, 0x0a, 0x06, 0xc5, 0x1c, 0xe8, 0x1a, 0xee, 0xc1, 0xf4, 0xd2, 0x97, 0xdb, 0xed, + 0x70, 0x74, 0xc3, 0x68, 0x9b, 0x2a, 0x6e, 0x9b, 0x6c, 0xa5, 0x5b, 0x51, 0x20, 0xbb, 0x6b, 0xb4, + 0x4d, 0xc2, 0x72, 0x4e, 0x25, 0xcf, 0x6e, 0x9a, 0x85, 0xdb, 0x26, 0xf3, 0x0d, 0x20, 0xcf, 0xe8, + 0x2b, 0x32, 0x64, 0xdd, 0x7f, 0xc5, 0x45, 0xfd, 0x16, 0x39, 0x61, 0x20, 0x02, 0x97, 0xfc, 0x48, + 0x2c, 0xa1, 0x7b, 0x42, 0x6b, 0xff, 0xd4, 0x83, 0xf5, 0xda, 0xa8, 0xf2, 0x42, 0xa2, 0x08, 0xd6, + 0xfc, 0x95, 0x53, 0x30, 0x71, 0xbe, 0x63, 0xb6, 0x2e, 0x04, 0xe7, 0xe5, 0xd9, 0xab, 0x72, 0x23, + 0xe4, 0x2c, 0xcd, 0xd8, 0xc2, 0x6c, 0x4f, 0xe1, 0x78, 0x4f, 0x5f, 0x48, 0xbc, 0x5e, 0x54, 0x9a, + 0x05, 0xbd, 0x39, 0x49, 0x08, 0x84, 0x3e, 0x95, 0x4f, 0xa6, 0x0f, 0x8b, 0x43, 0x9c, 0x2c, 0x2b, + 0xc0, 0x4c, 0xa9, 0x48, 0x2f, 0xbc, 0x5f, 0xab, 0x9d, 0x2d, 0x17, 0x64, 0x02, 0xb3, 0x2b, 0x93, + 0x14, 0x61, 0x76, 0xc9, 0x7f, 0xdf, 0xc2, 0xdc, 0xa7, 0xf2, 0x87, 0x01, 0xf3, 0xc7, 0x24, 0x98, + 0x5d, 0xd5, 0x6d, 0x27, 0xca, 0xdb, 0x3f, 0x26, 0xe0, 0xee, 0x8b, 0x92, 0x9a, 0xca, 0x5c, 0x39, + 0xc2, 0x91, 0x76, 0x13, 0x99, 0xc3, 0x71, 0x45, 0x8c, 0xe7, 0x58, 0x0a, 0xe1, 0x80, 0x5e, 0x3b, + 0x2d, 0x2c, 0xc9, 0xc4, 0x86, 0x52, 0x50, 0xc8, 0xf8, 0x0d, 0xa5, 0xc8, 0xb2, 0xd3, 0x97, 0xef, + 0x57, 0x24, 0x38, 0xe6, 0x16, 0x1f, 0xb7, 0x2c, 0x15, 0x2d, 0xe6, 0x81, 0xcb, 0x52, 0x89, 0x57, + 0xc6, 0xf7, 0xf1, 0x32, 0x8a, 0x95, 0xf1, 0x41, 0x44, 0xc7, 0x2c, 0xe6, 0x88, 0x65, 0xd8, 0x41, + 0x62, 0x8e, 0x59, 0x86, 0x1d, 0x5e, 0xcc, 0xf1, 0x4b, 0xb1, 0x43, 0x8a, 0xf9, 0xd0, 0x16, 0x58, + 0x5f, 0x2d, 0xfb, 0x62, 0x8e, 0x5c, 0xdb, 0x88, 0x11, 0x73, 0xe2, 0x13, 0xbb, 0xe8, 0xad, 0x43, + 0x0a, 0x7e, 0xc4, 0xeb, 0x1b, 0xc3, 0xc0, 0x74, 0x88, 0x6b, 0x1c, 0xbf, 0x2e, 0xc3, 0x1c, 0xe3, + 0xa2, 0xff, 0x94, 0x39, 0x06, 0xa3, 0xc4, 0x53, 0xe6, 0xc4, 0x67, 0x80, 0x78, 0xce, 0xc6, 0x7f, + 0x06, 0x28, 0xb6, 0xfc, 0xf4, 0xc1, 0xf9, 0x6a, 0x16, 0x4e, 0xba, 0x2c, 0xac, 0x99, 0x6d, 0x7d, + 0xf3, 0x12, 0xe5, 0xe2, 0xac, 0xd6, 0xd9, 0xc5, 0x36, 0x7a, 0x97, 0x24, 0x8a, 0xd2, 0x7f, 0x02, + 0x30, 0xbb, 0xd8, 0xa2, 0x81, 0xd4, 0x18, 0x50, 0x77, 0x46, 0x55, 0x76, 0x7f, 0x49, 0xfe, 0xfd, + 0x33, 0x35, 0x8f, 0x88, 0x1a, 0xa2, 0xe7, 0x5a, 0x85, 0x53, 0xfe, 0x97, 0x5e, 0x07, 0x8f, 0xcc, + 0x7e, 0x07, 0x8f, 0x1b, 0x40, 0xd6, 0xda, 0x6d, 0x1f, 0xaa, 0xde, 0xcd, 0x6c, 0x52, 0xa6, 0xea, + 0x66, 0x71, 0x73, 0xda, 0x38, 0x38, 0x9a, 0x17, 0x91, 0xd3, 0xc6, 0x8e, 0x32, 0x0f, 0x79, 0x7a, + 0xa9, 0xb6, 0xbf, 0xa2, 0xdf, 0x3f, 0x33, 0xcb, 0xc5, 0x9b, 0x76, 0x35, 0x5e, 0x0d, 0x6f, 0x4f, + 0x24, 0x99, 0x7e, 0xfd, 0x74, 0x60, 0x27, 0xab, 0x9c, 0x82, 0xdd, 0x3d, 0x34, 0xe5, 0xf1, 0xec, + 0x86, 0x15, 0xbb, 0xdd, 0xce, 0xa5, 0x06, 0x0b, 0xbe, 0x92, 0x68, 0x37, 0x2c, 0x14, 0xc3, 0x45, + 0xea, 0x8d, 0xe1, 0x92, 0x7c, 0x37, 0x8c, 0xe3, 0x63, 0x14, 0xbb, 0x61, 0x71, 0x04, 0xd3, 0x17, + 0xed, 0x47, 0x27, 0xa9, 0xd5, 0xcc, 0xae, 0x03, 0xf8, 0x64, 0x7f, 0xcf, 0x6a, 0xe0, 0x9d, 0x5d, + 0xfa, 0xdd, 0x14, 0x10, 0x7b, 0x0d, 0x8a, 0xf2, 0x34, 0xc8, 0x6f, 0x9a, 0xd6, 0x8e, 0xe6, 0x6d, + 0xdc, 0xf7, 0x9e, 0x14, 0x61, 0x21, 0xf8, 0x97, 0x48, 0x1e, 0x95, 0xe5, 0x75, 0xe7, 0x23, 0xcf, + 0xd6, 0xbb, 0x2c, 0xea, 0xa2, 0xfb, 0xa8, 0x5c, 0x07, 0xb3, 0x2c, 0xf8, 0x62, 0x15, 0xdb, 0x0e, + 0x6e, 0xb3, 0x88, 0x15, 0x7c, 0xa2, 0x72, 0x06, 0x66, 0x58, 0xc2, 0x92, 0xde, 0xc1, 0x36, 0x0b, + 0x5a, 0xc1, 0xa5, 0x29, 0x27, 0x21, 0xaf, 0xdb, 0xf7, 0xd9, 0xa6, 0x41, 0xfc, 0xff, 0x27, 0x55, + 0xf6, 0xa6, 0xdc, 0x00, 0x47, 0x59, 0x3e, 0xdf, 0x58, 0xa5, 0x07, 0x76, 0x7a, 0x93, 0x5d, 0xd5, + 0x32, 0xcc, 0x75, 0xcb, 0xdc, 0xb2, 0xb0, 0x6d, 0x93, 0x53, 0x53, 0x93, 0x6a, 0x28, 0x45, 0x79, + 0x00, 0x8e, 0x75, 0x74, 0xe3, 0x82, 0x4d, 0x82, 0xf4, 0x2e, 0x31, 0xb7, 0xb1, 0x99, 0x3e, 0xc1, + 0xb3, 0x43, 0x8d, 0x8d, 0xc9, 0x21, 0xfc, 0x8b, 0xba, 0x9f, 0x8a, 0x72, 0x23, 0x14, 0x18, 0x37, + 0x0b, 0x5a, 0xeb, 0x02, 0xf9, 0xce, 0xdc, 0x51, 0xf7, 0xa5, 0xa3, 0x47, 0x32, 0x30, 0xc3, 0xfd, + 0xac, 0x81, 0xe2, 0x75, 0x79, 0xf6, 0xb9, 0x6d, 0xdd, 0xc1, 0x6e, 0xc1, 0xec, 0x1c, 0xcb, 0xad, + 0x03, 0x18, 0x53, 0xf7, 0xfd, 0xa8, 0xf6, 0x21, 0xe6, 0x02, 0x40, 0x3b, 0x33, 0xe2, 0x35, 0x66, + 0x33, 0x3b, 0x94, 0x4b, 0x43, 0xcf, 0x06, 0x65, 0x3f, 0xb5, 0x90, 0x87, 0x47, 0x26, 0x99, 0x87, + 0x87, 0x2b, 0x13, 0xad, 0xd3, 0x31, 0x2f, 0xe2, 0xb6, 0x4f, 0x96, 0xe9, 0xe1, 0xbe, 0x74, 0xf4, + 0xe9, 0x61, 0xe6, 0x7c, 0x89, 0x6f, 0xad, 0x70, 0x1b, 0xd0, 0x6e, 0xab, 0x85, 0x71, 0x9b, 0x1d, + 0x4a, 0xf3, 0x5e, 0x13, 0xde, 0x67, 0x91, 0x78, 0x86, 0x78, 0x48, 0x17, 0x5a, 0xbc, 0xff, 0x04, + 0xe4, 0xe9, 0xe5, 0x70, 0xe8, 0x91, 0xb9, 0xbe, 0xfd, 0xc8, 0x1c, 0xdf, 0x8f, 0x6c, 0xc0, 0x8c, + 0x61, 0xba, 0xc5, 0xad, 0x6b, 0x96, 0xb6, 0x63, 0xc7, 0x2d, 0x00, 0x53, 0xba, 0xfe, 0x68, 0x5f, + 0x0d, 0xfd, 0xb6, 0x72, 0x44, 0xe5, 0xc8, 0x28, 0xff, 0x3f, 0x38, 0x7a, 0x9e, 0x05, 0x6f, 0xb0, + 0x19, 0x65, 0x29, 0xda, 0x3d, 0xb2, 0x87, 0xf2, 0x02, 0xff, 0xe7, 0xca, 0x11, 0xb5, 0x97, 0x98, + 0xf2, 0x63, 0x30, 0xe7, 0xbe, 0xb6, 0xcd, 0x8b, 0x1e, 0xe3, 0x72, 0xb4, 0x8d, 0xd8, 0x43, 0x7e, + 0x8d, 0xfb, 0x71, 0xe5, 0x88, 0xda, 0x43, 0x4a, 0xa9, 0x01, 0x6c, 0x3b, 0x3b, 0x1d, 0x46, 0x38, + 0x1b, 0xad, 0x92, 0x3d, 0x84, 0x57, 0xfc, 0x9f, 0x56, 0x8e, 0xa8, 0x21, 0x12, 0xca, 0x2a, 0x4c, + 0x39, 0x0f, 0x39, 0x8c, 0x5e, 0x2e, 0xda, 0x2f, 0xa1, 0x87, 0x5e, 0xc3, 0xfb, 0x67, 0xe5, 0x88, + 0x1a, 0x10, 0x50, 0x2a, 0x30, 0xd9, 0x3d, 0xcf, 0x88, 0xe5, 0xa3, 0xfb, 0xb2, 0x1e, 0x62, 0xeb, + 0xe7, 0x7d, 0x5a, 0xfe, 0xef, 0x2e, 0x63, 0x2d, 0x7b, 0x8f, 0xd1, 0x9a, 0x10, 0x66, 0xac, 0xe4, + 0xfd, 0xe3, 0x32, 0xe6, 0x13, 0x50, 0x2a, 0x30, 0x65, 0x1b, 0x5a, 0xd7, 0xde, 0x36, 0x1d, 0xfb, + 0xd4, 0x64, 0x8f, 0x0b, 0x6b, 0x34, 0xb5, 0x3a, 0xfb, 0x47, 0x0d, 0xfe, 0x56, 0x9e, 0x06, 0x27, + 0x76, 0xbb, 0x6d, 0xcd, 0xc1, 0xe5, 0x87, 0x74, 0xdb, 0xd1, 0x8d, 0x2d, 0x2f, 0xfc, 0x2f, 0x1d, + 0x08, 0xfa, 0x7f, 0x54, 0xe6, 0xd9, 0x61, 0x36, 0x20, 0x6d, 0x13, 0xf5, 0xee, 0xa3, 0xd2, 0x62, + 0x43, 0x67, 0xd8, 0x9e, 0x09, 0x59, 0xf7, 0x13, 0x19, 0x38, 0xe6, 0xfa, 0xaf, 0xd1, 0xf6, 0xea, + 0x0e, 0x69, 0xc0, 0xee, 0x4f, 0x3d, 0x63, 0xcf, 0xcc, 0xbe, 0xb1, 0xe7, 0x1a, 0x98, 0xd6, 0xed, + 0x35, 0x7d, 0x8b, 0x1a, 0xbe, 0x6c, 0x6c, 0x08, 0x27, 0xd1, 0x85, 0x82, 0x2a, 0xbe, 0x48, 0x2f, + 0x37, 0x39, 0xea, 0x2d, 0x14, 0x78, 0x29, 0xe8, 0x7a, 0x98, 0x09, 0x37, 0x32, 0x7a, 0xc3, 0xac, + 0x1e, 0x98, 0xcd, 0xec, 0x0d, 0x5d, 0x07, 0x73, 0xbc, 0x4e, 0x87, 0xac, 0x03, 0xd9, 0xeb, 0x0a, + 0xd1, 0xb5, 0x70, 0xb4, 0xa7, 0x61, 0x79, 0xe1, 0x60, 0x32, 0x41, 0x38, 0x98, 0x6b, 0x00, 0x02, + 0x2d, 0xee, 0x4b, 0xe6, 0x6a, 0x98, 0xf2, 0xf5, 0xb2, 0x6f, 0x86, 0x2f, 0x65, 0x60, 0xd2, 0x53, + 0xb6, 0x7e, 0x19, 0xdc, 0x91, 0xc9, 0x08, 0xed, 0xfd, 0x78, 0x23, 0x53, 0x38, 0xcd, 0x35, 0x01, + 0x02, 0x8f, 0xeb, 0x86, 0xee, 0x74, 0xbc, 0x53, 0x8b, 0xbd, 0xc9, 0xca, 0x3a, 0x80, 0x4e, 0x30, + 0x6a, 0x04, 0xc7, 0x18, 0x6f, 0x49, 0xd0, 0x1e, 0xa8, 0x3e, 0x84, 0x68, 0x9c, 0xf9, 0x01, 0x76, + 0xc6, 0x70, 0x0a, 0x72, 0x34, 0x06, 0xfe, 0x11, 0x65, 0x0e, 0xa0, 0xfc, 0xac, 0xf5, 0xb2, 0x5a, + 0x29, 0x57, 0x4b, 0xe5, 0x42, 0x06, 0xfd, 0x86, 0x04, 0x53, 0x7e, 0x23, 0xe8, 0x5b, 0xc9, 0x32, + 0x53, 0xad, 0x81, 0x97, 0x78, 0xee, 0x6f, 0x54, 0x61, 0x25, 0x7b, 0x06, 0x5c, 0xbe, 0x6b, 0xe3, + 0x25, 0xdd, 0xb2, 0x1d, 0xd5, 0xbc, 0xb8, 0x64, 0x5a, 0xc1, 0xc0, 0x4a, 0x83, 0xcf, 0x46, 0x7d, + 0x76, 0x8d, 0xc1, 0x36, 0x26, 0xe7, 0xd9, 0xb0, 0xc5, 0x16, 0xf5, 0x83, 0x04, 0x97, 0xae, 0x63, + 0x69, 0x86, 0xdd, 0x35, 0x6d, 0xac, 0x9a, 0x17, 0xed, 0xa2, 0xd1, 0x2e, 0x99, 0x9d, 0xdd, 0x1d, + 0xc3, 0x66, 0xe6, 0x5c, 0xd4, 0x67, 0x57, 0x3a, 0xe4, 0x8a, 0xde, 0x39, 0x80, 0x52, 0x6d, 0x75, + 0xb5, 0x5c, 0x6a, 0x54, 0x6a, 0xd5, 0xc2, 0x11, 0x57, 0x5a, 0x8d, 0xe2, 0xc2, 0xaa, 0x2b, 0x9d, + 0x1f, 0x87, 0x49, 0xaf, 0x4d, 0xb3, 0x08, 0x36, 0x19, 0x2f, 0x82, 0x8d, 0x52, 0x84, 0x49, 0xaf, + 0x95, 0xb3, 0x11, 0xe1, 0x89, 0xbd, 0x27, 0x96, 0x77, 0x34, 0xcb, 0x21, 0x06, 0x8a, 0x47, 0x64, + 0x41, 0xb3, 0xb1, 0xea, 0xff, 0x76, 0xe6, 0x29, 0x8c, 0x03, 0x05, 0xe6, 0x8a, 0xab, 0xab, 0xcd, + 0x9a, 0xda, 0xac, 0xd6, 0x1a, 0x2b, 0x95, 0xea, 0x32, 0x1d, 0x21, 0x2b, 0xcb, 0xd5, 0x9a, 0x5a, + 0xa6, 0x03, 0x64, 0xbd, 0x90, 0xa1, 0x57, 0x44, 0x2f, 0x4c, 0x42, 0xbe, 0x4b, 0xa4, 0x8b, 0xbe, + 0x20, 0x27, 0x0c, 0x55, 0xe0, 0xe3, 0x14, 0x71, 0x89, 0x2d, 0x77, 0x5c, 0x40, 0xea, 0x73, 0x9c, + 0xf7, 0x0c, 0xcc, 0x50, 0x33, 0xdc, 0x26, 0x3b, 0x2f, 0x04, 0x39, 0x59, 0xe5, 0xd2, 0xd0, 0x07, + 0xa5, 0x04, 0xf1, 0x0b, 0xfa, 0x72, 0x94, 0xcc, 0xb8, 0xf8, 0xf3, 0xcc, 0x70, 0x37, 0x46, 0x54, + 0xaa, 0x8d, 0xb2, 0x5a, 0x2d, 0xae, 0xb2, 0x2c, 0xb2, 0x72, 0x0a, 0x8e, 0x57, 0x6b, 0x2c, 0x1c, + 0x63, 0xbd, 0xd9, 0xa8, 0x35, 0x2b, 0x6b, 0xeb, 0x35, 0xb5, 0x51, 0xc8, 0x29, 0x27, 0x41, 0xa1, + 0xcf, 0xcd, 0x4a, 0xbd, 0x59, 0x2a, 0x56, 0x4b, 0xe5, 0xd5, 0xf2, 0x62, 0x21, 0xaf, 0x3c, 0x09, + 0xae, 0xa5, 0x37, 0x10, 0xd5, 0x96, 0x9a, 0x6a, 0xed, 0x5c, 0xdd, 0x45, 0x50, 0x2d, 0xaf, 0x16, + 0x5d, 0x45, 0x0a, 0x5d, 0x15, 0x3d, 0xa1, 0x5c, 0x06, 0x47, 0xc9, 0x3d, 0xf2, 0xab, 0xb5, 0xe2, + 0x22, 0x2b, 0x6f, 0x52, 0xb9, 0x0a, 0x4e, 0x55, 0xaa, 0xf5, 0x8d, 0xa5, 0xa5, 0x4a, 0xa9, 0x52, + 0xae, 0x36, 0x9a, 0xeb, 0x65, 0x75, 0xad, 0x52, 0xaf, 0xbb, 0xff, 0x16, 0xa6, 0xc8, 0x45, 0xbc, + 0xb4, 0xcf, 0x44, 0xef, 0x94, 0x61, 0xf6, 0xac, 0xd6, 0xd1, 0xdd, 0x81, 0x82, 0xdc, 0xd0, 0xdd, + 0x73, 0xd2, 0xc7, 0x21, 0x37, 0x79, 0xb3, 0xb3, 0x02, 0xe4, 0x05, 0xfd, 0xb4, 0x9c, 0xf0, 0xa4, + 0x0f, 0x03, 0x82, 0x96, 0x38, 0xcf, 0x95, 0x16, 0x31, 0x2f, 0x7d, 0x85, 0x94, 0xe0, 0xa4, 0x8f, + 0x38, 0xf9, 0x64, 0xe0, 0xff, 0xe6, 0xa8, 0xc0, 0x2f, 0xc0, 0xcc, 0x46, 0xb5, 0xb8, 0xd1, 0x58, + 0xa9, 0xa9, 0x95, 0x1f, 0x25, 0x81, 0xe2, 0x67, 0x61, 0x6a, 0xa9, 0xa6, 0x2e, 0x54, 0x16, 0x17, + 0xcb, 0xd5, 0x42, 0x4e, 0xb9, 0x1c, 0x2e, 0xab, 0x97, 0xd5, 0xb3, 0x95, 0x52, 0xb9, 0xb9, 0x51, + 0x2d, 0x9e, 0x2d, 0x56, 0x56, 0x49, 0x1f, 0x91, 0x8f, 0xb9, 0x5d, 0x7c, 0x02, 0xfd, 0x64, 0x16, + 0x80, 0x56, 0x9d, 0xdc, 0x93, 0x14, 0xba, 0x83, 0xfa, 0xb3, 0x49, 0x27, 0x0d, 0x01, 0x99, 0x88, + 0xf6, 0x5b, 0x81, 0x49, 0x8b, 0x7d, 0x60, 0x2b, 0x5f, 0x83, 0xe8, 0xd0, 0x47, 0x8f, 0x9a, 0xea, + 0xff, 0x8e, 0xde, 0x95, 0x64, 0x8e, 0x10, 0xc9, 0x58, 0x32, 0x24, 0x97, 0x46, 0x03, 0x24, 0x7a, + 0x61, 0x06, 0xe6, 0xf8, 0x8a, 0xb9, 0x95, 0x20, 0xc6, 0x94, 0x58, 0x25, 0xf8, 0x9f, 0x43, 0x46, + 0xd6, 0x99, 0xa7, 0xb2, 0xe1, 0x14, 0xbc, 0x96, 0x49, 0x0f, 0xed, 0x7b, 0x16, 0x4b, 0x21, 0xe3, + 0x32, 0xef, 0x1a, 0x1d, 0x05, 0x49, 0x99, 0x00, 0xb9, 0xf1, 0x90, 0x53, 0x90, 0xd1, 0x97, 0x64, + 0x98, 0xe5, 0x2e, 0xb9, 0x46, 0xaf, 0xc8, 0x88, 0x5c, 0x40, 0x1b, 0xba, 0x3e, 0x3b, 0x73, 0xd0, + 0xeb, 0xb3, 0xcf, 0xdc, 0x0c, 0x13, 0x2c, 0x8d, 0xc8, 0xb7, 0x56, 0x75, 0x4d, 0x81, 0xa3, 0x30, + 0xbd, 0x5c, 0x6e, 0x34, 0xeb, 0x8d, 0xa2, 0xda, 0x28, 0x2f, 0x16, 0x32, 0xee, 0xc0, 0x57, 0x5e, + 0x5b, 0x6f, 0x3c, 0x50, 0x90, 0x92, 0x3b, 0x4f, 0xf6, 0x32, 0x32, 0x66, 0xe7, 0xc9, 0xb8, 0xe2, + 0xd3, 0x9f, 0xab, 0x7e, 0x52, 0x86, 0x02, 0xe5, 0xa0, 0xfc, 0x50, 0x17, 0x5b, 0x3a, 0x36, 0x5a, + 0x18, 0x5d, 0x10, 0x09, 0xd6, 0xba, 0x2f, 0x8c, 0x21, 0xe9, 0xcf, 0x43, 0x56, 0x22, 0x7d, 0xe9, + 0x31, 0xb0, 0xb3, 0xfb, 0x0c, 0xec, 0x4f, 0x24, 0xf5, 0x9e, 0xec, 0x65, 0x77, 0x24, 0x90, 0x7d, + 0x24, 0x89, 0xf7, 0xe4, 0x00, 0x0e, 0xc6, 0x12, 0x83, 0x39, 0x62, 0xfc, 0x2d, 0xc8, 0xe8, 0x05, + 0x32, 0x1c, 0x5d, 0xd4, 0x1c, 0xbc, 0x70, 0xa9, 0xe1, 0x5d, 0x42, 0x19, 0x71, 0x71, 0x74, 0x66, + 0xdf, 0xc5, 0xd1, 0xc1, 0x3d, 0x96, 0x52, 0xcf, 0x3d, 0x96, 0xe8, 0x6d, 0x49, 0xcf, 0x5b, 0xf6, + 0xf0, 0x30, 0xb2, 0x40, 0xc9, 0xc9, 0xce, 0x51, 0xc6, 0x73, 0x91, 0x7e, 0x03, 0x7b, 0xd3, 0x14, + 0x14, 0x28, 0x2b, 0x21, 0x07, 0xc1, 0x5f, 0x66, 0x77, 0xad, 0x37, 0x13, 0xc4, 0x63, 0xf4, 0x22, + 0x5c, 0x48, 0x7c, 0x84, 0x0b, 0x6e, 0xbd, 0x59, 0xee, 0x75, 0xea, 0x48, 0xda, 0x19, 0x86, 0xbc, + 0x01, 0xa3, 0x43, 0xe0, 0xa6, 0xd7, 0x19, 0xc6, 0x16, 0x3f, 0x9e, 0xfb, 0x80, 0xd9, 0x15, 0x9c, + 0x65, 0x51, 0x64, 0xe2, 0xaf, 0x3d, 0x4f, 0xea, 0x1a, 0xce, 0x79, 0x63, 0xc6, 0xdc, 0x05, 0x9e, + 0x9e, 0x6b, 0xf8, 0x20, 0x0e, 0xd2, 0x47, 0xe1, 0xbb, 0x12, 0x64, 0xeb, 0xa6, 0xe5, 0x8c, 0x0a, + 0x83, 0xa4, 0xdb, 0xd9, 0x21, 0x09, 0xd4, 0xa3, 0xe7, 0x9c, 0xe9, 0x6d, 0x67, 0xc7, 0x97, 0x3f, + 0x86, 0x90, 0x96, 0x47, 0x61, 0x8e, 0x72, 0xe2, 0xdf, 0xf7, 0xf2, 0x1d, 0x89, 0xf6, 0x57, 0xf7, + 0x8b, 0x22, 0x42, 0x36, 0x3e, 0xfc, 0xed, 0x64, 0x0f, 0x14, 0x2e, 0x0d, 0xbd, 0x36, 0x8c, 0xcb, + 0x22, 0x8f, 0x4b, 0xbf, 0x19, 0xb7, 0x7f, 0x65, 0xca, 0xa8, 0x7a, 0xa6, 0x24, 0xd1, 0x31, 0x63, + 0x0a, 0x4f, 0x1f, 0x91, 0x87, 0x65, 0xc8, 0x33, 0x77, 0xbe, 0x91, 0x22, 0x90, 0xb4, 0x65, 0xf8, + 0x42, 0x10, 0x73, 0xfb, 0x93, 0x47, 0xdd, 0x32, 0xe2, 0xcb, 0x4f, 0x1f, 0x87, 0x7f, 0x67, 0x7e, + 0xaa, 0xc5, 0x3d, 0x4d, 0xef, 0x68, 0xe7, 0x3b, 0x09, 0xa2, 0x52, 0x7f, 0x30, 0xe1, 0xc9, 0x3c, + 0xbf, 0xaa, 0x5c, 0x79, 0x11, 0x12, 0xff, 0x21, 0x98, 0xb2, 0xb8, 0xbd, 0x3e, 0xd7, 0x8a, 0xea, + 0xf1, 0x11, 0x66, 0xdf, 0xd5, 0x20, 0x67, 0xa2, 0x63, 0x78, 0x42, 0xfc, 0x8c, 0xe5, 0xd8, 0xd0, + 0x74, 0xb1, 0xdd, 0x5e, 0xc2, 0x9a, 0xb3, 0x6b, 0xe1, 0x76, 0xa2, 0x21, 0xc2, 0xea, 0xd9, 0x0e, + 0x0d, 0x49, 0x82, 0x8b, 0x0b, 0xb9, 0xca, 0xa3, 0xf3, 0xf4, 0x01, 0xbd, 0x81, 0xc7, 0xcb, 0x48, + 0xba, 0xa4, 0x37, 0xfa, 0x90, 0xd4, 0x38, 0x48, 0x9e, 0x39, 0x1c, 0x13, 0xe9, 0x03, 0xf2, 0xab, + 0x32, 0xcc, 0x51, 0x3b, 0x61, 0xd4, 0x98, 0xfc, 0x41, 0x42, 0xf7, 0x9f, 0xd0, 0x8d, 0x5a, 0x61, + 0x76, 0x46, 0x02, 0x4b, 0x12, 0x67, 0x21, 0x31, 0x3e, 0xd2, 0x47, 0xe6, 0xd3, 0x79, 0x80, 0x90, + 0x4b, 0xe7, 0x07, 0xf3, 0x41, 0x8c, 0x46, 0xf4, 0x66, 0x36, 0xff, 0xa8, 0x73, 0x01, 0xc3, 0x43, + 0xee, 0x9a, 0xfe, 0x86, 0x14, 0x9f, 0x28, 0x34, 0xaa, 0xfc, 0x79, 0x42, 0x9b, 0x97, 0x39, 0x54, + 0x0e, 0x1c, 0xdc, 0x87, 0xec, 0xe5, 0x3e, 0x94, 0xc0, 0xf8, 0x1d, 0xc4, 0x4a, 0x32, 0xd4, 0x56, + 0x87, 0x98, 0xd9, 0x9f, 0x82, 0xe3, 0x6a, 0xb9, 0xb8, 0x58, 0xab, 0xae, 0x3e, 0x10, 0xbe, 0x5e, + 0xa9, 0x20, 0x87, 0x27, 0x27, 0xa9, 0xc0, 0xf6, 0xaa, 0x84, 0x7d, 0x20, 0x2f, 0xab, 0xb8, 0xd9, + 0x4a, 0x68, 0x71, 0x65, 0x70, 0xaf, 0x26, 0x40, 0xf6, 0x30, 0x51, 0x78, 0x18, 0x42, 0xcd, 0xe8, + 0x67, 0x65, 0x28, 0x10, 0xdf, 0x1f, 0xc2, 0x25, 0xbb, 0x47, 0xaf, 0xc6, 0x7b, 0x7c, 0x76, 0xe9, + 0xfe, 0x53, 0xe0, 0xf1, 0xe9, 0x25, 0x28, 0xd7, 0xc3, 0x5c, 0x6b, 0x1b, 0xb7, 0x2e, 0x54, 0x0c, + 0x6f, 0x5f, 0x9d, 0x6e, 0xc2, 0xf6, 0xa4, 0xf2, 0xc0, 0xdc, 0xcf, 0x03, 0xc3, 0x4f, 0xa2, 0xb9, + 0x41, 0x3a, 0xcc, 0x54, 0x04, 0x2e, 0x1f, 0xf5, 0x71, 0xa9, 0x72, 0xb8, 0xdc, 0x31, 0x14, 0xd5, + 0x64, 0xb0, 0x54, 0x87, 0x80, 0x05, 0xc1, 0xc9, 0xda, 0x7a, 0xa3, 0x52, 0xab, 0x36, 0x37, 0xea, + 0xe5, 0xc5, 0xe6, 0x82, 0x07, 0x4e, 0xbd, 0x20, 0xa3, 0xaf, 0x49, 0x30, 0x41, 0xd9, 0xb2, 0xd1, + 0x93, 0x03, 0x08, 0x06, 0xba, 0xba, 0xa2, 0x37, 0x09, 0x07, 0xae, 0xf0, 0x05, 0xc1, 0xca, 0x89, + 0xe8, 0xa7, 0x9e, 0x01, 0x13, 0x14, 0x64, 0x6f, 0x45, 0xeb, 0x74, 0x44, 0x2f, 0xc5, 0xc8, 0xa8, + 0x5e, 0x76, 0xc1, 0x20, 0x16, 0x03, 0xd8, 0x48, 0x7f, 0x64, 0x79, 0x4e, 0x96, 0x9a, 0xc1, 0xe7, + 0x74, 0x67, 0x9b, 0x78, 0xc2, 0xa2, 0x1f, 0x11, 0x59, 0x5e, 0xbc, 0x09, 0x72, 0x7b, 0x6e, 0xee, + 0x01, 0x5e, 0xc5, 0x34, 0x13, 0xfa, 0x4d, 0xe1, 0x98, 0xa9, 0x9c, 0x7e, 0xfa, 0x3c, 0x45, 0x80, + 0xb3, 0x06, 0xd9, 0x8e, 0x6e, 0x3b, 0x6c, 0xfc, 0xb8, 0x3d, 0x11, 0x21, 0xef, 0xa1, 0xe2, 0xe0, + 0x1d, 0x95, 0x90, 0x41, 0xf7, 0xc1, 0x4c, 0x38, 0x55, 0xc0, 0xb3, 0xfa, 0x14, 0x4c, 0xb0, 0x13, + 0x7f, 0x6c, 0x89, 0xd5, 0x7b, 0x15, 0x5c, 0xd6, 0x14, 0xaa, 0x6d, 0xfa, 0x3a, 0xf0, 0x7f, 0x1f, + 0x85, 0x89, 0x15, 0xdd, 0x76, 0x4c, 0xeb, 0x12, 0x7a, 0x34, 0x03, 0x13, 0x67, 0xb1, 0x65, 0xeb, + 0xa6, 0xb1, 0xcf, 0xd5, 0xe0, 0x1a, 0x98, 0xee, 0x5a, 0x78, 0x4f, 0x37, 0x77, 0xed, 0x60, 0x71, + 0x26, 0x9c, 0xa4, 0x20, 0x98, 0xd4, 0x76, 0x9d, 0x6d, 0xd3, 0x0a, 0x02, 0x85, 0x78, 0xef, 0xca, + 0x69, 0x00, 0xfa, 0x5c, 0xd5, 0x76, 0x30, 0x73, 0xa0, 0x08, 0xa5, 0x28, 0x0a, 0x64, 0x1d, 0x7d, + 0x07, 0xb3, 0xc8, 0xc1, 0xe4, 0xd9, 0x15, 0x30, 0x89, 0xc2, 0xc7, 0xa2, 0x1d, 0xca, 0xaa, 0xf7, + 0x8a, 0x3e, 0x27, 0xc3, 0xf4, 0x32, 0x76, 0x18, 0xab, 0x36, 0x7a, 0x51, 0x46, 0xe8, 0xb2, 0x0e, + 0x77, 0x8c, 0xed, 0x68, 0xb6, 0xf7, 0x9f, 0xbf, 0x04, 0xcb, 0x27, 0x06, 0x61, 0x8c, 0xe5, 0x70, + 0x0c, 0x73, 0x12, 0xd3, 0xce, 0xa9, 0x50, 0x67, 0x54, 0x96, 0x99, 0x6d, 0x82, 0xec, 0xff, 0x80, + 0xde, 0x2e, 0x89, 0x9e, 0x07, 0x67, 0xb2, 0x9f, 0x0f, 0xd5, 0x27, 0xb2, 0x3b, 0x9a, 0xdc, 0x63, + 0x39, 0xf6, 0x85, 0xa7, 0x0f, 0x53, 0x62, 0x64, 0x54, 0x3f, 0xb7, 0xe0, 0x49, 0xf2, 0xc1, 0x9c, + 0xa4, 0xaf, 0x8d, 0xdf, 0x92, 0x61, 0xba, 0xbe, 0x6d, 0x5e, 0xf4, 0xe4, 0xf8, 0xe3, 0x62, 0xc0, + 0x5e, 0x05, 0x53, 0x7b, 0x3d, 0xa0, 0x06, 0x09, 0xd1, 0xd7, 0xe7, 0xa3, 0xe7, 0xcb, 0x49, 0x61, + 0x0a, 0x31, 0x37, 0xf2, 0xcb, 0xed, 0x95, 0xa7, 0xc3, 0x04, 0xe3, 0x9a, 0x2d, 0xb9, 0xc4, 0x03, + 0xec, 0x65, 0x0e, 0x57, 0x30, 0xcb, 0x57, 0x30, 0x19, 0xf2, 0xd1, 0x95, 0x4b, 0x1f, 0xf9, 0x3f, + 0x91, 0x48, 0x1c, 0x11, 0x0f, 0xf8, 0xd2, 0x08, 0x80, 0x47, 0xdf, 0xce, 0x88, 0x2e, 0x4c, 0xfa, + 0x12, 0xf0, 0x39, 0x38, 0xd0, 0x45, 0x3c, 0x03, 0xc9, 0xa5, 0x2f, 0xcf, 0xdf, 0xc8, 0xc2, 0xcc, + 0xa2, 0xbe, 0xb9, 0xe9, 0x77, 0x92, 0x2f, 0x16, 0xec, 0x24, 0xa3, 0xdd, 0x01, 0x5c, 0x3b, 0x77, + 0xd7, 0xb2, 0xb0, 0xe1, 0x55, 0x8a, 0x35, 0xa7, 0x9e, 0x54, 0xe5, 0x06, 0x38, 0xea, 0x8d, 0x0b, + 0xe1, 0x8e, 0x72, 0x4a, 0xed, 0x4d, 0x46, 0xdf, 0x14, 0xde, 0xd5, 0xf2, 0x24, 0x1a, 0xae, 0x52, + 0x44, 0x03, 0xbc, 0x13, 0x66, 0xb7, 0x69, 0x6e, 0x32, 0xf5, 0xf7, 0x3a, 0xcb, 0x93, 0x3d, 0x71, + 0x9a, 0xd7, 0xb0, 0x6d, 0x6b, 0x5b, 0x58, 0xe5, 0x33, 0xf7, 0x34, 0x5f, 0x39, 0xc9, 0xad, 0x63, + 0x62, 0x1b, 0x64, 0x02, 0x35, 0x19, 0x83, 0x76, 0x9c, 0x81, 0xec, 0x92, 0xde, 0xc1, 0xe8, 0xe7, + 0x24, 0x98, 0x52, 0x71, 0xcb, 0x34, 0x5a, 0xee, 0x5b, 0xc8, 0x39, 0xe8, 0x1f, 0x33, 0xa2, 0xb7, + 0x6d, 0xba, 0x74, 0xe6, 0x7d, 0x1a, 0x11, 0xed, 0x46, 0xec, 0x56, 0xcd, 0x58, 0x52, 0x63, 0xb8, + 0x1b, 0xc5, 0x9d, 0x7a, 0x6c, 0x6e, 0x76, 0x4c, 0x8d, 0x5b, 0xfc, 0xea, 0x35, 0x85, 0x82, 0xc3, + 0x2a, 0x55, 0xd3, 0x59, 0xd7, 0x0d, 0xc3, 0x3f, 0xff, 0xbd, 0x2f, 0x9d, 0xdf, 0xb7, 0x8d, 0x0d, + 0xa1, 0x43, 0xea, 0xce, 0x4a, 0x8f, 0xd0, 0xec, 0xeb, 0x61, 0xee, 0xfc, 0x25, 0x07, 0xdb, 0x2c, + 0x17, 0x2b, 0x36, 0xab, 0xf6, 0xa4, 0x86, 0x02, 0x60, 0xc7, 0x85, 0xda, 0x89, 0x29, 0x30, 0x99, + 0xa8, 0x57, 0x86, 0x98, 0x01, 0x1e, 0x87, 0x42, 0xb5, 0xb6, 0x58, 0x26, 0xbe, 0x6a, 0x9e, 0xf7, + 0xcf, 0x16, 0xfa, 0x25, 0x19, 0x66, 0x88, 0x33, 0x89, 0x87, 0xc2, 0xb5, 0x02, 0xf3, 0x11, 0xf4, + 0x98, 0xb0, 0x1f, 0x1b, 0xa9, 0x72, 0xb8, 0x80, 0x68, 0x41, 0x6f, 0xea, 0x9d, 0x5e, 0x41, 0xe7, + 0xd4, 0x9e, 0xd4, 0x3e, 0x80, 0xc8, 0x7d, 0x01, 0xf9, 0x3d, 0x21, 0x67, 0xb6, 0x41, 0xdc, 0x1d, + 0x16, 0x2a, 0xbf, 0x2f, 0xc3, 0xb4, 0x3b, 0x49, 0xf1, 0x40, 0xa9, 0x71, 0xa0, 0x98, 0x46, 0xe7, + 0x52, 0xb0, 0x2c, 0xe2, 0xbd, 0x26, 0x6a, 0x24, 0x7f, 0x29, 0x3c, 0x73, 0x27, 0x22, 0x0a, 0xf1, + 0x32, 0x26, 0xfc, 0xde, 0x2d, 0x34, 0x9f, 0x1f, 0xc0, 0xdc, 0x61, 0xc1, 0xf7, 0x95, 0x1c, 0xe4, + 0x37, 0xba, 0x04, 0xb9, 0xdf, 0x94, 0x45, 0x82, 0xc9, 0xef, 0x3b, 0xc8, 0xe0, 0x9a, 0x59, 0x1d, + 0xb3, 0xa5, 0x75, 0xd6, 0x83, 0x13, 0x61, 0x41, 0x82, 0x72, 0x07, 0xf3, 0x6d, 0xa4, 0x27, 0x21, + 0xaf, 0x8f, 0x8d, 0xb3, 0x4e, 0x64, 0x14, 0x3a, 0x34, 0x72, 0x13, 0x1c, 0x6b, 0xeb, 0xb6, 0x76, + 0xbe, 0x83, 0xcb, 0x46, 0xcb, 0xba, 0x44, 0xc5, 0xc1, 0xa6, 0x55, 0xfb, 0x3e, 0x28, 0x77, 0x41, + 0xce, 0x76, 0x2e, 0x75, 0xe8, 0x3c, 0x31, 0x7c, 0xc6, 0x24, 0xb2, 0xa8, 0xba, 0x9b, 0x5d, 0xa5, + 0x7f, 0x85, 0x5d, 0x94, 0x26, 0x04, 0xaf, 0xda, 0x7e, 0x2a, 0xe4, 0x4d, 0x4b, 0xdf, 0xd2, 0xe9, + 0xd5, 0x49, 0x73, 0xfb, 0xc2, 0x09, 0x52, 0x53, 0xa0, 0x46, 0xb2, 0xa8, 0x2c, 0xab, 0xf2, 0x74, + 0x98, 0xd2, 0x77, 0xb4, 0x2d, 0x7c, 0xbf, 0x6e, 0xd0, 0xc3, 0x96, 0x73, 0xb7, 0x9d, 0xda, 0x77, + 0x7c, 0x86, 0x7d, 0x57, 0x83, 0xac, 0xe8, 0xdd, 0x92, 0x68, 0xcc, 0x23, 0x52, 0x37, 0x0a, 0xea, + 0x58, 0xae, 0x1c, 0x47, 0x2f, 0x17, 0x8a, 0x46, 0x14, 0xcd, 0x56, 0xfa, 0x83, 0xf7, 0x67, 0x24, + 0x98, 0x5c, 0x34, 0x2f, 0x1a, 0x44, 0xd1, 0x6f, 0x17, 0xb3, 0x75, 0xfb, 0x1c, 0x72, 0xe4, 0x6f, + 0xf4, 0x8c, 0x3d, 0xd1, 0x40, 0x6a, 0xeb, 0x15, 0x19, 0x01, 0x43, 0x6c, 0xcb, 0x11, 0xbc, 0x67, + 0x31, 0xae, 0x9c, 0xf4, 0xe5, 0xfa, 0xa7, 0x32, 0x64, 0x17, 0x2d, 0xb3, 0x8b, 0xde, 0x98, 0x49, + 0xe0, 0xb2, 0xd0, 0xb6, 0xcc, 0x6e, 0x83, 0x5c, 0x94, 0x16, 0x1c, 0xe3, 0x08, 0xa7, 0x29, 0xb7, + 0xc3, 0x64, 0xd7, 0xb4, 0x75, 0xc7, 0x9b, 0x46, 0xcc, 0xdd, 0xf6, 0x84, 0xbe, 0xad, 0x79, 0x9d, + 0x65, 0x52, 0xfd, 0xec, 0x6e, 0xaf, 0x4d, 0x44, 0xe8, 0xca, 0xc5, 0x15, 0xa3, 0x77, 0x59, 0x5c, + 0x4f, 0x2a, 0x7a, 0x24, 0x8c, 0xe4, 0x33, 0x79, 0x24, 0x9f, 0xd8, 0x47, 0xc2, 0x96, 0xd9, 0x1d, + 0xc9, 0x26, 0xe3, 0x4b, 0x7d, 0x54, 0xef, 0xe6, 0x50, 0xbd, 0x51, 0xa8, 0xcc, 0xf4, 0x11, 0x7d, + 0x77, 0x16, 0x80, 0x98, 0x19, 0x1b, 0xee, 0x04, 0x48, 0xcc, 0xc6, 0xfa, 0x99, 0x6c, 0x48, 0x96, + 0x45, 0x5e, 0x96, 0x4f, 0x8e, 0xb0, 0x62, 0x08, 0xf9, 0x08, 0x89, 0x16, 0x21, 0xb7, 0xeb, 0x7e, + 0x66, 0x12, 0x15, 0x24, 0x41, 0x5e, 0x55, 0xfa, 0x27, 0xfa, 0x93, 0x0c, 0xe4, 0x48, 0x82, 0x72, + 0x1a, 0x80, 0x0c, 0xec, 0xf4, 0x40, 0x50, 0x86, 0x0c, 0xe1, 0xa1, 0x14, 0xa2, 0xad, 0x7a, 0x9b, + 0x7d, 0xa6, 0x26, 0x73, 0x90, 0xe0, 0xfe, 0x4d, 0x86, 0x7b, 0x42, 0x8b, 0x19, 0x00, 0xa1, 0x14, + 0xf7, 0x6f, 0xf2, 0xb6, 0x8a, 0x37, 0x69, 0x0c, 0xeb, 0xac, 0x1a, 0x24, 0xf8, 0x7f, 0xaf, 0xfa, + 0x37, 0x9f, 0x79, 0x7f, 0x93, 0x14, 0x77, 0x32, 0x4c, 0xd4, 0x72, 0x21, 0x28, 0x22, 0x4f, 0x32, + 0xf5, 0x26, 0xa3, 0x57, 0xf9, 0x6a, 0xb3, 0xc8, 0xa9, 0xcd, 0x2d, 0x09, 0xc4, 0x9b, 0xbe, 0xf2, + 0x7c, 0x29, 0x07, 0x53, 0x55, 0xb3, 0xcd, 0x74, 0x27, 0x34, 0x61, 0xfc, 0x48, 0x2e, 0xd1, 0x84, + 0xd1, 0xa7, 0x11, 0xa1, 0x20, 0xf7, 0xf2, 0x0a, 0x22, 0x46, 0x21, 0xac, 0x1f, 0xca, 0x02, 0xe4, + 0x89, 0xf6, 0xee, 0xbf, 0x52, 0x2b, 0x8e, 0x04, 0x11, 0xad, 0xca, 0xfe, 0xfc, 0x0f, 0xa7, 0x63, + 0xff, 0x15, 0x72, 0xa4, 0x82, 0x31, 0xbb, 0x3b, 0x7c, 0x45, 0xa5, 0xf8, 0x8a, 0xca, 0xf1, 0x15, + 0xcd, 0xf6, 0x56, 0x34, 0xc9, 0x3a, 0x40, 0x94, 0x86, 0xa4, 0xaf, 0xe3, 0xff, 0x30, 0x01, 0x50, + 0xd5, 0xf6, 0xf4, 0x2d, 0xba, 0x3b, 0xfc, 0x39, 0x6f, 0xfe, 0xc3, 0xf6, 0x71, 0xff, 0x5b, 0x68, + 0x20, 0xbc, 0x1d, 0x26, 0xd8, 0xb8, 0xc7, 0x2a, 0x72, 0x35, 0x57, 0x91, 0x80, 0x0a, 0x35, 0x4b, + 0x1f, 0x72, 0x54, 0x2f, 0x3f, 0x77, 0xfb, 0xaf, 0xd4, 0x73, 0xfb, 0x6f, 0xff, 0x3d, 0x88, 0x88, + 0x3b, 0x81, 0xd1, 0x3b, 0x84, 0x3d, 0xfa, 0x43, 0xfc, 0x84, 0x6a, 0x14, 0xd1, 0x04, 0x9f, 0x0a, + 0x13, 0xa6, 0xbf, 0xa1, 0x2d, 0x47, 0xae, 0x83, 0x55, 0x8c, 0x4d, 0x53, 0xf5, 0x72, 0x0a, 0x6e, + 0x7e, 0x09, 0xf1, 0x31, 0x96, 0x43, 0x33, 0x27, 0x97, 0xbd, 0x78, 0x60, 0x6e, 0x3d, 0xce, 0xe9, + 0xce, 0xf6, 0x2a, 0x89, 0x32, 0xf2, 0x9f, 0xc5, 0x2c, 0xc8, 0x10, 0xfe, 0x52, 0x32, 0xfc, 0xf9, + 0x98, 0x1d, 0x75, 0x1e, 0xb5, 0xbb, 0xa2, 0xa8, 0xf4, 0xe7, 0x36, 0x02, 0xc0, 0x3b, 0x20, 0x4f, + 0x19, 0x65, 0x9d, 0xe8, 0x99, 0x48, 0xfc, 0x7c, 0x4a, 0x2a, 0xfb, 0x03, 0xbd, 0xdd, 0xc7, 0xf1, + 0x2c, 0x87, 0xe3, 0xc2, 0x81, 0x38, 0x4b, 0x1d, 0xd2, 0x33, 0xb7, 0xc2, 0x04, 0x93, 0xb4, 0x32, + 0x17, 0x6e, 0xc5, 0x85, 0x23, 0x0a, 0x40, 0x7e, 0xcd, 0xdc, 0xc3, 0x0d, 0xb3, 0x90, 0x71, 0x9f, + 0x5d, 0xfe, 0x1a, 0x66, 0x41, 0x42, 0x2f, 0x9b, 0x84, 0x49, 0x3f, 0x10, 0xd3, 0x67, 0x24, 0x28, + 0x94, 0x2c, 0xac, 0x39, 0x78, 0xc9, 0x32, 0x77, 0x68, 0x8d, 0xc4, 0xbd, 0x43, 0x7f, 0x55, 0xd8, + 0xc5, 0xc3, 0x0f, 0x90, 0xd4, 0x5b, 0x58, 0x04, 0x96, 0x74, 0x11, 0x52, 0xf2, 0x16, 0x21, 0xd1, + 0x1b, 0x84, 0x5c, 0x3e, 0x44, 0x4b, 0x49, 0xbf, 0xa9, 0x7d, 0x42, 0x82, 0x5c, 0xa9, 0x63, 0x1a, + 0x38, 0x7c, 0x84, 0x69, 0xe0, 0x59, 0x99, 0xfe, 0x3b, 0x11, 0xe8, 0x39, 0x92, 0xa8, 0xad, 0x11, + 0x08, 0xc0, 0x2d, 0x5b, 0x50, 0xb6, 0x62, 0x83, 0x54, 0x2c, 0xe9, 0xf4, 0x05, 0xfa, 0x35, 0x09, + 0xa6, 0x68, 0x5c, 0x9c, 0x62, 0xa7, 0x83, 0x9e, 0x10, 0x08, 0xb5, 0x4f, 0x30, 0x2b, 0xf4, 0x7b, + 0xc2, 0x2e, 0xfa, 0x7e, 0xad, 0x7c, 0xda, 0x09, 0x02, 0x04, 0x25, 0xf3, 0x18, 0x17, 0xdb, 0x4b, + 0x1b, 0xc8, 0x50, 0xfa, 0xa2, 0xfe, 0xac, 0xe4, 0x1a, 0x00, 0xc6, 0x85, 0x75, 0x0b, 0xef, 0xe9, + 0xf8, 0x22, 0xba, 0x32, 0x10, 0xf6, 0xfe, 0xa0, 0x1f, 0xaf, 0x13, 0x5e, 0xc4, 0x09, 0x91, 0x8c, + 0xdc, 0xca, 0x9a, 0xee, 0x04, 0x99, 0x58, 0x2f, 0xde, 0x1b, 0x89, 0x25, 0x44, 0x46, 0x0d, 0x67, + 0x17, 0x5c, 0xb3, 0x89, 0xe6, 0x22, 0x7d, 0xc1, 0xbe, 0x6f, 0x02, 0x26, 0x37, 0x0c, 0xbb, 0xdb, + 0xd1, 0xec, 0x6d, 0xf4, 0x1d, 0x19, 0xf2, 0xf4, 0x22, 0x37, 0xf4, 0x43, 0x5c, 0x6c, 0x81, 0x9f, + 0xd8, 0xc5, 0x96, 0xe7, 0x82, 0x43, 0x5f, 0xfa, 0xdf, 0x33, 0x8f, 0xde, 0x2d, 0x8b, 0x4e, 0x52, + 0xbd, 0x42, 0x43, 0x37, 0xfa, 0xf7, 0x3f, 0xce, 0xde, 0xd5, 0x5b, 0xce, 0xae, 0xe5, 0xdf, 0x5a, + 0xfe, 0x14, 0x31, 0x2a, 0xeb, 0xf4, 0x2f, 0xd5, 0xff, 0x1d, 0x69, 0x30, 0xc1, 0x12, 0xf7, 0x6d, + 0x27, 0xed, 0x3f, 0x7f, 0x7b, 0x12, 0xf2, 0x9a, 0xe5, 0xe8, 0xb6, 0xc3, 0x36, 0x58, 0xd9, 0x9b, + 0xdb, 0x5d, 0xd2, 0xa7, 0x0d, 0xab, 0xe3, 0x45, 0x21, 0xf1, 0x13, 0xd0, 0xef, 0x0b, 0xcd, 0x1f, + 0xe3, 0x6b, 0x9e, 0x0c, 0xf2, 0xfb, 0x87, 0x58, 0xa3, 0xbe, 0x1c, 0x2e, 0x53, 0x8b, 0x8d, 0x72, + 0x93, 0x06, 0xad, 0xf0, 0xe3, 0x53, 0xb4, 0xd1, 0xdb, 0xe4, 0xd0, 0xfa, 0xdd, 0x25, 0x6e, 0x8c, + 0x60, 0x52, 0x0c, 0xc6, 0x08, 0x3f, 0x21, 0x66, 0xb7, 0x9a, 0x5b, 0x84, 0x95, 0xc5, 0x17, 0x61, + 0x7f, 0x47, 0x78, 0x37, 0xc9, 0x17, 0xe5, 0x80, 0x35, 0xc0, 0xb8, 0x8b, 0x9e, 0xde, 0x23, 0xb4, + 0x33, 0x34, 0xa8, 0xa4, 0x43, 0x84, 0xed, 0xb5, 0x13, 0x30, 0xb1, 0xac, 0x75, 0x3a, 0xd8, 0xba, + 0xe4, 0x0e, 0x49, 0x05, 0x8f, 0xc3, 0x35, 0xcd, 0xd0, 0x37, 0xb1, 0xed, 0xc4, 0x77, 0x96, 0xef, + 0x10, 0x0e, 0x22, 0xcc, 0xca, 0x98, 0xef, 0xa5, 0x1f, 0x21, 0xf3, 0x9b, 0x21, 0xab, 0x1b, 0x9b, + 0x26, 0xeb, 0x32, 0x7b, 0x57, 0xed, 0xbd, 0x9f, 0xc9, 0xd4, 0x85, 0x64, 0x14, 0x8c, 0x23, 0x2c, + 0xc8, 0x45, 0xfa, 0x3d, 0xe7, 0xef, 0x66, 0x61, 0xd6, 0x63, 0xa2, 0x62, 0xb4, 0xf1, 0x43, 0xe1, + 0xa5, 0x98, 0x5f, 0xca, 0x8a, 0x1e, 0x07, 0xeb, 0xad, 0x0f, 0x21, 0x15, 0x21, 0xd2, 0x06, 0x40, + 0x4b, 0x73, 0xf0, 0x96, 0x69, 0xe9, 0x7e, 0x7f, 0xf8, 0xb4, 0x24, 0xd4, 0x4a, 0xf4, 0xef, 0x4b, + 0x6a, 0x88, 0x8e, 0x72, 0x17, 0x4c, 0x63, 0xff, 0xfc, 0xbd, 0xb7, 0x54, 0x13, 0x8b, 0x57, 0x38, + 0x3f, 0xfa, 0xac, 0xd0, 0xa9, 0x33, 0x91, 0x6a, 0x26, 0xc3, 0xac, 0x39, 0x5c, 0x1b, 0xda, 0xa8, + 0xae, 0x15, 0xd5, 0xfa, 0x4a, 0x71, 0x75, 0xb5, 0x52, 0x5d, 0xf6, 0x03, 0xbf, 0x28, 0x30, 0xb7, + 0x58, 0x3b, 0x57, 0x0d, 0x45, 0xe6, 0xc9, 0xa2, 0x75, 0x98, 0xf4, 0xe4, 0xd5, 0xcf, 0x17, 0x33, + 0x2c, 0x33, 0xe6, 0x8b, 0x19, 0x4a, 0x72, 0x8d, 0x33, 0xbd, 0xe5, 0x3b, 0xe8, 0x90, 0x67, 0xf4, + 0xc7, 0x1a, 0xe4, 0xc8, 0x9a, 0x3a, 0x7a, 0x0b, 0xd9, 0x06, 0xec, 0x76, 0xb4, 0x16, 0x46, 0x3b, + 0x09, 0xac, 0x71, 0xef, 0x56, 0x0b, 0x69, 0xdf, 0xad, 0x16, 0xe4, 0x91, 0x59, 0x7d, 0xc7, 0xfb, + 0xad, 0xe3, 0xab, 0x34, 0x0b, 0x7f, 0x40, 0x2b, 0x76, 0x77, 0x85, 0x2e, 0xff, 0x33, 0x36, 0x23, + 0x54, 0x32, 0x9a, 0xa7, 0x64, 0x96, 0xa8, 0xd8, 0x3e, 0x4c, 0x1c, 0x47, 0x63, 0xb8, 0x79, 0x3d, + 0x0b, 0xb9, 0x7a, 0xb7, 0xa3, 0x3b, 0xe8, 0xd7, 0xa5, 0x91, 0x60, 0x46, 0x6f, 0x22, 0x91, 0x07, + 0xde, 0x44, 0x12, 0xec, 0xba, 0x66, 0x05, 0x76, 0x5d, 0x1b, 0xf8, 0x21, 0x87, 0xdf, 0x75, 0xbd, + 0x9d, 0x05, 0x6f, 0xa3, 0x7b, 0xb6, 0x4f, 0xec, 0x23, 0x52, 0x52, 0xad, 0x3e, 0x51, 0x01, 0xcf, + 0xdc, 0xca, 0x82, 0x93, 0x01, 0xe4, 0x17, 0x6a, 0x8d, 0x46, 0x6d, 0xad, 0x70, 0x84, 0x44, 0xb5, + 0xa9, 0xad, 0xd3, 0x50, 0x31, 0x95, 0x6a, 0xb5, 0xac, 0x16, 0x24, 0x12, 0x2e, 0xad, 0xd2, 0x58, + 0x2d, 0x17, 0x64, 0x3e, 0x2c, 0x7d, 0xac, 0xf9, 0xcd, 0x97, 0x9d, 0xa6, 0x7a, 0x89, 0x19, 0xe2, + 0xd1, 0xfc, 0xa4, 0xaf, 0x5c, 0xbf, 0x22, 0x43, 0x6e, 0x0d, 0x5b, 0x5b, 0x18, 0xfd, 0x44, 0x82, + 0x4d, 0xbe, 0x4d, 0xdd, 0xb2, 0x69, 0x70, 0xb9, 0x60, 0x93, 0x2f, 0x9c, 0xa6, 0x5c, 0x07, 0xb3, + 0x36, 0x6e, 0x99, 0x46, 0xdb, 0xcb, 0x44, 0xfb, 0x23, 0x3e, 0x11, 0xbd, 0x24, 0x21, 0x64, 0x84, + 0xd1, 0x91, 0xec, 0xd4, 0x25, 0x01, 0xa6, 0x5f, 0xa9, 0xe9, 0x03, 0xf3, 0x4d, 0xd9, 0xfd, 0xa9, + 0x7b, 0x09, 0xbd, 0x44, 0x78, 0xf7, 0xf5, 0x26, 0xc8, 0x9f, 0xf7, 0xa2, 0x14, 0xcb, 0x91, 0xfd, + 0x31, 0xcb, 0xa3, 0x2c, 0xc0, 0x31, 0x1b, 0x77, 0x70, 0xcb, 0xc1, 0x6d, 0xb7, 0xe9, 0xaa, 0x03, + 0x3b, 0x85, 0xfd, 0xd9, 0xd1, 0x9f, 0x85, 0x01, 0xbc, 0x93, 0x07, 0xf0, 0xfa, 0x3e, 0xa2, 0x74, + 0x2b, 0x14, 0x6d, 0x2b, 0xbb, 0xd5, 0xa8, 0x77, 0x4c, 0x7f, 0x51, 0xdc, 0x7b, 0x77, 0xbf, 0x6d, + 0x3b, 0x3b, 0x1d, 0xf2, 0x8d, 0x1d, 0x30, 0xf0, 0xde, 0x95, 0x79, 0x98, 0xd0, 0x8c, 0x4b, 0xe4, + 0x53, 0x36, 0xa6, 0xd6, 0x5e, 0x26, 0xf4, 0x32, 0x1f, 0xf9, 0x7b, 0x38, 0xe4, 0x9f, 0x2c, 0xc6, + 0x6e, 0xfa, 0xc0, 0xff, 0xf4, 0x04, 0xe4, 0xd6, 0x35, 0xdb, 0xc1, 0xe8, 0xff, 0x92, 0x45, 0x91, + 0xbf, 0x1e, 0xe6, 0x36, 0xcd, 0xd6, 0xae, 0x8d, 0xdb, 0x7c, 0xa3, 0xec, 0x49, 0x1d, 0x05, 0xe6, + 0xca, 0x8d, 0x50, 0xf0, 0x12, 0x19, 0x59, 0x6f, 0x1b, 0x7e, 0x5f, 0x3a, 0x09, 0x72, 0x6e, 0xaf, + 0x6b, 0x96, 0x53, 0xdb, 0x24, 0x69, 0x7e, 0x90, 0xf3, 0x70, 0x22, 0x07, 0x7d, 0x3e, 0x06, 0xfa, + 0x89, 0x68, 0xe8, 0x27, 0x05, 0xa0, 0x57, 0x8a, 0x30, 0xb9, 0xa9, 0x77, 0x30, 0xf9, 0x61, 0x8a, + 0xfc, 0xd0, 0x6f, 0x4c, 0x22, 0xb2, 0xf7, 0xc7, 0xa4, 0x25, 0xbd, 0x83, 0x55, 0xff, 0x37, 0x6f, + 0x22, 0x03, 0xc1, 0x44, 0x66, 0x95, 0xfa, 0xd3, 0xba, 0x86, 0x97, 0xa1, 0xed, 0x60, 0x6f, 0xf1, + 0xcd, 0x60, 0x87, 0x5b, 0xda, 0x9a, 0xa3, 0x11, 0x30, 0x66, 0x54, 0xf2, 0xcc, 0xfb, 0x85, 0xc8, + 0xbd, 0x7e, 0x21, 0xcf, 0x93, 0x93, 0xf5, 0x88, 0x1e, 0xb3, 0x11, 0x2d, 0xea, 0xbc, 0x07, 0x10, + 0xb5, 0x14, 0xfd, 0x77, 0x17, 0x98, 0x96, 0x66, 0x61, 0x67, 0x3d, 0xec, 0x89, 0x91, 0x53, 0xf9, + 0x44, 0xe2, 0xca, 0x67, 0xd7, 0xb5, 0x1d, 0x1a, 0xe8, 0xbc, 0xe4, 0x7e, 0x63, 0x2e, 0x5a, 0xfb, + 0xd2, 0x83, 0xfe, 0x37, 0x37, 0xea, 0xfe, 0xb7, 0x5f, 0x1d, 0xd3, 0x6f, 0x86, 0xaf, 0xc8, 0x82, + 0x5c, 0xda, 0x75, 0x1e, 0xd7, 0xdd, 0xef, 0x77, 0x85, 0xfd, 0x5c, 0x58, 0x7f, 0xb6, 0xeb, 0x1c, + 0x6e, 0xef, 0x9b, 0x50, 0x4b, 0xc4, 0xfc, 0x69, 0xa2, 0xea, 0x96, 0xbe, 0x8e, 0xbc, 0x51, 0xf6, + 0x1d, 0x2c, 0x1f, 0xce, 0x1c, 0xdc, 0x34, 0x47, 0xb4, 0x7f, 0x0a, 0xf5, 0x0c, 0xfe, 0xbb, 0xd7, + 0xf1, 0x64, 0xb9, 0x58, 0x7d, 0x64, 0x7b, 0x9d, 0x88, 0x72, 0x46, 0xa5, 0x2f, 0xe8, 0x37, 0x84, + 0xdd, 0xce, 0xa9, 0xd8, 0x62, 0x5d, 0x09, 0x93, 0xd9, 0x54, 0x62, 0xf7, 0xbc, 0xc6, 0x14, 0x9b, + 0x3e, 0x60, 0xdf, 0x08, 0xbb, 0x0a, 0x16, 0x0f, 0x8c, 0x18, 0x7a, 0xb9, 0xf0, 0x76, 0x14, 0xad, + 0xf6, 0x80, 0xf5, 0xc2, 0x64, 0xf2, 0x16, 0xdb, 0xac, 0x8a, 0x2d, 0x38, 0x7d, 0x89, 0x7f, 0x5d, + 0x86, 0x3c, 0xdd, 0x82, 0x44, 0xaf, 0xcf, 0x24, 0xb8, 0x20, 0xdf, 0xe1, 0x5d, 0x08, 0xfd, 0xf7, + 0x24, 0x6b, 0x0e, 0x9c, 0xab, 0x61, 0x36, 0x91, 0xab, 0x21, 0x7f, 0x8e, 0x53, 0xa0, 0x1d, 0xd1, + 0x3a, 0xa6, 0x3c, 0x9d, 0x4c, 0xd2, 0xc2, 0xfa, 0x32, 0x94, 0x3e, 0xde, 0x3f, 0x9b, 0x83, 0x19, + 0x5a, 0xf4, 0x39, 0xbd, 0xbd, 0x85, 0x1d, 0xf4, 0x36, 0xe9, 0x7b, 0x07, 0x75, 0xa5, 0x0a, 0x33, + 0x17, 0x09, 0xdb, 0xf4, 0x46, 0x16, 0xb6, 0x72, 0x71, 0x63, 0xec, 0xba, 0x07, 0xad, 0xa7, 0x77, + 0x87, 0x0b, 0xf7, 0xbf, 0x2b, 0x63, 0xba, 0xe0, 0x4f, 0x1d, 0xb8, 0xf2, 0xc4, 0xc8, 0x0a, 0x27, + 0x29, 0x27, 0x21, 0xbf, 0xa7, 0xe3, 0x8b, 0x95, 0x36, 0xb3, 0x6e, 0xd9, 0x1b, 0xfa, 0x43, 0xe1, + 0x7d, 0xdb, 0x30, 0xdc, 0x8c, 0x97, 0x74, 0xb5, 0x50, 0x6c, 0xf7, 0x76, 0x20, 0x5b, 0x63, 0x38, + 0x53, 0xcc, 0xdf, 0xa3, 0x5a, 0x4a, 0xa0, 0x88, 0x51, 0x86, 0x33, 0x1f, 0xca, 0x23, 0xf6, 0xc4, + 0x0a, 0x15, 0xc0, 0x88, 0xaf, 0x58, 0x15, 0x8b, 0x2f, 0x31, 0xa0, 0xe8, 0xf4, 0x25, 0xff, 0x2a, + 0x19, 0xa6, 0xea, 0xd8, 0x59, 0xd2, 0x71, 0xa7, 0x6d, 0x23, 0xeb, 0xe0, 0xa6, 0xd1, 0xcd, 0x90, + 0xdf, 0x24, 0xc4, 0x06, 0x9d, 0x5b, 0x60, 0xd9, 0xd0, 0x2b, 0x24, 0xd1, 0x1d, 0x61, 0xb6, 0xfa, + 0xe6, 0x71, 0x3b, 0x12, 0x98, 0xc4, 0x3c, 0x7a, 0xe3, 0x4b, 0x1e, 0x43, 0x60, 0x5b, 0x19, 0x66, + 0xd8, 0xc5, 0x8b, 0xc5, 0x8e, 0xbe, 0x65, 0xa0, 0xdd, 0x11, 0xb4, 0x10, 0xe5, 0x16, 0xc8, 0x69, + 0x2e, 0x35, 0xb6, 0xf5, 0x8a, 0xfa, 0x76, 0x9e, 0xa4, 0x3c, 0x95, 0x66, 0x4c, 0x10, 0x46, 0x32, + 0x50, 0x6c, 0x8f, 0xe7, 0x31, 0x86, 0x91, 0x1c, 0x58, 0x78, 0xfa, 0x88, 0x7d, 0x51, 0x86, 0xe3, + 0x8c, 0x81, 0xb3, 0xd8, 0x72, 0xf4, 0x96, 0xd6, 0xa1, 0xc8, 0xbd, 0x30, 0x33, 0x0a, 0xe8, 0x56, + 0x60, 0x76, 0x2f, 0x4c, 0x96, 0x41, 0x78, 0xa6, 0x2f, 0x84, 0x1c, 0x03, 0x2a, 0xff, 0x63, 0x82, + 0x70, 0x7c, 0x9c, 0x54, 0x39, 0x9a, 0x63, 0x0c, 0xc7, 0x27, 0xcc, 0x44, 0xfa, 0x10, 0x3f, 0xc2, + 0x42, 0xf3, 0x04, 0xdd, 0xe7, 0xe7, 0x84, 0xb1, 0xdd, 0x80, 0x69, 0x82, 0x25, 0xfd, 0x91, 0x2d, + 0x43, 0xc4, 0x28, 0xb1, 0xdf, 0xef, 0xb0, 0x0b, 0xc3, 0xfc, 0x7f, 0xd5, 0x30, 0x1d, 0x74, 0x0e, + 0x20, 0xf8, 0x14, 0xee, 0xa4, 0x33, 0x51, 0x9d, 0xb4, 0x24, 0xd6, 0x49, 0xbf, 0x4e, 0x38, 0x58, + 0x4a, 0x7f, 0xb6, 0x0f, 0xae, 0x1e, 0x62, 0x61, 0x32, 0x06, 0x97, 0x9e, 0xbe, 0x5e, 0xbc, 0x2c, + 0xdb, 0x7b, 0xc3, 0xfe, 0x07, 0x47, 0x32, 0x9f, 0x0a, 0xf7, 0x07, 0x72, 0x4f, 0x7f, 0x70, 0x00, + 0x4b, 0xfa, 0x06, 0x38, 0x4a, 0x8b, 0x28, 0xf9, 0x6c, 0xe5, 0x68, 0x28, 0x88, 0x9e, 0x64, 0xf4, + 0xa1, 0x21, 0x94, 0x60, 0xd0, 0xf5, 0xff, 0x71, 0x9d, 0x5c, 0x32, 0x63, 0x37, 0xa9, 0x82, 0x44, + 0x71, 0x36, 0x06, 0xb7, 0xd0, 0x2c, 0xb5, 0x76, 0x37, 0xc8, 0x9d, 0x6e, 0xe8, 0x2f, 0xb2, 0xa3, + 0x18, 0x11, 0xee, 0x85, 0x2c, 0x71, 0x71, 0x97, 0x23, 0x97, 0x34, 0x82, 0x22, 0x83, 0x0b, 0xf7, + 0xf0, 0x43, 0xce, 0xca, 0x11, 0x95, 0xfc, 0xa9, 0xdc, 0x08, 0x47, 0xcf, 0x6b, 0xad, 0x0b, 0x5b, + 0x96, 0xb9, 0x4b, 0x6e, 0xbf, 0x32, 0xd9, 0x35, 0x5a, 0xe4, 0x3a, 0x42, 0xfe, 0x83, 0x72, 0x9b, + 0x67, 0x3a, 0xe4, 0x06, 0x99, 0x0e, 0x2b, 0x47, 0x98, 0xf1, 0xa0, 0xdc, 0xea, 0x77, 0x3a, 0xf9, + 0xd8, 0x4e, 0x67, 0xe5, 0x88, 0xd7, 0xed, 0x28, 0x8b, 0x30, 0xd9, 0xd6, 0xf7, 0xc8, 0x56, 0x35, + 0x99, 0x75, 0x0d, 0x3a, 0xba, 0xbc, 0xa8, 0xef, 0xd1, 0x8d, 0xed, 0x95, 0x23, 0xaa, 0xff, 0xa7, + 0xb2, 0x0c, 0x53, 0x64, 0x5b, 0x80, 0x90, 0x99, 0x4c, 0x74, 0x2c, 0x79, 0xe5, 0x88, 0x1a, 0xfc, + 0xeb, 0x5a, 0x1f, 0x59, 0x72, 0xf6, 0xe3, 0x1e, 0x6f, 0xbb, 0x3d, 0x93, 0x68, 0xbb, 0xdd, 0x95, + 0x05, 0xdd, 0x70, 0x3f, 0x09, 0xb9, 0x16, 0x91, 0xb0, 0xc4, 0x24, 0x4c, 0x5f, 0x95, 0x3b, 0x21, + 0xbb, 0xa3, 0x59, 0xde, 0xe4, 0xf9, 0xfa, 0xc1, 0x74, 0xd7, 0x34, 0xeb, 0x82, 0x8b, 0xa0, 0xfb, + 0xd7, 0xc2, 0x04, 0xe4, 0x88, 0xe0, 0xfc, 0x07, 0xf4, 0xc6, 0x2c, 0x35, 0x43, 0x4a, 0xa6, 0xe1, + 0x0e, 0xfb, 0x0d, 0xd3, 0x3b, 0x20, 0xf3, 0x87, 0x99, 0xd1, 0x58, 0x90, 0x7d, 0xaf, 0xa4, 0x97, + 0x23, 0xaf, 0xa4, 0xef, 0xb9, 0x1b, 0x39, 0xdb, 0x7b, 0x37, 0x72, 0xb0, 0x7c, 0x90, 0x1b, 0xec, + 0xa8, 0xf2, 0x67, 0x43, 0x98, 0x2e, 0xbd, 0x82, 0x88, 0x9e, 0x81, 0x77, 0x74, 0x23, 0x54, 0x67, + 0xef, 0x35, 0x61, 0xa7, 0x94, 0xd4, 0xa8, 0x19, 0xc0, 0x5e, 0xfa, 0x7d, 0xd3, 0x6f, 0x67, 0xe1, + 0x14, 0xbd, 0x81, 0x7b, 0x0f, 0x37, 0x4c, 0xfe, 0xbe, 0x49, 0xf4, 0xf1, 0x91, 0x28, 0x4d, 0x9f, + 0x01, 0x47, 0xee, 0x3b, 0xe0, 0xec, 0x3b, 0xa4, 0x9c, 0x1d, 0x70, 0x48, 0x39, 0x97, 0x6c, 0xe5, + 0xf0, 0xbd, 0x61, 0xfd, 0x59, 0xe7, 0xf5, 0xe7, 0x8e, 0x08, 0x80, 0xfa, 0xc9, 0x65, 0x24, 0xf6, + 0xcd, 0x5b, 0x7c, 0x4d, 0xa9, 0x73, 0x9a, 0x72, 0xcf, 0xf0, 0x8c, 0xa4, 0xaf, 0x2d, 0x7f, 0x90, + 0x85, 0xcb, 0x02, 0x66, 0xaa, 0xf8, 0x22, 0x53, 0x94, 0xcf, 0x8c, 0x44, 0x51, 0x92, 0xc7, 0x40, + 0x48, 0x5b, 0x63, 0xfe, 0x44, 0xf8, 0xec, 0x50, 0x2f, 0x50, 0xbe, 0x6c, 0x22, 0x94, 0xe5, 0x24, + 0xe4, 0x69, 0x0f, 0xc3, 0xa0, 0x61, 0x6f, 0x09, 0xbb, 0x1b, 0xb1, 0x13, 0x47, 0xa2, 0xbc, 0x8d, + 0x41, 0x7f, 0xd8, 0xba, 0x46, 0x63, 0xd7, 0x32, 0x2a, 0x86, 0x63, 0xa2, 0x9f, 0x1a, 0x89, 0xe2, + 0xf8, 0xde, 0x70, 0xf2, 0x30, 0xde, 0x70, 0x43, 0xad, 0x72, 0x78, 0x35, 0x38, 0x94, 0x55, 0x8e, + 0x88, 0xc2, 0xd3, 0xc7, 0xef, 0xcd, 0x32, 0x9c, 0x64, 0x93, 0xad, 0x05, 0xde, 0x42, 0x44, 0x0f, + 0x8c, 0x02, 0xc8, 0xe3, 0x9e, 0x99, 0xc4, 0x6e, 0x39, 0x23, 0x2f, 0xfc, 0x49, 0xa9, 0xd8, 0xfb, + 0x1d, 0xb8, 0xe9, 0x60, 0x0f, 0x87, 0x23, 0x41, 0x4a, 0xec, 0x5a, 0x87, 0x04, 0x6c, 0xa4, 0x8f, + 0xd9, 0x8b, 0x65, 0xc8, 0xd3, 0x73, 0x5a, 0x68, 0x23, 0x15, 0x87, 0x09, 0x3e, 0xca, 0xb3, 0xc0, + 0x8e, 0x5c, 0xe2, 0x4b, 0xee, 0xd3, 0xdb, 0x8b, 0x3b, 0xa4, 0x5b, 0xec, 0xbf, 0x29, 0xc1, 0x74, + 0x1d, 0x3b, 0x25, 0xcd, 0xb2, 0x74, 0x6d, 0x6b, 0x54, 0x1e, 0xdf, 0xa2, 0xde, 0xc3, 0xe8, 0x5b, + 0x19, 0xd1, 0xf3, 0x34, 0xfe, 0x42, 0xb8, 0xc7, 0x6a, 0x44, 0x2c, 0xc1, 0x47, 0x85, 0xce, 0xcc, + 0x0c, 0xa2, 0x36, 0x06, 0x8f, 0x6d, 0x09, 0x26, 0xbc, 0xb3, 0x78, 0x37, 0x73, 0xe7, 0x33, 0xb7, + 0x9d, 0x1d, 0xef, 0x18, 0x0c, 0x79, 0xde, 0x7f, 0x06, 0x0c, 0xbd, 0x34, 0xa1, 0xa3, 0x7c, 0xfc, + 0x41, 0xc2, 0x64, 0x6d, 0x2c, 0x89, 0x3b, 0xfc, 0x61, 0x1d, 0x1d, 0xfc, 0xbd, 0x09, 0xb6, 0x1c, + 0xb9, 0xaa, 0x39, 0xf8, 0x21, 0xf4, 0x39, 0x19, 0x26, 0xea, 0xd8, 0x71, 0xc7, 0x5b, 0xee, 0x72, + 0xd3, 0x61, 0x35, 0x5c, 0x09, 0xad, 0x78, 0x4c, 0xb1, 0x35, 0x8c, 0xfb, 0x60, 0xaa, 0x6b, 0x99, + 0x2d, 0x6c, 0xdb, 0x6c, 0xf5, 0x22, 0xec, 0xa8, 0xd6, 0x6f, 0xf4, 0x27, 0xac, 0xcd, 0xaf, 0x7b, + 0xff, 0xa8, 0xc1, 0xef, 0x49, 0xcd, 0x00, 0x4a, 0x89, 0x55, 0x70, 0xdc, 0x66, 0x40, 0x5c, 0xe1, + 0xe9, 0x03, 0xfd, 0x29, 0x19, 0x66, 0xea, 0xd8, 0xf1, 0xa5, 0x98, 0x60, 0x93, 0x23, 0x1a, 0x5e, + 0x0e, 0x4a, 0xf9, 0x60, 0x50, 0x8a, 0x5f, 0x0d, 0xc8, 0x4b, 0xd3, 0x27, 0x36, 0xc6, 0xab, 0x01, + 0xc5, 0x38, 0x18, 0xc3, 0xf1, 0xb5, 0x27, 0xc2, 0x14, 0xe1, 0x85, 0x34, 0xd8, 0x9f, 0xcf, 0x06, + 0x8d, 0xf7, 0xf3, 0x29, 0x35, 0xde, 0xbb, 0x20, 0xb7, 0xa3, 0x59, 0x17, 0x6c, 0xd2, 0x70, 0xa7, + 0x45, 0xcc, 0xf6, 0x35, 0x37, 0xbb, 0x4a, 0xff, 0xea, 0xef, 0xa7, 0x99, 0x4b, 0xe6, 0xa7, 0xf9, + 0xa8, 0x94, 0x68, 0x24, 0xa4, 0x73, 0x87, 0x11, 0x36, 0xf9, 0x04, 0xe3, 0x66, 0x4c, 0xd9, 0xe9, + 0x2b, 0xc7, 0x0b, 0x65, 0x98, 0x74, 0xc7, 0x6d, 0x62, 0x8f, 0x9f, 0x3b, 0xb8, 0x3a, 0xf4, 0x37, + 0xf4, 0x13, 0xf6, 0xc0, 0x9e, 0x44, 0x46, 0x67, 0xde, 0x27, 0xe8, 0x81, 0xe3, 0x0a, 0x4f, 0x1f, + 0x8f, 0xb7, 0x52, 0x3c, 0x48, 0x7b, 0x40, 0xaf, 0x91, 0x41, 0x5e, 0xc6, 0xce, 0xb8, 0xad, 0xc8, + 0x37, 0x09, 0x87, 0x38, 0xe2, 0x04, 0x46, 0x78, 0x9e, 0x5f, 0xc6, 0xa3, 0x69, 0x40, 0x62, 0xb1, + 0x8d, 0x84, 0x18, 0x48, 0x1f, 0xb5, 0x77, 0x52, 0xd4, 0xe8, 0xe6, 0xc2, 0x4f, 0x8e, 0xa0, 0x57, + 0x1d, 0xef, 0xc2, 0x87, 0x27, 0x40, 0x42, 0xe3, 0xb0, 0xda, 0x5b, 0xbf, 0xc2, 0xc7, 0x72, 0x15, + 0x1f, 0xb8, 0x8d, 0x7d, 0x1b, 0xb7, 0x2e, 0xe0, 0x36, 0xfa, 0xb1, 0x83, 0x43, 0x77, 0x0a, 0x26, + 0x5a, 0x94, 0x1a, 0x01, 0x6f, 0x52, 0xf5, 0x5e, 0x13, 0xdc, 0x2b, 0xcd, 0x77, 0x44, 0xf4, 0xf7, + 0x31, 0xde, 0x2b, 0x2d, 0x50, 0xfc, 0x18, 0xcc, 0x16, 0x3a, 0xcb, 0xa8, 0xb4, 0x4c, 0x03, 0xfd, + 0x97, 0x83, 0xc3, 0x72, 0x15, 0x4c, 0xe9, 0x2d, 0xd3, 0x20, 0x61, 0x28, 0xbc, 0x43, 0x40, 0x7e, + 0x82, 0xf7, 0xb5, 0xbc, 0x63, 0x3e, 0xa8, 0xb3, 0x5d, 0xf3, 0x20, 0x61, 0x58, 0x63, 0xc2, 0x65, + 0xfd, 0xb0, 0x8c, 0x89, 0x3e, 0x65, 0xa7, 0x0f, 0xd9, 0x87, 0x02, 0xef, 0x36, 0xda, 0x15, 0x3e, + 0x2e, 0x56, 0x81, 0x87, 0x19, 0xce, 0xc2, 0xb5, 0x38, 0x94, 0xe1, 0x2c, 0x86, 0x81, 0x31, 0xdc, + 0x58, 0x11, 0xe0, 0x98, 0xfa, 0x1a, 0xf0, 0x01, 0xd0, 0x19, 0x9d, 0x79, 0x38, 0x24, 0x3a, 0x87, + 0x63, 0x22, 0xbe, 0x87, 0x85, 0xc8, 0x64, 0x16, 0x0f, 0xfa, 0xaf, 0xa3, 0x00, 0xe7, 0x8e, 0x61, + 0xfc, 0x15, 0xa8, 0xb7, 0x42, 0x82, 0x1b, 0xb1, 0xf7, 0x49, 0xd0, 0xa5, 0x32, 0xc6, 0xbb, 0xe2, + 0x45, 0xca, 0x4f, 0x1f, 0xc0, 0x17, 0xc8, 0x30, 0x47, 0x7c, 0x04, 0x3a, 0x58, 0xb3, 0x68, 0x47, + 0x39, 0x12, 0x47, 0xf9, 0xb7, 0x0a, 0x07, 0xf8, 0xe1, 0xe5, 0x10, 0xf0, 0x31, 0x12, 0x28, 0xc4, + 0xa2, 0xfb, 0x08, 0xb2, 0x30, 0x96, 0x6d, 0x94, 0x82, 0xcf, 0x02, 0x53, 0xf1, 0xd1, 0xe0, 0x91, + 0xd0, 0x23, 0x97, 0x17, 0x86, 0xd7, 0xd8, 0xc6, 0xec, 0x91, 0x2b, 0xc2, 0x44, 0xfa, 0x98, 0xbc, + 0xe6, 0x16, 0xb6, 0xe0, 0xdc, 0x20, 0x17, 0xc6, 0xbf, 0x3c, 0xeb, 0x9f, 0x68, 0xfb, 0xd4, 0x48, + 0x3c, 0x30, 0x0f, 0x10, 0x10, 0x5f, 0x81, 0xac, 0x65, 0x5e, 0xa4, 0x4b, 0x5b, 0xb3, 0x2a, 0x79, + 0xa6, 0xd7, 0x53, 0x76, 0x76, 0x77, 0x0c, 0x7a, 0x32, 0x74, 0x56, 0xf5, 0x5e, 0x95, 0xeb, 0x60, + 0xf6, 0xa2, 0xee, 0x6c, 0xaf, 0x60, 0xad, 0x8d, 0x2d, 0xd5, 0xbc, 0x48, 0x3c, 0xe6, 0x26, 0x55, + 0x3e, 0x91, 0xf7, 0x5f, 0x11, 0xb0, 0x2f, 0xc9, 0x2d, 0xf2, 0x63, 0x39, 0xfe, 0x96, 0xc4, 0xf2, + 0x8c, 0xe6, 0x2a, 0x7d, 0x85, 0x79, 0x97, 0x0c, 0x53, 0xaa, 0x79, 0x91, 0x29, 0xc9, 0xff, 0x71, + 0xb8, 0x3a, 0x92, 0x78, 0xa2, 0x47, 0x24, 0xe7, 0xb3, 0x3f, 0xf6, 0x89, 0x5e, 0x6c, 0xf1, 0x63, + 0x39, 0xb9, 0x34, 0xa3, 0x9a, 0x17, 0xeb, 0xd8, 0xa1, 0x2d, 0x02, 0x35, 0x47, 0xe4, 0x64, 0xad, + 0xdb, 0x94, 0x20, 0x9b, 0x87, 0xfb, 0xef, 0x49, 0x77, 0x11, 0x7c, 0x01, 0xf9, 0x2c, 0x8e, 0x7b, + 0x17, 0x61, 0x20, 0x07, 0x63, 0x88, 0x91, 0x22, 0xc3, 0xb4, 0x6a, 0x5e, 0x74, 0x87, 0x86, 0x25, + 0xbd, 0xd3, 0x19, 0xcd, 0x08, 0x99, 0xd4, 0xf8, 0xf7, 0xc4, 0xe0, 0x71, 0x31, 0x76, 0xe3, 0x7f, + 0x00, 0x03, 0xe9, 0xc3, 0xf0, 0x3c, 0xda, 0x58, 0xbc, 0x11, 0xda, 0x18, 0x0d, 0x0e, 0xc3, 0x36, + 0x08, 0x9f, 0x8d, 0x43, 0x6b, 0x10, 0x51, 0x1c, 0x8c, 0x65, 0xe7, 0x64, 0xae, 0x44, 0x86, 0xf9, + 0xd1, 0xb6, 0x89, 0xb7, 0x27, 0x73, 0x4d, 0x64, 0xc3, 0x2e, 0xc7, 0xc8, 0x48, 0xd0, 0x48, 0xe0, + 0x82, 0x28, 0xc0, 0x43, 0xfa, 0x78, 0xbc, 0x5f, 0x86, 0x19, 0xca, 0xc2, 0xe3, 0xc4, 0x0a, 0x18, + 0xaa, 0x51, 0x85, 0x6b, 0x70, 0x38, 0x8d, 0x2a, 0x86, 0x83, 0xb1, 0xdc, 0x0a, 0xea, 0xda, 0x71, + 0x43, 0x1c, 0x1f, 0x8f, 0x42, 0x70, 0x68, 0x63, 0x6c, 0x84, 0x47, 0xc8, 0x87, 0x31, 0xc6, 0x0e, + 0xe9, 0x18, 0xf9, 0xf3, 0xfc, 0x56, 0x34, 0x4a, 0x0c, 0x0e, 0xd0, 0x14, 0x46, 0x08, 0xc3, 0x90, + 0x4d, 0xe1, 0x90, 0x90, 0xf8, 0x92, 0x0c, 0x40, 0x19, 0x58, 0x33, 0xf7, 0xc8, 0x65, 0x3e, 0x23, + 0xe8, 0xce, 0x7a, 0xdd, 0xea, 0xe5, 0x01, 0x6e, 0xf5, 0x09, 0x43, 0xb8, 0x24, 0x5d, 0x09, 0x0c, + 0x49, 0xd9, 0xad, 0xe4, 0xd8, 0x57, 0x02, 0xe3, 0xcb, 0x4f, 0x1f, 0xe3, 0xc7, 0xa8, 0x35, 0x17, + 0x1c, 0x30, 0xfd, 0xb5, 0x91, 0xa0, 0x1c, 0x9a, 0xfd, 0xcb, 0xfc, 0xec, 0xff, 0x00, 0xd8, 0x0e, + 0x6b, 0x23, 0x0e, 0x3a, 0x38, 0x9a, 0xbe, 0x8d, 0x78, 0x78, 0x07, 0x44, 0x7f, 0x32, 0x0b, 0x47, + 0x59, 0x27, 0xf2, 0xbd, 0x00, 0x71, 0xc2, 0x73, 0x78, 0x5c, 0x27, 0x39, 0x00, 0xe5, 0x51, 0x2d, + 0x48, 0x25, 0x59, 0xca, 0x14, 0x60, 0x6f, 0x2c, 0xab, 0x1b, 0xf9, 0xf2, 0x43, 0x5d, 0xcd, 0x68, + 0x8b, 0x87, 0xfb, 0x1d, 0x00, 0xbc, 0xb7, 0xd6, 0x28, 0xf3, 0x6b, 0x8d, 0x7d, 0x56, 0x26, 0x13, + 0xef, 0x5c, 0x13, 0x91, 0x51, 0x76, 0xc7, 0xbe, 0x73, 0x1d, 0x5d, 0x76, 0xfa, 0x28, 0xbd, 0x5d, + 0x86, 0x6c, 0xdd, 0xb4, 0x1c, 0xf4, 0xfc, 0x24, 0xad, 0x93, 0x4a, 0x3e, 0x00, 0xc9, 0x7b, 0x57, + 0x4a, 0xdc, 0x2d, 0xcd, 0x37, 0xc7, 0x1f, 0x75, 0xd6, 0x1c, 0x8d, 0x78, 0x75, 0xbb, 0xe5, 0x87, + 0xae, 0x6b, 0x4e, 0x1a, 0x4f, 0x87, 0xca, 0xaf, 0x1e, 0x7d, 0x00, 0x23, 0xb5, 0x78, 0x3a, 0x91, + 0x25, 0xa7, 0x8f, 0xdb, 0x2b, 0x8f, 0x32, 0xdf, 0xd6, 0x25, 0xbd, 0x83, 0xd1, 0xf3, 0xa9, 0xcb, + 0x48, 0x55, 0xdb, 0xc1, 0xe2, 0x47, 0x62, 0x62, 0x5d, 0x5b, 0x49, 0x7c, 0x59, 0x39, 0x88, 0x2f, + 0x9b, 0xb4, 0x41, 0xd1, 0x03, 0xe8, 0x94, 0xa5, 0x71, 0x37, 0xa8, 0x98, 0xb2, 0xc7, 0x12, 0xa7, + 0xf3, 0x58, 0x1d, 0x3b, 0xd4, 0xa8, 0xac, 0x79, 0x37, 0xb0, 0xfc, 0xf8, 0x48, 0x22, 0x76, 0xfa, + 0x17, 0xbc, 0xc8, 0x3d, 0x17, 0xbc, 0xbc, 0x2b, 0x0c, 0xce, 0x1a, 0x0f, 0xce, 0x0f, 0x47, 0x0b, + 0x88, 0x67, 0x72, 0x24, 0x30, 0xbd, 0xc9, 0x87, 0x69, 0x9d, 0x83, 0xe9, 0xce, 0x21, 0xb9, 0x48, + 0x1f, 0xb0, 0x5f, 0xc8, 0xc1, 0x51, 0x3a, 0xe9, 0x2f, 0x1a, 0x6d, 0x16, 0x61, 0xf5, 0xf5, 0xd2, + 0x21, 0x6f, 0xb6, 0xed, 0x0f, 0xc1, 0xca, 0xc5, 0x72, 0xce, 0xf5, 0xde, 0x8e, 0xbf, 0x40, 0xc3, + 0xb9, 0xba, 0x9d, 0x28, 0xd9, 0x69, 0x13, 0xbf, 0x21, 0xdf, 0xff, 0x8f, 0xbf, 0xcb, 0x68, 0x42, + 0xfc, 0x2e, 0xa3, 0x3f, 0x4d, 0xb6, 0x6e, 0x47, 0x8a, 0xee, 0x11, 0x78, 0xca, 0xb6, 0x53, 0x82, + 0x15, 0x3d, 0x01, 0xee, 0xbe, 0x3f, 0xdc, 0xc9, 0x82, 0x08, 0x22, 0x43, 0xba, 0x93, 0x11, 0x02, + 0x87, 0xe9, 0x4e, 0x36, 0x88, 0x81, 0x31, 0xdc, 0x6a, 0x9f, 0x63, 0xbb, 0xf9, 0xa4, 0xdd, 0xa0, + 0xbf, 0x92, 0x52, 0x1f, 0xa5, 0xbf, 0x9d, 0x49, 0xe4, 0xff, 0x4c, 0xf8, 0x8a, 0x1f, 0xa6, 0x93, + 0x78, 0x34, 0xc7, 0x91, 0x1b, 0xc3, 0xba, 0x91, 0x44, 0x7c, 0xd1, 0xcf, 0xe9, 0x6d, 0x67, 0x7b, + 0x44, 0x27, 0x3a, 0x2e, 0xba, 0xb4, 0xbc, 0xeb, 0x91, 0xc9, 0x0b, 0xfa, 0xb7, 0x4c, 0xa2, 0x10, + 0x52, 0xbe, 0x48, 0x08, 0x5b, 0x11, 0x22, 0x4e, 0x10, 0xf8, 0x29, 0x96, 0xde, 0x18, 0x35, 0xfa, + 0xac, 0xde, 0xc6, 0xe6, 0xe3, 0x50, 0xa3, 0x09, 0x5f, 0xa3, 0xd3, 0xe8, 0x38, 0x72, 0xdf, 0xa7, + 0x1a, 0xed, 0x8b, 0x64, 0x44, 0x1a, 0x1d, 0x4b, 0x2f, 0x7d, 0x19, 0xbf, 0x74, 0x86, 0x4d, 0xa4, + 0x56, 0x75, 0xe3, 0x02, 0xfa, 0xe7, 0xbc, 0x77, 0x31, 0xf3, 0x39, 0xdd, 0xd9, 0x66, 0xb1, 0x60, + 0xfe, 0x40, 0xf8, 0x6e, 0x94, 0x21, 0xe2, 0xbd, 0xf0, 0xe1, 0xa4, 0x72, 0xfb, 0xc2, 0x49, 0x15, + 0x61, 0x56, 0x37, 0x1c, 0x6c, 0x19, 0x5a, 0x67, 0xa9, 0xa3, 0x6d, 0xd9, 0xa7, 0x26, 0xfa, 0x5e, + 0x5e, 0x57, 0x09, 0xe5, 0x51, 0xf9, 0x3f, 0xc2, 0xd7, 0x57, 0x4e, 0xf2, 0xd7, 0x57, 0x46, 0x44, + 0xbf, 0x9a, 0x8a, 0x8e, 0x7e, 0xe5, 0x47, 0xb7, 0x82, 0xc1, 0xc1, 0xb1, 0x45, 0x6d, 0xe3, 0x84, + 0xe1, 0xfe, 0x6e, 0x16, 0x8c, 0xc2, 0xe6, 0x87, 0x7e, 0xfc, 0x2d, 0x39, 0xd1, 0xea, 0x9e, 0xab, + 0x08, 0xf3, 0xbd, 0x4a, 0x90, 0xd8, 0x42, 0x0d, 0x57, 0x5e, 0xee, 0xa9, 0xbc, 0x6f, 0xf2, 0x64, + 0x05, 0x4c, 0x9e, 0xb0, 0x52, 0xe5, 0xc4, 0x94, 0x2a, 0xc9, 0x62, 0xa1, 0x48, 0x6d, 0xc7, 0x70, + 0x1a, 0x29, 0x07, 0xc7, 0xbc, 0x68, 0xb7, 0xdd, 0x2e, 0xd6, 0x2c, 0xcd, 0x68, 0x61, 0xf4, 0x21, + 0x69, 0x14, 0x66, 0xef, 0x12, 0x4c, 0xea, 0x2d, 0xd3, 0xa8, 0xeb, 0xcf, 0xf6, 0x2e, 0x97, 0x8b, + 0x0f, 0xb2, 0x4e, 0x24, 0x52, 0x61, 0x7f, 0xa8, 0xfe, 0xbf, 0x4a, 0x05, 0xa6, 0x5a, 0x9a, 0xd5, + 0xa6, 0x41, 0xf8, 0x72, 0x3d, 0x17, 0x39, 0x45, 0x12, 0x2a, 0x79, 0xbf, 0xa8, 0xc1, 0xdf, 0x4a, + 0x8d, 0x17, 0x62, 0xbe, 0x27, 0x9a, 0x47, 0x24, 0xb1, 0xc5, 0xe0, 0x27, 0x4e, 0xe6, 0xae, 0x74, + 0x2c, 0xdc, 0x21, 0x77, 0xd0, 0xd3, 0x1e, 0x62, 0x4a, 0x0d, 0x12, 0x92, 0x2e, 0x0f, 0x90, 0xa2, + 0xf6, 0xa1, 0x31, 0xee, 0xe5, 0x01, 0x21, 0x2e, 0xd2, 0xd7, 0xcc, 0xb7, 0xe4, 0x61, 0x96, 0xf6, + 0x6a, 0x4c, 0x9c, 0xe8, 0x05, 0xe4, 0x0a, 0x69, 0xe7, 0x7e, 0x7c, 0x09, 0xd5, 0x0f, 0x3e, 0x26, + 0x17, 0x40, 0xbe, 0xe0, 0x07, 0x1c, 0x74, 0x1f, 0x93, 0xee, 0xdb, 0x7b, 0x7c, 0xcd, 0x53, 0x9e, + 0xc6, 0xbd, 0x6f, 0x1f, 0x5f, 0x7c, 0xfa, 0xf8, 0xfc, 0xa2, 0x0c, 0x72, 0xb1, 0xdd, 0x46, 0xad, + 0x83, 0x43, 0x71, 0x0d, 0x4c, 0x7b, 0x6d, 0x26, 0x88, 0x01, 0x19, 0x4e, 0x4a, 0xba, 0x08, 0xea, + 0xcb, 0xa6, 0xd8, 0x1e, 0xfb, 0xae, 0x42, 0x4c, 0xd9, 0xe9, 0x83, 0xf2, 0x6b, 0x13, 0xac, 0xd1, + 0x2c, 0x98, 0xe6, 0x05, 0x72, 0x54, 0xe6, 0xf9, 0x32, 0xe4, 0x96, 0xb0, 0xd3, 0xda, 0x1e, 0x51, + 0x9b, 0xd9, 0xb5, 0x3a, 0x5e, 0x9b, 0xd9, 0x77, 0x1f, 0xfe, 0x60, 0x1b, 0xd6, 0x63, 0x6b, 0x9e, + 0xb0, 0x34, 0xee, 0xe8, 0xce, 0xb1, 0xa5, 0xa7, 0x0f, 0xce, 0xbf, 0xc9, 0x30, 0xe7, 0xaf, 0x70, + 0x51, 0x4c, 0x7e, 0x21, 0xf3, 0x78, 0x5b, 0xef, 0x44, 0x9f, 0x49, 0x16, 0x22, 0xcd, 0x97, 0x29, + 0x5f, 0xb3, 0x94, 0x17, 0x16, 0x13, 0x04, 0x4f, 0x13, 0x63, 0x70, 0x0c, 0x33, 0x78, 0x19, 0x26, + 0x09, 0x43, 0x8b, 0xfa, 0x1e, 0x71, 0x1d, 0xe4, 0x16, 0x1a, 0x9f, 0x33, 0x92, 0x85, 0xc6, 0x3b, + 0xf9, 0x85, 0x46, 0xc1, 0x88, 0xc7, 0xde, 0x3a, 0x63, 0x42, 0x5f, 0x1a, 0xf7, 0xff, 0x91, 0x2f, + 0x33, 0x26, 0xf0, 0xa5, 0x19, 0x50, 0x7e, 0xfa, 0x88, 0xfe, 0xd6, 0x7f, 0x62, 0x9d, 0xad, 0xb7, + 0xa1, 0x8a, 0xfe, 0xe7, 0x31, 0xc8, 0x9e, 0x75, 0x1f, 0xfe, 0x77, 0x70, 0x23, 0xd6, 0x4b, 0x46, + 0x10, 0x9c, 0xe1, 0x6e, 0xc8, 0xba, 0xf4, 0xd9, 0xb4, 0xe5, 0x46, 0xb1, 0xdd, 0x5d, 0x97, 0x11, + 0x95, 0xfc, 0xa7, 0x9c, 0x84, 0xbc, 0x6d, 0xee, 0x5a, 0x2d, 0xd7, 0x7c, 0x76, 0x35, 0x86, 0xbd, + 0x25, 0x0d, 0x4a, 0xca, 0x91, 0x9e, 0x1f, 0x9d, 0xcb, 0x68, 0xe8, 0x82, 0x24, 0x99, 0xbb, 0x20, + 0x29, 0xc1, 0xfe, 0x81, 0x00, 0x6f, 0xe9, 0x6b, 0xc4, 0x5f, 0x91, 0xbb, 0x02, 0xdb, 0xa3, 0x82, + 0x3d, 0x42, 0x2c, 0x07, 0x55, 0x87, 0xa4, 0x0e, 0xdf, 0xbc, 0x68, 0xfd, 0x38, 0xf0, 0x63, 0x75, + 0xf8, 0x16, 0xe0, 0x61, 0x2c, 0xa7, 0xd4, 0xf3, 0xcc, 0x49, 0xf5, 0x81, 0x51, 0xa2, 0x9b, 0xe5, + 0x94, 0xfe, 0x40, 0xe8, 0x8c, 0xd0, 0x79, 0x75, 0x68, 0x74, 0x0e, 0xc9, 0x7d, 0xf5, 0x8f, 0x64, + 0x12, 0x09, 0xd3, 0x33, 0x72, 0xc4, 0x2f, 0x3a, 0x4a, 0x0c, 0x91, 0x3b, 0x06, 0x73, 0x71, 0xa0, + 0x67, 0x87, 0x0f, 0x0d, 0xce, 0x8b, 0x2e, 0xc4, 0xff, 0xb8, 0x43, 0x83, 0x8b, 0x32, 0x92, 0x3e, + 0x90, 0xaf, 0xa6, 0x17, 0x8b, 0x15, 0x5b, 0x8e, 0xbe, 0x37, 0xe2, 0x96, 0xc6, 0x0f, 0x2f, 0x09, + 0xa3, 0x01, 0xef, 0x93, 0x10, 0xe5, 0x70, 0xdc, 0xd1, 0x80, 0xc5, 0xd8, 0x48, 0x1f, 0xa6, 0xbf, + 0xcd, 0xbb, 0xd2, 0x63, 0x6b, 0x33, 0xaf, 0x61, 0xab, 0x01, 0xf8, 0xe0, 0x68, 0x9d, 0x81, 0x99, + 0xd0, 0xd4, 0xdf, 0xbb, 0xb0, 0x86, 0x4b, 0x4b, 0x7a, 0xd0, 0xdd, 0x17, 0xd9, 0xc8, 0x17, 0x06, + 0x12, 0x2c, 0xf8, 0x8a, 0x30, 0x31, 0x96, 0xfb, 0xe0, 0xbc, 0x31, 0x6c, 0x4c, 0x58, 0xfd, 0x41, + 0x18, 0xab, 0x1a, 0x8f, 0xd5, 0xed, 0x22, 0x62, 0x12, 0x1b, 0xd3, 0x84, 0xe6, 0x8d, 0x6f, 0xf6, + 0xe1, 0x52, 0x39, 0xb8, 0xee, 0x1e, 0x9a, 0x8f, 0xf4, 0x11, 0xfb, 0x75, 0xda, 0x1d, 0xd6, 0xa9, + 0xc9, 0x3e, 0x9a, 0xee, 0x90, 0xcd, 0x06, 0x64, 0x6e, 0x36, 0x90, 0xd0, 0xdf, 0x3e, 0x70, 0x23, + 0xf5, 0x98, 0x1b, 0x04, 0x51, 0x76, 0xc4, 0xfe, 0xf6, 0x03, 0x39, 0x48, 0x1f, 0x9c, 0x7f, 0x94, + 0x01, 0x96, 0x2d, 0x73, 0xb7, 0x5b, 0xb3, 0xda, 0xd8, 0x42, 0x7f, 0x13, 0x4c, 0x00, 0x7e, 0x69, + 0x04, 0x13, 0x80, 0x75, 0x80, 0x2d, 0x9f, 0x38, 0xd3, 0xf0, 0x5b, 0xc4, 0xcc, 0xfd, 0x80, 0x29, + 0x35, 0x44, 0x83, 0xbf, 0x72, 0xf6, 0x47, 0x78, 0x8c, 0xe3, 0xfa, 0xac, 0x80, 0xdc, 0x28, 0x27, + 0x00, 0x6f, 0xf5, 0xb1, 0x6e, 0x70, 0x58, 0xdf, 0x7b, 0x00, 0x4e, 0xd2, 0xc7, 0xfc, 0x9f, 0x26, + 0x60, 0x9a, 0x6e, 0xd7, 0x51, 0x99, 0xfe, 0x7d, 0x00, 0xfa, 0xaf, 0x8d, 0x00, 0xf4, 0x0d, 0x98, + 0x31, 0x03, 0xea, 0xb4, 0x4f, 0x0d, 0x2f, 0xc0, 0xc4, 0xc2, 0x1e, 0xe2, 0x4b, 0xe5, 0xc8, 0xa0, + 0x0f, 0x84, 0x91, 0x57, 0x79, 0xe4, 0xef, 0x8c, 0x91, 0x77, 0x88, 0xe2, 0x28, 0xa1, 0x7f, 0x9b, + 0x0f, 0xfd, 0x06, 0x07, 0x7d, 0xf1, 0x20, 0xac, 0x8c, 0x21, 0xdc, 0xbe, 0x0c, 0x59, 0x72, 0x3a, + 0xee, 0xb7, 0x53, 0x9c, 0xdf, 0x9f, 0x82, 0x09, 0xd2, 0x64, 0xfd, 0x79, 0x87, 0xf7, 0xea, 0x7e, + 0xd1, 0x36, 0x1d, 0x6c, 0xf9, 0x1e, 0x0b, 0xde, 0xab, 0xcb, 0x83, 0xe7, 0x95, 0x6c, 0x9f, 0xca, + 0xd3, 0x8d, 0x48, 0x3f, 0x61, 0xe8, 0x49, 0x49, 0x58, 0xe2, 0x23, 0x3b, 0x2f, 0x37, 0xcc, 0xa4, + 0x64, 0x00, 0x23, 0xe9, 0x03, 0xff, 0x17, 0x59, 0x38, 0x45, 0x57, 0x95, 0x96, 0x2c, 0x73, 0xa7, + 0xe7, 0x76, 0x2b, 0xfd, 0xe0, 0xba, 0x70, 0x3d, 0xcc, 0x39, 0x9c, 0x3f, 0x36, 0xd3, 0x89, 0x9e, + 0x54, 0xf4, 0x67, 0x61, 0x9f, 0x8a, 0x67, 0xf1, 0x48, 0x2e, 0xc4, 0x08, 0x30, 0x8a, 0xf7, 0xc4, + 0x0b, 0xf5, 0x82, 0x8c, 0x86, 0x16, 0xa9, 0xe4, 0xa1, 0xd6, 0x2c, 0x7d, 0x9d, 0xca, 0x89, 0xe8, + 0xd4, 0xbb, 0x7d, 0x9d, 0xfa, 0x31, 0x4e, 0xa7, 0x96, 0x0f, 0x2e, 0x92, 0xf4, 0x75, 0xeb, 0xe5, + 0xfe, 0xc6, 0x90, 0xbf, 0x6d, 0xb7, 0x93, 0xc2, 0x66, 0x5d, 0xd8, 0x1f, 0x29, 0xcb, 0xf9, 0x23, + 0xf1, 0xf7, 0x51, 0x24, 0x98, 0x09, 0xf3, 0x5c, 0x47, 0xe8, 0xd2, 0x1c, 0x48, 0xba, 0xc7, 0x9d, + 0xa4, 0xb7, 0x87, 0x9a, 0xeb, 0xc6, 0x16, 0x34, 0x86, 0xb5, 0xa5, 0x39, 0xc8, 0x2f, 0xe9, 0x1d, + 0x07, 0x5b, 0xe8, 0x31, 0x36, 0xd3, 0x7d, 0x79, 0x8a, 0x03, 0xc0, 0x22, 0xe4, 0x37, 0x49, 0x69, + 0xcc, 0x64, 0xbe, 0x49, 0xac, 0xf5, 0x50, 0x0e, 0x55, 0xf6, 0x6f, 0xd2, 0xe8, 0x7c, 0x3d, 0x64, + 0x46, 0x36, 0x45, 0x4e, 0x10, 0x9d, 0x6f, 0x30, 0x0b, 0x63, 0xb9, 0x98, 0x2a, 0xaf, 0xe2, 0x1d, + 0x77, 0x8c, 0xbf, 0x90, 0x1e, 0xc2, 0x05, 0x90, 0xf5, 0xb6, 0x4d, 0x3a, 0xc7, 0x29, 0xd5, 0x7d, + 0x4c, 0xea, 0x2b, 0xd4, 0x2b, 0x2a, 0xca, 0xf2, 0xb8, 0x7d, 0x85, 0x84, 0xb8, 0x48, 0x1f, 0xb3, + 0x6f, 0x13, 0x47, 0xd1, 0x6e, 0x47, 0x6b, 0x61, 0x97, 0xfb, 0xd4, 0x50, 0xa3, 0x3d, 0x59, 0xd6, + 0xeb, 0xc9, 0x42, 0xed, 0x34, 0x77, 0x80, 0x76, 0x3a, 0xec, 0x32, 0xa4, 0x2f, 0x73, 0x52, 0xf1, + 0x43, 0x5b, 0x86, 0x8c, 0x65, 0x63, 0x0c, 0xd7, 0x8e, 0x7a, 0x07, 0x69, 0xc7, 0xda, 0x5a, 0x87, + 0xdd, 0xa4, 0x61, 0xc2, 0x1a, 0xd9, 0xa1, 0xd9, 0x61, 0x36, 0x69, 0xa2, 0x79, 0x18, 0x03, 0x5a, + 0x73, 0x0c, 0xad, 0x4f, 0xb3, 0x61, 0x34, 0xe5, 0x7d, 0x52, 0xdb, 0xb4, 0x9c, 0x64, 0xfb, 0xa4, + 0x2e, 0x77, 0x2a, 0xf9, 0x2f, 0xe9, 0xc1, 0x2b, 0xfe, 0x5c, 0xf5, 0xa8, 0x86, 0xcf, 0x04, 0x07, + 0xaf, 0x06, 0x31, 0x90, 0x3e, 0xbc, 0x6f, 0x38, 0xa4, 0xc1, 0x73, 0xd8, 0xe6, 0xc8, 0xda, 0xc0, + 0xc8, 0x86, 0xce, 0x61, 0x9a, 0x63, 0x34, 0x0f, 0xe9, 0xe3, 0xf5, 0x8d, 0xd0, 0xc0, 0xf9, 0xba, + 0x31, 0x0e, 0x9c, 0x5e, 0xcb, 0xcc, 0x0d, 0xd9, 0x32, 0x87, 0xdd, 0xff, 0x61, 0xb2, 0x1e, 0xdd, + 0x80, 0x39, 0xcc, 0xfe, 0x4f, 0x0c, 0x13, 0xe9, 0x23, 0xfe, 0x7a, 0x19, 0x72, 0xf5, 0xf1, 0x8f, + 0x97, 0xc3, 0xce, 0x45, 0x88, 0xac, 0xea, 0x23, 0x1b, 0x2e, 0x87, 0x99, 0x8b, 0x44, 0xb2, 0x30, + 0x86, 0xc0, 0xfb, 0x47, 0x61, 0x86, 0x2c, 0x89, 0x78, 0xdb, 0xac, 0xdf, 0x60, 0xa3, 0xe6, 0xa3, + 0x29, 0xb6, 0xd5, 0xfb, 0x60, 0xd2, 0xdb, 0xbf, 0x63, 0x23, 0xe7, 0xbc, 0x58, 0xfb, 0xf4, 0xb8, + 0x54, 0xfd, 0xff, 0x0f, 0xe4, 0x0c, 0x31, 0xf2, 0xbd, 0xda, 0x61, 0x9d, 0x21, 0x0e, 0x75, 0xbf, + 0xf6, 0x4f, 0x83, 0x11, 0xf5, 0xbf, 0xa4, 0x87, 0x79, 0xef, 0x3e, 0x6e, 0xb6, 0xcf, 0x3e, 0xee, + 0x87, 0xc2, 0x58, 0xd6, 0x79, 0x2c, 0xef, 0x12, 0x15, 0xe1, 0x08, 0xc7, 0xda, 0xb7, 0xfb, 0x70, + 0x9e, 0xe5, 0xe0, 0x5c, 0x38, 0x10, 0x2f, 0x63, 0x38, 0xf8, 0x98, 0x0d, 0xc6, 0xdc, 0x0f, 0xa7, + 0xd8, 0x8e, 0x7b, 0x4e, 0x55, 0x64, 0xf7, 0x9d, 0xaa, 0xe0, 0x5a, 0x7a, 0xee, 0x80, 0x2d, 0xfd, + 0xc3, 0x61, 0xed, 0x68, 0xf0, 0xda, 0x71, 0xb7, 0x38, 0x22, 0xa3, 0x1b, 0x99, 0xdf, 0xe1, 0xab, + 0xc7, 0x39, 0x4e, 0x3d, 0x4a, 0x07, 0x63, 0x26, 0x7d, 0xfd, 0xf8, 0xa8, 0x37, 0xa1, 0x3d, 0xe4, + 0xf6, 0x3e, 0xec, 0x56, 0x31, 0x27, 0xc4, 0x91, 0x8d, 0xdc, 0xc3, 0x6c, 0x15, 0x0f, 0xe2, 0x64, + 0x0c, 0xb1, 0xd8, 0x66, 0x61, 0x9a, 0xf0, 0x74, 0x4e, 0x6f, 0x6f, 0x61, 0x07, 0xfd, 0x16, 0xf5, + 0x51, 0xf4, 0x22, 0x5f, 0x8e, 0x28, 0x3c, 0x51, 0xd4, 0x79, 0xd7, 0xa4, 0x1e, 0x1d, 0x94, 0xc9, + 0xf9, 0x10, 0x83, 0xe3, 0x8e, 0xa0, 0x38, 0x90, 0x83, 0xf4, 0x21, 0xfb, 0x00, 0x75, 0xb7, 0x59, + 0xd5, 0x2e, 0x99, 0xbb, 0x0e, 0x7a, 0x78, 0x04, 0x1d, 0xf4, 0x02, 0xe4, 0x3b, 0x84, 0x1a, 0x3b, + 0x96, 0x11, 0x3f, 0xdd, 0x61, 0x22, 0xa0, 0xe5, 0xab, 0xec, 0xcf, 0xa4, 0x67, 0x33, 0x02, 0x39, + 0x52, 0x3a, 0xe3, 0x3e, 0x9b, 0x31, 0xa0, 0xfc, 0xb1, 0xdc, 0xb1, 0x33, 0xe9, 0x96, 0xae, 0xef, + 0xe8, 0xce, 0x88, 0x22, 0x38, 0x74, 0x5c, 0x5a, 0x5e, 0x04, 0x07, 0xf2, 0x92, 0xf4, 0xc4, 0x68, + 0x48, 0x2a, 0xee, 0xef, 0xe3, 0x3e, 0x31, 0x1a, 0x5f, 0x7c, 0xfa, 0x98, 0xfc, 0x0a, 0x6d, 0x59, + 0x67, 0xa9, 0xf3, 0x6d, 0x8a, 0x7e, 0xbd, 0x43, 0x37, 0x16, 0xca, 0xda, 0xe1, 0x35, 0x96, 0xbe, + 0xe5, 0xa7, 0x0f, 0xcc, 0x7f, 0xff, 0x41, 0xc8, 0x2d, 0xe2, 0xf3, 0xbb, 0x5b, 0xe8, 0x4e, 0x98, + 0x6c, 0x58, 0x18, 0x57, 0x8c, 0x4d, 0xd3, 0x95, 0xae, 0xe3, 0x3e, 0x7b, 0x90, 0xb0, 0x37, 0x17, + 0x8f, 0x6d, 0xac, 0xb5, 0x83, 0xf3, 0x67, 0xde, 0x2b, 0x7a, 0x89, 0x04, 0xd9, 0xba, 0xa3, 0x39, + 0x68, 0xca, 0xc7, 0x16, 0x3d, 0x1c, 0xc6, 0xe2, 0x4e, 0x1e, 0x8b, 0xeb, 0x39, 0x59, 0x10, 0x0e, + 0xe6, 0xdd, 0xff, 0x23, 0x00, 0x40, 0x30, 0xf9, 0xa0, 0x6d, 0x1a, 0x6e, 0x0e, 0xef, 0x08, 0xa4, + 0xf7, 0x8e, 0x5e, 0xe6, 0x8b, 0xfb, 0x1e, 0x4e, 0xdc, 0x4f, 0x16, 0x2b, 0x62, 0x0c, 0x2b, 0x6d, + 0x12, 0x4c, 0xb9, 0xa2, 0x5d, 0xc1, 0x5a, 0xdb, 0x46, 0x3f, 0x10, 0x28, 0x7f, 0x84, 0x98, 0xd1, + 0x7b, 0x84, 0x83, 0x71, 0xd2, 0x5a, 0xf9, 0xc4, 0xa3, 0x3d, 0x3a, 0xbc, 0xcd, 0x7f, 0x89, 0x0f, + 0x46, 0x72, 0x33, 0x64, 0x75, 0x63, 0xd3, 0x64, 0xfe, 0x85, 0x57, 0x46, 0xd0, 0x76, 0x75, 0x42, + 0x25, 0x19, 0x05, 0x23, 0x75, 0xc6, 0xb3, 0x35, 0x96, 0x4b, 0xef, 0xb2, 0x6e, 0xe9, 0xe8, 0xff, + 0x3f, 0x50, 0xd8, 0x8a, 0x02, 0xd9, 0xae, 0xe6, 0x6c, 0xb3, 0xa2, 0xc9, 0xb3, 0x6b, 0x23, 0xef, + 0x1a, 0x9a, 0x61, 0x1a, 0x97, 0x76, 0xf4, 0x67, 0xfb, 0x77, 0xeb, 0x72, 0x69, 0x2e, 0xe7, 0x5b, + 0xd8, 0xc0, 0x96, 0xe6, 0xe0, 0xfa, 0xde, 0x16, 0x99, 0x63, 0x4d, 0xaa, 0xe1, 0xa4, 0xc4, 0xfa, + 0xef, 0x72, 0x1c, 0xad, 0xff, 0x9b, 0x7a, 0x07, 0x93, 0x48, 0x4d, 0x4c, 0xff, 0xbd, 0xf7, 0x44, + 0xfa, 0xdf, 0xa7, 0x88, 0xf4, 0xd1, 0xf8, 0x8e, 0x04, 0x33, 0x75, 0x57, 0xe1, 0xea, 0xbb, 0x3b, + 0x3b, 0x9a, 0x75, 0x09, 0x5d, 0x1b, 0xa0, 0x12, 0x52, 0xcd, 0x0c, 0xef, 0x97, 0xf2, 0x47, 0xc2, + 0xd7, 0x4a, 0xb3, 0xa6, 0x1d, 0x2a, 0x21, 0x71, 0x3b, 0xb8, 0x15, 0x72, 0xae, 0x7a, 0x7b, 0x1e, + 0x97, 0xb1, 0x0d, 0x81, 0xe6, 0x14, 0x8c, 0x68, 0x35, 0x90, 0xb7, 0x31, 0x44, 0xd3, 0x90, 0xe0, + 0x68, 0xdd, 0xd1, 0x5a, 0x17, 0x96, 0x4d, 0xcb, 0xdc, 0x75, 0x74, 0x03, 0xdb, 0xe8, 0x09, 0x01, + 0x02, 0x9e, 0xfe, 0x67, 0x02, 0xfd, 0x47, 0xff, 0x9e, 0x11, 0x1d, 0x45, 0xfd, 0x6e, 0x35, 0x4c, + 0x3e, 0x22, 0x40, 0x95, 0xd8, 0xb8, 0x28, 0x42, 0x31, 0x7d, 0xa1, 0xbd, 0x4e, 0x86, 0x42, 0xf9, + 0xa1, 0xae, 0x69, 0x39, 0xab, 0x66, 0x4b, 0xeb, 0xd8, 0x8e, 0x69, 0x61, 0x54, 0x8b, 0x95, 0x9a, + 0xdb, 0xc3, 0xb4, 0xcd, 0x56, 0x30, 0x38, 0xb2, 0xb7, 0xb0, 0xda, 0xc9, 0xbc, 0x8e, 0x7f, 0x40, + 0x78, 0x97, 0x91, 0x4a, 0xa5, 0x97, 0xa3, 0x08, 0x3d, 0xef, 0xd7, 0xa5, 0x25, 0x3b, 0x2c, 0x21, + 0xb6, 0xf3, 0x28, 0xc4, 0xd4, 0x18, 0x96, 0xca, 0x25, 0x98, 0xad, 0xef, 0x9e, 0xf7, 0x89, 0xd8, + 0x61, 0x23, 0xe4, 0x15, 0xc2, 0x51, 0x2a, 0x98, 0xe2, 0x85, 0x09, 0x45, 0xc8, 0xf7, 0x3a, 0x98, + 0xb5, 0xc3, 0xd9, 0x18, 0xde, 0x7c, 0xa2, 0x60, 0x74, 0x8a, 0xc1, 0xa5, 0xa6, 0x2f, 0xc0, 0x77, + 0x48, 0x30, 0x5b, 0xeb, 0x62, 0x03, 0xb7, 0xa9, 0x17, 0x24, 0x27, 0xc0, 0x97, 0x24, 0x14, 0x20, + 0x47, 0x28, 0x42, 0x80, 0x81, 0xc7, 0xf2, 0xa2, 0x27, 0xbc, 0x20, 0x21, 0x91, 0xe0, 0xe2, 0x4a, + 0x4b, 0x5f, 0x70, 0x5f, 0x90, 0x60, 0x5a, 0xdd, 0x35, 0xd6, 0x2d, 0xd3, 0x1d, 0x8d, 0x2d, 0x74, + 0x57, 0xd0, 0x41, 0xdc, 0x04, 0xc7, 0xda, 0xbb, 0x16, 0x59, 0x7f, 0xaa, 0x18, 0x75, 0xdc, 0x32, + 0x8d, 0xb6, 0x4d, 0xea, 0x91, 0x53, 0xf7, 0x7f, 0xb8, 0x23, 0xfb, 0xfc, 0xaf, 0xca, 0x19, 0xf4, + 0x02, 0xe1, 0x50, 0x37, 0xb4, 0xf2, 0xa1, 0xa2, 0xc5, 0x7b, 0x02, 0xc1, 0x80, 0x36, 0x83, 0x4a, + 0x48, 0x5f, 0xb8, 0x9f, 0x96, 0x40, 0x29, 0xb6, 0x5a, 0xe6, 0xae, 0xe1, 0xd4, 0x71, 0x07, 0xb7, + 0x9c, 0x86, 0xa5, 0xb5, 0x70, 0xd8, 0x7e, 0x2e, 0x80, 0xdc, 0xd6, 0x2d, 0xd6, 0x07, 0xbb, 0x8f, + 0x4c, 0x8e, 0x2f, 0x11, 0xde, 0x71, 0xa4, 0xb5, 0xdc, 0x5f, 0x4a, 0x02, 0x71, 0x8a, 0xed, 0x2b, + 0x0a, 0x16, 0x94, 0xbe, 0x54, 0x3f, 0x2c, 0xc1, 0x94, 0xd7, 0x63, 0x6f, 0x89, 0x08, 0xf3, 0x57, + 0x12, 0x4e, 0x46, 0x7c, 0xe2, 0x09, 0x64, 0xf8, 0x96, 0x04, 0xb3, 0x8a, 0x28, 0xfa, 0xc9, 0x44, + 0x57, 0x4c, 0x2e, 0x3a, 0xf7, 0xb5, 0x5a, 0x6b, 0x2e, 0xd5, 0x56, 0x17, 0xcb, 0x6a, 0x41, 0x46, + 0x8f, 0x49, 0x90, 0x5d, 0xd7, 0x8d, 0xad, 0x70, 0x74, 0xa5, 0xe3, 0xae, 0x1d, 0xd9, 0xc6, 0x0f, + 0xb1, 0x96, 0x4e, 0x5f, 0x94, 0xdb, 0xe0, 0xb8, 0xb1, 0xbb, 0x73, 0x1e, 0x5b, 0xb5, 0x4d, 0x32, + 0xca, 0xda, 0x0d, 0xb3, 0x8e, 0x0d, 0x6a, 0x84, 0xe6, 0xd4, 0xbe, 0xdf, 0x78, 0x13, 0x4c, 0x60, + 0xf2, 0xe0, 0x72, 0x12, 0x21, 0x71, 0x9f, 0x29, 0x29, 0xc4, 0x54, 0xa2, 0x69, 0x43, 0x1f, 0xe2, + 0xe9, 0x6b, 0xea, 0x1f, 0xe7, 0xe0, 0x44, 0xd1, 0xb8, 0x44, 0x6c, 0x0a, 0xda, 0xc1, 0x97, 0xb6, + 0x35, 0x63, 0x0b, 0x93, 0x01, 0xc2, 0x97, 0x78, 0x38, 0x44, 0x7f, 0x86, 0x0f, 0xd1, 0xaf, 0xa8, + 0x30, 0x61, 0x5a, 0x6d, 0x6c, 0x2d, 0x5c, 0x22, 0x3c, 0xf5, 0x2e, 0x3b, 0xb3, 0x36, 0xd9, 0xaf, + 0x88, 0x79, 0x46, 0x7e, 0xbe, 0x46, 0xff, 0x57, 0x3d, 0x42, 0x67, 0x6e, 0x82, 0x09, 0x96, 0xa6, + 0xcc, 0xc0, 0x64, 0x4d, 0x5d, 0x2c, 0xab, 0xcd, 0xca, 0x62, 0xe1, 0x88, 0x72, 0x19, 0x1c, 0xad, + 0x34, 0xca, 0x6a, 0xb1, 0x51, 0xa9, 0x55, 0x9b, 0x24, 0xbd, 0x90, 0x41, 0xcf, 0xcb, 0x8a, 0x7a, + 0xf6, 0xc6, 0x33, 0xd3, 0x0f, 0x56, 0x15, 0x26, 0x5a, 0x34, 0x03, 0x19, 0x42, 0xa7, 0x13, 0xd5, + 0x8e, 0x11, 0xa4, 0x09, 0xaa, 0x47, 0x48, 0x39, 0x0d, 0x70, 0xd1, 0x32, 0x8d, 0xad, 0xe0, 0xd4, + 0xe1, 0xa4, 0x1a, 0x4a, 0x41, 0x0f, 0x67, 0x20, 0x4f, 0xff, 0x21, 0x57, 0x92, 0x90, 0xa7, 0x40, + 0xf0, 0xde, 0xbb, 0x6b, 0xf1, 0x12, 0x79, 0x05, 0x13, 0x2d, 0xf6, 0xea, 0xea, 0x22, 0x95, 0x01, + 0xb5, 0x84, 0x59, 0x55, 0x6e, 0x86, 0x3c, 0xfd, 0x97, 0x79, 0x1d, 0x44, 0x87, 0x17, 0xa5, 0xd9, + 0x04, 0xfd, 0x94, 0xc5, 0x65, 0x9a, 0xbe, 0x36, 0xbf, 0x57, 0x82, 0xc9, 0x2a, 0x76, 0x4a, 0xdb, + 0xb8, 0x75, 0x01, 0x3d, 0x89, 0x5f, 0x00, 0xed, 0xe8, 0xd8, 0x70, 0x1e, 0xd8, 0xe9, 0xf8, 0x0b, + 0xa0, 0x5e, 0x02, 0xfa, 0xd9, 0x70, 0xe7, 0x7b, 0x2f, 0xaf, 0x3f, 0x37, 0xf6, 0xa9, 0xab, 0x57, + 0x42, 0x84, 0xca, 0x9c, 0x84, 0xbc, 0x85, 0xed, 0xdd, 0x8e, 0xb7, 0x88, 0xc6, 0xde, 0xd0, 0x2b, + 0x7d, 0x71, 0x96, 0x38, 0x71, 0xde, 0x2c, 0x5e, 0xc4, 0x18, 0xe2, 0x95, 0x66, 0x61, 0xa2, 0x62, + 0xe8, 0x8e, 0xae, 0x75, 0xd0, 0x0b, 0xb2, 0x30, 0x5b, 0xc7, 0xce, 0xba, 0x66, 0x69, 0x3b, 0xd8, + 0xc1, 0x96, 0x8d, 0xbe, 0xc5, 0xf7, 0x09, 0xdd, 0x8e, 0xe6, 0x6c, 0x9a, 0xd6, 0x8e, 0xa7, 0x9a, + 0xde, 0xbb, 0xab, 0x9a, 0x7b, 0xd8, 0xb2, 0x03, 0xbe, 0xbc, 0x57, 0xf7, 0xcb, 0x45, 0xd3, 0xba, + 0xe0, 0x0e, 0x82, 0x6c, 0x9a, 0xc6, 0x5e, 0x5d, 0x7a, 0x1d, 0x73, 0x6b, 0x15, 0xef, 0x61, 0x2f, + 0x5c, 0x9a, 0xff, 0xee, 0xce, 0x05, 0xda, 0x66, 0xd5, 0x74, 0xdc, 0x4e, 0x7b, 0xd5, 0xdc, 0xa2, + 0xf1, 0x62, 0x27, 0x55, 0x3e, 0x31, 0xc8, 0xa5, 0xed, 0x61, 0x92, 0x2b, 0x1f, 0xce, 0xc5, 0x12, + 0x95, 0x79, 0x50, 0xfc, 0xdf, 0x1a, 0xb8, 0x83, 0x77, 0xb0, 0x63, 0x5d, 0x22, 0xd7, 0x42, 0x4c, + 0xaa, 0x7d, 0xbe, 0xb0, 0x01, 0x5a, 0x7c, 0xb2, 0xce, 0xa4, 0x37, 0xcf, 0x49, 0xee, 0x40, 0x93, + 0x75, 0x11, 0x8a, 0x63, 0xb9, 0xf6, 0x4a, 0x76, 0xad, 0x99, 0xdf, 0x90, 0x21, 0x4b, 0x06, 0xcf, + 0xd7, 0x67, 0xb8, 0x15, 0xa6, 0x1d, 0x6c, 0xdb, 0xda, 0x16, 0xf6, 0x56, 0x98, 0xd8, 0xab, 0x72, + 0x3b, 0xe4, 0x3a, 0x04, 0x53, 0x3a, 0x38, 0x5c, 0xcb, 0xd5, 0xcc, 0x35, 0x30, 0x5c, 0x5a, 0xfe, + 0x48, 0x40, 0xe0, 0x56, 0xe9, 0x1f, 0x67, 0xee, 0x83, 0x1c, 0x85, 0x7f, 0x0a, 0x72, 0x8b, 0xe5, + 0x85, 0x8d, 0xe5, 0xc2, 0x11, 0xf7, 0xd1, 0xe3, 0x6f, 0x0a, 0x72, 0x4b, 0xc5, 0x46, 0x71, 0xb5, + 0x20, 0xb9, 0xf5, 0xa8, 0x54, 0x97, 0x6a, 0x05, 0xd9, 0x4d, 0x5c, 0x2f, 0x56, 0x2b, 0xa5, 0x42, + 0x56, 0x99, 0x86, 0x89, 0x73, 0x45, 0xb5, 0x5a, 0xa9, 0x2e, 0x17, 0x72, 0xe8, 0x6f, 0xc3, 0xf8, + 0xdd, 0xc1, 0xe3, 0x77, 0x5d, 0x14, 0x4f, 0xfd, 0x20, 0xfb, 0x4d, 0x1f, 0xb2, 0xbb, 0x38, 0xc8, + 0x7e, 0x50, 0x84, 0xc8, 0x18, 0xdc, 0x99, 0xf2, 0x30, 0xb1, 0x6e, 0x99, 0x2d, 0x6c, 0xdb, 0xe8, + 0x57, 0x25, 0xc8, 0x97, 0x34, 0xa3, 0x85, 0x3b, 0xe8, 0x8a, 0x00, 0x2a, 0xea, 0x2a, 0x9a, 0xf1, + 0x4f, 0x8b, 0xfd, 0x63, 0x46, 0xb4, 0xf7, 0x63, 0x74, 0xe7, 0x29, 0xcd, 0x08, 0xf9, 0x88, 0xf5, + 0x72, 0xb1, 0xa4, 0xc6, 0x70, 0x35, 0x8e, 0x04, 0x53, 0x6c, 0x35, 0xe0, 0x3c, 0x0e, 0xcf, 0xc3, + 0xbf, 0x95, 0x11, 0x9d, 0x1c, 0x7a, 0x35, 0xf0, 0xc9, 0x44, 0xc8, 0x43, 0x6c, 0x22, 0x38, 0x88, + 0xda, 0x18, 0x36, 0x0f, 0x25, 0x98, 0xde, 0x30, 0xec, 0x7e, 0x42, 0x11, 0x8f, 0xa3, 0xef, 0x55, + 0x23, 0x44, 0xe8, 0x40, 0x71, 0xf4, 0x07, 0xd3, 0x4b, 0x5f, 0x30, 0xdf, 0xca, 0xc0, 0xf1, 0x65, + 0x6c, 0x60, 0x4b, 0x6f, 0xd1, 0x1a, 0x78, 0x92, 0xb8, 0x8b, 0x97, 0xc4, 0x93, 0x38, 0xce, 0xfb, + 0xfd, 0xc1, 0x4b, 0xe0, 0xe5, 0xbe, 0x04, 0xee, 0xe5, 0x24, 0x70, 0x93, 0x20, 0x9d, 0x31, 0xdc, + 0x87, 0x3e, 0x05, 0x33, 0x55, 0xd3, 0xd1, 0x37, 0xf5, 0x16, 0xf5, 0x41, 0xfb, 0x75, 0x19, 0xb2, + 0xab, 0xba, 0xed, 0xa0, 0x62, 0xd0, 0x9d, 0x5c, 0x03, 0xd3, 0xba, 0xd1, 0xea, 0xec, 0xb6, 0xb1, + 0x8a, 0x35, 0xda, 0xaf, 0x4c, 0xaa, 0xe1, 0xa4, 0x60, 0x6b, 0xdf, 0x65, 0x4b, 0xf6, 0xb6, 0xf6, + 0x3f, 0x21, 0xbc, 0x0c, 0x13, 0x66, 0x81, 0x04, 0xa4, 0x8c, 0xb0, 0xbb, 0x8a, 0x30, 0x6b, 0x84, + 0xb2, 0x7a, 0x06, 0x7b, 0xef, 0x85, 0x02, 0x61, 0x72, 0x2a, 0xff, 0x07, 0x7a, 0x97, 0x50, 0x63, + 0x1d, 0xc4, 0x50, 0x32, 0x64, 0x96, 0x86, 0x98, 0x24, 0x2b, 0x30, 0x57, 0xa9, 0x36, 0xca, 0x6a, + 0xb5, 0xb8, 0xca, 0xb2, 0xc8, 0xe8, 0x3b, 0x12, 0xe4, 0x54, 0xdc, 0xed, 0x5c, 0x0a, 0x47, 0x8c, + 0x66, 0x8e, 0xe2, 0x19, 0xdf, 0x51, 0x5c, 0x59, 0x02, 0xd0, 0x5a, 0x6e, 0xc1, 0xe4, 0x4a, 0x2d, + 0xa9, 0x6f, 0x1c, 0x53, 0xae, 0x82, 0x45, 0x3f, 0xb7, 0x1a, 0xfa, 0x13, 0xbd, 0x50, 0x78, 0xe7, + 0x88, 0xa3, 0x46, 0x38, 0x8c, 0xe8, 0x13, 0xde, 0x2d, 0xb4, 0xd9, 0x33, 0x90, 0xdc, 0xe1, 0x88, + 0xff, 0x8b, 0x12, 0x64, 0x1b, 0x6e, 0x6f, 0x19, 0xea, 0x38, 0x3f, 0x3e, 0x9c, 0x8e, 0xbb, 0x64, + 0x22, 0x74, 0xfc, 0x1e, 0x98, 0x09, 0x6b, 0x2c, 0x73, 0x95, 0x88, 0x55, 0x71, 0xee, 0x87, 0x61, + 0x34, 0xbc, 0x0f, 0x3b, 0x87, 0x23, 0xe2, 0x8f, 0x3c, 0x19, 0x60, 0x0d, 0xef, 0x9c, 0xc7, 0x96, + 0xbd, 0xad, 0x77, 0xd1, 0xdf, 0xc9, 0x30, 0xb5, 0x8c, 0x9d, 0xba, 0xa3, 0x39, 0xbb, 0x76, 0xcf, + 0x76, 0xa7, 0x61, 0x96, 0xb4, 0xd6, 0x36, 0x66, 0xdd, 0x91, 0xf7, 0x8a, 0xde, 0x26, 0x8b, 0xfa, + 0x13, 0x05, 0xe5, 0xcc, 0xfb, 0x65, 0x44, 0x60, 0xf2, 0x14, 0xc8, 0xb6, 0x35, 0x47, 0x63, 0x58, + 0x5c, 0xd1, 0x83, 0x45, 0x40, 0x48, 0x25, 0xd9, 0xd0, 0xef, 0x4a, 0x22, 0x0e, 0x45, 0x02, 0xe5, + 0x27, 0x03, 0xe1, 0x5d, 0x99, 0x21, 0x50, 0x38, 0x06, 0xb3, 0xd5, 0x5a, 0xa3, 0xb9, 0x5a, 0x5b, + 0x5e, 0x2e, 0xbb, 0xa9, 0x05, 0x59, 0x39, 0x09, 0xca, 0x7a, 0xf1, 0x81, 0xb5, 0x72, 0xb5, 0xd1, + 0xac, 0xd6, 0x16, 0xcb, 0xec, 0xcf, 0xac, 0x72, 0x14, 0xa6, 0x4b, 0xc5, 0xd2, 0x8a, 0x97, 0x90, + 0x53, 0x4e, 0xc1, 0xf1, 0xb5, 0xf2, 0xda, 0x42, 0x59, 0xad, 0xaf, 0x54, 0xd6, 0x9b, 0x2e, 0x99, + 0xa5, 0xda, 0x46, 0x75, 0xb1, 0x90, 0x57, 0x10, 0x9c, 0x0c, 0x7d, 0x39, 0xa7, 0xd6, 0xaa, 0xcb, + 0xcd, 0x7a, 0xa3, 0xd8, 0x28, 0x17, 0x26, 0x94, 0xcb, 0xe0, 0x68, 0xa9, 0x58, 0x25, 0xd9, 0x4b, + 0xb5, 0x6a, 0xb5, 0x5c, 0x6a, 0x14, 0x26, 0xd1, 0xbf, 0x67, 0x61, 0xba, 0x62, 0x57, 0xb5, 0x1d, + 0x7c, 0x56, 0xeb, 0xe8, 0x6d, 0xf4, 0x82, 0xd0, 0xcc, 0xe3, 0x3a, 0x98, 0xb5, 0xe8, 0x23, 0x6e, + 0x37, 0x74, 0x4c, 0xd1, 0x9c, 0x55, 0xf9, 0x44, 0x77, 0x4e, 0x6e, 0x10, 0x02, 0xde, 0x9c, 0x9c, + 0xbe, 0x29, 0x0b, 0x00, 0xf4, 0xa9, 0x11, 0x5c, 0xee, 0x7a, 0xa6, 0xb7, 0x35, 0x69, 0x3b, 0xd8, + 0xc6, 0xd6, 0x9e, 0xde, 0xc2, 0x5e, 0x4e, 0x35, 0xf4, 0x17, 0xfa, 0x92, 0x2c, 0xba, 0xbf, 0x18, + 0x02, 0x35, 0x54, 0x9d, 0x88, 0xde, 0xf0, 0xe7, 0x64, 0x91, 0xdd, 0x41, 0x21, 0x92, 0xc9, 0x34, + 0xe5, 0xc5, 0xd2, 0x70, 0xcb, 0xb6, 0x8d, 0x5a, 0xad, 0x59, 0x5f, 0xa9, 0xa9, 0x8d, 0x82, 0xac, + 0xcc, 0xc0, 0xa4, 0xfb, 0xba, 0x5a, 0xab, 0x2e, 0x17, 0xb2, 0xca, 0x09, 0x38, 0xb6, 0x52, 0xac, + 0x37, 0x2b, 0xd5, 0xb3, 0xc5, 0xd5, 0xca, 0x62, 0xb3, 0xb4, 0x52, 0x54, 0xeb, 0x85, 0x9c, 0x72, + 0x05, 0x9c, 0x68, 0x54, 0xca, 0x6a, 0x73, 0xa9, 0x5c, 0x6c, 0x6c, 0xa8, 0xe5, 0x7a, 0xb3, 0x5a, + 0x6b, 0x56, 0x8b, 0x6b, 0xe5, 0x42, 0xde, 0x6d, 0xfe, 0xe4, 0x53, 0xa0, 0x36, 0x13, 0xfb, 0x95, + 0x71, 0x32, 0x42, 0x19, 0xa7, 0x7a, 0x95, 0x11, 0xc2, 0x6a, 0xa5, 0x96, 0xeb, 0x65, 0xf5, 0x6c, + 0xb9, 0x30, 0xdd, 0x4f, 0xd7, 0x66, 0x94, 0xe3, 0x50, 0x70, 0x79, 0x68, 0x56, 0xea, 0x5e, 0xce, + 0xc5, 0xc2, 0x2c, 0xfa, 0x70, 0x1e, 0x4e, 0xaa, 0x78, 0x4b, 0xb7, 0x1d, 0x6c, 0xad, 0x6b, 0x97, + 0x76, 0xb0, 0xe1, 0x78, 0x9d, 0xfc, 0xbf, 0x24, 0x56, 0xc6, 0x35, 0x98, 0xed, 0x52, 0x1a, 0x6b, + 0xd8, 0xd9, 0x36, 0xdb, 0x6c, 0x14, 0x7e, 0x52, 0x64, 0xcf, 0x31, 0xbf, 0x1e, 0xce, 0xae, 0xf2, + 0x7f, 0x87, 0x74, 0x5b, 0x8e, 0xd1, 0xed, 0xec, 0x30, 0xba, 0xad, 0x5c, 0x05, 0x53, 0xbb, 0x36, + 0xb6, 0xca, 0x3b, 0x9a, 0xde, 0xf1, 0x2e, 0xe7, 0xf4, 0x13, 0xd0, 0x9b, 0xb3, 0xa2, 0x27, 0x56, + 0x42, 0x75, 0xe9, 0x2f, 0xc6, 0x88, 0xbe, 0xf5, 0x34, 0x00, 0xab, 0xec, 0x86, 0xd5, 0x61, 0xca, + 0x1a, 0x4a, 0x71, 0xf9, 0x3b, 0xaf, 0x77, 0x3a, 0xba, 0xb1, 0xe5, 0xef, 0xfb, 0x07, 0x09, 0xe8, + 0xc5, 0xb2, 0xc8, 0x09, 0x96, 0xa4, 0xbc, 0x25, 0x6b, 0x4d, 0x2f, 0x94, 0xc6, 0xdc, 0xef, 0xee, + 0x6f, 0x3a, 0x79, 0xa5, 0x00, 0x33, 0x24, 0x8d, 0xb5, 0xc0, 0xc2, 0x84, 0xdb, 0x07, 0x7b, 0xe4, + 0xd6, 0xca, 0x8d, 0x95, 0xda, 0xa2, 0xff, 0x6d, 0xd2, 0x25, 0xe9, 0x32, 0x53, 0xac, 0x3e, 0x40, + 0x5a, 0xe3, 0x94, 0xf2, 0x04, 0xb8, 0x22, 0xd4, 0x61, 0x17, 0x57, 0xd5, 0x72, 0x71, 0xf1, 0x81, + 0x66, 0xf9, 0x59, 0x95, 0x7a, 0xa3, 0xce, 0x37, 0x2e, 0xaf, 0x1d, 0x4d, 0xbb, 0xfc, 0x96, 0xd7, + 0x8a, 0x95, 0x55, 0xd6, 0xbf, 0x2f, 0xd5, 0xd4, 0xb5, 0x62, 0xa3, 0x30, 0x83, 0x7e, 0x43, 0x86, + 0xc2, 0x32, 0x76, 0xd6, 0x4d, 0xcb, 0xd1, 0x3a, 0xab, 0xba, 0x71, 0x61, 0xc3, 0xea, 0x70, 0x93, + 0x4d, 0xe1, 0x30, 0x1d, 0xfc, 0x10, 0xc9, 0x11, 0x8c, 0xde, 0x11, 0xef, 0x92, 0x6c, 0x81, 0x32, + 0x05, 0x09, 0xe8, 0x39, 0x92, 0xc8, 0x72, 0xb7, 0x78, 0xa9, 0xc9, 0xf4, 0xe4, 0xb9, 0xe3, 0x1e, + 0x9f, 0xfb, 0xa0, 0x96, 0x47, 0xcf, 0xcf, 0xc2, 0xe4, 0x92, 0x6e, 0x68, 0x1d, 0xfd, 0xd9, 0x5c, + 0xfc, 0xd2, 0xa0, 0x8f, 0xc9, 0xc4, 0xf4, 0x31, 0xd2, 0x50, 0xe3, 0xe7, 0x2f, 0xcb, 0xa2, 0xcb, + 0x0b, 0x21, 0xd9, 0x7b, 0x4c, 0x46, 0x0c, 0x9e, 0xef, 0x93, 0x44, 0x96, 0x17, 0x06, 0xd3, 0x4b, + 0x86, 0xe1, 0xc7, 0xbe, 0x37, 0x6c, 0xac, 0x9e, 0xf6, 0x3d, 0xd9, 0x4f, 0x15, 0xa6, 0xd0, 0x9f, + 0xcb, 0x80, 0x96, 0xb1, 0x73, 0x16, 0x5b, 0xfe, 0x54, 0x80, 0xf4, 0xfa, 0xcc, 0xde, 0x0e, 0x35, + 0xd9, 0xd7, 0x87, 0x01, 0x3c, 0xc7, 0x03, 0x58, 0x8c, 0x69, 0x3c, 0x11, 0xa4, 0x23, 0x1a, 0x6f, + 0x05, 0xf2, 0x36, 0xf9, 0xce, 0xd4, 0xec, 0xd6, 0xe8, 0xe1, 0x92, 0x10, 0x0b, 0x53, 0xa7, 0x84, + 0x55, 0x46, 0x00, 0x7d, 0xdb, 0x9f, 0x04, 0xfd, 0x28, 0xa7, 0x1d, 0x4b, 0x07, 0x66, 0x36, 0x99, + 0xbe, 0x58, 0xe9, 0xaa, 0x4b, 0x3f, 0xfb, 0x06, 0xbd, 0x2f, 0x07, 0xc7, 0xfb, 0x55, 0x07, 0xfd, + 0x5e, 0x86, 0xdb, 0x61, 0xc7, 0x64, 0xc8, 0xcf, 0xb0, 0x0d, 0x44, 0xf7, 0x45, 0x79, 0x1a, 0x9c, + 0xf0, 0x97, 0xe1, 0x1a, 0x66, 0x15, 0x5f, 0xb4, 0x3b, 0xd8, 0x71, 0xb0, 0x45, 0xaa, 0x36, 0xa9, + 0xf6, 0xff, 0xa8, 0x3c, 0x03, 0x2e, 0xd7, 0x0d, 0x5b, 0x6f, 0x63, 0xab, 0xa1, 0x77, 0xed, 0xa2, + 0xd1, 0x6e, 0xec, 0x3a, 0xa6, 0xa5, 0x6b, 0xec, 0x2a, 0xc9, 0x49, 0x35, 0xea, 0xb3, 0x72, 0x23, + 0x14, 0x74, 0xbb, 0x66, 0x9c, 0x37, 0x35, 0xab, 0xad, 0x1b, 0x5b, 0xab, 0xba, 0xed, 0x30, 0x0f, + 0xe0, 0x7d, 0xe9, 0xe8, 0xef, 0x65, 0xd1, 0xc3, 0x74, 0x03, 0x60, 0x8d, 0xe8, 0x50, 0x7e, 0x56, + 0x16, 0x39, 0x1e, 0x97, 0x8c, 0x76, 0x32, 0x65, 0x79, 0xde, 0xb8, 0x0d, 0x89, 0xfe, 0x23, 0x38, + 0xe9, 0x5a, 0x68, 0xba, 0x67, 0x08, 0x9c, 0x2d, 0xab, 0x95, 0xa5, 0x4a, 0xd9, 0x35, 0x2b, 0x4e, + 0xc0, 0xb1, 0xe0, 0xdb, 0xe2, 0x03, 0xcd, 0x7a, 0xb9, 0xda, 0x28, 0x4c, 0xba, 0xfd, 0x14, 0x4d, + 0x5e, 0x2a, 0x56, 0x56, 0xcb, 0x8b, 0xcd, 0x46, 0xcd, 0xfd, 0xb2, 0x38, 0x9c, 0x69, 0x81, 0x1e, + 0xce, 0xc2, 0x51, 0x22, 0xdb, 0x4b, 0x44, 0xaa, 0xae, 0x50, 0x7a, 0x7c, 0x6d, 0x7d, 0x80, 0xa6, + 0xa8, 0x78, 0xd1, 0xa7, 0x84, 0x6f, 0xca, 0x0c, 0x41, 0xd8, 0x53, 0x46, 0x84, 0x66, 0x7c, 0x4b, + 0x12, 0x89, 0x50, 0x21, 0x4c, 0x36, 0x99, 0x52, 0xfc, 0xeb, 0xb8, 0x47, 0x9c, 0x68, 0xf0, 0x89, + 0x95, 0x59, 0x22, 0x3f, 0x3f, 0x6b, 0xbd, 0xa2, 0x12, 0x75, 0x98, 0x03, 0x20, 0x29, 0x44, 0x83, + 0xa8, 0x1e, 0xf4, 0x1d, 0xaf, 0xa2, 0xf4, 0xa0, 0x58, 0x6a, 0x54, 0xce, 0x96, 0xa3, 0xf4, 0xe0, + 0x93, 0x32, 0x4c, 0x2e, 0x63, 0xc7, 0x9d, 0x53, 0xd9, 0xe8, 0x99, 0x02, 0xeb, 0x3f, 0xae, 0x19, + 0xd3, 0x31, 0x5b, 0x5a, 0xc7, 0x5f, 0x06, 0xa0, 0x6f, 0xe8, 0x67, 0x86, 0x31, 0x41, 0xbc, 0xa2, + 0x23, 0xc6, 0xab, 0x1f, 0x86, 0x9c, 0xe3, 0x7e, 0x66, 0xcb, 0xd0, 0x3f, 0x10, 0x39, 0x5c, 0xb9, + 0x44, 0x16, 0x35, 0x47, 0x53, 0x69, 0xfe, 0xd0, 0xe8, 0x24, 0x68, 0xbb, 0x44, 0x30, 0xf2, 0xbd, + 0x68, 0x7f, 0xfe, 0xad, 0x0c, 0x27, 0x68, 0xfb, 0x28, 0x76, 0xbb, 0x75, 0xc7, 0xb4, 0xb0, 0x8a, + 0x5b, 0x58, 0xef, 0x3a, 0x3d, 0xeb, 0x7b, 0x16, 0x4d, 0xf5, 0x36, 0x9b, 0xd9, 0x2b, 0x7a, 0x8d, + 0x2c, 0x1a, 0x83, 0x79, 0x5f, 0x7b, 0xec, 0x29, 0x2f, 0xa2, 0xb1, 0x7f, 0x48, 0x12, 0x89, 0xaa, + 0x9c, 0x90, 0x78, 0x32, 0xa0, 0xde, 0x7f, 0x08, 0x40, 0x79, 0x2b, 0x37, 0x6a, 0xb9, 0x54, 0xae, + 0xac, 0xbb, 0x83, 0xc0, 0xd5, 0x70, 0xe5, 0xfa, 0x86, 0x5a, 0x5a, 0x29, 0xd6, 0xcb, 0x4d, 0xb5, + 0xbc, 0x5c, 0xa9, 0x37, 0x98, 0x53, 0x16, 0xfd, 0x6b, 0x42, 0xb9, 0x0a, 0x4e, 0xd5, 0x37, 0x16, + 0xea, 0x25, 0xb5, 0xb2, 0x4e, 0xd2, 0xd5, 0x72, 0xb5, 0x7c, 0x8e, 0x7d, 0x9d, 0x44, 0xef, 0x29, + 0xc0, 0xb4, 0x3b, 0x01, 0xa8, 0xd3, 0x79, 0x01, 0xfa, 0x7a, 0x16, 0xa6, 0x55, 0x6c, 0x9b, 0x9d, + 0x3d, 0x32, 0x47, 0x18, 0xd7, 0xd4, 0xe3, 0x9b, 0xb2, 0xe8, 0xf9, 0xed, 0x10, 0xb3, 0xf3, 0x21, + 0x46, 0xa3, 0x27, 0x9a, 0xda, 0x9e, 0xa6, 0x77, 0xb4, 0xf3, 0xac, 0xab, 0x99, 0x54, 0x83, 0x04, + 0x65, 0x1e, 0x14, 0xf3, 0xa2, 0x81, 0xad, 0x7a, 0xeb, 0x62, 0xd9, 0xd9, 0x2e, 0xb6, 0xdb, 0x16, + 0xb6, 0x6d, 0xb6, 0x7a, 0xd1, 0xe7, 0x8b, 0x72, 0x03, 0x1c, 0x25, 0xa9, 0xa1, 0xcc, 0xd4, 0x41, + 0xa6, 0x37, 0xd9, 0xcf, 0x59, 0x34, 0x2e, 0x79, 0x39, 0x73, 0xa1, 0x9c, 0x41, 0x72, 0xf8, 0xb8, + 0x44, 0x9e, 0x3f, 0xa5, 0x73, 0x0d, 0x4c, 0x1b, 0xda, 0x0e, 0x2e, 0x3f, 0xd4, 0xd5, 0x2d, 0x6c, + 0x13, 0xc7, 0x18, 0x59, 0x0d, 0x27, 0xa1, 0xf7, 0x09, 0x9d, 0x37, 0x17, 0x93, 0x58, 0x32, 0xdd, + 0x5f, 0x1e, 0x42, 0xf5, 0xfb, 0xf4, 0x33, 0x32, 0x7a, 0x8f, 0x0c, 0x33, 0x8c, 0xa9, 0xa2, 0x71, + 0xa9, 0xd2, 0x46, 0x57, 0x73, 0xc6, 0xaf, 0xe6, 0xa6, 0x79, 0xc6, 0x2f, 0x79, 0x41, 0x3f, 0x2f, + 0x8b, 0xba, 0x3b, 0xf7, 0xa9, 0x38, 0x29, 0x23, 0xda, 0x71, 0x74, 0xd3, 0xdc, 0x65, 0x8e, 0xaa, + 0x93, 0x2a, 0x7d, 0x49, 0x73, 0x51, 0x0f, 0xfd, 0xa1, 0x90, 0x33, 0xb5, 0x60, 0x35, 0x0e, 0x09, + 0xc0, 0x8f, 0xc8, 0x30, 0xc7, 0xb8, 0xaa, 0xb3, 0x73, 0x3e, 0x42, 0x07, 0xde, 0x7e, 0x41, 0xd8, + 0x10, 0xec, 0x53, 0x7f, 0x56, 0xd2, 0xe3, 0x06, 0xc8, 0x0f, 0x08, 0x05, 0x47, 0x13, 0xae, 0xc8, + 0x21, 0x41, 0xf9, 0x96, 0x2c, 0x4c, 0x6f, 0xd8, 0xd8, 0x62, 0x7e, 0xfb, 0xe8, 0x95, 0x59, 0x90, + 0x97, 0x31, 0xb7, 0x91, 0xfa, 0x22, 0x61, 0x0f, 0xdf, 0x70, 0x65, 0x43, 0x44, 0x5d, 0x1b, 0x29, + 0x02, 0xb6, 0xeb, 0x61, 0x8e, 0x8a, 0xb4, 0xe8, 0x38, 0xae, 0x91, 0xe8, 0x79, 0xd3, 0xf6, 0xa4, + 0x8e, 0x62, 0xab, 0x88, 0x94, 0xe5, 0x66, 0x29, 0xb9, 0x3c, 0xad, 0xe2, 0x4d, 0x3a, 0x9f, 0xcd, + 0xaa, 0x3d, 0xa9, 0xca, 0x2d, 0x70, 0x99, 0xd9, 0xc5, 0xf4, 0xfc, 0x4a, 0x28, 0x73, 0x8e, 0x64, + 0xee, 0xf7, 0x09, 0x7d, 0x5d, 0xc8, 0x57, 0x57, 0x5c, 0x3a, 0xc9, 0x74, 0xa1, 0x3b, 0x1a, 0x93, + 0xe4, 0x38, 0x14, 0xdc, 0x1c, 0x64, 0xff, 0x45, 0x2d, 0xd7, 0x6b, 0xab, 0x67, 0xcb, 0xfd, 0x97, + 0x31, 0x72, 0xe8, 0x79, 0x32, 0x4c, 0x2d, 0x58, 0xa6, 0xd6, 0x6e, 0x69, 0xb6, 0x83, 0xbe, 0x2d, + 0xc1, 0xcc, 0xba, 0x76, 0xa9, 0x63, 0x6a, 0x6d, 0xe2, 0xdf, 0xdf, 0xd3, 0x17, 0x74, 0xe9, 0x27, + 0xaf, 0x2f, 0x60, 0xaf, 0xfc, 0xc1, 0x40, 0xff, 0xe8, 0x5e, 0x46, 0xe4, 0x42, 0x4d, 0x7f, 0x9b, + 0x4f, 0xea, 0x17, 0xac, 0xd4, 0xe3, 0x6b, 0x3e, 0xcc, 0x53, 0x84, 0x45, 0xf9, 0x1e, 0xb1, 0xf0, + 0xa3, 0x22, 0x24, 0x0f, 0x67, 0x57, 0xfe, 0xf9, 0x93, 0x90, 0x5f, 0xc4, 0xc4, 0x8a, 0xfb, 0x1f, + 0x12, 0x4c, 0xd4, 0xb1, 0x43, 0x2c, 0xb8, 0xdb, 0x39, 0x4f, 0xe1, 0x36, 0xc9, 0x10, 0x38, 0xb1, + 0x7b, 0xef, 0xee, 0x64, 0x3d, 0x74, 0xde, 0x9a, 0x3c, 0x27, 0xf0, 0x48, 0xa4, 0xe5, 0xce, 0xb3, + 0x32, 0x0f, 0xe4, 0x91, 0x18, 0x4b, 0x2a, 0x7d, 0x5f, 0xab, 0xb7, 0x49, 0xcc, 0xb5, 0x2a, 0xd4, + 0xeb, 0xfd, 0x56, 0x58, 0x3f, 0x63, 0xbd, 0xcd, 0x18, 0xf3, 0x31, 0xce, 0x51, 0x4f, 0x85, 0x09, + 0x2a, 0x73, 0x6f, 0x3e, 0xda, 0xeb, 0xa7, 0x40, 0x49, 0x90, 0xb3, 0xd7, 0x5e, 0x4e, 0x41, 0x17, + 0xb5, 0xe8, 0xc2, 0xc7, 0x12, 0x83, 0x60, 0xa6, 0x8a, 0x9d, 0x8b, 0xa6, 0x75, 0xa1, 0xee, 0x68, + 0x0e, 0x46, 0xff, 0x2a, 0x81, 0x5c, 0xc7, 0x4e, 0x38, 0xfa, 0x49, 0x15, 0x8e, 0xd1, 0x0a, 0xb1, + 0x8c, 0xa4, 0xff, 0xa6, 0x15, 0xb9, 0xa6, 0xaf, 0x10, 0x42, 0xf9, 0xd4, 0xfd, 0xbf, 0xa2, 0x5f, + 0xed, 0x1b, 0xf4, 0x49, 0xea, 0x33, 0x69, 0x60, 0x92, 0x09, 0x33, 0xe8, 0x2a, 0x58, 0x84, 0x9e, + 0xbe, 0x57, 0xc8, 0xac, 0x16, 0xa3, 0x79, 0x38, 0x5d, 0xc1, 0x07, 0xae, 0x80, 0x6c, 0x69, 0x5b, + 0x73, 0xd0, 0x5b, 0x65, 0x80, 0x62, 0xbb, 0xbd, 0x46, 0x7d, 0xc0, 0xc3, 0x0e, 0x69, 0x67, 0x60, + 0xa6, 0xb5, 0xad, 0x05, 0x77, 0x9b, 0xd0, 0xfe, 0x80, 0x4b, 0x53, 0x9e, 0x16, 0x38, 0x93, 0x53, + 0xa9, 0xa2, 0x1e, 0x98, 0xdc, 0x32, 0x18, 0x6d, 0xdf, 0xd1, 0x9c, 0x0f, 0x85, 0x19, 0x7b, 0x84, + 0xce, 0xfd, 0x7d, 0x3e, 0x60, 0x2f, 0x7a, 0x0e, 0xc7, 0x48, 0xfb, 0x07, 0x6c, 0x82, 0x84, 0x84, + 0x27, 0xbd, 0xc5, 0x02, 0x7a, 0xc4, 0xf3, 0x35, 0x96, 0xd0, 0xb5, 0x4a, 0xb9, 0xad, 0x7b, 0xa2, + 0x65, 0x01, 0xb3, 0xd0, 0x0b, 0x33, 0xc9, 0xe0, 0x8b, 0x17, 0xdc, 0xbd, 0x30, 0x8b, 0xdb, 0xba, + 0x83, 0xbd, 0x5a, 0x32, 0x01, 0xc6, 0x41, 0xcc, 0xff, 0x80, 0x9e, 0x2b, 0x1c, 0x74, 0x8d, 0x08, + 0x74, 0x7f, 0x8d, 0x22, 0xda, 0x9f, 0x58, 0x18, 0x35, 0x31, 0x9a, 0xe9, 0x83, 0xf5, 0x33, 0x32, + 0x9c, 0x68, 0x98, 0x5b, 0x5b, 0x1d, 0xec, 0x89, 0x09, 0x53, 0xef, 0x4c, 0xa4, 0x8d, 0x12, 0x2e, + 0xb2, 0x13, 0x64, 0x3e, 0xa8, 0xfb, 0x47, 0xc9, 0xdc, 0x17, 0xfe, 0xc4, 0x54, 0xec, 0x2c, 0x8a, + 0x88, 0xab, 0x2f, 0x9f, 0x11, 0x28, 0x88, 0x05, 0x7c, 0x16, 0x26, 0x9b, 0x3e, 0x10, 0x9f, 0x97, + 0x60, 0x96, 0xde, 0x5c, 0xe9, 0x29, 0xe8, 0xfd, 0x23, 0x04, 0x00, 0x7d, 0x3b, 0x23, 0xea, 0x67, + 0x4b, 0x64, 0xc2, 0x71, 0x12, 0x21, 0x62, 0xb1, 0xa0, 0x2a, 0x03, 0xc9, 0xa5, 0x2f, 0xda, 0x3f, + 0x91, 0x61, 0x7a, 0x19, 0x7b, 0x2d, 0xcd, 0x4e, 0xdc, 0x13, 0x9d, 0x81, 0x19, 0x72, 0x7d, 0x5b, + 0x8d, 0x1d, 0x93, 0xa4, 0xab, 0x66, 0x5c, 0x9a, 0x72, 0x1d, 0xcc, 0x9e, 0xc7, 0x9b, 0xa6, 0x85, + 0x6b, 0xdc, 0x59, 0x4a, 0x3e, 0x31, 0x22, 0x3c, 0x1d, 0x17, 0x07, 0x6d, 0x81, 0xc7, 0xe6, 0xa6, + 0xfd, 0xc2, 0x0c, 0x55, 0x25, 0x62, 0xcc, 0x79, 0x3a, 0x4c, 0x32, 0xe4, 0x3d, 0x33, 0x2d, 0xae, + 0x5f, 0xf4, 0xf3, 0xa2, 0x57, 0xfb, 0x88, 0x96, 0x39, 0x44, 0x6f, 0x4d, 0xc2, 0xc4, 0x58, 0xee, + 0x77, 0x2f, 0x84, 0xca, 0x5f, 0xb8, 0x54, 0x69, 0xdb, 0x68, 0x2d, 0x19, 0xa6, 0xa7, 0x01, 0xfc, + 0xc6, 0xe1, 0x85, 0xb5, 0x08, 0xa5, 0xf0, 0x91, 0xeb, 0x63, 0x0f, 0xea, 0xf5, 0x8a, 0x83, 0xb0, + 0x33, 0x62, 0x60, 0xc4, 0x0e, 0xf8, 0x89, 0x70, 0x92, 0x3e, 0x3a, 0x9f, 0x90, 0xe1, 0x84, 0x7f, + 0xfe, 0x68, 0x55, 0xb3, 0x83, 0x76, 0x57, 0x4a, 0x06, 0x11, 0x77, 0xe0, 0xc3, 0x6f, 0x2c, 0xdf, + 0x48, 0x36, 0x66, 0xf4, 0xe5, 0x64, 0xb4, 0xe8, 0x28, 0x37, 0xc1, 0x31, 0x63, 0x77, 0xc7, 0x97, + 0x3a, 0x69, 0xf1, 0xac, 0x85, 0xef, 0xff, 0x90, 0x64, 0x64, 0x12, 0x61, 0x7e, 0x2c, 0x73, 0x4a, + 0xee, 0x48, 0xd7, 0x53, 0x12, 0xc1, 0x88, 0xfe, 0x39, 0x93, 0xa8, 0x77, 0x1b, 0x7c, 0xe6, 0x2b, + 0x41, 0x2f, 0x75, 0x88, 0x07, 0xbe, 0xce, 0x4c, 0x40, 0xae, 0xbc, 0xd3, 0x75, 0x2e, 0x9d, 0x79, + 0x22, 0xcc, 0xd6, 0x1d, 0x0b, 0x6b, 0x3b, 0xa1, 0x9d, 0x01, 0xc7, 0xbc, 0x80, 0x0d, 0x6f, 0x67, + 0x80, 0xbc, 0xdc, 0x71, 0x3b, 0x4c, 0x18, 0x66, 0x53, 0xdb, 0x75, 0xb6, 0x95, 0xab, 0xf7, 0x1d, + 0xa9, 0x67, 0xe0, 0xd7, 0x58, 0x0c, 0xa3, 0x2f, 0xdd, 0x49, 0xd6, 0x86, 0xf3, 0x86, 0x59, 0xdc, + 0x75, 0xb6, 0x17, 0xae, 0xfa, 0xc8, 0xdf, 0x9c, 0xce, 0x7c, 0xf2, 0x6f, 0x4e, 0x67, 0xbe, 0xf8, + 0x37, 0xa7, 0x33, 0xbf, 0xf0, 0xe5, 0xd3, 0x47, 0x3e, 0xf9, 0xe5, 0xd3, 0x47, 0x3e, 0xff, 0xe5, + 0xd3, 0x47, 0x7e, 0x54, 0xea, 0x9e, 0x3f, 0x9f, 0x27, 0x54, 0x9e, 0xfa, 0xff, 0x06, 0x00, 0x00, + 0xff, 0xff, 0x19, 0xdf, 0x39, 0xcd, 0xf8, 0x0b, 0x02, 0x00, } func (m *Rpc) Marshal() (dAtA []byte, err error) { @@ -80580,6 +80588,18 @@ func (m *RpcPublishingPublishState) MarshalToSizedBuffer(dAtA []byte) (int, erro _ = i var l int _ = l + if m.Details != nil { + { + size, err := m.Details.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCommands(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x4a + } if m.JoinSpace { i-- if m.JoinSpace { @@ -122050,6 +122070,10 @@ func (m *RpcPublishingPublishState) Size() (n int) { if m.JoinSpace { n += 2 } + if m.Details != nil { + l = m.Details.Size() + n += 1 + l + sovCommands(uint64(l)) + } return n } @@ -156792,6 +156816,42 @@ func (m *RpcPublishingPublishState) Unmarshal(dAtA []byte) error { } } m.JoinSpace = bool(v != 0) + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Details", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Details == nil { + m.Details = &types.Struct{} + } + if err := m.Details.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipCommands(dAtA[iNdEx:]) diff --git a/pb/protos/commands.proto b/pb/protos/commands.proto index fc639f56e..c2dc2578f 100644 --- a/pb/protos/commands.proto +++ b/pb/protos/commands.proto @@ -1400,6 +1400,7 @@ message Rpc { int64 timestamp = 6; int64 size = 7; bool joinSpace = 8; + google.protobuf.Struct details = 9; } message Create { From f845c64fb308ea5522a8e3c9b48425e8fa7d6445 Mon Sep 17 00:00:00 2001 From: AnastasiaShemyakinskaya Date: Thu, 30 Jan 2025 17:22:51 +0100 Subject: [PATCH 273/279] GO-4975: fix source in snapshots Signed-off-by: AnastasiaShemyakinskaya --- core/publish/relationswhitelist.go | 9 ++++++++- core/publish/service.go | 7 ++++++- go.mod | 2 +- go.sum | 4 ++-- 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/core/publish/relationswhitelist.go b/core/publish/relationswhitelist.go index f6cd84640..713a8aabc 100644 --- a/core/publish/relationswhitelist.go +++ b/core/publish/relationswhitelist.go @@ -37,7 +37,14 @@ var relationsWhiteList = append(slices.Clone(derivedObjectsWhiteList), bundle.Re var relationOptionWhiteList = append(slices.Clone(derivedObjectsWhiteList), bundle.RelationKeyRelationOptionColor.String()) -var fileRelationsWhiteList = append(slices.Clone(documentRelationsWhiteList), bundle.RelationKeyFileId.String(), bundle.RelationKeyFileExt.String()) +var fileRelationsWhiteList = append( + slices.Clone(documentRelationsWhiteList), + bundle.RelationKeyFileId.String(), + bundle.RelationKeyFileExt.String(), + bundle.RelationKeyFileMimeType.String(), + bundle.RelationKeySizeInBytes.String(), + bundle.RelationKeySource.String(), +) var publishingRelationsWhiteList = map[model.ObjectTypeLayout][]string{ model.ObjectType_basic: documentRelationsWhiteList, diff --git a/core/publish/service.go b/core/publish/service.go index 12936eae3..2b22a283a 100644 --- a/core/publish/service.go +++ b/core/publish/service.go @@ -28,6 +28,7 @@ import ( "github.com/anyproto/anytype-heart/pkg/lib/pb/model" "github.com/anyproto/anytype-heart/space" "github.com/anyproto/anytype-heart/space/clientspace" + "github.com/anyproto/anytype-heart/util/pbtypes" ) var ( @@ -284,11 +285,15 @@ func (s *service) processSnapshotFile(exportPath, dirName string, file fs.DirEnt return err } + details := snapshot.GetSnapshot().GetData().GetDetails() + if source := pbtypes.GetString(details, bundle.RelationKeySource.String()); source != "" { + source = filepath.ToSlash(source) + details.Fields[bundle.RelationKeySource.String()] = pbtypes.String(source) + } jsonData, err := jsonM.MarshalToString(&snapshot) if err != nil { return err } - fileNameKey := fmt.Sprintf("%s/%s", dirName, file.Name()) uberSnapshot.PbFiles[fileNameKey] = jsonData return nil diff --git a/go.mod b/go.mod index c031bfa6f..fd7a16e59 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/adrium/goheif v0.0.0-20230113233934-ca402e77a786 github.com/anyproto/any-store v0.1.6 github.com/anyproto/any-sync v0.5.26 - github.com/anyproto/anytype-publish-server/publishclient v0.0.0-20241223184559-a5cacfe0950a + github.com/anyproto/anytype-publish-server/publishclient v0.0.0-20250130161338-dc4e19e8dca3 github.com/anyproto/go-chash v0.1.0 github.com/anyproto/go-naturaldate/v2 v2.0.2-0.20230524105841-9829cfd13438 github.com/anyproto/go-slip10 v1.0.0 diff --git a/go.sum b/go.sum index 432e76faa..b2a44c1fd 100644 --- a/go.sum +++ b/go.sum @@ -86,8 +86,8 @@ github.com/anyproto/any-store v0.1.6 h1:CmxIH2JhgHH2s7dnv1SNKAQ3spvX2amG/5RbrTZk github.com/anyproto/any-store v0.1.6/go.mod h1:nbyRoJYOlvSWU1xDOrmgPP96UeoTf4eYZ9k+qqLK9k8= github.com/anyproto/any-sync v0.5.26 h1:JWcR/RFGQ22CYWrdh2Ain6uEWNePtYHCLs+LXsm8hhU= github.com/anyproto/any-sync v0.5.26/go.mod h1:Ljftoz6/mCM/2wP2tK9H1/jtVAxfgqzYplBA4MbiUs0= -github.com/anyproto/anytype-publish-server/publishclient v0.0.0-20241223184559-a5cacfe0950a h1:kSNyLHsZ40JxlRAglr85YXH2ik2LH3AH5Hd3JL42KGo= -github.com/anyproto/anytype-publish-server/publishclient v0.0.0-20241223184559-a5cacfe0950a/go.mod h1:4fkueCZcGniSMXkrwESO8zzERrh/L7WHimRNWecfGM0= +github.com/anyproto/anytype-publish-server/publishclient v0.0.0-20250130161338-dc4e19e8dca3 h1:VkSSB8vIkiTxdBzp3175//LK+ysGau1UoZDd7BIxoOA= +github.com/anyproto/anytype-publish-server/publishclient v0.0.0-20250130161338-dc4e19e8dca3/go.mod h1:4fkueCZcGniSMXkrwESO8zzERrh/L7WHimRNWecfGM0= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580 h1:Ba80IlCCxkZ9H1GF+7vFu/TSpPvbpDCxXJ5ogc4euYc= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580/go.mod h1:T/uWAYxrXdaXw64ihI++9RMbKTCpKd/yE9+saARew7k= github.com/anyproto/go-chash v0.1.0 h1:I9meTPjXFRfXZHRJzjOHC/XF7Q5vzysKkiT/grsogXY= From 5a647fc674a8310c1a4fd15a8f6a1a4b5186c677 Mon Sep 17 00:00:00 2001 From: Sergey Date: Fri, 31 Jan 2025 10:26:45 +0100 Subject: [PATCH 274/279] GO-4814: Fix detail validator for string list wrapper --- core/domain/value.go | 6 +++++- core/domain/value_test.go | 40 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) diff --git a/core/domain/value.go b/core/domain/value.go index 7c6bdc293..c560d71ea 100644 --- a/core/domain/value.go +++ b/core/domain/value.go @@ -290,7 +290,11 @@ func (v Value) TryWrapToStringList() ([]string, bool) { } s, ok := v.TryString() if ok { - return []string{s}, true + if s == "" { + return []string{}, true + } else { + return []string{s}, true + } } return nil, false } diff --git a/core/domain/value_test.go b/core/domain/value_test.go index 5b4b98e89..173a349e5 100644 --- a/core/domain/value_test.go +++ b/core/domain/value_test.go @@ -244,3 +244,43 @@ func TestValue_Empty(t *testing.T) { assert.Equal(t, tc.want, tc.value.IsEmpty()) } } + +func TestTryWrapToStringList(t *testing.T) { + for i, tc := range []struct { + in Value + want []string + wantOk bool + }{ + { + in: String(""), + want: []string{}, + wantOk: true, + }, + { + in: String("foo"), + want: []string{"foo"}, + wantOk: true, + }, + { + in: StringList([]string{"foo", "bar"}), + want: []string{"foo", "bar"}, + wantOk: true, + }, + { + in: Float64(123.456), + want: nil, + wantOk: false, + }, + { + in: Invalid(), + want: nil, + wantOk: false, + }, + } { + t.Run(fmt.Sprintf("%d", i), func(t *testing.T) { + got, gotOk := tc.in.TryWrapToStringList() + assert.Equal(t, tc.want, got) + assert.Equal(t, tc.wantOk, gotOk) + }) + } +} From 1613fa7580373468ef7bf52b76e2e3d1cedab06f Mon Sep 17 00:00:00 2001 From: Sergey Date: Fri, 31 Jan 2025 10:55:33 +0100 Subject: [PATCH 275/279] GO-4992: Relax type checking for tag/status relations --- core/block/editor/basic/details.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/block/editor/basic/details.go b/core/block/editor/basic/details.go index 4916df928..7e5e78364 100644 --- a/core/block/editor/basic/details.go +++ b/core/block/editor/basic/details.go @@ -180,7 +180,7 @@ func (bs *basic) validateDetailFormat(spaceID string, key domain.RelationKey, v } return nil case model.RelationFormat_status: - vals, ok := v.TryStringList() + vals, ok := v.TryWrapToStringList() if !ok { return fmt.Errorf("incorrect type: %v instead of string list", v) } @@ -190,7 +190,7 @@ func (bs *basic) validateDetailFormat(spaceID string, key domain.RelationKey, v return bs.validateOptions(r, vals) case model.RelationFormat_tag: - vals, ok := v.TryStringList() + vals, ok := v.TryWrapToStringList() if !ok { return fmt.Errorf("incorrect type: %v instead of string list", v) } From 1146b53c6e755d4fd0d59a4743dc2ad8b52624eb Mon Sep 17 00:00:00 2001 From: Mikhail Date: Fri, 31 Jan 2025 14:59:50 +0100 Subject: [PATCH 276/279] GO-3305 Fix mb3 (#2058) --- core/anytype/bootstrap.go | 2 - core/block/backlinks/watcher.go | 29 +++++++------ core/block/backlinks/watcher_test.go | 4 +- core/block/process/queue.go | 23 +++++----- core/recordsbatcher/recordsbatcher.go | 60 --------------------------- core/subscription/collection.go | 7 ++-- core/subscription/collection_test.go | 17 ++++---- core/subscription/internalsub_test.go | 6 +-- core/subscription/service.go | 48 +++++++++++++-------- go.mod | 1 - go.sum | 2 - pkg/lib/logging/gelf.go | 18 ++++---- 12 files changed, 87 insertions(+), 130 deletions(-) delete mode 100644 core/recordsbatcher/recordsbatcher.go diff --git a/core/anytype/bootstrap.go b/core/anytype/bootstrap.go index 5335899d3..df261dfb7 100644 --- a/core/anytype/bootstrap.go +++ b/core/anytype/bootstrap.go @@ -83,7 +83,6 @@ import ( paymentscache "github.com/anyproto/anytype-heart/core/payments/cache" "github.com/anyproto/anytype-heart/core/peerstatus" "github.com/anyproto/anytype-heart/core/publish" - "github.com/anyproto/anytype-heart/core/recordsbatcher" "github.com/anyproto/anytype-heart/core/session" "github.com/anyproto/anytype-heart/core/spaceview" "github.com/anyproto/anytype-heart/core/subscription" @@ -276,7 +275,6 @@ func Bootstrap(a *app.App, components ...app.Component) { Register(acl.New()). Register(builtintemplate.New()). Register(converter.NewLayoutConverter()). - Register(recordsbatcher.New()). Register(configfetcher.New()). Register(process.New()). Register(core.NewTempDirService()). diff --git a/core/block/backlinks/watcher.go b/core/block/backlinks/watcher.go index 9d3083e11..07c0bd743 100644 --- a/core/block/backlinks/watcher.go +++ b/core/block/backlinks/watcher.go @@ -8,7 +8,7 @@ import ( "github.com/anyproto/any-sync/app" "github.com/anyproto/any-sync/app/ocache" - "github.com/cheggaaa/mb" + "github.com/cheggaaa/mb/v3" "github.com/samber/lo" "github.com/anyproto/anytype-heart/core/block/editor/smartblock" @@ -56,10 +56,12 @@ type watcher struct { resolver idresolver.Resolver spaceService space.Service - infoBatch *mb.MB + infoBatch *mb.MB[spaceindex.LinksUpdateInfo] lock sync.Mutex accumulatedBacklinks map[string]*backLinksUpdate aggregationInterval time.Duration + cancelCtx context.CancelFunc + ctx context.Context } func New() UpdateWatcher { @@ -75,22 +77,26 @@ func (w *watcher) Init(a *app.App) error { w.store = app.MustComponent[objectstore.ObjectStore](a) w.resolver = app.MustComponent[idresolver.Resolver](a) w.spaceService = app.MustComponent[space.Service](a) - w.infoBatch = mb.New(0) + w.infoBatch = mb.New[spaceindex.LinksUpdateInfo](0) w.accumulatedBacklinks = make(map[string]*backLinksUpdate) w.aggregationInterval = defaultAggregationInterval return nil } func (w *watcher) Close(context.Context) error { + if w.cancelCtx != nil { + w.cancelCtx() + } if err := w.infoBatch.Close(); err != nil { log.Errorf("failed to close message batch: %v", err) } return nil } -func (w *watcher) Run(context.Context) error { +func (w *watcher) Run(ctx context.Context) error { + w.ctx, w.cancelCtx = context.WithCancel(context.Background()) w.updater.SubscribeLinksUpdate(func(info spaceindex.LinksUpdateInfo) { - if err := w.infoBatch.Add(info); err != nil { + if err := w.infoBatch.Add(w.ctx, info); err != nil { log.With("objectId", info.LinksFromId).Errorf("failed to add backlinks update info to message batch: %v", err) } }) @@ -165,17 +171,16 @@ func (w *watcher) backlinksUpdateHandler() { }() for { - msgs := w.infoBatch.Wait() + msgs, err := w.infoBatch.Wait(w.ctx) + if err != nil { + return + } if len(msgs) == 0 { return } w.lock.Lock() - for _, msg := range msgs { - info, ok := msg.(spaceindex.LinksUpdateInfo) - if !ok { - continue - } + for _, info := range msgs { info = cleanSelfLinks(info) applyUpdates(w.accumulatedBacklinks, info) } @@ -210,7 +215,7 @@ func (w *watcher) updateBackLinksInObject(id string, backlinksUpdate *backLinksU log.With("objectId", id).Errorf("failed to resolve space id for object: %v", err) return } - spc, err := w.spaceService.Get(context.Background(), spaceId) + spc, err := w.spaceService.Get(w.ctx, spaceId) if err != nil { log.With("objectId", id, "spaceId", spaceId).Errorf("failed to get space: %v", err) return diff --git a/core/block/backlinks/watcher_test.go b/core/block/backlinks/watcher_test.go index 291087884..6bdd8fab4 100644 --- a/core/block/backlinks/watcher_test.go +++ b/core/block/backlinks/watcher_test.go @@ -5,7 +5,7 @@ import ( "time" "github.com/anyproto/any-sync/app/ocache" - "github.com/cheggaaa/mb" + "github.com/cheggaaa/mb/v3" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" "github.com/stretchr/testify/require" @@ -56,7 +56,7 @@ func newFixture(t *testing.T, aggregationInterval time.Duration) *fixture { spaceService: spaceSvc, aggregationInterval: aggregationInterval, - infoBatch: mb.New(0), + infoBatch: mb.New[spaceindex.LinksUpdateInfo](0), accumulatedBacklinks: make(map[string]*backLinksUpdate), } diff --git a/core/block/process/queue.go b/core/block/process/queue.go index c1aa08569..6a6988c7c 100644 --- a/core/block/process/queue.go +++ b/core/block/process/queue.go @@ -1,11 +1,12 @@ package process import ( + "context" "errors" "sync" "sync/atomic" - "github.com/cheggaaa/mb" + "github.com/cheggaaa/mb/v3" "github.com/globalsign/mgo/bson" "github.com/anyproto/anytype-heart/pb" @@ -49,7 +50,7 @@ func (s *service) NewQueue(info pb.ModelProcess, workers int, noProgress bool, n id: info.Id, info: info, state: pb.ModelProcess_None, - msgs: mb.New(0), + msgs: mb.New[Task](0), done: make(chan struct{}), cancel: make(chan struct{}), s: s, @@ -66,7 +67,7 @@ type queue struct { id string info pb.ModelProcess state pb.ModelProcessState - msgs *mb.MB + msgs *mb.MB[Task] wg *sync.WaitGroup done, cancel chan struct{} pTotal, pDone int64 @@ -106,7 +107,7 @@ func (p *queue) Add(ts ...Task) (err error) { return } for _, t := range ts { - if err = p.msgs.Add(t); err != nil { + if err = p.msgs.Add(context.Background(), t); err != nil { return ErrQueueDone } atomic.AddInt64(&p.pTotal, 1) @@ -123,7 +124,7 @@ func (p *queue) Wait(ts ...Task) (err error) { p.m.Unlock() var done = make(chan struct{}, len(ts)) for _, t := range ts { - if err = p.msgs.Add(taskFunction(t, done)); err != nil { + if err = p.msgs.Add(context.Background(), taskFunction(t, done)); err != nil { return ErrQueueDone } atomic.AddInt64(&p.pTotal, 1) @@ -267,15 +268,15 @@ func (p *queue) checkRunning(checkStarted bool) (err error) { func (p *queue) worker() { defer p.wg.Done() for { - msgs := p.msgs.WaitMax(1) + msgs, err := p.msgs.NewCond().WithMax(1).Wait(context.Background()) + if err != nil { + log.Errorf("failed wait: %v", err) + return + } if len(msgs) == 0 { return } - if f, ok := msgs[0].(func()); ok { - f() - } else if t, ok := msgs[0].(Task); ok { - t() - } + msgs[0]() atomic.AddInt64(&p.pDone, 1) } } diff --git a/core/recordsbatcher/recordsbatcher.go b/core/recordsbatcher/recordsbatcher.go deleted file mode 100644 index 3b90d207f..000000000 --- a/core/recordsbatcher/recordsbatcher.go +++ /dev/null @@ -1,60 +0,0 @@ -package recordsbatcher - -import ( - "time" - - "github.com/anyproto/any-sync/app" - "github.com/cheggaaa/mb" -) - -const CName = "recordsbatcher" - -type recordsBatcher struct { - batcher *mb.MB - packDelay time.Duration // delay for better packing of msgs -} - -func (r *recordsBatcher) Init(a *app.App) (err error) { - r.batcher = mb.New(0) - r.packDelay = time.Millisecond * 100 - return nil -} - -func (r *recordsBatcher) Name() (name string) { - return CName -} - -func (r *recordsBatcher) Add(msgs ...interface{}) error { - return r.batcher.Add(msgs...) -} - -func (r *recordsBatcher) Read(buffer []interface{}) int { - defer func() { - time.Sleep(r.packDelay) - }() - - msgs := r.batcher.WaitMax(len(buffer)) - if len(msgs) == 0 { - return 0 - } - for i, msg := range msgs { - buffer[i] = msg - } - - return len(msgs) -} - -func (r *recordsBatcher) Close() (err error) { - return r.batcher.Close() -} - -func New() RecordsBatcher { - return &recordsBatcher{batcher: mb.New(0)} -} - -type RecordsBatcher interface { - // Read reads a batch into the buffer, returns number of records that were read. 0 means no more data will be available - Read(buffer []interface{}) int - Add(msgs ...interface{}) error - app.Component -} diff --git a/core/subscription/collection.go b/core/subscription/collection.go index b4939d04d..2e390e588 100644 --- a/core/subscription/collection.go +++ b/core/subscription/collection.go @@ -1,11 +1,12 @@ package subscription import ( + "context" "fmt" "sync" "github.com/anyproto/any-store/query" - "github.com/cheggaaa/mb" + "github.com/cheggaaa/mb/v3" "github.com/anyproto/anytype-heart/core/domain" "github.com/anyproto/anytype-heart/pkg/lib/bundle" @@ -29,7 +30,7 @@ type collectionObserver struct { cache *cache objectStore spaceindex.Store collectionService CollectionService - recBatch *mb.MB + recBatch *mb.MB[database.Record] recBatchMutex sync.Mutex spaceSubscription *spaceSubscriptions @@ -114,7 +115,7 @@ func (c *collectionObserver) updateIds(ids []string) { c.lock.Unlock() entries := c.spaceSubscription.fetchEntriesLocked(append(removed, added...)) for _, e := range entries { - err := c.recBatch.Add(database.Record{ + err := c.recBatch.Add(context.Background(), database.Record{ Details: e.data, }) if err != nil { diff --git a/core/subscription/collection_test.go b/core/subscription/collection_test.go index 7488b93f2..459ce3125 100644 --- a/core/subscription/collection_test.go +++ b/core/subscription/collection_test.go @@ -1,9 +1,10 @@ package subscription import ( + "context" "testing" - "github.com/cheggaaa/mb" + "github.com/cheggaaa/mb/v3" "github.com/stretchr/testify/assert" "github.com/anyproto/anytype-heart/core/domain" @@ -30,7 +31,7 @@ func Test_newCollectionObserver(t *testing.T) { cache.Set(&entry{id: "id2", data: domain.NewDetailsFromMap(map[domain.RelationKey]domain.Value{ bundle.RelationKeyId: domain.String("id2"), })}) - batcher := mb.New(0) + batcher := mb.New[database.Record](0) c := &spaceSubscriptions{ collectionService: collectionService, objectStore: store, @@ -46,11 +47,12 @@ func Test_newCollectionObserver(t *testing.T) { expectedIds := []string{"id1", "id2"} ch <- expectedIds close(observer.closeCh) - msgs := batcher.Wait() + msgs, err := batcher.NewCond().WithMin(2).Wait(context.Background()) + assert.NoError(t, err) var receivedIds []string for _, msg := range msgs { - id := msg.(database.Record).Details.GetString(bundle.RelationKeyId) + id := msg.Details.GetString(bundle.RelationKeyId) receivedIds = append(receivedIds, id) } assert.Equal(t, expectedIds, receivedIds) @@ -76,7 +78,7 @@ func Test_newCollectionObserver(t *testing.T) { bundle.RelationKeySpaceId: domain.String(spaceId), }, }) - batcher := mb.New(0) + batcher := mb.New[database.Record](0) c := &spaceSubscriptions{ collectionService: collectionService, objectStore: store, @@ -92,11 +94,12 @@ func Test_newCollectionObserver(t *testing.T) { expectedIds := []string{"id1", "id2"} ch <- expectedIds close(observer.closeCh) - msgs := batcher.Wait() + msgs, err := batcher.NewCond().WithMin(2).Wait(context.Background()) + assert.NoError(t, err) var receivedIds []string for _, msg := range msgs { - id := msg.(database.Record).Details.GetString(bundle.RelationKeyId) + id := msg.Details.GetString(bundle.RelationKeyId) receivedIds = append(receivedIds, id) } assert.Equal(t, expectedIds, receivedIds) diff --git a/core/subscription/internalsub_test.go b/core/subscription/internalsub_test.go index ee42edc8e..4a55d4599 100644 --- a/core/subscription/internalsub_test.go +++ b/core/subscription/internalsub_test.go @@ -6,7 +6,7 @@ import ( "testing" "time" - mb2 "github.com/cheggaaa/mb/v3" + "github.com/cheggaaa/mb/v3" "github.com/stretchr/testify/require" "github.com/anyproto/anytype-heart/core/domain" @@ -109,7 +109,7 @@ func TestInternalSubscriptionSingle(t *testing.T) { require.NoError(t, err) err = resp.Output.Add(context.Background(), event.NewMessage("", nil)) - require.True(t, errors.Is(err, mb2.ErrClosed)) + require.True(t, errors.Is(err, mb.ErrClosed)) }) t.Run("try to add after close", func(t *testing.T) { @@ -280,7 +280,7 @@ func TestInternalSubCustomQueue(t *testing.T) { subId := "test" fx := newFixtureWithRealObjectStore(t) - queue := mb2.New[*pb.EventMessage](0) + queue := mb.New[*pb.EventMessage](0) resp, err := fx.Search(SubscribeRequest{ SpaceId: testSpaceId, diff --git a/core/subscription/service.go b/core/subscription/service.go index f76fcb39b..ae7b8ea85 100644 --- a/core/subscription/service.go +++ b/core/subscription/service.go @@ -9,8 +9,7 @@ import ( "github.com/anyproto/any-store/anyenc" "github.com/anyproto/any-sync/app" - "github.com/cheggaaa/mb" - mb2 "github.com/cheggaaa/mb/v3" + "github.com/cheggaaa/mb/v3" "github.com/globalsign/mgo/bson" "github.com/gogo/protobuf/types" "golang.org/x/exp/slices" @@ -61,7 +60,7 @@ type SubscribeRequest struct { // Internal indicates that subscription will send events into message queue instead of global client's event system Internal bool // InternalQueue is used when Internal flag is set to true. If it's nil, new queue will be created - InternalQueue *mb2.MB[*pb.EventMessage] + InternalQueue *mb.MB[*pb.EventMessage] AsyncInit bool } @@ -72,7 +71,7 @@ type SubscribeResponse struct { Counters *pb.EventObjectSubscriptionCounters // Used when Internal flag is set to true - Output *mb2.MB[*pb.EventMessage] + Output *mb.MB[*pb.EventMessage] } type Service interface { @@ -117,13 +116,13 @@ type service struct { type internalSubOutput struct { externallyManaged bool - queue *mb2.MB[*pb.EventMessage] + queue *mb.MB[*pb.EventMessage] } -func newInternalSubOutput(queue *mb2.MB[*pb.EventMessage]) *internalSubOutput { +func newInternalSubOutput(queue *mb.MB[*pb.EventMessage]) *internalSubOutput { if queue == nil { return &internalSubOutput{ - queue: mb2.New[*pb.EventMessage](0), + queue: mb.New[*pb.EventMessage](0), } } return &internalSubOutput{ @@ -270,7 +269,7 @@ func (s *service) getSpaceSubscriptions(spaceId string) (*spaceSubscriptions, er subscriptionKeys: make([]string, 0, 20), subscriptions: make(map[string]subscription, 20), customOutput: map[string]*internalSubOutput{}, - recBatch: mb.New(0), + recBatch: mb.New[database.Record](0), objectStore: s.objectStore.SpaceIndex(spaceId), kanban: s.kanban, collectionService: s.collectionService, @@ -280,7 +279,7 @@ func (s *service) getSpaceSubscriptions(spaceId string) (*spaceSubscriptions, er } spaceSubs.ds = newDependencyService(spaceSubs) spaceSubs.initDebugger() - err := spaceSubs.Run(context.Background()) + err := spaceSubs.Run() if err != nil { return nil, fmt.Errorf("run space subscriptions: %w", err) } @@ -294,7 +293,7 @@ type spaceSubscriptions struct { subscriptions map[string]subscription customOutput map[string]*internalSubOutput - recBatch *mb.MB + recBatch *mb.MB[database.Record] // Deps objectStore spaceindex.Store @@ -309,12 +308,19 @@ type spaceSubscriptions struct { subDebugger *subDebugger arenaPool *anyenc.ArenaPool + ctx context.Context + cancelCtx context.CancelFunc } -func (s *spaceSubscriptions) Run(context.Context) (err error) { +func (s *spaceSubscriptions) Run() (err error) { + s.ctx, s.cancelCtx = context.WithCancel(context.Background()) + var batchErr error s.objectStore.SubscribeForAll(func(rec database.Record) { - s.recBatch.Add(rec) + batchErr = s.recBatch.Add(s.ctx, rec) }) + if batchErr != nil { + return batchErr + } go s.recordsHandler() return } @@ -431,7 +437,7 @@ func (s *spaceSubscriptions) subscribeForQuery(req SubscribeRequest, f *database } } - var outputQueue *mb2.MB[*pb.EventMessage] + var outputQueue *mb.MB[*pb.EventMessage] if req.Internal { output := newInternalSubOutput(req.InternalQueue) outputQueue = output.queue @@ -521,7 +527,7 @@ func (s *spaceSubscriptions) subscribeForCollection(req SubscribeRequest, f *dat depRecords = sub.sortedSub.depSub.getActiveRecords() } - var outputQueue *mb2.MB[*pb.EventMessage] + var outputQueue *mb.MB[*pb.EventMessage] if req.Internal { output := newInternalSubOutput(req.InternalQueue) outputQueue = output.queue @@ -772,15 +778,18 @@ func (s *spaceSubscriptions) recordsHandler() { } } for { - records := s.recBatch.Wait() + records, err := s.recBatch.Wait(s.ctx) + if err != nil { + return + } if len(records) == 0 { return } for _, rec := range records { - id := rec.(database.Record).Details.GetString(bundle.RelationKeyId) + id := rec.Details.GetString(bundle.RelationKeyId) // nil previous version nilIfExists(id) - entries = append(entries, newEntry(id, rec.(database.Record).Details)) + entries = append(entries, newEntry(id, rec.Details)) } // filter nil entries filtered := entries[:0] @@ -845,7 +854,7 @@ func (s *spaceSubscriptions) onChangeWithinContext(entries []*entry, proc func(c s.eventSender.Broadcast(&pb.Event{Messages: msgs}) } else { err := s.customOutput[id].add(msgs...) - if err != nil && !errors.Is(err, mb2.ErrClosed) { + if err != nil && !errors.Is(err, mb.ErrClosed) { log.With("subId", id, "error", err).Errorf("push to output") } } @@ -917,6 +926,9 @@ func (s *spaceSubscriptions) depIdsFromFilter(spaceId string, filters []database func (s *spaceSubscriptions) Close(ctx context.Context) (err error) { s.m.Lock() defer s.m.Unlock() + if s.cancelCtx != nil { + s.cancelCtx() + } s.recBatch.Close() for subId, sub := range s.subscriptions { sub.close() diff --git a/go.mod b/go.mod index c031bfa6f..2b5d12b7c 100644 --- a/go.mod +++ b/go.mod @@ -19,7 +19,6 @@ require ( github.com/araddon/dateparse v0.0.0-20210429162001-6b43995a97de github.com/avast/retry-go/v4 v4.6.0 github.com/chai2010/webp v1.1.2-0.20240612091223-aa1b379218b7 - github.com/cheggaaa/mb v1.0.3 github.com/cheggaaa/mb/v3 v3.0.2 github.com/dave/jennifer v1.7.1 github.com/davecgh/go-spew v1.1.1 diff --git a/go.sum b/go.sum index 432e76faa..41afa05c9 100644 --- a/go.sum +++ b/go.sum @@ -184,8 +184,6 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chai2010/webp v1.1.2-0.20240612091223-aa1b379218b7 h1:EcFyQu4Hz/YC2lc3xWqn678e2FNfG0cgTr/EOA4ByWs= github.com/chai2010/webp v1.1.2-0.20240612091223-aa1b379218b7/go.mod h1:0XVwvZWdjjdxpUEIf7b9g9VkHFnInUSYujwqTLEuldU= -github.com/cheggaaa/mb v1.0.3 h1:03ksWum+6kHclB+kjwKMaBtgl5gtNYUwNpxsHQciKe8= -github.com/cheggaaa/mb v1.0.3/go.mod h1:NUl0GBtFLlfg2o6iZwxzcG7Lslc2wV/ADTFbLXtVPE4= github.com/cheggaaa/mb/v3 v3.0.2 h1:jd1Xx0zzihZlXL6HmnRXVCI1BHuXz/kY+VzX9WbvNDU= github.com/cheggaaa/mb/v3 v3.0.2/go.mod h1:zCt2QeYukhd/g0bIdNqF+b/kKz1hnLFNDkP49qN5kqI= github.com/chigopher/pathlib v0.19.1 h1:RoLlUJc0CqBGwq239cilyhxPNLXTK+HXoASGyGznx5A= diff --git a/pkg/lib/logging/gelf.go b/pkg/lib/logging/gelf.go index 661441fe2..e699dbd06 100644 --- a/pkg/lib/logging/gelf.go +++ b/pkg/lib/logging/gelf.go @@ -1,6 +1,7 @@ package logging import ( + "context" "errors" "expvar" "fmt" @@ -10,7 +11,7 @@ import ( "time" "github.com/anyproto/any-sync/app/logger" - "github.com/cheggaaa/mb" + "github.com/cheggaaa/mb/v3" "go.uber.org/zap" "gopkg.in/Graylog2/go-gelf.v2/gelf" ) @@ -29,7 +30,7 @@ var ( ) func registerGelfSink(config *logger.Config) { - gelfSinkWrapper.batch = mb.New(1000) + gelfSinkWrapper.batch = mb.New[gelf.Message](1000) tlsWriter, err := gelf.NewTLSWriter(graylogHost, nil) if err != nil { fmt.Printf("failed to init gelf tls: %s", err) @@ -49,7 +50,7 @@ func registerGelfSink(config *logger.Config) { type gelfSink struct { sync.RWMutex - batch *mb.MB + batch *mb.MB[gelf.Message] gelfWriter gelf.Writer version string account string @@ -66,17 +67,16 @@ func (gs *gelfSink) Run() { continue } - msgs := gs.batch.WaitMax(1) + msgs, err := gs.batch.NewCond().WithMax(1).Wait(context.Background()) + if err != nil { + return + } if len(msgs) == 0 { return } for _, msg := range msgs { - msgCasted, ok := msg.(gelf.Message) - if !ok { - continue - } - err := gs.gelfWriter.WriteMessage(&msgCasted) + err := gs.gelfWriter.WriteMessage(&msg) if err != nil { if gs.lastErrorAt.IsZero() || gs.lastErrorAt.Add(printErrorThreshold).Before(time.Now()) { fmt.Fprintf(os.Stderr, "failed to write to gelf: %v\n", err) From a1ec76fe88ed5f5d6b3bce8a1f8544bc09a46850 Mon Sep 17 00:00:00 2001 From: AnastasiaShemyakinskaya Date: Fri, 31 Jan 2025 16:05:28 +0100 Subject: [PATCH 277/279] GO-4975: update publish client version Signed-off-by: AnastasiaShemyakinskaya --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index fd7a16e59..ba53a372d 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/adrium/goheif v0.0.0-20230113233934-ca402e77a786 github.com/anyproto/any-store v0.1.6 github.com/anyproto/any-sync v0.5.26 - github.com/anyproto/anytype-publish-server/publishclient v0.0.0-20250130161338-dc4e19e8dca3 + github.com/anyproto/anytype-publish-server/publishclient v0.0.0-20250131145601-de288583ff2a github.com/anyproto/go-chash v0.1.0 github.com/anyproto/go-naturaldate/v2 v2.0.2-0.20230524105841-9829cfd13438 github.com/anyproto/go-slip10 v1.0.0 diff --git a/go.sum b/go.sum index b2a44c1fd..a812832de 100644 --- a/go.sum +++ b/go.sum @@ -86,8 +86,8 @@ github.com/anyproto/any-store v0.1.6 h1:CmxIH2JhgHH2s7dnv1SNKAQ3spvX2amG/5RbrTZk github.com/anyproto/any-store v0.1.6/go.mod h1:nbyRoJYOlvSWU1xDOrmgPP96UeoTf4eYZ9k+qqLK9k8= github.com/anyproto/any-sync v0.5.26 h1:JWcR/RFGQ22CYWrdh2Ain6uEWNePtYHCLs+LXsm8hhU= github.com/anyproto/any-sync v0.5.26/go.mod h1:Ljftoz6/mCM/2wP2tK9H1/jtVAxfgqzYplBA4MbiUs0= -github.com/anyproto/anytype-publish-server/publishclient v0.0.0-20250130161338-dc4e19e8dca3 h1:VkSSB8vIkiTxdBzp3175//LK+ysGau1UoZDd7BIxoOA= -github.com/anyproto/anytype-publish-server/publishclient v0.0.0-20250130161338-dc4e19e8dca3/go.mod h1:4fkueCZcGniSMXkrwESO8zzERrh/L7WHimRNWecfGM0= +github.com/anyproto/anytype-publish-server/publishclient v0.0.0-20250131145601-de288583ff2a h1:ZZM+0OUCQMWSLSflpkf0ZMVo3V76qEDDIXPpQOClNs0= +github.com/anyproto/anytype-publish-server/publishclient v0.0.0-20250131145601-de288583ff2a/go.mod h1:4fkueCZcGniSMXkrwESO8zzERrh/L7WHimRNWecfGM0= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580 h1:Ba80IlCCxkZ9H1GF+7vFu/TSpPvbpDCxXJ5ogc4euYc= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580/go.mod h1:T/uWAYxrXdaXw64ihI++9RMbKTCpKd/yE9+saARew7k= github.com/anyproto/go-chash v0.1.0 h1:I9meTPjXFRfXZHRJzjOHC/XF7Q5vzysKkiT/grsogXY= From 1a7f8ce58f7f1ea625c6c3781e3872b874938767 Mon Sep 17 00:00:00 2001 From: Anatolii Smolianinov Date: Mon, 3 Feb 2025 15:35:58 +0100 Subject: [PATCH 278/279] GO-5000 add `ANYTYPE_LOCAL_PUBLISH_DIR` to override publish to server Enables local dev publishing flow without publish sever via standalone cli renderer. usage: 1. set the env var to e.g. renderer/test_snapshots/test-me `/home/zarkone/anytype/anytype-publish-renderer/test_snapshots/test-me` 2. in renderer, adjust Makefile SNAPSHOT_PATH accordingly: `SNAPSHOT_PATH:=./test_snapshots/test-me` 3. `make render` it will create `index.html` in renderer root 4. launch a static web server in renderer root: ``` cd /home/zarkone/anytype/anytype-publish-renderer/ python -m http.server 8011 ``` 5. Open localhost:8011 in browser --- core/publish/service.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/core/publish/service.go b/core/publish/service.go index ed18985dd..21dc2f50b 100644 --- a/core/publish/service.go +++ b/core/publish/service.go @@ -194,8 +194,16 @@ func (s *service) publishToPublishServer(ctx context.Context, spaceId, pageId, u return err } - if err := s.publishToServer(ctx, spaceId, pageId, uri, version, tempPublishDir); err != nil { - return err + if localPublishDir := os.Getenv("ANYTYPE_LOCAL_PUBLISH_DIR"); localPublishDir != "" { + err := os.CopyFS(localPublishDir, os.DirFS(tempPublishDir)) + if err != nil { + log.Error("publishing to local dir error", zap.Error(err)) + return err + } + } else { + if err := s.publishToServer(ctx, spaceId, pageId, uri, version, tempPublishDir); err != nil { + return err + } } return nil From f3c5d543481dc7918361acdd8c6f892c72d5481e Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Tue, 4 Feb 2025 12:02:35 +0100 Subject: [PATCH 279/279] GO-4146 Update any-sync --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 974493e93..46d016d86 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( github.com/VividCortex/ewma v1.2.0 github.com/adrium/goheif v0.0.0-20230113233934-ca402e77a786 github.com/anyproto/any-store v0.1.6 - github.com/anyproto/any-sync v0.6.0-alpha.11 + github.com/anyproto/any-sync v0.6.0-alpha.11.0.20250131145459-0bf102738a87 github.com/anyproto/anytype-publish-server/publishclient v0.0.0-20241223184559-a5cacfe0950a github.com/anyproto/go-chash v0.1.0 github.com/anyproto/go-naturaldate/v2 v2.0.2-0.20230524105841-9829cfd13438 diff --git a/go.sum b/go.sum index 3cf41d056..39f2f0feb 100644 --- a/go.sum +++ b/go.sum @@ -84,8 +84,8 @@ github.com/andybalholm/cascadia v1.3.3 h1:AG2YHrzJIm4BZ19iwJ/DAua6Btl3IwJX+VI4kk github.com/andybalholm/cascadia v1.3.3/go.mod h1:xNd9bqTn98Ln4DwST8/nG+H0yuB8Hmgu1YHNnWw0GeA= github.com/anyproto/any-store v0.1.6 h1:CmxIH2JhgHH2s7dnv1SNKAQ3spvX2amG/5RbrTZkLaQ= github.com/anyproto/any-store v0.1.6/go.mod h1:nbyRoJYOlvSWU1xDOrmgPP96UeoTf4eYZ9k+qqLK9k8= -github.com/anyproto/any-sync v0.6.0-alpha.11 h1:TwLkPTPaNmp78K7pmsb1X9CPR8oD5dWahjOGOxV50kY= -github.com/anyproto/any-sync v0.6.0-alpha.11/go.mod h1:JmjcChDSqgt6+G697YI3Yr57SZswxPJNX1arN//UYig= +github.com/anyproto/any-sync v0.6.0-alpha.11.0.20250131145459-0bf102738a87 h1:Vkkz4b2e/ARu2NO2UhP6OxBUtrfBslVvtF9uCcYraRg= +github.com/anyproto/any-sync v0.6.0-alpha.11.0.20250131145459-0bf102738a87/go.mod h1:JmjcChDSqgt6+G697YI3Yr57SZswxPJNX1arN//UYig= github.com/anyproto/anytype-publish-server/publishclient v0.0.0-20241223184559-a5cacfe0950a h1:kSNyLHsZ40JxlRAglr85YXH2ik2LH3AH5Hd3JL42KGo= github.com/anyproto/anytype-publish-server/publishclient v0.0.0-20241223184559-a5cacfe0950a/go.mod h1:4fkueCZcGniSMXkrwESO8zzERrh/L7WHimRNWecfGM0= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580 h1:Ba80IlCCxkZ9H1GF+7vFu/TSpPvbpDCxXJ5ogc4euYc=